<?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>Gallery</name>
	<version>1.1</version>
  <mincmsversion>1.6</mincmsversion>
	<help>PGgzPldoYXQgRG9lcyBUaGlzIERvPzwvaDM+DQo8cD5UaGUgR2FsbGVyeSBtb2R1bGUgaXMgYW4gZWFzeSB0byB1c2UgcGhvdG8gZ2FsbGVyeSB3aGljaCBhdXRvbWF0aWNhbGx5IHNob3dzIHRoZSBpbWFnZXMgb2YgYSBzcGVjaWZpZWQgZGlyZWN0b3J5LiBTdWJkaXJlY3RvcmllcyB3aWxsIGJlIHNob3duIGFzIHN1YmdhbGxlcmllcy4gSXQgaGFzIGxvdHMgb2YgZmVhdHVyZXMsIHN1Y2ggYXMgYXV0b21hdGljIHRodW1ibmFpbGluZywgdGhlIHVzZSBvZiBtdWx0aXBsZSBMaWdodGJveC1saWtlIHRlbXBsYXRlcyBvciBhbnkgY3NzL2phdmFzY3JpcHQgdGVtcGxhdGUgeW91IGxpa2UsIGFuZCB5b3UgY2FuIGdpdmUgdGl0bGVzIGFuZCBkZXNjcmlwdGlvbnMgdG8geW91ciBnYWxsZXJpZXMgYXMgd2VsbCBhcyB5b3VyIHBob3Rvcy48L3A+DQo8aDM+SG93IERvIEkgVXNlIEl0PC9oMz4NCjxwPkZpcnN0LCBpbnNlcnQgdGhlIG1vZHVsZSB3aXRoIHRoZSA8Y29kZT57R2FsbGVyeX08L2NvZGU+IHRhZyBpbnRvIHlvdXIgcGFnZSBvciB0ZW1wbGF0ZSBhbnl3aGVyZSB5b3Ugd2hpc2guIFRoZW4gdXBsb2FkIHNvbWUgaW1hZ2VzIHdpdGggdGhlIEltYWdlIE1hbmFnZXIsIEZpbGUgTWFuYWdlciAoZS5nLiBtdWx0aXBsZSBpbWFnZXMgaW4gemlwZmlsZSkgb3IgRlRQIHRvIHRoZSB1cGxvYWRzL2ltYWdlcy9HYWxsZXJ5LyBkaXJlY3RvcnkuPC9wPg0KPHA+VGhhdCdzIGl0ITwvcD4NCjxwPklmIHlvdSB3YW50IG1vcmUgcGhvdG8gZ2FsbGVyaWVzLCBzaW1wbHkgY3JlYXRlIGEgc3ViZGlyZWN0b3J5IGFuZCB1cGxvYWQgeW91ciBwaG90b3MgYXMgZGVzY3JpYmVkLiBCeSBhZGRpbmcgcGFyYW1ldGVycyB0byB0aGUgPGNvZGU+e0dhbGxlcnl9PC9jb2RlPiB0YWcsIHlvdSBjYW4gZWFzaWx5IG1hbmlwdWxhdGUgd2hpY2ggc3ViZ2FsbGVyeSB3aWxsIGJlIHNob3duIGluIHdoaWNoIHRlbXBsYXRlLCBlLmcuIDxjb2RlPntHYWxsZXJ5IGRpcj0iaG9saWRheXMvTmV0aGVybGFuZHMyMDA5IiB0ZW1wbGF0ZT0iTGlnaHRib3gifTwvY29kZT48L3A+DQo8cD5CeSBkZWZhdWx0IHRoZSB0aHVtYm5haWxzIGZyb20gdGhlIEltYWdlIE1hbmFnZXIgYXJlIHVzZWQgdG8gZGlzcGxheSB0aGUgcGhvdG8gZ2FsbGVyaWVzLjwvcD4NCjxoMz5BZHZhbmNlZCBPcHRpb25zLCBidXQgc3RpbGwgZWFzeSB0byB1c2U8L2gzPg0KPHA+SW4gdGhlIGFkbWluIHNlY3Rpb24geW91IGhhdmUgbG90cyBvZiBvdGhlciBvcHRpb25zOjwvcD4NCjx1bD4NCjxsaT5TZXQgYSBwaG90byBhcyB0aGUgZGVmYXVsdCBmb3IgYSBnYWxsZXJ5LCBzbyBpdCB3aWxsIHNob3cgaW4gdGhlIHBhcmVudCBnYWxsZXJ5IGFzIGEgJ2NvdmVyJyBpbiBzdGVhZCBvZiB0aGUgZGVmYXVsdCBmb2xkZXItaWNvbi48L2xpPg0KPGxpPkdpdmUgdGl0bGVzIGFuZCBkZXNjcmlwdGlvbnMgdG8gZ2FsbGVyaWVzLjwvbGk+DQo8bGk+U2V0IGEgZGVmYXVsdCB0ZW1wbGF0ZSBmb3IgZWFjaCBnYWxsZXJ5LjwvbGk+DQo8bGk+U2V0IHRodW1ibmFpbCBzaXplcyBmb3IgZWFjaCB0ZW1wbGF0ZSwgd2l0aCBwb3NpYmlsaXRpZXMgdG8gc2NhbGUsIGNyb3AgYW5kL29yIHpvb20gdGhlIGltYWdlcy48L2xpPg0KPGxpPlNwZWNpZnkgZm9yIGVhY2ggdGVtcGxhdGUgaW4gd2hpY2ggb3JkZXIgdGhlIHBob3RvcyBoYXZlIHRvIGJlIHNvcnRlZC48L2xpPg0KPGxpPk92ZXJydWxlIHRoZSBzb3J0aW5nIG1hbnVhbGx5IGJ5IGRyYWdnaW5nJmRyb3BwaW5nIHRoZSBwaG90b3MuDQo8bGk+R2l2ZSB0aXRsZXMgYW5kIGRlc2NyaXB0aW9ucyB0byBwaG90b3MuPC9saT4NCjxsaT5Td2l0Y2ggYSBzcGVjaWZpYyBwaG90byBvciBnYWxsZXJ5IHRvIGluYWN0aXZlLCBwcmV2ZW50aW5nIGl0IGZyb20gZGlzcGxheS48L2xpPg0KPGxpPkVkaXQvY29weSB0ZW1wbGF0ZXMgb3IgY3JlYXRlIG5ldyBvbmVzLiBDaGVjayB0aGUgaW5mby1pY29uIGJlbmVhdGggdGhlIHRlbXBsYXRlLWNvZGUgZm9yIHRoZSBhdmFpbGFibGUgdmFyaWFibGVzLjwvbGk+DQo8L3VsPg0KPHA+SW4gb3JkZXIgdG8gZWRpdCB0ZW1wbGF0ZXMsIHRoZSB1c2VyIG11c3QgYmVsb25nIHRvIGEgZ3JvdXAgd2l0aCB0aGUgJ01vZGlmeSBUZW1wbGF0ZXMnIHBlcm1pc3Npb24uIFRvIGVkaXQgdGhlIGdsb2JhbCBHYWxsZXJ5IG9wdGlvbnMsIHRoZSB1c2VyIG11c3QgYmVsb25nIHRvIGEgZ3JvdXAgd2l0aCB0aGUgJ01vZGlmeSBTaXRlIFByZWZlcmVuY2VzJyBwZXJtaXNzaW9uLjwvcD4NCjxwPkFsbCB0aXRsZXMsIGRlc2NyaXB0aW9ucyBhbmQgc2V0dGluZ3MgYXJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UuIFRoZSBkYXRhYmFzZSB3aWxsIHN5bmNocm9uaXplIHdpdGggdGhlIGZpbGVkaXJlY3RvcnkgZWFjaCB0aW1lIHRoZSBhY2NvcmRpbmcgZ2FsbGVyeSBpcyB2aXNpdGVkIGluIHRoZSBHYWxsZXJ5LWFkbWluLiBBIGxpdHRsZSB3YXJuaW5nOiB3aGVuIHlvdSBtb3ZlIGFuIGltYWdlIG9yIHN1YmRpcmVjdG9yeSB0byBhbm90aGVyIGRpcmVjdG9yeSwgeW91IHdpbGwgbG9vc2UgaXRzIHRpdGxlLCBkZXNjcmlwdGlvbiBhbmQgc2V0dGluZ3MuPC9wPg0KPGgzPlN1cHBvcnQ8L2gzPg0KPHA+VGhpcyBtb2R1bGUgZG9lcyBub3QgaW5jbHVkZSBjb21tZXJjaWFsIHN1cHBvcnQuIEhvd2V2ZXIsIHRoZXJlIGFyZSBhIG51bWJlciBvZiByZXNvdXJjZXMgYXZhaWxhYmxlIHRvIGhlbHAgeW91IHdpdGggaXQ6PC9wPg0KPHVsPg0KPGxpPkZvciB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhpcyBtb2R1bGUsIEZBUXMsIG9yIHRvIGZpbGUgYSBGZWF0dXJlIFJlcXVlc3Qgb3IgQnVnIFJlcG9ydCwgcGxlYXNlIHZpc2l0IHRoZSBNb2R1bGUgRm9yZ2UNCjxhIGhyZWY9Imh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvZ2FsbGVyeS8iPkdhbGxlcnkgUGFnZTwvYT4uPC9saT4NCjxsaT5BZGRpdGlvbmFsIGRpc2N1c3Npb24gb2YgdGhpcyBtb2R1bGUgbWF5IGFsc28gYmUgZm91bmQgaW4gdGhlIDxhIGhyZWY9Imh0dHA6Ly9mb3J1bS5jbXNtYWRlc2ltcGxlLm9yZyI+Q01TIE1hZGUgU2ltcGxlIEZvcnVtczwvYT4uPC9saT4NCjxsaT5MYXN0bHksIHlvdSBtYXkgaGF2ZSBzb21lIHN1Y2Nlc3MgZW1haWxpbmcgdGhlIGF1dGhvciBkaXJlY3RseS48L2xpPg0KPC91bD4NCjxwPkFzIHBlciB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkIGFzLWlzLiBQbGVhc2UgcmVhZCB0aGUgdGV4dCBvZiB0aGUgbGljZW5zZSBmb3IgdGhlIGZ1bGwgZGlzY2xhaW1lci48L3A+DQoNCjxoMz5Db3B5cmlnaHQgYW5kIExpY2Vuc2U8L2gzPg0KPHA+Q29weXJpZ2h0ICZjb3B5OyAyMDA5LCBKb3MgLTxhIGhyZWY9Im1haWx0bzpqb3N2ZEBsaXZlLm5sIj5qb3N2ZEBsaXZlLm5sPC9hPi0uIEFsbCBSaWdodHMgQXJlIFJlc2VydmVkLjwvcD4NCjxwPlRoaXMgbW9kdWxlIGhhcyBiZWVuIHJlbGVhc2VkIHVuZGVyIHRoZSA8YSBocmVmPSJodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwiPkdOVSBQdWJsaWMgTGljZW5zZTwvYT4uIFlvdSBtdXN0IGFncmVlIHRvIHRoaXMgbGljZW5zZSBiZWZvcmUgdXNpbmcgdGhlIG1vZHVsZS48L3A+DQo8aDM+UGFyYW1ldGVyczwvaDM+PHVsPjxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IGxhbmc9ImVuX1VTIiAtIFBhcmFtZXRlciBpcyB1c2VkIHRvIHNwZWNpZnkgd2hhdCBsYW5ndWFnZSB0byB1c2UgZm9yIGRpc3BsYXkgb24gdGhlIGZyb250ZW5kLiBOb3QgYWxsIG1vZHVsZXMgc3VwcG9ydCBvciBuZWVkIHRoaXMuPC9saT48bGk+PGVtPihvcHRpb25hbCk8L2VtPiBkaXI9InN1YjEvc3ViMiIgLSBQYXJhbWV0ZXIgdG8gc3BlY2lmeSBhIGRpcmVjdG9yeSwgcmVsYXRpdmUgdG8gdXBsb2Fkcy9pbWFnZXMvR2FsbGVyeS88L2xpPjxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IHRlbXBsYXRlPSIiIC0gVXNlIGEgc2VwYXJhdGUgZGF0YWJhc2UgdGVtcGxhdGUgZm9yIGRpc3BsYXlpbmcgdGhlIHBob3RvIGdhbGxlcnkuIFRoaXMgdGVtcGxhdGUgbXVzdCBleGlzdCBhbmQgYmUgdmlzaWJsZSBpbiB0aGUgdGVtcGxhdGUgdGFiIG9mIHRoZSBHYWxsZXJ5IGFkbWluLCB0aG91Z2ggaXQgZG9lcyBub3QgbmVlZCB0byBiZSB0aGUgZGVmYXVsdC4gSWYgdGhpcyBwYXJhbWV0ZXIgaXMgbm90IHNwZWNpZmllZCwgdGhlbiB0aGUgdGVtcGxhdGUgd2hpY2ggaXMgYXNzaWduZWQgdG8gdGhlIGRpcmVjdG9yeSB3aWxsIGJlIHVzZWQsIGVsc2UgdGhlIGRlZmF1bHQgdGVtcGxhdGUuPC9saT48bGk+PGVtPihvcHRpb25hbCk8L2VtPiBudW1iZXI9IjEwMCIgLSBNYXhpbXVtIG51bWJlciBvZiBpbWFnZXRodW1icyB0byBkaXNwbGF5IChwZXIgcGFnZSkuIExlYXZpbmcgZW1wdHkgd2lsbCBzaG93IGFsbCBpbWFnZXMuPC9saT48bGk+PGVtPihvcHRpb25hbCk8L2VtPiBzdGFydD0iMSIgLSBTdGFydCBhdCB0aGUgbnRoIGltYWdlLiBMZWF2aW5nIGVtcHR5IHdpbGwgc3RhcnQgYXQgdGhlIGZpcnN0IGltYWdlLjwvbGk+PGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gc2hvdz0iYWxsIiAtIE92ZXJpZGUgd2hpY2ggaW1hZ2VzIGhhdmUgdG8gYmUgc2hvd24uIFBvc3NpYmxlIHZhbHVlcyBhcmU6DQo8dWw+DQo8bGk+J2FjdGl2ZScgLSB0byBkaXNwbGF5IHRoZSBpbWFnZXMgbWFya2VkIGFzIGFjdGl2ZSAoZGVmYXVsdCk8L2xpPg0KPGxpPidpbmFjdGl2ZScgLSB0byBkaXNwbGF5IG9ubHkgdGhlIGltYWdlcyBtYXJrZWQgYXMgaW5hY3RpdmUgPC9saT4NCjxsaT4nYWxsJyAtIHRvIGRpc3BsYXkgYWxsIGltYWdlczwvbGk+DQo8L3VsPg0KPC9saT48bGk+PGVtPihvcHRpb25hbCk8L2VtPiBhY3Rpb249ImRlZmF1bHQiIC0gT3ZlcnJpZGUgdGhlIGRlZmF1bHQgYWN0aW9uLiBVc2UgaXQgaW4gY29tYmluYXRpb24gd2l0aCB0aGUgYWJvdmUgcGFyYW1ldGVycy4gUG9zc2libGUgdmFsdWVzIGFyZToNCjx1bD4NCjxsaT4nc2hvd3JhbmRvbScgLSB0byBkaXNwbGF5IGEgc2V0IG9mIHJhbmRvbSB0aHVtYi1pbWFnZXMgKGFwcGxpZXMgb25seSB0byB0aGUgaW1hZ2VzIHdoaWNoIGFyZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlLCBkZWZhdWx0cyB0byBhIG51bWJlciBvZiA2IGltYWdlcykuIFVzZSAnLyonIGFmdGVyIHRoZSBkaXJlY3RvcnluYW1lIGluIHRoZSBkaXIgcGFyYW1ldGVyIHRvIGluY2x1ZGUgaW1hZ2VzIGZyb20gc3ViZGlyZWN0b3JpZXM8L2xpPg0KPGxpPidzaG93bGF0ZXN0JyAtIHRvIGRpc3BsYXkgdGhlIG1vc3QgcmVjZW50bHkgYWRkZWQgaW1hZ2VzIChhcHBsaWVzIG9ubHkgdG8gdGhlIGltYWdlcyB3aGljaCBhcmUgc3RvcmVkIGluIHRoZSBkYXRhYmFzZSwgZGVmYXVsdHMgdG8gYSBudW1iZXIgb2YgNiBpbWFnZXMpIFRoZSBkaXIgcGFyYW1ldGVyIGNhbiBiZSBzZXQsIG9yIHRoZSBkZWZhdWx0IEdhbGxlcnktcm9vdCB3aWxsIGJlIHVzZWQuIFN1YmRpcmVjdG9yaWVzIGFyZSBhdXRvbWF0aWNhbGx5IGluY2x1ZGVkPC9saT4NCjxsaT4nc2hvd2xhdGVzdGRpcicgLSB0byBkaXNwbGF5IGEgc2V0IG9mIHJhbmRvbSB0aHVtYi1pbWFnZXMgZnJvbSB0aGUgbW9zdCByZWNlbnRseSBhZGRlZCBkaXJlY3RvcnkgKGFwcGxpZXMgb25seSB0byB0aGUgaW1hZ2VzIHdoaWNoIGFyZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlLCBkZWZhdWx0cyB0byBhIG51bWJlciBvZiA2IGltYWdlcyk8L2xpPg0KPC91bD4NCk5vdGUgdGhhdCBpbWFnZXMgYXJlIG9ubHkgc3RvcmVkIGluIHRoZSBkYXRhYmFzZSB3aGVuIHRoZSBnYWxsZXJ5IGlzIHZpc2l0ZWQgaW4gdGhlIGFkbWluLg0KPC9saT48L3VsPg==</help>
	<about>PGJyIC8+QXV0aG9yOiBKb3MgJmx0O2pvc3ZkQGxpdmUubmwmZ3Q7PGJyIC8+PGJyIC8+VmVyc2lvbjogMS4xPGJyIC8+PGJyIC8+Q2hhbmdlIEhpc3Rvcnk6PGJyIC8+PHVsPg0KPGxpPlZlcnNpb24gMS4xLiA4IE5vdmVtYmVyIDIwMDkuIEFkZGVkIHNvcnRpbmcgYW5kIGRyYWcmZHJvcCBmZWF0dXJlIChGUiAjMzkwNyAjNDIxMCksIE1vdmVkIHRodW1ibmFpbHNldHRpbmdzIHRvIHRlbXBsYXRlc3RhYiwgTWFrZSBnYWxsZXJpZXMgc2VhcmNoYWJsZSAoRlIgIzM5NTYpLCBDcmVhdGUgYmFja2VuZCB0aHVtYnMgaWYgdGhleSBkb24ndCBleGlzdCBpbiBJTSAoRlIgIzQxMDEpLCBGaXggZm9yIEJSICM0MDI3LCBBZGRlZCBmaWxlaWQgdG8gaW1hZ2Utb2JqZWN0IChGUiAjNDI1OSk8L2xpPg0KPGxpPlZlcnNpb24gMS4wLjMuIDggU2VwdGVtYmVyIDIwMDkuIEJ1Z2ZpeCBmb3IgWyM0MDAxXSwgSW1wcm92ZWQgc3luY2hyb25pemluZyB0aGUgZGF0YWJhc2UgdG8gZmlsZXMsIGFuZCBvdGhlciBtaW5vciBpbXByb3ZlbWVudHMuPC9saT4NCjxsaT5WZXJzaW9uIDEuMC4yLiA1IFNlcHRlbWJlciAyMDA5LiBCdWdmaXggZm9yIFsjMzk4M10gcmVnYXJkaW5nIHNwYWNlcyBpbiBkaXJlY3RvcnkgbmFtZXMsIEFkZGVkIHRlbXBsYXRlcyBGYW5jeWJveCBhbmQgTHl0ZWJveF9zbGlkZXNob3cgYXMgaW4gRmVhdHVyZSByZXF1ZXN0cyBbIzM5NDRdIGFuZCBbIzM5NjddPC9saT4NCjxsaT5WZXJzaW9uIDEuMC4xLiAyMyBBdWd1c3QgMjAwOS4gQXBwbHkgdGh1bWJuYWlsLXNldHRpbmdzIG9uICdBbGJ1bS1jb3ZlcnMnIFsjMzkyNF0sIEJ1Z2ZpeCBmb3IgWyMzOTI3XSwgQWRkZWQgbWlzc2luZyAvZGl2IHRvIHRoaWNrYm94LXRlbXBsYXRlLCBmaXhlZCBhbiBpc3N1ZSB3aXRoIGdlbmVyYXRpbmcgdGh1bWJuYWlscyB3aGVuIG5vIHRodW1icyBhdmFpbGFibGUgaW4gSW1hZ2VNYW5hZ2VyLCBpbXByb3ZlZCB0aGUgbmFtaW5nIG9mIHRodW1icywgQnVnZml4IGZvciBbIzM5MzFdLCBQcmV2ZW50IGRpc3BsYXkgdGhlIGNvbnRlbnQgb2YgZ2FsbGVyaWVzIHRoYXQgYXJlIHNldCBhcyBpbmFjdGl2ZS48L2xpPg0KPGxpPlZlcnNpb24gMS4wLiAxNyBBdWd1c3QgMjAwOS4gUGFnaW5hdGlvbiBwYXJhbWV0ZXJzIGFkZGVkLCBTdGFuZGFyZCB0ZW1wbGF0ZXMgY2hhbmdlZCBhY2NvcmRpbmdseSwgRXh0ZW5kZWQgdGhlIG1vZHVsZS1oZWxwLCBBZGRlZCBmdW5jdGlvbnMgdG8gc2hvdyByYW5kb20gb3IgbGF0ZXN0IGltYWdlcywgU3VwcG9ydCBvZiBwcmV0dHktdXJscywgVmFyaW91cyBpbXByb3ZlbWVudHM8L2xpPg0KPGxpPlZlcnNpb24gMC42LiA5IEF1Z3VzdCAyMDA5LiBJbml0aWFsIEJldGEgUmVsZWFzZS48L2xpPg0KPC91bD48YnIgLz4=</about>
	<description>The easiest way to manage and display photo galleries</description>
	<file>
	  <filename>/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/action.createthumbs.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KaWYoICEkZ0NtcyApIGV4aXQoKTsNCg0KaWYoICEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdVc2UgR2FsbGVyeScpICkgDQogIHsNCiAgICBlY2hvICR0aGlzLT5MYW5nKCdhY2Nlc3NkZW5pZWQnKTsNCiAgICByZXR1cm47DQogIH0NCg0KaWYoICFpc3NldCgkcGFyYW1zWydnaWQnXSkgKQ0KICB7DQogICAgJHBhcmFtc1snZXJyb3JzJ10gPSAkdGhpcy0+TGFuZygnZXJyb3InKTsNCiAgICAkdGhpcy0+UmVkaXJlY3QoJGlkLCdkZWZhdWx0YWRtaW4nLCcnLCRwYXJhbXMpOw0KICAgIHJldHVybjsNCiAgfQ0KDQokZ2FsbGVyeWluZm8gPSAkdGhpcy0+X0dldGdhbGxlcnlpbmZvYnlpZCgkcGFyYW1zWydnaWQnXSk7DQokZ2FsbGVyeXBhdGggPSAkcGFyYW1zWydnaWQnXSA9PSAxID8gJycgOiB0cmltKCRnYWxsZXJ5aW5mb1snZmlsZXBhdGgnXSAuICcvJyAuICRnYWxsZXJ5aW5mb1snZmlsZW5hbWUnXSwnLycpOw0KDQokZ2FsbGVyeSA9ICR0aGlzLT5fR2V0Z2FsbGVyeWZpbGVzKCRnYWxsZXJ5cGF0aCk7DQpmb3JlYWNoICgkZ2FsbGVyeSBhcyAkZmlsZSkgDQp7DQoJaWYoIHN1YnN0cigkZmlsZVsnZmlsZW5hbWUnXSwtMSkgIT0gJy8nICkNCgl7DQoJCSR0aHVtYm5hbWUgPSAnLi4vJyAuIERFRkFVTFRfR0FMTEVSWVRIVU1CX1BBVEggLiAkZmlsZVsnZmlsZWlkJ10gLiAnLScgLiAkcGFyYW1zWyd0ZW1wbGF0ZWlkJ10gLiBzdWJzdHIoJGZpbGVbJ2ZpbGVuYW1lJ10sIHN0cnJwb3MoJGZpbGVbJ2ZpbGVuYW1lJ10sICcuJykpIDsNCg0KCQkkdGhpcy0+X0NyZWF0ZVRodW1ibmFpbCgkdGh1bWJuYW1lLCANCgkJICAgICAgICAgICAgICAgICAgICAgICAgJy4uLycgLiBERUZBVUxUX0dBTExFUllfUEFUSCAuIChlbXB0eSgkZmlsZVsnZmlsZXBhdGgnXSkgPyAnJyA6ICRmaWxlWydmaWxlcGF0aCddIC4gJy8nKSAuICRmaWxlWydmaWxlbmFtZSddLCANCgkJICAgICAgICAgICAgICAgICAgICAgICAgJGdhbGxlcnlpbmZvWyd0aHVtYndpZHRoJ10sIA0KCQkgICAgICAgICAgICAgICAgICAgICAgICAkZ2FsbGVyeWluZm9bJ3RodW1iaGVpZ2h0J10sIA0KCQkgICAgICAgICAgICAgICAgICAgICAgICAkZ2FsbGVyeWluZm9bJ3Jlc2l6ZW1ldGhvZCddKTsNCgl9DQp9DQoNCiR0aGlzLT5SZWRpcmVjdCgkaWQsJ2VkaXRnYWxsZXJ5JywnJyxhcnJheSgnZ2lkJz0+JHBhcmFtc1snZ2lkJ10sJ21vZGUnPT4iZWRpdCIsJ21vZHVsZV9tZXNzYWdlJz0+JHRoaXMtPkxhbmcoJ3RodW1ic2NyZWF0ZWQnKSkpOw0KDQo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.default.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmlmICghaXNzZXQoJGdDbXMpKSBleGl0Ow0KDQokcGFyYW1zWydkaXInXSA9IGlzc2V0KCRwYXJhbXNbJ2RpciddKSA/IHJhd3VybGRlY29kZShjbXNfaHRtbF9lbnRpdHlfZGVjb2RlKHRyaW0oJHBhcmFtc1snZGlyJ10sIi8iKSkpIDogJyc7DQokc3RhcnQgPSAoaXNzZXQoJHBhcmFtc1snc3RhcnQnXSkgJiYgaXNfbnVtZXJpYygkcGFyYW1zWydzdGFydCddKSkgPyAkcGFyYW1zWydzdGFydCddIDogMTsNCiRudW1iZXIgPSAoaXNzZXQoJHBhcmFtc1snbnVtYmVyJ10pICYmIGlzX251bWVyaWMoJHBhcmFtc1snbnVtYmVyJ10pKSA/ICRwYXJhbXNbJ251bWJlciddIDogMTAwMDsNCiRzaG93ID0gKGlzc2V0KCRwYXJhbXNbJ3Nob3cnXSkgJiYgaW5fYXJyYXkoJHBhcmFtc1snc2hvdyddLCBhcnJheSgnYWN0aXZlJywnaW5hY3RpdmUnLCdhbGwnKSkpID8gJHBhcmFtc1snc2hvdyddIDogJ2FjdGl2ZSc7DQoNCg0KJGltZ2NvdW50ID0gMDsNCiRpdGVtY291bnQgPSAwOw0KJGltYWdlcyA9IGFycmF5KCk7DQoNCmlmICggaXNfZGlyKERFRkFVTFRfR0FMTEVSWV9QQVRIIC4gJHBhcmFtc1snZGlyJ10pICkNCnsNCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2dhbGxlcnl0aXRsZScsIGh0bWxzcGVjaWFsY2hhcnModHJpbShzdWJzdHIoJHBhcmFtc1snZGlyJ10sIHN0cnJwb3MoJHBhcmFtc1snZGlyJ10sICcvJykpLCIvIikpKTsNCg0KCS8vIGdldCBnYWxsZXJ5IGluZm8NCgkkZ2FsbGVyeWluZm8gPSAkdGhpcy0+X0dldGdhbGxlcnlpbmZvKCRwYXJhbXNbJ2RpciddKTsNCg0KCWlmICggaXNzZXQoJHBhcmFtc1sndGVtcGxhdGUnXSkgKQ0KCXsNCgkJLy8gb3ZlcnJpZGUgdGVtcGxhdGUgc2V0dGluZ3Mgd2l0aCBwYXJhbSB0ZW1wbGF0ZQ0KCQkkdGVtcGxhdGVwcm9wcyA9ICR0aGlzLT5fR2V0VGVtcGxhdGVwcm9wcygkcGFyYW1zWyd0ZW1wbGF0ZSddKTsNCgkJJGdhbGxlcnlpbmZvWyd0ZW1wbGF0ZWlkJ10gPSAkdGVtcGxhdGVwcm9wc1sndGVtcGxhdGVpZCddOw0KCQkkZ2FsbGVyeWluZm9bJ3RlbXBsYXRlJ10gPSAkdGVtcGxhdGVwcm9wc1sndGVtcGxhdGUnXTsNCgkJJGdhbGxlcnlpbmZvWyd0aHVtYndpZHRoJ10gPSAkdGVtcGxhdGVwcm9wc1sndGh1bWJ3aWR0aCddOw0KCQkkZ2FsbGVyeWluZm9bJ3RodW1iaGVpZ2h0J10gPSAkdGVtcGxhdGVwcm9wc1sndGh1bWJoZWlnaHQnXTsNCgkJJGdhbGxlcnlpbmZvWydyZXNpemVtZXRob2QnXSA9ICR0ZW1wbGF0ZXByb3BzWydyZXNpemVtZXRob2QnXTsNCgkJJGdhbGxlcnlpbmZvWydtYXhudW1iZXInXSA9ICR0ZW1wbGF0ZXByb3BzWydtYXhudW1iZXInXTsNCgkJJGdhbGxlcnlpbmZvWydzb3J0aXRlbXMnXSA9ICR0ZW1wbGF0ZXByb3BzWydzb3J0aXRlbXMnXTsNCgl9DQoJaWYgKCBlbXB0eSgkZ2FsbGVyeWluZm9bJ3RlbXBsYXRlaWQnXSkgKQ0KCXsNCgkJLy8gb3ZlcnJpZGUgdGVtcGxhdGUgc2V0dGluZ3Mgd2l0aCBkZWZhdWx0IHRlbXBsYXRlDQoJCSR0ZW1wbGF0ZXByb3BzID0gJHRoaXMtPl9HZXRUZW1wbGF0ZXByb3BzKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdjdXJyZW50X3RlbXBsYXRlJykpOw0KCQkkZ2FsbGVyeWluZm9bJ3RlbXBsYXRlaWQnXSA9ICR0ZW1wbGF0ZXByb3BzWyd0ZW1wbGF0ZWlkJ107DQoJCSRnYWxsZXJ5aW5mb1sndGVtcGxhdGUnXSA9ICR0ZW1wbGF0ZXByb3BzWyd0ZW1wbGF0ZSddOw0KCQkkZ2FsbGVyeWluZm9bJ3RodW1id2lkdGgnXSA9ICR0ZW1wbGF0ZXByb3BzWyd0aHVtYndpZHRoJ107DQoJCSRnYWxsZXJ5aW5mb1sndGh1bWJoZWlnaHQnXSA9ICR0ZW1wbGF0ZXByb3BzWyd0aHVtYmhlaWdodCddOw0KCQkkZ2FsbGVyeWluZm9bJ3Jlc2l6ZW1ldGhvZCddID0gJHRlbXBsYXRlcHJvcHNbJ3Jlc2l6ZW1ldGhvZCddOw0KCQkkZ2FsbGVyeWluZm9bJ21heG51bWJlciddID0gJHRlbXBsYXRlcHJvcHNbJ21heG51bWJlciddOw0KCQkkZ2FsbGVyeWluZm9bJ3NvcnRpdGVtcyddID0gJHRlbXBsYXRlcHJvcHNbJ3NvcnRpdGVtcyddOw0KCX0NCgkvL3BhcmFtc1snbnVtYmVyJ10gb3ZlcnJpZGUgJG51bWJlcg0KCWlmICggJG51bWJlciA9PSAxMDAwICYmICFlbXB0eSgkZ2FsbGVyeWluZm9bJ21heG51bWJlciddKSApDQoJew0KCQkkbnVtYmVyID0gJGdhbGxlcnlpbmZvWydtYXhudW1iZXInXTsNCgkJJHBhcmFtc1snbnVtYmVyJ10gPSAkbnVtYmVyOw0KCX0NCg0KCSRwYXJhbXNsaW5rID0gYXJyYXkoKTsNCglpZiAoIGlzc2V0KCRwYXJhbXNbJ3N0YXJ0J10pIHx8IGlzc2V0KCRwYXJhbXNbJ251bWJlciddKSApDQoJew0KCQkkcGFyYW1zbGlua1snc3RhcnQnXSA9IDE7DQoJCSRwYXJhbXNsaW5rWydudW1iZXInXSA9ICRudW1iZXI7DQoJfQ0KCWlmICggaXNzZXQoJHBhcmFtc1snc2hvdyddKSApDQoJew0KCQkkcGFyYW1zbGlua1snc2hvdyddID0gJHBhcmFtc1snc2hvdyddOw0KCX0NCgkNCglpZiAoICRzaG93ID09ICJhbGwiIHx8ICFhcnJheV9rZXlfZXhpc3RzKCdhY3RpdmUnLCRnYWxsZXJ5aW5mbykgfHwgKCRnYWxsZXJ5aW5mb1snYWN0aXZlJ10gPT0gMSAmJiAkc2hvdyA9PSAiYWN0aXZlIikgfHwgKCRnYWxsZXJ5aW5mb1snYWN0aXZlJ10gPT0gMCAmJiAkc2hvdyA9PSAiaW5hY3RpdmUiKSApDQoJew0KCQlpZiAoICFlbXB0eSgkZ2FsbGVyeWluZm8pICkNCgkJew0KCQkJaWYgKCAhZW1wdHkoJGdhbGxlcnlpbmZvWyd0aXRsZSddKSApDQoJCQl7DQoJCQkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdnYWxsZXJ5dGl0bGUnLCAkZ2FsbGVyeWluZm9bJ3RpdGxlJ10pOw0KCQkJfQ0KCQkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdnYWxsZXJ5Y29tbWVudCcsIGFycmF5X2tleV9leGlzdHMoJ2NvbW1lbnQnLCRnYWxsZXJ5aW5mbykgPyAkZ2FsbGVyeWluZm9bJ2NvbW1lbnQnXSA6ICcnKTsNCgkJfQ0KCQkJDQoJCSRwYXJhbXNsaW5rWydkaXInXSA9IHN0cnBvcygkcGFyYW1zWydkaXInXSwgJy8nKSA9PT0gRkFMU0UgPyAnJyA6ICcvJyAuIHN0cl9yZXBsYWNlKCclMkYnLCcvJyxyYXd1cmxlbmNvZGUocHJlZ19yZXBsYWNlKCcvXiguKikoXC8uKykkLycsICckMScsICRwYXJhbXNbJ2RpciddKSkpOw0KCQkkcHJldHR5dXJsID0gJ2dhbGxlcnknIC4gJHBhcmFtc2xpbmtbJ2RpciddIC4gJy8nIC4NCgkJCQkJKGlzc2V0KCRwYXJhbXNsaW5rWydzdGFydCddKSA/ICRwYXJhbXNsaW5rWydzdGFydCddIC4gJy0nIC4gJHBhcmFtc2xpbmtbJ251bWJlciddIC4gJy0nIDogJycpIC4NCgkJCQkJKGlzc2V0KCRwYXJhbXNsaW5rWydzaG93J10pID8gJHBhcmFtc2xpbmtbJ3Nob3cnXSAuICctJyA6ICcnKSAuDQoJCQkJCSRyZXR1cm5pZDsNCgkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdwYXJlbnRsaW5rJywgZW1wdHkoJHBhcmFtc1snZGlyJ10pID8gJycgOiAkdGhpcy0+Q3JlYXRlRnJvbnRlbmRMaW5rKCRpZCwgJHJldHVybmlkLCAnZGVmYXVsdCcsICdQYXJlbnQnLCAkcGFyYW1zbGluaywgJycsIGZhbHNlLCB0cnVlLCAnJywgZmFsc2UsICRwcmV0dHl1cmwpKTsNCgkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdoaWRlcGFyZW50bGluaycsICRnYWxsZXJ5aW5mb1snaGlkZXBhcmVudGxpbmsnXSk7DQoJDQoJDQoJCS8vIGJ1aWxkIGdhbGxlcnkNCgkJJGRpcmZpbGVzID0gJHRoaXMtPl9HZXRkaXJmaWxlcygkcGFyYW1zWydkaXInXSxGQUxTRSk7DQoJCSRnYWxlcnlmaWxlcyA9ICR0aGlzLT5fR2V0Z2FsbGVyeWZpbGVzKCRwYXJhbXNbJ2RpciddKTsNCgkNCgkJLy8gV2FsayB0aHJvdWdoIGFsbCBpdGVtcyBmb3VuZCBpbiB0aGUgZGlyZWN0b3J5LCBiZWNhdXNlIHRoZXkgZG9uJ3QgbmVzY2VzYXJpbHkgZXhpc3QgaW4gdGhlIGRhdGFiYXNlDQoJCWZvcmVhY2goJGRpcmZpbGVzIGFzICRrZXk9PiRpdGVtKQ0KCQl7DQoJCQlpZiAoICEkZ2FsZXJ5ZmlsZXMgfHwgIWFycmF5X2tleV9leGlzdHMoJGtleSwgJGdhbGVyeWZpbGVzKSB8fCAkc2hvdyA9PSAnYWxsJyB8fCAoJHNob3cgPT0gJ2FjdGl2ZScgJiYgJGdhbGVyeWZpbGVzWyRrZXldWydhY3RpdmUnXSAhPSAnMCcpIHx8ICgkc2hvdyA9PSAnaW5hY3RpdmUnICYmICRnYWxlcnlmaWxlc1ska2V5XVsnYWN0aXZlJ10gPT0gJzAnKSApDQoJCQl7DQoJCQkJLy8gY3JlYXRlIGEgbmV3IG9iamVjdCBmb3IgZXZlcnkgcmVjb3JkIHRoYXQgd2UgcmV0cmlldmUNCgkJCQkkcmVjID0gbmV3IHN0ZENsYXNzKCk7DQoJCQkJJHJlYy0+ZmlsZWlkID0gKCRnYWxlcnlmaWxlcyAmJiBhcnJheV9rZXlfZXhpc3RzKCRrZXksICRnYWxlcnlmaWxlcykpID8gJGdhbGVyeWZpbGVzWyRrZXldWydmaWxlaWQnXSA6ICR0aGlzLT5fQWRkRmlsZVRvREIoJGl0ZW1bJ2ZpbGVuYW1lJ10sJGl0ZW1bJ2ZpbGVwYXRoJ10sJGl0ZW1bJ2ZpbGVtZGF0ZSddLCRnYWxsZXJ5aW5mb1snZmlsZWlkJ10pOw0KCQkJCSRyZWMtPmZpbGUgPSBERUZBVUxUX0dBTExFUllfUEFUSCAuIHN0cl9yZXBsYWNlKCclMkYnLCcvJyxyYXd1cmxlbmNvZGUoJGtleSkpOw0KCQkJCSRyZWMtPmZpbGVkYXRlID0gKCRnYWxlcnlmaWxlcyAmJiBhcnJheV9rZXlfZXhpc3RzKCRrZXksICRnYWxlcnlmaWxlcykpID8gJGdhbGVyeWZpbGVzWyRrZXldWydmaWxlZGF0ZSddIDogJyc7DQoJCQkJJHJlYy0+dGl0bGUgPSAoJGdhbGVyeWZpbGVzICYmIGFycmF5X2tleV9leGlzdHMoJGtleSwgJGdhbGVyeWZpbGVzKSAmJiAhZW1wdHkoJGdhbGVyeWZpbGVzWyRrZXldWyd0aXRsZSddKSkgPyAkZ2FsZXJ5ZmlsZXNbJGtleV1bJ3RpdGxlJ10gOiB0cmltKCRpdGVtWydmaWxlbmFtZSddLCIvIik7DQoJCQkJJHJlYy0+Y29tbWVudCA9ICgkZ2FsZXJ5ZmlsZXMgJiYgYXJyYXlfa2V5X2V4aXN0cygka2V5LCAkZ2FsZXJ5ZmlsZXMpKSA/ICRnYWxlcnlmaWxlc1ska2V5XVsnY29tbWVudCddIDogJyc7DQoJCQkJJHJlYy0+ZmlsZW9yZGVyID0gKCRnYWxlcnlmaWxlcyAmJiBhcnJheV9rZXlfZXhpc3RzKCRrZXksICRnYWxlcnlmaWxlcykpID8gJGdhbGVyeWZpbGVzWyRrZXldWydmaWxlb3JkZXInXSA6IDEwMDA7DQoJCQkJJHJlYy0+YWN0aXZlID0gKCRnYWxlcnlmaWxlcyAmJiBhcnJheV9rZXlfZXhpc3RzKCRrZXksICRnYWxlcnlmaWxlcykpID8gJGdhbGVyeWZpbGVzWyRrZXldWydhY3RpdmUnXSA6IDE7DQoJCQkJJHJlYy0+aXNkaXIgPSBmYWxzZTsNCgkJCQkkcmVjLT5mb2xkZXJsaW5rID0gJyc7DQoJCQkJaWYgKCBpc19kaXIoREVGQVVMVF9HQUxMRVJZX1BBVEggLiAka2V5KSApDQoJCQkJew0KCQkJCQlpZiAoICEkZ2FsZXJ5ZmlsZXMgfHwgIWFycmF5X2tleV9leGlzdHMoJGtleSwgJGdhbGVyeWZpbGVzKSB8fCBlbXB0eSgkZ2FsZXJ5ZmlsZXNbJGtleV1bJ3RodW1iJ10pICkNCgkJCQkJew0KCQkJCQkJJHJlYy0+dGh1bWIgPSAnbW9kdWxlcy9HYWxsZXJ5L2ltYWdlcy9mb2xkZXIucG5nJzsNCgkJCQkJfQ0KCQkJCQllbHNlaWYgKCAkZ2FsbGVyeWluZm9bJ3RodW1id2lkdGgnXSA+IDAgKQ0KCQkJCQl7DQoJCQkJCQkkcmVjLT50aHVtYiA9IERFRkFVTFRfR0FMTEVSWVRIVU1CU19QQVRIIC4gJGdhbGVyeWZpbGVzWyRrZXldWydkZWZhdWx0ZmlsZSddIC4gJy0nIC4gJGdhbGxlcnlpbmZvWyd0ZW1wbGF0ZWlkJ10gLiBzdWJzdHIoJGdhbGVyeWZpbGVzWyRrZXldWyd0aHVtYiddLCBzdHJycG9zKCRnYWxlcnlmaWxlc1ska2V5XVsndGh1bWInXSwgJy4nKSk7DQoJCQkJCQkkb3JpZ2luYWxpbWFnZSA9IERFRkFVTFRfR0FMTEVSWV9QQVRIIC4gc3RyX3JlcGxhY2UoSU1fUFJFRklYLCcnLCRnYWxlcnlmaWxlc1ska2V5XVsndGh1bWInXSk7DQoJCQkJCX0NCgkJCQkJZWxzZQ0KCQkJCQl7DQoJCQkJCQkkcmVjLT50aHVtYiA9IERFRkFVTFRfR0FMTEVSWV9QQVRIIC4gJGdhbGVyeWZpbGVzWyRrZXldWyd0aHVtYiddOw0KCQkJCQkJJG9yaWdpbmFsaW1hZ2UgPSBERUZBVUxUX0dBTExFUllfUEFUSCAuIHN0cl9yZXBsYWNlKElNX1BSRUZJWCwnJywkZ2FsZXJ5ZmlsZXNbJGtleV1bJ3RodW1iJ10pOw0KCQkJCQl9DQoJCQkJCSRwYXJhbXNsaW5rWydkaXInXSA9IHN0cl9yZXBsYWNlKCclMkYnLCcvJyxyYXd1cmxlbmNvZGUoJGtleSkpOw0KCQkJCQkkcHJldHR5dXJsID0gJ2dhbGxlcnkvJyAuICRwYXJhbXNsaW5rWydkaXInXSAuICcvJyAuDQoJCQkJCQkJKGlzc2V0KCRwYXJhbXNsaW5rWydzdGFydCddKSA/ICRwYXJhbXNsaW5rWydzdGFydCddIC4gJy0nIC4gJHBhcmFtc2xpbmtbJ251bWJlciddIC4gJy0nIDogJycpIC4NCgkJCQkJCQkoaXNzZXQoJHBhcmFtc2xpbmtbJ3Nob3cnXSkgPyAkcGFyYW1zbGlua1snc2hvdyddIC4gJy0nIDogJycpIC4NCgkJCQkJCQkkcmV0dXJuaWQ7DQoJCQkJCSRyZWMtPmZpbGUgPSAkdGhpcy0+Q3JlYXRlRnJvbnRlbmRMaW5rKCRpZCwgJHJldHVybmlkLCAnZGVmYXVsdCcsDQoJCQkJCQknJywgJHBhcmFtc2xpbmssICcnLCB0cnVlLCB0cnVlLCAnJywgZmFsc2UsICRwcmV0dHl1cmwgKTsNCgkJCQkJJHJlYy0+aXNkaXIgPSB0cnVlOw0KDQoJCQkJCS8vIGZvbGRlcmxpbmsgaXMgZGVwcmVjYXRlZCwgdXNlICRyZWMtPmZpbGUgYW5kICRyZWMtPnRodW1iIGluc3RlYWQNCgkJCQkJLyogJzxhIGhyZWY9IicgLiAkcmVjLT5maWxlIC4gJyI+PGltZyBzcmM9IicgLiAkcmVjLT50aHVtYiAuICciIGFsdD0iJyAuICRyZWMtPnRpdGxlIC4gJyIgLz48L2E+JyAqLw0KCQkJCQkkcmVjLT5mb2xkZXJsaW5rID0gJ2RlcHJlY2F0ZWQnOw0KCQkJCX0NCgkJCQllbHNlaWYgKCAkZ2FsbGVyeWluZm9bJ3RodW1id2lkdGgnXSA+IDAgKQ0KCQkJCXsNCgkJCQkJJHJlYy0+dGh1bWIgPSBERUZBVUxUX0dBTExFUllUSFVNQlNfUEFUSCAuICRnYWxlcnlmaWxlc1ska2V5XVsnZmlsZWlkJ10gLiAnLScgLiAkZ2FsbGVyeWluZm9bJ3RlbXBsYXRlaWQnXSAuIHN1YnN0cigkaXRlbVsnZmlsZW5hbWUnXSwgc3RycnBvcygkaXRlbVsnZmlsZW5hbWUnXSwgJy4nKSk7DQoJCQkJCSRvcmlnaW5hbGltYWdlID0gREVGQVVMVF9HQUxMRVJZX1BBVEggLiAka2V5Ow0KCQkJCQkkaW1nY291bnQrKzsNCgkJCQl9DQoJCQkJZWxzZQ0KCQkJCXsNCgkJCQkJJHJlYy0+dGh1bWIgPSBERUZBVUxUX0dBTExFUllfUEFUSCAuIChlbXB0eSgkaXRlbVsnZmlsZXBhdGgnXSkgPyAnJyA6ICRpdGVtWydmaWxlcGF0aCddIC4gJy8nKSAuIElNX1BSRUZJWCAuICRpdGVtWydmaWxlbmFtZSddOw0KCQkJCQkkb3JpZ2luYWxpbWFnZSA9IERFRkFVTFRfR0FMTEVSWV9QQVRIIC4gJGtleTsNCgkJCQkJJGltZ2NvdW50Kys7DQoJCQkJfQ0KDQoJCQkJaWYgKCAkcmVjLT50aHVtYiAhPSAnbW9kdWxlcy9HYWxsZXJ5L2ltYWdlcy9mb2xkZXIucG5nJyApDQoJCQkJew0KCQkJCQkkdGhpcy0+X0NyZWF0ZVRodW1ibmFpbCgkcmVjLT50aHVtYiwNCgkJCQkJCQkJCQkJJG9yaWdpbmFsaW1hZ2UsDQoJCQkJCQkJCQkJCSgkZ2FsbGVyeWluZm9bJ3RodW1id2lkdGgnXSA+IDApID8gJGdhbGxlcnlpbmZvWyd0aHVtYndpZHRoJ10gOiA5NiwNCgkJCQkJCQkJCQkJKCRnYWxsZXJ5aW5mb1sndGh1bWJ3aWR0aCddID4gMCkgPyAkZ2FsbGVyeWluZm9bJ3RodW1iaGVpZ2h0J10gOiA5NiwNCgkJCQkJCQkJCQkJKCRnYWxsZXJ5aW5mb1sndGh1bWJ3aWR0aCddID4gMCkgPyAkZ2FsbGVyeWluZm9bJ3Jlc2l6ZW1ldGhvZCddIDogJ3NjJyk7DQoJCQkJfQ0KCQkJCWFycmF5X3B1c2goJGltYWdlcywkcmVjKTsNCgkJCX0NCgkJfQ0KDQoJCS8vIFNvcnQgYXJyYXkgJGltYWdlcw0KCQkvLyBzZWNvbmQgcGFyYW1ldGVyIG9mIF9BcnJheVNvcnQgaXMgYW4gYXJyYXkgb2Ygc3RyaW5ncywgd2hpY2ggY29udGFpbnM6DQoJCS8vIG4gZm9yIG51bWJlciwgcyBmb3Igc3RyaW5nDQoJCS8vICsgZm9yIGFzY2VuZGluZywgLSBmb3IgZGVzY2VuZGluZw0KCQkvLyBmaWVsZG5hbWUNCgkJJHNvcnRhcnJheSA9IGV4cGxvZGUoJy8nLCduK2ZpbGVvcmRlci8nLiRnYWxsZXJ5aW5mb1snc29ydGl0ZW1zJ10pOw0KCQkkaW1hZ2VzID0gJHRoaXMtPl9BcnJheVNvcnQoJGltYWdlcywgJHNvcnRhcnJheSwgZmFsc2UpOw0KCQkkaXRlbWNvdW50ID0gY291bnQoJGltYWdlcyk7DQoNCgkJLy8gR2V0IHRoZSBpbWFnZXMgd2Ugd2FudA0KCQkkaW1hZ2VzID0gYXJyYXlfc3BsaWNlKCRpbWFnZXMsICRzdGFydC0xLCAkbnVtYmVyKTsNCgl9DQp9DQplbHNlDQp7DQoJJHBhcmFtc1snbW9kdWxlX21lc3NhZ2UnXSA9ICJUaGUgZGlyZWN0b3J5ICciIC4gaHRtbHNwZWNpYWxjaGFycygkcGFyYW1zWydkaXInXSkgLiAiJyBkb2VzIG5vdCBleGlzdC4gQ2hlY2sgeW91ciBwYXJhbWV0ZXJzLiI7DQp9DQoNCg0KLy8gRXhwb3NlIHRoZSBsaXN0IHRvIHNtYXJ0eS4gVXNlICJieV9yZWYiIHRvIHNhdmUgbWVtb3J5Lg0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduX2J5X3JlZignaW1hZ2VzJywkaW1hZ2VzKTsNCg0KLy8gYW5kIGEgY291bnQgb2YgcmVjb3Jkcw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdpbWFnZWNvdW50JywgJGltZ2NvdW50IC4gJyAnIC4gKCRpbWdjb3VudCA9PSAxID8gJHRoaXMtPkxhbmcoJ2ltYWdlJykgOiAkdGhpcy0+TGFuZygnaW1hZ2VzJykpKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbignaXRlbWNvdW50JywgJGl0ZW1jb3VudCk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ251bWJlcicsICRudW1iZXIpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdwYWdlcycsIGNlaWwoJGl0ZW1jb3VudC8kbnVtYmVyKSk7DQoNCi8vIHBhZ2VuYXZpZ2F0aW9uDQokcGFyYW1zbGlua1snZGlyJ10gPSBlbXB0eSgkcGFyYW1zWydkaXInXSkgPyAnJyA6ICcvJyAuIHN0cl9yZXBsYWNlKCclMkYnLCcvJyxyYXd1cmxlbmNvZGUoJHBhcmFtc1snZGlyJ10pKTsNCiRwYXJhbXNsaW5rWydzdGFydCddID0gJHN0YXJ0IC0gJG51bWJlcjsJCQ0KJHByZXR0eXVybCA9ICdnYWxsZXJ5JyAuICRwYXJhbXNsaW5rWydkaXInXSAuICcvJyAuIA0KCQkJCQkoaXNzZXQoJHBhcmFtc2xpbmtbJ251bWJlciddKSA/ICRwYXJhbXNsaW5rWydzdGFydCddIC4gJy0nIC4gJHBhcmFtc2xpbmtbJ251bWJlciddIC4gJy0nIDogJycpIC4NCgkJCQkJKGlzc2V0KCRwYXJhbXNsaW5rWydzaG93J10pID8gJHBhcmFtc2xpbmtbJ3Nob3cnXSAuICctJyA6ICcnKSAuDQoJCQkJCSRyZXR1cm5pZDsNCiR0aGlzLT5zbWFydHktPmFzc2lnbigncHJldnBhZ2UnLCAoJHBhcmFtc2xpbmtbJ3N0YXJ0J10gPj0gMSA/ICR0aGlzLT5DcmVhdGVGcm9udGVuZExpbmsoJGlkLCAkcmV0dXJuaWQsICdkZWZhdWx0JywgJHRoaXMtPkxhbmcoJ3ByZXZwYWdlJyksICRwYXJhbXNsaW5rLCAnJywgZmFsc2UsIHRydWUsICcnLCBmYWxzZSwgJHByZXR0eXVybCkgOiAoJzxlbT4nIC4gJHRoaXMtPkxhbmcoJ3ByZXZwYWdlJykgLiAnPC9lbT4nKSkpOw0KDQokcGFyYW1zbGlua1snc3RhcnQnXSA9ICRzdGFydCArICRudW1iZXI7CQkNCiRwcmV0dHl1cmwgPSAnZ2FsbGVyeScgLiAkcGFyYW1zbGlua1snZGlyJ10gLiAnLycgLiANCgkJCQkJKGlzc2V0KCRwYXJhbXNsaW5rWydudW1iZXInXSkgPyAkcGFyYW1zbGlua1snc3RhcnQnXSAuICctJyAuICRwYXJhbXNsaW5rWydudW1iZXInXSAuICctJyA6ICcnKSAuDQoJCQkJCShpc3NldCgkcGFyYW1zbGlua1snc2hvdyddKSA/ICRwYXJhbXNsaW5rWydzaG93J10gLiAnLScgOiAnJykgLg0KCQkJCQkkcmV0dXJuaWQ7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ25leHRwYWdlJywgKCRpdGVtY291bnQgPj0gJHBhcmFtc2xpbmtbJ3N0YXJ0J10gPyAkdGhpcy0+Q3JlYXRlRnJvbnRlbmRMaW5rKCRpZCwgJHJldHVybmlkLCAnZGVmYXVsdCcsICR0aGlzLT5MYW5nKCduZXh0cGFnZScpLCAkcGFyYW1zbGluaywgJycsIGZhbHNlLCB0cnVlLCAnJywgZmFsc2UsICRwcmV0dHl1cmwpIDogKCc8ZW0+JyAuICR0aGlzLT5MYW5nKCduZXh0cGFnZScpIC4gJzwvZW0+JykpKTsNCiRwYWdlbGlua3MgPSAnJzsNCmZvciAoJGkgPSAwOyAkaSA8IGNlaWwoJGl0ZW1jb3VudC8kbnVtYmVyKTsgJGkrKykgDQp7DQoJJHBhcmFtc2xpbmtbJ3N0YXJ0J10gPSAoJGkgKiAkbnVtYmVyKSArIDE7DQoJJHByZXR0eXVybCA9ICdnYWxsZXJ5JyAuICRwYXJhbXNsaW5rWydkaXInXSAuICcvJyAuIA0KCQkJCQkJKGlzc2V0KCRwYXJhbXNsaW5rWydudW1iZXInXSkgPyAkcGFyYW1zbGlua1snc3RhcnQnXSAuICctJyAuICRwYXJhbXNsaW5rWydudW1iZXInXSAuICctJyA6ICcnKSAuDQoJCQkJCQkoaXNzZXQoJHBhcmFtc2xpbmtbJ3Nob3cnXSkgPyAkcGFyYW1zbGlua1snc2hvdyddIC4gJy0nIDogJycpIC4NCgkJCQkJCSRyZXR1cm5pZDsNCgkkcGFnZWxpbmtzIC49ICgkcGFyYW1zbGlua1snc3RhcnQnXSAhPSAkc3RhcnQgPyAkdGhpcy0+Q3JlYXRlRnJvbnRlbmRMaW5rKCRpZCwgJHJldHVybmlkLCAnZGVmYXVsdCcsICRpICsgMSwgJHBhcmFtc2xpbmssICcnLCBmYWxzZSwgdHJ1ZSwgJycsIGZhbHNlLCAkcHJldHR5dXJsKSA6ICgnPGVtPicgLiAoJGkgKyAxKSAuICc8L2VtPicpKTsNCn0NCiR0aGlzLT5zbWFydHktPmFzc2lnbigncGFnZWxpbmtzJywgJHBhZ2VsaW5rcyk7DQoNCg0KaWYgKGlzc2V0KCRwYXJhbXNbJ21vZHVsZV9tZXNzYWdlJ10pKQ0Kew0KCSR0aGlzLT5zbWFydHktPmFzc2lnbignbW9kdWxlX21lc3NhZ2UnLCRwYXJhbXNbJ21vZHVsZV9tZXNzYWdlJ10pOw0KfQ0KZWxzZQ0Kew0KCSR0aGlzLT5zbWFydHktPmFzc2lnbignbW9kdWxlX21lc3NhZ2UnLCcnKTsNCn0NCg0KDQovLyBEaXNwbGF5IHRlbXBsYXRlDQplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGVGcm9tRGF0YWJhc2UoJGdhbGxlcnlpbmZvWyd0ZW1wbGF0ZSddKTsNCg0KDQovLyBwYXNzIGRhdGEgdG8gaGVhZCBzZWN0aW9uLg0KDQovLyBnZXQgdGVtcGxhdGUtc3BlY2lmaWMgSmF2YVNjcmlwdCBhbmQgZWNobw0KJHRlbXBsYXRlY29kZSA9ICR0aGlzLT5HZXRUZW1wbGF0ZSgkZ2FsbGVyeWluZm9bJ3RlbXBsYXRlJ10pOw0KJHRlbXBsYXRlY29kZWFyciA9IGV4cGxvZGUoVEVNUExBVEVfU0VQQVJBVE9SLCAkdGVtcGxhdGVjb2RlKTsNCiR0ZW1wbGF0ZV9tZXRhZGF0YSA9IHN1YnN0cigkdGVtcGxhdGVjb2RlYXJyWzJdLDAsLTIpOw0KDQovLyBjaGVjayBpZiBhIGNzcyBmaWxlIGV4aXN0cyBhbmQgZWNobw0KaWYgKCBmaWxlX2V4aXN0cygibW9kdWxlcy9HYWxsZXJ5L3RlbXBsYXRlcy9jc3MvIiAuICRnYWxsZXJ5aW5mb1sndGVtcGxhdGUnXSAuICIuY3NzIikgKQ0Kew0KCSR0ZW1wbGF0ZV9tZXRhZGF0YSAuPSAnPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJtb2R1bGVzL0dhbGxlcnkvdGVtcGxhdGVzL2Nzcy8nIC4gJGdhbGxlcnlpbmZvWyd0ZW1wbGF0ZSddIC4gJy5jc3MiIHR5cGU9InRleHQvY3NzIiBtZWRpYT0ic2NyZWVuIiAvPg0KJzsNCn0NCiR0aGlzLT5HYWxsZXJ5TWV0YWRhdGEgPSAkdGVtcGxhdGVfbWV0YWRhdGE7DQoNCj8+]]></data>
	</file>
	<file>
	  <filename>/action.defaultadmin.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmlmICghaXNzZXQoJGdDbXMpKSBleGl0Ow0KDQppZiAoICEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdVc2UgR2FsbGVyeScpICkgDQp7DQogIHJldHVybiAkdGhpcy0+RGlzcGxheUVycm9yUGFnZSgkaWQsICRwYXJhbXMsICRyZXR1cm5pZCwkdGhpcy0+TGFuZygnYWNjZXNzZGVuaWVkJykpOw0KfQ0KDQoNCi8qDQogKiBUaGUgdGFiIGhlYWRlcnMNCiAqLw0KZWNobyAkdGhpcy0+U3RhcnRUYWJIZWFkZXJzKCk7DQokYWN0aXZlX3RhYiA9IGVtcHR5KCRwYXJhbXNbJ2FjdGl2ZV90YWInXSkgPyAnJyA6ICRwYXJhbXNbJ2FjdGl2ZV90YWInXTsNCg0KDQplY2hvICR0aGlzLT5TZXRUYWJIZWFkZXIoJ2dhbGxlcmllcycsJHRoaXMtPkxhbmcoJ2dhbGxlcmllcycpLCAoJGFjdGl2ZV90YWIgPT0gJ2dhbGxlcmllcycpP3RydWU6ZmFsc2UpOw0KDQoNCmlmICggJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTW9kaWZ5IFRlbXBsYXRlcycpICkNCnsNCgllY2hvICR0aGlzLT5TZXRUYWJIZWFkZXIoJ3RlbXBsYXRlcycsJHRoaXMtPkxhbmcoJ3RlbXBsYXRlcycpLCAoJGFjdGl2ZV90YWIgPT0gJ3RlbXBsYXRlcycpP3RydWU6ZmFsc2UpOw0KfQ0KDQoJCQkNCmlmICgkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgU2l0ZSBQcmVmZXJlbmNlcycpKQ0Kew0KCWVjaG8gJHRoaXMtPlNldFRhYkhlYWRlcignb3B0aW9ucycsJHRoaXMtPkxhbmcoJ29wdGlvbnMnKSwgKCRhY3RpdmVfdGFiID09ICdvcHRpb25zJyk/dHJ1ZTpmYWxzZSk7DQp9DQplY2hvICR0aGlzLT5FbmRUYWJIZWFkZXJzKCk7DQoNCg0KLyoNCiAqIFRoZSBjb250ZW50IG9mIHRoZSB0YWJzDQogKi8NCmVjaG8gJHRoaXMtPlN0YXJ0VGFiQ29udGVudCgpOw0KDQppZiAoICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ1VzZSBHYWxsZXJ5JykgKQ0Kew0KCWVjaG8gJHRoaXMtPlN0YXJ0VGFiKCdnYWxsZXJpZXMnLCAkcGFyYW1zKTsNCglpbmNsdWRlKGRpcm5hbWUoX19GSUxFX18pLicvZnVuY3Rpb24uYWRtaW5fZ2FsbGVyaWVzdGFiLnBocCcpOw0KCWVjaG8gJHRoaXMtPkVuZFRhYigpOw0KfQ0KDQppZiggJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTW9kaWZ5IFRlbXBsYXRlcycpICkNCnsNCgllY2hvICR0aGlzLT5TdGFydFRhYigndGVtcGxhdGVzJywgJHBhcmFtcyk7DQoJaW5jbHVkZShkaXJuYW1lKF9fRklMRV9fKS4nL2Z1bmN0aW9uLmFkbWluX3RlbXBsYXRlc3RhYi5waHAnKTsNCgllY2hvICR0aGlzLT5FbmRUYWIoKTsNCn0NCg0KaWYgKCR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01vZGlmeSBTaXRlIFByZWZlcmVuY2VzJykpDQp7DQoJZWNobyAkdGhpcy0+U3RhcnRUYWIoJ29wdGlvbnMnLCAkcGFyYW1zKTsNCglpbmNsdWRlKGRpcm5hbWUoX19GSUxFX18pLicvZnVuY3Rpb24uYWRtaW5fb3B0aW9uc3RhYi5waHAnKTsNCgllY2hvICR0aGlzLT5FbmRUYWIoKTsNCn0NCg0KZWNobyAkdGhpcy0+RW5kVGFiQ29udGVudCgpOw0KDQo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.deletetemplate.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KaWYoICEgJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTW9kaWZ5IFRlbXBsYXRlcycpICkNCiAgew0KICAgICRwYXJhbXNbJ2Vycm9ycyddID0gJHRoaXMtPkxhbmcoJ2FjY2Vzc2RlbmllZCcpOw0KICAgICR0aGlzLT5SZWRpcmVjdCgkaWQsJ2RlZmF1bHRhZG1pbicsJycsJHBhcmFtcyk7DQogICAgcmV0dXJuOw0KICB9DQoNCmlmKCAhKGlzc2V0KCRwYXJhbXNbJ3RlbXBsYXRlJ10pKSApDQogIHsNCiAgICAkdGhpcy0+X0Rpc3BsYXlFcnJvclBhZ2UoICRpZCwgJHBhcmFtcywgJHJldHVybmlkLCAkdGhpcy0+TGFuZygnZXJyb3JfaW5zdWZmaWNpZW50cGFyYW1zJykpOw0KICAgIHJldHVybjsNCiAgfQ0KDQokdGVtcGxhdGUgPSBjbXNfaHRtbF9lbnRpdHlfZGVjb2RlKCRwYXJhbXNbJ3RlbXBsYXRlJ10pOw0KJHRoaXMtPkRlbGV0ZVRlbXBsYXRlKCR0ZW1wbGF0ZSk7DQoNCi8vIGRlbGV0ZSBjc3MtZmlsZQ0KaWYoIGZpbGVfZXhpc3RzKCcuLi9tb2R1bGVzL0dhbGxlcnkvdGVtcGxhdGVzL2Nzcy8nIC4gJHRlbXBsYXRlIC4gJy5jc3MnKSApDQogIHsNCiAgICB1bmxpbmsoJy4uL21vZHVsZXMvR2FsbGVyeS90ZW1wbGF0ZXMvY3NzLycgLiAkdGVtcGxhdGUgLiAnLmNzcycpOw0KICB9DQoNCi8vIGRlbGV0ZSB0ZW1wbGF0ZXByb3BlcnRpZXMNCiRxdWVyeSA9ICJERUxFVEUgRlJPTSAiIC4gY21zX2RiX3ByZWZpeCgpIC4gIm1vZHVsZV9nYWxsZXJ5X3RlbXBsYXRlcHJvcHMgV0hFUkUgdGVtcGxhdGU9PyI7DQokcmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJHRlbXBsYXRlKSk7DQoNCi8vIHNldCBhc3NpZ25lZCBnYWxsZXJpZXMgdG8gZGVmYXVsdC10ZW1wbGF0ZQ0KJHF1ZXJ5ID0gIlVQREFURSAiIC4gY21zX2RiX3ByZWZpeCgpIC4gIm1vZHVsZV9nYWxsZXJ5X3Byb3BzIFNFVCB0ZW1wbGF0ZWlkPT8gV0hFUkUgdGVtcGxhdGU9PyI7DQokcmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoMCwgJHRlbXBsYXRlKSk7DQoNCiRwYXJhbXMgPSBhcnJheSgndGFiX21lc3NhZ2UnPT4gJ3RlbXBsYXRlZGVsZXRlZCcsICdhY3RpdmVfdGFiJyA9PiAndGVtcGxhdGVzJyk7DQokdGhpcy0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJywgJycsICRwYXJhbXMpOw0KDQo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.do_addtemplate.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmlmICggISRnQ21zICkgZXhpdCgpOw0KDQppZiAoIGlzc2V0KCRwYXJhbXNbJ2NhbmNlbCddKSApDQp7DQoJJHBhcmFtcyA9IGFycmF5KCdhY3RpdmVfdGFiJyA9PiAndGVtcGxhdGVzJyk7DQoJJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICcnLCAkcGFyYW1zKTsNCn0NCg0KaWYgKCAhJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTW9kaWZ5IFRlbXBsYXRlcycpICkNCnsNCglyZXR1cm4gJHRoaXMtPkRpc3BsYXlFcnJvclBhZ2UoJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQsJHRoaXMtPkxhbmcoJ2FjY2Vzc2RlbmllZCcpKTsNCn0NCg0KaWYgKCBlbXB0eSgkcGFyYW1zWyd0ZW1wbGF0ZSddKSB8fCBlbXB0eSgkcGFyYW1zWyd0ZW1wbGF0ZWNvbnRlbnQnXSkgKQ0Kew0KCSRwYXJhbXMgPSBhcnJheSgnZXJyb3JzJyA9PiAkdGhpcy0+TGFuZygnZXJyb3InKSwgJ2FjdGl2ZV90YWInID0+ICd0ZW1wbGF0ZXMnKTsNCgkkdGhpcy0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJywgJycsICRwYXJhbXMpOw0KCXJldHVybjsNCn0NCg0KJHBhcmFtc1sndGVtcGxhdGUnXSA9IHRyaW0oJHBhcmFtc1sndGVtcGxhdGUnXSk7DQoNCi8vIGNoZWNrIGlmIHRoaXMgdGVtcGxhdGUgYWxyZWFkeSBleGlzdHMNCiR0eHQgPSB0cmltKCR0aGlzLT5HZXRUZW1wbGF0ZSgkcGFyYW1zWyd0ZW1wbGF0ZSddKSk7DQppZiggJHR4dCAhPSAiIiApDQp7DQoJJHBhcmFtc1snZXJyb3JzJ10gPSAkdGhpcy0+TGFuZygnZXJyb3JfdGVtcGxhdGVuYW1lZXhpc3RzJyk7DQoJJHRoaXMtPlJlZGlyZWN0KCRpZCwgJHBhcmFtc1snb3JpZ2FjdGlvbiddLCAnJywgJHBhcmFtcyk7DQoJcmV0dXJuOw0KfQ0KDQovLyBzYXZlIHRlbXBsYXRlDQokdGhpcy0+U2V0VGVtcGxhdGUoJHBhcmFtc1sndGVtcGxhdGUnXSwgJHBhcmFtc1sndGVtcGxhdGVjb250ZW50J10uVEVNUExBVEVfU0VQQVJBVE9SLiRwYXJhbXNbJ3RlbXBsYXRlY3NzJ10uVEVNUExBVEVfU0VQQVJBVE9SLiRwYXJhbXNbJ3RlbXBsYXRlanMnXS4nKn0nICk7DQoNCi8vIHNhdmUgY3NzLWZpbGUNCiRoYW5kbGUgPSBmb3BlbignLi4vbW9kdWxlcy9HYWxsZXJ5L3RlbXBsYXRlcy9jc3MvJyAuICRwYXJhbXNbJ3RlbXBsYXRlJ10gLiAnLmNzcycsJ3cnKTsNCmZ3cml0ZSgkaGFuZGxlLCRwYXJhbXNbJ3RlbXBsYXRlY3NzJ10pOw0KZmNsb3NlKCRoYW5kbGUpOw0KDQovLyBzYXZlIHRlbXBsYXRlcHJvcGVydGllcw0KaWYgKCAkcGFyYW1zWyd0aHVtYndpZHRoJ10gPD0gMCB8fCAkcGFyYW1zWyd0aHVtYmhlaWdodCddIDw9IDAgKQ0Kew0KCSRwYXJhbXNbJ3RodW1id2lkdGgnXSA9IE5VTEw7DQoJJHBhcmFtc1sndGh1bWJoZWlnaHQnXSA9IE5VTEw7DQoJJHBhcmFtc1sncmVzaXplbWV0aG9kJ10gPSBOVUxMOw0KfQ0KJHBhcmFtc1snbWF4bnVtYmVyJ10gPSAkcGFyYW1zWydtYXhudW1iZXInXSA+IDAgPyAkcGFyYW1zWydtYXhudW1iZXInXSA6IE5VTEw7DQoNCi8vIGpvaW4gc29ydHByZWZlcmVuY2VzIHRvIHN0cmluZw0KJHBhcmFtc1snc29ydGl0ZW1zJ10gPSAnJzsNCmZvcmVhY2goJHBhcmFtc1snc29ydGZpZWxkJ10gYXMgJGtleT0+JHNvcnRmaWVsZCkNCnsNCgkkcGFyYW1zWydzb3J0aXRlbXMnXSAuPSAhZW1wdHkoJHNvcnRmaWVsZCkgPyBzdHJfcmVwbGFjZSgnIycsJHBhcmFtc1snc29ydHR5cGUnXVska2V5XSwkc29ydGZpZWxkKS4nLycgOiAnJzsNCn0NCiRwYXJhbXNbJ3NvcnRpdGVtcyddID0gc3Vic3RyKCRwYXJhbXNbJ3NvcnRpdGVtcyddLDAsLTEpOw0KDQokcXVlcnkgPSAiSU5TRVJUIElOVE8gIiAuIGNtc19kYl9wcmVmaXgoKSAuICJtb2R1bGVfZ2FsbGVyeV90ZW1wbGF0ZXByb3BzDQoJCSh0ZW1wbGF0ZSx0aHVtYndpZHRoLHRodW1iaGVpZ2h0LHJlc2l6ZW1ldGhvZCxtYXhudW1iZXIsc29ydGl0ZW1zKQ0KCQlWQUxVRVMgKD8sPyw/LD8sPyw/KSI7DQokcmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJHBhcmFtc1sndGVtcGxhdGUnXSwkcGFyYW1zWyd0aHVtYndpZHRoJ10sJHBhcmFtc1sndGh1bWJoZWlnaHQnXSwkcGFyYW1zWydyZXNpemVtZXRob2QnXSwkcGFyYW1zWydtYXhudW1iZXInXSwkcGFyYW1zWydzb3J0aXRlbXMnXSkpOw0KaWYgKCAhJHJlc3VsdCApDQp7DQoJZWNobyAnRVJST1I6ICcgLiBteXNxbF9lcnJvcigpOw0KCWV4aXQoKTsNCn0NCg0KJHBhcmFtcyA9IGFycmF5KCd0YWJfbWVzc2FnZSc9PiAndGVtcGxhdGVhZGRlZCcsICdhY3RpdmVfdGFiJyA9PiAndGVtcGxhdGVzJyk7DQokdGhpcy0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJywgJycsICRwYXJhbXMpOw0KPz4=]]></data>
	</file>
	<file>
	  <filename>/action.do_editgallery.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmlmKCAhaXNzZXQoICRnQ21zICkgKSBleGl0KCk7DQoNCmlmKCBpc3NldCggJHBhcmFtc1snY2FuY2VsJ10gKSApDQp7DQoJJHBhcmFtcyA9IGFycmF5KCdhY3RpdmVfdGFiJyA9PiAnZ2FsbGVyaWVzJyk7DQoJJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICcnLCAkcGFyYW1zKTsNCn0NCg0KaWYoICEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdVc2UgR2FsbGVyeScpICkNCnsNCglyZXR1cm4gJHRoaXMtPkRpc3BsYXlFcnJvclBhZ2UoJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCR0aGlzLT5MYW5nKCdhY2Nlc3NkZW5pZWQnKSk7DQp9DQoNCmlmKCAhaXNzZXQoJHBhcmFtc1snZ2lkJ10pIHx8ICFpc3NldCgkcGFyYW1zWydtb2RlJ10pICkNCnsNCgkkcGFyYW1zID0gYXJyYXkoJ2dpZCcgPT4gJHBhcmFtc1snZ2lkJ10sICdtb2RlJyA9PiAnZWRpdCcsICdlcnJvcnMnID0+ICR0aGlzLT5MYW5nKCdlcnJvcl9pbnN1ZmZpY2llbnRwYXJhbXMnKSk7DQoJJHRoaXMtPlJlZGlyZWN0KCRpZCwnZWRpdGdhbGxlcnknLCcnLCRwYXJhbXMpOw0KCXJldHVybjsNCn0NCg0KaWYoICRwYXJhbXNbJ21vZGUnXSA9PSAndW5zb3J0JykNCnsNCgkkcXVlcnkgPSAiVVBEQVRFICIgLiBjbXNfZGJfcHJlZml4KCkgLiAibW9kdWxlX2dhbGxlcnkgU0VUIGZpbGVvcmRlcj0wIFdIRVJFIGdhbGxlcnlpZCA9ID8iOw0KCSRyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkcGFyYW1zWydnaWQnXSkpOw0KCWlmICggISRyZXN1bHQgKQ0KCXsNCgkJZWNobyAnRVJST1I6ICcgLiBteXNxbF9lcnJvcigpOw0KCQlleGl0KCk7DQoJfQ0KfQ0KZWxzZQ0Kew0KCSRnYWxsZXJ5dGl0bGUgPSBpc3NldCgkcGFyYW1zWydnYWxsZXJ5dGl0bGUnXSkgPyAkcGFyYW1zWydnYWxsZXJ5dGl0bGUnXSA6ICcnOw0KCSRnYWxsZXJ5Y29tbWVudCA9IGlzc2V0KCRwYXJhbXNbJ2dhbGxlcnljb21tZW50J10pID8gJHBhcmFtc1snZ2FsbGVyeWNvbW1lbnQnXSA6ICcnOw0KDQoJJHF1ZXJ5ID0gIlVQREFURSAiIC4gY21zX2RiX3ByZWZpeCgpIC4gIm1vZHVsZV9nYWxsZXJ5IFNFVCB0aXRsZSA9ID8sIGNvbW1lbnQgPSA/IFdIRVJFIGZpbGVpZCA9ID8iOw0KCSRyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkZ2FsbGVyeXRpdGxlLCAkZ2FsbGVyeWNvbW1lbnQsICRwYXJhbXNbJ2dpZCddKSk7DQoJaWYgKCAhJHJlc3VsdCApDQoJew0KCQllY2hvICdFUlJPUjogJyAuIG15c3FsX2Vycm9yKCk7DQoJCWV4aXQoKTsNCgl9DQoNCgkkcGFyYW1zWydoaWRlcGFyZW50bGluayddID0gaXNzZXQoJHBhcmFtc1snaGlkZXBhcmVudGxpbmsnXSkgPyAkcGFyYW1zWydoaWRlcGFyZW50bGluayddIDogMDsNCgkkcGFyYW1zWydoaWRlcGFyZW50bGluayddID0gJHBhcmFtc1snZ2lkJ10gPT0gMSA/IDEgOiAkcGFyYW1zWydoaWRlcGFyZW50bGluayddOw0KDQoJJHF1ZXJ5ID0gIlVQREFURSAiIC4gY21zX2RiX3ByZWZpeCgpIC4gIm1vZHVsZV9nYWxsZXJ5X3Byb3BzIFNFVCB0ZW1wbGF0ZWlkPT8saGlkZXBhcmVudGxpbms9PyBXSEVSRSBmaWxlaWQ9PyI7DQoJJHJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRwYXJhbXNbJ3RlbXBsYXRlaWQnXSwkcGFyYW1zWydoaWRlcGFyZW50bGluayddLCRwYXJhbXNbJ2dpZCddKSk7DQoJaWYgKCAhJHJlc3VsdCApDQoJew0KCQllY2hvICdFUlJPUjogJyAuIG15c3FsX2Vycm9yKCk7DQoJCWV4aXQoKTsNCgl9DQoNCg0KCWlmICggIWVtcHR5KCRwYXJhbXNbJ3NvcnQnXSkgKQ0KCXsNCgkJJHNvcnQgPSBleHBsb2RlKCIsIiwkcGFyYW1zWydzb3J0J10pOw0KCX0NCgkkc2VhcmNod29yZHMgPSAkZ2FsbGVyeXRpdGxlIC4gJyAnIC4gJGdhbGxlcnljb21tZW50Ow0KCWlmICggaXNzZXQoJHBhcmFtc1snZmlsZXRpdGxlJ10pICkNCgl7DQoJCWZvcmVhY2goJHBhcmFtc1snZmlsZXRpdGxlJ10gYXMgJGtleT0+JGZpbGV0aXRsZSkNCgkJew0KCQkJaWYgKCAhZW1wdHkoJHBhcmFtc1snc29ydCddKSApDQoJCQl7DQoJCQkJJHNvcnRrZXkgPSBlbXB0eSgkc29ydCkgPyAwIDogYXJyYXlfc2VhcmNoKCRrZXksICRzb3J0KSArIDE7DQoJCQkJaWYgKCAkZmlsZXRpdGxlID09ICIjZGlyIiApDQoJCQkJew0KCQkJCQkkcXVlcnkgPSAiVVBEQVRFICIgLiBjbXNfZGJfcHJlZml4KCkgLiAibW9kdWxlX2dhbGxlcnkgU0VUIGZpbGVvcmRlcj0/IFdIRVJFIGZpbGVpZCA9ID8iOw0KCQkJCQkkcmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJHNvcnRrZXksICRrZXkpKTsNCgkJCQl9DQoJCQkJZWxzZQ0KCQkJCXsNCgkJCQkJJHNlYXJjaHdvcmRzIC49ICcgJyAuICRmaWxldGl0bGUgLiAnICcgLiAkcGFyYW1zWydmaWxlY29tbWVudCddWyRrZXldOw0KCQkJCQkkcXVlcnkgPSAiVVBEQVRFICIgLiBjbXNfZGJfcHJlZml4KCkgLiAibW9kdWxlX2dhbGxlcnkgU0VUIHRpdGxlPT8sIGNvbW1lbnQ9PywgZmlsZW9yZGVyPT8gV0hFUkUgZmlsZWlkID0gPyI7DQoJCQkJCSRyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkZmlsZXRpdGxlLCAkcGFyYW1zWydmaWxlY29tbWVudCddWyRrZXldLCAkc29ydGtleSwgJGtleSkpOw0KCQkJCX0NCgkJCX0NCgkJCWVsc2VpZiAoICRmaWxldGl0bGUgIT0gIiNkaXIiICkNCgkJCXsNCgkJCQkkc2VhcmNod29yZHMgLj0gJyAnIC4gJGZpbGV0aXRsZSAuICcgJyAuICRwYXJhbXNbJ2ZpbGVjb21tZW50J11bJGtleV07DQoJCQkJJHF1ZXJ5ID0gIlVQREFURSAiIC4gY21zX2RiX3ByZWZpeCgpIC4gIm1vZHVsZV9nYWxsZXJ5IFNFVCB0aXRsZT0/LCBjb21tZW50PT8gV0hFUkUgZmlsZWlkID0gPyI7DQoJCQkJJHJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRmaWxldGl0bGUsICRwYXJhbXNbJ2ZpbGVjb21tZW50J11bJGtleV0sICRrZXkpKTsNCgkJCX0NCgkJCWlmICggISRyZXN1bHQgKQ0KCQkJew0KCQkJCWVjaG8gJ0VSUk9SOiAnIC4gbXlzcWxfZXJyb3IoKTsNCgkJCQlleGl0KCk7DQoJCQl9DQoJCX0NCgl9DQp9DQoNCg0KaWYgKCAkcmVzdWx0ICkgDQp7DQoJJHNlYXJjaCA9JiAkdGhpcy0+R2V0TW9kdWxlSW5zdGFuY2UoJ1NlYXJjaCcpOw0KCWlmKCAkc2VhcmNoICYmICRwYXJhbXNbJ21vZGUnXSAhPSAndW5zb3J0JyApDQoJew0KCQkkc2VhcmNoLT5BZGRXb3JkcygkdGhpcy0+R2V0TmFtZSgpLCRwYXJhbXNbJ2dpZCddLCdnYWxsZXJ5Jywkc2VhcmNod29yZHMpOw0KCX0NCg0KCSRwYXJhbXMgPSBhcnJheSgnZ2lkJyA9PiAkcGFyYW1zWydnaWQnXSwgJ21vZGUnID0+ICdlZGl0JywgJ21vZHVsZV9tZXNzYWdlJyA9PiAkdGhpcy0+TGFuZygnZ2FsbGVyeXVwZGF0ZWQnKSk7DQoJJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2VkaXRnYWxsZXJ5JywgJycsICRwYXJhbXMpOw0KfQ0KZWxzZSANCnsNCgkkcGFyYW1zID0gYXJyYXkoJ2dpZCcgPT4gJHBhcmFtc1snZ2lkJ10sICdtb2RlJyA9PiAnZWRpdCcsICdlcnJvcnMnID0+ICR0aGlzLT5MYW5nKCdlcnJvcl91cGRhdGVnYWxsZXJ5ZmFpbGVkJykpOw0KCSR0aGlzLT5SZWRpcmVjdCgkaWQsICdlZGl0Z2FsbGVyeScsICcnLCAkcGFyYW1zKTsNCn0NCg0KPz4=]]></data>
	</file>
	<file>
	  <filename>/action.do_edittemplate.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmlmKCAhaXNzZXQoICRnQ21zICkgKSBleGl0KCk7DQoNCmlmKCBpc3NldCgkcGFyYW1zWydjYW5jZWwnXSkgKQ0Kew0KCSRwYXJhbXMgPSBhcnJheSgnYWN0aXZlX3RhYicgPT4gJ3RlbXBsYXRlcycpOw0KCSR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nLCAnJywgJHBhcmFtcyk7DQp9DQoNCmlmICggISR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01vZGlmeSBUZW1wbGF0ZXMnKSApDQp7DQoJcmV0dXJuICR0aGlzLT5EaXNwbGF5RXJyb3JQYWdlKCRpZCwgJHBhcmFtcywgJHJldHVybmlkLCR0aGlzLT5MYW5nKCdhY2Nlc3NkZW5pZWQnKSk7DQp9DQoNCmlmICggZW1wdHkoJHBhcmFtc1sndGVtcGxhdGUnXSkgfHwgZW1wdHkoJHBhcmFtc1sndGVtcGxhdGVjb250ZW50J10pICkNCnsNCgkkcGFyYW1zID0gYXJyYXkoJ2Vycm9ycycgPT4gJHRoaXMtPkxhbmcoJ2Vycm9yJyksICdhY3RpdmVfdGFiJyA9PiAndGVtcGxhdGVzJyk7DQoJJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICcnLCAkcGFyYW1zKTsNCglyZXR1cm47DQp9DQoNCmlmICggaXNzZXQoJHBhcmFtc1sncmVzZXRidXR0b24nXSkgKQ0Kew0KCSRmbiA9IGRpcm5hbWUoX19GSUxFX18pLkRJUkVDVE9SWV9TRVBBUkFUT1IuJ3RlbXBsYXRlcycuRElSRUNUT1JZX1NFUEFSQVRPUi4ndGVtcGxhdGVfJy5zdHJ0b2xvd2VyKCRwYXJhbXNbJ3RlbXBsYXRlJ10pLicudHBsJzsNCglpZiggZmlsZV9leGlzdHMoICRmbiApICkNCgl7DQoJCSR0ZW1wbGF0ZWNvZGUgPSBAZmlsZV9nZXRfY29udGVudHMoJGZuKTsNCgkJbGlzdCgkcGFyYW1zWyd0ZW1wbGF0ZWNvbnRlbnQnXSwgJHBhcmFtc1sndGVtcGxhdGVjc3MnXSwgJHBhcmFtc1sndGVtcGxhdGVqcyddKSA9IGV4cGxvZGUoVEVNUExBVEVfU0VQQVJBVE9SLCBzdWJzdHIoJHRlbXBsYXRlY29kZSwwLC0yKSk7DQoJfQ0KfQ0KDQovLyBzYXZlIHRlbXBsYXRlDQokdGhpcy0+U2V0VGVtcGxhdGUoJHBhcmFtc1sndGVtcGxhdGUnXSwgJHBhcmFtc1sndGVtcGxhdGVjb250ZW50J10uVEVNUExBVEVfU0VQQVJBVE9SLiRwYXJhbXNbJ3RlbXBsYXRlY3NzJ10uVEVNUExBVEVfU0VQQVJBVE9SLiRwYXJhbXNbJ3RlbXBsYXRlanMnXS4nKn0nICk7DQoNCi8vIHNhdmUgY3NzLWZpbGUNCmlmICggZW1wdHkoJHBhcmFtc1sndGVtcGxhdGVjc3MnXSkgKQ0Kew0KCXVubGluaygnLi4vbW9kdWxlcy9HYWxsZXJ5L3RlbXBsYXRlcy9jc3MvJyAuICRwYXJhbXNbJ3RlbXBsYXRlJ10gLiAnLmNzcycpOw0KfQ0KZWxzZQ0Kew0KCSRoYW5kbGUgPSBmb3BlbignLi4vbW9kdWxlcy9HYWxsZXJ5L3RlbXBsYXRlcy9jc3MvJyAuICRwYXJhbXNbJ3RlbXBsYXRlJ10gLiAnLmNzcycsJ3cnKTsNCglmd3JpdGUoJGhhbmRsZSwkcGFyYW1zWyd0ZW1wbGF0ZWNzcyddKTsNCglmY2xvc2UoJGhhbmRsZSk7DQp9DQoNCi8vIHNhdmUgdGVtcGxhdGVwcm9wZXJ0aWVzDQppZiAoICRwYXJhbXNbJ3RodW1id2lkdGgnXSA8PSAwIHx8ICRwYXJhbXNbJ3RodW1iaGVpZ2h0J10gPD0gMCApDQp7DQoJJHBhcmFtc1sndGh1bWJ3aWR0aCddID0gTlVMTDsNCgkkcGFyYW1zWyd0aHVtYmhlaWdodCddID0gTlVMTDsNCgkkcGFyYW1zWydyZXNpemVtZXRob2QnXSA9IE5VTEw7DQp9DQokcGFyYW1zWydtYXhudW1iZXInXSA9ICRwYXJhbXNbJ21heG51bWJlciddID4gMCA/ICRwYXJhbXNbJ21heG51bWJlciddIDogTlVMTDsNCg0KLy8gam9pbiBzb3J0cHJlZmVyZW5jZXMgdG8gc3RyaW5nDQokcGFyYW1zWydzb3J0aXRlbXMnXSA9ICcnOw0KZm9yZWFjaCgkcGFyYW1zWydzb3J0ZmllbGQnXSBhcyAka2V5PT4kc29ydGZpZWxkKQ0Kew0KCSRwYXJhbXNbJ3NvcnRpdGVtcyddIC49ICFlbXB0eSgkc29ydGZpZWxkKSA/IHN0cl9yZXBsYWNlKCcjJywkcGFyYW1zWydzb3J0dHlwZSddWyRrZXldLCRzb3J0ZmllbGQpLicvJyA6ICcnOw0KfQ0KJHBhcmFtc1snc29ydGl0ZW1zJ10gPSBzdWJzdHIoJHBhcmFtc1snc29ydGl0ZW1zJ10sMCwtMSk7DQoNCiRxdWVyeSA9ICJVUERBVEUgIiAuIGNtc19kYl9wcmVmaXgoKSAuICJtb2R1bGVfZ2FsbGVyeV90ZW1wbGF0ZXByb3BzDQoJCVNFVCB0aHVtYndpZHRoPT8sdGh1bWJoZWlnaHQ9PyxyZXNpemVtZXRob2Q9PyxtYXhudW1iZXI9Pyxzb3J0aXRlbXM9Pw0KCQlXSEVSRSB0ZW1wbGF0ZT0/IjsNCiRyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkcGFyYW1zWyd0aHVtYndpZHRoJ10sJHBhcmFtc1sndGh1bWJoZWlnaHQnXSwkcGFyYW1zWydyZXNpemVtZXRob2QnXSwkcGFyYW1zWydtYXhudW1iZXInXSwkcGFyYW1zWydzb3J0aXRlbXMnXSwkcGFyYW1zWyd0ZW1wbGF0ZSddKSk7DQppZiAoICEkcmVzdWx0ICkNCnsNCgllY2hvICdFUlJPUjogJyAuIG15c3FsX2Vycm9yKCk7DQoJZXhpdCgpOw0KfQ0KDQppZiAoIGlzc2V0KCRwYXJhbXNbJ2FwcGx5YnV0dG9uJ10pIHx8IGlzc2V0KCRwYXJhbXNbJ3Jlc2V0YnV0dG9uJ10pICkNCnsNCgkkcGFyYW1zID0gYXJyYXkoJ3RlbXBsYXRlJyA9PiAkcGFyYW1zWyd0ZW1wbGF0ZSddLCAnbW9kZScgPT4gImVkaXQiLCAnbW9kdWxlX21lc3NhZ2UnID0+ICR0aGlzLT5MYW5nKCd0ZW1wbGF0ZXVwZGF0ZWQnKSk7DQoJJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2VkaXR0ZW1wbGF0ZScsICcnLCAkcGFyYW1zKTsNCn0NCmVsc2UNCnsNCgkkcGFyYW1zID0gYXJyYXkoJ3RhYl9tZXNzYWdlJz0+ICd0ZW1wbGF0ZXVwZGF0ZWQnLCAnYWN0aXZlX3RhYicgPT4gJ3RlbXBsYXRlcycpOw0KCSR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nLCAnJywgJHBhcmFtcyk7DQp9DQo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.do_updateoptions.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmlmICghaXNzZXQoJGdDbXMpKSBleGl0Ow0KDQppZiggISR0aGlzLT5DaGVja1Blcm1pc3Npb24oICdNb2RpZnkgU2l0ZSBQcmVmZXJlbmNlcycgKSApDQp7DQogIHJldHVybiAkdGhpcy0+RGlzcGxheUVycm9yUGFnZSgkaWQsICRwYXJhbXMsICRyZXR1cm5pZCwkdGhpcy0+TGFuZygnYWNjZXNzZGVuaWVkJykpOw0KfQ0KDQokdGhpcy0+U2V0UHJlZmVyZW5jZSgnYWxsb3dlZF9leHRlbnNpb25zJywgJHBhcmFtc1snYWxsb3dlZF9leHRlbnNpb25zJ10pOw0KJHRoaXMtPlNldFByZWZlcmVuY2UoJ3VzZV9jb21tZW50X3d5c2l3eWcnLCBpc3NldCgkcGFyYW1zWyd1c2VfY29tbWVudF93eXNpd3lnJ10pID8gJHBhcmFtc1sndXNlX2NvbW1lbnRfd3lzaXd5ZyddIDogMCk7DQoNCg0KJHBhcmFtcyA9IGFycmF5KCd0YWJfbWVzc2FnZSc9PiAnb3B0aW9uc3VwZGF0ZWQnLCAnYWN0aXZlX3RhYicgPT4gJ29wdGlvbnMnKTsNCiR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nLCAnJywgJHBhcmFtcyk7DQo/Pg0K]]></data>
	</file>
	<file>
	  <filename>/action.editgallery.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KaWYoICEkZ0NtcyApIGV4aXQoKTsNCg0KaWYoICEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdVc2UgR2FsbGVyeScpICkgDQp7DQoJZWNobyAkdGhpcy0+TGFuZygnYWNjZXNzZGVuaWVkJyk7DQoJcmV0dXJuOw0KfQ0KDQokdGhlbWVPYmplY3QgPSYgJGdDbXMtPnZhcmlhYmxlc1snYWRtaW50aGVtZSddOw0KDQoNCi8vIGNoZWNrIGlmIHdlIGhhdmUgYSBnYWxsZXJ5IG5hbWUNCmlmKCAhaXNzZXQoJHBhcmFtc1snZ2lkJ10pICkNCnsNCgkkcGFyYW1zWydlcnJvcnMnXSA9ICR0aGlzLT5MYW5nKCdlcnJvcl9pbnN1ZmZpY2llbnRwYXJhbXMnKTsNCgkkdGhpcy0+UmVkaXJlY3QoJGlkLCdkZWZhdWx0YWRtaW4nLCcnLCRwYXJhbXMpOw0KCXJldHVybjsNCn0NCmlmKCAhaXNzZXQoJHBhcmFtc1snbW9kZSddKSApDQp7DQoJJHBhcmFtc1snZXJyb3JzJ10gPSAkdGhpcy0+TGFuZygnZXJyb3JfaW5zdWZmaWNpZW50cGFyYW1zJyk7DQoJJHRoaXMtPlJlZGlyZWN0KCRpZCwnZGVmYXVsdGFkbWluJywnJywkcGFyYW1zKTsNCglyZXR1cm47DQp9DQoNCiRwYXJhbXNbJ29yaWdhY3Rpb24nXSA9ICRwYXJhbXNbJ2FjdGlvbiddOw0KDQokZ2FsbGVyeWluZm8gPSAkdGhpcy0+X0dldGdhbGxlcnlpbmZvYnlpZCgkcGFyYW1zWydnaWQnXSk7DQppZiAoICRnYWxsZXJ5aW5mb1sndGVtcGxhdGVpZCddID09IDAgKQ0Kew0KCS8vIG92ZXJyaWRlIHRlbXBsYXRlIHNldHRpbmdzIHdpdGggZGVmYXVsdCB0ZW1wbGF0ZQ0KCSR0ZW1wbGF0ZXByb3BzID0gJHRoaXMtPl9HZXRUZW1wbGF0ZXByb3BzKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdjdXJyZW50X3RlbXBsYXRlJykpOw0KCSRnYWxsZXJ5aW5mb1sndGh1bWJ3aWR0aCddID0gJHRlbXBsYXRlcHJvcHNbJ3RodW1id2lkdGgnXTsNCgkkZ2FsbGVyeWluZm9bJ3NvcnRpdGVtcyddID0gJHRlbXBsYXRlcHJvcHNbJ3NvcnRpdGVtcyddOw0KfQ0KJGdhbGxlcnlwYXRoID0gJHBhcmFtc1snZ2lkJ10gPT0gMSA/ICcnIDogdHJpbSgkZ2FsbGVyeWluZm9bJ2ZpbGVwYXRoJ10gLiAnLycgLiAkZ2FsbGVyeWluZm9bJ2ZpbGVuYW1lJ10sJy8nKTsNCg0KJGNvbnRlbnRzID0gIiI7DQppZiggJHBhcmFtc1snbW9kZSddID09ICdhZGQnICkNCnsNCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2Zvcm1zdGFydCcsICR0aGlzLT5DcmVhdGVGb3JtU3RhcnQgKCRpZCwgJ2RvX2FkZGdhbGxlcnknLCRyZXR1cm5pZCwncG9zdCcsJycsIGZhbHNlLCAnJywgJHBhcmFtcykpOw0KCSR0aGlzLT5zbWFydHktPmFzc2lnbignZ2FsbGVyeW5hbWUnLCAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCAkaWQsICdnYWxsZXJ5JywgIiIsIDQwICkpOw0KfQ0KZWxzZSANCnsNCgkkdGhpcy0+X1VwZGF0ZUdhbGxlcnlEQigkZ2FsbGVyeXBhdGgsJHBhcmFtc1snZ2lkJ10pOw0KCSRnYWxsZXJ5ID0gJHRoaXMtPl9HZXRnYWxsZXJ5ZmlsZXMoJGdhbGxlcnlwYXRoKTsNCg0KCSRzaG93Z2FsbGVyeSA9IGFycmF5KCk7DQoJJHRydWVpbWFnZSA9ICR0aGVtZU9iamVjdC0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vdHJ1ZS5naWYnLCAkdGhpcy0+TGFuZygnc2V0ZmFsc2UnKSwnJywnJywnc3lzdGVtaWNvbicpOw0KCSR0cnVlaW1hZ2UyID0gJHRoZW1lT2JqZWN0LT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS90cnVlLmdpZicsICR0aGlzLT5MYW5nKCdkZWZhdWx0JyksJycsJycsJ3N5c3RlbWljb24nKTsNCgkkZmFsc2VpbWFnZSA9ICR0aGVtZU9iamVjdC0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vZmFsc2UuZ2lmJywgJHRoaXMtPkxhbmcoJ3NldHRydWUnKSwnJywnJywnc3lzdGVtaWNvbicpOw0KDQoJZm9yZWFjaCAoJGdhbGxlcnkgYXMgJGZpbGUpDQoJew0KCQkkb25lcm93ID0gbmV3IHN0ZENsYXNzKCk7DQoNCgkJJHBhcmFtc1snZmlkJ10gPSAkZmlsZVsnZmlsZWlkJ107DQoNCgkJJG9uZXJvdy0+ZmlsZWlkID0gJGZpbGVbJ2ZpbGVpZCddOw0KCQkkb25lcm93LT5maWxlb3JkZXIgPSAkZmlsZVsnZmlsZW9yZGVyJ107DQoJCSRvbmVyb3ctPmZpbGUgPSAkZmlsZVsnZmlsZW5hbWUnXTsNCg0KCQlpZiAoIHN1YnN0cigkZmlsZVsnZmlsZW5hbWUnXSwtMSkgPT0gIi8iICkNCgkJew0KCQkJLy8gcmVjb3JkIGlzIGEgZGlyZWN0b3J5DQoJCQkkb25lcm93LT50aHVtYiA9ICc8aW1nIHNyYz0iLi4vbW9kdWxlcy9HYWxsZXJ5L2ltYWdlcy9mb2xkZXJzbWFsbC5wbmciIGFsdD0iJyAuICRmaWxlWydmaWxlbmFtZSddIC4gJyIgLz4nOw0KCQkJJG9uZXJvdy0+dGh1bWJ1cmwgPSAnLi4vbW9kdWxlcy9HYWxsZXJ5L2ltYWdlcy9mb2xkZXJzbWFsbC5wbmcnOw0KCQkJJG9uZXJvdy0+ZmlsZW5hbWUgPSAnJzsNCgkJCSRvbmVyb3ctPnRpdGxlID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnZWRpdGdhbGxlcnknLCAkcmV0dXJuaWQsICRmaWxlWydmaWxlbmFtZSddLCBhcnJheSgnZ2lkJz0+JGZpbGVbJ2ZpbGVpZCddLCdtb2RlJz0+ImVkaXQiKSkgLiAkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCAnZmlsZXRpdGxlWycgLiAkZmlsZVsnZmlsZWlkJ10gLiAnXScsICcjZGlyJyk7DQoJCQkkb25lcm93LT5jb21tZW50ID0gIiI7DQoJCQkkb25lcm93LT5maWxlZGF0ZSA9ICIiOw0KCQkJJG9uZXJvdy0+ZGVmYXVsdGxpbmsgPSAiIjsNCgkJCSRvbmVyb3ctPmlzZGlyID0gMTsNCgkJfQ0KCQllbHNlDQoJCXsNCgkJCSRvbmVyb3ctPnRodW1iID0gJzxpbWcgc3JjPSIuLi8nIC4gREVGQVVMVF9HQUxMRVJZX1BBVEggLiAkZmlsZVsnZmlsZXBhdGgnXSAuICcvJyAuIElNX1BSRUZJWCAuICRmaWxlWydmaWxlbmFtZSddIC4gJyIgYWx0PSInIC4gJGZpbGVbJ2ZpbGVuYW1lJ10gLiAnIiAvPic7DQoJCQkkb25lcm93LT50aHVtYnVybCA9ICcuLi8nIC4gREVGQVVMVF9HQUxMRVJZX1BBVEggLiBzdHJfcmVwbGFjZSgnJTJGJywnLycscmF3dXJsZW5jb2RlKCRmaWxlWydmaWxlcGF0aCddIC4gJy8nIC4gSU1fUFJFRklYIC4gJGZpbGVbJ2ZpbGVuYW1lJ10pKTsNCgkJCSRvbmVyb3ctPmZpbGVuYW1lID0gJGZpbGVbJ2ZpbGVuYW1lJ107DQoJCQkkb25lcm93LT50aXRsZSA9ICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAnZmlsZXRpdGxlWycgLiAkZmlsZVsnZmlsZWlkJ10gLiAnXScsICRmaWxlWyd0aXRsZSddLCAzMCwgMTAwKTsNCgkJCSRvbmVyb3ctPmNvbW1lbnQgPSAkdGhpcy0+Q3JlYXRlVGV4dEFyZWEoMCwgJGlkLCAkZmlsZVsnY29tbWVudCddLCAnZmlsZWNvbW1lbnRbJyAuICRmaWxlWydmaWxlaWQnXSAuICddJywgJ2Zha2UiIHN0eWxlPSJ3aWR0aDo0MDBweDsgaGVpZ2h0OjRlbTsnLCAnJywgJycsICcnLCAnNDAnLCAnNCcpOyAgLy8gY2xhc3MgZmlsbGVkIHdpdGggZmFrZSBhbmQgc3R5bGUtaW5mbyB0byBvdmVycnVsZSB0aGUgdGhlbWUtY3NzDQoJCQkkb25lcm93LT5maWxlZGF0ZSA9ICRmaWxlWydmaWxlZGF0ZSddOw0KCQkJaWYoICRmaWxlWydmaWxlaWQnXSA9PSAkZ2FsbGVyeWluZm9bJ2RlZmF1bHRmaWxlJ10gKQ0KCQkJew0KCQkJCSRvbmVyb3ctPmRlZmF1bHRsaW5rID0gJHRydWVpbWFnZTI7DQoJCQl9DQoJCQllbHNlDQoJCQl7DQoJCQkJJG9uZXJvdy0+ZGVmYXVsdGxpbmsgPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdzd2l0Y2hkZWZhdWx0JywgJHJldHVybmlkLCAkZmFsc2VpbWFnZSwgJHBhcmFtcyk7DQoJCQl9DQoJCQkkb25lcm93LT5pc2RpciA9IDA7DQoJCQlpZiAoICFmaWxlX2V4aXN0cygnLi4vJyAuIERFRkFVTFRfR0FMTEVSWV9QQVRIIC4gJGZpbGVbJ2ZpbGVwYXRoJ10gLiAnLycgLiBJTV9QUkVGSVggLiAkZmlsZVsnZmlsZW5hbWUnXSkgKQ0KCQkJew0KCQkJCSR0aGlzLT5fQ3JlYXRlVGh1bWJuYWlsKCcuLi8nIC4gREVGQVVMVF9HQUxMRVJZX1BBVEggLiAkZmlsZVsnZmlsZXBhdGgnXSAuICcvJyAuIElNX1BSRUZJWCAuICRmaWxlWydmaWxlbmFtZSddLA0KCQkJCQkJCQkJCScuLi8nIC4gREVGQVVMVF9HQUxMRVJZX1BBVEggLiAkZmlsZVsnZmlsZXBhdGgnXSAuICcvJyAuICRmaWxlWydmaWxlbmFtZSddLA0KCQkJCQkJCQkJCTk2LCA5NiwgJ3NjJyk7DQoJCQl9DQoJCX0NCg0KCQlpZiAoICRmaWxlWydhY3RpdmUnXSApDQoJCXsNCgkJCSRhY3RpdmVpbWFnZSA9ICR0cnVlaW1hZ2U7DQoJCX0NCgkJZWxzZQ0KCQl7DQoJCQkkYWN0aXZlaW1hZ2UgPSAkZmFsc2VpbWFnZTsNCgkJfQ0KCQkkb25lcm93LT5hY3RpdmVsaW5rID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnc3dpdGNoYWN0aXZlJywgJHJldHVybmlkLCAkYWN0aXZlaW1hZ2UsICRwYXJhbXMpOw0KDQoJCWlmICggJGZpbGVbJ2ZpbGVpZCddICE9IDEgKQ0KCQl7DQoJCQlhcnJheV9wdXNoKCRzaG93Z2FsbGVyeSwgJG9uZXJvdyk7DQoJCX0NCgl9DQoNCgkkc29ydGFycmF5ID0gZXhwbG9kZSgnLycsJ24rZmlsZW9yZGVyLycuJGdhbGxlcnlpbmZvWydzb3J0aXRlbXMnXSk7DQoJJHNob3dnYWxsZXJ5ID0gJHRoaXMtPl9BcnJheVNvcnQoJHNob3dnYWxsZXJ5LCAkc29ydGFycmF5LCBmYWxzZSk7DQoNCgkkdGhpcy0+c21hcnR5LT5hc3NpZ25fYnlfcmVmKCdpdGVtcycsICRzaG93Z2FsbGVyeSk7DQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdpdGVtY291bnQnLCBjb3VudCgkc2hvd2dhbGxlcnkpKTsNCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2l0ZW0nLCAkdGhpcy0+TGFuZygnaXRlbScpKTsNCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3RpdGxlJywgJHRoaXMtPkxhbmcoJ3RpdGxlJykpOw0KCSR0aGlzLT5zbWFydHktPmFzc2lnbignY29tbWVudCcsICR0aGlzLT5MYW5nKCdjb21tZW50JykpOw0KCSR0aGlzLT5zbWFydHktPmFzc2lnbignZmlsZWRhdGUnLCAkdGhpcy0+TGFuZygnZGF0ZScpKTsNCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2FjdGl2ZScsICR0aGlzLT5MYW5nKCdhY3RpdmUnKSk7DQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdkZWZhdWx0JywgJHRoaXMtPkxhbmcoJ2RlZmF1bHQnKSk7DQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdub2ZpbGVzdGV4dCcsICR0aGlzLT5sYW5nKCJub2ZpbGVzdGV4dCIpKTsNCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2Zvcm1zdGFydCcsICR0aGlzLT5DcmVhdGVGb3JtU3RhcnQgKCRpZCwgJ2RvX2VkaXRnYWxsZXJ5JywkcmV0dXJuaWQsJ3Bvc3QnLCcnLCBmYWxzZSwgJycsICRwYXJhbXMpKTsNCn0NCg0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdwYWdldGl0bGUnLCRnYWxsZXJ5cGF0aCk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3Byb21wdF9nYWxsZXJ5dGl0bGUnLCR0aGlzLT5MYW5nKCdnYWxsZXJ5dGl0bGUnKSk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2dhbGxlcnl0aXRsZScsICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoICRpZCwgJ2dhbGxlcnl0aXRsZScsICRnYWxsZXJ5aW5mb1sndGl0bGUnXSwgNDAsIDEwMCApKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbigncHJvbXB0X2NvbW1lbnQnLCR0aGlzLT5MYW5nKCdjb21tZW50JykpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdnYWxsZXJ5Y29tbWVudCcsICR0aGlzLT5DcmVhdGVUZXh0QXJlYSgkdGhpcy0+R2V0UHJlZmVyZW5jZSgndXNlX2NvbW1lbnRfd3lzaXd5ZycsMSksICRpZCwgJGdhbGxlcnlpbmZvWydjb21tZW50J10sICdnYWxsZXJ5Y29tbWVudCcsICdmYWtlIiBzdHlsZT0iaGVpZ2h0OjZlbTsnLCAnJywgJycsICcnLCAnODAnLCAnMycpKTsNCg0KJHRlbXBsYXRlbGlzdCA9IGFycmF5KCctICcgLiAkdGhpcy0+TGFuZygndXNlZGVmYXVsdCcpIC4gJyAtJz0+MCk7DQokcXVlcnkgPSAiU0VMRUNUIHRlbXBsYXRlaWQsIHRlbXBsYXRlIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9nYWxsZXJ5X3RlbXBsYXRlcHJvcHMgT1JERVIgQlkgdGVtcGxhdGUgQVNDIjsNCiRyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsNCndoaWxlICgkcmVzdWx0ICYmICRyb3cgPSAkcmVzdWx0LT5GZXRjaFJvdygpKQ0Kew0KCSR0ZW1wbGF0ZWxpc3RbJHJvd1sndGVtcGxhdGUnXV0gPSAkcm93Wyd0ZW1wbGF0ZWlkJ107DQp9DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3Byb21wdF90ZW1wbGF0ZScsICR0aGlzLT5MYW5nKCd0ZW1wbGF0ZScpKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbigndGVtcGxhdGUnLCAkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsICd0ZW1wbGF0ZWlkJywgJHRlbXBsYXRlbGlzdCwgLTEsICRnYWxsZXJ5aW5mb1sndGVtcGxhdGVpZCddKSk7DQoNCiRzbWFydHktPmFzc2lnbigncHJvbXB0X2hpZGVwYXJlbnRsaW5rJywkdGhpcy0+TGFuZygnaGlkZXBhcmVudGxpbmsnKSk7DQokc21hcnR5LT5hc3NpZ24oJ2hpZGVwYXJlbnRsaW5rJywgJHRoaXMtPkNyZWF0ZUlucHV0Q2hlY2tib3goJGlkLCAnaGlkZXBhcmVudGxpbmsnLCAnMScsICRnYWxsZXJ5aW5mb1snaGlkZXBhcmVudGxpbmsnXSwgJHBhcmFtc1snZ2lkJ10gPT0gMSA/ICdkaXNhYmxlZD0iZGlzYWJsZWQnIDogJycpKTsNCg0KLy8kdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3Byb21wdF9jcmVhdGV0aHVtYnMnLCAoIWVtcHR5KCRnYWxsZXJ5aW5mb1sndGh1bWJ3aWR0aCddKSA/ICR0aGlzLT5MYW5nKCdjcmVhdGV0aHVtYnMnKSA6ICcnKSk7DQovLyR0aGlzLT5zbWFydHktPmFzc2lnbignY3JlYXRldGh1bWJzJywgKCFlbXB0eSgkZ2FsbGVyeWluZm9bJ3RodW1id2lkdGgnXSkgPyAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdjcmVhdGV0aHVtYnMnLCAkcmV0dXJuaWQsICc8aW1nIHNyYz0iLi4vbW9kdWxlcy9HYWxsZXJ5L2ltYWdlcy9mcGFpbnQuZ2lmIiBhbHQ9IicgLiAkdGhpcy0+TGFuZygnY3JlYXRldGh1bWJzJykgLiAnIi8+JywgYXJyYXkoJ2dpZCc9PiRwYXJhbXNbJ2dpZCddKSwgJycsIGZhbHNlLCBmYWxzZSkgOiAnJykpOw0KDQokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3NvcnRieXNldHRpbmdzJywkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdkb19lZGl0Z2FsbGVyeScsICRyZXR1cm5pZCwgJHRoaXMtPkxhbmcoJ3NvcnRieXNldHRpbmdzJyksIGFycmF5KCdnaWQnPT4kcGFyYW1zWydnaWQnXSwnbW9kZSc9Pid1bnNvcnQnKSkpOw0KDQokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2hpZGRlbicsJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwgJ3NvcnQnLCAnJywgJ2lkPSJzb3J0IicpKTsNCg0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdzdWJtaXQnLCR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCAoJGlkLCAnc3VibWl0YnV0dG9uJywgJHRoaXMtPkxhbmcgKCdzdWJtaXQnKSkpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdjYW5jZWwnLCR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCAoJGlkLCAnY2FuY2VsJywgJHRoaXMtPkxhbmcgKCdjYW5jZWwnKSkpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdmb3JtZW5kJywkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpKTsNCmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnZWRpdGdhbGxlcnkudHBsJyk7DQoNCj8+]]></data>
	</file>
	<file>
	  <filename>/action.edittemplate.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KaWYoICEkZ0NtcyApIGV4aXQoKTsNCg0KaWYoICEgJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTW9kaWZ5IFRlbXBsYXRlcycpICkNCnsNCgkkcGFyYW1zWydlcnJvcnMnXSA9ICR0aGlzLT5MYW5nKCdhY2Nlc3NkZW5pZWQnKTsNCgkkdGhpcy0+UmVkaXJlY3QoJGlkLCdkZWZhdWx0YWRtaW4nLCcnLCRwYXJhbXMpOw0KCXJldHVybjsNCn0NCg0KaWYoICFpc3NldCgkcGFyYW1zWydtb2RlJ10pICkNCnsNCgkkcGFyYW1zWydlcnJvcnMnXSA9ICR0aGlzLT5MYW5nKCdlcnJvcl9pbnN1ZmZpY2llbnRwYXJhbXMnKTsNCgkkdGhpcy0+UmVkaXJlY3QoJGlkLCdkZWZhdWx0YWRtaW4nLCcnLCRwYXJhbXMpOw0KCXJldHVybjsNCn0NCg0KJHBhcmFtc1snb3JpZ2FjdGlvbiddID0gJHBhcmFtc1snYWN0aW9uJ107DQokdGVtcGxhdGVwcm9wcyA9IGFycmF5KCd0ZW1wbGF0ZWlkJz0+MCwgJ3RodW1id2lkdGgnPT4nJywgJ3RodW1iaGVpZ2h0Jz0+JycsICdyZXNpemVtZXRob2QnPT4nJywgJ21heG51bWJlcic9PicnLCAnc29ydGl0ZW1zJz0+JycpOw0KJGNvbnRlbnRzID0gIiI7DQppZiggJHBhcmFtc1snbW9kZSddID09ICdhZGQnICkNCnsNCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2Zvcm1zdGFydCcsICR0aGlzLT5DcmVhdGVGb3JtU3RhcnQgKCRpZCwgJ2RvX2FkZHRlbXBsYXRlJywkcmV0dXJuaWQsJ3Bvc3QnLCcnLCBmYWxzZSwgJycsICRwYXJhbXMpKTsNCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3RlbXBsYXRlbmFtZScsICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoICRpZCwgJ3RlbXBsYXRlJywgIiIsIDQwICkpOw0KCWlmKCBpc3NldCgkcGFyYW1zWydkZWZhdWx0dGVtcGxhdGVwcmVmJ10pICYmICRwYXJhbXNbJ2RlZmF1bHR0ZW1wbGF0ZXByZWYnXSAhPSAnJyApDQoJew0KCQkkY29udGVudHMgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgkcGFyYW1zWydkZWZhdWx0dGVtcGxhdGVwcmVmJ10pOw0KCX0NCglpZiggaXNzZXQoJHBhcmFtc1sndGVtcGxhdGUnXSkgJiYgJHBhcmFtc1sndGVtcGxhdGUnXSAhPSAnJyApDQoJew0KCQkkY29udGVudHMgPSAkdGhpcy0+R2V0VGVtcGxhdGUoJHBhcmFtc1sndGVtcGxhdGUnXSk7DQoJfQ0KfQ0KZWxzZSANCnsNCglpZiggIWlzc2V0KCRwYXJhbXNbJ3RlbXBsYXRlJ10pICkNCgl7DQoJCSRwYXJhbXNbJ2Vycm9ycyddID0gJHRoaXMtPkxhbmcoJ2Vycm9yX2luc3VmZmljaWVudHBhcmFtcycpOw0KCQkkdGhpcy0+UmVkaXJlY3QoJGlkLCdkZWZhdWx0YWRtaW4nLCcnLCRwYXJhbXMpOw0KCQlyZXR1cm47DQoJfQ0KCSR0aGlzLT5zbWFydHktPmFzc2lnbignZm9ybXN0YXJ0JywgJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCAoJGlkLCAnZG9fZWRpdHRlbXBsYXRlJywkcmV0dXJuaWQsJ3Bvc3QnLCcnLCBmYWxzZSwgJycsICRwYXJhbXMpKTsNCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3RlbXBsYXRlbmFtZScsJHBhcmFtc1sndGVtcGxhdGUnXSk7DQoJJGNvbnRlbnRzID0gJHRoaXMtPkdldFRlbXBsYXRlKCRwYXJhbXNbJ3RlbXBsYXRlJ10pOw0KCSR0ZW1wbGF0ZXByb3BzID0gJHRoaXMtPl9HZXRUZW1wbGF0ZXByb3BzKCRwYXJhbXNbJ3RlbXBsYXRlJ10pOw0KfQ0KDQokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2hpZGRlbicsICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsICd0ZW1wbGF0ZWlkJywgJHRlbXBsYXRlcHJvcHNbJ3RlbXBsYXRlaWQnXSkpOw0KDQokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3Byb21wdF90aHVtYm5haWxzaXplJywgJHRoaXMtPkxhbmcoJ3RodW1ibmFpbHNpemUnKSk7DQokcmVzaXplbWV0aG9kbGlzdCA9IGFycmF5KCR0aGlzLT5MYW5nKCdjcm9wJyk9PidjcicsJHRoaXMtPkxhbmcoJ3NjYWxlJyk9PidzYycsJHRoaXMtPkxhbmcoJ3pvb21jcm9wJyk9Pid6YycsJHRoaXMtPkxhbmcoJ3pvb21zY2FsZScpPT4nenMnKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbigndGh1bWJuYWlsc2l6ZScsDQoJCSR0aGlzLT5MYW5nKCdsZWF2ZWVtcHR5JykgLiAnPGJyIC8+JyAuDQoJCSR0aGlzLT5MYW5nKCd3aWR0aCcpIC4gJzombmJzcDsnIC4NCgkJJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCggJGlkLCAndGh1bWJ3aWR0aCcsICR0ZW1wbGF0ZXByb3BzWyd0aHVtYndpZHRoJ10sIDQsIDQgKSAuDQoJCScmbmJzcDsmbmJzcDsmbmJzcDsnIC4gJHRoaXMtPkxhbmcoJ2hlaWdodCcpIC4gJzombmJzcDsnIC4NCgkJJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCggJGlkLCAndGh1bWJoZWlnaHQnLCAkdGVtcGxhdGVwcm9wc1sndGh1bWJoZWlnaHQnXSwgNCwgNCApIC4NCgkJJyZuYnNwOyZuYnNwOyZuYnNwOycgLiAkdGhpcy0+TGFuZygncmVzaXplbWV0aG9kJykgLiAnOiZuYnNwOycgLg0KCQkkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsICdyZXNpemVtZXRob2QnLCAkcmVzaXplbWV0aG9kbGlzdCwgLTEsICR0ZW1wbGF0ZXByb3BzWydyZXNpemVtZXRob2QnXSkNCik7DQoNCiRzb3J0ZmllbGRsaXN0ID0gYXJyYXkoJyAtJz0+JycsJ2ZpbGVuYW1lJz0+J3MjZmlsZScsICdmaWxlZGF0ZSc9PidzI2ZpbGVkYXRlJywgJ3RpdGxlJz0+J3MjdGl0bGUnLCAnY29tbWVudCc9PidzI2NvbW1lbnQnLCAnc3ViZ2FsbGVyeSAodHJ1ZS9mYWxzZSknPT4nbiNpc2RpcicsICdhY3RpdmUgKHRydWUvZmFsc2UpJz0+J24jYWN0aXZlJyk7DQokc29ydHR5cGVsaXN0ID0gYXJyYXkoJHRoaXMtPkxhbmcoJ2FzY2VuZGluZycpPT4nKycsJHRoaXMtPkxhbmcoJ2Rlc2NlbmRpbmcnKT0+Jy0nKTsNCiRzb3J0aXRlbXMgPSBleHBsb2RlKCcvJywkdGVtcGxhdGVwcm9wc1snc29ydGl0ZW1zJ10pOw0KJHNvcnRmaWVsZHMgPSAnJzsNCmZvcmVhY2ggKCRzb3J0aXRlbXMgYXMgJHNvcnRpdGVtKQ0Kew0KCSRzb3J0ZmllbGRzIC49ICc8cCBjbGFzcz0ic29ydGZpZWxkIj4nIC4NCgkkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsICdzb3J0ZmllbGRbXScsICRzb3J0ZmllbGRsaXN0LCAtMSwgc3Vic3RyKCRzb3J0aXRlbSwwLDEpIC4gJyMnIC4gc3Vic3RyKCRzb3J0aXRlbSwyKSkgLiAnJm5ic3A7ICcgLg0KCSR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwgJ3NvcnR0eXBlW10nLCAkc29ydHR5cGVsaXN0LCAtMSwgc3Vic3RyKCRzb3J0aXRlbSwxLDEpKSAuDQoJJzwvcD4nOw0KfQ0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfc29ydGluZ29wdGlvbnMnLCAkdGhpcy0+TGFuZygnc29ydGluZ29wdGlvbnMnKSk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3NvcnRpbmdvcHRpb25zJywgJzxwPicgLiAkdGhpcy0+TGFuZygnc3BlY2lmeXNvcnRmaWVsZHMnKSAuICc8L3A+JyAuDQoJJzxkaXYgaWQ9InNvcnRmaWVsZHMiPicgLiAkc29ydGZpZWxkcyAuICc8L2Rpdj4NCgk8cD48YSBocmVmPSIjIiBpZD0iYWRkZmllbGQiPicgLiAkdGhpcy0+TGFuZygnYWRkZmllbGQnKSAuICc8L2E+Jm5ic3A7Jm5ic3A7Jm5ic3A7PGEgaHJlZj0iIyIgaWQ9ImRlbGV0ZWZpZWxkIj4nIC4gJHRoaXMtPkxhbmcoJ2RlbGV0ZWZpZWxkJykgLiAnPC9hPjwvcD4nDQopOw0KDQovLyBUT0RPOiBhZGQgZm9ybSBpbnB1dHMgZm9yIHNvcnRpbmdvcHRpb25zDQoNCiRjb250ZW50c2NvZGUgPSBleHBsb2RlKFRFTVBMQVRFX1NFUEFSQVRPUiwgJGNvbnRlbnRzKTsNCg0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCd0aXRsZScsJHRoaXMtPkxhbmcoJ3RpdGxlX3RlbXBsYXRlJykpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfdGVtcGxhdGVuYW1lJywkdGhpcy0+TGFuZygncHJvbXB0X3RlbXBsYXRlbmFtZScpKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbigncHJvbXB0X3RlbXBsYXRlJywkdGhpcy0+TGFuZygncHJvbXB0X3RlbXBsYXRlJykpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCd0ZW1wbGF0ZScsICR0aGlzLT5DcmVhdGVTeW50YXhBcmVhICgkaWQsICRjb250ZW50c2NvZGVbMF0sICd0ZW1wbGF0ZWNvbnRlbnQnKSk7DQoNCiR0aGlzLT5zbWFydHktPmFzc2lnbigncHJvbXB0X21heG51bWJlcicsJHRoaXMtPkxhbmcoJ21heG51bWJlcicpKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbignbWF4bnVtYmVyJywgJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCggJGlkLCAnbWF4bnVtYmVyJywgJHRlbXBsYXRlcHJvcHNbJ21heG51bWJlciddLCA0LCAxMCApKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbignc2hvd2FsbGltYWdlcycsJHRoaXMtPkxhbmcoJ3Nob3dhbGxpbWFnZXMnKSk7DQoNCiR0aGlzLT5zbWFydHktPmFzc2lnbignYXZhaWxhYmxldmFyaWFibGVzJywkdGhpcy0+TGFuZygnYXZhaWxhYmxldmFyaWFibGVzJykpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdhdmFpbGFibGV2YXJpYWJsZXNsaXN0JywkdGhpcy0+TGFuZygnYXZhaWxhYmxldmFyaWFibGVzbGlzdCcpKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbignYXZhaWxhYmxldmFyaWFibGVzbGluaycsJGdDbXMtPnZhcmlhYmxlc1snYWRtaW50aGVtZSddLT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9pbmZvLmdpZicsICR0aGlzLT5MYW5nKCdhdmFpbGFibGV2YXJpYWJsZXMnKSwnJywnJywnc3lzdGVtaWNvbicpKTsNCg0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfdGVtcGxhdGVjc3MnLCR0aGlzLT5MYW5nKCdwcm9tcHRfdGVtcGxhdGVjc3MnKSk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3RlbXBsYXRlY3NzJywgJHRoaXMtPkNyZWF0ZVN5bnRheEFyZWEgKCRpZCwgc3RyX3JlcGxhY2UoIip9IiwgIiIsICRjb250ZW50c2NvZGVbMV0pLCAndGVtcGxhdGVjc3MnKSk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3Byb21wdF90ZW1wbGF0ZWpzJywkdGhpcy0+TGFuZygncHJvbXB0X3RlbXBsYXRlanMnKSk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3RlbXBsYXRlanMnLCAkdGhpcy0+Q3JlYXRlU3ludGF4QXJlYSAoJGlkLCBzdWJzdHIoJGNvbnRlbnRzY29kZVsyXSwwLC0yKSwgJ3RlbXBsYXRlanMnKSk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3N1Ym1pdCcsJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0ICgkaWQsICdzdWJtaXRidXR0b24nLCAkdGhpcy0+TGFuZygnc3VibWl0JykpKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbignYXBwbHknLCRwYXJhbXNbJ21vZGUnXSA9PSAnYWRkJyA/ICcnIDogJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgJ2FwcGx5YnV0dG9uJywgJHRoaXMtPkxhbmcoJ2FwcGx5JykpKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbignY2FuY2VsJywkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQgKCRpZCwgJ2NhbmNlbCcsICR0aGlzLT5MYW5nKCdjYW5jZWwnKSkpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdyZXNldCcsJHBhcmFtc1snbW9kZSddICE9ICdhZGQnICYmIGZpbGVfZXhpc3RzKCcuLicuRElSRUNUT1JZX1NFUEFSQVRPUi4nbW9kdWxlcycuRElSRUNUT1JZX1NFUEFSQVRPUi4nR2FsbGVyeScuRElSRUNUT1JZX1NFUEFSQVRPUi4ndGVtcGxhdGVzJy5ESVJFQ1RPUllfU0VQQVJBVE9SLid0ZW1wbGF0ZV8nLnN0cnRvbG93ZXIoJHBhcmFtc1sndGVtcGxhdGUnXSkuJy50cGwnKSA/ICcmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsnIC4gJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgJ3Jlc2V0YnV0dG9uJywgJHRoaXMtPkxhbmcoJ3Jlc2V0b3JpZ2luYWwnKSwgJycsICcnLCAkdGhpcy0+TGFuZygncmVzZXRvcmlnaW5hbHdhcm5pbmcnKSkgOiAnJyk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2Zvcm1lbmQnLCR0aGlzLT5DcmVhdGVGb3JtRW5kKCkpOw0KDQplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2VkaXR0ZW1wbGF0ZS50cGwnKTsNCg0KPz4=]]></data>
	</file>
	<file>
	  <filename>/action.showlatest.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmlmICghaXNzZXQoJGdDbXMpKSBleGl0Ow0KDQokcGFyYW1zWydkaXInXSA9IGlzc2V0KCRwYXJhbXNbJ2RpciddKSA/IHJhd3VybGRlY29kZShjbXNfaHRtbF9lbnRpdHlfZGVjb2RlKHRyaW0oJHBhcmFtc1snZGlyJ10sIi8iKSkpIDogJyc7DQokbnVtYmVyID0gKGlzc2V0KCRwYXJhbXNbJ251bWJlciddKSAmJiBpc19udW1lcmljKCRwYXJhbXNbJ251bWJlciddKSkgPyAkcGFyYW1zWydudW1iZXInXSA6IDY7DQokc2hvdyA9IChpc3NldCgkcGFyYW1zWydzaG93J10pICYmIGluX2FycmF5KCRwYXJhbXNbJ3Nob3cnXSwgYXJyYXkoJ2FjdGl2ZScsJ2luYWN0aXZlJywnYWxsJykpKSA/ICRwYXJhbXNbJ3Nob3cnXSA6ICdhY3RpdmUnOw0KDQokaW1nY291bnQgPSAwOw0KJGl0ZW1jb3VudCA9IDA7DQokaW1hZ2VzID0gYXJyYXkoKTsNCg0KaWYgKCBpc19kaXIoREVGQVVMVF9HQUxMRVJZX1BBVEggLiAkcGFyYW1zWydkaXInXSkgKQ0Kew0KCSR0aGlzLT5zbWFydHktPmFzc2lnbignZ2FsbGVyeXRpdGxlJywgaHRtbHNwZWNpYWxjaGFycyh0cmltKHN1YnN0cigkcGFyYW1zWydkaXInXSwgc3RycnBvcygkcGFyYW1zWydkaXInXSwgJy8nKSksIi8iKSkpOw0KDQoJLy8gZ2V0IGdhbGxlcnkgaW5mbw0KCSRnYWxsZXJ5aW5mbyA9ICR0aGlzLT5fR2V0Z2FsbGVyeWluZm8oJHBhcmFtc1snZGlyJ10pOw0KDQoJaWYgKCBpc3NldCgkcGFyYW1zWyd0ZW1wbGF0ZSddKSApDQoJew0KCQkvLyBvdmVycmlkZSB0ZW1wbGF0ZSBzZXR0aW5ncyB3aXRoIHBhcmFtIHRlbXBsYXRlDQoJCSR0ZW1wbGF0ZXByb3BzID0gJHRoaXMtPl9HZXRUZW1wbGF0ZXByb3BzKCRwYXJhbXNbJ3RlbXBsYXRlJ10pOw0KCQkkZ2FsbGVyeWluZm9bJ3RlbXBsYXRlaWQnXSA9ICR0ZW1wbGF0ZXByb3BzWyd0ZW1wbGF0ZWlkJ107DQoJCSRnYWxsZXJ5aW5mb1sndGVtcGxhdGUnXSA9ICR0ZW1wbGF0ZXByb3BzWyd0ZW1wbGF0ZSddOw0KCQkkZ2FsbGVyeWluZm9bJ3RodW1id2lkdGgnXSA9ICR0ZW1wbGF0ZXByb3BzWyd0aHVtYndpZHRoJ107DQoJCSRnYWxsZXJ5aW5mb1sndGh1bWJoZWlnaHQnXSA9ICR0ZW1wbGF0ZXByb3BzWyd0aHVtYmhlaWdodCddOw0KCQkkZ2FsbGVyeWluZm9bJ3Jlc2l6ZW1ldGhvZCddID0gJHRlbXBsYXRlcHJvcHNbJ3Jlc2l6ZW1ldGhvZCddOw0KCX0NCglpZiAoIGVtcHR5KCRnYWxsZXJ5aW5mb1sndGVtcGxhdGVpZCddKSApDQoJew0KCQkvLyBvdmVycmlkZSB0ZW1wbGF0ZSBzZXR0aW5ncyB3aXRoIGRlZmF1bHQgdGVtcGxhdGUNCgkJJHRlbXBsYXRlcHJvcHMgPSAkdGhpcy0+X0dldFRlbXBsYXRlcHJvcHMoJHRoaXMtPkdldFByZWZlcmVuY2UoJ2N1cnJlbnRfdGVtcGxhdGUnKSk7DQoJCSRnYWxsZXJ5aW5mb1sndGVtcGxhdGVpZCddID0gJHRlbXBsYXRlcHJvcHNbJ3RlbXBsYXRlaWQnXTsNCgkJJGdhbGxlcnlpbmZvWyd0ZW1wbGF0ZSddID0gJHRlbXBsYXRlcHJvcHNbJ3RlbXBsYXRlJ107DQoJCSRnYWxsZXJ5aW5mb1sndGh1bWJ3aWR0aCddID0gJHRlbXBsYXRlcHJvcHNbJ3RodW1id2lkdGgnXTsNCgkJJGdhbGxlcnlpbmZvWyd0aHVtYmhlaWdodCddID0gJHRlbXBsYXRlcHJvcHNbJ3RodW1iaGVpZ2h0J107DQoJCSRnYWxsZXJ5aW5mb1sncmVzaXplbWV0aG9kJ10gPSAkdGVtcGxhdGVwcm9wc1sncmVzaXplbWV0aG9kJ107DQoJfQ0KDQoJaWYgKCAkZ2FsbGVyeWluZm9bJ2FjdGl2ZSddID09IDEgKQ0KCXsNCgkJaWYgKCAhZW1wdHkoJGdhbGxlcnlpbmZvWyd0aXRsZSddKSApDQoJCXsNCgkJCSR0aGlzLT5zbWFydHktPmFzc2lnbignZ2FsbGVyeXRpdGxlJywgJGdhbGxlcnlpbmZvWyd0aXRsZSddKTsNCgkJfQ0KCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2dhbGxlcnljb21tZW50JywgJGdhbGxlcnlpbmZvWydjb21tZW50J10pOw0KCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3BhcmVudGxpbmsnLCAnJyk7DQoJfQ0KDQoNCgkvLyBidWlsZCBnYWxsZXJ5IHdpdGggbGF0ZXN0IGltYWdlcw0KCQ0KCSRkYiA9JiAkdGhpcy0+R2V0REIoKTsJDQoJJHF1ZXJ5ID0gIlNFTEVDVA0KCQkJCQkJCWcxLiosIGcyLmFjdGl2ZQ0KCQkJCQkJRlJPTSANCgkJCQkJCQkiIC4gY21zX2RiX3ByZWZpeCgpIC4gIm1vZHVsZV9nYWxsZXJ5IGcxDQoJCQkJCQlMRUZUIEpPSU4NCgkJCQkJCQkiIC4gY21zX2RiX3ByZWZpeCgpIC4gIm1vZHVsZV9nYWxsZXJ5IGcyDQoJCQkJCQlPTg0KCQkJCQkJCWcxLmdhbGxlcnlpZCA9IGcyLmZpbGVpZA0KCQkJCQkJV0hFUkUNCgkJCQkJCQlnMS5maWxlbmFtZSBOT1QgTElLRSAnJS8nDQoJCQkJCQkJQU5EIChnMS5nYWxsZXJ5aWQ9PyBPUiBnMS5maWxlcGF0aCBMSUtFID8pIjsNCglTd2l0Y2ggKCRzaG93KQ0KCXsNCgkJQ2FzZSAnYWN0aXZlJzogDQoJCQkkcXVlcnkgLj0gIiBBTkQgZzEuYWN0aXZlPTEgQU5EIGcyLmFjdGl2ZT0xIjsNCgkJCWJyZWFrOw0KCQlDYXNlICdpbmFjdGl2ZSc6DQoJCQkkcXVlcnkgLj0gIiBBTkQgZzEuYWN0aXZlPTAiOw0KCQkJYnJlYWs7DQoJfQ0KCSRxdWVyeSAuPSAiDQoJCQkJCQlPUkRFUiBCWQ0KCQkJCQkJCWZpbGVkYXRlIERFU0MNCgkJCQkJCUxJTUlUIDAsPyI7DQoJJHJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRnYWxsZXJ5aW5mb1snZmlsZWlkJ10sIChlbXB0eSgkcGFyYW1zWydkaXInXSkgPyAnJScgOiAkcGFyYW1zWydkaXInXSAuICIvJSIpLCAkbnVtYmVyKSk7DQoJaWYgKCAkcmVzdWx0ICYmICRyZXN1bHQtPlJlY29yZENvdW50KCkgPiAwICkgDQoJew0KCSAgJG91dHB1dCA9IGFycmF5KCk7DQoJICB3aGlsZSAoICRyb3c9JHJlc3VsdC0+RmV0Y2hSb3coKSApIA0KCSAgew0KCSAgICAkb3V0cHV0W3RyaW0oJHJvd1snZmlsZXBhdGgnXSAuICcvJyAuICRyb3dbJ2ZpbGVuYW1lJ10sJy8nKV0gPSAkcm93Ow0KCSAgICANCgkJLy8gY3JlYXRlIGEgbmV3IG9iamVjdCBmb3IgZXZlcnkgcmVjb3JkIHRoYXQgd2UgcmV0cmlldmUNCgkJJHJlYyA9IG5ldyBzdGRDbGFzcygpOw0KCQkkcmVjLT5maWxlaWQgPSAkcm93WydmaWxlaWQnXTsNCgkJJHJlYy0+ZmlsZSA9IERFRkFVTFRfR0FMTEVSWV9QQVRIIC4gc3RyX3JlcGxhY2UoJyUyRicsJy8nLHJhd3VybGVuY29kZSh0cmltKCRyb3dbJ2ZpbGVwYXRoJ10gLiAnLycgLiAkcm93WydmaWxlbmFtZSddLCcvJykpKTsNCgkJJHJlYy0+ZmlsZWRhdGUgPSAkcm93WydmaWxlZGF0ZSddOw0KCQkkcmVjLT50aXRsZSA9IGVtcHR5KCRyb3dbJ3RpdGxlJ10pID8gJHJvd1snZmlsZW5hbWUnXSA6ICRyb3dbJ3RpdGxlJ107DQoJCSRyZWMtPmNvbW1lbnQgPSAkcm93Wydjb21tZW50J107DQoJCWlmICggJGdhbGxlcnlpbmZvWyd0aHVtYndpZHRoJ10gPiAwICkNCgkJew0KCQkJJHJlYy0+dGh1bWIgPSBERUZBVUxUX0dBTExFUllUSFVNQlNfUEFUSCAuICRyb3dbJ2ZpbGVpZCddIC4gJy0nIC4gJGdhbGxlcnlpbmZvWyd0ZW1wbGF0ZWlkJ10gLiBzdWJzdHIoJHJvd1snZmlsZW5hbWUnXSwgc3RycnBvcygkcm93WydmaWxlbmFtZSddLCAnLicpKSA7DQoJCX0NCgkJZWxzZQ0KCQl7DQoJCQkkcmVjLT50aHVtYiA9IERFRkFVTFRfR0FMTEVSWV9QQVRIIC4gKGVtcHR5KCRyb3dbJ2ZpbGVwYXRoJ10pID8gJycgOiAkcm93WydmaWxlcGF0aCddIC4gJy8nKSAuIElNX1BSRUZJWCAuICRyb3dbJ2ZpbGVuYW1lJ107DQoJCX0NCgkJJHJlYy0+aXNkaXIgPSBmYWxzZTsNCgkJJGl0ZW1jb3VudCsrOw0KCQkkaW1nY291bnQrKzsNCg0KCQkkdGhpcy0+X0NyZWF0ZVRodW1ibmFpbCgkcmVjLT50aHVtYiwNCgkJCQkJCQkJCQkJCQkJREVGQVVMVF9HQUxMRVJZX1BBVEggLiB0cmltKCRyb3dbJ2ZpbGVwYXRoJ10gLiAnLycgLiAkcm93WydmaWxlbmFtZSddLCcvJyksDQoJCQkJCQkJCQkJCQkJCSgkZ2FsbGVyeWluZm9bJ3RodW1id2lkdGgnXSA+IDApID8gJGdhbGxlcnlpbmZvWyd0aHVtYndpZHRoJ10gOiA5NiwNCgkJCQkJCQkJCQkJCQkJKCRnYWxsZXJ5aW5mb1sndGh1bWJ3aWR0aCddID4gMCkgPyAkZ2FsbGVyeWluZm9bJ3RodW1iaGVpZ2h0J10gOiA5NiwNCgkJCQkJCQkJCQkJCQkJKCRnYWxsZXJ5aW5mb1sndGh1bWJ3aWR0aCddID4gMCkgPyAkZ2FsbGVyeWluZm9bJ3Jlc2l6ZW1ldGhvZCddIDogJ3NjJyk7DQoJCWFycmF5X3B1c2goJGltYWdlcywkcmVjKTsNCgkgIH0NCgl9DQp9DQplbHNlDQp7DQoJJHBhcmFtc1snbW9kdWxlX21lc3NhZ2UnXSA9ICJUaGUgZGlyZWN0b3J5ICciIC4gaHRtbHNwZWNpYWxjaGFycygkcGFyYW1zWydkaXInXSkgLiAiJyBkb2VzIG5vdCBleGlzdC4gQ2hlY2sgeW91ciBwYXJhbWV0ZXJzLiI7DQp9DQoNCg0KLy8gRXhwb3NlIHRoZSBsaXN0IHRvIHNtYXJ0eS4gVXNlICJieV9yZWYiIHRvIHNhdmUgbWVtb3J5Lg0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduX2J5X3JlZignaW1hZ2VzJywkaW1hZ2VzKTsNCg0KLy8gYW5kIGEgY291bnQgb2YgcmVjb3Jkcw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdpbWFnZWNvdW50JywgJGltZ2NvdW50IC4gJyAnIC4gKCRpbWdjb3VudCA9PSAxID8gJHRoaXMtPkxhbmcoJ2ltYWdlJykgOiAkdGhpcy0+TGFuZygnaW1hZ2VzJykpKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbignaXRlbWNvdW50JywgJGl0ZW1jb3VudCk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3BhZ2VzJywgMSk7DQoNCi8vIG5hdmlnYXRpb25saW5rcyBub3QgbmVzY2VzYXJ5LCBidXQgZGVmaW5lIHNtYXJ0eSB2YXJpYWJsZXMgZm9yIHRlbXBsYXRlcyB0aGF0IHVzZSB0aGVtDQokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3ByZXZwYWdlJywgJycpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCduZXh0cGFnZScsICcnKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbigncGFnZWxpbmtzJywgJycpOw0KDQoNCmlmIChpc3NldCgkcGFyYW1zWydtb2R1bGVfbWVzc2FnZSddKSkNCnsNCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ21vZHVsZV9tZXNzYWdlJywkcGFyYW1zWydtb2R1bGVfbWVzc2FnZSddKTsNCn0NCmVsc2UNCnsNCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ21vZHVsZV9tZXNzYWdlJywnJyk7DQp9DQoNCg0KLy8gRGlzcGxheSB0ZW1wbGF0ZQ0KZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlRnJvbURhdGFiYXNlKCRnYWxsZXJ5aW5mb1sndGVtcGxhdGUnXSk7DQoNCg0KLy8gcGFzcyBkYXRhIHRvIGhlYWQgc2VjdGlvbi4NCg0KLy8gZ2V0IHRlbXBsYXRlLXNwZWNpZmljIEphdmFTY3JpcHQgYW5kIGVjaG8NCiR0ZW1wbGF0ZWNvZGUgPSAkdGhpcy0+R2V0VGVtcGxhdGUoJGdhbGxlcnlpbmZvWyd0ZW1wbGF0ZSddKTsNCiR0ZW1wbGF0ZWNvZGVhcnIgPSBleHBsb2RlKFRFTVBMQVRFX1NFUEFSQVRPUiwgJHRlbXBsYXRlY29kZSk7DQokdGVtcGxhdGVfbWV0YWRhdGEgPSBzdWJzdHIoJHRlbXBsYXRlY29kZWFyclsyXSwwLC0yKTsNCg0KLy8gY2hlY2sgaWYgYSBjc3MgZmlsZSBleGlzdHMgYW5kIGVjaG8NCmlmICggZmlsZV9leGlzdHMoIm1vZHVsZXMvR2FsbGVyeS90ZW1wbGF0ZXMvY3NzLyIgLiAkZ2FsbGVyeWluZm9bJ3RlbXBsYXRlJ10gLiAiLmNzcyIpICkNCnsNCgkkdGVtcGxhdGVfbWV0YWRhdGEgLj0gJzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0ibW9kdWxlcy9HYWxsZXJ5L3RlbXBsYXRlcy9jc3MvJyAuICRnYWxsZXJ5aW5mb1sndGVtcGxhdGUnXSAuICcuY3NzIiB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9InNjcmVlbiIgLz4NCic7DQp9DQokdGhpcy0+R2FsbGVyeU1ldGFkYXRhID0gJHRlbXBsYXRlX21ldGFkYXRhOw0KDQo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.showlatestdir.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmlmICghaXNzZXQoJGdDbXMpKSBleGl0Ow0KDQokcGFyYW1zWydkaXInXSA9IGlzc2V0KCRwYXJhbXNbJ2RpciddKSA/IHJhd3VybGRlY29kZShjbXNfaHRtbF9lbnRpdHlfZGVjb2RlKHRyaW0odHJpbSgkcGFyYW1zWydkaXInXSwiKiIpLCIvIikpKSA6ICcnOw0KJG51bWJlciA9IChpc3NldCgkcGFyYW1zWydudW1iZXInXSkgJiYgaXNfbnVtZXJpYygkcGFyYW1zWydudW1iZXInXSkpID8gJHBhcmFtc1snbnVtYmVyJ10gOiA2Ow0KJHNob3cgPSAoaXNzZXQoJHBhcmFtc1snc2hvdyddKSAmJiBpbl9hcnJheSgkcGFyYW1zWydzaG93J10sIGFycmF5KCdhY3RpdmUnLCdpbmFjdGl2ZScsJ2FsbCcpKSkgPyAkcGFyYW1zWydzaG93J10gOiAnYWN0aXZlJzsNCg0KJGltZ2NvdW50ID0gMDsNCiRpdGVtY291bnQgPSAwOw0KJGltYWdlcyA9IGFycmF5KCk7DQoNCmlmICggaXNfZGlyKERFRkFVTFRfR0FMTEVSWV9QQVRIIC4gJHBhcmFtc1snZGlyJ10pICkNCnsNCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2dhbGxlcnl0aXRsZScsIGh0bWxzcGVjaWFsY2hhcnModHJpbShzdWJzdHIoJHBhcmFtc1snZGlyJ10sIHN0cnJwb3MoJHBhcmFtc1snZGlyJ10sICcvJykpLCIvIikpKTsNCg0KCS8vIGdldCBsYXRlc3QgZ2FsbGVyeQ0KCSRkYiA9JiAkdGhpcy0+R2V0REIoKTsNCgkkcXVlcnkgPSAiU0VMRUNUDQoJCQkJCQkJZy5maWxlaWQNCgkJCQkJCUZST00NCgkJCQkJCQkiIC4gY21zX2RiX3ByZWZpeCgpIC4gIm1vZHVsZV9nYWxsZXJ5IGcNCgkJCQkJCVdIRVJFDQoJCQkJCQkJZy5maWxlbmFtZSBMSUtFICclLycNCgkJCQkJCQlBTkQgZy5maWxlcGF0aCBMSUtFID8iOw0KCVN3aXRjaCAoJHNob3cpDQoJew0KCQlDYXNlICdhY3RpdmUnOg0KCQkJJHF1ZXJ5IC49ICIgQU5EIGcuYWN0aXZlPTEiOw0KCQkJYnJlYWs7DQoJCUNhc2UgJ2luYWN0aXZlJzoNCgkJCSRxdWVyeSAuPSAiIEFORCBnLmFjdGl2ZT0wIjsNCgkJCWJyZWFrOw0KCX0NCgkkcXVlcnkgLj0gIg0KCQkJCQkJT1JERVIgQlkNCgkJCQkJCQlnLmZpbGVkYXRlIERFU0MNCgkJCQkJCUxJTUlUIDAsMSI7DQoJJHJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KChlbXB0eSgkcGFyYW1zWydkaXInXSkgPyAnJScgOiAkcGFyYW1zWydkaXInXSAuICIvJSIpKSk7DQoJaWYgKCAkcmVzdWx0ICYmICRyZXN1bHQtPlJlY29yZENvdW50KCkgPiAwICkNCgl7DQoJICAkb3V0cHV0ID0gYXJyYXkoKTsNCgkgICRyb3cgPSAkcmVzdWx0LT5GZXRjaFJvdygpOw0KCQkkbGF0ZXN0Z2FsbGVyeWlkID0gJHJvd1snZmlsZWlkJ107DQoNCgkJLy8gZ2V0IGdhbGxlcnkgaW5mbw0KCQkkZ2FsbGVyeWluZm8gPSAkdGhpcy0+X0dldGdhbGxlcnlpbmZvYnlpZCgkbGF0ZXN0Z2FsbGVyeWlkKTsNCg0KCQlpZiAoIGlzc2V0KCRwYXJhbXNbJ3RlbXBsYXRlJ10pICkNCgkJew0KCQkJLy8gb3ZlcnJpZGUgdGVtcGxhdGUgc2V0dGluZ3Mgd2l0aCBwYXJhbSB0ZW1wbGF0ZQ0KCQkJJHRlbXBsYXRlcHJvcHMgPSAkdGhpcy0+X0dldFRlbXBsYXRlcHJvcHMoJHBhcmFtc1sndGVtcGxhdGUnXSk7DQoJCQkkZ2FsbGVyeWluZm9bJ3RlbXBsYXRlaWQnXSA9ICR0ZW1wbGF0ZXByb3BzWyd0ZW1wbGF0ZWlkJ107DQoJCQkkZ2FsbGVyeWluZm9bJ3RlbXBsYXRlJ10gPSAkdGVtcGxhdGVwcm9wc1sndGVtcGxhdGUnXTsNCgkJCSRnYWxsZXJ5aW5mb1sndGh1bWJ3aWR0aCddID0gJHRlbXBsYXRlcHJvcHNbJ3RodW1id2lkdGgnXTsNCgkJCSRnYWxsZXJ5aW5mb1sndGh1bWJoZWlnaHQnXSA9ICR0ZW1wbGF0ZXByb3BzWyd0aHVtYmhlaWdodCddOw0KCQkJJGdhbGxlcnlpbmZvWydyZXNpemVtZXRob2QnXSA9ICR0ZW1wbGF0ZXByb3BzWydyZXNpemVtZXRob2QnXTsNCgkJfQ0KCQlpZiAoIGVtcHR5KCRnYWxsZXJ5aW5mb1sndGVtcGxhdGVpZCddKSApDQoJCXsNCgkJCS8vIG92ZXJyaWRlIHRlbXBsYXRlIHNldHRpbmdzIHdpdGggZGVmYXVsdCB0ZW1wbGF0ZQ0KCQkJJHRlbXBsYXRlcHJvcHMgPSAkdGhpcy0+X0dldFRlbXBsYXRlcHJvcHMoJHRoaXMtPkdldFByZWZlcmVuY2UoJ2N1cnJlbnRfdGVtcGxhdGUnKSk7DQoJCQkkZ2FsbGVyeWluZm9bJ3RlbXBsYXRlaWQnXSA9ICR0ZW1wbGF0ZXByb3BzWyd0ZW1wbGF0ZWlkJ107DQoJCQkkZ2FsbGVyeWluZm9bJ3RlbXBsYXRlJ10gPSAkdGVtcGxhdGVwcm9wc1sndGVtcGxhdGUnXTsNCgkJCSRnYWxsZXJ5aW5mb1sndGh1bWJ3aWR0aCddID0gJHRlbXBsYXRlcHJvcHNbJ3RodW1id2lkdGgnXTsNCgkJCSRnYWxsZXJ5aW5mb1sndGh1bWJoZWlnaHQnXSA9ICR0ZW1wbGF0ZXByb3BzWyd0aHVtYmhlaWdodCddOw0KCQkJJGdhbGxlcnlpbmZvWydyZXNpemVtZXRob2QnXSA9ICR0ZW1wbGF0ZXByb3BzWydyZXNpemVtZXRob2QnXTsNCgkJfQ0KDQoJCWlmICggJGdhbGxlcnlpbmZvWydhY3RpdmUnXSA9PSAxICkNCgkJew0KCQkJaWYgKCAhZW1wdHkoJGdhbGxlcnlpbmZvWyd0aXRsZSddKSApDQoJCQl7DQoJCQkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdnYWxsZXJ5dGl0bGUnLCAkZ2FsbGVyeWluZm9bJ3RpdGxlJ10pOw0KCQkJfQ0KCQkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdnYWxsZXJ5Y29tbWVudCcsICRnYWxsZXJ5aW5mb1snY29tbWVudCddKTsNCgkJCSR0aGlzLT5zbWFydHktPmFzc2lnbigncGFyZW50bGluaycsICcnKTsNCgkJfQ0KDQoJCS8vIGJ1aWxkIGdhbGxlcnkgd2l0aCByYW5kb20gaW1hZ2VzDQoJCSRxdWVyeSA9ICJTRUxFQ1QNCgkJCQkJCQkJZzEuKiwgZzIuYWN0aXZlDQoJCQkJCQkJRlJPTQ0KCQkJCQkJCQkiIC4gY21zX2RiX3ByZWZpeCgpIC4gIm1vZHVsZV9nYWxsZXJ5IGcxDQoJCQkJCQkJTEVGVCBKT0lODQoJCQkJCQkJCSIgLiBjbXNfZGJfcHJlZml4KCkgLiAibW9kdWxlX2dhbGxlcnkgZzINCgkJCQkJCQlPTg0KCQkJCQkJCQlnMS5nYWxsZXJ5aWQgPSBnMi5maWxlaWQNCgkJCQkJCQlXSEVSRQ0KCQkJCQkJCQlnMS5maWxlbmFtZSBOT1QgTElLRSAnJS8nDQoJCQkJCQkJCUFORCBnMS5nYWxsZXJ5aWQ9PyI7DQoJCVN3aXRjaCAoJHNob3cpDQoJCXsNCgkJCUNhc2UgJ2FjdGl2ZSc6DQoJCQkJJHF1ZXJ5IC49ICIgQU5EIGcxLmFjdGl2ZT0xIEFORCBnMi5hY3RpdmU9MSI7DQoJCQkJYnJlYWs7DQoJCQlDYXNlICdpbmFjdGl2ZSc6DQoJCQkJJHF1ZXJ5IC49ICIgQU5EIGcxLmFjdGl2ZT0wIjsNCgkJCQlicmVhazsNCgkJfQ0KCQkkcXVlcnkgLj0gIg0KCQkJCQkJCU9SREVSIEJZDQoJCQkJCQkJCVJBTkQoKQ0KCQkJCQkJCUxJTUlUIDAsPyI7DQoJCSRyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkbGF0ZXN0Z2FsbGVyeWlkLCAkbnVtYmVyKSk7DQoJCWlmICggJHJlc3VsdCAmJiAkcmVzdWx0LT5SZWNvcmRDb3VudCgpID4gMCApDQoJCXsNCgkJCSRvdXRwdXQgPSBhcnJheSgpOw0KCQkJd2hpbGUgKCAkcm93PSRyZXN1bHQtPkZldGNoUm93KCkgKQ0KCQkJew0KCQkJCSRvdXRwdXRbdHJpbSgkcm93WydmaWxlcGF0aCddIC4gJy8nIC4gJHJvd1snZmlsZW5hbWUnXSwnLycpXSA9ICRyb3c7DQoNCgkJCS8vIGNyZWF0ZSBhIG5ldyBvYmplY3QgZm9yIGV2ZXJ5IHJlY29yZCB0aGF0IHdlIHJldHJpZXZlDQoJCQkkcmVjID0gbmV3IHN0ZENsYXNzKCk7DQoJCQkkcmVjLT5maWxlaWQgPSAkcm93WydmaWxlaWQnXTsNCgkJCSRyZWMtPmZpbGUgPSBERUZBVUxUX0dBTExFUllfUEFUSCAuIHN0cl9yZXBsYWNlKCclMkYnLCcvJyxyYXd1cmxlbmNvZGUodHJpbSgkcm93WydmaWxlcGF0aCddIC4gJy8nIC4gJHJvd1snZmlsZW5hbWUnXSwnLycpKSk7DQoJCQkkcmVjLT5maWxlZGF0ZSA9ICRyb3dbJ2ZpbGVkYXRlJ107DQoJCQkkcmVjLT50aXRsZSA9IGVtcHR5KCRyb3dbJ3RpdGxlJ10pID8gJHJvd1snZmlsZW5hbWUnXSA6ICRyb3dbJ3RpdGxlJ107DQoJCQkkcmVjLT5jb21tZW50ID0gJHJvd1snY29tbWVudCddOw0KCQkJaWYgKCAkZ2FsbGVyeWluZm9bJ3RodW1id2lkdGgnXSA+IDAgKQ0KCQkJew0KCQkJCSRyZWMtPnRodW1iID0gREVGQVVMVF9HQUxMRVJZVEhVTUJTX1BBVEggLiAkcm93WydmaWxlaWQnXSAuICctJyAuICRnYWxsZXJ5aW5mb1sndGVtcGxhdGVpZCddIC4gc3Vic3RyKCRyb3dbJ2ZpbGVuYW1lJ10sIHN0cnJwb3MoJHJvd1snZmlsZW5hbWUnXSwgJy4nKSkgOw0KCQkJfQ0KCQkJZWxzZQ0KCQkJew0KCQkJCSRyZWMtPnRodW1iID0gREVGQVVMVF9HQUxMRVJZX1BBVEggLiAoZW1wdHkoJHJvd1snZmlsZXBhdGgnXSkgPyAnJyA6ICRyb3dbJ2ZpbGVwYXRoJ10gLiAnLycpIC4gSU1fUFJFRklYIC4gJHJvd1snZmlsZW5hbWUnXTsNCgkJCX0NCgkJCSRyZWMtPmlzZGlyID0gZmFsc2U7DQoJCQkkaXRlbWNvdW50Kys7DQoJCQkkaW1nY291bnQrKzsNCg0KCQkJJHRoaXMtPl9DcmVhdGVUaHVtYm5haWwoJHJlYy0+dGh1bWIsDQoJCQkJCQkJCQkJCQkJCQlERUZBVUxUX0dBTExFUllfUEFUSCAuIHRyaW0oJHJvd1snZmlsZXBhdGgnXSAuICcvJyAuICRyb3dbJ2ZpbGVuYW1lJ10sJy8nKSwNCgkJCQkJCQkJCQkJCQkJCSgkZ2FsbGVyeWluZm9bJ3RodW1id2lkdGgnXSA+IDApID8gJGdhbGxlcnlpbmZvWyd0aHVtYndpZHRoJ10gOiA5NiwNCgkJCQkJCQkJCQkJCQkJCSgkZ2FsbGVyeWluZm9bJ3RodW1id2lkdGgnXSA+IDApID8gJGdhbGxlcnlpbmZvWyd0aHVtYmhlaWdodCddIDogOTYsDQoJCQkJCQkJCQkJCQkJCQkoJGdhbGxlcnlpbmZvWyd0aHVtYndpZHRoJ10gPiAwKSA/ICRnYWxsZXJ5aW5mb1sncmVzaXplbWV0aG9kJ10gOiAnc2MnKTsNCgkJCWFycmF5X3B1c2goJGltYWdlcywkcmVjKTsNCgkJCX0NCgkJfQ0KCX0NCn0NCmVsc2UNCnsNCgkkcGFyYW1zWydtb2R1bGVfbWVzc2FnZSddID0gIlRoZSBkaXJlY3RvcnkgJyIgLiBodG1sc3BlY2lhbGNoYXJzKCRwYXJhbXNbJ2RpciddKSAuICInIGRvZXMgbm90IGV4aXN0LiBDaGVjayB5b3VyIHBhcmFtZXRlcnMuIjsNCn0NCg0KDQovLyBFeHBvc2UgdGhlIGxpc3QgdG8gc21hcnR5LiBVc2UgImJ5X3JlZiIgdG8gc2F2ZSBtZW1vcnkuDQokdGhpcy0+c21hcnR5LT5hc3NpZ25fYnlfcmVmKCdpbWFnZXMnLCRpbWFnZXMpOw0KDQovLyBhbmQgYSBjb3VudCBvZiByZWNvcmRzDQokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2ltYWdlY291bnQnLCAkaW1nY291bnQgLiAnICcgLiAoJGltZ2NvdW50ID09IDEgPyAkdGhpcy0+TGFuZygnaW1hZ2UnKSA6ICR0aGlzLT5MYW5nKCdpbWFnZXMnKSkpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdpdGVtY291bnQnLCAkaXRlbWNvdW50KTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbigncGFnZXMnLCAxKTsNCg0KLy8gbmF2aWdhdGlvbmxpbmtzIG5vdCBuZXNjZXNhcnksIGJ1dCBkZWZpbmUgc21hcnR5IHZhcmlhYmxlcyBmb3IgdGVtcGxhdGVzIHRoYXQgdXNlIHRoZW0NCiR0aGlzLT5zbWFydHktPmFzc2lnbigncHJldnBhZ2UnLCAnJyk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ25leHRwYWdlJywgJycpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdwYWdlbGlua3MnLCAnJyk7DQoNCg0KaWYgKGlzc2V0KCRwYXJhbXNbJ21vZHVsZV9tZXNzYWdlJ10pKQ0Kew0KCSR0aGlzLT5zbWFydHktPmFzc2lnbignbW9kdWxlX21lc3NhZ2UnLCRwYXJhbXNbJ21vZHVsZV9tZXNzYWdlJ10pOw0KfQ0KZWxzZQ0Kew0KCSR0aGlzLT5zbWFydHktPmFzc2lnbignbW9kdWxlX21lc3NhZ2UnLCcnKTsNCn0NCg0KDQovLyBEaXNwbGF5IHRlbXBsYXRlDQplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGVGcm9tRGF0YWJhc2UoJGdhbGxlcnlpbmZvWyd0ZW1wbGF0ZSddKTsNCg0KDQovLyBwYXNzIGRhdGEgdG8gaGVhZCBzZWN0aW9uLg0KDQovLyBnZXQgdGVtcGxhdGUtc3BlY2lmaWMgSmF2YVNjcmlwdCBhbmQgZWNobw0KJHRlbXBsYXRlY29kZSA9ICR0aGlzLT5HZXRUZW1wbGF0ZSgkZ2FsbGVyeWluZm9bJ3RlbXBsYXRlJ10pOw0KJHRlbXBsYXRlY29kZWFyciA9IGV4cGxvZGUoVEVNUExBVEVfU0VQQVJBVE9SLCAkdGVtcGxhdGVjb2RlKTsNCiR0ZW1wbGF0ZV9tZXRhZGF0YSA9IHN1YnN0cigkdGVtcGxhdGVjb2RlYXJyWzJdLDAsLTIpOw0KDQovLyBjaGVjayBpZiBhIGNzcyBmaWxlIGV4aXN0cyBhbmQgZWNobw0KaWYgKCBmaWxlX2V4aXN0cygibW9kdWxlcy9HYWxsZXJ5L3RlbXBsYXRlcy9jc3MvIiAuICRnYWxsZXJ5aW5mb1sndGVtcGxhdGUnXSAuICIuY3NzIikgKQ0Kew0KCSR0ZW1wbGF0ZV9tZXRhZGF0YSAuPSAnPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJtb2R1bGVzL0dhbGxlcnkvdGVtcGxhdGVzL2Nzcy8nIC4gJGdhbGxlcnlpbmZvWyd0ZW1wbGF0ZSddIC4gJy5jc3MiIHR5cGU9InRleHQvY3NzIiBtZWRpYT0ic2NyZWVuIiAvPg0KJzsNCn0NCiR0aGlzLT5HYWxsZXJ5TWV0YWRhdGEgPSAkdGVtcGxhdGVfbWV0YWRhdGE7DQoNCj8+]]></data>
	</file>
	<file>
	  <filename>/action.showrandom.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmlmICghaXNzZXQoJGdDbXMpKSBleGl0Ow0KDQokaW5jbHVkZXN1YmRpciA9IChpc3NldCgkcGFyYW1zWydkaXInXSkgJiYgc3Vic3RyKCRwYXJhbXNbJ2RpciddLC0xKSA9PSAiKiIpID8gVFJVRSA6IEZBTFNFOw0KJHBhcmFtc1snZGlyJ10gPSBpc3NldCgkcGFyYW1zWydkaXInXSkgPyByYXd1cmxkZWNvZGUoY21zX2h0bWxfZW50aXR5X2RlY29kZSh0cmltKHRyaW0oJHBhcmFtc1snZGlyJ10sIioiKSwiLyIpKSkgOiAnJzsNCiRudW1iZXIgPSAoaXNzZXQoJHBhcmFtc1snbnVtYmVyJ10pICYmIGlzX251bWVyaWMoJHBhcmFtc1snbnVtYmVyJ10pKSA/ICRwYXJhbXNbJ251bWJlciddIDogNjsNCiRzaG93ID0gKGlzc2V0KCRwYXJhbXNbJ3Nob3cnXSkgJiYgaW5fYXJyYXkoJHBhcmFtc1snc2hvdyddLCBhcnJheSgnYWN0aXZlJywnaW5hY3RpdmUnLCdhbGwnKSkpID8gJHBhcmFtc1snc2hvdyddIDogJ2FjdGl2ZSc7DQoNCiRpbWdjb3VudCA9IDA7DQokaXRlbWNvdW50ID0gMDsNCiRpbWFnZXMgPSBhcnJheSgpOw0KDQppZiAoIGlzX2RpcihERUZBVUxUX0dBTExFUllfUEFUSCAuICRwYXJhbXNbJ2RpciddKSApDQp7DQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdnYWxsZXJ5dGl0bGUnLCBodG1sc3BlY2lhbGNoYXJzKHRyaW0oc3Vic3RyKCRwYXJhbXNbJ2RpciddLCBzdHJycG9zKCRwYXJhbXNbJ2RpciddLCAnLycpKSwiLyIpKSk7DQoNCgkvLyBnZXQgZ2FsbGVyeSBpbmZvDQoJJGdhbGxlcnlpbmZvID0gJHRoaXMtPl9HZXRnYWxsZXJ5aW5mbygkcGFyYW1zWydkaXInXSk7DQoNCglpZiAoIGlzc2V0KCRwYXJhbXNbJ3RlbXBsYXRlJ10pICkNCgl7DQoJCS8vIG92ZXJyaWRlIHRlbXBsYXRlIHNldHRpbmdzIHdpdGggcGFyYW0gdGVtcGxhdGUNCgkJJHRlbXBsYXRlcHJvcHMgPSAkdGhpcy0+X0dldFRlbXBsYXRlcHJvcHMoJHBhcmFtc1sndGVtcGxhdGUnXSk7DQoJCSRnYWxsZXJ5aW5mb1sndGVtcGxhdGVpZCddID0gJHRlbXBsYXRlcHJvcHNbJ3RlbXBsYXRlaWQnXTsNCgkJJGdhbGxlcnlpbmZvWyd0ZW1wbGF0ZSddID0gJHRlbXBsYXRlcHJvcHNbJ3RlbXBsYXRlJ107DQoJCSRnYWxsZXJ5aW5mb1sndGh1bWJ3aWR0aCddID0gJHRlbXBsYXRlcHJvcHNbJ3RodW1id2lkdGgnXTsNCgkJJGdhbGxlcnlpbmZvWyd0aHVtYmhlaWdodCddID0gJHRlbXBsYXRlcHJvcHNbJ3RodW1iaGVpZ2h0J107DQoJCSRnYWxsZXJ5aW5mb1sncmVzaXplbWV0aG9kJ10gPSAkdGVtcGxhdGVwcm9wc1sncmVzaXplbWV0aG9kJ107DQoJfQ0KCWlmICggZW1wdHkoJGdhbGxlcnlpbmZvWyd0ZW1wbGF0ZWlkJ10pICkNCgl7DQoJCS8vIG92ZXJyaWRlIHRlbXBsYXRlIHNldHRpbmdzIHdpdGggZGVmYXVsdCB0ZW1wbGF0ZQ0KCQkkdGVtcGxhdGVwcm9wcyA9ICR0aGlzLT5fR2V0VGVtcGxhdGVwcm9wcygkdGhpcy0+R2V0UHJlZmVyZW5jZSgnY3VycmVudF90ZW1wbGF0ZScpKTsNCgkJJGdhbGxlcnlpbmZvWyd0ZW1wbGF0ZWlkJ10gPSAkdGVtcGxhdGVwcm9wc1sndGVtcGxhdGVpZCddOw0KCQkkZ2FsbGVyeWluZm9bJ3RlbXBsYXRlJ10gPSAkdGVtcGxhdGVwcm9wc1sndGVtcGxhdGUnXTsNCgkJJGdhbGxlcnlpbmZvWyd0aHVtYndpZHRoJ10gPSAkdGVtcGxhdGVwcm9wc1sndGh1bWJ3aWR0aCddOw0KCQkkZ2FsbGVyeWluZm9bJ3RodW1iaGVpZ2h0J10gPSAkdGVtcGxhdGVwcm9wc1sndGh1bWJoZWlnaHQnXTsNCgkJJGdhbGxlcnlpbmZvWydyZXNpemVtZXRob2QnXSA9ICR0ZW1wbGF0ZXByb3BzWydyZXNpemVtZXRob2QnXTsNCgl9DQoNCglpZiAoICRnYWxsZXJ5aW5mb1snYWN0aXZlJ10gPT0gMSApDQoJew0KCQlpZiAoICFlbXB0eSgkZ2FsbGVyeWluZm9bJ3RpdGxlJ10pICkNCgkJew0KCQkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdnYWxsZXJ5dGl0bGUnLCAkZ2FsbGVyeWluZm9bJ3RpdGxlJ10pOw0KCQl9DQoJCSR0aGlzLT5zbWFydHktPmFzc2lnbignZ2FsbGVyeWNvbW1lbnQnLCAkZ2FsbGVyeWluZm9bJ2NvbW1lbnQnXSk7DQoJCSR0aGlzLT5zbWFydHktPmFzc2lnbigncGFyZW50bGluaycsICcnKTsNCgl9DQoNCg0KDQoJLy8gYnVpbGQgZ2FsbGVyeSB3aXRoIHJhbmRvbSBpbWFnZXMNCgkNCgkkZGIgPSYgJHRoaXMtPkdldERCKCk7CQ0KCSRxdWVyeSA9ICJTRUxFQ1QNCgkJCQkJCQlnMS4qLCBnMi5hY3RpdmUNCgkJCQkJCUZST00gDQoJCQkJCQkJIiAuIGNtc19kYl9wcmVmaXgoKSAuICJtb2R1bGVfZ2FsbGVyeSBnMQ0KCQkJCQkJTEVGVCBKT0lODQoJCQkJCQkJIiAuIGNtc19kYl9wcmVmaXgoKSAuICJtb2R1bGVfZ2FsbGVyeSBnMg0KCQkJCQkJT04NCgkJCQkJCQlnMS5nYWxsZXJ5aWQgPSBnMi5maWxlaWQNCgkJCQkJCVdIRVJFDQoJCQkJCQkJZzEuZmlsZW5hbWUgTk9UIExJS0UgJyUvJyI7DQoJaWYgKCAkaW5jbHVkZXN1YmRpciApDQoJew0KCQkkcXVlcnkgLj0gIg0KCQkJCQkJQU5EIChnMS5nYWxsZXJ5aWQ9PyBPUiBnMS5maWxlcGF0aCBMSUtFID8pIjsNCgl9DQoJZWxzZXsNCgkJJHF1ZXJ5IC49ICINCgkJCQkJCUFORCAoZzEuZ2FsbGVyeWlkPT8gT1IgZzEuZmlsZXBhdGggPSA/KSI7DQoJfQ0KCVN3aXRjaCAoJHNob3cpDQoJew0KCQlDYXNlICdhY3RpdmUnOiANCgkJCSRxdWVyeSAuPSAiIEFORCBnMS5hY3RpdmU9MSBBTkQgZzIuYWN0aXZlPTEiOw0KCQkJYnJlYWs7DQoJCUNhc2UgJ2luYWN0aXZlJzoNCgkJCSRxdWVyeSAuPSAiIEFORCBnMS5hY3RpdmU9MCI7DQoJCQlicmVhazsNCgl9DQoJJHF1ZXJ5IC49ICINCgkJCQkJCU9SREVSIEJZDQoJCQkJCQkJUkFORCgpDQoJCQkJCQlMSU1JVCAwLD8iOw0KCSRyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkZ2FsbGVyeWluZm9bJ2ZpbGVpZCddLCAoZW1wdHkoJHBhcmFtc1snZGlyJ10pID8gJyUnIDogJHBhcmFtc1snZGlyJ10gLiAiLyUiKSwgJG51bWJlcikpOw0KCWlmICggJHJlc3VsdCAmJiAkcmVzdWx0LT5SZWNvcmRDb3VudCgpID4gMCApIA0KCXsNCgkgICRvdXRwdXQgPSBhcnJheSgpOw0KCSAgd2hpbGUgKCAkcm93PSRyZXN1bHQtPkZldGNoUm93KCkgKSANCgkgIHsNCgkgICAgJG91dHB1dFt0cmltKCRyb3dbJ2ZpbGVwYXRoJ10gLiAnLycgLiAkcm93WydmaWxlbmFtZSddLCcvJyldID0gJHJvdzsNCgkgICAgDQoJCS8vIGNyZWF0ZSBhIG5ldyBvYmplY3QgZm9yIGV2ZXJ5IHJlY29yZCB0aGF0IHdlIHJldHJpZXZlDQoJCSRyZWMgPSBuZXcgc3RkQ2xhc3MoKTsNCgkJJHJlYy0+ZmlsZWlkID0gJHJvd1snZmlsZWlkJ107DQoJCSRyZWMtPmZpbGUgPSBERUZBVUxUX0dBTExFUllfUEFUSCAuIHN0cl9yZXBsYWNlKCclMkYnLCcvJyxyYXd1cmxlbmNvZGUodHJpbSgkcm93WydmaWxlcGF0aCddIC4gJy8nIC4gJHJvd1snZmlsZW5hbWUnXSwnLycpKSk7DQoJCSRyZWMtPmZpbGVkYXRlID0gJHJvd1snZmlsZWRhdGUnXTsNCgkJJHJlYy0+dGl0bGUgPSBlbXB0eSgkcm93Wyd0aXRsZSddKSA/ICRyb3dbJ2ZpbGVuYW1lJ10gOiAkcm93Wyd0aXRsZSddOw0KCQkkcmVjLT5jb21tZW50ID0gJHJvd1snY29tbWVudCddOw0KCQlpZiAoICRnYWxsZXJ5aW5mb1sndGh1bWJ3aWR0aCddID4gMCApDQoJCXsNCgkJCSRyZWMtPnRodW1iID0gREVGQVVMVF9HQUxMRVJZVEhVTUJTX1BBVEggLiAkcm93WydmaWxlaWQnXSAuICctJyAuICRnYWxsZXJ5aW5mb1sndGVtcGxhdGVpZCddIC4gc3Vic3RyKCRyb3dbJ2ZpbGVuYW1lJ10sIHN0cnJwb3MoJHJvd1snZmlsZW5hbWUnXSwgJy4nKSkgOw0KCQl9DQoJCWVsc2UNCgkJew0KCQkJJHJlYy0+dGh1bWIgPSBERUZBVUxUX0dBTExFUllfUEFUSCAuIChlbXB0eSgkcm93WydmaWxlcGF0aCddKSA/ICcnIDogJHJvd1snZmlsZXBhdGgnXSAuICcvJykgLiBJTV9QUkVGSVggLiAkcm93WydmaWxlbmFtZSddOw0KCQl9DQoJCSRyZWMtPmlzZGlyID0gZmFsc2U7DQoJCSRpdGVtY291bnQrKzsNCgkJJGltZ2NvdW50Kys7DQoNCgkJJHRoaXMtPl9DcmVhdGVUaHVtYm5haWwoJHJlYy0+dGh1bWIsDQoJCQkJCQkJCQkJCQkJCURFRkFVTFRfR0FMTEVSWV9QQVRIIC4gdHJpbSgkcm93WydmaWxlcGF0aCddIC4gJy8nIC4gJHJvd1snZmlsZW5hbWUnXSwnLycpLA0KCQkJCQkJCQkJCQkJCQkoJGdhbGxlcnlpbmZvWyd0aHVtYndpZHRoJ10gPiAwKSA/ICRnYWxsZXJ5aW5mb1sndGh1bWJ3aWR0aCddIDogOTYsDQoJCQkJCQkJCQkJCQkJCSgkZ2FsbGVyeWluZm9bJ3RodW1id2lkdGgnXSA+IDApID8gJGdhbGxlcnlpbmZvWyd0aHVtYmhlaWdodCddIDogOTYsDQoJCQkJCQkJCQkJCQkJCSgkZ2FsbGVyeWluZm9bJ3RodW1id2lkdGgnXSA+IDApID8gJGdhbGxlcnlpbmZvWydyZXNpemVtZXRob2QnXSA6ICdzYycpOw0KCQlhcnJheV9wdXNoKCRpbWFnZXMsJHJlYyk7DQoJICB9DQoJfQ0KfQ0KZWxzZQ0Kew0KCSRwYXJhbXNbJ21vZHVsZV9tZXNzYWdlJ10gPSAiVGhlIGRpcmVjdG9yeSAnIiAuIHNwZWNpYWxodG1sY2hhcnMoJHBhcmFtc1snZGlyJ10pIC4gIicgZG9lcyBub3QgZXhpc3QuIENoZWNrIHlvdXIgcGFyYW1ldGVycy4iOw0KfQ0KDQoNCi8vIEV4cG9zZSB0aGUgbGlzdCB0byBzbWFydHkuIFVzZSAiYnlfcmVmIiB0byBzYXZlIG1lbW9yeS4NCiR0aGlzLT5zbWFydHktPmFzc2lnbl9ieV9yZWYoJ2ltYWdlcycsJGltYWdlcyk7DQoNCi8vIGFuZCBhIGNvdW50IG9mIHJlY29yZHMNCiR0aGlzLT5zbWFydHktPmFzc2lnbignaW1hZ2Vjb3VudCcsICRpbWdjb3VudCAuICcgJyAuICgkaW1nY291bnQgPT0gMSA/ICR0aGlzLT5MYW5nKCdpbWFnZScpIDogJHRoaXMtPkxhbmcoJ2ltYWdlcycpKSk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2l0ZW1jb3VudCcsICRpdGVtY291bnQpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdwYWdlcycsIDEpOw0KDQovLyBuYXZpZ2F0aW9ubGlua3Mgbm90IG5lc2Nlc2FyeSwgYnV0IGRlZmluZSBzbWFydHkgdmFyaWFibGVzIGZvciB0ZW1wbGF0ZXMgdGhhdCB1c2UgdGhlbQ0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdwcmV2cGFnZScsICcnKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbignbmV4dHBhZ2UnLCAnJyk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3BhZ2VsaW5rcycsICcnKTsNCg0KDQppZiAoaXNzZXQoJHBhcmFtc1snbW9kdWxlX21lc3NhZ2UnXSkpDQp7DQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdtb2R1bGVfbWVzc2FnZScsJHBhcmFtc1snbW9kdWxlX21lc3NhZ2UnXSk7DQp9DQplbHNlDQp7DQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdtb2R1bGVfbWVzc2FnZScsJycpOw0KfQ0KDQoNCi8vIERpc3BsYXkgdGVtcGxhdGUNCmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZUZyb21EYXRhYmFzZSgkZ2FsbGVyeWluZm9bJ3RlbXBsYXRlJ10pOw0KDQoNCi8vIHBhc3MgZGF0YSB0byBoZWFkIHNlY3Rpb24uDQoNCi8vIGdldCB0ZW1wbGF0ZS1zcGVjaWZpYyBKYXZhU2NyaXB0IGFuZCBlY2hvDQokdGVtcGxhdGVjb2RlID0gJHRoaXMtPkdldFRlbXBsYXRlKCRnYWxsZXJ5aW5mb1sndGVtcGxhdGUnXSk7DQokdGVtcGxhdGVjb2RlYXJyID0gZXhwbG9kZShURU1QTEFURV9TRVBBUkFUT1IsICR0ZW1wbGF0ZWNvZGUpOw0KJHRlbXBsYXRlX21ldGFkYXRhID0gc3Vic3RyKCR0ZW1wbGF0ZWNvZGVhcnJbMl0sMCwtMik7DQoNCi8vIGNoZWNrIGlmIGEgY3NzIGZpbGUgZXhpc3RzIGFuZCBlY2hvDQppZiAoIGZpbGVfZXhpc3RzKCJtb2R1bGVzL0dhbGxlcnkvdGVtcGxhdGVzL2Nzcy8iIC4gJGdhbGxlcnlpbmZvWyd0ZW1wbGF0ZSddIC4gIi5jc3MiKSApDQp7DQoJJHRlbXBsYXRlX21ldGFkYXRhIC49ICc8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Im1vZHVsZXMvR2FsbGVyeS90ZW1wbGF0ZXMvY3NzLycgLiAkZ2FsbGVyeWluZm9bJ3RlbXBsYXRlJ10gLiAnLmNzcyIgdHlwZT0idGV4dC9jc3MiIG1lZGlhPSJzY3JlZW4iIC8+DQonOw0KfQ0KJHRoaXMtPkdhbGxlcnlNZXRhZGF0YSA9ICR0ZW1wbGF0ZV9tZXRhZGF0YTsNCg0KPz4=]]></data>
	</file>
	<file>
	  <filename>/action.switchactive.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmlmICghaXNzZXQoJGdDbXMpKSBleGl0Ow0KDQovLyBDaGVjayBwZXJtaXNzaW9ucw0KaWYoICEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdVc2UgR2FsbGVyeScpICkNCnsNCgllY2hvICR0aGlzLT5TaG93RXJyb3JzKCR0aGlzLT5MYW5nKCdhY2Nlc3NkZW5pZWQnKSk7DQoJcmV0dXJuOw0KfQ0KDQokZmlsZV9pZCA9ICcnOw0KaWYgKCBpc3NldCgkcGFyYW1zWydmaWQnXSkgKQ0Kew0KCSRmaWxlX2lkID0gJHBhcmFtc1snZmlkJ107DQp9DQoNCg0KJHF1ZXJ5ID0gIlVQREFURSAiIC4gY21zX2RiX3ByZWZpeCgpIC4gIm1vZHVsZV9nYWxsZXJ5IFNFVCBhY3RpdmUgPSBhY3RpdmVeMSBXSEVSRSBmaWxlaWQgPSA/IjsNCiRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRmaWxlX2lkKSk7DQoNCiR0aGlzLT5SZWRpcmVjdCgkaWQsICRwYXJhbXNbJ29yaWdhY3Rpb24nXSAsICRyZXR1cm5pZCwgJHBhcmFtcyk7DQoNCj8+]]></data>
	</file>
	<file>
	  <filename>/action.switchdefault.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmlmICghaXNzZXQoJGdDbXMpKSBleGl0Ow0KDQovLyBDaGVjayBwZXJtaXNzaW9ucw0KaWYoICEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdVc2UgR2FsbGVyeScpICkNCnsNCgllY2hvICR0aGlzLT5TaG93RXJyb3JzKCR0aGlzLT5MYW5nKCdhY2Nlc3NkZW5pZWQnKSk7DQoJcmV0dXJuOw0KfQ0KDQokZmlsZV9pZCA9IGlzc2V0KCRwYXJhbXNbJ2ZpZCddKSA/ICRwYXJhbXNbJ2ZpZCddIDogJyc7DQokZ2FsbGVyeSA9IGlzc2V0KCRwYXJhbXNbJ2dpZCddKSA/ICRwYXJhbXNbJ2dpZCddIDogJyc7DQoNCiRxdWVyeSA9ICJVUERBVEUgIiAuIGNtc19kYl9wcmVmaXgoKSAuICJtb2R1bGVfZ2FsbGVyeSBTRVQgZGVmYXVsdGZpbGUgPSA/IFdIRVJFIGZpbGVpZCA9ID8iOw0KJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGZpbGVfaWQsJGdhbGxlcnkpKTsNCg0KJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2VkaXRnYWxsZXJ5JyAsICRyZXR1cm5pZCwgJHBhcmFtcyk7DQoNCj8+]]></data>
	</file>
	<file>
	  <filename>/action.switchdefaulttemplate.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoICFpc3NldCggJGdDbXMgKSApIGV4aXQoKTsKCgppZiggISR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01vZGlmeSBUZW1wbGF0ZXMnKSApCiAgewoJZWNobyAkdGhpcy0+U2hvd0Vycm9ycygkdGhpcy0+TGFuZygnYWNjZXNzZGVuaWVkJykpOwoJcmV0dXJuOwogIH0KCmlmKCAhaXNzZXQoICRwYXJhbXNbJ3RlbXBsYXRlJ10gKSApCiAgewoJCSRwYXJhbXMgPSBhcnJheSgnZXJyb3JzJz0+ICdlcnJvcl9pbnN1ZmZpY2llbnRwYXJhbXMnLCAnYWN0aXZlX3RhYicgPT4gJ3RlbXBsYXRlcycpOwogICAgJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicgLCAkcmV0dXJuaWQsICRwYXJhbXMpOwogICAgcmV0dXJuOwogIH0KCiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdjdXJyZW50X3RlbXBsYXRlJywkcGFyYW1zWyd0ZW1wbGF0ZSddKTsKJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicgLCAkcmV0dXJuaWQsIGFycmF5KCdhY3RpdmVfdGFiJyA9PiAndGVtcGxhdGVzJykpOwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/function.admin_galleriestab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiR0aGVtZU9iamVjdCA9JiAkZ0Ntcy0+dmFyaWFibGVzWydhZG1pbnRoZW1lJ107DQokdGhpcy0+X1VwZGF0ZUdhbGxlcnlEQignJywxKTsNCiRnYWxsZXJpZXMgPSAkdGhpcy0+X0dldEdhbGxlcmllcygpOw0KDQokc2hvd2dhbGxlcmllcyA9IGFycmF5KCk7DQppZiAoIGVtcHR5KCRnYWxsZXJpZXMpICkNCnsNCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ25vZ2FsbGVyaWVzdGV4dCcsICR0aGlzLT5sYW5nKCJub2dhbGxlcmllc3RleHQiKSk7DQp9IA0KZWxzZSANCnsNCglmb3JlYWNoICgkZ2FsbGVyaWVzIGFzICRnYWxsZXJ5KSANCgl7DQoJCSRvbmVyb3cgPSBuZXcgc3RkQ2xhc3MoKTsNCg0KCQkkb25lcm93LT5pZCA9ICRnYWxsZXJ5WydmaWxlaWQnXTsNCgkJJG9uZXJvdy0+Z2lkY2xhc3MgPSAkZ2FsbGVyeVsnZ2FsbGVyeWlkJ10gPiAxID8gJyBjaGlsZC1vZi1ub2RlLScgLiAkZ2FsbGVyeVsnZ2FsbGVyeWlkJ10gOiAnJzsNCgkJJG9uZXJvdy0+ZmlsZSA9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2VkaXRnYWxsZXJ5JywgJHJldHVybmlkLCAoZW1wdHkoJGdhbGxlcnlbJ2ZpbGVwYXRoJ10pID8gJycgOiAkZ2FsbGVyeVsnZmlsZXBhdGgnXSAuICcvJykgLiAkZ2FsbGVyeVsnZmlsZW5hbWUnXSwgYXJyYXkoJ2dpZCc9PiRnYWxsZXJ5WydmaWxlaWQnXSwnbW9kZSc9PiJlZGl0IikpOw0KDQoJCWlmICggJGdhbGxlcnlbJ2FjdGl2ZSddICkgDQogICAgew0KCQkJJGFjdGl2ZWltYWdlID0gJHRoZW1lT2JqZWN0LT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS90cnVlLmdpZicsICR0aGlzLT5MYW5nKCdzZXRmYWxzZScpLCcnLCcnLCdzeXN0ZW1pY29uJyk7DQoJCX0gDQogICAgZWxzZSANCiAgICB7DQoJCQkkYWN0aXZlaW1hZ2UgPSAkdGhlbWVPYmplY3QtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2ZhbHNlLmdpZicsICR0aGlzLT5MYW5nKCdzZXR0cnVlJyksJycsJycsJ3N5c3RlbWljb24nKTsNCgkJfQ0KCQkkb25lcm93LT5hY3RpdmVsaW5rID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnc3dpdGNoYWN0aXZlJywgJHJldHVybmlkLCAkYWN0aXZlaW1hZ2UsIGFycmF5KCdmaWQnID0+ICRnYWxsZXJ5WydmaWxlaWQnXSwgJ29yaWdhY3Rpb24nID0+ICdkZWZhdWx0YWRtaW4nKSk7DQoNCgkJJG9uZXJvdy0+ZWRpdGxpbmsgPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdlZGl0Z2FsbGVyeScsICRyZXR1cm5pZCwNCgkJJHRoZW1lT2JqZWN0LT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9lZGl0LmdpZicsICR0aGlzLT5MYW5nKCdlZGl0Z2FsbGVyeScpLCcnLCcnLCdzeXN0ZW1pY29uJyksDQoJCWFycmF5KCdnaWQnID0+ICRnYWxsZXJ5WydmaWxlaWQnXSwnbW9kZSc9PiJlZGl0IikpOw0KDQoJCWlmICggaXNfZGlyKCcuLi8nIC4gREVGQVVMVF9HQUxMRVJZX1BBVEggLiAoZW1wdHkoJGdhbGxlcnlbJ2ZpbGVwYXRoJ10pID8gJycgOiAkZ2FsbGVyeVsnZmlsZXBhdGgnXSAuICcvJykgLiAkZ2FsbGVyeVsnZmlsZW5hbWUnXSkgfHwgJGdhbGxlcnlbJ2ZpbGVpZCddID09IDEgKQ0KCQl7DQoJCQlhcnJheV9wdXNoKCRzaG93Z2FsbGVyaWVzLCAkb25lcm93KTsNCgkJfQ0KCQllbHNlDQoJCXsNCgkJCS8vIGRlbGV0ZSBkaXJlY3RvcnkgYW5kIGFsbCBvZiBpdHMgY29udGVudHMgZnJvbSB0aGUgZGF0YWJhc2UNCgkJCSR0aGlzLT5fRGVsZXRlR2FsbGVyeURCKChlbXB0eSgkZ2FsbGVyeVsnZmlsZXBhdGgnXSkgPyAnJyA6ICRnYWxsZXJ5WydmaWxlcGF0aCddIC4gJy8nKSAuICRnYWxsZXJ5WydmaWxlbmFtZSddLCAkZ2FsbGVyeVsnZmlsZWlkJ10pOw0KCQl9DQoJfQ0KDQp9DQoNCiR0aGlzLT5zbWFydHktPmFzc2lnbl9ieV9yZWYoJ2l0ZW1zJywgJHNob3dnYWxsZXJpZXMpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdpdGVtY291bnQnLCBjb3VudCgkc2hvd2dhbGxlcmllcykpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdnYWxsZXJ5cGF0aCcsICR0aGlzLT5MYW5nKCdnYWxsZXJ5cGF0aCcpKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbignYWN0aXZlJywgJHRoaXMtPkxhbmcoJ2FjdGl2ZScpKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbignYWN0aW9ucycsICR0aGlzLT5MYW5nKCdhY3Rpb25zJykpOw0KDQokbGluayA9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2VkaXRnYWxsZXJ5JywgMCwgJHRoZW1lT2JqZWN0LT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9uZXdvYmplY3QuZ2lmJywgJHRoaXMtPkxhbmcoJ2FkZGdhbGxlcnknKSwnJywnJywnc3lzdGVtaWNvbicpLCBhcnJheSgpLCAnJywgZmFsc2UsIGZhbHNlLCAnJykgLicgJy4gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnZWRpdGdhbGxlcnknLCAkcmV0dXJuaWQsICR0aGlzLT5MYW5nKCJhZGRnYWxsZXJ5IiksIGFycmF5KCJtb2RlIj0+ImFkZCIpLCAnJywgZmFsc2UsIGZhbHNlLCAnY2xhc3M9InBhZ2VvcHRpb25zIicpOw0KDQokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2FkZGxpbmsnLCAkbGluayk7DQoNCg0KLy8gRGlzcGxheSB0aGUgcG9wdWxhdGVkIHRlbXBsYXRlDQplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUgKCdhZG1pbmdhbGxlcmllcy50cGwnKTsNCg0KPz4=]]></data>
	</file>
	<file>
	  <filename>/function.admin_optionstab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KICAvLyBDcmVhdGVGb3JtU3RhcnQgc2V0cyB1cCBhIHByb3BlciBmb3JtIHRhZyB0aGF0IHdpbGwgY2F1c2UgdGhlIHN1Ym1pdCB0bw0KICAvLyByZXR1cm4gY29udHJvbCB0byB0aGlzIG1vZHVsZSBmb3IgcHJvY2Vzc2luZy4NCiRzbWFydHktPmFzc2lnbignc3RhcnRmb3JtJywgJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCAoJGlkLCAnZG9fdXBkYXRlb3B0aW9ucycsICRyZXR1cm5pZCkpOw0KJHNtYXJ0eS0+YXNzaWduKCdlbmRmb3JtJywgJHRoaXMtPkNyZWF0ZUZvcm1FbmQgKCkpOw0KDQokc21hcnR5LT5hc3NpZ24oJ2FsbG93ZWRfZXh0ZW5zaW9ucycsJHRoaXMtPkxhbmcoJ2FsbG93ZWRfZXh0ZW5zaW9ucycpKTsNCiRzbWFydHktPmFzc2lnbignaW5wdXRfYWxsb3dlZF9leHRlbnNpb25zJywkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwnYWxsb3dlZF9leHRlbnNpb25zJywkdGhpcy0+R2V0UHJlZmVyZW5jZSgnYWxsb3dlZF9leHRlbnNpb25zJywnJyksNTAsMjU1KSk7DQoNCiRzbWFydHktPmFzc2lnbigndXNlX2NvbW1lbnRfd3lzaXd5ZycsJHRoaXMtPkxhbmcoJ3VzZV9jb21tZW50X3d5c2l3eWcnKSk7DQokc21hcnR5LT5hc3NpZ24oJ2lucHV0X3VzZV9jb21tZW50X3d5c2l3eWcnLCAkdGhpcy0+Q3JlYXRlSW5wdXRDaGVja2JveCgkaWQsICd1c2VfY29tbWVudF93eXNpd3lnJywgJzEnLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgndXNlX2NvbW1lbnRfd3lzaXd5ZycsMSkpKTsNCg0KJHNtYXJ0eS0+YXNzaWduKCdzdWJtaXQnLCAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQgKCRpZCwgJ29wdGlvbnNzdWJtaXRidXR0b24nLCAkdGhpcy0+TGFuZygnc3VibWl0JykpKTsNCg0KLy8gRGlzcGxheSB0aGUgcG9wdWxhdGVkIHRlbXBsYXRlDQplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUgKCdhZG1pbm9wdGlvbnMudHBsJyk7DQoNCj8+]]></data>
	</file>
	<file>
	  <filename>/function.admin_templatestab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KJGZhbHNlaW1hZ2UxID0gJHRoZW1lT2JqZWN0LT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9mYWxzZS5naWYnLCdtYWtlIGRlZmF1bHQnLCcnLCcnLCdzeXN0ZW1pY29uJyk7DQokdHJ1ZWltYWdlMSA9ICR0aGVtZU9iamVjdC0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vdHJ1ZS5naWYnLCdkZWZhdWx0JywnJywnJywnc3lzdGVtaWNvbicpOw0KDQokYWxsdGVtcGxhdGVzID0gJHRoaXMtPkxpc3RUZW1wbGF0ZXMoKTsNCiRyb3dhcnJheSA9IGFycmF5KCk7DQokcm93Y2xhc3MgPSAncm93MSc7DQoNCmZvcmVhY2goICRhbGx0ZW1wbGF0ZXMgYXMgJG9uZXRlbXBsYXRlICkNCnsNCgkkdG1wID0gJG9uZXRlbXBsYXRlOw0KCSRyb3cgPSBuZXcgU3RkQ2xhc3MoKTsNCgkkcm93LT5uYW1lID0gJHRoaXMtPkNyZWF0ZUxpbmsoICRpZCwgJ2VkaXR0ZW1wbGF0ZScsICRyZXR1cm5pZCwNCgkJCQkkdG1wLCBhcnJheSgndGVtcGxhdGUnID0+ICR0bXAsICdtb2RlJz0+J2VkaXQnKSk7DQoJJHJvdy0+cm93Y2xhc3MgPSAkcm93Y2xhc3M7DQoJDQoJJGRlZmF1bHQgPSAoJHRoaXMtPkdldFByZWZlcmVuY2UoJ2N1cnJlbnRfdGVtcGxhdGUnKSA9PSAkdG1wKSA/IHRydWUgOiBmYWxzZTsNCglpZiggJGRlZmF1bHQgKQ0KCXsNCgkJJHJvdy0+ZGVmYXVsdCA9ICR0cnVlaW1hZ2UxOw0KCX0NCgllbHNlDQoJew0KCQkkcm93LT5kZWZhdWx0ID0gJHRoaXMtPkNyZWF0ZUxpbmsoICRpZCwgJ3N3aXRjaGRlZmF1bHR0ZW1wbGF0ZScsICRyZXR1cm5pZCwNCgkJCQkgICAgICAgJGZhbHNlaW1hZ2UxLA0KCQkJCSAgICAgICBhcnJheSgndGVtcGxhdGUnPT4kdG1wKSk7DQoJfQ0KDQoJJHJvdy0+ZWRpdGxpbmsgPSAkdGhpcy0+Q3JlYXRlTGluayggJGlkLCAnZWRpdHRlbXBsYXRlJywgJHJldHVybmlkLA0KCQkJCSAgICAkZ0Ntcy0+dmFyaWFibGVzWydhZG1pbnRoZW1lJ10tPg0KCQkJCSAgICBEaXNwbGF5SW1hZ2UgKCdpY29ucy9zeXN0ZW0vZWRpdC5naWYnLA0KCQkJCQkJICAkdGhpcy0+TGFuZyAoJ2VkaXQnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpLA0KCQkJCSAgICBhcnJheSAoJ3RlbXBsYXRlJyA9PiAkdG1wLCAnbW9kZSc9PidlZGl0JykpOw0KCQ0KCSRyb3ctPmNvcHlsaW5rID0gJHRoaXMtPkNyZWF0ZUxpbmsoICRpZCwgJ2VkaXR0ZW1wbGF0ZScsICRyZXR1cm5pZCwNCgkJCQkgICAgJGdDbXMtPnZhcmlhYmxlc1snYWRtaW50aGVtZSddLT4NCgkJCQkgICAgRGlzcGxheUltYWdlICgnaWNvbnMvc3lzdGVtL2NvcHkuZ2lmJywNCgkJCQkJCSAgJHRoaXMtPkxhbmcgKCdjb3B5JyksICcnLCAnJywgJ3N5c3RlbWljb24nKSwNCgkJCQkgICAgYXJyYXkgKCd0ZW1wbGF0ZScgPT4gJHRtcCwgJ21vZGUnPT4nYWRkJykpOw0KCQ0KCSR0bXAgPSAiZGVmYXVsdCI7DQoJaWYoICgkb25ldGVtcGxhdGUgPT0gJHRtcCkgfHwgJGRlZmF1bHQgKQ0KCXsNCgkJJHJvdy0+ZGVsZXRlbGluayA9ICcmbmJzcDsnOw0KCX0NCgllbHNlDQoJew0KCQkkcm93LT5kZWxldGVsaW5rID0gJHRoaXMtPkNyZWF0ZUxpbmsoICRpZCwgJ2RlbGV0ZXRlbXBsYXRlJywgJHJldHVybmlkLA0KCQkJCQkgICRnQ21zLT52YXJpYWJsZXNbJ2FkbWludGhlbWUnXS0+DQoJCQkJCSAgRGlzcGxheUltYWdlICgnaWNvbnMvc3lzdGVtL2RlbGV0ZS5naWYnLA0KCQkJCQkJCSR0aGlzLT5MYW5nICgnZGVsZXRlJyksICcnLCAnJywgJ3N5c3RlbWljb24nKSwNCgkJCQkJICBhcnJheSAoJ3RlbXBsYXRlJyA9PiAkb25ldGVtcGxhdGUpLA0KCQkJCQkgICR0aGlzLT5MYW5nICgnYXJleW91c3VyZScpKTsNCgl9DQoNCglhcnJheV9wdXNoICgkcm93YXJyYXksICRyb3cpOw0KCSgkcm93Y2xhc3MgPT0gInJvdzEiID8gJHJvd2NsYXNzID0gInJvdzIiIDogJHJvd2NsYXNzID0gInJvdzEiKTsNCn0NCg0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdpdGVtcycsICRyb3dhcnJheSApOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCduYW1lcHJvbXB0JywgJHRoaXMtPkxhbmcoJ3Byb21wdF9uYW1lJykpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdkZWZhdWx0cHJvbXB0JywgJHRoaXMtPkxhbmcoJ3Byb21wdF9kZWZhdWx0JykpOw0KDQokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ25ld3RlbXBsYXRlbGluaycsDQoJICAkdGhpcy0+Q3JlYXRlTGluayggJGlkLCAnZWRpdHRlbXBsYXRlJywgJHJldHVybmlkLA0KCQkJICAgICAkZ0Ntcy0+dmFyaWFibGVzWydhZG1pbnRoZW1lJ10tPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL25ld29iamVjdC5naWYnLCAkdGhpcy0+TGFuZygncHJvbXB0X25ld3RlbXBsYXRlJyksJycsJycsJ3N5c3RlbWljb24nKSwNCgkJCSAgICAgYXJyYXkoJ21vZGUnID0+ICdhZGQnLA0KCQkJCSAgICdkZWZhdWx0dGVtcGxhdGVwcmVmJyA9PiAnZGVmYXVsdF90ZW1wbGF0ZV9jb250ZW50cycpLA0KCQkJICAgICAnJywgZmFsc2UsIGZhbHNlLCAnJykuJyAnLg0KDQoJICAkdGhpcy0+Q3JlYXRlTGluayggJGlkLCAnZWRpdHRlbXBsYXRlJywgJHJldHVybmlkLA0KCQkJICAgICAkdGhpcy0+TGFuZygncHJvbXB0X25ld3RlbXBsYXRlJyksDQoJCQkgICAgIGFycmF5KCdtb2RlJyA9PiAnYWRkJywNCgkJCQkgICAnZGVmYXVsdHRlbXBsYXRlcHJlZicgPT4gJ2RlZmF1bHRfdGVtcGxhdGVfY29udGVudHMnDQoJCQkJICAgKSkpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCR0aGlzLT5DcmVhdGVGb3JtRW5kKCkpOw0KZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdhZG1pbnRlbXBsYXRlcy50cGwnKTsNCg0KPz4=]]></data>
	</file>
	<file>
	  <filename>/Gallery.module.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIE1vZHVsZTogR2FsbGVyeQ0KIyBWZXJzaW9uOiAxLjEsIEpvcw0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgQ01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA1IGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykNCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcNCiMgVGhlIG1vZHVsZSdzIGhvbWVwYWdlIGlzOiBodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL2dhbGxlcnkvDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIw0KIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQ0KIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQ0KIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcg0KIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLg0KIw0KIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQ0KIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQoNCmRlZmluZSgnREVGQVVMVF9HQUxMRVJZX1BBVEgnLCAidXBsb2Fkcy9pbWFnZXMvR2FsbGVyeS8iKTsNCmRlZmluZSgnREVGQVVMVF9HQUxMRVJZVEhVTUJTX1BBVEgnLCAidXBsb2Fkcy9pbWFnZXMvR2FsbGVyeVRodW1icy8iKTsNCmRlZmluZSgnSU1fUFJFRklYJywgInRodW1iXyIpOyAgIC8vICRJTUNvbmZpZ1sndGh1bWJuYWlsX3ByZWZpeCddDQpkZWZpbmUoJ1RFTVBMQVRFX1NFUEFSQVRPUicsICJ7Ki0tLS0tLS0tLS0iKTsNCg0KDQpjbGFzcyBHYWxsZXJ5IGV4dGVuZHMgQ01TTW9kdWxlDQp7DQoNCiAgZnVuY3Rpb24gR2V0TmFtZSgpDQogIHsNCiAgICByZXR1cm4gJ0dhbGxlcnknOw0KICB9DQoNCiAgZnVuY3Rpb24gR2V0RnJpZW5kbHlOYW1lKCkNCiAgew0KICAgIHJldHVybiAkdGhpcy0+TGFuZygnZnJpZW5kbHluYW1lJyk7DQogIH0NCg0KDQogIGZ1bmN0aW9uIEdldFZlcnNpb24oKQ0KICB7DQogICAgcmV0dXJuICcxLjEnOw0KICB9DQoNCiAgZnVuY3Rpb24gR2V0SGVscCgpDQogIHsNCiAgICByZXR1cm4gJHRoaXMtPkxhbmcoJ2hlbHAnKTsNCiAgfQ0KDQogIGZ1bmN0aW9uIEdldEF1dGhvcigpDQogIHsNCiAgICByZXR1cm4gJ0pvcyc7DQogIH0NCg0KICBmdW5jdGlvbiBHZXRBdXRob3JFbWFpbCgpDQogIHsNCiAgICByZXR1cm4gJ2pvc3ZkQGxpdmUubmwnOw0KICB9DQoNCiAgZnVuY3Rpb24gR2V0Q2hhbmdlTG9nKCkNCiAgew0KICAgIHJldHVybiAkdGhpcy0+TGFuZygnY2hhbmdlbG9nJyk7DQogIH0NCg0KICBmdW5jdGlvbiBJc1BsdWdpbk1vZHVsZSgpDQogIHsNCiAgICByZXR1cm4gdHJ1ZTsNCiAgfQ0KDQogIGZ1bmN0aW9uIEhhc0FkbWluKCkNCiAgew0KICAgIHJldHVybiB0cnVlOw0KICB9DQoNCiAgZnVuY3Rpb24gR2V0QWRtaW5TZWN0aW9uKCkNCiAgew0KICAgIHJldHVybiAnY29udGVudCc7DQogIH0NCg0KICBmdW5jdGlvbiBHZXRBZG1pbkRlc2NyaXB0aW9uKCkNCiAgew0KICAgIHJldHVybiAkdGhpcy0+TGFuZygnbW9kZGVzY3JpcHRpb24nKTsNCiAgfQ0KDQogIGZ1bmN0aW9uIFZpc2libGVUb0FkbWluVXNlcigpDQogIHsNCiAgICByZXR1cm4gJHRoaXMtPkNoZWNrUGVybWlzc2lvbignVXNlIEdhbGxlcnknKTsNCiAgfQ0KDQogIGZ1bmN0aW9uIEdldERlcGVuZGVuY2llcygpDQogIHsNCiAgICByZXR1cm4gYXJyYXkoKTsNCiAgfQ0KDQogIGZ1bmN0aW9uIE1pbmltdW1DTVNWZXJzaW9uKCkNCiAgew0KICAgIHJldHVybiAiMS42IjsNCiAgfQ0KDQogICAvKg0KICBmdW5jdGlvbiBNYXhpbXVtQ01TVmVyc2lvbigpDQogIHsNCiAgICByZXR1cm4gIjEuOTkiOw0KICB9DQogICovDQoNCiAgZnVuY3Rpb24gU2V0UGFyYW1ldGVycygpDQogIHsNCgkgICR0aGlzLT5SZWdpc3Rlck1vZHVsZVBsdWdpbigpOw0KDQoJICAkdGhpcy0+UmVzdHJpY3RVbmtub3duUGFyYW1zKCk7DQoNCgkgIC8vIHN5bnRheCBmb3IgY3JlYXRpbmcgYSBwYXJhbWV0ZXIgaXMgcGFyYW1ldGVyIG5hbWUsIGRlZmF1bHQgdmFsdWUsIGRlc2NyaXB0aW9uDQoJICAkdGhpcy0+Q3JlYXRlUGFyYW1ldGVyKCdkaXInLCAnc3ViMS9zdWIyJywgJHRoaXMtPkxhbmcoJ2hlbHBfZGlyJykpOw0KCSAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2RpcicsQ0xFQU5fU1RSSU5HKTsNCg0KCSAgJHRoaXMtPkNyZWF0ZVBhcmFtZXRlcigndGVtcGxhdGUnLCAnJywgJHRoaXMtPkxhbmcoJ2hlbHBfdGVtcGxhdGUnKSk7DQoJICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgndGVtcGxhdGUnLENMRUFOX1NUUklORyk7DQoNCgkgICR0aGlzLT5DcmVhdGVQYXJhbWV0ZXIoJ251bWJlcicsICcxMDAnLCAkdGhpcy0+TGFuZygnaGVscF9udW1iZXInKSk7DQoJICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnbnVtYmVyJyxDTEVBTl9JTlQpOw0KDQoJICAkdGhpcy0+Q3JlYXRlUGFyYW1ldGVyKCdzdGFydCcsICcxJywgJHRoaXMtPkxhbmcoJ2hlbHBfc3RhcnQnKSk7DQoJICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnc3RhcnQnLENMRUFOX0lOVCk7DQoNCgkgICR0aGlzLT5DcmVhdGVQYXJhbWV0ZXIoJ3Nob3cnLCAnYWxsJywgJHRoaXMtPkxhbmcoJ2hlbHBfc2hvdycpKTsNCgkgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdzaG93JyxDTEVBTl9TVFJJTkcpOw0KLyoNCgkgICR0aGlzLT5DcmVhdGVQYXJhbWV0ZXIoJ2NhdGVnb3J5JywgJycsICR0aGlzLT5MYW5nKCdoZWxwX2NhdGVnb3J5JykpOw0KCSAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2NhdGVnb3J5JyxDTEVBTl9TVFJJTkcpOw0KKi8NCgkgICR0aGlzLT5DcmVhdGVQYXJhbWV0ZXIoJ2FjdGlvbicsICdkZWZhdWx0JywgJHRoaXMtPkxhbmcoJ2hlbHBfYWN0aW9uJykpOw0KCSAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2FjdGlvbicsQ0xFQU5fU1RSSU5HKTsNCg0KCSAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2ZpZCcsQ0xFQU5fSU5UKTsNCgkgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdnaWQnLENMRUFOX0lOVCk7DQoNCgkgIC8vIFByZXR0eSB1cmwgcm91dGUgZm9yIHZpZXdpbmcgYSBnYWxsZXJ5IGluIGFsbCBpdHMgdmFyaWF0aW9ucw0KCSAgJHRoaXMtPlJlZ2lzdGVyUm91dGUoJy9nYWxsZXJ5XC8oP1A8ZGlyPi4rKVwvKD9QPHN0YXJ0PlswLTldKyktKD9QPG51bWJlcj5bMC05XSspLSg/UDxzaG93PlthLXpBLVpdKyktKD9QPHJldHVybmlkPlswLTldKykkLycsIGFycmF5KCdhY3Rpb24nPT4nZGVmYXVsdCcpKTsNCgkJJHRoaXMtPlJlZ2lzdGVyUm91dGUoJy9nYWxsZXJ5XC8oP1A8ZGlyPi4rKVwvKD9QPHN0YXJ0PlswLTldKyktKD9QPG51bWJlcj5bMC05XSspLSg/UDxyZXR1cm5pZD5bMC05XSspJC8nLCBhcnJheSgnYWN0aW9uJz0+J2RlZmF1bHQnKSk7DQoJICAkdGhpcy0+UmVnaXN0ZXJSb3V0ZSgnL2dhbGxlcnlcLyg/UDxkaXI+LispXC8oP1A8cmV0dXJuaWQ+WzAtOV0rKSQvJywgYXJyYXkoJ2FjdGlvbic9PidkZWZhdWx0JykpOw0KCQkkdGhpcy0+UmVnaXN0ZXJSb3V0ZSgnL2dhbGxlcnlcLyg/UDxzdGFydD5bMC05XSspLSg/UDxudW1iZXI+WzAtOV0rKS0oP1A8c2hvdz5bYS16QS1aXSspLSg/UDxyZXR1cm5pZD5bMC05XSspJC8nLCBhcnJheSgnYWN0aW9uJz0+J2RlZmF1bHQnKSk7DQoJCSR0aGlzLT5SZWdpc3RlclJvdXRlKCcvZ2FsbGVyeVwvKD9QPHN0YXJ0PlswLTldKyktKD9QPG51bWJlcj5bMC05XSspLSg/UDxyZXR1cm5pZD5bMC05XSspJC8nLCBhcnJheSgnYWN0aW9uJz0+J2RlZmF1bHQnKSk7DQoJCSR0aGlzLT5SZWdpc3RlclJvdXRlKCcvZ2FsbGVyeVwvKD9QPHJldHVybmlkPlswLTldKykkLycsIGFycmF5KCdhY3Rpb24nPT4nZGVmYXVsdCcpKTsNCg0KICB9DQoNCglmdW5jdGlvbiBDb250ZW50UG9zdFJlbmRlcigmJGNvbnRlbnQpIHsNCgkgICRwb3MgPSBzdHJpcG9zKCRjb250ZW50LCI8L2hlYWQiKTsNCgkgIGlmKCAkcG9zICE9PSBGQUxTRSAmJiBpc3NldCgkdGhpcy0+R2FsbGVyeU1ldGFkYXRhKSApDQoJICB7DQoJCSAgJGNvbnRlbnQgPSBzdWJzdHIoJGNvbnRlbnQsIDAsICRwb3MpIC4gJHRoaXMtPkdhbGxlcnlNZXRhZGF0YSAuIHN1YnN0cigkY29udGVudCwgJHBvcyk7DQoJCX0NCgkgIHJldHVybiAkY29udGVudDsNCgl9DQoNCiAgZnVuY3Rpb24gR2V0RXZlbnREZXNjcmlwdGlvbiAoICRldmVudG5hbWUgKQ0KICB7DQogICAgcmV0dXJuOyAvLyAkdGhpcy0+TGFuZygnZXZlbnRfaW5mb18nLiRldmVudG5hbWUgKTsNCiAgfQ0KDQogIGZ1bmN0aW9uIEdldEV2ZW50SGVscCAoICRldmVudG5hbWUgKQ0KICB7DQogICAgcmV0dXJuOyAvLyAkdGhpcy0+TGFuZygnZXZlbnRfaGVscF8nLiRldmVudG5hbWUgKTsNCiAgfQ0KDQogIGZ1bmN0aW9uIEluc3RhbGxQb3N0TWVzc2FnZSgpDQogIHsNCiAgICByZXR1cm4gJHRoaXMtPkxhbmcoJ3Bvc3RpbnN0YWxsJyk7DQogIH0NCg0KICBmdW5jdGlvbiBVbmluc3RhbGxQb3N0TWVzc2FnZSgpDQogIHsNCiAgICByZXR1cm4gJHRoaXMtPkxhbmcoJ3Bvc3R1bmluc3RhbGwnKTsNCiAgfQ0KDQogIGZ1bmN0aW9uIFVuaW5zdGFsbFByZU1lc3NhZ2UoKQ0KICB7DQogICAgcmV0dXJuICR0aGlzLT5MYW5nKCdyZWFsbHlfdW5pbnN0YWxsJyk7DQogIH0NCg0KDQoJLyoqDQoJICogU2VhcmNoIG1ldGhvZHMNCgkgKi8NCg0KCWZ1bmN0aW9uIFNlYXJjaFJlc3VsdCgkcmV0dXJuaWQsICRnaWQsICRhdHRyID0gJycpDQoJew0KCQkkcmVzdWx0ID0gYXJyYXkoKTsNCg0KCQlpZiAoJGF0dHIgPT0gJ2dhbGxlcnknKQ0KCQl7DQoJCQkkZ2FsbGVyeWluZm8gPSAkdGhpcy0+X0dldGdhbGxlcnlpbmZvYnlpZCgkZ2lkKTsNCgkJCWlmICggJGdhbGxlcnlpbmZvICYmICRnYWxsZXJ5aW5mb1snYWN0aXZlJ10gKQ0KCQkJew0KCQkJCS8vMCBwb3NpdGlvbiBpcyB0aGUgcHJlZml4IGRpc3BsYXllZCBpbiB0aGUgbGlzdCByZXN1bHRzLg0KCQkJCSRyZXN1bHRbMF0gPSAkdGhpcy0+R2V0RnJpZW5kbHlOYW1lKCk7DQoNCgkJCQkvLzEgcG9zaXRpb24gaXMgdGhlIHRpdGxlDQoJCQkJJHJlc3VsdFsxXSA9IGVtcHR5KCRnYWxsZXJ5aW5mb1sndGl0bGUnXSkgPyB0cmltKCRnYWxsZXJ5aW5mb1snZmlsZW5hbWUnXSwiLyIpIDogJGdhbGxlcnlpbmZvWyd0aXRsZSddOw0KDQoJCQkJLy8yIHBvc2l0aW9uIGlzIHRoZSBVUkwgdG8gdGhlIHRpdGxlLg0KCQkJCSRnZGlyID0gJGdpZCA9PSAxID8gJycgOiBzdHJfcmVwbGFjZSgnJTJGJywnLycscmF3dXJsZW5jb2RlKChlbXB0eSgkZ2FsbGVyeWluZm9bJ2ZpbGVwYXRoJ10pID8gJycgOiAkZ2FsbGVyeWluZm9bJ2ZpbGVwYXRoJ10gLiAnLycpIC4gJGdhbGxlcnlpbmZvWydmaWxlbmFtZSddKSk7DQoJCQkJJHByZXR0eXVybCA9ICdnYWxsZXJ5LycgLiAkZ2RpciAuICRyZXR1cm5pZDsNCgkJCQkkcmVzdWx0WzJdID0gJHRoaXMtPkNyZWF0ZUxpbmsoJ2NudG50MDEnLCAnZGVmYXVsdCcsICRyZXR1cm5pZCwgJycsIGFycmF5KCdkaXInID0+IHRyaW0oJGdkaXIsJy8nKSkgLCcnLCB0cnVlLCBmYWxzZSwgJycsIHRydWUsICRwcmV0dHl1cmwpOw0KCQkJfQ0KCQl9DQoJCXJldHVybiAkcmVzdWx0Ow0KCX0NCg0KDQoJZnVuY3Rpb24gU2VhcmNoUmVpbmRleCgmJG1vZHVsZSkNCgl7DQoJCSRnYWxsZXJpZXMgPSAkdGhpcy0+X0dldEdhbGxlcmllcygpOw0KCQkNCgkJZm9yZWFjaCAoJGdhbGxlcmllcyBhcyAkZ2lkPT4kZ2FsbGVyeSkgDQoJCXsNCgkJCSRnYWxsZXJ5aW5mbyA9ICR0aGlzLT5fR2V0Z2FsbGVyeWluZm9ieWlkKCRnaWQpOw0KCQkJaWYgKCAkZ2FsbGVyeWluZm9bJ2FjdGl2ZSddICkNCgkJCXsNCgkJCQkkc2VhcmNod29yZHMgPSAkZ2FsbGVyeVsndGl0bGUnXSAuICcgJyAuICRnYWxsZXJ5Wydjb21tZW50J107DQoJCQkJJGRiID0mICR0aGlzLT5HZXREQigpOw0KCQkJCSRxdWVyeSA9ICJTRUxFQ1QgdGl0bGUsIGNvbW1lbnQgDQoJCQkJCQkJCQlGUk9NICIgLiBjbXNfZGJfcHJlZml4KCkgLiAibW9kdWxlX2dhbGxlcnkgZzENCgkJCQkJCQkJCVdIRVJFIGdhbGxlcnlpZD0/IjsNCgkJCQkkcmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGdpZCkpOw0KCQkJCWlmICggJHJlc3VsdCAmJiAkcmVzdWx0LT5SZWNvcmRDb3VudCgpID4gMCApDQoJCQkJew0KCQkJCQl3aGlsZSAoICRyb3c9JHJlc3VsdC0+RmV0Y2hSb3coKSApDQoJCQkJCXsNCgkJCQkJCSRzZWFyY2h3b3JkcyAuPSAnICcgLiAkcm93Wyd0aXRsZSddIC4gJyAnIC4gJHJvd1snY29tbWVudCddOw0KCQkJCQl9DQoJCQkJfQ0KCQkJCWlmICggISRyZXN1bHQgKQ0KCQkJCXsNCgkJCQkJZWNobyAnRVJST1I6ICcgLiBteXNxbF9lcnJvcigpOw0KCQkJCQlleGl0KCk7DQoJCQkJfQ0KCQkJCSRtb2R1bGUtPkFkZFdvcmRzKCR0aGlzLT5HZXROYW1lKCksICRnaWQsICdnYWxsZXJ5Jywkc2VhcmNod29yZHMpOw0KCQkJfQ0KCQl9DQoJfQ0KDQoJDQoJZnVuY3Rpb24gR2V0SGVhZGVySFRNTCgpDQoJew0KCQkkdG1wbCA9IDw8PEVPVA0KPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iLi4vbW9kdWxlcy9HYWxsZXJ5L3RlbXBsYXRlcy9qcXVlcnkvanF1ZXJ5LnRyZWVUYWJsZS5jc3MiIG1lZGlhPSJzY3JlZW4iIC8+DQp7bGl0ZXJhbH0NCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4NCmlmICh0eXBlb2YgalF1ZXJ5ID09ICd1bmRlZmluZWQnKSB7DQogICAgdmFyIGZpbGVyZWYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKQ0KICAgIGZpbGVyZWYuc2V0QXR0cmlidXRlKCJ0eXBlIiwidGV4dC9qYXZhc2NyaXB0IikNCiAgICBmaWxlcmVmLnNldEF0dHJpYnV0ZSgic3JjIiwgIi4uL21vZHVsZXMvR2FsbGVyeS90ZW1wbGF0ZXMvanF1ZXJ5L2pxdWVyeS5qcyIpDQogICAgaWYgKHR5cGVvZiBmaWxlcmVmIT0idW5kZWZpbmVkIikNCiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImhlYWQiKVswXS5hcHBlbmRDaGlsZChmaWxlcmVmKQ0KfQ0KPC9zY3JpcHQ+DQo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIuLi9tb2R1bGVzL0dhbGxlcnkvdGVtcGxhdGVzL2pxdWVyeS9qcXVlcnkudGFibGVkbmQuanMiPjwvc2NyaXB0Pg0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iLi4vbW9kdWxlcy9HYWxsZXJ5L3RlbXBsYXRlcy9qcXVlcnkvanF1ZXJ5LnRyZWVUYWJsZS5qcyI+PC9zY3JpcHQ+DQo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+DQokKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpIHsNCgkkKCIjZ3RyZWUiKS50cmVlVGFibGUoKTsNCgkkKCcjZ3RyZWUgdHIuaW5pdGlhbGl6ZWQ6b2RkJykuYWRkQ2xhc3MoJ3JvdzEnKTsNCgkkKCcjZ3RyZWUgdHIuaW5pdGlhbGl6ZWQ6ZXZlbicpLmFkZENsYXNzKCdyb3cyJyk7DQoJJCgnI2d0YWJsZSB0ciwgI2d0cmVlIHRyJykuaG92ZXIoZnVuY3Rpb24oKXsNCgkJJCh0aGlzKS5zdG9wKCkuYWRkQ2xhc3MoJ3JvdzFob3ZlcicpOw0KCX0sIGZ1bmN0aW9uKCl7DQoJCSQodGhpcykuc3RvcCgpLnJlbW92ZUNsYXNzKCdyb3cxaG92ZXInKTsNCgl9KTsNCgkkKCcjZ3RhYmxlJykudGFibGVEbkQoew0KCQlvbkRyYWdTdGFydDogZnVuY3Rpb24odGFibGUscm93KSB7DQoJCQkkKCcjZ3RhYmxlIHRyJykucmVtb3ZlQ2xhc3MoKTsNCgkJfSwNCgkJb25EcmFnQ2xhc3M6ICJyb3cxaG92ZXIiLA0KCQlvbkRyb3A6IGZ1bmN0aW9uKHRhYmxlLCByb3cpIHsNCgkJCSQoJyNndGFibGUgdHI6b2RkJykuYWRkQ2xhc3MoJ3JvdzEnKTsNCgkJCSQoJyNndGFibGUgdHI6ZXZlbicpLmFkZENsYXNzKCdyb3cyJyk7DQoJCQl2YXIgcm93cyA9IHRhYmxlLnRCb2RpZXNbMF0ucm93czsNCgkJCXZhciBzb3J0c3RyID0gcm93c1swXS5pZDsNCgkJCWZvciAodmFyIGk9MTsgaTxyb3dzLmxlbmd0aDsgaSsrKSB7DQoJCQkJc29ydHN0ciArPSAiLCIrcm93c1tpXS5pZDsNCgkJCX0NCgkJCSQoJyNzb3J0JykudmFsKHNvcnRzdHIpOw0KCQl9DQoJfSk7DQoNCgkkKCdhI2FkZGZpZWxkJykuY2xpY2soZnVuY3Rpb24oKSB7DQoJCXZhciBodG1sU3RyID0gJCgnLnNvcnRmaWVsZCcpLmh0bWwoKTsNCgkJCQlodG1sU3RyID0gaHRtbFN0ci5yZXBsYWNlKC8gc2VsZWN0ZWQ9InNlbGVjdGVkIi9nLCAnJyk7DQoJCSQoJzxwIGNsYXNzPSJzb3J0ZmllbGQiPicgKyBodG1sU3RyICsgJzwvcD4nKS5hcHBlbmRUbygnI3NvcnRmaWVsZHMnKTsNCgkJcmV0dXJuIGZhbHNlOw0KCX0pOw0KCSQoJ2EjZGVsZXRlZmllbGQnKS5jbGljayhmdW5jdGlvbigpIHsNCgkJaWYoJCgnLnNvcnRmaWVsZCcpLnNpemUoKSA+IDEpIHsNCgkJCSQoJy5zb3J0ZmllbGQ6bGFzdCcpLnJlbW92ZSgpOw0KCQl9DQoJCXJldHVybiBmYWxzZTsNCgl9KTsNCn0pOw0KPC9zY3JpcHQ+DQp7L2xpdGVyYWx9DQpFT1Q7DQoJCXJldHVybiAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlRnJvbURhdGEoJHRtcGwpOw0KCX0NCg0KDQogIC8qKg0KICAgKiBHYWxsZXJ5IG1ldGhvZHMNCiAgICovDQoNCglmdW5jdGlvbiBfR2V0ZGlyZmlsZXMoJHBhdGgsJHJlY3Vyc2l2ZSkNCgl7DQoJCSRwYXRoID0gZW1wdHkoJHBhdGgpID8gJycgOiB0cmltKCRwYXRoLCIvIikgLiAnLyc7DQoJCSR1cGRpciA9IGlzX2RpcihERUZBVUxUX0dBTExFUllfUEFUSCAuICRwYXRoKSA/ICcnIDogJy4uLyc7DQoJCSRhbGxvd2V4dCA9IGV4cGxvZGUoJywnLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnYWxsb3dlZF9leHRlbnNpb25zJywnJykpOw0KCQkkb3V0cHV0ID0gYXJyYXkoKTsNCgkJaWYgKCAkaGFuZGxlID0gb3BlbmRpcihzdHJfcmVwbGFjZSgnLycsRElSRUNUT1JZX1NFUEFSQVRPUiwkdXBkaXIgLiBERUZBVUxUX0dBTExFUllfUEFUSCAuICRwYXRoKSkgKQ0KCQl7DQoJCQl3aGlsZSAoIGZhbHNlICE9PSAoJGZpbGUgPSByZWFkZGlyKCRoYW5kbGUpKSApDQoJCQl7DQoJCQkJJGV4dCA9IHN1YnN0cigkZmlsZSwgc3RycnBvcygkZmlsZSwgJy4nKSArIDEpOw0KCQkJCWlmICggJGZpbGUgIT0gIi4iICYmICRmaWxlICE9ICIuLiIgJiYgc3Vic3RyKCRmaWxlLDAsc3RybGVuKElNX1BSRUZJWCkpICE9IElNX1BSRUZJWCAmJiAoaW5fYXJyYXkoc3RydG9sb3dlcigkZXh0KSwkYWxsb3dleHQpIHx8IGlzX2RpcigkdXBkaXIgLiBERUZBVUxUX0dBTExFUllfUEFUSCAuICRwYXRoIC4gJGZpbGUpKSApDQoJCQkJew0KCQkJCQkkb3V0cHV0WyRwYXRoIC4gJGZpbGVdID0gYXJyYXkoDQoJCQkJCQknZmlsZW5hbWUnID0+IGlzX2RpcigkdXBkaXIgLiBERUZBVUxUX0dBTExFUllfUEFUSCAuICRwYXRoIC4gJGZpbGUpID8gJGZpbGUgLiAnLycgOiAkZmlsZSwNCgkJCQkJCSdmaWxlcGF0aCcgPT4gdHJpbSgkcGF0aCwiLyIpLA0KCQkJCQkJJ2ZpbGVtZGF0ZScgPT4gZGF0ZSgiWS1tLWQgSDppOnMiLCBmaWxlbXRpbWUoJHVwZGlyIC4gREVGQVVMVF9HQUxMRVJZX1BBVEggLiAkcGF0aCAuICRmaWxlKSksDQoJCQkJCSk7DQoJCQkJCWlmICggJHJlY3Vyc2l2ZSAmJiBpc19kaXIoJHVwZGlyIC4gREVGQVVMVF9HQUxMRVJZX1BBVEggLiAkcGF0aCAuICRmaWxlKSApDQoJCQkJCXsNCgkJCQkJCSRvdXRwdXQgPSBhcnJheV9tZXJnZSgkb3V0cHV0LCR0aGlzLT5fR2V0ZGlyZmlsZXMoJHBhdGggLiAkZmlsZSwkcmVjdXJzaXZlKSk7DQoJCQkJCX0NCgkJCQl9DQoJCQl9DQoJCQljbG9zZWRpcigkaGFuZGxlKTsNCgkJfQ0KCQlyZXR1cm4gJG91dHB1dDsNCgl9DQoNCg0KCWZ1bmN0aW9uIF9HZXRnYWxsZXJ5ZmlsZXMoJHBhdGgpDQoJew0KCQkkcGF0aCA9IHRyaW0oJHBhdGgsIi8iKTsNCgkJJG91dHB1dCA9IGFycmF5KCk7DQoJCSRkYiA9JiAkdGhpcy0+R2V0REIoKTsNCgkJJHF1ZXJ5ID0gIlNFTEVDVA0KCQkJCQkJCQlnMS4qLCBDT05DQVQoZzIuZmlsZXBhdGgsPyxnMi5maWxlbmFtZSkgQVMgdGh1bWINCgkJCQkJCQlGUk9NDQoJCQkJCQkJCSIgLiBjbXNfZGJfcHJlZml4KCkgLiAibW9kdWxlX2dhbGxlcnkgZzENCgkJCQkJCQlMRUZUIEpPSU4NCgkJCQkJCQkJIiAuIGNtc19kYl9wcmVmaXgoKSAuICJtb2R1bGVfZ2FsbGVyeSBnMg0KCQkJCQkJCU9ODQoJCQkJCQkJCWcxLmRlZmF1bHRmaWxlID0gZzIuZmlsZWlkDQoJCQkJCQkJV0hFUkUNCgkJCQkJCQkJZzEuZmlsZXBhdGg9PyI7DQoJCSRyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgnLycuSU1fUFJFRklYLCRwYXRoKSk7DQoJCWlmICggJHJlc3VsdCAmJiAkcmVzdWx0LT5SZWNvcmRDb3VudCgpID4gMCApDQoJCXsNCgkJICB3aGlsZSAoICRyb3c9JHJlc3VsdC0+RmV0Y2hSb3coKSApDQoJCSAgew0KCQkgICAgJG91dHB1dFt0cmltKCRyb3dbJ2ZpbGVwYXRoJ10gLiAnLycgLiAkcm93WydmaWxlbmFtZSddLCcvJyldID0gJHJvdzsNCgkJICB9DQoJCX0NCgkJaWYgKCAhJHJlc3VsdCApDQoJCXsNCgkJCWVjaG8gJ0VSUk9SOiAnIC4gbXlzcWxfZXJyb3IoKTsNCgkJCWV4aXQoKTsNCgkJfQ0KCQlyZXR1cm4gJG91dHB1dDsNCgl9DQoNCg0KCWZ1bmN0aW9uIF9HZXRHYWxsZXJpZXMoKQ0KCXsNCgkJJG91dHB1dCA9IGFycmF5KCk7DQoJCSRkYiA9JiAkdGhpcy0+R2V0REIoKTsNCgkJJHF1ZXJ5ID0gIlNFTEVDVA0KCQkJCQkJCQlnMS4qLCBDT05DQVQoZzIuZmlsZXBhdGgsPyxnMi5maWxlbmFtZSkgQVMgdGh1bWINCgkJCQkJCQlGUk9NDQoJCQkJCQkJCSIgLiBjbXNfZGJfcHJlZml4KCkgLiAibW9kdWxlX2dhbGxlcnkgZzENCgkJCQkJCQlMRUZUIEpPSU4NCgkJCQkJCQkJIiAuIGNtc19kYl9wcmVmaXgoKSAuICJtb2R1bGVfZ2FsbGVyeSBnMg0KCQkJCQkJCU9ODQoJCQkJCQkJCWcxLmRlZmF1bHRmaWxlID0gZzIuZmlsZWlkDQoJCQkJCQkJV0hFUkUNCgkJCQkJCQkJZzEuZmlsZW5hbWUgTElLRSAnJS8nDQoJCQkJCQkJT1JERVIgQlkNCgkJCQkJCQkJSUYoZzEuZmlsZWlkPTEsMCwxKSBBU0MsDQoJCQkJCQkJCUNPTkNBVChnMS5maWxlcGF0aCxDQVNUKElGKGcxLmZpbGVwYXRoPScnLCcnLCcvJykgQVMgQklOQVJZKSxnMS5maWxlbmFtZSkgQVNDIjsNCgkJJHJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCcvJy5JTV9QUkVGSVgpKTsNCgkJaWYgKCAkcmVzdWx0ICYmICRyZXN1bHQtPlJlY29yZENvdW50KCkgPiAwICkNCgkJew0KCQkgIHdoaWxlICggJHJvdz0kcmVzdWx0LT5GZXRjaFJvdygpICkNCgkJICB7DQoJCSAgICAkb3V0cHV0WyRyb3dbJ2ZpbGVpZCddXSA9ICRyb3c7DQoJCSAgfQ0KCQl9DQoJCWlmICggISRyZXN1bHQgKQ0KCQl7DQoJCQllY2hvICdFUlJPUjogJyAuIG15c3FsX2Vycm9yKCk7DQoJCQlleGl0KCk7DQoJCX0NCgkJcmV0dXJuICRvdXRwdXQ7DQoJfQ0KDQoNCglmdW5jdGlvbiBfR2V0Z2FsbGVyeWluZm8oJHBhdGgpDQoJew0KCQkkcGF0aCA9IHRyaW0oJHBhdGgsIi8iKTsNCgkJaWYoIHN0cnBvcygkcGF0aCwiLyIpID09PSBGQUxTRSApDQoJCXsNCgkJCSRmaWxlbmFtZSA9IGVtcHR5KCRwYXRoKSA/ICAnR2FsbGVyeS8nIDogJHBhdGggLiAnLyc7DQoJCQkkZmlsZXBhdGggPSAnJzsNCg0KCQl9DQoJCWVsc2UNCgkJew0KCQkJJGZpbGVuYW1lID0gc3Vic3RyKCRwYXRoLCBzdHJycG9zKCRwYXRoLCAnLycpICsgMSkgLiAnLyc7DQoJCQkkZmlsZXBhdGggPSBzdWJzdHIoJHBhdGgsIDAsIHN0cnJwb3MoJHBhdGgsICcvJykpOw0KCQl9DQoJCSRkYiA9JiAkdGhpcy0+R2V0REIoKTsNCgkJJHF1ZXJ5ID0gIlNFTEVDVCBnLiosIGdwLmhpZGVwYXJlbnRsaW5rLCBndC50ZW1wbGF0ZWlkLCBndC50ZW1wbGF0ZSwgZ3QudGh1bWJ3aWR0aCwgZ3QudGh1bWJoZWlnaHQsIGd0LnJlc2l6ZW1ldGhvZCwgZ3QubWF4bnVtYmVyLCBndC5zb3J0aXRlbXMNCgkJCQlGUk9NICIgLiBjbXNfZGJfcHJlZml4KCkgLiAibW9kdWxlX2dhbGxlcnkgZw0KCQkJCUxFRlQgSk9JTiAiIC4gY21zX2RiX3ByZWZpeCgpIC4gIm1vZHVsZV9nYWxsZXJ5X3Byb3BzIGdwDQoJCQkJT04gZy5maWxlaWQ9Z3AuZmlsZWlkDQoJCQkJTEVGVCBKT0lOICIgLiBjbXNfZGJfcHJlZml4KCkgLiAibW9kdWxlX2dhbGxlcnlfdGVtcGxhdGVwcm9wcyBndA0KCQkJCU9OIGdwLnRlbXBsYXRlaWQ9Z3QudGVtcGxhdGVpZA0KCQkJCVdIRVJFIGcuZmlsZW5hbWU9PyBBTkQgZy5maWxlcGF0aD0/IjsNCgkJJHJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRmaWxlbmFtZSwgJGZpbGVwYXRoKSk7DQoNCgkJaWYoICRyZXN1bHQgJiYgJHJlc3VsdC0+UmVjb3JkQ291bnQoKSA+IDAgKQ0KCQl7DQoJCQkkb3V0cHV0ID0gJHJlc3VsdC0+RmV0Y2hSb3coKTsNCgkJfQ0KCQlpZiAoICEkcmVzdWx0ICkNCgkJew0KCQkJZWNobyAnRVJST1I6ICcgLiBteXNxbF9lcnJvcigpOw0KCQkJZXhpdCgpOw0KCQl9DQoJCXJldHVybiBpc3NldCgkb3V0cHV0KSA/ICRvdXRwdXQgOiBGQUxTRTsNCgl9DQoNCg0KCWZ1bmN0aW9uIF9HZXRnYWxsZXJ5aW5mb2J5aWQoJGdpZCkNCgl7DQoJCSRkYiA9JiAkdGhpcy0+R2V0REIoKTsNCgkJJHF1ZXJ5ID0gIlNFTEVDVCBnLiosIGdwLmhpZGVwYXJlbnRsaW5rLCBndC50ZW1wbGF0ZWlkLCBndC50ZW1wbGF0ZSwgZ3QudGh1bWJ3aWR0aCwgZ3QudGh1bWJoZWlnaHQsIGd0LnJlc2l6ZW1ldGhvZCwgZ3QubWF4bnVtYmVyLCBndC5zb3J0aXRlbXMNCgkJCQlGUk9NICIgLiBjbXNfZGJfcHJlZml4KCkgLiAibW9kdWxlX2dhbGxlcnkgZw0KCQkJCUxFRlQgSk9JTiAiIC4gY21zX2RiX3ByZWZpeCgpIC4gIm1vZHVsZV9nYWxsZXJ5X3Byb3BzIGdwDQoJCQkJT04gZy5maWxlaWQ9Z3AuZmlsZWlkDQoJCQkJTEVGVCBKT0lOICIgLiBjbXNfZGJfcHJlZml4KCkgLiAibW9kdWxlX2dhbGxlcnlfdGVtcGxhdGVwcm9wcyBndA0KCQkJCU9OIGdwLnRlbXBsYXRlaWQ9Z3QudGVtcGxhdGVpZA0KCQkJCVdIRVJFIGcuZmlsZWlkPT8iOw0KCQkkcmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGdpZCkpOw0KCQlpZiggJHJlc3VsdCAmJiAkcmVzdWx0LT5SZWNvcmRDb3VudCgpID4gMCApDQoJCXsNCgkJCSRvdXRwdXQgPSAkcmVzdWx0LT5GZXRjaFJvdygpOw0KCQl9DQoJCWlmICggISRyZXN1bHQgKQ0KCQl7DQoJCQllY2hvICdFUlJPUjogJyAuIG15c3FsX2Vycm9yKCk7DQoJCQlleGl0KCk7DQoJCX0NCgkJcmV0dXJuIGlzc2V0KCRvdXRwdXQpID8gJG91dHB1dCA6IEZBTFNFOw0KCX0NCg0KDQoJZnVuY3Rpb24gX0FkZEZpbGVUb0RCKCRmaWxlbmFtZSwkZmlsZXBhdGgsJGZpbGVtZGF0ZSwkZ2lkKQ0KCXsNCgkJJGRiID0mICR0aGlzLT5HZXREQigpOw0KCQkkaW5zZXJ0aWQgPSAwOw0KCQkkcXVlcnkgPSAiSU5TRVJUIElOVE8gIiAuIGNtc19kYl9wcmVmaXgoKSAuICJtb2R1bGVfZ2FsbGVyeSAoZmlsZW5hbWUsIGZpbGVwYXRoLCBmaWxlZGF0ZSwgZmlsZW9yZGVyLCBhY3RpdmUsIGRlZmF1bHRmaWxlLCBnYWxsZXJ5aWQsIHRpdGxlLCBjb21tZW50KSBWQUxVRVMgKD8sPyw/LDAsMSwwLD8sJycsJycpIjsNCgkJJHJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRmaWxlbmFtZSwgJGZpbGVwYXRoLCAkZmlsZW1kYXRlLCAkZ2lkKSk7DQoJCWlmICggJHJlc3VsdCApDQoJCXsNCgkJCSRpbnNlcnRpZCA9ICRkYi0+SW5zZXJ0X0lEKCk7DQoJCQlpZiAoIHN1YnN0cigkZmlsZW5hbWUsLTEpID09ICcvJyApDQoJCQl7DQoJCQkJJHF1ZXJ5ID0gIklOU0VSVCBJTlRPICIgLiBjbXNfZGJfcHJlZml4KCkgLiAibW9kdWxlX2dhbGxlcnlfcHJvcHMgKGZpbGVpZCx0ZW1wbGF0ZWlkLGhpZGVwYXJlbnRsaW5rKSBWQUxVRVMgKD8sPyw/KSI7DQoJCQkJJHJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRpbnNlcnRpZCwwLDApKTsNCgkJCQlpZiAoICEkcmVzdWx0ICkNCgkJCQl7DQoJCQkJCWVjaG8gJ0Vycm9yOiAnIC4gbXlzcWxfZXJyb3IoKTsNCgkJCQkJZXhpdCgpOw0KCQkJCX0NCgkJCX0NCgkJfQ0KCQllbHNlDQoJCXsNCgkJCWVjaG8gJ0Vycm9yOiAnIC4gbXlzcWxfZXJyb3IoKTsNCgkJCWVjaG8gIjxiciAvPjxiciAvPiIgLiAkcXVlcnk7DQoJCQlleGl0KCk7DQoJCX0NCgkJcmV0dXJuICRpbnNlcnRpZDsNCgl9DQoNCg0KCWZ1bmN0aW9uIF9VcGRhdGVHYWxsZXJ5REIoJHBhdGgsJGdpZCkNCgl7DQoJCSRwYXRoID0gdHJpbSgkcGF0aCwiLyIpOw0KCQkkZmlsZV9nYWxsZXJ5ID0gJHRoaXMtPl9HZXRkaXJmaWxlcygkcGF0aCxmYWxzZSk7DQoJCSRkYl9nYWxsZXJ5ID0gJHRoaXMtPl9HZXRnYWxsZXJ5ZmlsZXMoJHBhdGgpOw0KDQoJCWlmICggJGZpbGVfZ2FsbGVyeSApDQoJCXsNCgkJCS8vIGFkZCB0byBEQjoNCgkJCSRnYWxsZXJ5X2FkZCA9IGVtcHR5KCRkYl9nYWxsZXJ5KSA/ICRmaWxlX2dhbGxlcnkgOiBhcnJheV9kaWZmX2Fzc29jKCRmaWxlX2dhbGxlcnksJGRiX2dhbGxlcnkpOw0KCQkJZm9yZWFjaCgkZ2FsbGVyeV9hZGQgYXMgJGtleT0+JGl0ZW0pDQoJCQl7DQoJCQkJJGZpbGVpZCA9ICR0aGlzLT5fQWRkRmlsZVRvREIoJGl0ZW1bJ2ZpbGVuYW1lJ10sJGl0ZW1bJ2ZpbGVwYXRoJ10sJGl0ZW1bJ2ZpbGVtZGF0ZSddLCRnaWQpOw0KCQkJfQ0KCQl9DQoJCWlmICggJGRiX2dhbGxlcnkgKQ0KCQl7DQoJCQkvLyBkZWxldGUgZnJvbSBEQjoNCgkJCSRnYWxsZXJ5X2RlbCA9IGVtcHR5KCRmaWxlX2dhbGxlcnkpID8gJGRiX2dhbGxlcnkgOiBhcnJheV9kaWZmX2Fzc29jKCRkYl9nYWxsZXJ5LCRmaWxlX2dhbGxlcnkpOw0KCQkJZm9yZWFjaCgkZ2FsbGVyeV9kZWwgYXMgJGtleT0+JGl0ZW0pDQoJCQl7DQoJCQkJLy8gbWFrZSBzdXJlIHRoYXQgdGhlIHJvb3QgZ2FsbGVyeSBhbmQgb3RoZXIgZGlyZWN0b3JpZXMgYXJlIG5vdCBkZWxldGVkIGhlcmUNCgkJCQlpZiAoICRpdGVtWydmaWxlaWQnXSAhPSAxICYmIHN1YnN0cigkaXRlbVsnZmlsZW5hbWUnXSwtMSkgIT0gIi8iICApICRkZWxldGVfaWRzW10gPSAkaXRlbVsnZmlsZWlkJ107DQoJCQl9DQoJCQlpZiAoIGlzc2V0KCRkZWxldGVfaWRzKSApDQoJCQl7DQoJCQkJJHF1ZXJ5ID0gaW1wbG9kZSgiJywnIiwkZGVsZXRlX2lkcyk7DQoJCQkJJHF1ZXJ5ID0gIkRFTEVURSBGUk9NICIgLiBjbXNfZGJfcHJlZml4KCkgLiAibW9kdWxlX2dhbGxlcnkgV0hFUkUgZmlsZWlkIElOKCciIC4gJHF1ZXJ5IC4gIicpIjsNCgkJCQkkZGIgPSYgJHRoaXMtPkdldERCKCk7DQoJCQkJJHJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkpOw0KCQkJCWlmICggISRyZXN1bHQgKQ0KCQkJCXsNCgkJCQkJZWNobyAnRXJyb3I6ICcgLiBteXNxbF9lcnJvcigpOw0KCQkJCQlleGl0KCk7DQoJCQkJfQ0KCQkJfQ0KCQl9DQoJCXJldHVybiBUUlVFOw0KCX0NCg0KCWZ1bmN0aW9uIF9EZWxldGVHYWxsZXJ5REIoJHBhdGgsJGdpZCkNCgl7DQoJCSRwYXRoID0gdHJpbSgkcGF0aCwiLyIpOw0KCQkkcXVlcnkgPSAiREVMRVRFIEZST00gIiAuIGNtc19kYl9wcmVmaXgoKSAuICJtb2R1bGVfZ2FsbGVyeSBXSEVSRQ0KCQkJZmlsZWlkIDw+IDEgQU5EDQoJCQkoZmlsZWlkID0gPyBPUiBmaWxlcGF0aCA9ID8gT1IgZmlsZXBhdGggbGlrZSA/KSI7DQoJCSRkYiA9JiAkdGhpcy0+R2V0REIoKTsNCgkJJHJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRnaWQsICRwYXRoLCAkcGF0aCAuICcvJScpKTsNCgkJaWYgKCAhJHJlc3VsdCApDQoJCXsNCgkJCWVjaG8gJ0Vycm9yOiAnIC4gbXlzcWxfZXJyb3IoKTsNCgkJCWV4aXQoKTsNCgkJfQ0KCX0NCg0KDQoJZnVuY3Rpb24gX0dldFRlbXBsYXRlcHJvcHMoJHRlbXBsYXRlKQ0KCXsNCgkJJGRiID0mICR0aGlzLT5HZXREQigpOw0KCQkkcXVlcnkgPSAiU0VMRUNUICoNCgkJCQlGUk9NICIgLiBjbXNfZGJfcHJlZml4KCkgLiAibW9kdWxlX2dhbGxlcnlfdGVtcGxhdGVwcm9wcw0KCQkJCVdIRVJFIHRlbXBsYXRlPT8iOw0KCQkkcmVzdWx0ID0mICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCR0ZW1wbGF0ZSkpOw0KDQoJCWlmKCAkcmVzdWx0ICYmICRyZXN1bHQtPlJlY29yZENvdW50KCkgPiAwICkNCgkJew0KCQkJJG91dHB1dCA9ICRyZXN1bHQtPkZldGNoUm93KCk7DQoJCX0NCgkJaWYgKCAhJHJlc3VsdCApDQoJCXsNCgkJCWVjaG8gJ0VSUk9SOiAnIC4gbXlzcWxfZXJyb3IoKTsNCgkJCWV4aXQoKTsNCgkJfQ0KCQlyZXR1cm4gaXNzZXQoJG91dHB1dCkgPyAkb3V0cHV0IDogRkFMU0U7DQoJfQ0KDQoNCglmdW5jdGlvbiBfQXJyYXlTb3J0KCRhcnJheSwgJGFyZ3VtZW50cyA9IGFycmF5KCksICRrZXlzID0gdHJ1ZSkNCgl7DQoJCS8vIHNvdXJjZTogIGh0dHA6Ly9ubDIucGhwLm5ldC9tYW51YWwvZW4vZnVuY3Rpb24udWFzb3J0LnBocCM0MjcyMw0KDQoJCS8vIGNvbXBhcmluZyBmdW5jdGlvbiBjb2RlDQoJCSRjb2RlID0gIlwkcmVzdWx0PTA7ICI7DQoNCgkJLy8gZm9yZWFjaCBzb3J0aW5nIGFyZ3VtZW50IChhcnJheSBrZXkpDQoJCWZvcmVhY2ggKCRhcmd1bWVudHMgYXMgJGFyZ3VtZW50KQ0KCQl7DQoJCQkvLyBvcmRlciBmaWVsZA0KCQkJJGZpZWxkID0gc3Vic3RyKCRhcmd1bWVudCwgMiwgc3RybGVuKCRhcmd1bWVudCkpOw0KDQoJCQkvLyBzb3J0IHR5cGUgKCJzIiAtPiBzdHJpbmcsICJuIiAtPiBudW1lcmljKQ0KCQkJJHR5cGUgPSAkYXJndW1lbnRbMF07DQoNCgkJCS8vIHNvcnQgb3JkZXIgKCIrIiAtPiAiQVNDIiwgIi0iIC0+ICJERVNDIikNCgkJCSRvcmRlciA9ICRhcmd1bWVudFsxXTsNCg0KCQkJLy8gYWRkICJpZiIgc3RhdGVtZW50LCB3aGljaCBjaGVja3MgaWYgdGhpcyBhcmd1bWVudCBzaG91bGQgYmUgdXNlZA0KCQkJJGNvZGUgLj0gImlmICghSXNfTnVtZXJpYyhcJHJlc3VsdCkgfHwgXCRyZXN1bHQgPT0gMCkgIjsNCg0KCQkJLy8gaWYgIm51bWVyaWMiIHNvcnQgdHlwZQ0KCQkJaWYgKHN0cnRvbG93ZXIoJHR5cGUpID09ICJuIikNCgkJCXsNCgkJCQkkY29kZSAuPSAkb3JkZXIgPT0gIi0iID8gIlwkcmVzdWx0ID0gKFwkYS0+eyRmaWVsZH0gPiBcJGItPnskZmllbGR9ID8gLTEgOiAoXCRhLT57JGZpZWxkfSA8IFwkYi0+eyRmaWVsZH0gPyAxIDogMCkpOyIgOiAiXCRyZXN1bHQgPSAoXCRhLT57JGZpZWxkfSA+IFwkYi0+eyRmaWVsZH0gPyAxIDogKFwkYS0+eyRmaWVsZH0gPCBcJGItPnskZmllbGR9ID8gLTEgOiAwKSk7ICI7DQoJCQl9DQoJCQllbHNlDQoJCQl7DQoJCQkJLy8gaWYgInN0cmluZyIgc29ydCB0eXBlDQoJCQkJJGNvZGUgLj0gJG9yZGVyID09ICItIiA/ICJcJHJlc3VsdCA9IHN0cmNvbGwoXCRhLT57JGZpZWxkfSwgXCRiLT57JGZpZWxkfSkgKiAtMTsiIDogIlwkcmVzdWx0ID0gc3RyY29sbChcJGEtPnskZmllbGR9LCBcJGItPnskZmllbGR9KTsgIjsNCgkJCX0NCgkJfQ0KCQkvLyByZXR1cm4gcmVzdWx0DQoJCSRjb2RlIC49ICJyZXR1cm4gXCRyZXN1bHQ7IjsNCg0KCQkvLyBjcmVhdGUgY29tcGFyaW5nIGZ1bmN0aW9uDQoJCSRjb21wYXJlID0gY3JlYXRlX2Z1bmN0aW9uKCckYSwgJGInLCAkY29kZSk7DQoNCgkJLy8gc29ydCBhcnJheSBhbmQgcHJlc2VydmUga2V5cw0KCQl1YXNvcnQoJGFycmF5LCAkY29tcGFyZSk7DQoJCQ0KCQkvLyByZXR1cm4gYXJyYXkNCgkJcmV0dXJuICRhcnJheTsNCgl9DQoNCg0KCWZ1bmN0aW9uIF9DcmVhdGVUaHVtYm5haWwoJHRodW1ibmFtZSwgJGltYWdlLCAkdGh1bWJ3aWR0aCwgJHRodW1iaGVpZ2h0LCAkbWV0aG9kKQ0KCXsNCgkJJHpvb20gPSAuMzA7IC8vIHpvb20gcGVyY2VudGFnZQ0KCQkkaW1nZGF0YSA9IGdldGltYWdlc2l6ZSgkaW1hZ2UpOw0KCQkkaW1ncmF0aW8gPSAkaW1nZGF0YVswXSAvICRpbWdkYXRhWzFdOyAgLy8gd2lkdGgvaGVpZ2h0DQoJCSR0aHVtYnJhdGlvID0gJHRodW1id2lkdGggLyAkdGh1bWJoZWlnaHQ7DQoJCXN3aXRjaCgkbWV0aG9kKSB7DQoJCQljYXNlICJzYyI6IC8vIHNjYWxlDQoJCQljYXNlICJ6cyI6IC8vIHpvb20gJiBzY2FsZQ0KCQkJCSRzcmNfeCA9IDA7DQoJCQkJJHNyY195ID0gMDsNCgkJCQkkc3JjX3cgPSAkaW1nZGF0YVswXTsNCgkJCQkkc3JjX2ggPSAkaW1nZGF0YVsxXTsNCgkJCQlpZiggJGltZ3JhdGlvID4gJHRodW1icmF0aW8gKQ0KCQkJCXsNCgkJCQkJJG5ld3dpZHRoID0gJHRodW1id2lkdGg7DQoJCQkJCSRuZXdoZWlnaHQgPSBjZWlsKCR0aHVtYndpZHRoIC8gJGltZ3JhdGlvKTsNCgkJCQl9DQoJCQkJZWxzZQ0KCQkJCXsNCgkJCQkJJG5ld2hlaWdodCA9ICR0aHVtYmhlaWdodDsNCgkJCQkJJG5ld3dpZHRoID0gY2VpbCgkdGh1bWJoZWlnaHQgKiAkaW1ncmF0aW8pOw0KCQkJCX0NCgkJCQlicmVhazsNCg0KCQkJY2FzZSAiY3IiOiAvLyBjcm9wDQoJCQljYXNlICJ6YyI6IC8vIHpvb20gJiBjcm9wDQoJCQkJJG5ld3dpZHRoID0gJHRodW1id2lkdGg7DQoJCQkJJG5ld2hlaWdodCA9ICR0aHVtYmhlaWdodDsNCgkJCQlpZiggJGltZ3JhdGlvID4gJHRodW1icmF0aW8gKQ0KCQkJCXsNCgkJCQkJJHNyY194ID0gY2VpbCgoJGltZ2RhdGFbMF0gLSAkaW1nZGF0YVsxXSAqICR0aHVtYnJhdGlvKSAvIDIpOw0KCQkJCQkkc3JjX3kgPSAwOw0KCQkJCQkkc3JjX3cgPSAkaW1nZGF0YVswXSAtICRzcmNfeCAqIDI7DQoJCQkJCSRzcmNfaCA9ICRpbWdkYXRhWzFdOw0KCQkJCX0NCgkJCQllbHNlDQoJCQkJew0KCQkJCQkkc3JjX3ggPSAwOw0KCQkJCQkkc3JjX3kgPSBjZWlsKCgkaW1nZGF0YVsxXSAtICRpbWdkYXRhWzBdIC8gJHRodW1icmF0aW8pIC8gMyk7DQoJCQkJCSRzcmNfdyA9ICRpbWdkYXRhWzBdOw0KCQkJCQkkc3JjX2ggPSAkaW1nZGF0YVsxXSAtICRzcmNfeSAqIDM7DQoJCQkJfQ0KCQkJCWJyZWFrOw0KCQl9DQoJCWlmICggJG1ldGhvZCA9PSAienMiIHx8ICRtZXRob2QgPT0gInpjIiApDQoJCXsNCgkJCSRzcmNfeCA9ICRzcmNfeCArIGNlaWwoJHpvb20gLyAyICogJHNyY193KTsNCgkJCSRzcmNfeSA9ICRzcmNfeSArIGNlaWwoJHpvb20gLyAzICogJHNyY19oKTsNCgkJCSRzcmNfdyA9IGNlaWwoJHNyY193ICogKDEtJHpvb20pKTsNCgkJCSRzcmNfaCA9IGNlaWwoJHNyY19oICogKDEtJHpvb20pKTsNCgkJfQ0KCQlpZiAoIGZpbGVfZXhpc3RzKCR0aHVtYm5hbWUpICkNCgkJew0KCQkJJHRodW1iZGF0YSA9IGdldGltYWdlc2l6ZSgkdGh1bWJuYW1lKTsNCgkJfQ0KCQlpZiAoICFpc3NldCgkdGh1bWJkYXRhKSB8fCAkdGh1bWJkYXRhWzBdICE9ICRuZXd3aWR0aCB8fCAkdGh1bWJkYXRhWzFdICE9ICRuZXdoZWlnaHQgKQ0KCQl7DQoJCQkkbmV3aW1hZ2UgPSBpbWFnZWNyZWF0ZXRydWVjb2xvcigkbmV3d2lkdGgsJG5ld2hlaWdodCk7DQoJCQlzd2l0Y2goJGltZ2RhdGFbJ21pbWUnXSkgew0KCQkJCWNhc2UgImltYWdlL2dpZiI6DQoJCQkJCSRzb3VyY2UgPSBpbWFnZWNyZWF0ZWZyb21naWYoJGltYWdlKTsNCgkJCQkJYnJlYWs7DQoJCQkJY2FzZSAiaW1hZ2UvcGpwZWciOg0KCQkJCWNhc2UgImltYWdlL2pwZWciOg0KCQkJCWNhc2UgImltYWdlL2pwZyI6DQoJCQkJCSRzb3VyY2UgPSBpbWFnZWNyZWF0ZWZyb21qcGVnKCRpbWFnZSk7DQoJCQkJCWJyZWFrOw0KCQkJCWNhc2UgImltYWdlL3BuZyI6DQoJCQkJY2FzZSAiaW1hZ2UveC1wbmciOg0KCQkJCQkkc291cmNlID0gaW1hZ2VjcmVhdGVmcm9tcG5nKCRpbWFnZSk7DQoJCQkJCWJyZWFrOw0KCQkJCX0NCgkJCWltYWdlY29weXJlc2FtcGxlZCgkbmV3aW1hZ2UsJHNvdXJjZSwwLDAsJHNyY194LCRzcmNfeSwkbmV3d2lkdGgsJG5ld2hlaWdodCwkc3JjX3csJHNyY19oKTsNCgkJCXN3aXRjaCgkaW1nZGF0YVsnbWltZSddKSB7DQoJCQkJY2FzZSAiaW1hZ2UvZ2lmIjoNCgkJCQkJCWltYWdlZ2lmKCRuZXdpbWFnZSwkdGh1bWJuYW1lKTsNCgkJCQkJYnJlYWs7DQoJCQkJY2FzZSAiaW1hZ2UvcGpwZWciOg0KCQkJCWNhc2UgImltYWdlL2pwZWciOg0KCQkJCWNhc2UgImltYWdlL2pwZyI6DQoJCQkJCQlpbWFnZWpwZWcoJG5ld2ltYWdlLCR0aHVtYm5hbWUsODApOw0KCQkJCQlicmVhazsNCgkJCQljYXNlICJpbWFnZS9wbmciOg0KCQkJCWNhc2UgImltYWdlL3gtcG5nIjoNCgkJCQkJaW1hZ2VwbmcoJG5ld2ltYWdlLCR0aHVtYm5hbWUpOw0KCQkJCQlicmVhazsNCgkJCQl9DQoJCQlpbWFnZWRlc3Ryb3koJG5ld2ltYWdlKTsNCgkJCWNobW9kKCR0aHVtYm5hbWUsIDA3NzcpOw0KCQl9DQoJCXJldHVybiAkdGh1bWJuYW1lOw0KCX0NCg0KfQ0KDQo/Pg==]]></data>
	</file>
	<file>
	  <filename>/images/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/images/folder.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/images/folder.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/images/foldersmall.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/images/fpaint.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhEAAQAPcAAOlqa00zNGxRUzwiJUkvMnVaXz4kLWZMVzMYKUowQHdde3BfdaysxnFxfLa2x6amr1xwkenz92JrYnyOdIGUcPL08IuabImWaLzNceXxaNXbT/D3bvb4Tvb7U8/RS/7/qP7/yPz9yf//AICAAFZWAC4uAP//Dv//Gv3+Jf//PPz8S9DQQv//U///Vv//Xv//ZOjoXP//bv//cP7/cf3+cf//dv//ev//iP//lv//mf//muvrmP//qejomv//q///rv//w///xdbWpbe3kf//y+Xlxf//5P//8dvb2NvWQKmfRZWNTpiNS//YNpWHSF5EAPewNe6vQ7ePW/eUFtm+nti+n9KTTtq+nteykdvBqOXTw9mvjNaxkWFHNN27ocu5q9+zk8d+VG5fVlxCNk81LzcdGDgeGUYsJ1E3MlU7NlpAO19FQGJIQ25UT3ZcV3ddWB8EACIHA/lXPSoQDDYbFzYcGEEnI0QqJkcsKE81MWFGQmZMSGpQTHBWUnJYVHheWnpgXPA+KioQDUkvLdpdVT4kJP///+vr68zMzG5ubmZmZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAAEAAQAAAI+AANaQFDEIyXgwgPahHoBUqUhxAjRvGixUuUGC9+vKjhw0USJmKWeIiyJUuUFyyIsJARRIUTK2GkKInCxeQPIiKI6DBRYQEAOU0kRMFiEqVKlhwuEAo0ZUKUKiZryNAhw0YOGhosQKCAIQoVkzyAmCiy44SRGR0iZNgQ5YrJFimOBBBg5AQOEChCfGh7JcqNHgcGGCigY8iYJzB08I0iRAEcNmQEMWhQCMGIFYv3wOHTps8aOIkOIUJAgi+BQWra0DnzJo0ZRYccdClx5cqcNID42KmDxg+eMm6QPEhwRQuf43z83Imj50+eBNATLNRSu3rtL9ixLwwIADs=]]></data>
	</file>
	<file>
	  <filename>/images/icon.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/images/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBkdW1teSBpbmRleC5odG1sIC0tPgo=]]></data>
	</file>
	<file>
	  <filename>/images/next.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/images/pageno.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAADIAAABPCAYAAACpg5auAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAZJSURBVHja7FldSBxXFD6zO/un9bekBpT6LxTqJu2DCqkgpYS2ClISEBVbSJ78IdoXUR9KoSFI81Dsk2+hDylBzIMN1BppMEhB8yClRWQrqboG7BpaS101u/Nze87snXE1G13rurOmc+Vwx7tzZ893/u7O+QR4fggodhQHiohi42tmD4aioEgoMorK1wylowcp7ULJQMlESeeAUgEIgQih/MNli69pYATGIqAEQSAQbpRXm5qaznV0dLQVFhaex8/pHtOBoH6k6LOxsbHbPT099/D6D5RN7h0GHAgp6kEpyMvLe9fn8/3M9g1FUUwRFf+ix/b2dnBoaOgG6lpJRtcjRuSAac7wer0Vo6OjX5WXl3tpcX39KTycnobfHz+GnZ0dzYdCkqNMFO2QdzYPaqqqobLyTfB4POmdnZ29pMrAwMC3W1tb5JGgwL2R5nQ6X5+YmPiirq7uEj1gZmYGbt36BsGsg91uBxtFnhCVXckIJ4oZjBhZlsHpcsH7Fy9CW1sriA4HhMPh0PDw8Ofd3d23yeY6kOyqqqq3pqamviPE8/PzcP36DboZXPgAPY+Snhe7CQIYZrCzvQOXL1+Cjz9p05aXl5d/LS4ubsbLFSO0VFV1oeVF2nDnzghgLIInLQ1wHUKhkDZjwplSdJ0uJ9hsNnC6XfD9+DhceOcClJaW0JqHV1m7DkRARe2UTH6/HxYXFzVXkvIErLq6GrznvBheyQcSCATg/uQkRoekhfhmMAizjx5pQEg3fuYZyb5nYwhDiixAQHJycuDatS5IQ++YNTY3N2H8hwlKdO3/ddQRYhyAe08dRKmiUF7Q7HG7sXKIpp4hWVlZml6kE0PjkoEPBQK8UjACxDeZlez6oKpF+jCuSyx9YppaVRU+x0YfDTgZBYC+R+H5qihxegRPUrwxgvowbySziumeeJFOtuc3cDG8o0IqjF3dYxtWjLWDoVeYKuwmmMk5oh8D6lFzhDZR2ERcSXlgtjcixj2o+NhibYq2QCTxhZTwiC5xeUSrEJETE8ueYlQwsz2iG1YHExcQrW5rs2Jcm+0R0kOXWAXoECByTPRmAJEkyRDS61Ag+qZUAkI6HNkjVKV0xDQTqOS+Th0cWqRPnDmiGjdKksyrxCn0CIWUHlqKIvMzxfyqpYf5kYFEPBI7sZIfWsqeRI8z2Zlxskc2pUJoMZ4fR0p2cp9kJDuFl9nnCOkgy2GcJT7L8YUWAYkkfSRPDvq5HtWpPNEORCSsInKEk13RfoaRK0kcDoep7yT6CxWJJCnxhRa9H1OeSFKY946WYGRkBBoaGg70yEmBWllZgfHxca2DQl4JhcKQnv7Ki4HwJjF4vV44cyYXVlefaM05cmV7ezv09fUlva9FRqJWLfXYKCrIuIxRe6pqX+drF4jidDplEUdubi5cuXIV+vv7NcXJEpT01Drd74FkDGpLkVB4BYNBqKmpgfr6eu0zt9tNPS2qTIremcyqqKio8vv9PmrSoRVYc3Mz42gZ4mNoEU3oOlmifycC0fQoKipic3NzRmd+enr6Lq6Xo6TpFiZepHBwcLAXrS/TTeFwmN28+SUrKytj6C3tYckWCneMCJadnc1aW1uYz+czQBD10djY+CHq/RqKQ+AtHXIRZVDB0NBQa1dXVy8+iNY0dy4sLMDGxoYpnRMMHygpKYGCggJjfXFx8Zfa2tpPA4HAb/jvnyjPdCACzxei3M4imI+wSjXn5+eXQgoNLLvS7OzsREtLy9dra2tLuPQXgaCPoqk3HQw1ebMpb/i1CKnBIdLhoXOIf/M5zNd3OcQoMDauvBNSk9UNc1GiX5QEs39H/ZcRK0/FGDedSp5d3Afi1PLs4j4QFs9u8eyHDItnt3j2Eyy6CeHZt8IKnH+7Gt6oNIdnf7oegIcPJsGuHJNnz8jMgasdXZp3zBpbwU346cdj8uzuFODZMzITwLOzFODZFYtnt3j2kwSyp/sTR2i9rDw7e2l4dpYCPDuzePbU4tlZInh21eLZE3iyWzx7FM+uWjx7YqvW8Xl2xXyenSWCZ1csnj2RQCyefZdnl1FEk3l2NRE8++rKEty7OwLvfWAOz/7EvwIP7ieAZ1fRlf3d7TD4mcWzH2tYPLvFs59Qjvz/ePboIwFOM8++/3yDU8qz/yvAAD8aUfA7Gd9yAAAAAElFTkSuQmCC]]></data>
	</file>
	<file>
	  <filename>/images/previous.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/images/uppage.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></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[PD9waHANCiRsYW5nWydmcmllbmRseW5hbWUnXSA9ICdHYWxsZXJ5JzsNCiRsYW5nWydtb2RkZXNjcmlwdGlvbiddID0gJ1RoZSBlYXNpZXN0IHdheSB0byBtYW5hZ2UgYW5kIGRpc3BsYXkgcGhvdG8gZ2FsbGVyaWVzJzsNCiRsYW5nWydkZXNjcmlwdGlvbiddID0gJ0FuIGVhc3kgdG8gdXNlIGdhbGxlcnkgd2hpY2ggYXV0b21hdGljYWxseSBzaG93cyB0aGUgaW1hZ2VzIG9mIGEgc3BlY2lmaWVkIGRpcmVjdG9yeS4nOw0KJGxhbmdbJ3Bvc3RpbnN0YWxsJ10gPSAnVGhlIEdhbGxlcnkgbW9kdWxlIHdhcyBzdWNjZXNzZnVsbHkgaW5zdGFsbGVkLic7DQokbGFuZ1snaW5zdGFsbGVkJ10gPSAnVGhlIEdhbGxlcnkgbW9kdWxlIHZlcnNpb24gJXMgd2FzIGluc3RhbGxlZC4nOw0KJGxhbmdbJ3VwZ3JhZGVkJ10gPSAnVGhlIEdhbGxlcnkgbW9kdWxlIGlzIHVwZ3JhZGVkIHRvIHZlcnNpb24gJXMuJzsNCiRsYW5nWydwb3N0dW5pbnN0YWxsJ10gPSAnVGhlIEdhbGxlcnkgIG1vZHVsZSB3YXMgdW5pbnN0YWxsZWQnOw0KJGxhbmdbJ3VuaW5zdGFsbGVkJ10gPSAnVGhlIEdhbGxlcnkgbW9kdWxlIHdhcyB1bmluc3RhbGxlZCc7DQokbGFuZ1sncmVhbGx5X3VuaW5zdGFsbCddID0gJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byB1bmluc3RhbGwgR2FsbGVyeT8gVGhpcyBkb2VzIG5vdCBlZmZlY3QgdGhlIGltYWdlcywgYnV0IGFsbCBjb21tZW50LWRhdGEgYW5kIHRodW1ibmFpbHMgdGhhdCB3ZXJlIGNyZWF0ZWQgYnkgR2FsbGVyeSB3aWxsIGJlIGxvc3QuJzsNCg0KDQokbGFuZ1snYWNjZXNzZGVuaWVkJ10gPSAnQWNjZXNzIERlbmllZC4gUGxlYXNlIGNoZWNrIHlvdXIgcGVybWlzc2lvbnMuJzsNCiRsYW5nWydhY3Rpb25zJ10gPSAnQWN0aW9ucyc7DQokbGFuZ1snYWN0aXZlJ10gPSAnQWN0aXZlJzsNCiRsYW5nWydhcHBseSddID0gJ0FwcGx5JzsNCiRsYW5nWydhcmV5b3VzdXJlJ10gPSAnQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZT8nOw0KJGxhbmdbJ2NhbmNlbCddID0gJ0NhbmNlbCc7DQokbGFuZ1snY29weSddID0gJ0NvcHknOw0KJGxhbmdbJ2RlZmF1bHQnXSA9ICdEZWZhdWx0JzsNCiRsYW5nWydkZWxldGUnXSA9ICdEZWxldGUnOw0KJGxhbmdbJ2VkaXQnXSA9ICdFZGl0JzsNCiRsYW5nWydlcnJvciddID0gJ0Vycm9yISc7DQokbGFuZ1snc2V0ZmFsc2UnXT0gJ1NldCBGYWxzZSc7DQokbGFuZ1snc2V0dHJ1ZSddPSAnU2V0IFRydWUnOw0KJGxhbmdbJ3N1Ym1pdCddID0gJ1NhdmUnOw0KDQoNCiRsYW5nWydnYWxsZXJpZXMnXSA9ICdHYWxsZXJpZXMnOw0KJGxhbmdbJ2dhbGxlcnlwYXRoJ10gPSAnR2FsbGVyeSc7DQokbGFuZ1snZWRpdGdhbGxlcnknXSA9ICdFZGl0IGdhbGxlcnknOw0KJGxhbmdbJ2FkZGdhbGxlcnknXSA9ICdBZGQgZ2FsbGVyeSc7DQokbGFuZ1snbm9nYWxsZXJpZXN0ZXh0J10gPSAnTm8gZ2FsbGVyaWVzIGF2YWlsYWJsZSc7DQokbGFuZ1snaXRlbSddID0gJ0ltYWdlJzsNCiRsYW5nWyd0aXRsZSddID0gJ1RpdGxlJzsNCiRsYW5nWydkYXRlJ10gPSAnRGF0ZSc7DQokbGFuZ1snbm9maWxlc3RleHQnXSA9ICdObyBpbWFnZXMgYXZhaWxhYmxlJzsNCiRsYW5nWydnYWxsZXJ5dGl0bGUnXSA9ICdHYWxsZXJ5IFRpdGxlJzsNCiRsYW5nWydjb21tZW50J10gPSAnQ29tbWVudCc7DQokbGFuZ1sndGVtcGxhdGUnXSA9ICdUZW1wbGF0ZSc7DQokbGFuZ1snaGlkZXBhcmVudGxpbmsnXSA9ICdIaWRlIGxpbmsgdG8gcGFyZW50IGdhbGxlcnknOw0KJGxhbmdbJ3VzZWRlZmF1bHQnXSA9ICd1c2UgZGVmYXVsdCc7DQovLyRsYW5nWydjcmVhdGV0aHVtYnMnXSA9ICcoUmUpQ3JlYXRlIFRodW1icyc7DQovLyRsYW5nWyd0aHVtYnNjcmVhdGVkJ10gPSAnVGh1bWJuYWlscyBjcmVhdGVkJzsNCiRsYW5nWydzb3J0YnlzZXR0aW5ncyddID0gJ1NvcnQgYnkgdGVtcGxhdGUgc2V0dGluZ3MnOw0KJGxhbmdbJ2dhbGxlcnl1cGRhdGVkJ10gPSAnVGhlIGdhbGxlcnkgd2FzIHN1Y2Nlc3NmdWxseSB1cGRhdGVkLic7DQokbGFuZ1snZXJyb3JfdXBkYXRlZ2FsbGVyeWZhaWxlZCddID0gJ1VwZGF0aW5nIHRoZSBnYWxsZXJ5IGZhaWxlZC4nOw0KDQoNCiRsYW5nWyd0ZW1wbGF0ZXMnXSA9ICdUZW1wbGF0ZXMnOw0KJGxhbmdbJ3RpdGxlX2F2YWlsYWJsZV90ZW1wbGF0ZXMnXSA9ICdBdmFpbGFibGUgVGVtcGxhdGVzJzsNCiRsYW5nWydwcm9tcHRfbmFtZSddID0gJ05hbWUnOw0KJGxhbmdbJ3Byb21wdF9kZWZhdWx0J10gPSAnRGVmYXVsdCc7DQokbGFuZ1sncHJvbXB0X25ld3RlbXBsYXRlJ10gPSAnQ3JlYXRlIGEgbmV3IHRlbXBsYXRlJzsNCiRsYW5nWyd0aXRsZV90ZW1wbGF0ZSddID0gJ1RlbXBsYXRlIEVkaXRvcic7DQokbGFuZ1sncHJvbXB0X3RlbXBsYXRlbmFtZSddID0gJ1RlbXBsYXRlIE5hbWUnOw0KJGxhbmdbJ3RodW1ibmFpbHNpemUnXSA9ICdUaHVtYm5haWwgU2l6ZSAoRnJvbnRlbmQpJzsNCiRsYW5nWydsZWF2ZWVtcHR5J10gPSAnKGxlYXZlIHRoaXMgZW1wdHkgdG8gdXNlIHRoZSBkZWZhdWx0IHRodW1ibmFpbHMgZnJvbSBJbWFnZU1hbmFnZXIpJzsNCiRsYW5nWyd3aWR0aCddID0gJ3dpZHRoJzsNCiRsYW5nWydoZWlnaHQnXSA9ICdoZWlnaHQnOw0KJGxhbmdbJ3Jlc2l6ZW1ldGhvZCddID0gJ3Jlc2l6ZSBtZXRob2QnOw0KJGxhbmdbJ2Nyb3AnXSA9ICdjcm9wJzsNCiRsYW5nWydzY2FsZSddID0gJ3NjYWxlJzsNCiRsYW5nWyd6b29tY3JvcCddID0gJ3pvb20gJmFtcDsgY3JvcCc7DQokbGFuZ1snem9vbXNjYWxlJ10gPSAnem9vbSAmYW1wOyBzY2FsZSc7DQokbGFuZ1snbWF4bnVtYmVyJ10gPSAnTWF4aW11bSBudW1iZXIgb2YgaXRlbXMgcGVyIHBhZ2UnOw0KJGxhbmdbJ3Nob3dhbGxpbWFnZXMnXSA9ICdMZWF2aW5nIGVtcHR5IHdpbGwgc2hvdyBhbGwgaW1hZ2VzIHdpdGhvdXQgcGFnZWxpbmtzJzsNCiRsYW5nWydzb3J0aW5nb3B0aW9ucyddID0gJ1NvcnRpbmcgT3B0aW9ucyc7DQokbGFuZ1snc3BlY2lmeXNvcnRmaWVsZHMnXSA9ICdTcGVjaWZ5IHRoZSBmaWVsZChzKSB0byBzb3J0IG9uJzsNCiRsYW5nWydhc2NlbmRpbmcnXSA9ICdhc2NlbmRpbmcnOw0KJGxhbmdbJ2Rlc2NlbmRpbmcnXSA9ICdkZXNjZW5kaW5nJzsNCiRsYW5nWydhZGRmaWVsZCddID0gJ0FkZCBmaWVsZCc7DQokbGFuZ1snZGVsZXRlZmllbGQnXSA9ICdEZWxldGUgbGFzdCByb3cnOw0KJGxhbmdbJ3Byb21wdF90ZW1wbGF0ZSddID0gJ1RlbXBsYXRlIFNvdXJjZSc7DQokbGFuZ1sncHJvbXB0X3RlbXBsYXRlanMnXSA9ICdUZW1wbGF0ZSBKYXZhU2NyaXB0JzsNCiRsYW5nWydwcm9tcHRfdGVtcGxhdGVjc3MnXSA9ICdUZW1wbGF0ZSBDU1Mtc3R5bGVzaGVldCc7DQokbGFuZ1sncmVzZXRvcmlnaW5hbCddID0gJ1Jlc2V0IHRvIG9yaWdpbmFsJzsNCiRsYW5nWydyZXNldG9yaWdpbmFsd2FybmluZyddID0gJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byByZXNldCB0aGUgdGVtcGxhdGUgY29kZSB0byBpdHMgb3JpZ2luYWwgY29kZT8nOw0KJGxhbmdbJ3RlbXBsYXRldXBkYXRlZCddID0gJ1RoZSB0ZW1wbGF0ZSB3YXMgc3VjY2Vzc2Z1bGx5IHVwZGF0ZWQuJzsNCiRsYW5nWyd0ZW1wbGF0ZWFkZGVkJ10gPSAnVGhlIHRlbXBsYXRlIHdhcyBzdWNjZXNzZnVsbHkgYWRkZWQuJzsNCiRsYW5nWydlcnJvcl90ZW1wbGF0ZW5hbWVleGlzdHMnXSA9ICdUaGUgdGVtcGxhdGUgbmFtZSBhbHJlYWR5IGV4aXN0cy4nOw0KJGxhbmdbJ3RlbXBsYXRlZGVsZXRlZCddID0gJ1RlbXBsYXRlIGRlbGV0ZWQnOw0KJGxhbmdbJ2F2YWlsYWJsZXZhcmlhYmxlcyddID0gJ0F2YWlsYWJsZSBUZW1wbGF0ZSBTbWFydHkgVmFyaWFibGVzJzsNCiRsYW5nWydhdmFpbGFibGV2YXJpYWJsZXNsaXN0J10gPSAnVGhlc2UgYXJlIHRoZSB2YXJpYWJsZXMgeW91IGNhbiB1c2UgdG8gY3VzdG9taXplIHlvdXIgdGVtcGxhdGU6PGJyIC8+PGJyIC8+DQo8Y29kZT57JG1vZHVsZV9tZXNzYWdlfTwvY29kZT4gLSBlcnJvciBtZXNzYWdlLCBpcyBvbmx5IHNldCBpZiB0aGVyZVwncyBhIG1lc3NhZ2U8YnIgLz4NCjxjb2RlPnskZ2FsbGVyeXRpdGxlfTwvY29kZT4gLSB0aXRsZSBvZiB0aGUgZ2FsbGVyeS4gSWYgdGhlcmUgaXMgbm8gdGl0bGUsIHRoaXMgd2lsbCBzaG93IHRoZSBkaXJlY3RvcnkgbmFtZTxiciAvPg0KPGNvZGU+eyRnYWxsZXJ5Y29tbWVudH08L2NvZGU+IC0gY29tbWVudCBvZiB0aGUgZ2FsbGVyeTxiciAvPg0KPGNvZGU+eyRwYXJlbnRsaW5rfTwvY29kZT4gLSBsaW5rIHRvIHRoZSBwYXJlbnQgZm9sZGVyPGJyIC8+DQo8Y29kZT57JGhpZGVwYXJlbnRsaW5rfTwvY29kZT4gLSB0cnVlL2ZhbHNlPGJyIC8+DQo8Y29kZT57JGltYWdlY291bnR9PC9jb2RlPiAtIHNob3dzIGUuZy4gIjYgaW1hZ2VzIiwgZGVwZW5kaW5nIG9uIGxhbmd1YWdlPGJyIC8+DQo8Y29kZT57JGl0ZW1jb3VudH08L2NvZGU+IC0gbnVtYmVyIG9mIGl0ZW1zLCBpbWFnZXMgKyBmb2xkZXJzPGJyIC8+DQo8Y29kZT57JHBhZ2VzfTwvY29kZT4gLSBudW1iZXIgb2YgcGFnZXM8YnIgLz4NCjxjb2RlPnskcHJldnBhZ2V9PC9jb2RlPiAtIGxpbmsgdG8gcHJldmlvdXMgcGFnZSwgaWYgYXBwbGljYWJsZTxiciAvPg0KPGNvZGU+eyRuZXh0cGFnZX08L2NvZGU+IC0gbGluayB0byBuZXh0IHBhZ2UsIGlmIGFwcGxpY2FibGU8YnIgLz4NCjxjb2RlPnskcGFnZWxpbmtzfTwvY29kZT4gLSBsaW5rcyB0byBlYWNoIGV4aXN0aW5nIHBhZ2U8YnIgLz4NCjxjb2RlPnskaW1hZ2VzfTwvY29kZT4gLSBhcnJheSB3aXRoIGtleXM6PGJyIC8+DQogLSA8Y29kZT5maWxlPC9jb2RlPiAtIHJlbGF0aXZlIHBhdGggdG8gdGhlIG9yaWdpbmFsIGltYWdlIChvciBzdWJnYWxsZXJ5KTxiciAvPg0KIC0gPGNvZGU+dGl0bGU8L2NvZGU+IC0gdGl0bGUgb2YgdGhlIGltYWdlLiBJZiB0aGVyZSBpcyBubyB0aXRsZSwgdGhpcyB3aWxsIHNob3cgdGhlIGZpbGVuYW1lPGJyIC8+DQogLSA8Y29kZT5jb21tZW50PC9jb2RlPiAtIGNvbW1lbnQgdG8gdGhlIGltYWdlPGJyIC8+DQogLSA8Y29kZT5maWxlZGF0ZTwvY29kZT4gLSBjcmVhdGlvbiBkYXRlL3RpbWU8YnIgLz4NCiAtIDxjb2RlPnRodW1iPC9jb2RlPiAtIHJlbGF0aXZlIHBhdGggdG8gdGhlIHRodW1ibmFpbC4gSW4gY2FzZSBvZiBhIHN1YmdhbGxlcnksIHRoaXMgd2lsIHJldmVydCB0byB0aGUgaW1hZ2Ugd2hpY2ggaXMgc2V0IGFzIGRlZmF1bHQgaW4gdGhhdCBzdWJnYWxsZXJ5LiBJZiBubyBpbWFnZSBpcyBzZXQgYXMgZGVmYXVsdCwgYSBzdGFuZGFyZCBmb2xkZXItaWNvbiB3aWxsIGJlIHVzZWQuPGJyIC8+DQogLSA8Y29kZT5maWxlaWQ8L2NvZGU+IC0gdW5pcXVlIGlkIGZvciB0aGUgaW1hZ2Ugb3Igc3ViZ2FsbGVyeTxiciAvPg0KIC0gPGNvZGU+aXNkaXI8L2NvZGU+IC0gdHJ1ZSBpZiBpdFwncyBhIHN1YmdhbGxlcnk8YnIgLz4NCic7DQoNCg0KJGxhbmdbJ29wdGlvbnMnXSA9ICdPcHRpb25zJzsNCiRsYW5nWydhbGxvd2VkX2V4dGVuc2lvbnMnXSA9ICdBbGxvd2VkIEV4dGVuc2lvbnMnOw0KJGxhbmdbJ3VzZV9jb21tZW50X3d5c2l3eWcnXSA9ICdVc2UgYSBXWVNJV1lHIGVkaXRvciBvbiB0aGUgR2FsbGVyeSBjb21tZW50IGZpZWxkJzsNCiRsYW5nWydvcHRpb25zdXBkYXRlZCddID0gJ1RoZSBvcHRpb25zIHdlcmUgc3VjY2Vzc2Z1bGx5IHVwZGF0ZWQuJzsNCg0KDQokbGFuZ1snaW1hZ2UnXSA9ICdpbWFnZSc7DQokbGFuZ1snaW1hZ2VzJ10gPSAnaW1hZ2VzJzsNCiRsYW5nWydwcmV2cGFnZSddID0gJ3ByZXZpb3VzJzsNCiRsYW5nWyduZXh0cGFnZSddID0gJ25leHQnOw0KJGxhbmdbJ2RlZmF1bHRnYWxsZXJ5Y29tbWVudCddID0gJ1RoYW5rIHlvdSBmb3IgaW5zdGFsbGluZyB0aGUgR2FsbGVyeSBtb2R1bGUuIElmIHlvdSBoYXZlIHVwbG9hZGVkIHNvbWUgaW1hZ2VzIHRvIHRoZSBcJ3VwbG9hZHMvaW1hZ2VzL0dhbGxlcnlcJyBmb2xkZXIsIHlvdSB3aWxsIHNlZSB0aGVtIGJlbG93LiBZb3UgY2FuIGVkaXQgdGl0bGVzLCBkZXNjcmlwdGlvbnMgYW5kIHRodW1ibmFpbCBzaXplcyBpbiB0aGUgYWRtaW4gc2VjdGlvbi4gQ2hlY2sgb3V0IGFsbCB0aGUgb3RoZXIgZmVhdHVyZXMgdGhpcyBtb2R1bGUgb2ZmZXJzIGluIHRoZSBNb2R1bGUgSGVscC4nOw0KDQoNCiRsYW5nWydoZWxwX2RpciddID0gJ1BhcmFtZXRlciB0byBzcGVjaWZ5IGEgZGlyZWN0b3J5LCByZWxhdGl2ZSB0byB1cGxvYWRzL2ltYWdlcy9HYWxsZXJ5Lyc7DQokbGFuZ1snaGVscF90ZW1wbGF0ZSddID0gJ1VzZSBhIHNlcGFyYXRlIGRhdGFiYXNlIHRlbXBsYXRlIGZvciBkaXNwbGF5aW5nIHRoZSBwaG90byBnYWxsZXJ5LiBUaGlzIHRlbXBsYXRlIG11c3QgZXhpc3QgYW5kIGJlIHZpc2libGUgaW4gdGhlIHRlbXBsYXRlIHRhYiBvZiB0aGUgR2FsbGVyeSBhZG1pbiwgdGhvdWdoIGl0IGRvZXMgbm90IG5lZWQgdG8gYmUgdGhlIGRlZmF1bHQuIElmIHRoaXMgcGFyYW1ldGVyIGlzIG5vdCBzcGVjaWZpZWQsIHRoZW4gdGhlIHRlbXBsYXRlIHdoaWNoIGlzIGFzc2lnbmVkIHRvIHRoZSBkaXJlY3Rvcnkgd2lsbCBiZSB1c2VkLCBlbHNlIHRoZSBkZWZhdWx0IHRlbXBsYXRlLic7DQokbGFuZ1snaGVscF9udW1iZXInXSA9ICdNYXhpbXVtIG51bWJlciBvZiBpbWFnZXRodW1icyB0byBkaXNwbGF5IChwZXIgcGFnZSkuIExlYXZpbmcgZW1wdHkgd2lsbCBzaG93IGFsbCBpbWFnZXMuJzsNCiRsYW5nWydoZWxwX3N0YXJ0J10gPSAnU3RhcnQgYXQgdGhlIG50aCBpbWFnZS4gTGVhdmluZyBlbXB0eSB3aWxsIHN0YXJ0IGF0IHRoZSBmaXJzdCBpbWFnZS4nOw0KJGxhbmdbJ2hlbHBfc2hvdyddID0gJ092ZXJpZGUgd2hpY2ggaW1hZ2VzIGhhdmUgdG8gYmUgc2hvd24uIFBvc3NpYmxlIHZhbHVlcyBhcmU6DQo8dWw+DQo8bGk+XCdhY3RpdmVcJyAtIHRvIGRpc3BsYXkgdGhlIGltYWdlcyBtYXJrZWQgYXMgYWN0aXZlIChkZWZhdWx0KTwvbGk+DQo8bGk+XCdpbmFjdGl2ZVwnIC0gdG8gZGlzcGxheSBvbmx5IHRoZSBpbWFnZXMgbWFya2VkIGFzIGluYWN0aXZlIDwvbGk+DQo8bGk+XCdhbGxcJyAtIHRvIGRpc3BsYXkgYWxsIGltYWdlczwvbGk+DQo8L3VsPg0KJzsNCiRsYW5nWydoZWxwX2NhdGVnb3J5J10gPSAnVG8gZGlzcGxheSBvbmx5IGltYWdlcy9nYWxsZXJpZXMgYXNzaWduZWQgdG8gdGhlIHNwZWNpZmllZCBjYXRlZ29yaWVzLiBVc2UgKiBhZnRlciB0aGUgbmFtZSB0byBzaG93IGNoaWxkcmVuLiAgTXVsdGlwbGUgY2F0ZWdvcmllcyBjYW4gYmUgdXNlZCBpZiBzZXBhcmF0ZWQgd2l0aCBhIGNvbW1hLiBMZWF2aW5nIGVtcHR5LCB3aWxsIHNob3cgYWxsIGNhdGVnb3JpZXMuJzsNCiRsYW5nWydoZWxwX2FjdGlvbiddID0gJ092ZXJyaWRlIHRoZSBkZWZhdWx0IGFjdGlvbi4gVXNlIGl0IGluIGNvbWJpbmF0aW9uIHdpdGggdGhlIGFib3ZlIHBhcmFtZXRlcnMuIFBvc3NpYmxlIHZhbHVlcyBhcmU6DQo8dWw+DQo8bGk+XCdzaG93cmFuZG9tXCcgLSB0byBkaXNwbGF5IGEgc2V0IG9mIHJhbmRvbSB0aHVtYi1pbWFnZXMgKGFwcGxpZXMgb25seSB0byB0aGUgaW1hZ2VzIHdoaWNoIGFyZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlLCBkZWZhdWx0cyB0byBhIG51bWJlciBvZiA2IGltYWdlcykuIFVzZSBcJy8qXCcgYWZ0ZXIgdGhlIGRpcmVjdG9yeW5hbWUgaW4gdGhlIGRpciBwYXJhbWV0ZXIgdG8gaW5jbHVkZSBpbWFnZXMgZnJvbSBzdWJkaXJlY3RvcmllczwvbGk+DQo8bGk+XCdzaG93bGF0ZXN0XCcgLSB0byBkaXNwbGF5IHRoZSBtb3N0IHJlY2VudGx5IGFkZGVkIGltYWdlcyAoYXBwbGllcyBvbmx5IHRvIHRoZSBpbWFnZXMgd2hpY2ggYXJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UsIGRlZmF1bHRzIHRvIGEgbnVtYmVyIG9mIDYgaW1hZ2VzKSBUaGUgZGlyIHBhcmFtZXRlciBjYW4gYmUgc2V0LCBvciB0aGUgZGVmYXVsdCBHYWxsZXJ5LXJvb3Qgd2lsbCBiZSB1c2VkLiBTdWJkaXJlY3RvcmllcyBhcmUgYXV0b21hdGljYWxseSBpbmNsdWRlZDwvbGk+DQo8bGk+XCdzaG93bGF0ZXN0ZGlyXCcgLSB0byBkaXNwbGF5IGEgc2V0IG9mIHJhbmRvbSB0aHVtYi1pbWFnZXMgZnJvbSB0aGUgbW9zdCByZWNlbnRseSBhZGRlZCBkaXJlY3RvcnkgKGFwcGxpZXMgb25seSB0byB0aGUgaW1hZ2VzIHdoaWNoIGFyZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlLCBkZWZhdWx0cyB0byBhIG51bWJlciBvZiA2IGltYWdlcyk8L2xpPg0KPC91bD4NCk5vdGUgdGhhdCBpbWFnZXMgYXJlIG9ubHkgc3RvcmVkIGluIHRoZSBkYXRhYmFzZSB3aGVuIHRoZSBnYWxsZXJ5IGlzIHZpc2l0ZWQgaW4gdGhlIGFkbWluLg0KJzsNCg0KJGxhbmdbJ2NoYW5nZWxvZyddID0gJzx1bD4NCjxsaT5WZXJzaW9uIDEuMS4gOCBOb3ZlbWJlciAyMDA5LiBBZGRlZCBzb3J0aW5nIGFuZCBkcmFnJmRyb3AgZmVhdHVyZSAoRlIgIzM5MDcgIzQyMTApLCBNb3ZlZCB0aHVtYm5haWxzZXR0aW5ncyB0byB0ZW1wbGF0ZXN0YWIsIE1ha2UgZ2FsbGVyaWVzIHNlYXJjaGFibGUgKEZSICMzOTU2KSwgQ3JlYXRlIGJhY2tlbmQgdGh1bWJzIGlmIHRoZXkgZG9uXCd0IGV4aXN0IGluIElNIChGUiAjNDEwMSksIEZpeCBmb3IgQlIgIzQwMjcsIEFkZGVkIGZpbGVpZCB0byBpbWFnZS1vYmplY3QgKEZSICM0MjU5KTwvbGk+DQo8bGk+VmVyc2lvbiAxLjAuMy4gOCBTZXB0ZW1iZXIgMjAwOS4gQnVnZml4IGZvciBbIzQwMDFdLCBJbXByb3ZlZCBzeW5jaHJvbml6aW5nIHRoZSBkYXRhYmFzZSB0byBmaWxlcywgYW5kIG90aGVyIG1pbm9yIGltcHJvdmVtZW50cy48L2xpPg0KPGxpPlZlcnNpb24gMS4wLjIuIDUgU2VwdGVtYmVyIDIwMDkuIEJ1Z2ZpeCBmb3IgWyMzOTgzXSByZWdhcmRpbmcgc3BhY2VzIGluIGRpcmVjdG9yeSBuYW1lcywgQWRkZWQgdGVtcGxhdGVzIEZhbmN5Ym94IGFuZCBMeXRlYm94X3NsaWRlc2hvdyBhcyBpbiBGZWF0dXJlIHJlcXVlc3RzIFsjMzk0NF0gYW5kIFsjMzk2N108L2xpPg0KPGxpPlZlcnNpb24gMS4wLjEuIDIzIEF1Z3VzdCAyMDA5LiBBcHBseSB0aHVtYm5haWwtc2V0dGluZ3Mgb24gXCdBbGJ1bS1jb3ZlcnNcJyBbIzM5MjRdLCBCdWdmaXggZm9yIFsjMzkyN10sIEFkZGVkIG1pc3NpbmcgL2RpdiB0byB0aGlja2JveC10ZW1wbGF0ZSwgZml4ZWQgYW4gaXNzdWUgd2l0aCBnZW5lcmF0aW5nIHRodW1ibmFpbHMgd2hlbiBubyB0aHVtYnMgYXZhaWxhYmxlIGluIEltYWdlTWFuYWdlciwgaW1wcm92ZWQgdGhlIG5hbWluZyBvZiB0aHVtYnMsIEJ1Z2ZpeCBmb3IgWyMzOTMxXSwgUHJldmVudCBkaXNwbGF5IHRoZSBjb250ZW50IG9mIGdhbGxlcmllcyB0aGF0IGFyZSBzZXQgYXMgaW5hY3RpdmUuPC9saT4NCjxsaT5WZXJzaW9uIDEuMC4gMTcgQXVndXN0IDIwMDkuIFBhZ2luYXRpb24gcGFyYW1ldGVycyBhZGRlZCwgU3RhbmRhcmQgdGVtcGxhdGVzIGNoYW5nZWQgYWNjb3JkaW5nbHksIEV4dGVuZGVkIHRoZSBtb2R1bGUtaGVscCwgQWRkZWQgZnVuY3Rpb25zIHRvIHNob3cgcmFuZG9tIG9yIGxhdGVzdCBpbWFnZXMsIFN1cHBvcnQgb2YgcHJldHR5LXVybHMsIFZhcmlvdXMgaW1wcm92ZW1lbnRzPC9saT4NCjxsaT5WZXJzaW9uIDAuNi4gOSBBdWd1c3QgMjAwOS4gSW5pdGlhbCBCZXRhIFJlbGVhc2UuPC9saT4NCjwvdWw+JzsNCiRsYW5nWydoZWxwJ10gPSAnPGgzPldoYXQgRG9lcyBUaGlzIERvPzwvaDM+DQo8cD5UaGUgR2FsbGVyeSBtb2R1bGUgaXMgYW4gZWFzeSB0byB1c2UgcGhvdG8gZ2FsbGVyeSB3aGljaCBhdXRvbWF0aWNhbGx5IHNob3dzIHRoZSBpbWFnZXMgb2YgYSBzcGVjaWZpZWQgZGlyZWN0b3J5LiBTdWJkaXJlY3RvcmllcyB3aWxsIGJlIHNob3duIGFzIHN1YmdhbGxlcmllcy4gSXQgaGFzIGxvdHMgb2YgZmVhdHVyZXMsIHN1Y2ggYXMgYXV0b21hdGljIHRodW1ibmFpbGluZywgdGhlIHVzZSBvZiBtdWx0aXBsZSBMaWdodGJveC1saWtlIHRlbXBsYXRlcyBvciBhbnkgY3NzL2phdmFzY3JpcHQgdGVtcGxhdGUgeW91IGxpa2UsIGFuZCB5b3UgY2FuIGdpdmUgdGl0bGVzIGFuZCBkZXNjcmlwdGlvbnMgdG8geW91ciBnYWxsZXJpZXMgYXMgd2VsbCBhcyB5b3VyIHBob3Rvcy48L3A+DQo8aDM+SG93IERvIEkgVXNlIEl0PC9oMz4NCjxwPkZpcnN0LCBpbnNlcnQgdGhlIG1vZHVsZSB3aXRoIHRoZSA8Y29kZT57R2FsbGVyeX08L2NvZGU+IHRhZyBpbnRvIHlvdXIgcGFnZSBvciB0ZW1wbGF0ZSBhbnl3aGVyZSB5b3Ugd2hpc2guIFRoZW4gdXBsb2FkIHNvbWUgaW1hZ2VzIHdpdGggdGhlIEltYWdlIE1hbmFnZXIsIEZpbGUgTWFuYWdlciAoZS5nLiBtdWx0aXBsZSBpbWFnZXMgaW4gemlwZmlsZSkgb3IgRlRQIHRvIHRoZSB1cGxvYWRzL2ltYWdlcy9HYWxsZXJ5LyBkaXJlY3RvcnkuPC9wPg0KPHA+VGhhdFwncyBpdCE8L3A+DQo8cD5JZiB5b3Ugd2FudCBtb3JlIHBob3RvIGdhbGxlcmllcywgc2ltcGx5IGNyZWF0ZSBhIHN1YmRpcmVjdG9yeSBhbmQgdXBsb2FkIHlvdXIgcGhvdG9zIGFzIGRlc2NyaWJlZC4gQnkgYWRkaW5nIHBhcmFtZXRlcnMgdG8gdGhlIDxjb2RlPntHYWxsZXJ5fTwvY29kZT4gdGFnLCB5b3UgY2FuIGVhc2lseSBtYW5pcHVsYXRlIHdoaWNoIHN1YmdhbGxlcnkgd2lsbCBiZSBzaG93biBpbiB3aGljaCB0ZW1wbGF0ZSwgZS5nLiA8Y29kZT57R2FsbGVyeSBkaXI9ImhvbGlkYXlzL05ldGhlcmxhbmRzMjAwOSIgdGVtcGxhdGU9IkxpZ2h0Ym94In08L2NvZGU+PC9wPg0KPHA+QnkgZGVmYXVsdCB0aGUgdGh1bWJuYWlscyBmcm9tIHRoZSBJbWFnZSBNYW5hZ2VyIGFyZSB1c2VkIHRvIGRpc3BsYXkgdGhlIHBob3RvIGdhbGxlcmllcy48L3A+DQo8aDM+QWR2YW5jZWQgT3B0aW9ucywgYnV0IHN0aWxsIGVhc3kgdG8gdXNlPC9oMz4NCjxwPkluIHRoZSBhZG1pbiBzZWN0aW9uIHlvdSBoYXZlIGxvdHMgb2Ygb3RoZXIgb3B0aW9uczo8L3A+DQo8dWw+DQo8bGk+U2V0IGEgcGhvdG8gYXMgdGhlIGRlZmF1bHQgZm9yIGEgZ2FsbGVyeSwgc28gaXQgd2lsbCBzaG93IGluIHRoZSBwYXJlbnQgZ2FsbGVyeSBhcyBhIFwnY292ZXJcJyBpbiBzdGVhZCBvZiB0aGUgZGVmYXVsdCBmb2xkZXItaWNvbi48L2xpPg0KPGxpPkdpdmUgdGl0bGVzIGFuZCBkZXNjcmlwdGlvbnMgdG8gZ2FsbGVyaWVzLjwvbGk+DQo8bGk+U2V0IGEgZGVmYXVsdCB0ZW1wbGF0ZSBmb3IgZWFjaCBnYWxsZXJ5LjwvbGk+DQo8bGk+U2V0IHRodW1ibmFpbCBzaXplcyBmb3IgZWFjaCB0ZW1wbGF0ZSwgd2l0aCBwb3NpYmlsaXRpZXMgdG8gc2NhbGUsIGNyb3AgYW5kL29yIHpvb20gdGhlIGltYWdlcy48L2xpPg0KPGxpPlNwZWNpZnkgZm9yIGVhY2ggdGVtcGxhdGUgaW4gd2hpY2ggb3JkZXIgdGhlIHBob3RvcyBoYXZlIHRvIGJlIHNvcnRlZC48L2xpPg0KPGxpPk92ZXJydWxlIHRoZSBzb3J0aW5nIG1hbnVhbGx5IGJ5IGRyYWdnaW5nJmRyb3BwaW5nIHRoZSBwaG90b3MuDQo8bGk+R2l2ZSB0aXRsZXMgYW5kIGRlc2NyaXB0aW9ucyB0byBwaG90b3MuPC9saT4NCjxsaT5Td2l0Y2ggYSBzcGVjaWZpYyBwaG90byBvciBnYWxsZXJ5IHRvIGluYWN0aXZlLCBwcmV2ZW50aW5nIGl0IGZyb20gZGlzcGxheS48L2xpPg0KPGxpPkVkaXQvY29weSB0ZW1wbGF0ZXMgb3IgY3JlYXRlIG5ldyBvbmVzLiBDaGVjayB0aGUgaW5mby1pY29uIGJlbmVhdGggdGhlIHRlbXBsYXRlLWNvZGUgZm9yIHRoZSBhdmFpbGFibGUgdmFyaWFibGVzLjwvbGk+DQo8L3VsPg0KPHA+SW4gb3JkZXIgdG8gZWRpdCB0ZW1wbGF0ZXMsIHRoZSB1c2VyIG11c3QgYmVsb25nIHRvIGEgZ3JvdXAgd2l0aCB0aGUgXCdNb2RpZnkgVGVtcGxhdGVzXCcgcGVybWlzc2lvbi4gVG8gZWRpdCB0aGUgZ2xvYmFsIEdhbGxlcnkgb3B0aW9ucywgdGhlIHVzZXIgbXVzdCBiZWxvbmcgdG8gYSBncm91cCB3aXRoIHRoZSBcJ01vZGlmeSBTaXRlIFByZWZlcmVuY2VzXCcgcGVybWlzc2lvbi48L3A+DQo8cD5BbGwgdGl0bGVzLCBkZXNjcmlwdGlvbnMgYW5kIHNldHRpbmdzIGFyZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlLiBUaGUgZGF0YWJhc2Ugd2lsbCBzeW5jaHJvbml6ZSB3aXRoIHRoZSBmaWxlZGlyZWN0b3J5IGVhY2ggdGltZSB0aGUgYWNjb3JkaW5nIGdhbGxlcnkgaXMgdmlzaXRlZCBpbiB0aGUgR2FsbGVyeS1hZG1pbi4gQSBsaXR0bGUgd2FybmluZzogd2hlbiB5b3UgbW92ZSBhbiBpbWFnZSBvciBzdWJkaXJlY3RvcnkgdG8gYW5vdGhlciBkaXJlY3RvcnksIHlvdSB3aWxsIGxvb3NlIGl0cyB0aXRsZSwgZGVzY3JpcHRpb24gYW5kIHNldHRpbmdzLjwvcD4NCjxoMz5TdXBwb3J0PC9oMz4NCjxwPlRoaXMgbW9kdWxlIGRvZXMgbm90IGluY2x1ZGUgY29tbWVyY2lhbCBzdXBwb3J0LiBIb3dldmVyLCB0aGVyZSBhcmUgYSBudW1iZXIgb2YgcmVzb3VyY2VzIGF2YWlsYWJsZSB0byBoZWxwIHlvdSB3aXRoIGl0OjwvcD4NCjx1bD4NCjxsaT5Gb3IgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoaXMgbW9kdWxlLCBGQVFzLCBvciB0byBmaWxlIGEgRmVhdHVyZSBSZXF1ZXN0IG9yIEJ1ZyBSZXBvcnQsIHBsZWFzZSB2aXNpdCB0aGUgTW9kdWxlIEZvcmdlDQo8YSBocmVmPSJodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL2dhbGxlcnkvIj5HYWxsZXJ5IFBhZ2U8L2E+LjwvbGk+DQo8bGk+QWRkaXRpb25hbCBkaXNjdXNzaW9uIG9mIHRoaXMgbW9kdWxlIG1heSBhbHNvIGJlIGZvdW5kIGluIHRoZSA8YSBocmVmPSJodHRwOi8vZm9ydW0uY21zbWFkZXNpbXBsZS5vcmciPkNNUyBNYWRlIFNpbXBsZSBGb3J1bXM8L2E+LjwvbGk+DQo8bGk+TGFzdGx5LCB5b3UgbWF5IGhhdmUgc29tZSBzdWNjZXNzIGVtYWlsaW5nIHRoZSBhdXRob3IgZGlyZWN0bHkuPC9saT4NCjwvdWw+DQo8cD5BcyBwZXIgdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCBhcy1pcy4gUGxlYXNlIHJlYWQgdGhlIHRleHQgb2YgdGhlIGxpY2Vuc2UgZm9yIHRoZSBmdWxsIGRpc2NsYWltZXIuPC9wPg0KDQo8aDM+Q29weXJpZ2h0IGFuZCBMaWNlbnNlPC9oMz4NCjxwPkNvcHlyaWdodCAmY29weTsgMjAwOSwgSm9zIC08YSBocmVmPSJtYWlsdG86am9zdmRAbGl2ZS5ubCI+am9zdmRAbGl2ZS5ubDwvYT4tLiBBbGwgUmlnaHRzIEFyZSBSZXNlcnZlZC48L3A+DQo8cD5UaGlzIG1vZHVsZSBoYXMgYmVlbiByZWxlYXNlZCB1bmRlciB0aGUgPGEgaHJlZj0iaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMIj5HTlUgUHVibGljIExpY2Vuc2U8L2E+LiBZb3UgbXVzdCBhZ3JlZSB0byB0aGlzIGxpY2Vuc2UgYmVmb3JlIHVzaW5nIHRoZSBtb2R1bGUuPC9wPg0KJzsNCj8+]]></data>
	</file>
	<file>
	  <filename>/lang/ext/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/ext/de_DE.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ0dhbGVyaWUnOwokbGFuZ1snbW9kZGVzY3JpcHRpb24nXSA9ICdEaWUgZWluZmFjaHN0ZSBBcnQsIGVpbmUgQmlsZGVyZ2FsZXJpZSB6dSB2ZXJ3YWx0ZW4gdW5kIGRhcnp1c3RlbGxlbi4nOwokbGFuZ1snZGVzY3JpcHRpb24nXSA9ICdFaW5lIGVpbmZhY2hlIEJpbGRlcmdhbGVyaWUsIGRpZSBhdXRvbWF0aXNjaCBkaWUgQmlsZGVyIGVpbmVzIGFuZ2VnZWJlbmVuIFZlcnplaWNobmlzc2VzIGRhcnN0ZWxsdC4nOwokbGFuZ1sncG9zdGluc3RhbGwnXSA9ICdEYXMgR2FsZXJpZS1Nb2R1bCB3dXJkZSBlcmZvbGdyZWljaCBpbnN0YWxsaWVydC4nOwokbGFuZ1snaW5zdGFsbGVkJ10gPSAnRGllIFZlcnNpb24gJXMgZGVzIEdhbGVyaWUtTW9kdWxzIHd1cmRlIGluc3RhbGxpZXJ0JzsKJGxhbmdbJ3VwZ3JhZGVkJ10gPSAnRGFzIEdhbGVyaWUtTW9kdWwgd3VyZGUgYXVmIGRpZSBWZXJzaW9uICVzIGFrdHVhbGlzaWVydC4nOwokbGFuZ1sncG9zdHVuaW5zdGFsbCddID0gJ0RhcyBHYWxlcmllLU1vZHVsIHd1cmRlIGRlaW5zdGFsbGllcnQnOwokbGFuZ1sndW5pbnN0YWxsZWQnXSA9ICdEYXMgR2FsZXJpZS1Nb2R1bCB3dXJkZSBkZWluc3RhbGxpZXJ0JzsKJGxhbmdbJ3JlYWxseV91bmluc3RhbGwnXSA9ICdTaW5kIHNpZSBzaWNoZXIsIGRhc3Mgc2llIGRhcyBHYWxlcmllLU1vZHVsIGRlaW5zdGFsbGllcmVuIHdvbGxlbj8gRGFzIGJldHJpZmZ0IG5pY2h0IGRpZSBCaWxkZXIgc2VsYnN0LCBhYmVyIGRpZSBLb21tZW50YXJlIHVuZCBWb3JzY2hhdWJpbGRlciwgZGllIGRhcyBNb2R1bCBlcnN0ZWxsdCBoYXQsIHdlcmRlbiBkYWR1cmNoIG1pdCBnZWwmb3VtbDtzY2h0Lic7CiRsYW5nWydhY2Nlc3NkZW5pZWQnXSA9ICdadWdyaWZmIHZlcndlaWdlcnQuIEJpdHRlICZ1dW1sO2JlcnByJnV1bWw7ZmVuIHNpZSBkaWUgWnVncmlmZnNyZWNodGUuJzsKJGxhbmdbJ2FjdGlvbnMnXSA9ICdBa3Rpb25lbic7CiRsYW5nWydhY3RpdmUnXSA9ICdha3Rpdic7CiRsYW5nWydhcHBseSddID0gJ0Fud2VuZGVuJzsKJGxhbmdbJ2FyZXlvdXN1cmUnXSA9ICdXaXJrbGljaCBsJm91bWw7c2NoZW4/JzsKJGxhbmdbJ2NhbmNlbCddID0gJ0FiYnJlY2hlbic7CiRsYW5nWydjb3B5J10gPSAna29waWVyZW4nOwokbGFuZ1snZGVmYXVsdCddID0gJ1N0YW5kYXJkJzsKJGxhbmdbJ2RlbGV0ZSddID0gJ2wmb3VtbDtzY2hlbic7CiRsYW5nWydlZGl0J10gPSAnYmVhcmJlaXRlbic7CiRsYW5nWydlcnJvciddID0gJ0ZlaGxlciEnOwokbGFuZ1snc2V0ZmFsc2UnXSA9ICdkZWFrdGl2aWVyZW4nOwokbGFuZ1snc2V0dHJ1ZSddID0gJ2FrdGl2aWVyZW4nOwokbGFuZ1snc3VibWl0J10gPSAnU3BlaWNoZXJuJzsKJGxhbmdbJ2dhbGxlcmllcyddID0gJ0dhbGVyaWVuJzsKJGxhbmdbJ2dhbGxlcnlwYXRoJ10gPSAnR2FsZXJpZSc7CiRsYW5nWydlZGl0Z2FsbGVyeSddID0gJ0dhbGVyaWUgYmVhcmJlaXRlbic7CiRsYW5nWydhZGRnYWxsZXJ5J10gPSAnR2FsZXJpZSBoaW56dWYmdXVtbDtnZW4nOwokbGFuZ1snbm9nYWxsZXJpZXN0ZXh0J10gPSAna2VpbmUgR2FsZXJpZW4gdmVyZiZ1dW1sO2diYXInOwokbGFuZ1snaXRlbSddID0gJ0JpbGQnOwokbGFuZ1sndGl0bGUnXSA9ICdUaXRlbCc7CiRsYW5nWydkYXRlJ10gPSAnRGF0dW0nOwokbGFuZ1snbm9maWxlc3RleHQnXSA9ICdrZWluZSBCaWxkZXIgdmVyZiZ1dW1sO2diYXInOwokbGFuZ1snZ2FsbGVyeXRpdGxlJ10gPSAnR2FsZXJpZXRpdGVsJzsKJGxhbmdbJ2NvbW1lbnQnXSA9ICdLb21tZW50YXInOwokbGFuZ1sndGVtcGxhdGUnXSA9ICdWb3JsYWdlJzsKJGxhbmdbJ3VzZWRlZmF1bHQnXSA9ICdTdGFuZGFyZCB2ZXJ3ZW5kZW4nOwokbGFuZ1sndGh1bWJuYWlsc2l6ZSddID0gJ0dyJm91bWw7JnN6bGlnO2UgZGVzIFZvcnNjaGF1YmlsZGVzIChhdWYgQmVudXR6ZXJzZWl0ZSknOwokbGFuZ1snbGVhdmVlbXB0eSddID0gJyhmcmVpIGxhc3NlbiwgdW0gZGllIFN0YW5kYXJkLVZvcnNjaGF1YmlsZGVyIGRlciBCaWxkdmVyd2FsdHVuZyB6dSB2ZXJ3ZW5kZW4pJzsKJGxhbmdbJ3dpZHRoJ10gPSAnQnJlaXRlJzsKJGxhbmdbJ2hlaWdodCddID0gJ0gmb3VtbDtoZSc7CiRsYW5nWydyZXNpemVtZXRob2QnXSA9ICdTa2FsaWVydW5nc21ldGhvZGUnOwokbGFuZ1snY3JvcCddID0gJ2Jlc2NobmVpZGVuJzsKJGxhbmdbJ3NjYWxlJ10gPSAnc2thbGllcmVuJzsKJGxhbmdbJ3pvb21jcm9wJ10gPSAnem9vbWVuICZhbXA7IGJlc2NobmVpZGVuJzsKJGxhbmdbJ3pvb21zY2FsZSddID0gJ3pvb21lbiAmYW1wOyBza2FsaWVyZW4nOwokbGFuZ1snY3JlYXRldGh1bWJzJ10gPSAnVm9yc2NoYXViaWxkZXIgKG5ldSkgZXJzdGVsbGVuJzsKJGxhbmdbJ3RodW1ic2NyZWF0ZWQnXSA9ICdWb3JzY2hhdWJpbGRlciB3dXJkZW4gZXJzdGVsbHQuJzsKJGxhbmdbJ2hpZGVwYXJlbnRsaW5rJ10gPSAnSGlkZSBsaW5rIHRvIHBhcmVudCBnYWxsZXJ5JzsKJGxhbmdbJ3NvcnRieXNldHRpbmdzJ10gPSAnU29ydCBieSB0ZW1wbGF0ZSBzZXR0aW5ncyc7CiRsYW5nWydnYWxsZXJ5dXBkYXRlZCddID0gJ0RpZSBHYWxlcmllIHd1cmRlIGVyZm9sZ3JlaWNoIGFrdHVhbGlzaWVydC4nOwokbGFuZ1snZXJyb3JfdXBkYXRlZ2FsbGVyeWZhaWxlZCddID0gJ0FrdHVhbGlzaWVydW5nIGRlciBHYWxlcmllIGZlaGxnZXNjaGxhZ2VuLic7CiRsYW5nWyd0ZW1wbGF0ZXMnXSA9ICdWb3JsYWdlbic7CiRsYW5nWyd0aXRsZV9hdmFpbGFibGVfdGVtcGxhdGVzJ10gPSAndmVyZiZ1dW1sO2diYXJlIFZvcmxhZ2VuJzsKJGxhbmdbJ3Byb21wdF9uYW1lJ10gPSAnTmFtZSc7CiRsYW5nWydwcm9tcHRfZGVmYXVsdCddID0gJ1N0YW5kYXJkJzsKJGxhbmdbJ3Byb21wdF9uZXd0ZW1wbGF0ZSddID0gJ05ldWUgVm9ybGFnZSBlcnN0ZWxsZW4nOwokbGFuZ1sndGl0bGVfdGVtcGxhdGUnXSA9ICdWb3JsYWdlbi1FZGl0b3InOwokbGFuZ1sncHJvbXB0X3RlbXBsYXRlbmFtZSddID0gJ1ZvcmxhZ2VubmFtZSc7CiRsYW5nWydwcm9tcHRfdGVtcGxhdGUnXSA9ICdWb3JsYWdlbnF1ZWxsZSc7CiRsYW5nWydwcm9tcHRfdGVtcGxhdGVqcyddID0gJ1ZvcmxhZ2VuLUphdmFTY3JpcHQnOwokbGFuZ1sncHJvbXB0X3RlbXBsYXRlY3NzJ10gPSAnVm9ybGFnZW4tU3R5bGVzaGVldCc7CiRsYW5nWydyZXNldG9yaWdpbmFsJ10gPSAnUmVzZXQgdG8gb3JpZ2luYWwnOwokbGFuZ1sncmVzZXRvcmlnaW5hbHdhcm5pbmcnXSA9ICdBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gcmVzZXQgdGhlIHRlbXBsYXRlIGNvZGUgdG8gaXRzIG9yaWdpbmFsIGNvZGU/JzsKJGxhbmdbJ3RlbXBsYXRldXBkYXRlZCddID0gJ0RpZSBWb3JsYWdlIHd1cmRlIGVyZm9sZ3JlaWNoIGFrdHVhbGlzaWVydC4nOwokbGFuZ1sndGVtcGxhdGVhZGRlZCddID0gJ0RpZSBWb3JsYWdlIHd1cmRlIGVyZm9sZ3JlaWNoIGhpbnp1Z2VmJnV1bWw7Z3QuJzsKJGxhbmdbJ2Vycm9yX3RlbXBsYXRlbmFtZWV4aXN0cyddID0gJ0RlciBWb3JsYWdlbm5hbWUgZXhpc3RpZXJ0IGJlcmVpdHMuJzsKJGxhbmdbJ3RlbXBsYXRlZGVsZXRlZCddID0gJ1ZvcmxhZ2UgZ2VsJm91bWw7c2NodC4nOwokbGFuZ1snYXZhaWxhYmxldmFyaWFibGVzJ10gPSAnVmVyZiZ1dW1sO2diYXJlIFNtYXJ0eS1WYXJpYWJsZW4nOwokbGFuZ1snYXZhaWxhYmxldmFyaWFibGVzbGlzdCddID0gJ1RoZXNlIGFyZSB0aGUgdmFyaWFibGVzIHlvdSBjYW4gdXNlIHRvIGN1c3RvbWl6ZSB5b3VyIHRlbXBsYXRlOjxiciAvPjxiciAvPgo8Y29kZT57JG1vZHVsZV9tZXNzYWdlfTwvY29kZT4gLSBlcnJvciBtZXNzYWdlLCBpcyBvbmx5IHNldCBpZiB0aGVyZVwncyBhIG1lc3NhZ2U8YnIgLz4KPGNvZGU+eyRnYWxsZXJ5dGl0bGV9PC9jb2RlPiAtIHRpdGxlIG9mIHRoZSBnYWxsZXJ5LiBJZiB0aGVyZSBpcyBubyB0aXRsZSwgdGhpcyB3aWxsIHNob3cgdGhlIGRpcmVjdG9yeSBuYW1lPGJyIC8+Cjxjb2RlPnskZ2FsbGVyeWNvbW1lbnR9PC9jb2RlPiAtIGNvbW1lbnQgb2YgdGhlIGdhbGxlcnk8YnIgLz4KPGNvZGU+eyRwYXJlbnRsaW5rfTwvY29kZT4gLSBsaW5rIHRvIHRoZSBwYXJlbnQgZm9sZGVyPGJyIC8+Cjxjb2RlPnskaGlkZXBhcmVudGxpbmt9PC9jb2RlPiAtIHRydWUvZmFsc2U8YnIgLz4KPGNvZGU+eyRpbWFnZWNvdW50fTwvY29kZT4gLSBzaG93cyBlLmcuICI2IGltYWdlcyIsIGRlcGVuZGluZyBvbiBsYW5ndWFnZTxiciAvPgo8Y29kZT57JGl0ZW1jb3VudH08L2NvZGU+IC0gbnVtYmVyIG9mIGl0ZW1zLCBpbWFnZXMgKyBmb2xkZXJzPGJyIC8+Cjxjb2RlPnskcGFnZXN9PC9jb2RlPiAtIG51bWJlciBvZiBwYWdlczxiciAvPgo8Y29kZT57JHByZXZwYWdlfTwvY29kZT4gLSBsaW5rIHRvIHByZXZpb3VzIHBhZ2UsIGlmIGFwcGxpY2FibGU8YnIgLz4KPGNvZGU+eyRuZXh0cGFnZX08L2NvZGU+IC0gbGluayB0byBuZXh0IHBhZ2UsIGlmIGFwcGxpY2FibGU8YnIgLz4KPGNvZGU+eyRwYWdlbGlua3N9PC9jb2RlPiAtIGxpbmtzIHRvIGVhY2ggZXhpc3RpbmcgcGFnZTxiciAvPgo8Y29kZT57JGltYWdlc308L2NvZGU+IC0gYXJyYXkgd2l0aCBrZXlzOjxiciAvPgogLSA8Y29kZT5maWxlPC9jb2RlPiAtIHJlbGF0aXZlIHBhdGggdG8gdGhlIG9yaWdpbmFsIGltYWdlIChvciBzdWJnYWxsZXJ5KTxiciAvPgogLSA8Y29kZT50aXRsZTwvY29kZT4gLSB0aXRsZSBvZiB0aGUgaW1hZ2UuIElmIHRoZXJlIGlzIG5vIHRpdGxlLCB0aGlzIHdpbGwgc2hvdyB0aGUgZmlsZW5hbWU8YnIgLz4KIC0gPGNvZGU+Y29tbWVudDwvY29kZT4gLSBjb21tZW50IHRvIHRoZSBpbWFnZTxiciAvPgogLSA8Y29kZT5maWxlZGF0ZTwvY29kZT4gLSBjcmVhdGlvbiBkYXRlL3RpbWU8YnIgLz4KIC0gPGNvZGU+dGh1bWI8L2NvZGU+IC0gcmVsYXRpdmUgcGF0aCB0byB0aGUgdGh1bWJuYWlsLiBJbiBjYXNlIG9mIGEgc3ViZ2FsbGVyeSwgdGhpcyB3aWwgcmV2ZXJ0IHRvIHRoZSBpbWFnZSB3aGljaCBpcyBzZXQgYXMgZGVmYXVsdCBpbiB0aGF0IHN1YmdhbGxlcnkuIElmIG5vIGltYWdlIGlzIHNldCBhcyBkZWZhdWx0LCBhIHN0YW5kYXJkIGZvbGRlci1pY29uIHdpbGwgYmUgdXNlZC48YnIgLz4KIC0gPGNvZGU+ZmlsZWlkPC9jb2RlPiAtIHVuaXF1ZSBpZCBmb3IgdGhlIGltYWdlIG9yIHN1YmdhbGxlcnk8YnIgLz4KIC0gPGNvZGU+aXNkaXI8L2NvZGU+IC0gdHJ1ZSBpZiBpdFwncyBhIHN1YmdhbGxlcnk8YnIgLz4KJzsKJGxhbmdbJ29wdGlvbnMnXSA9ICdPcHRpb25lbic7CiRsYW5nWydhbGxvd2VkX2V4dGVuc2lvbnMnXSA9ICdlcmxhdWJ0ZSBEYXRlaWVuZHVuZ2VuJzsKJGxhbmdbJ3VzZV9jb21tZW50X3d5c2l3eWcnXSA9ICdFaW5lbiBncmFmaXNjaGVuIEVkaXRvciBmJnV1bWw7ciBkYXMgS29tbWVudGFyZmVsZCB2ZXJ3ZW5kZW4nOwokbGFuZ1snb3B0aW9uc3VwZGF0ZWQnXSA9ICdEaWUgT3B0aW9uZW4gd3VyZGVuIGVyZm9sZ3JlaWNoIGFrdHVhbGlzaWVydC4nOwokbGFuZ1snaW1hZ2UnXSA9ICdCaWxkJzsKJGxhbmdbJ2ltYWdlcyddID0gJ0JpbGRlcic7CiRsYW5nWydwcmV2cGFnZSddID0gJyZhbXA7bHQ7IHp1ciZ1dW1sO2NrJzsKJGxhbmdbJ25leHRwYWdlJ10gPSAnd2VpdGVyICZhbXA7Z3Q7JzsKJGxhbmdbJ2RlZmF1bHRnYWxsZXJ5Y29tbWVudCddID0gJ1dhcyBzaWUgaGllciBzZWhlbiwgaXN0IGRhcyBHYWxlcmllLU1vZHVsLiBXZW5uIHNpZSBlaW4gcGFhciBCaWxkZXIgaW4gZGFzIFZlcnplaWNobmlzICZiZHF1bzt1cGxvYWRzL2ltYWdlcy9HYWxsZXJ5JmxkcXVvOyBrb3BpZXJ0IGhhYmVuLCBkYW5uIHNlaGVuIHNpZSBzaWUgamV0enQgdW50ZW4uIFNpZSBrJm91bWw7bm5lbiBUaXRlbCwgQmVzY2hyZWlidW5nZW4gdW5kIFZvcnNjaGF1YmlsZGVyIGltIEFkbWluaXN0cmF0aW9uc2JlcmVpY2ggYmVhcmJlaXRlbi4gQWxsZSB3ZWl0ZXJlbiBGdW5rdGlvbmVuIGRpZXNlcyBNb2R1bHMgc2luZCBpbiBkZXIgTW9kdWxoaWxmZSBiZXNjaHJpZWJlbi4nOwokbGFuZ1snaGVscF9kaXInXSA9ICdQYXJhbWV0ZXIgdG8gc3BlY2lmeSBhIGRpcmVjdG9yeSwgcmVsYXRpdmUgdG8gdXBsb2Fkcy9pbWFnZXMvR2FsbGVyeS8nOwokbGFuZ1snaGVscF90ZW1wbGF0ZSddID0gJ1VzZSBhIHNlcGFyYXRlIGRhdGFiYXNlIHRlbXBsYXRlIGZvciBkaXNwbGF5aW5nIHRoZSBwaG90byBnYWxsZXJ5LiBUaGlzIHRlbXBsYXRlIG11c3QgZXhpc3QgYW5kIGJlIHZpc2libGUgaW4gdGhlIHRlbXBsYXRlIHRhYiBvZiB0aGUgR2FsbGVyeSBhZG1pbiwgdGhvdWdoIGl0IGRvZXMgbm90IG5lZWQgdG8gYmUgdGhlIGRlZmF1bHQuIElmIHRoaXMgcGFyYW1ldGVyIGlzIG5vdCBzcGVjaWZpZWQsIHRoZW4gdGhlIHRlbXBsYXRlIHdoaWNoIGlzIGFzc2lnbmVkIHRvIHRoZSBkaXJlY3Rvcnkgd2lsbCBiZSB1c2VkLCBlbHNlIHRoZSBkZWZhdWx0IHRlbXBsYXRlLic7CiRsYW5nWydoZWxwX251bWJlciddID0gJ01heGltdW0gbnVtYmVyIG9mIGltYWdldGh1bWJzIHRvIGRpc3BsYXkgKHBlciBwYWdlKS4gTGVhdmluZyBlbXB0eSB3aWxsIHNob3cgYWxsIGltYWdlcy4nOwokbGFuZ1snaGVscF9zdGFydCddID0gJ1N0YXJ0IGF0IHRoZSBudGggaW1hZ2UuIExlYXZpbmcgZW1wdHkgd2lsbCBzdGFydCBhdCB0aGUgZmlyc3QgaW1hZ2UuJzsKJGxhbmdbJ2hlbHBfc2hvdyddID0gJ092ZXJpZGUgd2hpY2ggaW1hZ2VzIGhhdmUgdG8gYmUgc2hvd24uIFBvc3NpYmxlIHZhbHVlcyBhcmU6Cjx1bD4KPGxpPlwnYWN0aXZlXCcgLSB0byBkaXNwbGF5IHRoZSBpbWFnZXMgbWFya2VkIGFzIGFjdGl2ZSAoZGVmYXVsdCk8L2xpPgo8bGk+XCdpbmFjdGl2ZVwnIC0gdG8gZGlzcGxheSBvbmx5IHRoZSBpbWFnZXMgbWFya2VkIGFzIGluYWN0aXZlIDwvbGk+CjxsaT5cJ2FsbFwnIC0gdG8gZGlzcGxheSBhbGwgaW1hZ2VzPC9saT4KPC91bD4KJzsKJGxhbmdbJ2hlbHBfY2F0ZWdvcnknXSA9ICdUbyBkaXNwbGF5IG9ubHkgaW1hZ2VzL2dhbGxlcmllcyBhc3NpZ25lZCB0byB0aGUgc3BlY2lmaWVkIGNhdGVnb3JpZXMuIFVzZSAqIGFmdGVyIHRoZSBuYW1lIHRvIHNob3cgY2hpbGRyZW4uICBNdWx0aXBsZSBjYXRlZ29yaWVzIGNhbiBiZSB1c2VkIGlmIHNlcGFyYXRlZCB3aXRoIGEgY29tbWEuIExlYXZpbmcgZW1wdHksIHdpbGwgc2hvdyBhbGwgY2F0ZWdvcmllcy4nOwokbGFuZ1snaGVscF9hY3Rpb24nXSA9ICdPdmVycmlkZSB0aGUgZGVmYXVsdCBhY3Rpb24uIFVzZSBpdCBpbiBjb21iaW5hdGlvbiB3aXRoIHRoZSBhYm92ZSBwYXJhbWV0ZXJzLiBQb3NzaWJsZSB2YWx1ZXMgYXJlOgo8dWw+CjxsaT5cJ3Nob3dyYW5kb21cJyAtIHRvIGRpc3BsYXkgYSBzZXQgb2YgcmFuZG9tIHRodW1iLWltYWdlcyAoYXBwbGllcyBvbmx5IHRvIHRoZSBpbWFnZXMgd2hpY2ggYXJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UsIGRlZmF1bHRzIHRvIGEgbnVtYmVyIG9mIDYgaW1hZ2VzKS4gVXNlIFwnLypcJyBhZnRlciB0aGUgZGlyZWN0b3J5bmFtZSBpbiB0aGUgZGlyIHBhcmFtZXRlciB0byBpbmNsdWRlIGltYWdlcyBmcm9tIHN1YmRpcmVjdG9yaWVzPC9saT4KPGxpPlwnc2hvd2xhdGVzdFwnIC0gdG8gZGlzcGxheSB0aGUgbW9zdCByZWNlbnRseSBhZGRlZCBpbWFnZXMgKGFwcGxpZXMgb25seSB0byB0aGUgaW1hZ2VzIHdoaWNoIGFyZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlLCBkZWZhdWx0cyB0byBhIG51bWJlciBvZiA2IGltYWdlcykgVGhlIGRpciBwYXJhbWV0ZXIgY2FuIGJlIHNldCwgb3IgdGhlIGRlZmF1bHQgR2FsbGVyeS1yb290IHdpbGwgYmUgdXNlZC4gU3ViZGlyZWN0b3JpZXMgYXJlIGF1dG9tYXRpY2FsbHkgaW5jbHVkZWQ8L2xpPgo8bGk+XCdzaG93bGF0ZXN0ZGlyXCcgLSB0byBkaXNwbGF5IGEgc2V0IG9mIHJhbmRvbSB0aHVtYi1pbWFnZXMgZnJvbSB0aGUgbW9zdCByZWNlbnRseSBhZGRlZCBkaXJlY3RvcnkgKGFwcGxpZXMgb25seSB0byB0aGUgaW1hZ2VzIHdoaWNoIGFyZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlLCBkZWZhdWx0cyB0byBhIG51bWJlciBvZiA2IGltYWdlcyk8L2xpPgo8L3VsPgpOb3RlIHRoYXQgaW1hZ2VzIGFyZSBvbmx5IHN0b3JlZCBpbiB0aGUgZGF0YWJhc2Ugd2hlbiB0aGUgZ2FsbGVyeSBpcyB2aXNpdGVkIGluIHRoZSBhZG1pbi4KJzsKJGxhbmdbJ2NoYW5nZWxvZyddID0gJzx1bD4KPGxpPlZlcnNpb24gMS4xLiA4IE5vdmVtYmVyIDIwMDkuIEFkZGVkIHNvcnRpbmcgYW5kIGRyYWcmZHJvcCBmZWF0dXJlIChGUiAjMzkwNyAjNDIxMCksIE1vdmVkIHRodW1ibmFpbHNldHRpbmdzIHRvIHRlbXBsYXRlc3RhYiwgTWFrZSBnYWxsZXJpZXMgc2VhcmNoYWJsZSAoRlIgIzM5NTYpLCBDcmVhdGUgYmFja2VuZCB0aHVtYnMgaWYgdGhleSBkb25cJ3QgZXhpc3QgaW4gSU0gKEZSICM0MTAxKSwgRml4IGZvciBCUiAjNDAyNywgQWRkZWQgZmlsZWlkIHRvIGltYWdlLW9iamVjdCAoRlIgIzQyNTkpPC9saT4KPGxpPlZlcnNpb24gMS4wLjMuIDggU2VwdGVtYmVyIDIwMDkuIEJ1Z2ZpeCBmb3IgWyM0MDAxXSwgSW1wcm92ZWQgc3luY2hyb25pemluZyB0aGUgZGF0YWJhc2UgdG8gZmlsZXMsIGFuZCBvdGhlciBtaW5vciBpbXByb3ZlbWVudHMuPC9saT4KPGxpPlZlcnNpb24gMS4wLjIuIDUgU2VwdGVtYmVyIDIwMDkuIEJ1Z2ZpeCBmb3IgWyMzOTgzXSByZWdhcmRpbmcgc3BhY2VzIGluIGRpcmVjdG9yeSBuYW1lcywgQWRkZWQgdGVtcGxhdGVzIEZhbmN5Ym94IGFuZCBMeXRlYm94X3NsaWRlc2hvdyBhcyBpbiBGZWF0dXJlIHJlcXVlc3RzIFsjMzk0NF0gYW5kIFsjMzk2N108L2xpPgo8bGk+VmVyc2lvbiAxLjAuMS4gMjMgQXVndXN0IDIwMDkuIEFwcGx5IHRodW1ibmFpbC1zZXR0aW5ncyBvbiBcJ0FsYnVtLWNvdmVyc1wnIFsjMzkyNF0sIEJ1Z2ZpeCBmb3IgWyMzOTI3XSwgQWRkZWQgbWlzc2luZyAvZGl2IHRvIHRoaWNrYm94LXRlbXBsYXRlLCBmaXhlZCBhbiBpc3N1ZSB3aXRoIGdlbmVyYXRpbmcgdGh1bWJuYWlscyB3aGVuIG5vIHRodW1icyBhdmFpbGFibGUgaW4gSW1hZ2VNYW5hZ2VyLCBpbXByb3ZlZCB0aGUgbmFtaW5nIG9mIHRodW1icywgQnVnZml4IGZvciBbIzM5MzFdLCBQcmV2ZW50IGRpc3BsYXkgdGhlIGNvbnRlbnQgb2YgZ2FsbGVyaWVzIHRoYXQgYXJlIHNldCBhcyBpbmFjdGl2ZS48L2xpPgo8bGk+VmVyc2lvbiAxLjAuIDE3IEF1Z3VzdCAyMDA5LiBQYWdpbmF0aW9uIHBhcmFtZXRlcnMgYWRkZWQsIFN0YW5kYXJkIHRlbXBsYXRlcyBjaGFuZ2VkIGFjY29yZGluZ2x5LCBFeHRlbmRlZCB0aGUgbW9kdWxlLWhlbHAsIEFkZGVkIGZ1bmN0aW9ucyB0byBzaG93IHJhbmRvbSBvciBsYXRlc3QgaW1hZ2VzLCBTdXBwb3J0IG9mIHByZXR0eS11cmxzLCBWYXJpb3VzIGltcHJvdmVtZW50czwvbGk+CjxsaT5WZXJzaW9uIDAuNi4gOSBBdWd1c3QgMjAwOS4gSW5pdGlhbCBCZXRhIFJlbGVhc2UuPC9saT4KPC91bD4nOwokbGFuZ1snaGVscCddID0gJzxoMz5XaGF0IERvZXMgVGhpcyBEbz88L2gzPgo8cD5UaGUgR2FsbGVyeSBtb2R1bGUgaXMgYW4gZWFzeSB0byB1c2UgcGhvdG8gZ2FsbGVyeSB3aGljaCBhdXRvbWF0aWNhbGx5IHNob3dzIHRoZSBpbWFnZXMgb2YgYSBzcGVjaWZpZWQgZGlyZWN0b3J5LiBTdWJkaXJlY3RvcmllcyB3aWxsIGJlIHNob3duIGFzIHN1YmdhbGxlcmllcy4gSXQgaGFzIGxvdHMgb2YgZmVhdHVyZXMsIHN1Y2ggYXMgYXV0b21hdGljIHRodW1ibmFpbGluZywgdGhlIHVzZSBvZiBtdWx0aXBsZSBMaWdodGJveC1saWtlIHRlbXBsYXRlcyBvciBhbnkgY3NzL2phdmFzY3JpcHQgdGVtcGxhdGUgeW91IGxpa2UsIGFuZCB5b3UgY2FuIGdpdmUgdGl0bGVzIGFuZCBkZXNjcmlwdGlvbnMgdG8geW91ciBnYWxsZXJpZXMgYXMgd2VsbCBhcyB5b3VyIHBob3Rvcy48L3A+CjxoMz5Ib3cgRG8gSSBVc2UgSXQ8L2gzPgo8cD5GaXJzdCwgaW5zZXJ0IHRoZSBtb2R1bGUgd2l0aCB0aGUgPGNvZGU+e0dhbGxlcnl9PC9jb2RlPiB0YWcgaW50byB5b3VyIHBhZ2Ugb3IgdGVtcGxhdGUgYW55d2hlcmUgeW91IHdoaXNoLiBUaGVuIHVwbG9hZCBzb21lIGltYWdlcyB3aXRoIHRoZSBJbWFnZSBNYW5hZ2VyLCBGaWxlIE1hbmFnZXIgKGUuZy4gbXVsdGlwbGUgaW1hZ2VzIGluIHppcGZpbGUpIG9yIEZUUCB0byB0aGUgdXBsb2Fkcy9pbWFnZXMvR2FsbGVyeS8gZGlyZWN0b3J5LjwvcD4KPHA+VGhhdFwncyBpdCE8L3A+CjxwPklmIHlvdSB3YW50IG1vcmUgcGhvdG8gZ2FsbGVyaWVzLCBzaW1wbHkgY3JlYXRlIGEgc3ViZGlyZWN0b3J5IGFuZCB1cGxvYWQgeW91ciBwaG90b3MgYXMgZGVzY3JpYmVkLiBCeSBhZGRpbmcgcGFyYW1ldGVycyB0byB0aGUgPGNvZGU+e0dhbGxlcnl9PC9jb2RlPiB0YWcsIHlvdSBjYW4gZWFzaWx5IG1hbmlwdWxhdGUgd2hpY2ggc3ViZ2FsbGVyeSB3aWxsIGJlIHNob3duIGluIHdoaWNoIHRlbXBsYXRlLCBlLmcuIDxjb2RlPntHYWxsZXJ5IGRpcj0iaG9saWRheXMvTmV0aGVybGFuZHMyMDA5IiB0ZW1wbGF0ZT0iTGlnaHRib3gifTwvY29kZT48L3A+CjxwPkJ5IGRlZmF1bHQgdGhlIHRodW1ibmFpbHMgZnJvbSB0aGUgSW1hZ2UgTWFuYWdlciBhcmUgdXNlZCB0byBkaXNwbGF5IHRoZSBwaG90byBnYWxsZXJpZXMuPC9wPgo8aDM+QWR2YW5jZWQgT3B0aW9ucywgYnV0IHN0aWxsIGVhc3kgdG8gdXNlPC9oMz4KPHA+SW4gdGhlIGFkbWluIHNlY3Rpb24geW91IGhhdmUgbG90cyBvZiBvdGhlciBvcHRpb25zOjwvcD4KPHVsPgo8bGk+U2V0IGEgcGhvdG8gYXMgdGhlIGRlZmF1bHQgZm9yIGEgZ2FsbGVyeSwgc28gaXQgd2lsbCBzaG93IGluIHRoZSBwYXJlbnQgZ2FsbGVyeSBhcyBhIFwnY292ZXJcJyBpbiBzdGVhZCBvZiB0aGUgZGVmYXVsdCBmb2xkZXItaWNvbi48L2xpPgo8bGk+R2l2ZSB0aXRsZXMgYW5kIGRlc2NyaXB0aW9ucyB0byBnYWxsZXJpZXMuPC9saT4KPGxpPlNldCBhIGRlZmF1bHQgdGVtcGxhdGUgZm9yIGVhY2ggZ2FsbGVyeS48L2xpPgo8bGk+U2V0IHRodW1ibmFpbCBzaXplcyBmb3IgZWFjaCB0ZW1wbGF0ZSwgd2l0aCBwb3NpYmlsaXRpZXMgdG8gc2NhbGUsIGNyb3AgYW5kL29yIHpvb20gdGhlIGltYWdlcy48L2xpPgo8bGk+U3BlY2lmeSBmb3IgZWFjaCB0ZW1wbGF0ZSBpbiB3aGljaCBvcmRlciB0aGUgcGhvdG9zIGhhdmUgdG8gYmUgc29ydGVkLjwvbGk+CjxsaT5PdmVycnVsZSB0aGUgc29ydGluZyBtYW51YWxseSBieSBkcmFnZ2luZyZkcm9wcGluZyB0aGUgcGhvdG9zLgo8bGk+R2l2ZSB0aXRsZXMgYW5kIGRlc2NyaXB0aW9ucyB0byBwaG90b3MuPC9saT4KPGxpPlN3aXRjaCBhIHNwZWNpZmljIHBob3RvIG9yIGdhbGxlcnkgdG8gaW5hY3RpdmUsIHByZXZlbnRpbmcgaXQgZnJvbSBkaXNwbGF5LjwvbGk+CjxsaT5FZGl0L2NvcHkgdGVtcGxhdGVzIG9yIGNyZWF0ZSBuZXcgb25lcy4gQ2hlY2sgdGhlIGluZm8taWNvbiBiZW5lYXRoIHRoZSB0ZW1wbGF0ZS1jb2RlIGZvciB0aGUgYXZhaWxhYmxlIHZhcmlhYmxlcy48L2xpPgo8L3VsPgo8cD5JbiBvcmRlciB0byBlZGl0IHRlbXBsYXRlcywgdGhlIHVzZXIgbXVzdCBiZWxvbmcgdG8gYSBncm91cCB3aXRoIHRoZSBcJ01vZGlmeSBUZW1wbGF0ZXNcJyBwZXJtaXNzaW9uLiBUbyBlZGl0IHRoZSBnbG9iYWwgR2FsbGVyeSBvcHRpb25zLCB0aGUgdXNlciBtdXN0IGJlbG9uZyB0byBhIGdyb3VwIHdpdGggdGhlIFwnTW9kaWZ5IFNpdGUgUHJlZmVyZW5jZXNcJyBwZXJtaXNzaW9uLjwvcD4KPHA+QWxsIHRpdGxlcywgZGVzY3JpcHRpb25zIGFuZCBzZXR0aW5ncyBhcmUgc3RvcmVkIGluIHRoZSBkYXRhYmFzZS4gVGhlIGRhdGFiYXNlIHdpbGwgc3luY2hyb25pemUgd2l0aCB0aGUgZmlsZWRpcmVjdG9yeSBlYWNoIHRpbWUgdGhlIGFjY29yZGluZyBnYWxsZXJ5IGlzIHZpc2l0ZWQgaW4gdGhlIEdhbGxlcnktYWRtaW4uIEEgbGl0dGxlIHdhcm5pbmc6IHdoZW4geW91IG1vdmUgYW4gaW1hZ2Ugb3Igc3ViZGlyZWN0b3J5IHRvIGFub3RoZXIgZGlyZWN0b3J5LCB5b3Ugd2lsbCBsb29zZSBpdHMgdGl0bGUsIGRlc2NyaXB0aW9uIGFuZCBzZXR0aW5ncy48L3A+CjxoMz5TdXBwb3J0PC9oMz4KPHA+VGhpcyBtb2R1bGUgZG9lcyBub3QgaW5jbHVkZSBjb21tZXJjaWFsIHN1cHBvcnQuIEhvd2V2ZXIsIHRoZXJlIGFyZSBhIG51bWJlciBvZiByZXNvdXJjZXMgYXZhaWxhYmxlIHRvIGhlbHAgeW91IHdpdGggaXQ6PC9wPgo8dWw+CjxsaT5Gb3IgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoaXMgbW9kdWxlLCBGQVFzLCBvciB0byBmaWxlIGEgRmVhdHVyZSBSZXF1ZXN0IG9yIEJ1ZyBSZXBvcnQsIHBsZWFzZSB2aXNpdCB0aGUgTW9kdWxlIEZvcmdlCjxhIGhyZWY9Imh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvZ2FsbGVyeS8iPkdhbGxlcnkgUGFnZTwvYT4uPC9saT4KPGxpPkFkZGl0aW9uYWwgZGlzY3Vzc2lvbiBvZiB0aGlzIG1vZHVsZSBtYXkgYWxzbyBiZSBmb3VuZCBpbiB0aGUgPGEgaHJlZj0iaHR0cDovL2ZvcnVtLmNtc21hZGVzaW1wbGUub3JnIj5DTVMgTWFkZSBTaW1wbGUgRm9ydW1zPC9hPi48L2xpPgo8bGk+TGFzdGx5LCB5b3UgbWF5IGhhdmUgc29tZSBzdWNjZXNzIGVtYWlsaW5nIHRoZSBhdXRob3IgZGlyZWN0bHkuPC9saT4KPC91bD4KPHA+QXMgcGVyIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgYXMtaXMuIFBsZWFzZSByZWFkIHRoZSB0ZXh0IG9mIHRoZSBsaWNlbnNlIGZvciB0aGUgZnVsbCBkaXNjbGFpbWVyLjwvcD4KCjxoMz5Db3B5cmlnaHQgYW5kIExpY2Vuc2U8L2gzPgo8cD5Db3B5cmlnaHQgJmNvcHk7IDIwMDksIEpvcyAtPGEgaHJlZj0ibWFpbHRvOmpvc3ZkQGxpdmUubmwiPmpvc3ZkQGxpdmUubmw8L2E+LS4gQWxsIFJpZ2h0cyBBcmUgUmVzZXJ2ZWQuPC9wPgo8cD5UaGlzIG1vZHVsZSBoYXMgYmVlbiByZWxlYXNlZCB1bmRlciB0aGUgPGEgaHJlZj0iaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMIj5HTlUgUHVibGljIExpY2Vuc2U8L2E+LiBZb3UgbXVzdCBhZ3JlZSB0byB0aGlzIGxpY2Vuc2UgYmVmb3JlIHVzaW5nIHRoZSBtb2R1bGUuPC9wPgonOwokbGFuZ1sncWNhJ10gPSAnMTI0OTkyMzc2NC0xNTg3MTg3OC05Njg5NTI0NSc7CiRsYW5nWyd1dG1hJ10gPSAnMTU2ODYxMzUzLjQzNDAxMjYxNDk5Mzk2NjIwMDAuMTI0NzE1MTIyMi4xMjUyMzMxMjc5LjEyNTIzNDA2NTQuMjInOwokbGFuZ1sndXRteiddID0gJzE1Njg2MTM1My4xMjQ3MTUxNTc1LjEuMi51dG1jY249KG9yZ2FuaWMpfHV0bWNzcj1nb29nbGV8dXRtY3RyPXRyYW5zbGF0aW9uY2VudGVyIGNtc21hZGVzaW1wbGV8dXRtY21kPW9yZ2FuaWMnOwokbGFuZ1sndXRtYyddID0gJzE1Njg2MTM1Myc7CiRsYW5nWyd1dG1iJ10gPSAnMTU2ODYxMzUzLjEuMTAuMTI1MjM0MDY1NCc7Cj8+]]></data>
	</file>
	<file>
	  <filename>/lang/ext/fr_FR.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ0dhbGxlcnkgJzsKJGxhbmdbJ21vZGRlc2NyaXB0aW9uJ10gPSAnTGUgbW95ZW4gbGUgcGx1cyBmYWNpbGUgcG91ciBhZmZpY2hlciBldCBnJmVhY3V0ZTtyZXIgdm9zIGdhbGVyaWVzIHBob3Rvcy4nOwokbGFuZ1snZGVzY3JpcHRpb24nXSA9ICdVbmUgR2FsZXJpZSBmYWNpbGUgZCYjMDM5O2VtcGxvaSBhZmZpY2hhbnQgYXV0b21hdGlxdWVtZW50IGxlcyBpbWFnZXMgZCYjMDM5O3VuIGRvc3NpZXIgc3AmZWFjdXRlO2NpZmlxdWUuJzsKJGxhbmdbJ3Bvc3RpbnN0YWxsJ10gPSAnTGUgbW9kdWxlIEdhbGxlcnkgYSAmZWFjdXRlO3QmZWFjdXRlOyBpbnN0YWxsJmVhY3V0ZTsgYXZlYyBzdWNjJmVncmF2ZTtzLic7CiRsYW5nWydpbnN0YWxsZWQnXSA9ICdMYSB2ZXJzaW9uICVzIGR1IG1vZHVsZSBHYWxsZXJ5IGEgJmVhY3V0ZTt0JmVhY3V0ZTsgaW5zdGFsbCZlYWN1dGU7ZS4nOwokbGFuZ1sndXBncmFkZWQnXSA9ICdMZSBtb2R1bGUgR2FsbGVyeSBhICZlYWN1dGU7dCZlYWN1dGU7IG1pcyAmYWdyYXZlOyBqb3VyICZhZ3JhdmU7IGxhIHZlcnNpb24gJXMuJzsKJGxhbmdbJ3Bvc3R1bmluc3RhbGwnXSA9ICdMZSBtb2R1bGUgR2FsbGVyeSBhICZlYWN1dGU7dCZlYWN1dGU7IGQmZWFjdXRlO3NpbnN0YWxsJmVhY3V0ZTsuJzsKJGxhbmdbJ3VuaW5zdGFsbGVkJ10gPSAnTGUgbW9kdWxlIEdhbGxlcnkgYSAmZWFjdXRlO3QmZWFjdXRlOyBkJmVhY3V0ZTtzaW5zdGFsbCZlYWN1dGU7Lic7CiRsYW5nWydyZWFsbHlfdW5pbnN0YWxsJ10gPSAnJkVjaXJjO3Rlcy12b3VzIGNlcnRhaW4gZGUgdm91bG9pciBkJmVhY3V0ZTtzaW5zdGFsbGVyIEdhbGxlcnkmbmJzcDs/IENlbGEgbiYjMDM5O2FmZmVjdGVyYSBwYXMgbGVzIGltYWdlcywgbWFpcyB0b3V0ZXMgbGVzIGNvbW1lbnRhaXJlcyBldCB2aWduZXR0ZXMgY3ImZWFjdXRlOyZlYWN1dGU7cyBwYXIgR2FsbGVyeSBzZXJvbnQgcGVyZHVzLic7CiRsYW5nWydhY2Nlc3NkZW5pZWQnXSA9ICdBY2MmZWdyYXZlO3MgciZlYWN1dGU7ZnVzJmVhY3V0ZTsuIFZldWlsbGV6IHYmZWFjdXRlO3JpZmllciB2b3MgcGVybWlzc2lvbnMuJzsKJGxhbmdbJ2FjdGlvbnMnXSA9ICdBY3Rpb25zICc7CiRsYW5nWydhY3RpdmUnXSA9ICdBY3RpdmUgJzsKJGxhbmdbJ2FwcGx5J10gPSAnQXBwbGlxdWVyJzsKJGxhbmdbJ2FyZXlvdXN1cmUnXSA9ICcmRWNpcmM7dGVzLXZvdXMgcyZ1Y2lyYztyKGUpIGRlIHZvdWxvaXIgZWZmYWNlciA/JzsKJGxhbmdbJ2NhbmNlbCddID0gJ0FubnVsZXInOwokbGFuZ1snY29weSddID0gJ0NvcGllcic7CiRsYW5nWydkZWZhdWx0J10gPSAnRCZlYWN1dGU7ZmF1dCc7CiRsYW5nWydkZWxldGUnXSA9ICdFZmZhY2VyJzsKJGxhbmdbJ2VkaXQnXSA9ICdFZGl0ZXInOwokbGFuZ1snZXJyb3InXSA9ICdFcnJldXImbmJzcDshJzsKJGxhbmdbJ3NldGZhbHNlJ10gPSAnRCZlYWN1dGU7ZmluaXIgJmFncmF2ZTsgZmF1eCc7CiRsYW5nWydzZXR0cnVlJ10gPSAnRCZlYWN1dGU7ZmluaXIgJmFncmF2ZTsgdnJhaSc7CiRsYW5nWydzdWJtaXQnXSA9ICdTYXV2ZWdhcmRlcic7CiRsYW5nWydnYWxsZXJpZXMnXSA9ICdHYWxlcmllcyc7CiRsYW5nWydnYWxsZXJ5cGF0aCddID0gJ0dhbGVyaWUnOwokbGFuZ1snZWRpdGdhbGxlcnknXSA9ICcmRWFjdXRlO2RpdGVyIGxhIGdhbGVyaWUnOwokbGFuZ1snYWRkZ2FsbGVyeSddID0gJ0Fqb3V0ZXIgdW5lIGdhbGVyaWUnOwokbGFuZ1snbm9nYWxsZXJpZXN0ZXh0J10gPSAnSWwgbiYjMDM5O3kgYSBwYXMgZGUgZ2FsZXJpZSBkaXNwb25pYmxlJzsKJGxhbmdbJ2l0ZW0nXSA9ICdJbWFnZSAnOwokbGFuZ1sndGl0bGUnXSA9ICdUaXRyZSc7CiRsYW5nWydkYXRlJ10gPSAnRGF0ZSAnOwokbGFuZ1snbm9maWxlc3RleHQnXSA9ICdBdWN1bmUgaW1hZ2UgZGlzcG9uaWJsZSc7CiRsYW5nWydnYWxsZXJ5dGl0bGUnXSA9ICdUaXRyZSBkZSBsYSBnYWxlcmllJzsKJGxhbmdbJ2NvbW1lbnQnXSA9ICdDb21tZW50YWlyZSc7CiRsYW5nWyd0ZW1wbGF0ZSddID0gJ0dhYmFyaXQnOwokbGFuZ1snaGlkZXBhcmVudGxpbmsnXSA9ICdDYWNoZXIgbGUgbGllbiBkYW5zIGxhIGdhbGVyaWUgcGFyZW50ZSc7CiRsYW5nWyd1c2VkZWZhdWx0J10gPSAnVXRpbGlzZXIgcGFyIGQmZWFjdXRlO2ZhdXQnOwokbGFuZ1snY3JlYXRldGh1bWJzJ10gPSAnKFJlKUNyJmVhY3V0ZTtlciBsZXMgdmlnbmV0dGVzJzsKJGxhbmdbJ3RodW1ic2NyZWF0ZWQnXSA9ICdWaWduZXR0ZXMgY3ImZWFjdXRlO2VzJzsKJGxhbmdbJ3NvcnRieXNldHRpbmdzJ10gPSAnU29ydCBieSB0ZW1wbGF0ZSBzZXR0aW5ncyc7CiRsYW5nWydnYWxsZXJ5dXBkYXRlZCddID0gJ0xhIGdhbGVyaWUgYSAmZWFjdXRlO3QmZWFjdXRlOyBtaXNlICZhZ3JhdmU7IGpvdXIgYXZlYyBzdWNjJmVncmF2ZTtzJzsKJGxhbmdbJ2Vycm9yX3VwZGF0ZWdhbGxlcnlmYWlsZWQnXSA9ICdFY2hlYyBkZSBsYSBtaXNlICZhZ3JhdmU7IGpvdXIgZGUgbGEgZ2FsZXJpZSc7CiRsYW5nWyd0ZW1wbGF0ZXMnXSA9ICdHYWJhcml0cyc7CiRsYW5nWyd0aXRsZV9hdmFpbGFibGVfdGVtcGxhdGVzJ10gPSAnR2FiYXJpdHMgZGlzcG9uaWJsZXMnOwokbGFuZ1sncHJvbXB0X25hbWUnXSA9ICdOb20nOwokbGFuZ1sncHJvbXB0X2RlZmF1bHQnXSA9ICdEJmVhY3V0ZTtmYXV0JzsKJGxhbmdbJ3Byb21wdF9uZXd0ZW1wbGF0ZSddID0gJ0NyJmVhY3V0ZTtlciB1biBub3V2ZWF1IGdhYmFyaXQnOwokbGFuZ1sndGl0bGVfdGVtcGxhdGUnXSA9ICdFZGl0ZXVyIGRlIGdhYmFyaXQnOwokbGFuZ1sncHJvbXB0X3RlbXBsYXRlbmFtZSddID0gJ05vbSBkdSBnYWJhcml0JzsKJGxhbmdbJ3RodW1ibmFpbHNpemUnXSA9ICdUYWlsbGUgZGVzIHZpZ25ldHRlcyAoc3VyIGxlIEZyb250ZW5kKSc7CiRsYW5nWydsZWF2ZWVtcHR5J10gPSAnKGxhaXNzZXIgdmlkZSBwb3VyIHV0aWxpc2VyIGxlcyB2aWduZXR0ZXMgZGVwdWlzIEltYWdlTWFuYWdlciknOwokbGFuZ1snd2lkdGgnXSA9ICdsYXJnZXVyJzsKJGxhbmdbJ2hlaWdodCddID0gJ2hhdXRldXInOwokbGFuZ1sncmVzaXplbWV0aG9kJ10gPSAnTSZlYWN1dGU7dGhvZGUgZGUgcmVkaW1lbnNpb25uZW1lbnQnOwokbGFuZ1snY3JvcCddID0gJ3JlY2FkcmVyJzsKJGxhbmdbJ3NjYWxlJ10gPSAncmVkaW1lbnNpb25uZXIgJzsKJGxhbmdbJ3pvb21jcm9wJ10gPSAnem9vbWVyICZhbXA7IHJlY2FkcmVyJzsKJGxhbmdbJ3pvb21zY2FsZSddID0gJ3pvb21lciAmYW1wOyByZWRpbWVuc2lvbm5lciAnOwokbGFuZ1snbWF4bnVtYmVyJ10gPSAnTm9tYnJlIG1heGltYWwgZCYjMDM5O29iamV0cyBwYXIgcGFnZSc7CiRsYW5nWydzaG93YWxsaW1hZ2VzJ10gPSAnTGFpc3NlciBjZSBwYXJhbSZlZ3JhdmU7dHJlIHZpZGUgbW9udHJlcmEgdG91dGVzIGxlcyBpbWFnZXMgc2FucyBsaWVucyBkZSBwYWdlJzsKJGxhbmdbJ3NvcnRpbmdvcHRpb25zJ10gPSAnT3B0aW9ucyBkZSB0cmknOwokbGFuZ1snc3BlY2lmeXNvcnRmaWVsZHMnXSA9ICdTcCZlYWN1dGU7Y2lmaWVyIGxlIGNoYW1wIHN1ciBsZXF1ZWwgYmFzZXIgbGUgdHJpJzsKJGxhbmdbJ2FzY2VuZGluZyddID0gJ2Nyb2lzc2FudCc7CiRsYW5nWydkZXNjZW5kaW5nJ10gPSAnZCZlYWN1dGU7Y3JvaXNzYW50JzsKJGxhbmdbJ2FkZGZpZWxkJ10gPSAnQWpvdXRlciB1biBjaGFtcCc7CiRsYW5nWydkZWxldGVmaWVsZCddID0gJ0RlbGV0ZSBsYXN0IHJvdyc7CiRsYW5nWydwcm9tcHRfdGVtcGxhdGUnXSA9ICdTb3VyY2UgZHUgZ2FiYXJpdCc7CiRsYW5nWydwcm9tcHRfdGVtcGxhdGVqcyddID0gJ0dhYmFyaXQgSmF2YVNjcmlwdCc7CiRsYW5nWydwcm9tcHRfdGVtcGxhdGVjc3MnXSA9ICdHYWJhcml0ICBDU1MtZmV1aWxsZSBkZSBzdHlsZSc7CiRsYW5nWydyZXNldG9yaWdpbmFsJ10gPSAnUmVzZXQgdG8gb3JpZ2luYWwnOwokbGFuZ1sncmVzZXRvcmlnaW5hbHdhcm5pbmcnXSA9ICdBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gcmVzZXQgdGhlIHRlbXBsYXRlIGNvZGUgdG8gaXRzIG9yaWdpbmFsIGNvZGU/JzsKJGxhbmdbJ3RlbXBsYXRldXBkYXRlZCddID0gJ0xlIGdhYmFyaXQgYSAmZWFjdXRlO3QmZWFjdXRlOyBtaXMgJmFncmF2ZTsgam91ciBhdmVjIHN1Y2MmZWdyYXZlO3MuJzsKJGxhbmdbJ3RlbXBsYXRlYWRkZWQnXSA9ICdMZSBnYWJhcml0IGEgJmVhY3V0ZTt0JmVhY3V0ZTsgYWpvdXQmZWFjdXRlOyBhdmVjIHN1Y2MmZWdyYXZlO3MuJzsKJGxhbmdbJ2Vycm9yX3RlbXBsYXRlbmFtZWV4aXN0cyddID0gJ0xlIG5vbSBkdSBnYWJhcml0IGVzdCBkJmVhY3V0ZTtqJmFncmF2ZTsgYXR0cmlidSZlYWN1dGU7Lic7CiRsYW5nWyd0ZW1wbGF0ZWRlbGV0ZWQnXSA9ICdHYWJhcml0IGVmZmFjJmVhY3V0ZTsnOwokbGFuZ1snYXZhaWxhYmxldmFyaWFibGVzJ10gPSAnVmFyaWFibGUgU21hcnR5IGRlIGdhYmFyaXQgZGlzcG9uaWJsZXMnOwokbGFuZ1snYXZhaWxhYmxldmFyaWFibGVzbGlzdCddID0gJ1ZvaWNpIGxlcyB2YXJpYWJsZXMgcXVlIHZvdXMgcG91dmV6IHV0aWxpc2VyIHBvdXIgcGVyc29ubmFsaXNlciB2b3MgZ2FiYXJpdHMmbmJzcDs6PGJyIC8+PGJyIC8+Cjxjb2RlPnskbW9kdWxlX21lc3NhZ2V9PC9jb2RlPiAtIGVycm9yIG1lc3NhZ2UsIGlzIG9ubHkgc2V0IGlmIHRoZXJlXCdzIGEgbWVzc2FnZTxiciAvPgo8Y29kZT57JGdhbGxlcnl0aXRsZX08L2NvZGU+IC0gdGl0bGUgb2YgdGhlIGdhbGxlcnkuIElmIHRoZXJlIGlzIG5vIHRpdGxlLCB0aGlzIHdpbGwgc2hvdyB0aGUgZGlyZWN0b3J5IG5hbWU8YnIgLz4KPGNvZGU+eyRnYWxsZXJ5Y29tbWVudH08L2NvZGU+IC0gY29tbWVudCBvZiB0aGUgZ2FsbGVyeTxiciAvPgo8Y29kZT57JHBhcmVudGxpbmt9PC9jb2RlPiAtIGxpbmsgdG8gdGhlIHBhcmVudCBmb2xkZXI8YnIgLz4KPGNvZGU+eyRoaWRlcGFyZW50bGlua308L2NvZGU+IC0gdHJ1ZS9mYWxzZTxiciAvPgo8Y29kZT57JGltYWdlY291bnR9PC9jb2RlPiAtIHNob3dzIGUuZy4gIjYgaW1hZ2VzIiwgZGVwZW5kaW5nIG9uIGxhbmd1YWdlPGJyIC8+Cjxjb2RlPnskaXRlbWNvdW50fTwvY29kZT4gLSBudW1iZXIgb2YgaXRlbXMsIGltYWdlcyArIGZvbGRlcnM8YnIgLz4KPGNvZGU+eyRwYWdlc308L2NvZGU+IC0gbnVtYmVyIG9mIHBhZ2VzPGJyIC8+Cjxjb2RlPnskcHJldnBhZ2V9PC9jb2RlPiAtIGxpbmsgdG8gcHJldmlvdXMgcGFnZSwgaWYgYXBwbGljYWJsZTxiciAvPgo8Y29kZT57JG5leHRwYWdlfTwvY29kZT4gLSBsaW5rIHRvIG5leHQgcGFnZSwgaWYgYXBwbGljYWJsZTxiciAvPgo8Y29kZT57JHBhZ2VsaW5rc308L2NvZGU+IC0gbGlua3MgdG8gZWFjaCBleGlzdGluZyBwYWdlPGJyIC8+Cjxjb2RlPnskaW1hZ2VzfTwvY29kZT4gLSBhcnJheSB3aXRoIGtleXM6PGJyIC8+CiAtIDxjb2RlPmZpbGU8L2NvZGU+IC0gcmVsYXRpdmUgcGF0aCB0byB0aGUgb3JpZ2luYWwgaW1hZ2UgKG9yIHN1YmdhbGxlcnkpPGJyIC8+CiAtIDxjb2RlPnRpdGxlPC9jb2RlPiAtIHRpdGxlIG9mIHRoZSBpbWFnZS4gSWYgdGhlcmUgaXMgbm8gdGl0bGUsIHRoaXMgd2lsbCBzaG93IHRoZSBmaWxlbmFtZTxiciAvPgogLSA8Y29kZT5jb21tZW50PC9jb2RlPiAtIGNvbW1lbnQgdG8gdGhlIGltYWdlPGJyIC8+CiAtIDxjb2RlPmZpbGVkYXRlPC9jb2RlPiAtIGNyZWF0aW9uIGRhdGUvdGltZTxiciAvPgogLSA8Y29kZT50aHVtYjwvY29kZT4gLSByZWxhdGl2ZSBwYXRoIHRvIHRoZSB0aHVtYm5haWwuIEluIGNhc2Ugb2YgYSBzdWJnYWxsZXJ5LCB0aGlzIHdpbCByZXZlcnQgdG8gdGhlIGltYWdlIHdoaWNoIGlzIHNldCBhcyBkZWZhdWx0IGluIHRoYXQgc3ViZ2FsbGVyeS4gSWYgbm8gaW1hZ2UgaXMgc2V0IGFzIGRlZmF1bHQsIGEgc3RhbmRhcmQgZm9sZGVyLWljb24gd2lsbCBiZSB1c2VkLjxiciAvPgogLSA8Y29kZT5maWxlaWQ8L2NvZGU+IC0gdW5pcXVlIGlkIGZvciB0aGUgaW1hZ2Ugb3Igc3ViZ2FsbGVyeTxiciAvPgogLSA8Y29kZT5pc2RpcjwvY29kZT4gLSB0cnVlIGlmIGl0XCdzIGEgc3ViZ2FsbGVyeTxiciAvPgonOwokbGFuZ1snb3B0aW9ucyddID0gJ09wdGlvbnMgJzsKJGxhbmdbJ2FsbG93ZWRfZXh0ZW5zaW9ucyddID0gJ0V4dGVuc2lvbnMgYXV0b3JpcyZlYWN1dGU7ZXMnOwokbGFuZ1sndXNlX2NvbW1lbnRfd3lzaXd5ZyddID0gJ1V0aWxpc2VyIHVuICZlYWN1dGU7ZGl0ZXVyIHZpc3VlbCAoV1lTSVdZRykgZGFucyBsZSBjaGFtcCBjb21tZW50YWlyZSBkZSBsYSBnYWxlcmllJzsKJGxhbmdbJ29wdGlvbnN1cGRhdGVkJ10gPSAnTGVzIHImZWFjdXRlO2dsYWdsZXMgb250ICZlYWN1dGU7dCZlYWN1dGU7IHByaXMgZW4gY29tcHRlLic7CiRsYW5nWydpbWFnZSddID0gJ2ltYWdlICc7CiRsYW5nWydpbWFnZXMnXSA9ICdpbWFnZXMgJzsKJGxhbmdbJ3ByZXZwYWdlJ10gPSAncHImZWFjdXRlO2MmZWFjdXRlO2RlbnRlJzsKJGxhbmdbJ25leHRwYWdlJ10gPSAnc3VpdmFudGUnOwokbGFuZ1snZGVmYXVsdGdhbGxlcnljb21tZW50J10gPSAnTWVyY2kgZCYjMDM5O2F2b2lyIGluc3RhbGwmZWFjdXRlOyBsZSBtb2R1bGUgR2FsbGVyeS4gU2kgdm91cyBhdmV6IHVwbG9hZCZlYWN1dGU7IGRlcyBpbWFnZXMgZGFucyBsZSBkb3NzaWVyICYjMDM5O3VwbG9hZHMvaW1hZ2VzL0dhbGxlcnkmIzAzOTsgIHZvdXMgbGVzIHZlcnJleiBkZXNzb3VzLiBWb3VzIHBvdXZleiBtb2RpZmllciBsZXMgdGl0cmVzLCBsZXMgZGVzY3JpcHRpb25zIGV0IGxhIHRhaWxsZSBkZXMgdmlnbmV0dGVzIGRhbnMgbGEgc2VjdGlvbiBhZG1pbi4gRCZlYWN1dGU7Y291dnJleiB0b3V0ZXMgbGVzIGF1dHJlcyBwb3NzaWJpbGl0JmVhY3V0ZTtzIGRhbnMgbCYjMDM5O2FpZGUgZHUgbW9kdWxlLic7CiRsYW5nWydoZWxwX2RpciddID0gJ1BhcmFtJmVhY3V0ZTt0cmVyIHBvdXIgdW4gZG9zc2llciBzcCZlYWN1dGU7Y2lmaXF1ZSwgcmVsYXRpZiAmYWdyYXZlOyB1cGxvYWRzL2ltYWdlcy9HYWxsZXJ5Lyc7CiRsYW5nWydoZWxwX3RlbXBsYXRlJ10gPSAnVXRpbGlzZXIgdW4gZ2FiYXJpdCBkaWZmJmVhY3V0ZTtyZW50IGVucmVnaXN0ciZlYWN1dGU7IGVuIGJhc2UgZGUgZG9ubiZlYWN1dGU7ZXMuIENlIGdhYmFyaXQgZG9pdCBleGlzdGVyIGV0ICZlY2lyYzt0cmUgdmlzaWJsZSBkYW5zIGwmIzAzOTtvbmdsZXQgJnF1b3Q7Z2FiYXJpdCZxdW90OyBkdSBwYW5uZWF1IGQmIzAzOTthZG1pbmlzdHJhdGlvbiBkZSBHYWxsZXJ5LCBiaWVuIHF1JiMwMzk7aWwgbmUgc29pdCBwYXMgbiZlYWN1dGU7Y2Vzc2FpcmUgZCYjMDM5OyZlY2lyYzt0cmUgbWlzIHBhciBkJmVhY3V0ZTtmYXV0LiBTaSBjZSBwYXJhbSZlZ3JhdmU7dHJlIG4mIzAzOTtlc3QgcGFzIHNwJmVhY3V0ZTtjaWZpJmVhY3V0ZTssIGFsb3JzIGxlIGdhYmFyaXQgcXVpIGVzdCBhc3NpZ24mZWFjdXRlOyBhdSBkb3NzaWVyIHNlcmEgdXRpbGlzJmVhY3V0ZTssIGV0IHNpbm9uIGxlIGdhYmFyaXQgcGFyIGQmZWFjdXRlO2ZhdXQuJzsKJGxhbmdbJ2hlbHBfbnVtYmVyJ10gPSAnTm9tYnJlIG1heGltYWwgZGUgdmlnbmV0dGVzICZhZ3JhdmU7IGFmZmljaGVyIChwYXIgcGFnZSkuIExhaXNzZXIgdmlkZSBhZmZpY2hlcmEgdG91dGVzIGxlcyBpbWFnZXMnOwokbGFuZ1snaGVscF9zdGFydCddID0gJ0QmZWFjdXRlO2J1dGVyICZhZ3JhdmU7IGxhICZlYWN1dGU7bmkmZWFjdXRlO21lIGltYWdlLiBMYWlzc2V6IHZpZGUgcG91ciBkJmVhY3V0ZTtidXRlciAmYWdyYXZlOyBsYSBwcmVtaSZlZ3JhdmU7cmUuJzsKJGxhbmdbJ2hlbHBfc2hvdyddID0gJ092ZXJpZGUgd2hpY2ggaW1hZ2VzIGhhdmUgdG8gYmUgc2hvd24uIFBvc3NpYmxlIHZhbHVlcyBhcmU6Cjx1bD4KPGxpPiYjMDM5O2FjdGl2ZSYjMDM5OyAtIHRvIGRpc3BsYXkgdGhlIGltYWdlcyBtYXJrZWQgYXMgYWN0aXZlIChkZWZhdWx0KTwvbGk+CjxsaT4mIzAzOTtpbmFjdGl2ZSYjMDM5OyAtIHRvIGRpc3BsYXkgb25seSB0aGUgaW1hZ2VzIG1hcmtlZCBhcyBpbmFjdGl2ZSA8L2xpPgo8bGk+JiMwMzk7YWxsJiMwMzk7IC0gdG8gZGlzcGxheSBhbGwgaW1hZ2VzPC9saT4KPC91bD4KJzsKJGxhbmdbJ2hlbHBfY2F0ZWdvcnknXSA9ICdQb3VyIGFmZmljaGVyIHVuaXF1ZW1lbnQgbGVzIGltYWdlcy9nYWxlcmllcyBkJiMwMzk7dW5lIGdhbGVyaWVzIHByJmVhY3V0ZTtjaXNlLiBVdGlsaXNlciAqIGFwciZlZ3JhdmU7cyBsZSBub20gcG91ciBhZmZpY2hlciBsZXMgZW5mYW50cy4gVm91cyBwb3V2ZXogdXRpbGlzZXIgcGx1c2lldXJzIGNhdCZlYWN1dGU7Z29yaWVzIGVuIGxlcyBzJmVhY3V0ZTtwYXJhbnQgcGFyIHVuZSB2aXJndWxlLiBMYWlzc2VyIHZpZGUgYWZmaWNoZXJhIHRvdXRlcyBsZXMgY2F0JmVhY3V0ZTtnb3JpZXMuJzsKJGxhbmdbJ2hlbHBfYWN0aW9uJ10gPSAnT3ZlcnJpZGUgdGhlIGRlZmF1bHQgYWN0aW9uLiBVc2UgaXQgaW4gY29tYmluYXRpb24gd2l0aCB0aGUgYWJvdmUgcGFyYW1ldGVycy4gUG9zc2libGUgdmFsdWVzIGFyZToKPHVsPgo8bGk+XCdzaG93cmFuZG9tXCcgLSB0byBkaXNwbGF5IGEgc2V0IG9mIHJhbmRvbSB0aHVtYi1pbWFnZXMgKGFwcGxpZXMgb25seSB0byB0aGUgaW1hZ2VzIHdoaWNoIGFyZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlLCBkZWZhdWx0cyB0byBhIG51bWJlciBvZiA2IGltYWdlcykuIFVzZSBcJy8qXCcgYWZ0ZXIgdGhlIGRpcmVjdG9yeW5hbWUgaW4gdGhlIGRpciBwYXJhbWV0ZXIgdG8gaW5jbHVkZSBpbWFnZXMgZnJvbSBzdWJkaXJlY3RvcmllczwvbGk+CjxsaT5cJ3Nob3dsYXRlc3RcJyAtIHRvIGRpc3BsYXkgdGhlIG1vc3QgcmVjZW50bHkgYWRkZWQgaW1hZ2VzIChhcHBsaWVzIG9ubHkgdG8gdGhlIGltYWdlcyB3aGljaCBhcmUgc3RvcmVkIGluIHRoZSBkYXRhYmFzZSwgZGVmYXVsdHMgdG8gYSBudW1iZXIgb2YgNiBpbWFnZXMpIFRoZSBkaXIgcGFyYW1ldGVyIGNhbiBiZSBzZXQsIG9yIHRoZSBkZWZhdWx0IEdhbGxlcnktcm9vdCB3aWxsIGJlIHVzZWQuIFN1YmRpcmVjdG9yaWVzIGFyZSBhdXRvbWF0aWNhbGx5IGluY2x1ZGVkPC9saT4KPGxpPlwnc2hvd2xhdGVzdGRpclwnIC0gdG8gZGlzcGxheSBhIHNldCBvZiByYW5kb20gdGh1bWItaW1hZ2VzIGZyb20gdGhlIG1vc3QgcmVjZW50bHkgYWRkZWQgZGlyZWN0b3J5IChhcHBsaWVzIG9ubHkgdG8gdGhlIGltYWdlcyB3aGljaCBhcmUgc3RvcmVkIGluIHRoZSBkYXRhYmFzZSwgZGVmYXVsdHMgdG8gYSBudW1iZXIgb2YgNiBpbWFnZXMpPC9saT4KPC91bD4KTm90ZSB0aGF0IGltYWdlcyBhcmUgb25seSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIHdoZW4gdGhlIGdhbGxlcnkgaXMgdmlzaXRlZCBpbiB0aGUgYWRtaW4uCic7CiRsYW5nWydjaGFuZ2Vsb2cnXSA9ICc8dWw+CjxsaT5WZXJzaW9uIDEuMS4gOCBOb3ZlbWJlciAyMDA5LiBBZGRlZCBzb3J0aW5nIGFuZCBkcmFnJmRyb3AgZmVhdHVyZSAoRlIgIzM5MDcgIzQyMTApLCBNb3ZlZCB0aHVtYm5haWxzZXR0aW5ncyB0byB0ZW1wbGF0ZXN0YWIsIE1ha2UgZ2FsbGVyaWVzIHNlYXJjaGFibGUgKEZSICMzOTU2KSwgQ3JlYXRlIGJhY2tlbmQgdGh1bWJzIGlmIHRoZXkgZG9uXCd0IGV4aXN0IGluIElNIChGUiAjNDEwMSksIEZpeCBmb3IgQlIgIzQwMjcsIEFkZGVkIGZpbGVpZCB0byBpbWFnZS1vYmplY3QgKEZSICM0MjU5KTwvbGk+CjxsaT5WZXJzaW9uIDEuMC4zLiA4IFNlcHRlbWJlciAyMDA5LiBCdWdmaXggZm9yIFsjNDAwMV0sIEltcHJvdmVkIHN5bmNocm9uaXppbmcgdGhlIGRhdGFiYXNlIHRvIGZpbGVzLCBhbmQgb3RoZXIgbWlub3IgaW1wcm92ZW1lbnRzLjwvbGk+CjxsaT5WZXJzaW9uIDEuMC4yLiA1IFNlcHRlbWJlciAyMDA5LiBCdWdmaXggZm9yIFsjMzk4M10gcmVnYXJkaW5nIHNwYWNlcyBpbiBkaXJlY3RvcnkgbmFtZXMsIEFkZGVkIHRlbXBsYXRlcyBGYW5jeWJveCBhbmQgTHl0ZWJveF9zbGlkZXNob3cgYXMgaW4gRmVhdHVyZSByZXF1ZXN0cyBbIzM5NDRdIGFuZCBbIzM5NjddPC9saT4KPGxpPlZlcnNpb24gMS4wLjEuIDIzIEF1Z3VzdCAyMDA5LiBBcHBseSB0aHVtYm5haWwtc2V0dGluZ3Mgb24gXCdBbGJ1bS1jb3ZlcnNcJyBbIzM5MjRdLCBCdWdmaXggZm9yIFsjMzkyN10sIEFkZGVkIG1pc3NpbmcgL2RpdiB0byB0aGlja2JveC10ZW1wbGF0ZSwgZml4ZWQgYW4gaXNzdWUgd2l0aCBnZW5lcmF0aW5nIHRodW1ibmFpbHMgd2hlbiBubyB0aHVtYnMgYXZhaWxhYmxlIGluIEltYWdlTWFuYWdlciwgaW1wcm92ZWQgdGhlIG5hbWluZyBvZiB0aHVtYnMsIEJ1Z2ZpeCBmb3IgWyMzOTMxXSwgUHJldmVudCBkaXNwbGF5IHRoZSBjb250ZW50IG9mIGdhbGxlcmllcyB0aGF0IGFyZSBzZXQgYXMgaW5hY3RpdmUuPC9saT4KPGxpPlZlcnNpb24gMS4wLiAxNyBBdWd1c3QgMjAwOS4gUGFnaW5hdGlvbiBwYXJhbWV0ZXJzIGFkZGVkLCBTdGFuZGFyZCB0ZW1wbGF0ZXMgY2hhbmdlZCBhY2NvcmRpbmdseSwgRXh0ZW5kZWQgdGhlIG1vZHVsZS1oZWxwLCBBZGRlZCBmdW5jdGlvbnMgdG8gc2hvdyByYW5kb20gb3IgbGF0ZXN0IGltYWdlcywgU3VwcG9ydCBvZiBwcmV0dHktdXJscywgVmFyaW91cyBpbXByb3ZlbWVudHM8L2xpPgo8bGk+VmVyc2lvbiAwLjYuIDkgQXVndXN0IDIwMDkuIEluaXRpYWwgQmV0YSBSZWxlYXNlLjwvbGk+CjwvdWw+JzsKJGxhbmdbJ2hlbHAnXSA9ICc8aDM+UXVlIGZhaXQgY2UgbW9kdWxlPzwvaDM+CjxwPlRoZSBHYWxsZXJ5IG1vZHVsZSBpcyBhbiBlYXN5IHRvIHVzZSBwaG90byBnYWxsZXJ5IHdoaWNoIGF1dG9tYXRpY2FsbHkgc2hvd3MgdGhlIGltYWdlcyBvZiBhIHNwZWNpZmllZCBkaXJlY3RvcnkuIFN1YmRpcmVjdG9yaWVzIHdpbGwgYmUgc2hvd24gYXMgc3ViZ2FsbGVyaWVzLiBJdCBoYXMgbG90cyBvZiBmZWF0dXJlcywgc3VjaCBhcyBhdXRvbWF0aWMgdGh1bWJuYWlsaW5nLCB0aGUgdXNlIG9mIG11bHRpcGxlIExpZ2h0Ym94LWxpa2UgdGVtcGxhdGVzIG9yIGFueSBjc3MvamF2YXNjcmlwdCB0ZW1wbGF0ZSB5b3UgbGlrZSwgYW5kIHlvdSBjYW4gZ2l2ZSB0aXRsZXMgYW5kIGRlc2NyaXB0aW9ucyB0byB5b3VyIGdhbGxlcmllcyBhcyB3ZWxsIGFzIHlvdXIgcGhvdG9zLjwvcD4KPGgzPkNvbW1lbnQgbCYjMDM5O3V0aWxpc2VyIDwvaDM+CjxwPkZpcnN0LCBpbnNlcnQgdGhlIG1vZHVsZSB3aXRoIHRoZSA8Y29kZT57R2FsbGVyeX08L2NvZGU+IHRhZyBpbnRvIHlvdXIgcGFnZSBvciB0ZW1wbGF0ZSBhbnl3aGVyZSB5b3Ugd2hpc2guIFRoZW4gdXBsb2FkIHNvbWUgaW1hZ2VzIHdpdGggdGhlIEltYWdlIE1hbmFnZXIsIEZpbGUgTWFuYWdlciAoZS5nLiBtdWx0aXBsZSBpbWFnZXMgaW4gemlwZmlsZSkgb3IgRlRQIHRvIHRoZSB1cGxvYWRzL2ltYWdlcy9HYWxsZXJ5LyBkaXJlY3RvcnkuPC9wPgo8cD5UaGF0XCdzIGl0ITwvcD4KPHA+SWYgeW91IHdhbnQgbW9yZSBwaG90byBnYWxsZXJpZXMsIHNpbXBseSBjcmVhdGUgYSBzdWJkaXJlY3RvcnkgYW5kIHVwbG9hZCB5b3VyIHBob3RvcyBhcyBkZXNjcmliZWQuIEJ5IGFkZGluZyBwYXJhbWV0ZXJzIHRvIHRoZSA8Y29kZT57R2FsbGVyeX08L2NvZGU+IHRhZywgeW91IGNhbiBlYXNpbHkgbWFuaXB1bGF0ZSB3aGljaCBzdWJnYWxsZXJ5IHdpbGwgYmUgc2hvd24gaW4gd2hpY2ggdGVtcGxhdGUsIGUuZy4gPGNvZGU+e0dhbGxlcnkgZGlyPSJob2xpZGF5cy9OZXRoZXJsYW5kczIwMDkiIHRlbXBsYXRlPSJMaWdodGJveCJ9PC9jb2RlPjwvcD4KPHA+QnkgZGVmYXVsdCB0aGUgdGh1bWJuYWlscyBmcm9tIHRoZSBJbWFnZSBNYW5hZ2VyIGFyZSB1c2VkIHRvIGRpc3BsYXkgdGhlIHBob3RvIGdhbGxlcmllcy48L3A+CjxoMz5PcHRpb25zIGF2YW5jJmVhY3V0ZTtlcywgbWFpcyB0b3V0IGF1c3NpIGZhY2lsZXMgJmFncmF2ZTsgdXRpbGlzZXI8L2gzPgo8cD5EYW5zIGxhIHNlY3Rpb25zIGFkbWluLCB2b3VzIGF2ZXogdW4gdGFzIGQmIzAzOTthdXRyZXMgb3B0aW9ucyA6PC9wPgo8dWw+CjxsaT5TZXQgYSBwaG90byBhcyB0aGUgZGVmYXVsdCBmb3IgYSBnYWxsZXJ5LCBzbyBpdCB3aWxsIHNob3cgaW4gdGhlIHBhcmVudCBnYWxsZXJ5IGFzIGEgXCdjb3ZlclwnIGluIHN0ZWFkIG9mIHRoZSBkZWZhdWx0IGZvbGRlci1pY29uLjwvbGk+CjxsaT5HaXZlIHRpdGxlcyBhbmQgZGVzY3JpcHRpb25zIHRvIGdhbGxlcmllcy48L2xpPgo8bGk+U2V0IGEgZGVmYXVsdCB0ZW1wbGF0ZSBmb3IgZWFjaCBnYWxsZXJ5LjwvbGk+CjxsaT5TZXQgdGh1bWJuYWlsIHNpemVzIGZvciBlYWNoIHRlbXBsYXRlLCB3aXRoIHBvc2liaWxpdGllcyB0byBzY2FsZSwgY3JvcCBhbmQvb3Igem9vbSB0aGUgaW1hZ2VzLjwvbGk+CjxsaT5TcGVjaWZ5IGZvciBlYWNoIHRlbXBsYXRlIGluIHdoaWNoIG9yZGVyIHRoZSBwaG90b3MgaGF2ZSB0byBiZSBzb3J0ZWQuPC9saT4KPGxpPk92ZXJydWxlIHRoZSBzb3J0aW5nIG1hbnVhbGx5IGJ5IGRyYWdnaW5nJmRyb3BwaW5nIHRoZSBwaG90b3MuCjxsaT5HaXZlIHRpdGxlcyBhbmQgZGVzY3JpcHRpb25zIHRvIHBob3Rvcy48L2xpPgo8bGk+U3dpdGNoIGEgc3BlY2lmaWMgcGhvdG8gb3IgZ2FsbGVyeSB0byBpbmFjdGl2ZSwgcHJldmVudGluZyBpdCBmcm9tIGRpc3BsYXkuPC9saT4KPGxpPkVkaXQvY29weSB0ZW1wbGF0ZXMgb3IgY3JlYXRlIG5ldyBvbmVzLiBDaGVjayB0aGUgaW5mby1pY29uIGJlbmVhdGggdGhlIHRlbXBsYXRlLWNvZGUgZm9yIHRoZSBhdmFpbGFibGUgdmFyaWFibGVzLjwvbGk+CjwvdWw+CjxwPkluIG9yZGVyIHRvIGVkaXQgdGVtcGxhdGVzLCB0aGUgdXNlciBtdXN0IGJlbG9uZyB0byBhIGdyb3VwIHdpdGggdGhlIFwnTW9kaWZ5IFRlbXBsYXRlc1wnIHBlcm1pc3Npb24uIFRvIGVkaXQgdGhlIGdsb2JhbCBHYWxsZXJ5IG9wdGlvbnMsIHRoZSB1c2VyIG11c3QgYmVsb25nIHRvIGEgZ3JvdXAgd2l0aCB0aGUgXCdNb2RpZnkgU2l0ZSBQcmVmZXJlbmNlc1wnIHBlcm1pc3Npb24uPC9wPgo8cD5BbGwgdGl0bGVzLCBkZXNjcmlwdGlvbnMgYW5kIHNldHRpbmdzIGFyZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlLiBUaGUgZGF0YWJhc2Ugd2lsbCBzeW5jaHJvbml6ZSB3aXRoIHRoZSBmaWxlZGlyZWN0b3J5IGVhY2ggdGltZSB0aGUgYWNjb3JkaW5nIGdhbGxlcnkgaXMgdmlzaXRlZCBpbiB0aGUgR2FsbGVyeS1hZG1pbi4gQSBsaXR0bGUgd2FybmluZzogd2hlbiB5b3UgbW92ZSBhbiBpbWFnZSBvciBzdWJkaXJlY3RvcnkgdG8gYW5vdGhlciBkaXJlY3RvcnksIHlvdSB3aWxsIGxvb3NlIGl0cyB0aXRsZSwgZGVzY3JpcHRpb24gYW5kIHNldHRpbmdzLjwvcD4KPGgzPlN1cHBvcnQ8L2gzPgo8cD5UaGlzIG1vZHVsZSBkb2VzIG5vdCBpbmNsdWRlIGNvbW1lcmNpYWwgc3VwcG9ydC4gSG93ZXZlciwgdGhlcmUgYXJlIGEgbnVtYmVyIG9mIHJlc291cmNlcyBhdmFpbGFibGUgdG8gaGVscCB5b3Ugd2l0aCBpdDo8L3A+Cjx1bD4KPGxpPkZvciB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhpcyBtb2R1bGUsIEZBUXMsIG9yIHRvIGZpbGUgYSBGZWF0dXJlIFJlcXVlc3Qgb3IgQnVnIFJlcG9ydCwgcGxlYXNlIHZpc2l0IHRoZSBNb2R1bGUgRm9yZ2UKPGEgaHJlZj0iaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9wcm9qZWN0cy9nYWxsZXJ5LyI+R2FsbGVyeSBQYWdlPC9hPi48L2xpPgo8bGk+QWRkaXRpb25hbCBkaXNjdXNzaW9uIG9mIHRoaXMgbW9kdWxlIG1heSBhbHNvIGJlIGZvdW5kIGluIHRoZSA8YSBocmVmPSJodHRwOi8vZm9ydW0uY21zbWFkZXNpbXBsZS5vcmciPkNNUyBNYWRlIFNpbXBsZSBGb3J1bXM8L2E+LjwvbGk+CjxsaT5MYXN0bHksIHlvdSBtYXkgaGF2ZSBzb21lIHN1Y2Nlc3MgZW1haWxpbmcgdGhlIGF1dGhvciBkaXJlY3RseS48L2xpPgo8L3VsPgo8cD5BcyBwZXIgdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCBhcy1pcy4gUGxlYXNlIHJlYWQgdGhlIHRleHQgb2YgdGhlIGxpY2Vuc2UgZm9yIHRoZSBmdWxsIGRpc2NsYWltZXIuPC9wPgoKPGgzPkNvcHlyaWdodCBhbmQgTGljZW5zZTwvaDM+CjxwPkNvcHlyaWdodCAmY29weTsgMjAwOSwgSm9zIC08YSBocmVmPSJtYWlsdG86am9zdmRAbGl2ZS5ubCI+am9zdmRAbGl2ZS5ubDwvYT4tLiBBbGwgUmlnaHRzIEFyZSBSZXNlcnZlZC48L3A+CjxwPlRoaXMgbW9kdWxlIGhhcyBiZWVuIHJlbGVhc2VkIHVuZGVyIHRoZSA8YSBocmVmPSJodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwiPkdOVSBQdWJsaWMgTGljZW5zZTwvYT4uIFlvdSBtdXN0IGFncmVlIHRvIHRoaXMgbGljZW5zZSBiZWZvcmUgdXNpbmcgdGhlIG1vZHVsZS48L3A+Cic7CiRsYW5nWyd1dG1hJ10gPSAnMTU2ODYxMzUzLjE0NzcyMTY5ODguMTI1NTQ2Njg5Ni4xMjU2ODQxODIzLjEyNTcyNjkxNzIuMyc7CiRsYW5nWyd1dG16J10gPSAnMTU2ODYxMzUzLjEyNTcyNjkxNzIuMy4zLnV0bWNzcj1nb29nbGV8dXRtY2NuPShvcmdhbmljKXx1dG1jbWQ9b3JnYW5pY3x1dG1jdHI9Y21zbXMnOwokbGFuZ1sncWNhJ10gPSAnUDAtODEwNDAzNjcxLTEyNTU0NjY4OTYwODQnOwokbGFuZ1sndXRtYiddID0gJzE1Njg2MTM1My4xLjEwLjEyNTcyNjkxNzInOwokbGFuZ1sndXRtYyddID0gJzE1Njg2MTM1Myc7Cj8+]]></data>
	</file>
	<file>
	  <filename>/lang/ext/nb_NO.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ0dhbGxlcnkgJzsKJGxhbmdbJ21vZGRlc2NyaXB0aW9uJ10gPSAnRGVuIGVua2xlc3RlIG0mYXJpbmc7dGVuICZhcmluZzsgYmVoYW5kbGUgb2cgdmlzZSBmb3RvYWxidW0gcCZhcmluZzsnOwokbGFuZ1snZGVzY3JpcHRpb24nXSA9ICdFdCBnYWxsZXJpIHNvbSBlciBlbmtlbHQgJmFyaW5nOyBicnVrZSBzb20gYXV0b21hdGlzayB2aXNlciBiaWxkZW5lIGkgZW4gYW5naXR0IGthdGFsb2cnOwokbGFuZ1sncG9zdGluc3RhbGwnXSA9ICdHYWxsZXJ5IG1vZHVsZW4gYmxlIGluc3RhbGxlcnQnOwokbGFuZ1snaW5zdGFsbGVkJ10gPSAnR2FsbGVyeSBtb2R1bGVuIG1lZCB2ZXJzam9uICVzIGJsZSBpbnN0YWxsZXJ0JzsKJGxhbmdbJ3VwZ3JhZGVkJ10gPSAnR2FsbGVyeSBtb2R1bGVuIGVyIG9wcGdyYWRlcnQgdGlsIHZlcnNqb24gJXMuJzsKJGxhbmdbJ3Bvc3R1bmluc3RhbGwnXSA9ICdHYWxsZXJ5IG1vZHVsZW4gYmxlIGF2aW5zdGFsbGVydCc7CiRsYW5nWyd1bmluc3RhbGxlZCddID0gJ0dhbGxlcnkgbW9kdWxlbiBibGUgYXZpbnN0YWxsZXJ0JzsKJGxhbmdbJ3JlYWxseV91bmluc3RhbGwnXSA9ICdFciBkdSBzaWtrZXIgcCZhcmluZzsgYXQgZHUgdmlsIGF2aW5zdGFsbGVyZSBHYWxsZXJ5PyBEZXR0ZSBoYXIgaW5nZW4gZWZmZWt0IHAmYXJpbmc7IGJpbGRlbmUsIG1lbiBhbGxlIGtvbW1lbnRhci1kYXRhIG9nIG1pbmlhdHlyYmlsZGVyIG9wcHJldHRldCBhdiBHYWxsZXJ5IHZpbCBnJmFyaW5nOyB0YXB0Lic7CiRsYW5nWydhY2Nlc3NkZW5pZWQnXSA9ICdUaWxnYW5nIG5la3RldC4gVmVubmxpZ3N0IHNqZWtrIGRpbmUgcmV0dGlnaGV0ZXIuJzsKJGxhbmdbJ2FjdGlvbnMnXSA9ICdIYW5kbGluZ2VyJzsKJGxhbmdbJ2FjdGl2ZSddID0gJ0FrdGl2ZSc7CiRsYW5nWydhcHBseSddID0gJ1V0ZiZvc2xhc2g7cic7CiRsYW5nWydhcmV5b3VzdXJlJ10gPSAnRXIgZHUgc2lra2VyIHAmYXJpbmc7IGF0IGR1IHZpbCBzbGV0dGU/JzsKJGxhbmdbJ2NhbmNlbCddID0gJ0F2YnJ5dCc7CiRsYW5nWydjb3B5J10gPSAnS29waWVyJzsKJGxhbmdbJ2RlZmF1bHQnXSA9ICdTdGFuZGFyZCc7CiRsYW5nWydkZWxldGUnXSA9ICdTbGV0dCc7CiRsYW5nWydlZGl0J10gPSAnUmVkaWdlcic7CiRsYW5nWydlcnJvciddID0gJ0ZlaWwhJzsKJGxhbmdbJ3NldGZhbHNlJ10gPSAnU2V0dCB1c2Fubic7CiRsYW5nWydzZXR0cnVlJ10gPSAnU2V0dCBzYW5uJzsKJGxhbmdbJ3N1Ym1pdCddID0gJ0xhZ3JlJzsKJGxhbmdbJ2dhbGxlcmllcyddID0gJ0dhbGxlcmllcic7CiRsYW5nWydnYWxsZXJ5cGF0aCddID0gJ0dhbGxlcmknOwokbGFuZ1snZWRpdGdhbGxlcnknXSA9ICdSZWRpZ2VyIGdhbGxlcmknOwokbGFuZ1snYWRkZ2FsbGVyeSddID0gJ0xlZ2cgdGlsIGdhbGxlcmknOwokbGFuZ1snbm9nYWxsZXJpZXN0ZXh0J10gPSAnSW5nZW4gZ2FsbGVyaSB0aWxnamVuZ2VsaWcnOwokbGFuZ1snaXRlbSddID0gJ0JpbGRlJzsKJGxhbmdbJ3RpdGxlJ10gPSAnVGl0dGVsJzsKJGxhbmdbJ2RhdGUnXSA9ICdEYXRvJzsKJGxhbmdbJ25vZmlsZXN0ZXh0J10gPSAnSW5nZW4gYmlsZGVyIHRpbGdqZW5nZWxpZ2UnOwokbGFuZ1snZ2FsbGVyeXRpdGxlJ10gPSAnR2FsbGVyaXRpdHRlbCc7CiRsYW5nWydjb21tZW50J10gPSAnS29tbWVudGFyJzsKJGxhbmdbJ3RlbXBsYXRlJ10gPSAnTWFsJzsKJGxhbmdbJ2hpZGVwYXJlbnRsaW5rJ10gPSAnU2tqdWwgbGVua2UgdGlsIGZvcmVsZHJlIGdhbGxlcmknOwokbGFuZ1sndXNlZGVmYXVsdCddID0gJ2Jlbnl0dCBzdGFuZGFyZCc7CiRsYW5nWydzb3J0YnlzZXR0aW5ncyddID0gJ1NvcnRlciBldHRlciBtYWxpbm5zdGlsbGluZ2VyJzsKJGxhbmdbJ2dhbGxlcnl1cGRhdGVkJ10gPSAnR2FsbGVyaSBvcHBkYXRlcnQnOwokbGFuZ1snZXJyb3JfdXBkYXRlZ2FsbGVyeWZhaWxlZCddID0gJ09wcGRhdGVyaW5nIGF2IGdhbGxlcmlldCBmZWlsZXQnOwokbGFuZ1sndGVtcGxhdGVzJ10gPSAnTWFsZXInOwokbGFuZ1sndGl0bGVfYXZhaWxhYmxlX3RlbXBsYXRlcyddID0gJ1RpbGdqZW5nZWxpZ2UgbWFsZXInOwokbGFuZ1sncHJvbXB0X25hbWUnXSA9ICdOYXZuJzsKJGxhbmdbJ3Byb21wdF9kZWZhdWx0J10gPSAnU3RhbmRhcmQnOwokbGFuZ1sncHJvbXB0X25ld3RlbXBsYXRlJ10gPSAnT3BwcmV0dCBueSBtYWwnOwokbGFuZ1sndGl0bGVfdGVtcGxhdGUnXSA9ICdNYWwgcmVkaWdlcmVyJzsKJGxhbmdbJ3Byb21wdF90ZW1wbGF0ZW5hbWUnXSA9ICdNYWxuYXZuJzsKJGxhbmdbJ3RodW1ibmFpbHNpemUnXSA9ICdNaW5pYXR5cmJpbGRlc3Qmb3NsYXNoO3JyZWxzZSAoRnJvbnRlbmQpJzsKJGxhbmdbJ2xlYXZlZW1wdHknXSA9ICcobGEgZGV0dGUgZmVsdCB0b210IG9tIGR1IHZpbCBiZW55dHRlIHN0YW5kYXJkIG1pbmlhdHlyYmlsZGVyIGZyYSBJbWFnZU1hbmFnZXIpJzsKJGxhbmdbJ3dpZHRoJ10gPSAnYnJlZGRlJzsKJGxhbmdbJ2hlaWdodCddID0gJ2gmb3NsYXNoO3lkZSc7CiRsYW5nWydyZXNpemVtZXRob2QnXSA9ICdza2FsZXJpbmdzbWV0b2RlJzsKJGxhbmdbJ2Nyb3AnXSA9ICdrbGlwcCc7CiRsYW5nWydzY2FsZSddID0gJ3NrYWxlcic7CiRsYW5nWyd6b29tY3JvcCddID0gJ3pvb20gJmFtcDsga2xpcHAnOwokbGFuZ1snem9vbXNjYWxlJ10gPSAnem9vbSAmYW1wOyBza2FsZXInOwokbGFuZ1snbWF4bnVtYmVyJ10gPSAnTWFrc2ltdW0gYW50YWxsIGVuaGV0ZXIgcGVyIHNpZGUnOwokbGFuZ1snc2hvd2FsbGltYWdlcyddID0gJyZBcmluZzsgbGEgZGV0dGUgc3QmYXJpbmc7IHRvbXQgdmlsIHZpc2UgYWxsZSBiaWxkZXIgdXRlbiBzaWRlbGVua2VyJzsKJGxhbmdbJ3NvcnRpbmdvcHRpb25zJ10gPSAnU29ydGVyaW5nc3ZhbGcnOwokbGFuZ1snc3BlY2lmeXNvcnRmaWVsZHMnXSA9ICdTcGVzaWZpc2VyIGZlbHQoZXIpICZhcmluZzsgc29ydGVyZSBldHRlcic7CiRsYW5nWydhc2NlbmRpbmcnXSA9ICdzdGlnZW5kZSc7CiRsYW5nWydkZXNjZW5kaW5nJ10gPSAnc3lua2VuZGUnOwokbGFuZ1snYWRkZmllbGQnXSA9ICdMZWdnIHRpbCBmZWx0JzsKJGxhbmdbJ2RlbGV0ZWZpZWxkJ10gPSAnU2xldHQgc2lzdGUgcmFkJzsKJGxhbmdbJ3Byb21wdF90ZW1wbGF0ZSddID0gJ01hbGtpbGRlJzsKJGxhbmdbJ3Byb21wdF90ZW1wbGF0ZWpzJ10gPSAnTWFsIGphdmFja3JpcHQnOwokbGFuZ1sncHJvbXB0X3RlbXBsYXRlY3NzJ10gPSAnTWFsIENTUy1zdGlsYXJrJzsKJGxhbmdbJ3Jlc2V0b3JpZ2luYWwnXSA9ICdSZXNldCB0byBvcmlnaW5hbCc7CiRsYW5nWydyZXNldG9yaWdpbmFsd2FybmluZyddID0gJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byByZXNldCB0aGUgdGVtcGxhdGUgY29kZSB0byBpdHMgb3JpZ2luYWwgY29kZT8nOwokbGFuZ1sncmVzZXRvcmlnaW5hbCddID0gJ1RpbGJha2VzdGlsbCB0aWwgb3JpZ2luYWwnOwokbGFuZ1sncmVzZXRvcmlnaW5hbHdhcm5pbmcnXSA9ICdFciBkdSBzaWtrZXIgcCZhcmluZzsgYXQgZHUgdmlsIHRpbGJha2VzdGlsbGUgbWFsa29kZW4gdGlsIGRlbnMgb3JpZ2luYWxlIGtvZGU/JzsKJGxhbmdbJ3RlbXBsYXRldXBkYXRlZCddID0gJ01hbGVuIGJsZSBvcHBkYXRlcnQnOwokbGFuZ1sndGVtcGxhdGVhZGRlZCddID0gJ01hbGVuIGJsZSBsYWd0IHRpbCc7CiRsYW5nWydlcnJvcl90ZW1wbGF0ZW5hbWVleGlzdHMnXSA9ICdNYWxuYXZuZXQgZWtzaXN0ZXJlciBhbGxlcmVkZSc7CiRsYW5nWyd0ZW1wbGF0ZWRlbGV0ZWQnXSA9ICdNYWwgc2xldHRldCc7CiRsYW5nWydhdmFpbGFibGV2YXJpYWJsZXMnXSA9ICdUaWxnamVuZ2VsaWdlIFNtYXJ0eXZhcmlhYmxlciBmb3IgbWFsJzsKJGxhbmdbJ2F2YWlsYWJsZXZhcmlhYmxlc2xpc3QnXSA9ICdUaGVzZSBhcmUgdGhlIHZhcmlhYmxlcyB5b3UgY2FuIHVzZSB0byBjdXN0b21pemUgeW91ciB0ZW1wbGF0ZTo8YnIgLz48YnIgLz4KPGNvZGU+eyRtb2R1bGVfbWVzc2FnZX08L2NvZGU+IC0gZXJyb3IgbWVzc2FnZSwgaXMgb25seSBzZXQgaWYgdGhlcmUmIzAzOTtzIGEgbWVzc2FnZTxiciAvPgo8Y29kZT57JGdhbGxlcnl0aXRsZX08L2NvZGU+IC0gdGl0bGUgb2YgdGhlIGdhbGxlcnkuIElmIHRoZXJlIGlzIG5vIHRpdGxlLCB0aGlzIHdpbGwgc2hvdyB0aGUgZGlyZWN0b3J5IG5hbWU8YnIgLz4KPGNvZGU+eyRnYWxsZXJ5Y29tbWVudH08L2NvZGU+IC0gY29tbWVudCBvZiB0aGUgZ2FsbGVyeTxiciAvPgo8Y29kZT57JHBhcmVudGxpbmt9PC9jb2RlPiAtIGxpbmsgdG8gdGhlIHBhcmVudCBmb2xkZXI8YnIgLz4KPGNvZGU+eyRoaWRlcGFyZW50bGlua308L2NvZGU+IC0gdHJ1ZS9mYWxzZTxiciAvPgo8Y29kZT57JGltYWdlY291bnR9PC9jb2RlPiAtIHNob3dzIGUuZy4gJnF1b3Q7NiBpbWFnZXMmcXVvdDssIGRlcGVuZGluZyBvbiBsYW5ndWFnZTxiciAvPgo8Y29kZT57JGl0ZW1jb3VudH08L2NvZGU+IC0gbnVtYmVyIG9mIGl0ZW1zLCBpbWFnZXMgKyBmb2xkZXJzPGJyIC8+Cjxjb2RlPnskcGFnZXN9PC9jb2RlPiAtIG51bWJlciBvZiBwYWdlczxiciAvPgo8Y29kZT57JHByZXZwYWdlfTwvY29kZT4gLSBsaW5rIHRvIHByZXZpb3VzIHBhZ2UsIGlmIGFwcGxpY2FibGU8YnIgLz4KPGNvZGU+eyRuZXh0cGFnZX08L2NvZGU+IC0gbGluayB0byBuZXh0IHBhZ2UsIGlmIGFwcGxpY2FibGU8YnIgLz4KPGNvZGU+eyRwYWdlbGlua3N9PC9jb2RlPiAtIGxpbmtzIHRvIGVhY2ggZXhpc3RpbmcgcGFnZTxiciAvPgo8Y29kZT57JGltYWdlc308L2NvZGU+IC0gYXJyYXkgd2l0aCBrZXlzOjxiciAvPgogLSA8Y29kZT5maWxlPC9jb2RlPiAtIHJlbGF0aXZlIHBhdGggdG8gdGhlIG9yaWdpbmFsIGltYWdlIChvciBzdWJnYWxsZXJ5KTxiciAvPgogLSA8Y29kZT50aXRsZTwvY29kZT4gLSB0aXRsZSBvZiB0aGUgaW1hZ2UuIElmIHRoZXJlIGlzIG5vIHRpdGxlLCB0aGlzIHdpbGwgc2hvdyB0aGUgZmlsZW5hbWU8YnIgLz4KIC0gPGNvZGU+Y29tbWVudDwvY29kZT4gLSBjb21tZW50IHRvIHRoZSBpbWFnZTxiciAvPgogLSA8Y29kZT5maWxlZGF0ZTwvY29kZT4gLSBjcmVhdGlvbiBkYXRlL3RpbWU8YnIgLz4KIC0gPGNvZGU+dGh1bWI8L2NvZGU+IC0gcmVsYXRpdmUgcGF0aCB0byB0aGUgdGh1bWJuYWlsLiBJbiBjYXNlIG9mIGEgc3ViZ2FsbGVyeSwgdGhpcyB3aWwgcmV2ZXJ0IHRvIHRoZSBpbWFnZSB3aGljaCBpcyBzZXQgYXMgZGVmYXVsdCBpbiB0aGF0IHN1YmdhbGxlcnkuIElmIG5vIGltYWdlIGlzIHNldCBhcyBkZWZhdWx0LCBhIHN0YW5kYXJkIGZvbGRlci1pY29uIHdpbGwgYmUgdXNlZC48YnIgLz4KIC0gPGNvZGU+ZmlsZWlkPC9jb2RlPiAtIHVuaXF1ZSBpZCBmb3IgdGhlIGltYWdlIG9yIHN1YmdhbGxlcnk8YnIgLz4KIC0gPGNvZGU+aXNkaXI8L2NvZGU+IC0gdHJ1ZSBpZiBpdCYjMDM5O3MgYSBzdWJnYWxsZXJ5PGJyIC8+JzsKJGxhbmdbJ29wdGlvbnMnXSA9ICdWYWxnJzsKJGxhbmdbJ2FsbG93ZWRfZXh0ZW5zaW9ucyddID0gJ1RpbGxhdHRlIHV0dmlkZWxzZXIoRXh0ZW5zaW9ucyknOwokbGFuZ1sndXNlX2NvbW1lbnRfd3lzaXd5ZyddID0gJ0Jlbnl0dCBlbiBXWVNJV1lHIHJlZGlnZXJlciBwJmFyaW5nOyBHYWxsZXJ5IGtvbW1lbnRhcmZlbHRldCc7CiRsYW5nWydvcHRpb25zdXBkYXRlZCddID0gJ1ZhbGdlbmUgYmxlIG9wcGRhdGVydC4nOwokbGFuZ1snaW1hZ2UnXSA9ICdCaWxkZSc7CiRsYW5nWydpbWFnZXMnXSA9ICdiaWxkZXInOwokbGFuZ1sncHJldnBhZ2UnXSA9ICdGb3JyaWdlJzsKJGxhbmdbJ25leHRwYWdlJ10gPSAnbmVzdGUnOwokbGFuZ1snZGVmYXVsdGdhbGxlcnljb21tZW50J10gPSAnVGhhbmsgeW91IGZvciBpbnN0YWxsaW5nIHRoZSBHYWxsZXJ5IG1vZHVsZS4gSWYgeW91IGhhdmUgdXBsb2FkZWQgc29tZSBpbWFnZXMgdG8gdGhlICYjMDM5O3VwbG9hZHMvaW1hZ2VzL0dhbGxlcnkvJiMwMzk7IGZvbGRlciwgeW91IHdpbGwgc2VlIHRoZW0gYmVsb3cuIFlvdSBjYW4gZWRpdCB0aXRsZXMsIGRlc2NyaXB0aW9ucyBhbmQgdGh1bWJuYWlsIHNpemVzIGluIHRoZSBhZG1pbiBzZWN0aW9uLiBDaGVjayBvdXQgYWxsIHRoZSBvdGhlciBmZWF0dXJlcyB0aGlzIG1vZHVsZSBvZmZlcnMgaW4gdGhlIG1vZHVsZS1oZWxwLic7CiRsYW5nWydoZWxwX2RpciddID0gJ1BhcmFtZXRlciBmb3IgJmFyaW5nOyBzcGVzaWZpc2VyZSBlbiBrYXRhbG9nLCByZWxhdGl2dCB0aWwgdXBsb2Fkcy9pbWFnZXMvR2FsbGVyeS8nOwokbGFuZ1snaGVscF90ZW1wbGF0ZSddID0gJ0Jlbnl0dCBlbiBhbm5lbiBkYXRhYmFzZW1hbCBmb3IgdmlzbmluZyBhdiBmb3RnYWxsZXJpZXQuIERlbm5lIG1hbCBtJmFyaW5nOyBla3Npc3RlcmUgb2cgdiZhZWxpZztyZSBzeW5saWcgaSBtYWwtZmFuZW4gaSBnYWxsZXJ5LWFkbWlub21yJmFyaW5nO2RldCwgbWVuIGRlbiB0cmVuZ2VyIGlra2UgdiZhZWxpZztyZSBzYXR0IHNvbSBzdGFuZGFyZG1hbC4gT20gZGVubmUgcGFyYW1ldGVyIGlra2UgZXIgc2F0dCwgdmlsIG1hbGVuIHRpbGtueXR0dGV0IGRlbm5la2F0YWxvZ2VuIGJsaSBiZW55dHRldCwgZWxsZXJzIGJsaXIgc3RhbmRhcmRtYWxlbiBiZW55dHRldC4nOwokbGFuZ1snaGVscF9udW1iZXInXSA9ICdNYWtzaW11bSBhbnRhbGwgbWluaWF0eXJiaWxkZXIgJmFyaW5nOyB2aXNlIChwZXIgc2lkZSkuIFZlZCAmYXJpbmc7IGxhIGRlbm5lIHBhcmFtZXRlciB2JmFlbGlnO3JlIHRvbSB2aWwgdmlzZSBhbGxlIGJpbGRlci4nOwokbGFuZ1snaGVscF9zdGFydCddID0gJ1N0YXJ0IHAmYXJpbmc7IG5kZSBiaWxkZS4gVmVkICZhcmluZzsgbGEgZGVubmUgcGFyYW1ldGVyIHRvbSB2aWwgc3RhcnRlIHAmYXJpbmc7IGYmb3NsYXNoO3JzdGUgYmlsZGUuJzsKJGxhbmdbJ2hlbHBfc2hvdyddID0gJ092ZXJzdHlyIGh2aWxrZSBiaWxkZXIgJmFyaW5nOyB2aXNlLiBNdWxpZ2UgdmVyZGllciBlcjoKPHVsPgo8bGk+JiMwMzk7YWN0aXZlJiMwMzk7IC0gJmFyaW5nOyB2aXNlIGRlIGJpbGRlciBzb20gZXIgbWFya2VydCBha3RpdiAoc3RhbmRhcmQpPC9saT4KPGxpPiYjMDM5O2luYWN0aXZlJiMwMzk7IC0gJmFyaW5nOyB2aXNlIGt1biBkZSBiaWxkZXIgc29tIGVyIHNhdHQgc29tIGluYWt0aXZlPC9saT4KPGxpPiYjMDM5O2FsbCYjMDM5OyAtICZhcmluZzsgdmlzZSBhbGxlIGJpbGRlcjwvbGk+CjwvdWw+Cic7CiRsYW5nWydoZWxwX2NhdGVnb3J5J10gPSAnJkFyaW5nOyB2aXNlIGt1biBiaWxkZXIvZ2FsbGVyaWVyIHRpbGVnbmV0IHRpbCBkZSBzcGVzaWZpc2VydGUga2F0ZWdvcmllbmUuIEJlbnl0dCAqIGV0dGVyIG5hdm5ldCBmb3IgJmFyaW5nOyB2aXNlIGJhcm5hIG9ncyZhcmluZzsuIEZsZXJlIGthdGVnb3JpZXIga2FuIGJlbnl0dGVzIG9tIGRlIHNlcHJhcmVyZXMgbWVkIGtvbW1hLiBWZWQgJmFyaW5nOyBsYSBkZXR0ZSBzdCZhcmluZzsgYmxhbmt0LCB2aWwgYWxsZSBrYXRhZ29yaWVyIHZpc2VzLic7CiRsYW5nWydoZWxwX2FjdGlvbiddID0gJ092ZXJyaWRlIHRoZSBkZWZhdWx0IGFjdGlvbi4gVXNlIGl0IGluIGNvbWJpbmF0aW9uIHdpdGggdGhlIGFib3ZlIHBhcmFtZXRlcnMuIFBvc3NpYmxlIHZhbHVlcyBhcmU6Cjx1bD4KPGxpPiYjMDM5O3Nob3dyYW5kb20mIzAzOTsgLSB0byBkaXNwbGF5IGEgc2V0IG9mIHJhbmRvbSB0aHVtYi1pbWFnZXMgKGFwcGxpZXMgb25seSB0byB0aGUgaW1hZ2VzIHdoaWNoIGFyZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlLCBkZWZhdWx0cyB0byBhIG51bWJlciBvZiA2IGltYWdlcykuIFVzZSAmIzAzOTsvKiYjMDM5OyBhZnRlciB0aGUgZGlyZWN0b3J5bmFtZSBpbiB0aGUgZGlyIHBhcmFtZXRlciB0byBpbmNsdWRlIGltYWdlcyBmcm9tIHN1YmRpcmVjdG9yaWVzPC9saT4KPGxpPiYjMDM5O3Nob3dsYXRlc3QmIzAzOTsgLSB0byBkaXNwbGF5IHRoZSBtb3N0IHJlY2VudGx5IGFkZGVkIGltYWdlcyAoYXBwbGllcyBvbmx5IHRvIHRoZSBpbWFnZXMgd2hpY2ggYXJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UsIGRlZmF1bHRzIHRvIGEgbnVtYmVyIG9mIDYgaW1hZ2VzKSBUaGUgZGlyIHBhcmFtZXRlciBjYW4gYmUgc2V0LCBvciB0aGUgZGVmYXVsdCBHYWxsZXJ5LXJvb3Qgd2lsbCBiZSB1c2VkLiBTdWJkaXJlY3RvcmllcyBhcmUgYXV0b21hdGljYWxseSBpbmNsdWRlZDwvbGk+CjxsaT4mIzAzOTtzaG93bGF0ZXN0ZGlyJiMwMzk7IC0gdG8gZGlzcGxheSBhIHNldCBvZiByYW5kb20gdGh1bWItaW1hZ2VzIGZyb20gdGhlIG1vc3QgcmVjZW50bHkgYWRkZWQgZGlyZWN0b3J5IChhcHBsaWVzIG9ubHkgdG8gdGhlIGltYWdlcyB3aGljaCBhcmUgc3RvcmVkIGluIHRoZSBkYXRhYmFzZSwgZGVmYXVsdHMgdG8gYSBudW1iZXIgb2YgNiBpbWFnZXMpPC9saT4KPC91bD4KTm90ZSB0aGF0IGltYWdlcyBhcmUgb25seSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIHdoZW4gdGhlIGdhbGxlcnkgaXMgdmlzaXRlZCBpbiB0aGUgYWRtaW4uJzsKJGxhbmdbJ2NoYW5nZWxvZyddID0gJzx1bD4KPGxpPlZlcnNpb24gMS4xLiA4IE5vdmVtYmVyIDIwMDkuIEFkZGVkIHNvcnRpbmcgYW5kIGRyYWcmYW1wO2Ryb3AgZmVhdHVyZSAoRlIgIzM5MDcgIzQyMTApLCBNb3ZlZCB0aHVtYm5haWxzZXR0aW5ncyB0byB0ZW1wbGF0ZXN0YWIsIE1ha2UgZ2FsbGVyaWVzIHNlYXJjaGFibGUgKEZSICMzOTU2KSwgQ3JlYXRlIGJhY2tlbmQgdGh1bWJzIGlmIHRoZXkgZG9uJiMwMzk7dCBleGlzdCBpbiBJTSAoRlIgIzQxMDEpLCBGaXggZm9yIEJSICM0MDI3LCBBZGRlZCBmaWxlaWQgdG8gaW1hZ2Utb2JqZWN0IChGUiAjNDI1OSk8L2xpPgo8bGk+VmVyc2lvbiAxLjAuMy4gOCBTZXB0ZW1iZXIgMjAwOS4gQnVnZml4IGZvciBbIzQwMDFdLCBJbXByb3ZlZCBzeW5jaHJvbml6aW5nIHRoZSBkYXRhYmFzZSB0byBmaWxlcywgYW5kIG90aGVyIG1pbm9yIGltcHJvdmVtZW50cy48L2xpPgo8bGk+VmVyc2lvbiAxLjAuMi4gNSBTZXB0ZW1iZXIgMjAwOS4gQnVnZml4IGZvciBbIzM5ODNdIHJlZ2FyZGluZyBzcGFjZXMgaW4gZGlyZWN0b3J5IG5hbWVzLCBBZGRlZCB0ZW1wbGF0ZXMgRmFuY3lib3ggYW5kIEx5dGVib3hfc2xpZGVzaG93IGFzIGluIEZlYXR1cmUgcmVxdWVzdHMgWyMzOTQ0XSBhbmQgWyMzOTY3XTwvbGk+CjxsaT5WZXJzaW9uIDEuMC4xLiAyMyBBdWd1c3QgMjAwOS4gQXBwbHkgdGh1bWJuYWlsLXNldHRpbmdzIG9uICYjMDM5O0FsYnVtLWNvdmVycyYjMDM5OyBbIzM5MjRdLCBCdWdmaXggZm9yIFsjMzkyN10sIEFkZGVkIG1pc3NpbmcgL2RpdiB0byB0aGlja2JveC10ZW1wbGF0ZSwgZml4ZWQgYW4gaXNzdWUgd2l0aCBnZW5lcmF0aW5nIHRodW1ibmFpbHMgd2hlbiBubyB0aHVtYnMgYXZhaWxhYmxlIGluIEltYWdlTWFuYWdlciwgaW1wcm92ZWQgdGhlIG5hbWluZyBvZiB0aHVtYnMsIEJ1Z2ZpeCBmb3IgWyMzOTMxXSwgUHJldmVudCBkaXNwbGF5IHRoZSBjb250ZW50IG9mIGdhbGxlcmllcyB0aGF0IGFyZSBzZXQgYXMgaW5hY3RpdmUuPC9saT4KPGxpPlZlcnNpb24gMS4wLiAxNyBBdWd1c3QgMjAwOS4gUGFnaW5hdGlvbiBwYXJhbWV0ZXJzIGFkZGVkLCBTdGFuZGFyZCB0ZW1wbGF0ZXMgY2hhbmdlZCBhY2NvcmRpbmdseSwgRXh0ZW5kZWQgdGhlIG1vZHVsZS1oZWxwLCBBZGRlZCBmdW5jdGlvbnMgdG8gc2hvdyByYW5kb20gb3IgbGF0ZXN0IGltYWdlcywgU3VwcG9ydCBvZiBwcmV0dHktdXJscywgVmFyaW91cyBpbXByb3ZlbWVudHM8L2xpPgo8bGk+VmVyc2lvbiAwLjYuIDkgQXVndXN0IDIwMDkuIEluaXRpYWwgQmV0YSBSZWxlYXNlLjwvbGk+CjwvdWw+JzsKJGxhbmdbJ2hlbHAnXSA9ICc8aDM+V2hhdCBEb2VzIFRoaXMgRG8/PC9oMz4KPHA+VGhlIEdhbGxlcnkgbW9kdWxlIGlzIGFuIGVhc3kgdG8gdXNlIHBob3RvIGdhbGxlcnkgd2hpY2ggYXV0b21hdGljYWxseSBzaG93cyB0aGUgaW1hZ2VzIG9mIGEgc3BlY2lmaWVkIGRpcmVjdG9yeS4gU3ViZGlyZWN0b3JpZXMgd2lsbCBiZSBzaG93biBhcyBzdWJnYWxsZXJpZXMuIEl0IGhhcyBsb3RzIG9mIGZlYXR1cmVzLCBzdWNoIGFzIGF1dG9tYXRpYyB0aHVtYm5haWxpbmcsIHRoZSB1c2Ugb2YgbXVsdGlwbGUgTGlnaHRib3gtbGlrZSB0ZW1wbGF0ZXMgb3IgYW55IGNzcy9qYXZhc2NyaXB0IHRlbXBsYXRlIHlvdSBsaWtlLCBhbmQgeW91IGNhbiBnaXZlIHRpdGxlcyBhbmQgZGVzY3JpcHRpb25zIHRvIHlvdXIgZ2FsbGVyaWVzIGFzIHdlbGwgYXMgeW91ciBwaG90b3MuPC9wPgo8aDM+SG93IERvIEkgVXNlIEl0PC9oMz4KPHA+Rmlyc3QsIGluc2VydCB0aGUgbW9kdWxlIHdpdGggdGhlIDxjb2RlPntHYWxsZXJ5fTwvY29kZT4gdGFnIGludG8geW91ciBwYWdlIG9yIHRlbXBsYXRlIGFueXdoZXJlIHlvdSB3aGlzaC4gVGhlbiB1cGxvYWQgc29tZSBpbWFnZXMgd2l0aCB0aGUgSW1hZ2UgTWFuYWdlciwgRmlsZSBNYW5hZ2VyIChlLmcuIG11bHRpcGxlIGltYWdlcyBpbiB6aXBmaWxlKSBvciBGVFAgdG8gdGhlIHVwbG9hZHMvaW1hZ2VzL0dhbGxlcnkvIGRpcmVjdG9yeS48L3A+CjxwPlRoYXQmIzAzOTtzIGl0ITwvcD4KPHA+SWYgeW91IHdhbnQgbW9yZSBwaG90byBnYWxsZXJpZXMsIHNpbXBseSBjcmVhdGUgYSBzdWJkaXJlY3RvcnkgYW5kIHVwbG9hZCB5b3VyIHBob3RvcyBhcyBkZXNjcmliZWQuIEJ5IGFkZGluZyBwYXJhbWV0ZXJzIHRvIHRoZSA8Y29kZT57R2FsbGVyeX08L2NvZGU+IHRhZywgeW91IGNhbiBlYXNpbHkgbWFuaXB1bGF0ZSB3aGljaCBzdWJnYWxsZXJ5IHdpbGwgYmUgc2hvd24gaW4gd2hpY2ggdGVtcGxhdGUsIGUuZy4gPGNvZGU+e0dhbGxlcnkgZGlyPSZxdW90O2hvbGlkYXlzL05ldGhlcmxhbmRzMjAwOSZxdW90OyB0ZW1wbGF0ZT0mcXVvdDtMaWdodGJveCZxdW90O308L2NvZGU+PC9wPgo8cD5CeSBkZWZhdWx0IHRoZSB0aHVtYm5haWxzIGZyb20gdGhlIEltYWdlIE1hbmFnZXIgYXJlIHVzZWQgdG8gZGlzcGxheSB0aGUgcGhvdG8gZ2FsbGVyaWVzLjwvcD4KPGgzPkFkdmFuY2VkIE9wdGlvbnMsIGJ1dCBzdGlsbCBlYXN5IHRvIHVzZTwvaDM+CjxwPkluIHRoZSBhZG1pbiBzZWN0aW9uIHlvdSBoYXZlIGxvdHMgb2Ygb3RoZXIgb3B0aW9uczo8L3A+Cjx1bD4KPGxpPlNldCBhIHBob3RvIGFzIHRoZSBkZWZhdWx0IGZvciBhIGdhbGxlcnksIHNvIGl0IHdpbGwgc2hvdyBpbiB0aGUgcGFyZW50IGdhbGxlcnkgYXMgYSAmIzAzOTtjb3ZlciYjMDM5OyBpbiBzdGVhZCBvZiB0aGUgZGVmYXVsdCBmb2xkZXItaWNvbi48L2xpPgo8bGk+R2l2ZSB0aXRsZXMgYW5kIGRlc2NyaXB0aW9ucyB0byBnYWxsZXJpZXMuPC9saT4KPGxpPlNldCBhIGRlZmF1bHQgdGVtcGxhdGUgZm9yIGVhY2ggZ2FsbGVyeS48L2xpPgo8bGk+U2V0IHRodW1ibmFpbCBzaXplcyBmb3IgZWFjaCB0ZW1wbGF0ZSwgd2l0aCBwb3NpYmlsaXRpZXMgdG8gc2NhbGUsIGNyb3AgYW5kL29yIHpvb20gdGhlIGltYWdlcy48L2xpPgo8bGk+U3BlY2lmeSBmb3IgZWFjaCB0ZW1wbGF0ZSBpbiB3aGljaCBvcmRlciB0aGUgcGhvdG9zIGhhdmUgdG8gYmUgc29ydGVkLjwvbGk+CjxsaT5PdmVycnVsZSB0aGUgc29ydGluZyBtYW51YWxseSBieSBkcmFnZ2luZyZhbXA7ZHJvcHBpbmcgdGhlIHBob3Rvcy4KPGxpPkdpdmUgdGl0bGVzIGFuZCBkZXNjcmlwdGlvbnMgdG8gcGhvdG9zLjwvbGk+CjxsaT5Td2l0Y2ggYSBzcGVjaWZpYyBwaG90byBvciBnYWxsZXJ5IHRvIGluYWN0aXZlLCBwcmV2ZW50aW5nIGl0IGZyb20gZGlzcGxheS48L2xpPgo8bGk+RWRpdC9jb3B5IHRlbXBsYXRlcyBvciBjcmVhdGUgbmV3IG9uZXMuIENoZWNrIHRoZSBpbmZvLWljb24gYmVuZWF0aCB0aGUgdGVtcGxhdGUtY29kZSBmb3IgdGhlIGF2YWlsYWJsZSB2YXJpYWJsZXMuPC9saT4KPC91bD4KPHA+SW4gb3JkZXIgdG8gZWRpdCB0ZW1wbGF0ZXMsIHRoZSB1c2VyIG11c3QgYmVsb25nIHRvIGEgZ3JvdXAgd2l0aCB0aGUgJiMwMzk7TW9kaWZ5IFRlbXBsYXRlcyYjMDM5OyBwZXJtaXNzaW9uLiBUbyBlZGl0IHRoZSBnbG9iYWwgR2FsbGVyeSBvcHRpb25zLCB0aGUgdXNlciBtdXN0IGJlbG9uZyB0byBhIGdyb3VwIHdpdGggdGhlICYjMDM5O01vZGlmeSBTaXRlIFByZWZlcmVuY2VzJiMwMzk7IHBlcm1pc3Npb24uPC9wPgo8cD5BbGwgdGl0bGVzLCBkZXNjcmlwdGlvbnMgYW5kIHNldHRpbmdzIGFyZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlLiBUaGUgZGF0YWJhc2Ugd2lsbCBzeW5jaHJvbml6ZSB3aXRoIHRoZSBmaWxlZGlyZWN0b3J5IGVhY2ggdGltZSB0aGUgYWNjb3JkaW5nIGdhbGxlcnkgaXMgdmlzaXRlZCBpbiB0aGUgR2FsbGVyeS1hZG1pbi4gQSBsaXR0bGUgd2FybmluZzogd2hlbiB5b3UgbW92ZSBhbiBpbWFnZSBvciBzdWJkaXJlY3RvcnkgdG8gYW5vdGhlciBkaXJlY3RvcnksIHlvdSB3aWxsIGxvb3NlIGl0cyB0aXRsZSwgZGVzY3JpcHRpb24gYW5kIHNldHRpbmdzLjwvcD4KPGgzPlN1cHBvcnQ8L2gzPgo8cD5UaGlzIG1vZHVsZSBkb2VzIG5vdCBpbmNsdWRlIGNvbW1lcmNpYWwgc3VwcG9ydC4gSG93ZXZlciwgdGhlcmUgYXJlIGEgbnVtYmVyIG9mIHJlc291cmNlcyBhdmFpbGFibGUgdG8gaGVscCB5b3Ugd2l0aCBpdDo8L3A+Cjx1bD4KPGxpPkZvciB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhpcyBtb2R1bGUsIEZBUXMsIG9yIHRvIGZpbGUgYSBGZWF0dXJlIFJlcXVlc3Qgb3IgQnVnIFJlcG9ydCwgcGxlYXNlIHZpc2l0IHRoZSBNb2R1bGUgRm9yZ2UKPGEgaHJlZj0iaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9wcm9qZWN0cy9nYWxsZXJ5LyI+R2FsbGVyeSBQYWdlPC9hPi48L2xpPgo8bGk+QWRkaXRpb25hbCBkaXNjdXNzaW9uIG9mIHRoaXMgbW9kdWxlIG1heSBhbHNvIGJlIGZvdW5kIGluIHRoZSA8YSBocmVmPSJodHRwOi8vZm9ydW0uY21zbWFkZXNpbXBsZS5vcmciPkNNUyBNYWRlIFNpbXBsZSBGb3J1bXM8L2E+LjwvbGk+CjxsaT5MYXN0bHksIHlvdSBtYXkgaGF2ZSBzb21lIHN1Y2Nlc3MgZW1haWxpbmcgdGhlIGF1dGhvciBkaXJlY3RseS48L2xpPgo8L3VsPgo8cD5BcyBwZXIgdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCBhcy1pcy4gUGxlYXNlIHJlYWQgdGhlIHRleHQgb2YgdGhlIGxpY2Vuc2UgZm9yIHRoZSBmdWxsIGRpc2NsYWltZXIuPC9wPgoKPGgzPkNvcHlyaWdodCBhbmQgTGljZW5zZTwvaDM+CjxwPkNvcHlyaWdodCAmYW1wO2NvcHk7IDIwMDksIEpvcyAtPGEgaHJlZj0ibWFpbHRvOmpvc3ZkQGxpdmUubmwiPmpvc3ZkQGxpdmUubmw8L2E+LS4gQWxsIFJpZ2h0cyBBcmUgUmVzZXJ2ZWQuPC9wPgo8cD5UaGlzIG1vZHVsZSBoYXMgYmVlbiByZWxlYXNlZCB1bmRlciB0aGUgPGEgaHJlZj0iaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMIj5HTlUgUHVibGljIExpY2Vuc2U8L2E+LiBZb3UgbXVzdCBhZ3JlZSB0byB0aGlzIGxpY2Vuc2UgYmVmb3JlIHVzaW5nIHRoZSBtb2R1bGUuPC9wPic7CiRsYW5nWyd1dG16J10gPSAnMTU2ODYxMzUzLjEyNTAyOTczODAuMTc1Mi40Mi51dG1jY249KHJlZmVycmFsKXx1dG1jc3I9aGVsbWluc2VuLm5vfHV0bWNjdD0vaW5zdGFsbC91cGdyYWRlLnBocHx1dG1jbWQ9cmVmZXJyYWwnOwokbGFuZ1sndXRtYSddID0gJzE1Njg2MTM1My4xNzkwNTI2MjMwODQxMTAxMDAuMTIxMDQyMzU3Ny4xMjU3NjMxODIxLjEyNTc2MzUxMDAuMjA4OCc7CiRsYW5nWydxY2EnXSA9ICcxMjEwOTcxNjkwLTI3MzA4MDczLTgxOTUyODMyJzsKJGxhbmdbJ3V0bWMnXSA9ICcxNTY4NjEzNTMnOwokbGFuZ1sndXRtYiddID0gJzE1Njg2MTM1My4yLjEwLjEyNTc2MzUxMDAnOwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/lang/ext/nl_NL.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ0dhbGxlcnkgJzsKJGxhbmdbJ21vZGRlc2NyaXB0aW9uJ10gPSAnRGUgZWVudm91ZGlnc3RlIG1hbmllciBvbSBmb3RvLWdhbGVyaWUmZXVtbDtuIHRlIGJlaGVyZW4gZW4gd2VlciB0ZSBnZXZlbi4nOwokbGFuZ1snZGVzY3JpcHRpb24nXSA9ICdFZW4gZ2VicnVpa2Vyc3ZyaWVuZGVsaWprZSBmb3RvLWdhbGVyaWUgZGllIGF1dG9tYXRpc2NoIGRlIGZvdG8mIzAzOTtzIHVpdCBlZW4gc3BlY2lmaWVrZSBkaXJlY3Rvcnkgd2VlcmdlZWZ0Lic7CiRsYW5nWydwb3N0aW5zdGFsbCddID0gJ0RlIEdhbGxlcnkgbW9kdWxlIGlzIGdlJml1bWw7bnN0YWxsZWVyZC4nOwokbGFuZ1snaW5zdGFsbGVkJ10gPSAnRGUgR2FsbGVyeSBtb2R1bGUgdmVyc2llICVzIGlzIGdlJml1bWw7bnN0YWxsZWVyZC4nOwokbGFuZ1sndXBncmFkZWQnXSA9ICdEZSBHYWxsZXJ5IG1vZHVsZSBpcyBiaWpnZXdlcmt0IG5hYXIgdmVyc2llICVzLic7CiRsYW5nWydwb3N0dW5pbnN0YWxsJ10gPSAnRGUgR2FsbGVyeSBtb2R1bGUgaXMgdmVyd2lqZGVyZCc7CiRsYW5nWyd1bmluc3RhbGxlZCddID0gJ0RlIEdhbGxlcnkgbW9kdWxlIGlzIHZlcndpamRlcmQnOwokbGFuZ1sncmVhbGx5X3VuaW5zdGFsbCddID0gJ1dlZXQgdSB6ZWtlciBkYXQgdSBkZSBHYWxsZXJ5IG1vZHVsZSB3aWx0IHZlcndpamRlcmVuPyBEaXQgaGVlZnQgZ2VlbiBpbnZsb2VkIG9wIGZvdG8mIzAzOTtzLCBtYWFyIHRpdGVscywgb21zY2hyaWp2aW5nZW4gZW4gYWxsZSBtaW5pYXR1cmVuIGRpZSBkb29yIEdhbGxlcnkgd2FyZW4gZ2VnZW5lcmVlcmQgenVsbGVuIHZlcmxvcmVuIGdhYW4uJzsKJGxhbmdbJ2FjY2Vzc2RlbmllZCddID0gJ1RvZWdhbmcgZ2V3ZWlnZXJkLiBDb250cm9sZWVyIHV3IHJlY2h0ZW4uJzsKJGxhbmdbJ2FjdGlvbnMnXSA9ICdBY3RpZXMnOwokbGFuZ1snYWN0aXZlJ10gPSAnQWN0aWVmJzsKJGxhbmdbJ2FwcGx5J10gPSAnVG9lcGFzc2VuJzsKJGxhbmdbJ2FyZXlvdXN1cmUnXSA9ICdXZWV0IHUgemVrZXIgZGF0IHUgd2lsdCB2ZXJ3aWpkZXJlbj8nOwokbGFuZ1snY2FuY2VsJ10gPSAnQW5udWxlZXInOwokbGFuZ1snY29weSddID0gJ0tvcGllZXInOwokbGFuZ1snZGVmYXVsdCddID0gJ1N0YW5kYWFyZCc7CiRsYW5nWydkZWxldGUnXSA9ICdWZXJ3aWpkZXInOwokbGFuZ1snZWRpdCddID0gJ1dpanppZyc7CiRsYW5nWydlcnJvciddID0gJ0ZvdXQhJzsKJGxhbmdbJ3NldGZhbHNlJ10gPSAnWmV0IG9wIE9ud2FhciAoZmFsc2UpJzsKJGxhbmdbJ3NldHRydWUnXSA9ICdaZXQgb3AgV2FhciAodHJ1ZSknOwokbGFuZ1snc3VibWl0J10gPSAnT3BzbGFhbic7CiRsYW5nWydnYWxsZXJpZXMnXSA9ICdHYWxlcmllJmV1bWw7bic7CiRsYW5nWydnYWxsZXJ5cGF0aCddID0gJ0dhbGVyaWUnOwokbGFuZ1snZWRpdGdhbGxlcnknXSA9ICdCZXdlcmsgZ2FsZXJpZSc7CiRsYW5nWydhZGRnYWxsZXJ5J10gPSAnVm9lZyBlZW4gZ2FsZXJpZSB0b2UnOwokbGFuZ1snbm9nYWxsZXJpZXN0ZXh0J10gPSAnR2VlbiBnYWxlcmllJmV1bWw7biBiZXNjaGlrYmFhcic7CiRsYW5nWydpdGVtJ10gPSAnQWZiZWVsZGluZyc7CiRsYW5nWyd0aXRsZSddID0gJ1RpdGVsJzsKJGxhbmdbJ2RhdGUnXSA9ICdEYXR1bSc7CiRsYW5nWydub2ZpbGVzdGV4dCddID0gJ0dlZW4gZm90byYjMDM5O3MgYWFud2V6aWcnOwokbGFuZ1snZ2FsbGVyeXRpdGxlJ10gPSAnR2FsZXJpZSBUaXRlbCc7CiRsYW5nWydjb21tZW50J10gPSAnT21zY2hyaWp2aW5nJzsKJGxhbmdbJ3RlbXBsYXRlJ10gPSAnU2phYmxvb24nOwokbGFuZ1snaGlkZXBhcmVudGxpbmsnXSA9ICdWZXJiZXJnIGxpbmsgbmFhciBib3ZlbmxpZ2dlbmRlIGdhbGVyaWUnOwokbGFuZ1sndXNlZGVmYXVsdCddID0gJ2dlYnJ1aWsgc3RhbmRhYXJkJzsKJGxhbmdbJ3NvcnRieXNldHRpbmdzJ10gPSAnU29ydGVlciBjb25mb3JtIHNqYWJsb29uaW5zdGVsbGluZ2VuJzsKJGxhbmdbJ2dhbGxlcnl1cGRhdGVkJ10gPSAnRGUgZ2FsZXJpZSBpcyBzdWNjZXN2b2wgYmlqZ2V3ZXJrdC4nOwokbGFuZ1snZXJyb3JfdXBkYXRlZ2FsbGVyeWZhaWxlZCddID0gJ0JpandlcmtlbiB2YW4gZGUgZ2FsZXJpZSBpcyBtaXNsdWt0Lic7CiRsYW5nWyd0ZW1wbGF0ZXMnXSA9ICdTamFibG9uZW4nOwokbGFuZ1sndGl0bGVfYXZhaWxhYmxlX3RlbXBsYXRlcyddID0gJ0Jlc2NoaWtiYXJlIFNqYWJsb25lbic7CiRsYW5nWydwcm9tcHRfbmFtZSddID0gJ05hYW0nOwokbGFuZ1sncHJvbXB0X2RlZmF1bHQnXSA9ICdTdGFuZGFhcmQnOwokbGFuZ1sncHJvbXB0X25ld3RlbXBsYXRlJ10gPSAnTWFhayBlZW4gbmlldXcgc2phYmxvb24nOwokbGFuZ1sndGl0bGVfdGVtcGxhdGUnXSA9ICdTamFibG9vbiBFZGl0b3InOwokbGFuZ1sncHJvbXB0X3RlbXBsYXRlbmFtZSddID0gJ1NqYWJsb29uIE5hYW0nOwokbGFuZ1sndGh1bWJuYWlsc2l6ZSddID0gJ01pbmlhdHV1ciBhZm1ldGluZ2VuIChGcm9udGVuZCknOwokbGFuZ1snbGVhdmVlbXB0eSddID0gJyhsYWF0IGRpdCBsZWVnIG9tIGRlIHN0YW5kYWFyZCBtaW5pYXR1cmVuIHVpdCBJbWFnZSBNYW5hZ2VyIHRlIGdlYnJ1aWtlbiknOwokbGFuZ1snd2lkdGgnXSA9ICdicmVlZHRlJzsKJGxhbmdbJ2hlaWdodCddID0gJ2hvb2d0ZSc7CiRsYW5nWydyZXNpemVtZXRob2QnXSA9ICdoZXJzY2hhYWwgbWV0aG9kZSc7CiRsYW5nWydjcm9wJ10gPSAnYmlqc25pamRlbic7CiRsYW5nWydzY2FsZSddID0gJ3NjaGFsZW4nOwokbGFuZ1snem9vbWNyb3AnXSA9ICdpbnpvb21lbiAmYW1wOyBiaWpzbmlqZGVuJzsKJGxhbmdbJ3pvb21zY2FsZSddID0gJ2luem9vbWVuICZhbXA7IHNjaGFsZW4nOwokbGFuZ1snbWF4bnVtYmVyJ10gPSAnTWF4aW11bSBhYW50YWwgYWZiZWVsZGluZ2VuIHBlciBwYWdpbmEnOwokbGFuZ1snc2hvd2FsbGltYWdlcyddID0gJ0xhYXQgZGl0IGxlZWcgb20gYWxsZSBhZmJlZWxkaW5nZW4gdGUgdG9uZW4sIHpvbmRlciBwYWdpbmFsaW5rcyc7CiRsYW5nWydzb3J0aW5nb3B0aW9ucyddID0gJ1NvcnRlZXIgT3B0aWVzJzsKJGxhbmdbJ3NwZWNpZnlzb3J0ZmllbGRzJ10gPSAnR2VlZiBkZSB2ZWxkZW4gYWFuIHdhYXJvcCBnZXNvcnRlZXJkIG1vZXQgd29yZGVuJzsKJGxhbmdbJ2FzY2VuZGluZyddID0gJ29wbG9wZW5kJzsKJGxhbmdbJ2Rlc2NlbmRpbmcnXSA9ICdhZmxvcGVuZCc7CiRsYW5nWydhZGRmaWVsZCddID0gJ1ZvZWcgdmVsZCB0b2UnOwokbGFuZ1snZGVsZXRlZmllbGQnXSA9ICdWZXJ3aWpkZXIgbGFhdHN0ZSByZWdlbCc7CiRsYW5nWydwcm9tcHRfdGVtcGxhdGUnXSA9ICdTamFibG9vbiBDb2RlJzsKJGxhbmdbJ3Byb21wdF90ZW1wbGF0ZWpzJ10gPSAnU2phYmxvb24gSmF2YVNjcmlwdCc7CiRsYW5nWydwcm9tcHRfdGVtcGxhdGVjc3MnXSA9ICdTamFibG9vbiBDU1Mtc3R5bGVzaGVldCc7CiRsYW5nWydyZXNldG9yaWdpbmFsJ10gPSAnUmVzZXQgbmFhciBvcmlnaW5lZWwnOwokbGFuZ1sncmVzZXRvcmlnaW5hbHdhcm5pbmcnXSA9ICdXZWV0IHUgemVrZXIgZGF0IHUgZGUgdGVtcGxhdGUtY29kZSB3aWx0IHJlc2V0dGVuIG5hYXIgZGUgb29yc3Byb25rZWxpamtlIGNvZGU/JzsKJGxhbmdbJ3RlbXBsYXRldXBkYXRlZCddID0gJ0hldCBzamFibG9vbiBpcyBzdWNjZXN2b2wgYmlqZ2V3ZXJrdC4nOwokbGFuZ1sndGVtcGxhdGVhZGRlZCddID0gJ0hldCBzamFibG9vbiBpcyB0b2VnZXZvZWdkLic7CiRsYW5nWydlcnJvcl90ZW1wbGF0ZW5hbWVleGlzdHMnXSA9ICdEZSBzamFibG9vbi1uYWFtIGJlc3RhYXQgcmVlZHMuJzsKJGxhbmdbJ3RlbXBsYXRlZGVsZXRlZCddID0gJ1NqYWJsb29uIHZlcndpamRlcmQnOwokbGFuZ1snYXZhaWxhYmxldmFyaWFibGVzJ10gPSAnQmVzY2hpa2JhcmUgU2phYmxvb24gU21hcnR5IFZhcmlhYmVsZW4nOwokbGFuZ1snYXZhaWxhYmxldmFyaWFibGVzbGlzdCddID0gJ09uZGVyc3RhYW5kZSB2YXJpYWJlbGVuIGt1bm5lbiBnZWJydWlrdCB3b3JkZW4gaW4gZGUgc2phYmxvbmVuOjxiciAvPjxiciAvPg0KPGNvZGU+eyRtb2R1bGVfbWVzc2FnZX08L2NvZGU+IC0gZm91dG1lbGRpbmcsIGhlZWZ0IGFsbGVlbiBpbmhvdWQgYWxzIGVyIHdhdCB0ZSBtZWxkZW4gaXM8YnIgLz4NCjxjb2RlPnskZ2FsbGVyeXRpdGxlfTwvY29kZT4gLSB0aXRlbCB2YW4gZGUgZ2FsZXJpZS4gQWxzIGVyIGdlZW4gdGl0ZWwgaXMgaW5nZXZ1bGQsIGRhbiB3b3JkdCBkZSBuYWFtIHZhbiBkZSBkaXJlY3RvcnkgZ2V0b29uZDxiciAvPg0KPGNvZGU+eyRnYWxsZXJ5Y29tbWVudH08L2NvZGU+IC0gb21zY2hyaWp2aW5nIHZhbiBkZSBnYWxlcmllPGJyIC8+DQo8Y29kZT57JHBhcmVudGxpbmt9PC9jb2RlPiAtIGxpbmsgbmFhciBkZSBib3ZlbmxpZ2dlbmRlIGdhbGVyaWU8YnIgLz4NCjxjb2RlPnskaGlkZXBhcmVudGxpbmt9PC9jb2RlPiAtIHdhYXIvb253YWFyPGJyIC8+DQo8Y29kZT57JGltYWdlY291bnR9PC9jb2RlPiAtIGFhbnRhbCwgdG9vbnQgYmlqdm9vcmJlZWxkICZxdW90OzYgZm90byYjMDM5O3MmcXVvdDssIGFmaGFua2VsaWprIHZhbiBkZSB0YWFsPGJyIC8+DQo8Y29kZT57JGl0ZW1jb3VudH08L2NvZGU+IC0gdG90YWFsIGFhbnRhbCBpdGVtcywgZHVzIGZvdG8mIzAzOTtzICsgc3ViZ2FsZXJpZSZldW1sO248YnIgLz4NCjxjb2RlPnskcGFnZXN9PC9jb2RlPiAtIGFhbnRhbCBwYWdpbmEmIzAzOTtzPGJyIC8+DQo8Y29kZT57JHByZXZwYWdlfTwvY29kZT4gLSBsaW5rIG5hYXIgZGUgdm9yaWdlIHBhZ2luYSwgaW5kaWVuIHZhbiB0b2VwYXNzaW5nPGJyIC8+DQo8Y29kZT57JG5leHRwYWdlfTwvY29kZT4gLSBsaW5rIG5hYXIgZGUgdm9sZ2VuZGUgcGFnaW5hLCBpbmRpZW4gdmFuIHRvZXBhc3Npbmc8YnIgLz4NCjxjb2RlPnskcGFnZWxpbmtzfTwvY29kZT4gLSBsaW5rcyBuYWFyIGVsa2UgYmVzY2hpa2JhcmUgcGFnaW5hPGJyIC8+DQo8Y29kZT57JGltYWdlc308L2NvZGU+IC0gYXJyYXkgbWV0IGRlIHZvbGdlbmRlIGtleXM6PGJyIC8+DQogLSA8Y29kZT5maWxlPC9jb2RlPiAtIHJlbGF0aWVmIHBhZCBuYWFyIGRlIG9yaWdpbmVsZSBmb3RvIChvZiBzdWJnYWxlcmllKTxiciAvPg0KIC0gPGNvZGU+dGl0bGU8L2NvZGU+IC0gdGl0ZWwgdmFuIGRlIGZvdG8uIEFscyBlciBnZWVuIHRpdGVsIGlzIGluZ2V2dWxkLCBkYW4gd29yZHQgZGUgZmlsZS1uYWFtIGdldG9vbmQ8YnIgLz4NCiAtIDxjb2RlPmNvbW1lbnQ8L2NvZGU+IC0gb21zY2hyaWp2aW5nIHZhbiBkZSBmb3RvPGJyIC8+DQogLSA8Y29kZT5maWxlZGF0ZTwvY29kZT4gLSBhYW5tYWFrZGF0dW0vdGlqZDxiciAvPg0KIC0gPGNvZGU+dGh1bWI8L2NvZGU+IC0gcmVsYXRpZWYgcGFkIG5hYXIgZGUgbWluaWF0dXVyLiBJbiBnZXZhbCB2YW4gZWVuIHN1YmdhbGVyaWUsIGRhbiB2ZXJ3aWpzdCBkaXQgbmFhciBkZSBtaW5pYXR1dXIgdmFuIGRlIGZvdG8gZGllIGdlbWFya2VlcmQgaXMgYWxzIGRlZmF1bHQgaW4gZGUgYmV0cmVmZmVuZGUgc3ViZ2FsZXJpZS4gQWxzIGVyIGdlZW4gZGVmYXVsdHdhYXJkZSBhYW4gZWVuIGZvdG8gaXMgdG9lZ2VrZW5kLCBkYW4gd29yZHQgZWVuIHN0YW5kYWFyZCBmb2xkZXItaWNvbiBnZWJydWlrdC48YnIgLz4NCiAtIDxjb2RlPmZpbGVpZDwvY29kZT4gLSB1bmlla2UgaWQgdm9vciBkZSBmb3RvIG9mIHN1YmdhbGVyaWU8YnIgLz4NCiAtIDxjb2RlPmlzZGlyPC9jb2RlPiAtIGlzIHdhYXIgYWxzIGhldCBpdGVtIGVlbiBzdWJnYWxlcmllIGJldHJlZnQ8YnIgLz4nOwokbGFuZ1snb3B0aW9ucyddID0gJ09wdGllcyc7CiRsYW5nWydhbGxvd2VkX2V4dGVuc2lvbnMnXSA9ICdUb2VnZXN0YW5lIEV4dGVuc2llcyc7CiRsYW5nWyd1c2VfY29tbWVudF93eXNpd3lnJ10gPSAnR2VicnVpayBlZW4gV1lTSVdZRyBlZGl0b3Igdm9vciBoZXQgR2FsbGVyeSBvbXNjaHJpanZpbmcgdmVsZCc7CiRsYW5nWydvcHRpb25zdXBkYXRlZCddID0gJ0RlIG9wdGllcyB6aWpuIHN1Y2Nlc3ZvbCBiaWpnZXdlcmt0Lic7CiRsYW5nWydpbWFnZSddID0gJ2FmYmVlbGRpbmcnOwokbGFuZ1snaW1hZ2VzJ10gPSAnZm90byYjMDM5O3MnOwokbGFuZ1sncHJldnBhZ2UnXSA9ICd2b3JpZ2UnOwokbGFuZ1snbmV4dHBhZ2UnXSA9ICd2b2xnZW5kZSc7CiRsYW5nWydkZWZhdWx0Z2FsbGVyeWNvbW1lbnQnXSA9ICdCZWRhbmt0IHZvb3IgaGV0IGluc3RhbGxlcmVuIHZhbiBkZSBHYWxsZXJ5IG1vZHVsZS4gQWxzIHUgd2F0IGZvdG8mIzAzOTtzIGdlJnV1bWw7cGxvYWQgaGVlZnQgbmFhciBkZSBtYXAgJiMwMzk7dXBsb2Fkcy9pbWFnZXMvR2FsbGVyeSYjMDM5OywgZGFuIHppam4gZGV6ZSBmb3RvJiMwMzk7cyBoaWVyb25kZXIgemljaHRiYWFyLiBWaWEgZGUgYWRtaW4tc2VjdGllIGt1bm5lbiB0aXRlbHMsIG9tc2NocmlqdmluZ2VuIGVuIGFmbWV0aW5nZW4gdm9vciBtaW5pYXR1dXItYWZiZWVsZGluZ2VuIHdvcmRlbiBpbmdlc3RlbGQuIE9udGRlayBhbGxlIG92ZXJpZ2UgbW9nZWxpamtoZWRlbiBkaWUgZGV6ZSBtb2R1bGUgdGUgYmllZGVuIGhlZWZ0IGluIGRlIG1vZHVsZS1oZWxwLic7CiRsYW5nWydoZWxwX2RpciddID0gJ1BhcmFtZXRlciBvbSBlZW4gZGlyZWN0b3J5IHRlIHNwZWNpZmljZXJlbiwgaGV0IHBhZCBpcyByZWxhdGllZiB0Lm8udi4gdXBsb2Fkcy9pbWFnZXMvR2FsbGVyeS8nOwokbGFuZ1snaGVscF90ZW1wbGF0ZSddID0gJ0dlYnJ1aWsgZWVuIGFwYXJ0ZSBkYXRhYmFzZSBzamFibG9vbiB2b29yIGRlIHdlZXJnYXZlIHZhbiBkZSBmb3RvIGdhbGVyaWUuIERpdCBzamFibG9vbiBtb2V0IGJlc3RhYW4gZW4gemljaHRiYWFyIHppam4gaW4gZGUgdGFiIFNqYWJsb25lbiBpbiBkZSBHYWxsZXJ5IGFkbWluLCBtYWFyIGhldCBob2VmdCBuaWV0IGRlIHN0YW5kYWFyZCBzamFibG9vbiB0ZSB6aWpuLiBBbHMgZGV6ZSBwYXJhbWV0ZXIgbmlldCBvcGdlZ2V2ZW4gaXMsIHdvcmR0IGhldCBzamFibG9vbiBnZWJydWlrdCB3ZWxrZSBpcyB0b2VnZWtlbmQgYWFuIGRlIGdhbGVyaWUsIGFuZGVycyB3b3JkdCBoZXQgc3RhbmRhYXJkIHNqYWJsb29uIGdlYnJ1aWt0JzsKJGxhbmdbJ2hlbHBfbnVtYmVyJ10gPSAnTWF4aW1hYWwgYWFudGFsIGZvdG8mIzAzOTtzIGRhdCBnZXRvb25kIHdvcmR0IChwZXIgcGFnaW5hKS4gU3RhbmRhYXJkIHdvcmRlbiBhbGxlIGZvdG8mIzAzOTtzIGdldG9vbmQuJzsKJGxhbmdbJ2hlbHBfc3RhcnQnXSA9ICdCZWdpbiB3ZWVyZ2F2ZSBiaWogZGUgem92ZWVsc3RlIGZvdG8uIFN0YW5kYWFyZCB3b3JkdCBiZWdvbm5lbiBtZXQgZGUgZWVyc3RlIGZvdG8nOwokbGFuZ1snaGVscF9zaG93J10gPSAnQmVwYWFsIHdlbGtlIGZvdG8mIzAzOTtzIG1vZXRlbiB3b3JkZW4gZ2V0b29uZC4gTW9nZWxpamtlIHdhYXJkZW4gemlqbjoNCjx1bD4NCjxsaT4mIzAzOTthY3RpdmUmIzAzOTsgLSBvbSBhbGxlIGZvdG8mIzAzOTtzIHdlZXIgdGUgZ2V2ZW4gZGllIHppam4gZ2VtYXJrZWVyZCBhbHMgYWN0aWVmIChzdGFuZGFhcmQpPC9saT4NCjxsaT4mIzAzOTtpbmFjdGl2ZSYjMDM5OyAtIG9tIGFsbGVlbiBkZSBmb3RvJiMwMzk7cyBkaWUgZ2VtYXJrZWVyZCB6aWpuIGFscyBpbmFjdGllZiB3ZWVyIHRlIGdldmVuPC9saT4NCjxsaT4mIzAzOTthbGwmIzAzOTsgLSBsYWF0IGFsbGUgZm90byYjMDM5O3MgemllbjwvbGk+DQo8L3VsPg0KJzsKJGxhbmdbJ2hlbHBfY2F0ZWdvcnknXSA9ICdUb29uIGFsbGVlbiBmb3RvJiMwMzk7cy9nYWxlcmllJmV1bWw7biBkaWUgdG9lZ2VrZW5kIHppam4gYWFuIGRlIG9wZ2VnZXZlbiBjYXRlZ29yaSZldW1sO24uIERvb3IgZWVuICogYWNodGVyIGRlIGRpcmVjdG9yeS1uYWFtIHRlIHBsYWF0c2VuLCB3b3JkZW4gb29rIHN1YmNhdGVnb3JpZSZldW1sO24gd2VlcmdlZ2V2ZW4uIE1lZXJkZXJlIGNhdGVnb3JpZSZldW1sO24ga3VubmVuIHdvcmRlbiBvcGdlZ2V2ZW4sIG1pdHMgZ2VzY2hlaWRlbiBtZXQgZWVuIGtvbW1hLiBTdGFuZGFhcmQgd29yZGVuIGFsbGUgY2F0ZWdvcmllJmV1bWw7biBnZXRvb25kLic7CiRsYW5nWydoZWxwX2FjdGlvbiddID0gJ0JlcGFhbCBkZSB1aXQgdGUgdm9lcmVuIGFjdGllLiBHZWJydWlrIGRpdCBpbiBjb21iaW5hdGllIG1ldCBkZSBib3Zlbmdlbm9lbWRlIHBhcmFtZXRlcnMuIE1vZ2VsaWprZSB3YWFyZGVuIHppam46DQo8dWw+DQo8bGk+JiMwMzk7c2hvd3JhbmRvbSYjMDM5OyAtIFRvb250IGVlbiBvcGdlZ2V2ZW4gYWFudGFsIHdpbGxla2V1cmlnZSBtaW5pYXR1cmVuLiAoQWxsZWVuIHZhbiB0b2VwYXNzaW5nIG9wIGZvdG8mIzAzOTtzIGRpZSB6aWpuIG9wZ2VzbGFnZW4gaW4gZGUgZGF0YWJhc2UsIHN0YW5kYWFyZCBpbmdlc3RlbGQgb3AgNiBmb3RvJiMwMzk7cykuIERvb3IgYmlqIGRlIGRpciBwYXJhbWV0ZXIgJiMwMzk7LyomIzAzOTsgYWNodGVyIGRlIGRpcmVjdG9yeS1uYWFtIHRlIHBsYWF0c2VuLCB3b3JkZW4gb29rIGRlIGZvdG8mIzAzOTtzIHVpdCBzdWJkaXJlY3RvcmllcyBtZWVnZW5vbWVuPC9saT4NCjxsaT4mIzAzOTtzaG93bGF0ZXN0JiMwMzk7IC0gVG9vbnQgZGUgbGFhdHN0IHRvZWdldm9lZ2RlIGZvdG8mIzAzOTtzLiAoQWxsZWVuIHZhbiB0b2VwYXNzaW5nIG9wIGZvdG8mIzAzOTtzIGRpZSB6aWpuIG9wZ2VzbGFnZW4gaW4gZGUgZGF0YWJhc2UsIHN0YW5kYWFyZCBpbmdlc3RlbGQgb3AgNiBmb3RvJiMwMzk7cykgQWxzIGRlIGRpciBwYXJhbWV0ZXIgbmlldCBvcGdlZ2V2ZW4gaXMsIGRhbiB3b3JkdCBkZSBHYWxsZXJ5LXJvb3QgZ2VicnVpa3QuIFN1YmRpcmVjdG9yaWVzIHdvcmRlbiBhdXRvbWF0aXNjaCBtZWVnZW5vbWVuPC9saT4NCjxsaT4mIzAzOTtzaG93bGF0ZXN0ZGlyJiMwMzk7IC0gVG9vbnQgZWVuIG9wZ2VnZXZlbiBhYW50YWwgd2lsbGVrZXVyaWdlIG1pbmlhdHVyZW4gdWl0IGRlIGxhYXRzdCB0b2VnZXZvZWdkZSBkaXJlY3RvcnkgKEFsbGVlbiB2YW4gdG9lcGFzc2luZyBvcCBmb3RvJiMwMzk7cyBkaWUgemlqbiBvcGdlc2xhZ2VuIGluIGRlIGRhdGFiYXNlLCBzdGFuZGFhcmQgaW5nZXN0ZWxkIG9wIDYgZm90byYjMDM5O3MpPC9saT4NCjwvdWw+DQpNZXJrIG9wIGRhdCBhZmJlZWxkaW5nc2dlZ2V2ZW5zIHBhcyBpbiBkZSBkYXRhYmFzZSB3b3JkZW4gb3BnZXNsYWdlbiBvcCBoZXQgbW9tZW50IGRhdCBkZSBHYWxsZXJ5IG1vZHVsZSBpbiBkZSBhZG1pbi1zZWN0aWUgYmV6b2NodCB3b3JkdC4nOwokbGFuZ1snY2hhbmdlbG9nJ10gPSAnPHVsPiANCjxsaT5WZXJzaW9uIDEuMS4gOCBOb3ZlbWJlciAyMDA5LiBBZGRlZCBzb3J0aW5nIGFuZCBkcmFnJmFtcDtkcm9wIGZlYXR1cmUgKEZSICMzOTA3ICM0MjEwKSwgTW92ZWQgdGh1bWJuYWlsc2V0dGluZ3MgdG8gdGVtcGxhdGVzdGFiLCBNYWtlIGdhbGxlcmllcyBzZWFyY2hhYmxlIChGUiAjMzk1NiksIENyZWF0ZSBiYWNrZW5kIHRodW1icyBpZiB0aGV5IGRvbiYjMDM5O3QgZXhpc3QgaW4gSU0gKEZSICM0MTAxKSwgRml4IGZvciBCUiAjNDAyNywgQWRkZWQgZmlsZWlkIHRvIGltYWdlLW9iamVjdCAoRlIgIzQyNTkpPC9saT4NCjxsaT5WZXJzaW9uIDEuMC4zLiA4IFNlcHRlbWJlciAyMDA5LiBCdWdmaXggZm9yIFsjNDAwMV0sIEltcHJvdmVkIHN5bmNocm9uaXppbmcgdGhlIGRhdGFiYXNlIHRvIGZpbGVzLCBhbmQgb3RoZXIgbWlub3IgaW1wcm92ZW1lbnRzLjwvbGk+DQo8bGk+VmVyc2lvbiAxLjAuMi4gNSBTZXB0ZW1iZXIgMjAwOS4gQnVnZml4IGZvciBbIzM5ODNdIHJlZ2FyZGluZyBzcGFjZXMgaW4gZGlyZWN0b3J5IG5hbWVzLCBBZGRlZCB0ZW1wbGF0ZXMgRmFuY3lib3ggYW5kIEx5dGVib3hfc2xpZGVzaG93IGFzIGluIEZlYXR1cmUgcmVxdWVzdHMgWyMzOTQ0XSBhbmQgWyMzOTY3XTwvbGk+DQo8bGk+VmVyc2lvbiAxLjAuMS4gMjMgQXVndXN0IDIwMDkuIEFwcGx5IHRodW1ibmFpbC1zZXR0aW5ncyBvbiAmIzAzOTtBbGJ1bS1jb3ZlcnMmIzAzOTsgWyMzOTI0XSwgQnVnZml4IGZvciBbIzM5MjddLCBBZGRlZCBtaXNzaW5nIC9kaXYgdG8gdGhpY2tib3gtdGVtcGxhdGUsIGZpeGVkIGFuIGlzc3VlIHdpdGggZ2VuZXJhdGluZyB0aHVtYm5haWxzIHdoZW4gbm8gdGh1bWJzIGF2YWlsYWJsZSBpbiBJbWFnZU1hbmFnZXIsIGltcHJvdmVkIHRoZSBuYW1pbmcgb2YgdGh1bWJzLCBCdWdmaXggZm9yIFsjMzkzMV0sIFByZXZlbnQgZGlzcGxheSB0aGUgY29udGVudCBvZiBnYWxsZXJpZXMgdGhhdCBhcmUgc2V0IGFzIGluYWN0aXZlLjwvbGk+DQo8bGk+VmVyc2lvbiAxLjAuIDE3IEF1Z3VzdCAyMDA5LiBQYWdpbmF0aW9uIHBhcmFtZXRlcnMgYWRkZWQsIFN0YW5kYXJkIHRlbXBsYXRlcyBjaGFuZ2VkIGFjY29yZGluZ2x5LCBFeHRlbmRlZCB0aGUgbW9kdWxlLWhlbHAsIEFkZGVkIGZ1bmN0aW9ucyB0byBzaG93IHJhbmRvbSBvciBsYXRlc3QgaW1hZ2VzLCBTdXBwb3J0IG9mIHByZXR0eS11cmxzLCBWYXJpb3VzIGltcHJvdmVtZW50czwvbGk+DQo8bGk+VmVyc2lvbiAwLjYuIDkgQXVndXN0IDIwMDkuIEluaXRpYWwgQmV0YSBSZWxlYXNlLjwvbGk+DQo8L3VsPic7CiRsYW5nWydoZWxwJ10gPSAnPGgzPldhdCBkb2V0IGRpdD88L2gzPg0KPHA+RGUgR2FsbGVyeSBtb2R1bGUgaXMgZWVuIGdlYnJ1aWtlcnN2cmllbmRlbGlqayBmb3RvLWFsYnVtIGRpZSBhdXRvbWF0aXNjaCBkZSBmb3RvJiMwMzk7cyB1aXQgZWVuIG9wZ2VnZXZlbiBkaXJlY3RvcnkgdG9vbnQuDQpTdWJkaXJlY3RvcmllcyB3b3JkZW4gZ2V0b29udCBhbHMgc3ViLWdhbGVyaWUmZXVtbDtuLiBEZSBtb2R1bGUgaGVlZnQgdmVlbCBpbmdlYm91d2RlIG1vZ2VsaWpraGVkZW4sIHpvYWxzIGhldCBhdXRvbWF0aXNjaCBnZW5lcmVyZW4gdmFuIG1pbmlhdHVyZW4sIGhldCBnZWJydWlrIHZhbiBtZWVyZGVyZSBMaWdodGJveC1hY2h0aWdlIHNqYWJsb25lbiBvZiBlbGsgYW5kZXIgZ2V3ZW5zdGUgY3NzL2phdmFzY3JpcHQtc2phYmxvb24sIGVuIGFhbiB6b3dlbCBnYWxlcmllJmV1bWw7biBhbHMgZm90byYjMDM5O3Mga3VubmVuIHRpdGVscyBlbiBvbXNjaHJpanZpbmdlbiB3b3JkZW4gdG9lZ2VrZW5kLjwvcD4NCjxoMz5Ib2UgZ2VicnVpayBpayBoZXQ8L2gzPg0KPHA+QWxsZXJlZXJzdCBtb2V0IGRlIHtHYWxsZXJ5fSB0YWcgaW4gZWVuIHBhZ2luYSBvZiBzamFibG9vbiBnZXBsYWF0c3Qgd29yZGVuLiBEYWFybmEga3VubmVuIGZvdG8mIzAzOTtzIHZpYSBkZSBJbWFnZSBNYW5hZ2VyLCBGaWxlIE1hbmFnZXIgKGJpanYuIG1lZXJkZXJlIGZvdG8mIzAzOTtzIHVwbG9hZGVuIGluICZlYWN1dGU7JmVhY3V0ZTtuIHppcC1iZXN0YW5kKSwgb2YgRlRQIG5hYXIgZGUgbWFwIHVwbG9hZHMvaW1hZ2VzL0dhbGxlcnkvIGdlJnV1bWw7cGxvYWQgd29yZGVuLjwvcD4NCjxwPkRhdCBpcyBhbGxlcyE8L3A+DQo8cD5BbHMgbWVlciBnYWxlcmllJmV1bWw7biBnZXdlbnN0IHppam4sIGNyZSZldW1sO2VyIGRhbiBzdWJkaXJlY3RvcmllcyBlbiB1cGxvYWQgZXIgZm90byYjMDM5O3MgbmFhcnRvZSB6b2FscyBvbXNjaHJldmVuLiBEb29yIHBhcmFtZXRlcnMgdG9lIHRlIHZvZWdlbiBhYW4gZGUge0dhbGxlcnl9IHRhZywga2FuIGVlbnZvdWRpZyBpbmdlc3RlbGQgd29yZGVuIHdlbGtlIHN1YmdhbGVyaWUgZ2V0b29uZCBtb2V0IHdvcmRlbiBtZXQgd2VsayBzamFibG9vbiwgYmlqdi4ge0dhbGxlcnkgZGlyPSZxdW90O3Zha2FudGllcy9WZWx1d2UyMDA5JnF1b3Q7IHRlbXBsYXRlPSZxdW90O0xpZ2h0Ym94JnF1b3Q7fTwvcD4NCjxwPlN0YW5kYWFyZCB3b3JkZW4gZGUgbWluaWF0dXJlbiB2YW4gZGUgSW1hZ2UgTWFuYWdlciBnZWJydWlrdCBiaWogZGUgd2VlcmdhdmUgdmFuIGdhbGVyaWUmZXVtbDtuLjwvcD4NCjxoMz5HZWF2YW5jZWVyZGUgb3B0aWVzLCBtYWFyIG5vZyBzdGVlZHMgZWVudm91ZGlnIHRlIGdlYnJ1aWtlbjwvaDM+DQo8cD5JbiBkZSBhZG1pbiBzZWN0aWUgdmFuIGRlIG1vZHVsZSB6aWpuIGRlIHZvbGdlbmRlIG9wdGllcyB0ZSB2aW5kZW46PC9wPg0KPHVsPg0KPGxpPk1hcmtlZXIgZWVuIGZvdG8gYWxzIHN0YW5kYWFyZCB2b29yIGVlbiBnYWxlcmllLCBvbSBkZXplIG1pbmlhdHV1ciB0ZSB0b25lbiBpbiBkZSBib3ZlbmxpZ2dlbmRlIGdhbGVyaWUsIGFscyAmIzAzOTthbGJ1bS1jb3ZlciYjMDM5OyBpbiBwbGFhdHMgdmFuIGhldCBzdGFuZGFhcmQtaWtvb24uPC9saT4NCjxsaT5HZWVmIHRpdGVscyBlbiBvbXNjaHJpanZpbmdlbiBhYW4gZ2FsZXJpZSZldW1sO24uPC9saT4NCjxsaT5TdGVsIGVlbiBzdGFuZGFhcmQgc2phYmxvb24gaW4gdm9vciBlbGtlIGdhbGVyaWUuPC9saT4NCjxsaT5HZWVmIG1pbmlhdHV1ci1hZm1ldGluZ2VuIG9wIHZvb3IgZWxrIHNqYWJsb29uLCBtZXQgbW9nZWxpamtoZWlkIG9tIGZvdG8mIzAzOTtzIHRlIHNjaGFsZW4sIGJpaiB0ZSBzbmlqZGVuIGVuL29mIGluIHRlIHpvb21lbi48L2xpPg0KPGxpPkdlZWYgdm9vciBlbGsgc2phYmxvb24gYWFuIGluIHdlbGtlIHZvbGdvcmRlIGRlIGZvdG8mIzAzOTtzIG1vZXRlbiB3b3JkZW4gZ2Vzb3J0ZWVyZC48L2xpPg0KPGxpPlNvcnRlZXIgZm90byYjMDM5O3MgaGFuZG1hdGlnIG1ldCBkZSBkcmFnJmFtcDtkcm9wIGZ1bmN0aWU8L2xpPg0KPGxpPkdlZWYgdGl0ZWxzIGVuIG9tc2NocmlqdmluZ2VuIGFhbiBmb3RvJiMwMzk7cy48L2xpPg0KPGxpPlpldCBlZW4gZm90byBvZiBnYWxlcmllIGluYWN0aWVmIG9tIHdlZXJnYXZlIHRlIHZvb3Jrb21lbi48L2xpPg0KPGxpPkJld2Vyay9rb3BpJmV1bWw7ZXIgb2YgbWFhayBuaWV1d2Ugc2phYmxvbmVuLiBLbGlrIG9wIGhldCBpbmZvLWljb29uIG9uZGVyIGhldCB2ZWxkIG1ldCBzamFibG9vbi1jb2RlIHZvb3IgZWVuIG9wc29tbWluZyB2YW4gZGUgYmVzY2hpa2JhcmUgdmFyaWFiZWxlbi48L2xpPg0KPC91bD4NCjxwPk9tIHNqYWJsb25lbiB0ZSBrdW5uZW4gYmV3ZXJrZW4sIG1vZXQgZWVuIGdlYnJ1aWtlciBsaWQgemlqbiB2YW4gZWVuIGdyb2VwIG1ldCAmIzAzOTtNb2RpZnkgVGVtcGxhdGVzJiMwMzk7IHJlY2h0ZW4uIE9tIGRlIEdhbGxlcnkgb3B0aWVzIGluIHRlIHN0ZWxsZW4sIG1vZXQgZWVuIGdlYnJ1aWtlciB0b3QgZWVuIGdyb2VwIGJlaG9yZW4gZGllICYjMDM5O01vZGlmeSBTaXRlIFByZWZlcmVuY2VzJiMwMzk7IHJlY2h0ZW4gaGVlZnQuPC9wPg0KPHA+QWxsZSB0aXRlbHMsIG9tc2NocmlqdmluZ2VuIGVuIGluc3RlbGxpbmdlbiB3b3JkZW4gb3BnZXNsYWdlbiBpbiBkZSBkYXRhYmFzZS4gRGUgZGF0YWJhc2Ugd29yZHQgZ2VzeW5jaHJvbmlzZWVyZCBtZXQgZGUgZmlsZWRpcmVjdG9yeSB0ZWxrZW5zIHdhbm5lZXIgZGUgYmV0cmVmZmVuZGUgZ2FsZXJpZSB3b3JkdCBiZXpvY2h0IGluIGRlIEdhbGxlcnktYWRtaW4uIEVlbiBrbGVpbmUgd2FhcnNjaHV3aW5nOiBkZSB0aXRlbCwgb21zY2hyaWp2aW5nIGVuIGluc3RlbGxpbmdlbiB3b3JkZW4gdmVyd2lqZGVyZCBhbHMgZWVuIGZvdG8gb2YgZ2FsZXJpZSB3b3JkdCB2ZXJwbGFhdHN0IG5hYXIgZWVuIGFuZGVyZSBkaXJlY3RvcnkuPC9wPg0KPGgzPk9uZGVyc3RldW5pbmc8L2gzPg0KPHA+RGV6ZSBtb2R1bGUgZ2VuaWV0IGdlZW4gY29tbWVyY2kmZXVtbDtsZSBvbmRlcnN0ZXVuaW5nLiBFciB6aWpuIGVjaHRlciBtZWVyZGVyZSBtb2dlbGlqa2hlZGVuIG9tIGh1bHAgdGUga3Jpamdlbjo8L3A+DQo8dWw+DQo8bGk+QmV6b2VrIGRlIE1vZHVsZSBGb3JnZQ0KPGEgaHJlZj0iaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9wcm9qZWN0cy9nYWxsZXJ5LyI+R2FsbGVyeSBwYWdpbmE8L2E+IHZvb3IgZGUgbGFhdHN0ZSB2ZXJzaWUgdmFuIGRlemUgbW9kdWxlLCBvZiBvbSBlZW4gJiMwMzk7ZmVhdHVyZSByZXF1ZXN0JiMwMzk7IG9mICYjMDM5O2J1ZyYjMDM5OyB0ZSByYXBwb3J0ZXJlbi48L2xpPg0KPGxpPkFhbnZ1bGxlbmRlIGJlc3ByZWtpbmcgdmFuIGRlemUgbW9kdWxlIGthbiBvb2sgd29yZGVuIGdldm9uZGVuIGluIGRlIDxhIGhyZWY9Imh0dHA6Ly9mb3J1bS5jbXNtYWRlc2ltcGxlLm9yZyI+Q01TIE1hZGUgU2ltcGxlIEZvcnVtczwvYT4uPC9saT4NCjxsaT5Ub3Qgc2xvdCBrdW50IHUgd2VsbGljaHQgZW5pZyBzdWNjZXMgYm9la2VuIGRvb3IgZGUgYXV0ZXVyIHJlY2h0c3RyZWVrcyB0ZSBtYWlsZW4uPC9saT4gIA0KPC91bD4NCjxwPkFzIHBlciB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkIGFzLWlzLiBQbGVhc2UgcmVhZCB0aGUgdGV4dCBvZiB0aGUgbGljZW5zZSBmb3IgdGhlIGZ1bGwgZGlzY2xhaW1lci48L3A+DQoNCjxoMz5Db3B5cmlnaHQgYW5kIExpY2Vuc2U8L2gzPg0KPHA+Q29weXJpZ2h0ICZjb3B5OyAyMDA5LCBKb3MgPGEgaHJlZj0ibWFpbHRvOmpvc3ZkQGxpdmUubmwiPi1qb3N2ZEBsaXZlLm5sLTwvYT4uIEFsbCBSaWdodHMgQXJlIFJlc2VydmVkLjwvcD4NCjxwPlRoaXMgbW9kdWxlIGhhcyBiZWVuIHJlbGVhc2VkIHVuZGVyIHRoZSA8YSBocmVmPSJodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwiPkdOVSBQdWJsaWMgTGljZW5zZTwvYT4uIFlvdSBtdXN0IGFncmVlIHRvIHRoaXMgbGljZW5zZSBiZWZvcmUgdXNpbmcgdGhlIG1vZHVsZS48L3A+DQonOwokbGFuZ1sndXRteiddID0gJzE1Njg2MTM1My4xMjU1Mjk5NTMwLjQyMy43NS51dG1jc3I9ZGV2LmNtc21hZGVzaW1wbGUub3JnfHV0bWNjbj0ocmVmZXJyYWwpfHV0bWNtZD1yZWZlcnJhbHx1dG1jY3Q9L3Byb2plY3QvZmlsZXMvNic7CiRsYW5nWyd1dG1hJ10gPSAnMTU2ODYxMzUzLjE0MjM1ODU3ODcuMTIwNTg2NzE3Ny4xMjU3NTg5MzIxLjEyNTc2NzQyMzAuNDQ5JzsKJGxhbmdbJ3V0bWMnXSA9ICcxNTY4NjEzNTMnOwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/lang/ext/ro_RO.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ0dhbGVyaWUnOwokbGFuZ1snbW9kZGVzY3JpcHRpb24nXSA9ICdDZWEgbWFpIHVzb2FyYSBjYWxlIGRlIGEgYWRtaW5pc3RyYSBzaSBhIGFmaXNhIGdhbGVyaWkgZm90byc7CiRsYW5nWydkZXNjcmlwdGlvbiddID0gJ08gZ2FsZXJpZSB1c29yIGRlIGZvbG9zaXQgY2FyZSBhZmlzZWF6YSB1dG9tYXQgaW1hZ2luaWxlIHVudWkgZm9sZGVyIHNwZWNpZmljYXQuJzsKJGxhbmdbJ3Bvc3RpbnN0YWxsJ10gPSAnTW9kdWx1bCBHYWxlcmllIGEgZm9zdCBpbnN0YWxhdCBjdSBzdWNjZXMuJzsKJGxhbmdbJ2luc3RhbGxlZCddID0gJ01vZHVsdWwgR2FsZXJpZSB2ZXJzaXVuZWEgJXMgYSBmb3N0IGluc3RhbGF0Lic7CiRsYW5nWyd1cGdyYWRlZCddID0gJ01vZHVsdWwgR2FsZXJpZSBlc3RlIGFjdHVhbGl6YXQgbGEgdmVyc2l1bmVhICVzLic7CiRsYW5nWydwb3N0dW5pbnN0YWxsJ10gPSAnTW9kdWx1bCBHYWxlcmllIGEgZm9zdCBkZXppbnN0YWxhdCc7CiRsYW5nWyd1bmluc3RhbGxlZCddID0gJ01vZHVsdWwgR2FsZXJpZSBhIGZvc3QgZGV6aW5zdGFsYXQnOwokbGFuZ1sncmVhbGx5X3VuaW5zdGFsbCddID0gJ1NpZ3VyIGRvcml0aSBzYSBkZXppbnN0YWxhdGkgbW9kdWx1bCBHYWxlcmllPyBBY2VzdCBsdWNydSBudSBhZmVjdGVhemEgaW1hZ2luaWxlLCBkYXQgdG9hdGUgZGF0ZWxlIGRlIGNvbWVudGFyaWkgc2kgbWluaWF0dXJpbGUgY2FyZSBhdSBmb3N0IGNyZWF0ZSBkZSBHYWxlcmllIHZvciBmaSBzdGVyc2UuJzsKJGxhbmdbJ2FjY2Vzc2RlbmllZCddID0gJ0FjY2VzIEludGVyemlzLiBWZXJpZmljYXRpLXZhIHBlcm1pc2l1bmlsZS4nOwokbGFuZ1snYWN0aW9ucyddID0gJ0FjdGl1bmknOwokbGFuZ1snYWN0aXZlJ10gPSAnQWN0aXYnOwokbGFuZ1snYXBwbHknXSA9ICdBcGxpY2FyZSc7CiRsYW5nWydhcmV5b3VzdXJlJ10gPSAnU2lndXIgZG9yaXRpIHNhIHN0ZXJnZXRpPyc7CiRsYW5nWydjYW5jZWwnXSA9ICdBbnVsYXJlJzsKJGxhbmdbJ2NvcHknXSA9ICdDb3BpZXJlJzsKJGxhbmdbJ2RlZmF1bHQnXSA9ICdpbXBsaWNpdCc7CiRsYW5nWydkZWxldGUnXSA9ICdTdGVyZ2VyZSc7CiRsYW5nWydlZGl0J10gPSAnRWRpdGFyZSc7CiRsYW5nWydlcnJvciddID0gJ0Vyb2FyZSEnOwokbGFuZ1snc2V0ZmFsc2UnXSA9ICdTZXRhcmUgRmFscyc7CiRsYW5nWydzZXR0cnVlJ10gPSAnU2V0YXJlIEFkZXZhcmF0JzsKJGxhbmdbJ3N1Ym1pdCddID0gJ1NhbHZhcmUnOwokbGFuZ1snZ2FsbGVyaWVzJ10gPSAnR2FsZXJpaSc7CiRsYW5nWydnYWxsZXJ5cGF0aCddID0gJ0dhbGVyaWUnOwokbGFuZ1snZWRpdGdhbGxlcnknXSA9ICdFZGl0YXJlIGdhbGVyaWUnOwokbGFuZ1snYWRkZ2FsbGVyeSddID0gJ0FkYXVnYXJlIGdhbGVyaWUnOwokbGFuZ1snbm9nYWxsZXJpZXN0ZXh0J10gPSAnTmNpIG8gZ2FsZXJpZSBkaXNwb25pYmlsYSc7CiRsYW5nWydpbWFnZSddID0gJ2ltYWdpbmUnOwokbGFuZ1sndGl0bGUnXSA9ICdUaXRsdSc7CiRsYW5nWydkYXRlJ10gPSAnRGF0YSc7CiRsYW5nWydub2ZpbGVzdGV4dCddID0gJ05pY2kgbyBpbWFnaW5lIGRpc3BvbmliaWxhJzsKJGxhbmdbJ2dhbGxlcnl0aXRsZSddID0gJ1RpdGx1IGdhbGVyaWUnOwokbGFuZ1snY29tbWVudCddID0gJ0NvbWVudGFyaXUnOwokbGFuZ1sndGVtcGxhdGUnXSA9ICdUZW1wbGF0ZSAnOwokbGFuZ1sndXNlZGVmYXVsdCddID0gJ2ZvbG9zaXJlIGltcGxpY2l0JzsKJGxhbmdbJ3RodW1ibmFpbHNpemUnXSA9ICdEaW1lbnNpdW5lIG1pbmlhdHVyaSAoRnJvbnRlbmQpJzsKJGxhbmdbJ2xlYXZlZW1wdHknXSA9ICcobGFzYXRpIGdvbCBwZW50cnUgYSBmb2xvc2kgbWluaWF0dXJpbGUgaW1wbGljaXRlIGRlIGxhIE1hbmFnZXIgSW1hZ2luaSknOwokbGFuZ1snd2lkdGgnXSA9ICdsYXRpbWUnOwokbGFuZ1snaGVpZ2h0J10gPSAnaW5hbHRpbWUnOwokbGFuZ1sncmVzaXplbWV0aG9kJ10gPSAnbWV0b2RhIHJlZGltZW5zaW9uYXJlJzsKJGxhbmdbJ2Nyb3AnXSA9ICdjcm9wICc7CiRsYW5nWydzY2FsZSddID0gJ3NjYWxhcmUnOwokbGFuZ1snem9vbWNyb3AnXSA9ICd6b29tICZhbXA7IGNyb3AgJzsKJGxhbmdbJ3pvb21zY2FsZSddID0gJ3pvb20gJmFtcDsgc2NhbGFyZSc7CiRsYW5nWydjcmVhdGV0aHVtYnMnXSA9ICcoUmUpQ3JlYXJlIE1pbmlhdHVyaSc7CiRsYW5nWyd0aHVtYnNjcmVhdGVkJ10gPSAnTWluaWF0dXJpIGNyZWF0ZSc7CiRsYW5nWydnYWxsZXJ5dXBkYXRlZCddID0gJ0dhbGVyaWEgYSBmb3N0IGFjdHVhbGl6YXRhIGN1IHN1Y2Nlcy4nOwokbGFuZ1snZXJyb3JfdXBkYXRlZ2FsbGVyeWZhaWxlZCddID0gJ0FjdHVhbGl6YXJlIGdhbGVyaWUgZXN1YXRhLic7CiRsYW5nWyd0ZW1wbGF0ZXMnXSA9ICdUZW1wbGF0ZS11cmknOwokbGFuZ1sndGl0bGVfYXZhaWxhYmxlX3RlbXBsYXRlcyddID0gJ1RlbXBsYXRldXJpIGRpc3BvbmliaWxlJzsKJGxhbmdbJ3Byb21wdF9uYW1lJ10gPSAnTnVtZSc7CiRsYW5nWydwcm9tcHRfZGVmYXVsdCddID0gJ0ltcGxpY2l0JzsKJGxhbmdbJ3Byb21wdF9uZXd0ZW1wbGF0ZSddID0gJ0NyZWFyZSB0ZW1wbGF0ZSBub3UnOwokbGFuZ1sndGl0bGVfdGVtcGxhdGUnXSA9ICdFZGl0b3IgdGVtcGxhdGUnOwokbGFuZ1sncHJvbXB0X3RlbXBsYXRlbmFtZSddID0gJ051bWUgdGVtcGxhdGUnOwokbGFuZ1sncHJvbXB0X3RlbXBsYXRlJ10gPSAnU3Vyc2EgdGVtcGxhdGUnOwokbGFuZ1sncHJvbXB0X3RlbXBsYXRlanMnXSA9ICdKYXZhU2NyaXB0IFRlbXBsYXRlJzsKJGxhbmdbJ3Byb21wdF90ZW1wbGF0ZWNzcyddID0gJ1N0eWxlc2hlZXQgQ1NTIHRlbXBsYXRlJzsKJGxhbmdbJ3RlbXBsYXRldXBkYXRlZCddID0gJ1RlbXBsYXRlLXVsIGEgZm9zdCBhY3R1YWxpemF0IGN1IHN1Y2Nlcy4nOwokbGFuZ1sndGVtcGxhdGVhZGRlZCddID0gJ1RlbXBsYXRlLXVsIGEgZm9zdCBhZGF1Z2F0IGN1IHN1Y2Nlcy4nOwokbGFuZ1snZXJyb3JfdGVtcGxhdGVuYW1lZXhpc3RzJ10gPSAnTnVtZWxlIGRlIHRlbXBsYXRlIGV4aXN0YSBkZWphLic7CiRsYW5nWyd0ZW1wbGF0ZWRlbGV0ZWQnXSA9ICdUZW1wbGF0ZSBzdGVycyc7CiRsYW5nWydhdmFpbGFibGV2YXJpYWJsZXMnXSA9ICdWYXJpYWJpbGUgc21hcnR5IGRpc3BvbmliaWxlIHBlbnRydSB0ZW1wbGF0ZSc7CiRsYW5nWydhdmFpbGFibGV2YXJpYWJsZXNsaXN0J10gPSAnQWNlc3RlYSBzdW50IHZhcmlhYmlsZWxlIHBlIGNhcmUgbGUgcHV0ZXRpIGZvbG9zaSBwZW50cnUgYSBjdXN0b21pemEgdGVtcGxhdGUtdWwgZHVtbmVhdm9hc3RyYTo8YnIgLz48YnIgLz4NCnskbW9kdWxlX21lc3NhZ2V9IC0gZXJyb3IgbWVzc2FnZSwgaXMgb25seSBzZXQgaWYgdGhlcmUmIzAzOTtzIGEgbWVzc2FnZTxiciAvPg0KeyRnYWxsZXJ5dGl0bGV9IC0gdGl0bGUgb2YgdGhlIGdhbGxlcnkuIElmIHRoZXJlIGlzIG5vIHRpdGxlLCB0aGlzIHdpbGwgc2hvdyB0aGUgZGlyZWN0b3J5IG5hbWU8YnIgLz4NCnskZ2FsbGVyeWNvbW1lbnR9IC0gY29tbWVudCBvZiB0aGUgZ2FsbGVyeTxiciAvPg0KeyRwYXJlbnRsaW5rfSAtIGxpbmsgdG8gdGhlIHBhcmVudCBmb2xkZXI8YnIgLz4NCnskaW1hZ2Vjb3VudH0gLSBzaG93cyBlLmcuICZxdW90OzYgaW1hZ2VzJnF1b3Q7LCBkZXBlbmRpbmcgb24gbGFuZ3VhZ2U8YnIgLz4NCnskaXRlbWNvdW50fSAtIG51bWJlciBvZiBpdGVtcywgaW1hZ2VzICsgZm9sZGVyczxiciAvPg0KeyRwYWdlc30gLSBudW1iZXIgb2YgcGFnZXM8YnIgLz4NCnskcHJldnBhZ2V9IC0gbGluayB0byBwcmV2aW91cyBwYWdlLCBpZiBhcHBsaWNhYmxlPGJyIC8+DQp7JG5leHRwYWdlfSAtIGxpbmsgdG8gbmV4dCBwYWdlLCBpZiBhcHBsaWNhYmxlPGJyIC8+DQp7JHBhZ2VsaW5rc30gLSBsaW5rcyB0byBlYWNoIGV4aXN0aW5nIHBhZ2U8YnIgLz4NCnskaW1hZ2VzfSAtIGFycmF5IHdpdGgga2V5czo8YnIgLz4NCiZlbXNwOyZidWxsOyBmaWxlIC0gcmVsYXRpdmUgcGF0aCB0byB0aGUgb3JpZ2luYWwgaW1hZ2U8YnIgLz4NCiZlbXNwOyZidWxsOyB0aXRsZSAtIHRpdGxlIG9mIHRoZSBpbWFnZS4gSWYgdGhlcmUgaXMgbm8gdGl0bGUsIHRoaXMgd2lsbCBzaG93IHRoZSBmaWxlbmFtZTxiciAvPg0KJmVtc3A7JmJ1bGw7IGNvbW1lbnQgLSBjb21tZW50IHRvIHRoZSBpbWFnZTxiciAvPg0KJmVtc3A7JmJ1bGw7IGZpbGVkYXRlIC0gY3JlYXRpb24gZGF0ZS90aW1lIDxiciAvPg0KJmVtc3A7JmJ1bGw7IHRodW1iIC0gcmVsYXRpdmUgcGF0aCB0byB0aGUgdGh1bWJuYWlsPGJyIC8+DQomZW1zcDsmYnVsbDsgZm9sZGVybGluayAtIGxpbmsgdG8gYSBzdWJnYWxsZXJ5IHdpdGggdGhlIHRodW1iIG9mIHRoZSBpbWFnZSB3aGljaCBpcyBzZXQgYXMgZGVmYXVsdCBpbiB0aGF0IHN1YmdhbGxlcnkuIElmIG5vIGltYWdlIGlzIHNldCBhcyBkZWZhdWx0LCBhIHN0YW5kYXJkIGZvbGRlci1pY29uIHdpbGwgYmUgdXNlZC4gZm9sZGVybGluayBpcyBlbXB0eSBpZiB0aGUgaXRlbSBpcyBhbiBpbWFnZTxiciAvPg0KJzsKJGxhbmdbJ29wdGlvbnMnXSA9ICdPcHRpdW5pJzsKJGxhbmdbJ2FsbG93ZWRfZXh0ZW5zaW9ucyddID0gJ0V4dGVuc2lpIHBlcm1pc2UnOwokbGFuZ1sndXNlX2NvbW1lbnRfd3lzaXd5ZyddID0gJ1NlIGZvbG9zZXN0ZSB1biBlZGl0b3IgV1lTSVdZRyBpbiBjYW1wdWwgZGUgY29tZW50YXJpaSc7CiRsYW5nWydvcHRpb25zdXBkYXRlZCddID0gJ09wdGl1bmlsZSBhdSBmb3N0IGFjdHVhbGl6YXRlIGN1IHN1Y2Nlcy4nOwokbGFuZ1snaW1hZ2VzJ10gPSAnaW1hZ2luaSc7CiRsYW5nWydwcmV2cGFnZSddID0gJ2luYXBvaSc7CiRsYW5nWyduZXh0cGFnZSddID0gJ2luYWludGUnOwokbGFuZ1snZGVmYXVsdGdhbGxlcnljb21tZW50J10gPSAnVmEgbXVsdHVtaW0gY2EgYXRpIGluc3RhbGF0IG1vZHVsdWwgR2FsZXJpZS4gRGFjYSBhdGkgdXJjYXQgaW1hZ2luaSBpbiBmb2xkZXJ1bCAmIzAzOTt1cGxvYWRzL2ltYWdlcy9HYWxsZXJ5LyYjMDM5OywgbGUgdmV0aSB2ZWRlYSBtYWkgam9zLiBQdXRldGkgZWRpdGEgdGl0bHVyaWxlLCBkZXNjcmllcmlsZSBzaSBkaW1lbnNpdW5pbGUgbWluaWF0dXJpbG9yIGluIHNlY3RpdW5lYSBkZSBhZG1pbmlzdHJhcmUuIFZlcmlmaWNhdGkgdG9hdGUgY2VsZWxhbHRlIG9wdGl1bmkgZGlzcG9uaWJpbGUgaW4gQWp1dG9yIG1vZHVsLic7CiRsYW5nWydoZWxwX2RpciddID0gJ1BhcmFtZXRydSBwZW50cnUgc3BlY2lmaWNhcmUgZm9sZGVyLCByZWxhdGl2IGxhIHVwbG9hZHMvaW1hZ2VzL0dhbGxlcnkvJzsKJGxhbmdbJ2hlbHBfdGVtcGxhdGUnXSA9ICdGb2xvc2lyZSB0ZW1wbGF0ZSBiYXphIGRlIGRhdGUgc2VwYXJhdCBwZW50cnUgYWZpc2FyZSBnYWxlcmllIGZvdG8uIEFjZXN0IHRlbXBsYXRlIHRyZWJ1aWUgc2EgZXhpc3RlIHNpIHNhIGZpZSB2aXppYmlsIGluIHRhYnVsIGRlIHRlbXBsYXRlLXVyaSBkaW4gcGFub3VsIGRlIGFkbWluaXN0cmFyZSBhbCBtb2R1bHVsdWksIHRvdHVzaSBudSB0cmVidWllIHNhIGZpZSBjZWwgaW1wbGljaXQuIERhY2EgYWNlc3QgcGFyYW1ldHJ1IG51IGVzdGUgc3BlY2lmaWNhdCwgYXR1bmNpIHRlbXBsYXRlLXVsIGFsb2NhdCBmb2xkZXJ1bHVpIGVzdGUgZmxvc2l0LCBhbHRmZWwgc2UgZm9sb3Nlc3RlIGNlbCBpbXBsaWNpdC4nOwokbGFuZ1snaGVscF9udW1iZXInXSA9ICdOdW1hcnVsIG1heGltIGRlIG1pbmlhdHVyaSBkZSBhZmlzYXQgKHBlciBwYWdpbmEpLiBEYWNhIGxhc2F0aSBjYW1wdWwgZ29sLCBzZSB2b3IgYWZpc2EgdG9hdGUgaW1hZ2luaWxlLic7CiRsYW5nWydoZWxwX3N0YXJ0J10gPSAnUG9ybmlyZSBsYSBhIG4tYSBpbWFnaW5lLiBEYWNhIGxhc2F0aSBjYW1wdWwgZ29sLCBzZSB2YSBwb3JuaSBkZSBsYSBwcmltYSBpbWFnaW5lLic7CiRsYW5nWydoZWxwX3Nob3cnXSA9ICdTdXByYXNjcmllIGNhcmUgaW1hZ2luaSBzYSBmaWUgYWZpc2F0ZS4gVmFsb3JpIHBvc2liaWxlIHN1bnQ6DQo8dWw+DQo8bGk+JiMwMzk7YWN0aXZlJiMwMzk7IC0gcGVudHJ1IGFmaXNhcmUgaW1hZ2luaSBtYXJjYXRlIGNhIGFjdGl2ZSAoaW1wbGljaXQpPC9saT4NCjxsaT4mIzAzOTtpbmFjdGl2ZSYjMDM5OyAtIHBlbnRydSBhZmlzYXJlIG51bWFpIGltYWdpbmkgbWFyY2F0ZSBjYSBpbmFjdGl2ZSA8L2xpPg0KPGxpPiYjMDM5O2FsbCYjMDM5OyAtIHBlbnRydSBhZmlzYXJlIHRvYXRlIGltYWdpbmlsZTwvbGk+DQo8L3VsPg0KJzsKJGxhbmdbJ2hlbHBfY2F0ZWdvcnknXSA9ICdUbyBkaXNwbGF5IG9ubHkgaW1hZ2VzL2dhbGxlcmllcyBhc3NpZ25lZCB0byB0aGUgc3BlY2lmaWVkIGNhdGVnb3JpZXMuIFVzZSAqIGFmdGVyIHRoZSBuYW1lIHRvIHNob3cgY2hpbGRyZW4uICBNdWx0aXBsZSBjYXRlZ29yaWVzIGNhbiBiZSB1c2VkIGlmIHNlcGFyYXRlZCB3aXRoIGEgY29tbWEuIExlYXZpbmcgZW1wdHksIHdpbGwgc2hvdyBhbGwgY2F0ZWdvcmllcy4gJzsKJGxhbmdbJ2hlbHBfYWN0aW9uJ10gPSAnT3ZlcnJpZGUgdGhlIGRlZmF1bHQgYWN0aW9uLiBVc2UgaXQgaW4gY29tYmluYXRpb24gd2l0aCB0aGUgYWJvdmUgcGFyYW1ldGVycy4gUG9zc2libGUgdmFsdWVzIGFyZToNCjx1bD4NCjxsaT4mIzAzOTtzaG93cmFuZG9tJiMwMzk7IC0gdG8gZGlzcGxheSBhIHNldCBvZiByYW5kb20gdGh1bWItaW1hZ2VzIChhcHBsaWVzIG9ubHkgdG8gdGhlIGltYWdlcyB3aGljaCBhcmUgc3RvcmVkIGluIHRoZSBkYXRhYmFzZSwgZGVmYXVsdHMgdG8gYSBudW1iZXIgb2YgNiBpbWFnZXMpLiBUaGUgZGlyIHBhcmFtZXRlciBtdXN0IGJlIHNldCwgb3IgdGhlIGRlZmF1bHQgR2FsbGVyeS1yb290IHdpbGwgYmUgdXNlZC4gVXNlICYjMDM5Oy8qJiMwMzk7IGFmdGVyIHRoZSBuYW1lIHRvIGluY2x1ZGUgaW1hZ2VzIGZyb20gc3ViZGlyZWN0b3JpZXM8L2xpPg0KPGxpPiYjMDM5O3Nob3dsYXRlc3QmIzAzOTsgLSB0byBkaXNwbGF5IHRoZSBtb3N0IHJlY2VudGx5IGFkZGVkIGltYWdlcyAoYXBwbGllcyBvbmx5IHRvIHRoZSBpbWFnZXMgd2hpY2ggYXJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UsIGRlZmF1bHRzIHRvIGEgbnVtYmVyIG9mIDYgaW1hZ2VzKSBUaGUgZGlyIHBhcmFtZXRlciBtdXN0IGJlIHNldCwgb3IgdGhlIGRlZmF1bHQgR2FsbGVyeS1yb290IHdpbGwgYmUgdXNlZC4gU3ViZGlyZWN0b3JpZXMgYXJlIGF1dG9tYXRpY2FsbHkgaW5jbHVkZWQ8L2xpPg0KPGxpPiYjMDM5O3Nob3dsYXRlc3RkaXImIzAzOTsgLSBub3QgeWV0IGltcGxlbWVudGVkISBNZW5kIHRvIGRpc3BsYXkgYSBzZXQgb2YgcmFuZG9tIHRodW1iLWltYWdlcyBmcm9tIHRoZSBtb3N0IHJlY2VudGx5IGFkZGVkIGRpcmVjdG9yeSAoYXBwbGllcyBvbmx5IHRvIHRoZSBpbWFnZXMgd2hpY2ggYXJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UsIGRlZmF1bHRzIHRvIGEgbnVtYmVyIG9mIDYgaW1hZ2VzKSBUaGUgdGh1bWItc2V0dGluZ3Mgb2YgdGhlIEdhbGxlcnktcm9vdCB3aWxsIGJlIHVzZWQ8L2xpPg0KPC91bD4gDQonOwokbGFuZ1snY2hhbmdlbG9nJ10gPSAnPHVsPg0KPGxpPlZlcnNpb24gMS4wLjEuIDIzIEF1Z3VzdCAyMDA5LiBBcHBseSB0aHVtYm5haWwtc2V0dGluZ3Mgb24gJiMwMzk7QWxidW0tY292ZXJzJiMwMzk7IFsjMzkyNF0sIEJ1Z2ZpeCBmb3IgWyMzOTI3XSwgQWRkZWQgbWlzc2luZyAvZGl2IHRvIHRoaWNrYm94LXRlbXBsYXRlLCBmaXhlZCBhbiBpc3N1ZSB3aXRoIGdlbmVyYXRpbmcgdGh1bWJuYWlscyB3aGVuIG5vIHRodW1icyBhdmFpbGFibGUgaW4gSW1hZ2VNYW5hZ2VyLCBpbXByb3ZlZCB0aGUgbmFtaW5nIG9mIHRodW1icywgQnVnZml4IGZvciBbIzM5MzFdLCBQcmV2ZW50IGRpc3BsYXkgdGhlIGNvbnRlbnQgb2YgZ2FsbGVyaWVzIHRoYXQgYXJlIHNldCBhcyBpbmFjdGl2ZS48L2xpPg0KPGxpPlZlcnNpb24gMS4wLiAxNyBBdWd1c3QgMjAwOS4gUGFnaW5hdGlvbiBwYXJhbWV0ZXJzIGFkZGVkLCBTdGFuZGFyZCB0ZW1wbGF0ZXMgY2hhbmdlZCBhY2NvcmRpbmdseSwgRXh0ZW5kZWQgdGhlIG1vZHVsZS1oZWxwLCBBZGRlZCBmdW5jdGlvbnMgdG8gc2hvdyByYW5kb20gb3IgbGF0ZXN0IGltYWdlcywgU3VwcG9ydCBvZiBwcmV0dHktdXJscywgVmFyaW91cyBpbXByb3ZlbWVudHM8L2xpPg0KPGxpPlZlcnNpb24gMC42LiA5IEF1Z3VzdCAyMDA5LiBJbml0aWFsIEJldGEgUmVsZWFzZS48L2xpPg0KPC91bD4gJzsKJGxhbmdbJ2hlbHAnXSA9ICc8aDM+V2hhdCBEb2VzIFRoaXMgRG8/PC9oMz4NCjxwPlRoZSBHYWxsZXJ5IG1vZHVsZSBpcyBhbiBlYXN5IHRvIHVzZSBwaG90byBnYWxsZXJ5IHdoaWNoIGF1dG9tYXRpY2FsbHkgc2hvd3MgdGhlIGltYWdlcyBvZiBhIHNwZWNpZmllZCBkaXJlY3RvcnkuIFN1YmRpcmVjdG9yaWVzIHdpbGwgYmUgc2hvd24gYXMgc3ViZ2FsbGVyaWVzLiBJdCBoYXMgbG90cyBvZiBmZWF0dXJlcywgc3VjaCBhcyBhdXRvbWF0aWMgdGh1bWJuYWlsaW5nLCB0aGUgdXNlIG9mIG11bHRpcGxlIExpZ2h0Ym94LWxpa2UgdGVtcGxhdGVzIG9yIGFueSBjc3MvamF2YXNjcmlwdCB0ZW1wbGF0ZSB5b3UgbGlrZSwgYW5kIHlvdSBjYW4gZ2l2ZSB0aXRsZXMgYW5kIGRlc2NyaXB0aW9ucyB0byB5b3VyIGdhbGxlcmllcyBhcyB3ZWxsIGFzIHlvdXIgcGhvdG9zLjwvcD4NCjxoMz5Ib3cgRG8gSSBVc2UgSXQ8L2gzPg0KPHA+Rmlyc3QsIGluc2VydCB0aGUgbW9kdWxlIHdpdGggdGhlIHtHYWxsZXJ5fSB0YWcgaW50byB5b3VyIHBhZ2Ugb3IgdGVtcGxhdGUgYW55d2hlcmUgeW91IHdoaXNoLiBUaGVuIHVwbG9hZCBzb21lIGltYWdlcyB3aXRoIHRoZSBJbWFnZSBNYW5hZ2VyLCBGaWxlIE1hbmFnZXIgKGUuZy4gbXVsdGlwbGUgaW1hZ2VzIGluIHppcGZpbGUpIG9yIEZUUCB0byB0aGUgdXBsb2Fkcy9pbWFnZXMvR2FsbGVyeS8gZGlyZWN0b3J5LjwvcD4NCjxwPlRoYXQmIzAzOTtzIGl0ITwvcD4NCjxwPklmIHlvdSB3YW50IG1vcmUgcGhvdG8gZ2FsbGVyaWVzLCBzaW1wbHkgY3JlYXRlIGEgc3ViZGlyZWN0b3J5IGFuZCB1cGxvYWQgeW91ciBwaG90b3MgYXMgZGVzY3JpYmVkLiBCeSBhZGRpbmcgcGFyYW1ldGVycyB0byB0aGUge0dhbGxlcnl9IHRhZywgeW91IGNhbiBlYXNpbHkgbWFuaXB1bGF0ZSB3aGljaCBzdWJnYWxsZXJ5IHdpbGwgYmUgc2hvd24gaW4gd2hpY2ggdGVtcGxhdGUsIGUuZy4ge0dhbGxlcnkgZGlyPSZxdW90O2hvbGlkYXlzL05ldGhlcmxhbmRzMjAwOSZxdW90OyB0ZW1wbGF0ZT0mcXVvdDtMaWdodGJveCZxdW90O308L3A+DQo8cD5CeSBkZWZhdWx0IHRoZSB0aHVtYm5haWxzIGZyb20gdGhlIEltYWdlIE1hbmFnZXIgYXJlIHVzZWQgdG8gZGlzcGxheSB0aGUgcGhvdG8gZ2FsbGVyaWVzLjwvcD4NCjxoMz5BZHZhbmNlZCBPcHRpb25zLCBidXQgc3RpbGwgZWFzeSB0byB1c2U8L2gzPg0KPHA+SW4gdGhlIGFkbWluIHNlY3Rpb24geW91IGhhdmUgbG90cyBvZiBvdGhlciBvcHRpb25zOjwvcD4NCjx1bD4NCjxsaT5TZXQgYSBwaG90byBhcyB0aGUgZGVmYXVsdCBmb3IgYSBnYWxsZXJ5LCBzbyBpdCB3aWxsIHNob3cgaW4gdGhlIHBhcmVudCBnYWxsZXJ5IGFzIGEgJiMwMzk7Y292ZXImIzAzOTsgaW4gc3RlYWQgb2YgdGhlIGRlZmF1bHQgZm9sZGVyLWljb24uPC9saT4NCjxsaT5HaXZlIHRpdGxlcyBhbmQgZGVzY3JpcHRpb25zIHRvIGdhbGxlcmllcy48L2xpPg0KPGxpPlNldCBhIGRlZmF1bHQgdGVtcGxhdGUgZm9yIGVhY2ggZ2FsbGVyeS48L2xpPg0KPGxpPlNldCB0aHVtYm5haWwgc2l6ZXMgZm9yIGVhY2ggZ2FsbGVyeSwgd2l0aCBwb3NpYmlsaXRpZXMgdG8gc2NhbGUsIGNyb3AgYW5kL29yIHpvb20gdGhlIGltYWdlcy48L2xpPg0KPGxpPkdpdmUgdGl0bGVzIGFuZCBkZXNjcmlwdGlvbnMgdG8gcGhvdG9zLjwvbGk+DQo8bGk+U3dpdGNoIGEgc3BlY2lmaWMgcGhvdG8gb3IgZ2FsbGVyeSB0byBpbmFjdGl2ZSwgcHJldmVudGluZyBpdCBmcm9tIGRpc3BsYXkuPC9saT4NCjxsaT5FZGl0L2NvcHkgdGVtcGxhdGVzIG9yIGNyZWF0ZSBuZXcgb25lcy4gQ2hlY2sgdGhlIGluZm8taWNvbiBiZW5lYXRoIHRoZSB0ZW1wbGF0ZS1jb2RlIGZvciB0aGUgYXZhaWxhYmxlIHZhcmlhYmxlcy48L2xpPg0KPC91bD4NCjxwPkluIG9yZGVyIHRvIGVkaXQgdGVtcGxhdGVzLCB0aGUgdXNlciBtdXN0IGJlbG9uZyB0byBhIGdyb3VwIHdpdGggdGhlICYjMDM5O01vZGlmeSBUZW1wbGF0ZXMmIzAzOTsgcGVybWlzc2lvbi4gVG8gZWRpdCB0aGUgZ2xvYmFsIEdhbGxlcnkgb3B0aW9ucywgdGhlIHVzZXIgbXVzdCBiZWxvbmcgdG8gYSBncm91cCB3aXRoIHRoZSAmIzAzOTtNb2RpZnkgU2l0ZSBQcmVmZXJlbmNlcyYjMDM5OyBwZXJtaXNzaW9uLjwvcD4NCjxwPkFsbCB0aXRsZXMsIGRlc2NyaXB0aW9ucyBhbmQgc2V0dGluZ3MgYXJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UuIFRoZSBkYXRhYmFzZSB3aWxsIHN5bmNocm9uaXplIHdpdGggdGhlIGZpbGVkaXJlY3RvcnkgZWFjaCB0aW1lIHRoZSBhY2NvcmRpbmcgZ2FsbGVyeSBpcyB2aXNpdGVkIGluIHRoZSBHYWxsZXJ5LWFkbWluLiBBIGxpdHRsZSB3YXJuaW5nOiB3aGVuIHlvdSBtb3ZlIGFuIGltYWdlIG9yIHN1YmRpcmVjdG9yeSB0byBhbm90aGVyIGRpcmVjdG9yeSwgeW91IHdpbGwgbG9vc2UgaXRzIHRpdGxlLCBkZXNjcmlwdGlvbiBhbmQgc2V0dGluZ3MuPC9wPg0KPGgzPlN1cHBvcnQ8L2gzPg0KPHA+VGhpcyBtb2R1bGUgZG9lcyBub3QgaW5jbHVkZSBjb21tZXJjaWFsIHN1cHBvcnQuIEhvd2V2ZXIsIHRoZXJlIGFyZSBhIG51bWJlciBvZiByZXNvdXJjZXMgYXZhaWxhYmxlIHRvIGhlbHAgeW91IHdpdGggaXQ6PC9wPg0KPHVsPg0KPGxpPkZvciB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhpcyBtb2R1bGUsIEZBUXMsIG9yIHRvIGZpbGUgYSBGZWF0dXJlIFJlcXVlc3Qgb3IgQnVnIFJlcG9ydCwgcGxlYXNlIHZpc2l0IHRoZSBNb2R1bGUgRm9yZ2UNCjxhIGhyZWY9Imh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvZ2FsbGVyeS8iPkdhbGxlcnkgUGFnZTwvYT4uPC9saT4NCjxsaT5BZGRpdGlvbmFsIGRpc2N1c3Npb24gb2YgdGhpcyBtb2R1bGUgbWF5IGFsc28gYmUgZm91bmQgaW4gdGhlIDxhIGhyZWY9Imh0dHA6Ly9mb3J1bS5jbXNtYWRlc2ltcGxlLm9yZyI+Q01TIE1hZGUgU2ltcGxlIEZvcnVtczwvYT4uPC9saT4NCjxsaT5MYXN0bHksIHlvdSBtYXkgaGF2ZSBzb21lIHN1Y2Nlc3MgZW1haWxpbmcgdGhlIGF1dGhvciBkaXJlY3RseS48L2xpPiAgDQo8L3VsPg0KPHA+QXMgcGVyIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgYXMtaXMuIFBsZWFzZSByZWFkIHRoZSB0ZXh0IG9mIHRoZSBsaWNlbnNlIGZvciB0aGUgZnVsbCBkaXNjbGFpbWVyLjwvcD4NCg0KPGgzPkNvcHlyaWdodCBhbmQgTGljZW5zZTwvaDM+DQo8cD5Db3B5cmlnaHQgJmNvcHk7IDIwMDksIEpvcyA8YSBocmVmPSJtYWlsdG86am9zdmRAbGl2ZS5ubCI+PGpvc3ZkQGxpdmUubmw+PC9hPi4gQWxsIFJpZ2h0cyBBcmUgUmVzZXJ2ZWQuPC9wPg0KPHA+VGhpcyBtb2R1bGUgaGFzIGJlZW4gcmVsZWFzZWQgdW5kZXIgdGhlIDxhIGhyZWY9Imh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTCI+R05VIFB1YmxpYyBMaWNlbnNlPC9hPi4gWW91IG11c3QgYWdyZWUgdG8gdGhpcyBsaWNlbnNlIGJlZm9yZSB1c2luZyB0aGUgbW9kdWxlLjwvcD4gDQonOwokbGFuZ1sndXRtYSddID0gJzE1Njg2MTM1My4xNTI2MDM3MzUwLjEyNTE5NTkzNDMuMTI1MTk4MTE5Mi4xMjUxOTg1Njg4LjUnOwokbGFuZ1sndXRtYyddID0gJzE1Njg2MTM1Myc7CiRsYW5nWyd1dG16J10gPSAnMTU2ODYxMzUzLjEyNTE5NTkzNDMuMS4xLnV0bWNzcj1nb29nbGV8dXRtY2NuPShvcmdhbmljKXx1dG1jbWQ9b3JnYW5pY3x1dG1jdHI9Y21zbWFkZXNpbXBsZSc7CiRsYW5nWydxY2EnXSA9ICdQMC05MDE2NTM0NzMtMTI1MTk1OTM0MjcyOSc7CiRsYW5nWyd1dG1iJ10gPSAnMTU2ODYxMzUzJzsKPz4=]]></data>
	</file>
	<file>
	  <filename>/method.install.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIE1vZHVsZTogR2FsbGVyeQ0KIyBNZXRob2Q6IEluc3RhbGwNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwOCBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpDQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnDQojIFRoZSBtb2R1bGUncyBob21lcGFnZSBpczogaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9wcm9qZWN0cy9nYWxsZXJ5Lw0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7DQoNCg0KJGRiID0mICRnQ21zLT5HZXREYigpOw0KDQovLyBteXNxbC1zcGVjaWZpYywgYnV0IGlnbm9yZWQgYnkgb3RoZXIgZGF0YWJhc2UNCiR0YWJvcHRhcnJheSA9IGFycmF5KCAnbXlzcWwnID0+ICdUWVBFPU15SVNBTScgKTsNCg0KJGRpY3QgPSBOZXdEYXRhRGljdGlvbmFyeSggJGRiICk7DQoNCi8vIHRhYmxlIHNjaGVtYSBkZXNjcmlwdGlvbg0KJGZsZHMgPSAiDQoJZmlsZWlkIEkgS0VZIEFVVE8sDQoJZmlsZW5hbWUgQygyNTUpLA0KCWZpbGVwYXRoIEMoMjU1KSwNCglmaWxlZGF0ZSAiIC4gQ01TX0FET0RCX0RUIC4gIiwNCglmaWxlb3JkZXIgSSwNCglhY3RpdmUgSSwNCglkZWZhdWx0ZmlsZSBJLA0KCWdhbGxlcnlpZCBJIEtFWSwNCgl0aXRsZSBDKDI1NSksDQoJY29tbWVudCBYDQoiOw0KDQokc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlVGFibGVTUUwoIGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2dhbGxlcnkiLA0KCSRmbGRzLCANCgkkdGFib3B0YXJyYXkpOw0KJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOw0KLyoNCi8vIGNyZWF0ZSBhIHNlcXVlbmNlDQokZGItPkNyZWF0ZVNlcXVlbmNlKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2dhbGxlcnlfc2VxIik7DQoqLw0KDQokZmxkcyA9ICINCglmaWxlaWQgSSBLRVksDQoJdGVtcGxhdGVpZCBJLA0KCWhpZGVwYXJlbnRsaW5rIEkNCiI7DQoNCiRzcWxhcnJheSA9ICRkaWN0LT5DcmVhdGVUYWJsZVNRTCggY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfZ2FsbGVyeV9wcm9wcyIsDQoJJGZsZHMsDQoJJHRhYm9wdGFycmF5KTsNCiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsNCg0KJGZsZHMgPSAiDQoJdGVtcGxhdGVpZCBJIEtFWSBBVVRPLA0KCXRlbXBsYXRlIEMoMjU1KSwNCgl0aHVtYndpZHRoIEksDQoJdGh1bWJoZWlnaHQgSSwNCglyZXNpemVtZXRob2QgQygxMCksDQoJbWF4bnVtYmVyIEksDQoJc29ydGl0ZW1zIEMoMjU1KQ0KIjsNCg0KJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZVRhYmxlU1FMKCBjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9nYWxsZXJ5X3RlbXBsYXRlcHJvcHMiLA0KCSRmbGRzLA0KCSR0YWJvcHRhcnJheSk7DQokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7DQoNCi8vIGNyZWF0ZSBhIHBlcm1pc3Npb24NCiR0aGlzLT5DcmVhdGVQZXJtaXNzaW9uKCdVc2UgR2FsbGVyeScsICdVc2UgR2FsbGVyeScpOw0KJHRoaXMtPkNyZWF0ZVBlcm1pc3Npb24oJ1NldCBHYWxsZXJ5IFByZWZzJywnU2V0IEdhbGxlcnkgUHJlZnMnKTsNCg0KLy8gc2V0dXAgdGVtcGxhdGVzDQokdGVtcGxhdGVzID0gYXJyYXkoIGFycmF5KCAndHBsbmFtZScgPT4gJ0ZhbmN5Ym94JyAsICd0cGxmaWxlJyA9PiAndGVtcGxhdGVfZmFuY3lib3gudHBsJyApLA0KCQkJCQkJCQkJCWFycmF5KCAndHBsbmFtZScgPT4gJ0xpZ2h0Ym94JyAsICd0cGxmaWxlJyA9PiAndGVtcGxhdGVfbGlnaHRib3gudHBsJyApLA0KCQkJCQkJCQkJCWFycmF5KCAndHBsbmFtZScgPT4gJ0x5dGVib3hfc2xpZGVzaG93JyAsICd0cGxmaWxlJyA9PiAndGVtcGxhdGVfbHl0ZWJveF9zbGlkZXNob3cudHBsJyApLA0KCQkJCQkJCQkJCWFycmF5KCAndHBsbmFtZScgPT4gJ1NsaW1ib3gnICwgJ3RwbGZpbGUnID0+ICd0ZW1wbGF0ZV9zbGltYm94LnRwbCcgKSwNCgkJCQkJCQkJCQlhcnJheSggJ3RwbG5hbWUnID0+ICdUaGlja2JveCcgLCAndHBsZmlsZScgPT4gJ3RlbXBsYXRlX3RoaWNrYm94LnRwbCcgKSk7DQoNCmZvcmVhY2ggKCAkdGVtcGxhdGVzIGFzICR0ZW1wbGF0ZSApDQp7DQoJJGZuID0gZGlybmFtZShfX0ZJTEVfXykuRElSRUNUT1JZX1NFUEFSQVRPUi4ndGVtcGxhdGVzJy5ESVJFQ1RPUllfU0VQQVJBVE9SLiR0ZW1wbGF0ZVsndHBsZmlsZSddOw0KCWlmKCBmaWxlX2V4aXN0cyggJGZuICkgKQ0KCXsNCgkJJHRlbXBsYXRlY29kZSA9IEBmaWxlX2dldF9jb250ZW50cygkZm4pOw0KCQkkdGhpcy0+U2V0VGVtcGxhdGUoJHRlbXBsYXRlWyd0cGxuYW1lJ10sJHRlbXBsYXRlY29kZSk7DQoJCSR0ZW1wbGF0ZWFyciA9IGV4cGxvZGUoVEVNUExBVEVfU0VQQVJBVE9SLCAkdGVtcGxhdGVjb2RlKTsNCgkJJHRlbXBsYXRlY3NzID0gJHRlbXBsYXRlYXJyWzFdOw0KCQkkaGFuZGxlID0gZm9wZW4oJy4uL21vZHVsZXMvR2FsbGVyeS90ZW1wbGF0ZXMvY3NzLycgLiAkdGVtcGxhdGVbJ3RwbG5hbWUnXSAuICcuY3NzJywndycpOw0KCQlmd3JpdGUoJGhhbmRsZSwkdGVtcGxhdGVjc3MpOw0KCQlmY2xvc2UoJGhhbmRsZSk7DQoJCSRxdWVyeSA9ICJJTlNFUlQgSU5UTyAiIC4gY21zX2RiX3ByZWZpeCgpIC4gIm1vZHVsZV9nYWxsZXJ5X3RlbXBsYXRlcHJvcHMgKHRlbXBsYXRlLHNvcnRpdGVtcykgVkFMVUVTICg/LD8pIjsNCgkJJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJHRlbXBsYXRlWyd0cGxuYW1lJ10sJ24taXNkaXIvcytmaWxlJykpOw0KCQlpZiAoICR0ZW1wbGF0ZVsndHBsbmFtZSddID09ICdGYW5jeWJveCcgKQ0KCQl7DQoJCQkkdGhpcy0+U2V0UHJlZmVyZW5jZSgnZGVmYXVsdF90ZW1wbGF0ZV9jb250ZW50cycsJHRlbXBsYXRlY29kZSk7DQoJCQkkdGhpcy0+U2V0UHJlZmVyZW5jZSgnY3VycmVudF90ZW1wbGF0ZScsJHRlbXBsYXRlWyd0cGxuYW1lJ10pOw0KCQl9DQoJfQ0KfQ0KDQovLyBjcmVhdGUgYSBwcmVmZXJlbmNlDQokdGhpcy0+U2V0UHJlZmVyZW5jZSgiYWxsb3dlZF9leHRlbnNpb25zIiwgImpwZyxqcGVnLGdpZixwbmciKTsNCiR0aGlzLT5TZXRQcmVmZXJlbmNlKCJ1c2VfY29tbWVudF93eXNpd3lnIiwgZmFsc2UpOw0KDQovLyByZWdpc3RlciBhbiBldmVudCB0aGF0IHRoZSBHYWxsZXJ5IHdpbGwgaXNzdWUuIE90aGVyIG1vZHVsZXMNCi8vIG9yIHVzZXIgdGFncyB3aWxsIGJlIGFibGUgdG8gc3Vic2NyaWJlIHRvIHRoaXMgZXZlbnQsIGFuZCB0cmlnZ2VyDQovLyBvdGhlciBhY3Rpb25zIHdoZW4gaXQgZ2V0cyBjYWxsZWQuDQovLyAkdGhpcy0+Q3JlYXRlRXZlbnQoICdPbkdhbGxlcnlQcmVmZXJlbmNlQ2hhbmdlJyApOw0KDQovLyBjcmVhdGUgZGVmYXVsdCBpbWFnZWZvbGRlciBhbmQgdGh1bWJzZm9sZGVyDQppZiggIWlzX2RpcignLi4nIC4gRElSRUNUT1JZX1NFUEFSQVRPUiAuIHN0cl9yZXBsYWNlKCcvJywgRElSRUNUT1JZX1NFUEFSQVRPUiwgREVGQVVMVF9HQUxMRVJZX1BBVEgpKSApDQp7DQoJbWtkaXIoJy4uJyAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiBzdHJfcmVwbGFjZSgnLycsIERJUkVDVE9SWV9TRVBBUkFUT1IsIERFRkFVTFRfR0FMTEVSWV9QQVRIKSk7DQp9DQppZiggIWlzX2RpcignLi4nIC4gRElSRUNUT1JZX1NFUEFSQVRPUiAuIHN0cl9yZXBsYWNlKCcvJywgRElSRUNUT1JZX1NFUEFSQVRPUiwgREVGQVVMVF9HQUxMRVJZVEhVTUJTX1BBVEgpKSApDQp7DQoJbWtkaXIoJy4uJyAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiBzdHJfcmVwbGFjZSgnLycsIERJUkVDVE9SWV9TRVBBUkFUT1IsIERFRkFVTFRfR0FMTEVSWVRIVU1CU19QQVRIKSk7DQp9DQoNCiRxdWVyeSA9ICJJTlNFUlQgSU5UTyAiIC4gY21zX2RiX3ByZWZpeCgpIC4gIm1vZHVsZV9nYWxsZXJ5IChmaWxlbmFtZSwgZmlsZXBhdGgsIGZpbGVkYXRlLCBmaWxlb3JkZXIsIGFjdGl2ZSwgZGVmYXVsdGZpbGUsIGdhbGxlcnlpZCwgdGl0bGUsIGNvbW1lbnQpIFZBTFVFUyAoPyw/LD8sLTEsMSwwLDAsPyw/KSI7DQokZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgnR2FsbGVyeS8nLCAnJywgZGF0ZSgiWS1tLWQgSDppOnMiLCBmaWxlbXRpbWUoJy4uL3VwbG9hZHMvaW1hZ2VzL0dhbGxlcnknKSksICR0aGlzLT5MYW5nKCdmcmllbmRseW5hbWUnKSwgJHRoaXMtPkxhbmcoJ2RlZmF1bHRnYWxsZXJ5Y29tbWVudCcpKSk7DQokcXVlcnkgPSAiSU5TRVJUIElOVE8gIiAuIGNtc19kYl9wcmVmaXgoKSAuICJtb2R1bGVfZ2FsbGVyeV9wcm9wcyAoZmlsZWlkLHRlbXBsYXRlaWQsaGlkZXBhcmVudGxpbmspIFZBTFVFUyAoPyw/LD8pIjsNCiRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KDEsMCwxKSk7DQoNCg0KLy8gcHV0IG1lbnRpb24gaW50byB0aGUgYWRtaW4gbG9nDQokdGhpcy0+QXVkaXQoIDAsIA0KCSR0aGlzLT5MYW5nKCdmcmllbmRseW5hbWUnKSwgDQoJJHRoaXMtPkxhbmcoJ2luc3RhbGxlZCcsICR0aGlzLT5HZXRWZXJzaW9uKCkpICk7DQoJICAgICAgDQo/Pg==]]></data>
	</file>
	<file>
	  <filename>/method.uninstall.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIE1vZHVsZTogR2FsbGVyeQ0KIyBNZXRob2Q6IFVuaW5zdGFsbA0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgQ01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA1IGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykNCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcNCiMgVGhlIG1vZHVsZSdzIGhvbWVwYWdlIGlzOiBodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL2dhbGxlcnkvDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQppZiAoIWlzc2V0KCRnQ21zKSkgZXhpdDsNCg0KDQokZGIgPSYgJGdDbXMtPkdldERiKCk7DQoNCi8vIHJlbW92ZSB0aGUgZGF0YWJhc2UgdGFibGVzDQokZGljdCA9IE5ld0RhdGFEaWN0aW9uYXJ5KCAkZGIgKTsNCiRzcWxhcnJheSA9ICRkaWN0LT5Ecm9wVGFibGVTUUwoIGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2dhbGxlcnkiICk7DQokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7DQokc3FsYXJyYXkgPSAkZGljdC0+RHJvcFRhYmxlU1FMKCBjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9nYWxsZXJ5X3Byb3BzIiApOw0KJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOw0KJHNxbGFycmF5ID0gJGRpY3QtPkRyb3BUYWJsZVNRTCggY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfZ2FsbGVyeV90ZW1wbGF0ZXByb3BzIiApOw0KJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOw0KDQovLyByZW1vdmUgdGhlIHBlcm1pc3Npb25zDQokdGhpcy0+UmVtb3ZlUGVybWlzc2lvbignVXNlIEdhbGxlcnknKTsNCiR0aGlzLT5SZW1vdmVQZXJtaXNzaW9uKCdTZXQgR2FsbGVyeSBQcmVmcycpOw0KDQovLyByZW1vdmUgYWxsIHByZWZlcmVuY2VzDQokdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgpOw0KDQovLyByZW1vdmUgYWxsIHRlbXBsYXRlcw0KJHRoaXMtPkRlbGV0ZVRlbXBsYXRlKCk7DQoNCi8vIHJlbW92ZSB0aGUgZXZlbnRzDQovLyR0aGlzLT5SZW1vdmVFdmVudCggJ09uR2FsbGVyeVByZWZlcmVuY2VDaGFuZ2UnICk7DQoNCg0KLy8gcHV0IG1lbnRpb24gaW50byB0aGUgYWRtaW4gbG9nDQokdGhpcy0+QXVkaXQoIDAsICR0aGlzLT5MYW5nKCdmcmllbmRseW5hbWUnKSwgJHRoaXMtPkxhbmcoJ3VuaW5zdGFsbGVkJykpOw0KDQo/Pg==]]></data>
	</file>
	<file>
	  <filename>/method.upgrade.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IEdhbGxlcnkKIyBNZXRob2Q6IFVwZ3JhZGUKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDggYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMgVGhlIG1vZHVsZSdzIGhvbWVwYWdlIGlzOiBodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL2dhbGxlcnkvCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCmlmICghaXNzZXQoJGdDbXMpKSBleGl0OwoKCiRjdXJyZW50X3ZlcnNpb24gPSAkb2xkdmVyc2lvbjsKJGRiID0mICR0aGlzLT5HZXREYigpOwoKc3dpdGNoKCRjdXJyZW50X3ZlcnNpb24pCnsKCWNhc2UgIjAuNi4wLWJldGEiOgoJCSRkaWN0ID0gTmV3RGF0YURpY3Rpb25hcnkoJGRiKTsKCQkkc3FsYXJyYXkgPSAkZGljdC0+QWRkQ29sdW1uU1FMKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2dhbGxlcnkiLCAiZ2FsbGVyeWlkIEkgS0VZIik7CgkJJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoJCQoJCSRxdWVyeSA9ICJVUERBVEUgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9nYWxsZXJ5IFNFVCBnYWxsZXJ5aWQ9SUYoZmlsZWlkPTEsMCwxKSBXSEVSRSBmaWxlcGF0aD0nJyI7CgkJJGRiLT5FeGVjdXRlKCRxdWVyeSk7CgkJCgkJJHF1ZXJ5ID0gIlNFTEVDVCBESVNUSU5DVCBmaWxlcGF0aCBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfZ2FsbGVyeSBXSEVSRSAoZ2FsbGVyeWlkIElTIE5VTEwgT1IgZ2FsbGVyeWlkID0gMCkgQU5EIGZpbGVpZCA8PiAxIjsKCQkkcmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSk7CgkJd2hpbGUgKCRyZXN1bHQgJiYgJHJvdyA9ICRyZXN1bHQtPkZldGNoUm93KCkpCgkJewoJCQkkZ2FsbGVyeWluZm8gPSAkdGhpcy0+X0dldGdhbGxlcnlpbmZvKCRyb3dbJ2ZpbGVwYXRoJ10pOwoJCQkkcXVlcnkgPSAiVVBEQVRFICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfZ2FsbGVyeSBTRVQgZ2FsbGVyeWlkPT8gd2hlcmUgZmlsZXBhdGg9PyI7CgkJCSRkYi0+RXhlY3V0ZSgkcXVlcnksYXJyYXkoJGdhbGxlcnlpbmZvWydmaWxlaWQnXSwkcm93WydmaWxlcGF0aCddKSk7CgkJfQoJCSRxdWVyeSA9ICJVUERBVEUgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9nYWxsZXJ5X3Byb3BzIFNFVCByZXNpemVtZXRob2Q9J3NjJyBXSEVSRSByZXNpemVtZXRob2Q9J3NjYWxlJyI7CgkJJGRiLT5FeGVjdXRlKCRxdWVyeSk7CgkJJHF1ZXJ5ID0gIlVQREFURSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2dhbGxlcnlfcHJvcHMgU0VUIHJlc2l6ZW1ldGhvZD0nY3InIFdIRVJFIHJlc2l6ZW1ldGhvZD0nY3JvcCciOwoJCSRkYi0+RXhlY3V0ZSgkcXVlcnkpOwoJCSRxdWVyeSA9ICJVUERBVEUgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9nYWxsZXJ5X3Byb3BzIFNFVCByZXNpemVtZXRob2Q9J3pzJyBXSEVSRSByZXNpemVtZXRob2Q9J3pvb21zY2FsZSciOwoJCSRkYi0+RXhlY3V0ZSgkcXVlcnkpOwoJCSRxdWVyeSA9ICJVUERBVEUgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9nYWxsZXJ5X3Byb3BzIFNFVCByZXNpemVtZXRob2Q9J3pjJyBXSEVSRSByZXNpemVtZXRob2Q9J3pvb21jcm9wJyI7CgkJJGRiLT5FeGVjdXRlKCRxdWVyeSk7CgkJJGN1cnJlbnRfdmVyc2lvbiA9ICIxLjAiOwoKCWNhc2UgIjEuMCI6CgljYXNlICIxLjAuMSI6CgkJJGZuID0gZGlybmFtZShfX0ZJTEVfXykuRElSRUNUT1JZX1NFUEFSQVRPUi4ndGVtcGxhdGVzJy5ESVJFQ1RPUllfU0VQQVJBVE9SLid0ZW1wbGF0ZV9mYW5jeWJveC50cGwnOwoJCWlmKCBmaWxlX2V4aXN0cyggJGZuICkgKQoJCQl7CgkJCQkkdGVtcGxhdGUgPSBAZmlsZV9nZXRfY29udGVudHMoJGZuKTsKCQkJCSR0aGlzLT5TZXRUZW1wbGF0ZSgnRmFuY3lib3gnLCR0ZW1wbGF0ZSk7CgkJCX0KCQkkZm4gPSBkaXJuYW1lKF9fRklMRV9fKS5ESVJFQ1RPUllfU0VQQVJBVE9SLid0ZW1wbGF0ZXMnLkRJUkVDVE9SWV9TRVBBUkFUT1IuJ3RlbXBsYXRlX2x5dGVib3hfc2xpZGVzaG93LnRwbCc7CgkJaWYoIGZpbGVfZXhpc3RzKCAkZm4gKSApCgkJCXsKCQkJCSR0ZW1wbGF0ZSA9IEBmaWxlX2dldF9jb250ZW50cygkZm4pOwoJCQkJJHRoaXMtPlNldFRlbXBsYXRlKCdMeXRlYm94X3NsaWRlc2hvdycsJHRlbXBsYXRlKTsKCQkJfQoJCSRjdXJyZW50X3ZlcnNpb24gPSAiMS4wLjIiOwoKCWNhc2UgIjEuMC4yIjoKCWNhc2UgIjEuMC4zIjoKLy8gZGVsZXRlIGFsbCB0aHVtYm5haWxzIGFuZCBvbGQgdGh1bWIgZGlyZWN0b3J5CgkJJHRodW1ic2ZvbGRlciA9ICcuLicuRElSRUNUT1JZX1NFUEFSQVRPUi4nbW9kdWxlcycuRElSRUNUT1JZX1NFUEFSQVRPUi4nR2FsbGVyeScuRElSRUNUT1JZX1NFUEFSQVRPUi4ndGh1bWJzJzsKCQlpZiggJGRoID0gQG9wZW5kaXIoJHRodW1ic2ZvbGRlcikgKQoJCXsKCQkJd2hpbGUoIGZhbHNlICE9PSAoJG9iaiA9IHJlYWRkaXIoJGRoKSkgKQoJCQl7CgkJCQlpZiggJG9iaiAhPSAnLicgJiYgJG9iaiAhPSAnLi4nICkKCQkJCXsKCQkJCQlAdW5saW5rKCR0aHVtYnNmb2xkZXIuRElSRUNUT1JZX1NFUEFSQVRPUi4kb2JqKTsKCQkJCX0KCQkJfQoJCQljbG9zZWRpcigkZGgpOwoJCX0KCQlAcm1kaXIoJy4uJy5ESVJFQ1RPUllfU0VQQVJBVE9SLidtb2R1bGVzJy5ESVJFQ1RPUllfU0VQQVJBVE9SLidHYWxsZXJ5Jy5ESVJFQ1RPUllfU0VQQVJBVE9SLid0aHVtYnMnKTsKLy8gY3JlYXRlIG5ldyB0aHVtYnNmb2xkZXIKCQlpZiggIWlzX2RpcignLi4nIC4gRElSRUNUT1JZX1NFUEFSQVRPUiAuIHN0cl9yZXBsYWNlKCcvJywgRElSRUNUT1JZX1NFUEFSQVRPUiwgREVGQVVMVF9HQUxMRVJZVEhVTUJTX1BBVEgpKSApCgkJewoJCQlta2RpcignLi4nIC4gRElSRUNUT1JZX1NFUEFSQVRPUiAuIHN0cl9yZXBsYWNlKCcvJywgRElSRUNUT1JZX1NFUEFSQVRPUiwgREVGQVVMVF9HQUxMRVJZVEhVTUJTX1BBVEgpKTsKCQl9Ci8vIGNyZWF0ZSBuZXcgZGF0YWJhc2UgdGFibGUgZm9yIHRlbXBsYXRlIHByb3BlcnRpZXMKCQkkdGFib3B0YXJyYXkgPSBhcnJheSggJ215c3FsJyA9PiAnVFlQRT1NeUlTQU0nICk7CgkJJGRpY3QgPSBOZXdEYXRhRGljdGlvbmFyeSggJGRiICk7CgkJJGZsZHMgPSAiCgkJCXRlbXBsYXRlaWQgSSBLRVkgQVVUTywKCQkJdGVtcGxhdGUgQygyNTUpLAoJCQl0aHVtYndpZHRoIEksCgkJCXRodW1iaGVpZ2h0IEksCgkJCXJlc2l6ZW1ldGhvZCBDKDEwKSwKCQkJbWF4bnVtYmVyIEksCgkJCXNvcnRpdGVtcyBDKDI1NSkKCQkiOwoJCSRzcWxhcnJheSA9ICRkaWN0LT5DcmVhdGVUYWJsZVNRTCggY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfZ2FsbGVyeV90ZW1wbGF0ZXByb3BzIiwgJGZsZHMsICR0YWJvcHRhcnJheSk7CgkJJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoKLy8gc2F2ZSB0ZW1wbGF0ZXByb3BlcnRpZXMgZm9yIGV2ZXJ5IEdhbGxlcnkgdGVtcGxhdGUKCQkkcXVlcnkgPSAiU0VMRUNUIHRlbXBsYXRlX25hbWUgRlJPTSAiIC4gY21zX2RiX3ByZWZpeCgpIC4gIm1vZHVsZV90ZW1wbGF0ZXMgV0hFUkUgbW9kdWxlX25hbWU9PyI7CgkJJHJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCdHYWxsZXJ5JykpOwoJCWlmICggJHJlc3VsdCAmJiAkcmVzdWx0LT5SZWNvcmRDb3VudCgpID4gMCApCgkJewoJCSAgd2hpbGUgKCAkcm93PSRyZXN1bHQtPkZldGNoUm93KCkgKQoJCSAgewoJCQkJJHF1ZXJ5MiA9ICJJTlNFUlQgSU5UTyAiIC4gY21zX2RiX3ByZWZpeCgpIC4gIm1vZHVsZV9nYWxsZXJ5X3RlbXBsYXRlcHJvcHMgKHRlbXBsYXRlLHNvcnRpdGVtcykgVkFMVUVTICg/LD8pIjsKCQkJCSRyZXN1bHQyID0gJGRiLT5FeGVjdXRlKCRxdWVyeTIsIGFycmF5KCRyb3dbJ3RlbXBsYXRlX25hbWUnXSwnbi1pc2Rpci9zK2ZpbGUnKSk7CgkJCQlpZiAoICRyZXN1bHQyICkKCQkJCXsKCQkJCQkkdHBsaWRbJHJvd1sndGVtcGxhdGVfbmFtZSddXSA9ICRkYi0+SW5zZXJ0X0lEKCk7CgkJCQl9CgkJCQllbHNlCgkJCQl7CgkJCQkJZWNobyAnRVJST1IgJyAuIF9fTElORV9fIC4gJzogJyAuIG15c3FsX2Vycm9yKCk7CgkJCQkJZXhpdCgpOwoJCQkJfQoJCSAgfQoJCX0KCQlpZiAoICEkcmVzdWx0ICkKCQl7CgkJCWVjaG8gJ0VSUk9SICcgLiBfX0xJTkVfXyAuICc6ICcgLiBteXNxbF9lcnJvcigpOwoJCQlleGl0KCk7CgkJfQovLyB1cGRhdGUgZGVmYXVsdCB0ZW1wbGF0ZSBjb250ZW50CgkJJGZuID0gZGlybmFtZShfX0ZJTEVfXykuRElSRUNUT1JZX1NFUEFSQVRPUi4ndGVtcGxhdGVzJy5ESVJFQ1RPUllfU0VQQVJBVE9SLid0ZW1wbGF0ZV9mYW5jeWJveC50cGwnOwoJCWlmKCBmaWxlX2V4aXN0cyggJGZuICkgKQoJCXsKCQkJJHRlbXBsYXRlY29kZSA9IEBmaWxlX2dldF9jb250ZW50cygkZm4pOwoJCQkkdGhpcy0+U2V0UHJlZmVyZW5jZSgnZGVmYXVsdF90ZW1wbGF0ZV9jb250ZW50cycsJHRlbXBsYXRlY29kZSk7CgkJfQovLyBwYXNzIG92ZXIgdGh1bWJzZXR0aW5ncyBmcm9tIGdhbGxlcnlwcm9wcyB0byB0ZW1wbGF0ZXByb3BzCgkJJHRwbCA9IGFycmF5KCk7CgkJJHF1ZXJ5ID0gIlNFTEVDVCBmaWxlaWQsIHRlbXBsYXRlLCB0aHVtYndpZHRoLCB0aHVtYmhlaWdodCwgcmVzaXplbWV0aG9kIEZST00gIiAuIGNtc19kYl9wcmVmaXgoKSAuICJtb2R1bGVfZ2FsbGVyeV9wcm9wcyI7CgkJJHJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkpOwoJCWlmICggJHJlc3VsdCAmJiAkcmVzdWx0LT5SZWNvcmRDb3VudCgpID4gMCApCgkJewoJCQkkZGVmYXVsdHRlbXBsYXRlID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ2N1cnJlbnRfdGVtcGxhdGUnKTsKCQkgIHdoaWxlICggJHJvdz0kcmVzdWx0LT5GZXRjaFJvdygpICkKCQkgIHsKCQkJCSR0cGxbJHJvd1snZmlsZWlkJ11dID0gaXNzZXQoJHRwbGlkWyRyb3dbJ3RlbXBsYXRlJ11dKSA/ICR0cGxpZFskcm93Wyd0ZW1wbGF0ZSddXSA6IDA7CgkJCQkkcm93Wyd0ZW1wbGF0ZSddID0gKCRyb3dbJ3RlbXBsYXRlJ10gPT0gJ3VzZWRlZmF1bHR0ZW1wbGF0ZScpID8gJGRlZmF1bHR0ZW1wbGF0ZSA6ICRyb3dbJ3RlbXBsYXRlJ107CgkJCQkkcXVlcnkyID0gIlVQREFURSAiIC4gY21zX2RiX3ByZWZpeCgpIC4gIm1vZHVsZV9nYWxsZXJ5X3RlbXBsYXRlcHJvcHMgIFNFVCB0aHVtYndpZHRoPT8sIHRodW1iaGVpZ2h0PT8sIHJlc2l6ZW1ldGhvZD0/IFdIRVJFIHRlbXBsYXRlPT8iOwoJCQkJJHJlc3VsdDIgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5MiwgYXJyYXkoJHJvd1sndGh1bWJ3aWR0aCddLCRyb3dbJ3RodW1iaGVpZ2h0J10sJHJvd1sncmVzaXplbWV0aG9kJ10sJHJvd1sndGVtcGxhdGUnXSkpOwoJCQkJaWYgKCAhJHJlc3VsdDIgKQoJCQkJewoJCQkJCWVjaG8gJ0VSUk9SICcgLiBfX0xJTkVfXyAuICc6ICcgLiBteXNxbF9lcnJvcigpOwoJCQkJCWV4aXQoKTsKCQkJCX0KCQkgIH0KCQl9CgkJaWYgKCAhJHJlc3VsdCApCgkJewoJCQllY2hvICdFUlJPUiAnIC4gX19MSU5FX18gLiAnOiAnIC4gbXlzcWxfZXJyb3IoKTsKCQkJZXhpdCgpOwoJCX0KLy8gZHJvcCB0YWJsZSBnYWxsZXJ5cHJvcHMKCQkkc3FsYXJyYXkgPSAkZGljdC0+RHJvcFRhYmxlU1FMKCBjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9nYWxsZXJ5X3Byb3BzIiApOwoJCSRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCQkKLy8gY3JlYXRlIG5ldyB0YWJsZSBnYWxsZXJ5cHJvcHMgYW5kIGZpbGwgaXQgZm9yIGV2ZXJ5IHN1YmdhbGxlcnkKCQkkZmxkcyA9ICIKCQkJZmlsZWlkIEkgS0VZLAoJCQl0ZW1wbGF0ZWlkIEksCgkJCWhpZGVwYXJlbnRsaW5rIEkKCQkiOwoJCSRzcWxhcnJheSA9ICRkaWN0LT5DcmVhdGVUYWJsZVNRTCggY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfZ2FsbGVyeV9wcm9wcyIsICRmbGRzLCAkdGFib3B0YXJyYXkpOwoJCSRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCQkkcXVlcnkgPSAiU0VMRUNUIGZpbGVpZCBGUk9NICIgLiBjbXNfZGJfcHJlZml4KCkgLiAibW9kdWxlX2dhbGxlcnkgV0hFUkUgZmlsZW5hbWUgTElLRSAnJS8nIjsKCQkkcmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSk7CgkJaWYgKCAkcmVzdWx0ICYmICRyZXN1bHQtPlJlY29yZENvdW50KCkgPiAwICkKCQl7CgkJICB3aGlsZSAoICRyb3c9JHJlc3VsdC0+RmV0Y2hSb3coKSApCgkJICB7CgkJCQkkdHBsWyRyb3dbJ2ZpbGVpZCddXSA9IGlzc2V0KCR0cGxbJHJvd1snZmlsZWlkJ11dKSA/ICR0cGxbJHJvd1snZmlsZWlkJ11dIDogMDsKCQkJCSRoaWRlcGFyZW50bGluayA9ICRyb3dbJ2ZpbGVpZCddID09IDEgPyAxIDogMDsKCQkJCSRxdWVyeTIgPSAiSU5TRVJUIElOVE8gIiAuIGNtc19kYl9wcmVmaXgoKSAuICJtb2R1bGVfZ2FsbGVyeV9wcm9wcyAoZmlsZWlkLHRlbXBsYXRlaWQsaGlkZXBhcmVudGxpbmspIFZBTFVFUyAoPyw/LD8pIjsKCQkJCSRyZXN1bHQyID0gJGRiLT5FeGVjdXRlKCRxdWVyeTIsIGFycmF5KCRyb3dbJ2ZpbGVpZCddLCAkdHBsWyRyb3dbJ2ZpbGVpZCddXSwgJGhpZGVwYXJlbnRsaW5rKSk7CgkJCQlpZiAoICEkcmVzdWx0MiApCgkJCQl7CgkJCQkJZWNobyAnRVJST1IgJyAuIF9fTElORV9fIC4gJzogJyAuIG15c3FsX2Vycm9yKCk7CgkJCQkJZXhpdCgpOwoJCQkJfQoJCSAgfQoJCX0KCQlpZiAoICEkcmVzdWx0ICkKCQl7CgkJCWVjaG8gJ0VSUk9SICcgLiBfX0xJTkVfXyAuICc6ICcgLiBteXNxbF9lcnJvcigpOwoJCQlleGl0KCk7CgkJfQoKCQkkY3VycmVudF92ZXJzaW9uID0gIjEuMSI7Cgp9CgovLyBwdXQgbWVudGlvbiBpbnRvIHRoZSBhZG1pbiBsb2cKJHRoaXMtPkF1ZGl0KCAwLCAKCSAgICAgICR0aGlzLT5MYW5nKCdmcmllbmRseW5hbWUnKSwgCgkgICAgICAkdGhpcy0+TGFuZygndXBncmFkZWQnLCAkdGhpcy0+R2V0VmVyc2lvbigpKSk7Cgo/Pg==]]></data>
	</file>
	<file>
	  <filename>/templates/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/admingalleries.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2lmICRpdGVtY291bnQgPiAwfQp7Kgk8ZGl2IGNsYXNzPSJwYWdlb3B0aW9ucyI+CgkJPHAgY2xhc3M9InBhZ2VvcHRpb25zIj57JGFkZGxpbmt9PC9wPgoJPC9kaXY+Kn0KCTx0YWJsZSBpZD0iZ3RyZWUiIGNlbGxzcGFjaW5nPSIwIiBjbGFzcz0icGFnZXRhYmxlIj4KCQk8dGhlYWQ+CgkJCTx0cj4KCQkJCTx0aD57JGdhbGxlcnlwYXRofTwvdGg+CgkJCQk8dGggY2xhc3M9InBhZ2VpY29uIj57JGFjdGl2ZX08L3RoPgkJCQoJCQkJPHRoIGNsYXNzPSJwYWdlaWNvbiI+eyRhY3Rpb25zfTwvdGg+CgkJCTwvdHI+CgkJPC90aGVhZD4KCQk8dGJvZHk+Cgl7Zm9yZWFjaCBmcm9tPSRpdGVtcyBpdGVtPWVudHJ5fQoJCXtjeWNsZSB2YWx1ZXM9InJvdzEscm93MiIgYXNzaWduPXJvd2NsYXNzfQoJCQl7KgoJCQk8dHIgaWQ9Im5vZGUteyRlbnRyeS0+aWR9IiBjbGFzcz0ieyRyb3djbGFzc317JGVudHJ5LT5naWRjbGFzc30iIG9ubW91c2VvdmVyPSJ0aGlzLmNsYXNzTmFtZT0neyRyb3djbGFzc31ob3ZlcnskZW50cnktPmdpZGNsYXNzfSc7IiBvbm1vdXNlb3V0PSJ0aGlzLmNsYXNzTmFtZT0neyRyb3djbGFzc317JGVudHJ5LT5naWRjbGFzc30nOyI+CgkJCSp9CgkJCTx0ciBpZD0ibm9kZS17JGVudHJ5LT5pZH0ie2lmICFlbXB0eSgkZW50cnktPmdpZGNsYXNzKX0gY2xhc3M9InskZW50cnktPmdpZGNsYXNzfHRyaW19InsvaWZ9PgoJCQkJPHRkIGNsYXNzPSJ0ZmlsZSI+eyRlbnRyeS0+ZmlsZX08L3RkPgoJCQkJPHRkIGNsYXNzPSJwYWdlcG9zIiBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXIiPnskZW50cnktPmFjdGl2ZWxpbmt9PC90ZD4JCQkKCQkJCTx0ZCBjbGFzcz0icGFnZXBvcyIgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyIj57JGVudHJ5LT5lZGl0bGlua308L3RkPgoJCQk8L3RyPgoJey9mb3JlYWNofQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgp7ZWxzZX0KCTxoND57JG5vZ2FsbGVyaWVzdGV4dH08L2g0Pgp7L2lmfQp7Kgo8ZGl2IGNsYXNzPSJwYWdlb3B0aW9ucyI+Cgk8cCBjbGFzcz0icGFnZW9wdGlvbnMiPnskYWRkbGlua308L3A+CjwvZGl2Pip9]]></data>
	</file>
	<file>
	  <filename>/templates/adminoptions.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyRzdGFydGZvcm19DQoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JGFsbG93ZWRfZXh0ZW5zaW9uc306PC9wPg0KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X2FsbG93ZWRfZXh0ZW5zaW9uc308L3A+DQoJPC9kaXY+DQoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHVzZV9jb21tZW50X3d5c2l3eWd9OjwvcD4NCgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF91c2VfY29tbWVudF93eXNpd3lnfTwvcD4NCgk8L2Rpdj4NCgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KCQk8cCBjbGFzcz0icGFnZXRleHQiPiZuYnNwOzwvcD4NCgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRzdWJtaXR9PC9wPg0KCTwvZGl2Pg0KeyRlbmRmb3JtfQ0K]]></data>
	</file>
	<file>
	  <filename>/templates/admintemplates.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICA8cCBjbGFzcz0icGFnZW9wdGlvbnMiPnskbmV3dGVtcGxhdGVsaW5rfTwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+Cjx0YWJsZSBjZWxsc3BhY2luZz0iMCIgY2xhc3M9InBhZ2V0YWJsZSI+CiAgPHRoZWFkPgogICAgPHRyPgogICAgICA8dGggd2lkdGg9Ijc1JSI+eyRuYW1lcHJvbXB0fTwvdGg+CiAgICAgIDx0aD57JGRlZmF1bHRwcm9tcHR9PC90aD4KICAgICAgPHRoIGNsYXNzPSJwYWdlaWNvbiI+Jm5ic3A7PC90aD4KICAgICAgPHRoIGNsYXNzPSJwYWdlaWNvbiI+Jm5ic3A7PC90aD4KICAgICAgPHRoIGNsYXNzPSJwYWdlaWNvbiI+Jm5ic3A7PC90aD4KICAgIDwvdHI+CiAgPC90aGVhZD4Ke2ZvcmVhY2ggZnJvbT0kaXRlbXMgaXRlbT1lbnRyeX0KICAgPHRyIGNsYXNzPSJ7JGVudHJ5LT5yb3djbGFzc30iPgogICAgIDx0ZD57JGVudHJ5LT5uYW1lfTwvdGQ+CiAgICAgPHRkPnskZW50cnktPmRlZmF1bHR9PC90ZD4KICAgICA8dGQ+eyRlbnRyeS0+ZWRpdGxpbmt9PC90ZD4KICAgICA8dGQ+eyRlbnRyeS0+Y29weWxpbmt9PC90ZD4KICAgICA8dGQ+eyRlbnRyeS0+ZGVsZXRlbGlua308L3RkPgogICA8L3RyPgp7L2ZvcmVhY2h9CjwvdGFibGU+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxwIGNsYXNzPSJwYWdlb3B0aW9ucyI+eyRuZXd0ZW1wbGF0ZWxpbmt9PC9wPgo8L2Rpdj4K]]></data>
	</file>
	<file>
	  <filename>/templates/css/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/editgallery.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCjxoMz57JHBhZ2V0aXRsZX08L2gzPg0KPC9kaXY+DQp7JGZvcm1zdGFydH17JGhpZGRlbn0NCg0KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCiAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHByb21wdF9nYWxsZXJ5dGl0bGV9OjwvcD4NCiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRnYWxsZXJ5dGl0bGV9PC9wPg0KPC9kaXY+DQoNCjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQogIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfY29tbWVudH06PC9wPg0KICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGdhbGxlcnljb21tZW50fTwvcD4NCjwvZGl2Pg0KDQo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KICA8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0X3RlbXBsYXRlfTo8L3A+DQogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskdGVtcGxhdGV9PC9wPg0KPC9kaXY+DQoNCjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQogIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfaGlkZXBhcmVudGxpbmt9OjwvcD4NCiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRoaWRlcGFyZW50bGlua308L3A+DQo8L2Rpdj4NCg0KeyppZiAhZW1wdHkoJGNyZWF0ZXRodW1icyl9DQo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KICA8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0X2NyZWF0ZXRodW1ic306PC9wPg0KICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGNyZWF0ZXRodW1ic308L3A+DQo8L2Rpdj4NCnsvaWYqfQ0KDQp7aWYgIWVtcHR5KCRzb3J0YnlzZXR0aW5ncyl9DQo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KICA8cCBjbGFzcz0icGFnZXRleHQiPnskc29ydGJ5c2V0dGluZ3N9PC9wPg0KPC9kaXY+DQp7L2lmfQ0KDQo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KICA8cCBjbGFzcz0icGFnZXRleHQiPiZuYnNwOzwvcD4NCiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRzdWJtaXR9eyRjYW5jZWx9PC9wPg0KPC9kaXY+DQoNCgk8dGFibGUgaWQ9Imd0YWJsZSIgY2VsbHNwYWNpbmc9IjAiIGNsYXNzPSJwYWdldGFibGUiPg0KCQk8dGhlYWQ+DQoJCTx0cj4NCgkJCTx0aCBjbGFzcz0icGFnZWljb24iPiZuYnNwOzwvdGg+DQoJCQk8dGg+eyRpdGVtfTwvdGg+DQoJCQk8dGg+eyR0aXRsZX08L3RoPg0KCQkJPHRoPnskY29tbWVudH08L3RoPg0KCQkJPHRoPnskZmlsZWRhdGV9PC90aD4NCgkJCTx0aCBjbGFzcz0icGFnZWljb24iPnskYWN0aXZlfTwvdGg+DQoJCQk8dGggY2xhc3M9InBhZ2VpY29uIj57JGRlZmF1bHR9PC90aD4NCgkJPC90cj4NCgkJPC90aGVhZD4NCgkJPHRib2R5Pg0KCXtmb3JlYWNoIGZyb209JGl0ZW1zIGl0ZW09ZW50cnl9DQoJCXtjeWNsZSB2YWx1ZXM9InJvdzEscm93MiIgYXNzaWduPXJvd2NsYXNzfQ0KCQk8dHIgaWQ9InskZW50cnktPmZpbGVpZH0iIGNsYXNzPSJ7JHJvd2NsYXNzfSI+DQoJCQk8dGQ+Jm5ic3A7PC90ZD4NCgkJCTx0ZD48ZGl2IHN0eWxlPSJ3aWR0aDo5NnB4OyBoZWlnaHQ6NzJweDsgYmFja2dyb3VuZDogdXJsKHskZW50cnktPnRodW1idXJsfSkgbm8tcmVwZWF0IGNlbnRlcjsgb3ZlcmZsb3c6aGlkZGVuOyBjdXJzb3I6ZGVmYXVsdDsiPiZuYnNwOzwvZGl2PjwvdGQ+DQoJCQk8dGQ+eyRlbnRyeS0+ZmlsZW5hbWV9PGJyIC8+eyRlbnRyeS0+dGl0bGV9PC90ZD4NCgkJCTx0ZD57JGVudHJ5LT5jb21tZW50fTwvdGQ+DQoJCQk8dGQ+eyRlbnRyeS0+ZmlsZWRhdGV9PC90ZD4NCgkJCTx0ZCBjbGFzcz0icGFnZXBvcyIgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyIj57JGVudHJ5LT5hY3RpdmVsaW5rfTwvdGQ+DQoJCQk8dGQgY2xhc3M9InBhZ2Vwb3MiIHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlciI+eyRlbnRyeS0+ZGVmYXVsdGxpbmt9PC90ZD4NCgkJPC90cj4NCgl7L2ZvcmVhY2h9DQoJCTwvdGJvZHk+DQoJPC90YWJsZT4NCg0Ke2lmICRpdGVtY291bnQgPiAwfQ0KCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQoJICA8cCBjbGFzcz0icGFnZXRleHQiPiZuYnNwOzwvcD4NCgkgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskc3VibWl0fXskY2FuY2VsfTwvcD4NCgk8L2Rpdj4NCntlbHNlfQ0KCTxoND57JG5vZmlsZXN0ZXh0fTwvaDQ+DQp7L2lmfQ0KDQp7JGZvcm1lbmR9DQo=]]></data>
	</file>
	<file>
	  <filename>/templates/edittemplate.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KPGgzPnskdGl0bGV9PC9oMz4KPC9kaXY+CnskZm9ybXN0YXJ0fXskaGlkZGVufQo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfdGVtcGxhdGVuYW1lfTo8L3A+CiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyR0ZW1wbGF0ZW5hbWV9PC9wPgo8L2Rpdj4KCjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHByb21wdF90aHVtYm5haWxzaXplfTo8L3A+CiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyR0aHVtYm5haWxzaXplfTwvcD4KPC9kaXY+Cgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfbWF4bnVtYmVyfTo8L3A+CiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRtYXhudW1iZXJ9ICh7JHNob3dhbGxpbWFnZXN9KTwvcD4KPC9kaXY+Cgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfc29ydGluZ29wdGlvbnN9OjwvcD4KICA8ZmllbGRzZXQgY2xhc3M9InBhZ2VpbnB1dCIgc3R5bGU9IndpZHRoOjQwMHB4OyBwYWRkaW5nOjZweDsiPnskc29ydGluZ29wdGlvbnN9PC9maWVsZHNldD4KPC9kaXY+Cgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxwIGNsYXNzPSJwYWdldGV4dCI+Jm5ic3A7PC9wPgogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskc3VibWl0fXskY2FuY2VsfXskYXBwbHl9eyRyZXNldH08L3A+CjwvZGl2PgoKPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICA8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0X3RlbXBsYXRlfTo8L3A+CiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyR0ZW1wbGF0ZX08L3A+CjwvZGl2PgoKPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICA8cCBjbGFzcz0icGFnZXRleHQiPnskYXZhaWxhYmxldmFyaWFibGVzfTogPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlY29sbGFwc2UoJ3ZhcmlhYmxlc2luZm8nKTsgcmV0dXJuIGZhbHNlOyI+eyRhdmFpbGFibGV2YXJpYWJsZXNsaW5rfTwvYT48L3A+CjwvZGl2Pgo8ZGl2IGlkPSJ2YXJpYWJsZXNpbmZvIiBzdHlsZT0iZGlzcGxheTogbm9uZTsiPgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskYXZhaWxhYmxldmFyaWFibGVzbGlzdH08L3A+CjwvZGl2Pgo8L2Rpdj4KCjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHByb21wdF90ZW1wbGF0ZWNzc306PC9wPgogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskdGVtcGxhdGVjc3N9PC9wPgo8L2Rpdj4KCjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHByb21wdF90ZW1wbGF0ZWpzfTo8L3A+CiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyR0ZW1wbGF0ZWpzfTwvcD4KPC9kaXY+Cgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxwIGNsYXNzPSJwYWdldGV4dCI+Jm5ic3A7PC9wPgogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskc3VibWl0fXskY2FuY2VsfXskYXBwbHl9eyRyZXNldH08L3A+CjwvZGl2Pgp7JGZvcm1lbmR9Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/fancybox/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/fancybox/fancy_closebox.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAANjr9RwUqgAAACBjSFJNAABtmAAAc44AAPJxAACDbAAAg7sAANTIAAAx7AAAGbyeiMU/AAAG7ElEQVR42mJkwA8YoZjBwcGB6fPnz4w/fvxg/PnzJ2N6ejoLFxcX47Rp036B5Dk4OP7z8vL+P3DgwD+o3v9QjBUABBALHguZoJhZXV2dVUNDgxNIcwEtZnn27Nl/ZmZmQRYWFmag5c90dHQY5OXl/z98+PDn1atXv79+/foPUN9fIP4HxRgOAAggRhyWMoOwqKgoq6GhIZe3t7eYrq6uHBDb8/Pz27Gysloga/jz588FYGicPn/+/OapU6deOnXq1GdgqPwCOuA31AF/0S0HCCB0xAQNBU4FBQWB0NBQublz59oADV37Hw28ePHi74MHD/6ii3/8+HEFMGQUgQ6WEhQU5AeZBTWTCdkigABC9ylIAZeMjIxQTEyMysaNG/3+/v37AGTgr1+//s2cOfOXm5vbN6Caz8jY1NT0a29v76/v37//g6q9sHfv3khjY2M5YAgJgsyEmg0PYYAAQreUk4+PT8jd3V1l1apVgUAzfoIM2rlz5x9gHH5BtxAdA9PB1zNnzvyB+R6oLxoopgC1nBPZcoAAgiFQnLIDMb+enp5iV1eXBzDeHoI0z58//xcwIX0mZCkMg9S2trb+hFk+ffr0QCkpKVmQ2VA7QHYxAgQQzLesQMwjIiIilZWVZfPu3bstMJ+SYikyBmUzkBnA9HEMyNcCYgmQHVC7mAACCJagOEBBbGdnp7lgwYJEkIavX7/+BcY1SvAaGRl9tba2xohjMTGxL8nJyT+AWQsuxsbG9vnp06e/QWYdPHiwHmiWKlBcCGQXyNcAAQSzmBuoSQqYim3u37+/EKR48uTJv5ANB+bVr7Dga2xs/AkTV1JS+gq0AJyoQIkPWU9aWtoPkPibN2/2A/l6QCwJ9TULQADB4hcY//xKXl5eHt++fbsAUmxhYYHiM1DiAsr9R7ZcVVUVbikIdHd3/0TWIyws/AWYVsByAgICdkAxRSAWAGI2gACClV7C4uLiOv7+/lEgRZ8+ffqLLd6ABck3ZMuB6uCWrlu37je29HDx4kVwQisvL88FFqkaQDERUHADBBAomBl5eHiYgQmLE1hSgQQZgIUD1lJm69atf4HR8R1YKoH5QIPAWWP9+vV/gOI/gHkeQw+wGAXTwAJJ5t+/f/BUDRBA4NIEKMDMyMjICtQIiniG379/4yza7t69+//Lly8oDrty5co/bJaCAEwcZCkwwTJDLWYCCCCwxcDgY3z16hXDnTt3voP4EhISWA0BFgZMwNqHExh3jMiG1tbWsgHjnA2bHmAeBtdWwOL1MycnJ7wAAQggBmi+kgIW/OaKiorJwOLuFShO0LMSMPF9AUYBSpz6+vqixHlOTs4P9MIEWHaDsxSwYMoE2mEGFJcG5SKAAGJCqjv/AbPUn8ePH98ACQQHB6NUmZqamkzABIgSp5s3bwbHORCA1QDLAWZkPc7OzszA8oHl5cuXVy5duvQBGIXwWgoggGA+FgO6xkBNTS28r69vDrT2+Y1cIMDyJchX6KkXVEmAshd6KB06dAic94EO3AzkBwGxPhCLg8ptgACCZyeQp9jZ2b2AmsuAefM8tnxJCk5ISPgOLTKfAdNEOVDMA2QHLDsBBBC8AAFlbmCLwlZISCg5JSVlJizeQAaQaimoWAUFK0g/sGGwHiiWCMS2yAUIQAAxI7c4gEmeFZi4OJ48ecLMzc39CRiEmgEBASxA/QzA8vYvAxEgNjaWZc2aNezAsprp2LFjp4FpZRdQ+AkQvwLij0AMSoC/AQIIXklAC3AVUBoBxmE8sPXQAiyvN8J8fuPGjR/h4eHf0eMdhkENhOPHj8OT+NGjR88BxZuBOA5kJtRseCUBEECMSI0AdmgBDooDaaDl8sASTSkyMlKzpqZGU1paGlS7MABLrX83b978A6zwwakTmE0YgIkSnHpBfGCV+gxYh98qKSk5CeTeAxVeQPwUiN8AMSjxgdLNX4AAYkRqCLBAXcMHtVwSaLkMMMHJAvOq9IQJE9R8fHxElJWV1bEF8aNHj+7t27fvLTDlXwXGLyhoH0OD+DnU0k/QYAa1QP8BBBAjWsuSFWo5LzRYxKFYAljqiAHzqxCwIBEwMTERBdZeoOYMA7Bl+RFYEbwB5oS3IA9D4/IFEL+E4nfQ6IDFLTgvAwQQI5ZmLRtSsINSuyA0uwlBUyQPMPWD20/AKo8ByP4DTJTfgRgUjB+gFoEc8R6amGDB+wu5mQsQQIxYmrdMUJ+zQTM6NzQEeKGO4UJqOzFADQMZ/A1qCSzBfQXi71ALfyM17sEAIIAY8fQiWKAYFgIwzIbWTv4HjbdfUAf8RPLhH1icojfoAQKIEU8bG9kRyF0aRiz6YP0k5C4LsmUY9TtAADEyEA+IVfufGEUAAQYABejinPr4dLEAAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/templates/fancybox/fancy_left.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/templates/fancybox/fancy_progress.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/templates/fancybox/fancy_right.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/templates/fancybox/fancy_shadow_e.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAA0AAAAECAYAAABV5LW0AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADRJREFUeNpiZGBg8ADi90D8A4h/QulfUPwbiP9A8V8g/gfE/5kYyABMUN0ka/pPqiaAAAMAKHoOBm9+vqAAAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/templates/fancybox/fancy_shadow_n.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAAEAAAASCAYAAACaV7S8AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACNJREFUeNpiYGBgYGQCEgxMMBYTnMWMhWCBE6y4CIgSgAADAA2lAF3Y3q+mAAAAAElFTkSuQmCC]]></data>
	</file>
	<file>
	  <filename>/templates/fancybox/fancy_shadow_ne.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAA0AAAASCAYAAACAa1QyAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJdJREFUeNqUkgsOwCAIQxHZ7n/hybaEma7iPiTEX59FoohIifwcb4DPIH0T8b6S28z5tlePtOQgg/vaws2T0jyEQ8mn05rc/Di3ABvcyK6D0wWVAAVGJwdniKNRWc5OFoJtAg9NMWi50LsKCLG88gQxeCtvISFn2giDlnvMG7hovLeDCqBS8p/so0Lb6wQaPrD+Bc7YBRgAARQsgvBDz24AAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/templates/fancybox/fancy_shadow_nw.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAA0AAAASCAYAAACAa1QyAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAHFJREFUeNqUkAsKwDAIQ5fM3f/KGwPLZq2phRRqfX6Co3cwriph9wMqF80iSANFsr9hYhQE6BVWI8Tqj+ixqlOUQzRhxBcY4kYXBp1W7DIluyhMQAKZGm8CMihanEEXE4BJNwd+42HTDOvsJI2Q4C3AAFSdAQWkpOppAAAAAElFTkSuQmCC]]></data>
	</file>
	<file>
	  <filename>/templates/fancybox/fancy_shadow_s.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAAEAAAASCAYAAACaV7S8AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACpJREFUeNpiYGBgsGICEn/gxG9cBELJXwTBDCQYQaz/IBYDmABxGQACDAChSQ0uFhaMIQAAAABJRU5ErkJggg==]]></data>
	</file>
	<file>
	  <filename>/templates/fancybox/fancy_shadow_se.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAA0AAAASCAYAAACAa1QyAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJFJREFUeNqMkoEOgCAIRNH8ov7/x0rDtOGGKBDbzWU9OG4FADibLtLdlJmepkInNtWuSBfjEvlL0lKRdfoNDqgIAAUwnXzS4p2EAvyg7FgEaZHbk5C7kwdwsCaxy58wICpAtewlkRgqH07PB6kKCKw/Ihl2tiGMSdHovp3UoaB11PbikNp5F4RVahDelKVeAQYAyGx/ZWSEUn8AAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/templates/fancybox/fancy_shadow_sw.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAA0AAAASCAYAAACAa1QyAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAH9JREFUeNqUkQsSgCAIREH63P/AZdpkgwSrOfMGP7uAykTEilSQwvLEVbEV9koVeSMrTsVREVMpIunYTKRiCkytq85EJoHl3fcqMZjfQ36IOxMSsfe0EmUDXzE0TVUi58WGlbzs2a4lEMO7CRCG7c0IPx2MRO4+6p1/HyD9JcAAS+YNmHZIdksAAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/templates/fancybox/fancy_shadow_w.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAA0AAAAECAYAAABV5LW0AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAC5JREFUeNpiZGBgYIRiJiBmBmIWKGYFYjYo5gBidigtCFJIMiBH0z9yNP0HCDAAa8cCTZSUYeoAAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/templates/fancybox/fancy_title_left.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAA8AAAAgCAQAAABnJeoiAAAABGdBTUEAANbY1E9YMgAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAG+SURBVCjPjZNNKMNxGMe/9mZMZhtTwrwcRhLlrbxkTl4PHNwosh2cxGk1Ukpxwc1xJ+UkSqFcdtDiaDmMWCtWxLSpyUsez9//72X7/1d+v9v/83ue//N8n+8DyE8GXxXU0EArRyr+rIMeBuQiLxWpGWXDuGwPuWPbz4FkqEUWx1jvN0g6yTAb5v3+uJ/onfaenJHW8F9ogMXvFGIuXzrCCH7dryPC/COXANejhnMJBsVYDf/TPNfyFiOav/tBElYhE0YU3+4T7cSTYFCMNcDqdhC9ftgu5VjHsbajJaKt1NigkFqPAtjDh0TOiByrOXUR6uLXRLUhOdawTqVofk0QmS6UcB4q0JYOa2FCJToeI8rJJXzmVy5NSr7pVW5MKq13UpCl+ipNYxg4OVYSVZIFXe0zCa5+9k5RVDRhaMErGGHlIfM8dSSFqIIDo74TuR3EgZagHj2YcHlPb4Qcu/ExyUyiHSwoRyP6MAHPQSDZiqKZCrj/BnRjBNM1a6s+X+gi+m1Fwd85/KCMW+zEIMYxBQ8Wf40sPGCvopiLbOQyBzCMUfkaGGFlFe2cpRntSvvFS4R8VtLGo/r/Cios8Cda4RLIg7+tuQAAAABJRU5ErkJggg==]]></data>
	</file>
	<file>
	  <filename>/templates/fancybox/fancy_title_main.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAAEAAAAgCAQAAAB57NqRAAAABGdBTUEAANbY1E9YMgAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAnSURBVAjXY2BgZ2AQZfj/H4QYbpKPoCZMZWDIYmBwZ2DQBhnLwA4AVwIallZZU/IAAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/templates/fancybox/fancy_title_right.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAA8AAAAgCAQAAABnJeoiAAAABGdBTUEAANbY1E9YMgAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHBSURBVCjPfVNLKIRRGD1mxmOMvIcSxmOBJMqrPDJWngsWdhQZCyuxUkgpxQY7y1kpK1EKZTMLTSzJYohpiinyyKiRR65zzT/6Z/5/3G95zvfde849HxAPE4wwII6lc9KRCguSkECaQUN5O3vZ9k4vlyENyaQYoyhCOQ8byOEcMy9TE5p8Dv/e6xcJAfd+DzI5I4LgkdXqu3qXM9wOZPElKoInVJaL9SdJOBpDtkJQw7Lm74X4fJlr5BVm6oiLguHZCQhxt4986kgM9UfAtquPbyGm7VRhCfV7ImuL/UdLsLE/QQd2+IXwHaIMVjpp0MBVXjpwg2rkcbxRA2dcCvERRAMK6aEpFtyMEn6WSXf4sx+tKEUGzdF72rk7JiyFbTpjDK+4lrZ0jcd4mjT15Bi9usJm+SXBYMsU2jW2JF6sPMpQLDjRj/ooU8NxcJ1gCHaUI1f5kibfsH83IPtOb8ecGEUnalDw96HhKB6cYYZgN+pQzECF43D55PKuuirXMIlBdKCWeq3qMC2yawIj6EMb5RQRTPnNuxLFIQxQp51DyxkimVMVCLTQoWrqLGSA0jRrQOttdChbWSLNnv2/gv8v8A9rRBLIyszVnQAAAABJRU5ErkJggg==]]></data>
	</file>
	<file>
	  <filename>/templates/fancybox/jquery.fancybox-1.2.1.pack.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoKICogRmFuY3lCb3ggLSBzaW1wbGUgYW5kIGZhbmN5IGpRdWVyeSBwbHVnaW4KICogRXhhbXBsZXMgYW5kIGRvY3VtZW50YXRpb24gYXQ6IGh0dHA6Ly9mYW5jeS5rbGFkZS5sdi8KICogVmVyc2lvbjogMS4yLjEgKDEzLzAzLzIwMDkpCiAqIENvcHlyaWdodCAoYykgMjAwOSBKYW5pcyBTa2FybmVsaXMKICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlOiBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01JVF9MaWNlbnNlCiAqIFJlcXVpcmVzOiBqUXVlcnkgdjEuMysKKi8KZXZhbChmdW5jdGlvbihwLGEsYyxrLGUsZCl7ZT1mdW5jdGlvbihjKXtyZXR1cm4oYzxhPycnOmUocGFyc2VJbnQoYy9hKSkpKygoYz1jJWEpPjM1P1N0cmluZy5mcm9tQ2hhckNvZGUoYysyOSk6Yy50b1N0cmluZygzNikpfTtpZighJycucmVwbGFjZSgvXi8sU3RyaW5nKSl7d2hpbGUoYy0tKXtkW2UoYyldPWtbY118fGUoYyl9az1bZnVuY3Rpb24oZSl7cmV0dXJuIGRbZV19XTtlPWZ1bmN0aW9uKCl7cmV0dXJuJ1xcdysnfTtjPTF9O3doaWxlKGMtLSl7aWYoa1tjXSl7cD1wLnJlcGxhY2UobmV3IFJlZ0V4cCgnXFxiJytlKGMpKydcXGInLCdnJyksa1tjXSl9fXJldHVybiBwfSgnOyg3KCQpeyQuYi4yUT03KCl7dSBCLjJ0KDcoKXs5IDFKPSQoQikubihcJzJaXCcpOzUoMUouMWMoL14zd1xcKFsiXCddPyguKlxcLjJwKVsiXCddP1xcKSQvaSkpezFKPTN0LiQxOyQoQikubih7XCcyWlwnOlwnNDVcJyxcJzJvXCc6IjNXOjNSLjRtLjRkKDNoPUYsIDNUPSIrKCQoQikubihcJzQxXCcpPT1cJzJKLTNaXCc/XCc0Y1wnOlwnM05cJykrIiwgUT1cJyIrMUorIlwnKSJ9KS4ydCg3KCl7OSAxYj0kKEIpLm4oXCcxYlwnKTs1KDFiIT1cJzJlXCcmJjFiIT1cJzJuXCcpJChCKS5uKFwnMWJcJyxcJzJuXCcpfSl9fSl9OzkgQSw0LDE2PUQscz0xdCAxbywxdywxdj0xLDF5PS9cXC4oM0F8M1l8MnB8M2N8M2QpKC4qKT8kL2k7OSBQPSgkLjJxLjNLJiYyZigkLjJxLjN6LjJrKDAsMSkpPDgpOyQuYi5jPTcoWSl7WT0kLjN4KHt9LCQuYi5jLjJSLFkpOzkgMnM9Qjs3IDJoKCl7QT1COzQ9WTsycigpO3UgRH07NyAycigpezUoMTYpdTs1KCQuMU8oNC4yYykpezQuMmMoKX00Lmo9W107NC5oPTA7NShZLmouTj4wKXs0Lmo9WS5qfXR7OSBPPXt9OzUoIUEuMUh8fEEuMUg9PVwnXCcpezkgTz17ZDpBLmQsWDpBLlh9OzUoJChBKS4xRygiMW06MUQiKS5OKXtPLjFhPSQoQSkuMUcoIjFtOjFEIil9NC5qLjJqKE8pfXR7OSBaPSQoMnMpLjJvKCJhWzFIPSIrQS4xSCsiXSIpOzkgTz17fTszQyg5IGk9MDtpPFouTjtpKyspe089e2Q6WltpXS5kLFg6WltpXS5YfTs1KCQoWltpXSkuMUcoIjFtOjFEIikuTil7Ty4xYT0kKFpbaV0pLjFHKCIxbToxRCIpfTQuai4yaihPKX0zRig0LmpbNC5oXS5kIT1BLmQpezQuaCsrfX19NSg0LjIzKXs1KFApeyQoXCcxVSwgMVEsIDFQXCcpLm4oXCcxU1wnLFwnM3NcJyl9JCgiIzFpIikubihcJzI1XCcsNC4yVSkuSigpfTFkKCl9OzcgMWQoKXskKCIjMWYsICMxZSwgI1YsICNHIikuUygpOzkgZD00LmpbNC5oXS5kOzUoZC4xYygvIy8pKXs5IFU9MTEuM3IuZC4zZihcJyNcJylbMF07VT1kLjNnKFUsXCdcJyk7VT1VLjJrKFUuMmwoXCcjXCcpKTsxayhcJzw2IGw9IjNlIj5cJyskKFUpLm8oKStcJzwvNj5cJyw0LjFJLDQuMXgpfXQgNShkLjFjKDF5KSl7cz0xdCAxbztzLlE9ZDs1KHMuM2EpezFLKCl9dHskLmIuYy4zNCgpOyQocykueCgpLjE0KFwnM2JcJyw3KCl7JCgiLkkiKS5TKCk7MUsoKX0pfX10IDUoZC4xYygiMTciKXx8QS4zai4ybCgiMTciKT49MCl7MWsoXCc8MTcgbD0iMzUiIDNxPSIkLmIuYy4zOCgpIiAzbz0iM25cJytDLlQoQy4zbCgpKjNtKStcJyIgMks9IjAiIDNFPSIwIiBRPSJcJytkK1wnIj48LzE3PlwnLDQuMUksNC4xeCl9dHskLjRwKGQsNygybSl7MWsoXCc8NiBsPSIzTCI+XCcrMm0rXCc8LzY+XCcsNC4xSSw0LjF4KX0pfX07NyAxSygpezUoNC4zMCl7OSB3PSQuYi5jLjFuKCk7OSByPUMuMU0oQy4xTSh3WzBdLTM2LHMuZykvcy5nLEMuMU0od1sxXS00YixzLmYpL3MuZik7OSBnPUMuVChyKnMuZyk7OSBmPUMuVChyKnMuZil9dHs5IGc9cy5nOzkgZj1zLmZ9MWsoXCc8MW0gNDg9IiIgbD0iNDkiIFE9IlwnK3MuUStcJyIgLz5cJyxnLGYpfTs3IDJGKCl7NSgoNC5qLk4tMSk+NC5oKXs5IGQ9NC5qWzQuaCsxXS5kOzUoZC4xYygxeSkpezFBPTF0IDFvKCk7MUEuUT1kfX01KDQuaD4wKXs5IGQ9NC5qWzQuaC0xXS5kOzUoZC4xYygxeSkpezFBPTF0IDFvKCk7MUEuUT1kfX19OzcgMWsoMWosZyxmKXsxNj1GOzkgTD00LjJZOzUoUCl7JCgiI3EiKVswXS4xRS4ydSgiZiIpOyQoIiNxIilbMF0uMUUuMnUoImciKX01KEw+MCl7Zys9TCoyO2YrPUwqMjskKCIjcSIpLm4oe1wndlwnOkwrXCd6XCcsXCcyRVwnOkwrXCd6XCcsXCcyaVwnOkwrXCd6XCcsXCd5XCc6TCtcJ3pcJyxcJ2dcJzpcJzJCXCcsXCdmXCc6XCcyQlwnfSk7NShQKXskKCIjcSIpWzBdLjFFLjJDKFwnZlwnLFwnKEIuMkQuNGogLSAyMClcJyk7JCgiI3EiKVswXS4xRS4yQyhcJ2dcJyxcJyhCLjJELjNTIC0gMjApXCcpfX10eyQoIiNxIikubih7XCd2XCc6MCxcJzJFXCc6MCxcJzJpXCc6MCxcJ3lcJzowLFwnZ1wnOlwnMnolXCcsXCdmXCc6XCcyeiVcJ30pfTUoJCgiI2siKS4xdSgiOjE5IikmJmc9PSQoIiNrIikuZygpJiZmPT0kKCIjayIpLmYoKSl7JCgiI3EiKS4xWigiMk4iLDcoKXskKCIjcSIpLjFDKCkuMUYoJCgxaikpLjIxKCIxcyIsNygpezFnKCl9KX0pO3V9OSB3PSQuYi5jLjFuKCk7OSAydj0oZyszNik+d1swXT93WzJdOih3WzJdK0MuVCgod1swXS1nLTM2KS8yKSk7OSAydz0oZisxeik+d1sxXT93WzNdOih3WzNdK0MuVCgod1sxXS1mLTF6KS8yKSk7OSBLPXtcJ3lcJzoydixcJ3ZcJzoydyxcJ2dcJzpnK1wnelwnLFwnZlwnOmYrXCd6XCd9OzUoJCgiI2siKS4xdSgiOjE5IikpeyQoIiNxIikuMVooIjFzIiw3KCl7JCgiI3EiKS4xQygpOyQoIiNrIikuMjQoSyw0LjJYLDQuMlQsNygpeyQoIiNxIikuMUYoJCgxaikpLjIxKCIxcyIsNygpezFnKCl9KX0pfSl9dHs1KDQuMVc+MCYmNC5qWzQuaF0uMWEhPT0xTCl7JCgiI3EiKS4xQygpLjFGKCQoMWopKTs5IE09NC5qWzQuaF0uMWE7OSAxNT0kLmIuYy4xUihNKTskKCIjayIpLm4oe1wneVwnOigxNS55LTE4KStcJ3pcJyxcJ3ZcJzooMTUudi0xOCkrXCd6XCcsXCdnXCc6JChNKS5nKCksXCdmXCc6JChNKS5mKCl9KTs1KDQuMVgpe0suMjU9XCdKXCd9JCgiI2siKS4yNChLLDQuMVcsNC4yVyw3KCl7MWcoKX0pfXR7JCgiI3EiKS5TKCkuMUMoKS4xRigkKDFqKSkuSigpOyQoIiNrIikubihLKS4yMSgiMXMiLDcoKXsxZygpfSl9fX07NyAyeSgpezUoNC5oIT0wKXskKCIjMWUsICMyTyIpLngoKS4xNCgiUiIsNyhlKXtlLjJ4KCk7NC5oLS07MWQoKTt1IER9KTskKCIjMWUiKS5KKCl9NSg0LmghPSg0LmouTi0xKSl7JCgiIzFmLCAjMk0iKS54KCkuMTQoIlIiLDcoZSl7ZS4yeCgpOzQuaCsrOzFkKCk7dSBEfSk7JCgiIzFmIikuSigpfX07NyAxZygpezJ5KCk7MkYoKTskKFcpLjFCKDcoZSl7NShlLjI5PT0yNyl7JC5iLmMuMWwoKTskKFcpLngoIjFCIil9dCA1KGUuMjk9PTM3JiY0LmghPTApezQuaC0tOzFkKCk7JChXKS54KCIxQiIpfXQgNShlLjI5PT0zOSYmNC5oIT0oNC5qLk4tMSkpezQuaCsrOzFkKCk7JChXKS54KCIxQiIpfX0pOzUoNC4xcil7JCgxMSkuMTQoIjFOIDFUIiwkLmIuYy4yZyl9dHskKCI2I2siKS5uKCIxYiIsIjJlIil9NSg0LjJiKXskKCIjMjIiKS5SKCQuYi5jLjFsKX0kKCIjMWksICNWIikuMTQoIlIiLCQuYi5jLjFsKTskKCIjViIpLkooKTs1KDQuals0LmhdLlghPT0xTCYmNC5qWzQuaF0uWC5OPjApeyQoXCcjRyA2XCcpLm8oNC5qWzQuaF0uWCk7JChcJyNHXCcpLkooKX01KDQuMjMmJlApeyQoXCcxVSwgMVEsIDFQXCcsJChcJyNxXCcpKS5uKFwnMVNcJyxcJzE5XCcpfTUoJC4xTyg0LjJhKSl7NC4yYSgpfTE2PUR9O3UgQi54KFwnUlwnKS5SKDJoKX07JC5iLmMuMmc9NygpezkgbT0kLmIuYy4xbigpOyQoIiNrIikubihcJ3lcJywoKCQoIiNrIikuZygpKzM2KT5tWzBdP21bMl06bVsyXStDLlQoKG1bMF0tJCgiI2siKS5nKCktMzYpLzIpKSk7JCgiI2siKS5uKFwndlwnLCgoJCgiI2siKS5mKCkrMXopPm1bMV0/bVszXTptWzNdK0MuVCgobVsxXS0kKCIjayIpLmYoKS0xeikvMikpKX07JC5iLmMuMWg9NyhILDJBKXt1IDJmKCQuM0koSC4zdT9IWzBdOkgsMkEsRikpfHwwfTskLmIuYy4xUj03KEgpezkgbT1ILjRnKCk7bS52Kz0kLmIuYy4xaChILFwnM2tcJyk7bS52Kz0kLmIuYy4xaChILFwnM0pcJyk7bS55Kz0kLmIuYy4xaChILFwnM0hcJyk7bS55Kz0kLmIuYy4xaChILFwnM0RcJyk7dSBtfTskLmIuYy4zOD03KCl7JCgiLkkiKS5TKCk7JCgiIzM1IikuSigpfTskLmIuYy4xbj03KCl7dVskKDExKS5nKCksJCgxMSkuZigpLCQoVykuM2koKSwkKFcpLjNwKCldfTskLmIuYy4yRz03KCl7NSghJCgiI0kiKS4xdShcJzoxOVwnKSl7MzMoMXcpO3V9JCgiI0kgPiA2IikubihcJ3ZcJywoMXYqLTQwKStcJ3pcJyk7MXY9KDF2KzEpJTEyfTskLmIuYy4zND03KCl7MzMoMXcpOzkgbT0kLmIuYy4xbigpOyQoIiNJIikubih7XCd5XCc6KChtWzBdLTQwKS8yK21bMl0pLFwndlwnOigobVsxXS00MCkvMittWzNdKX0pLkooKTskKCIjSSIpLjE0KFwnUlwnLCQuYi5jLjFsKTsxdz0zUSgkLmIuYy4yRywzWCl9OyQuYi5jLjFsPTcoKXsxNj1GOyQocykueCgpOyQoIiMxaSwgI1YiKS54KCk7NSg0LjJiKXskKCIjMjIiKS54KCl9JCgiI1YsIC5JLCAjMWUsICMxZiwgI0ciKS5TKCk7NSg0LjFyKXskKDExKS54KCIxTiAxVCIpfTFxPTcoKXskKCIjMWksICNrIikuUygpOzUoNC4xcil7JCgxMSkueCgiMU4gMVQiKX01KFApeyQoXCcxVSwgMVEsIDFQXCcpLm4oXCcxU1wnLFwnMTlcJyl9NSgkLjFPKDQuMVYpKXs0LjFWKCl9MTY9RH07NSgkKCIjayIpLjF1KCI6MTkiKSE9PUQpezUoNC4yNj4wJiY0LmpbNC5oXS4xYSE9PTFMKXs5IE09NC5qWzQuaF0uMWE7OSAxNT0kLmIuYy4xUihNKTs5IEs9e1wneVwnOigxNS55LTE4KStcJ3pcJyxcJ3ZcJzooMTUudi0xOCkrXCd6XCcsXCdnXCc6JChNKS5nKCksXCdmXCc6JChNKS5mKCl9OzUoNC4xWCl7Sy4yNT1cJ1NcJ30kKCIjayIpLjMxKEQsRikuMjQoSyw0LjI2LDQuMlMsMXEpfXR7JCgiI2siKS4zMShELEYpLjFaKCIyTiIsMXEpfX10ezFxKCl9dSBEfTskLmIuYy4yVj03KCl7OSBvPVwnXCc7bys9XCc8NiBsPSIxaSI+PC82PlwnO28rPVwnPDYgbD0iMjIiPlwnO28rPVwnPDYgcD0iSSIgbD0iSSI+PDY+PC82PjwvNj5cJztvKz1cJzw2IGw9ImsiPlwnO28rPVwnPDYgbD0iMkkiPlwnO28rPVwnPDYgbD0iViI+PC82PlwnO28rPVwnPDYgbD0iRSI+PDYgcD0iRSA0NCI+PC82Pjw2IHA9IkUgNDMiPjwvNj48NiBwPSJFIDQyIj48LzY+PDYgcD0iRSAzViI+PC82Pjw2IHA9IkUgM1UiPjwvNj48NiBwPSJFIDNPIj48LzY+PDYgcD0iRSAzTSI+PC82Pjw2IHA9IkUgM1AiPjwvNj48LzY+XCc7bys9XCc8YSBkPSIyUDo7IiBsPSIxZSI+PDFwIHA9IjFZIiBsPSIyTyI+PC8xcD48L2E+PGEgZD0iMlA6OyIgbD0iMWYiPjwxcCBwPSIxWSIgbD0iMk0iPjwvMXA+PC9hPlwnO28rPVwnPDYgbD0icSI+PC82PlwnO28rPVwnPDYgbD0iRyI+PC82PlwnO28rPVwnPC82PlwnO28rPVwnPC82PlwnO28rPVwnPC82PlwnOyQobykuMkgoIjQ2Iik7JChcJzwzMiA0aT0iMCIgNGg9IjAiIDRrPSIwIj48Mkw+PDEzIHA9IkciIGw9IjRsIj48LzEzPjwxMyBwPSJHIiBsPSI0byI+PDY+PC82PjwvMTM+PDEzIHA9IkciIGw9IjRuIj48LzEzPjwvMkw+PC8zMj5cJykuMkgoXCcjR1wnKTs1KFApeyQoIiMySSIpLjQ3KFwnPDE3IHA9IjRhIiA0ZT0iMkoiIDJLPSIwIj48LzE3PlwnKTskKCIjViwgLkUsIC5HLCAuMVkiKS4yUSgpfX07JC5iLmMuMlI9ezJZOjEwLDMwOkYsMVg6RCwxVzowLDI2OjAsMlg6M0csMlc6XCcyOFwnLDJTOlwnMjhcJywyVDpcJzI4XCcsMUk6M0IsMXg6M3YsMjM6RiwyVTowLjMsMmI6RiwxcjpGLGo6W10sMmM6MmQsMmE6MmQsMVY6MmR9OyQoVykuM3koNygpeyQuYi5jLjJWKCl9KX0pKDRmKTsnLDYyLDI3NCwnfHx8fG9wdHN8aWZ8ZGl2fGZ1bmN0aW9ufHx2YXJ8fGZufGZhbmN5Ym94fGhyZWZ8fGhlaWdodHx3aWR0aHxpdGVtQ3VycmVudHx8aXRlbUFycmF5fGZhbmN5X291dGVyfGlkfHBvc3xjc3N8aHRtbHxjbGFzc3xmYW5jeV9jb250ZW50fHxpbWFnZVByZWxvYWRlcnxlbHNlfHJldHVybnx0b3B8fHVuYmluZHxsZWZ0fHB4fGVsZW18dGhpc3xNYXRofGZhbHNlfGZhbmN5X2JnfHRydWV8ZmFuY3lfdGl0bGV8ZWx8ZmFuY3lfbG9hZGluZ3xzaG93fGl0ZW1PcHRzfHBhZHxvcmlnX2l0ZW18bGVuZ3RofGl0ZW18aXNJRXxzcmN8Y2xpY2t8aGlkZXxyb3VuZHx0YXJnZXR8ZmFuY3lfY2xvc2V8ZG9jdW1lbnR8dGl0bGV8c2V0dGluZ3N8c3ViR3JvdXB8fHdpbmRvd3x8dGR8YmluZHxvcmlnX3Bvc3xidXN5fGlmcmFtZXx8dmlzaWJsZXxvcmlnfHBvc2l0aW9ufG1hdGNofF9jaGFuZ2VfaXRlbXxmYW5jeV9sZWZ0fGZhbmN5X3JpZ2h0fF9maW5pc2h8Z2V0TnVtZXJpY3xmYW5jeV9vdmVybGF5fHZhbHVlfF9zZXRfY29udGVudHxjbG9zZXxpbWd8Z2V0Vmlld3BvcnR8SW1hZ2V8c3BhbnxfX2NsZWFudXB8Y2VudGVyT25TY3JvbGx8bm9ybWFsfG5ld3xpc3xsb2FkaW5nRnJhbWV8bG9hZGluZ1RpbWVyfGZyYW1lSGVpZ2h0fGltYWdlUmVnRXhwfDUwfG9iak5leHR8a2V5ZG93bnxlbXB0eXxmaXJzdHxzdHlsZXxhcHBlbmR8Y2hpbGRyZW58cmVsfGZyYW1lV2lkdGh8aW1hZ2V8X3Byb2NlZWRfaW1hZ2V8dW5kZWZpbmVkfG1pbnxyZXNpemV8aXNGdW5jdGlvbnxzZWxlY3R8b2JqZWN0fGdldFBvc2l0aW9ufHZpc2liaWxpdHl8c2Nyb2xsfGVtYmVkfGNhbGxiYWNrT25DbG9zZXx6b29tU3BlZWRJbnx6b29tT3BhY2l0eXxmYW5jeV9pY298ZmFkZU91dHx8ZmFkZUlufGZhbmN5X3dyYXB8b3ZlcmxheVNob3d8YW5pbWF0ZXxvcGFjaXR5fHpvb21TcGVlZE91dHx8c3dpbmd8a2V5Q29kZXxjYWxsYmFja09uU2hvd3xoaWRlT25Db250ZW50Q2xpY2t8Y2FsbGJhY2tPblN0YXJ0fG51bGx8YWJzb2x1dGV8cGFyc2VJbnR8c2Nyb2xsQm94fF9pbml0aWFsaXplfGJvdHRvbXxwdXNofHN1YnN0cnxpbmRleE9mfGRhdGF8cmVsYXRpdmV8ZmlsdGVyfHBuZ3xicm93c2VyfF9zdGFydHxtYXRjaGVkR3JvdXB8ZWFjaHxyZW1vdmVFeHByZXNzaW9ufGl0ZW1MZWZ0fGl0ZW1Ub3B8c3RvcFByb3BhZ2F0aW9ufF9zZXRfbmF2aWdhdGlvbnwxMDB8cHJvcHxhdXRvfHNldEV4cHJlc3Npb258cGFyZW50Tm9kZXxyaWdodHxfcHJlbG9hZF9uZWlnaGJvcl9pbWFnZXN8YW5pbWF0ZUxvYWRpbmd8YXBwZW5kVG98ZmFuY3lfaW5uZXJ8bm98ZnJhbWVib3JkZXJ8dHJ8ZmFuY3lfcmlnaHRfaWNvfGZhc3R8ZmFuY3lfbGVmdF9pY298amF2YXNjcmlwdHxmaXhQTkd8ZGVmYXVsdHN8ZWFzaW5nT3V0fGVhc2luZ0NoYW5nZXxvdmVybGF5T3BhY2l0eXxidWlsZHxlYXNpbmdJbnx6b29tU3BlZWRDaGFuZ2V8cGFkZGluZ3xiYWNrZ3JvdW5kSW1hZ2V8aW1hZ2VTY2FsZXxzdG9wfHRhYmxlfGNsZWFySW50ZXJ2YWx8c2hvd0xvYWRpbmd8ZmFuY3lfZnJhbWV8fHxzaG93SWZyYW1lfHxjb21wbGV0ZXxsb2FkfGJtcHxqcGVnfGZhbmN5X2RpdnxzcGxpdHxyZXBsYWNlfGVuYWJsZWR8c2Nyb2xsTGVmdHxjbGFzc05hbWV8cGFkZGluZ1RvcHxyYW5kb218MTAwMHxmYW5jeV9pZnJhbWV8bmFtZXxzY3JvbGxUb3B8b25sb2FkfGxvY2F0aW9ufGhpZGRlbnxSZWdFeHB8anF1ZXJ5fDM1NXx1cmx8ZXh0ZW5kfHJlYWR5fHZlcnNpb258anBnfDQyNXxmb3J8Ym9yZGVyTGVmdFdpZHRofGhzcGFjZXx3aGlsZXwzMDB8cGFkZGluZ0xlZnR8Y3VyQ1NTfGJvcmRlclRvcFdpZHRofG1zaWV8ZmFuY3lfYWpheHxmYW5jeV9iZ193fHNjYWxlfGZhbmN5X2JnX3N3fGZhbmN5X2JnX253fHNldEludGVydmFsfERYSW1hZ2VUcmFuc2Zvcm18Y2xpZW50V2lkdGh8c2l6aW5nTWV0aG9kfGZhbmN5X2JnX3N8ZmFuY3lfYmdfc2V8cHJvZ2lkfDY2fGdpZnxyZXBlYXR8fGJhY2tncm91bmRSZXBlYXR8ZmFuY3lfYmdfZXxmYW5jeV9iZ19uZXxmYW5jeV9iZ19ufG5vbmV8Ym9keXxwcmVwZW5kfGFsdHxmYW5jeV9pbWd8ZmFuY3lfYmlnSWZyYW1lfDYwfGNyb3B8QWxwaGFJbWFnZUxvYWRlcnxzY3JvbGxpbmd8alF1ZXJ5fG9mZnNldHxjZWxscGFkZGluZ3xjZWxsc3BhY2luZ3xjbGllbnRIZWlnaHR8Ym9yZGVyfGZhbmN5X3RpdGxlX2xlZnR8TWljcm9zb2Z0fGZhbmN5X3RpdGxlX3JpZ2h0fGZhbmN5X3RpdGxlX21haW58Z2V0Jy5zcGxpdCgnfCcpLDAse30pKQo=]]></data>
	</file>
	<file>
	  <filename>/templates/fancybox/jquery.fancybox.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[aHRtbCwgYm9keSB7DQoJaGVpZ2h0OiAxMDAlOw0KfQ0KDQpkaXYjZmFuY3lfb3ZlcmxheSB7DQoJcG9zaXRpb246IGZpeGVkOw0KCXRvcDogMDsNCglsZWZ0OiAwOw0KCXdpZHRoOiAxMDAlOw0KCWhlaWdodDogMTAwJTsNCgliYWNrZ3JvdW5kLWNvbG9yOiAjNjY2Ow0KCWRpc3BsYXk6IG5vbmU7DQoJei1pbmRleDogMzA7DQp9DQoNCiogaHRtbCBkaXYjZmFuY3lfb3ZlcmxheSB7DQoJcG9zaXRpb246IGFic29sdXRlOw0KCWhlaWdodDogZXhwcmVzc2lvbihkb2N1bWVudC5ib2R5LnNjcm9sbEhlaWdodCA+IGRvY3VtZW50LmJvZHkub2Zmc2V0SGVpZ2h0ID8gZG9jdW1lbnQuYm9keS5zY3JvbGxIZWlnaHQgOiBkb2N1bWVudC5ib2R5Lm9mZnNldEhlaWdodCArICdweCcpOw0KfQ0KDQpkaXYjZmFuY3lfd3JhcCB7DQoJdGV4dC1hbGlnbjogbGVmdDsNCn0NCg0KZGl2I2ZhbmN5X2xvYWRpbmcgew0KCXBvc2l0aW9uOiBhYnNvbHV0ZTsNCgloZWlnaHQ6IDQwcHg7DQoJd2lkdGg6IDQwcHg7DQoJY3Vyc29yOiBwb2ludGVyOw0KCWRpc3BsYXk6IG5vbmU7DQoJb3ZlcmZsb3c6IGhpZGRlbjsNCgliYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsNCgl6LWluZGV4OiAxMDA7DQp9DQoNCmRpdiNmYW5jeV9sb2FkaW5nIGRpdiB7DQoJcG9zaXRpb246IGFic29sdXRlOw0KCXRvcDogMDsNCglsZWZ0OiAwOw0KCXdpZHRoOiA0MHB4Ow0KCWhlaWdodDogNDgwcHg7DQoJYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgdXJsKCdmYW5jeV9wcm9ncmVzcy5wbmcnKSBuby1yZXBlYXQ7DQp9DQoNCmRpdiNmYW5jeV9sb2FkaW5nX292ZXJsYXkgew0KCXBvc2l0aW9uOiBhYnNvbHV0ZTsNCgliYWNrZ3JvdW5kLWNvbG9yOiAjRkZGOw0KCXotaW5kZXg6IDMwOw0KfQ0KDQpkaXYjZmFuY3lfbG9hZGluZ19pY29uIHsNCglwb3NpdGlvbjogYWJzb2x1dGU7DQoJYmFja2dyb3VuZDogdXJsKCdmYW5jeV9sb2FkaW5nLmdpZicpIG5vLXJlcGVhdDsNCgl6LWluZGV4OiAzNTsNCgl3aWR0aDogMTZweDsNCgloZWlnaHQ6IDE2cHg7DQp9DQoNCmRpdiNmYW5jeV9vdXRlciB7DQoJcG9zaXRpb246IGFic29sdXRlOw0KICAgIHRvcDogMDsNCiAgICBsZWZ0OiAwOw0KICAgIHotaW5kZXg6IDkwOw0KICAgIHBhZGRpbmc6IDE4cHggMThweCAzM3B4IDE4cHg7DQogICAgbWFyZ2luOiAwOw0KICAgIG92ZXJmbG93OiBoaWRkZW47DQogICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7DQogICAgZGlzcGxheTogbm9uZTsNCn0NCg0KZGl2I2ZhbmN5X2lubmVyIHsNCglwb3NpdGlvbjogcmVsYXRpdmU7DQoJd2lkdGg6MTAwJTsNCgloZWlnaHQ6MTAwJTsNCglib3JkZXI6IDFweCBzb2xpZCAjQkJCOw0KCWJhY2tncm91bmQ6ICNGRkY7DQp9DQoNCmRpdiNmYW5jeV9jb250ZW50IHsNCgltYXJnaW46IDA7DQoJei1pbmRleDogMTAwOw0KCXBvc2l0aW9uOiBhYnNvbHV0ZTsNCn0NCg0KZGl2I2ZhbmN5X2RpdiB7DQoJYmFja2dyb3VuZDogIzAwMDsNCgljb2xvcjogI0ZGRjsNCgloZWlnaHQ6IDEwMCU7DQoJd2lkdGg6IDEwMCU7DQoJei1pbmRleDogMTAwOw0KfQ0KDQppbWcjZmFuY3lfaW1nIHsNCglwb3NpdGlvbjogYWJzb2x1dGU7DQoJdG9wOiAwOw0KCWxlZnQ6IDA7DQoJYm9yZGVyOjA7IA0KCXBhZGRpbmc6IDA7IA0KCW1hcmdpbjogMDsNCgl6LWluZGV4OiAxMDA7DQoJd2lkdGg6IDEwMCU7DQoJaGVpZ2h0OiAxMDAlOw0KfQ0KDQpkaXYjZmFuY3lfY2xvc2Ugew0KCXBvc2l0aW9uOiBhYnNvbHV0ZTsNCgl0b3A6IC0xMnB4Ow0KCXJpZ2h0OiAtMTVweDsNCgloZWlnaHQ6IDMwcHg7DQoJd2lkdGg6IDMwcHg7DQoJYmFja2dyb3VuZDogdXJsKCdmYW5jeV9jbG9zZWJveC5wbmcnKSB0b3AgbGVmdCBuby1yZXBlYXQ7DQoJY3Vyc29yOiBwb2ludGVyOw0KCXotaW5kZXg6IDE4MTsNCglkaXNwbGF5OiBub25lOw0KfQ0KDQojZmFuY3lfZnJhbWUgew0KCXBvc2l0aW9uOiByZWxhdGl2ZTsNCgl3aWR0aDogMTAwJTsNCgloZWlnaHQ6IDEwMCU7DQoJZGlzcGxheTogbm9uZTsNCn0NCg0KI2ZhbmN5X2FqYXggew0KCXdpZHRoOiAxMDAlOw0KCWhlaWdodDogMTAwJTsNCglvdmVyZmxvdzogYXV0bzsNCn0NCg0KYSNmYW5jeV9sZWZ0LCBhI2ZhbmN5X3JpZ2h0IHsNCglwb3NpdGlvbjogYWJzb2x1dGU7IA0KCWJvdHRvbTogMHB4OyANCgloZWlnaHQ6IDEwMCU7IA0KCXdpZHRoOiAzNSU7IA0KCWN1cnNvcjogcG9pbnRlcjsNCgl6LWluZGV4OiAxMTE7IA0KCWRpc3BsYXk6IG5vbmU7DQoJYmFja2dyb3VuZC1pbWFnZTogdXJsKGRhdGE6aW1hZ2UvZ2lmO2Jhc2U2NCxBQUFBKTsNCglvdXRsaW5lOiBub25lOw0KfQ0KDQphI2ZhbmN5X2xlZnQgew0KCWxlZnQ6IDBweDsgDQp9DQoNCmEjZmFuY3lfcmlnaHQgew0KCXJpZ2h0OiAwcHg7IA0KfQ0KDQpzcGFuLmZhbmN5X2ljbyB7DQoJcG9zaXRpb246IGFic29sdXRlOyANCgl0b3A6IDUwJTsNCgltYXJnaW4tdG9wOiAtMTVweDsNCgl3aWR0aDogMzBweDsNCgloZWlnaHQ6IDMwcHg7DQoJei1pbmRleDogMTEyOyANCgljdXJzb3I6IHBvaW50ZXI7DQoJZGlzcGxheTogYmxvY2s7DQp9DQoNCnNwYW4jZmFuY3lfbGVmdF9pY28gew0KCWxlZnQ6IC05OTk5cHg7DQoJYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgdXJsKCdmYW5jeV9sZWZ0LnBuZycpIG5vLXJlcGVhdDsNCn0NCg0Kc3BhbiNmYW5jeV9yaWdodF9pY28gew0KCXJpZ2h0OiAtOTk5OXB4Ow0KCWJhY2tncm91bmQ6IHRyYW5zcGFyZW50IHVybCgnZmFuY3lfcmlnaHQucG5nJykgbm8tcmVwZWF0Ow0KfQ0KDQphI2ZhbmN5X2xlZnQ6aG92ZXIgew0KICB2aXNpYmlsaXR5OiB2aXNpYmxlOw0KfQ0KDQphI2ZhbmN5X3JpZ2h0OmhvdmVyIHsNCiAgdmlzaWJpbGl0eTogdmlzaWJsZTsNCn0NCg0KYSNmYW5jeV9sZWZ0OmhvdmVyIHNwYW4gew0KCWxlZnQ6IDIwcHg7IA0KfQ0KDQphI2ZhbmN5X3JpZ2h0OmhvdmVyIHNwYW4gew0KCXJpZ2h0OiAyMHB4OyANCn0NCg0KLmZhbmN5X2JpZ0lmcmFtZSB7DQoJcG9zaXRpb246IGFic29sdXRlOw0KCXRvcDogMDsNCglsZWZ0OiAwOw0KCXdpZHRoOiAxMDAlOw0KCWhlaWdodDogMTAwJTsNCgliYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsNCn0NCg0KZGl2I2ZhbmN5X2JnIHsNCglwb3NpdGlvbjogYWJzb2x1dGU7DQoJdG9wOiAwOyBsZWZ0OiAwOw0KCXdpZHRoOiAxMDAlOw0KCWhlaWdodDogMTAwJTsNCgl6LWluZGV4OiA3MDsNCglib3JkZXI6IDA7DQoJcGFkZGluZzogMDsNCgltYXJnaW46IDA7DQp9DQoJDQpkaXYuZmFuY3lfYmcgew0KCXBvc2l0aW9uOiBhYnNvbHV0ZTsNCglkaXNwbGF5OiBibG9jazsNCgl6LWluZGV4OiA3MDsNCglib3JkZXI6IDA7DQoJcGFkZGluZzogMDsNCgltYXJnaW46IDA7DQp9DQoNCmRpdi5mYW5jeV9iZ19uIHsNCgl0b3A6IC0xOHB4Ow0KCXdpZHRoOiAxMDAlOw0KCWhlaWdodDogMThweDsNCgliYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCB1cmwoJ2ZhbmN5X3NoYWRvd19uLnBuZycpIHJlcGVhdC14Ow0KfQ0KDQpkaXYuZmFuY3lfYmdfbmUgew0KCXRvcDogLTE4cHg7DQoJcmlnaHQ6IC0xM3B4Ow0KCXdpZHRoOiAxM3B4Ow0KCWhlaWdodDogMThweDsNCgliYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCB1cmwoJ2ZhbmN5X3NoYWRvd19uZS5wbmcnKSBuby1yZXBlYXQ7DQp9DQoNCmRpdi5mYW5jeV9iZ19lIHsNCglyaWdodDogLTEzcHg7DQoJaGVpZ2h0OiAxMDAlOw0KCXdpZHRoOiAxM3B4Ow0KCWJhY2tncm91bmQ6IHRyYW5zcGFyZW50IHVybCgnZmFuY3lfc2hhZG93X2UucG5nJykgcmVwZWF0LXk7DQp9DQoNCmRpdi5mYW5jeV9iZ19zZSB7DQoJYm90dG9tOiAtMThweDsNCglyaWdodDogLTEzcHg7DQoJd2lkdGg6IDEzcHg7DQoJaGVpZ2h0OiAxOHB4Ow0KCWJhY2tncm91bmQ6IHRyYW5zcGFyZW50IHVybCgnZmFuY3lfc2hhZG93X3NlLnBuZycpIG5vLXJlcGVhdDsNCn0NCg0KZGl2LmZhbmN5X2JnX3Mgew0KCWJvdHRvbTogLTE4cHg7DQoJd2lkdGg6IDEwMCU7DQoJaGVpZ2h0OiAxOHB4Ow0KCWJhY2tncm91bmQ6IHRyYW5zcGFyZW50IHVybCgnZmFuY3lfc2hhZG93X3MucG5nJykgcmVwZWF0LXg7DQp9DQoNCmRpdi5mYW5jeV9iZ19zdyB7DQoJYm90dG9tOiAtMThweDsNCglsZWZ0OiAtMTNweDsNCgl3aWR0aDogMTNweDsNCgloZWlnaHQ6IDE4cHg7DQoJYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgdXJsKCdmYW5jeV9zaGFkb3dfc3cucG5nJykgbm8tcmVwZWF0Ow0KfQ0KDQpkaXYuZmFuY3lfYmdfdyB7DQoJbGVmdDogLTEzcHg7DQoJaGVpZ2h0OiAxMDAlOw0KCXdpZHRoOiAxM3B4Ow0KCWJhY2tncm91bmQ6IHRyYW5zcGFyZW50IHVybCgnZmFuY3lfc2hhZG93X3cucG5nJykgcmVwZWF0LXk7DQp9DQoNCmRpdi5mYW5jeV9iZ19udyB7DQoJdG9wOiAtMThweDsNCglsZWZ0OiAtMTNweDsNCgl3aWR0aDogMTNweDsNCgloZWlnaHQ6IDE4cHg7DQoJYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgdXJsKCdmYW5jeV9zaGFkb3dfbncucG5nJykgbm8tcmVwZWF0Ow0KfQ0KDQpkaXYjZmFuY3lfdGl0bGUgew0KCXBvc2l0aW9uOiBhYnNvbHV0ZTsNCglib3R0b206IC0zM3B4Ow0KCWxlZnQ6IDA7DQoJd2lkdGg6IDEwMCU7DQoJei1pbmRleDogMTAwOw0KCWRpc3BsYXk6IG5vbmU7DQp9DQoNCmRpdiNmYW5jeV90aXRsZSBkaXYgew0KCWNvbG9yOiAjRkZGOw0KCWZvbnQ6IGJvbGQgMTJweCBBcmlhbDsNCglwYWRkaW5nLWJvdHRvbTogM3B4Ow0KfQ0KDQpkaXYjZmFuY3lfdGl0bGUgdGFibGUgew0KCW1hcmdpbjogMCBhdXRvOw0KfQ0KDQpkaXYjZmFuY3lfdGl0bGUgdGFibGUgdGQgew0KCXBhZGRpbmc6IDA7DQoJdmVydGljYWwtYWxpZ246IG1pZGRsZTsNCn0NCg0KdGQjZmFuY3lfdGl0bGVfbGVmdCB7DQoJaGVpZ2h0OiAzMnB4Ow0KCXdpZHRoOiAxNXB4Ow0KCWJhY2tncm91bmQ6IHRyYW5zcGFyZW50IHVybChmYW5jeV90aXRsZV9sZWZ0LnBuZykgcmVwZWF0LXg7DQp9DQoNCnRkI2ZhbmN5X3RpdGxlX21haW4gew0KCWhlaWdodDogMzJweDsNCgliYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCB1cmwoZmFuY3lfdGl0bGVfbWFpbi5wbmcpIHJlcGVhdC14Ow0KfQ0KDQp0ZCNmYW5jeV90aXRsZV9yaWdodCB7DQoJaGVpZ2h0OiAzMnB4Ow0KCXdpZHRoOiAxNXB4Ow0KCWJhY2tncm91bmQ6IHRyYW5zcGFyZW50IHVybChmYW5jeV90aXRsZV9yaWdodC5wbmcpIHJlcGVhdC14Ow0KfQ==]]></data>
	</file>
	<file>
	  <filename>/templates/fancybox/jquery.fancybox.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoKICogRmFuY3lCb3ggLSBzaW1wbGUgYW5kIGZhbmN5IGpRdWVyeSBwbHVnaW4KICogRXhhbXBsZXMgYW5kIGRvY3VtZW50YXRpb24gYXQ6IGh0dHA6Ly9mYW5jeS5rbGFkZS5sdi8KICogVmVyc2lvbjogMS4yLjEgKDEzLzAzLzIwMDkpCiAqIENvcHlyaWdodCAoYykgMjAwOSBKYW5pcyBTa2FybmVsaXMKICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlOiBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01JVF9MaWNlbnNlCiAqIFJlcXVpcmVzOiBqUXVlcnkgdjEuMysKKi8KOyhmdW5jdGlvbigkKSB7CgoJJC5mbi5maXhQTkcgPSBmdW5jdGlvbigpIHsKCQlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uICgpIHsKCQkJdmFyIGltYWdlID0gJCh0aGlzKS5jc3MoJ2JhY2tncm91bmRJbWFnZScpOwoKCQkJaWYgKGltYWdlLm1hdGNoKC9edXJsXChbIiddPyguKlwucG5nKVsiJ10/XCkkL2kpKSB7CgkJCQlpbWFnZSA9IFJlZ0V4cC4kMTsKCQkJCSQodGhpcykuY3NzKHsKCQkJCQknYmFja2dyb3VuZEltYWdlJzogJ25vbmUnLAoJCQkJCSdmaWx0ZXInOiAicHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkFscGhhSW1hZ2VMb2FkZXIoZW5hYmxlZD10cnVlLCBzaXppbmdNZXRob2Q9IiArICgkKHRoaXMpLmNzcygnYmFja2dyb3VuZFJlcGVhdCcpID09ICduby1yZXBlYXQnID8gJ2Nyb3AnIDogJ3NjYWxlJykgKyAiLCBzcmM9JyIgKyBpbWFnZSArICInKSIKCQkJCX0pLmVhY2goZnVuY3Rpb24gKCkgewoJCQkJCXZhciBwb3NpdGlvbiA9ICQodGhpcykuY3NzKCdwb3NpdGlvbicpOwoJCQkJCWlmIChwb3NpdGlvbiAhPSAnYWJzb2x1dGUnICYmIHBvc2l0aW9uICE9ICdyZWxhdGl2ZScpCgkJCQkJCSQodGhpcykuY3NzKCdwb3NpdGlvbicsICdyZWxhdGl2ZScpOwoJCQkJfSk7CgkJCX0KCQl9KTsKCX07CgoJdmFyIGVsZW0sIG9wdHMsIGJ1c3kgPSBmYWxzZSwgaW1hZ2VQcmVsb2FkZXIgPSBuZXcgSW1hZ2UsIGxvYWRpbmdUaW1lciwgbG9hZGluZ0ZyYW1lID0gMSwgaW1hZ2VSZWdFeHAgPSAvXC4oanBnfGdpZnxwbmd8Ym1wfGpwZWcpKC4qKT8kL2k7Cgl2YXIgaXNJRSA9ICgkLmJyb3dzZXIubXNpZSAmJiBwYXJzZUludCgkLmJyb3dzZXIudmVyc2lvbi5zdWJzdHIoMCwxKSkgPCA4KTsKCgkkLmZuLmZhbmN5Ym94ID0gZnVuY3Rpb24oc2V0dGluZ3MpIHsKCQlzZXR0aW5ncyA9ICQuZXh0ZW5kKHt9LCAkLmZuLmZhbmN5Ym94LmRlZmF1bHRzLCBzZXR0aW5ncyk7CgoJCXZhciBtYXRjaGVkR3JvdXAgPSB0aGlzOwoKCQlmdW5jdGlvbiBfaW5pdGlhbGl6ZSgpIHsKCQkJZWxlbSA9IHRoaXM7CgkJCW9wdHMgPSBzZXR0aW5nczsKCgkJCV9zdGFydCgpOwoKCQkJcmV0dXJuIGZhbHNlOwoJCX07CgoJCWZ1bmN0aW9uIF9zdGFydCgpIHsKCQkJaWYgKGJ1c3kpIHJldHVybjsKCgkJCWlmICgkLmlzRnVuY3Rpb24ob3B0cy5jYWxsYmFja09uU3RhcnQpKSB7CgkJCQlvcHRzLmNhbGxiYWNrT25TdGFydCgpOwoJCQl9CgoJCQlvcHRzLml0ZW1BcnJheQkJPSBbXTsKCQkJb3B0cy5pdGVtQ3VycmVudAk9IDA7CgoJCQlpZiAoc2V0dGluZ3MuaXRlbUFycmF5Lmxlbmd0aCA+IDApIHsKCQkJCW9wdHMuaXRlbUFycmF5ID0gc2V0dGluZ3MuaXRlbUFycmF5OwoKCQkJfSBlbHNlIHsKCQkJCXZhciBpdGVtID0ge307CgoJCQkJaWYgKCFlbGVtLnJlbCB8fCBlbGVtLnJlbCA9PSAnJykgewoJCQkJCXZhciBpdGVtID0ge2hyZWY6IGVsZW0uaHJlZiwgdGl0bGU6IGVsZW0udGl0bGV9OwoKCQkJCQlpZiAoJChlbGVtKS5jaGlsZHJlbigiaW1nOmZpcnN0IikubGVuZ3RoKSB7CgkJCQkJCWl0ZW0ub3JpZyA9ICQoZWxlbSkuY2hpbGRyZW4oImltZzpmaXJzdCIpOwoJCQkJCX0KCgkJCQkJb3B0cy5pdGVtQXJyYXkucHVzaCggaXRlbSApOwoKCQkJCX0gZWxzZSB7CgkJCQkJCgkJCQkJdmFyIHN1Ykdyb3VwID0gJChtYXRjaGVkR3JvdXApLmZpbHRlcigiYVtyZWw9IiArIGVsZW0ucmVsICsgIl0iKTsKCgkJCQkJdmFyIGl0ZW0gPSB7fTsKCgkJCQkJZm9yICh2YXIgaSA9IDA7IGkgPCBzdWJHcm91cC5sZW5ndGg7IGkrKykgewoJCQkJCQlpdGVtID0ge2hyZWY6IHN1Ykdyb3VwW2ldLmhyZWYsIHRpdGxlOiBzdWJHcm91cFtpXS50aXRsZX07CgoJCQkJCQlpZiAoJChzdWJHcm91cFtpXSkuY2hpbGRyZW4oImltZzpmaXJzdCIpLmxlbmd0aCkgewoJCQkJCQkJaXRlbS5vcmlnID0gJChzdWJHcm91cFtpXSkuY2hpbGRyZW4oImltZzpmaXJzdCIpOwoJCQkJCQl9CgoJCQkJCQlvcHRzLml0ZW1BcnJheS5wdXNoKCBpdGVtICk7CgkJCQkJfQoKCQkJCQl3aGlsZSAoIG9wdHMuaXRlbUFycmF5WyBvcHRzLml0ZW1DdXJyZW50IF0uaHJlZiAhPSBlbGVtLmhyZWYgKSB7CgkJCQkJCW9wdHMuaXRlbUN1cnJlbnQrKzsKCQkJCQl9CgkJCQl9CgkJCX0KCgkJCWlmIChvcHRzLm92ZXJsYXlTaG93KSB7CgkJCQlpZiAoaXNJRSkgewoJCQkJCSQoJ2VtYmVkLCBvYmplY3QsIHNlbGVjdCcpLmNzcygndmlzaWJpbGl0eScsICdoaWRkZW4nKTsKCQkJCX0KCgkJCQkkKCIjZmFuY3lfb3ZlcmxheSIpLmNzcygnb3BhY2l0eScsIG9wdHMub3ZlcmxheU9wYWNpdHkpLnNob3coKTsKCQkJfQoKCQkJX2NoYW5nZV9pdGVtKCk7CgkJfTsKCgkJZnVuY3Rpb24gX2NoYW5nZV9pdGVtKCkgewoJCQkkKCIjZmFuY3lfcmlnaHQsICNmYW5jeV9sZWZ0LCAjZmFuY3lfY2xvc2UsICNmYW5jeV90aXRsZSIpLmhpZGUoKTsKCgkJCXZhciBocmVmID0gb3B0cy5pdGVtQXJyYXlbIG9wdHMuaXRlbUN1cnJlbnQgXS5ocmVmOwoKCQkJaWYgKGhyZWYubWF0Y2goLyMvKSkgewoJCQkJdmFyIHRhcmdldCA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmLnNwbGl0KCcjJylbMF07IHRhcmdldCA9IGhyZWYucmVwbGFjZSh0YXJnZXQsICcnKTsgdGFyZ2V0ID0gdGFyZ2V0LnN1YnN0cih0YXJnZXQuaW5kZXhPZignIycpKTsKCgkJCQlfc2V0X2NvbnRlbnQoJzxkaXYgaWQ9ImZhbmN5X2RpdiI+JyArICQodGFyZ2V0KS5odG1sKCkgKyAnPC9kaXY+Jywgb3B0cy5mcmFtZVdpZHRoLCBvcHRzLmZyYW1lSGVpZ2h0KTsKCgkJCX0gZWxzZSBpZiAoaHJlZi5tYXRjaChpbWFnZVJlZ0V4cCkpIHsKCQkJCWltYWdlUHJlbG9hZGVyID0gbmV3IEltYWdlOyBpbWFnZVByZWxvYWRlci5zcmMgPSBocmVmOwoKCQkJCWlmIChpbWFnZVByZWxvYWRlci5jb21wbGV0ZSkgewoJCQkJCV9wcm9jZWVkX2ltYWdlKCk7CgoJCQkJfSBlbHNlIHsKCQkJCQkkLmZuLmZhbmN5Ym94LnNob3dMb2FkaW5nKCk7CgoJCQkJCSQoaW1hZ2VQcmVsb2FkZXIpLnVuYmluZCgpLmJpbmQoJ2xvYWQnLCBmdW5jdGlvbigpIHsKCQkJCQkJJCgiLmZhbmN5X2xvYWRpbmciKS5oaWRlKCk7CgoJCQkJCQlfcHJvY2VlZF9pbWFnZSgpOwoJCQkJCX0pOwoJCQkJfQoKCQkJIH0gZWxzZSBpZiAoaHJlZi5tYXRjaCgiaWZyYW1lIikgfHwgZWxlbS5jbGFzc05hbWUuaW5kZXhPZigiaWZyYW1lIikgPj0gMCkgewoJCQkJX3NldF9jb250ZW50KCc8aWZyYW1lIGlkPSJmYW5jeV9mcmFtZSIgb25sb2FkPSIkLmZuLmZhbmN5Ym94LnNob3dJZnJhbWUoKSIgbmFtZT0iZmFuY3lfaWZyYW1lJyArIE1hdGgucm91bmQoTWF0aC5yYW5kb20oKSoxMDAwKSArICciIGZyYW1lYm9yZGVyPSIwIiBoc3BhY2U9IjAiIHNyYz0iJyArIGhyZWYgKyAnIj48L2lmcmFtZT4nLCBvcHRzLmZyYW1lV2lkdGgsIG9wdHMuZnJhbWVIZWlnaHQpOwoKCQkJfSBlbHNlIHsKCQkJCSQuZ2V0KGhyZWYsIGZ1bmN0aW9uKGRhdGEpIHsKCQkJCQlfc2V0X2NvbnRlbnQoICc8ZGl2IGlkPSJmYW5jeV9hamF4Ij4nICsgZGF0YSArICc8L2Rpdj4nLCBvcHRzLmZyYW1lV2lkdGgsIG9wdHMuZnJhbWVIZWlnaHQgKTsKCQkJCX0pOwoJCQl9CgkJfTsKCgkJZnVuY3Rpb24gX3Byb2NlZWRfaW1hZ2UoKSB7CgkJCWlmIChvcHRzLmltYWdlU2NhbGUpIHsKCQkJCXZhciB3ID0gJC5mbi5mYW5jeWJveC5nZXRWaWV3cG9ydCgpOwoKCQkJCXZhciByID0gTWF0aC5taW4oTWF0aC5taW4od1swXSAtIDM2LCBpbWFnZVByZWxvYWRlci53aWR0aCkgLyBpbWFnZVByZWxvYWRlci53aWR0aCwgTWF0aC5taW4od1sxXSAtIDYwLCBpbWFnZVByZWxvYWRlci5oZWlnaHQpIC8gaW1hZ2VQcmVsb2FkZXIuaGVpZ2h0KTsKCgkJCQl2YXIgd2lkdGggPSBNYXRoLnJvdW5kKHIgKiBpbWFnZVByZWxvYWRlci53aWR0aCk7CgkJCQl2YXIgaGVpZ2h0ID0gTWF0aC5yb3VuZChyICogaW1hZ2VQcmVsb2FkZXIuaGVpZ2h0KTsKCgkJCX0gZWxzZSB7CgkJCQl2YXIgd2lkdGggPSBpbWFnZVByZWxvYWRlci53aWR0aDsKCQkJCXZhciBoZWlnaHQgPSBpbWFnZVByZWxvYWRlci5oZWlnaHQ7CgkJCX0KCgkJCV9zZXRfY29udGVudCgnPGltZyBhbHQ9IiIgaWQ9ImZhbmN5X2ltZyIgc3JjPSInICsgaW1hZ2VQcmVsb2FkZXIuc3JjICsgJyIgLz4nLCB3aWR0aCwgaGVpZ2h0KTsKCQl9OwoKCQlmdW5jdGlvbiBfcHJlbG9hZF9uZWlnaGJvcl9pbWFnZXMoKSB7CgkJCWlmICgob3B0cy5pdGVtQXJyYXkubGVuZ3RoIC0xKSA+IG9wdHMuaXRlbUN1cnJlbnQpIHsKCQkJCXZhciBocmVmID0gb3B0cy5pdGVtQXJyYXlbb3B0cy5pdGVtQ3VycmVudCArIDFdLmhyZWY7CgoJCQkJaWYgKGhyZWYubWF0Y2goaW1hZ2VSZWdFeHApKSB7CgkJCQkJb2JqTmV4dCA9IG5ldyBJbWFnZSgpOwoJCQkJCW9iak5leHQuc3JjID0gaHJlZjsKCQkJCX0KCQkJfQoKCQkJaWYgKG9wdHMuaXRlbUN1cnJlbnQgPiAwKSB7CgkJCQl2YXIgaHJlZiA9IG9wdHMuaXRlbUFycmF5W29wdHMuaXRlbUN1cnJlbnQgLTFdLmhyZWY7CgoJCQkJaWYgKGhyZWYubWF0Y2goaW1hZ2VSZWdFeHApKSB7CgkJCQkJb2JqTmV4dCA9IG5ldyBJbWFnZSgpOwoJCQkJCW9iak5leHQuc3JjID0gaHJlZjsKCQkJCX0KCQkJfQoJCX07CgoJCWZ1bmN0aW9uIF9zZXRfY29udGVudCh2YWx1ZSwgd2lkdGgsIGhlaWdodCkgewoJCQlidXN5ID0gdHJ1ZTsKCgkJCXZhciBwYWQgPSBvcHRzLnBhZGRpbmc7CgoJCQlpZiAoaXNJRSkgewoJCQkJJCgiI2ZhbmN5X2NvbnRlbnQiKVswXS5zdHlsZS5yZW1vdmVFeHByZXNzaW9uKCJoZWlnaHQiKTsKCQkJCSQoIiNmYW5jeV9jb250ZW50IilbMF0uc3R5bGUucmVtb3ZlRXhwcmVzc2lvbigid2lkdGgiKTsKCQkJfQoKCQkJaWYgKHBhZCA+IDApIHsKCQkJCXdpZHRoCSs9IHBhZCAqIDI7CgkJCQloZWlnaHQJKz0gcGFkICogMjsKCgkJCQkkKCIjZmFuY3lfY29udGVudCIpLmNzcyh7CgkJCQkJJ3RvcCcJCTogcGFkICsgJ3B4JywKCQkJCQkncmlnaHQnCQk6IHBhZCArICdweCcsCgkJCQkJJ2JvdHRvbScJOiBwYWQgKyAncHgnLAoJCQkJCSdsZWZ0JwkJOiBwYWQgKyAncHgnLAoJCQkJCSd3aWR0aCcJCTogJ2F1dG8nLAoJCQkJCSdoZWlnaHQnCTogJ2F1dG8nCgkJCQl9KTsKCgkJCQlpZiAoaXNJRSkgewoJCQkJCSQoIiNmYW5jeV9jb250ZW50IilbMF0uc3R5bGUuc2V0RXhwcmVzc2lvbignaGVpZ2h0JywJJyh0aGlzLnBhcmVudE5vZGUuY2xpZW50SGVpZ2h0IC0gMjApJyk7CgkJCQkJJCgiI2ZhbmN5X2NvbnRlbnQiKVswXS5zdHlsZS5zZXRFeHByZXNzaW9uKCd3aWR0aCcsCQknKHRoaXMucGFyZW50Tm9kZS5jbGllbnRXaWR0aCAtIDIwKScpOwoJCQkJfQoKCQkJfSBlbHNlIHsKCQkJCSQoIiNmYW5jeV9jb250ZW50IikuY3NzKHsKCQkJCQkndG9wJwkJOiAwLAoJCQkJCSdyaWdodCcJCTogMCwKCQkJCQknYm90dG9tJwk6IDAsCgkJCQkJJ2xlZnQnCQk6IDAsCgkJCQkJJ3dpZHRoJwkJOiAnMTAwJScsCgkJCQkJJ2hlaWdodCcJOiAnMTAwJScKCQkJCX0pOwoJCQl9CgoJCQlpZiAoJCgiI2ZhbmN5X291dGVyIikuaXMoIjp2aXNpYmxlIikgJiYgd2lkdGggPT0gJCgiI2ZhbmN5X291dGVyIikud2lkdGgoKSAmJiBoZWlnaHQgPT0gJCgiI2ZhbmN5X291dGVyIikuaGVpZ2h0KCkpIHsKCQkJCSQoIiNmYW5jeV9jb250ZW50IikuZmFkZU91dCgiZmFzdCIsIGZ1bmN0aW9uKCkgewoJCQkJCSQoIiNmYW5jeV9jb250ZW50IikuZW1wdHkoKS5hcHBlbmQoJCh2YWx1ZSkpLmZhZGVJbigibm9ybWFsIiwgZnVuY3Rpb24oKSB7CgkJCQkJCV9maW5pc2goKTsKCQkJCQl9KTsKCQkJCX0pOwoKCQkJCXJldHVybjsKCQkJfQoKCQkJdmFyIHcgPSAkLmZuLmZhbmN5Ym94LmdldFZpZXdwb3J0KCk7CgoJCQl2YXIgaXRlbUxlZnQJPSAod2lkdGggKyAzNikJPiB3WzBdID8gd1syXSA6ICh3WzJdICsgTWF0aC5yb3VuZCgod1swXSAtIHdpZHRoIC0gMzYpIC8gMikpOwoJCQl2YXIgaXRlbVRvcAkJPSAoaGVpZ2h0ICsgNTApCT4gd1sxXSA/IHdbM10gOiAod1szXSArIE1hdGgucm91bmQoKHdbMV0gLSBoZWlnaHQgLSA1MCkgLyAyKSk7CgoJCQl2YXIgaXRlbU9wdHMgPSB7CgkJCQknbGVmdCc6CQlpdGVtTGVmdCwKCQkJCSd0b3AnOgkJaXRlbVRvcCwKCQkJCSd3aWR0aCc6CXdpZHRoICsgJ3B4JywKCQkJCSdoZWlnaHQnOgloZWlnaHQgKyAncHgnCgkJCX07CgoJCQlpZiAoJCgiI2ZhbmN5X291dGVyIikuaXMoIjp2aXNpYmxlIikpIHsKCQkJCSQoIiNmYW5jeV9jb250ZW50IikuZmFkZU91dCgibm9ybWFsIiwgZnVuY3Rpb24oKSB7CgkJCQkJJCgiI2ZhbmN5X2NvbnRlbnQiKS5lbXB0eSgpOwoJCQkJCSQoIiNmYW5jeV9vdXRlciIpLmFuaW1hdGUoaXRlbU9wdHMsIG9wdHMuem9vbVNwZWVkQ2hhbmdlLCBvcHRzLmVhc2luZ0NoYW5nZSwgZnVuY3Rpb24oKSB7CgkJCQkJCSQoIiNmYW5jeV9jb250ZW50IikuYXBwZW5kKCQodmFsdWUpKS5mYWRlSW4oIm5vcm1hbCIsIGZ1bmN0aW9uKCkgewoJCQkJCQkJX2ZpbmlzaCgpOwoJCQkJCQl9KTsKCQkJCQl9KTsKCQkJCX0pOwoKCQkJfSBlbHNlIHsKCgkJCQlpZiAob3B0cy56b29tU3BlZWRJbiA+IDAgJiYgb3B0cy5pdGVtQXJyYXlbb3B0cy5pdGVtQ3VycmVudF0ub3JpZyAhPT0gdW5kZWZpbmVkKSB7CgkJCQkJJCgiI2ZhbmN5X2NvbnRlbnQiKS5lbXB0eSgpLmFwcGVuZCgkKHZhbHVlKSk7CgoJCQkJCXZhciBvcmlnX2l0ZW0JPSBvcHRzLml0ZW1BcnJheVtvcHRzLml0ZW1DdXJyZW50XS5vcmlnOwoJCQkJCXZhciBvcmlnX3Bvcwk9ICQuZm4uZmFuY3lib3guZ2V0UG9zaXRpb24ob3JpZ19pdGVtKTsKCgkJCQkJJCgiI2ZhbmN5X291dGVyIikuY3NzKHsKCQkJCQkJJ2xlZnQnOgkJKG9yaWdfcG9zLmxlZnQgLSAxOCkgKyAncHgnLAoJCQkJCQkndG9wJzoJCShvcmlnX3Bvcy50b3AgIC0gMTgpICsgJ3B4JywKCQkJCQkJJ3dpZHRoJzoJJChvcmlnX2l0ZW0pLndpZHRoKCksCgkJCQkJCSdoZWlnaHQnOgkkKG9yaWdfaXRlbSkuaGVpZ2h0KCkKCQkJCQl9KTsKCgkJCQkJaWYgKG9wdHMuem9vbU9wYWNpdHkpIHsKCQkJCQkJaXRlbU9wdHMub3BhY2l0eSA9ICdzaG93JzsKCQkJCQl9CgoJCQkJCSQoIiNmYW5jeV9vdXRlciIpLmFuaW1hdGUoaXRlbU9wdHMsIG9wdHMuem9vbVNwZWVkSW4sIG9wdHMuZWFzaW5nSW4sIGZ1bmN0aW9uKCkgewoJCQkJCQlfZmluaXNoKCk7CgkJCQkJfSk7CgoJCQkJfSBlbHNlIHsKCgkJCQkJJCgiI2ZhbmN5X2NvbnRlbnQiKS5oaWRlKCkuZW1wdHkoKS5hcHBlbmQoJCh2YWx1ZSkpLnNob3coKTsKCQkJCQkkKCIjZmFuY3lfb3V0ZXIiKS5jc3MoaXRlbU9wdHMpLmZhZGVJbigibm9ybWFsIiwgZnVuY3Rpb24oKSB7CgkJCQkJCV9maW5pc2goKTsKCQkJCQl9KTsKCQkJCX0KCQkJfQoJCX07CgoJCWZ1bmN0aW9uIF9zZXRfbmF2aWdhdGlvbigpIHsKCQkJaWYgKG9wdHMuaXRlbUN1cnJlbnQgIT0gMCkgewoJCQkJJCgiI2ZhbmN5X2xlZnQsICNmYW5jeV9sZWZ0X2ljbyIpLnVuYmluZCgpLmJpbmQoImNsaWNrIiwgZnVuY3Rpb24oZSkgewoJCQkJCWUuc3RvcFByb3BhZ2F0aW9uKCk7CgoJCQkJCW9wdHMuaXRlbUN1cnJlbnQtLTsKCQkJCQlfY2hhbmdlX2l0ZW0oKTsKCgkJCQkJcmV0dXJuIGZhbHNlOwoJCQkJfSk7CgoJCQkJJCgiI2ZhbmN5X2xlZnQiKS5zaG93KCk7CgkJCX0KCgkJCWlmIChvcHRzLml0ZW1DdXJyZW50ICE9ICggb3B0cy5pdGVtQXJyYXkubGVuZ3RoIC0xKSkgewoJCQkJJCgiI2ZhbmN5X3JpZ2h0LCAjZmFuY3lfcmlnaHRfaWNvIikudW5iaW5kKCkuYmluZCgiY2xpY2siLCBmdW5jdGlvbihlKSB7CgkJCQkJZS5zdG9wUHJvcGFnYXRpb24oKTsKCgkJCQkJb3B0cy5pdGVtQ3VycmVudCsrOwoJCQkJCV9jaGFuZ2VfaXRlbSgpOwoKCQkJCQlyZXR1cm4gZmFsc2U7CgkJCQl9KTsKCgkJCQkkKCIjZmFuY3lfcmlnaHQiKS5zaG93KCk7CgkJCX0KCQl9OwoKCQlmdW5jdGlvbiBfZmluaXNoKCkgewoJCQlfc2V0X25hdmlnYXRpb24oKTsKCgkJCV9wcmVsb2FkX25laWdoYm9yX2ltYWdlcygpOwoKCQkJJChkb2N1bWVudCkua2V5ZG93bihmdW5jdGlvbihlKSB7CgkJCQlpZiAoZS5rZXlDb2RlID09IDI3KSB7CgkJCQkJJC5mbi5mYW5jeWJveC5jbG9zZSgpOwoJCQkJCSQoZG9jdW1lbnQpLnVuYmluZCgia2V5ZG93biIpOwoKCQkJCX0gZWxzZSBpZihlLmtleUNvZGUgPT0gMzcgJiYgb3B0cy5pdGVtQ3VycmVudCAhPSAwKSB7CgkJCQkJb3B0cy5pdGVtQ3VycmVudC0tOwoJCQkJCV9jaGFuZ2VfaXRlbSgpOwoJCQkJCSQoZG9jdW1lbnQpLnVuYmluZCgia2V5ZG93biIpOwoKCQkJCX0gZWxzZSBpZihlLmtleUNvZGUgPT0gMzkgJiYgb3B0cy5pdGVtQ3VycmVudCAhPSAob3B0cy5pdGVtQXJyYXkubGVuZ3RoIC0gMSkpIHsKIAkJCQkJb3B0cy5pdGVtQ3VycmVudCsrOwoJCQkJCV9jaGFuZ2VfaXRlbSgpOwoJCQkJCSQoZG9jdW1lbnQpLnVuYmluZCgia2V5ZG93biIpOwoJCQkJfQoJCQl9KTsKCgkJCWlmIChvcHRzLmNlbnRlck9uU2Nyb2xsKSB7CgkJCQkkKHdpbmRvdykuYmluZCgicmVzaXplIHNjcm9sbCIsICQuZm4uZmFuY3lib3guc2Nyb2xsQm94KTsKCQkJfSBlbHNlIHsKCQkJCSQoImRpdiNmYW5jeV9vdXRlciIpLmNzcygicG9zaXRpb24iLCAiYWJzb2x1dGUiKTsKCQkJfQoKCQkJaWYgKG9wdHMuaGlkZU9uQ29udGVudENsaWNrKSB7CgkJCQkkKCIjZmFuY3lfd3JhcCIpLmNsaWNrKCQuZm4uZmFuY3lib3guY2xvc2UpOwoJCQl9CgoJCQkkKCIjZmFuY3lfb3ZlcmxheSwgI2ZhbmN5X2Nsb3NlIikuYmluZCgiY2xpY2siLCAkLmZuLmZhbmN5Ym94LmNsb3NlKTsKCgkJCSQoIiNmYW5jeV9jbG9zZSIpLnNob3coKTsKCgkJCWlmIChvcHRzLml0ZW1BcnJheVsgb3B0cy5pdGVtQ3VycmVudCBdLnRpdGxlICE9PSB1bmRlZmluZWQgJiYgb3B0cy5pdGVtQXJyYXlbIG9wdHMuaXRlbUN1cnJlbnQgXS50aXRsZS5sZW5ndGggPiAwKSB7CgkJCQkkKCcjZmFuY3lfdGl0bGUgZGl2JykuaHRtbChvcHRzLml0ZW1BcnJheVsgb3B0cy5pdGVtQ3VycmVudCBdLnRpdGxlKTsKCQkJCSQoJyNmYW5jeV90aXRsZScpLnNob3coKTsKCQkJfQoKCQkJaWYgKG9wdHMub3ZlcmxheVNob3cgJiYgaXNJRSkgewoJCQkJJCgnZW1iZWQsIG9iamVjdCwgc2VsZWN0JywgJCgnI2ZhbmN5X2NvbnRlbnQnKSkuY3NzKCd2aXNpYmlsaXR5JywgJ3Zpc2libGUnKTsKCQkJfQoKCQkJaWYgKCQuaXNGdW5jdGlvbihvcHRzLmNhbGxiYWNrT25TaG93KSkgewoJCQkJb3B0cy5jYWxsYmFja09uU2hvdygpOwoJCQl9CgoJCQlidXN5ID0gZmFsc2U7CgkJfTsKCgkJcmV0dXJuIHRoaXMudW5iaW5kKCdjbGljaycpLmNsaWNrKF9pbml0aWFsaXplKTsKCX07CgoJJC5mbi5mYW5jeWJveC5zY3JvbGxCb3ggPSBmdW5jdGlvbigpIHsKCQl2YXIgcG9zID0gJC5mbi5mYW5jeWJveC5nZXRWaWV3cG9ydCgpOwoKCQkkKCIjZmFuY3lfb3V0ZXIiKS5jc3MoJ2xlZnQnLCAoKCQoIiNmYW5jeV9vdXRlciIpLndpZHRoKCkJKyAzNikgPiBwb3NbMF0gPyBwb3NbMl0gOiBwb3NbMl0gKyBNYXRoLnJvdW5kKChwb3NbMF0gLSAkKCIjZmFuY3lfb3V0ZXIiKS53aWR0aCgpCS0gMzYpCS8gMikpKTsKCQkkKCIjZmFuY3lfb3V0ZXIiKS5jc3MoJ3RvcCcsICAoKCQoIiNmYW5jeV9vdXRlciIpLmhlaWdodCgpCSsgNTApID4gcG9zWzFdID8gcG9zWzNdIDogcG9zWzNdICsgTWF0aC5yb3VuZCgocG9zWzFdIC0gJCgiI2ZhbmN5X291dGVyIikuaGVpZ2h0KCkJLSA1MCkJLyAyKSkpOwoJfTsKCgkkLmZuLmZhbmN5Ym94LmdldE51bWVyaWMgPSBmdW5jdGlvbihlbCwgcHJvcCkgewoJCXJldHVybiBwYXJzZUludCgkLmN1ckNTUyhlbC5qcXVlcnk/ZWxbMF06ZWwscHJvcCx0cnVlKSl8fDA7Cgl9OwoKCSQuZm4uZmFuY3lib3guZ2V0UG9zaXRpb24gPSBmdW5jdGlvbihlbCkgewoJCXZhciBwb3MgPSBlbC5vZmZzZXQoKTsKCgkJcG9zLnRvcAkrPSAkLmZuLmZhbmN5Ym94LmdldE51bWVyaWMoZWwsICdwYWRkaW5nVG9wJyk7CgkJcG9zLnRvcAkrPSAkLmZuLmZhbmN5Ym94LmdldE51bWVyaWMoZWwsICdib3JkZXJUb3BXaWR0aCcpOwoKCQlwb3MubGVmdCArPSAkLmZuLmZhbmN5Ym94LmdldE51bWVyaWMoZWwsICdwYWRkaW5nTGVmdCcpOwoJCXBvcy5sZWZ0ICs9ICQuZm4uZmFuY3lib3guZ2V0TnVtZXJpYyhlbCwgJ2JvcmRlckxlZnRXaWR0aCcpOwoKCQlyZXR1cm4gcG9zOwoJfTsKCgkkLmZuLmZhbmN5Ym94LnNob3dJZnJhbWUgPSBmdW5jdGlvbigpIHsKCQkkKCIuZmFuY3lfbG9hZGluZyIpLmhpZGUoKTsKCQkkKCIjZmFuY3lfZnJhbWUiKS5zaG93KCk7Cgl9OwoKCSQuZm4uZmFuY3lib3guZ2V0Vmlld3BvcnQgPSBmdW5jdGlvbigpIHsKCQlyZXR1cm4gWyQod2luZG93KS53aWR0aCgpLCAkKHdpbmRvdykuaGVpZ2h0KCksICQoZG9jdW1lbnQpLnNjcm9sbExlZnQoKSwgJChkb2N1bWVudCkuc2Nyb2xsVG9wKCkgXTsKCX07CgoJJC5mbi5mYW5jeWJveC5hbmltYXRlTG9hZGluZyA9IGZ1bmN0aW9uKCkgewoJCWlmICghJCgiI2ZhbmN5X2xvYWRpbmciKS5pcygnOnZpc2libGUnKSl7CgkJCWNsZWFySW50ZXJ2YWwobG9hZGluZ1RpbWVyKTsKCQkJcmV0dXJuOwoJCX0KCgkJJCgiI2ZhbmN5X2xvYWRpbmcgPiBkaXYiKS5jc3MoJ3RvcCcsIChsb2FkaW5nRnJhbWUgKiAtNDApICsgJ3B4Jyk7CgoJCWxvYWRpbmdGcmFtZSA9IChsb2FkaW5nRnJhbWUgKyAxKSAlIDEyOwoJfTsKCgkkLmZuLmZhbmN5Ym94LnNob3dMb2FkaW5nID0gZnVuY3Rpb24oKSB7CgkJY2xlYXJJbnRlcnZhbChsb2FkaW5nVGltZXIpOwoKCQl2YXIgcG9zID0gJC5mbi5mYW5jeWJveC5nZXRWaWV3cG9ydCgpOwoKCQkkKCIjZmFuY3lfbG9hZGluZyIpLmNzcyh7J2xlZnQnOiAoKHBvc1swXSAtIDQwKSAvIDIgKyBwb3NbMl0pLCAndG9wJzogKChwb3NbMV0gLSA0MCkgLyAyICsgcG9zWzNdKX0pLnNob3coKTsKCQkkKCIjZmFuY3lfbG9hZGluZyIpLmJpbmQoJ2NsaWNrJywgJC5mbi5mYW5jeWJveC5jbG9zZSk7CgoJCWxvYWRpbmdUaW1lciA9IHNldEludGVydmFsKCQuZm4uZmFuY3lib3guYW5pbWF0ZUxvYWRpbmcsIDY2KTsKCX07CgoJJC5mbi5mYW5jeWJveC5jbG9zZSA9IGZ1bmN0aW9uKCkgewoJCWJ1c3kgPSB0cnVlOwoKCQkkKGltYWdlUHJlbG9hZGVyKS51bmJpbmQoKTsKCgkJJCgiI2ZhbmN5X292ZXJsYXksICNmYW5jeV9jbG9zZSIpLnVuYmluZCgpOwoKCQlpZiAob3B0cy5oaWRlT25Db250ZW50Q2xpY2spIHsKCQkJJCgiI2ZhbmN5X3dyYXAiKS51bmJpbmQoKTsKCQl9CgoJCSQoIiNmYW5jeV9jbG9zZSwgLmZhbmN5X2xvYWRpbmcsICNmYW5jeV9sZWZ0LCAjZmFuY3lfcmlnaHQsICNmYW5jeV90aXRsZSIpLmhpZGUoKTsKCgkJaWYgKG9wdHMuY2VudGVyT25TY3JvbGwpIHsKCQkJJCh3aW5kb3cpLnVuYmluZCgicmVzaXplIHNjcm9sbCIpOwoJCX0KCgkJX19jbGVhbnVwID0gZnVuY3Rpb24oKSB7CgkJCSQoIiNmYW5jeV9vdmVybGF5LCAjZmFuY3lfb3V0ZXIiKS5oaWRlKCk7CgoJCQlpZiAob3B0cy5jZW50ZXJPblNjcm9sbCkgewoJCQkJJCh3aW5kb3cpLnVuYmluZCgicmVzaXplIHNjcm9sbCIpOwoJCQl9CgoJCQlpZiAoaXNJRSkgewoJCQkJJCgnZW1iZWQsIG9iamVjdCwgc2VsZWN0JykuY3NzKCd2aXNpYmlsaXR5JywgJ3Zpc2libGUnKTsKCQkJfQoKCQkJaWYgKCQuaXNGdW5jdGlvbihvcHRzLmNhbGxiYWNrT25DbG9zZSkpIHsKCQkJCW9wdHMuY2FsbGJhY2tPbkNsb3NlKCk7CgkJCX0KCgkJCWJ1c3kgPSBmYWxzZTsKCQl9OwoKCQlpZiAoJCgiI2ZhbmN5X291dGVyIikuaXMoIjp2aXNpYmxlIikgIT09IGZhbHNlKSB7CgkJCWlmIChvcHRzLnpvb21TcGVlZE91dCA+IDAgJiYgb3B0cy5pdGVtQXJyYXlbb3B0cy5pdGVtQ3VycmVudF0ub3JpZyAhPT0gdW5kZWZpbmVkKSB7CgkJCQl2YXIgb3JpZ19pdGVtCT0gb3B0cy5pdGVtQXJyYXlbb3B0cy5pdGVtQ3VycmVudF0ub3JpZzsKCQkJCXZhciBvcmlnX3Bvcwk9ICQuZm4uZmFuY3lib3guZ2V0UG9zaXRpb24ob3JpZ19pdGVtKTsKCgkJCQl2YXIgaXRlbU9wdHMgPSB7CgkJCQkJJ2xlZnQnOgkJKG9yaWdfcG9zLmxlZnQgLSAxOCkgKyAncHgnLAoJCQkJCSd0b3AnOiAJCShvcmlnX3Bvcy50b3AgIC0gMTgpICsgJ3B4JywKCQkJCQknd2lkdGgnOgkkKG9yaWdfaXRlbSkud2lkdGgoKSwKCQkJCQknaGVpZ2h0JzoJJChvcmlnX2l0ZW0pLmhlaWdodCgpCgkJCQl9OwoKCQkJCWlmIChvcHRzLnpvb21PcGFjaXR5KSB7CgkJCQkJaXRlbU9wdHMub3BhY2l0eSA9ICdoaWRlJzsKCQkJCX0KCgkJCQkkKCIjZmFuY3lfb3V0ZXIiKS5zdG9wKGZhbHNlLCB0cnVlKS5hbmltYXRlKGl0ZW1PcHRzLCBvcHRzLnpvb21TcGVlZE91dCwgb3B0cy5lYXNpbmdPdXQsIF9fY2xlYW51cCk7CgoJCQl9IGVsc2UgewoJCQkJJCgiI2ZhbmN5X291dGVyIikuc3RvcChmYWxzZSwgdHJ1ZSkuZmFkZU91dCgiZmFzdCIsIF9fY2xlYW51cCk7CgkJCX0KCgkJfSBlbHNlIHsKCQkJX19jbGVhbnVwKCk7CgkJfQoKCQlyZXR1cm4gZmFsc2U7Cgl9OwoKCSQuZm4uZmFuY3lib3guYnVpbGQgPSBmdW5jdGlvbigpIHsKCQl2YXIgaHRtbCA9ICcnOwoKCQlodG1sICs9ICc8ZGl2IGlkPSJmYW5jeV9vdmVybGF5Ij48L2Rpdj4nOwoKCQlodG1sICs9ICc8ZGl2IGlkPSJmYW5jeV93cmFwIj4nOwoKCQlodG1sICs9ICc8ZGl2IGNsYXNzPSJmYW5jeV9sb2FkaW5nIiBpZD0iZmFuY3lfbG9hZGluZyI+PGRpdj48L2Rpdj48L2Rpdj4nOwoKCQlodG1sICs9ICc8ZGl2IGlkPSJmYW5jeV9vdXRlciI+JzsKCgkJaHRtbCArPSAnPGRpdiBpZD0iZmFuY3lfaW5uZXIiPic7CgoJCWh0bWwgKz0gJzxkaXYgaWQ9ImZhbmN5X2Nsb3NlIj48L2Rpdj4nOwoKCQlodG1sICs9ICAnPGRpdiBpZD0iZmFuY3lfYmciPjxkaXYgY2xhc3M9ImZhbmN5X2JnIGZhbmN5X2JnX24iPjwvZGl2PjxkaXYgY2xhc3M9ImZhbmN5X2JnIGZhbmN5X2JnX25lIj48L2Rpdj48ZGl2IGNsYXNzPSJmYW5jeV9iZyBmYW5jeV9iZ19lIj48L2Rpdj48ZGl2IGNsYXNzPSJmYW5jeV9iZyBmYW5jeV9iZ19zZSI+PC9kaXY+PGRpdiBjbGFzcz0iZmFuY3lfYmcgZmFuY3lfYmdfcyI+PC9kaXY+PGRpdiBjbGFzcz0iZmFuY3lfYmcgZmFuY3lfYmdfc3ciPjwvZGl2PjxkaXYgY2xhc3M9ImZhbmN5X2JnIGZhbmN5X2JnX3ciPjwvZGl2PjxkaXYgY2xhc3M9ImZhbmN5X2JnIGZhbmN5X2JnX253Ij48L2Rpdj48L2Rpdj4nOwoKCQlodG1sICs9ICAnPGEgaHJlZj0iamF2YXNjcmlwdDo7IiBpZD0iZmFuY3lfbGVmdCI+PHNwYW4gY2xhc3M9ImZhbmN5X2ljbyIgaWQ9ImZhbmN5X2xlZnRfaWNvIj48L3NwYW4+PC9hPjxhIGhyZWY9ImphdmFzY3JpcHQ6OyIgaWQ9ImZhbmN5X3JpZ2h0Ij48c3BhbiBjbGFzcz0iZmFuY3lfaWNvIiBpZD0iZmFuY3lfcmlnaHRfaWNvIj48L3NwYW4+PC9hPic7CgoJCWh0bWwgKz0gJzxkaXYgaWQ9ImZhbmN5X2NvbnRlbnQiPjwvZGl2Pic7CgoJCWh0bWwgKz0gICc8ZGl2IGlkPSJmYW5jeV90aXRsZSI+PC9kaXY+JzsKCgkJaHRtbCArPSAnPC9kaXY+JzsKCgkJaHRtbCArPSAnPC9kaXY+JzsKCgkJaHRtbCArPSAnPC9kaXY+JzsKCgkJJChodG1sKS5hcHBlbmRUbygiYm9keSIpOwoKCQkkKCc8dGFibGUgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBib3JkZXI9IjAiPjx0cj48dGQgY2xhc3M9ImZhbmN5X3RpdGxlIiBpZD0iZmFuY3lfdGl0bGVfbGVmdCI+PC90ZD48dGQgY2xhc3M9ImZhbmN5X3RpdGxlIiBpZD0iZmFuY3lfdGl0bGVfbWFpbiI+PGRpdj48L2Rpdj48L3RkPjx0ZCBjbGFzcz0iZmFuY3lfdGl0bGUiIGlkPSJmYW5jeV90aXRsZV9yaWdodCI+PC90ZD48L3RyPjwvdGFibGU+JykuYXBwZW5kVG8oJyNmYW5jeV90aXRsZScpOwoKCQlpZiAoaXNJRSkgewoJCQkkKCIjZmFuY3lfaW5uZXIiKS5wcmVwZW5kKCc8aWZyYW1lIGNsYXNzPSJmYW5jeV9iaWdJZnJhbWUiIHNjcm9sbGluZz0ibm8iIGZyYW1lYm9yZGVyPSIwIj48L2lmcmFtZT4nKTsKCQkJJCgiI2ZhbmN5X2Nsb3NlLCAuZmFuY3lfYmcsIC5mYW5jeV90aXRsZSwgLmZhbmN5X2ljbyIpLmZpeFBORygpOwoJCX0KCX07CgoJJC5mbi5mYW5jeWJveC5kZWZhdWx0cyA9IHsKCQlwYWRkaW5nCQkJCToJMTAsCgkJaW1hZ2VTY2FsZQkJCToJdHJ1ZSwKCQl6b29tT3BhY2l0eQkJCToJZmFsc2UsCgkJem9vbVNwZWVkSW4JCQk6CTAsCgkJem9vbVNwZWVkT3V0CQk6CTAsCgkJem9vbVNwZWVkQ2hhbmdlCQk6CTMwMCwKCQllYXNpbmdJbgkJCToJJ3N3aW5nJywKCQllYXNpbmdPdXQJCQk6CSdzd2luZycsCgkJZWFzaW5nQ2hhbmdlCQk6CSdzd2luZycsCgkJZnJhbWVXaWR0aAkJCToJNDI1LAoJCWZyYW1lSGVpZ2h0CQkJOgkzNTUsCgkJb3ZlcmxheVNob3cJCQk6CXRydWUsCgkJb3ZlcmxheU9wYWNpdHkJCToJMC4zLAoJCWhpZGVPbkNvbnRlbnRDbGljawk6CXRydWUsCgkJY2VudGVyT25TY3JvbGwJCToJdHJ1ZSwKCQlpdGVtQXJyYXkJCQk6CVtdLAoJCWNhbGxiYWNrT25TdGFydAkJOgludWxsLAoJCWNhbGxiYWNrT25TaG93CQk6CW51bGwsCgkJY2FsbGJhY2tPbkNsb3NlCQk6CW51bGwKCX07CgoJJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKSB7CgkJJC5mbi5mYW5jeWJveC5idWlsZCgpOwoJfSk7Cgp9KShqUXVlcnkpOw==]]></data>
	</file>
	<file>
	  <filename>/templates/jquery/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/jquery/contract.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhEAALANUAAOfu8OXt8NTh5sHb477S2rrO1bPJ0LDJ1KTJ1anF0J3F0qG/yZy7xpe7ypm3wpC1w5O1wIuzw4+ywI+xvYiuvomtuoSrvH6ls3yktXWerHKdr2+aqnCaqG6ZqmqXqWSSo2aSomKRo1qLnViJmlKFmEp/kkJ5jP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEHACcALAAAAAAQAAsAAAZUwAOlESkajxHL4fQYIBTQqPRxOgUwCY12yw1UTwSJxEMukwnfamXRCbnflfR3wxDZ7R/5V3C5kP4kAnpfDhAjJSUOg2kcEyYgi2kAGRkAkWkGBYNBADs=]]></data>
	</file>
	<file>
	  <filename>/templates/jquery/expand.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhDAARANUAAPX4+fP2+O7z9e7z9unw8+jv8+Xt79/p7ODp7NLg5dHf5c/d4s3c4cLW3rfQ2azO2azM17LJ0bHI0J/G06nDzaTBy528yJe+zJ68yZi4xJi4w46xvYmwv4avvYatvYituYKsu4KpuISotYGmtH+msoClsnyktHyjsnegrnKcqm2arG6Zp2iVpWaUpmSSo2GPoF6OoFaImlaHmE6ClU2Bk0Z8j////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEHADYALAAAAAAMABEAAAZgwIJtSCzaGhiBsdi4eBTLYWMCUlEAy2m1dToYtaoW7CVhUsOw2KwUkJ7F6ppscXynZzNSygCGszQrDHVbLRsfIkRgJhUoEWYdFhkjCF8PDiEUUQ0QHAlRRxgDnzYEo0NBADs=]]></data>
	</file>
	<file>
	  <filename>/templates/jquery/jquery.easing.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoKICogalF1ZXJ5IEVhc2luZyB2MS4zIC0gaHR0cDovL2dzZ2QuY28udWsvc2FuZGJveC9qcXVlcnkvZWFzaW5nLwogKgogKiBVc2VzIHRoZSBidWlsdCBpbiBlYXNpbmcgY2FwYWJpbGl0aWVzIGFkZGVkIEluIGpRdWVyeSAxLjEKICogdG8gb2ZmZXIgbXVsdGlwbGUgZWFzaW5nIG9wdGlvbnMKICoKICogVEVSTVMgT0YgVVNFIC0galF1ZXJ5IEVhc2luZwogKiAKICogT3BlbiBzb3VyY2UgdW5kZXIgdGhlIEJTRCBMaWNlbnNlLiAKICogCiAqIENvcHlyaWdodCDCqSAyMDA4IEdlb3JnZSBNY0dpbmxleSBTbWl0aAogKiBBbGwgcmlnaHRzIHJlc2VydmVkLgogKiAKICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwgCiAqIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKICogCiAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIAogKiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCiAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IAogKiBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyAKICogcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgogKiAKICogTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgYXV0aG9yIG5vciB0aGUgbmFtZXMgb2YgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2UgCiAqIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCiAqIAogKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWSAKICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GCiAqIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQogKiAgQ09QWVJJR0hUIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAogKiAgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFCiAqICBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgCiAqIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCiAqICBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCAKICogT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICoKKi8KCi8vIHQ6IGN1cnJlbnQgdGltZSwgYjogYmVnSW5uSW5nIHZhbHVlLCBjOiBjaGFuZ2UgSW4gdmFsdWUsIGQ6IGR1cmF0aW9uCmpRdWVyeS5lYXNpbmdbJ2pzd2luZyddID0galF1ZXJ5LmVhc2luZ1snc3dpbmcnXTsKCmpRdWVyeS5leHRlbmQoIGpRdWVyeS5lYXNpbmcsCnsKCWRlZjogJ2Vhc2VPdXRRdWFkJywKCXN3aW5nOiBmdW5jdGlvbiAoeCwgdCwgYiwgYywgZCkgewoJCS8vYWxlcnQoalF1ZXJ5LmVhc2luZy5kZWZhdWx0KTsKCQlyZXR1cm4galF1ZXJ5LmVhc2luZ1tqUXVlcnkuZWFzaW5nLmRlZl0oeCwgdCwgYiwgYywgZCk7Cgl9LAoJZWFzZUluUXVhZDogZnVuY3Rpb24gKHgsIHQsIGIsIGMsIGQpIHsKCQlyZXR1cm4gYyoodC89ZCkqdCArIGI7Cgl9LAoJZWFzZU91dFF1YWQ6IGZ1bmN0aW9uICh4LCB0LCBiLCBjLCBkKSB7CgkJcmV0dXJuIC1jICoodC89ZCkqKHQtMikgKyBiOwoJfSwKCWVhc2VJbk91dFF1YWQ6IGZ1bmN0aW9uICh4LCB0LCBiLCBjLCBkKSB7CgkJaWYgKCh0Lz1kLzIpIDwgMSkgcmV0dXJuIGMvMip0KnQgKyBiOwoJCXJldHVybiAtYy8yICogKCgtLXQpKih0LTIpIC0gMSkgKyBiOwoJfSwKCWVhc2VJbkN1YmljOiBmdW5jdGlvbiAoeCwgdCwgYiwgYywgZCkgewoJCXJldHVybiBjKih0Lz1kKSp0KnQgKyBiOwoJfSwKCWVhc2VPdXRDdWJpYzogZnVuY3Rpb24gKHgsIHQsIGIsIGMsIGQpIHsKCQlyZXR1cm4gYyooKHQ9dC9kLTEpKnQqdCArIDEpICsgYjsKCX0sCgllYXNlSW5PdXRDdWJpYzogZnVuY3Rpb24gKHgsIHQsIGIsIGMsIGQpIHsKCQlpZiAoKHQvPWQvMikgPCAxKSByZXR1cm4gYy8yKnQqdCp0ICsgYjsKCQlyZXR1cm4gYy8yKigodC09MikqdCp0ICsgMikgKyBiOwoJfSwKCWVhc2VJblF1YXJ0OiBmdW5jdGlvbiAoeCwgdCwgYiwgYywgZCkgewoJCXJldHVybiBjKih0Lz1kKSp0KnQqdCArIGI7Cgl9LAoJZWFzZU91dFF1YXJ0OiBmdW5jdGlvbiAoeCwgdCwgYiwgYywgZCkgewoJCXJldHVybiAtYyAqICgodD10L2QtMSkqdCp0KnQgLSAxKSArIGI7Cgl9LAoJZWFzZUluT3V0UXVhcnQ6IGZ1bmN0aW9uICh4LCB0LCBiLCBjLCBkKSB7CgkJaWYgKCh0Lz1kLzIpIDwgMSkgcmV0dXJuIGMvMip0KnQqdCp0ICsgYjsKCQlyZXR1cm4gLWMvMiAqICgodC09MikqdCp0KnQgLSAyKSArIGI7Cgl9LAoJZWFzZUluUXVpbnQ6IGZ1bmN0aW9uICh4LCB0LCBiLCBjLCBkKSB7CgkJcmV0dXJuIGMqKHQvPWQpKnQqdCp0KnQgKyBiOwoJfSwKCWVhc2VPdXRRdWludDogZnVuY3Rpb24gKHgsIHQsIGIsIGMsIGQpIHsKCQlyZXR1cm4gYyooKHQ9dC9kLTEpKnQqdCp0KnQgKyAxKSArIGI7Cgl9LAoJZWFzZUluT3V0UXVpbnQ6IGZ1bmN0aW9uICh4LCB0LCBiLCBjLCBkKSB7CgkJaWYgKCh0Lz1kLzIpIDwgMSkgcmV0dXJuIGMvMip0KnQqdCp0KnQgKyBiOwoJCXJldHVybiBjLzIqKCh0LT0yKSp0KnQqdCp0ICsgMikgKyBiOwoJfSwKCWVhc2VJblNpbmU6IGZ1bmN0aW9uICh4LCB0LCBiLCBjLCBkKSB7CgkJcmV0dXJuIC1jICogTWF0aC5jb3ModC9kICogKE1hdGguUEkvMikpICsgYyArIGI7Cgl9LAoJZWFzZU91dFNpbmU6IGZ1bmN0aW9uICh4LCB0LCBiLCBjLCBkKSB7CgkJcmV0dXJuIGMgKiBNYXRoLnNpbih0L2QgKiAoTWF0aC5QSS8yKSkgKyBiOwoJfSwKCWVhc2VJbk91dFNpbmU6IGZ1bmN0aW9uICh4LCB0LCBiLCBjLCBkKSB7CgkJcmV0dXJuIC1jLzIgKiAoTWF0aC5jb3MoTWF0aC5QSSp0L2QpIC0gMSkgKyBiOwoJfSwKCWVhc2VJbkV4cG86IGZ1bmN0aW9uICh4LCB0LCBiLCBjLCBkKSB7CgkJcmV0dXJuICh0PT0wKSA/IGIgOiBjICogTWF0aC5wb3coMiwgMTAgKiAodC9kIC0gMSkpICsgYjsKCX0sCgllYXNlT3V0RXhwbzogZnVuY3Rpb24gKHgsIHQsIGIsIGMsIGQpIHsKCQlyZXR1cm4gKHQ9PWQpID8gYitjIDogYyAqICgtTWF0aC5wb3coMiwgLTEwICogdC9kKSArIDEpICsgYjsKCX0sCgllYXNlSW5PdXRFeHBvOiBmdW5jdGlvbiAoeCwgdCwgYiwgYywgZCkgewoJCWlmICh0PT0wKSByZXR1cm4gYjsKCQlpZiAodD09ZCkgcmV0dXJuIGIrYzsKCQlpZiAoKHQvPWQvMikgPCAxKSByZXR1cm4gYy8yICogTWF0aC5wb3coMiwgMTAgKiAodCAtIDEpKSArIGI7CgkJcmV0dXJuIGMvMiAqICgtTWF0aC5wb3coMiwgLTEwICogLS10KSArIDIpICsgYjsKCX0sCgllYXNlSW5DaXJjOiBmdW5jdGlvbiAoeCwgdCwgYiwgYywgZCkgewoJCXJldHVybiAtYyAqIChNYXRoLnNxcnQoMSAtICh0Lz1kKSp0KSAtIDEpICsgYjsKCX0sCgllYXNlT3V0Q2lyYzogZnVuY3Rpb24gKHgsIHQsIGIsIGMsIGQpIHsKCQlyZXR1cm4gYyAqIE1hdGguc3FydCgxIC0gKHQ9dC9kLTEpKnQpICsgYjsKCX0sCgllYXNlSW5PdXRDaXJjOiBmdW5jdGlvbiAoeCwgdCwgYiwgYywgZCkgewoJCWlmICgodC89ZC8yKSA8IDEpIHJldHVybiAtYy8yICogKE1hdGguc3FydCgxIC0gdCp0KSAtIDEpICsgYjsKCQlyZXR1cm4gYy8yICogKE1hdGguc3FydCgxIC0gKHQtPTIpKnQpICsgMSkgKyBiOwoJfSwKCWVhc2VJbkVsYXN0aWM6IGZ1bmN0aW9uICh4LCB0LCBiLCBjLCBkKSB7CgkJdmFyIHM9MS43MDE1ODt2YXIgcD0wO3ZhciBhPWM7CgkJaWYgKHQ9PTApIHJldHVybiBiOyAgaWYgKCh0Lz1kKT09MSkgcmV0dXJuIGIrYzsgIGlmICghcCkgcD1kKi4zOwoJCWlmIChhIDwgTWF0aC5hYnMoYykpIHsgYT1jOyB2YXIgcz1wLzQ7IH0KCQllbHNlIHZhciBzID0gcC8oMipNYXRoLlBJKSAqIE1hdGguYXNpbiAoYy9hKTsKCQlyZXR1cm4gLShhKk1hdGgucG93KDIsMTAqKHQtPTEpKSAqIE1hdGguc2luKCAodCpkLXMpKigyKk1hdGguUEkpL3AgKSkgKyBiOwoJfSwKCWVhc2VPdXRFbGFzdGljOiBmdW5jdGlvbiAoeCwgdCwgYiwgYywgZCkgewoJCXZhciBzPTEuNzAxNTg7dmFyIHA9MDt2YXIgYT1jOwoJCWlmICh0PT0wKSByZXR1cm4gYjsgIGlmICgodC89ZCk9PTEpIHJldHVybiBiK2M7ICBpZiAoIXApIHA9ZCouMzsKCQlpZiAoYSA8IE1hdGguYWJzKGMpKSB7IGE9YzsgdmFyIHM9cC80OyB9CgkJZWxzZSB2YXIgcyA9IHAvKDIqTWF0aC5QSSkgKiBNYXRoLmFzaW4gKGMvYSk7CgkJcmV0dXJuIGEqTWF0aC5wb3coMiwtMTAqdCkgKiBNYXRoLnNpbiggKHQqZC1zKSooMipNYXRoLlBJKS9wICkgKyBjICsgYjsKCX0sCgllYXNlSW5PdXRFbGFzdGljOiBmdW5jdGlvbiAoeCwgdCwgYiwgYywgZCkgewoJCXZhciBzPTEuNzAxNTg7dmFyIHA9MDt2YXIgYT1jOwoJCWlmICh0PT0wKSByZXR1cm4gYjsgIGlmICgodC89ZC8yKT09MikgcmV0dXJuIGIrYzsgIGlmICghcCkgcD1kKiguMyoxLjUpOwoJCWlmIChhIDwgTWF0aC5hYnMoYykpIHsgYT1jOyB2YXIgcz1wLzQ7IH0KCQllbHNlIHZhciBzID0gcC8oMipNYXRoLlBJKSAqIE1hdGguYXNpbiAoYy9hKTsKCQlpZiAodCA8IDEpIHJldHVybiAtLjUqKGEqTWF0aC5wb3coMiwxMCoodC09MSkpICogTWF0aC5zaW4oICh0KmQtcykqKDIqTWF0aC5QSSkvcCApKSArIGI7CgkJcmV0dXJuIGEqTWF0aC5wb3coMiwtMTAqKHQtPTEpKSAqIE1hdGguc2luKCAodCpkLXMpKigyKk1hdGguUEkpL3AgKSouNSArIGMgKyBiOwoJfSwKCWVhc2VJbkJhY2s6IGZ1bmN0aW9uICh4LCB0LCBiLCBjLCBkLCBzKSB7CgkJaWYgKHMgPT0gdW5kZWZpbmVkKSBzID0gMS43MDE1ODsKCQlyZXR1cm4gYyoodC89ZCkqdCooKHMrMSkqdCAtIHMpICsgYjsKCX0sCgllYXNlT3V0QmFjazogZnVuY3Rpb24gKHgsIHQsIGIsIGMsIGQsIHMpIHsKCQlpZiAocyA9PSB1bmRlZmluZWQpIHMgPSAxLjcwMTU4OwoJCXJldHVybiBjKigodD10L2QtMSkqdCooKHMrMSkqdCArIHMpICsgMSkgKyBiOwoJfSwKCWVhc2VJbk91dEJhY2s6IGZ1bmN0aW9uICh4LCB0LCBiLCBjLCBkLCBzKSB7CgkJaWYgKHMgPT0gdW5kZWZpbmVkKSBzID0gMS43MDE1ODsgCgkJaWYgKCh0Lz1kLzIpIDwgMSkgcmV0dXJuIGMvMioodCp0KigoKHMqPSgxLjUyNSkpKzEpKnQgLSBzKSkgKyBiOwoJCXJldHVybiBjLzIqKCh0LT0yKSp0KigoKHMqPSgxLjUyNSkpKzEpKnQgKyBzKSArIDIpICsgYjsKCX0sCgllYXNlSW5Cb3VuY2U6IGZ1bmN0aW9uICh4LCB0LCBiLCBjLCBkKSB7CgkJcmV0dXJuIGMgLSBqUXVlcnkuZWFzaW5nLmVhc2VPdXRCb3VuY2UgKHgsIGQtdCwgMCwgYywgZCkgKyBiOwoJfSwKCWVhc2VPdXRCb3VuY2U6IGZ1bmN0aW9uICh4LCB0LCBiLCBjLCBkKSB7CgkJaWYgKCh0Lz1kKSA8ICgxLzIuNzUpKSB7CgkJCXJldHVybiBjKig3LjU2MjUqdCp0KSArIGI7CgkJfSBlbHNlIGlmICh0IDwgKDIvMi43NSkpIHsKCQkJcmV0dXJuIGMqKDcuNTYyNSoodC09KDEuNS8yLjc1KSkqdCArIC43NSkgKyBiOwoJCX0gZWxzZSBpZiAodCA8ICgyLjUvMi43NSkpIHsKCQkJcmV0dXJuIGMqKDcuNTYyNSoodC09KDIuMjUvMi43NSkpKnQgKyAuOTM3NSkgKyBiOwoJCX0gZWxzZSB7CgkJCXJldHVybiBjKig3LjU2MjUqKHQtPSgyLjYyNS8yLjc1KSkqdCArIC45ODQzNzUpICsgYjsKCQl9Cgl9LAoJZWFzZUluT3V0Qm91bmNlOiBmdW5jdGlvbiAoeCwgdCwgYiwgYywgZCkgewoJCWlmICh0IDwgZC8yKSByZXR1cm4galF1ZXJ5LmVhc2luZy5lYXNlSW5Cb3VuY2UgKHgsIHQqMiwgMCwgYywgZCkgKiAuNSArIGI7CgkJcmV0dXJuIGpRdWVyeS5lYXNpbmcuZWFzZU91dEJvdW5jZSAoeCwgdCoyLWQsIDAsIGMsIGQpICogLjUgKyBjKi41ICsgYjsKCX0KfSk7CgovKgogKgogKiBURVJNUyBPRiBVU0UgLSBFQVNJTkcgRVFVQVRJT05TCiAqIAogKiBPcGVuIHNvdXJjZSB1bmRlciB0aGUgQlNEIExpY2Vuc2UuIAogKiAKICogQ29weXJpZ2h0IMKpIDIwMDEgUm9iZXJ0IFBlbm5lcgogKiBBbGwgcmlnaHRzIHJlc2VydmVkLgogKiAKICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwgCiAqIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKICogCiAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIAogKiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCiAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IAogKiBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyAKICogcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgogKiAKICogTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgYXV0aG9yIG5vciB0aGUgbmFtZXMgb2YgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2UgCiAqIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCiAqIAogKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWSAKICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GCiAqIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQogKiAgQ09QWVJJR0hUIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAogKiAgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFCiAqICBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgCiAqIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCiAqICBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCAKICogT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICoKICov]]></data>
	</file>
	<file>
	  <filename>/templates/jquery/jquery.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoKICogalF1ZXJ5IEphdmFTY3JpcHQgTGlicmFyeSB2MS4zLjIKICogaHR0cDovL2pxdWVyeS5jb20vCiAqCiAqIENvcHlyaWdodCAoYykgMjAwOSBKb2huIFJlc2lnCiAqIER1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBhbmQgR1BMIGxpY2Vuc2VzLgogKiBodHRwOi8vZG9jcy5qcXVlcnkuY29tL0xpY2Vuc2UKICoKICogRGF0ZTogMjAwOS0wMi0xOSAxNzozNDoyMSAtMDUwMCAoVGh1LCAxOSBGZWIgMjAwOSkKICogUmV2aXNpb246IDYyNDYKICovCihmdW5jdGlvbigpe3ZhciBsPXRoaXMsZyx5PWwualF1ZXJ5LHA9bC4kLG89bC5qUXVlcnk9bC4kPWZ1bmN0aW9uKEUsRil7cmV0dXJuIG5ldyBvLmZuLmluaXQoRSxGKX0sRD0vXltePF0qKDwoLnxccykrPilbXj5dKiR8XiMoW1x3LV0rKSQvLGY9L14uW146I1xbXC4sXSokLztvLmZuPW8ucHJvdG90eXBlPXtpbml0OmZ1bmN0aW9uKEUsSCl7RT1FfHxkb2N1bWVudDtpZihFLm5vZGVUeXBlKXt0aGlzWzBdPUU7dGhpcy5sZW5ndGg9MTt0aGlzLmNvbnRleHQ9RTtyZXR1cm4gdGhpc31pZih0eXBlb2YgRT09PSJzdHJpbmciKXt2YXIgRz1ELmV4ZWMoRSk7aWYoRyYmKEdbMV18fCFIKSl7aWYoR1sxXSl7RT1vLmNsZWFuKFtHWzFdXSxIKX1lbHNle3ZhciBJPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKEdbM10pO2lmKEkmJkkuaWQhPUdbM10pe3JldHVybiBvKCkuZmluZChFKX12YXIgRj1vKEl8fFtdKTtGLmNvbnRleHQ9ZG9jdW1lbnQ7Ri5zZWxlY3Rvcj1FO3JldHVybiBGfX1lbHNle3JldHVybiBvKEgpLmZpbmQoRSl9fWVsc2V7aWYoby5pc0Z1bmN0aW9uKEUpKXtyZXR1cm4gbyhkb2N1bWVudCkucmVhZHkoRSl9fWlmKEUuc2VsZWN0b3ImJkUuY29udGV4dCl7dGhpcy5zZWxlY3Rvcj1FLnNlbGVjdG9yO3RoaXMuY29udGV4dD1FLmNvbnRleHR9cmV0dXJuIHRoaXMuc2V0QXJyYXkoby5pc0FycmF5KEUpP0U6by5tYWtlQXJyYXkoRSkpfSxzZWxlY3RvcjoiIixqcXVlcnk6IjEuMy4yIixzaXplOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubGVuZ3RofSxnZXQ6ZnVuY3Rpb24oRSl7cmV0dXJuIEU9PT1nP0FycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHRoaXMpOnRoaXNbRV19LHB1c2hTdGFjazpmdW5jdGlvbihGLEgsRSl7dmFyIEc9byhGKTtHLnByZXZPYmplY3Q9dGhpcztHLmNvbnRleHQ9dGhpcy5jb250ZXh0O2lmKEg9PT0iZmluZCIpe0cuc2VsZWN0b3I9dGhpcy5zZWxlY3RvcisodGhpcy5zZWxlY3Rvcj8iICI6IiIpK0V9ZWxzZXtpZihIKXtHLnNlbGVjdG9yPXRoaXMuc2VsZWN0b3IrIi4iK0grIigiK0UrIikifX1yZXR1cm4gR30sc2V0QXJyYXk6ZnVuY3Rpb24oRSl7dGhpcy5sZW5ndGg9MDtBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseSh0aGlzLEUpO3JldHVybiB0aGlzfSxlYWNoOmZ1bmN0aW9uKEYsRSl7cmV0dXJuIG8uZWFjaCh0aGlzLEYsRSl9LGluZGV4OmZ1bmN0aW9uKEUpe3JldHVybiBvLmluQXJyYXkoRSYmRS5qcXVlcnk/RVswXTpFLHRoaXMpfSxhdHRyOmZ1bmN0aW9uKEYsSCxHKXt2YXIgRT1GO2lmKHR5cGVvZiBGPT09InN0cmluZyIpe2lmKEg9PT1nKXtyZXR1cm4gdGhpc1swXSYmb1tHfHwiYXR0ciJdKHRoaXNbMF0sRil9ZWxzZXtFPXt9O0VbRl09SH19cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihJKXtmb3IoRiBpbiBFKXtvLmF0dHIoRz90aGlzLnN0eWxlOnRoaXMsRixvLnByb3AodGhpcyxFW0ZdLEcsSSxGKSl9fSl9LGNzczpmdW5jdGlvbihFLEYpe2lmKChFPT0id2lkdGgifHxFPT0iaGVpZ2h0IikmJnBhcnNlRmxvYXQoRik8MCl7Rj1nfXJldHVybiB0aGlzLmF0dHIoRSxGLCJjdXJDU1MiKX0sdGV4dDpmdW5jdGlvbihGKXtpZih0eXBlb2YgRiE9PSJvYmplY3QiJiZGIT1udWxsKXtyZXR1cm4gdGhpcy5lbXB0eSgpLmFwcGVuZCgodGhpc1swXSYmdGhpc1swXS5vd25lckRvY3VtZW50fHxkb2N1bWVudCkuY3JlYXRlVGV4dE5vZGUoRikpfXZhciBFPSIiO28uZWFjaChGfHx0aGlzLGZ1bmN0aW9uKCl7by5lYWNoKHRoaXMuY2hpbGROb2RlcyxmdW5jdGlvbigpe2lmKHRoaXMubm9kZVR5cGUhPTgpe0UrPXRoaXMubm9kZVR5cGUhPTE/dGhpcy5ub2RlVmFsdWU6by5mbi50ZXh0KFt0aGlzXSl9fSl9KTtyZXR1cm4gRX0sd3JhcEFsbDpmdW5jdGlvbihFKXtpZih0aGlzWzBdKXt2YXIgRj1vKEUsdGhpc1swXS5vd25lckRvY3VtZW50KS5jbG9uZSgpO2lmKHRoaXNbMF0ucGFyZW50Tm9kZSl7Ri5pbnNlcnRCZWZvcmUodGhpc1swXSl9Ri5tYXAoZnVuY3Rpb24oKXt2YXIgRz10aGlzO3doaWxlKEcuZmlyc3RDaGlsZCl7Rz1HLmZpcnN0Q2hpbGR9cmV0dXJuIEd9KS5hcHBlbmQodGhpcyl9cmV0dXJuIHRoaXN9LHdyYXBJbm5lcjpmdW5jdGlvbihFKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7byh0aGlzKS5jb250ZW50cygpLndyYXBBbGwoRSl9KX0sd3JhcDpmdW5jdGlvbihFKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7byh0aGlzKS53cmFwQWxsKEUpfSl9LGFwcGVuZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRvbU1hbmlwKGFyZ3VtZW50cyx0cnVlLGZ1bmN0aW9uKEUpe2lmKHRoaXMubm9kZVR5cGU9PTEpe3RoaXMuYXBwZW5kQ2hpbGQoRSl9fSl9LHByZXBlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsdHJ1ZSxmdW5jdGlvbihFKXtpZih0aGlzLm5vZGVUeXBlPT0xKXt0aGlzLmluc2VydEJlZm9yZShFLHRoaXMuZmlyc3RDaGlsZCl9fSl9LGJlZm9yZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRvbU1hbmlwKGFyZ3VtZW50cyxmYWxzZSxmdW5jdGlvbihFKXt0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKEUsdGhpcyl9KX0sYWZ0ZXI6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsZmFsc2UsZnVuY3Rpb24oRSl7dGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShFLHRoaXMubmV4dFNpYmxpbmcpfSl9LGVuZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnByZXZPYmplY3R8fG8oW10pfSxwdXNoOltdLnB1c2gsc29ydDpbXS5zb3J0LHNwbGljZTpbXS5zcGxpY2UsZmluZDpmdW5jdGlvbihFKXtpZih0aGlzLmxlbmd0aD09PTEpe3ZhciBGPXRoaXMucHVzaFN0YWNrKFtdLCJmaW5kIixFKTtGLmxlbmd0aD0wO28uZmluZChFLHRoaXNbMF0sRik7cmV0dXJuIEZ9ZWxzZXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soby51bmlxdWUoby5tYXAodGhpcyxmdW5jdGlvbihHKXtyZXR1cm4gby5maW5kKEUsRyl9KSksImZpbmQiLEUpfX0sY2xvbmU6ZnVuY3Rpb24oRyl7dmFyIEU9dGhpcy5tYXAoZnVuY3Rpb24oKXtpZighby5zdXBwb3J0Lm5vQ2xvbmVFdmVudCYmIW8uaXNYTUxEb2ModGhpcykpe3ZhciBJPXRoaXMub3V0ZXJIVE1MO2lmKCFJKXt2YXIgSj10aGlzLm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Si5hcHBlbmRDaGlsZCh0aGlzLmNsb25lTm9kZSh0cnVlKSk7ST1KLmlubmVySFRNTH1yZXR1cm4gby5jbGVhbihbSS5yZXBsYWNlKC8galF1ZXJ5XGQrPSIoPzpcZCt8bnVsbCkiL2csIiIpLnJlcGxhY2UoL15ccyovLCIiKV0pWzBdfWVsc2V7cmV0dXJuIHRoaXMuY2xvbmVOb2RlKHRydWUpfX0pO2lmKEc9PT10cnVlKXt2YXIgSD10aGlzLmZpbmQoIioiKS5hbmRTZWxmKCksRj0wO0UuZmluZCgiKiIpLmFuZFNlbGYoKS5lYWNoKGZ1bmN0aW9uKCl7aWYodGhpcy5ub2RlTmFtZSE9PUhbRl0ubm9kZU5hbWUpe3JldHVybn12YXIgST1vLmRhdGEoSFtGXSwiZXZlbnRzIik7Zm9yKHZhciBLIGluIEkpe2Zvcih2YXIgSiBpbiBJW0tdKXtvLmV2ZW50LmFkZCh0aGlzLEssSVtLXVtKXSxJW0tdW0pdLmRhdGEpfX1GKyt9KX1yZXR1cm4gRX0sZmlsdGVyOmZ1bmN0aW9uKEUpe3JldHVybiB0aGlzLnB1c2hTdGFjayhvLmlzRnVuY3Rpb24oRSkmJm8uZ3JlcCh0aGlzLGZ1bmN0aW9uKEcsRil7cmV0dXJuIEUuY2FsbChHLEYpfSl8fG8ubXVsdGlGaWx0ZXIoRSxvLmdyZXAodGhpcyxmdW5jdGlvbihGKXtyZXR1cm4gRi5ub2RlVHlwZT09PTF9KSksImZpbHRlciIsRSl9LGNsb3Nlc3Q6ZnVuY3Rpb24oRSl7dmFyIEc9by5leHByLm1hdGNoLlBPUy50ZXN0KEUpP28oRSk6bnVsbCxGPTA7cmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uKCl7dmFyIEg9dGhpczt3aGlsZShIJiZILm93bmVyRG9jdW1lbnQpe2lmKEc/Ry5pbmRleChIKT4tMTpvKEgpLmlzKEUpKXtvLmRhdGEoSCwiY2xvc2VzdCIsRik7cmV0dXJuIEh9SD1ILnBhcmVudE5vZGU7RisrfX0pfSxub3Q6ZnVuY3Rpb24oRSl7aWYodHlwZW9mIEU9PT0ic3RyaW5nIil7aWYoZi50ZXN0KEUpKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soby5tdWx0aUZpbHRlcihFLHRoaXMsdHJ1ZSksIm5vdCIsRSl9ZWxzZXtFPW8ubXVsdGlGaWx0ZXIoRSx0aGlzKX19dmFyIEY9RS5sZW5ndGgmJkVbRS5sZW5ndGgtMV0hPT1nJiYhRS5ub2RlVHlwZTtyZXR1cm4gdGhpcy5maWx0ZXIoZnVuY3Rpb24oKXtyZXR1cm4gRj9vLmluQXJyYXkodGhpcyxFKTwwOnRoaXMhPUV9KX0sYWRkOmZ1bmN0aW9uKEUpe3JldHVybiB0aGlzLnB1c2hTdGFjayhvLnVuaXF1ZShvLm1lcmdlKHRoaXMuZ2V0KCksdHlwZW9mIEU9PT0ic3RyaW5nIj9vKEUpOm8ubWFrZUFycmF5KEUpKSkpfSxpczpmdW5jdGlvbihFKXtyZXR1cm4gISFFJiZvLm11bHRpRmlsdGVyKEUsdGhpcykubGVuZ3RoPjB9LGhhc0NsYXNzOmZ1bmN0aW9uKEUpe3JldHVybiAhIUUmJnRoaXMuaXMoIi4iK0UpfSx2YWw6ZnVuY3Rpb24oSyl7aWYoSz09PWcpe3ZhciBFPXRoaXNbMF07aWYoRSl7aWYoby5ub2RlTmFtZShFLCJvcHRpb24iKSl7cmV0dXJuKEUuYXR0cmlidXRlcy52YWx1ZXx8e30pLnNwZWNpZmllZD9FLnZhbHVlOkUudGV4dH1pZihvLm5vZGVOYW1lKEUsInNlbGVjdCIpKXt2YXIgST1FLnNlbGVjdGVkSW5kZXgsTD1bXSxNPUUub3B0aW9ucyxIPUUudHlwZT09InNlbGVjdC1vbmUiO2lmKEk8MCl7cmV0dXJuIG51bGx9Zm9yKHZhciBGPUg/STowLEo9SD9JKzE6TS5sZW5ndGg7RjxKO0YrKyl7dmFyIEc9TVtGXTtpZihHLnNlbGVjdGVkKXtLPW8oRykudmFsKCk7aWYoSCl7cmV0dXJuIEt9TC5wdXNoKEspfX1yZXR1cm4gTH1yZXR1cm4oRS52YWx1ZXx8IiIpLnJlcGxhY2UoL1xyL2csIiIpfXJldHVybiBnfWlmKHR5cGVvZiBLPT09Im51bWJlciIpe0srPSIifXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtpZih0aGlzLm5vZGVUeXBlIT0xKXtyZXR1cm59aWYoby5pc0FycmF5KEspJiYvcmFkaW98Y2hlY2tib3gvLnRlc3QodGhpcy50eXBlKSl7dGhpcy5jaGVja2VkPShvLmluQXJyYXkodGhpcy52YWx1ZSxLKT49MHx8by5pbkFycmF5KHRoaXMubmFtZSxLKT49MCl9ZWxzZXtpZihvLm5vZGVOYW1lKHRoaXMsInNlbGVjdCIpKXt2YXIgTj1vLm1ha2VBcnJheShLKTtvKCJvcHRpb24iLHRoaXMpLmVhY2goZnVuY3Rpb24oKXt0aGlzLnNlbGVjdGVkPShvLmluQXJyYXkodGhpcy52YWx1ZSxOKT49MHx8by5pbkFycmF5KHRoaXMudGV4dCxOKT49MCl9KTtpZighTi5sZW5ndGgpe3RoaXMuc2VsZWN0ZWRJbmRleD0tMX19ZWxzZXt0aGlzLnZhbHVlPUt9fX0pfSxodG1sOmZ1bmN0aW9uKEUpe3JldHVybiBFPT09Zz8odGhpc1swXT90aGlzWzBdLmlubmVySFRNTC5yZXBsYWNlKC8galF1ZXJ5XGQrPSIoPzpcZCt8bnVsbCkiL2csIiIpOm51bGwpOnRoaXMuZW1wdHkoKS5hcHBlbmQoRSl9LHJlcGxhY2VXaXRoOmZ1bmN0aW9uKEUpe3JldHVybiB0aGlzLmFmdGVyKEUpLnJlbW92ZSgpfSxlcTpmdW5jdGlvbihFKXtyZXR1cm4gdGhpcy5zbGljZShFLCtFKzEpfSxzbGljZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnB1c2hTdGFjayhBcnJheS5wcm90b3R5cGUuc2xpY2UuYXBwbHkodGhpcyxhcmd1bWVudHMpLCJzbGljZSIsQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKS5qb2luKCIsIikpfSxtYXA6ZnVuY3Rpb24oRSl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKG8ubWFwKHRoaXMsZnVuY3Rpb24oRyxGKXtyZXR1cm4gRS5jYWxsKEcsRixHKX0pKX0sYW5kU2VsZjpmdW5jdGlvbigpe3JldHVybiB0aGlzLmFkZCh0aGlzLnByZXZPYmplY3QpfSxkb21NYW5pcDpmdW5jdGlvbihKLE0sTCl7aWYodGhpc1swXSl7dmFyIEk9KHRoaXNbMF0ub3duZXJEb2N1bWVudHx8dGhpc1swXSkuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpLEY9by5jbGVhbihKLCh0aGlzWzBdLm93bmVyRG9jdW1lbnR8fHRoaXNbMF0pLEkpLEg9SS5maXJzdENoaWxkO2lmKEgpe2Zvcih2YXIgRz0wLEU9dGhpcy5sZW5ndGg7RzxFO0crKyl7TC5jYWxsKEsodGhpc1tHXSxIKSx0aGlzLmxlbmd0aD4xfHxHPjA/SS5jbG9uZU5vZGUodHJ1ZSk6SSl9fWlmKEYpe28uZWFjaChGLHopfX1yZXR1cm4gdGhpcztmdW5jdGlvbiBLKE4sTyl7cmV0dXJuIE0mJm8ubm9kZU5hbWUoTiwidGFibGUiKSYmby5ub2RlTmFtZShPLCJ0ciIpPyhOLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0Ym9keSIpWzBdfHxOLmFwcGVuZENoaWxkKE4ub3duZXJEb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0Ym9keSIpKSk6Tn19fTtvLmZuLmluaXQucHJvdG90eXBlPW8uZm47ZnVuY3Rpb24geihFLEYpe2lmKEYuc3JjKXtvLmFqYXgoe3VybDpGLnNyYyxhc3luYzpmYWxzZSxkYXRhVHlwZToic2NyaXB0In0pfWVsc2V7by5nbG9iYWxFdmFsKEYudGV4dHx8Ri50ZXh0Q29udGVudHx8Ri5pbm5lckhUTUx8fCIiKX1pZihGLnBhcmVudE5vZGUpe0YucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChGKX19ZnVuY3Rpb24gZSgpe3JldHVybiArbmV3IERhdGV9by5leHRlbmQ9by5mbi5leHRlbmQ9ZnVuY3Rpb24oKXt2YXIgSj1hcmd1bWVudHNbMF18fHt9LEg9MSxJPWFyZ3VtZW50cy5sZW5ndGgsRT1mYWxzZSxHO2lmKHR5cGVvZiBKPT09ImJvb2xlYW4iKXtFPUo7Sj1hcmd1bWVudHNbMV18fHt9O0g9Mn1pZih0eXBlb2YgSiE9PSJvYmplY3QiJiYhby5pc0Z1bmN0aW9uKEopKXtKPXt9fWlmKEk9PUgpe0o9dGhpczstLUh9Zm9yKDtIPEk7SCsrKXtpZigoRz1hcmd1bWVudHNbSF0pIT1udWxsKXtmb3IodmFyIEYgaW4gRyl7dmFyIEs9SltGXSxMPUdbRl07aWYoSj09PUwpe2NvbnRpbnVlfWlmKEUmJkwmJnR5cGVvZiBMPT09Im9iamVjdCImJiFMLm5vZGVUeXBlKXtKW0ZdPW8uZXh0ZW5kKEUsS3x8KEwubGVuZ3RoIT1udWxsP1tdOnt9KSxMKX1lbHNle2lmKEwhPT1nKXtKW0ZdPUx9fX19fXJldHVybiBKfTt2YXIgYj0vei0/aW5kZXh8Zm9udC0/d2VpZ2h0fG9wYWNpdHl8em9vbXxsaW5lLT9oZWlnaHQvaSxxPWRvY3VtZW50LmRlZmF1bHRWaWV3fHx7fSxzPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7by5leHRlbmQoe25vQ29uZmxpY3Q6ZnVuY3Rpb24oRSl7bC4kPXA7aWYoRSl7bC5qUXVlcnk9eX1yZXR1cm4gb30saXNGdW5jdGlvbjpmdW5jdGlvbihFKXtyZXR1cm4gcy5jYWxsKEUpPT09IltvYmplY3QgRnVuY3Rpb25dIn0saXNBcnJheTpmdW5jdGlvbihFKXtyZXR1cm4gcy5jYWxsKEUpPT09IltvYmplY3QgQXJyYXldIn0saXNYTUxEb2M6ZnVuY3Rpb24oRSl7cmV0dXJuIEUubm9kZVR5cGU9PT05JiZFLmRvY3VtZW50RWxlbWVudC5ub2RlTmFtZSE9PSJIVE1MInx8ISFFLm93bmVyRG9jdW1lbnQmJm8uaXNYTUxEb2MoRS5vd25lckRvY3VtZW50KX0sZ2xvYmFsRXZhbDpmdW5jdGlvbihHKXtpZihHJiYvXFMvLnRlc3QoRykpe3ZhciBGPWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF18fGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxFPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpO0UudHlwZT0idGV4dC9qYXZhc2NyaXB0IjtpZihvLnN1cHBvcnQuc2NyaXB0RXZhbCl7RS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShHKSl9ZWxzZXtFLnRleHQ9R31GLmluc2VydEJlZm9yZShFLEYuZmlyc3RDaGlsZCk7Ri5yZW1vdmVDaGlsZChFKX19LG5vZGVOYW1lOmZ1bmN0aW9uKEYsRSl7cmV0dXJuIEYubm9kZU5hbWUmJkYubm9kZU5hbWUudG9VcHBlckNhc2UoKT09RS50b1VwcGVyQ2FzZSgpfSxlYWNoOmZ1bmN0aW9uKEcsSyxGKXt2YXIgRSxIPTAsST1HLmxlbmd0aDtpZihGKXtpZihJPT09Zyl7Zm9yKEUgaW4gRyl7aWYoSy5hcHBseShHW0VdLEYpPT09ZmFsc2Upe2JyZWFrfX19ZWxzZXtmb3IoO0g8STspe2lmKEsuYXBwbHkoR1tIKytdLEYpPT09ZmFsc2Upe2JyZWFrfX19fWVsc2V7aWYoST09PWcpe2ZvcihFIGluIEcpe2lmKEsuY2FsbChHW0VdLEUsR1tFXSk9PT1mYWxzZSl7YnJlYWt9fX1lbHNle2Zvcih2YXIgSj1HWzBdO0g8SSYmSy5jYWxsKEosSCxKKSE9PWZhbHNlO0o9R1srK0hdKXt9fX1yZXR1cm4gR30scHJvcDpmdW5jdGlvbihILEksRyxGLEUpe2lmKG8uaXNGdW5jdGlvbihJKSl7ST1JLmNhbGwoSCxGKX1yZXR1cm4gdHlwZW9mIEk9PT0ibnVtYmVyIiYmRz09ImN1ckNTUyImJiFiLnRlc3QoRSk/SSsicHgiOkl9LGNsYXNzTmFtZTp7YWRkOmZ1bmN0aW9uKEUsRil7by5lYWNoKChGfHwiIikuc3BsaXQoL1xzKy8pLGZ1bmN0aW9uKEcsSCl7aWYoRS5ub2RlVHlwZT09MSYmIW8uY2xhc3NOYW1lLmhhcyhFLmNsYXNzTmFtZSxIKSl7RS5jbGFzc05hbWUrPShFLmNsYXNzTmFtZT8iICI6IiIpK0h9fSl9LHJlbW92ZTpmdW5jdGlvbihFLEYpe2lmKEUubm9kZVR5cGU9PTEpe0UuY2xhc3NOYW1lPUYhPT1nP28uZ3JlcChFLmNsYXNzTmFtZS5zcGxpdCgvXHMrLyksZnVuY3Rpb24oRyl7cmV0dXJuICFvLmNsYXNzTmFtZS5oYXMoRixHKX0pLmpvaW4oIiAiKToiIn19LGhhczpmdW5jdGlvbihGLEUpe3JldHVybiBGJiZvLmluQXJyYXkoRSwoRi5jbGFzc05hbWV8fEYpLnRvU3RyaW5nKCkuc3BsaXQoL1xzKy8pKT4tMX19LHN3YXA6ZnVuY3Rpb24oSCxHLEkpe3ZhciBFPXt9O2Zvcih2YXIgRiBpbiBHKXtFW0ZdPUguc3R5bGVbRl07SC5zdHlsZVtGXT1HW0ZdfUkuY2FsbChIKTtmb3IodmFyIEYgaW4gRyl7SC5zdHlsZVtGXT1FW0ZdfX0sY3NzOmZ1bmN0aW9uKEgsRixKLEUpe2lmKEY9PSJ3aWR0aCJ8fEY9PSJoZWlnaHQiKXt2YXIgTCxHPXtwb3NpdGlvbjoiYWJzb2x1dGUiLHZpc2liaWxpdHk6ImhpZGRlbiIsZGlzcGxheToiYmxvY2sifSxLPUY9PSJ3aWR0aCI/WyJMZWZ0IiwiUmlnaHQiXTpbIlRvcCIsIkJvdHRvbSJdO2Z1bmN0aW9uIEkoKXtMPUY9PSJ3aWR0aCI/SC5vZmZzZXRXaWR0aDpILm9mZnNldEhlaWdodDtpZihFPT09ImJvcmRlciIpe3JldHVybn1vLmVhY2goSyxmdW5jdGlvbigpe2lmKCFFKXtMLT1wYXJzZUZsb2F0KG8uY3VyQ1NTKEgsInBhZGRpbmciK3RoaXMsdHJ1ZSkpfHwwfWlmKEU9PT0ibWFyZ2luIil7TCs9cGFyc2VGbG9hdChvLmN1ckNTUyhILCJtYXJnaW4iK3RoaXMsdHJ1ZSkpfHwwfWVsc2V7TC09cGFyc2VGbG9hdChvLmN1ckNTUyhILCJib3JkZXIiK3RoaXMrIldpZHRoIix0cnVlKSl8fDB9fSl9aWYoSC5vZmZzZXRXaWR0aCE9PTApe0koKX1lbHNle28uc3dhcChILEcsSSl9cmV0dXJuIE1hdGgubWF4KDAsTWF0aC5yb3VuZChMKSl9cmV0dXJuIG8uY3VyQ1NTKEgsRixKKX0sY3VyQ1NTOmZ1bmN0aW9uKEksRixHKXt2YXIgTCxFPUkuc3R5bGU7aWYoRj09Im9wYWNpdHkiJiYhby5zdXBwb3J0Lm9wYWNpdHkpe0w9by5hdHRyKEUsIm9wYWNpdHkiKTtyZXR1cm4gTD09IiI/IjEiOkx9aWYoRi5tYXRjaCgvZmxvYXQvaSkpe0Y9d31pZighRyYmRSYmRVtGXSl7TD1FW0ZdfWVsc2V7aWYocS5nZXRDb21wdXRlZFN0eWxlKXtpZihGLm1hdGNoKC9mbG9hdC9pKSl7Rj0iZmxvYXQifUY9Ri5yZXBsYWNlKC8oW0EtWl0pL2csIi0kMSIpLnRvTG93ZXJDYXNlKCk7dmFyIE09cS5nZXRDb21wdXRlZFN0eWxlKEksbnVsbCk7aWYoTSl7TD1NLmdldFByb3BlcnR5VmFsdWUoRil9aWYoRj09Im9wYWNpdHkiJiZMPT0iIil7TD0iMSJ9fWVsc2V7aWYoSS5jdXJyZW50U3R5bGUpe3ZhciBKPUYucmVwbGFjZSgvXC0oXHcpL2csZnVuY3Rpb24oTixPKXtyZXR1cm4gTy50b1VwcGVyQ2FzZSgpfSk7TD1JLmN1cnJlbnRTdHlsZVtGXXx8SS5jdXJyZW50U3R5bGVbSl07aWYoIS9eXGQrKHB4KT8kL2kudGVzdChMKSYmL15cZC8udGVzdChMKSl7dmFyIEg9RS5sZWZ0LEs9SS5ydW50aW1lU3R5bGUubGVmdDtJLnJ1bnRpbWVTdHlsZS5sZWZ0PUkuY3VycmVudFN0eWxlLmxlZnQ7RS5sZWZ0PUx8fDA7TD1FLnBpeGVsTGVmdCsicHgiO0UubGVmdD1IO0kucnVudGltZVN0eWxlLmxlZnQ9S319fX1yZXR1cm4gTH0sY2xlYW46ZnVuY3Rpb24oRixLLEkpe0s9S3x8ZG9jdW1lbnQ7aWYodHlwZW9mIEsuY3JlYXRlRWxlbWVudD09PSJ1bmRlZmluZWQiKXtLPUsub3duZXJEb2N1bWVudHx8S1swXSYmS1swXS5vd25lckRvY3VtZW50fHxkb2N1bWVudH1pZighSSYmRi5sZW5ndGg9PT0xJiZ0eXBlb2YgRlswXT09PSJzdHJpbmciKXt2YXIgSD0vXjwoXHcrKVxzKlwvPz4kLy5leGVjKEZbMF0pO2lmKEgpe3JldHVybltLLmNyZWF0ZUVsZW1lbnQoSFsxXSldfX12YXIgRz1bXSxFPVtdLEw9Sy5jcmVhdGVFbGVtZW50KCJkaXYiKTtvLmVhY2goRixmdW5jdGlvbihQLFMpe2lmKHR5cGVvZiBTPT09Im51bWJlciIpe1MrPSIifWlmKCFTKXtyZXR1cm59aWYodHlwZW9mIFM9PT0ic3RyaW5nIil7Uz1TLnJlcGxhY2UoLyg8KFx3KylbXj5dKj8pXC8+L2csZnVuY3Rpb24oVSxWLFQpe3JldHVybiBULm1hdGNoKC9eKGFiYnJ8YnJ8Y29sfGltZ3xpbnB1dHxsaW5rfG1ldGF8cGFyYW18aHJ8YXJlYXxlbWJlZCkkL2kpP1U6VisiPjwvIitUKyI+In0pO3ZhciBPPVMucmVwbGFjZSgvXlxzKy8sIiIpLnN1YnN0cmluZygwLDEwKS50b0xvd2VyQ2FzZSgpO3ZhciBRPSFPLmluZGV4T2YoIjxvcHQiKSYmWzEsIjxzZWxlY3QgbXVsdGlwbGU9J211bHRpcGxlJz4iLCI8L3NlbGVjdD4iXXx8IU8uaW5kZXhPZigiPGxlZyIpJiZbMSwiPGZpZWxkc2V0PiIsIjwvZmllbGRzZXQ+Il18fE8ubWF0Y2goL148KHRoZWFkfHRib2R5fHRmb290fGNvbGd8Y2FwKS8pJiZbMSwiPHRhYmxlPiIsIjwvdGFibGU+Il18fCFPLmluZGV4T2YoIjx0ciIpJiZbMiwiPHRhYmxlPjx0Ym9keT4iLCI8L3Rib2R5PjwvdGFibGU+Il18fCghTy5pbmRleE9mKCI8dGQiKXx8IU8uaW5kZXhPZigiPHRoIikpJiZbMywiPHRhYmxlPjx0Ym9keT48dHI+IiwiPC90cj48L3Rib2R5PjwvdGFibGU+Il18fCFPLmluZGV4T2YoIjxjb2wiKSYmWzIsIjx0YWJsZT48dGJvZHk+PC90Ym9keT48Y29sZ3JvdXA+IiwiPC9jb2xncm91cD48L3RhYmxlPiJdfHwhby5zdXBwb3J0Lmh0bWxTZXJpYWxpemUmJlsxLCJkaXY8ZGl2PiIsIjwvZGl2PiJdfHxbMCwiIiwiIl07TC5pbm5lckhUTUw9UVsxXStTK1FbMl07d2hpbGUoUVswXS0tKXtMPUwubGFzdENoaWxkfWlmKCFvLnN1cHBvcnQudGJvZHkpe3ZhciBSPS88dGJvZHkvaS50ZXN0KFMpLE49IU8uaW5kZXhPZigiPHRhYmxlIikmJiFSP0wuZmlyc3RDaGlsZCYmTC5maXJzdENoaWxkLmNoaWxkTm9kZXM6UVsxXT09Ijx0YWJsZT4iJiYhUj9MLmNoaWxkTm9kZXM6W107Zm9yKHZhciBNPU4ubGVuZ3RoLTE7TT49MDstLU0pe2lmKG8ubm9kZU5hbWUoTltNXSwidGJvZHkiKSYmIU5bTV0uY2hpbGROb2Rlcy5sZW5ndGgpe05bTV0ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChOW01dKX19fWlmKCFvLnN1cHBvcnQubGVhZGluZ1doaXRlc3BhY2UmJi9eXHMvLnRlc3QoUykpe0wuaW5zZXJ0QmVmb3JlKEsuY3JlYXRlVGV4dE5vZGUoUy5tYXRjaCgvXlxzKi8pWzBdKSxMLmZpcnN0Q2hpbGQpfVM9by5tYWtlQXJyYXkoTC5jaGlsZE5vZGVzKX1pZihTLm5vZGVUeXBlKXtHLnB1c2goUyl9ZWxzZXtHPW8ubWVyZ2UoRyxTKX19KTtpZihJKXtmb3IodmFyIEo9MDtHW0pdO0orKyl7aWYoby5ub2RlTmFtZShHW0pdLCJzY3JpcHQiKSYmKCFHW0pdLnR5cGV8fEdbSl0udHlwZS50b0xvd2VyQ2FzZSgpPT09InRleHQvamF2YXNjcmlwdCIpKXtFLnB1c2goR1tKXS5wYXJlbnROb2RlP0dbSl0ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChHW0pdKTpHW0pdKX1lbHNle2lmKEdbSl0ubm9kZVR5cGU9PT0xKXtHLnNwbGljZS5hcHBseShHLFtKKzEsMF0uY29uY2F0KG8ubWFrZUFycmF5KEdbSl0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoInNjcmlwdCIpKSkpfUkuYXBwZW5kQ2hpbGQoR1tKXSl9fXJldHVybiBFfXJldHVybiBHfSxhdHRyOmZ1bmN0aW9uKEosRyxLKXtpZighSnx8Si5ub2RlVHlwZT09M3x8Si5ub2RlVHlwZT09OCl7cmV0dXJuIGd9dmFyIEg9IW8uaXNYTUxEb2MoSiksTD1LIT09ZztHPUgmJm8ucHJvcHNbR118fEc7aWYoSi50YWdOYW1lKXt2YXIgRj0vaHJlZnxzcmN8c3R5bGUvLnRlc3QoRyk7aWYoRz09InNlbGVjdGVkIiYmSi5wYXJlbnROb2RlKXtKLnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleH1pZihHIGluIEomJkgmJiFGKXtpZihMKXtpZihHPT0idHlwZSImJm8ubm9kZU5hbWUoSiwiaW5wdXQiKSYmSi5wYXJlbnROb2RlKXt0aHJvdyJ0eXBlIHByb3BlcnR5IGNhbid0IGJlIGNoYW5nZWQifUpbR109S31pZihvLm5vZGVOYW1lKEosImZvcm0iKSYmSi5nZXRBdHRyaWJ1dGVOb2RlKEcpKXtyZXR1cm4gSi5nZXRBdHRyaWJ1dGVOb2RlKEcpLm5vZGVWYWx1ZX1pZihHPT0idGFiSW5kZXgiKXt2YXIgST1KLmdldEF0dHJpYnV0ZU5vZGUoInRhYkluZGV4Iik7cmV0dXJuIEkmJkkuc3BlY2lmaWVkP0kudmFsdWU6Si5ub2RlTmFtZS5tYXRjaCgvKGJ1dHRvbnxpbnB1dHxvYmplY3R8c2VsZWN0fHRleHRhcmVhKS9pKT8wOkoubm9kZU5hbWUubWF0Y2goL14oYXxhcmVhKSQvaSkmJkouaHJlZj8wOmd9cmV0dXJuIEpbR119aWYoIW8uc3VwcG9ydC5zdHlsZSYmSCYmRz09InN0eWxlIil7cmV0dXJuIG8uYXR0cihKLnN0eWxlLCJjc3NUZXh0IixLKX1pZihMKXtKLnNldEF0dHJpYnV0ZShHLCIiK0spfXZhciBFPSFvLnN1cHBvcnQuaHJlZk5vcm1hbGl6ZWQmJkgmJkY/Si5nZXRBdHRyaWJ1dGUoRywyKTpKLmdldEF0dHJpYnV0ZShHKTtyZXR1cm4gRT09PW51bGw/ZzpFfWlmKCFvLnN1cHBvcnQub3BhY2l0eSYmRz09Im9wYWNpdHkiKXtpZihMKXtKLnpvb209MTtKLmZpbHRlcj0oSi5maWx0ZXJ8fCIiKS5yZXBsYWNlKC9hbHBoYVwoW14pXSpcKS8sIiIpKyhwYXJzZUludChLKSsiIj09Ik5hTiI/IiI6ImFscGhhKG9wYWNpdHk9IitLKjEwMCsiKSIpfXJldHVybiBKLmZpbHRlciYmSi5maWx0ZXIuaW5kZXhPZigib3BhY2l0eT0iKT49MD8ocGFyc2VGbG9hdChKLmZpbHRlci5tYXRjaCgvb3BhY2l0eT0oW14pXSopLylbMV0pLzEwMCkrIiI6IiJ9Rz1HLnJlcGxhY2UoLy0oW2Etel0pL2lnLGZ1bmN0aW9uKE0sTil7cmV0dXJuIE4udG9VcHBlckNhc2UoKX0pO2lmKEwpe0pbR109S31yZXR1cm4gSltHXX0sdHJpbTpmdW5jdGlvbihFKXtyZXR1cm4oRXx8IiIpLnJlcGxhY2UoL15ccyt8XHMrJC9nLCIiKX0sbWFrZUFycmF5OmZ1bmN0aW9uKEcpe3ZhciBFPVtdO2lmKEchPW51bGwpe3ZhciBGPUcubGVuZ3RoO2lmKEY9PW51bGx8fHR5cGVvZiBHPT09InN0cmluZyJ8fG8uaXNGdW5jdGlvbihHKXx8Ry5zZXRJbnRlcnZhbCl7RVswXT1HfWVsc2V7d2hpbGUoRil7RVstLUZdPUdbRl19fX1yZXR1cm4gRX0saW5BcnJheTpmdW5jdGlvbihHLEgpe2Zvcih2YXIgRT0wLEY9SC5sZW5ndGg7RTxGO0UrKyl7aWYoSFtFXT09PUcpe3JldHVybiBFfX1yZXR1cm4gLTF9LG1lcmdlOmZ1bmN0aW9uKEgsRSl7dmFyIEY9MCxHLEk9SC5sZW5ndGg7aWYoIW8uc3VwcG9ydC5nZXRBbGwpe3doaWxlKChHPUVbRisrXSkhPW51bGwpe2lmKEcubm9kZVR5cGUhPTgpe0hbSSsrXT1HfX19ZWxzZXt3aGlsZSgoRz1FW0YrK10pIT1udWxsKXtIW0krK109R319cmV0dXJuIEh9LHVuaXF1ZTpmdW5jdGlvbihLKXt2YXIgRj1bXSxFPXt9O3RyeXtmb3IodmFyIEc9MCxIPUsubGVuZ3RoO0c8SDtHKyspe3ZhciBKPW8uZGF0YShLW0ddKTtpZighRVtKXSl7RVtKXT10cnVlO0YucHVzaChLW0ddKX19fWNhdGNoKEkpe0Y9S31yZXR1cm4gRn0sZ3JlcDpmdW5jdGlvbihGLEosRSl7dmFyIEc9W107Zm9yKHZhciBIPTAsST1GLmxlbmd0aDtIPEk7SCsrKXtpZighRSE9IUooRltIXSxIKSl7Ry5wdXNoKEZbSF0pfX1yZXR1cm4gR30sbWFwOmZ1bmN0aW9uKEUsSil7dmFyIEY9W107Zm9yKHZhciBHPTAsSD1FLmxlbmd0aDtHPEg7RysrKXt2YXIgST1KKEVbR10sRyk7aWYoSSE9bnVsbCl7RltGLmxlbmd0aF09SX19cmV0dXJuIEYuY29uY2F0LmFwcGx5KFtdLEYpfX0pO3ZhciBDPW5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKTtvLmJyb3dzZXI9e3ZlcnNpb246KEMubWF0Y2goLy4rKD86cnZ8aXR8cmF8aWUpW1wvOiBdKFtcZC5dKykvKXx8WzAsIjAiXSlbMV0sc2FmYXJpOi93ZWJraXQvLnRlc3QoQyksb3BlcmE6L29wZXJhLy50ZXN0KEMpLG1zaWU6L21zaWUvLnRlc3QoQykmJiEvb3BlcmEvLnRlc3QoQyksbW96aWxsYTovbW96aWxsYS8udGVzdChDKSYmIS8oY29tcGF0aWJsZXx3ZWJraXQpLy50ZXN0KEMpfTtvLmVhY2goe3BhcmVudDpmdW5jdGlvbihFKXtyZXR1cm4gRS5wYXJlbnROb2RlfSxwYXJlbnRzOmZ1bmN0aW9uKEUpe3JldHVybiBvLmRpcihFLCJwYXJlbnROb2RlIil9LG5leHQ6ZnVuY3Rpb24oRSl7cmV0dXJuIG8ubnRoKEUsMiwibmV4dFNpYmxpbmciKX0scHJldjpmdW5jdGlvbihFKXtyZXR1cm4gby5udGgoRSwyLCJwcmV2aW91c1NpYmxpbmciKX0sbmV4dEFsbDpmdW5jdGlvbihFKXtyZXR1cm4gby5kaXIoRSwibmV4dFNpYmxpbmciKX0scHJldkFsbDpmdW5jdGlvbihFKXtyZXR1cm4gby5kaXIoRSwicHJldmlvdXNTaWJsaW5nIil9LHNpYmxpbmdzOmZ1bmN0aW9uKEUpe3JldHVybiBvLnNpYmxpbmcoRS5wYXJlbnROb2RlLmZpcnN0Q2hpbGQsRSl9LGNoaWxkcmVuOmZ1bmN0aW9uKEUpe3JldHVybiBvLnNpYmxpbmcoRS5maXJzdENoaWxkKX0sY29udGVudHM6ZnVuY3Rpb24oRSl7cmV0dXJuIG8ubm9kZU5hbWUoRSwiaWZyYW1lIik/RS5jb250ZW50RG9jdW1lbnR8fEUuY29udGVudFdpbmRvdy5kb2N1bWVudDpvLm1ha2VBcnJheShFLmNoaWxkTm9kZXMpfX0sZnVuY3Rpb24oRSxGKXtvLmZuW0VdPWZ1bmN0aW9uKEcpe3ZhciBIPW8ubWFwKHRoaXMsRik7aWYoRyYmdHlwZW9mIEc9PSJzdHJpbmciKXtIPW8ubXVsdGlGaWx0ZXIoRyxIKX1yZXR1cm4gdGhpcy5wdXNoU3RhY2soby51bmlxdWUoSCksRSxHKX19KTtvLmVhY2goe2FwcGVuZFRvOiJhcHBlbmQiLHByZXBlbmRUbzoicHJlcGVuZCIsaW5zZXJ0QmVmb3JlOiJiZWZvcmUiLGluc2VydEFmdGVyOiJhZnRlciIscmVwbGFjZUFsbDoicmVwbGFjZVdpdGgifSxmdW5jdGlvbihFLEYpe28uZm5bRV09ZnVuY3Rpb24oRyl7dmFyIEo9W10sTD1vKEcpO2Zvcih2YXIgSz0wLEg9TC5sZW5ndGg7SzxIO0srKyl7dmFyIEk9KEs+MD90aGlzLmNsb25lKHRydWUpOnRoaXMpLmdldCgpO28uZm5bRl0uYXBwbHkobyhMW0tdKSxJKTtKPUouY29uY2F0KEkpfXJldHVybiB0aGlzLnB1c2hTdGFjayhKLEUsRyl9fSk7by5lYWNoKHtyZW1vdmVBdHRyOmZ1bmN0aW9uKEUpe28uYXR0cih0aGlzLEUsIiIpO2lmKHRoaXMubm9kZVR5cGU9PTEpe3RoaXMucmVtb3ZlQXR0cmlidXRlKEUpfX0sYWRkQ2xhc3M6ZnVuY3Rpb24oRSl7by5jbGFzc05hbWUuYWRkKHRoaXMsRSl9LHJlbW92ZUNsYXNzOmZ1bmN0aW9uKEUpe28uY2xhc3NOYW1lLnJlbW92ZSh0aGlzLEUpfSx0b2dnbGVDbGFzczpmdW5jdGlvbihGLEUpe2lmKHR5cGVvZiBFIT09ImJvb2xlYW4iKXtFPSFvLmNsYXNzTmFtZS5oYXModGhpcyxGKX1vLmNsYXNzTmFtZVtFPyJhZGQiOiJyZW1vdmUiXSh0aGlzLEYpfSxyZW1vdmU6ZnVuY3Rpb24oRSl7aWYoIUV8fG8uZmlsdGVyKEUsW3RoaXNdKS5sZW5ndGgpe28oIioiLHRoaXMpLmFkZChbdGhpc10pLmVhY2goZnVuY3Rpb24oKXtvLmV2ZW50LnJlbW92ZSh0aGlzKTtvLnJlbW92ZURhdGEodGhpcyl9KTtpZih0aGlzLnBhcmVudE5vZGUpe3RoaXMucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzKX19fSxlbXB0eTpmdW5jdGlvbigpe28odGhpcykuY2hpbGRyZW4oKS5yZW1vdmUoKTt3aGlsZSh0aGlzLmZpcnN0Q2hpbGQpe3RoaXMucmVtb3ZlQ2hpbGQodGhpcy5maXJzdENoaWxkKX19fSxmdW5jdGlvbihFLEYpe28uZm5bRV09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lYWNoKEYsYXJndW1lbnRzKX19KTtmdW5jdGlvbiBqKEUsRil7cmV0dXJuIEVbMF0mJnBhcnNlSW50KG8uY3VyQ1NTKEVbMF0sRix0cnVlKSwxMCl8fDB9dmFyIGg9ImpRdWVyeSIrZSgpLHY9MCxBPXt9O28uZXh0ZW5kKHtjYWNoZTp7fSxkYXRhOmZ1bmN0aW9uKEYsRSxHKXtGPUY9PWw/QTpGO3ZhciBIPUZbaF07aWYoIUgpe0g9RltoXT0rK3Z9aWYoRSYmIW8uY2FjaGVbSF0pe28uY2FjaGVbSF09e319aWYoRyE9PWcpe28uY2FjaGVbSF1bRV09R31yZXR1cm4gRT9vLmNhY2hlW0hdW0VdOkh9LHJlbW92ZURhdGE6ZnVuY3Rpb24oRixFKXtGPUY9PWw/QTpGO3ZhciBIPUZbaF07aWYoRSl7aWYoby5jYWNoZVtIXSl7ZGVsZXRlIG8uY2FjaGVbSF1bRV07RT0iIjtmb3IoRSBpbiBvLmNhY2hlW0hdKXticmVha31pZighRSl7by5yZW1vdmVEYXRhKEYpfX19ZWxzZXt0cnl7ZGVsZXRlIEZbaF19Y2F0Y2goRyl7aWYoRi5yZW1vdmVBdHRyaWJ1dGUpe0YucmVtb3ZlQXR0cmlidXRlKGgpfX1kZWxldGUgby5jYWNoZVtIXX19LHF1ZXVlOmZ1bmN0aW9uKEYsRSxIKXtpZihGKXtFPShFfHwiZngiKSsicXVldWUiO3ZhciBHPW8uZGF0YShGLEUpO2lmKCFHfHxvLmlzQXJyYXkoSCkpe0c9by5kYXRhKEYsRSxvLm1ha2VBcnJheShIKSl9ZWxzZXtpZihIKXtHLnB1c2goSCl9fX1yZXR1cm4gR30sZGVxdWV1ZTpmdW5jdGlvbihILEcpe3ZhciBFPW8ucXVldWUoSCxHKSxGPUUuc2hpZnQoKTtpZighR3x8Rz09PSJmeCIpe0Y9RVswXX1pZihGIT09Zyl7Ri5jYWxsKEgpfX19KTtvLmZuLmV4dGVuZCh7ZGF0YTpmdW5jdGlvbihFLEcpe3ZhciBIPUUuc3BsaXQoIi4iKTtIWzFdPUhbMV0/Ii4iK0hbMV06IiI7aWYoRz09PWcpe3ZhciBGPXRoaXMudHJpZ2dlckhhbmRsZXIoImdldERhdGEiK0hbMV0rIiEiLFtIWzBdXSk7aWYoRj09PWcmJnRoaXMubGVuZ3RoKXtGPW8uZGF0YSh0aGlzWzBdLEUpfXJldHVybiBGPT09ZyYmSFsxXT90aGlzLmRhdGEoSFswXSk6Rn1lbHNle3JldHVybiB0aGlzLnRyaWdnZXIoInNldERhdGEiK0hbMV0rIiEiLFtIWzBdLEddKS5lYWNoKGZ1bmN0aW9uKCl7by5kYXRhKHRoaXMsRSxHKX0pfX0scmVtb3ZlRGF0YTpmdW5jdGlvbihFKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7by5yZW1vdmVEYXRhKHRoaXMsRSl9KX0scXVldWU6ZnVuY3Rpb24oRSxGKXtpZih0eXBlb2YgRSE9PSJzdHJpbmciKXtGPUU7RT0iZngifWlmKEY9PT1nKXtyZXR1cm4gby5xdWV1ZSh0aGlzWzBdLEUpfXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgRz1vLnF1ZXVlKHRoaXMsRSxGKTtpZihFPT0iZngiJiZHLmxlbmd0aD09MSl7R1swXS5jYWxsKHRoaXMpfX0pfSxkZXF1ZXVlOmZ1bmN0aW9uKEUpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtvLmRlcXVldWUodGhpcyxFKX0pfX0pOwovKgogKiBTaXp6bGUgQ1NTIFNlbGVjdG9yIEVuZ2luZSAtIHYwLjkuMwogKiAgQ29weXJpZ2h0IDIwMDksIFRoZSBEb2pvIEZvdW5kYXRpb24KICogIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQsIEJTRCwgYW5kIEdQTCBMaWNlbnNlcy4KICogIE1vcmUgaW5mb3JtYXRpb246IGh0dHA6Ly9zaXp6bGVqcy5jb20vCiAqLwooZnVuY3Rpb24oKXt2YXIgUj0vKCg/OlwoKD86XChbXigpXStcKXxbXigpXSspK1wpfFxbKD86XFtbXltcXV0qXF18WyciXVteJyJdKlsnIl18W15bXF0nIl0rKStcXXxcXC58W14gPit+LChcW1xcXSspK3xbPit+XSkoXHMqLFxzKik/L2csTD0wLEg9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZzt2YXIgRj1mdW5jdGlvbihZLFUsYWIsYWMpe2FiPWFifHxbXTtVPVV8fGRvY3VtZW50O2lmKFUubm9kZVR5cGUhPT0xJiZVLm5vZGVUeXBlIT09OSl7cmV0dXJuW119aWYoIVl8fHR5cGVvZiBZIT09InN0cmluZyIpe3JldHVybiBhYn12YXIgWj1bXSxXLGFmLGFpLFQsYWQsVixYPXRydWU7Ui5sYXN0SW5kZXg9MDt3aGlsZSgoVz1SLmV4ZWMoWSkpIT09bnVsbCl7Wi5wdXNoKFdbMV0pO2lmKFdbMl0pe1Y9UmVnRXhwLnJpZ2h0Q29udGV4dDticmVha319aWYoWi5sZW5ndGg+MSYmTS5leGVjKFkpKXtpZihaLmxlbmd0aD09PTImJkkucmVsYXRpdmVbWlswXV0pe2FmPUooWlswXStaWzFdLFUpfWVsc2V7YWY9SS5yZWxhdGl2ZVtaWzBdXT9bVV06RihaLnNoaWZ0KCksVSk7d2hpbGUoWi5sZW5ndGgpe1k9Wi5zaGlmdCgpO2lmKEkucmVsYXRpdmVbWV0pe1krPVouc2hpZnQoKX1hZj1KKFksYWYpfX19ZWxzZXt2YXIgYWU9YWM/e2V4cHI6Wi5wb3AoKSxzZXQ6RShhYyl9OkYuZmluZChaLnBvcCgpLFoubGVuZ3RoPT09MSYmVS5wYXJlbnROb2RlP1UucGFyZW50Tm9kZTpVLFEoVSkpO2FmPUYuZmlsdGVyKGFlLmV4cHIsYWUuc2V0KTtpZihaLmxlbmd0aD4wKXthaT1FKGFmKX1lbHNle1g9ZmFsc2V9d2hpbGUoWi5sZW5ndGgpe3ZhciBhaD1aLnBvcCgpLGFnPWFoO2lmKCFJLnJlbGF0aXZlW2FoXSl7YWg9IiJ9ZWxzZXthZz1aLnBvcCgpfWlmKGFnPT1udWxsKXthZz1VfUkucmVsYXRpdmVbYWhdKGFpLGFnLFEoVSkpfX1pZighYWkpe2FpPWFmfWlmKCFhaSl7dGhyb3ciU3ludGF4IGVycm9yLCB1bnJlY29nbml6ZWQgZXhwcmVzc2lvbjogIisoYWh8fFkpfWlmKEguY2FsbChhaSk9PT0iW29iamVjdCBBcnJheV0iKXtpZighWCl7YWIucHVzaC5hcHBseShhYixhaSl9ZWxzZXtpZihVLm5vZGVUeXBlPT09MSl7Zm9yKHZhciBhYT0wO2FpW2FhXSE9bnVsbDthYSsrKXtpZihhaVthYV0mJihhaVthYV09PT10cnVlfHxhaVthYV0ubm9kZVR5cGU9PT0xJiZLKFUsYWlbYWFdKSkpe2FiLnB1c2goYWZbYWFdKX19fWVsc2V7Zm9yKHZhciBhYT0wO2FpW2FhXSE9bnVsbDthYSsrKXtpZihhaVthYV0mJmFpW2FhXS5ub2RlVHlwZT09PTEpe2FiLnB1c2goYWZbYWFdKX19fX19ZWxzZXtFKGFpLGFiKX1pZihWKXtGKFYsVSxhYixhYyk7aWYoRyl7aGFzRHVwbGljYXRlPWZhbHNlO2FiLnNvcnQoRyk7aWYoaGFzRHVwbGljYXRlKXtmb3IodmFyIGFhPTE7YWE8YWIubGVuZ3RoO2FhKyspe2lmKGFiW2FhXT09PWFiW2FhLTFdKXthYi5zcGxpY2UoYWEtLSwxKX19fX19cmV0dXJuIGFifTtGLm1hdGNoZXM9ZnVuY3Rpb24oVCxVKXtyZXR1cm4gRihULG51bGwsbnVsbCxVKX07Ri5maW5kPWZ1bmN0aW9uKGFhLFQsYWIpe3ZhciBaLFg7aWYoIWFhKXtyZXR1cm5bXX1mb3IodmFyIFc9MCxWPUkub3JkZXIubGVuZ3RoO1c8VjtXKyspe3ZhciBZPUkub3JkZXJbV10sWDtpZigoWD1JLm1hdGNoW1ldLmV4ZWMoYWEpKSl7dmFyIFU9UmVnRXhwLmxlZnRDb250ZXh0O2lmKFUuc3Vic3RyKFUubGVuZ3RoLTEpIT09IlxcIil7WFsxXT0oWFsxXXx8IiIpLnJlcGxhY2UoL1xcL2csIiIpO1o9SS5maW5kW1ldKFgsVCxhYik7aWYoWiE9bnVsbCl7YWE9YWEucmVwbGFjZShJLm1hdGNoW1ldLCIiKTticmVha319fX1pZighWil7Wj1ULmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIil9cmV0dXJue3NldDpaLGV4cHI6YWF9fTtGLmZpbHRlcj1mdW5jdGlvbihhZCxhYyxhZyxXKXt2YXIgVj1hZCxhaT1bXSxhYT1hYyxZLFQsWj1hYyYmYWNbMF0mJlEoYWNbMF0pO3doaWxlKGFkJiZhYy5sZW5ndGgpe2Zvcih2YXIgYWIgaW4gSS5maWx0ZXIpe2lmKChZPUkubWF0Y2hbYWJdLmV4ZWMoYWQpKSE9bnVsbCl7dmFyIFU9SS5maWx0ZXJbYWJdLGFoLGFmO1Q9ZmFsc2U7aWYoYWE9PWFpKXthaT1bXX1pZihJLnByZUZpbHRlclthYl0pe1k9SS5wcmVGaWx0ZXJbYWJdKFksYWEsYWcsYWksVyxaKTtpZighWSl7VD1haD10cnVlfWVsc2V7aWYoWT09PXRydWUpe2NvbnRpbnVlfX19aWYoWSl7Zm9yKHZhciBYPTA7KGFmPWFhW1hdKSE9bnVsbDtYKyspe2lmKGFmKXthaD1VKGFmLFksWCxhYSk7dmFyIGFlPVdeISFhaDtpZihhZyYmYWghPW51bGwpe2lmKGFlKXtUPXRydWV9ZWxzZXthYVtYXT1mYWxzZX19ZWxzZXtpZihhZSl7YWkucHVzaChhZik7VD10cnVlfX19fX1pZihhaCE9PWcpe2lmKCFhZyl7YWE9YWl9YWQ9YWQucmVwbGFjZShJLm1hdGNoW2FiXSwiIik7aWYoIVQpe3JldHVybltdfWJyZWFrfX19aWYoYWQ9PVYpe2lmKFQ9PW51bGwpe3Rocm93IlN5bnRheCBlcnJvciwgdW5yZWNvZ25pemVkIGV4cHJlc3Npb246ICIrYWR9ZWxzZXticmVha319Vj1hZH1yZXR1cm4gYWF9O3ZhciBJPUYuc2VsZWN0b3JzPXtvcmRlcjpbIklEIiwiTkFNRSIsIlRBRyJdLG1hdGNoOntJRDovIygoPzpbXHdcdTAwYzAtXHVGRkZGXy1dfFxcLikrKS8sQ0xBU1M6L1wuKCg/Oltcd1x1MDBjMC1cdUZGRkZfLV18XFwuKSspLyxOQU1FOi9cW25hbWU9WyciXSooKD86W1x3XHUwMGMwLVx1RkZGRl8tXXxcXC4pKylbJyJdKlxdLyxBVFRSOi9cW1xzKigoPzpbXHdcdTAwYzAtXHVGRkZGXy1dfFxcLikrKVxzKig/OihcUz89KVxzKihbJyJdKikoLio/KVwzfClccypcXS8sVEFHOi9eKCg/Oltcd1x1MDBjMC1cdUZGRkZcKl8tXXxcXC4pKykvLENISUxEOi86KG9ubHl8bnRofGxhc3R8Zmlyc3QpLWNoaWxkKD86XCgoZXZlbnxvZGR8W1xkbistXSopXCkpPy8sUE9TOi86KG50aHxlcXxndHxsdHxmaXJzdHxsYXN0fGV2ZW58b2RkKSg/OlwoKFxkKilcKSk/KD89W14tXXwkKS8sUFNFVURPOi86KCg/Oltcd1x1MDBjMC1cdUZGRkZfLV18XFwuKSspKD86XCgoWyciXSopKCg/OlwoW15cKV0rXCl8W15cMlwoXCldKikrKVwyXCkpPy99LGF0dHJNYXA6eyJjbGFzcyI6ImNsYXNzTmFtZSIsImZvciI6Imh0bWxGb3IifSxhdHRySGFuZGxlOntocmVmOmZ1bmN0aW9uKFQpe3JldHVybiBULmdldEF0dHJpYnV0ZSgiaHJlZiIpfX0scmVsYXRpdmU6eyIrIjpmdW5jdGlvbihhYSxULFope3ZhciBYPXR5cGVvZiBUPT09InN0cmluZyIsYWI9WCYmIS9cVy8udGVzdChUKSxZPVgmJiFhYjtpZihhYiYmIVope1Q9VC50b1VwcGVyQ2FzZSgpfWZvcih2YXIgVz0wLFY9YWEubGVuZ3RoLFU7VzxWO1crKyl7aWYoKFU9YWFbV10pKXt3aGlsZSgoVT1VLnByZXZpb3VzU2libGluZykmJlUubm9kZVR5cGUhPT0xKXt9YWFbV109WXx8VSYmVS5ub2RlTmFtZT09PVQ/VXx8ZmFsc2U6VT09PVR9fWlmKFkpe0YuZmlsdGVyKFQsYWEsdHJ1ZSl9fSwiPiI6ZnVuY3Rpb24oWixVLGFhKXt2YXIgWD10eXBlb2YgVT09PSJzdHJpbmciO2lmKFgmJiEvXFcvLnRlc3QoVSkpe1U9YWE/VTpVLnRvVXBwZXJDYXNlKCk7Zm9yKHZhciBWPTAsVD1aLmxlbmd0aDtWPFQ7VisrKXt2YXIgWT1aW1ZdO2lmKFkpe3ZhciBXPVkucGFyZW50Tm9kZTtaW1ZdPVcubm9kZU5hbWU9PT1VP1c6ZmFsc2V9fX1lbHNle2Zvcih2YXIgVj0wLFQ9Wi5sZW5ndGg7VjxUO1YrKyl7dmFyIFk9WltWXTtpZihZKXtaW1ZdPVg/WS5wYXJlbnROb2RlOlkucGFyZW50Tm9kZT09PVV9fWlmKFgpe0YuZmlsdGVyKFUsWix0cnVlKX19fSwiIjpmdW5jdGlvbihXLFUsWSl7dmFyIFY9TCsrLFQ9UztpZighVS5tYXRjaCgvXFcvKSl7dmFyIFg9VT1ZP1U6VS50b1VwcGVyQ2FzZSgpO1Q9UH1UKCJwYXJlbnROb2RlIixVLFYsVyxYLFkpfSwifiI6ZnVuY3Rpb24oVyxVLFkpe3ZhciBWPUwrKyxUPVM7aWYodHlwZW9mIFU9PT0ic3RyaW5nIiYmIVUubWF0Y2goL1xXLykpe3ZhciBYPVU9WT9VOlUudG9VcHBlckNhc2UoKTtUPVB9VCgicHJldmlvdXNTaWJsaW5nIixVLFYsVyxYLFkpfX0sZmluZDp7SUQ6ZnVuY3Rpb24oVSxWLFcpe2lmKHR5cGVvZiBWLmdldEVsZW1lbnRCeUlkIT09InVuZGVmaW5lZCImJiFXKXt2YXIgVD1WLmdldEVsZW1lbnRCeUlkKFVbMV0pO3JldHVybiBUP1tUXTpbXX19LE5BTUU6ZnVuY3Rpb24oVixZLFope2lmKHR5cGVvZiBZLmdldEVsZW1lbnRzQnlOYW1lIT09InVuZGVmaW5lZCIpe3ZhciBVPVtdLFg9WS5nZXRFbGVtZW50c0J5TmFtZShWWzFdKTtmb3IodmFyIFc9MCxUPVgubGVuZ3RoO1c8VDtXKyspe2lmKFhbV10uZ2V0QXR0cmlidXRlKCJuYW1lIik9PT1WWzFdKXtVLnB1c2goWFtXXSl9fXJldHVybiBVLmxlbmd0aD09PTA/bnVsbDpVfX0sVEFHOmZ1bmN0aW9uKFQsVSl7cmV0dXJuIFUuZ2V0RWxlbWVudHNCeVRhZ05hbWUoVFsxXSl9fSxwcmVGaWx0ZXI6e0NMQVNTOmZ1bmN0aW9uKFcsVSxWLFQsWixhYSl7Vz0iICIrV1sxXS5yZXBsYWNlKC9cXC9nLCIiKSsiICI7aWYoYWEpe3JldHVybiBXfWZvcih2YXIgWD0wLFk7KFk9VVtYXSkhPW51bGw7WCsrKXtpZihZKXtpZihaXihZLmNsYXNzTmFtZSYmKCIgIitZLmNsYXNzTmFtZSsiICIpLmluZGV4T2YoVyk+PTApKXtpZighVil7VC5wdXNoKFkpfX1lbHNle2lmKFYpe1VbWF09ZmFsc2V9fX19cmV0dXJuIGZhbHNlfSxJRDpmdW5jdGlvbihUKXtyZXR1cm4gVFsxXS5yZXBsYWNlKC9cXC9nLCIiKX0sVEFHOmZ1bmN0aW9uKFUsVCl7Zm9yKHZhciBWPTA7VFtWXT09PWZhbHNlO1YrKyl7fXJldHVybiBUW1ZdJiZRKFRbVl0pP1VbMV06VVsxXS50b1VwcGVyQ2FzZSgpfSxDSElMRDpmdW5jdGlvbihUKXtpZihUWzFdPT0ibnRoIil7dmFyIFU9LygtPykoXGQqKW4oKD86XCt8LSk/XGQqKS8uZXhlYyhUWzJdPT0iZXZlbiImJiIybiJ8fFRbMl09PSJvZGQiJiYiMm4rMSJ8fCEvXEQvLnRlc3QoVFsyXSkmJiIwbisiK1RbMl18fFRbMl0pO1RbMl09KFVbMV0rKFVbMl18fDEpKS0wO1RbM109VVszXS0wfVRbMF09TCsrO3JldHVybiBUfSxBVFRSOmZ1bmN0aW9uKFgsVSxWLFQsWSxaKXt2YXIgVz1YWzFdLnJlcGxhY2UoL1xcL2csIiIpO2lmKCFaJiZJLmF0dHJNYXBbV10pe1hbMV09SS5hdHRyTWFwW1ddfWlmKFhbMl09PT0ifj0iKXtYWzRdPSIgIitYWzRdKyIgIn1yZXR1cm4gWH0sUFNFVURPOmZ1bmN0aW9uKFgsVSxWLFQsWSl7aWYoWFsxXT09PSJub3QiKXtpZihYWzNdLm1hdGNoKFIpLmxlbmd0aD4xfHwvXlx3Ly50ZXN0KFhbM10pKXtYWzNdPUYoWFszXSxudWxsLG51bGwsVSl9ZWxzZXt2YXIgVz1GLmZpbHRlcihYWzNdLFUsVix0cnVlXlkpO2lmKCFWKXtULnB1c2guYXBwbHkoVCxXKX1yZXR1cm4gZmFsc2V9fWVsc2V7aWYoSS5tYXRjaC5QT1MudGVzdChYWzBdKXx8SS5tYXRjaC5DSElMRC50ZXN0KFhbMF0pKXtyZXR1cm4gdHJ1ZX19cmV0dXJuIFh9LFBPUzpmdW5jdGlvbihUKXtULnVuc2hpZnQodHJ1ZSk7cmV0dXJuIFR9fSxmaWx0ZXJzOntlbmFibGVkOmZ1bmN0aW9uKFQpe3JldHVybiBULmRpc2FibGVkPT09ZmFsc2UmJlQudHlwZSE9PSJoaWRkZW4ifSxkaXNhYmxlZDpmdW5jdGlvbihUKXtyZXR1cm4gVC5kaXNhYmxlZD09PXRydWV9LGNoZWNrZWQ6ZnVuY3Rpb24oVCl7cmV0dXJuIFQuY2hlY2tlZD09PXRydWV9LHNlbGVjdGVkOmZ1bmN0aW9uKFQpe1QucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4O3JldHVybiBULnNlbGVjdGVkPT09dHJ1ZX0scGFyZW50OmZ1bmN0aW9uKFQpe3JldHVybiAhIVQuZmlyc3RDaGlsZH0sZW1wdHk6ZnVuY3Rpb24oVCl7cmV0dXJuICFULmZpcnN0Q2hpbGR9LGhhczpmdW5jdGlvbihWLFUsVCl7cmV0dXJuICEhRihUWzNdLFYpLmxlbmd0aH0saGVhZGVyOmZ1bmN0aW9uKFQpe3JldHVybi9oXGQvaS50ZXN0KFQubm9kZU5hbWUpfSx0ZXh0OmZ1bmN0aW9uKFQpe3JldHVybiJ0ZXh0Ij09PVQudHlwZX0scmFkaW86ZnVuY3Rpb24oVCl7cmV0dXJuInJhZGlvIj09PVQudHlwZX0sY2hlY2tib3g6ZnVuY3Rpb24oVCl7cmV0dXJuImNoZWNrYm94Ij09PVQudHlwZX0sZmlsZTpmdW5jdGlvbihUKXtyZXR1cm4iZmlsZSI9PT1ULnR5cGV9LHBhc3N3b3JkOmZ1bmN0aW9uKFQpe3JldHVybiJwYXNzd29yZCI9PT1ULnR5cGV9LHN1Ym1pdDpmdW5jdGlvbihUKXtyZXR1cm4ic3VibWl0Ij09PVQudHlwZX0saW1hZ2U6ZnVuY3Rpb24oVCl7cmV0dXJuImltYWdlIj09PVQudHlwZX0scmVzZXQ6ZnVuY3Rpb24oVCl7cmV0dXJuInJlc2V0Ij09PVQudHlwZX0sYnV0dG9uOmZ1bmN0aW9uKFQpe3JldHVybiJidXR0b24iPT09VC50eXBlfHxULm5vZGVOYW1lLnRvVXBwZXJDYXNlKCk9PT0iQlVUVE9OIn0saW5wdXQ6ZnVuY3Rpb24oVCl7cmV0dXJuL2lucHV0fHNlbGVjdHx0ZXh0YXJlYXxidXR0b24vaS50ZXN0KFQubm9kZU5hbWUpfX0sc2V0RmlsdGVyczp7Zmlyc3Q6ZnVuY3Rpb24oVSxUKXtyZXR1cm4gVD09PTB9LGxhc3Q6ZnVuY3Rpb24oVixVLFQsVyl7cmV0dXJuIFU9PT1XLmxlbmd0aC0xfSxldmVuOmZ1bmN0aW9uKFUsVCl7cmV0dXJuIFQlMj09PTB9LG9kZDpmdW5jdGlvbihVLFQpe3JldHVybiBUJTI9PT0xfSxsdDpmdW5jdGlvbihWLFUsVCl7cmV0dXJuIFU8VFszXS0wfSxndDpmdW5jdGlvbihWLFUsVCl7cmV0dXJuIFU+VFszXS0wfSxudGg6ZnVuY3Rpb24oVixVLFQpe3JldHVybiBUWzNdLTA9PVV9LGVxOmZ1bmN0aW9uKFYsVSxUKXtyZXR1cm4gVFszXS0wPT1VfX0sZmlsdGVyOntQU0VVRE86ZnVuY3Rpb24oWixWLFcsYWEpe3ZhciBVPVZbMV0sWD1JLmZpbHRlcnNbVV07aWYoWCl7cmV0dXJuIFgoWixXLFYsYWEpfWVsc2V7aWYoVT09PSJjb250YWlucyIpe3JldHVybihaLnRleHRDb250ZW50fHxaLmlubmVyVGV4dHx8IiIpLmluZGV4T2YoVlszXSk+PTB9ZWxzZXtpZihVPT09Im5vdCIpe3ZhciBZPVZbM107Zm9yKHZhciBXPTAsVD1ZLmxlbmd0aDtXPFQ7VysrKXtpZihZW1ddPT09Wil7cmV0dXJuIGZhbHNlfX1yZXR1cm4gdHJ1ZX19fX0sQ0hJTEQ6ZnVuY3Rpb24oVCxXKXt2YXIgWj1XWzFdLFU9VDtzd2l0Y2goWil7Y2FzZSJvbmx5IjpjYXNlImZpcnN0Ijp3aGlsZShVPVUucHJldmlvdXNTaWJsaW5nKXtpZihVLm5vZGVUeXBlPT09MSl7cmV0dXJuIGZhbHNlfX1pZihaPT0iZmlyc3QiKXtyZXR1cm4gdHJ1ZX1VPVQ7Y2FzZSJsYXN0Ijp3aGlsZShVPVUubmV4dFNpYmxpbmcpe2lmKFUubm9kZVR5cGU9PT0xKXtyZXR1cm4gZmFsc2V9fXJldHVybiB0cnVlO2Nhc2UibnRoIjp2YXIgVj1XWzJdLGFjPVdbM107aWYoVj09MSYmYWM9PTApe3JldHVybiB0cnVlfXZhciBZPVdbMF0sYWI9VC5wYXJlbnROb2RlO2lmKGFiJiYoYWIuc2l6Y2FjaGUhPT1ZfHwhVC5ub2RlSW5kZXgpKXt2YXIgWD0wO2ZvcihVPWFiLmZpcnN0Q2hpbGQ7VTtVPVUubmV4dFNpYmxpbmcpe2lmKFUubm9kZVR5cGU9PT0xKXtVLm5vZGVJbmRleD0rK1h9fWFiLnNpemNhY2hlPVl9dmFyIGFhPVQubm9kZUluZGV4LWFjO2lmKFY9PTApe3JldHVybiBhYT09MH1lbHNle3JldHVybihhYSVWPT0wJiZhYS9WPj0wKX19fSxJRDpmdW5jdGlvbihVLFQpe3JldHVybiBVLm5vZGVUeXBlPT09MSYmVS5nZXRBdHRyaWJ1dGUoImlkIik9PT1UfSxUQUc6ZnVuY3Rpb24oVSxUKXtyZXR1cm4oVD09PSIqIiYmVS5ub2RlVHlwZT09PTEpfHxVLm5vZGVOYW1lPT09VH0sQ0xBU1M6ZnVuY3Rpb24oVSxUKXtyZXR1cm4oIiAiKyhVLmNsYXNzTmFtZXx8VS5nZXRBdHRyaWJ1dGUoImNsYXNzIikpKyIgIikuaW5kZXhPZihUKT4tMX0sQVRUUjpmdW5jdGlvbihZLFcpe3ZhciBWPVdbMV0sVD1JLmF0dHJIYW5kbGVbVl0/SS5hdHRySGFuZGxlW1ZdKFkpOllbVl0hPW51bGw/WVtWXTpZLmdldEF0dHJpYnV0ZShWKSxaPVQrIiIsWD1XWzJdLFU9V1s0XTtyZXR1cm4gVD09bnVsbD9YPT09IiE9IjpYPT09Ij0iP1o9PT1VOlg9PT0iKj0iP1ouaW5kZXhPZihVKT49MDpYPT09In49Ij8oIiAiK1orIiAiKS5pbmRleE9mKFUpPj0wOiFVP1omJlQhPT1mYWxzZTpYPT09IiE9Ij9aIT1VOlg9PT0iXj0iP1ouaW5kZXhPZihVKT09PTA6WD09PSIkPSI/Wi5zdWJzdHIoWi5sZW5ndGgtVS5sZW5ndGgpPT09VTpYPT09Inw9Ij9aPT09VXx8Wi5zdWJzdHIoMCxVLmxlbmd0aCsxKT09PVUrIi0iOmZhbHNlfSxQT1M6ZnVuY3Rpb24oWCxVLFYsWSl7dmFyIFQ9VVsyXSxXPUkuc2V0RmlsdGVyc1tUXTtpZihXKXtyZXR1cm4gVyhYLFYsVSxZKX19fX07dmFyIE09SS5tYXRjaC5QT1M7Zm9yKHZhciBPIGluIEkubWF0Y2gpe0kubWF0Y2hbT109UmVnRXhwKEkubWF0Y2hbT10uc291cmNlKy8oPyFbXlxbXSpcXSkoPyFbXlwoXSpcKSkvLnNvdXJjZSl9dmFyIEU9ZnVuY3Rpb24oVSxUKXtVPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKFUpO2lmKFQpe1QucHVzaC5hcHBseShULFUpO3JldHVybiBUfXJldHVybiBVfTt0cnl7QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNoaWxkTm9kZXMpfWNhdGNoKE4pe0U9ZnVuY3Rpb24oWCxXKXt2YXIgVT1XfHxbXTtpZihILmNhbGwoWCk9PT0iW29iamVjdCBBcnJheV0iKXtBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseShVLFgpfWVsc2V7aWYodHlwZW9mIFgubGVuZ3RoPT09Im51bWJlciIpe2Zvcih2YXIgVj0wLFQ9WC5sZW5ndGg7VjxUO1YrKyl7VS5wdXNoKFhbVl0pfX1lbHNle2Zvcih2YXIgVj0wO1hbVl07VisrKXtVLnB1c2goWFtWXSl9fX1yZXR1cm4gVX19dmFyIEc7aWYoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKXtHPWZ1bmN0aW9uKFUsVCl7dmFyIFY9VS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihUKSY0Py0xOlU9PT1UPzA6MTtpZihWPT09MCl7aGFzRHVwbGljYXRlPXRydWV9cmV0dXJuIFZ9fWVsc2V7aWYoInNvdXJjZUluZGV4IiBpbiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpe0c9ZnVuY3Rpb24oVSxUKXt2YXIgVj1VLnNvdXJjZUluZGV4LVQuc291cmNlSW5kZXg7aWYoVj09PTApe2hhc0R1cGxpY2F0ZT10cnVlfXJldHVybiBWfX1lbHNle2lmKGRvY3VtZW50LmNyZWF0ZVJhbmdlKXtHPWZ1bmN0aW9uKFcsVSl7dmFyIFY9Vy5vd25lckRvY3VtZW50LmNyZWF0ZVJhbmdlKCksVD1VLm93bmVyRG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTtWLnNlbGVjdE5vZGUoVyk7Vi5jb2xsYXBzZSh0cnVlKTtULnNlbGVjdE5vZGUoVSk7VC5jb2xsYXBzZSh0cnVlKTt2YXIgWD1WLmNvbXBhcmVCb3VuZGFyeVBvaW50cyhSYW5nZS5TVEFSVF9UT19FTkQsVCk7aWYoWD09PTApe2hhc0R1cGxpY2F0ZT10cnVlfXJldHVybiBYfX19fShmdW5jdGlvbigpe3ZhciBVPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImZvcm0iKSxWPSJzY3JpcHQiKyhuZXcgRGF0ZSkuZ2V0VGltZSgpO1UuaW5uZXJIVE1MPSI8aW5wdXQgbmFtZT0nIitWKyInLz4iO3ZhciBUPWRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtULmluc2VydEJlZm9yZShVLFQuZmlyc3RDaGlsZCk7aWYoISFkb2N1bWVudC5nZXRFbGVtZW50QnlJZChWKSl7SS5maW5kLklEPWZ1bmN0aW9uKFgsWSxaKXtpZih0eXBlb2YgWS5nZXRFbGVtZW50QnlJZCE9PSJ1bmRlZmluZWQiJiYhWil7dmFyIFc9WS5nZXRFbGVtZW50QnlJZChYWzFdKTtyZXR1cm4gVz9XLmlkPT09WFsxXXx8dHlwZW9mIFcuZ2V0QXR0cmlidXRlTm9kZSE9PSJ1bmRlZmluZWQiJiZXLmdldEF0dHJpYnV0ZU5vZGUoImlkIikubm9kZVZhbHVlPT09WFsxXT9bV106ZzpbXX19O0kuZmlsdGVyLklEPWZ1bmN0aW9uKFksVyl7dmFyIFg9dHlwZW9mIFkuZ2V0QXR0cmlidXRlTm9kZSE9PSJ1bmRlZmluZWQiJiZZLmdldEF0dHJpYnV0ZU5vZGUoImlkIik7cmV0dXJuIFkubm9kZVR5cGU9PT0xJiZYJiZYLm5vZGVWYWx1ZT09PVd9fVQucmVtb3ZlQ2hpbGQoVSl9KSgpOyhmdW5jdGlvbigpe3ZhciBUPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO1QuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlQ29tbWVudCgiIikpO2lmKFQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIioiKS5sZW5ndGg+MCl7SS5maW5kLlRBRz1mdW5jdGlvbihVLFkpe3ZhciBYPVkuZ2V0RWxlbWVudHNCeVRhZ05hbWUoVVsxXSk7aWYoVVsxXT09PSIqIil7dmFyIFc9W107Zm9yKHZhciBWPTA7WFtWXTtWKyspe2lmKFhbVl0ubm9kZVR5cGU9PT0xKXtXLnB1c2goWFtWXSl9fVg9V31yZXR1cm4gWH19VC5pbm5lckhUTUw9IjxhIGhyZWY9JyMnPjwvYT4iO2lmKFQuZmlyc3RDaGlsZCYmdHlwZW9mIFQuZmlyc3RDaGlsZC5nZXRBdHRyaWJ1dGUhPT0idW5kZWZpbmVkIiYmVC5maXJzdENoaWxkLmdldEF0dHJpYnV0ZSgiaHJlZiIpIT09IiMiKXtJLmF0dHJIYW5kbGUuaHJlZj1mdW5jdGlvbihVKXtyZXR1cm4gVS5nZXRBdHRyaWJ1dGUoImhyZWYiLDIpfX19KSgpO2lmKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwpeyhmdW5jdGlvbigpe3ZhciBUPUYsVT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtVLmlubmVySFRNTD0iPHAgY2xhc3M9J1RFU1QnPjwvcD4iO2lmKFUucXVlcnlTZWxlY3RvckFsbCYmVS5xdWVyeVNlbGVjdG9yQWxsKCIuVEVTVCIpLmxlbmd0aD09PTApe3JldHVybn1GPWZ1bmN0aW9uKFksWCxWLFcpe1g9WHx8ZG9jdW1lbnQ7aWYoIVcmJlgubm9kZVR5cGU9PT05JiYhUShYKSl7dHJ5e3JldHVybiBFKFgucXVlcnlTZWxlY3RvckFsbChZKSxWKX1jYXRjaChaKXt9fXJldHVybiBUKFksWCxWLFcpfTtGLmZpbmQ9VC5maW5kO0YuZmlsdGVyPVQuZmlsdGVyO0Yuc2VsZWN0b3JzPVQuc2VsZWN0b3JzO0YubWF0Y2hlcz1ULm1hdGNoZXN9KSgpfWlmKGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUmJmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKXsoZnVuY3Rpb24oKXt2YXIgVD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtULmlubmVySFRNTD0iPGRpdiBjbGFzcz0ndGVzdCBlJz48L2Rpdj48ZGl2IGNsYXNzPSd0ZXN0Jz48L2Rpdj4iO2lmKFQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgiZSIpLmxlbmd0aD09PTApe3JldHVybn1ULmxhc3RDaGlsZC5jbGFzc05hbWU9ImUiO2lmKFQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgiZSIpLmxlbmd0aD09PTEpe3JldHVybn1JLm9yZGVyLnNwbGljZSgxLDAsIkNMQVNTIik7SS5maW5kLkNMQVNTPWZ1bmN0aW9uKFUsVixXKXtpZih0eXBlb2YgVi5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lIT09InVuZGVmaW5lZCImJiFXKXtyZXR1cm4gVi5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFVbMV0pfX19KSgpfWZ1bmN0aW9uIFAoVSxaLFksYWQsYWEsYWMpe3ZhciBhYj1VPT0icHJldmlvdXNTaWJsaW5nIiYmIWFjO2Zvcih2YXIgVz0wLFY9YWQubGVuZ3RoO1c8VjtXKyspe3ZhciBUPWFkW1ddO2lmKFQpe2lmKGFiJiZULm5vZGVUeXBlPT09MSl7VC5zaXpjYWNoZT1ZO1Quc2l6c2V0PVd9VD1UW1VdO3ZhciBYPWZhbHNlO3doaWxlKFQpe2lmKFQuc2l6Y2FjaGU9PT1ZKXtYPWFkW1Quc2l6c2V0XTticmVha31pZihULm5vZGVUeXBlPT09MSYmIWFjKXtULnNpemNhY2hlPVk7VC5zaXpzZXQ9V31pZihULm5vZGVOYW1lPT09Wil7WD1UO2JyZWFrfVQ9VFtVXX1hZFtXXT1YfX19ZnVuY3Rpb24gUyhVLFosWSxhZCxhYSxhYyl7dmFyIGFiPVU9PSJwcmV2aW91c1NpYmxpbmciJiYhYWM7Zm9yKHZhciBXPTAsVj1hZC5sZW5ndGg7VzxWO1crKyl7dmFyIFQ9YWRbV107aWYoVCl7aWYoYWImJlQubm9kZVR5cGU9PT0xKXtULnNpemNhY2hlPVk7VC5zaXpzZXQ9V31UPVRbVV07dmFyIFg9ZmFsc2U7d2hpbGUoVCl7aWYoVC5zaXpjYWNoZT09PVkpe1g9YWRbVC5zaXpzZXRdO2JyZWFrfWlmKFQubm9kZVR5cGU9PT0xKXtpZighYWMpe1Quc2l6Y2FjaGU9WTtULnNpenNldD1XfWlmKHR5cGVvZiBaIT09InN0cmluZyIpe2lmKFQ9PT1aKXtYPXRydWU7YnJlYWt9fWVsc2V7aWYoRi5maWx0ZXIoWixbVF0pLmxlbmd0aD4wKXtYPVQ7YnJlYWt9fX1UPVRbVV19YWRbV109WH19fXZhciBLPWRvY3VtZW50LmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uP2Z1bmN0aW9uKFUsVCl7cmV0dXJuIFUuY29tcGFyZURvY3VtZW50UG9zaXRpb24oVCkmMTZ9OmZ1bmN0aW9uKFUsVCl7cmV0dXJuIFUhPT1UJiYoVS5jb250YWlucz9VLmNvbnRhaW5zKFQpOnRydWUpfTt2YXIgUT1mdW5jdGlvbihUKXtyZXR1cm4gVC5ub2RlVHlwZT09PTkmJlQuZG9jdW1lbnRFbGVtZW50Lm5vZGVOYW1lIT09IkhUTUwifHwhIVQub3duZXJEb2N1bWVudCYmUShULm93bmVyRG9jdW1lbnQpfTt2YXIgSj1mdW5jdGlvbihULGFhKXt2YXIgVz1bXSxYPSIiLFksVj1hYS5ub2RlVHlwZT9bYWFdOmFhO3doaWxlKChZPUkubWF0Y2guUFNFVURPLmV4ZWMoVCkpKXtYKz1ZWzBdO1Q9VC5yZXBsYWNlKEkubWF0Y2guUFNFVURPLCIiKX1UPUkucmVsYXRpdmVbVF0/VCsiKiI6VDtmb3IodmFyIFo9MCxVPVYubGVuZ3RoO1o8VTtaKyspe0YoVCxWW1pdLFcpfXJldHVybiBGLmZpbHRlcihYLFcpfTtvLmZpbmQ9RjtvLmZpbHRlcj1GLmZpbHRlcjtvLmV4cHI9Ri5zZWxlY3RvcnM7by5leHByWyI6Il09by5leHByLmZpbHRlcnM7Ri5zZWxlY3RvcnMuZmlsdGVycy5oaWRkZW49ZnVuY3Rpb24oVCl7cmV0dXJuIFQub2Zmc2V0V2lkdGg9PT0wfHxULm9mZnNldEhlaWdodD09PTB9O0Yuc2VsZWN0b3JzLmZpbHRlcnMudmlzaWJsZT1mdW5jdGlvbihUKXtyZXR1cm4gVC5vZmZzZXRXaWR0aD4wfHxULm9mZnNldEhlaWdodD4wfTtGLnNlbGVjdG9ycy5maWx0ZXJzLmFuaW1hdGVkPWZ1bmN0aW9uKFQpe3JldHVybiBvLmdyZXAoby50aW1lcnMsZnVuY3Rpb24oVSl7cmV0dXJuIFQ9PT1VLmVsZW19KS5sZW5ndGh9O28ubXVsdGlGaWx0ZXI9ZnVuY3Rpb24oVixULFUpe2lmKFUpe1Y9Ijpub3QoIitWKyIpIn1yZXR1cm4gRi5tYXRjaGVzKFYsVCl9O28uZGlyPWZ1bmN0aW9uKFYsVSl7dmFyIFQ9W10sVz1WW1VdO3doaWxlKFcmJlchPWRvY3VtZW50KXtpZihXLm5vZGVUeXBlPT0xKXtULnB1c2goVyl9Vz1XW1VdfXJldHVybiBUfTtvLm50aD1mdW5jdGlvbihYLFQsVixXKXtUPVR8fDE7dmFyIFU9MDtmb3IoO1g7WD1YW1ZdKXtpZihYLm5vZGVUeXBlPT0xJiYrK1U9PVQpe2JyZWFrfX1yZXR1cm4gWH07by5zaWJsaW5nPWZ1bmN0aW9uKFYsVSl7dmFyIFQ9W107Zm9yKDtWO1Y9Vi5uZXh0U2libGluZyl7aWYoVi5ub2RlVHlwZT09MSYmViE9VSl7VC5wdXNoKFYpfX1yZXR1cm4gVH07cmV0dXJuO2wuU2l6emxlPUZ9KSgpO28uZXZlbnQ9e2FkZDpmdW5jdGlvbihJLEYsSCxLKXtpZihJLm5vZGVUeXBlPT0zfHxJLm5vZGVUeXBlPT04KXtyZXR1cm59aWYoSS5zZXRJbnRlcnZhbCYmSSE9bCl7ST1sfWlmKCFILmd1aWQpe0guZ3VpZD10aGlzLmd1aWQrK31pZihLIT09Zyl7dmFyIEc9SDtIPXRoaXMucHJveHkoRyk7SC5kYXRhPUt9dmFyIEU9by5kYXRhKEksImV2ZW50cyIpfHxvLmRhdGEoSSwiZXZlbnRzIix7fSksSj1vLmRhdGEoSSwiaGFuZGxlIil8fG8uZGF0YShJLCJoYW5kbGUiLGZ1bmN0aW9uKCl7cmV0dXJuIHR5cGVvZiBvIT09InVuZGVmaW5lZCImJiFvLmV2ZW50LnRyaWdnZXJlZD9vLmV2ZW50LmhhbmRsZS5hcHBseShhcmd1bWVudHMuY2FsbGVlLmVsZW0sYXJndW1lbnRzKTpnfSk7Si5lbGVtPUk7by5lYWNoKEYuc3BsaXQoL1xzKy8pLGZ1bmN0aW9uKE0sTil7dmFyIE89Ti5zcGxpdCgiLiIpO049Ty5zaGlmdCgpO0gudHlwZT1PLnNsaWNlKCkuc29ydCgpLmpvaW4oIi4iKTt2YXIgTD1FW05dO2lmKG8uZXZlbnQuc3BlY2lhbEFsbFtOXSl7by5ldmVudC5zcGVjaWFsQWxsW05dLnNldHVwLmNhbGwoSSxLLE8pfWlmKCFMKXtMPUVbTl09e307aWYoIW8uZXZlbnQuc3BlY2lhbFtOXXx8by5ldmVudC5zcGVjaWFsW05dLnNldHVwLmNhbGwoSSxLLE8pPT09ZmFsc2Upe2lmKEkuYWRkRXZlbnRMaXN0ZW5lcil7SS5hZGRFdmVudExpc3RlbmVyKE4sSixmYWxzZSl9ZWxzZXtpZihJLmF0dGFjaEV2ZW50KXtJLmF0dGFjaEV2ZW50KCJvbiIrTixKKX19fX1MW0guZ3VpZF09SDtvLmV2ZW50Lmdsb2JhbFtOXT10cnVlfSk7ST1udWxsfSxndWlkOjEsZ2xvYmFsOnt9LHJlbW92ZTpmdW5jdGlvbihLLEgsSil7aWYoSy5ub2RlVHlwZT09M3x8Sy5ub2RlVHlwZT09OCl7cmV0dXJufXZhciBHPW8uZGF0YShLLCJldmVudHMiKSxGLEU7aWYoRyl7aWYoSD09PWd8fCh0eXBlb2YgSD09PSJzdHJpbmciJiZILmNoYXJBdCgwKT09Ii4iKSl7Zm9yKHZhciBJIGluIEcpe3RoaXMucmVtb3ZlKEssSSsoSHx8IiIpKX19ZWxzZXtpZihILnR5cGUpe0o9SC5oYW5kbGVyO0g9SC50eXBlfW8uZWFjaChILnNwbGl0KC9ccysvKSxmdW5jdGlvbihNLE8pe3ZhciBRPU8uc3BsaXQoIi4iKTtPPVEuc2hpZnQoKTt2YXIgTj1SZWdFeHAoIihefFxcLikiK1Euc2xpY2UoKS5zb3J0KCkuam9pbigiLipcXC4iKSsiKFxcLnwkKSIpO2lmKEdbT10pe2lmKEope2RlbGV0ZSBHW09dW0ouZ3VpZF19ZWxzZXtmb3IodmFyIFAgaW4gR1tPXSl7aWYoTi50ZXN0KEdbT11bUF0udHlwZSkpe2RlbGV0ZSBHW09dW1BdfX19aWYoby5ldmVudC5zcGVjaWFsQWxsW09dKXtvLmV2ZW50LnNwZWNpYWxBbGxbT10udGVhcmRvd24uY2FsbChLLFEpfWZvcihGIGluIEdbT10pe2JyZWFrfWlmKCFGKXtpZighby5ldmVudC5zcGVjaWFsW09dfHxvLmV2ZW50LnNwZWNpYWxbT10udGVhcmRvd24uY2FsbChLLFEpPT09ZmFsc2Upe2lmKEsucmVtb3ZlRXZlbnRMaXN0ZW5lcil7Sy5yZW1vdmVFdmVudExpc3RlbmVyKE8sby5kYXRhKEssImhhbmRsZSIpLGZhbHNlKX1lbHNle2lmKEsuZGV0YWNoRXZlbnQpe0suZGV0YWNoRXZlbnQoIm9uIitPLG8uZGF0YShLLCJoYW5kbGUiKSl9fX1GPW51bGw7ZGVsZXRlIEdbT119fX0pfWZvcihGIGluIEcpe2JyZWFrfWlmKCFGKXt2YXIgTD1vLmRhdGEoSywiaGFuZGxlIik7aWYoTCl7TC5lbGVtPW51bGx9by5yZW1vdmVEYXRhKEssImV2ZW50cyIpO28ucmVtb3ZlRGF0YShLLCJoYW5kbGUiKX19fSx0cmlnZ2VyOmZ1bmN0aW9uKEksSyxILEUpe3ZhciBHPUkudHlwZXx8STtpZighRSl7ST10eXBlb2YgST09PSJvYmplY3QiP0lbaF0/STpvLmV4dGVuZChvLkV2ZW50KEcpLEkpOm8uRXZlbnQoRyk7aWYoRy5pbmRleE9mKCIhIik+PTApe0kudHlwZT1HPUcuc2xpY2UoMCwtMSk7SS5leGNsdXNpdmU9dHJ1ZX1pZighSCl7SS5zdG9wUHJvcGFnYXRpb24oKTtpZih0aGlzLmdsb2JhbFtHXSl7by5lYWNoKG8uY2FjaGUsZnVuY3Rpb24oKXtpZih0aGlzLmV2ZW50cyYmdGhpcy5ldmVudHNbR10pe28uZXZlbnQudHJpZ2dlcihJLEssdGhpcy5oYW5kbGUuZWxlbSl9fSl9fWlmKCFIfHxILm5vZGVUeXBlPT0zfHxILm5vZGVUeXBlPT04KXtyZXR1cm4gZ31JLnJlc3VsdD1nO0kudGFyZ2V0PUg7Sz1vLm1ha2VBcnJheShLKTtLLnVuc2hpZnQoSSl9SS5jdXJyZW50VGFyZ2V0PUg7dmFyIEo9by5kYXRhKEgsImhhbmRsZSIpO2lmKEope0ouYXBwbHkoSCxLKX1pZigoIUhbR118fChvLm5vZGVOYW1lKEgsImEiKSYmRz09ImNsaWNrIikpJiZIWyJvbiIrR10mJkhbIm9uIitHXS5hcHBseShILEspPT09ZmFsc2Upe0kucmVzdWx0PWZhbHNlfWlmKCFFJiZIW0ddJiYhSS5pc0RlZmF1bHRQcmV2ZW50ZWQoKSYmIShvLm5vZGVOYW1lKEgsImEiKSYmRz09ImNsaWNrIikpe3RoaXMudHJpZ2dlcmVkPXRydWU7dHJ5e0hbR10oKX1jYXRjaChMKXt9fXRoaXMudHJpZ2dlcmVkPWZhbHNlO2lmKCFJLmlzUHJvcGFnYXRpb25TdG9wcGVkKCkpe3ZhciBGPUgucGFyZW50Tm9kZXx8SC5vd25lckRvY3VtZW50O2lmKEYpe28uZXZlbnQudHJpZ2dlcihJLEssRix0cnVlKX19fSxoYW5kbGU6ZnVuY3Rpb24oSyl7dmFyIEosRTtLPWFyZ3VtZW50c1swXT1vLmV2ZW50LmZpeChLfHxsLmV2ZW50KTtLLmN1cnJlbnRUYXJnZXQ9dGhpczt2YXIgTD1LLnR5cGUuc3BsaXQoIi4iKTtLLnR5cGU9TC5zaGlmdCgpO0o9IUwubGVuZ3RoJiYhSy5leGNsdXNpdmU7dmFyIEk9UmVnRXhwKCIoXnxcXC4pIitMLnNsaWNlKCkuc29ydCgpLmpvaW4oIi4qXFwuIikrIihcXC58JCkiKTtFPShvLmRhdGEodGhpcywiZXZlbnRzIil8fHt9KVtLLnR5cGVdO2Zvcih2YXIgRyBpbiBFKXt2YXIgSD1FW0ddO2lmKEp8fEkudGVzdChILnR5cGUpKXtLLmhhbmRsZXI9SDtLLmRhdGE9SC5kYXRhO3ZhciBGPUguYXBwbHkodGhpcyxhcmd1bWVudHMpO2lmKEYhPT1nKXtLLnJlc3VsdD1GO2lmKEY9PT1mYWxzZSl7Sy5wcmV2ZW50RGVmYXVsdCgpO0suc3RvcFByb3BhZ2F0aW9uKCl9fWlmKEsuaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQoKSl7YnJlYWt9fX19LHByb3BzOiJhbHRLZXkgYXR0ckNoYW5nZSBhdHRyTmFtZSBidWJibGVzIGJ1dHRvbiBjYW5jZWxhYmxlIGNoYXJDb2RlIGNsaWVudFggY2xpZW50WSBjdHJsS2V5IGN1cnJlbnRUYXJnZXQgZGF0YSBkZXRhaWwgZXZlbnRQaGFzZSBmcm9tRWxlbWVudCBoYW5kbGVyIGtleUNvZGUgbWV0YUtleSBuZXdWYWx1ZSBvcmlnaW5hbFRhcmdldCBwYWdlWCBwYWdlWSBwcmV2VmFsdWUgcmVsYXRlZE5vZGUgcmVsYXRlZFRhcmdldCBzY3JlZW5YIHNjcmVlblkgc2hpZnRLZXkgc3JjRWxlbWVudCB0YXJnZXQgdG9FbGVtZW50IHZpZXcgd2hlZWxEZWx0YSB3aGljaCIuc3BsaXQoIiAiKSxmaXg6ZnVuY3Rpb24oSCl7aWYoSFtoXSl7cmV0dXJuIEh9dmFyIEY9SDtIPW8uRXZlbnQoRik7Zm9yKHZhciBHPXRoaXMucHJvcHMubGVuZ3RoLEo7Rzspe0o9dGhpcy5wcm9wc1stLUddO0hbSl09RltKXX1pZighSC50YXJnZXQpe0gudGFyZ2V0PUguc3JjRWxlbWVudHx8ZG9jdW1lbnR9aWYoSC50YXJnZXQubm9kZVR5cGU9PTMpe0gudGFyZ2V0PUgudGFyZ2V0LnBhcmVudE5vZGV9aWYoIUgucmVsYXRlZFRhcmdldCYmSC5mcm9tRWxlbWVudCl7SC5yZWxhdGVkVGFyZ2V0PUguZnJvbUVsZW1lbnQ9PUgudGFyZ2V0P0gudG9FbGVtZW50OkguZnJvbUVsZW1lbnR9aWYoSC5wYWdlWD09bnVsbCYmSC5jbGllbnRYIT1udWxsKXt2YXIgST1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsRT1kb2N1bWVudC5ib2R5O0gucGFnZVg9SC5jbGllbnRYKyhJJiZJLnNjcm9sbExlZnR8fEUmJkUuc2Nyb2xsTGVmdHx8MCktKEkuY2xpZW50TGVmdHx8MCk7SC5wYWdlWT1ILmNsaWVudFkrKEkmJkkuc2Nyb2xsVG9wfHxFJiZFLnNjcm9sbFRvcHx8MCktKEkuY2xpZW50VG9wfHwwKX1pZighSC53aGljaCYmKChILmNoYXJDb2RlfHxILmNoYXJDb2RlPT09MCk/SC5jaGFyQ29kZTpILmtleUNvZGUpKXtILndoaWNoPUguY2hhckNvZGV8fEgua2V5Q29kZX1pZighSC5tZXRhS2V5JiZILmN0cmxLZXkpe0gubWV0YUtleT1ILmN0cmxLZXl9aWYoIUgud2hpY2gmJkguYnV0dG9uKXtILndoaWNoPShILmJ1dHRvbiYxPzE6KEguYnV0dG9uJjI/MzooSC5idXR0b24mND8yOjApKSl9cmV0dXJuIEh9LHByb3h5OmZ1bmN0aW9uKEYsRSl7RT1FfHxmdW5jdGlvbigpe3JldHVybiBGLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07RS5ndWlkPUYuZ3VpZD1GLmd1aWR8fEUuZ3VpZHx8dGhpcy5ndWlkKys7cmV0dXJuIEV9LHNwZWNpYWw6e3JlYWR5OntzZXR1cDpCLHRlYXJkb3duOmZ1bmN0aW9uKCl7fX19LHNwZWNpYWxBbGw6e2xpdmU6e3NldHVwOmZ1bmN0aW9uKEUsRil7by5ldmVudC5hZGQodGhpcyxGWzBdLGMpfSx0ZWFyZG93bjpmdW5jdGlvbihHKXtpZihHLmxlbmd0aCl7dmFyIEU9MCxGPVJlZ0V4cCgiKF58XFwuKSIrR1swXSsiKFxcLnwkKSIpO28uZWFjaCgoby5kYXRhKHRoaXMsImV2ZW50cyIpLmxpdmV8fHt9KSxmdW5jdGlvbigpe2lmKEYudGVzdCh0aGlzLnR5cGUpKXtFKyt9fSk7aWYoRTwxKXtvLmV2ZW50LnJlbW92ZSh0aGlzLEdbMF0sYyl9fX19fX07by5FdmVudD1mdW5jdGlvbihFKXtpZighdGhpcy5wcmV2ZW50RGVmYXVsdCl7cmV0dXJuIG5ldyBvLkV2ZW50KEUpfWlmKEUmJkUudHlwZSl7dGhpcy5vcmlnaW5hbEV2ZW50PUU7dGhpcy50eXBlPUUudHlwZX1lbHNle3RoaXMudHlwZT1FfXRoaXMudGltZVN0YW1wPWUoKTt0aGlzW2hdPXRydWV9O2Z1bmN0aW9uIGsoKXtyZXR1cm4gZmFsc2V9ZnVuY3Rpb24gdSgpe3JldHVybiB0cnVlfW8uRXZlbnQucHJvdG90eXBlPXtwcmV2ZW50RGVmYXVsdDpmdW5jdGlvbigpe3RoaXMuaXNEZWZhdWx0UHJldmVudGVkPXU7dmFyIEU9dGhpcy5vcmlnaW5hbEV2ZW50O2lmKCFFKXtyZXR1cm59aWYoRS5wcmV2ZW50RGVmYXVsdCl7RS5wcmV2ZW50RGVmYXVsdCgpfUUucmV0dXJuVmFsdWU9ZmFsc2V9LHN0b3BQcm9wYWdhdGlvbjpmdW5jdGlvbigpe3RoaXMuaXNQcm9wYWdhdGlvblN0b3BwZWQ9dTt2YXIgRT10aGlzLm9yaWdpbmFsRXZlbnQ7aWYoIUUpe3JldHVybn1pZihFLnN0b3BQcm9wYWdhdGlvbil7RS5zdG9wUHJvcGFnYXRpb24oKX1FLmNhbmNlbEJ1YmJsZT10cnVlfSxzdG9wSW1tZWRpYXRlUHJvcGFnYXRpb246ZnVuY3Rpb24oKXt0aGlzLmlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkPXU7dGhpcy5zdG9wUHJvcGFnYXRpb24oKX0saXNEZWZhdWx0UHJldmVudGVkOmssaXNQcm9wYWdhdGlvblN0b3BwZWQ6ayxpc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZDprfTt2YXIgYT1mdW5jdGlvbihGKXt2YXIgRT1GLnJlbGF0ZWRUYXJnZXQ7d2hpbGUoRSYmRSE9dGhpcyl7dHJ5e0U9RS5wYXJlbnROb2RlfWNhdGNoKEcpe0U9dGhpc319aWYoRSE9dGhpcyl7Ri50eXBlPUYuZGF0YTtvLmV2ZW50LmhhbmRsZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fTtvLmVhY2goe21vdXNlb3ZlcjoibW91c2VlbnRlciIsbW91c2VvdXQ6Im1vdXNlbGVhdmUifSxmdW5jdGlvbihGLEUpe28uZXZlbnQuc3BlY2lhbFtFXT17c2V0dXA6ZnVuY3Rpb24oKXtvLmV2ZW50LmFkZCh0aGlzLEYsYSxFKX0sdGVhcmRvd246ZnVuY3Rpb24oKXtvLmV2ZW50LnJlbW92ZSh0aGlzLEYsYSl9fX0pO28uZm4uZXh0ZW5kKHtiaW5kOmZ1bmN0aW9uKEYsRyxFKXtyZXR1cm4gRj09InVubG9hZCI/dGhpcy5vbmUoRixHLEUpOnRoaXMuZWFjaChmdW5jdGlvbigpe28uZXZlbnQuYWRkKHRoaXMsRixFfHxHLEUmJkcpfSl9LG9uZTpmdW5jdGlvbihHLEgsRil7dmFyIEU9by5ldmVudC5wcm94eShGfHxILGZ1bmN0aW9uKEkpe28odGhpcykudW5iaW5kKEksRSk7cmV0dXJuKEZ8fEgpLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0pO3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtvLmV2ZW50LmFkZCh0aGlzLEcsRSxGJiZIKX0pfSx1bmJpbmQ6ZnVuY3Rpb24oRixFKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7by5ldmVudC5yZW1vdmUodGhpcyxGLEUpfSl9LHRyaWdnZXI6ZnVuY3Rpb24oRSxGKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7by5ldmVudC50cmlnZ2VyKEUsRix0aGlzKX0pfSx0cmlnZ2VySGFuZGxlcjpmdW5jdGlvbihFLEcpe2lmKHRoaXNbMF0pe3ZhciBGPW8uRXZlbnQoRSk7Ri5wcmV2ZW50RGVmYXVsdCgpO0Yuc3RvcFByb3BhZ2F0aW9uKCk7by5ldmVudC50cmlnZ2VyKEYsRyx0aGlzWzBdKTtyZXR1cm4gRi5yZXN1bHR9fSx0b2dnbGU6ZnVuY3Rpb24oRyl7dmFyIEU9YXJndW1lbnRzLEY9MTt3aGlsZShGPEUubGVuZ3RoKXtvLmV2ZW50LnByb3h5KEcsRVtGKytdKX1yZXR1cm4gdGhpcy5jbGljayhvLmV2ZW50LnByb3h5KEcsZnVuY3Rpb24oSCl7dGhpcy5sYXN0VG9nZ2xlPSh0aGlzLmxhc3RUb2dnbGV8fDApJUY7SC5wcmV2ZW50RGVmYXVsdCgpO3JldHVybiBFW3RoaXMubGFzdFRvZ2dsZSsrXS5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fGZhbHNlfSkpfSxob3ZlcjpmdW5jdGlvbihFLEYpe3JldHVybiB0aGlzLm1vdXNlZW50ZXIoRSkubW91c2VsZWF2ZShGKX0scmVhZHk6ZnVuY3Rpb24oRSl7QigpO2lmKG8uaXNSZWFkeSl7RS5jYWxsKGRvY3VtZW50LG8pfWVsc2V7by5yZWFkeUxpc3QucHVzaChFKX1yZXR1cm4gdGhpc30sbGl2ZTpmdW5jdGlvbihHLEYpe3ZhciBFPW8uZXZlbnQucHJveHkoRik7RS5ndWlkKz10aGlzLnNlbGVjdG9yK0c7byhkb2N1bWVudCkuYmluZChpKEcsdGhpcy5zZWxlY3RvciksdGhpcy5zZWxlY3RvcixFKTtyZXR1cm4gdGhpc30sZGllOmZ1bmN0aW9uKEYsRSl7byhkb2N1bWVudCkudW5iaW5kKGkoRix0aGlzLnNlbGVjdG9yKSxFP3tndWlkOkUuZ3VpZCt0aGlzLnNlbGVjdG9yK0Z9Om51bGwpO3JldHVybiB0aGlzfX0pO2Z1bmN0aW9uIGMoSCl7dmFyIEU9UmVnRXhwKCIoXnxcXC4pIitILnR5cGUrIihcXC58JCkiKSxHPXRydWUsRj1bXTtvLmVhY2goby5kYXRhKHRoaXMsImV2ZW50cyIpLmxpdmV8fFtdLGZ1bmN0aW9uKEksSil7aWYoRS50ZXN0KEoudHlwZSkpe3ZhciBLPW8oSC50YXJnZXQpLmNsb3Nlc3QoSi5kYXRhKVswXTtpZihLKXtGLnB1c2goe2VsZW06SyxmbjpKfSl9fX0pO0Yuc29ydChmdW5jdGlvbihKLEkpe3JldHVybiBvLmRhdGEoSi5lbGVtLCJjbG9zZXN0Iiktby5kYXRhKEkuZWxlbSwiY2xvc2VzdCIpfSk7by5lYWNoKEYsZnVuY3Rpb24oKXtpZih0aGlzLmZuLmNhbGwodGhpcy5lbGVtLEgsdGhpcy5mbi5kYXRhKT09PWZhbHNlKXtyZXR1cm4oRz1mYWxzZSl9fSk7cmV0dXJuIEd9ZnVuY3Rpb24gaShGLEUpe3JldHVyblsibGl2ZSIsRixFLnJlcGxhY2UoL1wuL2csImAiKS5yZXBsYWNlKC8gL2csInwiKV0uam9pbigiLiIpfW8uZXh0ZW5kKHtpc1JlYWR5OmZhbHNlLHJlYWR5TGlzdDpbXSxyZWFkeTpmdW5jdGlvbigpe2lmKCFvLmlzUmVhZHkpe28uaXNSZWFkeT10cnVlO2lmKG8ucmVhZHlMaXN0KXtvLmVhY2goby5yZWFkeUxpc3QsZnVuY3Rpb24oKXt0aGlzLmNhbGwoZG9jdW1lbnQsbyl9KTtvLnJlYWR5TGlzdD1udWxsfW8oZG9jdW1lbnQpLnRyaWdnZXJIYW5kbGVyKCJyZWFkeSIpfX19KTt2YXIgeD1mYWxzZTtmdW5jdGlvbiBCKCl7aWYoeCl7cmV0dXJufXg9dHJ1ZTtpZihkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKXtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIixmdW5jdGlvbigpe2RvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLGFyZ3VtZW50cy5jYWxsZWUsZmFsc2UpO28ucmVhZHkoKX0sZmFsc2UpfWVsc2V7aWYoZG9jdW1lbnQuYXR0YWNoRXZlbnQpe2RvY3VtZW50LmF0dGFjaEV2ZW50KCJvbnJlYWR5c3RhdGVjaGFuZ2UiLGZ1bmN0aW9uKCl7aWYoZG9jdW1lbnQucmVhZHlTdGF0ZT09PSJjb21wbGV0ZSIpe2RvY3VtZW50LmRldGFjaEV2ZW50KCJvbnJlYWR5c3RhdGVjaGFuZ2UiLGFyZ3VtZW50cy5jYWxsZWUpO28ucmVhZHkoKX19KTtpZihkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuZG9TY3JvbGwmJmw9PWwudG9wKXsoZnVuY3Rpb24oKXtpZihvLmlzUmVhZHkpe3JldHVybn10cnl7ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmRvU2Nyb2xsKCJsZWZ0Iil9Y2F0Y2goRSl7c2V0VGltZW91dChhcmd1bWVudHMuY2FsbGVlLDApO3JldHVybn1vLnJlYWR5KCl9KSgpfX19by5ldmVudC5hZGQobCwibG9hZCIsby5yZWFkeSl9by5lYWNoKCgiYmx1cixmb2N1cyxsb2FkLHJlc2l6ZSxzY3JvbGwsdW5sb2FkLGNsaWNrLGRibGNsaWNrLG1vdXNlZG93bixtb3VzZXVwLG1vdXNlbW92ZSxtb3VzZW92ZXIsbW91c2VvdXQsbW91c2VlbnRlcixtb3VzZWxlYXZlLGNoYW5nZSxzZWxlY3Qsc3VibWl0LGtleWRvd24sa2V5cHJlc3Msa2V5dXAsZXJyb3IiKS5zcGxpdCgiLCIpLGZ1bmN0aW9uKEYsRSl7by5mbltFXT1mdW5jdGlvbihHKXtyZXR1cm4gRz90aGlzLmJpbmQoRSxHKTp0aGlzLnRyaWdnZXIoRSl9fSk7byhsKS5iaW5kKCJ1bmxvYWQiLGZ1bmN0aW9uKCl7Zm9yKHZhciBFIGluIG8uY2FjaGUpe2lmKEUhPTEmJm8uY2FjaGVbRV0uaGFuZGxlKXtvLmV2ZW50LnJlbW92ZShvLmNhY2hlW0VdLmhhbmRsZS5lbGVtKX19fSk7KGZ1bmN0aW9uKCl7by5zdXBwb3J0PXt9O3ZhciBGPWRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxHPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpLEs9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksSj0ic2NyaXB0IisobmV3IERhdGUpLmdldFRpbWUoKTtLLnN0eWxlLmRpc3BsYXk9Im5vbmUiO0suaW5uZXJIVE1MPScgICA8bGluay8+PHRhYmxlPjwvdGFibGU+PGEgaHJlZj0iL2EiIHN0eWxlPSJjb2xvcjpyZWQ7ZmxvYXQ6bGVmdDtvcGFjaXR5Oi41OyI+YTwvYT48c2VsZWN0PjxvcHRpb24+dGV4dDwvb3B0aW9uPjwvc2VsZWN0PjxvYmplY3Q+PHBhcmFtLz48L29iamVjdD4nO3ZhciBIPUsuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIioiKSxFPUsuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImEiKVswXTtpZighSHx8IUgubGVuZ3RofHwhRSl7cmV0dXJufW8uc3VwcG9ydD17bGVhZGluZ1doaXRlc3BhY2U6Sy5maXJzdENoaWxkLm5vZGVUeXBlPT0zLHRib2R5OiFLLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0Ym9keSIpLmxlbmd0aCxvYmplY3RBbGw6ISFLLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJvYmplY3QiKVswXS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpLmxlbmd0aCxodG1sU2VyaWFsaXplOiEhSy5nZXRFbGVtZW50c0J5VGFnTmFtZSgibGluayIpLmxlbmd0aCxzdHlsZTovcmVkLy50ZXN0KEUuZ2V0QXR0cmlidXRlKCJzdHlsZSIpKSxocmVmTm9ybWFsaXplZDpFLmdldEF0dHJpYnV0ZSgiaHJlZiIpPT09Ii9hIixvcGFjaXR5OkUuc3R5bGUub3BhY2l0eT09PSIwLjUiLGNzc0Zsb2F0OiEhRS5zdHlsZS5jc3NGbG9hdCxzY3JpcHRFdmFsOmZhbHNlLG5vQ2xvbmVFdmVudDp0cnVlLGJveE1vZGVsOm51bGx9O0cudHlwZT0idGV4dC9qYXZhc2NyaXB0Ijt0cnl7Ry5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgid2luZG93LiIrSisiPTE7IikpfWNhdGNoKEkpe31GLmluc2VydEJlZm9yZShHLEYuZmlyc3RDaGlsZCk7aWYobFtKXSl7by5zdXBwb3J0LnNjcmlwdEV2YWw9dHJ1ZTtkZWxldGUgbFtKXX1GLnJlbW92ZUNoaWxkKEcpO2lmKEsuYXR0YWNoRXZlbnQmJksuZmlyZUV2ZW50KXtLLmF0dGFjaEV2ZW50KCJvbmNsaWNrIixmdW5jdGlvbigpe28uc3VwcG9ydC5ub0Nsb25lRXZlbnQ9ZmFsc2U7Sy5kZXRhY2hFdmVudCgib25jbGljayIsYXJndW1lbnRzLmNhbGxlZSl9KTtLLmNsb25lTm9kZSh0cnVlKS5maXJlRXZlbnQoIm9uY2xpY2siKX1vKGZ1bmN0aW9uKCl7dmFyIEw9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7TC5zdHlsZS53aWR0aD1MLnN0eWxlLnBhZGRpbmdMZWZ0PSIxcHgiO2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoTCk7by5ib3hNb2RlbD1vLnN1cHBvcnQuYm94TW9kZWw9TC5vZmZzZXRXaWR0aD09PTI7ZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChMKS5zdHlsZS5kaXNwbGF5PSJub25lIn0pfSkoKTt2YXIgdz1vLnN1cHBvcnQuY3NzRmxvYXQ/ImNzc0Zsb2F0Ijoic3R5bGVGbG9hdCI7by5wcm9wcz17ImZvciI6Imh0bWxGb3IiLCJjbGFzcyI6ImNsYXNzTmFtZSIsImZsb2F0Ijp3LGNzc0Zsb2F0Oncsc3R5bGVGbG9hdDp3LHJlYWRvbmx5OiJyZWFkT25seSIsbWF4bGVuZ3RoOiJtYXhMZW5ndGgiLGNlbGxzcGFjaW5nOiJjZWxsU3BhY2luZyIscm93c3Bhbjoicm93U3BhbiIsdGFiaW5kZXg6InRhYkluZGV4In07by5mbi5leHRlbmQoe19sb2FkOm8uZm4ubG9hZCxsb2FkOmZ1bmN0aW9uKEcsSixLKXtpZih0eXBlb2YgRyE9PSJzdHJpbmciKXtyZXR1cm4gdGhpcy5fbG9hZChHKX12YXIgST1HLmluZGV4T2YoIiAiKTtpZihJPj0wKXt2YXIgRT1HLnNsaWNlKEksRy5sZW5ndGgpO0c9Ry5zbGljZSgwLEkpfXZhciBIPSJHRVQiO2lmKEope2lmKG8uaXNGdW5jdGlvbihKKSl7Sz1KO0o9bnVsbH1lbHNle2lmKHR5cGVvZiBKPT09Im9iamVjdCIpe0o9by5wYXJhbShKKTtIPSJQT1NUIn19fXZhciBGPXRoaXM7by5hamF4KHt1cmw6Ryx0eXBlOkgsZGF0YVR5cGU6Imh0bWwiLGRhdGE6Sixjb21wbGV0ZTpmdW5jdGlvbihNLEwpe2lmKEw9PSJzdWNjZXNzInx8TD09Im5vdG1vZGlmaWVkIil7Ri5odG1sKEU/bygiPGRpdi8+IikuYXBwZW5kKE0ucmVzcG9uc2VUZXh0LnJlcGxhY2UoLzxzY3JpcHQoLnxccykqP1wvc2NyaXB0Pi9nLCIiKSkuZmluZChFKTpNLnJlc3BvbnNlVGV4dCl9aWYoSyl7Ri5lYWNoKEssW00ucmVzcG9uc2VUZXh0LEwsTV0pfX19KTtyZXR1cm4gdGhpc30sc2VyaWFsaXplOmZ1bmN0aW9uKCl7cmV0dXJuIG8ucGFyYW0odGhpcy5zZXJpYWxpemVBcnJheSgpKX0sc2VyaWFsaXplQXJyYXk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lbGVtZW50cz9vLm1ha2VBcnJheSh0aGlzLmVsZW1lbnRzKTp0aGlzfSkuZmlsdGVyKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubmFtZSYmIXRoaXMuZGlzYWJsZWQmJih0aGlzLmNoZWNrZWR8fC9zZWxlY3R8dGV4dGFyZWEvaS50ZXN0KHRoaXMubm9kZU5hbWUpfHwvdGV4dHxoaWRkZW58cGFzc3dvcmR8c2VhcmNoL2kudGVzdCh0aGlzLnR5cGUpKX0pLm1hcChmdW5jdGlvbihFLEYpe3ZhciBHPW8odGhpcykudmFsKCk7cmV0dXJuIEc9PW51bGw/bnVsbDpvLmlzQXJyYXkoRyk/by5tYXAoRyxmdW5jdGlvbihJLEgpe3JldHVybntuYW1lOkYubmFtZSx2YWx1ZTpJfX0pOntuYW1lOkYubmFtZSx2YWx1ZTpHfX0pLmdldCgpfX0pO28uZWFjaCgiYWpheFN0YXJ0LGFqYXhTdG9wLGFqYXhDb21wbGV0ZSxhamF4RXJyb3IsYWpheFN1Y2Nlc3MsYWpheFNlbmQiLnNwbGl0KCIsIiksZnVuY3Rpb24oRSxGKXtvLmZuW0ZdPWZ1bmN0aW9uKEcpe3JldHVybiB0aGlzLmJpbmQoRixHKX19KTt2YXIgcj1lKCk7by5leHRlbmQoe2dldDpmdW5jdGlvbihFLEcsSCxGKXtpZihvLmlzRnVuY3Rpb24oRykpe0g9RztHPW51bGx9cmV0dXJuIG8uYWpheCh7dHlwZToiR0VUIix1cmw6RSxkYXRhOkcsc3VjY2VzczpILGRhdGFUeXBlOkZ9KX0sZ2V0U2NyaXB0OmZ1bmN0aW9uKEUsRil7cmV0dXJuIG8uZ2V0KEUsbnVsbCxGLCJzY3JpcHQiKX0sZ2V0SlNPTjpmdW5jdGlvbihFLEYsRyl7cmV0dXJuIG8uZ2V0KEUsRixHLCJqc29uIil9LHBvc3Q6ZnVuY3Rpb24oRSxHLEgsRil7aWYoby5pc0Z1bmN0aW9uKEcpKXtIPUc7Rz17fX1yZXR1cm4gby5hamF4KHt0eXBlOiJQT1NUIix1cmw6RSxkYXRhOkcsc3VjY2VzczpILGRhdGFUeXBlOkZ9KX0sYWpheFNldHVwOmZ1bmN0aW9uKEUpe28uZXh0ZW5kKG8uYWpheFNldHRpbmdzLEUpfSxhamF4U2V0dGluZ3M6e3VybDpsb2NhdGlvbi5ocmVmLGdsb2JhbDp0cnVlLHR5cGU6IkdFVCIsY29udGVudFR5cGU6ImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIscHJvY2Vzc0RhdGE6dHJ1ZSxhc3luYzp0cnVlLHhocjpmdW5jdGlvbigpe3JldHVybiBsLkFjdGl2ZVhPYmplY3Q/bmV3IEFjdGl2ZVhPYmplY3QoIk1pY3Jvc29mdC5YTUxIVFRQIik6bmV3IFhNTEh0dHBSZXF1ZXN0KCl9LGFjY2VwdHM6e3htbDoiYXBwbGljYXRpb24veG1sLCB0ZXh0L3htbCIsaHRtbDoidGV4dC9odG1sIixzY3JpcHQ6InRleHQvamF2YXNjcmlwdCwgYXBwbGljYXRpb24vamF2YXNjcmlwdCIsanNvbjoiYXBwbGljYXRpb24vanNvbiwgdGV4dC9qYXZhc2NyaXB0Iix0ZXh0OiJ0ZXh0L3BsYWluIixfZGVmYXVsdDoiKi8qIn19LGxhc3RNb2RpZmllZDp7fSxhamF4OmZ1bmN0aW9uKE0pe009by5leHRlbmQodHJ1ZSxNLG8uZXh0ZW5kKHRydWUse30sby5hamF4U2V0dGluZ3MsTSkpO3ZhciBXLEY9Lz1cPygmfCQpL2csUixWLEc9TS50eXBlLnRvVXBwZXJDYXNlKCk7aWYoTS5kYXRhJiZNLnByb2Nlc3NEYXRhJiZ0eXBlb2YgTS5kYXRhIT09InN0cmluZyIpe00uZGF0YT1vLnBhcmFtKE0uZGF0YSl9aWYoTS5kYXRhVHlwZT09Impzb25wIil7aWYoRz09IkdFVCIpe2lmKCFNLnVybC5tYXRjaChGKSl7TS51cmwrPShNLnVybC5tYXRjaCgvXD8vKT8iJiI6Ij8iKSsoTS5qc29ucHx8ImNhbGxiYWNrIikrIj0/In19ZWxzZXtpZighTS5kYXRhfHwhTS5kYXRhLm1hdGNoKEYpKXtNLmRhdGE9KE0uZGF0YT9NLmRhdGErIiYiOiIiKSsoTS5qc29ucHx8ImNhbGxiYWNrIikrIj0/In19TS5kYXRhVHlwZT0ianNvbiJ9aWYoTS5kYXRhVHlwZT09Impzb24iJiYoTS5kYXRhJiZNLmRhdGEubWF0Y2goRil8fE0udXJsLm1hdGNoKEYpKSl7Vz0ianNvbnAiK3IrKztpZihNLmRhdGEpe00uZGF0YT0oTS5kYXRhKyIiKS5yZXBsYWNlKEYsIj0iK1crIiQxIil9TS51cmw9TS51cmwucmVwbGFjZShGLCI9IitXKyIkMSIpO00uZGF0YVR5cGU9InNjcmlwdCI7bFtXXT1mdW5jdGlvbihYKXtWPVg7SSgpO0woKTtsW1ddPWc7dHJ5e2RlbGV0ZSBsW1ddfWNhdGNoKFkpe31pZihIKXtILnJlbW92ZUNoaWxkKFQpfX19aWYoTS5kYXRhVHlwZT09InNjcmlwdCImJk0uY2FjaGU9PW51bGwpe00uY2FjaGU9ZmFsc2V9aWYoTS5jYWNoZT09PWZhbHNlJiZHPT0iR0VUIil7dmFyIEU9ZSgpO3ZhciBVPU0udXJsLnJlcGxhY2UoLyhcP3wmKV89Lio/KCZ8JCkvLCIkMV89IitFKyIkMiIpO00udXJsPVUrKChVPT1NLnVybCk/KE0udXJsLm1hdGNoKC9cPy8pPyImIjoiPyIpKyJfPSIrRToiIil9aWYoTS5kYXRhJiZHPT0iR0VUIil7TS51cmwrPShNLnVybC5tYXRjaCgvXD8vKT8iJiI6Ij8iKStNLmRhdGE7TS5kYXRhPW51bGx9aWYoTS5nbG9iYWwmJiFvLmFjdGl2ZSsrKXtvLmV2ZW50LnRyaWdnZXIoImFqYXhTdGFydCIpfXZhciBRPS9eKFx3KzopP1wvXC8oW15cLz8jXSspLy5leGVjKE0udXJsKTtpZihNLmRhdGFUeXBlPT0ic2NyaXB0IiYmRz09IkdFVCImJlEmJihRWzFdJiZRWzFdIT1sb2NhdGlvbi5wcm90b2NvbHx8UVsyXSE9bG9jYXRpb24uaG9zdCkpe3ZhciBIPWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF07dmFyIFQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7VC5zcmM9TS51cmw7aWYoTS5zY3JpcHRDaGFyc2V0KXtULmNoYXJzZXQ9TS5zY3JpcHRDaGFyc2V0fWlmKCFXKXt2YXIgTz1mYWxzZTtULm9ubG9hZD1ULm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbigpe2lmKCFPJiYoIXRoaXMucmVhZHlTdGF0ZXx8dGhpcy5yZWFkeVN0YXRlPT0ibG9hZGVkInx8dGhpcy5yZWFkeVN0YXRlPT0iY29tcGxldGUiKSl7Tz10cnVlO0koKTtMKCk7VC5vbmxvYWQ9VC5vbnJlYWR5c3RhdGVjaGFuZ2U9bnVsbDtILnJlbW92ZUNoaWxkKFQpfX19SC5hcHBlbmRDaGlsZChUKTtyZXR1cm4gZ312YXIgSz1mYWxzZTt2YXIgSj1NLnhocigpO2lmKE0udXNlcm5hbWUpe0oub3BlbihHLE0udXJsLE0uYXN5bmMsTS51c2VybmFtZSxNLnBhc3N3b3JkKX1lbHNle0oub3BlbihHLE0udXJsLE0uYXN5bmMpfXRyeXtpZihNLmRhdGEpe0ouc2V0UmVxdWVzdEhlYWRlcigiQ29udGVudC1UeXBlIixNLmNvbnRlbnRUeXBlKX1pZihNLmlmTW9kaWZpZWQpe0ouc2V0UmVxdWVzdEhlYWRlcigiSWYtTW9kaWZpZWQtU2luY2UiLG8ubGFzdE1vZGlmaWVkW00udXJsXXx8IlRodSwgMDEgSmFuIDE5NzAgMDA6MDA6MDAgR01UIil9Si5zZXRSZXF1ZXN0SGVhZGVyKCJYLVJlcXVlc3RlZC1XaXRoIiwiWE1MSHR0cFJlcXVlc3QiKTtKLnNldFJlcXVlc3RIZWFkZXIoIkFjY2VwdCIsTS5kYXRhVHlwZSYmTS5hY2NlcHRzW00uZGF0YVR5cGVdP00uYWNjZXB0c1tNLmRhdGFUeXBlXSsiLCAqLyoiOk0uYWNjZXB0cy5fZGVmYXVsdCl9Y2F0Y2goUyl7fWlmKE0uYmVmb3JlU2VuZCYmTS5iZWZvcmVTZW5kKEosTSk9PT1mYWxzZSl7aWYoTS5nbG9iYWwmJiEtLW8uYWN0aXZlKXtvLmV2ZW50LnRyaWdnZXIoImFqYXhTdG9wIil9Si5hYm9ydCgpO3JldHVybiBmYWxzZX1pZihNLmdsb2JhbCl7by5ldmVudC50cmlnZ2VyKCJhamF4U2VuZCIsW0osTV0pfXZhciBOPWZ1bmN0aW9uKFgpe2lmKEoucmVhZHlTdGF0ZT09MCl7aWYoUCl7Y2xlYXJJbnRlcnZhbChQKTtQPW51bGw7aWYoTS5nbG9iYWwmJiEtLW8uYWN0aXZlKXtvLmV2ZW50LnRyaWdnZXIoImFqYXhTdG9wIil9fX1lbHNle2lmKCFLJiZKJiYoSi5yZWFkeVN0YXRlPT00fHxYPT0idGltZW91dCIpKXtLPXRydWU7aWYoUCl7Y2xlYXJJbnRlcnZhbChQKTtQPW51bGx9Uj1YPT0idGltZW91dCI/InRpbWVvdXQiOiFvLmh0dHBTdWNjZXNzKEopPyJlcnJvciI6TS5pZk1vZGlmaWVkJiZvLmh0dHBOb3RNb2RpZmllZChKLE0udXJsKT8ibm90bW9kaWZpZWQiOiJzdWNjZXNzIjtpZihSPT0ic3VjY2VzcyIpe3RyeXtWPW8uaHR0cERhdGEoSixNLmRhdGFUeXBlLE0pfWNhdGNoKFope1I9InBhcnNlcmVycm9yIn19aWYoUj09InN1Y2Nlc3MiKXt2YXIgWTt0cnl7WT1KLmdldFJlc3BvbnNlSGVhZGVyKCJMYXN0LU1vZGlmaWVkIil9Y2F0Y2goWil7fWlmKE0uaWZNb2RpZmllZCYmWSl7by5sYXN0TW9kaWZpZWRbTS51cmxdPVl9aWYoIVcpe0koKX19ZWxzZXtvLmhhbmRsZUVycm9yKE0sSixSKX1MKCk7aWYoWCl7Si5hYm9ydCgpfWlmKE0uYXN5bmMpe0o9bnVsbH19fX07aWYoTS5hc3luYyl7dmFyIFA9c2V0SW50ZXJ2YWwoTiwxMyk7aWYoTS50aW1lb3V0PjApe3NldFRpbWVvdXQoZnVuY3Rpb24oKXtpZihKJiYhSyl7TigidGltZW91dCIpfX0sTS50aW1lb3V0KX19dHJ5e0ouc2VuZChNLmRhdGEpfWNhdGNoKFMpe28uaGFuZGxlRXJyb3IoTSxKLG51bGwsUyl9aWYoIU0uYXN5bmMpe04oKX1mdW5jdGlvbiBJKCl7aWYoTS5zdWNjZXNzKXtNLnN1Y2Nlc3MoVixSKX1pZihNLmdsb2JhbCl7by5ldmVudC50cmlnZ2VyKCJhamF4U3VjY2VzcyIsW0osTV0pfX1mdW5jdGlvbiBMKCl7aWYoTS5jb21wbGV0ZSl7TS5jb21wbGV0ZShKLFIpfWlmKE0uZ2xvYmFsKXtvLmV2ZW50LnRyaWdnZXIoImFqYXhDb21wbGV0ZSIsW0osTV0pfWlmKE0uZ2xvYmFsJiYhLS1vLmFjdGl2ZSl7by5ldmVudC50cmlnZ2VyKCJhamF4U3RvcCIpfX1yZXR1cm4gSn0saGFuZGxlRXJyb3I6ZnVuY3Rpb24oRixILEUsRyl7aWYoRi5lcnJvcil7Ri5lcnJvcihILEUsRyl9aWYoRi5nbG9iYWwpe28uZXZlbnQudHJpZ2dlcigiYWpheEVycm9yIixbSCxGLEddKX19LGFjdGl2ZTowLGh0dHBTdWNjZXNzOmZ1bmN0aW9uKEYpe3RyeXtyZXR1cm4gIUYuc3RhdHVzJiZsb2NhdGlvbi5wcm90b2NvbD09ImZpbGU6Inx8KEYuc3RhdHVzPj0yMDAmJkYuc3RhdHVzPDMwMCl8fEYuc3RhdHVzPT0zMDR8fEYuc3RhdHVzPT0xMjIzfWNhdGNoKEUpe31yZXR1cm4gZmFsc2V9LGh0dHBOb3RNb2RpZmllZDpmdW5jdGlvbihHLEUpe3RyeXt2YXIgSD1HLmdldFJlc3BvbnNlSGVhZGVyKCJMYXN0LU1vZGlmaWVkIik7cmV0dXJuIEcuc3RhdHVzPT0zMDR8fEg9PW8ubGFzdE1vZGlmaWVkW0VdfWNhdGNoKEYpe31yZXR1cm4gZmFsc2V9LGh0dHBEYXRhOmZ1bmN0aW9uKEosSCxHKXt2YXIgRj1KLmdldFJlc3BvbnNlSGVhZGVyKCJjb250ZW50LXR5cGUiKSxFPUg9PSJ4bWwifHwhSCYmRiYmRi5pbmRleE9mKCJ4bWwiKT49MCxJPUU/Si5yZXNwb25zZVhNTDpKLnJlc3BvbnNlVGV4dDtpZihFJiZJLmRvY3VtZW50RWxlbWVudC50YWdOYW1lPT0icGFyc2VyZXJyb3IiKXt0aHJvdyJwYXJzZXJlcnJvciJ9aWYoRyYmRy5kYXRhRmlsdGVyKXtJPUcuZGF0YUZpbHRlcihJLEgpfWlmKHR5cGVvZiBJPT09InN0cmluZyIpe2lmKEg9PSJzY3JpcHQiKXtvLmdsb2JhbEV2YWwoSSl9aWYoSD09Impzb24iKXtJPWxbImV2YWwiXSgiKCIrSSsiKSIpfX1yZXR1cm4gSX0scGFyYW06ZnVuY3Rpb24oRSl7dmFyIEc9W107ZnVuY3Rpb24gSChJLEope0dbRy5sZW5ndGhdPWVuY29kZVVSSUNvbXBvbmVudChJKSsiPSIrZW5jb2RlVVJJQ29tcG9uZW50KEopfWlmKG8uaXNBcnJheShFKXx8RS5qcXVlcnkpe28uZWFjaChFLGZ1bmN0aW9uKCl7SCh0aGlzLm5hbWUsdGhpcy52YWx1ZSl9KX1lbHNle2Zvcih2YXIgRiBpbiBFKXtpZihvLmlzQXJyYXkoRVtGXSkpe28uZWFjaChFW0ZdLGZ1bmN0aW9uKCl7SChGLHRoaXMpfSl9ZWxzZXtIKEYsby5pc0Z1bmN0aW9uKEVbRl0pP0VbRl0oKTpFW0ZdKX19fXJldHVybiBHLmpvaW4oIiYiKS5yZXBsYWNlKC8lMjAvZywiKyIpfX0pO3ZhciBtPXt9LG4sZD1bWyJoZWlnaHQiLCJtYXJnaW5Ub3AiLCJtYXJnaW5Cb3R0b20iLCJwYWRkaW5nVG9wIiwicGFkZGluZ0JvdHRvbSJdLFsid2lkdGgiLCJtYXJnaW5MZWZ0IiwibWFyZ2luUmlnaHQiLCJwYWRkaW5nTGVmdCIsInBhZGRpbmdSaWdodCJdLFsib3BhY2l0eSJdXTtmdW5jdGlvbiB0KEYsRSl7dmFyIEc9e307by5lYWNoKGQuY29uY2F0LmFwcGx5KFtdLGQuc2xpY2UoMCxFKSksZnVuY3Rpb24oKXtHW3RoaXNdPUZ9KTtyZXR1cm4gR31vLmZuLmV4dGVuZCh7c2hvdzpmdW5jdGlvbihKLEwpe2lmKEope3JldHVybiB0aGlzLmFuaW1hdGUodCgic2hvdyIsMyksSixMKX1lbHNle2Zvcih2YXIgSD0wLEY9dGhpcy5sZW5ndGg7SDxGO0grKyl7dmFyIEU9by5kYXRhKHRoaXNbSF0sIm9sZGRpc3BsYXkiKTt0aGlzW0hdLnN0eWxlLmRpc3BsYXk9RXx8IiI7aWYoby5jc3ModGhpc1tIXSwiZGlzcGxheSIpPT09Im5vbmUiKXt2YXIgRz10aGlzW0hdLnRhZ05hbWUsSztpZihtW0ddKXtLPW1bR119ZWxzZXt2YXIgST1vKCI8IitHKyIgLz4iKS5hcHBlbmRUbygiYm9keSIpO0s9SS5jc3MoImRpc3BsYXkiKTtpZihLPT09Im5vbmUiKXtLPSJibG9jayJ9SS5yZW1vdmUoKTttW0ddPUt9by5kYXRhKHRoaXNbSF0sIm9sZGRpc3BsYXkiLEspfX1mb3IodmFyIEg9MCxGPXRoaXMubGVuZ3RoO0g8RjtIKyspe3RoaXNbSF0uc3R5bGUuZGlzcGxheT1vLmRhdGEodGhpc1tIXSwib2xkZGlzcGxheSIpfHwiIn1yZXR1cm4gdGhpc319LGhpZGU6ZnVuY3Rpb24oSCxJKXtpZihIKXtyZXR1cm4gdGhpcy5hbmltYXRlKHQoImhpZGUiLDMpLEgsSSl9ZWxzZXtmb3IodmFyIEc9MCxGPXRoaXMubGVuZ3RoO0c8RjtHKyspe3ZhciBFPW8uZGF0YSh0aGlzW0ddLCJvbGRkaXNwbGF5Iik7aWYoIUUmJkUhPT0ibm9uZSIpe28uZGF0YSh0aGlzW0ddLCJvbGRkaXNwbGF5IixvLmNzcyh0aGlzW0ddLCJkaXNwbGF5IikpfX1mb3IodmFyIEc9MCxGPXRoaXMubGVuZ3RoO0c8RjtHKyspe3RoaXNbR10uc3R5bGUuZGlzcGxheT0ibm9uZSJ9cmV0dXJuIHRoaXN9fSxfdG9nZ2xlOm8uZm4udG9nZ2xlLHRvZ2dsZTpmdW5jdGlvbihHLEYpe3ZhciBFPXR5cGVvZiBHPT09ImJvb2xlYW4iO3JldHVybiBvLmlzRnVuY3Rpb24oRykmJm8uaXNGdW5jdGlvbihGKT90aGlzLl90b2dnbGUuYXBwbHkodGhpcyxhcmd1bWVudHMpOkc9PW51bGx8fEU/dGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIEg9RT9HOm8odGhpcykuaXMoIjpoaWRkZW4iKTtvKHRoaXMpW0g/InNob3ciOiJoaWRlIl0oKX0pOnRoaXMuYW5pbWF0ZSh0KCJ0b2dnbGUiLDMpLEcsRil9LGZhZGVUbzpmdW5jdGlvbihFLEcsRil7cmV0dXJuIHRoaXMuYW5pbWF0ZSh7b3BhY2l0eTpHfSxFLEYpfSxhbmltYXRlOmZ1bmN0aW9uKEksRixILEcpe3ZhciBFPW8uc3BlZWQoRixILEcpO3JldHVybiB0aGlzW0UucXVldWU9PT1mYWxzZT8iZWFjaCI6InF1ZXVlIl0oZnVuY3Rpb24oKXt2YXIgSz1vLmV4dGVuZCh7fSxFKSxNLEw9dGhpcy5ub2RlVHlwZT09MSYmbyh0aGlzKS5pcygiOmhpZGRlbiIpLEo9dGhpcztmb3IoTSBpbiBJKXtpZihJW01dPT0iaGlkZSImJkx8fElbTV09PSJzaG93IiYmIUwpe3JldHVybiBLLmNvbXBsZXRlLmNhbGwodGhpcyl9aWYoKE09PSJoZWlnaHQifHxNPT0id2lkdGgiKSYmdGhpcy5zdHlsZSl7Sy5kaXNwbGF5PW8uY3NzKHRoaXMsImRpc3BsYXkiKTtLLm92ZXJmbG93PXRoaXMuc3R5bGUub3ZlcmZsb3d9fWlmKEsub3ZlcmZsb3chPW51bGwpe3RoaXMuc3R5bGUub3ZlcmZsb3c9ImhpZGRlbiJ9Sy5jdXJBbmltPW8uZXh0ZW5kKHt9LEkpO28uZWFjaChJLGZ1bmN0aW9uKE8sUyl7dmFyIFI9bmV3IG8uZngoSixLLE8pO2lmKC90b2dnbGV8c2hvd3xoaWRlLy50ZXN0KFMpKXtSW1M9PSJ0b2dnbGUiP0w/InNob3ciOiJoaWRlIjpTXShJKX1lbHNle3ZhciBRPVMudG9TdHJpbmcoKS5tYXRjaCgvXihbKy1dPSk/KFtcZCstLl0rKSguKikkLyksVD1SLmN1cih0cnVlKXx8MDtpZihRKXt2YXIgTj1wYXJzZUZsb2F0KFFbMl0pLFA9UVszXXx8InB4IjtpZihQIT0icHgiKXtKLnN0eWxlW09dPShOfHwxKStQO1Q9KChOfHwxKS9SLmN1cih0cnVlKSkqVDtKLnN0eWxlW09dPVQrUH1pZihRWzFdKXtOPSgoUVsxXT09Ii09Ij8tMToxKSpOKStUfVIuY3VzdG9tKFQsTixQKX1lbHNle1IuY3VzdG9tKFQsUywiIil9fX0pO3JldHVybiB0cnVlfSl9LHN0b3A6ZnVuY3Rpb24oRixFKXt2YXIgRz1vLnRpbWVycztpZihGKXt0aGlzLnF1ZXVlKFtdKX10aGlzLmVhY2goZnVuY3Rpb24oKXtmb3IodmFyIEg9Ry5sZW5ndGgtMTtIPj0wO0gtLSl7aWYoR1tIXS5lbGVtPT10aGlzKXtpZihFKXtHW0hdKHRydWUpfUcuc3BsaWNlKEgsMSl9fX0pO2lmKCFFKXt0aGlzLmRlcXVldWUoKX1yZXR1cm4gdGhpc319KTtvLmVhY2goe3NsaWRlRG93bjp0KCJzaG93IiwxKSxzbGlkZVVwOnQoImhpZGUiLDEpLHNsaWRlVG9nZ2xlOnQoInRvZ2dsZSIsMSksZmFkZUluOntvcGFjaXR5OiJzaG93In0sZmFkZU91dDp7b3BhY2l0eToiaGlkZSJ9fSxmdW5jdGlvbihFLEYpe28uZm5bRV09ZnVuY3Rpb24oRyxIKXtyZXR1cm4gdGhpcy5hbmltYXRlKEYsRyxIKX19KTtvLmV4dGVuZCh7c3BlZWQ6ZnVuY3Rpb24oRyxILEYpe3ZhciBFPXR5cGVvZiBHPT09Im9iamVjdCI/Rzp7Y29tcGxldGU6Rnx8IUYmJkh8fG8uaXNGdW5jdGlvbihHKSYmRyxkdXJhdGlvbjpHLGVhc2luZzpGJiZIfHxIJiYhby5pc0Z1bmN0aW9uKEgpJiZIfTtFLmR1cmF0aW9uPW8uZngub2ZmPzA6dHlwZW9mIEUuZHVyYXRpb249PT0ibnVtYmVyIj9FLmR1cmF0aW9uOm8uZnguc3BlZWRzW0UuZHVyYXRpb25dfHxvLmZ4LnNwZWVkcy5fZGVmYXVsdDtFLm9sZD1FLmNvbXBsZXRlO0UuY29tcGxldGU9ZnVuY3Rpb24oKXtpZihFLnF1ZXVlIT09ZmFsc2Upe28odGhpcykuZGVxdWV1ZSgpfWlmKG8uaXNGdW5jdGlvbihFLm9sZCkpe0Uub2xkLmNhbGwodGhpcyl9fTtyZXR1cm4gRX0sZWFzaW5nOntsaW5lYXI6ZnVuY3Rpb24oRyxILEUsRil7cmV0dXJuIEUrRipHfSxzd2luZzpmdW5jdGlvbihHLEgsRSxGKXtyZXR1cm4oKC1NYXRoLmNvcyhHKk1hdGguUEkpLzIpKzAuNSkqRitFfX0sdGltZXJzOltdLGZ4OmZ1bmN0aW9uKEYsRSxHKXt0aGlzLm9wdGlvbnM9RTt0aGlzLmVsZW09Rjt0aGlzLnByb3A9RztpZighRS5vcmlnKXtFLm9yaWc9e319fX0pO28uZngucHJvdG90eXBlPXt1cGRhdGU6ZnVuY3Rpb24oKXtpZih0aGlzLm9wdGlvbnMuc3RlcCl7dGhpcy5vcHRpb25zLnN0ZXAuY2FsbCh0aGlzLmVsZW0sdGhpcy5ub3csdGhpcyl9KG8uZnguc3RlcFt0aGlzLnByb3BdfHxvLmZ4LnN0ZXAuX2RlZmF1bHQpKHRoaXMpO2lmKCh0aGlzLnByb3A9PSJoZWlnaHQifHx0aGlzLnByb3A9PSJ3aWR0aCIpJiZ0aGlzLmVsZW0uc3R5bGUpe3RoaXMuZWxlbS5zdHlsZS5kaXNwbGF5PSJibG9jayJ9fSxjdXI6ZnVuY3Rpb24oRil7aWYodGhpcy5lbGVtW3RoaXMucHJvcF0hPW51bGwmJighdGhpcy5lbGVtLnN0eWxlfHx0aGlzLmVsZW0uc3R5bGVbdGhpcy5wcm9wXT09bnVsbCkpe3JldHVybiB0aGlzLmVsZW1bdGhpcy5wcm9wXX12YXIgRT1wYXJzZUZsb2F0KG8uY3NzKHRoaXMuZWxlbSx0aGlzLnByb3AsRikpO3JldHVybiBFJiZFPi0xMDAwMD9FOnBhcnNlRmxvYXQoby5jdXJDU1ModGhpcy5lbGVtLHRoaXMucHJvcCkpfHwwfSxjdXN0b206ZnVuY3Rpb24oSSxILEcpe3RoaXMuc3RhcnRUaW1lPWUoKTt0aGlzLnN0YXJ0PUk7dGhpcy5lbmQ9SDt0aGlzLnVuaXQ9R3x8dGhpcy51bml0fHwicHgiO3RoaXMubm93PXRoaXMuc3RhcnQ7dGhpcy5wb3M9dGhpcy5zdGF0ZT0wO3ZhciBFPXRoaXM7ZnVuY3Rpb24gRihKKXtyZXR1cm4gRS5zdGVwKEopfUYuZWxlbT10aGlzLmVsZW07aWYoRigpJiZvLnRpbWVycy5wdXNoKEYpJiYhbil7bj1zZXRJbnRlcnZhbChmdW5jdGlvbigpe3ZhciBLPW8udGltZXJzO2Zvcih2YXIgSj0wO0o8Sy5sZW5ndGg7SisrKXtpZighS1tKXSgpKXtLLnNwbGljZShKLS0sMSl9fWlmKCFLLmxlbmd0aCl7Y2xlYXJJbnRlcnZhbChuKTtuPWd9fSwxMyl9fSxzaG93OmZ1bmN0aW9uKCl7dGhpcy5vcHRpb25zLm9yaWdbdGhpcy5wcm9wXT1vLmF0dHIodGhpcy5lbGVtLnN0eWxlLHRoaXMucHJvcCk7dGhpcy5vcHRpb25zLnNob3c9dHJ1ZTt0aGlzLmN1c3RvbSh0aGlzLnByb3A9PSJ3aWR0aCJ8fHRoaXMucHJvcD09ImhlaWdodCI/MTowLHRoaXMuY3VyKCkpO28odGhpcy5lbGVtKS5zaG93KCl9LGhpZGU6ZnVuY3Rpb24oKXt0aGlzLm9wdGlvbnMub3JpZ1t0aGlzLnByb3BdPW8uYXR0cih0aGlzLmVsZW0uc3R5bGUsdGhpcy5wcm9wKTt0aGlzLm9wdGlvbnMuaGlkZT10cnVlO3RoaXMuY3VzdG9tKHRoaXMuY3VyKCksMCl9LHN0ZXA6ZnVuY3Rpb24oSCl7dmFyIEc9ZSgpO2lmKEh8fEc+PXRoaXMub3B0aW9ucy5kdXJhdGlvbit0aGlzLnN0YXJ0VGltZSl7dGhpcy5ub3c9dGhpcy5lbmQ7dGhpcy5wb3M9dGhpcy5zdGF0ZT0xO3RoaXMudXBkYXRlKCk7dGhpcy5vcHRpb25zLmN1ckFuaW1bdGhpcy5wcm9wXT10cnVlO3ZhciBFPXRydWU7Zm9yKHZhciBGIGluIHRoaXMub3B0aW9ucy5jdXJBbmltKXtpZih0aGlzLm9wdGlvbnMuY3VyQW5pbVtGXSE9PXRydWUpe0U9ZmFsc2V9fWlmKEUpe2lmKHRoaXMub3B0aW9ucy5kaXNwbGF5IT1udWxsKXt0aGlzLmVsZW0uc3R5bGUub3ZlcmZsb3c9dGhpcy5vcHRpb25zLm92ZXJmbG93O3RoaXMuZWxlbS5zdHlsZS5kaXNwbGF5PXRoaXMub3B0aW9ucy5kaXNwbGF5O2lmKG8uY3NzKHRoaXMuZWxlbSwiZGlzcGxheSIpPT0ibm9uZSIpe3RoaXMuZWxlbS5zdHlsZS5kaXNwbGF5PSJibG9jayJ9fWlmKHRoaXMub3B0aW9ucy5oaWRlKXtvKHRoaXMuZWxlbSkuaGlkZSgpfWlmKHRoaXMub3B0aW9ucy5oaWRlfHx0aGlzLm9wdGlvbnMuc2hvdyl7Zm9yKHZhciBJIGluIHRoaXMub3B0aW9ucy5jdXJBbmltKXtvLmF0dHIodGhpcy5lbGVtLnN0eWxlLEksdGhpcy5vcHRpb25zLm9yaWdbSV0pfX10aGlzLm9wdGlvbnMuY29tcGxldGUuY2FsbCh0aGlzLmVsZW0pfXJldHVybiBmYWxzZX1lbHNle3ZhciBKPUctdGhpcy5zdGFydFRpbWU7dGhpcy5zdGF0ZT1KL3RoaXMub3B0aW9ucy5kdXJhdGlvbjt0aGlzLnBvcz1vLmVhc2luZ1t0aGlzLm9wdGlvbnMuZWFzaW5nfHwoby5lYXNpbmcuc3dpbmc/InN3aW5nIjoibGluZWFyIildKHRoaXMuc3RhdGUsSiwwLDEsdGhpcy5vcHRpb25zLmR1cmF0aW9uKTt0aGlzLm5vdz10aGlzLnN0YXJ0KygodGhpcy5lbmQtdGhpcy5zdGFydCkqdGhpcy5wb3MpO3RoaXMudXBkYXRlKCl9cmV0dXJuIHRydWV9fTtvLmV4dGVuZChvLmZ4LHtzcGVlZHM6e3Nsb3c6NjAwLGZhc3Q6MjAwLF9kZWZhdWx0OjQwMH0sc3RlcDp7b3BhY2l0eTpmdW5jdGlvbihFKXtvLmF0dHIoRS5lbGVtLnN0eWxlLCJvcGFjaXR5IixFLm5vdyl9LF9kZWZhdWx0OmZ1bmN0aW9uKEUpe2lmKEUuZWxlbS5zdHlsZSYmRS5lbGVtLnN0eWxlW0UucHJvcF0hPW51bGwpe0UuZWxlbS5zdHlsZVtFLnByb3BdPUUubm93K0UudW5pdH1lbHNle0UuZWxlbVtFLnByb3BdPUUubm93fX19fSk7aWYoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCl7by5mbi5vZmZzZXQ9ZnVuY3Rpb24oKXtpZighdGhpc1swXSl7cmV0dXJue3RvcDowLGxlZnQ6MH19aWYodGhpc1swXT09PXRoaXNbMF0ub3duZXJEb2N1bWVudC5ib2R5KXtyZXR1cm4gby5vZmZzZXQuYm9keU9mZnNldCh0aGlzWzBdKX12YXIgRz10aGlzWzBdLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLEo9dGhpc1swXS5vd25lckRvY3VtZW50LEY9Si5ib2R5LEU9Si5kb2N1bWVudEVsZW1lbnQsTD1FLmNsaWVudFRvcHx8Ri5jbGllbnRUb3B8fDAsSz1FLmNsaWVudExlZnR8fEYuY2xpZW50TGVmdHx8MCxJPUcudG9wKyhzZWxmLnBhZ2VZT2Zmc2V0fHxvLmJveE1vZGVsJiZFLnNjcm9sbFRvcHx8Ri5zY3JvbGxUb3ApLUwsSD1HLmxlZnQrKHNlbGYucGFnZVhPZmZzZXR8fG8uYm94TW9kZWwmJkUuc2Nyb2xsTGVmdHx8Ri5zY3JvbGxMZWZ0KS1LO3JldHVybnt0b3A6SSxsZWZ0Okh9fX1lbHNle28uZm4ub2Zmc2V0PWZ1bmN0aW9uKCl7aWYoIXRoaXNbMF0pe3JldHVybnt0b3A6MCxsZWZ0OjB9fWlmKHRoaXNbMF09PT10aGlzWzBdLm93bmVyRG9jdW1lbnQuYm9keSl7cmV0dXJuIG8ub2Zmc2V0LmJvZHlPZmZzZXQodGhpc1swXSl9by5vZmZzZXQuaW5pdGlhbGl6ZWR8fG8ub2Zmc2V0LmluaXRpYWxpemUoKTt2YXIgSj10aGlzWzBdLEc9Si5vZmZzZXRQYXJlbnQsRj1KLE89Si5vd25lckRvY3VtZW50LE0sSD1PLmRvY3VtZW50RWxlbWVudCxLPU8uYm9keSxMPU8uZGVmYXVsdFZpZXcsRT1MLmdldENvbXB1dGVkU3R5bGUoSixudWxsKSxOPUoub2Zmc2V0VG9wLEk9Si5vZmZzZXRMZWZ0O3doaWxlKChKPUoucGFyZW50Tm9kZSkmJkohPT1LJiZKIT09SCl7TT1MLmdldENvbXB1dGVkU3R5bGUoSixudWxsKTtOLT1KLnNjcm9sbFRvcCxJLT1KLnNjcm9sbExlZnQ7aWYoSj09PUcpe04rPUoub2Zmc2V0VG9wLEkrPUoub2Zmc2V0TGVmdDtpZihvLm9mZnNldC5kb2VzTm90QWRkQm9yZGVyJiYhKG8ub2Zmc2V0LmRvZXNBZGRCb3JkZXJGb3JUYWJsZUFuZENlbGxzJiYvXnQoYWJsZXxkfGgpJC9pLnRlc3QoSi50YWdOYW1lKSkpe04rPXBhcnNlSW50KE0uYm9yZGVyVG9wV2lkdGgsMTApfHwwLEkrPXBhcnNlSW50KE0uYm9yZGVyTGVmdFdpZHRoLDEwKXx8MH1GPUcsRz1KLm9mZnNldFBhcmVudH1pZihvLm9mZnNldC5zdWJ0cmFjdHNCb3JkZXJGb3JPdmVyZmxvd05vdFZpc2libGUmJk0ub3ZlcmZsb3chPT0idmlzaWJsZSIpe04rPXBhcnNlSW50KE0uYm9yZGVyVG9wV2lkdGgsMTApfHwwLEkrPXBhcnNlSW50KE0uYm9yZGVyTGVmdFdpZHRoLDEwKXx8MH1FPU19aWYoRS5wb3NpdGlvbj09PSJyZWxhdGl2ZSJ8fEUucG9zaXRpb249PT0ic3RhdGljIil7Tis9Sy5vZmZzZXRUb3AsSSs9Sy5vZmZzZXRMZWZ0fWlmKEUucG9zaXRpb249PT0iZml4ZWQiKXtOKz1NYXRoLm1heChILnNjcm9sbFRvcCxLLnNjcm9sbFRvcCksSSs9TWF0aC5tYXgoSC5zY3JvbGxMZWZ0LEsuc2Nyb2xsTGVmdCl9cmV0dXJue3RvcDpOLGxlZnQ6SX19fW8ub2Zmc2V0PXtpbml0aWFsaXplOmZ1bmN0aW9uKCl7aWYodGhpcy5pbml0aWFsaXplZCl7cmV0dXJufXZhciBMPWRvY3VtZW50LmJvZHksRj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSxILEcsTixJLE0sRSxKPUwuc3R5bGUubWFyZ2luVG9wLEs9JzxkaXYgc3R5bGU9InBvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MDttYXJnaW46MDtib3JkZXI6NXB4IHNvbGlkICMwMDA7cGFkZGluZzowO3dpZHRoOjFweDtoZWlnaHQ6MXB4OyI+PGRpdj48L2Rpdj48L2Rpdj48dGFibGUgc3R5bGU9InBvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MDttYXJnaW46MDtib3JkZXI6NXB4IHNvbGlkICMwMDA7cGFkZGluZzowO3dpZHRoOjFweDtoZWlnaHQ6MXB4OyIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj48dHI+PHRkPjwvdGQ+PC90cj48L3RhYmxlPic7TT17cG9zaXRpb246ImFic29sdXRlIix0b3A6MCxsZWZ0OjAsbWFyZ2luOjAsYm9yZGVyOjAsd2lkdGg6IjFweCIsaGVpZ2h0OiIxcHgiLHZpc2liaWxpdHk6ImhpZGRlbiJ9O2ZvcihFIGluIE0pe0Yuc3R5bGVbRV09TVtFXX1GLmlubmVySFRNTD1LO0wuaW5zZXJ0QmVmb3JlKEYsTC5maXJzdENoaWxkKTtIPUYuZmlyc3RDaGlsZCxHPUguZmlyc3RDaGlsZCxJPUgubmV4dFNpYmxpbmcuZmlyc3RDaGlsZC5maXJzdENoaWxkO3RoaXMuZG9lc05vdEFkZEJvcmRlcj0oRy5vZmZzZXRUb3AhPT01KTt0aGlzLmRvZXNBZGRCb3JkZXJGb3JUYWJsZUFuZENlbGxzPShJLm9mZnNldFRvcD09PTUpO0guc3R5bGUub3ZlcmZsb3c9ImhpZGRlbiIsSC5zdHlsZS5wb3NpdGlvbj0icmVsYXRpdmUiO3RoaXMuc3VidHJhY3RzQm9yZGVyRm9yT3ZlcmZsb3dOb3RWaXNpYmxlPShHLm9mZnNldFRvcD09PS01KTtMLnN0eWxlLm1hcmdpblRvcD0iMXB4Ijt0aGlzLmRvZXNOb3RJbmNsdWRlTWFyZ2luSW5Cb2R5T2Zmc2V0PShMLm9mZnNldFRvcD09PTApO0wuc3R5bGUubWFyZ2luVG9wPUo7TC5yZW1vdmVDaGlsZChGKTt0aGlzLmluaXRpYWxpemVkPXRydWV9LGJvZHlPZmZzZXQ6ZnVuY3Rpb24oRSl7by5vZmZzZXQuaW5pdGlhbGl6ZWR8fG8ub2Zmc2V0LmluaXRpYWxpemUoKTt2YXIgRz1FLm9mZnNldFRvcCxGPUUub2Zmc2V0TGVmdDtpZihvLm9mZnNldC5kb2VzTm90SW5jbHVkZU1hcmdpbkluQm9keU9mZnNldCl7Rys9cGFyc2VJbnQoby5jdXJDU1MoRSwibWFyZ2luVG9wIix0cnVlKSwxMCl8fDAsRis9cGFyc2VJbnQoby5jdXJDU1MoRSwibWFyZ2luTGVmdCIsdHJ1ZSksMTApfHwwfXJldHVybnt0b3A6RyxsZWZ0OkZ9fX07by5mbi5leHRlbmQoe3Bvc2l0aW9uOmZ1bmN0aW9uKCl7dmFyIEk9MCxIPTAsRjtpZih0aGlzWzBdKXt2YXIgRz10aGlzLm9mZnNldFBhcmVudCgpLEo9dGhpcy5vZmZzZXQoKSxFPS9eYm9keXxodG1sJC9pLnRlc3QoR1swXS50YWdOYW1lKT97dG9wOjAsbGVmdDowfTpHLm9mZnNldCgpO0oudG9wLT1qKHRoaXMsIm1hcmdpblRvcCIpO0oubGVmdC09aih0aGlzLCJtYXJnaW5MZWZ0Iik7RS50b3ArPWooRywiYm9yZGVyVG9wV2lkdGgiKTtFLmxlZnQrPWooRywiYm9yZGVyTGVmdFdpZHRoIik7Rj17dG9wOkoudG9wLUUudG9wLGxlZnQ6Si5sZWZ0LUUubGVmdH19cmV0dXJuIEZ9LG9mZnNldFBhcmVudDpmdW5jdGlvbigpe3ZhciBFPXRoaXNbMF0ub2Zmc2V0UGFyZW50fHxkb2N1bWVudC5ib2R5O3doaWxlKEUmJighL15ib2R5fGh0bWwkL2kudGVzdChFLnRhZ05hbWUpJiZvLmNzcyhFLCJwb3NpdGlvbiIpPT0ic3RhdGljIikpe0U9RS5vZmZzZXRQYXJlbnR9cmV0dXJuIG8oRSl9fSk7by5lYWNoKFsiTGVmdCIsIlRvcCJdLGZ1bmN0aW9uKEYsRSl7dmFyIEc9InNjcm9sbCIrRTtvLmZuW0ddPWZ1bmN0aW9uKEgpe2lmKCF0aGlzWzBdKXtyZXR1cm4gbnVsbH1yZXR1cm4gSCE9PWc/dGhpcy5lYWNoKGZ1bmN0aW9uKCl7dGhpcz09bHx8dGhpcz09ZG9jdW1lbnQ/bC5zY3JvbGxUbyghRj9IOm8obCkuc2Nyb2xsTGVmdCgpLEY/SDpvKGwpLnNjcm9sbFRvcCgpKTp0aGlzW0ddPUh9KTp0aGlzWzBdPT1sfHx0aGlzWzBdPT1kb2N1bWVudD9zZWxmW0Y/InBhZ2VZT2Zmc2V0IjoicGFnZVhPZmZzZXQiXXx8by5ib3hNb2RlbCYmZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50W0ddfHxkb2N1bWVudC5ib2R5W0ddOnRoaXNbMF1bR119fSk7by5lYWNoKFsiSGVpZ2h0IiwiV2lkdGgiXSxmdW5jdGlvbihJLEcpe3ZhciBFPUk/IkxlZnQiOiJUb3AiLEg9ST8iUmlnaHQiOiJCb3R0b20iLEY9Ry50b0xvd2VyQ2FzZSgpO28uZm5bImlubmVyIitHXT1mdW5jdGlvbigpe3JldHVybiB0aGlzWzBdP28uY3NzKHRoaXNbMF0sRixmYWxzZSwicGFkZGluZyIpOm51bGx9O28uZm5bIm91dGVyIitHXT1mdW5jdGlvbihLKXtyZXR1cm4gdGhpc1swXT9vLmNzcyh0aGlzWzBdLEYsZmFsc2UsSz8ibWFyZ2luIjoiYm9yZGVyIik6bnVsbH07dmFyIEo9Ry50b0xvd2VyQ2FzZSgpO28uZm5bSl09ZnVuY3Rpb24oSyl7cmV0dXJuIHRoaXNbMF09PWw/ZG9jdW1lbnQuY29tcGF0TW9kZT09IkNTUzFDb21wYXQiJiZkb2N1bWVudC5kb2N1bWVudEVsZW1lbnRbImNsaWVudCIrR118fGRvY3VtZW50LmJvZHlbImNsaWVudCIrR106dGhpc1swXT09ZG9jdW1lbnQ/TWF0aC5tYXgoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50WyJjbGllbnQiK0ddLGRvY3VtZW50LmJvZHlbInNjcm9sbCIrR10sZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50WyJzY3JvbGwiK0ddLGRvY3VtZW50LmJvZHlbIm9mZnNldCIrR10sZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50WyJvZmZzZXQiK0ddKTpLPT09Zz8odGhpcy5sZW5ndGg/by5jc3ModGhpc1swXSxKKTpudWxsKTp0aGlzLmNzcyhKLHR5cGVvZiBLPT09InN0cmluZyI/SzpLKyJweCIpfX0pfSkoKTs=]]></data>
	</file>
	<file>
	  <filename>/templates/jquery/jquery.tablednd.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIFRhYmxlRG5EIHBsdWctaW4gZm9yIEpRdWVyeSwgYWxsb3dzIHlvdSB0byBkcmFnIGFuZCBkcm9wIHRhYmxlIHJvd3MKICogWW91IGNhbiBzZXQgdXAgdmFyaW91cyBvcHRpb25zIHRvIGNvbnRyb2wgaG93IHRoZSBzeXN0ZW0gd2lsbCB3b3JrCiAqIENvcHlyaWdodCAoYykgRGVuaXMgSG93bGV0dCA8ZGVuaXNoQGlzb2NyYS5jb20+CiAqIExpY2Vuc2VkIGxpa2UgalF1ZXJ5LCBzZWUgaHR0cDovL2RvY3MuanF1ZXJ5LmNvbS9MaWNlbnNlLgogKgogKiBDb25maWd1cmF0aW9uIG9wdGlvbnM6CiAqIAogKiBvbkRyYWdTdHlsZQogKiAgICAgVGhpcyBpcyB0aGUgc3R5bGUgdGhhdCBpcyBhc3NpZ25lZCB0byB0aGUgcm93IGR1cmluZyBkcmFnLiBUaGVyZSBhcmUgbGltaXRhdGlvbnMgdG8gdGhlIHN0eWxlcyB0aGF0IGNhbiBiZQogKiAgICAgYXNzb2NpYXRlZCB3aXRoIGEgcm93IChzdWNoIGFzIHlvdSBjYW4ndCBhc3NpZ24gYSBib3JkZXItLXdlbGwgeW91IGNhbiwgYnV0IGl0IHdvbid0IGJlCiAqICAgICBkaXNwbGF5ZWQpLiAoU28gaW5zdGVhZCBjb25zaWRlciB1c2luZyBvbkRyYWdDbGFzcy4pIFRoZSBDU1Mgc3R5bGUgdG8gYXBwbHkgaXMgc3BlY2lmaWVkIGFzCiAqICAgICBhIG1hcCAoYXMgdXNlZCBpbiB0aGUgalF1ZXJ5IGNzcyguLi4pIGZ1bmN0aW9uKS4KICogb25Ecm9wU3R5bGUKICogICAgIFRoaXMgaXMgdGhlIHN0eWxlIHRoYXQgaXMgYXNzaWduZWQgdG8gdGhlIHJvdyB3aGVuIGl0IGlzIGRyb3BwZWQuIEFzIGZvciBvbkRyYWdTdHlsZSwgdGhlcmUgYXJlIGxpbWl0YXRpb25zCiAqICAgICB0byB3aGF0IHlvdSBjYW4gZG8uIEFsc28gdGhpcyByZXBsYWNlcyB0aGUgb3JpZ2luYWwgc3R5bGUsIHNvIGFnYWluIGNvbnNpZGVyIHVzaW5nIG9uRHJhZ0NsYXNzIHdoaWNoCiAqICAgICBpcyBzaW1wbHkgYWRkZWQgYW5kIHRoZW4gcmVtb3ZlZCBvbiBkcm9wLgogKiBvbkRyYWdDbGFzcwogKiAgICAgVGhpcyBjbGFzcyBpcyBhZGRlZCBmb3IgdGhlIGR1cmF0aW9uIG9mIHRoZSBkcmFnIGFuZCB0aGVuIHJlbW92ZWQgd2hlbiB0aGUgcm93IGlzIGRyb3BwZWQuIEl0IGlzIG1vcmUKICogICAgIGZsZXhpYmxlIHRoYW4gdXNpbmcgb25EcmFnU3R5bGUgc2luY2UgaXQgY2FuIGJlIGluaGVyaXRlZCBieSB0aGUgcm93IGNlbGxzIGFuZCBvdGhlciBjb250ZW50LiBUaGUgZGVmYXVsdAogKiAgICAgaXMgY2xhc3MgaXMgdERuRF93aGlsZURyYWcuIFNvIHRvIHVzZSB0aGUgZGVmYXVsdCwgc2ltcGx5IGN1c3RvbWlzZSB0aGlzIENTUyBjbGFzcyBpbiB5b3VyCiAqICAgICBzdHlsZXNoZWV0LgogKiBvbkRyb3AKICogICAgIFBhc3MgYSBmdW5jdGlvbiB0aGF0IHdpbGwgYmUgY2FsbGVkIHdoZW4gdGhlIHJvdyBpcyBkcm9wcGVkLiBUaGUgZnVuY3Rpb24gdGFrZXMgMiBwYXJhbWV0ZXJzOiB0aGUgdGFibGUKICogICAgIGFuZCB0aGUgcm93IHRoYXQgd2FzIGRyb3BwZWQuIFlvdSBjYW4gd29yayBvdXQgdGhlIG5ldyBvcmRlciBvZiB0aGUgcm93cyBieSB1c2luZwogKiAgICAgdGFibGUucm93cy4KICogb25EcmFnU3RhcnQKICogICAgIFBhc3MgYSBmdW5jdGlvbiB0aGF0IHdpbGwgYmUgY2FsbGVkIHdoZW4gdGhlIHVzZXIgc3RhcnRzIGRyYWdnaW5nLiBUaGUgZnVuY3Rpb24gdGFrZXMgMiBwYXJhbWV0ZXJzOiB0aGUKICogICAgIHRhYmxlIGFuZCB0aGUgcm93IHdoaWNoIHRoZSB1c2VyIGhhcyBzdGFydGVkIHRvIGRyYWcuCiAqIG9uQWxsb3dEcm9wCiAqICAgICBQYXNzIGEgZnVuY3Rpb24gdGhhdCB3aWxsIGJlIGNhbGxlZCBhcyBhIHJvdyBpcyBvdmVyIGFub3RoZXIgcm93LiBJZiB0aGUgZnVuY3Rpb24gcmV0dXJucyB0cnVlLCBhbGxvdyAKICogICAgIGRyb3BwaW5nIG9uIHRoYXQgcm93LCBvdGhlcndpc2Ugbm90LiBUaGUgZnVuY3Rpb24gdGFrZXMgMiBwYXJhbWV0ZXJzOiB0aGUgZHJhZ2dlZCByb3cgYW5kIHRoZSByb3cgdW5kZXIKICogICAgIHRoZSBjdXJzb3IuIEl0IHJldHVybnMgYSBib29sZWFuOiB0cnVlIGFsbG93cyB0aGUgZHJvcCwgZmFsc2UgZG9lc24ndCBhbGxvdyBpdC4KICogc2Nyb2xsQW1vdW50CiAqICAgICBUaGlzIGlzIHRoZSBudW1iZXIgb2YgcGl4ZWxzIHRvIHNjcm9sbCBpZiB0aGUgdXNlciBtb3ZlcyB0aGUgbW91c2UgY3Vyc29yIHRvIHRoZSB0b3Agb3IgYm90dG9tIG9mIHRoZQogKiAgICAgd2luZG93LiBUaGUgcGFnZSBzaG91bGQgYXV0b21hdGljYWxseSBzY3JvbGwgdXAgb3IgZG93biBhcyBhcHByb3ByaWF0ZSAodGVzdGVkIGluIElFNiwgSUU3LCBTYWZhcmksIEZGMiwKICogICAgIEZGMyBiZXRhCiAqIGRyYWdIYW5kbGUKICogICAgIFRoaXMgaXMgdGhlIG5hbWUgb2YgYSBjbGFzcyB0aGF0IHlvdSBhc3NpZ24gdG8gb25lIG9yIG1vcmUgY2VsbHMgaW4gZWFjaCByb3cgdGhhdCBpcyBkcmFnZ2FibGUuIElmIHlvdQogKiAgICAgc3BlY2lmeSB0aGlzIGNsYXNzLCB0aGVuIHlvdSBhcmUgcmVzcG9uc2libGUgZm9yIHNldHRpbmcgY3Vyc29yOiBtb3ZlIGluIHRoZSBDU1MgYW5kIG9ubHkgdGhlc2UgY2VsbHMKICogICAgIHdpbGwgaGF2ZSB0aGUgZHJhZyBiZWhhdmlvdXIuIElmIHlvdSBkbyBub3Qgc3BlY2lmeSBhIGRyYWdIYW5kbGUsIHRoZW4geW91IGdldCB0aGUgb2xkIGJlaGF2aW91ciB3aGVyZQogKiAgICAgdGhlIHdob2xlIHJvdyBpcyBkcmFnZ2FibGUuCiAqIAogKiBPdGhlciB3YXlzIHRvIGNvbnRyb2wgYmVoYXZpb3VyOgogKgogKiBBZGQgY2xhc3M9Im5vZHJvcCIgdG8gYW55IHJvd3MgZm9yIHdoaWNoIHlvdSBkb24ndCB3YW50IHRvIGFsbG93IGRyb3BwaW5nLCBhbmQgY2xhc3M9Im5vZHJhZyIgdG8gYW55IHJvd3MKICogdGhhdCB5b3UgZG9uJ3Qgd2FudCB0byBiZSBkcmFnZ2FibGUuCiAqCiAqIEluc2lkZSB0aGUgb25Ecm9wIG1ldGhvZCB5b3UgY2FuIGFsc28gY2FsbCAkLnRhYmxlRG5ELnNlcmlhbGl6ZSgpIHRoaXMgcmV0dXJucyBhIHN0cmluZyBvZiB0aGUgZm9ybQogKiA8dGFibGVJRD5bXT08cm93SUQxPiY8dGFibGVJRD5bXT08cm93SUQyPiBzbyB0aGF0IHlvdSBjYW4gc2VuZCB0aGlzIGJhY2sgdG8gdGhlIHNlcnZlci4gVGhlIHRhYmxlIG11c3QgaGF2ZQogKiBhbiBJRCBhcyBtdXN0IGFsbCB0aGUgcm93cy4KICoKICogT3RoZXIgbWV0aG9kczoKICoKICogJCgiLi4uIikudGFibGVEbkRVcGRhdGUoKSAKICogV2lsbCB1cGRhdGUgYWxsIHRoZSBtYXRjaGluZyB0YWJsZXMsIHRoYXQgaXMgaXQgd2lsbCByZWFwcGx5IHRoZSBtb3VzZWRvd24gbWV0aG9kIHRvIHRoZSByb3dzIChvciBoYW5kbGUgY2VsbHMpLgogKiBUaGlzIGlzIHVzZWZ1bCBpZiB5b3UgaGF2ZSB1cGRhdGVkIHRoZSB0YWJsZSByb3dzIHVzaW5nIEFqYXggYW5kIHlvdSB3YW50IHRvIG1ha2UgdGhlIHRhYmxlIGRyYWdnYWJsZSBhZ2Fpbi4KICogVGhlIHRhYmxlIG1haW50YWlucyB0aGUgb3JpZ2luYWwgY29uZmlndXJhdGlvbiAoc28geW91IGRvbid0IGhhdmUgdG8gc3BlY2lmeSBpdCBhZ2FpbikuCiAqCiAqICQoIi4uLiIpLnRhYmxlRG5EU2VyaWFsaXplKCkKICogV2lsbCBzZXJpYWxpemUgYW5kIHJldHVybiB0aGUgc2VyaWFsaXplZCBzdHJpbmcgYXMgYWJvdmUsIGJ1dCBmb3IgZWFjaCBvZiB0aGUgbWF0Y2hpbmcgdGFibGVzLS1zbyBpdCBjYW4gYmUKICogY2FsbGVkIGZyb20gYW55d2hlcmUgYW5kIGlzbid0IGRlcGVuZGVudCBvbiB0aGUgY3VycmVudFRhYmxlIGJlaW5nIHNldCB1cCBjb3JyZWN0bHkgYmVmb3JlIGNhbGxpbmcKICoKICogS25vd24gcHJvYmxlbXM6CiAqIC0gQXV0by1zY29sbCBoYXMgc29tZSBwcm9ibGVtcyB3aXRoIElFNyAgKGl0IHNjcm9sbHMgZXZlbiB3aGVuIGl0IHNob3VsZG4ndCksIHdvcmstYXJvdW5kOiBzZXQgc2Nyb2xsQW1vdW50IHRvIDAKICogCiAqIFZlcnNpb24gMC4yOiAyMDA4LTAyLTIwIEZpcnN0IHB1YmxpYyB2ZXJzaW9uCiAqIFZlcnNpb24gMC4zOiAyMDA4LTAyLTA3IEFkZGVkIG9uRHJhZ1N0YXJ0IG9wdGlvbgogKiAgICAgICAgICAgICAgICAgICAgICAgICBNYWRlIHRoZSBzY3JvbGwgYW1vdW50IGNvbmZpZ3VyYWJsZSAoZGVmYXVsdCBpcyA1IGFzIGJlZm9yZSkKICogVmVyc2lvbiAwLjQ6IDIwMDgtMDMtMTUgQ2hhbmdlZCB0aGUgbm9EcmFnL25vRHJvcCBhdHRyaWJ1dGVzIHRvIG5vZHJhZy9ub2Ryb3AgY2xhc3NlcwogKiAgICAgICAgICAgICAgICAgICAgICAgICBBZGRlZCBvbkFsbG93RHJvcCB0byBjb250cm9sIGRyb3BwaW5nCiAqICAgICAgICAgICAgICAgICAgICAgICAgIEZpeGVkIGEgYnVnIHdoaWNoIG1lYW50IHRoYXQgeW91IGNvdWxkbid0IHNldCB0aGUgc2Nyb2xsIGFtb3VudCBpbiBib3RoIGRpcmVjdGlvbnMKICogICAgICAgICAgICAgICAgICAgICAgICAgQWRkZWQgc2VyaWFsaXplIG1ldGhvZAogKiBWZXJzaW9uIDAuNTogMjAwOC0wNS0xNiBDaGFuZ2VkIHNvIHRoYXQgaWYgeW91IHNwZWNpZnkgYSBkcmFnSGFuZGxlIGNsYXNzIGl0IGRvZXNuJ3QgbWFrZSB0aGUgd2hvbGUgcm93CiAqICAgICAgICAgICAgICAgICAgICAgICAgIGRyYWdnYWJsZQogKiAgICAgICAgICAgICAgICAgICAgICAgICBJbXByb3ZlZCB0aGUgc2VyaWFsaXplIG1ldGhvZCB0byB1c2UgYSBkZWZhdWx0IChhbmQgc2V0dGFibGUpIHJlZ3VsYXIgZXhwcmVzc2lvbi4KICogICAgICAgICAgICAgICAgICAgICAgICAgQWRkZWQgdGFibGVEbkR1cGF0ZSgpIGFuZCB0YWJsZURuRFNlcmlhbGl6ZSgpIHRvIGJlIGNhbGxlZCB3aGVuIHlvdSBhcmUgb3V0c2lkZSB0aGUgdGFibGUKICovCmpRdWVyeS50YWJsZURuRCA9IHsKICAgIC8qKiBLZWVwIGhvbGQgb2YgdGhlIGN1cnJlbnQgdGFibGUgYmVpbmcgZHJhZ2dlZCAqLwogICAgY3VycmVudFRhYmxlIDogbnVsbCwKICAgIC8qKiBLZWVwIGhvbGQgb2YgdGhlIGN1cnJlbnQgZHJhZyBvYmplY3QgaWYgYW55ICovCiAgICBkcmFnT2JqZWN0OiBudWxsLAogICAgLyoqIFRoZSBjdXJyZW50IG1vdXNlIG9mZnNldCAqLwogICAgbW91c2VPZmZzZXQ6IG51bGwsCiAgICAvKiogUmVtZW1iZXIgdGhlIG9sZCB2YWx1ZSBvZiBZIHNvIHRoYXQgd2UgZG9uJ3QgZG8gdG9vIG11Y2ggcHJvY2Vzc2luZyAqLwogICAgb2xkWTogMCwKCiAgICAvKiogQWN0dWFsbHkgYnVpbGQgdGhlIHN0cnVjdHVyZSAqLwogICAgYnVpbGQ6IGZ1bmN0aW9uKG9wdGlvbnMpIHsKICAgICAgICAvLyBTZXQgdXAgdGhlIGRlZmF1bHRzIGlmIGFueQoKICAgICAgICB0aGlzLmVhY2goZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIC8vIFRoaXMgaXMgYm91bmQgdG8gZWFjaCBtYXRjaGluZyB0YWJsZSwgc2V0IHVwIHRoZSBkZWZhdWx0cyBhbmQgb3ZlcnJpZGUgd2l0aCB1c2VyIG9wdGlvbnMKICAgICAgICAgICAgdGhpcy50YWJsZURuRENvbmZpZyA9IGpRdWVyeS5leHRlbmQoewogICAgICAgICAgICAgICAgb25EcmFnU3R5bGU6IG51bGwsCiAgICAgICAgICAgICAgICBvbkRyb3BTdHlsZTogbnVsbCwKCQkJCS8vIEFkZCBpbiB0aGUgZGVmYXVsdCBjbGFzcyBmb3Igd2hpbGVEcmFnZ2luZwoJCQkJb25EcmFnQ2xhc3M6ICJ0RG5EX3doaWxlRHJhZyIsCiAgICAgICAgICAgICAgICBvbkRyb3A6IG51bGwsCiAgICAgICAgICAgICAgICBvbkRyYWdTdGFydDogbnVsbCwKICAgICAgICAgICAgICAgIHNjcm9sbEFtb3VudDogNSwKCQkJCXNlcmlhbGl6ZVJlZ2V4cDogL1teXC1dKiQvLCAvLyBUaGUgcmVndWxhciBleHByZXNzaW9uIHRvIHVzZSB0byB0cmltIHJvdyBJRHMKCQkJCXNlcmlhbGl6ZVBhcmFtTmFtZTogbnVsbCwgLy8gSWYgeW91IHdhbnQgdG8gc3BlY2lmeSBhbm90aGVyIHBhcmFtZXRlciBuYW1lIGluc3RlYWQgb2YgdGhlIHRhYmxlIElECiAgICAgICAgICAgICAgICBkcmFnSGFuZGxlOiBudWxsIC8vIElmIHlvdSBnaXZlIHRoZSBuYW1lIG9mIGEgY2xhc3MgaGVyZSwgdGhlbiBvbmx5IENlbGxzIHdpdGggdGhpcyBjbGFzcyB3aWxsIGJlIGRyYWdnYWJsZQogICAgICAgICAgICB9LCBvcHRpb25zIHx8IHt9KTsKICAgICAgICAgICAgLy8gTm93IG1ha2UgdGhlIHJvd3MgZHJhZ2dhYmxlCiAgICAgICAgICAgIGpRdWVyeS50YWJsZURuRC5tYWtlRHJhZ2dhYmxlKHRoaXMpOwogICAgICAgIH0pOwoKICAgICAgICAvLyBOb3cgd2UgbmVlZCB0byBjYXB0dXJlIHRoZSBtb3VzZSB1cCBhbmQgbW91c2UgbW92ZSBldmVudAogICAgICAgIC8vIFdlIGNhbiB1c2UgYmluZCBzbyB0aGF0IHdlIGRvbid0IGludGVyZmVyZSB3aXRoIG90aGVyIGV2ZW50IGhhbmRsZXJzCiAgICAgICAgalF1ZXJ5KGRvY3VtZW50KQogICAgICAgICAgICAuYmluZCgnbW91c2Vtb3ZlJywgalF1ZXJ5LnRhYmxlRG5ELm1vdXNlbW92ZSkKICAgICAgICAgICAgLmJpbmQoJ21vdXNldXAnLCBqUXVlcnkudGFibGVEbkQubW91c2V1cCk7CgogICAgICAgIC8vIERvbid0IGJyZWFrIHRoZSBjaGFpbgogICAgICAgIHJldHVybiB0aGlzOwogICAgfSwKCiAgICAvKiogVGhpcyBmdW5jdGlvbiBtYWtlcyBhbGwgdGhlIHJvd3Mgb24gdGhlIHRhYmxlIGRyYWdnYWJsZSBhcGFydCBmcm9tIHRob3NlIG1hcmtlZCBhcyAiTm9EcmFnIiAqLwogICAgbWFrZURyYWdnYWJsZTogZnVuY3Rpb24odGFibGUpIHsKICAgICAgICB2YXIgY29uZmlnID0gdGFibGUudGFibGVEbkRDb25maWc7CgkJaWYgKHRhYmxlLnRhYmxlRG5EQ29uZmlnLmRyYWdIYW5kbGUpIHsKCQkJLy8gV2Ugb25seSBuZWVkIHRvIGFkZCB0aGUgZXZlbnQgdG8gdGhlIHNwZWNpZmllZCBjZWxscwoJCQl2YXIgY2VsbHMgPSBqUXVlcnkoInRkLiIrdGFibGUudGFibGVEbkRDb25maWcuZHJhZ0hhbmRsZSwgdGFibGUpOwoJCQljZWxscy5lYWNoKGZ1bmN0aW9uKCkgewoJCQkJLy8gVGhlIGNlbGwgaXMgYm91bmQgdG8gInRoaXMiCiAgICAgICAgICAgICAgICBqUXVlcnkodGhpcykubW91c2Vkb3duKGZ1bmN0aW9uKGV2KSB7CiAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LnRhYmxlRG5ELmRyYWdPYmplY3QgPSB0aGlzLnBhcmVudE5vZGU7CiAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LnRhYmxlRG5ELmN1cnJlbnRUYWJsZSA9IHRhYmxlOwogICAgICAgICAgICAgICAgICAgIGpRdWVyeS50YWJsZURuRC5tb3VzZU9mZnNldCA9IGpRdWVyeS50YWJsZURuRC5nZXRNb3VzZU9mZnNldCh0aGlzLCBldik7CiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbmZpZy5vbkRyYWdTdGFydCkgewogICAgICAgICAgICAgICAgICAgICAgICAvLyBDYWxsIHRoZSBvbkRyb3AgbWV0aG9kIGlmIHRoZXJlIGlzIG9uZQogICAgICAgICAgICAgICAgICAgICAgICBjb25maWcub25EcmFnU3RhcnQodGFibGUsIHRoaXMpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICB9KTsKCQkJfSkKCQl9IGVsc2UgewoJCQkvLyBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHksIHdlIGFkZCB0aGUgZXZlbnQgdG8gdGhlIHdob2xlIHJvdwoJICAgICAgICB2YXIgcm93cyA9IGpRdWVyeSgidHIiLCB0YWJsZSk7IC8vIGdldCBhbGwgdGhlIHJvd3MgYXMgYSB3cmFwcGVkIHNldAoJICAgICAgICByb3dzLmVhY2goZnVuY3Rpb24oKSB7CgkJCQkvLyBJdGVyYXRlIHRocm91Z2ggZWFjaCByb3csIHRoZSByb3cgaXMgYm91bmQgdG8gInRoaXMiCgkJCQl2YXIgcm93ID0galF1ZXJ5KHRoaXMpOwoJCQkJaWYgKCEgcm93Lmhhc0NsYXNzKCJub2RyYWciKSkgewoJICAgICAgICAgICAgICAgIHJvdy5tb3VzZWRvd24oZnVuY3Rpb24oZXYpIHsKCSAgICAgICAgICAgICAgICAgICAgaWYgKGV2LnRhcmdldC50YWdOYW1lID09ICJURCIpIHsKCSAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeS50YWJsZURuRC5kcmFnT2JqZWN0ID0gdGhpczsKCSAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeS50YWJsZURuRC5jdXJyZW50VGFibGUgPSB0YWJsZTsKCSAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeS50YWJsZURuRC5tb3VzZU9mZnNldCA9IGpRdWVyeS50YWJsZURuRC5nZXRNb3VzZU9mZnNldCh0aGlzLCBldik7CgkgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29uZmlnLm9uRHJhZ1N0YXJ0KSB7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ2FsbCB0aGUgb25Ecm9wIG1ldGhvZCBpZiB0aGVyZSBpcyBvbmUKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWcub25EcmFnU3RhcnQodGFibGUsIHRoaXMpOwoJICAgICAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwoJICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgfSkuY3NzKCJjdXJzb3IiLCAibW92ZSIpOyAvLyBTdG9yZSB0aGUgdGFibGVEbkQgb2JqZWN0CgkJCQl9CgkJCX0pOwoJCX0KCX0sCgoJdXBkYXRlVGFibGVzOiBmdW5jdGlvbigpIHsKCQl0aGlzLmVhY2goZnVuY3Rpb24oKSB7CgkJCS8vIHRoaXMgaXMgbm93IGJvdW5kIHRvIGVhY2ggbWF0Y2hpbmcgdGFibGUKCQkJaWYgKHRoaXMudGFibGVEbkRDb25maWcpIHsKCQkJCWpRdWVyeS50YWJsZURuRC5tYWtlRHJhZ2dhYmxlKHRoaXMpOwoJCQl9CgkJfSkKCX0sCgogICAgLyoqIEdldCB0aGUgbW91c2UgY29vcmRpbmF0ZXMgZnJvbSB0aGUgZXZlbnQgKGFsbG93aW5nIGZvciBicm93c2VyIGRpZmZlcmVuY2VzKSAqLwogICAgbW91c2VDb29yZHM6IGZ1bmN0aW9uKGV2KXsKICAgICAgICBpZihldi5wYWdlWCB8fCBldi5wYWdlWSl7CiAgICAgICAgICAgIHJldHVybiB7eDpldi5wYWdlWCwgeTpldi5wYWdlWX07CiAgICAgICAgfQogICAgICAgIHJldHVybiB7CiAgICAgICAgICAgIHg6ZXYuY2xpZW50WCArIGRvY3VtZW50LmJvZHkuc2Nyb2xsTGVmdCAtIGRvY3VtZW50LmJvZHkuY2xpZW50TGVmdCwKICAgICAgICAgICAgeTpldi5jbGllbnRZICsgZG9jdW1lbnQuYm9keS5zY3JvbGxUb3AgIC0gZG9jdW1lbnQuYm9keS5jbGllbnRUb3AKICAgICAgICB9OwogICAgfSwKCiAgICAvKiogR2l2ZW4gYSB0YXJnZXQgZWxlbWVudCBhbmQgYSBtb3VzZSBldmVudCwgZ2V0IHRoZSBtb3VzZSBvZmZzZXQgZnJvbSB0aGF0IGVsZW1lbnQuCiAgICAgICAgVG8gZG8gdGhpcyB3ZSBuZWVkIHRoZSBlbGVtZW50J3MgcG9zaXRpb24gYW5kIHRoZSBtb3VzZSBwb3NpdGlvbiAqLwogICAgZ2V0TW91c2VPZmZzZXQ6IGZ1bmN0aW9uKHRhcmdldCwgZXYpIHsKICAgICAgICBldiA9IGV2IHx8IHdpbmRvdy5ldmVudDsKCiAgICAgICAgdmFyIGRvY1BvcyAgICA9IHRoaXMuZ2V0UG9zaXRpb24odGFyZ2V0KTsKICAgICAgICB2YXIgbW91c2VQb3MgID0gdGhpcy5tb3VzZUNvb3Jkcyhldik7CiAgICAgICAgcmV0dXJuIHt4Om1vdXNlUG9zLnggLSBkb2NQb3MueCwgeTptb3VzZVBvcy55IC0gZG9jUG9zLnl9OwogICAgfSwKCiAgICAvKiogR2V0IHRoZSBwb3NpdGlvbiBvZiBhbiBlbGVtZW50IGJ5IGdvaW5nIHVwIHRoZSBET00gdHJlZSBhbmQgYWRkaW5nIHVwIGFsbCB0aGUgb2Zmc2V0cyAqLwogICAgZ2V0UG9zaXRpb246IGZ1bmN0aW9uKGUpewogICAgICAgIHZhciBsZWZ0ID0gMDsKICAgICAgICB2YXIgdG9wICA9IDA7CiAgICAgICAgLyoqIFNhZmFyaSBmaXggLS0gdGhhbmtzIHRvIEx1aXMgQ2hhdG8gZm9yIHRoaXMhICovCiAgICAgICAgaWYgKGUub2Zmc2V0SGVpZ2h0ID09IDApIHsKICAgICAgICAgICAgLyoqIFNhZmFyaSAyIGRvZXNuJ3QgY29ycmVjdGx5IGdyYWIgdGhlIG9mZnNldFRvcCBvZiBhIHRhYmxlIHJvdwogICAgICAgICAgICB0aGlzIGlzIGRldGFpbGVkIGhlcmU6CiAgICAgICAgICAgIGh0dHA6Ly9qYWNvYi5wZWFyZ3JvdmUuY29tL2Jsb2cvMjAwNi90ZWNobmljYWwvdGFibGUtcm93LW9mZnNldHRvcC1idWctaW4tc2FmYXJpLwogICAgICAgICAgICB0aGUgc29sdXRpb24gaXMgbGlrZXdpc2Ugbm90ZWQgdGhlcmUsIGdyYWIgdGhlIG9mZnNldCBvZiBhIHRhYmxlIGNlbGwgaW4gdGhlIHJvdyAtIHRoZSBmaXJzdENoaWxkLgogICAgICAgICAgICBub3RlIHRoYXQgZmlyZWZveCB3aWxsIHJldHVybiBhIHRleHQgbm9kZSBhcyBhIGZpcnN0IGNoaWxkLCBzbyBkZXNpZ25pbmcgYSBtb3JlIHRob3JvdWdoCiAgICAgICAgICAgIHNvbHV0aW9uIG1heSBuZWVkIHRvIHRha2UgdGhhdCBpbnRvIGFjY291bnQsIGZvciBub3cgdGhpcyBzZWVtcyB0byB3b3JrIGluIGZpcmVmb3gsIHNhZmFyaSwgaWUgKi8KICAgICAgICAgICAgZSA9IGUuZmlyc3RDaGlsZDsgLy8gYSB0YWJsZSBjZWxsCiAgICAgICAgfQoKICAgICAgICB3aGlsZSAoZS5vZmZzZXRQYXJlbnQpewogICAgICAgICAgICBsZWZ0ICs9IGUub2Zmc2V0TGVmdDsKICAgICAgICAgICAgdG9wICArPSBlLm9mZnNldFRvcDsKICAgICAgICAgICAgZSAgICAgPSBlLm9mZnNldFBhcmVudDsKICAgICAgICB9CgogICAgICAgIGxlZnQgKz0gZS5vZmZzZXRMZWZ0OwogICAgICAgIHRvcCAgKz0gZS5vZmZzZXRUb3A7CgogICAgICAgIHJldHVybiB7eDpsZWZ0LCB5OnRvcH07CiAgICB9LAoKICAgIG1vdXNlbW92ZTogZnVuY3Rpb24oZXYpIHsKICAgICAgICBpZiAoalF1ZXJ5LnRhYmxlRG5ELmRyYWdPYmplY3QgPT0gbnVsbCkgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICB2YXIgZHJhZ09iaiA9IGpRdWVyeShqUXVlcnkudGFibGVEbkQuZHJhZ09iamVjdCk7CiAgICAgICAgdmFyIGNvbmZpZyA9IGpRdWVyeS50YWJsZURuRC5jdXJyZW50VGFibGUudGFibGVEbkRDb25maWc7CiAgICAgICAgdmFyIG1vdXNlUG9zID0galF1ZXJ5LnRhYmxlRG5ELm1vdXNlQ29vcmRzKGV2KTsKICAgICAgICB2YXIgeSA9IG1vdXNlUG9zLnkgLSBqUXVlcnkudGFibGVEbkQubW91c2VPZmZzZXQueTsKICAgICAgICAvL2F1dG8gc2Nyb2xsIHRoZSB3aW5kb3cKCSAgICB2YXIgeU9mZnNldCA9IHdpbmRvdy5wYWdlWU9mZnNldDsKCSAJaWYgKGRvY3VtZW50LmFsbCkgewoJICAgICAgICAvLyBXaW5kb3dzIHZlcnNpb24KCSAgICAgICAgLy95T2Zmc2V0PWRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wOwoJICAgICAgICBpZiAodHlwZW9mIGRvY3VtZW50LmNvbXBhdE1vZGUgIT0gJ3VuZGVmaW5lZCcgJiYKCSAgICAgICAgICAgICBkb2N1bWVudC5jb21wYXRNb2RlICE9ICdCYWNrQ29tcGF0JykgewoJICAgICAgICAgICB5T2Zmc2V0ID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcDsKCSAgICAgICAgfQoJICAgICAgICBlbHNlIGlmICh0eXBlb2YgZG9jdW1lbnQuYm9keSAhPSAndW5kZWZpbmVkJykgewoJICAgICAgICAgICB5T2Zmc2V0PWRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wOwoJICAgICAgICB9CgoJICAgIH0KCQkgICAgCgkJaWYgKG1vdXNlUG9zLnkteU9mZnNldCA8IGNvbmZpZy5zY3JvbGxBbW91bnQpIHsKCSAgICAJd2luZG93LnNjcm9sbEJ5KDAsIC1jb25maWcuc2Nyb2xsQW1vdW50KTsKCSAgICB9IGVsc2UgewogICAgICAgICAgICB2YXIgd2luZG93SGVpZ2h0ID0gd2luZG93LmlubmVySGVpZ2h0ID8gd2luZG93LmlubmVySGVpZ2h0CiAgICAgICAgICAgICAgICAgICAgOiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0ID8gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCA6IGRvY3VtZW50LmJvZHkuY2xpZW50SGVpZ2h0OwogICAgICAgICAgICBpZiAod2luZG93SGVpZ2h0LShtb3VzZVBvcy55LXlPZmZzZXQpIDwgY29uZmlnLnNjcm9sbEFtb3VudCkgewogICAgICAgICAgICAgICAgd2luZG93LnNjcm9sbEJ5KDAsIGNvbmZpZy5zY3JvbGxBbW91bnQpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKCiAgICAgICAgaWYgKHkgIT0galF1ZXJ5LnRhYmxlRG5ELm9sZFkpIHsKICAgICAgICAgICAgLy8gd29yayBvdXQgaWYgd2UncmUgZ29pbmcgdXAgb3IgZG93bi4uLgogICAgICAgICAgICB2YXIgbW92aW5nRG93biA9IHkgPiBqUXVlcnkudGFibGVEbkQub2xkWTsKICAgICAgICAgICAgLy8gdXBkYXRlIHRoZSBvbGQgdmFsdWUKICAgICAgICAgICAgalF1ZXJ5LnRhYmxlRG5ELm9sZFkgPSB5OwogICAgICAgICAgICAvLyB1cGRhdGUgdGhlIHN0eWxlIHRvIHNob3cgd2UncmUgZHJhZ2dpbmcKCQkJaWYgKGNvbmZpZy5vbkRyYWdDbGFzcykgewoJCQkJZHJhZ09iai5hZGRDbGFzcyhjb25maWcub25EcmFnQ2xhc3MpOwoJCQl9IGVsc2UgewoJICAgICAgICAgICAgZHJhZ09iai5jc3MoY29uZmlnLm9uRHJhZ1N0eWxlKTsKCQkJfQogICAgICAgICAgICAvLyBJZiB3ZSdyZSBvdmVyIGEgcm93IHRoZW4gbW92ZSB0aGUgZHJhZ2dlZCByb3cgdG8gdGhlcmUgc28gdGhhdCB0aGUgdXNlciBzZWVzIHRoZQogICAgICAgICAgICAvLyBlZmZlY3QgZHluYW1pY2FsbHkKICAgICAgICAgICAgdmFyIGN1cnJlbnRSb3cgPSBqUXVlcnkudGFibGVEbkQuZmluZERyb3BUYXJnZXRSb3coZHJhZ09iaiwgeSk7CiAgICAgICAgICAgIGlmIChjdXJyZW50Um93KSB7CiAgICAgICAgICAgICAgICAvLyBUT0RPIHdvcnJ5IGFib3V0IHdoYXQgaGFwcGVucyB3aGVuIHRoZXJlIGFyZSBtdWx0aXBsZSBUQk9ESUVTCiAgICAgICAgICAgICAgICBpZiAobW92aW5nRG93biAmJiBqUXVlcnkudGFibGVEbkQuZHJhZ09iamVjdCAhPSBjdXJyZW50Um93KSB7CiAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LnRhYmxlRG5ELmRyYWdPYmplY3QucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoalF1ZXJ5LnRhYmxlRG5ELmRyYWdPYmplY3QsIGN1cnJlbnRSb3cubmV4dFNpYmxpbmcpOwogICAgICAgICAgICAgICAgfSBlbHNlIGlmICghIG1vdmluZ0Rvd24gJiYgalF1ZXJ5LnRhYmxlRG5ELmRyYWdPYmplY3QgIT0gY3VycmVudFJvdykgewogICAgICAgICAgICAgICAgICAgIGpRdWVyeS50YWJsZURuRC5kcmFnT2JqZWN0LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGpRdWVyeS50YWJsZURuRC5kcmFnT2JqZWN0LCBjdXJyZW50Um93KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfSwKCiAgICAvKiogV2UncmUgb25seSB3b3JyaWVkIGFib3V0IHRoZSB5IHBvc2l0aW9uIHJlYWxseSwgYmVjYXVzZSB3ZSBjYW4gb25seSBtb3ZlIHJvd3MgdXAgYW5kIGRvd24gKi8KICAgIGZpbmREcm9wVGFyZ2V0Um93OiBmdW5jdGlvbihkcmFnZ2VkUm93LCB5KSB7CiAgICAgICAgdmFyIHJvd3MgPSBqUXVlcnkudGFibGVEbkQuY3VycmVudFRhYmxlLnJvd3M7CiAgICAgICAgZm9yICh2YXIgaT0wOyBpPHJvd3MubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgdmFyIHJvdyA9IHJvd3NbaV07CiAgICAgICAgICAgIHZhciByb3dZICAgID0gdGhpcy5nZXRQb3NpdGlvbihyb3cpLnk7CiAgICAgICAgICAgIHZhciByb3dIZWlnaHQgPSBwYXJzZUludChyb3cub2Zmc2V0SGVpZ2h0KS8yOwogICAgICAgICAgICBpZiAocm93Lm9mZnNldEhlaWdodCA9PSAwKSB7CiAgICAgICAgICAgICAgICByb3dZID0gdGhpcy5nZXRQb3NpdGlvbihyb3cuZmlyc3RDaGlsZCkueTsKICAgICAgICAgICAgICAgIHJvd0hlaWdodCA9IHBhcnNlSW50KHJvdy5maXJzdENoaWxkLm9mZnNldEhlaWdodCkvMjsKICAgICAgICAgICAgfQogICAgICAgICAgICAvLyBCZWNhdXNlIHdlIGFsd2F5cyBoYXZlIHRvIGluc2VydCBiZWZvcmUsIHdlIG5lZWQgdG8gb2Zmc2V0IHRoZSBoZWlnaHQgYSBiaXQKICAgICAgICAgICAgaWYgKCh5ID4gcm93WSAtIHJvd0hlaWdodCkgJiYgKHkgPCAocm93WSArIHJvd0hlaWdodCkpKSB7CiAgICAgICAgICAgICAgICAvLyB0aGF0J3MgdGhlIHJvdyB3ZSdyZSBvdmVyCgkJCQkvLyBJZiBpdCdzIHRoZSBzYW1lIGFzIHRoZSBjdXJyZW50IHJvdywgaWdub3JlIGl0CgkJCQlpZiAocm93ID09IGRyYWdnZWRSb3cpIHtyZXR1cm4gbnVsbDt9CiAgICAgICAgICAgICAgICB2YXIgY29uZmlnID0galF1ZXJ5LnRhYmxlRG5ELmN1cnJlbnRUYWJsZS50YWJsZURuRENvbmZpZzsKICAgICAgICAgICAgICAgIGlmIChjb25maWcub25BbGxvd0Ryb3ApIHsKICAgICAgICAgICAgICAgICAgICBpZiAoY29uZmlnLm9uQWxsb3dEcm9wKGRyYWdnZWRSb3csIHJvdykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJvdzsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9IGVsc2UgewoJCQkJCS8vIElmIGEgcm93IGhhcyBub2Ryb3AgY2xhc3MsIHRoZW4gZG9uJ3QgYWxsb3cgZHJvcHBpbmcgKGluc3BpcmVkIGJ5IEpvaG4gVGFyciBhbmQgRmFtaWMpCiAgICAgICAgICAgICAgICAgICAgdmFyIG5vZHJvcCA9IGpRdWVyeShyb3cpLmhhc0NsYXNzKCJub2Ryb3AiKTsKICAgICAgICAgICAgICAgICAgICBpZiAoISBub2Ryb3ApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJvdzsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gcm93OwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiBudWxsOwogICAgfSwKCiAgICBtb3VzZXVwOiBmdW5jdGlvbihlKSB7CiAgICAgICAgaWYgKGpRdWVyeS50YWJsZURuRC5jdXJyZW50VGFibGUgJiYgalF1ZXJ5LnRhYmxlRG5ELmRyYWdPYmplY3QpIHsKICAgICAgICAgICAgdmFyIGRyb3BwZWRSb3cgPSBqUXVlcnkudGFibGVEbkQuZHJhZ09iamVjdDsKICAgICAgICAgICAgdmFyIGNvbmZpZyA9IGpRdWVyeS50YWJsZURuRC5jdXJyZW50VGFibGUudGFibGVEbkRDb25maWc7CiAgICAgICAgICAgIC8vIElmIHdlIGhhdmUgYSBkcmFnT2JqZWN0LCB0aGVuIHdlIG5lZWQgdG8gcmVsZWFzZSBpdCwKICAgICAgICAgICAgLy8gVGhlIHJvdyB3aWxsIGFscmVhZHkgaGF2ZSBiZWVuIG1vdmVkIHRvIHRoZSByaWdodCBwbGFjZSBzbyB3ZSBqdXN0IHJlc2V0IHN0dWZmCgkJCWlmIChjb25maWcub25EcmFnQ2xhc3MpIHsKCSAgICAgICAgICAgIGpRdWVyeShkcm9wcGVkUm93KS5yZW1vdmVDbGFzcyhjb25maWcub25EcmFnQ2xhc3MpOwoJCQl9IGVsc2UgewoJICAgICAgICAgICAgalF1ZXJ5KGRyb3BwZWRSb3cpLmNzcyhjb25maWcub25Ecm9wU3R5bGUpOwoJCQl9CiAgICAgICAgICAgIGpRdWVyeS50YWJsZURuRC5kcmFnT2JqZWN0ICAgPSBudWxsOwogICAgICAgICAgICBpZiAoY29uZmlnLm9uRHJvcCkgewogICAgICAgICAgICAgICAgLy8gQ2FsbCB0aGUgb25Ecm9wIG1ldGhvZCBpZiB0aGVyZSBpcyBvbmUKICAgICAgICAgICAgICAgIGNvbmZpZy5vbkRyb3AoalF1ZXJ5LnRhYmxlRG5ELmN1cnJlbnRUYWJsZSwgZHJvcHBlZFJvdyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgalF1ZXJ5LnRhYmxlRG5ELmN1cnJlbnRUYWJsZSA9IG51bGw7IC8vIGxldCBnbyBvZiB0aGUgdGFibGUgdG9vCiAgICAgICAgfQogICAgfSwKCiAgICBzZXJpYWxpemU6IGZ1bmN0aW9uKCkgewogICAgICAgIGlmIChqUXVlcnkudGFibGVEbkQuY3VycmVudFRhYmxlKSB7CiAgICAgICAgICAgIHJldHVybiBqUXVlcnkudGFibGVEbkQuc2VyaWFsaXplVGFibGUoalF1ZXJ5LnRhYmxlRG5ELmN1cnJlbnRUYWJsZSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgcmV0dXJuICJFcnJvcjogTm8gVGFibGUgaWQgc2V0LCB5b3UgbmVlZCB0byBzZXQgYW4gaWQgb24geW91ciB0YWJsZSBhbmQgZXZlcnkgcm93IjsKICAgICAgICB9CiAgICB9LAoKCXNlcmlhbGl6ZVRhYmxlOiBmdW5jdGlvbih0YWJsZSkgewogICAgICAgIHZhciByZXN1bHQgPSAiIjsKICAgICAgICB2YXIgdGFibGVJZCA9IHRhYmxlLmlkOwogICAgICAgIHZhciByb3dzID0gdGFibGUucm93czsKICAgICAgICBmb3IgKHZhciBpPTA7IGk8cm93cy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICBpZiAocmVzdWx0Lmxlbmd0aCA+IDApIHJlc3VsdCArPSAiJiI7CiAgICAgICAgICAgIHZhciByb3dJZCA9IHJvd3NbaV0uaWQ7CiAgICAgICAgICAgIGlmIChyb3dJZCAmJiByb3dJZCAmJiB0YWJsZS50YWJsZURuRENvbmZpZyAmJiB0YWJsZS50YWJsZURuRENvbmZpZy5zZXJpYWxpemVSZWdleHApIHsKICAgICAgICAgICAgICAgIHJvd0lkID0gcm93SWQubWF0Y2godGFibGUudGFibGVEbkRDb25maWcuc2VyaWFsaXplUmVnZXhwKVswXTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmVzdWx0ICs9IHRhYmxlSWQgKyAnW109JyArIHJvd0lkOwogICAgICAgIH0KICAgICAgICByZXR1cm4gcmVzdWx0OwoJfSwKCglzZXJpYWxpemVUYWJsZXM6IGZ1bmN0aW9uKCkgewogICAgICAgIHZhciByZXN1bHQgPSAiIjsKICAgICAgICB0aGlzLmVhY2goZnVuY3Rpb24oKSB7CgkJCS8vIHRoaXMgaXMgbm93IGJvdW5kIHRvIGVhY2ggbWF0Y2hpbmcgdGFibGUKCQkJcmVzdWx0ICs9IGpRdWVyeS50YWJsZURuRC5zZXJpYWxpemVUYWJsZSh0aGlzKTsKCQl9KTsKICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgfQoKfQoKalF1ZXJ5LmZuLmV4dGVuZCgKCXsKCQl0YWJsZURuRCA6IGpRdWVyeS50YWJsZURuRC5idWlsZCwKCQl0YWJsZURuRFVwZGF0ZSA6IGpRdWVyeS50YWJsZURuRC51cGRhdGVUYWJsZXMsCgkJdGFibGVEbkRTZXJpYWxpemU6IGpRdWVyeS50YWJsZURuRC5zZXJpYWxpemVUYWJsZXMKCX0KKTs=]]></data>
	</file>
	<file>
	  <filename>/templates/jquery/jquery.timers.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[77u/LyoqDQogKiBqUXVlcnkudGltZXJzIC0gVGltZXIgYWJzdHJhY3Rpb25zIGZvciBqUXVlcnkNCiAqIFdyaXR0ZW4gYnkgQmxhaXIgTWl0Y2hlbG1vcmUgKGJsYWlyIERPVCBtaXRjaGVsbW9yZSBBVCBnbWFpbCBET1QgY29tKQ0KICogTGljZW5zZWQgdW5kZXIgdGhlIFdURlBMIChodHRwOi8vc2FtLnpveS5vcmcvd3RmcGwvKS4NCiAqIERhdGU6IDIwMDkvMDIvMDgNCiAqDQogKiBAYXV0aG9yIEJsYWlyIE1pdGNoZWxtb3JlDQogKiBAdmVyc2lvbiAxLjEuMg0KICoNCiAqKi8NCg0KalF1ZXJ5LmZuLmV4dGVuZCh7DQoJZXZlcnlUaW1lOiBmdW5jdGlvbihpbnRlcnZhbCwgbGFiZWwsIGZuLCB0aW1lcywgYmVsYXkpIHsNCgkJcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpIHsNCgkJCWpRdWVyeS50aW1lci5hZGQodGhpcywgaW50ZXJ2YWwsIGxhYmVsLCBmbiwgdGltZXMsIGJlbGF5KTsNCgkJfSk7DQoJfSwNCglvbmVUaW1lOiBmdW5jdGlvbihpbnRlcnZhbCwgbGFiZWwsIGZuKSB7DQoJCXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKSB7DQoJCQlqUXVlcnkudGltZXIuYWRkKHRoaXMsIGludGVydmFsLCBsYWJlbCwgZm4sIDEpOw0KCQl9KTsNCgl9LA0KCXN0b3BUaW1lOiBmdW5jdGlvbihsYWJlbCwgZm4pIHsNCgkJcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpIHsNCgkJCWpRdWVyeS50aW1lci5yZW1vdmUodGhpcywgbGFiZWwsIGZuKTsNCgkJfSk7DQoJfQ0KfSk7DQoNCmpRdWVyeS5ldmVudC5zcGVjaWFsDQoNCmpRdWVyeS5leHRlbmQoew0KCXRpbWVyOiB7DQoJCWdsb2JhbDogW10sDQoJCWd1aWQ6IDEsDQoJCWRhdGFLZXk6ICJqUXVlcnkudGltZXIiLA0KCQlyZWdleDogL14oWzAtOV0rKD86XC5bMC05XSopPylccyooLipzKT8kLywNCgkJcG93ZXJzOiB7DQoJCQkvLyBZZWFoIHRoaXMgaXMgbWFqb3Igb3ZlcmtpbGwuLi4NCgkJCSdtcyc6IDEsDQoJCQknY3MnOiAxMCwNCgkJCSdkcyc6IDEwMCwNCgkJCSdzJzogMTAwMCwNCgkJCSdkYXMnOiAxMDAwMCwNCgkJCSdocyc6IDEwMDAwMCwNCgkJCSdrcyc6IDEwMDAwMDANCgkJfSwNCgkJdGltZVBhcnNlOiBmdW5jdGlvbih2YWx1ZSkgew0KCQkJaWYgKHZhbHVlID09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PSBudWxsKQ0KCQkJCXJldHVybiBudWxsOw0KCQkJdmFyIHJlc3VsdCA9IHRoaXMucmVnZXguZXhlYyhqUXVlcnkudHJpbSh2YWx1ZS50b1N0cmluZygpKSk7DQoJCQlpZiAocmVzdWx0WzJdKSB7DQoJCQkJdmFyIG51bSA9IHBhcnNlRmxvYXQocmVzdWx0WzFdKTsNCgkJCQl2YXIgbXVsdCA9IHRoaXMucG93ZXJzW3Jlc3VsdFsyXV0gfHwgMTsNCgkJCQlyZXR1cm4gbnVtICogbXVsdDsNCgkJCX0gZWxzZSB7DQoJCQkJcmV0dXJuIHZhbHVlOw0KCQkJfQ0KCQl9LA0KCQlhZGQ6IGZ1bmN0aW9uKGVsZW1lbnQsIGludGVydmFsLCBsYWJlbCwgZm4sIHRpbWVzLCBiZWxheSkgew0KCQkJdmFyIGNvdW50ZXIgPSAwOw0KCQkJDQoJCQlpZiAoalF1ZXJ5LmlzRnVuY3Rpb24obGFiZWwpKSB7DQoJCQkJaWYgKCF0aW1lcykgDQoJCQkJCXRpbWVzID0gZm47DQoJCQkJZm4gPSBsYWJlbDsNCgkJCQlsYWJlbCA9IGludGVydmFsOw0KCQkJfQ0KCQkJDQoJCQlpbnRlcnZhbCA9IGpRdWVyeS50aW1lci50aW1lUGFyc2UoaW50ZXJ2YWwpOw0KDQoJCQlpZiAodHlwZW9mIGludGVydmFsICE9ICdudW1iZXInIHx8IGlzTmFOKGludGVydmFsKSB8fCBpbnRlcnZhbCA8PSAwKQ0KCQkJCXJldHVybjsNCg0KCQkJaWYgKHRpbWVzICYmIHRpbWVzLmNvbnN0cnVjdG9yICE9IE51bWJlcikgew0KCQkJCWJlbGF5ID0gISF0aW1lczsNCgkJCQl0aW1lcyA9IDA7DQoJCQl9DQoJCQkNCgkJCXRpbWVzID0gdGltZXMgfHwgMDsNCgkJCWJlbGF5ID0gYmVsYXkgfHwgZmFsc2U7DQoJCQkNCgkJCXZhciB0aW1lcnMgPSBqUXVlcnkuZGF0YShlbGVtZW50LCB0aGlzLmRhdGFLZXkpIHx8IGpRdWVyeS5kYXRhKGVsZW1lbnQsIHRoaXMuZGF0YUtleSwge30pOw0KCQkJDQoJCQlpZiAoIXRpbWVyc1tsYWJlbF0pDQoJCQkJdGltZXJzW2xhYmVsXSA9IHt9Ow0KCQkJDQoJCQlmbi50aW1lcklEID0gZm4udGltZXJJRCB8fCB0aGlzLmd1aWQrKzsNCgkJCQ0KCQkJdmFyIGhhbmRsZXIgPSBmdW5jdGlvbigpIHsNCgkJCQlpZiAoYmVsYXkgJiYgdGhpcy5pblByb2dyZXNzKSANCgkJCQkJcmV0dXJuOw0KCQkJCXRoaXMuaW5Qcm9ncmVzcyA9IHRydWU7DQoJCQkJaWYgKCgrK2NvdW50ZXIgPiB0aW1lcyAmJiB0aW1lcyAhPT0gMCkgfHwgZm4uY2FsbChlbGVtZW50LCBjb3VudGVyKSA9PT0gZmFsc2UpDQoJCQkJCWpRdWVyeS50aW1lci5yZW1vdmUoZWxlbWVudCwgbGFiZWwsIGZuKTsNCgkJCQl0aGlzLmluUHJvZ3Jlc3MgPSBmYWxzZTsNCgkJCX07DQoJCQkNCgkJCWhhbmRsZXIudGltZXJJRCA9IGZuLnRpbWVySUQ7DQoJCQkNCgkJCWlmICghdGltZXJzW2xhYmVsXVtmbi50aW1lcklEXSkNCgkJCQl0aW1lcnNbbGFiZWxdW2ZuLnRpbWVySURdID0gd2luZG93LnNldEludGVydmFsKGhhbmRsZXIsaW50ZXJ2YWwpOw0KCQkJDQoJCQl0aGlzLmdsb2JhbC5wdXNoKCBlbGVtZW50ICk7DQoJCQkNCgkJfSwNCgkJcmVtb3ZlOiBmdW5jdGlvbihlbGVtZW50LCBsYWJlbCwgZm4pIHsNCgkJCXZhciB0aW1lcnMgPSBqUXVlcnkuZGF0YShlbGVtZW50LCB0aGlzLmRhdGFLZXkpLCByZXQ7DQoJCQkNCgkJCWlmICggdGltZXJzICkgew0KCQkJCQ0KCQkJCWlmICghbGFiZWwpIHsNCgkJCQkJZm9yICggbGFiZWwgaW4gdGltZXJzICkNCgkJCQkJCXRoaXMucmVtb3ZlKGVsZW1lbnQsIGxhYmVsLCBmbik7DQoJCQkJfSBlbHNlIGlmICggdGltZXJzW2xhYmVsXSApIHsNCgkJCQkJaWYgKCBmbiApIHsNCgkJCQkJCWlmICggZm4udGltZXJJRCApIHsNCgkJCQkJCQl3aW5kb3cuY2xlYXJJbnRlcnZhbCh0aW1lcnNbbGFiZWxdW2ZuLnRpbWVySURdKTsNCgkJCQkJCQlkZWxldGUgdGltZXJzW2xhYmVsXVtmbi50aW1lcklEXTsNCgkJCQkJCX0NCgkJCQkJfSBlbHNlIHsNCgkJCQkJCWZvciAoIHZhciBmbiBpbiB0aW1lcnNbbGFiZWxdICkgew0KCQkJCQkJCXdpbmRvdy5jbGVhckludGVydmFsKHRpbWVyc1tsYWJlbF1bZm5dKTsNCgkJCQkJCQlkZWxldGUgdGltZXJzW2xhYmVsXVtmbl07DQoJCQkJCQl9DQoJCQkJCX0NCgkJCQkJDQoJCQkJCWZvciAoIHJldCBpbiB0aW1lcnNbbGFiZWxdICkgYnJlYWs7DQoJCQkJCWlmICggIXJldCApIHsNCgkJCQkJCXJldCA9IG51bGw7DQoJCQkJCQlkZWxldGUgdGltZXJzW2xhYmVsXTsNCgkJCQkJfQ0KCQkJCX0NCgkJCQkNCgkJCQlmb3IgKCByZXQgaW4gdGltZXJzICkgYnJlYWs7DQoJCQkJaWYgKCAhcmV0ICkgDQoJCQkJCWpRdWVyeS5yZW1vdmVEYXRhKGVsZW1lbnQsIHRoaXMuZGF0YUtleSk7DQoJCQl9DQoJCX0NCgl9DQp9KTsNCg0KalF1ZXJ5KHdpbmRvdykuYmluZCgidW5sb2FkIiwgZnVuY3Rpb24oKSB7DQoJalF1ZXJ5LmVhY2goalF1ZXJ5LnRpbWVyLmdsb2JhbCwgZnVuY3Rpb24oaW5kZXgsIGl0ZW0pIHsNCgkJalF1ZXJ5LnRpbWVyLnJlbW92ZShpdGVtKTsNCgl9KTsNCn0pOw==]]></data>
	</file>
	<file>
	  <filename>/templates/jquery/jquery.treeTable.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyogalF1ZXJ5IFRyZWVUYWJsZSBDb3JlIDIuMCBzdHlsZXNoZWV0DQogKg0KICogVGhpcyBmaWxlIGNvbnRhaW5zIHN0eWxlcyB0aGF0IGFyZSB1c2VkIHRvIGRpc3BsYXkgdGhlIHRyZWUgdGFibGUuIEVhY2ggdHJlZQ0KICogdGFibGUgaXMgYXNzaWduZWQgdGhlICt0cmVlVGFibGUrIGNsYXNzLg0KICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLw0KDQovKiBqcXVlcnkudHJlZVRhYmxlLmNvbGxhcHNpYmxlDQogKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovDQoudHJlZVRhYmxlIHRyIHRkLnRmaWxlIHsNCiAgcGFkZGluZy1sZWZ0OjI0cHg7DQp9DQoNCi50cmVlVGFibGUgdHIgdGQgLmV4cGFuZGVyIHsNCiAgYmFja2dyb3VuZC1wb3NpdGlvbjogbGVmdCBjZW50ZXI7DQogIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7DQogIGN1cnNvcjogcG9pbnRlcjsNCiAgcGFkZGluZzogMDsNCiAgem9vbTogMTsgLyogSUU3IEhhY2sgKi8NCn0NCg0KLnRyZWVUYWJsZSB0ci5jb2xsYXBzZWQgdGQgLmV4cGFuZGVyIHsNCiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKGV4cGFuZC5naWYpOw0KfQ0KDQoudHJlZVRhYmxlIHRyLmV4cGFuZGVkIHRkIC5leHBhbmRlciB7DQogIGJhY2tncm91bmQtaW1hZ2U6IHVybChjb250cmFjdC5naWYpOw0KfQ0KDQovKiBqcXVlcnkudHJlZVRhYmxlLnNvcnRhYmxlDQogKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovDQoudHJlZVRhYmxlIHRyLnNlbGVjdGVkLCAudHJlZVRhYmxlIHRyLmFjY2VwdCB7DQogIGJhY2tncm91bmQtY29sb3I6ICMzODc1ZDc7DQogIGNvbG9yOiAjZmZmOw0KfQ0KDQoudHJlZVRhYmxlIHRyLmNvbGxhcHNlZC5zZWxlY3RlZCB0ZCAuZXhwYW5kZXIsIC50cmVlVGFibGUgdHIuY29sbGFwc2VkLmFjY2VwdCB0ZCAuZXhwYW5kZXIgew0KICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoLi4vaW1hZ2VzL3RvZ2dsZS1leHBhbmQtbGlnaHQucG5nKTsNCn0NCg0KLnRyZWVUYWJsZSB0ci5leHBhbmRlZC5zZWxlY3RlZCB0ZCAuZXhwYW5kZXIsIC50cmVlVGFibGUgdHIuZXhwYW5kZWQuYWNjZXB0IHRkIC5leHBhbmRlciB7DQogIGJhY2tncm91bmQtaW1hZ2U6IHVybCguLi9pbWFnZXMvdG9nZ2xlLWNvbGxhcHNlLWxpZ2h0LnBuZyk7DQp9DQoNCi50cmVlVGFibGUgLnVpLWRyYWdnYWJsZS1kcmFnZ2luZyB7DQogIGNvbG9yOiAjMDAwOw0KICB6LWluZGV4OiAxOw0KfQ==]]></data>
	</file>
	<file>
	  <filename>/templates/jquery/jquery.treeTable.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyogalF1ZXJ5IHRyZWVUYWJsZSBQbHVnaW4gMi4yLjMgLSBodHRwOi8vbHVkby5jdWJpY3BodXNlLm5sL2pxdWVyeS1wbHVnaW5zL3RyZWVUYWJsZS8gKi8KKGZ1bmN0aW9uKCQpIHsKICAvLyBIZWxwcyB0byBtYWtlIG9wdGlvbnMgYXZhaWxhYmxlIHRvIGFsbCBmdW5jdGlvbnMKICAvLyBUT0RPOiBUaGlzIGdpdmVzIHByb2JsZW1zIHdoZW4gdGhlcmUgYXJlIGJvdGggZXhwYW5kYWJsZSBhbmQgbm9uLWV4cGFuZGFibGUKICAvLyB0cmVlcyBvbiBhIHBhZ2UuIFRoZSBvcHRpb25zIHNob3VsZG4ndCBiZSBnbG9iYWwgdG8gYWxsIHRoZXNlIGluc3RhbmNlcyEKICB2YXIgb3B0aW9uczsKICB2YXIgZGVmYXVsdFBhZGRpbmdMZWZ0OwogIAogICQuZm4udHJlZVRhYmxlID0gZnVuY3Rpb24ob3B0cykgewogICAgb3B0aW9ucyA9ICQuZXh0ZW5kKHt9LCAkLmZuLnRyZWVUYWJsZS5kZWZhdWx0cywgb3B0cyk7CiAgICAKICAgIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKSB7CiAgICAgICQodGhpcykuYWRkQ2xhc3MoInRyZWVUYWJsZSIpLmZpbmQoInRib2R5IHRyIikuZWFjaChmdW5jdGlvbigpIHsKICAgICAgICAvLyBJbml0aWFsaXplIHJvb3Qgbm9kZXMgb25seSBpZiBwb3NzaWJsZQogICAgICAgIGlmKCFvcHRpb25zLmV4cGFuZGFibGUgfHwgJCh0aGlzKVswXS5jbGFzc05hbWUuc2VhcmNoKCJjaGlsZC1vZi0iKSA9PSAtMSkgewogICAgICAgICAgLy8gVG8gb3B0aW1pemUgcGVyZm9ybWFuY2Ugb2YgaW5kZW50YXRpb24sIEkgcmV0cmlldmUgdGhlIHBhZGRpbmctbGVmdAogICAgICAgICAgLy8gdmFsdWUgb2YgdGhlIGZpcnN0IHJvb3Qgbm9kZS4gVGhpcyB3YXkgSSBvbmx5IGhhdmUgdG8gY2FsbCArY3NzKyAKICAgICAgICAgIC8vIG9uY2UuCiAgICAgICAgICBpZiAoaXNOYU4oZGVmYXVsdFBhZGRpbmdMZWZ0KSkgewogICAgICAgICAgICBkZWZhdWx0UGFkZGluZ0xlZnQgPSBwYXJzZUludCgkKCQodGhpcykuY2hpbGRyZW4oInRkIilbb3B0aW9ucy50cmVlQ29sdW1uXSkuY3NzKCdwYWRkaW5nLWxlZnQnKSwgMTApOwogICAgICAgICAgfQogICAgICAgICAgCiAgICAgICAgICBpbml0aWFsaXplKCQodGhpcykpOwogICAgICAgIH0gZWxzZSBpZihvcHRpb25zLmluaXRpYWxTdGF0ZSA9PSAiY29sbGFwc2VkIikgewogICAgICAgICAgdGhpcy5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOyAvLyBQZXJmb3JtYW5jZSEgJCh0aGlzKS5oaWRlKCkgaXMgc2xvdy4uLgogICAgICAgIH0KICAgICAgfSk7CiAgICB9KTsKICB9OwogIAogICQuZm4udHJlZVRhYmxlLmRlZmF1bHRzID0gewogICAgY2hpbGRQcmVmaXg6ICJjaGlsZC1vZi0iLAogICAgY2xpY2thYmxlTm9kZU5hbWVzOiBmYWxzZSwKICAgIGV4cGFuZGFibGU6IHRydWUsCiAgICBpbmRlbnQ6IDE5LAogICAgaW5pdGlhbFN0YXRlOiAiY29sbGFwc2VkIiwKICAgIHRyZWVDb2x1bW46IDAKICB9OwogIAogIC8vIFJlY3Vyc2l2ZWx5IGhpZGUgYWxsIG5vZGUncyBjaGlsZHJlbiBpbiBhIHRyZWUKICAkLmZuLmNvbGxhcHNlID0gZnVuY3Rpb24oKSB7CiAgICAkKHRoaXMpLmFkZENsYXNzKCJjb2xsYXBzZWQiKTsKICAgIAogICAgY2hpbGRyZW5PZigkKHRoaXMpKS5lYWNoKGZ1bmN0aW9uKCkgewogICAgICBpZighJCh0aGlzKS5oYXNDbGFzcygiY29sbGFwc2VkIikpIHsKICAgICAgICAkKHRoaXMpLmNvbGxhcHNlKCk7CiAgICAgIH0KICAgICAgCiAgICAgIHRoaXMuc3R5bGUuZGlzcGxheSA9ICJub25lIjsgLy8gUGVyZm9ybWFuY2UhICQodGhpcykuaGlkZSgpIGlzIHNsb3cuLi4KICAgIH0pOwogICAgCiAgICByZXR1cm4gdGhpczsKICB9OwogIAogIC8vIFJlY3Vyc2l2ZWx5IHNob3cgYWxsIG5vZGUncyBjaGlsZHJlbiBpbiBhIHRyZWUKICAkLmZuLmV4cGFuZCA9IGZ1bmN0aW9uKCkgewogICAgJCh0aGlzKS5yZW1vdmVDbGFzcygiY29sbGFwc2VkIikuYWRkQ2xhc3MoImV4cGFuZGVkIik7CiAgICAKICAgIGNoaWxkcmVuT2YoJCh0aGlzKSkuZWFjaChmdW5jdGlvbigpIHsKICAgICAgaW5pdGlhbGl6ZSgkKHRoaXMpKTsKICAgICAgCiAgICAgIGlmKCQodGhpcykuaXMoIi5leHBhbmRlZC5wYXJlbnQiKSkgewogICAgICAgICQodGhpcykuZXhwYW5kKCk7CiAgICAgIH0KICAgICAgCiAgICAgIC8vIHRoaXMuc3R5bGUuZGlzcGxheSA9ICJ0YWJsZS1yb3ciOyAvLyBVbmZvcnR1bmF0ZWx5IHRoaXMgaXMgbm90IHBvc3NpYmxlIHdpdGggSUUgOi0oCiAgICAgICQodGhpcykuc2hvdygpOwogICAgfSk7CiAgICAKICAgIHJldHVybiB0aGlzOwogIH07CiAgCiAgLy8gQWRkIGFuIGVudGlyZSBicmFuY2ggdG8gK2Rlc3RpbmF0aW9uKwogICQuZm4uYXBwZW5kQnJhbmNoVG8gPSBmdW5jdGlvbihkZXN0aW5hdGlvbikgewogICAgdmFyIG5vZGUgPSAkKHRoaXMpOwogICAgdmFyIHBhcmVudCA9IHBhcmVudE9mKG5vZGUpOwogICAgCiAgICB2YXIgYW5jZXN0b3JOYW1lcyA9ICQubWFwKGFuY2VzdG9yc09mKCQoZGVzdGluYXRpb24pKSwgZnVuY3Rpb24oYSkgeyByZXR1cm4gYS5pZDsgfSk7CiAgICAKICAgIC8vIENvbmRpdGlvbnM6CiAgICAvLyAxOiArbm9kZSsgc2hvdWxkIG5vdCBiZSBpbnNlcnRlZCBpbiBhIGxvY2F0aW9uIGluIGEgYnJhbmNoIGlmIHRoaXMgd291bGQKICAgIC8vICAgIHJlc3VsdCBpbiArbm9kZSsgYmVpbmcgYW4gYW5jZXN0b3Igb2YgaXRzZWxmLgogICAgLy8gMjogK25vZGUrIHNob3VsZCBub3QgaGF2ZSBhIHBhcmVudCBPUiB0aGUgZGVzdGluYXRpb24gc2hvdWxkIG5vdCBiZSB0aGUKICAgIC8vICAgIHNhbWUgYXMgK25vZGUrJ3MgY3VycmVudCBwYXJlbnQgKHRoaXMgbGFzdCBjb25kaXRpb24gcHJldmVudHMgK25vZGUrCiAgICAvLyAgICBmcm9tIGJlaW5nIG1vdmVkIHRvIHRoZSBzYW1lIGxvY2F0aW9uIHdoZXJlIGl0IGFscmVhZHkgaXMpLgogICAgLy8gMzogK25vZGUrIHNob3VsZCBub3QgYmUgaW5zZXJ0ZWQgYXMgYSBjaGlsZCBvZiArbm9kZSsgaXRzZWxmLgogICAgaWYoJC5pbkFycmF5KG5vZGVbMF0uaWQsIGFuY2VzdG9yTmFtZXMpID09IC0xICYmICghcGFyZW50IHx8IChkZXN0aW5hdGlvbi5pZCAhPSBwYXJlbnRbMF0uaWQpKSAmJiBkZXN0aW5hdGlvbi5pZCAhPSBub2RlWzBdLmlkKSB7CiAgICAgIGluZGVudChub2RlLCBhbmNlc3RvcnNPZihub2RlKS5sZW5ndGggKiBvcHRpb25zLmluZGVudCAqIC0xKTsgLy8gUmVtb3ZlIGluZGVudGF0aW9uCiAgICAgIAogICAgICBpZihwYXJlbnQpIHsgbm9kZS5yZW1vdmVDbGFzcyhvcHRpb25zLmNoaWxkUHJlZml4ICsgcGFyZW50WzBdLmlkKTsgfQogICAgICAKICAgICAgbm9kZS5hZGRDbGFzcyhvcHRpb25zLmNoaWxkUHJlZml4ICsgZGVzdGluYXRpb24uaWQpOwogICAgICBtb3ZlKG5vZGUsIGRlc3RpbmF0aW9uKTsgLy8gUmVjdXJzaXZlbHkgbW92ZSBub2RlcyB0byBuZXcgbG9jYXRpb24KICAgICAgaW5kZW50KG5vZGUsIGFuY2VzdG9yc09mKG5vZGUpLmxlbmd0aCAqIG9wdGlvbnMuaW5kZW50KTsKICAgIH0KICAgIAogICAgcmV0dXJuIHRoaXM7CiAgfTsKICAKICAvLyBBZGQgcmV2ZXJzZSgpIGZ1bmN0aW9uIGZyb20gSlMgQXJyYXlzCiAgJC5mbi5yZXZlcnNlID0gZnVuY3Rpb24oKSB7CiAgICByZXR1cm4gdGhpcy5wdXNoU3RhY2sodGhpcy5nZXQoKS5yZXZlcnNlKCksIGFyZ3VtZW50cyk7CiAgfTsKICAKICAvLyBUb2dnbGUgYW4gZW50aXJlIGJyYW5jaAogICQuZm4udG9nZ2xlQnJhbmNoID0gZnVuY3Rpb24oKSB7CiAgICBpZigkKHRoaXMpLmhhc0NsYXNzKCJjb2xsYXBzZWQiKSkgewogICAgICAkKHRoaXMpLmV4cGFuZCgpOwogICAgfSBlbHNlIHsKICAgICAgJCh0aGlzKS5yZW1vdmVDbGFzcygiZXhwYW5kZWQiKS5jb2xsYXBzZSgpOwogICAgfQogICAgCiAgICByZXR1cm4gdGhpczsKICB9OwogIAogIC8vID09PSBQcml2YXRlIGZ1bmN0aW9ucwogIAogIGZ1bmN0aW9uIGFuY2VzdG9yc09mKG5vZGUpIHsKICAgIHZhciBhbmNlc3RvcnMgPSBbXTsKICAgIHdoaWxlKG5vZGUgPSBwYXJlbnRPZihub2RlKSkgewogICAgICBhbmNlc3RvcnNbYW5jZXN0b3JzLmxlbmd0aF0gPSBub2RlWzBdOwogICAgfQogICAgcmV0dXJuIGFuY2VzdG9yczsKICB9OwogIAogIGZ1bmN0aW9uIGNoaWxkcmVuT2Yobm9kZSkgewogICAgcmV0dXJuICQoInRhYmxlLnRyZWVUYWJsZSB0Ym9keSB0ci4iICsgb3B0aW9ucy5jaGlsZFByZWZpeCArIG5vZGVbMF0uaWQpOwogIH07CiAgCiAgZnVuY3Rpb24gZ2V0UGFkZGluZ0xlZnQobm9kZSkgewogICAgdmFyIHBhZGRpbmdMZWZ0ID0gcGFyc2VJbnQobm9kZVswXS5zdHlsZS5wYWRkaW5nTGVmdCwgMTApOwogICAgcmV0dXJuIChpc05hTihwYWRkaW5nTGVmdCkpID8gZGVmYXVsdFBhZGRpbmdMZWZ0IDogcGFkZGluZ0xlZnQ7CiAgfQogIAogIGZ1bmN0aW9uIGluZGVudChub2RlLCB2YWx1ZSkgewogICAgdmFyIGNlbGwgPSAkKG5vZGUuY2hpbGRyZW4oInRkIilbb3B0aW9ucy50cmVlQ29sdW1uXSk7CiAgICBjZWxsWzBdLnN0eWxlLnBhZGRpbmdMZWZ0ID0gZ2V0UGFkZGluZ0xlZnQoY2VsbCkgKyB2YWx1ZSArICJweCI7CiAgICAKICAgIGNoaWxkcmVuT2Yobm9kZSkuZWFjaChmdW5jdGlvbigpIHsKICAgICAgaW5kZW50KCQodGhpcyksIHZhbHVlKTsKICAgIH0pOwogIH07CiAgCiAgZnVuY3Rpb24gaW5pdGlhbGl6ZShub2RlKSB7CiAgICBpZighbm9kZS5oYXNDbGFzcygiaW5pdGlhbGl6ZWQiKSkgewogICAgICBub2RlLmFkZENsYXNzKCJpbml0aWFsaXplZCIpOwoKICAgICAgdmFyIGNoaWxkTm9kZXMgPSBjaGlsZHJlbk9mKG5vZGUpOwogICAgICAKICAgICAgaWYoIW5vZGUuaGFzQ2xhc3MoInBhcmVudCIpICYmIGNoaWxkTm9kZXMubGVuZ3RoID4gMCkgewogICAgICAgIG5vZGUuYWRkQ2xhc3MoInBhcmVudCIpOwogICAgICB9CiAgICAgIAogICAgICBpZihub2RlLmhhc0NsYXNzKCJwYXJlbnQiKSkgewogICAgICAgIHZhciBjZWxsID0gJChub2RlLmNoaWxkcmVuKCJ0ZCIpW29wdGlvbnMudHJlZUNvbHVtbl0pOwogICAgICAgIHZhciBwYWRkaW5nID0gZ2V0UGFkZGluZ0xlZnQoY2VsbCkgKyBvcHRpb25zLmluZGVudDsKICAgICAgICAKICAgICAgICBjaGlsZE5vZGVzLmVhY2goZnVuY3Rpb24oKSB7CiAgICAgICAgICAkKHRoaXMpLmNoaWxkcmVuKCJ0ZCIpW29wdGlvbnMudHJlZUNvbHVtbl0uc3R5bGUucGFkZGluZ0xlZnQgPSBwYWRkaW5nICsgInB4IjsKICAgICAgICB9KTsKICAgICAgICAKICAgICAgICBpZihvcHRpb25zLmV4cGFuZGFibGUpIHsKICAgICAgICAgIGNlbGwucHJlcGVuZCgnPHNwYW4gc3R5bGU9Im1hcmdpbi1sZWZ0OiAtJyArIG9wdGlvbnMuaW5kZW50ICsgJ3B4OyBwYWRkaW5nLWxlZnQ6ICcgKyBvcHRpb25zLmluZGVudCArICdweCIgY2xhc3M9ImV4cGFuZGVyIj48L3NwYW4+Jyk7CiAgICAgICAgICAkKGNlbGxbMF0uZmlyc3RDaGlsZCkuY2xpY2soZnVuY3Rpb24oKSB7IG5vZGUudG9nZ2xlQnJhbmNoKCk7IH0pOwogICAgICAgICAgCiAgICAgICAgICBpZihvcHRpb25zLmNsaWNrYWJsZU5vZGVOYW1lcykgewogICAgICAgICAgICBjZWxsWzBdLnN0eWxlLmN1cnNvciA9ICJwb2ludGVyIjsKICAgICAgICAgICAgJChjZWxsKS5jbGljayhmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgLy8gRG9uJ3QgZG91YmxlLXRvZ2dsZSBpZiB0aGUgY2xpY2sgaXMgb24gdGhlIGV4aXN0aW5nIGV4cGFuZGVyIGljb24KICAgICAgICAgICAgICBpZiAoZS50YXJnZXQuY2xhc3NOYW1lICE9ICdleHBhbmRlcicpIHsKICAgICAgICAgICAgICAgIG5vZGUudG9nZ2xlQnJhbmNoKCk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKICAgICAgICAgIH0KICAgICAgICAgIAogICAgICAgICAgLy8gQ2hlY2sgZm9yIGEgY2xhc3Mgc2V0IGV4cGxpY2l0bHkgYnkgdGhlIHVzZXIsIG90aGVyd2lzZSBzZXQgdGhlIGRlZmF1bHQgY2xhc3MKICAgICAgICAgIGlmKCEobm9kZS5oYXNDbGFzcygiZXhwYW5kZWQiKSB8fCBub2RlLmhhc0NsYXNzKCJjb2xsYXBzZWQiKSkpIHsKICAgICAgICAgICAgbm9kZS5hZGRDbGFzcyhvcHRpb25zLmluaXRpYWxTdGF0ZSk7CiAgICAgICAgICB9CgogICAgICAgICAgaWYobm9kZS5oYXNDbGFzcygiZXhwYW5kZWQiKSkgewogICAgICAgICAgICBub2RlLmV4cGFuZCgpOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgfQogIH07CiAgCiAgZnVuY3Rpb24gbW92ZShub2RlLCBkZXN0aW5hdGlvbikgewogICAgbm9kZS5pbnNlcnRBZnRlcihkZXN0aW5hdGlvbik7CiAgICBjaGlsZHJlbk9mKG5vZGUpLnJldmVyc2UoKS5lYWNoKGZ1bmN0aW9uKCkgeyBtb3ZlKCQodGhpcyksIG5vZGVbMF0pOyB9KTsKICB9OwogIAogIGZ1bmN0aW9uIHBhcmVudE9mKG5vZGUpIHsKICAgIHZhciBjbGFzc05hbWVzID0gbm9kZVswXS5jbGFzc05hbWUuc3BsaXQoJyAnKTsKICAgIAogICAgZm9yKGtleSBpbiBjbGFzc05hbWVzKSB7CiAgICAgIGlmKGNsYXNzTmFtZXNba2V5XS5tYXRjaCgiY2hpbGQtb2YtIikpIHsKICAgICAgICByZXR1cm4gJCgiIyIgKyBjbGFzc05hbWVzW2tleV0uc3Vic3RyaW5nKDkpKTsKICAgICAgfQogICAgfQogIH07Cn0pKGpRdWVyeSk7]]></data>
	</file>
	<file>
	  <filename>/templates/lightbox/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/lightbox/css/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/lightbox/css/lightbox.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[I2xpZ2h0Ym94ewlwb3NpdGlvbjogYWJzb2x1dGU7CWxlZnQ6IDA7IHdpZHRoOiAxMDAlOyB6LWluZGV4OiAxMDA7IHRleHQtYWxpZ246IGNlbnRlcjsgbGluZS1oZWlnaHQ6IDA7fQojbGlnaHRib3ggaW1neyB3aWR0aDogYXV0bzsgaGVpZ2h0OiBhdXRvO30KI2xpZ2h0Ym94IGEgaW1neyBib3JkZXI6IG5vbmU7IH0KCiNvdXRlckltYWdlQ29udGFpbmVyeyBwb3NpdGlvbjogcmVsYXRpdmU7IGJhY2tncm91bmQtY29sb3I6ICNmZmY7IHdpZHRoOiAyNTBweDsgaGVpZ2h0OiAyNTBweDsgbWFyZ2luOiAwIGF1dG87IH0KI2ltYWdlQ29udGFpbmVyeyBwYWRkaW5nOiAxMHB4OyB9CgojbG9hZGluZ3sgcG9zaXRpb246IGFic29sdXRlOyB0b3A6IDQwJTsgbGVmdDogMCU7IGhlaWdodDogMjUlOyB3aWR0aDogMTAwJTsgdGV4dC1hbGlnbjogY2VudGVyOyBsaW5lLWhlaWdodDogMDsgfQojaG92ZXJOYXZ7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAwOyBsZWZ0OiAwOyBoZWlnaHQ6IDEwMCU7IHdpZHRoOiAxMDAlOyB6LWluZGV4OiAxMDsgfQojaW1hZ2VDb250YWluZXI+I2hvdmVyTmF2eyBsZWZ0OiAwO30KI2hvdmVyTmF2IGF7IG91dGxpbmU6IG5vbmU7fQoKI3ByZXZMaW5rLCAjbmV4dExpbmt7IHdpZHRoOiA0OSU7IGhlaWdodDogMTAwJTsgYmFja2dyb3VuZC1pbWFnZTogdXJsKGRhdGE6aW1hZ2UvZ2lmO2Jhc2U2NCxBQUFBKTsgLyogVHJpY2sgSUUgaW50byBzaG93aW5nIGhvdmVyICovIGRpc3BsYXk6IGJsb2NrOyB9CiNwcmV2TGluayB7IGxlZnQ6IDA7IGZsb2F0OiBsZWZ0O30KI25leHRMaW5rIHsgcmlnaHQ6IDA7IGZsb2F0OiByaWdodDt9CiNwcmV2TGluazpob3ZlciwgI3ByZXZMaW5rOnZpc2l0ZWQ6aG92ZXIgeyBiYWNrZ3JvdW5kOiB1cmwoLi4vaW1hZ2VzL3ByZXZsYWJlbC5naWYpIGxlZnQgMTUlIG5vLXJlcGVhdDsgfQojbmV4dExpbms6aG92ZXIsICNuZXh0TGluazp2aXNpdGVkOmhvdmVyIHsgYmFja2dyb3VuZDogdXJsKC4uL2ltYWdlcy9uZXh0bGFiZWwuZ2lmKSByaWdodCAxNSUgbm8tcmVwZWF0OyB9CgojaW1hZ2VEYXRhQ29udGFpbmVyeyBmb250OiAxMHB4IFZlcmRhbmEsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsgbWFyZ2luOiAwIGF1dG87IGxpbmUtaGVpZ2h0OiAxLjRlbTsgb3ZlcmZsb3c6IGF1dG87IHdpZHRoOiAxMDAlCTsgfQoKI2ltYWdlRGF0YXsJcGFkZGluZzowIDEwcHg7IGNvbG9yOiAjNjY2OyB9CiNpbWFnZURhdGEgI2ltYWdlRGV0YWlsc3sgd2lkdGg6IDcwJTsgZmxvYXQ6IGxlZnQ7IHRleHQtYWxpZ246IGxlZnQ7IH0JCiNpbWFnZURhdGEgI2NhcHRpb257IGZvbnQtd2VpZ2h0OiBib2xkOwl9CiNpbWFnZURhdGEgI251bWJlckRpc3BsYXl7IGRpc3BsYXk6IGJsb2NrOyBjbGVhcjogbGVmdDsgcGFkZGluZy1ib3R0b206IDEuMGVtOwl9CQkJCiNpbWFnZURhdGEgI2JvdHRvbU5hdkNsb3NleyB3aWR0aDogNjZweDsgZmxvYXQ6IHJpZ2h0OyAgcGFkZGluZy1ib3R0b206IDAuN2VtOyBvdXRsaW5lOiBub25lO30JIAkKCiNvdmVybGF5eyBwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMDsgbGVmdDogMDsgei1pbmRleDogOTA7IHdpZHRoOiAxMDAlOyBoZWlnaHQ6IDUwMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwOyB9Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/lightbox/images/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/lightbox/images/bullet.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhBgAGAIAAADs7O1paWiH5BAAAAAAALAAAAAAGAAYAAAIIRB6Gy816QAEAOw==]]></data>
	</file>
	<file>
	  <filename>/templates/lightbox/images/close.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhGgAaALMJAHt7e8jIyJycnPT09JiYmL29vWVlZd7e3lpaWv///wAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAkALAAAAAAaABoAAASLMEl5pr0YH1PzDZxmIEjnJQUZThtJmljqrsnovpl8r8HtwigfbqKbmYq/mDCEHCp9AIKwdApOd8DcVZX1NEmA7kmwHFQxA5tPcLYcANtCO9HaIuTV+k6IzxymAgNwPn1uU3h6LoV0h25qiiyNF39CAXSPJIuRPgYUj5qGRiw2oJNckwaWcxticywWEQA7]]></data>
	</file>
	<file>
	  <filename>/templates/lightbox/images/closelabel.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhQgAWAOYAAMDAwMHBwZ2dnVlZWdLS0oODg6+vr/X19eTk5FBQULi4uIyMjJSUlFRUVFZWVtzc3FJSUsnJyVFRUVhYWFVVVezs7FNTU/b29v39/erq6vr6+qampldXV6KiokxMTE9PT2ZmZvf3993d3czMzGBgYHt7e6Ghofz8/PDw8N7e3mxsbLW1tfv7+5WVlc3NzcrKynh4eOvr60tLS+Dg4F9fX7m5ud/f37S0tIaGhnBwcGNjY+Xl5ZKSkoiIiKmpqW5ubpeXl29vb9XV1Y6Oju3t7WVlZXZ2dpiYmG1tbXx8fO/v7+fn57GxsbOzs/Hx8Xl5eVpaWmRkZE1NTXNzc2dnZ5aWloeHh+Pj405OTmlpadvb23p6ev////7+/gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAABCABYAAAf/gFyCg4SFhoeIiYqLjI2Oj4xdkpOUlZaXl5BcJ42Ynp+YkZJcLEdCXJZcIwIaqKCvoKJdIUAeUSKuXYIuNB5VF5QVWgiwXQjDlwdaWrqLo00yAxZFWq6qJA0DHj6SBAtb4AsEXQBbzJUABeBbBQCUCusFL1wB6+uDoxlbHwMJVDaCRtCwMAALDhRdImxZEEFLhAIGyJmrZGALAwJaCDDYElGigYwbLtDjGKBkAHz5SiQY0EDFDBfYBkixEgJVgQIHJuWUeE4Sgi0CKgmYOJSSoHoPDhmtUIIfBSTYJiToIbKLli3uLJXrybPSVQVdKirYeXRLUkOVuMRIAmGAAw4D/yAMqSlp6yW7k4paAtqlgrotGxCUbSGgsAKURlEYoTBgQoMOrSbhRTcx75ZLfLscAPDN7EjChhFP4qIkCGOWDHRNIoD1bmVJ8MZRYp1VMseRZwulnTElGwUHcU1gcHXg5k5jOSdbzWyZmOZJQHErHZ1ChQRpWUA4mAChw3BJChk6LLBgM0cA6JlVvJhxI9iw7DdsOVnPgMkARARRB3E9AYwrLziwnQTCueJNPOOUY09W6ayzQG0NgnPYSPZ4Zo0IIEAARQIlZCBIDQJOIEEHJ1ByjHOvnHjJMjlFwsUDOqzkXwyoCLKCBBxwIMMNxfSYijNcOMEABB9s4aFRK1iQQDAOIvjo5CjO6MICD09UkAuUTPyww5VPwiILFxpUdQkGS3DZ5SuyNOOJfmf6mGaPgQAAOw==]]></data>
	</file>
	<file>
	  <filename>/templates/lightbox/images/donate-button.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhawAVANUAAMDbWrfWTbvYU7nXUL7aV8LcXdvrdGFuLmNvMmBtLd/tg1xrKGJvMF1sKdfpY1hpImRwM+bxpFtrJujyq9zreOXwn2hyOdjpaF9tK+PvltfoYFdoIGlyOtnpa+LvkmdxN9boX+Dth+HujFdpIVpqJdrqb+fxp93sfVlpI2VwNeTwm2ZxNsffZMXeYcngZ8vharXVSs3jbc/jb9Hkcq3QP6/SQrHTRa7RQLPTR+nyrlZoHwAAAAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAABrABUAAAb/wJxwSCwaj8ikcslsOnOcyWxKrVqv2Kx2y+16vxaTbEwum8/otHrNbrvfn0hsTq/b7/i8fs/v+/8rFS+DhIWGh4iJiouMjY6PKSouk5SVlpeYmZqbnJ2enxAZLKOkO6alp6SoqqytrqOmsa+zrTuwtrS5owgeLb6/scCmv8TDxMfIyS3GxsrOvs3P0sQMIgXX2LE7BdrXsd7b3OHd2ODh2ePppubr5uLr7eTa5+XlByEA+fraAPw7+ab6/QsoEOC/fQb1FSxIMGDDgQkfLnR4kKBChQkUENjI0RSBHR8/ghTpUVvHeRw3mjypEqRHkTBjmnxZcmTNlilzEsBwQoDP8J+mBMQSuoOo0Xk+g/5cGlRp0qJHoTaVWnSq0ahPrzpd+rMBhQFgw5oaEIvsDrNox45Fyxas2rNi4b51e3bt3Llp5dbVG7Zv2AUGAggebErwDsOHA2hTnLgwY8eDHydGHItwZcaIKTc+7Hgx5s+RI0soAaO06dOoU6tezbq169ewY5PogKO27du4c+vezbu379/Ag6O4YKO48ePIkytfzry58+fQoz9wUKO69evYs2vfzr279+/gw4/QcKO8+fPo06tfz769+/fw428AQaO+/fv48+vfz7+///8ABqjDgAQWaOCBCCao4IIMNujggwQGAQA7]]></data>
	</file>
	<file>
	  <filename>/templates/lightbox/images/download-icon.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhFgAWAPfFAGtra1NTU1JSUmtra46Ojo+Pj8nJyZCQkLi4uLS0tJGRkZOTk4yMjFNTU5SUlI+Pj6GhoYSEhD4+PouLi8LCwoSEhMbGxpmZmVJSUpGRkYWFhZOTk8TExK+vr5+fn66urpiYmFNTU4+Pj5GRkUpKSqGhoYyMjHZ2dr29vZCQkKurq6SkpIODg7q6uqCgoIWFhWlpacjIyI2NjZCQkJCQkLCwsLCwsGpqaomJiampqYqKisPDw2tra4mJiZ6enszMzGhoaKurq46OjqysrKWlpaysrJqamqmpqaioqLm5uZmZmZycnJubm6CgoI6Ojo2NjZKSkpSUlL+/v66urr29vZKSkq+vr8rKyqenp5aWlre3t7q6upaWlqenp7i4uIuLi3Z2dr6+vpGRkYyMjJKSkpGRkampqaSkpIeHh6ampp6enru7u5OTk7+/v7a2tr6+vpKSkoyMjIaGhlFRUbW1tZKSkvn5+aioqLi4uJOTk5CQkImJiYeHh8HBwaysrJKSkp2dnaOjo7a2tn19fZqamqGhoZqamo6OjoiIiJeXl5SUlIaGhoqKik9PT5GRkaGhoYeHh46Ojvz8/IuLi5+fn7Ozs5CQkIiIiIGBgaCgoMXFxaqqqoyMjG5uboaGhomJiaqqqqGhoZiYmKOjo5aWlnp6epGRkbGxsby8vGtra2lpaXd3d8fHx5SUlImJiaKiora2tqenp6SkpJWVlcrKyrS0tKurq3R0dI2NjZ2dnaampqenp5mZmVJSUmtra8LCwmtra97e3mxsbFJSUv///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAMUALAAAAAAWABYAAAj/AIsJHEiwoMFijYQpXKgQmMOHEB2SABbjhx9btkCZuXNnly4ismSNehUq1BstDmmNisgyYq41woCxCvWrps2bOH8ZwhNTUyZiQIMKHUqMF6yYO9QAtROsqdOnQUXVitknF9GrQUmditmGCVass6zEpGIIqKSnaIMFzeMn5hZeX6/+MRMTT6K4RE3tigmLVKu/ef78MUXYkmERIiJFEiFLYaVWeVYNm0y5MhhcuDhFCqXQRh5Tw0JZqYWHyi8LtDhMGcZp0iROlBRO+WNpGJ0klA38QgXLyjBXjBhNWqLQliURw9pwoLyl1pRdoX67uuTKkEJQiYcZsEDZjy5KvPIMXPN0CRIkUgp3ReI07A0eympEmZr0YtgLT/dbCVNlKhN7G2ZQZokrLAwCxjAVJFiBKcJIoAoulAyTSXiRQIJJKbd0AkwIlghmCifCFCMBEBuGYOKJlYVwg0MKzREQADs=]]></data>
	</file>
	<file>
	  <filename>/templates/lightbox/images/image-1.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/templates/lightbox/images/loading.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/templates/lightbox/images/nextlabel.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhPwAgAPeDAP39/enp6UdHR6mpqY+Pj+bm5tDQ0MLCwuzs7O/v76qqqvHx8fb29vr6+v7+/lxcXPf39+3t7WdnZ2VlZV9fX0lJSc3Nze7u7ltbW/v7+7y8vKampurq6qenp3BwcPDw8FpaWoCAgLGxsWNjY2BgYPn5+ejo6ExMTFRUVE5OTqOjo9LS0mJiYufn52hoaI6OjldXV2FhYVFRUaioqNXV1d/f38HBwfz8/Pj4+JGRkbS0tF1dXd7e3oODg3p6eoGBgfLy8mZmZoKCgs/Pz1JSUllZWaurq4WFhW1tbWRkZOLi4srKylZWVqSkpLW1tbKysre3t0VFRV5eXqKiovPz88vLy8bGxmtra3V1dcjIyJqamlVVVXh4eIiIiEhISHd3d9jY2I2Njbq6upmZmeDg4G5ubktLS9bW1tzc3FNTU6WlpWpqap2dnU9PT66urr6+voyMjE1NTYaGhuTk5OHh4dfX16ysrOvr68PDw0JCQlhYWH5+fnNzc3l5eZubm+Pj42xsbPT09P///zMzMwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAIMALAAAAAA/ACAAAAj/AAcNEkSwoMGDCBMqXMgQ4cCGECNKnEixosWLGDNq3Mixo8ePIEOKHEmypMmTKEECsDLDQsEbNkQICuREwYCbHZTQaOKSIAIFeOaoGGDEjYIOOiB4BECgQgweBBvseSDIBAsUE0aM2GGhxRUMZAQ5IHCiigEYIzAQIUHiy4KlOVCkOIJDUIMQUgQFeNAjggkTLZQuiQPHQZYUWhyUKMCBTYUVHDgAWErARZg2OgRl+EFBL4gXCcekeeKhTAKDRgQECMl0TQEuRf4I4qw3BhIFalTYYUAQQh8ZIFYcHCCgAGsCEnDU2SIHgpDOAZJg4OMBSYi3ggD08LKjxvDixyUAwXEw5YSCLiT0PjiSIAICBJMFiSCygYUPIAaJG1eJ/IMgBoA8MEEQnuWAEA96hCAIFBV0kB94/EngnyBDMCGDC3pRgIUGHIpBRwlCwICGXT6gAEZB+rH2wgQTCuJHBQQGMMEJAtSYxwYimLFBQTQU4QF2M0SxH0hUJBCfZgicBkB7FzQZAQML3HGkIAsEkAFBDCBwQ0pcVtTAEAaEKaYBFnjXJUQl2HDAmmwe8MYZZ8Yp55x01mnnnQo9hCdEAu0JUUAAOw==]]></data>
	</file>
	<file>
	  <filename>/templates/lightbox/images/prevlabel.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhPwAgAPeJANzc3P39/fb29rq6utra2v7+/ltbW8HBwfX19fz8/F5eXk1NTV9fX/r6+uDg4NXV1djY2ICAgGBgYFFRUVRUVEpKSt3d3eLi4tnZ2cDAwOPj4/n5+cLCwsPDw/Dw8PLy8ru7u6CgoN/f34ODg0JCQktLS11dXVpaWnJycmpqar6+vpCQkJSUlMzMzPj4+KSkpFJSUmVlZcbGxsTExGxsbIGBgba2tuXl5WNjY3BwcHZ2dmZmZufn5+vr687OztfX18rKysnJyejo6FxcXFBQUKGhoY2NjZubm3h4eHt7e5iYmN7e3tPT00BAQLi4uEdHR39/f3p6evPz89bW1qenp+bm5k9PT3d3d2RkZEhISHl5eby8vPT09HR0dG9vb62traOjo/v7+66urr+/v25ubmFhYWlpadTU1I6OjrW1tb29vaKiourq6p2dnbm5uVVVVZqamqampvHx8ff396qqqtDQ0IyMjMjIyKioqKurq2JiYoaGhklJSVhYWLOzs+Hh4UFBQXFxcc/Pz8vLy3Nzc+/v71dXV+7u7v///zMzMwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAIkALAAAAAA/ACAAAAj/ABEJHEiwoMGDCBMqNJgo0cKHECM+dCixosWLGDNq3Mixo8ePIEOKHEmypMmTKFNubOBjTAYOU1wIJJAhg4oWQgR+6HCg5wEOPAbJKDBwQ5A7IhHUmMCgaRIHiIrAUKCgTIw8iCwYMGTgxAkFddBMADCQgAkjIgVA8SLgQ5oSdhKsMQBgg4UcfX5osLJCBIS/BQ4sCDEQTwUfaSMQSoCowAkdUl4ouCEwDhEOVRZQKeghBQ0EiBBcCUQ0pIAIOTwgsJHFSAAwBrZgUINDgoMLFEaocOOkA2M4FIAgYlIBxEgBI4iYGCIBCQZEL2DEGEIBxQxEAAyYMLMDx4gGiDAszVCCSIkEHsdr7Ogw48ccgUUMAPlSYoBAABNYaBCx5ELpJGQ4gAULjCXWhUEhMNBDAjro8QF2C9BxkAwL7CGBICSdhgJ4BIWgwAWIgFBCG1lNsMIDKJ5xiECF0FBBFAFkqEUKHA50xBsiIMIFEnwE8QcFT5AgZBN+CFTAEYCIUVIAGjhQ2kBsACATIj08IMQGABCgpZYeDCQHBKCpJOZFNxAAwJlonhnjmA+1YMMAcMY5AAhhsPlQAQHkqaeedvbp55+ABiqonxQNulBDAQEAOw==]]></data>
	</file>
	<file>
	  <filename>/templates/lightbox/images/thumb-1.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/templates/lightbox/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgU3RyaWN0Ly9FTiINCiAgICAgICAgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXN0cmljdC5kdGQiPg0KPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIGxhbmc9ImVuIj4NCjxoZWFkPg0KCQ0KCTx0aXRsZT5MaWdodGJveCBKUyB2Mi4wIHwgVGVzdCBQYWdlPC90aXRsZT4NCg0KCTxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iY3NzL2xpZ2h0Ym94LmNzcyIgdHlwZT0idGV4dC9jc3MiIG1lZGlhPSJzY3JlZW4iIC8+DQoJDQoJPHNjcmlwdCBzcmM9ImpzL3Byb3RvdHlwZS5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4NCgk8c2NyaXB0IHNyYz0ianMvc2NyaXB0YWN1bG91cy5qcz9sb2FkPWVmZmVjdHMsYnVpbGRlciIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4NCgk8c2NyaXB0IHNyYz0ianMvbGlnaHRib3guanMiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+DQoNCgk8c3R5bGUgdHlwZT0idGV4dC9jc3MiPg0KCQlib2R5eyBjb2xvcjogIzMzMzsgZm9udDogMTNweCAnTHVjaWRhIEdyYW5kZScsIFZlcmRhbmEsIHNhbnMtc2VyaWY7CX0NCgk8L3N0eWxlPg0KDQo8L2hlYWQ+DQo8Ym9keT4NCg0KDQo8aDE+PGEgaHJlZj0iaHR0cDovL3d3dy5sb2tlc2hkaGFrYXIuY29tL3Byb2plY3RzL2xpZ2h0Ym94Mi8iPkxpZ2h0Ym94IEpTIDxlbT52Mi4wNDwvZW0+PC9hPjwvaDE+DQo8cD48YSBocmVmPSJodHRwOi8vd3d3Lmxva2VzaGRoYWthci5jb20iPmJ5IExva2VzaCBEaGFrYXI8L2E+PC9wPg0KDQo8aDI+RXhhbXBsZTwvaDI+DQoNCjxhIGhyZWY9ImltYWdlcy9pbWFnZS0xLmpwZyIgcmVsPSJsaWdodGJveCI+PGltZyBzcmM9ImltYWdlcy90aHVtYi0xLmpwZyIgd2lkdGg9IjEwMCIgaGVpZ2h0PSI0MCIgYWx0PSIiIC8+PC9hPg0KDQoNCg0KDQo8aDI+SG93IHRvIFVzZTo8L2gyPg0KPGgzPlBhcnQgMSAtIFNldHVwPC9oMz4NCjxvbD4NCjxsaT5MaWdodGJveCB2Mi4wIHVzZXMgdGhlIFByb3RvdHlwZSBGcmFtZXdvcmsgYW5kIFNjcmlwdGFjdWxvdXMgRWZmZWN0cyBMaWJyYXJ5LiBZb3Ugd2lsbCBuZWVkIHRvIGluY2x1ZGUgdGhlc2UgdGhyZWUgSmF2YXNjcmlwdCBmaWxlcyBpbiB5b3VyIGhlYWRlci4NCjxwcmU+PGNvZGU+Jmx0O3NjcmlwdCB0eXBlPSZxdW90O3RleHQvamF2YXNjcmlwdCZxdW90OyBzcmM9JnF1b3Q7anMvcHJvdG90eXBlLmpzJnF1b3Q7Jmd0OyZsdDsvc2NyaXB0Jmd0Ow0KJmx0O3NjcmlwdCB0eXBlPSZxdW90O3RleHQvamF2YXNjcmlwdCZxdW90OyBzcmM9JnF1b3Q7anMvc2NyaXB0YWN1bG91cy5qcz9sb2FkPWVmZmVjdHMsYnVpbGRlciZxdW90OyZndDsmbHQ7L3NjcmlwdCZndDsNCiZsdDtzY3JpcHQgdHlwZT0mcXVvdDt0ZXh0L2phdmFzY3JpcHQmcXVvdDsgc3JjPSZxdW90O2pzL2xpZ2h0Ym94LmpzJnF1b3Q7Jmd0OyZsdDsvc2NyaXB0Jmd0Ow0KPC9jb2RlPjwvcHJlPg0KPC9saT4NCjxsaT5JbmNsdWRlIHRoZSBMaWdodGJveCBDU1MgZmlsZSAob3IgYXBwZW5kIHlvdXIgYWN0aXZlIHN0eWxlc2hlZXQgd2l0aCB0aGUgTGlnaHRib3ggc3R5bGVzKS4NCjxwcmU+PGNvZGU+Jmx0O2xpbmsgcmVsPSZxdW90O3N0eWxlc2hlZXQmcXVvdDsgaHJlZj0mcXVvdDtjc3MvbGlnaHRib3guY3NzJnF1b3Q7IHR5cGU9JnF1b3Q7dGV4dC9jc3MmcXVvdDsgbWVkaWE9JnF1b3Q7c2NyZWVuJnF1b3Q7IC8mZ3Q7DQo8L2NvZGU+PC9wcmU+DQo8L2xpPg0KPGxpPkNoZWNrIHRoZSBDU1MgYW5kIG1ha2Ugc3VyZSB0aGUgcmVmZXJlbmNlZCA8Y29kZT5wcmV2bGFiZWwuZ2lmPC9jb2RlPiBhbmQgPGNvZGU+bmV4dGxhYmVsLmdpZjwvY29kZT4gZmlsZXMgYXJlIGluIHRoZSByaWdodCBsb2NhdGlvbi4gQWxzbywgbWFrZSBzdXJlIHRoZSA8Y29kZT5sb2FkaW5nLmdpZjwvY29kZT4gYW5kIDxjb2RlPmNsb3NlbGFiZWwuZ2lmPC9jb2RlPiBmaWxlcyBhcyByZWZlcmVuY2VkIG5lYXIgdGhlIHRvcCBvZiB0aGUgPGNvZGU+bGlnaHRib3guanM8L2NvZGU+IGZpbGUgYXJlIGluIHRoZSByaWdodCBsb2NhdGlvbi48L2xpPg0KPC9vbD4NCjxoMz5QYXJ0IDIgLSBBY3RpdmF0ZTwvaDM+DQo8b2w+DQo8bGk+QWRkIGEgPGNvZGU+cmVsPSJsaWdodGJveCI8L2NvZGU+IGF0dHJpYnV0ZSB0byBhbnkgbGluayB0YWcgdG8gYWN0aXZhdGUgdGhlIGxpZ2h0Ym94LiBGb3IgZXhhbXBsZToNCjxwcmU+PGNvZGU+Jmx0O2EgaHJlZj0mcXVvdDtpbWFnZXMvaW1hZ2UtMS5qcGcmcXVvdDsgcmVsPSZxdW90O2xpZ2h0Ym94JnF1b3Q7IHRpdGxlPSZxdW90O215IGNhcHRpb24mcXVvdDsmZ3Q7aW1hZ2UgIzEmbHQ7L2EmZ3Q7DQo8L2NvZGU+PC9wcmU+DQo8ZW0+T3B0aW9uYWw6IDwvZW0+VXNlIHRoZSA8Y29kZT50aXRsZTwvY29kZT4gYXR0cmlidXRlIGlmIHlvdSB3YW50IHRvIHNob3cgYSBjYXB0aW9uLgkJPC9saT4NCjxsaT5JZiB5b3UgaGF2ZSBhIHNldCBvZiByZWxhdGVkIGltYWdlcyB0aGF0IHlvdSB3b3VsZCBsaWtlIHRvIGdyb3VwLCBmb2xsb3cgc3RlcCBvbmUgYnV0IGFkZGl0aW9uYWxseSBpbmNsdWRlIGEgZ3JvdXAgbmFtZSBiZXR3ZWVuIHNxdWFyZSBicmFja2V0cyBpbiB0aGUgcmVsIGF0dHJpYnV0ZS4gRm9yIGV4YW1wbGU6IA0KPHByZT48Y29kZT4mbHQ7YSBocmVmPSZxdW90O2ltYWdlcy9pbWFnZS0xLmpwZyZxdW90OyByZWw9JnF1b3Q7bGlnaHRib3hbcm9hZHRyaXBdJnF1b3Q7Jmd0O2ltYWdlICMxJmx0Oy9hJmd0Ow0KJmx0O2EgaHJlZj0mcXVvdDtpbWFnZXMvaW1hZ2UtMi5qcGcmcXVvdDsgcmVsPSZxdW90O2xpZ2h0Ym94W3JvYWR0cmlwXSZxdW90OyZndDtpbWFnZSAjMiZsdDsvYSZndDsNCiZsdDthIGhyZWY9JnF1b3Q7aW1hZ2VzL2ltYWdlLTMuanBnJnF1b3Q7IHJlbD0mcXVvdDtsaWdodGJveFtyb2FkdHJpcF0mcXVvdDsmZ3Q7aW1hZ2UgIzMmbHQ7L2EmZ3Q7DQo8L2NvZGU+PC9wcmU+DQpObyBsaW1pdHMgdG8gdGhlIG51bWJlciBvZiBpbWFnZSBzZXRzIHBlciBwYWdlIG9yIGhvdyBtYW55IGltYWdlcyBhcmUgYWxsb3dlZCBpbiBlYWNoIHNldC4gR28gbnV0cyE8L2xpPg0KPC9vbD4JDQoNCg0KPC9ib2R5Pg0KPC9odG1sPg0K]]></data>
	</file>
	<file>
	  <filename>/templates/lightbox/js/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/lightbox/js/builder.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8gc2NyaXB0LmFjdWxvLnVzIGJ1aWxkZXIuanMgdjEuOC4xLCBUaHUgSmFuIDAzIDIyOjA3OjEyIC0wNTAwIDIwMDgKCi8vIENvcHlyaWdodCAoYykgMjAwNS0yMDA3IFRob21hcyBGdWNocyAoaHR0cDovL3NjcmlwdC5hY3Vsby51cywgaHR0cDovL21pci5hY3Vsby51cykKLy8KLy8gc2NyaXB0LmFjdWxvLnVzIGlzIGZyZWVseSBkaXN0cmlidXRhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiBhbiBNSVQtc3R5bGUgbGljZW5zZS4KLy8gRm9yIGRldGFpbHMsIHNlZSB0aGUgc2NyaXB0LmFjdWxvLnVzIHdlYiBzaXRlOiBodHRwOi8vc2NyaXB0LmFjdWxvLnVzLwoKdmFyIEJ1aWxkZXIgPSB7CiAgTk9ERU1BUDogewogICAgQVJFQTogJ21hcCcsCiAgICBDQVBUSU9OOiAndGFibGUnLAogICAgQ09MOiAndGFibGUnLAogICAgQ09MR1JPVVA6ICd0YWJsZScsCiAgICBMRUdFTkQ6ICdmaWVsZHNldCcsCiAgICBPUFRHUk9VUDogJ3NlbGVjdCcsCiAgICBPUFRJT046ICdzZWxlY3QnLAogICAgUEFSQU06ICdvYmplY3QnLAogICAgVEJPRFk6ICd0YWJsZScsCiAgICBURDogJ3RhYmxlJywKICAgIFRGT09UOiAndGFibGUnLAogICAgVEg6ICd0YWJsZScsCiAgICBUSEVBRDogJ3RhYmxlJywKICAgIFRSOiAndGFibGUnCiAgfSwKICAvLyBub3RlOiBGb3IgRmlyZWZveCA8IDEuNSwgT1BUSU9OIGFuZCBPUFRHUk9VUCB0YWdzIGFyZSBjdXJyZW50bHkgYnJva2VuLAogIC8vICAgICAgIGR1ZSB0byBhIEZpcmVmb3ggYnVnCiAgbm9kZTogZnVuY3Rpb24oZWxlbWVudE5hbWUpIHsKICAgIGVsZW1lbnROYW1lID0gZWxlbWVudE5hbWUudG9VcHBlckNhc2UoKTsKICAgIAogICAgLy8gdHJ5IGlubmVySFRNTCBhcHByb2FjaAogICAgdmFyIHBhcmVudFRhZyA9IHRoaXMuTk9ERU1BUFtlbGVtZW50TmFtZV0gfHwgJ2Rpdic7CiAgICB2YXIgcGFyZW50RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQocGFyZW50VGFnKTsKICAgIHRyeSB7IC8vIHByZXZlbnQgSUUgImZlYXR1cmUiOiBodHRwOi8vZGV2LnJ1YnlvbnJhaWxzLm9yZy90aWNrZXQvMjcwNwogICAgICBwYXJlbnRFbGVtZW50LmlubmVySFRNTCA9ICI8IiArIGVsZW1lbnROYW1lICsgIj48LyIgKyBlbGVtZW50TmFtZSArICI+IjsKICAgIH0gY2F0Y2goZSkge30KICAgIHZhciBlbGVtZW50ID0gcGFyZW50RWxlbWVudC5maXJzdENoaWxkIHx8IG51bGw7CiAgICAgIAogICAgLy8gc2VlIGlmIGJyb3dzZXIgYWRkZWQgd3JhcHBpbmcgdGFncwogICAgaWYoZWxlbWVudCAmJiAoZWxlbWVudC50YWdOYW1lLnRvVXBwZXJDYXNlKCkgIT0gZWxlbWVudE5hbWUpKQogICAgICBlbGVtZW50ID0gZWxlbWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZShlbGVtZW50TmFtZSlbMF07CiAgICAKICAgIC8vIGZhbGxiYWNrIHRvIGNyZWF0ZUVsZW1lbnQgYXBwcm9hY2gKICAgIGlmKCFlbGVtZW50KSBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChlbGVtZW50TmFtZSk7CiAgICAKICAgIC8vIGFib3J0IGlmIG5vdGhpbmcgY291bGQgYmUgY3JlYXRlZAogICAgaWYoIWVsZW1lbnQpIHJldHVybjsKCiAgICAvLyBhdHRyaWJ1dGVzIChvciB0ZXh0KQogICAgaWYoYXJndW1lbnRzWzFdKQogICAgICBpZih0aGlzLl9pc1N0cmluZ09yTnVtYmVyKGFyZ3VtZW50c1sxXSkgfHwKICAgICAgICAoYXJndW1lbnRzWzFdIGluc3RhbmNlb2YgQXJyYXkpIHx8CiAgICAgICAgYXJndW1lbnRzWzFdLnRhZ05hbWUpIHsKICAgICAgICAgIHRoaXMuX2NoaWxkcmVuKGVsZW1lbnQsIGFyZ3VtZW50c1sxXSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIHZhciBhdHRycyA9IHRoaXMuX2F0dHJpYnV0ZXMoYXJndW1lbnRzWzFdKTsKICAgICAgICAgIGlmKGF0dHJzLmxlbmd0aCkgewogICAgICAgICAgICB0cnkgeyAvLyBwcmV2ZW50IElFICJmZWF0dXJlIjogaHR0cDovL2Rldi5ydWJ5b25yYWlscy5vcmcvdGlja2V0LzI3MDcKICAgICAgICAgICAgICBwYXJlbnRFbGVtZW50LmlubmVySFRNTCA9ICI8IiArZWxlbWVudE5hbWUgKyAiICIgKwogICAgICAgICAgICAgICAgYXR0cnMgKyAiPjwvIiArIGVsZW1lbnROYW1lICsgIj4iOwogICAgICAgICAgICB9IGNhdGNoKGUpIHt9CiAgICAgICAgICAgIGVsZW1lbnQgPSBwYXJlbnRFbGVtZW50LmZpcnN0Q2hpbGQgfHwgbnVsbDsKICAgICAgICAgICAgLy8gd29ya2Fyb3VuZCBmaXJlZm94IDEuMC5YIGJ1ZwogICAgICAgICAgICBpZighZWxlbWVudCkgewogICAgICAgICAgICAgIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KGVsZW1lbnROYW1lKTsKICAgICAgICAgICAgICBmb3IoYXR0ciBpbiBhcmd1bWVudHNbMV0pIAogICAgICAgICAgICAgICAgZWxlbWVudFthdHRyID09ICdjbGFzcycgPyAnY2xhc3NOYW1lJyA6IGF0dHJdID0gYXJndW1lbnRzWzFdW2F0dHJdOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmKGVsZW1lbnQudGFnTmFtZS50b1VwcGVyQ2FzZSgpICE9IGVsZW1lbnROYW1lKQogICAgICAgICAgICAgIGVsZW1lbnQgPSBwYXJlbnRFbGVtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKGVsZW1lbnROYW1lKVswXTsKICAgICAgICAgIH0KICAgICAgICB9IAoKICAgIC8vIHRleHQsIG9yIGFycmF5IG9mIGNoaWxkcmVuCiAgICBpZihhcmd1bWVudHNbMl0pCiAgICAgIHRoaXMuX2NoaWxkcmVuKGVsZW1lbnQsIGFyZ3VtZW50c1syXSk7CgogICAgIHJldHVybiBlbGVtZW50OwogIH0sCiAgX3RleHQ6IGZ1bmN0aW9uKHRleHQpIHsKICAgICByZXR1cm4gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodGV4dCk7CiAgfSwKCiAgQVRUUl9NQVA6IHsKICAgICdjbGFzc05hbWUnOiAnY2xhc3MnLAogICAgJ2h0bWxGb3InOiAnZm9yJwogIH0sCgogIF9hdHRyaWJ1dGVzOiBmdW5jdGlvbihhdHRyaWJ1dGVzKSB7CiAgICB2YXIgYXR0cnMgPSBbXTsKICAgIGZvcihhdHRyaWJ1dGUgaW4gYXR0cmlidXRlcykKICAgICAgYXR0cnMucHVzaCgoYXR0cmlidXRlIGluIHRoaXMuQVRUUl9NQVAgPyB0aGlzLkFUVFJfTUFQW2F0dHJpYnV0ZV0gOiBhdHRyaWJ1dGUpICsKICAgICAgICAgICc9IicgKyBhdHRyaWJ1dGVzW2F0dHJpYnV0ZV0udG9TdHJpbmcoKS5lc2NhcGVIVE1MKCkuZ3N1YigvIi8sJyZxdW90OycpICsgJyInKTsKICAgIHJldHVybiBhdHRycy5qb2luKCIgIik7CiAgfSwKICBfY2hpbGRyZW46IGZ1bmN0aW9uKGVsZW1lbnQsIGNoaWxkcmVuKSB7CiAgICBpZihjaGlsZHJlbi50YWdOYW1lKSB7CiAgICAgIGVsZW1lbnQuYXBwZW5kQ2hpbGQoY2hpbGRyZW4pOwogICAgICByZXR1cm47CiAgICB9CiAgICBpZih0eXBlb2YgY2hpbGRyZW49PSdvYmplY3QnKSB7IC8vIGFycmF5IGNhbiBob2xkIG5vZGVzIGFuZCB0ZXh0CiAgICAgIGNoaWxkcmVuLmZsYXR0ZW4oKS5lYWNoKCBmdW5jdGlvbihlKSB7CiAgICAgICAgaWYodHlwZW9mIGU9PSdvYmplY3QnKQogICAgICAgICAgZWxlbWVudC5hcHBlbmRDaGlsZChlKQogICAgICAgIGVsc2UKICAgICAgICAgIGlmKEJ1aWxkZXIuX2lzU3RyaW5nT3JOdW1iZXIoZSkpCiAgICAgICAgICAgIGVsZW1lbnQuYXBwZW5kQ2hpbGQoQnVpbGRlci5fdGV4dChlKSk7CiAgICAgIH0pOwogICAgfSBlbHNlCiAgICAgIGlmKEJ1aWxkZXIuX2lzU3RyaW5nT3JOdW1iZXIoY2hpbGRyZW4pKQogICAgICAgIGVsZW1lbnQuYXBwZW5kQ2hpbGQoQnVpbGRlci5fdGV4dChjaGlsZHJlbikpOwogIH0sCiAgX2lzU3RyaW5nT3JOdW1iZXI6IGZ1bmN0aW9uKHBhcmFtKSB7CiAgICByZXR1cm4odHlwZW9mIHBhcmFtPT0nc3RyaW5nJyB8fCB0eXBlb2YgcGFyYW09PSdudW1iZXInKTsKICB9LAogIGJ1aWxkOiBmdW5jdGlvbihodG1sKSB7CiAgICB2YXIgZWxlbWVudCA9IHRoaXMubm9kZSgnZGl2Jyk7CiAgICAkKGVsZW1lbnQpLnVwZGF0ZShodG1sLnN0cmlwKCkpOwogICAgcmV0dXJuIGVsZW1lbnQuZG93bigpOwogIH0sCiAgZHVtcDogZnVuY3Rpb24oc2NvcGUpIHsgCiAgICBpZih0eXBlb2Ygc2NvcGUgIT0gJ29iamVjdCcgJiYgdHlwZW9mIHNjb3BlICE9ICdmdW5jdGlvbicpIHNjb3BlID0gd2luZG93OyAvL2dsb2JhbCBzY29wZSAKICAKICAgIHZhciB0YWdzID0gKCJBIEFCQlIgQUNST05ZTSBBRERSRVNTIEFQUExFVCBBUkVBIEIgQkFTRSBCQVNFRk9OVCBCRE8gQklHIEJMT0NLUVVPVEUgQk9EWSAiICsKICAgICAgIkJSIEJVVFRPTiBDQVBUSU9OIENFTlRFUiBDSVRFIENPREUgQ09MIENPTEdST1VQIEREIERFTCBERk4gRElSIERJViBETCBEVCBFTSBGSUVMRFNFVCAiICsKICAgICAgIkZPTlQgRk9STSBGUkFNRSBGUkFNRVNFVCBIMSBIMiBIMyBINCBINSBINiBIRUFEIEhSIEhUTUwgSSBJRlJBTUUgSU1HIElOUFVUIElOUyBJU0lOREVYICIrCiAgICAgICJLQkQgTEFCRUwgTEVHRU5EIExJIExJTksgTUFQIE1FTlUgTUVUQSBOT0ZSQU1FUyBOT1NDUklQVCBPQkpFQ1QgT0wgT1BUR1JPVVAgT1BUSU9OIFAgIisKICAgICAgIlBBUkFNIFBSRSBRIFMgU0FNUCBTQ1JJUFQgU0VMRUNUIFNNQUxMIFNQQU4gU1RSSUtFIFNUUk9ORyBTVFlMRSBTVUIgU1VQIFRBQkxFIFRCT0RZIFREICIrCiAgICAgICJURVhUQVJFQSBURk9PVCBUSCBUSEVBRCBUSVRMRSBUUiBUVCBVIFVMIFZBUiIpLnNwbGl0KC9ccysvKTsKICAKICAgIHRhZ3MuZWFjaCggZnVuY3Rpb24odGFnKXsgCiAgICAgIHNjb3BlW3RhZ10gPSBmdW5jdGlvbigpIHsgCiAgICAgICAgcmV0dXJuIEJ1aWxkZXIubm9kZS5hcHBseShCdWlsZGVyLCBbdGFnXS5jb25jYXQoJEEoYXJndW1lbnRzKSkpOyAgCiAgICAgIH0gCiAgICB9KTsKICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/templates/lightbox/js/effects.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8gc2NyaXB0LmFjdWxvLnVzIGVmZmVjdHMuanMgdjEuOC4xLCBUaHUgSmFuIDAzIDIyOjA3OjEyIC0wNTAwIDIwMDgKCi8vIENvcHlyaWdodCAoYykgMjAwNS0yMDA3IFRob21hcyBGdWNocyAoaHR0cDovL3NjcmlwdC5hY3Vsby51cywgaHR0cDovL21pci5hY3Vsby51cykKLy8gQ29udHJpYnV0b3JzOgovLyAgSnVzdGluIFBhbG1lciAoaHR0cDovL2VuY3l0ZW1lZGlhLmNvbS8pCi8vICBNYXJrIFBpbGdyaW0gKGh0dHA6Ly9kaXZlaW50b21hcmsub3JnLykKLy8gIE1hcnRpbiBCaWFsYXNpbmtpCi8vIAovLyBzY3JpcHQuYWN1bG8udXMgaXMgZnJlZWx5IGRpc3RyaWJ1dGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIGFuIE1JVC1zdHlsZSBsaWNlbnNlLgovLyBGb3IgZGV0YWlscywgc2VlIHRoZSBzY3JpcHQuYWN1bG8udXMgd2ViIHNpdGU6IGh0dHA6Ly9zY3JpcHQuYWN1bG8udXMvIAoKLy8gY29udmVydHMgcmdiKCkgYW5kICN4eHggdG8gI3h4eHh4eCBmb3JtYXQsICAKLy8gcmV0dXJucyBzZWxmIChvciBmaXJzdCBhcmd1bWVudCkgaWYgbm90IGNvbnZlcnRhYmxlICAKU3RyaW5nLnByb3RvdHlwZS5wYXJzZUNvbG9yID0gZnVuY3Rpb24oKSB7ICAKICB2YXIgY29sb3IgPSAnIyc7CiAgaWYgKHRoaXMuc2xpY2UoMCw0KSA9PSAncmdiKCcpIHsgIAogICAgdmFyIGNvbHMgPSB0aGlzLnNsaWNlKDQsdGhpcy5sZW5ndGgtMSkuc3BsaXQoJywnKTsgIAogICAgdmFyIGk9MDsgZG8geyBjb2xvciArPSBwYXJzZUludChjb2xzW2ldKS50b0NvbG9yUGFydCgpIH0gd2hpbGUgKCsraTwzKTsgIAogIH0gZWxzZSB7ICAKICAgIGlmICh0aGlzLnNsaWNlKDAsMSkgPT0gJyMnKSB7ICAKICAgICAgaWYgKHRoaXMubGVuZ3RoPT00KSBmb3IodmFyIGk9MTtpPDQ7aSsrKSBjb2xvciArPSAodGhpcy5jaGFyQXQoaSkgKyB0aGlzLmNoYXJBdChpKSkudG9Mb3dlckNhc2UoKTsgIAogICAgICBpZiAodGhpcy5sZW5ndGg9PTcpIGNvbG9yID0gdGhpcy50b0xvd2VyQ2FzZSgpOyAgCiAgICB9ICAKICB9ICAKICByZXR1cm4gKGNvbG9yLmxlbmd0aD09NyA/IGNvbG9yIDogKGFyZ3VtZW50c1swXSB8fCB0aGlzKSk7ICAKfTsKCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKRWxlbWVudC5jb2xsZWN0VGV4dE5vZGVzID0gZnVuY3Rpb24oZWxlbWVudCkgeyAgCiAgcmV0dXJuICRBKCQoZWxlbWVudCkuY2hpbGROb2RlcykuY29sbGVjdCggZnVuY3Rpb24obm9kZSkgewogICAgcmV0dXJuIChub2RlLm5vZGVUeXBlPT0zID8gbm9kZS5ub2RlVmFsdWUgOiAKICAgICAgKG5vZGUuaGFzQ2hpbGROb2RlcygpID8gRWxlbWVudC5jb2xsZWN0VGV4dE5vZGVzKG5vZGUpIDogJycpKTsKICB9KS5mbGF0dGVuKCkuam9pbignJyk7Cn07CgpFbGVtZW50LmNvbGxlY3RUZXh0Tm9kZXNJZ25vcmVDbGFzcyA9IGZ1bmN0aW9uKGVsZW1lbnQsIGNsYXNzTmFtZSkgeyAgCiAgcmV0dXJuICRBKCQoZWxlbWVudCkuY2hpbGROb2RlcykuY29sbGVjdCggZnVuY3Rpb24obm9kZSkgewogICAgcmV0dXJuIChub2RlLm5vZGVUeXBlPT0zID8gbm9kZS5ub2RlVmFsdWUgOiAKICAgICAgKChub2RlLmhhc0NoaWxkTm9kZXMoKSAmJiAhRWxlbWVudC5oYXNDbGFzc05hbWUobm9kZSxjbGFzc05hbWUpKSA/IAogICAgICAgIEVsZW1lbnQuY29sbGVjdFRleHROb2Rlc0lnbm9yZUNsYXNzKG5vZGUsIGNsYXNzTmFtZSkgOiAnJykpOwogIH0pLmZsYXR0ZW4oKS5qb2luKCcnKTsKfTsKCkVsZW1lbnQuc2V0Q29udGVudFpvb20gPSBmdW5jdGlvbihlbGVtZW50LCBwZXJjZW50KSB7CiAgZWxlbWVudCA9ICQoZWxlbWVudCk7ICAKICBlbGVtZW50LnNldFN0eWxlKHtmb250U2l6ZTogKHBlcmNlbnQvMTAwKSArICdlbSd9KTsgICAKICBpZiAoUHJvdG90eXBlLkJyb3dzZXIuV2ViS2l0KSB3aW5kb3cuc2Nyb2xsQnkoMCwwKTsKICByZXR1cm4gZWxlbWVudDsKfTsKCkVsZW1lbnQuZ2V0SW5saW5lT3BhY2l0eSA9IGZ1bmN0aW9uKGVsZW1lbnQpewogIHJldHVybiAkKGVsZW1lbnQpLnN0eWxlLm9wYWNpdHkgfHwgJyc7Cn07CgpFbGVtZW50LmZvcmNlUmVyZW5kZXJpbmcgPSBmdW5jdGlvbihlbGVtZW50KSB7CiAgdHJ5IHsKICAgIGVsZW1lbnQgPSAkKGVsZW1lbnQpOwogICAgdmFyIG4gPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnICcpOwogICAgZWxlbWVudC5hcHBlbmRDaGlsZChuKTsKICAgIGVsZW1lbnQucmVtb3ZlQ2hpbGQobik7CiAgfSBjYXRjaChlKSB7IH0KfTsKCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKdmFyIEVmZmVjdCA9IHsKICBfZWxlbWVudERvZXNOb3RFeGlzdEVycm9yOiB7CiAgICBuYW1lOiAnRWxlbWVudERvZXNOb3RFeGlzdEVycm9yJywKICAgIG1lc3NhZ2U6ICdUaGUgc3BlY2lmaWVkIERPTSBlbGVtZW50IGRvZXMgbm90IGV4aXN0LCBidXQgaXMgcmVxdWlyZWQgZm9yIHRoaXMgZWZmZWN0IHRvIG9wZXJhdGUnCiAgfSwKICBUcmFuc2l0aW9uczogewogICAgbGluZWFyOiBQcm90b3R5cGUuSywKICAgIHNpbm9pZGFsOiBmdW5jdGlvbihwb3MpIHsKICAgICAgcmV0dXJuICgtTWF0aC5jb3MocG9zKk1hdGguUEkpLzIpICsgMC41OwogICAgfSwKICAgIHJldmVyc2U6IGZ1bmN0aW9uKHBvcykgewogICAgICByZXR1cm4gMS1wb3M7CiAgICB9LAogICAgZmxpY2tlcjogZnVuY3Rpb24ocG9zKSB7CiAgICAgIHZhciBwb3MgPSAoKC1NYXRoLmNvcyhwb3MqTWF0aC5QSSkvNCkgKyAwLjc1KSArIE1hdGgucmFuZG9tKCkvNDsKICAgICAgcmV0dXJuIHBvcyA+IDEgPyAxIDogcG9zOwogICAgfSwKICAgIHdvYmJsZTogZnVuY3Rpb24ocG9zKSB7CiAgICAgIHJldHVybiAoLU1hdGguY29zKHBvcypNYXRoLlBJKig5KnBvcykpLzIpICsgMC41OwogICAgfSwKICAgIHB1bHNlOiBmdW5jdGlvbihwb3MsIHB1bHNlcykgeyAKICAgICAgcHVsc2VzID0gcHVsc2VzIHx8IDU7IAogICAgICByZXR1cm4gKAogICAgICAgICgocG9zICUgKDEvcHVsc2VzKSkgKiBwdWxzZXMpLnJvdW5kKCkgPT0gMCA/IAogICAgICAgICAgICAgICgocG9zICogcHVsc2VzICogMikgLSAocG9zICogcHVsc2VzICogMikuZmxvb3IoKSkgOiAKICAgICAgICAgIDEgLSAoKHBvcyAqIHB1bHNlcyAqIDIpIC0gKHBvcyAqIHB1bHNlcyAqIDIpLmZsb29yKCkpCiAgICAgICAgKTsKICAgIH0sCiAgICBzcHJpbmc6IGZ1bmN0aW9uKHBvcykgeyAKICAgICAgcmV0dXJuIDEgLSAoTWF0aC5jb3MocG9zICogNC41ICogTWF0aC5QSSkgKiBNYXRoLmV4cCgtcG9zICogNikpOyAKICAgIH0sCiAgICBub25lOiBmdW5jdGlvbihwb3MpIHsKICAgICAgcmV0dXJuIDA7CiAgICB9LAogICAgZnVsbDogZnVuY3Rpb24ocG9zKSB7CiAgICAgIHJldHVybiAxOwogICAgfQogIH0sCiAgRGVmYXVsdE9wdGlvbnM6IHsKICAgIGR1cmF0aW9uOiAgIDEuMCwgICAvLyBzZWNvbmRzCiAgICBmcHM6ICAgICAgICAxMDAsICAgLy8gMTAwPSBhc3N1bWUgNjZmcHMgbWF4LgogICAgc3luYzogICAgICAgZmFsc2UsIC8vIHRydWUgZm9yIGNvbWJpbmluZwogICAgZnJvbTogICAgICAgMC4wLAogICAgdG86ICAgICAgICAgMS4wLAogICAgZGVsYXk6ICAgICAgMC4wLAogICAgcXVldWU6ICAgICAgJ3BhcmFsbGVsJwogIH0sCiAgdGFnaWZ5VGV4dDogZnVuY3Rpb24oZWxlbWVudCkgewogICAgdmFyIHRhZ2lmeVN0eWxlID0gJ3Bvc2l0aW9uOnJlbGF0aXZlJzsKICAgIGlmIChQcm90b3R5cGUuQnJvd3Nlci5JRSkgdGFnaWZ5U3R5bGUgKz0gJzt6b29tOjEnOwogICAgCiAgICBlbGVtZW50ID0gJChlbGVtZW50KTsKICAgICRBKGVsZW1lbnQuY2hpbGROb2RlcykuZWFjaCggZnVuY3Rpb24oY2hpbGQpIHsKICAgICAgaWYgKGNoaWxkLm5vZGVUeXBlPT0zKSB7CiAgICAgICAgY2hpbGQubm9kZVZhbHVlLnRvQXJyYXkoKS5lYWNoKCBmdW5jdGlvbihjaGFyYWN0ZXIpIHsKICAgICAgICAgIGVsZW1lbnQuaW5zZXJ0QmVmb3JlKAogICAgICAgICAgICBuZXcgRWxlbWVudCgnc3BhbicsIHtzdHlsZTogdGFnaWZ5U3R5bGV9KS51cGRhdGUoCiAgICAgICAgICAgICAgY2hhcmFjdGVyID09ICcgJyA/IFN0cmluZy5mcm9tQ2hhckNvZGUoMTYwKSA6IGNoYXJhY3RlciksIAogICAgICAgICAgICAgIGNoaWxkKTsKICAgICAgICB9KTsKICAgICAgICBFbGVtZW50LnJlbW92ZShjaGlsZCk7CiAgICAgIH0KICAgIH0pOwogIH0sCiAgbXVsdGlwbGU6IGZ1bmN0aW9uKGVsZW1lbnQsIGVmZmVjdCkgewogICAgdmFyIGVsZW1lbnRzOwogICAgaWYgKCgodHlwZW9mIGVsZW1lbnQgPT0gJ29iamVjdCcpIHx8IAogICAgICAgIE9iamVjdC5pc0Z1bmN0aW9uKGVsZW1lbnQpKSAmJiAKICAgICAgIChlbGVtZW50Lmxlbmd0aCkpCiAgICAgIGVsZW1lbnRzID0gZWxlbWVudDsKICAgIGVsc2UKICAgICAgZWxlbWVudHMgPSAkKGVsZW1lbnQpLmNoaWxkTm9kZXM7CiAgICAgIAogICAgdmFyIG9wdGlvbnMgPSBPYmplY3QuZXh0ZW5kKHsKICAgICAgc3BlZWQ6IDAuMSwKICAgICAgZGVsYXk6IDAuMAogICAgfSwgYXJndW1lbnRzWzJdIHx8IHsgfSk7CiAgICB2YXIgbWFzdGVyRGVsYXkgPSBvcHRpb25zLmRlbGF5OwoKICAgICRBKGVsZW1lbnRzKS5lYWNoKCBmdW5jdGlvbihlbGVtZW50LCBpbmRleCkgewogICAgICBuZXcgZWZmZWN0KGVsZW1lbnQsIE9iamVjdC5leHRlbmQob3B0aW9ucywgeyBkZWxheTogaW5kZXggKiBvcHRpb25zLnNwZWVkICsgbWFzdGVyRGVsYXkgfSkpOwogICAgfSk7CiAgfSwKICBQQUlSUzogewogICAgJ3NsaWRlJzogIFsnU2xpZGVEb3duJywnU2xpZGVVcCddLAogICAgJ2JsaW5kJzogIFsnQmxpbmREb3duJywnQmxpbmRVcCddLAogICAgJ2FwcGVhcic6IFsnQXBwZWFyJywnRmFkZSddCiAgfSwKICB0b2dnbGU6IGZ1bmN0aW9uKGVsZW1lbnQsIGVmZmVjdCkgewogICAgZWxlbWVudCA9ICQoZWxlbWVudCk7CiAgICBlZmZlY3QgPSAoZWZmZWN0IHx8ICdhcHBlYXInKS50b0xvd2VyQ2FzZSgpOwogICAgdmFyIG9wdGlvbnMgPSBPYmplY3QuZXh0ZW5kKHsKICAgICAgcXVldWU6IHsgcG9zaXRpb246J2VuZCcsIHNjb3BlOihlbGVtZW50LmlkIHx8ICdnbG9iYWwnKSwgbGltaXQ6IDEgfQogICAgfSwgYXJndW1lbnRzWzJdIHx8IHsgfSk7CiAgICBFZmZlY3RbZWxlbWVudC52aXNpYmxlKCkgPyAKICAgICAgRWZmZWN0LlBBSVJTW2VmZmVjdF1bMV0gOiBFZmZlY3QuUEFJUlNbZWZmZWN0XVswXV0oZWxlbWVudCwgb3B0aW9ucyk7CiAgfQp9OwoKRWZmZWN0LkRlZmF1bHRPcHRpb25zLnRyYW5zaXRpb24gPSBFZmZlY3QuVHJhbnNpdGlvbnMuc2lub2lkYWw7CgovKiAtLS0tLS0tLS0tLS0tIGNvcmUgZWZmZWN0cyAtLS0tLS0tLS0tLS0tICovCgpFZmZlY3QuU2NvcGVkUXVldWUgPSBDbGFzcy5jcmVhdGUoRW51bWVyYWJsZSwgewogIGluaXRpYWxpemU6IGZ1bmN0aW9uKCkgewogICAgdGhpcy5lZmZlY3RzICA9IFtdOwogICAgdGhpcy5pbnRlcnZhbCA9IG51bGw7ICAgIAogIH0sCiAgX2VhY2g6IGZ1bmN0aW9uKGl0ZXJhdG9yKSB7CiAgICB0aGlzLmVmZmVjdHMuX2VhY2goaXRlcmF0b3IpOwogIH0sCiAgYWRkOiBmdW5jdGlvbihlZmZlY3QpIHsKICAgIHZhciB0aW1lc3RhbXAgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTsKICAgIAogICAgdmFyIHBvc2l0aW9uID0gT2JqZWN0LmlzU3RyaW5nKGVmZmVjdC5vcHRpb25zLnF1ZXVlKSA/IAogICAgICBlZmZlY3Qub3B0aW9ucy5xdWV1ZSA6IGVmZmVjdC5vcHRpb25zLnF1ZXVlLnBvc2l0aW9uOwogICAgCiAgICBzd2l0Y2gocG9zaXRpb24pIHsKICAgICAgY2FzZSAnZnJvbnQnOgogICAgICAgIC8vIG1vdmUgdW5zdGFydGVkIGVmZmVjdHMgYWZ0ZXIgdGhpcyBlZmZlY3QgIAogICAgICAgIHRoaXMuZWZmZWN0cy5maW5kQWxsKGZ1bmN0aW9uKGUpeyByZXR1cm4gZS5zdGF0ZT09J2lkbGUnIH0pLmVhY2goIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgZS5zdGFydE9uICArPSBlZmZlY3QuZmluaXNoT247CiAgICAgICAgICAgIGUuZmluaXNoT24gKz0gZWZmZWN0LmZpbmlzaE9uOwogICAgICAgICAgfSk7CiAgICAgICAgYnJlYWs7CiAgICAgIGNhc2UgJ3dpdGgtbGFzdCc6CiAgICAgICAgdGltZXN0YW1wID0gdGhpcy5lZmZlY3RzLnBsdWNrKCdzdGFydE9uJykubWF4KCkgfHwgdGltZXN0YW1wOwogICAgICAgIGJyZWFrOwogICAgICBjYXNlICdlbmQnOgogICAgICAgIC8vIHN0YXJ0IGVmZmVjdCBhZnRlciBsYXN0IHF1ZXVlZCBlZmZlY3QgaGFzIGZpbmlzaGVkCiAgICAgICAgdGltZXN0YW1wID0gdGhpcy5lZmZlY3RzLnBsdWNrKCdmaW5pc2hPbicpLm1heCgpIHx8IHRpbWVzdGFtcDsKICAgICAgICBicmVhazsKICAgIH0KICAgIAogICAgZWZmZWN0LnN0YXJ0T24gICs9IHRpbWVzdGFtcDsKICAgIGVmZmVjdC5maW5pc2hPbiArPSB0aW1lc3RhbXA7CgogICAgaWYgKCFlZmZlY3Qub3B0aW9ucy5xdWV1ZS5saW1pdCB8fCAodGhpcy5lZmZlY3RzLmxlbmd0aCA8IGVmZmVjdC5vcHRpb25zLnF1ZXVlLmxpbWl0KSkKICAgICAgdGhpcy5lZmZlY3RzLnB1c2goZWZmZWN0KTsKICAgIAogICAgaWYgKCF0aGlzLmludGVydmFsKQogICAgICB0aGlzLmludGVydmFsID0gc2V0SW50ZXJ2YWwodGhpcy5sb29wLmJpbmQodGhpcyksIDE1KTsKICB9LAogIHJlbW92ZTogZnVuY3Rpb24oZWZmZWN0KSB7CiAgICB0aGlzLmVmZmVjdHMgPSB0aGlzLmVmZmVjdHMucmVqZWN0KGZ1bmN0aW9uKGUpIHsgcmV0dXJuIGU9PWVmZmVjdCB9KTsKICAgIGlmICh0aGlzLmVmZmVjdHMubGVuZ3RoID09IDApIHsKICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLmludGVydmFsKTsKICAgICAgdGhpcy5pbnRlcnZhbCA9IG51bGw7CiAgICB9CiAgfSwKICBsb29wOiBmdW5jdGlvbigpIHsKICAgIHZhciB0aW1lUG9zID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7CiAgICBmb3IodmFyIGk9MCwgbGVuPXRoaXMuZWZmZWN0cy5sZW5ndGg7aTxsZW47aSsrKSAKICAgICAgdGhpcy5lZmZlY3RzW2ldICYmIHRoaXMuZWZmZWN0c1tpXS5sb29wKHRpbWVQb3MpOwogIH0KfSk7CgpFZmZlY3QuUXVldWVzID0gewogIGluc3RhbmNlczogJEgoKSwKICBnZXQ6IGZ1bmN0aW9uKHF1ZXVlTmFtZSkgewogICAgaWYgKCFPYmplY3QuaXNTdHJpbmcocXVldWVOYW1lKSkgcmV0dXJuIHF1ZXVlTmFtZTsKICAgIAogICAgcmV0dXJuIHRoaXMuaW5zdGFuY2VzLmdldChxdWV1ZU5hbWUpIHx8CiAgICAgIHRoaXMuaW5zdGFuY2VzLnNldChxdWV1ZU5hbWUsIG5ldyBFZmZlY3QuU2NvcGVkUXVldWUoKSk7CiAgfQp9OwpFZmZlY3QuUXVldWUgPSBFZmZlY3QuUXVldWVzLmdldCgnZ2xvYmFsJyk7CgpFZmZlY3QuQmFzZSA9IENsYXNzLmNyZWF0ZSh7CiAgcG9zaXRpb246IG51bGwsCiAgc3RhcnQ6IGZ1bmN0aW9uKG9wdGlvbnMpIHsKICAgIGZ1bmN0aW9uIGNvZGVGb3JFdmVudChvcHRpb25zLGV2ZW50TmFtZSl7CiAgICAgIHJldHVybiAoCiAgICAgICAgKG9wdGlvbnNbZXZlbnROYW1lKydJbnRlcm5hbCddID8gJ3RoaXMub3B0aW9ucy4nK2V2ZW50TmFtZSsnSW50ZXJuYWwodGhpcyk7JyA6ICcnKSArCiAgICAgICAgKG9wdGlvbnNbZXZlbnROYW1lXSA/ICd0aGlzLm9wdGlvbnMuJytldmVudE5hbWUrJyh0aGlzKTsnIDogJycpCiAgICAgICk7CiAgICB9CiAgICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLnRyYW5zaXRpb24gPT09IGZhbHNlKSBvcHRpb25zLnRyYW5zaXRpb24gPSBFZmZlY3QuVHJhbnNpdGlvbnMubGluZWFyOwogICAgdGhpcy5vcHRpb25zICAgICAgPSBPYmplY3QuZXh0ZW5kKE9iamVjdC5leHRlbmQoeyB9LEVmZmVjdC5EZWZhdWx0T3B0aW9ucyksIG9wdGlvbnMgfHwgeyB9KTsKICAgIHRoaXMuY3VycmVudEZyYW1lID0gMDsKICAgIHRoaXMuc3RhdGUgICAgICAgID0gJ2lkbGUnOwogICAgdGhpcy5zdGFydE9uICAgICAgPSB0aGlzLm9wdGlvbnMuZGVsYXkqMTAwMDsKICAgIHRoaXMuZmluaXNoT24gICAgID0gdGhpcy5zdGFydE9uKyh0aGlzLm9wdGlvbnMuZHVyYXRpb24qMTAwMCk7CiAgICB0aGlzLmZyb21Ub0RlbHRhICA9IHRoaXMub3B0aW9ucy50by10aGlzLm9wdGlvbnMuZnJvbTsKICAgIHRoaXMudG90YWxUaW1lICAgID0gdGhpcy5maW5pc2hPbi10aGlzLnN0YXJ0T247CiAgICB0aGlzLnRvdGFsRnJhbWVzICA9IHRoaXMub3B0aW9ucy5mcHMqdGhpcy5vcHRpb25zLmR1cmF0aW9uOwogICAgCiAgICBldmFsKCd0aGlzLnJlbmRlciA9IGZ1bmN0aW9uKHBvcyl7ICcrCiAgICAgICdpZiAodGhpcy5zdGF0ZT09ImlkbGUiKXt0aGlzLnN0YXRlPSJydW5uaW5nIjsnKwogICAgICBjb2RlRm9yRXZlbnQodGhpcy5vcHRpb25zLCdiZWZvcmVTZXR1cCcpKwogICAgICAodGhpcy5zZXR1cCA/ICd0aGlzLnNldHVwKCk7JzonJykrIAogICAgICBjb2RlRm9yRXZlbnQodGhpcy5vcHRpb25zLCdhZnRlclNldHVwJykrCiAgICAgICd9O2lmICh0aGlzLnN0YXRlPT0icnVubmluZyIpeycrCiAgICAgICdwb3M9dGhpcy5vcHRpb25zLnRyYW5zaXRpb24ocG9zKSonK3RoaXMuZnJvbVRvRGVsdGErJysnK3RoaXMub3B0aW9ucy5mcm9tKyc7JysKICAgICAgJ3RoaXMucG9zaXRpb249cG9zOycrCiAgICAgIGNvZGVGb3JFdmVudCh0aGlzLm9wdGlvbnMsJ2JlZm9yZVVwZGF0ZScpKwogICAgICAodGhpcy51cGRhdGUgPyAndGhpcy51cGRhdGUocG9zKTsnOicnKSsKICAgICAgY29kZUZvckV2ZW50KHRoaXMub3B0aW9ucywnYWZ0ZXJVcGRhdGUnKSsKICAgICAgJ319Jyk7CiAgICAKICAgIHRoaXMuZXZlbnQoJ2JlZm9yZVN0YXJ0Jyk7CiAgICBpZiAoIXRoaXMub3B0aW9ucy5zeW5jKQogICAgICBFZmZlY3QuUXVldWVzLmdldChPYmplY3QuaXNTdHJpbmcodGhpcy5vcHRpb25zLnF1ZXVlKSA/IAogICAgICAgICdnbG9iYWwnIDogdGhpcy5vcHRpb25zLnF1ZXVlLnNjb3BlKS5hZGQodGhpcyk7CiAgfSwKICBsb29wOiBmdW5jdGlvbih0aW1lUG9zKSB7CiAgICBpZiAodGltZVBvcyA+PSB0aGlzLnN0YXJ0T24pIHsKICAgICAgaWYgKHRpbWVQb3MgPj0gdGhpcy5maW5pc2hPbikgewogICAgICAgIHRoaXMucmVuZGVyKDEuMCk7CiAgICAgICAgdGhpcy5jYW5jZWwoKTsKICAgICAgICB0aGlzLmV2ZW50KCdiZWZvcmVGaW5pc2gnKTsKICAgICAgICBpZiAodGhpcy5maW5pc2gpIHRoaXMuZmluaXNoKCk7IAogICAgICAgIHRoaXMuZXZlbnQoJ2FmdGVyRmluaXNoJyk7CiAgICAgICAgcmV0dXJuOyAgCiAgICAgIH0KICAgICAgdmFyIHBvcyAgID0gKHRpbWVQb3MgLSB0aGlzLnN0YXJ0T24pIC8gdGhpcy50b3RhbFRpbWUsCiAgICAgICAgICBmcmFtZSA9IChwb3MgKiB0aGlzLnRvdGFsRnJhbWVzKS5yb3VuZCgpOwogICAgICBpZiAoZnJhbWUgPiB0aGlzLmN1cnJlbnRGcmFtZSkgewogICAgICAgIHRoaXMucmVuZGVyKHBvcyk7CiAgICAgICAgdGhpcy5jdXJyZW50RnJhbWUgPSBmcmFtZTsKICAgICAgfQogICAgfQogIH0sCiAgY2FuY2VsOiBmdW5jdGlvbigpIHsKICAgIGlmICghdGhpcy5vcHRpb25zLnN5bmMpCiAgICAgIEVmZmVjdC5RdWV1ZXMuZ2V0KE9iamVjdC5pc1N0cmluZyh0aGlzLm9wdGlvbnMucXVldWUpID8gCiAgICAgICAgJ2dsb2JhbCcgOiB0aGlzLm9wdGlvbnMucXVldWUuc2NvcGUpLnJlbW92ZSh0aGlzKTsKICAgIHRoaXMuc3RhdGUgPSAnZmluaXNoZWQnOwogIH0sCiAgZXZlbnQ6IGZ1bmN0aW9uKGV2ZW50TmFtZSkgewogICAgaWYgKHRoaXMub3B0aW9uc1tldmVudE5hbWUgKyAnSW50ZXJuYWwnXSkgdGhpcy5vcHRpb25zW2V2ZW50TmFtZSArICdJbnRlcm5hbCddKHRoaXMpOwogICAgaWYgKHRoaXMub3B0aW9uc1tldmVudE5hbWVdKSB0aGlzLm9wdGlvbnNbZXZlbnROYW1lXSh0aGlzKTsKICB9LAogIGluc3BlY3Q6IGZ1bmN0aW9uKCkgewogICAgdmFyIGRhdGEgPSAkSCgpOwogICAgZm9yKHByb3BlcnR5IGluIHRoaXMpCiAgICAgIGlmICghT2JqZWN0LmlzRnVuY3Rpb24odGhpc1twcm9wZXJ0eV0pKSBkYXRhLnNldChwcm9wZXJ0eSwgdGhpc1twcm9wZXJ0eV0pOwogICAgcmV0dXJuICcjPEVmZmVjdDonICsgZGF0YS5pbnNwZWN0KCkgKyAnLG9wdGlvbnM6JyArICRIKHRoaXMub3B0aW9ucykuaW5zcGVjdCgpICsgJz4nOwogIH0KfSk7CgpFZmZlY3QuUGFyYWxsZWwgPSBDbGFzcy5jcmVhdGUoRWZmZWN0LkJhc2UsIHsKICBpbml0aWFsaXplOiBmdW5jdGlvbihlZmZlY3RzKSB7CiAgICB0aGlzLmVmZmVjdHMgPSBlZmZlY3RzIHx8IFtdOwogICAgdGhpcy5zdGFydChhcmd1bWVudHNbMV0pOwogIH0sCiAgdXBkYXRlOiBmdW5jdGlvbihwb3NpdGlvbikgewogICAgdGhpcy5lZmZlY3RzLmludm9rZSgncmVuZGVyJywgcG9zaXRpb24pOwogIH0sCiAgZmluaXNoOiBmdW5jdGlvbihwb3NpdGlvbikgewogICAgdGhpcy5lZmZlY3RzLmVhY2goIGZ1bmN0aW9uKGVmZmVjdCkgewogICAgICBlZmZlY3QucmVuZGVyKDEuMCk7CiAgICAgIGVmZmVjdC5jYW5jZWwoKTsKICAgICAgZWZmZWN0LmV2ZW50KCdiZWZvcmVGaW5pc2gnKTsKICAgICAgaWYgKGVmZmVjdC5maW5pc2gpIGVmZmVjdC5maW5pc2gocG9zaXRpb24pOwogICAgICBlZmZlY3QuZXZlbnQoJ2FmdGVyRmluaXNoJyk7CiAgICB9KTsKICB9Cn0pOwoKRWZmZWN0LlR3ZWVuID0gQ2xhc3MuY3JlYXRlKEVmZmVjdC5CYXNlLCB7CiAgaW5pdGlhbGl6ZTogZnVuY3Rpb24ob2JqZWN0LCBmcm9tLCB0bykgewogICAgb2JqZWN0ID0gT2JqZWN0LmlzU3RyaW5nKG9iamVjdCkgPyAkKG9iamVjdCkgOiBvYmplY3Q7CiAgICB2YXIgYXJncyA9ICRBKGFyZ3VtZW50cyksIG1ldGhvZCA9IGFyZ3MubGFzdCgpLCAKICAgICAgb3B0aW9ucyA9IGFyZ3MubGVuZ3RoID09IDUgPyBhcmdzWzNdIDogbnVsbDsKICAgIHRoaXMubWV0aG9kID0gT2JqZWN0LmlzRnVuY3Rpb24obWV0aG9kKSA/IG1ldGhvZC5iaW5kKG9iamVjdCkgOgogICAgICBPYmplY3QuaXNGdW5jdGlvbihvYmplY3RbbWV0aG9kXSkgPyBvYmplY3RbbWV0aG9kXS5iaW5kKG9iamVjdCkgOiAKICAgICAgZnVuY3Rpb24odmFsdWUpIHsgb2JqZWN0W21ldGhvZF0gPSB2YWx1ZSB9OwogICAgdGhpcy5zdGFydChPYmplY3QuZXh0ZW5kKHsgZnJvbTogZnJvbSwgdG86IHRvIH0sIG9wdGlvbnMgfHwgeyB9KSk7CiAgfSwKICB1cGRhdGU6IGZ1bmN0aW9uKHBvc2l0aW9uKSB7CiAgICB0aGlzLm1ldGhvZChwb3NpdGlvbik7CiAgfQp9KTsKCkVmZmVjdC5FdmVudCA9IENsYXNzLmNyZWF0ZShFZmZlY3QuQmFzZSwgewogIGluaXRpYWxpemU6IGZ1bmN0aW9uKCkgewogICAgdGhpcy5zdGFydChPYmplY3QuZXh0ZW5kKHsgZHVyYXRpb246IDAgfSwgYXJndW1lbnRzWzBdIHx8IHsgfSkpOwogIH0sCiAgdXBkYXRlOiBQcm90b3R5cGUuZW1wdHlGdW5jdGlvbgp9KTsKCkVmZmVjdC5PcGFjaXR5ID0gQ2xhc3MuY3JlYXRlKEVmZmVjdC5CYXNlLCB7CiAgaW5pdGlhbGl6ZTogZnVuY3Rpb24oZWxlbWVudCkgewogICAgdGhpcy5lbGVtZW50ID0gJChlbGVtZW50KTsKICAgIGlmICghdGhpcy5lbGVtZW50KSB0aHJvdyhFZmZlY3QuX2VsZW1lbnREb2VzTm90RXhpc3RFcnJvcik7CiAgICAvLyBtYWtlIHRoaXMgd29yayBvbiBJRSBvbiBlbGVtZW50cyB3aXRob3V0ICdsYXlvdXQnCiAgICBpZiAoUHJvdG90eXBlLkJyb3dzZXIuSUUgJiYgKCF0aGlzLmVsZW1lbnQuY3VycmVudFN0eWxlLmhhc0xheW91dCkpCiAgICAgIHRoaXMuZWxlbWVudC5zZXRTdHlsZSh7em9vbTogMX0pOwogICAgdmFyIG9wdGlvbnMgPSBPYmplY3QuZXh0ZW5kKHsKICAgICAgZnJvbTogdGhpcy5lbGVtZW50LmdldE9wYWNpdHkoKSB8fCAwLjAsCiAgICAgIHRvOiAgIDEuMAogICAgfSwgYXJndW1lbnRzWzFdIHx8IHsgfSk7CiAgICB0aGlzLnN0YXJ0KG9wdGlvbnMpOwogIH0sCiAgdXBkYXRlOiBmdW5jdGlvbihwb3NpdGlvbikgewogICAgdGhpcy5lbGVtZW50LnNldE9wYWNpdHkocG9zaXRpb24pOwogIH0KfSk7CgpFZmZlY3QuTW92ZSA9IENsYXNzLmNyZWF0ZShFZmZlY3QuQmFzZSwgewogIGluaXRpYWxpemU6IGZ1bmN0aW9uKGVsZW1lbnQpIHsKICAgIHRoaXMuZWxlbWVudCA9ICQoZWxlbWVudCk7CiAgICBpZiAoIXRoaXMuZWxlbWVudCkgdGhyb3coRWZmZWN0Ll9lbGVtZW50RG9lc05vdEV4aXN0RXJyb3IpOwogICAgdmFyIG9wdGlvbnMgPSBPYmplY3QuZXh0ZW5kKHsKICAgICAgeDogICAgMCwKICAgICAgeTogICAgMCwKICAgICAgbW9kZTogJ3JlbGF0aXZlJwogICAgfSwgYXJndW1lbnRzWzFdIHx8IHsgfSk7CiAgICB0aGlzLnN0YXJ0KG9wdGlvbnMpOwogIH0sCiAgc2V0dXA6IGZ1bmN0aW9uKCkgewogICAgdGhpcy5lbGVtZW50Lm1ha2VQb3NpdGlvbmVkKCk7CiAgICB0aGlzLm9yaWdpbmFsTGVmdCA9IHBhcnNlRmxvYXQodGhpcy5lbGVtZW50LmdldFN0eWxlKCdsZWZ0JykgfHwgJzAnKTsKICAgIHRoaXMub3JpZ2luYWxUb3AgID0gcGFyc2VGbG9hdCh0aGlzLmVsZW1lbnQuZ2V0U3R5bGUoJ3RvcCcpICB8fCAnMCcpOwogICAgaWYgKHRoaXMub3B0aW9ucy5tb2RlID09ICdhYnNvbHV0ZScpIHsKICAgICAgdGhpcy5vcHRpb25zLnggPSB0aGlzLm9wdGlvbnMueCAtIHRoaXMub3JpZ2luYWxMZWZ0OwogICAgICB0aGlzLm9wdGlvbnMueSA9IHRoaXMub3B0aW9ucy55IC0gdGhpcy5vcmlnaW5hbFRvcDsKICAgIH0KICB9LAogIHVwZGF0ZTogZnVuY3Rpb24ocG9zaXRpb24pIHsKICAgIHRoaXMuZWxlbWVudC5zZXRTdHlsZSh7CiAgICAgIGxlZnQ6ICh0aGlzLm9wdGlvbnMueCAgKiBwb3NpdGlvbiArIHRoaXMub3JpZ2luYWxMZWZ0KS5yb3VuZCgpICsgJ3B4JywKICAgICAgdG9wOiAgKHRoaXMub3B0aW9ucy55ICAqIHBvc2l0aW9uICsgdGhpcy5vcmlnaW5hbFRvcCkucm91bmQoKSAgKyAncHgnCiAgICB9KTsKICB9Cn0pOwoKLy8gZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5CkVmZmVjdC5Nb3ZlQnkgPSBmdW5jdGlvbihlbGVtZW50LCB0b1RvcCwgdG9MZWZ0KSB7CiAgcmV0dXJuIG5ldyBFZmZlY3QuTW92ZShlbGVtZW50LCAKICAgIE9iamVjdC5leHRlbmQoeyB4OiB0b0xlZnQsIHk6IHRvVG9wIH0sIGFyZ3VtZW50c1szXSB8fCB7IH0pKTsKfTsKCkVmZmVjdC5TY2FsZSA9IENsYXNzLmNyZWF0ZShFZmZlY3QuQmFzZSwgewogIGluaXRpYWxpemU6IGZ1bmN0aW9uKGVsZW1lbnQsIHBlcmNlbnQpIHsKICAgIHRoaXMuZWxlbWVudCA9ICQoZWxlbWVudCk7CiAgICBpZiAoIXRoaXMuZWxlbWVudCkgdGhyb3coRWZmZWN0Ll9lbGVtZW50RG9lc05vdEV4aXN0RXJyb3IpOwogICAgdmFyIG9wdGlvbnMgPSBPYmplY3QuZXh0ZW5kKHsKICAgICAgc2NhbGVYOiB0cnVlLAogICAgICBzY2FsZVk6IHRydWUsCiAgICAgIHNjYWxlQ29udGVudDogdHJ1ZSwKICAgICAgc2NhbGVGcm9tQ2VudGVyOiBmYWxzZSwKICAgICAgc2NhbGVNb2RlOiAnYm94JywgICAgICAgIC8vICdib3gnIG9yICdjb250ZW50cycgb3IgeyB9IHdpdGggcHJvdmlkZWQgdmFsdWVzCiAgICAgIHNjYWxlRnJvbTogMTAwLjAsCiAgICAgIHNjYWxlVG86ICAgcGVyY2VudAogICAgfSwgYXJndW1lbnRzWzJdIHx8IHsgfSk7CiAgICB0aGlzLnN0YXJ0KG9wdGlvbnMpOwogIH0sCiAgc2V0dXA6IGZ1bmN0aW9uKCkgewogICAgdGhpcy5yZXN0b3JlQWZ0ZXJGaW5pc2ggPSB0aGlzLm9wdGlvbnMucmVzdG9yZUFmdGVyRmluaXNoIHx8IGZhbHNlOwogICAgdGhpcy5lbGVtZW50UG9zaXRpb25pbmcgPSB0aGlzLmVsZW1lbnQuZ2V0U3R5bGUoJ3Bvc2l0aW9uJyk7CiAgICAKICAgIHRoaXMub3JpZ2luYWxTdHlsZSA9IHsgfTsKICAgIFsndG9wJywnbGVmdCcsJ3dpZHRoJywnaGVpZ2h0JywnZm9udFNpemUnXS5lYWNoKCBmdW5jdGlvbihrKSB7CiAgICAgIHRoaXMub3JpZ2luYWxTdHlsZVtrXSA9IHRoaXMuZWxlbWVudC5zdHlsZVtrXTsKICAgIH0uYmluZCh0aGlzKSk7CiAgICAgIAogICAgdGhpcy5vcmlnaW5hbFRvcCAgPSB0aGlzLmVsZW1lbnQub2Zmc2V0VG9wOwogICAgdGhpcy5vcmlnaW5hbExlZnQgPSB0aGlzLmVsZW1lbnQub2Zmc2V0TGVmdDsKICAgIAogICAgdmFyIGZvbnRTaXplID0gdGhpcy5lbGVtZW50LmdldFN0eWxlKCdmb250LXNpemUnKSB8fCAnMTAwJSc7CiAgICBbJ2VtJywncHgnLCclJywncHQnXS5lYWNoKCBmdW5jdGlvbihmb250U2l6ZVR5cGUpIHsKICAgICAgaWYgKGZvbnRTaXplLmluZGV4T2YoZm9udFNpemVUeXBlKT4wKSB7CiAgICAgICAgdGhpcy5mb250U2l6ZSAgICAgPSBwYXJzZUZsb2F0KGZvbnRTaXplKTsKICAgICAgICB0aGlzLmZvbnRTaXplVHlwZSA9IGZvbnRTaXplVHlwZTsKICAgICAgfQogICAgfS5iaW5kKHRoaXMpKTsKICAgIAogICAgdGhpcy5mYWN0b3IgPSAodGhpcy5vcHRpb25zLnNjYWxlVG8gLSB0aGlzLm9wdGlvbnMuc2NhbGVGcm9tKS8xMDA7CiAgICAKICAgIHRoaXMuZGltcyA9IG51bGw7CiAgICBpZiAodGhpcy5vcHRpb25zLnNjYWxlTW9kZT09J2JveCcpCiAgICAgIHRoaXMuZGltcyA9IFt0aGlzLmVsZW1lbnQub2Zmc2V0SGVpZ2h0LCB0aGlzLmVsZW1lbnQub2Zmc2V0V2lkdGhdOwogICAgaWYgKC9eY29udGVudC8udGVzdCh0aGlzLm9wdGlvbnMuc2NhbGVNb2RlKSkKICAgICAgdGhpcy5kaW1zID0gW3RoaXMuZWxlbWVudC5zY3JvbGxIZWlnaHQsIHRoaXMuZWxlbWVudC5zY3JvbGxXaWR0aF07CiAgICBpZiAoIXRoaXMuZGltcykKICAgICAgdGhpcy5kaW1zID0gW3RoaXMub3B0aW9ucy5zY2FsZU1vZGUub3JpZ2luYWxIZWlnaHQsCiAgICAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMuc2NhbGVNb2RlLm9yaWdpbmFsV2lkdGhdOwogIH0sCiAgdXBkYXRlOiBmdW5jdGlvbihwb3NpdGlvbikgewogICAgdmFyIGN1cnJlbnRTY2FsZSA9ICh0aGlzLm9wdGlvbnMuc2NhbGVGcm9tLzEwMC4wKSArICh0aGlzLmZhY3RvciAqIHBvc2l0aW9uKTsKICAgIGlmICh0aGlzLm9wdGlvbnMuc2NhbGVDb250ZW50ICYmIHRoaXMuZm9udFNpemUpCiAgICAgIHRoaXMuZWxlbWVudC5zZXRTdHlsZSh7Zm9udFNpemU6IHRoaXMuZm9udFNpemUgKiBjdXJyZW50U2NhbGUgKyB0aGlzLmZvbnRTaXplVHlwZSB9KTsKICAgIHRoaXMuc2V0RGltZW5zaW9ucyh0aGlzLmRpbXNbMF0gKiBjdXJyZW50U2NhbGUsIHRoaXMuZGltc1sxXSAqIGN1cnJlbnRTY2FsZSk7CiAgfSwKICBmaW5pc2g6IGZ1bmN0aW9uKHBvc2l0aW9uKSB7CiAgICBpZiAodGhpcy5yZXN0b3JlQWZ0ZXJGaW5pc2gpIHRoaXMuZWxlbWVudC5zZXRTdHlsZSh0aGlzLm9yaWdpbmFsU3R5bGUpOwogIH0sCiAgc2V0RGltZW5zaW9uczogZnVuY3Rpb24oaGVpZ2h0LCB3aWR0aCkgewogICAgdmFyIGQgPSB7IH07CiAgICBpZiAodGhpcy5vcHRpb25zLnNjYWxlWCkgZC53aWR0aCA9IHdpZHRoLnJvdW5kKCkgKyAncHgnOwogICAgaWYgKHRoaXMub3B0aW9ucy5zY2FsZVkpIGQuaGVpZ2h0ID0gaGVpZ2h0LnJvdW5kKCkgKyAncHgnOwogICAgaWYgKHRoaXMub3B0aW9ucy5zY2FsZUZyb21DZW50ZXIpIHsKICAgICAgdmFyIHRvcGQgID0gKGhlaWdodCAtIHRoaXMuZGltc1swXSkvMjsKICAgICAgdmFyIGxlZnRkID0gKHdpZHRoICAtIHRoaXMuZGltc1sxXSkvMjsKICAgICAgaWYgKHRoaXMuZWxlbWVudFBvc2l0aW9uaW5nID09ICdhYnNvbHV0ZScpIHsKICAgICAgICBpZiAodGhpcy5vcHRpb25zLnNjYWxlWSkgZC50b3AgPSB0aGlzLm9yaWdpbmFsVG9wLXRvcGQgKyAncHgnOwogICAgICAgIGlmICh0aGlzLm9wdGlvbnMuc2NhbGVYKSBkLmxlZnQgPSB0aGlzLm9yaWdpbmFsTGVmdC1sZWZ0ZCArICdweCc7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5zY2FsZVkpIGQudG9wID0gLXRvcGQgKyAncHgnOwogICAgICAgIGlmICh0aGlzLm9wdGlvbnMuc2NhbGVYKSBkLmxlZnQgPSAtbGVmdGQgKyAncHgnOwogICAgICB9CiAgICB9CiAgICB0aGlzLmVsZW1lbnQuc2V0U3R5bGUoZCk7CiAgfQp9KTsKCkVmZmVjdC5IaWdobGlnaHQgPSBDbGFzcy5jcmVhdGUoRWZmZWN0LkJhc2UsIHsKICBpbml0aWFsaXplOiBmdW5jdGlvbihlbGVtZW50KSB7CiAgICB0aGlzLmVsZW1lbnQgPSAkKGVsZW1lbnQpOwogICAgaWYgKCF0aGlzLmVsZW1lbnQpIHRocm93KEVmZmVjdC5fZWxlbWVudERvZXNOb3RFeGlzdEVycm9yKTsKICAgIHZhciBvcHRpb25zID0gT2JqZWN0LmV4dGVuZCh7IHN0YXJ0Y29sb3I6ICcjZmZmZjk5JyB9LCBhcmd1bWVudHNbMV0gfHwgeyB9KTsKICAgIHRoaXMuc3RhcnQob3B0aW9ucyk7CiAgfSwKICBzZXR1cDogZnVuY3Rpb24oKSB7CiAgICAvLyBQcmV2ZW50IGV4ZWN1dGluZyBvbiBlbGVtZW50cyBub3QgaW4gdGhlIGxheW91dCBmbG93CiAgICBpZiAodGhpcy5lbGVtZW50LmdldFN0eWxlKCdkaXNwbGF5Jyk9PSdub25lJykgeyB0aGlzLmNhbmNlbCgpOyByZXR1cm47IH0KICAgIC8vIERpc2FibGUgYmFja2dyb3VuZCBpbWFnZSBkdXJpbmcgdGhlIGVmZmVjdAogICAgdGhpcy5vbGRTdHlsZSA9IHsgfTsKICAgIGlmICghdGhpcy5vcHRpb25zLmtlZXBCYWNrZ3JvdW5kSW1hZ2UpIHsKICAgICAgdGhpcy5vbGRTdHlsZS5iYWNrZ3JvdW5kSW1hZ2UgPSB0aGlzLmVsZW1lbnQuZ2V0U3R5bGUoJ2JhY2tncm91bmQtaW1hZ2UnKTsKICAgICAgdGhpcy5lbGVtZW50LnNldFN0eWxlKHtiYWNrZ3JvdW5kSW1hZ2U6ICdub25lJ30pOwogICAgfQogICAgaWYgKCF0aGlzLm9wdGlvbnMuZW5kY29sb3IpCiAgICAgIHRoaXMub3B0aW9ucy5lbmRjb2xvciA9IHRoaXMuZWxlbWVudC5nZXRTdHlsZSgnYmFja2dyb3VuZC1jb2xvcicpLnBhcnNlQ29sb3IoJyNmZmZmZmYnKTsKICAgIGlmICghdGhpcy5vcHRpb25zLnJlc3RvcmVjb2xvcikKICAgICAgdGhpcy5vcHRpb25zLnJlc3RvcmVjb2xvciA9IHRoaXMuZWxlbWVudC5nZXRTdHlsZSgnYmFja2dyb3VuZC1jb2xvcicpOwogICAgLy8gaW5pdCBjb2xvciBjYWxjdWxhdGlvbnMKICAgIHRoaXMuX2Jhc2UgID0gJFIoMCwyKS5tYXAoZnVuY3Rpb24oaSl7IHJldHVybiBwYXJzZUludCh0aGlzLm9wdGlvbnMuc3RhcnRjb2xvci5zbGljZShpKjIrMSxpKjIrMyksMTYpIH0uYmluZCh0aGlzKSk7CiAgICB0aGlzLl9kZWx0YSA9ICRSKDAsMikubWFwKGZ1bmN0aW9uKGkpeyByZXR1cm4gcGFyc2VJbnQodGhpcy5vcHRpb25zLmVuZGNvbG9yLnNsaWNlKGkqMisxLGkqMiszKSwxNiktdGhpcy5fYmFzZVtpXSB9LmJpbmQodGhpcykpOwogIH0sCiAgdXBkYXRlOiBmdW5jdGlvbihwb3NpdGlvbikgewogICAgdGhpcy5lbGVtZW50LnNldFN0eWxlKHtiYWNrZ3JvdW5kQ29sb3I6ICRSKDAsMikuaW5qZWN0KCcjJyxmdW5jdGlvbihtLHYsaSl7CiAgICAgIHJldHVybiBtKygodGhpcy5fYmFzZVtpXSsodGhpcy5fZGVsdGFbaV0qcG9zaXRpb24pKS5yb3VuZCgpLnRvQ29sb3JQYXJ0KCkpOyB9LmJpbmQodGhpcykpIH0pOwogIH0sCiAgZmluaXNoOiBmdW5jdGlvbigpIHsKICAgIHRoaXMuZWxlbWVudC5zZXRTdHlsZShPYmplY3QuZXh0ZW5kKHRoaXMub2xkU3R5bGUsIHsKICAgICAgYmFja2dyb3VuZENvbG9yOiB0aGlzLm9wdGlvbnMucmVzdG9yZWNvbG9yCiAgICB9KSk7CiAgfQp9KTsKCkVmZmVjdC5TY3JvbGxUbyA9IGZ1bmN0aW9uKGVsZW1lbnQpIHsKICB2YXIgb3B0aW9ucyA9IGFyZ3VtZW50c1sxXSB8fCB7IH0sCiAgICBzY3JvbGxPZmZzZXRzID0gZG9jdW1lbnQudmlld3BvcnQuZ2V0U2Nyb2xsT2Zmc2V0cygpLAogICAgZWxlbWVudE9mZnNldHMgPSAkKGVsZW1lbnQpLmN1bXVsYXRpdmVPZmZzZXQoKSwKICAgIG1heCA9ICh3aW5kb3cuaGVpZ2h0IHx8IGRvY3VtZW50LmJvZHkuc2Nyb2xsSGVpZ2h0KSAtIGRvY3VtZW50LnZpZXdwb3J0LmdldEhlaWdodCgpOyAgCgogIGlmIChvcHRpb25zLm9mZnNldCkgZWxlbWVudE9mZnNldHNbMV0gKz0gb3B0aW9ucy5vZmZzZXQ7CgogIHJldHVybiBuZXcgRWZmZWN0LlR3ZWVuKG51bGwsCiAgICBzY3JvbGxPZmZzZXRzLnRvcCwKICAgIGVsZW1lbnRPZmZzZXRzWzFdID4gbWF4ID8gbWF4IDogZWxlbWVudE9mZnNldHNbMV0sCiAgICBvcHRpb25zLAogICAgZnVuY3Rpb24ocCl7IHNjcm9sbFRvKHNjcm9sbE9mZnNldHMubGVmdCwgcC5yb3VuZCgpKSB9CiAgKTsKfTsKCi8qIC0tLS0tLS0tLS0tLS0gY29tYmluYXRpb24gZWZmZWN0cyAtLS0tLS0tLS0tLS0tICovCgpFZmZlY3QuRmFkZSA9IGZ1bmN0aW9uKGVsZW1lbnQpIHsKICBlbGVtZW50ID0gJChlbGVtZW50KTsKICB2YXIgb2xkT3BhY2l0eSA9IGVsZW1lbnQuZ2V0SW5saW5lT3BhY2l0eSgpOwogIHZhciBvcHRpb25zID0gT2JqZWN0LmV4dGVuZCh7CiAgICBmcm9tOiBlbGVtZW50LmdldE9wYWNpdHkoKSB8fCAxLjAsCiAgICB0bzogICAwLjAsCiAgICBhZnRlckZpbmlzaEludGVybmFsOiBmdW5jdGlvbihlZmZlY3QpIHsgCiAgICAgIGlmIChlZmZlY3Qub3B0aW9ucy50byE9MCkgcmV0dXJuOwogICAgICBlZmZlY3QuZWxlbWVudC5oaWRlKCkuc2V0U3R5bGUoe29wYWNpdHk6IG9sZE9wYWNpdHl9KTsgCiAgICB9CiAgfSwgYXJndW1lbnRzWzFdIHx8IHsgfSk7CiAgcmV0dXJuIG5ldyBFZmZlY3QuT3BhY2l0eShlbGVtZW50LG9wdGlvbnMpOwp9OwoKRWZmZWN0LkFwcGVhciA9IGZ1bmN0aW9uKGVsZW1lbnQpIHsKICBlbGVtZW50ID0gJChlbGVtZW50KTsKICB2YXIgb3B0aW9ucyA9IE9iamVjdC5leHRlbmQoewogIGZyb206IChlbGVtZW50LmdldFN0eWxlKCdkaXNwbGF5JykgPT0gJ25vbmUnID8gMC4wIDogZWxlbWVudC5nZXRPcGFjaXR5KCkgfHwgMC4wKSwKICB0bzogICAxLjAsCiAgLy8gZm9yY2UgU2FmYXJpIHRvIHJlbmRlciBmbG9hdGVkIGVsZW1lbnRzIHByb3Blcmx5CiAgYWZ0ZXJGaW5pc2hJbnRlcm5hbDogZnVuY3Rpb24oZWZmZWN0KSB7CiAgICBlZmZlY3QuZWxlbWVudC5mb3JjZVJlcmVuZGVyaW5nKCk7CiAgfSwKICBiZWZvcmVTZXR1cDogZnVuY3Rpb24oZWZmZWN0KSB7CiAgICBlZmZlY3QuZWxlbWVudC5zZXRPcGFjaXR5KGVmZmVjdC5vcHRpb25zLmZyb20pLnNob3coKTsgCiAgfX0sIGFyZ3VtZW50c1sxXSB8fCB7IH0pOwogIHJldHVybiBuZXcgRWZmZWN0Lk9wYWNpdHkoZWxlbWVudCxvcHRpb25zKTsKfTsKCkVmZmVjdC5QdWZmID0gZnVuY3Rpb24oZWxlbWVudCkgewogIGVsZW1lbnQgPSAkKGVsZW1lbnQpOwogIHZhciBvbGRTdHlsZSA9IHsgCiAgICBvcGFjaXR5OiBlbGVtZW50LmdldElubGluZU9wYWNpdHkoKSwgCiAgICBwb3NpdGlvbjogZWxlbWVudC5nZXRTdHlsZSgncG9zaXRpb24nKSwKICAgIHRvcDogIGVsZW1lbnQuc3R5bGUudG9wLAogICAgbGVmdDogZWxlbWVudC5zdHlsZS5sZWZ0LAogICAgd2lkdGg6IGVsZW1lbnQuc3R5bGUud2lkdGgsCiAgICBoZWlnaHQ6IGVsZW1lbnQuc3R5bGUuaGVpZ2h0CiAgfTsKICByZXR1cm4gbmV3IEVmZmVjdC5QYXJhbGxlbCgKICAgWyBuZXcgRWZmZWN0LlNjYWxlKGVsZW1lbnQsIDIwMCwgCiAgICAgIHsgc3luYzogdHJ1ZSwgc2NhbGVGcm9tQ2VudGVyOiB0cnVlLCBzY2FsZUNvbnRlbnQ6IHRydWUsIHJlc3RvcmVBZnRlckZpbmlzaDogdHJ1ZSB9KSwgCiAgICAgbmV3IEVmZmVjdC5PcGFjaXR5KGVsZW1lbnQsIHsgc3luYzogdHJ1ZSwgdG86IDAuMCB9ICkgXSwgCiAgICAgT2JqZWN0LmV4dGVuZCh7IGR1cmF0aW9uOiAxLjAsIAogICAgICBiZWZvcmVTZXR1cEludGVybmFsOiBmdW5jdGlvbihlZmZlY3QpIHsKICAgICAgICBQb3NpdGlvbi5hYnNvbHV0aXplKGVmZmVjdC5lZmZlY3RzWzBdLmVsZW1lbnQpCiAgICAgIH0sCiAgICAgIGFmdGVyRmluaXNoSW50ZXJuYWw6IGZ1bmN0aW9uKGVmZmVjdCkgewogICAgICAgICBlZmZlY3QuZWZmZWN0c1swXS5lbGVtZW50LmhpZGUoKS5zZXRTdHlsZShvbGRTdHlsZSk7IH0KICAgICB9LCBhcmd1bWVudHNbMV0gfHwgeyB9KQogICApOwp9OwoKRWZmZWN0LkJsaW5kVXAgPSBmdW5jdGlvbihlbGVtZW50KSB7CiAgZWxlbWVudCA9ICQoZWxlbWVudCk7CiAgZWxlbWVudC5tYWtlQ2xpcHBpbmcoKTsKICByZXR1cm4gbmV3IEVmZmVjdC5TY2FsZShlbGVtZW50LCAwLAogICAgT2JqZWN0LmV4dGVuZCh7IHNjYWxlQ29udGVudDogZmFsc2UsIAogICAgICBzY2FsZVg6IGZhbHNlLCAKICAgICAgcmVzdG9yZUFmdGVyRmluaXNoOiB0cnVlLAogICAgICBhZnRlckZpbmlzaEludGVybmFsOiBmdW5jdGlvbihlZmZlY3QpIHsKICAgICAgICBlZmZlY3QuZWxlbWVudC5oaWRlKCkudW5kb0NsaXBwaW5nKCk7CiAgICAgIH0gCiAgICB9LCBhcmd1bWVudHNbMV0gfHwgeyB9KQogICk7Cn07CgpFZmZlY3QuQmxpbmREb3duID0gZnVuY3Rpb24oZWxlbWVudCkgewogIGVsZW1lbnQgPSAkKGVsZW1lbnQpOwogIHZhciBlbGVtZW50RGltZW5zaW9ucyA9IGVsZW1lbnQuZ2V0RGltZW5zaW9ucygpOwogIHJldHVybiBuZXcgRWZmZWN0LlNjYWxlKGVsZW1lbnQsIDEwMCwgT2JqZWN0LmV4dGVuZCh7IAogICAgc2NhbGVDb250ZW50OiBmYWxzZSwgCiAgICBzY2FsZVg6IGZhbHNlLAogICAgc2NhbGVGcm9tOiAwLAogICAgc2NhbGVNb2RlOiB7b3JpZ2luYWxIZWlnaHQ6IGVsZW1lbnREaW1lbnNpb25zLmhlaWdodCwgb3JpZ2luYWxXaWR0aDogZWxlbWVudERpbWVuc2lvbnMud2lkdGh9LAogICAgcmVzdG9yZUFmdGVyRmluaXNoOiB0cnVlLAogICAgYWZ0ZXJTZXR1cDogZnVuY3Rpb24oZWZmZWN0KSB7CiAgICAgIGVmZmVjdC5lbGVtZW50Lm1ha2VDbGlwcGluZygpLnNldFN0eWxlKHtoZWlnaHQ6ICcwcHgnfSkuc2hvdygpOyAKICAgIH0sICAKICAgIGFmdGVyRmluaXNoSW50ZXJuYWw6IGZ1bmN0aW9uKGVmZmVjdCkgewogICAgICBlZmZlY3QuZWxlbWVudC51bmRvQ2xpcHBpbmcoKTsKICAgIH0KICB9LCBhcmd1bWVudHNbMV0gfHwgeyB9KSk7Cn07CgpFZmZlY3QuU3dpdGNoT2ZmID0gZnVuY3Rpb24oZWxlbWVudCkgewogIGVsZW1lbnQgPSAkKGVsZW1lbnQpOwogIHZhciBvbGRPcGFjaXR5ID0gZWxlbWVudC5nZXRJbmxpbmVPcGFjaXR5KCk7CiAgcmV0dXJuIG5ldyBFZmZlY3QuQXBwZWFyKGVsZW1lbnQsIE9iamVjdC5leHRlbmQoewogICAgZHVyYXRpb246IDAuNCwKICAgIGZyb206IDAsCiAgICB0cmFuc2l0aW9uOiBFZmZlY3QuVHJhbnNpdGlvbnMuZmxpY2tlciwKICAgIGFmdGVyRmluaXNoSW50ZXJuYWw6IGZ1bmN0aW9uKGVmZmVjdCkgewogICAgICBuZXcgRWZmZWN0LlNjYWxlKGVmZmVjdC5lbGVtZW50LCAxLCB7IAogICAgICAgIGR1cmF0aW9uOiAwLjMsIHNjYWxlRnJvbUNlbnRlcjogdHJ1ZSwKICAgICAgICBzY2FsZVg6IGZhbHNlLCBzY2FsZUNvbnRlbnQ6IGZhbHNlLCByZXN0b3JlQWZ0ZXJGaW5pc2g6IHRydWUsCiAgICAgICAgYmVmb3JlU2V0dXA6IGZ1bmN0aW9uKGVmZmVjdCkgeyAKICAgICAgICAgIGVmZmVjdC5lbGVtZW50Lm1ha2VQb3NpdGlvbmVkKCkubWFrZUNsaXBwaW5nKCk7CiAgICAgICAgfSwKICAgICAgICBhZnRlckZpbmlzaEludGVybmFsOiBmdW5jdGlvbihlZmZlY3QpIHsKICAgICAgICAgIGVmZmVjdC5lbGVtZW50LmhpZGUoKS51bmRvQ2xpcHBpbmcoKS51bmRvUG9zaXRpb25lZCgpLnNldFN0eWxlKHtvcGFjaXR5OiBvbGRPcGFjaXR5fSk7CiAgICAgICAgfQogICAgICB9KQogICAgfQogIH0sIGFyZ3VtZW50c1sxXSB8fCB7IH0pKTsKfTsKCkVmZmVjdC5Ecm9wT3V0ID0gZnVuY3Rpb24oZWxlbWVudCkgewogIGVsZW1lbnQgPSAkKGVsZW1lbnQpOwogIHZhciBvbGRTdHlsZSA9IHsKICAgIHRvcDogZWxlbWVudC5nZXRTdHlsZSgndG9wJyksCiAgICBsZWZ0OiBlbGVtZW50LmdldFN0eWxlKCdsZWZ0JyksCiAgICBvcGFjaXR5OiBlbGVtZW50LmdldElubGluZU9wYWNpdHkoKSB9OwogIHJldHVybiBuZXcgRWZmZWN0LlBhcmFsbGVsKAogICAgWyBuZXcgRWZmZWN0Lk1vdmUoZWxlbWVudCwge3g6IDAsIHk6IDEwMCwgc3luYzogdHJ1ZSB9KSwgCiAgICAgIG5ldyBFZmZlY3QuT3BhY2l0eShlbGVtZW50LCB7IHN5bmM6IHRydWUsIHRvOiAwLjAgfSkgXSwKICAgIE9iamVjdC5leHRlbmQoCiAgICAgIHsgZHVyYXRpb246IDAuNSwKICAgICAgICBiZWZvcmVTZXR1cDogZnVuY3Rpb24oZWZmZWN0KSB7CiAgICAgICAgICBlZmZlY3QuZWZmZWN0c1swXS5lbGVtZW50Lm1ha2VQb3NpdGlvbmVkKCk7IAogICAgICAgIH0sCiAgICAgICAgYWZ0ZXJGaW5pc2hJbnRlcm5hbDogZnVuY3Rpb24oZWZmZWN0KSB7CiAgICAgICAgICBlZmZlY3QuZWZmZWN0c1swXS5lbGVtZW50LmhpZGUoKS51bmRvUG9zaXRpb25lZCgpLnNldFN0eWxlKG9sZFN0eWxlKTsKICAgICAgICB9IAogICAgICB9LCBhcmd1bWVudHNbMV0gfHwgeyB9KSk7Cn07CgpFZmZlY3QuU2hha2UgPSBmdW5jdGlvbihlbGVtZW50KSB7CiAgZWxlbWVudCA9ICQoZWxlbWVudCk7CiAgdmFyIG9wdGlvbnMgPSBPYmplY3QuZXh0ZW5kKHsKICAgIGRpc3RhbmNlOiAyMCwKICAgIGR1cmF0aW9uOiAwLjUKICB9LCBhcmd1bWVudHNbMV0gfHwge30pOwogIHZhciBkaXN0YW5jZSA9IHBhcnNlRmxvYXQob3B0aW9ucy5kaXN0YW5jZSk7CiAgdmFyIHNwbGl0ID0gcGFyc2VGbG9hdChvcHRpb25zLmR1cmF0aW9uKSAvIDEwLjA7CiAgdmFyIG9sZFN0eWxlID0gewogICAgdG9wOiBlbGVtZW50LmdldFN0eWxlKCd0b3AnKSwKICAgIGxlZnQ6IGVsZW1lbnQuZ2V0U3R5bGUoJ2xlZnQnKSB9OwogICAgcmV0dXJuIG5ldyBFZmZlY3QuTW92ZShlbGVtZW50LAogICAgICB7IHg6ICBkaXN0YW5jZSwgeTogMCwgZHVyYXRpb246IHNwbGl0LCBhZnRlckZpbmlzaEludGVybmFsOiBmdW5jdGlvbihlZmZlY3QpIHsKICAgIG5ldyBFZmZlY3QuTW92ZShlZmZlY3QuZWxlbWVudCwKICAgICAgeyB4OiAtZGlzdGFuY2UqMiwgeTogMCwgZHVyYXRpb246IHNwbGl0KjIsICBhZnRlckZpbmlzaEludGVybmFsOiBmdW5jdGlvbihlZmZlY3QpIHsKICAgIG5ldyBFZmZlY3QuTW92ZShlZmZlY3QuZWxlbWVudCwKICAgICAgeyB4OiAgZGlzdGFuY2UqMiwgeTogMCwgZHVyYXRpb246IHNwbGl0KjIsICBhZnRlckZpbmlzaEludGVybmFsOiBmdW5jdGlvbihlZmZlY3QpIHsKICAgIG5ldyBFZmZlY3QuTW92ZShlZmZlY3QuZWxlbWVudCwKICAgICAgeyB4OiAtZGlzdGFuY2UqMiwgeTogMCwgZHVyYXRpb246IHNwbGl0KjIsICBhZnRlckZpbmlzaEludGVybmFsOiBmdW5jdGlvbihlZmZlY3QpIHsKICAgIG5ldyBFZmZlY3QuTW92ZShlZmZlY3QuZWxlbWVudCwKICAgICAgeyB4OiAgZGlzdGFuY2UqMiwgeTogMCwgZHVyYXRpb246IHNwbGl0KjIsICBhZnRlckZpbmlzaEludGVybmFsOiBmdW5jdGlvbihlZmZlY3QpIHsKICAgIG5ldyBFZmZlY3QuTW92ZShlZmZlY3QuZWxlbWVudCwKICAgICAgeyB4OiAtZGlzdGFuY2UsIHk6IDAsIGR1cmF0aW9uOiBzcGxpdCwgYWZ0ZXJGaW5pc2hJbnRlcm5hbDogZnVuY3Rpb24oZWZmZWN0KSB7CiAgICAgICAgZWZmZWN0LmVsZW1lbnQudW5kb1Bvc2l0aW9uZWQoKS5zZXRTdHlsZShvbGRTdHlsZSk7CiAgfX0pIH19KSB9fSkgfX0pIH19KSB9fSk7Cn07CgpFZmZlY3QuU2xpZGVEb3duID0gZnVuY3Rpb24oZWxlbWVudCkgewogIGVsZW1lbnQgPSAkKGVsZW1lbnQpLmNsZWFuV2hpdGVzcGFjZSgpOwogIC8vIFNsaWRlRG93biBuZWVkIHRvIGhhdmUgdGhlIGNvbnRlbnQgb2YgdGhlIGVsZW1lbnQgd3JhcHBlZCBpbiBhIGNvbnRhaW5lciBlbGVtZW50IHdpdGggZml4ZWQgaGVpZ2h0IQogIHZhciBvbGRJbm5lckJvdHRvbSA9IGVsZW1lbnQuZG93bigpLmdldFN0eWxlKCdib3R0b20nKTsKICB2YXIgZWxlbWVudERpbWVuc2lvbnMgPSBlbGVtZW50LmdldERpbWVuc2lvbnMoKTsKICByZXR1cm4gbmV3IEVmZmVjdC5TY2FsZShlbGVtZW50LCAxMDAsIE9iamVjdC5leHRlbmQoeyAKICAgIHNjYWxlQ29udGVudDogZmFsc2UsIAogICAgc2NhbGVYOiBmYWxzZSwgCiAgICBzY2FsZUZyb206IHdpbmRvdy5vcGVyYSA/IDAgOiAxLAogICAgc2NhbGVNb2RlOiB7b3JpZ2luYWxIZWlnaHQ6IGVsZW1lbnREaW1lbnNpb25zLmhlaWdodCwgb3JpZ2luYWxXaWR0aDogZWxlbWVudERpbWVuc2lvbnMud2lkdGh9LAogICAgcmVzdG9yZUFmdGVyRmluaXNoOiB0cnVlLAogICAgYWZ0ZXJTZXR1cDogZnVuY3Rpb24oZWZmZWN0KSB7CiAgICAgIGVmZmVjdC5lbGVtZW50Lm1ha2VQb3NpdGlvbmVkKCk7CiAgICAgIGVmZmVjdC5lbGVtZW50LmRvd24oKS5tYWtlUG9zaXRpb25lZCgpOwogICAgICBpZiAod2luZG93Lm9wZXJhKSBlZmZlY3QuZWxlbWVudC5zZXRTdHlsZSh7dG9wOiAnJ30pOwogICAgICBlZmZlY3QuZWxlbWVudC5tYWtlQ2xpcHBpbmcoKS5zZXRTdHlsZSh7aGVpZ2h0OiAnMHB4J30pLnNob3coKTsgCiAgICB9LAogICAgYWZ0ZXJVcGRhdGVJbnRlcm5hbDogZnVuY3Rpb24oZWZmZWN0KSB7CiAgICAgIGVmZmVjdC5lbGVtZW50LmRvd24oKS5zZXRTdHlsZSh7Ym90dG9tOgogICAgICAgIChlZmZlY3QuZGltc1swXSAtIGVmZmVjdC5lbGVtZW50LmNsaWVudEhlaWdodCkgKyAncHgnIH0pOyAKICAgIH0sCiAgICBhZnRlckZpbmlzaEludGVybmFsOiBmdW5jdGlvbihlZmZlY3QpIHsKICAgICAgZWZmZWN0LmVsZW1lbnQudW5kb0NsaXBwaW5nKCkudW5kb1Bvc2l0aW9uZWQoKTsKICAgICAgZWZmZWN0LmVsZW1lbnQuZG93bigpLnVuZG9Qb3NpdGlvbmVkKCkuc2V0U3R5bGUoe2JvdHRvbTogb2xkSW5uZXJCb3R0b219KTsgfQogICAgfSwgYXJndW1lbnRzWzFdIHx8IHsgfSkKICApOwp9OwoKRWZmZWN0LlNsaWRlVXAgPSBmdW5jdGlvbihlbGVtZW50KSB7CiAgZWxlbWVudCA9ICQoZWxlbWVudCkuY2xlYW5XaGl0ZXNwYWNlKCk7CiAgdmFyIG9sZElubmVyQm90dG9tID0gZWxlbWVudC5kb3duKCkuZ2V0U3R5bGUoJ2JvdHRvbScpOwogIHZhciBlbGVtZW50RGltZW5zaW9ucyA9IGVsZW1lbnQuZ2V0RGltZW5zaW9ucygpOwogIHJldHVybiBuZXcgRWZmZWN0LlNjYWxlKGVsZW1lbnQsIHdpbmRvdy5vcGVyYSA/IDAgOiAxLAogICBPYmplY3QuZXh0ZW5kKHsgc2NhbGVDb250ZW50OiBmYWxzZSwgCiAgICBzY2FsZVg6IGZhbHNlLCAKICAgIHNjYWxlTW9kZTogJ2JveCcsCiAgICBzY2FsZUZyb206IDEwMCwKICAgIHNjYWxlTW9kZToge29yaWdpbmFsSGVpZ2h0OiBlbGVtZW50RGltZW5zaW9ucy5oZWlnaHQsIG9yaWdpbmFsV2lkdGg6IGVsZW1lbnREaW1lbnNpb25zLndpZHRofSwKICAgIHJlc3RvcmVBZnRlckZpbmlzaDogdHJ1ZSwKICAgIGFmdGVyU2V0dXA6IGZ1bmN0aW9uKGVmZmVjdCkgewogICAgICBlZmZlY3QuZWxlbWVudC5tYWtlUG9zaXRpb25lZCgpOwogICAgICBlZmZlY3QuZWxlbWVudC5kb3duKCkubWFrZVBvc2l0aW9uZWQoKTsKICAgICAgaWYgKHdpbmRvdy5vcGVyYSkgZWZmZWN0LmVsZW1lbnQuc2V0U3R5bGUoe3RvcDogJyd9KTsKICAgICAgZWZmZWN0LmVsZW1lbnQubWFrZUNsaXBwaW5nKCkuc2hvdygpOwogICAgfSwgIAogICAgYWZ0ZXJVcGRhdGVJbnRlcm5hbDogZnVuY3Rpb24oZWZmZWN0KSB7CiAgICAgIGVmZmVjdC5lbGVtZW50LmRvd24oKS5zZXRTdHlsZSh7Ym90dG9tOgogICAgICAgIChlZmZlY3QuZGltc1swXSAtIGVmZmVjdC5lbGVtZW50LmNsaWVudEhlaWdodCkgKyAncHgnIH0pOwogICAgfSwKICAgIGFmdGVyRmluaXNoSW50ZXJuYWw6IGZ1bmN0aW9uKGVmZmVjdCkgewogICAgICBlZmZlY3QuZWxlbWVudC5oaWRlKCkudW5kb0NsaXBwaW5nKCkudW5kb1Bvc2l0aW9uZWQoKTsKICAgICAgZWZmZWN0LmVsZW1lbnQuZG93bigpLnVuZG9Qb3NpdGlvbmVkKCkuc2V0U3R5bGUoe2JvdHRvbTogb2xkSW5uZXJCb3R0b219KTsKICAgIH0KICAgfSwgYXJndW1lbnRzWzFdIHx8IHsgfSkKICApOwp9OwoKLy8gQnVnIGluIG9wZXJhIG1ha2VzIHRoZSBURCBjb250YWluaW5nIHRoaXMgZWxlbWVudCBleHBhbmQgZm9yIGEgaW5zdGFuY2UgYWZ0ZXIgZmluaXNoIApFZmZlY3QuU3F1aXNoID0gZnVuY3Rpb24oZWxlbWVudCkgewogIHJldHVybiBuZXcgRWZmZWN0LlNjYWxlKGVsZW1lbnQsIHdpbmRvdy5vcGVyYSA/IDEgOiAwLCB7IAogICAgcmVzdG9yZUFmdGVyRmluaXNoOiB0cnVlLAogICAgYmVmb3JlU2V0dXA6IGZ1bmN0aW9uKGVmZmVjdCkgewogICAgICBlZmZlY3QuZWxlbWVudC5tYWtlQ2xpcHBpbmcoKTsgCiAgICB9LCAgCiAgICBhZnRlckZpbmlzaEludGVybmFsOiBmdW5jdGlvbihlZmZlY3QpIHsKICAgICAgZWZmZWN0LmVsZW1lbnQuaGlkZSgpLnVuZG9DbGlwcGluZygpOyAKICAgIH0KICB9KTsKfTsKCkVmZmVjdC5Hcm93ID0gZnVuY3Rpb24oZWxlbWVudCkgewogIGVsZW1lbnQgPSAkKGVsZW1lbnQpOwogIHZhciBvcHRpb25zID0gT2JqZWN0LmV4dGVuZCh7CiAgICBkaXJlY3Rpb246ICdjZW50ZXInLAogICAgbW92ZVRyYW5zaXRpb246IEVmZmVjdC5UcmFuc2l0aW9ucy5zaW5vaWRhbCwKICAgIHNjYWxlVHJhbnNpdGlvbjogRWZmZWN0LlRyYW5zaXRpb25zLnNpbm9pZGFsLAogICAgb3BhY2l0eVRyYW5zaXRpb246IEVmZmVjdC5UcmFuc2l0aW9ucy5mdWxsCiAgfSwgYXJndW1lbnRzWzFdIHx8IHsgfSk7CiAgdmFyIG9sZFN0eWxlID0gewogICAgdG9wOiBlbGVtZW50LnN0eWxlLnRvcCwKICAgIGxlZnQ6IGVsZW1lbnQuc3R5bGUubGVmdCwKICAgIGhlaWdodDogZWxlbWVudC5zdHlsZS5oZWlnaHQsCiAgICB3aWR0aDogZWxlbWVudC5zdHlsZS53aWR0aCwKICAgIG9wYWNpdHk6IGVsZW1lbnQuZ2V0SW5saW5lT3BhY2l0eSgpIH07CgogIHZhciBkaW1zID0gZWxlbWVudC5nZXREaW1lbnNpb25zKCk7ICAgIAogIHZhciBpbml0aWFsTW92ZVgsIGluaXRpYWxNb3ZlWTsKICB2YXIgbW92ZVgsIG1vdmVZOwogIAogIHN3aXRjaCAob3B0aW9ucy5kaXJlY3Rpb24pIHsKICAgIGNhc2UgJ3RvcC1sZWZ0JzoKICAgICAgaW5pdGlhbE1vdmVYID0gaW5pdGlhbE1vdmVZID0gbW92ZVggPSBtb3ZlWSA9IDA7IAogICAgICBicmVhazsKICAgIGNhc2UgJ3RvcC1yaWdodCc6CiAgICAgIGluaXRpYWxNb3ZlWCA9IGRpbXMud2lkdGg7CiAgICAgIGluaXRpYWxNb3ZlWSA9IG1vdmVZID0gMDsKICAgICAgbW92ZVggPSAtZGltcy53aWR0aDsKICAgICAgYnJlYWs7CiAgICBjYXNlICdib3R0b20tbGVmdCc6CiAgICAgIGluaXRpYWxNb3ZlWCA9IG1vdmVYID0gMDsKICAgICAgaW5pdGlhbE1vdmVZID0gZGltcy5oZWlnaHQ7CiAgICAgIG1vdmVZID0gLWRpbXMuaGVpZ2h0OwogICAgICBicmVhazsKICAgIGNhc2UgJ2JvdHRvbS1yaWdodCc6CiAgICAgIGluaXRpYWxNb3ZlWCA9IGRpbXMud2lkdGg7CiAgICAgIGluaXRpYWxNb3ZlWSA9IGRpbXMuaGVpZ2h0OwogICAgICBtb3ZlWCA9IC1kaW1zLndpZHRoOwogICAgICBtb3ZlWSA9IC1kaW1zLmhlaWdodDsKICAgICAgYnJlYWs7CiAgICBjYXNlICdjZW50ZXInOgogICAgICBpbml0aWFsTW92ZVggPSBkaW1zLndpZHRoIC8gMjsKICAgICAgaW5pdGlhbE1vdmVZID0gZGltcy5oZWlnaHQgLyAyOwogICAgICBtb3ZlWCA9IC1kaW1zLndpZHRoIC8gMjsKICAgICAgbW92ZVkgPSAtZGltcy5oZWlnaHQgLyAyOwogICAgICBicmVhazsKICB9CiAgCiAgcmV0dXJuIG5ldyBFZmZlY3QuTW92ZShlbGVtZW50LCB7CiAgICB4OiBpbml0aWFsTW92ZVgsCiAgICB5OiBpbml0aWFsTW92ZVksCiAgICBkdXJhdGlvbjogMC4wMSwgCiAgICBiZWZvcmVTZXR1cDogZnVuY3Rpb24oZWZmZWN0KSB7CiAgICAgIGVmZmVjdC5lbGVtZW50LmhpZGUoKS5tYWtlQ2xpcHBpbmcoKS5tYWtlUG9zaXRpb25lZCgpOwogICAgfSwKICAgIGFmdGVyRmluaXNoSW50ZXJuYWw6IGZ1bmN0aW9uKGVmZmVjdCkgewogICAgICBuZXcgRWZmZWN0LlBhcmFsbGVsKAogICAgICAgIFsgbmV3IEVmZmVjdC5PcGFjaXR5KGVmZmVjdC5lbGVtZW50LCB7IHN5bmM6IHRydWUsIHRvOiAxLjAsIGZyb206IDAuMCwgdHJhbnNpdGlvbjogb3B0aW9ucy5vcGFjaXR5VHJhbnNpdGlvbiB9KSwKICAgICAgICAgIG5ldyBFZmZlY3QuTW92ZShlZmZlY3QuZWxlbWVudCwgeyB4OiBtb3ZlWCwgeTogbW92ZVksIHN5bmM6IHRydWUsIHRyYW5zaXRpb246IG9wdGlvbnMubW92ZVRyYW5zaXRpb24gfSksCiAgICAgICAgICBuZXcgRWZmZWN0LlNjYWxlKGVmZmVjdC5lbGVtZW50LCAxMDAsIHsKICAgICAgICAgICAgc2NhbGVNb2RlOiB7IG9yaWdpbmFsSGVpZ2h0OiBkaW1zLmhlaWdodCwgb3JpZ2luYWxXaWR0aDogZGltcy53aWR0aCB9LCAKICAgICAgICAgICAgc3luYzogdHJ1ZSwgc2NhbGVGcm9tOiB3aW5kb3cub3BlcmEgPyAxIDogMCwgdHJhbnNpdGlvbjogb3B0aW9ucy5zY2FsZVRyYW5zaXRpb24sIHJlc3RvcmVBZnRlckZpbmlzaDogdHJ1ZX0pCiAgICAgICAgXSwgT2JqZWN0LmV4dGVuZCh7CiAgICAgICAgICAgICBiZWZvcmVTZXR1cDogZnVuY3Rpb24oZWZmZWN0KSB7CiAgICAgICAgICAgICAgIGVmZmVjdC5lZmZlY3RzWzBdLmVsZW1lbnQuc2V0U3R5bGUoe2hlaWdodDogJzBweCd9KS5zaG93KCk7IAogICAgICAgICAgICAgfSwKICAgICAgICAgICAgIGFmdGVyRmluaXNoSW50ZXJuYWw6IGZ1bmN0aW9uKGVmZmVjdCkgewogICAgICAgICAgICAgICBlZmZlY3QuZWZmZWN0c1swXS5lbGVtZW50LnVuZG9DbGlwcGluZygpLnVuZG9Qb3NpdGlvbmVkKCkuc2V0U3R5bGUob2xkU3R5bGUpOyAKICAgICAgICAgICAgIH0KICAgICAgICAgICB9LCBvcHRpb25zKQogICAgICApCiAgICB9CiAgfSk7Cn07CgpFZmZlY3QuU2hyaW5rID0gZnVuY3Rpb24oZWxlbWVudCkgewogIGVsZW1lbnQgPSAkKGVsZW1lbnQpOwogIHZhciBvcHRpb25zID0gT2JqZWN0LmV4dGVuZCh7CiAgICBkaXJlY3Rpb246ICdjZW50ZXInLAogICAgbW92ZVRyYW5zaXRpb246IEVmZmVjdC5UcmFuc2l0aW9ucy5zaW5vaWRhbCwKICAgIHNjYWxlVHJhbnNpdGlvbjogRWZmZWN0LlRyYW5zaXRpb25zLnNpbm9pZGFsLAogICAgb3BhY2l0eVRyYW5zaXRpb246IEVmZmVjdC5UcmFuc2l0aW9ucy5ub25lCiAgfSwgYXJndW1lbnRzWzFdIHx8IHsgfSk7CiAgdmFyIG9sZFN0eWxlID0gewogICAgdG9wOiBlbGVtZW50LnN0eWxlLnRvcCwKICAgIGxlZnQ6IGVsZW1lbnQuc3R5bGUubGVmdCwKICAgIGhlaWdodDogZWxlbWVudC5zdHlsZS5oZWlnaHQsCiAgICB3aWR0aDogZWxlbWVudC5zdHlsZS53aWR0aCwKICAgIG9wYWNpdHk6IGVsZW1lbnQuZ2V0SW5saW5lT3BhY2l0eSgpIH07CgogIHZhciBkaW1zID0gZWxlbWVudC5nZXREaW1lbnNpb25zKCk7CiAgdmFyIG1vdmVYLCBtb3ZlWTsKICAKICBzd2l0Y2ggKG9wdGlvbnMuZGlyZWN0aW9uKSB7CiAgICBjYXNlICd0b3AtbGVmdCc6CiAgICAgIG1vdmVYID0gbW92ZVkgPSAwOwogICAgICBicmVhazsKICAgIGNhc2UgJ3RvcC1yaWdodCc6CiAgICAgIG1vdmVYID0gZGltcy53aWR0aDsKICAgICAgbW92ZVkgPSAwOwogICAgICBicmVhazsKICAgIGNhc2UgJ2JvdHRvbS1sZWZ0JzoKICAgICAgbW92ZVggPSAwOwogICAgICBtb3ZlWSA9IGRpbXMuaGVpZ2h0OwogICAgICBicmVhazsKICAgIGNhc2UgJ2JvdHRvbS1yaWdodCc6CiAgICAgIG1vdmVYID0gZGltcy53aWR0aDsKICAgICAgbW92ZVkgPSBkaW1zLmhlaWdodDsKICAgICAgYnJlYWs7CiAgICBjYXNlICdjZW50ZXInOiAgCiAgICAgIG1vdmVYID0gZGltcy53aWR0aCAvIDI7CiAgICAgIG1vdmVZID0gZGltcy5oZWlnaHQgLyAyOwogICAgICBicmVhazsKICB9CiAgCiAgcmV0dXJuIG5ldyBFZmZlY3QuUGFyYWxsZWwoCiAgICBbIG5ldyBFZmZlY3QuT3BhY2l0eShlbGVtZW50LCB7IHN5bmM6IHRydWUsIHRvOiAwLjAsIGZyb206IDEuMCwgdHJhbnNpdGlvbjogb3B0aW9ucy5vcGFjaXR5VHJhbnNpdGlvbiB9KSwKICAgICAgbmV3IEVmZmVjdC5TY2FsZShlbGVtZW50LCB3aW5kb3cub3BlcmEgPyAxIDogMCwgeyBzeW5jOiB0cnVlLCB0cmFuc2l0aW9uOiBvcHRpb25zLnNjYWxlVHJhbnNpdGlvbiwgcmVzdG9yZUFmdGVyRmluaXNoOiB0cnVlfSksCiAgICAgIG5ldyBFZmZlY3QuTW92ZShlbGVtZW50LCB7IHg6IG1vdmVYLCB5OiBtb3ZlWSwgc3luYzogdHJ1ZSwgdHJhbnNpdGlvbjogb3B0aW9ucy5tb3ZlVHJhbnNpdGlvbiB9KQogICAgXSwgT2JqZWN0LmV4dGVuZCh7ICAgICAgICAgICAgCiAgICAgICAgIGJlZm9yZVN0YXJ0SW50ZXJuYWw6IGZ1bmN0aW9uKGVmZmVjdCkgewogICAgICAgICAgIGVmZmVjdC5lZmZlY3RzWzBdLmVsZW1lbnQubWFrZVBvc2l0aW9uZWQoKS5tYWtlQ2xpcHBpbmcoKTsgCiAgICAgICAgIH0sCiAgICAgICAgIGFmdGVyRmluaXNoSW50ZXJuYWw6IGZ1bmN0aW9uKGVmZmVjdCkgewogICAgICAgICAgIGVmZmVjdC5lZmZlY3RzWzBdLmVsZW1lbnQuaGlkZSgpLnVuZG9DbGlwcGluZygpLnVuZG9Qb3NpdGlvbmVkKCkuc2V0U3R5bGUob2xkU3R5bGUpOyB9CiAgICAgICB9LCBvcHRpb25zKQogICk7Cn07CgpFZmZlY3QuUHVsc2F0ZSA9IGZ1bmN0aW9uKGVsZW1lbnQpIHsKICBlbGVtZW50ID0gJChlbGVtZW50KTsKICB2YXIgb3B0aW9ucyAgICA9IGFyZ3VtZW50c1sxXSB8fCB7IH07CiAgdmFyIG9sZE9wYWNpdHkgPSBlbGVtZW50LmdldElubGluZU9wYWNpdHkoKTsKICB2YXIgdHJhbnNpdGlvbiA9IG9wdGlvbnMudHJhbnNpdGlvbiB8fCBFZmZlY3QuVHJhbnNpdGlvbnMuc2lub2lkYWw7CiAgdmFyIHJldmVyc2VyICAgPSBmdW5jdGlvbihwb3MpeyByZXR1cm4gdHJhbnNpdGlvbigxLUVmZmVjdC5UcmFuc2l0aW9ucy5wdWxzZShwb3MsIG9wdGlvbnMucHVsc2VzKSkgfTsKICByZXZlcnNlci5iaW5kKHRyYW5zaXRpb24pOwogIHJldHVybiBuZXcgRWZmZWN0Lk9wYWNpdHkoZWxlbWVudCwgCiAgICBPYmplY3QuZXh0ZW5kKE9iamVjdC5leHRlbmQoeyAgZHVyYXRpb246IDIuMCwgZnJvbTogMCwKICAgICAgYWZ0ZXJGaW5pc2hJbnRlcm5hbDogZnVuY3Rpb24oZWZmZWN0KSB7IGVmZmVjdC5lbGVtZW50LnNldFN0eWxlKHtvcGFjaXR5OiBvbGRPcGFjaXR5fSk7IH0KICAgIH0sIG9wdGlvbnMpLCB7dHJhbnNpdGlvbjogcmV2ZXJzZXJ9KSk7Cn07CgpFZmZlY3QuRm9sZCA9IGZ1bmN0aW9uKGVsZW1lbnQpIHsKICBlbGVtZW50ID0gJChlbGVtZW50KTsKICB2YXIgb2xkU3R5bGUgPSB7CiAgICB0b3A6IGVsZW1lbnQuc3R5bGUudG9wLAogICAgbGVmdDogZWxlbWVudC5zdHlsZS5sZWZ0LAogICAgd2lkdGg6IGVsZW1lbnQuc3R5bGUud2lkdGgsCiAgICBoZWlnaHQ6IGVsZW1lbnQuc3R5bGUuaGVpZ2h0IH07CiAgZWxlbWVudC5tYWtlQ2xpcHBpbmcoKTsKICByZXR1cm4gbmV3IEVmZmVjdC5TY2FsZShlbGVtZW50LCA1LCBPYmplY3QuZXh0ZW5kKHsgICAKICAgIHNjYWxlQ29udGVudDogZmFsc2UsCiAgICBzY2FsZVg6IGZhbHNlLAogICAgYWZ0ZXJGaW5pc2hJbnRlcm5hbDogZnVuY3Rpb24oZWZmZWN0KSB7CiAgICBuZXcgRWZmZWN0LlNjYWxlKGVsZW1lbnQsIDEsIHsgCiAgICAgIHNjYWxlQ29udGVudDogZmFsc2UsIAogICAgICBzY2FsZVk6IGZhbHNlLAogICAgICBhZnRlckZpbmlzaEludGVybmFsOiBmdW5jdGlvbihlZmZlY3QpIHsKICAgICAgICBlZmZlY3QuZWxlbWVudC5oaWRlKCkudW5kb0NsaXBwaW5nKCkuc2V0U3R5bGUob2xkU3R5bGUpOwogICAgICB9IH0pOwogIH19LCBhcmd1bWVudHNbMV0gfHwgeyB9KSk7Cn07CgpFZmZlY3QuTW9ycGggPSBDbGFzcy5jcmVhdGUoRWZmZWN0LkJhc2UsIHsKICBpbml0aWFsaXplOiBmdW5jdGlvbihlbGVtZW50KSB7CiAgICB0aGlzLmVsZW1lbnQgPSAkKGVsZW1lbnQpOwogICAgaWYgKCF0aGlzLmVsZW1lbnQpIHRocm93KEVmZmVjdC5fZWxlbWVudERvZXNOb3RFeGlzdEVycm9yKTsKICAgIHZhciBvcHRpb25zID0gT2JqZWN0LmV4dGVuZCh7CiAgICAgIHN0eWxlOiB7IH0KICAgIH0sIGFyZ3VtZW50c1sxXSB8fCB7IH0pOwogICAgCiAgICBpZiAoIU9iamVjdC5pc1N0cmluZyhvcHRpb25zLnN0eWxlKSkgdGhpcy5zdHlsZSA9ICRIKG9wdGlvbnMuc3R5bGUpOwogICAgZWxzZSB7CiAgICAgIGlmIChvcHRpb25zLnN0eWxlLmluY2x1ZGUoJzonKSkKICAgICAgICB0aGlzLnN0eWxlID0gb3B0aW9ucy5zdHlsZS5wYXJzZVN0eWxlKCk7CiAgICAgIGVsc2UgewogICAgICAgIHRoaXMuZWxlbWVudC5hZGRDbGFzc05hbWUob3B0aW9ucy5zdHlsZSk7CiAgICAgICAgdGhpcy5zdHlsZSA9ICRIKHRoaXMuZWxlbWVudC5nZXRTdHlsZXMoKSk7CiAgICAgICAgdGhpcy5lbGVtZW50LnJlbW92ZUNsYXNzTmFtZShvcHRpb25zLnN0eWxlKTsKICAgICAgICB2YXIgY3NzID0gdGhpcy5lbGVtZW50LmdldFN0eWxlcygpOwogICAgICAgIHRoaXMuc3R5bGUgPSB0aGlzLnN0eWxlLnJlamVjdChmdW5jdGlvbihzdHlsZSkgewogICAgICAgICAgcmV0dXJuIHN0eWxlLnZhbHVlID09IGNzc1tzdHlsZS5rZXldOwogICAgICAgIH0pOwogICAgICAgIG9wdGlvbnMuYWZ0ZXJGaW5pc2hJbnRlcm5hbCA9IGZ1bmN0aW9uKGVmZmVjdCkgewogICAgICAgICAgZWZmZWN0LmVsZW1lbnQuYWRkQ2xhc3NOYW1lKGVmZmVjdC5vcHRpb25zLnN0eWxlKTsKICAgICAgICAgIGVmZmVjdC50cmFuc2Zvcm1zLmVhY2goZnVuY3Rpb24odHJhbnNmb3JtKSB7CiAgICAgICAgICAgIGVmZmVjdC5lbGVtZW50LnN0eWxlW3RyYW5zZm9ybS5zdHlsZV0gPSAnJzsKICAgICAgICAgIH0pOwogICAgICAgIH0KICAgICAgfQogICAgfQogICAgdGhpcy5zdGFydChvcHRpb25zKTsKICB9LAogIAogIHNldHVwOiBmdW5jdGlvbigpewogICAgZnVuY3Rpb24gcGFyc2VDb2xvcihjb2xvcil7CiAgICAgIGlmICghY29sb3IgfHwgWydyZ2JhKDAsIDAsIDAsIDApJywndHJhbnNwYXJlbnQnXS5pbmNsdWRlKGNvbG9yKSkgY29sb3IgPSAnI2ZmZmZmZic7CiAgICAgIGNvbG9yID0gY29sb3IucGFyc2VDb2xvcigpOwogICAgICByZXR1cm4gJFIoMCwyKS5tYXAoZnVuY3Rpb24oaSl7CiAgICAgICAgcmV0dXJuIHBhcnNlSW50KCBjb2xvci5zbGljZShpKjIrMSxpKjIrMyksIDE2ICkgCiAgICAgIH0pOwogICAgfQogICAgdGhpcy50cmFuc2Zvcm1zID0gdGhpcy5zdHlsZS5tYXAoZnVuY3Rpb24ocGFpcil7CiAgICAgIHZhciBwcm9wZXJ0eSA9IHBhaXJbMF0sIHZhbHVlID0gcGFpclsxXSwgdW5pdCA9IG51bGw7CgogICAgICBpZiAodmFsdWUucGFyc2VDb2xvcignI3p6enp6eicpICE9ICcjenp6enp6JykgewogICAgICAgIHZhbHVlID0gdmFsdWUucGFyc2VDb2xvcigpOwogICAgICAgIHVuaXQgID0gJ2NvbG9yJzsKICAgICAgfSBlbHNlIGlmIChwcm9wZXJ0eSA9PSAnb3BhY2l0eScpIHsKICAgICAgICB2YWx1ZSA9IHBhcnNlRmxvYXQodmFsdWUpOwogICAgICAgIGlmIChQcm90b3R5cGUuQnJvd3Nlci5JRSAmJiAoIXRoaXMuZWxlbWVudC5jdXJyZW50U3R5bGUuaGFzTGF5b3V0KSkKICAgICAgICAgIHRoaXMuZWxlbWVudC5zZXRTdHlsZSh7em9vbTogMX0pOwogICAgICB9IGVsc2UgaWYgKEVsZW1lbnQuQ1NTX0xFTkdUSC50ZXN0KHZhbHVlKSkgewogICAgICAgICAgdmFyIGNvbXBvbmVudHMgPSB2YWx1ZS5tYXRjaCgvXihbXCtcLV0/WzAtOVwuXSspKC4qKSQvKTsKICAgICAgICAgIHZhbHVlID0gcGFyc2VGbG9hdChjb21wb25lbnRzWzFdKTsKICAgICAgICAgIHVuaXQgPSAoY29tcG9uZW50cy5sZW5ndGggPT0gMykgPyBjb21wb25lbnRzWzJdIDogbnVsbDsKICAgICAgfQoKICAgICAgdmFyIG9yaWdpbmFsVmFsdWUgPSB0aGlzLmVsZW1lbnQuZ2V0U3R5bGUocHJvcGVydHkpOwogICAgICByZXR1cm4geyAKICAgICAgICBzdHlsZTogcHJvcGVydHkuY2FtZWxpemUoKSwgCiAgICAgICAgb3JpZ2luYWxWYWx1ZTogdW5pdD09J2NvbG9yJyA/IHBhcnNlQ29sb3Iob3JpZ2luYWxWYWx1ZSkgOiBwYXJzZUZsb2F0KG9yaWdpbmFsVmFsdWUgfHwgMCksIAogICAgICAgIHRhcmdldFZhbHVlOiB1bml0PT0nY29sb3InID8gcGFyc2VDb2xvcih2YWx1ZSkgOiB2YWx1ZSwKICAgICAgICB1bml0OiB1bml0CiAgICAgIH07CiAgICB9LmJpbmQodGhpcykpLnJlamVjdChmdW5jdGlvbih0cmFuc2Zvcm0pewogICAgICByZXR1cm4gKAogICAgICAgICh0cmFuc2Zvcm0ub3JpZ2luYWxWYWx1ZSA9PSB0cmFuc2Zvcm0udGFyZ2V0VmFsdWUpIHx8CiAgICAgICAgKAogICAgICAgICAgdHJhbnNmb3JtLnVuaXQgIT0gJ2NvbG9yJyAmJgogICAgICAgICAgKGlzTmFOKHRyYW5zZm9ybS5vcmlnaW5hbFZhbHVlKSB8fCBpc05hTih0cmFuc2Zvcm0udGFyZ2V0VmFsdWUpKQogICAgICAgICkKICAgICAgKQogICAgfSk7CiAgfSwKICB1cGRhdGU6IGZ1bmN0aW9uKHBvc2l0aW9uKSB7CiAgICB2YXIgc3R5bGUgPSB7IH0sIHRyYW5zZm9ybSwgaSA9IHRoaXMudHJhbnNmb3Jtcy5sZW5ndGg7CiAgICB3aGlsZShpLS0pCiAgICAgIHN0eWxlWyh0cmFuc2Zvcm0gPSB0aGlzLnRyYW5zZm9ybXNbaV0pLnN0eWxlXSA9IAogICAgICAgIHRyYW5zZm9ybS51bml0PT0nY29sb3InID8gJyMnKwogICAgICAgICAgKE1hdGgucm91bmQodHJhbnNmb3JtLm9yaWdpbmFsVmFsdWVbMF0rCiAgICAgICAgICAgICh0cmFuc2Zvcm0udGFyZ2V0VmFsdWVbMF0tdHJhbnNmb3JtLm9yaWdpbmFsVmFsdWVbMF0pKnBvc2l0aW9uKSkudG9Db2xvclBhcnQoKSArCiAgICAgICAgICAoTWF0aC5yb3VuZCh0cmFuc2Zvcm0ub3JpZ2luYWxWYWx1ZVsxXSsKICAgICAgICAgICAgKHRyYW5zZm9ybS50YXJnZXRWYWx1ZVsxXS10cmFuc2Zvcm0ub3JpZ2luYWxWYWx1ZVsxXSkqcG9zaXRpb24pKS50b0NvbG9yUGFydCgpICsKICAgICAgICAgIChNYXRoLnJvdW5kKHRyYW5zZm9ybS5vcmlnaW5hbFZhbHVlWzJdKwogICAgICAgICAgICAodHJhbnNmb3JtLnRhcmdldFZhbHVlWzJdLXRyYW5zZm9ybS5vcmlnaW5hbFZhbHVlWzJdKSpwb3NpdGlvbikpLnRvQ29sb3JQYXJ0KCkgOgogICAgICAgICh0cmFuc2Zvcm0ub3JpZ2luYWxWYWx1ZSArCiAgICAgICAgICAodHJhbnNmb3JtLnRhcmdldFZhbHVlIC0gdHJhbnNmb3JtLm9yaWdpbmFsVmFsdWUpICogcG9zaXRpb24pLnRvRml4ZWQoMykgKyAKICAgICAgICAgICAgKHRyYW5zZm9ybS51bml0ID09PSBudWxsID8gJycgOiB0cmFuc2Zvcm0udW5pdCk7CiAgICB0aGlzLmVsZW1lbnQuc2V0U3R5bGUoc3R5bGUsIHRydWUpOwogIH0KfSk7CgpFZmZlY3QuVHJhbnNmb3JtID0gQ2xhc3MuY3JlYXRlKHsKICBpbml0aWFsaXplOiBmdW5jdGlvbih0cmFja3MpewogICAgdGhpcy50cmFja3MgID0gW107CiAgICB0aGlzLm9wdGlvbnMgPSBhcmd1bWVudHNbMV0gfHwgeyB9OwogICAgdGhpcy5hZGRUcmFja3ModHJhY2tzKTsKICB9LAogIGFkZFRyYWNrczogZnVuY3Rpb24odHJhY2tzKXsKICAgIHRyYWNrcy5lYWNoKGZ1bmN0aW9uKHRyYWNrKXsKICAgICAgdHJhY2sgPSAkSCh0cmFjayk7CiAgICAgIHZhciBkYXRhID0gdHJhY2sudmFsdWVzKCkuZmlyc3QoKTsKICAgICAgdGhpcy50cmFja3MucHVzaCgkSCh7CiAgICAgICAgaWRzOiAgICAgdHJhY2sua2V5cygpLmZpcnN0KCksCiAgICAgICAgZWZmZWN0OiAgRWZmZWN0Lk1vcnBoLAogICAgICAgIG9wdGlvbnM6IHsgc3R5bGU6IGRhdGEgfQogICAgICB9KSk7CiAgICB9LmJpbmQodGhpcykpOwogICAgcmV0dXJuIHRoaXM7CiAgfSwKICBwbGF5OiBmdW5jdGlvbigpewogICAgcmV0dXJuIG5ldyBFZmZlY3QuUGFyYWxsZWwoCiAgICAgIHRoaXMudHJhY2tzLm1hcChmdW5jdGlvbih0cmFjayl7CiAgICAgICAgdmFyIGlkcyA9IHRyYWNrLmdldCgnaWRzJyksIGVmZmVjdCA9IHRyYWNrLmdldCgnZWZmZWN0JyksIG9wdGlvbnMgPSB0cmFjay5nZXQoJ29wdGlvbnMnKTsKICAgICAgICB2YXIgZWxlbWVudHMgPSBbJChpZHMpIHx8ICQkKGlkcyldLmZsYXR0ZW4oKTsKICAgICAgICByZXR1cm4gZWxlbWVudHMubWFwKGZ1bmN0aW9uKGUpeyByZXR1cm4gbmV3IGVmZmVjdChlLCBPYmplY3QuZXh0ZW5kKHsgc3luYzp0cnVlIH0sIG9wdGlvbnMpKSB9KTsKICAgICAgfSkuZmxhdHRlbigpLAogICAgICB0aGlzLm9wdGlvbnMKICAgICk7CiAgfQp9KTsKCkVsZW1lbnQuQ1NTX1BST1BFUlRJRVMgPSAkdygKICAnYmFja2dyb3VuZENvbG9yIGJhY2tncm91bmRQb3NpdGlvbiBib3JkZXJCb3R0b21Db2xvciBib3JkZXJCb3R0b21TdHlsZSAnICsgCiAgJ2JvcmRlckJvdHRvbVdpZHRoIGJvcmRlckxlZnRDb2xvciBib3JkZXJMZWZ0U3R5bGUgYm9yZGVyTGVmdFdpZHRoICcgKwogICdib3JkZXJSaWdodENvbG9yIGJvcmRlclJpZ2h0U3R5bGUgYm9yZGVyUmlnaHRXaWR0aCBib3JkZXJTcGFjaW5nICcgKwogICdib3JkZXJUb3BDb2xvciBib3JkZXJUb3BTdHlsZSBib3JkZXJUb3BXaWR0aCBib3R0b20gY2xpcCBjb2xvciAnICsKICAnZm9udFNpemUgZm9udFdlaWdodCBoZWlnaHQgbGVmdCBsZXR0ZXJTcGFjaW5nIGxpbmVIZWlnaHQgJyArCiAgJ21hcmdpbkJvdHRvbSBtYXJnaW5MZWZ0IG1hcmdpblJpZ2h0IG1hcmdpblRvcCBtYXJrZXJPZmZzZXQgbWF4SGVpZ2h0ICcrCiAgJ21heFdpZHRoIG1pbkhlaWdodCBtaW5XaWR0aCBvcGFjaXR5IG91dGxpbmVDb2xvciBvdXRsaW5lT2Zmc2V0ICcgKwogICdvdXRsaW5lV2lkdGggcGFkZGluZ0JvdHRvbSBwYWRkaW5nTGVmdCBwYWRkaW5nUmlnaHQgcGFkZGluZ1RvcCAnICsKICAncmlnaHQgdGV4dEluZGVudCB0b3Agd2lkdGggd29yZFNwYWNpbmcgekluZGV4Jyk7CiAgCkVsZW1lbnQuQ1NTX0xFTkdUSCA9IC9eKChbXCtcLV0/WzAtOVwuXSspKGVtfGV4fHB4fGlufGNtfG1tfHB0fHBjfFwlKSl8MCQvOwoKU3RyaW5nLl9fcGFyc2VTdHlsZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKU3RyaW5nLnByb3RvdHlwZS5wYXJzZVN0eWxlID0gZnVuY3Rpb24oKXsKICB2YXIgc3R5bGUsIHN0eWxlUnVsZXMgPSAkSCgpOwogIGlmIChQcm90b3R5cGUuQnJvd3Nlci5XZWJLaXQpCiAgICBzdHlsZSA9IG5ldyBFbGVtZW50KCdkaXYnLHtzdHlsZTp0aGlzfSkuc3R5bGU7CiAgZWxzZSB7CiAgICBTdHJpbmcuX19wYXJzZVN0eWxlRWxlbWVudC5pbm5lckhUTUwgPSAnPGRpdiBzdHlsZT0iJyArIHRoaXMgKyAnIj48L2Rpdj4nOwogICAgc3R5bGUgPSBTdHJpbmcuX19wYXJzZVN0eWxlRWxlbWVudC5jaGlsZE5vZGVzWzBdLnN0eWxlOwogIH0KICAKICBFbGVtZW50LkNTU19QUk9QRVJUSUVTLmVhY2goZnVuY3Rpb24ocHJvcGVydHkpewogICAgaWYgKHN0eWxlW3Byb3BlcnR5XSkgc3R5bGVSdWxlcy5zZXQocHJvcGVydHksIHN0eWxlW3Byb3BlcnR5XSk7IAogIH0pOwogIAogIGlmIChQcm90b3R5cGUuQnJvd3Nlci5JRSAmJiB0aGlzLmluY2x1ZGUoJ29wYWNpdHknKSkKICAgIHN0eWxlUnVsZXMuc2V0KCdvcGFjaXR5JywgdGhpcy5tYXRjaCgvb3BhY2l0eTpccyooKD86MHwxKT8oPzpcLlxkKik/KS8pWzFdKTsKCiAgcmV0dXJuIHN0eWxlUnVsZXM7Cn07CgppZiAoZG9jdW1lbnQuZGVmYXVsdFZpZXcgJiYgZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZSkgewogIEVsZW1lbnQuZ2V0U3R5bGVzID0gZnVuY3Rpb24oZWxlbWVudCkgewogICAgdmFyIGNzcyA9IGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoJChlbGVtZW50KSwgbnVsbCk7CiAgICByZXR1cm4gRWxlbWVudC5DU1NfUFJPUEVSVElFUy5pbmplY3QoeyB9LCBmdW5jdGlvbihzdHlsZXMsIHByb3BlcnR5KSB7CiAgICAgIHN0eWxlc1twcm9wZXJ0eV0gPSBjc3NbcHJvcGVydHldOwogICAgICByZXR1cm4gc3R5bGVzOwogICAgfSk7CiAgfTsKfSBlbHNlIHsKICBFbGVtZW50LmdldFN0eWxlcyA9IGZ1bmN0aW9uKGVsZW1lbnQpIHsKICAgIGVsZW1lbnQgPSAkKGVsZW1lbnQpOwogICAgdmFyIGNzcyA9IGVsZW1lbnQuY3VycmVudFN0eWxlLCBzdHlsZXM7CiAgICBzdHlsZXMgPSBFbGVtZW50LkNTU19QUk9QRVJUSUVTLmluamVjdCh7IH0sIGZ1bmN0aW9uKHJlc3VsdHMsIHByb3BlcnR5KSB7CiAgICAgIHJlc3VsdHNbcHJvcGVydHldID0gY3NzW3Byb3BlcnR5XTsKICAgICAgcmV0dXJuIHJlc3VsdHM7CiAgICB9KTsKICAgIGlmICghc3R5bGVzLm9wYWNpdHkpIHN0eWxlcy5vcGFjaXR5ID0gZWxlbWVudC5nZXRPcGFjaXR5KCk7CiAgICByZXR1cm4gc3R5bGVzOwogIH07Cn07CgpFZmZlY3QuTWV0aG9kcyA9IHsKICBtb3JwaDogZnVuY3Rpb24oZWxlbWVudCwgc3R5bGUpIHsKICAgIGVsZW1lbnQgPSAkKGVsZW1lbnQpOwogICAgbmV3IEVmZmVjdC5Nb3JwaChlbGVtZW50LCBPYmplY3QuZXh0ZW5kKHsgc3R5bGU6IHN0eWxlIH0sIGFyZ3VtZW50c1syXSB8fCB7IH0pKTsKICAgIHJldHVybiBlbGVtZW50OwogIH0sCiAgdmlzdWFsRWZmZWN0OiBmdW5jdGlvbihlbGVtZW50LCBlZmZlY3QsIG9wdGlvbnMpIHsKICAgIGVsZW1lbnQgPSAkKGVsZW1lbnQpCiAgICB2YXIgcyA9IGVmZmVjdC5kYXNoZXJpemUoKS5jYW1lbGl6ZSgpLCBrbGFzcyA9IHMuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBzLnN1YnN0cmluZygxKTsKICAgIG5ldyBFZmZlY3Rba2xhc3NdKGVsZW1lbnQsIG9wdGlvbnMpOwogICAgcmV0dXJuIGVsZW1lbnQ7CiAgfSwKICBoaWdobGlnaHQ6IGZ1bmN0aW9uKGVsZW1lbnQsIG9wdGlvbnMpIHsKICAgIGVsZW1lbnQgPSAkKGVsZW1lbnQpOwogICAgbmV3IEVmZmVjdC5IaWdobGlnaHQoZWxlbWVudCwgb3B0aW9ucyk7CiAgICByZXR1cm4gZWxlbWVudDsKICB9Cn07CgokdygnZmFkZSBhcHBlYXIgZ3JvdyBzaHJpbmsgZm9sZCBibGluZFVwIGJsaW5kRG93biBzbGlkZVVwIHNsaWRlRG93biAnKwogICdwdWxzYXRlIHNoYWtlIHB1ZmYgc3F1aXNoIHN3aXRjaE9mZiBkcm9wT3V0JykuZWFjaCgKICBmdW5jdGlvbihlZmZlY3QpIHsgCiAgICBFZmZlY3QuTWV0aG9kc1tlZmZlY3RdID0gZnVuY3Rpb24oZWxlbWVudCwgb3B0aW9ucyl7CiAgICAgIGVsZW1lbnQgPSAkKGVsZW1lbnQpOwogICAgICBFZmZlY3RbZWZmZWN0LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgZWZmZWN0LnN1YnN0cmluZygxKV0oZWxlbWVudCwgb3B0aW9ucyk7CiAgICAgIHJldHVybiBlbGVtZW50OwogICAgfQogIH0KKTsKCiR3KCdnZXRJbmxpbmVPcGFjaXR5IGZvcmNlUmVyZW5kZXJpbmcgc2V0Q29udGVudFpvb20gY29sbGVjdFRleHROb2RlcyBjb2xsZWN0VGV4dE5vZGVzSWdub3JlQ2xhc3MgZ2V0U3R5bGVzJykuZWFjaCggCiAgZnVuY3Rpb24oZikgeyBFZmZlY3QuTWV0aG9kc1tmXSA9IEVsZW1lbnRbZl07IH0KKTsKCkVsZW1lbnQuYWRkTWV0aG9kcyhFZmZlY3QuTWV0aG9kcyk7Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/lightbox/js/lightbox.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi8vDQovLwlMaWdodGJveCB2Mi4wNA0KLy8JYnkgTG9rZXNoIERoYWthciAtIGh0dHA6Ly93d3cubG9rZXNoZGhha2FyLmNvbQ0KLy8JTGFzdCBNb2RpZmljYXRpb246IDIvOS8wOA0KLy8NCi8vCUZvciBtb3JlIGluZm9ybWF0aW9uLCB2aXNpdDoNCi8vCWh0dHA6Ly9sb2tlc2hkaGFrYXIuY29tL3Byb2plY3RzL2xpZ2h0Ym94Mi8NCi8vDQovLwlMaWNlbnNlZCB1bmRlciB0aGUgQ3JlYXRpdmUgQ29tbW9ucyBBdHRyaWJ1dGlvbiAyLjUgTGljZW5zZSAtIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL2xpY2Vuc2VzL2J5LzIuNS8NCi8vICAJLSBGcmVlIGZvciB1c2UgaW4gYm90aCBwZXJzb25hbCBhbmQgY29tbWVyY2lhbCBwcm9qZWN0cw0KLy8JCS0gQXR0cmlidXRpb24gcmVxdWlyZXMgbGVhdmluZyBhdXRob3IgbmFtZSwgYXV0aG9yIGxpbmssIGFuZCB0aGUgbGljZW5zZSBpbmZvIGludGFjdC4NCi8vCQ0KLy8gIFRoYW5rczogU2NvdHQgVXB0b24odXB0b25pYy5jb20pLCBQZXRlci1QYXVsIEtvY2gocXVpcmtzbW9kZS5jb20pLCBhbmQgVGhvbWFzIEZ1Y2hzKG1pci5hY3Vsby51cykgZm9yIGlkZWFzLCBsaWJzLCBhbmQgc25pcHBldHMuDQovLyAgCQlBcnRlbXkgVHJlZ3ViZW5rbyAoYXJ0eS5uYW1lKSBmb3IgY2xlYW51cCBhbmQgaGVscCBpbiB1cGRhdGluZyB0byBsYXRlc3QgdmVyIG9mIHByb3RvLWFjdWxvdXMuDQovLw0KLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi8qDQoNCiAgICBUYWJsZSBvZiBDb250ZW50cw0KICAgIC0tLS0tLS0tLS0tLS0tLS0tDQogICAgQ29uZmlndXJhdGlvbg0KDQogICAgTGlnaHRib3ggQ2xhc3MgRGVjbGFyYXRpb24NCiAgICAtIGluaXRpYWxpemUoKQ0KICAgIC0gdXBkYXRlSW1hZ2VMaXN0KCkNCiAgICAtIHN0YXJ0KCkNCiAgICAtIGNoYW5nZUltYWdlKCkNCiAgICAtIHJlc2l6ZUltYWdlQ29udGFpbmVyKCkNCiAgICAtIHNob3dJbWFnZSgpDQogICAgLSB1cGRhdGVEZXRhaWxzKCkNCiAgICAtIHVwZGF0ZU5hdigpDQogICAgLSBlbmFibGVLZXlib2FyZE5hdigpDQogICAgLSBkaXNhYmxlS2V5Ym9hcmROYXYoKQ0KICAgIC0ga2V5Ym9hcmRBY3Rpb24oKQ0KICAgIC0gcHJlbG9hZE5laWdoYm9ySW1hZ2VzKCkNCiAgICAtIGVuZCgpDQogICAgDQogICAgRnVuY3Rpb24gQ2FsbHMNCiAgICAtIGRvY3VtZW50Lm9ic2VydmUoKQ0KICAgDQoqLw0KLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KLy8NCi8vICBDb25maWd1cmF0aW9ubA0KLy8NCkxpZ2h0Ym94T3B0aW9ucyA9IE9iamVjdC5leHRlbmQoew0KICAgIGZpbGVMb2FkaW5nSW1hZ2U6ICAgICAgICAnbW9kdWxlcy9HYWxsZXJ5L3RlbXBsYXRlcy9saWdodGJveC9pbWFnZXMvbG9hZGluZy5naWYnLCAgICAgDQogICAgZmlsZUJvdHRvbU5hdkNsb3NlSW1hZ2U6ICdtb2R1bGVzL0dhbGxlcnkvdGVtcGxhdGVzL2xpZ2h0Ym94L2ltYWdlcy9jbG9zZWxhYmVsLmdpZicsDQoNCiAgICBvdmVybGF5T3BhY2l0eTogMC44LCAgIC8vIGNvbnRyb2xzIHRyYW5zcGFyZW5jeSBvZiBzaGFkb3cgb3ZlcmxheQ0KDQogICAgYW5pbWF0ZTogdHJ1ZSwgICAgICAgICAvLyB0b2dnbGVzIHJlc2l6aW5nIGFuaW1hdGlvbnMNCiAgICByZXNpemVTcGVlZDogNywgICAgICAgIC8vIGNvbnRyb2xzIHRoZSBzcGVlZCBvZiB0aGUgaW1hZ2UgcmVzaXppbmcgYW5pbWF0aW9ucyAoMT1zbG93ZXN0IGFuZCAxMD1mYXN0ZXN0KQ0KDQogICAgYm9yZGVyU2l6ZTogMTAsICAgICAgICAgLy9pZiB5b3UgYWRqdXN0IHRoZSBwYWRkaW5nIGluIHRoZSBDU1MsIHlvdSB3aWxsIG5lZWQgdG8gdXBkYXRlIHRoaXMgdmFyaWFibGUNCg0KCS8vIFdoZW4gZ3JvdXBpbmcgaW1hZ2VzIHRoaXMgaXMgdXNlZCB0byB3cml0ZTogSW1hZ2UgIyBvZiAjLg0KCS8vIENoYW5nZSBpdCBmb3Igbm9uLWVuZ2xpc2ggbG9jYWxpemF0aW9uDQoJbGFiZWxJbWFnZTogIkltYWdlIiwNCglsYWJlbE9mOiAib2YiDQp9LCB3aW5kb3cuTGlnaHRib3hPcHRpb25zIHx8IHt9KTsNCg0KLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KdmFyIExpZ2h0Ym94ID0gQ2xhc3MuY3JlYXRlKCk7DQoNCkxpZ2h0Ym94LnByb3RvdHlwZSA9IHsNCiAgICBpbWFnZUFycmF5OiBbXSwNCiAgICBhY3RpdmVJbWFnZTogdW5kZWZpbmVkLA0KICAgIA0KICAgIC8vIGluaXRpYWxpemUoKQ0KICAgIC8vIENvbnN0cnVjdG9yIHJ1bnMgb24gY29tcGxldGlvbiBvZiB0aGUgRE9NIGxvYWRpbmcuIENhbGxzIHVwZGF0ZUltYWdlTGlzdCBhbmQgdGhlbg0KICAgIC8vIHRoZSBmdW5jdGlvbiBpbnNlcnRzIGh0bWwgYXQgdGhlIGJvdHRvbSBvZiB0aGUgcGFnZSB3aGljaCBpcyB1c2VkIHRvIGRpc3BsYXkgdGhlIHNoYWRvdyANCiAgICAvLyBvdmVybGF5IGFuZCB0aGUgaW1hZ2UgY29udGFpbmVyLg0KICAgIC8vDQogICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24oKSB7ICAgIA0KICAgICAgICANCiAgICAgICAgdGhpcy51cGRhdGVJbWFnZUxpc3QoKTsNCiAgICAgICAgDQogICAgICAgIHRoaXMua2V5Ym9hcmRBY3Rpb24gPSB0aGlzLmtleWJvYXJkQWN0aW9uLmJpbmRBc0V2ZW50TGlzdGVuZXIodGhpcyk7DQoNCiAgICAgICAgaWYgKExpZ2h0Ym94T3B0aW9ucy5yZXNpemVTcGVlZCA+IDEwKSBMaWdodGJveE9wdGlvbnMucmVzaXplU3BlZWQgPSAxMDsNCiAgICAgICAgaWYgKExpZ2h0Ym94T3B0aW9ucy5yZXNpemVTcGVlZCA8IDEpICBMaWdodGJveE9wdGlvbnMucmVzaXplU3BlZWQgPSAxOw0KDQoJICAgIHRoaXMucmVzaXplRHVyYXRpb24gPSBMaWdodGJveE9wdGlvbnMuYW5pbWF0ZSA/ICgoMTEgLSBMaWdodGJveE9wdGlvbnMucmVzaXplU3BlZWQpICogMC4xNSkgOiAwOw0KCSAgICB0aGlzLm92ZXJsYXlEdXJhdGlvbiA9IExpZ2h0Ym94T3B0aW9ucy5hbmltYXRlID8gMC4yIDogMDsgIC8vIHNoYWRvdyBmYWRlIGluL291dCBkdXJhdGlvbg0KDQogICAgICAgIC8vIFdoZW4gTGlnaHRib3ggc3RhcnRzIGl0IHdpbGwgcmVzaXplIGl0c2VsZiBmcm9tIDI1MCBieSAyNTAgdG8gdGhlIGN1cnJlbnQgaW1hZ2UgZGltZW5zaW9uLg0KICAgICAgICAvLyBJZiBhbmltYXRpb25zIGFyZSB0dXJuZWQgb2ZmLCBpdCB3aWxsIGJlIGhpZGRlbiBhcyB0byBwcmV2ZW50IGEgZmxpY2tlciBvZiBhDQogICAgICAgIC8vIHdoaXRlIDI1MCBieSAyNTAgYm94Lg0KICAgICAgICB2YXIgc2l6ZSA9IChMaWdodGJveE9wdGlvbnMuYW5pbWF0ZSA/IDI1MCA6IDEpICsgJ3B4JzsNCiAgICAgICAgDQoNCiAgICAgICAgLy8gQ29kZSBpbnNlcnRzIGh0bWwgYXQgdGhlIGJvdHRvbSBvZiB0aGUgcGFnZSB0aGF0IGxvb2tzIHNpbWlsYXIgdG8gdGhpczoNCiAgICAgICAgLy8NCiAgICAgICAgLy8gIDxkaXYgaWQ9Im92ZXJsYXkiPjwvZGl2Pg0KICAgICAgICAvLyAgPGRpdiBpZD0ibGlnaHRib3giPg0KICAgICAgICAvLyAgICAgIDxkaXYgaWQ9Im91dGVySW1hZ2VDb250YWluZXIiPg0KICAgICAgICAvLyAgICAgICAgICA8ZGl2IGlkPSJpbWFnZUNvbnRhaW5lciI+DQogICAgICAgIC8vICAgICAgICAgICAgICA8aW1nIGlkPSJsaWdodGJveEltYWdlIj4NCiAgICAgICAgLy8gICAgICAgICAgICAgIDxkaXYgc3R5bGU9IiIgaWQ9ImhvdmVyTmF2Ij4NCiAgICAgICAgLy8gICAgICAgICAgICAgICAgICA8YSBocmVmPSIjIiBpZD0icHJldkxpbmsiPjwvYT4NCiAgICAgICAgLy8gICAgICAgICAgICAgICAgICA8YSBocmVmPSIjIiBpZD0ibmV4dExpbmsiPjwvYT4NCiAgICAgICAgLy8gICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAvLyAgICAgICAgICAgICAgPGRpdiBpZD0ibG9hZGluZyI+DQogICAgICAgIC8vICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgaWQ9ImxvYWRpbmdMaW5rIj4NCiAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9ImltYWdlcy9sb2FkaW5nLmdpZiI+DQogICAgICAgIC8vICAgICAgICAgICAgICAgICAgPC9hPg0KICAgICAgICAvLyAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgIC8vICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAvLyAgICAgIDwvZGl2Pg0KICAgICAgICAvLyAgICAgIDxkaXYgaWQ9ImltYWdlRGF0YUNvbnRhaW5lciI+DQogICAgICAgIC8vICAgICAgICAgIDxkaXYgaWQ9ImltYWdlRGF0YSI+DQogICAgICAgIC8vICAgICAgICAgICAgICA8ZGl2IGlkPSJpbWFnZURldGFpbHMiPg0KICAgICAgICAvLyAgICAgICAgICAgICAgICAgIDxzcGFuIGlkPSJjYXB0aW9uIj48L3NwYW4+DQogICAgICAgIC8vICAgICAgICAgICAgICAgICAgPHNwYW4gaWQ9Im51bWJlckRpc3BsYXkiPjwvc3Bhbj4NCiAgICAgICAgLy8gICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAvLyAgICAgICAgICAgICAgPGRpdiBpZD0iYm90dG9tTmF2Ij4NCiAgICAgICAgLy8gICAgICAgICAgICAgICAgICA8YSBocmVmPSIjIiBpZD0iYm90dG9tTmF2Q2xvc2UiPg0KICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaW1hZ2VzL2Nsb3NlLmdpZiI+DQogICAgICAgIC8vICAgICAgICAgICAgICAgICAgPC9hPg0KICAgICAgICAvLyAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgIC8vICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAvLyAgICAgIDwvZGl2Pg0KICAgICAgICAvLyAgPC9kaXY+DQoNCg0KICAgICAgICB2YXIgb2JqQm9keSA9ICQkKCdib2R5JylbMF07DQoNCgkJb2JqQm9keS5hcHBlbmRDaGlsZChCdWlsZGVyLm5vZGUoJ2Rpdicse2lkOidvdmVybGF5J30pKTsNCgkNCiAgICAgICAgb2JqQm9keS5hcHBlbmRDaGlsZChCdWlsZGVyLm5vZGUoJ2Rpdicse2lkOidsaWdodGJveCd9LCBbDQogICAgICAgICAgICBCdWlsZGVyLm5vZGUoJ2Rpdicse2lkOidvdXRlckltYWdlQ29udGFpbmVyJ30sIA0KICAgICAgICAgICAgICAgIEJ1aWxkZXIubm9kZSgnZGl2Jyx7aWQ6J2ltYWdlQ29udGFpbmVyJ30sIFsNCiAgICAgICAgICAgICAgICAgICAgQnVpbGRlci5ub2RlKCdpbWcnLHtpZDonbGlnaHRib3hJbWFnZSd9KSwgDQogICAgICAgICAgICAgICAgICAgIEJ1aWxkZXIubm9kZSgnZGl2Jyx7aWQ6J2hvdmVyTmF2J30sIFsNCiAgICAgICAgICAgICAgICAgICAgICAgIEJ1aWxkZXIubm9kZSgnYScse2lkOidwcmV2TGluaycsIGhyZWY6ICcjJyB9KSwNCiAgICAgICAgICAgICAgICAgICAgICAgIEJ1aWxkZXIubm9kZSgnYScse2lkOiduZXh0TGluaycsIGhyZWY6ICcjJyB9KQ0KICAgICAgICAgICAgICAgICAgICBdKSwNCiAgICAgICAgICAgICAgICAgICAgQnVpbGRlci5ub2RlKCdkaXYnLHtpZDonbG9hZGluZyd9LCANCiAgICAgICAgICAgICAgICAgICAgICAgIEJ1aWxkZXIubm9kZSgnYScse2lkOidsb2FkaW5nTGluaycsIGhyZWY6ICcjJyB9LCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBCdWlsZGVyLm5vZGUoJ2ltZycsIHtzcmM6IExpZ2h0Ym94T3B0aW9ucy5maWxlTG9hZGluZ0ltYWdlfSkNCiAgICAgICAgICAgICAgICAgICAgICAgICkNCiAgICAgICAgICAgICAgICAgICAgKQ0KICAgICAgICAgICAgICAgIF0pDQogICAgICAgICAgICApLA0KICAgICAgICAgICAgQnVpbGRlci5ub2RlKCdkaXYnLCB7aWQ6J2ltYWdlRGF0YUNvbnRhaW5lcid9LA0KICAgICAgICAgICAgICAgIEJ1aWxkZXIubm9kZSgnZGl2Jyx7aWQ6J2ltYWdlRGF0YSd9LCBbDQogICAgICAgICAgICAgICAgICAgIEJ1aWxkZXIubm9kZSgnZGl2Jyx7aWQ6J2ltYWdlRGV0YWlscyd9LCBbDQogICAgICAgICAgICAgICAgICAgICAgICBCdWlsZGVyLm5vZGUoJ3NwYW4nLHtpZDonY2FwdGlvbid9KSwNCiAgICAgICAgICAgICAgICAgICAgICAgIEJ1aWxkZXIubm9kZSgnc3Bhbicse2lkOidudW1iZXJEaXNwbGF5J30pDQogICAgICAgICAgICAgICAgICAgIF0pLA0KICAgICAgICAgICAgICAgICAgICBCdWlsZGVyLm5vZGUoJ2Rpdicse2lkOidib3R0b21OYXYnfSwNCiAgICAgICAgICAgICAgICAgICAgICAgIEJ1aWxkZXIubm9kZSgnYScse2lkOidib3R0b21OYXZDbG9zZScsIGhyZWY6ICcjJyB9LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1aWxkZXIubm9kZSgnaW1nJywgeyBzcmM6IExpZ2h0Ym94T3B0aW9ucy5maWxlQm90dG9tTmF2Q2xvc2VJbWFnZSB9KQ0KICAgICAgICAgICAgICAgICAgICAgICAgKQ0KICAgICAgICAgICAgICAgICAgICApDQogICAgICAgICAgICAgICAgXSkNCiAgICAgICAgICAgICkNCiAgICAgICAgXSkpOw0KDQoNCgkJJCgnb3ZlcmxheScpLmhpZGUoKS5vYnNlcnZlKCdjbGljaycsIChmdW5jdGlvbigpIHsgdGhpcy5lbmQoKTsgfSkuYmluZCh0aGlzKSk7DQoJCSQoJ2xpZ2h0Ym94JykuaGlkZSgpLm9ic2VydmUoJ2NsaWNrJywgKGZ1bmN0aW9uKGV2ZW50KSB7IGlmIChldmVudC5lbGVtZW50KCkuaWQgPT0gJ2xpZ2h0Ym94JykgdGhpcy5lbmQoKTsgfSkuYmluZCh0aGlzKSk7DQoJCSQoJ291dGVySW1hZ2VDb250YWluZXInKS5zZXRTdHlsZSh7IHdpZHRoOiBzaXplLCBoZWlnaHQ6IHNpemUgfSk7DQoJCSQoJ3ByZXZMaW5rJykub2JzZXJ2ZSgnY2xpY2snLCAoZnVuY3Rpb24oZXZlbnQpIHsgZXZlbnQuc3RvcCgpOyB0aGlzLmNoYW5nZUltYWdlKHRoaXMuYWN0aXZlSW1hZ2UgLSAxKTsgfSkuYmluZEFzRXZlbnRMaXN0ZW5lcih0aGlzKSk7DQoJCSQoJ25leHRMaW5rJykub2JzZXJ2ZSgnY2xpY2snLCAoZnVuY3Rpb24oZXZlbnQpIHsgZXZlbnQuc3RvcCgpOyB0aGlzLmNoYW5nZUltYWdlKHRoaXMuYWN0aXZlSW1hZ2UgKyAxKTsgfSkuYmluZEFzRXZlbnRMaXN0ZW5lcih0aGlzKSk7DQoJCSQoJ2xvYWRpbmdMaW5rJykub2JzZXJ2ZSgnY2xpY2snLCAoZnVuY3Rpb24oZXZlbnQpIHsgZXZlbnQuc3RvcCgpOyB0aGlzLmVuZCgpOyB9KS5iaW5kKHRoaXMpKTsNCgkJJCgnYm90dG9tTmF2Q2xvc2UnKS5vYnNlcnZlKCdjbGljaycsIChmdW5jdGlvbihldmVudCkgeyBldmVudC5zdG9wKCk7IHRoaXMuZW5kKCk7IH0pLmJpbmQodGhpcykpOw0KDQogICAgICAgIHZhciB0aCA9IHRoaXM7DQogICAgICAgIChmdW5jdGlvbigpew0KICAgICAgICAgICAgdmFyIGlkcyA9IA0KICAgICAgICAgICAgICAgICdvdmVybGF5IGxpZ2h0Ym94IG91dGVySW1hZ2VDb250YWluZXIgaW1hZ2VDb250YWluZXIgbGlnaHRib3hJbWFnZSBob3Zlck5hdiBwcmV2TGluayBuZXh0TGluayBsb2FkaW5nIGxvYWRpbmdMaW5rICcgKyANCiAgICAgICAgICAgICAgICAnaW1hZ2VEYXRhQ29udGFpbmVyIGltYWdlRGF0YSBpbWFnZURldGFpbHMgY2FwdGlvbiBudW1iZXJEaXNwbGF5IGJvdHRvbU5hdiBib3R0b21OYXZDbG9zZSc7ICAgDQogICAgICAgICAgICAkdyhpZHMpLmVhY2goZnVuY3Rpb24oaWQpeyB0aFtpZF0gPSAkKGlkKTsgfSk7DQogICAgICAgIH0pLmRlZmVyKCk7DQogICAgfSwNCg0KICAgIC8vDQogICAgLy8gdXBkYXRlSW1hZ2VMaXN0KCkNCiAgICAvLyBMb29wcyB0aHJvdWdoIGFuY2hvciB0YWdzIGxvb2tpbmcgZm9yICdsaWdodGJveCcgcmVmZXJlbmNlcyBhbmQgYXBwbGllcyBvbmNsaWNrDQogICAgLy8gZXZlbnRzIHRvIGFwcHJvcHJpYXRlIGxpbmtzLiBZb3UgY2FuIHJlcnVuIGFmdGVyIGR5bmFtaWNhbGx5IGFkZGluZyBpbWFnZXMgdy9hamF4Lg0KICAgIC8vDQogICAgdXBkYXRlSW1hZ2VMaXN0OiBmdW5jdGlvbigpIHsgICANCiAgICAgICAgdGhpcy51cGRhdGVJbWFnZUxpc3QgPSBQcm90b3R5cGUuZW1wdHlGdW5jdGlvbjsNCg0KICAgICAgICBkb2N1bWVudC5vYnNlcnZlKCdjbGljaycsIChmdW5jdGlvbihldmVudCl7DQogICAgICAgICAgICB2YXIgdGFyZ2V0ID0gZXZlbnQuZmluZEVsZW1lbnQoJ2FbcmVsXj1saWdodGJveF0nKSB8fCBldmVudC5maW5kRWxlbWVudCgnYXJlYVtyZWxePWxpZ2h0Ym94XScpOw0KICAgICAgICAgICAgaWYgKHRhcmdldCkgew0KICAgICAgICAgICAgICAgIGV2ZW50LnN0b3AoKTsNCiAgICAgICAgICAgICAgICB0aGlzLnN0YXJ0KHRhcmdldCk7DQogICAgICAgICAgICB9DQogICAgICAgIH0pLmJpbmQodGhpcykpOw0KICAgIH0sDQogICAgDQogICAgLy8NCiAgICAvLyAgc3RhcnQoKQ0KICAgIC8vICBEaXNwbGF5IG92ZXJsYXkgYW5kIGxpZ2h0Ym94LiBJZiBpbWFnZSBpcyBwYXJ0IG9mIGEgc2V0LCBhZGQgc2libGluZ3MgdG8gaW1hZ2VBcnJheS4NCiAgICAvLw0KICAgIHN0YXJ0OiBmdW5jdGlvbihpbWFnZUxpbmspIHsgICAgDQoNCiAgICAgICAgJCQoJ3NlbGVjdCcsICdvYmplY3QnLCAnZW1iZWQnKS5lYWNoKGZ1bmN0aW9uKG5vZGUpeyBub2RlLnN0eWxlLnZpc2liaWxpdHkgPSAnaGlkZGVuJyB9KTsNCg0KICAgICAgICAvLyBzdHJldGNoIG92ZXJsYXkgdG8gZmlsbCBwYWdlIGFuZCBmYWRlIGluDQogICAgICAgIHZhciBhcnJheVBhZ2VTaXplID0gdGhpcy5nZXRQYWdlU2l6ZSgpOw0KICAgICAgICAkKCdvdmVybGF5Jykuc2V0U3R5bGUoeyB3aWR0aDogYXJyYXlQYWdlU2l6ZVswXSArICdweCcsIGhlaWdodDogYXJyYXlQYWdlU2l6ZVsxXSArICdweCcgfSk7DQoNCiAgICAgICAgbmV3IEVmZmVjdC5BcHBlYXIodGhpcy5vdmVybGF5LCB7IGR1cmF0aW9uOiB0aGlzLm92ZXJsYXlEdXJhdGlvbiwgZnJvbTogMC4wLCB0bzogTGlnaHRib3hPcHRpb25zLm92ZXJsYXlPcGFjaXR5IH0pOw0KDQogICAgICAgIHRoaXMuaW1hZ2VBcnJheSA9IFtdOw0KICAgICAgICB2YXIgaW1hZ2VOdW0gPSAwOyAgICAgICANCg0KICAgICAgICBpZiAoKGltYWdlTGluay5yZWwgPT0gJ2xpZ2h0Ym94Jykpew0KICAgICAgICAgICAgLy8gaWYgaW1hZ2UgaXMgTk9UIHBhcnQgb2YgYSBzZXQsIGFkZCBzaW5nbGUgaW1hZ2UgdG8gaW1hZ2VBcnJheQ0KICAgICAgICAgICAgdGhpcy5pbWFnZUFycmF5LnB1c2goW2ltYWdlTGluay5ocmVmLCBpbWFnZUxpbmsudGl0bGVdKTsgICAgICAgICANCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgIC8vIGlmIGltYWdlIGlzIHBhcnQgb2YgYSBzZXQuLg0KICAgICAgICAgICAgdGhpcy5pbWFnZUFycmF5ID0gDQogICAgICAgICAgICAgICAgJCQoaW1hZ2VMaW5rLnRhZ05hbWUgKyAnW2hyZWZdW3JlbD0iJyArIGltYWdlTGluay5yZWwgKyAnIl0nKS4NCiAgICAgICAgICAgICAgICBjb2xsZWN0KGZ1bmN0aW9uKGFuY2hvcil7IHJldHVybiBbYW5jaG9yLmhyZWYsIGFuY2hvci50aXRsZV07IH0pLg0KICAgICAgICAgICAgICAgIHVuaXEoKTsNCiAgICAgICAgICAgIA0KICAgICAgICAgICAgd2hpbGUgKHRoaXMuaW1hZ2VBcnJheVtpbWFnZU51bV1bMF0gIT0gaW1hZ2VMaW5rLmhyZWYpIHsgaW1hZ2VOdW0rKzsgfQ0KICAgICAgICB9DQoNCiAgICAgICAgLy8gY2FsY3VsYXRlIHRvcCBhbmQgbGVmdCBvZmZzZXQgZm9yIHRoZSBsaWdodGJveCANCiAgICAgICAgdmFyIGFycmF5UGFnZVNjcm9sbCA9IGRvY3VtZW50LnZpZXdwb3J0LmdldFNjcm9sbE9mZnNldHMoKTsNCiAgICAgICAgdmFyIGxpZ2h0Ym94VG9wID0gYXJyYXlQYWdlU2Nyb2xsWzFdICsgKGRvY3VtZW50LnZpZXdwb3J0LmdldEhlaWdodCgpIC8gMTApOw0KICAgICAgICB2YXIgbGlnaHRib3hMZWZ0ID0gYXJyYXlQYWdlU2Nyb2xsWzBdOw0KICAgICAgICB0aGlzLmxpZ2h0Ym94LnNldFN0eWxlKHsgdG9wOiBsaWdodGJveFRvcCArICdweCcsIGxlZnQ6IGxpZ2h0Ym94TGVmdCArICdweCcgfSkuc2hvdygpOw0KICAgICAgICANCiAgICAgICAgdGhpcy5jaGFuZ2VJbWFnZShpbWFnZU51bSk7DQogICAgfSwNCg0KICAgIC8vDQogICAgLy8gIGNoYW5nZUltYWdlKCkNCiAgICAvLyAgSGlkZSBtb3N0IGVsZW1lbnRzIGFuZCBwcmVsb2FkIGltYWdlIGluIHByZXBhcmF0aW9uIGZvciByZXNpemluZyBpbWFnZSBjb250YWluZXIuDQogICAgLy8NCiAgICBjaGFuZ2VJbWFnZTogZnVuY3Rpb24oaW1hZ2VOdW0pIHsgICANCiAgICAgICAgDQogICAgICAgIHRoaXMuYWN0aXZlSW1hZ2UgPSBpbWFnZU51bTsgLy8gdXBkYXRlIGdsb2JhbCB2YXINCg0KICAgICAgICAvLyBoaWRlIGVsZW1lbnRzIGR1cmluZyB0cmFuc2l0aW9uDQogICAgICAgIGlmIChMaWdodGJveE9wdGlvbnMuYW5pbWF0ZSkgdGhpcy5sb2FkaW5nLnNob3coKTsNCiAgICAgICAgdGhpcy5saWdodGJveEltYWdlLmhpZGUoKTsNCiAgICAgICAgdGhpcy5ob3Zlck5hdi5oaWRlKCk7DQogICAgICAgIHRoaXMucHJldkxpbmsuaGlkZSgpOw0KICAgICAgICB0aGlzLm5leHRMaW5rLmhpZGUoKTsNCgkJLy8gSEFDSzogT3BlcmE5IGRvZXMgbm90IGN1cnJlbnRseSBzdXBwb3J0IHNjcmlwdGFjdWxvdXMgb3BhY2l0eSBhbmQgYXBwZWFyIGZ4DQogICAgICAgIHRoaXMuaW1hZ2VEYXRhQ29udGFpbmVyLnNldFN0eWxlKHtvcGFjaXR5OiAuMDAwMX0pOw0KICAgICAgICB0aGlzLm51bWJlckRpc3BsYXkuaGlkZSgpOyAgICAgIA0KICAgICAgICANCiAgICAgICAgdmFyIGltZ1ByZWxvYWRlciA9IG5ldyBJbWFnZSgpOw0KICAgICAgICANCiAgICAgICAgLy8gb25jZSBpbWFnZSBpcyBwcmVsb2FkZWQsIHJlc2l6ZSBpbWFnZSBjb250YWluZXINCg0KDQogICAgICAgIGltZ1ByZWxvYWRlci5vbmxvYWQgPSAoZnVuY3Rpb24oKXsNCiAgICAgICAgICAgIHRoaXMubGlnaHRib3hJbWFnZS5zcmMgPSB0aGlzLmltYWdlQXJyYXlbdGhpcy5hY3RpdmVJbWFnZV1bMF07DQogICAgICAgICAgICB0aGlzLnJlc2l6ZUltYWdlQ29udGFpbmVyKGltZ1ByZWxvYWRlci53aWR0aCwgaW1nUHJlbG9hZGVyLmhlaWdodCk7DQogICAgICAgIH0pLmJpbmQodGhpcyk7DQogICAgICAgIGltZ1ByZWxvYWRlci5zcmMgPSB0aGlzLmltYWdlQXJyYXlbdGhpcy5hY3RpdmVJbWFnZV1bMF07DQogICAgfSwNCg0KICAgIC8vDQogICAgLy8gIHJlc2l6ZUltYWdlQ29udGFpbmVyKCkNCiAgICAvLw0KICAgIHJlc2l6ZUltYWdlQ29udGFpbmVyOiBmdW5jdGlvbihpbWdXaWR0aCwgaW1nSGVpZ2h0KSB7DQoNCiAgICAgICAgLy8gZ2V0IGN1cnJlbnQgd2lkdGggYW5kIGhlaWdodA0KICAgICAgICB2YXIgd2lkdGhDdXJyZW50ICA9IHRoaXMub3V0ZXJJbWFnZUNvbnRhaW5lci5nZXRXaWR0aCgpOw0KICAgICAgICB2YXIgaGVpZ2h0Q3VycmVudCA9IHRoaXMub3V0ZXJJbWFnZUNvbnRhaW5lci5nZXRIZWlnaHQoKTsNCg0KICAgICAgICAvLyBnZXQgbmV3IHdpZHRoIGFuZCBoZWlnaHQNCiAgICAgICAgdmFyIHdpZHRoTmV3ICA9IChpbWdXaWR0aCAgKyBMaWdodGJveE9wdGlvbnMuYm9yZGVyU2l6ZSAqIDIpOw0KICAgICAgICB2YXIgaGVpZ2h0TmV3ID0gKGltZ0hlaWdodCArIExpZ2h0Ym94T3B0aW9ucy5ib3JkZXJTaXplICogMik7DQoNCiAgICAgICAgLy8gc2NhbGFycyBiYXNlZCBvbiBjaGFuZ2UgZnJvbSBvbGQgdG8gbmV3DQogICAgICAgIHZhciB4U2NhbGUgPSAod2lkdGhOZXcgIC8gd2lkdGhDdXJyZW50KSAgKiAxMDA7DQogICAgICAgIHZhciB5U2NhbGUgPSAoaGVpZ2h0TmV3IC8gaGVpZ2h0Q3VycmVudCkgKiAxMDA7DQoNCiAgICAgICAgLy8gY2FsY3VsYXRlIHNpemUgZGlmZmVyZW5jZSBiZXR3ZWVuIG5ldyBhbmQgb2xkIGltYWdlLCBhbmQgcmVzaXplIGlmIG5lY2Vzc2FyeQ0KICAgICAgICB2YXIgd0RpZmYgPSB3aWR0aEN1cnJlbnQgLSB3aWR0aE5ldzsNCiAgICAgICAgdmFyIGhEaWZmID0gaGVpZ2h0Q3VycmVudCAtIGhlaWdodE5ldzsNCg0KICAgICAgICBpZiAoaERpZmYgIT0gMCkgbmV3IEVmZmVjdC5TY2FsZSh0aGlzLm91dGVySW1hZ2VDb250YWluZXIsIHlTY2FsZSwge3NjYWxlWDogZmFsc2UsIGR1cmF0aW9uOiB0aGlzLnJlc2l6ZUR1cmF0aW9uLCBxdWV1ZTogJ2Zyb250J30pOyANCiAgICAgICAgaWYgKHdEaWZmICE9IDApIG5ldyBFZmZlY3QuU2NhbGUodGhpcy5vdXRlckltYWdlQ29udGFpbmVyLCB4U2NhbGUsIHtzY2FsZVk6IGZhbHNlLCBkdXJhdGlvbjogdGhpcy5yZXNpemVEdXJhdGlvbiwgZGVsYXk6IHRoaXMucmVzaXplRHVyYXRpb259KTsgDQoNCiAgICAgICAgLy8gaWYgbmV3IGFuZCBvbGQgaW1hZ2UgYXJlIHNhbWUgc2l6ZSBhbmQgbm8gc2NhbGluZyB0cmFuc2l0aW9uIGlzIG5lY2Vzc2FyeSwgDQogICAgICAgIC8vIGRvIGEgcXVpY2sgcGF1c2UgdG8gcHJldmVudCBpbWFnZSBmbGlja2VyLg0KICAgICAgICB2YXIgdGltZW91dCA9IDA7DQogICAgICAgIGlmICgoaERpZmYgPT0gMCkgJiYgKHdEaWZmID09IDApKXsNCiAgICAgICAgICAgIHRpbWVvdXQgPSAxMDA7DQogICAgICAgICAgICBpZiAoUHJvdG90eXBlLkJyb3dzZXIuSUUpIHRpbWVvdXQgPSAyNTA7ICAgDQogICAgICAgIH0NCg0KICAgICAgICAoZnVuY3Rpb24oKXsNCiAgICAgICAgICAgIHRoaXMucHJldkxpbmsuc2V0U3R5bGUoeyBoZWlnaHQ6IGltZ0hlaWdodCArICdweCcgfSk7DQogICAgICAgICAgICB0aGlzLm5leHRMaW5rLnNldFN0eWxlKHsgaGVpZ2h0OiBpbWdIZWlnaHQgKyAncHgnIH0pOw0KICAgICAgICAgICAgdGhpcy5pbWFnZURhdGFDb250YWluZXIuc2V0U3R5bGUoeyB3aWR0aDogd2lkdGhOZXcgKyAncHgnIH0pOw0KDQogICAgICAgICAgICB0aGlzLnNob3dJbWFnZSgpOw0KICAgICAgICB9KS5iaW5kKHRoaXMpLmRlbGF5KHRpbWVvdXQgLyAxMDAwKTsNCiAgICB9LA0KICAgIA0KICAgIC8vDQogICAgLy8gIHNob3dJbWFnZSgpDQogICAgLy8gIERpc3BsYXkgaW1hZ2UgYW5kIGJlZ2luIHByZWxvYWRpbmcgbmVpZ2hib3JzLg0KICAgIC8vDQogICAgc2hvd0ltYWdlOiBmdW5jdGlvbigpew0KICAgICAgICB0aGlzLmxvYWRpbmcuaGlkZSgpOw0KICAgICAgICBuZXcgRWZmZWN0LkFwcGVhcih0aGlzLmxpZ2h0Ym94SW1hZ2UsIHsgDQogICAgICAgICAgICBkdXJhdGlvbjogdGhpcy5yZXNpemVEdXJhdGlvbiwgDQogICAgICAgICAgICBxdWV1ZTogJ2VuZCcsIA0KICAgICAgICAgICAgYWZ0ZXJGaW5pc2g6IChmdW5jdGlvbigpeyB0aGlzLnVwZGF0ZURldGFpbHMoKTsgfSkuYmluZCh0aGlzKSANCiAgICAgICAgfSk7DQogICAgICAgIHRoaXMucHJlbG9hZE5laWdoYm9ySW1hZ2VzKCk7DQogICAgfSwNCg0KICAgIC8vDQogICAgLy8gIHVwZGF0ZURldGFpbHMoKQ0KICAgIC8vICBEaXNwbGF5IGNhcHRpb24sIGltYWdlIG51bWJlciwgYW5kIGJvdHRvbSBuYXYuDQogICAgLy8NCiAgICB1cGRhdGVEZXRhaWxzOiBmdW5jdGlvbigpIHsNCiAgICANCiAgICAgICAgLy8gaWYgY2FwdGlvbiBpcyBub3QgbnVsbA0KICAgICAgICBpZiAodGhpcy5pbWFnZUFycmF5W3RoaXMuYWN0aXZlSW1hZ2VdWzFdICE9ICIiKXsNCiAgICAgICAgICAgIHRoaXMuY2FwdGlvbi51cGRhdGUodGhpcy5pbWFnZUFycmF5W3RoaXMuYWN0aXZlSW1hZ2VdWzFdKS5zaG93KCk7DQogICAgICAgIH0NCiAgICAgICAgDQogICAgICAgIC8vIGlmIGltYWdlIGlzIHBhcnQgb2Ygc2V0IGRpc3BsYXkgJ0ltYWdlIHggb2YgeCcgDQogICAgICAgIGlmICh0aGlzLmltYWdlQXJyYXkubGVuZ3RoID4gMSl7DQogICAgICAgICAgICB0aGlzLm51bWJlckRpc3BsYXkudXBkYXRlKCBMaWdodGJveE9wdGlvbnMubGFiZWxJbWFnZSArICcgJyArICh0aGlzLmFjdGl2ZUltYWdlICsgMSkgKyAnICcgKyBMaWdodGJveE9wdGlvbnMubGFiZWxPZiArICcgICcgKyB0aGlzLmltYWdlQXJyYXkubGVuZ3RoKS5zaG93KCk7DQogICAgICAgIH0NCg0KICAgICAgICBuZXcgRWZmZWN0LlBhcmFsbGVsKA0KICAgICAgICAgICAgWyANCiAgICAgICAgICAgICAgICBuZXcgRWZmZWN0LlNsaWRlRG93bih0aGlzLmltYWdlRGF0YUNvbnRhaW5lciwgeyBzeW5jOiB0cnVlLCBkdXJhdGlvbjogdGhpcy5yZXNpemVEdXJhdGlvbiwgZnJvbTogMC4wLCB0bzogMS4wIH0pLCANCiAgICAgICAgICAgICAgICBuZXcgRWZmZWN0LkFwcGVhcih0aGlzLmltYWdlRGF0YUNvbnRhaW5lciwgeyBzeW5jOiB0cnVlLCBkdXJhdGlvbjogdGhpcy5yZXNpemVEdXJhdGlvbiB9KSANCiAgICAgICAgICAgIF0sIA0KICAgICAgICAgICAgeyANCiAgICAgICAgICAgICAgICBkdXJhdGlvbjogdGhpcy5yZXNpemVEdXJhdGlvbiwgDQogICAgICAgICAgICAgICAgYWZ0ZXJGaW5pc2g6IChmdW5jdGlvbigpIHsNCgkgICAgICAgICAgICAgICAgLy8gdXBkYXRlIG92ZXJsYXkgc2l6ZSBhbmQgdXBkYXRlIG5hdg0KCSAgICAgICAgICAgICAgICB2YXIgYXJyYXlQYWdlU2l6ZSA9IHRoaXMuZ2V0UGFnZVNpemUoKTsNCgkgICAgICAgICAgICAgICAgdGhpcy5vdmVybGF5LnNldFN0eWxlKHsgaGVpZ2h0OiBhcnJheVBhZ2VTaXplWzFdICsgJ3B4JyB9KTsNCgkgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVOYXYoKTsNCiAgICAgICAgICAgICAgICB9KS5iaW5kKHRoaXMpDQogICAgICAgICAgICB9IA0KICAgICAgICApOw0KICAgIH0sDQoNCiAgICAvLw0KICAgIC8vICB1cGRhdGVOYXYoKQ0KICAgIC8vICBEaXNwbGF5IGFwcHJvcHJpYXRlIHByZXZpb3VzIGFuZCBuZXh0IGhvdmVyIG5hdmlnYXRpb24uDQogICAgLy8NCiAgICB1cGRhdGVOYXY6IGZ1bmN0aW9uKCkgew0KDQogICAgICAgIHRoaXMuaG92ZXJOYXYuc2hvdygpOyAgICAgICAgICAgICAgIA0KDQogICAgICAgIC8vIGlmIG5vdCBmaXJzdCBpbWFnZSBpbiBzZXQsIGRpc3BsYXkgcHJldiBpbWFnZSBidXR0b24NCiAgICAgICAgaWYgKHRoaXMuYWN0aXZlSW1hZ2UgPiAwKSB0aGlzLnByZXZMaW5rLnNob3coKTsNCg0KICAgICAgICAvLyBpZiBub3QgbGFzdCBpbWFnZSBpbiBzZXQsIGRpc3BsYXkgbmV4dCBpbWFnZSBidXR0b24NCiAgICAgICAgaWYgKHRoaXMuYWN0aXZlSW1hZ2UgPCAodGhpcy5pbWFnZUFycmF5Lmxlbmd0aCAtIDEpKSB0aGlzLm5leHRMaW5rLnNob3coKTsNCiAgICAgICAgDQogICAgICAgIHRoaXMuZW5hYmxlS2V5Ym9hcmROYXYoKTsNCiAgICB9LA0KDQogICAgLy8NCiAgICAvLyAgZW5hYmxlS2V5Ym9hcmROYXYoKQ0KICAgIC8vDQogICAgZW5hYmxlS2V5Ym9hcmROYXY6IGZ1bmN0aW9uKCkgew0KICAgICAgICBkb2N1bWVudC5vYnNlcnZlKCdrZXlkb3duJywgdGhpcy5rZXlib2FyZEFjdGlvbik7IA0KICAgIH0sDQoNCiAgICAvLw0KICAgIC8vICBkaXNhYmxlS2V5Ym9hcmROYXYoKQ0KICAgIC8vDQogICAgZGlzYWJsZUtleWJvYXJkTmF2OiBmdW5jdGlvbigpIHsNCiAgICAgICAgZG9jdW1lbnQuc3RvcE9ic2VydmluZygna2V5ZG93bicsIHRoaXMua2V5Ym9hcmRBY3Rpb24pOyANCiAgICB9LA0KDQogICAgLy8NCiAgICAvLyAga2V5Ym9hcmRBY3Rpb24oKQ0KICAgIC8vDQogICAga2V5Ym9hcmRBY3Rpb246IGZ1bmN0aW9uKGV2ZW50KSB7DQogICAgICAgIHZhciBrZXljb2RlID0gZXZlbnQua2V5Q29kZTsNCg0KICAgICAgICB2YXIgZXNjYXBlS2V5Ow0KICAgICAgICBpZiAoZXZlbnQuRE9NX1ZLX0VTQ0FQRSkgeyAgLy8gbW96aWxsYQ0KICAgICAgICAgICAgZXNjYXBlS2V5ID0gZXZlbnQuRE9NX1ZLX0VTQ0FQRTsNCiAgICAgICAgfSBlbHNlIHsgLy8gaWUNCiAgICAgICAgICAgIGVzY2FwZUtleSA9IDI3Ow0KICAgICAgICB9DQoNCiAgICAgICAgdmFyIGtleSA9IFN0cmluZy5mcm9tQ2hhckNvZGUoa2V5Y29kZSkudG9Mb3dlckNhc2UoKTsNCiAgICAgICAgDQogICAgICAgIGlmIChrZXkubWF0Y2goL3h8b3xjLykgfHwgKGtleWNvZGUgPT0gZXNjYXBlS2V5KSl7IC8vIGNsb3NlIGxpZ2h0Ym94DQogICAgICAgICAgICB0aGlzLmVuZCgpOw0KICAgICAgICB9IGVsc2UgaWYgKChrZXkgPT0gJ3AnKSB8fCAoa2V5Y29kZSA9PSAzNykpeyAvLyBkaXNwbGF5IHByZXZpb3VzIGltYWdlDQogICAgICAgICAgICBpZiAodGhpcy5hY3RpdmVJbWFnZSAhPSAwKXsNCiAgICAgICAgICAgICAgICB0aGlzLmRpc2FibGVLZXlib2FyZE5hdigpOw0KICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlSW1hZ2UodGhpcy5hY3RpdmVJbWFnZSAtIDEpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9IGVsc2UgaWYgKChrZXkgPT0gJ24nKSB8fCAoa2V5Y29kZSA9PSAzOSkpeyAvLyBkaXNwbGF5IG5leHQgaW1hZ2UNCiAgICAgICAgICAgIGlmICh0aGlzLmFjdGl2ZUltYWdlICE9ICh0aGlzLmltYWdlQXJyYXkubGVuZ3RoIC0gMSkpew0KICAgICAgICAgICAgICAgIHRoaXMuZGlzYWJsZUtleWJvYXJkTmF2KCk7DQogICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VJbWFnZSh0aGlzLmFjdGl2ZUltYWdlICsgMSk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICB9LA0KDQogICAgLy8NCiAgICAvLyAgcHJlbG9hZE5laWdoYm9ySW1hZ2VzKCkNCiAgICAvLyAgUHJlbG9hZCBwcmV2aW91cyBhbmQgbmV4dCBpbWFnZXMuDQogICAgLy8NCiAgICBwcmVsb2FkTmVpZ2hib3JJbWFnZXM6IGZ1bmN0aW9uKCl7DQogICAgICAgIHZhciBwcmVsb2FkTmV4dEltYWdlLCBwcmVsb2FkUHJldkltYWdlOw0KICAgICAgICBpZiAodGhpcy5pbWFnZUFycmF5Lmxlbmd0aCA+IHRoaXMuYWN0aXZlSW1hZ2UgKyAxKXsNCiAgICAgICAgICAgIHByZWxvYWROZXh0SW1hZ2UgPSBuZXcgSW1hZ2UoKTsNCiAgICAgICAgICAgIHByZWxvYWROZXh0SW1hZ2Uuc3JjID0gdGhpcy5pbWFnZUFycmF5W3RoaXMuYWN0aXZlSW1hZ2UgKyAxXVswXTsNCiAgICAgICAgfQ0KICAgICAgICBpZiAodGhpcy5hY3RpdmVJbWFnZSA+IDApew0KICAgICAgICAgICAgcHJlbG9hZFByZXZJbWFnZSA9IG5ldyBJbWFnZSgpOw0KICAgICAgICAgICAgcHJlbG9hZFByZXZJbWFnZS5zcmMgPSB0aGlzLmltYWdlQXJyYXlbdGhpcy5hY3RpdmVJbWFnZSAtIDFdWzBdOw0KICAgICAgICB9DQogICAgDQogICAgfSwNCg0KICAgIC8vDQogICAgLy8gIGVuZCgpDQogICAgLy8NCiAgICBlbmQ6IGZ1bmN0aW9uKCkgew0KICAgICAgICB0aGlzLmRpc2FibGVLZXlib2FyZE5hdigpOw0KICAgICAgICB0aGlzLmxpZ2h0Ym94LmhpZGUoKTsNCiAgICAgICAgbmV3IEVmZmVjdC5GYWRlKHRoaXMub3ZlcmxheSwgeyBkdXJhdGlvbjogdGhpcy5vdmVybGF5RHVyYXRpb24gfSk7DQogICAgICAgICQkKCdzZWxlY3QnLCAnb2JqZWN0JywgJ2VtYmVkJykuZWFjaChmdW5jdGlvbihub2RlKXsgbm9kZS5zdHlsZS52aXNpYmlsaXR5ID0gJ3Zpc2libGUnIH0pOw0KICAgIH0sDQoNCiAgICAvLw0KICAgIC8vICBnZXRQYWdlU2l6ZSgpDQogICAgLy8NCiAgICBnZXRQYWdlU2l6ZTogZnVuY3Rpb24oKSB7DQoJICAgICAgICANCgkgICAgIHZhciB4U2Nyb2xsLCB5U2Nyb2xsOw0KCQkNCgkJaWYgKHdpbmRvdy5pbm5lckhlaWdodCAmJiB3aW5kb3cuc2Nyb2xsTWF4WSkgewkNCgkJCXhTY3JvbGwgPSB3aW5kb3cuaW5uZXJXaWR0aCArIHdpbmRvdy5zY3JvbGxNYXhYOw0KCQkJeVNjcm9sbCA9IHdpbmRvdy5pbm5lckhlaWdodCArIHdpbmRvdy5zY3JvbGxNYXhZOw0KCQl9IGVsc2UgaWYgKGRvY3VtZW50LmJvZHkuc2Nyb2xsSGVpZ2h0ID4gZG9jdW1lbnQuYm9keS5vZmZzZXRIZWlnaHQpeyAvLyBhbGwgYnV0IEV4cGxvcmVyIE1hYw0KCQkJeFNjcm9sbCA9IGRvY3VtZW50LmJvZHkuc2Nyb2xsV2lkdGg7DQoJCQl5U2Nyb2xsID0gZG9jdW1lbnQuYm9keS5zY3JvbGxIZWlnaHQ7DQoJCX0gZWxzZSB7IC8vIEV4cGxvcmVyIE1hYy4uLndvdWxkIGFsc28gd29yayBpbiBFeHBsb3JlciA2IFN0cmljdCwgTW96aWxsYSBhbmQgU2FmYXJpDQoJCQl4U2Nyb2xsID0gZG9jdW1lbnQuYm9keS5vZmZzZXRXaWR0aDsNCgkJCXlTY3JvbGwgPSBkb2N1bWVudC5ib2R5Lm9mZnNldEhlaWdodDsNCgkJfQ0KCQkNCgkJdmFyIHdpbmRvd1dpZHRoLCB3aW5kb3dIZWlnaHQ7DQoJCQ0KCQlpZiAoc2VsZi5pbm5lckhlaWdodCkgewkvLyBhbGwgZXhjZXB0IEV4cGxvcmVyDQoJCQlpZihkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGgpew0KCQkJCXdpbmRvd1dpZHRoID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoOyANCgkJCX0gZWxzZSB7DQoJCQkJd2luZG93V2lkdGggPSBzZWxmLmlubmVyV2lkdGg7DQoJCQl9DQoJCQl3aW5kb3dIZWlnaHQgPSBzZWxmLmlubmVySGVpZ2h0Ow0KCQl9IGVsc2UgaWYgKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCAmJiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0KSB7IC8vIEV4cGxvcmVyIDYgU3RyaWN0IE1vZGUNCgkJCXdpbmRvd1dpZHRoID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoOw0KCQkJd2luZG93SGVpZ2h0ID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodDsNCgkJfSBlbHNlIGlmIChkb2N1bWVudC5ib2R5KSB7IC8vIG90aGVyIEV4cGxvcmVycw0KCQkJd2luZG93V2lkdGggPSBkb2N1bWVudC5ib2R5LmNsaWVudFdpZHRoOw0KCQkJd2luZG93SGVpZ2h0ID0gZG9jdW1lbnQuYm9keS5jbGllbnRIZWlnaHQ7DQoJCX0JDQoJCQ0KCQkvLyBmb3Igc21hbGwgcGFnZXMgd2l0aCB0b3RhbCBoZWlnaHQgbGVzcyB0aGVuIGhlaWdodCBvZiB0aGUgdmlld3BvcnQNCgkJaWYoeVNjcm9sbCA8IHdpbmRvd0hlaWdodCl7DQoJCQlwYWdlSGVpZ2h0ID0gd2luZG93SGVpZ2h0Ow0KCQl9IGVsc2UgeyANCgkJCXBhZ2VIZWlnaHQgPSB5U2Nyb2xsOw0KCQl9DQoJDQoJCS8vIGZvciBzbWFsbCBwYWdlcyB3aXRoIHRvdGFsIHdpZHRoIGxlc3MgdGhlbiB3aWR0aCBvZiB0aGUgdmlld3BvcnQNCgkJaWYoeFNjcm9sbCA8IHdpbmRvd1dpZHRoKXsJDQoJCQlwYWdlV2lkdGggPSB4U2Nyb2xsOwkJDQoJCX0gZWxzZSB7DQoJCQlwYWdlV2lkdGggPSB3aW5kb3dXaWR0aDsNCgkJfQ0KDQoJCXJldHVybiBbcGFnZVdpZHRoLHBhZ2VIZWlnaHRdOw0KCX0NCn0NCg0KZG9jdW1lbnQub2JzZXJ2ZSgnZG9tOmxvYWRlZCcsIGZ1bmN0aW9uICgpIHsgbmV3IExpZ2h0Ym94KCk7IH0pOw==]]></data>
	</file>
	<file>
	  <filename>/templates/lightbox/js/prototype.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyogIFByb3RvdHlwZSBKYXZhU2NyaXB0IGZyYW1ld29yaywgdmVyc2lvbiAxLjYuMC4yCiAqICAoYykgMjAwNS0yMDA4IFNhbSBTdGVwaGVuc29uCiAqCiAqICBQcm90b3R5cGUgaXMgZnJlZWx5IGRpc3RyaWJ1dGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIGFuIE1JVC1zdHlsZSBsaWNlbnNlLgogKiAgRm9yIGRldGFpbHMsIHNlZSB0aGUgUHJvdG90eXBlIHdlYiBzaXRlOiBodHRwOi8vd3d3LnByb3RvdHlwZWpzLm9yZy8KICoKICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgp2YXIgUHJvdG90eXBlID0gewogIFZlcnNpb246ICcxLjYuMC4yJywKCiAgQnJvd3NlcjogewogICAgSUU6ICAgICAhISh3aW5kb3cuYXR0YWNoRXZlbnQgJiYgIXdpbmRvdy5vcGVyYSksCiAgICBPcGVyYTogICEhd2luZG93Lm9wZXJhLAogICAgV2ViS2l0OiBuYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoJ0FwcGxlV2ViS2l0LycpID4gLTEsCiAgICBHZWNrbzogIG5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZignR2Vja28nKSA+IC0xICYmIG5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZignS0hUTUwnKSA9PSAtMSwKICAgIE1vYmlsZVNhZmFyaTogISFuYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKC9BcHBsZS4qTW9iaWxlLipTYWZhcmkvKQogIH0sCgogIEJyb3dzZXJGZWF0dXJlczogewogICAgWFBhdGg6ICEhZG9jdW1lbnQuZXZhbHVhdGUsCiAgICBFbGVtZW50RXh0ZW5zaW9uczogISF3aW5kb3cuSFRNTEVsZW1lbnQsCiAgICBTcGVjaWZpY0VsZW1lbnRFeHRlbnNpb25zOgogICAgICBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKS5fX3Byb3RvX18gJiYKICAgICAgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JykuX19wcm90b19fICE9PQogICAgICAgIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Zvcm0nKS5fX3Byb3RvX18KICB9LAoKICBTY3JpcHRGcmFnbWVudDogJzxzY3JpcHRbXj5dKj4oW1xcU1xcc10qPyk8XC9zY3JpcHQ+JywKICBKU09ORmlsdGVyOiAvXlwvXCotc2VjdXJlLShbXHNcU10qKVwqXC9ccyokLywKCiAgZW1wdHlGdW5jdGlvbjogZnVuY3Rpb24oKSB7IH0sCiAgSzogZnVuY3Rpb24oeCkgeyByZXR1cm4geCB9Cn07CgppZiAoUHJvdG90eXBlLkJyb3dzZXIuTW9iaWxlU2FmYXJpKQogIFByb3RvdHlwZS5Ccm93c2VyRmVhdHVyZXMuU3BlY2lmaWNFbGVtZW50RXh0ZW5zaW9ucyA9IGZhbHNlOwoKCi8qIEJhc2VkIG9uIEFsZXggQXJuZWxsJ3MgaW5oZXJpdGFuY2UgaW1wbGVtZW50YXRpb24uICovCnZhciBDbGFzcyA9IHsKICBjcmVhdGU6IGZ1bmN0aW9uKCkgewogICAgdmFyIHBhcmVudCA9IG51bGwsIHByb3BlcnRpZXMgPSAkQShhcmd1bWVudHMpOwogICAgaWYgKE9iamVjdC5pc0Z1bmN0aW9uKHByb3BlcnRpZXNbMF0pKQogICAgICBwYXJlbnQgPSBwcm9wZXJ0aWVzLnNoaWZ0KCk7CgogICAgZnVuY3Rpb24ga2xhc3MoKSB7CiAgICAgIHRoaXMuaW5pdGlhbGl6ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwogICAgfQoKICAgIE9iamVjdC5leHRlbmQoa2xhc3MsIENsYXNzLk1ldGhvZHMpOwogICAga2xhc3Muc3VwZXJjbGFzcyA9IHBhcmVudDsKICAgIGtsYXNzLnN1YmNsYXNzZXMgPSBbXTsKCiAgICBpZiAocGFyZW50KSB7CiAgICAgIHZhciBzdWJjbGFzcyA9IGZ1bmN0aW9uKCkgeyB9OwogICAgICBzdWJjbGFzcy5wcm90b3R5cGUgPSBwYXJlbnQucHJvdG90eXBlOwogICAgICBrbGFzcy5wcm90b3R5cGUgPSBuZXcgc3ViY2xhc3M7CiAgICAgIHBhcmVudC5zdWJjbGFzc2VzLnB1c2goa2xhc3MpOwogICAgfQoKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcGVydGllcy5sZW5ndGg7IGkrKykKICAgICAga2xhc3MuYWRkTWV0aG9kcyhwcm9wZXJ0aWVzW2ldKTsKCiAgICBpZiAoIWtsYXNzLnByb3RvdHlwZS5pbml0aWFsaXplKQogICAgICBrbGFzcy5wcm90b3R5cGUuaW5pdGlhbGl6ZSA9IFByb3RvdHlwZS5lbXB0eUZ1bmN0aW9uOwoKICAgIGtsYXNzLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGtsYXNzOwoKICAgIHJldHVybiBrbGFzczsKICB9Cn07CgpDbGFzcy5NZXRob2RzID0gewogIGFkZE1ldGhvZHM6IGZ1bmN0aW9uKHNvdXJjZSkgewogICAgdmFyIGFuY2VzdG9yICAgPSB0aGlzLnN1cGVyY2xhc3MgJiYgdGhpcy5zdXBlcmNsYXNzLnByb3RvdHlwZTsKICAgIHZhciBwcm9wZXJ0aWVzID0gT2JqZWN0LmtleXMoc291cmNlKTsKCiAgICBpZiAoIU9iamVjdC5rZXlzKHsgdG9TdHJpbmc6IHRydWUgfSkubGVuZ3RoKQogICAgICBwcm9wZXJ0aWVzLnB1c2goInRvU3RyaW5nIiwgInZhbHVlT2YiKTsKCiAgICBmb3IgKHZhciBpID0gMCwgbGVuZ3RoID0gcHJvcGVydGllcy5sZW5ndGg7IGkgPCBsZW5ndGg7IGkrKykgewogICAgICB2YXIgcHJvcGVydHkgPSBwcm9wZXJ0aWVzW2ldLCB2YWx1ZSA9IHNvdXJjZVtwcm9wZXJ0eV07CiAgICAgIGlmIChhbmNlc3RvciAmJiBPYmplY3QuaXNGdW5jdGlvbih2YWx1ZSkgJiYKICAgICAgICAgIHZhbHVlLmFyZ3VtZW50TmFtZXMoKS5maXJzdCgpID09ICIkc3VwZXIiKSB7CiAgICAgICAgdmFyIG1ldGhvZCA9IHZhbHVlLCB2YWx1ZSA9IE9iamVjdC5leHRlbmQoKGZ1bmN0aW9uKG0pIHsKICAgICAgICAgIHJldHVybiBmdW5jdGlvbigpIHsgcmV0dXJuIGFuY2VzdG9yW21dLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfTsKICAgICAgICB9KShwcm9wZXJ0eSkud3JhcChtZXRob2QpLCB7CiAgICAgICAgICB2YWx1ZU9mOiAgZnVuY3Rpb24oKSB7IHJldHVybiBtZXRob2QgfSwKICAgICAgICAgIHRvU3RyaW5nOiBmdW5jdGlvbigpIHsgcmV0dXJuIG1ldGhvZC50b1N0cmluZygpIH0KICAgICAgICB9KTsKICAgICAgfQogICAgICB0aGlzLnByb3RvdHlwZVtwcm9wZXJ0eV0gPSB2YWx1ZTsKICAgIH0KCiAgICByZXR1cm4gdGhpczsKICB9Cn07Cgp2YXIgQWJzdHJhY3QgPSB7IH07CgpPYmplY3QuZXh0ZW5kID0gZnVuY3Rpb24oZGVzdGluYXRpb24sIHNvdXJjZSkgewogIGZvciAodmFyIHByb3BlcnR5IGluIHNvdXJjZSkKICAgIGRlc3RpbmF0aW9uW3Byb3BlcnR5XSA9IHNvdXJjZVtwcm9wZXJ0eV07CiAgcmV0dXJuIGRlc3RpbmF0aW9uOwp9OwoKT2JqZWN0LmV4dGVuZChPYmplY3QsIHsKICBpbnNwZWN0OiBmdW5jdGlvbihvYmplY3QpIHsKICAgIHRyeSB7CiAgICAgIGlmIChPYmplY3QuaXNVbmRlZmluZWQob2JqZWN0KSkgcmV0dXJuICd1bmRlZmluZWQnOwogICAgICBpZiAob2JqZWN0ID09PSBudWxsKSByZXR1cm4gJ251bGwnOwogICAgICByZXR1cm4gb2JqZWN0Lmluc3BlY3QgPyBvYmplY3QuaW5zcGVjdCgpIDogU3RyaW5nKG9iamVjdCk7CiAgICB9IGNhdGNoIChlKSB7CiAgICAgIGlmIChlIGluc3RhbmNlb2YgUmFuZ2VFcnJvcikgcmV0dXJuICcuLi4nOwogICAgICB0aHJvdyBlOwogICAgfQogIH0sCgogIHRvSlNPTjogZnVuY3Rpb24ob2JqZWN0KSB7CiAgICB2YXIgdHlwZSA9IHR5cGVvZiBvYmplY3Q7CiAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICAgY2FzZSAndW5kZWZpbmVkJzoKICAgICAgY2FzZSAnZnVuY3Rpb24nOgogICAgICBjYXNlICd1bmtub3duJzogcmV0dXJuOwogICAgICBjYXNlICdib29sZWFuJzogcmV0dXJuIG9iamVjdC50b1N0cmluZygpOwogICAgfQoKICAgIGlmIChvYmplY3QgPT09IG51bGwpIHJldHVybiAnbnVsbCc7CiAgICBpZiAob2JqZWN0LnRvSlNPTikgcmV0dXJuIG9iamVjdC50b0pTT04oKTsKICAgIGlmIChPYmplY3QuaXNFbGVtZW50KG9iamVjdCkpIHJldHVybjsKCiAgICB2YXIgcmVzdWx0cyA9IFtdOwogICAgZm9yICh2YXIgcHJvcGVydHkgaW4gb2JqZWN0KSB7CiAgICAgIHZhciB2YWx1ZSA9IE9iamVjdC50b0pTT04ob2JqZWN0W3Byb3BlcnR5XSk7CiAgICAgIGlmICghT2JqZWN0LmlzVW5kZWZpbmVkKHZhbHVlKSkKICAgICAgICByZXN1bHRzLnB1c2gocHJvcGVydHkudG9KU09OKCkgKyAnOiAnICsgdmFsdWUpOwogICAgfQoKICAgIHJldHVybiAneycgKyByZXN1bHRzLmpvaW4oJywgJykgKyAnfSc7CiAgfSwKCiAgdG9RdWVyeVN0cmluZzogZnVuY3Rpb24ob2JqZWN0KSB7CiAgICByZXR1cm4gJEgob2JqZWN0KS50b1F1ZXJ5U3RyaW5nKCk7CiAgfSwKCiAgdG9IVE1MOiBmdW5jdGlvbihvYmplY3QpIHsKICAgIHJldHVybiBvYmplY3QgJiYgb2JqZWN0LnRvSFRNTCA/IG9iamVjdC50b0hUTUwoKSA6IFN0cmluZy5pbnRlcnByZXQob2JqZWN0KTsKICB9LAoKICBrZXlzOiBmdW5jdGlvbihvYmplY3QpIHsKICAgIHZhciBrZXlzID0gW107CiAgICBmb3IgKHZhciBwcm9wZXJ0eSBpbiBvYmplY3QpCiAgICAgIGtleXMucHVzaChwcm9wZXJ0eSk7CiAgICByZXR1cm4ga2V5czsKICB9LAoKICB2YWx1ZXM6IGZ1bmN0aW9uKG9iamVjdCkgewogICAgdmFyIHZhbHVlcyA9IFtdOwogICAgZm9yICh2YXIgcHJvcGVydHkgaW4gb2JqZWN0KQogICAgICB2YWx1ZXMucHVzaChvYmplY3RbcHJvcGVydHldKTsKICAgIHJldHVybiB2YWx1ZXM7CiAgfSwKCiAgY2xvbmU6IGZ1bmN0aW9uKG9iamVjdCkgewogICAgcmV0dXJuIE9iamVjdC5leHRlbmQoeyB9LCBvYmplY3QpOwogIH0sCgogIGlzRWxlbWVudDogZnVuY3Rpb24ob2JqZWN0KSB7CiAgICByZXR1cm4gb2JqZWN0ICYmIG9iamVjdC5ub2RlVHlwZSA9PSAxOwogIH0sCgogIGlzQXJyYXk6IGZ1bmN0aW9uKG9iamVjdCkgewogICAgcmV0dXJuIG9iamVjdCAhPSBudWxsICYmIHR5cGVvZiBvYmplY3QgPT0gIm9iamVjdCIgJiYKICAgICAgJ3NwbGljZScgaW4gb2JqZWN0ICYmICdqb2luJyBpbiBvYmplY3Q7CiAgfSwKCiAgaXNIYXNoOiBmdW5jdGlvbihvYmplY3QpIHsKICAgIHJldHVybiBvYmplY3QgaW5zdGFuY2VvZiBIYXNoOwogIH0sCgogIGlzRnVuY3Rpb246IGZ1bmN0aW9uKG9iamVjdCkgewogICAgcmV0dXJuIHR5cGVvZiBvYmplY3QgPT0gImZ1bmN0aW9uIjsKICB9LAoKICBpc1N0cmluZzogZnVuY3Rpb24ob2JqZWN0KSB7CiAgICByZXR1cm4gdHlwZW9mIG9iamVjdCA9PSAic3RyaW5nIjsKICB9LAoKICBpc051bWJlcjogZnVuY3Rpb24ob2JqZWN0KSB7CiAgICByZXR1cm4gdHlwZW9mIG9iamVjdCA9PSAibnVtYmVyIjsKICB9LAoKICBpc1VuZGVmaW5lZDogZnVuY3Rpb24ob2JqZWN0KSB7CiAgICByZXR1cm4gdHlwZW9mIG9iamVjdCA9PSAidW5kZWZpbmVkIjsKICB9Cn0pOwoKT2JqZWN0LmV4dGVuZChGdW5jdGlvbi5wcm90b3R5cGUsIHsKICBhcmd1bWVudE5hbWVzOiBmdW5jdGlvbigpIHsKICAgIHZhciBuYW1lcyA9IHRoaXMudG9TdHJpbmcoKS5tYXRjaCgvXltcc1woXSpmdW5jdGlvblteKF0qXCgoLio/KVwpLylbMV0uc3BsaXQoIiwiKS5pbnZva2UoInN0cmlwIik7CiAgICByZXR1cm4gbmFtZXMubGVuZ3RoID09IDEgJiYgIW5hbWVzWzBdID8gW10gOiBuYW1lczsKICB9LAoKICBiaW5kOiBmdW5jdGlvbigpIHsKICAgIGlmIChhcmd1bWVudHMubGVuZ3RoIDwgMiAmJiBPYmplY3QuaXNVbmRlZmluZWQoYXJndW1lbnRzWzBdKSkgcmV0dXJuIHRoaXM7CiAgICB2YXIgX19tZXRob2QgPSB0aGlzLCBhcmdzID0gJEEoYXJndW1lbnRzKSwgb2JqZWN0ID0gYXJncy5zaGlmdCgpOwogICAgcmV0dXJuIGZ1bmN0aW9uKCkgewogICAgICByZXR1cm4gX19tZXRob2QuYXBwbHkob2JqZWN0LCBhcmdzLmNvbmNhdCgkQShhcmd1bWVudHMpKSk7CiAgICB9CiAgfSwKCiAgYmluZEFzRXZlbnRMaXN0ZW5lcjogZnVuY3Rpb24oKSB7CiAgICB2YXIgX19tZXRob2QgPSB0aGlzLCBhcmdzID0gJEEoYXJndW1lbnRzKSwgb2JqZWN0ID0gYXJncy5zaGlmdCgpOwogICAgcmV0dXJuIGZ1bmN0aW9uKGV2ZW50KSB7CiAgICAgIHJldHVybiBfX21ldGhvZC5hcHBseShvYmplY3QsIFtldmVudCB8fCB3aW5kb3cuZXZlbnRdLmNvbmNhdChhcmdzKSk7CiAgICB9CiAgfSwKCiAgY3Vycnk6IGZ1bmN0aW9uKCkgewogICAgaWYgKCFhcmd1bWVudHMubGVuZ3RoKSByZXR1cm4gdGhpczsKICAgIHZhciBfX21ldGhvZCA9IHRoaXMsIGFyZ3MgPSAkQShhcmd1bWVudHMpOwogICAgcmV0dXJuIGZ1bmN0aW9uKCkgewogICAgICByZXR1cm4gX19tZXRob2QuYXBwbHkodGhpcywgYXJncy5jb25jYXQoJEEoYXJndW1lbnRzKSkpOwogICAgfQogIH0sCgogIGRlbGF5OiBmdW5jdGlvbigpIHsKICAgIHZhciBfX21ldGhvZCA9IHRoaXMsIGFyZ3MgPSAkQShhcmd1bWVudHMpLCB0aW1lb3V0ID0gYXJncy5zaGlmdCgpICogMTAwMDsKICAgIHJldHVybiB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgcmV0dXJuIF9fbWV0aG9kLmFwcGx5KF9fbWV0aG9kLCBhcmdzKTsKICAgIH0sIHRpbWVvdXQpOwogIH0sCgogIHdyYXA6IGZ1bmN0aW9uKHdyYXBwZXIpIHsKICAgIHZhciBfX21ldGhvZCA9IHRoaXM7CiAgICByZXR1cm4gZnVuY3Rpb24oKSB7CiAgICAgIHJldHVybiB3cmFwcGVyLmFwcGx5KHRoaXMsIFtfX21ldGhvZC5iaW5kKHRoaXMpXS5jb25jYXQoJEEoYXJndW1lbnRzKSkpOwogICAgfQogIH0sCgogIG1ldGhvZGl6ZTogZnVuY3Rpb24oKSB7CiAgICBpZiAodGhpcy5fbWV0aG9kaXplZCkgcmV0dXJuIHRoaXMuX21ldGhvZGl6ZWQ7CiAgICB2YXIgX19tZXRob2QgPSB0aGlzOwogICAgcmV0dXJuIHRoaXMuX21ldGhvZGl6ZWQgPSBmdW5jdGlvbigpIHsKICAgICAgcmV0dXJuIF9fbWV0aG9kLmFwcGx5KG51bGwsIFt0aGlzXS5jb25jYXQoJEEoYXJndW1lbnRzKSkpOwogICAgfTsKICB9Cn0pOwoKRnVuY3Rpb24ucHJvdG90eXBlLmRlZmVyID0gRnVuY3Rpb24ucHJvdG90eXBlLmRlbGF5LmN1cnJ5KDAuMDEpOwoKRGF0ZS5wcm90b3R5cGUudG9KU09OID0gZnVuY3Rpb24oKSB7CiAgcmV0dXJuICciJyArIHRoaXMuZ2V0VVRDRnVsbFllYXIoKSArICctJyArCiAgICAodGhpcy5nZXRVVENNb250aCgpICsgMSkudG9QYWRkZWRTdHJpbmcoMikgKyAnLScgKwogICAgdGhpcy5nZXRVVENEYXRlKCkudG9QYWRkZWRTdHJpbmcoMikgKyAnVCcgKwogICAgdGhpcy5nZXRVVENIb3VycygpLnRvUGFkZGVkU3RyaW5nKDIpICsgJzonICsKICAgIHRoaXMuZ2V0VVRDTWludXRlcygpLnRvUGFkZGVkU3RyaW5nKDIpICsgJzonICsKICAgIHRoaXMuZ2V0VVRDU2Vjb25kcygpLnRvUGFkZGVkU3RyaW5nKDIpICsgJ1oiJzsKfTsKCnZhciBUcnkgPSB7CiAgdGhlc2U6IGZ1bmN0aW9uKCkgewogICAgdmFyIHJldHVyblZhbHVlOwoKICAgIGZvciAodmFyIGkgPSAwLCBsZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbGVuZ3RoOyBpKyspIHsKICAgICAgdmFyIGxhbWJkYSA9IGFyZ3VtZW50c1tpXTsKICAgICAgdHJ5IHsKICAgICAgICByZXR1cm5WYWx1ZSA9IGxhbWJkYSgpOwogICAgICAgIGJyZWFrOwogICAgICB9IGNhdGNoIChlKSB7IH0KICAgIH0KCiAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiAgfQp9OwoKUmVnRXhwLnByb3RvdHlwZS5tYXRjaCA9IFJlZ0V4cC5wcm90b3R5cGUudGVzdDsKClJlZ0V4cC5lc2NhcGUgPSBmdW5jdGlvbihzdHIpIHsKICByZXR1cm4gU3RyaW5nKHN0cikucmVwbGFjZSgvKFsuKis/Xj0hOiR7fSgpfFtcXVwvXFxdKS9nLCAnXFwkMScpOwp9OwoKLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgp2YXIgUGVyaW9kaWNhbEV4ZWN1dGVyID0gQ2xhc3MuY3JlYXRlKHsKICBpbml0aWFsaXplOiBmdW5jdGlvbihjYWxsYmFjaywgZnJlcXVlbmN5KSB7CiAgICB0aGlzLmNhbGxiYWNrID0gY2FsbGJhY2s7CiAgICB0aGlzLmZyZXF1ZW5jeSA9IGZyZXF1ZW5jeTsKICAgIHRoaXMuY3VycmVudGx5RXhlY3V0aW5nID0gZmFsc2U7CgogICAgdGhpcy5yZWdpc3RlckNhbGxiYWNrKCk7CiAgfSwKCiAgcmVnaXN0ZXJDYWxsYmFjazogZnVuY3Rpb24oKSB7CiAgICB0aGlzLnRpbWVyID0gc2V0SW50ZXJ2YWwodGhpcy5vblRpbWVyRXZlbnQuYmluZCh0aGlzKSwgdGhpcy5mcmVxdWVuY3kgKiAxMDAwKTsKICB9LAoKICBleGVjdXRlOiBmdW5jdGlvbigpIHsKICAgIHRoaXMuY2FsbGJhY2sodGhpcyk7CiAgfSwKCiAgc3RvcDogZnVuY3Rpb24oKSB7CiAgICBpZiAoIXRoaXMudGltZXIpIHJldHVybjsKICAgIGNsZWFySW50ZXJ2YWwodGhpcy50aW1lcik7CiAgICB0aGlzLnRpbWVyID0gbnVsbDsKICB9LAoKICBvblRpbWVyRXZlbnQ6IGZ1bmN0aW9uKCkgewogICAgaWYgKCF0aGlzLmN1cnJlbnRseUV4ZWN1dGluZykgewogICAgICB0cnkgewogICAgICAgIHRoaXMuY3VycmVudGx5RXhlY3V0aW5nID0gdHJ1ZTsKICAgICAgICB0aGlzLmV4ZWN1dGUoKTsKICAgICAgfSBmaW5hbGx5IHsKICAgICAgICB0aGlzLmN1cnJlbnRseUV4ZWN1dGluZyA9IGZhbHNlOwogICAgICB9CiAgICB9CiAgfQp9KTsKT2JqZWN0LmV4dGVuZChTdHJpbmcsIHsKICBpbnRlcnByZXQ6IGZ1bmN0aW9uKHZhbHVlKSB7CiAgICByZXR1cm4gdmFsdWUgPT0gbnVsbCA/ICcnIDogU3RyaW5nKHZhbHVlKTsKICB9LAogIHNwZWNpYWxDaGFyOiB7CiAgICAnXGInOiAnXFxiJywKICAgICdcdCc6ICdcXHQnLAogICAgJ1xuJzogJ1xcbicsCiAgICAnXGYnOiAnXFxmJywKICAgICdccic6ICdcXHInLAogICAgJ1xcJzogJ1xcXFwnCiAgfQp9KTsKCk9iamVjdC5leHRlbmQoU3RyaW5nLnByb3RvdHlwZSwgewogIGdzdWI6IGZ1bmN0aW9uKHBhdHRlcm4sIHJlcGxhY2VtZW50KSB7CiAgICB2YXIgcmVzdWx0ID0gJycsIHNvdXJjZSA9IHRoaXMsIG1hdGNoOwogICAgcmVwbGFjZW1lbnQgPSBhcmd1bWVudHMuY2FsbGVlLnByZXBhcmVSZXBsYWNlbWVudChyZXBsYWNlbWVudCk7CgogICAgd2hpbGUgKHNvdXJjZS5sZW5ndGggPiAwKSB7CiAgICAgIGlmIChtYXRjaCA9IHNvdXJjZS5tYXRjaChwYXR0ZXJuKSkgewogICAgICAgIHJlc3VsdCArPSBzb3VyY2Uuc2xpY2UoMCwgbWF0Y2guaW5kZXgpOwogICAgICAgIHJlc3VsdCArPSBTdHJpbmcuaW50ZXJwcmV0KHJlcGxhY2VtZW50KG1hdGNoKSk7CiAgICAgICAgc291cmNlICA9IHNvdXJjZS5zbGljZShtYXRjaC5pbmRleCArIG1hdGNoWzBdLmxlbmd0aCk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmVzdWx0ICs9IHNvdXJjZSwgc291cmNlID0gJyc7CiAgICAgIH0KICAgIH0KICAgIHJldHVybiByZXN1bHQ7CiAgfSwKCiAgc3ViOiBmdW5jdGlvbihwYXR0ZXJuLCByZXBsYWNlbWVudCwgY291bnQpIHsKICAgIHJlcGxhY2VtZW50ID0gdGhpcy5nc3ViLnByZXBhcmVSZXBsYWNlbWVudChyZXBsYWNlbWVudCk7CiAgICBjb3VudCA9IE9iamVjdC5pc1VuZGVmaW5lZChjb3VudCkgPyAxIDogY291bnQ7CgogICAgcmV0dXJuIHRoaXMuZ3N1YihwYXR0ZXJuLCBmdW5jdGlvbihtYXRjaCkgewogICAgICBpZiAoLS1jb3VudCA8IDApIHJldHVybiBtYXRjaFswXTsKICAgICAgcmV0dXJuIHJlcGxhY2VtZW50KG1hdGNoKTsKICAgIH0pOwogIH0sCgogIHNjYW46IGZ1bmN0aW9uKHBhdHRlcm4sIGl0ZXJhdG9yKSB7CiAgICB0aGlzLmdzdWIocGF0dGVybiwgaXRlcmF0b3IpOwogICAgcmV0dXJuIFN0cmluZyh0aGlzKTsKICB9LAoKICB0cnVuY2F0ZTogZnVuY3Rpb24obGVuZ3RoLCB0cnVuY2F0aW9uKSB7CiAgICBsZW5ndGggPSBsZW5ndGggfHwgMzA7CiAgICB0cnVuY2F0aW9uID0gT2JqZWN0LmlzVW5kZWZpbmVkKHRydW5jYXRpb24pID8gJy4uLicgOiB0cnVuY2F0aW9uOwogICAgcmV0dXJuIHRoaXMubGVuZ3RoID4gbGVuZ3RoID8KICAgICAgdGhpcy5zbGljZSgwLCBsZW5ndGggLSB0cnVuY2F0aW9uLmxlbmd0aCkgKyB0cnVuY2F0aW9uIDogU3RyaW5nKHRoaXMpOwogIH0sCgogIHN0cmlwOiBmdW5jdGlvbigpIHsKICAgIHJldHVybiB0aGlzLnJlcGxhY2UoL15ccysvLCAnJykucmVwbGFjZSgvXHMrJC8sICcnKTsKICB9LAoKICBzdHJpcFRhZ3M6IGZ1bmN0aW9uKCkgewogICAgcmV0dXJuIHRoaXMucmVwbGFjZSgvPFwvP1tePl0rPi9naSwgJycpOwogIH0sCgogIHN0cmlwU2NyaXB0czogZnVuY3Rpb24oKSB7CiAgICByZXR1cm4gdGhpcy5yZXBsYWNlKG5ldyBSZWdFeHAoUHJvdG90eXBlLlNjcmlwdEZyYWdtZW50LCAnaW1nJyksICcnKTsKICB9LAoKICBleHRyYWN0U2NyaXB0czogZnVuY3Rpb24oKSB7CiAgICB2YXIgbWF0Y2hBbGwgPSBuZXcgUmVnRXhwKFByb3RvdHlwZS5TY3JpcHRGcmFnbWVudCwgJ2ltZycpOwogICAgdmFyIG1hdGNoT25lID0gbmV3IFJlZ0V4cChQcm90b3R5cGUuU2NyaXB0RnJhZ21lbnQsICdpbScpOwogICAgcmV0dXJuICh0aGlzLm1hdGNoKG1hdGNoQWxsKSB8fCBbXSkubWFwKGZ1bmN0aW9uKHNjcmlwdFRhZykgewogICAgICByZXR1cm4gKHNjcmlwdFRhZy5tYXRjaChtYXRjaE9uZSkgfHwgWycnLCAnJ10pWzFdOwogICAgfSk7CiAgfSwKCiAgZXZhbFNjcmlwdHM6IGZ1bmN0aW9uKCkgewogICAgcmV0dXJuIHRoaXMuZXh0cmFjdFNjcmlwdHMoKS5tYXAoZnVuY3Rpb24oc2NyaXB0KSB7IHJldHVybiBldmFsKHNjcmlwdCkgfSk7CiAgfSwKCiAgZXNjYXBlSFRNTDogZnVuY3Rpb24oKSB7CiAgICB2YXIgc2VsZiA9IGFyZ3VtZW50cy5jYWxsZWU7CiAgICBzZWxmLnRleHQuZGF0YSA9IHRoaXM7CiAgICByZXR1cm4gc2VsZi5kaXYuaW5uZXJIVE1MOwogIH0sCgogIHVuZXNjYXBlSFRNTDogZnVuY3Rpb24oKSB7CiAgICB2YXIgZGl2ID0gbmV3IEVsZW1lbnQoJ2RpdicpOwogICAgZGl2LmlubmVySFRNTCA9IHRoaXMuc3RyaXBUYWdzKCk7CiAgICByZXR1cm4gZGl2LmNoaWxkTm9kZXNbMF0gPyAoZGl2LmNoaWxkTm9kZXMubGVuZ3RoID4gMSA/CiAgICAgICRBKGRpdi5jaGlsZE5vZGVzKS5pbmplY3QoJycsIGZ1bmN0aW9uKG1lbW8sIG5vZGUpIHsgcmV0dXJuIG1lbW8rbm9kZS5ub2RlVmFsdWUgfSkgOgogICAgICBkaXYuY2hpbGROb2Rlc1swXS5ub2RlVmFsdWUpIDogJyc7CiAgfSwKCiAgdG9RdWVyeVBhcmFtczogZnVuY3Rpb24oc2VwYXJhdG9yKSB7CiAgICB2YXIgbWF0Y2ggPSB0aGlzLnN0cmlwKCkubWF0Y2goLyhbXj8jXSopKCMuKik/JC8pOwogICAgaWYgKCFtYXRjaCkgcmV0dXJuIHsgfTsKCiAgICByZXR1cm4gbWF0Y2hbMV0uc3BsaXQoc2VwYXJhdG9yIHx8ICcmJykuaW5qZWN0KHsgfSwgZnVuY3Rpb24oaGFzaCwgcGFpcikgewogICAgICBpZiAoKHBhaXIgPSBwYWlyLnNwbGl0KCc9JykpWzBdKSB7CiAgICAgICAgdmFyIGtleSA9IGRlY29kZVVSSUNvbXBvbmVudChwYWlyLnNoaWZ0KCkpOwogICAgICAgIHZhciB2YWx1ZSA9IHBhaXIubGVuZ3RoID4gMSA/IHBhaXIuam9pbignPScpIDogcGFpclswXTsKICAgICAgICBpZiAodmFsdWUgIT0gdW5kZWZpbmVkKSB2YWx1ZSA9IGRlY29kZVVSSUNvbXBvbmVudCh2YWx1ZSk7CgogICAgICAgIGlmIChrZXkgaW4gaGFzaCkgewogICAgICAgICAgaWYgKCFPYmplY3QuaXNBcnJheShoYXNoW2tleV0pKSBoYXNoW2tleV0gPSBbaGFzaFtrZXldXTsKICAgICAgICAgIGhhc2hba2V5XS5wdXNoKHZhbHVlKTsKICAgICAgICB9CiAgICAgICAgZWxzZSBoYXNoW2tleV0gPSB2YWx1ZTsKICAgICAgfQogICAgICByZXR1cm4gaGFzaDsKICAgIH0pOwogIH0sCgogIHRvQXJyYXk6IGZ1bmN0aW9uKCkgewogICAgcmV0dXJuIHRoaXMuc3BsaXQoJycpOwogIH0sCgogIHN1Y2M6IGZ1bmN0aW9uKCkgewogICAgcmV0dXJuIHRoaXMuc2xpY2UoMCwgdGhpcy5sZW5ndGggLSAxKSArCiAgICAgIFN0cmluZy5mcm9tQ2hhckNvZGUodGhpcy5jaGFyQ29kZUF0KHRoaXMubGVuZ3RoIC0gMSkgKyAxKTsKICB9LAoKICB0aW1lczogZnVuY3Rpb24oY291bnQpIHsKICAgIHJldHVybiBjb3VudCA8IDEgPyAnJyA6IG5ldyBBcnJheShjb3VudCArIDEpLmpvaW4odGhpcyk7CiAgfSwKCiAgY2FtZWxpemU6IGZ1bmN0aW9uKCkgewogICAgdmFyIHBhcnRzID0gdGhpcy5zcGxpdCgnLScpLCBsZW4gPSBwYXJ0cy5sZW5ndGg7CiAgICBpZiAobGVuID09IDEpIHJldHVybiBwYXJ0c1swXTsKCiAgICB2YXIgY2FtZWxpemVkID0gdGhpcy5jaGFyQXQoMCkgPT0gJy0nCiAgICAgID8gcGFydHNbMF0uY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBwYXJ0c1swXS5zdWJzdHJpbmcoMSkKICAgICAgOiBwYXJ0c1swXTsKCiAgICBmb3IgKHZhciBpID0gMTsgaSA8IGxlbjsgaSsrKQogICAgICBjYW1lbGl6ZWQgKz0gcGFydHNbaV0uY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBwYXJ0c1tpXS5zdWJzdHJpbmcoMSk7CgogICAgcmV0dXJuIGNhbWVsaXplZDsKICB9LAoKICBjYXBpdGFsaXplOiBmdW5jdGlvbigpIHsKICAgIHJldHVybiB0aGlzLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgdGhpcy5zdWJzdHJpbmcoMSkudG9Mb3dlckNhc2UoKTsKICB9LAoKICB1bmRlcnNjb3JlOiBmdW5jdGlvbigpIHsKICAgIHJldHVybiB0aGlzLmdzdWIoLzo6LywgJy8nKS5nc3ViKC8oW0EtWl0rKShbQS1aXVthLXpdKS8sJyN7MX1fI3syfScpLmdzdWIoLyhbYS16XGRdKShbQS1aXSkvLCcjezF9XyN7Mn0nKS5nc3ViKC8tLywnXycpLnRvTG93ZXJDYXNlKCk7CiAgfSwKCiAgZGFzaGVyaXplOiBmdW5jdGlvbigpIHsKICAgIHJldHVybiB0aGlzLmdzdWIoL18vLCctJyk7CiAgfSwKCiAgaW5zcGVjdDogZnVuY3Rpb24odXNlRG91YmxlUXVvdGVzKSB7CiAgICB2YXIgZXNjYXBlZFN0cmluZyA9IHRoaXMuZ3N1YigvW1x4MDAtXHgxZlxcXS8sIGZ1bmN0aW9uKG1hdGNoKSB7CiAgICAgIHZhciBjaGFyYWN0ZXIgPSBTdHJpbmcuc3BlY2lhbENoYXJbbWF0Y2hbMF1dOwogICAgICByZXR1cm4gY2hhcmFjdGVyID8gY2hhcmFjdGVyIDogJ1xcdTAwJyArIG1hdGNoWzBdLmNoYXJDb2RlQXQoKS50b1BhZGRlZFN0cmluZygyLCAxNik7CiAgICB9KTsKICAgIGlmICh1c2VEb3VibGVRdW90ZXMpIHJldHVybiAnIicgKyBlc2NhcGVkU3RyaW5nLnJlcGxhY2UoLyIvZywgJ1xcIicpICsgJyInOwogICAgcmV0dXJuICInIiArIGVzY2FwZWRTdHJpbmcucmVwbGFjZSgvJy9nLCAnXFxcJycpICsgIiciOwogIH0sCgogIHRvSlNPTjogZnVuY3Rpb24oKSB7CiAgICByZXR1cm4gdGhpcy5pbnNwZWN0KHRydWUpOwogIH0sCgogIHVuZmlsdGVySlNPTjogZnVuY3Rpb24oZmlsdGVyKSB7CiAgICByZXR1cm4gdGhpcy5zdWIoZmlsdGVyIHx8IFByb3RvdHlwZS5KU09ORmlsdGVyLCAnI3sxfScpOwogIH0sCgogIGlzSlNPTjogZnVuY3Rpb24oKSB7CiAgICB2YXIgc3RyID0gdGhpczsKICAgIGlmIChzdHIuYmxhbmsoKSkgcmV0dXJuIGZhbHNlOwogICAgc3RyID0gdGhpcy5yZXBsYWNlKC9cXC4vZywgJ0AnKS5yZXBsYWNlKC8iW14iXFxcblxyXSoiL2csICcnKTsKICAgIHJldHVybiAoL15bLDp7fVxbXF0wLTkuXC0rRWFlZmxuci11IFxuXHJcdF0qJC8pLnRlc3Qoc3RyKTsKICB9LAoKICBldmFsSlNPTjogZnVuY3Rpb24oc2FuaXRpemUpIHsKICAgIHZhciBqc29uID0gdGhpcy51bmZpbHRlckpTT04oKTsKICAgIHRyeSB7CiAgICAgIGlmICghc2FuaXRpemUgfHwganNvbi5pc0pTT04oKSkgcmV0dXJuIGV2YWwoJygnICsganNvbiArICcpJyk7CiAgICB9IGNhdGNoIChlKSB7IH0KICAgIHRocm93IG5ldyBTeW50YXhFcnJvcignQmFkbHkgZm9ybWVkIEpTT04gc3RyaW5nOiAnICsgdGhpcy5pbnNwZWN0KCkpOwogIH0sCgogIGluY2x1ZGU6IGZ1bmN0aW9uKHBhdHRlcm4pIHsKICAgIHJldHVybiB0aGlzLmluZGV4T2YocGF0dGVybikgPiAtMTsKICB9LAoKICBzdGFydHNXaXRoOiBmdW5jdGlvbihwYXR0ZXJuKSB7CiAgICByZXR1cm4gdGhpcy5pbmRleE9mKHBhdHRlcm4pID09PSAwOwogIH0sCgogIGVuZHNXaXRoOiBmdW5jdGlvbihwYXR0ZXJuKSB7CiAgICB2YXIgZCA9IHRoaXMubGVuZ3RoIC0gcGF0dGVybi5sZW5ndGg7CiAgICByZXR1cm4gZCA+PSAwICYmIHRoaXMubGFzdEluZGV4T2YocGF0dGVybikgPT09IGQ7CiAgfSwKCiAgZW1wdHk6IGZ1bmN0aW9uKCkgewogICAgcmV0dXJuIHRoaXMgPT0gJyc7CiAgfSwKCiAgYmxhbms6IGZ1bmN0aW9uKCkgewogICAgcmV0dXJuIC9eXHMqJC8udGVzdCh0aGlzKTsKICB9LAoKICBpbnRlcnBvbGF0ZTogZnVuY3Rpb24ob2JqZWN0LCBwYXR0ZXJuKSB7CiAgICByZXR1cm4gbmV3IFRlbXBsYXRlKHRoaXMsIHBhdHRlcm4pLmV2YWx1YXRlKG9iamVjdCk7CiAgfQp9KTsKCmlmIChQcm90b3R5cGUuQnJvd3Nlci5XZWJLaXQgfHwgUHJvdG90eXBlLkJyb3dzZXIuSUUpIE9iamVjdC5leHRlbmQoU3RyaW5nLnByb3RvdHlwZSwgewogIGVzY2FwZUhUTUw6IGZ1bmN0aW9uKCkgewogICAgcmV0dXJuIHRoaXMucmVwbGFjZSgvJi9nLCcmYW1wOycpLnJlcGxhY2UoLzwvZywnJmx0OycpLnJlcGxhY2UoLz4vZywnJmd0OycpOwogIH0sCiAgdW5lc2NhcGVIVE1MOiBmdW5jdGlvbigpIHsKICAgIHJldHVybiB0aGlzLnJlcGxhY2UoLyZhbXA7L2csJyYnKS5yZXBsYWNlKC8mbHQ7L2csJzwnKS5yZXBsYWNlKC8mZ3Q7L2csJz4nKTsKICB9Cn0pOwoKU3RyaW5nLnByb3RvdHlwZS5nc3ViLnByZXBhcmVSZXBsYWNlbWVudCA9IGZ1bmN0aW9uKHJlcGxhY2VtZW50KSB7CiAgaWYgKE9iamVjdC5pc0Z1bmN0aW9uKHJlcGxhY2VtZW50KSkgcmV0dXJuIHJlcGxhY2VtZW50OwogIHZhciB0ZW1wbGF0ZSA9IG5ldyBUZW1wbGF0ZShyZXBsYWNlbWVudCk7CiAgcmV0dXJuIGZ1bmN0aW9uKG1hdGNoKSB7IHJldHVybiB0ZW1wbGF0ZS5ldmFsdWF0ZShtYXRjaCkgfTsKfTsKClN0cmluZy5wcm90b3R5cGUucGFyc2VRdWVyeSA9IFN0cmluZy5wcm90b3R5cGUudG9RdWVyeVBhcmFtczsKCk9iamVjdC5leHRlbmQoU3RyaW5nLnByb3RvdHlwZS5lc2NhcGVIVE1MLCB7CiAgZGl2OiAgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JyksCiAgdGV4dDogZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJycpCn0pOwoKd2l0aCAoU3RyaW5nLnByb3RvdHlwZS5lc2NhcGVIVE1MKSBkaXYuYXBwZW5kQ2hpbGQodGV4dCk7Cgp2YXIgVGVtcGxhdGUgPSBDbGFzcy5jcmVhdGUoewogIGluaXRpYWxpemU6IGZ1bmN0aW9uKHRlbXBsYXRlLCBwYXR0ZXJuKSB7CiAgICB0aGlzLnRlbXBsYXRlID0gdGVtcGxhdGUudG9TdHJpbmcoKTsKICAgIHRoaXMucGF0dGVybiA9IHBhdHRlcm4gfHwgVGVtcGxhdGUuUGF0dGVybjsKICB9LAoKICBldmFsdWF0ZTogZnVuY3Rpb24ob2JqZWN0KSB7CiAgICBpZiAoT2JqZWN0LmlzRnVuY3Rpb24ob2JqZWN0LnRvVGVtcGxhdGVSZXBsYWNlbWVudHMpKQogICAgICBvYmplY3QgPSBvYmplY3QudG9UZW1wbGF0ZVJlcGxhY2VtZW50cygpOwoKICAgIHJldHVybiB0aGlzLnRlbXBsYXRlLmdzdWIodGhpcy5wYXR0ZXJuLCBmdW5jdGlvbihtYXRjaCkgewogICAgICBpZiAob2JqZWN0ID09IG51bGwpIHJldHVybiAnJzsKCiAgICAgIHZhciBiZWZvcmUgPSBtYXRjaFsxXSB8fCAnJzsKICAgICAgaWYgKGJlZm9yZSA9PSAnXFwnKSByZXR1cm4gbWF0Y2hbMl07CgogICAgICB2YXIgY3R4ID0gb2JqZWN0LCBleHByID0gbWF0Y2hbM107CiAgICAgIHZhciBwYXR0ZXJuID0gL14oW14uW10rfFxbKCg/Oi4qP1teXFxdKT8pXF0pKFwufFxbfCQpLzsKICAgICAgbWF0Y2ggPSBwYXR0ZXJuLmV4ZWMoZXhwcik7CiAgICAgIGlmIChtYXRjaCA9PSBudWxsKSByZXR1cm4gYmVmb3JlOwoKICAgICAgd2hpbGUgKG1hdGNoICE9IG51bGwpIHsKICAgICAgICB2YXIgY29tcCA9IG1hdGNoWzFdLnN0YXJ0c1dpdGgoJ1snKSA/IG1hdGNoWzJdLmdzdWIoJ1xcXFxdJywgJ10nKSA6IG1hdGNoWzFdOwogICAgICAgIGN0eCA9IGN0eFtjb21wXTsKICAgICAgICBpZiAobnVsbCA9PSBjdHggfHwgJycgPT0gbWF0Y2hbM10pIGJyZWFrOwogICAgICAgIGV4cHIgPSBleHByLnN1YnN0cmluZygnWycgPT0gbWF0Y2hbM10gPyBtYXRjaFsxXS5sZW5ndGggOiBtYXRjaFswXS5sZW5ndGgpOwogICAgICAgIG1hdGNoID0gcGF0dGVybi5leGVjKGV4cHIpOwogICAgICB9CgogICAgICByZXR1cm4gYmVmb3JlICsgU3RyaW5nLmludGVycHJldChjdHgpOwogICAgfSk7CiAgfQp9KTsKVGVtcGxhdGUuUGF0dGVybiA9IC8oXnwufFxyfFxuKSgjXHsoLio/KVx9KS87Cgp2YXIgJGJyZWFrID0geyB9OwoKdmFyIEVudW1lcmFibGUgPSB7CiAgZWFjaDogZnVuY3Rpb24oaXRlcmF0b3IsIGNvbnRleHQpIHsKICAgIHZhciBpbmRleCA9IDA7CiAgICBpdGVyYXRvciA9IGl0ZXJhdG9yLmJpbmQoY29udGV4dCk7CiAgICB0cnkgewogICAgICB0aGlzLl9lYWNoKGZ1bmN0aW9uKHZhbHVlKSB7CiAgICAgICAgaXRlcmF0b3IodmFsdWUsIGluZGV4KyspOwogICAgICB9KTsKICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgaWYgKGUgIT0gJGJyZWFrKSB0aHJvdyBlOwogICAgfQogICAgcmV0dXJuIHRoaXM7CiAgfSwKCiAgZWFjaFNsaWNlOiBmdW5jdGlvbihudW1iZXIsIGl0ZXJhdG9yLCBjb250ZXh0KSB7CiAgICBpdGVyYXRvciA9IGl0ZXJhdG9yID8gaXRlcmF0b3IuYmluZChjb250ZXh0KSA6IFByb3RvdHlwZS5LOwogICAgdmFyIGluZGV4ID0gLW51bWJlciwgc2xpY2VzID0gW10sIGFycmF5ID0gdGhpcy50b0FycmF5KCk7CiAgICB3aGlsZSAoKGluZGV4ICs9IG51bWJlcikgPCBhcnJheS5sZW5ndGgpCiAgICAgIHNsaWNlcy5wdXNoKGFycmF5LnNsaWNlKGluZGV4LCBpbmRleCtudW1iZXIpKTsKICAgIHJldHVybiBzbGljZXMuY29sbGVjdChpdGVyYXRvciwgY29udGV4dCk7CiAgfSwKCiAgYWxsOiBmdW5jdGlvbihpdGVyYXRvciwgY29udGV4dCkgewogICAgaXRlcmF0b3IgPSBpdGVyYXRvciA/IGl0ZXJhdG9yLmJpbmQoY29udGV4dCkgOiBQcm90b3R5cGUuSzsKICAgIHZhciByZXN1bHQgPSB0cnVlOwogICAgdGhpcy5lYWNoKGZ1bmN0aW9uKHZhbHVlLCBpbmRleCkgewogICAgICByZXN1bHQgPSByZXN1bHQgJiYgISFpdGVyYXRvcih2YWx1ZSwgaW5kZXgpOwogICAgICBpZiAoIXJlc3VsdCkgdGhyb3cgJGJyZWFrOwogICAgfSk7CiAgICByZXR1cm4gcmVzdWx0OwogIH0sCgogIGFueTogZnVuY3Rpb24oaXRlcmF0b3IsIGNvbnRleHQpIHsKICAgIGl0ZXJhdG9yID0gaXRlcmF0b3IgPyBpdGVyYXRvci5iaW5kKGNvbnRleHQpIDogUHJvdG90eXBlLks7CiAgICB2YXIgcmVzdWx0ID0gZmFsc2U7CiAgICB0aGlzLmVhY2goZnVuY3Rpb24odmFsdWUsIGluZGV4KSB7CiAgICAgIGlmIChyZXN1bHQgPSAhIWl0ZXJhdG9yKHZhbHVlLCBpbmRleCkpCiAgICAgICAgdGhyb3cgJGJyZWFrOwogICAgfSk7CiAgICByZXR1cm4gcmVzdWx0OwogIH0sCgogIGNvbGxlY3Q6IGZ1bmN0aW9uKGl0ZXJhdG9yLCBjb250ZXh0KSB7CiAgICBpdGVyYXRvciA9IGl0ZXJhdG9yID8gaXRlcmF0b3IuYmluZChjb250ZXh0KSA6IFByb3RvdHlwZS5LOwogICAgdmFyIHJlc3VsdHMgPSBbXTsKICAgIHRoaXMuZWFjaChmdW5jdGlvbih2YWx1ZSwgaW5kZXgpIHsKICAgICAgcmVzdWx0cy5wdXNoKGl0ZXJhdG9yKHZhbHVlLCBpbmRleCkpOwogICAgfSk7CiAgICByZXR1cm4gcmVzdWx0czsKICB9LAoKICBkZXRlY3Q6IGZ1bmN0aW9uKGl0ZXJhdG9yLCBjb250ZXh0KSB7CiAgICBpdGVyYXRvciA9IGl0ZXJhdG9yLmJpbmQoY29udGV4dCk7CiAgICB2YXIgcmVzdWx0OwogICAgdGhpcy5lYWNoKGZ1bmN0aW9uKHZhbHVlLCBpbmRleCkgewogICAgICBpZiAoaXRlcmF0b3IodmFsdWUsIGluZGV4KSkgewogICAgICAgIHJlc3VsdCA9IHZhbHVlOwogICAgICAgIHRocm93ICRicmVhazsKICAgICAgfQogICAgfSk7CiAgICByZXR1cm4gcmVzdWx0OwogIH0sCgogIGZpbmRBbGw6IGZ1bmN0aW9uKGl0ZXJhdG9yLCBjb250ZXh0KSB7CiAgICBpdGVyYXRvciA9IGl0ZXJhdG9yLmJpbmQoY29udGV4dCk7CiAgICB2YXIgcmVzdWx0cyA9IFtdOwogICAgdGhpcy5lYWNoKGZ1bmN0aW9uKHZhbHVlLCBpbmRleCkgewogICAgICBpZiAoaXRlcmF0b3IodmFsdWUsIGluZGV4KSkKICAgICAgICByZXN1bHRzLnB1c2godmFsdWUpOwogICAgfSk7CiAgICByZXR1cm4gcmVzdWx0czsKICB9LAoKICBncmVwOiBmdW5jdGlvbihmaWx0ZXIsIGl0ZXJhdG9yLCBjb250ZXh0KSB7CiAgICBpdGVyYXRvciA9IGl0ZXJhdG9yID8gaXRlcmF0b3IuYmluZChjb250ZXh0KSA6IFByb3RvdHlwZS5LOwogICAgdmFyIHJlc3VsdHMgPSBbXTsKCiAgICBpZiAoT2JqZWN0LmlzU3RyaW5nKGZpbHRlcikpCiAgICAgIGZpbHRlciA9IG5ldyBSZWdFeHAoZmlsdGVyKTsKCiAgICB0aGlzLmVhY2goZnVuY3Rpb24odmFsdWUsIGluZGV4KSB7CiAgICAgIGlmIChmaWx0ZXIubWF0Y2godmFsdWUpKQogICAgICAgIHJlc3VsdHMucHVzaChpdGVyYXRvcih2YWx1ZSwgaW5kZXgpKTsKICAgIH0pOwogICAgcmV0dXJuIHJlc3VsdHM7CiAgfSwKCiAgaW5jbHVkZTogZnVuY3Rpb24ob2JqZWN0KSB7CiAgICBpZiAoT2JqZWN0LmlzRnVuY3Rpb24odGhpcy5pbmRleE9mKSkKICAgICAgaWYgKHRoaXMuaW5kZXhPZihvYmplY3QpICE9IC0xKSByZXR1cm4gdHJ1ZTsKCiAgICB2YXIgZm91bmQgPSBmYWxzZTsKICAgIHRoaXMuZWFjaChmdW5jdGlvbih2YWx1ZSkgewogICAgICBpZiAodmFsdWUgPT0gb2JqZWN0KSB7CiAgICAgICAgZm91bmQgPSB0cnVlOwogICAgICAgIHRocm93ICRicmVhazsKICAgICAgfQogICAgfSk7CiAgICByZXR1cm4gZm91bmQ7CiAgfSwKCiAgaW5Hcm91cHNPZjogZnVuY3Rpb24obnVtYmVyLCBmaWxsV2l0aCkgewogICAgZmlsbFdpdGggPSBPYmplY3QuaXNVbmRlZmluZWQoZmlsbFdpdGgpID8gbnVsbCA6IGZpbGxXaXRoOwogICAgcmV0dXJuIHRoaXMuZWFjaFNsaWNlKG51bWJlciwgZnVuY3Rpb24oc2xpY2UpIHsKICAgICAgd2hpbGUoc2xpY2UubGVuZ3RoIDwgbnVtYmVyKSBzbGljZS5wdXNoKGZpbGxXaXRoKTsKICAgICAgcmV0dXJuIHNsaWNlOwogICAgfSk7CiAgfSwKCiAgaW5qZWN0OiBmdW5jdGlvbihtZW1vLCBpdGVyYXRvciwgY29udGV4dCkgewogICAgaXRlcmF0b3IgPSBpdGVyYXRvci5iaW5kKGNvbnRleHQpOwogICAgdGhpcy5lYWNoKGZ1bmN0aW9uKHZhbHVlLCBpbmRleCkgewogICAgICBtZW1vID0gaXRlcmF0b3IobWVtbywgdmFsdWUsIGluZGV4KTsKICAgIH0pOwogICAgcmV0dXJuIG1lbW87CiAgfSwKCiAgaW52b2tlOiBmdW5jdGlvbihtZXRob2QpIHsKICAgIHZhciBhcmdzID0gJEEoYXJndW1lbnRzKS5zbGljZSgxKTsKICAgIHJldHVybiB0aGlzLm1hcChmdW5jdGlvbih2YWx1ZSkgewogICAgICByZXR1cm4gdmFsdWVbbWV0aG9kXS5hcHBseSh2YWx1ZSwgYXJncyk7CiAgICB9KTsKICB9LAoKICBtYXg6IGZ1bmN0aW9uKGl0ZXJhdG9yLCBjb250ZXh0KSB7CiAgICBpdGVyYXRvciA9IGl0ZXJhdG9yID8gaXRlcmF0b3IuYmluZChjb250ZXh0KSA6IFByb3RvdHlwZS5LOwogICAgdmFyIHJlc3VsdDsKICAgIHRoaXMuZWFjaChmdW5jdGlvbih2YWx1ZSwgaW5kZXgpIHsKICAgICAgdmFsdWUgPSBpdGVyYXRvcih2YWx1ZSwgaW5kZXgpOwogICAgICBpZiAocmVzdWx0ID09IG51bGwgfHwgdmFsdWUgPj0gcmVzdWx0KQogICAgICAgIHJlc3VsdCA9IHZhbHVlOwogICAgfSk7CiAgICByZXR1cm4gcmVzdWx0OwogIH0sCgogIG1pbjogZnVuY3Rpb24oaXRlcmF0b3IsIGNvbnRleHQpIHsKICAgIGl0ZXJhdG9yID0gaXRlcmF0b3IgPyBpdGVyYXRvci5iaW5kKGNvbnRleHQpIDogUHJvdG90eXBlLks7CiAgICB2YXIgcmVzdWx0OwogICAgdGhpcy5lYWNoKGZ1bmN0aW9uKHZhbHVlLCBpbmRleCkgewogICAgICB2YWx1ZSA9IGl0ZXJhdG9yKHZhbHVlLCBpbmRleCk7CiAgICAgIGlmIChyZXN1bHQgPT0gbnVsbCB8fCB2YWx1ZSA8IHJlc3VsdCkKICAgICAgICByZXN1bHQgPSB2YWx1ZTsKICAgIH0pOwogICAgcmV0dXJuIHJlc3VsdDsKICB9LAoKICBwYXJ0aXRpb246IGZ1bmN0aW9uKGl0ZXJhdG9yLCBjb250ZXh0KSB7CiAgICBpdGVyYXRvciA9IGl0ZXJhdG9yID8gaXRlcmF0b3IuYmluZChjb250ZXh0KSA6IFByb3RvdHlwZS5LOwogICAgdmFyIHRydWVzID0gW10sIGZhbHNlcyA9IFtdOwogICAgdGhpcy5lYWNoKGZ1bmN0aW9uKHZhbHVlLCBpbmRleCkgewogICAgICAoaXRlcmF0b3IodmFsdWUsIGluZGV4KSA/CiAgICAgICAgdHJ1ZXMgOiBmYWxzZXMpLnB1c2godmFsdWUpOwogICAgfSk7CiAgICByZXR1cm4gW3RydWVzLCBmYWxzZXNdOwogIH0sCgogIHBsdWNrOiBmdW5jdGlvbihwcm9wZXJ0eSkgewogICAgdmFyIHJlc3VsdHMgPSBbXTsKICAgIHRoaXMuZWFjaChmdW5jdGlvbih2YWx1ZSkgewogICAgICByZXN1bHRzLnB1c2godmFsdWVbcHJvcGVydHldKTsKICAgIH0pOwogICAgcmV0dXJuIHJlc3VsdHM7CiAgfSwKCiAgcmVqZWN0OiBmdW5jdGlvbihpdGVyYXRvciwgY29udGV4dCkgewogICAgaXRlcmF0b3IgPSBpdGVyYXRvci5iaW5kKGNvbnRleHQpOwogICAgdmFyIHJlc3VsdHMgPSBbXTsKICAgIHRoaXMuZWFjaChmdW5jdGlvbih2YWx1ZSwgaW5kZXgpIHsKICAgICAgaWYgKCFpdGVyYXRvcih2YWx1ZSwgaW5kZXgpKQogICAgICAgIHJlc3VsdHMucHVzaCh2YWx1ZSk7CiAgICB9KTsKICAgIHJldHVybiByZXN1bHRzOwogIH0sCgogIHNvcnRCeTogZnVuY3Rpb24oaXRlcmF0b3IsIGNvbnRleHQpIHsKICAgIGl0ZXJhdG9yID0gaXRlcmF0b3IuYmluZChjb250ZXh0KTsKICAgIHJldHVybiB0aGlzLm1hcChmdW5jdGlvbih2YWx1ZSwgaW5kZXgpIHsKICAgICAgcmV0dXJuIHt2YWx1ZTogdmFsdWUsIGNyaXRlcmlhOiBpdGVyYXRvcih2YWx1ZSwgaW5kZXgpfTsKICAgIH0pLnNvcnQoZnVuY3Rpb24obGVmdCwgcmlnaHQpIHsKICAgICAgdmFyIGEgPSBsZWZ0LmNyaXRlcmlhLCBiID0gcmlnaHQuY3JpdGVyaWE7CiAgICAgIHJldHVybiBhIDwgYiA/IC0xIDogYSA+IGIgPyAxIDogMDsKICAgIH0pLnBsdWNrKCd2YWx1ZScpOwogIH0sCgogIHRvQXJyYXk6IGZ1bmN0aW9uKCkgewogICAgcmV0dXJuIHRoaXMubWFwKCk7CiAgfSwKCiAgemlwOiBmdW5jdGlvbigpIHsKICAgIHZhciBpdGVyYXRvciA9IFByb3RvdHlwZS5LLCBhcmdzID0gJEEoYXJndW1lbnRzKTsKICAgIGlmIChPYmplY3QuaXNGdW5jdGlvbihhcmdzLmxhc3QoKSkpCiAgICAgIGl0ZXJhdG9yID0gYXJncy5wb3AoKTsKCiAgICB2YXIgY29sbGVjdGlvbnMgPSBbdGhpc10uY29uY2F0KGFyZ3MpLm1hcCgkQSk7CiAgICByZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24odmFsdWUsIGluZGV4KSB7CiAgICAgIHJldHVybiBpdGVyYXRvcihjb2xsZWN0aW9ucy5wbHVjayhpbmRleCkpOwogICAgfSk7CiAgfSwKCiAgc2l6ZTogZnVuY3Rpb24oKSB7CiAgICByZXR1cm4gdGhpcy50b0FycmF5KCkubGVuZ3RoOwogIH0sCgogIGluc3BlY3Q6IGZ1bmN0aW9uKCkgewogICAgcmV0dXJuICcjPEVudW1lcmFibGU6JyArIHRoaXMudG9BcnJheSgpLmluc3BlY3QoKSArICc+JzsKICB9Cn07CgpPYmplY3QuZXh0ZW5kKEVudW1lcmFibGUsIHsKICBtYXA6ICAgICBFbnVtZXJhYmxlLmNvbGxlY3QsCiAgZmluZDogICAgRW51bWVyYWJsZS5kZXRlY3QsCiAgc2VsZWN0OiAgRW51bWVyYWJsZS5maW5kQWxsLAogIGZpbHRlcjogIEVudW1lcmFibGUuZmluZEFsbCwKICBtZW1iZXI6ICBFbnVtZXJhYmxlLmluY2x1ZGUsCiAgZW50cmllczogRW51bWVyYWJsZS50b0FycmF5LAogIGV2ZXJ5OiAgIEVudW1lcmFibGUuYWxsLAogIHNvbWU6ICAgIEVudW1lcmFibGUuYW55Cn0pOwpmdW5jdGlvbiAkQShpdGVyYWJsZSkgewogIGlmICghaXRlcmFibGUpIHJldHVybiBbXTsKICBpZiAoaXRlcmFibGUudG9BcnJheSkgcmV0dXJuIGl0ZXJhYmxlLnRvQXJyYXkoKTsKICB2YXIgbGVuZ3RoID0gaXRlcmFibGUubGVuZ3RoIHx8IDAsIHJlc3VsdHMgPSBuZXcgQXJyYXkobGVuZ3RoKTsKICB3aGlsZSAobGVuZ3RoLS0pIHJlc3VsdHNbbGVuZ3RoXSA9IGl0ZXJhYmxlW2xlbmd0aF07CiAgcmV0dXJuIHJlc3VsdHM7Cn0KCmlmIChQcm90b3R5cGUuQnJvd3Nlci5XZWJLaXQpIHsKICAkQSA9IGZ1bmN0aW9uKGl0ZXJhYmxlKSB7CiAgICBpZiAoIWl0ZXJhYmxlKSByZXR1cm4gW107CiAgICBpZiAoIShPYmplY3QuaXNGdW5jdGlvbihpdGVyYWJsZSkgJiYgaXRlcmFibGUgPT0gJ1tvYmplY3QgTm9kZUxpc3RdJykgJiYKICAgICAgICBpdGVyYWJsZS50b0FycmF5KSByZXR1cm4gaXRlcmFibGUudG9BcnJheSgpOwogICAgdmFyIGxlbmd0aCA9IGl0ZXJhYmxlLmxlbmd0aCB8fCAwLCByZXN1bHRzID0gbmV3IEFycmF5KGxlbmd0aCk7CiAgICB3aGlsZSAobGVuZ3RoLS0pIHJlc3VsdHNbbGVuZ3RoXSA9IGl0ZXJhYmxlW2xlbmd0aF07CiAgICByZXR1cm4gcmVzdWx0czsKICB9Owp9CgpBcnJheS5mcm9tID0gJEE7CgpPYmplY3QuZXh0ZW5kKEFycmF5LnByb3RvdHlwZSwgRW51bWVyYWJsZSk7CgppZiAoIUFycmF5LnByb3RvdHlwZS5fcmV2ZXJzZSkgQXJyYXkucHJvdG90eXBlLl9yZXZlcnNlID0gQXJyYXkucHJvdG90eXBlLnJldmVyc2U7CgpPYmplY3QuZXh0ZW5kKEFycmF5LnByb3RvdHlwZSwgewogIF9lYWNoOiBmdW5jdGlvbihpdGVyYXRvcikgewogICAgZm9yICh2YXIgaSA9IDAsIGxlbmd0aCA9IHRoaXMubGVuZ3RoOyBpIDwgbGVuZ3RoOyBpKyspCiAgICAgIGl0ZXJhdG9yKHRoaXNbaV0pOwogIH0sCgogIGNsZWFyOiBmdW5jdGlvbigpIHsKICAgIHRoaXMubGVuZ3RoID0gMDsKICAgIHJldHVybiB0aGlzOwogIH0sCgogIGZpcnN0OiBmdW5jdGlvbigpIHsKICAgIHJldHVybiB0aGlzWzBdOwogIH0sCgogIGxhc3Q6IGZ1bmN0aW9uKCkgewogICAgcmV0dXJuIHRoaXNbdGhpcy5sZW5ndGggLSAxXTsKICB9LAoKICBjb21wYWN0OiBmdW5jdGlvbigpIHsKICAgIHJldHVybiB0aGlzLnNlbGVjdChmdW5jdGlvbih2YWx1ZSkgewogICAgICByZXR1cm4gdmFsdWUgIT0gbnVsbDsKICAgIH0pOwogIH0sCgogIGZsYXR0ZW46IGZ1bmN0aW9uKCkgewogICAgcmV0dXJuIHRoaXMuaW5qZWN0KFtdLCBmdW5jdGlvbihhcnJheSwgdmFsdWUpIHsKICAgICAgcmV0dXJuIGFycmF5LmNvbmNhdChPYmplY3QuaXNBcnJheSh2YWx1ZSkgPwogICAgICAgIHZhbHVlLmZsYXR0ZW4oKSA6IFt2YWx1ZV0pOwogICAgfSk7CiAgfSwKCiAgd2l0aG91dDogZnVuY3Rpb24oKSB7CiAgICB2YXIgdmFsdWVzID0gJEEoYXJndW1lbnRzKTsKICAgIHJldHVybiB0aGlzLnNlbGVjdChmdW5jdGlvbih2YWx1ZSkgewogICAgICByZXR1cm4gIXZhbHVlcy5pbmNsdWRlKHZhbHVlKTsKICAgIH0pOwogIH0sCgogIHJldmVyc2U6IGZ1bmN0aW9uKGlubGluZSkgewogICAgcmV0dXJuIChpbmxpbmUgIT09IGZhbHNlID8gdGhpcyA6IHRoaXMudG9BcnJheSgpKS5fcmV2ZXJzZSgpOwogIH0sCgogIHJlZHVjZTogZnVuY3Rpb24oKSB7CiAgICByZXR1cm4gdGhpcy5sZW5ndGggPiAxID8gdGhpcyA6IHRoaXNbMF07CiAgfSwKCiAgdW5pcTogZnVuY3Rpb24oc29ydGVkKSB7CiAgICByZXR1cm4gdGhpcy5pbmplY3QoW10sIGZ1bmN0aW9uKGFycmF5LCB2YWx1ZSwgaW5kZXgpIHsKICAgICAgaWYgKDAgPT0gaW5kZXggfHwgKHNvcnRlZCA/IGFycmF5Lmxhc3QoKSAhPSB2YWx1ZSA6ICFhcnJheS5pbmNsdWRlKHZhbHVlKSkpCiAgICAgICAgYXJyYXkucHVzaCh2YWx1ZSk7CiAgICAgIHJldHVybiBhcnJheTsKICAgIH0pOwogIH0sCgogIGludGVyc2VjdDogZnVuY3Rpb24oYXJyYXkpIHsKICAgIHJldHVybiB0aGlzLnVuaXEoKS5maW5kQWxsKGZ1bmN0aW9uKGl0ZW0pIHsKICAgICAgcmV0dXJuIGFycmF5LmRldGVjdChmdW5jdGlvbih2YWx1ZSkgeyByZXR1cm4gaXRlbSA9PT0gdmFsdWUgfSk7CiAgICB9KTsKICB9LAoKICBjbG9uZTogZnVuY3Rpb24oKSB7CiAgICByZXR1cm4gW10uY29uY2F0KHRoaXMpOwogIH0sCgogIHNpemU6IGZ1bmN0aW9uKCkgewogICAgcmV0dXJuIHRoaXMubGVuZ3RoOwogIH0sCgogIGluc3BlY3Q6IGZ1bmN0aW9uKCkgewogICAgcmV0dXJuICdbJyArIHRoaXMubWFwKE9iamVjdC5pbnNwZWN0KS5qb2luKCcsICcpICsgJ10nOwogIH0sCgogIHRvSlNPTjogZnVuY3Rpb24oKSB7CiAgICB2YXIgcmVzdWx0cyA9IFtdOwogICAgdGhpcy5lYWNoKGZ1bmN0aW9uKG9iamVjdCkgewogICAgICB2YXIgdmFsdWUgPSBPYmplY3QudG9KU09OKG9iamVjdCk7CiAgICAgIGlmICghT2JqZWN0LmlzVW5kZWZpbmVkKHZhbHVlKSkgcmVzdWx0cy5wdXNoKHZhbHVlKTsKICAgIH0pOwogICAgcmV0dXJuICdbJyArIHJlc3VsdHMuam9pbignLCAnKSArICddJzsKICB9Cn0pOwoKLy8gdXNlIG5hdGl2ZSBicm93c2VyIEpTIDEuNiBpbXBsZW1lbnRhdGlvbiBpZiBhdmFpbGFibGUKaWYgKE9iamVjdC5pc0Z1bmN0aW9uKEFycmF5LnByb3RvdHlwZS5mb3JFYWNoKSkKICBBcnJheS5wcm90b3R5cGUuX2VhY2ggPSBBcnJheS5wcm90b3R5cGUuZm9yRWFjaDsKCmlmICghQXJyYXkucHJvdG90eXBlLmluZGV4T2YpIEFycmF5LnByb3RvdHlwZS5pbmRleE9mID0gZnVuY3Rpb24oaXRlbSwgaSkgewogIGkgfHwgKGkgPSAwKTsKICB2YXIgbGVuZ3RoID0gdGhpcy5sZW5ndGg7CiAgaWYgKGkgPCAwKSBpID0gbGVuZ3RoICsgaTsKICBmb3IgKDsgaSA8IGxlbmd0aDsgaSsrKQogICAgaWYgKHRoaXNbaV0gPT09IGl0ZW0pIHJldHVybiBpOwogIHJldHVybiAtMTsKfTsKCmlmICghQXJyYXkucHJvdG90eXBlLmxhc3RJbmRleE9mKSBBcnJheS5wcm90b3R5cGUubGFzdEluZGV4T2YgPSBmdW5jdGlvbihpdGVtLCBpKSB7CiAgaSA9IGlzTmFOKGkpID8gdGhpcy5sZW5ndGggOiAoaSA8IDAgPyB0aGlzLmxlbmd0aCArIGkgOiBpKSArIDE7CiAgdmFyIG4gPSB0aGlzLnNsaWNlKDAsIGkpLnJldmVyc2UoKS5pbmRleE9mKGl0ZW0pOwogIHJldHVybiAobiA8IDApID8gbiA6IGkgLSBuIC0gMTsKfTsKCkFycmF5LnByb3RvdHlwZS50b0FycmF5ID0gQXJyYXkucHJvdG90eXBlLmNsb25lOwoKZnVuY3Rpb24gJHcoc3RyaW5nKSB7CiAgaWYgKCFPYmplY3QuaXNTdHJpbmcoc3RyaW5nKSkgcmV0dXJuIFtdOwogIHN0cmluZyA9IHN0cmluZy5zdHJpcCgpOwogIHJldHVybiBzdHJpbmcgPyBzdHJpbmcuc3BsaXQoL1xzKy8pIDogW107Cn0KCmlmIChQcm90b3R5cGUuQnJvd3Nlci5PcGVyYSl7CiAgQXJyYXkucHJvdG90eXBlLmNvbmNhdCA9IGZ1bmN0aW9uKCkgewogICAgdmFyIGFycmF5ID0gW107CiAgICBmb3IgKHZhciBpID0gMCwgbGVuZ3RoID0gdGhpcy5sZW5ndGg7IGkgPCBsZW5ndGg7IGkrKykgYXJyYXkucHVzaCh0aGlzW2ldKTsKICAgIGZvciAodmFyIGkgPSAwLCBsZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbGVuZ3RoOyBpKyspIHsKICAgICAgaWYgKE9iamVjdC5pc0FycmF5KGFyZ3VtZW50c1tpXSkpIHsKICAgICAgICBmb3IgKHZhciBqID0gMCwgYXJyYXlMZW5ndGggPSBhcmd1bWVudHNbaV0ubGVuZ3RoOyBqIDwgYXJyYXlMZW5ndGg7IGorKykKICAgICAgICAgIGFycmF5LnB1c2goYXJndW1lbnRzW2ldW2pdKTsKICAgICAgfSBlbHNlIHsKICAgICAgICBhcnJheS5wdXNoKGFyZ3VtZW50c1tpXSk7CiAgICAgIH0KICAgIH0KICAgIHJldHVybiBhcnJheTsKICB9Owp9Ck9iamVjdC5leHRlbmQoTnVtYmVyLnByb3RvdHlwZSwgewogIHRvQ29sb3JQYXJ0OiBmdW5jdGlvbigpIHsKICAgIHJldHVybiB0aGlzLnRvUGFkZGVkU3RyaW5nKDIsIDE2KTsKICB9LAoKICBzdWNjOiBmdW5jdGlvbigpIHsKICAgIHJldHVybiB0aGlzICsgMTsKICB9LAoKICB0aW1lczogZnVuY3Rpb24oaXRlcmF0b3IpIHsKICAgICRSKDAsIHRoaXMsIHRydWUpLmVhY2goaXRlcmF0b3IpOwogICAgcmV0dXJuIHRoaXM7CiAgfSwKCiAgdG9QYWRkZWRTdHJpbmc6IGZ1bmN0aW9uKGxlbmd0aCwgcmFkaXgpIHsKICAgIHZhciBzdHJpbmcgPSB0aGlzLnRvU3RyaW5nKHJhZGl4IHx8IDEwKTsKICAgIHJldHVybiAnMCcudGltZXMobGVuZ3RoIC0gc3RyaW5nLmxlbmd0aCkgKyBzdHJpbmc7CiAgfSwKCiAgdG9KU09OOiBmdW5jdGlvbigpIHsKICAgIHJldHVybiBpc0Zpbml0ZSh0aGlzKSA/IHRoaXMudG9TdHJpbmcoKSA6ICdudWxsJzsKICB9Cn0pOwoKJHcoJ2FicyByb3VuZCBjZWlsIGZsb29yJykuZWFjaChmdW5jdGlvbihtZXRob2QpewogIE51bWJlci5wcm90b3R5cGVbbWV0aG9kXSA9IE1hdGhbbWV0aG9kXS5tZXRob2RpemUoKTsKfSk7CmZ1bmN0aW9uICRIKG9iamVjdCkgewogIHJldHVybiBuZXcgSGFzaChvYmplY3QpOwp9OwoKdmFyIEhhc2ggPSBDbGFzcy5jcmVhdGUoRW51bWVyYWJsZSwgKGZ1bmN0aW9uKCkgewoKICBmdW5jdGlvbiB0b1F1ZXJ5UGFpcihrZXksIHZhbHVlKSB7CiAgICBpZiAoT2JqZWN0LmlzVW5kZWZpbmVkKHZhbHVlKSkgcmV0dXJuIGtleTsKICAgIHJldHVybiBrZXkgKyAnPScgKyBlbmNvZGVVUklDb21wb25lbnQoU3RyaW5nLmludGVycHJldCh2YWx1ZSkpOwogIH0KCiAgcmV0dXJuIHsKICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKG9iamVjdCkgewogICAgICB0aGlzLl9vYmplY3QgPSBPYmplY3QuaXNIYXNoKG9iamVjdCkgPyBvYmplY3QudG9PYmplY3QoKSA6IE9iamVjdC5jbG9uZShvYmplY3QpOwogICAgfSwKCiAgICBfZWFjaDogZnVuY3Rpb24oaXRlcmF0b3IpIHsKICAgICAgZm9yICh2YXIga2V5IGluIHRoaXMuX29iamVjdCkgewogICAgICAgIHZhciB2YWx1ZSA9IHRoaXMuX29iamVjdFtrZXldLCBwYWlyID0gW2tleSwgdmFsdWVdOwogICAgICAgIHBhaXIua2V5ID0ga2V5OwogICAgICAgIHBhaXIudmFsdWUgPSB2YWx1ZTsKICAgICAgICBpdGVyYXRvcihwYWlyKTsKICAgICAgfQogICAgfSwKCiAgICBzZXQ6IGZ1bmN0aW9uKGtleSwgdmFsdWUpIHsKICAgICAgcmV0dXJuIHRoaXMuX29iamVjdFtrZXldID0gdmFsdWU7CiAgICB9LAoKICAgIGdldDogZnVuY3Rpb24oa2V5KSB7CiAgICAgIHJldHVybiB0aGlzLl9vYmplY3Rba2V5XTsKICAgIH0sCgogICAgdW5zZXQ6IGZ1bmN0aW9uKGtleSkgewogICAgICB2YXIgdmFsdWUgPSB0aGlzLl9vYmplY3Rba2V5XTsKICAgICAgZGVsZXRlIHRoaXMuX29iamVjdFtrZXldOwogICAgICByZXR1cm4gdmFsdWU7CiAgICB9LAoKICAgIHRvT2JqZWN0OiBmdW5jdGlvbigpIHsKICAgICAgcmV0dXJuIE9iamVjdC5jbG9uZSh0aGlzLl9vYmplY3QpOwogICAgfSwKCiAgICBrZXlzOiBmdW5jdGlvbigpIHsKICAgICAgcmV0dXJuIHRoaXMucGx1Y2soJ2tleScpOwogICAgfSwKCiAgICB2YWx1ZXM6IGZ1bmN0aW9uKCkgewogICAgICByZXR1cm4gdGhpcy5wbHVjaygndmFsdWUnKTsKICAgIH0sCgogICAgaW5kZXg6IGZ1bmN0aW9uKHZhbHVlKSB7CiAgICAgIHZhciBtYXRjaCA9IHRoaXMuZGV0ZWN0KGZ1bmN0aW9uKHBhaXIpIHsKICAgICAgICByZXR1cm4gcGFpci52YWx1ZSA9PT0gdmFsdWU7CiAgICAgIH0pOwogICAgICByZXR1cm4gbWF0Y2ggJiYgbWF0Y2gua2V5OwogICAgfSwKCiAgICBtZXJnZTogZnVuY3Rpb24ob2JqZWN0KSB7CiAgICAgIHJldHVybiB0aGlzLmNsb25lKCkudXBkYXRlKG9iamVjdCk7CiAgICB9LAoKICAgIHVwZGF0ZTogZnVuY3Rpb24ob2JqZWN0KSB7CiAgICAgIHJldHVybiBuZXcgSGFzaChvYmplY3QpLmluamVjdCh0aGlzLCBmdW5jdGlvbihyZXN1bHQsIHBhaXIpIHsKICAgICAgICByZXN1bHQuc2V0KHBhaXIua2V5LCBwYWlyLnZhbHVlKTsKICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICB9KTsKICAgIH0sCgogICAgdG9RdWVyeVN0cmluZzogZnVuY3Rpb24oKSB7CiAgICAgIHJldHVybiB0aGlzLm1hcChmdW5jdGlvbihwYWlyKSB7CiAgICAgICAgdmFyIGtleSA9IGVuY29kZVVSSUNvbXBvbmVudChwYWlyLmtleSksIHZhbHVlcyA9IHBhaXIudmFsdWU7CgogICAgICAgIGlmICh2YWx1ZXMgJiYgdHlwZW9mIHZhbHVlcyA9PSAnb2JqZWN0JykgewogICAgICAgICAgaWYgKE9iamVjdC5pc0FycmF5KHZhbHVlcykpCiAgICAgICAgICAgIHJldHVybiB2YWx1ZXMubWFwKHRvUXVlcnlQYWlyLmN1cnJ5KGtleSkpLmpvaW4oJyYnKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHRvUXVlcnlQYWlyKGtleSwgdmFsdWVzKTsKICAgICAgfSkuam9pbignJicpOwogICAgfSwKCiAgICBpbnNwZWN0OiBmdW5jdGlvbigpIHsKICAgICAgcmV0dXJuICcjPEhhc2g6eycgKyB0aGlzLm1hcChmdW5jdGlvbihwYWlyKSB7CiAgICAgICAgcmV0dXJuIHBhaXIubWFwKE9iamVjdC5pbnNwZWN0KS5qb2luKCc6ICcpOwogICAgICB9KS5qb2luKCcsICcpICsgJ30+JzsKICAgIH0sCgogICAgdG9KU09OOiBmdW5jdGlvbigpIHsKICAgICAgcmV0dXJuIE9iamVjdC50b0pTT04odGhpcy50b09iamVjdCgpKTsKICAgIH0sCgogICAgY2xvbmU6IGZ1bmN0aW9uKCkgewogICAgICByZXR1cm4gbmV3IEhhc2godGhpcyk7CiAgICB9CiAgfQp9KSgpKTsKCkhhc2gucHJvdG90eXBlLnRvVGVtcGxhdGVSZXBsYWNlbWVudHMgPSBIYXNoLnByb3RvdHlwZS50b09iamVjdDsKSGFzaC5mcm9tID0gJEg7CnZhciBPYmplY3RSYW5nZSA9IENsYXNzLmNyZWF0ZShFbnVtZXJhYmxlLCB7CiAgaW5pdGlhbGl6ZTogZnVuY3Rpb24oc3RhcnQsIGVuZCwgZXhjbHVzaXZlKSB7CiAgICB0aGlzLnN0YXJ0ID0gc3RhcnQ7CiAgICB0aGlzLmVuZCA9IGVuZDsKICAgIHRoaXMuZXhjbHVzaXZlID0gZXhjbHVzaXZlOwogIH0sCgogIF9lYWNoOiBmdW5jdGlvbihpdGVyYXRvcikgewogICAgdmFyIHZhbHVlID0gdGhpcy5zdGFydDsKICAgIHdoaWxlICh0aGlzLmluY2x1ZGUodmFsdWUpKSB7CiAgICAgIGl0ZXJhdG9yKHZhbHVlKTsKICAgICAgdmFsdWUgPSB2YWx1ZS5zdWNjKCk7CiAgICB9CiAgfSwKCiAgaW5jbHVkZTogZnVuY3Rpb24odmFsdWUpIHsKICAgIGlmICh2YWx1ZSA8IHRoaXMuc3RhcnQpCiAgICAgIHJldHVybiBmYWxzZTsKICAgIGlmICh0aGlzLmV4Y2x1c2l2ZSkKICAgICAgcmV0dXJuIHZhbHVlIDwgdGhpcy5lbmQ7CiAgICByZXR1cm4gdmFsdWUgPD0gdGhpcy5lbmQ7CiAgfQp9KTsKCnZhciAkUiA9IGZ1bmN0aW9uKHN0YXJ0LCBlbmQsIGV4Y2x1c2l2ZSkgewogIHJldHVybiBuZXcgT2JqZWN0UmFuZ2Uoc3RhcnQsIGVuZCwgZXhjbHVzaXZlKTsKfTsKCnZhciBBamF4ID0gewogIGdldFRyYW5zcG9ydDogZnVuY3Rpb24oKSB7CiAgICByZXR1cm4gVHJ5LnRoZXNlKAogICAgICBmdW5jdGlvbigpIHtyZXR1cm4gbmV3IFhNTEh0dHBSZXF1ZXN0KCl9LAogICAgICBmdW5jdGlvbigpIHtyZXR1cm4gbmV3IEFjdGl2ZVhPYmplY3QoJ01zeG1sMi5YTUxIVFRQJyl9LAogICAgICBmdW5jdGlvbigpIHtyZXR1cm4gbmV3IEFjdGl2ZVhPYmplY3QoJ01pY3Jvc29mdC5YTUxIVFRQJyl9CiAgICApIHx8IGZhbHNlOwogIH0sCgogIGFjdGl2ZVJlcXVlc3RDb3VudDogMAp9OwoKQWpheC5SZXNwb25kZXJzID0gewogIHJlc3BvbmRlcnM6IFtdLAoKICBfZWFjaDogZnVuY3Rpb24oaXRlcmF0b3IpIHsKICAgIHRoaXMucmVzcG9uZGVycy5fZWFjaChpdGVyYXRvcik7CiAgfSwKCiAgcmVnaXN0ZXI6IGZ1bmN0aW9uKHJlc3BvbmRlcikgewogICAgaWYgKCF0aGlzLmluY2x1ZGUocmVzcG9uZGVyKSkKICAgICAgdGhpcy5yZXNwb25kZXJzLnB1c2gocmVzcG9uZGVyKTsKICB9LAoKICB1bnJlZ2lzdGVyOiBmdW5jdGlvbihyZXNwb25kZXIpIHsKICAgIHRoaXMucmVzcG9uZGVycyA9IHRoaXMucmVzcG9uZGVycy53aXRob3V0KHJlc3BvbmRlcik7CiAgfSwKCiAgZGlzcGF0Y2g6IGZ1bmN0aW9uKGNhbGxiYWNrLCByZXF1ZXN0LCB0cmFuc3BvcnQsIGpzb24pIHsKICAgIHRoaXMuZWFjaChmdW5jdGlvbihyZXNwb25kZXIpIHsKICAgICAgaWYgKE9iamVjdC5pc0Z1bmN0aW9uKHJlc3BvbmRlcltjYWxsYmFja10pKSB7CiAgICAgICAgdHJ5IHsKICAgICAgICAgIHJlc3BvbmRlcltjYWxsYmFja10uYXBwbHkocmVzcG9uZGVyLCBbcmVxdWVzdCwgdHJhbnNwb3J0LCBqc29uXSk7CiAgICAgICAgfSBjYXRjaCAoZSkgeyB9CiAgICAgIH0KICAgIH0pOwogIH0KfTsKCk9iamVjdC5leHRlbmQoQWpheC5SZXNwb25kZXJzLCBFbnVtZXJhYmxlKTsKCkFqYXguUmVzcG9uZGVycy5yZWdpc3Rlcih7CiAgb25DcmVhdGU6ICAgZnVuY3Rpb24oKSB7IEFqYXguYWN0aXZlUmVxdWVzdENvdW50KysgfSwKICBvbkNvbXBsZXRlOiBmdW5jdGlvbigpIHsgQWpheC5hY3RpdmVSZXF1ZXN0Q291bnQtLSB9Cn0pOwoKQWpheC5CYXNlID0gQ2xhc3MuY3JlYXRlKHsKICBpbml0aWFsaXplOiBmdW5jdGlvbihvcHRpb25zKSB7CiAgICB0aGlzLm9wdGlvbnMgPSB7CiAgICAgIG1ldGhvZDogICAgICAgJ3Bvc3QnLAogICAgICBhc3luY2hyb25vdXM6IHRydWUsCiAgICAgIGNvbnRlbnRUeXBlOiAgJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCcsCiAgICAgIGVuY29kaW5nOiAgICAgJ1VURi04JywKICAgICAgcGFyYW1ldGVyczogICAnJywKICAgICAgZXZhbEpTT046ICAgICB0cnVlLAogICAgICBldmFsSlM6ICAgICAgIHRydWUKICAgIH07CiAgICBPYmplY3QuZXh0ZW5kKHRoaXMub3B0aW9ucywgb3B0aW9ucyB8fCB7IH0pOwoKICAgIHRoaXMub3B0aW9ucy5tZXRob2QgPSB0aGlzLm9wdGlvbnMubWV0aG9kLnRvTG93ZXJDYXNlKCk7CgogICAgaWYgKE9iamVjdC5pc1N0cmluZyh0aGlzLm9wdGlvbnMucGFyYW1ldGVycykpCiAgICAgIHRoaXMub3B0aW9ucy5wYXJhbWV0ZXJzID0gdGhpcy5vcHRpb25zLnBhcmFtZXRlcnMudG9RdWVyeVBhcmFtcygpOwogICAgZWxzZSBpZiAoT2JqZWN0LmlzSGFzaCh0aGlzLm9wdGlvbnMucGFyYW1ldGVycykpCiAgICAgIHRoaXMub3B0aW9ucy5wYXJhbWV0ZXJzID0gdGhpcy5vcHRpb25zLnBhcmFtZXRlcnMudG9PYmplY3QoKTsKICB9Cn0pOwoKQWpheC5SZXF1ZXN0ID0gQ2xhc3MuY3JlYXRlKEFqYXguQmFzZSwgewogIF9jb21wbGV0ZTogZmFsc2UsCgogIGluaXRpYWxpemU6IGZ1bmN0aW9uKCRzdXBlciwgdXJsLCBvcHRpb25zKSB7CiAgICAkc3VwZXIob3B0aW9ucyk7CiAgICB0aGlzLnRyYW5zcG9ydCA9IEFqYXguZ2V0VHJhbnNwb3J0KCk7CiAgICB0aGlzLnJlcXVlc3QodXJsKTsKICB9LAoKICByZXF1ZXN0OiBmdW5jdGlvbih1cmwpIHsKICAgIHRoaXMudXJsID0gdXJsOwogICAgdGhpcy5tZXRob2QgPSB0aGlzLm9wdGlvbnMubWV0aG9kOwogICAgdmFyIHBhcmFtcyA9IE9iamVjdC5jbG9uZSh0aGlzLm9wdGlvbnMucGFyYW1ldGVycyk7CgogICAgaWYgKCFbJ2dldCcsICdwb3N0J10uaW5jbHVkZSh0aGlzLm1ldGhvZCkpIHsKICAgICAgLy8gc2ltdWxhdGUgb3RoZXIgdmVyYnMgb3ZlciBwb3N0CiAgICAgIHBhcmFtc1snX21ldGhvZCddID0gdGhpcy5tZXRob2Q7CiAgICAgIHRoaXMubWV0aG9kID0gJ3Bvc3QnOwogICAgfQoKICAgIHRoaXMucGFyYW1ldGVycyA9IHBhcmFtczsKCiAgICBpZiAocGFyYW1zID0gT2JqZWN0LnRvUXVlcnlTdHJpbmcocGFyYW1zKSkgewogICAgICAvLyB3aGVuIEdFVCwgYXBwZW5kIHBhcmFtZXRlcnMgdG8gVVJMCiAgICAgIGlmICh0aGlzLm1ldGhvZCA9PSAnZ2V0JykKICAgICAgICB0aGlzLnVybCArPSAodGhpcy51cmwuaW5jbHVkZSgnPycpID8gJyYnIDogJz8nKSArIHBhcmFtczsKICAgICAgZWxzZSBpZiAoL0tvbnF1ZXJvcnxTYWZhcml8S0hUTUwvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkpCiAgICAgICAgcGFyYW1zICs9ICcmXz0nOwogICAgfQoKICAgIHRyeSB7CiAgICAgIHZhciByZXNwb25zZSA9IG5ldyBBamF4LlJlc3BvbnNlKHRoaXMpOwogICAgICBpZiAodGhpcy5vcHRpb25zLm9uQ3JlYXRlKSB0aGlzLm9wdGlvbnMub25DcmVhdGUocmVzcG9uc2UpOwogICAgICBBamF4LlJlc3BvbmRlcnMuZGlzcGF0Y2goJ29uQ3JlYXRlJywgdGhpcywgcmVzcG9uc2UpOwoKICAgICAgdGhpcy50cmFuc3BvcnQub3Blbih0aGlzLm1ldGhvZC50b1VwcGVyQ2FzZSgpLCB0aGlzLnVybCwKICAgICAgICB0aGlzLm9wdGlvbnMuYXN5bmNocm9ub3VzKTsKCiAgICAgIGlmICh0aGlzLm9wdGlvbnMuYXN5bmNocm9ub3VzKSB0aGlzLnJlc3BvbmRUb1JlYWR5U3RhdGUuYmluZCh0aGlzKS5kZWZlcigxKTsKCiAgICAgIHRoaXMudHJhbnNwb3J0Lm9ucmVhZHlzdGF0ZWNoYW5nZSA9IHRoaXMub25TdGF0ZUNoYW5nZS5iaW5kKHRoaXMpOwogICAgICB0aGlzLnNldFJlcXVlc3RIZWFkZXJzKCk7CgogICAgICB0aGlzLmJvZHkgPSB0aGlzLm1ldGhvZCA9PSAncG9zdCcgPyAodGhpcy5vcHRpb25zLnBvc3RCb2R5IHx8IHBhcmFtcykgOiBudWxsOwogICAgICB0aGlzLnRyYW5zcG9ydC5zZW5kKHRoaXMuYm9keSk7CgogICAgICAvKiBGb3JjZSBGaXJlZm94IHRvIGhhbmRsZSByZWFkeSBzdGF0ZSA0IGZvciBzeW5jaHJvbm91cyByZXF1ZXN0cyAqLwogICAgICBpZiAoIXRoaXMub3B0aW9ucy5hc3luY2hyb25vdXMgJiYgdGhpcy50cmFuc3BvcnQub3ZlcnJpZGVNaW1lVHlwZSkKICAgICAgICB0aGlzLm9uU3RhdGVDaGFuZ2UoKTsKCiAgICB9CiAgICBjYXRjaCAoZSkgewogICAgICB0aGlzLmRpc3BhdGNoRXhjZXB0aW9uKGUpOwogICAgfQogIH0sCgogIG9uU3RhdGVDaGFuZ2U6IGZ1bmN0aW9uKCkgewogICAgdmFyIHJlYWR5U3RhdGUgPSB0aGlzLnRyYW5zcG9ydC5yZWFkeVN0YXRlOwogICAgaWYgKHJlYWR5U3RhdGUgPiAxICYmICEoKHJlYWR5U3RhdGUgPT0gNCkgJiYgdGhpcy5fY29tcGxldGUpKQogICAgICB0aGlzLnJlc3BvbmRUb1JlYWR5U3RhdGUodGhpcy50cmFuc3BvcnQucmVhZHlTdGF0ZSk7CiAgfSwKCiAgc2V0UmVxdWVzdEhlYWRlcnM6IGZ1bmN0aW9uKCkgewogICAgdmFyIGhlYWRlcnMgPSB7CiAgICAgICdYLVJlcXVlc3RlZC1XaXRoJzogJ1hNTEh0dHBSZXF1ZXN0JywKICAgICAgJ1gtUHJvdG90eXBlLVZlcnNpb24nOiBQcm90b3R5cGUuVmVyc2lvbiwKICAgICAgJ0FjY2VwdCc6ICd0ZXh0L2phdmFzY3JpcHQsIHRleHQvaHRtbCwgYXBwbGljYXRpb24veG1sLCB0ZXh0L3htbCwgKi8qJwogICAgfTsKCiAgICBpZiAodGhpcy5tZXRob2QgPT0gJ3Bvc3QnKSB7CiAgICAgIGhlYWRlcnNbJ0NvbnRlbnQtdHlwZSddID0gdGhpcy5vcHRpb25zLmNvbnRlbnRUeXBlICsKICAgICAgICAodGhpcy5vcHRpb25zLmVuY29kaW5nID8gJzsgY2hhcnNldD0nICsgdGhpcy5vcHRpb25zLmVuY29kaW5nIDogJycpOwoKICAgICAgLyogRm9yY2UgIkNvbm5lY3Rpb246IGNsb3NlIiBmb3Igb2xkZXIgTW96aWxsYSBicm93c2VycyB0byB3b3JrCiAgICAgICAqIGFyb3VuZCBhIGJ1ZyB3aGVyZSBYTUxIdHRwUmVxdWVzdCBzZW5kcyBhbiBpbmNvcnJlY3QKICAgICAgICogQ29udGVudC1sZW5ndGggaGVhZGVyLiBTZWUgTW96aWxsYSBCdWd6aWxsYSAjMjQ2NjUxLgogICAgICAgKi8KICAgICAgaWYgKHRoaXMudHJhbnNwb3J0Lm92ZXJyaWRlTWltZVR5cGUgJiYKICAgICAgICAgIChuYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKC9HZWNrb1wvKFxkezR9KS8pIHx8IFswLDIwMDVdKVsxXSA8IDIwMDUpCiAgICAgICAgICAgIGhlYWRlcnNbJ0Nvbm5lY3Rpb24nXSA9ICdjbG9zZSc7CiAgICB9CgogICAgLy8gdXNlci1kZWZpbmVkIGhlYWRlcnMKICAgIGlmICh0eXBlb2YgdGhpcy5vcHRpb25zLnJlcXVlc3RIZWFkZXJzID09ICdvYmplY3QnKSB7CiAgICAgIHZhciBleHRyYXMgPSB0aGlzLm9wdGlvbnMucmVxdWVzdEhlYWRlcnM7CgogICAgICBpZiAoT2JqZWN0LmlzRnVuY3Rpb24oZXh0cmFzLnB1c2gpKQogICAgICAgIGZvciAodmFyIGkgPSAwLCBsZW5ndGggPSBleHRyYXMubGVuZ3RoOyBpIDwgbGVuZ3RoOyBpICs9IDIpCiAgICAgICAgICBoZWFkZXJzW2V4dHJhc1tpXV0gPSBleHRyYXNbaSsxXTsKICAgICAgZWxzZQogICAgICAgICRIKGV4dHJhcykuZWFjaChmdW5jdGlvbihwYWlyKSB7IGhlYWRlcnNbcGFpci5rZXldID0gcGFpci52YWx1ZSB9KTsKICAgIH0KCiAgICBmb3IgKHZhciBuYW1lIGluIGhlYWRlcnMpCiAgICAgIHRoaXMudHJhbnNwb3J0LnNldFJlcXVlc3RIZWFkZXIobmFtZSwgaGVhZGVyc1tuYW1lXSk7CiAgfSwKCiAgc3VjY2VzczogZnVuY3Rpb24oKSB7CiAgICB2YXIgc3RhdHVzID0gdGhpcy5nZXRTdGF0dXMoKTsKICAgIHJldHVybiAhc3RhdHVzIHx8IChzdGF0dXMgPj0gMjAwICYmIHN0YXR1cyA8IDMwMCk7CiAgfSwKCiAgZ2V0U3RhdHVzOiBmdW5jdGlvbigpIHsKICAgIHRyeSB7CiAgICAgIHJldHVybiB0aGlzLnRyYW5zcG9ydC5zdGF0dXMgfHwgMDsKICAgIH0gY2F0Y2ggKGUpIHsgcmV0dXJuIDAgfQogIH0sCgogIHJlc3BvbmRUb1JlYWR5U3RhdGU6IGZ1bmN0aW9uKHJlYWR5U3RhdGUpIHsKICAgIHZhciBzdGF0ZSA9IEFqYXguUmVxdWVzdC5FdmVudHNbcmVhZHlTdGF0ZV0sIHJlc3BvbnNlID0gbmV3IEFqYXguUmVzcG9uc2UodGhpcyk7CgogICAgaWYgKHN0YXRlID09ICdDb21wbGV0ZScpIHsKICAgICAgdHJ5IHsKICAgICAgICB0aGlzLl9jb21wbGV0ZSA9IHRydWU7CiAgICAgICAgKHRoaXMub3B0aW9uc1snb24nICsgcmVzcG9uc2Uuc3RhdHVzXQogICAgICAgICB8fCB0aGlzLm9wdGlvbnNbJ29uJyArICh0aGlzLnN1Y2Nlc3MoKSA/ICdTdWNjZXNzJyA6ICdGYWlsdXJlJyldCiAgICAgICAgIHx8IFByb3RvdHlwZS5lbXB0eUZ1bmN0aW9uKShyZXNwb25zZSwgcmVzcG9uc2UuaGVhZGVySlNPTik7CiAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICB0aGlzLmRpc3BhdGNoRXhjZXB0aW9uKGUpOwogICAgICB9CgogICAgICB2YXIgY29udGVudFR5cGUgPSByZXNwb25zZS5nZXRIZWFkZXIoJ0NvbnRlbnQtdHlwZScpOwogICAgICBpZiAodGhpcy5vcHRpb25zLmV2YWxKUyA9PSAnZm9yY2UnCiAgICAgICAgICB8fCAodGhpcy5vcHRpb25zLmV2YWxKUyAmJiB0aGlzLmlzU2FtZU9yaWdpbigpICYmIGNvbnRlbnRUeXBlCiAgICAgICAgICAmJiBjb250ZW50VHlwZS5tYXRjaCgvXlxzKih0ZXh0fGFwcGxpY2F0aW9uKVwvKHgtKT8oamF2YXxlY21hKXNjcmlwdCg7LiopP1xzKiQvaSkpKQogICAgICAgIHRoaXMuZXZhbFJlc3BvbnNlKCk7CiAgICB9CgogICAgdHJ5IHsKICAgICAgKHRoaXMub3B0aW9uc1snb24nICsgc3RhdGVdIHx8IFByb3RvdHlwZS5lbXB0eUZ1bmN0aW9uKShyZXNwb25zZSwgcmVzcG9uc2UuaGVhZGVySlNPTik7CiAgICAgIEFqYXguUmVzcG9uZGVycy5kaXNwYXRjaCgnb24nICsgc3RhdGUsIHRoaXMsIHJlc3BvbnNlLCByZXNwb25zZS5oZWFkZXJKU09OKTsKICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgdGhpcy5kaXNwYXRjaEV4Y2VwdGlvbihlKTsKICAgIH0KCiAgICBpZiAoc3RhdGUgPT0gJ0NvbXBsZXRlJykgewogICAgICAvLyBhdm9pZCBtZW1vcnkgbGVhayBpbiBNU0lFOiBjbGVhbiB1cAogICAgICB0aGlzLnRyYW5zcG9ydC5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBQcm90b3R5cGUuZW1wdHlGdW5jdGlvbjsKICAgIH0KICB9LAoKICBpc1NhbWVPcmlnaW46IGZ1bmN0aW9uKCkgewogICAgdmFyIG0gPSB0aGlzLnVybC5tYXRjaCgvXlxzKmh0dHBzPzpcL1wvW15cL10qLyk7CiAgICByZXR1cm4gIW0gfHwgKG1bMF0gPT0gJyN7cHJvdG9jb2x9Ly8je2RvbWFpbn0je3BvcnR9Jy5pbnRlcnBvbGF0ZSh7CiAgICAgIHByb3RvY29sOiBsb2NhdGlvbi5wcm90b2NvbCwKICAgICAgZG9tYWluOiBkb2N1bWVudC5kb21haW4sCiAgICAgIHBvcnQ6IGxvY2F0aW9uLnBvcnQgPyAnOicgKyBsb2NhdGlvbi5wb3J0IDogJycKICAgIH0pKTsKICB9LAoKICBnZXRIZWFkZXI6IGZ1bmN0aW9uKG5hbWUpIHsKICAgIHRyeSB7CiAgICAgIHJldHVybiB0aGlzLnRyYW5zcG9ydC5nZXRSZXNwb25zZUhlYWRlcihuYW1lKSB8fCBudWxsOwogICAgfSBjYXRjaCAoZSkgeyByZXR1cm4gbnVsbCB9CiAgfSwKCiAgZXZhbFJlc3BvbnNlOiBmdW5jdGlvbigpIHsKICAgIHRyeSB7CiAgICAgIHJldHVybiBldmFsKCh0aGlzLnRyYW5zcG9ydC5yZXNwb25zZVRleHQgfHwgJycpLnVuZmlsdGVySlNPTigpKTsKICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgdGhpcy5kaXNwYXRjaEV4Y2VwdGlvbihlKTsKICAgIH0KICB9LAoKICBkaXNwYXRjaEV4Y2VwdGlvbjogZnVuY3Rpb24oZXhjZXB0aW9uKSB7CiAgICAodGhpcy5vcHRpb25zLm9uRXhjZXB0aW9uIHx8IFByb3RvdHlwZS5lbXB0eUZ1bmN0aW9uKSh0aGlzLCBleGNlcHRpb24pOwogICAgQWpheC5SZXNwb25kZXJzLmRpc3BhdGNoKCdvbkV4Y2VwdGlvbicsIHRoaXMsIGV4Y2VwdGlvbik7CiAgfQp9KTsKCkFqYXguUmVxdWVzdC5FdmVudHMgPQogIFsnVW5pbml0aWFsaXplZCcsICdMb2FkaW5nJywgJ0xvYWRlZCcsICdJbnRlcmFjdGl2ZScsICdDb21wbGV0ZSddOwoKQWpheC5SZXNwb25zZSA9IENsYXNzLmNyZWF0ZSh7CiAgaW5pdGlhbGl6ZTogZnVuY3Rpb24ocmVxdWVzdCl7CiAgICB0aGlzLnJlcXVlc3QgPSByZXF1ZXN0OwogICAgdmFyIHRyYW5zcG9ydCAgPSB0aGlzLnRyYW5zcG9ydCAgPSByZXF1ZXN0LnRyYW5zcG9ydCwKICAgICAgICByZWFkeVN0YXRlID0gdGhpcy5yZWFkeVN0YXRlID0gdHJhbnNwb3J0LnJlYWR5U3RhdGU7CgogICAgaWYoKHJlYWR5U3RhdGUgPiAyICYmICFQcm90b3R5cGUuQnJvd3Nlci5JRSkgfHwgcmVhZHlTdGF0ZSA9PSA0KSB7CiAgICAgIHRoaXMuc3RhdHVzICAgICAgID0gdGhpcy5nZXRTdGF0dXMoKTsKICAgICAgdGhpcy5zdGF0dXNUZXh0ICAgPSB0aGlzLmdldFN0YXR1c1RleHQoKTsKICAgICAgdGhpcy5yZXNwb25zZVRleHQgPSBTdHJpbmcuaW50ZXJwcmV0KHRyYW5zcG9ydC5yZXNwb25zZVRleHQpOwogICAgICB0aGlzLmhlYWRlckpTT04gICA9IHRoaXMuX2dldEhlYWRlckpTT04oKTsKICAgIH0KCiAgICBpZihyZWFkeVN0YXRlID09IDQpIHsKICAgICAgdmFyIHhtbCA9IHRyYW5zcG9ydC5yZXNwb25zZVhNTDsKICAgICAgdGhpcy5yZXNwb25zZVhNTCAgPSBPYmplY3QuaXNVbmRlZmluZWQoeG1sKSA/IG51bGwgOiB4bWw7CiAgICAgIHRoaXMucmVzcG9uc2VKU09OID0gdGhpcy5fZ2V0UmVzcG9uc2VKU09OKCk7CiAgICB9CiAgfSwKCiAgc3RhdHVzOiAgICAgIDAsCiAgc3RhdHVzVGV4dDogJycsCgogIGdldFN0YXR1czogQWpheC5SZXF1ZXN0LnByb3RvdHlwZS5nZXRTdGF0dXMsCgogIGdldFN0YXR1c1RleHQ6IGZ1bmN0aW9uKCkgewogICAgdHJ5IHsKICAgICAgcmV0dXJuIHRoaXMudHJhbnNwb3J0LnN0YXR1c1RleHQgfHwgJyc7CiAgICB9IGNhdGNoIChlKSB7IHJldHVybiAnJyB9CiAgfSwKCiAgZ2V0SGVhZGVyOiBBamF4LlJlcXVlc3QucHJvdG90eXBlLmdldEhlYWRlciwKCiAgZ2V0QWxsSGVhZGVyczogZnVuY3Rpb24oKSB7CiAgICB0cnkgewogICAgICByZXR1cm4gdGhpcy5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKTsKICAgIH0gY2F0Y2ggKGUpIHsgcmV0dXJuIG51bGwgfQogIH0sCgogIGdldFJlc3BvbnNlSGVhZGVyOiBmdW5jdGlvbihuYW1lKSB7CiAgICByZXR1cm4gdGhpcy50cmFuc3BvcnQuZ2V0UmVzcG9uc2VIZWFkZXIobmFtZSk7CiAgfSwKCiAgZ2V0QWxsUmVzcG9uc2VIZWFkZXJzOiBmdW5jdGlvbigpIHsKICAgIHJldHVybiB0aGlzLnRyYW5zcG9ydC5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKTsKICB9LAoKICBfZ2V0SGVhZGVySlNPTjogZnVuY3Rpb24oKSB7CiAgICB2YXIganNvbiA9IHRoaXMuZ2V0SGVhZGVyKCdYLUpTT04nKTsKICAgIGlmICghanNvbikgcmV0dXJuIG51bGw7CiAgICBqc29uID0gZGVjb2RlVVJJQ29tcG9uZW50KGVzY2FwZShqc29uKSk7CiAgICB0cnkgewogICAgICByZXR1cm4ganNvbi5ldmFsSlNPTih0aGlzLnJlcXVlc3Qub3B0aW9ucy5zYW5pdGl6ZUpTT04gfHwKICAgICAgICAhdGhpcy5yZXF1ZXN0LmlzU2FtZU9yaWdpbigpKTsKICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgdGhpcy5yZXF1ZXN0LmRpc3BhdGNoRXhjZXB0aW9uKGUpOwogICAgfQogIH0sCgogIF9nZXRSZXNwb25zZUpTT046IGZ1bmN0aW9uKCkgewogICAgdmFyIG9wdGlvbnMgPSB0aGlzLnJlcXVlc3Qub3B0aW9uczsKICAgIGlmICghb3B0aW9ucy5ldmFsSlNPTiB8fCAob3B0aW9ucy5ldmFsSlNPTiAhPSAnZm9yY2UnICYmCiAgICAgICEodGhpcy5nZXRIZWFkZXIoJ0NvbnRlbnQtdHlwZScpIHx8ICcnKS5pbmNsdWRlKCdhcHBsaWNhdGlvbi9qc29uJykpIHx8CiAgICAgICAgdGhpcy5yZXNwb25zZVRleHQuYmxhbmsoKSkKICAgICAgICAgIHJldHVybiBudWxsOwogICAgdHJ5IHsKICAgICAgcmV0dXJuIHRoaXMucmVzcG9uc2VUZXh0LmV2YWxKU09OKG9wdGlvbnMuc2FuaXRpemVKU09OIHx8CiAgICAgICAgIXRoaXMucmVxdWVzdC5pc1NhbWVPcmlnaW4oKSk7CiAgICB9IGNhdGNoIChlKSB7CiAgICAgIHRoaXMucmVxdWVzdC5kaXNwYXRjaEV4Y2VwdGlvbihlKTsKICAgIH0KICB9Cn0pOwoKQWpheC5VcGRhdGVyID0gQ2xhc3MuY3JlYXRlKEFqYXguUmVxdWVzdCwgewogIGluaXRpYWxpemU6IGZ1bmN0aW9uKCRzdXBlciwgY29udGFpbmVyLCB1cmwsIG9wdGlvbnMpIHsKICAgIHRoaXMuY29udGFpbmVyID0gewogICAgICBzdWNjZXNzOiAoY29udGFpbmVyLnN1Y2Nlc3MgfHwgY29udGFpbmVyKSwKICAgICAgZmFpbHVyZTogKGNvbnRhaW5lci5mYWlsdXJlIHx8IChjb250YWluZXIuc3VjY2VzcyA/IG51bGwgOiBjb250YWluZXIpKQogICAgfTsKCiAgICBvcHRpb25zID0gT2JqZWN0LmNsb25lKG9wdGlvbnMpOwogICAgdmFyIG9uQ29tcGxldGUgPSBvcHRpb25zLm9uQ29tcGxldGU7CiAgICBvcHRpb25zLm9uQ29tcGxldGUgPSAoZnVuY3Rpb24ocmVzcG9uc2UsIGpzb24pIHsKICAgICAgdGhpcy51cGRhdGVDb250ZW50KHJlc3BvbnNlLnJlc3BvbnNlVGV4dCk7CiAgICAgIGlmIChPYmplY3QuaXNGdW5jdGlvbihvbkNvbXBsZXRlKSkgb25Db21wbGV0ZShyZXNwb25zZSwganNvbik7CiAgICB9KS5iaW5kKHRoaXMpOwoKICAgICRzdXBlcih1cmwsIG9wdGlvbnMpOwogIH0sCgogIHVwZGF0ZUNvbnRlbnQ6IGZ1bmN0aW9uKHJlc3BvbnNlVGV4dCkgewogICAgdmFyIHJlY2VpdmVyID0gdGhpcy5jb250YWluZXJbdGhpcy5zdWNjZXNzKCkgPyAnc3VjY2VzcycgOiAnZmFpbHVyZSddLAogICAgICAgIG9wdGlvbnMgPSB0aGlzLm9wdGlvbnM7CgogICAgaWYgKCFvcHRpb25zLmV2YWxTY3JpcHRzKSByZXNwb25zZVRleHQgPSByZXNwb25zZVRleHQuc3RyaXBTY3JpcHRzKCk7CgogICAgaWYgKHJlY2VpdmVyID0gJChyZWNlaXZlcikpIHsKICAgICAgaWYgKG9wdGlvbnMuaW5zZXJ0aW9uKSB7CiAgICAgICAgaWYgKE9iamVjdC5pc1N0cmluZyhvcHRpb25zLmluc2VydGlvbikpIHsKICAgICAgICAgIHZhciBpbnNlcnRpb24gPSB7IH07IGluc2VydGlvbltvcHRpb25zLmluc2VydGlvbl0gPSByZXNwb25zZVRleHQ7CiAgICAgICAgICByZWNlaXZlci5pbnNlcnQoaW5zZXJ0aW9uKTsKICAgICAgICB9CiAgICAgICAgZWxzZSBvcHRpb25zLmluc2VydGlvbihyZWNlaXZlciwgcmVzcG9uc2VUZXh0KTsKICAgICAgfQogICAgICBlbHNlIHJlY2VpdmVyLnVwZGF0ZShyZXNwb25zZVRleHQpOwogICAgfQogIH0KfSk7CgpBamF4LlBlcmlvZGljYWxVcGRhdGVyID0gQ2xhc3MuY3JlYXRlKEFqYXguQmFzZSwgewogIGluaXRpYWxpemU6IGZ1bmN0aW9uKCRzdXBlciwgY29udGFpbmVyLCB1cmwsIG9wdGlvbnMpIHsKICAgICRzdXBlcihvcHRpb25zKTsKICAgIHRoaXMub25Db21wbGV0ZSA9IHRoaXMub3B0aW9ucy5vbkNvbXBsZXRlOwoKICAgIHRoaXMuZnJlcXVlbmN5ID0gKHRoaXMub3B0aW9ucy5mcmVxdWVuY3kgfHwgMik7CiAgICB0aGlzLmRlY2F5ID0gKHRoaXMub3B0aW9ucy5kZWNheSB8fCAxKTsKCiAgICB0aGlzLnVwZGF0ZXIgPSB7IH07CiAgICB0aGlzLmNvbnRhaW5lciA9IGNvbnRhaW5lcjsKICAgIHRoaXMudXJsID0gdXJsOwoKICAgIHRoaXMuc3RhcnQoKTsKICB9LAoKICBzdGFydDogZnVuY3Rpb24oKSB7CiAgICB0aGlzLm9wdGlvbnMub25Db21wbGV0ZSA9IHRoaXMudXBkYXRlQ29tcGxldGUuYmluZCh0aGlzKTsKICAgIHRoaXMub25UaW1lckV2ZW50KCk7CiAgfSwKCiAgc3RvcDogZnVuY3Rpb24oKSB7CiAgICB0aGlzLnVwZGF0ZXIub3B0aW9ucy5vbkNvbXBsZXRlID0gdW5kZWZpbmVkOwogICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZXIpOwogICAgKHRoaXMub25Db21wbGV0ZSB8fCBQcm90b3R5cGUuZW1wdHlGdW5jdGlvbikuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKICB9LAoKICB1cGRhdGVDb21wbGV0ZTogZnVuY3Rpb24ocmVzcG9uc2UpIHsKICAgIGlmICh0aGlzLm9wdGlvbnMuZGVjYXkpIHsKICAgICAgdGhpcy5kZWNheSA9IChyZXNwb25zZS5yZXNwb25zZVRleHQgPT0gdGhpcy5sYXN0VGV4dCA/CiAgICAgICAgdGhpcy5kZWNheSAqIHRoaXMub3B0aW9ucy5kZWNheSA6IDEpOwoKICAgICAgdGhpcy5sYXN0VGV4dCA9IHJlc3BvbnNlLnJlc3BvbnNlVGV4dDsKICAgIH0KICAgIHRoaXMudGltZXIgPSB0aGlzLm9uVGltZXJFdmVudC5iaW5kKHRoaXMpLmRlbGF5KHRoaXMuZGVjYXkgKiB0aGlzLmZyZXF1ZW5jeSk7CiAgfSwKCiAgb25UaW1lckV2ZW50OiBmdW5jdGlvbigpIHsKICAgIHRoaXMudXBkYXRlciA9IG5ldyBBamF4LlVwZGF0ZXIodGhpcy5jb250YWluZXIsIHRoaXMudXJsLCB0aGlzLm9wdGlvbnMpOwogIH0KfSk7CmZ1bmN0aW9uICQoZWxlbWVudCkgewogIGlmIChhcmd1bWVudHMubGVuZ3RoID4gMSkgewogICAgZm9yICh2YXIgaSA9IDAsIGVsZW1lbnRzID0gW10sIGxlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBsZW5ndGg7IGkrKykKICAgICAgZWxlbWVudHMucHVzaCgkKGFyZ3VtZW50c1tpXSkpOwogICAgcmV0dXJuIGVsZW1lbnRzOwogIH0KICBpZiAoT2JqZWN0LmlzU3RyaW5nKGVsZW1lbnQpKQogICAgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVsZW1lbnQpOwogIHJldHVybiBFbGVtZW50LmV4dGVuZChlbGVtZW50KTsKfQoKaWYgKFByb3RvdHlwZS5Ccm93c2VyRmVhdHVyZXMuWFBhdGgpIHsKICBkb2N1bWVudC5fZ2V0RWxlbWVudHNCeVhQYXRoID0gZnVuY3Rpb24oZXhwcmVzc2lvbiwgcGFyZW50RWxlbWVudCkgewogICAgdmFyIHJlc3VsdHMgPSBbXTsKICAgIHZhciBxdWVyeSA9IGRvY3VtZW50LmV2YWx1YXRlKGV4cHJlc3Npb24sICQocGFyZW50RWxlbWVudCkgfHwgZG9jdW1lbnQsCiAgICAgIG51bGwsIFhQYXRoUmVzdWx0Lk9SREVSRURfTk9ERV9TTkFQU0hPVF9UWVBFLCBudWxsKTsKICAgIGZvciAodmFyIGkgPSAwLCBsZW5ndGggPSBxdWVyeS5zbmFwc2hvdExlbmd0aDsgaSA8IGxlbmd0aDsgaSsrKQogICAgICByZXN1bHRzLnB1c2goRWxlbWVudC5leHRlbmQocXVlcnkuc25hcHNob3RJdGVtKGkpKSk7CiAgICByZXR1cm4gcmVzdWx0czsKICB9Owp9CgovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCmlmICghd2luZG93Lk5vZGUpIHZhciBOb2RlID0geyB9OwoKaWYgKCFOb2RlLkVMRU1FTlRfTk9ERSkgewogIC8vIERPTSBsZXZlbCAyIEVDTUFTY3JpcHQgTGFuZ3VhZ2UgQmluZGluZwogIE9iamVjdC5leHRlbmQoTm9kZSwgewogICAgRUxFTUVOVF9OT0RFOiAxLAogICAgQVRUUklCVVRFX05PREU6IDIsCiAgICBURVhUX05PREU6IDMsCiAgICBDREFUQV9TRUNUSU9OX05PREU6IDQsCiAgICBFTlRJVFlfUkVGRVJFTkNFX05PREU6IDUsCiAgICBFTlRJVFlfTk9ERTogNiwKICAgIFBST0NFU1NJTkdfSU5TVFJVQ1RJT05fTk9ERTogNywKICAgIENPTU1FTlRfTk9ERTogOCwKICAgIERPQ1VNRU5UX05PREU6IDksCiAgICBET0NVTUVOVF9UWVBFX05PREU6IDEwLAogICAgRE9DVU1FTlRfRlJBR01FTlRfTk9ERTogMTEsCiAgICBOT1RBVElPTl9OT0RFOiAxMgogIH0pOwp9CgooZnVuY3Rpb24oKSB7CiAgdmFyIGVsZW1lbnQgPSB0aGlzLkVsZW1lbnQ7CiAgdGhpcy5FbGVtZW50ID0gZnVuY3Rpb24odGFnTmFtZSwgYXR0cmlidXRlcykgewogICAgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZXMgfHwgeyB9OwogICAgdGFnTmFtZSA9IHRhZ05hbWUudG9Mb3dlckNhc2UoKTsKICAgIHZhciBjYWNoZSA9IEVsZW1lbnQuY2FjaGU7CiAgICBpZiAoUHJvdG90eXBlLkJyb3dzZXIuSUUgJiYgYXR0cmlidXRlcy5uYW1lKSB7CiAgICAgIHRhZ05hbWUgPSAnPCcgKyB0YWdOYW1lICsgJyBuYW1lPSInICsgYXR0cmlidXRlcy5uYW1lICsgJyI+JzsKICAgICAgZGVsZXRlIGF0dHJpYnV0ZXMubmFtZTsKICAgICAgcmV0dXJuIEVsZW1lbnQud3JpdGVBdHRyaWJ1dGUoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0YWdOYW1lKSwgYXR0cmlidXRlcyk7CiAgICB9CiAgICBpZiAoIWNhY2hlW3RhZ05hbWVdKSBjYWNoZVt0YWdOYW1lXSA9IEVsZW1lbnQuZXh0ZW5kKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodGFnTmFtZSkpOwogICAgcmV0dXJuIEVsZW1lbnQud3JpdGVBdHRyaWJ1dGUoY2FjaGVbdGFnTmFtZV0uY2xvbmVOb2RlKGZhbHNlKSwgYXR0cmlidXRlcyk7CiAgfTsKICBPYmplY3QuZXh0ZW5kKHRoaXMuRWxlbWVudCwgZWxlbWVudCB8fCB7IH0pOwp9KS5jYWxsKHdpbmRvdyk7CgpFbGVtZW50LmNhY2hlID0geyB9OwoKRWxlbWVudC5NZXRob2RzID0gewogIHZpc2libGU6IGZ1bmN0aW9uKGVsZW1lbnQpIHsKICAgIHJldHVybiAkKGVsZW1lbnQpLnN0eWxlLmRpc3BsYXkgIT0gJ25vbmUnOwogIH0sCgogIHRvZ2dsZTogZnVuY3Rpb24oZWxlbWVudCkgewogICAgZWxlbWVudCA9ICQoZWxlbWVudCk7CiAgICBFbGVtZW50W0VsZW1lbnQudmlzaWJsZShlbGVtZW50KSA/ICdoaWRlJyA6ICdzaG93J10oZWxlbWVudCk7CiAgICByZXR1cm4gZWxlbWVudDsKICB9LAoKICBoaWRlOiBmdW5jdGlvbihlbGVtZW50KSB7CiAgICAkKGVsZW1lbnQpLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICByZXR1cm4gZWxlbWVudDsKICB9LAoKICBzaG93OiBmdW5jdGlvbihlbGVtZW50KSB7CiAgICAkKGVsZW1lbnQpLnN0eWxlLmRpc3BsYXkgPSAnJzsKICAgIHJldHVybiBlbGVtZW50OwogIH0sCgogIHJlbW92ZTogZnVuY3Rpb24oZWxlbWVudCkgewogICAgZWxlbWVudCA9ICQoZWxlbWVudCk7CiAgICBlbGVtZW50LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZWxlbWVudCk7CiAgICByZXR1cm4gZWxlbWVudDsKICB9LAoKICB1cGRhdGU6IGZ1bmN0aW9uKGVsZW1lbnQsIGNvbnRlbnQpIHsKICAgIGVsZW1lbnQgPSAkKGVsZW1lbnQpOwogICAgaWYgKGNvbnRlbnQgJiYgY29udGVudC50b0VsZW1lbnQpIGNvbnRlbnQgPSBjb250ZW50LnRvRWxlbWVudCgpOwogICAgaWYgKE9iamVjdC5pc0VsZW1lbnQoY29udGVudCkpIHJldHVybiBlbGVtZW50LnVwZGF0ZSgpLmluc2VydChjb250ZW50KTsKICAgIGNvbnRlbnQgPSBPYmplY3QudG9IVE1MKGNvbnRlbnQpOwogICAgZWxlbWVudC5pbm5lckhUTUwgPSBjb250ZW50LnN0cmlwU2NyaXB0cygpOwogICAgY29udGVudC5ldmFsU2NyaXB0cy5iaW5kKGNvbnRlbnQpLmRlZmVyKCk7CiAgICByZXR1cm4gZWxlbWVudDsKICB9LAoKICByZXBsYWNlOiBmdW5jdGlvbihlbGVtZW50LCBjb250ZW50KSB7CiAgICBlbGVtZW50ID0gJChlbGVtZW50KTsKICAgIGlmIChjb250ZW50ICYmIGNvbnRlbnQudG9FbGVtZW50KSBjb250ZW50ID0gY29udGVudC50b0VsZW1lbnQoKTsKICAgIGVsc2UgaWYgKCFPYmplY3QuaXNFbGVtZW50KGNvbnRlbnQpKSB7CiAgICAgIGNvbnRlbnQgPSBPYmplY3QudG9IVE1MKGNvbnRlbnQpOwogICAgICB2YXIgcmFuZ2UgPSBlbGVtZW50Lm93bmVyRG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKICAgICAgcmFuZ2Uuc2VsZWN0Tm9kZShlbGVtZW50KTsKICAgICAgY29udGVudC5ldmFsU2NyaXB0cy5iaW5kKGNvbnRlbnQpLmRlZmVyKCk7CiAgICAgIGNvbnRlbnQgPSByYW5nZS5jcmVhdGVDb250ZXh0dWFsRnJhZ21lbnQoY29udGVudC5zdHJpcFNjcmlwdHMoKSk7CiAgICB9CiAgICBlbGVtZW50LnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKGNvbnRlbnQsIGVsZW1lbnQpOwogICAgcmV0dXJuIGVsZW1lbnQ7CiAgfSwKCiAgaW5zZXJ0OiBmdW5jdGlvbihlbGVtZW50LCBpbnNlcnRpb25zKSB7CiAgICBlbGVtZW50ID0gJChlbGVtZW50KTsKCiAgICBpZiAoT2JqZWN0LmlzU3RyaW5nKGluc2VydGlvbnMpIHx8IE9iamVjdC5pc051bWJlcihpbnNlcnRpb25zKSB8fAogICAgICAgIE9iamVjdC5pc0VsZW1lbnQoaW5zZXJ0aW9ucykgfHwgKGluc2VydGlvbnMgJiYgKGluc2VydGlvbnMudG9FbGVtZW50IHx8IGluc2VydGlvbnMudG9IVE1MKSkpCiAgICAgICAgICBpbnNlcnRpb25zID0ge2JvdHRvbTppbnNlcnRpb25zfTsKCiAgICB2YXIgY29udGVudCwgaW5zZXJ0LCB0YWdOYW1lLCBjaGlsZE5vZGVzOwoKICAgIGZvciAodmFyIHBvc2l0aW9uIGluIGluc2VydGlvbnMpIHsKICAgICAgY29udGVudCAgPSBpbnNlcnRpb25zW3Bvc2l0aW9uXTsKICAgICAgcG9zaXRpb24gPSBwb3NpdGlvbi50b0xvd2VyQ2FzZSgpOwogICAgICBpbnNlcnQgPSBFbGVtZW50Ll9pbnNlcnRpb25UcmFuc2xhdGlvbnNbcG9zaXRpb25dOwoKICAgICAgaWYgKGNvbnRlbnQgJiYgY29udGVudC50b0VsZW1lbnQpIGNvbnRlbnQgPSBjb250ZW50LnRvRWxlbWVudCgpOwogICAgICBpZiAoT2JqZWN0LmlzRWxlbWVudChjb250ZW50KSkgewogICAgICAgIGluc2VydChlbGVtZW50LCBjb250ZW50KTsKICAgICAgICBjb250aW51ZTsKICAgICAgfQoKICAgICAgY29udGVudCA9IE9iamVjdC50b0hUTUwoY29udGVudCk7CgogICAgICB0YWdOYW1lID0gKChwb3NpdGlvbiA9PSAnYmVmb3JlJyB8fCBwb3NpdGlvbiA9PSAnYWZ0ZXInKQogICAgICAgID8gZWxlbWVudC5wYXJlbnROb2RlIDogZWxlbWVudCkudGFnTmFtZS50b1VwcGVyQ2FzZSgpOwoKICAgICAgY2hpbGROb2RlcyA9IEVsZW1lbnQuX2dldENvbnRlbnRGcm9tQW5vbnltb3VzRWxlbWVudCh0YWdOYW1lLCBjb250ZW50LnN0cmlwU2NyaXB0cygpKTsKCiAgICAgIGlmIChwb3NpdGlvbiA9PSAndG9wJyB8fCBwb3NpdGlvbiA9PSAnYWZ0ZXInKSBjaGlsZE5vZGVzLnJldmVyc2UoKTsKICAgICAgY2hpbGROb2Rlcy5lYWNoKGluc2VydC5jdXJyeShlbGVtZW50KSk7CgogICAgICBjb250ZW50LmV2YWxTY3JpcHRzLmJpbmQoY29udGVudCkuZGVmZXIoKTsKICAgIH0KCiAgICByZXR1cm4gZWxlbWVudDsKICB9LAoKICB3cmFwOiBmdW5jdGlvbihlbGVtZW50LCB3cmFwcGVyLCBhdHRyaWJ1dGVzKSB7CiAgICBlbGVtZW50ID0gJChlbGVtZW50KTsKICAgIGlmIChPYmplY3QuaXNFbGVtZW50KHdyYXBwZXIpKQogICAgICAkKHdyYXBwZXIpLndyaXRlQXR0cmlidXRlKGF0dHJpYnV0ZXMgfHwgeyB9KTsKICAgIGVsc2UgaWYgKE9iamVjdC5pc1N0cmluZyh3cmFwcGVyKSkgd3JhcHBlciA9IG5ldyBFbGVtZW50KHdyYXBwZXIsIGF0dHJpYnV0ZXMpOwogICAgZWxzZSB3cmFwcGVyID0gbmV3IEVsZW1lbnQoJ2RpdicsIHdyYXBwZXIpOwogICAgaWYgKGVsZW1lbnQucGFyZW50Tm9kZSkKICAgICAgZWxlbWVudC5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZCh3cmFwcGVyLCBlbGVtZW50KTsKICAgIHdyYXBwZXIuYXBwZW5kQ2hpbGQoZWxlbWVudCk7CiAgICByZXR1cm4gd3JhcHBlcjsKICB9LAoKICBpbnNwZWN0OiBmdW5jdGlvbihlbGVtZW50KSB7CiAgICBlbGVtZW50ID0gJChlbGVtZW50KTsKICAgIHZhciByZXN1bHQgPSAnPCcgKyBlbGVtZW50LnRhZ05hbWUudG9Mb3dlckNhc2UoKTsKICAgICRIKHsnaWQnOiAnaWQnLCAnY2xhc3NOYW1lJzogJ2NsYXNzJ30pLmVhY2goZnVuY3Rpb24ocGFpcikgewogICAgICB2YXIgcHJvcGVydHkgPSBwYWlyLmZpcnN0KCksIGF0dHJpYnV0ZSA9IHBhaXIubGFzdCgpOwogICAgICB2YXIgdmFsdWUgPSAoZWxlbWVudFtwcm9wZXJ0eV0gfHwgJycpLnRvU3RyaW5nKCk7CiAgICAgIGlmICh2YWx1ZSkgcmVzdWx0ICs9ICcgJyArIGF0dHJpYnV0ZSArICc9JyArIHZhbHVlLmluc3BlY3QodHJ1ZSk7CiAgICB9KTsKICAgIHJldHVybiByZXN1bHQgKyAnPic7CiAgfSwKCiAgcmVjdXJzaXZlbHlDb2xsZWN0OiBmdW5jdGlvbihlbGVtZW50LCBwcm9wZXJ0eSkgewogICAgZWxlbWVudCA9ICQoZWxlbWVudCk7CiAgICB2YXIgZWxlbWVudHMgPSBbXTsKICAgIHdoaWxlIChlbGVtZW50ID0gZWxlbWVudFtwcm9wZXJ0eV0pCiAgICAgIGlmIChlbGVtZW50Lm5vZGVUeXBlID09IDEpCiAgICAgICAgZWxlbWVudHMucHVzaChFbGVtZW50LmV4dGVuZChlbGVtZW50KSk7CiAgICByZXR1cm4gZWxlbWVudHM7CiAgfSwKCiAgYW5jZXN0b3JzOiBmdW5jdGlvbihlbGVtZW50KSB7CiAgICByZXR1cm4gJChlbGVtZW50KS5yZWN1cnNpdmVseUNvbGxlY3QoJ3BhcmVudE5vZGUnKTsKICB9LAoKICBkZXNjZW5kYW50czogZnVuY3Rpb24oZWxlbWVudCkgewogICAgcmV0dXJuICQoZWxlbWVudCkuc2VsZWN0KCIqIik7CiAgfSwKCiAgZmlyc3REZXNjZW5kYW50OiBmdW5jdGlvbihlbGVtZW50KSB7CiAgICBlbGVtZW50ID0gJChlbGVtZW50KS5maXJzdENoaWxkOwogICAgd2hpbGUgKGVsZW1lbnQgJiYgZWxlbWVudC5ub2RlVHlwZSAhPSAxKSBlbGVtZW50ID0gZWxlbWVudC5uZXh0U2libGluZzsKICAgIHJldHVybiAkKGVsZW1lbnQpOwogIH0sCgogIGltbWVkaWF0ZURlc2NlbmRhbnRzOiBmdW5jdGlvbihlbGVtZW50KSB7CiAgICBpZiAoIShlbGVtZW50ID0gJChlbGVtZW50KS5maXJzdENoaWxkKSkgcmV0dXJuIFtdOwogICAgd2hpbGUgKGVsZW1lbnQgJiYgZWxlbWVudC5ub2RlVHlwZSAhPSAxKSBlbGVtZW50ID0gZWxlbWVudC5uZXh0U2libGluZzsKICAgIGlmIChlbGVtZW50KSByZXR1cm4gW2VsZW1lbnRdLmNvbmNhdCgkKGVsZW1lbnQpLm5leHRTaWJsaW5ncygpKTsKICAgIHJldHVybiBbXTsKICB9LAoKICBwcmV2aW91c1NpYmxpbmdzOiBmdW5jdGlvbihlbGVtZW50KSB7CiAgICByZXR1cm4gJChlbGVtZW50KS5yZWN1cnNpdmVseUNvbGxlY3QoJ3ByZXZpb3VzU2libGluZycpOwogIH0sCgogIG5leHRTaWJsaW5nczogZnVuY3Rpb24oZWxlbWVudCkgewogICAgcmV0dXJuICQoZWxlbWVudCkucmVjdXJzaXZlbHlDb2xsZWN0KCduZXh0U2libGluZycpOwogIH0sCgogIHNpYmxpbmdzOiBmdW5jdGlvbihlbGVtZW50KSB7CiAgICBlbGVtZW50ID0gJChlbGVtZW50KTsKICAgIHJldHVybiBlbGVtZW50LnByZXZpb3VzU2libGluZ3MoKS5yZXZlcnNlKCkuY29uY2F0KGVsZW1lbnQubmV4dFNpYmxpbmdzKCkpOwogIH0sCgogIG1hdGNoOiBmdW5jdGlvbihlbGVtZW50LCBzZWxlY3RvcikgewogICAgaWYgKE9iamVjdC5pc1N0cmluZyhzZWxlY3RvcikpCiAgICAgIHNlbGVjdG9yID0gbmV3IFNlbGVjdG9yKHNlbGVjdG9yKTsKICAgIHJldHVybiBzZWxlY3Rvci5tYXRjaCgkKGVsZW1lbnQpKTsKICB9LAoKICB1cDogZnVuY3Rpb24oZWxlbWVudCwgZXhwcmVzc2lvbiwgaW5kZXgpIHsKICAgIGVsZW1lbnQgPSAkKGVsZW1lbnQpOwogICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT0gMSkgcmV0dXJuICQoZWxlbWVudC5wYXJlbnROb2RlKTsKICAgIHZhciBhbmNlc3RvcnMgPSBlbGVtZW50LmFuY2VzdG9ycygpOwogICAgcmV0dXJuIE9iamVjdC5pc051bWJlcihleHByZXNzaW9uKSA/IGFuY2VzdG9yc1tleHByZXNzaW9uXSA6CiAgICAgIFNlbGVjdG9yLmZpbmRFbGVtZW50KGFuY2VzdG9ycywgZXhwcmVzc2lvbiwgaW5kZXgpOwogIH0sCgogIGRvd246IGZ1bmN0aW9uKGVsZW1lbnQsIGV4cHJlc3Npb24sIGluZGV4KSB7CiAgICBlbGVtZW50ID0gJChlbGVtZW50KTsKICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09IDEpIHJldHVybiBlbGVtZW50LmZpcnN0RGVzY2VuZGFudCgpOwogICAgcmV0dXJuIE9iamVjdC5pc051bWJlcihleHByZXNzaW9uKSA/IGVsZW1lbnQuZGVzY2VuZGFudHMoKVtleHByZXNzaW9uXSA6CiAgICAgIGVsZW1lbnQuc2VsZWN0KGV4cHJlc3Npb24pW2luZGV4IHx8IDBdOwogIH0sCgogIHByZXZpb3VzOiBmdW5jdGlvbihlbGVtZW50LCBleHByZXNzaW9uLCBpbmRleCkgewogICAgZWxlbWVudCA9ICQoZWxlbWVudCk7CiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PSAxKSByZXR1cm4gJChTZWxlY3Rvci5oYW5kbGVycy5wcmV2aW91c0VsZW1lbnRTaWJsaW5nKGVsZW1lbnQpKTsKICAgIHZhciBwcmV2aW91c1NpYmxpbmdzID0gZWxlbWVudC5wcmV2aW91c1NpYmxpbmdzKCk7CiAgICByZXR1cm4gT2JqZWN0LmlzTnVtYmVyKGV4cHJlc3Npb24pID8gcHJldmlvdXNTaWJsaW5nc1tleHByZXNzaW9uXSA6CiAgICAgIFNlbGVjdG9yLmZpbmRFbGVtZW50KHByZXZpb3VzU2libGluZ3MsIGV4cHJlc3Npb24sIGluZGV4KTsKICB9LAoKICBuZXh0OiBmdW5jdGlvbihlbGVtZW50LCBleHByZXNzaW9uLCBpbmRleCkgewogICAgZWxlbWVudCA9ICQoZWxlbWVudCk7CiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PSAxKSByZXR1cm4gJChTZWxlY3Rvci5oYW5kbGVycy5uZXh0RWxlbWVudFNpYmxpbmcoZWxlbWVudCkpOwogICAgdmFyIG5leHRTaWJsaW5ncyA9IGVsZW1lbnQubmV4dFNpYmxpbmdzKCk7CiAgICByZXR1cm4gT2JqZWN0LmlzTnVtYmVyKGV4cHJlc3Npb24pID8gbmV4dFNpYmxpbmdzW2V4cHJlc3Npb25dIDoKICAgICAgU2VsZWN0b3IuZmluZEVsZW1lbnQobmV4dFNpYmxpbmdzLCBleHByZXNzaW9uLCBpbmRleCk7CiAgfSwKCiAgc2VsZWN0OiBmdW5jdGlvbigpIHsKICAgIHZhciBhcmdzID0gJEEoYXJndW1lbnRzKSwgZWxlbWVudCA9ICQoYXJncy5zaGlmdCgpKTsKICAgIHJldHVybiBTZWxlY3Rvci5maW5kQ2hpbGRFbGVtZW50cyhlbGVtZW50LCBhcmdzKTsKICB9LAoKICBhZGphY2VudDogZnVuY3Rpb24oKSB7CiAgICB2YXIgYXJncyA9ICRBKGFyZ3VtZW50cyksIGVsZW1lbnQgPSAkKGFyZ3Muc2hpZnQoKSk7CiAgICByZXR1cm4gU2VsZWN0b3IuZmluZENoaWxkRWxlbWVudHMoZWxlbWVudC5wYXJlbnROb2RlLCBhcmdzKS53aXRob3V0KGVsZW1lbnQpOwogIH0sCgogIGlkZW50aWZ5OiBmdW5jdGlvbihlbGVtZW50KSB7CiAgICBlbGVtZW50ID0gJChlbGVtZW50KTsKICAgIHZhciBpZCA9IGVsZW1lbnQucmVhZEF0dHJpYnV0ZSgnaWQnKSwgc2VsZiA9IGFyZ3VtZW50cy5jYWxsZWU7CiAgICBpZiAoaWQpIHJldHVybiBpZDsKICAgIGRvIHsgaWQgPSAnYW5vbnltb3VzX2VsZW1lbnRfJyArIHNlbGYuY291bnRlcisrIH0gd2hpbGUgKCQoaWQpKTsKICAgIGVsZW1lbnQud3JpdGVBdHRyaWJ1dGUoJ2lkJywgaWQpOwogICAgcmV0dXJuIGlkOwogIH0sCgogIHJlYWRBdHRyaWJ1dGU6IGZ1bmN0aW9uKGVsZW1lbnQsIG5hbWUpIHsKICAgIGVsZW1lbnQgPSAkKGVsZW1lbnQpOwogICAgaWYgKFByb3RvdHlwZS5Ccm93c2VyLklFKSB7CiAgICAgIHZhciB0ID0gRWxlbWVudC5fYXR0cmlidXRlVHJhbnNsYXRpb25zLnJlYWQ7CiAgICAgIGlmICh0LnZhbHVlc1tuYW1lXSkgcmV0dXJuIHQudmFsdWVzW25hbWVdKGVsZW1lbnQsIG5hbWUpOwogICAgICBpZiAodC5uYW1lc1tuYW1lXSkgbmFtZSA9IHQubmFtZXNbbmFtZV07CiAgICAgIGlmIChuYW1lLmluY2x1ZGUoJzonKSkgewogICAgICAgIHJldHVybiAoIWVsZW1lbnQuYXR0cmlidXRlcyB8fCAhZWxlbWVudC5hdHRyaWJ1dGVzW25hbWVdKSA/IG51bGwgOgogICAgICAgICBlbGVtZW50LmF0dHJpYnV0ZXNbbmFtZV0udmFsdWU7CiAgICAgIH0KICAgIH0KICAgIHJldHVybiBlbGVtZW50LmdldEF0dHJpYnV0ZShuYW1lKTsKICB9LAoKICB3cml0ZUF0dHJpYnV0ZTogZnVuY3Rpb24oZWxlbWVudCwgbmFtZSwgdmFsdWUpIHsKICAgIGVsZW1lbnQgPSAkKGVsZW1lbnQpOwogICAgdmFyIGF0dHJpYnV0ZXMgPSB7IH0sIHQgPSBFbGVtZW50Ll9hdHRyaWJ1dGVUcmFuc2xhdGlvbnMud3JpdGU7CgogICAgaWYgKHR5cGVvZiBuYW1lID09ICdvYmplY3QnKSBhdHRyaWJ1dGVzID0gbmFtZTsKICAgIGVsc2UgYXR0cmlidXRlc1tuYW1lXSA9IE9iamVjdC5pc1VuZGVmaW5lZCh2YWx1ZSkgPyB0cnVlIDogdmFsdWU7CgogICAgZm9yICh2YXIgYXR0ciBpbiBhdHRyaWJ1dGVzKSB7CiAgICAgIG5hbWUgPSB0Lm5hbWVzW2F0dHJdIHx8IGF0dHI7CiAgICAgIHZhbHVlID0gYXR0cmlidXRlc1thdHRyXTsKICAgICAgaWYgKHQudmFsdWVzW2F0dHJdKSBuYW1lID0gdC52YWx1ZXNbYXR0cl0oZWxlbWVudCwgdmFsdWUpOwogICAgICBpZiAodmFsdWUgPT09IGZhbHNlIHx8IHZhbHVlID09PSBudWxsKQogICAgICAgIGVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKG5hbWUpOwogICAgICBlbHNlIGlmICh2YWx1ZSA9PT0gdHJ1ZSkKICAgICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZShuYW1lLCBuYW1lKTsKICAgICAgZWxzZSBlbGVtZW50LnNldEF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7CiAgICB9CiAgICByZXR1cm4gZWxlbWVudDsKICB9LAoKICBnZXRIZWlnaHQ6IGZ1bmN0aW9uKGVsZW1lbnQpIHsKICAgIHJldHVybiAkKGVsZW1lbnQpLmdldERpbWVuc2lvbnMoKS5oZWlnaHQ7CiAgfSwKCiAgZ2V0V2lkdGg6IGZ1bmN0aW9uKGVsZW1lbnQpIHsKICAgIHJldHVybiAkKGVsZW1lbnQpLmdldERpbWVuc2lvbnMoKS53aWR0aDsKICB9LAoKICBjbGFzc05hbWVzOiBmdW5jdGlvbihlbGVtZW50KSB7CiAgICByZXR1cm4gbmV3IEVsZW1lbnQuQ2xhc3NOYW1lcyhlbGVtZW50KTsKICB9LAoKICBoYXNDbGFzc05hbWU6IGZ1bmN0aW9uKGVsZW1lbnQsIGNsYXNzTmFtZSkgewogICAgaWYgKCEoZWxlbWVudCA9ICQoZWxlbWVudCkpKSByZXR1cm47CiAgICB2YXIgZWxlbWVudENsYXNzTmFtZSA9IGVsZW1lbnQuY2xhc3NOYW1lOwogICAgcmV0dXJuIChlbGVtZW50Q2xhc3NOYW1lLmxlbmd0aCA+IDAgJiYgKGVsZW1lbnRDbGFzc05hbWUgPT0gY2xhc3NOYW1lIHx8CiAgICAgIG5ldyBSZWdFeHAoIihefFxccykiICsgY2xhc3NOYW1lICsgIihcXHN8JCkiKS50ZXN0KGVsZW1lbnRDbGFzc05hbWUpKSk7CiAgfSwKCiAgYWRkQ2xhc3NOYW1lOiBmdW5jdGlvbihlbGVtZW50LCBjbGFzc05hbWUpIHsKICAgIGlmICghKGVsZW1lbnQgPSAkKGVsZW1lbnQpKSkgcmV0dXJuOwogICAgaWYgKCFlbGVtZW50Lmhhc0NsYXNzTmFtZShjbGFzc05hbWUpKQogICAgICBlbGVtZW50LmNsYXNzTmFtZSArPSAoZWxlbWVudC5jbGFzc05hbWUgPyAnICcgOiAnJykgKyBjbGFzc05hbWU7CiAgICByZXR1cm4gZWxlbWVudDsKICB9LAoKICByZW1vdmVDbGFzc05hbWU6IGZ1bmN0aW9uKGVsZW1lbnQsIGNsYXNzTmFtZSkgewogICAgaWYgKCEoZWxlbWVudCA9ICQoZWxlbWVudCkpKSByZXR1cm47CiAgICBlbGVtZW50LmNsYXNzTmFtZSA9IGVsZW1lbnQuY2xhc3NOYW1lLnJlcGxhY2UoCiAgICAgIG5ldyBSZWdFeHAoIihefFxccyspIiArIGNsYXNzTmFtZSArICIoXFxzK3wkKSIpLCAnICcpLnN0cmlwKCk7CiAgICByZXR1cm4gZWxlbWVudDsKICB9LAoKICB0b2dnbGVDbGFzc05hbWU6IGZ1bmN0aW9uKGVsZW1lbnQsIGNsYXNzTmFtZSkgewogICAgaWYgKCEoZWxlbWVudCA9ICQoZWxlbWVudCkpKSByZXR1cm47CiAgICByZXR1cm4gZWxlbWVudFtlbGVtZW50Lmhhc0NsYXNzTmFtZShjbGFzc05hbWUpID8KICAgICAgJ3JlbW92ZUNsYXNzTmFtZScgOiAnYWRkQ2xhc3NOYW1lJ10oY2xhc3NOYW1lKTsKICB9LAoKICAvLyByZW1vdmVzIHdoaXRlc3BhY2Utb25seSB0ZXh0IG5vZGUgY2hpbGRyZW4KICBjbGVhbldoaXRlc3BhY2U6IGZ1bmN0aW9uKGVsZW1lbnQpIHsKICAgIGVsZW1lbnQgPSAkKGVsZW1lbnQpOwogICAgdmFyIG5vZGUgPSBlbGVtZW50LmZpcnN0Q2hpbGQ7CiAgICB3aGlsZSAobm9kZSkgewogICAgICB2YXIgbmV4dE5vZGUgPSBub2RlLm5leHRTaWJsaW5nOwogICAgICBpZiAobm9kZS5ub2RlVHlwZSA9PSAzICYmICEvXFMvLnRlc3Qobm9kZS5ub2RlVmFsdWUpKQogICAgICAgIGVsZW1lbnQucmVtb3ZlQ2hpbGQobm9kZSk7CiAgICAgIG5vZGUgPSBuZXh0Tm9kZTsKICAgIH0KICAgIHJldHVybiBlbGVtZW50OwogIH0sCgogIGVtcHR5OiBmdW5jdGlvbihlbGVtZW50KSB7CiAgICByZXR1cm4gJChlbGVtZW50KS5pbm5lckhUTUwuYmxhbmsoKTsKICB9LAoKICBkZXNjZW5kYW50T2Y6IGZ1bmN0aW9uKGVsZW1lbnQsIGFuY2VzdG9yKSB7CiAgICBlbGVtZW50ID0gJChlbGVtZW50KSwgYW5jZXN0b3IgPSAkKGFuY2VzdG9yKTsKICAgIHZhciBvcmlnaW5hbEFuY2VzdG9yID0gYW5jZXN0b3I7CgogICAgaWYgKGVsZW1lbnQuY29tcGFyZURvY3VtZW50UG9zaXRpb24pCiAgICAgIHJldHVybiAoZWxlbWVudC5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihhbmNlc3RvcikgJiA4KSA9PT0gODsKCiAgICBpZiAoZWxlbWVudC5zb3VyY2VJbmRleCAmJiAhUHJvdG90eXBlLkJyb3dzZXIuT3BlcmEpIHsKICAgICAgdmFyIGUgPSBlbGVtZW50LnNvdXJjZUluZGV4LCBhID0gYW5jZXN0b3Iuc291cmNlSW5kZXgsCiAgICAgICBuZXh0QW5jZXN0b3IgPSBhbmNlc3Rvci5uZXh0U2libGluZzsKICAgICAgaWYgKCFuZXh0QW5jZXN0b3IpIHsKICAgICAgICBkbyB7IGFuY2VzdG9yID0gYW5jZXN0b3IucGFyZW50Tm9kZTsgfQogICAgICAgIHdoaWxlICghKG5leHRBbmNlc3RvciA9IGFuY2VzdG9yLm5leHRTaWJsaW5nKSAmJiBhbmNlc3Rvci5wYXJlbnROb2RlKTsKICAgICAgfQogICAgICBpZiAobmV4dEFuY2VzdG9yICYmIG5leHRBbmNlc3Rvci5zb3VyY2VJbmRleCkKICAgICAgIHJldHVybiAoZSA+IGEgJiYgZSA8IG5leHRBbmNlc3Rvci5zb3VyY2VJbmRleCk7CiAgICB9CgogICAgd2hpbGUgKGVsZW1lbnQgPSBlbGVtZW50LnBhcmVudE5vZGUpCiAgICAgIGlmIChlbGVtZW50ID09IG9yaWdpbmFsQW5jZXN0b3IpIHJldHVybiB0cnVlOwogICAgcmV0dXJuIGZhbHNlOwogIH0sCgogIHNjcm9sbFRvOiBmdW5jdGlvbihlbGVtZW50KSB7CiAgICBlbGVtZW50ID0gJChlbGVtZW50KTsKICAgIHZhciBwb3MgPSBlbGVtZW50LmN1bXVsYXRpdmVPZmZzZXQoKTsKICAgIHdpbmRvdy5zY3JvbGxUbyhwb3NbMF0sIHBvc1sxXSk7CiAgICByZXR1cm4gZWxlbWVudDsKICB9LAoKICBnZXRTdHlsZTogZnVuY3Rpb24oZWxlbWVudCwgc3R5bGUpIHsKICAgIGVsZW1lbnQgPSAkKGVsZW1lbnQpOwogICAgc3R5bGUgPSBzdHlsZSA9PSAnZmxvYXQnID8gJ2Nzc0Zsb2F0JyA6IHN0eWxlLmNhbWVsaXplKCk7CiAgICB2YXIgdmFsdWUgPSBlbGVtZW50LnN0eWxlW3N0eWxlXTsKICAgIGlmICghdmFsdWUpIHsKICAgICAgdmFyIGNzcyA9IGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZWxlbWVudCwgbnVsbCk7CiAgICAgIHZhbHVlID0gY3NzID8gY3NzW3N0eWxlXSA6IG51bGw7CiAgICB9CiAgICBpZiAoc3R5bGUgPT0gJ29wYWNpdHknKSByZXR1cm4gdmFsdWUgPyBwYXJzZUZsb2F0KHZhbHVlKSA6IDEuMDsKICAgIHJldHVybiB2YWx1ZSA9PSAnYXV0bycgPyBudWxsIDogdmFsdWU7CiAgfSwKCiAgZ2V0T3BhY2l0eTogZnVuY3Rpb24oZWxlbWVudCkgewogICAgcmV0dXJuICQoZWxlbWVudCkuZ2V0U3R5bGUoJ29wYWNpdHknKTsKICB9LAoKICBzZXRTdHlsZTogZnVuY3Rpb24oZWxlbWVudCwgc3R5bGVzKSB7CiAgICBlbGVtZW50ID0gJChlbGVtZW50KTsKICAgIHZhciBlbGVtZW50U3R5bGUgPSBlbGVtZW50LnN0eWxlLCBtYXRjaDsKICAgIGlmIChPYmplY3QuaXNTdHJpbmcoc3R5bGVzKSkgewogICAgICBlbGVtZW50LnN0eWxlLmNzc1RleHQgKz0gJzsnICsgc3R5bGVzOwogICAgICByZXR1cm4gc3R5bGVzLmluY2x1ZGUoJ29wYWNpdHknKSA/CiAgICAgICAgZWxlbWVudC5zZXRPcGFjaXR5KHN0eWxlcy5tYXRjaCgvb3BhY2l0eTpccyooXGQ/XC4/XGQqKS8pWzFdKSA6IGVsZW1lbnQ7CiAgICB9CiAgICBmb3IgKHZhciBwcm9wZXJ0eSBpbiBzdHlsZXMpCiAgICAgIGlmIChwcm9wZXJ0eSA9PSAnb3BhY2l0eScpIGVsZW1lbnQuc2V0T3BhY2l0eShzdHlsZXNbcHJvcGVydHldKTsKICAgICAgZWxzZQogICAgICAgIGVsZW1lbnRTdHlsZVsocHJvcGVydHkgPT0gJ2Zsb2F0JyB8fCBwcm9wZXJ0eSA9PSAnY3NzRmxvYXQnKSA/CiAgICAgICAgICAoT2JqZWN0LmlzVW5kZWZpbmVkKGVsZW1lbnRTdHlsZS5zdHlsZUZsb2F0KSA/ICdjc3NGbG9hdCcgOiAnc3R5bGVGbG9hdCcpIDoKICAgICAgICAgICAgcHJvcGVydHldID0gc3R5bGVzW3Byb3BlcnR5XTsKCiAgICByZXR1cm4gZWxlbWVudDsKICB9LAoKICBzZXRPcGFjaXR5OiBmdW5jdGlvbihlbGVtZW50LCB2YWx1ZSkgewogICAgZWxlbWVudCA9ICQoZWxlbWVudCk7CiAgICBlbGVtZW50LnN0eWxlLm9wYWNpdHkgPSAodmFsdWUgPT0gMSB8fCB2YWx1ZSA9PT0gJycpID8gJycgOgogICAgICAodmFsdWUgPCAwLjAwMDAxKSA/IDAgOiB2YWx1ZTsKICAgIHJldHVybiBlbGVtZW50OwogIH0sCgogIGdldERpbWVuc2lvbnM6IGZ1bmN0aW9uKGVsZW1lbnQpIHsKICAgIGVsZW1lbnQgPSAkKGVsZW1lbnQpOwogICAgdmFyIGRpc3BsYXkgPSAkKGVsZW1lbnQpLmdldFN0eWxlKCdkaXNwbGF5Jyk7CiAgICBpZiAoZGlzcGxheSAhPSAnbm9uZScgJiYgZGlzcGxheSAhPSBudWxsKSAvLyBTYWZhcmkgYnVnCiAgICAgIHJldHVybiB7d2lkdGg6IGVsZW1lbnQub2Zmc2V0V2lkdGgsIGhlaWdodDogZWxlbWVudC5vZmZzZXRIZWlnaHR9OwoKICAgIC8vIEFsbCAqV2lkdGggYW5kICpIZWlnaHQgcHJvcGVydGllcyBnaXZlIDAgb24gZWxlbWVudHMgd2l0aCBkaXNwbGF5IG5vbmUsCiAgICAvLyBzbyBlbmFibGUgdGhlIGVsZW1lbnQgdGVtcG9yYXJpbHkKICAgIHZhciBlbHMgPSBlbGVtZW50LnN0eWxlOwogICAgdmFyIG9yaWdpbmFsVmlzaWJpbGl0eSA9IGVscy52aXNpYmlsaXR5OwogICAgdmFyIG9yaWdpbmFsUG9zaXRpb24gPSBlbHMucG9zaXRpb247CiAgICB2YXIgb3JpZ2luYWxEaXNwbGF5ID0gZWxzLmRpc3BsYXk7CiAgICBlbHMudmlzaWJpbGl0eSA9ICdoaWRkZW4nOwogICAgZWxzLnBvc2l0aW9uID0gJ2Fic29sdXRlJzsKICAgIGVscy5kaXNwbGF5ID0gJ2Jsb2NrJzsKICAgIHZhciBvcmlnaW5hbFdpZHRoID0gZWxlbWVudC5jbGllbnRXaWR0aDsKICAgIHZhciBvcmlnaW5hbEhlaWdodCA9IGVsZW1lbnQuY2xpZW50SGVpZ2h0OwogICAgZWxzLmRpc3BsYXkgPSBvcmlnaW5hbERpc3BsYXk7CiAgICBlbHMucG9zaXRpb24gPSBvcmlnaW5hbFBvc2l0aW9uOwogICAgZWxzLnZpc2liaWxpdHkgPSBvcmlnaW5hbFZpc2liaWxpdHk7CiAgICByZXR1cm4ge3dpZHRoOiBvcmlnaW5hbFdpZHRoLCBoZWlnaHQ6IG9yaWdpbmFsSGVpZ2h0fTsKICB9LAoKICBtYWtlUG9zaXRpb25lZDogZnVuY3Rpb24oZWxlbWVudCkgewogICAgZWxlbWVudCA9ICQoZWxlbWVudCk7CiAgICB2YXIgcG9zID0gRWxlbWVudC5nZXRTdHlsZShlbGVtZW50LCAncG9zaXRpb24nKTsKICAgIGlmIChwb3MgPT0gJ3N0YXRpYycgfHwgIXBvcykgewogICAgICBlbGVtZW50Ll9tYWRlUG9zaXRpb25lZCA9IHRydWU7CiAgICAgIGVsZW1lbnQuc3R5bGUucG9zaXRpb24gPSAncmVsYXRpdmUnOwogICAgICAvLyBPcGVyYSByZXR1cm5zIHRoZSBvZmZzZXQgcmVsYXRpdmUgdG8gdGhlIHBvc2l0aW9uaW5nIGNvbnRleHQsIHdoZW4gYW4KICAgICAgLy8gZWxlbWVudCBpcyBwb3NpdGlvbiByZWxhdGl2ZSBidXQgdG9wIGFuZCBsZWZ0IGhhdmUgbm90IGJlZW4gZGVmaW5lZAogICAgICBpZiAod2luZG93Lm9wZXJhKSB7CiAgICAgICAgZWxlbWVudC5zdHlsZS50b3AgPSAwOwogICAgICAgIGVsZW1lbnQuc3R5bGUubGVmdCA9IDA7CiAgICAgIH0KICAgIH0KICAgIHJldHVybiBlbGVtZW50OwogIH0sCgogIHVuZG9Qb3NpdGlvbmVkOiBmdW5jdGlvbihlbGVtZW50KSB7CiAgICBlbGVtZW50ID0gJChlbGVtZW50KTsKICAgIGlmIChlbGVtZW50Ll9tYWRlUG9zaXRpb25lZCkgewogICAgICBlbGVtZW50Ll9tYWRlUG9zaXRpb25lZCA9IHVuZGVmaW5lZDsKICAgICAgZWxlbWVudC5zdHlsZS5wb3NpdGlvbiA9CiAgICAgICAgZWxlbWVudC5zdHlsZS50b3AgPQogICAgICAgIGVsZW1lbnQuc3R5bGUubGVmdCA9CiAgICAgICAgZWxlbWVudC5zdHlsZS5ib3R0b20gPQogICAgICAgIGVsZW1lbnQuc3R5bGUucmlnaHQgPSAnJzsKICAgIH0KICAgIHJldHVybiBlbGVtZW50OwogIH0sCgogIG1ha2VDbGlwcGluZzogZnVuY3Rpb24oZWxlbWVudCkgewogICAgZWxlbWVudCA9ICQoZWxlbWVudCk7CiAgICBpZiAoZWxlbWVudC5fb3ZlcmZsb3cpIHJldHVybiBlbGVtZW50OwogICAgZWxlbWVudC5fb3ZlcmZsb3cgPSBFbGVtZW50LmdldFN0eWxlKGVsZW1lbnQsICdvdmVyZmxvdycpIHx8ICdhdXRvJzsKICAgIGlmIChlbGVtZW50Ll9vdmVyZmxvdyAhPT0gJ2hpZGRlbicpCiAgICAgIGVsZW1lbnQuc3R5bGUub3ZlcmZsb3cgPSAnaGlkZGVuJzsKICAgIHJldHVybiBlbGVtZW50OwogIH0sCgogIHVuZG9DbGlwcGluZzogZnVuY3Rpb24oZWxlbWVudCkgewogICAgZWxlbWVudCA9ICQoZWxlbWVudCk7CiAgICBpZiAoIWVsZW1lbnQuX292ZXJmbG93KSByZXR1cm4gZWxlbWVudDsKICAgIGVsZW1lbnQuc3R5bGUub3ZlcmZsb3cgPSBlbGVtZW50Ll9vdmVyZmxvdyA9PSAnYXV0bycgPyAnJyA6IGVsZW1lbnQuX292ZXJmbG93OwogICAgZWxlbWVudC5fb3ZlcmZsb3cgPSBudWxsOwogICAgcmV0dXJuIGVsZW1lbnQ7CiAgfSwKCiAgY3VtdWxhdGl2ZU9mZnNldDogZnVuY3Rpb24oZWxlbWVudCkgewogICAgdmFyIHZhbHVlVCA9IDAsIHZhbHVlTCA9IDA7CiAgICBkbyB7CiAgICAgIHZhbHVlVCArPSBlbGVtZW50Lm9mZnNldFRvcCAgfHwgMDsKICAgICAgdmFsdWVMICs9IGVsZW1lbnQub2Zmc2V0TGVmdCB8fCAwOwogICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CiAgICB9IHdoaWxlIChlbGVtZW50KTsKICAgIHJldHVybiBFbGVtZW50Ll9yZXR1cm5PZmZzZXQodmFsdWVMLCB2YWx1ZVQpOwogIH0sCgogIHBvc2l0aW9uZWRPZmZzZXQ6IGZ1bmN0aW9uKGVsZW1lbnQpIHsKICAgIHZhciB2YWx1ZVQgPSAwLCB2YWx1ZUwgPSAwOwogICAgZG8gewogICAgICB2YWx1ZVQgKz0gZWxlbWVudC5vZmZzZXRUb3AgIHx8IDA7CiAgICAgIHZhbHVlTCArPSBlbGVtZW50Lm9mZnNldExlZnQgfHwgMDsKICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OwogICAgICBpZiAoZWxlbWVudCkgewogICAgICAgIGlmIChlbGVtZW50LnRhZ05hbWUgPT0gJ0JPRFknKSBicmVhazsKICAgICAgICB2YXIgcCA9IEVsZW1lbnQuZ2V0U3R5bGUoZWxlbWVudCwgJ3Bvc2l0aW9uJyk7CiAgICAgICAgaWYgKHAgIT09ICdzdGF0aWMnKSBicmVhazsKICAgICAgfQogICAgfSB3aGlsZSAoZWxlbWVudCk7CiAgICByZXR1cm4gRWxlbWVudC5fcmV0dXJuT2Zmc2V0KHZhbHVlTCwgdmFsdWVUKTsKICB9LAoKICBhYnNvbHV0aXplOiBmdW5jdGlvbihlbGVtZW50KSB7CiAgICBlbGVtZW50ID0gJChlbGVtZW50KTsKICAgIGlmIChlbGVtZW50LmdldFN0eWxlKCdwb3NpdGlvbicpID09ICdhYnNvbHV0ZScpIHJldHVybjsKICAgIC8vIFBvc2l0aW9uLnByZXBhcmUoKTsgLy8gVG8gYmUgZG9uZSBtYW51YWxseSBieSBTY3JpcHR5IHdoZW4gaXQgbmVlZHMgaXQuCgogICAgdmFyIG9mZnNldHMgPSBlbGVtZW50LnBvc2l0aW9uZWRPZmZzZXQoKTsKICAgIHZhciB0b3AgICAgID0gb2Zmc2V0c1sxXTsKICAgIHZhciBsZWZ0ICAgID0gb2Zmc2V0c1swXTsKICAgIHZhciB3aWR0aCAgID0gZWxlbWVudC5jbGllbnRXaWR0aDsKICAgIHZhciBoZWlnaHQgID0gZWxlbWVudC5jbGllbnRIZWlnaHQ7CgogICAgZWxlbWVudC5fb3JpZ2luYWxMZWZ0ICAgPSBsZWZ0IC0gcGFyc2VGbG9hdChlbGVtZW50LnN0eWxlLmxlZnQgIHx8IDApOwogICAgZWxlbWVudC5fb3JpZ2luYWxUb3AgICAgPSB0b3AgIC0gcGFyc2VGbG9hdChlbGVtZW50LnN0eWxlLnRvcCB8fCAwKTsKICAgIGVsZW1lbnQuX29yaWdpbmFsV2lkdGggID0gZWxlbWVudC5zdHlsZS53aWR0aDsKICAgIGVsZW1lbnQuX29yaWdpbmFsSGVpZ2h0ID0gZWxlbWVudC5zdHlsZS5oZWlnaHQ7CgogICAgZWxlbWVudC5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7CiAgICBlbGVtZW50LnN0eWxlLnRvcCAgICA9IHRvcCArICdweCc7CiAgICBlbGVtZW50LnN0eWxlLmxlZnQgICA9IGxlZnQgKyAncHgnOwogICAgZWxlbWVudC5zdHlsZS53aWR0aCAgPSB3aWR0aCArICdweCc7CiAgICBlbGVtZW50LnN0eWxlLmhlaWdodCA9IGhlaWdodCArICdweCc7CiAgICByZXR1cm4gZWxlbWVudDsKICB9LAoKICByZWxhdGl2aXplOiBmdW5jdGlvbihlbGVtZW50KSB7CiAgICBlbGVtZW50ID0gJChlbGVtZW50KTsKICAgIGlmIChlbGVtZW50LmdldFN0eWxlKCdwb3NpdGlvbicpID09ICdyZWxhdGl2ZScpIHJldHVybjsKICAgIC8vIFBvc2l0aW9uLnByZXBhcmUoKTsgLy8gVG8gYmUgZG9uZSBtYW51YWxseSBieSBTY3JpcHR5IHdoZW4gaXQgbmVlZHMgaXQuCgogICAgZWxlbWVudC5zdHlsZS5wb3NpdGlvbiA9ICdyZWxhdGl2ZSc7CiAgICB2YXIgdG9wICA9IHBhcnNlRmxvYXQoZWxlbWVudC5zdHlsZS50b3AgIHx8IDApIC0gKGVsZW1lbnQuX29yaWdpbmFsVG9wIHx8IDApOwogICAgdmFyIGxlZnQgPSBwYXJzZUZsb2F0KGVsZW1lbnQuc3R5bGUubGVmdCB8fCAwKSAtIChlbGVtZW50Ll9vcmlnaW5hbExlZnQgfHwgMCk7CgogICAgZWxlbWVudC5zdHlsZS50b3AgICAgPSB0b3AgKyAncHgnOwogICAgZWxlbWVudC5zdHlsZS5sZWZ0ICAgPSBsZWZ0ICsgJ3B4JzsKICAgIGVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gZWxlbWVudC5fb3JpZ2luYWxIZWlnaHQ7CiAgICBlbGVtZW50LnN0eWxlLndpZHRoICA9IGVsZW1lbnQuX29yaWdpbmFsV2lkdGg7CiAgICByZXR1cm4gZWxlbWVudDsKICB9LAoKICBjdW11bGF0aXZlU2Nyb2xsT2Zmc2V0OiBmdW5jdGlvbihlbGVtZW50KSB7CiAgICB2YXIgdmFsdWVUID0gMCwgdmFsdWVMID0gMDsKICAgIGRvIHsKICAgICAgdmFsdWVUICs9IGVsZW1lbnQuc2Nyb2xsVG9wICB8fCAwOwogICAgICB2YWx1ZUwgKz0gZWxlbWVudC5zY3JvbGxMZWZ0IHx8IDA7CiAgICAgIGVsZW1lbnQgPSBlbGVtZW50LnBhcmVudE5vZGU7CiAgICB9IHdoaWxlIChlbGVtZW50KTsKICAgIHJldHVybiBFbGVtZW50Ll9yZXR1cm5PZmZzZXQodmFsdWVMLCB2YWx1ZVQpOwogIH0sCgogIGdldE9mZnNldFBhcmVudDogZnVuY3Rpb24oZWxlbWVudCkgewogICAgaWYgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSByZXR1cm4gJChlbGVtZW50Lm9mZnNldFBhcmVudCk7CiAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5ib2R5KSByZXR1cm4gJChlbGVtZW50KTsKCiAgICB3aGlsZSAoKGVsZW1lbnQgPSBlbGVtZW50LnBhcmVudE5vZGUpICYmIGVsZW1lbnQgIT0gZG9jdW1lbnQuYm9keSkKICAgICAgaWYgKEVsZW1lbnQuZ2V0U3R5bGUoZWxlbWVudCwgJ3Bvc2l0aW9uJykgIT0gJ3N0YXRpYycpCiAgICAgICAgcmV0dXJuICQoZWxlbWVudCk7CgogICAgcmV0dXJuICQoZG9jdW1lbnQuYm9keSk7CiAgfSwKCiAgdmlld3BvcnRPZmZzZXQ6IGZ1bmN0aW9uKGZvckVsZW1lbnQpIHsKICAgIHZhciB2YWx1ZVQgPSAwLCB2YWx1ZUwgPSAwOwoKICAgIHZhciBlbGVtZW50ID0gZm9yRWxlbWVudDsKICAgIGRvIHsKICAgICAgdmFsdWVUICs9IGVsZW1lbnQub2Zmc2V0VG9wICB8fCAwOwogICAgICB2YWx1ZUwgKz0gZWxlbWVudC5vZmZzZXRMZWZ0IHx8IDA7CgogICAgICAvLyBTYWZhcmkgZml4CiAgICAgIGlmIChlbGVtZW50Lm9mZnNldFBhcmVudCA9PSBkb2N1bWVudC5ib2R5ICYmCiAgICAgICAgRWxlbWVudC5nZXRTdHlsZShlbGVtZW50LCAncG9zaXRpb24nKSA9PSAnYWJzb2x1dGUnKSBicmVhazsKCiAgICB9IHdoaWxlIChlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQpOwoKICAgIGVsZW1lbnQgPSBmb3JFbGVtZW50OwogICAgZG8gewogICAgICBpZiAoIVByb3RvdHlwZS5Ccm93c2VyLk9wZXJhIHx8IGVsZW1lbnQudGFnTmFtZSA9PSAnQk9EWScpIHsKICAgICAgICB2YWx1ZVQgLT0gZWxlbWVudC5zY3JvbGxUb3AgIHx8IDA7CiAgICAgICAgdmFsdWVMIC09IGVsZW1lbnQuc2Nyb2xsTGVmdCB8fCAwOwogICAgICB9CiAgICB9IHdoaWxlIChlbGVtZW50ID0gZWxlbWVudC5wYXJlbnROb2RlKTsKCiAgICByZXR1cm4gRWxlbWVudC5fcmV0dXJuT2Zmc2V0KHZhbHVlTCwgdmFsdWVUKTsKICB9LAoKICBjbG9uZVBvc2l0aW9uOiBmdW5jdGlvbihlbGVtZW50LCBzb3VyY2UpIHsKICAgIHZhciBvcHRpb25zID0gT2JqZWN0LmV4dGVuZCh7CiAgICAgIHNldExlZnQ6ICAgIHRydWUsCiAgICAgIHNldFRvcDogICAgIHRydWUsCiAgICAgIHNldFdpZHRoOiAgIHRydWUsCiAgICAgIHNldEhlaWdodDogIHRydWUsCiAgICAgIG9mZnNldFRvcDogIDAsCiAgICAgIG9mZnNldExlZnQ6IDAKICAgIH0sIGFyZ3VtZW50c1syXSB8fCB7IH0pOwoKICAgIC8vIGZpbmQgcGFnZSBwb3NpdGlvbiBvZiBzb3VyY2UKICAgIHNvdXJjZSA9ICQoc291cmNlKTsKICAgIHZhciBwID0gc291cmNlLnZpZXdwb3J0T2Zmc2V0KCk7CgogICAgLy8gZmluZCBjb29yZGluYXRlIHN5c3RlbSB0byB1c2UKICAgIGVsZW1lbnQgPSAkKGVsZW1lbnQpOwogICAgdmFyIGRlbHRhID0gWzAsIDBdOwogICAgdmFyIHBhcmVudCA9IG51bGw7CiAgICAvLyBkZWx0YSBbMCwwXSB3aWxsIGRvIGZpbmUgd2l0aCBwb3NpdGlvbjogZml4ZWQgZWxlbWVudHMsCiAgICAvLyBwb3NpdGlvbjphYnNvbHV0ZSBuZWVkcyBvZmZzZXRQYXJlbnQgZGVsdGFzCiAgICBpZiAoRWxlbWVudC5nZXRTdHlsZShlbGVtZW50LCAncG9zaXRpb24nKSA9PSAnYWJzb2x1dGUnKSB7CiAgICAgIHBhcmVudCA9IGVsZW1lbnQuZ2V0T2Zmc2V0UGFyZW50KCk7CiAgICAgIGRlbHRhID0gcGFyZW50LnZpZXdwb3J0T2Zmc2V0KCk7CiAgICB9CgogICAgLy8gY29ycmVjdCBieSBib2R5IG9mZnNldHMgKGZpeGVzIFNhZmFyaSkKICAgIGlmIChwYXJlbnQgPT0gZG9jdW1lbnQuYm9keSkgewogICAgICBkZWx0YVswXSAtPSBkb2N1bWVudC5ib2R5Lm9mZnNldExlZnQ7CiAgICAgIGRlbHRhWzFdIC09IGRvY3VtZW50LmJvZHkub2Zmc2V0VG9wOwogICAgfQoKICAgIC8vIHNldCBwb3NpdGlvbgogICAgaWYgKG9wdGlvbnMuc2V0TGVmdCkgICBlbGVtZW50LnN0eWxlLmxlZnQgID0gKHBbMF0gLSBkZWx0YVswXSArIG9wdGlvbnMub2Zmc2V0TGVmdCkgKyAncHgnOwogICAgaWYgKG9wdGlvbnMuc2V0VG9wKSAgICBlbGVtZW50LnN0eWxlLnRvcCAgID0gKHBbMV0gLSBkZWx0YVsxXSArIG9wdGlvbnMub2Zmc2V0VG9wKSArICdweCc7CiAgICBpZiAob3B0aW9ucy5zZXRXaWR0aCkgIGVsZW1lbnQuc3R5bGUud2lkdGggPSBzb3VyY2Uub2Zmc2V0V2lkdGggKyAncHgnOwogICAgaWYgKG9wdGlvbnMuc2V0SGVpZ2h0KSBlbGVtZW50LnN0eWxlLmhlaWdodCA9IHNvdXJjZS5vZmZzZXRIZWlnaHQgKyAncHgnOwogICAgcmV0dXJuIGVsZW1lbnQ7CiAgfQp9OwoKRWxlbWVudC5NZXRob2RzLmlkZW50aWZ5LmNvdW50ZXIgPSAxOwoKT2JqZWN0LmV4dGVuZChFbGVtZW50Lk1ldGhvZHMsIHsKICBnZXRFbGVtZW50c0J5U2VsZWN0b3I6IEVsZW1lbnQuTWV0aG9kcy5zZWxlY3QsCiAgY2hpbGRFbGVtZW50czogRWxlbWVudC5NZXRob2RzLmltbWVkaWF0ZURlc2NlbmRhbnRzCn0pOwoKRWxlbWVudC5fYXR0cmlidXRlVHJhbnNsYXRpb25zID0gewogIHdyaXRlOiB7CiAgICBuYW1lczogewogICAgICBjbGFzc05hbWU6ICdjbGFzcycsCiAgICAgIGh0bWxGb3I6ICAgJ2ZvcicKICAgIH0sCiAgICB2YWx1ZXM6IHsgfQogIH0KfTsKCmlmIChQcm90b3R5cGUuQnJvd3Nlci5PcGVyYSkgewogIEVsZW1lbnQuTWV0aG9kcy5nZXRTdHlsZSA9IEVsZW1lbnQuTWV0aG9kcy5nZXRTdHlsZS53cmFwKAogICAgZnVuY3Rpb24ocHJvY2VlZCwgZWxlbWVudCwgc3R5bGUpIHsKICAgICAgc3dpdGNoIChzdHlsZSkgewogICAgICAgIGNhc2UgJ2xlZnQnOiBjYXNlICd0b3AnOiBjYXNlICdyaWdodCc6IGNhc2UgJ2JvdHRvbSc6CiAgICAgICAgICBpZiAocHJvY2VlZChlbGVtZW50LCAncG9zaXRpb24nKSA9PT0gJ3N0YXRpYycpIHJldHVybiBudWxsOwogICAgICAgIGNhc2UgJ2hlaWdodCc6IGNhc2UgJ3dpZHRoJzoKICAgICAgICAgIC8vIHJldHVybnMgJzBweCcgZm9yIGhpZGRlbiBlbGVtZW50czsgd2Ugd2FudCBpdCB0byByZXR1cm4gbnVsbAogICAgICAgICAgaWYgKCFFbGVtZW50LnZpc2libGUoZWxlbWVudCkpIHJldHVybiBudWxsOwoKICAgICAgICAgIC8vIHJldHVybnMgdGhlIGJvcmRlci1ib3ggZGltZW5zaW9ucyByYXRoZXIgdGhhbiB0aGUgY29udGVudC1ib3gKICAgICAgICAgIC8vIGRpbWVuc2lvbnMsIHNvIHdlIHN1YnRyYWN0IHBhZGRpbmcgYW5kIGJvcmRlcnMgZnJvbSB0aGUgdmFsdWUKICAgICAgICAgIHZhciBkaW0gPSBwYXJzZUludChwcm9jZWVkKGVsZW1lbnQsIHN0eWxlKSwgMTApOwoKICAgICAgICAgIGlmIChkaW0gIT09IGVsZW1lbnRbJ29mZnNldCcgKyBzdHlsZS5jYXBpdGFsaXplKCldKQogICAgICAgICAgICByZXR1cm4gZGltICsgJ3B4JzsKCiAgICAgICAgICB2YXIgcHJvcGVydGllczsKICAgICAgICAgIGlmIChzdHlsZSA9PT0gJ2hlaWdodCcpIHsKICAgICAgICAgICAgcHJvcGVydGllcyA9IFsnYm9yZGVyLXRvcC13aWR0aCcsICdwYWRkaW5nLXRvcCcsCiAgICAgICAgICAgICAncGFkZGluZy1ib3R0b20nLCAnYm9yZGVyLWJvdHRvbS13aWR0aCddOwogICAgICAgICAgfQogICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIHByb3BlcnRpZXMgPSBbJ2JvcmRlci1sZWZ0LXdpZHRoJywgJ3BhZGRpbmctbGVmdCcsCiAgICAgICAgICAgICAncGFkZGluZy1yaWdodCcsICdib3JkZXItcmlnaHQtd2lkdGgnXTsKICAgICAgICAgIH0KICAgICAgICAgIHJldHVybiBwcm9wZXJ0aWVzLmluamVjdChkaW0sIGZ1bmN0aW9uKG1lbW8sIHByb3BlcnR5KSB7CiAgICAgICAgICAgIHZhciB2YWwgPSBwcm9jZWVkKGVsZW1lbnQsIHByb3BlcnR5KTsKICAgICAgICAgICAgcmV0dXJuIHZhbCA9PT0gbnVsbCA/IG1lbW8gOiBtZW1vIC0gcGFyc2VJbnQodmFsLCAxMCk7CiAgICAgICAgICB9KSArICdweCc7CiAgICAgICAgZGVmYXVsdDogcmV0dXJuIHByb2NlZWQoZWxlbWVudCwgc3R5bGUpOwogICAgICB9CiAgICB9CiAgKTsKCiAgRWxlbWVudC5NZXRob2RzLnJlYWRBdHRyaWJ1dGUgPSBFbGVtZW50Lk1ldGhvZHMucmVhZEF0dHJpYnV0ZS53cmFwKAogICAgZnVuY3Rpb24ocHJvY2VlZCwgZWxlbWVudCwgYXR0cmlidXRlKSB7CiAgICAgIGlmIChhdHRyaWJ1dGUgPT09ICd0aXRsZScpIHJldHVybiBlbGVtZW50LnRpdGxlOwogICAgICByZXR1cm4gcHJvY2VlZChlbGVtZW50LCBhdHRyaWJ1dGUpOwogICAgfQogICk7Cn0KCmVsc2UgaWYgKFByb3RvdHlwZS5Ccm93c2VyLklFKSB7CiAgLy8gSUUgZG9lc24ndCByZXBvcnQgb2Zmc2V0cyBjb3JyZWN0bHkgZm9yIHN0YXRpYyBlbGVtZW50cywgc28gd2UgY2hhbmdlIHRoZW0KICAvLyB0byAicmVsYXRpdmUiIHRvIGdldCB0aGUgdmFsdWVzLCB0aGVuIGNoYW5nZSB0aGVtIGJhY2suCiAgRWxlbWVudC5NZXRob2RzLmdldE9mZnNldFBhcmVudCA9IEVsZW1lbnQuTWV0aG9kcy5nZXRPZmZzZXRQYXJlbnQud3JhcCgKICAgIGZ1bmN0aW9uKHByb2NlZWQsIGVsZW1lbnQpIHsKICAgICAgZWxlbWVudCA9ICQoZWxlbWVudCk7CiAgICAgIHZhciBwb3NpdGlvbiA9IGVsZW1lbnQuZ2V0U3R5bGUoJ3Bvc2l0aW9uJyk7CiAgICAgIGlmIChwb3NpdGlvbiAhPT0gJ3N0YXRpYycpIHJldHVybiBwcm9jZWVkKGVsZW1lbnQpOwogICAgICBlbGVtZW50LnNldFN0eWxlKHsgcG9zaXRpb246ICdyZWxhdGl2ZScgfSk7CiAgICAgIHZhciB2YWx1ZSA9IHByb2NlZWQoZWxlbWVudCk7CiAgICAgIGVsZW1lbnQuc2V0U3R5bGUoeyBwb3NpdGlvbjogcG9zaXRpb24gfSk7CiAgICAgIHJldHVybiB2YWx1ZTsKICAgIH0KICApOwoKICAkdygncG9zaXRpb25lZE9mZnNldCB2aWV3cG9ydE9mZnNldCcpLmVhY2goZnVuY3Rpb24obWV0aG9kKSB7CiAgICBFbGVtZW50Lk1ldGhvZHNbbWV0aG9kXSA9IEVsZW1lbnQuTWV0aG9kc1ttZXRob2RdLndyYXAoCiAgICAgIGZ1bmN0aW9uKHByb2NlZWQsIGVsZW1lbnQpIHsKICAgICAgICBlbGVtZW50ID0gJChlbGVtZW50KTsKICAgICAgICB2YXIgcG9zaXRpb24gPSBlbGVtZW50LmdldFN0eWxlKCdwb3NpdGlvbicpOwogICAgICAgIGlmIChwb3NpdGlvbiAhPT0gJ3N0YXRpYycpIHJldHVybiBwcm9jZWVkKGVsZW1lbnQpOwogICAgICAgIC8vIFRyaWdnZXIgaGFzTGF5b3V0IG9uIHRoZSBvZmZzZXQgcGFyZW50IHNvIHRoYXQgSUU2IHJlcG9ydHMKICAgICAgICAvLyBhY2N1cmF0ZSBvZmZzZXRUb3AgYW5kIG9mZnNldExlZnQgdmFsdWVzIGZvciBwb3NpdGlvbjogZml4ZWQuCiAgICAgICAgdmFyIG9mZnNldFBhcmVudCA9IGVsZW1lbnQuZ2V0T2Zmc2V0UGFyZW50KCk7CiAgICAgICAgaWYgKG9mZnNldFBhcmVudCAmJiBvZmZzZXRQYXJlbnQuZ2V0U3R5bGUoJ3Bvc2l0aW9uJykgPT09ICdmaXhlZCcpCiAgICAgICAgICBvZmZzZXRQYXJlbnQuc2V0U3R5bGUoeyB6b29tOiAxIH0pOwogICAgICAgIGVsZW1lbnQuc2V0U3R5bGUoeyBwb3NpdGlvbjogJ3JlbGF0aXZlJyB9KTsKICAgICAgICB2YXIgdmFsdWUgPSBwcm9jZWVkKGVsZW1lbnQpOwogICAgICAgIGVsZW1lbnQuc2V0U3R5bGUoeyBwb3NpdGlvbjogcG9zaXRpb24gfSk7CiAgICAgICAgcmV0dXJuIHZhbHVlOwogICAgICB9CiAgICApOwogIH0pOwoKICBFbGVtZW50Lk1ldGhvZHMuZ2V0U3R5bGUgPSBmdW5jdGlvbihlbGVtZW50LCBzdHlsZSkgewogICAgZWxlbWVudCA9ICQoZWxlbWVudCk7CiAgICBzdHlsZSA9IChzdHlsZSA9PSAnZmxvYXQnIHx8IHN0eWxlID09ICdjc3NGbG9hdCcpID8gJ3N0eWxlRmxvYXQnIDogc3R5bGUuY2FtZWxpemUoKTsKICAgIHZhciB2YWx1ZSA9IGVsZW1lbnQuc3R5bGVbc3R5bGVdOwogICAgaWYgKCF2YWx1ZSAmJiBlbGVtZW50LmN1cnJlbnRTdHlsZSkgdmFsdWUgPSBlbGVtZW50LmN1cnJlbnRTdHlsZVtzdHlsZV07CgogICAgaWYgKHN0eWxlID09ICdvcGFjaXR5JykgewogICAgICBpZiAodmFsdWUgPSAoZWxlbWVudC5nZXRTdHlsZSgnZmlsdGVyJykgfHwgJycpLm1hdGNoKC9hbHBoYVwob3BhY2l0eT0oLiopXCkvKSkKICAgICAgICBpZiAodmFsdWVbMV0pIHJldHVybiBwYXJzZUZsb2F0KHZhbHVlWzFdKSAvIDEwMDsKICAgICAgcmV0dXJuIDEuMDsKICAgIH0KCiAgICBpZiAodmFsdWUgPT0gJ2F1dG8nKSB7CiAgICAgIGlmICgoc3R5bGUgPT0gJ3dpZHRoJyB8fCBzdHlsZSA9PSAnaGVpZ2h0JykgJiYgKGVsZW1lbnQuZ2V0U3R5bGUoJ2Rpc3BsYXknKSAhPSAnbm9uZScpKQogICAgICAgIHJldHVybiBlbGVtZW50WydvZmZzZXQnICsgc3R5bGUuY2FwaXRhbGl6ZSgpXSArICdweCc7CiAgICAgIHJldHVybiBudWxsOwogICAgfQogICAgcmV0dXJuIHZhbHVlOwogIH07CgogIEVsZW1lbnQuTWV0aG9kcy5zZXRPcGFjaXR5ID0gZnVuY3Rpb24oZWxlbWVudCwgdmFsdWUpIHsKICAgIGZ1bmN0aW9uIHN0cmlwQWxwaGEoZmlsdGVyKXsKICAgICAgcmV0dXJuIGZpbHRlci5yZXBsYWNlKC9hbHBoYVwoW15cKV0qXCkvZ2ksJycpOwogICAgfQogICAgZWxlbWVudCA9ICQoZWxlbWVudCk7CiAgICB2YXIgY3VycmVudFN0eWxlID0gZWxlbWVudC5jdXJyZW50U3R5bGU7CiAgICBpZiAoKGN1cnJlbnRTdHlsZSAmJiAhY3VycmVudFN0eWxlLmhhc0xheW91dCkgfHwKICAgICAgKCFjdXJyZW50U3R5bGUgJiYgZWxlbWVudC5zdHlsZS56b29tID09ICdub3JtYWwnKSkKICAgICAgICBlbGVtZW50LnN0eWxlLnpvb20gPSAxOwoKICAgIHZhciBmaWx0ZXIgPSBlbGVtZW50LmdldFN0eWxlKCdmaWx0ZXInKSwgc3R5bGUgPSBlbGVtZW50LnN0eWxlOwogICAgaWYgKHZhbHVlID09IDEgfHwgdmFsdWUgPT09ICcnKSB7CiAgICAgIChmaWx0ZXIgPSBzdHJpcEFscGhhKGZpbHRlcikpID8KICAgICAgICBzdHlsZS5maWx0ZXIgPSBmaWx0ZXIgOiBzdHlsZS5yZW1vdmVBdHRyaWJ1dGUoJ2ZpbHRlcicpOwogICAgICByZXR1cm4gZWxlbWVudDsKICAgIH0gZWxzZSBpZiAodmFsdWUgPCAwLjAwMDAxKSB2YWx1ZSA9IDA7CiAgICBzdHlsZS5maWx0ZXIgPSBzdHJpcEFscGhhKGZpbHRlcikgKwogICAgICAnYWxwaGEob3BhY2l0eT0nICsgKHZhbHVlICogMTAwKSArICcpJzsKICAgIHJldHVybiBlbGVtZW50OwogIH07CgogIEVsZW1lbnQuX2F0dHJpYnV0ZVRyYW5zbGF0aW9ucyA9IHsKICAgIHJlYWQ6IHsKICAgICAgbmFtZXM6IHsKICAgICAgICAnY2xhc3MnOiAnY2xhc3NOYW1lJywKICAgICAgICAnZm9yJzogICAnaHRtbEZvcicKICAgICAgfSwKICAgICAgdmFsdWVzOiB7CiAgICAgICAgX2dldEF0dHI6IGZ1bmN0aW9uKGVsZW1lbnQsIGF0dHJpYnV0ZSkgewogICAgICAgICAgcmV0dXJuIGVsZW1lbnQuZ2V0QXR0cmlidXRlKGF0dHJpYnV0ZSwgMik7CiAgICAgICAgfSwKICAgICAgICBfZ2V0QXR0ck5vZGU6IGZ1bmN0aW9uKGVsZW1lbnQsIGF0dHJpYnV0ZSkgewogICAgICAgICAgdmFyIG5vZGUgPSBlbGVtZW50LmdldEF0dHJpYnV0ZU5vZGUoYXR0cmlidXRlKTsKICAgICAgICAgIHJldHVybiBub2RlID8gbm9kZS52YWx1ZSA6ICIiOwogICAgICAgIH0sCiAgICAgICAgX2dldEV2OiBmdW5jdGlvbihlbGVtZW50LCBhdHRyaWJ1dGUpIHsKICAgICAgICAgIGF0dHJpYnV0ZSA9IGVsZW1lbnQuZ2V0QXR0cmlidXRlKGF0dHJpYnV0ZSk7CiAgICAgICAgICByZXR1cm4gYXR0cmlidXRlID8gYXR0cmlidXRlLnRvU3RyaW5nKCkuc2xpY2UoMjMsIC0yKSA6IG51bGw7CiAgICAgICAgfSwKICAgICAgICBfZmxhZzogZnVuY3Rpb24oZWxlbWVudCwgYXR0cmlidXRlKSB7CiAgICAgICAgICByZXR1cm4gJChlbGVtZW50KS5oYXNBdHRyaWJ1dGUoYXR0cmlidXRlKSA/IGF0dHJpYnV0ZSA6IG51bGw7CiAgICAgICAgfSwKICAgICAgICBzdHlsZTogZnVuY3Rpb24oZWxlbWVudCkgewogICAgICAgICAgcmV0dXJuIGVsZW1lbnQuc3R5bGUuY3NzVGV4dC50b0xvd2VyQ2FzZSgpOwogICAgICAgIH0sCiAgICAgICAgdGl0bGU6IGZ1bmN0aW9uKGVsZW1lbnQpIHsKICAgICAgICAgIHJldHVybiBlbGVtZW50LnRpdGxlOwogICAgICAgIH0KICAgICAgfQogICAgfQogIH07CgogIEVsZW1lbnQuX2F0dHJpYnV0ZVRyYW5zbGF0aW9ucy53cml0ZSA9IHsKICAgIG5hbWVzOiBPYmplY3QuZXh0ZW5kKHsKICAgICAgY2VsbHBhZGRpbmc6ICdjZWxsUGFkZGluZycsCiAgICAgIGNlbGxzcGFjaW5nOiAnY2VsbFNwYWNpbmcnCiAgICB9LCBFbGVtZW50Ll9hdHRyaWJ1dGVUcmFuc2xhdGlvbnMucmVhZC5uYW1lcyksCiAgICB2YWx1ZXM6IHsKICAgICAgY2hlY2tlZDogZnVuY3Rpb24oZWxlbWVudCwgdmFsdWUpIHsKICAgICAgICBlbGVtZW50LmNoZWNrZWQgPSAhIXZhbHVlOwogICAgICB9LAoKICAgICAgc3R5bGU6IGZ1bmN0aW9uKGVsZW1lbnQsIHZhbHVlKSB7CiAgICAgICAgZWxlbWVudC5zdHlsZS5jc3NUZXh0ID0gdmFsdWUgPyB2YWx1ZSA6ICcnOwogICAgICB9CiAgICB9CiAgfTsKCiAgRWxlbWVudC5fYXR0cmlidXRlVHJhbnNsYXRpb25zLmhhcyA9IHt9OwoKICAkdygnY29sU3BhbiByb3dTcGFuIHZBbGlnbiBkYXRlVGltZSBhY2Nlc3NLZXkgdGFiSW5kZXggJyArCiAgICAgICdlbmNUeXBlIG1heExlbmd0aCByZWFkT25seSBsb25nRGVzYycpLmVhY2goZnVuY3Rpb24oYXR0cikgewogICAgRWxlbWVudC5fYXR0cmlidXRlVHJhbnNsYXRpb25zLndyaXRlLm5hbWVzW2F0dHIudG9Mb3dlckNhc2UoKV0gPSBhdHRyOwogICAgRWxlbWVudC5fYXR0cmlidXRlVHJhbnNsYXRpb25zLmhhc1thdHRyLnRvTG93ZXJDYXNlKCldID0gYXR0cjsKICB9KTsKCiAgKGZ1bmN0aW9uKHYpIHsKICAgIE9iamVjdC5leHRlbmQodiwgewogICAgICBocmVmOiAgICAgICAgdi5fZ2V0QXR0ciwKICAgICAgc3JjOiAgICAgICAgIHYuX2dldEF0dHIsCiAgICAgIHR5cGU6ICAgICAgICB2Ll9nZXRBdHRyLAogICAgICBhY3Rpb246ICAgICAgdi5fZ2V0QXR0ck5vZGUsCiAgICAgIGRpc2FibGVkOiAgICB2Ll9mbGFnLAogICAgICBjaGVja2VkOiAgICAgdi5fZmxhZywKICAgICAgcmVhZG9ubHk6ICAgIHYuX2ZsYWcsCiAgICAgIG11bHRpcGxlOiAgICB2Ll9mbGFnLAogICAgICBvbmxvYWQ6ICAgICAgdi5fZ2V0RXYsCiAgICAgIG9udW5sb2FkOiAgICB2Ll9nZXRFdiwKICAgICAgb25jbGljazogICAgIHYuX2dldEV2LAogICAgICBvbmRibGNsaWNrOiAgdi5fZ2V0RXYsCiAgICAgIG9ubW91c2Vkb3duOiB2Ll9nZXRFdiwKICAgICAgb25tb3VzZXVwOiAgIHYuX2dldEV2LAogICAgICBvbm1vdXNlb3Zlcjogdi5fZ2V0RXYsCiAgICAgIG9ubW91c2Vtb3ZlOiB2Ll9nZXRFdiwKICAgICAgb25tb3VzZW91dDogIHYuX2dldEV2LAogICAgICBvbmZvY3VzOiAgICAgdi5fZ2V0RXYsCiAgICAgIG9uYmx1cjogICAgICB2Ll9nZXRFdiwKICAgICAgb25rZXlwcmVzczogIHYuX2dldEV2LAogICAgICBvbmtleWRvd246ICAgdi5fZ2V0RXYsCiAgICAgIG9ua2V5dXA6ICAgICB2Ll9nZXRFdiwKICAgICAgb25zdWJtaXQ6ICAgIHYuX2dldEV2LAogICAgICBvbnJlc2V0OiAgICAgdi5fZ2V0RXYsCiAgICAgIG9uc2VsZWN0OiAgICB2Ll9nZXRFdiwKICAgICAgb25jaGFuZ2U6ICAgIHYuX2dldEV2CiAgICB9KTsKICB9KShFbGVtZW50Ll9hdHRyaWJ1dGVUcmFuc2xhdGlvbnMucmVhZC52YWx1ZXMpOwp9CgplbHNlIGlmIChQcm90b3R5cGUuQnJvd3Nlci5HZWNrbyAmJiAvcnY6MVwuOFwuMC8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSkgewogIEVsZW1lbnQuTWV0aG9kcy5zZXRPcGFjaXR5ID0gZnVuY3Rpb24oZWxlbWVudCwgdmFsdWUpIHsKICAgIGVsZW1lbnQgPSAkKGVsZW1lbnQpOwogICAgZWxlbWVudC5zdHlsZS5vcGFjaXR5ID0gKHZhbHVlID09IDEpID8gMC45OTk5OTkgOgogICAgICAodmFsdWUgPT09ICcnKSA/ICcnIDogKHZhbHVlIDwgMC4wMDAwMSkgPyAwIDogdmFsdWU7CiAgICByZXR1cm4gZWxlbWVudDsKICB9Owp9CgplbHNlIGlmIChQcm90b3R5cGUuQnJvd3Nlci5XZWJLaXQpIHsKICBFbGVtZW50Lk1ldGhvZHMuc2V0T3BhY2l0eSA9IGZ1bmN0aW9uKGVsZW1lbnQsIHZhbHVlKSB7CiAgICBlbGVtZW50ID0gJChlbGVtZW50KTsKICAgIGVsZW1lbnQuc3R5bGUub3BhY2l0eSA9ICh2YWx1ZSA9PSAxIHx8IHZhbHVlID09PSAnJykgPyAnJyA6CiAgICAgICh2YWx1ZSA8IDAuMDAwMDEpID8gMCA6IHZhbHVlOwoKICAgIGlmICh2YWx1ZSA9PSAxKQogICAgICBpZihlbGVtZW50LnRhZ05hbWUgPT0gJ0lNRycgJiYgZWxlbWVudC53aWR0aCkgewogICAgICAgIGVsZW1lbnQud2lkdGgrKzsgZWxlbWVudC53aWR0aC0tOwogICAgICB9IGVsc2UgdHJ5IHsKICAgICAgICB2YXIgbiA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCcgJyk7CiAgICAgICAgZWxlbWVudC5hcHBlbmRDaGlsZChuKTsKICAgICAgICBlbGVtZW50LnJlbW92ZUNoaWxkKG4pOwogICAgICB9IGNhdGNoIChlKSB7IH0KCiAgICByZXR1cm4gZWxlbWVudDsKICB9OwoKICAvLyBTYWZhcmkgcmV0dXJucyBtYXJnaW5zIG9uIGJvZHkgd2hpY2ggaXMgaW5jb3JyZWN0IGlmIHRoZSBjaGlsZCBpcyBhYnNvbHV0ZWx5CiAgLy8gcG9zaXRpb25lZC4gIEZvciBwZXJmb3JtYW5jZSByZWFzb25zLCByZWRlZmluZSBFbGVtZW50I2N1bXVsYXRpdmVPZmZzZXQgZm9yCiAgLy8gS0hUTUwvV2ViS2l0IG9ubHkuCiAgRWxlbWVudC5NZXRob2RzLmN1bXVsYXRpdmVPZmZzZXQgPSBmdW5jdGlvbihlbGVtZW50KSB7CiAgICB2YXIgdmFsdWVUID0gMCwgdmFsdWVMID0gMDsKICAgIGRvIHsKICAgICAgdmFsdWVUICs9IGVsZW1lbnQub2Zmc2V0VG9wICB8fCAwOwogICAgICB2YWx1ZUwgKz0gZWxlbWVudC5vZmZzZXRMZWZ0IHx8IDA7CiAgICAgIGlmIChlbGVtZW50Lm9mZnNldFBhcmVudCA9PSBkb2N1bWVudC5ib2R5KQogICAgICAgIGlmIChFbGVtZW50LmdldFN0eWxlKGVsZW1lbnQsICdwb3NpdGlvbicpID09ICdhYnNvbHV0ZScpIGJyZWFrOwoKICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OwogICAgfSB3aGlsZSAoZWxlbWVudCk7CgogICAgcmV0dXJuIEVsZW1lbnQuX3JldHVybk9mZnNldCh2YWx1ZUwsIHZhbHVlVCk7CiAgfTsKfQoKaWYgKFByb3RvdHlwZS5Ccm93c2VyLklFIHx8IFByb3RvdHlwZS5Ccm93c2VyLk9wZXJhKSB7CiAgLy8gSUUgYW5kIE9wZXJhIGFyZSBtaXNzaW5nIC5pbm5lckhUTUwgc3VwcG9ydCBmb3IgVEFCTEUtcmVsYXRlZCBhbmQgU0VMRUNUIGVsZW1lbnRzCiAgRWxlbWVudC5NZXRob2RzLnVwZGF0ZSA9IGZ1bmN0aW9uKGVsZW1lbnQsIGNvbnRlbnQpIHsKICAgIGVsZW1lbnQgPSAkKGVsZW1lbnQpOwoKICAgIGlmIChjb250ZW50ICYmIGNvbnRlbnQudG9FbGVtZW50KSBjb250ZW50ID0gY29udGVudC50b0VsZW1lbnQoKTsKICAgIGlmIChPYmplY3QuaXNFbGVtZW50KGNvbnRlbnQpKSByZXR1cm4gZWxlbWVudC51cGRhdGUoKS5pbnNlcnQoY29udGVudCk7CgogICAgY29udGVudCA9IE9iamVjdC50b0hUTUwoY29udGVudCk7CiAgICB2YXIgdGFnTmFtZSA9IGVsZW1lbnQudGFnTmFtZS50b1VwcGVyQ2FzZSgpOwoKICAgIGlmICh0YWdOYW1lIGluIEVsZW1lbnQuX2luc2VydGlvblRyYW5zbGF0aW9ucy50YWdzKSB7CiAgICAgICRBKGVsZW1lbnQuY2hpbGROb2RlcykuZWFjaChmdW5jdGlvbihub2RlKSB7IGVsZW1lbnQucmVtb3ZlQ2hpbGQobm9kZSkgfSk7CiAgICAgIEVsZW1lbnQuX2dldENvbnRlbnRGcm9tQW5vbnltb3VzRWxlbWVudCh0YWdOYW1lLCBjb250ZW50LnN0cmlwU2NyaXB0cygpKQogICAgICAgIC5lYWNoKGZ1bmN0aW9uKG5vZGUpIHsgZWxlbWVudC5hcHBlbmRDaGlsZChub2RlKSB9KTsKICAgIH0KICAgIGVsc2UgZWxlbWVudC5pbm5lckhUTUwgPSBjb250ZW50LnN0cmlwU2NyaXB0cygpOwoKICAgIGNvbnRlbnQuZXZhbFNjcmlwdHMuYmluZChjb250ZW50KS5kZWZlcigpOwogICAgcmV0dXJuIGVsZW1lbnQ7CiAgfTsKfQoKaWYgKCdvdXRlckhUTUwnIGluIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpKSB7CiAgRWxlbWVudC5NZXRob2RzLnJlcGxhY2UgPSBmdW5jdGlvbihlbGVtZW50LCBjb250ZW50KSB7CiAgICBlbGVtZW50ID0gJChlbGVtZW50KTsKCiAgICBpZiAoY29udGVudCAmJiBjb250ZW50LnRvRWxlbWVudCkgY29udGVudCA9IGNvbnRlbnQudG9FbGVtZW50KCk7CiAgICBpZiAoT2JqZWN0LmlzRWxlbWVudChjb250ZW50KSkgewogICAgICBlbGVtZW50LnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKGNvbnRlbnQsIGVsZW1lbnQpOwogICAgICByZXR1cm4gZWxlbWVudDsKICAgIH0KCiAgICBjb250ZW50ID0gT2JqZWN0LnRvSFRNTChjb250ZW50KTsKICAgIHZhciBwYXJlbnQgPSBlbGVtZW50LnBhcmVudE5vZGUsIHRhZ05hbWUgPSBwYXJlbnQudGFnTmFtZS50b1VwcGVyQ2FzZSgpOwoKICAgIGlmIChFbGVtZW50Ll9pbnNlcnRpb25UcmFuc2xhdGlvbnMudGFnc1t0YWdOYW1lXSkgewogICAgICB2YXIgbmV4dFNpYmxpbmcgPSBlbGVtZW50Lm5leHQoKTsKICAgICAgdmFyIGZyYWdtZW50cyA9IEVsZW1lbnQuX2dldENvbnRlbnRGcm9tQW5vbnltb3VzRWxlbWVudCh0YWdOYW1lLCBjb250ZW50LnN0cmlwU2NyaXB0cygpKTsKICAgICAgcGFyZW50LnJlbW92ZUNoaWxkKGVsZW1lbnQpOwogICAgICBpZiAobmV4dFNpYmxpbmcpCiAgICAgICAgZnJhZ21lbnRzLmVhY2goZnVuY3Rpb24obm9kZSkgeyBwYXJlbnQuaW5zZXJ0QmVmb3JlKG5vZGUsIG5leHRTaWJsaW5nKSB9KTsKICAgICAgZWxzZQogICAgICAgIGZyYWdtZW50cy5lYWNoKGZ1bmN0aW9uKG5vZGUpIHsgcGFyZW50LmFwcGVuZENoaWxkKG5vZGUpIH0pOwogICAgfQogICAgZWxzZSBlbGVtZW50Lm91dGVySFRNTCA9IGNvbnRlbnQuc3RyaXBTY3JpcHRzKCk7CgogICAgY29udGVudC5ldmFsU2NyaXB0cy5iaW5kKGNvbnRlbnQpLmRlZmVyKCk7CiAgICByZXR1cm4gZWxlbWVudDsKICB9Owp9CgpFbGVtZW50Ll9yZXR1cm5PZmZzZXQgPSBmdW5jdGlvbihsLCB0KSB7CiAgdmFyIHJlc3VsdCA9IFtsLCB0XTsKICByZXN1bHQubGVmdCA9IGw7CiAgcmVzdWx0LnRvcCA9IHQ7CiAgcmV0dXJuIHJlc3VsdDsKfTsKCkVsZW1lbnQuX2dldENvbnRlbnRGcm9tQW5vbnltb3VzRWxlbWVudCA9IGZ1bmN0aW9uKHRhZ05hbWUsIGh0bWwpIHsKICB2YXIgZGl2ID0gbmV3IEVsZW1lbnQoJ2RpdicpLCB0ID0gRWxlbWVudC5faW5zZXJ0aW9uVHJhbnNsYXRpb25zLnRhZ3NbdGFnTmFtZV07CiAgaWYgKHQpIHsKICAgIGRpdi5pbm5lckhUTUwgPSB0WzBdICsgaHRtbCArIHRbMV07CiAgICB0WzJdLnRpbWVzKGZ1bmN0aW9uKCkgeyBkaXYgPSBkaXYuZmlyc3RDaGlsZCB9KTsKICB9IGVsc2UgZGl2LmlubmVySFRNTCA9IGh0bWw7CiAgcmV0dXJuICRBKGRpdi5jaGlsZE5vZGVzKTsKfTsKCkVsZW1lbnQuX2luc2VydGlvblRyYW5zbGF0aW9ucyA9IHsKICBiZWZvcmU6IGZ1bmN0aW9uKGVsZW1lbnQsIG5vZGUpIHsKICAgIGVsZW1lbnQucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUobm9kZSwgZWxlbWVudCk7CiAgfSwKICB0b3A6IGZ1bmN0aW9uKGVsZW1lbnQsIG5vZGUpIHsKICAgIGVsZW1lbnQuaW5zZXJ0QmVmb3JlKG5vZGUsIGVsZW1lbnQuZmlyc3RDaGlsZCk7CiAgfSwKICBib3R0b206IGZ1bmN0aW9uKGVsZW1lbnQsIG5vZGUpIHsKICAgIGVsZW1lbnQuYXBwZW5kQ2hpbGQobm9kZSk7CiAgfSwKICBhZnRlcjogZnVuY3Rpb24oZWxlbWVudCwgbm9kZSkgewogICAgZWxlbWVudC5wYXJlbnROb2RlLmluc2VydEJlZm9yZShub2RlLCBlbGVtZW50Lm5leHRTaWJsaW5nKTsKICB9LAogIHRhZ3M6IHsKICAgIFRBQkxFOiAgWyc8dGFibGU+JywgICAgICAgICAgICAgICAgJzwvdGFibGU+JywgICAgICAgICAgICAgICAgICAgMV0sCiAgICBUQk9EWTogIFsnPHRhYmxlPjx0Ym9keT4nLCAgICAgICAgICc8L3Rib2R5PjwvdGFibGU+JywgICAgICAgICAgIDJdLAogICAgVFI6ICAgICBbJzx0YWJsZT48dGJvZHk+PHRyPicsICAgICAnPC90cj48L3Rib2R5PjwvdGFibGU+JywgICAgICAzXSwKICAgIFREOiAgICAgWyc8dGFibGU+PHRib2R5Pjx0cj48dGQ+JywgJzwvdGQ+PC90cj48L3Rib2R5PjwvdGFibGU+JywgNF0sCiAgICBTRUxFQ1Q6IFsnPHNlbGVjdD4nLCAgICAgICAgICAgICAgICc8L3NlbGVjdD4nLCAgICAgICAgICAgICAgICAgIDFdCiAgfQp9OwoKKGZ1bmN0aW9uKCkgewogIE9iamVjdC5leHRlbmQodGhpcy50YWdzLCB7CiAgICBUSEVBRDogdGhpcy50YWdzLlRCT0RZLAogICAgVEZPT1Q6IHRoaXMudGFncy5UQk9EWSwKICAgIFRIOiAgICB0aGlzLnRhZ3MuVEQKICB9KTsKfSkuY2FsbChFbGVtZW50Ll9pbnNlcnRpb25UcmFuc2xhdGlvbnMpOwoKRWxlbWVudC5NZXRob2RzLlNpbXVsYXRlZCA9IHsKICBoYXNBdHRyaWJ1dGU6IGZ1bmN0aW9uKGVsZW1lbnQsIGF0dHJpYnV0ZSkgewogICAgYXR0cmlidXRlID0gRWxlbWVudC5fYXR0cmlidXRlVHJhbnNsYXRpb25zLmhhc1thdHRyaWJ1dGVdIHx8IGF0dHJpYnV0ZTsKICAgIHZhciBub2RlID0gJChlbGVtZW50KS5nZXRBdHRyaWJ1dGVOb2RlKGF0dHJpYnV0ZSk7CiAgICByZXR1cm4gbm9kZSAmJiBub2RlLnNwZWNpZmllZDsKICB9Cn07CgpFbGVtZW50Lk1ldGhvZHMuQnlUYWcgPSB7IH07CgpPYmplY3QuZXh0ZW5kKEVsZW1lbnQsIEVsZW1lbnQuTWV0aG9kcyk7CgppZiAoIVByb3RvdHlwZS5Ccm93c2VyRmVhdHVyZXMuRWxlbWVudEV4dGVuc2lvbnMgJiYKICAgIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpLl9fcHJvdG9fXykgewogIHdpbmRvdy5IVE1MRWxlbWVudCA9IHsgfTsKICB3aW5kb3cuSFRNTEVsZW1lbnQucHJvdG90eXBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JykuX19wcm90b19fOwogIFByb3RvdHlwZS5Ccm93c2VyRmVhdHVyZXMuRWxlbWVudEV4dGVuc2lvbnMgPSB0cnVlOwp9CgpFbGVtZW50LmV4dGVuZCA9IChmdW5jdGlvbigpIHsKICBpZiAoUHJvdG90eXBlLkJyb3dzZXJGZWF0dXJlcy5TcGVjaWZpY0VsZW1lbnRFeHRlbnNpb25zKQogICAgcmV0dXJuIFByb3RvdHlwZS5LOwoKICB2YXIgTWV0aG9kcyA9IHsgfSwgQnlUYWcgPSBFbGVtZW50Lk1ldGhvZHMuQnlUYWc7CgogIHZhciBleHRlbmQgPSBPYmplY3QuZXh0ZW5kKGZ1bmN0aW9uKGVsZW1lbnQpIHsKICAgIGlmICghZWxlbWVudCB8fCBlbGVtZW50Ll9leHRlbmRlZEJ5UHJvdG90eXBlIHx8CiAgICAgICAgZWxlbWVudC5ub2RlVHlwZSAhPSAxIHx8IGVsZW1lbnQgPT0gd2luZG93KSByZXR1cm4gZWxlbWVudDsKCiAgICB2YXIgbWV0aG9kcyA9IE9iamVjdC5jbG9uZShNZXRob2RzKSwKICAgICAgdGFnTmFtZSA9IGVsZW1lbnQudGFnTmFtZSwgcHJvcGVydHksIHZhbHVlOwoKICAgIC8vIGV4dGVuZCBtZXRob2RzIGZvciBzcGVjaWZpYyB0YWdzCiAgICBpZiAoQnlUYWdbdGFnTmFtZV0pIE9iamVjdC5leHRlbmQobWV0aG9kcywgQnlUYWdbdGFnTmFtZV0pOwoKICAgIGZvciAocHJvcGVydHkgaW4gbWV0aG9kcykgewogICAgICB2YWx1ZSA9IG1ldGhvZHNbcHJvcGVydHldOwogICAgICBpZiAoT2JqZWN0LmlzRnVuY3Rpb24odmFsdWUpICYmICEocHJvcGVydHkgaW4gZWxlbWVudCkpCiAgICAgICAgZWxlbWVudFtwcm9wZXJ0eV0gPSB2YWx1ZS5tZXRob2RpemUoKTsKICAgIH0KCiAgICBlbGVtZW50Ll9leHRlbmRlZEJ5UHJvdG90eXBlID0gUHJvdG90eXBlLmVtcHR5RnVuY3Rpb247CiAgICByZXR1cm4gZWxlbWVudDsKCiAgfSwgewogICAgcmVmcmVzaDogZnVuY3Rpb24oKSB7CiAgICAgIC8vIGV4dGVuZCBtZXRob2RzIGZvciBhbGwgdGFncyAoU2FmYXJpIGRvZXNuJ3QgbmVlZCB0aGlzKQogICAgICBpZiAoIVByb3RvdHlwZS5Ccm93c2VyRmVhdHVyZXMuRWxlbWVudEV4dGVuc2lvbnMpIHsKICAgICAgICBPYmplY3QuZXh0ZW5kKE1ldGhvZHMsIEVsZW1lbnQuTWV0aG9kcyk7CiAgICAgICAgT2JqZWN0LmV4dGVuZChNZXRob2RzLCBFbGVtZW50Lk1ldGhvZHMuU2ltdWxhdGVkKTsKICAgICAgfQogICAgfQogIH0pOwoKICBleHRlbmQucmVmcmVzaCgpOwogIHJldHVybiBleHRlbmQ7Cn0pKCk7CgpFbGVtZW50Lmhhc0F0dHJpYnV0ZSA9IGZ1bmN0aW9uKGVsZW1lbnQsIGF0dHJpYnV0ZSkgewogIGlmIChlbGVtZW50Lmhhc0F0dHJpYnV0ZSkgcmV0dXJuIGVsZW1lbnQuaGFzQXR0cmlidXRlKGF0dHJpYnV0ZSk7CiAgcmV0dXJuIEVsZW1lbnQuTWV0aG9kcy5TaW11bGF0ZWQuaGFzQXR0cmlidXRlKGVsZW1lbnQsIGF0dHJpYnV0ZSk7Cn07CgpFbGVtZW50LmFkZE1ldGhvZHMgPSBmdW5jdGlvbihtZXRob2RzKSB7CiAgdmFyIEYgPSBQcm90b3R5cGUuQnJvd3NlckZlYXR1cmVzLCBUID0gRWxlbWVudC5NZXRob2RzLkJ5VGFnOwoKICBpZiAoIW1ldGhvZHMpIHsKICAgIE9iamVjdC5leHRlbmQoRm9ybSwgRm9ybS5NZXRob2RzKTsKICAgIE9iamVjdC5leHRlbmQoRm9ybS5FbGVtZW50LCBGb3JtLkVsZW1lbnQuTWV0aG9kcyk7CiAgICBPYmplY3QuZXh0ZW5kKEVsZW1lbnQuTWV0aG9kcy5CeVRhZywgewogICAgICAiRk9STSI6ICAgICBPYmplY3QuY2xvbmUoRm9ybS5NZXRob2RzKSwKICAgICAgIklOUFVUIjogICAgT2JqZWN0LmNsb25lKEZvcm0uRWxlbWVudC5NZXRob2RzKSwKICAgICAgIlNFTEVDVCI6ICAgT2JqZWN0LmNsb25lKEZvcm0uRWxlbWVudC5NZXRob2RzKSwKICAgICAgIlRFWFRBUkVBIjogT2JqZWN0LmNsb25lKEZvcm0uRWxlbWVudC5NZXRob2RzKQogICAgfSk7CiAgfQoKICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PSAyKSB7CiAgICB2YXIgdGFnTmFtZSA9IG1ldGhvZHM7CiAgICBtZXRob2RzID0gYXJndW1lbnRzWzFdOwogIH0KCiAgaWYgKCF0YWdOYW1lKSBPYmplY3QuZXh0ZW5kKEVsZW1lbnQuTWV0aG9kcywgbWV0aG9kcyB8fCB7IH0pOwogIGVsc2UgewogICAgaWYgKE9iamVjdC5pc0FycmF5KHRhZ05hbWUpKSB0YWdOYW1lLmVhY2goZXh0ZW5kKTsKICAgIGVsc2UgZXh0ZW5kKHRhZ05hbWUpOwogIH0KCiAgZnVuY3Rpb24gZXh0ZW5kKHRhZ05hbWUpIHsKICAgIHRhZ05hbWUgPSB0YWdOYW1lLnRvVXBwZXJDYXNlKCk7CiAgICBpZiAoIUVsZW1lbnQuTWV0aG9kcy5CeVRhZ1t0YWdOYW1lXSkKICAgICAgRWxlbWVudC5NZXRob2RzLkJ5VGFnW3RhZ05hbWVdID0geyB9OwogICAgT2JqZWN0LmV4dGVuZChFbGVtZW50Lk1ldGhvZHMuQnlUYWdbdGFnTmFtZV0sIG1ldGhvZHMpOwogIH0KCiAgZnVuY3Rpb24gY29weShtZXRob2RzLCBkZXN0aW5hdGlvbiwgb25seUlmQWJzZW50KSB7CiAgICBvbmx5SWZBYnNlbnQgPSBvbmx5SWZBYnNlbnQgfHwgZmFsc2U7CiAgICBmb3IgKHZhciBwcm9wZXJ0eSBpbiBtZXRob2RzKSB7CiAgICAgIHZhciB2YWx1ZSA9IG1ldGhvZHNbcHJvcGVydHldOwogICAgICBpZiAoIU9iamVjdC5pc0Z1bmN0aW9uKHZhbHVlKSkgY29udGludWU7CiAgICAgIGlmICghb25seUlmQWJzZW50IHx8ICEocHJvcGVydHkgaW4gZGVzdGluYXRpb24pKQogICAgICAgIGRlc3RpbmF0aW9uW3Byb3BlcnR5XSA9IHZhbHVlLm1ldGhvZGl6ZSgpOwogICAgfQogIH0KCiAgZnVuY3Rpb24gZmluZERPTUNsYXNzKHRhZ05hbWUpIHsKICAgIHZhciBrbGFzczsKICAgIHZhciB0cmFucyA9IHsKICAgICAgIk9QVEdST1VQIjogIk9wdEdyb3VwIiwgIlRFWFRBUkVBIjogIlRleHRBcmVhIiwgIlAiOiAiUGFyYWdyYXBoIiwKICAgICAgIkZJRUxEU0VUIjogIkZpZWxkU2V0IiwgIlVMIjogIlVMaXN0IiwgIk9MIjogIk9MaXN0IiwgIkRMIjogIkRMaXN0IiwKICAgICAgIkRJUiI6ICJEaXJlY3RvcnkiLCAiSDEiOiAiSGVhZGluZyIsICJIMiI6ICJIZWFkaW5nIiwgIkgzIjogIkhlYWRpbmciLAogICAgICAiSDQiOiAiSGVhZGluZyIsICJINSI6ICJIZWFkaW5nIiwgIkg2IjogIkhlYWRpbmciLCAiUSI6ICJRdW90ZSIsCiAgICAgICJJTlMiOiAiTW9kIiwgIkRFTCI6ICJNb2QiLCAiQSI6ICJBbmNob3IiLCAiSU1HIjogIkltYWdlIiwgIkNBUFRJT04iOgogICAgICAiVGFibGVDYXB0aW9uIiwgIkNPTCI6ICJUYWJsZUNvbCIsICJDT0xHUk9VUCI6ICJUYWJsZUNvbCIsICJUSEVBRCI6CiAgICAgICJUYWJsZVNlY3Rpb24iLCAiVEZPT1QiOiAiVGFibGVTZWN0aW9uIiwgIlRCT0RZIjogIlRhYmxlU2VjdGlvbiIsICJUUiI6CiAgICAgICJUYWJsZVJvdyIsICJUSCI6ICJUYWJsZUNlbGwiLCAiVEQiOiAiVGFibGVDZWxsIiwgIkZSQU1FU0VUIjoKICAgICAgIkZyYW1lU2V0IiwgIklGUkFNRSI6ICJJRnJhbWUiCiAgICB9OwogICAgaWYgKHRyYW5zW3RhZ05hbWVdKSBrbGFzcyA9ICdIVE1MJyArIHRyYW5zW3RhZ05hbWVdICsgJ0VsZW1lbnQnOwogICAgaWYgKHdpbmRvd1trbGFzc10pIHJldHVybiB3aW5kb3dba2xhc3NdOwogICAga2xhc3MgPSAnSFRNTCcgKyB0YWdOYW1lICsgJ0VsZW1lbnQnOwogICAgaWYgKHdpbmRvd1trbGFzc10pIHJldHVybiB3aW5kb3dba2xhc3NdOwogICAga2xhc3MgPSAnSFRNTCcgKyB0YWdOYW1lLmNhcGl0YWxpemUoKSArICdFbGVtZW50JzsKICAgIGlmICh3aW5kb3dba2xhc3NdKSByZXR1cm4gd2luZG93W2tsYXNzXTsKCiAgICB3aW5kb3dba2xhc3NdID0geyB9OwogICAgd2luZG93W2tsYXNzXS5wcm90b3R5cGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KHRhZ05hbWUpLl9fcHJvdG9fXzsKICAgIHJldHVybiB3aW5kb3dba2xhc3NdOwogIH0KCiAgaWYgKEYuRWxlbWVudEV4dGVuc2lvbnMpIHsKICAgIGNvcHkoRWxlbWVudC5NZXRob2RzLCBIVE1MRWxlbWVudC5wcm90b3R5cGUpOwogICAgY29weShFbGVtZW50Lk1ldGhvZHMuU2ltdWxhdGVkLCBIVE1MRWxlbWVudC5wcm90b3R5cGUsIHRydWUpOwogIH0KCiAgaWYgKEYuU3BlY2lmaWNFbGVtZW50RXh0ZW5zaW9ucykgewogICAgZm9yICh2YXIgdGFnIGluIEVsZW1lbnQuTWV0aG9kcy5CeVRhZykgewogICAgICB2YXIga2xhc3MgPSBmaW5kRE9NQ2xhc3ModGFnKTsKICAgICAgaWYgKE9iamVjdC5pc1VuZGVmaW5lZChrbGFzcykpIGNvbnRpbnVlOwogICAgICBjb3B5KFRbdGFnXSwga2xhc3MucHJvdG90eXBlKTsKICAgIH0KICB9CgogIE9iamVjdC5leHRlbmQoRWxlbWVudCwgRWxlbWVudC5NZXRob2RzKTsKICBkZWxldGUgRWxlbWVudC5CeVRhZzsKCiAgaWYgKEVsZW1lbnQuZXh0ZW5kLnJlZnJlc2gpIEVsZW1lbnQuZXh0ZW5kLnJlZnJlc2goKTsKICBFbGVtZW50LmNhY2hlID0geyB9Owp9OwoKZG9jdW1lbnQudmlld3BvcnQgPSB7CiAgZ2V0RGltZW5zaW9uczogZnVuY3Rpb24oKSB7CiAgICB2YXIgZGltZW5zaW9ucyA9IHsgfTsKICAgIHZhciBCID0gUHJvdG90eXBlLkJyb3dzZXI7CiAgICAkdygnd2lkdGggaGVpZ2h0JykuZWFjaChmdW5jdGlvbihkKSB7CiAgICAgIHZhciBEID0gZC5jYXBpdGFsaXplKCk7CiAgICAgIGRpbWVuc2lvbnNbZF0gPSAoQi5XZWJLaXQgJiYgIWRvY3VtZW50LmV2YWx1YXRlKSA/IHNlbGZbJ2lubmVyJyArIERdIDoKICAgICAgICAoQi5PcGVyYSkgPyBkb2N1bWVudC5ib2R5WydjbGllbnQnICsgRF0gOiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnRbJ2NsaWVudCcgKyBEXTsKICAgIH0pOwogICAgcmV0dXJuIGRpbWVuc2lvbnM7CiAgfSwKCiAgZ2V0V2lkdGg6IGZ1bmN0aW9uKCkgewogICAgcmV0dXJuIHRoaXMuZ2V0RGltZW5zaW9ucygpLndpZHRoOwogIH0sCgogIGdldEhlaWdodDogZnVuY3Rpb24oKSB7CiAgICByZXR1cm4gdGhpcy5nZXREaW1lbnNpb25zKCkuaGVpZ2h0OwogIH0sCgogIGdldFNjcm9sbE9mZnNldHM6IGZ1bmN0aW9uKCkgewogICAgcmV0dXJuIEVsZW1lbnQuX3JldHVybk9mZnNldCgKICAgICAgd2luZG93LnBhZ2VYT2Zmc2V0IHx8IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxMZWZ0IHx8IGRvY3VtZW50LmJvZHkuc2Nyb2xsTGVmdCwKICAgICAgd2luZG93LnBhZ2VZT2Zmc2V0IHx8IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3AgfHwgZG9jdW1lbnQuYm9keS5zY3JvbGxUb3ApOwogIH0KfTsKLyogUG9ydGlvbnMgb2YgdGhlIFNlbGVjdG9yIGNsYXNzIGFyZSBkZXJpdmVkIGZyb20gSmFjayBTbG9jdW3DouKCrOKEonMgRG9tUXVlcnksCiAqIHBhcnQgb2YgWVVJLUV4dCB2ZXJzaW9uIDAuNDAsIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiBhbiBNSVQtc3R5bGUKICogbGljZW5zZS4gIFBsZWFzZSBzZWUgaHR0cDovL3d3dy55dWktZXh0LmNvbS8gZm9yIG1vcmUgaW5mb3JtYXRpb24uICovCgp2YXIgU2VsZWN0b3IgPSBDbGFzcy5jcmVhdGUoewogIGluaXRpYWxpemU6IGZ1bmN0aW9uKGV4cHJlc3Npb24pIHsKICAgIHRoaXMuZXhwcmVzc2lvbiA9IGV4cHJlc3Npb24uc3RyaXAoKTsKICAgIHRoaXMuY29tcGlsZU1hdGNoZXIoKTsKICB9LAoKICBzaG91bGRVc2VYUGF0aDogZnVuY3Rpb24oKSB7CiAgICBpZiAoIVByb3RvdHlwZS5Ccm93c2VyRmVhdHVyZXMuWFBhdGgpIHJldHVybiBmYWxzZTsKCiAgICB2YXIgZSA9IHRoaXMuZXhwcmVzc2lvbjsKCiAgICAvLyBTYWZhcmkgMyBjaG9rZXMgb24gOiotb2YtdHlwZSBhbmQgOmVtcHR5CiAgICBpZiAoUHJvdG90eXBlLkJyb3dzZXIuV2ViS2l0ICYmCiAgICAgKGUuaW5jbHVkZSgiLW9mLXR5cGUiKSB8fCBlLmluY2x1ZGUoIjplbXB0eSIpKSkKICAgICAgcmV0dXJuIGZhbHNlOwoKICAgIC8vIFhQYXRoIGNhbid0IGRvIG5hbWVzcGFjZWQgYXR0cmlidXRlcywgbm9yIGNhbiBpdCByZWFkCiAgICAvLyB0aGUgImNoZWNrZWQiIHByb3BlcnR5IGZyb20gRE9NIG5vZGVzCiAgICBpZiAoKC8oXFtbXHctXSo/Onw6Y2hlY2tlZCkvKS50ZXN0KHRoaXMuZXhwcmVzc2lvbikpCiAgICAgIHJldHVybiBmYWxzZTsKCiAgICByZXR1cm4gdHJ1ZTsKICB9LAoKICBjb21waWxlTWF0Y2hlcjogZnVuY3Rpb24oKSB7CiAgICBpZiAodGhpcy5zaG91bGRVc2VYUGF0aCgpKQogICAgICByZXR1cm4gdGhpcy5jb21waWxlWFBhdGhNYXRjaGVyKCk7CgogICAgdmFyIGUgPSB0aGlzLmV4cHJlc3Npb24sIHBzID0gU2VsZWN0b3IucGF0dGVybnMsIGggPSBTZWxlY3Rvci5oYW5kbGVycywKICAgICAgICBjID0gU2VsZWN0b3IuY3JpdGVyaWEsIGxlLCBwLCBtOwoKICAgIGlmIChTZWxlY3Rvci5fY2FjaGVbZV0pIHsKICAgICAgdGhpcy5tYXRjaGVyID0gU2VsZWN0b3IuX2NhY2hlW2VdOwogICAgICByZXR1cm47CiAgICB9CgogICAgdGhpcy5tYXRjaGVyID0gWyJ0aGlzLm1hdGNoZXIgPSBmdW5jdGlvbihyb290KSB7IiwKICAgICAgICAgICAgICAgICAgICAidmFyIHIgPSByb290LCBoID0gU2VsZWN0b3IuaGFuZGxlcnMsIGMgPSBmYWxzZSwgbjsiXTsKCiAgICB3aGlsZSAoZSAmJiBsZSAhPSBlICYmICgvXFMvKS50ZXN0KGUpKSB7CiAgICAgIGxlID0gZTsKICAgICAgZm9yICh2YXIgaSBpbiBwcykgewogICAgICAgIHAgPSBwc1tpXTsKICAgICAgICBpZiAobSA9IGUubWF0Y2gocCkpIHsKICAgICAgICAgIHRoaXMubWF0Y2hlci5wdXNoKE9iamVjdC5pc0Z1bmN0aW9uKGNbaV0pID8gY1tpXShtKSA6CiAgICAJICAgICAgbmV3IFRlbXBsYXRlKGNbaV0pLmV2YWx1YXRlKG0pKTsKICAgICAgICAgIGUgPSBlLnJlcGxhY2UobVswXSwgJycpOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICB9CiAgICB9CgogICAgdGhpcy5tYXRjaGVyLnB1c2goInJldHVybiBoLnVuaXF1ZShuKTtcbn0iKTsKICAgIGV2YWwodGhpcy5tYXRjaGVyLmpvaW4oJ1xuJykpOwogICAgU2VsZWN0b3IuX2NhY2hlW3RoaXMuZXhwcmVzc2lvbl0gPSB0aGlzLm1hdGNoZXI7CiAgfSwKCiAgY29tcGlsZVhQYXRoTWF0Y2hlcjogZnVuY3Rpb24oKSB7CiAgICB2YXIgZSA9IHRoaXMuZXhwcmVzc2lvbiwgcHMgPSBTZWxlY3Rvci5wYXR0ZXJucywKICAgICAgICB4ID0gU2VsZWN0b3IueHBhdGgsIGxlLCBtOwoKICAgIGlmIChTZWxlY3Rvci5fY2FjaGVbZV0pIHsKICAgICAgdGhpcy54cGF0aCA9IFNlbGVjdG9yLl9jYWNoZVtlXTsgcmV0dXJuOwogICAgfQoKICAgIHRoaXMubWF0Y2hlciA9IFsnLi8vKiddOwogICAgd2hpbGUgKGUgJiYgbGUgIT0gZSAmJiAoL1xTLykudGVzdChlKSkgewogICAgICBsZSA9IGU7CiAgICAgIGZvciAodmFyIGkgaW4gcHMpIHsKICAgICAgICBpZiAobSA9IGUubWF0Y2gocHNbaV0pKSB7CiAgICAgICAgICB0aGlzLm1hdGNoZXIucHVzaChPYmplY3QuaXNGdW5jdGlvbih4W2ldKSA/IHhbaV0obSkgOgogICAgICAgICAgICBuZXcgVGVtcGxhdGUoeFtpXSkuZXZhbHVhdGUobSkpOwogICAgICAgICAgZSA9IGUucmVwbGFjZShtWzBdLCAnJyk7CiAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgIH0KICAgIH0KCiAgICB0aGlzLnhwYXRoID0gdGhpcy5tYXRjaGVyLmpvaW4oJycpOwogICAgU2VsZWN0b3IuX2NhY2hlW3RoaXMuZXhwcmVzc2lvbl0gPSB0aGlzLnhwYXRoOwogIH0sCgogIGZpbmRFbGVtZW50czogZnVuY3Rpb24ocm9vdCkgewogICAgcm9vdCA9IHJvb3QgfHwgZG9jdW1lbnQ7CiAgICBpZiAodGhpcy54cGF0aCkgcmV0dXJuIGRvY3VtZW50Ll9nZXRFbGVtZW50c0J5WFBhdGgodGhpcy54cGF0aCwgcm9vdCk7CiAgICByZXR1cm4gdGhpcy5tYXRjaGVyKHJvb3QpOwogIH0sCgogIG1hdGNoOiBmdW5jdGlvbihlbGVtZW50KSB7CiAgICB0aGlzLnRva2VucyA9IFtdOwoKICAgIHZhciBlID0gdGhpcy5leHByZXNzaW9uLCBwcyA9IFNlbGVjdG9yLnBhdHRlcm5zLCBhcyA9IFNlbGVjdG9yLmFzc2VydGlvbnM7CiAgICB2YXIgbGUsIHAsIG07CgogICAgd2hpbGUgKGUgJiYgbGUgIT09IGUgJiYgKC9cUy8pLnRlc3QoZSkpIHsKICAgICAgbGUgPSBlOwogICAgICBmb3IgKHZhciBpIGluIHBzKSB7CiAgICAgICAgcCA9IHBzW2ldOwogICAgICAgIGlmIChtID0gZS5tYXRjaChwKSkgewogICAgICAgICAgLy8gdXNlIHRoZSBTZWxlY3Rvci5hc3NlcnRpb25zIG1ldGhvZHMgdW5sZXNzIHRoZSBzZWxlY3RvcgogICAgICAgICAgLy8gaXMgdG9vIGNvbXBsZXguCiAgICAgICAgICBpZiAoYXNbaV0pIHsKICAgICAgICAgICAgdGhpcy50b2tlbnMucHVzaChbaSwgT2JqZWN0LmNsb25lKG0pXSk7CiAgICAgICAgICAgIGUgPSBlLnJlcGxhY2UobVswXSwgJycpOwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgLy8gcmVsdWN0YW50bHkgZG8gYSBkb2N1bWVudC13aWRlIHNlYXJjaAogICAgICAgICAgICAvLyBhbmQgbG9vayBmb3IgYSBtYXRjaCBpbiB0aGUgYXJyYXkKICAgICAgICAgICAgcmV0dXJuIHRoaXMuZmluZEVsZW1lbnRzKGRvY3VtZW50KS5pbmNsdWRlKGVsZW1lbnQpOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgfQoKICAgIHZhciBtYXRjaCA9IHRydWUsIG5hbWUsIG1hdGNoZXM7CiAgICBmb3IgKHZhciBpID0gMCwgdG9rZW47IHRva2VuID0gdGhpcy50b2tlbnNbaV07IGkrKykgewogICAgICBuYW1lID0gdG9rZW5bMF0sIG1hdGNoZXMgPSB0b2tlblsxXTsKICAgICAgaWYgKCFTZWxlY3Rvci5hc3NlcnRpb25zW25hbWVdKGVsZW1lbnQsIG1hdGNoZXMpKSB7CiAgICAgICAgbWF0Y2ggPSBmYWxzZTsgYnJlYWs7CiAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gbWF0Y2g7CiAgfSwKCiAgdG9TdHJpbmc6IGZ1bmN0aW9uKCkgewogICAgcmV0dXJuIHRoaXMuZXhwcmVzc2lvbjsKICB9LAoKICBpbnNwZWN0OiBmdW5jdGlvbigpIHsKICAgIHJldHVybiAiIzxTZWxlY3RvcjoiICsgdGhpcy5leHByZXNzaW9uLmluc3BlY3QoKSArICI+IjsKICB9Cn0pOwoKT2JqZWN0LmV4dGVuZChTZWxlY3RvciwgewogIF9jYWNoZTogeyB9LAoKICB4cGF0aDogewogICAgZGVzY2VuZGFudDogICAiLy8qIiwKICAgIGNoaWxkOiAgICAgICAgIi8qIiwKICAgIGFkamFjZW50OiAgICAgIi9mb2xsb3dpbmctc2libGluZzo6KlsxXSIsCiAgICBsYXRlclNpYmxpbmc6ICcvZm9sbG93aW5nLXNpYmxpbmc6OionLAogICAgdGFnTmFtZTogICAgICBmdW5jdGlvbihtKSB7CiAgICAgIGlmIChtWzFdID09ICcqJykgcmV0dXJuICcnOwogICAgICByZXR1cm4gIltsb2NhbC1uYW1lKCk9JyIgKyBtWzFdLnRvTG93ZXJDYXNlKCkgKwogICAgICAgICAgICAgIicgb3IgbG9jYWwtbmFtZSgpPSciICsgbVsxXS50b1VwcGVyQ2FzZSgpICsgIiddIjsKICAgIH0sCiAgICBjbGFzc05hbWU6ICAgICJbY29udGFpbnMoY29uY2F0KCcgJywgQGNsYXNzLCAnICcpLCAnICN7MX0gJyldIiwKICAgIGlkOiAgICAgICAgICAgIltAaWQ9JyN7MX0nXSIsCiAgICBhdHRyUHJlc2VuY2U6IGZ1bmN0aW9uKG0pIHsKICAgICAgbVsxXSA9IG1bMV0udG9Mb3dlckNhc2UoKTsKICAgICAgcmV0dXJuIG5ldyBUZW1wbGF0ZSgiW0AjezF9XSIpLmV2YWx1YXRlKG0pOwogICAgfSwKICAgIGF0dHI6IGZ1bmN0aW9uKG0pIHsKICAgICAgbVsxXSA9IG1bMV0udG9Mb3dlckNhc2UoKTsKICAgICAgbVszXSA9IG1bNV0gfHwgbVs2XTsKICAgICAgcmV0dXJuIG5ldyBUZW1wbGF0ZShTZWxlY3Rvci54cGF0aC5vcGVyYXRvcnNbbVsyXV0pLmV2YWx1YXRlKG0pOwogICAgfSwKICAgIHBzZXVkbzogZnVuY3Rpb24obSkgewogICAgICB2YXIgaCA9IFNlbGVjdG9yLnhwYXRoLnBzZXVkb3NbbVsxXV07CiAgICAgIGlmICghaCkgcmV0dXJuICcnOwogICAgICBpZiAoT2JqZWN0LmlzRnVuY3Rpb24oaCkpIHJldHVybiBoKG0pOwogICAgICByZXR1cm4gbmV3IFRlbXBsYXRlKFNlbGVjdG9yLnhwYXRoLnBzZXVkb3NbbVsxXV0pLmV2YWx1YXRlKG0pOwogICAgfSwKICAgIG9wZXJhdG9yczogewogICAgICAnPSc6ICAiW0AjezF9PScjezN9J10iLAogICAgICAnIT0nOiAiW0AjezF9IT0nI3szfSddIiwKICAgICAgJ149JzogIltzdGFydHMtd2l0aChAI3sxfSwgJyN7M30nKV0iLAogICAgICAnJD0nOiAiW3N1YnN0cmluZyhAI3sxfSwgKHN0cmluZy1sZW5ndGgoQCN7MX0pIC0gc3RyaW5nLWxlbmd0aCgnI3szfScpICsgMSkpPScjezN9J10iLAogICAgICAnKj0nOiAiW2NvbnRhaW5zKEAjezF9LCAnI3szfScpXSIsCiAgICAgICd+PSc6ICJbY29udGFpbnMoY29uY2F0KCcgJywgQCN7MX0sICcgJyksICcgI3szfSAnKV0iLAogICAgICAnfD0nOiAiW2NvbnRhaW5zKGNvbmNhdCgnLScsIEAjezF9LCAnLScpLCAnLSN7M30tJyldIgogICAgfSwKICAgIHBzZXVkb3M6IHsKICAgICAgJ2ZpcnN0LWNoaWxkJzogJ1tub3QocHJlY2VkaW5nLXNpYmxpbmc6OiopXScsCiAgICAgICdsYXN0LWNoaWxkJzogICdbbm90KGZvbGxvd2luZy1zaWJsaW5nOjoqKV0nLAogICAgICAnb25seS1jaGlsZCc6ICAnW25vdChwcmVjZWRpbmctc2libGluZzo6KiBvciBmb2xsb3dpbmctc2libGluZzo6KildJywKICAgICAgJ2VtcHR5JzogICAgICAgIltjb3VudCgqKSA9IDAgYW5kIChjb3VudCh0ZXh0KCkpID0gMCBvciB0cmFuc2xhdGUodGV4dCgpLCAnIFx0XHJcbicsICcnKSA9ICcnKV0iLAogICAgICAnY2hlY2tlZCc6ICAgICAiW0BjaGVja2VkXSIsCiAgICAgICdkaXNhYmxlZCc6ICAgICJbQGRpc2FibGVkXSIsCiAgICAgICdlbmFibGVkJzogICAgICJbbm90KEBkaXNhYmxlZCldIiwKICAgICAgJ25vdCc6IGZ1bmN0aW9uKG0pIHsKICAgICAgICB2YXIgZSA9IG1bNl0sIHAgPSBTZWxlY3Rvci5wYXR0ZXJucywKICAgICAgICAgICAgeCA9IFNlbGVjdG9yLnhwYXRoLCBsZSwgdjsKCiAgICAgICAgdmFyIGV4Y2x1c2lvbiA9IFtdOwogICAgICAgIHdoaWxlIChlICYmIGxlICE9IGUgJiYgKC9cUy8pLnRlc3QoZSkpIHsKICAgICAgICAgIGxlID0gZTsKICAgICAgICAgIGZvciAodmFyIGkgaW4gcCkgewogICAgICAgICAgICBpZiAobSA9IGUubWF0Y2gocFtpXSkpIHsKICAgICAgICAgICAgICB2ID0gT2JqZWN0LmlzRnVuY3Rpb24oeFtpXSkgPyB4W2ldKG0pIDogbmV3IFRlbXBsYXRlKHhbaV0pLmV2YWx1YXRlKG0pOwogICAgICAgICAgICAgIGV4Y2x1c2lvbi5wdXNoKCIoIiArIHYuc3Vic3RyaW5nKDEsIHYubGVuZ3RoIC0gMSkgKyAiKSIpOwogICAgICAgICAgICAgIGUgPSBlLnJlcGxhY2UobVswXSwgJycpOwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiAiW25vdCgiICsgZXhjbHVzaW9uLmpvaW4oIiBhbmQgIikgKyAiKV0iOwogICAgICB9LAogICAgICAnbnRoLWNoaWxkJzogICAgICBmdW5jdGlvbihtKSB7CiAgICAgICAgcmV0dXJuIFNlbGVjdG9yLnhwYXRoLnBzZXVkb3MubnRoKCIoY291bnQoLi9wcmVjZWRpbmctc2libGluZzo6KikgKyAxKSAiLCBtKTsKICAgICAgfSwKICAgICAgJ250aC1sYXN0LWNoaWxkJzogZnVuY3Rpb24obSkgewogICAgICAgIHJldHVybiBTZWxlY3Rvci54cGF0aC5wc2V1ZG9zLm50aCgiKGNvdW50KC4vZm9sbG93aW5nLXNpYmxpbmc6OiopICsgMSkgIiwgbSk7CiAgICAgIH0sCiAgICAgICdudGgtb2YtdHlwZSc6ICAgIGZ1bmN0aW9uKG0pIHsKICAgICAgICByZXR1cm4gU2VsZWN0b3IueHBhdGgucHNldWRvcy5udGgoInBvc2l0aW9uKCkgIiwgbSk7CiAgICAgIH0sCiAgICAgICdudGgtbGFzdC1vZi10eXBlJzogZnVuY3Rpb24obSkgewogICAgICAgIHJldHVybiBTZWxlY3Rvci54cGF0aC5wc2V1ZG9zLm50aCgiKGxhc3QoKSArIDEgLSBwb3NpdGlvbigpKSAiLCBtKTsKICAgICAgfSwKICAgICAgJ2ZpcnN0LW9mLXR5cGUnOiAgZnVuY3Rpb24obSkgewogICAgICAgIG1bNl0gPSAiMSI7IHJldHVybiBTZWxlY3Rvci54cGF0aC5wc2V1ZG9zWydudGgtb2YtdHlwZSddKG0pOwogICAgICB9LAogICAgICAnbGFzdC1vZi10eXBlJzogICBmdW5jdGlvbihtKSB7CiAgICAgICAgbVs2XSA9ICIxIjsgcmV0dXJuIFNlbGVjdG9yLnhwYXRoLnBzZXVkb3NbJ250aC1sYXN0LW9mLXR5cGUnXShtKTsKICAgICAgfSwKICAgICAgJ29ubHktb2YtdHlwZSc6ICAgZnVuY3Rpb24obSkgewogICAgICAgIHZhciBwID0gU2VsZWN0b3IueHBhdGgucHNldWRvczsgcmV0dXJuIHBbJ2ZpcnN0LW9mLXR5cGUnXShtKSArIHBbJ2xhc3Qtb2YtdHlwZSddKG0pOwogICAgICB9LAogICAgICBudGg6IGZ1bmN0aW9uKGZyYWdtZW50LCBtKSB7CiAgICAgICAgdmFyIG1tLCBmb3JtdWxhID0gbVs2XSwgcHJlZGljYXRlOwogICAgICAgIGlmIChmb3JtdWxhID09ICdldmVuJykgZm9ybXVsYSA9ICcybiswJzsKICAgICAgICBpZiAoZm9ybXVsYSA9PSAnb2RkJykgIGZvcm11bGEgPSAnMm4rMSc7CiAgICAgICAgaWYgKG1tID0gZm9ybXVsYS5tYXRjaCgvXihcZCspJC8pKSAvLyBkaWdpdCBvbmx5CiAgICAgICAgICByZXR1cm4gJ1snICsgZnJhZ21lbnQgKyAiPSAiICsgbW1bMV0gKyAnXSc7CiAgICAgICAgaWYgKG1tID0gZm9ybXVsYS5tYXRjaCgvXigtP1xkKik/bigoWystXSkoXGQrKSk/LykpIHsgLy8gYW4rYgogICAgICAgICAgaWYgKG1tWzFdID09ICItIikgbW1bMV0gPSAtMTsKICAgICAgICAgIHZhciBhID0gbW1bMV0gPyBOdW1iZXIobW1bMV0pIDogMTsKICAgICAgICAgIHZhciBiID0gbW1bMl0gPyBOdW1iZXIobW1bMl0pIDogMDsKICAgICAgICAgIHByZWRpY2F0ZSA9ICJbKCgje2ZyYWdtZW50fSAtICN7Yn0pIG1vZCAje2F9ID0gMCkgYW5kICIgKwogICAgICAgICAgIigoI3tmcmFnbWVudH0gLSAje2J9KSBkaXYgI3thfSA+PSAwKV0iOwogICAgICAgICAgcmV0dXJuIG5ldyBUZW1wbGF0ZShwcmVkaWNhdGUpLmV2YWx1YXRlKHsKICAgICAgICAgICAgZnJhZ21lbnQ6IGZyYWdtZW50LCBhOiBhLCBiOiBiIH0pOwogICAgICAgIH0KICAgICAgfQogICAgfQogIH0sCgogIGNyaXRlcmlhOiB7CiAgICB0YWdOYW1lOiAgICAgICduID0gaC50YWdOYW1lKG4sIHIsICIjezF9IiwgYyk7ICAgICAgYyA9IGZhbHNlOycsCiAgICBjbGFzc05hbWU6ICAgICduID0gaC5jbGFzc05hbWUobiwgciwgIiN7MX0iLCBjKTsgICAgYyA9IGZhbHNlOycsCiAgICBpZDogICAgICAgICAgICduID0gaC5pZChuLCByLCAiI3sxfSIsIGMpOyAgICAgICAgICAgYyA9IGZhbHNlOycsCiAgICBhdHRyUHJlc2VuY2U6ICduID0gaC5hdHRyUHJlc2VuY2UobiwgciwgIiN7MX0iLCBjKTsgYyA9IGZhbHNlOycsCiAgICBhdHRyOiBmdW5jdGlvbihtKSB7CiAgICAgIG1bM10gPSAobVs1XSB8fCBtWzZdKTsKICAgICAgcmV0dXJuIG5ldyBUZW1wbGF0ZSgnbiA9IGguYXR0cihuLCByLCAiI3sxfSIsICIjezN9IiwgIiN7Mn0iLCBjKTsgYyA9IGZhbHNlOycpLmV2YWx1YXRlKG0pOwogICAgfSwKICAgIHBzZXVkbzogZnVuY3Rpb24obSkgewogICAgICBpZiAobVs2XSkgbVs2XSA9IG1bNl0ucmVwbGFjZSgvIi9nLCAnXFwiJyk7CiAgICAgIHJldHVybiBuZXcgVGVtcGxhdGUoJ24gPSBoLnBzZXVkbyhuLCAiI3sxfSIsICIjezZ9IiwgciwgYyk7IGMgPSBmYWxzZTsnKS5ldmFsdWF0ZShtKTsKICAgIH0sCiAgICBkZXNjZW5kYW50OiAgICdjID0gImRlc2NlbmRhbnQiOycsCiAgICBjaGlsZDogICAgICAgICdjID0gImNoaWxkIjsnLAogICAgYWRqYWNlbnQ6ICAgICAnYyA9ICJhZGphY2VudCI7JywKICAgIGxhdGVyU2libGluZzogJ2MgPSAibGF0ZXJTaWJsaW5nIjsnCiAgfSwKCiAgcGF0dGVybnM6IHsKICAgIC8vIGNvbWJpbmF0b3JzIG11c3QgYmUgbGlzdGVkIGZpcnN0CiAgICAvLyAoYW5kIGRlc2NlbmRhbnQgbmVlZHMgdG8gYmUgbGFzdCBjb21iaW5hdG9yKQogICAgbGF0ZXJTaWJsaW5nOiAvXlxzKn5ccyovLAogICAgY2hpbGQ6ICAgICAgICAvXlxzKj5ccyovLAogICAgYWRqYWNlbnQ6ICAgICAvXlxzKlwrXHMqLywKICAgIGRlc2NlbmRhbnQ6ICAgL15ccy8sCgogICAgLy8gc2VsZWN0b3JzIGZvbGxvdwogICAgdGFnTmFtZTogICAgICAvXlxzKihcKnxbXHdcLV0rKShcYnwkKT8vLAogICAgaWQ6ICAgICAgICAgICAvXiMoW1x3XC1cKl0rKShcYnwkKS8sCiAgICBjbGFzc05hbWU6ICAgIC9eXC4oW1x3XC1cKl0rKShcYnwkKS8sCiAgICBwc2V1ZG86Ci9eOigoZmlyc3R8bGFzdHxudGh8bnRoLWxhc3R8b25seSkoLWNoaWxkfC1vZi10eXBlKXxlbXB0eXxjaGVja2VkfChlbnxkaXMpYWJsZWR8bm90KShcKCguKj8pXCkpPyhcYnwkfCg/PVxzfFs6K34+XSkpLywKICAgIGF0dHJQcmVzZW5jZTogL15cWyhbXHddKylcXS8sCiAgICBhdHRyOiAgICAgICAgIC9cWygoPzpbXHctXSo6KT9bXHctXSspXHMqKD86KFshXiQqfnxdPz0pXHMqKChbJyJdKShbXlw0XSo/KVw0fChbXiciXVteXF1dKj8pKSk/XF0vCiAgfSwKCiAgLy8gZm9yIFNlbGVjdG9yLm1hdGNoIGFuZCBFbGVtZW50I21hdGNoCiAgYXNzZXJ0aW9uczogewogICAgdGFnTmFtZTogZnVuY3Rpb24oZWxlbWVudCwgbWF0Y2hlcykgewogICAgICByZXR1cm4gbWF0Y2hlc1sxXS50b1VwcGVyQ2FzZSgpID09IGVsZW1lbnQudGFnTmFtZS50b1VwcGVyQ2FzZSgpOwogICAgfSwKCiAgICBjbGFzc05hbWU6IGZ1bmN0aW9uKGVsZW1lbnQsIG1hdGNoZXMpIHsKICAgICAgcmV0dXJuIEVsZW1lbnQuaGFzQ2xhc3NOYW1lKGVsZW1lbnQsIG1hdGNoZXNbMV0pOwogICAgfSwKCiAgICBpZDogZnVuY3Rpb24oZWxlbWVudCwgbWF0Y2hlcykgewogICAgICByZXR1cm4gZWxlbWVudC5pZCA9PT0gbWF0Y2hlc1sxXTsKICAgIH0sCgogICAgYXR0clByZXNlbmNlOiBmdW5jdGlvbihlbGVtZW50LCBtYXRjaGVzKSB7CiAgICAgIHJldHVybiBFbGVtZW50Lmhhc0F0dHJpYnV0ZShlbGVtZW50LCBtYXRjaGVzWzFdKTsKICAgIH0sCgogICAgYXR0cjogZnVuY3Rpb24oZWxlbWVudCwgbWF0Y2hlcykgewogICAgICB2YXIgbm9kZVZhbHVlID0gRWxlbWVudC5yZWFkQXR0cmlidXRlKGVsZW1lbnQsIG1hdGNoZXNbMV0pOwogICAgICByZXR1cm4gbm9kZVZhbHVlICYmIFNlbGVjdG9yLm9wZXJhdG9yc1ttYXRjaGVzWzJdXShub2RlVmFsdWUsIG1hdGNoZXNbNV0gfHwgbWF0Y2hlc1s2XSk7CiAgICB9CiAgfSwKCiAgaGFuZGxlcnM6IHsKICAgIC8vIFVUSUxJVFkgRlVOQ1RJT05TCiAgICAvLyBqb2lucyB0d28gY29sbGVjdGlvbnMKICAgIGNvbmNhdDogZnVuY3Rpb24oYSwgYikgewogICAgICBmb3IgKHZhciBpID0gMCwgbm9kZTsgbm9kZSA9IGJbaV07IGkrKykKICAgICAgICBhLnB1c2gobm9kZSk7CiAgICAgIHJldHVybiBhOwogICAgfSwKCiAgICAvLyBtYXJrcyBhbiBhcnJheSBvZiBub2RlcyBmb3IgY291bnRpbmcKICAgIG1hcms6IGZ1bmN0aW9uKG5vZGVzKSB7CiAgICAgIHZhciBfdHJ1ZSA9IFByb3RvdHlwZS5lbXB0eUZ1bmN0aW9uOwogICAgICBmb3IgKHZhciBpID0gMCwgbm9kZTsgbm9kZSA9IG5vZGVzW2ldOyBpKyspCiAgICAgICAgbm9kZS5fY291bnRlZEJ5UHJvdG90eXBlID0gX3RydWU7CiAgICAgIHJldHVybiBub2RlczsKICAgIH0sCgogICAgdW5tYXJrOiBmdW5jdGlvbihub2RlcykgewogICAgICBmb3IgKHZhciBpID0gMCwgbm9kZTsgbm9kZSA9IG5vZGVzW2ldOyBpKyspCiAgICAgICAgbm9kZS5fY291bnRlZEJ5UHJvdG90eXBlID0gdW5kZWZpbmVkOwogICAgICByZXR1cm4gbm9kZXM7CiAgICB9LAoKICAgIC8vIG1hcmsgZWFjaCBjaGlsZCBub2RlIHdpdGggaXRzIHBvc2l0aW9uIChmb3IgbnRoIGNhbGxzKQogICAgLy8gIm9mVHlwZSIgZmxhZyBpbmRpY2F0ZXMgd2hldGhlciB3ZSdyZSBpbmRleGluZyBmb3IgbnRoLW9mLXR5cGUKICAgIC8vIHJhdGhlciB0aGFuIG50aC1jaGlsZAogICAgaW5kZXg6IGZ1bmN0aW9uKHBhcmVudE5vZGUsIHJldmVyc2UsIG9mVHlwZSkgewogICAgICBwYXJlbnROb2RlLl9jb3VudGVkQnlQcm90b3R5cGUgPSBQcm90b3R5cGUuZW1wdHlGdW5jdGlvbjsKICAgICAgaWYgKHJldmVyc2UpIHsKICAgICAgICBmb3IgKHZhciBub2RlcyA9IHBhcmVudE5vZGUuY2hpbGROb2RlcywgaSA9IG5vZGVzLmxlbmd0aCAtIDEsIGogPSAxOyBpID49IDA7IGktLSkgewogICAgICAgICAgdmFyIG5vZGUgPSBub2Rlc1tpXTsKICAgICAgICAgIGlmIChub2RlLm5vZGVUeXBlID09IDEgJiYgKCFvZlR5cGUgfHwgbm9kZS5fY291bnRlZEJ5UHJvdG90eXBlKSkgbm9kZS5ub2RlSW5kZXggPSBqKys7CiAgICAgICAgfQogICAgICB9IGVsc2UgewogICAgICAgIGZvciAodmFyIGkgPSAwLCBqID0gMSwgbm9kZXMgPSBwYXJlbnROb2RlLmNoaWxkTm9kZXM7IG5vZGUgPSBub2Rlc1tpXTsgaSsrKQogICAgICAgICAgaWYgKG5vZGUubm9kZVR5cGUgPT0gMSAmJiAoIW9mVHlwZSB8fCBub2RlLl9jb3VudGVkQnlQcm90b3R5cGUpKSBub2RlLm5vZGVJbmRleCA9IGorKzsKICAgICAgfQogICAgfSwKCiAgICAvLyBmaWx0ZXJzIG91dCBkdXBsaWNhdGVzIGFuZCBleHRlbmRzIGFsbCBub2RlcwogICAgdW5pcXVlOiBmdW5jdGlvbihub2RlcykgewogICAgICBpZiAobm9kZXMubGVuZ3RoID09IDApIHJldHVybiBub2RlczsKICAgICAgdmFyIHJlc3VsdHMgPSBbXSwgbjsKICAgICAgZm9yICh2YXIgaSA9IDAsIGwgPSBub2Rlcy5sZW5ndGg7IGkgPCBsOyBpKyspCiAgICAgICAgaWYgKCEobiA9IG5vZGVzW2ldKS5fY291bnRlZEJ5UHJvdG90eXBlKSB7CiAgICAgICAgICBuLl9jb3VudGVkQnlQcm90b3R5cGUgPSBQcm90b3R5cGUuZW1wdHlGdW5jdGlvbjsKICAgICAgICAgIHJlc3VsdHMucHVzaChFbGVtZW50LmV4dGVuZChuKSk7CiAgICAgICAgfQogICAgICByZXR1cm4gU2VsZWN0b3IuaGFuZGxlcnMudW5tYXJrKHJlc3VsdHMpOwogICAgfSwKCiAgICAvLyBDT01CSU5BVE9SIEZVTkNUSU9OUwogICAgZGVzY2VuZGFudDogZnVuY3Rpb24obm9kZXMpIHsKICAgICAgdmFyIGggPSBTZWxlY3Rvci5oYW5kbGVyczsKICAgICAgZm9yICh2YXIgaSA9IDAsIHJlc3VsdHMgPSBbXSwgbm9kZTsgbm9kZSA9IG5vZGVzW2ldOyBpKyspCiAgICAgICAgaC5jb25jYXQocmVzdWx0cywgbm9kZS5nZXRFbGVtZW50c0J5VGFnTmFtZSgnKicpKTsKICAgICAgcmV0dXJuIHJlc3VsdHM7CiAgICB9LAoKICAgIGNoaWxkOiBmdW5jdGlvbihub2RlcykgewogICAgICB2YXIgaCA9IFNlbGVjdG9yLmhhbmRsZXJzOwogICAgICBmb3IgKHZhciBpID0gMCwgcmVzdWx0cyA9IFtdLCBub2RlOyBub2RlID0gbm9kZXNbaV07IGkrKykgewogICAgICAgIGZvciAodmFyIGogPSAwLCBjaGlsZDsgY2hpbGQgPSBub2RlLmNoaWxkTm9kZXNbal07IGorKykKICAgICAgICAgIGlmIChjaGlsZC5ub2RlVHlwZSA9PSAxICYmIGNoaWxkLnRhZ05hbWUgIT0gJyEnKSByZXN1bHRzLnB1c2goY2hpbGQpOwogICAgICB9CiAgICAgIHJldHVybiByZXN1bHRzOwogICAgfSwKCiAgICBhZGphY2VudDogZnVuY3Rpb24obm9kZXMpIHsKICAgICAgZm9yICh2YXIgaSA9IDAsIHJlc3VsdHMgPSBbXSwgbm9kZTsgbm9kZSA9IG5vZGVzW2ldOyBpKyspIHsKICAgICAgICB2YXIgbmV4dCA9IHRoaXMubmV4dEVsZW1lbnRTaWJsaW5nKG5vZGUpOwogICAgICAgIGlmIChuZXh0KSByZXN1bHRzLnB1c2gobmV4dCk7CiAgICAgIH0KICAgICAgcmV0dXJuIHJlc3VsdHM7CiAgICB9LAoKICAgIGxhdGVyU2libGluZzogZnVuY3Rpb24obm9kZXMpIHsKICAgICAgdmFyIGggPSBTZWxlY3Rvci5oYW5kbGVyczsKICAgICAgZm9yICh2YXIgaSA9IDAsIHJlc3VsdHMgPSBbXSwgbm9kZTsgbm9kZSA9IG5vZGVzW2ldOyBpKyspCiAgICAgICAgaC5jb25jYXQocmVzdWx0cywgRWxlbWVudC5uZXh0U2libGluZ3Mobm9kZSkpOwogICAgICByZXR1cm4gcmVzdWx0czsKICAgIH0sCgogICAgbmV4dEVsZW1lbnRTaWJsaW5nOiBmdW5jdGlvbihub2RlKSB7CiAgICAgIHdoaWxlIChub2RlID0gbm9kZS5uZXh0U2libGluZykKCSAgICAgIGlmIChub2RlLm5vZGVUeXBlID09IDEpIHJldHVybiBub2RlOwogICAgICByZXR1cm4gbnVsbDsKICAgIH0sCgogICAgcHJldmlvdXNFbGVtZW50U2libGluZzogZnVuY3Rpb24obm9kZSkgewogICAgICB3aGlsZSAobm9kZSA9IG5vZGUucHJldmlvdXNTaWJsaW5nKQogICAgICAgIGlmIChub2RlLm5vZGVUeXBlID09IDEpIHJldHVybiBub2RlOwogICAgICByZXR1cm4gbnVsbDsKICAgIH0sCgogICAgLy8gVE9LRU4gRlVOQ1RJT05TCiAgICB0YWdOYW1lOiBmdW5jdGlvbihub2Rlcywgcm9vdCwgdGFnTmFtZSwgY29tYmluYXRvcikgewogICAgICB2YXIgdVRhZ05hbWUgPSB0YWdOYW1lLnRvVXBwZXJDYXNlKCk7CiAgICAgIHZhciByZXN1bHRzID0gW10sIGggPSBTZWxlY3Rvci5oYW5kbGVyczsKICAgICAgaWYgKG5vZGVzKSB7CiAgICAgICAgaWYgKGNvbWJpbmF0b3IpIHsKICAgICAgICAgIC8vIGZhc3RsYW5lIGZvciBvcmRpbmFyeSBkZXNjZW5kYW50IGNvbWJpbmF0b3JzCiAgICAgICAgICBpZiAoY29tYmluYXRvciA9PSAiZGVzY2VuZGFudCIpIHsKICAgICAgICAgICAgZm9yICh2YXIgaSA9IDAsIG5vZGU7IG5vZGUgPSBub2Rlc1tpXTsgaSsrKQogICAgICAgICAgICAgIGguY29uY2F0KHJlc3VsdHMsIG5vZGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUodGFnTmFtZSkpOwogICAgICAgICAgICByZXR1cm4gcmVzdWx0czsKICAgICAgICAgIH0gZWxzZSBub2RlcyA9IHRoaXNbY29tYmluYXRvcl0obm9kZXMpOwogICAgICAgICAgaWYgKHRhZ05hbWUgPT0gIioiKSByZXR1cm4gbm9kZXM7CiAgICAgICAgfQogICAgICAgIGZvciAodmFyIGkgPSAwLCBub2RlOyBub2RlID0gbm9kZXNbaV07IGkrKykKICAgICAgICAgIGlmIChub2RlLnRhZ05hbWUudG9VcHBlckNhc2UoKSA9PT0gdVRhZ05hbWUpIHJlc3VsdHMucHVzaChub2RlKTsKICAgICAgICByZXR1cm4gcmVzdWx0czsKICAgICAgfSBlbHNlIHJldHVybiByb290LmdldEVsZW1lbnRzQnlUYWdOYW1lKHRhZ05hbWUpOwogICAgfSwKCiAgICBpZDogZnVuY3Rpb24obm9kZXMsIHJvb3QsIGlkLCBjb21iaW5hdG9yKSB7CiAgICAgIHZhciB0YXJnZXROb2RlID0gJChpZCksIGggPSBTZWxlY3Rvci5oYW5kbGVyczsKICAgICAgaWYgKCF0YXJnZXROb2RlKSByZXR1cm4gW107CiAgICAgIGlmICghbm9kZXMgJiYgcm9vdCA9PSBkb2N1bWVudCkgcmV0dXJuIFt0YXJnZXROb2RlXTsKICAgICAgaWYgKG5vZGVzKSB7CiAgICAgICAgaWYgKGNvbWJpbmF0b3IpIHsKICAgICAgICAgIGlmIChjb21iaW5hdG9yID09ICdjaGlsZCcpIHsKICAgICAgICAgICAgZm9yICh2YXIgaSA9IDAsIG5vZGU7IG5vZGUgPSBub2Rlc1tpXTsgaSsrKQogICAgICAgICAgICAgIGlmICh0YXJnZXROb2RlLnBhcmVudE5vZGUgPT0gbm9kZSkgcmV0dXJuIFt0YXJnZXROb2RlXTsKICAgICAgICAgIH0gZWxzZSBpZiAoY29tYmluYXRvciA9PSAnZGVzY2VuZGFudCcpIHsKICAgICAgICAgICAgZm9yICh2YXIgaSA9IDAsIG5vZGU7IG5vZGUgPSBub2Rlc1tpXTsgaSsrKQogICAgICAgICAgICAgIGlmIChFbGVtZW50LmRlc2NlbmRhbnRPZih0YXJnZXROb2RlLCBub2RlKSkgcmV0dXJuIFt0YXJnZXROb2RlXTsKICAgICAgICAgIH0gZWxzZSBpZiAoY29tYmluYXRvciA9PSAnYWRqYWNlbnQnKSB7CiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwLCBub2RlOyBub2RlID0gbm9kZXNbaV07IGkrKykKICAgICAgICAgICAgICBpZiAoU2VsZWN0b3IuaGFuZGxlcnMucHJldmlvdXNFbGVtZW50U2libGluZyh0YXJnZXROb2RlKSA9PSBub2RlKQogICAgICAgICAgICAgICAgcmV0dXJuIFt0YXJnZXROb2RlXTsKICAgICAgICAgIH0gZWxzZSBub2RlcyA9IGhbY29tYmluYXRvcl0obm9kZXMpOwogICAgICAgIH0KICAgICAgICBmb3IgKHZhciBpID0gMCwgbm9kZTsgbm9kZSA9IG5vZGVzW2ldOyBpKyspCiAgICAgICAgICBpZiAobm9kZSA9PSB0YXJnZXROb2RlKSByZXR1cm4gW3RhcmdldE5vZGVdOwogICAgICAgIHJldHVybiBbXTsKICAgICAgfQogICAgICByZXR1cm4gKHRhcmdldE5vZGUgJiYgRWxlbWVudC5kZXNjZW5kYW50T2YodGFyZ2V0Tm9kZSwgcm9vdCkpID8gW3RhcmdldE5vZGVdIDogW107CiAgICB9LAoKICAgIGNsYXNzTmFtZTogZnVuY3Rpb24obm9kZXMsIHJvb3QsIGNsYXNzTmFtZSwgY29tYmluYXRvcikgewogICAgICBpZiAobm9kZXMgJiYgY29tYmluYXRvcikgbm9kZXMgPSB0aGlzW2NvbWJpbmF0b3JdKG5vZGVzKTsKICAgICAgcmV0dXJuIFNlbGVjdG9yLmhhbmRsZXJzLmJ5Q2xhc3NOYW1lKG5vZGVzLCByb290LCBjbGFzc05hbWUpOwogICAgfSwKCiAgICBieUNsYXNzTmFtZTogZnVuY3Rpb24obm9kZXMsIHJvb3QsIGNsYXNzTmFtZSkgewogICAgICBpZiAoIW5vZGVzKSBub2RlcyA9IFNlbGVjdG9yLmhhbmRsZXJzLmRlc2NlbmRhbnQoW3Jvb3RdKTsKICAgICAgdmFyIG5lZWRsZSA9ICcgJyArIGNsYXNzTmFtZSArICcgJzsKICAgICAgZm9yICh2YXIgaSA9IDAsIHJlc3VsdHMgPSBbXSwgbm9kZSwgbm9kZUNsYXNzTmFtZTsgbm9kZSA9IG5vZGVzW2ldOyBpKyspIHsKICAgICAgICBub2RlQ2xhc3NOYW1lID0gbm9kZS5jbGFzc05hbWU7CiAgICAgICAgaWYgKG5vZGVDbGFzc05hbWUubGVuZ3RoID09IDApIGNvbnRpbnVlOwogICAgICAgIGlmIChub2RlQ2xhc3NOYW1lID09IGNsYXNzTmFtZSB8fCAoJyAnICsgbm9kZUNsYXNzTmFtZSArICcgJykuaW5jbHVkZShuZWVkbGUpKQogICAgICAgICAgcmVzdWx0cy5wdXNoKG5vZGUpOwogICAgICB9CiAgICAgIHJldHVybiByZXN1bHRzOwogICAgfSwKCiAgICBhdHRyUHJlc2VuY2U6IGZ1bmN0aW9uKG5vZGVzLCByb290LCBhdHRyLCBjb21iaW5hdG9yKSB7CiAgICAgIGlmICghbm9kZXMpIG5vZGVzID0gcm9vdC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpOwogICAgICBpZiAobm9kZXMgJiYgY29tYmluYXRvcikgbm9kZXMgPSB0aGlzW2NvbWJpbmF0b3JdKG5vZGVzKTsKICAgICAgdmFyIHJlc3VsdHMgPSBbXTsKICAgICAgZm9yICh2YXIgaSA9IDAsIG5vZGU7IG5vZGUgPSBub2Rlc1tpXTsgaSsrKQogICAgICAgIGlmIChFbGVtZW50Lmhhc0F0dHJpYnV0ZShub2RlLCBhdHRyKSkgcmVzdWx0cy5wdXNoKG5vZGUpOwogICAgICByZXR1cm4gcmVzdWx0czsKICAgIH0sCgogICAgYXR0cjogZnVuY3Rpb24obm9kZXMsIHJvb3QsIGF0dHIsIHZhbHVlLCBvcGVyYXRvciwgY29tYmluYXRvcikgewogICAgICBpZiAoIW5vZGVzKSBub2RlcyA9IHJvb3QuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIioiKTsKICAgICAgaWYgKG5vZGVzICYmIGNvbWJpbmF0b3IpIG5vZGVzID0gdGhpc1tjb21iaW5hdG9yXShub2Rlcyk7CiAgICAgIHZhciBoYW5kbGVyID0gU2VsZWN0b3Iub3BlcmF0b3JzW29wZXJhdG9yXSwgcmVzdWx0cyA9IFtdOwogICAgICBmb3IgKHZhciBpID0gMCwgbm9kZTsgbm9kZSA9IG5vZGVzW2ldOyBpKyspIHsKICAgICAgICB2YXIgbm9kZVZhbHVlID0gRWxlbWVudC5yZWFkQXR0cmlidXRlKG5vZGUsIGF0dHIpOwogICAgICAgIGlmIChub2RlVmFsdWUgPT09IG51bGwpIGNvbnRpbnVlOwogICAgICAgIGlmIChoYW5kbGVyKG5vZGVWYWx1ZSwgdmFsdWUpKSByZXN1bHRzLnB1c2gobm9kZSk7CiAgICAgIH0KICAgICAgcmV0dXJuIHJlc3VsdHM7CiAgICB9LAoKICAgIHBzZXVkbzogZnVuY3Rpb24obm9kZXMsIG5hbWUsIHZhbHVlLCByb290LCBjb21iaW5hdG9yKSB7CiAgICAgIGlmIChub2RlcyAmJiBjb21iaW5hdG9yKSBub2RlcyA9IHRoaXNbY29tYmluYXRvcl0obm9kZXMpOwogICAgICBpZiAoIW5vZGVzKSBub2RlcyA9IHJvb3QuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIioiKTsKICAgICAgcmV0dXJuIFNlbGVjdG9yLnBzZXVkb3NbbmFtZV0obm9kZXMsIHZhbHVlLCByb290KTsKICAgIH0KICB9LAoKICBwc2V1ZG9zOiB7CiAgICAnZmlyc3QtY2hpbGQnOiBmdW5jdGlvbihub2RlcywgdmFsdWUsIHJvb3QpIHsKICAgICAgZm9yICh2YXIgaSA9IDAsIHJlc3VsdHMgPSBbXSwgbm9kZTsgbm9kZSA9IG5vZGVzW2ldOyBpKyspIHsKICAgICAgICBpZiAoU2VsZWN0b3IuaGFuZGxlcnMucHJldmlvdXNFbGVtZW50U2libGluZyhub2RlKSkgY29udGludWU7CiAgICAgICAgICByZXN1bHRzLnB1c2gobm9kZSk7CiAgICAgIH0KICAgICAgcmV0dXJuIHJlc3VsdHM7CiAgICB9LAogICAgJ2xhc3QtY2hpbGQnOiBmdW5jdGlvbihub2RlcywgdmFsdWUsIHJvb3QpIHsKICAgICAgZm9yICh2YXIgaSA9IDAsIHJlc3VsdHMgPSBbXSwgbm9kZTsgbm9kZSA9IG5vZGVzW2ldOyBpKyspIHsKICAgICAgICBpZiAoU2VsZWN0b3IuaGFuZGxlcnMubmV4dEVsZW1lbnRTaWJsaW5nKG5vZGUpKSBjb250aW51ZTsKICAgICAgICAgIHJlc3VsdHMucHVzaChub2RlKTsKICAgICAgfQogICAgICByZXR1cm4gcmVzdWx0czsKICAgIH0sCiAgICAnb25seS1jaGlsZCc6IGZ1bmN0aW9uKG5vZGVzLCB2YWx1ZSwgcm9vdCkgewogICAgICB2YXIgaCA9IFNlbGVjdG9yLmhhbmRsZXJzOwogICAgICBmb3IgKHZhciBpID0gMCwgcmVzdWx0cyA9IFtdLCBub2RlOyBub2RlID0gbm9kZXNbaV07IGkrKykKICAgICAgICBpZiAoIWgucHJldmlvdXNFbGVtZW50U2libGluZyhub2RlKSAmJiAhaC5uZXh0RWxlbWVudFNpYmxpbmcobm9kZSkpCiAgICAgICAgICByZXN1bHRzLnB1c2gobm9kZSk7CiAgICAgIHJldHVybiByZXN1bHRzOwogICAgfSwKICAgICdudGgtY2hpbGQnOiAgICAgICAgZnVuY3Rpb24obm9kZXMsIGZvcm11bGEsIHJvb3QpIHsKICAgICAgcmV0dXJuIFNlbGVjdG9yLnBzZXVkb3MubnRoKG5vZGVzLCBmb3JtdWxhLCByb290KTsKICAgIH0sCiAgICAnbnRoLWxhc3QtY2hpbGQnOiAgIGZ1bmN0aW9uKG5vZGVzLCBmb3JtdWxhLCByb290KSB7CiAgICAgIHJldHVybiBTZWxlY3Rvci5wc2V1ZG9zLm50aChub2RlcywgZm9ybXVsYSwgcm9vdCwgdHJ1ZSk7CiAgICB9LAogICAgJ250aC1vZi10eXBlJzogICAgICBmdW5jdGlvbihub2RlcywgZm9ybXVsYSwgcm9vdCkgewogICAgICByZXR1cm4gU2VsZWN0b3IucHNldWRvcy5udGgobm9kZXMsIGZvcm11bGEsIHJvb3QsIGZhbHNlLCB0cnVlKTsKICAgIH0sCiAgICAnbnRoLWxhc3Qtb2YtdHlwZSc6IGZ1bmN0aW9uKG5vZGVzLCBmb3JtdWxhLCByb290KSB7CiAgICAgIHJldHVybiBTZWxlY3Rvci5wc2V1ZG9zLm50aChub2RlcywgZm9ybXVsYSwgcm9vdCwgdHJ1ZSwgdHJ1ZSk7CiAgICB9LAogICAgJ2ZpcnN0LW9mLXR5cGUnOiAgICBmdW5jdGlvbihub2RlcywgZm9ybXVsYSwgcm9vdCkgewogICAgICByZXR1cm4gU2VsZWN0b3IucHNldWRvcy5udGgobm9kZXMsICIxIiwgcm9vdCwgZmFsc2UsIHRydWUpOwogICAgfSwKICAgICdsYXN0LW9mLXR5cGUnOiAgICAgZnVuY3Rpb24obm9kZXMsIGZvcm11bGEsIHJvb3QpIHsKICAgICAgcmV0dXJuIFNlbGVjdG9yLnBzZXVkb3MubnRoKG5vZGVzLCAiMSIsIHJvb3QsIHRydWUsIHRydWUpOwogICAgfSwKICAgICdvbmx5LW9mLXR5cGUnOiAgICAgZnVuY3Rpb24obm9kZXMsIGZvcm11bGEsIHJvb3QpIHsKICAgICAgdmFyIHAgPSBTZWxlY3Rvci5wc2V1ZG9zOwogICAgICByZXR1cm4gcFsnbGFzdC1vZi10eXBlJ10ocFsnZmlyc3Qtb2YtdHlwZSddKG5vZGVzLCBmb3JtdWxhLCByb290KSwgZm9ybXVsYSwgcm9vdCk7CiAgICB9LAoKICAgIC8vIGhhbmRsZXMgdGhlIGFuK2IgbG9naWMKICAgIGdldEluZGljZXM6IGZ1bmN0aW9uKGEsIGIsIHRvdGFsKSB7CiAgICAgIGlmIChhID09IDApIHJldHVybiBiID4gMCA/IFtiXSA6IFtdOwogICAgICByZXR1cm4gJFIoMSwgdG90YWwpLmluamVjdChbXSwgZnVuY3Rpb24obWVtbywgaSkgewogICAgICAgIGlmICgwID09IChpIC0gYikgJSBhICYmIChpIC0gYikgLyBhID49IDApIG1lbW8ucHVzaChpKTsKICAgICAgICByZXR1cm4gbWVtbzsKICAgICAgfSk7CiAgICB9LAoKICAgIC8vIGhhbmRsZXMgbnRoKC1sYXN0KS1jaGlsZCwgbnRoKC1sYXN0KS1vZi10eXBlLCBhbmQgKGZpcnN0fGxhc3QpLW9mLXR5cGUKICAgIG50aDogZnVuY3Rpb24obm9kZXMsIGZvcm11bGEsIHJvb3QsIHJldmVyc2UsIG9mVHlwZSkgewogICAgICBpZiAobm9kZXMubGVuZ3RoID09IDApIHJldHVybiBbXTsKICAgICAgaWYgKGZvcm11bGEgPT0gJ2V2ZW4nKSBmb3JtdWxhID0gJzJuKzAnOwogICAgICBpZiAoZm9ybXVsYSA9PSAnb2RkJykgIGZvcm11bGEgPSAnMm4rMSc7CiAgICAgIHZhciBoID0gU2VsZWN0b3IuaGFuZGxlcnMsIHJlc3VsdHMgPSBbXSwgaW5kZXhlZCA9IFtdLCBtOwogICAgICBoLm1hcmsobm9kZXMpOwogICAgICBmb3IgKHZhciBpID0gMCwgbm9kZTsgbm9kZSA9IG5vZGVzW2ldOyBpKyspIHsKICAgICAgICBpZiAoIW5vZGUucGFyZW50Tm9kZS5fY291bnRlZEJ5UHJvdG90eXBlKSB7CiAgICAgICAgICBoLmluZGV4KG5vZGUucGFyZW50Tm9kZSwgcmV2ZXJzZSwgb2ZUeXBlKTsKICAgICAgICAgIGluZGV4ZWQucHVzaChub2RlLnBhcmVudE5vZGUpOwogICAgICAgIH0KICAgICAgfQogICAgICBpZiAoZm9ybXVsYS5tYXRjaCgvXlxkKyQvKSkgeyAvLyBqdXN0IGEgbnVtYmVyCiAgICAgICAgZm9ybXVsYSA9IE51bWJlcihmb3JtdWxhKTsKICAgICAgICBmb3IgKHZhciBpID0gMCwgbm9kZTsgbm9kZSA9IG5vZGVzW2ldOyBpKyspCiAgICAgICAgICBpZiAobm9kZS5ub2RlSW5kZXggPT0gZm9ybXVsYSkgcmVzdWx0cy5wdXNoKG5vZGUpOwogICAgICB9IGVsc2UgaWYgKG0gPSBmb3JtdWxhLm1hdGNoKC9eKC0/XGQqKT9uKChbKy1dKShcZCspKT8vKSkgeyAvLyBhbitiCiAgICAgICAgaWYgKG1bMV0gPT0gIi0iKSBtWzFdID0gLTE7CiAgICAgICAgdmFyIGEgPSBtWzFdID8gTnVtYmVyKG1bMV0pIDogMTsKICAgICAgICB2YXIgYiA9IG1bMl0gPyBOdW1iZXIobVsyXSkgOiAwOwogICAgICAgIHZhciBpbmRpY2VzID0gU2VsZWN0b3IucHNldWRvcy5nZXRJbmRpY2VzKGEsIGIsIG5vZGVzLmxlbmd0aCk7CiAgICAgICAgZm9yICh2YXIgaSA9IDAsIG5vZGUsIGwgPSBpbmRpY2VzLmxlbmd0aDsgbm9kZSA9IG5vZGVzW2ldOyBpKyspIHsKICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgbDsgaisrKQogICAgICAgICAgICBpZiAobm9kZS5ub2RlSW5kZXggPT0gaW5kaWNlc1tqXSkgcmVzdWx0cy5wdXNoKG5vZGUpOwogICAgICAgIH0KICAgICAgfQogICAgICBoLnVubWFyayhub2Rlcyk7CiAgICAgIGgudW5tYXJrKGluZGV4ZWQpOwogICAgICByZXR1cm4gcmVzdWx0czsKICAgIH0sCgogICAgJ2VtcHR5JzogZnVuY3Rpb24obm9kZXMsIHZhbHVlLCByb290KSB7CiAgICAgIGZvciAodmFyIGkgPSAwLCByZXN1bHRzID0gW10sIG5vZGU7IG5vZGUgPSBub2Rlc1tpXTsgaSsrKSB7CiAgICAgICAgLy8gSUUgdHJlYXRzIGNvbW1lbnRzIGFzIGVsZW1lbnQgbm9kZXMKICAgICAgICBpZiAobm9kZS50YWdOYW1lID09ICchJyB8fCAobm9kZS5maXJzdENoaWxkICYmICFub2RlLmlubmVySFRNTC5tYXRjaCgvXlxzKiQvKSkpIGNvbnRpbnVlOwogICAgICAgIHJlc3VsdHMucHVzaChub2RlKTsKICAgICAgfQogICAgICByZXR1cm4gcmVzdWx0czsKICAgIH0sCgogICAgJ25vdCc6IGZ1bmN0aW9uKG5vZGVzLCBzZWxlY3Rvciwgcm9vdCkgewogICAgICB2YXIgaCA9IFNlbGVjdG9yLmhhbmRsZXJzLCBzZWxlY3RvclR5cGUsIG07CiAgICAgIHZhciBleGNsdXNpb25zID0gbmV3IFNlbGVjdG9yKHNlbGVjdG9yKS5maW5kRWxlbWVudHMocm9vdCk7CiAgICAgIGgubWFyayhleGNsdXNpb25zKTsKICAgICAgZm9yICh2YXIgaSA9IDAsIHJlc3VsdHMgPSBbXSwgbm9kZTsgbm9kZSA9IG5vZGVzW2ldOyBpKyspCiAgICAgICAgaWYgKCFub2RlLl9jb3VudGVkQnlQcm90b3R5cGUpIHJlc3VsdHMucHVzaChub2RlKTsKICAgICAgaC51bm1hcmsoZXhjbHVzaW9ucyk7CiAgICAgIHJldHVybiByZXN1bHRzOwogICAgfSwKCiAgICAnZW5hYmxlZCc6IGZ1bmN0aW9uKG5vZGVzLCB2YWx1ZSwgcm9vdCkgewogICAgICBmb3IgKHZhciBpID0gMCwgcmVzdWx0cyA9IFtdLCBub2RlOyBub2RlID0gbm9kZXNbaV07IGkrKykKICAgICAgICBpZiAoIW5vZGUuZGlzYWJsZWQpIHJlc3VsdHMucHVzaChub2RlKTsKICAgICAgcmV0dXJuIHJlc3VsdHM7CiAgICB9LAoKICAgICdkaXNhYmxlZCc6IGZ1bmN0aW9uKG5vZGVzLCB2YWx1ZSwgcm9vdCkgewogICAgICBmb3IgKHZhciBpID0gMCwgcmVzdWx0cyA9IFtdLCBub2RlOyBub2RlID0gbm9kZXNbaV07IGkrKykKICAgICAgICBpZiAobm9kZS5kaXNhYmxlZCkgcmVzdWx0cy5wdXNoKG5vZGUpOwogICAgICByZXR1cm4gcmVzdWx0czsKICAgIH0sCgogICAgJ2NoZWNrZWQnOiBmdW5jdGlvbihub2RlcywgdmFsdWUsIHJvb3QpIHsKICAgICAgZm9yICh2YXIgaSA9IDAsIHJlc3VsdHMgPSBbXSwgbm9kZTsgbm9kZSA9IG5vZGVzW2ldOyBpKyspCiAgICAgICAgaWYgKG5vZGUuY2hlY2tlZCkgcmVzdWx0cy5wdXNoKG5vZGUpOwogICAgICByZXR1cm4gcmVzdWx0czsKICAgIH0KICB9LAoKICBvcGVyYXRvcnM6IHsKICAgICc9JzogIGZ1bmN0aW9uKG52LCB2KSB7IHJldHVybiBudiA9PSB2OyB9LAogICAgJyE9JzogZnVuY3Rpb24obnYsIHYpIHsgcmV0dXJuIG52ICE9IHY7IH0sCiAgICAnXj0nOiBmdW5jdGlvbihudiwgdikgeyByZXR1cm4gbnYuc3RhcnRzV2l0aCh2KTsgfSwKICAgICckPSc6IGZ1bmN0aW9uKG52LCB2KSB7IHJldHVybiBudi5lbmRzV2l0aCh2KTsgfSwKICAgICcqPSc6IGZ1bmN0aW9uKG52LCB2KSB7IHJldHVybiBudi5pbmNsdWRlKHYpOyB9LAogICAgJ349JzogZnVuY3Rpb24obnYsIHYpIHsgcmV0dXJuICgnICcgKyBudiArICcgJykuaW5jbHVkZSgnICcgKyB2ICsgJyAnKTsgfSwKICAgICd8PSc6IGZ1bmN0aW9uKG52LCB2KSB7IHJldHVybiAoJy0nICsgbnYudG9VcHBlckNhc2UoKSArICctJykuaW5jbHVkZSgnLScgKyB2LnRvVXBwZXJDYXNlKCkgKyAnLScpOyB9CiAgfSwKCiAgc3BsaXQ6IGZ1bmN0aW9uKGV4cHJlc3Npb24pIHsKICAgIHZhciBleHByZXNzaW9ucyA9IFtdOwogICAgZXhwcmVzc2lvbi5zY2FuKC8oKFtcdyM6Ln4+KygpXHMtXSt8XCp8XFsuKj9cXSkrKVxzKigsfCQpLywgZnVuY3Rpb24obSkgewogICAgICBleHByZXNzaW9ucy5wdXNoKG1bMV0uc3RyaXAoKSk7CiAgICB9KTsKICAgIHJldHVybiBleHByZXNzaW9uczsKICB9LAoKICBtYXRjaEVsZW1lbnRzOiBmdW5jdGlvbihlbGVtZW50cywgZXhwcmVzc2lvbikgewogICAgdmFyIG1hdGNoZXMgPSAkJChleHByZXNzaW9uKSwgaCA9IFNlbGVjdG9yLmhhbmRsZXJzOwogICAgaC5tYXJrKG1hdGNoZXMpOwogICAgZm9yICh2YXIgaSA9IDAsIHJlc3VsdHMgPSBbXSwgZWxlbWVudDsgZWxlbWVudCA9IGVsZW1lbnRzW2ldOyBpKyspCiAgICAgIGlmIChlbGVtZW50Ll9jb3VudGVkQnlQcm90b3R5cGUpIHJlc3VsdHMucHVzaChlbGVtZW50KTsKICAgIGgudW5tYXJrKG1hdGNoZXMpOwogICAgcmV0dXJuIHJlc3VsdHM7CiAgfSwKCiAgZmluZEVsZW1lbnQ6IGZ1bmN0aW9uKGVsZW1lbnRzLCBleHByZXNzaW9uLCBpbmRleCkgewogICAgaWYgKE9iamVjdC5pc051bWJlcihleHByZXNzaW9uKSkgewogICAgICBpbmRleCA9IGV4cHJlc3Npb247IGV4cHJlc3Npb24gPSBmYWxzZTsKICAgIH0KICAgIHJldHVybiBTZWxlY3Rvci5tYXRjaEVsZW1lbnRzKGVsZW1lbnRzLCBleHByZXNzaW9uIHx8ICcqJylbaW5kZXggfHwgMF07CiAgfSwKCiAgZmluZENoaWxkRWxlbWVudHM6IGZ1bmN0aW9uKGVsZW1lbnQsIGV4cHJlc3Npb25zKSB7CiAgICBleHByZXNzaW9ucyA9IFNlbGVjdG9yLnNwbGl0KGV4cHJlc3Npb25zLmpvaW4oJywnKSk7CiAgICB2YXIgcmVzdWx0cyA9IFtdLCBoID0gU2VsZWN0b3IuaGFuZGxlcnM7CiAgICBmb3IgKHZhciBpID0gMCwgbCA9IGV4cHJlc3Npb25zLmxlbmd0aCwgc2VsZWN0b3I7IGkgPCBsOyBpKyspIHsKICAgICAgc2VsZWN0b3IgPSBuZXcgU2VsZWN0b3IoZXhwcmVzc2lvbnNbaV0uc3RyaXAoKSk7CiAgICAgIGguY29uY2F0KHJlc3VsdHMsIHNlbGVjdG9yLmZpbmRFbGVtZW50cyhlbGVtZW50KSk7CiAgICB9CiAgICByZXR1cm4gKGwgPiAxKSA/IGgudW5pcXVlKHJlc3VsdHMpIDogcmVzdWx0czsKICB9Cn0pOwoKaWYgKFByb3RvdHlwZS5Ccm93c2VyLklFKSB7CiAgT2JqZWN0LmV4dGVuZChTZWxlY3Rvci5oYW5kbGVycywgewogICAgLy8gSUUgcmV0dXJucyBjb21tZW50IG5vZGVzIG9uIGdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIikuCiAgICAvLyBGaWx0ZXIgdGhlbSBvdXQuCiAgICBjb25jYXQ6IGZ1bmN0aW9uKGEsIGIpIHsKICAgICAgZm9yICh2YXIgaSA9IDAsIG5vZGU7IG5vZGUgPSBiW2ldOyBpKyspCiAgICAgICAgaWYgKG5vZGUudGFnTmFtZSAhPT0gIiEiKSBhLnB1c2gobm9kZSk7CiAgICAgIHJldHVybiBhOwogICAgfSwKCiAgICAvLyBJRSBpbXByb3Blcmx5IHNlcmlhbGl6ZXMgX2NvdW50ZWRCeVByb3RvdHlwZSBpbiAoaW5uZXJ8b3V0ZXIpSFRNTC4KICAgIHVubWFyazogZnVuY3Rpb24obm9kZXMpIHsKICAgICAgZm9yICh2YXIgaSA9IDAsIG5vZGU7IG5vZGUgPSBub2Rlc1tpXTsgaSsrKQogICAgICAgIG5vZGUucmVtb3ZlQXR0cmlidXRlKCdfY291bnRlZEJ5UHJvdG90eXBlJyk7CiAgICAgIHJldHVybiBub2RlczsKICAgIH0KICB9KTsKfQoKZnVuY3Rpb24gJCQoKSB7CiAgcmV0dXJuIFNlbGVjdG9yLmZpbmRDaGlsZEVsZW1lbnRzKGRvY3VtZW50LCAkQShhcmd1bWVudHMpKTsKfQp2YXIgRm9ybSA9IHsKICByZXNldDogZnVuY3Rpb24oZm9ybSkgewogICAgJChmb3JtKS5yZXNldCgpOwogICAgcmV0dXJuIGZvcm07CiAgfSwKCiAgc2VyaWFsaXplRWxlbWVudHM6IGZ1bmN0aW9uKGVsZW1lbnRzLCBvcHRpb25zKSB7CiAgICBpZiAodHlwZW9mIG9wdGlvbnMgIT0gJ29iamVjdCcpIG9wdGlvbnMgPSB7IGhhc2g6ICEhb3B0aW9ucyB9OwogICAgZWxzZSBpZiAoT2JqZWN0LmlzVW5kZWZpbmVkKG9wdGlvbnMuaGFzaCkpIG9wdGlvbnMuaGFzaCA9IHRydWU7CiAgICB2YXIga2V5LCB2YWx1ZSwgc3VibWl0dGVkID0gZmFsc2UsIHN1Ym1pdCA9IG9wdGlvbnMuc3VibWl0OwoKICAgIHZhciBkYXRhID0gZWxlbWVudHMuaW5qZWN0KHsgfSwgZnVuY3Rpb24ocmVzdWx0LCBlbGVtZW50KSB7CiAgICAgIGlmICghZWxlbWVudC5kaXNhYmxlZCAmJiBlbGVtZW50Lm5hbWUpIHsKICAgICAgICBrZXkgPSBlbGVtZW50Lm5hbWU7IHZhbHVlID0gJChlbGVtZW50KS5nZXRWYWx1ZSgpOwogICAgICAgIGlmICh2YWx1ZSAhPSBudWxsICYmIChlbGVtZW50LnR5cGUgIT0gJ3N1Ym1pdCcgfHwgKCFzdWJtaXR0ZWQgJiYKICAgICAgICAgICAgc3VibWl0ICE9PSBmYWxzZSAmJiAoIXN1Ym1pdCB8fCBrZXkgPT0gc3VibWl0KSAmJiAoc3VibWl0dGVkID0gdHJ1ZSkpKSkgewogICAgICAgICAgaWYgKGtleSBpbiByZXN1bHQpIHsKICAgICAgICAgICAgLy8gYSBrZXkgaXMgYWxyZWFkeSBwcmVzZW50OyBjb25zdHJ1Y3QgYW4gYXJyYXkgb2YgdmFsdWVzCiAgICAgICAgICAgIGlmICghT2JqZWN0LmlzQXJyYXkocmVzdWx0W2tleV0pKSByZXN1bHRba2V5XSA9IFtyZXN1bHRba2V5XV07CiAgICAgICAgICAgIHJlc3VsdFtrZXldLnB1c2godmFsdWUpOwogICAgICAgICAgfQogICAgICAgICAgZWxzZSByZXN1bHRba2V5XSA9IHZhbHVlOwogICAgICAgIH0KICAgICAgfQogICAgICByZXR1cm4gcmVzdWx0OwogICAgfSk7CgogICAgcmV0dXJuIG9wdGlvbnMuaGFzaCA/IGRhdGEgOiBPYmplY3QudG9RdWVyeVN0cmluZyhkYXRhKTsKICB9Cn07CgpGb3JtLk1ldGhvZHMgPSB7CiAgc2VyaWFsaXplOiBmdW5jdGlvbihmb3JtLCBvcHRpb25zKSB7CiAgICByZXR1cm4gRm9ybS5zZXJpYWxpemVFbGVtZW50cyhGb3JtLmdldEVsZW1lbnRzKGZvcm0pLCBvcHRpb25zKTsKICB9LAoKICBnZXRFbGVtZW50czogZnVuY3Rpb24oZm9ybSkgewogICAgcmV0dXJuICRBKCQoZm9ybSkuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJyonKSkuaW5qZWN0KFtdLAogICAgICBmdW5jdGlvbihlbGVtZW50cywgY2hpbGQpIHsKICAgICAgICBpZiAoRm9ybS5FbGVtZW50LlNlcmlhbGl6ZXJzW2NoaWxkLnRhZ05hbWUudG9Mb3dlckNhc2UoKV0pCiAgICAgICAgICBlbGVtZW50cy5wdXNoKEVsZW1lbnQuZXh0ZW5kKGNoaWxkKSk7CiAgICAgICAgcmV0dXJuIGVsZW1lbnRzOwogICAgICB9CiAgICApOwogIH0sCgogIGdldElucHV0czogZnVuY3Rpb24oZm9ybSwgdHlwZU5hbWUsIG5hbWUpIHsKICAgIGZvcm0gPSAkKGZvcm0pOwogICAgdmFyIGlucHV0cyA9IGZvcm0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2lucHV0Jyk7CgogICAgaWYgKCF0eXBlTmFtZSAmJiAhbmFtZSkgcmV0dXJuICRBKGlucHV0cykubWFwKEVsZW1lbnQuZXh0ZW5kKTsKCiAgICBmb3IgKHZhciBpID0gMCwgbWF0Y2hpbmdJbnB1dHMgPSBbXSwgbGVuZ3RoID0gaW5wdXRzLmxlbmd0aDsgaSA8IGxlbmd0aDsgaSsrKSB7CiAgICAgIHZhciBpbnB1dCA9IGlucHV0c1tpXTsKICAgICAgaWYgKCh0eXBlTmFtZSAmJiBpbnB1dC50eXBlICE9IHR5cGVOYW1lKSB8fCAobmFtZSAmJiBpbnB1dC5uYW1lICE9IG5hbWUpKQogICAgICAgIGNvbnRpbnVlOwogICAgICBtYXRjaGluZ0lucHV0cy5wdXNoKEVsZW1lbnQuZXh0ZW5kKGlucHV0KSk7CiAgICB9CgogICAgcmV0dXJuIG1hdGNoaW5nSW5wdXRzOwogIH0sCgogIGRpc2FibGU6IGZ1bmN0aW9uKGZvcm0pIHsKICAgIGZvcm0gPSAkKGZvcm0pOwogICAgRm9ybS5nZXRFbGVtZW50cyhmb3JtKS5pbnZva2UoJ2Rpc2FibGUnKTsKICAgIHJldHVybiBmb3JtOwogIH0sCgogIGVuYWJsZTogZnVuY3Rpb24oZm9ybSkgewogICAgZm9ybSA9ICQoZm9ybSk7CiAgICBGb3JtLmdldEVsZW1lbnRzKGZvcm0pLmludm9rZSgnZW5hYmxlJyk7CiAgICByZXR1cm4gZm9ybTsKICB9LAoKICBmaW5kRmlyc3RFbGVtZW50OiBmdW5jdGlvbihmb3JtKSB7CiAgICB2YXIgZWxlbWVudHMgPSAkKGZvcm0pLmdldEVsZW1lbnRzKCkuZmluZEFsbChmdW5jdGlvbihlbGVtZW50KSB7CiAgICAgIHJldHVybiAnaGlkZGVuJyAhPSBlbGVtZW50LnR5cGUgJiYgIWVsZW1lbnQuZGlzYWJsZWQ7CiAgICB9KTsKICAgIHZhciBmaXJzdEJ5SW5kZXggPSBlbGVtZW50cy5maW5kQWxsKGZ1bmN0aW9uKGVsZW1lbnQpIHsKICAgICAgcmV0dXJuIGVsZW1lbnQuaGFzQXR0cmlidXRlKCd0YWJJbmRleCcpICYmIGVsZW1lbnQudGFiSW5kZXggPj0gMDsKICAgIH0pLnNvcnRCeShmdW5jdGlvbihlbGVtZW50KSB7IHJldHVybiBlbGVtZW50LnRhYkluZGV4IH0pLmZpcnN0KCk7CgogICAgcmV0dXJuIGZpcnN0QnlJbmRleCA/IGZpcnN0QnlJbmRleCA6IGVsZW1lbnRzLmZpbmQoZnVuY3Rpb24oZWxlbWVudCkgewogICAgICByZXR1cm4gWydpbnB1dCcsICdzZWxlY3QnLCAndGV4dGFyZWEnXS5pbmNsdWRlKGVsZW1lbnQudGFnTmFtZS50b0xvd2VyQ2FzZSgpKTsKICAgIH0pOwogIH0sCgogIGZvY3VzRmlyc3RFbGVtZW50OiBmdW5jdGlvbihmb3JtKSB7CiAgICBmb3JtID0gJChmb3JtKTsKICAgIGZvcm0uZmluZEZpcnN0RWxlbWVudCgpLmFjdGl2YXRlKCk7CiAgICByZXR1cm4gZm9ybTsKICB9LAoKICByZXF1ZXN0OiBmdW5jdGlvbihmb3JtLCBvcHRpb25zKSB7CiAgICBmb3JtID0gJChmb3JtKSwgb3B0aW9ucyA9IE9iamVjdC5jbG9uZShvcHRpb25zIHx8IHsgfSk7CgogICAgdmFyIHBhcmFtcyA9IG9wdGlvbnMucGFyYW1ldGVycywgYWN0aW9uID0gZm9ybS5yZWFkQXR0cmlidXRlKCdhY3Rpb24nKSB8fCAnJzsKICAgIGlmIChhY3Rpb24uYmxhbmsoKSkgYWN0aW9uID0gd2luZG93LmxvY2F0aW9uLmhyZWY7CiAgICBvcHRpb25zLnBhcmFtZXRlcnMgPSBmb3JtLnNlcmlhbGl6ZSh0cnVlKTsKCiAgICBpZiAocGFyYW1zKSB7CiAgICAgIGlmIChPYmplY3QuaXNTdHJpbmcocGFyYW1zKSkgcGFyYW1zID0gcGFyYW1zLnRvUXVlcnlQYXJhbXMoKTsKICAgICAgT2JqZWN0LmV4dGVuZChvcHRpb25zLnBhcmFtZXRlcnMsIHBhcmFtcyk7CiAgICB9CgogICAgaWYgKGZvcm0uaGFzQXR0cmlidXRlKCdtZXRob2QnKSAmJiAhb3B0aW9ucy5tZXRob2QpCiAgICAgIG9wdGlvbnMubWV0aG9kID0gZm9ybS5tZXRob2Q7CgogICAgcmV0dXJuIG5ldyBBamF4LlJlcXVlc3QoYWN0aW9uLCBvcHRpb25zKTsKICB9Cn07CgovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCkZvcm0uRWxlbWVudCA9IHsKICBmb2N1czogZnVuY3Rpb24oZWxlbWVudCkgewogICAgJChlbGVtZW50KS5mb2N1cygpOwogICAgcmV0dXJuIGVsZW1lbnQ7CiAgfSwKCiAgc2VsZWN0OiBmdW5jdGlvbihlbGVtZW50KSB7CiAgICAkKGVsZW1lbnQpLnNlbGVjdCgpOwogICAgcmV0dXJuIGVsZW1lbnQ7CiAgfQp9OwoKRm9ybS5FbGVtZW50Lk1ldGhvZHMgPSB7CiAgc2VyaWFsaXplOiBmdW5jdGlvbihlbGVtZW50KSB7CiAgICBlbGVtZW50ID0gJChlbGVtZW50KTsKICAgIGlmICghZWxlbWVudC5kaXNhYmxlZCAmJiBlbGVtZW50Lm5hbWUpIHsKICAgICAgdmFyIHZhbHVlID0gZWxlbWVudC5nZXRWYWx1ZSgpOwogICAgICBpZiAodmFsdWUgIT0gdW5kZWZpbmVkKSB7CiAgICAgICAgdmFyIHBhaXIgPSB7IH07CiAgICAgICAgcGFpcltlbGVtZW50Lm5hbWVdID0gdmFsdWU7CiAgICAgICAgcmV0dXJuIE9iamVjdC50b1F1ZXJ5U3RyaW5nKHBhaXIpOwogICAgICB9CiAgICB9CiAgICByZXR1cm4gJyc7CiAgfSwKCiAgZ2V0VmFsdWU6IGZ1bmN0aW9uKGVsZW1lbnQpIHsKICAgIGVsZW1lbnQgPSAkKGVsZW1lbnQpOwogICAgdmFyIG1ldGhvZCA9IGVsZW1lbnQudGFnTmFtZS50b0xvd2VyQ2FzZSgpOwogICAgcmV0dXJuIEZvcm0uRWxlbWVudC5TZXJpYWxpemVyc1ttZXRob2RdKGVsZW1lbnQpOwogIH0sCgogIHNldFZhbHVlOiBmdW5jdGlvbihlbGVtZW50LCB2YWx1ZSkgewogICAgZWxlbWVudCA9ICQoZWxlbWVudCk7CiAgICB2YXIgbWV0aG9kID0gZWxlbWVudC50YWdOYW1lLnRvTG93ZXJDYXNlKCk7CiAgICBGb3JtLkVsZW1lbnQuU2VyaWFsaXplcnNbbWV0aG9kXShlbGVtZW50LCB2YWx1ZSk7CiAgICByZXR1cm4gZWxlbWVudDsKICB9LAoKICBjbGVhcjogZnVuY3Rpb24oZWxlbWVudCkgewogICAgJChlbGVtZW50KS52YWx1ZSA9ICcnOwogICAgcmV0dXJuIGVsZW1lbnQ7CiAgfSwKCiAgcHJlc2VudDogZnVuY3Rpb24oZWxlbWVudCkgewogICAgcmV0dXJuICQoZWxlbWVudCkudmFsdWUgIT0gJyc7CiAgfSwKCiAgYWN0aXZhdGU6IGZ1bmN0aW9uKGVsZW1lbnQpIHsKICAgIGVsZW1lbnQgPSAkKGVsZW1lbnQpOwogICAgdHJ5IHsKICAgICAgZWxlbWVudC5mb2N1cygpOwogICAgICBpZiAoZWxlbWVudC5zZWxlY3QgJiYgKGVsZW1lbnQudGFnTmFtZS50b0xvd2VyQ2FzZSgpICE9ICdpbnB1dCcgfHwKICAgICAgICAgICFbJ2J1dHRvbicsICdyZXNldCcsICdzdWJtaXQnXS5pbmNsdWRlKGVsZW1lbnQudHlwZSkpKQogICAgICAgIGVsZW1lbnQuc2VsZWN0KCk7CiAgICB9IGNhdGNoIChlKSB7IH0KICAgIHJldHVybiBlbGVtZW50OwogIH0sCgogIGRpc2FibGU6IGZ1bmN0aW9uKGVsZW1lbnQpIHsKICAgIGVsZW1lbnQgPSAkKGVsZW1lbnQpOwogICAgZWxlbWVudC5ibHVyKCk7CiAgICBlbGVtZW50LmRpc2FibGVkID0gdHJ1ZTsKICAgIHJldHVybiBlbGVtZW50OwogIH0sCgogIGVuYWJsZTogZnVuY3Rpb24oZWxlbWVudCkgewogICAgZWxlbWVudCA9ICQoZWxlbWVudCk7CiAgICBlbGVtZW50LmRpc2FibGVkID0gZmFsc2U7CiAgICByZXR1cm4gZWxlbWVudDsKICB9Cn07CgovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCnZhciBGaWVsZCA9IEZvcm0uRWxlbWVudDsKdmFyICRGID0gRm9ybS5FbGVtZW50Lk1ldGhvZHMuZ2V0VmFsdWU7CgovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCkZvcm0uRWxlbWVudC5TZXJpYWxpemVycyA9IHsKICBpbnB1dDogZnVuY3Rpb24oZWxlbWVudCwgdmFsdWUpIHsKICAgIHN3aXRjaCAoZWxlbWVudC50eXBlLnRvTG93ZXJDYXNlKCkpIHsKICAgICAgY2FzZSAnY2hlY2tib3gnOgogICAgICBjYXNlICdyYWRpbyc6CiAgICAgICAgcmV0dXJuIEZvcm0uRWxlbWVudC5TZXJpYWxpemVycy5pbnB1dFNlbGVjdG9yKGVsZW1lbnQsIHZhbHVlKTsKICAgICAgZGVmYXVsdDoKICAgICAgICByZXR1cm4gRm9ybS5FbGVtZW50LlNlcmlhbGl6ZXJzLnRleHRhcmVhKGVsZW1lbnQsIHZhbHVlKTsKICAgIH0KICB9LAoKICBpbnB1dFNlbGVjdG9yOiBmdW5jdGlvbihlbGVtZW50LCB2YWx1ZSkgewogICAgaWYgKE9iamVjdC5pc1VuZGVmaW5lZCh2YWx1ZSkpIHJldHVybiBlbGVtZW50LmNoZWNrZWQgPyBlbGVtZW50LnZhbHVlIDogbnVsbDsKICAgIGVsc2UgZWxlbWVudC5jaGVja2VkID0gISF2YWx1ZTsKICB9LAoKICB0ZXh0YXJlYTogZnVuY3Rpb24oZWxlbWVudCwgdmFsdWUpIHsKICAgIGlmIChPYmplY3QuaXNVbmRlZmluZWQodmFsdWUpKSByZXR1cm4gZWxlbWVudC52YWx1ZTsKICAgIGVsc2UgZWxlbWVudC52YWx1ZSA9IHZhbHVlOwogIH0sCgogIHNlbGVjdDogZnVuY3Rpb24oZWxlbWVudCwgaW5kZXgpIHsKICAgIGlmIChPYmplY3QuaXNVbmRlZmluZWQoaW5kZXgpKQogICAgICByZXR1cm4gdGhpc1tlbGVtZW50LnR5cGUgPT0gJ3NlbGVjdC1vbmUnID8KICAgICAgICAnc2VsZWN0T25lJyA6ICdzZWxlY3RNYW55J10oZWxlbWVudCk7CiAgICBlbHNlIHsKICAgICAgdmFyIG9wdCwgdmFsdWUsIHNpbmdsZSA9ICFPYmplY3QuaXNBcnJheShpbmRleCk7CiAgICAgIGZvciAodmFyIGkgPSAwLCBsZW5ndGggPSBlbGVtZW50Lmxlbmd0aDsgaSA8IGxlbmd0aDsgaSsrKSB7CiAgICAgICAgb3B0ID0gZWxlbWVudC5vcHRpb25zW2ldOwogICAgICAgIHZhbHVlID0gdGhpcy5vcHRpb25WYWx1ZShvcHQpOwogICAgICAgIGlmIChzaW5nbGUpIHsKICAgICAgICAgIGlmICh2YWx1ZSA9PSBpbmRleCkgewogICAgICAgICAgICBvcHQuc2VsZWN0ZWQgPSB0cnVlOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2Ugb3B0LnNlbGVjdGVkID0gaW5kZXguaW5jbHVkZSh2YWx1ZSk7CiAgICAgIH0KICAgIH0KICB9LAoKICBzZWxlY3RPbmU6IGZ1bmN0aW9uKGVsZW1lbnQpIHsKICAgIHZhciBpbmRleCA9IGVsZW1lbnQuc2VsZWN0ZWRJbmRleDsKICAgIHJldHVybiBpbmRleCA+PSAwID8gdGhpcy5vcHRpb25WYWx1ZShlbGVtZW50Lm9wdGlvbnNbaW5kZXhdKSA6IG51bGw7CiAgfSwKCiAgc2VsZWN0TWFueTogZnVuY3Rpb24oZWxlbWVudCkgewogICAgdmFyIHZhbHVlcywgbGVuZ3RoID0gZWxlbWVudC5sZW5ndGg7CiAgICBpZiAoIWxlbmd0aCkgcmV0dXJuIG51bGw7CgogICAgZm9yICh2YXIgaSA9IDAsIHZhbHVlcyA9IFtdOyBpIDwgbGVuZ3RoOyBpKyspIHsKICAgICAgdmFyIG9wdCA9IGVsZW1lbnQub3B0aW9uc1tpXTsKICAgICAgaWYgKG9wdC5zZWxlY3RlZCkgdmFsdWVzLnB1c2godGhpcy5vcHRpb25WYWx1ZShvcHQpKTsKICAgIH0KICAgIHJldHVybiB2YWx1ZXM7CiAgfSwKCiAgb3B0aW9uVmFsdWU6IGZ1bmN0aW9uKG9wdCkgewogICAgLy8gZXh0ZW5kIGVsZW1lbnQgYmVjYXVzZSBoYXNBdHRyaWJ1dGUgbWF5IG5vdCBiZSBuYXRpdmUKICAgIHJldHVybiBFbGVtZW50LmV4dGVuZChvcHQpLmhhc0F0dHJpYnV0ZSgndmFsdWUnKSA/IG9wdC52YWx1ZSA6IG9wdC50ZXh0OwogIH0KfTsKCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKQWJzdHJhY3QuVGltZWRPYnNlcnZlciA9IENsYXNzLmNyZWF0ZShQZXJpb2RpY2FsRXhlY3V0ZXIsIHsKICBpbml0aWFsaXplOiBmdW5jdGlvbigkc3VwZXIsIGVsZW1lbnQsIGZyZXF1ZW5jeSwgY2FsbGJhY2spIHsKICAgICRzdXBlcihjYWxsYmFjaywgZnJlcXVlbmN5KTsKICAgIHRoaXMuZWxlbWVudCAgID0gJChlbGVtZW50KTsKICAgIHRoaXMubGFzdFZhbHVlID0gdGhpcy5nZXRWYWx1ZSgpOwogIH0sCgogIGV4ZWN1dGU6IGZ1bmN0aW9uKCkgewogICAgdmFyIHZhbHVlID0gdGhpcy5nZXRWYWx1ZSgpOwogICAgaWYgKE9iamVjdC5pc1N0cmluZyh0aGlzLmxhc3RWYWx1ZSkgJiYgT2JqZWN0LmlzU3RyaW5nKHZhbHVlKSA/CiAgICAgICAgdGhpcy5sYXN0VmFsdWUgIT0gdmFsdWUgOiBTdHJpbmcodGhpcy5sYXN0VmFsdWUpICE9IFN0cmluZyh2YWx1ZSkpIHsKICAgICAgdGhpcy5jYWxsYmFjayh0aGlzLmVsZW1lbnQsIHZhbHVlKTsKICAgICAgdGhpcy5sYXN0VmFsdWUgPSB2YWx1ZTsKICAgIH0KICB9Cn0pOwoKRm9ybS5FbGVtZW50Lk9ic2VydmVyID0gQ2xhc3MuY3JlYXRlKEFic3RyYWN0LlRpbWVkT2JzZXJ2ZXIsIHsKICBnZXRWYWx1ZTogZnVuY3Rpb24oKSB7CiAgICByZXR1cm4gRm9ybS5FbGVtZW50LmdldFZhbHVlKHRoaXMuZWxlbWVudCk7CiAgfQp9KTsKCkZvcm0uT2JzZXJ2ZXIgPSBDbGFzcy5jcmVhdGUoQWJzdHJhY3QuVGltZWRPYnNlcnZlciwgewogIGdldFZhbHVlOiBmdW5jdGlvbigpIHsKICAgIHJldHVybiBGb3JtLnNlcmlhbGl6ZSh0aGlzLmVsZW1lbnQpOwogIH0KfSk7CgovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCkFic3RyYWN0LkV2ZW50T2JzZXJ2ZXIgPSBDbGFzcy5jcmVhdGUoewogIGluaXRpYWxpemU6IGZ1bmN0aW9uKGVsZW1lbnQsIGNhbGxiYWNrKSB7CiAgICB0aGlzLmVsZW1lbnQgID0gJChlbGVtZW50KTsKICAgIHRoaXMuY2FsbGJhY2sgPSBjYWxsYmFjazsKCiAgICB0aGlzLmxhc3RWYWx1ZSA9IHRoaXMuZ2V0VmFsdWUoKTsKICAgIGlmICh0aGlzLmVsZW1lbnQudGFnTmFtZS50b0xvd2VyQ2FzZSgpID09ICdmb3JtJykKICAgICAgdGhpcy5yZWdpc3RlckZvcm1DYWxsYmFja3MoKTsKICAgIGVsc2UKICAgICAgdGhpcy5yZWdpc3RlckNhbGxiYWNrKHRoaXMuZWxlbWVudCk7CiAgfSwKCiAgb25FbGVtZW50RXZlbnQ6IGZ1bmN0aW9uKCkgewogICAgdmFyIHZhbHVlID0gdGhpcy5nZXRWYWx1ZSgpOwogICAgaWYgKHRoaXMubGFzdFZhbHVlICE9IHZhbHVlKSB7CiAgICAgIHRoaXMuY2FsbGJhY2sodGhpcy5lbGVtZW50LCB2YWx1ZSk7CiAgICAgIHRoaXMubGFzdFZhbHVlID0gdmFsdWU7CiAgICB9CiAgfSwKCiAgcmVnaXN0ZXJGb3JtQ2FsbGJhY2tzOiBmdW5jdGlvbigpIHsKICAgIEZvcm0uZ2V0RWxlbWVudHModGhpcy5lbGVtZW50KS5lYWNoKHRoaXMucmVnaXN0ZXJDYWxsYmFjaywgdGhpcyk7CiAgfSwKCiAgcmVnaXN0ZXJDYWxsYmFjazogZnVuY3Rpb24oZWxlbWVudCkgewogICAgaWYgKGVsZW1lbnQudHlwZSkgewogICAgICBzd2l0Y2ggKGVsZW1lbnQudHlwZS50b0xvd2VyQ2FzZSgpKSB7CiAgICAgICAgY2FzZSAnY2hlY2tib3gnOgogICAgICAgIGNhc2UgJ3JhZGlvJzoKICAgICAgICAgIEV2ZW50Lm9ic2VydmUoZWxlbWVudCwgJ2NsaWNrJywgdGhpcy5vbkVsZW1lbnRFdmVudC5iaW5kKHRoaXMpKTsKICAgICAgICAgIGJyZWFrOwogICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICBFdmVudC5vYnNlcnZlKGVsZW1lbnQsICdjaGFuZ2UnLCB0aGlzLm9uRWxlbWVudEV2ZW50LmJpbmQodGhpcykpOwogICAgICAgICAgYnJlYWs7CiAgICAgIH0KICAgIH0KICB9Cn0pOwoKRm9ybS5FbGVtZW50LkV2ZW50T2JzZXJ2ZXIgPSBDbGFzcy5jcmVhdGUoQWJzdHJhY3QuRXZlbnRPYnNlcnZlciwgewogIGdldFZhbHVlOiBmdW5jdGlvbigpIHsKICAgIHJldHVybiBGb3JtLkVsZW1lbnQuZ2V0VmFsdWUodGhpcy5lbGVtZW50KTsKICB9Cn0pOwoKRm9ybS5FdmVudE9ic2VydmVyID0gQ2xhc3MuY3JlYXRlKEFic3RyYWN0LkV2ZW50T2JzZXJ2ZXIsIHsKICBnZXRWYWx1ZTogZnVuY3Rpb24oKSB7CiAgICByZXR1cm4gRm9ybS5zZXJpYWxpemUodGhpcy5lbGVtZW50KTsKICB9Cn0pOwppZiAoIXdpbmRvdy5FdmVudCkgdmFyIEV2ZW50ID0geyB9OwoKT2JqZWN0LmV4dGVuZChFdmVudCwgewogIEtFWV9CQUNLU1BBQ0U6IDgsCiAgS0VZX1RBQjogICAgICAgOSwKICBLRVlfUkVUVVJOOiAgIDEzLAogIEtFWV9FU0M6ICAgICAgMjcsCiAgS0VZX0xFRlQ6ICAgICAzNywKICBLRVlfVVA6ICAgICAgIDM4LAogIEtFWV9SSUdIVDogICAgMzksCiAgS0VZX0RPV046ICAgICA0MCwKICBLRVlfREVMRVRFOiAgIDQ2LAogIEtFWV9IT01FOiAgICAgMzYsCiAgS0VZX0VORDogICAgICAzNSwKICBLRVlfUEFHRVVQOiAgIDMzLAogIEtFWV9QQUdFRE9XTjogMzQsCiAgS0VZX0lOU0VSVDogICA0NSwKCiAgY2FjaGU6IHsgfSwKCiAgcmVsYXRlZFRhcmdldDogZnVuY3Rpb24oZXZlbnQpIHsKICAgIHZhciBlbGVtZW50OwogICAgc3dpdGNoKGV2ZW50LnR5cGUpIHsKICAgICAgY2FzZSAnbW91c2VvdmVyJzogZWxlbWVudCA9IGV2ZW50LmZyb21FbGVtZW50OyBicmVhazsKICAgICAgY2FzZSAnbW91c2VvdXQnOiAgZWxlbWVudCA9IGV2ZW50LnRvRWxlbWVudDsgICBicmVhazsKICAgICAgZGVmYXVsdDogcmV0dXJuIG51bGw7CiAgICB9CiAgICByZXR1cm4gRWxlbWVudC5leHRlbmQoZWxlbWVudCk7CiAgfQp9KTsKCkV2ZW50Lk1ldGhvZHMgPSAoZnVuY3Rpb24oKSB7CiAgdmFyIGlzQnV0dG9uOwoKICBpZiAoUHJvdG90eXBlLkJyb3dzZXIuSUUpIHsKICAgIHZhciBidXR0b25NYXAgPSB7IDA6IDEsIDE6IDQsIDI6IDIgfTsKICAgIGlzQnV0dG9uID0gZnVuY3Rpb24oZXZlbnQsIGNvZGUpIHsKICAgICAgcmV0dXJuIGV2ZW50LmJ1dHRvbiA9PSBidXR0b25NYXBbY29kZV07CiAgICB9OwoKICB9IGVsc2UgaWYgKFByb3RvdHlwZS5Ccm93c2VyLldlYktpdCkgewogICAgaXNCdXR0b24gPSBmdW5jdGlvbihldmVudCwgY29kZSkgewogICAgICBzd2l0Y2ggKGNvZGUpIHsKICAgICAgICBjYXNlIDA6IHJldHVybiBldmVudC53aGljaCA9PSAxICYmICFldmVudC5tZXRhS2V5OwogICAgICAgIGNhc2UgMTogcmV0dXJuIGV2ZW50LndoaWNoID09IDEgJiYgZXZlbnQubWV0YUtleTsKICAgICAgICBkZWZhdWx0OiByZXR1cm4gZmFsc2U7CiAgICAgIH0KICAgIH07CgogIH0gZWxzZSB7CiAgICBpc0J1dHRvbiA9IGZ1bmN0aW9uKGV2ZW50LCBjb2RlKSB7CiAgICAgIHJldHVybiBldmVudC53aGljaCA/IChldmVudC53aGljaCA9PT0gY29kZSArIDEpIDogKGV2ZW50LmJ1dHRvbiA9PT0gY29kZSk7CiAgICB9OwogIH0KCiAgcmV0dXJuIHsKICAgIGlzTGVmdENsaWNrOiAgIGZ1bmN0aW9uKGV2ZW50KSB7IHJldHVybiBpc0J1dHRvbihldmVudCwgMCkgfSwKICAgIGlzTWlkZGxlQ2xpY2s6IGZ1bmN0aW9uKGV2ZW50KSB7IHJldHVybiBpc0J1dHRvbihldmVudCwgMSkgfSwKICAgIGlzUmlnaHRDbGljazogIGZ1bmN0aW9uKGV2ZW50KSB7IHJldHVybiBpc0J1dHRvbihldmVudCwgMikgfSwKCiAgICBlbGVtZW50OiBmdW5jdGlvbihldmVudCkgewogICAgICB2YXIgbm9kZSA9IEV2ZW50LmV4dGVuZChldmVudCkudGFyZ2V0OwogICAgICByZXR1cm4gRWxlbWVudC5leHRlbmQobm9kZS5ub2RlVHlwZSA9PSBOb2RlLlRFWFRfTk9ERSA/IG5vZGUucGFyZW50Tm9kZSA6IG5vZGUpOwogICAgfSwKCiAgICBmaW5kRWxlbWVudDogZnVuY3Rpb24oZXZlbnQsIGV4cHJlc3Npb24pIHsKICAgICAgdmFyIGVsZW1lbnQgPSBFdmVudC5lbGVtZW50KGV2ZW50KTsKICAgICAgaWYgKCFleHByZXNzaW9uKSByZXR1cm4gZWxlbWVudDsKICAgICAgdmFyIGVsZW1lbnRzID0gW2VsZW1lbnRdLmNvbmNhdChlbGVtZW50LmFuY2VzdG9ycygpKTsKICAgICAgcmV0dXJuIFNlbGVjdG9yLmZpbmRFbGVtZW50KGVsZW1lbnRzLCBleHByZXNzaW9uLCAwKTsKICAgIH0sCgogICAgcG9pbnRlcjogZnVuY3Rpb24oZXZlbnQpIHsKICAgICAgcmV0dXJuIHsKICAgICAgICB4OiBldmVudC5wYWdlWCB8fCAoZXZlbnQuY2xpZW50WCArCiAgICAgICAgICAoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbExlZnQgfHwgZG9jdW1lbnQuYm9keS5zY3JvbGxMZWZ0KSksCiAgICAgICAgeTogZXZlbnQucGFnZVkgfHwgKGV2ZW50LmNsaWVudFkgKwogICAgICAgICAgKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3AgfHwgZG9jdW1lbnQuYm9keS5zY3JvbGxUb3ApKQogICAgICB9OwogICAgfSwKCiAgICBwb2ludGVyWDogZnVuY3Rpb24oZXZlbnQpIHsgcmV0dXJuIEV2ZW50LnBvaW50ZXIoZXZlbnQpLnggfSwKICAgIHBvaW50ZXJZOiBmdW5jdGlvbihldmVudCkgeyByZXR1cm4gRXZlbnQucG9pbnRlcihldmVudCkueSB9LAoKICAgIHN0b3A6IGZ1bmN0aW9uKGV2ZW50KSB7CiAgICAgIEV2ZW50LmV4dGVuZChldmVudCk7CiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOwogICAgICBldmVudC5zdG9wcGVkID0gdHJ1ZTsKICAgIH0KICB9Owp9KSgpOwoKRXZlbnQuZXh0ZW5kID0gKGZ1bmN0aW9uKCkgewogIHZhciBtZXRob2RzID0gT2JqZWN0LmtleXMoRXZlbnQuTWV0aG9kcykuaW5qZWN0KHsgfSwgZnVuY3Rpb24obSwgbmFtZSkgewogICAgbVtuYW1lXSA9IEV2ZW50Lk1ldGhvZHNbbmFtZV0ubWV0aG9kaXplKCk7CiAgICByZXR1cm4gbTsKICB9KTsKCiAgaWYgKFByb3RvdHlwZS5Ccm93c2VyLklFKSB7CiAgICBPYmplY3QuZXh0ZW5kKG1ldGhvZHMsIHsKICAgICAgc3RvcFByb3BhZ2F0aW9uOiBmdW5jdGlvbigpIHsgdGhpcy5jYW5jZWxCdWJibGUgPSB0cnVlIH0sCiAgICAgIHByZXZlbnREZWZhdWx0OiAgZnVuY3Rpb24oKSB7IHRoaXMucmV0dXJuVmFsdWUgPSBmYWxzZSB9LAogICAgICBpbnNwZWN0OiBmdW5jdGlvbigpIHsgcmV0dXJuICJbb2JqZWN0IEV2ZW50XSIgfQogICAgfSk7CgogICAgcmV0dXJuIGZ1bmN0aW9uKGV2ZW50KSB7CiAgICAgIGlmICghZXZlbnQpIHJldHVybiBmYWxzZTsKICAgICAgaWYgKGV2ZW50Ll9leHRlbmRlZEJ5UHJvdG90eXBlKSByZXR1cm4gZXZlbnQ7CgogICAgICBldmVudC5fZXh0ZW5kZWRCeVByb3RvdHlwZSA9IFByb3RvdHlwZS5lbXB0eUZ1bmN0aW9uOwogICAgICB2YXIgcG9pbnRlciA9IEV2ZW50LnBvaW50ZXIoZXZlbnQpOwogICAgICBPYmplY3QuZXh0ZW5kKGV2ZW50LCB7CiAgICAgICAgdGFyZ2V0OiBldmVudC5zcmNFbGVtZW50LAogICAgICAgIHJlbGF0ZWRUYXJnZXQ6IEV2ZW50LnJlbGF0ZWRUYXJnZXQoZXZlbnQpLAogICAgICAgIHBhZ2VYOiAgcG9pbnRlci54LAogICAgICAgIHBhZ2VZOiAgcG9pbnRlci55CiAgICAgIH0pOwogICAgICByZXR1cm4gT2JqZWN0LmV4dGVuZChldmVudCwgbWV0aG9kcyk7CiAgICB9OwoKICB9IGVsc2UgewogICAgRXZlbnQucHJvdG90eXBlID0gRXZlbnQucHJvdG90eXBlIHx8IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCJIVE1MRXZlbnRzIikuX19wcm90b19fOwogICAgT2JqZWN0LmV4dGVuZChFdmVudC5wcm90b3R5cGUsIG1ldGhvZHMpOwogICAgcmV0dXJuIFByb3RvdHlwZS5LOwogIH0KfSkoKTsKCk9iamVjdC5leHRlbmQoRXZlbnQsIChmdW5jdGlvbigpIHsKICB2YXIgY2FjaGUgPSBFdmVudC5jYWNoZTsKCiAgZnVuY3Rpb24gZ2V0RXZlbnRJRChlbGVtZW50KSB7CiAgICBpZiAoZWxlbWVudC5fcHJvdG90eXBlRXZlbnRJRCkgcmV0dXJuIGVsZW1lbnQuX3Byb3RvdHlwZUV2ZW50SURbMF07CiAgICBhcmd1bWVudHMuY2FsbGVlLmlkID0gYXJndW1lbnRzLmNhbGxlZS5pZCB8fCAxOwogICAgcmV0dXJuIGVsZW1lbnQuX3Byb3RvdHlwZUV2ZW50SUQgPSBbKythcmd1bWVudHMuY2FsbGVlLmlkXTsKICB9CgogIGZ1bmN0aW9uIGdldERPTUV2ZW50TmFtZShldmVudE5hbWUpIHsKICAgIGlmIChldmVudE5hbWUgJiYgZXZlbnROYW1lLmluY2x1ZGUoJzonKSkgcmV0dXJuICJkYXRhYXZhaWxhYmxlIjsKICAgIHJldHVybiBldmVudE5hbWU7CiAgfQoKICBmdW5jdGlvbiBnZXRDYWNoZUZvcklEKGlkKSB7CiAgICByZXR1cm4gY2FjaGVbaWRdID0gY2FjaGVbaWRdIHx8IHsgfTsKICB9CgogIGZ1bmN0aW9uIGdldFdyYXBwZXJzRm9yRXZlbnROYW1lKGlkLCBldmVudE5hbWUpIHsKICAgIHZhciBjID0gZ2V0Q2FjaGVGb3JJRChpZCk7CiAgICByZXR1cm4gY1tldmVudE5hbWVdID0gY1tldmVudE5hbWVdIHx8IFtdOwogIH0KCiAgZnVuY3Rpb24gY3JlYXRlV3JhcHBlcihlbGVtZW50LCBldmVudE5hbWUsIGhhbmRsZXIpIHsKICAgIHZhciBpZCA9IGdldEV2ZW50SUQoZWxlbWVudCk7CiAgICB2YXIgYyA9IGdldFdyYXBwZXJzRm9yRXZlbnROYW1lKGlkLCBldmVudE5hbWUpOwogICAgaWYgKGMucGx1Y2soImhhbmRsZXIiKS5pbmNsdWRlKGhhbmRsZXIpKSByZXR1cm4gZmFsc2U7CgogICAgdmFyIHdyYXBwZXIgPSBmdW5jdGlvbihldmVudCkgewogICAgICBpZiAoIUV2ZW50IHx8ICFFdmVudC5leHRlbmQgfHwKICAgICAgICAoZXZlbnQuZXZlbnROYW1lICYmIGV2ZW50LmV2ZW50TmFtZSAhPSBldmVudE5hbWUpKQogICAgICAgICAgcmV0dXJuIGZhbHNlOwoKICAgICAgRXZlbnQuZXh0ZW5kKGV2ZW50KTsKICAgICAgaGFuZGxlci5jYWxsKGVsZW1lbnQsIGV2ZW50KTsKICAgIH07CgogICAgd3JhcHBlci5oYW5kbGVyID0gaGFuZGxlcjsKICAgIGMucHVzaCh3cmFwcGVyKTsKICAgIHJldHVybiB3cmFwcGVyOwogIH0KCiAgZnVuY3Rpb24gZmluZFdyYXBwZXIoaWQsIGV2ZW50TmFtZSwgaGFuZGxlcikgewogICAgdmFyIGMgPSBnZXRXcmFwcGVyc0ZvckV2ZW50TmFtZShpZCwgZXZlbnROYW1lKTsKICAgIHJldHVybiBjLmZpbmQoZnVuY3Rpb24od3JhcHBlcikgeyByZXR1cm4gd3JhcHBlci5oYW5kbGVyID09IGhhbmRsZXIgfSk7CiAgfQoKICBmdW5jdGlvbiBkZXN0cm95V3JhcHBlcihpZCwgZXZlbnROYW1lLCBoYW5kbGVyKSB7CiAgICB2YXIgYyA9IGdldENhY2hlRm9ySUQoaWQpOwogICAgaWYgKCFjW2V2ZW50TmFtZV0pIHJldHVybiBmYWxzZTsKICAgIGNbZXZlbnROYW1lXSA9IGNbZXZlbnROYW1lXS53aXRob3V0KGZpbmRXcmFwcGVyKGlkLCBldmVudE5hbWUsIGhhbmRsZXIpKTsKICB9CgogIGZ1bmN0aW9uIGRlc3Ryb3lDYWNoZSgpIHsKICAgIGZvciAodmFyIGlkIGluIGNhY2hlKQogICAgICBmb3IgKHZhciBldmVudE5hbWUgaW4gY2FjaGVbaWRdKQogICAgICAgIGNhY2hlW2lkXVtldmVudE5hbWVdID0gbnVsbDsKICB9CgogIGlmICh3aW5kb3cuYXR0YWNoRXZlbnQpIHsKICAgIHdpbmRvdy5hdHRhY2hFdmVudCgib251bmxvYWQiLCBkZXN0cm95Q2FjaGUpOwogIH0KCiAgcmV0dXJuIHsKICAgIG9ic2VydmU6IGZ1bmN0aW9uKGVsZW1lbnQsIGV2ZW50TmFtZSwgaGFuZGxlcikgewogICAgICBlbGVtZW50ID0gJChlbGVtZW50KTsKICAgICAgdmFyIG5hbWUgPSBnZXRET01FdmVudE5hbWUoZXZlbnROYW1lKTsKCiAgICAgIHZhciB3cmFwcGVyID0gY3JlYXRlV3JhcHBlcihlbGVtZW50LCBldmVudE5hbWUsIGhhbmRsZXIpOwogICAgICBpZiAoIXdyYXBwZXIpIHJldHVybiBlbGVtZW50OwoKICAgICAgaWYgKGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcikgewogICAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihuYW1lLCB3cmFwcGVyLCBmYWxzZSk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgZWxlbWVudC5hdHRhY2hFdmVudCgib24iICsgbmFtZSwgd3JhcHBlcik7CiAgICAgIH0KCiAgICAgIHJldHVybiBlbGVtZW50OwogICAgfSwKCiAgICBzdG9wT2JzZXJ2aW5nOiBmdW5jdGlvbihlbGVtZW50LCBldmVudE5hbWUsIGhhbmRsZXIpIHsKICAgICAgZWxlbWVudCA9ICQoZWxlbWVudCk7CiAgICAgIHZhciBpZCA9IGdldEV2ZW50SUQoZWxlbWVudCksIG5hbWUgPSBnZXRET01FdmVudE5hbWUoZXZlbnROYW1lKTsKCiAgICAgIGlmICghaGFuZGxlciAmJiBldmVudE5hbWUpIHsKICAgICAgICBnZXRXcmFwcGVyc0ZvckV2ZW50TmFtZShpZCwgZXZlbnROYW1lKS5lYWNoKGZ1bmN0aW9uKHdyYXBwZXIpIHsKICAgICAgICAgIGVsZW1lbnQuc3RvcE9ic2VydmluZyhldmVudE5hbWUsIHdyYXBwZXIuaGFuZGxlcik7CiAgICAgICAgfSk7CiAgICAgICAgcmV0dXJuIGVsZW1lbnQ7CgogICAgICB9IGVsc2UgaWYgKCFldmVudE5hbWUpIHsKICAgICAgICBPYmplY3Qua2V5cyhnZXRDYWNoZUZvcklEKGlkKSkuZWFjaChmdW5jdGlvbihldmVudE5hbWUpIHsKICAgICAgICAgIGVsZW1lbnQuc3RvcE9ic2VydmluZyhldmVudE5hbWUpOwogICAgICAgIH0pOwogICAgICAgIHJldHVybiBlbGVtZW50OwogICAgICB9CgogICAgICB2YXIgd3JhcHBlciA9IGZpbmRXcmFwcGVyKGlkLCBldmVudE5hbWUsIGhhbmRsZXIpOwogICAgICBpZiAoIXdyYXBwZXIpIHJldHVybiBlbGVtZW50OwoKICAgICAgaWYgKGVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcikgewogICAgICAgIGVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihuYW1lLCB3cmFwcGVyLCBmYWxzZSk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgZWxlbWVudC5kZXRhY2hFdmVudCgib24iICsgbmFtZSwgd3JhcHBlcik7CiAgICAgIH0KCiAgICAgIGRlc3Ryb3lXcmFwcGVyKGlkLCBldmVudE5hbWUsIGhhbmRsZXIpOwoKICAgICAgcmV0dXJuIGVsZW1lbnQ7CiAgICB9LAoKICAgIGZpcmU6IGZ1bmN0aW9uKGVsZW1lbnQsIGV2ZW50TmFtZSwgbWVtbykgewogICAgICBlbGVtZW50ID0gJChlbGVtZW50KTsKICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQgJiYgZG9jdW1lbnQuY3JlYXRlRXZlbnQgJiYgIWVsZW1lbnQuZGlzcGF0Y2hFdmVudCkKICAgICAgICBlbGVtZW50ID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50OwoKICAgICAgdmFyIGV2ZW50OwogICAgICBpZiAoZG9jdW1lbnQuY3JlYXRlRXZlbnQpIHsKICAgICAgICBldmVudCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCJIVE1MRXZlbnRzIik7CiAgICAgICAgZXZlbnQuaW5pdEV2ZW50KCJkYXRhYXZhaWxhYmxlIiwgdHJ1ZSwgdHJ1ZSk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgZXZlbnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudE9iamVjdCgpOwogICAgICAgIGV2ZW50LmV2ZW50VHlwZSA9ICJvbmRhdGFhdmFpbGFibGUiOwogICAgICB9CgogICAgICBldmVudC5ldmVudE5hbWUgPSBldmVudE5hbWU7CiAgICAgIGV2ZW50Lm1lbW8gPSBtZW1vIHx8IHsgfTsKCiAgICAgIGlmIChkb2N1bWVudC5jcmVhdGVFdmVudCkgewogICAgICAgIGVsZW1lbnQuZGlzcGF0Y2hFdmVudChldmVudCk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgZWxlbWVudC5maXJlRXZlbnQoZXZlbnQuZXZlbnRUeXBlLCBldmVudCk7CiAgICAgIH0KCiAgICAgIHJldHVybiBFdmVudC5leHRlbmQoZXZlbnQpOwogICAgfQogIH07Cn0pKCkpOwoKT2JqZWN0LmV4dGVuZChFdmVudCwgRXZlbnQuTWV0aG9kcyk7CgpFbGVtZW50LmFkZE1ldGhvZHMoewogIGZpcmU6ICAgICAgICAgIEV2ZW50LmZpcmUsCiAgb2JzZXJ2ZTogICAgICAgRXZlbnQub2JzZXJ2ZSwKICBzdG9wT2JzZXJ2aW5nOiBFdmVudC5zdG9wT2JzZXJ2aW5nCn0pOwoKT2JqZWN0LmV4dGVuZChkb2N1bWVudCwgewogIGZpcmU6ICAgICAgICAgIEVsZW1lbnQuTWV0aG9kcy5maXJlLm1ldGhvZGl6ZSgpLAogIG9ic2VydmU6ICAgICAgIEVsZW1lbnQuTWV0aG9kcy5vYnNlcnZlLm1ldGhvZGl6ZSgpLAogIHN0b3BPYnNlcnZpbmc6IEVsZW1lbnQuTWV0aG9kcy5zdG9wT2JzZXJ2aW5nLm1ldGhvZGl6ZSgpLAogIGxvYWRlZDogICAgICAgIGZhbHNlCn0pOwoKKGZ1bmN0aW9uKCkgewogIC8qIFN1cHBvcnQgZm9yIHRoZSBET01Db250ZW50TG9hZGVkIGV2ZW50IGlzIGJhc2VkIG9uIHdvcmsgYnkgRGFuIFdlYmIsCiAgICAgTWF0dGhpYXMgTWlsbGVyLCBEZWFuIEVkd2FyZHMgYW5kIEpvaG4gUmVzaWcuICovCgogIHZhciB0aW1lcjsKCiAgZnVuY3Rpb24gZmlyZUNvbnRlbnRMb2FkZWRFdmVudCgpIHsKICAgIGlmIChkb2N1bWVudC5sb2FkZWQpIHJldHVybjsKICAgIGlmICh0aW1lcikgd2luZG93LmNsZWFySW50ZXJ2YWwodGltZXIpOwogICAgZG9jdW1lbnQuZmlyZSgiZG9tOmxvYWRlZCIpOwogICAgZG9jdW1lbnQubG9hZGVkID0gdHJ1ZTsKICB9CgogIGlmIChkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKSB7CiAgICBpZiAoUHJvdG90eXBlLkJyb3dzZXIuV2ViS2l0KSB7CiAgICAgIHRpbWVyID0gd2luZG93LnNldEludGVydmFsKGZ1bmN0aW9uKCkgewogICAgICAgIGlmICgvbG9hZGVkfGNvbXBsZXRlLy50ZXN0KGRvY3VtZW50LnJlYWR5U3RhdGUpKQogICAgICAgICAgZmlyZUNvbnRlbnRMb2FkZWRFdmVudCgpOwogICAgICB9LCAwKTsKCiAgICAgIEV2ZW50Lm9ic2VydmUod2luZG93LCAibG9hZCIsIGZpcmVDb250ZW50TG9hZGVkRXZlbnQpOwoKICAgIH0gZWxzZSB7CiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLAogICAgICAgIGZpcmVDb250ZW50TG9hZGVkRXZlbnQsIGZhbHNlKTsKICAgIH0KCiAgfSBlbHNlIHsKICAgIGRvY3VtZW50LndyaXRlKCI8c2NyaXB0IGlkPV9fb25ET01Db250ZW50TG9hZGVkIGRlZmVyIHNyYz0vLzo+PFwvc2NyaXB0PiIpOwogICAgJCgiX19vbkRPTUNvbnRlbnRMb2FkZWQiKS5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpIHsKICAgICAgaWYgKHRoaXMucmVhZHlTdGF0ZSA9PSAiY29tcGxldGUiKSB7CiAgICAgICAgdGhpcy5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBudWxsOwogICAgICAgIGZpcmVDb250ZW50TG9hZGVkRXZlbnQoKTsKICAgICAgfQogICAgfTsKICB9Cn0pKCk7Ci8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBERVBSRUNBVEVEIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKSGFzaC50b1F1ZXJ5U3RyaW5nID0gT2JqZWN0LnRvUXVlcnlTdHJpbmc7Cgp2YXIgVG9nZ2xlID0geyBkaXNwbGF5OiBFbGVtZW50LnRvZ2dsZSB9OwoKRWxlbWVudC5NZXRob2RzLmNoaWxkT2YgPSBFbGVtZW50Lk1ldGhvZHMuZGVzY2VuZGFudE9mOwoKdmFyIEluc2VydGlvbiA9IHsKICBCZWZvcmU6IGZ1bmN0aW9uKGVsZW1lbnQsIGNvbnRlbnQpIHsKICAgIHJldHVybiBFbGVtZW50Lmluc2VydChlbGVtZW50LCB7YmVmb3JlOmNvbnRlbnR9KTsKICB9LAoKICBUb3A6IGZ1bmN0aW9uKGVsZW1lbnQsIGNvbnRlbnQpIHsKICAgIHJldHVybiBFbGVtZW50Lmluc2VydChlbGVtZW50LCB7dG9wOmNvbnRlbnR9KTsKICB9LAoKICBCb3R0b206IGZ1bmN0aW9uKGVsZW1lbnQsIGNvbnRlbnQpIHsKICAgIHJldHVybiBFbGVtZW50Lmluc2VydChlbGVtZW50LCB7Ym90dG9tOmNvbnRlbnR9KTsKICB9LAoKICBBZnRlcjogZnVuY3Rpb24oZWxlbWVudCwgY29udGVudCkgewogICAgcmV0dXJuIEVsZW1lbnQuaW5zZXJ0KGVsZW1lbnQsIHthZnRlcjpjb250ZW50fSk7CiAgfQp9OwoKdmFyICRjb250aW51ZSA9IG5ldyBFcnJvcignInRocm93ICRjb250aW51ZSIgaXMgZGVwcmVjYXRlZCwgdXNlICJyZXR1cm4iIGluc3RlYWQnKTsKCi8vIFRoaXMgc2hvdWxkIGJlIG1vdmVkIHRvIHNjcmlwdC5hY3Vsby51czsgbm90aWNlIHRoZSBkZXByZWNhdGVkIG1ldGhvZHMKLy8gZnVydGhlciBiZWxvdywgdGhhdCBtYXAgdG8gdGhlIG5ld2VyIEVsZW1lbnQgbWV0aG9kcy4KdmFyIFBvc2l0aW9uID0gewogIC8vIHNldCB0byB0cnVlIGlmIG5lZWRlZCwgd2FybmluZzogZmlyZWZveCBwZXJmb3JtYW5jZSBwcm9ibGVtcwogIC8vIE5PVCBuZWVlZGVkIGZvciBwYWdlIHNjcm9sbGluZywgb25seSBpZiBkcmFnZ2FibGUgY29udGFpbmVkIGluCiAgLy8gc2Nyb2xsYWJsZSBlbGVtZW50cwogIGluY2x1ZGVTY3JvbGxPZmZzZXRzOiBmYWxzZSwKCiAgLy8gbXVzdCBiZSBjYWxsZWQgYmVmb3JlIGNhbGxpbmcgd2l0aGluSW5jbHVkaW5nU2Nyb2xsb2Zmc2V0LCBldmVyeSB0aW1lIHRoZQogIC8vIHBhZ2UgaXMgc2Nyb2xsZWQKICBwcmVwYXJlOiBmdW5jdGlvbigpIHsKICAgIHRoaXMuZGVsdGFYID0gIHdpbmRvdy5wYWdlWE9mZnNldAogICAgICAgICAgICAgICAgfHwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbExlZnQKICAgICAgICAgICAgICAgIHx8IGRvY3VtZW50LmJvZHkuc2Nyb2xsTGVmdAogICAgICAgICAgICAgICAgfHwgMDsKICAgIHRoaXMuZGVsdGFZID0gIHdpbmRvdy5wYWdlWU9mZnNldAogICAgICAgICAgICAgICAgfHwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcAogICAgICAgICAgICAgICAgfHwgZG9jdW1lbnQuYm9keS5zY3JvbGxUb3AKICAgICAgICAgICAgICAgIHx8IDA7CiAgfSwKCiAgLy8gY2FjaGVzIHgveSBjb29yZGluYXRlIHBhaXIgdG8gdXNlIHdpdGggb3ZlcmxhcAogIHdpdGhpbjogZnVuY3Rpb24oZWxlbWVudCwgeCwgeSkgewogICAgaWYgKHRoaXMuaW5jbHVkZVNjcm9sbE9mZnNldHMpCiAgICAgIHJldHVybiB0aGlzLndpdGhpbkluY2x1ZGluZ1Njcm9sbG9mZnNldHMoZWxlbWVudCwgeCwgeSk7CiAgICB0aGlzLnhjb21wID0geDsKICAgIHRoaXMueWNvbXAgPSB5OwogICAgdGhpcy5vZmZzZXQgPSBFbGVtZW50LmN1bXVsYXRpdmVPZmZzZXQoZWxlbWVudCk7CgogICAgcmV0dXJuICh5ID49IHRoaXMub2Zmc2V0WzFdICYmCiAgICAgICAgICAgIHkgPCAgdGhpcy5vZmZzZXRbMV0gKyBlbGVtZW50Lm9mZnNldEhlaWdodCAmJgogICAgICAgICAgICB4ID49IHRoaXMub2Zmc2V0WzBdICYmCiAgICAgICAgICAgIHggPCAgdGhpcy5vZmZzZXRbMF0gKyBlbGVtZW50Lm9mZnNldFdpZHRoKTsKICB9LAoKICB3aXRoaW5JbmNsdWRpbmdTY3JvbGxvZmZzZXRzOiBmdW5jdGlvbihlbGVtZW50LCB4LCB5KSB7CiAgICB2YXIgb2Zmc2V0Y2FjaGUgPSBFbGVtZW50LmN1bXVsYXRpdmVTY3JvbGxPZmZzZXQoZWxlbWVudCk7CgogICAgdGhpcy54Y29tcCA9IHggKyBvZmZzZXRjYWNoZVswXSAtIHRoaXMuZGVsdGFYOwogICAgdGhpcy55Y29tcCA9IHkgKyBvZmZzZXRjYWNoZVsxXSAtIHRoaXMuZGVsdGFZOwogICAgdGhpcy5vZmZzZXQgPSBFbGVtZW50LmN1bXVsYXRpdmVPZmZzZXQoZWxlbWVudCk7CgogICAgcmV0dXJuICh0aGlzLnljb21wID49IHRoaXMub2Zmc2V0WzFdICYmCiAgICAgICAgICAgIHRoaXMueWNvbXAgPCAgdGhpcy5vZmZzZXRbMV0gKyBlbGVtZW50Lm9mZnNldEhlaWdodCAmJgogICAgICAgICAgICB0aGlzLnhjb21wID49IHRoaXMub2Zmc2V0WzBdICYmCiAgICAgICAgICAgIHRoaXMueGNvbXAgPCAgdGhpcy5vZmZzZXRbMF0gKyBlbGVtZW50Lm9mZnNldFdpZHRoKTsKICB9LAoKICAvLyB3aXRoaW4gbXVzdCBiZSBjYWxsZWQgZGlyZWN0bHkgYmVmb3JlCiAgb3ZlcmxhcDogZnVuY3Rpb24obW9kZSwgZWxlbWVudCkgewogICAgaWYgKCFtb2RlKSByZXR1cm4gMDsKICAgIGlmIChtb2RlID09ICd2ZXJ0aWNhbCcpCiAgICAgIHJldHVybiAoKHRoaXMub2Zmc2V0WzFdICsgZWxlbWVudC5vZmZzZXRIZWlnaHQpIC0gdGhpcy55Y29tcCkgLwogICAgICAgIGVsZW1lbnQub2Zmc2V0SGVpZ2h0OwogICAgaWYgKG1vZGUgPT0gJ2hvcml6b250YWwnKQogICAgICByZXR1cm4gKCh0aGlzLm9mZnNldFswXSArIGVsZW1lbnQub2Zmc2V0V2lkdGgpIC0gdGhpcy54Y29tcCkgLwogICAgICAgIGVsZW1lbnQub2Zmc2V0V2lkdGg7CiAgfSwKCiAgLy8gRGVwcmVjYXRpb24gbGF5ZXIgLS0gdXNlIG5ld2VyIEVsZW1lbnQgbWV0aG9kcyBub3cgKDEuNS4yKS4KCiAgY3VtdWxhdGl2ZU9mZnNldDogRWxlbWVudC5NZXRob2RzLmN1bXVsYXRpdmVPZmZzZXQsCgogIHBvc2l0aW9uZWRPZmZzZXQ6IEVsZW1lbnQuTWV0aG9kcy5wb3NpdGlvbmVkT2Zmc2V0LAoKICBhYnNvbHV0aXplOiBmdW5jdGlvbihlbGVtZW50KSB7CiAgICBQb3NpdGlvbi5wcmVwYXJlKCk7CiAgICByZXR1cm4gRWxlbWVudC5hYnNvbHV0aXplKGVsZW1lbnQpOwogIH0sCgogIHJlbGF0aXZpemU6IGZ1bmN0aW9uKGVsZW1lbnQpIHsKICAgIFBvc2l0aW9uLnByZXBhcmUoKTsKICAgIHJldHVybiBFbGVtZW50LnJlbGF0aXZpemUoZWxlbWVudCk7CiAgfSwKCiAgcmVhbE9mZnNldDogRWxlbWVudC5NZXRob2RzLmN1bXVsYXRpdmVTY3JvbGxPZmZzZXQsCgogIG9mZnNldFBhcmVudDogRWxlbWVudC5NZXRob2RzLmdldE9mZnNldFBhcmVudCwKCiAgcGFnZTogRWxlbWVudC5NZXRob2RzLnZpZXdwb3J0T2Zmc2V0LAoKICBjbG9uZTogZnVuY3Rpb24oc291cmNlLCB0YXJnZXQsIG9wdGlvbnMpIHsKICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHsgfTsKICAgIHJldHVybiBFbGVtZW50LmNsb25lUG9zaXRpb24odGFyZ2V0LCBzb3VyY2UsIG9wdGlvbnMpOwogIH0KfTsKCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKaWYgKCFkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lID0gZnVuY3Rpb24oaW5zdGFuY2VNZXRob2RzKXsKICBmdW5jdGlvbiBpdGVyKG5hbWUpIHsKICAgIHJldHVybiBuYW1lLmJsYW5rKCkgPyBudWxsIDogIltjb250YWlucyhjb25jYXQoJyAnLCBAY2xhc3MsICcgJyksICcgIiArIG5hbWUgKyAiICcpXSI7CiAgfQoKICBpbnN0YW5jZU1ldGhvZHMuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSA9IFByb3RvdHlwZS5Ccm93c2VyRmVhdHVyZXMuWFBhdGggPwogIGZ1bmN0aW9uKGVsZW1lbnQsIGNsYXNzTmFtZSkgewogICAgY2xhc3NOYW1lID0gY2xhc3NOYW1lLnRvU3RyaW5nKCkuc3RyaXAoKTsKICAgIHZhciBjb25kID0gL1xzLy50ZXN0KGNsYXNzTmFtZSkgPyAkdyhjbGFzc05hbWUpLm1hcChpdGVyKS5qb2luKCcnKSA6IGl0ZXIoY2xhc3NOYW1lKTsKICAgIHJldHVybiBjb25kID8gZG9jdW1lbnQuX2dldEVsZW1lbnRzQnlYUGF0aCgnLi8vKicgKyBjb25kLCBlbGVtZW50KSA6IFtdOwogIH0gOiBmdW5jdGlvbihlbGVtZW50LCBjbGFzc05hbWUpIHsKICAgIGNsYXNzTmFtZSA9IGNsYXNzTmFtZS50b1N0cmluZygpLnN0cmlwKCk7CiAgICB2YXIgZWxlbWVudHMgPSBbXSwgY2xhc3NOYW1lcyA9ICgvXHMvLnRlc3QoY2xhc3NOYW1lKSA/ICR3KGNsYXNzTmFtZSkgOiBudWxsKTsKICAgIGlmICghY2xhc3NOYW1lcyAmJiAhY2xhc3NOYW1lKSByZXR1cm4gZWxlbWVudHM7CgogICAgdmFyIG5vZGVzID0gJChlbGVtZW50KS5nZXRFbGVtZW50c0J5VGFnTmFtZSgnKicpOwogICAgY2xhc3NOYW1lID0gJyAnICsgY2xhc3NOYW1lICsgJyAnOwoKICAgIGZvciAodmFyIGkgPSAwLCBjaGlsZCwgY247IGNoaWxkID0gbm9kZXNbaV07IGkrKykgewogICAgICBpZiAoY2hpbGQuY2xhc3NOYW1lICYmIChjbiA9ICcgJyArIGNoaWxkLmNsYXNzTmFtZSArICcgJykgJiYgKGNuLmluY2x1ZGUoY2xhc3NOYW1lKSB8fAogICAgICAgICAgKGNsYXNzTmFtZXMgJiYgY2xhc3NOYW1lcy5hbGwoZnVuY3Rpb24obmFtZSkgewogICAgICAgICAgICByZXR1cm4gIW5hbWUudG9TdHJpbmcoKS5ibGFuaygpICYmIGNuLmluY2x1ZGUoJyAnICsgbmFtZSArICcgJyk7CiAgICAgICAgICB9KSkpKQogICAgICAgIGVsZW1lbnRzLnB1c2goRWxlbWVudC5leHRlbmQoY2hpbGQpKTsKICAgIH0KICAgIHJldHVybiBlbGVtZW50czsKICB9OwoKICByZXR1cm4gZnVuY3Rpb24oY2xhc3NOYW1lLCBwYXJlbnRFbGVtZW50KSB7CiAgICByZXR1cm4gJChwYXJlbnRFbGVtZW50IHx8IGRvY3VtZW50LmJvZHkpLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoY2xhc3NOYW1lKTsKICB9Owp9KEVsZW1lbnQuTWV0aG9kcyk7CgovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCkVsZW1lbnQuQ2xhc3NOYW1lcyA9IENsYXNzLmNyZWF0ZSgpOwpFbGVtZW50LkNsYXNzTmFtZXMucHJvdG90eXBlID0gewogIGluaXRpYWxpemU6IGZ1bmN0aW9uKGVsZW1lbnQpIHsKICAgIHRoaXMuZWxlbWVudCA9ICQoZWxlbWVudCk7CiAgfSwKCiAgX2VhY2g6IGZ1bmN0aW9uKGl0ZXJhdG9yKSB7CiAgICB0aGlzLmVsZW1lbnQuY2xhc3NOYW1lLnNwbGl0KC9ccysvKS5zZWxlY3QoZnVuY3Rpb24obmFtZSkgewogICAgICByZXR1cm4gbmFtZS5sZW5ndGggPiAwOwogICAgfSkuX2VhY2goaXRlcmF0b3IpOwogIH0sCgogIHNldDogZnVuY3Rpb24oY2xhc3NOYW1lKSB7CiAgICB0aGlzLmVsZW1lbnQuY2xhc3NOYW1lID0gY2xhc3NOYW1lOwogIH0sCgogIGFkZDogZnVuY3Rpb24oY2xhc3NOYW1lVG9BZGQpIHsKICAgIGlmICh0aGlzLmluY2x1ZGUoY2xhc3NOYW1lVG9BZGQpKSByZXR1cm47CiAgICB0aGlzLnNldCgkQSh0aGlzKS5jb25jYXQoY2xhc3NOYW1lVG9BZGQpLmpvaW4oJyAnKSk7CiAgfSwKCiAgcmVtb3ZlOiBmdW5jdGlvbihjbGFzc05hbWVUb1JlbW92ZSkgewogICAgaWYgKCF0aGlzLmluY2x1ZGUoY2xhc3NOYW1lVG9SZW1vdmUpKSByZXR1cm47CiAgICB0aGlzLnNldCgkQSh0aGlzKS53aXRob3V0KGNsYXNzTmFtZVRvUmVtb3ZlKS5qb2luKCcgJykpOwogIH0sCgogIHRvU3RyaW5nOiBmdW5jdGlvbigpIHsKICAgIHJldHVybiAkQSh0aGlzKS5qb2luKCcgJyk7CiAgfQp9OwoKT2JqZWN0LmV4dGVuZChFbGVtZW50LkNsYXNzTmFtZXMucHJvdG90eXBlLCBFbnVtZXJhYmxlKTsKCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKRWxlbWVudC5hZGRNZXRob2RzKCk7]]></data>
	</file>
	<file>
	  <filename>/templates/lightbox/js/scriptaculous.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8gc2NyaXB0LmFjdWxvLnVzIHNjcmlwdGFjdWxvdXMuanMgdjEuOC4xLCBUaHUgSmFuIDAzIDIyOjA3OjEyIC0wNTAwIDIwMDgKCi8vIENvcHlyaWdodCAoYykgMjAwNS0yMDA3IFRob21hcyBGdWNocyAoaHR0cDovL3NjcmlwdC5hY3Vsby51cywgaHR0cDovL21pci5hY3Vsby51cykKLy8gCi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZwovLyBhIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUKLy8gIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZwovLyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsCi8vIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0bwovLyBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8KLy8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgovLyAKLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUKLy8gaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCi8vCi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELAovLyBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YKLy8gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQKLy8gTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRQovLyBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OCi8vIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTgovLyBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KLy8KLy8gRm9yIGRldGFpbHMsIHNlZSB0aGUgc2NyaXB0LmFjdWxvLnVzIHdlYiBzaXRlOiBodHRwOi8vc2NyaXB0LmFjdWxvLnVzLwoKdmFyIFNjcmlwdGFjdWxvdXMgPSB7CiAgVmVyc2lvbjogJzEuOC4xJywKICByZXF1aXJlOiBmdW5jdGlvbihsaWJyYXJ5TmFtZSkgewogICAgLy8gaW5zZXJ0aW5nIHZpYSBET00gZmFpbHMgaW4gU2FmYXJpIDIuMCwgc28gYnJ1dGUgZm9yY2UgYXBwcm9hY2gKICAgIGRvY3VtZW50LndyaXRlKCc8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSInK2xpYnJhcnlOYW1lKyciPjxcL3NjcmlwdD4nKTsKICB9LAogIFJFUVVJUkVEX1BST1RPVFlQRTogJzEuNi4wJywKICBsb2FkOiBmdW5jdGlvbigpIHsKICAgIGZ1bmN0aW9uIGNvbnZlcnRWZXJzaW9uU3RyaW5nKHZlcnNpb25TdHJpbmcpewogICAgICB2YXIgciA9IHZlcnNpb25TdHJpbmcuc3BsaXQoJy4nKTsKICAgICAgcmV0dXJuIHBhcnNlSW50KHJbMF0pKjEwMDAwMCArIHBhcnNlSW50KHJbMV0pKjEwMDAgKyBwYXJzZUludChyWzJdKTsKICAgIH0KIAogICAgaWYoKHR5cGVvZiBQcm90b3R5cGU9PSd1bmRlZmluZWQnKSB8fCAKICAgICAgICh0eXBlb2YgRWxlbWVudCA9PSAndW5kZWZpbmVkJykgfHwgCiAgICAgICAodHlwZW9mIEVsZW1lbnQuTWV0aG9kcz09J3VuZGVmaW5lZCcpIHx8CiAgICAgICAoY29udmVydFZlcnNpb25TdHJpbmcoUHJvdG90eXBlLlZlcnNpb24pIDwgCiAgICAgICAgY29udmVydFZlcnNpb25TdHJpbmcoU2NyaXB0YWN1bG91cy5SRVFVSVJFRF9QUk9UT1RZUEUpKSkKICAgICAgIHRocm93KCJzY3JpcHQuYWN1bG8udXMgcmVxdWlyZXMgdGhlIFByb3RvdHlwZSBKYXZhU2NyaXB0IGZyYW1ld29yayA+PSAiICsKICAgICAgICBTY3JpcHRhY3Vsb3VzLlJFUVVJUkVEX1BST1RPVFlQRSk7CiAgICAKICAgICRBKGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJzY3JpcHQiKSkuZmluZEFsbCggZnVuY3Rpb24ocykgewogICAgICByZXR1cm4gKHMuc3JjICYmIHMuc3JjLm1hdGNoKC9zY3JpcHRhY3Vsb3VzXC5qcyhcPy4qKT8kLykpCiAgICB9KS5lYWNoKCBmdW5jdGlvbihzKSB7CiAgICAgIHZhciBwYXRoID0gcy5zcmMucmVwbGFjZSgvc2NyaXB0YWN1bG91c1wuanMoXD8uKik/JC8sJycpOwogICAgICB2YXIgaW5jbHVkZXMgPSBzLnNyYy5tYXRjaCgvXD8uKmxvYWQ9KFthLXosXSopLyk7CiAgICAgIChpbmNsdWRlcyA/IGluY2x1ZGVzWzFdIDogJ2J1aWxkZXIsZWZmZWN0cyxkcmFnZHJvcCxjb250cm9scyxzbGlkZXIsc291bmQnKS5zcGxpdCgnLCcpLmVhY2goCiAgICAgICBmdW5jdGlvbihpbmNsdWRlKSB7IFNjcmlwdGFjdWxvdXMucmVxdWlyZShwYXRoK2luY2x1ZGUrJy5qcycpIH0pOwogICAgfSk7CiAgfQp9CgpTY3JpcHRhY3Vsb3VzLmxvYWQoKTs=]]></data>
	</file>
	<file>
	  <filename>/templates/lytebox/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/lytebox/images/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/lytebox/images/blank.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhAQABAID/AMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==]]></data>
	</file>
	<file>
	  <filename>/templates/lytebox/images/close_blue.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/templates/lytebox/images/close_gold.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/templates/lytebox/images/close_green.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/templates/lytebox/images/close_grey.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/templates/lytebox/images/close_red.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAEAAAAAUCAYAAAA9djs/AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAAB90RVh0U29mdHdhcmUATWFjcm9tZWRpYSBGaXJld29ya3MgOLVo0ngAAAAWdEVYdENyZWF0aW9uIFRpbWUAMDIvMTYvMDcPLRWGAAAFSklEQVRYheWYbWhTVxjHf6ftVp1Krviy1Zcl016nha1RGEOd5Ib1izBnyijhsg+NVAXn1O7jYMMUhX1cfCkypJiODXsjjDgGbihru1GdzNGum9iaqMmkthXR1LlEcfrsQ29jWtOo6F7o/nA+5Pmfc5/z/O95/pwbJSLC/xhF//YGniQSHR2PzssEwQ5dl41KSVdLS16+q6VFNiolO3R9VHxCnICduk5fLMZUEfaZJt2RyCi+27LYZ5pME+G3WIydup7llMiT94B0WxsApW43xZr2pB8/Ch8tWkQyFmMJUAr0AVeU4p2DB3nJ7+cXy6LRNJkpwlzgJnAWeF7Xef/s2XsecKOtjfM+H51K0akUPW43Q9FoNlHMMOhUquBmrobDdGsavV4vvV4v3dOnkwwEuJNKZefcSaXuy3PDFqw/GMzGx458uHj8OMl4HAcw1RZgATBDhEbT5Iv162k0TWaJsBCYBEwDpgDJeJyLJ05QAnA1GqWnuppih4PZ27ZRomlcjUa5lbPxW0CmUPHRKD3r1jGlshJnMEixptEfCtHX3EwmlWKxLeYZn4/r7e2UbduWXafsU/KnnWN2bS2lLldBsQHmr1jBFstir99PnwgL7LgOFItwrKmJOYATKLa5C8AfSrHVspi/fPmwCbY6HNLqcMj1zs5xTeaUxyNHC3jm906ntDoccvvatbzr0hcuiIjIUZBTHk+Wz51/bvt2OQpytbV13Dz5cDoSkU1KSRDkc5CWPOMzkA9BNiklpyOR7NqigWiU34eGmBUIMM3tHlftQicgnUhwLZlE8/koGdPzswMBMkD/SDs5nVxqb2fA/p07/7ad4+4D3/1oVNTUsMWyGFSKJPBUnhFj2Bu2WBYVNTXZtUVXurpIA7N8voJJbgLpcbgbiQRpoCTPsS11uUgDabudXg6Hue1w0F5dzbeGwWW7/2FYgDRwzOvFUgpLKX4NBh+sALCkpobVdXX0AU/nGQPA6ro6luQUD1AykvRBqt9ifAHu2tzth+BmGwZvJBKcrK8n3txM0uvltQMH0AOBrADltbVMtcWcaRgP2NkweiyLI01NOBkueCxcwJGmJvSqKhb7/dl40WSXiwww2NVVMEGhFpjudpMBBvI8Y7Criwyg5bTX05rGqnCYNZ2dZIAf7Lc8YoILAgGWBoMsDQZ57iEE6LEs9pomLhGWkb8FlgHzRdhjmvRY1j0BXvD5SAMnQ6HRrp9KcTmnoEInoFTTmFJZyenDh0evSaU4GQpxx+Fgjl1Ibo6ZbjczPB4Gk0ngXgs8igf0WhZ7TJMKEVYAk+34T0AEOAkI8AywCnDZIvTaIpSUahqvbN/Odw0NfOJ2UxkIcDOV4udwmEmaxtZEIitABmgf05Muw8BpGBihEJ96vYQNg8pAYHhz0ShDySRvHjhAqW1239TXk0okcBoGQ4kEZ9vbeXHt2qwAGaAzHOZ8jjcAePJ4QX9HB7tNk7kiLOXeh80JIKkU1Rs28OX+/RSJ4LG5FcBNEXabJh/Mmzd8D/AEg0x1uegIhfi6oQGAirVrqcpJOmKCI/wIXgectghvt7byVX09bbt2AVBWWclboRAVOQZbpGn0JxKcaWhgksNBRW0ta0KhrABp4ERz833F5hOgbOVKFpeX0xuLcR3QgON28fWWRXlNDQuqqtjl9/OjCK8C14BLQEV5OWUrV/49V+F/Gnt1nZ54nGeBQaV4z7JYmOP25w4d4mO/nzIRLgFLyst5NxYbJh/pxvEfRqOuy2alJJ5zyclFPBKRzUpJ45ivwQkjgIjIQEfHI/MTogUeBxPi/4DHwV/IRpfA9K3pggAAAABJRU5ErkJggg==]]></data>
	</file>
	<file>
	  <filename>/templates/lytebox/images/loading.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/templates/lytebox/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>/templates/lytebox/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>/templates/lytebox/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>/templates/lytebox/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>/templates/lytebox/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>/templates/lytebox/images/pause_blue.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAEAAAAAUCAYAAAA9djs/AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABZ0RVh0Q3JlYXRpb24gVGltZQAwMi8xNi8wNw8tFYYAAAAfdEVYdFNvZnR3YXJlAE1hY3JvbWVkaWEgRmlyZXdvcmtzIDi1aNJ4AAAEoklEQVRYheWYf0xVdRTAP/e+ex8+eDxQARNFIDPGD39ULyOxWv7c1CUTU6fV1qKWlLZqOl3LtelaRmWjTfqlzk3L1JiKWWjFMCQmpubL/MlkBKmIP0BxFOc++uPBhcvjPci1OfJs9497zrnnnve533PO9/uU1tbWVu5gUW93ArdbtNudwK2Kmr7BT+ctf7ZHW1fpswAA+kWloSgKqqrQdPGYxRYSlYpq2jwBY/RpALpuQ1UVFEXxs9l1rQ1O8Bja6Oxy88bpsPFgkounJg/GneTyc85YVMH6pSkkxYVZ9M/l/s6hU438+nm6RT86uxx3kot1S1IAuH5TeHN9JcVHrwKQFBfK0nkJuJNc5O+q4eNdNd0m2TVuu7QDULsBoGlqQDgWPxGD2IEhZD4SQ239X+wsrWPfoXr2vudmSFSI6bijtI5r1/9mY9GfvJ09whLEMLyIGH7BRQwMw2veL8o7ScXJBp6eEgvAD79cxumwAeD1+mLMHB9jeW8wses2c5l3Fb3d1jMA4a4BTl7KHAaA+95wln96ioL951k0K8F0/LrkPCLC3oN1LJufiCu0o3oMw0BEugEgGEYHmJ9/u8zY5EiWzU8EICczzozjAyBkZkQzNjmylwA0VCVACWg2sz8EE7VrkuEOGyKC19vx5WouNVPmqeeJjGiuNjazr+KSJUhvAQyK1Cjz1JvPd4bYDuDfbEvsmg1dt2HXbX42XfPp7VrwNqeKCFcamyk/foVtxbW8/9UZRITJ7mjTad3uKkSEV7ISGdRf57PCc5YghgQB0Kk03l2YjMMO2asPM3dFBeXHr/gBmLPiIPGzi4ifXcSarWeDA7Br2HUNu93/R+qa5ru6gdNZNBEDz9lrZL3ha4bhoRq5OamkJISbTl/uq2biA1EMjXGQ9dhgPthyhuPnGklN9DVK3woI1AM69OmpAyjLf5QV606w7ccaSo9dYs3iUcyZMBSvtxURgycnDCUuxuHzT+kfNHldD7zM7fbelYAmIqQmulj1QhoA40ZGWRy2fP8HVxubiR0YQpmnniFR/RARPtlRSd6r93UC0HMJALjCdD5cPIrsGfFMXFzC6k0n2gC0rYDHY/1yCAhACzYF2m3BY2gigrOfGvClXxSdQ0TILzhNfsFpU19YWsPK59OIcOqEOVREBE9lAyOHRwDgqWxARAhzdAzihhstRDh1ANLujuCh5EgOeOqBW+wBQcag3jYGezEFrKOqs1RfaKLkyEUWzhrBOzljTP3moipycivYfaCWBVMTmDdpGIU/1TDttWJyskbQcKOFzUVViBi8mHmP+dyytUepvtDE+DHRVF+4ScmRi0wfF9sJgMGm76rYf7TOksfyZ1IDANCCbIRsqIqK0lMJtIgghn/9Any0/RQtIsyfEm/RL5iawOt5h8jbeoIFUxOYkTGETW89zKoNHlau921JRw6PZO0SN+NHdzRTZ6iNytpGig+fxxWmM3dSHLkv328CaBFh4x7/xhcYQOCdoK754PTUA5S+ehxW0zcwfeZsE8Cugq2Ww9CUaZkobSXwbWHB//Mw9M3O7QFte/fs6FWMPrsC/iu54/8QueMB/AOAcvU85V3mOwAAAABJRU5ErkJggg==]]></data>
	</file>
	<file>
	  <filename>/templates/lytebox/images/pause_gold.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAEAAAAAUCAYAAAA9djs/AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABZ0RVh0Q3JlYXRpb24gVGltZQAwMi8xNi8wNw8tFYYAAAAfdEVYdFNvZnR3YXJlAE1hY3JvbWVkaWEgRmlyZXdvcmtzIDi1aNJ4AAAEDElEQVRYheWYzWsTXRSHn5RJU6y0g5gaIpiYRdEW+5GAoC46VSoFv/oKbtx0XHVp/oT0P4h0pSBOd0LVpn6g6MIEpSUisW8gLQZM02pLaBdt1aAzU62LIZNO06TxRZC+/cEs5p5zzz33uefezI1tfX19nV2smr+dwN+W8LcT+K8aGLCVtN28ub6tbbN2LAAApxNsNqipgVyuettG7WgAdrsxSVvpgiMIRQCVJIyMFHvb7Y04nRLNzUGcTqnEORIRkaQoothhaY9GJZaWYly5Yi2zkREbTmcXkhQFQNdXePNGZmFhDABRbKejI4zTKZFKhZiaGtwyyc1xN0+yEoCtbBY/TYP6eg8+n0w+nyWTGSabHaOvb4b6eq/pmMko5POrTE+HOXFCsQTRddC00uCaZtgKikb7WFyMceTIdQA+fowgCCIAP34Y/j5fv2XcislXWOXfArBvn5e2thAA+/dLvH59jXRaobMzZDq+f6+gaZDJRAgEVqitFU3b2lp5AGtrxfdPn2K4XF0EAmEAjh0LmXEKAA4flnG5pGrm/0e2QM3mVbLbRTTNSKigL1+yzM3F8Hr7+fp1lZmZiCVItRXgcHiYm4uRzRr9N0IsAPj5s3LCGyUIBgS7vbxN2OaUq9E0yOdXmJ+PMj2tMDERQtPA4+kznd69C6NpEAiEcDg8JBJhS5BqK6CrSwEaefToHx48kJifj5q2AoD797sZGrIxNGQjHg9VTL4wwXIACk8lCZoGCwv/cvduNwAORyOnT9/B6SwedMmkwqFDl2ho8NLcLDMxMcji4iRNTYZPtRVw8KCELGd5+TJIKjXMzEw3vb13aG2VTQCtrf00NHgBcLulbQGUK/NKNgsAVYWmpnZ6eoxV9XisgyaTCp8/r7Jnj5fZ2Sh793pRVYjHw1y4oJgAVLU0uKpaAQA4HCK9vQqdnUFu3+4kGg2ZAFQVjh6VS3Iom7xgTLDcGVDOZvHTdRAEseygiYSCrsP4+A3Gx2+Y7alUhJ6eFerqRARBRNchl5vE5TKqIpebpBC7oO/fDX+AAwc6cLu7mJ2NAcYW0HX4nZvJdgCq+hXYapUKWl7Okk7HOHnyOufPF/d9IqFw7941pqYi+P0ybW0yyeQYt25JnDoV5Nu3FRIJBVWF48eDZr/Hj4MsL2fx+SQzdkvLJROAqsLbtwofPkQteZw5E9oyv0plXvWHkK5bD6qNevUqjK6D3y9b2v1+mdHRILFYGL9fpqWlj6tXR3nxIsSzZ8bHjNvdzuXLIXw+yexXWyuytJQlnR6krq6R9vZ+Ll4MmwB0HeLx4ZI8ygGopgK2A2DbqdfhgQEb584VATx8aL0MnT1btD19+j+9DD15Ut72/Hl1MXZsBfwp7fo/RHY9gF/qXKwTZv0LugAAAABJRU5ErkJggg==]]></data>
	</file>
	<file>
	  <filename>/templates/lytebox/images/pause_green.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAEAAAAAUCAYAAAA9djs/AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABZ0RVh0Q3JlYXRpb24gVGltZQAwMi8xNi8wNw8tFYYAAAAfdEVYdFNvZnR3YXJlAE1hY3JvbWVkaWEgRmlyZXdvcmtzIDi1aNJ4AAAD0klEQVRYheWYT2gcVRzHPxNDgi1lp6InxZ1CqQfF3ZAcFKo7cwgKhmZz0oO4ExpU9LBz0IOH0ClS0IIwqVatWPKCEDy5s+ClFnSmUVFoyUQMWCpme1IPmln/gDtan4fZzP7NdqOBEPOFd5j3/b3f+87v/X6/2beKlFKyhzGw0wJ2GoM7LeDfQhlTOubkZXlTrh27NgAA3AUoxHl8vY27sz7fjWvC7g7AEI2X3ArXhAFlVmFjqKdU8ot5vDWvq7F6SiX4PuiY18/rKLOdaafMKujn9eQ5/CMkv5hP9suezSZ72R/bNGtpHptiqGlshWvCIDVIH0xjjplUfq6wcGWBclBm7aU1tINaYiguC6rVKs4lB/G4aPXyJ1Dr4r1W5+rIizz+dz7Fo0UA3FUXdViNyRuxfWG0gHab1u6pO4b5zxkwSATaAQ173AZAP6QzvTiN+FJgP2onhuILARG4yy7hsRD1VrXh5S8g6uI9qnN1+N/45A7ncI45ANjjdsPPjdjeHDXRD+u9VW9gIwDdkqTfEqDWKl4dVuOTaxJe+amCv+pTGClQrVZxA7fVS8TmGdDkO70/jb/q467E6zuCWAP+7i24BRspPtyDu0kJDBBB+EuId9VDfCawSzZEkL8/nxg5HzkQgf2YTfpAGueC0+qlzwwQTwlSt6SYOjOFflrHu+o1yHoGGK8aKMcVlOMKdtnurX64x0tupQesfLuC8bIBQGpfivnCPNm7sw3hnwgm75tEu13DfMDk5AcnCa4HZNN1mz57gH6PTuV0Bes9i4WlBYyvDOafnsd82Gz0gIcKaHdosf0Rvbf6bfgKDFKDjJbBMeNT1e9t3VR4gup6FU3V8Fa9uEHVwPnQQTwvYqM+SwBA3acinhFYj1iMvDiC/b4dB6BeAuZRs0PDptiuJqgOqZtuKi4KiGDOnWPOnUvm3U9dQjNE3a/GfSOCYC0geyjOimAtgIhGlwfC32N7gKyWJXckh/+1H5P1EmArN5NeAejFNWGw2yltoPJjBf+KTzFfxHm2UffiomD6tWncz13McRNTNylfKqO/oGNNWYS/hXHgamBNWMk6622Lyg8V9Iye+J58cDIm6yUgLgi8wGvRYT9pdxfYTwn0+BkRw0DmrJzshuIbRYmBXL623MGlJlIyM5NJnktLJZmZyUgMJAYyM5ORpaVSh7/0E2mJgUxNpGThlYJc/3VdSinlCXEiWds+uoFRJG8hOYfkHSSjtHIOkteRnG3l2qHs1uuwMqbAczQy4EzbZWiGxj3h3P/1MvRmD+7d/lzs2gzYLuz5P0T2fAD+AXj47gHCmF1+AAAAAElFTkSuQmCC]]></data>
	</file>
	<file>
	  <filename>/templates/lytebox/images/pause_grey.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAEAAAAAUCAYAAAA9djs/AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABZ0RVh0Q3JlYXRpb24gVGltZQAwMi8xNi8wNw8tFYYAAAAfdEVYdFNvZnR3YXJlAE1hY3JvbWVkaWEgRmlyZXdvcmtzIDi1aNJ4AAAEV0lEQVRYheWYX0hTbxjHPxv7ky1QUaib5okxhSgZIqzGoCinZEwFuyrQm0HoVRchQuDFboZ40c0QuooiImGRCwrSXThRQUpF0UPeNBIJdtGfhcF5X6d2ETvtOLfW7/eD8Nf37jzP8z573u/zPc973pn29vb2+Ith/tMF/GlY/nQB/xTNzc0Ftjdv3vzStx+HlgCA48ePYzKZMJvNfPjwoWxfPg41AVarFbPZjMlkOtCXI6AULOFwWH+w2+0oioLX60VRlILg4eFhent7OXHihMH+4MED3r9/z9DQkMEeDoepq6ujt7cXAE3TiMfjrK+vAz+61NbWhqIoJJNJksnkgUXuz5u/yWIEWCyWoj5DnBCCqqoqmpqa+PLlC4uLi6ysrHD79m2qq6v1wMXFRb5+/crs7Czd3d2GJNvb2wghCpILIdje3tafHz16RCqVwufzAaCqKna7HYBsNosQgqamJqqqqkoWvZ+Ag7pctgKEEBw7dozLly8D4HQ6GRsb4/Xr17S2tuqB8/PzCCFYWlqivb2dioqK3ybg7du3uFwurl69CsClS5f0PDs7Owgh8Hg8uFyusgiw2WyYTKZ/9QqYhRBIKXWD3W5HCEE2m9Vtnz59QlVVPB4PmUyGlZUVQxIpZVEC8nM7HA5UVdXX55OYU8Du7u4vtv0TFosFq9WK1Wot6rNYSo85ixCCTCbD+vo6Hz9+JJFIIITg7NmzetDk5CRCCK5cucLa2hqvXr3C6/Xq/nIVcP36dUZHR4lGo9TX1xMMBmloaAB+KmBkZESPDwaDBIPBosXnFHBQl3Mz4JevgJSSd+/eEYlEgB9d6enp4eTJk3rQ1NQUZ86coaamBq/Xy/j4OBsbGzidTuBH9/I7nYOU0qCkhoYGIpEIjx8/ZmZmhtXVVUKhEH6/n52dHaSU+P1+amtrAXC73SWLLyXzUuQYCNA0zTCpT58+bQhIJpN8/vyZyspKVFWluroaTdN48eIFfX19+kY1TStIrmlaATFHjx4lFArR0tLC4OAgT548we/3k81m0TQNn89XUEPR4ktM+rJPASklNput6I8mEgmklMTjceLxuG6fnZ2lp6cHh8OBzWZDSkkqleLUqVMApFIpcrlz+PbtGw6HAwBFUXC73aytrQHoCvidGVDqFCibgIO6lEM6nWZhYYHOzk5u3ryp2ycnJ7l79y5zc3MEAgEuXLjA9PQ0AwMDdHV1sbW1RSKRQNM02tvb9XX37t0jnU7T2Nio5z537hyAroCJiQmWl5cNddy4cePA+krJvNQ3goEAKaVhUOXj6dOnSClpaWkx2AOBANFolFgsRiAQ4Pz589y5c4eHDx9y//59AFwuF7du3aKxsVFfd+TIETY3N1lYWMDhcHDx4kX6+/uBnwp4+fJlQR3FCCjV5XKPQdNhvQ43Nzdz7do1fZNjY2OGy1BHR4dOzrNnz/6fl6FYLFbU9/z587JyHFoF/Ff46/8Q+esJ+A78YvHUKzu/UAAAAABJRU5ErkJggg==]]></data>
	</file>
	<file>
	  <filename>/templates/lytebox/images/pause_red.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAEAAAAAUCAYAAAA9djs/AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABZ0RVh0Q3JlYXRpb24gVGltZQAwMi8xNi8wNw8tFYYAAAAfdEVYdFNvZnR3YXJlAE1hY3JvbWVkaWEgRmlyZXdvcmtzIDi1aNJ4AAADwklEQVRYheWY3WvkZBTGf6nTjrLCpOxQWL8my1JdFewUBPdmtxnwwpu1s+D9vGXBGy+aPyHzH6SCCIL2nav1rpmrvVjECYL1xjZVS6Wyu0FrWwoLGdfOtN1d6kWTTOYrnYpQah8IQ845Oe95nzznJBnl8PDwkHOModMu4LSROu0C/i1uK0qX7ctAzEm+TpxZAgDygMKRjH88gS+OM03AMK1NdiKV4ItjaElRCI8VVeV+scjjWq1n8Iqq0nTdLvu6rrPUQ3ZLisK6rkfnz3yf+8VitN5aPh+ttWWaxGuJH/0wDIwEvyfxxZFqAulcjjEh2Pc8tisVtqtV3n34kLSmRYE7UvJ3vc6GZTEuZVuSA6DZI3kzKCLEWrFI3XF4aXYWgEe2zZCqAvAkiB8rldrWTUKSAkJff/qOkGoAaU3jNdME4IKuszozw4aUXAlsAL9LSQPYsG0u+z6poHCAPaDRI3kDSMfOtxyH0akpLlsWAK+aZpTnSRCfFYLRmGqSkLTJgVugCezHDapKE3ga34jnsek4ZEslHtfrbNl2W5J9+isgnptcjk3HYTu4Pk7i0yD+2TEFx5HiiIReMg99xw25oV3gL99np1bjgZQsmya7wFixGAX9alnsAq+bJuRy/BLcwRB7wG6P5LuBL8SElBxkMnx76xbf6Do7sVlzEMTfKxS4oyjcURR+jimwF8IN9iMgPJKQagCNlRU2CwUARjIZrs3PM5rPR0GrUnJpepoLmsYrQrBcLvPIdbkYxCS1QJyAMV3nQ8/jB8Pgt0oFr1Dgxvw840JELTBeKvFiMAOyx7TCMEcS7zcDhhhgBjSB7MQE14O7+nLHomtSUq/X0TSNP2s1XtA0msCyZfF+MAyThuBBh21EVbkhJW8ZBl9PTvK9aTIuRNQCV4ToqqEfkjY5MAEN4FBV+y7qBsNvcW6Oxbm5yL5q21z3fdKqCqpKA9hxXcYCVey47pEqYn2+H8YD2Xyei1NT/OE4QGsInmQGJG0yleBri+saVDH4nse64/De7CwfxPrelZLqzAxrtk1eCN4Ugp+qVb7Sda4ZBnu+jysl+8CkYUTX3TUMfM9D0/Uo9xvT00DrMbgkJQ863kP0PrNgkMfgcU+BVCOBgO8siwbwjhBt9rwQLBgGNcsiLwRXi0U+Wljgnmlyt1wG4NLEBDdNEy2mrOdUlW3PY61c5vlMhrdLJW4GxIYKWKxUuupIIiBJAYMQoJzVz+HbisIntAj4lPaPoY9pEfA5/9OPoc8SfF8MmOPMKuC/wrn/Q+TcE/APuGhlNl9y9I4AAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/templates/lytebox/images/play_blue.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAEAAAAAUCAYAAAA9djs/AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABZ0RVh0Q3JlYXRpb24gVGltZQAwMi8xNi8wNw8tFYYAAAAfdEVYdFNvZnR3YXJlAE1hY3JvbWVkaWEgRmlyZXdvcmtzIDi1aNJ4AAAEJElEQVRYheWXbUyVZRjHf/dzzuFwIA7ydjqKQ5TJFHG0tDal6EMT59JmSXPDii0wzXKylmtztLXR0sack9qYY81Vy+YbyaIPYKUZOhBcLd7iRIC8iigQR41T931OH46cOOE5POAHO+u/3R+e67r+931d/+d6rj238Hg8Hv7H0B50Ag8aIS/AviMtXB36Y878kBegvnWE1JwKTpzrnxM/5AUwaALlEeQWfUdRedus+boEyCio963M3Y0UfuSgsX3c588vaSOjoF7XgZm7G2nvveNnc95RZO5uJL+kTZd9KoQAg9FMuHU++482kv1mra48JqFLACkltmgDr26cz1MZ0ZxtHCZvfxP9N1wAKKWQUs64z5na64w5XXxS7d+uUREGdmxaQF3LCGdqr/vs+491MuZ0sXdrUuACNIGmCayxdmLsKZy73EP6SzX0DU/oKU2/APZYE69vTuL9gqUUv5KClJKKC4OAfgFOfz+IlJKay9cZv+Mf/3L2AmzzjBw+1QVA//AEp88PsGlNHMuSIgPuKYRA0zTCTEYessZiX7yS3/qdpG+roq5lbMac9AmgFEop33NUhAGpFG639xdCKYWc4r8X+oYnuNR8k2czbYw6XZxtGJ4Ws+/FJfQM3ebwqS72lrViMQveeD45eAFCoAmB2WTEbDISEW4hcdFyPJqFrJ1VfPnDteD8oN67kFIy4nRR1zLCyfMDHDzegZSSdavjAX0d8HFVN1JK9uQk83CMifKq7mkx61YnsDo1ivKvurjYdIO89YksTAgPXoAmEJogLMzgW5YIC0kpadgWLCbn7Wr2lDYH5s9cvleApo5RthTVUXj4J7oHnJS8lkZachSgT4Avvunh6UfjWJhgYUuWnaaOUVq6xqfFFb6whNHxCSxhkP9M4G9/EuJuB5hMRr9lMAjcSoLHK1IgGGc8AVBSsWKxleLt6QCsXRnn71dulAz8CRz/tpexcReJ8eFcarrJwoRwlFQcqeyktPARv9g16XEoqVieNA9rpGnG3CaHoNlk8NncSvGro5m/XLepPLiBjWttAfm6BJBSEhmuTSt8EjN1wOfV3vYvq3BQVuHw2atq+yjevoLofxUqpfSbOcEg8M6BMJO3lFvO33G0/UyM1Uz9Z5uZH2cOytctQLCEJgU48GmLn/2JDBtJ9ggu/HiNnc8t5cCuf972sZpudpU08PXFfnKzk2d13lRomobQBEajxtBgHx3trTy5ahFnD2Xq4usUQKGUO6BfKTdSKt472uRn35eXztitP5FSkZu9yM+Xm53MW6VX+PDEL/cQIPh5UzE5A652Oujv7WLPtlV8sGOZLi6ACPXr8NZ3r1B5rp151kiOvpPJhsfjZ8XX1QH/aQhBarKNmkNZ2GPDZk8P9Q6obhhh/WOxc+aHvAD3i5C/Dt8v/gYj07joKVyTbwAAAABJRU5ErkJggg==]]></data>
	</file>
	<file>
	  <filename>/templates/lytebox/images/play_gold.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAEAAAAAUCAYAAAA9djs/AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABZ0RVh0Q3JlYXRpb24gVGltZQAwMi8xNi8wNw8tFYYAAAAfdEVYdFNvZnR3YXJlAE1hY3JvbWVkaWEgRmlyZXdvcmtzIDi1aNJ4AAADyklEQVRYheWXMWwTVxjHf+f4cBIlxh6CqUTsi9QmJgOxgoIEQ+tEsliCmqVSO2HUThloVgZUFxg6MJgBlgwYhooqCFwECCFBbamERsQOGJGAFRk7kiMESuQQW8F3CWY4nNg1dl5goFb/0hvue9937/v/3/+900mFQqHA/xiGz93A50bdC3Dt2jEWF1MfXV/3AqRS/3D8+JdMTf3xUfV1L4AkScAqo6M/cP36sS3XCwkwNiatj2DQwr17Q7x6FVqfD4XcjI1JQgsGgxYymYdlMU3LEAxaCIXcQvFSSBIYjWA2F7hx4zfOnu0X6qMIIQFUFWTZQVfXL9hsQySTf3L7dj+5XPJ9o3rOZkgkAuRyS8zM+MvismzB6fSRTodJJALr8cnJEXK5JXp6/FSDJIHBAFYr2GwwPR3i1KmvyGTmRKiJC2AyKezZ42P//gD79p1HVSEe15tdXRUT4NmzAKoKiUQQVc2UzTmdI2zb5iAS8QGQzSZ5+vQCdvthrFZXdQIGXQRZBrMZFAUWFmY5edJJMvn3pj0JC6BpG8+ybEFVYW1NfxZxwPJykrm5MIpymGx2iefPgxU5fX1+FhdTTE76uHvXC2zH5fLVfG/RAbKsj8ZGsNvBaFzh9Omvefy49uUoLEAulyGdDjEzE+D+fR+qCg7HECDmgKkpP6oKe/f6MJkcRKOVtlaUIdraviES8ZNKhenuHqG1ValNoMQBxdHUBB0dsHNngXPnvufKlZ+q12/KHp3c/PwjLl3q5+bNIywsJBkYOE9bm25NEQfEYgHs9m8xmxU6O73Mzz/i5cuHFXl9fT6y2SUkaTsu14hIe2UOKI6GBnj7FgoFMBiqX9BGkQXyedixowePR981h8NdNq9pek41xGIBXr9eorlZIZUK0dKikM/DxISfQ4cCZbnt7W7yebDZXJhMlk17K3VAEWtrMDsLKytGjh79ne7u76rWCwmgaWA0WiqIF7G6Wn5H/BvRaABNg/HxM4yPn1mPP3kSxOPJ0NhYTlTT9HeKQJI2PoUAy8sQj0Nzs4UTJ2KYze0164UdUItg0QF37vjK4h0dbqxWhXg8zIEDPzM4uHHuo9EAly8fYXo6SG+vd0vrlaJ4CTY0wIsX+s7v3t3L8HBEqF7YAbV2pOiAW7d+LYt7PPDmTQZNo4Jkb6+Xq1dHCIf9FXNbcUDxCCSTkE5LHDz4I4ODo2LFgFTvv8MXLw7w4MFftLQ04fVeoKur+nn/EIQc8N9GgV27vmB4eILW1trn/UOoewfE42N0dm5t10tR9wJ8Kur+d/hT8Q4KGoLMFNqDmgAAAABJRU5ErkJggg==]]></data>
	</file>
	<file>
	  <filename>/templates/lytebox/images/play_green.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAEAAAAAUCAYAAAA9djs/AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABZ0RVh0Q3JlYXRpb24gVGltZQAwMi8xNi8wNw8tFYYAAAAfdEVYdFNvZnR3YXJlAE1hY3JvbWVkaWEgRmlyZXdvcmtzIDi1aNJ4AAADnklEQVRYheWYT2gcZRjGf7OJia2NGRtBK8QdaQKtlWTNxR40mQWDiJQsYrABYSc0B8FDR28RSqeUQA8WJvVQIdZ8FQkkPTiBImpBZyVqljZ1E0ghEHG3UCuI7YwoMePKeNhNsuu6O5P2UBcfmMv75/ve95nnfWFG8n3f53+MyL0u4F6j7gkYfW+U3E+5O86vewLmr83T8XIH019M31F+3RMgRSTyfp6ht4cYnRjddn4oAqRj0uYjj8kkphLYP9ibfvWcinRMCnWhPCaTuZkpszl/OMhjMuo5NZS9ooMm8Nt8Tr1/ivib8VB1lKYHYx2iO6Mc7z1OoiPBbGaW+Nk42dvZgv/PQkwQxBWB67qYX5lldvl+GaPXILWSQlwRm3Z9Vi/Ev2hSFRGgAXgUUMBO23S+1sn1n6+Hai0cAR4oLQpGv4F4VTD5yiR4INLFYvOFmCCIeQEeWN9ZOGtOmU9/Tie6K4rxiQFA9laW89+eJxlLEnssVv1QqdhFM9AGHIDVG6vsG9rH3LW5wJpCK6C0QblZLtjyRYNHoAKyv2RJLadIPp3EdV2sjFURYw6Y5G7mMC4aaEKjNdKK8YJR++AGtghoBnYBT8Ja0xq9I71Mz9VejqEV4PzqYK/YiK8FxscGeJDoShT8IRRgfm6CB8ZLBtGWKOZnlbJOdCfoe6IP81OT1HIKvU9HaVNqH1yqgI2nBegCf6/P4bcOM/LuSNX00ApYXF0kfjLO8Nlhsj9mmUxOEnu8KM0QO0B8KRh4agDlYQXtoMbi6iKZXKYizjhk4DourQ2t6P16cG0RKgloBhqBvwohUkP1Bd0YfAOwDt1KN6ZWeGvqAbXcHzACwha4t10UWcFetlF2K7AO5kUT8YYoi1X3q7AOsb0x5J1ycG2lBGwgDyxA4++NTJ2ZYvDgYNX0cAR4IDfJlY2XXlhjBMQlAR6MW+OMW+ObdmvOwtEc5Af+0ajH1n4JQukIANwC0iA/KLP04RLtu9trpodWQM0ZLyrA+MgoM6tdKsojCqmFFEcTRzFf35p7cUkwfHoY6xsLrV/b3n2l2FDAfcD3wFXoeaaHhXcWQqWHVkDNN1JUwIkPTpTbk+D85oAH2vNamUvr19DP6JgzZiUB21HABgFLIK1IHEkeYWJkImQy4Nc54ifjPs/i7zi0w5+5PLPt/HAK+A/Dx2dP5x7Sp9O0P1R73v8Nku/X9w+RC1cvMNhTfcsHoe4JuFvU/efw3eJvwJswMInEJWIAAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/templates/lytebox/images/play_grey.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAEAAAAAUCAYAAAA9djs/AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABZ0RVh0Q3JlYXRpb24gVGltZQAwMi8xNi8wNw8tFYYAAAAfdEVYdFNvZnR3YXJlAE1hY3JvbWVkaWEgRmlyZXdvcmtzIDi1aNJ4AAAD70lEQVRYheWYTSh0bxjGf3MYw5iIWWChmVA0Gdkgo1n5KCJipTQ2StZWNpSNbAyyQkmTnQULJArJMMlHPiYsiBJSGIlzzmDexdtMJq+Zw7t4/9P/qlPn3M99Pee+r3Od5+kclc/n8/E/hvCvC/jXiHgBhoeHubm5+TE/4gU4PDykvr6epaWlH/EjXgBBEHh/f6ejo4PR0dFv86OVJHV3dwfONRoNRqORoqIijEYjAOPj45yfn9PZ2Rl2rt7eXpqbm0lNTQ3ERFFkYGCA1NRUmpubw8Y/QqVSodFo0Ol0jIyM4Ha76evrU9IWoNABkiQRFxdHSUkJWVlZ7O3tMTIywv39PQBerxdJksLOs729zePjI2tra0Hx2NhYrFYrJycnbG9vB+IzMzM8Pj5SUVHxdQOCgCAIpKSkYDQa2djYoKmpidvbWyWtKRdAp9NRWlpKQ0MDdXV1SJLE5uYmoFwAl8uFJEns7Ozw8vISNGaxWNBqtczNzQFwd3fH+vo6ZrOZtLS0L+dUqVSoVCrUajVJSUmYTCYuLy9pbGzE7XaHrUmxALIsB641Gg2SJPH6+gqALMthBbi7u8PtdpOfn4/H42Fvb+9TTk1NDdfX18zOzuJwOBAEIeTTh98CCIKAWq1GrVYTFxdHdnY20dHRtLS0sLq6GpKvWACPx8Px8TFOp5OpqSkkScJsNgPKHLCwsIAkSVRWVqLT6Zifn/+Uk5eXh8FgYH5+nsPDQ6xWK8nJyaEbEISAA/yHVqvFZDJhMBhob29ncHDwa76C/pFlmdPTU3p6ehgeHubq6gqbzUZ6ejoAr6+vQQ75E5aXl8nNzUWv11NUVMTp6SkXFxef8qqrq/F4PERFRVFaWhq2to+vwMdDEATe3t5+Nyl83aaiXUAURQwGQ2AlNplMQeOyLCOK4pf8lZUV7u/vSUxMxO12k5SUhCiKzMzM0NbWFpSbk5ODKIpkZGSg1WrD1uZfBGNiYgKxt7c39vf3eX5+ZmBggOLi4i/5igSQZZmYmJhPjfvh9XpDOmBxcRFZlpmenmZ6ejoQX1tbw2azER8f/+l+Xq9XSWkAgTUA4OHhgd3dXRISEnA4HOj1+pBcxQ4I1aDfARMTE0Fxs9lMSkoKW1tb1NbW0traGhhbWFjAbrfjdDopLy//1v0+wr8GREVFcXFxwcHBAYWFhdjtdkV8xQ4I9UT8DhgbGwuK22w2np6ekGWZsrKyoLHy8nKGhoaYnJz8JMB3HODfBY6Ojjg7O8NmswUJHRa+CEdXV5fPYrH4qqqqfC6X69t8RQ74ryMzM5P+/v6wW+afoPL5IvuHyObmJgUFBT/mR7wAf4uI/xz+W/wCOnmf4nT7HYQAAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/templates/lytebox/images/play_red.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAEAAAAAUCAYAAAA9djs/AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABZ0RVh0Q3JlYXRpb24gVGltZQAwMi8xNi8wNw8tFYYAAAAfdEVYdFNvZnR3YXJlAE1hY3JvbWVkaWEgRmlyZXdvcmtzIDi1aNJ4AAADjElEQVRYheWYT2gUZxjGf7Omlvwp+YRYjJruWIzGgk1qFS+iu7TgqbgXQU/ZoBRKD87BS0rBUS+5ObkUioeMl4B6cCPSenMGhCitaWapElP/TKKmJdU6Q2Sm0dXxkNm4uzE7Ez3YpQ98h33nffZ732ef94VZKQiCgP8xEu+6gHeNmhfgp95eHk9MvDG/5gWwr1zh+/XryZ8+/Ub8mhcgIUkEhQI/7N/Pxd7epfPjJI1I0vyxhOB2JsOMYcw/H0+lGJGkWBdaQuCPjpbFnjsOlhCMp1Kx4qWQgHpgbRBwrq+PH9PpWHUUEUsAH3iRTNJy5AgNmQx/DQ2RT6eZtW0AnoY5UZjWdZ64Lvc1rSy+TAhWqip/mybTuj4fv6MoPHFd1lTkVzaQANqAT4C8YdDX3o47ORmntXgCeACyzEeqSruus25gAA+4Hxb7bzEnApO6PsfL5Sg4Ttmz1YrCi2SSm6oKgG/b2KdOIbq7aezqWvQ7pfC8B6wEtgEPb93iWEcHk5cvR9YU2wGzpSQh8IFC+HmWaAd4ts2UadLS3c2M6/JnLrcgp13TeDwxwU1VZSSbpdDczLpQkGoNJIDl4WkCPgMafJ++nTu5EbEcYztgxnGYNgzu6jqjqooHfJjJAHMCRDlgTNPwgA2qipRMcv01tl6VydC0axe/axr3TJM2RaFBliPrSzDngOJpArYCHUHAiX37OH/wYFVuJDxgyrK4kE5zqaeHh7bN5wMDrAitGWcEbug6LXv20CjLrM1mmbIs/qlYhgCbVBXXdSk0N7NBUSJrS/BqBEqPBDwr5lRZ0HWRNzBn75bOTnaEv9qaiq0cNQJjuo7rusiyzAPDoF6W8YHfNI0vSpYeQGsqhQ+s6OpiuRCRtUm8ckARBeAXYKaujsODg2zcu3dRfiwBPCAQYkHjRUSNwGi4/Ib7+xnu75+PX8/l2OE4vF/RqEf5zqmG0iUI8AgYBhqF4Hg+zwdtbVX5sR1QraCiA8yKhZVMpRCyzLhpsv3QIXaXzL2l6wz19DCWy9GZzS7pvlIUR2AZcBv4Ffh0yxa+vnYtFj+2A6IE8ICfjx4ti38J+I6DB2yuaLIzm+WcomBo2gIBluqABGABY5LEVwcOsPvkyZhsIKhxDKbTwbcQfFdfH/xx5syS+bEc8F+GFATIra18c/UqjRHzvgi/tv8QuXP2LB9X2fJRqHkB3hY1/zr8tngJ3kU5hNPkqc8AAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/templates/lytebox/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>/templates/lytebox/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>/templates/lytebox/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>/templates/lytebox/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>/templates/lytebox/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>/templates/lytebox/lytebox.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[I2xiT3ZlcmxheSB7IHBvc2l0aW9uOiBmaXhlZDsgdG9wOiAwOyBsZWZ0OiAwOyB6LWluZGV4OiA5OTk5ODsgd2lkdGg6IDEwMCU7IGhlaWdodDogNTAwcHg7IH0NCgkjbGJPdmVybGF5LmdyZXkgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwOyB9DQoJI2xiT3ZlcmxheS5yZWQgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjMzMwMDAwOyB9DQoJI2xiT3ZlcmxheS5ncmVlbiB7IGJhY2tncm91bmQtY29sb3I6ICMwMDMzMDA7IH0NCgkjbGJPdmVybGF5LmJsdWUgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjMDExRDUwOyB9DQoJI2xiT3ZlcmxheS5nb2xkIHsgYmFja2dyb3VuZC1jb2xvcjogIzY2NjYwMDsgfQ0KDQojbGJNYWluIHsgcG9zaXRpb246IGFic29sdXRlOyBsZWZ0OiAwOyB3aWR0aDogMTAwJTsgei1pbmRleDogOTk5OTk7IHRleHQtYWxpZ246IGNlbnRlcjsgbGluZS1oZWlnaHQ6IDA7IH0NCiNsYk1haW4gYSBpbWcgeyBib3JkZXI6IG5vbmU7IH0NCg0KI2xiT3V0ZXJDb250YWluZXIgeyBwb3NpdGlvbjogcmVsYXRpdmU7IGJhY2tncm91bmQtY29sb3I6ICNmZmY7IHdpZHRoOiAyMDBweDsgaGVpZ2h0OiAyMDBweDsgbWFyZ2luOiAwIGF1dG87IH0NCgkjbGJPdXRlckNvbnRhaW5lci5ncmV5IHsgYm9yZGVyOiAzcHggc29saWQgIzg4ODg4ODsgfQ0KCSNsYk91dGVyQ29udGFpbmVyLnJlZCB7IGJvcmRlcjogM3B4IHNvbGlkICNERDAwMDA7IH0NCgkjbGJPdXRlckNvbnRhaW5lci5ncmVlbiB7IGJvcmRlcjogM3B4IHNvbGlkICMwMEIwMDA7IH0NCgkjbGJPdXRlckNvbnRhaW5lci5ibHVlIHsgYm9yZGVyOiAzcHggc29saWQgIzVGODlEODsgfQ0KCSNsYk91dGVyQ29udGFpbmVyLmdvbGQgeyBib3JkZXI6IDNweCBzb2xpZCAjQjBCMDAwOyB9DQoNCiNsYkRldGFpbHNDb250YWluZXIgewlmb250OiAxMHB4IFZlcmRhbmEsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsgd2lkdGg6IDEwMCU7IGxpbmUtaGVpZ2h0OiAxLjRlbTsJb3ZlcmZsb3c6IGF1dG87IG1hcmdpbjogMCBhdXRvOyB9DQoJI2xiRGV0YWlsc0NvbnRhaW5lci5ncmV5IHsgYm9yZGVyOiAzcHggc29saWQgIzg4ODg4ODsgYm9yZGVyLXRvcDogbm9uZTsgfQ0KCSNsYkRldGFpbHNDb250YWluZXIucmVkIHsgYm9yZGVyOiAzcHggc29saWQgI0REMDAwMDsgYm9yZGVyLXRvcDogbm9uZTsgfQ0KCSNsYkRldGFpbHNDb250YWluZXIuZ3JlZW4geyBib3JkZXI6IDNweCBzb2xpZCAjMDBCMDAwOyBib3JkZXItdG9wOiBub25lOyB9DQoJI2xiRGV0YWlsc0NvbnRhaW5lci5ibHVlIHsgYm9yZGVyOiAzcHggc29saWQgIzVGODlEODsgYm9yZGVyLXRvcDogbm9uZTsgfQ0KCSNsYkRldGFpbHNDb250YWluZXIuZ29sZCB7IGJvcmRlcjogM3B4IHNvbGlkICNCMEIwMDA7IGJvcmRlci10b3A6IG5vbmU7IH0NCg0KI2xiSW1hZ2VDb250YWluZXIsICNsYklmcmFtZUNvbnRhaW5lciB7IHBhZGRpbmc6IDEwcHg7IH0NCiNsYkxvYWRpbmcgew0KCXBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiA0NSU7IGxlZnQ6IDAlOyBoZWlnaHQ6IDMycHg7IHdpZHRoOiAxMDAlOyB0ZXh0LWFsaWduOiBjZW50ZXI7IGxpbmUtaGVpZ2h0OiAwOyBiYWNrZ3JvdW5kOiB1cmwoaW1hZ2VzL2xvYWRpbmcuZ2lmKSBjZW50ZXIgbm8tcmVwZWF0Ow0KfQ0KDQojbGJIb3Zlck5hdiB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAwOyBsZWZ0OiAwOyBoZWlnaHQ6IDEwMCU7IHdpZHRoOiAxMDAlOyB6LWluZGV4OiAxMDsgfQ0KI2xiSW1hZ2VDb250YWluZXI+I2xiSG92ZXJOYXYgeyBsZWZ0OiAwOyB9DQojbGJIb3Zlck5hdiBhIHsgb3V0bGluZTogbm9uZTsgfQ0KDQojbGJQcmV2IHsgd2lkdGg6IDQ5JTsgaGVpZ2h0OiAxMDAlOyBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCB1cmwoaW1hZ2VzL2JsYW5rLmdpZikgbm8tcmVwZWF0OyBkaXNwbGF5OiBibG9jazsgbGVmdDogMDsgZmxvYXQ6IGxlZnQ7IH0NCgkjbGJQcmV2LmdyZXk6aG92ZXIsICNsYlByZXYuZ3JleTp2aXNpdGVkOmhvdmVyIHsgYmFja2dyb3VuZDogdXJsKGltYWdlcy9wcmV2X2dyZXkuZ2lmKSBsZWZ0IDE1JSBuby1yZXBlYXQ7IH0NCgkjbGJQcmV2LnJlZDpob3ZlciwgI2xiUHJldi5yZWQ6dmlzaXRlZDpob3ZlciB7IGJhY2tncm91bmQ6IHVybChpbWFnZXMvcHJldl9yZWQuZ2lmKSBsZWZ0IDE1JSBuby1yZXBlYXQ7IH0NCgkjbGJQcmV2LmdyZWVuOmhvdmVyLCAjbGJQcmV2LmdyZWVuOnZpc2l0ZWQ6aG92ZXIgeyBiYWNrZ3JvdW5kOiB1cmwoaW1hZ2VzL3ByZXZfZ3JlZW4uZ2lmKSBsZWZ0IDE1JSBuby1yZXBlYXQ7IH0NCgkjbGJQcmV2LmJsdWU6aG92ZXIsICNsYlByZXYuYmx1ZTp2aXNpdGVkOmhvdmVyIHsgYmFja2dyb3VuZDogdXJsKGltYWdlcy9wcmV2X2JsdWUuZ2lmKSBsZWZ0IDE1JSBuby1yZXBlYXQ7IH0NCgkjbGJQcmV2LmdvbGQ6aG92ZXIsICNsYlByZXYuZ29sZDp2aXNpdGVkOmhvdmVyIHsgYmFja2dyb3VuZDogdXJsKGltYWdlcy9wcmV2X2dvbGQuZ2lmKSBsZWZ0IDE1JSBuby1yZXBlYXQ7IH0NCgkNCiNsYk5leHQgeyB3aWR0aDogNDklOyBoZWlnaHQ6IDEwMCU7IGJhY2tncm91bmQ6IHRyYW5zcGFyZW50IHVybChpbWFnZXMvYmxhbmsuZ2lmKSBuby1yZXBlYXQ7IGRpc3BsYXk6IGJsb2NrOyByaWdodDogMDsgZmxvYXQ6IHJpZ2h0OyB9DQoJI2xiTmV4dC5ncmV5OmhvdmVyLCAjbGJOZXh0LmdyZXk6dmlzaXRlZDpob3ZlciB7IGJhY2tncm91bmQ6IHVybChpbWFnZXMvbmV4dF9ncmV5LmdpZikgcmlnaHQgMTUlIG5vLXJlcGVhdDsgfQ0KCSNsYk5leHQucmVkOmhvdmVyLCAjbGJOZXh0LnJlZDp2aXNpdGVkOmhvdmVyIHsgYmFja2dyb3VuZDogdXJsKGltYWdlcy9uZXh0X3JlZC5naWYpIHJpZ2h0IDE1JSBuby1yZXBlYXQ7IH0NCgkjbGJOZXh0LmdyZWVuOmhvdmVyLCAjbGJOZXh0LmdyZWVuOnZpc2l0ZWQ6aG92ZXIgeyBiYWNrZ3JvdW5kOiB1cmwoaW1hZ2VzL25leHRfZ3JlZW4uZ2lmKSByaWdodCAxNSUgbm8tcmVwZWF0OyB9DQoJI2xiTmV4dC5ibHVlOmhvdmVyLCAjbGJOZXh0LmJsdWU6dmlzaXRlZDpob3ZlciB7IGJhY2tncm91bmQ6IHVybChpbWFnZXMvbmV4dF9ibHVlLmdpZikgcmlnaHQgMTUlIG5vLXJlcGVhdDsgfQ0KCSNsYk5leHQuZ29sZDpob3ZlciwgI2xiTmV4dC5nb2xkOnZpc2l0ZWQ6aG92ZXIgeyBiYWNrZ3JvdW5kOiB1cmwoaW1hZ2VzL25leHRfZ29sZC5naWYpIHJpZ2h0IDE1JSBuby1yZXBlYXQ7IH0NCg0KI2xiUHJldjIsICNsYk5leHQyIHsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyBmb250LXdlaWdodDogYm9sZDsgfQ0KCSNsYlByZXYyLmdyZXksICNsYk5leHQyLmdyZXksICNsYlNwYWNlci5ncmV5IHsgY29sb3I6ICMzMzMzMzM7IH0NCgkjbGJQcmV2Mi5yZWQsICNsYk5leHQyLnJlZCwgI2xiU3BhY2VyLnJlZCB7IGNvbG9yOiAjNjIwMDAwOyB9DQoJI2xiUHJldjIuZ3JlZW4sICNsYk5leHQyLmdyZWVuLCAjbGJTcGFjZXIuZ3JlZW4geyBjb2xvcjogIzAwMzMwMDsgfQ0KCSNsYlByZXYyLmJsdWUsICNsYk5leHQyLmJsdWUsICNsYlNwYWNlci5ibHVlIHsgY29sb3I6ICMwMTM3OUU7IH0NCgkjbGJQcmV2Mi5nb2xkLCAjbGJOZXh0Mi5nb2xkLCAjbGJTcGFjZXIuZ29sZCB7IGNvbG9yOiAjNjY2NjAwOyB9DQoJDQojbGJQcmV2Ml9PZmYsICNsYk5leHQyX09mZiB7IGZvbnQtd2VpZ2h0OiBib2xkOyB9DQoJI2xiUHJldjJfT2ZmLmdyZXksICNsYk5leHQyX09mZi5ncmV5IHsgY29sb3I6ICNDQ0NDQ0M7IH0NCgkjbGJQcmV2Ml9PZmYucmVkLCAjbGJOZXh0Ml9PZmYucmVkIHsgY29sb3I6ICNGRkNDQ0M7IH0NCgkjbGJQcmV2Ml9PZmYuZ3JlZW4sICNsYk5leHQyX09mZi5ncmVlbiB7IGNvbG9yOiAjODJGRjgyOyB9DQoJI2xiUHJldjJfT2ZmLmJsdWUsICNsYk5leHQyX09mZi5ibHVlIHsgY29sb3I6ICNCN0NBRUU7IH0NCgkjbGJQcmV2Ml9PZmYuZ29sZCwgI2xiTmV4dDJfT2ZmLmdvbGQgeyBjb2xvcjogI0UxRTEwMDsgfQ0KCQ0KI2xiRGV0YWlsc0RhdGEgeyBwYWRkaW5nOiAwIDEwcHg7IH0NCgkjbGJEZXRhaWxzRGF0YS5ncmV5IHsgY29sb3I6ICMzMzMzMzM7IH0NCgkjbGJEZXRhaWxzRGF0YS5yZWQgeyBjb2xvcjogIzYyMDAwMDsgfQ0KCSNsYkRldGFpbHNEYXRhLmdyZWVuIHsgY29sb3I6ICMwMDMzMDA7IH0NCgkjbGJEZXRhaWxzRGF0YS5ibHVlIHsgY29sb3I6ICMwMTM3OUU7IH0NCgkjbGJEZXRhaWxzRGF0YS5nb2xkIHsgY29sb3I6ICM2NjY2MDA7IH0NCg0KI2xiRGV0YWlscyB7IHdpZHRoOiA2MCU7IGZsb2F0OiBsZWZ0OyB0ZXh0LWFsaWduOiBsZWZ0OyB9DQojbGJDYXB0aW9uIHsgZGlzcGxheTogYmxvY2s7IGZvbnQtd2VpZ2h0OiBib2xkOyB9DQojbGJOdW1iZXJEaXNwbGF5IHsgZmxvYXQ6IGxlZnQ7IGRpc3BsYXk6IGJsb2NrOyBwYWRkaW5nLWJvdHRvbTogMS4wZW07IH0NCiNsYk5hdkRpc3BsYXkgeyBmbG9hdDogbGVmdDsgZGlzcGxheTogYmxvY2s7IHBhZGRpbmctYm90dG9tOiAxLjBlbTsgfQ0KDQojbGJDbG9zZSB7IHdpZHRoOiA2NHB4OyBoZWlnaHQ6IDI4cHg7IGZsb2F0OiByaWdodDsgbWFyZ2luLWJvdHRvbTogMXB4OyB9DQoJI2xiQ2xvc2UuZ3JleSB7IGJhY2tncm91bmQ6IHVybChpbWFnZXMvY2xvc2VfZ3JleS5wbmcpIG5vLXJlcGVhdDsgfQ0KCSNsYkNsb3NlLnJlZCB7IGJhY2tncm91bmQ6IHVybChpbWFnZXMvY2xvc2VfcmVkLnBuZykgbm8tcmVwZWF0OyB9DQoJI2xiQ2xvc2UuZ3JlZW4geyBiYWNrZ3JvdW5kOiB1cmwoaW1hZ2VzL2Nsb3NlX2dyZWVuLnBuZykgbm8tcmVwZWF0OyB9DQoJI2xiQ2xvc2UuYmx1ZSB7IGJhY2tncm91bmQ6IHVybChpbWFnZXMvY2xvc2VfYmx1ZS5wbmcpIG5vLXJlcGVhdDsgfQ0KCSNsYkNsb3NlLmdvbGQgeyBiYWNrZ3JvdW5kOiB1cmwoaW1hZ2VzL2Nsb3NlX2dvbGQucG5nKSBuby1yZXBlYXQ7IH0NCg0KI2xiUGxheSB7IHdpZHRoOiA2NHB4OyBoZWlnaHQ6IDI4cHg7IGZsb2F0OiByaWdodDsgbWFyZ2luLWJvdHRvbTogMXB4OyB9DQoJI2xiUGxheS5ncmV5IHsgYmFja2dyb3VuZDogdXJsKGltYWdlcy9wbGF5X2dyZXkucG5nKSBuby1yZXBlYXQ7IH0NCgkjbGJQbGF5LnJlZCB7IGJhY2tncm91bmQ6IHVybChpbWFnZXMvcGxheV9yZWQucG5nKSBuby1yZXBlYXQ7IH0NCgkjbGJQbGF5LmdyZWVuIHsgYmFja2dyb3VuZDogdXJsKGltYWdlcy9wbGF5X2dyZWVuLnBuZykgbm8tcmVwZWF0OyB9DQoJI2xiUGxheS5ibHVlIHsgYmFja2dyb3VuZDogdXJsKGltYWdlcy9wbGF5X2JsdWUucG5nKSBuby1yZXBlYXQ7IH0NCgkjbGJQbGF5LmdvbGQgeyBiYWNrZ3JvdW5kOiB1cmwoaW1hZ2VzL3BsYXlfZ29sZC5wbmcpIG5vLXJlcGVhdDsgfQ0KCQ0KI2xiUGF1c2UgeyB3aWR0aDogNjRweDsgaGVpZ2h0OiAyOHB4OyBmbG9hdDogcmlnaHQ7IG1hcmdpbi1ib3R0b206IDFweDsgfQ0KCSNsYlBhdXNlLmdyZXkgeyBiYWNrZ3JvdW5kOiB1cmwoaW1hZ2VzL3BhdXNlX2dyZXkucG5nKSBuby1yZXBlYXQ7IH0NCgkjbGJQYXVzZS5yZWQgeyBiYWNrZ3JvdW5kOiB1cmwoaW1hZ2VzL3BhdXNlX3JlZC5wbmcpIG5vLXJlcGVhdDsgfQ0KCSNsYlBhdXNlLmdyZWVuIHsgYmFja2dyb3VuZDogdXJsKGltYWdlcy9wYXVzZV9ncmVlbi5wbmcpIG5vLXJlcGVhdDsgfQ0KCSNsYlBhdXNlLmJsdWUgeyBiYWNrZ3JvdW5kOiB1cmwoaW1hZ2VzL3BhdXNlX2JsdWUucG5nKSBuby1yZXBlYXQ7IH0NCgkjbGJQYXVzZS5nb2xkIHsgYmFja2dyb3VuZDogdXJsKGltYWdlcy9wYXVzZV9nb2xkLnBuZykgbm8tcmVwZWF0OyB9]]></data>
	</file>
	<file>
	  <filename>/templates/lytebox/lytebox.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi8vCUx5dGVCb3ggdjMuMjINCi8vDQovLwkgQXV0aG9yOiBNYXJrdXMgRi4gSGF5DQovLyAgV2Vic2l0ZTogaHR0cDovL3d3dy5kb2xlbS5jb20vbHl0ZWJveA0KLy8JICAgRGF0ZTogT2N0b2JlciAyLCAyMDA3DQovLwlMaWNlbnNlOiBDcmVhdGl2ZSBDb21tb25zIEF0dHJpYnV0aW9uIDMuMCBMaWNlbnNlIChodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9saWNlbnNlcy9ieS8zLjAvKQ0KLy8gQnJvd3NlcnM6IFRlc3RlZCBzdWNjZXNzZnVsbHkgb24gV2luWFAgd2l0aCB0aGUgZm9sbG93aW5nIGJyb3dzZXJzICh1c2luZyBubyBET0NUWVBFIGFuZCBTdHJpY3QvVHJhbnNpdGlvbmFsL0xvb3NlIERPQ1RZUEVTKToNCi8vCQkJCSogRmlyZWZveDogMi4wLjAuNywgMS41LjAuMTINCi8vCQkJCSogSW50ZXJuZXQgRXhwbG9yZXI6IDcuMCwgNi4wIFNQMiwgNS41IFNQMg0KLy8JCQkJKiBPcGVyYTogOS4yMw0KLy8NCi8vIFJlbGVhc2VzOiBGb3IgdXAtdG8tZGF0ZSBhbmQgY29tcGxldGUgcmVsZWFzZSBpbmZvcm1hdGlvbiwgdmlzaXQgaHR0cDovL3d3dy5kb2xlbS5jb20vZm9ydW0vc2hvd3RocmVhZC5waHA/dGlkPTYyDQovLw0KLy8JCQkJKiBpZTggaGFjayBodHRwOi8vbmVkZXJ2ZWxkLndvcmRwcmVzcy5jb20vMjAwOS8wNy8wMi9seXRlYm94LWFuZC1pbnRlcm5ldC1leHBsb3Jlci04Lw0KLy8JCQkJKiB2My4yMiAoMTAvMDIvMDcpDQovLwkJCQkqIHYzLjIxICgwOS8zMC8wNykNCi8vCQkJCSogdjMuMjAgKDA3LzEyLzA3KQ0KLy8JCQkJKiB2My4xMCAoMDUvMjgvMDcpDQovLwkJCQkqIHYzLjAwICgwNS8xNS8wNykNCi8vCQkJCSogdjIuMDIgKDExLzEzLzA2KQ0KLy8NCi8vICAgQ3JlZGl0OiBMeXRlQm94IHdhcyBvcmlnaW5hbGx5IGRlcml2ZWQgZnJvbSB0aGUgTGlnaHRib3ggY2xhc3MgKHYyLjAyKSB0aGF0IHdhcyB3cml0dGVuIGJ5IExva2VzaCBEaGFrYXIuIEZvciBtb3JlDQovLwkJCSBpbmZvcm1hdGlvbiBwbGVhc2UgdmlzaXQgaHR0cDovL2h1ZGRsZXRvZ2V0aGVyLmNvbS9wcm9qZWN0cy9saWdodGJveDIvDQovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KQXJyYXkucHJvdG90eXBlLnJlbW92ZUR1cGxpY2F0ZXMgPSBmdW5jdGlvbiAoKSB7IGZvciAodmFyIGkgPSAxOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykgeyBpZiAodGhpc1tpXVswXSA9PSB0aGlzW2ktMV1bMF0pIHsgdGhpcy5zcGxpY2UoaSwxKTsgfSB9IH0NCkFycmF5LnByb3RvdHlwZS5lbXB0eSA9IGZ1bmN0aW9uICgpIHsgZm9yICh2YXIgaSA9IDA7IGkgPD0gdGhpcy5sZW5ndGg7IGkrKykgeyB0aGlzLnNoaWZ0KCk7IH0gfQ0KU3RyaW5nLnByb3RvdHlwZS50cmltID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcy5yZXBsYWNlKC9eXHMrfFxzKyQvZywgJycpOyB9DQoNCmZ1bmN0aW9uIEx5dGVCb3goKSB7DQoJLyoqKiBTdGFydCBHbG9iYWwgQ29uZmlndXJhdGlvbiAqKiovDQoJCXRoaXMudGhlbWUJCQkJPSAnZ3JleSc7CS8vIHRoZW1lczogZ3JleSAoZGVmYXVsdCksIHJlZCwgZ3JlZW4sIGJsdWUsIGdvbGQNCgkJdGhpcy5oaWRlRmxhc2gJCQk9IHRydWU7CQkvLyBjb250cm9scyB3aGV0aGVyIG9yIG5vdCBGbGFzaCBvYmplY3RzIHNob3VsZCBiZSBoaWRkZW4NCgkJdGhpcy5vdXRlckJvcmRlcgkJPSB0cnVlOwkJLy8gY29udHJvbHMgd2hldGhlciB0byBzaG93IHRoZSBvdXRlciBncmV5IChvciB0aGVtZSkgYm9yZGVyDQoJCXRoaXMucmVzaXplU3BlZWQJCT0gNTsJCS8vIGNvbnRyb2xzIHRoZSBzcGVlZCBvZiB0aGUgaW1hZ2UgcmVzaXppbmcgKDE9c2xvd2VzdCBhbmQgMTA9ZmFzdGVzdCkNCgkJdGhpcy5tYXhPcGFjaXR5CQkJPSA4MDsJCS8vIGhpZ2hlciBvcGFjaXR5ID0gZGFya2VyIG92ZXJsYXksIGxvd2VyIG9wYWNpdHkgPSBsaWdodGVyIG92ZXJsYXkNCgkJdGhpcy5uYXZUeXBlCQkJPSAxOwkJLy8gMSA9ICJQcmV2L05leHQiIGJ1dHRvbnMgb24gdG9wIGxlZnQgYW5kIGxlZnQgKGRlZmF1bHQpLCAyID0gIjw8IHByZXYgfCBuZXh0ID4+IiBsaW5rcyBuZXh0IHRvIGltYWdlIG51bWJlcg0KCQl0aGlzLmF1dG9SZXNpemUJCQk9IHRydWU7CQkvLyBjb250cm9scyB3aGV0aGVyIG9yIG5vdCBpbWFnZXMgc2hvdWxkIGJlIHJlc2l6ZWQgaWYgbGFyZ2VyIHRoYW4gdGhlIGJyb3dzZXIgd2luZG93IGRpbWVuc2lvbnMNCgkJdGhpcy5kb0FuaW1hdGlvbnMJCT0gdHJ1ZTsJCS8vIGNvbnRyb2xzIHdoZXRoZXIgb3Igbm90ICJhbmltYXRlIiBMeXRlYm94LCBpLmUuIHJlc2l6ZSB0cmFuc2l0aW9uIGJldHdlZW4gaW1hZ2VzLCBmYWRlIGluL291dCBlZmZlY3RzLCBldGMuDQoJCQ0KCQl0aGlzLmJvcmRlclNpemUJCQk9IDEyOwkJLy8gaWYgeW91IGFkanVzdCB0aGUgcGFkZGluZyBpbiB0aGUgQ1NTLCB5b3Ugd2lsbCBuZWVkIHRvIHVwZGF0ZSB0aGlzIHZhcmlhYmxlIC0tIG90aGVyd2lzZSwgbGVhdmUgdGhpcyBhbG9uZS4uLg0KCS8qKiogRW5kIEdsb2JhbCBDb25maWd1cmF0aW9uICoqKi8NCgkNCgkvKioqIENvbmZpZ3VyZSBTbGlkZXNob3cgT3B0aW9ucyAqKiovDQoJCXRoaXMuc2xpZGVJbnRlcnZhbAkJPSA0MDAwOwkJLy8gQ2hhbmdlIHZhbHVlIChtaWxsaXNlY29uZHMpIHRvIGluY3JlYXNlL2RlY3JlYXNlIHRoZSB0aW1lIGJldHdlZW4gInNsaWRlcyIgKDEwMDAwID0gMTAgc2Vjb25kcykNCgkJdGhpcy5zaG93TmF2aWdhdGlvbgkJPSB0cnVlOwkJLy8gdHJ1ZSB0byBkaXNwbGF5IE5leHQvUHJldiBidXR0b25zL3RleHQgZHVyaW5nIHNsaWRlc2hvdywgZmFsc2UgdG8gaGlkZQ0KCQl0aGlzLnNob3dDbG9zZQkJCT0gdHJ1ZTsJCS8vIHRydWUgdG8gZGlzcGxheSB0aGUgQ2xvc2UgYnV0dG9uLCBmYWxzZSB0byBoaWRlDQoJCXRoaXMuc2hvd0RldGFpbHMJCT0gdHJ1ZTsJCS8vIHRydWUgdG8gZGlzcGxheSBpbWFnZSBkZXRhaWxzIChjYXB0aW9uLCBjb3VudCksIGZhbHNlIHRvIGhpZGUNCgkJdGhpcy5zaG93UGxheVBhdXNlCQk9IHRydWU7CQkvLyB0cnVlIHRvIGRpc3BsYXkgcGF1c2UvcGxheSBidXR0b25zIG5leHQgdG8gY2xvc2UgYnV0dG9uLCBmYWxzZSB0byBoaWRlDQoJCXRoaXMuYXV0b0VuZAkJCT0gdHJ1ZTsJCS8vIHRydWUgdG8gYXV0b21hdGljYWxseSBjbG9zZSBMeXRlYm94IGFmdGVyIHRoZSBsYXN0IGltYWdlIGlzIHJlYWNoZWQsIGZhbHNlIHRvIGtlZXAgb3Blbg0KCQl0aGlzLnBhdXNlT25OZXh0Q2xpY2sJPSBmYWxzZTsJLy8gdHJ1ZSB0byBwYXVzZSB0aGUgc2xpZGVzaG93IHdoZW4gdGhlICJOZXh0IiBidXR0b24gaXMgY2xpY2tlZA0KICAgICAgICB0aGlzLnBhdXNlT25QcmV2Q2xpY2sgCT0gdHJ1ZTsJCS8vIHRydWUgdG8gcGF1c2UgdGhlIHNsaWRlc2hvdyB3aGVuIHRoZSAiUHJldiIgYnV0dG9uIGlzIGNsaWNrZWQNCgkvKioqIEVuZCBTbGlkZXNob3cgQ29uZmlndXJhdGlvbiAqKiovDQoJDQoJaWYodGhpcy5yZXNpemVTcGVlZCA+IDEwKSB7IHRoaXMucmVzaXplU3BlZWQgPSAxMDsgfQ0KCWlmKHRoaXMucmVzaXplU3BlZWQgPCAxKSB7IHJlc2l6ZVNwZWVkID0gMTsgfQ0KCXRoaXMucmVzaXplRHVyYXRpb24gPSAoMTEgLSB0aGlzLnJlc2l6ZVNwZWVkKSAqIDAuMTU7DQoJdGhpcy5yZXNpemVXVGltZXJBcnJheQkJPSBuZXcgQXJyYXkoKTsNCgl0aGlzLnJlc2l6ZVdUaW1lckNvdW50CQk9IDA7DQoJdGhpcy5yZXNpemVIVGltZXJBcnJheQkJPSBuZXcgQXJyYXkoKTsNCgl0aGlzLnJlc2l6ZUhUaW1lckNvdW50CQk9IDA7DQoJdGhpcy5zaG93Q29udGVudFRpbWVyQXJyYXkJPSBuZXcgQXJyYXkoKTsNCgl0aGlzLnNob3dDb250ZW50VGltZXJDb3VudAk9IDA7DQoJdGhpcy5vdmVybGF5VGltZXJBcnJheQkJPSBuZXcgQXJyYXkoKTsNCgl0aGlzLm92ZXJsYXlUaW1lckNvdW50CQk9IDA7DQoJdGhpcy5pbWFnZVRpbWVyQXJyYXkJCT0gbmV3IEFycmF5KCk7DQoJdGhpcy5pbWFnZVRpbWVyQ291bnQJCT0gMDsNCgl0aGlzLnRpbWVySURBcnJheQkJCT0gbmV3IEFycmF5KCk7DQoJdGhpcy50aW1lcklEQ291bnQJCQk9IDA7DQoJdGhpcy5zbGlkZXNob3dJREFycmF5CQk9IG5ldyBBcnJheSgpOw0KCXRoaXMuc2xpZGVzaG93SURDb3VudAkJPSAwOw0KCXRoaXMuaW1hZ2VBcnJheQkgPSBuZXcgQXJyYXkoKTsNCgl0aGlzLmFjdGl2ZUltYWdlID0gbnVsbDsNCgl0aGlzLnNsaWRlQXJyYXkJID0gbmV3IEFycmF5KCk7DQoJdGhpcy5hY3RpdmVTbGlkZSA9IG51bGw7DQoJdGhpcy5mcmFtZUFycmF5CSA9IG5ldyBBcnJheSgpOw0KCXRoaXMuYWN0aXZlRnJhbWUgPSBudWxsOw0KCXRoaXMuY2hlY2tGcmFtZSgpOw0KCXRoaXMuaXNTbGlkZXNob3cgPSBmYWxzZTsNCgl0aGlzLmlzTHl0ZWZyYW1lID0gZmFsc2U7DQoJLypAY2Nfb24NCgkJLypAaWYgKEBfanNjcmlwdCkNCgl0aGlzLmllID0gKGRvY3VtZW50LmFsbCAmJiAhd2luZG93Lm9wZXJhKSA/IGNoZWNrVmVyc2lvbigpIDogZmFsc2U7DQoJCS8qQGVsc2UgQCovDQoJCQl0aGlzLmllID0gZmFsc2U7DQoJCS8qQGVuZA0KCUAqLw0KCXRoaXMuaWU3ID0gKHRoaXMuaWUgJiYgd2luZG93LlhNTEh0dHBSZXF1ZXN0KTsJDQoJdGhpcy5pbml0aWFsaXplKCk7DQp9DQoNCmZ1bmN0aW9uIGNoZWNrVmVyc2lvbigpIHsNCiAgICBpZiAoL01TSUUgKFxkK1wuXGQrKTsvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkpIHsNCiAgICAgICAgdmFyIGlldmVyc2lvbiA9IG5ldyBOdW1iZXIoUmVnRXhwLiQxKQ0KICAgICAgICByZXR1cm4gKGlldmVyc2lvbiA8IDgpOw0KICAgIH0NCiAgICByZXR1cm4gZmFsc2U7DQp9DQoNCkx5dGVCb3gucHJvdG90eXBlLmluaXRpYWxpemUgPSBmdW5jdGlvbigpIHsNCgl0aGlzLnVwZGF0ZUx5dGVib3hJdGVtcygpOw0KCXZhciBvYmpCb2R5ID0gdGhpcy5kb2MuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKS5pdGVtKDApOwkNCglpZiAodGhpcy5kb2MuZ2V0RWxlbWVudEJ5SWQoJ2xiT3ZlcmxheScpKSB7DQoJCW9iakJvZHkucmVtb3ZlQ2hpbGQodGhpcy5kb2MuZ2V0RWxlbWVudEJ5SWQoImxiT3ZlcmxheSIpKTsNCgkJb2JqQm9keS5yZW1vdmVDaGlsZCh0aGlzLmRvYy5nZXRFbGVtZW50QnlJZCgibGJNYWluIikpOw0KCX0NCgl2YXIgb2JqT3ZlcmxheSA9IHRoaXMuZG9jLmNyZWF0ZUVsZW1lbnQoImRpdiIpOw0KCQlvYmpPdmVybGF5LnNldEF0dHJpYnV0ZSgnaWQnLCdsYk92ZXJsYXknKTsNCgkJb2JqT3ZlcmxheS5zZXRBdHRyaWJ1dGUoKHRoaXMuaWUgPyAnY2xhc3NOYW1lJyA6ICdjbGFzcycpLCB0aGlzLnRoZW1lKTsNCgkJaWYgKCh0aGlzLmllICYmICF0aGlzLmllNykgfHwgKHRoaXMuaWU3ICYmIHRoaXMuZG9jLmNvbXBhdE1vZGUgPT0gJ0JhY2tDb21wYXQnKSkgew0KCQkJb2JqT3ZlcmxheS5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7DQoJCX0NCgkJb2JqT3ZlcmxheS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOw0KCQlvYmpCb2R5LmFwcGVuZENoaWxkKG9iak92ZXJsYXkpOw0KCXZhciBvYmpMeXRlYm94ID0gdGhpcy5kb2MuY3JlYXRlRWxlbWVudCgiZGl2Iik7DQoJCW9iakx5dGVib3guc2V0QXR0cmlidXRlKCdpZCcsJ2xiTWFpbicpOw0KCQlvYmpMeXRlYm94LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7DQoJCW9iakJvZHkuYXBwZW5kQ2hpbGQob2JqTHl0ZWJveCk7DQoJdmFyIG9iak91dGVyQ29udGFpbmVyID0gdGhpcy5kb2MuY3JlYXRlRWxlbWVudCgiZGl2Iik7DQoJCW9iak91dGVyQ29udGFpbmVyLnNldEF0dHJpYnV0ZSgnaWQnLCdsYk91dGVyQ29udGFpbmVyJyk7DQoJCW9iak91dGVyQ29udGFpbmVyLnNldEF0dHJpYnV0ZSgodGhpcy5pZSA/ICdjbGFzc05hbWUnIDogJ2NsYXNzJyksIHRoaXMudGhlbWUpOw0KCQlvYmpMeXRlYm94LmFwcGVuZENoaWxkKG9iak91dGVyQ29udGFpbmVyKTsNCgl2YXIgb2JqSWZyYW1lQ29udGFpbmVyID0gdGhpcy5kb2MuY3JlYXRlRWxlbWVudCgiZGl2Iik7DQoJCW9iaklmcmFtZUNvbnRhaW5lci5zZXRBdHRyaWJ1dGUoJ2lkJywnbGJJZnJhbWVDb250YWluZXInKTsNCgkJb2JqSWZyYW1lQ29udGFpbmVyLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7DQoJCW9iak91dGVyQ29udGFpbmVyLmFwcGVuZENoaWxkKG9iaklmcmFtZUNvbnRhaW5lcik7DQoJdmFyIG9iaklmcmFtZSA9IHRoaXMuZG9jLmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpOw0KCQlvYmpJZnJhbWUuc2V0QXR0cmlidXRlKCdpZCcsJ2xiSWZyYW1lJyk7DQoJCW9iaklmcmFtZS5zZXRBdHRyaWJ1dGUoJ25hbWUnLCdsYklmcmFtZScpOw0KCQlvYmpJZnJhbWUuc3R5bGUuZGlzcGxheSA9ICdub25lJzsNCgkJb2JqSWZyYW1lQ29udGFpbmVyLmFwcGVuZENoaWxkKG9iaklmcmFtZSk7DQoJdmFyIG9iakltYWdlQ29udGFpbmVyID0gdGhpcy5kb2MuY3JlYXRlRWxlbWVudCgiZGl2Iik7DQoJCW9iakltYWdlQ29udGFpbmVyLnNldEF0dHJpYnV0ZSgnaWQnLCdsYkltYWdlQ29udGFpbmVyJyk7DQoJCW9iak91dGVyQ29udGFpbmVyLmFwcGVuZENoaWxkKG9iakltYWdlQ29udGFpbmVyKTsNCgl2YXIgb2JqTHl0ZWJveEltYWdlID0gdGhpcy5kb2MuY3JlYXRlRWxlbWVudCgiaW1nIik7DQoJCW9iakx5dGVib3hJbWFnZS5zZXRBdHRyaWJ1dGUoJ2lkJywnbGJJbWFnZScpOw0KCQlvYmpJbWFnZUNvbnRhaW5lci5hcHBlbmRDaGlsZChvYmpMeXRlYm94SW1hZ2UpOw0KCXZhciBvYmpMb2FkaW5nID0gdGhpcy5kb2MuY3JlYXRlRWxlbWVudCgiZGl2Iik7DQoJCW9iakxvYWRpbmcuc2V0QXR0cmlidXRlKCdpZCcsJ2xiTG9hZGluZycpOw0KCQlvYmpPdXRlckNvbnRhaW5lci5hcHBlbmRDaGlsZChvYmpMb2FkaW5nKTsNCgl2YXIgb2JqRGV0YWlsc0NvbnRhaW5lciA9IHRoaXMuZG9jLmNyZWF0ZUVsZW1lbnQoImRpdiIpOw0KCQlvYmpEZXRhaWxzQ29udGFpbmVyLnNldEF0dHJpYnV0ZSgnaWQnLCdsYkRldGFpbHNDb250YWluZXInKTsNCgkJb2JqRGV0YWlsc0NvbnRhaW5lci5zZXRBdHRyaWJ1dGUoKHRoaXMuaWUgPyAnY2xhc3NOYW1lJyA6ICdjbGFzcycpLCB0aGlzLnRoZW1lKTsNCgkJb2JqTHl0ZWJveC5hcHBlbmRDaGlsZChvYmpEZXRhaWxzQ29udGFpbmVyKTsNCgl2YXIgb2JqRGV0YWlsc0RhdGEgPXRoaXMuZG9jLmNyZWF0ZUVsZW1lbnQoImRpdiIpOw0KCQlvYmpEZXRhaWxzRGF0YS5zZXRBdHRyaWJ1dGUoJ2lkJywnbGJEZXRhaWxzRGF0YScpOw0KCQlvYmpEZXRhaWxzRGF0YS5zZXRBdHRyaWJ1dGUoKHRoaXMuaWUgPyAnY2xhc3NOYW1lJyA6ICdjbGFzcycpLCB0aGlzLnRoZW1lKTsNCgkJb2JqRGV0YWlsc0NvbnRhaW5lci5hcHBlbmRDaGlsZChvYmpEZXRhaWxzRGF0YSk7DQoJdmFyIG9iakRldGFpbHMgPSB0aGlzLmRvYy5jcmVhdGVFbGVtZW50KCJkaXYiKTsNCgkJb2JqRGV0YWlscy5zZXRBdHRyaWJ1dGUoJ2lkJywnbGJEZXRhaWxzJyk7DQoJCW9iakRldGFpbHNEYXRhLmFwcGVuZENoaWxkKG9iakRldGFpbHMpOw0KCXZhciBvYmpDYXB0aW9uID0gdGhpcy5kb2MuY3JlYXRlRWxlbWVudCgic3BhbiIpOw0KCQlvYmpDYXB0aW9uLnNldEF0dHJpYnV0ZSgnaWQnLCdsYkNhcHRpb24nKTsNCgkJb2JqRGV0YWlscy5hcHBlbmRDaGlsZChvYmpDYXB0aW9uKTsNCgl2YXIgb2JqSG92ZXJOYXYgPSB0aGlzLmRvYy5jcmVhdGVFbGVtZW50KCJkaXYiKTsNCgkJb2JqSG92ZXJOYXYuc2V0QXR0cmlidXRlKCdpZCcsJ2xiSG92ZXJOYXYnKTsNCgkJb2JqSW1hZ2VDb250YWluZXIuYXBwZW5kQ2hpbGQob2JqSG92ZXJOYXYpOw0KCXZhciBvYmpCb3R0b21OYXYgPSB0aGlzLmRvYy5jcmVhdGVFbGVtZW50KCJkaXYiKTsNCgkJb2JqQm90dG9tTmF2LnNldEF0dHJpYnV0ZSgnaWQnLCdsYkJvdHRvbU5hdicpOw0KCQlvYmpEZXRhaWxzRGF0YS5hcHBlbmRDaGlsZChvYmpCb3R0b21OYXYpOw0KCXZhciBvYmpQcmV2ID0gdGhpcy5kb2MuY3JlYXRlRWxlbWVudCgiYSIpOw0KCQlvYmpQcmV2LnNldEF0dHJpYnV0ZSgnaWQnLCdsYlByZXYnKTsNCgkJb2JqUHJldi5zZXRBdHRyaWJ1dGUoKHRoaXMuaWUgPyAnY2xhc3NOYW1lJyA6ICdjbGFzcycpLCB0aGlzLnRoZW1lKTsNCgkJb2JqUHJldi5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCcjJyk7DQoJCW9iakhvdmVyTmF2LmFwcGVuZENoaWxkKG9ialByZXYpOw0KCXZhciBvYmpOZXh0ID0gdGhpcy5kb2MuY3JlYXRlRWxlbWVudCgiYSIpOw0KCQlvYmpOZXh0LnNldEF0dHJpYnV0ZSgnaWQnLCdsYk5leHQnKTsNCgkJb2JqTmV4dC5zZXRBdHRyaWJ1dGUoKHRoaXMuaWUgPyAnY2xhc3NOYW1lJyA6ICdjbGFzcycpLCB0aGlzLnRoZW1lKTsNCgkJb2JqTmV4dC5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCcjJyk7DQoJCW9iakhvdmVyTmF2LmFwcGVuZENoaWxkKG9iak5leHQpOw0KCXZhciBvYmpOdW1iZXJEaXNwbGF5ID0gdGhpcy5kb2MuY3JlYXRlRWxlbWVudCgic3BhbiIpOw0KCQlvYmpOdW1iZXJEaXNwbGF5LnNldEF0dHJpYnV0ZSgnaWQnLCdsYk51bWJlckRpc3BsYXknKTsNCgkJb2JqRGV0YWlscy5hcHBlbmRDaGlsZChvYmpOdW1iZXJEaXNwbGF5KTsNCgl2YXIgb2JqTmF2RGlzcGxheSA9IHRoaXMuZG9jLmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsNCgkJb2JqTmF2RGlzcGxheS5zZXRBdHRyaWJ1dGUoJ2lkJywnbGJOYXZEaXNwbGF5Jyk7DQoJCW9iak5hdkRpc3BsYXkuc3R5bGUuZGlzcGxheSA9ICdub25lJzsNCgkJb2JqRGV0YWlscy5hcHBlbmRDaGlsZChvYmpOYXZEaXNwbGF5KTsNCgl2YXIgb2JqQ2xvc2UgPSB0aGlzLmRvYy5jcmVhdGVFbGVtZW50KCJhIik7DQoJCW9iakNsb3NlLnNldEF0dHJpYnV0ZSgnaWQnLCdsYkNsb3NlJyk7DQoJCW9iakNsb3NlLnNldEF0dHJpYnV0ZSgodGhpcy5pZSA/ICdjbGFzc05hbWUnIDogJ2NsYXNzJyksIHRoaXMudGhlbWUpOw0KCQlvYmpDbG9zZS5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCcjJyk7DQoJCW9iakJvdHRvbU5hdi5hcHBlbmRDaGlsZChvYmpDbG9zZSk7DQoJdmFyIG9ialBhdXNlID0gdGhpcy5kb2MuY3JlYXRlRWxlbWVudCgiYSIpOw0KCQlvYmpQYXVzZS5zZXRBdHRyaWJ1dGUoJ2lkJywnbGJQYXVzZScpOw0KCQlvYmpQYXVzZS5zZXRBdHRyaWJ1dGUoKHRoaXMuaWUgPyAnY2xhc3NOYW1lJyA6ICdjbGFzcycpLCB0aGlzLnRoZW1lKTsNCgkJb2JqUGF1c2Uuc2V0QXR0cmlidXRlKCdocmVmJywnIycpOw0KCQlvYmpQYXVzZS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOw0KCQlvYmpCb3R0b21OYXYuYXBwZW5kQ2hpbGQob2JqUGF1c2UpOw0KCXZhciBvYmpQbGF5ID0gdGhpcy5kb2MuY3JlYXRlRWxlbWVudCgiYSIpOw0KCQlvYmpQbGF5LnNldEF0dHJpYnV0ZSgnaWQnLCdsYlBsYXknKTsNCgkJb2JqUGxheS5zZXRBdHRyaWJ1dGUoKHRoaXMuaWUgPyAnY2xhc3NOYW1lJyA6ICdjbGFzcycpLCB0aGlzLnRoZW1lKTsNCgkJb2JqUGxheS5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCcjJyk7DQoJCW9ialBsYXkuc3R5bGUuZGlzcGxheSA9ICdub25lJzsNCgkJb2JqQm90dG9tTmF2LmFwcGVuZENoaWxkKG9ialBsYXkpOw0KfTsNCkx5dGVCb3gucHJvdG90eXBlLnVwZGF0ZUx5dGVib3hJdGVtcyA9IGZ1bmN0aW9uKCkgewkNCgl2YXIgYW5jaG9ycyA9ICh0aGlzLmlzRnJhbWUpID8gd2luZG93LnBhcmVudC5mcmFtZXNbd2luZG93Lm5hbWVdLmRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdhJykgOiBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnYScpOw0KCWZvciAodmFyIGkgPSAwOyBpIDwgYW5jaG9ycy5sZW5ndGg7IGkrKykgew0KCQl2YXIgYW5jaG9yID0gYW5jaG9yc1tpXTsNCgkJdmFyIHJlbEF0dHJpYnV0ZSA9IFN0cmluZyhhbmNob3IuZ2V0QXR0cmlidXRlKCdyZWwnKSk7DQoJCWlmIChhbmNob3IuZ2V0QXR0cmlidXRlKCdocmVmJykpIHsNCgkJCWlmIChyZWxBdHRyaWJ1dGUudG9Mb3dlckNhc2UoKS5tYXRjaCgnbHl0ZWJveCcpKSB7DQoJCQkJYW5jaG9yLm9uY2xpY2sgPSBmdW5jdGlvbiAoKSB7IG15THl0ZWJveC5zdGFydCh0aGlzLCBmYWxzZSwgZmFsc2UpOyByZXR1cm4gZmFsc2U7IH0NCgkJCX0gZWxzZSBpZiAocmVsQXR0cmlidXRlLnRvTG93ZXJDYXNlKCkubWF0Y2goJ2x5dGVzaG93JykpIHsNCgkJCQlhbmNob3Iub25jbGljayA9IGZ1bmN0aW9uICgpIHsgbXlMeXRlYm94LnN0YXJ0KHRoaXMsIHRydWUsIGZhbHNlKTsgcmV0dXJuIGZhbHNlOyB9DQoJCQl9IGVsc2UgaWYgKHJlbEF0dHJpYnV0ZS50b0xvd2VyQ2FzZSgpLm1hdGNoKCdseXRlZnJhbWUnKSkgew0KCQkJCWFuY2hvci5vbmNsaWNrID0gZnVuY3Rpb24gKCkgeyBteUx5dGVib3guc3RhcnQodGhpcywgZmFsc2UsIHRydWUpOyByZXR1cm4gZmFsc2U7IH0NCgkJCX0NCgkJfQ0KCX0NCn07DQpMeXRlQm94LnByb3RvdHlwZS5zdGFydCA9IGZ1bmN0aW9uKGltYWdlTGluaywgZG9TbGlkZSwgZG9GcmFtZSkgew0KCWlmICh0aGlzLmllICYmICF0aGlzLmllNykgewl0aGlzLnRvZ2dsZVNlbGVjdHMoJ2hpZGUnKTsJfQ0KCWlmICh0aGlzLmhpZGVGbGFzaCkgeyB0aGlzLnRvZ2dsZUZsYXNoKCdoaWRlJyk7IH0NCgl0aGlzLmlzTHl0ZWZyYW1lID0gKGRvRnJhbWUgPyB0cnVlIDogZmFsc2UpOw0KCXZhciBwYWdlU2l6ZQk9IHRoaXMuZ2V0UGFnZVNpemUoKTsNCgl2YXIgb2JqT3ZlcmxheQk9IHRoaXMuZG9jLmdldEVsZW1lbnRCeUlkKCdsYk92ZXJsYXknKTsNCgl2YXIgb2JqQm9keQkJPSB0aGlzLmRvYy5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpLml0ZW0oMCk7DQoJb2JqT3ZlcmxheS5zdHlsZS5oZWlnaHQgPSBwYWdlU2l6ZVsxXSArICJweCI7DQoJb2JqT3ZlcmxheS5zdHlsZS5kaXNwbGF5ID0gJyc7DQoJdGhpcy5hcHBlYXIoJ2xiT3ZlcmxheScsICh0aGlzLmRvQW5pbWF0aW9ucyA/IDAgOiB0aGlzLm1heE9wYWNpdHkpKTsNCgl2YXIgYW5jaG9ycyA9ICh0aGlzLmlzRnJhbWUpID8gd2luZG93LnBhcmVudC5mcmFtZXNbd2luZG93Lm5hbWVdLmRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdhJykgOiBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnYScpOw0KCWlmICh0aGlzLmlzTHl0ZWZyYW1lKSB7DQoJCXRoaXMuZnJhbWVBcnJheSA9IFtdOw0KCQl0aGlzLmZyYW1lTnVtID0gMDsNCgkJaWYgKChpbWFnZUxpbmsuZ2V0QXR0cmlidXRlKCdyZWwnKSA9PSAnbHl0ZWZyYW1lJykpIHsNCgkJCXZhciByZXYgPSBpbWFnZUxpbmsuZ2V0QXR0cmlidXRlKCdyZXYnKTsNCgkJCXRoaXMuZnJhbWVBcnJheS5wdXNoKG5ldyBBcnJheShpbWFnZUxpbmsuZ2V0QXR0cmlidXRlKCdocmVmJyksIGltYWdlTGluay5nZXRBdHRyaWJ1dGUoJ3RpdGxlJyksIChyZXYgPT0gbnVsbCB8fCByZXYgPT0gJycgPyAnd2lkdGg6IDQwMHB4OyBoZWlnaHQ6IDQwMHB4OyBzY3JvbGxpbmc6IGF1dG87JyA6IHJldikpKTsNCgkJfSBlbHNlIHsNCgkJCWlmIChpbWFnZUxpbmsuZ2V0QXR0cmlidXRlKCdyZWwnKS5pbmRleE9mKCdseXRlZnJhbWUnKSAhPSAtMSkgew0KCQkJCWZvciAodmFyIGkgPSAwOyBpIDwgYW5jaG9ycy5sZW5ndGg7IGkrKykgew0KCQkJCQl2YXIgYW5jaG9yID0gYW5jaG9yc1tpXTsNCgkJCQkJaWYgKGFuY2hvci5nZXRBdHRyaWJ1dGUoJ2hyZWYnKSAmJiAoYW5jaG9yLmdldEF0dHJpYnV0ZSgncmVsJykgPT0gaW1hZ2VMaW5rLmdldEF0dHJpYnV0ZSgncmVsJykpKSB7DQoJCQkJCQl2YXIgcmV2ID0gYW5jaG9yLmdldEF0dHJpYnV0ZSgncmV2Jyk7DQoJCQkJCQl0aGlzLmZyYW1lQXJyYXkucHVzaChuZXcgQXJyYXkoYW5jaG9yLmdldEF0dHJpYnV0ZSgnaHJlZicpLCBhbmNob3IuZ2V0QXR0cmlidXRlKCd0aXRsZScpLCAocmV2ID09IG51bGwgfHwgcmV2ID09ICcnID8gJ3dpZHRoOiA0MDBweDsgaGVpZ2h0OiA0MDBweDsgc2Nyb2xsaW5nOiBhdXRvOycgOiByZXYpKSk7DQoJCQkJCX0NCgkJCQl9DQoJCQkJdGhpcy5mcmFtZUFycmF5LnJlbW92ZUR1cGxpY2F0ZXMoKTsNCgkJCQl3aGlsZSh0aGlzLmZyYW1lQXJyYXlbdGhpcy5mcmFtZU51bV1bMF0gIT0gaW1hZ2VMaW5rLmdldEF0dHJpYnV0ZSgnaHJlZicpKSB7IHRoaXMuZnJhbWVOdW0rKzsgfQ0KCQkJfQ0KCQl9DQoJfSBlbHNlIHsNCgkJdGhpcy5pbWFnZUFycmF5ID0gW107DQoJCXRoaXMuaW1hZ2VOdW0gPSAwOw0KCQl0aGlzLnNsaWRlQXJyYXkgPSBbXTsNCgkJdGhpcy5zbGlkZU51bSA9IDA7DQoJCWlmICgoaW1hZ2VMaW5rLmdldEF0dHJpYnV0ZSgncmVsJykgPT0gJ2x5dGVib3gnKSkgew0KCQkJdGhpcy5pbWFnZUFycmF5LnB1c2gobmV3IEFycmF5KGltYWdlTGluay5nZXRBdHRyaWJ1dGUoJ2hyZWYnKSwgaW1hZ2VMaW5rLmdldEF0dHJpYnV0ZSgndGl0bGUnKSkpOw0KCQl9IGVsc2Ugew0KCQkJaWYgKGltYWdlTGluay5nZXRBdHRyaWJ1dGUoJ3JlbCcpLmluZGV4T2YoJ2x5dGVib3gnKSAhPSAtMSkgew0KCQkJCWZvciAodmFyIGkgPSAwOyBpIDwgYW5jaG9ycy5sZW5ndGg7IGkrKykgew0KCQkJCQl2YXIgYW5jaG9yID0gYW5jaG9yc1tpXTsNCgkJCQkJaWYgKGFuY2hvci5nZXRBdHRyaWJ1dGUoJ2hyZWYnKSAmJiAoYW5jaG9yLmdldEF0dHJpYnV0ZSgncmVsJykgPT0gaW1hZ2VMaW5rLmdldEF0dHJpYnV0ZSgncmVsJykpKSB7DQoJCQkJCQl0aGlzLmltYWdlQXJyYXkucHVzaChuZXcgQXJyYXkoYW5jaG9yLmdldEF0dHJpYnV0ZSgnaHJlZicpLCBhbmNob3IuZ2V0QXR0cmlidXRlKCd0aXRsZScpKSk7DQoJCQkJCX0NCgkJCQl9DQoJCQkJdGhpcy5pbWFnZUFycmF5LnJlbW92ZUR1cGxpY2F0ZXMoKTsNCgkJCQl3aGlsZSh0aGlzLmltYWdlQXJyYXlbdGhpcy5pbWFnZU51bV1bMF0gIT0gaW1hZ2VMaW5rLmdldEF0dHJpYnV0ZSgnaHJlZicpKSB7IHRoaXMuaW1hZ2VOdW0rKzsgfQ0KCQkJfQ0KCQkJaWYgKGltYWdlTGluay5nZXRBdHRyaWJ1dGUoJ3JlbCcpLmluZGV4T2YoJ2x5dGVzaG93JykgIT0gLTEpIHsNCgkJCQlmb3IgKHZhciBpID0gMDsgaSA8IGFuY2hvcnMubGVuZ3RoOyBpKyspIHsNCgkJCQkJdmFyIGFuY2hvciA9IGFuY2hvcnNbaV07DQoJCQkJCWlmIChhbmNob3IuZ2V0QXR0cmlidXRlKCdocmVmJykgJiYgKGFuY2hvci5nZXRBdHRyaWJ1dGUoJ3JlbCcpID09IGltYWdlTGluay5nZXRBdHRyaWJ1dGUoJ3JlbCcpKSkgew0KCQkJCQkJdGhpcy5zbGlkZUFycmF5LnB1c2gobmV3IEFycmF5KGFuY2hvci5nZXRBdHRyaWJ1dGUoJ2hyZWYnKSwgYW5jaG9yLmdldEF0dHJpYnV0ZSgndGl0bGUnKSkpOw0KCQkJCQl9DQoJCQkJfQ0KCQkJCXRoaXMuc2xpZGVBcnJheS5yZW1vdmVEdXBsaWNhdGVzKCk7DQoJCQkJd2hpbGUodGhpcy5zbGlkZUFycmF5W3RoaXMuc2xpZGVOdW1dWzBdICE9IGltYWdlTGluay5nZXRBdHRyaWJ1dGUoJ2hyZWYnKSkgeyB0aGlzLnNsaWRlTnVtKys7IH0NCgkJCX0NCgkJfQ0KCX0NCgl2YXIgb2JqZWN0ID0gdGhpcy5kb2MuZ2V0RWxlbWVudEJ5SWQoJ2xiTWFpbicpOw0KCQlvYmplY3Quc3R5bGUudG9wID0gKHRoaXMuZ2V0UGFnZVNjcm9sbCgpICsgKHBhZ2VTaXplWzNdIC8gMTUpKSArICJweCI7DQoJCW9iamVjdC5zdHlsZS5kaXNwbGF5ID0gJyc7DQoJaWYgKCF0aGlzLm91dGVyQm9yZGVyKSB7DQoJCXRoaXMuZG9jLmdldEVsZW1lbnRCeUlkKCdsYk91dGVyQ29udGFpbmVyJykuc3R5bGUuYm9yZGVyID0gJ25vbmUnOw0KCQl0aGlzLmRvYy5nZXRFbGVtZW50QnlJZCgnbGJEZXRhaWxzQ29udGFpbmVyJykuc3R5bGUuYm9yZGVyID0gJ25vbmUnOw0KCX0gZWxzZSB7DQoJCXRoaXMuZG9jLmdldEVsZW1lbnRCeUlkKCdsYk91dGVyQ29udGFpbmVyJykuc3R5bGUuYm9yZGVyQm90dG9tID0gJyc7DQoJCXRoaXMuZG9jLmdldEVsZW1lbnRCeUlkKCdsYk91dGVyQ29udGFpbmVyJykuc2V0QXR0cmlidXRlKCh0aGlzLmllID8gJ2NsYXNzTmFtZScgOiAnY2xhc3MnKSwgdGhpcy50aGVtZSk7DQoJfQ0KCXRoaXMuZG9jLmdldEVsZW1lbnRCeUlkKCdsYk92ZXJsYXknKS5vbmNsaWNrID0gZnVuY3Rpb24oKSB7IG15THl0ZWJveC5lbmQoKTsgcmV0dXJuIGZhbHNlOyB9DQoJdGhpcy5kb2MuZ2V0RWxlbWVudEJ5SWQoJ2xiTWFpbicpLm9uY2xpY2sgPSBmdW5jdGlvbihlKSB7DQoJCXZhciBlID0gZTsNCgkJaWYgKCFlKSB7DQoJCQlpZiAod2luZG93LnBhcmVudC5mcmFtZXNbd2luZG93Lm5hbWVdICYmIChwYXJlbnQuZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2ZyYW1lc2V0JykubGVuZ3RoIDw9IDApKSB7DQoJCQkJZSA9IHdpbmRvdy5wYXJlbnQud2luZG93LmV2ZW50Ow0KCQkJfSBlbHNlIHsNCgkJCQllID0gd2luZG93LmV2ZW50Ow0KCQkJfQ0KCQl9DQoJCXZhciBpZCA9IChlLnRhcmdldCA/IGUudGFyZ2V0LmlkIDogZS5zcmNFbGVtZW50LmlkKTsNCgkJaWYgKGlkID09ICdsYk1haW4nKSB7IG15THl0ZWJveC5lbmQoKTsgcmV0dXJuIGZhbHNlOyB9DQoJfQ0KCXRoaXMuZG9jLmdldEVsZW1lbnRCeUlkKCdsYkNsb3NlJykub25jbGljayA9IGZ1bmN0aW9uKCkgeyBteUx5dGVib3guZW5kKCk7IHJldHVybiBmYWxzZTsgfQ0KCXRoaXMuZG9jLmdldEVsZW1lbnRCeUlkKCdsYlBhdXNlJykub25jbGljayA9IGZ1bmN0aW9uKCkgeyBteUx5dGVib3gudG9nZ2xlUGxheVBhdXNlKCJsYlBhdXNlIiwgImxiUGxheSIpOyByZXR1cm4gZmFsc2U7IH0NCgl0aGlzLmRvYy5nZXRFbGVtZW50QnlJZCgnbGJQbGF5Jykub25jbGljayA9IGZ1bmN0aW9uKCkgeyBteUx5dGVib3gudG9nZ2xlUGxheVBhdXNlKCJsYlBsYXkiLCAibGJQYXVzZSIpOyByZXR1cm4gZmFsc2U7IH0JDQoJdGhpcy5pc1NsaWRlc2hvdyA9IGRvU2xpZGU7DQoJdGhpcy5pc1BhdXNlZCA9ICh0aGlzLnNsaWRlTnVtICE9IDAgPyB0cnVlIDogZmFsc2UpOw0KCWlmICh0aGlzLmlzU2xpZGVzaG93ICYmIHRoaXMuc2hvd1BsYXlQYXVzZSAmJiB0aGlzLmlzUGF1c2VkKSB7DQoJCXRoaXMuZG9jLmdldEVsZW1lbnRCeUlkKCdsYlBsYXknKS5zdHlsZS5kaXNwbGF5ID0gJyc7DQoJCXRoaXMuZG9jLmdldEVsZW1lbnRCeUlkKCdsYlBhdXNlJykuc3R5bGUuZGlzcGxheSA9ICdub25lJzsNCgl9DQoJaWYgKHRoaXMuaXNMeXRlZnJhbWUpIHsNCgkJdGhpcy5jaGFuZ2VDb250ZW50KHRoaXMuZnJhbWVOdW0pOw0KCX0gZWxzZSB7DQoJCWlmICh0aGlzLmlzU2xpZGVzaG93KSB7DQoJCQl0aGlzLmNoYW5nZUNvbnRlbnQodGhpcy5zbGlkZU51bSk7DQoJCX0gZWxzZSB7DQoJCQl0aGlzLmNoYW5nZUNvbnRlbnQodGhpcy5pbWFnZU51bSk7DQoJCX0NCgl9DQp9Ow0KTHl0ZUJveC5wcm90b3R5cGUuY2hhbmdlQ29udGVudCA9IGZ1bmN0aW9uKGltYWdlTnVtKSB7DQoJaWYgKHRoaXMuaXNTbGlkZXNob3cpIHsNCgkJZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLnNsaWRlc2hvd0lEQ291bnQ7IGkrKykgeyB3aW5kb3cuY2xlYXJUaW1lb3V0KHRoaXMuc2xpZGVzaG93SURBcnJheVtpXSk7IH0NCgl9DQoJdGhpcy5hY3RpdmVJbWFnZSA9IHRoaXMuYWN0aXZlU2xpZGUgPSB0aGlzLmFjdGl2ZUZyYW1lID0gaW1hZ2VOdW07DQoJaWYgKCF0aGlzLm91dGVyQm9yZGVyKSB7DQoJCXRoaXMuZG9jLmdldEVsZW1lbnRCeUlkKCdsYk91dGVyQ29udGFpbmVyJykuc3R5bGUuYm9yZGVyID0gJ25vbmUnOw0KCQl0aGlzLmRvYy5nZXRFbGVtZW50QnlJZCgnbGJEZXRhaWxzQ29udGFpbmVyJykuc3R5bGUuYm9yZGVyID0gJ25vbmUnOw0KCX0gZWxzZSB7DQoJCXRoaXMuZG9jLmdldEVsZW1lbnRCeUlkKCdsYk91dGVyQ29udGFpbmVyJykuc3R5bGUuYm9yZGVyQm90dG9tID0gJyc7DQoJCXRoaXMuZG9jLmdldEVsZW1lbnRCeUlkKCdsYk91dGVyQ29udGFpbmVyJykuc2V0QXR0cmlidXRlKCh0aGlzLmllID8gJ2NsYXNzTmFtZScgOiAnY2xhc3MnKSwgdGhpcy50aGVtZSk7DQoJfQ0KCXRoaXMuZG9jLmdldEVsZW1lbnRCeUlkKCdsYkxvYWRpbmcnKS5zdHlsZS5kaXNwbGF5ID0gJyc7DQoJdGhpcy5kb2MuZ2V0RWxlbWVudEJ5SWQoJ2xiSW1hZ2UnKS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOw0KCXRoaXMuZG9jLmdldEVsZW1lbnRCeUlkKCdsYklmcmFtZScpLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7DQoJdGhpcy5kb2MuZ2V0RWxlbWVudEJ5SWQoJ2xiUHJldicpLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7DQoJdGhpcy5kb2MuZ2V0RWxlbWVudEJ5SWQoJ2xiTmV4dCcpLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7DQoJdGhpcy5kb2MuZ2V0RWxlbWVudEJ5SWQoJ2xiSWZyYW1lQ29udGFpbmVyJykuc3R5bGUuZGlzcGxheSA9ICdub25lJzsNCgl0aGlzLmRvYy5nZXRFbGVtZW50QnlJZCgnbGJEZXRhaWxzQ29udGFpbmVyJykuc3R5bGUuZGlzcGxheSA9ICdub25lJzsNCgl0aGlzLmRvYy5nZXRFbGVtZW50QnlJZCgnbGJOdW1iZXJEaXNwbGF5Jykuc3R5bGUuZGlzcGxheSA9ICdub25lJzsNCglpZiAodGhpcy5uYXZUeXBlID09IDIgfHwgdGhpcy5pc0x5dGVmcmFtZSkgew0KCQlvYmplY3QgPSB0aGlzLmRvYy5nZXRFbGVtZW50QnlJZCgnbGJOYXZEaXNwbGF5Jyk7DQoJCW9iamVjdC5pbm5lckhUTUwgPSAnJm5ic3A7Jm5ic3A7Jm5ic3A7PHNwYW4gaWQ9ImxiUHJldjJfT2ZmIiBzdHlsZT0iZGlzcGxheTogbm9uZTsiIGNsYXNzPSInICsgdGhpcy50aGVtZSArICciPiZsYXF1bzsgcHJldjwvc3Bhbj48YSBocmVmPSIjIiBpZD0ibGJQcmV2MiIgY2xhc3M9IicgKyB0aGlzLnRoZW1lICsgJyIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7Ij4mbGFxdW87IHByZXY8L2E+IDxiIGlkPSJsYlNwYWNlciIgY2xhc3M9IicgKyB0aGlzLnRoZW1lICsgJyI+fHw8L2I+IDxzcGFuIGlkPSJsYk5leHQyX09mZiIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7IiBjbGFzcz0iJyArIHRoaXMudGhlbWUgKyAnIj5uZXh0ICZyYXF1bzs8L3NwYW4+PGEgaHJlZj0iIyIgaWQ9ImxiTmV4dDIiIGNsYXNzPSInICsgdGhpcy50aGVtZSArICciIHN0eWxlPSJkaXNwbGF5OiBub25lOyI+bmV4dCAmcmFxdW87PC9hPic7DQoJCW9iamVjdC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOw0KCX0NCglpZiAodGhpcy5pc0x5dGVmcmFtZSkgew0KCQl2YXIgaWZyYW1lID0gbXlMeXRlYm94LmRvYy5nZXRFbGVtZW50QnlJZCgnbGJJZnJhbWUnKTsNCgkJdmFyIHN0eWxlcyA9IHRoaXMuZnJhbWVBcnJheVt0aGlzLmFjdGl2ZUZyYW1lXVsyXTsNCgkJdmFyIGFTdHlsZXMgPSBzdHlsZXMuc3BsaXQoJzsnKTsNCgkJZm9yICh2YXIgaSA9IDA7IGkgPCBhU3R5bGVzLmxlbmd0aDsgaSsrKSB7DQoJCQlpZiAoYVN0eWxlc1tpXS5pbmRleE9mKCd3aWR0aDonKSA+PSAwKSB7DQoJCQkJdmFyIHcgPSBhU3R5bGVzW2ldLnJlcGxhY2UoJ3dpZHRoOicsICcnKTsNCgkJCQlpZnJhbWUud2lkdGggPSB3LnRyaW0oKTsNCgkJCX0gZWxzZSBpZiAoYVN0eWxlc1tpXS5pbmRleE9mKCdoZWlnaHQ6JykgPj0gMCkgew0KCQkJCXZhciBoID0gYVN0eWxlc1tpXS5yZXBsYWNlKCdoZWlnaHQ6JywgJycpOw0KCQkJCWlmcmFtZS5oZWlnaHQgPSBoLnRyaW0oKTsNCgkJCX0gZWxzZSBpZiAoYVN0eWxlc1tpXS5pbmRleE9mKCdzY3JvbGxpbmc6JykgPj0gMCkgew0KCQkJCXZhciBzID0gYVN0eWxlc1tpXS5yZXBsYWNlKCdzY3JvbGxpbmc6JywgJycpOw0KCQkJCWlmcmFtZS5zY3JvbGxpbmcgPSBzLnRyaW0oKTsNCgkJCX0gZWxzZSBpZiAoYVN0eWxlc1tpXS5pbmRleE9mKCdib3JkZXI6JykgPj0gMCkgew0KCQkJCS8vIE5vdCBpbXBsZW1lbnRlZCB5ZXQsIGFzIHRoZXJlIGFyZSBjcm9zcy1wbGF0Zm9ybSBpc3N1ZXMgd2l0aCBzZXR0aW5nIHRoZSBib3JkZXIgKGZyb20gYSBHVUkgc3RhbmRwb2ludCkNCgkJCQkvL3ZhciBiID0gYVN0eWxlc1tpXS5yZXBsYWNlKCdib3JkZXI6JywgJycpOw0KCQkJCS8vaWZyYW1lLnN0eWxlLmJvcmRlciA9IGIudHJpbSgpOw0KCQkJfQ0KCQl9DQoJCXRoaXMucmVzaXplQ29udGFpbmVyKHBhcnNlSW50KGlmcmFtZS53aWR0aCksIHBhcnNlSW50KGlmcmFtZS5oZWlnaHQpKTsNCgl9IGVsc2Ugew0KCQlpbWdQcmVsb2FkZXIgPSBuZXcgSW1hZ2UoKTsNCgkJaW1nUHJlbG9hZGVyLm9ubG9hZCA9IGZ1bmN0aW9uKCkgew0KCQkJdmFyIGltYWdlV2lkdGggPSBpbWdQcmVsb2FkZXIud2lkdGg7DQoJCQl2YXIgaW1hZ2VIZWlnaHQgPSBpbWdQcmVsb2FkZXIuaGVpZ2h0Ow0KCQkJaWYgKG15THl0ZWJveC5hdXRvUmVzaXplKSB7DQoJCQkJdmFyIHBhZ2VzaXplID0gbXlMeXRlYm94LmdldFBhZ2VTaXplKCk7DQoJCQkJdmFyIHggPSBwYWdlc2l6ZVsyXSAtIDE1MDsNCgkJCQl2YXIgeSA9IHBhZ2VzaXplWzNdIC0gMTUwOw0KCQkJCWlmIChpbWFnZVdpZHRoID4geCkgew0KCQkJCQlpbWFnZUhlaWdodCA9IE1hdGgucm91bmQoaW1hZ2VIZWlnaHQgKiAoeCAvIGltYWdlV2lkdGgpKTsNCgkJCQkJaW1hZ2VXaWR0aCA9IHg7IA0KCQkJCQlpZiAoaW1hZ2VIZWlnaHQgPiB5KSB7IA0KCQkJCQkJaW1hZ2VXaWR0aCA9IE1hdGgucm91bmQoaW1hZ2VXaWR0aCAqICh5IC8gaW1hZ2VIZWlnaHQpKTsNCgkJCQkJCWltYWdlSGVpZ2h0ID0geTsgDQoJCQkJCX0NCgkJCQl9IGVsc2UgaWYgKGltYWdlSGVpZ2h0ID4geSkgeyANCgkJCQkJaW1hZ2VXaWR0aCA9IE1hdGgucm91bmQoaW1hZ2VXaWR0aCAqICh5IC8gaW1hZ2VIZWlnaHQpKTsNCgkJCQkJaW1hZ2VIZWlnaHQgPSB5OyANCgkJCQkJaWYgKGltYWdlV2lkdGggPiB4KSB7DQoJCQkJCQlpbWFnZUhlaWdodCA9IE1hdGgucm91bmQoaW1hZ2VIZWlnaHQgKiAoeCAvIGltYWdlV2lkdGgpKTsNCgkJCQkJCWltYWdlV2lkdGggPSB4Ow0KCQkJCQl9DQoJCQkJfQ0KCQkJfQ0KCQkJdmFyIGxiSW1hZ2UgPSBteUx5dGVib3guZG9jLmdldEVsZW1lbnRCeUlkKCdsYkltYWdlJykNCgkJCWxiSW1hZ2Uuc3JjID0gKG15THl0ZWJveC5pc1NsaWRlc2hvdyA/IG15THl0ZWJveC5zbGlkZUFycmF5W215THl0ZWJveC5hY3RpdmVTbGlkZV1bMF0gOiBteUx5dGVib3guaW1hZ2VBcnJheVtteUx5dGVib3guYWN0aXZlSW1hZ2VdWzBdKTsNCgkJCWxiSW1hZ2Uud2lkdGggPSBpbWFnZVdpZHRoOw0KCQkJbGJJbWFnZS5oZWlnaHQgPSBpbWFnZUhlaWdodDsNCgkJCW15THl0ZWJveC5yZXNpemVDb250YWluZXIoaW1hZ2VXaWR0aCwgaW1hZ2VIZWlnaHQpOw0KCQkJaW1nUHJlbG9hZGVyLm9ubG9hZCA9IGZ1bmN0aW9uKCkge307DQoJCX0NCgkJaW1nUHJlbG9hZGVyLnNyYyA9ICh0aGlzLmlzU2xpZGVzaG93ID8gdGhpcy5zbGlkZUFycmF5W3RoaXMuYWN0aXZlU2xpZGVdWzBdIDogdGhpcy5pbWFnZUFycmF5W3RoaXMuYWN0aXZlSW1hZ2VdWzBdKTsNCgl9DQp9Ow0KTHl0ZUJveC5wcm90b3R5cGUucmVzaXplQ29udGFpbmVyID0gZnVuY3Rpb24oaW1nV2lkdGgsIGltZ0hlaWdodCkgew0KCXRoaXMud0N1ciA9IHRoaXMuZG9jLmdldEVsZW1lbnRCeUlkKCdsYk91dGVyQ29udGFpbmVyJykub2Zmc2V0V2lkdGg7DQoJdGhpcy5oQ3VyID0gdGhpcy5kb2MuZ2V0RWxlbWVudEJ5SWQoJ2xiT3V0ZXJDb250YWluZXInKS5vZmZzZXRIZWlnaHQ7DQoJdGhpcy54U2NhbGUgPSAoKGltZ1dpZHRoICArICh0aGlzLmJvcmRlclNpemUgKiAyKSkgLyB0aGlzLndDdXIpICogMTAwOw0KCXRoaXMueVNjYWxlID0gKChpbWdIZWlnaHQgICsgKHRoaXMuYm9yZGVyU2l6ZSAqIDIpKSAvIHRoaXMuaEN1cikgKiAxMDA7DQoJdmFyIHdEaWZmID0gKHRoaXMud0N1ciAtIHRoaXMuYm9yZGVyU2l6ZSAqIDIpIC0gaW1nV2lkdGg7DQoJdmFyIGhEaWZmID0gKHRoaXMuaEN1ciAtIHRoaXMuYm9yZGVyU2l6ZSAqIDIpIC0gaW1nSGVpZ2h0Ow0KCWlmICghKGhEaWZmID09IDApKSB7DQoJCXRoaXMuaERvbmUgPSBmYWxzZTsNCgkJdGhpcy5yZXNpemVIKCdsYk91dGVyQ29udGFpbmVyJywgdGhpcy5oQ3VyLCBpbWdIZWlnaHQgKyB0aGlzLmJvcmRlclNpemUqMiwgdGhpcy5nZXRQaXhlbFJhdGUodGhpcy5oQ3VyLCBpbWdIZWlnaHQpKTsNCgl9IGVsc2Ugew0KCQl0aGlzLmhEb25lID0gdHJ1ZTsNCgl9DQoJaWYgKCEod0RpZmYgPT0gMCkpIHsNCgkJdGhpcy53RG9uZSA9IGZhbHNlOw0KCQl0aGlzLnJlc2l6ZVcoJ2xiT3V0ZXJDb250YWluZXInLCB0aGlzLndDdXIsIGltZ1dpZHRoICsgdGhpcy5ib3JkZXJTaXplKjIsIHRoaXMuZ2V0UGl4ZWxSYXRlKHRoaXMud0N1ciwgaW1nV2lkdGgpKTsNCgl9IGVsc2Ugew0KCQl0aGlzLndEb25lID0gdHJ1ZTsNCgl9DQoJaWYgKChoRGlmZiA9PSAwKSAmJiAod0RpZmYgPT0gMCkpIHsNCgkJaWYgKHRoaXMuaWUpeyB0aGlzLnBhdXNlKDI1MCk7IH0gZWxzZSB7IHRoaXMucGF1c2UoMTAwKTsgfSANCgl9DQoJdGhpcy5kb2MuZ2V0RWxlbWVudEJ5SWQoJ2xiUHJldicpLnN0eWxlLmhlaWdodCA9IGltZ0hlaWdodCArICJweCI7DQoJdGhpcy5kb2MuZ2V0RWxlbWVudEJ5SWQoJ2xiTmV4dCcpLnN0eWxlLmhlaWdodCA9IGltZ0hlaWdodCArICJweCI7DQoJdGhpcy5kb2MuZ2V0RWxlbWVudEJ5SWQoJ2xiRGV0YWlsc0NvbnRhaW5lcicpLnN0eWxlLndpZHRoID0gKGltZ1dpZHRoICsgKHRoaXMuYm9yZGVyU2l6ZSAqIDIpICsgKHRoaXMuaWUgJiYgdGhpcy5kb2MuY29tcGF0TW9kZSA9PSAiQmFja0NvbXBhdCIgJiYgdGhpcy5vdXRlckJvcmRlciA/IDIgOiAwKSkgKyAicHgiOw0KCXRoaXMuc2hvd0NvbnRlbnQoKTsNCn07DQpMeXRlQm94LnByb3RvdHlwZS5zaG93Q29udGVudCA9IGZ1bmN0aW9uKCkgew0KCWlmICh0aGlzLndEb25lICYmIHRoaXMuaERvbmUpIHsNCgkJZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLnNob3dDb250ZW50VGltZXJDb3VudDsgaSsrKSB7IHdpbmRvdy5jbGVhclRpbWVvdXQodGhpcy5zaG93Q29udGVudFRpbWVyQXJyYXlbaV0pOyB9DQoJCWlmICh0aGlzLm91dGVyQm9yZGVyKSB7DQoJCQl0aGlzLmRvYy5nZXRFbGVtZW50QnlJZCgnbGJPdXRlckNvbnRhaW5lcicpLnN0eWxlLmJvcmRlckJvdHRvbSA9ICdub25lJzsNCgkJfQ0KCQl0aGlzLmRvYy5nZXRFbGVtZW50QnlJZCgnbGJMb2FkaW5nJykuc3R5bGUuZGlzcGxheSA9ICdub25lJzsNCgkJaWYgKHRoaXMuaXNMeXRlZnJhbWUpIHsNCgkJCXRoaXMuZG9jLmdldEVsZW1lbnRCeUlkKCdsYklmcmFtZScpLnN0eWxlLmRpc3BsYXkgPSAnJzsNCgkJCXRoaXMuYXBwZWFyKCdsYklmcmFtZScsICh0aGlzLmRvQW5pbWF0aW9ucyA/IDAgOiAxMDApKTsNCgkJfSBlbHNlIHsNCgkJCXRoaXMuZG9jLmdldEVsZW1lbnRCeUlkKCdsYkltYWdlJykuc3R5bGUuZGlzcGxheSA9ICcnOw0KCQkJdGhpcy5hcHBlYXIoJ2xiSW1hZ2UnLCAodGhpcy5kb0FuaW1hdGlvbnMgPyAwIDogMTAwKSk7DQoJCQl0aGlzLnByZWxvYWROZWlnaGJvckltYWdlcygpOw0KCQl9DQoJCWlmICh0aGlzLmlzU2xpZGVzaG93KSB7DQoJCQlpZih0aGlzLmFjdGl2ZVNsaWRlID09ICh0aGlzLnNsaWRlQXJyYXkubGVuZ3RoIC0gMSkpIHsNCgkJCQlpZiAodGhpcy5hdXRvRW5kKSB7DQoJCQkJCXRoaXMuc2xpZGVzaG93SURBcnJheVt0aGlzLnNsaWRlc2hvd0lEQ291bnQrK10gPSBzZXRUaW1lb3V0KCJteUx5dGVib3guZW5kKCdzbGlkZXNob3cnKSIsIHRoaXMuc2xpZGVJbnRlcnZhbCk7DQoJCQkJfQ0KCQkJfSBlbHNlIHsNCgkJCQlpZiAoIXRoaXMuaXNQYXVzZWQpIHsNCgkJCQkJdGhpcy5zbGlkZXNob3dJREFycmF5W3RoaXMuc2xpZGVzaG93SURDb3VudCsrXSA9IHNldFRpbWVvdXQoIm15THl0ZWJveC5jaGFuZ2VDb250ZW50KCIrKHRoaXMuYWN0aXZlU2xpZGUrMSkrIikiLCB0aGlzLnNsaWRlSW50ZXJ2YWwpOw0KCQkJCX0NCgkJCX0NCgkJCXRoaXMuZG9jLmdldEVsZW1lbnRCeUlkKCdsYkhvdmVyTmF2Jykuc3R5bGUuZGlzcGxheSA9ICh0aGlzLnNob3dOYXZpZ2F0aW9uICYmIHRoaXMubmF2VHlwZSA9PSAxID8gJycgOiAnbm9uZScpOw0KCQkJdGhpcy5kb2MuZ2V0RWxlbWVudEJ5SWQoJ2xiQ2xvc2UnKS5zdHlsZS5kaXNwbGF5ID0gKHRoaXMuc2hvd0Nsb3NlID8gJycgOiAnbm9uZScpOw0KCQkJdGhpcy5kb2MuZ2V0RWxlbWVudEJ5SWQoJ2xiRGV0YWlscycpLnN0eWxlLmRpc3BsYXkgPSAodGhpcy5zaG93RGV0YWlscyA/ICcnIDogJ25vbmUnKTsNCgkJCXRoaXMuZG9jLmdldEVsZW1lbnRCeUlkKCdsYlBhdXNlJykuc3R5bGUuZGlzcGxheSA9ICh0aGlzLnNob3dQbGF5UGF1c2UgJiYgIXRoaXMuaXNQYXVzZWQgPyAnJyA6ICdub25lJyk7DQoJCQl0aGlzLmRvYy5nZXRFbGVtZW50QnlJZCgnbGJQbGF5Jykuc3R5bGUuZGlzcGxheSA9ICh0aGlzLnNob3dQbGF5UGF1c2UgJiYgIXRoaXMuaXNQYXVzZWQgPyAnbm9uZScgOiAnJyk7DQoJCQl0aGlzLmRvYy5nZXRFbGVtZW50QnlJZCgnbGJOYXZEaXNwbGF5Jykuc3R5bGUuZGlzcGxheSA9ICh0aGlzLnNob3dOYXZpZ2F0aW9uICYmIHRoaXMubmF2VHlwZSA9PSAyID8gJycgOiAnbm9uZScpOw0KCQl9IGVsc2Ugew0KCQkJdGhpcy5kb2MuZ2V0RWxlbWVudEJ5SWQoJ2xiSG92ZXJOYXYnKS5zdHlsZS5kaXNwbGF5ID0gKHRoaXMubmF2VHlwZSA9PSAxICYmICF0aGlzLmlzTHl0ZWZyYW1lID8gJycgOiAnbm9uZScpOw0KCQkJaWYgKCh0aGlzLm5hdlR5cGUgPT0gMiAmJiAhdGhpcy5pc0x5dGVmcmFtZSAmJiB0aGlzLmltYWdlQXJyYXkubGVuZ3RoID4gMSkgfHwgKHRoaXMuZnJhbWVBcnJheS5sZW5ndGggPiAxICYmIHRoaXMuaXNMeXRlZnJhbWUpKSB7DQoJCQkJdGhpcy5kb2MuZ2V0RWxlbWVudEJ5SWQoJ2xiTmF2RGlzcGxheScpLnN0eWxlLmRpc3BsYXkgPSAnJzsNCgkJCX0gZWxzZSB7DQoJCQkJdGhpcy5kb2MuZ2V0RWxlbWVudEJ5SWQoJ2xiTmF2RGlzcGxheScpLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7DQoJCQl9DQoJCQl0aGlzLmRvYy5nZXRFbGVtZW50QnlJZCgnbGJDbG9zZScpLnN0eWxlLmRpc3BsYXkgPSAnJzsNCgkJCXRoaXMuZG9jLmdldEVsZW1lbnRCeUlkKCdsYkRldGFpbHMnKS5zdHlsZS5kaXNwbGF5ID0gJyc7DQoJCQl0aGlzLmRvYy5nZXRFbGVtZW50QnlJZCgnbGJQYXVzZScpLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7DQoJCQl0aGlzLmRvYy5nZXRFbGVtZW50QnlJZCgnbGJQbGF5Jykuc3R5bGUuZGlzcGxheSA9ICdub25lJzsNCgkJfQ0KCQl0aGlzLmRvYy5nZXRFbGVtZW50QnlJZCgnbGJJbWFnZUNvbnRhaW5lcicpLnN0eWxlLmRpc3BsYXkgPSAodGhpcy5pc0x5dGVmcmFtZSA/ICdub25lJyA6ICcnKTsNCgkJdGhpcy5kb2MuZ2V0RWxlbWVudEJ5SWQoJ2xiSWZyYW1lQ29udGFpbmVyJykuc3R5bGUuZGlzcGxheSA9ICh0aGlzLmlzTHl0ZWZyYW1lID8gJycgOiAnbm9uZScpOw0KCQl0cnkgew0KCQkJdGhpcy5kb2MuZ2V0RWxlbWVudEJ5SWQoJ2xiSWZyYW1lJykuc3JjID0gdGhpcy5mcmFtZUFycmF5W3RoaXMuYWN0aXZlRnJhbWVdWzBdOw0KCQl9IGNhdGNoKGUpIHsgfQ0KCX0gZWxzZSB7DQoJCXRoaXMuc2hvd0NvbnRlbnRUaW1lckFycmF5W3RoaXMuc2hvd0NvbnRlbnRUaW1lckNvdW50KytdID0gc2V0VGltZW91dCgibXlMeXRlYm94LnNob3dDb250ZW50KCkiLCAyMDApOw0KCX0NCn07DQpMeXRlQm94LnByb3RvdHlwZS51cGRhdGVEZXRhaWxzID0gZnVuY3Rpb24oKSB7DQoJdmFyIG9iamVjdCA9IHRoaXMuZG9jLmdldEVsZW1lbnRCeUlkKCdsYkNhcHRpb24nKTsNCgl2YXIgc1RpdGxlID0gKHRoaXMuaXNTbGlkZXNob3cgPyB0aGlzLnNsaWRlQXJyYXlbdGhpcy5hY3RpdmVTbGlkZV1bMV0gOiAodGhpcy5pc0x5dGVmcmFtZSA/IHRoaXMuZnJhbWVBcnJheVt0aGlzLmFjdGl2ZUZyYW1lXVsxXSA6IHRoaXMuaW1hZ2VBcnJheVt0aGlzLmFjdGl2ZUltYWdlXVsxXSkpOw0KCW9iamVjdC5zdHlsZS5kaXNwbGF5ID0gJyc7DQoJb2JqZWN0LmlubmVySFRNTCA9IChzVGl0bGUgPT0gbnVsbCA/ICcnIDogc1RpdGxlKTsNCgl0aGlzLnVwZGF0ZU5hdigpOw0KCXRoaXMuZG9jLmdldEVsZW1lbnRCeUlkKCdsYkRldGFpbHNDb250YWluZXInKS5zdHlsZS5kaXNwbGF5ID0gJyc7DQoJb2JqZWN0ID0gdGhpcy5kb2MuZ2V0RWxlbWVudEJ5SWQoJ2xiTnVtYmVyRGlzcGxheScpOw0KCWlmICh0aGlzLmlzU2xpZGVzaG93ICYmIHRoaXMuc2xpZGVBcnJheS5sZW5ndGggPiAxKSB7DQoJCW9iamVjdC5zdHlsZS5kaXNwbGF5ID0gJyc7DQoJCW9iamVjdC5pbm5lckhUTUwgPSAiSW1hZ2UgIiArIGV2YWwodGhpcy5hY3RpdmVTbGlkZSArIDEpICsgIiBvZiAiICsgdGhpcy5zbGlkZUFycmF5Lmxlbmd0aDsNCgkJdGhpcy5kb2MuZ2V0RWxlbWVudEJ5SWQoJ2xiTmF2RGlzcGxheScpLnN0eWxlLmRpc3BsYXkgPSAodGhpcy5uYXZUeXBlID09IDIgJiYgdGhpcy5zaG93TmF2aWdhdGlvbiA/ICcnIDogJ25vbmUnKTsNCgl9IGVsc2UgaWYgKHRoaXMuaW1hZ2VBcnJheS5sZW5ndGggPiAxICYmICF0aGlzLmlzTHl0ZWZyYW1lKSB7DQoJCW9iamVjdC5zdHlsZS5kaXNwbGF5ID0gJyc7DQoJCW9iamVjdC5pbm5lckhUTUwgPSAiSW1hZ2UgIiArIGV2YWwodGhpcy5hY3RpdmVJbWFnZSArIDEpICsgIiBvZiAiICsgdGhpcy5pbWFnZUFycmF5Lmxlbmd0aDsNCgkJdGhpcy5kb2MuZ2V0RWxlbWVudEJ5SWQoJ2xiTmF2RGlzcGxheScpLnN0eWxlLmRpc3BsYXkgPSAodGhpcy5uYXZUeXBlID09IDIgPyAnJyA6ICdub25lJyk7DQoJfSBlbHNlIGlmICh0aGlzLmZyYW1lQXJyYXkubGVuZ3RoID4gMSAmJiB0aGlzLmlzTHl0ZWZyYW1lKSB7DQoJCW9iamVjdC5zdHlsZS5kaXNwbGF5ID0gJyc7DQoJCW9iamVjdC5pbm5lckhUTUwgPSAiUGFnZSAiICsgZXZhbCh0aGlzLmFjdGl2ZUZyYW1lICsgMSkgKyAiIG9mICIgKyB0aGlzLmZyYW1lQXJyYXkubGVuZ3RoOw0KCQl0aGlzLmRvYy5nZXRFbGVtZW50QnlJZCgnbGJOYXZEaXNwbGF5Jykuc3R5bGUuZGlzcGxheSA9ICcnOw0KCX0gZWxzZSB7DQoJCXRoaXMuZG9jLmdldEVsZW1lbnRCeUlkKCdsYk5hdkRpc3BsYXknKS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOw0KCX0NCgl0aGlzLmFwcGVhcignbGJEZXRhaWxzQ29udGFpbmVyJywgKHRoaXMuZG9BbmltYXRpb25zID8gMCA6IDEwMCkpOw0KfTsNCkx5dGVCb3gucHJvdG90eXBlLnVwZGF0ZU5hdiA9IGZ1bmN0aW9uKCkgew0KCWlmICh0aGlzLmlzU2xpZGVzaG93KSB7DQoJCWlmICh0aGlzLmFjdGl2ZVNsaWRlICE9IDApIHsNCgkJCXZhciBvYmplY3QgPSAodGhpcy5uYXZUeXBlID09IDIgPyB0aGlzLmRvYy5nZXRFbGVtZW50QnlJZCgnbGJQcmV2MicpIDogdGhpcy5kb2MuZ2V0RWxlbWVudEJ5SWQoJ2xiUHJldicpKTsNCgkJCQlvYmplY3Quc3R5bGUuZGlzcGxheSA9ICcnOw0KCQkJCW9iamVjdC5vbmNsaWNrID0gZnVuY3Rpb24oKSB7DQoJCQkJCWlmIChteUx5dGVib3gucGF1c2VPblByZXZDbGljaykgeyBteUx5dGVib3gudG9nZ2xlUGxheVBhdXNlKCJsYlBhdXNlIiwgImxiUGxheSIpOyB9DQoJCQkJCW15THl0ZWJveC5jaGFuZ2VDb250ZW50KG15THl0ZWJveC5hY3RpdmVTbGlkZSAtIDEpOyByZXR1cm4gZmFsc2U7DQoJCQkJfQ0KCQl9IGVsc2Ugew0KCQkJaWYgKHRoaXMubmF2VHlwZSA9PSAyKSB7IHRoaXMuZG9jLmdldEVsZW1lbnRCeUlkKCdsYlByZXYyX09mZicpLnN0eWxlLmRpc3BsYXkgPSAnJzsgfQ0KCQl9DQoJCWlmICh0aGlzLmFjdGl2ZVNsaWRlICE9ICh0aGlzLnNsaWRlQXJyYXkubGVuZ3RoIC0gMSkpIHsNCgkJCXZhciBvYmplY3QgPSAodGhpcy5uYXZUeXBlID09IDIgPyB0aGlzLmRvYy5nZXRFbGVtZW50QnlJZCgnbGJOZXh0MicpIDogdGhpcy5kb2MuZ2V0RWxlbWVudEJ5SWQoJ2xiTmV4dCcpKTsNCgkJCQlvYmplY3Quc3R5bGUuZGlzcGxheSA9ICcnOw0KCQkJCW9iamVjdC5vbmNsaWNrID0gZnVuY3Rpb24oKSB7DQoJCQkJCWlmIChteUx5dGVib3gucGF1c2VPbk5leHRDbGljaykgeyBteUx5dGVib3gudG9nZ2xlUGxheVBhdXNlKCJsYlBhdXNlIiwgImxiUGxheSIpOyB9DQoJCQkJCW15THl0ZWJveC5jaGFuZ2VDb250ZW50KG15THl0ZWJveC5hY3RpdmVTbGlkZSArIDEpOyByZXR1cm4gZmFsc2U7DQoJCQkJfQ0KCQl9IGVsc2Ugew0KCQkJaWYgKHRoaXMubmF2VHlwZSA9PSAyKSB7IHRoaXMuZG9jLmdldEVsZW1lbnRCeUlkKCdsYk5leHQyX09mZicpLnN0eWxlLmRpc3BsYXkgPSAnJzsgfQ0KCQl9DQoJfSBlbHNlIGlmICh0aGlzLmlzTHl0ZWZyYW1lKSB7DQoJCWlmKHRoaXMuYWN0aXZlRnJhbWUgIT0gMCkgew0KCQkJdmFyIG9iamVjdCA9IHRoaXMuZG9jLmdldEVsZW1lbnRCeUlkKCdsYlByZXYyJyk7DQoJCQkJb2JqZWN0LnN0eWxlLmRpc3BsYXkgPSAnJzsNCgkJCQlvYmplY3Qub25jbGljayA9IGZ1bmN0aW9uKCkgew0KCQkJCQlteUx5dGVib3guY2hhbmdlQ29udGVudChteUx5dGVib3guYWN0aXZlRnJhbWUgLSAxKTsgcmV0dXJuIGZhbHNlOw0KCQkJCX0NCgkJfSBlbHNlIHsNCgkJCXRoaXMuZG9jLmdldEVsZW1lbnRCeUlkKCdsYlByZXYyX09mZicpLnN0eWxlLmRpc3BsYXkgPSAnJzsNCgkJfQ0KCQlpZih0aGlzLmFjdGl2ZUZyYW1lICE9ICh0aGlzLmZyYW1lQXJyYXkubGVuZ3RoIC0gMSkpIHsNCgkJCXZhciBvYmplY3QgPSB0aGlzLmRvYy5nZXRFbGVtZW50QnlJZCgnbGJOZXh0MicpOw0KCQkJCW9iamVjdC5zdHlsZS5kaXNwbGF5ID0gJyc7DQoJCQkJb2JqZWN0Lm9uY2xpY2sgPSBmdW5jdGlvbigpIHsNCgkJCQkJbXlMeXRlYm94LmNoYW5nZUNvbnRlbnQobXlMeXRlYm94LmFjdGl2ZUZyYW1lICsgMSk7IHJldHVybiBmYWxzZTsNCgkJCQl9DQoJCX0gZWxzZSB7DQoJCQl0aGlzLmRvYy5nZXRFbGVtZW50QnlJZCgnbGJOZXh0Ml9PZmYnKS5zdHlsZS5kaXNwbGF5ID0gJyc7DQoJCX0JCQ0KCX0gZWxzZSB7DQoJCWlmKHRoaXMuYWN0aXZlSW1hZ2UgIT0gMCkgew0KCQkJdmFyIG9iamVjdCA9ICh0aGlzLm5hdlR5cGUgPT0gMiA/IHRoaXMuZG9jLmdldEVsZW1lbnRCeUlkKCdsYlByZXYyJykgOiB0aGlzLmRvYy5nZXRFbGVtZW50QnlJZCgnbGJQcmV2JykpOw0KCQkJCW9iamVjdC5zdHlsZS5kaXNwbGF5ID0gJyc7DQoJCQkJb2JqZWN0Lm9uY2xpY2sgPSBmdW5jdGlvbigpIHsNCgkJCQkJbXlMeXRlYm94LmNoYW5nZUNvbnRlbnQobXlMeXRlYm94LmFjdGl2ZUltYWdlIC0gMSk7IHJldHVybiBmYWxzZTsNCgkJCQl9DQoJCX0gZWxzZSB7DQoJCQlpZiAodGhpcy5uYXZUeXBlID09IDIpIHsgdGhpcy5kb2MuZ2V0RWxlbWVudEJ5SWQoJ2xiUHJldjJfT2ZmJykuc3R5bGUuZGlzcGxheSA9ICcnOyB9DQoJCX0NCgkJaWYodGhpcy5hY3RpdmVJbWFnZSAhPSAodGhpcy5pbWFnZUFycmF5Lmxlbmd0aCAtIDEpKSB7DQoJCQl2YXIgb2JqZWN0ID0gKHRoaXMubmF2VHlwZSA9PSAyID8gdGhpcy5kb2MuZ2V0RWxlbWVudEJ5SWQoJ2xiTmV4dDInKSA6IHRoaXMuZG9jLmdldEVsZW1lbnRCeUlkKCdsYk5leHQnKSk7DQoJCQkJb2JqZWN0LnN0eWxlLmRpc3BsYXkgPSAnJzsNCgkJCQlvYmplY3Qub25jbGljayA9IGZ1bmN0aW9uKCkgew0KCQkJCQlteUx5dGVib3guY2hhbmdlQ29udGVudChteUx5dGVib3guYWN0aXZlSW1hZ2UgKyAxKTsgcmV0dXJuIGZhbHNlOw0KCQkJCX0NCgkJfSBlbHNlIHsNCgkJCWlmICh0aGlzLm5hdlR5cGUgPT0gMikgeyB0aGlzLmRvYy5nZXRFbGVtZW50QnlJZCgnbGJOZXh0Ml9PZmYnKS5zdHlsZS5kaXNwbGF5ID0gJyc7IH0NCgkJfQ0KCX0NCgl0aGlzLmVuYWJsZUtleWJvYXJkTmF2KCk7DQp9Ow0KTHl0ZUJveC5wcm90b3R5cGUuZW5hYmxlS2V5Ym9hcmROYXYgPSBmdW5jdGlvbigpIHsgZG9jdW1lbnQub25rZXlkb3duID0gdGhpcy5rZXlib2FyZEFjdGlvbjsgfTsNCkx5dGVCb3gucHJvdG90eXBlLmRpc2FibGVLZXlib2FyZE5hdiA9IGZ1bmN0aW9uKCkgeyBkb2N1bWVudC5vbmtleWRvd24gPSAnJzsgfTsNCkx5dGVCb3gucHJvdG90eXBlLmtleWJvYXJkQWN0aW9uID0gZnVuY3Rpb24oZSkgew0KCXZhciBrZXljb2RlID0ga2V5ID0gZXNjYXBlID0gbnVsbDsNCglrZXljb2RlCT0gKGUgPT0gbnVsbCkgPyBldmVudC5rZXlDb2RlIDogZS53aGljaDsNCglrZXkJCT0gU3RyaW5nLmZyb21DaGFyQ29kZShrZXljb2RlKS50b0xvd2VyQ2FzZSgpOw0KCWVzY2FwZSAgPSAoZSA9PSBudWxsKSA/IDI3IDogZS5ET01fVktfRVNDQVBFOw0KCWlmICgoa2V5ID09ICd4JykgfHwgKGtleSA9PSAnYycpIHx8IChrZXljb2RlID09IGVzY2FwZSkpIHsNCgkJbXlMeXRlYm94LmVuZCgpOw0KCX0gZWxzZSBpZiAoKGtleSA9PSAncCcpIHx8IChrZXljb2RlID09IDM3KSkgew0KCQlpZiAobXlMeXRlYm94LmlzU2xpZGVzaG93KSB7DQoJCQlpZihteUx5dGVib3guYWN0aXZlU2xpZGUgIT0gMCkgew0KCQkJCW15THl0ZWJveC5kaXNhYmxlS2V5Ym9hcmROYXYoKTsNCgkJCQlteUx5dGVib3guY2hhbmdlQ29udGVudChteUx5dGVib3guYWN0aXZlU2xpZGUgLSAxKTsNCgkJCX0NCgkJfSBlbHNlIGlmIChteUx5dGVib3guaXNMeXRlZnJhbWUpIHsNCgkJCWlmKG15THl0ZWJveC5hY3RpdmVGcmFtZSAhPSAwKSB7DQoJCQkJbXlMeXRlYm94LmRpc2FibGVLZXlib2FyZE5hdigpOw0KCQkJCW15THl0ZWJveC5jaGFuZ2VDb250ZW50KG15THl0ZWJveC5hY3RpdmVGcmFtZSAtIDEpOw0KCQkJfQ0KCQl9IGVsc2Ugew0KCQkJaWYobXlMeXRlYm94LmFjdGl2ZUltYWdlICE9IDApIHsNCgkJCQlteUx5dGVib3guZGlzYWJsZUtleWJvYXJkTmF2KCk7DQoJCQkJbXlMeXRlYm94LmNoYW5nZUNvbnRlbnQobXlMeXRlYm94LmFjdGl2ZUltYWdlIC0gMSk7DQoJCQl9DQoJCX0NCgl9IGVsc2UgaWYgKChrZXkgPT0gJ24nKSB8fCAoa2V5Y29kZSA9PSAzOSkpIHsNCgkJaWYgKG15THl0ZWJveC5pc1NsaWRlc2hvdykgew0KCQkJaWYobXlMeXRlYm94LmFjdGl2ZVNsaWRlICE9IChteUx5dGVib3guc2xpZGVBcnJheS5sZW5ndGggLSAxKSkgew0KCQkJCW15THl0ZWJveC5kaXNhYmxlS2V5Ym9hcmROYXYoKTsNCgkJCQlteUx5dGVib3guY2hhbmdlQ29udGVudChteUx5dGVib3guYWN0aXZlU2xpZGUgKyAxKTsNCgkJCX0NCgkJfSBlbHNlIGlmIChteUx5dGVib3guaXNMeXRlZnJhbWUpIHsNCgkJCWlmKG15THl0ZWJveC5hY3RpdmVGcmFtZSAhPSAobXlMeXRlYm94LmZyYW1lQXJyYXkubGVuZ3RoIC0gMSkpIHsNCgkJCQlteUx5dGVib3guZGlzYWJsZUtleWJvYXJkTmF2KCk7DQoJCQkJbXlMeXRlYm94LmNoYW5nZUNvbnRlbnQobXlMeXRlYm94LmFjdGl2ZUZyYW1lICsgMSk7DQoJCQl9DQoJCX0gZWxzZSB7DQoJCQlpZihteUx5dGVib3guYWN0aXZlSW1hZ2UgIT0gKG15THl0ZWJveC5pbWFnZUFycmF5Lmxlbmd0aCAtIDEpKSB7DQoJCQkJbXlMeXRlYm94LmRpc2FibGVLZXlib2FyZE5hdigpOw0KCQkJCW15THl0ZWJveC5jaGFuZ2VDb250ZW50KG15THl0ZWJveC5hY3RpdmVJbWFnZSArIDEpOw0KCQkJfQ0KCQl9DQoJfQ0KfTsNCkx5dGVCb3gucHJvdG90eXBlLnByZWxvYWROZWlnaGJvckltYWdlcyA9IGZ1bmN0aW9uKCkgew0KCWlmICh0aGlzLmlzU2xpZGVzaG93KSB7DQoJCWlmICgodGhpcy5zbGlkZUFycmF5Lmxlbmd0aCAtIDEpID4gdGhpcy5hY3RpdmVTbGlkZSkgew0KCQkJcHJlbG9hZE5leHRJbWFnZSA9IG5ldyBJbWFnZSgpOw0KCQkJcHJlbG9hZE5leHRJbWFnZS5zcmMgPSB0aGlzLnNsaWRlQXJyYXlbdGhpcy5hY3RpdmVTbGlkZSArIDFdWzBdOw0KCQl9DQoJCWlmKHRoaXMuYWN0aXZlU2xpZGUgPiAwKSB7DQoJCQlwcmVsb2FkUHJldkltYWdlID0gbmV3IEltYWdlKCk7DQoJCQlwcmVsb2FkUHJldkltYWdlLnNyYyA9IHRoaXMuc2xpZGVBcnJheVt0aGlzLmFjdGl2ZVNsaWRlIC0gMV1bMF07DQoJCX0NCgl9IGVsc2Ugew0KCQlpZiAoKHRoaXMuaW1hZ2VBcnJheS5sZW5ndGggLSAxKSA+IHRoaXMuYWN0aXZlSW1hZ2UpIHsNCgkJCXByZWxvYWROZXh0SW1hZ2UgPSBuZXcgSW1hZ2UoKTsNCgkJCXByZWxvYWROZXh0SW1hZ2Uuc3JjID0gdGhpcy5pbWFnZUFycmF5W3RoaXMuYWN0aXZlSW1hZ2UgKyAxXVswXTsNCgkJfQ0KCQlpZih0aGlzLmFjdGl2ZUltYWdlID4gMCkgew0KCQkJcHJlbG9hZFByZXZJbWFnZSA9IG5ldyBJbWFnZSgpOw0KCQkJcHJlbG9hZFByZXZJbWFnZS5zcmMgPSB0aGlzLmltYWdlQXJyYXlbdGhpcy5hY3RpdmVJbWFnZSAtIDFdWzBdOw0KCQl9DQoJfQ0KfTsNCkx5dGVCb3gucHJvdG90eXBlLnRvZ2dsZVBsYXlQYXVzZSA9IGZ1bmN0aW9uKGhpZGVJRCwgc2hvd0lEKSB7DQoJaWYgKHRoaXMuaXNTbGlkZXNob3cgJiYgaGlkZUlEID09ICJsYlBhdXNlIikgew0KCQlmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuc2xpZGVzaG93SURDb3VudDsgaSsrKSB7IHdpbmRvdy5jbGVhclRpbWVvdXQodGhpcy5zbGlkZXNob3dJREFycmF5W2ldKTsgfQ0KCX0NCgl0aGlzLmRvYy5nZXRFbGVtZW50QnlJZChoaWRlSUQpLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7DQoJdGhpcy5kb2MuZ2V0RWxlbWVudEJ5SWQoc2hvd0lEKS5zdHlsZS5kaXNwbGF5ID0gJyc7DQoJaWYgKGhpZGVJRCA9PSAibGJQbGF5Iikgew0KCQl0aGlzLmlzUGF1c2VkID0gZmFsc2U7DQoJCWlmICh0aGlzLmFjdGl2ZVNsaWRlID09ICh0aGlzLnNsaWRlQXJyYXkubGVuZ3RoIC0gMSkpIHsNCgkJCXRoaXMuZW5kKCk7DQoJCX0gZWxzZSB7DQoJCQl0aGlzLmNoYW5nZUNvbnRlbnQodGhpcy5hY3RpdmVTbGlkZSArIDEpOw0KCQl9DQoJfSBlbHNlIHsNCgkJdGhpcy5pc1BhdXNlZCA9IHRydWU7DQoJfQ0KfTsNCkx5dGVCb3gucHJvdG90eXBlLmVuZCA9IGZ1bmN0aW9uKGNhbGxlcikgew0KCXZhciBjbG9zZUNsaWNrID0gKGNhbGxlciA9PSAnc2xpZGVzaG93JyA/IGZhbHNlIDogdHJ1ZSk7DQoJaWYgKHRoaXMuaXNTbGlkZXNob3cgJiYgdGhpcy5pc1BhdXNlZCAmJiAhY2xvc2VDbGljaykgeyByZXR1cm47IH0NCgl0aGlzLmRpc2FibGVLZXlib2FyZE5hdigpOw0KCXRoaXMuZG9jLmdldEVsZW1lbnRCeUlkKCdsYk1haW4nKS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOw0KCXRoaXMuZmFkZSgnbGJPdmVybGF5JywgKHRoaXMuZG9BbmltYXRpb25zID8gdGhpcy5tYXhPcGFjaXR5IDogMCkpOw0KCXRoaXMudG9nZ2xlU2VsZWN0cygndmlzaWJsZScpOw0KCWlmICh0aGlzLmhpZGVGbGFzaCkgeyB0aGlzLnRvZ2dsZUZsYXNoKCd2aXNpYmxlJyk7IH0NCglpZiAodGhpcy5pc1NsaWRlc2hvdykgew0KCQlmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuc2xpZGVzaG93SURDb3VudDsgaSsrKSB7IHdpbmRvdy5jbGVhclRpbWVvdXQodGhpcy5zbGlkZXNob3dJREFycmF5W2ldKTsgfQ0KCX0NCglpZiAodGhpcy5pc0x5dGVmcmFtZSkgew0KCQkgdGhpcy5pbml0aWFsaXplKCk7DQoJfQ0KfTsNCkx5dGVCb3gucHJvdG90eXBlLmNoZWNrRnJhbWUgPSBmdW5jdGlvbigpIHsNCglpZiAod2luZG93LnBhcmVudC5mcmFtZXNbd2luZG93Lm5hbWVdICYmIChwYXJlbnQuZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2ZyYW1lc2V0JykubGVuZ3RoIDw9IDApKSB7DQoJCXRoaXMuaXNGcmFtZSA9IHRydWU7DQoJCXRoaXMubHl0ZWJveCA9ICJ3aW5kb3cucGFyZW50LiIgKyB3aW5kb3cubmFtZSArICIubXlMeXRlYm94IjsNCgkJdGhpcy5kb2MgPSBwYXJlbnQuZG9jdW1lbnQ7DQoJfSBlbHNlIHsNCgkJdGhpcy5pc0ZyYW1lID0gZmFsc2U7DQoJCXRoaXMubHl0ZWJveCA9ICJteUx5dGVib3giOw0KCQl0aGlzLmRvYyA9IGRvY3VtZW50Ow0KCX0NCn07DQpMeXRlQm94LnByb3RvdHlwZS5nZXRQaXhlbFJhdGUgPSBmdW5jdGlvbihjdXIsIGltZykgew0KCXZhciBkaWZmID0gKGltZyA+IGN1cikgPyBpbWcgLSBjdXIgOiBjdXIgLSBpbWc7DQoJaWYgKGRpZmYgPj0gMCAmJiBkaWZmIDw9IDEwMCkgeyByZXR1cm4gMTA7IH0NCglpZiAoZGlmZiA+IDEwMCAmJiBkaWZmIDw9IDIwMCkgeyByZXR1cm4gMTU7IH0NCglpZiAoZGlmZiA+IDIwMCAmJiBkaWZmIDw9IDMwMCkgeyByZXR1cm4gMjA7IH0NCglpZiAoZGlmZiA+IDMwMCAmJiBkaWZmIDw9IDQwMCkgeyByZXR1cm4gMjU7IH0NCglpZiAoZGlmZiA+IDQwMCAmJiBkaWZmIDw9IDUwMCkgeyByZXR1cm4gMzA7IH0NCglpZiAoZGlmZiA+IDUwMCAmJiBkaWZmIDw9IDYwMCkgeyByZXR1cm4gMzU7IH0NCglpZiAoZGlmZiA+IDYwMCAmJiBkaWZmIDw9IDcwMCkgeyByZXR1cm4gNDA7IH0NCglpZiAoZGlmZiA+IDcwMCkgeyByZXR1cm4gNDU7IH0NCn07DQpMeXRlQm94LnByb3RvdHlwZS5hcHBlYXIgPSBmdW5jdGlvbihpZCwgb3BhY2l0eSkgew0KCXZhciBvYmplY3QgPSB0aGlzLmRvYy5nZXRFbGVtZW50QnlJZChpZCkuc3R5bGU7DQoJb2JqZWN0Lm9wYWNpdHkgPSAob3BhY2l0eSAvIDEwMCk7DQoJb2JqZWN0Lk1vek9wYWNpdHkgPSAob3BhY2l0eSAvIDEwMCk7DQoJb2JqZWN0LktodG1sT3BhY2l0eSA9IChvcGFjaXR5IC8gMTAwKTsNCglvYmplY3QuZmlsdGVyID0gImFscGhhKG9wYWNpdHk9IiArIChvcGFjaXR5ICsgMTApICsgIikiOw0KCWlmIChvcGFjaXR5ID09IDEwMCAmJiAoaWQgPT0gJ2xiSW1hZ2UnIHx8IGlkID09ICdsYklmcmFtZScpKSB7DQoJCXRyeSB7IG9iamVjdC5yZW1vdmVBdHRyaWJ1dGUoImZpbHRlciIpOyB9IGNhdGNoKGUpIHt9CS8qIEZpeCBhZGRlZCBmb3IgSUUgQWxwaGEgT3BhY2l0eSBGaWx0ZXIgYnVnLiAqLw0KCQl0aGlzLnVwZGF0ZURldGFpbHMoKTsNCgl9IGVsc2UgaWYgKG9wYWNpdHkgPj0gdGhpcy5tYXhPcGFjaXR5ICYmIGlkID09ICdsYk92ZXJsYXknKSB7DQoJCWZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5vdmVybGF5VGltZXJDb3VudDsgaSsrKSB7IHdpbmRvdy5jbGVhclRpbWVvdXQodGhpcy5vdmVybGF5VGltZXJBcnJheVtpXSk7IH0NCgkJcmV0dXJuOw0KCX0gZWxzZSBpZiAob3BhY2l0eSA+PSAxMDAgJiYgaWQgPT0gJ2xiRGV0YWlsc0NvbnRhaW5lcicpIHsNCgkJdHJ5IHsgb2JqZWN0LnJlbW92ZUF0dHJpYnV0ZSgiZmlsdGVyIik7IH0gY2F0Y2goZSkge30JLyogRml4IGFkZGVkIGZvciBJRSBBbHBoYSBPcGFjaXR5IEZpbHRlciBidWcuICovDQoJCWZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5pbWFnZVRpbWVyQ291bnQ7IGkrKykgeyB3aW5kb3cuY2xlYXJUaW1lb3V0KHRoaXMuaW1hZ2VUaW1lckFycmF5W2ldKTsgfQ0KCQl0aGlzLmRvYy5nZXRFbGVtZW50QnlJZCgnbGJPdmVybGF5Jykuc3R5bGUuaGVpZ2h0ID0gdGhpcy5nZXRQYWdlU2l6ZSgpWzFdICsgInB4IjsNCgl9IGVsc2Ugew0KCQlpZiAoaWQgPT0gJ2xiT3ZlcmxheScpIHsNCgkJCXRoaXMub3ZlcmxheVRpbWVyQXJyYXlbdGhpcy5vdmVybGF5VGltZXJDb3VudCsrXSA9IHNldFRpbWVvdXQoIm15THl0ZWJveC5hcHBlYXIoJyIgKyBpZCArICInLCAiICsgKG9wYWNpdHkrMjApICsgIikiLCAxKTsNCgkJfSBlbHNlIHsNCgkJCXRoaXMuaW1hZ2VUaW1lckFycmF5W3RoaXMuaW1hZ2VUaW1lckNvdW50KytdID0gc2V0VGltZW91dCgibXlMeXRlYm94LmFwcGVhcignIiArIGlkICsgIicsICIgKyAob3BhY2l0eSsxMCkgKyAiKSIsIDEpOw0KCQl9DQoJfQ0KfTsNCkx5dGVCb3gucHJvdG90eXBlLmZhZGUgPSBmdW5jdGlvbihpZCwgb3BhY2l0eSkgew0KCXZhciBvYmplY3QgPSB0aGlzLmRvYy5nZXRFbGVtZW50QnlJZChpZCkuc3R5bGU7DQoJb2JqZWN0Lm9wYWNpdHkgPSAob3BhY2l0eSAvIDEwMCk7DQoJb2JqZWN0Lk1vek9wYWNpdHkgPSAob3BhY2l0eSAvIDEwMCk7DQoJb2JqZWN0LktodG1sT3BhY2l0eSA9IChvcGFjaXR5IC8gMTAwKTsNCglvYmplY3QuZmlsdGVyID0gImFscGhhKG9wYWNpdHk9IiArIG9wYWNpdHkgKyAiKSI7DQoJaWYgKG9wYWNpdHkgPD0gMCkgew0KCQl0cnkgew0KCQkJb2JqZWN0LmRpc3BsYXkgPSAnbm9uZSc7DQoJCX0gY2F0Y2goZXJyKSB7IH0NCgl9IGVsc2UgaWYgKGlkID09ICdsYk92ZXJsYXknKSB7DQoJCXRoaXMub3ZlcmxheVRpbWVyQXJyYXlbdGhpcy5vdmVybGF5VGltZXJDb3VudCsrXSA9IHNldFRpbWVvdXQoIm15THl0ZWJveC5mYWRlKCciICsgaWQgKyAiJywgIiArIChvcGFjaXR5LTIwKSArICIpIiwgMSk7DQoJfSBlbHNlIHsNCgkJdGhpcy50aW1lcklEQXJyYXlbdGhpcy50aW1lcklEQ291bnQrK10gPSBzZXRUaW1lb3V0KCJteUx5dGVib3guZmFkZSgnIiArIGlkICsgIicsICIgKyAob3BhY2l0eS0xMCkgKyAiKSIsIDEpOw0KCX0NCn07DQpMeXRlQm94LnByb3RvdHlwZS5yZXNpemVXID0gZnVuY3Rpb24oaWQsIGN1clcsIG1heFcsIHBpeGVscmF0ZSwgc3BlZWQpIHsNCglpZiAoIXRoaXMuaERvbmUpIHsNCgkJdGhpcy5yZXNpemVXVGltZXJBcnJheVt0aGlzLnJlc2l6ZVdUaW1lckNvdW50KytdID0gc2V0VGltZW91dCgibXlMeXRlYm94LnJlc2l6ZVcoJyIgKyBpZCArICInLCAiICsgY3VyVyArICIsICIgKyBtYXhXICsgIiwgIiArIHBpeGVscmF0ZSArICIpIiwgMTAwKTsNCgkJcmV0dXJuOw0KCX0NCgl2YXIgb2JqZWN0ID0gdGhpcy5kb2MuZ2V0RWxlbWVudEJ5SWQoaWQpOw0KCXZhciB0aW1lciA9IHNwZWVkID8gc3BlZWQgOiAodGhpcy5yZXNpemVEdXJhdGlvbi8yKTsNCgl2YXIgbmV3VyA9ICh0aGlzLmRvQW5pbWF0aW9ucyA/IGN1clcgOiBtYXhXKTsNCglvYmplY3Quc3R5bGUud2lkdGggPSAobmV3VykgKyAicHgiOw0KCWlmIChuZXdXIDwgbWF4Vykgew0KCQluZXdXICs9IChuZXdXICsgcGl4ZWxyYXRlID49IG1heFcpID8gKG1heFcgLSBuZXdXKSA6IHBpeGVscmF0ZTsNCgl9IGVsc2UgaWYgKG5ld1cgPiBtYXhXKSB7DQoJCW5ld1cgLT0gKG5ld1cgLSBwaXhlbHJhdGUgPD0gbWF4VykgPyAobmV3VyAtIG1heFcpIDogcGl4ZWxyYXRlOw0KCX0NCgl0aGlzLnJlc2l6ZVdUaW1lckFycmF5W3RoaXMucmVzaXplV1RpbWVyQ291bnQrK10gPSBzZXRUaW1lb3V0KCJteUx5dGVib3gucmVzaXplVygnIiArIGlkICsgIicsICIgKyBuZXdXICsgIiwgIiArIG1heFcgKyAiLCAiICsgcGl4ZWxyYXRlICsgIiwgIiArICh0aW1lciswLjAyKSArICIpIiwgdGltZXIrMC4wMik7DQoJaWYgKHBhcnNlSW50KG9iamVjdC5zdHlsZS53aWR0aCkgPT0gbWF4Vykgew0KCQl0aGlzLndEb25lID0gdHJ1ZTsNCgkJZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLnJlc2l6ZVdUaW1lckNvdW50OyBpKyspIHsgd2luZG93LmNsZWFyVGltZW91dCh0aGlzLnJlc2l6ZVdUaW1lckFycmF5W2ldKTsgfQ0KCX0NCn07DQpMeXRlQm94LnByb3RvdHlwZS5yZXNpemVIID0gZnVuY3Rpb24oaWQsIGN1ckgsIG1heEgsIHBpeGVscmF0ZSwgc3BlZWQpIHsNCgl2YXIgdGltZXIgPSBzcGVlZCA/IHNwZWVkIDogKHRoaXMucmVzaXplRHVyYXRpb24vMik7DQoJdmFyIG9iamVjdCA9IHRoaXMuZG9jLmdldEVsZW1lbnRCeUlkKGlkKTsNCgl2YXIgbmV3SCA9ICh0aGlzLmRvQW5pbWF0aW9ucyA/IGN1ckggOiBtYXhIKTsNCglvYmplY3Quc3R5bGUuaGVpZ2h0ID0gKG5ld0gpICsgInB4IjsNCglpZiAobmV3SCA8IG1heEgpIHsNCgkJbmV3SCArPSAobmV3SCArIHBpeGVscmF0ZSA+PSBtYXhIKSA/IChtYXhIIC0gbmV3SCkgOiBwaXhlbHJhdGU7DQoJfSBlbHNlIGlmIChuZXdIID4gbWF4SCkgew0KCQluZXdIIC09IChuZXdIIC0gcGl4ZWxyYXRlIDw9IG1heEgpID8gKG5ld0ggLSBtYXhIKSA6IHBpeGVscmF0ZTsNCgl9DQoJdGhpcy5yZXNpemVIVGltZXJBcnJheVt0aGlzLnJlc2l6ZUhUaW1lckNvdW50KytdID0gc2V0VGltZW91dCgibXlMeXRlYm94LnJlc2l6ZUgoJyIgKyBpZCArICInLCAiICsgbmV3SCArICIsICIgKyBtYXhIICsgIiwgIiArIHBpeGVscmF0ZSArICIsICIgKyAodGltZXIrLjAyKSArICIpIiwgdGltZXIrLjAyKTsNCglpZiAocGFyc2VJbnQob2JqZWN0LnN0eWxlLmhlaWdodCkgPT0gbWF4SCkgew0KCQl0aGlzLmhEb25lID0gdHJ1ZTsNCgkJZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLnJlc2l6ZUhUaW1lckNvdW50OyBpKyspIHsgd2luZG93LmNsZWFyVGltZW91dCh0aGlzLnJlc2l6ZUhUaW1lckFycmF5W2ldKTsgfQ0KCX0NCn07DQpMeXRlQm94LnByb3RvdHlwZS5nZXRQYWdlU2Nyb2xsID0gZnVuY3Rpb24oKSB7DQoJaWYgKHNlbGYucGFnZVlPZmZzZXQpIHsNCgkJcmV0dXJuIHRoaXMuaXNGcmFtZSA/IHBhcmVudC5wYWdlWU9mZnNldCA6IHNlbGYucGFnZVlPZmZzZXQ7DQoJfSBlbHNlIGlmICh0aGlzLmRvYy5kb2N1bWVudEVsZW1lbnQgJiYgdGhpcy5kb2MuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcCl7DQoJCXJldHVybiB0aGlzLmRvYy5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wOw0KCX0gZWxzZSBpZiAoZG9jdW1lbnQuYm9keSkgew0KCQlyZXR1cm4gdGhpcy5kb2MuYm9keS5zY3JvbGxUb3A7DQoJfQ0KfTsNCkx5dGVCb3gucHJvdG90eXBlLmdldFBhZ2VTaXplID0gZnVuY3Rpb24oKSB7CQ0KCXZhciB4U2Nyb2xsLCB5U2Nyb2xsLCB3aW5kb3dXaWR0aCwgd2luZG93SGVpZ2h0Ow0KCWlmICh3aW5kb3cuaW5uZXJIZWlnaHQgJiYgd2luZG93LnNjcm9sbE1heFkpIHsNCgkJeFNjcm9sbCA9IHRoaXMuZG9jLnNjcm9sbFdpZHRoOw0KCQl5U2Nyb2xsID0gKHRoaXMuaXNGcmFtZSA/IHBhcmVudC5pbm5lckhlaWdodCA6IHNlbGYuaW5uZXJIZWlnaHQpICsgKHRoaXMuaXNGcmFtZSA/IHBhcmVudC5zY3JvbGxNYXhZIDogc2VsZi5zY3JvbGxNYXhZKTsNCgl9IGVsc2UgaWYgKHRoaXMuZG9jLmJvZHkuc2Nyb2xsSGVpZ2h0ID4gdGhpcy5kb2MuYm9keS5vZmZzZXRIZWlnaHQpew0KCQl4U2Nyb2xsID0gdGhpcy5kb2MuYm9keS5zY3JvbGxXaWR0aDsNCgkJeVNjcm9sbCA9IHRoaXMuZG9jLmJvZHkuc2Nyb2xsSGVpZ2h0Ow0KCX0gZWxzZSB7DQoJCXhTY3JvbGwgPSB0aGlzLmRvYy5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaHRtbCIpLml0ZW0oMCkub2Zmc2V0V2lkdGg7DQoJCXlTY3JvbGwgPSB0aGlzLmRvYy5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaHRtbCIpLml0ZW0oMCkub2Zmc2V0SGVpZ2h0Ow0KCQl4U2Nyb2xsID0gKHhTY3JvbGwgPCB0aGlzLmRvYy5ib2R5Lm9mZnNldFdpZHRoKSA/IHRoaXMuZG9jLmJvZHkub2Zmc2V0V2lkdGggOiB4U2Nyb2xsOw0KCQl5U2Nyb2xsID0gKHlTY3JvbGwgPCB0aGlzLmRvYy5ib2R5Lm9mZnNldEhlaWdodCkgPyB0aGlzLmRvYy5ib2R5Lm9mZnNldEhlaWdodCA6IHlTY3JvbGw7DQoJfQ0KCWlmIChzZWxmLmlubmVySGVpZ2h0KSB7DQoJCXdpbmRvd1dpZHRoID0gKHRoaXMuaXNGcmFtZSkgPyBwYXJlbnQuaW5uZXJXaWR0aCA6IHNlbGYuaW5uZXJXaWR0aDsNCgkJd2luZG93SGVpZ2h0ID0gKHRoaXMuaXNGcmFtZSkgPyBwYXJlbnQuaW5uZXJIZWlnaHQgOiBzZWxmLmlubmVySGVpZ2h0Ow0KCX0gZWxzZSBpZiAoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50ICYmIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQpIHsNCgkJd2luZG93V2lkdGggPSB0aGlzLmRvYy5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGg7DQoJCXdpbmRvd0hlaWdodCA9IHRoaXMuZG9jLmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQ7DQoJfSBlbHNlIGlmIChkb2N1bWVudC5ib2R5KSB7DQoJCXdpbmRvd1dpZHRoID0gdGhpcy5kb2MuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImh0bWwiKS5pdGVtKDApLmNsaWVudFdpZHRoOw0KCQl3aW5kb3dIZWlnaHQgPSB0aGlzLmRvYy5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaHRtbCIpLml0ZW0oMCkuY2xpZW50SGVpZ2h0Ow0KCQl3aW5kb3dXaWR0aCA9ICh3aW5kb3dXaWR0aCA9PSAwKSA/IHRoaXMuZG9jLmJvZHkuY2xpZW50V2lkdGggOiB3aW5kb3dXaWR0aDsNCgkJd2luZG93SGVpZ2h0ID0gKHdpbmRvd0hlaWdodCA9PSAwKSA/IHRoaXMuZG9jLmJvZHkuY2xpZW50SGVpZ2h0IDogd2luZG93SGVpZ2h0Ow0KCX0NCgl2YXIgcGFnZUhlaWdodCA9ICh5U2Nyb2xsIDwgd2luZG93SGVpZ2h0KSA/IHdpbmRvd0hlaWdodCA6IHlTY3JvbGw7DQoJdmFyIHBhZ2VXaWR0aCA9ICh4U2Nyb2xsIDwgd2luZG93V2lkdGgpID8gd2luZG93V2lkdGggOiB4U2Nyb2xsOw0KCXJldHVybiBuZXcgQXJyYXkocGFnZVdpZHRoLCBwYWdlSGVpZ2h0LCB3aW5kb3dXaWR0aCwgd2luZG93SGVpZ2h0KTsNCn07DQpMeXRlQm94LnByb3RvdHlwZS50b2dnbGVGbGFzaCA9IGZ1bmN0aW9uKHN0YXRlKSB7DQoJdmFyIG9iamVjdHMgPSB0aGlzLmRvYy5nZXRFbGVtZW50c0J5VGFnTmFtZSgib2JqZWN0Iik7DQoJZm9yICh2YXIgaSA9IDA7IGkgPCBvYmplY3RzLmxlbmd0aDsgaSsrKSB7DQoJCW9iamVjdHNbaV0uc3R5bGUudmlzaWJpbGl0eSA9IChzdGF0ZSA9PSAiaGlkZSIpID8gJ2hpZGRlbicgOiAndmlzaWJsZSc7DQoJfQ0KCXZhciBlbWJlZHMgPSB0aGlzLmRvYy5nZXRFbGVtZW50c0J5VGFnTmFtZSgiZW1iZWQiKTsNCglmb3IgKHZhciBpID0gMDsgaSA8IGVtYmVkcy5sZW5ndGg7IGkrKykgew0KCQllbWJlZHNbaV0uc3R5bGUudmlzaWJpbGl0eSA9IChzdGF0ZSA9PSAiaGlkZSIpID8gJ2hpZGRlbicgOiAndmlzaWJsZSc7DQoJfQ0KCWlmICh0aGlzLmlzRnJhbWUpIHsNCgkJZm9yICh2YXIgaSA9IDA7IGkgPCBwYXJlbnQuZnJhbWVzLmxlbmd0aDsgaSsrKSB7DQoJCQl0cnkgew0KCQkJCW9iamVjdHMgPSBwYXJlbnQuZnJhbWVzW2ldLndpbmRvdy5kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgib2JqZWN0Iik7DQoJCQkJZm9yICh2YXIgaiA9IDA7IGogPCBvYmplY3RzLmxlbmd0aDsgaisrKSB7DQoJCQkJCW9iamVjdHNbal0uc3R5bGUudmlzaWJpbGl0eSA9IChzdGF0ZSA9PSAiaGlkZSIpID8gJ2hpZGRlbicgOiAndmlzaWJsZSc7DQoJCQkJfQ0KCQkJfSBjYXRjaChlKSB7IH0NCgkJCXRyeSB7DQoJCQkJZW1iZWRzID0gcGFyZW50LmZyYW1lc1tpXS53aW5kb3cuZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImVtYmVkIik7DQoJCQkJZm9yICh2YXIgaiA9IDA7IGogPCBlbWJlZHMubGVuZ3RoOyBqKyspIHsNCgkJCQkJZW1iZWRzW2pdLnN0eWxlLnZpc2liaWxpdHkgPSAoc3RhdGUgPT0gImhpZGUiKSA/ICdoaWRkZW4nIDogJ3Zpc2libGUnOw0KCQkJCX0NCgkJCX0gY2F0Y2goZSkgeyB9DQoJCX0NCgl9DQp9Ow0KTHl0ZUJveC5wcm90b3R5cGUudG9nZ2xlU2VsZWN0cyA9IGZ1bmN0aW9uKHN0YXRlKSB7DQoJdmFyIHNlbGVjdHMgPSB0aGlzLmRvYy5nZXRFbGVtZW50c0J5VGFnTmFtZSgic2VsZWN0Iik7DQoJZm9yICh2YXIgaSA9IDA7IGkgPCBzZWxlY3RzLmxlbmd0aDsgaSsrICkgew0KCQlzZWxlY3RzW2ldLnN0eWxlLnZpc2liaWxpdHkgPSAoc3RhdGUgPT0gImhpZGUiKSA/ICdoaWRkZW4nIDogJ3Zpc2libGUnOw0KCX0NCglpZiAodGhpcy5pc0ZyYW1lKSB7DQoJCWZvciAodmFyIGkgPSAwOyBpIDwgcGFyZW50LmZyYW1lcy5sZW5ndGg7IGkrKykgew0KCQkJdHJ5IHsNCgkJCQlzZWxlY3RzID0gcGFyZW50LmZyYW1lc1tpXS53aW5kb3cuZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInNlbGVjdCIpOw0KCQkJCWZvciAodmFyIGogPSAwOyBqIDwgc2VsZWN0cy5sZW5ndGg7IGorKykgew0KCQkJCQlzZWxlY3RzW2pdLnN0eWxlLnZpc2liaWxpdHkgPSAoc3RhdGUgPT0gImhpZGUiKSA/ICdoaWRkZW4nIDogJ3Zpc2libGUnOw0KCQkJCX0NCgkJCX0gY2F0Y2goZSkgeyB9DQoJCX0NCgl9DQp9Ow0KTHl0ZUJveC5wcm90b3R5cGUucGF1c2UgPSBmdW5jdGlvbihudW1iZXJNaWxsaXMpIHsNCgl2YXIgbm93ID0gbmV3IERhdGUoKTsNCgl2YXIgZXhpdFRpbWUgPSBub3cuZ2V0VGltZSgpICsgbnVtYmVyTWlsbGlzOw0KCXdoaWxlICh0cnVlKSB7DQoJCW5vdyA9IG5ldyBEYXRlKCk7DQoJCWlmIChub3cuZ2V0VGltZSgpID4gZXhpdFRpbWUpIHsgcmV0dXJuOyB9DQoJfQ0KfTsNCmlmICh3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcikgew0KCXdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIixpbml0THl0ZWJveCxmYWxzZSk7DQp9IGVsc2UgaWYgKHdpbmRvdy5hdHRhY2hFdmVudCkgew0KCXdpbmRvdy5hdHRhY2hFdmVudCgib25sb2FkIixpbml0THl0ZWJveCk7DQp9IGVsc2Ugew0KCXdpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbigpIHtpbml0THl0ZWJveCgpO30NCn0NCmZ1bmN0aW9uIGluaXRMeXRlYm94KCkgeyBteUx5dGVib3ggPSBuZXcgTHl0ZUJveCgpOyB9]]></data>
	</file>
	<file>
	  <filename>/templates/lytebox/v3.22.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LSBhZGRlZCBhIGllOCBmaXggZnJvbSBodHRwOi8vbmVkZXJ2ZWxkLndvcmRwcmVzcy5jb20vMjAwOS8wNy8wMi9seXRlYm94LWFuZC1pbnRlcm5ldC1leHBsb3Jlci04Lw==]]></data>
	</file>
	<file>
	  <filename>/templates/slimbox/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/slimbox/css/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/slimbox/css/closelabel.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODdhQgAWAO4AAP7+/v///3p6etvb28DAwMHBwZ2dnVlZWdLS0oODg6+vr/X19eTk5IyMjLi4uFBQUJSUlFRUVFZWVtzc3MnJyVJSUlhYWFFRUVNTU+zs7FVVVf39/erq6vb29szMzN3d3Xt7e2BgYFdXV6Kiovr6+qampk9PT0xMTPf392ZmZl9fX+Dg4EtLS97e3qGhofz8/PDw8Ovr6/v7+7W1tWxsbJWVlXh4eMrKys3NzXl5efHx8WRkZFpaWufn5+/v77Ozs7GxsePj44eHh2lpaU5OTnNzc01NTZaWlmdnZ3x8fOXl5WNjY5KSkqmpqYiIiN/f37m5ubS0tHBwcIaGhmVlZe3t7XZ2dm1tbZiYmJeXl25ubm9vb46OjtXV1QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAAQgAWAAAH/4ABgoOEhYaHiImKi4yNjo+MAJKTlJWWl5eQAS+NmJ6fmJGSATJYXQGWAR4GJKigr6CiAChZJzsfrgCCOConRx2UGQMMsAAMw5cLAwO6i6M/LAcYVAOuqiERBydNkggNAuANCAAEAsyVBAngAgkElA7rCTcBBevrg6McAiYHD0hPgjyowHCAyBQYACgIaEBhAIUECsiZq6RAAAQEAxBAEBBRooKMJTrQ41igZAF8+UA8OBCBxgoc2A4YEYICVYIECybllHhOEgMBBioZmDiUkqB6Ew4ZzQCCn4Yr2Cw8cCISwAAB7iyV68mz0lUHACo62HlUQFJDlQLESFLhgAQRB/8qcKkpaeslu5OKWgIKIIM6ASUYlK1hoLADlEZhWNFwwEKEEa0m4UU3Ma+AS3wBLCDwzexIwoYRTwrgYwtjlhB0TUKA9W5lSfDGUWKdVTLHkWcLpV1RJJsGCXFdbHC14OZOYzknW81smZjmSUBxKx3dgsYFaUNSSLBQYcRwSQoZOkzQYDNHAuiZVbyYcSPYsOxLCDhZT4HJAlUEUU9x/YGNIDdIsN0FwrniTTzjlGNPVums00BtDYJz2Ej2eGbNBylUwMMDIHAgCBQCWnDBCC9Qcoxzr5x4yTI5RRLABEus5F8MqAgywwUiiMBCFMX0mIozAegAQQUmCOChUTNg8IAwFB/46OQozugiAxM5ZJALlEBoocSVT8IiSwAkVHXJBj1w2eUrsjTjiX5n+phmj4EAADs=]]></data>
	</file>
	<file>
	  <filename>/templates/slimbox/css/loading.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhHwAfANUAAP///5qamiYmJuTk5Ly8vMzMzKqqqrCwsKKioujo6NTU1Pb29qioqKCgoK6urtLS0tzc3NjY2Li4uObm5nBwcMbGxmhoaEZGRkhISDIyMvj4+Pr6+lBQUDY2NsTExFZWVpKSkgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAAKAAAAIf8LTkVUU0NBUEUyLjADAQAAACwAAAAAHwAfAAAG/0CAcEhMPAgOBKDDoQQKxKh0CJEErleAYLu1HDRT6YCALWu5XEolPIwYymY0GmNgAxrwuJybCUcaAHlYZ3sCdxFRA28BgVgHBQMLAAkeIB9ojQYDRGSDAQwKYRsIF4ZlBFR5AJt2a3kQQlZlDBN2QxMMcBKTeaG2Qwp5RnAHv1EHcEdwUMZDBXBIcKzNq3BJcJLUAAtwStrNCNjf3GUIDtLfA9adWMzUz6cPxN/IZQ8JvdTBcAkAsli0jOHSJQSCqmlhNr0awo7RJ19TFORqdAXVEEVZyjyKtG1AgXoZA2iK8oeiKkFZGiCaggelSTiA2LhxidLASjZjBL2siNBOFQ84LyXA+mYEiRJzBO7ZCQIAIfkEAQoAIQAsEAAAAA8ADwAABldAhIPwSISOyGRguZRAAEkkc0oYREPTqSESzU4bXe8ylDEgF4PCYRoSCDCVKEDBCLTdAormasXjD1chFRd+AhaBIQiFAgWBGx+FdoEghRSIHoUciAmFHUEAIfkEAQoAIQAsFgAFAAkAFQAABlnAkDDUiAyHgYBhcEwmCQCh0wkJTRjTgESoyAYSIcAh+xAWsgThIOsQLrKIo1yYENjtHaHnbucIQXwCFCEbH4EBIQiBAgUVF4EWQosHQ3wUGkd2GBVzGQZDQQAh+QQBCgAhACwQABAADwAPAAAGWcCQcChcBI5HBJE4QB4dy2HBGSBEQ4AD9XFVUAOJ6IRBlUQroS+EuEFcBGkkARBKeEAfgR5+NAyEe4F6IQ0RQ4KBGUuIehgGi4gUaJB7FgcaVx0cFAEFV0NBACH5BAEKACEALAUAFgAVAAkAAAZUwJAwVBkajYOjUHBBbJQhgIIROAqugg/IkwgtBoVDYFxdYs+CEHk9DmXQZzWb3DBg4Ff53BAhUvB6awRJQhoHFmiBARIQAFAFARQcHSEIDgQPXUZBACH5BAEKACEALAAAEAAPAA8AAAZZwI5gOEyEjsgjhzj0JJMUpgD0RAakn001VJAKENuQRXqpbA/e0KCqiRJDAYYC8KxghvCA/lAYLJAGGXl6hHpPDYWJTxEGiYRVAwSOAVsAEBKKYSEJDwQOCEEAIfkEAQoAIQAsAAAFAAkAFQAABlnAkNCQERpDFYxAcNRQlkvjAQoVWqiCS6WAFSBCAexnE3pSQUIO1iPsYBPHuBARqNcXQoe9PhAS9gEFQg+ABwAhCYABCkISgAwTIRCKQgB/dkcDBnVyEQ1HQQAh+QQBCgAhACwAAAAADwAPAAAGWMCQcEgsBCicDnGoOVgEUOgyVKFEr0sD5oolZrjdUKQRAkeFA0MgUI5+QJ5ECEBYr8sXxIYIsdupUxJ+AQwTUwmDAQpTIQ+DBwCMdX4FjCEOgwOWCIMLlkEAOw==]]></data>
	</file>
	<file>
	  <filename>/templates/slimbox/css/nextlabel.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhPwAgAMQcAHp6eqqqqs7OzmFhYfPz89DQ0MLCwtvb221tbZ6enpycnFVVVYaGhra2tufn59bW1oeHh8/Pz76+vvr6+sHBwZKSkvn5+d/f383NzXJycklJSf///zMzMwAAAAAAAAAAACH5BAEAABwALAAAAAA/ACAAAAXfIMdtZGmeaKquLDq2cCzPdG3feK7vfO//wKBwSCwaj8igRsMwATSk53IJ2DA0gVJAU9lOpwIfuPSMYgPoxoYw0Bw2jsWAIFAoMhqI3SFuz82AKAIaVU9hWhqHP4RbCYFlKQlMGo4mW4piVQiJG5BPAKAAaiRsGn+WnECEGwemBJ6EoaOsY6iYPasbjbAqCAsHcgS2SlUkmwtQncknW1mNw6rFtEtmaNa0CCWbipfEqMlSXwTbJYOn3Unp6ukTEQXv8O8YF+stFhQG+fr5Eg/1/wADChxIsOCLgjBEIIQRAgA7]]></data>
	</file>
	<file>
	  <filename>/templates/slimbox/css/prevlabel.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhPwAgAMQaALGxsYSEhNLS0v39/WJiYm1tbenp6dzc3MfHx7q6upqamo+Pj6Wlpby8vN3d3Xl5efT09OXl5bu7u9ra2v7+/ra2tvv7+8zMzFdXV////zMzMwAAAAAAAAAAAAAAAAAAACH5BAEAABoALAAAAAA/ACAAAAXwYCaOZGmeaKqamra+cPy6cm3feK7vfO//wKBwSCwaj8jkDoBpYh4IkbO5cGQE06ZAgWmQGhhAkKkAMAgYQwZTAJgJhCsm4HYbHE9SID3GCEQIYWsBIwx+WGIlD3wZBhgLQkx/GYFicyMLaYgmYIlMUX1lZ3wYBAEBBZdYBaenIhAEBSIFspFOpqClAWgAEHKsrSNcDpVDkiaXZCKbJngMXGq2kySXGalqzCYPqZDGfsiEcoRYdHXTYBig0uCYh1mCr7FK8/T1IhETB/r7+gP2KxcqJBhIMIEEC/9UUBjAsGHDhBAjSpxIseIQGhZTtAgBADs=]]></data>
	</file>
	<file>
	  <filename>/templates/slimbox/css/slimbox2.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyogU0xJTUJPWCAqLwoKI2xiT3ZlcmxheSB7Cglwb3NpdGlvbjogZml4ZWQ7Cgl6LWluZGV4OiA5OTk5OwoJbGVmdDogMDsKCXRvcDogMDsKCXdpZHRoOiAxMDAlOwoJaGVpZ2h0OiAxMDAlOwoJYmFja2dyb3VuZC1jb2xvcjogIzAwMDsKCWN1cnNvcjogcG9pbnRlcjsKfQoKI2xiQ2VudGVyLCAjbGJCb3R0b21Db250YWluZXIgewoJcG9zaXRpb246IGFic29sdXRlOwoJei1pbmRleDogOTk5OTsKCW92ZXJmbG93OiBoaWRkZW47CgliYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwp9CgoubGJMb2FkaW5nIHsKCWJhY2tncm91bmQ6ICNmZmYgdXJsKGxvYWRpbmcuZ2lmKSBuby1yZXBlYXQgY2VudGVyOwp9CgojbGJJbWFnZSB7Cglwb3NpdGlvbjogYWJzb2x1dGU7CglsZWZ0OiAwOwoJdG9wOiAwOwoJYm9yZGVyOiAxMHB4IHNvbGlkICNmZmY7CgliYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0Owp9CgojbGJQcmV2TGluaywgI2xiTmV4dExpbmsgewoJZGlzcGxheTogYmxvY2s7Cglwb3NpdGlvbjogYWJzb2x1dGU7Cgl0b3A6IDA7Cgl3aWR0aDogNTAlOwoJb3V0bGluZTogbm9uZTsKfQoKI2xiUHJldkxpbmsgewoJbGVmdDogMDsKfQoKI2xiUHJldkxpbms6aG92ZXIgewoJYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgdXJsKHByZXZsYWJlbC5naWYpIG5vLXJlcGVhdCAwIDE1JTsKfQoKI2xiTmV4dExpbmsgewoJcmlnaHQ6IDA7Cn0KCiNsYk5leHRMaW5rOmhvdmVyIHsKCWJhY2tncm91bmQ6IHRyYW5zcGFyZW50IHVybChuZXh0bGFiZWwuZ2lmKSBuby1yZXBlYXQgMTAwJSAxNSU7Cn0KCiNsYkJvdHRvbSB7Cglmb250LWZhbWlseTogVmVyZGFuYSwgQXJpYWwsIEdlbmV2YSwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOwoJZm9udC1zaXplOiAxMHB4OwoJY29sb3I6ICM2NjY7CglsaW5lLWhlaWdodDogMS40ZW07Cgl0ZXh0LWFsaWduOiBsZWZ0OwoJYm9yZGVyOiAxMHB4IHNvbGlkICNmZmY7Cglib3JkZXItdG9wLXN0eWxlOiBub25lOwp9CgojbGJDbG9zZUxpbmsgewoJZGlzcGxheTogYmxvY2s7CglmbG9hdDogcmlnaHQ7Cgl3aWR0aDogNjZweDsKCWhlaWdodDogMjJweDsKCWJhY2tncm91bmQ6IHRyYW5zcGFyZW50IHVybChjbG9zZWxhYmVsLmdpZikgbm8tcmVwZWF0IGNlbnRlcjsKCW1hcmdpbjogNXB4IDA7CglvdXRsaW5lOiBub25lOwp9CgojbGJDYXB0aW9uLCAjbGJOdW1iZXIgewoJbWFyZ2luLXJpZ2h0OiA3MXB4Owp9CgojbGJDYXB0aW9uIHsKCWZvbnQtd2VpZ2h0OiBib2xkOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/slimbox/example.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQiPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+U2xpbWJveCAyIGV4YW1wbGUgcGFnZTwvdGl0bGU+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwOi8vYWpheC5nb29nbGVhcGlzLmNvbS9hamF4L2xpYnMvanF1ZXJ5LzEuMy9qcXVlcnkubWluLmpzIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImpzL3NsaW1ib3gyLmpzIj48L3NjcmlwdD4KCTxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iY3NzL3NsaW1ib3gyLmNzcyIgdHlwZT0idGV4dC9jc3MiIG1lZGlhPSJzY3JlZW4iIC8+Cgk8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJCWJvZHkgewoJCQliYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwoJCQlmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fucy1zZXJpZjsKCQkJY29sb3I6ICMwMDA7CgkJfQoJCWgxLCBwIHsKCQkJdGV4dC1hbGlnbjogY2VudGVyOwoJCX0KCQlwIHsKCQkJbWFyZ2luLXRvcDogMTAwcHg7CgkJfQoJCWEgewoJCQlmb250LXdlaWdodDogYm9sZDsKCQkJY29sb3I6ICNmMDA7CgkJfQoJPC9zdHlsZT4KPC9oZWFkPgo8Ym9keT4KCTxoMT5TbGltYm94IDIgZXhhbXBsZSBwYWdlPC9oMT4KCTxwPgoJCTxhIGhyZWY9ImV4YW1wbGUuanBnIiByZWw9ImxpZ2h0Ym94IiB0aXRsZT0iQmVhdXRpZnVsLCBpc24ndCBpdD8iPkNsaWNrIGhlcmU8L2E+IHRvIHZpZXcgYSBwaWN0dXJlIGluc2lkZSBTbGltYm94LgoJPC9wPgo8L2JvZHk+CjwvaHRtbD4=]]></data>
	</file>
	<file>
	  <filename>/templates/slimbox/example.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/templates/slimbox/extra/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/slimbox/extra/autoactivation.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoKCVdpdGggdGhlIGZvbGxvd2luZyBjb2RlLCBTbGltYm94IHdpbGwgYWN0aXZhdGUgaXRzZWxmIGF1dG9tYXRpY2FsbHkgb24gYWxsIGxpbmtzIHBvaW50aW5nIHRvIGltYWdlcywKCW9yIG1vcmUgc3BlY2lmaWNhbGx5IGFsbCBsaW5rcyBoYXZpbmcgVVJMcyBlbmRpbmcgd2l0aDogIi5qcGciIG9yICIucG5nIiBvciAiLmdpZiIuCglBcyBhIHJlc3VsdCwgeW91IHdpbGwgbm90IG5lZWQgdG8gc2V0IHRoZSByZWw9ImxpZ2h0Ym94IiBhdHRyaWJ1dGUgb24gYW55IGxpbmsgdG8gYWN0aXZhdGUgU2xpbWJveC4KCUZ1cnRoZXJtb3JlLCBhbGwgaW1hZ2UgbGlua3MgY29udGFpbmVkIGluIHRoZSBzYW1lIGJsb2NrIG9yIHBhcmFncmFwaCAoaGF2aW5nIHRoZSBzYW1lIHBhcmVudCBlbGVtZW50KQoJd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGdyb3VwZWQgdG9nZXRoZXIgaW4gYSBnYWxsZXJ5LCBzbyB5b3Ugd2lsbCBub3QgbmVlZCB0byBzcGVjaWZ5IGdyb3VwcyBlaXRoZXIuCglJbWFnZXMgdGhhdCBhcmUgYWxvbmUgaW4gdGhlaXIgYmxvY2sgb3IgcGFyYWdyYXBoIHdpbGwgYmUgZGlzcGxheWVkIGluZGl2aWR1YWxseS4KCglSZXBsYWNlIHRoZSBkZWZhdWx0IGF1dG9sb2FkIGNvZGUgYmxvY2sgd2l0aCB0aGlzIG9uZS4KKi8KCmpRdWVyeShmdW5jdGlvbigkKSB7CgkkKCJhW2hyZWZdIikuZmlsdGVyKGZ1bmN0aW9uKCkgewoJCXJldHVybiAvXC4oanBnfHBuZ3xnaWYpJC9pLnRlc3QodGhpcy5ocmVmKTsKCX0pLnNsaW1ib3goe30sIG51bGwsIGZ1bmN0aW9uKGVsKSB7CgkJcmV0dXJuICh0aGlzID09IGVsKSB8fCAodGhpcy5wYXJlbnROb2RlICYmICh0aGlzLnBhcmVudE5vZGUgPT0gZWwucGFyZW50Tm9kZSkpOwoJfSk7Cn0pOw==]]></data>
	</file>
	<file>
	  <filename>/templates/slimbox/extra/flickr.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoKCVRoaXMgY29kZSBhdXRvbWF0aWNhbGx5IGludGVncmF0ZXMgRmxpY2tyIHRodW1ibmFpbHMgd2l0aCBTbGltYm94LgoJSXQgd2lsbCBzY2FuIGZvciBhbGwgbGlua3MgYXJvdW5kIHRodW1ibmFpbCBpbWFnZXMgcG9pbnRpbmcgdG8gRmxpY2tyIHBob3RvIFBBR0VTLgoJTm90ZSB0aGF0IHlvdSBkb24ndCBuZWVkIHRvIGFkZCByZWw9ImxpZ2h0Ym94IiB0byB0aGVzZSBsaW5rcy4KCVdoZW4gY2xpY2tpbmcgb24gYSBGbGlja3IgdGh1bWJuYWlsLCBTbGltYm94IHdpbGwgb3BlbiBhbmQgZGlzcGxheSB0aGUgbWVkaXVtLXNpemVkIGltYWdlLgoJVGhlIHRpdGxlIGF0dHJpYnV0ZSBvZiB0aGUgbGluayAob3IgdGhlIGFsdCBhdHRyaWJ1dGUgb2YgdGhlIHRodW1ibmFpbCBpZiBub3QgYXZhaWxhYmxlKSB3aWxsIGJlIHVzZWQKCWFzIGRlc2NyaXB0aW9uIHRleHQsIGFuZCBhIGxpbmsgdG8gdGhlIEZsaWNrciBwaG90byBwYWdlIHdpbGwgYmUgYWRkZWQgdW5kZXIgdGhlIGRlc2NyaXB0aW9uLgoKCUFkZCB0aGUgZm9sbG93aW5nIGNvZGUgdG8gdGhlIGF1dG9sb2FkIGNvZGUgYmxvY2suCiovCgpqUXVlcnkoZnVuY3Rpb24oJCkgewoJJCgiYVtocmVmXj0naHR0cDovL3d3dy5mbGlja3IuY29tL3Bob3Rvcy8nXSA+IGltZzpmaXJzdC1jaGlsZFtzcmNdIikucGFyZW50KCkuc2xpbWJveCh7fSwgZnVuY3Rpb24oZWwpIHsKCQlyZXR1cm4gW2VsLmZpcnN0Q2hpbGQuc3JjLnJlcGxhY2UoL19bbXRzXVwuKFx3KykkLywgIi4kMSIpLAoJCQkoZWwudGl0bGUgfHwgZWwuZmlyc3RDaGlsZC5hbHQpICsgJzxiciAvPjxhIGhyZWY9IicgKyBlbC5ocmVmICsgJyI+RmxpY2tyIHBhZ2U8L2E+J107Cgl9KTsKfSk7]]></data>
	</file>
	<file>
	  <filename>/templates/slimbox/extra/picasaweb.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoKCVRoaXMgY29kZSBhdXRvbWF0aWNhbGx5IGludGVncmF0ZXMgUGljYXNhIFdlYiBBbGJ1bXMgdGh1bWJuYWlscyB3aXRoIFNsaW1ib3guCglJdCB3aWxsIHNjYW4gZm9yIGFsbCBsaW5rcyBhcm91bmQgdGh1bWJuYWlsIGltYWdlcyBwb2ludGluZyB0byBQaWNhc2EgV2ViIEFsYnVtcyBwaG90byBQQUdFUy4KCU5vdGUgdGhhdCB5b3UgZG9uJ3QgbmVlZCB0byBhZGQgcmVsPSJsaWdodGJveCIgdG8gdGhlc2UgbGlua3MuCglXaGVuIGNsaWNraW5nIG9uIGEgUGljYXNhIFdlYiBBbGJ1bXMgdGh1bWJuYWlsLCBTbGltYm94IHdpbGwgb3BlbiBhbmQgZGlzcGxheSB0aGUgbWVkaXVtLXNpemVkIGltYWdlLgoJVGhlIHRpdGxlIGF0dHJpYnV0ZSBvZiB0aGUgbGluayAob3IgdGhlIGFsdCBhdHRyaWJ1dGUgb2YgdGhlIHRodW1ibmFpbCBpZiBub3QgYXZhaWxhYmxlKSB3aWxsIGJlIHVzZWQKCWFzIGRlc2NyaXB0aW9uIHRleHQsIGFuZCBhIGxpbmsgdG8gdGhlIFBpY2FzYSBXZWIgQWxidW1zIHBob3RvIHBhZ2Ugd2lsbCBiZSBhZGRlZCB1bmRlciB0aGUgZGVzY3JpcHRpb24uCgoJQWRkIHRoZSBmb2xsb3dpbmcgY29kZSB0byB0aGUgYXV0b2xvYWQgY29kZSBibG9jay4KKi8KCmpRdWVyeShmdW5jdGlvbigkKSB7CgkkKCJhW2hyZWZePSdodHRwOi8vcGljYXNhd2ViLmdvb2dsZS4nXSA+IGltZzpmaXJzdC1jaGlsZFtzcmNdIikucGFyZW50KCkuc2xpbWJveCh7fSwgZnVuY3Rpb24oZWwpIHsKCQlyZXR1cm4gW2VsLmZpcnN0Q2hpbGQuc3JjLnJlcGxhY2UoL1wvc1xkKyg/OlwtYyk/XC8oW15cL10rKSQvLCAiL3M1MTIvJDEiKSwKCQkJKGVsLnRpdGxlIHx8IGVsLmZpcnN0Q2hpbGQuYWx0KSArICc8YnIgLz48YSBocmVmPSInICsgZWwuaHJlZiArICciPlBpY2FzYSBXZWIgQWxidW1zIHBhZ2U8L2E+J107Cgl9KTsKfSk7]]></data>
	</file>
	<file>
	  <filename>/templates/slimbox/js/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/slimbox/js/jquery.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoKICogalF1ZXJ5IEphdmFTY3JpcHQgTGlicmFyeSB2MS4zLjIKICogaHR0cDovL2pxdWVyeS5jb20vCiAqCiAqIENvcHlyaWdodCAoYykgMjAwOSBKb2huIFJlc2lnCiAqIER1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBhbmQgR1BMIGxpY2Vuc2VzLgogKiBodHRwOi8vZG9jcy5qcXVlcnkuY29tL0xpY2Vuc2UKICoKICogRGF0ZTogMjAwOS0wMi0xOSAxNzozNDoyMSAtMDUwMCAoVGh1LCAxOSBGZWIgMjAwOSkKICogUmV2aXNpb246IDYyNDYKICovCihmdW5jdGlvbigpe3ZhciBsPXRoaXMsZyx5PWwualF1ZXJ5LHA9bC4kLG89bC5qUXVlcnk9bC4kPWZ1bmN0aW9uKEUsRil7cmV0dXJuIG5ldyBvLmZuLmluaXQoRSxGKX0sRD0vXltePF0qKDwoLnxccykrPilbXj5dKiR8XiMoW1x3LV0rKSQvLGY9L14uW146I1xbXC4sXSokLztvLmZuPW8ucHJvdG90eXBlPXtpbml0OmZ1bmN0aW9uKEUsSCl7RT1FfHxkb2N1bWVudDtpZihFLm5vZGVUeXBlKXt0aGlzWzBdPUU7dGhpcy5sZW5ndGg9MTt0aGlzLmNvbnRleHQ9RTtyZXR1cm4gdGhpc31pZih0eXBlb2YgRT09PSJzdHJpbmciKXt2YXIgRz1ELmV4ZWMoRSk7aWYoRyYmKEdbMV18fCFIKSl7aWYoR1sxXSl7RT1vLmNsZWFuKFtHWzFdXSxIKX1lbHNle3ZhciBJPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKEdbM10pO2lmKEkmJkkuaWQhPUdbM10pe3JldHVybiBvKCkuZmluZChFKX12YXIgRj1vKEl8fFtdKTtGLmNvbnRleHQ9ZG9jdW1lbnQ7Ri5zZWxlY3Rvcj1FO3JldHVybiBGfX1lbHNle3JldHVybiBvKEgpLmZpbmQoRSl9fWVsc2V7aWYoby5pc0Z1bmN0aW9uKEUpKXtyZXR1cm4gbyhkb2N1bWVudCkucmVhZHkoRSl9fWlmKEUuc2VsZWN0b3ImJkUuY29udGV4dCl7dGhpcy5zZWxlY3Rvcj1FLnNlbGVjdG9yO3RoaXMuY29udGV4dD1FLmNvbnRleHR9cmV0dXJuIHRoaXMuc2V0QXJyYXkoby5pc0FycmF5KEUpP0U6by5tYWtlQXJyYXkoRSkpfSxzZWxlY3RvcjoiIixqcXVlcnk6IjEuMy4yIixzaXplOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubGVuZ3RofSxnZXQ6ZnVuY3Rpb24oRSl7cmV0dXJuIEU9PT1nP0FycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHRoaXMpOnRoaXNbRV19LHB1c2hTdGFjazpmdW5jdGlvbihGLEgsRSl7dmFyIEc9byhGKTtHLnByZXZPYmplY3Q9dGhpcztHLmNvbnRleHQ9dGhpcy5jb250ZXh0O2lmKEg9PT0iZmluZCIpe0cuc2VsZWN0b3I9dGhpcy5zZWxlY3RvcisodGhpcy5zZWxlY3Rvcj8iICI6IiIpK0V9ZWxzZXtpZihIKXtHLnNlbGVjdG9yPXRoaXMuc2VsZWN0b3IrIi4iK0grIigiK0UrIikifX1yZXR1cm4gR30sc2V0QXJyYXk6ZnVuY3Rpb24oRSl7dGhpcy5sZW5ndGg9MDtBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseSh0aGlzLEUpO3JldHVybiB0aGlzfSxlYWNoOmZ1bmN0aW9uKEYsRSl7cmV0dXJuIG8uZWFjaCh0aGlzLEYsRSl9LGluZGV4OmZ1bmN0aW9uKEUpe3JldHVybiBvLmluQXJyYXkoRSYmRS5qcXVlcnk/RVswXTpFLHRoaXMpfSxhdHRyOmZ1bmN0aW9uKEYsSCxHKXt2YXIgRT1GO2lmKHR5cGVvZiBGPT09InN0cmluZyIpe2lmKEg9PT1nKXtyZXR1cm4gdGhpc1swXSYmb1tHfHwiYXR0ciJdKHRoaXNbMF0sRil9ZWxzZXtFPXt9O0VbRl09SH19cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihJKXtmb3IoRiBpbiBFKXtvLmF0dHIoRz90aGlzLnN0eWxlOnRoaXMsRixvLnByb3AodGhpcyxFW0ZdLEcsSSxGKSl9fSl9LGNzczpmdW5jdGlvbihFLEYpe2lmKChFPT0id2lkdGgifHxFPT0iaGVpZ2h0IikmJnBhcnNlRmxvYXQoRik8MCl7Rj1nfXJldHVybiB0aGlzLmF0dHIoRSxGLCJjdXJDU1MiKX0sdGV4dDpmdW5jdGlvbihGKXtpZih0eXBlb2YgRiE9PSJvYmplY3QiJiZGIT1udWxsKXtyZXR1cm4gdGhpcy5lbXB0eSgpLmFwcGVuZCgodGhpc1swXSYmdGhpc1swXS5vd25lckRvY3VtZW50fHxkb2N1bWVudCkuY3JlYXRlVGV4dE5vZGUoRikpfXZhciBFPSIiO28uZWFjaChGfHx0aGlzLGZ1bmN0aW9uKCl7by5lYWNoKHRoaXMuY2hpbGROb2RlcyxmdW5jdGlvbigpe2lmKHRoaXMubm9kZVR5cGUhPTgpe0UrPXRoaXMubm9kZVR5cGUhPTE/dGhpcy5ub2RlVmFsdWU6by5mbi50ZXh0KFt0aGlzXSl9fSl9KTtyZXR1cm4gRX0sd3JhcEFsbDpmdW5jdGlvbihFKXtpZih0aGlzWzBdKXt2YXIgRj1vKEUsdGhpc1swXS5vd25lckRvY3VtZW50KS5jbG9uZSgpO2lmKHRoaXNbMF0ucGFyZW50Tm9kZSl7Ri5pbnNlcnRCZWZvcmUodGhpc1swXSl9Ri5tYXAoZnVuY3Rpb24oKXt2YXIgRz10aGlzO3doaWxlKEcuZmlyc3RDaGlsZCl7Rz1HLmZpcnN0Q2hpbGR9cmV0dXJuIEd9KS5hcHBlbmQodGhpcyl9cmV0dXJuIHRoaXN9LHdyYXBJbm5lcjpmdW5jdGlvbihFKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7byh0aGlzKS5jb250ZW50cygpLndyYXBBbGwoRSl9KX0sd3JhcDpmdW5jdGlvbihFKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7byh0aGlzKS53cmFwQWxsKEUpfSl9LGFwcGVuZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRvbU1hbmlwKGFyZ3VtZW50cyx0cnVlLGZ1bmN0aW9uKEUpe2lmKHRoaXMubm9kZVR5cGU9PTEpe3RoaXMuYXBwZW5kQ2hpbGQoRSl9fSl9LHByZXBlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsdHJ1ZSxmdW5jdGlvbihFKXtpZih0aGlzLm5vZGVUeXBlPT0xKXt0aGlzLmluc2VydEJlZm9yZShFLHRoaXMuZmlyc3RDaGlsZCl9fSl9LGJlZm9yZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRvbU1hbmlwKGFyZ3VtZW50cyxmYWxzZSxmdW5jdGlvbihFKXt0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKEUsdGhpcyl9KX0sYWZ0ZXI6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsZmFsc2UsZnVuY3Rpb24oRSl7dGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShFLHRoaXMubmV4dFNpYmxpbmcpfSl9LGVuZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnByZXZPYmplY3R8fG8oW10pfSxwdXNoOltdLnB1c2gsc29ydDpbXS5zb3J0LHNwbGljZTpbXS5zcGxpY2UsZmluZDpmdW5jdGlvbihFKXtpZih0aGlzLmxlbmd0aD09PTEpe3ZhciBGPXRoaXMucHVzaFN0YWNrKFtdLCJmaW5kIixFKTtGLmxlbmd0aD0wO28uZmluZChFLHRoaXNbMF0sRik7cmV0dXJuIEZ9ZWxzZXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soby51bmlxdWUoby5tYXAodGhpcyxmdW5jdGlvbihHKXtyZXR1cm4gby5maW5kKEUsRyl9KSksImZpbmQiLEUpfX0sY2xvbmU6ZnVuY3Rpb24oRyl7dmFyIEU9dGhpcy5tYXAoZnVuY3Rpb24oKXtpZighby5zdXBwb3J0Lm5vQ2xvbmVFdmVudCYmIW8uaXNYTUxEb2ModGhpcykpe3ZhciBJPXRoaXMub3V0ZXJIVE1MO2lmKCFJKXt2YXIgSj10aGlzLm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Si5hcHBlbmRDaGlsZCh0aGlzLmNsb25lTm9kZSh0cnVlKSk7ST1KLmlubmVySFRNTH1yZXR1cm4gby5jbGVhbihbSS5yZXBsYWNlKC8galF1ZXJ5XGQrPSIoPzpcZCt8bnVsbCkiL2csIiIpLnJlcGxhY2UoL15ccyovLCIiKV0pWzBdfWVsc2V7cmV0dXJuIHRoaXMuY2xvbmVOb2RlKHRydWUpfX0pO2lmKEc9PT10cnVlKXt2YXIgSD10aGlzLmZpbmQoIioiKS5hbmRTZWxmKCksRj0wO0UuZmluZCgiKiIpLmFuZFNlbGYoKS5lYWNoKGZ1bmN0aW9uKCl7aWYodGhpcy5ub2RlTmFtZSE9PUhbRl0ubm9kZU5hbWUpe3JldHVybn12YXIgST1vLmRhdGEoSFtGXSwiZXZlbnRzIik7Zm9yKHZhciBLIGluIEkpe2Zvcih2YXIgSiBpbiBJW0tdKXtvLmV2ZW50LmFkZCh0aGlzLEssSVtLXVtKXSxJW0tdW0pdLmRhdGEpfX1GKyt9KX1yZXR1cm4gRX0sZmlsdGVyOmZ1bmN0aW9uKEUpe3JldHVybiB0aGlzLnB1c2hTdGFjayhvLmlzRnVuY3Rpb24oRSkmJm8uZ3JlcCh0aGlzLGZ1bmN0aW9uKEcsRil7cmV0dXJuIEUuY2FsbChHLEYpfSl8fG8ubXVsdGlGaWx0ZXIoRSxvLmdyZXAodGhpcyxmdW5jdGlvbihGKXtyZXR1cm4gRi5ub2RlVHlwZT09PTF9KSksImZpbHRlciIsRSl9LGNsb3Nlc3Q6ZnVuY3Rpb24oRSl7dmFyIEc9by5leHByLm1hdGNoLlBPUy50ZXN0KEUpP28oRSk6bnVsbCxGPTA7cmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uKCl7dmFyIEg9dGhpczt3aGlsZShIJiZILm93bmVyRG9jdW1lbnQpe2lmKEc/Ry5pbmRleChIKT4tMTpvKEgpLmlzKEUpKXtvLmRhdGEoSCwiY2xvc2VzdCIsRik7cmV0dXJuIEh9SD1ILnBhcmVudE5vZGU7RisrfX0pfSxub3Q6ZnVuY3Rpb24oRSl7aWYodHlwZW9mIEU9PT0ic3RyaW5nIil7aWYoZi50ZXN0KEUpKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soby5tdWx0aUZpbHRlcihFLHRoaXMsdHJ1ZSksIm5vdCIsRSl9ZWxzZXtFPW8ubXVsdGlGaWx0ZXIoRSx0aGlzKX19dmFyIEY9RS5sZW5ndGgmJkVbRS5sZW5ndGgtMV0hPT1nJiYhRS5ub2RlVHlwZTtyZXR1cm4gdGhpcy5maWx0ZXIoZnVuY3Rpb24oKXtyZXR1cm4gRj9vLmluQXJyYXkodGhpcyxFKTwwOnRoaXMhPUV9KX0sYWRkOmZ1bmN0aW9uKEUpe3JldHVybiB0aGlzLnB1c2hTdGFjayhvLnVuaXF1ZShvLm1lcmdlKHRoaXMuZ2V0KCksdHlwZW9mIEU9PT0ic3RyaW5nIj9vKEUpOm8ubWFrZUFycmF5KEUpKSkpfSxpczpmdW5jdGlvbihFKXtyZXR1cm4gISFFJiZvLm11bHRpRmlsdGVyKEUsdGhpcykubGVuZ3RoPjB9LGhhc0NsYXNzOmZ1bmN0aW9uKEUpe3JldHVybiAhIUUmJnRoaXMuaXMoIi4iK0UpfSx2YWw6ZnVuY3Rpb24oSyl7aWYoSz09PWcpe3ZhciBFPXRoaXNbMF07aWYoRSl7aWYoby5ub2RlTmFtZShFLCJvcHRpb24iKSl7cmV0dXJuKEUuYXR0cmlidXRlcy52YWx1ZXx8e30pLnNwZWNpZmllZD9FLnZhbHVlOkUudGV4dH1pZihvLm5vZGVOYW1lKEUsInNlbGVjdCIpKXt2YXIgST1FLnNlbGVjdGVkSW5kZXgsTD1bXSxNPUUub3B0aW9ucyxIPUUudHlwZT09InNlbGVjdC1vbmUiO2lmKEk8MCl7cmV0dXJuIG51bGx9Zm9yKHZhciBGPUg/STowLEo9SD9JKzE6TS5sZW5ndGg7RjxKO0YrKyl7dmFyIEc9TVtGXTtpZihHLnNlbGVjdGVkKXtLPW8oRykudmFsKCk7aWYoSCl7cmV0dXJuIEt9TC5wdXNoKEspfX1yZXR1cm4gTH1yZXR1cm4oRS52YWx1ZXx8IiIpLnJlcGxhY2UoL1xyL2csIiIpfXJldHVybiBnfWlmKHR5cGVvZiBLPT09Im51bWJlciIpe0srPSIifXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtpZih0aGlzLm5vZGVUeXBlIT0xKXtyZXR1cm59aWYoby5pc0FycmF5KEspJiYvcmFkaW98Y2hlY2tib3gvLnRlc3QodGhpcy50eXBlKSl7dGhpcy5jaGVja2VkPShvLmluQXJyYXkodGhpcy52YWx1ZSxLKT49MHx8by5pbkFycmF5KHRoaXMubmFtZSxLKT49MCl9ZWxzZXtpZihvLm5vZGVOYW1lKHRoaXMsInNlbGVjdCIpKXt2YXIgTj1vLm1ha2VBcnJheShLKTtvKCJvcHRpb24iLHRoaXMpLmVhY2goZnVuY3Rpb24oKXt0aGlzLnNlbGVjdGVkPShvLmluQXJyYXkodGhpcy52YWx1ZSxOKT49MHx8by5pbkFycmF5KHRoaXMudGV4dCxOKT49MCl9KTtpZighTi5sZW5ndGgpe3RoaXMuc2VsZWN0ZWRJbmRleD0tMX19ZWxzZXt0aGlzLnZhbHVlPUt9fX0pfSxodG1sOmZ1bmN0aW9uKEUpe3JldHVybiBFPT09Zz8odGhpc1swXT90aGlzWzBdLmlubmVySFRNTC5yZXBsYWNlKC8galF1ZXJ5XGQrPSIoPzpcZCt8bnVsbCkiL2csIiIpOm51bGwpOnRoaXMuZW1wdHkoKS5hcHBlbmQoRSl9LHJlcGxhY2VXaXRoOmZ1bmN0aW9uKEUpe3JldHVybiB0aGlzLmFmdGVyKEUpLnJlbW92ZSgpfSxlcTpmdW5jdGlvbihFKXtyZXR1cm4gdGhpcy5zbGljZShFLCtFKzEpfSxzbGljZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnB1c2hTdGFjayhBcnJheS5wcm90b3R5cGUuc2xpY2UuYXBwbHkodGhpcyxhcmd1bWVudHMpLCJzbGljZSIsQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKS5qb2luKCIsIikpfSxtYXA6ZnVuY3Rpb24oRSl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKG8ubWFwKHRoaXMsZnVuY3Rpb24oRyxGKXtyZXR1cm4gRS5jYWxsKEcsRixHKX0pKX0sYW5kU2VsZjpmdW5jdGlvbigpe3JldHVybiB0aGlzLmFkZCh0aGlzLnByZXZPYmplY3QpfSxkb21NYW5pcDpmdW5jdGlvbihKLE0sTCl7aWYodGhpc1swXSl7dmFyIEk9KHRoaXNbMF0ub3duZXJEb2N1bWVudHx8dGhpc1swXSkuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpLEY9by5jbGVhbihKLCh0aGlzWzBdLm93bmVyRG9jdW1lbnR8fHRoaXNbMF0pLEkpLEg9SS5maXJzdENoaWxkO2lmKEgpe2Zvcih2YXIgRz0wLEU9dGhpcy5sZW5ndGg7RzxFO0crKyl7TC5jYWxsKEsodGhpc1tHXSxIKSx0aGlzLmxlbmd0aD4xfHxHPjA/SS5jbG9uZU5vZGUodHJ1ZSk6SSl9fWlmKEYpe28uZWFjaChGLHopfX1yZXR1cm4gdGhpcztmdW5jdGlvbiBLKE4sTyl7cmV0dXJuIE0mJm8ubm9kZU5hbWUoTiwidGFibGUiKSYmby5ub2RlTmFtZShPLCJ0ciIpPyhOLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0Ym9keSIpWzBdfHxOLmFwcGVuZENoaWxkKE4ub3duZXJEb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0Ym9keSIpKSk6Tn19fTtvLmZuLmluaXQucHJvdG90eXBlPW8uZm47ZnVuY3Rpb24geihFLEYpe2lmKEYuc3JjKXtvLmFqYXgoe3VybDpGLnNyYyxhc3luYzpmYWxzZSxkYXRhVHlwZToic2NyaXB0In0pfWVsc2V7by5nbG9iYWxFdmFsKEYudGV4dHx8Ri50ZXh0Q29udGVudHx8Ri5pbm5lckhUTUx8fCIiKX1pZihGLnBhcmVudE5vZGUpe0YucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChGKX19ZnVuY3Rpb24gZSgpe3JldHVybiArbmV3IERhdGV9by5leHRlbmQ9by5mbi5leHRlbmQ9ZnVuY3Rpb24oKXt2YXIgSj1hcmd1bWVudHNbMF18fHt9LEg9MSxJPWFyZ3VtZW50cy5sZW5ndGgsRT1mYWxzZSxHO2lmKHR5cGVvZiBKPT09ImJvb2xlYW4iKXtFPUo7Sj1hcmd1bWVudHNbMV18fHt9O0g9Mn1pZih0eXBlb2YgSiE9PSJvYmplY3QiJiYhby5pc0Z1bmN0aW9uKEopKXtKPXt9fWlmKEk9PUgpe0o9dGhpczstLUh9Zm9yKDtIPEk7SCsrKXtpZigoRz1hcmd1bWVudHNbSF0pIT1udWxsKXtmb3IodmFyIEYgaW4gRyl7dmFyIEs9SltGXSxMPUdbRl07aWYoSj09PUwpe2NvbnRpbnVlfWlmKEUmJkwmJnR5cGVvZiBMPT09Im9iamVjdCImJiFMLm5vZGVUeXBlKXtKW0ZdPW8uZXh0ZW5kKEUsS3x8KEwubGVuZ3RoIT1udWxsP1tdOnt9KSxMKX1lbHNle2lmKEwhPT1nKXtKW0ZdPUx9fX19fXJldHVybiBKfTt2YXIgYj0vei0/aW5kZXh8Zm9udC0/d2VpZ2h0fG9wYWNpdHl8em9vbXxsaW5lLT9oZWlnaHQvaSxxPWRvY3VtZW50LmRlZmF1bHRWaWV3fHx7fSxzPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7by5leHRlbmQoe25vQ29uZmxpY3Q6ZnVuY3Rpb24oRSl7bC4kPXA7aWYoRSl7bC5qUXVlcnk9eX1yZXR1cm4gb30saXNGdW5jdGlvbjpmdW5jdGlvbihFKXtyZXR1cm4gcy5jYWxsKEUpPT09IltvYmplY3QgRnVuY3Rpb25dIn0saXNBcnJheTpmdW5jdGlvbihFKXtyZXR1cm4gcy5jYWxsKEUpPT09IltvYmplY3QgQXJyYXldIn0saXNYTUxEb2M6ZnVuY3Rpb24oRSl7cmV0dXJuIEUubm9kZVR5cGU9PT05JiZFLmRvY3VtZW50RWxlbWVudC5ub2RlTmFtZSE9PSJIVE1MInx8ISFFLm93bmVyRG9jdW1lbnQmJm8uaXNYTUxEb2MoRS5vd25lckRvY3VtZW50KX0sZ2xvYmFsRXZhbDpmdW5jdGlvbihHKXtpZihHJiYvXFMvLnRlc3QoRykpe3ZhciBGPWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF18fGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxFPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpO0UudHlwZT0idGV4dC9qYXZhc2NyaXB0IjtpZihvLnN1cHBvcnQuc2NyaXB0RXZhbCl7RS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShHKSl9ZWxzZXtFLnRleHQ9R31GLmluc2VydEJlZm9yZShFLEYuZmlyc3RDaGlsZCk7Ri5yZW1vdmVDaGlsZChFKX19LG5vZGVOYW1lOmZ1bmN0aW9uKEYsRSl7cmV0dXJuIEYubm9kZU5hbWUmJkYubm9kZU5hbWUudG9VcHBlckNhc2UoKT09RS50b1VwcGVyQ2FzZSgpfSxlYWNoOmZ1bmN0aW9uKEcsSyxGKXt2YXIgRSxIPTAsST1HLmxlbmd0aDtpZihGKXtpZihJPT09Zyl7Zm9yKEUgaW4gRyl7aWYoSy5hcHBseShHW0VdLEYpPT09ZmFsc2Upe2JyZWFrfX19ZWxzZXtmb3IoO0g8STspe2lmKEsuYXBwbHkoR1tIKytdLEYpPT09ZmFsc2Upe2JyZWFrfX19fWVsc2V7aWYoST09PWcpe2ZvcihFIGluIEcpe2lmKEsuY2FsbChHW0VdLEUsR1tFXSk9PT1mYWxzZSl7YnJlYWt9fX1lbHNle2Zvcih2YXIgSj1HWzBdO0g8SSYmSy5jYWxsKEosSCxKKSE9PWZhbHNlO0o9R1srK0hdKXt9fX1yZXR1cm4gR30scHJvcDpmdW5jdGlvbihILEksRyxGLEUpe2lmKG8uaXNGdW5jdGlvbihJKSl7ST1JLmNhbGwoSCxGKX1yZXR1cm4gdHlwZW9mIEk9PT0ibnVtYmVyIiYmRz09ImN1ckNTUyImJiFiLnRlc3QoRSk/SSsicHgiOkl9LGNsYXNzTmFtZTp7YWRkOmZ1bmN0aW9uKEUsRil7by5lYWNoKChGfHwiIikuc3BsaXQoL1xzKy8pLGZ1bmN0aW9uKEcsSCl7aWYoRS5ub2RlVHlwZT09MSYmIW8uY2xhc3NOYW1lLmhhcyhFLmNsYXNzTmFtZSxIKSl7RS5jbGFzc05hbWUrPShFLmNsYXNzTmFtZT8iICI6IiIpK0h9fSl9LHJlbW92ZTpmdW5jdGlvbihFLEYpe2lmKEUubm9kZVR5cGU9PTEpe0UuY2xhc3NOYW1lPUYhPT1nP28uZ3JlcChFLmNsYXNzTmFtZS5zcGxpdCgvXHMrLyksZnVuY3Rpb24oRyl7cmV0dXJuICFvLmNsYXNzTmFtZS5oYXMoRixHKX0pLmpvaW4oIiAiKToiIn19LGhhczpmdW5jdGlvbihGLEUpe3JldHVybiBGJiZvLmluQXJyYXkoRSwoRi5jbGFzc05hbWV8fEYpLnRvU3RyaW5nKCkuc3BsaXQoL1xzKy8pKT4tMX19LHN3YXA6ZnVuY3Rpb24oSCxHLEkpe3ZhciBFPXt9O2Zvcih2YXIgRiBpbiBHKXtFW0ZdPUguc3R5bGVbRl07SC5zdHlsZVtGXT1HW0ZdfUkuY2FsbChIKTtmb3IodmFyIEYgaW4gRyl7SC5zdHlsZVtGXT1FW0ZdfX0sY3NzOmZ1bmN0aW9uKEgsRixKLEUpe2lmKEY9PSJ3aWR0aCJ8fEY9PSJoZWlnaHQiKXt2YXIgTCxHPXtwb3NpdGlvbjoiYWJzb2x1dGUiLHZpc2liaWxpdHk6ImhpZGRlbiIsZGlzcGxheToiYmxvY2sifSxLPUY9PSJ3aWR0aCI/WyJMZWZ0IiwiUmlnaHQiXTpbIlRvcCIsIkJvdHRvbSJdO2Z1bmN0aW9uIEkoKXtMPUY9PSJ3aWR0aCI/SC5vZmZzZXRXaWR0aDpILm9mZnNldEhlaWdodDtpZihFPT09ImJvcmRlciIpe3JldHVybn1vLmVhY2goSyxmdW5jdGlvbigpe2lmKCFFKXtMLT1wYXJzZUZsb2F0KG8uY3VyQ1NTKEgsInBhZGRpbmciK3RoaXMsdHJ1ZSkpfHwwfWlmKEU9PT0ibWFyZ2luIil7TCs9cGFyc2VGbG9hdChvLmN1ckNTUyhILCJtYXJnaW4iK3RoaXMsdHJ1ZSkpfHwwfWVsc2V7TC09cGFyc2VGbG9hdChvLmN1ckNTUyhILCJib3JkZXIiK3RoaXMrIldpZHRoIix0cnVlKSl8fDB9fSl9aWYoSC5vZmZzZXRXaWR0aCE9PTApe0koKX1lbHNle28uc3dhcChILEcsSSl9cmV0dXJuIE1hdGgubWF4KDAsTWF0aC5yb3VuZChMKSl9cmV0dXJuIG8uY3VyQ1NTKEgsRixKKX0sY3VyQ1NTOmZ1bmN0aW9uKEksRixHKXt2YXIgTCxFPUkuc3R5bGU7aWYoRj09Im9wYWNpdHkiJiYhby5zdXBwb3J0Lm9wYWNpdHkpe0w9by5hdHRyKEUsIm9wYWNpdHkiKTtyZXR1cm4gTD09IiI/IjEiOkx9aWYoRi5tYXRjaCgvZmxvYXQvaSkpe0Y9d31pZighRyYmRSYmRVtGXSl7TD1FW0ZdfWVsc2V7aWYocS5nZXRDb21wdXRlZFN0eWxlKXtpZihGLm1hdGNoKC9mbG9hdC9pKSl7Rj0iZmxvYXQifUY9Ri5yZXBsYWNlKC8oW0EtWl0pL2csIi0kMSIpLnRvTG93ZXJDYXNlKCk7dmFyIE09cS5nZXRDb21wdXRlZFN0eWxlKEksbnVsbCk7aWYoTSl7TD1NLmdldFByb3BlcnR5VmFsdWUoRil9aWYoRj09Im9wYWNpdHkiJiZMPT0iIil7TD0iMSJ9fWVsc2V7aWYoSS5jdXJyZW50U3R5bGUpe3ZhciBKPUYucmVwbGFjZSgvXC0oXHcpL2csZnVuY3Rpb24oTixPKXtyZXR1cm4gTy50b1VwcGVyQ2FzZSgpfSk7TD1JLmN1cnJlbnRTdHlsZVtGXXx8SS5jdXJyZW50U3R5bGVbSl07aWYoIS9eXGQrKHB4KT8kL2kudGVzdChMKSYmL15cZC8udGVzdChMKSl7dmFyIEg9RS5sZWZ0LEs9SS5ydW50aW1lU3R5bGUubGVmdDtJLnJ1bnRpbWVTdHlsZS5sZWZ0PUkuY3VycmVudFN0eWxlLmxlZnQ7RS5sZWZ0PUx8fDA7TD1FLnBpeGVsTGVmdCsicHgiO0UubGVmdD1IO0kucnVudGltZVN0eWxlLmxlZnQ9S319fX1yZXR1cm4gTH0sY2xlYW46ZnVuY3Rpb24oRixLLEkpe0s9S3x8ZG9jdW1lbnQ7aWYodHlwZW9mIEsuY3JlYXRlRWxlbWVudD09PSJ1bmRlZmluZWQiKXtLPUsub3duZXJEb2N1bWVudHx8S1swXSYmS1swXS5vd25lckRvY3VtZW50fHxkb2N1bWVudH1pZighSSYmRi5sZW5ndGg9PT0xJiZ0eXBlb2YgRlswXT09PSJzdHJpbmciKXt2YXIgSD0vXjwoXHcrKVxzKlwvPz4kLy5leGVjKEZbMF0pO2lmKEgpe3JldHVybltLLmNyZWF0ZUVsZW1lbnQoSFsxXSldfX12YXIgRz1bXSxFPVtdLEw9Sy5jcmVhdGVFbGVtZW50KCJkaXYiKTtvLmVhY2goRixmdW5jdGlvbihQLFMpe2lmKHR5cGVvZiBTPT09Im51bWJlciIpe1MrPSIifWlmKCFTKXtyZXR1cm59aWYodHlwZW9mIFM9PT0ic3RyaW5nIil7Uz1TLnJlcGxhY2UoLyg8KFx3KylbXj5dKj8pXC8+L2csZnVuY3Rpb24oVSxWLFQpe3JldHVybiBULm1hdGNoKC9eKGFiYnJ8YnJ8Y29sfGltZ3xpbnB1dHxsaW5rfG1ldGF8cGFyYW18aHJ8YXJlYXxlbWJlZCkkL2kpP1U6VisiPjwvIitUKyI+In0pO3ZhciBPPVMucmVwbGFjZSgvXlxzKy8sIiIpLnN1YnN0cmluZygwLDEwKS50b0xvd2VyQ2FzZSgpO3ZhciBRPSFPLmluZGV4T2YoIjxvcHQiKSYmWzEsIjxzZWxlY3QgbXVsdGlwbGU9J211bHRpcGxlJz4iLCI8L3NlbGVjdD4iXXx8IU8uaW5kZXhPZigiPGxlZyIpJiZbMSwiPGZpZWxkc2V0PiIsIjwvZmllbGRzZXQ+Il18fE8ubWF0Y2goL148KHRoZWFkfHRib2R5fHRmb290fGNvbGd8Y2FwKS8pJiZbMSwiPHRhYmxlPiIsIjwvdGFibGU+Il18fCFPLmluZGV4T2YoIjx0ciIpJiZbMiwiPHRhYmxlPjx0Ym9keT4iLCI8L3Rib2R5PjwvdGFibGU+Il18fCghTy5pbmRleE9mKCI8dGQiKXx8IU8uaW5kZXhPZigiPHRoIikpJiZbMywiPHRhYmxlPjx0Ym9keT48dHI+IiwiPC90cj48L3Rib2R5PjwvdGFibGU+Il18fCFPLmluZGV4T2YoIjxjb2wiKSYmWzIsIjx0YWJsZT48dGJvZHk+PC90Ym9keT48Y29sZ3JvdXA+IiwiPC9jb2xncm91cD48L3RhYmxlPiJdfHwhby5zdXBwb3J0Lmh0bWxTZXJpYWxpemUmJlsxLCJkaXY8ZGl2PiIsIjwvZGl2PiJdfHxbMCwiIiwiIl07TC5pbm5lckhUTUw9UVsxXStTK1FbMl07d2hpbGUoUVswXS0tKXtMPUwubGFzdENoaWxkfWlmKCFvLnN1cHBvcnQudGJvZHkpe3ZhciBSPS88dGJvZHkvaS50ZXN0KFMpLE49IU8uaW5kZXhPZigiPHRhYmxlIikmJiFSP0wuZmlyc3RDaGlsZCYmTC5maXJzdENoaWxkLmNoaWxkTm9kZXM6UVsxXT09Ijx0YWJsZT4iJiYhUj9MLmNoaWxkTm9kZXM6W107Zm9yKHZhciBNPU4ubGVuZ3RoLTE7TT49MDstLU0pe2lmKG8ubm9kZU5hbWUoTltNXSwidGJvZHkiKSYmIU5bTV0uY2hpbGROb2Rlcy5sZW5ndGgpe05bTV0ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChOW01dKX19fWlmKCFvLnN1cHBvcnQubGVhZGluZ1doaXRlc3BhY2UmJi9eXHMvLnRlc3QoUykpe0wuaW5zZXJ0QmVmb3JlKEsuY3JlYXRlVGV4dE5vZGUoUy5tYXRjaCgvXlxzKi8pWzBdKSxMLmZpcnN0Q2hpbGQpfVM9by5tYWtlQXJyYXkoTC5jaGlsZE5vZGVzKX1pZihTLm5vZGVUeXBlKXtHLnB1c2goUyl9ZWxzZXtHPW8ubWVyZ2UoRyxTKX19KTtpZihJKXtmb3IodmFyIEo9MDtHW0pdO0orKyl7aWYoby5ub2RlTmFtZShHW0pdLCJzY3JpcHQiKSYmKCFHW0pdLnR5cGV8fEdbSl0udHlwZS50b0xvd2VyQ2FzZSgpPT09InRleHQvamF2YXNjcmlwdCIpKXtFLnB1c2goR1tKXS5wYXJlbnROb2RlP0dbSl0ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChHW0pdKTpHW0pdKX1lbHNle2lmKEdbSl0ubm9kZVR5cGU9PT0xKXtHLnNwbGljZS5hcHBseShHLFtKKzEsMF0uY29uY2F0KG8ubWFrZUFycmF5KEdbSl0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoInNjcmlwdCIpKSkpfUkuYXBwZW5kQ2hpbGQoR1tKXSl9fXJldHVybiBFfXJldHVybiBHfSxhdHRyOmZ1bmN0aW9uKEosRyxLKXtpZighSnx8Si5ub2RlVHlwZT09M3x8Si5ub2RlVHlwZT09OCl7cmV0dXJuIGd9dmFyIEg9IW8uaXNYTUxEb2MoSiksTD1LIT09ZztHPUgmJm8ucHJvcHNbR118fEc7aWYoSi50YWdOYW1lKXt2YXIgRj0vaHJlZnxzcmN8c3R5bGUvLnRlc3QoRyk7aWYoRz09InNlbGVjdGVkIiYmSi5wYXJlbnROb2RlKXtKLnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleH1pZihHIGluIEomJkgmJiFGKXtpZihMKXtpZihHPT0idHlwZSImJm8ubm9kZU5hbWUoSiwiaW5wdXQiKSYmSi5wYXJlbnROb2RlKXt0aHJvdyJ0eXBlIHByb3BlcnR5IGNhbid0IGJlIGNoYW5nZWQifUpbR109S31pZihvLm5vZGVOYW1lKEosImZvcm0iKSYmSi5nZXRBdHRyaWJ1dGVOb2RlKEcpKXtyZXR1cm4gSi5nZXRBdHRyaWJ1dGVOb2RlKEcpLm5vZGVWYWx1ZX1pZihHPT0idGFiSW5kZXgiKXt2YXIgST1KLmdldEF0dHJpYnV0ZU5vZGUoInRhYkluZGV4Iik7cmV0dXJuIEkmJkkuc3BlY2lmaWVkP0kudmFsdWU6Si5ub2RlTmFtZS5tYXRjaCgvKGJ1dHRvbnxpbnB1dHxvYmplY3R8c2VsZWN0fHRleHRhcmVhKS9pKT8wOkoubm9kZU5hbWUubWF0Y2goL14oYXxhcmVhKSQvaSkmJkouaHJlZj8wOmd9cmV0dXJuIEpbR119aWYoIW8uc3VwcG9ydC5zdHlsZSYmSCYmRz09InN0eWxlIil7cmV0dXJuIG8uYXR0cihKLnN0eWxlLCJjc3NUZXh0IixLKX1pZihMKXtKLnNldEF0dHJpYnV0ZShHLCIiK0spfXZhciBFPSFvLnN1cHBvcnQuaHJlZk5vcm1hbGl6ZWQmJkgmJkY/Si5nZXRBdHRyaWJ1dGUoRywyKTpKLmdldEF0dHJpYnV0ZShHKTtyZXR1cm4gRT09PW51bGw/ZzpFfWlmKCFvLnN1cHBvcnQub3BhY2l0eSYmRz09Im9wYWNpdHkiKXtpZihMKXtKLnpvb209MTtKLmZpbHRlcj0oSi5maWx0ZXJ8fCIiKS5yZXBsYWNlKC9hbHBoYVwoW14pXSpcKS8sIiIpKyhwYXJzZUludChLKSsiIj09Ik5hTiI/IiI6ImFscGhhKG9wYWNpdHk9IitLKjEwMCsiKSIpfXJldHVybiBKLmZpbHRlciYmSi5maWx0ZXIuaW5kZXhPZigib3BhY2l0eT0iKT49MD8ocGFyc2VGbG9hdChKLmZpbHRlci5tYXRjaCgvb3BhY2l0eT0oW14pXSopLylbMV0pLzEwMCkrIiI6IiJ9Rz1HLnJlcGxhY2UoLy0oW2Etel0pL2lnLGZ1bmN0aW9uKE0sTil7cmV0dXJuIE4udG9VcHBlckNhc2UoKX0pO2lmKEwpe0pbR109S31yZXR1cm4gSltHXX0sdHJpbTpmdW5jdGlvbihFKXtyZXR1cm4oRXx8IiIpLnJlcGxhY2UoL15ccyt8XHMrJC9nLCIiKX0sbWFrZUFycmF5OmZ1bmN0aW9uKEcpe3ZhciBFPVtdO2lmKEchPW51bGwpe3ZhciBGPUcubGVuZ3RoO2lmKEY9PW51bGx8fHR5cGVvZiBHPT09InN0cmluZyJ8fG8uaXNGdW5jdGlvbihHKXx8Ry5zZXRJbnRlcnZhbCl7RVswXT1HfWVsc2V7d2hpbGUoRil7RVstLUZdPUdbRl19fX1yZXR1cm4gRX0saW5BcnJheTpmdW5jdGlvbihHLEgpe2Zvcih2YXIgRT0wLEY9SC5sZW5ndGg7RTxGO0UrKyl7aWYoSFtFXT09PUcpe3JldHVybiBFfX1yZXR1cm4gLTF9LG1lcmdlOmZ1bmN0aW9uKEgsRSl7dmFyIEY9MCxHLEk9SC5sZW5ndGg7aWYoIW8uc3VwcG9ydC5nZXRBbGwpe3doaWxlKChHPUVbRisrXSkhPW51bGwpe2lmKEcubm9kZVR5cGUhPTgpe0hbSSsrXT1HfX19ZWxzZXt3aGlsZSgoRz1FW0YrK10pIT1udWxsKXtIW0krK109R319cmV0dXJuIEh9LHVuaXF1ZTpmdW5jdGlvbihLKXt2YXIgRj1bXSxFPXt9O3RyeXtmb3IodmFyIEc9MCxIPUsubGVuZ3RoO0c8SDtHKyspe3ZhciBKPW8uZGF0YShLW0ddKTtpZighRVtKXSl7RVtKXT10cnVlO0YucHVzaChLW0ddKX19fWNhdGNoKEkpe0Y9S31yZXR1cm4gRn0sZ3JlcDpmdW5jdGlvbihGLEosRSl7dmFyIEc9W107Zm9yKHZhciBIPTAsST1GLmxlbmd0aDtIPEk7SCsrKXtpZighRSE9IUooRltIXSxIKSl7Ry5wdXNoKEZbSF0pfX1yZXR1cm4gR30sbWFwOmZ1bmN0aW9uKEUsSil7dmFyIEY9W107Zm9yKHZhciBHPTAsSD1FLmxlbmd0aDtHPEg7RysrKXt2YXIgST1KKEVbR10sRyk7aWYoSSE9bnVsbCl7RltGLmxlbmd0aF09SX19cmV0dXJuIEYuY29uY2F0LmFwcGx5KFtdLEYpfX0pO3ZhciBDPW5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKTtvLmJyb3dzZXI9e3ZlcnNpb246KEMubWF0Y2goLy4rKD86cnZ8aXR8cmF8aWUpW1wvOiBdKFtcZC5dKykvKXx8WzAsIjAiXSlbMV0sc2FmYXJpOi93ZWJraXQvLnRlc3QoQyksb3BlcmE6L29wZXJhLy50ZXN0KEMpLG1zaWU6L21zaWUvLnRlc3QoQykmJiEvb3BlcmEvLnRlc3QoQyksbW96aWxsYTovbW96aWxsYS8udGVzdChDKSYmIS8oY29tcGF0aWJsZXx3ZWJraXQpLy50ZXN0KEMpfTtvLmVhY2goe3BhcmVudDpmdW5jdGlvbihFKXtyZXR1cm4gRS5wYXJlbnROb2RlfSxwYXJlbnRzOmZ1bmN0aW9uKEUpe3JldHVybiBvLmRpcihFLCJwYXJlbnROb2RlIil9LG5leHQ6ZnVuY3Rpb24oRSl7cmV0dXJuIG8ubnRoKEUsMiwibmV4dFNpYmxpbmciKX0scHJldjpmdW5jdGlvbihFKXtyZXR1cm4gby5udGgoRSwyLCJwcmV2aW91c1NpYmxpbmciKX0sbmV4dEFsbDpmdW5jdGlvbihFKXtyZXR1cm4gby5kaXIoRSwibmV4dFNpYmxpbmciKX0scHJldkFsbDpmdW5jdGlvbihFKXtyZXR1cm4gby5kaXIoRSwicHJldmlvdXNTaWJsaW5nIil9LHNpYmxpbmdzOmZ1bmN0aW9uKEUpe3JldHVybiBvLnNpYmxpbmcoRS5wYXJlbnROb2RlLmZpcnN0Q2hpbGQsRSl9LGNoaWxkcmVuOmZ1bmN0aW9uKEUpe3JldHVybiBvLnNpYmxpbmcoRS5maXJzdENoaWxkKX0sY29udGVudHM6ZnVuY3Rpb24oRSl7cmV0dXJuIG8ubm9kZU5hbWUoRSwiaWZyYW1lIik/RS5jb250ZW50RG9jdW1lbnR8fEUuY29udGVudFdpbmRvdy5kb2N1bWVudDpvLm1ha2VBcnJheShFLmNoaWxkTm9kZXMpfX0sZnVuY3Rpb24oRSxGKXtvLmZuW0VdPWZ1bmN0aW9uKEcpe3ZhciBIPW8ubWFwKHRoaXMsRik7aWYoRyYmdHlwZW9mIEc9PSJzdHJpbmciKXtIPW8ubXVsdGlGaWx0ZXIoRyxIKX1yZXR1cm4gdGhpcy5wdXNoU3RhY2soby51bmlxdWUoSCksRSxHKX19KTtvLmVhY2goe2FwcGVuZFRvOiJhcHBlbmQiLHByZXBlbmRUbzoicHJlcGVuZCIsaW5zZXJ0QmVmb3JlOiJiZWZvcmUiLGluc2VydEFmdGVyOiJhZnRlciIscmVwbGFjZUFsbDoicmVwbGFjZVdpdGgifSxmdW5jdGlvbihFLEYpe28uZm5bRV09ZnVuY3Rpb24oRyl7dmFyIEo9W10sTD1vKEcpO2Zvcih2YXIgSz0wLEg9TC5sZW5ndGg7SzxIO0srKyl7dmFyIEk9KEs+MD90aGlzLmNsb25lKHRydWUpOnRoaXMpLmdldCgpO28uZm5bRl0uYXBwbHkobyhMW0tdKSxJKTtKPUouY29uY2F0KEkpfXJldHVybiB0aGlzLnB1c2hTdGFjayhKLEUsRyl9fSk7by5lYWNoKHtyZW1vdmVBdHRyOmZ1bmN0aW9uKEUpe28uYXR0cih0aGlzLEUsIiIpO2lmKHRoaXMubm9kZVR5cGU9PTEpe3RoaXMucmVtb3ZlQXR0cmlidXRlKEUpfX0sYWRkQ2xhc3M6ZnVuY3Rpb24oRSl7by5jbGFzc05hbWUuYWRkKHRoaXMsRSl9LHJlbW92ZUNsYXNzOmZ1bmN0aW9uKEUpe28uY2xhc3NOYW1lLnJlbW92ZSh0aGlzLEUpfSx0b2dnbGVDbGFzczpmdW5jdGlvbihGLEUpe2lmKHR5cGVvZiBFIT09ImJvb2xlYW4iKXtFPSFvLmNsYXNzTmFtZS5oYXModGhpcyxGKX1vLmNsYXNzTmFtZVtFPyJhZGQiOiJyZW1vdmUiXSh0aGlzLEYpfSxyZW1vdmU6ZnVuY3Rpb24oRSl7aWYoIUV8fG8uZmlsdGVyKEUsW3RoaXNdKS5sZW5ndGgpe28oIioiLHRoaXMpLmFkZChbdGhpc10pLmVhY2goZnVuY3Rpb24oKXtvLmV2ZW50LnJlbW92ZSh0aGlzKTtvLnJlbW92ZURhdGEodGhpcyl9KTtpZih0aGlzLnBhcmVudE5vZGUpe3RoaXMucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzKX19fSxlbXB0eTpmdW5jdGlvbigpe28odGhpcykuY2hpbGRyZW4oKS5yZW1vdmUoKTt3aGlsZSh0aGlzLmZpcnN0Q2hpbGQpe3RoaXMucmVtb3ZlQ2hpbGQodGhpcy5maXJzdENoaWxkKX19fSxmdW5jdGlvbihFLEYpe28uZm5bRV09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lYWNoKEYsYXJndW1lbnRzKX19KTtmdW5jdGlvbiBqKEUsRil7cmV0dXJuIEVbMF0mJnBhcnNlSW50KG8uY3VyQ1NTKEVbMF0sRix0cnVlKSwxMCl8fDB9dmFyIGg9ImpRdWVyeSIrZSgpLHY9MCxBPXt9O28uZXh0ZW5kKHtjYWNoZTp7fSxkYXRhOmZ1bmN0aW9uKEYsRSxHKXtGPUY9PWw/QTpGO3ZhciBIPUZbaF07aWYoIUgpe0g9RltoXT0rK3Z9aWYoRSYmIW8uY2FjaGVbSF0pe28uY2FjaGVbSF09e319aWYoRyE9PWcpe28uY2FjaGVbSF1bRV09R31yZXR1cm4gRT9vLmNhY2hlW0hdW0VdOkh9LHJlbW92ZURhdGE6ZnVuY3Rpb24oRixFKXtGPUY9PWw/QTpGO3ZhciBIPUZbaF07aWYoRSl7aWYoby5jYWNoZVtIXSl7ZGVsZXRlIG8uY2FjaGVbSF1bRV07RT0iIjtmb3IoRSBpbiBvLmNhY2hlW0hdKXticmVha31pZighRSl7by5yZW1vdmVEYXRhKEYpfX19ZWxzZXt0cnl7ZGVsZXRlIEZbaF19Y2F0Y2goRyl7aWYoRi5yZW1vdmVBdHRyaWJ1dGUpe0YucmVtb3ZlQXR0cmlidXRlKGgpfX1kZWxldGUgby5jYWNoZVtIXX19LHF1ZXVlOmZ1bmN0aW9uKEYsRSxIKXtpZihGKXtFPShFfHwiZngiKSsicXVldWUiO3ZhciBHPW8uZGF0YShGLEUpO2lmKCFHfHxvLmlzQXJyYXkoSCkpe0c9by5kYXRhKEYsRSxvLm1ha2VBcnJheShIKSl9ZWxzZXtpZihIKXtHLnB1c2goSCl9fX1yZXR1cm4gR30sZGVxdWV1ZTpmdW5jdGlvbihILEcpe3ZhciBFPW8ucXVldWUoSCxHKSxGPUUuc2hpZnQoKTtpZighR3x8Rz09PSJmeCIpe0Y9RVswXX1pZihGIT09Zyl7Ri5jYWxsKEgpfX19KTtvLmZuLmV4dGVuZCh7ZGF0YTpmdW5jdGlvbihFLEcpe3ZhciBIPUUuc3BsaXQoIi4iKTtIWzFdPUhbMV0/Ii4iK0hbMV06IiI7aWYoRz09PWcpe3ZhciBGPXRoaXMudHJpZ2dlckhhbmRsZXIoImdldERhdGEiK0hbMV0rIiEiLFtIWzBdXSk7aWYoRj09PWcmJnRoaXMubGVuZ3RoKXtGPW8uZGF0YSh0aGlzWzBdLEUpfXJldHVybiBGPT09ZyYmSFsxXT90aGlzLmRhdGEoSFswXSk6Rn1lbHNle3JldHVybiB0aGlzLnRyaWdnZXIoInNldERhdGEiK0hbMV0rIiEiLFtIWzBdLEddKS5lYWNoKGZ1bmN0aW9uKCl7by5kYXRhKHRoaXMsRSxHKX0pfX0scmVtb3ZlRGF0YTpmdW5jdGlvbihFKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7by5yZW1vdmVEYXRhKHRoaXMsRSl9KX0scXVldWU6ZnVuY3Rpb24oRSxGKXtpZih0eXBlb2YgRSE9PSJzdHJpbmciKXtGPUU7RT0iZngifWlmKEY9PT1nKXtyZXR1cm4gby5xdWV1ZSh0aGlzWzBdLEUpfXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgRz1vLnF1ZXVlKHRoaXMsRSxGKTtpZihFPT0iZngiJiZHLmxlbmd0aD09MSl7R1swXS5jYWxsKHRoaXMpfX0pfSxkZXF1ZXVlOmZ1bmN0aW9uKEUpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtvLmRlcXVldWUodGhpcyxFKX0pfX0pOwovKgogKiBTaXp6bGUgQ1NTIFNlbGVjdG9yIEVuZ2luZSAtIHYwLjkuMwogKiAgQ29weXJpZ2h0IDIwMDksIFRoZSBEb2pvIEZvdW5kYXRpb24KICogIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQsIEJTRCwgYW5kIEdQTCBMaWNlbnNlcy4KICogIE1vcmUgaW5mb3JtYXRpb246IGh0dHA6Ly9zaXp6bGVqcy5jb20vCiAqLwooZnVuY3Rpb24oKXt2YXIgUj0vKCg/OlwoKD86XChbXigpXStcKXxbXigpXSspK1wpfFxbKD86XFtbXltcXV0qXF18WyciXVteJyJdKlsnIl18W15bXF0nIl0rKStcXXxcXC58W14gPit+LChcW1xcXSspK3xbPit+XSkoXHMqLFxzKik/L2csTD0wLEg9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZzt2YXIgRj1mdW5jdGlvbihZLFUsYWIsYWMpe2FiPWFifHxbXTtVPVV8fGRvY3VtZW50O2lmKFUubm9kZVR5cGUhPT0xJiZVLm5vZGVUeXBlIT09OSl7cmV0dXJuW119aWYoIVl8fHR5cGVvZiBZIT09InN0cmluZyIpe3JldHVybiBhYn12YXIgWj1bXSxXLGFmLGFpLFQsYWQsVixYPXRydWU7Ui5sYXN0SW5kZXg9MDt3aGlsZSgoVz1SLmV4ZWMoWSkpIT09bnVsbCl7Wi5wdXNoKFdbMV0pO2lmKFdbMl0pe1Y9UmVnRXhwLnJpZ2h0Q29udGV4dDticmVha319aWYoWi5sZW5ndGg+MSYmTS5leGVjKFkpKXtpZihaLmxlbmd0aD09PTImJkkucmVsYXRpdmVbWlswXV0pe2FmPUooWlswXStaWzFdLFUpfWVsc2V7YWY9SS5yZWxhdGl2ZVtaWzBdXT9bVV06RihaLnNoaWZ0KCksVSk7d2hpbGUoWi5sZW5ndGgpe1k9Wi5zaGlmdCgpO2lmKEkucmVsYXRpdmVbWV0pe1krPVouc2hpZnQoKX1hZj1KKFksYWYpfX19ZWxzZXt2YXIgYWU9YWM/e2V4cHI6Wi5wb3AoKSxzZXQ6RShhYyl9OkYuZmluZChaLnBvcCgpLFoubGVuZ3RoPT09MSYmVS5wYXJlbnROb2RlP1UucGFyZW50Tm9kZTpVLFEoVSkpO2FmPUYuZmlsdGVyKGFlLmV4cHIsYWUuc2V0KTtpZihaLmxlbmd0aD4wKXthaT1FKGFmKX1lbHNle1g9ZmFsc2V9d2hpbGUoWi5sZW5ndGgpe3ZhciBhaD1aLnBvcCgpLGFnPWFoO2lmKCFJLnJlbGF0aXZlW2FoXSl7YWg9IiJ9ZWxzZXthZz1aLnBvcCgpfWlmKGFnPT1udWxsKXthZz1VfUkucmVsYXRpdmVbYWhdKGFpLGFnLFEoVSkpfX1pZighYWkpe2FpPWFmfWlmKCFhaSl7dGhyb3ciU3ludGF4IGVycm9yLCB1bnJlY29nbml6ZWQgZXhwcmVzc2lvbjogIisoYWh8fFkpfWlmKEguY2FsbChhaSk9PT0iW29iamVjdCBBcnJheV0iKXtpZighWCl7YWIucHVzaC5hcHBseShhYixhaSl9ZWxzZXtpZihVLm5vZGVUeXBlPT09MSl7Zm9yKHZhciBhYT0wO2FpW2FhXSE9bnVsbDthYSsrKXtpZihhaVthYV0mJihhaVthYV09PT10cnVlfHxhaVthYV0ubm9kZVR5cGU9PT0xJiZLKFUsYWlbYWFdKSkpe2FiLnB1c2goYWZbYWFdKX19fWVsc2V7Zm9yKHZhciBhYT0wO2FpW2FhXSE9bnVsbDthYSsrKXtpZihhaVthYV0mJmFpW2FhXS5ub2RlVHlwZT09PTEpe2FiLnB1c2goYWZbYWFdKX19fX19ZWxzZXtFKGFpLGFiKX1pZihWKXtGKFYsVSxhYixhYyk7aWYoRyl7aGFzRHVwbGljYXRlPWZhbHNlO2FiLnNvcnQoRyk7aWYoaGFzRHVwbGljYXRlKXtmb3IodmFyIGFhPTE7YWE8YWIubGVuZ3RoO2FhKyspe2lmKGFiW2FhXT09PWFiW2FhLTFdKXthYi5zcGxpY2UoYWEtLSwxKX19fX19cmV0dXJuIGFifTtGLm1hdGNoZXM9ZnVuY3Rpb24oVCxVKXtyZXR1cm4gRihULG51bGwsbnVsbCxVKX07Ri5maW5kPWZ1bmN0aW9uKGFhLFQsYWIpe3ZhciBaLFg7aWYoIWFhKXtyZXR1cm5bXX1mb3IodmFyIFc9MCxWPUkub3JkZXIubGVuZ3RoO1c8VjtXKyspe3ZhciBZPUkub3JkZXJbV10sWDtpZigoWD1JLm1hdGNoW1ldLmV4ZWMoYWEpKSl7dmFyIFU9UmVnRXhwLmxlZnRDb250ZXh0O2lmKFUuc3Vic3RyKFUubGVuZ3RoLTEpIT09IlxcIil7WFsxXT0oWFsxXXx8IiIpLnJlcGxhY2UoL1xcL2csIiIpO1o9SS5maW5kW1ldKFgsVCxhYik7aWYoWiE9bnVsbCl7YWE9YWEucmVwbGFjZShJLm1hdGNoW1ldLCIiKTticmVha319fX1pZighWil7Wj1ULmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIil9cmV0dXJue3NldDpaLGV4cHI6YWF9fTtGLmZpbHRlcj1mdW5jdGlvbihhZCxhYyxhZyxXKXt2YXIgVj1hZCxhaT1bXSxhYT1hYyxZLFQsWj1hYyYmYWNbMF0mJlEoYWNbMF0pO3doaWxlKGFkJiZhYy5sZW5ndGgpe2Zvcih2YXIgYWIgaW4gSS5maWx0ZXIpe2lmKChZPUkubWF0Y2hbYWJdLmV4ZWMoYWQpKSE9bnVsbCl7dmFyIFU9SS5maWx0ZXJbYWJdLGFoLGFmO1Q9ZmFsc2U7aWYoYWE9PWFpKXthaT1bXX1pZihJLnByZUZpbHRlclthYl0pe1k9SS5wcmVGaWx0ZXJbYWJdKFksYWEsYWcsYWksVyxaKTtpZighWSl7VD1haD10cnVlfWVsc2V7aWYoWT09PXRydWUpe2NvbnRpbnVlfX19aWYoWSl7Zm9yKHZhciBYPTA7KGFmPWFhW1hdKSE9bnVsbDtYKyspe2lmKGFmKXthaD1VKGFmLFksWCxhYSk7dmFyIGFlPVdeISFhaDtpZihhZyYmYWghPW51bGwpe2lmKGFlKXtUPXRydWV9ZWxzZXthYVtYXT1mYWxzZX19ZWxzZXtpZihhZSl7YWkucHVzaChhZik7VD10cnVlfX19fX1pZihhaCE9PWcpe2lmKCFhZyl7YWE9YWl9YWQ9YWQucmVwbGFjZShJLm1hdGNoW2FiXSwiIik7aWYoIVQpe3JldHVybltdfWJyZWFrfX19aWYoYWQ9PVYpe2lmKFQ9PW51bGwpe3Rocm93IlN5bnRheCBlcnJvciwgdW5yZWNvZ25pemVkIGV4cHJlc3Npb246ICIrYWR9ZWxzZXticmVha319Vj1hZH1yZXR1cm4gYWF9O3ZhciBJPUYuc2VsZWN0b3JzPXtvcmRlcjpbIklEIiwiTkFNRSIsIlRBRyJdLG1hdGNoOntJRDovIygoPzpbXHdcdTAwYzAtXHVGRkZGXy1dfFxcLikrKS8sQ0xBU1M6L1wuKCg/Oltcd1x1MDBjMC1cdUZGRkZfLV18XFwuKSspLyxOQU1FOi9cW25hbWU9WyciXSooKD86W1x3XHUwMGMwLVx1RkZGRl8tXXxcXC4pKylbJyJdKlxdLyxBVFRSOi9cW1xzKigoPzpbXHdcdTAwYzAtXHVGRkZGXy1dfFxcLikrKVxzKig/OihcUz89KVxzKihbJyJdKikoLio/KVwzfClccypcXS8sVEFHOi9eKCg/Oltcd1x1MDBjMC1cdUZGRkZcKl8tXXxcXC4pKykvLENISUxEOi86KG9ubHl8bnRofGxhc3R8Zmlyc3QpLWNoaWxkKD86XCgoZXZlbnxvZGR8W1xkbistXSopXCkpPy8sUE9TOi86KG50aHxlcXxndHxsdHxmaXJzdHxsYXN0fGV2ZW58b2RkKSg/OlwoKFxkKilcKSk/KD89W14tXXwkKS8sUFNFVURPOi86KCg/Oltcd1x1MDBjMC1cdUZGRkZfLV18XFwuKSspKD86XCgoWyciXSopKCg/OlwoW15cKV0rXCl8W15cMlwoXCldKikrKVwyXCkpPy99LGF0dHJNYXA6eyJjbGFzcyI6ImNsYXNzTmFtZSIsImZvciI6Imh0bWxGb3IifSxhdHRySGFuZGxlOntocmVmOmZ1bmN0aW9uKFQpe3JldHVybiBULmdldEF0dHJpYnV0ZSgiaHJlZiIpfX0scmVsYXRpdmU6eyIrIjpmdW5jdGlvbihhYSxULFope3ZhciBYPXR5cGVvZiBUPT09InN0cmluZyIsYWI9WCYmIS9cVy8udGVzdChUKSxZPVgmJiFhYjtpZihhYiYmIVope1Q9VC50b1VwcGVyQ2FzZSgpfWZvcih2YXIgVz0wLFY9YWEubGVuZ3RoLFU7VzxWO1crKyl7aWYoKFU9YWFbV10pKXt3aGlsZSgoVT1VLnByZXZpb3VzU2libGluZykmJlUubm9kZVR5cGUhPT0xKXt9YWFbV109WXx8VSYmVS5ub2RlTmFtZT09PVQ/VXx8ZmFsc2U6VT09PVR9fWlmKFkpe0YuZmlsdGVyKFQsYWEsdHJ1ZSl9fSwiPiI6ZnVuY3Rpb24oWixVLGFhKXt2YXIgWD10eXBlb2YgVT09PSJzdHJpbmciO2lmKFgmJiEvXFcvLnRlc3QoVSkpe1U9YWE/VTpVLnRvVXBwZXJDYXNlKCk7Zm9yKHZhciBWPTAsVD1aLmxlbmd0aDtWPFQ7VisrKXt2YXIgWT1aW1ZdO2lmKFkpe3ZhciBXPVkucGFyZW50Tm9kZTtaW1ZdPVcubm9kZU5hbWU9PT1VP1c6ZmFsc2V9fX1lbHNle2Zvcih2YXIgVj0wLFQ9Wi5sZW5ndGg7VjxUO1YrKyl7dmFyIFk9WltWXTtpZihZKXtaW1ZdPVg/WS5wYXJlbnROb2RlOlkucGFyZW50Tm9kZT09PVV9fWlmKFgpe0YuZmlsdGVyKFUsWix0cnVlKX19fSwiIjpmdW5jdGlvbihXLFUsWSl7dmFyIFY9TCsrLFQ9UztpZighVS5tYXRjaCgvXFcvKSl7dmFyIFg9VT1ZP1U6VS50b1VwcGVyQ2FzZSgpO1Q9UH1UKCJwYXJlbnROb2RlIixVLFYsVyxYLFkpfSwifiI6ZnVuY3Rpb24oVyxVLFkpe3ZhciBWPUwrKyxUPVM7aWYodHlwZW9mIFU9PT0ic3RyaW5nIiYmIVUubWF0Y2goL1xXLykpe3ZhciBYPVU9WT9VOlUudG9VcHBlckNhc2UoKTtUPVB9VCgicHJldmlvdXNTaWJsaW5nIixVLFYsVyxYLFkpfX0sZmluZDp7SUQ6ZnVuY3Rpb24oVSxWLFcpe2lmKHR5cGVvZiBWLmdldEVsZW1lbnRCeUlkIT09InVuZGVmaW5lZCImJiFXKXt2YXIgVD1WLmdldEVsZW1lbnRCeUlkKFVbMV0pO3JldHVybiBUP1tUXTpbXX19LE5BTUU6ZnVuY3Rpb24oVixZLFope2lmKHR5cGVvZiBZLmdldEVsZW1lbnRzQnlOYW1lIT09InVuZGVmaW5lZCIpe3ZhciBVPVtdLFg9WS5nZXRFbGVtZW50c0J5TmFtZShWWzFdKTtmb3IodmFyIFc9MCxUPVgubGVuZ3RoO1c8VDtXKyspe2lmKFhbV10uZ2V0QXR0cmlidXRlKCJuYW1lIik9PT1WWzFdKXtVLnB1c2goWFtXXSl9fXJldHVybiBVLmxlbmd0aD09PTA/bnVsbDpVfX0sVEFHOmZ1bmN0aW9uKFQsVSl7cmV0dXJuIFUuZ2V0RWxlbWVudHNCeVRhZ05hbWUoVFsxXSl9fSxwcmVGaWx0ZXI6e0NMQVNTOmZ1bmN0aW9uKFcsVSxWLFQsWixhYSl7Vz0iICIrV1sxXS5yZXBsYWNlKC9cXC9nLCIiKSsiICI7aWYoYWEpe3JldHVybiBXfWZvcih2YXIgWD0wLFk7KFk9VVtYXSkhPW51bGw7WCsrKXtpZihZKXtpZihaXihZLmNsYXNzTmFtZSYmKCIgIitZLmNsYXNzTmFtZSsiICIpLmluZGV4T2YoVyk+PTApKXtpZighVil7VC5wdXNoKFkpfX1lbHNle2lmKFYpe1VbWF09ZmFsc2V9fX19cmV0dXJuIGZhbHNlfSxJRDpmdW5jdGlvbihUKXtyZXR1cm4gVFsxXS5yZXBsYWNlKC9cXC9nLCIiKX0sVEFHOmZ1bmN0aW9uKFUsVCl7Zm9yKHZhciBWPTA7VFtWXT09PWZhbHNlO1YrKyl7fXJldHVybiBUW1ZdJiZRKFRbVl0pP1VbMV06VVsxXS50b1VwcGVyQ2FzZSgpfSxDSElMRDpmdW5jdGlvbihUKXtpZihUWzFdPT0ibnRoIil7dmFyIFU9LygtPykoXGQqKW4oKD86XCt8LSk/XGQqKS8uZXhlYyhUWzJdPT0iZXZlbiImJiIybiJ8fFRbMl09PSJvZGQiJiYiMm4rMSJ8fCEvXEQvLnRlc3QoVFsyXSkmJiIwbisiK1RbMl18fFRbMl0pO1RbMl09KFVbMV0rKFVbMl18fDEpKS0wO1RbM109VVszXS0wfVRbMF09TCsrO3JldHVybiBUfSxBVFRSOmZ1bmN0aW9uKFgsVSxWLFQsWSxaKXt2YXIgVz1YWzFdLnJlcGxhY2UoL1xcL2csIiIpO2lmKCFaJiZJLmF0dHJNYXBbV10pe1hbMV09SS5hdHRyTWFwW1ddfWlmKFhbMl09PT0ifj0iKXtYWzRdPSIgIitYWzRdKyIgIn1yZXR1cm4gWH0sUFNFVURPOmZ1bmN0aW9uKFgsVSxWLFQsWSl7aWYoWFsxXT09PSJub3QiKXtpZihYWzNdLm1hdGNoKFIpLmxlbmd0aD4xfHwvXlx3Ly50ZXN0KFhbM10pKXtYWzNdPUYoWFszXSxudWxsLG51bGwsVSl9ZWxzZXt2YXIgVz1GLmZpbHRlcihYWzNdLFUsVix0cnVlXlkpO2lmKCFWKXtULnB1c2guYXBwbHkoVCxXKX1yZXR1cm4gZmFsc2V9fWVsc2V7aWYoSS5tYXRjaC5QT1MudGVzdChYWzBdKXx8SS5tYXRjaC5DSElMRC50ZXN0KFhbMF0pKXtyZXR1cm4gdHJ1ZX19cmV0dXJuIFh9LFBPUzpmdW5jdGlvbihUKXtULnVuc2hpZnQodHJ1ZSk7cmV0dXJuIFR9fSxmaWx0ZXJzOntlbmFibGVkOmZ1bmN0aW9uKFQpe3JldHVybiBULmRpc2FibGVkPT09ZmFsc2UmJlQudHlwZSE9PSJoaWRkZW4ifSxkaXNhYmxlZDpmdW5jdGlvbihUKXtyZXR1cm4gVC5kaXNhYmxlZD09PXRydWV9LGNoZWNrZWQ6ZnVuY3Rpb24oVCl7cmV0dXJuIFQuY2hlY2tlZD09PXRydWV9LHNlbGVjdGVkOmZ1bmN0aW9uKFQpe1QucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4O3JldHVybiBULnNlbGVjdGVkPT09dHJ1ZX0scGFyZW50OmZ1bmN0aW9uKFQpe3JldHVybiAhIVQuZmlyc3RDaGlsZH0sZW1wdHk6ZnVuY3Rpb24oVCl7cmV0dXJuICFULmZpcnN0Q2hpbGR9LGhhczpmdW5jdGlvbihWLFUsVCl7cmV0dXJuICEhRihUWzNdLFYpLmxlbmd0aH0saGVhZGVyOmZ1bmN0aW9uKFQpe3JldHVybi9oXGQvaS50ZXN0KFQubm9kZU5hbWUpfSx0ZXh0OmZ1bmN0aW9uKFQpe3JldHVybiJ0ZXh0Ij09PVQudHlwZX0scmFkaW86ZnVuY3Rpb24oVCl7cmV0dXJuInJhZGlvIj09PVQudHlwZX0sY2hlY2tib3g6ZnVuY3Rpb24oVCl7cmV0dXJuImNoZWNrYm94Ij09PVQudHlwZX0sZmlsZTpmdW5jdGlvbihUKXtyZXR1cm4iZmlsZSI9PT1ULnR5cGV9LHBhc3N3b3JkOmZ1bmN0aW9uKFQpe3JldHVybiJwYXNzd29yZCI9PT1ULnR5cGV9LHN1Ym1pdDpmdW5jdGlvbihUKXtyZXR1cm4ic3VibWl0Ij09PVQudHlwZX0saW1hZ2U6ZnVuY3Rpb24oVCl7cmV0dXJuImltYWdlIj09PVQudHlwZX0scmVzZXQ6ZnVuY3Rpb24oVCl7cmV0dXJuInJlc2V0Ij09PVQudHlwZX0sYnV0dG9uOmZ1bmN0aW9uKFQpe3JldHVybiJidXR0b24iPT09VC50eXBlfHxULm5vZGVOYW1lLnRvVXBwZXJDYXNlKCk9PT0iQlVUVE9OIn0saW5wdXQ6ZnVuY3Rpb24oVCl7cmV0dXJuL2lucHV0fHNlbGVjdHx0ZXh0YXJlYXxidXR0b24vaS50ZXN0KFQubm9kZU5hbWUpfX0sc2V0RmlsdGVyczp7Zmlyc3Q6ZnVuY3Rpb24oVSxUKXtyZXR1cm4gVD09PTB9LGxhc3Q6ZnVuY3Rpb24oVixVLFQsVyl7cmV0dXJuIFU9PT1XLmxlbmd0aC0xfSxldmVuOmZ1bmN0aW9uKFUsVCl7cmV0dXJuIFQlMj09PTB9LG9kZDpmdW5jdGlvbihVLFQpe3JldHVybiBUJTI9PT0xfSxsdDpmdW5jdGlvbihWLFUsVCl7cmV0dXJuIFU8VFszXS0wfSxndDpmdW5jdGlvbihWLFUsVCl7cmV0dXJuIFU+VFszXS0wfSxudGg6ZnVuY3Rpb24oVixVLFQpe3JldHVybiBUWzNdLTA9PVV9LGVxOmZ1bmN0aW9uKFYsVSxUKXtyZXR1cm4gVFszXS0wPT1VfX0sZmlsdGVyOntQU0VVRE86ZnVuY3Rpb24oWixWLFcsYWEpe3ZhciBVPVZbMV0sWD1JLmZpbHRlcnNbVV07aWYoWCl7cmV0dXJuIFgoWixXLFYsYWEpfWVsc2V7aWYoVT09PSJjb250YWlucyIpe3JldHVybihaLnRleHRDb250ZW50fHxaLmlubmVyVGV4dHx8IiIpLmluZGV4T2YoVlszXSk+PTB9ZWxzZXtpZihVPT09Im5vdCIpe3ZhciBZPVZbM107Zm9yKHZhciBXPTAsVD1ZLmxlbmd0aDtXPFQ7VysrKXtpZihZW1ddPT09Wil7cmV0dXJuIGZhbHNlfX1yZXR1cm4gdHJ1ZX19fX0sQ0hJTEQ6ZnVuY3Rpb24oVCxXKXt2YXIgWj1XWzFdLFU9VDtzd2l0Y2goWil7Y2FzZSJvbmx5IjpjYXNlImZpcnN0Ijp3aGlsZShVPVUucHJldmlvdXNTaWJsaW5nKXtpZihVLm5vZGVUeXBlPT09MSl7cmV0dXJuIGZhbHNlfX1pZihaPT0iZmlyc3QiKXtyZXR1cm4gdHJ1ZX1VPVQ7Y2FzZSJsYXN0Ijp3aGlsZShVPVUubmV4dFNpYmxpbmcpe2lmKFUubm9kZVR5cGU9PT0xKXtyZXR1cm4gZmFsc2V9fXJldHVybiB0cnVlO2Nhc2UibnRoIjp2YXIgVj1XWzJdLGFjPVdbM107aWYoVj09MSYmYWM9PTApe3JldHVybiB0cnVlfXZhciBZPVdbMF0sYWI9VC5wYXJlbnROb2RlO2lmKGFiJiYoYWIuc2l6Y2FjaGUhPT1ZfHwhVC5ub2RlSW5kZXgpKXt2YXIgWD0wO2ZvcihVPWFiLmZpcnN0Q2hpbGQ7VTtVPVUubmV4dFNpYmxpbmcpe2lmKFUubm9kZVR5cGU9PT0xKXtVLm5vZGVJbmRleD0rK1h9fWFiLnNpemNhY2hlPVl9dmFyIGFhPVQubm9kZUluZGV4LWFjO2lmKFY9PTApe3JldHVybiBhYT09MH1lbHNle3JldHVybihhYSVWPT0wJiZhYS9WPj0wKX19fSxJRDpmdW5jdGlvbihVLFQpe3JldHVybiBVLm5vZGVUeXBlPT09MSYmVS5nZXRBdHRyaWJ1dGUoImlkIik9PT1UfSxUQUc6ZnVuY3Rpb24oVSxUKXtyZXR1cm4oVD09PSIqIiYmVS5ub2RlVHlwZT09PTEpfHxVLm5vZGVOYW1lPT09VH0sQ0xBU1M6ZnVuY3Rpb24oVSxUKXtyZXR1cm4oIiAiKyhVLmNsYXNzTmFtZXx8VS5nZXRBdHRyaWJ1dGUoImNsYXNzIikpKyIgIikuaW5kZXhPZihUKT4tMX0sQVRUUjpmdW5jdGlvbihZLFcpe3ZhciBWPVdbMV0sVD1JLmF0dHJIYW5kbGVbVl0/SS5hdHRySGFuZGxlW1ZdKFkpOllbVl0hPW51bGw/WVtWXTpZLmdldEF0dHJpYnV0ZShWKSxaPVQrIiIsWD1XWzJdLFU9V1s0XTtyZXR1cm4gVD09bnVsbD9YPT09IiE9IjpYPT09Ij0iP1o9PT1VOlg9PT0iKj0iP1ouaW5kZXhPZihVKT49MDpYPT09In49Ij8oIiAiK1orIiAiKS5pbmRleE9mKFUpPj0wOiFVP1omJlQhPT1mYWxzZTpYPT09IiE9Ij9aIT1VOlg9PT0iXj0iP1ouaW5kZXhPZihVKT09PTA6WD09PSIkPSI/Wi5zdWJzdHIoWi5sZW5ndGgtVS5sZW5ndGgpPT09VTpYPT09Inw9Ij9aPT09VXx8Wi5zdWJzdHIoMCxVLmxlbmd0aCsxKT09PVUrIi0iOmZhbHNlfSxQT1M6ZnVuY3Rpb24oWCxVLFYsWSl7dmFyIFQ9VVsyXSxXPUkuc2V0RmlsdGVyc1tUXTtpZihXKXtyZXR1cm4gVyhYLFYsVSxZKX19fX07dmFyIE09SS5tYXRjaC5QT1M7Zm9yKHZhciBPIGluIEkubWF0Y2gpe0kubWF0Y2hbT109UmVnRXhwKEkubWF0Y2hbT10uc291cmNlKy8oPyFbXlxbXSpcXSkoPyFbXlwoXSpcKSkvLnNvdXJjZSl9dmFyIEU9ZnVuY3Rpb24oVSxUKXtVPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKFUpO2lmKFQpe1QucHVzaC5hcHBseShULFUpO3JldHVybiBUfXJldHVybiBVfTt0cnl7QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNoaWxkTm9kZXMpfWNhdGNoKE4pe0U9ZnVuY3Rpb24oWCxXKXt2YXIgVT1XfHxbXTtpZihILmNhbGwoWCk9PT0iW29iamVjdCBBcnJheV0iKXtBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseShVLFgpfWVsc2V7aWYodHlwZW9mIFgubGVuZ3RoPT09Im51bWJlciIpe2Zvcih2YXIgVj0wLFQ9WC5sZW5ndGg7VjxUO1YrKyl7VS5wdXNoKFhbVl0pfX1lbHNle2Zvcih2YXIgVj0wO1hbVl07VisrKXtVLnB1c2goWFtWXSl9fX1yZXR1cm4gVX19dmFyIEc7aWYoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKXtHPWZ1bmN0aW9uKFUsVCl7dmFyIFY9VS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihUKSY0Py0xOlU9PT1UPzA6MTtpZihWPT09MCl7aGFzRHVwbGljYXRlPXRydWV9cmV0dXJuIFZ9fWVsc2V7aWYoInNvdXJjZUluZGV4IiBpbiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpe0c9ZnVuY3Rpb24oVSxUKXt2YXIgVj1VLnNvdXJjZUluZGV4LVQuc291cmNlSW5kZXg7aWYoVj09PTApe2hhc0R1cGxpY2F0ZT10cnVlfXJldHVybiBWfX1lbHNle2lmKGRvY3VtZW50LmNyZWF0ZVJhbmdlKXtHPWZ1bmN0aW9uKFcsVSl7dmFyIFY9Vy5vd25lckRvY3VtZW50LmNyZWF0ZVJhbmdlKCksVD1VLm93bmVyRG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTtWLnNlbGVjdE5vZGUoVyk7Vi5jb2xsYXBzZSh0cnVlKTtULnNlbGVjdE5vZGUoVSk7VC5jb2xsYXBzZSh0cnVlKTt2YXIgWD1WLmNvbXBhcmVCb3VuZGFyeVBvaW50cyhSYW5nZS5TVEFSVF9UT19FTkQsVCk7aWYoWD09PTApe2hhc0R1cGxpY2F0ZT10cnVlfXJldHVybiBYfX19fShmdW5jdGlvbigpe3ZhciBVPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImZvcm0iKSxWPSJzY3JpcHQiKyhuZXcgRGF0ZSkuZ2V0VGltZSgpO1UuaW5uZXJIVE1MPSI8aW5wdXQgbmFtZT0nIitWKyInLz4iO3ZhciBUPWRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtULmluc2VydEJlZm9yZShVLFQuZmlyc3RDaGlsZCk7aWYoISFkb2N1bWVudC5nZXRFbGVtZW50QnlJZChWKSl7SS5maW5kLklEPWZ1bmN0aW9uKFgsWSxaKXtpZih0eXBlb2YgWS5nZXRFbGVtZW50QnlJZCE9PSJ1bmRlZmluZWQiJiYhWil7dmFyIFc9WS5nZXRFbGVtZW50QnlJZChYWzFdKTtyZXR1cm4gVz9XLmlkPT09WFsxXXx8dHlwZW9mIFcuZ2V0QXR0cmlidXRlTm9kZSE9PSJ1bmRlZmluZWQiJiZXLmdldEF0dHJpYnV0ZU5vZGUoImlkIikubm9kZVZhbHVlPT09WFsxXT9bV106ZzpbXX19O0kuZmlsdGVyLklEPWZ1bmN0aW9uKFksVyl7dmFyIFg9dHlwZW9mIFkuZ2V0QXR0cmlidXRlTm9kZSE9PSJ1bmRlZmluZWQiJiZZLmdldEF0dHJpYnV0ZU5vZGUoImlkIik7cmV0dXJuIFkubm9kZVR5cGU9PT0xJiZYJiZYLm5vZGVWYWx1ZT09PVd9fVQucmVtb3ZlQ2hpbGQoVSl9KSgpOyhmdW5jdGlvbigpe3ZhciBUPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO1QuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlQ29tbWVudCgiIikpO2lmKFQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIioiKS5sZW5ndGg+MCl7SS5maW5kLlRBRz1mdW5jdGlvbihVLFkpe3ZhciBYPVkuZ2V0RWxlbWVudHNCeVRhZ05hbWUoVVsxXSk7aWYoVVsxXT09PSIqIil7dmFyIFc9W107Zm9yKHZhciBWPTA7WFtWXTtWKyspe2lmKFhbVl0ubm9kZVR5cGU9PT0xKXtXLnB1c2goWFtWXSl9fVg9V31yZXR1cm4gWH19VC5pbm5lckhUTUw9IjxhIGhyZWY9JyMnPjwvYT4iO2lmKFQuZmlyc3RDaGlsZCYmdHlwZW9mIFQuZmlyc3RDaGlsZC5nZXRBdHRyaWJ1dGUhPT0idW5kZWZpbmVkIiYmVC5maXJzdENoaWxkLmdldEF0dHJpYnV0ZSgiaHJlZiIpIT09IiMiKXtJLmF0dHJIYW5kbGUuaHJlZj1mdW5jdGlvbihVKXtyZXR1cm4gVS5nZXRBdHRyaWJ1dGUoImhyZWYiLDIpfX19KSgpO2lmKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwpeyhmdW5jdGlvbigpe3ZhciBUPUYsVT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtVLmlubmVySFRNTD0iPHAgY2xhc3M9J1RFU1QnPjwvcD4iO2lmKFUucXVlcnlTZWxlY3RvckFsbCYmVS5xdWVyeVNlbGVjdG9yQWxsKCIuVEVTVCIpLmxlbmd0aD09PTApe3JldHVybn1GPWZ1bmN0aW9uKFksWCxWLFcpe1g9WHx8ZG9jdW1lbnQ7aWYoIVcmJlgubm9kZVR5cGU9PT05JiYhUShYKSl7dHJ5e3JldHVybiBFKFgucXVlcnlTZWxlY3RvckFsbChZKSxWKX1jYXRjaChaKXt9fXJldHVybiBUKFksWCxWLFcpfTtGLmZpbmQ9VC5maW5kO0YuZmlsdGVyPVQuZmlsdGVyO0Yuc2VsZWN0b3JzPVQuc2VsZWN0b3JzO0YubWF0Y2hlcz1ULm1hdGNoZXN9KSgpfWlmKGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUmJmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKXsoZnVuY3Rpb24oKXt2YXIgVD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtULmlubmVySFRNTD0iPGRpdiBjbGFzcz0ndGVzdCBlJz48L2Rpdj48ZGl2IGNsYXNzPSd0ZXN0Jz48L2Rpdj4iO2lmKFQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgiZSIpLmxlbmd0aD09PTApe3JldHVybn1ULmxhc3RDaGlsZC5jbGFzc05hbWU9ImUiO2lmKFQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgiZSIpLmxlbmd0aD09PTEpe3JldHVybn1JLm9yZGVyLnNwbGljZSgxLDAsIkNMQVNTIik7SS5maW5kLkNMQVNTPWZ1bmN0aW9uKFUsVixXKXtpZih0eXBlb2YgVi5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lIT09InVuZGVmaW5lZCImJiFXKXtyZXR1cm4gVi5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFVbMV0pfX19KSgpfWZ1bmN0aW9uIFAoVSxaLFksYWQsYWEsYWMpe3ZhciBhYj1VPT0icHJldmlvdXNTaWJsaW5nIiYmIWFjO2Zvcih2YXIgVz0wLFY9YWQubGVuZ3RoO1c8VjtXKyspe3ZhciBUPWFkW1ddO2lmKFQpe2lmKGFiJiZULm5vZGVUeXBlPT09MSl7VC5zaXpjYWNoZT1ZO1Quc2l6c2V0PVd9VD1UW1VdO3ZhciBYPWZhbHNlO3doaWxlKFQpe2lmKFQuc2l6Y2FjaGU9PT1ZKXtYPWFkW1Quc2l6c2V0XTticmVha31pZihULm5vZGVUeXBlPT09MSYmIWFjKXtULnNpemNhY2hlPVk7VC5zaXpzZXQ9V31pZihULm5vZGVOYW1lPT09Wil7WD1UO2JyZWFrfVQ9VFtVXX1hZFtXXT1YfX19ZnVuY3Rpb24gUyhVLFosWSxhZCxhYSxhYyl7dmFyIGFiPVU9PSJwcmV2aW91c1NpYmxpbmciJiYhYWM7Zm9yKHZhciBXPTAsVj1hZC5sZW5ndGg7VzxWO1crKyl7dmFyIFQ9YWRbV107aWYoVCl7aWYoYWImJlQubm9kZVR5cGU9PT0xKXtULnNpemNhY2hlPVk7VC5zaXpzZXQ9V31UPVRbVV07dmFyIFg9ZmFsc2U7d2hpbGUoVCl7aWYoVC5zaXpjYWNoZT09PVkpe1g9YWRbVC5zaXpzZXRdO2JyZWFrfWlmKFQubm9kZVR5cGU9PT0xKXtpZighYWMpe1Quc2l6Y2FjaGU9WTtULnNpenNldD1XfWlmKHR5cGVvZiBaIT09InN0cmluZyIpe2lmKFQ9PT1aKXtYPXRydWU7YnJlYWt9fWVsc2V7aWYoRi5maWx0ZXIoWixbVF0pLmxlbmd0aD4wKXtYPVQ7YnJlYWt9fX1UPVRbVV19YWRbV109WH19fXZhciBLPWRvY3VtZW50LmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uP2Z1bmN0aW9uKFUsVCl7cmV0dXJuIFUuY29tcGFyZURvY3VtZW50UG9zaXRpb24oVCkmMTZ9OmZ1bmN0aW9uKFUsVCl7cmV0dXJuIFUhPT1UJiYoVS5jb250YWlucz9VLmNvbnRhaW5zKFQpOnRydWUpfTt2YXIgUT1mdW5jdGlvbihUKXtyZXR1cm4gVC5ub2RlVHlwZT09PTkmJlQuZG9jdW1lbnRFbGVtZW50Lm5vZGVOYW1lIT09IkhUTUwifHwhIVQub3duZXJEb2N1bWVudCYmUShULm93bmVyRG9jdW1lbnQpfTt2YXIgSj1mdW5jdGlvbihULGFhKXt2YXIgVz1bXSxYPSIiLFksVj1hYS5ub2RlVHlwZT9bYWFdOmFhO3doaWxlKChZPUkubWF0Y2guUFNFVURPLmV4ZWMoVCkpKXtYKz1ZWzBdO1Q9VC5yZXBsYWNlKEkubWF0Y2guUFNFVURPLCIiKX1UPUkucmVsYXRpdmVbVF0/VCsiKiI6VDtmb3IodmFyIFo9MCxVPVYubGVuZ3RoO1o8VTtaKyspe0YoVCxWW1pdLFcpfXJldHVybiBGLmZpbHRlcihYLFcpfTtvLmZpbmQ9RjtvLmZpbHRlcj1GLmZpbHRlcjtvLmV4cHI9Ri5zZWxlY3RvcnM7by5leHByWyI6Il09by5leHByLmZpbHRlcnM7Ri5zZWxlY3RvcnMuZmlsdGVycy5oaWRkZW49ZnVuY3Rpb24oVCl7cmV0dXJuIFQub2Zmc2V0V2lkdGg9PT0wfHxULm9mZnNldEhlaWdodD09PTB9O0Yuc2VsZWN0b3JzLmZpbHRlcnMudmlzaWJsZT1mdW5jdGlvbihUKXtyZXR1cm4gVC5vZmZzZXRXaWR0aD4wfHxULm9mZnNldEhlaWdodD4wfTtGLnNlbGVjdG9ycy5maWx0ZXJzLmFuaW1hdGVkPWZ1bmN0aW9uKFQpe3JldHVybiBvLmdyZXAoby50aW1lcnMsZnVuY3Rpb24oVSl7cmV0dXJuIFQ9PT1VLmVsZW19KS5sZW5ndGh9O28ubXVsdGlGaWx0ZXI9ZnVuY3Rpb24oVixULFUpe2lmKFUpe1Y9Ijpub3QoIitWKyIpIn1yZXR1cm4gRi5tYXRjaGVzKFYsVCl9O28uZGlyPWZ1bmN0aW9uKFYsVSl7dmFyIFQ9W10sVz1WW1VdO3doaWxlKFcmJlchPWRvY3VtZW50KXtpZihXLm5vZGVUeXBlPT0xKXtULnB1c2goVyl9Vz1XW1VdfXJldHVybiBUfTtvLm50aD1mdW5jdGlvbihYLFQsVixXKXtUPVR8fDE7dmFyIFU9MDtmb3IoO1g7WD1YW1ZdKXtpZihYLm5vZGVUeXBlPT0xJiYrK1U9PVQpe2JyZWFrfX1yZXR1cm4gWH07by5zaWJsaW5nPWZ1bmN0aW9uKFYsVSl7dmFyIFQ9W107Zm9yKDtWO1Y9Vi5uZXh0U2libGluZyl7aWYoVi5ub2RlVHlwZT09MSYmViE9VSl7VC5wdXNoKFYpfX1yZXR1cm4gVH07cmV0dXJuO2wuU2l6emxlPUZ9KSgpO28uZXZlbnQ9e2FkZDpmdW5jdGlvbihJLEYsSCxLKXtpZihJLm5vZGVUeXBlPT0zfHxJLm5vZGVUeXBlPT04KXtyZXR1cm59aWYoSS5zZXRJbnRlcnZhbCYmSSE9bCl7ST1sfWlmKCFILmd1aWQpe0guZ3VpZD10aGlzLmd1aWQrK31pZihLIT09Zyl7dmFyIEc9SDtIPXRoaXMucHJveHkoRyk7SC5kYXRhPUt9dmFyIEU9by5kYXRhKEksImV2ZW50cyIpfHxvLmRhdGEoSSwiZXZlbnRzIix7fSksSj1vLmRhdGEoSSwiaGFuZGxlIil8fG8uZGF0YShJLCJoYW5kbGUiLGZ1bmN0aW9uKCl7cmV0dXJuIHR5cGVvZiBvIT09InVuZGVmaW5lZCImJiFvLmV2ZW50LnRyaWdnZXJlZD9vLmV2ZW50LmhhbmRsZS5hcHBseShhcmd1bWVudHMuY2FsbGVlLmVsZW0sYXJndW1lbnRzKTpnfSk7Si5lbGVtPUk7by5lYWNoKEYuc3BsaXQoL1xzKy8pLGZ1bmN0aW9uKE0sTil7dmFyIE89Ti5zcGxpdCgiLiIpO049Ty5zaGlmdCgpO0gudHlwZT1PLnNsaWNlKCkuc29ydCgpLmpvaW4oIi4iKTt2YXIgTD1FW05dO2lmKG8uZXZlbnQuc3BlY2lhbEFsbFtOXSl7by5ldmVudC5zcGVjaWFsQWxsW05dLnNldHVwLmNhbGwoSSxLLE8pfWlmKCFMKXtMPUVbTl09e307aWYoIW8uZXZlbnQuc3BlY2lhbFtOXXx8by5ldmVudC5zcGVjaWFsW05dLnNldHVwLmNhbGwoSSxLLE8pPT09ZmFsc2Upe2lmKEkuYWRkRXZlbnRMaXN0ZW5lcil7SS5hZGRFdmVudExpc3RlbmVyKE4sSixmYWxzZSl9ZWxzZXtpZihJLmF0dGFjaEV2ZW50KXtJLmF0dGFjaEV2ZW50KCJvbiIrTixKKX19fX1MW0guZ3VpZF09SDtvLmV2ZW50Lmdsb2JhbFtOXT10cnVlfSk7ST1udWxsfSxndWlkOjEsZ2xvYmFsOnt9LHJlbW92ZTpmdW5jdGlvbihLLEgsSil7aWYoSy5ub2RlVHlwZT09M3x8Sy5ub2RlVHlwZT09OCl7cmV0dXJufXZhciBHPW8uZGF0YShLLCJldmVudHMiKSxGLEU7aWYoRyl7aWYoSD09PWd8fCh0eXBlb2YgSD09PSJzdHJpbmciJiZILmNoYXJBdCgwKT09Ii4iKSl7Zm9yKHZhciBJIGluIEcpe3RoaXMucmVtb3ZlKEssSSsoSHx8IiIpKX19ZWxzZXtpZihILnR5cGUpe0o9SC5oYW5kbGVyO0g9SC50eXBlfW8uZWFjaChILnNwbGl0KC9ccysvKSxmdW5jdGlvbihNLE8pe3ZhciBRPU8uc3BsaXQoIi4iKTtPPVEuc2hpZnQoKTt2YXIgTj1SZWdFeHAoIihefFxcLikiK1Euc2xpY2UoKS5zb3J0KCkuam9pbigiLipcXC4iKSsiKFxcLnwkKSIpO2lmKEdbT10pe2lmKEope2RlbGV0ZSBHW09dW0ouZ3VpZF19ZWxzZXtmb3IodmFyIFAgaW4gR1tPXSl7aWYoTi50ZXN0KEdbT11bUF0udHlwZSkpe2RlbGV0ZSBHW09dW1BdfX19aWYoby5ldmVudC5zcGVjaWFsQWxsW09dKXtvLmV2ZW50LnNwZWNpYWxBbGxbT10udGVhcmRvd24uY2FsbChLLFEpfWZvcihGIGluIEdbT10pe2JyZWFrfWlmKCFGKXtpZighby5ldmVudC5zcGVjaWFsW09dfHxvLmV2ZW50LnNwZWNpYWxbT10udGVhcmRvd24uY2FsbChLLFEpPT09ZmFsc2Upe2lmKEsucmVtb3ZlRXZlbnRMaXN0ZW5lcil7Sy5yZW1vdmVFdmVudExpc3RlbmVyKE8sby5kYXRhKEssImhhbmRsZSIpLGZhbHNlKX1lbHNle2lmKEsuZGV0YWNoRXZlbnQpe0suZGV0YWNoRXZlbnQoIm9uIitPLG8uZGF0YShLLCJoYW5kbGUiKSl9fX1GPW51bGw7ZGVsZXRlIEdbT119fX0pfWZvcihGIGluIEcpe2JyZWFrfWlmKCFGKXt2YXIgTD1vLmRhdGEoSywiaGFuZGxlIik7aWYoTCl7TC5lbGVtPW51bGx9by5yZW1vdmVEYXRhKEssImV2ZW50cyIpO28ucmVtb3ZlRGF0YShLLCJoYW5kbGUiKX19fSx0cmlnZ2VyOmZ1bmN0aW9uKEksSyxILEUpe3ZhciBHPUkudHlwZXx8STtpZighRSl7ST10eXBlb2YgST09PSJvYmplY3QiP0lbaF0/STpvLmV4dGVuZChvLkV2ZW50KEcpLEkpOm8uRXZlbnQoRyk7aWYoRy5pbmRleE9mKCIhIik+PTApe0kudHlwZT1HPUcuc2xpY2UoMCwtMSk7SS5leGNsdXNpdmU9dHJ1ZX1pZighSCl7SS5zdG9wUHJvcGFnYXRpb24oKTtpZih0aGlzLmdsb2JhbFtHXSl7by5lYWNoKG8uY2FjaGUsZnVuY3Rpb24oKXtpZih0aGlzLmV2ZW50cyYmdGhpcy5ldmVudHNbR10pe28uZXZlbnQudHJpZ2dlcihJLEssdGhpcy5oYW5kbGUuZWxlbSl9fSl9fWlmKCFIfHxILm5vZGVUeXBlPT0zfHxILm5vZGVUeXBlPT04KXtyZXR1cm4gZ31JLnJlc3VsdD1nO0kudGFyZ2V0PUg7Sz1vLm1ha2VBcnJheShLKTtLLnVuc2hpZnQoSSl9SS5jdXJyZW50VGFyZ2V0PUg7dmFyIEo9by5kYXRhKEgsImhhbmRsZSIpO2lmKEope0ouYXBwbHkoSCxLKX1pZigoIUhbR118fChvLm5vZGVOYW1lKEgsImEiKSYmRz09ImNsaWNrIikpJiZIWyJvbiIrR10mJkhbIm9uIitHXS5hcHBseShILEspPT09ZmFsc2Upe0kucmVzdWx0PWZhbHNlfWlmKCFFJiZIW0ddJiYhSS5pc0RlZmF1bHRQcmV2ZW50ZWQoKSYmIShvLm5vZGVOYW1lKEgsImEiKSYmRz09ImNsaWNrIikpe3RoaXMudHJpZ2dlcmVkPXRydWU7dHJ5e0hbR10oKX1jYXRjaChMKXt9fXRoaXMudHJpZ2dlcmVkPWZhbHNlO2lmKCFJLmlzUHJvcGFnYXRpb25TdG9wcGVkKCkpe3ZhciBGPUgucGFyZW50Tm9kZXx8SC5vd25lckRvY3VtZW50O2lmKEYpe28uZXZlbnQudHJpZ2dlcihJLEssRix0cnVlKX19fSxoYW5kbGU6ZnVuY3Rpb24oSyl7dmFyIEosRTtLPWFyZ3VtZW50c1swXT1vLmV2ZW50LmZpeChLfHxsLmV2ZW50KTtLLmN1cnJlbnRUYXJnZXQ9dGhpczt2YXIgTD1LLnR5cGUuc3BsaXQoIi4iKTtLLnR5cGU9TC5zaGlmdCgpO0o9IUwubGVuZ3RoJiYhSy5leGNsdXNpdmU7dmFyIEk9UmVnRXhwKCIoXnxcXC4pIitMLnNsaWNlKCkuc29ydCgpLmpvaW4oIi4qXFwuIikrIihcXC58JCkiKTtFPShvLmRhdGEodGhpcywiZXZlbnRzIil8fHt9KVtLLnR5cGVdO2Zvcih2YXIgRyBpbiBFKXt2YXIgSD1FW0ddO2lmKEp8fEkudGVzdChILnR5cGUpKXtLLmhhbmRsZXI9SDtLLmRhdGE9SC5kYXRhO3ZhciBGPUguYXBwbHkodGhpcyxhcmd1bWVudHMpO2lmKEYhPT1nKXtLLnJlc3VsdD1GO2lmKEY9PT1mYWxzZSl7Sy5wcmV2ZW50RGVmYXVsdCgpO0suc3RvcFByb3BhZ2F0aW9uKCl9fWlmKEsuaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQoKSl7YnJlYWt9fX19LHByb3BzOiJhbHRLZXkgYXR0ckNoYW5nZSBhdHRyTmFtZSBidWJibGVzIGJ1dHRvbiBjYW5jZWxhYmxlIGNoYXJDb2RlIGNsaWVudFggY2xpZW50WSBjdHJsS2V5IGN1cnJlbnRUYXJnZXQgZGF0YSBkZXRhaWwgZXZlbnRQaGFzZSBmcm9tRWxlbWVudCBoYW5kbGVyIGtleUNvZGUgbWV0YUtleSBuZXdWYWx1ZSBvcmlnaW5hbFRhcmdldCBwYWdlWCBwYWdlWSBwcmV2VmFsdWUgcmVsYXRlZE5vZGUgcmVsYXRlZFRhcmdldCBzY3JlZW5YIHNjcmVlblkgc2hpZnRLZXkgc3JjRWxlbWVudCB0YXJnZXQgdG9FbGVtZW50IHZpZXcgd2hlZWxEZWx0YSB3aGljaCIuc3BsaXQoIiAiKSxmaXg6ZnVuY3Rpb24oSCl7aWYoSFtoXSl7cmV0dXJuIEh9dmFyIEY9SDtIPW8uRXZlbnQoRik7Zm9yKHZhciBHPXRoaXMucHJvcHMubGVuZ3RoLEo7Rzspe0o9dGhpcy5wcm9wc1stLUddO0hbSl09RltKXX1pZighSC50YXJnZXQpe0gudGFyZ2V0PUguc3JjRWxlbWVudHx8ZG9jdW1lbnR9aWYoSC50YXJnZXQubm9kZVR5cGU9PTMpe0gudGFyZ2V0PUgudGFyZ2V0LnBhcmVudE5vZGV9aWYoIUgucmVsYXRlZFRhcmdldCYmSC5mcm9tRWxlbWVudCl7SC5yZWxhdGVkVGFyZ2V0PUguZnJvbUVsZW1lbnQ9PUgudGFyZ2V0P0gudG9FbGVtZW50OkguZnJvbUVsZW1lbnR9aWYoSC5wYWdlWD09bnVsbCYmSC5jbGllbnRYIT1udWxsKXt2YXIgST1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsRT1kb2N1bWVudC5ib2R5O0gucGFnZVg9SC5jbGllbnRYKyhJJiZJLnNjcm9sbExlZnR8fEUmJkUuc2Nyb2xsTGVmdHx8MCktKEkuY2xpZW50TGVmdHx8MCk7SC5wYWdlWT1ILmNsaWVudFkrKEkmJkkuc2Nyb2xsVG9wfHxFJiZFLnNjcm9sbFRvcHx8MCktKEkuY2xpZW50VG9wfHwwKX1pZighSC53aGljaCYmKChILmNoYXJDb2RlfHxILmNoYXJDb2RlPT09MCk/SC5jaGFyQ29kZTpILmtleUNvZGUpKXtILndoaWNoPUguY2hhckNvZGV8fEgua2V5Q29kZX1pZighSC5tZXRhS2V5JiZILmN0cmxLZXkpe0gubWV0YUtleT1ILmN0cmxLZXl9aWYoIUgud2hpY2gmJkguYnV0dG9uKXtILndoaWNoPShILmJ1dHRvbiYxPzE6KEguYnV0dG9uJjI/MzooSC5idXR0b24mND8yOjApKSl9cmV0dXJuIEh9LHByb3h5OmZ1bmN0aW9uKEYsRSl7RT1FfHxmdW5jdGlvbigpe3JldHVybiBGLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07RS5ndWlkPUYuZ3VpZD1GLmd1aWR8fEUuZ3VpZHx8dGhpcy5ndWlkKys7cmV0dXJuIEV9LHNwZWNpYWw6e3JlYWR5OntzZXR1cDpCLHRlYXJkb3duOmZ1bmN0aW9uKCl7fX19LHNwZWNpYWxBbGw6e2xpdmU6e3NldHVwOmZ1bmN0aW9uKEUsRil7by5ldmVudC5hZGQodGhpcyxGWzBdLGMpfSx0ZWFyZG93bjpmdW5jdGlvbihHKXtpZihHLmxlbmd0aCl7dmFyIEU9MCxGPVJlZ0V4cCgiKF58XFwuKSIrR1swXSsiKFxcLnwkKSIpO28uZWFjaCgoby5kYXRhKHRoaXMsImV2ZW50cyIpLmxpdmV8fHt9KSxmdW5jdGlvbigpe2lmKEYudGVzdCh0aGlzLnR5cGUpKXtFKyt9fSk7aWYoRTwxKXtvLmV2ZW50LnJlbW92ZSh0aGlzLEdbMF0sYyl9fX19fX07by5FdmVudD1mdW5jdGlvbihFKXtpZighdGhpcy5wcmV2ZW50RGVmYXVsdCl7cmV0dXJuIG5ldyBvLkV2ZW50KEUpfWlmKEUmJkUudHlwZSl7dGhpcy5vcmlnaW5hbEV2ZW50PUU7dGhpcy50eXBlPUUudHlwZX1lbHNle3RoaXMudHlwZT1FfXRoaXMudGltZVN0YW1wPWUoKTt0aGlzW2hdPXRydWV9O2Z1bmN0aW9uIGsoKXtyZXR1cm4gZmFsc2V9ZnVuY3Rpb24gdSgpe3JldHVybiB0cnVlfW8uRXZlbnQucHJvdG90eXBlPXtwcmV2ZW50RGVmYXVsdDpmdW5jdGlvbigpe3RoaXMuaXNEZWZhdWx0UHJldmVudGVkPXU7dmFyIEU9dGhpcy5vcmlnaW5hbEV2ZW50O2lmKCFFKXtyZXR1cm59aWYoRS5wcmV2ZW50RGVmYXVsdCl7RS5wcmV2ZW50RGVmYXVsdCgpfUUucmV0dXJuVmFsdWU9ZmFsc2V9LHN0b3BQcm9wYWdhdGlvbjpmdW5jdGlvbigpe3RoaXMuaXNQcm9wYWdhdGlvblN0b3BwZWQ9dTt2YXIgRT10aGlzLm9yaWdpbmFsRXZlbnQ7aWYoIUUpe3JldHVybn1pZihFLnN0b3BQcm9wYWdhdGlvbil7RS5zdG9wUHJvcGFnYXRpb24oKX1FLmNhbmNlbEJ1YmJsZT10cnVlfSxzdG9wSW1tZWRpYXRlUHJvcGFnYXRpb246ZnVuY3Rpb24oKXt0aGlzLmlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkPXU7dGhpcy5zdG9wUHJvcGFnYXRpb24oKX0saXNEZWZhdWx0UHJldmVudGVkOmssaXNQcm9wYWdhdGlvblN0b3BwZWQ6ayxpc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZDprfTt2YXIgYT1mdW5jdGlvbihGKXt2YXIgRT1GLnJlbGF0ZWRUYXJnZXQ7d2hpbGUoRSYmRSE9dGhpcyl7dHJ5e0U9RS5wYXJlbnROb2RlfWNhdGNoKEcpe0U9dGhpc319aWYoRSE9dGhpcyl7Ri50eXBlPUYuZGF0YTtvLmV2ZW50LmhhbmRsZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fTtvLmVhY2goe21vdXNlb3ZlcjoibW91c2VlbnRlciIsbW91c2VvdXQ6Im1vdXNlbGVhdmUifSxmdW5jdGlvbihGLEUpe28uZXZlbnQuc3BlY2lhbFtFXT17c2V0dXA6ZnVuY3Rpb24oKXtvLmV2ZW50LmFkZCh0aGlzLEYsYSxFKX0sdGVhcmRvd246ZnVuY3Rpb24oKXtvLmV2ZW50LnJlbW92ZSh0aGlzLEYsYSl9fX0pO28uZm4uZXh0ZW5kKHtiaW5kOmZ1bmN0aW9uKEYsRyxFKXtyZXR1cm4gRj09InVubG9hZCI/dGhpcy5vbmUoRixHLEUpOnRoaXMuZWFjaChmdW5jdGlvbigpe28uZXZlbnQuYWRkKHRoaXMsRixFfHxHLEUmJkcpfSl9LG9uZTpmdW5jdGlvbihHLEgsRil7dmFyIEU9by5ldmVudC5wcm94eShGfHxILGZ1bmN0aW9uKEkpe28odGhpcykudW5iaW5kKEksRSk7cmV0dXJuKEZ8fEgpLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0pO3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtvLmV2ZW50LmFkZCh0aGlzLEcsRSxGJiZIKX0pfSx1bmJpbmQ6ZnVuY3Rpb24oRixFKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7by5ldmVudC5yZW1vdmUodGhpcyxGLEUpfSl9LHRyaWdnZXI6ZnVuY3Rpb24oRSxGKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7by5ldmVudC50cmlnZ2VyKEUsRix0aGlzKX0pfSx0cmlnZ2VySGFuZGxlcjpmdW5jdGlvbihFLEcpe2lmKHRoaXNbMF0pe3ZhciBGPW8uRXZlbnQoRSk7Ri5wcmV2ZW50RGVmYXVsdCgpO0Yuc3RvcFByb3BhZ2F0aW9uKCk7by5ldmVudC50cmlnZ2VyKEYsRyx0aGlzWzBdKTtyZXR1cm4gRi5yZXN1bHR9fSx0b2dnbGU6ZnVuY3Rpb24oRyl7dmFyIEU9YXJndW1lbnRzLEY9MTt3aGlsZShGPEUubGVuZ3RoKXtvLmV2ZW50LnByb3h5KEcsRVtGKytdKX1yZXR1cm4gdGhpcy5jbGljayhvLmV2ZW50LnByb3h5KEcsZnVuY3Rpb24oSCl7dGhpcy5sYXN0VG9nZ2xlPSh0aGlzLmxhc3RUb2dnbGV8fDApJUY7SC5wcmV2ZW50RGVmYXVsdCgpO3JldHVybiBFW3RoaXMubGFzdFRvZ2dsZSsrXS5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fGZhbHNlfSkpfSxob3ZlcjpmdW5jdGlvbihFLEYpe3JldHVybiB0aGlzLm1vdXNlZW50ZXIoRSkubW91c2VsZWF2ZShGKX0scmVhZHk6ZnVuY3Rpb24oRSl7QigpO2lmKG8uaXNSZWFkeSl7RS5jYWxsKGRvY3VtZW50LG8pfWVsc2V7by5yZWFkeUxpc3QucHVzaChFKX1yZXR1cm4gdGhpc30sbGl2ZTpmdW5jdGlvbihHLEYpe3ZhciBFPW8uZXZlbnQucHJveHkoRik7RS5ndWlkKz10aGlzLnNlbGVjdG9yK0c7byhkb2N1bWVudCkuYmluZChpKEcsdGhpcy5zZWxlY3RvciksdGhpcy5zZWxlY3RvcixFKTtyZXR1cm4gdGhpc30sZGllOmZ1bmN0aW9uKEYsRSl7byhkb2N1bWVudCkudW5iaW5kKGkoRix0aGlzLnNlbGVjdG9yKSxFP3tndWlkOkUuZ3VpZCt0aGlzLnNlbGVjdG9yK0Z9Om51bGwpO3JldHVybiB0aGlzfX0pO2Z1bmN0aW9uIGMoSCl7dmFyIEU9UmVnRXhwKCIoXnxcXC4pIitILnR5cGUrIihcXC58JCkiKSxHPXRydWUsRj1bXTtvLmVhY2goby5kYXRhKHRoaXMsImV2ZW50cyIpLmxpdmV8fFtdLGZ1bmN0aW9uKEksSil7aWYoRS50ZXN0KEoudHlwZSkpe3ZhciBLPW8oSC50YXJnZXQpLmNsb3Nlc3QoSi5kYXRhKVswXTtpZihLKXtGLnB1c2goe2VsZW06SyxmbjpKfSl9fX0pO0Yuc29ydChmdW5jdGlvbihKLEkpe3JldHVybiBvLmRhdGEoSi5lbGVtLCJjbG9zZXN0Iiktby5kYXRhKEkuZWxlbSwiY2xvc2VzdCIpfSk7by5lYWNoKEYsZnVuY3Rpb24oKXtpZih0aGlzLmZuLmNhbGwodGhpcy5lbGVtLEgsdGhpcy5mbi5kYXRhKT09PWZhbHNlKXtyZXR1cm4oRz1mYWxzZSl9fSk7cmV0dXJuIEd9ZnVuY3Rpb24gaShGLEUpe3JldHVyblsibGl2ZSIsRixFLnJlcGxhY2UoL1wuL2csImAiKS5yZXBsYWNlKC8gL2csInwiKV0uam9pbigiLiIpfW8uZXh0ZW5kKHtpc1JlYWR5OmZhbHNlLHJlYWR5TGlzdDpbXSxyZWFkeTpmdW5jdGlvbigpe2lmKCFvLmlzUmVhZHkpe28uaXNSZWFkeT10cnVlO2lmKG8ucmVhZHlMaXN0KXtvLmVhY2goby5yZWFkeUxpc3QsZnVuY3Rpb24oKXt0aGlzLmNhbGwoZG9jdW1lbnQsbyl9KTtvLnJlYWR5TGlzdD1udWxsfW8oZG9jdW1lbnQpLnRyaWdnZXJIYW5kbGVyKCJyZWFkeSIpfX19KTt2YXIgeD1mYWxzZTtmdW5jdGlvbiBCKCl7aWYoeCl7cmV0dXJufXg9dHJ1ZTtpZihkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKXtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIixmdW5jdGlvbigpe2RvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLGFyZ3VtZW50cy5jYWxsZWUsZmFsc2UpO28ucmVhZHkoKX0sZmFsc2UpfWVsc2V7aWYoZG9jdW1lbnQuYXR0YWNoRXZlbnQpe2RvY3VtZW50LmF0dGFjaEV2ZW50KCJvbnJlYWR5c3RhdGVjaGFuZ2UiLGZ1bmN0aW9uKCl7aWYoZG9jdW1lbnQucmVhZHlTdGF0ZT09PSJjb21wbGV0ZSIpe2RvY3VtZW50LmRldGFjaEV2ZW50KCJvbnJlYWR5c3RhdGVjaGFuZ2UiLGFyZ3VtZW50cy5jYWxsZWUpO28ucmVhZHkoKX19KTtpZihkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuZG9TY3JvbGwmJmw9PWwudG9wKXsoZnVuY3Rpb24oKXtpZihvLmlzUmVhZHkpe3JldHVybn10cnl7ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmRvU2Nyb2xsKCJsZWZ0Iil9Y2F0Y2goRSl7c2V0VGltZW91dChhcmd1bWVudHMuY2FsbGVlLDApO3JldHVybn1vLnJlYWR5KCl9KSgpfX19by5ldmVudC5hZGQobCwibG9hZCIsby5yZWFkeSl9by5lYWNoKCgiYmx1cixmb2N1cyxsb2FkLHJlc2l6ZSxzY3JvbGwsdW5sb2FkLGNsaWNrLGRibGNsaWNrLG1vdXNlZG93bixtb3VzZXVwLG1vdXNlbW92ZSxtb3VzZW92ZXIsbW91c2VvdXQsbW91c2VlbnRlcixtb3VzZWxlYXZlLGNoYW5nZSxzZWxlY3Qsc3VibWl0LGtleWRvd24sa2V5cHJlc3Msa2V5dXAsZXJyb3IiKS5zcGxpdCgiLCIpLGZ1bmN0aW9uKEYsRSl7by5mbltFXT1mdW5jdGlvbihHKXtyZXR1cm4gRz90aGlzLmJpbmQoRSxHKTp0aGlzLnRyaWdnZXIoRSl9fSk7byhsKS5iaW5kKCJ1bmxvYWQiLGZ1bmN0aW9uKCl7Zm9yKHZhciBFIGluIG8uY2FjaGUpe2lmKEUhPTEmJm8uY2FjaGVbRV0uaGFuZGxlKXtvLmV2ZW50LnJlbW92ZShvLmNhY2hlW0VdLmhhbmRsZS5lbGVtKX19fSk7KGZ1bmN0aW9uKCl7by5zdXBwb3J0PXt9O3ZhciBGPWRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxHPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpLEs9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksSj0ic2NyaXB0IisobmV3IERhdGUpLmdldFRpbWUoKTtLLnN0eWxlLmRpc3BsYXk9Im5vbmUiO0suaW5uZXJIVE1MPScgICA8bGluay8+PHRhYmxlPjwvdGFibGU+PGEgaHJlZj0iL2EiIHN0eWxlPSJjb2xvcjpyZWQ7ZmxvYXQ6bGVmdDtvcGFjaXR5Oi41OyI+YTwvYT48c2VsZWN0PjxvcHRpb24+dGV4dDwvb3B0aW9uPjwvc2VsZWN0PjxvYmplY3Q+PHBhcmFtLz48L29iamVjdD4nO3ZhciBIPUsuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIioiKSxFPUsuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImEiKVswXTtpZighSHx8IUgubGVuZ3RofHwhRSl7cmV0dXJufW8uc3VwcG9ydD17bGVhZGluZ1doaXRlc3BhY2U6Sy5maXJzdENoaWxkLm5vZGVUeXBlPT0zLHRib2R5OiFLLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0Ym9keSIpLmxlbmd0aCxvYmplY3RBbGw6ISFLLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJvYmplY3QiKVswXS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpLmxlbmd0aCxodG1sU2VyaWFsaXplOiEhSy5nZXRFbGVtZW50c0J5VGFnTmFtZSgibGluayIpLmxlbmd0aCxzdHlsZTovcmVkLy50ZXN0KEUuZ2V0QXR0cmlidXRlKCJzdHlsZSIpKSxocmVmTm9ybWFsaXplZDpFLmdldEF0dHJpYnV0ZSgiaHJlZiIpPT09Ii9hIixvcGFjaXR5OkUuc3R5bGUub3BhY2l0eT09PSIwLjUiLGNzc0Zsb2F0OiEhRS5zdHlsZS5jc3NGbG9hdCxzY3JpcHRFdmFsOmZhbHNlLG5vQ2xvbmVFdmVudDp0cnVlLGJveE1vZGVsOm51bGx9O0cudHlwZT0idGV4dC9qYXZhc2NyaXB0Ijt0cnl7Ry5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgid2luZG93LiIrSisiPTE7IikpfWNhdGNoKEkpe31GLmluc2VydEJlZm9yZShHLEYuZmlyc3RDaGlsZCk7aWYobFtKXSl7by5zdXBwb3J0LnNjcmlwdEV2YWw9dHJ1ZTtkZWxldGUgbFtKXX1GLnJlbW92ZUNoaWxkKEcpO2lmKEsuYXR0YWNoRXZlbnQmJksuZmlyZUV2ZW50KXtLLmF0dGFjaEV2ZW50KCJvbmNsaWNrIixmdW5jdGlvbigpe28uc3VwcG9ydC5ub0Nsb25lRXZlbnQ9ZmFsc2U7Sy5kZXRhY2hFdmVudCgib25jbGljayIsYXJndW1lbnRzLmNhbGxlZSl9KTtLLmNsb25lTm9kZSh0cnVlKS5maXJlRXZlbnQoIm9uY2xpY2siKX1vKGZ1bmN0aW9uKCl7dmFyIEw9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7TC5zdHlsZS53aWR0aD1MLnN0eWxlLnBhZGRpbmdMZWZ0PSIxcHgiO2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoTCk7by5ib3hNb2RlbD1vLnN1cHBvcnQuYm94TW9kZWw9TC5vZmZzZXRXaWR0aD09PTI7ZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChMKS5zdHlsZS5kaXNwbGF5PSJub25lIn0pfSkoKTt2YXIgdz1vLnN1cHBvcnQuY3NzRmxvYXQ/ImNzc0Zsb2F0Ijoic3R5bGVGbG9hdCI7by5wcm9wcz17ImZvciI6Imh0bWxGb3IiLCJjbGFzcyI6ImNsYXNzTmFtZSIsImZsb2F0Ijp3LGNzc0Zsb2F0Oncsc3R5bGVGbG9hdDp3LHJlYWRvbmx5OiJyZWFkT25seSIsbWF4bGVuZ3RoOiJtYXhMZW5ndGgiLGNlbGxzcGFjaW5nOiJjZWxsU3BhY2luZyIscm93c3Bhbjoicm93U3BhbiIsdGFiaW5kZXg6InRhYkluZGV4In07by5mbi5leHRlbmQoe19sb2FkOm8uZm4ubG9hZCxsb2FkOmZ1bmN0aW9uKEcsSixLKXtpZih0eXBlb2YgRyE9PSJzdHJpbmciKXtyZXR1cm4gdGhpcy5fbG9hZChHKX12YXIgST1HLmluZGV4T2YoIiAiKTtpZihJPj0wKXt2YXIgRT1HLnNsaWNlKEksRy5sZW5ndGgpO0c9Ry5zbGljZSgwLEkpfXZhciBIPSJHRVQiO2lmKEope2lmKG8uaXNGdW5jdGlvbihKKSl7Sz1KO0o9bnVsbH1lbHNle2lmKHR5cGVvZiBKPT09Im9iamVjdCIpe0o9by5wYXJhbShKKTtIPSJQT1NUIn19fXZhciBGPXRoaXM7by5hamF4KHt1cmw6Ryx0eXBlOkgsZGF0YVR5cGU6Imh0bWwiLGRhdGE6Sixjb21wbGV0ZTpmdW5jdGlvbihNLEwpe2lmKEw9PSJzdWNjZXNzInx8TD09Im5vdG1vZGlmaWVkIil7Ri5odG1sKEU/bygiPGRpdi8+IikuYXBwZW5kKE0ucmVzcG9uc2VUZXh0LnJlcGxhY2UoLzxzY3JpcHQoLnxccykqP1wvc2NyaXB0Pi9nLCIiKSkuZmluZChFKTpNLnJlc3BvbnNlVGV4dCl9aWYoSyl7Ri5lYWNoKEssW00ucmVzcG9uc2VUZXh0LEwsTV0pfX19KTtyZXR1cm4gdGhpc30sc2VyaWFsaXplOmZ1bmN0aW9uKCl7cmV0dXJuIG8ucGFyYW0odGhpcy5zZXJpYWxpemVBcnJheSgpKX0sc2VyaWFsaXplQXJyYXk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lbGVtZW50cz9vLm1ha2VBcnJheSh0aGlzLmVsZW1lbnRzKTp0aGlzfSkuZmlsdGVyKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubmFtZSYmIXRoaXMuZGlzYWJsZWQmJih0aGlzLmNoZWNrZWR8fC9zZWxlY3R8dGV4dGFyZWEvaS50ZXN0KHRoaXMubm9kZU5hbWUpfHwvdGV4dHxoaWRkZW58cGFzc3dvcmR8c2VhcmNoL2kudGVzdCh0aGlzLnR5cGUpKX0pLm1hcChmdW5jdGlvbihFLEYpe3ZhciBHPW8odGhpcykudmFsKCk7cmV0dXJuIEc9PW51bGw/bnVsbDpvLmlzQXJyYXkoRyk/by5tYXAoRyxmdW5jdGlvbihJLEgpe3JldHVybntuYW1lOkYubmFtZSx2YWx1ZTpJfX0pOntuYW1lOkYubmFtZSx2YWx1ZTpHfX0pLmdldCgpfX0pO28uZWFjaCgiYWpheFN0YXJ0LGFqYXhTdG9wLGFqYXhDb21wbGV0ZSxhamF4RXJyb3IsYWpheFN1Y2Nlc3MsYWpheFNlbmQiLnNwbGl0KCIsIiksZnVuY3Rpb24oRSxGKXtvLmZuW0ZdPWZ1bmN0aW9uKEcpe3JldHVybiB0aGlzLmJpbmQoRixHKX19KTt2YXIgcj1lKCk7by5leHRlbmQoe2dldDpmdW5jdGlvbihFLEcsSCxGKXtpZihvLmlzRnVuY3Rpb24oRykpe0g9RztHPW51bGx9cmV0dXJuIG8uYWpheCh7dHlwZToiR0VUIix1cmw6RSxkYXRhOkcsc3VjY2VzczpILGRhdGFUeXBlOkZ9KX0sZ2V0U2NyaXB0OmZ1bmN0aW9uKEUsRil7cmV0dXJuIG8uZ2V0KEUsbnVsbCxGLCJzY3JpcHQiKX0sZ2V0SlNPTjpmdW5jdGlvbihFLEYsRyl7cmV0dXJuIG8uZ2V0KEUsRixHLCJqc29uIil9LHBvc3Q6ZnVuY3Rpb24oRSxHLEgsRil7aWYoby5pc0Z1bmN0aW9uKEcpKXtIPUc7Rz17fX1yZXR1cm4gby5hamF4KHt0eXBlOiJQT1NUIix1cmw6RSxkYXRhOkcsc3VjY2VzczpILGRhdGFUeXBlOkZ9KX0sYWpheFNldHVwOmZ1bmN0aW9uKEUpe28uZXh0ZW5kKG8uYWpheFNldHRpbmdzLEUpfSxhamF4U2V0dGluZ3M6e3VybDpsb2NhdGlvbi5ocmVmLGdsb2JhbDp0cnVlLHR5cGU6IkdFVCIsY29udGVudFR5cGU6ImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIscHJvY2Vzc0RhdGE6dHJ1ZSxhc3luYzp0cnVlLHhocjpmdW5jdGlvbigpe3JldHVybiBsLkFjdGl2ZVhPYmplY3Q/bmV3IEFjdGl2ZVhPYmplY3QoIk1pY3Jvc29mdC5YTUxIVFRQIik6bmV3IFhNTEh0dHBSZXF1ZXN0KCl9LGFjY2VwdHM6e3htbDoiYXBwbGljYXRpb24veG1sLCB0ZXh0L3htbCIsaHRtbDoidGV4dC9odG1sIixzY3JpcHQ6InRleHQvamF2YXNjcmlwdCwgYXBwbGljYXRpb24vamF2YXNjcmlwdCIsanNvbjoiYXBwbGljYXRpb24vanNvbiwgdGV4dC9qYXZhc2NyaXB0Iix0ZXh0OiJ0ZXh0L3BsYWluIixfZGVmYXVsdDoiKi8qIn19LGxhc3RNb2RpZmllZDp7fSxhamF4OmZ1bmN0aW9uKE0pe009by5leHRlbmQodHJ1ZSxNLG8uZXh0ZW5kKHRydWUse30sby5hamF4U2V0dGluZ3MsTSkpO3ZhciBXLEY9Lz1cPygmfCQpL2csUixWLEc9TS50eXBlLnRvVXBwZXJDYXNlKCk7aWYoTS5kYXRhJiZNLnByb2Nlc3NEYXRhJiZ0eXBlb2YgTS5kYXRhIT09InN0cmluZyIpe00uZGF0YT1vLnBhcmFtKE0uZGF0YSl9aWYoTS5kYXRhVHlwZT09Impzb25wIil7aWYoRz09IkdFVCIpe2lmKCFNLnVybC5tYXRjaChGKSl7TS51cmwrPShNLnVybC5tYXRjaCgvXD8vKT8iJiI6Ij8iKSsoTS5qc29ucHx8ImNhbGxiYWNrIikrIj0/In19ZWxzZXtpZighTS5kYXRhfHwhTS5kYXRhLm1hdGNoKEYpKXtNLmRhdGE9KE0uZGF0YT9NLmRhdGErIiYiOiIiKSsoTS5qc29ucHx8ImNhbGxiYWNrIikrIj0/In19TS5kYXRhVHlwZT0ianNvbiJ9aWYoTS5kYXRhVHlwZT09Impzb24iJiYoTS5kYXRhJiZNLmRhdGEubWF0Y2goRil8fE0udXJsLm1hdGNoKEYpKSl7Vz0ianNvbnAiK3IrKztpZihNLmRhdGEpe00uZGF0YT0oTS5kYXRhKyIiKS5yZXBsYWNlKEYsIj0iK1crIiQxIil9TS51cmw9TS51cmwucmVwbGFjZShGLCI9IitXKyIkMSIpO00uZGF0YVR5cGU9InNjcmlwdCI7bFtXXT1mdW5jdGlvbihYKXtWPVg7SSgpO0woKTtsW1ddPWc7dHJ5e2RlbGV0ZSBsW1ddfWNhdGNoKFkpe31pZihIKXtILnJlbW92ZUNoaWxkKFQpfX19aWYoTS5kYXRhVHlwZT09InNjcmlwdCImJk0uY2FjaGU9PW51bGwpe00uY2FjaGU9ZmFsc2V9aWYoTS5jYWNoZT09PWZhbHNlJiZHPT0iR0VUIil7dmFyIEU9ZSgpO3ZhciBVPU0udXJsLnJlcGxhY2UoLyhcP3wmKV89Lio/KCZ8JCkvLCIkMV89IitFKyIkMiIpO00udXJsPVUrKChVPT1NLnVybCk/KE0udXJsLm1hdGNoKC9cPy8pPyImIjoiPyIpKyJfPSIrRToiIil9aWYoTS5kYXRhJiZHPT0iR0VUIil7TS51cmwrPShNLnVybC5tYXRjaCgvXD8vKT8iJiI6Ij8iKStNLmRhdGE7TS5kYXRhPW51bGx9aWYoTS5nbG9iYWwmJiFvLmFjdGl2ZSsrKXtvLmV2ZW50LnRyaWdnZXIoImFqYXhTdGFydCIpfXZhciBRPS9eKFx3KzopP1wvXC8oW15cLz8jXSspLy5leGVjKE0udXJsKTtpZihNLmRhdGFUeXBlPT0ic2NyaXB0IiYmRz09IkdFVCImJlEmJihRWzFdJiZRWzFdIT1sb2NhdGlvbi5wcm90b2NvbHx8UVsyXSE9bG9jYXRpb24uaG9zdCkpe3ZhciBIPWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF07dmFyIFQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7VC5zcmM9TS51cmw7aWYoTS5zY3JpcHRDaGFyc2V0KXtULmNoYXJzZXQ9TS5zY3JpcHRDaGFyc2V0fWlmKCFXKXt2YXIgTz1mYWxzZTtULm9ubG9hZD1ULm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbigpe2lmKCFPJiYoIXRoaXMucmVhZHlTdGF0ZXx8dGhpcy5yZWFkeVN0YXRlPT0ibG9hZGVkInx8dGhpcy5yZWFkeVN0YXRlPT0iY29tcGxldGUiKSl7Tz10cnVlO0koKTtMKCk7VC5vbmxvYWQ9VC5vbnJlYWR5c3RhdGVjaGFuZ2U9bnVsbDtILnJlbW92ZUNoaWxkKFQpfX19SC5hcHBlbmRDaGlsZChUKTtyZXR1cm4gZ312YXIgSz1mYWxzZTt2YXIgSj1NLnhocigpO2lmKE0udXNlcm5hbWUpe0oub3BlbihHLE0udXJsLE0uYXN5bmMsTS51c2VybmFtZSxNLnBhc3N3b3JkKX1lbHNle0oub3BlbihHLE0udXJsLE0uYXN5bmMpfXRyeXtpZihNLmRhdGEpe0ouc2V0UmVxdWVzdEhlYWRlcigiQ29udGVudC1UeXBlIixNLmNvbnRlbnRUeXBlKX1pZihNLmlmTW9kaWZpZWQpe0ouc2V0UmVxdWVzdEhlYWRlcigiSWYtTW9kaWZpZWQtU2luY2UiLG8ubGFzdE1vZGlmaWVkW00udXJsXXx8IlRodSwgMDEgSmFuIDE5NzAgMDA6MDA6MDAgR01UIil9Si5zZXRSZXF1ZXN0SGVhZGVyKCJYLVJlcXVlc3RlZC1XaXRoIiwiWE1MSHR0cFJlcXVlc3QiKTtKLnNldFJlcXVlc3RIZWFkZXIoIkFjY2VwdCIsTS5kYXRhVHlwZSYmTS5hY2NlcHRzW00uZGF0YVR5cGVdP00uYWNjZXB0c1tNLmRhdGFUeXBlXSsiLCAqLyoiOk0uYWNjZXB0cy5fZGVmYXVsdCl9Y2F0Y2goUyl7fWlmKE0uYmVmb3JlU2VuZCYmTS5iZWZvcmVTZW5kKEosTSk9PT1mYWxzZSl7aWYoTS5nbG9iYWwmJiEtLW8uYWN0aXZlKXtvLmV2ZW50LnRyaWdnZXIoImFqYXhTdG9wIil9Si5hYm9ydCgpO3JldHVybiBmYWxzZX1pZihNLmdsb2JhbCl7by5ldmVudC50cmlnZ2VyKCJhamF4U2VuZCIsW0osTV0pfXZhciBOPWZ1bmN0aW9uKFgpe2lmKEoucmVhZHlTdGF0ZT09MCl7aWYoUCl7Y2xlYXJJbnRlcnZhbChQKTtQPW51bGw7aWYoTS5nbG9iYWwmJiEtLW8uYWN0aXZlKXtvLmV2ZW50LnRyaWdnZXIoImFqYXhTdG9wIil9fX1lbHNle2lmKCFLJiZKJiYoSi5yZWFkeVN0YXRlPT00fHxYPT0idGltZW91dCIpKXtLPXRydWU7aWYoUCl7Y2xlYXJJbnRlcnZhbChQKTtQPW51bGx9Uj1YPT0idGltZW91dCI/InRpbWVvdXQiOiFvLmh0dHBTdWNjZXNzKEopPyJlcnJvciI6TS5pZk1vZGlmaWVkJiZvLmh0dHBOb3RNb2RpZmllZChKLE0udXJsKT8ibm90bW9kaWZpZWQiOiJzdWNjZXNzIjtpZihSPT0ic3VjY2VzcyIpe3RyeXtWPW8uaHR0cERhdGEoSixNLmRhdGFUeXBlLE0pfWNhdGNoKFope1I9InBhcnNlcmVycm9yIn19aWYoUj09InN1Y2Nlc3MiKXt2YXIgWTt0cnl7WT1KLmdldFJlc3BvbnNlSGVhZGVyKCJMYXN0LU1vZGlmaWVkIil9Y2F0Y2goWil7fWlmKE0uaWZNb2RpZmllZCYmWSl7by5sYXN0TW9kaWZpZWRbTS51cmxdPVl9aWYoIVcpe0koKX19ZWxzZXtvLmhhbmRsZUVycm9yKE0sSixSKX1MKCk7aWYoWCl7Si5hYm9ydCgpfWlmKE0uYXN5bmMpe0o9bnVsbH19fX07aWYoTS5hc3luYyl7dmFyIFA9c2V0SW50ZXJ2YWwoTiwxMyk7aWYoTS50aW1lb3V0PjApe3NldFRpbWVvdXQoZnVuY3Rpb24oKXtpZihKJiYhSyl7TigidGltZW91dCIpfX0sTS50aW1lb3V0KX19dHJ5e0ouc2VuZChNLmRhdGEpfWNhdGNoKFMpe28uaGFuZGxlRXJyb3IoTSxKLG51bGwsUyl9aWYoIU0uYXN5bmMpe04oKX1mdW5jdGlvbiBJKCl7aWYoTS5zdWNjZXNzKXtNLnN1Y2Nlc3MoVixSKX1pZihNLmdsb2JhbCl7by5ldmVudC50cmlnZ2VyKCJhamF4U3VjY2VzcyIsW0osTV0pfX1mdW5jdGlvbiBMKCl7aWYoTS5jb21wbGV0ZSl7TS5jb21wbGV0ZShKLFIpfWlmKE0uZ2xvYmFsKXtvLmV2ZW50LnRyaWdnZXIoImFqYXhDb21wbGV0ZSIsW0osTV0pfWlmKE0uZ2xvYmFsJiYhLS1vLmFjdGl2ZSl7by5ldmVudC50cmlnZ2VyKCJhamF4U3RvcCIpfX1yZXR1cm4gSn0saGFuZGxlRXJyb3I6ZnVuY3Rpb24oRixILEUsRyl7aWYoRi5lcnJvcil7Ri5lcnJvcihILEUsRyl9aWYoRi5nbG9iYWwpe28uZXZlbnQudHJpZ2dlcigiYWpheEVycm9yIixbSCxGLEddKX19LGFjdGl2ZTowLGh0dHBTdWNjZXNzOmZ1bmN0aW9uKEYpe3RyeXtyZXR1cm4gIUYuc3RhdHVzJiZsb2NhdGlvbi5wcm90b2NvbD09ImZpbGU6Inx8KEYuc3RhdHVzPj0yMDAmJkYuc3RhdHVzPDMwMCl8fEYuc3RhdHVzPT0zMDR8fEYuc3RhdHVzPT0xMjIzfWNhdGNoKEUpe31yZXR1cm4gZmFsc2V9LGh0dHBOb3RNb2RpZmllZDpmdW5jdGlvbihHLEUpe3RyeXt2YXIgSD1HLmdldFJlc3BvbnNlSGVhZGVyKCJMYXN0LU1vZGlmaWVkIik7cmV0dXJuIEcuc3RhdHVzPT0zMDR8fEg9PW8ubGFzdE1vZGlmaWVkW0VdfWNhdGNoKEYpe31yZXR1cm4gZmFsc2V9LGh0dHBEYXRhOmZ1bmN0aW9uKEosSCxHKXt2YXIgRj1KLmdldFJlc3BvbnNlSGVhZGVyKCJjb250ZW50LXR5cGUiKSxFPUg9PSJ4bWwifHwhSCYmRiYmRi5pbmRleE9mKCJ4bWwiKT49MCxJPUU/Si5yZXNwb25zZVhNTDpKLnJlc3BvbnNlVGV4dDtpZihFJiZJLmRvY3VtZW50RWxlbWVudC50YWdOYW1lPT0icGFyc2VyZXJyb3IiKXt0aHJvdyJwYXJzZXJlcnJvciJ9aWYoRyYmRy5kYXRhRmlsdGVyKXtJPUcuZGF0YUZpbHRlcihJLEgpfWlmKHR5cGVvZiBJPT09InN0cmluZyIpe2lmKEg9PSJzY3JpcHQiKXtvLmdsb2JhbEV2YWwoSSl9aWYoSD09Impzb24iKXtJPWxbImV2YWwiXSgiKCIrSSsiKSIpfX1yZXR1cm4gSX0scGFyYW06ZnVuY3Rpb24oRSl7dmFyIEc9W107ZnVuY3Rpb24gSChJLEope0dbRy5sZW5ndGhdPWVuY29kZVVSSUNvbXBvbmVudChJKSsiPSIrZW5jb2RlVVJJQ29tcG9uZW50KEopfWlmKG8uaXNBcnJheShFKXx8RS5qcXVlcnkpe28uZWFjaChFLGZ1bmN0aW9uKCl7SCh0aGlzLm5hbWUsdGhpcy52YWx1ZSl9KX1lbHNle2Zvcih2YXIgRiBpbiBFKXtpZihvLmlzQXJyYXkoRVtGXSkpe28uZWFjaChFW0ZdLGZ1bmN0aW9uKCl7SChGLHRoaXMpfSl9ZWxzZXtIKEYsby5pc0Z1bmN0aW9uKEVbRl0pP0VbRl0oKTpFW0ZdKX19fXJldHVybiBHLmpvaW4oIiYiKS5yZXBsYWNlKC8lMjAvZywiKyIpfX0pO3ZhciBtPXt9LG4sZD1bWyJoZWlnaHQiLCJtYXJnaW5Ub3AiLCJtYXJnaW5Cb3R0b20iLCJwYWRkaW5nVG9wIiwicGFkZGluZ0JvdHRvbSJdLFsid2lkdGgiLCJtYXJnaW5MZWZ0IiwibWFyZ2luUmlnaHQiLCJwYWRkaW5nTGVmdCIsInBhZGRpbmdSaWdodCJdLFsib3BhY2l0eSJdXTtmdW5jdGlvbiB0KEYsRSl7dmFyIEc9e307by5lYWNoKGQuY29uY2F0LmFwcGx5KFtdLGQuc2xpY2UoMCxFKSksZnVuY3Rpb24oKXtHW3RoaXNdPUZ9KTtyZXR1cm4gR31vLmZuLmV4dGVuZCh7c2hvdzpmdW5jdGlvbihKLEwpe2lmKEope3JldHVybiB0aGlzLmFuaW1hdGUodCgic2hvdyIsMyksSixMKX1lbHNle2Zvcih2YXIgSD0wLEY9dGhpcy5sZW5ndGg7SDxGO0grKyl7dmFyIEU9by5kYXRhKHRoaXNbSF0sIm9sZGRpc3BsYXkiKTt0aGlzW0hdLnN0eWxlLmRpc3BsYXk9RXx8IiI7aWYoby5jc3ModGhpc1tIXSwiZGlzcGxheSIpPT09Im5vbmUiKXt2YXIgRz10aGlzW0hdLnRhZ05hbWUsSztpZihtW0ddKXtLPW1bR119ZWxzZXt2YXIgST1vKCI8IitHKyIgLz4iKS5hcHBlbmRUbygiYm9keSIpO0s9SS5jc3MoImRpc3BsYXkiKTtpZihLPT09Im5vbmUiKXtLPSJibG9jayJ9SS5yZW1vdmUoKTttW0ddPUt9by5kYXRhKHRoaXNbSF0sIm9sZGRpc3BsYXkiLEspfX1mb3IodmFyIEg9MCxGPXRoaXMubGVuZ3RoO0g8RjtIKyspe3RoaXNbSF0uc3R5bGUuZGlzcGxheT1vLmRhdGEodGhpc1tIXSwib2xkZGlzcGxheSIpfHwiIn1yZXR1cm4gdGhpc319LGhpZGU6ZnVuY3Rpb24oSCxJKXtpZihIKXtyZXR1cm4gdGhpcy5hbmltYXRlKHQoImhpZGUiLDMpLEgsSSl9ZWxzZXtmb3IodmFyIEc9MCxGPXRoaXMubGVuZ3RoO0c8RjtHKyspe3ZhciBFPW8uZGF0YSh0aGlzW0ddLCJvbGRkaXNwbGF5Iik7aWYoIUUmJkUhPT0ibm9uZSIpe28uZGF0YSh0aGlzW0ddLCJvbGRkaXNwbGF5IixvLmNzcyh0aGlzW0ddLCJkaXNwbGF5IikpfX1mb3IodmFyIEc9MCxGPXRoaXMubGVuZ3RoO0c8RjtHKyspe3RoaXNbR10uc3R5bGUuZGlzcGxheT0ibm9uZSJ9cmV0dXJuIHRoaXN9fSxfdG9nZ2xlOm8uZm4udG9nZ2xlLHRvZ2dsZTpmdW5jdGlvbihHLEYpe3ZhciBFPXR5cGVvZiBHPT09ImJvb2xlYW4iO3JldHVybiBvLmlzRnVuY3Rpb24oRykmJm8uaXNGdW5jdGlvbihGKT90aGlzLl90b2dnbGUuYXBwbHkodGhpcyxhcmd1bWVudHMpOkc9PW51bGx8fEU/dGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIEg9RT9HOm8odGhpcykuaXMoIjpoaWRkZW4iKTtvKHRoaXMpW0g/InNob3ciOiJoaWRlIl0oKX0pOnRoaXMuYW5pbWF0ZSh0KCJ0b2dnbGUiLDMpLEcsRil9LGZhZGVUbzpmdW5jdGlvbihFLEcsRil7cmV0dXJuIHRoaXMuYW5pbWF0ZSh7b3BhY2l0eTpHfSxFLEYpfSxhbmltYXRlOmZ1bmN0aW9uKEksRixILEcpe3ZhciBFPW8uc3BlZWQoRixILEcpO3JldHVybiB0aGlzW0UucXVldWU9PT1mYWxzZT8iZWFjaCI6InF1ZXVlIl0oZnVuY3Rpb24oKXt2YXIgSz1vLmV4dGVuZCh7fSxFKSxNLEw9dGhpcy5ub2RlVHlwZT09MSYmbyh0aGlzKS5pcygiOmhpZGRlbiIpLEo9dGhpcztmb3IoTSBpbiBJKXtpZihJW01dPT0iaGlkZSImJkx8fElbTV09PSJzaG93IiYmIUwpe3JldHVybiBLLmNvbXBsZXRlLmNhbGwodGhpcyl9aWYoKE09PSJoZWlnaHQifHxNPT0id2lkdGgiKSYmdGhpcy5zdHlsZSl7Sy5kaXNwbGF5PW8uY3NzKHRoaXMsImRpc3BsYXkiKTtLLm92ZXJmbG93PXRoaXMuc3R5bGUub3ZlcmZsb3d9fWlmKEsub3ZlcmZsb3chPW51bGwpe3RoaXMuc3R5bGUub3ZlcmZsb3c9ImhpZGRlbiJ9Sy5jdXJBbmltPW8uZXh0ZW5kKHt9LEkpO28uZWFjaChJLGZ1bmN0aW9uKE8sUyl7dmFyIFI9bmV3IG8uZngoSixLLE8pO2lmKC90b2dnbGV8c2hvd3xoaWRlLy50ZXN0KFMpKXtSW1M9PSJ0b2dnbGUiP0w/InNob3ciOiJoaWRlIjpTXShJKX1lbHNle3ZhciBRPVMudG9TdHJpbmcoKS5tYXRjaCgvXihbKy1dPSk/KFtcZCstLl0rKSguKikkLyksVD1SLmN1cih0cnVlKXx8MDtpZihRKXt2YXIgTj1wYXJzZUZsb2F0KFFbMl0pLFA9UVszXXx8InB4IjtpZihQIT0icHgiKXtKLnN0eWxlW09dPShOfHwxKStQO1Q9KChOfHwxKS9SLmN1cih0cnVlKSkqVDtKLnN0eWxlW09dPVQrUH1pZihRWzFdKXtOPSgoUVsxXT09Ii09Ij8tMToxKSpOKStUfVIuY3VzdG9tKFQsTixQKX1lbHNle1IuY3VzdG9tKFQsUywiIil9fX0pO3JldHVybiB0cnVlfSl9LHN0b3A6ZnVuY3Rpb24oRixFKXt2YXIgRz1vLnRpbWVycztpZihGKXt0aGlzLnF1ZXVlKFtdKX10aGlzLmVhY2goZnVuY3Rpb24oKXtmb3IodmFyIEg9Ry5sZW5ndGgtMTtIPj0wO0gtLSl7aWYoR1tIXS5lbGVtPT10aGlzKXtpZihFKXtHW0hdKHRydWUpfUcuc3BsaWNlKEgsMSl9fX0pO2lmKCFFKXt0aGlzLmRlcXVldWUoKX1yZXR1cm4gdGhpc319KTtvLmVhY2goe3NsaWRlRG93bjp0KCJzaG93IiwxKSxzbGlkZVVwOnQoImhpZGUiLDEpLHNsaWRlVG9nZ2xlOnQoInRvZ2dsZSIsMSksZmFkZUluOntvcGFjaXR5OiJzaG93In0sZmFkZU91dDp7b3BhY2l0eToiaGlkZSJ9fSxmdW5jdGlvbihFLEYpe28uZm5bRV09ZnVuY3Rpb24oRyxIKXtyZXR1cm4gdGhpcy5hbmltYXRlKEYsRyxIKX19KTtvLmV4dGVuZCh7c3BlZWQ6ZnVuY3Rpb24oRyxILEYpe3ZhciBFPXR5cGVvZiBHPT09Im9iamVjdCI/Rzp7Y29tcGxldGU6Rnx8IUYmJkh8fG8uaXNGdW5jdGlvbihHKSYmRyxkdXJhdGlvbjpHLGVhc2luZzpGJiZIfHxIJiYhby5pc0Z1bmN0aW9uKEgpJiZIfTtFLmR1cmF0aW9uPW8uZngub2ZmPzA6dHlwZW9mIEUuZHVyYXRpb249PT0ibnVtYmVyIj9FLmR1cmF0aW9uOm8uZnguc3BlZWRzW0UuZHVyYXRpb25dfHxvLmZ4LnNwZWVkcy5fZGVmYXVsdDtFLm9sZD1FLmNvbXBsZXRlO0UuY29tcGxldGU9ZnVuY3Rpb24oKXtpZihFLnF1ZXVlIT09ZmFsc2Upe28odGhpcykuZGVxdWV1ZSgpfWlmKG8uaXNGdW5jdGlvbihFLm9sZCkpe0Uub2xkLmNhbGwodGhpcyl9fTtyZXR1cm4gRX0sZWFzaW5nOntsaW5lYXI6ZnVuY3Rpb24oRyxILEUsRil7cmV0dXJuIEUrRipHfSxzd2luZzpmdW5jdGlvbihHLEgsRSxGKXtyZXR1cm4oKC1NYXRoLmNvcyhHKk1hdGguUEkpLzIpKzAuNSkqRitFfX0sdGltZXJzOltdLGZ4OmZ1bmN0aW9uKEYsRSxHKXt0aGlzLm9wdGlvbnM9RTt0aGlzLmVsZW09Rjt0aGlzLnByb3A9RztpZighRS5vcmlnKXtFLm9yaWc9e319fX0pO28uZngucHJvdG90eXBlPXt1cGRhdGU6ZnVuY3Rpb24oKXtpZih0aGlzLm9wdGlvbnMuc3RlcCl7dGhpcy5vcHRpb25zLnN0ZXAuY2FsbCh0aGlzLmVsZW0sdGhpcy5ub3csdGhpcyl9KG8uZnguc3RlcFt0aGlzLnByb3BdfHxvLmZ4LnN0ZXAuX2RlZmF1bHQpKHRoaXMpO2lmKCh0aGlzLnByb3A9PSJoZWlnaHQifHx0aGlzLnByb3A9PSJ3aWR0aCIpJiZ0aGlzLmVsZW0uc3R5bGUpe3RoaXMuZWxlbS5zdHlsZS5kaXNwbGF5PSJibG9jayJ9fSxjdXI6ZnVuY3Rpb24oRil7aWYodGhpcy5lbGVtW3RoaXMucHJvcF0hPW51bGwmJighdGhpcy5lbGVtLnN0eWxlfHx0aGlzLmVsZW0uc3R5bGVbdGhpcy5wcm9wXT09bnVsbCkpe3JldHVybiB0aGlzLmVsZW1bdGhpcy5wcm9wXX12YXIgRT1wYXJzZUZsb2F0KG8uY3NzKHRoaXMuZWxlbSx0aGlzLnByb3AsRikpO3JldHVybiBFJiZFPi0xMDAwMD9FOnBhcnNlRmxvYXQoby5jdXJDU1ModGhpcy5lbGVtLHRoaXMucHJvcCkpfHwwfSxjdXN0b206ZnVuY3Rpb24oSSxILEcpe3RoaXMuc3RhcnRUaW1lPWUoKTt0aGlzLnN0YXJ0PUk7dGhpcy5lbmQ9SDt0aGlzLnVuaXQ9R3x8dGhpcy51bml0fHwicHgiO3RoaXMubm93PXRoaXMuc3RhcnQ7dGhpcy5wb3M9dGhpcy5zdGF0ZT0wO3ZhciBFPXRoaXM7ZnVuY3Rpb24gRihKKXtyZXR1cm4gRS5zdGVwKEopfUYuZWxlbT10aGlzLmVsZW07aWYoRigpJiZvLnRpbWVycy5wdXNoKEYpJiYhbil7bj1zZXRJbnRlcnZhbChmdW5jdGlvbigpe3ZhciBLPW8udGltZXJzO2Zvcih2YXIgSj0wO0o8Sy5sZW5ndGg7SisrKXtpZighS1tKXSgpKXtLLnNwbGljZShKLS0sMSl9fWlmKCFLLmxlbmd0aCl7Y2xlYXJJbnRlcnZhbChuKTtuPWd9fSwxMyl9fSxzaG93OmZ1bmN0aW9uKCl7dGhpcy5vcHRpb25zLm9yaWdbdGhpcy5wcm9wXT1vLmF0dHIodGhpcy5lbGVtLnN0eWxlLHRoaXMucHJvcCk7dGhpcy5vcHRpb25zLnNob3c9dHJ1ZTt0aGlzLmN1c3RvbSh0aGlzLnByb3A9PSJ3aWR0aCJ8fHRoaXMucHJvcD09ImhlaWdodCI/MTowLHRoaXMuY3VyKCkpO28odGhpcy5lbGVtKS5zaG93KCl9LGhpZGU6ZnVuY3Rpb24oKXt0aGlzLm9wdGlvbnMub3JpZ1t0aGlzLnByb3BdPW8uYXR0cih0aGlzLmVsZW0uc3R5bGUsdGhpcy5wcm9wKTt0aGlzLm9wdGlvbnMuaGlkZT10cnVlO3RoaXMuY3VzdG9tKHRoaXMuY3VyKCksMCl9LHN0ZXA6ZnVuY3Rpb24oSCl7dmFyIEc9ZSgpO2lmKEh8fEc+PXRoaXMub3B0aW9ucy5kdXJhdGlvbit0aGlzLnN0YXJ0VGltZSl7dGhpcy5ub3c9dGhpcy5lbmQ7dGhpcy5wb3M9dGhpcy5zdGF0ZT0xO3RoaXMudXBkYXRlKCk7dGhpcy5vcHRpb25zLmN1ckFuaW1bdGhpcy5wcm9wXT10cnVlO3ZhciBFPXRydWU7Zm9yKHZhciBGIGluIHRoaXMub3B0aW9ucy5jdXJBbmltKXtpZih0aGlzLm9wdGlvbnMuY3VyQW5pbVtGXSE9PXRydWUpe0U9ZmFsc2V9fWlmKEUpe2lmKHRoaXMub3B0aW9ucy5kaXNwbGF5IT1udWxsKXt0aGlzLmVsZW0uc3R5bGUub3ZlcmZsb3c9dGhpcy5vcHRpb25zLm92ZXJmbG93O3RoaXMuZWxlbS5zdHlsZS5kaXNwbGF5PXRoaXMub3B0aW9ucy5kaXNwbGF5O2lmKG8uY3NzKHRoaXMuZWxlbSwiZGlzcGxheSIpPT0ibm9uZSIpe3RoaXMuZWxlbS5zdHlsZS5kaXNwbGF5PSJibG9jayJ9fWlmKHRoaXMub3B0aW9ucy5oaWRlKXtvKHRoaXMuZWxlbSkuaGlkZSgpfWlmKHRoaXMub3B0aW9ucy5oaWRlfHx0aGlzLm9wdGlvbnMuc2hvdyl7Zm9yKHZhciBJIGluIHRoaXMub3B0aW9ucy5jdXJBbmltKXtvLmF0dHIodGhpcy5lbGVtLnN0eWxlLEksdGhpcy5vcHRpb25zLm9yaWdbSV0pfX10aGlzLm9wdGlvbnMuY29tcGxldGUuY2FsbCh0aGlzLmVsZW0pfXJldHVybiBmYWxzZX1lbHNle3ZhciBKPUctdGhpcy5zdGFydFRpbWU7dGhpcy5zdGF0ZT1KL3RoaXMub3B0aW9ucy5kdXJhdGlvbjt0aGlzLnBvcz1vLmVhc2luZ1t0aGlzLm9wdGlvbnMuZWFzaW5nfHwoby5lYXNpbmcuc3dpbmc/InN3aW5nIjoibGluZWFyIildKHRoaXMuc3RhdGUsSiwwLDEsdGhpcy5vcHRpb25zLmR1cmF0aW9uKTt0aGlzLm5vdz10aGlzLnN0YXJ0KygodGhpcy5lbmQtdGhpcy5zdGFydCkqdGhpcy5wb3MpO3RoaXMudXBkYXRlKCl9cmV0dXJuIHRydWV9fTtvLmV4dGVuZChvLmZ4LHtzcGVlZHM6e3Nsb3c6NjAwLGZhc3Q6MjAwLF9kZWZhdWx0OjQwMH0sc3RlcDp7b3BhY2l0eTpmdW5jdGlvbihFKXtvLmF0dHIoRS5lbGVtLnN0eWxlLCJvcGFjaXR5IixFLm5vdyl9LF9kZWZhdWx0OmZ1bmN0aW9uKEUpe2lmKEUuZWxlbS5zdHlsZSYmRS5lbGVtLnN0eWxlW0UucHJvcF0hPW51bGwpe0UuZWxlbS5zdHlsZVtFLnByb3BdPUUubm93K0UudW5pdH1lbHNle0UuZWxlbVtFLnByb3BdPUUubm93fX19fSk7aWYoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCl7by5mbi5vZmZzZXQ9ZnVuY3Rpb24oKXtpZighdGhpc1swXSl7cmV0dXJue3RvcDowLGxlZnQ6MH19aWYodGhpc1swXT09PXRoaXNbMF0ub3duZXJEb2N1bWVudC5ib2R5KXtyZXR1cm4gby5vZmZzZXQuYm9keU9mZnNldCh0aGlzWzBdKX12YXIgRz10aGlzWzBdLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLEo9dGhpc1swXS5vd25lckRvY3VtZW50LEY9Si5ib2R5LEU9Si5kb2N1bWVudEVsZW1lbnQsTD1FLmNsaWVudFRvcHx8Ri5jbGllbnRUb3B8fDAsSz1FLmNsaWVudExlZnR8fEYuY2xpZW50TGVmdHx8MCxJPUcudG9wKyhzZWxmLnBhZ2VZT2Zmc2V0fHxvLmJveE1vZGVsJiZFLnNjcm9sbFRvcHx8Ri5zY3JvbGxUb3ApLUwsSD1HLmxlZnQrKHNlbGYucGFnZVhPZmZzZXR8fG8uYm94TW9kZWwmJkUuc2Nyb2xsTGVmdHx8Ri5zY3JvbGxMZWZ0KS1LO3JldHVybnt0b3A6SSxsZWZ0Okh9fX1lbHNle28uZm4ub2Zmc2V0PWZ1bmN0aW9uKCl7aWYoIXRoaXNbMF0pe3JldHVybnt0b3A6MCxsZWZ0OjB9fWlmKHRoaXNbMF09PT10aGlzWzBdLm93bmVyRG9jdW1lbnQuYm9keSl7cmV0dXJuIG8ub2Zmc2V0LmJvZHlPZmZzZXQodGhpc1swXSl9by5vZmZzZXQuaW5pdGlhbGl6ZWR8fG8ub2Zmc2V0LmluaXRpYWxpemUoKTt2YXIgSj10aGlzWzBdLEc9Si5vZmZzZXRQYXJlbnQsRj1KLE89Si5vd25lckRvY3VtZW50LE0sSD1PLmRvY3VtZW50RWxlbWVudCxLPU8uYm9keSxMPU8uZGVmYXVsdFZpZXcsRT1MLmdldENvbXB1dGVkU3R5bGUoSixudWxsKSxOPUoub2Zmc2V0VG9wLEk9Si5vZmZzZXRMZWZ0O3doaWxlKChKPUoucGFyZW50Tm9kZSkmJkohPT1LJiZKIT09SCl7TT1MLmdldENvbXB1dGVkU3R5bGUoSixudWxsKTtOLT1KLnNjcm9sbFRvcCxJLT1KLnNjcm9sbExlZnQ7aWYoSj09PUcpe04rPUoub2Zmc2V0VG9wLEkrPUoub2Zmc2V0TGVmdDtpZihvLm9mZnNldC5kb2VzTm90QWRkQm9yZGVyJiYhKG8ub2Zmc2V0LmRvZXNBZGRCb3JkZXJGb3JUYWJsZUFuZENlbGxzJiYvXnQoYWJsZXxkfGgpJC9pLnRlc3QoSi50YWdOYW1lKSkpe04rPXBhcnNlSW50KE0uYm9yZGVyVG9wV2lkdGgsMTApfHwwLEkrPXBhcnNlSW50KE0uYm9yZGVyTGVmdFdpZHRoLDEwKXx8MH1GPUcsRz1KLm9mZnNldFBhcmVudH1pZihvLm9mZnNldC5zdWJ0cmFjdHNCb3JkZXJGb3JPdmVyZmxvd05vdFZpc2libGUmJk0ub3ZlcmZsb3chPT0idmlzaWJsZSIpe04rPXBhcnNlSW50KE0uYm9yZGVyVG9wV2lkdGgsMTApfHwwLEkrPXBhcnNlSW50KE0uYm9yZGVyTGVmdFdpZHRoLDEwKXx8MH1FPU19aWYoRS5wb3NpdGlvbj09PSJyZWxhdGl2ZSJ8fEUucG9zaXRpb249PT0ic3RhdGljIil7Tis9Sy5vZmZzZXRUb3AsSSs9Sy5vZmZzZXRMZWZ0fWlmKEUucG9zaXRpb249PT0iZml4ZWQiKXtOKz1NYXRoLm1heChILnNjcm9sbFRvcCxLLnNjcm9sbFRvcCksSSs9TWF0aC5tYXgoSC5zY3JvbGxMZWZ0LEsuc2Nyb2xsTGVmdCl9cmV0dXJue3RvcDpOLGxlZnQ6SX19fW8ub2Zmc2V0PXtpbml0aWFsaXplOmZ1bmN0aW9uKCl7aWYodGhpcy5pbml0aWFsaXplZCl7cmV0dXJufXZhciBMPWRvY3VtZW50LmJvZHksRj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSxILEcsTixJLE0sRSxKPUwuc3R5bGUubWFyZ2luVG9wLEs9JzxkaXYgc3R5bGU9InBvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MDttYXJnaW46MDtib3JkZXI6NXB4IHNvbGlkICMwMDA7cGFkZGluZzowO3dpZHRoOjFweDtoZWlnaHQ6MXB4OyI+PGRpdj48L2Rpdj48L2Rpdj48dGFibGUgc3R5bGU9InBvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MDttYXJnaW46MDtib3JkZXI6NXB4IHNvbGlkICMwMDA7cGFkZGluZzowO3dpZHRoOjFweDtoZWlnaHQ6MXB4OyIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj48dHI+PHRkPjwvdGQ+PC90cj48L3RhYmxlPic7TT17cG9zaXRpb246ImFic29sdXRlIix0b3A6MCxsZWZ0OjAsbWFyZ2luOjAsYm9yZGVyOjAsd2lkdGg6IjFweCIsaGVpZ2h0OiIxcHgiLHZpc2liaWxpdHk6ImhpZGRlbiJ9O2ZvcihFIGluIE0pe0Yuc3R5bGVbRV09TVtFXX1GLmlubmVySFRNTD1LO0wuaW5zZXJ0QmVmb3JlKEYsTC5maXJzdENoaWxkKTtIPUYuZmlyc3RDaGlsZCxHPUguZmlyc3RDaGlsZCxJPUgubmV4dFNpYmxpbmcuZmlyc3RDaGlsZC5maXJzdENoaWxkO3RoaXMuZG9lc05vdEFkZEJvcmRlcj0oRy5vZmZzZXRUb3AhPT01KTt0aGlzLmRvZXNBZGRCb3JkZXJGb3JUYWJsZUFuZENlbGxzPShJLm9mZnNldFRvcD09PTUpO0guc3R5bGUub3ZlcmZsb3c9ImhpZGRlbiIsSC5zdHlsZS5wb3NpdGlvbj0icmVsYXRpdmUiO3RoaXMuc3VidHJhY3RzQm9yZGVyRm9yT3ZlcmZsb3dOb3RWaXNpYmxlPShHLm9mZnNldFRvcD09PS01KTtMLnN0eWxlLm1hcmdpblRvcD0iMXB4Ijt0aGlzLmRvZXNOb3RJbmNsdWRlTWFyZ2luSW5Cb2R5T2Zmc2V0PShMLm9mZnNldFRvcD09PTApO0wuc3R5bGUubWFyZ2luVG9wPUo7TC5yZW1vdmVDaGlsZChGKTt0aGlzLmluaXRpYWxpemVkPXRydWV9LGJvZHlPZmZzZXQ6ZnVuY3Rpb24oRSl7by5vZmZzZXQuaW5pdGlhbGl6ZWR8fG8ub2Zmc2V0LmluaXRpYWxpemUoKTt2YXIgRz1FLm9mZnNldFRvcCxGPUUub2Zmc2V0TGVmdDtpZihvLm9mZnNldC5kb2VzTm90SW5jbHVkZU1hcmdpbkluQm9keU9mZnNldCl7Rys9cGFyc2VJbnQoby5jdXJDU1MoRSwibWFyZ2luVG9wIix0cnVlKSwxMCl8fDAsRis9cGFyc2VJbnQoby5jdXJDU1MoRSwibWFyZ2luTGVmdCIsdHJ1ZSksMTApfHwwfXJldHVybnt0b3A6RyxsZWZ0OkZ9fX07by5mbi5leHRlbmQoe3Bvc2l0aW9uOmZ1bmN0aW9uKCl7dmFyIEk9MCxIPTAsRjtpZih0aGlzWzBdKXt2YXIgRz10aGlzLm9mZnNldFBhcmVudCgpLEo9dGhpcy5vZmZzZXQoKSxFPS9eYm9keXxodG1sJC9pLnRlc3QoR1swXS50YWdOYW1lKT97dG9wOjAsbGVmdDowfTpHLm9mZnNldCgpO0oudG9wLT1qKHRoaXMsIm1hcmdpblRvcCIpO0oubGVmdC09aih0aGlzLCJtYXJnaW5MZWZ0Iik7RS50b3ArPWooRywiYm9yZGVyVG9wV2lkdGgiKTtFLmxlZnQrPWooRywiYm9yZGVyTGVmdFdpZHRoIik7Rj17dG9wOkoudG9wLUUudG9wLGxlZnQ6Si5sZWZ0LUUubGVmdH19cmV0dXJuIEZ9LG9mZnNldFBhcmVudDpmdW5jdGlvbigpe3ZhciBFPXRoaXNbMF0ub2Zmc2V0UGFyZW50fHxkb2N1bWVudC5ib2R5O3doaWxlKEUmJighL15ib2R5fGh0bWwkL2kudGVzdChFLnRhZ05hbWUpJiZvLmNzcyhFLCJwb3NpdGlvbiIpPT0ic3RhdGljIikpe0U9RS5vZmZzZXRQYXJlbnR9cmV0dXJuIG8oRSl9fSk7by5lYWNoKFsiTGVmdCIsIlRvcCJdLGZ1bmN0aW9uKEYsRSl7dmFyIEc9InNjcm9sbCIrRTtvLmZuW0ddPWZ1bmN0aW9uKEgpe2lmKCF0aGlzWzBdKXtyZXR1cm4gbnVsbH1yZXR1cm4gSCE9PWc/dGhpcy5lYWNoKGZ1bmN0aW9uKCl7dGhpcz09bHx8dGhpcz09ZG9jdW1lbnQ/bC5zY3JvbGxUbyghRj9IOm8obCkuc2Nyb2xsTGVmdCgpLEY/SDpvKGwpLnNjcm9sbFRvcCgpKTp0aGlzW0ddPUh9KTp0aGlzWzBdPT1sfHx0aGlzWzBdPT1kb2N1bWVudD9zZWxmW0Y/InBhZ2VZT2Zmc2V0IjoicGFnZVhPZmZzZXQiXXx8by5ib3hNb2RlbCYmZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50W0ddfHxkb2N1bWVudC5ib2R5W0ddOnRoaXNbMF1bR119fSk7by5lYWNoKFsiSGVpZ2h0IiwiV2lkdGgiXSxmdW5jdGlvbihJLEcpe3ZhciBFPUk/IkxlZnQiOiJUb3AiLEg9ST8iUmlnaHQiOiJCb3R0b20iLEY9Ry50b0xvd2VyQ2FzZSgpO28uZm5bImlubmVyIitHXT1mdW5jdGlvbigpe3JldHVybiB0aGlzWzBdP28uY3NzKHRoaXNbMF0sRixmYWxzZSwicGFkZGluZyIpOm51bGx9O28uZm5bIm91dGVyIitHXT1mdW5jdGlvbihLKXtyZXR1cm4gdGhpc1swXT9vLmNzcyh0aGlzWzBdLEYsZmFsc2UsSz8ibWFyZ2luIjoiYm9yZGVyIik6bnVsbH07dmFyIEo9Ry50b0xvd2VyQ2FzZSgpO28uZm5bSl09ZnVuY3Rpb24oSyl7cmV0dXJuIHRoaXNbMF09PWw/ZG9jdW1lbnQuY29tcGF0TW9kZT09IkNTUzFDb21wYXQiJiZkb2N1bWVudC5kb2N1bWVudEVsZW1lbnRbImNsaWVudCIrR118fGRvY3VtZW50LmJvZHlbImNsaWVudCIrR106dGhpc1swXT09ZG9jdW1lbnQ/TWF0aC5tYXgoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50WyJjbGllbnQiK0ddLGRvY3VtZW50LmJvZHlbInNjcm9sbCIrR10sZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50WyJzY3JvbGwiK0ddLGRvY3VtZW50LmJvZHlbIm9mZnNldCIrR10sZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50WyJvZmZzZXQiK0ddKTpLPT09Zz8odGhpcy5sZW5ndGg/by5jc3ModGhpc1swXSxKKTpudWxsKTp0aGlzLmNzcyhKLHR5cGVvZiBLPT09InN0cmluZyI/SzpLKyJweCIpfX0pfSkoKTs=]]></data>
	</file>
	<file>
	  <filename>/templates/slimbox/js/slimbox2.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoKCVNsaW1ib3ggdjIuMDIgLSBUaGUgdWx0aW1hdGUgbGlnaHR3ZWlnaHQgTGlnaHRib3ggY2xvbmUgZm9yIGpRdWVyeQoJKGMpIDIwMDctMjAwOSBDaHJpc3RvcGhlIEJleWxzIDxodHRwOi8vd3d3LmRpZ2l0YWxpYS5iZT4KCU1JVC1zdHlsZSBsaWNlbnNlLgoqLwooZnVuY3Rpb24odyl7dmFyIEU9dyh3aW5kb3cpLHUsZyxGPS0xLG8seCxELHYseSxMLHMsbj0hd2luZG93LlhNTEh0dHBSZXF1ZXN0LGU9d2luZG93Lm9wZXJhJiYoZG9jdW1lbnQuY29tcGF0TW9kZT09IkNTUzFDb21wYXQiKSYmKHcuYnJvd3Nlci52ZXJzaW9uPj05LjMpLG09ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LGw9e30sdD1uZXcgSW1hZ2UoKSxKPW5ldyBJbWFnZSgpLEgsYSxoLHEsSSxkLEcsYyxBLEs7dyhmdW5jdGlvbigpe3coImJvZHkiKS5hcHBlbmQodyhbSD13KCc8ZGl2IGlkPSJsYk92ZXJsYXkiIC8+JylbMF0sYT13KCc8ZGl2IGlkPSJsYkNlbnRlciIgLz4nKVswXSxHPXcoJzxkaXYgaWQ9ImxiQm90dG9tQ29udGFpbmVyIiAvPicpWzBdXSkuY3NzKCJkaXNwbGF5Iiwibm9uZSIpKTtoPXcoJzxkaXYgaWQ9ImxiSW1hZ2UiIC8+JykuYXBwZW5kVG8oYSkuYXBwZW5kKHE9dygnPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyIgLz4nKS5hcHBlbmQoW0k9dygnPGEgaWQ9ImxiUHJldkxpbmsiIGhyZWY9IiMiIC8+JykuY2xpY2soQilbMF0sZD13KCc8YSBpZD0ibGJOZXh0TGluayIgaHJlZj0iIyIgLz4nKS5jbGljayhmKVswXV0pWzBdKVswXTtjPXcoJzxkaXYgaWQ9ImxiQm90dG9tIiAvPicpLmFwcGVuZFRvKEcpLmFwcGVuZChbdygnPGEgaWQ9ImxiQ2xvc2VMaW5rIiBocmVmPSIjIiAvPicpLmFkZChIKS5jbGljayhDKVswXSxBPXcoJzxkaXYgaWQ9ImxiQ2FwdGlvbiIgLz4nKVswXSxLPXcoJzxkaXYgaWQ9ImxiTnVtYmVyIiAvPicpWzBdLHcoJzxkaXYgc3R5bGU9ImNsZWFyOiBib3RoOyIgLz4nKVswXV0pWzBdfSk7dy5zbGltYm94PWZ1bmN0aW9uKE8sTixNKXt1PXcuZXh0ZW5kKHtsb29wOmZhbHNlLG92ZXJsYXlPcGFjaXR5OjAuOCxvdmVybGF5RmFkZUR1cmF0aW9uOjQwMCxyZXNpemVEdXJhdGlvbjo0MDAscmVzaXplRWFzaW5nOiJzd2luZyIsaW5pdGlhbFdpZHRoOjI1MCxpbml0aWFsSGVpZ2h0OjI1MCxpbWFnZUZhZGVEdXJhdGlvbjo0MDAsY2FwdGlvbkFuaW1hdGlvbkR1cmF0aW9uOjQwMCxjb3VudGVyVGV4dDoiSW1hZ2Uge3h9IG9mIHt5fSIsY2xvc2VLZXlzOlsyNyw4OCw2N10scHJldmlvdXNLZXlzOlszNyw4MF0sbmV4dEtleXM6WzM5LDc4XX0sTSk7aWYodHlwZW9mIE89PSJzdHJpbmciKXtPPVtbTyxOXV07Tj0wfXk9RS5zY3JvbGxUb3AoKSsoKGU/bS5jbGllbnRIZWlnaHQ6RS5oZWlnaHQoKSkvMik7TD11LmluaXRpYWxXaWR0aDtzPXUuaW5pdGlhbEhlaWdodDt3KGEpLmNzcyh7dG9wOk1hdGgubWF4KDAseS0ocy8yKSksd2lkdGg6TCxoZWlnaHQ6cyxtYXJnaW5MZWZ0Oi1MLzJ9KS5zaG93KCk7dj1ufHwoSC5jdXJyZW50U3R5bGUmJihILmN1cnJlbnRTdHlsZS5wb3NpdGlvbiE9ImZpeGVkIikpO2lmKHYpe0guc3R5bGUucG9zaXRpb249ImFic29sdXRlIn13KEgpLmNzcygib3BhY2l0eSIsdS5vdmVybGF5T3BhY2l0eSkuZmFkZUluKHUub3ZlcmxheUZhZGVEdXJhdGlvbik7eigpO2soMSk7Zz1PO3UubG9vcD11Lmxvb3AmJihnLmxlbmd0aD4xKTtyZXR1cm4gYihOKX07dy5mbi5zbGltYm94PWZ1bmN0aW9uKE0sUCxPKXtQPVB8fGZ1bmN0aW9uKFEpe3JldHVybltRLmhyZWYsUS50aXRsZV19O089T3x8ZnVuY3Rpb24oKXtyZXR1cm4gdHJ1ZX07dmFyIE49dGhpcztyZXR1cm4gTi51bmJpbmQoImNsaWNrIikuY2xpY2soZnVuY3Rpb24oKXt2YXIgUz10aGlzLFU9MCxULFE9MCxSO1Q9dy5ncmVwKE4sZnVuY3Rpb24oVyxWKXtyZXR1cm4gTy5jYWxsKFMsVyxWKX0pO2ZvcihSPVQubGVuZ3RoO1E8UjsrK1Epe2lmKFRbUV09PVMpe1U9UX1UW1FdPVAoVFtRXSxRKX1yZXR1cm4gdy5zbGltYm94KFQsVSxNKX0pfTtmdW5jdGlvbiB6KCl7dmFyIE49RS5zY3JvbGxMZWZ0KCksTT1lP20uY2xpZW50V2lkdGg6RS53aWR0aCgpO3coW2EsR10pLmNzcygibGVmdCIsTisoTS8yKSk7aWYodil7dyhIKS5jc3Moe2xlZnQ6Tix0b3A6RS5zY3JvbGxUb3AoKSx3aWR0aDpNLGhlaWdodDpFLmhlaWdodCgpfSl9fWZ1bmN0aW9uIGsoTSl7dygib2JqZWN0IikuYWRkKG4/InNlbGVjdCI6ImVtYmVkIikuZWFjaChmdW5jdGlvbihPLFApe2lmKE0pe3cuZGF0YShQLCJzbGltYm94IixQLnN0eWxlLnZpc2liaWxpdHkpfVAuc3R5bGUudmlzaWJpbGl0eT1NPyJoaWRkZW4iOncuZGF0YShQLCJzbGltYm94Iil9KTt2YXIgTj1NPyJiaW5kIjoidW5iaW5kIjtFW05dKCJzY3JvbGwgcmVzaXplIix6KTt3KGRvY3VtZW50KVtOXSgia2V5ZG93biIscCl9ZnVuY3Rpb24gcChPKXt2YXIgTj1PLmtleUNvZGUsTT13LmluQXJyYXk7cmV0dXJuKE0oTix1LmNsb3NlS2V5cyk+PTApP0MoKTooTShOLHUubmV4dEtleXMpPj0wKT9mKCk6KE0oTix1LnByZXZpb3VzS2V5cyk+PTApP0IoKTpmYWxzZX1mdW5jdGlvbiBCKCl7cmV0dXJuIGIoeCl9ZnVuY3Rpb24gZigpe3JldHVybiBiKEQpfWZ1bmN0aW9uIGIoTSl7aWYoTT49MCl7Rj1NO289Z1tGXVswXTt4PShGfHwodS5sb29wP2cubGVuZ3RoOjApKS0xO0Q9KChGKzEpJWcubGVuZ3RoKXx8KHUubG9vcD8wOi0xKTtyKCk7YS5jbGFzc05hbWU9ImxiTG9hZGluZyI7bD1uZXcgSW1hZ2UoKTtsLm9ubG9hZD1qO2wuc3JjPW99cmV0dXJuIGZhbHNlfWZ1bmN0aW9uIGooKXthLmNsYXNzTmFtZT0iIjt3KGgpLmNzcyh7YmFja2dyb3VuZEltYWdlOiJ1cmwoIitvKyIpIix2aXNpYmlsaXR5OiJoaWRkZW4iLGRpc3BsYXk6IiJ9KTt3KHEpLndpZHRoKGwud2lkdGgpO3coW3EsSSxkXSkuaGVpZ2h0KGwuaGVpZ2h0KTt3KEEpLmh0bWwoZ1tGXVsxXXx8IiIpO3coSykuaHRtbCgoKChnLmxlbmd0aD4xKSYmdS5jb3VudGVyVGV4dCl8fCIiKS5yZXBsYWNlKC97eH0vLEYrMSkucmVwbGFjZSgve3l9LyxnLmxlbmd0aCkpO2lmKHg+PTApe3Quc3JjPWdbeF1bMF19aWYoRD49MCl7Si5zcmM9Z1tEXVswXX1MPWgub2Zmc2V0V2lkdGg7cz1oLm9mZnNldEhlaWdodDt2YXIgTT1NYXRoLm1heCgwLHktKHMvMikpO2lmKGEub2Zmc2V0SGVpZ2h0IT1zKXt3KGEpLmFuaW1hdGUoe2hlaWdodDpzLHRvcDpNfSx1LnJlc2l6ZUR1cmF0aW9uLHUucmVzaXplRWFzaW5nKX1pZihhLm9mZnNldFdpZHRoIT1MKXt3KGEpLmFuaW1hdGUoe3dpZHRoOkwsbWFyZ2luTGVmdDotTC8yfSx1LnJlc2l6ZUR1cmF0aW9uLHUucmVzaXplRWFzaW5nKX13KGEpLnF1ZXVlKGZ1bmN0aW9uKCl7dyhHKS5jc3Moe3dpZHRoOkwsdG9wOk0rcyxtYXJnaW5MZWZ0Oi1MLzIsdmlzaWJpbGl0eToiaGlkZGVuIixkaXNwbGF5OiIifSk7dyhoKS5jc3Moe2Rpc3BsYXk6Im5vbmUiLHZpc2liaWxpdHk6IiIsb3BhY2l0eToiIn0pLmZhZGVJbih1LmltYWdlRmFkZUR1cmF0aW9uLGkpfSl9ZnVuY3Rpb24gaSgpe2lmKHg+PTApe3coSSkuc2hvdygpfWlmKEQ+PTApe3coZCkuc2hvdygpfXcoYykuY3NzKCJtYXJnaW5Ub3AiLC1jLm9mZnNldEhlaWdodCkuYW5pbWF0ZSh7bWFyZ2luVG9wOjB9LHUuY2FwdGlvbkFuaW1hdGlvbkR1cmF0aW9uKTtHLnN0eWxlLnZpc2liaWxpdHk9IiJ9ZnVuY3Rpb24gcigpe2wub25sb2FkPW51bGw7bC5zcmM9dC5zcmM9Si5zcmM9bzt3KFthLGgsY10pLnN0b3AodHJ1ZSk7dyhbSSxkLGgsR10pLmhpZGUoKX1mdW5jdGlvbiBDKCl7aWYoRj49MCl7cigpO0Y9eD1EPS0xO3coYSkuaGlkZSgpO3coSCkuc3RvcCgpLmZhZGVPdXQodS5vdmVybGF5RmFkZUR1cmF0aW9uLGspfXJldHVybiBmYWxzZX19KShqUXVlcnkpOwoKLy8gQVVUT0xPQUQgQ09ERSBCTE9DSyAoTUFZIEJFIENIQU5HRUQgT1IgUkVNT1ZFRCkKalF1ZXJ5KGZ1bmN0aW9uKCQpIHsKCSQoImFbcmVsXj0nbGlnaHRib3gnXSIpLnNsaW1ib3goey8qIFB1dCBjdXN0b20gb3B0aW9ucyBoZXJlICovfSwgbnVsbCwgZnVuY3Rpb24oZWwpIHsKCQlyZXR1cm4gKHRoaXMgPT0gZWwpIHx8ICgodGhpcy5yZWwubGVuZ3RoID4gOCkgJiYgKHRoaXMucmVsID09IGVsLnJlbCkpOwoJfSk7Cn0pOw==]]></data>
	</file>
	<file>
	  <filename>/templates/slimbox/README.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[U0xJTUJPWCBWMi4wMiBSRUFETUUKPT09PT09PT09PT09PT09PT09PT0KVGhlIHVsdGltYXRlIGxpZ2h0d2VpZ2h0IExpZ2h0Ym94IGNsb25lCi4uLiBub3cgdXNpbmcgdGhlIGpRdWVyeSBqYXZhc2NyaXB0IGxpYnJhcnkKCihjKSBDaHJpc3RvcGhlIEJleWxzIDIwMDctMjAwOQpNSVQtc3R5bGUgbGljZW5zZQoKaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL3NsaW1ib3gvCgoKSW5jbHVkZWQgZmlsZXM6CgpleGFtcGxlLmh0bWwJCUEgc2ltcGxlIGV4YW1wbGUgcGFnZSBkZW1vbnN0cmF0aW5nIGhvdyB0byB1c2UgU2xpbWJveCB3aXRoIHRoZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24uCmV4YW1wbGUuanBnCQlBbiBleGFtcGxlIGltYWdlIHVzZWQgb24gdGhlIGV4YW1wbGUgcGFnZS4KUkVBRE1FLnR4dAkJVGhlIGZpbGUgeW91IGFyZSByZWFkaW5nLgpjc3MvKgkJCVRoZSBTbGltYm94IHN0eWxlc2hlZXQgYW5kIGl0cyBhc3NvY2lhdGVkIGltYWdlcy4gWW91IGNhbiBlZGl0IHRoZW0gdG8gY3VzdG9taXplIFNsaW1ib3ggYXBwZWFyYW5jZS4KanMvc2xpbWJveDIuanMJCVRoZSBtaW5pZmllZCB2ZXJzaW9uIG9mIFNsaW1ib3ggMiwgcGx1cyB0aGUgZWRpdGFibGUgYXV0b2xvYWRpbmcgY29kZSB1c2luZyBkZWZhdWx0IG9wdGlvbnMuCnNyYy9zbGltYm94Mi5qcwkJVGhlIFNsaW1ib3ggMiBzb3VyY2UuIENvbnRhaW5zIG1hbnkgY29tbWVudHMgYW5kIGlzIG5vdCBzdWl0YWJsZSBmb3IgcHJvZHVjdGlvbiB1c2UgKG5lZWRzIHRvIGJlIG1pbmlmaWVkIGZpcnN0KS4KZXh0cmEvKgkJCVNvbWUgZXh0cmEgc2NyaXB0cyB0aGF0IHlvdSBjYW4gYWRkIHRvIHRoZSBhdXRvbG9hZCBjb2RlIGJsb2NrIGluc2lkZSBzbGltYm94Mi5qcyB0byBhZGQgc3BlY2lhbCBmdW5jdGlvbmFsaXR5LgoKClNsaW1ib3ggMiByZXF1aXJlcyB0aGUgalF1ZXJ5IGxpYnJhcnkgKHZlcnNpb24gMS4yLjYgb3IgbW9yZSByZWNlbnQpIHRvIGJlIGluc3RhbGxlZCBvbiB5b3VyIHdlYnNpdGUgaW4gb3JkZXIgdG8gd29yayBwcm9wZXJseS4KCllvdSBjYW4gcmVtb3ZlIG9yIGN1c3RvbWl6ZSB0aGUgcHJvdmlkZWQgYXV0b2xvYWQgY29kZSBibG9jayBieSBlZGl0aW5nIHRoZSBzbGltYm94Mi5qcyBmaWxlLiBCeSBkZWZhdWx0LCBpdCBiZWhhdmVzIGxpa2UgTGlnaHRib3guCldoZW4gZGVwbG95aW5nIHNsaW1ib3gyLmpzLCB5b3UgTVVTVCBhbHdheXMgcHJlc2VydmUgdGhlIGNvcHlyaWdodCBub3RpY2UgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgZmlsZS4KCklmIHlvdSBhcmUgYSBkZXZlbG9wZXIgYW5kIHdhbnQgdG8gZWRpdCB0aGUgcHJvdmlkZWQgc291cmNlIGNvZGUsIGl0IGlzIHN0cm9uZ2x5IHJlY29tbWVuZGVkIHRvIG1pbmlmeSB0aGUgc2NyaXB0IHVzaW5nICJZVUkgQ29tcHJlc3NvciIKYnkgSnVsaWVuIExlY29tdGUgYmVmb3JlIGRpc3RyaWJ1dGlvbi4gSXQgd2lsbCBzdHJpcCBzcGFjZXMgYW5kIGNvbW1lbnRzIGFuZCBzaHJpbmsgdGhlIHZhcmlhYmxlIG5hbWVzIGluIG9yZGVyIHRvIG9idGFpbiB0aGUgc21hbGxlc3QgZmlsZSBzaXplLgoKRm9yIG1vcmUgaW5mb3JtYXRpb24sIHBsZWFzZSByZWFkIHRoZSBkb2N1bWVudGF0aW9uIG9uIHRoZSBvZmZpY2lhbCBwcm9qZWN0IHBhZ2UuCgoKRW5qb3kh]]></data>
	</file>
	<file>
	  <filename>/templates/slimbox/src/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/slimbox/src/autoload.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8gQVVUT0xPQUQgQ09ERSBCTE9DSyAoTUFZIEJFIENIQU5HRUQgT1IgUkVNT1ZFRCkKalF1ZXJ5KGZ1bmN0aW9uKCQpIHsKCSQoImFbcmVsXj0nbGlnaHRib3gnXSIpLnNsaW1ib3goey8qIFB1dCBjdXN0b20gb3B0aW9ucyBoZXJlICovfSwgbnVsbCwgZnVuY3Rpb24oZWwpIHsKCQlyZXR1cm4gKHRoaXMgPT0gZWwpIHx8ICgodGhpcy5yZWwubGVuZ3RoID4gOCkgJiYgKHRoaXMucmVsID09IGVsLnJlbCkpOwoJfSk7Cn0pOw==]]></data>
	</file>
	<file>
	  <filename>/templates/slimbox/src/slimbox2.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyohCglTbGltYm94IHYyLjAyIC0gVGhlIHVsdGltYXRlIGxpZ2h0d2VpZ2h0IExpZ2h0Ym94IGNsb25lIGZvciBqUXVlcnkKCShjKSAyMDA3LTIwMDkgQ2hyaXN0b3BoZSBCZXlscyA8aHR0cDovL3d3dy5kaWdpdGFsaWEuYmU+CglNSVQtc3R5bGUgbGljZW5zZS4KKi8KCihmdW5jdGlvbigkKSB7CgoJLy8gR2xvYmFsIHZhcmlhYmxlcywgYWNjZXNzaWJsZSB0byBTbGltYm94IG9ubHkKCXZhciB3aW4gPSAkKHdpbmRvdyksIG9wdGlvbnMsIGltYWdlcywgYWN0aXZlSW1hZ2UgPSAtMSwgYWN0aXZlVVJMLCBwcmV2SW1hZ2UsIG5leHRJbWFnZSwgY29tcGF0aWJsZU92ZXJsYXksIG1pZGRsZSwgY2VudGVyV2lkdGgsIGNlbnRlckhlaWdodCwgaWU2ID0gIXdpbmRvdy5YTUxIdHRwUmVxdWVzdCwKCQlvcGVyYUZpeCA9IHdpbmRvdy5vcGVyYSAmJiAoZG9jdW1lbnQuY29tcGF0TW9kZSA9PSAiQ1NTMUNvbXBhdCIpICYmICgkLmJyb3dzZXIudmVyc2lvbiA+PSA5LjMpLCBkb2N1bWVudEVsZW1lbnQgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsCgoJLy8gUHJlbG9hZCBpbWFnZXMKCXByZWxvYWQgPSB7fSwgcHJlbG9hZFByZXYgPSBuZXcgSW1hZ2UoKSwgcHJlbG9hZE5leHQgPSBuZXcgSW1hZ2UoKSwKCgkvLyBET00gZWxlbWVudHMKCW92ZXJsYXksIGNlbnRlciwgaW1hZ2UsIHNpemVyLCBwcmV2TGluaywgbmV4dExpbmssIGJvdHRvbUNvbnRhaW5lciwgYm90dG9tLCBjYXB0aW9uLCBudW1iZXI7CgoJLyoKCQlJbml0aWFsaXphdGlvbgoJKi8KCgkkKGZ1bmN0aW9uKCkgewoJCS8vIEFwcGVuZCB0aGUgU2xpbWJveCBIVE1MIGNvZGUgYXQgdGhlIGJvdHRvbSBvZiB0aGUgZG9jdW1lbnQKCQkkKCJib2R5IikuYXBwZW5kKAoJCQkkKFsKCQkJCW92ZXJsYXkgPSAkKCc8ZGl2IGlkPSJsYk92ZXJsYXkiIC8+JylbMF0sCgkJCQljZW50ZXIgPSAkKCc8ZGl2IGlkPSJsYkNlbnRlciIgLz4nKVswXSwKCQkJCWJvdHRvbUNvbnRhaW5lciA9ICQoJzxkaXYgaWQ9ImxiQm90dG9tQ29udGFpbmVyIiAvPicpWzBdCgkJCV0pLmNzcygiZGlzcGxheSIsICJub25lIikKCQkpOwoKCQlpbWFnZSA9ICQoJzxkaXYgaWQ9ImxiSW1hZ2UiIC8+JykuYXBwZW5kVG8oY2VudGVyKS5hcHBlbmQoCgkJCXNpemVyID0gJCgnPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyIgLz4nKS5hcHBlbmQoWwoJCQkJcHJldkxpbmsgPSAkKCc8YSBpZD0ibGJQcmV2TGluayIgaHJlZj0iIyIgLz4nKS5jbGljayhwcmV2aW91cylbMF0sCgkJCQluZXh0TGluayA9ICQoJzxhIGlkPSJsYk5leHRMaW5rIiBocmVmPSIjIiAvPicpLmNsaWNrKG5leHQpWzBdCgkJCV0pWzBdCgkJKVswXTsKCgkJYm90dG9tID0gJCgnPGRpdiBpZD0ibGJCb3R0b20iIC8+JykuYXBwZW5kVG8oYm90dG9tQ29udGFpbmVyKS5hcHBlbmQoWwoJCQkkKCc8YSBpZD0ibGJDbG9zZUxpbmsiIGhyZWY9IiMiIC8+JykuYWRkKG92ZXJsYXkpLmNsaWNrKGNsb3NlKVswXSwKCQkJY2FwdGlvbiA9ICQoJzxkaXYgaWQ9ImxiQ2FwdGlvbiIgLz4nKVswXSwKCQkJbnVtYmVyID0gJCgnPGRpdiBpZD0ibGJOdW1iZXIiIC8+JylbMF0sCgkJCSQoJzxkaXYgc3R5bGU9ImNsZWFyOiBib3RoOyIgLz4nKVswXQoJCV0pWzBdOwoJfSk7CgoKCS8qCgkJQVBJCgkqLwoKCS8vIE9wZW4gU2xpbWJveCB3aXRoIHRoZSBzcGVjaWZpZWQgcGFyYW1ldGVycwoJJC5zbGltYm94ID0gZnVuY3Rpb24oX2ltYWdlcywgc3RhcnRJbWFnZSwgX29wdGlvbnMpIHsKCQlvcHRpb25zID0gJC5leHRlbmQoewoJCQlsb29wOiBmYWxzZSwJCQkJLy8gQWxsb3dzIHRvIG5hdmlnYXRlIGJldHdlZW4gZmlyc3QgYW5kIGxhc3QgaW1hZ2VzCgkJCW92ZXJsYXlPcGFjaXR5OiAwLjgsCQkJLy8gMSBpcyBvcGFxdWUsIDAgaXMgY29tcGxldGVseSB0cmFuc3BhcmVudCAoY2hhbmdlIHRoZSBjb2xvciBpbiB0aGUgQ1NTIGZpbGUpCgkJCW92ZXJsYXlGYWRlRHVyYXRpb246IDQwMCwJCS8vIER1cmF0aW9uIG9mIHRoZSBvdmVybGF5IGZhZGUtaW4gYW5kIGZhZGUtb3V0IGFuaW1hdGlvbnMgKGluIG1pbGxpc2Vjb25kcykKCQkJcmVzaXplRHVyYXRpb246IDQwMCwJCQkvLyBEdXJhdGlvbiBvZiBlYWNoIG9mIHRoZSBib3ggcmVzaXplIGFuaW1hdGlvbnMgKGluIG1pbGxpc2Vjb25kcykKCQkJcmVzaXplRWFzaW5nOiAic3dpbmciLAkJCS8vICJzd2luZyIgaXMgalF1ZXJ5J3MgZGVmYXVsdCBlYXNpbmcKCQkJaW5pdGlhbFdpZHRoOiAyNTAsCQkJLy8gSW5pdGlhbCB3aWR0aCBvZiB0aGUgYm94IChpbiBwaXhlbHMpCgkJCWluaXRpYWxIZWlnaHQ6IDI1MCwJCQkvLyBJbml0aWFsIGhlaWdodCBvZiB0aGUgYm94IChpbiBwaXhlbHMpCgkJCWltYWdlRmFkZUR1cmF0aW9uOiA0MDAsCQkJLy8gRHVyYXRpb24gb2YgdGhlIGltYWdlIGZhZGUtaW4gYW5pbWF0aW9uIChpbiBtaWxsaXNlY29uZHMpCgkJCWNhcHRpb25BbmltYXRpb25EdXJhdGlvbjogNDAwLAkJLy8gRHVyYXRpb24gb2YgdGhlIGNhcHRpb24gYW5pbWF0aW9uIChpbiBtaWxsaXNlY29uZHMpCgkJCWNvdW50ZXJUZXh0OiAiSW1hZ2Uge3h9IG9mIHt5fSIsCS8vIFRyYW5zbGF0ZSBvciBjaGFuZ2UgYXMgeW91IHdpc2gsIG9yIHNldCBpdCB0byBmYWxzZSB0byBkaXNhYmxlIGNvdW50ZXIgdGV4dCBmb3IgaW1hZ2UgZ3JvdXBzCgkJCWNsb3NlS2V5czogWzI3LCA4OCwgNjddLAkJLy8gQXJyYXkgb2Yga2V5Y29kZXMgdG8gY2xvc2UgU2xpbWJveCwgZGVmYXVsdDogRXNjICgyNyksICd4JyAoODgpLCAnYycgKDY3KQoJCQlwcmV2aW91c0tleXM6IFszNywgODBdLAkJCS8vIEFycmF5IG9mIGtleWNvZGVzIHRvIG5hdmlnYXRlIHRvIHRoZSBwcmV2aW91cyBpbWFnZSwgZGVmYXVsdDogTGVmdCBhcnJvdyAoMzcpLCAncCcgKDgwKQoJCQluZXh0S2V5czogWzM5LCA3OF0JCQkvLyBBcnJheSBvZiBrZXljb2RlcyB0byBuYXZpZ2F0ZSB0byB0aGUgbmV4dCBpbWFnZSwgZGVmYXVsdDogUmlnaHQgYXJyb3cgKDM5KSwgJ24nICg3OCkKCQl9LCBfb3B0aW9ucyk7CgoJCS8vIFRoZSBmdW5jdGlvbiBpcyBjYWxsZWQgZm9yIGEgc2luZ2xlIGltYWdlLCB3aXRoIFVSTCBhbmQgVGl0bGUgYXMgZmlyc3QgdHdvIGFyZ3VtZW50cwoJCWlmICh0eXBlb2YgX2ltYWdlcyA9PSAic3RyaW5nIikgewoJCQlfaW1hZ2VzID0gW1tfaW1hZ2VzLCBzdGFydEltYWdlXV07CgkJCXN0YXJ0SW1hZ2UgPSAwOwoJCX0KCgkJbWlkZGxlID0gd2luLnNjcm9sbFRvcCgpICsgKChvcGVyYUZpeCA/IGRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQgOiB3aW4uaGVpZ2h0KCkpIC8gMik7CgkJY2VudGVyV2lkdGggPSBvcHRpb25zLmluaXRpYWxXaWR0aDsKCQljZW50ZXJIZWlnaHQgPSBvcHRpb25zLmluaXRpYWxIZWlnaHQ7CgkJJChjZW50ZXIpLmNzcyh7dG9wOiBNYXRoLm1heCgwLCBtaWRkbGUgLSAoY2VudGVySGVpZ2h0IC8gMikpLCB3aWR0aDogY2VudGVyV2lkdGgsIGhlaWdodDogY2VudGVySGVpZ2h0LCBtYXJnaW5MZWZ0OiAtY2VudGVyV2lkdGgvMn0pLnNob3coKTsKCQljb21wYXRpYmxlT3ZlcmxheSA9IGllNiB8fCAob3ZlcmxheS5jdXJyZW50U3R5bGUgJiYgKG92ZXJsYXkuY3VycmVudFN0eWxlLnBvc2l0aW9uICE9ICJmaXhlZCIpKTsKCQlpZiAoY29tcGF0aWJsZU92ZXJsYXkpIG92ZXJsYXkuc3R5bGUucG9zaXRpb24gPSAiYWJzb2x1dGUiOwoJCSQob3ZlcmxheSkuY3NzKCJvcGFjaXR5Iiwgb3B0aW9ucy5vdmVybGF5T3BhY2l0eSkuZmFkZUluKG9wdGlvbnMub3ZlcmxheUZhZGVEdXJhdGlvbik7CgkJcG9zaXRpb24oKTsKCQlzZXR1cCgxKTsKCgkJaW1hZ2VzID0gX2ltYWdlczsKCQlvcHRpb25zLmxvb3AgPSBvcHRpb25zLmxvb3AgJiYgKGltYWdlcy5sZW5ndGggPiAxKTsKCQlyZXR1cm4gY2hhbmdlSW1hZ2Uoc3RhcnRJbWFnZSk7Cgl9OwoKCS8qCgkJb3B0aW9uczoJT3B0aW9uYWwgb3B0aW9ucyBvYmplY3QsIHNlZSBqUXVlcnkuc2xpbWJveCgpCgkJbGlua01hcHBlcjoJT3B0aW9uYWwgZnVuY3Rpb24gdGFraW5nIGEgbGluayBET00gZWxlbWVudCBhbmQgYW4gaW5kZXggYXMgYXJndW1lbnRzIGFuZCByZXR1cm5pbmcgYW4gYXJyYXkgY29udGFpbmluZyAyIGVsZW1lbnRzOgoJCQkJdGhlIGltYWdlIFVSTCBhbmQgdGhlIGltYWdlIGNhcHRpb24gKG1heSBjb250YWluIEhUTUwpCgkJbGlua3NGaWx0ZXI6CU9wdGlvbmFsIGZ1bmN0aW9uIHRha2luZyBhIGxpbmsgRE9NIGVsZW1lbnQgYW5kIGFuIGluZGV4IGFzIGFyZ3VtZW50cyBhbmQgcmV0dXJuaW5nIHRydWUgaWYgdGhlIGVsZW1lbnQgaXMgcGFydCBvZgoJCQkJdGhlIGltYWdlIGNvbGxlY3Rpb24gdGhhdCB3aWxsIGJlIHNob3duIG9uIGNsaWNrLCBmYWxzZSBpZiBub3QuICJ0aGlzIiByZWZlcnMgdG8gdGhlIGVsZW1lbnQgdGhhdCB3YXMgY2xpY2tlZC4KCQkJCVRoaXMgZnVuY3Rpb24gbXVzdCBhbHdheXMgcmV0dXJuIHRydWUgd2hlbiB0aGUgRE9NIGVsZW1lbnQgYXJndW1lbnQgaXMgInRoaXMiLgoJKi8KCSQuZm4uc2xpbWJveCA9IGZ1bmN0aW9uKF9vcHRpb25zLCBsaW5rTWFwcGVyLCBsaW5rc0ZpbHRlcikgewoJCWxpbmtNYXBwZXIgPSBsaW5rTWFwcGVyIHx8IGZ1bmN0aW9uKGVsKSB7CgkJCXJldHVybiBbZWwuaHJlZiwgZWwudGl0bGVdOwoJCX07CgoJCWxpbmtzRmlsdGVyID0gbGlua3NGaWx0ZXIgfHwgZnVuY3Rpb24oKSB7CgkJCXJldHVybiB0cnVlOwoJCX07CgoJCXZhciBsaW5rcyA9IHRoaXM7CgoJCXJldHVybiBsaW5rcy51bmJpbmQoImNsaWNrIikuY2xpY2soZnVuY3Rpb24oKSB7CgkJCS8vIEJ1aWxkIHRoZSBsaXN0IG9mIGltYWdlcyB0aGF0IHdpbGwgYmUgZGlzcGxheWVkCgkJCXZhciBsaW5rID0gdGhpcywgc3RhcnRJbmRleCA9IDAsIGZpbHRlcmVkTGlua3MsIGkgPSAwLCBsZW5ndGg7CgkJCWZpbHRlcmVkTGlua3MgPSAkLmdyZXAobGlua3MsIGZ1bmN0aW9uKGVsLCBpKSB7CgkJCQlyZXR1cm4gbGlua3NGaWx0ZXIuY2FsbChsaW5rLCBlbCwgaSk7CgkJCX0pOwoKCQkJLy8gV2UgY2Fubm90IHVzZSBqUXVlcnkubWFwKCkgYmVjYXVzZSBpdCBmbGF0dGVucyB0aGUgcmV0dXJuZWQgYXJyYXkKCQkJZm9yIChsZW5ndGggPSBmaWx0ZXJlZExpbmtzLmxlbmd0aDsgaSA8IGxlbmd0aDsgKytpKSB7CgkJCQlpZiAoZmlsdGVyZWRMaW5rc1tpXSA9PSBsaW5rKSBzdGFydEluZGV4ID0gaTsKCQkJCWZpbHRlcmVkTGlua3NbaV0gPSBsaW5rTWFwcGVyKGZpbHRlcmVkTGlua3NbaV0sIGkpOwoJCQl9CgoJCQlyZXR1cm4gJC5zbGltYm94KGZpbHRlcmVkTGlua3MsIHN0YXJ0SW5kZXgsIF9vcHRpb25zKTsKCQl9KTsKCX07CgoKCS8qCgkJSW50ZXJuYWwgZnVuY3Rpb25zCgkqLwoKCWZ1bmN0aW9uIHBvc2l0aW9uKCkgewoJCXZhciBsID0gd2luLnNjcm9sbExlZnQoKSwgdyA9IG9wZXJhRml4ID8gZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoIDogd2luLndpZHRoKCk7CgkJJChbY2VudGVyLCBib3R0b21Db250YWluZXJdKS5jc3MoImxlZnQiLCBsICsgKHcgLyAyKSk7CgkJaWYgKGNvbXBhdGlibGVPdmVybGF5KSAkKG92ZXJsYXkpLmNzcyh7bGVmdDogbCwgdG9wOiB3aW4uc2Nyb2xsVG9wKCksIHdpZHRoOiB3LCBoZWlnaHQ6IHdpbi5oZWlnaHQoKX0pOwoJfQoKCWZ1bmN0aW9uIHNldHVwKG9wZW4pIHsKCQkkKCJvYmplY3QiKS5hZGQoaWU2ID8gInNlbGVjdCIgOiAiZW1iZWQiKS5lYWNoKGZ1bmN0aW9uKGluZGV4LCBlbCkgewoJCQlpZiAob3BlbikgJC5kYXRhKGVsLCAic2xpbWJveCIsIGVsLnN0eWxlLnZpc2liaWxpdHkpOwoJCQllbC5zdHlsZS52aXNpYmlsaXR5ID0gb3BlbiA/ICJoaWRkZW4iIDogJC5kYXRhKGVsLCAic2xpbWJveCIpOwoJCX0pOwoJCXZhciBmbiA9IG9wZW4gPyAiYmluZCIgOiAidW5iaW5kIjsKCQl3aW5bZm5dKCJzY3JvbGwgcmVzaXplIiwgcG9zaXRpb24pOwoJCSQoZG9jdW1lbnQpW2ZuXSgia2V5ZG93biIsIGtleURvd24pOwoJfQoKCWZ1bmN0aW9uIGtleURvd24oZXZlbnQpIHsKCQl2YXIgY29kZSA9IGV2ZW50LmtleUNvZGUsIGZuID0gJC5pbkFycmF5OwoJCS8vIFByZXZlbnQgZGVmYXVsdCBrZXlib2FyZCBhY3Rpb24gKGxpa2UgbmF2aWdhdGluZyBpbnNpZGUgdGhlIHBhZ2UpCgkJcmV0dXJuIChmbihjb2RlLCBvcHRpb25zLmNsb3NlS2V5cykgPj0gMCkgPyBjbG9zZSgpCgkJCTogKGZuKGNvZGUsIG9wdGlvbnMubmV4dEtleXMpID49IDApID8gbmV4dCgpCgkJCTogKGZuKGNvZGUsIG9wdGlvbnMucHJldmlvdXNLZXlzKSA+PSAwKSA/IHByZXZpb3VzKCkKCQkJOiBmYWxzZTsKCX0KCglmdW5jdGlvbiBwcmV2aW91cygpIHsKCQlyZXR1cm4gY2hhbmdlSW1hZ2UocHJldkltYWdlKTsKCX0KCglmdW5jdGlvbiBuZXh0KCkgewoJCXJldHVybiBjaGFuZ2VJbWFnZShuZXh0SW1hZ2UpOwoJfQoKCWZ1bmN0aW9uIGNoYW5nZUltYWdlKGltYWdlSW5kZXgpIHsKCQlpZiAoaW1hZ2VJbmRleCA+PSAwKSB7CgkJCWFjdGl2ZUltYWdlID0gaW1hZ2VJbmRleDsKCQkJYWN0aXZlVVJMID0gaW1hZ2VzW2FjdGl2ZUltYWdlXVswXTsKCQkJcHJldkltYWdlID0gKGFjdGl2ZUltYWdlIHx8IChvcHRpb25zLmxvb3AgPyBpbWFnZXMubGVuZ3RoIDogMCkpIC0gMTsKCQkJbmV4dEltYWdlID0gKChhY3RpdmVJbWFnZSArIDEpICUgaW1hZ2VzLmxlbmd0aCkgfHwgKG9wdGlvbnMubG9vcCA/IDAgOiAtMSk7CgoJCQlzdG9wKCk7CgkJCWNlbnRlci5jbGFzc05hbWUgPSAibGJMb2FkaW5nIjsKCgkJCXByZWxvYWQgPSBuZXcgSW1hZ2UoKTsKCQkJcHJlbG9hZC5vbmxvYWQgPSBhbmltYXRlQm94OwoJCQlwcmVsb2FkLnNyYyA9IGFjdGl2ZVVSTDsKCQl9CgoJCXJldHVybiBmYWxzZTsKCX0KCglmdW5jdGlvbiBhbmltYXRlQm94KCkgewoJCWNlbnRlci5jbGFzc05hbWUgPSAiIjsKCQkkKGltYWdlKS5jc3Moe2JhY2tncm91bmRJbWFnZTogInVybCgiICsgYWN0aXZlVVJMICsgIikiLCB2aXNpYmlsaXR5OiAiaGlkZGVuIiwgZGlzcGxheTogIiJ9KTsKCQkkKHNpemVyKS53aWR0aChwcmVsb2FkLndpZHRoKTsKCQkkKFtzaXplciwgcHJldkxpbmssIG5leHRMaW5rXSkuaGVpZ2h0KHByZWxvYWQuaGVpZ2h0KTsKCgkJJChjYXB0aW9uKS5odG1sKGltYWdlc1thY3RpdmVJbWFnZV1bMV0gfHwgIiIpOwoJCSQobnVtYmVyKS5odG1sKCgoKGltYWdlcy5sZW5ndGggPiAxKSAmJiBvcHRpb25zLmNvdW50ZXJUZXh0KSB8fCAiIikucmVwbGFjZSgve3h9LywgYWN0aXZlSW1hZ2UgKyAxKS5yZXBsYWNlKC97eX0vLCBpbWFnZXMubGVuZ3RoKSk7CgoJCWlmIChwcmV2SW1hZ2UgPj0gMCkgcHJlbG9hZFByZXYuc3JjID0gaW1hZ2VzW3ByZXZJbWFnZV1bMF07CgkJaWYgKG5leHRJbWFnZSA+PSAwKSBwcmVsb2FkTmV4dC5zcmMgPSBpbWFnZXNbbmV4dEltYWdlXVswXTsKCgkJY2VudGVyV2lkdGggPSBpbWFnZS5vZmZzZXRXaWR0aDsKCQljZW50ZXJIZWlnaHQgPSBpbWFnZS5vZmZzZXRIZWlnaHQ7CgkJdmFyIHRvcCA9IE1hdGgubWF4KDAsIG1pZGRsZSAtIChjZW50ZXJIZWlnaHQgLyAyKSk7CgkJaWYgKGNlbnRlci5vZmZzZXRIZWlnaHQgIT0gY2VudGVySGVpZ2h0KSB7CgkJCSQoY2VudGVyKS5hbmltYXRlKHtoZWlnaHQ6IGNlbnRlckhlaWdodCwgdG9wOiB0b3B9LCBvcHRpb25zLnJlc2l6ZUR1cmF0aW9uLCBvcHRpb25zLnJlc2l6ZUVhc2luZyk7CgkJfQoJCWlmIChjZW50ZXIub2Zmc2V0V2lkdGggIT0gY2VudGVyV2lkdGgpIHsKCQkJJChjZW50ZXIpLmFuaW1hdGUoe3dpZHRoOiBjZW50ZXJXaWR0aCwgbWFyZ2luTGVmdDogLWNlbnRlcldpZHRoLzJ9LCBvcHRpb25zLnJlc2l6ZUR1cmF0aW9uLCBvcHRpb25zLnJlc2l6ZUVhc2luZyk7CgkJfQoJCSQoY2VudGVyKS5xdWV1ZShmdW5jdGlvbigpIHsKCQkJJChib3R0b21Db250YWluZXIpLmNzcyh7d2lkdGg6IGNlbnRlcldpZHRoLCB0b3A6IHRvcCArIGNlbnRlckhlaWdodCwgbWFyZ2luTGVmdDogLWNlbnRlcldpZHRoLzIsIHZpc2liaWxpdHk6ICJoaWRkZW4iLCBkaXNwbGF5OiAiIn0pOwoJCQkkKGltYWdlKS5jc3Moe2Rpc3BsYXk6ICJub25lIiwgdmlzaWJpbGl0eTogIiIsIG9wYWNpdHk6ICIifSkuZmFkZUluKG9wdGlvbnMuaW1hZ2VGYWRlRHVyYXRpb24sIGFuaW1hdGVDYXB0aW9uKTsKCQl9KTsKCX0KCglmdW5jdGlvbiBhbmltYXRlQ2FwdGlvbigpIHsKCQlpZiAocHJldkltYWdlID49IDApICQocHJldkxpbmspLnNob3coKTsKCQlpZiAobmV4dEltYWdlID49IDApICQobmV4dExpbmspLnNob3coKTsKCQkkKGJvdHRvbSkuY3NzKCJtYXJnaW5Ub3AiLCAtYm90dG9tLm9mZnNldEhlaWdodCkuYW5pbWF0ZSh7bWFyZ2luVG9wOiAwfSwgb3B0aW9ucy5jYXB0aW9uQW5pbWF0aW9uRHVyYXRpb24pOwoJCWJvdHRvbUNvbnRhaW5lci5zdHlsZS52aXNpYmlsaXR5ID0gIiI7Cgl9CgoJZnVuY3Rpb24gc3RvcCgpIHsKCQlwcmVsb2FkLm9ubG9hZCA9IG51bGw7CgkJcHJlbG9hZC5zcmMgPSBwcmVsb2FkUHJldi5zcmMgPSBwcmVsb2FkTmV4dC5zcmMgPSBhY3RpdmVVUkw7CgkJJChbY2VudGVyLCBpbWFnZSwgYm90dG9tXSkuc3RvcCh0cnVlKTsKCQkkKFtwcmV2TGluaywgbmV4dExpbmssIGltYWdlLCBib3R0b21Db250YWluZXJdKS5oaWRlKCk7Cgl9CgoJZnVuY3Rpb24gY2xvc2UoKSB7CgkJaWYgKGFjdGl2ZUltYWdlID49IDApIHsKCQkJc3RvcCgpOwoJCQlhY3RpdmVJbWFnZSA9IHByZXZJbWFnZSA9IG5leHRJbWFnZSA9IC0xOwoJCQkkKGNlbnRlcikuaGlkZSgpOwoJCQkkKG92ZXJsYXkpLnN0b3AoKS5mYWRlT3V0KG9wdGlvbnMub3ZlcmxheUZhZGVEdXJhdGlvbiwgc2V0dXApOwoJCX0KCgkJcmV0dXJuIGZhbHNlOwoJfQoKfSkoalF1ZXJ5KTs=]]></data>
	</file>
	<file>
	  <filename>/templates/template_fancybox.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBGYW5jeWJveCAgLSAgaHR0cDovL3d3dy5mYW5jeWJveC5uZXQvIC0tPg0KDQo8ZGl2IGNsYXNzPSJnYWxsZXJ5Ij4NCntpZiAhZW1wdHkoJG1vZHVsZV9tZXNzYWdlKX08aDQ+eyRtb2R1bGVfbWVzc2FnZXxlc2NhcGV9PC9oND57L2lmfQ0Ke2lmICFlbXB0eSgkZ2FsbGVyeXRpdGxlKX08aDM+eyRnYWxsZXJ5dGl0bGV9PC9oMz57L2lmfQ0Ke2lmICFlbXB0eSgkZ2FsbGVyeWNvbW1lbnQpfTxkaXYgY2xhc3M9ImdhbGxlcnljb21tZW50Ij57JGdhbGxlcnljb21tZW50fTwvZGl2PnsvaWZ9DQo8cD57JGltYWdlY291bnR9PC9wPg0KPGRpdiBjbGFzcz0icGFnZW5hdmlnYXRpb24iPg0Ke2lmICRwYWdlcyA+IDF9DQo8ZGl2IGNsYXNzPSJwcmV2cGFnZSI+eyRwcmV2cGFnZX08L2Rpdj4NCjxkaXYgY2xhc3M9Im5leHRwYWdlIj57JG5leHRwYWdlfTwvZGl2Pg0Key9pZn0NCntpZiAhJGhpZGVwYXJlbnRsaW5rICYmICFlbXB0eSgkcGFyZW50bGluayl9PGRpdiBjbGFzcz0icGFyZW50bGluayI+eyRwYXJlbnRsaW5rfTwvZGl2PnsvaWZ9DQp7aWYgJHBhZ2VzID4gMX08ZGl2IGNsYXNzPSJwYWdlbGlua3MiPnskcGFnZWxpbmtzfTwvZGl2PnsvaWZ9DQo8L2Rpdj4NCg0Ke2ZvcmVhY2ggZnJvbT0kaW1hZ2VzIGl0ZW09aW1hZ2V9DQoJPGRpdiBjbGFzcz0iaW1nIj4NCgl7aWYgJGltYWdlLT5pc2Rpcn0NCgkJPGEgaHJlZj0ieyRpbWFnZS0+ZmlsZX0iIHRpdGxlPSJ7JGltYWdlLT50aXRsZX0iPjxpbWcgc3JjPSJ7JGltYWdlLT50aHVtYn0iIGFsdD0ieyRpbWFnZS0+dGl0bGV9IiAvPjwvYT48YnIgLz4NCgkJeyRpbWFnZS0+dGl0bGV9DQoJe2Vsc2V9DQogICA8YSBjbGFzcz0iZ3JvdXAiIGhyZWY9InskaW1hZ2UtPmZpbGV9IiB0aXRsZT0ieyRpbWFnZS0+dGl0bGV9IiByZWw9ImdhbGxlcnkiPjxpbWcgc3JjPSJ7JGltYWdlLT50aHVtYn0iIGFsdD0ieyRpbWFnZS0+dGl0bGV9IiAvPjwvYT4NCgl7L2lmfQ0KCTwvZGl2Pg0Key9mb3JlYWNofQ0KPGRpdiBjbGFzcz0iZ2FsbGVyeWNsZWFyIj4mbmJzcDs8L2Rpdj4NCjwvZGl2Pg0KDQoNCnsqLS0tLS0tLS0tLQ0KLmdhbGxlcnljbGVhciB7DQoJY2xlYXI6IGJvdGg7DQp9DQoNCi5nYWxsZXJ5IC5pbWcgew0KCWZsb2F0OiBsZWZ0Ow0KCW1hcmdpbjogM3B4Ow0KCXRleHQtYWxpZ246IGNlbnRlcjsNCn0NCg0KLmdhbGxlcnkgLnBhZ2VuYXZpZ2F0aW9uIHsNCgloZWlnaHQ6IDUwcHg7DQp9DQoNCi5nYWxsZXJ5IC5wcmV2cGFnZSBhLCAuZ2FsbGVyeSAucHJldnBhZ2UgZW0gew0KCWRpc3BsYXk6IGJsb2NrOw0KCXdpZHRoOiA1MHB4Ow0KCWhlaWdodDogMzlweDsNCglmbG9hdDogbGVmdDsNCgltYXJnaW46IDA7DQoJdGV4dC1pbmRlbnQ6IC0xMDAwcHg7DQoJYmFja2dyb3VuZDogdXJsKC4uLy4uL2ltYWdlcy9wcmV2aW91cy5wbmcpIHRyYW5zcGFyZW50IG5vLXJlcGVhdCAwIDA7DQp9DQoNCi5nYWxsZXJ5IC5uZXh0cGFnZSBhLCAuZ2FsbGVyeSAubmV4dHBhZ2UgZW0gew0KCWRpc3BsYXk6IGJsb2NrOw0KCXdpZHRoOiA1MHB4Ow0KCWhlaWdodDogMzlweDsNCglmbG9hdDogbGVmdDsNCgltYXJnaW46IDAgNnB4IDAgMDsNCgl0ZXh0LWluZGVudDogLTEwMDBweDsNCgliYWNrZ3JvdW5kOiB1cmwoLi4vLi4vaW1hZ2VzL25leHQucG5nKSB0cmFuc3BhcmVudCBuby1yZXBlYXQgMCAwOw0KfQ0KDQouZ2FsbGVyeSAucGFyZW50bGluayBhIHsNCglkaXNwbGF5OiBibG9jazsNCgl3aWR0aDogNTBweDsNCgloZWlnaHQ6IDM5cHg7DQoJZmxvYXQ6IGxlZnQ7DQoJdGV4dC1pbmRlbnQ6IC0xMDAwcHg7DQoJYmFja2dyb3VuZDogdXJsKC4uLy4uL2ltYWdlcy91cHBhZ2UucG5nKSB0cmFuc3BhcmVudCBuby1yZXBlYXQgMCAwOw0KfQ0KDQouZ2FsbGVyeSAucGFnZW5hdmlnYXRpb24gYTpob3ZlciB7DQoJYmFja2dyb3VuZC1wb3NpdGlvbjogMCAtNDBweDsNCn0NCg0KLmdhbGxlcnkgLnByZXZwYWdlIGVtLCAuZ2FsbGVyeSAubmV4dHBhZ2UgZW0gew0KCWJhY2tncm91bmQtcG9zaXRpb246IDAgLTgwcHg7DQp9DQoNCi5nYWxsZXJ5IC5wYWdlbGlua3Mgew0KCWZsb2F0OiByaWdodDsNCglib3JkZXItcmlnaHQ6IDJweCBzb2xpZCAjNjY2Ow0KfQ0KDQouZ2FsbGVyeSAucGFnZWxpbmtzIGEsIC5nYWxsZXJ5IC5wYWdlbGlua3MgZW0gew0KCW1hcmdpbi10b3A6IDZweDsNCglwYWRkaW5nOiAwIDZweDsNCglib3JkZXItbGVmdDogMnB4IHNvbGlkICM2NjY7DQoJdGV4dC1hbGlnbjogY2VudGVyOw0KCWZvbnQ6IGJvbGQgMTFweCB2ZXJkYW5hOyBjb2xvcjogIzY2NjsNCn0NCg0KLmdhbGxlcnkgLnBhZ2VsaW5rcyBlbSB7DQoJY29sb3I6ICMwMDA7DQp9DQoNCg0KLyogRkFOQ1lCT1ggKi8NCg0KZGl2I2ZhbmN5X292ZXJsYXkgew0KCXBvc2l0aW9uOiBmaXhlZDsNCgl0b3A6IDA7DQoJbGVmdDogMDsNCgl3aWR0aDogMTAwJTsNCgloZWlnaHQ6IDEwMCU7DQoJYmFja2dyb3VuZC1jb2xvcjogIzY2NjsNCglkaXNwbGF5OiBub25lOw0KCXotaW5kZXg6IDMwOw0KfQ0KDQoqIGh0bWwgZGl2I2ZhbmN5X292ZXJsYXkgew0KCXBvc2l0aW9uOiBhYnNvbHV0ZTsNCgloZWlnaHQ6IGV4cHJlc3Npb24oZG9jdW1lbnQuYm9keS5zY3JvbGxIZWlnaHQgPiBkb2N1bWVudC5ib2R5Lm9mZnNldEhlaWdodCA/IGRvY3VtZW50LmJvZHkuc2Nyb2xsSGVpZ2h0IDogZG9jdW1lbnQuYm9keS5vZmZzZXRIZWlnaHQgKyAncHgnKTsNCn0NCg0KZGl2I2ZhbmN5X3dyYXAgew0KCXRleHQtYWxpZ246IGxlZnQ7DQp9DQoNCmRpdiNmYW5jeV9sb2FkaW5nIHsNCglwb3NpdGlvbjogYWJzb2x1dGU7DQoJaGVpZ2h0OiA0MHB4Ow0KCXdpZHRoOiA0MHB4Ow0KCWN1cnNvcjogcG9pbnRlcjsNCglkaXNwbGF5OiBub25lOw0KCW92ZXJmbG93OiBoaWRkZW47DQoJYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7DQoJei1pbmRleDogMTAwOw0KfQ0KDQpkaXYjZmFuY3lfbG9hZGluZyBkaXYgew0KCXBvc2l0aW9uOiBhYnNvbHV0ZTsNCgl0b3A6IDA7DQoJbGVmdDogMDsNCgl3aWR0aDogNDBweDsNCgloZWlnaHQ6IDQ4MHB4Ow0KCWJhY2tncm91bmQ6IHRyYW5zcGFyZW50IHVybCgnLi4vZmFuY3lib3gvZmFuY3lfcHJvZ3Jlc3MucG5nJykgbm8tcmVwZWF0Ow0KfQ0KDQpkaXYjZmFuY3lfbG9hZGluZ19vdmVybGF5IHsNCglwb3NpdGlvbjogYWJzb2x1dGU7DQoJYmFja2dyb3VuZC1jb2xvcjogI0ZGRjsNCgl6LWluZGV4OiAzMDsNCn0NCg0KZGl2I2ZhbmN5X2xvYWRpbmdfaWNvbiB7DQoJcG9zaXRpb246IGFic29sdXRlOw0KCWJhY2tncm91bmQ6IHVybCgnLi4vZmFuY3lib3gvZmFuY3lfbG9hZGluZy5naWYnKSBuby1yZXBlYXQ7DQoJei1pbmRleDogMzU7DQoJd2lkdGg6IDE2cHg7DQoJaGVpZ2h0OiAxNnB4Ow0KfQ0KDQpkaXYjZmFuY3lfb3V0ZXIgew0KCXBvc2l0aW9uOiBhYnNvbHV0ZTsNCgl0b3A6IDA7DQoJbGVmdDogMDsNCgl6LWluZGV4OiA5MDsNCglwYWRkaW5nOiAxOHB4IDE4cHggMzNweCAxOHB4Ow0KCW1hcmdpbjogMDsNCglvdmVyZmxvdzogaGlkZGVuOw0KCWJhY2tncm91bmQ6IHRyYW5zcGFyZW50Ow0KCWRpc3BsYXk6IG5vbmU7DQp9DQoNCmRpdiNmYW5jeV9pbm5lciB7DQoJcG9zaXRpb246IHJlbGF0aXZlOw0KCXdpZHRoOjEwMCU7DQoJaGVpZ2h0OjEwMCU7DQoJYm9yZGVyOiAxcHggc29saWQgI0JCQjsNCgliYWNrZ3JvdW5kOiAjMDAwOw0KfQ0KDQpkaXYjZmFuY3lfY29udGVudCB7DQoJbWFyZ2luOiAwOw0KCXotaW5kZXg6IDEwMDsNCglwb3NpdGlvbjogYWJzb2x1dGU7DQp9DQoNCmRpdiNmYW5jeV9kaXYgew0KCWJhY2tncm91bmQ6ICMwMDA7DQoJY29sb3I6ICNGRkY7DQoJaGVpZ2h0OiAxMDAlOw0KCXdpZHRoOiAxMDAlOw0KCXotaW5kZXg6IDEwMDsNCn0NCg0KaW1nI2ZhbmN5X2ltZyB7DQoJcG9zaXRpb246IGFic29sdXRlOw0KCXRvcDogMDsNCglsZWZ0OiAwOw0KCWJvcmRlcjowOw0KCXBhZGRpbmc6IDA7DQoJbWFyZ2luOiAwOw0KCXotaW5kZXg6IDEwMDsNCgl3aWR0aDogMTAwJTsNCgloZWlnaHQ6IDEwMCU7DQp9DQoNCmRpdiNmYW5jeV9jbG9zZSB7DQoJcG9zaXRpb246IGFic29sdXRlOw0KCXRvcDogLTEycHg7DQoJcmlnaHQ6IC0xNXB4Ow0KCWhlaWdodDogMzBweDsNCgl3aWR0aDogMzBweDsNCgliYWNrZ3JvdW5kOiB1cmwoJy4uL2ZhbmN5Ym94L2ZhbmN5X2Nsb3NlYm94LnBuZycpIHRvcCBsZWZ0IG5vLXJlcGVhdDsNCgljdXJzb3I6IHBvaW50ZXI7DQoJei1pbmRleDogMTgxOw0KCWRpc3BsYXk6IG5vbmU7DQp9DQoNCiNmYW5jeV9mcmFtZSB7DQoJcG9zaXRpb246IHJlbGF0aXZlOw0KCXdpZHRoOiAxMDAlOw0KCWhlaWdodDogMTAwJTsNCglkaXNwbGF5OiBub25lOw0KfQ0KDQojZmFuY3lfYWpheCB7DQoJd2lkdGg6IDEwMCU7DQoJaGVpZ2h0OiAxMDAlOw0KCW92ZXJmbG93OiBhdXRvOw0KfQ0KDQphI2ZhbmN5X2xlZnQsIGEjZmFuY3lfcmlnaHQgew0KCXBvc2l0aW9uOiBhYnNvbHV0ZTsNCglib3R0b206IDBweDsNCgloZWlnaHQ6IDEwMCU7DQoJd2lkdGg6IDM1JTsNCgljdXJzb3I6IHBvaW50ZXI7DQoJei1pbmRleDogMTExOw0KCWRpc3BsYXk6IG5vbmU7DQoJYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgdXJsKGRhdGE6aW1hZ2UvZ2lmO2Jhc2U2NCxBQUFBKTsNCglvdXRsaW5lOiBub25lOw0KfQ0KDQphI2ZhbmN5X2xlZnQgew0KCWxlZnQ6IDBweDsNCn0NCg0KYSNmYW5jeV9yaWdodCB7DQoJcmlnaHQ6IDBweDsNCn0NCg0Kc3Bhbi5mYW5jeV9pY28gew0KCXBvc2l0aW9uOiBhYnNvbHV0ZTsNCgl0b3A6IDUwJTsNCgltYXJnaW4tdG9wOiAtMTVweDsNCgl3aWR0aDogMzBweDsNCgloZWlnaHQ6IDMwcHg7DQoJei1pbmRleDogMTEyOw0KCWN1cnNvcjogcG9pbnRlcjsNCglkaXNwbGF5OiBibG9jazsNCn0NCg0Kc3BhbiNmYW5jeV9sZWZ0X2ljbyB7DQoJbGVmdDogLTk5OTlweDsNCgliYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCB1cmwoJy4uL2ZhbmN5Ym94L2ZhbmN5X2xlZnQucG5nJykgbm8tcmVwZWF0Ow0KfQ0KDQpzcGFuI2ZhbmN5X3JpZ2h0X2ljbyB7DQoJcmlnaHQ6IC05OTk5cHg7DQoJYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgdXJsKCcuLi9mYW5jeWJveC9mYW5jeV9yaWdodC5wbmcnKSBuby1yZXBlYXQ7DQp9DQoNCmEjZmFuY3lfbGVmdDpob3ZlciB7DQogIHZpc2liaWxpdHk6IHZpc2libGU7DQp9DQoNCmEjZmFuY3lfcmlnaHQ6aG92ZXIgew0KICB2aXNpYmlsaXR5OiB2aXNpYmxlOw0KfQ0KDQphI2ZhbmN5X2xlZnQ6aG92ZXIgc3BhbiB7DQoJbGVmdDogMjBweDsNCn0NCg0KYSNmYW5jeV9yaWdodDpob3ZlciBzcGFuIHsNCglyaWdodDogMjBweDsNCn0NCg0KLmZhbmN5X2JpZ0lmcmFtZSB7DQoJcG9zaXRpb246IGFic29sdXRlOw0KCXRvcDogMDsNCglsZWZ0OiAwOw0KCXdpZHRoOiAxMDAlOw0KCWhlaWdodDogMTAwJTsNCgliYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsNCn0NCg0KZGl2I2ZhbmN5X2JnIHsNCglwb3NpdGlvbjogYWJzb2x1dGU7DQoJdG9wOiAwOyBsZWZ0OiAwOw0KCXdpZHRoOiAxMDAlOw0KCWhlaWdodDogMTAwJTsNCgl6LWluZGV4OiA3MDsNCglib3JkZXI6IDA7DQoJcGFkZGluZzogMDsNCgltYXJnaW46IDA7DQp9DQoNCmRpdi5mYW5jeV9iZyB7DQoJcG9zaXRpb246IGFic29sdXRlOw0KCWRpc3BsYXk6IGJsb2NrOw0KCXotaW5kZXg6IDcwOw0KCWJvcmRlcjogMDsNCglwYWRkaW5nOiAwOw0KCW1hcmdpbjogMDsNCn0NCg0KZGl2LmZhbmN5X2JnX24gew0KCXRvcDogLTE4cHg7DQoJd2lkdGg6IDEwMCU7DQoJaGVpZ2h0OiAxOHB4Ow0KCWJhY2tncm91bmQ6IHRyYW5zcGFyZW50IHVybCgnLi4vZmFuY3lib3gvZmFuY3lfc2hhZG93X24ucG5nJykgcmVwZWF0LXg7DQp9DQoNCmRpdi5mYW5jeV9iZ19uZSB7DQoJdG9wOiAtMThweDsNCglyaWdodDogLTEzcHg7DQoJd2lkdGg6IDEzcHg7DQoJaGVpZ2h0OiAxOHB4Ow0KCWJhY2tncm91bmQ6IHRyYW5zcGFyZW50IHVybCgnLi4vZmFuY3lib3gvZmFuY3lfc2hhZG93X25lLnBuZycpIG5vLXJlcGVhdDsNCn0NCg0KZGl2LmZhbmN5X2JnX2Ugew0KCXJpZ2h0OiAtMTNweDsNCgloZWlnaHQ6IDEwMCU7DQoJd2lkdGg6IDEzcHg7DQoJYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgdXJsKCcuLi9mYW5jeWJveC9mYW5jeV9zaGFkb3dfZS5wbmcnKSByZXBlYXQteTsNCn0NCg0KZGl2LmZhbmN5X2JnX3NlIHsNCglib3R0b206IC0xOHB4Ow0KCXJpZ2h0OiAtMTNweDsNCgl3aWR0aDogMTNweDsNCgloZWlnaHQ6IDE4cHg7DQoJYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgdXJsKCcuLi9mYW5jeWJveC9mYW5jeV9zaGFkb3dfc2UucG5nJykgbm8tcmVwZWF0Ow0KfQ0KDQpkaXYuZmFuY3lfYmdfcyB7DQoJYm90dG9tOiAtMThweDsNCgl3aWR0aDogMTAwJTsNCgloZWlnaHQ6IDE4cHg7DQoJYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgdXJsKCcuLi9mYW5jeWJveC9mYW5jeV9zaGFkb3dfcy5wbmcnKSByZXBlYXQteDsNCn0NCg0KZGl2LmZhbmN5X2JnX3N3IHsNCglib3R0b206IC0xOHB4Ow0KCWxlZnQ6IC0xM3B4Ow0KCXdpZHRoOiAxM3B4Ow0KCWhlaWdodDogMThweDsNCgliYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCB1cmwoJy4uL2ZhbmN5Ym94L2ZhbmN5X3NoYWRvd19zdy5wbmcnKSBuby1yZXBlYXQ7DQp9DQoNCmRpdi5mYW5jeV9iZ193IHsNCglsZWZ0OiAtMTNweDsNCgloZWlnaHQ6IDEwMCU7DQoJd2lkdGg6IDEzcHg7DQoJYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgdXJsKCcuLi9mYW5jeWJveC9mYW5jeV9zaGFkb3dfdy5wbmcnKSByZXBlYXQteTsNCn0NCg0KZGl2LmZhbmN5X2JnX253IHsNCgl0b3A6IC0xOHB4Ow0KCWxlZnQ6IC0xM3B4Ow0KCXdpZHRoOiAxM3B4Ow0KCWhlaWdodDogMThweDsNCgliYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCB1cmwoJy4uL2ZhbmN5Ym94L2ZhbmN5X3NoYWRvd19udy5wbmcnKSBuby1yZXBlYXQ7DQp9DQoNCmRpdiNmYW5jeV90aXRsZSB7DQoJcG9zaXRpb246IGFic29sdXRlOw0KCWJvdHRvbTogLTMzcHg7DQoJbGVmdDogMDsNCgl3aWR0aDogMTAwJTsNCgl6LWluZGV4OiAxMDA7DQoJZGlzcGxheTogbm9uZTsNCn0NCg0KZGl2I2ZhbmN5X3RpdGxlIGRpdiB7DQoJY29sb3I6ICNGRkY7DQoJZm9udDogYm9sZCAxMnB4IEFyaWFsOw0KCXBhZGRpbmctYm90dG9tOiAzcHg7DQp9DQoNCmRpdiNmYW5jeV90aXRsZSB0YWJsZSB7DQoJbWFyZ2luOiAwIGF1dG87DQp9DQoNCmRpdiNmYW5jeV90aXRsZSB0YWJsZSB0ciB7DQoJYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7DQp9DQoNCmRpdiNmYW5jeV90aXRsZSB0YWJsZSB0ZCB7DQoJcGFkZGluZzogMDsNCgl2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOw0KCWJvcmRlcjogbm9uZTsNCn0NCg0KdGQjZmFuY3lfdGl0bGVfbGVmdCB7DQoJaGVpZ2h0OiAzMnB4Ow0KCXdpZHRoOiAxNHB4Ow0KCWJhY2tncm91bmQ6IHRyYW5zcGFyZW50IHVybCguLi9mYW5jeWJveC9mYW5jeV90aXRsZV9sZWZ0LnBuZykgcmVwZWF0LXg7DQp9DQoNCnRkI2ZhbmN5X3RpdGxlX21haW4gew0KCWhlaWdodDogMzJweDsNCgliYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCB1cmwoLi4vZmFuY3lib3gvZmFuY3lfdGl0bGVfbWFpbi5wbmcpIHJlcGVhdC14Ow0KfQ0KDQp0ZCNmYW5jeV90aXRsZV9yaWdodCB7DQoJaGVpZ2h0OiAzMnB4Ow0KCXdpZHRoOiAxNHB4Ow0KCWJhY2tncm91bmQ6IHRyYW5zcGFyZW50IHVybCguLi9mYW5jeWJveC9mYW5jeV90aXRsZV9yaWdodC5wbmcpIHJlcGVhdC14Ow0KfQ0KDQp7Ki0tLS0tLS0tLS0NCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Im1vZHVsZXMvR2FsbGVyeS90ZW1wbGF0ZXMvanF1ZXJ5L2pxdWVyeS5qcyI+PC9zY3JpcHQ+DQo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJtb2R1bGVzL0dhbGxlcnkvdGVtcGxhdGVzL2ZhbmN5Ym94L2pxdWVyeS5mYW5jeWJveC5qcyI+PC9zY3JpcHQ+DQo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJtb2R1bGVzL0dhbGxlcnkvdGVtcGxhdGVzL2pxdWVyeS9qcXVlcnkuZWFzaW5nLmpzIj48L3NjcmlwdD4NCg0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPg0KJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKSB7DQoJJCgiYS5ncm91cCIpLmZhbmN5Ym94KHsNCgkJJ3pvb21PcGFjaXR5JzoJdHJ1ZSwNCgkJJ3pvb21TcGVlZEluJzoJMzAwLA0KCQknem9vbVNwZWVkT3V0JzoJMzAwLA0KCQknb3ZlcmxheVNob3cnOgl0cnVlLA0KCQknb3ZlcmxheU9wYWNpdHknOgkwLjUNCgl9KTsNCn0pOw0KPC9zY3JpcHQ+DQoqfQ==]]></data>
	</file>
	<file>
	  <filename>/templates/template_lightbox.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBjbGFzcz0iZ2FsbGVyeSI+DQp7aWYgIWVtcHR5KCRtb2R1bGVfbWVzc2FnZSl9PGg0PnskbW9kdWxlX21lc3NhZ2V8ZXNjYXBlfTwvaDQ+ey9pZn0NCntpZiAhZW1wdHkoJGdhbGxlcnl0aXRsZSl9PGgzPnskZ2FsbGVyeXRpdGxlfTwvaDM+ey9pZn0NCntpZiAhZW1wdHkoJGdhbGxlcnljb21tZW50KX08ZGl2IGNsYXNzPSJnYWxsZXJ5Y29tbWVudCI+eyRnYWxsZXJ5Y29tbWVudH08L2Rpdj57L2lmfQ0KPHA+eyRpbWFnZWNvdW50fTwvcD4NCjxkaXYgY2xhc3M9InBhZ2VuYXZpZ2F0aW9uIj4NCntpZiAkcGFnZXMgPiAxfQ0KPGRpdiBjbGFzcz0icHJldnBhZ2UiPnskcHJldnBhZ2V9PC9kaXY+DQo8ZGl2IGNsYXNzPSJuZXh0cGFnZSI+eyRuZXh0cGFnZX08L2Rpdj4NCnsvaWZ9DQp7aWYgISRoaWRlcGFyZW50bGluayAmJiAhZW1wdHkoJHBhcmVudGxpbmspfTxkaXYgY2xhc3M9InBhcmVudGxpbmsiPnskcGFyZW50bGlua308L2Rpdj57L2lmfQ0Ke2lmICRwYWdlcyA+IDF9PGRpdiBjbGFzcz0icGFnZWxpbmtzIj57JHBhZ2VsaW5rc308L2Rpdj57L2lmfQ0KPC9kaXY+DQoNCntmb3JlYWNoIGZyb209JGltYWdlcyBpdGVtPWltYWdlfQ0KCTxkaXYgY2xhc3M9ImltZyI+DQoJe2lmICRpbWFnZS0+aXNkaXJ9DQoJCTxhIGhyZWY9InskaW1hZ2UtPmZpbGV9IiB0aXRsZT0ieyRpbWFnZS0+dGl0bGV9Ij48aW1nIHNyYz0ieyRpbWFnZS0+dGh1bWJ9IiBhbHQ9InskaW1hZ2UtPnRpdGxlfSIgLz48L2E+PGJyIC8+DQoJCXskaW1hZ2UtPnRpdGxlfQ0KCXtlbHNlfQ0KICAgPGEgaHJlZj0ieyRpbWFnZS0+ZmlsZX0iIHRpdGxlPSJ7JGltYWdlLT50aXRsZX0iIHJlbD0ibGlnaHRib3hbZ2FsbGVyeV0iPjxpbWcgc3JjPSJ7JGltYWdlLT50aHVtYn0iIGFsdD0ieyRpbWFnZS0+dGl0bGV9IiAvPjwvYT4NCgl7L2lmfQ0KCTwvZGl2Pg0Key9mb3JlYWNofQ0KPGRpdiBjbGFzcz0iZ2FsbGVyeWNsZWFyIj4mbmJzcDs8L2Rpdj4NCjwvZGl2Pg0KDQoNCnsqLS0tLS0tLS0tLQ0KLmdhbGxlcnljbGVhciB7DQoJY2xlYXI6IGJvdGg7DQp9DQoNCi5nYWxsZXJ5IC5pbWcgew0KCWZsb2F0OiBsZWZ0Ow0KCW1hcmdpbjogM3B4Ow0KCXRleHQtYWxpZ246IGNlbnRlcjsNCn0NCg0KLmdhbGxlcnkgLnBhZ2VuYXZpZ2F0aW9uIHsNCgloZWlnaHQ6IDUwcHg7DQp9DQoNCi5nYWxsZXJ5IC5wcmV2cGFnZSBhLCAuZ2FsbGVyeSAucHJldnBhZ2UgZW0gew0KCWRpc3BsYXk6IGJsb2NrOyANCgl3aWR0aDogNTBweDsgDQoJaGVpZ2h0OiAzOXB4Ow0KCWZsb2F0OiBsZWZ0OyANCgltYXJnaW46IDA7DQoJdGV4dC1pbmRlbnQ6IC0xMDAwcHg7DQoJYmFja2dyb3VuZDogdXJsKC4uLy4uL2ltYWdlcy9wcmV2aW91cy5wbmcpIHRyYW5zcGFyZW50IG5vLXJlcGVhdCAwIDA7DQp9DQoNCi5nYWxsZXJ5IC5uZXh0cGFnZSBhLCAuZ2FsbGVyeSAubmV4dHBhZ2UgZW0gew0KCWRpc3BsYXk6IGJsb2NrOyANCgl3aWR0aDogNTBweDsgDQoJaGVpZ2h0OiAzOXB4Ow0KCWZsb2F0OiBsZWZ0OyANCgltYXJnaW46IDAgNnB4IDAgMDsNCgl0ZXh0LWluZGVudDogLTEwMDBweDsNCgliYWNrZ3JvdW5kOiB1cmwoLi4vLi4vaW1hZ2VzL25leHQucG5nKSB0cmFuc3BhcmVudCBuby1yZXBlYXQgMCAwOw0KfQ0KDQouZ2FsbGVyeSAucGFyZW50bGluayBhIHsNCglkaXNwbGF5OiBibG9jazsgDQoJd2lkdGg6IDUwcHg7IA0KCWhlaWdodDogMzlweDsNCglmbG9hdDogbGVmdDsgDQoJdGV4dC1pbmRlbnQ6IC0xMDAwcHg7DQoJYmFja2dyb3VuZDogdXJsKC4uLy4uL2ltYWdlcy91cHBhZ2UucG5nKSB0cmFuc3BhcmVudCBuby1yZXBlYXQgMCAwOw0KfQ0KDQouZ2FsbGVyeSAucGFnZW5hdmlnYXRpb24gYTpob3ZlciB7DQoJYmFja2dyb3VuZC1wb3NpdGlvbjogMCAtNDBweDsNCn0NCg0KLmdhbGxlcnkgLnByZXZwYWdlIGVtLCAuZ2FsbGVyeSAubmV4dHBhZ2UgZW0gew0KCWJhY2tncm91bmQtcG9zaXRpb246IDAgLTgwcHg7DQp9DQoNCi5nYWxsZXJ5IC5wYWdlbGlua3Mgew0KCWZsb2F0OiByaWdodDsNCglib3JkZXItcmlnaHQ6IDJweCBzb2xpZCAjNjY2Ow0KfQ0KDQouZ2FsbGVyeSAucGFnZWxpbmtzIGEsIC5nYWxsZXJ5IC5wYWdlbGlua3MgZW0gew0KCW1hcmdpbi10b3A6IDZweDsNCglwYWRkaW5nOiAwIDZweDsNCglib3JkZXItbGVmdDogMnB4IHNvbGlkICM2NjY7DQoJdGV4dC1hbGlnbjogY2VudGVyOw0KCWZvbnQ6IGJvbGQgMTFweCB2ZXJkYW5hOyBjb2xvcjogIzY2NjsNCn0NCg0KLmdhbGxlcnkgLnBhZ2VsaW5rcyBlbSB7DQoJY29sb3I6ICMwMDA7DQp9DQoNCg0KI2xpZ2h0Ym94ewlwb3NpdGlvbjogYWJzb2x1dGU7CWxlZnQ6IDA7IHdpZHRoOiAxMDAlOyB6LWluZGV4OiAxMDA7IHRleHQtYWxpZ246IGNlbnRlcjsgbGluZS1oZWlnaHQ6IDA7fQ0KI2xpZ2h0Ym94IGltZ3sgd2lkdGg6IGF1dG87IGhlaWdodDogYXV0bzt9DQojbGlnaHRib3ggYSBpbWd7IGJvcmRlcjogbm9uZTsgfQ0KDQojb3V0ZXJJbWFnZUNvbnRhaW5lcnsgcG9zaXRpb246IHJlbGF0aXZlOyBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOyB3aWR0aDogMjUwcHg7IGhlaWdodDogMjUwcHg7IG1hcmdpbjogMCBhdXRvOyB9DQojaW1hZ2VDb250YWluZXJ7IHBhZGRpbmc6IDEwcHg7IH0NCg0KI2xvYWRpbmd7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiA0MCU7IGxlZnQ6IDAlOyBoZWlnaHQ6IDI1JTsgd2lkdGg6IDEwMCU7IHRleHQtYWxpZ246IGNlbnRlcjsgbGluZS1oZWlnaHQ6IDA7IH0NCiNob3Zlck5hdnsgcG9zaXRpb246IGFic29sdXRlOyB0b3A6IDA7IGxlZnQ6IDA7IGhlaWdodDogMTAwJTsgd2lkdGg6IDEwMCU7IHotaW5kZXg6IDEwOyB9DQojaW1hZ2VDb250YWluZXI+I2hvdmVyTmF2eyBsZWZ0OiAwO30NCiNob3Zlck5hdiBheyBvdXRsaW5lOiBub25lO30NCg0KI3ByZXZMaW5rLCAjbmV4dExpbmt7IHdpZHRoOiA0OSU7IGhlaWdodDogMTAwJTsgYmFja2dyb3VuZC1pbWFnZTogdXJsKGRhdGE6aW1hZ2UvZ2lmO2Jhc2U2NCxBQUFBKTsgLyogVHJpY2sgSUUgaW50byBzaG93aW5nIGhvdmVyICovIGRpc3BsYXk6IGJsb2NrOyB9DQojcHJldkxpbmsgeyBsZWZ0OiAwOyBmbG9hdDogbGVmdDt9DQojbmV4dExpbmsgeyByaWdodDogMDsgZmxvYXQ6IHJpZ2h0O30NCiNwcmV2TGluazpob3ZlciwgI3ByZXZMaW5rOnZpc2l0ZWQ6aG92ZXIgeyBiYWNrZ3JvdW5kOiB1cmwoLi4vbGlnaHRib3gvaW1hZ2VzL3ByZXZsYWJlbC5naWYpIGxlZnQgMTUlIG5vLXJlcGVhdDsgfQ0KI25leHRMaW5rOmhvdmVyLCAjbmV4dExpbms6dmlzaXRlZDpob3ZlciB7IGJhY2tncm91bmQ6IHVybCguLi9saWdodGJveC9pbWFnZXMvbmV4dGxhYmVsLmdpZikgcmlnaHQgMTUlIG5vLXJlcGVhdDsgfQ0KDQojaW1hZ2VEYXRhQ29udGFpbmVyeyBmb250OiAxMHB4IFZlcmRhbmEsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsgbWFyZ2luOiAwIGF1dG87IGxpbmUtaGVpZ2h0OiAxLjRlbTsgb3ZlcmZsb3c6IGF1dG87IHdpZHRoOiAxMDAlCTsgfQ0KDQojaW1hZ2VEYXRhewlwYWRkaW5nOjAgMTBweDsgY29sb3I6ICM2NjY7IH0NCiNpbWFnZURhdGEgI2ltYWdlRGV0YWlsc3sgd2lkdGg6IDcwJTsgZmxvYXQ6IGxlZnQ7IHRleHQtYWxpZ246IGxlZnQ7IH0JDQojaW1hZ2VEYXRhICNjYXB0aW9ueyBmb250LXdlaWdodDogYm9sZDsJfQ0KI2ltYWdlRGF0YSAjbnVtYmVyRGlzcGxheXsgZGlzcGxheTogYmxvY2s7IGNsZWFyOiBsZWZ0OyBwYWRkaW5nLWJvdHRvbTogMS4wZW07CX0JCQkNCiNpbWFnZURhdGEgI2JvdHRvbU5hdkNsb3NleyB3aWR0aDogNjZweDsgZmxvYXQ6IHJpZ2h0OyAgcGFkZGluZy1ib3R0b206IDAuN2VtOyBvdXRsaW5lOiBub25lO30JIAkNCg0KI292ZXJsYXl7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAwOyBsZWZ0OiAwOyB6LWluZGV4OiA5MDsgd2lkdGg6IDEwMCU7IGhlaWdodDogNTAwcHg7IGJhY2tncm91bmQtY29sb3I6ICMwMDA7IH0NCg0KeyotLS0tLS0tLS0tDQo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJtb2R1bGVzL0dhbGxlcnkvdGVtcGxhdGVzL2xpZ2h0Ym94L2pzL3Byb3RvdHlwZS5qcyI+PC9zY3JpcHQ+DQo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJtb2R1bGVzL0dhbGxlcnkvdGVtcGxhdGVzL2xpZ2h0Ym94L2pzL3NjcmlwdGFjdWxvdXMuanM/bG9hZD1lZmZlY3RzLGJ1aWxkZXIiPjwvc2NyaXB0Pg0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ibW9kdWxlcy9HYWxsZXJ5L3RlbXBsYXRlcy9saWdodGJveC9qcy9saWdodGJveC5qcyI+PC9zY3JpcHQ+DQoqfQ==]]></data>
	</file>
	<file>
	  <filename>/templates/template_lytebox_slideshow.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSAgaHR0cDovL3d3dy5kb2xlbS5jb20vbHl0ZWJveC8gIC0tPg0KDQo8ZGl2IGNsYXNzPSJnYWxsZXJ5Ij4NCntpZiAhZW1wdHkoJG1vZHVsZV9tZXNzYWdlKX08aDQ+eyRtb2R1bGVfbWVzc2FnZXxlc2NhcGV9PC9oND57L2lmfQ0Ke2lmICFlbXB0eSgkZ2FsbGVyeXRpdGxlKX08aDM+eyRnYWxsZXJ5dGl0bGV9PC9oMz57L2lmfQ0Ke2lmICFlbXB0eSgkZ2FsbGVyeWNvbW1lbnQpfTxkaXYgY2xhc3M9ImdhbGxlcnljb21tZW50Ij57JGdhbGxlcnljb21tZW50fTwvZGl2PnsvaWZ9DQo8cD57JGltYWdlY291bnR9PC9wPg0KPGRpdiBjbGFzcz0icGFnZW5hdmlnYXRpb24iPg0Ke2lmICRwYWdlcyA+IDF9DQo8ZGl2IGNsYXNzPSJwcmV2cGFnZSI+eyRwcmV2cGFnZX08L2Rpdj4NCjxkaXYgY2xhc3M9Im5leHRwYWdlIj57JG5leHRwYWdlfTwvZGl2Pg0Key9pZn0NCntpZiAhJGhpZGVwYXJlbnRsaW5rICYmICFlbXB0eSgkcGFyZW50bGluayl9PGRpdiBjbGFzcz0icGFyZW50bGluayI+eyRwYXJlbnRsaW5rfTwvZGl2PnsvaWZ9DQp7aWYgJHBhZ2VzID4gMX08ZGl2IGNsYXNzPSJwYWdlbGlua3MiPnskcGFnZWxpbmtzfTwvZGl2PnsvaWZ9DQo8L2Rpdj4NCg0Ke2ZvcmVhY2ggZnJvbT0kaW1hZ2VzIGl0ZW09aW1hZ2V9DQoJPGRpdiBjbGFzcz0iaW1nIj4NCgl7aWYgJGltYWdlLT5pc2Rpcn0NCgkJPGEgaHJlZj0ieyRpbWFnZS0+ZmlsZX0iIHRpdGxlPSJ7JGltYWdlLT50aXRsZX0iPjxpbWcgc3JjPSJ7JGltYWdlLT50aHVtYn0iIGFsdD0ieyRpbWFnZS0+dGl0bGV9IiAvPjwvYT48YnIgLz4NCgkJeyRpbWFnZS0+dGl0bGV9DQoJe2Vsc2V9DQogICA8YSBocmVmPSJ7JGltYWdlLT5maWxlfSIgdGl0bGU9InskaW1hZ2UtPnRpdGxlfSIgcmVsPSJseXRlc2hvd1tnYWxsZXJ5XSI+PGltZyBzcmM9InskaW1hZ2UtPnRodW1ifSIgYWx0PSJ7JGltYWdlLT50aXRsZX0iIC8+PC9hPg0KCXsvaWZ9DQoJPC9kaXY+DQp7L2ZvcmVhY2h9DQo8ZGl2IGNsYXNzPSJnYWxsZXJ5Y2xlYXIiPiZuYnNwOzwvZGl2Pg0KPC9kaXY+DQoNCg0KeyotLS0tLS0tLS0tDQouZ2FsbGVyeWNsZWFyIHsNCgljbGVhcjogYm90aDsNCn0NCg0KLmdhbGxlcnkgLmltZyB7DQoJZmxvYXQ6IGxlZnQ7DQoJbWFyZ2luOiAzcHg7DQoJdGV4dC1hbGlnbjogY2VudGVyOw0KfQ0KDQouZ2FsbGVyeSAucGFnZW5hdmlnYXRpb24gew0KCWhlaWdodDogNTBweDsNCn0NCg0KLmdhbGxlcnkgLnByZXZwYWdlIGEsIC5nYWxsZXJ5IC5wcmV2cGFnZSBlbSB7DQoJZGlzcGxheTogYmxvY2s7DQoJd2lkdGg6IDUwcHg7DQoJaGVpZ2h0OiAzOXB4Ow0KCWZsb2F0OiBsZWZ0Ow0KCW1hcmdpbjogMDsNCgl0ZXh0LWluZGVudDogLTEwMDBweDsNCgliYWNrZ3JvdW5kOiB1cmwoLi4vLi4vaW1hZ2VzL3ByZXZpb3VzLnBuZykgdHJhbnNwYXJlbnQgbm8tcmVwZWF0IDAgMDsNCn0NCg0KLmdhbGxlcnkgLm5leHRwYWdlIGEsIC5nYWxsZXJ5IC5uZXh0cGFnZSBlbSB7DQoJZGlzcGxheTogYmxvY2s7DQoJd2lkdGg6IDUwcHg7DQoJaGVpZ2h0OiAzOXB4Ow0KCWZsb2F0OiBsZWZ0Ow0KCW1hcmdpbjogMCA2cHggMCAwOw0KCXRleHQtaW5kZW50OiAtMTAwMHB4Ow0KCWJhY2tncm91bmQ6IHVybCguLi8uLi9pbWFnZXMvbmV4dC5wbmcpIHRyYW5zcGFyZW50IG5vLXJlcGVhdCAwIDA7DQp9DQoNCi5nYWxsZXJ5IC5wYXJlbnRsaW5rIGEgew0KCWRpc3BsYXk6IGJsb2NrOw0KCXdpZHRoOiA1MHB4Ow0KCWhlaWdodDogMzlweDsNCglmbG9hdDogbGVmdDsNCgl0ZXh0LWluZGVudDogLTEwMDBweDsNCgliYWNrZ3JvdW5kOiB1cmwoLi4vLi4vaW1hZ2VzL3VwcGFnZS5wbmcpIHRyYW5zcGFyZW50IG5vLXJlcGVhdCAwIDA7DQp9DQoNCi5nYWxsZXJ5IC5wYWdlbmF2aWdhdGlvbiBhOmhvdmVyIHsNCgliYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIC00MHB4Ow0KfQ0KDQouZ2FsbGVyeSAucHJldnBhZ2UgZW0sIC5nYWxsZXJ5IC5uZXh0cGFnZSBlbSB7DQoJYmFja2dyb3VuZC1wb3NpdGlvbjogMCAtODBweDsNCn0NCg0KLmdhbGxlcnkgLnBhZ2VsaW5rcyB7DQoJZmxvYXQ6IHJpZ2h0Ow0KCWJvcmRlci1yaWdodDogMnB4IHNvbGlkICM2NjY7DQp9DQoNCi5nYWxsZXJ5IC5wYWdlbGlua3MgYSwgLmdhbGxlcnkgLnBhZ2VsaW5rcyBlbSB7DQoJbWFyZ2luLXRvcDogNnB4Ow0KCXBhZGRpbmc6IDAgNnB4Ow0KCWJvcmRlci1sZWZ0OiAycHggc29saWQgIzY2NjsNCgl0ZXh0LWFsaWduOiBjZW50ZXI7DQoJZm9udDogYm9sZCAxMXB4IHZlcmRhbmE7IGNvbG9yOiAjNjY2Ow0KfQ0KDQouZ2FsbGVyeSAucGFnZWxpbmtzIGVtIHsNCgljb2xvcjogIzAwMDsNCn0NCg0KDQovKiBMWVRFQk9YICovDQoNCiNsYk92ZXJsYXkgeyBwb3NpdGlvbjogZml4ZWQ7IHRvcDogMDsgbGVmdDogMDsgei1pbmRleDogOTk5OTg7IHdpZHRoOiAxMDAlOyBoZWlnaHQ6IDUwMHB4OyB9DQoJI2xiT3ZlcmxheS5ncmV5IHsgYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMDsgfQ0KCSNsYk92ZXJsYXkucmVkIHsgYmFja2dyb3VuZC1jb2xvcjogIzMzMDAwMDsgfQ0KCSNsYk92ZXJsYXkuZ3JlZW4geyBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAzMzAwOyB9DQoJI2xiT3ZlcmxheS5ibHVlIHsgYmFja2dyb3VuZC1jb2xvcjogIzAxMUQ1MDsgfQ0KCSNsYk92ZXJsYXkuZ29sZCB7IGJhY2tncm91bmQtY29sb3I6ICM2NjY2MDA7IH0NCg0KI2xiTWFpbiB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgbGVmdDogMDsgd2lkdGg6IDEwMCU7IHotaW5kZXg6IDk5OTk5OyB0ZXh0LWFsaWduOiBjZW50ZXI7IGxpbmUtaGVpZ2h0OiAwOyB9DQojbGJNYWluIGEgaW1nIHsgYm9yZGVyOiBub25lOyB9DQoNCiNsYk91dGVyQ29udGFpbmVyIHsgcG9zaXRpb246IHJlbGF0aXZlOyBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOyB3aWR0aDogMjAwcHg7IGhlaWdodDogMjAwcHg7IG1hcmdpbjogMCBhdXRvOyB9DQoJI2xiT3V0ZXJDb250YWluZXIuZ3JleSB7IGJvcmRlcjogM3B4IHNvbGlkICM4ODg4ODg7IH0NCgkjbGJPdXRlckNvbnRhaW5lci5yZWQgeyBib3JkZXI6IDNweCBzb2xpZCAjREQwMDAwOyB9DQoJI2xiT3V0ZXJDb250YWluZXIuZ3JlZW4geyBib3JkZXI6IDNweCBzb2xpZCAjMDBCMDAwOyB9DQoJI2xiT3V0ZXJDb250YWluZXIuYmx1ZSB7IGJvcmRlcjogM3B4IHNvbGlkICM1Rjg5RDg7IH0NCgkjbGJPdXRlckNvbnRhaW5lci5nb2xkIHsgYm9yZGVyOiAzcHggc29saWQgI0IwQjAwMDsgfQ0KDQojbGJEZXRhaWxzQ29udGFpbmVyIHsJZm9udDogMTBweCBWZXJkYW5hLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGJhY2tncm91bmQtY29sb3I6ICNmZmY7IHdpZHRoOiAxMDAlOyBsaW5lLWhlaWdodDogMS40ZW07CW92ZXJmbG93OiBhdXRvOyBtYXJnaW46IDAgYXV0bzsgfQ0KCSNsYkRldGFpbHNDb250YWluZXIuZ3JleSB7IGJvcmRlcjogM3B4IHNvbGlkICM4ODg4ODg7IGJvcmRlci10b3A6IG5vbmU7IH0NCgkjbGJEZXRhaWxzQ29udGFpbmVyLnJlZCB7IGJvcmRlcjogM3B4IHNvbGlkICNERDAwMDA7IGJvcmRlci10b3A6IG5vbmU7IH0NCgkjbGJEZXRhaWxzQ29udGFpbmVyLmdyZWVuIHsgYm9yZGVyOiAzcHggc29saWQgIzAwQjAwMDsgYm9yZGVyLXRvcDogbm9uZTsgfQ0KCSNsYkRldGFpbHNDb250YWluZXIuYmx1ZSB7IGJvcmRlcjogM3B4IHNvbGlkICM1Rjg5RDg7IGJvcmRlci10b3A6IG5vbmU7IH0NCgkjbGJEZXRhaWxzQ29udGFpbmVyLmdvbGQgeyBib3JkZXI6IDNweCBzb2xpZCAjQjBCMDAwOyBib3JkZXItdG9wOiBub25lOyB9DQoNCiNsYkltYWdlQ29udGFpbmVyLCAjbGJJZnJhbWVDb250YWluZXIgeyBwYWRkaW5nOiAxMHB4OyB9DQojbGJMb2FkaW5nIHsNCglwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogNDUlOyBsZWZ0OiAwJTsgaGVpZ2h0OiAzMnB4OyB3aWR0aDogMTAwJTsgdGV4dC1hbGlnbjogY2VudGVyOyBsaW5lLWhlaWdodDogMDsgYmFja2dyb3VuZDogdXJsKC4uL2x5dGVib3gvaW1hZ2VzL2xvYWRpbmcuZ2lmKSBjZW50ZXIgbm8tcmVwZWF0Ow0KfQ0KDQojbGJIb3Zlck5hdiB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAwOyBsZWZ0OiAwOyBoZWlnaHQ6IDEwMCU7IHdpZHRoOiAxMDAlOyB6LWluZGV4OiAxMDsgfQ0KI2xiSW1hZ2VDb250YWluZXI+I2xiSG92ZXJOYXYgeyBsZWZ0OiAwOyB9DQojbGJIb3Zlck5hdiBhIHsgb3V0bGluZTogbm9uZTsgfQ0KDQojbGJQcmV2IHsgd2lkdGg6IDQ5JTsgaGVpZ2h0OiAxMDAlOyBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCB1cmwoLi4vbHl0ZWJveC9pbWFnZXMvYmxhbmsuZ2lmKSBuby1yZXBlYXQ7IGRpc3BsYXk6IGJsb2NrOyBsZWZ0OiAwOyBmbG9hdDogbGVmdDsgfQ0KCSNsYlByZXYuZ3JleTpob3ZlciwgI2xiUHJldi5ncmV5OnZpc2l0ZWQ6aG92ZXIgeyBiYWNrZ3JvdW5kOiB1cmwoLi4vbHl0ZWJveC9pbWFnZXMvcHJldl9ncmV5LmdpZikgbGVmdCAxNSUgbm8tcmVwZWF0OyB9DQoJI2xiUHJldi5yZWQ6aG92ZXIsICNsYlByZXYucmVkOnZpc2l0ZWQ6aG92ZXIgeyBiYWNrZ3JvdW5kOiB1cmwoLi4vbHl0ZWJveC9pbWFnZXMvcHJldl9yZWQuZ2lmKSBsZWZ0IDE1JSBuby1yZXBlYXQ7IH0NCgkjbGJQcmV2LmdyZWVuOmhvdmVyLCAjbGJQcmV2LmdyZWVuOnZpc2l0ZWQ6aG92ZXIgeyBiYWNrZ3JvdW5kOiB1cmwoLi4vbHl0ZWJveC9pbWFnZXMvcHJldl9ncmVlbi5naWYpIGxlZnQgMTUlIG5vLXJlcGVhdDsgfQ0KCSNsYlByZXYuYmx1ZTpob3ZlciwgI2xiUHJldi5ibHVlOnZpc2l0ZWQ6aG92ZXIgeyBiYWNrZ3JvdW5kOiB1cmwoLi4vbHl0ZWJveC9pbWFnZXMvcHJldl9ibHVlLmdpZikgbGVmdCAxNSUgbm8tcmVwZWF0OyB9DQoJI2xiUHJldi5nb2xkOmhvdmVyLCAjbGJQcmV2LmdvbGQ6dmlzaXRlZDpob3ZlciB7IGJhY2tncm91bmQ6IHVybCguLi9seXRlYm94L2ltYWdlcy9wcmV2X2dvbGQuZ2lmKSBsZWZ0IDE1JSBuby1yZXBlYXQ7IH0NCg0KI2xiTmV4dCB7IHdpZHRoOiA0OSU7IGhlaWdodDogMTAwJTsgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgdXJsKC4uL2x5dGVib3gvaW1hZ2VzL2JsYW5rLmdpZikgbm8tcmVwZWF0OyBkaXNwbGF5OiBibG9jazsgcmlnaHQ6IDA7IGZsb2F0OiByaWdodDsgfQ0KCSNsYk5leHQuZ3JleTpob3ZlciwgI2xiTmV4dC5ncmV5OnZpc2l0ZWQ6aG92ZXIgeyBiYWNrZ3JvdW5kOiB1cmwoLi4vbHl0ZWJveC9pbWFnZXMvbmV4dF9ncmV5LmdpZikgcmlnaHQgMTUlIG5vLXJlcGVhdDsgfQ0KCSNsYk5leHQucmVkOmhvdmVyLCAjbGJOZXh0LnJlZDp2aXNpdGVkOmhvdmVyIHsgYmFja2dyb3VuZDogdXJsKC4uL2x5dGVib3gvaW1hZ2VzL25leHRfcmVkLmdpZikgcmlnaHQgMTUlIG5vLXJlcGVhdDsgfQ0KCSNsYk5leHQuZ3JlZW46aG92ZXIsICNsYk5leHQuZ3JlZW46dmlzaXRlZDpob3ZlciB7IGJhY2tncm91bmQ6IHVybCguLi9seXRlYm94L2ltYWdlcy9uZXh0X2dyZWVuLmdpZikgcmlnaHQgMTUlIG5vLXJlcGVhdDsgfQ0KCSNsYk5leHQuYmx1ZTpob3ZlciwgI2xiTmV4dC5ibHVlOnZpc2l0ZWQ6aG92ZXIgeyBiYWNrZ3JvdW5kOiB1cmwoLi4vbHl0ZWJveC9pbWFnZXMvbmV4dF9ibHVlLmdpZikgcmlnaHQgMTUlIG5vLXJlcGVhdDsgfQ0KCSNsYk5leHQuZ29sZDpob3ZlciwgI2xiTmV4dC5nb2xkOnZpc2l0ZWQ6aG92ZXIgeyBiYWNrZ3JvdW5kOiB1cmwoLi4vbHl0ZWJveC9pbWFnZXMvbmV4dF9nb2xkLmdpZikgcmlnaHQgMTUlIG5vLXJlcGVhdDsgfQ0KDQojbGJQcmV2MiwgI2xiTmV4dDIgeyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IGZvbnQtd2VpZ2h0OiBib2xkOyB9DQoJI2xiUHJldjIuZ3JleSwgI2xiTmV4dDIuZ3JleSwgI2xiU3BhY2VyLmdyZXkgeyBjb2xvcjogIzMzMzMzMzsgfQ0KCSNsYlByZXYyLnJlZCwgI2xiTmV4dDIucmVkLCAjbGJTcGFjZXIucmVkIHsgY29sb3I6ICM2MjAwMDA7IH0NCgkjbGJQcmV2Mi5ncmVlbiwgI2xiTmV4dDIuZ3JlZW4sICNsYlNwYWNlci5ncmVlbiB7IGNvbG9yOiAjMDAzMzAwOyB9DQoJI2xiUHJldjIuYmx1ZSwgI2xiTmV4dDIuYmx1ZSwgI2xiU3BhY2VyLmJsdWUgeyBjb2xvcjogIzAxMzc5RTsgfQ0KCSNsYlByZXYyLmdvbGQsICNsYk5leHQyLmdvbGQsICNsYlNwYWNlci5nb2xkIHsgY29sb3I6ICM2NjY2MDA7IH0NCg0KI2xiUHJldjJfT2ZmLCAjbGJOZXh0Ml9PZmYgeyBmb250LXdlaWdodDogYm9sZDsgfQ0KCSNsYlByZXYyX09mZi5ncmV5LCAjbGJOZXh0Ml9PZmYuZ3JleSB7IGNvbG9yOiAjQ0NDQ0NDOyB9DQoJI2xiUHJldjJfT2ZmLnJlZCwgI2xiTmV4dDJfT2ZmLnJlZCB7IGNvbG9yOiAjRkZDQ0NDOyB9DQoJI2xiUHJldjJfT2ZmLmdyZWVuLCAjbGJOZXh0Ml9PZmYuZ3JlZW4geyBjb2xvcjogIzgyRkY4MjsgfQ0KCSNsYlByZXYyX09mZi5ibHVlLCAjbGJOZXh0Ml9PZmYuYmx1ZSB7IGNvbG9yOiAjQjdDQUVFOyB9DQoJI2xiUHJldjJfT2ZmLmdvbGQsICNsYk5leHQyX09mZi5nb2xkIHsgY29sb3I6ICNFMUUxMDA7IH0NCg0KI2xiRGV0YWlsc0RhdGEgeyBwYWRkaW5nOiAwIDEwcHg7IH0NCgkjbGJEZXRhaWxzRGF0YS5ncmV5IHsgY29sb3I6ICMzMzMzMzM7IH0NCgkjbGJEZXRhaWxzRGF0YS5yZWQgeyBjb2xvcjogIzYyMDAwMDsgfQ0KCSNsYkRldGFpbHNEYXRhLmdyZWVuIHsgY29sb3I6ICMwMDMzMDA7IH0NCgkjbGJEZXRhaWxzRGF0YS5ibHVlIHsgY29sb3I6ICMwMTM3OUU7IH0NCgkjbGJEZXRhaWxzRGF0YS5nb2xkIHsgY29sb3I6ICM2NjY2MDA7IH0NCg0KI2xiRGV0YWlscyB7IHdpZHRoOiA2MCU7IGZsb2F0OiBsZWZ0OyB0ZXh0LWFsaWduOiBsZWZ0OyB9DQojbGJDYXB0aW9uIHsgZGlzcGxheTogYmxvY2s7IGZvbnQtd2VpZ2h0OiBib2xkOyB9DQojbGJOdW1iZXJEaXNwbGF5IHsgZmxvYXQ6IGxlZnQ7IGRpc3BsYXk6IGJsb2NrOyBwYWRkaW5nLWJvdHRvbTogMS4wZW07IH0NCiNsYk5hdkRpc3BsYXkgeyBmbG9hdDogbGVmdDsgZGlzcGxheTogYmxvY2s7IHBhZGRpbmctYm90dG9tOiAxLjBlbTsgfQ0KDQojbGJDbG9zZSB7IHdpZHRoOiA2NHB4OyBoZWlnaHQ6IDI4cHg7IGZsb2F0OiByaWdodDsgbWFyZ2luLWJvdHRvbTogMXB4OyB9DQoJI2xiQ2xvc2UuZ3JleSB7IGJhY2tncm91bmQ6IHVybCguLi9seXRlYm94L2ltYWdlcy9jbG9zZV9ncmV5LnBuZykgbm8tcmVwZWF0OyB9DQoJI2xiQ2xvc2UucmVkIHsgYmFja2dyb3VuZDogdXJsKC4uL2x5dGVib3gvaW1hZ2VzL2Nsb3NlX3JlZC5wbmcpIG5vLXJlcGVhdDsgfQ0KCSNsYkNsb3NlLmdyZWVuIHsgYmFja2dyb3VuZDogdXJsKC4uL2x5dGVib3gvaW1hZ2VzL2Nsb3NlX2dyZWVuLnBuZykgbm8tcmVwZWF0OyB9DQoJI2xiQ2xvc2UuYmx1ZSB7IGJhY2tncm91bmQ6IHVybCguLi9seXRlYm94L2ltYWdlcy9jbG9zZV9ibHVlLnBuZykgbm8tcmVwZWF0OyB9DQoJI2xiQ2xvc2UuZ29sZCB7IGJhY2tncm91bmQ6IHVybCguLi9seXRlYm94L2ltYWdlcy9jbG9zZV9nb2xkLnBuZykgbm8tcmVwZWF0OyB9DQoNCiNsYlBsYXkgeyB3aWR0aDogNjRweDsgaGVpZ2h0OiAyOHB4OyBmbG9hdDogcmlnaHQ7IG1hcmdpbi1ib3R0b206IDFweDsgfQ0KCSNsYlBsYXkuZ3JleSB7IGJhY2tncm91bmQ6IHVybCguLi9seXRlYm94L2ltYWdlcy9wbGF5X2dyZXkucG5nKSBuby1yZXBlYXQ7IH0NCgkjbGJQbGF5LnJlZCB7IGJhY2tncm91bmQ6IHVybCguLi9seXRlYm94L2ltYWdlcy9wbGF5X3JlZC5wbmcpIG5vLXJlcGVhdDsgfQ0KCSNsYlBsYXkuZ3JlZW4geyBiYWNrZ3JvdW5kOiB1cmwoLi4vbHl0ZWJveC9pbWFnZXMvcGxheV9ncmVlbi5wbmcpIG5vLXJlcGVhdDsgfQ0KCSNsYlBsYXkuYmx1ZSB7IGJhY2tncm91bmQ6IHVybCguLi9seXRlYm94L2ltYWdlcy9wbGF5X2JsdWUucG5nKSBuby1yZXBlYXQ7IH0NCgkjbGJQbGF5LmdvbGQgeyBiYWNrZ3JvdW5kOiB1cmwoLi4vbHl0ZWJveC9pbWFnZXMvcGxheV9nb2xkLnBuZykgbm8tcmVwZWF0OyB9DQoNCiNsYlBhdXNlIHsgd2lkdGg6IDY0cHg7IGhlaWdodDogMjhweDsgZmxvYXQ6IHJpZ2h0OyBtYXJnaW4tYm90dG9tOiAxcHg7IH0NCgkjbGJQYXVzZS5ncmV5IHsgYmFja2dyb3VuZDogdXJsKC4uL2x5dGVib3gvaW1hZ2VzL3BhdXNlX2dyZXkucG5nKSBuby1yZXBlYXQ7IH0NCgkjbGJQYXVzZS5yZWQgeyBiYWNrZ3JvdW5kOiB1cmwoLi4vbHl0ZWJveC9pbWFnZXMvcGF1c2VfcmVkLnBuZykgbm8tcmVwZWF0OyB9DQoJI2xiUGF1c2UuZ3JlZW4geyBiYWNrZ3JvdW5kOiB1cmwoLi4vbHl0ZWJveC9pbWFnZXMvcGF1c2VfZ3JlZW4ucG5nKSBuby1yZXBlYXQ7IH0NCgkjbGJQYXVzZS5ibHVlIHsgYmFja2dyb3VuZDogdXJsKC4uL2x5dGVib3gvaW1hZ2VzL3BhdXNlX2JsdWUucG5nKSBuby1yZXBlYXQ7IH0NCgkjbGJQYXVzZS5nb2xkIHsgYmFja2dyb3VuZDogdXJsKC4uL2x5dGVib3gvaW1hZ2VzL3BhdXNlX2dvbGQucG5nKSBuby1yZXBlYXQ7IH0NCg0KeyotLS0tLS0tLS0tDQo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJtb2R1bGVzL0dhbGxlcnkvdGVtcGxhdGVzL2x5dGVib3gvbHl0ZWJveC5qcyI+PC9zY3JpcHQ+DQoqfQ==]]></data>
	</file>
	<file>
	  <filename>/templates/template_slimbox.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBjbGFzcz0iZ2FsbGVyeSI+DQp7aWYgIWVtcHR5KCRtb2R1bGVfbWVzc2FnZSl9PGg0PnskbW9kdWxlX21lc3NhZ2V8ZXNjYXBlfTwvaDQ+ey9pZn0NCntpZiAhZW1wdHkoJGdhbGxlcnl0aXRsZSl9PGgzPnskZ2FsbGVyeXRpdGxlfTwvaDM+ey9pZn0NCntpZiAhZW1wdHkoJGdhbGxlcnljb21tZW50KX08ZGl2IGNsYXNzPSJnYWxsZXJ5Y29tbWVudCI+eyRnYWxsZXJ5Y29tbWVudH08L2Rpdj57L2lmfQ0KPHA+eyRpbWFnZWNvdW50fTwvcD4NCjxkaXYgY2xhc3M9InBhZ2VuYXZpZ2F0aW9uIj4NCntpZiAkcGFnZXMgPiAxfQ0KPGRpdiBjbGFzcz0icHJldnBhZ2UiPnskcHJldnBhZ2V9PC9kaXY+DQo8ZGl2IGNsYXNzPSJuZXh0cGFnZSI+eyRuZXh0cGFnZX08L2Rpdj4NCnsvaWZ9DQp7aWYgISRoaWRlcGFyZW50bGluayAmJiAhZW1wdHkoJHBhcmVudGxpbmspfTxkaXYgY2xhc3M9InBhcmVudGxpbmsiPnskcGFyZW50bGlua308L2Rpdj57L2lmfQ0Ke2lmICRwYWdlcyA+IDF9PGRpdiBjbGFzcz0icGFnZWxpbmtzIj57JHBhZ2VsaW5rc308L2Rpdj57L2lmfQ0KPC9kaXY+DQoNCntmb3JlYWNoIGZyb209JGltYWdlcyBpdGVtPWltYWdlfQ0KCTxkaXYgY2xhc3M9ImltZyI+DQoJe2lmICRpbWFnZS0+aXNkaXJ9DQoJCTxhIGhyZWY9InskaW1hZ2UtPmZpbGV9IiB0aXRsZT0ieyRpbWFnZS0+dGl0bGV9Ij48aW1nIHNyYz0ieyRpbWFnZS0+dGh1bWJ9IiBhbHQ9InskaW1hZ2UtPnRpdGxlfSIgLz48L2E+PGJyIC8+DQoJCXskaW1hZ2UtPnRpdGxlfQ0KCXtlbHNlfQ0KICAgPGEgaHJlZj0ieyRpbWFnZS0+ZmlsZX0iIHRpdGxlPSJ7JGltYWdlLT50aXRsZX0iIHJlbD0ibGlnaHRib3hbZ2FsbGVyeV0iPjxpbWcgc3JjPSJ7JGltYWdlLT50aHVtYn0iIGFsdD0ieyRpbWFnZS0+dGl0bGV9IiAvPjwvYT4NCgl7L2lmfQ0KCTwvZGl2Pg0Key9mb3JlYWNofQ0KPGRpdiBjbGFzcz0iZ2FsbGVyeWNsZWFyIj4mbmJzcDs8L2Rpdj4NCjwvZGl2Pg0KDQoNCnsqLS0tLS0tLS0tLQ0KLmdhbGxlcnljbGVhciB7DQoJY2xlYXI6IGJvdGg7DQp9DQoNCi5nYWxsZXJ5IC5pbWcgew0KCWZsb2F0OiBsZWZ0Ow0KCW1hcmdpbjogM3B4Ow0KCXRleHQtYWxpZ246IGNlbnRlcjsNCn0NCg0KLmdhbGxlcnkgLnBhZ2VuYXZpZ2F0aW9uIHsNCgloZWlnaHQ6IDUwcHg7DQp9DQoNCi5nYWxsZXJ5IC5wcmV2cGFnZSBhLCAuZ2FsbGVyeSAucHJldnBhZ2UgZW0gew0KCWRpc3BsYXk6IGJsb2NrOyANCgl3aWR0aDogNTBweDsgDQoJaGVpZ2h0OiAzOXB4Ow0KCWZsb2F0OiBsZWZ0OyANCgltYXJnaW46IDA7DQoJdGV4dC1pbmRlbnQ6IC0xMDAwcHg7DQoJYmFja2dyb3VuZDogdXJsKC4uLy4uL2ltYWdlcy9wcmV2aW91cy5wbmcpIHRyYW5zcGFyZW50IG5vLXJlcGVhdCAwIDA7DQp9DQoNCi5nYWxsZXJ5IC5uZXh0cGFnZSBhLCAuZ2FsbGVyeSAubmV4dHBhZ2UgZW0gew0KCWRpc3BsYXk6IGJsb2NrOyANCgl3aWR0aDogNTBweDsgDQoJaGVpZ2h0OiAzOXB4Ow0KCWZsb2F0OiBsZWZ0OyANCgltYXJnaW46IDAgNnB4IDAgMDsNCgl0ZXh0LWluZGVudDogLTEwMDBweDsNCgliYWNrZ3JvdW5kOiB1cmwoLi4vLi4vaW1hZ2VzL25leHQucG5nKSB0cmFuc3BhcmVudCBuby1yZXBlYXQgMCAwOw0KfQ0KDQouZ2FsbGVyeSAucGFyZW50bGluayBhIHsNCglkaXNwbGF5OiBibG9jazsgDQoJd2lkdGg6IDUwcHg7IA0KCWhlaWdodDogMzlweDsNCglmbG9hdDogbGVmdDsgDQoJdGV4dC1pbmRlbnQ6IC0xMDAwcHg7DQoJYmFja2dyb3VuZDogdXJsKC4uLy4uL2ltYWdlcy91cHBhZ2UucG5nKSB0cmFuc3BhcmVudCBuby1yZXBlYXQgMCAwOw0KfQ0KDQouZ2FsbGVyeSAucGFnZW5hdmlnYXRpb24gYTpob3ZlciB7DQoJYmFja2dyb3VuZC1wb3NpdGlvbjogMCAtNDBweDsNCn0NCg0KLmdhbGxlcnkgLnByZXZwYWdlIGVtLCAuZ2FsbGVyeSAubmV4dHBhZ2UgZW0gew0KCWJhY2tncm91bmQtcG9zaXRpb246IDAgLTgwcHg7DQp9DQoNCi5nYWxsZXJ5IC5wYWdlbGlua3Mgew0KCWZsb2F0OiByaWdodDsNCglib3JkZXItcmlnaHQ6IDJweCBzb2xpZCAjNjY2Ow0KfQ0KDQouZ2FsbGVyeSAucGFnZWxpbmtzIGEsIC5nYWxsZXJ5IC5wYWdlbGlua3MgZW0gew0KCW1hcmdpbi10b3A6IDZweDsNCglwYWRkaW5nOiAwIDZweDsNCglib3JkZXItbGVmdDogMnB4IHNvbGlkICM2NjY7DQoJdGV4dC1hbGlnbjogY2VudGVyOw0KCWZvbnQ6IGJvbGQgMTFweCB2ZXJkYW5hOyBjb2xvcjogIzY2NjsNCn0NCg0KLmdhbGxlcnkgLnBhZ2VsaW5rcyBlbSB7DQoJY29sb3I6ICMwMDA7DQp9DQoNCg0KLyogU0xJTUJPWCAqLw0KDQojbGJPdmVybGF5IHsNCglwb3NpdGlvbjogZml4ZWQ7DQoJei1pbmRleDogOTk5OTsNCglsZWZ0OiAwOw0KCXRvcDogMDsNCgl3aWR0aDogMTAwJTsNCgloZWlnaHQ6IDEwMCU7DQoJYmFja2dyb3VuZC1jb2xvcjogIzAwMDsNCgljdXJzb3I6IHBvaW50ZXI7DQp9DQoNCiNsYkNlbnRlciwgI2xiQm90dG9tQ29udGFpbmVyIHsNCglwb3NpdGlvbjogYWJzb2x1dGU7DQoJei1pbmRleDogOTk5OTsNCglvdmVyZmxvdzogaGlkZGVuOw0KCWJhY2tncm91bmQtY29sb3I6ICNmZmY7DQp9DQoNCi5sYkxvYWRpbmcgew0KCWJhY2tncm91bmQ6ICNmZmYgdXJsKC4uL3NsaW1ib3gvY3NzL2xvYWRpbmcuZ2lmKSBuby1yZXBlYXQgY2VudGVyOw0KfQ0KDQojbGJJbWFnZSB7DQoJcG9zaXRpb246IGFic29sdXRlOw0KCWxlZnQ6IDA7DQoJdG9wOiAwOw0KCWJvcmRlcjogMTBweCBzb2xpZCAjZmZmOw0KCWJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7DQp9DQoNCiNsYlByZXZMaW5rLCAjbGJOZXh0TGluayB7DQoJZGlzcGxheTogYmxvY2s7DQoJcG9zaXRpb246IGFic29sdXRlOw0KCXRvcDogMDsNCgl3aWR0aDogNTAlOw0KCW91dGxpbmU6IG5vbmU7DQp9DQoNCiNsYlByZXZMaW5rIHsNCglsZWZ0OiAwOw0KfQ0KDQojbGJQcmV2TGluazpob3ZlciB7DQoJYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgdXJsKC4uL3NsaW1ib3gvY3NzL3ByZXZsYWJlbC5naWYpIG5vLXJlcGVhdCAwIDE1JTsNCn0NCg0KI2xiTmV4dExpbmsgew0KCXJpZ2h0OiAwOw0KfQ0KDQojbGJOZXh0TGluazpob3ZlciB7DQoJYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgdXJsKC4uL3NsaW1ib3gvY3NzL25leHRsYWJlbC5naWYpIG5vLXJlcGVhdCAxMDAlIDE1JTsNCn0NCg0KI2xiQm90dG9tIHsNCglmb250LWZhbWlseTogVmVyZGFuYSwgQXJpYWwsIEdlbmV2YSwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOw0KCWZvbnQtc2l6ZTogMTBweDsNCgljb2xvcjogIzY2NjsNCglsaW5lLWhlaWdodDogMS40ZW07DQoJdGV4dC1hbGlnbjogbGVmdDsNCglib3JkZXI6IDEwcHggc29saWQgI2ZmZjsNCglib3JkZXItdG9wLXN0eWxlOiBub25lOw0KfQ0KDQojbGJDbG9zZUxpbmsgew0KCWRpc3BsYXk6IGJsb2NrOw0KCWZsb2F0OiByaWdodDsNCgl3aWR0aDogNjZweDsNCgloZWlnaHQ6IDIycHg7DQoJYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgdXJsKC4uL3NsaW1ib3gvY3NzL2Nsb3NlbGFiZWwuZ2lmKSBuby1yZXBlYXQgY2VudGVyOw0KCW1hcmdpbjogNXB4IDA7DQoJb3V0bGluZTogbm9uZTsNCn0NCg0KI2xiQ2FwdGlvbiwgI2xiTnVtYmVyIHsNCgltYXJnaW4tcmlnaHQ6IDcxcHg7DQp9DQoNCiNsYkNhcHRpb24gew0KCWZvbnQtd2VpZ2h0OiBib2xkOw0KfQ0KDQp7Ki0tLS0tLS0tLS0NCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Im1vZHVsZXMvR2FsbGVyeS90ZW1wbGF0ZXMvanF1ZXJ5L2pxdWVyeS5qcyI+PC9zY3JpcHQ+DQo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJtb2R1bGVzL0dhbGxlcnkvdGVtcGxhdGVzL3NsaW1ib3gvanMvc2xpbWJveDIuanMiPjwvc2NyaXB0Pg0KKn0=]]></data>
	</file>
	<file>
	  <filename>/templates/template_thickbox.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBjbGFzcz0iZ2FsbGVyeSI+DQp7aWYgIWVtcHR5KCRtb2R1bGVfbWVzc2FnZSl9PGg0PnskbW9kdWxlX21lc3NhZ2V8ZXNjYXBlfTwvaDQ+ey9pZn0NCntpZiAhZW1wdHkoJGdhbGxlcnl0aXRsZSl9PGgzPnskZ2FsbGVyeXRpdGxlfTwvaDM+ey9pZn0NCntpZiAhZW1wdHkoJGdhbGxlcnljb21tZW50KX08ZGl2IGNsYXNzPSJnYWxsZXJ5Y29tbWVudCI+eyRnYWxsZXJ5Y29tbWVudH08L2Rpdj57L2lmfQ0KPHA+eyRpbWFnZWNvdW50fTwvcD4NCjxkaXYgY2xhc3M9InBhZ2VuYXZpZ2F0aW9uIj4NCntpZiAkcGFnZXMgPiAxfQ0KPGRpdiBjbGFzcz0icHJldnBhZ2UiPnskcHJldnBhZ2V9PC9kaXY+DQo8ZGl2IGNsYXNzPSJuZXh0cGFnZSI+eyRuZXh0cGFnZX08L2Rpdj4NCnsvaWZ9DQp7aWYgISRoaWRlcGFyZW50bGluayAmJiAhZW1wdHkoJHBhcmVudGxpbmspfTxkaXYgY2xhc3M9InBhcmVudGxpbmsiPnskcGFyZW50bGlua308L2Rpdj57L2lmfQ0Ke2lmICRwYWdlcyA+IDF9PGRpdiBjbGFzcz0icGFnZWxpbmtzIj57JHBhZ2VsaW5rc308L2Rpdj57L2lmfQ0KPC9kaXY+DQoNCntmb3JlYWNoIGZyb209JGltYWdlcyBpdGVtPWltYWdlfQ0KCTxkaXYgY2xhc3M9ImltZyI+DQoJe2lmICRpbWFnZS0+aXNkaXJ9DQoJCTxhIGhyZWY9InskaW1hZ2UtPmZpbGV9IiB0aXRsZT0ieyRpbWFnZS0+dGl0bGV9Ij48aW1nIHNyYz0ieyRpbWFnZS0+dGh1bWJ9IiBhbHQ9InskaW1hZ2UtPnRpdGxlfSIgLz48L2E+PGJyIC8+DQoJCXskaW1hZ2UtPnRpdGxlfQ0KCXtlbHNlfQ0KICAgPGEgaHJlZj0ieyRpbWFnZS0+ZmlsZX0iIHRpdGxlPSJ7JGltYWdlLT50aXRsZX0iIGNsYXNzPSJ0aGlja2JveCIgcmVsPSJnYWxsZXJ5Ij48aW1nIHNyYz0ieyRpbWFnZS0+dGh1bWJ9IiBhbHQ9InskaW1hZ2UtPnRpdGxlfSIgLz48L2E+DQoJey9pZn0NCgk8L2Rpdj4NCnsvZm9yZWFjaH0NCjxkaXYgY2xhc3M9ImdhbGxlcnljbGVhciI+Jm5ic3A7PC9kaXY+DQo8L2Rpdj4NCg0KDQp7Ki0tLS0tLS0tLS0NCi5nYWxsZXJ5Y2xlYXIgew0KCWNsZWFyOiBib3RoOw0KfQ0KDQouZ2FsbGVyeSAuaW1nIHsNCglmbG9hdDogbGVmdDsNCgltYXJnaW46IDNweDsNCgl0ZXh0LWFsaWduOiBjZW50ZXI7DQp9DQoNCi5nYWxsZXJ5IC5wYWdlbmF2aWdhdGlvbiB7DQoJaGVpZ2h0OiA1MHB4Ow0KfQ0KDQouZ2FsbGVyeSAucHJldnBhZ2UgYSwgLmdhbGxlcnkgLnByZXZwYWdlIGVtIHsNCglkaXNwbGF5OiBibG9jazsgDQoJd2lkdGg6IDUwcHg7IA0KCWhlaWdodDogMzlweDsNCglmbG9hdDogbGVmdDsgDQoJbWFyZ2luOiAwOw0KCXRleHQtaW5kZW50OiAtMTAwMHB4Ow0KCWJhY2tncm91bmQ6IHVybCguLi8uLi9pbWFnZXMvcHJldmlvdXMucG5nKSB0cmFuc3BhcmVudCBuby1yZXBlYXQgMCAwOw0KfQ0KDQouZ2FsbGVyeSAubmV4dHBhZ2UgYSwgLmdhbGxlcnkgLm5leHRwYWdlIGVtIHsNCglkaXNwbGF5OiBibG9jazsgDQoJd2lkdGg6IDUwcHg7IA0KCWhlaWdodDogMzlweDsNCglmbG9hdDogbGVmdDsgDQoJbWFyZ2luOiAwIDZweCAwIDA7DQoJdGV4dC1pbmRlbnQ6IC0xMDAwcHg7DQoJYmFja2dyb3VuZDogdXJsKC4uLy4uL2ltYWdlcy9uZXh0LnBuZykgdHJhbnNwYXJlbnQgbm8tcmVwZWF0IDAgMDsNCn0NCg0KLmdhbGxlcnkgLnBhcmVudGxpbmsgYSB7DQoJZGlzcGxheTogYmxvY2s7IA0KCXdpZHRoOiA1MHB4OyANCgloZWlnaHQ6IDM5cHg7DQoJZmxvYXQ6IGxlZnQ7IA0KCXRleHQtaW5kZW50OiAtMTAwMHB4Ow0KCWJhY2tncm91bmQ6IHVybCguLi8uLi9pbWFnZXMvdXBwYWdlLnBuZykgdHJhbnNwYXJlbnQgbm8tcmVwZWF0IDAgMDsNCn0NCg0KLmdhbGxlcnkgLnBhZ2VuYXZpZ2F0aW9uIGE6aG92ZXIgew0KCWJhY2tncm91bmQtcG9zaXRpb246IDAgLTQwcHg7DQp9DQoNCi5nYWxsZXJ5IC5wcmV2cGFnZSBlbSwgLmdhbGxlcnkgLm5leHRwYWdlIGVtIHsNCgliYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIC04MHB4Ow0KfQ0KDQouZ2FsbGVyeSAucGFnZWxpbmtzIHsNCglmbG9hdDogcmlnaHQ7DQoJYm9yZGVyLXJpZ2h0OiAycHggc29saWQgIzY2NjsNCn0NCg0KLmdhbGxlcnkgLnBhZ2VsaW5rcyBhLCAuZ2FsbGVyeSAucGFnZWxpbmtzIGVtIHsNCgltYXJnaW4tdG9wOiA2cHg7DQoJcGFkZGluZzogMCA2cHg7DQoJYm9yZGVyLWxlZnQ6IDJweCBzb2xpZCAjNjY2Ow0KCXRleHQtYWxpZ246IGNlbnRlcjsNCglmb250OiBib2xkIDExcHggdmVyZGFuYTsgY29sb3I6ICM2NjY7DQp9DQoNCi5nYWxsZXJ5IC5wYWdlbGlua3MgZW0gew0KCWNvbG9yOiAjMDAwOw0KfQ0KDQoNCi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLyogLS0tLS0tLS0tLT4+PiBnbG9iYWwgc2V0dGluZ3MgbmVlZGVkIGZvciB0aGlja2JveCA8PDwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQovKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCip7cGFkZGluZzogMDsgbWFyZ2luOiAwO30NCg0KLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQovKiAtLS0tLS0tLS0tPj4+IHRoaWNrYm94IHNwZWNpZmljIGxpbmsgYW5kIGZvbnQgc2V0dGluZ3MgPDw8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KI1RCX3dpbmRvdyB7DQoJZm9udDogMTJweCBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOw0KCWNvbG9yOiAjMzMzMzMzOw0KfQ0KDQojVEJfc2Vjb25kTGluZSB7DQoJZm9udDogMTBweCBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOw0KCWNvbG9yOiM2NjY2NjY7DQp9DQoNCiNUQl93aW5kb3cgYTpsaW5rIHtjb2xvcjogIzY2NjY2Njt9DQojVEJfd2luZG93IGE6dmlzaXRlZCB7Y29sb3I6ICM2NjY2NjY7fQ0KI1RCX3dpbmRvdyBhOmhvdmVyIHtjb2xvcjogIzAwMDt9DQojVEJfd2luZG93IGE6YWN0aXZlIHtjb2xvcjogIzY2NjY2Njt9DQojVEJfd2luZG93IGE6Zm9jdXN7Y29sb3I6ICM2NjY2NjY7fQ0KDQovKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi8qIC0tLS0tLS0tLS0+Pj4gdGhpY2tib3ggc2V0dGluZ3MgPDw8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQojVEJfb3ZlcmxheSB7DQoJcG9zaXRpb246IGZpeGVkOw0KCXotaW5kZXg6MTAwOw0KCXRvcDogMHB4Ow0KCWxlZnQ6IDBweDsNCgloZWlnaHQ6MTAwJTsNCgl3aWR0aDoxMDAlOw0KfQ0KDQouVEJfb3ZlcmxheU1hY0ZGQkdIYWNrIHtiYWNrZ3JvdW5kOiB1cmwobW9kdWxlcy9HYWxsZXJ5L3RlbXBsYXRlcy90aGlja2JveC9tYWNGRkJnSGFjay5wbmcpIHJlcGVhdDt9DQouVEJfb3ZlcmxheUJHIHsNCgliYWNrZ3JvdW5kLWNvbG9yOiMwMDA7DQoJZmlsdGVyOmFscGhhKG9wYWNpdHk9NzUpOw0KCS1tb3otb3BhY2l0eTogMC43NTsNCglvcGFjaXR5OiAwLjc1Ow0KfQ0KDQoqIGh0bWwgI1RCX292ZXJsYXkgeyAvKiBpZTYgaGFjayAqLw0KICAgICBwb3NpdGlvbjogYWJzb2x1dGU7DQogICAgIGhlaWdodDogZXhwcmVzc2lvbihkb2N1bWVudC5ib2R5LnNjcm9sbEhlaWdodCA+IGRvY3VtZW50LmJvZHkub2Zmc2V0SGVpZ2h0ID8gZG9jdW1lbnQuYm9keS5zY3JvbGxIZWlnaHQgOiBkb2N1bWVudC5ib2R5Lm9mZnNldEhlaWdodCArICdweCcpOw0KfQ0KDQojVEJfd2luZG93IHsNCglwb3NpdGlvbjogZml4ZWQ7DQoJYmFja2dyb3VuZDogI2ZmZmZmZjsNCgl6LWluZGV4OiAxMDI7DQoJY29sb3I6IzAwMDAwMDsNCglkaXNwbGF5Om5vbmU7DQoJYm9yZGVyOiA0cHggc29saWQgIzUyNTI1MjsNCgl0ZXh0LWFsaWduOmxlZnQ7DQoJdG9wOjUwJTsNCglsZWZ0OjUwJTsNCn0NCg0KKiBodG1sICNUQl93aW5kb3cgeyAvKiBpZTYgaGFjayAqLw0KcG9zaXRpb246IGFic29sdXRlOw0KbWFyZ2luLXRvcDogZXhwcmVzc2lvbigwIC0gcGFyc2VJbnQodGhpcy5vZmZzZXRIZWlnaHQgLyAyKSArIChUQldpbmRvd01hcmdpbiA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCAmJiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wIHx8IGRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wKSArICdweCcpOw0KfQ0KDQojVEJfd2luZG93IGltZyNUQl9JbWFnZSB7DQoJZGlzcGxheTpibG9jazsNCgltYXJnaW46IDE1cHggMCAwIDE1cHg7DQoJYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgI2NjYzsNCglib3JkZXItYm90dG9tOiAxcHggc29saWQgI2NjYzsNCglib3JkZXItdG9wOiAxcHggc29saWQgIzY2NjsNCglib3JkZXItbGVmdDogMXB4IHNvbGlkICM2NjY7DQp9DQoNCiNUQl9jYXB0aW9uew0KCWhlaWdodDoyNXB4Ow0KCXBhZGRpbmc6N3B4IDMwcHggMTBweCAyNXB4Ow0KCWZsb2F0OmxlZnQ7DQp9DQoNCiNUQl9jbG9zZVdpbmRvd3sNCgloZWlnaHQ6MjVweDsNCglwYWRkaW5nOjExcHggMjVweCAxMHB4IDA7DQoJZmxvYXQ6cmlnaHQ7DQp9DQoNCiNUQl9jbG9zZUFqYXhXaW5kb3d7DQoJcGFkZGluZzo3cHggMTBweCA1cHggMDsNCgltYXJnaW4tYm90dG9tOjFweDsNCgl0ZXh0LWFsaWduOnJpZ2h0Ow0KCWZsb2F0OnJpZ2h0Ow0KfQ0KDQojVEJfYWpheFdpbmRvd1RpdGxlew0KCWZsb2F0OmxlZnQ7DQoJcGFkZGluZzo3cHggMCA1cHggMTBweDsNCgltYXJnaW4tYm90dG9tOjFweDsNCn0NCg0KI1RCX3RpdGxlew0KCWJhY2tncm91bmQtY29sb3I6I2U4ZThlODsNCgloZWlnaHQ6MjdweDsNCn0NCg0KI1RCX2FqYXhDb250ZW50ew0KCWNsZWFyOmJvdGg7DQoJcGFkZGluZzoycHggMTVweCAxNXB4IDE1cHg7DQoJb3ZlcmZsb3c6YXV0bzsNCgl0ZXh0LWFsaWduOmxlZnQ7DQoJbGluZS1oZWlnaHQ6MS40ZW07DQp9DQoNCiNUQl9hamF4Q29udGVudC5UQl9tb2RhbHsNCglwYWRkaW5nOjE1cHg7DQp9DQoNCiNUQl9hamF4Q29udGVudCBwew0KCXBhZGRpbmc6NXB4IDBweCA1cHggMHB4Ow0KfQ0KDQojVEJfbG9hZHsNCglwb3NpdGlvbjogZml4ZWQ7DQoJZGlzcGxheTpub25lOw0KCWhlaWdodDoxM3B4Ow0KCXdpZHRoOjIwOHB4Ow0KCXotaW5kZXg6MTAzOw0KCXRvcDogNTAlOw0KCWxlZnQ6IDUwJTsNCgltYXJnaW46IC02cHggMCAwIC0xMDRweDsgLyogLWhlaWdodC8yIDAgMCAtd2lkdGgvMiAqLw0KfQ0KDQoqIGh0bWwgI1RCX2xvYWQgeyAvKiBpZTYgaGFjayAqLw0KcG9zaXRpb246IGFic29sdXRlOw0KbWFyZ2luLXRvcDogZXhwcmVzc2lvbigwIC0gcGFyc2VJbnQodGhpcy5vZmZzZXRIZWlnaHQgLyAyKSArIChUQldpbmRvd01hcmdpbiA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCAmJiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wIHx8IGRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wKSArICdweCcpOw0KfQ0KDQojVEJfSGlkZVNlbGVjdHsNCgl6LWluZGV4Ojk5Ow0KCXBvc2l0aW9uOmZpeGVkOw0KCXRvcDogMDsNCglsZWZ0OiAwOw0KCWJhY2tncm91bmQtY29sb3I6I2ZmZjsNCglib3JkZXI6bm9uZTsNCglmaWx0ZXI6YWxwaGEob3BhY2l0eT0wKTsNCgktbW96LW9wYWNpdHk6IDA7DQoJb3BhY2l0eTogMDsNCgloZWlnaHQ6MTAwJTsNCgl3aWR0aDoxMDAlOw0KfQ0KDQoqIGh0bWwgI1RCX0hpZGVTZWxlY3QgeyAvKiBpZTYgaGFjayAqLw0KICAgICBwb3NpdGlvbjogYWJzb2x1dGU7DQogICAgIGhlaWdodDogZXhwcmVzc2lvbihkb2N1bWVudC5ib2R5LnNjcm9sbEhlaWdodCA+IGRvY3VtZW50LmJvZHkub2Zmc2V0SGVpZ2h0ID8gZG9jdW1lbnQuYm9keS5zY3JvbGxIZWlnaHQgOiBkb2N1bWVudC5ib2R5Lm9mZnNldEhlaWdodCArICdweCcpOw0KfQ0KDQojVEJfaWZyYW1lQ29udGVudHsNCgljbGVhcjpib3RoOw0KCWJvcmRlcjpub25lOw0KCW1hcmdpbi1ib3R0b206LTFweDsNCgltYXJnaW4tdG9wOjFweDsNCglfbWFyZ2luLWJvdHRvbToxcHg7DQp9DQoNCnsqLS0tLS0tLS0tLQ0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ibW9kdWxlcy9HYWxsZXJ5L3RlbXBsYXRlcy9qcXVlcnkvanF1ZXJ5LmpzIj48L3NjcmlwdD4NCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Im1vZHVsZXMvR2FsbGVyeS90ZW1wbGF0ZXMvdGhpY2tib3gvdGhpY2tib3guanMiPjwvc2NyaXB0Pg0KKn0=]]></data>
	</file>
	<file>
	  <filename>/templates/thickbox/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/thickbox/loadingAnimation.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/templates/thickbox/macFFBgHack.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABkAAAAZCAYAAADE6YVjAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABx0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTM5jWRgMAAAAVdEVYdENyZWF0aW9uIFRpbWUANy8xNi8wN1qn/wsAAAAoSURBVEiJ7c1BAQAwCAAhtH+nVVsKf0cBBs+xvQ5KSkpKSkpKSkrAB1nRAPEf/J+FAAAAAElFTkSuQmCC]]></data>
	</file>
	<file>
	  <filename>/templates/thickbox/thickbox.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi8qIC0tLS0tLS0tLS0+Pj4gZ2xvYmFsIHNldHRpbmdzIG5lZWRlZCBmb3IgdGhpY2tib3ggPDw8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwovKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKntwYWRkaW5nOiAwOyBtYXJnaW46IDA7fQoKLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi8qIC0tLS0tLS0tLS0+Pj4gdGhpY2tib3ggc3BlY2lmaWMgbGluayBhbmQgZm9udCBzZXR0aW5ncyA8PDwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwovKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KI1RCX3dpbmRvdyB7Cglmb250OiAxMnB4IEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7Cgljb2xvcjogIzMzMzMzMzsKfQoKI1RCX3NlY29uZExpbmUgewoJZm9udDogMTBweCBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOwoJY29sb3I6IzY2NjY2NjsKfQoKI1RCX3dpbmRvdyBhOmxpbmsge2NvbG9yOiAjNjY2NjY2O30KI1RCX3dpbmRvdyBhOnZpc2l0ZWQge2NvbG9yOiAjNjY2NjY2O30KI1RCX3dpbmRvdyBhOmhvdmVyIHtjb2xvcjogIzAwMDt9CiNUQl93aW5kb3cgYTphY3RpdmUge2NvbG9yOiAjNjY2NjY2O30KI1RCX3dpbmRvdyBhOmZvY3Vze2NvbG9yOiAjNjY2NjY2O30KCi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwovKiAtLS0tLS0tLS0tPj4+IHRoaWNrYm94IHNldHRpbmdzIDw8PC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiNUQl9vdmVybGF5IHsKCXBvc2l0aW9uOiBmaXhlZDsKCXotaW5kZXg6MTAwOwoJdG9wOiAwcHg7CglsZWZ0OiAwcHg7CgloZWlnaHQ6MTAwJTsKCXdpZHRoOjEwMCU7Cn0KCi5UQl9vdmVybGF5TWFjRkZCR0hhY2sge2JhY2tncm91bmQ6IHVybChtb2R1bGVzL0dhbGxlcnkvdGVtcGxhdGVzL3RoaWNrYm94L21hY0ZGQmdIYWNrLnBuZykgcmVwZWF0O30KLlRCX292ZXJsYXlCRyB7CgliYWNrZ3JvdW5kLWNvbG9yOiMwMDA7CglmaWx0ZXI6YWxwaGEob3BhY2l0eT03NSk7CgktbW96LW9wYWNpdHk6IDAuNzU7CglvcGFjaXR5OiAwLjc1Owp9CgoqIGh0bWwgI1RCX292ZXJsYXkgeyAvKiBpZTYgaGFjayAqLwogICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICBoZWlnaHQ6IGV4cHJlc3Npb24oZG9jdW1lbnQuYm9keS5zY3JvbGxIZWlnaHQgPiBkb2N1bWVudC5ib2R5Lm9mZnNldEhlaWdodCA/IGRvY3VtZW50LmJvZHkuc2Nyb2xsSGVpZ2h0IDogZG9jdW1lbnQuYm9keS5vZmZzZXRIZWlnaHQgKyAncHgnKTsKfQoKI1RCX3dpbmRvdyB7Cglwb3NpdGlvbjogZml4ZWQ7CgliYWNrZ3JvdW5kOiAjZmZmZmZmOwoJei1pbmRleDogMTAyOwoJY29sb3I6IzAwMDAwMDsKCWRpc3BsYXk6bm9uZTsKCWJvcmRlcjogNHB4IHNvbGlkICM1MjUyNTI7Cgl0ZXh0LWFsaWduOmxlZnQ7Cgl0b3A6NTAlOwoJbGVmdDo1MCU7Cn0KCiogaHRtbCAjVEJfd2luZG93IHsgLyogaWU2IGhhY2sgKi8KcG9zaXRpb246IGFic29sdXRlOwptYXJnaW4tdG9wOiBleHByZXNzaW9uKDAgLSBwYXJzZUludCh0aGlzLm9mZnNldEhlaWdodCAvIDIpICsgKFRCV2luZG93TWFyZ2luID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50ICYmIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3AgfHwgZG9jdW1lbnQuYm9keS5zY3JvbGxUb3ApICsgJ3B4Jyk7Cn0KCiNUQl93aW5kb3cgaW1nI1RCX0ltYWdlIHsKCWRpc3BsYXk6YmxvY2s7CgltYXJnaW46IDE1cHggMCAwIDE1cHg7Cglib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAjY2NjOwoJYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNjY2M7Cglib3JkZXItdG9wOiAxcHggc29saWQgIzY2NjsKCWJvcmRlci1sZWZ0OiAxcHggc29saWQgIzY2NjsKfQoKI1RCX2NhcHRpb257CgloZWlnaHQ6MjVweDsKCXBhZGRpbmc6N3B4IDMwcHggMTBweCAyNXB4OwoJZmxvYXQ6bGVmdDsKfQoKI1RCX2Nsb3NlV2luZG93ewoJaGVpZ2h0OjI1cHg7CglwYWRkaW5nOjExcHggMjVweCAxMHB4IDA7CglmbG9hdDpyaWdodDsKfQoKI1RCX2Nsb3NlQWpheFdpbmRvd3sKCXBhZGRpbmc6N3B4IDEwcHggNXB4IDA7CgltYXJnaW4tYm90dG9tOjFweDsKCXRleHQtYWxpZ246cmlnaHQ7CglmbG9hdDpyaWdodDsKfQoKI1RCX2FqYXhXaW5kb3dUaXRsZXsKCWZsb2F0OmxlZnQ7CglwYWRkaW5nOjdweCAwIDVweCAxMHB4OwoJbWFyZ2luLWJvdHRvbToxcHg7Cn0KCiNUQl90aXRsZXsKCWJhY2tncm91bmQtY29sb3I6I2U4ZThlODsKCWhlaWdodDoyN3B4Owp9CgojVEJfYWpheENvbnRlbnR7CgljbGVhcjpib3RoOwoJcGFkZGluZzoycHggMTVweCAxNXB4IDE1cHg7CglvdmVyZmxvdzphdXRvOwoJdGV4dC1hbGlnbjpsZWZ0OwoJbGluZS1oZWlnaHQ6MS40ZW07Cn0KCiNUQl9hamF4Q29udGVudC5UQl9tb2RhbHsKCXBhZGRpbmc6MTVweDsKfQoKI1RCX2FqYXhDb250ZW50IHB7CglwYWRkaW5nOjVweCAwcHggNXB4IDBweDsKfQoKI1RCX2xvYWR7Cglwb3NpdGlvbjogZml4ZWQ7CglkaXNwbGF5Om5vbmU7CgloZWlnaHQ6MTNweDsKCXdpZHRoOjIwOHB4OwoJei1pbmRleDoxMDM7Cgl0b3A6IDUwJTsKCWxlZnQ6IDUwJTsKCW1hcmdpbjogLTZweCAwIDAgLTEwNHB4OyAvKiAtaGVpZ2h0LzIgMCAwIC13aWR0aC8yICovCn0KCiogaHRtbCAjVEJfbG9hZCB7IC8qIGllNiBoYWNrICovCnBvc2l0aW9uOiBhYnNvbHV0ZTsKbWFyZ2luLXRvcDogZXhwcmVzc2lvbigwIC0gcGFyc2VJbnQodGhpcy5vZmZzZXRIZWlnaHQgLyAyKSArIChUQldpbmRvd01hcmdpbiA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCAmJiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wIHx8IGRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wKSArICdweCcpOwp9CgojVEJfSGlkZVNlbGVjdHsKCXotaW5kZXg6OTk7Cglwb3NpdGlvbjpmaXhlZDsKCXRvcDogMDsKCWxlZnQ6IDA7CgliYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Cglib3JkZXI6bm9uZTsKCWZpbHRlcjphbHBoYShvcGFjaXR5PTApOwoJLW1vei1vcGFjaXR5OiAwOwoJb3BhY2l0eTogMDsKCWhlaWdodDoxMDAlOwoJd2lkdGg6MTAwJTsKfQoKKiBodG1sICNUQl9IaWRlU2VsZWN0IHsgLyogaWU2IGhhY2sgKi8KICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgaGVpZ2h0OiBleHByZXNzaW9uKGRvY3VtZW50LmJvZHkuc2Nyb2xsSGVpZ2h0ID4gZG9jdW1lbnQuYm9keS5vZmZzZXRIZWlnaHQgPyBkb2N1bWVudC5ib2R5LnNjcm9sbEhlaWdodCA6IGRvY3VtZW50LmJvZHkub2Zmc2V0SGVpZ2h0ICsgJ3B4Jyk7Cn0KCiNUQl9pZnJhbWVDb250ZW50ewoJY2xlYXI6Ym90aDsKCWJvcmRlcjpub25lOwoJbWFyZ2luLWJvdHRvbTotMXB4OwoJbWFyZ2luLXRvcDoxcHg7CglfbWFyZ2luLWJvdHRvbToxcHg7Cn0K]]></data>
	</file>
	<file>
	  <filename>/templates/thickbox/thickbox.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoNCiAqIFRoaWNrYm94IDMuMSAtIE9uZSBCb3ggVG8gUnVsZSBUaGVtIEFsbC4NCiAqIEJ5IENvZHkgTGluZGxleSAoaHR0cDovL3d3dy5jb2R5bGluZGxleS5jb20pDQogKiBDb3B5cmlnaHQgKGMpIDIwMDcgY29keSBsaW5kbGV5DQogKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2U6IGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwDQogKg0KICogUGF0Y2hlZCBWZXJzaW9uIGJ5IEphbWllIFRob21wc29uIC0gRml4ZXMgSUU3IFBvc2l0aW9uaW5nIElzc3Vlcw0KICogaHR0cDovL2phbWF6b24uY28udWsvd2ViLzIwMDgvMDMvMTcvdGhpY2tib3gtMzEtaWU3LXBvc2l0aW9uaW5nLWJ1Zy8NCiovDQoNCnZhciB0Yl9wYXRoVG9JbWFnZSA9ICJsb2FkaW5nQW5pbWF0aW9uLmdpZiI7DQoNCi8qISEhISEhISEhISEhISEhISEgZWRpdCBiZWxvdyB0aGlzIGxpbmUgYXQgeW91ciBvd24gcmlzayAhISEhISEhISEhISEhISEhISEhISEhISovDQoNCi8vIGZpeGVzIHRoZSBmYWN0IHRoYXQgaWU3IG5vdyByZXBvcnRzIGl0c2VsZiBhcyBNU0lFIDYuMCBjb21wYXRpYmxlDQokLmJyb3dzZXIubXNpZTYgPQ0KICAgICAgICAkLmJyb3dzZXIubXNpZQ0KICAgICAgICAmJiAvTVNJRSA2XC4wL2kudGVzdCh3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudCkNCiAgICAgICAgJiYgIS9NU0lFIDdcLjAvaS50ZXN0KHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50KQ0KICAgICAgICAmJiAhL01TSUUgOFwuMC9pLnRlc3Qod2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQpOw0KDQovL29uIHBhZ2UgbG9hZCBjYWxsIHRiX2luaXQNCiQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCl7ICAgDQoJdGJfaW5pdCgnYS50aGlja2JveCwgYXJlYS50aGlja2JveCwgaW5wdXQudGhpY2tib3gnKTsvL3Bhc3Mgd2hlcmUgdG8gYXBwbHkgdGhpY2tib3gNCglpbWdMb2FkZXIgPSBuZXcgSW1hZ2UoKTsvLyBwcmVsb2FkIGltYWdlDQoJaW1nTG9hZGVyLnNyYyA9IHRiX3BhdGhUb0ltYWdlOw0KfSk7DQoNCi8vYWRkIHRoaWNrYm94IHRvIGhyZWYgJiBhcmVhIGVsZW1lbnRzIHRoYXQgaGF2ZSBhIGNsYXNzIG9mIC50aGlja2JveA0KZnVuY3Rpb24gdGJfaW5pdChkb21DaHVuayl7DQoJJChkb21DaHVuaykuY2xpY2soZnVuY3Rpb24oKXsNCgl2YXIgdCA9IHRoaXMudGl0bGUgfHwgdGhpcy5uYW1lIHx8IG51bGw7DQoJdmFyIGEgPSB0aGlzLmhyZWYgfHwgdGhpcy5hbHQ7DQoJdmFyIGcgPSB0aGlzLnJlbCB8fCBmYWxzZTsNCgl0Yl9zaG93KHQsYSxnKTsNCgl0aGlzLmJsdXIoKTsNCglyZXR1cm4gZmFsc2U7DQoJfSk7DQp9DQoNCmZ1bmN0aW9uIHRiX3Nob3coY2FwdGlvbiwgdXJsLCBpbWFnZUdyb3VwKSB7Ly9mdW5jdGlvbiBjYWxsZWQgd2hlbiB0aGUgdXNlciBjbGlja3Mgb24gYSB0aGlja2JveCBsaW5rDQoNCgl0cnkgew0KCQlpZiAodHlwZW9mIGRvY3VtZW50LmJvZHkuc3R5bGUubWF4SGVpZ2h0ID09PSAidW5kZWZpbmVkIikgey8vaWYgSUUgNg0KCQkJJCgiYm9keSIsImh0bWwiKS5jc3Moe2hlaWdodDogIjEwMCUiLCB3aWR0aDogIjEwMCUifSk7DQoJCQkkKCJodG1sIikuY3NzKCJvdmVyZmxvdyIsImhpZGRlbiIpOw0KCQkJaWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJUQl9IaWRlU2VsZWN0IikgPT09IG51bGwpIHsvL2lmcmFtZSB0byBoaWRlIHNlbGVjdCBlbGVtZW50cyBpbiBpZTYNCgkJCQkkKCJib2R5IikuYXBwZW5kKCI8aWZyYW1lIGlkPSdUQl9IaWRlU2VsZWN0Jz48L2lmcmFtZT48ZGl2IGlkPSdUQl9vdmVybGF5Jz48L2Rpdj48ZGl2IGlkPSdUQl93aW5kb3cnPjwvZGl2PiIpOw0KCQkJCSQoIiNUQl9vdmVybGF5IikuY2xpY2sodGJfcmVtb3ZlKTsNCgkJCX0NCgkJfWVsc2V7Ly9hbGwgb3RoZXJzDQoJCQlpZihkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiVEJfb3ZlcmxheSIpID09PSBudWxsKXsNCgkJCQkkKCJib2R5IikuYXBwZW5kKCI8ZGl2IGlkPSdUQl9vdmVybGF5Jz48L2Rpdj48ZGl2IGlkPSdUQl93aW5kb3cnPjwvZGl2PiIpOw0KCQkJCSQoIiNUQl9vdmVybGF5IikuY2xpY2sodGJfcmVtb3ZlKTsNCgkJCX0NCgkJfQ0KCQkNCgkJaWYodGJfZGV0ZWN0TWFjWEZGKCkpew0KCQkJJCgiI1RCX292ZXJsYXkiKS5hZGRDbGFzcygiVEJfb3ZlcmxheU1hY0ZGQkdIYWNrIik7Ly91c2UgcG5nIG92ZXJsYXkgc28gaGlkZSBmbGFzaA0KCQl9ZWxzZXsNCgkJCSQoIiNUQl9vdmVybGF5IikuYWRkQ2xhc3MoIlRCX292ZXJsYXlCRyIpOy8vdXNlIGJhY2tncm91bmQgYW5kIG9wYWNpdHkNCgkJfQ0KCQkNCgkJaWYoY2FwdGlvbj09PW51bGwpe2NhcHRpb249IiI7fQ0KCQkkKCJib2R5IikuYXBwZW5kKCI8ZGl2IGlkPSdUQl9sb2FkJz48aW1nIHNyYz0nIitpbWdMb2FkZXIuc3JjKyInIC8+PC9kaXY+Iik7Ly9hZGQgbG9hZGVyIHRvIHRoZSBwYWdlDQoJCSQoJyNUQl9sb2FkJykuc2hvdygpOy8vc2hvdyBsb2FkZXINCgkJDQoJCXZhciBiYXNlVVJMOw0KCSAgIGlmKHVybC5pbmRleE9mKCI/IikhPT0tMSl7IC8vZmYgdGhlcmUgaXMgYSBxdWVyeSBzdHJpbmcgaW52b2x2ZWQNCgkJCWJhc2VVUkwgPSB1cmwuc3Vic3RyKDAsIHVybC5pbmRleE9mKCI/IikpOw0KCSAgIH1lbHNleyANCgkgICAJCWJhc2VVUkwgPSB1cmw7DQoJICAgfQ0KCSAgIA0KCSAgIHZhciB1cmxTdHJpbmcgPSAvXC5qcGckfFwuanBlZyR8XC5wbmckfFwuZ2lmJHxcLmJtcCQvOw0KCSAgIHZhciB1cmxUeXBlID0gYmFzZVVSTC50b0xvd2VyQ2FzZSgpLm1hdGNoKHVybFN0cmluZyk7DQoNCgkJaWYodXJsVHlwZSA9PSAnLmpwZycgfHwgdXJsVHlwZSA9PSAnLmpwZWcnIHx8IHVybFR5cGUgPT0gJy5wbmcnIHx8IHVybFR5cGUgPT0gJy5naWYnIHx8IHVybFR5cGUgPT0gJy5ibXAnKXsvL2NvZGUgdG8gc2hvdyBpbWFnZXMNCgkJCQkNCgkJCVRCX1ByZXZDYXB0aW9uID0gIiI7DQoJCQlUQl9QcmV2VVJMID0gIiI7DQoJCQlUQl9QcmV2SFRNTCA9ICIiOw0KCQkJVEJfTmV4dENhcHRpb24gPSAiIjsNCgkJCVRCX05leHRVUkwgPSAiIjsNCgkJCVRCX05leHRIVE1MID0gIiI7DQoJCQlUQl9pbWFnZUNvdW50ID0gIiI7DQoJCQlUQl9Gb3VuZFVSTCA9IGZhbHNlOw0KCQkJaWYoaW1hZ2VHcm91cCl7DQoJCQkJVEJfVGVtcEFycmF5ID0gJCgiYVtyZWw9IitpbWFnZUdyb3VwKyJdIikuZ2V0KCk7DQoJCQkJZm9yIChUQl9Db3VudGVyID0gMDsgKChUQl9Db3VudGVyIDwgVEJfVGVtcEFycmF5Lmxlbmd0aCkgJiYgKFRCX05leHRIVE1MID09PSAiIikpOyBUQl9Db3VudGVyKyspIHsNCgkJCQkJdmFyIHVybFR5cGVUZW1wID0gVEJfVGVtcEFycmF5W1RCX0NvdW50ZXJdLmhyZWYudG9Mb3dlckNhc2UoKS5tYXRjaCh1cmxTdHJpbmcpOw0KCQkJCQkJaWYgKCEoVEJfVGVtcEFycmF5W1RCX0NvdW50ZXJdLmhyZWYgPT0gdXJsKSkgewkJCQkJCQ0KCQkJCQkJCWlmIChUQl9Gb3VuZFVSTCkgew0KCQkJCQkJCQlUQl9OZXh0Q2FwdGlvbiA9IFRCX1RlbXBBcnJheVtUQl9Db3VudGVyXS50aXRsZTsNCgkJCQkJCQkJVEJfTmV4dFVSTCA9IFRCX1RlbXBBcnJheVtUQl9Db3VudGVyXS5ocmVmOw0KCQkJCQkJCQlUQl9OZXh0SFRNTCA9ICI8c3BhbiBpZD0nVEJfbmV4dCc+Jm5ic3A7Jm5ic3A7PGEgaHJlZj0nIyc+TmV4dCAmZ3Q7PC9hPjwvc3Bhbj4iOw0KCQkJCQkJCX0gZWxzZSB7DQoJCQkJCQkJCVRCX1ByZXZDYXB0aW9uID0gVEJfVGVtcEFycmF5W1RCX0NvdW50ZXJdLnRpdGxlOw0KCQkJCQkJCQlUQl9QcmV2VVJMID0gVEJfVGVtcEFycmF5W1RCX0NvdW50ZXJdLmhyZWY7DQoJCQkJCQkJCVRCX1ByZXZIVE1MID0gIjxzcGFuIGlkPSdUQl9wcmV2Jz4mbmJzcDsmbmJzcDs8YSBocmVmPScjJz4mbHQ7IFByZXY8L2E+PC9zcGFuPiI7DQoJCQkJCQkJfQ0KCQkJCQkJfSBlbHNlIHsNCgkJCQkJCQlUQl9Gb3VuZFVSTCA9IHRydWU7DQoJCQkJCQkJVEJfaW1hZ2VDb3VudCA9ICJJbWFnZSAiICsgKFRCX0NvdW50ZXIgKyAxKSArIiBvZiAiKyAoVEJfVGVtcEFycmF5Lmxlbmd0aCk7CQkJCQkJCQkJCQkNCgkJCQkJCX0NCgkJCQl9DQoJCQl9DQoNCgkJCWltZ1ByZWxvYWRlciA9IG5ldyBJbWFnZSgpOw0KCQkJaW1nUHJlbG9hZGVyLm9ubG9hZCA9IGZ1bmN0aW9uKCl7CQkNCgkJCWltZ1ByZWxvYWRlci5vbmxvYWQgPSBudWxsOw0KCQkJCQ0KCQkJLy8gUmVzaXppbmcgbGFyZ2UgaW1hZ2VzIC0gb3JnaW5hbCBieSBDaHJpc3RpYW4gTW9udG95YSBlZGl0ZWQgYnkgbWUuDQoJCQl2YXIgcGFnZXNpemUgPSB0Yl9nZXRQYWdlU2l6ZSgpOw0KCQkJdmFyIHggPSBwYWdlc2l6ZVswXSAtIDE1MDsNCgkJCXZhciB5ID0gcGFnZXNpemVbMV0gLSAxNTA7DQoJCQl2YXIgaW1hZ2VXaWR0aCA9IGltZ1ByZWxvYWRlci53aWR0aDsNCgkJCXZhciBpbWFnZUhlaWdodCA9IGltZ1ByZWxvYWRlci5oZWlnaHQ7DQoJCQlpZiAoaW1hZ2VXaWR0aCA+IHgpIHsNCgkJCQlpbWFnZUhlaWdodCA9IGltYWdlSGVpZ2h0ICogKHggLyBpbWFnZVdpZHRoKTsgDQoJCQkJaW1hZ2VXaWR0aCA9IHg7IA0KCQkJCWlmIChpbWFnZUhlaWdodCA+IHkpIHsgDQoJCQkJCWltYWdlV2lkdGggPSBpbWFnZVdpZHRoICogKHkgLyBpbWFnZUhlaWdodCk7IA0KCQkJCQlpbWFnZUhlaWdodCA9IHk7IA0KCQkJCX0NCgkJCX0gZWxzZSBpZiAoaW1hZ2VIZWlnaHQgPiB5KSB7IA0KCQkJCWltYWdlV2lkdGggPSBpbWFnZVdpZHRoICogKHkgLyBpbWFnZUhlaWdodCk7IA0KCQkJCWltYWdlSGVpZ2h0ID0geTsgDQoJCQkJaWYgKGltYWdlV2lkdGggPiB4KSB7IA0KCQkJCQlpbWFnZUhlaWdodCA9IGltYWdlSGVpZ2h0ICogKHggLyBpbWFnZVdpZHRoKTsgDQoJCQkJCWltYWdlV2lkdGggPSB4Ow0KCQkJCX0NCgkJCX0NCgkJCS8vIEVuZCBSZXNpemluZw0KCQkJDQoJCQlUQl9XSURUSCA9IGltYWdlV2lkdGggKyAzMDsNCgkJCVRCX0hFSUdIVCA9IGltYWdlSGVpZ2h0ICsgNjA7DQoJCQkkKCIjVEJfd2luZG93IikuYXBwZW5kKCI8YSBocmVmPScnIGlkPSdUQl9JbWFnZU9mZicgdGl0bGU9J0Nsb3NlJz48aW1nIGlkPSdUQl9JbWFnZScgc3JjPSciK3VybCsiJyB3aWR0aD0nIitpbWFnZVdpZHRoKyInIGhlaWdodD0nIitpbWFnZUhlaWdodCsiJyBhbHQ9JyIrY2FwdGlvbisiJy8+PC9hPiIgKyAiPGRpdiBpZD0nVEJfY2FwdGlvbic+IitjYXB0aW9uKyI8ZGl2IGlkPSdUQl9zZWNvbmRMaW5lJz4iICsgVEJfaW1hZ2VDb3VudCArIFRCX1ByZXZIVE1MICsgVEJfTmV4dEhUTUwgKyAiPC9kaXY+PC9kaXY+PGRpdiBpZD0nVEJfY2xvc2VXaW5kb3cnPjxhIGhyZWY9JyMnIGlkPSdUQl9jbG9zZVdpbmRvd0J1dHRvbicgdGl0bGU9J0Nsb3NlJz5jbG9zZTwvYT4gb3IgRXNjIEtleTwvZGl2PiIpOyAJCQ0KCQkJDQoJCQkkKCIjVEJfY2xvc2VXaW5kb3dCdXR0b24iKS5jbGljayh0Yl9yZW1vdmUpOw0KCQkJDQoJCQlpZiAoIShUQl9QcmV2SFRNTCA9PT0gIiIpKSB7DQoJCQkJZnVuY3Rpb24gZ29QcmV2KCl7DQoJCQkJCWlmKCQoZG9jdW1lbnQpLnVuYmluZCgiY2xpY2siLGdvUHJldikpeyQoZG9jdW1lbnQpLnVuYmluZCgiY2xpY2siLGdvUHJldik7fQ0KCQkJCQkkKCIjVEJfd2luZG93IikucmVtb3ZlKCk7DQoJCQkJCSQoImJvZHkiKS5hcHBlbmQoIjxkaXYgaWQ9J1RCX3dpbmRvdyc+PC9kaXY+Iik7DQoJCQkJCXRiX3Nob3coVEJfUHJldkNhcHRpb24sIFRCX1ByZXZVUkwsIGltYWdlR3JvdXApOw0KCQkJCQlyZXR1cm4gZmFsc2U7CQ0KCQkJCX0NCgkJCQkkKCIjVEJfcHJldiIpLmNsaWNrKGdvUHJldik7DQoJCQl9DQoJCQkNCgkJCWlmICghKFRCX05leHRIVE1MID09PSAiIikpIHsJCQ0KCQkJCWZ1bmN0aW9uIGdvTmV4dCgpew0KCQkJCQkkKCIjVEJfd2luZG93IikucmVtb3ZlKCk7DQoJCQkJCSQoImJvZHkiKS5hcHBlbmQoIjxkaXYgaWQ9J1RCX3dpbmRvdyc+PC9kaXY+Iik7DQoJCQkJCXRiX3Nob3coVEJfTmV4dENhcHRpb24sIFRCX05leHRVUkwsIGltYWdlR3JvdXApOwkJCQkNCgkJCQkJcmV0dXJuIGZhbHNlOwkNCgkJCQl9DQoJCQkJJCgiI1RCX25leHQiKS5jbGljayhnb05leHQpOw0KCQkJCQ0KCQkJfQ0KDQoJCQlkb2N1bWVudC5vbmtleWRvd24gPSBmdW5jdGlvbihlKXsgCQ0KCQkJCWlmIChlID09IG51bGwpIHsgLy8gaWUNCgkJCQkJa2V5Y29kZSA9IGV2ZW50LmtleUNvZGU7DQoJCQkJfSBlbHNlIHsgLy8gbW96aWxsYQ0KCQkJCQlrZXljb2RlID0gZS53aGljaDsNCgkJCQl9DQoJCQkJaWYoa2V5Y29kZSA9PSAyNyl7IC8vIGNsb3NlDQoJCQkJCXRiX3JlbW92ZSgpOw0KCQkJCX0gZWxzZSBpZihrZXljb2RlID09IDE5MCl7IC8vIGRpc3BsYXkgcHJldmlvdXMgaW1hZ2UNCgkJCQkJaWYoIShUQl9OZXh0SFRNTCA9PSAiIikpew0KCQkJCQkJZG9jdW1lbnQub25rZXlkb3duID0gIiI7DQoJCQkJCQlnb05leHQoKTsNCgkJCQkJfQ0KCQkJCX0gZWxzZSBpZihrZXljb2RlID09IDE4OCl7IC8vIGRpc3BsYXkgbmV4dCBpbWFnZQ0KCQkJCQlpZighKFRCX1ByZXZIVE1MID09ICIiKSl7DQoJCQkJCQlkb2N1bWVudC5vbmtleWRvd24gPSAiIjsNCgkJCQkJCWdvUHJldigpOw0KCQkJCQl9DQoJCQkJfQkNCgkJCX07DQoJCQkNCgkJCXRiX3Bvc2l0aW9uKCk7DQoJCQkkKCIjVEJfbG9hZCIpLnJlbW92ZSgpOw0KCQkJJCgiI1RCX0ltYWdlT2ZmIikuY2xpY2sodGJfcmVtb3ZlKTsNCgkJCSQoIiNUQl93aW5kb3ciKS5jc3Moe2Rpc3BsYXk6ImJsb2NrIn0pOyAvL2ZvciBzYWZhcmkgdXNpbmcgY3NzIGluc3RlYWQgb2Ygc2hvdw0KCQkJfTsNCgkJCQ0KCQkJaW1nUHJlbG9hZGVyLnNyYyA9IHVybDsNCgkJfWVsc2V7Ly9jb2RlIHRvIHNob3cgaHRtbA0KCQkJDQoJCQl2YXIgcXVlcnlTdHJpbmcgPSB1cmwucmVwbGFjZSgvXlteXD9dK1w/Py8sJycpOw0KCQkJdmFyIHBhcmFtcyA9IHRiX3BhcnNlUXVlcnkoIHF1ZXJ5U3RyaW5nICk7DQoNCgkJCVRCX1dJRFRIID0gKHBhcmFtc1snd2lkdGgnXSoxKSArIDMwIHx8IDYzMDsgLy9kZWZhdWx0cyB0byA2MzAgaWYgbm8gcGFyYW1hdGVycyB3ZXJlIGFkZGVkIHRvIFVSTA0KCQkJVEJfSEVJR0hUID0gKHBhcmFtc1snaGVpZ2h0J10qMSkgKyA0MCB8fCA0NDA7IC8vZGVmYXVsdHMgdG8gNDQwIGlmIG5vIHBhcmFtYXRlcnMgd2VyZSBhZGRlZCB0byBVUkwNCgkJCWFqYXhDb250ZW50VyA9IFRCX1dJRFRIIC0gMzA7DQoJCQlhamF4Q29udGVudEggPSBUQl9IRUlHSFQgLSA0NTsNCgkJCQ0KCQkJaWYodXJsLmluZGV4T2YoJ1RCX2lmcmFtZScpICE9IC0xKXsvLyBlaXRoZXIgaWZyYW1lIG9yIGFqYXggd2luZG93CQkNCgkJCQkJdXJsTm9RdWVyeSA9IHVybC5zcGxpdCgnVEJfJyk7DQoJCQkJCSQoIiNUQl9pZnJhbWVDb250ZW50IikucmVtb3ZlKCk7DQoJCQkJCWlmKHBhcmFtc1snbW9kYWwnXSAhPSAidHJ1ZSIpey8vaWZyYW1lIG5vIG1vZGFsDQoJCQkJCQkkKCIjVEJfd2luZG93IikuYXBwZW5kKCI8ZGl2IGlkPSdUQl90aXRsZSc+PGRpdiBpZD0nVEJfYWpheFdpbmRvd1RpdGxlJz4iK2NhcHRpb24rIjwvZGl2PjxkaXYgaWQ9J1RCX2Nsb3NlQWpheFdpbmRvdyc+PGEgaHJlZj0nIycgaWQ9J1RCX2Nsb3NlV2luZG93QnV0dG9uJyB0aXRsZT0nQ2xvc2UnPmNsb3NlPC9hPiBvciBFc2MgS2V5PC9kaXY+PC9kaXY+PGlmcmFtZSBmcmFtZWJvcmRlcj0nMCcgaHNwYWNlPScwJyBzcmM9JyIrdXJsTm9RdWVyeVswXSsiJyBpZD0nVEJfaWZyYW1lQ29udGVudCcgbmFtZT0nVEJfaWZyYW1lQ29udGVudCIrTWF0aC5yb3VuZChNYXRoLnJhbmRvbSgpKjEwMDApKyInIG9ubG9hZD0ndGJfc2hvd0lmcmFtZSgpJyBzdHlsZT0nd2lkdGg6IisoYWpheENvbnRlbnRXICsgMjkpKyJweDtoZWlnaHQ6IisoYWpheENvbnRlbnRIICsgMTcpKyJweDsnID4gPC9pZnJhbWU+Iik7DQoJCQkJCX1lbHNley8vaWZyYW1lIG1vZGFsDQoJCQkJCSQoIiNUQl9vdmVybGF5IikudW5iaW5kKCk7DQoJCQkJCQkkKCIjVEJfd2luZG93IikuYXBwZW5kKCI8aWZyYW1lIGZyYW1lYm9yZGVyPScwJyBoc3BhY2U9JzAnIHNyYz0nIit1cmxOb1F1ZXJ5WzBdKyInIGlkPSdUQl9pZnJhbWVDb250ZW50JyBuYW1lPSdUQl9pZnJhbWVDb250ZW50IitNYXRoLnJvdW5kKE1hdGgucmFuZG9tKCkqMTAwMCkrIicgb25sb2FkPSd0Yl9zaG93SWZyYW1lKCknIHN0eWxlPSd3aWR0aDoiKyhhamF4Q29udGVudFcgKyAyOSkrInB4O2hlaWdodDoiKyhhamF4Q29udGVudEggKyAxNykrInB4Oyc+IDwvaWZyYW1lPiIpOw0KCQkJCQl9DQoJCQl9ZWxzZXsvLyBub3QgYW4gaWZyYW1lLCBhamF4DQoJCQkJCWlmKCQoIiNUQl93aW5kb3ciKS5jc3MoImRpc3BsYXkiKSAhPSAiYmxvY2siKXsNCgkJCQkJCWlmKHBhcmFtc1snbW9kYWwnXSAhPSAidHJ1ZSIpey8vYWpheCBubyBtb2RhbA0KCQkJCQkJJCgiI1RCX3dpbmRvdyIpLmFwcGVuZCgiPGRpdiBpZD0nVEJfdGl0bGUnPjxkaXYgaWQ9J1RCX2FqYXhXaW5kb3dUaXRsZSc+IitjYXB0aW9uKyI8L2Rpdj48ZGl2IGlkPSdUQl9jbG9zZUFqYXhXaW5kb3cnPjxhIGhyZWY9JyMnIGlkPSdUQl9jbG9zZVdpbmRvd0J1dHRvbic+Y2xvc2U8L2E+IG9yIEVzYyBLZXk8L2Rpdj48L2Rpdj48ZGl2IGlkPSdUQl9hamF4Q29udGVudCcgc3R5bGU9J3dpZHRoOiIrYWpheENvbnRlbnRXKyJweDtoZWlnaHQ6IithamF4Q29udGVudEgrInB4Jz48L2Rpdj4iKTsNCgkJCQkJCX1lbHNley8vYWpheCBtb2RhbA0KCQkJCQkJJCgiI1RCX292ZXJsYXkiKS51bmJpbmQoKTsNCgkJCQkJCSQoIiNUQl93aW5kb3ciKS5hcHBlbmQoIjxkaXYgaWQ9J1RCX2FqYXhDb250ZW50JyBjbGFzcz0nVEJfbW9kYWwnIHN0eWxlPSd3aWR0aDoiK2FqYXhDb250ZW50VysicHg7aGVpZ2h0OiIrYWpheENvbnRlbnRIKyJweDsnPjwvZGl2PiIpOwkNCgkJCQkJCX0NCgkJCQkJfWVsc2V7Ly90aGlzIG1lYW5zIHRoZSB3aW5kb3cgaXMgYWxyZWFkeSB1cCwgd2UgYXJlIGp1c3QgbG9hZGluZyBuZXcgY29udGVudCB2aWEgYWpheA0KCQkJCQkJJCgiI1RCX2FqYXhDb250ZW50IilbMF0uc3R5bGUud2lkdGggPSBhamF4Q29udGVudFcgKyJweCI7DQoJCQkJCQkkKCIjVEJfYWpheENvbnRlbnQiKVswXS5zdHlsZS5oZWlnaHQgPSBhamF4Q29udGVudEggKyJweCI7DQoJCQkJCQkkKCIjVEJfYWpheENvbnRlbnQiKVswXS5zY3JvbGxUb3AgPSAwOw0KCQkJCQkJJCgiI1RCX2FqYXhXaW5kb3dUaXRsZSIpLmh0bWwoY2FwdGlvbik7DQoJCQkJCX0NCgkJCX0NCgkJCQkJDQoJCQkkKCIjVEJfY2xvc2VXaW5kb3dCdXR0b24iKS5jbGljayh0Yl9yZW1vdmUpOw0KCQkJDQoJCQkJaWYodXJsLmluZGV4T2YoJ1RCX2lubGluZScpICE9IC0xKXsJDQoJCQkJCSQoIiNUQl9hamF4Q29udGVudCIpLmFwcGVuZCgkKCcjJyArIHBhcmFtc1snaW5saW5lSWQnXSkuY2hpbGRyZW4oKSk7DQoJCQkJCSQoIiNUQl93aW5kb3ciKS51bmxvYWQoZnVuY3Rpb24gKCkgew0KCQkJCQkJJCgnIycgKyBwYXJhbXNbJ2lubGluZUlkJ10pLmFwcGVuZCggJCgiI1RCX2FqYXhDb250ZW50IikuY2hpbGRyZW4oKSApOyAvLyBtb3ZlIGVsZW1lbnRzIGJhY2sgd2hlbiB5b3UncmUgZmluaXNoZWQNCgkJCQkJfSk7DQoJCQkJCXRiX3Bvc2l0aW9uKCk7DQoJCQkJCSQoIiNUQl9sb2FkIikucmVtb3ZlKCk7DQoJCQkJCSQoIiNUQl93aW5kb3ciKS5jc3Moe2Rpc3BsYXk6ImJsb2NrIn0pOyANCgkJCQl9ZWxzZSBpZih1cmwuaW5kZXhPZignVEJfaWZyYW1lJykgIT0gLTEpew0KCQkJCQl0Yl9wb3NpdGlvbigpOw0KCQkJCQlpZigkLmJyb3dzZXIuc2FmYXJpKXsvL3NhZmFyaSBuZWVkcyBoZWxwIGJlY2F1c2UgaXQgd2lsbCBub3QgZmlyZSBpZnJhbWUgb25sb2FkDQoJCQkJCQkkKCIjVEJfbG9hZCIpLnJlbW92ZSgpOw0KCQkJCQkJJCgiI1RCX3dpbmRvdyIpLmNzcyh7ZGlzcGxheToiYmxvY2sifSk7DQoJCQkJCX0NCgkJCQl9ZWxzZXsNCgkJCQkJJCgiI1RCX2FqYXhDb250ZW50IikubG9hZCh1cmwgKz0gIiZyYW5kb209IiArIChuZXcgRGF0ZSgpLmdldFRpbWUoKSksZnVuY3Rpb24oKXsvL3RvIGRvIGEgcG9zdCBjaGFuZ2UgdGhpcyBsb2FkIG1ldGhvZA0KCQkJCQkJdGJfcG9zaXRpb24oKTsNCgkJCQkJCSQoIiNUQl9sb2FkIikucmVtb3ZlKCk7DQoJCQkJCQl0Yl9pbml0KCIjVEJfYWpheENvbnRlbnQgYS50aGlja2JveCIpOw0KCQkJCQkJJCgiI1RCX3dpbmRvdyIpLmNzcyh7ZGlzcGxheToiYmxvY2sifSk7DQoJCQkJCX0pOw0KCQkJCX0NCgkJCQ0KCQl9DQoNCgkJaWYoIXBhcmFtc1snbW9kYWwnXSl7DQoJCQlkb2N1bWVudC5vbmtleXVwID0gZnVuY3Rpb24oZSl7IAkNCgkJCQlpZiAoZSA9PSBudWxsKSB7IC8vIGllDQoJCQkJCWtleWNvZGUgPSBldmVudC5rZXlDb2RlOw0KCQkJCX0gZWxzZSB7IC8vIG1vemlsbGENCgkJCQkJa2V5Y29kZSA9IGUud2hpY2g7DQoJCQkJfQ0KCQkJCWlmKGtleWNvZGUgPT0gMjcpeyAvLyBjbG9zZQ0KCQkJCQl0Yl9yZW1vdmUoKTsNCgkJCQl9CQ0KCQkJfTsNCgkJfQ0KCQkNCgl9IGNhdGNoKGUpIHsNCgkJLy9ub3RoaW5nIGhlcmUNCgl9DQp9DQoNCi8vaGVscGVyIGZ1bmN0aW9ucyBiZWxvdw0KZnVuY3Rpb24gdGJfc2hvd0lmcmFtZSgpew0KCSQoIiNUQl9sb2FkIikucmVtb3ZlKCk7DQoJJCgiI1RCX3dpbmRvdyIpLmNzcyh7ZGlzcGxheToiYmxvY2sifSk7DQp9DQoNCmZ1bmN0aW9uIHRiX3JlbW92ZSgpIHsNCiAJJCgiI1RCX2ltYWdlT2ZmIikudW5iaW5kKCJjbGljayIpOw0KCSQoIiNUQl9jbG9zZVdpbmRvd0J1dHRvbiIpLnVuYmluZCgiY2xpY2siKTsNCgkkKCIjVEJfd2luZG93IikuZmFkZU91dCgiZmFzdCIsZnVuY3Rpb24oKXskKCcjVEJfd2luZG93LCNUQl9vdmVybGF5LCNUQl9IaWRlU2VsZWN0JykudHJpZ2dlcigidW5sb2FkIikudW5iaW5kKCkucmVtb3ZlKCk7fSk7DQoJJCgiI1RCX2xvYWQiKS5yZW1vdmUoKTsNCglpZiAodHlwZW9mIGRvY3VtZW50LmJvZHkuc3R5bGUubWF4SGVpZ2h0ID09ICJ1bmRlZmluZWQiKSB7Ly9pZiBJRSA2DQoJCSQoImJvZHkiLCJodG1sIikuY3NzKHtoZWlnaHQ6ICJhdXRvIiwgd2lkdGg6ICJhdXRvIn0pOw0KCQkkKCJodG1sIikuY3NzKCJvdmVyZmxvdyIsIiIpOw0KCX0NCglkb2N1bWVudC5vbmtleWRvd24gPSAiIjsNCglkb2N1bWVudC5vbmtleXVwID0gIiI7DQoJcmV0dXJuIGZhbHNlOw0KfQ0KDQpmdW5jdGlvbiB0Yl9wb3NpdGlvbigpIHsNCiQoIiNUQl93aW5kb3ciKS5jc3Moe21hcmdpbkxlZnQ6ICctJyArIHBhcnNlSW50KChUQl9XSURUSCAvIDIpLDEwKSArICdweCcsIHdpZHRoOiBUQl9XSURUSCArICdweCd9KTsNCglpZiAoICEoalF1ZXJ5LmJyb3dzZXIubXNpZTYpKSB7IC8vIHRha2UgYXdheSBJRTYNCgkJJCgiI1RCX3dpbmRvdyIpLmNzcyh7bWFyZ2luVG9wOiAnLScgKyBwYXJzZUludCgoVEJfSEVJR0hUIC8gMiksMTApICsgJ3B4J30pOw0KCX0NCn0NCg0KZnVuY3Rpb24gdGJfcGFyc2VRdWVyeSAoIHF1ZXJ5ICkgew0KICAgdmFyIFBhcmFtcyA9IHt9Ow0KICAgaWYgKCAhIHF1ZXJ5ICkge3JldHVybiBQYXJhbXM7fS8vIHJldHVybiBlbXB0eSBvYmplY3QNCiAgIHZhciBQYWlycyA9IHF1ZXJ5LnNwbGl0KC9bOyZdLyk7DQogICBmb3IgKCB2YXIgaSA9IDA7IGkgPCBQYWlycy5sZW5ndGg7IGkrKyApIHsNCiAgICAgIHZhciBLZXlWYWwgPSBQYWlyc1tpXS5zcGxpdCgnPScpOw0KICAgICAgaWYgKCAhIEtleVZhbCB8fCBLZXlWYWwubGVuZ3RoICE9IDIgKSB7Y29udGludWU7fQ0KICAgICAgdmFyIGtleSA9IHVuZXNjYXBlKCBLZXlWYWxbMF0gKTsNCiAgICAgIHZhciB2YWwgPSB1bmVzY2FwZSggS2V5VmFsWzFdICk7DQogICAgICB2YWwgPSB2YWwucmVwbGFjZSgvXCsvZywgJyAnKTsNCiAgICAgIFBhcmFtc1trZXldID0gdmFsOw0KICAgfQ0KICAgcmV0dXJuIFBhcmFtczsNCn0NCg0KZnVuY3Rpb24gdGJfZ2V0UGFnZVNpemUoKXsNCgl2YXIgZGUgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7DQoJdmFyIHcgPSB3aW5kb3cuaW5uZXJXaWR0aCB8fCBzZWxmLmlubmVyV2lkdGggfHwgKGRlJiZkZS5jbGllbnRXaWR0aCkgfHwgZG9jdW1lbnQuYm9keS5jbGllbnRXaWR0aDsNCgl2YXIgaCA9IHdpbmRvdy5pbm5lckhlaWdodCB8fCBzZWxmLmlubmVySGVpZ2h0IHx8IChkZSYmZGUuY2xpZW50SGVpZ2h0KSB8fCBkb2N1bWVudC5ib2R5LmNsaWVudEhlaWdodDsNCglhcnJheVBhZ2VTaXplID0gW3csaF07DQoJcmV0dXJuIGFycmF5UGFnZVNpemU7DQp9DQoNCmZ1bmN0aW9uIHRiX2RldGVjdE1hY1hGRigpIHsNCiAgdmFyIHVzZXJBZ2VudCA9IG5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKTsNCiAgaWYgKHVzZXJBZ2VudC5pbmRleE9mKCdtYWMnKSAhPSAtMSAmJiB1c2VyQWdlbnQuaW5kZXhPZignZmlyZWZveCcpIT0tMSkgew0KICAgIHJldHVybiB0cnVlOw0KICB9DQp9DQoNCg0K]]></data>
	</file>
</module>
