<?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>Lytebox</name>
	<version>0.3.1beta1</version>
  <mincmsversion>1.8.1</mincmsversion>
	<help><![CDATA[ICAgIDxoMz5XaGF0IGRvZXMgdGhpcyBkbz88L2gzPgogICAgPHA+QSBzaW1wbGUgd3JhcHBlciB0byB0aGUgTHl0ZWJveCBKYXZhU2NyaXB0IGNsYXNzLjwvcD4KICAgIDxoMz5Ib3cgRG8gSSBVc2UgSXQ8L2gzPgogICAgPG9sPgogICAgICAgIDxsaT48c3Ryb25nPkluY2x1ZGUgc3R5bGVzaGVldCAoYW5kIGphdmFzY3JpcHQpPC9zdHJvbmc+CiAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgIDxsaT5UaGUgbW9kdWxlIGlzIGFkZGluZyB0aGUgc3R5bGVzaGVldCAmcXVvdDtNb2R1bGU6IEx5dGVib3gmcXVvdDsgYW5kIHRoZSBKYXZhU2NyaXB0IGNhbGwgaXRzZWxmIHRvIHRoZSBwYWdlIG1ldGFkYXRhLjwvbGk+CiAgICAgICAgICAgICAgICA8bGk+SWYgeW91ciBDTVNNUyB2ZXJzaW9ucyBpcyA8MS45IG9yICZxdW90O3Byb2Nlc3Nfd2hvbGVfdGVtcGxhdGUmcXVvdDsgaXMgc2V0IHRvICZxdW90O3RydWUmcXVvdDsgaW4geW91ciAmcXVvdDtjb25maWcucGhwJnF1b3Q7LCB5b3UgaGF2ZSB0bzoKICAgICAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluIHRoZSBwYWdlIHdoZXJlIHlvdSB3YW50IHVzZSB0aGlzIG1vZHVsZSwgYWRkIHRoaXMgdG8gdGhlIHBhZ2UgbWV0YWRhdGE6PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y29kZT57c3R5bGVzaGVldCBuYW1lPSdNb2R1bGU6IEx5dGVib3gnIG1lZGlhPSdwcm9qZWN0aW9uLHNjcmVlbid9PC9jb2RlPgogICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICA8bGk+T3IgeW91IGNhbiBhdHRhY2ggdGhlIHN0eWxlc2hlZXQgJnF1b3Q7TW9kdWxlOiBMeXRlYm94JnF1b3Q7IHRvIHlvdXIgdGVtcGxhdGUuPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBwdXQgdGhlIEphdmFTY3JpcHQgY2FsbCBhbHNvIG1hbnVhbGx5IGludG8gdGhlIHBhZ2Ugd2l0aDo8YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjb2RlPntMeXRlYm94IGFjdGlvbj0nZ2V0c2NyaXB0bGluayd9PC9jb2RlPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFsbCBwYXJhbXMgZm9yIHRoZSBMeXRlYm94IEpTIHlvdSBtdXN0IHNldCBpbiB0aGlzIHRhZywgb3RoZXJ3aXNlIGluIHRoZSB0YWcgZm9yIHRoZSBmaXJzdCBpbWFnZSk8YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIE90aGVyd2lzZSBhIHNjcmlwdCB0YWcgaXMgaW5jbHVkZWQgYWJvdmUgdGhlIGZpcnN0IGltYWdlIHRvIGxvYWQgdGhlIEphdmFTY3JpcHQuCiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgPC91bD4KICAgICAgICA8L2xpPgogICAgICAgIDxsaT48c3Ryb25nPkltYWdlIENvbnRlbnQgRXhhbXBsZXM8L3N0cm9uZz4KICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgPGxpPjxlbT5TaW5nbGUgSW1hZ2UgRXhhbXBsZSAocHV0IHRoaXMgaW4geW91ciBwYWdlIGNvbnRlbnQpOjwvZW0+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPGNvZGU+e0x5dGVib3ggaHJlZj0ndXBsb2Fkcy9pbWFnZXMvaW1hZ2UtMS5qcGcnIHRpdGxlPSdJbWFnZSBEZXNjcmlwdGlvbicgdGV4dD0nSW1hZ2UgIzEnfTwvY29kZT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8bGk+PGVtPkdyb3VwZWQgSW1hZ2VzIEV4YW1wbGUgKHB1dCB0aGlzIGluIHlvdXIgcGFnZSBjb250ZW50KTo8L2VtPjxiciAvPgogICAgICAgICAgICAgICAgICAgIDxjb2RlPntMeXRlYm94IGhyZWY9J3VwbG9hZHMvaW1hZ2VzL2ltYWdlLTEuanBnJyBncm91cD0ndmFjYXRpb24nIHRpdGxlPSdNb20gYW5kIERhZCcgdGV4dD0nTW9tIGFuZCBEYWQnfTwvY29kZT48YnIgLz4KICAgICAgICAgICAgICAgICAgICA8Y29kZT57THl0ZWJveCBocmVmPSd1cGxvYWRzL2ltYWdlcy9pbWFnZS0yLmpwZycgZ3JvdXA9J3ZhY2F0aW9uJyB0aXRsZT0nTXkgU2lzdGVyJyB0ZXh0PSdNeSBTaXN0ZXInfTwvY29kZT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8bGk+PGVtPlNsaWRlc2hvdyBFeGFtcGxlIChwdXQgdGhpcyBpbiB5b3VyIHBhZ2UgY29udGVudCk6PC9lbT48YnIgLz4KICAgICAgICAgICAgICAgICAgICA8Y29kZT57THl0ZWJveCBocmVmPSd1cGxvYWRzL2ltYWdlcy9pbWFnZS0xLmpwZycgZ3JvdXA9J3ZhY2F0aW9uJyBkaXNwbGF5PSdzaG93JyB0aXRsZT0nTW9tIGFuZCBEYWQnIHRleHQ9J01vbSBhbmQgRGFkJ308L2NvZGU+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPGNvZGU+e0x5dGVib3ggaHJlZj0ndXBsb2Fkcy9pbWFnZXMvaW1hZ2UtMi5qcGcnIGdyb3VwPSd2YWNhdGlvbicgZGlzcGxheT0nc2hvdycgdGl0bGU9J015IFNpc3RlcicgdGV4dD0nTXkgU2lzdGVyJ308L2NvZGU+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICA8L3VsPgogICAgICAgIDwvbGk+CiAgICAgICAgPGxpPjxzdHJvbmc+SFRNTCBDb250ZW50IEV4YW1wbGVzPC9zdHJvbmc+CiAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgIDxsaT48ZW0+U2luZ2xlIEV4YW1wbGUgKHB1dCB0aGlzIGluIHlvdXIgcGFnZSBjb250ZW50KTo8L2VtPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICA8Y29kZT57THl0ZWJveCBocmVmPSdodHRwOi8vd3d3Lmdvb2dsZS5jb20vJyBkaXNwbGF5PSdmcmFtZScgdGl0bGU9J1NlYXJjaCBHb29nbGUnIHRleHQ9J0dvb2dsZSBTZWFyY2gnfTwvY29kZT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8bGk+PGVtPkdyb3VwZWQgRXhhbXBsZSAocHV0IHRoaXMgaW4geW91ciBwYWdlIGNvbnRlbnQpOjwvZW0+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPGNvZGU+e0x5dGVib3ggaHJlZj0nY2F0YWxvZzEuaHRtJyBncm91cD0nY2F0YWxvZycgZGlzcGxheT0nZnJhbWUnIHRpdGxlPSdTdW1tZXIgQ2F0YWxvZycgdGV4dD0nU3VtbWVyIENhdGFsb2cnfTwvY29kZT48YnIgLz4KICAgICAgICAgICAgICAgICAgICA8Y29kZT57THl0ZWJveCBocmVmPSdjYXRhbG9nMi5odG0nIGdyb3VwPSdjYXRhbG9nJyBkaXNwbGF5PSdmcmFtZScgdGl0bGU9J1dpbnRlciBDYXRhbG9nJyB0ZXh0PSdXaW50ZXIgQ2F0YWxvZyd9PC9jb2RlPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgPC91bD4KICAgICAgICA8L2xpPgogICAgICAgIDxsaT48c3Ryb25nPlVzZSB0aHVtYm5haWxzPC9zdHJvbmc+CiAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgIDxsaT48ZW0+U2luZ2xlIEltYWdlIEV4YW1wbGUgKHB1dCB0aGlzIGluIHlvdXIgcGFnZSBjb250ZW50KTo8L2VtPjxiciAvPgogICAgICAgICAgICAgICAgICAgIDxjb2RlPntMeXRlYm94IGhyZWY9J3VwbG9hZHMvaW1hZ2VzL2ltYWdlLTEuanBnJyB0aXRsZT0nSW1hZ2UgRGVzY3JpcHRpb24nIHRleHQ9J0ltYWdlICMxJyB0aHVtYnNyYz0ndXBsb2Fkcy9pbWFnZXMvaW1hZ2UtMS10aHVtYi5qcGcnIGFsdD0nSW1hZ2UgIzEnfTwvY29kZT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8bGk+PGVtPkdyb3VwZWQgSW1hZ2VzIEV4YW1wbGUgKHB1dCB0aGlzIGluIHlvdXIgcGFnZSBjb250ZW50KTo8L2VtPjxiciAvPgogICAgICAgICAgICAgICAgICAgIDxjb2RlPntMeXRlYm94IGhyZWY9J3VwbG9hZHMvaW1hZ2VzL2ltYWdlLTEuanBnJyBncm91cD0ndmFjYXRpb24nIHRpdGxlPSdNb20gYW5kIERhZCcgdGV4dD0nTW9tIGFuZCBEYWQnIHRodW1ic3JjPSd1cGxvYWRzL2ltYWdlcy9pbWFnZS0xLXRodW1iLmpwZycgdGh1bWJhbHQ9J01vbSBhbmQgRGFkJ308L2NvZGU+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPGNvZGU+e0x5dGVib3ggaHJlZj0ndXBsb2Fkcy9pbWFnZXMvaW1hZ2UtMi5qcGcnIGdyb3VwPSd2YWNhdGlvbicgdGl0bGU9J015IFNpc3RlcicgdGV4dD0nTXkgU2lzdGVyJyB0aHVtYnNyYz0ndXBsb2Fkcy9pbWFnZXMvaW1hZ2UtMi10aHVtYi5qcGcnIHRodW1iYWx0PSdNeSBTaXN0ZXInfTwvY29kZT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8bGk+PGVtPlNsaWRlc2hvdyBFeGFtcGxlIChwdXQgdGhpcyBpbiB5b3VyIHBhZ2UgY29udGVudCk6PC9lbT48YnIgLz4KICAgICAgICAgICAgICAgICAgICA8Y29kZT57THl0ZWJveCBocmVmPSd1cGxvYWRzL2ltYWdlcy9pbWFnZS0xLmpwZycgZ3JvdXA9J3ZhY2F0aW9uJyBkaXNwbGF5PSdzaG93JyB0aXRsZT0nTW9tIGFuZCBEYWQnIHRleHQ9J01vbSBhbmQgRGFkJ308L2NvZGU+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPGNvZGU+e0x5dGVib3ggaHJlZj0ndXBsb2Fkcy9pbWFnZXMvaW1hZ2UtMi5qcGcnIGdyb3VwPSd2YWNhdGlvbicgZGlzcGxheT0nc2hvdycgdGl0bGU9J015IFNpc3RlcicgdGV4dD0nTXkgU2lzdGVyJ308L2NvZGU+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICA8L3VsPgogICAgICAgIDwvbGk+CiAgICAgICAgPGxpPjxzdHJvbmc+U2V0IGFkZGl0aW9uYWwgcGFyYW1ldGVycyBmb3IgdGhlIEx5dGVib3ggamF2YXNjcmlwdDwvc3Ryb25nPgogICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICA8bGk+PGVtPlNpbmdsZSBFeGFtcGxlIChwdXQgdGhpcyBpbiB5b3VyIHBhZ2UgY29udGVudCk6PC9lbT48YnIgLz4KICAgICAgICAgICAgICAgICAgICA8Y29kZT57THl0ZWJveCBocmVmPSd1cGxvYWRzL2ltYWdlcy9pbWFnZS0xLmpwZycgdGhlbWU9J2JsdWUnfTwvY29kZT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8bGk+PGVtPkdyb3VwZWQgRXhhbXBsZSAocHV0IHRoaXMgaW4geW91ciBwYWdlIGNvbnRlbnQpOjwvZW0+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPGNvZGU+e0x5dGVib3ggaHJlZj0ndXBsb2Fkcy9pbWFnZXMvaW1hZ2UtMS5qcGcnIGdyb3VwPSd2YWNhdGlvbicgZGlzcGxheT0nc2hvdycgYXV0b0VuZD0nMCd9PC9jb2RlPjxiciAvPgogICAgICAgICAgICAgICAgICAgIDxjb2RlPntMeXRlYm94IGhyZWY9J3VwbG9hZHMvaW1hZ2VzL2ltYWdlLTIuanBnJyBncm91cD0ndmFjYXRpb24nIGRpc3BsYXk9J3Nob3cnfTwvY29kZT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgIDwvdWw+CiAgICAgICAgPC9saT4KICAgIDwvb2w+CiAgICA8Y2l0ZT4oRGVzY3JpcHRpb24gaXMgdGFrZW4gZnJvbSB0aGUgPGEgaHJlZj0iaHR0cDovL2RvbGVtLmNvbS9seXRlYm94LyI+THl0ZWJveCBob21lcGFnZTwvYT4uKTwvY2l0ZT4KICAgIDxoMz5TdXBwb3J0PC9oMz4KICAgIDxwPlBsZWFzZSByZWFkIHRoZSB0ZXh0IG9mIHRoZSBsaWNlbnNlIGluc2lkZSB0aGUgc291cmNlIGNvZGUgZm9yIHRoZSBmdWxsIGRpc2NsYWltZXIuPC9wPgogICAgPHA+Rm9yIGFkZGl0aW9uYWwgaGVscCB5b3UgY2FuIGFsc28gdHJ5IHRvIGFzayBhIHF1ZXN0aW9uIGluIHRoZSA8YSBocmVmPSJodHRwOi8vZm9ydW0uY21zbWFkZXNpbXBsZS5vcmcvIj5DTVNNUyBmb3J1bTwvYT4uPC9wPgogICAgPGgzPkNvcHlyaWdodCBhbmQgTGljZW5zZTwvaDM+CiAgICA8dWw+CiAgICAgICAgPGxpPjxzdHJvbmc+THl0ZWJveCBDTVNNUyBtb2R1bGU8L3N0cm9uZz4KICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgPGxpPkNvcHlyaWdodCDCqSAyMDA4LTIwMTAsIENhcnN0ZW4gV2llZG1hbm4gJmx0OzxhIGhyZWY9Im1haWx0bzpjYXJzdGVuX3N0dGd0QGdteC5kZSI+Y2Fyc3Rlbl9zdHRndEBnbXguZGU8L2E+Jmd0Oy4gQWxsIHJpZ2h0cyByZXNlcnZlZC48L2xpPgogICAgICAgICAgICAgICAgPGxpPlRoaXMgbW9kdWxlIGhhcyBiZWVuIHJlbGVhc2VkIHVuZGVyIHRoZSA8YSBocmVmPSJodHRwOi8vd3d3LmZyZWVic2Qub3JnL2NvcHlyaWdodC9mcmVlYnNkLWxpY2Vuc2UuaHRtbCI+RnJlZUJTRCBMaWNlbnNlPC9hPi4gWW91IG11c3QgYWdyZWUgdG8gdGhpcyBsaWNlbnNlIGJlZm9yZSB1c2luZyB0aGUgbW9kdWxlLjwvbGk+CiAgICAgICAgICAgIDwvdWw+CiAgICAgICAgPC9saT4KICAgICAgICA8bGk+PHN0cm9uZz5MeXRlYm94IEphdmFTY3JpcHQgY2xhc3M8L3N0cm9uZz4KICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgPGxpPkF1dGhvcjogTWFya3VzIEYuIEhheTwvbGk+CiAgICAgICAgICAgICAgICA8bGk+V2Vic2l0ZTogPGEgaHJlZj0iaHR0cDovL2RvbGVtLmNvbS9seXRlYm94LyI+aHR0cDovL2RvbGVtLmNvbS9seXRlYm94LzwvYT48L2xpPgogICAgICAgICAgICAgICAgPGxpPkxpY2Vuc2U6IDxhIGhyZWY9Imh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL2xpY2Vuc2VzL2J5LzMuMC8iPkNyZWF0aXZlIENvbW1vbnMgQXR0cmlidXRpb24gMy4wIExpY2Vuc2U8L2E+PC9saT4KICAgICAgICAgICAgPC91bD4KICAgICAgICA8L2xpPgogICAgPC91bD48aDM+UGFyYW1ldGVyPC9oMz48dWw+PGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gbGFuZz0iZW5fVVMiIC0gRGllc2VyIFBhcmFtZXRlciBsZWd0IGRpZSBTcHJhY2hlIGZlc3QsIGRpZSB2b20gTW9kdWwgZiZ1dW1sO3IgZGllIEF1c2dhYmUgYXVmIGRlciBXZWJzZWl0ZSB2ZXJ3ZW5kZXQgd2lyZC4gRGllcyB3aXJkIGplZG9jaCBuaWNodCB2b24gYWxsZW4gTW9kdWxlbiB1bnRlcnN0JnV1bWw7dHp0IGJ6dy4gYmVuJm91bWw7dGlndC48L2xpPjxsaT5ocmVmPSIiIC0gdGhpcyBhdHRyaWJ1dGUgaW5kaWNhdGVzIHRoZSBVUkkgdG8gYmUgbG9hZGVkIHdoZW4gdGhlIGh5cGVybGluayBpcyBhY3RpdmF0ZWQ8L2xpPjxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IGRpc3BsYXk9ImJveCIgLSBoeXBlcmxpbmsocykgYXJlIHNob3dlZCBhcyBib3gsIHNob3cgb3IgZnJhbWU8L2xpPjxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IGdyb3VwPSIiIC0gaWYgeW91IHdhbnQgZ3JvdXAgMiBvciBtb3JlIGh5cGVybGluaywgZ2l2ZSB0aGUgZ3JvdXAgYSBuYW1lPC9saT48bGk+PGVtPihvcHRpb25hbCk8L2VtPiBmcmFtZWF0dHI9IndpZHRoOiA0MDBweDsgaGVpZ2h0OiA0MDBweDsgc2Nyb2xsaW5nOiBhdXRvOyIgLSBjb250cm9scyB0aGUgd2lkdGgsIGhlaWdodCBhbmQgc2Nyb2xsaW5nIG9mIHRoZSB3aW5kb3c8L2xpPjxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IHRpdGxlPSJiYXNlbmFtZSgkaHJlZikiIC0gdGhpcyBhdHRyaWJ1dGUgc3VnZ2VzdHMgYSB0aXRsZSAoYWR2aXNvcnkgb25seSkgZm9yIHRoZSBkZXN0aW5hdGlvbiByZXNvdXJjZTwvbGk+PGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gZXh0cmE9IiIgLSBhbnkgZXh0cmEgYXR0cmlidXRlKHMpIHlvdSB3YW50IGdpdmUgdGhlIEEgZWxlbWVudDwvbGk+PGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gdGV4dD0iYmFzZW5hbWUoJGhyZWYpIiAtIHRleHQgZm9yIHRoZSBoeXBlcmxpbms8L2xpPjxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IHRodW1ic3JjPSIiIC0gaW5kaWNhdGVzIHRoZSBVUkkgdG8gcmVmZXJlbmNlIHRoZSB0aHVtYm5haWw8L2xpPjxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IHRodW1iYWx0PSJiYXNlbmFtZSgkdGh1bWJzcmMpIiAtIHRoaXMgaXMgdGV4dCB0byBiZSBkaXNwbGF5ZWQgaW4gcGxhY2Ugb2YgYW4gaW1hZ2U8L2xpPjxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IHRodW1iZXh0cmE9IiIgLSBhbnkgZXh0cmEgYXR0cmlidXRlKHMpIHlvdSB3YW50IGdpdmUgdGhlIElNRyBlbGVtZW50PC9saT48bGk+PGVtPihvcHRpb25hbCk8L2VtPiB0aGVtZT0iZ3JleSIgLSB0aGVtZXM6IGdyZXkgKGRlZmF1bHQpLCByZWQsIGdyZWVuLCBibHVlLCBnb2xkPC9saT48bGk+PGVtPihvcHRpb25hbCk8L2VtPiBoaWRlRmxhc2g9IjEiIC0gY29udHJvbHMgd2hldGhlciBvciBub3QgRmxhc2ggb2JqZWN0cyBzaG91bGQgYmUgaGlkZGVuPC9saT48bGk+PGVtPihvcHRpb25hbCk8L2VtPiBvdXRlckJvcmRlcj0iMSIgLSBjb250cm9scyB3aGV0aGVyIHRvIHNob3cgdGhlIG91dGVyIGdyZXkgKG9yIHRoZW1lKSBib3JkZXI8L2xpPjxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IHJlc2l6ZVNwZWVkPSI4IiAtIGNvbnRyb2xzIHRoZSBzcGVlZCBvZiB0aGUgaW1hZ2UgcmVzaXppbmcgKDE9c2xvd2VzdCBhbmQgMTA9ZmFzdGVzdCk8L2xpPjxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IG1heE9wYWNpdHk9IjgwIiAtIGhpZ2hlciBvcGFjaXR5ID0gZGFya2VyIG92ZXJsYXksIGxvd2VyIG9wYWNpdHkgPSBsaWdodGVyIG92ZXJsYXk8L2xpPjxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IG5hdlR5cGU9IjEiIC0gMSA9ICZxdW90O1ByZXYvTmV4dCZxdW90OyBidXR0b25zIG9uIHRvcCBsZWZ0IGFuZCBsZWZ0IChkZWZhdWx0KSwgMiA9ICZxdW90OyZsdDsmbHQ7IHByZXYgfCBuZXh0ICZndDsmZ3Q7JnF1b3Q7IGxpbmtzIG5leHQgdG8gaW1hZ2UgbnVtYmVyPC9saT48bGk+PGVtPihvcHRpb25hbCk8L2VtPiBhdXRvUmVzaXplPSIxIiAtIGNvbnRyb2xzIHdoZXRoZXIgb3Igbm90IGltYWdlcyBzaG91bGQgYmUgcmVzaXplZCBpZiBsYXJnZXIgdGhhbiB0aGUgYnJvd3NlciB3aW5kb3cgZGltZW5zaW9uczwvbGk+PGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gZG9BbmltYXRpb25zPSIxIiAtIGNvbnRyb2xzIHdoZXRoZXIgb3Igbm90ICZxdW90O2FuaW1hdGUmcXVvdDsgTHl0ZWJveCwgaS5lLiByZXNpemUgdHJhbnNpdGlvbiBiZXR3ZWVuIGltYWdlcywgZmFkZSBpbi9vdXQgZWZmZWN0cywgZXRjLjwvbGk+PGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gYm9yZGVyU2l6ZT0iMTIiIC0gaWYgeW91IGFkanVzdCB0aGUgcGFkZGluZyBpbiB0aGUgQ1NTLCB5b3Ugd2lsbCBuZWVkIHRvIHVwZGF0ZSB0aGlzIHZhcmlhYmxlIC0tIG90aGVyd2lzZSwgbGVhdmUgdGhpcyBhbG9uZS4uLjwvbGk+PGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gc2xpZGVJbnRlcnZhbD0iNDAwMCIgLSBDaGFuZ2UgdmFsdWUgKG1pbGxpc2Vjb25kcykgdG8gaW5jcmVhc2UvZGVjcmVhc2UgdGhlIHRpbWUgYmV0d2VlbiAmcXVvdDtzbGlkZXMmcXVvdDsgKDEwMDAwID0gMTAgc2Vjb25kcyk8L2xpPjxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IHNob3dOYXZpZ2F0aW9uPSIxIiAtIDEgdG8gZGlzcGxheSBOZXh0L1ByZXYgYnV0dG9ucy90ZXh0IGR1cmluZyBzbGlkZXNob3csIDAgdG8gaGlkZTwvbGk+PGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gc2hvd0Nsb3NlPSIxIiAtIDEgdG8gZGlzcGxheSB0aGUgQ2xvc2UgYnV0dG9uLCAwIHRvIGhpZGU8L2xpPjxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IHNob3dEZXRhaWxzPSIxIiAtIDEgdG8gZGlzcGxheSBpbWFnZSBkZXRhaWxzIChjYXB0aW9uLCBjb3VudCksIDAgdG8gaGlkZTwvbGk+PGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gc2hvd1BsYXlQYXVzZT0iMSIgLSAxIHRvIGRpc3BsYXkgcGF1c2UvcGxheSBidXR0b25zIG5leHQgdG8gY2xvc2UgYnV0dG9uLCAwIHRvIGhpZGU8L2xpPjxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IGF1dG9FbmQ9IjEiIC0gMSB0byBhdXRvbWF0aWNhbGx5IGNsb3NlIEx5dGVib3ggYWZ0ZXIgdGhlIGxhc3QgaW1hZ2UgaXMgcmVhY2hlZCwgMCB0byBrZWVwIG9wZW48L2xpPjxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IHBhdXNlT25OZXh0Q2xpY2s9IjAiIC0gMSB0byBwYXVzZSB0aGUgc2xpZGVzaG93IHdoZW4gdGhlICZxdW90O05leHQmcXVvdDsgYnV0dG9uIGlzIGNsaWNrZWQ8L2xpPjxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IHBhdXNlT25QcmV2Q2xpY2s9IjEiIC0gMSB0byBwYXVzZSB0aGUgc2xpZGVzaG93IHdoZW4gdGhlICZxdW90O1ByZXYmcXVvdDsgYnV0dG9uIGlzIGNsaWNrZWQ8L2xpPjxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IGNvbmZpZz0iaW50ZXJuYWwgdXNhZ2UiIC0gPC9saT48L3VsPg==]]></help>
	<about><![CDATA[PGJyIC8+QXV0b3I6IENhcnN0ZW4gV2llZG1hbm4gJmx0O2NhcnN0ZW5fc3R0Z3RAZ214LmRlJmd0OzxiciAvPjxiciAvPlZlcnNpb24gOiAwLjMuMWJldGExPGJyIC8+PGJyIC8+JkF1bWw7bmRlcnVuZ3N2ZXJsYXVmOjxiciAvPiAgICA8dWw+CiAgICAgICAgPGxpPlZlcnNpb24gMC4zLjFiZXRhMQogICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICA8bGk+Zml4IGJ1ZyAjNDIyNiBhbmQgIzMzNTY8L2xpPgogICAgICAgICAgICAgICAgPGxpPmFkZCBtZWRpYSAncHJvamVjdGlvbicgdG8gdGhlIG1vZHVsZSBzdHlsZXNoZWV0PC9saT4KICAgICAgICAgICAgICAgIDxsaT5tb2R1bGUgaXMgYWRkaW5nIGl0cyBzdHlsZXNoZWV0IGFuZCBKYXZhU2NyaXB0IGl0c2VsZiB0byB0aGUgcGFnZSBtZXRhZGF0YTwvbGk+CiAgICAgICAgICAgICAgICA8bGk+cmVtb3ZlIHVzYWdlIG9mIGRlcHJlY2lhdGVkIHZhcnMuCiAgICAgICAgICAgIDwvdWw+CiAgICAgICAgPC9saT4KICAgICAgICA8bGk+VmVyc2lvbiAwLjIuMWJldGExCiAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgIDxsaT5pdCdzIG5vdyBwb3NzaWJsZSB0byB1c2UgdXJpIHBhcmFtcyBmb3IgTHl0ZWZyYW1lIHRvZ2VodGVyIHdpdGggYSB3eXNpd3lnIGVkaXRvcjwvbGk+CiAgICAgICAgICAgICAgICA8bGk+YWRkIGFjdGlvbiAnZ2V0c2NyaXB0bGluaycgaWYgeW91IGp1c3QgbmVlZCB0aGUgbGluayBmb3IgaW5jbHVkdW5nIHRoZSBKYXZhU2NyaXB0PC9saT4KICAgICAgICAgICAgPC91bD4KICAgICAgICA8L2xpPgogICAgICAgIDxsaT5WZXJzaW9uIDAuMS4wZGV2MQogICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICA8bGk+SW5pdGlhbCBSZWxlYXNlPC9saT4KICAgICAgICAgICAgICAgIDxsaT5MeXRlYm94IHYzLjIyPC9saT4KICAgICAgICAgICAgPC91bD4KICAgICAgICA8L2xpPgogICAgPC91bD48YnIgLz4=]]></about>
	<description><![CDATA[A simple wrapper to the Lytebox JavaScript class.]]></description>
	<file>
	  <filename>/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/action.default.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qIHZpbTogc2V0IGV4cGFuZHRhYiB0YWJzdG9wPTQgc2hpZnR3aWR0aD00IHNvZnR0YWJzdG9wPTQ6ICovCgovKioKICogTHl0ZWJveCBtb2R1bGUgZm9yIENNU01TIC0gQSBzaW1wbGUgd3JhcHBlciB0byB0aGUgTHl0ZWJveCBKYXZhU2NyaXB0IGNsYXNzLgogKgogKiBQSFAgdmVyc2lvbnMgNCBhbmQgNQogKgogKiBMSUNFTlNFOgogKiBDb3B5cmlnaHQgKGMpIDIwMDgtMjAxMCwgQ2Fyc3RlbiBXaWVkbWFubgogKiBBbGwgcmlnaHRzIHJlc2VydmVkLgogKgogKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCiAqIGFyZSBtZXQ6CiAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CiAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQogKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgogKgogKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAogKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKICogQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCiAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCiAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCiAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQogKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAogKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCiAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKICogU1VDSCBEQU1BR0UuCiAqCiAqIEBjYXRlZ29yeSAgIE1vZHVsZXMKICogQHBhY2thZ2UgICAgTHl0ZWJveAogKiBAYXV0aG9yICAgICBDYXJzdGVuIFdpZWRtYW5uIDxjYXJzdGVuX3N0dGd0QGdteC5kZT4KICogQGNvcHlyaWdodCAgMjAwOC0yMDEwIENhcnN0ZW4gV2llZG1hbm4KICogQGxpY2Vuc2UgICAgaHR0cDovL3d3dy5mcmVlYnNkLm9yZy9jb3B5cmlnaHQvZnJlZWJzZC1saWNlbnNlLmh0bWwgRnJlZUJTRCBMaWNlbnNlCiAqIEB2ZXJzaW9uICAgIFNWTjogJElkOiBhY3Rpb24uZGVmYXVsdC5waHAgMTYgMjAxMC0xMS0yOCAxNjozODoyMVogd2llZG1hbm4gJAogKiBAbGluayAgICAgICBodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL2x5dGVib3gKICovCgppZiAoIWlzc2V0KCRnQ21zKSkgewogICAgZXhpdDsKfQoKaWYgKCFjbGFzc19leGlzdHMoJ0x5dGVib3hfQWN0aW9uRGVmYXVsdCcpKSB7CiAgICAvKioKICAgICAqIERlZmF1bHQgYWN0aW9uIGZyb20gdGhlIEx5dGVib3ggbW9kdWxlLgogICAgICoKICAgICAqIFVzYWdlOgogICAgICogPG9sPgogICAgICogICAgIDxsaT4KICAgICAqICAgICAgICAgPHVsPgogICAgICogICAgICAgICAgICAgPGxpPlRoZSBtb2R1bGUgaXMgYWRkaW5nIHRoZSBzdHlsZXNoZWV0ICZxdW90O01vZHVsZTogTHl0ZWJveCZxdW90OyBhbmQgdGhlIEphdmFTY3JpcHQgY2FsbCBpdHNlbGYgdG8gdGhlIHBhZ2UgbWV0YWRhdGEuPC9saT4KICAgICAqICAgICAgICAgICAgIDxsaT5JZiB5b3VyIENNU01TIHZlcnNpb25zIGlzIDwxLjkgb3IgJnF1b3Q7cHJvY2Vzc193aG9sZV90ZW1wbGF0ZSZxdW90OyBpcyBzZXQgdG8gJnF1b3Q7dHJ1ZSZxdW90OyBpbiB5b3VyICZxdW90O2NvbmZpZy5waHAmcXVvdDssIHlvdSBoYXZlIHRvOgogICAgICogICAgICAgICAgICAgICAgIDx1bD4KICAgICAqICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgSW4gdGhlIHBhZ2Ugd2hlcmUgeW91IHdhbnQgdXNlIHRoaXMgbW9kdWxlLCBhZGQgdGhpcyB0byB0aGUgcGFnZSBtZXRhZGF0YTo8YnIgLz4KICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgIDxzYW1wPntzdHlsZXNoZWV0IG5hbWU9J01vZHVsZTogTHl0ZWJveCcgbWVkaWE9J3Byb2plY3Rpb24sIHNjcmVlbid9PC9zYW1wPgogICAgICogICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICogICAgICAgICAgICAgICAgICAgICA8bGk+T3IgeW91IGNhbiBhdHRhY2ggdGhlIHN0eWxlc2hlZXQgJnF1b3Q7TW9kdWxlOiBMeXRlYm94JnF1b3Q7IHRvIHlvdXIgdGVtcGxhdGUuPC9saT4KICAgICAqICAgICAgICAgICAgICAgICA8L3VsPgogICAgICogICAgICAgICAgICAgPC9saT4KICAgICAqICAgICAgICAgPC91bD4KICAgICAqICAgICA8L2xpPgogICAgICogICAgIDxsaT48Yj5JbWFnZSBDb250ZW50IEV4YW1wbGVzPC9iPgogICAgICogICAgICAgICA8dWw+CiAgICAgKiAgICAgICAgICAgICA8bGk+U2luZ2xlIEltYWdlIEV4YW1wbGUgKHB1dCB0aGlzIGluIHlvdXIgcGFnZSBjb250ZW50KTo8YnIgLz4KICAgICAqICAgICAgICAgICAgICAgICA8c2FtcD57THl0ZWJveCBocmVmPSd1cGxvYWRzL2ltYWdlcy9pbWFnZS0xLmpwZycgdGl0bGU9J0ltYWdlIERlc2NyaXB0aW9uJyB0ZXh0PSdJbWFnZSAjMSd9PC9zYW1wPgogICAgICogICAgICAgICAgICAgPC9saT4KICAgICAqICAgICAgICAgICAgIDxsaT5Hcm91cGVkIEltYWdlcyBFeGFtcGxlIChwdXQgdGhpcyBpbiB5b3VyIHBhZ2UgY29udGVudCk6PGJyIC8+CiAgICAgKiAgICAgICAgICAgICAgICAgPHNhbXA+e0x5dGVib3ggaHJlZj0ndXBsb2Fkcy9pbWFnZXMvaW1hZ2UtMS5qcGcnIGdyb3VwPSd2YWNhdGlvbicgdGl0bGU9J01vbSBhbmQgRGFkJyB0ZXh0PSdNb20gYW5kIERhZCd9PC9zYW1wPjxiciAvPgogICAgICogICAgICAgICAgICAgICAgIDxzYW1wPntMeXRlYm94IGhyZWY9J3VwbG9hZHMvaW1hZ2VzL2ltYWdlLTIuanBnJyBncm91cD0ndmFjYXRpb24nIHRpdGxlPSdNeSBTaXN0ZXInIHRleHQ9J015IFNpc3Rlcid9PC9jb2RlPgogICAgICogICAgICAgICAgICAgPC9saT4KICAgICAqICAgICAgICAgICAgIDxsaT5TbGlkZXNob3cgRXhhbXBsZSAocHV0IHRoaXMgaW4geW91ciBwYWdlIGNvbnRlbnQpOjxiciAvPgogICAgICogICAgICAgICAgICAgICAgIDxzYW1wPntMeXRlYm94IGhyZWY9J3VwbG9hZHMvaW1hZ2VzL2ltYWdlLTEuanBnJyBncm91cD0ndmFjYXRpb24nIGRpc3BsYXk9J3Nob3cnIHRpdGxlPSdNb20gYW5kIERhZCcgdGV4dD0nTW9tIGFuZCBEYWQnfTwvc2FtcD48YnIgLz4KICAgICAqICAgICAgICAgICAgICAgICA8c2FtcD57THl0ZWJveCBocmVmPSd1cGxvYWRzL2ltYWdlcy9pbWFnZS0yLmpwZycgZ3JvdXA9J3ZhY2F0aW9uJyBkaXNwbGF5PSdzaG93JyB0aXRsZT0nTXkgU2lzdGVyJyB0ZXh0PSdNeSBTaXN0ZXInfTwvc2FtcD4KICAgICAqICAgICAgICAgICAgIDwvbGk+CiAgICAgKiAgICAgICAgIDwvdWw+CiAgICAgKiAgICAgPC9saT4KICAgICAqIDwvb2w+CiAgICAgKgogICAgICogKERlc2NyaXB0aW9uIGlzIHRha2VuIGZyb20gdGhlIHtAbGluayBodHRwOi8vZG9sZW0uY29tL2x5dGVib3gvIEx5dGVib3ggaG9tZXBhZ2V9LikKICAgICAqCiAgICAgKiBAY2F0ZWdvcnkgICBNb2R1bGVzCiAgICAgKiBAcGFja2FnZSAgICBMeXRlYm94CiAgICAgKiBAYXV0aG9yICAgICBDYXJzdGVuIFdpZWRtYW5uIDxjYXJzdGVuX3N0dGd0QGdteC5kZT4KICAgICAqIEBsaWNlbnNlICAgIGh0dHA6Ly93d3cuZnJlZWJzZC5vcmcvY29weXJpZ2h0L2ZyZWVic2QtbGljZW5zZS5odG1sICBGcmVlQlNEIExpY2Vuc2UKICAgICAqIEB2ZXJzaW9uICAgIFJlbGVhc2U6IDAuMy4xYmV0YTEKICAgICAqIEBsaW5rICAgICAgIGh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvbHl0ZWJveAogICAgICogQHNlZSAgICAgICAgTHl0ZWJveAogICAgICovCiAgICBjbGFzcyBMeXRlYm94X0FjdGlvbkRlZmF1bHQgZXh0ZW5kcyBMeXRlYm94CiAgICB7CiAgICAgICAgLyoqCiAgICAgICAgICogY29udGFpbnMgdGhlIGFjdGlvbiB0byBwZXJmb3JtCiAgICAgICAgICoKICAgICAgICAgKiBAdmFyIHN0cmluZwogICAgICAgICAqIEBhY2Nlc3MgcHJvdGVjdGVkCiAgICAgICAgICovCiAgICAgICAgdmFyICRuYW1lOwoKICAgICAgICAvKioKICAgICAgICAgKiBjb250YWlucyB0aGUgbW9kdWxlIGlkCiAgICAgICAgICoKICAgICAgICAgKiBAdmFyIHN0cmluZwogICAgICAgICAqIEBhY2Nlc3MgcHJvdGVjdGVkCiAgICAgICAgICovCiAgICAgICAgdmFyICRpZDsKCiAgICAgICAgLyoqCiAgICAgICAgICogY29udGFpbnMgdGhlIG1vZHVsZSBwYXJhbWV0ZXJzCiAgICAgICAgICoKICAgICAgICAgKiBAdmFyIGFycmF5CiAgICAgICAgICogQGFjY2VzcyBwcm90ZWN0ZWQKICAgICAgICAgKi8KICAgICAgICB2YXIgJHBhcmFtczsKCiAgICAgICAgLyoqCiAgICAgICAgICogY29udGFpbnMgdGhlIG1vZHVsZSByZXR1cm5pZAogICAgICAgICAqCiAgICAgICAgICogQHZhciBzdHJpbmcKICAgICAgICAgKiBAYWNjZXNzIHByb3RlY3RlZAogICAgICAgICAqLwogICAgICAgIHZhciAkcmV0dXJuaWQ7CgogICAgICAgIC8qKgogICAgICAgICAqIEx5dGVib3hfQWN0aW9uRGVmYXVsdCgpCiAgICAgICAgICoKICAgICAgICAgKiBAcGFyYW0gc3RyaW5nICYkbmFtZSAgICAgTmFtZSBvZiB0aGUgYWN0aW9uIHRvIHBlcmZvcm0KICAgICAgICAgKiBAcGFyYW0gc3RyaW5nICYkaWQgICAgICAgdGhlIGlkIGZvciB0aGlzIG1vZHVsZQogICAgICAgICAqIEBwYXJhbSBhcnJheSAgJiRwYXJhbXMgICB0aGUgcGFyYW1ldGVycyB0YXJnZXRlZCBmb3IgdGhpcyBtb2R1bGUKICAgICAgICAgKiBAcGFyYW0gc3RyaW5nICYkcmV0dXJuaWQgdGhlIHJldHVybmlkIGZvciB0aGlzIG1vZHVsZQogICAgICAgICAqCiAgICAgICAgICogQHVzZXMgTHl0ZWJveCgpCiAgICAgICAgICogQHVzZXMgJG5hbWUKICAgICAgICAgKiBAdXNlcyAkaWQKICAgICAgICAgKiBAdXNlcyAkcGFyYW1zCiAgICAgICAgICogQHVzZXMgJHJldHVybmlkCiAgICAgICAgICogQHVzZXMgJGNvdW50Y2FsbHMKICAgICAgICAgKgogICAgICAgICAqIEByZXR1cm4gdm9pZAogICAgICAgICAqIEBhY2Nlc3MgcHVibGljCiAgICAgICAgICovCiAgICAgICAgZnVuY3Rpb24gTHl0ZWJveF9BY3Rpb25EZWZhdWx0KCYkbmFtZSwgJiRpZCwgJiRwYXJhbXMsICYkcmV0dXJuaWQpCiAgICAgICAgewogICAgICAgICAgICBwYXJlbnQ6Okx5dGVib3goKTsKCiAgICAgICAgICAgICR0aGlzLT5uYW1lICAgICA9JiAkbmFtZTsKICAgICAgICAgICAgJHRoaXMtPmlkICAgICAgID0mICRpZDsKICAgICAgICAgICAgJHRoaXMtPnBhcmFtcyAgID0mICRwYXJhbXM7CiAgICAgICAgICAgICR0aGlzLT5yZXR1cm5pZCA9JiAkcmV0dXJuaWQ7CiAgICAgICAgfQoKICAgICAgICAvKioKICAgICAgICAgKiBEb3VibGVFbnRpdGllc0RlY29kZSgpCiAgICAgICAgICoKICAgICAgICAgKiBAcGFyYW0gc3RyaW5nICR2YWx1ZSBzdHJpbmcgd2hpY2ggY2FuIGNvbnRhaW4gZG91YmxlIGVuY29kZWQgZW50aXRpZXMKICAgICAgICAgKgogICAgICAgICAqIEByZXR1cm4gc3RyaW5nIHN0cmluZyB3aXRoIGRvdWJsZSBlbmNvZGVkIGVudGl0aWVzIHJlcGxhY2VkIHdpdGggbm9ybWFsIGVudGl0aWVzCiAgICAgICAgICogQGFjY2VzcyBwcm90ZWN0ZWQKICAgICAgICAgKi8KICAgICAgICBmdW5jdGlvbiBEb3VibGVFbnRpdGllc0RlY29kZSgkdmFsdWUpCiAgICAgICAgewogICAgICAgICAgICAkdHJhbnMgPSBhcnJheSgKICAgICAgICAgICAgICAgICcmYW1wO3F1b3Q7JyA9PiAnJnF1b3Q7JywKICAgICAgICAgICAgICAgICcmYW1wOyMzOTsnICA9PiAnJiMzOTsnLAogICAgICAgICAgICAgICAgJyZhbXA7bHQ7JyAgID0+ICcmbHQ7JywKICAgICAgICAgICAgICAgICcmYW1wO2d0OycgICA9PiAnJmd0OycsCiAgICAgICAgICAgICAgICAnJmFtcDthbXA7JyAgPT4gJyZhbXA7JywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJHZhbHVlID0gc3RydHIoJHZhbHVlLCAkdHJhbnMpOwogICAgICAgICAgICAKICAgICAgICAgICAgcmV0dXJuICR2YWx1ZTsKICAgICAgICB9CgogICAgICAgIC8qKgogICAgICAgICAqIERvQWN0aW9uKCkKICAgICAgICAgKgogICAgICAgICAqIEB1c2VzIENyZWF0ZUZyb250ZW5kTGluaygpCiAgICAgICAgICogQHVzZXMgUHJvY2Vzc1RlbXBsYXRlRnJvbURhdGEoKQogICAgICAgICAqIEB1c2VzIERvdWJsZUVudGl0aWVzRGVjb2RlKCkKICAgICAgICAgKiBAdXNlcyBjbXNtcygpCiAgICAgICAgICogQHVzZXMgJGlkCiAgICAgICAgICogQHVzZXMgJHJldHVybmlkCiAgICAgICAgICogQHVzZXMgJHBhcmFtcwogICAgICAgICAqIEB1c2VzICRjb3VudGNhbGxzCiAgICAgICAgICoKICAgICAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICAgICAqIEBhY2Nlc3MgcHVibGljCiAgICAgICAgICovCiAgICAgICAgZnVuY3Rpb24gRG9BY3Rpb24oKQogICAgICAgIHsKICAgICAgICAgICAgJHNtYXJ0eSAgICAgPSYgY21zbXMoKS0+R2V0U21hcnR5KCk7CiAgICAgICAgICAgICRjb25maWcgICAgID0mIGNtc21zKCktPkdldENvbmZpZygpOwogICAgICAgICAgICBpZiAodmVyc2lvbl9jb21wYXJlKENNU19WRVJTSU9OLCAnMS45LjAnKSA+PSAwKSB7CiAgICAgICAgICAgICAgICAkY29udGVudG9iaiA9JiBjbXNtcygpLT5HZXRDb250ZW50T3BlcmF0aW9ucygpLT5nZXRDb250ZW50T2JqZWN0KCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8qCiAgICAgICAgICAgICAqIGxvYWQgdGhlIEphdmFzY3JpcHQKICAgICAgICAgICAgICovCiAgICAgICAgICAgIGlmICgwIDwgJHRoaXMtPmNvdW50Y2FsbHMpIHsKICAgICAgICAgICAgICAgICRzbWFydHktPmNsZWFyX2Fzc2lnbignTHl0ZWJveF9sb2Fkc2NyaXB0Jyk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAvKgogICAgICAgICAgICAgICAgICogY3JlYXRlIGphdmFzY3JpcHQgY29uZmlndXJhdGlvbgogICAgICAgICAgICAgICAgICovCiAgICAgICAgICAgICAgICAkc2NyaXB0cGFyYW1zID0gYXJyYXkoKTsKCiAgICAgICAgICAgICAgICAvKiBMeXRlYm94IEdsb2JhbCBDb25maWd1cmF0aW9uICovCiAgICAgICAgICAgICAgICAkc2NyaXB0cGFyYW1zWzBdID0gZW1wdHkoJHRoaXMtPnBhcmFtc1sndGhlbWUnXSkgPyAnZ3JleScgOiB0cmltKCR0aGlzLT5wYXJhbXNbJ3RoZW1lJ10pOwogICAgICAgICAgICAgICAgJHNjcmlwdHBhcmFtc1sxXSA9ICFpc3NldCgkdGhpcy0+cGFyYW1zWydoaWRlRmxhc2gnXSkgPyAxIDogJHRoaXMtPnBhcmFtc1snaGlkZUZsYXNoJ107CiAgICAgICAgICAgICAgICAkc2NyaXB0cGFyYW1zWzJdID0gIWlzc2V0KCR0aGlzLT5wYXJhbXNbJ291dGVyQm9yZGVyJ10pID8gMSA6ICR0aGlzLT5wYXJhbXNbJ291dGVyQm9yZGVyJ107CiAgICAgICAgICAgICAgICAkc2NyaXB0cGFyYW1zWzNdID0gIWlzc2V0KCR0aGlzLT5wYXJhbXNbJ3Jlc2l6ZVNwZWVkJ10pID8gOCA6ICR0aGlzLT5wYXJhbXNbJ3Jlc2l6ZVNwZWVkJ107CiAgICAgICAgICAgICAgICAkc2NyaXB0cGFyYW1zWzRdID0gIWlzc2V0KCR0aGlzLT5wYXJhbXNbJ21heE9wYWNpdHknXSkgPyA4MCA6ICR0aGlzLT5wYXJhbXNbJ21heE9wYWNpdHknXTsKICAgICAgICAgICAgICAgICRzY3JpcHRwYXJhbXNbNV0gPSAhaXNzZXQoJHRoaXMtPnBhcmFtc1snbmF2VHlwZSddKSA/IDEgOiAkdGhpcy0+cGFyYW1zWyduYXZUeXBlJ107CiAgICAgICAgICAgICAgICAkc2NyaXB0cGFyYW1zWzZdID0gIWlzc2V0KCR0aGlzLT5wYXJhbXNbJ2F1dG9SZXNpemUnXSkgPyAxIDogJHRoaXMtPnBhcmFtc1snYXV0b1Jlc2l6ZSddOwogICAgICAgICAgICAgICAgJHNjcmlwdHBhcmFtc1s3XSA9ICFpc3NldCgkdGhpcy0+cGFyYW1zWydkb0FuaW1hdGlvbnMnXSkgPyAxIDogJHRoaXMtPnBhcmFtc1snZG9BbmltYXRpb25zJ107CiAgICAgICAgICAgICAgICAkc2NyaXB0cGFyYW1zWzhdID0gIWlzc2V0KCR0aGlzLT5wYXJhbXNbJ2JvcmRlclNpemUnXSkgPyAxMiA6ICR0aGlzLT5wYXJhbXNbJ2JvcmRlclNpemUnXTsKCiAgICAgICAgICAgICAgICAvKiBMeXRlYm94IFNsaWRlc2hvdyBPcHRpb25zICovCiAgICAgICAgICAgICAgICAkc2NyaXB0cGFyYW1zWzldICA9ICFpc3NldCgkdGhpcy0+cGFyYW1zWydzbGlkZUludGVydmFsJ10pID8gNDAwMCA6ICR0aGlzLT5wYXJhbXNbJ3NsaWRlSW50ZXJ2YWwnXTsKICAgICAgICAgICAgICAgICRzY3JpcHRwYXJhbXNbMTBdID0gIWlzc2V0KCR0aGlzLT5wYXJhbXNbJ3Nob3dOYXZpZ2F0aW9uJ10pID8gMSA6ICR0aGlzLT5wYXJhbXNbJ3Nob3dOYXZpZ2F0aW9uJ107CiAgICAgICAgICAgICAgICAkc2NyaXB0cGFyYW1zWzExXSA9ICFpc3NldCgkdGhpcy0+cGFyYW1zWydzaG93Q2xvc2UnXSkgPyAxIDogJHRoaXMtPnBhcmFtc1snc2hvd0Nsb3NlJ107CiAgICAgICAgICAgICAgICAkc2NyaXB0cGFyYW1zWzEyXSA9ICFpc3NldCgkdGhpcy0+cGFyYW1zWydzaG93RGV0YWlscyddKSA/IDEgOiAkdGhpcy0+cGFyYW1zWydzaG93RGV0YWlscyddOwogICAgICAgICAgICAgICAgJHNjcmlwdHBhcmFtc1sxM10gPSAhaXNzZXQoJHRoaXMtPnBhcmFtc1snc2hvd1BsYXlQYXVzZSddKSA/IDEgOiAkdGhpcy0+cGFyYW1zWydzaG93UGxheVBhdXNlJ107CiAgICAgICAgICAgICAgICAkc2NyaXB0cGFyYW1zWzE0XSA9ICFpc3NldCgkdGhpcy0+cGFyYW1zWydhdXRvRW5kJ10pID8gMSA6ICR0aGlzLT5wYXJhbXNbJ2F1dG9FbmQnXTsKICAgICAgICAgICAgICAgICRzY3JpcHRwYXJhbXNbMTVdID0gIWlzc2V0KCR0aGlzLT5wYXJhbXNbJ3BhdXNlT25OZXh0Q2xpY2snXSkgPyAwIDogJHRoaXMtPnBhcmFtc1sncGF1c2VPbk5leHRDbGljayddOwogICAgICAgICAgICAgICAgJHNjcmlwdHBhcmFtc1sxNl0gPSAhaXNzZXQoJHRoaXMtPnBhcmFtc1sncGF1c2VPblByZXZDbGljayddKSA/IDEgOiAkdGhpcy0+cGFyYW1zWydwYXVzZU9uUHJldkNsaWNrJ107CgogICAgICAgICAgICAgICAgJHNjcmlwdHBhcmFtcyA9IGJhc2U2NF9lbmNvZGUoaW1wbG9kZSgnLCcsICRzY3JpcHRwYXJhbXMpKTsKICAgICAgICAgICAgICAgICRzY3JpcHRwYXJhbXMgPSBhcnJheSgKICAgICAgICAgICAgICAgICAgICAnY29uZmlnJyA9PiAkc2NyaXB0cGFyYW1zLAogICAgICAgICAgICAgICAgICAgICdzaG93dGVtcGxhdGUnID0+ICdmYWxzZScsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIC8qCiAgICAgICAgICAgICAgICAgKiBhZGQgamF2YXNjcmlwdCBsaW5rIHRvIHRoZSBwYWdlCiAgICAgICAgICAgICAgICAgKi8KICAgICAgICAgICAgICAgICRzY3JpcHRsaW5rICAgPSAkdGhpcy0+Q3JlYXRlRnJvbnRlbmRMaW5rKCR0aGlzLT5pZCwgJHRoaXMtPnJldHVybmlkLCAnZ2V0anMnLCAnJywgJHNjcmlwdHBhcmFtcywgJycsIHRydWUsIHRydWUsICcnLCB0cnVlLCAnJyk7CiAgICAgICAgICAgICAgICAvLyRzY3JpcHRsaW5rICAgPSBsdHJpbShzdHJfcmVwbGFjZSgkY29uZmlnWydyb290X3VybCddLCAnJywgJHNjcmlwdGxpbmspLCAnLycpOwogICAgICAgICAgICAgICAgaWYgKHZlcnNpb25fY29tcGFyZShDTVNfVkVSU0lPTiwgJzEuOS4wJykgPj0gMCkgewogICAgICAgICAgICAgICAgICAgICRtZXRhZGF0YSAgID0gJGNvbnRlbnRvYmotPk1ldGFkYXRhKCk7CiAgICAgICAgICAgICAgICAgICAgJG1ldGFkYXRhIC49ICJcbjxzY3JpcHQgdHlwZT1cInRleHQvamF2YXNjcmlwdFwiIHNyYz1cInskc2NyaXB0bGlua31cIj48L3NjcmlwdD4iOwogICAgICAgICAgICAgICAgICAgICRjb250ZW50b2JqLT5TZXRNZXRhZGF0YSgkbWV0YWRhdGEpOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkc21hcnR5LT5hc3NpZ24oJ0x5dGVib3hfbG9hZHNjcmlwdCcsICI8c2NyaXB0IHR5cGU9XCJ0ZXh0L2phdmFzY3JpcHRcIiBzcmM9XCJ7JHNjcmlwdGxpbmt9XCI+PC9zY3JpcHQ+XG4iKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8qCiAgICAgICAgICAgICAqIGFkZCBtb2R1bGUgc3R5bGVzaGVldCB0byB0aGUgcGFnZQogICAgICAgICAgICAgKi8KICAgICAgICAgICAgaWYgKCh2ZXJzaW9uX2NvbXBhcmUoQ01TX1ZFUlNJT04sICcxLjkuMCcpID49IDApICYmICgxID09ICR0aGlzLT5jb3VudGNhbGxzKSkgewogICAgICAgICAgICAgICAgJG1ldGFkYXRhICAgPSAkY29udGVudG9iai0+TWV0YWRhdGEoKTsKICAgICAgICAgICAgICAgIGlmICghcHJlZ19tYXRjaCgnL01vZHVsZTogTHl0ZWJveC8nLCAkbWV0YWRhdGEpKSB7CiAgICAgICAgICAgICAgICAgICAgJG1ldGFkYXRhIC49ICJcbntzdHlsZXNoZWV0IG5hbWU9J01vZHVsZTogTHl0ZWJveCcgbWVkaWE9J3Byb2plY3Rpb24sc2NyZWVuJ30iOwogICAgICAgICAgICAgICAgICAgICRjb250ZW50b2JqLT5TZXRNZXRhZGF0YSgkbWV0YWRhdGEpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAvKgogICAgICAgICAgICAgKiBzZXQgcGFyYW1zIGZvciB0aGUgaHlwZXJsaW5rCiAgICAgICAgICAgICAqLwogICAgICAgICAgICBpZiAoZW1wdHkoJHRoaXMtPnBhcmFtc1snaHJlZiddKSkgewogICAgICAgICAgICAgICAgcmV0dXJuICcnOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJHNtYXJ0eS0+YXNzaWduKCdMeXRlYm94X2hyZWYnLCB0cmltKCR0aGlzLT5Eb3VibGVFbnRpdGllc0RlY29kZSgkdGhpcy0+cGFyYW1zWydocmVmJ10pKSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRzbWFydHktPmNsZWFyX2Fzc2lnbignTHl0ZWJveF9mcmFtZWF0dHInKTsKICAgICAgICAgICAgaWYgKGVtcHR5KCR0aGlzLT5wYXJhbXNbJ2Rpc3BsYXknXSkpIHsKICAgICAgICAgICAgICAgICRzbWFydHktPmFzc2lnbignTHl0ZWJveF9kaXNwbGF5JywgJ2x5dGVib3gnKTsKICAgICAgICAgICAgfSBlbHNlaWYgKCdmcmFtZScgPT0gJHRoaXMtPnBhcmFtc1snZGlzcGxheSddKSB7CiAgICAgICAgICAgICAgICAkc21hcnR5LT5hc3NpZ24oJ0x5dGVib3hfZGlzcGxheScsICdseXRlZnJhbWUnKTsKCiAgICAgICAgICAgICAgICBpZiAoZW1wdHkoJHRoaXMtPnBhcmFtc1snZnJhbWVhdHRyJ10pKSB7CiAgICAgICAgICAgICAgICAgICAgJHNtYXJ0eS0+YXNzaWduKCdMeXRlYm94X2ZyYW1lYXR0cicsICd3aWR0aDogNDAwcHg7IGhlaWdodDogNDAwcHg7IHNjcm9sbGluZzogYXV0bzsnKTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJHNtYXJ0eS0+YXNzaWduKCdMeXRlYm94X2ZyYW1lYXR0cicsIHRyaW0oJHRoaXMtPnBhcmFtc1snZnJhbWVhdHRyJ10pKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlaWYgKCdzaG93JyA9PSAkdGhpcy0+cGFyYW1zWydkaXNwbGF5J10pIHsKICAgICAgICAgICAgICAgICRzbWFydHktPmFzc2lnbignTHl0ZWJveF9kaXNwbGF5JywgJ2x5dGVzaG93Jyk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkc21hcnR5LT5hc3NpZ24oJ0x5dGVib3hfZGlzcGxheScsICdseXRlYm94Jyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmIChlbXB0eSgkdGhpcy0+cGFyYW1zWydncm91cCddKSkgewogICAgICAgICAgICAgICAgJHNtYXJ0eS0+YXNzaWduKCdMeXRlYm94X2dyb3VwJywgJycpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJHNtYXJ0eS0+YXNzaWduKCdMeXRlYm94X2dyb3VwJywgJ1snLnRyaW0oJHRoaXMtPnBhcmFtc1snZ3JvdXAnXSkuJ10nKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCFpc3NldCgkdGhpcy0+cGFyYW1zWyd0ZXh0J10pKSB7CiAgICAgICAgICAgICAgICAkc21hcnR5LT5hc3NpZ24oJ0x5dGVib3hfdGV4dCcsIGJhc2VuYW1lKCR0aGlzLT5wYXJhbXNbJ2hyZWYnXSkpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJHNtYXJ0eS0+YXNzaWduKCdMeXRlYm94X3RleHQnLCB0cmltKCR0aGlzLT5wYXJhbXNbJ3RleHQnXSkpOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoIWlzc2V0KCR0aGlzLT5wYXJhbXNbJ3RpdGxlJ10pKSB7CiAgICAgICAgICAgICAgICAkc21hcnR5LT5hc3NpZ24oJ0x5dGVib3hfdGl0bGUnLCBiYXNlbmFtZSgkdGhpcy0+cGFyYW1zWydocmVmJ10pKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICRzbWFydHktPmFzc2lnbignTHl0ZWJveF90aXRsZScsIHRyaW0oJHRoaXMtPnBhcmFtc1sndGl0bGUnXSkpOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoZW1wdHkoJHRoaXMtPnBhcmFtc1snZXh0cmEnXSkpIHsKICAgICAgICAgICAgICAgICRzbWFydHktPmNsZWFyX2Fzc2lnbignTHl0ZWJveF9leHRyYScpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJHNtYXJ0eS0+YXNzaWduKCdMeXRlYm94X2V4dHJhJywgdHJpbSgkdGhpcy0+cGFyYW1zWydleHRyYSddKSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8qCiAgICAgICAgICAgICAqIHNldCBwYXJhbXMgZm9yIHRoZSB0aHVtYm5haWwKICAgICAgICAgICAgICovCiAgICAgICAgICAgIGlmIChlbXB0eSgkdGhpcy0+cGFyYW1zWyd0aHVtYnNyYyddKSkgewogICAgICAgICAgICAgICAgJHNtYXJ0eS0+Y2xlYXJfYXNzaWduKCdMeXRlYm94X3RodW1ic3JjJyk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkc21hcnR5LT5hc3NpZ24oJ0x5dGVib3hfdGh1bWJzcmMnLCB0cmltKCR0aGlzLT5Eb3VibGVFbnRpdGllc0RlY29kZSgkdGhpcy0+cGFyYW1zWyd0aHVtYnNyYyddKSkpOwoKICAgICAgICAgICAgICAgIGlmIChlbXB0eSgkdGhpcy0+cGFyYW1zWyd0aHVtYmFsdCddKSkgewogICAgICAgICAgICAgICAgICAgICRzbWFydHktPmFzc2lnbignTHl0ZWJveF90aHVtYmFsdCcsIGJhc2VuYW1lKCR0aGlzLT5wYXJhbXNbJ3RodW1ic3JjJ10pKTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJHNtYXJ0eS0+YXNzaWduKCdMeXRlYm94X3RodW1iYWx0JywgdHJpbSgkdGhpcy0+cGFyYW1zWyd0aHVtYmFsdCddKSk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKGVtcHR5KCR0aGlzLT5wYXJhbXNbJ3RodW1iZXh0cmEnXSkpIHsKICAgICAgICAgICAgICAgICAgICAkc21hcnR5LT5jbGVhcl9hc3NpZ24oJ0x5dGVib3hfdGh1bWJleHRyYScpOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkc21hcnR5LT5hc3NpZ24oJ0x5dGVib3hfdGh1bWJleHRyYScsIHRyaW0oJHRoaXMtPnBhcmFtc1sndGh1bWJleHRyYSddKSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8qCiAgICAgICAgICAgICAqIG91dHB1dCB0aGUgaHlwZXJsaW5rCiAgICAgICAgICAgICAqLwogICAgICAgICAgICAkdGVtcGxhdGUgPSAne2lmIGlzc2V0KCRMeXRlYm94X2xvYWRzY3JpcHQpfXskTHl0ZWJveF9sb2Fkc2NyaXB0fXsvaWZ9PGEgaHJlZj0ieyRMeXRlYm94X2hyZWZ9IiByZWw9InskTHl0ZWJveF9kaXNwbGF5fXskTHl0ZWJveF9ncm91cH0ie2lmIGlzc2V0KCRMeXRlYm94X2ZyYW1lYXR0cil9IHJldj0ieyRMeXRlYm94X2ZyYW1lYXR0cn0iey9pZn0gdGl0bGU9InskTHl0ZWJveF90aXRsZX0ie2lmIGlzc2V0KCRMeXRlYm94X2V4dHJhKX0geyRMeXRlYm94X2V4dHJhfXsvaWZ9PntpZiBpc3NldCgkTHl0ZWJveF90aHVtYnNyYyl9PGltZyBzcmM9InskTHl0ZWJveF90aHVtYnNyY30iIHRpdGxlPSJ7JEx5dGVib3hfdGl0bGV9IiBhbHQ9InskTHl0ZWJveF90aHVtYmFsdH0ie2lmIGlzc2V0KCRMeXRlYm94X3RodW1iZXh0cmEpfSB7JEx5dGVib3hfdGh1bWJleHRyYX17L2lmfSAvPnsvaWZ9eyRMeXRlYm94X3RleHR9PC9hPic7CiAgICAgICAgICAgICRvdXRwdXQgICA9ICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGVGcm9tRGF0YSgkdGVtcGxhdGUpOwoKICAgICAgICAgICAgZWNobyAiXG4iLiRvdXRwdXQuIlxuIjsKCiAgICAgICAgICAgICR0aGlzLT5jb3VudGNhbGxzKys7CiAgICAgICAgfQogICAgfQp9CgokYWN0aW9uID0gbmV3IEx5dGVib3hfQWN0aW9uRGVmYXVsdCgkbmFtZSwgJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQpOwokYWN0aW9uLT5Eb0FjdGlvbigpOwoKPz4K]]></data>
	</file>
	<file>
	  <filename>/action.getjs.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qIHZpbTogc2V0IGV4cGFuZHRhYiB0YWJzdG9wPTQgc2hpZnR3aWR0aD00IHNvZnR0YWJzdG9wPTQ6ICovCgovKioKICogTHl0ZWJveCBtb2R1bGUgZm9yIENNU01TIC0gQSBzaW1wbGUgd3JhcHBlciB0byB0aGUgTHl0ZWJveCBKYXZhU2NyaXB0IGNsYXNzLgogKgogKiBQSFAgdmVyc2lvbnMgNCBhbmQgNQogKgogKiBMSUNFTlNFOgogKiBDb3B5cmlnaHQgKGMpIDIwMDgtMjAxMCwgQ2Fyc3RlbiBXaWVkbWFubgogKiBBbGwgcmlnaHRzIHJlc2VydmVkLgogKgogKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCiAqIGFyZSBtZXQ6CiAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CiAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQogKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgogKgogKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAogKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKICogQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCiAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCiAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCiAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQogKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAogKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCiAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKICogU1VDSCBEQU1BR0UuCiAqCiAqIEBjYXRlZ29yeSAgIE1vZHVsZXMKICogQHBhY2thZ2UgICAgTHl0ZWJveAogKiBAYXV0aG9yICAgICBDYXJzdGVuIFdpZWRtYW5uIDxjYXJzdGVuX3N0dGd0QGdteC5kZT4KICogQGNvcHlyaWdodCAgMjAwOC0yMDEwIENhcnN0ZW4gV2llZG1hbm4KICogQGxpY2Vuc2UgICAgaHR0cDovL3d3dy5mcmVlYnNkLm9yZy9jb3B5cmlnaHQvZnJlZWJzZC1saWNlbnNlLmh0bWwgRnJlZUJTRCBMaWNlbnNlCiAqIEB2ZXJzaW9uICAgIFNWTjogJElkOiBhY3Rpb24uZ2V0anMucGhwIDE2IDIwMTAtMTEtMjggMTY6Mzg6MjFaIHdpZWRtYW5uICQKICogQGxpbmsgICAgICAgaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9wcm9qZWN0cy9seXRlYm94CiAqLwoKaWYgKCFpc3NldCgkZ0NtcykpIHsKICAgIGV4aXQ7Cn0KCi8qKgogKiBHZXRKUyBhY3Rpb24gZnJvbSB0aGUgTHl0ZWJveCBtb2R1bGUuCiAqCiAqIFlvdSBjYW4gY2FsbCB0aGlzIGFjdGlvbiB3aXRoIGEgZnJvbnRlbmQgbGluayAoe0BsaW5rIENyZWF0ZUZyb250ZW5kTGluaygpfSkuCiAqIEp1c3QgbWFrZSBzdXJlLCB5b3Ugc2V0ICR0YXJnZXRjb250ZW50b25seSB0byB0cnVlLgogKgogKiBZb3UgbmVlZCB0d28gZW50cmllcyBpbiB0aGUgJHBhcmFtcyBhcnJheToKICogLSAnc2hvd3RlbXBsYXRlJyA9PiAnZmFsc2UnCiAqIC0gJ2NvbmZpZycgPT4gJHNjcmlwdHBhcmFtcwogKgogKiB7QGxpbmsgJHNjcmlwdHBhcmFtc30gaXMgYSBjb21tYSBzZXBhcmF0ZWQsIGJhc2U2NGVuY29kZWQgc3RyaW5nLCB3aXRoIG9ubHkgdGhlIHZhbHVlcwogKiBmb3IgdGhlIHNldHRpbmdzIGluIHRoaXMgb3JkZXIgKHlvdSBtdXN0IGdpdmUgYWxsIHNldHRpbmdzKToKICogMS4gdGhlbWUKICogMi4gaGlkZUZsYXNoCiAqIDMuIG91dGVyQm9yZGVyCiAqIDQuIHJlc2l6ZVNwZWVkCiAqIDUuIG1heE9wYWNpdHkKICogNi4gbmF2VHlwZQogKiA3LiBhdXRvUmVzaXplCiAqIDguIGRvQW5pbWF0aW9ucwogKiA5LiBib3JkZXJTaXplCiAqIDEwLiBzbGlkZUludGVydmFsCiAqIDExLiBzaG93TmF2aWdhdGlvbgogKiAxMi4gc2hvd0Nsb3NlCiAqIDEzLiBzaG93RGV0YWlscwogKiAxNC4gc2hvd1BsYXlQYXVzZQogKiAxNS4gYXV0b0VuZAogKiAxNi4gcGF1c2VPbk5leHRDbGljawogKiAxNy4gdGhpcy5wYXVzZU9uUHJldkNsaWNrCiAqCiAqIEBjYXRlZ29yeSAgIE1vZHVsZXMKICogQHBhY2thZ2UgICAgTHl0ZWJveAogKiBAYXV0aG9yICAgICBDYXJzdGVuIFdpZWRtYW5uIDxjYXJzdGVuX3N0dGd0QGdteC5kZT4KICogQGxpY2Vuc2UgICAgaHR0cDovL3d3dy5mcmVlYnNkLm9yZy9jb3B5cmlnaHQvZnJlZWJzZC1saWNlbnNlLmh0bWwgIEZyZWVCU0QgTGljZW5zZQogKiBAdmVyc2lvbiAgICBSZWxlYXNlOiAwLjMuMWJldGExCiAqIEBsaW5rICAgICAgIGh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvbHl0ZWJveAogKiBAc2VlICAgICAgICBMeXRlYm94CiAqLwpjbGFzcyBMeXRlYm94X0FjdGlvbkdldEpTIGV4dGVuZHMgTHl0ZWJveAp7CiAgICAvKioKICAgICAqIGNvbnRhaW5zIHRoZSBhY3Rpb24gdG8gcGVyZm9ybQogICAgICoKICAgICAqIEB2YXIgc3RyaW5nCiAgICAgKiBAYWNjZXNzIHByb3RlY3RlZAogICAgICovCiAgICB2YXIgJG5hbWU7CgogICAgLyoqCiAgICAgKiBjb250YWlucyB0aGUgbW9kdWxlIGlkCiAgICAgKgogICAgICogQHZhciBzdHJpbmcKICAgICAqIEBhY2Nlc3MgcHJvdGVjdGVkCiAgICAgKi8KICAgIHZhciAkaWQ7CgogICAgLyoqCiAgICAgKiBjb250YWlucyB0aGUgbW9kdWxlIHBhcmFtZXRlcnMKICAgICAqCiAgICAgKiBAdmFyIGFycmF5CiAgICAgKiBAYWNjZXNzIHByb3RlY3RlZAogICAgICovCiAgICB2YXIgJHBhcmFtczsKCiAgICAvKioKICAgICAqIGNvbnRhaW5zIHRoZSBtb2R1bGUgcmV0dXJuaWQKICAgICAqCiAgICAgKiBAdmFyIHN0cmluZwogICAgICogQGFjY2VzcyBwcm90ZWN0ZWQKICAgICAqLwogICAgdmFyICRyZXR1cm5pZDsKCiAgICAvKioKICAgICAqIEx5dGVib3hfQWN0aW9uR2V0SlMoKQogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJiRuYW1lICAgICBOYW1lIG9mIHRoZSBhY3Rpb24gdG8gcGVyZm9ybQogICAgICogQHBhcmFtIHN0cmluZyAmJGlkICAgICAgIHRoZSBpZCBmb3IgdGhpcyBtb2R1bGUKICAgICAqIEBwYXJhbSBhcnJheSAgJiRwYXJhbXMgICB0aGUgcGFyYW1ldGVycyB0YXJnZXRlZCBmb3IgdGhpcyBtb2R1bGUKICAgICAqIEBwYXJhbSBzdHJpbmcgJiRyZXR1cm5pZCB0aGUgcmV0dXJuaWQgZm9yIHRoaXMgbW9kdWxlCiAgICAgKgogICAgICogQHVzZXMgTHl0ZWJveCgpCiAgICAgKiBAdXNlcyAkbmFtZQogICAgICogQHVzZXMgJGlkCiAgICAgKiBAdXNlcyAkcGFyYW1zCiAgICAgKiBAdXNlcyAkcmV0dXJuaWQKICAgICAqCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqIEBhY2Nlc3MgcHVibGljCiAgICAgKi8KICAgIGZ1bmN0aW9uIEx5dGVib3hfQWN0aW9uR2V0SlMoJiRuYW1lLCAmJGlkLCAmJHBhcmFtcywgJiRyZXR1cm5pZCkKICAgIHsKICAgICAgICBwYXJlbnQ6Okx5dGVib3goKTsKCiAgICAgICAgJHRoaXMtPm5hbWUgICAgID0mICRuYW1lOwogICAgICAgICR0aGlzLT5pZCAgICAgICA9JiAkaWQ7CiAgICAgICAgJHRoaXMtPnBhcmFtcyAgID0mICRwYXJhbXM7CiAgICAgICAgJHRoaXMtPnJldHVybmlkID0mICRyZXR1cm5pZDsKICAgIH0KCiAgICAvKioKICAgICAqIEdldEphdmFzY3JpcHQoKQogICAgICoKICAgICAqIEBhdXRob3IgIE1hcmt1cyBGLiBIYXkKICAgICAqIEBsaWNlbnNlIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL2xpY2Vuc2VzL2J5LzMuMC8gQ3JlYXRpdmUgQ29tbW9ucyBBdHRyaWJ1dGlvbiAzLjAgTGljZW5zZQogICAgICogQHZlcnNpb24gUmVsZWFzZTogMy4yMgogICAgICogQGxpbmsgICAgaHR0cDovL2RvbGVtLmNvbS9seXRlYm94LwogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nIHRoZSBKYWNhU2NyaXB0IGNvbnRlbnQKICAgICAqIEBhY2Nlc3MgcHJvdGVjdGVkCiAgICAgKi8KICAgIGZ1bmN0aW9uIEdldEphdmFzY3JpcHQoKQogICAgewogICAgICAgICRqc2NvbnRlbnQgPSA8PDxFT1QKQXJyYXkucHJvdG90eXBlLnJlbW92ZUR1cGxpY2F0ZXMgPSBmdW5jdGlvbiAoKSB7IGZvciAodmFyIGkgPSAxOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykgeyBpZiAodGhpc1tpXVswXSA9PSB0aGlzW2ktMV1bMF0pIHsgdGhpcy5zcGxpY2UoaSwxKTsgfSB9IH0KQXJyYXkucHJvdG90eXBlLmVtcHR5ID0gZnVuY3Rpb24gKCkgeyBmb3IgKHZhciBpID0gMDsgaSA8PSB0aGlzLmxlbmd0aDsgaSsrKSB7IHRoaXMuc2hpZnQoKTsgfSB9ClN0cmluZy5wcm90b3R5cGUudHJpbSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMucmVwbGFjZSgvXlxccyt8XFxzK1wkL2csICcnKTsgfQoKZnVuY3Rpb24gTHl0ZUJveCgpIHsKICAgIC8qKiogU3RhcnQgR2xvYmFsIENvbmZpZ3VyYXRpb24gKioqLwogICAgICAgIHRoaXMudGhlbWUgICAgICAgICAgICAgID0gJyVzJzsgICAvLyB0aGVtZXM6IGdyZXkgKGRlZmF1bHQpLCByZWQsIGdyZWVuLCBibHVlLCBnb2xkCiAgICAgICAgdGhpcy5oaWRlRmxhc2ggICAgICAgICAgPSAlczsgICAgIC8vIGNvbnRyb2xzIHdoZXRoZXIgb3Igbm90IEZsYXNoIG9iamVjdHMgc2hvdWxkIGJlIGhpZGRlbgogICAgICAgIHRoaXMub3V0ZXJCb3JkZXIgICAgICAgID0gJXM7ICAgICAvLyBjb250cm9scyB3aGV0aGVyIHRvIHNob3cgdGhlIG91dGVyIGdyZXkgKG9yIHRoZW1lKSBib3JkZXIKICAgICAgICB0aGlzLnJlc2l6ZVNwZWVkICAgICAgICA9ICVkOyAgICAgICAgLy8gY29udHJvbHMgdGhlIHNwZWVkIG9mIHRoZSBpbWFnZSByZXNpemluZyAoMT1zbG93ZXN0IGFuZCAxMD1mYXN0ZXN0KQogICAgICAgIHRoaXMubWF4T3BhY2l0eSAgICAgICAgID0gJWQ7ICAgICAgIC8vIGhpZ2hlciBvcGFjaXR5ID0gZGFya2VyIG92ZXJsYXksIGxvd2VyIG9wYWNpdHkgPSBsaWdodGVyIG92ZXJsYXkKICAgICAgICB0aGlzLm5hdlR5cGUgICAgICAgICAgICA9ICVkOyAgICAgICAgLy8gMSA9ICJQcmV2L05leHQiIGJ1dHRvbnMgb24gdG9wIGxlZnQgYW5kIGxlZnQgKGRlZmF1bHQpLCAyID0gIjw8IHByZXYgfCBuZXh0ID4+IiBsaW5rcyBuZXh0IHRvIGltYWdlIG51bWJlcgogICAgICAgIHRoaXMuYXV0b1Jlc2l6ZSAgICAgICAgID0gJXM7ICAgICAvLyBjb250cm9scyB3aGV0aGVyIG9yIG5vdCBpbWFnZXMgc2hvdWxkIGJlIHJlc2l6ZWQgaWYgbGFyZ2VyIHRoYW4gdGhlIGJyb3dzZXIgd2luZG93IGRpbWVuc2lvbnMKICAgICAgICB0aGlzLmRvQW5pbWF0aW9ucyAgICAgICA9ICVzOyAgICAgLy8gY29udHJvbHMgd2hldGhlciBvciBub3QgImFuaW1hdGUiIEx5dGVib3gsIGkuZS4gcmVzaXplIHRyYW5zaXRpb24gYmV0d2VlbiBpbWFnZXMsIGZhZGUgaW4vb3V0IGVmZmVjdHMsIGV0Yy4KICAgICAgICB0aGlzLmJvcmRlclNpemUgICAgICAgICA9ICVkOyAgICAgICAvLyBpZiB5b3UgYWRqdXN0IHRoZSBwYWRkaW5nIGluIHRoZSBDU1MsIHlvdSB3aWxsIG5lZWQgdG8gdXBkYXRlIHRoaXMgdmFyaWFibGUgLS0gb3RoZXJ3aXNlLCBsZWF2ZSB0aGlzIGFsb25lLi4uCiAgICAvKioqIEVuZCBHbG9iYWwgQ29uZmlndXJhdGlvbiAqKiovCgogICAgLyoqKiBDb25maWd1cmUgU2xpZGVzaG93IE9wdGlvbnMgKioqLwogICAgICAgIHRoaXMuc2xpZGVJbnRlcnZhbCAgICAgID0gJWQ7ICAgICAvLyBDaGFuZ2UgdmFsdWUgKG1pbGxpc2Vjb25kcykgdG8gaW5jcmVhc2UvZGVjcmVhc2UgdGhlIHRpbWUgYmV0d2VlbiAic2xpZGVzIiAoMTAwMDAgPSAxMCBzZWNvbmRzKQogICAgICAgIHRoaXMuc2hvd05hdmlnYXRpb24gICAgID0gJXM7ICAgICAvLyB0cnVlIHRvIGRpc3BsYXkgTmV4dC9QcmV2IGJ1dHRvbnMvdGV4dCBkdXJpbmcgc2xpZGVzaG93LCBmYWxzZSB0byBoaWRlCiAgICAgICAgdGhpcy5zaG93Q2xvc2UgICAgICAgICAgPSAlczsgICAgIC8vIHRydWUgdG8gZGlzcGxheSB0aGUgQ2xvc2UgYnV0dG9uLCBmYWxzZSB0byBoaWRlCiAgICAgICAgdGhpcy5zaG93RGV0YWlscyAgICAgICAgPSAlczsgICAgIC8vIHRydWUgdG8gZGlzcGxheSBpbWFnZSBkZXRhaWxzIChjYXB0aW9uLCBjb3VudCksIGZhbHNlIHRvIGhpZGUKICAgICAgICB0aGlzLnNob3dQbGF5UGF1c2UgICAgICA9ICVzOyAgICAgLy8gdHJ1ZSB0byBkaXNwbGF5IHBhdXNlL3BsYXkgYnV0dG9ucyBuZXh0IHRvIGNsb3NlIGJ1dHRvbiwgZmFsc2UgdG8gaGlkZQogICAgICAgIHRoaXMuYXV0b0VuZCAgICAgICAgICAgID0gJXM7ICAgICAvLyB0cnVlIHRvIGF1dG9tYXRpY2FsbHkgY2xvc2UgTHl0ZWJveCBhZnRlciB0aGUgbGFzdCBpbWFnZSBpcyByZWFjaGVkLCBmYWxzZSB0byBrZWVwIG9wZW4KICAgICAgICB0aGlzLnBhdXNlT25OZXh0Q2xpY2sgICA9ICVzOyAgICAvLyB0cnVlIHRvIHBhdXNlIHRoZSBzbGlkZXNob3cgd2hlbiB0aGUgIk5leHQiIGJ1dHRvbiBpcyBjbGlja2VkCiAgICAgICAgdGhpcy5wYXVzZU9uUHJldkNsaWNrICAgPSAlczsgICAgIC8vIHRydWUgdG8gcGF1c2UgdGhlIHNsaWRlc2hvdyB3aGVuIHRoZSAiUHJldiIgYnV0dG9uIGlzIGNsaWNrZWQKICAgIC8qKiogRW5kIFNsaWRlc2hvdyBDb25maWd1cmF0aW9uICoqKi8KCiAgICBpZih0aGlzLnJlc2l6ZVNwZWVkID4gMTApIHsgdGhpcy5yZXNpemVTcGVlZCA9IDEwOyB9CiAgICBpZih0aGlzLnJlc2l6ZVNwZWVkIDwgMSkgeyByZXNpemVTcGVlZCA9IDE7IH0KICAgIHRoaXMucmVzaXplRHVyYXRpb24gPSAoMTEgLSB0aGlzLnJlc2l6ZVNwZWVkKSAqIDAuMTU7CiAgICB0aGlzLnJlc2l6ZVdUaW1lckFycmF5ICAgICAgPSBuZXcgQXJyYXkoKTsKICAgIHRoaXMucmVzaXplV1RpbWVyQ291bnQgICAgICA9IDA7CiAgICB0aGlzLnJlc2l6ZUhUaW1lckFycmF5ICAgICAgPSBuZXcgQXJyYXkoKTsKICAgIHRoaXMucmVzaXplSFRpbWVyQ291bnQgICAgICA9IDA7CiAgICB0aGlzLnNob3dDb250ZW50VGltZXJBcnJheSAgPSBuZXcgQXJyYXkoKTsKICAgIHRoaXMuc2hvd0NvbnRlbnRUaW1lckNvdW50ICA9IDA7CiAgICB0aGlzLm92ZXJsYXlUaW1lckFycmF5ICAgICAgPSBuZXcgQXJyYXkoKTsKICAgIHRoaXMub3ZlcmxheVRpbWVyQ291bnQgICAgICA9IDA7CiAgICB0aGlzLmltYWdlVGltZXJBcnJheSAgICAgICAgPSBuZXcgQXJyYXkoKTsKICAgIHRoaXMuaW1hZ2VUaW1lckNvdW50ICAgICAgICA9IDA7CiAgICB0aGlzLnRpbWVySURBcnJheSAgICAgICAgICAgPSBuZXcgQXJyYXkoKTsKICAgIHRoaXMudGltZXJJRENvdW50ICAgICAgICAgICA9IDA7CiAgICB0aGlzLnNsaWRlc2hvd0lEQXJyYXkgICAgICAgPSBuZXcgQXJyYXkoKTsKICAgIHRoaXMuc2xpZGVzaG93SURDb3VudCAgICAgICA9IDA7CiAgICB0aGlzLmltYWdlQXJyYXkgID0gbmV3IEFycmF5KCk7CiAgICB0aGlzLmFjdGl2ZUltYWdlID0gbnVsbDsKICAgIHRoaXMuc2xpZGVBcnJheSAgPSBuZXcgQXJyYXkoKTsKICAgIHRoaXMuYWN0aXZlU2xpZGUgPSBudWxsOwogICAgdGhpcy5mcmFtZUFycmF5ICA9IG5ldyBBcnJheSgpOwogICAgdGhpcy5hY3RpdmVGcmFtZSA9IG51bGw7CiAgICB0aGlzLmNoZWNrRnJhbWUoKTsKICAgIHRoaXMuaXNTbGlkZXNob3cgPSBmYWxzZTsKICAgIHRoaXMuaXNMeXRlZnJhbWUgPSBmYWxzZTsKICAgIC8qQGNjX29uCiAgICAgICAgLypAaWYgKEBfanNjcmlwdCkKICAgICAgICAgICAgdGhpcy5pZSA9IChkb2N1bWVudC5hbGwgJiYgIXdpbmRvdy5vcGVyYSkgPyB0cnVlIDogZmFsc2U7CiAgICAgICAgLypAZWxzZSBAKi8KICAgICAgICAgICAgdGhpcy5pZSA9IGZhbHNlOwogICAgICAgIC8qQGVuZAogICAgQCovCiAgICB0aGlzLmllNyA9ICh0aGlzLmllICYmIHdpbmRvdy5YTUxIdHRwUmVxdWVzdCk7CiAgICB0aGlzLmluaXRpYWxpemUoKTsKfQpMeXRlQm94LnByb3RvdHlwZS5pbml0aWFsaXplID0gZnVuY3Rpb24oKSB7CiAgICB0aGlzLnVwZGF0ZUx5dGVib3hJdGVtcygpOwogICAgdmFyIG9iakJvZHkgPSB0aGlzLmRvYy5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpLml0ZW0oMCk7CiAgICBpZiAodGhpcy5kb2MuZ2V0RWxlbWVudEJ5SWQoJ2xiT3ZlcmxheScpKSB7CiAgICAgICAgb2JqQm9keS5yZW1vdmVDaGlsZCh0aGlzLmRvYy5nZXRFbGVtZW50QnlJZCgibGJPdmVybGF5IikpOwogICAgICAgIG9iakJvZHkucmVtb3ZlQ2hpbGQodGhpcy5kb2MuZ2V0RWxlbWVudEJ5SWQoImxiTWFpbiIpKTsKICAgIH0KICAgIHZhciBvYmpPdmVybGF5ID0gdGhpcy5kb2MuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAgICAgb2JqT3ZlcmxheS5zZXRBdHRyaWJ1dGUoJ2lkJywnbGJPdmVybGF5Jyk7CiAgICAgICAgb2JqT3ZlcmxheS5zZXRBdHRyaWJ1dGUoKHRoaXMuaWUgPyAnY2xhc3NOYW1lJyA6ICdjbGFzcycpLCB0aGlzLnRoZW1lKTsKICAgICAgICBpZiAoKHRoaXMuaWUgJiYgIXRoaXMuaWU3KSB8fCAodGhpcy5pZTcgJiYgdGhpcy5kb2MuY29tcGF0TW9kZSA9PSAnQmFja0NvbXBhdCcpKSB7CiAgICAgICAgICAgIG9iak92ZXJsYXkuc3R5bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnOwogICAgICAgIH0KICAgICAgICBvYmpPdmVybGF5LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICAgICAgb2JqQm9keS5hcHBlbmRDaGlsZChvYmpPdmVybGF5KTsKICAgIHZhciBvYmpMeXRlYm94ID0gdGhpcy5kb2MuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAgICAgb2JqTHl0ZWJveC5zZXRBdHRyaWJ1dGUoJ2lkJywnbGJNYWluJyk7CiAgICAgICAgb2JqTHl0ZWJveC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwogICAgICAgIG9iakJvZHkuYXBwZW5kQ2hpbGQob2JqTHl0ZWJveCk7CiAgICB2YXIgb2JqT3V0ZXJDb250YWluZXIgPSB0aGlzLmRvYy5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgICAgICBvYmpPdXRlckNvbnRhaW5lci5zZXRBdHRyaWJ1dGUoJ2lkJywnbGJPdXRlckNvbnRhaW5lcicpOwogICAgICAgIG9iak91dGVyQ29udGFpbmVyLnNldEF0dHJpYnV0ZSgodGhpcy5pZSA/ICdjbGFzc05hbWUnIDogJ2NsYXNzJyksIHRoaXMudGhlbWUpOwogICAgICAgIG9iakx5dGVib3guYXBwZW5kQ2hpbGQob2JqT3V0ZXJDb250YWluZXIpOwogICAgdmFyIG9iaklmcmFtZUNvbnRhaW5lciA9IHRoaXMuZG9jLmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgICAgIG9iaklmcmFtZUNvbnRhaW5lci5zZXRBdHRyaWJ1dGUoJ2lkJywnbGJJZnJhbWVDb250YWluZXInKTsKICAgICAgICBvYmpJZnJhbWVDb250YWluZXIuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKICAgICAgICBvYmpPdXRlckNvbnRhaW5lci5hcHBlbmRDaGlsZChvYmpJZnJhbWVDb250YWluZXIpOwogICAgdmFyIG9iaklmcmFtZSA9IHRoaXMuZG9jLmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpOwogICAgICAgIG9iaklmcmFtZS5zZXRBdHRyaWJ1dGUoJ2lkJywnbGJJZnJhbWUnKTsKICAgICAgICBvYmpJZnJhbWUuc2V0QXR0cmlidXRlKCduYW1lJywnbGJJZnJhbWUnKTsKICAgICAgICBvYmpJZnJhbWUuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKICAgICAgICBvYmpJZnJhbWVDb250YWluZXIuYXBwZW5kQ2hpbGQob2JqSWZyYW1lKTsKICAgIHZhciBvYmpJbWFnZUNvbnRhaW5lciA9IHRoaXMuZG9jLmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgICAgIG9iakltYWdlQ29udGFpbmVyLnNldEF0dHJpYnV0ZSgnaWQnLCdsYkltYWdlQ29udGFpbmVyJyk7CiAgICAgICAgb2JqT3V0ZXJDb250YWluZXIuYXBwZW5kQ2hpbGQob2JqSW1hZ2VDb250YWluZXIpOwogICAgdmFyIG9iakx5dGVib3hJbWFnZSA9IHRoaXMuZG9jLmNyZWF0ZUVsZW1lbnQoImltZyIpOwogICAgICAgIG9iakx5dGVib3hJbWFnZS5zZXRBdHRyaWJ1dGUoJ2lkJywnbGJJbWFnZScpOwogICAgICAgIG9iakltYWdlQ29udGFpbmVyLmFwcGVuZENoaWxkKG9iakx5dGVib3hJbWFnZSk7CiAgICB2YXIgb2JqTG9hZGluZyA9IHRoaXMuZG9jLmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgICAgIG9iakxvYWRpbmcuc2V0QXR0cmlidXRlKCdpZCcsJ2xiTG9hZGluZycpOwogICAgICAgIG9iak91dGVyQ29udGFpbmVyLmFwcGVuZENoaWxkKG9iakxvYWRpbmcpOwogICAgdmFyIG9iakRldGFpbHNDb250YWluZXIgPSB0aGlzLmRvYy5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgICAgICBvYmpEZXRhaWxzQ29udGFpbmVyLnNldEF0dHJpYnV0ZSgnaWQnLCdsYkRldGFpbHNDb250YWluZXInKTsKICAgICAgICBvYmpEZXRhaWxzQ29udGFpbmVyLnNldEF0dHJpYnV0ZSgodGhpcy5pZSA/ICdjbGFzc05hbWUnIDogJ2NsYXNzJyksIHRoaXMudGhlbWUpOwogICAgICAgIG9iakx5dGVib3guYXBwZW5kQ2hpbGQob2JqRGV0YWlsc0NvbnRhaW5lcik7CiAgICB2YXIgb2JqRGV0YWlsc0RhdGEgPXRoaXMuZG9jLmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgICAgIG9iakRldGFpbHNEYXRhLnNldEF0dHJpYnV0ZSgnaWQnLCdsYkRldGFpbHNEYXRhJyk7CiAgICAgICAgb2JqRGV0YWlsc0RhdGEuc2V0QXR0cmlidXRlKCh0aGlzLmllID8gJ2NsYXNzTmFtZScgOiAnY2xhc3MnKSwgdGhpcy50aGVtZSk7CiAgICAgICAgb2JqRGV0YWlsc0NvbnRhaW5lci5hcHBlbmRDaGlsZChvYmpEZXRhaWxzRGF0YSk7CiAgICB2YXIgb2JqRGV0YWlscyA9IHRoaXMuZG9jLmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgICAgIG9iakRldGFpbHMuc2V0QXR0cmlidXRlKCdpZCcsJ2xiRGV0YWlscycpOwogICAgICAgIG9iakRldGFpbHNEYXRhLmFwcGVuZENoaWxkKG9iakRldGFpbHMpOwogICAgdmFyIG9iakNhcHRpb24gPSB0aGlzLmRvYy5jcmVhdGVFbGVtZW50KCJzcGFuIik7CiAgICAgICAgb2JqQ2FwdGlvbi5zZXRBdHRyaWJ1dGUoJ2lkJywnbGJDYXB0aW9uJyk7CiAgICAgICAgb2JqRGV0YWlscy5hcHBlbmRDaGlsZChvYmpDYXB0aW9uKTsKICAgIHZhciBvYmpIb3Zlck5hdiA9IHRoaXMuZG9jLmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgICAgIG9iakhvdmVyTmF2LnNldEF0dHJpYnV0ZSgnaWQnLCdsYkhvdmVyTmF2Jyk7CiAgICAgICAgb2JqSW1hZ2VDb250YWluZXIuYXBwZW5kQ2hpbGQob2JqSG92ZXJOYXYpOwogICAgdmFyIG9iakJvdHRvbU5hdiA9IHRoaXMuZG9jLmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgICAgIG9iakJvdHRvbU5hdi5zZXRBdHRyaWJ1dGUoJ2lkJywnbGJCb3R0b21OYXYnKTsKICAgICAgICBvYmpEZXRhaWxzRGF0YS5hcHBlbmRDaGlsZChvYmpCb3R0b21OYXYpOwogICAgdmFyIG9ialByZXYgPSB0aGlzLmRvYy5jcmVhdGVFbGVtZW50KCJhIik7CiAgICAgICAgb2JqUHJldi5zZXRBdHRyaWJ1dGUoJ2lkJywnbGJQcmV2Jyk7CiAgICAgICAgb2JqUHJldi5zZXRBdHRyaWJ1dGUoKHRoaXMuaWUgPyAnY2xhc3NOYW1lJyA6ICdjbGFzcycpLCB0aGlzLnRoZW1lKTsKICAgICAgICBvYmpQcmV2LnNldEF0dHJpYnV0ZSgnaHJlZicsJyMnKTsKICAgICAgICBvYmpIb3Zlck5hdi5hcHBlbmRDaGlsZChvYmpQcmV2KTsKICAgIHZhciBvYmpOZXh0ID0gdGhpcy5kb2MuY3JlYXRlRWxlbWVudCgiYSIpOwogICAgICAgIG9iak5leHQuc2V0QXR0cmlidXRlKCdpZCcsJ2xiTmV4dCcpOwogICAgICAgIG9iak5leHQuc2V0QXR0cmlidXRlKCh0aGlzLmllID8gJ2NsYXNzTmFtZScgOiAnY2xhc3MnKSwgdGhpcy50aGVtZSk7CiAgICAgICAgb2JqTmV4dC5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCcjJyk7CiAgICAgICAgb2JqSG92ZXJOYXYuYXBwZW5kQ2hpbGQob2JqTmV4dCk7CiAgICB2YXIgb2JqTnVtYmVyRGlzcGxheSA9IHRoaXMuZG9jLmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKICAgICAgICBvYmpOdW1iZXJEaXNwbGF5LnNldEF0dHJpYnV0ZSgnaWQnLCdsYk51bWJlckRpc3BsYXknKTsKICAgICAgICBvYmpEZXRhaWxzLmFwcGVuZENoaWxkKG9iak51bWJlckRpc3BsYXkpOwogICAgdmFyIG9iak5hdkRpc3BsYXkgPSB0aGlzLmRvYy5jcmVhdGVFbGVtZW50KCJzcGFuIik7CiAgICAgICAgb2JqTmF2RGlzcGxheS5zZXRBdHRyaWJ1dGUoJ2lkJywnbGJOYXZEaXNwbGF5Jyk7CiAgICAgICAgb2JqTmF2RGlzcGxheS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwogICAgICAgIG9iakRldGFpbHMuYXBwZW5kQ2hpbGQob2JqTmF2RGlzcGxheSk7CiAgICB2YXIgb2JqQ2xvc2UgPSB0aGlzLmRvYy5jcmVhdGVFbGVtZW50KCJhIik7CiAgICAgICAgb2JqQ2xvc2Uuc2V0QXR0cmlidXRlKCdpZCcsJ2xiQ2xvc2UnKTsKICAgICAgICBvYmpDbG9zZS5zZXRBdHRyaWJ1dGUoKHRoaXMuaWUgPyAnY2xhc3NOYW1lJyA6ICdjbGFzcycpLCB0aGlzLnRoZW1lKTsKICAgICAgICBvYmpDbG9zZS5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCcjJyk7CiAgICAgICAgb2JqQm90dG9tTmF2LmFwcGVuZENoaWxkKG9iakNsb3NlKTsKICAgIHZhciBvYmpQYXVzZSA9IHRoaXMuZG9jLmNyZWF0ZUVsZW1lbnQoImEiKTsKICAgICAgICBvYmpQYXVzZS5zZXRBdHRyaWJ1dGUoJ2lkJywnbGJQYXVzZScpOwogICAgICAgIG9ialBhdXNlLnNldEF0dHJpYnV0ZSgodGhpcy5pZSA/ICdjbGFzc05hbWUnIDogJ2NsYXNzJyksIHRoaXMudGhlbWUpOwogICAgICAgIG9ialBhdXNlLnNldEF0dHJpYnV0ZSgnaHJlZicsJyMnKTsKICAgICAgICBvYmpQYXVzZS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwogICAgICAgIG9iakJvdHRvbU5hdi5hcHBlbmRDaGlsZChvYmpQYXVzZSk7CiAgICB2YXIgb2JqUGxheSA9IHRoaXMuZG9jLmNyZWF0ZUVsZW1lbnQoImEiKTsKICAgICAgICBvYmpQbGF5LnNldEF0dHJpYnV0ZSgnaWQnLCdsYlBsYXknKTsKICAgICAgICBvYmpQbGF5LnNldEF0dHJpYnV0ZSgodGhpcy5pZSA/ICdjbGFzc05hbWUnIDogJ2NsYXNzJyksIHRoaXMudGhlbWUpOwogICAgICAgIG9ialBsYXkuc2V0QXR0cmlidXRlKCdocmVmJywnIycpOwogICAgICAgIG9ialBsYXkuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKICAgICAgICBvYmpCb3R0b21OYXYuYXBwZW5kQ2hpbGQob2JqUGxheSk7Cn07Ckx5dGVCb3gucHJvdG90eXBlLnVwZGF0ZUx5dGVib3hJdGVtcyA9IGZ1bmN0aW9uKCkgewogICAgdmFyIGFuY2hvcnMgPSAodGhpcy5pc0ZyYW1lKSA/IHdpbmRvdy5wYXJlbnQuZnJhbWVzW3dpbmRvdy5uYW1lXS5kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnYScpIDogZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2EnKTsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYW5jaG9ycy5sZW5ndGg7IGkrKykgewogICAgICAgIHZhciBhbmNob3IgPSBhbmNob3JzW2ldOwogICAgICAgIHZhciByZWxBdHRyaWJ1dGUgPSBTdHJpbmcoYW5jaG9yLmdldEF0dHJpYnV0ZSgncmVsJykpOwogICAgICAgIGlmIChhbmNob3IuZ2V0QXR0cmlidXRlKCdocmVmJykpIHsKICAgICAgICAgICAgaWYgKHJlbEF0dHJpYnV0ZS50b0xvd2VyQ2FzZSgpLm1hdGNoKCdseXRlYm94JykpIHsKICAgICAgICAgICAgICAgIGFuY2hvci5vbmNsaWNrID0gZnVuY3Rpb24gKCkgeyBteUx5dGVib3guc3RhcnQodGhpcywgZmFsc2UsIGZhbHNlKTsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgICAgIH0gZWxzZSBpZiAocmVsQXR0cmlidXRlLnRvTG93ZXJDYXNlKCkubWF0Y2goJ2x5dGVzaG93JykpIHsKICAgICAgICAgICAgICAgIGFuY2hvci5vbmNsaWNrID0gZnVuY3Rpb24gKCkgeyBteUx5dGVib3guc3RhcnQodGhpcywgdHJ1ZSwgZmFsc2UpOyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgICAgfSBlbHNlIGlmIChyZWxBdHRyaWJ1dGUudG9Mb3dlckNhc2UoKS5tYXRjaCgnbHl0ZWZyYW1lJykpIHsKICAgICAgICAgICAgICAgIGFuY2hvci5vbmNsaWNrID0gZnVuY3Rpb24gKCkgeyBteUx5dGVib3guc3RhcnQodGhpcywgZmFsc2UsIHRydWUpOyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KfTsKTHl0ZUJveC5wcm90b3R5cGUuc3RhcnQgPSBmdW5jdGlvbihpbWFnZUxpbmssIGRvU2xpZGUsIGRvRnJhbWUpIHsKICAgIGlmICh0aGlzLmllICYmICF0aGlzLmllNykgeyB0aGlzLnRvZ2dsZVNlbGVjdHMoJ2hpZGUnKTsgfQogICAgaWYgKHRoaXMuaGlkZUZsYXNoKSB7IHRoaXMudG9nZ2xlRmxhc2goJ2hpZGUnKTsgfQogICAgdGhpcy5pc0x5dGVmcmFtZSA9IChkb0ZyYW1lID8gdHJ1ZSA6IGZhbHNlKTsKICAgIHZhciBwYWdlU2l6ZSAgICA9IHRoaXMuZ2V0UGFnZVNpemUoKTsKICAgIHZhciBvYmpPdmVybGF5ICA9IHRoaXMuZG9jLmdldEVsZW1lbnRCeUlkKCdsYk92ZXJsYXknKTsKICAgIHZhciBvYmpCb2R5ICAgICA9IHRoaXMuZG9jLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IikuaXRlbSgwKTsKICAgIG9iak92ZXJsYXkuc3R5bGUuaGVpZ2h0ID0gcGFnZVNpemVbMV0gKyAicHgiOwogICAgb2JqT3ZlcmxheS5zdHlsZS5kaXNwbGF5ID0gJyc7CiAgICB0aGlzLmFwcGVhcignbGJPdmVybGF5JywgKHRoaXMuZG9BbmltYXRpb25zID8gMCA6IHRoaXMubWF4T3BhY2l0eSkpOwogICAgdmFyIGFuY2hvcnMgPSAodGhpcy5pc0ZyYW1lKSA/IHdpbmRvdy5wYXJlbnQuZnJhbWVzW3dpbmRvdy5uYW1lXS5kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnYScpIDogZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2EnKTsKICAgIGlmICh0aGlzLmlzTHl0ZWZyYW1lKSB7CiAgICAgICAgdGhpcy5mcmFtZUFycmF5ID0gW107CiAgICAgICAgdGhpcy5mcmFtZU51bSA9IDA7CiAgICAgICAgaWYgKChpbWFnZUxpbmsuZ2V0QXR0cmlidXRlKCdyZWwnKSA9PSAnbHl0ZWZyYW1lJykpIHsKICAgICAgICAgICAgdmFyIHJldiA9IGltYWdlTGluay5nZXRBdHRyaWJ1dGUoJ3JldicpOwogICAgICAgICAgICB0aGlzLmZyYW1lQXJyYXkucHVzaChuZXcgQXJyYXkoaW1hZ2VMaW5rLmdldEF0dHJpYnV0ZSgnaHJlZicpLCBpbWFnZUxpbmsuZ2V0QXR0cmlidXRlKCd0aXRsZScpLCAocmV2ID09IG51bGwgfHwgcmV2ID09ICcnID8gJ3dpZHRoOiA0MDBweDsgaGVpZ2h0OiA0MDBweDsgc2Nyb2xsaW5nOiBhdXRvOycgOiByZXYpKSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgaWYgKGltYWdlTGluay5nZXRBdHRyaWJ1dGUoJ3JlbCcpLmluZGV4T2YoJ2x5dGVmcmFtZScpICE9IC0xKSB7CiAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFuY2hvcnMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgICAgICB2YXIgYW5jaG9yID0gYW5jaG9yc1tpXTsKICAgICAgICAgICAgICAgICAgICBpZiAoYW5jaG9yLmdldEF0dHJpYnV0ZSgnaHJlZicpICYmIChhbmNob3IuZ2V0QXR0cmlidXRlKCdyZWwnKSA9PSBpbWFnZUxpbmsuZ2V0QXR0cmlidXRlKCdyZWwnKSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJldiA9IGFuY2hvci5nZXRBdHRyaWJ1dGUoJ3JldicpOwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZyYW1lQXJyYXkucHVzaChuZXcgQXJyYXkoYW5jaG9yLmdldEF0dHJpYnV0ZSgnaHJlZicpLCBhbmNob3IuZ2V0QXR0cmlidXRlKCd0aXRsZScpLCAocmV2ID09IG51bGwgfHwgcmV2ID09ICcnID8gJ3dpZHRoOiA0MDBweDsgaGVpZ2h0OiA0MDBweDsgc2Nyb2xsaW5nOiBhdXRvOycgOiByZXYpKSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdGhpcy5mcmFtZUFycmF5LnJlbW92ZUR1cGxpY2F0ZXMoKTsKICAgICAgICAgICAgICAgIHdoaWxlKHRoaXMuZnJhbWVBcnJheVt0aGlzLmZyYW1lTnVtXVswXSAhPSBpbWFnZUxpbmsuZ2V0QXR0cmlidXRlKCdocmVmJykpIHsgdGhpcy5mcmFtZU51bSsrOyB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9IGVsc2UgewogICAgICAgIHRoaXMuaW1hZ2VBcnJheSA9IFtdOwogICAgICAgIHRoaXMuaW1hZ2VOdW0gPSAwOwogICAgICAgIHRoaXMuc2xpZGVBcnJheSA9IFtdOwogICAgICAgIHRoaXMuc2xpZGVOdW0gPSAwOwogICAgICAgIGlmICgoaW1hZ2VMaW5rLmdldEF0dHJpYnV0ZSgncmVsJykgPT0gJ2x5dGVib3gnKSkgewogICAgICAgICAgICB0aGlzLmltYWdlQXJyYXkucHVzaChuZXcgQXJyYXkoaW1hZ2VMaW5rLmdldEF0dHJpYnV0ZSgnaHJlZicpLCBpbWFnZUxpbmsuZ2V0QXR0cmlidXRlKCd0aXRsZScpKSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgaWYgKGltYWdlTGluay5nZXRBdHRyaWJ1dGUoJ3JlbCcpLmluZGV4T2YoJ2x5dGVib3gnKSAhPSAtMSkgewogICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhbmNob3JzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGFuY2hvciA9IGFuY2hvcnNbaV07CiAgICAgICAgICAgICAgICAgICAgaWYgKGFuY2hvci5nZXRBdHRyaWJ1dGUoJ2hyZWYnKSAmJiAoYW5jaG9yLmdldEF0dHJpYnV0ZSgncmVsJykgPT0gaW1hZ2VMaW5rLmdldEF0dHJpYnV0ZSgncmVsJykpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW1hZ2VBcnJheS5wdXNoKG5ldyBBcnJheShhbmNob3IuZ2V0QXR0cmlidXRlKCdocmVmJyksIGFuY2hvci5nZXRBdHRyaWJ1dGUoJ3RpdGxlJykpKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB0aGlzLmltYWdlQXJyYXkucmVtb3ZlRHVwbGljYXRlcygpOwogICAgICAgICAgICAgICAgd2hpbGUodGhpcy5pbWFnZUFycmF5W3RoaXMuaW1hZ2VOdW1dWzBdICE9IGltYWdlTGluay5nZXRBdHRyaWJ1dGUoJ2hyZWYnKSkgeyB0aGlzLmltYWdlTnVtKys7IH0KICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoaW1hZ2VMaW5rLmdldEF0dHJpYnV0ZSgncmVsJykuaW5kZXhPZignbHl0ZXNob3cnKSAhPSAtMSkgewogICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhbmNob3JzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGFuY2hvciA9IGFuY2hvcnNbaV07CiAgICAgICAgICAgICAgICAgICAgaWYgKGFuY2hvci5nZXRBdHRyaWJ1dGUoJ2hyZWYnKSAmJiAoYW5jaG9yLmdldEF0dHJpYnV0ZSgncmVsJykgPT0gaW1hZ2VMaW5rLmdldEF0dHJpYnV0ZSgncmVsJykpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2xpZGVBcnJheS5wdXNoKG5ldyBBcnJheShhbmNob3IuZ2V0QXR0cmlidXRlKCdocmVmJyksIGFuY2hvci5nZXRBdHRyaWJ1dGUoJ3RpdGxlJykpKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB0aGlzLnNsaWRlQXJyYXkucmVtb3ZlRHVwbGljYXRlcygpOwogICAgICAgICAgICAgICAgd2hpbGUodGhpcy5zbGlkZUFycmF5W3RoaXMuc2xpZGVOdW1dWzBdICE9IGltYWdlTGluay5nZXRBdHRyaWJ1dGUoJ2hyZWYnKSkgeyB0aGlzLnNsaWRlTnVtKys7IH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIHZhciBvYmplY3QgPSB0aGlzLmRvYy5nZXRFbGVtZW50QnlJZCgnbGJNYWluJyk7CiAgICAgICAgb2JqZWN0LnN0eWxlLnRvcCA9ICh0aGlzLmdldFBhZ2VTY3JvbGwoKSArIChwYWdlU2l6ZVszXSAvIDE1KSkgKyAicHgiOwogICAgICAgIG9iamVjdC5zdHlsZS5kaXNwbGF5ID0gJyc7CiAgICBpZiAoIXRoaXMub3V0ZXJCb3JkZXIpIHsKICAgICAgICB0aGlzLmRvYy5nZXRFbGVtZW50QnlJZCgnbGJPdXRlckNvbnRhaW5lcicpLnN0eWxlLmJvcmRlciA9ICdub25lJzsKICAgICAgICB0aGlzLmRvYy5nZXRFbGVtZW50QnlJZCgnbGJEZXRhaWxzQ29udGFpbmVyJykuc3R5bGUuYm9yZGVyID0gJ25vbmUnOwogICAgfSBlbHNlIHsKICAgICAgICB0aGlzLmRvYy5nZXRFbGVtZW50QnlJZCgnbGJPdXRlckNvbnRhaW5lcicpLnN0eWxlLmJvcmRlckJvdHRvbSA9ICcnOwogICAgICAgIHRoaXMuZG9jLmdldEVsZW1lbnRCeUlkKCdsYk91dGVyQ29udGFpbmVyJykuc2V0QXR0cmlidXRlKCh0aGlzLmllID8gJ2NsYXNzTmFtZScgOiAnY2xhc3MnKSwgdGhpcy50aGVtZSk7CiAgICB9CiAgICB0aGlzLmRvYy5nZXRFbGVtZW50QnlJZCgnbGJPdmVybGF5Jykub25jbGljayA9IGZ1bmN0aW9uKCkgeyBteUx5dGVib3guZW5kKCk7IHJldHVybiBmYWxzZTsgfQogICAgdGhpcy5kb2MuZ2V0RWxlbWVudEJ5SWQoJ2xiTWFpbicpLm9uY2xpY2sgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgdmFyIGUgPSBlOwogICAgICAgIGlmICghZSkgewogICAgICAgICAgICBpZiAod2luZG93LnBhcmVudC5mcmFtZXNbd2luZG93Lm5hbWVdICYmIChwYXJlbnQuZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2ZyYW1lc2V0JykubGVuZ3RoIDw9IDApKSB7CiAgICAgICAgICAgICAgICBlID0gd2luZG93LnBhcmVudC53aW5kb3cuZXZlbnQ7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBlID0gd2luZG93LmV2ZW50OwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHZhciBpZCA9IChlLnRhcmdldCA/IGUudGFyZ2V0LmlkIDogZS5zcmNFbGVtZW50LmlkKTsKICAgICAgICBpZiAoaWQgPT0gJ2xiTWFpbicpIHsgbXlMeXRlYm94LmVuZCgpOyByZXR1cm4gZmFsc2U7IH0KICAgIH0KICAgIHRoaXMuZG9jLmdldEVsZW1lbnRCeUlkKCdsYkNsb3NlJykub25jbGljayA9IGZ1bmN0aW9uKCkgeyBteUx5dGVib3guZW5kKCk7IHJldHVybiBmYWxzZTsgfQogICAgdGhpcy5kb2MuZ2V0RWxlbWVudEJ5SWQoJ2xiUGF1c2UnKS5vbmNsaWNrID0gZnVuY3Rpb24oKSB7IG15THl0ZWJveC50b2dnbGVQbGF5UGF1c2UoImxiUGF1c2UiLCAibGJQbGF5Iik7IHJldHVybiBmYWxzZTsgfQogICAgdGhpcy5kb2MuZ2V0RWxlbWVudEJ5SWQoJ2xiUGxheScpLm9uY2xpY2sgPSBmdW5jdGlvbigpIHsgbXlMeXRlYm94LnRvZ2dsZVBsYXlQYXVzZSgibGJQbGF5IiwgImxiUGF1c2UiKTsgcmV0dXJuIGZhbHNlOyB9CiAgICB0aGlzLmlzU2xpZGVzaG93ID0gZG9TbGlkZTsKICAgIHRoaXMuaXNQYXVzZWQgPSAodGhpcy5zbGlkZU51bSAhPSAwID8gdHJ1ZSA6IGZhbHNlKTsKICAgIGlmICh0aGlzLmlzU2xpZGVzaG93ICYmIHRoaXMuc2hvd1BsYXlQYXVzZSAmJiB0aGlzLmlzUGF1c2VkKSB7CiAgICAgICAgdGhpcy5kb2MuZ2V0RWxlbWVudEJ5SWQoJ2xiUGxheScpLnN0eWxlLmRpc3BsYXkgPSAnJzsKICAgICAgICB0aGlzLmRvYy5nZXRFbGVtZW50QnlJZCgnbGJQYXVzZScpLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICB9CiAgICBpZiAodGhpcy5pc0x5dGVmcmFtZSkgewogICAgICAgIHRoaXMuY2hhbmdlQ29udGVudCh0aGlzLmZyYW1lTnVtKTsKICAgIH0gZWxzZSB7CiAgICAgICAgaWYgKHRoaXMuaXNTbGlkZXNob3cpIHsKICAgICAgICAgICAgdGhpcy5jaGFuZ2VDb250ZW50KHRoaXMuc2xpZGVOdW0pOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHRoaXMuY2hhbmdlQ29udGVudCh0aGlzLmltYWdlTnVtKTsKICAgICAgICB9CiAgICB9Cn07Ckx5dGVCb3gucHJvdG90eXBlLmNoYW5nZUNvbnRlbnQgPSBmdW5jdGlvbihpbWFnZU51bSkgewogICAgaWYgKHRoaXMuaXNTbGlkZXNob3cpIHsKICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuc2xpZGVzaG93SURDb3VudDsgaSsrKSB7IHdpbmRvdy5jbGVhclRpbWVvdXQodGhpcy5zbGlkZXNob3dJREFycmF5W2ldKTsgfQogICAgfQogICAgdGhpcy5hY3RpdmVJbWFnZSA9IHRoaXMuYWN0aXZlU2xpZGUgPSB0aGlzLmFjdGl2ZUZyYW1lID0gaW1hZ2VOdW07CiAgICBpZiAoIXRoaXMub3V0ZXJCb3JkZXIpIHsKICAgICAgICB0aGlzLmRvYy5nZXRFbGVtZW50QnlJZCgnbGJPdXRlckNvbnRhaW5lcicpLnN0eWxlLmJvcmRlciA9ICdub25lJzsKICAgICAgICB0aGlzLmRvYy5nZXRFbGVtZW50QnlJZCgnbGJEZXRhaWxzQ29udGFpbmVyJykuc3R5bGUuYm9yZGVyID0gJ25vbmUnOwogICAgfSBlbHNlIHsKICAgICAgICB0aGlzLmRvYy5nZXRFbGVtZW50QnlJZCgnbGJPdXRlckNvbnRhaW5lcicpLnN0eWxlLmJvcmRlckJvdHRvbSA9ICcnOwogICAgICAgIHRoaXMuZG9jLmdldEVsZW1lbnRCeUlkKCdsYk91dGVyQ29udGFpbmVyJykuc2V0QXR0cmlidXRlKCh0aGlzLmllID8gJ2NsYXNzTmFtZScgOiAnY2xhc3MnKSwgdGhpcy50aGVtZSk7CiAgICB9CiAgICB0aGlzLmRvYy5nZXRFbGVtZW50QnlJZCgnbGJMb2FkaW5nJykuc3R5bGUuZGlzcGxheSA9ICcnOwogICAgdGhpcy5kb2MuZ2V0RWxlbWVudEJ5SWQoJ2xiSW1hZ2UnKS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwogICAgdGhpcy5kb2MuZ2V0RWxlbWVudEJ5SWQoJ2xiSWZyYW1lJykuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKICAgIHRoaXMuZG9jLmdldEVsZW1lbnRCeUlkKCdsYlByZXYnKS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwogICAgdGhpcy5kb2MuZ2V0RWxlbWVudEJ5SWQoJ2xiTmV4dCcpLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICB0aGlzLmRvYy5nZXRFbGVtZW50QnlJZCgnbGJJZnJhbWVDb250YWluZXInKS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwogICAgdGhpcy5kb2MuZ2V0RWxlbWVudEJ5SWQoJ2xiRGV0YWlsc0NvbnRhaW5lcicpLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICB0aGlzLmRvYy5nZXRFbGVtZW50QnlJZCgnbGJOdW1iZXJEaXNwbGF5Jykuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKICAgIGlmICh0aGlzLm5hdlR5cGUgPT0gMiB8fCB0aGlzLmlzTHl0ZWZyYW1lKSB7CiAgICAgICAgb2JqZWN0ID0gdGhpcy5kb2MuZ2V0RWxlbWVudEJ5SWQoJ2xiTmF2RGlzcGxheScpOwogICAgICAgIG9iamVjdC5pbm5lckhUTUwgPSAnJm5ic3A7Jm5ic3A7Jm5ic3A7PHNwYW4gaWQ9ImxiUHJldjJfT2ZmIiBzdHlsZT0iZGlzcGxheTogbm9uZTsiIGNsYXNzPSInICsgdGhpcy50aGVtZSArICciPiZsYXF1bzsgcHJldjwvc3Bhbj48YSBocmVmPSIjIiBpZD0ibGJQcmV2MiIgY2xhc3M9IicgKyB0aGlzLnRoZW1lICsgJyIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7Ij4mbGFxdW87IHByZXY8L2E+IDxiIGlkPSJsYlNwYWNlciIgY2xhc3M9IicgKyB0aGlzLnRoZW1lICsgJyI+fHw8L2I+IDxzcGFuIGlkPSJsYk5leHQyX09mZiIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7IiBjbGFzcz0iJyArIHRoaXMudGhlbWUgKyAnIj5uZXh0ICZyYXF1bzs8L3NwYW4+PGEgaHJlZj0iIyIgaWQ9ImxiTmV4dDIiIGNsYXNzPSInICsgdGhpcy50aGVtZSArICciIHN0eWxlPSJkaXNwbGF5OiBub25lOyI+bmV4dCAmcmFxdW87PC9hPic7CiAgICAgICAgb2JqZWN0LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICB9CiAgICBpZiAodGhpcy5pc0x5dGVmcmFtZSkgewogICAgICAgIHZhciBpZnJhbWUgPSBteUx5dGVib3guZG9jLmdldEVsZW1lbnRCeUlkKCdsYklmcmFtZScpOwogICAgICAgIHZhciBzdHlsZXMgPSB0aGlzLmZyYW1lQXJyYXlbdGhpcy5hY3RpdmVGcmFtZV1bMl07CiAgICAgICAgdmFyIGFTdHlsZXMgPSBzdHlsZXMuc3BsaXQoJzsnKTsKICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFTdHlsZXMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgaWYgKGFTdHlsZXNbaV0uaW5kZXhPZignd2lkdGg6JykgPj0gMCkgewogICAgICAgICAgICAgICAgdmFyIHcgPSBhU3R5bGVzW2ldLnJlcGxhY2UoJ3dpZHRoOicsICcnKTsKICAgICAgICAgICAgICAgIGlmcmFtZS53aWR0aCA9IHcudHJpbSgpOwogICAgICAgICAgICB9IGVsc2UgaWYgKGFTdHlsZXNbaV0uaW5kZXhPZignaGVpZ2h0OicpID49IDApIHsKICAgICAgICAgICAgICAgIHZhciBoID0gYVN0eWxlc1tpXS5yZXBsYWNlKCdoZWlnaHQ6JywgJycpOwogICAgICAgICAgICAgICAgaWZyYW1lLmhlaWdodCA9IGgudHJpbSgpOwogICAgICAgICAgICB9IGVsc2UgaWYgKGFTdHlsZXNbaV0uaW5kZXhPZignc2Nyb2xsaW5nOicpID49IDApIHsKICAgICAgICAgICAgICAgIHZhciBzID0gYVN0eWxlc1tpXS5yZXBsYWNlKCdzY3JvbGxpbmc6JywgJycpOwogICAgICAgICAgICAgICAgaWZyYW1lLnNjcm9sbGluZyA9IHMudHJpbSgpOwogICAgICAgICAgICB9IGVsc2UgaWYgKGFTdHlsZXNbaV0uaW5kZXhPZignYm9yZGVyOicpID49IDApIHsKICAgICAgICAgICAgICAgIC8vIE5vdCBpbXBsZW1lbnRlZCB5ZXQsIGFzIHRoZXJlIGFyZSBjcm9zcy1wbGF0Zm9ybSBpc3N1ZXMgd2l0aCBzZXR0aW5nIHRoZSBib3JkZXIgKGZyb20gYSBHVUkgc3RhbmRwb2ludCkKICAgICAgICAgICAgICAgIC8vdmFyIGIgPSBhU3R5bGVzW2ldLnJlcGxhY2UoJ2JvcmRlcjonLCAnJyk7CiAgICAgICAgICAgICAgICAvL2lmcmFtZS5zdHlsZS5ib3JkZXIgPSBiLnRyaW0oKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICB0aGlzLnJlc2l6ZUNvbnRhaW5lcihwYXJzZUludChpZnJhbWUud2lkdGgpLCBwYXJzZUludChpZnJhbWUuaGVpZ2h0KSk7CiAgICB9IGVsc2UgewogICAgICAgIGltZ1ByZWxvYWRlciA9IG5ldyBJbWFnZSgpOwogICAgICAgIGltZ1ByZWxvYWRlci5vbmxvYWQgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIGltYWdlV2lkdGggPSBpbWdQcmVsb2FkZXIud2lkdGg7CiAgICAgICAgICAgIHZhciBpbWFnZUhlaWdodCA9IGltZ1ByZWxvYWRlci5oZWlnaHQ7CiAgICAgICAgICAgIGlmIChteUx5dGVib3guYXV0b1Jlc2l6ZSkgewogICAgICAgICAgICAgICAgdmFyIHBhZ2VzaXplID0gbXlMeXRlYm94LmdldFBhZ2VTaXplKCk7CiAgICAgICAgICAgICAgICB2YXIgeCA9IHBhZ2VzaXplWzJdIC0gMTUwOwogICAgICAgICAgICAgICAgdmFyIHkgPSBwYWdlc2l6ZVszXSAtIDE1MDsKICAgICAgICAgICAgICAgIGlmIChpbWFnZVdpZHRoID4geCkgewogICAgICAgICAgICAgICAgICAgIGltYWdlSGVpZ2h0ID0gTWF0aC5yb3VuZChpbWFnZUhlaWdodCAqICh4IC8gaW1hZ2VXaWR0aCkpOwogICAgICAgICAgICAgICAgICAgIGltYWdlV2lkdGggPSB4OwogICAgICAgICAgICAgICAgICAgIGlmIChpbWFnZUhlaWdodCA+IHkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2VXaWR0aCA9IE1hdGgucm91bmQoaW1hZ2VXaWR0aCAqICh5IC8gaW1hZ2VIZWlnaHQpKTsKICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2VIZWlnaHQgPSB5OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaW1hZ2VIZWlnaHQgPiB5KSB7CiAgICAgICAgICAgICAgICAgICAgaW1hZ2VXaWR0aCA9IE1hdGgucm91bmQoaW1hZ2VXaWR0aCAqICh5IC8gaW1hZ2VIZWlnaHQpKTsKICAgICAgICAgICAgICAgICAgICBpbWFnZUhlaWdodCA9IHk7CiAgICAgICAgICAgICAgICAgICAgaWYgKGltYWdlV2lkdGggPiB4KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlSGVpZ2h0ID0gTWF0aC5yb3VuZChpbWFnZUhlaWdodCAqICh4IC8gaW1hZ2VXaWR0aCkpOwogICAgICAgICAgICAgICAgICAgICAgICBpbWFnZVdpZHRoID0geDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdmFyIGxiSW1hZ2UgPSBteUx5dGVib3guZG9jLmdldEVsZW1lbnRCeUlkKCdsYkltYWdlJykKICAgICAgICAgICAgbGJJbWFnZS5zcmMgPSAobXlMeXRlYm94LmlzU2xpZGVzaG93ID8gbXlMeXRlYm94LnNsaWRlQXJyYXlbbXlMeXRlYm94LmFjdGl2ZVNsaWRlXVswXSA6IG15THl0ZWJveC5pbWFnZUFycmF5W215THl0ZWJveC5hY3RpdmVJbWFnZV1bMF0pOwogICAgICAgICAgICBsYkltYWdlLndpZHRoID0gaW1hZ2VXaWR0aDsKICAgICAgICAgICAgbGJJbWFnZS5oZWlnaHQgPSBpbWFnZUhlaWdodDsKICAgICAgICAgICAgbXlMeXRlYm94LnJlc2l6ZUNvbnRhaW5lcihpbWFnZVdpZHRoLCBpbWFnZUhlaWdodCk7CiAgICAgICAgICAgIGltZ1ByZWxvYWRlci5vbmxvYWQgPSBmdW5jdGlvbigpIHt9OwogICAgICAgIH0KICAgICAgICBpbWdQcmVsb2FkZXIuc3JjID0gKHRoaXMuaXNTbGlkZXNob3cgPyB0aGlzLnNsaWRlQXJyYXlbdGhpcy5hY3RpdmVTbGlkZV1bMF0gOiB0aGlzLmltYWdlQXJyYXlbdGhpcy5hY3RpdmVJbWFnZV1bMF0pOwogICAgfQp9OwpMeXRlQm94LnByb3RvdHlwZS5yZXNpemVDb250YWluZXIgPSBmdW5jdGlvbihpbWdXaWR0aCwgaW1nSGVpZ2h0KSB7CiAgICB0aGlzLndDdXIgPSB0aGlzLmRvYy5nZXRFbGVtZW50QnlJZCgnbGJPdXRlckNvbnRhaW5lcicpLm9mZnNldFdpZHRoOwogICAgdGhpcy5oQ3VyID0gdGhpcy5kb2MuZ2V0RWxlbWVudEJ5SWQoJ2xiT3V0ZXJDb250YWluZXInKS5vZmZzZXRIZWlnaHQ7CiAgICB0aGlzLnhTY2FsZSA9ICgoaW1nV2lkdGggICsgKHRoaXMuYm9yZGVyU2l6ZSAqIDIpKSAvIHRoaXMud0N1cikgKiAxMDA7CiAgICB0aGlzLnlTY2FsZSA9ICgoaW1nSGVpZ2h0ICArICh0aGlzLmJvcmRlclNpemUgKiAyKSkgLyB0aGlzLmhDdXIpICogMTAwOwogICAgdmFyIHdEaWZmID0gKHRoaXMud0N1ciAtIHRoaXMuYm9yZGVyU2l6ZSAqIDIpIC0gaW1nV2lkdGg7CiAgICB2YXIgaERpZmYgPSAodGhpcy5oQ3VyIC0gdGhpcy5ib3JkZXJTaXplICogMikgLSBpbWdIZWlnaHQ7CiAgICBpZiAoIShoRGlmZiA9PSAwKSkgewogICAgICAgIHRoaXMuaERvbmUgPSBmYWxzZTsKICAgICAgICB0aGlzLnJlc2l6ZUgoJ2xiT3V0ZXJDb250YWluZXInLCB0aGlzLmhDdXIsIGltZ0hlaWdodCArIHRoaXMuYm9yZGVyU2l6ZSoyLCB0aGlzLmdldFBpeGVsUmF0ZSh0aGlzLmhDdXIsIGltZ0hlaWdodCkpOwogICAgfSBlbHNlIHsKICAgICAgICB0aGlzLmhEb25lID0gdHJ1ZTsKICAgIH0KICAgIGlmICghKHdEaWZmID09IDApKSB7CiAgICAgICAgdGhpcy53RG9uZSA9IGZhbHNlOwogICAgICAgIHRoaXMucmVzaXplVygnbGJPdXRlckNvbnRhaW5lcicsIHRoaXMud0N1ciwgaW1nV2lkdGggKyB0aGlzLmJvcmRlclNpemUqMiwgdGhpcy5nZXRQaXhlbFJhdGUodGhpcy53Q3VyLCBpbWdXaWR0aCkpOwogICAgfSBlbHNlIHsKICAgICAgICB0aGlzLndEb25lID0gdHJ1ZTsKICAgIH0KICAgIGlmICgoaERpZmYgPT0gMCkgJiYgKHdEaWZmID09IDApKSB7CiAgICAgICAgaWYgKHRoaXMuaWUpeyB0aGlzLnBhdXNlKDI1MCk7IH0gZWxzZSB7IHRoaXMucGF1c2UoMTAwKTsgfQogICAgfQogICAgdGhpcy5kb2MuZ2V0RWxlbWVudEJ5SWQoJ2xiUHJldicpLnN0eWxlLmhlaWdodCA9IGltZ0hlaWdodCArICJweCI7CiAgICB0aGlzLmRvYy5nZXRFbGVtZW50QnlJZCgnbGJOZXh0Jykuc3R5bGUuaGVpZ2h0ID0gaW1nSGVpZ2h0ICsgInB4IjsKICAgIHRoaXMuZG9jLmdldEVsZW1lbnRCeUlkKCdsYkRldGFpbHNDb250YWluZXInKS5zdHlsZS53aWR0aCA9IChpbWdXaWR0aCArICh0aGlzLmJvcmRlclNpemUgKiAyKSArICh0aGlzLmllICYmIHRoaXMuZG9jLmNvbXBhdE1vZGUgPT0gIkJhY2tDb21wYXQiICYmIHRoaXMub3V0ZXJCb3JkZXIgPyAyIDogMCkpICsgInB4IjsKICAgIHRoaXMuc2hvd0NvbnRlbnQoKTsKfTsKTHl0ZUJveC5wcm90b3R5cGUuc2hvd0NvbnRlbnQgPSBmdW5jdGlvbigpIHsKICAgIGlmICh0aGlzLndEb25lICYmIHRoaXMuaERvbmUpIHsKICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuc2hvd0NvbnRlbnRUaW1lckNvdW50OyBpKyspIHsgd2luZG93LmNsZWFyVGltZW91dCh0aGlzLnNob3dDb250ZW50VGltZXJBcnJheVtpXSk7IH0KICAgICAgICBpZiAodGhpcy5vdXRlckJvcmRlcikgewogICAgICAgICAgICB0aGlzLmRvYy5nZXRFbGVtZW50QnlJZCgnbGJPdXRlckNvbnRhaW5lcicpLnN0eWxlLmJvcmRlckJvdHRvbSA9ICdub25lJzsKICAgICAgICB9CiAgICAgICAgdGhpcy5kb2MuZ2V0RWxlbWVudEJ5SWQoJ2xiTG9hZGluZycpLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICAgICAgaWYgKHRoaXMuaXNMeXRlZnJhbWUpIHsKICAgICAgICAgICAgdGhpcy5kb2MuZ2V0RWxlbWVudEJ5SWQoJ2xiSWZyYW1lJykuc3R5bGUuZGlzcGxheSA9ICcnOwogICAgICAgICAgICB0aGlzLmFwcGVhcignbGJJZnJhbWUnLCAodGhpcy5kb0FuaW1hdGlvbnMgPyAwIDogMTAwKSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgdGhpcy5kb2MuZ2V0RWxlbWVudEJ5SWQoJ2xiSW1hZ2UnKS5zdHlsZS5kaXNwbGF5ID0gJyc7CiAgICAgICAgICAgIHRoaXMuYXBwZWFyKCdsYkltYWdlJywgKHRoaXMuZG9BbmltYXRpb25zID8gMCA6IDEwMCkpOwogICAgICAgICAgICB0aGlzLnByZWxvYWROZWlnaGJvckltYWdlcygpOwogICAgICAgIH0KICAgICAgICBpZiAodGhpcy5pc1NsaWRlc2hvdykgewogICAgICAgICAgICBpZih0aGlzLmFjdGl2ZVNsaWRlID09ICh0aGlzLnNsaWRlQXJyYXkubGVuZ3RoIC0gMSkpIHsKICAgICAgICAgICAgICAgIGlmICh0aGlzLmF1dG9FbmQpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLnNsaWRlc2hvd0lEQXJyYXlbdGhpcy5zbGlkZXNob3dJRENvdW50KytdID0gc2V0VGltZW91dCgibXlMeXRlYm94LmVuZCgnc2xpZGVzaG93JykiLCB0aGlzLnNsaWRlSW50ZXJ2YWwpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgaWYgKCF0aGlzLmlzUGF1c2VkKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5zbGlkZXNob3dJREFycmF5W3RoaXMuc2xpZGVzaG93SURDb3VudCsrXSA9IHNldFRpbWVvdXQoIm15THl0ZWJveC5jaGFuZ2VDb250ZW50KCIrKHRoaXMuYWN0aXZlU2xpZGUrMSkrIikiLCB0aGlzLnNsaWRlSW50ZXJ2YWwpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHRoaXMuZG9jLmdldEVsZW1lbnRCeUlkKCdsYkhvdmVyTmF2Jykuc3R5bGUuZGlzcGxheSA9ICh0aGlzLnNob3dOYXZpZ2F0aW9uICYmIHRoaXMubmF2VHlwZSA9PSAxID8gJycgOiAnbm9uZScpOwogICAgICAgICAgICB0aGlzLmRvYy5nZXRFbGVtZW50QnlJZCgnbGJDbG9zZScpLnN0eWxlLmRpc3BsYXkgPSAodGhpcy5zaG93Q2xvc2UgPyAnJyA6ICdub25lJyk7CiAgICAgICAgICAgIHRoaXMuZG9jLmdldEVsZW1lbnRCeUlkKCdsYkRldGFpbHMnKS5zdHlsZS5kaXNwbGF5ID0gKHRoaXMuc2hvd0RldGFpbHMgPyAnJyA6ICdub25lJyk7CiAgICAgICAgICAgIHRoaXMuZG9jLmdldEVsZW1lbnRCeUlkKCdsYlBhdXNlJykuc3R5bGUuZGlzcGxheSA9ICh0aGlzLnNob3dQbGF5UGF1c2UgJiYgIXRoaXMuaXNQYXVzZWQgPyAnJyA6ICdub25lJyk7CiAgICAgICAgICAgIHRoaXMuZG9jLmdldEVsZW1lbnRCeUlkKCdsYlBsYXknKS5zdHlsZS5kaXNwbGF5ID0gKHRoaXMuc2hvd1BsYXlQYXVzZSAmJiAhdGhpcy5pc1BhdXNlZCA/ICdub25lJyA6ICcnKTsKICAgICAgICAgICAgdGhpcy5kb2MuZ2V0RWxlbWVudEJ5SWQoJ2xiTmF2RGlzcGxheScpLnN0eWxlLmRpc3BsYXkgPSAodGhpcy5zaG93TmF2aWdhdGlvbiAmJiB0aGlzLm5hdlR5cGUgPT0gMiA/ICcnIDogJ25vbmUnKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICB0aGlzLmRvYy5nZXRFbGVtZW50QnlJZCgnbGJIb3Zlck5hdicpLnN0eWxlLmRpc3BsYXkgPSAodGhpcy5uYXZUeXBlID09IDEgJiYgIXRoaXMuaXNMeXRlZnJhbWUgPyAnJyA6ICdub25lJyk7CiAgICAgICAgICAgIGlmICgodGhpcy5uYXZUeXBlID09IDIgJiYgIXRoaXMuaXNMeXRlZnJhbWUgJiYgdGhpcy5pbWFnZUFycmF5Lmxlbmd0aCA+IDEpIHx8ICh0aGlzLmZyYW1lQXJyYXkubGVuZ3RoID4gMSAmJiB0aGlzLmlzTHl0ZWZyYW1lKSkgewogICAgICAgICAgICAgICAgdGhpcy5kb2MuZ2V0RWxlbWVudEJ5SWQoJ2xiTmF2RGlzcGxheScpLnN0eWxlLmRpc3BsYXkgPSAnJzsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHRoaXMuZG9jLmdldEVsZW1lbnRCeUlkKCdsYk5hdkRpc3BsYXknKS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHRoaXMuZG9jLmdldEVsZW1lbnRCeUlkKCdsYkNsb3NlJykuc3R5bGUuZGlzcGxheSA9ICcnOwogICAgICAgICAgICB0aGlzLmRvYy5nZXRFbGVtZW50QnlJZCgnbGJEZXRhaWxzJykuc3R5bGUuZGlzcGxheSA9ICcnOwogICAgICAgICAgICB0aGlzLmRvYy5nZXRFbGVtZW50QnlJZCgnbGJQYXVzZScpLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICAgICAgICAgIHRoaXMuZG9jLmdldEVsZW1lbnRCeUlkKCdsYlBsYXknKS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwogICAgICAgIH0KICAgICAgICB0aGlzLmRvYy5nZXRFbGVtZW50QnlJZCgnbGJJbWFnZUNvbnRhaW5lcicpLnN0eWxlLmRpc3BsYXkgPSAodGhpcy5pc0x5dGVmcmFtZSA/ICdub25lJyA6ICcnKTsKICAgICAgICB0aGlzLmRvYy5nZXRFbGVtZW50QnlJZCgnbGJJZnJhbWVDb250YWluZXInKS5zdHlsZS5kaXNwbGF5ID0gKHRoaXMuaXNMeXRlZnJhbWUgPyAnJyA6ICdub25lJyk7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgdGhpcy5kb2MuZ2V0RWxlbWVudEJ5SWQoJ2xiSWZyYW1lJykuc3JjID0gdGhpcy5mcmFtZUFycmF5W3RoaXMuYWN0aXZlRnJhbWVdWzBdOwogICAgICAgIH0gY2F0Y2goZSkgeyB9CiAgICB9IGVsc2UgewogICAgICAgIHRoaXMuc2hvd0NvbnRlbnRUaW1lckFycmF5W3RoaXMuc2hvd0NvbnRlbnRUaW1lckNvdW50KytdID0gc2V0VGltZW91dCgibXlMeXRlYm94LnNob3dDb250ZW50KCkiLCAyMDApOwogICAgfQp9OwpMeXRlQm94LnByb3RvdHlwZS51cGRhdGVEZXRhaWxzID0gZnVuY3Rpb24oKSB7CiAgICB2YXIgb2JqZWN0ID0gdGhpcy5kb2MuZ2V0RWxlbWVudEJ5SWQoJ2xiQ2FwdGlvbicpOwogICAgdmFyIHNUaXRsZSA9ICh0aGlzLmlzU2xpZGVzaG93ID8gdGhpcy5zbGlkZUFycmF5W3RoaXMuYWN0aXZlU2xpZGVdWzFdIDogKHRoaXMuaXNMeXRlZnJhbWUgPyB0aGlzLmZyYW1lQXJyYXlbdGhpcy5hY3RpdmVGcmFtZV1bMV0gOiB0aGlzLmltYWdlQXJyYXlbdGhpcy5hY3RpdmVJbWFnZV1bMV0pKTsKICAgIG9iamVjdC5zdHlsZS5kaXNwbGF5ID0gJyc7CiAgICBvYmplY3QuaW5uZXJIVE1MID0gKHNUaXRsZSA9PSBudWxsID8gJycgOiBzVGl0bGUpOwogICAgdGhpcy51cGRhdGVOYXYoKTsKICAgIHRoaXMuZG9jLmdldEVsZW1lbnRCeUlkKCdsYkRldGFpbHNDb250YWluZXInKS5zdHlsZS5kaXNwbGF5ID0gJyc7CiAgICBvYmplY3QgPSB0aGlzLmRvYy5nZXRFbGVtZW50QnlJZCgnbGJOdW1iZXJEaXNwbGF5Jyk7CiAgICBpZiAodGhpcy5pc1NsaWRlc2hvdyAmJiB0aGlzLnNsaWRlQXJyYXkubGVuZ3RoID4gMSkgewogICAgICAgIG9iamVjdC5zdHlsZS5kaXNwbGF5ID0gJyc7CiAgICAgICAgb2JqZWN0LmlubmVySFRNTCA9ICJJbWFnZSAiICsgZXZhbCh0aGlzLmFjdGl2ZVNsaWRlICsgMSkgKyAiIG9mICIgKyB0aGlzLnNsaWRlQXJyYXkubGVuZ3RoOwogICAgICAgIHRoaXMuZG9jLmdldEVsZW1lbnRCeUlkKCdsYk5hdkRpc3BsYXknKS5zdHlsZS5kaXNwbGF5ID0gKHRoaXMubmF2VHlwZSA9PSAyICYmIHRoaXMuc2hvd05hdmlnYXRpb24gPyAnJyA6ICdub25lJyk7CiAgICB9IGVsc2UgaWYgKHRoaXMuaW1hZ2VBcnJheS5sZW5ndGggPiAxICYmICF0aGlzLmlzTHl0ZWZyYW1lKSB7CiAgICAgICAgb2JqZWN0LnN0eWxlLmRpc3BsYXkgPSAnJzsKICAgICAgICBvYmplY3QuaW5uZXJIVE1MID0gIkltYWdlICIgKyBldmFsKHRoaXMuYWN0aXZlSW1hZ2UgKyAxKSArICIgb2YgIiArIHRoaXMuaW1hZ2VBcnJheS5sZW5ndGg7CiAgICAgICAgdGhpcy5kb2MuZ2V0RWxlbWVudEJ5SWQoJ2xiTmF2RGlzcGxheScpLnN0eWxlLmRpc3BsYXkgPSAodGhpcy5uYXZUeXBlID09IDIgPyAnJyA6ICdub25lJyk7CiAgICB9IGVsc2UgaWYgKHRoaXMuZnJhbWVBcnJheS5sZW5ndGggPiAxICYmIHRoaXMuaXNMeXRlZnJhbWUpIHsKICAgICAgICBvYmplY3Quc3R5bGUuZGlzcGxheSA9ICcnOwogICAgICAgIG9iamVjdC5pbm5lckhUTUwgPSAiUGFnZSAiICsgZXZhbCh0aGlzLmFjdGl2ZUZyYW1lICsgMSkgKyAiIG9mICIgKyB0aGlzLmZyYW1lQXJyYXkubGVuZ3RoOwogICAgICAgIHRoaXMuZG9jLmdldEVsZW1lbnRCeUlkKCdsYk5hdkRpc3BsYXknKS5zdHlsZS5kaXNwbGF5ID0gJyc7CiAgICB9IGVsc2UgewogICAgICAgIHRoaXMuZG9jLmdldEVsZW1lbnRCeUlkKCdsYk5hdkRpc3BsYXknKS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwogICAgfQogICAgdGhpcy5hcHBlYXIoJ2xiRGV0YWlsc0NvbnRhaW5lcicsICh0aGlzLmRvQW5pbWF0aW9ucyA/IDAgOiAxMDApKTsKfTsKTHl0ZUJveC5wcm90b3R5cGUudXBkYXRlTmF2ID0gZnVuY3Rpb24oKSB7CiAgICBpZiAodGhpcy5pc1NsaWRlc2hvdykgewogICAgICAgIGlmICh0aGlzLmFjdGl2ZVNsaWRlICE9IDApIHsKICAgICAgICAgICAgdmFyIG9iamVjdCA9ICh0aGlzLm5hdlR5cGUgPT0gMiA/IHRoaXMuZG9jLmdldEVsZW1lbnRCeUlkKCdsYlByZXYyJykgOiB0aGlzLmRvYy5nZXRFbGVtZW50QnlJZCgnbGJQcmV2JykpOwogICAgICAgICAgICAgICAgb2JqZWN0LnN0eWxlLmRpc3BsYXkgPSAnJzsKICAgICAgICAgICAgICAgIG9iamVjdC5vbmNsaWNrID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKG15THl0ZWJveC5wYXVzZU9uUHJldkNsaWNrKSB7IG15THl0ZWJveC50b2dnbGVQbGF5UGF1c2UoImxiUGF1c2UiLCAibGJQbGF5Iik7IH0KICAgICAgICAgICAgICAgICAgICBteUx5dGVib3guY2hhbmdlQ29udGVudChteUx5dGVib3guYWN0aXZlU2xpZGUgLSAxKTsgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGlmICh0aGlzLm5hdlR5cGUgPT0gMikgeyB0aGlzLmRvYy5nZXRFbGVtZW50QnlJZCgnbGJQcmV2Ml9PZmYnKS5zdHlsZS5kaXNwbGF5ID0gJyc7IH0KICAgICAgICB9CiAgICAgICAgaWYgKHRoaXMuYWN0aXZlU2xpZGUgIT0gKHRoaXMuc2xpZGVBcnJheS5sZW5ndGggLSAxKSkgewogICAgICAgICAgICB2YXIgb2JqZWN0ID0gKHRoaXMubmF2VHlwZSA9PSAyID8gdGhpcy5kb2MuZ2V0RWxlbWVudEJ5SWQoJ2xiTmV4dDInKSA6IHRoaXMuZG9jLmdldEVsZW1lbnRCeUlkKCdsYk5leHQnKSk7CiAgICAgICAgICAgICAgICBvYmplY3Quc3R5bGUuZGlzcGxheSA9ICcnOwogICAgICAgICAgICAgICAgb2JqZWN0Lm9uY2xpY2sgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICBpZiAobXlMeXRlYm94LnBhdXNlT25OZXh0Q2xpY2spIHsgbXlMeXRlYm94LnRvZ2dsZVBsYXlQYXVzZSgibGJQYXVzZSIsICJsYlBsYXkiKTsgfQogICAgICAgICAgICAgICAgICAgIG15THl0ZWJveC5jaGFuZ2VDb250ZW50KG15THl0ZWJveC5hY3RpdmVTbGlkZSArIDEpOyByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgaWYgKHRoaXMubmF2VHlwZSA9PSAyKSB7IHRoaXMuZG9jLmdldEVsZW1lbnRCeUlkKCdsYk5leHQyX09mZicpLnN0eWxlLmRpc3BsYXkgPSAnJzsgfQogICAgICAgIH0KICAgIH0gZWxzZSBpZiAodGhpcy5pc0x5dGVmcmFtZSkgewogICAgICAgIGlmKHRoaXMuYWN0aXZlRnJhbWUgIT0gMCkgewogICAgICAgICAgICB2YXIgb2JqZWN0ID0gdGhpcy5kb2MuZ2V0RWxlbWVudEJ5SWQoJ2xiUHJldjInKTsKICAgICAgICAgICAgICAgIG9iamVjdC5zdHlsZS5kaXNwbGF5ID0gJyc7CiAgICAgICAgICAgICAgICBvYmplY3Qub25jbGljayA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIG15THl0ZWJveC5jaGFuZ2VDb250ZW50KG15THl0ZWJveC5hY3RpdmVGcmFtZSAtIDEpOyByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgdGhpcy5kb2MuZ2V0RWxlbWVudEJ5SWQoJ2xiUHJldjJfT2ZmJykuc3R5bGUuZGlzcGxheSA9ICcnOwogICAgICAgIH0KICAgICAgICBpZih0aGlzLmFjdGl2ZUZyYW1lICE9ICh0aGlzLmZyYW1lQXJyYXkubGVuZ3RoIC0gMSkpIHsKICAgICAgICAgICAgdmFyIG9iamVjdCA9IHRoaXMuZG9jLmdldEVsZW1lbnRCeUlkKCdsYk5leHQyJyk7CiAgICAgICAgICAgICAgICBvYmplY3Quc3R5bGUuZGlzcGxheSA9ICcnOwogICAgICAgICAgICAgICAgb2JqZWN0Lm9uY2xpY2sgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICBteUx5dGVib3guY2hhbmdlQ29udGVudChteUx5dGVib3guYWN0aXZlRnJhbWUgKyAxKTsgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHRoaXMuZG9jLmdldEVsZW1lbnRCeUlkKCdsYk5leHQyX09mZicpLnN0eWxlLmRpc3BsYXkgPSAnJzsKICAgICAgICB9CiAgICB9IGVsc2UgewogICAgICAgIGlmKHRoaXMuYWN0aXZlSW1hZ2UgIT0gMCkgewogICAgICAgICAgICB2YXIgb2JqZWN0ID0gKHRoaXMubmF2VHlwZSA9PSAyID8gdGhpcy5kb2MuZ2V0RWxlbWVudEJ5SWQoJ2xiUHJldjInKSA6IHRoaXMuZG9jLmdldEVsZW1lbnRCeUlkKCdsYlByZXYnKSk7CiAgICAgICAgICAgICAgICBvYmplY3Quc3R5bGUuZGlzcGxheSA9ICcnOwogICAgICAgICAgICAgICAgb2JqZWN0Lm9uY2xpY2sgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICBteUx5dGVib3guY2hhbmdlQ29udGVudChteUx5dGVib3guYWN0aXZlSW1hZ2UgLSAxKTsgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGlmICh0aGlzLm5hdlR5cGUgPT0gMikgeyB0aGlzLmRvYy5nZXRFbGVtZW50QnlJZCgnbGJQcmV2Ml9PZmYnKS5zdHlsZS5kaXNwbGF5ID0gJyc7IH0KICAgICAgICB9CiAgICAgICAgaWYodGhpcy5hY3RpdmVJbWFnZSAhPSAodGhpcy5pbWFnZUFycmF5Lmxlbmd0aCAtIDEpKSB7CiAgICAgICAgICAgIHZhciBvYmplY3QgPSAodGhpcy5uYXZUeXBlID09IDIgPyB0aGlzLmRvYy5nZXRFbGVtZW50QnlJZCgnbGJOZXh0MicpIDogdGhpcy5kb2MuZ2V0RWxlbWVudEJ5SWQoJ2xiTmV4dCcpKTsKICAgICAgICAgICAgICAgIG9iamVjdC5zdHlsZS5kaXNwbGF5ID0gJyc7CiAgICAgICAgICAgICAgICBvYmplY3Qub25jbGljayA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIG15THl0ZWJveC5jaGFuZ2VDb250ZW50KG15THl0ZWJveC5hY3RpdmVJbWFnZSArIDEpOyByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgaWYgKHRoaXMubmF2VHlwZSA9PSAyKSB7IHRoaXMuZG9jLmdldEVsZW1lbnRCeUlkKCdsYk5leHQyX09mZicpLnN0eWxlLmRpc3BsYXkgPSAnJzsgfQogICAgICAgIH0KICAgIH0KICAgIHRoaXMuZW5hYmxlS2V5Ym9hcmROYXYoKTsKfTsKTHl0ZUJveC5wcm90b3R5cGUuZW5hYmxlS2V5Ym9hcmROYXYgPSBmdW5jdGlvbigpIHsgZG9jdW1lbnQub25rZXlkb3duID0gdGhpcy5rZXlib2FyZEFjdGlvbjsgfTsKTHl0ZUJveC5wcm90b3R5cGUuZGlzYWJsZUtleWJvYXJkTmF2ID0gZnVuY3Rpb24oKSB7IGRvY3VtZW50Lm9ua2V5ZG93biA9ICcnOyB9OwpMeXRlQm94LnByb3RvdHlwZS5rZXlib2FyZEFjdGlvbiA9IGZ1bmN0aW9uKGUpIHsKICAgIHZhciBrZXljb2RlID0ga2V5ID0gZXNjYXBlID0gbnVsbDsKICAgIGtleWNvZGUgPSAoZSA9PSBudWxsKSA/IGV2ZW50LmtleUNvZGUgOiBlLndoaWNoOwogICAga2V5ICAgICA9IFN0cmluZy5mcm9tQ2hhckNvZGUoa2V5Y29kZSkudG9Mb3dlckNhc2UoKTsKICAgIGVzY2FwZSAgPSAoZSA9PSBudWxsKSA/IDI3IDogZS5ET01fVktfRVNDQVBFOwogICAgaWYgKChrZXkgPT0gJ3gnKSB8fCAoa2V5ID09ICdjJykgfHwgKGtleWNvZGUgPT0gZXNjYXBlKSkgewogICAgICAgIG15THl0ZWJveC5lbmQoKTsKICAgIH0gZWxzZSBpZiAoKGtleSA9PSAncCcpIHx8IChrZXljb2RlID09IDM3KSkgewogICAgICAgIGlmIChteUx5dGVib3guaXNTbGlkZXNob3cpIHsKICAgICAgICAgICAgaWYobXlMeXRlYm94LmFjdGl2ZVNsaWRlICE9IDApIHsKICAgICAgICAgICAgICAgIG15THl0ZWJveC5kaXNhYmxlS2V5Ym9hcmROYXYoKTsKICAgICAgICAgICAgICAgIG15THl0ZWJveC5jaGFuZ2VDb250ZW50KG15THl0ZWJveC5hY3RpdmVTbGlkZSAtIDEpOwogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIGlmIChteUx5dGVib3guaXNMeXRlZnJhbWUpIHsKICAgICAgICAgICAgaWYobXlMeXRlYm94LmFjdGl2ZUZyYW1lICE9IDApIHsKICAgICAgICAgICAgICAgIG15THl0ZWJveC5kaXNhYmxlS2V5Ym9hcmROYXYoKTsKICAgICAgICAgICAgICAgIG15THl0ZWJveC5jaGFuZ2VDb250ZW50KG15THl0ZWJveC5hY3RpdmVGcmFtZSAtIDEpOwogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgaWYobXlMeXRlYm94LmFjdGl2ZUltYWdlICE9IDApIHsKICAgICAgICAgICAgICAgIG15THl0ZWJveC5kaXNhYmxlS2V5Ym9hcmROYXYoKTsKICAgICAgICAgICAgICAgIG15THl0ZWJveC5jaGFuZ2VDb250ZW50KG15THl0ZWJveC5hY3RpdmVJbWFnZSAtIDEpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfSBlbHNlIGlmICgoa2V5ID09ICduJykgfHwgKGtleWNvZGUgPT0gMzkpKSB7CiAgICAgICAgaWYgKG15THl0ZWJveC5pc1NsaWRlc2hvdykgewogICAgICAgICAgICBpZihteUx5dGVib3guYWN0aXZlU2xpZGUgIT0gKG15THl0ZWJveC5zbGlkZUFycmF5Lmxlbmd0aCAtIDEpKSB7CiAgICAgICAgICAgICAgICBteUx5dGVib3guZGlzYWJsZUtleWJvYXJkTmF2KCk7CiAgICAgICAgICAgICAgICBteUx5dGVib3guY2hhbmdlQ29udGVudChteUx5dGVib3guYWN0aXZlU2xpZGUgKyAxKTsKICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZSBpZiAobXlMeXRlYm94LmlzTHl0ZWZyYW1lKSB7CiAgICAgICAgICAgIGlmKG15THl0ZWJveC5hY3RpdmVGcmFtZSAhPSAobXlMeXRlYm94LmZyYW1lQXJyYXkubGVuZ3RoIC0gMSkpIHsKICAgICAgICAgICAgICAgIG15THl0ZWJveC5kaXNhYmxlS2V5Ym9hcmROYXYoKTsKICAgICAgICAgICAgICAgIG15THl0ZWJveC5jaGFuZ2VDb250ZW50KG15THl0ZWJveC5hY3RpdmVGcmFtZSArIDEpOwogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgaWYobXlMeXRlYm94LmFjdGl2ZUltYWdlICE9IChteUx5dGVib3guaW1hZ2VBcnJheS5sZW5ndGggLSAxKSkgewogICAgICAgICAgICAgICAgbXlMeXRlYm94LmRpc2FibGVLZXlib2FyZE5hdigpOwogICAgICAgICAgICAgICAgbXlMeXRlYm94LmNoYW5nZUNvbnRlbnQobXlMeXRlYm94LmFjdGl2ZUltYWdlICsgMSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9Cn07Ckx5dGVCb3gucHJvdG90eXBlLnByZWxvYWROZWlnaGJvckltYWdlcyA9IGZ1bmN0aW9uKCkgewogICAgaWYgKHRoaXMuaXNTbGlkZXNob3cpIHsKICAgICAgICBpZiAoKHRoaXMuc2xpZGVBcnJheS5sZW5ndGggLSAxKSA+IHRoaXMuYWN0aXZlU2xpZGUpIHsKICAgICAgICAgICAgcHJlbG9hZE5leHRJbWFnZSA9IG5ldyBJbWFnZSgpOwogICAgICAgICAgICBwcmVsb2FkTmV4dEltYWdlLnNyYyA9IHRoaXMuc2xpZGVBcnJheVt0aGlzLmFjdGl2ZVNsaWRlICsgMV1bMF07CiAgICAgICAgfQogICAgICAgIGlmKHRoaXMuYWN0aXZlU2xpZGUgPiAwKSB7CiAgICAgICAgICAgIHByZWxvYWRQcmV2SW1hZ2UgPSBuZXcgSW1hZ2UoKTsKICAgICAgICAgICAgcHJlbG9hZFByZXZJbWFnZS5zcmMgPSB0aGlzLnNsaWRlQXJyYXlbdGhpcy5hY3RpdmVTbGlkZSAtIDFdWzBdOwogICAgICAgIH0KICAgIH0gZWxzZSB7CiAgICAgICAgaWYgKCh0aGlzLmltYWdlQXJyYXkubGVuZ3RoIC0gMSkgPiB0aGlzLmFjdGl2ZUltYWdlKSB7CiAgICAgICAgICAgIHByZWxvYWROZXh0SW1hZ2UgPSBuZXcgSW1hZ2UoKTsKICAgICAgICAgICAgcHJlbG9hZE5leHRJbWFnZS5zcmMgPSB0aGlzLmltYWdlQXJyYXlbdGhpcy5hY3RpdmVJbWFnZSArIDFdWzBdOwogICAgICAgIH0KICAgICAgICBpZih0aGlzLmFjdGl2ZUltYWdlID4gMCkgewogICAgICAgICAgICBwcmVsb2FkUHJldkltYWdlID0gbmV3IEltYWdlKCk7CiAgICAgICAgICAgIHByZWxvYWRQcmV2SW1hZ2Uuc3JjID0gdGhpcy5pbWFnZUFycmF5W3RoaXMuYWN0aXZlSW1hZ2UgLSAxXVswXTsKICAgICAgICB9CiAgICB9Cn07Ckx5dGVCb3gucHJvdG90eXBlLnRvZ2dsZVBsYXlQYXVzZSA9IGZ1bmN0aW9uKGhpZGVJRCwgc2hvd0lEKSB7CiAgICBpZiAodGhpcy5pc1NsaWRlc2hvdyAmJiBoaWRlSUQgPT0gImxiUGF1c2UiKSB7CiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLnNsaWRlc2hvd0lEQ291bnQ7IGkrKykgeyB3aW5kb3cuY2xlYXJUaW1lb3V0KHRoaXMuc2xpZGVzaG93SURBcnJheVtpXSk7IH0KICAgIH0KICAgIHRoaXMuZG9jLmdldEVsZW1lbnRCeUlkKGhpZGVJRCkuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKICAgIHRoaXMuZG9jLmdldEVsZW1lbnRCeUlkKHNob3dJRCkuc3R5bGUuZGlzcGxheSA9ICcnOwogICAgaWYgKGhpZGVJRCA9PSAibGJQbGF5IikgewogICAgICAgIHRoaXMuaXNQYXVzZWQgPSBmYWxzZTsKICAgICAgICBpZiAodGhpcy5hY3RpdmVTbGlkZSA9PSAodGhpcy5zbGlkZUFycmF5Lmxlbmd0aCAtIDEpKSB7CiAgICAgICAgICAgIHRoaXMuZW5kKCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgdGhpcy5jaGFuZ2VDb250ZW50KHRoaXMuYWN0aXZlU2xpZGUgKyAxKTsKICAgICAgICB9CiAgICB9IGVsc2UgewogICAgICAgIHRoaXMuaXNQYXVzZWQgPSB0cnVlOwogICAgfQp9OwpMeXRlQm94LnByb3RvdHlwZS5lbmQgPSBmdW5jdGlvbihjYWxsZXIpIHsKICAgIHZhciBjbG9zZUNsaWNrID0gKGNhbGxlciA9PSAnc2xpZGVzaG93JyA/IGZhbHNlIDogdHJ1ZSk7CiAgICBpZiAodGhpcy5pc1NsaWRlc2hvdyAmJiB0aGlzLmlzUGF1c2VkICYmICFjbG9zZUNsaWNrKSB7IHJldHVybjsgfQogICAgdGhpcy5kaXNhYmxlS2V5Ym9hcmROYXYoKTsKICAgIHRoaXMuZG9jLmdldEVsZW1lbnRCeUlkKCdsYk1haW4nKS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwogICAgdGhpcy5mYWRlKCdsYk92ZXJsYXknLCAodGhpcy5kb0FuaW1hdGlvbnMgPyB0aGlzLm1heE9wYWNpdHkgOiAwKSk7CiAgICB0aGlzLnRvZ2dsZVNlbGVjdHMoJ3Zpc2libGUnKTsKICAgIGlmICh0aGlzLmhpZGVGbGFzaCkgeyB0aGlzLnRvZ2dsZUZsYXNoKCd2aXNpYmxlJyk7IH0KICAgIGlmICh0aGlzLmlzU2xpZGVzaG93KSB7CiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLnNsaWRlc2hvd0lEQ291bnQ7IGkrKykgeyB3aW5kb3cuY2xlYXJUaW1lb3V0KHRoaXMuc2xpZGVzaG93SURBcnJheVtpXSk7IH0KICAgIH0KICAgIGlmICh0aGlzLmlzTHl0ZWZyYW1lKSB7CiAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZSgpOwogICAgfQp9OwpMeXRlQm94LnByb3RvdHlwZS5jaGVja0ZyYW1lID0gZnVuY3Rpb24oKSB7CiAgICBpZiAod2luZG93LnBhcmVudC5mcmFtZXNbd2luZG93Lm5hbWVdICYmIChwYXJlbnQuZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2ZyYW1lc2V0JykubGVuZ3RoIDw9IDApKSB7CiAgICAgICAgdGhpcy5pc0ZyYW1lID0gdHJ1ZTsKICAgICAgICB0aGlzLmx5dGVib3ggPSAid2luZG93LnBhcmVudC4iICsgd2luZG93Lm5hbWUgKyAiLm15THl0ZWJveCI7CiAgICAgICAgdGhpcy5kb2MgPSBwYXJlbnQuZG9jdW1lbnQ7CiAgICB9IGVsc2UgewogICAgICAgIHRoaXMuaXNGcmFtZSA9IGZhbHNlOwogICAgICAgIHRoaXMubHl0ZWJveCA9ICJteUx5dGVib3giOwogICAgICAgIHRoaXMuZG9jID0gZG9jdW1lbnQ7CiAgICB9Cn07Ckx5dGVCb3gucHJvdG90eXBlLmdldFBpeGVsUmF0ZSA9IGZ1bmN0aW9uKGN1ciwgaW1nKSB7CiAgICB2YXIgZGlmZiA9IChpbWcgPiBjdXIpID8gaW1nIC0gY3VyIDogY3VyIC0gaW1nOwogICAgaWYgKGRpZmYgPj0gMCAmJiBkaWZmIDw9IDEwMCkgeyByZXR1cm4gMTA7IH0KICAgIGlmIChkaWZmID4gMTAwICYmIGRpZmYgPD0gMjAwKSB7IHJldHVybiAxNTsgfQogICAgaWYgKGRpZmYgPiAyMDAgJiYgZGlmZiA8PSAzMDApIHsgcmV0dXJuIDIwOyB9CiAgICBpZiAoZGlmZiA+IDMwMCAmJiBkaWZmIDw9IDQwMCkgeyByZXR1cm4gMjU7IH0KICAgIGlmIChkaWZmID4gNDAwICYmIGRpZmYgPD0gNTAwKSB7IHJldHVybiAzMDsgfQogICAgaWYgKGRpZmYgPiA1MDAgJiYgZGlmZiA8PSA2MDApIHsgcmV0dXJuIDM1OyB9CiAgICBpZiAoZGlmZiA+IDYwMCAmJiBkaWZmIDw9IDcwMCkgeyByZXR1cm4gNDA7IH0KICAgIGlmIChkaWZmID4gNzAwKSB7IHJldHVybiA0NTsgfQp9OwpMeXRlQm94LnByb3RvdHlwZS5hcHBlYXIgPSBmdW5jdGlvbihpZCwgb3BhY2l0eSkgewogICAgdmFyIG9iamVjdCA9IHRoaXMuZG9jLmdldEVsZW1lbnRCeUlkKGlkKS5zdHlsZTsKICAgIG9iamVjdC5vcGFjaXR5ID0gKG9wYWNpdHkgLyAxMDApOwogICAgb2JqZWN0Lk1vek9wYWNpdHkgPSAob3BhY2l0eSAvIDEwMCk7CiAgICBvYmplY3QuS2h0bWxPcGFjaXR5ID0gKG9wYWNpdHkgLyAxMDApOwogICAgb2JqZWN0LmZpbHRlciA9ICJhbHBoYShvcGFjaXR5PSIgKyAob3BhY2l0eSArIDEwKSArICIpIjsKICAgIGlmIChvcGFjaXR5ID09IDEwMCAmJiAoaWQgPT0gJ2xiSW1hZ2UnIHx8IGlkID09ICdsYklmcmFtZScpKSB7CiAgICAgICAgdHJ5IHsgb2JqZWN0LnJlbW92ZUF0dHJpYnV0ZSgiZmlsdGVyIik7IH0gY2F0Y2goZSkge30gICAvKiBGaXggYWRkZWQgZm9yIElFIEFscGhhIE9wYWNpdHkgRmlsdGVyIGJ1Zy4gKi8KICAgICAgICB0aGlzLnVwZGF0ZURldGFpbHMoKTsKICAgIH0gZWxzZSBpZiAob3BhY2l0eSA+PSB0aGlzLm1heE9wYWNpdHkgJiYgaWQgPT0gJ2xiT3ZlcmxheScpIHsKICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMub3ZlcmxheVRpbWVyQ291bnQ7IGkrKykgeyB3aW5kb3cuY2xlYXJUaW1lb3V0KHRoaXMub3ZlcmxheVRpbWVyQXJyYXlbaV0pOyB9CiAgICAgICAgcmV0dXJuOwogICAgfSBlbHNlIGlmIChvcGFjaXR5ID49IDEwMCAmJiBpZCA9PSAnbGJEZXRhaWxzQ29udGFpbmVyJykgewogICAgICAgIHRyeSB7IG9iamVjdC5yZW1vdmVBdHRyaWJ1dGUoImZpbHRlciIpOyB9IGNhdGNoKGUpIHt9ICAgLyogRml4IGFkZGVkIGZvciBJRSBBbHBoYSBPcGFjaXR5IEZpbHRlciBidWcuICovCiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmltYWdlVGltZXJDb3VudDsgaSsrKSB7IHdpbmRvdy5jbGVhclRpbWVvdXQodGhpcy5pbWFnZVRpbWVyQXJyYXlbaV0pOyB9CiAgICAgICAgdGhpcy5kb2MuZ2V0RWxlbWVudEJ5SWQoJ2xiT3ZlcmxheScpLnN0eWxlLmhlaWdodCA9IHRoaXMuZ2V0UGFnZVNpemUoKVsxXSArICJweCI7CiAgICB9IGVsc2UgewogICAgICAgIGlmIChpZCA9PSAnbGJPdmVybGF5JykgewogICAgICAgICAgICB0aGlzLm92ZXJsYXlUaW1lckFycmF5W3RoaXMub3ZlcmxheVRpbWVyQ291bnQrK10gPSBzZXRUaW1lb3V0KCJteUx5dGVib3guYXBwZWFyKCciICsgaWQgKyAiJywgIiArIChvcGFjaXR5KzIwKSArICIpIiwgMSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgdGhpcy5pbWFnZVRpbWVyQXJyYXlbdGhpcy5pbWFnZVRpbWVyQ291bnQrK10gPSBzZXRUaW1lb3V0KCJteUx5dGVib3guYXBwZWFyKCciICsgaWQgKyAiJywgIiArIChvcGFjaXR5KzEwKSArICIpIiwgMSk7CiAgICAgICAgfQogICAgfQp9OwpMeXRlQm94LnByb3RvdHlwZS5mYWRlID0gZnVuY3Rpb24oaWQsIG9wYWNpdHkpIHsKICAgIHZhciBvYmplY3QgPSB0aGlzLmRvYy5nZXRFbGVtZW50QnlJZChpZCkuc3R5bGU7CiAgICBvYmplY3Qub3BhY2l0eSA9IChvcGFjaXR5IC8gMTAwKTsKICAgIG9iamVjdC5Nb3pPcGFjaXR5ID0gKG9wYWNpdHkgLyAxMDApOwogICAgb2JqZWN0LktodG1sT3BhY2l0eSA9IChvcGFjaXR5IC8gMTAwKTsKICAgIG9iamVjdC5maWx0ZXIgPSAiYWxwaGEob3BhY2l0eT0iICsgb3BhY2l0eSArICIpIjsKICAgIGlmIChvcGFjaXR5IDw9IDApIHsKICAgICAgICB0cnkgewogICAgICAgICAgICBvYmplY3QuZGlzcGxheSA9ICdub25lJzsKICAgICAgICB9IGNhdGNoKGVycikgeyB9CiAgICB9IGVsc2UgaWYgKGlkID09ICdsYk92ZXJsYXknKSB7CiAgICAgICAgdGhpcy5vdmVybGF5VGltZXJBcnJheVt0aGlzLm92ZXJsYXlUaW1lckNvdW50KytdID0gc2V0VGltZW91dCgibXlMeXRlYm94LmZhZGUoJyIgKyBpZCArICInLCAiICsgKG9wYWNpdHktMjApICsgIikiLCAxKTsKICAgIH0gZWxzZSB7CiAgICAgICAgdGhpcy50aW1lcklEQXJyYXlbdGhpcy50aW1lcklEQ291bnQrK10gPSBzZXRUaW1lb3V0KCJteUx5dGVib3guZmFkZSgnIiArIGlkICsgIicsICIgKyAob3BhY2l0eS0xMCkgKyAiKSIsIDEpOwogICAgfQp9OwpMeXRlQm94LnByb3RvdHlwZS5yZXNpemVXID0gZnVuY3Rpb24oaWQsIGN1clcsIG1heFcsIHBpeGVscmF0ZSwgc3BlZWQpIHsKICAgIGlmICghdGhpcy5oRG9uZSkgewogICAgICAgIHRoaXMucmVzaXplV1RpbWVyQXJyYXlbdGhpcy5yZXNpemVXVGltZXJDb3VudCsrXSA9IHNldFRpbWVvdXQoIm15THl0ZWJveC5yZXNpemVXKCciICsgaWQgKyAiJywgIiArIGN1clcgKyAiLCAiICsgbWF4VyArICIsICIgKyBwaXhlbHJhdGUgKyAiKSIsIDEwMCk7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgdmFyIG9iamVjdCA9IHRoaXMuZG9jLmdldEVsZW1lbnRCeUlkKGlkKTsKICAgIHZhciB0aW1lciA9IHNwZWVkID8gc3BlZWQgOiAodGhpcy5yZXNpemVEdXJhdGlvbi8yKTsKICAgIHZhciBuZXdXID0gKHRoaXMuZG9BbmltYXRpb25zID8gY3VyVyA6IG1heFcpOwogICAgb2JqZWN0LnN0eWxlLndpZHRoID0gKG5ld1cpICsgInB4IjsKICAgIGlmIChuZXdXIDwgbWF4VykgewogICAgICAgIG5ld1cgKz0gKG5ld1cgKyBwaXhlbHJhdGUgPj0gbWF4VykgPyAobWF4VyAtIG5ld1cpIDogcGl4ZWxyYXRlOwogICAgfSBlbHNlIGlmIChuZXdXID4gbWF4VykgewogICAgICAgIG5ld1cgLT0gKG5ld1cgLSBwaXhlbHJhdGUgPD0gbWF4VykgPyAobmV3VyAtIG1heFcpIDogcGl4ZWxyYXRlOwogICAgfQogICAgdGhpcy5yZXNpemVXVGltZXJBcnJheVt0aGlzLnJlc2l6ZVdUaW1lckNvdW50KytdID0gc2V0VGltZW91dCgibXlMeXRlYm94LnJlc2l6ZVcoJyIgKyBpZCArICInLCAiICsgbmV3VyArICIsICIgKyBtYXhXICsgIiwgIiArIHBpeGVscmF0ZSArICIsICIgKyAodGltZXIrMC4wMikgKyAiKSIsIHRpbWVyKzAuMDIpOwogICAgaWYgKHBhcnNlSW50KG9iamVjdC5zdHlsZS53aWR0aCkgPT0gbWF4VykgewogICAgICAgIHRoaXMud0RvbmUgPSB0cnVlOwogICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5yZXNpemVXVGltZXJDb3VudDsgaSsrKSB7IHdpbmRvdy5jbGVhclRpbWVvdXQodGhpcy5yZXNpemVXVGltZXJBcnJheVtpXSk7IH0KICAgIH0KfTsKTHl0ZUJveC5wcm90b3R5cGUucmVzaXplSCA9IGZ1bmN0aW9uKGlkLCBjdXJILCBtYXhILCBwaXhlbHJhdGUsIHNwZWVkKSB7CiAgICB2YXIgdGltZXIgPSBzcGVlZCA/IHNwZWVkIDogKHRoaXMucmVzaXplRHVyYXRpb24vMik7CiAgICB2YXIgb2JqZWN0ID0gdGhpcy5kb2MuZ2V0RWxlbWVudEJ5SWQoaWQpOwogICAgdmFyIG5ld0ggPSAodGhpcy5kb0FuaW1hdGlvbnMgPyBjdXJIIDogbWF4SCk7CiAgICBvYmplY3Quc3R5bGUuaGVpZ2h0ID0gKG5ld0gpICsgInB4IjsKICAgIGlmIChuZXdIIDwgbWF4SCkgewogICAgICAgIG5ld0ggKz0gKG5ld0ggKyBwaXhlbHJhdGUgPj0gbWF4SCkgPyAobWF4SCAtIG5ld0gpIDogcGl4ZWxyYXRlOwogICAgfSBlbHNlIGlmIChuZXdIID4gbWF4SCkgewogICAgICAgIG5ld0ggLT0gKG5ld0ggLSBwaXhlbHJhdGUgPD0gbWF4SCkgPyAobmV3SCAtIG1heEgpIDogcGl4ZWxyYXRlOwogICAgfQogICAgdGhpcy5yZXNpemVIVGltZXJBcnJheVt0aGlzLnJlc2l6ZUhUaW1lckNvdW50KytdID0gc2V0VGltZW91dCgibXlMeXRlYm94LnJlc2l6ZUgoJyIgKyBpZCArICInLCAiICsgbmV3SCArICIsICIgKyBtYXhIICsgIiwgIiArIHBpeGVscmF0ZSArICIsICIgKyAodGltZXIrLjAyKSArICIpIiwgdGltZXIrLjAyKTsKICAgIGlmIChwYXJzZUludChvYmplY3Quc3R5bGUuaGVpZ2h0KSA9PSBtYXhIKSB7CiAgICAgICAgdGhpcy5oRG9uZSA9IHRydWU7CiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLnJlc2l6ZUhUaW1lckNvdW50OyBpKyspIHsgd2luZG93LmNsZWFyVGltZW91dCh0aGlzLnJlc2l6ZUhUaW1lckFycmF5W2ldKTsgfQogICAgfQp9OwpMeXRlQm94LnByb3RvdHlwZS5nZXRQYWdlU2Nyb2xsID0gZnVuY3Rpb24oKSB7CiAgICBpZiAoc2VsZi5wYWdlWU9mZnNldCkgewogICAgICAgIHJldHVybiB0aGlzLmlzRnJhbWUgPyBwYXJlbnQucGFnZVlPZmZzZXQgOiBzZWxmLnBhZ2VZT2Zmc2V0OwogICAgfSBlbHNlIGlmICh0aGlzLmRvYy5kb2N1bWVudEVsZW1lbnQgJiYgdGhpcy5kb2MuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcCl7CiAgICAgICAgcmV0dXJuIHRoaXMuZG9jLmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3A7CiAgICB9IGVsc2UgaWYgKGRvY3VtZW50LmJvZHkpIHsKICAgICAgICByZXR1cm4gdGhpcy5kb2MuYm9keS5zY3JvbGxUb3A7CiAgICB9Cn07Ckx5dGVCb3gucHJvdG90eXBlLmdldFBhZ2VTaXplID0gZnVuY3Rpb24oKSB7CiAgICB2YXIgeFNjcm9sbCwgeVNjcm9sbCwgd2luZG93V2lkdGgsIHdpbmRvd0hlaWdodDsKICAgIGlmICh3aW5kb3cuaW5uZXJIZWlnaHQgJiYgd2luZG93LnNjcm9sbE1heFkpIHsKICAgICAgICB4U2Nyb2xsID0gdGhpcy5kb2Muc2Nyb2xsV2lkdGg7CiAgICAgICAgeVNjcm9sbCA9ICh0aGlzLmlzRnJhbWUgPyBwYXJlbnQuaW5uZXJIZWlnaHQgOiBzZWxmLmlubmVySGVpZ2h0KSArICh0aGlzLmlzRnJhbWUgPyBwYXJlbnQuc2Nyb2xsTWF4WSA6IHNlbGYuc2Nyb2xsTWF4WSk7CiAgICB9IGVsc2UgaWYgKHRoaXMuZG9jLmJvZHkuc2Nyb2xsSGVpZ2h0ID4gdGhpcy5kb2MuYm9keS5vZmZzZXRIZWlnaHQpewogICAgICAgIHhTY3JvbGwgPSB0aGlzLmRvYy5ib2R5LnNjcm9sbFdpZHRoOwogICAgICAgIHlTY3JvbGwgPSB0aGlzLmRvYy5ib2R5LnNjcm9sbEhlaWdodDsKICAgIH0gZWxzZSB7CiAgICAgICAgeFNjcm9sbCA9IHRoaXMuZG9jLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJodG1sIikuaXRlbSgwKS5vZmZzZXRXaWR0aDsKICAgICAgICB5U2Nyb2xsID0gdGhpcy5kb2MuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImh0bWwiKS5pdGVtKDApLm9mZnNldEhlaWdodDsKICAgICAgICB4U2Nyb2xsID0gKHhTY3JvbGwgPCB0aGlzLmRvYy5ib2R5Lm9mZnNldFdpZHRoKSA/IHRoaXMuZG9jLmJvZHkub2Zmc2V0V2lkdGggOiB4U2Nyb2xsOwogICAgICAgIHlTY3JvbGwgPSAoeVNjcm9sbCA8IHRoaXMuZG9jLmJvZHkub2Zmc2V0SGVpZ2h0KSA/IHRoaXMuZG9jLmJvZHkub2Zmc2V0SGVpZ2h0IDogeVNjcm9sbDsKICAgIH0KICAgIGlmIChzZWxmLmlubmVySGVpZ2h0KSB7CiAgICAgICAgd2luZG93V2lkdGggPSAodGhpcy5pc0ZyYW1lKSA/IHBhcmVudC5pbm5lcldpZHRoIDogc2VsZi5pbm5lcldpZHRoOwogICAgICAgIHdpbmRvd0hlaWdodCA9ICh0aGlzLmlzRnJhbWUpID8gcGFyZW50LmlubmVySGVpZ2h0IDogc2VsZi5pbm5lckhlaWdodDsKICAgIH0gZWxzZSBpZiAoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50ICYmIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQpIHsKICAgICAgICB3aW5kb3dXaWR0aCA9IHRoaXMuZG9jLmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aDsKICAgICAgICB3aW5kb3dIZWlnaHQgPSB0aGlzLmRvYy5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0OwogICAgfSBlbHNlIGlmIChkb2N1bWVudC5ib2R5KSB7CiAgICAgICAgd2luZG93V2lkdGggPSB0aGlzLmRvYy5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaHRtbCIpLml0ZW0oMCkuY2xpZW50V2lkdGg7CiAgICAgICAgd2luZG93SGVpZ2h0ID0gdGhpcy5kb2MuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImh0bWwiKS5pdGVtKDApLmNsaWVudEhlaWdodDsKICAgICAgICB3aW5kb3dXaWR0aCA9ICh3aW5kb3dXaWR0aCA9PSAwKSA/IHRoaXMuZG9jLmJvZHkuY2xpZW50V2lkdGggOiB3aW5kb3dXaWR0aDsKICAgICAgICB3aW5kb3dIZWlnaHQgPSAod2luZG93SGVpZ2h0ID09IDApID8gdGhpcy5kb2MuYm9keS5jbGllbnRIZWlnaHQgOiB3aW5kb3dIZWlnaHQ7CiAgICB9CiAgICB2YXIgcGFnZUhlaWdodCA9ICh5U2Nyb2xsIDwgd2luZG93SGVpZ2h0KSA/IHdpbmRvd0hlaWdodCA6IHlTY3JvbGw7CiAgICB2YXIgcGFnZVdpZHRoID0gKHhTY3JvbGwgPCB3aW5kb3dXaWR0aCkgPyB3aW5kb3dXaWR0aCA6IHhTY3JvbGw7CiAgICByZXR1cm4gbmV3IEFycmF5KHBhZ2VXaWR0aCwgcGFnZUhlaWdodCwgd2luZG93V2lkdGgsIHdpbmRvd0hlaWdodCk7Cn07Ckx5dGVCb3gucHJvdG90eXBlLnRvZ2dsZUZsYXNoID0gZnVuY3Rpb24oc3RhdGUpIHsKICAgIHZhciBvYmplY3RzID0gdGhpcy5kb2MuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIm9iamVjdCIpOwogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBvYmplY3RzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgb2JqZWN0c1tpXS5zdHlsZS52aXNpYmlsaXR5ID0gKHN0YXRlID09ICJoaWRlIikgPyAnaGlkZGVuJyA6ICd2aXNpYmxlJzsKICAgIH0KICAgIHZhciBlbWJlZHMgPSB0aGlzLmRvYy5nZXRFbGVtZW50c0J5VGFnTmFtZSgiZW1iZWQiKTsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZW1iZWRzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgZW1iZWRzW2ldLnN0eWxlLnZpc2liaWxpdHkgPSAoc3RhdGUgPT0gImhpZGUiKSA/ICdoaWRkZW4nIDogJ3Zpc2libGUnOwogICAgfQogICAgaWYgKHRoaXMuaXNGcmFtZSkgewogICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGFyZW50LmZyYW1lcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgb2JqZWN0cyA9IHBhcmVudC5mcmFtZXNbaV0ud2luZG93LmRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJvYmplY3QiKTsKICAgICAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgb2JqZWN0cy5sZW5ndGg7IGorKykgewogICAgICAgICAgICAgICAgICAgIG9iamVjdHNbal0uc3R5bGUudmlzaWJpbGl0eSA9IChzdGF0ZSA9PSAiaGlkZSIpID8gJ2hpZGRlbicgOiAndmlzaWJsZSc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gY2F0Y2goZSkgeyB9CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICBlbWJlZHMgPSBwYXJlbnQuZnJhbWVzW2ldLndpbmRvdy5kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiZW1iZWQiKTsKICAgICAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgZW1iZWRzLmxlbmd0aDsgaisrKSB7CiAgICAgICAgICAgICAgICAgICAgZW1iZWRzW2pdLnN0eWxlLnZpc2liaWxpdHkgPSAoc3RhdGUgPT0gImhpZGUiKSA/ICdoaWRkZW4nIDogJ3Zpc2libGUnOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGNhdGNoKGUpIHsgfQogICAgICAgIH0KICAgIH0KfTsKTHl0ZUJveC5wcm90b3R5cGUudG9nZ2xlU2VsZWN0cyA9IGZ1bmN0aW9uKHN0YXRlKSB7CiAgICB2YXIgc2VsZWN0cyA9IHRoaXMuZG9jLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJzZWxlY3QiKTsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2VsZWN0cy5sZW5ndGg7IGkrKyApIHsKICAgICAgICBzZWxlY3RzW2ldLnN0eWxlLnZpc2liaWxpdHkgPSAoc3RhdGUgPT0gImhpZGUiKSA/ICdoaWRkZW4nIDogJ3Zpc2libGUnOwogICAgfQogICAgaWYgKHRoaXMuaXNGcmFtZSkgewogICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGFyZW50LmZyYW1lcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgc2VsZWN0cyA9IHBhcmVudC5mcmFtZXNbaV0ud2luZG93LmRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJzZWxlY3QiKTsKICAgICAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgc2VsZWN0cy5sZW5ndGg7IGorKykgewogICAgICAgICAgICAgICAgICAgIHNlbGVjdHNbal0uc3R5bGUudmlzaWJpbGl0eSA9IChzdGF0ZSA9PSAiaGlkZSIpID8gJ2hpZGRlbicgOiAndmlzaWJsZSc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gY2F0Y2goZSkgeyB9CiAgICAgICAgfQogICAgfQp9OwpMeXRlQm94LnByb3RvdHlwZS5wYXVzZSA9IGZ1bmN0aW9uKG51bWJlck1pbGxpcykgewogICAgdmFyIG5vdyA9IG5ldyBEYXRlKCk7CiAgICB2YXIgZXhpdFRpbWUgPSBub3cuZ2V0VGltZSgpICsgbnVtYmVyTWlsbGlzOwogICAgd2hpbGUgKHRydWUpIHsKICAgICAgICBub3cgPSBuZXcgRGF0ZSgpOwogICAgICAgIGlmIChub3cuZ2V0VGltZSgpID4gZXhpdFRpbWUpIHsgcmV0dXJuOyB9CiAgICB9Cn07CmlmICh3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcikgewogICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLGluaXRMeXRlYm94LGZhbHNlKTsKfSBlbHNlIGlmICh3aW5kb3cuYXR0YWNoRXZlbnQpIHsKICAgIHdpbmRvdy5hdHRhY2hFdmVudCgib25sb2FkIixpbml0THl0ZWJveCk7Cn0gZWxzZSB7CiAgICB3aW5kb3cub25sb2FkID0gZnVuY3Rpb24oKSB7aW5pdEx5dGVib3goKTt9Cn0KZnVuY3Rpb24gaW5pdEx5dGVib3goKSB7IG15THl0ZWJveCA9IG5ldyBMeXRlQm94KCk7IH0KRU9UOwoKICAgICAgICByZXR1cm4gdXRmOF9lbmNvZGUoJGpzY29udGVudCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBEb0FjdGlvbigpCiAgICAgKgogICAgICogQHVzZXMgUHJvY2Vzc1RlbXBsYXRlRnJvbURhdGEoKQogICAgICogQHVzZXMgJHBhcmFtcwogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKiBAYWNjZXNzIHB1YmxpYwogICAgICovCiAgICBmdW5jdGlvbiBEb0FjdGlvbigpCiAgICB7CiAgICAgICAgaWYgKGVtcHR5KCR0aGlzLT5wYXJhbXNbJ2NvbmZpZyddKSkgewogICAgICAgICAgICBleGl0OwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRzY3JpcHRwYXJhbXMgPSBleHBsb2RlKCcsJywgYmFzZTY0X2RlY29kZSgkdGhpcy0+cGFyYW1zWydjb25maWcnXSkpOwoKICAgICAgICAgICAgLyoKICAgICAgICAgICAgICogYWRqdXN0IGJvb2xlYW4gdmFsdWVzCiAgICAgICAgICAgICAqLwogICAgICAgICAgICAvKiBMeXRlYm94IEdsb2JhbCBDb25maWd1cmF0aW9uICovCiAgICAgICAgICAgICRzY3JpcHRwYXJhbXNbMV0gPSAhJHNjcmlwdHBhcmFtc1sxXSA/ICdmYWxzZScgOiAndHJ1ZSc7CiAgICAgICAgICAgICRzY3JpcHRwYXJhbXNbMl0gPSAhJHNjcmlwdHBhcmFtc1syXSA/ICdmYWxzZScgOiAndHJ1ZSc7CiAgICAgICAgICAgICRzY3JpcHRwYXJhbXNbNl0gPSAhJHNjcmlwdHBhcmFtc1s2XSA/ICdmYWxzZScgOiAndHJ1ZSc7CiAgICAgICAgICAgICRzY3JpcHRwYXJhbXNbN10gPSAhJHNjcmlwdHBhcmFtc1s3XSA/ICdmYWxzZScgOiAndHJ1ZSc7CgogICAgICAgICAgICAvKiBMeXRlYm94IFNsaWRlc2hvdyBPcHRpb25zICovCiAgICAgICAgICAgICRzY3JpcHRwYXJhbXNbMTBdID0gISRzY3JpcHRwYXJhbXNbMTBdID8gJ2ZhbHNlJyA6ICd0cnVlJzsKICAgICAgICAgICAgJHNjcmlwdHBhcmFtc1sxMV0gPSAhJHNjcmlwdHBhcmFtc1sxMV0gPyAnZmFsc2UnIDogJ3RydWUnOwogICAgICAgICAgICAkc2NyaXB0cGFyYW1zWzEyXSA9ICEkc2NyaXB0cGFyYW1zWzEyXSA/ICdmYWxzZScgOiAndHJ1ZSc7CiAgICAgICAgICAgICRzY3JpcHRwYXJhbXNbMTNdID0gISRzY3JpcHRwYXJhbXNbMTNdID8gJ2ZhbHNlJyA6ICd0cnVlJzsKICAgICAgICAgICAgJHNjcmlwdHBhcmFtc1sxNF0gPSAhJHNjcmlwdHBhcmFtc1sxNF0gPyAnZmFsc2UnIDogJ3RydWUnOwogICAgICAgICAgICAkc2NyaXB0cGFyYW1zWzE1XSA9ICEkc2NyaXB0cGFyYW1zWzE1XSA/ICdmYWxzZScgOiAndHJ1ZSc7CiAgICAgICAgICAgICRzY3JpcHRwYXJhbXNbMTZdID0gISRzY3JpcHRwYXJhbXNbMTZdID8gJ2ZhbHNlJyA6ICd0cnVlJzsKICAgICAgICB9CgogICAgICAgIC8qCiAgICAgICAgICogb3V0cHV0IHRoZSBzdHlsZXNoZWV0CiAgICAgICAgICovCiAgICAgICAgd2hpbGUgKEBvYl9lbmRfY2xlYW4oKSk7CgogICAgICAgICRnbWRhdGUgPSBnbWRhdGUoJ0QsIGQgTSBZIEg6aTpzJykuJyBHTVQnOwogICAgICAgIGhlYWRlcigiRXhwaXJlczogeyRnbWRhdGV9Iik7CiAgICAgICAgaGVhZGVyKCJEYXRlOiB7JGdtZGF0ZX0iKTsKICAgICAgICBoZWFkZXIoIkxhc3QtTW9kaWZpZWQ6IHskZ21kYXRlfSIpOwogICAgICAgIGhlYWRlcignQ2FjaGUtQ29udHJvbDogbm8tY2FjaGUsIG11c3QtcmV2YWxpZGF0ZScpOwogICAgICAgIGhlYWRlcignUHJhZ21hOiBuby1jYWNoZScpOwogICAgICAgIGhlYWRlcignQ29udGVudC1UeXBlOiB0ZXh0L2phdmFzY3JpcHQ7IGNoYXJzZXQ9dXRmLTgnKTsKICAgICAgICBoZWFkZXIoJ0NvbnRlbnQtRGlzcG9zaXRpb246IGlubGluZTsgZmlsZW5hbWU9Imx5dGVib3guanMiJyk7CgogICAgICAgIHZwcmludGYoJHRoaXMtPkdldEphdmFzY3JpcHQoKSwgJHNjcmlwdHBhcmFtcyk7CiAgICAgICAgZXhpdDsKICAgIH0KfQoKJGFjdGlvbiA9IG5ldyBMeXRlYm94X0FjdGlvbkdldEpTKCRuYW1lLCAkaWQsICRwYXJhbXMsICRyZXR1cm5pZCk7CiRhY3Rpb24tPkRvQWN0aW9uKCk7Cgo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/action.getscriptlink.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qIHZpbTogc2V0IGV4cGFuZHRhYiB0YWJzdG9wPTQgc2hpZnR3aWR0aD00IHNvZnR0YWJzdG9wPTQ6ICovCgovKioKICogTHl0ZWJveCBtb2R1bGUgZm9yIENNU01TIC0gQSBzaW1wbGUgd3JhcHBlciB0byB0aGUgTHl0ZWJveCBKYXZhU2NyaXB0IGNsYXNzLgogKgogKiBQSFAgdmVyc2lvbnMgNCBhbmQgNQogKgogKiBMSUNFTlNFOgogKiBDb3B5cmlnaHQgKGMpIDIwMDgtMjAxMCwgQ2Fyc3RlbiBXaWVkbWFubgogKiBBbGwgcmlnaHRzIHJlc2VydmVkLgogKgogKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCiAqIGFyZSBtZXQ6CiAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CiAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQogKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgogKgogKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAogKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKICogQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCiAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCiAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCiAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQogKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAogKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCiAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKICogU1VDSCBEQU1BR0UuCiAqCiAqIEBjYXRlZ29yeSAgIE1vZHVsZXMKICogQHBhY2thZ2UgICAgTHl0ZWJveAogKiBAYXV0aG9yICAgICBDYXJzdGVuIFdpZWRtYW5uIDxjYXJzdGVuX3N0dGd0QGdteC5kZT4KICogQGNvcHlyaWdodCAgMjAwOC0yMDEwIENhcnN0ZW4gV2llZG1hbm4KICogQGxpY2Vuc2UgICAgaHR0cDovL3d3dy5mcmVlYnNkLm9yZy9jb3B5cmlnaHQvZnJlZWJzZC1saWNlbnNlLmh0bWwgRnJlZUJTRCBMaWNlbnNlCiAqIEB2ZXJzaW9uICAgIFNWTjogJElkOiBhY3Rpb24uZ2V0c2NyaXB0bGluay5waHAgMTYgMjAxMC0xMS0yOCAxNjozODoyMVogd2llZG1hbm4gJAogKiBAbGluayAgICAgICBodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL0x5dGVib3gKICovCgppZiAoIWlzc2V0KCRnQ21zKSkgewogICAgZXhpdDsKfQoKLyoqCiAqIEdldFNjcmlwdExpbmsgYWN0aW9uIGZyb20gdGhlIEx5dGVib3ggbW9kdWxlLgogKgogKiBVc2FnZToKICoge0x5dGVib3ggYWN0aW9uPSdnZXRzY3JpcHRsaW5rJ30KICoKICogQGNhdGVnb3J5ICAgTW9kdWxlcwogKiBAcGFja2FnZSAgICBMeXRlYm94CiAqIEBhdXRob3IgICAgIENhcnN0ZW4gV2llZG1hbm4gPGNhcnN0ZW5fc3R0Z3RAZ214LmRlPgogKiBAbGljZW5zZSAgICBodHRwOi8vd3d3LmZyZWVic2Qub3JnL2NvcHlyaWdodC9mcmVlYnNkLWxpY2Vuc2UuaHRtbCAgRnJlZUJTRCBMaWNlbnNlCiAqIEB2ZXJzaW9uICAgIFJlbGVhc2U6IDAuMy4xYmV0YTEKICogQGxpbmsgICAgICAgaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9wcm9qZWN0cy9MeXRlYm94CiAqIEBzZWUgICAgICAgIEx5dGVib3gKICovCmNsYXNzIEx5dGVib3hfQWN0aW9uR2V0U2NyaXB0TGluayBleHRlbmRzIEx5dGVib3gKewogICAgLyoqCiAgICAgKiBjb250YWlucyB0aGUgYWN0aW9uIHRvIHBlcmZvcm0KICAgICAqCiAgICAgKiBAdmFyIHN0cmluZwogICAgICogQGFjY2VzcyBwcm90ZWN0ZWQKICAgICAqLwogICAgdmFyICRuYW1lOwoKICAgIC8qKgogICAgICogY29udGFpbnMgdGhlIG1vZHVsZSBpZAogICAgICoKICAgICAqIEB2YXIgc3RyaW5nCiAgICAgKiBAYWNjZXNzIHByb3RlY3RlZAogICAgICovCiAgICB2YXIgJGlkOwoKICAgIC8qKgogICAgICogY29udGFpbnMgdGhlIG1vZHVsZSBwYXJhbWV0ZXJzCiAgICAgKgogICAgICogQHZhciBhcnJheQogICAgICogQGFjY2VzcyBwcm90ZWN0ZWQKICAgICAqLwogICAgdmFyICRwYXJhbXM7CgogICAgLyoqCiAgICAgKiBjb250YWlucyB0aGUgbW9kdWxlIHJldHVybmlkCiAgICAgKgogICAgICogQHZhciBzdHJpbmcKICAgICAqIEBhY2Nlc3MgcHJvdGVjdGVkCiAgICAgKi8KICAgIHZhciAkcmV0dXJuaWQ7CgogICAgLyoqCiAgICAgKiBMeXRlYm94X0FjdGlvbkdldFNjcmlwdExpbmsoKQogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJiRuYW1lICAgICBOYW1lIG9mIHRoZSBhY3Rpb24gdG8gcGVyZm9ybQogICAgICogQHBhcmFtIHN0cmluZyAmJGlkICAgICAgIHRoZSBpZCBmb3IgdGhpcyBtb2R1bGUKICAgICAqIEBwYXJhbSBhcnJheSAgJiRwYXJhbXMgICB0aGUgcGFyYW1ldGVycyB0YXJnZXRlZCBmb3IgdGhpcyBtb2R1bGUKICAgICAqIEBwYXJhbSBzdHJpbmcgJiRyZXR1cm5pZCB0aGUgcmV0dXJuaWQgZm9yIHRoaXMgbW9kdWxlCiAgICAgKgogICAgICogQHVzZXMgTHl0ZWJveCgpCiAgICAgKiBAdXNlcyAkbmFtZQogICAgICogQHVzZXMgJGlkCiAgICAgKiBAdXNlcyAkcGFyYW1zCiAgICAgKiBAdXNlcyAkcmV0dXJuaWQKICAgICAqCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqIEBhY2Nlc3MgcHVibGljCiAgICAgKi8KICAgIGZ1bmN0aW9uIEx5dGVib3hfQWN0aW9uR2V0U2NyaXB0TGluaygmJG5hbWUsICYkaWQsICYkcGFyYW1zLCAmJHJldHVybmlkKQogICAgewogICAgICAgIHBhcmVudDo6THl0ZWJveCgpOwoKICAgICAgICAkdGhpcy0+bmFtZSAgICAgPSYgJG5hbWU7CiAgICAgICAgJHRoaXMtPmlkICAgICAgID0mICRpZDsKICAgICAgICAkdGhpcy0+cGFyYW1zICAgPSYgJHBhcmFtczsKICAgICAgICAkdGhpcy0+cmV0dXJuaWQgPSYgJHJldHVybmlkOwogICAgfQoKICAgIC8qKgogICAgICogRG9BY3Rpb24oKQogICAgICoKICAgICAqIEB1c2VzIENyZWF0ZUZyb250ZW5kTGluaygpCiAgICAgKiBAdXNlcyBQcm9jZXNzVGVtcGxhdGVGcm9tRGF0YSgpCiAgICAgKiBAdXNlcyBjbXNtcygpCiAgICAgKiBAdXNlcyAkaWQKICAgICAqIEB1c2VzICRyZXR1cm5pZAogICAgICogQHVzZXMgJHBhcmFtcwogICAgICogQHVzZXMgJGNvdW50Y2FsbHMKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICogQGFjY2VzcyBwdWJsaWMKICAgICAqLwogICAgZnVuY3Rpb24gRG9BY3Rpb24oKQogICAgewogICAgICAgICRzbWFydHkgPSYgY21zbXMoKS0+R2V0U21hcnR5KCk7CiAgICAgICAgJGNvbmZpZyA9JiBjbXNtcygpLT5HZXRDb25maWcoKTsKCiAgICAgICAgaWYgKDAgPCAkdGhpcy0+Y291bnRjYWxscykgewogICAgICAgICAgICAkc21hcnR5LT5jbGVhcl9hc3NpZ24oJ0x5dGVib3hfbG9hZHNjcmlwdCcpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIC8qCiAgICAgICAgICAgICAqIGNyZWF0ZSBqYXZhc2NyaXB0IGNvbmZpZ3VyYXRpb24KICAgICAgICAgICAgICovCiAgICAgICAgICAgICRzY3JpcHRwYXJhbXMgPSBhcnJheSgpOwoKICAgICAgICAgICAgLyogTHl0ZWJveCBHbG9iYWwgQ29uZmlndXJhdGlvbiAqLwogICAgICAgICAgICAkc2NyaXB0cGFyYW1zWzBdID0gZW1wdHkoJHRoaXMtPnBhcmFtc1sndGhlbWUnXSkgPyAnZ3JleScgOiB0cmltKCR0aGlzLT5wYXJhbXNbJ3RoZW1lJ10pOwogICAgICAgICAgICAkc2NyaXB0cGFyYW1zWzFdID0gIWlzc2V0KCR0aGlzLT5wYXJhbXNbJ2hpZGVGbGFzaCddKSA/IDEgOiAkdGhpcy0+cGFyYW1zWydoaWRlRmxhc2gnXTsKICAgICAgICAgICAgJHNjcmlwdHBhcmFtc1syXSA9ICFpc3NldCgkdGhpcy0+cGFyYW1zWydvdXRlckJvcmRlciddKSA/IDEgOiAkdGhpcy0+cGFyYW1zWydvdXRlckJvcmRlciddOwogICAgICAgICAgICAkc2NyaXB0cGFyYW1zWzNdID0gIWlzc2V0KCR0aGlzLT5wYXJhbXNbJ3Jlc2l6ZVNwZWVkJ10pID8gOCA6ICR0aGlzLT5wYXJhbXNbJ3Jlc2l6ZVNwZWVkJ107CiAgICAgICAgICAgICRzY3JpcHRwYXJhbXNbNF0gPSAhaXNzZXQoJHRoaXMtPnBhcmFtc1snbWF4T3BhY2l0eSddKSA/IDgwIDogJHRoaXMtPnBhcmFtc1snbWF4T3BhY2l0eSddOwogICAgICAgICAgICAkc2NyaXB0cGFyYW1zWzVdID0gIWlzc2V0KCR0aGlzLT5wYXJhbXNbJ25hdlR5cGUnXSkgPyAxIDogJHRoaXMtPnBhcmFtc1snbmF2VHlwZSddOwogICAgICAgICAgICAkc2NyaXB0cGFyYW1zWzZdID0gIWlzc2V0KCR0aGlzLT5wYXJhbXNbJ2F1dG9SZXNpemUnXSkgPyAxIDogJHRoaXMtPnBhcmFtc1snYXV0b1Jlc2l6ZSddOwogICAgICAgICAgICAkc2NyaXB0cGFyYW1zWzddID0gIWlzc2V0KCR0aGlzLT5wYXJhbXNbJ2RvQW5pbWF0aW9ucyddKSA/IDEgOiAkdGhpcy0+cGFyYW1zWydkb0FuaW1hdGlvbnMnXTsKICAgICAgICAgICAgJHNjcmlwdHBhcmFtc1s4XSA9ICFpc3NldCgkdGhpcy0+cGFyYW1zWydib3JkZXJTaXplJ10pID8gMTIgOiAkdGhpcy0+cGFyYW1zWydib3JkZXJTaXplJ107CgogICAgICAgICAgICAvKiBMeXRlYm94IFNsaWRlc2hvdyBPcHRpb25zICovCiAgICAgICAgICAgICRzY3JpcHRwYXJhbXNbOV0gID0gIWlzc2V0KCR0aGlzLT5wYXJhbXNbJ3NsaWRlSW50ZXJ2YWwnXSkgPyA0MDAwIDogJHRoaXMtPnBhcmFtc1snc2xpZGVJbnRlcnZhbCddOwogICAgICAgICAgICAkc2NyaXB0cGFyYW1zWzEwXSA9ICFpc3NldCgkdGhpcy0+cGFyYW1zWydzaG93TmF2aWdhdGlvbiddKSA/IDEgOiAkdGhpcy0+cGFyYW1zWydzaG93TmF2aWdhdGlvbiddOwogICAgICAgICAgICAkc2NyaXB0cGFyYW1zWzExXSA9ICFpc3NldCgkdGhpcy0+cGFyYW1zWydzaG93Q2xvc2UnXSkgPyAxIDogJHRoaXMtPnBhcmFtc1snc2hvd0Nsb3NlJ107CiAgICAgICAgICAgICRzY3JpcHRwYXJhbXNbMTJdID0gIWlzc2V0KCR0aGlzLT5wYXJhbXNbJ3Nob3dEZXRhaWxzJ10pID8gMSA6ICR0aGlzLT5wYXJhbXNbJ3Nob3dEZXRhaWxzJ107CiAgICAgICAgICAgICRzY3JpcHRwYXJhbXNbMTNdID0gIWlzc2V0KCR0aGlzLT5wYXJhbXNbJ3Nob3dQbGF5UGF1c2UnXSkgPyAxIDogJHRoaXMtPnBhcmFtc1snc2hvd1BsYXlQYXVzZSddOwogICAgICAgICAgICAkc2NyaXB0cGFyYW1zWzE0XSA9ICFpc3NldCgkdGhpcy0+cGFyYW1zWydhdXRvRW5kJ10pID8gMSA6ICR0aGlzLT5wYXJhbXNbJ2F1dG9FbmQnXTsKICAgICAgICAgICAgJHNjcmlwdHBhcmFtc1sxNV0gPSAhaXNzZXQoJHRoaXMtPnBhcmFtc1sncGF1c2VPbk5leHRDbGljayddKSA/IDAgOiAkdGhpcy0+cGFyYW1zWydwYXVzZU9uTmV4dENsaWNrJ107CiAgICAgICAgICAgICRzY3JpcHRwYXJhbXNbMTZdID0gIWlzc2V0KCR0aGlzLT5wYXJhbXNbJ3BhdXNlT25QcmV2Q2xpY2snXSkgPyAxIDogJHRoaXMtPnBhcmFtc1sncGF1c2VPblByZXZDbGljayddOwoKICAgICAgICAgICAgJHNjcmlwdHBhcmFtcyA9IGJhc2U2NF9lbmNvZGUoaW1wbG9kZSgnLCcsICRzY3JpcHRwYXJhbXMpKTsKICAgICAgICAgICAgJHNjcmlwdHBhcmFtcyA9IGFycmF5KAogICAgICAgICAgICAgICAgJ2NvbmZpZycgPT4gJHNjcmlwdHBhcmFtcywKICAgICAgICAgICAgICAgICdzaG93dGVtcGxhdGUnID0+ICdmYWxzZScsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAvKgogICAgICAgICAgICAgKiBjcmVhdGUgamF2YXNjcmlwdCBsaW5rCiAgICAgICAgICAgICAqLwogICAgICAgICAgICAkc2NyaXB0bGluayAgID0gJHRoaXMtPkNyZWF0ZUZyb250ZW5kTGluaygkdGhpcy0+aWQsICR0aGlzLT5yZXR1cm5pZCwgJ2dldGpzJywgJycsICRzY3JpcHRwYXJhbXMsICcnLCB0cnVlLCB0cnVlLCAnJywgdHJ1ZSwgJycpOwogICAgICAgICAgICAvLyRzY3JpcHRsaW5rICAgPSBsdHJpbShzdHJfcmVwbGFjZSgkY29uZmlnWydyb290X3VybCddLCAnJywgJHNjcmlwdGxpbmspLCAnLycpOwogICAgICAgICAgICAkc21hcnR5LT5hc3NpZ24oJ0x5dGVib3hfbG9hZHNjcmlwdCcsICI8c2NyaXB0IHR5cGU9XCJ0ZXh0L2phdmFzY3JpcHRcIiBzcmM9XCJ7JHNjcmlwdGxpbmt9XCI+PC9zY3JpcHQ+XG4iKTsKICAgICAgICB9CgogICAgICAgIC8qCiAgICAgICAgICogb3V0cHV0IHRoZSBoeXBlcmxpbmsKICAgICAgICAgKi8KICAgICAgICAkdGVtcGxhdGUgPSAne2lmIGlzc2V0KCRMeXRlYm94X2xvYWRzY3JpcHQpfXskTHl0ZWJveF9sb2Fkc2NyaXB0fXsvaWZ9JzsKICAgICAgICAkb3V0cHV0ICAgPSAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlRnJvbURhdGEoJHRlbXBsYXRlKTsKCiAgICAgICAgZWNobyAkb3V0cHV0OwoKICAgICAgICAkdGhpcy0+Y291bnRjYWxscysrOwogICAgfQp9CgokYWN0aW9uID0gbmV3IEx5dGVib3hfQWN0aW9uR2V0U2NyaXB0TGluaygkbmFtZSwgJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQpOwokYWN0aW9uLT5Eb0FjdGlvbigpOwoKPz4K]]></data>
	</file>
	<file>
	  <filename>/images/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/images/blank.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhAQABAID/AMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==]]></data>
	</file>
	<file>
	  <filename>/images/close_blue.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/images/close_gold.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/images/close_green.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAEAAAAAUCAYAAAA9djs/AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAABUpJREFUWIXlmG1sU1UYx39nYniZsTdoIq+uJisKiWuVDBjbsruJidGYdchYigktWyAKIR0JL34xu5MvCF8aMTGEjHWJhN5qpPODGkPoFhkjAVwJojHo1kUiLwHXiSjbgMcPt7RcaUGMhGT8k/vhnv8553+e/33Oc3qqRER4iFHwoBfwf6LnZM+98zJO4FruElWqJHIgkpOPHIiIKlXiWu6ytY8LA4obioUFCBWIWqDEjJs2PnIwImqBEioRSpHihuIMd18MiCfjEk/GZeivofsxvQ0un8sKvg6hHmEJohYqicStTIjEI6IWKuGlNF+LsBBx+axMUCJWEewa6CLUG6Lzh04A3NPcGDUG3rleAPQ2ne5kN7I1f80M94Vp/qKZ4avDmTb/C35Cr4bQJmkApK6mCHwWsOmEXg2hP6NjHDRojbfmnDuX7uHvD1PRWIFMEZhBtqKdA/W7orG+kT2f7EEeF5iW5m4AZ0BdVfS09zABIHYqRl1HHY5JDoKlQbTJGrHvYqSupLJqY8BI3tiJnYqxat8q3NPdGF4DbZJG6FCIjiMdpC6niPljAHjDXrr7uwlWBDPjtImWOVy3NPzz/TinOvOLpbF43mLMHSYNmxuQIYHpaWIWyFmh7dM2eAJ46hZz0sGbO0zK5pZZRdCxxSGOLQ7pO9OXN9WqdlYJwfw7pqi1SBxbHDL0pz3tb44buDQgIiIEkaqdVRn+1v4tX7YIQSR+On4Pm0AkeigqqkwJryG8jbAux/MWwiuIKlMSPRTNjC2InYgxPDxMYH4Az0xPfrtH82dA8lKSwbODeOd60SZrNi4wPwAjEEtYGVBUWET3qW5iJ6x3W/9raY0bd/34NtSX12PuMFG/KTgHTMzx/AJq2Pry9eX1mbEFiWQCRsFb4r2zyjUsE3IgeTEJo+DUnLdxzqlOGIXUZWs7hVeGcTzioO6DOvTtOl0/dmU7X7c0qt+vRjUpVJPC6DT+jQfUl9fTtKIJLuQIfiJwEZpWNNmCB5hwU/Suro+R1wBupLnrd+f0Z3WS25M0f9xMxzcdVJ+spn1NO4HKQMYAf6Uf55NOq/8c/S4Ls2AeNmnb1wYzsQL+J2ZD2742lry4hIbFDZnmAudUJ4xAoj9xZ4U7FEHP0x5rjp9vnyPRn4AR8MzObi9tikZ4TZi+rX0wAkbEsIh0EQyUBzCWGhhLDfS5+p3XBZi9Jr7NPmSWQAm5M6AEZIbg2+zD7DWzBnhLvTAGoc6QreqnrqRIDNwS0LW0CTmgFWq4Z7rpPNxpG5O6kiLUGcLxqAN9np5pyxjn9FA1p4rBXwezBowB93A7MY+Y+Db5kOcEFgGFWBX/JPA50Jd+fwxYDDJb8G3yYR6xTJigFWq0LGuhdW8rnnUeAi8HSP2RInwgjFaokQwnLaV0Bhh7DdsC9Od19BKd0KoQ1e9Uo2/WCSwJABDrjTF4YZD2De1ohVaxa97VTPJ8Er1EJ3k+Sfe33dQuqs0aMALhr8N0neiy6Rhv2nUBen7qwbfRh8wQ8JA96o6BGlSsblzN7vBupECgMs2VgYwKvo0+ZoVnZe8C7V+1i3u1W6hBqEFq362VvtPZY7FqQ1WGu/VpCbdk+sQTcdsc7tVu2X9ov+3ICn4YlCJfkVCDOF53iH+bX4YuW0dhS7glpwY1+Y9f11qXUIGwDeEjhJWIqlASPWodddGjUVGVSmhC2IXwHsIixLXW+iU4Pu4Ca4stE95IB38sauOjx6KiKpSwDKEcKV57n+8CDwKu9S4r+OPRnHz0uGWCa/04vA3eRE9/zz3zmcvQw4px9Y/Qf8HfjJhm7C1L3swAAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/images/close_grey.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/images/close_red.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAEAAAAAUCAYAAAA9djs/AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAABUpJREFUWIXlmG1oU1cYx3+n7VadSq74stWXJdNep4WtURhDneSG9YswZ8oo4bIPjVQF59Tu42DDFIV9XHwpMqSYjg17I4w4Bm4oa7tRnczRrpvYmqjJpLYV0dS5RHH67ENvY1rTqOhe6P5wPuT5n3Of8/zvef6cGyUiwv8YRf/2Bp4kEh0dj87LBMEOXZeNSklXS0tevqulRTYqJTt0fVR8QpyAnbpOXyzGVBH2mSbdkcgovtuy2GeaTBPht1iMnbqe5ZTIk/eAdFsbAKVuN8Wa9qQfPwofLVpEMhZjCVAK9AFXlOKdgwd5ye/nF8ui0TSZKcJc4CZwFnhe13n/7Nl7HnCjrY3zPh+dStGpFD1uN0PRaDZRzDDoVKrgZq6Gw3RrGr1eL71eL93Tp5MMBLiTSmXn3Eml7stzwxasPxjMxseOfLh4/DjJeBwHMNUWYAEwQ4RG0+SL9etpNE1mibAQmARMA6YAyXiciydOUAJwNRqlp7qaYoeD2du2UaJpXI1GuZWz8VtAplDx0Sg969YxpbISZzBIsabRHwrR19xMJpVisS3mGZ+P6+3tlG3bll2n7FPyp51jdm0tpS5XQbEB5q9YwRbLYq/fT58IC+y4DhSLcKypiTmAEyi2uQvAH0qx1bKYv3z5sAm2OhzS6nDI9c7OcU3mlMcjRwt45vdOp7Q6HHL72rW869IXLoiIyFGQUx5Pls+df277djkKcrW1ddw8+XA6EpFNSkkQ5HOQljzjM5APQTYpJacjkezaooFolN+HhpgVCDDN7R5X7UInIJ1IcC2ZRPP5KBnT87MDATJA/0g7OZ1cam9nwP6dO/+2nePuA9/9aFTU1LDFshhUiiTwVJ4RY9gbtlgWFTU12bVFV7q6SAOzfL6CSW4C6XG4G4kEaaAkz7EtdblIA2m7nV4Oh7ntcNBeXc23hsFlu/9hWIA0cMzrxVIKSyl+DQYfrACwpKaG1XV19AFP5xkDwOq6OpbkFA9QMpL0QarfYnwB7trc7YfgZhsGbyQSnKyvJ97cTNLr5bUDB9ADgawA5bW1TLXFnGkYD9jZMHosiyNNTTgZLngsXMCRpib0qioW+/3ZeNFkl4sMMNjVVTBBoRaY7naTAQbyPGOwq4sMoOW019OaxqpwmDWdnWSAH+y3PGKCCwIBlgaDLA0Gee4hBOixLPaaJi4RlpG/BZYB80XYY5r0WNY9AV7w+UgDJ0Oh0a6fSnE5p6BCJ6BU05hSWcnpw4dHr0mlOBkKccfhYI5dSG6OmW43MzweBpNJ4F4LPIoH9FoWe0yTChFWAJPt+E9ABDgJCPAMsApw2SL02iKUlGoar2zfzncNDXzidlMZCHAzleLncJhJmsbWRCIrQAZoH9OTLsPAaRgYoRCfer2EDYPKQGB4c9EoQ8kkbx44QKltdt/U15NKJHAaBkOJBGfb23lx7dqsABmgMxzmfI43AHjyeEF/Rwe7TZO5Iizl3ofNCSCpFNUbNvDl/v0UieCxuRXATRF2myYfzJs3fA/wBINMdbnoCIX4uqEBgIq1a6nKSTpigiP8CF4HnLYIb7e28lV9PW27dgFQVlnJW6EQFTkGW6Rp9CcSnGloYJLDQUVtLWtCoawAaeBEc/N9xeYToGzlShaXl9Mbi3Ed0IDjdvH1lkV5TQ0LqqrY5ffzowivAteAS0BFeTllK1f+PVfhfxp7dZ2eeJxngUGleM+yWJjj9ucOHeJjv58yES4BS8rLeTcWGyYf6cbxH0ajrstmpSSec8nJRTwSkc1KSeOYr8EJI4CIyEBHxyPzE6IFHgcT4v+Ax8FfyEaXwPSt6YIAAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/images/loading.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/images/next_blue.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhPwAgAOYAAP////H1+/L1+/H0+vD0+vDz+eXr+OPp9uHo9dfh9NPd8MvY8crX8MnW78jV7sfU7cbT7MXS68TR6sPQ6sHP6bfI6LDE6q/D6a3B56q+5Ka64Jax45Sv4ZKt35Cr3Y6p24yn2oql2Iij1oah1ISf0nmb2nSW1W+T2G+R0WqMzGKK1WiJymSIzmGGzF+H01mBzVZ9ylN6x055zFB3xE10wUpxv0ZuvDpsyjdoxzZkvi5jxzZiti9hwCpfxCZbwCdZuSJXvCRWtidWsR5TuBpPtRZLsRJHrQ5Dqgk/pv///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEHAEkALAAAAAA/ACAAAAf/gElJAISFhoeIiYqLjIiDjZCRkpOUlZaXmJmam5ydnp+goaKjpKWmp6ihOhaFGzoLAK46s7MAJzcGhAY3JwAqtMAboD04CYQcPQwAyCUczhwAAjguhC44AgAXzi49zRzKnz4+MgEAHT4N5uiIGD4Y7RiH5+miQPYmAB5ADvn7iS88eLxApI+fqCEwWAzJ8GHIAwANh0j8YOiAxAOIGj4URSTGgBw/WhCBAAAEERQgQJAsVIEIkQqITK4MVWQGAAVFckYAEKLIzkMEgsyYEYTAoZ4/QxmhQUiDESMSAIiAiiiFEQQIjKQ4NDWqqCM1Cq04MgHAiCMrRqgdAWDCEbZmOskaOltWFBIbhQrsoACABJK/gAsI2WFoh5AChfzyTcW4sWMAgCP/fUy5suXLmDNr3kzpEWdGgj4zCgQAOw==]]></data>
	</file>
	<file>
	  <filename>/images/next_gold.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhPwAgAOYAAP////n57/j47/f37/b27/T03/Hx3+/v3+7uz+joz+rqv+jov+fnv+Xlv+Tkv+Liv+Dgv9/fv93dv9/fn9zcv93dn9vbr9ran9bWn9TUf9HRf8/Pn87Of8vLf8jIf8XFf8bGX8LCf8TET7+/f76+X7y8f7+/P7m5f7q6P7e3X7S0T6+vX7CwT7GxP7CwL62tP6urX6+vD6ioP6mpD6qqAKOjP5+fP6SkAJqaP56eAJ2dD5qaH5aWP5eXAJOTD5KSAI2NL4yMD4yMAISEH4WFAH9/AHl5AHNzAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEHAEgALAAAAAA/ACAAAAf/gEhIAISFhoeIiYqLjIiDjZCRkpOUlZaXmJmam5ydnp+goaKjpKWmp6ihNBOFGTQKAK40s7MAIjEFhAUxIgAmtMAZoDczCIQaNwsAyCAazhoAATMohCgzAQAVzig3zRrKnzk5LtgcOQwA5uiHFzkX7ReH6qM99SQAHT0N+PqJLTo6WiDKt0/UjxcqfmDw8MMBAIY/InowZCCiAUQMHYoSIkPADh8shDwA8EFIig8fRhayIESIBUQlVYYiUgNAAiI4IQAIQUTnoQFBatQIMuAQT5+hitggtKFIkQgARjxFtKLIgQNFVhySClWUERyFYBiRAKCEERgl0pYAIMHI2rJjOQ2ZJSvqCI9CBIBQAHDiiN+/BIYAMQRkCIFCffemWsy4MYC/kP06nky5suXLmDNrpvRoMyNBnhkFAgA7]]></data>
	</file>
	<file>
	  <filename>/images/next_green.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhPwAgAOYAAP///+/27+/17+/07+/z79/v39/r39/p38/lz8/fz7/ev7/bv7/cv7/Zv7/Yv7/Wv7/Uv7/Tv7/Rv7/Pv6/Mr5/On5/Ln5/Jn5/En5+8n3+9f3+6f3+3f3+zf3+wf3+tf3+pf3+mf3+jf3+gf1+oX1+gX0+lT1+YX1+QXz+cP0+TT1+MXz+XP0+OTz+NPz+JPz+EPy+KLz9+Pz96Pz90Pw+EDz9wPw99DwB8AB9vHw9xDy9kLwB1AABvAA9lDwBoAB9YHw9eDwBiAABbAABUAABOAABHAABBAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEHAEgALAAAAAA/ACAAAAf/gEhIAISFhoeIiYqLjIiDjZCRkpOUlZaXmJmam5ydnp+goaKjpKWmp6ihOBWFGjgKAK44s7MAJjUFhAU1JgAptMAaoDw3CIQbPAwAyCQbzhsAATcshCw3AQAWziw8zRvKnz09MdgcPQsA5uiHFz0X7ReH6qM/9SUAHT8N+PqJLjo6XCDKt0+UkBcqhGDwIMQBAIZCInowZCCiAUQMHYoaAkNADh8thjwA8GHIiQ8fRhaiMGQIBUQlVYYiIgNAAiI4IQAAQUTnoQFBZMgIMuAQT5+hiswglKFIkQgAQjxFhKLIgQNFUBySClWUERqFVhiRAECEkRUi0ooAIMHI2rJjOQ2ZJSvqiI1CBHZMADDiiN+/BIDsMLQDCIFCffemWsy4MYC/kP06nky5suXLmDNrpvRoMyNBnhkFAgA7]]></data>
	</file>
	<file>
	  <filename>/images/next_grey.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhPwAgAOYAAP////f39/b29vX19fT09PPz8+/v7+zs7Onp6ebm5t/f397e3tzc3Nra2tjY2NfX19XV1dPT09HR0dDQ0M3NzcrKysXFxcDAwL29vby8vLm5ubW1tbKysq+vr6ysrKurq6ioqKSkpKOjo6GhoaCgoJubm5WVlZKSkpGRkZCQkI2NjYuLi4iIiIeHh4KCgoGBgXx8fHp6enZ2dnV1dXNzc3JycnFxcWxsbGhoaGZmZmVlZWFhYV9fX1paWldXV1FRUUlJSUNDQ////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEHAEIALAAAAAA/ACAAAAf/gEJCAISFhoeIiYqLjIiDjZCRkpOUlZaXmJmam5ydnp+goaKjpKWmp6ihLxOFFy8KAK4vs7MAICwGhAYsIAAktMAXoDEuCYQZMQsAyB4ZzhkAAS4lhCUuAQAUziUxzRnKnzQ0KgIAGjQM5uiIFTQV7RWH5+miN/YiABs3Dfn7iSkzZqRApI+fKB0rTOiwwEGHAwANdUjkYOiAxAOIGj4UxaPFgBo4UPB4AKADjxIdOpAsRIEHDwqITK4M5eMFAAU+ckIA8MHHzkMEdszaQeBQz5+hfsAghOHHjwi2niI68QMBgh8nDoGQKgqIjEIqgEgAEAKIihBoQwCQAEQtWbGGOMqOFRXERqECOViNCMK3b4EeOQzl6FGg0F5WqRIrXgwAiOPHjxlLnky5suXLmDNTeqSZkaDOjAIBADs=]]></data>
	</file>
	<file>
	  <filename>/images/next_red.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhPwAgAOYAAP////nv7/vv7/bv7/jv7/nf3/Tf3/Df3/TPz+vPz/C/v/K/v+6/v+u/v+a/v+m/v+S/v+K/v9+/v92/v+Cvr+yfn+mfn+Wfn96fn9Ofn+Z/f+F/f9x/f9h/f9N/f85/f8l/f8R/f8B/f7t/f9pfX85fX8JfX7ZfX7BfX9xPT8JPT7tPT9k/P9M/P8Q/P70/P7U/P64/P6c/P6A/P5k/P8cvL5AvL6kfH9APD8cPD4gfH7YPD6MPD5oPD80AAMQAALoAALEAAKcAAJ0AAJQAAIoAAIEAAHcAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEHAEgALAAAAAA/ACAAAAf/gEhIAISFhoeIiYqLjIiDjZCRkpOUlZaXmJmam5ydnp+goaKjpKWmp6ihPhWFGj4LAK4+s7MAKTgFhAU4KQAstMAaoD85CIQbPwoAyCQbzhsAAjkthC05AgAWzi0/zRvKn0BANdgcQAwA5uiHF0AX7ReH6qNB9SUAHUEN+PqJLjs7XCDKt0+UkBcqhGDwIOQBAIZCInowZCCiAUQMHYoaAiPADR4rhjgA8GGIiQ8fRhaiMGQIBUQlVYYiEgNAAiI4IQAAQUTnIQI9YsToQeAQT5+hisgglKFIkQgAQjxFdKLIgQNFThySClWUkRmFUBiRAECEERQi0ooAIMHI2rJjOQ2ZJSvqCI1CA2xMADDiiN+/A3TYMGRDx4BCffemWsy4MYC/kP06nky5suXLmDNrpvRoMyNBnhkFAgA7]]></data>
	</file>
	<file>
	  <filename>/images/pause_blue.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAEAAAAAUCAYAAAA9djs/AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAABKJJREFUWIXlmH9MVXUUwD/3vnsfPng8UAETRSAzxg9/VC8jsVr+3NQlE1On1dailpS2ajpdy7XpWkZlo036pc5Ny9SYilloxTAkJqbmy/zJZASpiD9AcRTnPvrjwYXL4z3ItTnybPePe8655573ud9zzvf7lNbW1lbuYFFvdwK3W7TbncCtipq+wU/nLX+2R1tX6bMAAPpFpaEoCqqq0HTxmMUWEpWKato8AWP0aQC6bkNVFRRF8bPZda0NTvAY2ujscvPG6bDxYJKLpyYPxp3k8nPOWFTB+qUpJMWFWfTP5f7OoVON/Pp5ukU/Orscd5KLdUtSALh+U3hzfSXFR68CkBQXytJ5CbiTXOTvquHjXTXdJtk1bru0A1C7AaBpakA4Fj8Rg9iBIWQ+EkNt/V/sLK1j36F69r7nZkhUiOm4o7SOa9f/ZmPRn7ydPcISxDC8iBh+wUUMDMNr3i/KO0nFyQaenhILwA+/XMbpsAHg9fpizBwfY3lvMLHrNnOZdxW93dYzAOGuAU5eyhwGgPvecJZ/eoqC/edZNCvBdPy65Dwiwt6DdSybn4grtKN6DMNARLoBIBhGB5iff7vM2ORIls1PBCAnM86M4wMgZGZEMzY5spcANFQlQAloNrM/BBO1a5LhDhsigtfb8eVqLjVT5qnniYxorjY2s6/ikiVIbwEMitQo89Sbz3eG2A7g32xL7JoNXbdh121+Nl3z6e1a8DanighXGpspP36FbcW1vP/VGUSEye5o02nd7ipEhFeyEhnUX+ezwnOWIIYEAdCpNN5dmIzDDtmrDzN3RQXlx6/4AZiz4iDxs4uIn13Emq1ngwOwa9h1Dbvd/0fqmua7uoHTWTQRA8/Za2S94WuG4aEauTmppCSEm05f7qtm4gNRDI1xkPXYYD7Ycobj5xpJTfQ1St8KCNQDOvTpqQMoy3+UFetOsO3HGkqPXWLN4lHMmTAUr7cVEYMnJwwlLsbh80/pHzR5XQ+8zO323pWAJiKkJrpY9UIaAONGRlkctnz/B1cbm4kdGEKZp54hUf0QET7ZUUneq/d1AtBzCQC4wnQ+XDyK7BnxTFxcwupNJ9oAtK2Ax2P9cggIQAs2BdptwWNoIoKznxrwpV8UnUNEyC84TX7BaVNfWFrDyufTiHDqhDlURARPZQMjh0cA4KlsQEQIc3QM4oYbLUQ4dQDS7o7goeRIDnjqgVvsAUHGoN42BnsxBayjqrNUX2ii5MhFFs4awTs5Y0z95qIqcnIr2H2glgVTE5g3aRiFP9Uw7bVicrJG0HCjhc1FVYgYvJh5j/ncsrVHqb7QxPgx0VRfuEnJkYtMHxfbCYDBpu+q2H+0zpLH8mdSAwDQgmyEbKiKitJTCbSIIIZ//QJ8tP0ULSLMnxJv0S+YmsDreYfI23qCBVMTmJExhE1vPcyqDR5WrvdtSUcOj2TtEjfjR3c0U2eojcraRooPn8cVpjN3Uhy5L99vAmgRYeMe/8YXGEDgnaCu+eD01AOUvnocVtM3MH3mbBPAroKtlsPQlGmZKG0l8G1hwf/zMPTNzu0BbXv37OhVjD67Av4rueP/ELnjAfwDgHL1POVd5jsAAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/images/pause_gold.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAEAAAAAUCAYAAAA9djs/AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAABAxJREFUWIXlmM1rE10Uh5+USVOstIOYGiKYmEXRFvuRgKAuOlUqBb/6Cm7cdFx1af6E9D+IdKUgTndC1aZ+oOjCBKUlIrFvIC0GTNNqS2gXbdWgM1OtiyGTTtOk8UWQvv3BLOaec88997nn3syNbX19fZ1drJq/ncDflvC3E/ivGhiwlbTdvLm+rW2zdiwAAKcTbDaoqYFcrnrbRu1oAHa7MUlb6YIjCEUAlSSMjBR72+2NOJ0Szc1BnE6pxDkSEZGkKKLYYWmPRiWWlmJcuWIts5ERG05nF5IUBUDXV3jzRmZhYQwAUWynoyOM0ymRSoWYmhrcMsnNcTdPshKArWwWP02D+noPPp9MPp8lkxkmmx2jr2+G+nqv6ZjJKOTzq0xPhzlxQrEE0XXQtNLgmmbYCopG+1hcjHHkyHUAPn6MIAgiAD9+GP4+X79l3IrJV1jl3wKwb5+XtrYQAPv3S7x+fY10WqGzM2Q6vn+voGmQyUQIBFaorRVN29paeQBra8X3T59iuFxdBAJhAI4dC5lxCgAOH5ZxuaRq5v9HtkDN5lWy20U0zUiooC9fsszNxfB6+/n6dZWZmYglSLUV4HB4mJuLkc0a/TdCLAD4+bNywhslCAYEu728TdjmlKvRNMjnV5ifjzI9rTAxEULTwOPpM53evQujaRAIhHA4PCQSYUuQaiugq0sBGnn06B8ePJCYn4+atgKA+/e7GRqyMTRkIx4PVUy+MMFyAApPJQmaBgsL/3L3bjcADkcjp0/fweksHnTJpMKhQ5doaPDS3CwzMTHI4uIkTU2GT7UVcPCghCxnefkySCo1zMxMN729d2htlU0Ara39NDR4AXC7pW0BlCvzSjYLAFWFpqZ2enqMVfV4rIMmkwqfP6+yZ4+X2dkoe/d6UVWIx8NcuKCYAFS1NLiqWgEAOBwivb0KnZ1Bbt/uJBoNmQBUFY4elUtyKJu8YEyw3BlQzmbx03UQBLHsoImEgq7D+PgNxsdvmO2pVISenhXq6kQEQUTXIZebxOUyqiKXm6QQu6Dv3w1/gAMHOnC7u5idjQHGFtB1+J2byXYAqvoV2GqVClpezpJOxzh58jrnzxf3fSKhcO/eNaamIvj9Mm1tMsnkGLduSZw6FeTbtxUSCQVVhePHg2a/x4+DLC9n8fkkM3ZLyyUTgKrC27cKHz5ELXmcORPaMr9KZV71h5CuWw+qjXr1Koyug98vW9r9fpnR0SCxWBi/X6alpY+rV0d58SLEs2fGx4zb3c7lyyF8PsnsV1srsrSUJZ0epK6ukfb2fi5eDJsAdB3i8eGSPMoBqKYCtgNg26nX4YEBG+fOFQE8fGi9DJ09W7Q9ffo/vQw9eVLe9vx5dTF2bAX8Ke36P0R2PYBf6lysE2b9C7oAAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/images/pause_green.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAEAAAAAUCAYAAAA9djs/AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAA9JJREFUWIXlmE9oHFUcxz8TQ4ItZaeiJ8WdQqkHxd2QHBSqO3MICoZmc9KDuBMaVPSwc9CDh9ApUtCCMKlWrVjyghA8ubPgpRZ0plFRaMlEDFgqZntSD5pZ/4A7Wp+H2cz+zXajgRDzhXeY9/293/vO7/1+v9m3ipRSsocxsNMCdhqDOy3g30IZUzrm5GV5U64duzYAANwFKMR5fL2Nu7M+341rwu4OwBCNl9wK14QBZVZhY6inVPKLebw1r6uxekol+D7omNfP6yiznWmnzCro5/XkOfwjJL+YT/bLns0me9kf2zRraR6bYqhpbIVrwiA1SB9MY46ZVH6usHBlgXJQZu2lNbSDWmIoLguq1SrOJQfxuGj18idQ6+K9VufqyIs8/nc+xaNFANxVF3VYjckbsX1htIB2m9buqTuG+c8ZMEgE2gENe9wGQD+kM704jfhSYD9qJ4biCwERuMsu4bEQ9Va14eUvIOriPapzdfjf+OQO53COOQDY43bDz43Y3hw10Q/rvVVvYCMA3ZKk3xKg1ipeHVbjk2sSXvmpgr/qUxgpUK1WcQO31UvE5hnQ5Du9P42/6uOuxOs7glgD/u4tuAUbKT7cg7tJCQwQQfhLiHfVQ3wmsEs2RJC/P58YOR85EIH9mE36QBrngtPqpc8MEE8JUrekmDozhX5ax7vqNch6BhivGijHFZTjCnbZ7q1+uMdLbqUHrHy7gvGyAUBqX4r5wjzZu7MN4Z8IJu+bRLtdw3zA5OQHJwmuB2TTdZs+e4B+j07ldAXrPYuFpQWMrwzmn57HfNhs9ICHCmh3aLH9Eb23+m34CgxSg4yWwTHjU9Xvbd1UeILqehVN1fBWvbhB1cD50EE8L2KjPksAQN2nIp4RWI9YjLw4gv2+HQegXgLmUbNDw6bYriaoDqmbbiouCohgzp1jzp1L5t1PXUIzRN2vxn0jgmAtIHsozopgLYCIRpcHwt9je4CsliV3JIf/tR+T9RJgKzeTXgHoxTVhsNspbaDyYwX/ik8xX8R5tlH34qJg+rVp3M9dzHETUzcpXyqjv6BjTVmEv4Vx4GpgTVjJOutti8oPFfSMnviefHAyJuslIC4IvMBr0WE/aXcX2E8J9PgZEcNA5qyc7IbiG0WJgVy+ttzBpSZSMjOTSZ5LSyWZmclIDCQGMjOTkaWlUoe/9BNpiYFMTaRk4ZWCXP91XUop5QlxIlnbPrqBUSRvITmH5B0ko7RyDpLXkZxt5dqh7NbrsDKmwHM0MuBM22VohsY94dz/9TL0Zg/u3f5c7NoM2C7s+T9E9nwA/gF4+O4BwphdfgAAAABJRU5ErkJggg==]]></data>
	</file>
	<file>
	  <filename>/images/pause_grey.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAEAAAAAUCAYAAAA9djs/AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAABFdJREFUWIXlmF9IU28Yxz8b+5MtUFGom+aJMYUoGSKsxqAop2RMBbsq0JtB6FUXIULgxW6GeNHNELqKIiJhkQsK0l04UUFKRdFD3jQSCXbRn4XBeV+ndhE77Ti31u/3g/DX9+48z/M+e97v8z3Pe96Z9vb29viLYf7TBfxpWP50Af8Uzc3NBbY3b9780rcfh5YAgOPHj2MymTCbzXz48KFsXz4ONQFWqxWz2YzJZDrQlyOgFCzhcFh/sNvtKIqC1+tFUZSC4OHhYXp7ezlx4oTB/uDBA96/f8/Q0JDBHg6Hqauro7e3FwBN04jH46yvrwM/utTW1oaiKCSTSZLJ5IFF7s+bv8liBFgslqI+Q5wQgqqqKpqamvjy5QuLi4usrKxw+/Ztqqur9cDFxUW+fv3K7Ows3d3dhiTb29sIIQqSCyHY3t7Wnx89ekQqlcLn8wGgqip2ux2AbDaLEIKmpiaqqqpKFr2fgIO6XLYChBAcO3aMy5cvA+B0OhkbG+P169e0trbqgfPz8wghWFpaor29nYqKit8m4O3bt7hcLq5evQrApUuX9Dw7OzsIIfB4PLhcrrIIsNlsmEymf/UKmIUQSCl1g91uRwhBNpvVbZ8+fUJVVTweD5lMhpWVFUMSKWVRAvJzOxwOVFXV1+eTmFPA7u7uL7b9ExaLBavVitVqLeqzWEqPOYsQgkwmw/r6Oh8/fiSRSCCE4OzZs3rQ5OQkQgiuXLnC2toar169wuv16v5yFXD9+nVGR0eJRqPU19cTDAZpaGgAfipgZGREjw8GgwSDwaLF5xRwUJdzM+CXr4CUknfv3hGJRIAfXenp6eHkyZN60NTUFGfOnKGmpgav18v4+DgbGxs4nU7gR/fyO52DlNKgpIaGBiKRCI8fP2ZmZobV1VVCoRB+v5+dnR2klPj9fmprawFwu90liy8l81LkGAjQNM0wqU+fPm0ISCaTfP78mcrKSlRVpbq6Gk3TePHiBX19ffpGNU0rSK5pWgExR48eJRQK0dLSwuDgIE+ePMHv95PNZtE0DZ/PV1BD0eJLTPqyTwEpJTabreiPJhIJpJTE43Hi8bhun52dpaenB4fDgc1mQ0pJKpXi1KlTAKRSKXK5c/j27RsOhwMARVFwu92sra0B6Ar4nRlQ6hQom4CDupRDOp1mYWGBzs5Obt68qdsnJye5e/cuc3NzBAIBLly4wPT0NAMDA3R1dbG1tUUikUDTNNrb2/V19+7dI51O09jYqOc+d+4cgK6AiYkJlpeXDXXcuHHjwPpKybzUN4KBACmlYVDl4+nTp0gpaWlpMdgDgQDRaJRYLEYgEOD8+fPcuXOHhw8fcv/+fQBcLhe3bt2isbFRX3fkyBE2NzdZWFjA4XBw8eJF+vv7gZ8KePnyZUEdxQgo1eVyj0HTYb0ONzc3c+3aNX2TY2NjhstQR0eHTs6zZ8/+n5ehWCxW1Pf8+fOychxaBfxX+Ov/EPnrCfgO/GLx1Cs7v1AAAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/images/pause_red.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAEAAAAAUCAYAAAA9djs/AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAA8JJREFUWIXlmN1r5GQUxn+p046ywqTsUFi/JstSXRXsFAT3ZrcZ8MKbtbPg/bxlwRsvmj8h8x+kggiC9p2r9a6Zq71YxAmC9cY2VUulsrtBa1sKCxnXzrTdXepFk0zmK52KUGofCEPOOTnveZ885yQZ5fDw8JBzjKHTLuC0kTrtAv4tbitKl+3LQMxJvk6cWQIA8oDCkYx/PIEvjjNNwDCtTXYileCLY2hJUQiPFVXlfrHI41qtZ/CKqtJ03S77uq6z1EN2S4rCuq5H5898n/vFYrTeWj4frbVlmsRriR/9MAyMBL8n8cWRagLpXI4xIdj3PLYrFbarVd59+JC0pkWBO1Lyd73OhmUxLmVbkgOg2SN5MygixFqxSN1xeGl2FoBHts2QqgLwJIgfK5Xa1k1CkgJCX3/6jpBqAGlN4zXTBOCCrrM6M8OGlFwJbAC/S0kD2LBtLvs+qaBwgD2g0SN5A0jHzrcch9GpKS5bFgCvmmaU50kQnxWC0ZhqkpC0yYFboAnsxw2qShN4Gt+I57HpOGRLJR7X62zZdluSfforIJ6bXI5Nx2E7uD5O4tMg/tkxBceR4oiEXjIPfccNuaFd4C/fZ6dW44GULJsmu8BYsRgF/WpZ7AKvmybkcvwS3MEQe8Buj+S7gS/EhJQcZDJ8e+sW3+g6O7FZcxDE3ysUuKMo3FEUfo4psBfCDfYjIDySkGoAjZUVNgsFAEYyGa7NzzOaz0dBq1JyaXqaC5rGK0KwXC7zyHW5GMQktUCcgDFd50PP4wfD4LdKBa9Q4Mb8PONCRC0wXirxYjADsse0wjBHEu83A4YYYAY0gezEBNeDu/pyx6JrUlKv19E0jT9rNV7QNJrAsmXxfjAMk4bgQYdtRFW5ISVvGQZfT07yvWkyLkTUAleE6KqhH5I2OTABDeBQVfsu6gbDb3FujsW5uci+attc933SqgqqSgPYcV3GAlXsuO6RKmJ9vh/GA9l8notTU/zhOEBrCJ5kBiRtMpXga4vrGlQx+J7HuuPw3uwsH8T63pWS6swMa7ZNXgjeFIKfqlW+0nWuGQZ7vo8rJfvApGFE1901DHzPQ9P1KPcb09NA6zG4JCUPOt5D9D6zYJDH4HFPgVQjgYDvLIsG8I4Qbfa8ECwYBjXLIi8EV4tFPlpY4J5pcrdcBuDSxAQ3TRMtpqznVJVtz2OtXOb5TIa3SyVuBsSGClisVLrqSCIgSQGDEKCc1c/h24rCJ7QI+JT2j6GPaRHwOf/Tj6HPEnxfDJjjzCrgv8K5/0Pk3BPwD7hoZTZfcvSOAAAAAElFTkSuQmCC]]></data>
	</file>
	<file>
	  <filename>/images/play_blue.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAEAAAAAUCAYAAAA9djs/AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAABCRJREFUWIXll21MlWUYx3/3c87hcCAO8nY6ikOUyRRxtLQ2pehDE+fSZklzw4otMM1yspZrc7S10dLGnJPamGPNVcvmG8miD2ClGToQXC3e4kSAvIooEEeNU/d9Th+OnDjhOTzgBzvrv90fnuu6/vd9Xf/neq49t/B4PB7+x9AedAIPGiEvwL4jLVwd+mPO/JAXoL51hNScCk6c658TP+QFMGgC5RHkFn1HUXnbrPm6BMgoqPetzN2NFH7koLF93OfPL2kjo6Be14GZuxtp773jZ3PeUWTubiS/pE2XfSqEAIPRTLh1PvuPNpL9Zq2uPCahSwApJbZoA69unM9TGdGcbRwmb38T/TdcACilkFLOuM+Z2uuMOV18Uu3frlERBnZsWkBdywhnaq/77PuPdTLmdLF3a1LgAjSBpgmssXZi7Cmcu9xD+ks19A1P6ClNvwD2WBOvb07i/YKlFL+SgpSSiguDgH4BTn8/iJSSmsvXGb/jH/9y9gJs84wcPtUFQP/wBKfPD7BpTRzLkiID7imEQNM0wkxGHrLGYl+8kt/6naRvq6KuZWzGnPQJoBRKKd9zVIQBqRRut/cXQimFnOK/F/qGJ7jUfJNnM22MOl2cbRieFrPvxSX0DN3m8Kku9pa1YjEL3ng+OXgBQqAJgdlkxGwyEhFuIXHRcjyahaydVXz5w7Xg/KDeu5BSMuJ0UdcywsnzAxw83oGUknWr4wF9HfBxVTdSSvbkJPNwjInyqu5pMetWJ7A6NYryr7q42HSDvPWJLEwID16AJhCaICzM4FuWCAtJKWnYFiwm5+1q9pQ2B+bPXL5XgKaOUbYU1VF4+Ce6B5yUvJZGWnIUoE+AL77p4elH41iYYGFLlp2mjlFausanxRW+sITR8QksYZD/TOBvfxLibgeYTEa/ZTAI3EqCxytSIBhnPAFQUrFisZXi7ekArF0Z5+9XbpQM/Akc/7aXsXEXifHhXGq6ycKEcJRUHKnspLTwEb/YNelxKKlYnjQPa6Rpxtwmh6DZZPDZ3Erxq6OZv1y3qTy4gY1rbQH5ugSQUhIZrk0rfBIzdcDn1d72L6twUFbh8Nmravso3r6C6H8VKqX0mznBIPDOgTCTt5Rbzt9xtP1MjNVM/WebmR9nDsrXLUCwhCYFOPBpi5/9iQwbSfYILvx4jZ3PLeXArn/e9rGabnaVNPD1xX5ys5Nndd5UaJqG0ARGo8bQYB8d7a08uWoRZw9l6uLrFEChlDugXyk3UireO9rkZ9+Xl87YrT+RUpGbvcjPl5udzFulV/jwxC/3ECD4eVMxOQOudjro7+1iz7ZVfLBjmS4ugAj16/DWd69Qea6dedZIjr6TyYbH42fF19UB/2kIQWqyjZpDWdhjw2ZPD/UOqG4YYf1jsXPmh7wA94uQvw7fL/4GI9O46Clck28AAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/images/play_gold.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAEAAAAAUCAYAAAA9djs/AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAA8pJREFUWIXllzFsE1cYx3/n+HASJcYegqlE7IvUJiYDsYKCBEPrRLJYgpqlUjth1E4ZaFYGVBcYOjCYAZYMGIaKKghcBAghQW2phEbEDhiRgBUZO5IjBErkEFvBdwlmOJzYNXZeYKBW/9Ib7nvfd+/7/9//vdNJhUKhwP8Yhs/dwOdG3Qtw7doxFhdTH11f9wKkUv9w/PiXTE398VH1dS+AJEnAKqOjP3D9+rEt1wsJMDYmrY9g0MK9e0O8ehVanw+F3IyNSUILBoMWMpmHZTFNyxAMWgiF3ELxUkgSGI1gNhe4ceM3zp7tF+qjCCEBVBVk2UFX1y/YbEMkk39y+3Y/uVzyfaN6zmZIJALkckvMzPjL4rJswen0kU6HSSQC6/HJyRFyuSV6evxUgySBwQBWK9hsMD0d4tSpr8hk5kSoiQtgMins2eNj//4A+/adR1UhHtebXV0VE+DZswCqColEEFXNlM05nSNs2+YgEvEBkM0mefr0Anb7YaxWV3UCBl0EWQazGRQFFhZmOXnSSTL596Y9CQugaRvPsmxBVWFtTX8WccDycpK5uTCKcphsdonnz4MVOX19fhYXU0xO+rh71wtsx+Xy1Xxv0QGyrI/GRrDbwWhc4fTpr3n8uPblKCxALpchnQ4xMxPg/n0fqgoOxxAg5oCpKT+qCnv3+jCZHESjlbZWlCHa2r4hEvGTSoXp7h6htVWpTaDEAcXR1AQdHbBzZ4Fz577nypWfqtdvyh6d3Pz8Iy5d6ufmzSMsLCQZGDhPW5tuTREHxGIB7PZvMZsVOju9zM8/4uXLhxV5fX0+stklJGk7LteISHtlDiiOhgZ4+xYKBTAYql/QRpEF8nnYsaMHj0ffNYfDXTavaXpONcRiAV6/XqK5WSGVCtHSopDPw8SEn0OHAmW57e1u8nmw2VyYTJZNeyt1QBFrazA7CysrRo4e/Z3u7u+q1gsJoGlgNFoqiBexulp+R/wb0WgATYPx8TOMj59Zjz95EsTjydDYWE5U0/R3ikCSNj6FAMvLEI9Dc7OFEydimM3tNeuFHVCLYNEBd+74yuIdHW6sVoV4PMyBAz8zOLhx7qPRAJcvH2F6Okhvr3dL65WieAk2NMCLF/rO797dy/BwRKhe2AG1dqTogFu3fi2Lezzw5k0GTaOCZG+vl6tXRwiH/RVzW3FA8Qgkk5BOSxw8+CODg6NixYBU77/DFy8O8ODBX7S0NOH1XqCrq/p5/xCEHPDfRoFdu75geHiC1tba5/1DqHsHxONjdHZubddLUfcCfCrq/nf4U/EOChqCzBTag5oAAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/images/play_green.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAEAAAAAUCAYAAAA9djs/AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAA55JREFUWIXlmE9oHGUYxn+ziYmtjRkbQSvEHWkCrZVkzcUeNJkFg4iULGKwAWEnNAfBQ0dvEUqnlEAPFib1UCHWfBUJJD04gSJqQWclapY2dRNIIRBxt1AriO2MKDHjynjYTbLrujuT9lAXH5jL++f73veZ531hRvJ93+d/jMi9LuBeo+4JGH1vlNxPuTvOr3sC5q/N0/FyB9NfTN9Rft0TIEUk8n6eobeHGJ0Y3XZ+KAKkY9LmI4/JJKYS2D/Ym371nIp0TAp1oTwmk7mZKbM5fzjIYzLqOTWUvaKDJvDbfE69f4r4m/FQdZSmB2MdojujHO89TqIjwWxmlvjZONnb2YL/z0JMEMQVgeu6mF+ZZXb5fhmj1yC1kkJcEZt2fVYvxL9oUhURoAF4FFDATtt0vtbJ9Z+vh2otHAEeKC0KRr+BeFUw+cokeCDSxWLzhZggiHkBHljfWThrTplPf04nuiuK8YkBQPZWlvPfnicZSxJ7LFb9UKnYRTPQBhyA1Rur7Bvax9y1ucCaQiugtEG5WS7Y8kWDR6ACsr9kSS2nSD6dxHVdrIxVEWMOmORu5jAuGmhCozXSivGCUfvgBrYIaAZ2AU/CWtMavSO9TM/VXo6hFeD86mCv2IivBcbHBniQ6EoU/CEUYH5uggfGSwbRlijmZ5WyTnQn6HuiD/NTk9RyCr1PR2lTah9cqoCNpwXoAn+vz+G3DjPy7kjV9NAKWFxdJH4yzvDZYbI/ZplMThJ7vCjNEDtAfCkYeGoA5WEF7aDG4uoimVymIs44ZOA6Lq0Nrej9enBtESoJaAYagb8KIVJD9QXdGHwDsA7dSjemVnhr6gG13B8wAsIWuLddFFnBXrZRdiuwDuZFE/GGKItV96uwDrG9MeSdcnBtpQRsIA8sQOPvjUydmWLw4GDV9HAEeCA3yZWNl15YYwTEJQEejFvjjFvjm3ZrzsLRHOQH/tGox9Z+CULpCADcAtIgPyiz9OES7bvba6aHVkDNGS8qwPjIKDOrXSrKIwqphRRHE0cxX9+ae3FJMHx6GOsbC61f2959pdhQwH3A98BV6Hmmh4V3FkKlh1ZAzTdSVMCJD06U25Pg/OaAB9rzWplL69fQz+iYM2YlAdtRwAYBSyCtSBxJHmFiZCJkMuDXOeIn4z7P4u84tMOfuTyz7fxwCvgPw8dnT+ce0qfTtD9Ue97/DZLv1/cPkQtXLzDYU33LB6HuCbhb1P3n8N3ib8CbMDCJxCViAAAAAElFTkSuQmCC]]></data>
	</file>
	<file>
	  <filename>/images/play_grey.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAEAAAAAUCAYAAAA9djs/AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAA+9JREFUWIXlmE0odG8Yxn9zGMOYiFlgoZlQNBnZIKNZ+SgiYqU0NkrWVjaUjWwMskJJk50FCyQKyTDJRz4mLIgSUhiJc85g3sXbTCavmcO7eP/T/6pT59zPfT3nvq9znefpHJXP5/PxP4bwrwv414h4AYaHh7m5ufkxP+IFODw8pL6+nqWlpR/xI14AQRB4f3+no6OD0dHRb/OjlSR1d3cHzjUaDUajkaKiIoxGIwDj4+Ocn5/T2dkZdq7e3l6am5tJTU0NxERRZGBggNTUVJqbm8PGP0KlUqHRaNDpdIyMjOB2u+nr61PSFqDQAZIkERcXR0lJCVlZWezt7TEyMsL9/T0AXq8XSZLCzrO9vc3j4yNra2tB8djYWKxWKycnJ2xvbwfiMzMzPD4+UlFR8XUDgoAgCKSkpGA0GtnY2KCpqYnb21slrSkXQKfTUVpaSkNDA3V1dUiSxObmJqBcAJfLhSRJ7Ozs8PLyEjRmsVjQarXMzc0BcHd3x/r6OmazmbS0tC/nVKlUqFQq1Go1SUlJmEwmLi8vaWxsxO12h61JsQCyLAeuNRoNkiTx+voKgCzLYQW4u7vD7XaTn5+Px+Nhb2/vU05NTQ3X19fMzs7icDgQBCHk04ffAgiCgFqtRq1WExcXR3Z2NtHR0bS0tLC6uhqSr1gAj8fD8fExTqeTqakpJEnCbDYDyhywsLCAJElUVlai0+mYn5//lJOXl4fBYGB+fp7Dw0OsVivJycmhGxCEgAP8h1arxWQyYTAYaG9vZ3Bw8Gu+gv6RZZnT01N6enoYHh7m6uoKm81Geno6AK+vr0EO+ROWl5fJzc1Fr9dTVFTE6ekpFxcXn/Kqq6vxeDxERUVRWloatraPr8DHQxAE3t7efjcpfN2mol1AFEUMBkNgJTaZTEHjsiwjiuKX/JWVFe7v70lMTMTtdpOUlIQoiszMzNDW1haUm5OTgyiKZGRkoNVqw9bmXwRjYmICsbe3N/b393l+fmZgYIDi4uIv+YoEkGWZmJiYT4374fV6QzpgcXERWZaZnp5meno6EF9bW8NmsxEfH//pfl6vV0lpAIE1AODh4YHd3V0SEhJwOBzo9fqQXMUOCNWg3wETExNBcbPZTEpKCltbW9TW1tLa2hoYW1hYwG6343Q6KS8v/9b9PsK/BkRFRXFxccHBwQGFhYXY7XZFfMUOCPVE/A4YGxsLittsNp6enpBlmbKysqCx8vJyhoaGmJyc/CTAdxzg3wWOjo44OzvDZrMFCR0WvghHV1eXz2Kx+Kqqqnwul+vbfEUO+K8jMzOT/v7+sFvmn6Dy+SL7h8jm5iYFBQU/5ke8AH+LiP8c/lv8Ajp5n+J0+x2EAAAAAElFTkSuQmCC]]></data>
	</file>
	<file>
	  <filename>/images/play_red.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAEAAAAAUCAYAAAA9djs/AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAA4xJREFUWIXlmE9oFGcYxn+zppb8KfmEWIya7liMxoJNahUvoru04Km4F0FP2aAUSg/OwUtKwVEvuTm5FIqHjJeAenAj0npzBoQorWlmqRJT/0yipiXVOkNkptHV8ZDZuLsxOxM92KUPfId95332e99nn/eFWSkIgoD/MRLvuoB3jZoX4KfeXh5PTLwxv+YFsK9c4fv168mfPv1G/JoXICFJBIUCP+zfz8Xe3qXz4ySNSNL8sYTgdibDjGHMPx9PpRiRpFgXWkLgj46WxZ47DpYQjKdSseKlkIB6YG0QcK6vjx/T6Vh1FBFLAB94kUzScuQIDZkMfw0NkU+nmbVtAJ6GOVGY1nWeuC73Na0svkwIVqoqf5sm07o+H7+jKDxxXdZU5Fc2kADagE+AvGHQ196OOzkZp7V4AngAssxHqkq7rrNuYAAPuB8W+28xJwKTuj7Hy+UoOE7Zs9WKwotkkpuqCoBv29inTiG6u2ns6lr0O6XwvAesBLYBD2/d4lhHB5OXL0fWFNsBs6UkIfCBQvh5lmgHeLbNlGnS0t3NjOvyZy63IKdd03g8McFNVWUkm6XQ3My6UJBqDSSA5eFpAj4DGnyfvp07uRGxHGM7YMZxmDYM7uo6o6qKB3yYyQBzAkQ5YEzT8IANqoqUTHL9NbZelcnQtGsXv2sa90yTNkWhQZYj60sw54DiaQK2Ah1BwIl9+zh/8GBVbiQ8YMqyuJBOc6mnh4e2zecDA6wIrRlnBG7oOi179tAoy6zNZpmyLP6pWIYAm1QV13UpNDezQVEia0vwagRKjwQ8K+ZUWdB1kTcwZ++Wzk52hL/amoqtHDUCY7qO67rIsswDw6BelvGB3zSNL0qWHkBrKoUPrOjqYrkQkbVJvHJAEQXgF2Cmro7Dg4Ns3Lt3UX4sATwgEGJB40VEjcBouPyG+/sZ7u+fj1/P5djhOLxf0ahH+c6phtIlCPAIGAYaheB4Ps8HbW1V+bEdUK2gogPMioWVTKUQssy4abL90CF2l8y9pesM9fQwlsvRmc0u6b5SFEdgGXAb+BX4dMsWvr52LRY/tgOiBPCAn48eLYt/CfiOgwdsrmiyM5vlnKJgaNoCAZbqgARgAWOSxFcHDrD75MmYbCCocQym08G3EHxXXx/8cebMkvmxHPBfhhQEyK2tfHP1Ko0R874Iv7b/ELlz9iwfV9nyUah5Ad4WNf86/LZ4Cd5FOYTT5KnPAAAAAElFTkSuQmCC]]></data>
	</file>
	<file>
	  <filename>/images/prev_blue.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhPwAgAOYAAP////L1+/H0+/Dz+uTr+OHn9Nji9Nfh9NXf8tPd8NHb7svY8crX8MnW78jV7sfU7cbT7MXS68TR6sPQ6sHP6brK6rbH57LD463B56zA5qq+5Km945614pqy3pax45Sv4ZKt35Cr3Y6p24yn2omn34ql2Iij1oah1ISf0nyd3Hmb2neVz2+T2GyR1mGGzF+H01yE0FmBzVZ9ylV6wlN6x055zE10wUdzxUpxv0Ryy0Rvw0ZuvDpsykFsvz1rxDNlxDZkvi5jxy9hwDJhuipfxCtdvCZbwCtatCdZuSJXvB5TuCBSshpPtRxOrxZLsRJHrQ5Dqgk/pv///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEHAFIALAAAAAA/ACAAAAf/gACCg4SFhoeIiYqGUlKLj5CRj46SlZaXmJmam5ydnp+goaKjpKWmp6ipm0GsPCwLgh6sQTwpAYILs7MLJEEGgwZBJKJEOR8qREQEAB9EKh8vRC2CDEQvH9gfBAfOg8gHokYwghhGIAAgRg2CNUaCDeaGNT+DPzWjSTGCFUkhACFJHAAQ4EOIIAf9DHFIkgFAhiQcRim58UDDDSUIAIiYKKOIEg2CHigZqUTGIAElAchQImAUk5dMkGwQNIKJDiBMOgyCwITGiBEzB7lgwtMFKSc9IkQgVMJJhARIB0VwUuKQBSdDnFgg9cSGIRNPJAAAa0KQhCdlDy15sqQUFByGSU5AmQBgwJEmBQBMeHui74m8glZAWVEqyg5DKKJQEHQhygwAFKJInrxYkIIoClRp3sx50OTPUTqLHk26tOnTqFOr7kRpNaJGgQAAOw==]]></data>
	</file>
	<file>
	  <filename>/images/prev_gold.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhPwAgAOYAAP////r67/n57/j47/f37/T03+7u3+/vz+7uz+rqz+rqv+joz+jov+fnv+Xlz+Xlv+Tkv+Liv+Dgv9/fv9/fr93dv9zcv9nZr9ran9jYn9bWn9PTr9TUn9TUf9LSj9HRf87Of8/Pb8zMj8vLf8jIf8rKX8XFf8bGX8LCf8TET7+/f7y8f8DAT7m5f7q6P7Ozb7a2P7GxP7CwT7CwL62tP6+vH6+vD6ioP6qqAKamL6WlH6SkD6SkAKGhL5+fP56eT5qaP5ubL56eD56eAJqaH5aWP5iYD5iYAJSUH5OTD5KSAImJH4yMAIeHD4WFAIGBD4CAAHl5AHNzAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEHAFMALAAAAAA/ACAAAAf/gACCg4SFhoeIiYqGU1OLj5CRj46SlZaXmJmam5ydnp+goaKjpKWmp6ipmzisNikKgh2sODYlAYIKs7MKITgHgwc4IaI8NR8nPDwFAB88Jx8uPCyCDDwuH9gfBQjOg8gIokMwghhDIAAgQw2CM0OCDeaGMzuDOzOjRzGCFEcjACNHHgAQoEOIoAf9DHk4kgFAhiMeRinJAUFDDiUJAJCYSMOIEg2CICgZqYTGoAElAdBQMmAUk5dMknAQZIJJDyJMRAyKwOSGCRMzB8lgwlMGKSdBJEgghMKJhAVIB0lwguLQBSdInFwgBcWHIRVQJgAAq0LQBChlDzWB0qRUFCCGSVZEqQCAwJInBgBUeLui74q8gl5EeVFKShFDLaRYELRByg8AFqRInrxYkAMpDlRp3sx50OTPUjqLHk26tOnTqFOr7kRpNaJGgQAAOw==]]></data>
	</file>
	<file>
	  <filename>/images/prev_green.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhPwAgAOYAAP///+/27+/37+/17+/079/u39/o38/mz8/lz8/hz8/fz8/bz7/ev7/bv7/cv7/Zv7/Yv7/Wv7/Uv7/Tv7/Qv7/Rv6/Qr6/Kr6/Er5/Jn5/Gn5/En5/Cn4+9j3+9f4+3j3+6f3+3f3+zf3+wf2+1b3+tf3+qf3+nf3+kf3+gf1+tX1+oX0+lT2+Yb0+gTz+XP0+OTz+TPz+NPz+JPz+EPy+KL099Tz97Px+GHy9/Lz92Py96Lz9xPw+EDx96Hy90Lw93Dx9wHwB8AA9xDx9qHwB1AA9rDwBvAA9mDx9fHwBoAABiAA9aDwBcAA9UDwBVAABQAABJAABCAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEHAFMALAAAAAA/ACAAAAf/gACCg4SFhoeIiYqGU1OLj5CRj46SlZaXmJmam5ydnp+goaKjpKWmp6ipm0KsPSwMgh6sQj0qAoIMs7MMJEIHgwdCJKJFOCArRUUFACBFKyAvRS6CDkUvINggBQjOg8gIokcxghlHIQAhRw2CNUeCDeaGNUCDQDWjSjKCFkoiACJKHgAI4GOIoAf9DHVQogGABiUdRi3JAWFDjiUJAIyYOMPIkg2CICwZuWTGoAElAcxYMmBUk5dNkHAQVKLJjiBNPgyK0IRGiRIzB8FowhMGqSc/JEggZOKJBAVIB0l4YuLQhSdEnlwgBeWGoRNQJgAAe0LQBChlDzGBwqRUFB2GSVBEqQCAQBInBgBUeIuiL4q8glpEaVFKCg9DKaRQEIRBig0AFKRInrxY0AIpC1Rp3sx50OTPUjqLHk26tOnTqFOr7kRpNaJGgQAAOw==]]></data>
	</file>
	<file>
	  <filename>/images/prev_grey.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhPwAgAOYAAP////f39/b29vX19fT09O7u7ujo6Ofn5+bm5uLi4t/f397e3tzc3Nra2tjY2NfX19XV1dPT09HR0dDQ0MrKysjIyMXFxcTExMPDw8DAwL6+vry8vLm5ubi4uLW1tbKysrCwsK+vr6ysrKurq6ioqKSkpKOjo6GhoZubm5iYmJaWlpGRkZCQkI2NjYuLi4qKioiIiIeHh4GBgX5+fn19fXx8fHt7e3p6enZ2dnV1dXNzc3JycnFxcW5ubmxsbGtra2hoaGVlZV9fX1tbW1dXV1RUVFFRUUlJSUNDQ////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEHAEkALAAAAAA/ACAAAAf/gACCg4SFhoeIiYqGSUmLj5CRj46SlZaXmJmam5ydnp+goaKjpKWmp6ipmzKsMCQKghmsMjAgAYIKs7MKHTIHgwcyHaI3LxsiNzcFABs3IhsoNyaCCzcoG9gbBQjOg8gIojoqghQ6HAAcOgyCLTqCDOaGLTaDNi2jPiyCEj4eAB4+GgAQMCOHoAb9DGnwUQFABR8aRgWR4cCCjCAJAHyY6KJHEAuCHAQZGcTFoAElAbgIMmCUkJdCgGAQFEJIjR1Czgl6ICRGiBAzB60QwnMFKSI4IEAgNIIIBAVIB0EgMuIQBSI/iFAgZaSGIRJGIgAAS0JQBCNlDw0xMqTUERyGSUockQCAgJAiBgBIeFuib4m8glIcSVEKCQ9DJ5BMEHQBCQ0AE5BInrz4HZJ1qjJr3izoiOfPnjmLHk26tOnTqFOr7kRpNaJGgQAAOw==]]></data>
	</file>
	<file>
	  <filename>/images/prev_red.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhPwAgAOYAAP////rv7/nv7/zv7/fv7/jf3+/f3/bPz/TPz+7Pz+vPz+XPz/C/v/K/v+6/v+u/v+m/v+a/v+G/v+S/v9+/v92/v+evr92vr9Svr+Wfn+Kfn92fn9qfn92Pj9SPj+Z/f+F/f9x/f9h/f9J/f81/f8l/f8R/f79/f7p/f+Nvb7dvb+BfX9pfX9xPT9ZPT7tPT6BPT9M/P8s/P8Q/P7w/P7Q/P6Y/P58/P5g/P8cvL7YvL64vL6cvL8sfH7ofH6gfH6AfH9APD48fH74PD7YPD6sPD6IPD80AAJAPD8QAAIcPD7oAALEAAKYAAJwAAJMAAIkAAIAAAHYAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEHAFMALAAAAAA/ACAAAAf/gACCg4SFhoeIiYqGU1OLj5CRj46SlZaXmJmam5ydnp+goaKjpKWmp6ipm0esQS0Ngh+sR0ErA4INs7MNKUcHgwdHKaJJPSAsSUkFACBJLCAxSS6CDEkxINggBQjOg8gIoksyghlLIQAhSw6COUuCDuaGOUODQzmjTDOCFkwiACJMHgAI4IOIoAf9DHVgogGABiYdRjXRAWGDjiYJAIyYSKNIkw2CIDQZ2YTGIAElAdBoImCUk5dOjHAQRMLJjh9OPAyK4KQGCRIzB71wwvMFqSc8JkwgVOLJBAVIB014UuLQhSdAnlwgBcWGIRNQJAAAa0KQBChlDyGBgqRUlBuGSU5EoQCAgBAlBgBQeHui74m8glREUVFKCg5DKKRUEIRBCgwAFaRInrxY0AIpC1Rp3sx50OTPUjqLHk26tOnTqFOr7kRpNaJGgQAAOw==]]></data>
	</file>
	<file>
	  <filename>/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[]]></data>
	</file>
	<file>
	  <filename>/lang/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/en_US.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qIHZpbTogc2V0IGV4cGFuZHRhYiB0YWJzdG9wPTQgc2hpZnR3aWR0aD00IHNvZnR0YWJzdG9wPTQ6ICovCi8qIEBjaGFyc2V0PXV0Zi04ICovCgovKioKICogTHl0ZWJveCBtb2R1bGUgZm9yIENNU01TIC0gQSBzaW1wbGUgd3JhcHBlciB0byB0aGUgTHl0ZWJveCBKYXZhU2NyaXB0IGNsYXNzLgogKgogKiBQSFAgdmVyc2lvbnMgNCBhbmQgNQogKgogKiBMSUNFTlNFOgogKiBDb3B5cmlnaHQgKGMpIDIwMDgtMjAxMCwgQ2Fyc3RlbiBXaWVkbWFubgogKiBBbGwgcmlnaHRzIHJlc2VydmVkLgogKgogKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCiAqIGFyZSBtZXQ6CiAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CiAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQogKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgogKgogKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAogKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKICogQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCiAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCiAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCiAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQogKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAogKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCiAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKICogU1VDSCBEQU1BR0UuCiAqCiAqIEBjYXRlZ29yeSAgIE1vZHVsZXMKICogQHBhY2thZ2UgICAgTHl0ZWJveAogKiBAYXV0aG9yICAgICBDYXJzdGVuIFdpZWRtYW5uIDxjYXJzdGVuX3N0dGd0QGdteC5kZT4KICogQGNvcHlyaWdodCAgMjAwOC0yMDEwIENhcnN0ZW4gV2llZG1hbm4KICogQGxpY2Vuc2UgICAgaHR0cDovL3d3dy5mcmVlYnNkLm9yZy9jb3B5cmlnaHQvZnJlZWJzZC1saWNlbnNlLmh0bWwgRnJlZUJTRCBMaWNlbnNlCiAqIEB2ZXJzaW9uICAgIFNWTjogJElkOiBlbl9VUy5waHAgMTYgMjAxMC0xMS0yOCAxNjozODoyMVogd2llZG1hbm4gJAogKiBAbGluayAgICAgICBodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL2x5dGVib3gKICovCgokbGFuZ1snZnJpZW5kbHluYW1lJ10gICAgICAgICAgID0gJ0x5dGVib3gnOwokbGFuZ1sncG9zdGluc3RhbGwnXSAgICAgICAgICAgID0gJ1RoZSBMeXRlYm94IG1vZHVsZSBpcyBpbnN0YWxsZWQuIFBsZWFzZSByZWFkIHRoZSBoZWxwIHBhZ2UuJzsKJGxhbmdbJ3Bvc3R1bmluc3RhbGwnXSAgICAgICAgICA9ICdUaGUgTHl0ZWJveCBtb2R1bGUgaXMgdW5pbnN0YWxsZWQuJzsKJGxhbmdbJ3JlYWxseV91bmluc3RhbGwnXSAgICAgICA9ICdBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gdW5pbnN0YWxsIHRoZSBMeXRlYm94IG1vZHVsZT8nOwokbGFuZ1sndW5pbnN0YWxsZWQnXSAgICAgICAgICAgID0gJ01vZHVsZSB1bmluc3RhbGxlZC4nOwokbGFuZ1snaW5zdGFsbGVkJ10gICAgICAgICAgICAgID0gJ01vZHVsZSB2ZXJzaW9uICVzIGluc3RhbGxlZC4nOwokbGFuZ1sndXBncmFkZWQnXSAgICAgICAgICAgICAgID0gJ01vZHVsZSB1cGdyYWRlZCB0byB2ZXJzaW9uICVzLic7CiRsYW5nWydhZG1pbmRlc2NyaXB0aW9uJ10gICAgICAgPSAnQSBzaW1wbGUgd3JhcHBlciB0byB0aGUgTHl0ZWJveCBKYXZhU2NyaXB0IGNsYXNzLic7CiRsYW5nWydtb2RkZXNjcmlwdGlvbiddICAgICAgICAgPSAnQSBzaW1wbGUgd3JhcHBlciB0byB0aGUgTHl0ZWJveCBKYXZhU2NyaXB0IGNsYXNzLic7CiRsYW5nWydjaGFuZ2Vsb2cnXSAgICAgICAgICAgICAgPSA8PDxFT1QKICAgIDx1bD4KICAgICAgICA8bGk+VmVyc2lvbiAwLjMuMWJldGExCiAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgIDxsaT5maXggYnVnICM0MjI2IGFuZCAjMzM1NjwvbGk+CiAgICAgICAgICAgICAgICA8bGk+YWRkIG1lZGlhICdwcm9qZWN0aW9uJyB0byB0aGUgbW9kdWxlIHN0eWxlc2hlZXQ8L2xpPgogICAgICAgICAgICAgICAgPGxpPm1vZHVsZSBpcyBhZGRpbmcgaXRzIHN0eWxlc2hlZXQgYW5kIEphdmFTY3JpcHQgaXRzZWxmIHRvIHRoZSBwYWdlIG1ldGFkYXRhPC9saT4KICAgICAgICAgICAgICAgIDxsaT5yZW1vdmUgdXNhZ2Ugb2YgZGVwcmVjaWF0ZWQgdmFycy4KICAgICAgICAgICAgPC91bD4KICAgICAgICA8L2xpPgogICAgICAgIDxsaT5WZXJzaW9uIDAuMi4xYmV0YTEKICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgPGxpPml0J3Mgbm93IHBvc3NpYmxlIHRvIHVzZSB1cmkgcGFyYW1zIGZvciBMeXRlZnJhbWUgdG9nZWh0ZXIgd2l0aCBhIHd5c2l3eWcgZWRpdG9yPC9saT4KICAgICAgICAgICAgICAgIDxsaT5hZGQgYWN0aW9uICdnZXRzY3JpcHRsaW5rJyBpZiB5b3UganVzdCBuZWVkIHRoZSBsaW5rIGZvciBpbmNsdWR1bmcgdGhlIEphdmFTY3JpcHQ8L2xpPgogICAgICAgICAgICA8L3VsPgogICAgICAgIDwvbGk+CiAgICAgICAgPGxpPlZlcnNpb24gMC4xLjBkZXYxCiAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgIDxsaT5Jbml0aWFsIFJlbGVhc2U8L2xpPgogICAgICAgICAgICAgICAgPGxpPkx5dGVib3ggdjMuMjI8L2xpPgogICAgICAgICAgICA8L3VsPgogICAgICAgIDwvbGk+CiAgICA8L3VsPgpFT1Q7CiRsYW5nWydoZWxwJ10gICAgICAgICAgICAgICAgICAgPSA8PDxFT1QKICAgIDxoMz5XaGF0IGRvZXMgdGhpcyBkbz88L2gzPgogICAgPHA+QSBzaW1wbGUgd3JhcHBlciB0byB0aGUgTHl0ZWJveCBKYXZhU2NyaXB0IGNsYXNzLjwvcD4KICAgIDxoMz5Ib3cgRG8gSSBVc2UgSXQ8L2gzPgogICAgPG9sPgogICAgICAgIDxsaT48c3Ryb25nPkluY2x1ZGUgc3R5bGVzaGVldCAoYW5kIGphdmFzY3JpcHQpPC9zdHJvbmc+CiAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgIDxsaT5UaGUgbW9kdWxlIGlzIGFkZGluZyB0aGUgc3R5bGVzaGVldCAmcXVvdDtNb2R1bGU6IEx5dGVib3gmcXVvdDsgYW5kIHRoZSBKYXZhU2NyaXB0IGNhbGwgaXRzZWxmIHRvIHRoZSBwYWdlIG1ldGFkYXRhLjwvbGk+CiAgICAgICAgICAgICAgICA8bGk+SWYgeW91ciBDTVNNUyB2ZXJzaW9ucyBpcyA8MS45IG9yICZxdW90O3Byb2Nlc3Nfd2hvbGVfdGVtcGxhdGUmcXVvdDsgaXMgc2V0IHRvICZxdW90O3RydWUmcXVvdDsgaW4geW91ciAmcXVvdDtjb25maWcucGhwJnF1b3Q7LCB5b3UgaGF2ZSB0bzoKICAgICAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluIHRoZSBwYWdlIHdoZXJlIHlvdSB3YW50IHVzZSB0aGlzIG1vZHVsZSwgYWRkIHRoaXMgdG8gdGhlIHBhZ2UgbWV0YWRhdGE6PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y29kZT57c3R5bGVzaGVldCBuYW1lPSdNb2R1bGU6IEx5dGVib3gnIG1lZGlhPSdwcm9qZWN0aW9uLHNjcmVlbid9PC9jb2RlPgogICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICA8bGk+T3IgeW91IGNhbiBhdHRhY2ggdGhlIHN0eWxlc2hlZXQgJnF1b3Q7TW9kdWxlOiBMeXRlYm94JnF1b3Q7IHRvIHlvdXIgdGVtcGxhdGUuPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBwdXQgdGhlIEphdmFTY3JpcHQgY2FsbCBhbHNvIG1hbnVhbGx5IGludG8gdGhlIHBhZ2Ugd2l0aDo8YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjb2RlPntMeXRlYm94IGFjdGlvbj0nZ2V0c2NyaXB0bGluayd9PC9jb2RlPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFsbCBwYXJhbXMgZm9yIHRoZSBMeXRlYm94IEpTIHlvdSBtdXN0IHNldCBpbiB0aGlzIHRhZywgb3RoZXJ3aXNlIGluIHRoZSB0YWcgZm9yIHRoZSBmaXJzdCBpbWFnZSk8YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIE90aGVyd2lzZSBhIHNjcmlwdCB0YWcgaXMgaW5jbHVkZWQgYWJvdmUgdGhlIGZpcnN0IGltYWdlIHRvIGxvYWQgdGhlIEphdmFTY3JpcHQuCiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgPC91bD4KICAgICAgICA8L2xpPgogICAgICAgIDxsaT48c3Ryb25nPkltYWdlIENvbnRlbnQgRXhhbXBsZXM8L3N0cm9uZz4KICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgPGxpPjxlbT5TaW5nbGUgSW1hZ2UgRXhhbXBsZSAocHV0IHRoaXMgaW4geW91ciBwYWdlIGNvbnRlbnQpOjwvZW0+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPGNvZGU+e0x5dGVib3ggaHJlZj0ndXBsb2Fkcy9pbWFnZXMvaW1hZ2UtMS5qcGcnIHRpdGxlPSdJbWFnZSBEZXNjcmlwdGlvbicgdGV4dD0nSW1hZ2UgIzEnfTwvY29kZT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8bGk+PGVtPkdyb3VwZWQgSW1hZ2VzIEV4YW1wbGUgKHB1dCB0aGlzIGluIHlvdXIgcGFnZSBjb250ZW50KTo8L2VtPjxiciAvPgogICAgICAgICAgICAgICAgICAgIDxjb2RlPntMeXRlYm94IGhyZWY9J3VwbG9hZHMvaW1hZ2VzL2ltYWdlLTEuanBnJyBncm91cD0ndmFjYXRpb24nIHRpdGxlPSdNb20gYW5kIERhZCcgdGV4dD0nTW9tIGFuZCBEYWQnfTwvY29kZT48YnIgLz4KICAgICAgICAgICAgICAgICAgICA8Y29kZT57THl0ZWJveCBocmVmPSd1cGxvYWRzL2ltYWdlcy9pbWFnZS0yLmpwZycgZ3JvdXA9J3ZhY2F0aW9uJyB0aXRsZT0nTXkgU2lzdGVyJyB0ZXh0PSdNeSBTaXN0ZXInfTwvY29kZT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8bGk+PGVtPlNsaWRlc2hvdyBFeGFtcGxlIChwdXQgdGhpcyBpbiB5b3VyIHBhZ2UgY29udGVudCk6PC9lbT48YnIgLz4KICAgICAgICAgICAgICAgICAgICA8Y29kZT57THl0ZWJveCBocmVmPSd1cGxvYWRzL2ltYWdlcy9pbWFnZS0xLmpwZycgZ3JvdXA9J3ZhY2F0aW9uJyBkaXNwbGF5PSdzaG93JyB0aXRsZT0nTW9tIGFuZCBEYWQnIHRleHQ9J01vbSBhbmQgRGFkJ308L2NvZGU+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPGNvZGU+e0x5dGVib3ggaHJlZj0ndXBsb2Fkcy9pbWFnZXMvaW1hZ2UtMi5qcGcnIGdyb3VwPSd2YWNhdGlvbicgZGlzcGxheT0nc2hvdycgdGl0bGU9J015IFNpc3RlcicgdGV4dD0nTXkgU2lzdGVyJ308L2NvZGU+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICA8L3VsPgogICAgICAgIDwvbGk+CiAgICAgICAgPGxpPjxzdHJvbmc+SFRNTCBDb250ZW50IEV4YW1wbGVzPC9zdHJvbmc+CiAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgIDxsaT48ZW0+U2luZ2xlIEV4YW1wbGUgKHB1dCB0aGlzIGluIHlvdXIgcGFnZSBjb250ZW50KTo8L2VtPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICA8Y29kZT57THl0ZWJveCBocmVmPSdodHRwOi8vd3d3Lmdvb2dsZS5jb20vJyBkaXNwbGF5PSdmcmFtZScgdGl0bGU9J1NlYXJjaCBHb29nbGUnIHRleHQ9J0dvb2dsZSBTZWFyY2gnfTwvY29kZT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8bGk+PGVtPkdyb3VwZWQgRXhhbXBsZSAocHV0IHRoaXMgaW4geW91ciBwYWdlIGNvbnRlbnQpOjwvZW0+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPGNvZGU+e0x5dGVib3ggaHJlZj0nY2F0YWxvZzEuaHRtJyBncm91cD0nY2F0YWxvZycgZGlzcGxheT0nZnJhbWUnIHRpdGxlPSdTdW1tZXIgQ2F0YWxvZycgdGV4dD0nU3VtbWVyIENhdGFsb2cnfTwvY29kZT48YnIgLz4KICAgICAgICAgICAgICAgICAgICA8Y29kZT57THl0ZWJveCBocmVmPSdjYXRhbG9nMi5odG0nIGdyb3VwPSdjYXRhbG9nJyBkaXNwbGF5PSdmcmFtZScgdGl0bGU9J1dpbnRlciBDYXRhbG9nJyB0ZXh0PSdXaW50ZXIgQ2F0YWxvZyd9PC9jb2RlPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgPC91bD4KICAgICAgICA8L2xpPgogICAgICAgIDxsaT48c3Ryb25nPlVzZSB0aHVtYm5haWxzPC9zdHJvbmc+CiAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgIDxsaT48ZW0+U2luZ2xlIEltYWdlIEV4YW1wbGUgKHB1dCB0aGlzIGluIHlvdXIgcGFnZSBjb250ZW50KTo8L2VtPjxiciAvPgogICAgICAgICAgICAgICAgICAgIDxjb2RlPntMeXRlYm94IGhyZWY9J3VwbG9hZHMvaW1hZ2VzL2ltYWdlLTEuanBnJyB0aXRsZT0nSW1hZ2UgRGVzY3JpcHRpb24nIHRleHQ9J0ltYWdlICMxJyB0aHVtYnNyYz0ndXBsb2Fkcy9pbWFnZXMvaW1hZ2UtMS10aHVtYi5qcGcnIGFsdD0nSW1hZ2UgIzEnfTwvY29kZT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8bGk+PGVtPkdyb3VwZWQgSW1hZ2VzIEV4YW1wbGUgKHB1dCB0aGlzIGluIHlvdXIgcGFnZSBjb250ZW50KTo8L2VtPjxiciAvPgogICAgICAgICAgICAgICAgICAgIDxjb2RlPntMeXRlYm94IGhyZWY9J3VwbG9hZHMvaW1hZ2VzL2ltYWdlLTEuanBnJyBncm91cD0ndmFjYXRpb24nIHRpdGxlPSdNb20gYW5kIERhZCcgdGV4dD0nTW9tIGFuZCBEYWQnIHRodW1ic3JjPSd1cGxvYWRzL2ltYWdlcy9pbWFnZS0xLXRodW1iLmpwZycgdGh1bWJhbHQ9J01vbSBhbmQgRGFkJ308L2NvZGU+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPGNvZGU+e0x5dGVib3ggaHJlZj0ndXBsb2Fkcy9pbWFnZXMvaW1hZ2UtMi5qcGcnIGdyb3VwPSd2YWNhdGlvbicgdGl0bGU9J015IFNpc3RlcicgdGV4dD0nTXkgU2lzdGVyJyB0aHVtYnNyYz0ndXBsb2Fkcy9pbWFnZXMvaW1hZ2UtMi10aHVtYi5qcGcnIHRodW1iYWx0PSdNeSBTaXN0ZXInfTwvY29kZT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8bGk+PGVtPlNsaWRlc2hvdyBFeGFtcGxlIChwdXQgdGhpcyBpbiB5b3VyIHBhZ2UgY29udGVudCk6PC9lbT48YnIgLz4KICAgICAgICAgICAgICAgICAgICA8Y29kZT57THl0ZWJveCBocmVmPSd1cGxvYWRzL2ltYWdlcy9pbWFnZS0xLmpwZycgZ3JvdXA9J3ZhY2F0aW9uJyBkaXNwbGF5PSdzaG93JyB0aXRsZT0nTW9tIGFuZCBEYWQnIHRleHQ9J01vbSBhbmQgRGFkJ308L2NvZGU+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPGNvZGU+e0x5dGVib3ggaHJlZj0ndXBsb2Fkcy9pbWFnZXMvaW1hZ2UtMi5qcGcnIGdyb3VwPSd2YWNhdGlvbicgZGlzcGxheT0nc2hvdycgdGl0bGU9J015IFNpc3RlcicgdGV4dD0nTXkgU2lzdGVyJ308L2NvZGU+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICA8L3VsPgogICAgICAgIDwvbGk+CiAgICAgICAgPGxpPjxzdHJvbmc+U2V0IGFkZGl0aW9uYWwgcGFyYW1ldGVycyBmb3IgdGhlIEx5dGVib3ggamF2YXNjcmlwdDwvc3Ryb25nPgogICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICA8bGk+PGVtPlNpbmdsZSBFeGFtcGxlIChwdXQgdGhpcyBpbiB5b3VyIHBhZ2UgY29udGVudCk6PC9lbT48YnIgLz4KICAgICAgICAgICAgICAgICAgICA8Y29kZT57THl0ZWJveCBocmVmPSd1cGxvYWRzL2ltYWdlcy9pbWFnZS0xLmpwZycgdGhlbWU9J2JsdWUnfTwvY29kZT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8bGk+PGVtPkdyb3VwZWQgRXhhbXBsZSAocHV0IHRoaXMgaW4geW91ciBwYWdlIGNvbnRlbnQpOjwvZW0+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPGNvZGU+e0x5dGVib3ggaHJlZj0ndXBsb2Fkcy9pbWFnZXMvaW1hZ2UtMS5qcGcnIGdyb3VwPSd2YWNhdGlvbicgZGlzcGxheT0nc2hvdycgYXV0b0VuZD0nMCd9PC9jb2RlPjxiciAvPgogICAgICAgICAgICAgICAgICAgIDxjb2RlPntMeXRlYm94IGhyZWY9J3VwbG9hZHMvaW1hZ2VzL2ltYWdlLTIuanBnJyBncm91cD0ndmFjYXRpb24nIGRpc3BsYXk9J3Nob3cnfTwvY29kZT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgIDwvdWw+CiAgICAgICAgPC9saT4KICAgIDwvb2w+CiAgICA8Y2l0ZT4oRGVzY3JpcHRpb24gaXMgdGFrZW4gZnJvbSB0aGUgPGEgaHJlZj0iaHR0cDovL2RvbGVtLmNvbS9seXRlYm94LyI+THl0ZWJveCBob21lcGFnZTwvYT4uKTwvY2l0ZT4KICAgIDxoMz5TdXBwb3J0PC9oMz4KICAgIDxwPlBsZWFzZSByZWFkIHRoZSB0ZXh0IG9mIHRoZSBsaWNlbnNlIGluc2lkZSB0aGUgc291cmNlIGNvZGUgZm9yIHRoZSBmdWxsIGRpc2NsYWltZXIuPC9wPgogICAgPHA+Rm9yIGFkZGl0aW9uYWwgaGVscCB5b3UgY2FuIGFsc28gdHJ5IHRvIGFzayBhIHF1ZXN0aW9uIGluIHRoZSA8YSBocmVmPSJodHRwOi8vZm9ydW0uY21zbWFkZXNpbXBsZS5vcmcvIj5DTVNNUyBmb3J1bTwvYT4uPC9wPgogICAgPGgzPkNvcHlyaWdodCBhbmQgTGljZW5zZTwvaDM+CiAgICA8dWw+CiAgICAgICAgPGxpPjxzdHJvbmc+THl0ZWJveCBDTVNNUyBtb2R1bGU8L3N0cm9uZz4KICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgPGxpPkNvcHlyaWdodCDCqSAyMDA4LTIwMTAsIENhcnN0ZW4gV2llZG1hbm4gJmx0OzxhIGhyZWY9Im1haWx0bzpjYXJzdGVuX3N0dGd0QGdteC5kZSI+Y2Fyc3Rlbl9zdHRndEBnbXguZGU8L2E+Jmd0Oy4gQWxsIHJpZ2h0cyByZXNlcnZlZC48L2xpPgogICAgICAgICAgICAgICAgPGxpPlRoaXMgbW9kdWxlIGhhcyBiZWVuIHJlbGVhc2VkIHVuZGVyIHRoZSA8YSBocmVmPSJodHRwOi8vd3d3LmZyZWVic2Qub3JnL2NvcHlyaWdodC9mcmVlYnNkLWxpY2Vuc2UuaHRtbCI+RnJlZUJTRCBMaWNlbnNlPC9hPi4gWW91IG11c3QgYWdyZWUgdG8gdGhpcyBsaWNlbnNlIGJlZm9yZSB1c2luZyB0aGUgbW9kdWxlLjwvbGk+CiAgICAgICAgICAgIDwvdWw+CiAgICAgICAgPC9saT4KICAgICAgICA8bGk+PHN0cm9uZz5MeXRlYm94IEphdmFTY3JpcHQgY2xhc3M8L3N0cm9uZz4KICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgPGxpPkF1dGhvcjogTWFya3VzIEYuIEhheTwvbGk+CiAgICAgICAgICAgICAgICA8bGk+V2Vic2l0ZTogPGEgaHJlZj0iaHR0cDovL2RvbGVtLmNvbS9seXRlYm94LyI+aHR0cDovL2RvbGVtLmNvbS9seXRlYm94LzwvYT48L2xpPgogICAgICAgICAgICAgICAgPGxpPkxpY2Vuc2U6IDxhIGhyZWY9Imh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL2xpY2Vuc2VzL2J5LzMuMC8iPkNyZWF0aXZlIENvbW1vbnMgQXR0cmlidXRpb24gMy4wIExpY2Vuc2U8L2E+PC9saT4KICAgICAgICAgICAgPC91bD4KICAgICAgICA8L2xpPgogICAgPC91bD4KRU9UOwokbGFuZ1snaGVscF9ocmVmJ10gICAgICAgICAgICAgID0gJ3RoaXMgYXR0cmlidXRlIGluZGljYXRlcyB0aGUgVVJJIHRvIGJlIGxvYWRlZCB3aGVuIHRoZSBoeXBlcmxpbmsgaXMgYWN0aXZhdGVkJzsKJGxhbmdbJ2hlbHBfZGlzcGxheSddICAgICAgICAgICA9ICdoeXBlcmxpbmsocykgYXJlIHNob3dlZCBhcyBib3gsIHNob3cgb3IgZnJhbWUnOwokbGFuZ1snaGVscF9ncm91cCddICAgICAgICAgICAgID0gJ2lmIHlvdSB3YW50IGdyb3VwIDIgb3IgbW9yZSBoeXBlcmxpbmssIGdpdmUgdGhlIGdyb3VwIGEgbmFtZSc7CiRsYW5nWydoZWxwX2ZyYW1lYXR0ciddICAgICAgICAgPSAnY29udHJvbHMgdGhlIHdpZHRoLCBoZWlnaHQgYW5kIHNjcm9sbGluZyBvZiB0aGUgd2luZG93JzsKJGxhbmdbJ2hlbHBfdGl0bGUnXSAgICAgICAgICAgICA9ICd0aGlzIGF0dHJpYnV0ZSBzdWdnZXN0cyBhIHRpdGxlIChhZHZpc29yeSBvbmx5KSBmb3IgdGhlIGRlc3RpbmF0aW9uIHJlc291cmNlJzsKJGxhbmdbJ2hlbHBfZXh0cmEnXSAgICAgICAgICAgICA9ICdhbnkgZXh0cmEgYXR0cmlidXRlKHMpIHlvdSB3YW50IGdpdmUgdGhlIEEgZWxlbWVudCc7CiRsYW5nWydoZWxwX3RleHQnXSAgICAgICAgICAgICAgPSAndGV4dCBmb3IgdGhlIGh5cGVybGluayc7CiRsYW5nWydoZWxwX3RodW1ic3JjJ10gICAgICAgICAgPSAnaW5kaWNhdGVzIHRoZSBVUkkgdG8gcmVmZXJlbmNlIHRoZSB0aHVtYm5haWwnOwokbGFuZ1snaGVscF90aHVtYmFsdCddICAgICAgICAgID0gJ3RoaXMgaXMgdGV4dCB0byBiZSBkaXNwbGF5ZWQgaW4gcGxhY2Ugb2YgYW4gaW1hZ2UnOwokbGFuZ1snaGVscF90aHVtYmV4dHJhJ10gICAgICAgID0gJ2FueSBleHRyYSBhdHRyaWJ1dGUocykgeW91IHdhbnQgZ2l2ZSB0aGUgSU1HIGVsZW1lbnQnOwokbGFuZ1snaGVscF90aGVtZSddICAgICAgICAgICAgID0gJ3RoZW1lczogZ3JleSAoZGVmYXVsdCksIHJlZCwgZ3JlZW4sIGJsdWUsIGdvbGQnOwokbGFuZ1snaGVscF9oaWRlRmxhc2gnXSAgICAgICAgID0gJ2NvbnRyb2xzIHdoZXRoZXIgb3Igbm90IEZsYXNoIG9iamVjdHMgc2hvdWxkIGJlIGhpZGRlbic7CiRsYW5nWydoZWxwX291dGVyQm9yZGVyJ10gICAgICAgPSAnY29udHJvbHMgd2hldGhlciB0byBzaG93IHRoZSBvdXRlciBncmV5IChvciB0aGVtZSkgYm9yZGVyJzsKJGxhbmdbJ2hlbHBfcmVzaXplU3BlZWQnXSAgICAgICA9ICdjb250cm9scyB0aGUgc3BlZWQgb2YgdGhlIGltYWdlIHJlc2l6aW5nICgxPXNsb3dlc3QgYW5kIDEwPWZhc3Rlc3QpJzsKJGxhbmdbJ2hlbHBfbWF4T3BhY2l0eSddICAgICAgICA9ICdoaWdoZXIgb3BhY2l0eSA9IGRhcmtlciBvdmVybGF5LCBsb3dlciBvcGFjaXR5ID0gbGlnaHRlciBvdmVybGF5JzsKJGxhbmdbJ2hlbHBfbmF2VHlwZSddICAgICAgICAgICA9ICcxID0gJnF1b3Q7UHJldi9OZXh0JnF1b3Q7IGJ1dHRvbnMgb24gdG9wIGxlZnQgYW5kIGxlZnQgKGRlZmF1bHQpLCAyID0gJnF1b3Q7Jmx0OyZsdDsgcHJldiB8IG5leHQgJmd0OyZndDsmcXVvdDsgbGlua3MgbmV4dCB0byBpbWFnZSBudW1iZXInOwokbGFuZ1snaGVscF9hdXRvUmVzaXplJ10gICAgICAgID0gJ2NvbnRyb2xzIHdoZXRoZXIgb3Igbm90IGltYWdlcyBzaG91bGQgYmUgcmVzaXplZCBpZiBsYXJnZXIgdGhhbiB0aGUgYnJvd3NlciB3aW5kb3cgZGltZW5zaW9ucyc7CiRsYW5nWydoZWxwX2RvQW5pbWF0aW9ucyddICAgICAgPSAnY29udHJvbHMgd2hldGhlciBvciBub3QgJnF1b3Q7YW5pbWF0ZSZxdW90OyBMeXRlYm94LCBpLmUuIHJlc2l6ZSB0cmFuc2l0aW9uIGJldHdlZW4gaW1hZ2VzLCBmYWRlIGluL291dCBlZmZlY3RzLCBldGMuJzsKJGxhbmdbJ2hlbHBfYm9yZGVyU2l6ZSddICAgICAgICA9ICdpZiB5b3UgYWRqdXN0IHRoZSBwYWRkaW5nIGluIHRoZSBDU1MsIHlvdSB3aWxsIG5lZWQgdG8gdXBkYXRlIHRoaXMgdmFyaWFibGUgLS0gb3RoZXJ3aXNlLCBsZWF2ZSB0aGlzIGFsb25lLi4uJzsKJGxhbmdbJ2hlbHBfc2xpZGVJbnRlcnZhbCddICAgICA9ICdDaGFuZ2UgdmFsdWUgKG1pbGxpc2Vjb25kcykgdG8gaW5jcmVhc2UvZGVjcmVhc2UgdGhlIHRpbWUgYmV0d2VlbiAmcXVvdDtzbGlkZXMmcXVvdDsgKDEwMDAwID0gMTAgc2Vjb25kcyknOwokbGFuZ1snaGVscF9zaG93TmF2aWdhdGlvbiddICAgID0gJzEgdG8gZGlzcGxheSBOZXh0L1ByZXYgYnV0dG9ucy90ZXh0IGR1cmluZyBzbGlkZXNob3csIDAgdG8gaGlkZSc7CiRsYW5nWydoZWxwX3Nob3dDbG9zZSddICAgICAgICAgPSAnMSB0byBkaXNwbGF5IHRoZSBDbG9zZSBidXR0b24sIDAgdG8gaGlkZSc7CiRsYW5nWydoZWxwX3Nob3dEZXRhaWxzJ10gICAgICAgPSAnMSB0byBkaXNwbGF5IGltYWdlIGRldGFpbHMgKGNhcHRpb24sIGNvdW50KSwgMCB0byBoaWRlJzsKJGxhbmdbJ2hlbHBfc2hvd1BsYXlQYXVzZSddICAgICA9ICcxIHRvIGRpc3BsYXkgcGF1c2UvcGxheSBidXR0b25zIG5leHQgdG8gY2xvc2UgYnV0dG9uLCAwIHRvIGhpZGUnOwokbGFuZ1snaGVscF9hdXRvRW5kJ10gICAgICAgICAgID0gJzEgdG8gYXV0b21hdGljYWxseSBjbG9zZSBMeXRlYm94IGFmdGVyIHRoZSBsYXN0IGltYWdlIGlzIHJlYWNoZWQsIDAgdG8ga2VlcCBvcGVuJzsKJGxhbmdbJ2hlbHBfcGF1c2VPbk5leHRDbGljayddICA9ICcxIHRvIHBhdXNlIHRoZSBzbGlkZXNob3cgd2hlbiB0aGUgJnF1b3Q7TmV4dCZxdW90OyBidXR0b24gaXMgY2xpY2tlZCc7CiRsYW5nWydoZWxwX3BhdXNlT25QcmV2Q2xpY2snXSAgPSAnMSB0byBwYXVzZSB0aGUgc2xpZGVzaG93IHdoZW4gdGhlICZxdW90O1ByZXYmcXVvdDsgYnV0dG9uIGlzIGNsaWNrZWQnOwokbGFuZ1snaGVscF9jb25maWcnXSAgICAgICAgICAgID0gJ2ludGVybmFsIHVzYWdlJzsKCj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/Lytebox.module.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qIHZpbTogc2V0IGV4cGFuZHRhYiB0YWJzdG9wPTQgc2hpZnR3aWR0aD00IHNvZnR0YWJzdG9wPTQ6ICovCgovKioKICogTHl0ZWJveCBtb2R1bGUgZm9yIENNU01TIC0gQSBzaW1wbGUgd3JhcHBlciB0byB0aGUgTHl0ZWJveCBKYXZhU2NyaXB0IGNsYXNzLgogKgogKiBQSFAgdmVyc2lvbnMgNCBhbmQgNQogKgogKiBMSUNFTlNFOgogKiBDb3B5cmlnaHQgKGMpIDIwMDgtMjAxMCwgQ2Fyc3RlbiBXaWVkbWFubgogKiBBbGwgcmlnaHRzIHJlc2VydmVkLgogKgogKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCiAqIGFyZSBtZXQ6CiAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CiAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQogKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgogKgogKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAogKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKICogQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCiAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCiAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCiAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQogKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAogKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCiAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKICogU1VDSCBEQU1BR0UuCiAqCiAqIEBjYXRlZ29yeSAgIE1vZHVsZXMKICogQHBhY2thZ2UgICAgTHl0ZWJveAogKiBAYXV0aG9yICAgICBDYXJzdGVuIFdpZWRtYW5uIDxjYXJzdGVuX3N0dGd0QGdteC5kZT4KICogQGNvcHlyaWdodCAgMjAwOC0yMDEwIENhcnN0ZW4gV2llZG1hbm4KICogQGxpY2Vuc2UgICAgaHR0cDovL3d3dy5mcmVlYnNkLm9yZy9jb3B5cmlnaHQvZnJlZWJzZC1saWNlbnNlLmh0bWwgRnJlZUJTRCBMaWNlbnNlCiAqIEB2ZXJzaW9uICAgIFNWTjogJElkOiBMeXRlYm94Lm1vZHVsZS5waHAgMTYgMjAxMC0xMS0yOCAxNjozODoyMVogd2llZG1hbm4gJAogKiBAbGluayAgICAgICBodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL0x5dGVib3gKICovCgppZiAoIWlzc2V0KCRnQ21zKSkgewogICAgZXhpdDsKfQoKLyoqCiAqIEx5dGVib3ggbW9kdWxlIGZvciBDTVNNUyAtIEEgc2ltcGxlIHdyYXBwZXIgdG8gdGhlIEx5dGVib3ggSmF2YVNjcmlwdCBjbGFzcy4KICoKICogQGNhdGVnb3J5ICAgTW9kdWxlcwogKiBAcGFja2FnZSAgICBMeXRlYm94CiAqIEBhdXRob3IgICAgIENhcnN0ZW4gV2llZG1hbm4gPGNhcnN0ZW5fc3R0Z3RAZ214LmRlPgogKiBAbGljZW5zZSAgICBodHRwOi8vd3d3LmZyZWVic2Qub3JnL2NvcHlyaWdodC9mcmVlYnNkLWxpY2Vuc2UuaHRtbCAgRnJlZUJTRCBMaWNlbnNlCiAqIEB2ZXJzaW9uICAgIFJlbGVhc2U6IDAuMy4xYmV0YTEKICogQGxpbmsgICAgICAgaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9wcm9qZWN0cy9MeXRlYm94CiAqIEBzZWUgICAgICAgIENNU01vZHVsZQogKi8KY2xhc3MgTHl0ZWJveCBleHRlbmRzIENNU01vZHVsZQp7CgogICAgLyoqCiAgICAgKiBob3cgb2Z0ZW4gaXMgYXJlIHNvbWUgbW9kdWxlIGFjdGlvbiBjYWxsZWQ/CiAgICAgKgogICAgICogQHN0YXRpY3ZhciBpbnQKICAgICAqIEBhY2Nlc3MgcHJvdGVjdGVkCiAgICAgKi8KICAgIHZhciAkY291bnRjYWxsczsKCiAgICAvKioKICAgICAqIEdldEFkbWluRGVzY3JpcHRpb24oKQogICAgICoKICAgICAqIEB1c2VzIExhbmcoKQogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgYSBkZXNjcmlwdGlvbiBvZiB3aGF0IHRoZSBhZG1pbiBsaW5rIGRvZXMKICAgICAqIEBhY2Nlc3MgcHVibGljCiAgICAgKi8KICAgIGZ1bmN0aW9uIEdldEFkbWluRGVzY3JpcHRpb24oKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+TGFuZygnYWRtaW5kZXNjcmlwdGlvbicpOwogICAgfQoKICAgIC8qKgogICAgICogR2V0QXV0aG9yKCkKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZyB0aGUgbmFtZSBvZiB0aGUgYXV0aG9yCiAgICAgKiBAYWNjZXNzIHB1YmxpYwogICAgICovCiAgICBmdW5jdGlvbiBHZXRBdXRob3IoKQogICAgewogICAgICAgIHJldHVybiAnQ2Fyc3RlbiBXaWVkbWFubic7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXRBdXRob3JFbWFpbCgpCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcgdGhlIGVtYWlsIGFkZHJlc3Mgb2YgdGhlIGF1dGhvcgogICAgICogQGFjY2VzcyBwdWJsaWMKICAgICAqLwogICAgZnVuY3Rpb24gR2V0QXV0aG9yRW1haWwoKQogICAgewogICAgICAgIHJldHVybiAnY2Fyc3Rlbl9zdHRndEBnbXguZGUnOwogICAgfQoKICAgIC8qKgogICAgICogR2V0Q2hhbmdlTG9nKCkKICAgICAqCiAgICAgKiBAdXNlcyBMYW5nKCkKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZyB0aGUgY2hhbmdlbG9nIGZvciB0aGUgbW9kdWxlCiAgICAgKiBAYWNjZXNzIHB1YmxpYwogICAgICovCiAgICBmdW5jdGlvbiBHZXRDaGFuZ2VMb2coKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+TGFuZygnY2hhbmdlbG9nJyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXREZXNjcmlwdGlvbigpCiAgICAgKgogICAgICogQHVzZXMgTGFuZygpCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyBhIHNob3J0IGRlc2NyaXB0aW9uIG9mIHRoZSBtb2R1bGUKICAgICAqIEBhY2Nlc3MgcHVibGljCiAgICAgKi8KICAgIGZ1bmN0aW9uIEdldERlc2NyaXB0aW9uKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPkxhbmcoJ21vZGRlc2NyaXB0aW9uJyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXRIZWxwKCkKICAgICAqCiAgICAgKiBAdXNlcyBMYW5nKCkKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZyB0aGUgaGVscCBmb3IgdGhlIG1vZHVsZQogICAgICogQGFjY2VzcyBwdWJsaWMKICAgICAqLwogICAgZnVuY3Rpb24gR2V0SGVscCgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5MYW5nKCdoZWxwJyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXROYW1lKCkKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZyB0aGUgbmFtZSBvZiB0aGUgbW9kdWxlCiAgICAgKiBAYWNjZXNzIHB1YmxpYwogICAgICovCiAgICBmdW5jdGlvbiBHZXROYW1lKCkKICAgIHsKICAgICAgICByZXR1cm4gJ0x5dGVib3gnOwogICAgfQoKICAgIC8qKgogICAgICogR2V0VmVyc2lvbigpCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcgdGhlIHZlcnNpb24gb2YgdGhlIG1vZHVsZQogICAgICogQGFjY2VzcyBwdWJsaWMKICAgICAqLwogICAgZnVuY3Rpb24gR2V0VmVyc2lvbigpCiAgICB7CiAgICAgICAgcmV0dXJuICcwLjMuMWJldGExJzsKICAgIH0KCiAgICAvKioKICAgICAqIEluc3RhbGxQb3N0TWVzc2FnZSgpCiAgICAgKgogICAgICogQHVzZXMgTGFuZygpCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcgYSBtZXNzYWdlIGFmdGVyIGEgc3VjY2Vzc2Z1bCBpbnN0YWxsYXRpb24gb2YgdGhlIG1vZHVsZQogICAgICogQGFjY2VzcyBwdWJsaWMKICAgICAqLwogICAgZnVuY3Rpb24gSW5zdGFsbFBvc3RNZXNzYWdlKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPkxhbmcoJ3Bvc3RpbnN0YWxsJyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBJc1BsdWdpbk1vZHVsZSgpCiAgICAgKgogICAgICogQHJldHVybiBib29sZWFuIHRydWUgaWYgdGhlIG1vZHVsZSBzaG91bGQgYmUgdHJlYXRlZCBhcyBhIHBsdWdpbiBtb2R1bGUKICAgICAqIEBhY2Nlc3MgcHVibGljCiAgICAgKi8KICAgIGZ1bmN0aW9uIElzUGx1Z2luTW9kdWxlKCkKICAgIHsKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICAvKioKICAgICAqIE1heGltdW1DTVNWZXJzaW9uKCkKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZyB0aGUgbWF4aW11bSB2ZXJzaW9uIG5lY2Vzc2FyeSB0byBydW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBtb2R1bGUKICAgICAqIEBhY2Nlc3MgcHVibGljCiAgICAgKi8KICAgIGZ1bmN0aW9uIE1heGltdW1DTVNWZXJzaW9uKCkKICAgIHsKICAgICAgICByZXR1cm4gJzEuOS45JzsKICAgIH0KCiAgICAvKioKICAgICAqIE1pbmltdW1DTVNWZXJzaW9uKCkKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZyB0aGUgbWluaW11bSB2ZXJzaW9uIG5lY2Vzc2FyeSB0byBydW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBtb2R1bGUKICAgICAqIEBhY2Nlc3MgcHVibGljCiAgICAgKi8KICAgIGZ1bmN0aW9uIE1pbmltdW1DTVNWZXJzaW9uKCkKICAgIHsKICAgICAgICByZXR1cm4gJzEuOC4xJzsKICAgIH0KCiAgICAvKioKICAgICAqIFVuaW5zdGFsbFBvc3RNZXNzYWdlKCkKICAgICAqCiAgICAgKiBAdXNlcyBMYW5nKCkKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZyBhIG1lc3NhZ2UgYWZ0ZXIgYSBzdWNjZXNzZnVsIHVuaW5zdGFsbCBvZiB0aGUgbW9kdWxlCiAgICAgKiBAYWNjZXNzIHB1YmxpYwogICAgICovCiAgICBmdW5jdGlvbiBVbmluc3RhbGxQb3N0TWVzc2FnZSgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5MYW5nKCdwb3N0dW5pbnN0YWxsJyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBVbmluc3RhbGxQcmVNZXNzYWdlKCkKICAgICAqCiAgICAgKiBAdXNlcyBMYW5nKCkKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZyBhIG1lc3NhZ2UgYmVmb3JlIGRvaW5nIGFuIHVuaW5zdGFsbAogICAgICogQGFjY2VzcyBwdWJsaWMKICAgICAqLwogICAgZnVuY3Rpb24gVW5pbnN0YWxsUHJlTWVzc2FnZSgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5MYW5nKCdyZWFsbHlfdW5pbnN0YWxsJyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBMeXRlYm94KCkKICAgICAqCiAgICAgKiBAc3RhdGljdmFyIGludCBjb3VudGNhbGxzICBob3cgb2Z0ZW4gYXJlIHNvbWUgbW9kdWxlIGFjdGlvbiBjYWxsZWQ/CiAgICAgKgogICAgICogQHVzZXMgQ01TTW9kdWxlKCkKICAgICAqCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqIEBhY2Nlc3MgcHVibGljCiAgICAgKi8KICAgIGZ1bmN0aW9uIEx5dGVib3goKQogICAgewogICAgICAgIHBhcmVudDo6Q01TTW9kdWxlKCk7CgogICAgICAgIHN0YXRpYyAkY291bnRjYWxscyA9IDA7CiAgICAgICAgJHRoaXMtPmNvdW50Y2FsbHMgPSYgJGNvdW50Y2FsbHM7CiAgICB9CgogICAgLyoqCiAgICAgKiBTZXRQYXJhbWV0ZXJzKCkKICAgICAqCiAgICAgKiBAdXNlcyBSZWdpc3Rlck1vZHVsZVBsdWdpbigpCiAgICAgKiBAdXNlcyBSZXN0cmljdFVua25vd25QYXJhbXMoKQogICAgICogQHVzZXMgQ3JlYXRlUGFyYW1ldGVyKCkKICAgICAqIEB1c2VzIFNldFBhcmFtZXRlclR5cGUoKQogICAgICogQHVzZXMgTGFuZygpCiAgICAgKiBAdXNlcyBDTEVBTl9TVFJJTkcKICAgICAqIEB1c2VzIENMRUFOX0lOVAogICAgICogQHVzZXMgQ0xFQU5fTk9ORQogICAgICoKICAgICAqIEByZXR1cm4gdm9pZAogICAgICogQGFjY2VzcyBwdWJsaWMKICAgICAqLwogICAgZnVuY3Rpb24gU2V0UGFyYW1ldGVycygpCiAgICB7CiAgICAgICAgJHRoaXMtPlJlZ2lzdGVyTW9kdWxlUGx1Z2luKCk7CiAgICAgICAgJHRoaXMtPlJlc3RyaWN0VW5rbm93blBhcmFtcygpOwoKCiAgICAgICAgLyoKICAgICAgICAgKiBzZXR1cCBtb2R1bGUgcGFyYW1ldGVycwogICAgICAgICAqLwogICAgICAgIC8qIFRhZyBQYXJhbWV0ZXJzICovCiAgICAgICAgJHRoaXMtPkNyZWF0ZVBhcmFtZXRlcignaHJlZicsICcnLCAkdGhpcy0+TGFuZygnaGVscF9ocmVmJyksIGZhbHNlKTsKICAgICAgICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnaHJlZicsIENMRUFOX1NUUklORyk7CiAgICAgICAgJHRoaXMtPkNyZWF0ZVBhcmFtZXRlcignZGlzcGxheScsICdib3gnLCAkdGhpcy0+TGFuZygnaGVscF9kaXNwbGF5JyksIHRydWUpOwogICAgICAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdkaXNwbGF5JywgQ0xFQU5fU1RSSU5HKTsKICAgICAgICAkdGhpcy0+Q3JlYXRlUGFyYW1ldGVyKCdncm91cCcsICcnLCAkdGhpcy0+TGFuZygnaGVscF9ncm91cCcpLCB0cnVlKTsKICAgICAgICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnZ3JvdXAnLCBDTEVBTl9TVFJJTkcpOwogICAgICAgICR0aGlzLT5DcmVhdGVQYXJhbWV0ZXIoJ2ZyYW1lYXR0cicsICd3aWR0aDogNDAwcHg7IGhlaWdodDogNDAwcHg7IHNjcm9sbGluZzogYXV0bzsnLCAkdGhpcy0+TGFuZygnaGVscF9mcmFtZWF0dHInKSwgdHJ1ZSk7CiAgICAgICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2ZyYW1lYXR0cicsIENMRUFOX1NUUklORyk7CiAgICAgICAgJHRoaXMtPkNyZWF0ZVBhcmFtZXRlcigndGl0bGUnLCAnYmFzZW5hbWUoJGhyZWYpJywgJHRoaXMtPkxhbmcoJ2hlbHBfdGl0bGUnKSwgdHJ1ZSk7CiAgICAgICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ3RpdGxlJywgQ0xFQU5fU1RSSU5HKTsKICAgICAgICAkdGhpcy0+Q3JlYXRlUGFyYW1ldGVyKCdleHRyYScsICcnLCAkdGhpcy0+TGFuZygnaGVscF9leHRyYScpLCB0cnVlKTsKICAgICAgICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnZXh0cmEnLCBDTEVBTl9OT05FKTsKICAgICAgICAkdGhpcy0+Q3JlYXRlUGFyYW1ldGVyKCd0ZXh0JywgJ2Jhc2VuYW1lKCRocmVmKScsICR0aGlzLT5MYW5nKCdoZWxwX3RleHQnKSwgdHJ1ZSk7CiAgICAgICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ3RleHQnLCBDTEVBTl9TVFJJTkcpOwogICAgICAgICR0aGlzLT5DcmVhdGVQYXJhbWV0ZXIoJ3RodW1ic3JjJywgJycsICR0aGlzLT5MYW5nKCdoZWxwX3RodW1ic3JjJyksIHRydWUpOwogICAgICAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCd0aHVtYnNyYycsIENMRUFOX1NUUklORyk7CiAgICAgICAgJHRoaXMtPkNyZWF0ZVBhcmFtZXRlcigndGh1bWJhbHQnLCAnYmFzZW5hbWUoJHRodW1ic3JjKScsICR0aGlzLT5MYW5nKCdoZWxwX3RodW1iYWx0JyksIHRydWUpOwogICAgICAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCd0aHVtYmFsdCcsIENMRUFOX1NUUklORyk7CiAgICAgICAgJHRoaXMtPkNyZWF0ZVBhcmFtZXRlcigndGh1bWJleHRyYScsICcnLCAkdGhpcy0+TGFuZygnaGVscF90aHVtYmV4dHJhJyksIHRydWUpOwogICAgICAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCd0aHVtYmV4dHJhJywgQ0xFQU5fTk9ORSk7CgogICAgICAgIC8qIEx5dGVib3ggR2xvYmFsIENvbmZpZ3VyYXRpb24gKi8KICAgICAgICAkdGhpcy0+Q3JlYXRlUGFyYW1ldGVyKCd0aGVtZScsICdncmV5JywgJHRoaXMtPkxhbmcoJ2hlbHBfdGhlbWUnKSwgdHJ1ZSk7CiAgICAgICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ3RoZW1lJywgQ0xFQU5fU1RSSU5HKTsKICAgICAgICAkdGhpcy0+Q3JlYXRlUGFyYW1ldGVyKCdoaWRlRmxhc2gnLCAxLCAkdGhpcy0+TGFuZygnaGVscF9oaWRlRmxhc2gnKSwgdHJ1ZSk7CiAgICAgICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2hpZGVGbGFzaCcsIENMRUFOX0lOVCk7CiAgICAgICAgJHRoaXMtPkNyZWF0ZVBhcmFtZXRlcignb3V0ZXJCb3JkZXInLCAxLCAkdGhpcy0+TGFuZygnaGVscF9vdXRlckJvcmRlcicpLCB0cnVlKTsKICAgICAgICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnb3V0ZXJCb3JkZXInLCBDTEVBTl9JTlQpOwogICAgICAgICR0aGlzLT5DcmVhdGVQYXJhbWV0ZXIoJ3Jlc2l6ZVNwZWVkJywgOCwgJHRoaXMtPkxhbmcoJ2hlbHBfcmVzaXplU3BlZWQnKSwgdHJ1ZSk7CiAgICAgICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ3Jlc2l6ZVNwZWVkJywgQ0xFQU5fSU5UKTsKICAgICAgICAkdGhpcy0+Q3JlYXRlUGFyYW1ldGVyKCdtYXhPcGFjaXR5JywgODAsICR0aGlzLT5MYW5nKCdoZWxwX21heE9wYWNpdHknKSwgdHJ1ZSk7CiAgICAgICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ21heE9wYWNpdHknLCBDTEVBTl9JTlQpOwogICAgICAgICR0aGlzLT5DcmVhdGVQYXJhbWV0ZXIoJ25hdlR5cGUnLCAxLCAkdGhpcy0+TGFuZygnaGVscF9uYXZUeXBlJyksIHRydWUpOwogICAgICAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCduYXZUeXBlJywgQ0xFQU5fSU5UKTsKICAgICAgICAkdGhpcy0+Q3JlYXRlUGFyYW1ldGVyKCdhdXRvUmVzaXplJywgMSwgJHRoaXMtPkxhbmcoJ2hlbHBfYXV0b1Jlc2l6ZScpLCB0cnVlKTsKICAgICAgICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnYXV0b1Jlc2l6ZScsIENMRUFOX0lOVCk7CiAgICAgICAgJHRoaXMtPkNyZWF0ZVBhcmFtZXRlcignZG9BbmltYXRpb25zJywgMSwgJHRoaXMtPkxhbmcoJ2hlbHBfZG9BbmltYXRpb25zJyksIHRydWUpOwogICAgICAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdkb0FuaW1hdGlvbnMnLCBDTEVBTl9JTlQpOwogICAgICAgICR0aGlzLT5DcmVhdGVQYXJhbWV0ZXIoJ2JvcmRlclNpemUnLCAxMiwgJHRoaXMtPkxhbmcoJ2hlbHBfYm9yZGVyU2l6ZScpLCB0cnVlKTsKICAgICAgICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnYm9yZGVyU2l6ZScsIENMRUFOX0lOVCk7CgogICAgICAgIC8qIEx5dGVib3ggU2xpZGVzaG93IE9wdGlvbnMgKi8KICAgICAgICAkdGhpcy0+Q3JlYXRlUGFyYW1ldGVyKCdzbGlkZUludGVydmFsJywgNDAwMCwgJHRoaXMtPkxhbmcoJ2hlbHBfc2xpZGVJbnRlcnZhbCcpLCB0cnVlKTsKICAgICAgICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnc2xpZGVJbnRlcnZhbCcsIENMRUFOX0lOVCk7CiAgICAgICAgJHRoaXMtPkNyZWF0ZVBhcmFtZXRlcignc2hvd05hdmlnYXRpb24nLCAxLCAkdGhpcy0+TGFuZygnaGVscF9zaG93TmF2aWdhdGlvbicpLCB0cnVlKTsKICAgICAgICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnc2hvd05hdmlnYXRpb24nLCBDTEVBTl9JTlQpOwogICAgICAgICR0aGlzLT5DcmVhdGVQYXJhbWV0ZXIoJ3Nob3dDbG9zZScsIDEsICR0aGlzLT5MYW5nKCdoZWxwX3Nob3dDbG9zZScpLCB0cnVlKTsKICAgICAgICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnc2hvd0Nsb3NlJywgQ0xFQU5fSU5UKTsKICAgICAgICAkdGhpcy0+Q3JlYXRlUGFyYW1ldGVyKCdzaG93RGV0YWlscycsIDEsICR0aGlzLT5MYW5nKCdoZWxwX3Nob3dEZXRhaWxzJyksIHRydWUpOwogICAgICAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdzaG93RGV0YWlscycsIENMRUFOX0lOVCk7CiAgICAgICAgJHRoaXMtPkNyZWF0ZVBhcmFtZXRlcignc2hvd1BsYXlQYXVzZScsIDEsICR0aGlzLT5MYW5nKCdoZWxwX3Nob3dQbGF5UGF1c2UnKSwgdHJ1ZSk7CiAgICAgICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ3Nob3dQbGF5UGF1c2UnLCBDTEVBTl9JTlQpOwogICAgICAgICR0aGlzLT5DcmVhdGVQYXJhbWV0ZXIoJ2F1dG9FbmQnLCAxLCAkdGhpcy0+TGFuZygnaGVscF9hdXRvRW5kJyksIHRydWUpOwogICAgICAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdhdXRvRW5kJywgQ0xFQU5fSU5UKTsKICAgICAgICAkdGhpcy0+Q3JlYXRlUGFyYW1ldGVyKCdwYXVzZU9uTmV4dENsaWNrJywgMCwgJHRoaXMtPkxhbmcoJ2hlbHBfcGF1c2VPbk5leHRDbGljaycpLCB0cnVlKTsKICAgICAgICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgncGF1c2VPbk5leHRDbGljaycsIENMRUFOX0lOVCk7CiAgICAgICAgJHRoaXMtPkNyZWF0ZVBhcmFtZXRlcigncGF1c2VPblByZXZDbGljaycsIDEsICR0aGlzLT5MYW5nKCdoZWxwX3BhdXNlT25QcmV2Q2xpY2snKSwgdHJ1ZSk7CiAgICAgICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ3BhdXNlT25QcmV2Q2xpY2snLCBDTEVBTl9JTlQpOwoKICAgICAgICAkdGhpcy0+Q3JlYXRlUGFyYW1ldGVyKCdjb25maWcnLCAkdGhpcy0+TGFuZygnaGVscF9jb25maWcnKSwgJycsIHRydWUpOwogICAgICAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdjb25maWcnLCBDTEVBTl9OT05FKTsKICAgIH0KfQoKPz4K]]></data>
	</file>
	<file>
	  <filename>/method.install.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qIHZpbTogc2V0IGV4cGFuZHRhYiB0YWJzdG9wPTQgc2hpZnR3aWR0aD00IHNvZnR0YWJzdG9wPTQ6ICovCgovKioKICogTHl0ZWJveCBtb2R1bGUgZm9yIENNU01TIC0gQSBzaW1wbGUgd3JhcHBlciB0byB0aGUgTHl0ZWJveCBKYXZhU2NyaXB0IGNsYXNzLgogKgogKiBQSFAgdmVyc2lvbnMgNCBhbmQgNQogKgogKiBMSUNFTlNFOgogKiBDb3B5cmlnaHQgKGMpIDIwMDgtMjAxMCwgQ2Fyc3RlbiBXaWVkbWFubgogKiBBbGwgcmlnaHRzIHJlc2VydmVkLgogKgogKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCiAqIGFyZSBtZXQ6CiAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CiAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQogKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgogKgogKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAogKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKICogQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCiAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCiAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCiAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQogKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAogKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCiAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKICogU1VDSCBEQU1BR0UuCiAqCiAqIEBjYXRlZ29yeSAgIE1vZHVsZXMKICogQHBhY2thZ2UgICAgTHl0ZWJveAogKiBAYXV0aG9yICAgICBDYXJzdGVuIFdpZWRtYW5uIDxjYXJzdGVuX3N0dGd0QGdteC5kZT4KICogQGNvcHlyaWdodCAgMjAwOC0yMDEwIENhcnN0ZW4gV2llZG1hbm4KICogQGxpY2Vuc2UgICAgaHR0cDovL3d3dy5mcmVlYnNkLm9yZy9jb3B5cmlnaHQvZnJlZWJzZC1saWNlbnNlLmh0bWwgRnJlZUJTRCBMaWNlbnNlCiAqIEB2ZXJzaW9uICAgIFNWTjogJElkOiBtZXRob2QuaW5zdGFsbC5waHAgMTYgMjAxMC0xMS0yOCAxNjozODoyMVogd2llZG1hbm4gJAogKiBAbGluayAgICAgICBodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL2x5dGVib3gKICovCgppZiAoIWlzc2V0KCRnQ21zKSkgewogICAgZXhpdDsKfQoKLyoqCiAqIEluc3RhbGxzIHRoZSBMeXRlYm94IG1vZHVsZS4KICoKICogQGNhdGVnb3J5ICAgTW9kdWxlcwogKiBAcGFja2FnZSAgICBMeXRlYm94CiAqIEBhdXRob3IgICAgIENhcnN0ZW4gV2llZG1hbm4gPGNhcnN0ZW5fc3R0Z3RAZ214LmRlPgogKiBAbGljZW5zZSAgICBodHRwOi8vd3d3LmZyZWVic2Qub3JnL2NvcHlyaWdodC9mcmVlYnNkLWxpY2Vuc2UuaHRtbCAgRnJlZUJTRCBMaWNlbnNlCiAqIEB2ZXJzaW9uICAgIFJlbGVhc2U6IDAuMy4xYmV0YTEKICogQGxpbmsgICAgICAgaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9wcm9qZWN0cy9seXRlYm94CiAqIEBzZWUgICAgICAgIEx5dGVib3gKICovCmNsYXNzIEx5dGVib3hfSW5zdGFsbCBleHRlbmRzIEx5dGVib3gKewogICAgLyoqCiAgICAgKiBMeXRlYm94X0luc3RhbGwoKQogICAgICoKICAgICAqIEBwYXJhbSBvYmplY3QgJiRnQ21zIHRoZSBnQ21zIG9iamVjdAogICAgICoKICAgICAqIEB1c2VzIEx5dGVib3goKQogICAgICoKICAgICAqIEByZXR1cm4gdm9pZAogICAgICogQGFjY2VzcyBwdWJsaWMKICAgICAqLwogICAgZnVuY3Rpb24gTHl0ZWJveF9JbnN0YWxsKCkKICAgIHsKICAgICAgICBwYXJlbnQ6Okx5dGVib3goKTsKICAgIH0KCiAgICAvKioKICAgICAqIEdldFN0eWxlc2hlZXQoKQogICAgICoKICAgICAqIEBhdXRob3IgIE1hcmt1cyBGLiBIYXkKICAgICAqIEBsaWNlbnNlIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL2xpY2Vuc2VzL2J5LzMuMC8gQ3JlYXRpdmUgQ29tbW9ucyBBdHRyaWJ1dGlvbiAzLjAgTGljZW5zZQogICAgICogQHZlcnNpb24gUmVsZWFzZTogMy4yMgogICAgICogQGxpbmsgICAgaHR0cDovL2RvbGVtLmNvbS9seXRlYm94LwogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nIHRoZSBzdHlsZXNoZWV0IGNvbnRlbnQKICAgICAqIEBhY2Nlc3MgcHJvdGVjdGVkCiAgICAgKi8KICAgIGZ1bmN0aW9uIEdldFN0eWxlc2hlZXQoKQogICAgewogICAgICAgICRzdHlsZXNoZWV0Y29udGVudCA9IDw8PEVPVAojbGJPdmVybGF5IHsgcG9zaXRpb246IGZpeGVkOyB0b3A6IDA7IGxlZnQ6IDA7IHotaW5kZXg6IDk5OTk4OyB3aWR0aDogMTAwJTsgaGVpZ2h0OiA1MDBweDsgfQogICAgI2xiT3ZlcmxheS5ncmV5IHsgYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMDsgfQogICAgI2xiT3ZlcmxheS5yZWQgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjMzMwMDAwOyB9CiAgICAjbGJPdmVybGF5LmdyZWVuIHsgYmFja2dyb3VuZC1jb2xvcjogIzAwMzMwMDsgfQogICAgI2xiT3ZlcmxheS5ibHVlIHsgYmFja2dyb3VuZC1jb2xvcjogIzAxMUQ1MDsgfQogICAgI2xiT3ZlcmxheS5nb2xkIHsgYmFja2dyb3VuZC1jb2xvcjogIzY2NjYwMDsgfQoKI2xiTWFpbiB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgbGVmdDogMDsgd2lkdGg6IDEwMCU7IHotaW5kZXg6IDk5OTk5OyB0ZXh0LWFsaWduOiBjZW50ZXI7IGxpbmUtaGVpZ2h0OiAwOyB9CiNsYk1haW4gYSBpbWcgeyBib3JkZXI6IG5vbmU7IH0KCiNsYk91dGVyQ29udGFpbmVyIHsgcG9zaXRpb246IHJlbGF0aXZlOyBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOyB3aWR0aDogMjAwcHg7IGhlaWdodDogMjAwcHg7IG1hcmdpbjogMCBhdXRvOyB9CiAgICAjbGJPdXRlckNvbnRhaW5lci5ncmV5IHsgYm9yZGVyOiAzcHggc29saWQgIzg4ODg4ODsgfQogICAgI2xiT3V0ZXJDb250YWluZXIucmVkIHsgYm9yZGVyOiAzcHggc29saWQgI0REMDAwMDsgfQogICAgI2xiT3V0ZXJDb250YWluZXIuZ3JlZW4geyBib3JkZXI6IDNweCBzb2xpZCAjMDBCMDAwOyB9CiAgICAjbGJPdXRlckNvbnRhaW5lci5ibHVlIHsgYm9yZGVyOiAzcHggc29saWQgIzVGODlEODsgfQogICAgI2xiT3V0ZXJDb250YWluZXIuZ29sZCB7IGJvcmRlcjogM3B4IHNvbGlkICNCMEIwMDA7IH0KCiNsYkRldGFpbHNDb250YWluZXIgeyAgIGZvbnQ6IDEwcHggVmVyZGFuYSwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOyB3aWR0aDogMTAwJTsgbGluZS1oZWlnaHQ6IDEuNGVtOyBvdmVyZmxvdzogYXV0bzsgbWFyZ2luOiAwIGF1dG87IH0KICAgICNsYkRldGFpbHNDb250YWluZXIuZ3JleSB7IGJvcmRlcjogM3B4IHNvbGlkICM4ODg4ODg7IGJvcmRlci10b3A6IG5vbmU7IH0KICAgICNsYkRldGFpbHNDb250YWluZXIucmVkIHsgYm9yZGVyOiAzcHggc29saWQgI0REMDAwMDsgYm9yZGVyLXRvcDogbm9uZTsgfQogICAgI2xiRGV0YWlsc0NvbnRhaW5lci5ncmVlbiB7IGJvcmRlcjogM3B4IHNvbGlkICMwMEIwMDA7IGJvcmRlci10b3A6IG5vbmU7IH0KICAgICNsYkRldGFpbHNDb250YWluZXIuYmx1ZSB7IGJvcmRlcjogM3B4IHNvbGlkICM1Rjg5RDg7IGJvcmRlci10b3A6IG5vbmU7IH0KICAgICNsYkRldGFpbHNDb250YWluZXIuZ29sZCB7IGJvcmRlcjogM3B4IHNvbGlkICNCMEIwMDA7IGJvcmRlci10b3A6IG5vbmU7IH0KCiNsYkltYWdlQ29udGFpbmVyLCAjbGJJZnJhbWVDb250YWluZXIgeyBwYWRkaW5nOiAxMHB4OyB9CiNsYkxvYWRpbmcgeyBwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogNDUlOyBsZWZ0OiAwJTsgaGVpZ2h0OiAzMnB4OyB3aWR0aDogMTAwJTsgdGV4dC1hbGlnbjogY2VudGVyOyBsaW5lLWhlaWdodDogMDsgYmFja2dyb3VuZDogdXJsKG1vZHVsZXMvTHl0ZWJveC9pbWFnZXMvbG9hZGluZy5naWYpIGNlbnRlciBuby1yZXBlYXQ7IH0KCiNsYkhvdmVyTmF2IHsgcG9zaXRpb246IGFic29sdXRlOyB0b3A6IDA7IGxlZnQ6IDA7IGhlaWdodDogMTAwJTsgd2lkdGg6IDEwMCU7IHotaW5kZXg6IDEwOyB9CiNsYkltYWdlQ29udGFpbmVyPiNsYkhvdmVyTmF2IHsgbGVmdDogMDsgfQojbGJIb3Zlck5hdiBhIHsgb3V0bGluZTogbm9uZTsgfQoKI2xiUHJldiB7IHdpZHRoOiA0OSU7IGhlaWdodDogMTAwJTsgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgdXJsKG1vZHVsZXMvTHl0ZWJveC9pbWFnZXMvYmxhbmsuZ2lmKSBuby1yZXBlYXQ7IGRpc3BsYXk6IGJsb2NrOyBsZWZ0OiAwOyBmbG9hdDogbGVmdDsgfQogICAgI2xiUHJldi5ncmV5OmhvdmVyLCAjbGJQcmV2LmdyZXk6dmlzaXRlZDpob3ZlciB7IGJhY2tncm91bmQ6IHVybChtb2R1bGVzL0x5dGVib3gvaW1hZ2VzL3ByZXZfZ3JleS5naWYpIGxlZnQgMTUlIG5vLXJlcGVhdDsgfQogICAgI2xiUHJldi5yZWQ6aG92ZXIsICNsYlByZXYucmVkOnZpc2l0ZWQ6aG92ZXIgeyBiYWNrZ3JvdW5kOiB1cmwobW9kdWxlcy9MeXRlYm94L2ltYWdlcy9wcmV2X3JlZC5naWYpIGxlZnQgMTUlIG5vLXJlcGVhdDsgfQogICAgI2xiUHJldi5ncmVlbjpob3ZlciwgI2xiUHJldi5ncmVlbjp2aXNpdGVkOmhvdmVyIHsgYmFja2dyb3VuZDogdXJsKG1vZHVsZXMvTHl0ZWJveC9pbWFnZXMvcHJldl9ncmVlbi5naWYpIGxlZnQgMTUlIG5vLXJlcGVhdDsgfQogICAgI2xiUHJldi5ibHVlOmhvdmVyLCAjbGJQcmV2LmJsdWU6dmlzaXRlZDpob3ZlciB7IGJhY2tncm91bmQ6IHVybChtb2R1bGVzL0x5dGVib3gvaW1hZ2VzL3ByZXZfYmx1ZS5naWYpIGxlZnQgMTUlIG5vLXJlcGVhdDsgfQogICAgI2xiUHJldi5nb2xkOmhvdmVyLCAjbGJQcmV2LmdvbGQ6dmlzaXRlZDpob3ZlciB7IGJhY2tncm91bmQ6IHVybChtb2R1bGVzL0x5dGVib3gvaW1hZ2VzL3ByZXZfZ29sZC5naWYpIGxlZnQgMTUlIG5vLXJlcGVhdDsgfQoKI2xiTmV4dCB7IHdpZHRoOiA0OSU7IGhlaWdodDogMTAwJTsgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgdXJsKG1vZHVsZXMvTHl0ZWJveC9pbWFnZXMvYmxhbmsuZ2lmKSBuby1yZXBlYXQ7IGRpc3BsYXk6IGJsb2NrOyByaWdodDogMDsgZmxvYXQ6IHJpZ2h0OyB9CiAgICAjbGJOZXh0LmdyZXk6aG92ZXIsICNsYk5leHQuZ3JleTp2aXNpdGVkOmhvdmVyIHsgYmFja2dyb3VuZDogdXJsKG1vZHVsZXMvTHl0ZWJveC9pbWFnZXMvbmV4dF9ncmV5LmdpZikgcmlnaHQgMTUlIG5vLXJlcGVhdDsgfQogICAgI2xiTmV4dC5yZWQ6aG92ZXIsICNsYk5leHQucmVkOnZpc2l0ZWQ6aG92ZXIgeyBiYWNrZ3JvdW5kOiB1cmwobW9kdWxlcy9MeXRlYm94L2ltYWdlcy9uZXh0X3JlZC5naWYpIHJpZ2h0IDE1JSBuby1yZXBlYXQ7IH0KICAgICNsYk5leHQuZ3JlZW46aG92ZXIsICNsYk5leHQuZ3JlZW46dmlzaXRlZDpob3ZlciB7IGJhY2tncm91bmQ6IHVybChtb2R1bGVzL0x5dGVib3gvaW1hZ2VzL25leHRfZ3JlZW4uZ2lmKSByaWdodCAxNSUgbm8tcmVwZWF0OyB9CiAgICAjbGJOZXh0LmJsdWU6aG92ZXIsICNsYk5leHQuYmx1ZTp2aXNpdGVkOmhvdmVyIHsgYmFja2dyb3VuZDogdXJsKG1vZHVsZXMvTHl0ZWJveC9pbWFnZXMvbmV4dF9ibHVlLmdpZikgcmlnaHQgMTUlIG5vLXJlcGVhdDsgfQogICAgI2xiTmV4dC5nb2xkOmhvdmVyLCAjbGJOZXh0LmdvbGQ6dmlzaXRlZDpob3ZlciB7IGJhY2tncm91bmQ6IHVybChtb2R1bGVzL0x5dGVib3gvaW1hZ2VzL25leHRfZ29sZC5naWYpIHJpZ2h0IDE1JSBuby1yZXBlYXQ7IH0KCiNsYlByZXYyLCAjbGJOZXh0MiB7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgZm9udC13ZWlnaHQ6IGJvbGQ7IH0KICAgICNsYlByZXYyLmdyZXksICNsYk5leHQyLmdyZXksICNsYlNwYWNlci5ncmV5IHsgY29sb3I6ICMzMzMzMzM7IH0KICAgICNsYlByZXYyLnJlZCwgI2xiTmV4dDIucmVkLCAjbGJTcGFjZXIucmVkIHsgY29sb3I6ICM2MjAwMDA7IH0KICAgICNsYlByZXYyLmdyZWVuLCAjbGJOZXh0Mi5ncmVlbiwgI2xiU3BhY2VyLmdyZWVuIHsgY29sb3I6ICMwMDMzMDA7IH0KICAgICNsYlByZXYyLmJsdWUsICNsYk5leHQyLmJsdWUsICNsYlNwYWNlci5ibHVlIHsgY29sb3I6ICMwMTM3OUU7IH0KICAgICNsYlByZXYyLmdvbGQsICNsYk5leHQyLmdvbGQsICNsYlNwYWNlci5nb2xkIHsgY29sb3I6ICM2NjY2MDA7IH0KCiNsYlByZXYyX09mZiwgI2xiTmV4dDJfT2ZmIHsgZm9udC13ZWlnaHQ6IGJvbGQ7IH0KICAgICNsYlByZXYyX09mZi5ncmV5LCAjbGJOZXh0Ml9PZmYuZ3JleSB7IGNvbG9yOiAjQ0NDQ0NDOyB9CiAgICAjbGJQcmV2Ml9PZmYucmVkLCAjbGJOZXh0Ml9PZmYucmVkIHsgY29sb3I6ICNGRkNDQ0M7IH0KICAgICNsYlByZXYyX09mZi5ncmVlbiwgI2xiTmV4dDJfT2ZmLmdyZWVuIHsgY29sb3I6ICM4MkZGODI7IH0KICAgICNsYlByZXYyX09mZi5ibHVlLCAjbGJOZXh0Ml9PZmYuYmx1ZSB7IGNvbG9yOiAjQjdDQUVFOyB9CiAgICAjbGJQcmV2Ml9PZmYuZ29sZCwgI2xiTmV4dDJfT2ZmLmdvbGQgeyBjb2xvcjogI0UxRTEwMDsgfQoKI2xiRGV0YWlsc0RhdGEgeyBwYWRkaW5nOiAwIDEwcHg7IH0KICAgICNsYkRldGFpbHNEYXRhLmdyZXkgeyBjb2xvcjogIzMzMzMzMzsgfQogICAgI2xiRGV0YWlsc0RhdGEucmVkIHsgY29sb3I6ICM2MjAwMDA7IH0KICAgICNsYkRldGFpbHNEYXRhLmdyZWVuIHsgY29sb3I6ICMwMDMzMDA7IH0KICAgICNsYkRldGFpbHNEYXRhLmJsdWUgeyBjb2xvcjogIzAxMzc5RTsgfQogICAgI2xiRGV0YWlsc0RhdGEuZ29sZCB7IGNvbG9yOiAjNjY2NjAwOyB9CgojbGJEZXRhaWxzIHsgd2lkdGg6IDYwJTsgZmxvYXQ6IGxlZnQ7IHRleHQtYWxpZ246IGxlZnQ7IH0KI2xiQ2FwdGlvbiB7IGRpc3BsYXk6IGJsb2NrOyBmb250LXdlaWdodDogYm9sZDsgfQojbGJOdW1iZXJEaXNwbGF5IHsgZmxvYXQ6IGxlZnQ7IGRpc3BsYXk6IGJsb2NrOyBwYWRkaW5nLWJvdHRvbTogMS4wZW07IH0KI2xiTmF2RGlzcGxheSB7IGZsb2F0OiBsZWZ0OyBkaXNwbGF5OiBibG9jazsgcGFkZGluZy1ib3R0b206IDEuMGVtOyB9CgojbGJDbG9zZSB7IHdpZHRoOiA2NHB4OyBoZWlnaHQ6IDI4cHg7IGZsb2F0OiByaWdodDsgbWFyZ2luLWJvdHRvbTogMXB4OyB9CiAgICAjbGJDbG9zZS5ncmV5IHsgYmFja2dyb3VuZDogdXJsKG1vZHVsZXMvTHl0ZWJveC9pbWFnZXMvY2xvc2VfZ3JleS5wbmcpIG5vLXJlcGVhdDsgfQogICAgI2xiQ2xvc2UucmVkIHsgYmFja2dyb3VuZDogdXJsKG1vZHVsZXMvTHl0ZWJveC9pbWFnZXMvY2xvc2VfcmVkLnBuZykgbm8tcmVwZWF0OyB9CiAgICAjbGJDbG9zZS5ncmVlbiB7IGJhY2tncm91bmQ6IHVybChtb2R1bGVzL0x5dGVib3gvaW1hZ2VzL2Nsb3NlX2dyZWVuLnBuZykgbm8tcmVwZWF0OyB9CiAgICAjbGJDbG9zZS5ibHVlIHsgYmFja2dyb3VuZDogdXJsKG1vZHVsZXMvTHl0ZWJveC9pbWFnZXMvY2xvc2VfYmx1ZS5wbmcpIG5vLXJlcGVhdDsgfQogICAgI2xiQ2xvc2UuZ29sZCB7IGJhY2tncm91bmQ6IHVybChtb2R1bGVzL0x5dGVib3gvaW1hZ2VzL2Nsb3NlX2dvbGQucG5nKSBuby1yZXBlYXQ7IH0KCiNsYlBsYXkgeyB3aWR0aDogNjRweDsgaGVpZ2h0OiAyOHB4OyBmbG9hdDogcmlnaHQ7IG1hcmdpbi1ib3R0b206IDFweDsgfQogICAgI2xiUGxheS5ncmV5IHsgYmFja2dyb3VuZDogdXJsKG1vZHVsZXMvTHl0ZWJveC9pbWFnZXMvcGxheV9ncmV5LnBuZykgbm8tcmVwZWF0OyB9CiAgICAjbGJQbGF5LnJlZCB7IGJhY2tncm91bmQ6IHVybChtb2R1bGVzL0x5dGVib3gvaW1hZ2VzL3BsYXlfcmVkLnBuZykgbm8tcmVwZWF0OyB9CiAgICAjbGJQbGF5LmdyZWVuIHsgYmFja2dyb3VuZDogdXJsKG1vZHVsZXMvTHl0ZWJveC9pbWFnZXMvcGxheV9ncmVlbi5wbmcpIG5vLXJlcGVhdDsgfQogICAgI2xiUGxheS5ibHVlIHsgYmFja2dyb3VuZDogdXJsKG1vZHVsZXMvTHl0ZWJveC9pbWFnZXMvcGxheV9ibHVlLnBuZykgbm8tcmVwZWF0OyB9CiAgICAjbGJQbGF5LmdvbGQgeyBiYWNrZ3JvdW5kOiB1cmwobW9kdWxlcy9MeXRlYm94L2ltYWdlcy9wbGF5X2dvbGQucG5nKSBuby1yZXBlYXQ7IH0KCiNsYlBhdXNlIHsgd2lkdGg6IDY0cHg7IGhlaWdodDogMjhweDsgZmxvYXQ6IHJpZ2h0OyBtYXJnaW4tYm90dG9tOiAxcHg7IH0KICAgICNsYlBhdXNlLmdyZXkgeyBiYWNrZ3JvdW5kOiB1cmwobW9kdWxlcy9MeXRlYm94L2ltYWdlcy9wYXVzZV9ncmV5LnBuZykgbm8tcmVwZWF0OyB9CiAgICAjbGJQYXVzZS5yZWQgeyBiYWNrZ3JvdW5kOiB1cmwobW9kdWxlcy9MeXRlYm94L2ltYWdlcy9wYXVzZV9yZWQucG5nKSBuby1yZXBlYXQ7IH0KICAgICNsYlBhdXNlLmdyZWVuIHsgYmFja2dyb3VuZDogdXJsKG1vZHVsZXMvTHl0ZWJveC9pbWFnZXMvcGF1c2VfZ3JlZW4ucG5nKSBuby1yZXBlYXQ7IH0KICAgICNsYlBhdXNlLmJsdWUgeyBiYWNrZ3JvdW5kOiB1cmwobW9kdWxlcy9MeXRlYm94L2ltYWdlcy9wYXVzZV9ibHVlLnBuZykgbm8tcmVwZWF0OyB9CiAgICAjbGJQYXVzZS5nb2xkIHsgYmFja2dyb3VuZDogdXJsKG1vZHVsZXMvTHl0ZWJveC9pbWFnZXMvcGF1c2VfZ29sZC5wbmcpIG5vLXJlcGVhdDsgfQpFT1Q7CgogICAgICAgIHJldHVybiB1dGY4X2VuY29kZSgkc3R5bGVzaGVldGNvbnRlbnQpOwogICAgfQoKICAgIC8qKgogICAgICogRG9JbnN0YWxsKCkKICAgICAqCiAgICAgKiBAdXNlcyBHZXRTdHlsZXNoZWV0T3BlcmF0aW9ucygpCiAgICAgKiBAdXNlcyBTdHlsZXNoZWV0KCkKICAgICAqIEB1c2VzIEluc2VydFN0eWxlc2hlZXQoKQogICAgICogQHVzZXMgU2V0UHJlZmVyZW5jZSgpCiAgICAgKiBAdXNlcyBBdWRpdCgpCiAgICAgKiBAdXNlcyBMYW5nKCkKICAgICAqIEB1c2VzIGNtc21zKCkKICAgICAqIEB1c2VzIEdldFZlcnNpb24oKQogICAgICogQHVzZXMgR2V0U3R5bGVzaGVldCgpCiAgICAgKgogICAgICogQHJldHVybiB2b2lkCiAgICAgKiBAYWNjZXNzIHB1YmxpYwogICAgICovCiAgICBmdW5jdGlvbiBEb0luc3RhbGwoKQogICAgewoKICAgICAgICAvKgogICAgICAgICAqIGNyZWF0ZSBuZXcgc3R5bGVzaGVldAogICAgICAgICAqLwogICAgICAgICRzdHlsZXNoZWV0b3BzID0mICBjbXNtcygpLT5HZXRTdHlsZXNoZWV0T3BlcmF0aW9ucygpOwogICAgICAgICRzdHlsZXNoZWV0ICAgID0gIG5ldyBTdHlsZXNoZWV0KCk7CgogICAgICAgICRzdHlsZXNoZWV0LT5uYW1lICAgICAgID0gJ01vZHVsZTogTHl0ZWJveCc7CiAgICAgICAgJHN0eWxlc2hlZXQtPnZhbHVlICAgICAgPSAkdGhpcy0+R2V0U3R5bGVzaGVldCgpOwogICAgICAgICRzdHlsZXNoZWV0LT5tZWRpYV90eXBlID0gJ3Byb2plY3Rpb24sIHNjcmVlbic7CgogICAgICAgIC8qCiAgICAgICAgICogc2F2ZSBzdHlsZXNoZWV0IGluIGRhdGFiYXNlCiAgICAgICAgICovCiAgICAgICAgJGNzc2lkID0gJHN0eWxlc2hlZXRvcHMtPkluc2VydFN0eWxlc2hlZXQoJHN0eWxlc2hlZXQpOwogICAgICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlKCdjc3NpZCcsIChzdHJpbmcpICRjc3NpZCk7CgogICAgICAgIC8qCiAgICAgICAgICogcHV0IG1lbnRpb24gaW50byB0aGUgYWRtaW4gbG9nCiAgICAgICAgICovCiAgICAgICAgJHRoaXMtPkF1ZGl0KDAsICR0aGlzLT5MYW5nKCdmcmllbmRseW5hbWUnKSwgJHRoaXMtPkxhbmcoJ2luc3RhbGxlZCcsICR0aGlzLT5HZXRWZXJzaW9uKCkpKTsKICAgIH0KfQoKJGluc3RhbGwgPSBuZXcgTHl0ZWJveF9JbnN0YWxsKCRnQ21zKTsKJGluc3RhbGwtPkRvSW5zdGFsbCgpOwoKPz4K]]></data>
	</file>
	<file>
	  <filename>/method.uninstall.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qIHZpbTogc2V0IGV4cGFuZHRhYiB0YWJzdG9wPTQgc2hpZnR3aWR0aD00IHNvZnR0YWJzdG9wPTQ6ICovCgovKioKICogTHl0ZWJveCBtb2R1bGUgZm9yIENNU01TIC0gQSBzaW1wbGUgd3JhcHBlciB0byB0aGUgTHl0ZWJveCBKYXZhU2NyaXB0IGNsYXNzLgogKgogKiBQSFAgdmVyc2lvbnMgNCBhbmQgNQogKgogKiBMSUNFTlNFOgogKiBDb3B5cmlnaHQgKGMpIDIwMDgtMjAxMCwgQ2Fyc3RlbiBXaWVkbWFubgogKiBBbGwgcmlnaHRzIHJlc2VydmVkLgogKgogKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCiAqIGFyZSBtZXQ6CiAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CiAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQogKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgogKgogKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAogKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKICogQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCiAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCiAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCiAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQogKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAogKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCiAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKICogU1VDSCBEQU1BR0UuCiAqCiAqIEBjYXRlZ29yeSAgIE1vZHVsZXMKICogQHBhY2thZ2UgICAgTHl0ZWJveAogKiBAYXV0aG9yICAgICBDYXJzdGVuIFdpZWRtYW5uIDxjYXJzdGVuX3N0dGd0QGdteC5kZT4KICogQGNvcHlyaWdodCAgMjAwOC0yMDEwIENhcnN0ZW4gV2llZG1hbm4KICogQGxpY2Vuc2UgICAgaHR0cDovL3d3dy5mcmVlYnNkLm9yZy9jb3B5cmlnaHQvZnJlZWJzZC1saWNlbnNlLmh0bWwgRnJlZUJTRCBMaWNlbnNlCiAqIEB2ZXJzaW9uICAgIFNWTjogJElkOiBtZXRob2QudW5pbnN0YWxsLnBocCAxNiAyMDEwLTExLTI4IDE2OjM4OjIxWiB3aWVkbWFubiAkCiAqIEBsaW5rICAgICAgIGh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvbHl0ZWJveAogKi8KCmlmICghaXNzZXQoJGdDbXMpKSB7CiAgICBleGl0Owp9CgovKioKICogVW5pbnN0YWxscyB0aGUgTHl0ZWJveCBtb2R1bGUuCiAqCiAqIEBjYXRlZ29yeSAgIE1vZHVsZXMKICogQHBhY2thZ2UgICAgTHl0ZWJveAogKiBAYXV0aG9yICAgICBDYXJzdGVuIFdpZWRtYW5uIDxjYXJzdGVuX3N0dGd0QGdteC5kZT4KICogQGxpY2Vuc2UgICAgaHR0cDovL3d3dy5mcmVlYnNkLm9yZy9jb3B5cmlnaHQvZnJlZWJzZC1saWNlbnNlLmh0bWwgIEZyZWVCU0QgTGljZW5zZQogKiBAdmVyc2lvbiAgICBSZWxlYXNlOiAwLjMuMWJldGExCiAqIEBsaW5rICAgICAgIGh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvbHl0ZWJveAogKiBAc2VlICAgICAgICBMeXRlYm94CiAqLwpjbGFzcyBMeXRlYm94X1VuaW5zdGFsbCBleHRlbmRzIEx5dGVib3gKewogICAgLyoqCiAgICAgKiBMeXRlYm94X1VuaW5zdGFsbCgpCiAgICAgKgogICAgICogQHVzZXMgTHl0ZWJveCgpCiAgICAgKgogICAgICogQHJldHVybiB2b2lkCiAgICAgKiBAYWNjZXNzIHB1YmxpYwogICAgICovCiAgICBmdW5jdGlvbiBMeXRlYm94X1VuaW5zdGFsbCgpCiAgICB7CiAgICAgICAgcGFyZW50OjpMeXRlYm94KCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBEb1VuaW5zdGFsbCgpCiAgICAgKgogICAgICogQHVzZXMgR2V0U3R5bGVzaGVldE9wZXJhdGlvbnMoKQogICAgICogQHVzZXMgRGVsZXRlU3R5bGVzaGVldEJ5SUQoKQogICAgICogQHVzZXMgR2V0UHJlZmVyZW5jZSgpCiAgICAgKiBAdXNlcyBSZW1vdmVQcmVmZXJlbmNlKCkKICAgICAqIEB1c2VzIEF1ZGl0KCkKICAgICAqIEB1c2VzIExhbmcoKQogICAgICogQHVzZXMgY21zbXMoKQogICAgICoKICAgICAqIEByZXR1cm4gdm9pZAogICAgICogQGFjY2VzcyBwdWJsaWMKICAgICAqLwogICAgZnVuY3Rpb24gRG9Vbmluc3RhbGwoKQogICAgewogICAgICAgIC8qCiAgICAgICAgICogcmVtb3ZlIHN0eWxlc2hlZXQgZnJvbSBkYXRhYmFzZQogICAgICAgICAqLwogICAgICAgICRjc3NpZCA9IChpbnQpICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdjc3NpZCcsICctMScpOwogICAgICAgIGlmICgtMSAhPSAkY3NzaWQpIHsKICAgICAgICAgICAgJHN0eWxlc2hlZXRvcHMgPSYgY21zbXMoKS0+R2V0U3R5bGVzaGVldE9wZXJhdGlvbnMoKTsKICAgICAgICAgICAgJHN0eWxlc2hlZXRvcHMtPkRlbGV0ZVN0eWxlc2hlZXRCeUlEKCRjc3NpZCk7CiAgICAgICAgfQoKICAgICAgICAvKgogICAgICAgICAqIHJlbW92ZSBzZXR0aW5ncyBmcm9tIGRhdGFiYXNlCiAgICAgICAgICovCiAgICAgICAgJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoKTsKCiAgICAgICAgLyoKICAgICAgICAgKiBwdXQgbWVudGlvbiBpbnRvIHRoZSBhZG1pbiBsb2cKICAgICAgICAgKi8KICAgICAgICAkdGhpcy0+QXVkaXQoMCwgJHRoaXMtPkxhbmcoJ2ZyaWVuZGx5bmFtZScpLCAkdGhpcy0+TGFuZygndW5pbnN0YWxsZWQnKSk7CiAgICB9Cn0KCiR1bmluc3RhbGwgPSBuZXcgTHl0ZWJveF9Vbmluc3RhbGwoKTsKJHVuaW5zdGFsbC0+RG9Vbmluc3RhbGwoKTsKCj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/method.upgrade.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qIHZpbTogc2V0IGV4cGFuZHRhYiB0YWJzdG9wPTQgc2hpZnR3aWR0aD00IHNvZnR0YWJzdG9wPTQ6ICovCgovKioKICogTHl0ZWJveCBtb2R1bGUgZm9yIENNU01TIC0gQSBzaW1wbGUgd3JhcHBlciB0byB0aGUgTHl0ZWJveCBKYXZhU2NyaXB0IGNsYXNzLgogKgogKiBQSFAgdmVyc2lvbnMgNCBhbmQgNQogKgogKiBMSUNFTlNFOgogKiBDb3B5cmlnaHQgKGMpIDIwMDgtMjAxMCwgQ2Fyc3RlbiBXaWVkbWFubgogKiBBbGwgcmlnaHRzIHJlc2VydmVkLgogKgogKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCiAqIGFyZSBtZXQ6CiAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CiAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQogKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgogKgogKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAogKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKICogQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCiAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCiAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCiAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQogKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAogKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCiAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKICogU1VDSCBEQU1BR0UuCiAqCiAqIEBjYXRlZ29yeSAgIE1vZHVsZXMKICogQHBhY2thZ2UgICAgTHl0ZWJveAogKiBAYXV0aG9yICAgICBDYXJzdGVuIFdpZWRtYW5uIDxjYXJzdGVuX3N0dGd0QGdteC5kZT4KICogQGNvcHlyaWdodCAgMjAwOC0yMDEwIENhcnN0ZW4gV2llZG1hbm4KICogQGxpY2Vuc2UgICAgaHR0cDovL3d3dy5mcmVlYnNkLm9yZy9jb3B5cmlnaHQvZnJlZWJzZC1saWNlbnNlLmh0bWwgRnJlZUJTRCBMaWNlbnNlCiAqIEB2ZXJzaW9uICAgIFNWTjogJElkOiBtZXRob2QudXBncmFkZS5waHAgMTYgMjAxMC0xMS0yOCAxNjozODoyMVogd2llZG1hbm4gJAogKiBAbGluayAgICAgICBodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL2x5dGVib3gKICovCgppZiAoIWlzc2V0KCRnQ21zKSkgewogICAgZXhpdDsKfQoKLyoqCiAqIFVwZ3JhZGVzIHRoZSBMeXRlYm94IG1vZHVsZS4KICoKICogQGNhdGVnb3J5ICAgTW9kdWxlcwogKiBAcGFja2FnZSAgICBMeXRlYm94CiAqIEBhdXRob3IgICAgIENhcnN0ZW4gV2llZG1hbm4gPGNhcnN0ZW5fc3R0Z3RAZ214LmRlPgogKiBAbGljZW5zZSAgICBodHRwOi8vd3d3LmZyZWVic2Qub3JnL2NvcHlyaWdodC9mcmVlYnNkLWxpY2Vuc2UuaHRtbCAgRnJlZUJTRCBMaWNlbnNlCiAqIEB2ZXJzaW9uICAgIFJlbGVhc2U6IDAuMy4xYmV0YTEKICogQGxpbmsgICAgICAgaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9wcm9qZWN0cy9seXRlYm94CiAqIEBzZWUgICAgICAgIEx5dGVib3gKICovCmNsYXNzIEx5dGVib3hfVXBncmFkZSBleHRlbmRzIEx5dGVib3gKewogICAgLyoqCiAgICAgKiBjb250YWlucyB0aGUgdmVyc2lvbiBvZiB0aGUgb2xkIG1vZHVsZQogICAgICoKICAgICAqIEB2YXIgc3RyaW5nCiAgICAgKiBAYWNjZXNzIHByb3RlY3RlZAogICAgICovCiAgICB2YXIgJG9sZHZlcnNpb247CgogICAgLyoqCiAgICAgKiBjb250YWlucyB0aGUgdmVyc2lvbiBvZiB0aGUgbmV3IG1vZHVsZQogICAgICoKICAgICAqIEB2YXIgc3RyaW5nCiAgICAgKiBAYWNjZXNzIHByb3RlY3RlZAogICAgICovCiAgICB2YXIgJG5ld3ZlcnNpb247CgogICAgLyoqCiAgICAgKiBMeXRlYm94X1VwZ3JhZGUoKQogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJiRvbGR2ZXJzaW9uIFRoZSB2ZXJzaW9uIHdlIGFyZSB1cGdyYWRpbmcgZnJvbQogICAgICogQHBhcmFtIHN0cmluZyAmJG5ld3ZlcnNpb24gVGhlIHZlcnNpb24gd2UgYXJlIHVwZ3JhZGluZyB0bwogICAgICoKICAgICAqIEB1c2VzIEx5dGVib3goKQogICAgICogQHVzZXMgJG9sZHZlcnNpb24KICAgICAqIEB1c2VzICRuZXd2ZXJzaW9uCiAgICAgKgogICAgICogQHJldHVybiB2b2lkCiAgICAgKiBAYWNjZXNzIHB1YmxpYwogICAgICovCiAgICBmdW5jdGlvbiBMeXRlYm94X1VwZ3JhZGUoJiRvbGR2ZXJzaW9uLCAmJG5ld3ZlcnNpb24pCiAgICB7CiAgICAgICAgcGFyZW50OjpMeXRlYm94KCk7CgogICAgICAgICR0aGlzLT5vbGR2ZXJzaW9uID0mICRvbGR2ZXJzaW9uOwogICAgICAgICR0aGlzLT5uZXd2ZXJzaW9uID0mICRuZXd2ZXJzaW9uOwogICAgfQoKICAgIC8qKgogICAgICogRG9VcGdyYWRlKCkKICAgICAqCiAgICAgKiBAdXNlcyBBdWRpdCgpCiAgICAgKiBAdXNlcyBMYW5nKCkKICAgICAqIEB1c2VzIGNtc21zKCkKICAgICAqIEB1c2VzIEdldFZlcnNpb24oKQogICAgICogQHVzZXMgJG9sZHZlcnNpb24KICAgICAqCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqIEBhY2Nlc3MgcHVibGljCiAgICAgKi8KICAgIGZ1bmN0aW9uIERvVXBncmFkZSgpCiAgICB7CiAgICAgICAgLyoKICAgICAgICAgKiBtYWtlIHRoZSB1cGdyYWRlIHRhc2tzCiAgICAgICAgICovCiAgICAgICAgc3dpdGNoICgkdGhpcy0+b2xkdmVyc2lvbikgewogICAgICAgIGNhc2UgJzAuMi4xYmV0YTEnOgogICAgICAgICAgICAvKgogICAgICAgICAgICAgKiBhZGQgJ3Byb2plY3Rpb24nIHRvIHRoZSBzdHlsZXNoZWV0IG1lZGlhIHR5cGUKICAgICAgICAgICAgICovCiAgICAgICAgICAgICRjc3NpZCA9IChpbnQpICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdjc3NpZCcsICctMScpOwogICAgICAgICAgICBpZiAoLTEgIT0gJGNzc2lkKSB7CiAgICAgICAgICAgICAgICAkc3R5bGVzaGVldG9wcyAgPSYgY21zbXMoKS0+R2V0U3R5bGVzaGVldE9wZXJhdGlvbnMoKTsKICAgICAgICAgICAgICAgICRzdHlsZXNoZWV0ICAgICA9ICRzdHlsZXNoZWV0b3BzLT5Mb2FkU3R5bGVzaGVldEJ5SUQoJGNzc2lkKTsKICAgICAgICAgICAgICAgIGlmIChpc19vYmplY3QoJHN0eWxlc2hlZXQpKSB7CiAgICAgICAgICAgICAgICAgICAgJHN0eWxlc2hlZXQtPm1lZGlhX3R5cGUgICAgID0gZXhwbG9kZSgnLCAnLCAkc3R5bGVzaGVldC0+bWVkaWFfdHlwZSk7CiAgICAgICAgICAgICAgICAgICAgJHN0eWxlc2hlZXQtPm1lZGlhX3R5cGVbXSAgID0gJ3Byb2plY3Rpb24nOwogICAgICAgICAgICAgICAgICAgICRzdHlsZXNoZWV0LT5tZWRpYV90eXBlICAgICA9IGFycmF5X3VuaXF1ZSgkc3R5bGVzaGVldC0+bWVkaWFfdHlwZSk7CiAgICAgICAgICAgICAgICAgICAgJHN0eWxlc2hlZXQtPm1lZGlhX3R5cGUgICAgID0gaW1wbG9kZSgnLCAnLCAkc3R5bGVzaGVldC0+bWVkaWFfdHlwZSk7CgogICAgICAgICAgICAgICAgICAgICRzdHlsZXNoZWV0b3BzLT5VcGRhdGVTdHlsZXNoZWV0KCRzdHlsZXNoZWV0KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBicmVhazsKICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQoKICAgICAgICAvKgogICAgICAgICAqIHB1dCBtZW50aW9uIGludG8gdGhlIGFkbWluIGxvZwogICAgICAgICAqLwogICAgICAgICR0aGlzLT5BdWRpdCggMCwgJHRoaXMtPkxhbmcoJ2ZyaWVuZGx5bmFtZScpLCAkdGhpcy0+TGFuZygndXBncmFkZWQnLCAkdGhpcy0+R2V0VmVyc2lvbigpKSk7CiAgICB9Cn0KCiR1cGdyYWRlID0gbmV3IEx5dGVib3hfVXBncmFkZSgkb2xkdmVyc2lvbiwgJG5ld3ZlcnNpb24pOwokdXBncmFkZS0+RG9VcGdyYWRlKCk7Cgo/Pgo=]]></data>
	</file>
</module>
