<?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>vimeoplayer</name>
	<version>1.0</version>
  <mincmsversion>1.8.1</mincmsversion>
	<help><![CDATA[PGgzPldoYXQgRG9lcyBUaGlzIERvPzwvaDM+DQoJCQkJPHA+VGhpcyBtb2R1bGUgbWFuYWdlcyBhbmQgZGlzcGxheXMgYSBjYXRhbG9ndWUgb2YgVmltZW8gVmlkZW9zLjwvcD4NCgkJCTxici8+PGgzPkhvdyBEbyBJIFVzZSBJdD88L2gzPg0KCQkJCTxici8+PGg0PlBlcm1pc3Npb25zPC9oND4NCgkJCQkJPHA+TWFrZSBzdXJlIHlvdXIgdXNlcnMgaGF2ZSB0aGUgYXBwcm9wcmlhdGUgcGVybWlzc2lvbnMuIElmIHlvdSBhcmUgbm90IHVzaW5nIHRoZSBhY2Nlc3MgcmVzdHJpY3Rpb24gb3B0aW9uIChzZWUgc2V0dGluZ3MpLCB0aGUgInZpbWVvcGxheWVyOiBOb3JtYWwgdXNlciIgcGVybWlzc2lvbiB3aWxsIGJlIGVub3VnaCB0byB1c2UgdGhlIG1vZHVsZS4gSW4gdGhlIHNldHRpbmdzIHRhYiwgeW91IGNhbiBjaG9vc2Ugd2hpY2ggdGFicyB3aWxsIGJlIGRpc3BsYXllZCBmb3IgdGhlIG5vcm1hbCB1c2VyLiBPbmx5IHRoZSBhZG1pbmlzdHJhdG9yIGFuZCB1c2VycyB3aXRoIHRoZSAidmltZW9wbGF5ZXI6IEFkdmFuY2VkIiBwZXJtaXNzaW9uIHdpbGwgaGF2ZSBhY2Nlc3MgdG8gc2V0dGluZ3MgdGFiLjxici8+DQoJCQkJCUlmIHlvdSB3aXNoIHRvIGRlZmluZSBsZXZlbC1zcGVjaWZpYyBwZXJtaXNzaW9ucywgYWN0aXZhdGUgdGhlIGFjY2VzcyByZXN0cmljdGlvbiBvcHRpb24gaW4gdGhlIHNldHRpbmdzIHRhYiBhbmQgZ2l2ZSB0aGUgInZpbWVvcGxheWVyOiBNYW5hZ2UgbmFtZV9vZl9sZXZlbCIgcGVybWlzc2lvbiB0byB0aGUgYXBwcm9wcmlhdGUgdXNlcnMuPC9wPg0KCQkJCTxici8+PGg0PkJhc2ljczwvaDQ+DQoJCQkJCVlvdSB3aWxsIG5lZWQgdGhlIFZpZGVvIElEIGZvciB0aGUgbW92aWUgZnJvbSBWaW1lbywgdG8gdG8gdGhpcyBnbyB0bzogaHR0cDovL3d3dy52aW1lby5jb20sIGZpbmQgYSB2aWRlbyB5b3UgYXJlIGludGVyZXN0ZWQgaW4gYW5kIGNvcHkgdGhlIG51bWJlciBhdCB0aGUgZW5kIG9mIHRoZSBVUkwgc3VjaCBhcyBodHRwOi8vdmltZW8uY29tLzxiIHN0eWxlPSJjb2xvcjojRkYwMDAwIj4xNjQ3NDkyMTwvYj48YnIgLz4NCgkJCQkJVmltZW8gTW92aWVzIGhhdmUgYSB0aHVtYm5haWwgY2hvaWNlIG9mICJTbWFsbCwgTWVkaXVtIG9yIExhcmdlIiwgZm9yIHRoZSBtb3ZpZSBsaXN0aW5nLCB5b3Ugd2lsbCBoYXZlIHRvIGV4cGVyaW1lbnQgdG8gd2hhdCBzdWl0cyB5b3UuPGJyIC8+PGJyIC8+DQoJCQkJCTxwPlRvIGNhbGwgdGhlIG1vZHVsZSwgc2ltcGx5IHVzZSB0aGUgZm9sbG93aW5nIHRhZzo8YnIvPg0KCQkJCQl7Y21zX21vZHVsZSBtb2R1bGU9InZpbWVvcGxheWVyIn08L3A+DQoJCQkJCTxwPkluIHRoaXMgY2FzZSB0aGUgbGlzdCBvZiB0aGUgbGFzdCBsZXZlbCBlbGVtZW50cyAodmlkZW8pIHdpbGwgYmUgZGlzcGxheWVkLiBUbyBzZWxlY3QgYSBsZXZlbCwgdXNlIHRoZSAid2hhdCIgcGFyYW1ldGVyOjxici8+DQoJCQkJCXtjbXNfbW9kdWxlIG1vZHVsZT0idmltZW9wbGF5ZXIiIHdoYXQ9InZpZGVvIn08YnIvPg0KCQkJCQk8aT5UaGUgcG9zc2libGUgdmFsdWVzIGZvciB0aGUgIndoYXQiIHBhcmFtZXRlciBhcmUgOiBjYXRlZ29yeSwgdmlkZW88L2k+PC9wPg0KCQkJCQk8cD5Zb3UgbWF5IGFsc28gYXNrIGZvciBlbGVtZW50cyB3aG8gYmVsb25nIHRvIGEgc3BlY2lmaWMgcGFyZW50Ojxici8+DQoJCQkJCXtjbXNfbW9kdWxlIG1vZHVsZT0idmltZW9wbGF5ZXIiIHBhcmVudD0iYWxpYXNfb2ZfcGFyZW50In08L3A+DQoJCQkJCTxwPllvdSBtYXkgZmluYWxseSBhc2sgZm9yIGEgc3BlY2lmaWMgZWxlbWVudDo8YnI+DQoJCQkJCXtjbXNfbW9kdWxlIG1vZHVsZT0idmltZW9wbGF5ZXIiIGFsaWFzPSJhbGlhc19vZl9pdGVtIn08L3A+DQoJCQkJPGJyLz48aDQ+U2VwYXJhdGluZyBpbnRvIHBhZ2VzPC9oND4NCgkJCQkJPHA+WW91IG1heSBsaW1pdCB0aGUgbnVtYmVyIG9mIGl0ZW1zIHRvIGJlIHNob3duIG9uIG9uZSBwYWdlOjxici8+DQoJCQkJCXtjbXNfbW9kdWxlIG1vZHVsZT0idmltZW9wbGF5ZXIiIG5icGVycGFnZT0iNSJ9PGJyLz4NCgkJCQkJVGhlIHBhZ2UgbWVudSBzaG91bGQgdGhlbiBiZSBzaG93biB3aXRoIHRoZSB7JHBhZ2VtZW51fSB0YWcuPC9wPg0KCQkJCTxici8+PGg0PlVzaW5nIHF1ZXJpZXM8L2g0Pg0KCQkJCQk8cD5UbyBnZXQgYSBsaXN0IG9mIGl0ZW0gdGhhdCBtZWV0IHNwZWNpZmljIGNyaXRlcmlhLCB5b3UgY2FuIGNyZWF0ZSBhIHF1ZXJ5IHVzaW5nIHRoZSBxdWVyaWVzIHRhYiBvZiB0aGUgYWRtaW4gcGFuZWwsIGFuZCBjYWxsIHRoZW0gdXNpbmcgdGhlICJxdWVyeSIgcGFyYW1ldGVyOjxici8+DQoJCQkJCXtjbXNfbW9kdWxlIG1vZHVsZT0idmltZW9wbGF5ZXIiIHF1ZXJ5PSI1In08L3A+DQoJCQkJCTxwPjxpPklmIHRoZSBvcHRpb24gdG8gYWxsb3cgbWFudWVsIHNxbCBxdWVyaWVzIGlzIGVuYWJsZWQ8L2k+IChzZWUgIlNldHRpbmdzIiB0YWIpLCB5b3UgbWF5IGFsc28gcHJvdmlkZSB0aGUgc3FsIHF1ZXJ5IGRpcmVjdGx5IHdpdGggdGhlIHF1ZXJ5IHBhcmFtZXRlci4gRm9yIGV4YW1wbGU6PGJyLz4NCgkJCQkJe2Ntc19tb2R1bGUgbW9kdWxlPSJ2aW1lb3BsYXllciIgd2hhdD0idmlkZW8iIHF1ZXJ5PSJBLmRhdGVfbW9kaWZpZWQgPiAnMjAwOS0wMy0xNScgQU5EIEEuYWN0aXZlID0gMSJ9PGJyLz4NCgkJCQkJVGhlIHF1ZXJ5IHBhcmFtZXRlciBjYW4gb25seSBob2xkIHRoZSBXSEVSRSBjbGF1c2Ugb2YgdGhlIHF1ZXJ5LCBhbmQgc2hvdWxkIG5vdCBpbmNsdWRlIHRoZSBXSEVSRSBjb21tYW5kIGl0c2VsZi4gVG8gYXZvaWQgcHJvYmxlbXMsIHRoZSBwcmVmaXggIkEuIiBzaG91bGQgYmUgdXNlZCBiZWZvcmUgZmllbGQgbmFtZXMgKHdoZXJlIGFwcGxpY2FibGUsIHRoZSAiQi4iIHByZWZpeCBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IGNyaXRlcmlhIG9uIHRoZSBwYXJlbnQncyBmaWVsZHMpLjxici8+DQoJCQkJCUFsdGhvdWdoIHRoZSBhYnN0cmFjdGlvbiBsYXllciBpcyBub3QgZWFzaWx5IHByb25lIHRvIGluamVjdGlvbnMsIHJlbWVtYmVyIHRoYXQgYWN0aXZhdGluZyB0aGlzIG9wdGlvbiBtZWFucyBnaXZpbmcgYSBzcWwgb3BlbmluZyB3aXRoaW4gdGhlIHRlbXBsYXRlcyBhbmQgYmUgY2FyZWZ1bC48L3A+DQoJCQkJPGJyLz48aDQ+VGhlIGxpbmsgYWN0aW9uPC9oND4NCgkJCQkJPHA+WW91IG1heSB1c2UgdGhlIGFjdGlvbiA8Yj4ibGluayI8L2I+IHRvIGNyZWF0ZSBhIGxpbmsgdG8gdGhlIGRlZmF1bHQgYWN0aW9uLCB1c2luZyB0aGUgc2FtZSBwYXJhbWV0ZXJzOjxici8+DQoJCQkJCXtjbXNfbW9kdWxlIG1vZHVsZT0idmltZW9wbGF5ZXIiIGFjdGlvbj0ibGluayIgd2hhdD0idmlkZW8iIHJhbmRvbT0iMSJ9PGJyLz4NCgkJCQkJd291bGQgY3JlYXRlIGEgbGluayB0byBhIHJhbmRvbSBlbGVtZW50IG9mIHRoaXMgbGV2ZWwuPC9wPg0KCQkJCTxici8+PGg0PlRoZSBzaXRlbWFwIGFjdGlvbjwvaDQ+DQoJCQkJCTxwPklmIHlvdXIgbW9kdWxlIGlzIG5vdCBzaGFyaW5nIGNoaWxkcmVuLCB5b3UgbWF5IHVzZSB0aGUgYWN0aW9uIDxiPiJzaXRlbWFwIjwvYj4gdG8gY3JlYXRlIGEgbW9kdWxlIHNpdGVtYXA6PGJyLz4NCgkJCQkJe2Ntc19tb2R1bGUgbW9kdWxlPSJ2aW1lb3BsYXllciIgYWN0aW9uPSJzaXRlbWFwIn08YnIvPg0KCQkJCQlZb3UgY2FuIHNlbGVjdCB0aGUgbGV2ZWxzIHVzaW5nIHRoZSAid2hhdCIgcGFyYW1ldGVyLCBhbmQgbWF5IHNlbGVjdCBtb3JlIHRoYW4gb25lIHVzaW5nICJ8IiA6IHdoYXQ9ImxldmVsMXxsZXZlbDIiLjxici8+DQoJCQkJCU90aGVyIGF2YWlsYWJsZSBwYXJhbWV0ZXJzIGZvciB0aGlzIGFjdGlvbiBhcmUgImRldGFpbHBhZ2UiIGFuZCAiaW5saW5lIi48YnIvPg0KCQkJCQlUbyBjcmVhdGUgYSBnb29nbGUgc2l0ZW1hcCwgc2VlIHRoZSA8YSBocmVmPSIuLi9tb2R1bGVzL3ZpbWVvcGxheWVyL2RvYy9mYXEuaHRtbCNxMTYiIHRhcmdldD0iX2JsYW5rIj5GQVE8L2E+LjwvcD4NCgkJCQk8YnIvPjxoND5UaGUgc2VhcmNoIGFjdGlvbjwvaDQ+DQoJCQkJCTxwPllvdSBtYXkgdXNlIHRoZSBhY3Rpb24gPGI+InNlYXJjaCI8L2I+IHRvIGRpc3BsYXkgYSBzZWFyY2ggZm9ybTo8YnIvPg0KCQkJCQl7Y21zX21vZHVsZSBtb2R1bGU9InZpbWVvcGxheWVyIiBhY3Rpb249InNlYXJjaCJ9PGJyLz4NCgkJCQkJVXNlIHRoZSAic2VhcmNobW9kZSIgcGFyYW1ldGVyIHRvIHN3aXRjaCBiZXR3ZWVuIGFkdmFuY2VkIChkZWZhdWx0KSBhbmQgc2ltcGxlIG1vZGUuIFlvdSBtYXkgc3BlY2lmeSB0aGUgbGV2ZWwgaW4gd2hpY2ggdG8gc2VhcmNoIHVzaW5nIHRoZSAid2hhdCIgcGFyYW1ldGVyLiBZb3UgY2Fubm90IHVzZSB0aGUgYWR2YW5jZWQgc2VhcmNoIG1vZGUgaW4gYWxsIGxldmVscyBhdCB0aGUgc2FtZSB0aW1lLjxici8+DQoJCQkJCVRoZSBmb2xsb3dpbmcgcGFyYW1ldGVycyBjYW4gYmUgdXNlZCB3aXRoIHRoZSBzZWFyY2ggYWN0aW9uOiB3aGF0LCBsaW1pdCwgbmJwZXJwYWdlLCBvcmRlcmJ5LCBkZXRhaWxwYWdlLCBsaXN0dGVtcGxhdGUsIGlubGluZSwgc2VhcmNobW9kZS48YnIvPg0KCQkJCQlTZWUgdmltZW9wbGF5ZXIvdGVtcGxhdGVzL3NlYXJjaC50cGwgdG8gbW9kaWZ5IHRoZSBzZWFyY2ggZm9ybS48L3A+PGJyLz4NCgkJCQk8cD5Gb3IgbW9yZSBoZWxwLCB5b3UgbWF5IHRha2UgYSBsb29rIGF0IHRoZSA8YSBocmVmPSIuLi9tb2R1bGVzL3ZpbWVvcGxheWVyL2RvYy9mYXEuaHRtbCIgdGFyZ2V0PSJfYmxhbmsiPkZBUTwvYT4uPC9wPg0KCQkJPGJyLz48aDM+Q29weXJpZ2h0IGFuZCBMaWNlbnNlPC9oMz4NCgkJCQk8cD5UaGlzIG1vZHVsZSBoYXMgYmVlbiBjcmVhdGVkIHdpdGggQ1RMTW9kdWxlTWFrZXIsIGFuZCBpcyByZWxlYXNlZCB1bmRlciB0aGUgR05VIFB1YmxpYyBMaWNlbnNlLjwvcD48YnIvPjxici8+PGgzPlBhcmFtZXRlcnM8L2gzPjx1bD48bGk+PGVtPihvcHRpb25hbCk8L2VtPiBsYW5nPSJlbl9VUyIgLSBQYXJhbWV0ZXIgaXMgdXNlZCB0byBzcGVjaWZ5IHdoYXQgbGFuZ3VhZ2UgdG8gdXNlIGZvciBkaXNwbGF5IG9uIHRoZSBmcm9udGVuZC4gTm90IGFsbCBtb2R1bGVzIHN1cHBvcnQgb3IgbmVlZCB0aGlzLjwvbGk+PGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gYWN0aW9uPSJkZWZhdWx0IiAtIFBvc3NpYmxlIGFjdGlvbnM6ICJsaW5rIiwgInNlYXJjaCIsICJicmVhZGNydW1icyIsICJkZWZhdWx0IiwgInNpdGVtYXAiLjwvbGk+PGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gd2hhdD0iIiAtIEFsbG93cyB5b3UgdG8gc3BlY2lmeSB0aGUgbGV2ZWwgeW91IHdpc2ggdG8gZGlzcGxheS4gUG9zc2libGUgdmFsdWVzIGFyZSA6IDxpPmNhdGVnb3J5LCB2aWRlbzwvaT48L2xpPjxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IGFsaWFzPSIiIC0gQWxpYXMgb2YgdGhlIGl0ZW0geW91IHdpc2ggdG8gZGlzcGxheS48L2xpPjxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IHNob3dkZWZhdWx0PSIiIC0gU2V0IHRvICJ0cnVlIiBpZiB5b3Ugd2lzaCB0byBkaXNwbGF5IHRoZSBkZWZhdWx0IGVsZW1lbnQuPC9saT48bGk+PGVtPihvcHRpb25hbCk8L2VtPiBwYXJlbnQ9IiIgLSBJZiB5b3Ugd2lzaCB0byBsaW1pdCB0aGUgZGlzcGxheWVkIGVsZW1lbnRzIHRvIHRob3NlIHdobyBiZWxvbmcgdG8gYSBzcGVjaWZpYyBwYXJlbnQsIGVudGVyIHRoZSBwYXJlbnQgYWxpYXMgaGVyZS48L2xpPjxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IGxpbWl0PSIwIiAtIExpbWl0IHRoZSBudW1iZXIgb2YgaXRlbSByZXR1cm5lZCBieSB0aGUgcXVlcnkgKDAgPSBubyBsaW1pdCk8L2xpPjxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IG5icGVycGFnZT0iMCIgLSBTZXQgdGhlIG51bWJlciBvZiBpdGVtcyBkaXNwbGF5ZWQgb24gZWFjaCBwYWdlLjwvbGk+PGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gb3JkZXJieT0iMCIgLSBZb3UgY2FuIHNldCB0byAibW9kaWZpZWQiLCAiY3JlYXRlZCIgb3IgdGhlIG5hbWUgb2YgYSBmaWVsZCB0byBvcmRlciBpdGVtcyBpbiB0aGlzIHdheS4gQW55IG90aGVyIHZhbHVlIHdpbGwgb3JkZXIgd2l0aCB0aGUgaXRlbSBvcmRlci48L2xpPjxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IGRldGFpbHBhZ2U9IiIgLSBTcGVjaWZ5IHRoZSBhbGlhcyBvZiB0aGUgcGFnZSBpbiB3aGljaCBsaW5rcyB0byBjaGlsZCBlbGVtZW50cyBzaG91bGQgYmUgc2VudCAoaWYgbm9uZSBpcyBzcGVjaWZpZWQsIGN1cnJlbnQgcGFnZSBpcyB1c2VkKTwvbGk+PGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gcmFuZG9tPSIwIiAtIFNldCB0byBhIG51bWJlciB0byBzaG93IGEgbnVtYmVyIG9mIHJhbmRvbSBlbGVtZW50cyBmcm9tIHlvdXIgcXVlcnkuPC9saT48bGk+PGVtPihvcHRpb25hbCk8L2VtPiBsaXN0dGVtcGxhdGU9IiIgLSBTcGVjaWZ5IHRoZSB0ZW1wbGF0ZSB5b3Ugd2lzaCB0byB1c2UgZm9yIHRoZSBsaXN0IHZpZXcuPC9saT48bGk+PGVtPihvcHRpb25hbCk8L2VtPiBmaW5hbHRlbXBsYXRlPSIiIC0gU3BlY2lmeSB0aGUgdGVtcGxhdGUgeW91IHdpc2ggdG8gdXNlIGZvciB0aGUgZGV0YWlsIHZpZXcgb2YgdGhlIGZpbmFsIGxldmVsLjwvbGk+PGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gZm9yY2VsaXN0PSIwIiAtIFNldCB0byAxIGlmIHlvdSB3aXNoIHRvIGRpc3BsYXkgYSBsaXN0IHZpZXcgZXZlbiB3aGVuIHRoZXJlIGlzIG9ubHkgb25lIGVsZW1lbnQuPC9saT48bGk+PGVtPihvcHRpb25hbCk8L2VtPiBpbmxpbmU9IjAiIC0gTWFrZXMgdGhlIGxpbmtzIGlubGluZS48L2xpPjxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IHNlYXJjaG1vZGU9ImFkdmFuY2VkIiAtIEZvciB1c2Ugd2l0aCB0aGUgInNlYXJjaCIgYWN0aW9uLiBTZXQgdG8gInNpbXBsZSIgdG8gc2VhcmNoIGluIGFsbCB0ZXh0IGZpZWxkcywgYW5kICJhZHZhbmNlZCIgdG8gc2VhcmNoIGluIHNwZWNpZmljIGZpZWxkcy48L2xpPjxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IHF1ZXJ5PSIwIiAtIEZvciBvcHRpb25hbCB1c2Ugd2l0aCB0aGUgImRlZmF1bHQiIGFjdGlvbi4gU3BlY2lmaWVzIHRoZSBpZCBvZiB0aGUgcXVlcnkgdG8gdXNlLjwvbGk+PGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gdG9hY3Rpb249IiIgLSBGb3IgdXNlIHdpdGggdGhlICJsaW5rIiBhY3Rpb24uIFNldHMgdGhlIGFjdGlvbiB0byB3aGljaCB0aGUgbGluayBzaG91bGQgcmVkaXJlY3QuPC9saT48L3VsPg==]]></help>
	<about><![CDATA[PGJyIC8+QXV0aG9yOiBDcmVhdGVkIGJ5IE1hcnRpbiAoTVcpIHdpdGggQ1RMTW9kdWxlTWFrZXIgMS44LjguMyAmbHQ7bXdjb3VydGVuYXlAeWFob28uY29tJmd0OzxiciAvPjxiciAvPlZlcnNpb246IDEuMDxiciAvPg==]]></about>
	<description><![CDATA[Embed Vimeo Video]]></description>
	<file>
	  <filename>/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/action.addfiles.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoIWlzc2V0KCRnQ21zKSkgZXhpdDsKaWYoIWlzc2V0KCRfRklMRVMpIHx8ICFpc3NldCgkcGFyYW1zWydmaWVsZCddKSB8fCAhaXNzZXQoJHBhcmFtc1sncHJlZml4J10pIHx8ICFpc3NldCgkcGFyYW1zWyRwYXJhbXNbJ3ByZWZpeCddLidpZCddKSB8fCAhaXNzZXQoJHBhcmFtc1sndGFibGVuYW1lJ10pKXsKCSR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQsIGFycmF5KCkpOwp9CgokZGIgPSAkdGhpcy0+R2V0RGIoKTsKCiRyZXNpemUgPSBpc3NldCgkcGFyYW1zWydzaXplJ10pPyRwYXJhbXNbJ3NpemUnXTpmYWxzZTsKJHRodW1ic2l6ZSA9IGlzc2V0KCRwYXJhbXNbJ3RodW1iJ10pPyRwYXJhbXNbJ3RodW1iJ106ZmFsc2U7CiRpdGVtaWQgPSAkcGFyYW1zWyRwYXJhbXNbJ3ByZWZpeCddLidpZCddOwoKJGN1cmRpciA9IChpc3NldCgkcGFyYW1zWydjdXJkaXInXSkgPyAkcGFyYW1zWydjdXJkaXInXS4nLycgOiAnJyk7CiRzdGFydGRpciA9IChpc3NldCgkcGFyYW1zWydzdGFydGRpciddKSA/ICRwYXJhbXNbJ3N0YXJ0ZGlyJ10uJy8nIDogJycpOwokZGVzdGluYXRpb24gPSBzdHJfcmVwbGFjZSgnLy8nLCcvJywkc3RhcnRkaXIuJGN1cmRpcik7CgokYWxsb3dlZGV4dCA9IGZhbHNlOwppZihpc3NldCgkcGFyYW1zWydleHRlbnNpb25zJ10pICYmICRwYXJhbXNbJ2V4dGVuc2lvbnMnXSAmJiAkcGFyYW1zWydleHRlbnNpb25zJ10gIT0gIiIpCSRhbGxvd2VkZXh0ID0gZXhwbG9kZSgiLCIsJHBhcmFtc1snZXh0ZW5zaW9ucyddKTsKCiRlcnJvcnMgPSAiIjsKJHppcGZpZWxkID0gJGlkLid1cGxvYWR6aXBmaWxlJzsKCmlmKGlzc2V0KCRwYXJhbXNbInN1Ym1pdHppcGZpbGUiXSkpewoJCgkkZGlyID0gJGdDbXMtPmNvbmZpZ1sidXBsb2Fkc19wYXRoIl0uc3RyX3JlcGxhY2UoIi8vIiwiLyIsIi8iLiRkZXN0aW5hdGlvbi4iLyIpOwoJaWYoJHJlc2l6ZSAmJiAhaXNfYXJyYXkoJHJlc2l6ZSkpCSRyZXNpemUgPSBleHBsb2RlKCJ4IiwkcmVzaXplKTsKCQoJaWYoaXNzZXQoJF9GSUxFU1skemlwZmllbGRdKSAmJiBpc3NldCgkX0ZJTEVTWyR6aXBmaWVsZF1bJ25hbWUnXSkgJiYgJF9GSUxFU1skemlwZmllbGRdWyduYW1lJ10gIT0gIiIpewoJCSRleHRlbnNpb24gPSBzdHJ0b2xvd2VyKHN0cnJjaHIoJF9GSUxFU1skemlwZmllbGRdWyduYW1lJ10sICIuIikpOwoJCSR6YSA9IG5ldyBaaXBBcmNoaXZlKCk7CgkJaWYoc3RydG9sb3dlcigkZXh0ZW5zaW9uKSA9PSAnLnppcCcgJiYgJHphLT5vcGVuKCRfRklMRVNbJHppcGZpZWxkXVsndG1wX25hbWUnXSkpIHsKCQkJJGkgPSAwOwoJCQl3aGlsZSgkaSA8ICR6YS0+bnVtRmlsZXMpIHsKCQkJCSRmaWxlc3RhdHMgPSAkemEtPnN0YXRJbmRleCgkaSk7CgkJCQkkZmlsZW5hbWUgPSAkZmlsZXN0YXRzWyduYW1lJ107CgkJCQkkZXh0ZW5zaW9uID0gc3RydG9sb3dlcihzdWJzdHIoc3RycmNocigkZmlsZW5hbWUsICIuIiksMSkpOwoJCQkJaWYoICRleHRlbnNpb24gIT0gIiIgJiYgKCAhJGFsbG93ZWRleHQgfHwgaW5fYXJyYXkoJGV4dGVuc2lvbiwgJGFsbG93ZWRleHQpICkgKXsKCQkJCQkkZmlsZW5hbWUgPSAkdGhpcy0+dXBsb2FkX2NoZWNrZmlsZW5hbWUoJGZpbGVuYW1lLCRkaXIpOwoJCQkJCSRmcCA9IGZvcGVuKCRkaXIuJGZpbGVuYW1lLCAidyIpOwoJCQkJCWlmKGZ3cml0ZSgkZnAsJHphLT5nZXRGcm9tSW5kZXgoJGkpKSl7CgkJCQkJCWZjbG9zZSgkZnApOwoJCQkJCQljaG1vZCgkZGlyLiRmaWxlbmFtZSwgMDc3Nyk7CgkJCQkJCWlmKCRyZXNpemUgJiYgY291bnQoJHJlc2l6ZSkgPT0gMikgJHRoaXMtPnBsUmVzaXplKCRkaXIuJGZpbGVuYW1lLCAnJywgJHJlc2l6ZVswXSwgJHJlc2l6ZVsxXSx0cnVlLGlzc2V0KCRwYXJhbXNbJ2Nyb3AnXSkpOwoJCQkJCQkkdGhpcy0+cGxBc3NpZ25GaWxlKHN0cl9yZXBsYWNlKCIvLyIsIi8iLCIvIi4kZGVzdGluYXRpb24uIi8iLiRmaWxlbmFtZSksICRwYXJhbXNbJ3RhYmxlbmFtZSddLCAkaXRlbWlkLCAkcGFyYW1zWydmaWVsZCddLCAkdGh1bWJzaXplLCBpc3NldCgkcGFyYW1zWydjcm9wdGh1bWInXSkpOwoJCQkJCX1lbHNlewoJCQkJCQlmY2xvc2UoJGZwKTsKCQkJCQkJJGVycm9ycyA9ICc8bGk+Jy4kZmlsZW5hbWUuJzogJy5sYW5nKCdmaWxlbm90dXBsb2FkZWQnKS4nPC9saT4nOwoJCQkJCX0KCQkJCX1lbHNlewoJCQkJCSRlcnJvcnMgPSAnPGxpPicuJGZpbGVuYW1lLic6ICcuJHRoaXMtPkxhbmcoJ2Vycm9yX3dyb25nZmlsZXR5cGUnKS4nPC9saT4nOwoJCQkJfQoJCQkJJGkrKzsKCQkJfQoJCX1lbHNlewoJCQkkZXJyb3JzID0gJzxsaT4nLiRfRklMRVNbJHppcGZpZWxkXVsnbmFtZSddLic6ICcuJHRoaXMtPkxhbmcoJ2Vycm9yX2ludmFsaWRhcmNoaXZlJykuJzwvbGk+JzsKCQl9Cgl9CgkKfWVsc2V7CgkKCWZvcmVhY2goJF9GSUxFUyBhcyAkZmllbGRuYW1lPT4kZmlsZSl7CgkJaWYoJGZpZWxkbmFtZSAhPSAkemlwZmllbGQgJiYgaXNzZXQoJGZpbGVbJ25hbWUnXSkgJiYgJGZpbGVbJ25hbWUnXSAhPSAiIil7CgkJCSRleHRlbnNpb24gPSBzdHJ0b2xvd2VyKHN1YnN0cihzdHJyY2hyKCRmaWxlWyduYW1lJ10sICIuIiksMSkpOwoJCQlpZiggISRhbGxvd2VkZXh0IHx8IGluX2FycmF5KCRleHRlbnNpb24sICRhbGxvd2VkZXh0KSApewoJCQkJaWYoICRmaWxlcGF0aCA9ICR0aGlzLT5wbFVwbG9hZEZpbGUoJGZpbGUsICRkZXN0aW5hdGlvbiwgJHJlc2l6ZSwgaXNzZXQoJHBhcmFtc1snY3JvcCddKSkgKXsKCQkJCQkkdGhpcy0+cGxBc3NpZ25GaWxlKCRmaWxlcGF0aCwgJHBhcmFtc1sndGFibGVuYW1lJ10sICRpdGVtaWQsICRwYXJhbXNbJ2ZpZWxkJ10sICR0aHVtYnNpemUsIGlzc2V0KCRwYXJhbXNbJ2Nyb3B0aHVtYiddKSk7CgkJCQl9ZWxzZXsKCQkJCQkkZXJyb3JzIC49ICI8bGk+Ii4kZmlsZVsnbmFtZSddLic6ICcubGFuZygnZmlsZW5vdHVwbG9hZGVkJykuIjwvbGk+IjsKCQkJCX0KCQkJfWVsc2V7CgkJCQkkZXJyb3JzID0gJzxsaT4nLiRmaWxlWyduYW1lJ10uJzogJy4kdGhpcy0+TGFuZygnZXJyb3Jfd3JvbmdmaWxldHlwZScpLic8L2xpPic7CgkJCX0KCQl9Cgl9CgkKfQoKJG5ld3BhcmFtcyA9IGFycmF5KCAkcGFyYW1zWydwcmVmaXgnXS4naWQnID0+ICRpdGVtaWQgKTsKaWYoaXNzZXQoJHBhcmFtc1snYWN0aXZlX3RhYiddKSkgJG5ld3BhcmFtc1snYWN0aXZlX3RhYiddID0gJHBhcmFtc1snYWN0aXZlX3RhYiddOwppZigkZXJyb3JzICE9ICIiKQkkbmV3cGFyYW1zWydtb2R1bGVfbWVzc2FnZSddID0gJzx1bD4nLiRlcnJvcnMuJzwvdWw+JzsKJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2VkaXQnLiRwYXJhbXNbJ3ByZWZpeCddLCAkcmV0dXJuaWQsICRuZXdwYXJhbXMgKTsJCQoKPz4K]]></data>
	</file>
	<file>
	  <filename>/action.adminquery.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoIWlzc2V0KCRnQ21zKSkgZXhpdDsKCmVjaG8gIjxoMj4iLiR0aGlzLT5MYW5nKCJjcmVhdGVxdWVyeSIpLiI8L2gyPjxici8+IjsKCmlmKCFpc3NldCgkcGFyYW1zWyJ3aGF0Il0pKXsKCQoJJGxldmVsYXJyYXkgPSAkdGhpcy0+Z2V0X2xldmVsYXJyYXkoKTsKCSRsZXZlbG9wdGlvbnMgPSBhcnJheSgpOwoJZm9yZWFjaCgkbGV2ZWxhcnJheSBhcyAkb25lKQkkbGV2ZWxvcHRpb25zWyRvbmVdID0gJG9uZTsKCWVjaG8gIjxwPiIuJHRoaXMtPkxhbmcoInByb21wdF9xdWVyeSIpOwoJZWNobyAkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwgImFkbWlucXVlcnkiLCAkcmV0dXJuaWQpOwoJZWNobyAkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsIndoYXQiLCRsZXZlbG9wdGlvbnMpOwoJZWNobyAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAic3VibWl0IiwgbGFuZygic3VibWl0IikpLiI8L3A+IjsKCWVjaG8gJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKTsKCQp9ZWxzZWlmKGlzc2V0KCRwYXJhbXNbInN1Ym1pdHF1ZXJ5Il0pKXsKCSRkYiA9JiAkdGhpcy0+R2V0RGIoKTsKCSR3aGF0ID0gJHBhcmFtc1sid2hhdCJdOwoJJG11bHRpcGxlbGlzdGZpZWxkcyA9IGFycmF5KCk7CgoKCS8vIHdlIHBhcnNlIHRoZSBrZXl3b3JkcwoJJHdoZXJlID0gJHRoaXMtPmdldFdoZXJlRnJvbVBhcmFtcygkcGFyYW1zKTsKCQoJbGlzdCgkd2hlcmVjbGF1c2UsICR3aGVyZXZhbHVlcykgPSAkdGhpcy0+YnVpbGRXaGVyZSgkd2hlcmUsICR3aGF0KTsKCSRjdXN0b21vcmRlciA9IChpc3NldCgkcGFyYW1zWyJvcmRlciJdKSAmJiAkcGFyYW1zWyJvcmRlciJdICE9ICIiKT8kcGFyYW1zWyJvcmRlciJdLiIgIi4kcGFyYW1zWyJvcmRlcl90eXBlIl06IiI7CgkKCSR0bXBpZCA9ICRkYi0+R2VuSUQoY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfdmltZW9wbGF5ZXJzYXZlZF9xdWVyaWVzX3NlcSIpOwoJJG5hbWUgPSBpc3NldCgkcGFyYW1zWyJxdWVyeW5hbWUiXSk/YWRkc2xhc2hlcygkcGFyYW1zWyJxdWVyeW5hbWUiXSk6IiI7CgkKCSRxdWVyeSA9ICJJTlNFUlQgSU5UTyAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3ZpbWVvcGxheWVyX3NhdmVkX3F1ZXJpZXMgU0VUIGlkPT8sIG5hbWU9Pywgd2hhdD0/LCB3aGVyZWNsYXVzZT0/LCB3aGVyZXZhbHVlcz0/LCBxdWVyeW9yZGVyPT8iOwoJJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJHRtcGlkLCAkbmFtZSwgJHdoYXQsICR3aGVyZWNsYXVzZSwgc2VyaWFsaXplKCR3aGVyZXZhbHVlcyksICRjdXN0b21vcmRlcikpOwoJJHRoaXMtPlJlZGlyZWN0KCRpZCwgImRlZmF1bHRhZG1pbiIsICRyZXR1cm5pZCwgYXJyYXkoImFjdGl2ZV90YWIiPT4icXVlcmllcyIsIm1vZHVsZV9tZXNzYWdlIj0+JHRoaXMtPkxhbmcoIm1lc3NhZ2VfbW9kaWZpZWQiKSkpOwoKfWVsc2V7Cgkkd2hhdCA9ICRwYXJhbXNbIndoYXQiXTsKCWVjaG8gJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCgkaWQsICJhZG1pbnF1ZXJ5IiwgJHJldHVybmlkKTsKCWVjaG8gJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwgIndoYXQiLCAkd2hhdCk7CgllY2hvICI8cD4iLiR0aGlzLT5MYW5nKCJxdWVyeW5hbWUiKS4iOiAiLiR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCJxdWVyeW5hbWUiLCIiLDMwKS4iPC9wPiI7CgkkdGhpcy0+Y3JlYXRlRmllbGRGb3JtKCR3aGF0LCAkaWQsIGZhbHNlKTsKCWVjaG8gIjxwPiIuJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgInN1Ym1pdHF1ZXJ5IiwgbGFuZygic3VibWl0IikpLiI8L3A+IjsKCWVjaG8gJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKTsKCQkJCn0KPz4=]]></data>
	</file>
	<file>
	  <filename>/action.assignfile.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmlmKCFpc3NldCgkZ0NtcykpIGV4aXQ7DQoNCmlmKCFpc3NldCgkcGFyYW1zWydmaWVsZCddKSB8fCAhaXNzZXQoJHBhcmFtc1sncHJlZml4J10pIHx8ICFpc3NldCgkcGFyYW1zWyRwYXJhbXNbJ3ByZWZpeCddLidpZCddKSB8fCAhaXNzZXQoJHBhcmFtc1sndGFibGVuYW1lJ10pKQkkdGhpcy0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCBhcnJheSgpKTsNCg0KJGZpbGVwYXRoID0gaXNzZXQoJHBhcmFtc1snZmlsZXBhdGgnXSk/JHBhcmFtc1snZmlsZXBhdGgnXTonJzsNCmlmKCRmaWxlcGF0aCAhPSAnJyAmJiBpc3NldCgkcGFyYW1zWydzdGFydGRpciddKSAmJiAkcGFyYW1zWydzdGFydGRpciddICE9ICcvJykJJGZpbGVwYXRoID0gJHBhcmFtc1snc3RhcnRkaXInXS4nLycuJGZpbGVwYXRoOw0KJGZpbGVwYXRoID0gc3RyX3JlcGxhY2UoJy8vJywnLycsJGZpbGVwYXRoKTsNCiRpdGVtaWQgPSAkcGFyYW1zWyRwYXJhbXNbJ3ByZWZpeCddLidpZCddOw0KJHRodW1ic2l6ZSA9IGlzc2V0KCRwYXJhbXNbJ3RodW1iJ10pPyRwYXJhbXNbJ3RodW1iJ106ZmFsc2U7DQoNCiR0aGlzLT5wbEFzc2lnbkZpbGUoJGZpbGVwYXRoLCAkcGFyYW1zWyd0YWJsZW5hbWUnXSwgJGl0ZW1pZCwgJHBhcmFtc1snZmllbGQnXSwgJHRodW1ic2l6ZSwgaXNzZXQoJHBhcmFtc1snY3JvcHRodW1iJ10pKTsNCg0KJG5ld3BhcmFtcyA9IGFycmF5KCAkcGFyYW1zWydwcmVmaXgnXS4naWQnID0+ICRpdGVtaWQgKTsNCmlmKGlzc2V0KCRwYXJhbXNbJ2FjdGl2ZV90YWInXSkpICRuZXdwYXJhbXNbJ2FjdGl2ZV90YWInXSA9ICRwYXJhbXNbJ2FjdGl2ZV90YWInXTsNCiR0aGlzLT5SZWRpcmVjdCgkaWQsICdlZGl0Jy4kcGFyYW1zWydwcmVmaXgnXSwgJHJldHVybmlkLCAkbmV3cGFyYW1zICk7CQkNCg0KPz4NCg==]]></data>
	</file>
	<file>
	  <filename>/action.browsefiles.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMjIGFjdGlvbi5Ccm93c2VmaWxlcy5waHANCiMjIEJ5OiBQaWVycmUtTHVjIEdlcm1haW4NCiMjIFBBUkFNUzoNCiMjICRwYXJhbXNbJ21vZGUnXSA6IGltYWdlcyB8fCBmaWxlcw0KIyMgJHBhcmFtc1snZXh0ZW5zaW9ucyddIDogYXJyYXkgb2Ygc2hvd24gZmlsZSBleHRlbnNpb25zDQojIyAkcGFyYW1zWydzdGFydGRpciddIDogdGhlIGZvbGRlciB0byBzdGFydCBhdCAoIHVwbG9hZHMvIFtzdGFydGRpcl0gLyApDQojIyAkcGFyYW1zWyd0YWJsZW5hbWUnXSA6IHRoZSBuYW1lIG9mIHRoZSBkYiB0YWJsZQ0KIyMgJHBhcmFtc1sncHJlZml4J10gOiB0aGUgdmFyaWFibGUgcHJlZml4DQojIyAkcGFyYW1zW3ByZWZpeC4naWQnXSA6IHRoZSBpZCBvZiB0aGUgaXRlbSB0byB3aGljaCB0aGUgaW1hZ2Ugd2lsbCBiZSBhc3NpZ25lZCAodmFsdWUgaXMgbm90IHVzZWQsIGJ1dCByZXR1cm5lZCBhdCB0aGUgZW5kKQ0KIyMgJHBhcmFtc1snZmllbGQnXSA6IG9ubHkgYSBwYXNzLXRocm91Z2ggdG8gdGhlIGFzc2lnbiBhY3Rpb24NCg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQojIFJFVFJJRVZJTkcgUEFSQU1TIEFORCBDT05GSUdTLi4uDQojDQppZiAoIWlzc2V0KCRwYXJhbXNbJ21vZGUnXSkgfHwgIWlzc2V0KCRwYXJhbXNbJ2ZpZWxkJ10pIHx8ICFpc3NldCgkcGFyYW1zWydwcmVmaXgnXSkgfHwgIWlzc2V0KCRwYXJhbXNbJ2ZpZWxkJ10pIHx8ICFpc3NldCgkcGFyYW1zWyd0YWJsZW5hbWUnXSkgKSBleGl0Ow0KDQokaGlkZXRodW1icyA9IHRydWU7IC8vIHdpbGwgaGlkZSBJbWFnZSBNYW5hZ2VyIHRodW1ibmFpbHMsIGJ1dCBhbHNvIGhpZGUgYWxsIGZpbGVzIHRoYXQgc3RhcnQgd2l0aCAidGh1bWJfIi4uLg0KJHRoZWFkbWludGhlbWUgPSAkZ0Ntcy0+dmFyaWFibGVzWyJhZG1pbnRoZW1lIl07DQoNCiMjIGRlZmluaW5nIHRoZSBhbGxvd2VkIGV4dGVuc2lvbnM6DQokbWVkaWFleHQgPSBhcnJheSgnc3dmJywnZmx2JywnanBlZycsJ2pwZycsJ3BuZycsJ2dpZicpOw0KJGRvY2V4dCA9IGFycmF5KCdkb2MnLCdkb2N4JywneGxzJywneGxzeCcsJ3J0ZicsJ3R4dCcsJ3BkZicpOw0KDQppZigkcGFyYW1zWydtb2RlJ10gPT0gJ2ltYWdlcycgfHwgJHBhcmFtc1snbW9kZSddID09ICdpbWFnZScpIHsNCgkkbW9kZSA9ICdpbWFnZSc7DQoJJGFsbG93ZWRleHQgPSAkbWVkaWFleHQ7DQp9ZWxzZXsNCgkkbW9kZSA9ICdvdGhlcic7DQoJJGFsbG93ZWRleHQgPSBhcnJheV9tZXJnZSgkbWVkaWFleHQsJGRvY2V4dCk7DQp9DQppZihpc3NldCgkcGFyYW1zWydleHRlbnNpb25zJ10pICYmICRwYXJhbXNbJ2V4dGVuc2lvbnMnXSAmJiAkcGFyYW1zWydleHRlbnNpb25zJ10gIT0gIiIpCSRhbGxvd2VkZXh0ID0gZXhwbG9kZSgiLCIsJHBhcmFtc1snZXh0ZW5zaW9ucyddKTsNCmlmKCRtb2RlID09ICdpbWFnZScgJiYgISR0aGlzLT5HZXRQcmVmZXJlbmNlKCJzaG93dGh1bWJuYWlscyIsdHJ1ZSkpCSRtb2RlID0gJ290aGVyJzsNCg0KJGFkZGZpbGVzID0gKCBpc3NldCgkcGFyYW1zWydhZGRmaWxlcyddKSAmJiAkcGFyYW1zWydhZGRmaWxlcyddICk7DQoNCg0KDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiMgU09NRSBGVU5DVElPTlMuLi4NCiMNCg0KZnVuY3Rpb24gc3RybGltaXQoJHN0cmluZyl7DQoJLy8gZnVuY3Rpb24gdG8gbGltaXQgdGhlIGxlbmd0aCBvZiB0aGUgZmlsZW5hbWVzDQoJaWYgKHN1YnN0cigkc3RyaW5nLDAsMjEpID09ICRzdHJpbmcpew0KCQlyZXR1cm4gJHN0cmluZzsNCgl9ZWxzZXsNCgkJcmV0dXJuIHN1YnN0cigkc3RyaW5nLDAsMTkpLicuLi4nOw0KCX0NCn0NCmZ1bmN0aW9uIGdldF90aHVtYm5haWwoJGJhc2V1cmwsICRmaWxlbmFtZSwgJGRpciwgJHJldHVybmFycmF5PWZhbHNlKXsNCgkkdGh1bWJwYXRoID0gJGRpci5ESVJFQ1RPUllfU0VQQVJBVE9SLiRmaWxlbmFtZTsNCgkkdGh1bWJuYW1lID0gJGZpbGVuYW1lOw0KCWlmIChmaWxlX2V4aXN0cygkZGlyLkRJUkVDVE9SWV9TRVBBUkFUT1IuJ3RodW1iXycuJGZpbGVuYW1lKSkgew0KCQkkdGh1bWJuYW1lID0gJ3RodW1iXycuJGZpbGVuYW1lOw0KCX1lbHNlaWYoZmlsZV9leGlzdHMoJGRpci5ESVJFQ1RPUllfU0VQQVJBVE9SLidwbHRodW1iXycuJGZpbGVuYW1lKSl7DQoJCSR0aHVtYm5hbWUgPSAncGx0aHVtYl8nLiRmaWxlbmFtZTsNCgl9DQoJJGltZ2luZiA9IGdldGltYWdlc2l6ZSgkZGlyLkRJUkVDVE9SWV9TRVBBUkFUT1IuJHRodW1ibmFtZSk7DQoJaWYoISRpbWdpbmYgfHwgIWlzc2V0KCRpbWdpbmZbMV0pKQlyZXR1cm4gZmFsc2U7DQoJbGlzdCgkd2lkdGgsICRoZWlnaHQpID0gJGltZ2luZjsNCgkkdGh1bWJuYWlscmF0aW8gPSBtYXgoJHdpZHRoIC8gMTA2LCRoZWlnaHQgLyAxMDYpOw0KCWlmICgkdGh1bWJuYWlscmF0aW8gPCAxKSAkdGh1bWJuYWlscmF0aW8gPSAxOw0KCSR0aGVpZ2h0ID0gZmxvb3IoJGhlaWdodCAvICR0aHVtYm5haWxyYXRpbyk7DQoJJHR3aWR0aCA9IGZsb29yKCR3aWR0aCAvICR0aHVtYm5haWxyYXRpbyk7DQoJaWYoJHJldHVybmFycmF5KXsNCgkJcmV0dXJuIGFycmF5KCRiYXNldXJsLicvJy4kdGh1bWJuYW1lLCAkdHdpZHRoLCAkdGhlaWdodCk7DQoJfWVsc2V7DQoJCXJldHVybiAnPGltZyBib3JkZXI9MCBzcmM9IicuJGJhc2V1cmwuJy8nLiR0aHVtYm5hbWUuJyIgd2lkdGg9IicuJHR3aWR0aC4nIiBoZWlnaHQ9IicuJHRoZWlnaHQuJyIgLz4nOw0KCX0NCn0NCmZ1bmN0aW9uIGltYWdlbW9kZV9idWlsZGxpbmtjb250ZW50KCRiYXNldXJsLCAkZmlsZW5hbWUsICRkaXI9Jycpew0KCS8vIGNyZWF0ZXMgdGhlIGNvbnRlbnQgb2YgdGhlIGxpbmsgaW4gaW1hZ2UgbW9kZQ0KCSRleHRlbnNpb24gPSBzdHJ0b2xvd2VyKHN1YnN0cihzdHJyY2hyKCRmaWxlbmFtZSwgIi4iKSwgMSkpOw0KCWlmKGluX2FycmF5KCRleHRlbnNpb24sIGFycmF5KCdqcGVnJywnanBnJywncG5nJywnZ2lmJykpKXsNCgkJJHRoZXRodW1iID0gZ2V0X3RodW1ibmFpbCgkYmFzZXVybCwgJGZpbGVuYW1lLCAkZGlyKTsNCgkJcmV0dXJuICc8ZGl2IHN0eWxlPSJ0ZXh0LWFsaWduOiBjZW50ZXI7Ij4nLiR0aGV0aHVtYi4nPC9kaXY+Jy5zdHJsaW1pdCgkZmlsZW5hbWUpOw0KCX0NCglnbG9iYWwgJGdDbXM7DQoJJHRoZWFkbWludGhlbWUgPSAkZ0Ntcy0+dmFyaWFibGVzWyJhZG1pbnRoZW1lIl07DQoJaWYoaW5fYXJyYXkoJGV4dGVuc2lvbiwgYXJyYXkoJ2ZsdicsJ3N3ZicsJ3dtdicsJ21vdicpKSl7DQoJCSRwaWMgPSAkdGhlYWRtaW50aGVtZS0+RGlzcGxheUltYWdlKCJpY29ucy9maWxldHlwZXMvZm1lZGlhLmdpZiIpOw0KCX1lbHNlaWYoaW5fYXJyYXkoJGV4dGVuc2lvbiwgYXJyYXkoJ2pwZWcnLCdqcGcnLCdwbmcnLCdnaWYnKSkpew0KCQkkcGljID0gJHRoZWFkbWludGhlbWUtPkRpc3BsYXlJbWFnZSgiaWNvbnMvZmlsZXR5cGVzL2ZwYWludC5naWYiKTsNCgl9ZWxzZXsNCgkJJHBpYyA9ICR0aGVhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoImljb25zL2ZpbGV0eXBlcy9mZG9jLmdpZiIpOw0KCX0NCglyZXR1cm4gJzxkaXYgc3R5bGU9InRleHQtYWxpZ246IGNlbnRlcjsiPicuJHBpYy4nPC9kaXY+Jy5zdHJsaW1pdCgkZmlsZW5hbWUpOw0KfQ0KDQpmdW5jdGlvbiBtYWtlRGlyT2JqKCRmaWxlbmFtZSwkZGlyLCRtb2R1bGUsJHBhcmFtcywkY3VyZGlyLCRwYXJlbnRkaXIsJGlkLCRyZXR1cm5pZCl7DQoJZ2xvYmFsICRnQ21zOw0KCSR0aGVhZG1pbnRoZW1lID0gJGdDbXMtPnZhcmlhYmxlc1siYWRtaW50aGVtZSJdOw0KCSRwYXJlbnQgPSAoJGZpbGVuYW1lID09ICcuLicpOw0KCSRvYmogPSBuZXcgU3RkQ2xhc3MoKTsNCgkkb2JqLT5mb2xkZXIgPSB0cnVlOw0KCSRlbXB0eSA9IGFycmF5KCJleHQiLCJzaXplIiwiaW1hZ2VzaXplIiwiZGVsZXRlbGluayIsIm1vZGlmaWVkIiwib3duZXIiLCJwZXJtaXNzaW9ucyIpOw0KCWZvcmVhY2goJGVtcHR5IGFzICRmaWVsZCkJJG9iai0+JGZpZWxkID0gJyc7DQoJJG9iai0+ZmlsZW5hbWUgPSAkZmlsZW5hbWU7DQoJJG9iai0+cGljID0gJHRoZWFkbWludGhlbWUtPkRpc3BsYXlJbWFnZSgiaWNvbnMvZmlsZXR5cGVzLyIuKCRwYXJlbnQ/InVwIjoiIikuImZvbGRlci5naWYiKTsNCglpZigkcGFyZW50KXsNCgkJJG5ld3BhcmFtcyA9IGFycmF5X21lcmdlKCRwYXJhbXMsIGFycmF5KCdjdXJkaXInID0+ICRwYXJlbnRkaXIpKTsNCgkJJG9iai0+dGhlbGluayA9ICRtb2R1bGUtPkNyZWF0ZUxpbmsoJGlkLCAnYnJvd3NlZmlsZXMnLCAkcmV0dXJuaWQsICcuLicsICRuZXdwYXJhbXMpOw0KCX1lbHNlew0KCQkkbmV3cGFyYW1zID0gYXJyYXlfbWVyZ2UoJHBhcmFtcywgYXJyYXkoJ2N1cmRpcicgPT4gJGN1cmRpci4nLycuJGZpbGVuYW1lLCAncGFyZW50ZGlyJyA9PiAkY3VyZGlyKSk7DQoJCSRvYmotPnRoZWxpbmsgPSAnPGEgc3R5bGU9ImRpc3BsYXk6bm9uZTsiPi4nLiRmaWxlbmFtZS4nPC9hPicuJG1vZHVsZS0+Q3JlYXRlTGluaygkaWQsICdicm93c2VmaWxlcycsICRyZXR1cm5pZCwgJGZpbGVuYW1lLCAkbmV3cGFyYW1zKTsNCgl9DQoJcmV0dXJuICRvYmo7DQp9DQpmdW5jdGlvbiBtYWtlRmlsZU9iaigkZmlsZW5hbWUsJGRpciwkbW9kdWxlLCRwYXJhbXMsJGN1cmRpciwkaWQsJHJldHVybmlkLCRiYXNldXJsKXsNCglnbG9iYWwgJGdDbXM7DQoJJHRoZWFkbWludGhlbWUgPSAkZ0Ntcy0+dmFyaWFibGVzWyJhZG1pbnRoZW1lIl07DQoJJGluZm8gPSAkbW9kdWxlLT5wbEdldEZpbGVJbmZvKCRkaXIuRElSRUNUT1JZX1NFUEFSQVRPUi4kZmlsZW5hbWUpOw0KCSRleHRlbnNpb24gPSAkaW5mb1snZXh0J107DQoJJG9iaiA9IG5ldyBTdGRDbGFzcygpOw0KCSRvYmotPmZvbGRlciA9IGZhbHNlOw0KCSRvYmotPmZpbGVuYW1lID0gJGZpbGVuYW1lOw0KCSRvYmotPmV4dCA9ICRleHRlbnNpb247DQoJJG9iai0+c2l6ZSA9ICc8YSBzdHlsZT0iZGlzcGxheTpub25lOyI+Jy4kaW5mb1sic2l6ZSJdLic8L2E+Jy4kaW5mb1sic2l6ZV93Zm9ybWF0Il07DQoJJG9iai0+cGljID0gJHRoZWFkbWludGhlbWUtPkRpc3BsYXlJbWFnZSgkaW5mb1siZmlsZWljb24iXSk7DQoJJG9iai0+aW1hZ2VzaXplID0gJyc7DQoJJG9iai0+dmlld2xpbmsgPSAnJzsNCglpZigkaW5mb1siaW1hZ2VzaXplIl0pew0KCQkkb2JqLT5pbWFnZXNpemUgPSAnPGEgc3R5bGU9ImRpc3BsYXk6bm9uZTsiPicuJGluZm9bIndpZHRoIl0uJzwvYT4nLiRpbmZvWyJpbWFnZXNpemUiXTsNCgkJJHRoZXRodW1iID0gZ2V0X3RodW1ibmFpbCgkYmFzZXVybCwgJGZpbGVuYW1lLCAkZGlyLCB0cnVlKTsNCgkJaWYoJHRoZXRodW1iKQkkb2JqLT52aWV3bGluayA9ICcgPGEgaHJlZj0iJy4kdGhldGh1bWJbMF0uJyIgdGl0bGU9IicuJG1vZHVsZS0+TGFuZygiaW5zdGFudHByZXZpZXciKS4nIiBzdHlsZT0iY3Vyc29yOiBwb2ludGVyOyIgb25jbGljaz0icmV0dXJuIGRpc3BsYXl0aHVtYih0aGlzLFwnJy4kdGhldGh1bWJbMF0uJ1wnLCcuJHRoZXRodW1iWzFdLicsJy4kdGhldGh1bWJbMl0uJyk7Ij4nLiR0aGVhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoImljb25zL3N5c3RlbS92aWV3LmdpZiIpLic8L2E+JzsNCgl9DQoJJG9iai0+ZGVsZXRlbGluayA9ICRtb2R1bGUtPkNyZWF0ZUxpbmsoJGlkLCAnYnJvd3NlZmlsZXMnLCAkcmV0dXJuaWQsICR0aGVhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoImljb25zL3N5c3RlbS9kZWxldGUuZ2lmIiksYXJyYXlfbWVyZ2UoJHBhcmFtcywgYXJyYXkoJ2RlbGV0ZWZpbGUnPT4kZmlsZW5hbWUpKSkuJG9iai0+dmlld2xpbms7DQoJJG5ld3BhcmFtcyA9IGFycmF5X21lcmdlKCRwYXJhbXMsIGFycmF5KCdmaWxlbmFtZSc9PiRmaWxlbmFtZSwgJ2ZpbGVwYXRoJyA9PiAkY3VyZGlyLicvJy4kZmlsZW5hbWUpKTsNCgkkb2JqLT50aGVsaW5rID0gJG1vZHVsZS0+Q3JlYXRlTGluaygkaWQsICdhc3NpZ25maWxlJywgJHJldHVybmlkLCAkZmlsZW5hbWUsICRuZXdwYXJhbXMpOw0KCSRvYmotPm1vZGlmaWVkID0gJzxhIHN0eWxlPSJkaXNwbGF5Om5vbmU7Ij4nLiRpbmZvWyJmaWxlbXRpbWUiXS4nPC9hPicuJGluZm9bIm1vZGlmaWVkIl07DQoJJG9iai0+b3duZXIgPSAkaW5mb1sib3duZXIiXTsNCgkkb2JqLT5wZXJtaXNzaW9ucyA9ICRpbmZvWyJwZXJtaXNzaW9ucyJdOw0KCXJldHVybiAkb2JqOw0KfQ0KDQoNCg0KDQoNCg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQojIFJFVFJJRVZJTkcgQ1VSUkVOVCBQQVRILi4uDQojDQoNCiRzdGFydGRpciA9IGlzc2V0KCRwYXJhbXNbJ3N0YXJ0ZGlyJ10pPyRwYXJhbXNbJ3N0YXJ0ZGlyJ106Jyc7DQppZigkc3RhcnRkaXIgIT0gJycgJiYgc3Vic3RyKCRzdGFydGRpciwwLDEpICE9ICcvJyAmJiBzdWJzdHIoJHN0YXJ0ZGlyLDAsMSkgIT0gJ1xcJykgJHN0YXJ0ZGlyID0gRElSRUNUT1JZX1NFUEFSQVRPUi4kc3RhcnRkaXI7DQppZighZmlsZV9leGlzdHMoJGdDbXMtPmNvbmZpZ1sndXBsb2Fkc19wYXRoJ10uJHN0YXJ0ZGlyKSkgQG1rZGlyKCRnQ21zLT5jb25maWdbJ3VwbG9hZHNfcGF0aCddLiRzdGFydGRpcik7DQoNCiRwYXJlbnRkaXIgPSAoaXNzZXQoJHBhcmFtc1sncGFyZW50ZGlyJ10pID8gJHBhcmFtc1sncGFyZW50ZGlyJ10gOiAnJyk7DQokY3VyZGlyID0gKGlzc2V0KCRwYXJhbXNbJ2N1cmRpciddKSA/ICRwYXJhbXNbJ2N1cmRpciddIDogJycpOw0KJGRpciA9ICRnQ21zLT5jb25maWdbJ3VwbG9hZHNfcGF0aCddLiRzdGFydGRpci4kY3VyZGlyOw0KaWYoIWlzX2RpcigkZGlyKSl7DQoJJGRpciA9ICRnQ21zLT5jb25maWdbInVwbG9hZHNfcGF0aCJdOw0KCSRjdXJkaXIgPSAnJzsNCgkkcGFyZW50ZGlyID0gJyc7DQp9DQokYmFzZXVybCA9ICRnQ21zLT5jb25maWdbJ3VwbG9hZHNfdXJsJ10uJHN0YXJ0ZGlyLiRjdXJkaXI7DQoNCmlmIChpc3NldCgkcGFyYW1zWydkZWxldGVmaWxlJ10pKXsNCgkvLyBXZSdyZSBkZWxldGluZyBhIGZpbGUNCglpZihmaWxlX2V4aXN0cygkZGlyLicvJy4kcGFyYW1zWydkZWxldGVmaWxlJ10pICYmIHVubGluaygkZGlyLicvJy4kcGFyYW1zWydkZWxldGVmaWxlJ10pKXsNCgkJZWNobyAkdGhpcy0+U2hvd01lc3NhZ2UoJHRoaXMtPkxhbmcoIm1lc3NhZ2VfZGVsZXRlZCIpKTsNCgl9DQp9DQoNCg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQojIFBSRVBBUklORyBISURERU4gRklFTERTIEZPUiBVUExPQUQNCiMNCg0KJGhpZGRlbiA9ICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsJ2N1cmRpcicsJGN1cmRpcikuJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwnZmllbGQnLCRwYXJhbXNbJ2ZpZWxkJ10pLiR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsJ3RhYmxlbmFtZScsJHBhcmFtc1sndGFibGVuYW1lJ10pLiR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsJ21vZGUnLCRwYXJhbXNbJ21vZGUnXSkuJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwncHJlZml4JywkcGFyYW1zWydwcmVmaXgnXSkuJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwkcGFyYW1zWydwcmVmaXgnXS4naWQnLCRwYXJhbXNbJHBhcmFtc1sncHJlZml4J10uJ2lkJ10pOw0KaWYoaXNzZXQoJHBhcmFtc1snZXh0ZW5zaW9ucyddKSkgJGhpZGRlbiAuPSAkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCdleHRlbnNpb25zJywkcGFyYW1zWydleHRlbnNpb25zJ10pOw0KaWYoaXNzZXQoJHBhcmFtc1snc3RhcnRkaXInXSkpICRoaWRkZW4gLj0gJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwnc3RhcnRkaXInLCRwYXJhbXNbJ3N0YXJ0ZGlyJ10pOw0KaWYoaXNzZXQoJHBhcmFtc1snc2l6ZSddKSkgJGhpZGRlbiAuPSAkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCdzaXplJywkcGFyYW1zWydzaXplJ10pOw0KaWYoaXNzZXQoJHBhcmFtc1sndGh1bWInXSkpICRoaWRkZW4gLj0gJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwndGh1bWInLCRwYXJhbXNbJ3RodW1iJ10pOw0KaWYoaXNzZXQoJHBhcmFtc1snY3JvcCddKSkgJGhpZGRlbiAuPSAkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCdjcm9wJywkcGFyYW1zWydjcm9wJ10pOw0KaWYoaXNzZXQoJHBhcmFtc1snY3JvcHRodW1iJ10pKSAkaGlkZGVuIC49ICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsJ2Nyb3B0aHVtYicsJHBhcmFtc1snY3JvcHRodW1iJ10pOw0KaWYoaXNzZXQoJHBhcmFtc1snYWRkZmlsZXMnXSkpICRoaWRkZW4gLj0gJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwnYWRkZmlsZXMnLCRwYXJhbXNbJ2FkZGZpbGVzJ10pOw0KaWYoaXNzZXQoJHBhcmFtc1snYWN0aXZlX3RhYiddKSkgJGhpZGRlbiAuPSAkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCdhY3RpdmVfdGFiJywkcGFyYW1zWydhY3RpdmVfdGFiJ10pOw0KDQoNCg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQojIFJFVFJJRVZJTkcgRklMRVMgJiBGT0xERVJTDQojDQoNCiRkaCAgPSBvcGVuZGlyKCRkaXIpOw0KJGZvbGRlcnMgPSBhcnJheSgpOw0KJGZpbGVzID0gYXJyYXkoKTsNCiR1cGZvbGRlciA9IGZhbHNlOw0Kd2hpbGUgKCRmaWxlbmFtZSA9IHJlYWRkaXIoJGRoKSl7DQoJaWYoaXNfZGlyKCRkaXIuRElSRUNUT1JZX1NFUEFSQVRPUi4kZmlsZW5hbWUpICYmICRmaWxlbmFtZSE9Jy4nKXsNCgkJCWlmICgkZmlsZW5hbWU9PScuLicpIHsNCgkJCQlpZiAoJGN1cmRpciAhPSAnJykJCSR1cGZvbGRlciA9IHRydWU7DQoJCQl9ZWxzZXsNCgkJCQkkZm9sZGVyc1tdID0gJGZpbGVuYW1lOw0KCQkJfQ0KCX1lbHNlew0KCQkkZXh0ZW5zaW9uID0gc3RydG9sb3dlcihzdWJzdHIoc3RycmNocigkZmlsZW5hbWUsICIuIiksIDEpKTsNCgkJaWYoaW5fYXJyYXkoJGV4dGVuc2lvbiwgJGFsbG93ZWRleHQpICYmICghJGhpZGV0aHVtYnMgfHwgc3Vic3RyKCRmaWxlbmFtZSwwLDYpICE9ICd0aHVtYl8nKSAmJiBzdWJzdHIoJGZpbGVuYW1lLDAsOCkgIT0gJ3BsdGh1bWJfJyl7DQoJCQkkZmlsZXNbXSA9ICRmaWxlbmFtZTsNCgkJfQ0KCX0NCn0NCmlmIChpc3NldCgkZGgpKQljbG9zZWRpcigkZGgpOw0Kc29ydCgkZm9sZGVycyk7DQpzb3J0KCRmaWxlcyk7DQoNCg0KDQoNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KIyBESVNQTEFZSU5HLi4uDQojDQoNCmVjaG8gJzxkaXYgaWQ9ImN0bG1tX3N1Ym1pdG1lc3NhZ2UiIGNsYXNzPSJwYWdlbWNvbnRhaW5lciIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7Ij4nLiR0aGlzLT5MYW5nKCJzdWJtaXR0aW5nX2ZpbGUiKS4nPC9kaXY+JzsNCg0KaWYoJG1vZGUgPT0gJ2ltYWdlJyl7DQoJLy8gaW1hZ2UgbW9kZSAod2l0aCB0aHVtYm5haWxzKSAtIG5vIHRlbXBsYXRlDQoJZWNobyAnPGgyPicuJHRoaXMtPkxhbmcoJ2Jyb3dzZWZpbGVzdGl0bGUnKS4nPC9oMj4nOw0KCWVjaG8gJzxwPicuJHRoaXMtPkxhbmcoJ3Nob3dpbmdkaXInKS4nIDogJy4kZGlyLic8L3A+JzsNCgllY2hvICc8ZGl2IGlkPSJmaWxlc2VsZWN0IiBjbGFzcz0icGFnZW92ZXJmbG93IiBzdHlsZT0icGFkZGluZzogNHB4OyBtYXJnaW4tYm90dG9tOiAxMHB4OyBib3JkZXI6IDFweCBzb2xpZCAjNjY2NjY2OyBiYWNrZ3JvdW5kOiAjRkZGRkZGOyBvdmVyZmxvdzogYXV0bzsiPjxkaXYgc3R5bGU9ImNsZWFyOiBib3RoOyI+JzsNCgkkZGl2b3B0aW9uID0gJzxkaXYgc3R5bGU9InRleHQtYWxpZ246IGNlbnRlcjsgZmxvYXQ6IGxlZnQ7IHdpZHRoOiAxNjVweDsgaGVpZ2h0OiAxODBweDsiPjxici8+JzsNCgkkY2xvc2VkaXYgPSAnPC9kaXY+DQonOw0KCWlmKCR1cGZvbGRlcil7DQoJCWVjaG8gJGRpdm9wdGlvbjsNCgkJJG5ld3BhcmFtcyA9IGFycmF5X21lcmdlKCRwYXJhbXMsIGFycmF5KCdjdXJkaXInID0+ICRwYXJlbnRkaXIpKTsNCgkJZWNobyAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdicm93c2VmaWxlcycsICRyZXR1cm5pZCwgJHRoZWFkbWludGhlbWUtPkRpc3BsYXlJbWFnZSgiaWNvbnMvZmlsZXR5cGVzL3VwZm9sZGVyLmdpZiIpLic8YnIvPicuJHRoaXMtPkxhbmcoJ3BhcmVudGRpcicpLCAkbmV3cGFyYW1zKTsNCgkJZWNobyAkY2xvc2VkaXY7DQoJfQ0KCWZvcmVhY2goJGZvbGRlcnMgYXMgJGZpbGVuYW1lKXsNCgkJZWNobyAkZGl2b3B0aW9uOw0KCQkkbmV3cGFyYW1zID0gYXJyYXlfbWVyZ2UoJHBhcmFtcywgYXJyYXkoJ2N1cmRpcicgPT4gJGN1cmRpci4nLycuJGZpbGVuYW1lLCAncGFyZW50ZGlyJyA9PiAkY3VyZGlyKSk7DQoJCWVjaG8gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnYnJvd3NlZmlsZXMnLCAkcmV0dXJuaWQsICc8ZGl2IHN0eWxlPSJ0ZXh0LWFsaWduOiBjZW50ZXI7Ij48aW1nIGJvcmRlcj0wIHNyYz0iLi4vbGliL2ZpbGVtYW5hZ2VyL0ltYWdlTWFuYWdlci9pbWcvZm9sZGVyLmdpZiIgLz48L2Rpdj4nLiRmaWxlbmFtZSwgJG5ld3BhcmFtcyk7DQoJCWVjaG8gJGNsb3NlZGl2Ow0KCX0NCglmb3JlYWNoKCRmaWxlcyBhcyAkZmlsZW5hbWUpew0KCQllY2hvICRkaXZvcHRpb247DQoJCSRuZXdwYXJhbXMgPSBhcnJheV9tZXJnZSgkcGFyYW1zLCBhcnJheSgnZmlsZW5hbWUnPT4kZmlsZW5hbWUsICdmaWxlcGF0aCcgPT4gJGN1cmRpci4nLycuJGZpbGVuYW1lKSk7DQoJCWVjaG8gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnYXNzaWduZmlsZScsICRyZXR1cm5pZCwgaW1hZ2Vtb2RlX2J1aWxkbGlua2NvbnRlbnQoJGJhc2V1cmwsICRmaWxlbmFtZSwgJGRpciksICRuZXdwYXJhbXMpLic8YnIvPic7DQoJCSRpbWdpbmYgPSBnZXRpbWFnZXNpemUoJGRpci5ESVJFQ1RPUllfU0VQQVJBVE9SLiRmaWxlbmFtZSk7DQoJCWlmKCRpbWdpbmYgJiYgaXNzZXQoJGltZ2luZlsxXSkpCWVjaG8gJygnLiRpbWdpbmZbMF0uJ3gnLiRpbWdpbmZbMV0uJykgJzsNCgkJJG5ld3BhcmFtcyA9IGFycmF5X21lcmdlKCRwYXJhbXMsIGFycmF5KCdkZWxldGVmaWxlJz0+JGZpbGVuYW1lKSk7DQoJCWVjaG8gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnYnJvd3NlZmlsZXMnLCAkcmV0dXJuaWQsICR0aGVhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoImljb25zL3N5c3RlbS9kZWxldGUuZ2lmIiksJG5ld3BhcmFtcyk7DQoJCWVjaG8gJGNsb3NlZGl2Ow0KCX0NCgllY2hvICc8L2Rpdj48L2Rpdj4nOw0KCQ0KCWVjaG8gJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCgkaWQsICdhZGRmaWxlcycsICRyZXR1cm5pZCwgJ3Bvc3QnLCAnbXVsdGlwYXJ0L2Zvcm0tZGF0YScpOw0KCWVjaG8gJzxoMz4nLmxhbmcoJ3VwbG9hZGZpbGUnKS4nOjwvaDM+PGRpdj4nOw0KCWlmKCRhZGRmaWxlcyl7DQoJCWVjaG8gJzxmaWVsZHNldCBzdHlsZT0iZmxvYXQ6IHJpZ2h0OyI+PGxlZ2VuZD48Yj4nLiR0aGlzLT5MYW5nKCJ1cGxvYWR6aXBmaWxlIikuJzwvYj48L2xlZ2VuZD4nOw0KCQllY2hvICc8cD4nLiR0aGlzLT5MYW5nKCJ6aXBmaWxlbm90aWNlIikuJzwvcD4nOw0KCQllY2hvICc8cD4nLiR0aGlzLT5DcmVhdGVGaWxlVXBsb2FkSW5wdXQoJGlkLCd1cGxvYWR6aXBmaWxlJykuJyAnLiR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsJ3N1Ym1pdHppcGZpbGUnLGxhbmcoJ3NlbmQnKSkuJzwvcD48L2ZpZWxkc2V0Pic7DQoJfQ0KCWVjaG8gJzxwPicuJHRoaXMtPkxhbmcoJ3Bvc3RtYXhzaXplJykuaW5pX2dldCgncG9zdF9tYXhfc2l6ZScpLic8L3A+JzsNCglpZihpc3NldCgkcGFyYW1zWyJzaXplIl0pKQllY2hvICc8cD4oJy4kdGhpcy0+TGFuZygnYnJvd3NlZmlsZXNyZXNpemUnKS4nKTwvcD4nOw0KCWVjaG8gJzxkaXYgaWQ9ImZpbGVpbnB1dHMiPjxwPicuJHRoaXMtPkNyZWF0ZUZpbGVVcGxvYWRJbnB1dCgkaWQsJ3VwbG9hZGZpbGUnKS4nPC9wPjwvZGl2Pic7DQoJaWYoJGFkZGZpbGVzKQllY2hvICc8cD48YSBocmVmPSJqYXZhc2NyaXB0OmFkZGZpbGVpbnB1dChcJ2ZpbGVpbnB1dHNcJyx0aGlzKTsiIHN0eWxlPSJjdXJzb3I6IHBvaW50ZXI7Ij4nLiR0aGlzLT5MYW5nKCJhZGRmaWxlaW5wdXQiKS4nPC9hPjwvcD4nOw0KCWVjaG8gJzxwPicuJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwnc3VibWl0JyxsYW5nKCdzZW5kJykpLic8L3A+JzsNCgllY2hvICRoaWRkZW47DQoJZWNobyAnPC9kaXY+JzsJCQ0KCWVjaG8gJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKTsNCgkNCn1lbHNlew0KCS8vIGxpc3QgbW9kZSAobm8gdGh1bWJuYWlscykgLSB1c2VzIGEgdGVtcGxhdGUNCgkNCgkkaW5zdGFudHNlYXJjaCA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCJkaXNwbGF5X2luc3RhbnRzZWFyY2giLGZhbHNlKTsNCgkkaW5zdGFudHNvcnQgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgiZGlzcGxheV9pbnN0YW50c29ydCIsZmFsc2UpOw0KCQ0KCSR0aGlzLT5zbWFydHktPmFzc2lnbigiYnJvd3NldGl0bGUiLCR0aGlzLT5MYW5nKCdicm93c2VmaWxlc3RpdGxlJykpOw0KCSR0aGlzLT5zbWFydHktPmFzc2lnbigidXBsb2FkdGl0bGUiLGxhbmcoJ3VwbG9hZGZpbGUnKSk7DQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJzaG93aW5nZGlyIiwkdGhpcy0+TGFuZygnc2hvd2luZ2RpcicpLicgOiAnLiRkaXIpOw0KCSR0aGlzLT5zbWFydHktPmFzc2lnbigiZm9ybXN0YXJ0IiwkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwgJ2FkZGZpbGVzJywgJHJldHVybmlkLCAncG9zdCcsICdtdWx0aXBhcnQvZm9ybS1kYXRhJykpOw0KCSR0aGlzLT5zbWFydHktPmFzc2lnbigiZm9ybWVuZCIsJGhpZGRlbi4kdGhpcy0+Q3JlYXRlRm9ybUVuZCgpKTsNCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oInJlc2l6ZW5vdGljZSIsaXNzZXQoJHBhcmFtc1sic2l6ZSJdKT8kdGhpcy0+TGFuZygnYnJvd3NlZmlsZXNyZXNpemUnKTpmYWxzZSk7DQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJwb3N0bWF4c2l6ZSIsJHRoaXMtPkxhbmcoJ3Bvc3RtYXhzaXplJykuaW5pX2dldCgncG9zdF9tYXhfc2l6ZScpKTsNCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oInN1Ym1pdCIsJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwnc3VibWl0JyxsYW5nKCdzZW5kJykpKTsNCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oImluc3RhbnRzZWFyY2giLCAkaW5zdGFudHNlYXJjaD8kdGhpcy0+TGFuZygic2VhcmNodGhpc3RhYmxlIikuIiAiLiR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAic2VhcmNoZmlsZXRhYmxlIiwgIiIsIDEwLCA2NCwgJyBvbmtleXVwPSJjdGxtbV9zZWFyY2godGhpcy52YWx1ZSxcJ2ZpbGVsaXN0X3RhYmxlXCcpOyInKTpmYWxzZSk7DQoNCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oInppcHRpdGxlIiwgJHRoaXMtPkxhbmcoInVwbG9hZHppcGZpbGUiKSk7DQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJ6aXBub3RpY2UiLCAkdGhpcy0+TGFuZygiemlwZmlsZW5vdGljZSIpKTsNCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oInppcGlucHV0IiwgJHRoaXMtPkNyZWF0ZUZpbGVVcGxvYWRJbnB1dCgkaWQsJ3VwbG9hZHppcGZpbGUnKSk7DQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJ6aXBzdWJtaXQiLCAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCdzdWJtaXR6aXBmaWxlJyxsYW5nKCdzZW5kJykpKTsNCg0KCWlmKCRhZGRmaWxlcyl7DQoJCSR0aGlzLT5zbWFydHktPmFzc2lnbigiZmlsZWlucHV0IiwnPGRpdiBpZD0iZmlsZWlucHV0cyI+PHA+Jy4kdGhpcy0+Q3JlYXRlRmlsZVVwbG9hZElucHV0KCRpZCwndXBsb2FkZmlsZScpLic8L3A+PC9kaXY+Jyk7DQoJCSR0aGlzLT5zbWFydHktPmFzc2lnbigiYWRkZmlsZWlucHV0IiwnPGEgaHJlZj0iamF2YXNjcmlwdDphZGRmaWxlaW5wdXQoXCdmaWxlaW5wdXRzXCcsdGhpcyk7IiBzdHlsZT0iY3Vyc29yOiBwb2ludGVyOyI+Jy4kdGhpcy0+TGFuZygiYWRkZmlsZWlucHV0IikuJzwvYT4nKTsNCgl9ZWxzZXsNCgkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJmaWxlaW5wdXQiLCc8cD4nLiR0aGlzLT5DcmVhdGVGaWxlVXBsb2FkSW5wdXQoJGlkLCd1cGxvYWRmaWxlJykuJzwvcD4nKTsNCgkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJhZGRmaWxlaW5wdXQiLGZhbHNlKTsNCgl9DQoJDQoJJHNvcnRsaW5rcyA9IGFycmF5KCk7DQoJJG51bWVyaWNfc29ydGxpbmtzID0gYXJyYXkoKTsNCgkkaSA9IDA7DQoJd2hpbGUoJGkgPCAxMCl7DQoJCWlmKCRpbnN0YW50c29ydCl7DQoJCQkkc29ydGxpbmtzWyRpXSA9ICc8ZGl2IHN0eWxlPSJmbG9hdDpsZWZ0OyI+PGEgc3R5bGU9ImN1cnNvcjogcG9pbnRlcjsiIG9uY2xpY2s9ImN0bG1tX3NvcnRSb3dzKFwnZmlsZWxpc3RfdGFibGVcJywnLiRpLicpOyI+PGltZyBzcmM9InRoZW1lcy9kZWZhdWx0L2ltYWdlcy9pY29ucy9zeXN0ZW0vc29ydF91cC5naWYiIGFsdD0iXiIvPjwvYT48YnIvPjxhIHN0eWxlPSJjdXJzb3I6IHBvaW50ZXI7IiBvbmNsaWNrPSJjdGxtbV9zb3J0Um93cyhcJ2ZpbGVsaXN0X3RhYmxlXCcsJy4kaS4nLHRydWUpOyI+PGltZyBzcmM9InRoZW1lcy9kZWZhdWx0L2ltYWdlcy9pY29ucy9zeXN0ZW0vc29ydF9kb3duLmdpZiIgYWx0PSJ2Ii8+PC9hPjwvZGl2PiAmbmJzcDsnOw0KCQkJJG51bWVyaWNfc29ydGxpbmtzWyRpXSA9ICc8ZGl2IHN0eWxlPSJmbG9hdDpsZWZ0OyI+PGEgc3R5bGU9ImN1cnNvcjogcG9pbnRlcjsiIG9uY2xpY2s9ImN0bG1tX3NvcnRSb3dzKFwnZmlsZWxpc3RfdGFibGVcJywnLiRpLicsZmFsc2UsdHJ1ZSk7Ij48aW1nIHNyYz0idGhlbWVzL2RlZmF1bHQvaW1hZ2VzL2ljb25zL3N5c3RlbS9zb3J0X3VwLmdpZiIgYWx0PSJeIi8+PC9hPjxici8+PGEgc3R5bGU9ImN1cnNvcjogcG9pbnRlcjsiIG9uY2xpY2s9ImN0bG1tX3NvcnRSb3dzKFwnZmlsZWxpc3RfdGFibGVcJywnLiRpLicsdHJ1ZSx0cnVlKTsiPjxpbWcgc3JjPSJ0aGVtZXMvZGVmYXVsdC9pbWFnZXMvaWNvbnMvc3lzdGVtL3NvcnRfZG93bi5naWYiIGFsdD0idiIvPjwvYT48L2Rpdj4gJm5ic3A7JzsNCgkJfWVsc2V7DQoJCQkkc29ydGxpbmtzWyRpXSA9ICcnOw0KCQkJJG51bWVyaWNfc29ydGxpbmtzWyRpXSA9ICcnOw0KCQl9DQoJCSRpKys7DQoJfQ0KCSR0aGlzLT5zbWFydHktPmFzc2lnbigic29ydGxpbmtzIiwkc29ydGxpbmtzKTsNCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oIm51bWVyaWNfc29ydGxpbmtzIiwkbnVtZXJpY19zb3J0bGlua3MpOw0KCQ0KCSRvYmogPSBuZXcgU3RkQ2xhc3MoKTsNCgkkb2JqLT5mb2xkZXIgPSAiIjsNCgkkb2JqLT5maWxlbmFtZSA9ICR0aGlzLT5MYW5nKCJmaWxlbmFtZSIpOw0KCSRvYmotPmV4dCA9ICR0aGlzLT5MYW5nKCJmaWxlZXh0Iik7DQoJJG9iai0+c2l6ZSA9ICR0aGlzLT5MYW5nKCJmaWxlc2l6ZSIpOw0KCSRvYmotPnBpYyA9ICIiOw0KCSRvYmotPmltYWdlc2l6ZSA9ICR0aGlzLT5MYW5nKCJpbWFnZXNpemUiKTsNCgkkb2JqLT5kZWxldGVsaW5rID0gJHRoaXMtPkxhbmcoIkFjdGlvbnMiKTsNCgkkb2JqLT5tb2RpZmllZCA9ICR0aGlzLT5MYW5nKCJsYXN0bW9kIik7DQoJJG9iai0+b3duZXIgPSAkdGhpcy0+TGFuZygiZmlsZW93bmVyIik7DQoJJG9iai0+cGVybWlzc2lvbnMgPSAkdGhpcy0+TGFuZygiZmlsZXBlcm1zIik7DQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJoZWFkZXJzIiwkb2JqKTsNCgkNCgkkaXRlbWxpc3QgPSBhcnJheSgpOw0KCWlmKCR1cGZvbGRlcikJJGl0ZW1saXN0W10gPSBtYWtlRGlyT2JqKCIuLiIsJGRpciwkdGhpcywkcGFyYW1zLCRjdXJkaXIsJHBhcmVudGRpciwkaWQsJHJldHVybmlkKTsNCglmb3JlYWNoKCRmb2xkZXJzIGFzICRmb2xkZXIpCSRpdGVtbGlzdFtdID0gbWFrZURpck9iaigkZm9sZGVyLCRkaXIsJHRoaXMsJHBhcmFtcywkY3VyZGlyLCRwYXJlbnRkaXIsJGlkLCRyZXR1cm5pZCk7DQoJZm9yZWFjaCgkZmlsZXMgYXMgJGZpbGVuYW1lKQkkaXRlbWxpc3RbXSA9IG1ha2VGaWxlT2JqKCRmaWxlbmFtZSwkZGlyLCR0aGlzLCRwYXJhbXMsJGN1cmRpciwkaWQsJHJldHVybmlkLCRiYXNldXJsKTsNCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oIml0ZW1saXN0IiwkaXRlbWxpc3QpOw0KCQ0KCWVjaG8gJw0KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4NCic7DQoJaWYoJGluc3RhbnRzZWFyY2gpCWVjaG8gJHRoaXMtPmdldEZpbGVDb250ZW50KCJpbnN0YW50c2VhcmNoLmpzIik7DQoJaWYoJGluc3RhbnRzb3J0KQllY2hvICR0aGlzLT5nZXRGaWxlQ29udGVudCgiaW5zdGFudHNvcnQuanMiKTsNCgllY2hvICcNCgk8L3NjcmlwdD4NCic7DQoNCgllY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoImJyb3dzZWZpbGVzLnRwbCIpOw0KfQ0KDQplY2hvICc8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+DQp2YXIgY3RsbW1fZm9ybSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCInLiRpZC4nbW9kdWxlZm9ybV8xIik7DQppZihjdGxtbV9mb3JtKQljdGxtbV9mb3JtLm9uc3VibWl0ID0gZnVuY3Rpb24oKSB7DQoJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImN0bG1tX3N1Ym1pdG1lc3NhZ2UiKS5zdHlsZS5kaXNwbGF5ID0gImJsb2NrIjsNCn0NCmZ1bmN0aW9uIGRpc3BsYXl0aHVtYihlbGUsdGh1bWJwYXRoLHdpZHRoLGhlaWdodCl7DQoJZWxlLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7DQoJdmFyIHRoZWltZyA9IG5ldyBJbWFnZSgpOw0KCXRoZWltZy53aWR0aCA9IHdpZHRoOw0KCXRoZWltZy5oZWlnaHQgPSBoZWlnaHQ7DQoJdGhlaW1nLnNyYyA9IHRodW1icGF0aDsNCgl0aGVpbWcuc3R5bGUuY3Vyc29yID0gInBvaW50ZXIiOw0KCXRoZWltZy5vbmNsaWNrID0gZnVuY3Rpb24oKSB7IGhpZGV0aHVtYih0aGlzKTsgfTsNCgllbGUucGFyZW50Tm9kZS5hcHBlbmRDaGlsZCh0aGVpbWcpOw0KCXJldHVybiBmYWxzZTsNCn0NCmZ1bmN0aW9uIGhpZGV0aHVtYihlbGUsdGh1bWJwYXRoLHdpZHRoLGhlaWdodCl7DQoJdmFyIHBhcmVudCA9IGVsZS5wYXJlbnROb2RlOw0KCXBhcmVudC5yZW1vdmVDaGlsZChlbGUpOw0KCXZhciB0aGVhcyA9IHBhcmVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYSIpOw0KCXRoZWFzW3RoZWFzLmxlbmd0aC0xXS5zdHlsZS5kaXNwbGF5ID0gImlubGluZSI7DQp9DQoNCnZhciBuYmZpbGVpbnB1dCA9IDE7DQoNCmZ1bmN0aW9uIGFkZGZpbGVpbnB1dChjb250YWluZXJpZCwgYnRuKXsNCgl2YXIgY29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoY29udGFpbmVyaWQpOw0KCWlmKCFjb250YWluZXIpIHJldHVybiBmYWxzZTsNCgluYmZpbGVpbnB1dCsrOw0KCXZhciB0bXBpbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0Iik7DQoJdG1waW5wdXQudHlwZSA9ICJmaWxlIjsNCgl0bXBpbnB1dC5uYW1lID0gIicuJGlkLid1cGxvYWRmaWxlIituYmZpbGVpbnB1dDsNCgl2YXIgdGhlcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInAiKTsNCgl0aGVwLmFwcGVuZENoaWxkKHRtcGlucHV0KTsNCgljb250YWluZXIuYXBwZW5kQ2hpbGQodGhlcCk7DQoJaWYobmJmaWxlaW5wdXQgPT0gMTIpCWJ0bi5zdHlsZS5kaXNwbGF5ID0gZmFsc2U7DQp9DQo8L3NjcmlwdD4nOw0KPz4NCg==]]></data>
	</file>
	<file>
	  <filename>/action.default.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmlmKCFpc3NldCgkZ0NtcykpIGV4aXQ7DQoNCi8vIHdlIG5lZWQgdG8ga25vdyB3aGljaCBsZXZlbCBpcyB0aGUgZmluYWwgbGV2ZWwNCiRsZXZlbGFycmF5ID0gJHRoaXMtPmdldF9sZXZlbGFycmF5KCk7DQokZmluYWxsZXZlbCA9ICJ2aWRlbyI7DQoNCi8vIHdlIGNoZWNrIHdoYXQgbGV2ZWwgd2UncmUgd2F0Y2hpbmcuLi4gaWYgbm9uZSBpcyBzcGVjaWZpZWQsIHdlIHVzZSB0aGUgZmluYWwgbGV2ZWwNCiR3aGF0ID0gKGlzc2V0KCRwYXJhbXNbIndoYXQiXSkgJiYgaW5fYXJyYXkoJHBhcmFtc1sid2hhdCJdLCRsZXZlbGFycmF5KSk/JHBhcmFtc1sid2hhdCJdOiRmaW5hbGxldmVsOw0KLy8gd2UgZ2l2ZSBpdCBiYWNrIHRvIHRoZSBwYXJhbXMgZm9yIHByZXR0eSB1cmxzIGFuZCBwYWdlIHZpZXcNCmlmKCFpc3NldCgkcGFyYW1zWyJ3aGF0Il0pIHx8ICRwYXJhbXNbIndoYXQiXSA9PSAiIikJJHBhcmFtc1sid2hhdCJdID0gJHdoYXQ7DQokcGFyZW50bGV2ZWwgPSAkdGhpcy0+Z2V0X25leHRsZXZlbCgkd2hhdCwgZmFsc2UpOw0KDQovLyB3ZSByZXRyaWV2ZSBzb21lIG90aGVyIHBhcmFtZXRlcnMNCmlmKCR3aGF0ICE9ICRmaW5hbGxldmVsKXsNCgkkZm9yY2VsaXN0ID0gdHJ1ZTsJCS8vIEFsd2F5cyBkaXNwbGF5IGFzIGxpc3Qgd2hlbiB3ZSdyZSBub3Qgb24gdGhlIGZpbmFsIGxldmVsDQp9ZWxzZWlmKGlzc2V0KCRwYXJhbXNbImFsaWFzIl0pKXsNCgkkZm9yY2VsaXN0ID0gZmFsc2U7CQkvLyBuZXZlciBkaXNwbGF5IGEgbGlzdCB3aGVuIHRoZSBhbGlhcyBpcyBzcGVjaWZpZWQNCn1lbHNlew0KCSRmb3JjZWxpc3QgPSBpc3NldCgkcGFyYW1zWyJmb3JjZWxpc3QiXSk/JHBhcmFtc1siZm9yY2VsaXN0Il06JHRoaXMtPkdldFByZWZlcmVuY2UoImZvcmNlX2xpc3QiLGZhbHNlKTsNCn0NCiRvcmRlcmJ5ID0gaXNzZXQoJHBhcmFtc1sib3JkZXJieSJdKT8kcGFyYW1zWyJvcmRlcmJ5Il06ZmFsc2U7DQokbGltaXQgPSBpc3NldCgkcGFyYW1zWyJsaW1pdCJdKT8kcGFyYW1zWyJsaW1pdCJdOmZhbHNlOw0KJGlubGluZSA9IChpc3NldCgkcGFyYW1zWyJpbmxpbmUiXSkgJiYgJHBhcmFtc1siaW5saW5lIl0pP3RydWU6ZmFsc2U7DQoNCi8vIHdlIGJ1aWxkIHRoZSBxdWVyeS4gRmlyc3QsIHdlIGNoZWNrIGlmIHdlJ3JlIHVzaW5nIGEgc2F2ZWQgcXVlcnkgOg0KaWYoaXNzZXQoJHBhcmFtc1sicXVlcnkiXSkpew0KCSRxdWVyeWlkID0gKGludCkgJHBhcmFtc1sicXVlcnkiXTsNCglpZigkcXVlcnkgPSAkdGhpcy0+Z2V0X3F1ZXJpZXMoYXJyYXkoImlkIj0+JHF1ZXJ5aWQpKSl7DQoJCS8vIHdlIHJldHJpZXZlIHRoZSBuYW1lIG9mIHRoZSBmdW5jdGlvbiB0aGF0IHdpbGwgZG8gdGhlIHF1ZXJ5DQoJCSRxdWVyeSA9ICRxdWVyeVswXTsNCgkJJHdoYXQgPSAkcXVlcnktPndoYXQ7DQoJCSRnZXRmdW5jdGlvbiA9ICJnZXRfbGV2ZWxfIi4kd2hhdDsNCgkJJHBhcmVudGxldmVsID0gJHRoaXMtPmdldF9uZXh0bGV2ZWwoJHdoYXQsIGZhbHNlKTsNCgkJJGl0ZW1saXN0ID0gJHRoaXMtPiRnZXRmdW5jdGlvbihhcnJheSgpLCBmYWxzZSwgIiIsICIiLCAkb3JkZXJieSwgJGxpbWl0LCAkcXVlcnktPndoZXJlY2xhdXNlLCAkcXVlcnktPndoZXJldmFsdWVzLCAoJHF1ZXJ5LT5xdWVyeW9yZGVyID09ICIiP2ZhbHNlOiRxdWVyeS0+cXVlcnlvcmRlcikpOw0KCX1lbHNlaWYoJHRoaXMtPkdldFByZWZlcmVuY2UoImFsbG93X3NxbCIsZmFsc2UpKXsNCgkJJGdldGZ1bmN0aW9uID0gImdldF9sZXZlbF8iLiR3aGF0Ow0KCQkkcGFyZW50bGV2ZWwgPSAkdGhpcy0+Z2V0X25leHRsZXZlbCgkd2hhdCwgZmFsc2UpOw0KCQkkcXVlcnkgPSAkcGFyYW1zWyJxdWVyeSJdOyAvLyBxdWVyeSBzaG91bGQgYmUgc2FuaXRpemVkLi4uDQoJCSRpdGVtbGlzdCA9ICR0aGlzLT4kZ2V0ZnVuY3Rpb24oYXJyYXkoKSwgZmFsc2UsICIiLCAiIiwgJG9yZGVyYnksICRsaW1pdCwgJHF1ZXJ5KTsNCgl9ZWxzZXsNCgkJJG1lc3NhZ2UgPSAkdGhpcy0+TGFuZygiZXJyb3Jfd3JvbmdxdWVyeSIpOw0KCQlpZigkcXVlcnlpZCAhPSAkcXVlcnkgJiYgJG1zZyA9IG15c3FsX2Vycm9yKCkpCQkkbWVzc2FnZSAuPSAiPGJyLz4iLiR0aGlzLT5MYW5nKCJnaXZlbmVycm9yIikuJG1zZzsNCgkJZWNobyAkdGhpcy0+U2hvd0Vycm9ycygkbWVzc2FnZSk7DQoJfQ0KfWVsc2V7DQoJLy8gd2UncmUgbm90IHVzaW5nIGEgc2F2ZWQgcXVlcnksIHNvIHdlIHBhcnNlIHRoZSBwYXJhbWV0ZXJzDQoJLy8gd2UgcmV0cmlldmUgdGhlIG5hbWUgb2YgdGhlIGZ1bmN0aW9uIHRoYXQgd2lsbCBkbyB0aGUgcXVlcnkNCgkkZ2V0ZnVuY3Rpb24gPSAiZ2V0X2xldmVsXyIuJHdoYXQ7DQoJLy8gVGhlICR3aGVyZSBob2xkcyBlbGVtZW50cyBvZiB0aGUgV0hFUkUgY2xhdXNlIG9mIHRoZSBxdWVyeSwgaW4gdGhlIGZvcm0gZmllbGRfbmFtZT0+ZmllbGRfdmFsdWUNCglpZihpc3NldCgkcGFyYW1zWyJhbGlhcyJdKSAmJiAkcGFyYW1zWyJhbGlhcyJdICE9ICIiKSB7DQoJCSR3aGVyZSA9IGFycmF5KCJhbGlhcyI9PiRwYXJhbXNbImFsaWFzIl0pOw0KCX1lbHNlaWYoaXNzZXQoJHBhcmFtc1sic2hvd2RlZmF1bHQiXSkgJiYgJHBhcmFtc1sic2hvd2RlZmF1bHQiXSkgew0KCQkkd2hlcmUgPSBhcnJheSgiaXNkZWZhdWx0Ij0+MSk7DQoJfWVsc2V7DQoJCSR3aGVyZSA9IGFycmF5KCk7DQoJfQ0KCWlmKGlzc2V0KCRwYXJhbXNbInBhcmVudCJdKSAmJiAkcGFyYW1zWyJwYXJlbnQiXSAhPSAiIikgJHdoZXJlWyJwYXJlbnQiXSA9ICRwYXJhbXNbInBhcmVudCJdOw0KDQoJJHdoZXJlWyJhY3RpdmUiXSA9IDE7DQoJDQoJJGl0ZW1saXN0ID0gJHRoaXMtPiRnZXRmdW5jdGlvbigkd2hlcmUsIGZhbHNlLCAiIiwgIiIsIGlzc2V0KCRwYXJhbXNbIm9yZGVyYnkiXSk/JHBhcmFtc1sib3JkZXJieSJdOjAsIGlzc2V0KCRwYXJhbXNbImxpbWl0Il0pPyRwYXJhbXNbImxpbWl0Il06MCk7DQp9DQoNCi8vIEludGVncmF0aW9uIHdvdWxkIHJlcXVpcmUgc29tZSBjaGFuZ2VzIHRvIENhcnRNYWRlU2ltcGxlDQovLyAkaXRlbWxpc3QgPSAkdGhpcy0+YWRkQ2FydFVybHMoJGl0ZW1saXN0LCRpZCwkcmV0dXJuaWQpOw0KDQovLyAgU1RBUlQgUFJPQ0VTU0lORw0KDQppZihjb3VudCgkaXRlbWxpc3QpID09IDEgJiYgISRmb3JjZWxpc3Qpew0KCQ0KCS8vICMjIyMjIyMjIyMjIyMjIyMjIFdFIEFSRSBESVNQTEFZSU5HIEFOIElURU0gSU4gREVUQUlMIFZJRVcNCgkNCgkkaXRlbT0kaXRlbWxpc3RbMF07DQoNCgkvLyBpZiBhIHRlbXBsYXRlIGhhcyBiZWVuIHNwZWNpZmllZCwgd2UgdHJ5IHRvIHJldHJpZXZlIGl0CQ0KCSR0ZW1wbGF0ZSA9IGZhbHNlOw0KCWlmKGlzc2V0KCRwYXJhbXNbImZpbmFsdGVtcGxhdGUiXSkgJiYgJHBhcmFtc1siZmluYWx0ZW1wbGF0ZSJdICE9ICIiKXsNCgkJJHRlbXBsYXRlID0gJHRoaXMtPkdldFRlbXBsYXRlKCRwYXJhbXNbImZpbmFsdGVtcGxhdGUiXSk7DQoJfQ0KDQoJLy8gaWYgbm8gdGVtcGxhdGUgaGFzIGJlZW4gc3BlY2lmaWVkLCB3ZSByZXRyaWV2ZSB0aGUgZGVmYXVsdCBmaW5hbCB0ZW1wbGF0ZQ0KCWlmKCEkdGVtcGxhdGUgfHwgJHRlbXBsYXRlID09ICIiKXsNCgkJJHRlbXBsYXRlbmFtZSA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCJmaW5hbHRlbXBsYXRlIik7DQoJCSR0ZW1wbGF0ZSA9ICR0aGlzLT5HZXRUZW1wbGF0ZSgkdGVtcGxhdGVuYW1lLCAkdGhpcy0+R2V0TmFtZSgpKTsNCgl9DQoJLy8gd2UgcmV0cmlldmUgdGhlIHBhcmVudCB0cmVlOg0KCSRwYXJlbnR0cmVlID0gJHRoaXMtPmdldF9vYmp0cmVlKCAkaXRlbS0+cGFyZW50X2lkLCAkdGhpcy0+Z2V0X25leHRsZXZlbCgkd2hhdCwgZmFsc2UpICk7DQoJJGl0ZW0tPnBhcmVudF9vYmplY3QgPSAkcGFyZW50dHJlZTsNCg0KCQ0KCS8vIGlmIHRoZSBpdGVtIGhhcyBwYXJlbnRzLCB3ZSBhc3NpZ24gbGlua3MgdG8gdGhhdCBwYXJlbnQNCglpZihpc3NldCgkaXRlbS0+cGFyZW50X2FsaWFzKSl7DQoJCSRwcmV0dHl1cmwgPSAkdGhpcy0+QnVpbGRQcmV0dHlVcmxzKGFycmF5KCJwYXJlbnQiPT4kaXRlbS0+cGFyZW50X2FsaWFzLCAid2hhdCI9PiR3aGF0KSwgJHJldHVybmlkKTsNCgkJJGl0ZW0tPnBhcmVudGxpbmsgPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICJkZWZhdWx0IiwgJHJldHVybmlkLCAkaXRlbS0+cGFyZW50X25hbWUsIGFycmF5KCJwYXJlbnQiPT4kaXRlbS0+cGFyZW50X2FsaWFzKSwgIiIsIGZhbHNlLCAkaW5saW5lLCAiIiwgZmFsc2UsICRwcmV0dHl1cmwpOw0KCQkkaXRlbS0+cGFyZW50dXJsID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAiZGVmYXVsdCIsICRyZXR1cm5pZCwgIiIsIGFycmF5KCJwYXJlbnQiPT4kaXRlbS0+cGFyZW50X2FsaWFzKSwgIiIsIHRydWUsICRpbmxpbmUsICIiLCBmYWxzZSwgJHByZXR0eXVybCk7DQoJfQ0KCQ0KCS8vIHdlIHJldHJpZXZlIGEgbGFiZWwgZm9yIGVhY2ggb2YgdGhlIGl0ZW0ncyBmaWVsZCBhbmQgYXNzaWduIGl0IHRvIHNtYXJ0eQ0KCSRsYWJlbHMgPSBuZXcgU3RkQ2xhc3MoKTsNCglmb3JlYWNoKCRpdGVtIGFzICRrZXk9PiR2YWx1ZSl7DQoJCSRsYWJlbHMtPiRrZXkgPSAkdGhpcy0+TGFuZygkd2hhdC4iXyIuJGtleSk7CQkNCgl9DQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJsYWJlbHMiLCAkbGFiZWxzKTsNCgkNCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oIml0ZW0iLCRpdGVtKTsNCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oImxldmVsdGl0bGUiLCR0aGlzLT5MYW5nKCR3aGF0LiJfcGx1cmFsIikpOw0KCS8vIHdlIHByb2Nlc3MgdGhlIHRlbXBsYXRlDQoJZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlRnJvbURhdGEoJHRlbXBsYXRlKTsNCgkNCn1lbHNlaWYoY291bnQoJGl0ZW1saXN0KSA+IDApew0KCQ0KCS8vICMjIyMjIyMjIyMjIyMjIyMjIFdFIEFSRSBESVNQTEFZSU5HIEEgTElTVCBWSUVXDQoJJHBhcmVudG9iaiA9IGZhbHNlOw0KCS8vIGlmIHdlIGFyZSB3YXRjaGluZyBpdGVtcyBmcm9tIGEgc3BlY2lmaWMgcGFyZW50cywgd2Ugd2FudCB0byBoYXZlIHRoZSBpbmZvcm1hdGlvbnMgb2YgdGhpcyBwYXJlbnQgYXZhaWxhYmxlDQoJLy8gaW4gdGhlIHRlbXBsYXRlIChmb3IgZXhhbXBsZSwgaWYgd2Ugd2FudCB0byBkaXNwbGF5IGEgY2F0ZWdvcnkgcGFnZSwgd2UgbWlnaHQgd2FudCB0byBzaG93IHRoZSBjYXRlZ29yeSBkZXNjcmlwdGlvbikNCgkvLyBpZiBpdCBpcyB0aGUgY2FzZSwgd2UgcmV0cmlldmUgdGhlIHBhcmVudCBhbmQgZ2l2ZSBpdCB0byBzbWFydHkNCglpZihpc3NldCgkcGFyYW1zWyJwYXJlbnQiXSkgJiYgJHBhcmFtc1sicGFyZW50Il0gIT0gIiIpew0KCQkkcGFyZW50b2JqID0gJHRoaXMtPmdldF9vYmp0cmVlKCRwYXJhbXNbInBhcmVudCJdLCAkdGhpcy0+Z2V0X25leHRsZXZlbCgkd2hhdCxmYWxzZSksICJhbGlhcyIpOw0KCX0NCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oInBhcmVudG9iaiIsJHBhcmVudG9iaik7DQoJDQoJJHNlbGVjdGVkYWxpYXMgPSBmYWxzZTsNCgkvLyB3ZSBjaGVjayBpZiB0aGUgY3VycmVudCBwYWdlIGhhcyBvdGhlciBpbnN0YW5jZXMgb2YgdGhlIG1vZHVsZSB3aGljaCBhcmUgaW4gYWN0aW9uDQoJJGdsb2IgPSAkdGhpcy0+Z2V0X21vZHVsZUdldFZhcnMoKTsNCglpZigkd2hhdCA9PSAkZmluYWxsZXZlbCAmJiBpc3NldCgkZ2xvYlsiYWxpYXMiXSkpew0KCQkkc2VsZWN0ZWRhbGlhcyA9ICRnbG9iWyJhbGlhcyJdOw0KCX1lbHNlaWYoaXNzZXQoJGdsb2JbInBhcmVudCJdKSAmJiBpc3NldCgkZ2xvYlsid2hhdCJdKSAmJiAkZ2xvYlsid2hhdCJdID09ICR0aGlzLT5nZXRfbmV4dGxldmVsKCR3aGF0KSl7DQoJCSRzZWxlY3RlZGFsaWFzID0gJGdsb2JbInBhcmVudCJdOw0KCX0NCglpZihpc3NldCgkcGFyYW1zWyJuYnBlcnBhZ2UiXSkgJiYgaXNzZXQoJGdsb2JbInBhZ2VpbmRleCJdKSAmJiAhaXNzZXQoJHBhcmFtc1sicGFnZWluZGV4Il0pKSAkcGFyYW1zWyJwYWdlaW5kZXgiXSA9ICRnbG9iWyJwYWdlaW5kZXgiXTsNCglpZighaXNzZXQoJHRoaXMtPnBsY3VycmVudFskd2hhdF0pKQkkdGhpcy0+YnVpbGRHbG9iYWxUcmVlKCk7DQoJaWYoaXNzZXQoJHRoaXMtPnBsY3VycmVudFskd2hhdF0pKQkkc2VsZWN0ZWRhbGlhcyA9ICR0aGlzLT5wbGN1cnJlbnRbJHdoYXRdOw0KCWlmKGlzc2V0KCRwYXJhbXNbIm5icGVycGFnZSJdKSAmJiAhaXNzZXQoJHBhcmFtc1sicGFnZWluZGV4Il0pKSAkcGFyYW1zWyJwYWdlaW5kZXgiXSA9ICR0aGlzLT5jdXJyZW50cGFnZWluZGV4Ow0KCSRsaW5rcmV0dXJuaWQgPSAoaXNzZXQoJHBhcmFtc1siZGV0YWlscGFnZSJdKSk/JHRoaXMtPmdldF9wYWdlaWQoJHBhcmFtc1siZGV0YWlscGFnZSJdKTokcmV0dXJuaWQ7DQoNCgkvLyB3ZSByZXRyaWV2ZSB0aGUgdGVtcGxhdGUNCglpZihpc3NldCgkcGFyYW1zWyJsaXN0dGVtcGxhdGUiXSkgJiYgJHBhcmFtc1sibGlzdHRlbXBsYXRlIl0gIT0gIiIgJiYgJGN1c3RvbXRwbCA9ICR0aGlzLT5HZXRUZW1wbGF0ZSgkcGFyYW1zWyJsaXN0dGVtcGxhdGUiXSwgJHRoaXMtPkdldE5hbWUoKSkpew0KCQkkdGVtcGxhdGUgPSAkY3VzdG9tdHBsOw0KCX1lbHNlew0KCQkkdGVtcGxhdGVuYW1lID0gJHRoaXMtPkdldFByZWZlcmVuY2UoImxpc3R0ZW1wbGF0ZV8iLiR3aGF0KTsNCgkJJHRlbXBsYXRlID0gJHRoaXMtPkdldFRlbXBsYXRlKCR0ZW1wbGF0ZW5hbWUsICR0aGlzLT5HZXROYW1lKCkpOw0KCX0NCg0KCS8vIGlmIFJBTkRPTSBvcHRpb24gaXMgc2V0LCB3ZSByYW5kb21seSBzZWxlY3RlZCBvbmx5IGEgbnVtYmVyIG9mIHRoZSBpdGVtcyByZXRyaWV2ZWQNCglpZiggaXNzZXQoJHBhcmFtc1sicmFuZG9tIl0pICYmICRwYXJhbXNbInJhbmRvbSJdID4gMCAmJiAkcGFyYW1zWyJyYW5kb20iXSA8IGNvdW50KCRpdGVtbGlzdCkgKXsNCgkJJG5ld2xpc3QgPSBhcnJheSgpOw0KCQkkaSA9IDE7DQoJCSRzZWxlY3RlZCA9IGFycmF5KCk7DQoJCSRjdXJyYW5kID0gcmFuZCgwLChjb3VudCgkaXRlbWxpc3QpLTEpKTsNCgkJd2hpbGUoJGkgPD0gJHBhcmFtc1sicmFuZG9tIl0pew0KCQkJd2hpbGUoaW5fYXJyYXkoJGN1cnJhbmQsICRzZWxlY3RlZCkgJiYgY291bnQoJHNlbGVjdGVkKSA8IGNvdW50KCRpdGVtbGlzdCkpCSRjdXJyYW5kID0gcmFuZCgwLChjb3VudCgkaXRlbWxpc3QpLTEpKTsNCgkJCSRuZXdsaXN0W10gPSAkaXRlbWxpc3RbJGN1cnJhbmRdOw0KCQkJJHNlbGVjdGVkW10gPSAkY3VycmFuZDsNCgkJCSRpKys7DQoJCX0NCgkJJGl0ZW1saXN0ID0gJG5ld2xpc3Q7DQoJfQ0KCQ0KCS8vIGNoZWNrIGlmIHdlIG11c3Qgc2VwYXJhdGUgaW50byBwYWdlcw0KCSRpdGVtbGlzdCA9ICR0aGlzLT5zcGxpdF9pbnRvX3BhZ2VzKCRpdGVtbGlzdCwgJGlkLCAkcmV0dXJuaWQsICRwYXJhbXMpOw0KCQ0KCQkNCgkvLyBmaW5hbCBwcm9jZXNzaW5nIC0gd2UgY3JlYXRlIHRoZSBkZXRhaWxsaW5rcyBmb3IgZWFjaCBpdGVtDQoJJG5ld2xpc3QgPSBhcnJheSgpOw0KCWZvcmVhY2goJGl0ZW1saXN0IGFzICRpdGVtKXsNCgkJJGl0ZW0gPSAkdGhpcy0+YWRkZnJvbnRlbmR1cmxzKCRpdGVtLCRwYXJhbXMsJGlkLCRsaW5rcmV0dXJuaWQpOw0KCQkkaXRlbS0+aXNfc2VsZWN0ZWQgPSAoJGl0ZW0tPmFsaWFzID09ICRzZWxlY3RlZGFsaWFzKT90cnVlOmZhbHNlOw0KCQlhcnJheV9wdXNoKCRuZXdsaXN0LCAkaXRlbSk7DQoJfQ0KCSRpdGVtbGlzdCA9ICRuZXdsaXN0Ow0KCQ0KCS8vIHdlIGdpdmUgZXZlcnl0aGluZyB0byBzbWFydHkgYW5kIHByb2Nlc3MgdGhlIHRlbXBsYXRlDQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJpdGVtbGlzdCIsJGl0ZW1saXN0KTsNCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oImxldmVsdGl0bGUiLCR0aGlzLT5MYW5nKCR3aGF0LiJfcGx1cmFsIikpOw0KCWVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZUZyb21EYXRhKCR0ZW1wbGF0ZSk7DQoJDQp9ZWxzZXsNCgkNCgkvLyAjIyMjIyMjIyMjIyMjIyMjIyBXRSBBUkVOJ1QgRElTUExBWUlORyBBTllUSElORyBBVCBBTEwNCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oImVycm9yX21zZyIsKGlzc2V0KCRwYXJhbXNbImFsaWFzIl0pPyR0aGlzLT5MYW5nKCJlcnJvcl9ub3Rmb3VuZCIpOiR0aGlzLT5MYW5nKCJlcnJvcl9ub2l0ZW1mb3VuZCIpKSk7DQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJiYWNrbGluayIsZmFsc2UpOw0KCSRwYXJlbnRvYmogPSBmYWxzZTsNCglpZihpc3NldCgkcGFyYW1zWyJwYXJlbnQiXSkgJiYgJHBhcmVudGxldmVsKXsNCgkJJHRtcGZ1bmN0aW9uID0gImdldF9sZXZlbF8iLiRwYXJlbnRsZXZlbDsNCgkJJHBhcmVudG9iaiA9ICR0aGlzLT4kdG1wZnVuY3Rpb24oYXJyYXkoImFsaWFzIj0+JHBhcmFtc1sicGFyZW50Il0pKTsNCgkJJHBhcmVudG9iaiA9IGlzc2V0KCRwYXJlbnRvYmpbMF0pPyRwYXJlbnRvYmpbMF06ZmFsc2U7DQoJfQ0KCSR0aGlzLT5zbWFydHktPmFzc2lnbigicGFyZW50b2JqIiwkcGFyZW50b2JqKTsNCgllY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoIm5vcmVzdWx0LnRwbCIpOw0KfQ0KDQo/Pg0K]]></data>
	</file>
	<file>
	  <filename>/action.defaultadmin.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmlmICghaXNzZXQoJGdDbXMpKSBleGl0Ow0KJGFkbWludGhlbWUgPSAkZ0Ntcy0+dmFyaWFibGVzWyJhZG1pbnRoZW1lIl07DQokYWN0aXZlX3RhYiA9IGlzc2V0KCRwYXJhbXNbImFjdGl2ZV90YWIiXSk/JHBhcmFtc1siYWN0aXZlX3RhYiJdOiJjYXRlZ29yeSI7DQoNCiRoYXNfYWR2YW5jZWRfcGVybSA9ICR0aGlzLT5DaGVja1Blcm1pc3Npb24oInZpbWVvcGxheWVyX2FkdmFuY2VkIik7DQoNCiRmaWx0ZXIgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgiZGlzcGxheV9maWx0ZXIiLGZhbHNlKTsNCiRpbnN0YW50c2VhcmNoID0gJHRoaXMtPkdldFByZWZlcmVuY2UoImRpc3BsYXlfaW5zdGFudHNlYXJjaCIsZmFsc2UpOw0KJGluc3RhbnRzb3J0ID0gJHRoaXMtPkdldFByZWZlcmVuY2UoImRpc3BsYXlfaW5zdGFudHNvcnQiLGZhbHNlKTsNCg0KaWYoJGluc3RhbnRzb3J0IHx8ICRpbnN0YW50c2VhcmNoKXsNCgllY2hvICcNCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+DQonOw0KCWlmKCRpbnN0YW50c2VhcmNoKQllY2hvICR0aGlzLT5nZXRGaWxlQ29udGVudCgiaW5zdGFudHNlYXJjaC5qcyIpOw0KCWlmKCRpbnN0YW50c29ydCkJZWNobyAkdGhpcy0+Z2V0RmlsZUNvbnRlbnQoImluc3RhbnRzb3J0LmpzIik7DQoJZWNobyAiDQoJPC9zY3JpcHQ+DQoiOw0KfQ0KDQplY2hvICR0aGlzLT5TdGFydFRhYkhlYWRlcnMoKTsNCglpZiggJGhhc19hZHZhbmNlZF9wZXJtIHx8ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCJ0YWJkaXNwbGF5X2NhdGVnb3J5IixmYWxzZSkgfHwgJHRoaXMtPkNoZWNrUGVybWlzc2lvbigidmltZW9wbGF5ZXJfbWFuYWdlX2NhdGVnb3J5IikgKSB7DQoJCWVjaG8gJHRoaXMtPlNldFRhYkhlYWRlcigiY2F0ZWdvcnkiLCAkdGhpcy0+TGFuZygiY2F0ZWdvcnlfcGx1cmFsIiksICJjYXRlZ29yeSIgPT0gJGFjdGl2ZV90YWIgPyB0cnVlIDogZmFsc2UpOw0KCX0NCglpZiggJGhhc19hZHZhbmNlZF9wZXJtIHx8ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCJ0YWJkaXNwbGF5X3ZpZGVvIixmYWxzZSkgfHwgJHRoaXMtPkNoZWNrUGVybWlzc2lvbigidmltZW9wbGF5ZXJfbWFuYWdlX3ZpZGVvIikgKSB7DQoJCWVjaG8gJHRoaXMtPlNldFRhYkhlYWRlcigidmlkZW8iLCAkdGhpcy0+TGFuZygidmlkZW9fcGx1cmFsIiksICJ2aWRlbyIgPT0gJGFjdGl2ZV90YWIgPyB0cnVlIDogZmFsc2UpOw0KCX0NCglpZiggJGhhc19hZHZhbmNlZF9wZXJtIHx8ICR0aGlzLT5DaGVja1Blcm1pc3Npb24oIk1vZGlmeSBUZW1wbGF0ZXMiKSB8fCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgidGFiZGlzcGxheV90ZW1wbGF0ZXMiLGZhbHNlKSApIHsNCgkJZWNobyAkdGhpcy0+U2V0VGFiSGVhZGVyKCJ0ZW1wbGF0ZXMiLCAkdGhpcy0+TGFuZygidGVtcGxhdGVzIiksICJ0ZW1wbGF0ZXMiID09ICRhY3RpdmVfdGFiID8gdHJ1ZSA6IGZhbHNlKTsJCQ0KCX0NCglpZiggJGhhc19hZHZhbmNlZF9wZXJtIHx8ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCJ0YWJkaXNwbGF5X3F1ZXJpZXMiLGZhbHNlKSApIHsNCgkJZWNobyAkdGhpcy0+U2V0VGFiSGVhZGVyKCJxdWVyaWVzIiwgJHRoaXMtPkxhbmcoInF1ZXJpZXMiKSwgInF1ZXJpZXMiID09ICRhY3RpdmVfdGFiID8gdHJ1ZSA6IGZhbHNlKTsJCQ0KCX0NCglpZiggJGhhc19hZHZhbmNlZF9wZXJtICkgew0KCQllY2hvICR0aGlzLT5TZXRUYWJIZWFkZXIoInByZWZlcmVuY2VzIiwgJHRoaXMtPkxhbmcoInByZWZlcmVuY2VzIiksICJwcmVmZXJlbmNlcyIgPT0gJGFjdGl2ZV90YWIgPyB0cnVlIDogZmFsc2UpOwkJDQoJfQ0KZWNobyAkdGhpcy0+RW5kVGFiSGVhZGVycygpOw0KDQoNCg0KZWNobyAkdGhpcy0+U3RhcnRUYWJDb250ZW50KCk7DQoNCg0KaWYoICRoYXNfYWR2YW5jZWRfcGVybSB8fCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgidGFiZGlzcGxheV9jYXRlZ29yeSIsZmFsc2UpIHx8ICR0aGlzLT5DaGVja1Blcm1pc3Npb24oInZpbWVvcGxheWVyX21hbmFnZV9jYXRlZ29yeSIpICkgew0KCWVjaG8gJHRoaXMtPlN0YXJ0VGFiKCJjYXRlZ29yeSIpOw0KDQoJCSR3aGVyZWNsYXVzZSA9IGFycmF5KCk7DQoJCSRmaWx0ZXJvdXRwdXQgPSBmYWxzZTsNCg0KCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oImZpbHRlciIsICRmaWx0ZXJvdXRwdXQpOw0KCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oImluc3RhbnRzZWFyY2giLCAkaW5zdGFudHNlYXJjaD8kdGhpcy0+TGFuZygic2VhcmNodGhpc3RhYmxlIikuIiAiLiR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAic2VhcmNodGFibGVfY2F0ZWdvcnkiLCAiIiwgMTAsIDY0LCAnIG9ua2V5dXA9ImN0bG1tX3NlYXJjaCh0aGlzLnZhbHVlLFwnY2F0ZWdvcnlfdGFibGVcJyk7IicpOmZhbHNlKTsNCgkJCQ0KCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oImFkZG5ldyIsICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgImVkaXRBIiwgJHJldHVybmlkLCAkYWRtaW50aGVtZS0+RGlzcGxheUltYWdlKCJpY29ucy9zeXN0ZW0vbmV3b2JqZWN0LmdpZiIsICIiLCIiLCIiLCJzeXN0ZW1pY29uIikuIiAiLiR0aGlzLT5MYW5nKCJhZGRfY2F0ZWdvcnkiKSkpOw0KCQkkcmVvcmRlcl9idG4gPSBmYWxzZTtpZigkaGFzX2FkdmFuY2VkX3Blcm0gfHwgISR0aGlzLT5HZXRQcmVmZXJlbmNlKCJyZXN0cmljdF9wZXJtaXNzaW9ucyIsZmFsc2UpIHx8ICR0aGlzLT5DaGVja1Blcm1pc3Npb24oInZpbWVvcGxheWVyX21hbmFnZV9jYXRlZ29yeSIpKQkkcmVvcmRlcl9idG4gPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICJyZW9yZGVyIiwgJHJldHVybmlkLCAkYWRtaW50aGVtZS0+RGlzcGxheUltYWdlKCJpY29ucy9zeXN0ZW0vcmVvcmRlci5naWYiLCAiIiwiIiwiIiwic3lzdGVtaWNvbiIpLiIgIi4kdGhpcy0+TGFuZygicmVvcmRlciIpKTsNCgkJCQ0KCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oInJlb3JkZXIiLCAkcmVvcmRlcl9idG4pOw0KCQkNCgkJCSRpdGVtbGlzdCA9ICR0aGlzLT5nZXRfbGV2ZWxfY2F0ZWdvcnkoaXNzZXQoJHdoZXJlY2xhdXNlKT8kd2hlcmVjbGF1c2U6YXJyYXkoKSx0cnVlLCAkaWQsICRyZXR1cm5pZCk7DQoJCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oInRhYmxlaWQiLCAiY2F0ZWdvcnlfdGFibGUiKTsNCgkJCSR0aGlzLT5zbWFydHktPmFzc2lnbigiaXRlbWxpc3QiLCAkaXRlbWxpc3QpOw0KCQkJJGFkbWluc2hvdyA9IGFycmF5KA0KCQkJCWFycmF5KCR0aGlzLT5MYW5nKCJuYW1lIiksImVkaXRsaW5rIixmYWxzZSksDQoJCQkJYXJyYXkoJHRoaXMtPkxhbmcoImFjdGl2ZSIpLCJ0b2dnbGVhY3RpdmUiLHRydWUpLA0KCQkJCWFycmF5KCR0aGlzLT5MYW5nKCJyZW9yZGVyIiksIm1vdmVsaW5rcyIsdHJ1ZSksDQoJCQkJYXJyYXkoJHRoaXMtPkxhbmcoIkFjdGlvbnMiKSwiZGVsZXRlbGluayIsdHJ1ZSkJCQ0KCQkJCSk7DQoJCQlpZigkaW5zdGFudHNvcnQgJiYgY291bnQoJGl0ZW1saXN0KT4xKXsNCgkJCQkkaSA9IDA7DQoJCQkJd2hpbGUoJGk8Y291bnQoJGFkbWluc2hvdykpew0KCQkJCQlpZighJGFkbWluc2hvd1skaV1bMl0pCSRhZG1pbnNob3dbJGldWzBdID0gJzxkaXYgc3R5bGU9ImZsb2F0OmxlZnQ7Ij48YSBzdHlsZT0iY3Vyc29yOiBwb2ludGVyOyIgb25jbGljaz0iY3RsbW1fc29ydFJvd3MoXCdjYXRlZ29yeV90YWJsZVwnLCcuJGkuJyk7Ij48aW1nIHNyYz0idGhlbWVzL2RlZmF1bHQvaW1hZ2VzL2ljb25zL3N5c3RlbS9zb3J0X3VwLmdpZiIgYWx0PSJeIi8+PC9hPjxici8+PGEgc3R5bGU9ImN1cnNvcjogcG9pbnRlcjsiIG9uY2xpY2s9ImN0bG1tX3NvcnRSb3dzKFwnY2F0ZWdvcnlfdGFibGVcJywnLiRpLicsdHJ1ZSk7Ij48aW1nIHNyYz0idGhlbWVzL2RlZmF1bHQvaW1hZ2VzL2ljb25zL3N5c3RlbS9zb3J0X2Rvd24uZ2lmIiBhbHQ9InYiLz48L2E+PC9kaXY+PGRpdiBzdHlsZT0ibGluZS1oZWlnaHQ6IDI0cHg7Ij4gJm5ic3A7Jy4kYWRtaW5zaG93WyRpXVswXS4iPC9kaXY+IjsNCgkJCQkJJGkrKzsNCgkJCQl9DQoJCQl9DQoJCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oImFkbWluc2hvdyIsICRhZG1pbnNob3cpOw0KCQkJZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCJhZG1pbnBhbmVsLnRwbCIpOw0KDQoJZWNobyAkdGhpcy0+RW5kVGFiKCk7DQoNCn0NCg0KaWYoICRoYXNfYWR2YW5jZWRfcGVybSB8fCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgidGFiZGlzcGxheV92aWRlbyIsZmFsc2UpIHx8ICR0aGlzLT5DaGVja1Blcm1pc3Npb24oInZpbWVvcGxheWVyX21hbmFnZV92aWRlbyIpICkgew0KCWVjaG8gJHRoaXMtPlN0YXJ0VGFiKCJ2aWRlbyIpOw0KDQoJaWYoJHRoaXMtPmNvdW50c29tZXRoaW5nKCJjYXRlZ29yeSIpID4gMCl7DQoNCgkJJHdoZXJlY2xhdXNlID0gYXJyYXkoKTsNCgkJJGZpbHRlcm91dHB1dCA9IGZhbHNlOw0KDQoJCQlpZigkZmlsdGVyKXsNCgkJCQlpZighaXNzZXQoJHBhcmFtc1sidmlkZW9fc2hvd29ubHkiXSkgfHwgJHBhcmFtc1sidmlkZW9fc2hvd29ubHkiXSA9PSAiIil7DQoJCQkJCWlmKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCJ1c2VfaGllcmFyY2h5IixmYWxzZSkpew0KCQkJCQkJJGZpbHRlcm9wdGlvbnMgPSAkdGhpcy0+Z2V0X2FkbWluX2hpZXJhcmNoeW9wdGlvbnMoInZpZGVvIix0cnVlKTsNCgkJCQkJfWVsc2V7DQoJCQkJCQkkZmlsdGVyb3B0aW9ucyA9ICR0aGlzLT5nZXRfb3B0aW9ucygiY2F0ZWdvcnkiKTsNCgkJCQkJfQ0KCQkJCQkkZmlsdGVyb3V0cHV0ID0gJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCgkaWQsICJkZWZhdWx0YWRtaW4iLCAkcmV0dXJuaWQpOw0KCQkJCQkkZmlsdGVyb3V0cHV0IC49ICR0aGlzLT5MYW5nKCJmaWx0ZXJieV9jYXRlZ29yeSIpLiIgOiAiOw0KCQkJCQkkZmlsdGVyb3V0cHV0IC49ICR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwgInZpZGVvX3Nob3dvbmx5IiwgJGZpbHRlcm9wdGlvbnMsIC0xKTsNCgkJCQkJJGZpbHRlcm91dHB1dCAuPSAkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCAiYWN0aXZlX3RhYiIsICJ2aWRlbyIpOw0KCQkJCQkkZmlsdGVyb3V0cHV0IC49ICIgIi4kdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAic3VibWl0IiwgbGFuZygic3VibWl0IikpOw0KCQkJCQkkZmlsdGVyb3V0cHV0IC49ICR0aGlzLT5DcmVhdGVGb3JtRW5kKCk7DQoJCQkJfWVsc2V7DQoJCQkJCSRmaWx0ZXJvdXRwdXQgPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICJkZWZhdWx0YWRtaW4iLCAkcmV0dXJuaWQsICR0aGlzLT5MYW5nKCJzaG93YWxsIiksIGFycmF5KCJhY3RpdmVfdGFiIiA9PiAidmlkZW8iKSk7DQoJCQkJCSR3aGVyZWNsYXVzZSA9IGFycmF5KCJwYXJlbnRfaWQiPT4kcGFyYW1zWyJ2aWRlb19zaG93b25seSJdKTsNCgkJCQl9DQoJCQl9DQoJCSR0aGlzLT5zbWFydHktPmFzc2lnbigiZmlsdGVyIiwgJGZpbHRlcm91dHB1dCk7DQoJCSR0aGlzLT5zbWFydHktPmFzc2lnbigiaW5zdGFudHNlYXJjaCIsICRpbnN0YW50c2VhcmNoPyR0aGlzLT5MYW5nKCJzZWFyY2h0aGlzdGFibGUiKS4iICIuJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICJzZWFyY2h0YWJsZV92aWRlbyIsICIiLCAxMCwgNjQsICcgb25rZXl1cD0iY3RsbW1fc2VhcmNoKHRoaXMudmFsdWUsXCd2aWRlb190YWJsZVwnKTsiJyk6ZmFsc2UpOw0KCQkJDQoJCSR0aGlzLT5zbWFydHktPmFzc2lnbigiYWRkbmV3IiwgJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAiZWRpdEIiLCAkcmV0dXJuaWQsICRhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoImljb25zL3N5c3RlbS9uZXdvYmplY3QuZ2lmIiwgIiIsIiIsIiIsInN5c3RlbWljb24iKS4iICIuJHRoaXMtPkxhbmcoImFkZF92aWRlbyIpKSk7DQoJCSRyZW9yZGVyX2J0biA9IGZhbHNlO2lmKCRoYXNfYWR2YW5jZWRfcGVybSB8fCAhJHRoaXMtPkdldFByZWZlcmVuY2UoInJlc3RyaWN0X3Blcm1pc3Npb25zIixmYWxzZSkgfHwgJHRoaXMtPkNoZWNrUGVybWlzc2lvbigidmltZW9wbGF5ZXJfbWFuYWdlX3ZpZGVvIikpCSRyZW9yZGVyX2J0biA9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgInJlb3JkZXIiLCAkcmV0dXJuaWQsICRhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoImljb25zL3N5c3RlbS9yZW9yZGVyLmdpZiIsICIiLCIiLCIiLCJzeXN0ZW1pY29uIikuIiAiLiR0aGlzLT5MYW5nKCJyZW9yZGVyIikpOw0KCQkJDQoJCSR0aGlzLT5zbWFydHktPmFzc2lnbigicmVvcmRlciIsICRyZW9yZGVyX2J0bik7DQoJCQ0KCQkJJGl0ZW1saXN0ID0gJHRoaXMtPmdldF9sZXZlbF92aWRlbyhpc3NldCgkd2hlcmVjbGF1c2UpPyR3aGVyZWNsYXVzZTphcnJheSgpLHRydWUsICRpZCwgJHJldHVybmlkKTsNCgkJCSR0aGlzLT5zbWFydHktPmFzc2lnbigidGFibGVpZCIsICJ2aWRlb190YWJsZSIpOw0KCQkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJpdGVtbGlzdCIsICRpdGVtbGlzdCk7DQoJCQkkYWRtaW5zaG93ID0gYXJyYXkoDQoJCQkJYXJyYXkoJHRoaXMtPkxhbmcoIm5hbWUiKSwiZWRpdGxpbmsiLGZhbHNlKSwNCgkJCQlhcnJheSgkdGhpcy0+TGFuZygiYWN0aXZlIiksInRvZ2dsZWFjdGl2ZSIsdHJ1ZSksDQoJCQkJYXJyYXkoJHRoaXMtPkxhbmcoImlzZGVmYXVsdCIpLCJ0b2dnbGVkZWZhdWx0Iix0cnVlKSwNCgkJCQlhcnJheSgkdGhpcy0+TGFuZygicmVvcmRlciIpLCJtb3ZlbGlua3MiLHRydWUpLA0KCQkJCWFycmF5KCR0aGlzLT5MYW5nKCJBY3Rpb25zIiksImRlbGV0ZWxpbmsiLHRydWUpCQkNCgkJCQkpOw0KCQkJaWYoJGluc3RhbnRzb3J0ICYmIGNvdW50KCRpdGVtbGlzdCk+MSl7DQoJCQkJJGkgPSAwOw0KCQkJCXdoaWxlKCRpPGNvdW50KCRhZG1pbnNob3cpKXsNCgkJCQkJaWYoISRhZG1pbnNob3dbJGldWzJdKQkkYWRtaW5zaG93WyRpXVswXSA9ICc8ZGl2IHN0eWxlPSJmbG9hdDpsZWZ0OyI+PGEgc3R5bGU9ImN1cnNvcjogcG9pbnRlcjsiIG9uY2xpY2s9ImN0bG1tX3NvcnRSb3dzKFwndmlkZW9fdGFibGVcJywnLiRpLicpOyI+PGltZyBzcmM9InRoZW1lcy9kZWZhdWx0L2ltYWdlcy9pY29ucy9zeXN0ZW0vc29ydF91cC5naWYiIGFsdD0iXiIvPjwvYT48YnIvPjxhIHN0eWxlPSJjdXJzb3I6IHBvaW50ZXI7IiBvbmNsaWNrPSJjdGxtbV9zb3J0Um93cyhcJ3ZpZGVvX3RhYmxlXCcsJy4kaS4nLHRydWUpOyI+PGltZyBzcmM9InRoZW1lcy9kZWZhdWx0L2ltYWdlcy9pY29ucy9zeXN0ZW0vc29ydF9kb3duLmdpZiIgYWx0PSJ2Ii8+PC9hPjwvZGl2PjxkaXYgc3R5bGU9ImxpbmUtaGVpZ2h0OiAyNHB4OyI+ICZuYnNwOycuJGFkbWluc2hvd1skaV1bMF0uIjwvZGl2PiI7DQoJCQkJCSRpKys7DQoJCQkJfQ0KCQkJfQ0KCQkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJhZG1pbnNob3ciLCAkYWRtaW5zaG93KTsNCgkJCWVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgiYWRtaW5wYW5lbC50cGwiKTsNCg0KCX1lbHNlew0KCQllY2hvICI8cD4iLiR0aGlzLT5MYW5nKCJlcnJvcl9ub3BhcmVudCIpLiI8L3A+IjsNCgl9DQoNCgllY2hvICR0aGlzLT5FbmRUYWIoKTsNCg0KfQ0KCSR0aGlzLT5zbWFydHktPmFzc2lnbigiZmlsdGVyIiwgZmFsc2UpOw0KCSR0aGlzLT5zbWFydHktPmFzc2lnbigicmVvcmRlciIsIGZhbHNlKTsNCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oImluc3RhbnRzZWFyY2giLCBmYWxzZSk7DQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJ0YWJsZWlkIiwgZmFsc2UpOw0KDQppZiggJGhhc19hZHZhbmNlZF9wZXJtIHx8ICR0aGlzLT5DaGVja1Blcm1pc3Npb24oIk1vZGlmeSBUZW1wbGF0ZXMiKSB8fCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgidGFiZGlzcGxheV90ZW1wbGF0ZXMiLGZhbHNlKSApIHsNCgllY2hvICR0aGlzLT5TdGFydFRhYigidGVtcGxhdGVzIik7DQoJDQogICAgZWNobyAiPGZpZWxkc2V0IHN0eWxlPVwid2lkdGg6IDYwMHB4O1wiPjxsZWdlbmQ+PGI+Ii4kdGhpcy0+TGFuZygiZGVmYXVsdHRlbXBsYXRlcyIpLiI8L2I+PC9sZWdlbmQ+IjsNCiAgICBlY2hvICR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoJGlkLCAiY2hhbmdlZGVmdGVtcGxhdGVzIiwgJHJldHVybmlkKTsNCiAgICAkdGVtcGxhdGVsaXN0ID0gJHRoaXMtPkxpc3RUZW1wbGF0ZXMoJHRoaXMtPkdldE5hbWUoKSk7DQogICAgJGRlZnRwbHMgPSAkdGhpcy0+Z2V0RGVmYXVsdFRlbXBsYXRlcygpOw0KICAgICR0cGxvcHRpb25zID0gYXJyYXkoKTsNCiAgICAkaXRlbWxpc3QgPSBhcnJheSgpOw0KICAgIGZvcmVhY2goJHRlbXBsYXRlbGlzdCBhcyAkb25ldHBsKXsNCgkgICAkdHBsb3B0aW9uc1skb25ldHBsXSA9ICRvbmV0cGw7DQoJICAgJHRwbCA9IG5ldyBzdGRDbGFzcygpOw0KCSAgICR0cGwtPmVkaXRsaW5rID0gJHRoaXMtPkNyZWF0ZUxpbmsoICRpZCwgImVkaXRUZW1wbGF0ZSIsICRyZXR1cm5pZCwgJG9uZXRwbCwgYXJyYXkoInRwbG5hbWUiPT4kb25ldHBsKSApOw0KCSAgICR0cGwtPmRlbGV0ZWxpbmsgPSBpbl9hcnJheSgkb25ldHBsLCAkZGVmdHBscyk/IiI6JHRoaXMtPkNyZWF0ZUxpbmsoICRpZCwgImRlbGV0ZXRwbCIsICRyZXR1cm5pZCwgJGFkbWludGhlbWUtPkRpc3BsYXlJbWFnZSgiaWNvbnMvc3lzdGVtL2RlbGV0ZS5naWYiLCAkdGhpcy0+TGFuZygiZGVsZXRlIiksICIiLCAiIiwgInN5c3RlbWljb24iKSwgYXJyYXkoInRwbG5hbWUiPT4kb25ldHBsKSApOw0KCSAgIGFycmF5X3B1c2goJGl0ZW1saXN0LCAkdHBsKTsNCiAgICB9DQoNCgkgICBlY2hvICIJPGRpdiBjbGFzcz1cInBhZ2VvdmVyZmxvd1wiPg0KCQkJIDxwIGNsYXNzPVwicGFnZXRleHRcIj4iLiR0aGlzLT5MYW5nKCJkZWZ0ZW1wbGF0ZWZvciIpLiIgXCJjYXRlZ29yeVwiOjwvcD4NCgkJCSA8cCBjbGFzcz1cInBhZ2VpbnB1dFwiPiIuJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCJsaXN0dGVtcGxhdGVfY2F0ZWdvcnkiLCR0cGxvcHRpb25zLC0xLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCJsaXN0dGVtcGxhdGVfY2F0ZWdvcnkiKSkuIjwvcD4NCgkJPC9kaXY+DQogICAgIjsNCgkgICBlY2hvICIJPGRpdiBjbGFzcz1cInBhZ2VvdmVyZmxvd1wiPg0KCQkJIDxwIGNsYXNzPVwicGFnZXRleHRcIj4iLiR0aGlzLT5MYW5nKCJkZWZ0ZW1wbGF0ZWZvciIpLiIgXCJ2aWRlb1wiOjwvcD4NCgkJCSA8cCBjbGFzcz1cInBhZ2VpbnB1dFwiPiIuJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCJsaXN0dGVtcGxhdGVfdmlkZW8iLCR0cGxvcHRpb25zLC0xLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCJsaXN0dGVtcGxhdGVfdmlkZW8iKSkuIjwvcD4NCgkJPC9kaXY+DQogICAgIjsNCiAgICBlY2hvICIJPGRpdiBjbGFzcz1cInBhZ2VvdmVyZmxvd1wiPg0KCQkJIDxwIGNsYXNzPVwicGFnZXRleHRcIj4iLiR0aGlzLT5MYW5nKCJkZWZkZXRhaWx0ZW1wbGF0ZSIpLiI6PC9wPg0KCQkJIDxwIGNsYXNzPVwicGFnZWlucHV0XCI+Ii4kdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsImZpbmFsdGVtcGxhdGUiLCR0cGxvcHRpb25zLC0xLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCJmaW5hbHRlbXBsYXRlIikpLiI8L3A+DQoJCTwvZGl2Pg0KCSI7DQoJJHRwbG9wdGlvbnNbJHRoaXMtPkxhbmcoInVzZWxldmVsbGlzdHRwbCIpXSA9ICIqKiI7DQoJZWNobyAiCTxkaXYgY2xhc3M9XCJwYWdlb3ZlcmZsb3dcIj4NCgkJCSA8cCBjbGFzcz1cInBhZ2V0ZXh0XCI+Ii4kdGhpcy0+TGFuZygiZGVmc2VhcmNocmVzdWx0c3RlbXBsYXRlIikuIjo8L3A+DQoJCQkgPHAgY2xhc3M9XCJwYWdlaW5wdXRcIj4iLiR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwic2VhcmNocmVzdWx0c3RlbXBsYXRlIiwkdHBsb3B0aW9ucywtMSwkdGhpcy0+R2V0UHJlZmVyZW5jZSgic2VhcmNocmVzdWx0c3RlbXBsYXRlIiwwKSkuIjwvcD4NCgkJPC9kaXY+DQogICAgPHA+Ii4kdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAic3VibWl0IiwgbGFuZygic3VibWl0IikpLiI8L3A+IjsNCiAgICBlY2hvICR0aGlzLT5DcmVhdGVGb3JtRW5kKCk7DQoNCiAgICBlY2hvICI8L2ZpZWxkc2V0Pjxici8+PGJyLz4iOw0KICAgICR0aGlzLT5zbWFydHktPmFzc2lnbigiaXRlbWxpc3QiLCAkaXRlbWxpc3QpOw0KCSR0aGlzLT5zbWFydHktPmFzc2lnbigiYWRkbmV3IiwgJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAiZWRpdFRlbXBsYXRlIiwgJHJldHVybmlkLCAkYWRtaW50aGVtZS0+RGlzcGxheUltYWdlKCJpY29ucy9zeXN0ZW0vbmV3b2JqZWN0LmdpZiIsICIiLCIiLCIiLCJzeXN0ZW1pY29uIikuIiAiLiR0aGlzLT5MYW5nKCJhZGR0ZW1wbGF0ZSIpKSk7DQogICAgJGFkbWluc2hvdyA9IGFycmF5KAlhcnJheSgkdGhpcy0+TGFuZygidGVtcGxhdGUiKSwgImVkaXRsaW5rIiwgZmFsc2UpLCBhcnJheSgkdGhpcy0+TGFuZygiQWN0aW9ucyIpLCAiZGVsZXRlbGluayIsIGZhbHNlKQkpOw0KICAgICR0aGlzLT5zbWFydHktPmFzc2lnbigiYWRtaW5zaG93IiwgJGFkbWluc2hvdyk7DQogICAgZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCJhZG1pbnBhbmVsLnRwbCIpOw0KCWVjaG8gJHRoaXMtPkVuZFRhYigpOw0KfQ0KDQppZiggJGhhc19hZHZhbmNlZF9wZXJtIHx8ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCJ0YWJkaXNwbGF5X3F1ZXJpZXMiLGZhbHNlKSApIHsNCgllY2hvICR0aGlzLT5TdGFydFRhYigicXVlcmllcyIpOw0KDQoJCSRpdGVtbGlzdCA9ICR0aGlzLT5nZXRfcXVlcmllcygkd2hlcmU9YXJyYXkoKSwgdHJ1ZSwgJGlkLCAkcmV0dXJuaWQpOw0KCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oIml0ZW1saXN0IiwgJGl0ZW1saXN0PyRpdGVtbGlzdDphcnJheSgpKTsNCgkJJGFkbWluc2hvdyA9IGFycmF5KCBhcnJheSgiaWQiLCJpZCIpLA0KCQkJCQkJCWFycmF5KCR0aGlzLT5MYW5nKCJuYW1lIiksICJuYW1lIiksDQoJCQkJCQkJYXJyYXkoJHRoaXMtPkxhbmcoIkFjdGlvbnMiKSwgImFjdGlvbnMiKQ0KCQkJCQkJCSk7DQoJCSR0aGlzLT5zbWFydHktPmFzc2lnbigiYWRtaW5zaG93IiwgJGFkbWluc2hvdyk7DQoJCSR0aGlzLT5zbWFydHktPmFzc2lnbigiYWRkbmV3IiwgJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAiYWRtaW5xdWVyeSIsICRyZXR1cm5pZCwgJGFkbWludGhlbWUtPkRpc3BsYXlJbWFnZSgiaWNvbnMvc3lzdGVtL25ld29iamVjdC5naWYiLCAiIiwiIiwiIiwic3lzdGVtaWNvbiIpLiIgIi4kdGhpcy0+TGFuZygiY3JlYXRlcXVlcnkiKSkpOw0KCQllY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoImFkbWlucGFuZWwudHBsIik7DQoJCQ0KCWVjaG8gJHRoaXMtPkVuZFRhYigpOw0KfQ0KDQppZiggJGhhc19hZHZhbmNlZF9wZXJtICkgew0KCWVjaG8gJHRoaXMtPlN0YXJ0VGFiKCJwcmVmZXJlbmNlcyIpOw0KCWVjaG8gJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCgkaWQsICJjaGFuZ2VwcmVmZXJlbmNlcyIsICRyZXR1cm5pZCk7DQoJZWNobyAiPGZpZWxkc2V0IHN0eWxlPVwid2lkdGg6IDQ2NXB4O1wiPjxsZWdlbmQ+PGI+Ii4kdGhpcy0+TGFuZygicHJlZl90YWJkaXNwbGF5IikuIjo8L2I+PC9sZWdlbmQ+PHVsPg0KCSI7DQoJJHRhYmRpc3BsYXkgPSBhcnJheSgiY2F0ZWdvcnkiLCJ2aWRlbyIsInRlbXBsYXRlcyIsInF1ZXJpZXMiKTsNCglmb3JlYWNoKCR0YWJkaXNwbGF5IGFzICRvbmVwcmVmKXsNCgkJZWNobyAiPGxpPiIuJHRoaXMtPkNyZWF0ZUlucHV0Q2hlY2tib3goJGlkLCAidGFiZGlzcGxheV8iLiRvbmVwcmVmLCB0cnVlLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgidGFiZGlzcGxheV8iLiRvbmVwcmVmLGZhbHNlKSkuJHRoaXMtPkxhbmcoJG9uZXByZWYpLiI8L2xpPg0KCSI7DQoJfQ0KCWVjaG8gIjwvdWw+PGJyLz48cD4iLiR0aGlzLT5MYW5nKCJoZWxwX3RhYmRpc3BsYXkiKS4iPC9wPg0KPC9maWVsZHNldD48YnIvPg0KIjsNCgllY2hvICI8ZmllbGRzZXQgc3R5bGU9XCJ3aWR0aDogNDY1cHg7XCI+PGxlZ2VuZD48Yj4iLiR0aGlzLT5MYW5nKCJwcmVmX3NlYXJjaG1vZHVsZV9pbmRleCIpLiI6PC9iPjwvbGVnZW5kPjx1bD4NCgkiOw0KCWZvcmVhY2goJHRoaXMtPmdldF9sZXZlbGFycmF5KCkgYXMgJG9uZXByZWYpew0KCQllY2hvICI8bGk+Ii4kdGhpcy0+Q3JlYXRlSW5wdXRDaGVja2JveCgkaWQsICJzZWFyY2htb2R1bGVfaW5kZXhfIi4kb25lcHJlZiwgdHJ1ZSwgJHRoaXMtPkdldFByZWZlcmVuY2UoInNlYXJjaG1vZHVsZV9pbmRleF8iLiRvbmVwcmVmLGZhbHNlKSkuJHRoaXMtPkxhbmcoJG9uZXByZWYpLiI8L2xpPg0KCSI7DQoJfQ0KCWVjaG8gIjwvdWw+PGJyLz48cD4iLiR0aGlzLT5MYW5nKCJoZWxwX3NlYXJjaG1vZHVsZV9pbmRleCIpLiI8L3A+DQo8L2ZpZWxkc2V0Pjxici8+DQoiOw0KCWVjaG8gIjxmaWVsZHNldCBzdHlsZT1cIndpZHRoOiA0NjVweDtcIj48bGVnZW5kPjxiPiIuJHRoaXMtPkxhbmcoInByZWZfbmV3aXRlbXNmaXJzdCIpLiI6PC9iPjwvbGVnZW5kPjx1bD4NCgkiOw0KCWZvcmVhY2goJHRoaXMtPmdldF9sZXZlbGFycmF5KCkgYXMgJG9uZXByZWYpew0KCQllY2hvICI8bGk+Ii4kdGhpcy0+Q3JlYXRlSW5wdXRDaGVja2JveCgkaWQsICJuZXdpdGVtc2ZpcnN0XyIuJG9uZXByZWYsIHRydWUsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCJuZXdpdGVtc2ZpcnN0XyIuJG9uZXByZWYsZmFsc2UpKS4kdGhpcy0+TGFuZygkb25lcHJlZikuIjwvbGk+DQoJIjsNCgl9DQoJZWNobyAiPC91bD48YnIvPjxwPiIuJHRoaXMtPkxhbmcoImhlbHBfbmV3aXRlbXNmaXJzdCIpLiI8L3A+DQo8L2ZpZWxkc2V0Pjxici8+DQoiOw0KDQoJZWNobyAiPGZpZWxkc2V0IHN0eWxlPVwid2lkdGg6IDYwMHB4O1wiPjxsZWdlbmQ+PGI+Ii4kdGhpcy0+TGFuZygicHJlZmVyZW5jZXMiKS4iOjwvYj48L2xlZ2VuZD4NCgkiOw0KCSRjaGVja2JveHByZWZzID0gYXJyYXkoInJlc3RyaWN0X3Blcm1pc3Npb25zIiwidXNlX2hpZXJhcmNoeSIsIm9yZGVyYnluYW1lIiwiZGlzcGxheV9maWx0ZXIiLCJkaXNwbGF5X2luc3RhbnRzZWFyY2giLCJkaXNwbGF5X2luc3RhbnRzb3J0IiwiZWRpdGFibGVfYWxpYXNlcyIsImF1dG9pbmNyZW1lbnRfYWxpYXMiLCJhbGxvd19zcWwiLCJmb3JjZV9saXN0Iiwic2hvd3RodW1ibmFpbHMiLCJkZWxldGVfZmlsZXMiLCJhbGxvd19jb21wbGV4X29yZGVyIik7DQoJZm9yZWFjaCgkY2hlY2tib3hwcmVmcyBhcyAkb25lcHJlZil7DQoJCWVjaG8gIjxwPiIuJHRoaXMtPkNyZWF0ZUlucHV0Q2hlY2tib3goJGlkLCAkb25lcHJlZiwgdHJ1ZSwgJHRoaXMtPkdldFByZWZlcmVuY2UoJG9uZXByZWYsZmFsc2UpKS4iICIuJHRoaXMtPkxhbmcoInByZWZfIi4kb25lcHJlZikuIjwvcD4NCgkiOw0KCX0NCgllY2hvICI8cD4iLiR0aGlzLT5MYW5nKCJwcmVmX21heHNob3ducGFnZXMiKS4kdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgIm1heHNob3ducGFnZXMiLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgibWF4c2hvd25wYWdlcyIsNyksIDEyLCAyKS4iPC9wPg0KCSI7DQoJZWNobyAiPC9maWVsZHNldD48YnIvPjxwPiIuJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgInN1Ym1pdCIsIGxhbmcoInN1Ym1pdCIpKS4iPC9wPiI7DQogICAgZWNobyAkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpOw0KCWVjaG8gIjxici8+PHA+Ii4kYWRtaW50aGVtZS0+RGlzcGxheUltYWdlKCJpY29ucy9zeXN0ZW0vaW1wb3J0LmdpZiIsICIiLCIiLCIiLCJzeXN0ZW1pY29uIikuIiAiOw0KCWVjaG8gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAiZXhwb3J0IiwgJHJldHVybmlkLCAkdGhpcy0+TGFuZygiZXhwb3J0X3RpdGxlIikpLiIgfCAiLiR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgImltcG9ydCIsICRyZXR1cm5pZCwgJHRoaXMtPkxhbmcoImltcG9ydF90aXRsZSIpKS4iPC9wPiI7DQoJZWNobyAkdGhpcy0+RW5kVGFiKCk7DQp9DQoNCmVjaG8gJHRoaXMtPkVuZFRhYkNvbnRlbnQoKTsNCg0KPz4=]]></data>
	</file>
	<file>
	  <filename>/action.editA.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmlmICghaXNzZXQoJGdDbXMpKSBleGl0Ow0KJGFkbWludGhlbWUgPSAkZ0Ntcy0+dmFyaWFibGVzWyJhZG1pbnRoZW1lIl07DQppZihpc3NldCgkcGFyYW1zWyJjYW5jZWwiXSkgfHwgKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCJyZXN0cmljdF9wZXJtaXNzaW9ucyIsZmFsc2UpICYmICEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCJ2aW1lb3BsYXllcl9hZHZhbmNlZCIpICYmICEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCJ2aW1lb3BsYXllcl9tYW5hZ2VfY2F0ZWdvcnkiKSkgKXsNCgkkbmV3cGFyYW1zID0gYXJyYXkoImFjdGl2ZV90YWIiID0+ICJjYXRlZ29yeSIpOw0KCWlmKCFpc3NldCgkcGFyYW1zWyJjYW5jZWwiXSkpCSRuZXdwYXJhbXNbIm1vZHVsZV9tZXNzYWdlIl0gPSAkdGhpcy0+TGFuZygiZXJyb3JfZGVuaWVkIik7DQoJJHRoaXMtPlJlZGlyZWN0KCRpZCwgImRlZmF1bHRhZG1pbiIsICRyZXR1cm5pZCwgJG5ld3BhcmFtcyk7DQp9DQoNCiRkYiA9JiAkdGhpcy0+R2V0RGIoKTsNCg0KDQppZihpc3NldCgkcGFyYW1zWyJBaWQiXSkpIHsNCgkvLyBpZiB3ZSBhcmUgd29ya2luZyBvbiBhbiBpdGVtIHRoYXQgZXhpc3RzLCB3ZSBsb2FkIGl0LiBXZSBtdXN0IGRvIHRoaXMgZXZlbiB3aGVuIHRoZSBmb3JtIGlzIHN1Ym1pdHRlZCwgb3RoZXJ3aXNlIHdlIHdvbid0IGhhdmUgdGhlIGZpbGUgZmllbGRzDQoJJGl0ZW1zID0gJHRoaXMtPmdldF9sZXZlbF9jYXRlZ29yeShhcnJheSgiaWQiPT4kcGFyYW1zWyJBaWQiXSkpOw0KCSRpdGVtID0gJGl0ZW1zWzBdOw0KfQ0KDQovLyBDSEVDSyBJRiBUSEUgRk9STSBJUyBCRUlORyBTVUJNSVRURUQgOg0KLy8gKHdlIG11c3QgZGV0ZWN0IGFsbCBraW5kcyBvZiBzdWJtaXQgYnV0dG9ucywgaW5jbHVkaW5nIGZpbGVzLCBzaW5jZSBpbmZvcm1hdGlvbiBtdXN0IGJlIHNhdmVkIGJlZm9yZSB3ZSBnbyB0byBmaWxlIHN1Ym1pc3Npb24pDQppZiAoaXNzZXQoJHBhcmFtc1sic3VibWl0Il0pIHx8IA0KCWlzc2V0KCRwYXJhbXNbImFwcGx5Il0pIA0KCSkNCnsNCglkZWJ1Z19idWZmZXIoIkVkaXQgRm9ybSBoYXMgYmVlbiBzdWJtaXR0ZWQiLl9fTElORV9fKTsNCg0KCS8vIFJFVFJJRVZJTkcgVEhFIEZPUk0gVkFMVUVTIChhbmQgZXNjYXBpbmcgaXQsIGlmIG5lZWRlZCkNCglpZighaXNzZXQoJGl0ZW0pKSAkaXRlbSA9IG5ldyBzdGRDbGFzcygpOw0KCWlmKGlzc2V0KCRwYXJhbXNbIkFpdGVtX29yZGVyIl0pKSAkaXRlbS0+aXRlbV9vcmRlciA9ICRwYXJhbXNbIkFpdGVtX29yZGVyIl07DQoJJGl0ZW0tPmRlc2NyaXB0aW9uID0gJHBhcmFtc1siQWRlc2NyaXB0aW9uIl07DQoJCSRpdGVtLT5uYW1lID0gJHBhcmFtc1siQW5hbWUiXTsNCgkJDQoJaWYoJHRoaXMtPkdldFByZWZlcmVuY2UoImVkaXRhYmxlX2FsaWFzZXMiLGZhbHNlKSl7DQoJCWlmKGlzc2V0KCRwYXJhbXNbIkFhbGlhcyJdKSl7DQoJCQkkdG1wYWxpYXMgPSAkdGhpcy0+cGxjcmVhdGVhbGlhcyh0cmltKCRwYXJhbXNbIkFhbGlhcyJdKSk7DQoJCQkkaXRlbS0+YWxpYXMgPSAkdG1wYWxpYXMgPT0gIiI/JHRoaXMtPnBsY3JlYXRlYWxpYXMoJGl0ZW0tPm5hbWUpOiR0bXBhbGlhczsNCgkJfWVsc2V7DQoJCQkkaXRlbS0+YWxpYXMgPSAkdGhpcy0+cGxjcmVhdGVhbGlhcygkaXRlbS0+bmFtZSk7DQoJCX0NCgl9ZWxzZXsNCgkJJGl0ZW0tPmFsaWFzID0gJHRoaXMtPnBsY3JlYXRlYWxpYXMoJGl0ZW0tPm5hbWUpOw0KCX0NCgkNCgkkYXV0b2luY3JlbWVudGFsaWFzID0gJHRoaXMtPkdldFByZWZlcmVuY2UoImF1dG9pbmNyZW1lbnRfYWxpYXMiLGZhbHNlKTsNCg0KCS8vIENIRUNLIElGIFRIRSBORUVERUQgVkFMVUVTIEFSRSBUSEVSRQ0KCWlmKAkhaXNzZXQoJHBhcmFtc1siQW5hbWUiXSkgfHwgJHBhcmFtc1siQW5hbWUiXSA9PSAiIg0KCQkgKQ0KCXsNCgkJZWNobyAkdGhpcy0+U2hvd0Vycm9ycygkdGhpcy0+TGFuZygiZXJyb3JfbWlzc2dpbnZhbHVlIikpOw0KCX1lbHNlaWYoISRhdXRvaW5jcmVtZW50YWxpYXMgJiYgZmFsc2UgPT0gJHRoaXMtPmNoZWNrYWxpYXMoIm1vZHVsZV92aW1lb3BsYXllcl9jYXRlZ29yeSIsICRpdGVtLT5hbGlhcywgaXNzZXQoJHBhcmFtc1siQWlkIl0pPyRwYXJhbXNbIkFpZCJdOmZhbHNlKSl7DQoJCWVjaG8gJHRoaXMtPlNob3dFcnJvcnMoJHRoaXMtPkxhbmcoImVycm9yX2FscmVhZHlleGlzdHMiKSk7DQoJfWVsc2V7DQoJCSMjIyMjIyMjIyMjIyBET0lORyBUSEUgVVBEQVRFDQoNCgkJaWYoJGF1dG9pbmNyZW1lbnRhbGlhcyl7DQoJCQkkYmFzZWFsaWFzID0gJGl0ZW0tPmFsaWFzOw0KCQkJJHRtcGFsaWFzID0gJGl0ZW0tPmFsaWFzOw0KCQkJJGkgPSAxOw0KCQkJd2hpbGUoISR0aGlzLT5jaGVja2FsaWFzKCJtb2R1bGVfdmltZW9wbGF5ZXJfY2F0ZWdvcnkiLCAkdG1wYWxpYXMsIGlzc2V0KCRwYXJhbXNbIkFpZCJdKT8kcGFyYW1zWyJBaWQiXTpmYWxzZSkpew0KCQkJCSR0bXBhbGlhcyA9ICRiYXNlYWxpYXMuIl8iLiRpOw0KCQkJCSRpKys7DQoJCQl9DQoJCQkkaXRlbS0+YWxpYXMgPSAkdG1wYWxpYXM7DQoJCX0NCg0KCQkvLyBGSUVMRFMgVE8gVVBEQVRFDQoJCSRxdWVyeSA9IChpc3NldCgkaXRlbS0+aWQpPyJVUERBVEUgIjoiSU5TRVJUIElOVE8gIikuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfdmltZW9wbGF5ZXJfY2F0ZWdvcnkgU0VUIA0KCQkJZGVzY3JpcHRpb249PywNCgkJCW5hbWU9PywNCgkJYWxpYXM9PywNCgkJZGF0ZV9tb2RpZmllZD0/LA0KCQlhY3RpdmU9Ii4oaXNzZXQoJGl0ZW0tPmFjdGl2ZSk/JGl0ZW0tPmFjdGl2ZToxKS4iLA0KCQlpc2RlZmF1bHQ9Ii4oaXNzZXQoJGl0ZW0tPmlzZGVmYXVsdCk/JGl0ZW0tPmlzZGVmYXVsdDowKS4iIjsNCgkJCQ0KCQkvLyBWQUxVRVMNCgkJJHZhbHVlcyA9IGFycmF5KGFkZHNsYXNoZXMoJGl0ZW0tPmRlc2NyaXB0aW9uKSwNCgkJCWFkZHNsYXNoZXMoJGl0ZW0tPm5hbWUpLCRpdGVtLT5hbGlhcyxzdHJfcmVwbGFjZSgiJyIsIiIsJGRiLT5EQlRpbWVTdGFtcCh0aW1lKCkpKSk7DQoNCgkJaWYoaXNzZXQoJGl0ZW0tPmlkKSl7DQoJCQkkZXZlbnQgPSAidmltZW9wbGF5ZXJfbW9kaWZpZWQiOw0KCQkJJHF1ZXJ5IC49ICIgV0hFUkUgaWQ9PzsiOw0KCQkJYXJyYXlfcHVzaCgkdmFsdWVzLCRpdGVtLT5pZCk7DQoJCX1lbHNlew0KCQkJLy8gTkVXIElURU0NCgkJCSRxdWVyeSAuPSAiLCBkYXRlX2NyZWF0ZWQ9PyI7DQoJCQkkdmFsdWVzW10gPSBzdHJfcmVwbGFjZSgiJyIsIiIsJGRiLT5EQlRpbWVTdGFtcCh0aW1lKCkpKTsNCgkJCSRldmVudCA9ICJ2aW1lb3BsYXllcl9hZGRlZCI7DQoJCQkvLyBnZXQgYSBuZXcgaWQgZnJvbSB0aGUgc2VxdWVuY2UgdGFibGUNCgkJCSRpdGVtLT5pZCA9ICRkYi0+R2VuSUQoY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfdmltZW9wbGF5ZXJfY2F0ZWdvcnlfc2VxIik7DQoJCQlpZigkdGhpcy0+R2V0UHJlZmVyZW5jZSgibmV3aXRlbXNmaXJzdF9jYXRlZ29yeSIsZmFsc2UpKXsNCgkJCQkvLyBuZXcgaXRlbXMgZ2V0IHRvIHRoZSB0b3AgLSBzbyB3ZSBtdXN0IHB1dCBhbGwgb3RoZXIgaXRlbXMgZG93biBmcm9tIG9uZSBzdGVwLCBhbmQgdGhlbiBzZXQgdGhpcyBpdGVtJ3Mgb3JkZXIgdG8gMQ0KCQkJCSRxdWVyeTIgPSAiVVBEQVRFICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfdmltZW9wbGF5ZXJfY2F0ZWdvcnkgU0VUIGl0ZW1fb3JkZXI9KGl0ZW1fb3JkZXIrMSkiOw0KCQkJCSRkYi0+RXhlY3V0ZSgkcXVlcnkyKTsNCgkJCQkkcXVlcnkgLj0gIixpdGVtX29yZGVyPTEsIGlkPSIuJGl0ZW0tPmlkOw0KCQkJfWVsc2V7DQoJCQkJLy8gbmV3IGl0ZW1zIGdldCB0byB0aGUgYm90dG9tIC0gc28gd2UgbXVzdCBzZXQgdGhlIGl0ZW1fb3JkZXIgdG8gdGhlIG51bWJlciBvZiBpdGVtcyArIDENCgkJCQkkaXRlbV9vcmRlciA9ICR0aGlzLT5jb3VudHNvbWV0aGluZygiY2F0ZWdvcnkiKSArIDE7DQoJCQkJJHF1ZXJ5IC49ICIsaXRlbV9vcmRlcj0iLiRpdGVtX29yZGVyLiIsIGlkPSIuJGl0ZW0tPmlkOw0KCQkJfQ0KCQl9DQoJCSRkYi0+RXhlY3V0ZSgkcXVlcnksICR2YWx1ZXMpOw0KDQoJCSRyZWRpcmVjdCA9IHRydWU7DQoJCS8vaWYobXlzcWxfYWZmZWN0ZWRfcm93cygpKXsJLy8gbXlzcWwtb25seQ0KCQlpZigkZGItPkFmZmVjdGVkX1Jvd3MoKSl7DQoJCQlpZigkdGhpcy0+R2V0UHJlZmVyZW5jZSgic2VhcmNobW9kdWxlX2luZGV4X2NhdGVnb3J5IixmYWxzZSkpew0KCQkJCS8vIElGIEFOWVRISU5HIFdBUyBNT0RJRklFRCwgV0UgTVVTVCBVUERBVEUgVEhFIFNFQVJDSCBJTkRFWCBBTkQgU0VORCBBTiBFVkVOVC4uLg0KCQkJCWlmKGlzc2V0KCRldmVudCkpCSR0aGlzLT5TZW5kRXZlbnQoJGV2ZW50LCBhcnJheSgid2hhdCI9PiJjYXRlZ29yeSIsICJpdGVtaWQiID0+ICRpdGVtLT5pZCwgImFsaWFzIj0+JGl0ZW0tPmFsaWFzKSk7DQoJCQkJZGVidWdfYnVmZmVyKCJTRUFSSEMgSU5ERVggV0FTIFVQREFURUQgIi5fX0xJTkVfXyk7DQoJCQkJJG1vZHVsZSA9JiAkdGhpcy0+R2V0TW9kdWxlSW5zdGFuY2UoIlNlYXJjaCIpOw0KCQkJCWlmKCRtb2R1bGUpIHsNCgkJCQkJJHRleHQgPSAiJGl0ZW0tPm5hbWUiOw0KCQkJCQkkbW9kdWxlLT5BZGRXb3JkcygkdGhpcy0+R2V0TmFtZSgpLCAkaXRlbS0+aWQsICJjYXRlZ29yeSIsICR0ZXh0LCBOVUxMKTsNCgkJCQl9DQoJCQl9DQoJCX1lbHNlaWYobXlzcWxfZXJyb3IoKSl7DQoJCQkvLyBkbyBub3QgcmVkaXJlY3QgOg0KCQkJJHJlZGlyZWN0ID0gZmFsc2U7DQoJCQllY2hvICR0aGlzLT5TaG93RXJyb3JzKG15c3FsX2Vycm9yKCkpOw0KCQl9DQoNCgkJLy8gUkVESVJFQ1RJTkcuLi4NCgkJCWlmKCRyZWRpcmVjdCA9PSBmYWxzZSl7DQoJCQl9ZWxzZWlmKGlzc2V0KCRwYXJhbXNbImFwcGx5Il0pKXsNCgkJCQllY2hvICR0aGlzLT5TaG93TWVzc2FnZSgkdGhpcy0+TGFuZygibWVzc2FnZV9tb2RpZmllZCIpKTsNCgkJCX1lbHNlew0KCQkJCSRwYXJhbXMgPSBhcnJheSgibW9kdWxlX21lc3NhZ2UiID0+ICR0aGlzLT5MYW5nKCJtZXNzYWdlX21vZGlmaWVkIiksICJhY3RpdmVfdGFiIj0+ImNhdGVnb3J5Iik7DQoJCQkJJHRoaXMtPlJlZGlyZWN0KCRpZCwgImRlZmF1bHRhZG1pbiIsICRyZXR1cm5pZCwgJHBhcmFtcyk7CQ0KCQkJfQ0KCX0NCgkvLyBFTkQgT0YgRk9STSBTVUJNSVNTSU9ODQp9DQoNCg0KDQovKiAjIyBQUkVQQVJJTkcgU01BUlRZIEVMRU1FTlRTDQpDcmVhdGVJbnB1dFRleHQgOiAoaWQsbmFtZSx2YWx1ZSxzaXplLG1heGxlbmd0aCkNCkNyZWF0ZVRleHRBcmVhIDogKHd5c2l3eWcsaWQsdGV4dCxuYW1lKQ0KQ3JlYXRlSW5wdXRTZWxlY3RMaXN0IDogKGlkLG5hbWUsaXRlbXMsc2VsZWN0ZWRpdGVtcyxzaXplKQ0KQ3JlYXRlSW5wdXREcm9wZG93biA6IChpZCxuYW1lLGl0ZW1zLHNpbmRleCxzdmFsdWUpDQoqLw0KDQokdGhpcy0+c21hcnR5LT5hc3NpZ24oImRlc2NyaXB0aW9uX2xhYmVsIiwgJHRoaXMtPkxhbmcoImNhdGVnb3J5X2Rlc2NyaXB0aW9uIikpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJkZXNjcmlwdGlvbl9pbnB1dCIsICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCJBZGVzY3JpcHRpb24iLGlzc2V0KCRpdGVtKT8kaXRlbS0+ZGVzY3JpcHRpb246IiIsNTAsMjU1KSk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oIm5hbWVfbGFiZWwiLCAkdGhpcy0+TGFuZygibmFtZSIpKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbigibmFtZV9pbnB1dCIsICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCJBbmFtZSIsaXNzZXQoJGl0ZW0pPyRpdGVtLT5uYW1lOiIiLDUwLDY0KSk7DQppZigkdGhpcy0+R2V0UHJlZmVyZW5jZSgiZWRpdGFibGVfYWxpYXNlcyIsZmFsc2UpKXsNCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oImFsaWFzX2xhYmVsIiwgJHRoaXMtPkxhbmcoImFsaWFzIikpOw0KCSR0aGlzLT5zbWFydHktPmFzc2lnbigiYWxpYXNfaW5wdXQiLCAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwiQWFsaWFzIixpc3NldCgkaXRlbSk/JGl0ZW0tPmFsaWFzOiIiLDUwLDY0KSk7DQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJpdGVtYWxpYXMiLGZhbHNlKTsNCn1lbHNlew0KCSR0aGlzLT5zbWFydHktPmFzc2lnbigiaXRlbWFsaWFzIixpc3NldCgkaXRlbS0+YWxpYXMpPyIoYWxpYXMgOiAiLiRpdGVtLT5hbGlhcy4iKSI6ZmFsc2UpOw0KCSR0aGlzLT5zbWFydHktPmFzc2lnbigiYWxpYXNfaW5wdXQiLCBmYWxzZSk7DQp9DQoNCiR0aGlzLT5zbWFydHktPmFzc2lnbigiZWRpdHRpdGxlIiwgJHRoaXMtPkxhbmcoImVkaXRfY2F0ZWdvcnkiKSk7DQoNCiR0aGlzLT5zbWFydHktPmFzc2lnbigic3VibWl0IiwgJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgInN1Ym1pdCIsIGxhbmcoInN1Ym1pdCIpKSk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oImFwcGx5IiwgKGlzc2V0KCRpdGVtKSAmJiBpc3NldCgkaXRlbS0+aWQpKT8kdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAiYXBwbHkiLCBsYW5nKCJhcHBseSIpKToiIik7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oImNhbmNlbCIsICR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICJjYW5jZWwiLCBsYW5nKCJjYW5jZWwiKSkpOw0KDQoNCi8vIERJU1BMQVlJTkcNCmlmKGlzc2V0KCRpdGVtKSAmJiBpc3NldCgkaXRlbS0+aWQpKXsNCgkJZWNobyAkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwgImVkaXRBIiwgJHJldHVybmlkKTsNCgkJZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCJlZGl0QS50cGwiKTsNCgkJZWNobyAkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCAiQWlkIiwgJGl0ZW0tPmlkKTsNCgkJaWYoaXNzZXQoJGl0ZW0pICYmIGlzc2V0KCRpdGVtLT5wYXJlbnQpKSBlY2hvICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsICJvbGRwYXJlbnQiLCAkaXRlbS0+cGFyZW50KTsNCgkJZWNobyAkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCAiQWl0ZW1fb3JkZXIiLCAkaXRlbS0+aXRlbV9vcmRlcik7DQoJCWVjaG8gJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKTsNCgkNCg0KfWVsc2V7DQoJZWNobyAkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwgImVkaXRBIiwgJHJldHVybmlkKTsNCgllY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoImVkaXRBLnRwbCIpOw0KCWVjaG8gJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKTsNCn0NCj8+]]></data>
	</file>
	<file>
	  <filename>/action.editB.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmlmICghaXNzZXQoJGdDbXMpKSBleGl0Ow0KDQovL2dsb2JhbCAkaW1naWQ7DQokYWRtaW50aGVtZSA9ICRnQ21zLT52YXJpYWJsZXNbImFkbWludGhlbWUiXTsNCmlmKGlzc2V0KCRwYXJhbXNbImNhbmNlbCJdKSB8fCAoJHRoaXMtPkdldFByZWZlcmVuY2UoInJlc3RyaWN0X3Blcm1pc3Npb25zIixmYWxzZSkgJiYgISR0aGlzLT5DaGVja1Blcm1pc3Npb24oInZpbWVvcGxheWVyX2FkdmFuY2VkIikgJiYgISR0aGlzLT5DaGVja1Blcm1pc3Npb24oInZpbWVvcGxheWVyX21hbmFnZV92aWRlbyIpKSApew0KCSRuZXdwYXJhbXMgPSBhcnJheSgiYWN0aXZlX3RhYiIgPT4gInZpZGVvIik7DQoJaWYoIWlzc2V0KCRwYXJhbXNbImNhbmNlbCJdKSkJJG5ld3BhcmFtc1sibW9kdWxlX21lc3NhZ2UiXSA9ICR0aGlzLT5MYW5nKCJlcnJvcl9kZW5pZWQiKTsNCgkkdGhpcy0+UmVkaXJlY3QoJGlkLCAiZGVmYXVsdGFkbWluIiwgJHJldHVybmlkLCAkbmV3cGFyYW1zKTsNCn0NCg0KJGRiID0mICR0aGlzLT5HZXREYigpOw0KDQppZigkdGhpcy0+R2V0UHJlZmVyZW5jZSgidXNlX2hpZXJhcmNoeSIsZmFsc2UpKXsNCgkkcGFyZW50b3B0aW9ucyA9ICR0aGlzLT5nZXRfYWRtaW5faGllcmFyY2h5b3B0aW9ucygidmlkZW8iLGZhbHNlKTsNCn1lbHNlew0KCSRwYXJlbnRvcHRpb25zID0gJHRoaXMtPmdldF9vcHRpb25zKCJjYXRlZ29yeSIpOw0KfSR0aHVtYm5haWxvcHRpb25zID0gJHRoaXMtPmdldF9wcmVkZWZpbmVkb3B0aW9ucygidmlkZW9fdGh1bWJuYWlsIik7DQoNCg0KJEJ0aHVtYm5haWwgPSBmYWxzZTsNCmlmKGlzc2V0KCRwYXJhbXNbIkJpZCJdKSkgew0KCS8vIGlmIHdlIGFyZSB3b3JraW5nIG9uIGFuIGl0ZW0gdGhhdCBleGlzdHMsIHdlIGxvYWQgaXQuIFdlIG11c3QgZG8gdGhpcyBldmVuIHdoZW4gdGhlIGZvcm0gaXMgc3VibWl0dGVkLCBvdGhlcndpc2Ugd2Ugd29uJ3QgaGF2ZSB0aGUgZmlsZSBmaWVsZHMNCgkkaXRlbXMgPSAkdGhpcy0+Z2V0X2xldmVsX3ZpZGVvKGFycmF5KCJpZCI9PiRwYXJhbXNbIkJpZCJdKSk7DQoJJGl0ZW0gPSAkaXRlbXNbMF07DQp9DQoNCi8vIENIRUNLIElGIFRIRSBGT1JNIElTIEJFSU5HIFNVQk1JVFRFRCA6DQovLyAod2UgbXVzdCBkZXRlY3QgYWxsIGtpbmRzIG9mIHN1Ym1pdCBidXR0b25zLCBpbmNsdWRpbmcgZmlsZXMsIHNpbmNlIGluZm9ybWF0aW9uIG11c3QgYmUgc2F2ZWQgYmVmb3JlIHdlIGdvIHRvIGZpbGUgc3VibWlzc2lvbikNCmlmIChpc3NldCgkcGFyYW1zWyJzdWJtaXQiXSkgfHwgDQoJaXNzZXQoJHBhcmFtc1siYXBwbHkiXSkgDQoJKQ0Kew0KCWRlYnVnX2J1ZmZlcigiRWRpdCBGb3JtIGhhcyBiZWVuIHN1Ym1pdHRlZCIuX19MSU5FX18pOw0KDQoJLy8gUkVUUklFVklORyBUSEUgRk9STSBWQUxVRVMgKGFuZCBlc2NhcGluZyBpdCwgaWYgbmVlZGVkKQ0KCWlmKCFpc3NldCgkaXRlbSkpICRpdGVtID0gbmV3IHN0ZENsYXNzKCk7DQoJaWYoaXNzZXQoJHBhcmFtc1siQml0ZW1fb3JkZXIiXSkpICRpdGVtLT5pdGVtX29yZGVyID0gJHBhcmFtc1siQml0ZW1fb3JkZXIiXTsNCgkkaXRlbS0+dmlkZW9pZCA9ICRwYXJhbXNbIkJ2aWRlb2lkIl07DQoJJGl0ZW0tPmRlc2NyaXB0aW9uID0gJHBhcmFtc1siQmRlc2NyaXB0aW9uIl07DQoJJGl0ZW0tPnBhcmVudCA9ICRwYXJhbXNbIkJwYXJlbnQiXTsNCgkkaXRlbS0+bmFtZSA9ICRwYXJhbXNbIkJuYW1lIl07DQoJJEJ0aHVtYm5haWwgPSAkcGFyYW1zWyJCdGh1bWJuYWlsIl07DQoJJGl0ZW0tPnRodW1ibmFpbCA9ICR0aGlzLT5nZXRfdmltZW9fdGh1bWJuYWlsKCRpdGVtLT52aWRlb2lkLCAkcGFyYW1zWyJCdGh1bWJuYWlsIl0pOw0KCQkvL2VjaG8gJGl0ZW0tPnRodW1ibmFpbDsNCglpZigkdGhpcy0+R2V0UHJlZmVyZW5jZSgiZWRpdGFibGVfYWxpYXNlcyIsZmFsc2UpKXsNCgkJaWYoaXNzZXQoJHBhcmFtc1siQmFsaWFzIl0pKXsNCgkJCSR0bXBhbGlhcyA9ICR0aGlzLT5wbGNyZWF0ZWFsaWFzKHRyaW0oJHBhcmFtc1siQmFsaWFzIl0pKTsNCgkJCSRpdGVtLT5hbGlhcyA9ICR0bXBhbGlhcyA9PSAiIj8kdGhpcy0+cGxjcmVhdGVhbGlhcygkaXRlbS0+bmFtZSk6JHRtcGFsaWFzOw0KCQl9ZWxzZXsNCgkJCSRpdGVtLT5hbGlhcyA9ICR0aGlzLT5wbGNyZWF0ZWFsaWFzKCRpdGVtLT5uYW1lKTsNCgkJfQ0KCX1lbHNlew0KCQkkaXRlbS0+YWxpYXMgPSAkdGhpcy0+cGxjcmVhdGVhbGlhcygkaXRlbS0+bmFtZSk7DQoJfQ0KCQ0KCSRhdXRvaW5jcmVtZW50YWxpYXMgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgiYXV0b2luY3JlbWVudF9hbGlhcyIsZmFsc2UpOw0KDQoJLy8gQ0hFQ0sgSUYgVEhFIE5FRURFRCBWQUxVRVMgQVJFIFRIRVJFDQoJaWYoCSFpc3NldCgkcGFyYW1zWyJCdmlkZW9pZCJdKSB8fCAkcGFyYW1zWyJCdmlkZW9pZCJdID09ICIiDQoJCSB8fCAhaXNzZXQoJHBhcmFtc1siQm5hbWUiXSkgfHwgJHBhcmFtc1siQm5hbWUiXSA9PSAiIg0KCQkgKQ0KCXsNCgkJZWNobyAkdGhpcy0+U2hvd0Vycm9ycygkdGhpcy0+TGFuZygiZXJyb3JfbWlzc2dpbnZhbHVlIikpOw0KCX1lbHNlaWYoISRhdXRvaW5jcmVtZW50YWxpYXMgJiYgZmFsc2UgPT0gJHRoaXMtPmNoZWNrYWxpYXMoIm1vZHVsZV92aW1lb3BsYXllcl92aWRlbyIsICRpdGVtLT5hbGlhcywgaXNzZXQoJHBhcmFtc1siQmlkIl0pPyRwYXJhbXNbIkJpZCJdOmZhbHNlKSl7DQoJCWVjaG8gJHRoaXMtPlNob3dFcnJvcnMoJHRoaXMtPkxhbmcoImVycm9yX2FscmVhZHlleGlzdHMiKSk7DQoJfWVsc2V7DQoJCSMjIyMjIyMjIyMjIyBET0lORyBUSEUgVVBEQVRFDQoNCgkJaWYoJGF1dG9pbmNyZW1lbnRhbGlhcyl7DQoJCQkkYmFzZWFsaWFzID0gJGl0ZW0tPmFsaWFzOw0KCQkJJHRtcGFsaWFzID0gJGl0ZW0tPmFsaWFzOw0KCQkJJGkgPSAxOw0KCQkJd2hpbGUoISR0aGlzLT5jaGVja2FsaWFzKCJtb2R1bGVfdmltZW9wbGF5ZXJfdmlkZW8iLCAkdG1wYWxpYXMsIGlzc2V0KCRwYXJhbXNbIkJpZCJdKT8kcGFyYW1zWyJCaWQiXTpmYWxzZSkpew0KCQkJCSR0bXBhbGlhcyA9ICRiYXNlYWxpYXMuIl8iLiRpOw0KCQkJCSRpKys7DQoJCQl9DQoJCQkkaXRlbS0+YWxpYXMgPSAkdG1wYWxpYXM7DQoJCX0NCg0KCQkvLyBGSUVMRFMgVE8gVVBEQVRFDQoJCSRxdWVyeSA9IChpc3NldCgkaXRlbS0+aWQpPyJVUERBVEUgIjoiSU5TRVJUIElOVE8gIikuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfdmltZW9wbGF5ZXJfdmlkZW8gU0VUIA0KCQkJdmlkZW9pZD0/LA0KCQkJZGVzY3JpcHRpb249PywNCgkJCXRodW1ibmFpbD0/LA0KCQkJcGFyZW50PT8sDQoJCQluYW1lPT8sDQoJCWFsaWFzPT8sDQoJCWRhdGVfbW9kaWZpZWQ9PywNCgkJYWN0aXZlPSIuKGlzc2V0KCRpdGVtLT5hY3RpdmUpPyRpdGVtLT5hY3RpdmU6MSkuIiwNCgkJaXNkZWZhdWx0PSIuKGlzc2V0KCRpdGVtLT5pc2RlZmF1bHQpPyRpdGVtLT5pc2RlZmF1bHQ6MCkuIiI7DQoJCQkNCgkJLy8gVkFMVUVTDQoJCSR2YWx1ZXMgPSBhcnJheShhZGRzbGFzaGVzKCRpdGVtLT52aWRlb2lkKSwNCgkJCWFkZHNsYXNoZXMoJGl0ZW0tPmRlc2NyaXB0aW9uKSwNCgkJCWFkZHNsYXNoZXMoJGl0ZW0tPnRodW1ibmFpbCksDQoJCQkkaXRlbS0+cGFyZW50LA0KCQkJYWRkc2xhc2hlcygkaXRlbS0+bmFtZSksJGl0ZW0tPmFsaWFzLHN0cl9yZXBsYWNlKCInIiwiIiwkZGItPkRCVGltZVN0YW1wKHRpbWUoKSkpKTsNCg0KCQlpZihpc3NldCgkaXRlbS0+aWQpKXsNCgkJCSRldmVudCA9ICJ2aW1lb3BsYXllcl9tb2RpZmllZCI7DQoJCQkkcXVlcnkgLj0gIiBXSEVSRSBpZD0/OyI7DQoJCQlhcnJheV9wdXNoKCR2YWx1ZXMsJGl0ZW0tPmlkKTsNCgkJfWVsc2V7DQoJCQkvLyBORVcgSVRFTQ0KCQkJJHF1ZXJ5IC49ICIsIGRhdGVfY3JlYXRlZD0/IjsNCgkJCSR2YWx1ZXNbXSA9IHN0cl9yZXBsYWNlKCInIiwiIiwkZGItPkRCVGltZVN0YW1wKHRpbWUoKSkpOw0KCQkJJGV2ZW50ID0gInZpbWVvcGxheWVyX2FkZGVkIjsNCgkJCS8vIGdldCBhIG5ldyBpZCBmcm9tIHRoZSBzZXF1ZW5jZSB0YWJsZQ0KCQkJJGl0ZW0tPmlkID0gJGRiLT5HZW5JRChjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV92aW1lb3BsYXllcl92aWRlb19zZXEiKTsNCgkJCWlmKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCJuZXdpdGVtc2ZpcnN0X3ZpZGVvIixmYWxzZSkpew0KCQkJCS8vIG5ldyBpdGVtcyBnZXQgdG8gdGhlIHRvcCAtIHNvIHdlIG11c3QgcHV0IGFsbCBvdGhlciBpdGVtcyBkb3duIGZyb20gb25lIHN0ZXAsIGFuZCB0aGVuIHNldCB0aGlzIGl0ZW0ncyBvcmRlciB0byAxDQoJCQkJJHF1ZXJ5MiA9ICJVUERBVEUgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV92aW1lb3BsYXllcl92aWRlbyBTRVQgaXRlbV9vcmRlcj0oaXRlbV9vcmRlcisxKSBXSEVSRSBwYXJlbnQ9PyI7DQoJCQkJJGRiLT5FeGVjdXRlKCRxdWVyeTIsIGFycmF5KCRpdGVtLT5wYXJlbnQpKTsNCgkJCQkkcXVlcnkgLj0gIixpdGVtX29yZGVyPTEsIGlkPSIuJGl0ZW0tPmlkOw0KCQkJfWVsc2V7DQoJCQkJLy8gbmV3IGl0ZW1zIGdldCB0byB0aGUgYm90dG9tIC0gc28gd2UgbXVzdCBzZXQgdGhlIGl0ZW1fb3JkZXIgdG8gdGhlIG51bWJlciBvZiBpdGVtcyArIDENCgkJCQkkaXRlbV9vcmRlciA9ICR0aGlzLT5jb3VudHNvbWV0aGluZygidmlkZW8iLCJpZCIsYXJyYXkoInBhcmVudCI9PiRpdGVtLT5wYXJlbnQpKSArIDE7DQoJCQkJJHF1ZXJ5IC49ICIsaXRlbV9vcmRlcj0iLiRpdGVtX29yZGVyLiIsIGlkPSIuJGl0ZW0tPmlkOw0KCQkJfQ0KCQl9DQoJCSRkYi0+RXhlY3V0ZSgkcXVlcnksICR2YWx1ZXMpOw0KDQoJaWYoaXNzZXQoJHBhcmFtc1sib2xkcGFyZW50Il0pICYmICRwYXJhbXNbIm9sZHBhcmVudCJdICE9ICRpdGVtLT5wYXJlbnQpew0KCQkvLyB0aGUgaXRlbSBpcyBjaGFuZ2luZyBwYXJlbnQsIGFuZCB3ZSdyZSBvcmRlcmluZyBieSBwYXJlbnRzDQoJCQ0KCQlpZigkdGhpcy0+R2V0UHJlZmVyZW5jZSgibmV3aXRlbXNmaXJzdF92aWRlbyIsZmFsc2UpKXsNCgkJCS8vIG5ldyBpdGVtcyBnZXQgdG8gdGhlIHRvcA0KCQkJDQoJCQkvLyBVUERBVEUgVEhFIE9SREVSIE9GIFRIRSBJVEVNUyBXSVRIIFRIRSBPTEQgUEFSRU5UDQoJCQkkcXVlcnkgPSAiVVBEQVRFICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfdmltZW9wbGF5ZXJfdmlkZW8gU0VUIGl0ZW1fb3JkZXI9KGl0ZW1fb3JkZXItMSkgV0hFUkUgaXRlbV9vcmRlciA+ID8gQU5EIHBhcmVudD0/IjsNCgkJCSRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRpdGVtLT5pdGVtX29yZGVyLCAkcGFyYW1zWyJvbGRwYXJlbnQiXSkpOw0KCQkJLy8gR0VUIE5FVyBJVEVNIE9SREVSDQoJCQkkaXRlbS0+aXRlbV9vcmRlciA9ICR0aGlzLT5jb3VudHNvbWV0aGluZygidmlkZW8iLCJpZCIsYXJyYXkoInBhcmVudCI9PiRpdGVtLT5wYXJlbnQpKSArIDE7DQoJCQkkcXVlcnkgPSAiVVBEQVRFICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfdmltZW9wbGF5ZXJfdmlkZW8gU0VUIGl0ZW1fb3JkZXI9PyBXSEVSRSBpZD0/IjsNCgkJCSRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRpdGVtLT5pdGVtX29yZGVyLCAkaXRlbS0+aWQpKTsNCg0KCQl9ZWxzZXsNCg0KCQkJLy8gVVBEQVRFIFRIRSBPUkRFUiBPRiBUSEUgSVRFTVMgV0lUSCBUSEUgT0xEIFBBUkVOVA0KCQkJJHF1ZXJ5ID0gIlVQREFURSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3ZpbWVvcGxheWVyX3ZpZGVvIFNFVCBpdGVtX29yZGVyPShpdGVtX29yZGVyLTEpIFdIRVJFIGl0ZW1fb3JkZXIgPiA/IEFORCBwYXJlbnQ9PyI7DQoJCQkkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkaXRlbS0+aXRlbV9vcmRlciwgJHBhcmFtc1sib2xkcGFyZW50Il0pKTsNCgkJCS8vIFVQREFURSBORVcgUEFSRU5UDQoJCQkkcXVlcnkgPSAiVVBEQVRFICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfdmltZW9wbGF5ZXJfdmlkZW8gU0VUIGl0ZW1fb3JkZXI9KGl0ZW1fb3JkZXIrMSkgV0hFUkUgcGFyZW50PT8iOw0KCQkJJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGl0ZW0tPnBhcmVudCkpOw0KCQkJLy8gR0VUIE5FVyBJVEVNIE9SREVSDQoJCQkkaXRlbS0+aXRlbV9vcmRlciA9IDE7DQoJCQkkcXVlcnkgPSAiVVBEQVRFICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfdmltZW9wbGF5ZXJfdmlkZW8gU0VUIGl0ZW1fb3JkZXI9PyBXSEVSRSBpZD0/IjsNCgkJCSRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRpdGVtLT5pdGVtX29yZGVyLCAkaXRlbS0+aWQpKTsNCgkJDQoJCX0NCgl9DQoNCgkJJHJlZGlyZWN0ID0gdHJ1ZTsNCgkJLy9pZihteXNxbF9hZmZlY3RlZF9yb3dzKCkpewkvLyBteXNxbC1vbmx5DQoJCWlmKCRkYi0+QWZmZWN0ZWRfUm93cygpKXsNCgkJCWlmKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCJzZWFyY2htb2R1bGVfaW5kZXhfdmlkZW8iLGZhbHNlKSl7DQoJCQkJLy8gSUYgQU5ZVEhJTkcgV0FTIE1PRElGSUVELCBXRSBNVVNUIFVQREFURSBUSEUgU0VBUkNIIElOREVYIEFORCBTRU5EIEFOIEVWRU5ULi4uDQoJCQkJaWYoaXNzZXQoJGV2ZW50KSkJJHRoaXMtPlNlbmRFdmVudCgkZXZlbnQsIGFycmF5KCJ3aGF0Ij0+InZpZGVvIiwgIml0ZW1pZCIgPT4gJGl0ZW0tPmlkLCAiYWxpYXMiPT4kaXRlbS0+YWxpYXMpKTsNCgkJCQlkZWJ1Z19idWZmZXIoIlNFQVJIQyBJTkRFWCBXQVMgVVBEQVRFRCAiLl9fTElORV9fKTsNCgkJCQkkbW9kdWxlID0mICR0aGlzLT5HZXRNb2R1bGVJbnN0YW5jZSgiU2VhcmNoIik7DQoJCQkJaWYoJG1vZHVsZSkgew0KCQkJCQkkdGV4dCA9ICIkaXRlbS0+bmFtZSI7DQoJCQkJCSRtb2R1bGUtPkFkZFdvcmRzKCR0aGlzLT5HZXROYW1lKCksICRpdGVtLT5pZCwgInZpZGVvIiwgJHRleHQsIE5VTEwpOw0KCQkJCX0NCgkJCX0NCgkJfWVsc2VpZihteXNxbF9lcnJvcigpKXsNCgkJCS8vIGRvIG5vdCByZWRpcmVjdCA6DQoJCQkkcmVkaXJlY3QgPSBmYWxzZTsNCgkJCWVjaG8gJHRoaXMtPlNob3dFcnJvcnMobXlzcWxfZXJyb3IoKSk7DQoJCX0NCg0KCQkvLyBSRURJUkVDVElORy4uLg0KCQkJaWYoJHJlZGlyZWN0ID09IGZhbHNlKXsNCgkJCX1lbHNlaWYoaXNzZXQoJHBhcmFtc1siYXBwbHkiXSkpew0KCQkJCWVjaG8gJHRoaXMtPlNob3dNZXNzYWdlKCR0aGlzLT5MYW5nKCJtZXNzYWdlX21vZGlmaWVkIikpOw0KCQkJfWVsc2V7DQoJCQkJJHBhcmFtcyA9IGFycmF5KCJtb2R1bGVfbWVzc2FnZSIgPT4gJHRoaXMtPkxhbmcoIm1lc3NhZ2VfbW9kaWZpZWQiKSwgImFjdGl2ZV90YWIiPT4idmlkZW8iKTsNCgkJCQkkdGhpcy0+UmVkaXJlY3QoJGlkLCAiZGVmYXVsdGFkbWluIiwgJHJldHVybmlkLCAkcGFyYW1zKTsJDQoJCQl9DQoJfQ0KCS8vIEVORCBPRiBGT1JNIFNVQk1JU1NJT04NCn1lbHNlaWYoaXNzZXQoJGl0ZW0pICYmIGlzc2V0KCRpdGVtLT50aHVtYm5haWwpICYmICRpdGVtLT50aHVtYm5haWwgIT0gJycpew0KCS8vIHRyeSB0byBmaWd1cmUgb3V0IHdoaWNoIHRodW1ibmFpbCBpcyBjdXJyZW50bHkgc2VsZWN0ZWQNCgkvLyB0aGlzIGlzIGluZWxlZ2FudCwgYnV0IG5lZWRlZCBjb25zaWRlcmluZyBob3cgdGhlIG1vZHVsZSB3YXMgYnVpbHQNCgkkdmltZW9BcnJheSA9ICR0aGlzLT5nZXRfdmltZW9fdGh1bWJuYWlsKCRpdGVtLT52aWRlb2lkLCAnYXJyYXknKTsNCglmb3JlYWNoKGFycmF5KCdzbWFsbCcsJ21lZGl1bScsJ2xhcmdlJykgYXMgJHRudHlwZSl7DQoJCWlmKGlzc2V0KCR2aW1lb0FycmF5Wyd0aHVtYm5haWxfJy4kdG50eXBlXSkgJiYgJHZpbWVvQXJyYXlbJ3RodW1ibmFpbF8nLiR0bnR5cGVdID09ICRpdGVtLT50aHVtYm5haWwpCSRCdGh1bWJuYWlsID0gJHRudHlwZTsNCgl9DQp9DQoNCi8qICMjIFBSRVBBUklORyBTTUFSVFkgRUxFTUVOVFMNCkNyZWF0ZUlucHV0VGV4dCA6IChpZCxuYW1lLHZhbHVlLHNpemUsbWF4bGVuZ3RoKQ0KQ3JlYXRlVGV4dEFyZWEgOiAod3lzaXd5ZyxpZCx0ZXh0LG5hbWUpDQpDcmVhdGVJbnB1dFNlbGVjdExpc3QgOiAoaWQsbmFtZSxpdGVtcyxzZWxlY3RlZGl0ZW1zLHNpemUpDQpDcmVhdGVJbnB1dERyb3Bkb3duIDogKGlkLG5hbWUsaXRlbXMsc2luZGV4LHN2YWx1ZSkNCiovDQoNCiR0aGlzLT5zbWFydHktPmFzc2lnbigidmlkZW9pZF9sYWJlbCIsICR0aGlzLT5MYW5nKCJ2aWRlb192aWRlb2lkIikpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJ2aWRlb2lkX2lucHV0IiwgJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsIkJ2aWRlb2lkIixpc3NldCgkaXRlbSk/JGl0ZW0tPnZpZGVvaWQ6IiIsNTAsNjQpKTsNCi8vbWFydGluDQokdGhpcy0+c21hcnR5LT5hc3NpZ24oImRlc2NyaXB0aW9uX2xhYmVsIiwgJHRoaXMtPkxhbmcoInZpZGVvX2Rlc2NyaXB0aW9uIikpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJkZXNjcmlwdGlvbl9pbnB1dCIsICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCJCZGVzY3JpcHRpb24iLGlzc2V0KCRpdGVtKT8kaXRlbS0+ZGVzY3JpcHRpb246IiIsNTAsMjU1KSk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oInRodW1ibmFpbF9sYWJlbCIsICR0aGlzLT5MYW5nKCJ2aWRlb190aHVtYm5haWwiKSk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oInRodW1ibmFpbF9pbnB1dCIsICR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwiQnRodW1ibmFpbCIsJHRodW1ibmFpbG9wdGlvbnMsLTEsaXNzZXQoJGl0ZW0pPyRCdGh1bWJuYWlsOjApKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbigibmFtZV9sYWJlbCIsICR0aGlzLT5MYW5nKCJuYW1lIikpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJuYW1lX2lucHV0IiwgJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsIkJuYW1lIixpc3NldCgkaXRlbSk/JGl0ZW0tPm5hbWU6IiIsNTAsNjQpKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbigicGFyZW50X2xhYmVsIiwgJHRoaXMtPkxhbmcoImNhdGVnb3J5IikpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJwYXJlbnRfaW5wdXQiLCAkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsIkJwYXJlbnQiLCRwYXJlbnRvcHRpb25zLC0xLGlzc2V0KCRpdGVtKT8kaXRlbS0+cGFyZW50OjApKTtpZihpc3NldCgkaXRlbSkpICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsICJvbGRwYXJlbnQiLCAkaXRlbS0+cGFyZW50KTsNCmlmKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCJlZGl0YWJsZV9hbGlhc2VzIixmYWxzZSkpew0KCSR0aGlzLT5zbWFydHktPmFzc2lnbigiYWxpYXNfbGFiZWwiLCAkdGhpcy0+TGFuZygiYWxpYXMiKSk7DQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJhbGlhc19pbnB1dCIsICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCJCYWxpYXMiLGlzc2V0KCRpdGVtKT8kaXRlbS0+YWxpYXM6IiIsNTAsNjQpKTsNCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oIml0ZW1hbGlhcyIsZmFsc2UpOw0KfWVsc2V7DQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJpdGVtYWxpYXMiLGlzc2V0KCRpdGVtLT5hbGlhcyk/IihhbGlhcyA6ICIuJGl0ZW0tPmFsaWFzLiIpIjpmYWxzZSk7DQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJhbGlhc19pbnB1dCIsIGZhbHNlKTsNCn0NCg0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJlZGl0dGl0bGUiLCAkdGhpcy0+TGFuZygiZWRpdF92aWRlbyIpKTsNCg0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJzdWJtaXQiLCAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAic3VibWl0IiwgbGFuZygic3VibWl0IikpKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbigiYXBwbHkiLCAoaXNzZXQoJGl0ZW0pICYmIGlzc2V0KCRpdGVtLT5pZCkpPyR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICJhcHBseSIsIGxhbmcoImFwcGx5IikpOiIiKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbigiY2FuY2VsIiwgJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgImNhbmNlbCIsIGxhbmcoImNhbmNlbCIpKSk7DQoNCg0KLy8gRElTUExBWUlORw0KaWYoaXNzZXQoJGl0ZW0pICYmIGlzc2V0KCRpdGVtLT5pZCkpew0KCQllY2hvICR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoJGlkLCAiZWRpdEIiLCAkcmV0dXJuaWQpOw0KCQllY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoImVkaXRCLnRwbCIpOw0KCQllY2hvICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsICJCaWQiLCAkaXRlbS0+aWQpOw0KCQlpZihpc3NldCgkaXRlbSkgJiYgaXNzZXQoJGl0ZW0tPnBhcmVudCkpIGVjaG8gJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwgIm9sZHBhcmVudCIsICRpdGVtLT5wYXJlbnQpOw0KCQllY2hvICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsICJCaXRlbV9vcmRlciIsICRpdGVtLT5pdGVtX29yZGVyKTsNCgkJZWNobyAkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpOw0KCQ0KDQp9ZWxzZXsNCgllY2hvICR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoJGlkLCAiZWRpdEIiLCAkcmV0dXJuaWQpOw0KCWVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgiZWRpdEIudHBsIik7DQoJZWNobyAkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpOw0KfQ0KPz4NCg==]]></data>
	</file>
	<file>
	  <filename>/action.editTemplate.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7CgppZiggaXNzZXQoJHBhcmFtc1snY2FuY2VsJ10pICkJJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwgYXJyYXkoJ2FjdGl2ZV90YWInPT4ndGVtcGxhdGVzJykgKTsKCiR0cGxjb250ZW50ID0gJyc7CmlmKCAoIGlzc2V0KCRwYXJhbXNbJ3N1Ym1pdCddKSB8fCBpc3NldCgkcGFyYW1zWydhcHBseSddKSApICYmIGlzc2V0KCRwYXJhbXNbJ3RwbG5hbWUnXSkgKXsKCWlmKCRwYXJhbXNbJ3RwbG5hbWUnXSAhPSAnJyl7CgkJaWYoaXNzZXQoJHBhcmFtc1snaXNuZXcnXSkpCSRwYXJhbXNbJ3RwbG5hbWUnXSA9IG11bmdlX3N0cmluZ190b191cmwoJHBhcmFtc1sndHBsbmFtZSddLCBmYWxzZSk7CgkJJHRwbGNvbnRlbnQgPSAkcGFyYW1zWyd0cGxjb250ZW50J107CgkJaWYoJHRoaXMtPlNldFRlbXBsYXRlKCRwYXJhbXNbJ3RwbG5hbWUnXSwkcGFyYW1zWyd0cGxjb250ZW50J10sJHRoaXMtPkdldE5hbWUoKSkpOwoJCWlmKGlzc2V0KCRwYXJhbXNbJ3N1Ym1pdCddKSl7CgkJCSR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQsIGFycmF5KCJtb2R1bGVfbWVzc2FnZSIgPT4gJHRoaXMtPkxhbmcoIm1lc3NhZ2VfbW9kaWZpZWQiKSwgJ2FjdGl2ZV90YWInPT4ndGVtcGxhdGVzJykgKTsKCQl9ZWxzZXsKCQkJZWNobyAkdGhpcy0+U2hvd01lc3NhZ2UoJHRoaXMtPkxhbmcoIm1lc3NhZ2VfbW9kaWZpZWQiKSk7CgkJfQoJfWVsc2V7CgkJZWNobyAnPGRpdiBjbGFzcz0icGFnZWVycm9yY29udGFpbmVyIj4nLiR0aGlzLT5MYW5nKCdlcnJvcl9taXNzZ2ludmFsdWUnKS4nPC9kaXY+JzsKCX0KfWVsc2VpZiggaXNzZXQoJHBhcmFtc1sndHBsbmFtZSddKSApewoJJHRwbGNvbnRlbnQgPSAkdGhpcy0+R2V0VGVtcGxhdGUoICRwYXJhbXNbJ3RwbG5hbWUnXSwgJHRoaXMtPkdldE5hbWUoKSApOwp9CgplY2hvICR0aGlzLT5TdGFydFRhYkhlYWRlcnMoKTsKCWVjaG8gJHRoaXMtPlNldFRhYkhlYWRlcigidGVtcGxhdGUiLCAkdGhpcy0+TGFuZygidGVtcGxhdGUiKSwgdHJ1ZSk7CgllY2hvICR0aGlzLT5TZXRUYWJIZWFkZXIoImhlbHB0YWIiLCAkdGhpcy0+TGFuZygidGVtcGxhdGV2YXJzIiksIGZhbHNlKTsJCQplY2hvICR0aGlzLT5FbmRUYWJIZWFkZXJzKCk7CgplY2hvICR0aGlzLT5TdGFydFRhYkNvbnRlbnQoKTsKCgllY2hvICR0aGlzLT5TdGFydFRhYigidGVtcGxhdGUiKTsKCQllY2hvICc8aDE+Jy4kdGhpcy0+TGFuZygiZWRpdHRlbXBsYXRlIikuJzwvaDE+JzsKCQllY2hvICR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoJGlkLCAiZWRpdFRlbXBsYXRlIiwgJHJldHVybmlkKTsKCQkvL2VjaG8gJzxwPicuJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgInN1Ym1pdCIsIGxhbmcoInN1Ym1pdCIpKS4nICcuJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgImFwcGx5IiwgbGFuZygiYXBwbHkiKSkuJyAnLiR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICJjYW5jZWwiLCBsYW5nKCJjYW5jZWwiKSkuJzwvcD48YnIvPjxici8+JzsKCQllY2hvICcJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCQkJCTxwIGNsYXNzPSJwYWdldGV4dCI+Jy4kdGhpcy0+TGFuZygnbmFtZScpLicgOjwvcD4KCQkJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPic7CgkJaWYoaXNzZXQoJHBhcmFtc1sndHBsbmFtZSddKSAmJiAkcGFyYW1zWyd0cGxuYW1lJ10gIT0gJycpewoJCSAgICBlY2hvICRwYXJhbXNbJ3RwbG5hbWUnXS4kdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCAidHBsbmFtZSIsICRwYXJhbXNbJ3RwbG5hbWUnXSk7CgkJfWVsc2V7CgkJICAgIGVjaG8gJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsJ3RwbG5hbWUnLCcnLDMwLDY0KTsKCQl9CgkJZWNobyAnPC9wPgoJCSAgICA8L2Rpdj4KCQknOwoJCWVjaG8gJwk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCQkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij4nLiR0aGlzLT5MYW5nKCd0ZW1wbGF0ZScpLicgOjwvcD4KCQkJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPicuJHRoaXMtPkNyZWF0ZVRleHRBcmVhKGZhbHNlLCRpZCwkdHBsY29udGVudCwndHBsY29udGVudCcpLic8L3A+CgkJICAgIDwvZGl2PgoJCSc7CgkJZWNobyAnPHA+Jy4kdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAic3VibWl0IiwgbGFuZygic3VibWl0IikpLicgJy4kdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAiYXBwbHkiLCBsYW5nKCJhcHBseSIpKS4nICcuJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgImNhbmNlbCIsIGxhbmcoImNhbmNlbCIpKS4nPC9wPic7CgkJaWYoIWlzc2V0KCRwYXJhbXNbInRwbG5hbWUiXSkgfHwgJHBhcmFtc1sidHBsbmFtZSJdID09ICcnKQllY2hvICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsICJpc25ldyIsICJ5ZXMiKTsKCQllY2hvICR0aGlzLT5DcmVhdGVGb3JtRW5kKCk7CgllY2hvICR0aGlzLT5FbmRUYWIoKTsKCgllY2hvICR0aGlzLT5TdGFydFRhYigiaGVscHRhYiIpOwoJCWVjaG8gJzxkaXYgaWQ9InRlbXBsYXRlaGVscCI+Jy4kdGhpcy0+TGFuZygndGVtcGxhdGVoZWxwJykuJzwvZGl2Pic7CgkJZWNobyAnCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCWZ1bmN0aW9uIGN0bG1tX2Rpc3BsYXl0b2dnbGUoZWxlKXsKCQlpZighZWxlIHx8ICFlbGUucGFyZW50Tm9kZSkJcmV0dXJuIGZhbHNlOwoJCXZhciB0aGVkaXYgPSBlbGUucGFyZW50Tm9kZS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiZGl2IilbMF07CgkJaWYoIXRoZWRpdikJcmV0dXJuIGZhbHNlOwoJCWlmKHRoZWRpdi5zdHlsZS5kaXNwbGF5ID09ICJub25lIil7CgkJCXRoZWRpdi5zdHlsZS5kaXNwbGF5ID0gImJsb2NrIjsKCQkJZWxlLmlubmVySFRNTCA9ICJWIiArIGVsZS5pbm5lckhUTUwuc3Vic3RyKDQpOwoJCX1lbHNlewoJCQl0aGVkaXYuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKCQkJZWxlLmlubmVySFRNTCA9ICImZ3Q7IiArIGVsZS5pbm5lckhUTUwuc3Vic3RyKDEpOwoJCX0KCX0KCXZhciB0aGVkaXZzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlbXBsYXRlaGVscCIpLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJkaXYiKTsKCWZvcihpPTA7aTx0aGVkaXZzLmxlbmd0aDtpKyspewoJCWlmKHRoZWRpdnNbaV0uY2xhc3NOYW1lID09ICJ0cGx2YXJzX2hpZGUiKQl0aGVkaXZzW2ldLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7Cgl9Cjwvc2NyaXB0PgonOwoJZWNobyAkdGhpcy0+RW5kVGFiKCk7CgplY2hvICR0aGlzLT5FbmRUYWJDb250ZW50KCk7Cgo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/action.export.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoIWlzc2V0KCRnQ21zKSkJZXhpdDsKCmlmKGlzc2V0KCRwYXJhbXNbJ2RvZXhwb3J0J10pKXsKCQoJJGRiID0mICR0aGlzLT5HZXREYigpOwoJCgkkb3V0cHV0ID0gJyc7Cglmb3JlYWNoKCRwYXJhbXNbJ3NlbGVjdGVkbGV2ZWxzJ10gYXMgJGxldmVsKXsKCQkkb3V0cHV0IC49ICcKPHRhYmxlIG5hbWU9IicuJGxldmVsLiciPgoJJzsKCQkKCQkkcXVlcnkgPSAiU0VMRUNUICogRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlXyIuJHRoaXMtPkdldE5hbWUoKS4iXyIuJGxldmVsOwoJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkpOwoJCXdoaWxlICggJGRicmVzdWx0ICYmICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkgKSB7CgkJCSRvdXRwdXQgLj0gIjxpdGVtPgoJCSI7CgkJCWZvcmVhY2goJHJvdyBhcyAkZmllbGQ9PiR2YWx1ZSl7CgkJCQkkb3V0cHV0IC49ICc8Jy4kZmllbGQuJz48IVtDREFUQVsnLnN0cmlwc2xhc2hlcygkdmFsdWUpLiddXT48LycuJGZpZWxkLic+CgkJJzsKCQkJfQoJCQkkb3V0cHV0IC49ICIKCTwvaXRlbT4KCSI7CgkJfQoJCSRvdXRwdXQgLj0gIgo8L3RhYmxlPgoKIjsKCX0KCgoKCS8vIGV4cG9ydGluZyBtdWx0aXBsZSBmaWxlIGZpZWxkcyAoaWYgYW55KQoJCSR0bXBvdXRwdXQgPSAnJzsKCQkkcXVlcnkgPSAiU0VMRUNUICogRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlXyIuJHRoaXMtPkdldE5hbWUoKS4iX211bHRpcGxlZmlsZXNmaWVsZHMiOwoJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkpOwoJCXdoaWxlICggJGRicmVzdWx0ICYmICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkgKSB7CgkJCSR0bXBvdXRwdXQgLj0gJzxpdGVtPgoJCSc7CgkJCWZvcmVhY2goJHJvdyBhcyAkZmllbGQ9PiR2YWx1ZSl7CgkJCQkkdG1wb3V0cHV0IC49ICc8Jy4kZmllbGQuJz48IVtDREFUQVsnLnN0cmlwc2xhc2hlcygkdmFsdWUpLiddXT48LycuJGZpZWxkLic+CgkJJzsKCQkJfQoJCQkkdG1wb3V0cHV0IC49ICcKCTwvaXRlbT4KCSc7CgkJfQoJCQoJCWlmKCR0bXBvdXRwdXQgIT0gJycpCSRvdXRwdXQgLj0gJwo8dGFibGUgbmFtZT0ibXVsdGlwbGVmaWxlc2ZpZWxkcyI+CgknLiR0bXBvdXRwdXQuJwo8L3RhYmxlPgoKJzsKCgoKCS8vIGV4cG9ydGluZyBsaXN0b3B0aW9ucyAoaWYgYW55KQoJCSR0bXBvdXRwdXQgPSAnJzsKCQkkcXVlcnkgPSAiU0VMRUNUICogRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlXyIuJHRoaXMtPkdldE5hbWUoKS4iX2ZpZWxkb3B0aW9ucyI7CgkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSk7CgkJd2hpbGUgKCAkZGJyZXN1bHQgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSApIHsKCQkJJHRtcG91dHB1dCAuPSAnPGl0ZW0+CgkJJzsKCQkJZm9yZWFjaCgkcm93IGFzICRmaWVsZD0+JHZhbHVlKXsKCQkJCSR0bXBvdXRwdXQgLj0gJzwnLiRmaWVsZC4nPjwhW0NEQVRBWycuc3RyaXBzbGFzaGVzKCR2YWx1ZSkuJ11dPjwvJy4kZmllbGQuJz4KCQknOwoJCQl9CgkJCSR0bXBvdXRwdXQgLj0gJwoJPC9pdGVtPgoJJzsKCQl9CgkJCgkJaWYoJHRtcG91dHB1dCAhPSAnJykJJG91dHB1dCAuPSAnCjx0YWJsZSBuYW1lPSJmaWVsZG9wdGlvbnMiPgoJJy4kdG1wb3V0cHV0LicKPC90YWJsZT4KCic7CgoKCgkKCWlmKGlzc2V0KCRwYXJhbXNbJ2V4cG9ydF90ZW1wbGF0ZXMnXSkgJiYgJHBhcmFtc1snZXhwb3J0X3RlbXBsYXRlcyddKXsKCQlmb3JlYWNoKCR0aGlzLT5MaXN0VGVtcGxhdGVzKCkgYXMgJHRwbG5hbWUpewoJCQkkb3V0cHV0IC49ICcKPHRlbXBsYXRlIG5hbWU9IicuJHRwbG5hbWUuJyI+PCFbQ0RBVEFbJy4kdGhpcy0+R2V0VGVtcGxhdGUoJHRwbG5hbWUpLiddXT48L3RlbXBsYXRlPgonOwoJCX0KCX0KCQoJaWYoJG91dHB1dCA9PSAnJyl7CgkJJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2V4cG9ydCcsICRyZXR1cm5pZCk7Cgl9ZWxzZXsKCQkkb3V0cHV0ID0gIjxyb290PiIuJG91dHB1dC4iPC9yb290PiI7CgkJCgkJJGhhbmRsZXJzID0gb2JfbGlzdF9oYW5kbGVycygpOyAKCQlmb3IgKCRjbnQgPSAwOyAkY250IDwgc2l6ZW9mKCRoYW5kbGVycyk7ICRjbnQrKykgeyBvYl9lbmRfY2xlYW4oKTsgfQkJCgoJCWhlYWRlcignUHJhZ21hOiBwdWJsaWMnKTsKCQloZWFkZXIoJ0V4cGlyZXM6IDAnKTsKCQloZWFkZXIoJ0NhY2hlLUNvbnRyb2w6IG11c3QtcmV2YWxpZGF0ZSwgcG9zdC1jaGVjaz0wLCBwcmUtY2hlY2s9MCcpOwoJCWhlYWRlcignQ2FjaGUtQ29udHJvbDogcHJpdmF0ZScsZmFsc2UpOwoJCWhlYWRlcignQ29udGVudC1EZXNjcmlwdGlvbjogRmlsZSBUcmFuc2ZlcicpOwoJCWhlYWRlcignQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi94bWwnKTsKCQloZWFkZXIoJ0NvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lPSInLiR0aGlzLT5HZXROYW1lKCkuJy54bWwiJyApOwoJCWhlYWRlcignQ29udGVudC1MZW5ndGg6ICcgLiBzdHJsZW4oJG91dHB1dCkpOwoJCgkJcHJpbnQoJG91dHB1dCk7CgkKCQlAZmx1c2goKTsgQG9iX2ZsdXNoKCk7IEBvYl9mbHVzaCgpOwoJfQkKCn1lbHNlewoJCgllY2hvICR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoJGlkLCAiZXhwb3J0IiwgJHJldHVybmlkKTsKCWVjaG8gJzxoMz4nLiR0aGlzLT5MYW5nKCdleHBvcnRfdGl0bGUnKS4nPC9oMz4nOwoJZWNobyAnPGZpZWxkc2V0PjxsZWdlbmQ+PGI+Jy4kdGhpcy0+TGFuZygnZXhwb3J0d2hpY2hsZXZlbHMnKS4nPC9iPjwvbGVnZW5kPic7CgkkY2hvaWNlcyA9IGFycmF5KCk7Cglmb3JlYWNoKCR0aGlzLT5nZXRfbGV2ZWxhcnJheSgpIGFzICRsZXZlbCkJJGNob2ljZXNbJGxldmVsXSA9ICRsZXZlbDsKCWVjaG8gJHRoaXMtPkRvQ2hlY2tib3hlcygkaWQsICdzZWxlY3RlZGxldmVscycsICRjaG9pY2VzLCAkY2hvaWNlcykuJzwvZmllbGRzZXQ+PGJyLz4nOwoJZWNobyAnPHA+Jy4kdGhpcy0+Q3JlYXRlSW5wdXRDaGVja2JveCgkaWQsImV4cG9ydF90ZW1wbGF0ZXMiLDEsMCkuJyAnLiR0aGlzLT5MYW5nKCdleHBvcnRfdGVtcGxhdGVzJykuJzwvcD4nOwoJZWNobyAnPHA+Jy4kdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAiZG9leHBvcnQiLCBsYW5nKCJzdWJtaXQiKSkuJzwvcD4nOwoJZWNobyAkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpOwkKCQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/action.import.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoIWlzc2V0KCRnQ21zKSkJZXhpdDsKCmVjaG8gJzxoMz4nLiR0aGlzLT5MYW5nKCdpbXBvcnRfdGl0bGUnKS4nPC9oMz4nOwoKaWYoaXNzZXQoJF9GSUxFUykgJiYgaXNzZXQoJF9GSUxFU1skaWQuJ3htbGZpbGUnXSkgJiYgaXNzZXQoJF9GSUxFU1skaWQuJ3htbGZpbGUnXVsnbmFtZSddKSAmJiAkX0ZJTEVTWyRpZC4neG1sZmlsZSddWyduYW1lJ10gIT0gJycpIHsKCQoJJHhtbCA9IGZpbGVfZ2V0X2NvbnRlbnRzKCAkX0ZJTEVTWyRpZC4neG1sZmlsZSddWyd0bXBfbmFtZSddICk7CgkkcGFyc2VyID0geG1sX3BhcnNlcl9jcmVhdGUoJycpOwoJeG1sX3BhcnNlcl9zZXRfb3B0aW9uKCRwYXJzZXIsIFhNTF9PUFRJT05fVEFSR0VUX0VOQ09ESU5HLCAnVVRGLTgnKTsKCXhtbF9wYXJzZXJfc2V0X29wdGlvbigkcGFyc2VyLCBYTUxfT1BUSU9OX0NBU0VfRk9MRElORywgMCk7Cgl4bWxfcGFyc2VyX3NldF9vcHRpb24oJHBhcnNlciwgWE1MX09QVElPTl9TS0lQX1dISVRFLCAxKTsKCgkkeG1sZGF0YSA9IGFycmF5KCk7Cgl4bWxfcGFyc2VfaW50b19zdHJ1Y3QoJHBhcnNlciwgdHJpbSgkeG1sKSwgJHhtbGRhdGEpOwoJeG1sX3BhcnNlcl9mcmVlKCRwYXJzZXIpOwoJaWYgKCEkeG1sZGF0YSkJJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2ltcG9ydCcsICRyZXR1cm5pZCwgYXJyYXkoJ21vZHVsZV9tZXNzYWdlJz0+JHRoaXMtPkxhbmcoJ2Vycm9yX2ludmFsaWR4bWwnKSkgKTsKCgkkdGFibGVzID0gYXJyYXkoKTsKCSR0ZW1wbGF0ZXMgPSBhcnJheSgpOwoJJGVudHJpZXMgPSAwOwoJJGN1cnJlbnR0YWJsZSA9IGZhbHNlOwoJJGN1cnJlbnRpdGVtID0gZmFsc2U7CgoJJGV4aXN0aW5nX3RhYmxlcyA9IGFycmF5X21lcmdlKCR0aGlzLT5nZXRfbGV2ZWxhcnJheSgpLCBhcnJheSgnZmllbGRvcHRpb25zJywgJ211bHRpcGxlZmlsZXNmaWVsZHMnKSk7CgkKCQoJZm9yZWFjaCAoJHhtbGRhdGEgYXMgJGRhdGEpIHsKCQlzd2l0Y2goJGRhdGFbJ3R5cGUnXSkgewoJCQljYXNlICdvcGVuJzoKCQkJCWlmKCRkYXRhWydsZXZlbCddID09IDIgJiYgJGRhdGFbJ3RhZyddID09ICd0YWJsZScgJiYgaXNzZXQoJGRhdGFbJ2F0dHJpYnV0ZXMnXSkgJiYgaXNzZXQoJGRhdGFbJ2F0dHJpYnV0ZXMnXVsnbmFtZSddKSApewoJCQkJCSR0YWJsZW5hbWUgPSAkZGF0YVsnYXR0cmlidXRlcyddWyduYW1lJ107CgkJCQkJaWYoaW5fYXJyYXkoJHRhYmxlbmFtZSwgJGV4aXN0aW5nX3RhYmxlcykpewoJCQkJCQkkdGFibGVzWyR0YWJsZW5hbWVdID0gYXJyYXkoKTsKCQkJCQkJJGN1cnJlbnR0YWJsZSA9ICR0YWJsZW5hbWU7CgkJCQkJfWVsc2V7CgkJCQkJCSRjdXJyZW50dGFibGUgPSBmYWxzZTsKCQkJCQl9CgkJCQl9ZWxzZWlmKCRkYXRhWydsZXZlbCddID09IDMgJiYgJGRhdGFbJ3RhZyddID09ICdpdGVtJyl7CgkJCQkJJGN1cnJlbnRpdGVtID0gYXJyYXkoKTsKCQkJCX0KCQkJCWJyZWFrOwoJCQljYXNlICdjbG9zZSc6CgkJCQlpZigkY3VycmVudHRhYmxlICYmICRjdXJyZW50aXRlbSAhPSBmYWxzZSAmJiAkZGF0YVsnbGV2ZWwnXSA9PSAzICYmICRkYXRhWyd0YWcnXSA9PSAnaXRlbScpewoJCQkJCWlmKGNvdW50KCRjdXJyZW50aXRlbSkgPiAwKXsKCQkJCQkJYXJyYXlfcHVzaCgkdGFibGVzWyRjdXJyZW50dGFibGVdLCAkY3VycmVudGl0ZW0pOwoJCQkJCQkkZW50cmllcysrOwoJCQkJCX0KCQkJCX0KCQkJCWJyZWFrOwoJCQljYXNlICdjb21wbGV0ZSc6CgkJCQlpZigkZGF0YVsnbGV2ZWwnXSA9PSA0KXsKCQkJCQkkY3VycmVudGl0ZW1bJGRhdGFbJ3RhZyddXSA9ICRkYXRhWyd2YWx1ZSddOwoJCQkJfWVsc2VpZigkZGF0YVsnbGV2ZWwnXSA9PSAxICYmICRkYXRhWyd0YWcnXSA9PSAndGVtcGxhdGUnICYmIGlzc2V0KCRkYXRhWydhdHRyaWJ1dGVzJ10pICYmIGlzc2V0KCRkYXRhWydhdHRyaWJ1dGVzJ11bJ25hbWUnXSkgKXsKCQkJCQkkdGVtcGxhdGVzWyRkYXRhWydhdHRyaWJ1dGVzJ11bJ25hbWUnXV0gPSAkZGF0YVsndmFsdWUnXTsKCQkJCX0KCQkJCWJyZWFrOwoJCX0KCX0KCglpZihjb3VudCgkdGFibGVzKSA9PSAwKQkkdGhpcy0+UmVkaXJlY3QoJGlkLCAnaW1wb3J0JywgJHJldHVybmlkLCBhcnJheSgnbW9kdWxlX21lc3NhZ2UnPT4kdGhpcy0+TGFuZygnZXJyb3JfaW52YWxpZHhtbCcpKSApOwoJCgkkX1NFU1NJT05bJ2N0bG1tX21vZHVsZWltcG9ydCddID0gYXJyYXkoKTsKCSRfU0VTU0lPTlsnY3RsbW1fbW9kdWxlaW1wb3J0J11bJ3RhYmxlcyddID0gJHRhYmxlczsKCSRfU0VTU0lPTlsnY3RsbW1fbW9kdWxlaW1wb3J0J11bJ3RlbXBsYXRlcyddID0gJHRlbXBsYXRlczsKCQoJZWNobyAkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwgImltcG9ydCIsICRyZXR1cm5pZCk7CgllY2hvICc8cD4nLiR0aGlzLT5MYW5nKCdpbXBvcnRfZW50cmllcycsJGVudHJpZXMpLic8L3A+JzsKCWVjaG8gJzxmaWVsZHNldD48bGVnZW5kPjxiPicuJHRoaXMtPkxhbmcoJ2ltcG9ydHdoaWNobGV2ZWxzJykuJzwvYj48L2xlZ2VuZD4nOwoJJGNob2ljZXMgPSBhcnJheSgpOwoJZm9yZWFjaCgkdGFibGVzIGFzICRrZXk9PiR2YWx1ZSl7CgkJaWYoY291bnQoJHZhbHVlKSA+MCkJJGNob2ljZXNbJGtleS4nICgnLmNvdW50KCR2YWx1ZSkuJyknXSA9ICRrZXk7Cgl9CgllY2hvICR0aGlzLT5Eb0NoZWNrYm94ZXMoJGlkLCAnc2VsZWN0ZWRsZXZlbHMnLCAkY2hvaWNlcywgJGNob2ljZXMpLic8L2ZpZWxkc2V0Pjxici8+JzsKCWlmKGNvdW50KCR0ZW1wbGF0ZXMpID4gMCkJZWNobyAnPHA+Jy4kdGhpcy0+Q3JlYXRlSW5wdXRDaGVja2JveCgkaWQsImltcG9ydF90ZW1wbGF0ZXMiLDEsMCkuJyAnLiR0aGlzLT5MYW5nKCdpbXBvcnRfdGVtcGxhdGVzJykuJzwvcD4nOwoJZWNobyAnPHA+Jy4kdGhpcy0+Q3JlYXRlSW5wdXRDaGVja2JveCgkaWQsImltcG9ydF9kZWxldGUiLDEsMCkuJyAnLiR0aGlzLT5MYW5nKCdpbXBvcnRfZGVsZXRlJykuJzwvcD4nOwoJZWNobyAnPHA+Jy4kdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAiZG9pbXBvcnQiLCBsYW5nKCJzdWJtaXQiKSkuJzwvcD4nOwoJZWNobyAkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpOwoKfWVsc2VpZihpc3NldCgkcGFyYW1zWydkb2ltcG9ydCddKSAmJiBpc3NldCgkX1NFU1NJT05bJ2N0bG1tX21vZHVsZWltcG9ydCddKSAmJiBpc3NldCgkcGFyYW1zWydzZWxlY3RlZGxldmVscyddKSl7CgoJJGRiID0mICR0aGlzLT5HZXREYigpOwoJJHRhYmxlcHJlZml4ID0gY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfIi4kdGhpcy0+R2V0TmFtZSgpLiJfIjsKCSRlcnJvcnMgPSAnJzsKCSRhZGRlZCA9IDA7CgkKCWlmKGlzc2V0KCRwYXJhbXNbJ2ltcG9ydF90ZW1wbGF0ZXMnXSkgJiYgJHBhcmFtc1snaW1wb3J0X3RlbXBsYXRlcyddICYmIGlzc2V0KCRfU0VTU0lPTlsnY3RsbW1fbW9kdWxlaW1wb3J0J11bJ3RlbXBsYXRlcyddKSApewoJCWZvcmVhY2goJF9TRVNTSU9OWydjdGxtbV9tb2R1bGVpbXBvcnQnXVsndGVtcGxhdGVzJ10gYXMgJHRwbG5hbWU9PiR0ZW1wbGF0ZSl7CgkJCSR0aGlzLT5TZXRUZW1wbGF0ZSgkdHBsbmFtZSwgJHRlbXBsYXRlKTsKCQl9Cgl9CgkKCSRkZWxldGUgPSAoaXNzZXQoJHBhcmFtc1snaW1wb3J0X2RlbGV0ZSddKSAmJiAkcGFyYW1zWydpbXBvcnRfZGVsZXRlJ10gKTsKCQoJZm9yZWFjaCgkcGFyYW1zWydzZWxlY3RlZGxldmVscyddIGFzICR0YWJsZW5hbWUpewoJCQoJCWlmKGlzX2NhbGxhYmxlKGFycmF5KCRkYiwnTWV0YUNvbHVtbk5hbWVzJykpKXsKCQkJJGV4aXN0aW5nX2ZpZWxkcyA9IGFycmF5KCk7CgkJCSRjb2x1bW5zID0gJGRiLT5NZXRhQ29sdW1uTmFtZXMoJHRhYmxlcHJlZml4LiR0YWJsZW5hbWUpOwoJCQlmb3JlYWNoKCRjb2x1bW5zIGFzICRjb2wpCWFycmF5X3B1c2goJGV4aXN0aW5nX2ZpZWxkcyxzdHJ0b2xvd2VyKCRjb2wpKTsKCQl9ZWxzZXsKCQkJJGNvbHVtbnMgPSBmYWxzZTsKCQl9CgkJCgkJJHByb2NlZWQgPSB0cnVlOwoJCSRoaWdoZXN0aWQgPSAwOwoJCWlmKGlzc2V0KCRfU0VTU0lPTlsnY3RsbW1fbW9kdWxlaW1wb3J0J11bJ3RhYmxlcyddWyR0YWJsZW5hbWVdKSl7CgkJCWlmKCRkZWxldGUpCSRkYi0+RXhlY3V0ZSgiVFJVTkNBVEUgVEFCTEUgIi4kdGFibGVwcmVmaXguJHRhYmxlbmFtZSk7CgkJCSR0YWJsZSA9ICRfU0VTU0lPTlsnY3RsbW1fbW9kdWxlaW1wb3J0J11bJ3RhYmxlcyddWyR0YWJsZW5hbWVdOwoJCQkkaSA9IDA7CgkJCXdoaWxlKCRwcm9jZWVkICYmICRpIDwgY291bnQoJHRhYmxlKSl7CgkJCQkkdmFsdWVzID0gYXJyYXkoKTsKCQkJCSRxdWVyeSA9ICcnOwoJCQkJZm9yZWFjaCgkdGFibGVbJGldIGFzICRrZXk9PiR2YWx1ZSl7CgkJCQkJaWYoICEkY29sdW1ucyB8fCBpbl9hcnJheSgka2V5LCRleGlzdGluZ19maWVsZHMpICl7CgkJCQkJCSRxdWVyeSAuPSAoJHF1ZXJ5PT0nJz8nJzonLCAnKS4iYCIuJGtleS4iYD0/IjsKCQkJCQkJJHZhbHVlc1tdID0gKCR2YWx1ZT09PU5VTEw/Jyc6JHZhbHVlKTsKCQkJCQl9CgkJCQl9CgkJCQkkcXVlcnkgPSAiSU5TRVJUIElOVE8gIi4kdGFibGVwcmVmaXguJHRhYmxlbmFtZS4iIFNFVCAiLiRxdWVyeTsKCQkJCWlmKCRkYi0+RXhlY3V0ZSgkcXVlcnksJHZhbHVlcykpewoJCQkJCWlmKGlzc2V0KCR0YWJsZVskaV1bJ2lkJ10pICYmICR0YWJsZVskaV1bJ2lkJ10gPiAkaGlnaGVzdGlkKQkkaGlnaGVzdGlkID0gJHRhYmxlWyRpXVsnaWQnXTsKCQkJCQkkYWRkZWQrKzsKCQkJCX1lbHNlewoJCQkJCSRwcm9jZWVkID0gZmFsc2U7CgkJCQkJJGVycm9ycyAuPSAoJGVycm9ycz09Jyc/Jyc6JywgJykuJHRhYmxlbmFtZTsKCQkJCX0JCgkJCQkkaSsrOwoJCQl9CgkJfQoJCSRjdXJyZW50aWQgPSAwOwoJCXdoaWxlKCRjdXJyZW50aWQgPCAkaGlnaGVzdGlkKXsKCQkJJGN1cnJlbnRpZCA9ICRkYi0+R2VuSUQoJHRhYmxlcHJlZml4LiR0YWJsZW5hbWUuJ19zZXEnKTsKCQl9Cgl9CgkKCWlmKGlzc2V0KCRfU0VTU0lPTlsnY3RsbW1fbW9kdWxlaW1wb3J0J11bJ3RhYmxlcyddWydtdWx0aXBsZWZpbGVzZmllbGRzJ10pKXsKCQkkdGFibGVuYW1lID0gIm11bHRpcGxlZmlsZXNmaWVsZHMiOwoJCSRwcm9jZWVkID0gdHJ1ZTsKCQkkaGlnaGVzdGlkID0gMDsKCQlpZigkZGVsZXRlKQkkZGItPkV4ZWN1dGUoIlRSVU5DQVRFIFRBQkxFICIuJHRhYmxlcHJlZml4LiR0YWJsZW5hbWUpOwoJCSR0YWJsZSA9ICRfU0VTU0lPTlsnY3RsbW1fbW9kdWxlaW1wb3J0J11bJ3RhYmxlcyddWyR0YWJsZW5hbWVdOwoJCSRpID0gMDsKCQl3aGlsZSgkcHJvY2VlZCAmJiAkaSA8IGNvdW50KCR0YWJsZSkpewoJCQkkdmFsdWVzID0gYXJyYXkoKTsKCQkJJHF1ZXJ5ID0gJyc7CgkJCWZvcmVhY2goJHRhYmxlWyRpXSBhcyAka2V5PT4kdmFsdWUpewoJCQkJaWYoICEkY29sdW1ucyB8fCBpbl9hcnJheSgka2V5LCRleGlzdGluZ19maWVsZHMpICl7CgkJCQkJJHF1ZXJ5IC49ICgkcXVlcnk9PScnPycnOicsICcpLiJgIi4ka2V5LiJgPT8iOwoJCQkJCSR2YWx1ZXNbXSA9ICgkdmFsdWU9PT1OVUxMPycnOiR2YWx1ZSk7CgkJCQl9CgkJCX0KCQkJJHF1ZXJ5ID0gIklOU0VSVCBJTlRPICIuJHRhYmxlcHJlZml4LiR0YWJsZW5hbWUuIiBTRVQgIi4kcXVlcnk7CgkJCWlmKCRkYi0+RXhlY3V0ZSgkcXVlcnksJHZhbHVlcykpewoJCQkJaWYoaXNzZXQoJHRhYmxlWyRpXVsnZmlsZWlkJ10pICYmICR0YWJsZVskaV1bJ2ZpbGVpZCddID4gJGhpZ2hlc3RpZCkJJGhpZ2hlc3RpZCA9ICR0YWJsZVskaV1bJ2ZpbGVpZCddOwoJCQkJJGFkZGVkKys7CgkJCX1lbHNlewoJCQkJJHByb2NlZWQgPSBmYWxzZTsKCQkJCSRlcnJvcnMgLj0gKCRlcnJvcnM9PScnPycnOicsICcpLiR0YWJsZW5hbWU7CgkJCX0JCgkJCSRpKys7CgkJfQoJCSRjdXJyZW50aWQgPSAwOwoJCXdoaWxlKCRjdXJyZW50aWQgPCAkaGlnaGVzdGlkKXsKCQkJJGN1cnJlbnRpZCA9ICRkYi0+R2VuSUQoJHRhYmxlcHJlZml4LiR0YWJsZW5hbWUuJ19zZXEnKTsKCQl9CQkKCQkKCX0KCQoJaWYoaXNzZXQoJF9TRVNTSU9OWydjdGxtbV9tb2R1bGVpbXBvcnQnXVsndGFibGVzJ11bJ2ZpZWxkb3B0aW9ucyddKSl7CgkJJHRhYmxlbmFtZSA9ICJmaWVsZG9wdGlvbnMiOwoJCSRwcm9jZWVkID0gdHJ1ZTsKCQkkaGlnaGVzdGlkID0gMDsKCQlpZigkZGVsZXRlKQkkZGItPkV4ZWN1dGUoIlRSVU5DQVRFIFRBQkxFICIuJHRhYmxlcHJlZml4LiR0YWJsZW5hbWUpOwoJCSR0YWJsZSA9ICRfU0VTU0lPTlsnY3RsbW1fbW9kdWxlaW1wb3J0J11bJ3RhYmxlcyddWyR0YWJsZW5hbWVdOwoJCSRpID0gMDsKCQl3aGlsZSgkcHJvY2VlZCAmJiAkaSA8IGNvdW50KCR0YWJsZSkpewoJCQkkdmFsdWVzID0gYXJyYXkoKTsKCQkJJHF1ZXJ5ID0gJyc7CgkJCWZvcmVhY2goJHRhYmxlWyRpXSBhcyAka2V5PT4kdmFsdWUpewoJCQkJaWYoICEkY29sdW1ucyB8fCBpbl9hcnJheSgka2V5LCRleGlzdGluZ19maWVsZHMpICl7CgkJCQkJJHF1ZXJ5IC49ICgkcXVlcnk9PScnPycnOicsICcpLiJgIi4ka2V5LiJgPT8iOwoJCQkJCSR2YWx1ZXNbXSA9ICgkdmFsdWU9PT1OVUxMPycnOiR2YWx1ZSk7CgkJCQl9CgkJCX0KCQkJJHF1ZXJ5ID0gIklOU0VSVCBJTlRPICIuJHRhYmxlcHJlZml4LiR0YWJsZW5hbWUuIiBTRVQgIi4kcXVlcnk7CgkJCWlmKCRkYi0+RXhlY3V0ZSgkcXVlcnksJHZhbHVlcykpewoJCQkJaWYoaXNzZXQoJHRhYmxlWyRpXVsnaWQnXSkgJiYgJHRhYmxlWyRpXVsnaWQnXSA+ICRoaWdoZXN0aWQpCSRoaWdoZXN0aWQgPSAkdGFibGVbJGldWydpZCddOwoJCQkJJGFkZGVkKys7CgkJCX1lbHNlewoJCQkJZWNobyBteXNxbF9lcnJvcigpOwoJCQkJJHByb2NlZWQgPSBmYWxzZTsKCQkJCSRlcnJvcnMgLj0gKCRlcnJvcnM9PScnPycnOicsICcpLiR0YWJsZW5hbWU7CgkJCX0JCgkJCSRpKys7CgkJfQoJCSRjdXJyZW50aWQgPSAwOwoJCXdoaWxlKCRjdXJyZW50aWQgPCAkaGlnaGVzdGlkKXsKCQkJJGN1cnJlbnRpZCA9ICRkYi0+R2VuSUQoJHRhYmxlcHJlZml4LiR0YWJsZW5hbWUuJ19zZXEnKTsKCQl9CQkKCQkKCX0KCQoJdW5zZXQoJF9TRVNTSU9OWydjdGxtbV9tb2R1bGVpbXBvcnQnXSk7CgkKCSRtZXNzYWdlID0gJHRoaXMtPkxhbmcoJ2ltcG9ydF9kb25lJywkYWRkZWQpOwoJaWYoJGVycm9ycyAhPSAnJykgJG1lc3NhZ2UgLj0gJzxici8+Jy4kdGhpcy0+TGFuZygnY291bGRub3RpbXBvcnQnKS4kZXJyb3JzOwoJJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwgYXJyYXkoJ21vZHVsZV9tZXNzYWdlJz0+JG1lc3NhZ2UpICk7Cgp9ZWxzZXsKCgllY2hvICc8cD4nLiR0aGlzLT5MYW5nKCdpbXBvcnRfZmlsZXByb21wdCcpLic8L3A+JzsKCWVjaG8gJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCgkaWQsICdpbXBvcnQnLCAkcmV0dXJuaWQsICdwb3N0JywgJ211bHRpcGFydC9mb3JtLWRhdGEnKTsKCWVjaG8gJHRoaXMtPkNyZWF0ZUZpbGVVcGxvYWRJbnB1dCgkaWQsJ3htbGZpbGUnKS4nICcuJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwnc3VibWl0JyxsYW5nKCdzZW5kJykpOwoJZWNobyAkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpOwkKCQp9Cgo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/action.movesomething.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmlmICghaXNzZXQoJGdDbXMpKSBleGl0Ow0KDQokbmV3cGFyYW1zID0gaXNzZXQoJHBhcmFtc1sibGV2ZWxuYW1lIl0pP2FycmF5KCJhY3RpdmVfdGFiIj0+JHBhcmFtc1sibGV2ZWxuYW1lIl0pOmFycmF5KCk7DQoNCmlmICghaXNzZXQoJHBhcmFtc1sibW92ZSJdKSB8fCAhaXNzZXQoJHBhcmFtc1sidGFibGVuYW1lIl0pIHx8ICFpc3NldCgkcGFyYW1zWyJwcmVmaXgiXSkgfHwgIWlzc2V0KCRwYXJhbXNbImN1cnJlbnRvcmRlciJdKSApDQokdGhpcy0+UmVkaXJlY3QoJGlkLCAiZGVmYXVsdGFkbWluIiwgJHJldHVybmlkLCAkbmV3cGFyYW1zKTsNCg0KJGRiID0mICR0aGlzLT5HZXREYigpOw0KJGRidGFibGUgPSBjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV8iLiRwYXJhbXNbInRhYmxlbmFtZSJdOw0KJG9yZGVyID0gJHBhcmFtc1siY3VycmVudG9yZGVyIl07DQokaXRlbWlkID0gJHBhcmFtc1skcGFyYW1zWyJwcmVmaXgiXS4iaWQiXTsNCiR3cGFyZW50ID0gaXNzZXQoJHBhcmFtc1sicGFyZW50Il0pPyIgQU5EIHBhcmVudD0nIi4kcGFyYW1zWyJwYXJlbnQiXS4iJyI6IiI7DQoNCnN3aXRjaCgkcGFyYW1zWyJtb3ZlIl0pew0KCQ0KCWNhc2UgImRlbGV0ZSI6DQoJCWlmKGlzc2V0KCRwYXJhbXNbInNoYXJlY2hpbGRyZW4iXSkgJiYgJHBhcmFtc1sic2hhcmVjaGlsZHJlbiJdKXsNCgkJCS8vIHRoaXMgbGV2ZWwgc2hhcmUgaXRzIGNoaWxkcmVuLi4uIHdlIGRlbGV0ZSB0aGUgaXRlbSdzIGxpbmtzIHRvIGNoaWxkcmVuDQoJCQlpZigkY2hpbGRsZXZlbCA9ICR0aGlzLT5nZXRfbmV4dGxldmVsKCRwYXJhbXNbImxldmVsbmFtZSJdKSl7DQoJCQkJJGxpbmt0YWJsZSA9ICRkYnRhYmxlLiJfaGFzXyIuJGNoaWxkbGV2ZWw7DQoJCQkJJHF1ZXJ5ID0gIkRFTEVURSBGUk9NICRsaW5rdGFibGUgV0hFUkUgIi4kcGFyYW1zWyJsZXZlbG5hbWUiXS4iX2lkPT8iOw0KCQkJCSRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRpdGVtaWQpKTsNCgkJCX0NCgkJfWVsc2VpZihpc3NldCgkcGFyYW1zWyJjaGlsZCJdKSAmJiAkcGFyYW1zWyJjaGlsZCJdICE9ICIiKXsNCgkJCS8vIHRoaXMgbGV2ZWwgZG9lc24ndCBzaGFyZSBpdHMgY2hpbGRyZW4uLi4gd2UgZGVsZXRlIHRoZSBpdGVtJ3MgY2hpbGRyZW4NCgkJCSRjaGlsZHRhYmxlID0gY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfIi4kcGFyYW1zWyJjaGlsZCJdOw0KCQkJJHF1ZXJ5ID0gIkRFTEVURSBGUk9NICRjaGlsZHRhYmxlIFdIRVJFIHBhcmVudCA9ID8iOw0KCQkJJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGl0ZW1pZCkpOw0KCQl9DQoJCWlmKGlzc2V0KCRwYXJhbXNbInNoYXJlZGJ5cGFyZW50cyJdKSAmJiAkcGFyYW1zWyJzaGFyZWRieXBhcmVudHMiXSl7DQoJCQkvLyB0aGlzIGl0ZW0gaXMgc2hhcmVkIGJ5IGl0cyBwYXJlbnRzLi4uIHdlIGRlbGV0ZSBsaW5rcyBmcm9tIHBhcmVudHMgdG8gdGhpcyBjaGlsZA0KCQkJaWYoJHBhcmVudGxldmVsID0gJHRoaXMtPmdldF9uZXh0bGV2ZWwoJHBhcmFtc1sibGV2ZWxuYW1lIl0sIGZhbHNlKSl7DQoJCQkJJGxpbmt0YWJsZSA9IGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3ZpbWVvcGxheWVyXyIuJHBhcmVudGxldmVsLiJfaGFzXyIuJHBhcmFtc1sibGV2ZWxuYW1lIl07DQoJCQkJJHF1ZXJ5ID0gIkRFTEVURSBGUk9NICRsaW5rdGFibGUgV0hFUkUgIi4kcGFyYW1zWyJsZXZlbG5hbWUiXS4iX2lkPT8iOw0KCQkJCSRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRpdGVtaWQpKTsNCgkJCX0NCgkJfQ0KCQkNCgkJaWYoaXNzZXQoJHBhcmFtc1siZmlsZXMiXSkgJiYgJHBhcmFtc1siZmlsZXMiXSAhPSAiIiAmJiAkdGhpcy0+R2V0UHJlZmVyZW5jZSgiZGVsZXRlX2ZpbGVzIixmYWxzZSkgKXsNCgkJCSRmaWxlZmllbGRzID0gZXhwbG9kZSgiLCIsJHBhcmFtc1siZmlsZXMiXSk7DQoJCQkkcXVlcnkgPSAiU0VMRUNUICogRlJPTSAkZGJ0YWJsZSBXSEVSRSBpZCA9ID8iOw0KCQkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGl0ZW1pZCkpOw0KCQkJaWYoJGRicmVzdWx0ICYmICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpew0KCQkJCWZvcmVhY2goJGZpbGVmaWVsZHMgYXMgJGZpZWxkKXsNCgkJCQkJaWYoJHJvd1skZmllbGRdICE9ICIiICYmICRyb3dbJGZpZWxkXSAhPSAiLyIpew0KCQkJCQkJJGZpbGVwYXRoID0gJGdDbXMtPmNvbmZpZ1sidXBsb2Fkc19wYXRoIl0uKHN1YnN0cigkcm93WyJmaWxlcGF0aCJdLDAsMSk9PSIvIj8iIjoiLyIpLiRyb3dbJGZpZWxkXTsNCgkJCQkJCSR0bXBleHAgPSBleHBsb2RlKCIvIiwkcm93WyRmaWVsZF0pOw0KCQkJCQkJJGZpbGVuYW1lID0gJHRtcGV4cFtjb3VudCgkdG1wZXhwKSAtMV07DQoJCQkJCQkkdGh1bWJwYXRoID0gc3RyX3JlcGxhY2UoJGZpbGVuYW1lLCJwbHRodW1iXyIuJGZpbGVuYW1lLCRmaWxlcGF0aCk7DQoJCQkJCQlpZihmaWxlX2V4aXN0cygkdGh1bWJwYXRoKSkJdW5saW5rKCR0aHVtYnBhdGgpOw0KCQkJCQkJaWYoZmlsZV9leGlzdHMoJGZpbGVwYXRoKSkJdW5saW5rKCRmaWxlcGF0aCk7DQoJCQkJCX0NCgkJCQl9DQoJCQl9DQoJCX0NCgkJLy8gaWYgdGhlIGxldmVsIGhhcyBmaWVsZHMgb2YgdGhlIHR5cGUgIlVuZGVmaW5lZCBhbW91bnQgb2YgZmlsZXMiLCB3ZSBkZWxldGUgdGhlIGZpbGVzDQoJCWlmKGlzc2V0KCRwYXJhbXNbImFkZGZpbGVzIl0pICYmICRwYXJhbXNbImFkZGZpbGVzIl0gIT0gIiIpew0KCQkJJGZpZWxkcyA9IGV4cGxvZGUoIiwiLCRwYXJhbXNbImFkZGZpbGVzIl0pOw0KCQkJaWYoY291bnQoJGZpZWxkcykgPiAwKXsNCgkJCQkkd2hlcmUgPSAiIjsNCgkJCQkkdmFsdWVzID0gYXJyYXkoKTsNCgkJCQlmb3JlYWNoKCRmaWVsZHMgYXMgJGZpZWxkKXsNCgkJCQkJJHdoZXJlIC49ICgkd2hlcmUgPT0gIiI/IiI6IiBPUiAiKS4iIGZpZWxkbmFtZT0/IjsNCgkJCQkJJHZhbHVlc1tdID0gJGZpZWxkOw0KCQkJCX0NCgkJCQkkYWRkZmlsZXN0YWJsZSA9IGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3ZpbWVvcGxheWVyX211bHRpcGxlZmlsZXNmaWVsZHMiOw0KDQoJCQkJaWYoJHRoaXMtPkdldFByZWZlcmVuY2UoImRlbGV0ZV9maWxlcyIsZmFsc2UpKXsNCgkJCQkJJHF1ZXJ5ID0gIlNFTEVDVCAqIEZST00gJGFkZGZpbGVzdGFibGUgV0hFUkUgKCR3aGVyZSkgQU5EIGl0ZW1pZD0iLiRpdGVtaWQ7DQoJCQkJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksICR2YWx1ZXMpOw0KCQkJCQl3aGlsZSgkZGJyZXN1bHQgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSl7DQoJCQkJCQkkZmlsZXBhdGggPSAkZ0Ntcy0+Y29uZmlnWyJ1cGxvYWRfcGF0aCJdLihzdWJzdHIoJHJvd1siZmlsZXBhdGgiXSwwLDEpPT0iLyI/IiI6Ii8iKS4kcm93WyJmaWxlcGF0aCJdOw0KCQkJCQkJaWYoZmlsZV9leGlzdHMoJGZpbGVwYXRoKSkJdW5saW5rKCRmaWxlcGF0aCk7DQoJCQkJCX0NCgkJCQl9DQoJCQkJJHF1ZXJ5ID0gIkRFTEVURSBGUk9NICRhZGRmaWxlc3RhYmxlIFdIRVJFICgkd2hlcmUpIEFORCBpdGVtaWQ9Ii4kaXRlbWlkOw0KCQkJCSRkYi0+RXhlY3V0ZSgkcXVlcnksICR2YWx1ZXMpOw0KCQkJfQ0KCQl9DQoJCQkNCgkJDQoJCSRxdWVyeSA9ICJERUxFVEUgRlJPTSAkZGJ0YWJsZSBXSEVSRSBpZCA9ID8gTElNSVQgMSI7DQoJCSRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRpdGVtaWQpKTsNCg0KCQkvLyBVUERBVEUgVEhFIE9SREVSIE9GIFRIRSBJVEVNUw0KCQkkcXVlcnkgPSAiVVBEQVRFICRkYnRhYmxlIFNFVCBpdGVtX29yZGVyPShpdGVtX29yZGVyLTEpIFdIRVJFIGl0ZW1fb3JkZXIgPiA/ICIuJHdwYXJlbnQ7DQoJCSRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRvcmRlcikpOw0KDQoJCWlmKGlzc2V0KCRwYXJhbXNbImxldmVsbmFtZSJdKSkJJHRoaXMtPlNlbmRFdmVudCgidmltZW9wbGF5ZXJfZGVsZXRlZCIsIGFycmF5KCJ3aGF0Ij0+JHBhcmFtc1sibGV2ZWxuYW1lIl0pKTsNCgkJJG5ld3BhcmFtc1sibW9kdWxlX21lc3NhZ2UiXSA9ICR0aGlzLT5sYW5nKCJtZXNzYWdlX2RlbGV0ZWQiKTsNCgkJYnJlYWs7CQ0KDQoJY2FzZSAidXAiOg0KCQlpZiAoJG9yZGVyICE9IDEpew0KCQkJJHF1ZXJ5ID0gIlVQREFURSAkZGJ0YWJsZSBTRVQgaXRlbV9vcmRlcj0oaXRlbV9vcmRlcisxKSBXSEVSRSBpdGVtX29yZGVyID0gPyAkd3BhcmVudCBMSU1JVCAxOyI7DQoJCQkkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkb3JkZXItMSkpOw0KCQkJJHF1ZXJ5ID0gIlVQREFURSAkZGJ0YWJsZSBTRVQgaXRlbV9vcmRlcj0oaXRlbV9vcmRlci0xKSBXSEVSRSBpZCA9ID8gTElNSVQgMTsiOw0KCQkJJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGl0ZW1pZCkpOw0KCQl9DQoJCWJyZWFrOw0KCQkNCgljYXNlICJkb3duIjoNCgkJJHF1ZXJ5ID0gIlVQREFURSAkZGJ0YWJsZSBTRVQgaXRlbV9vcmRlcj0oaXRlbV9vcmRlci0xKSBXSEVSRSBpdGVtX29yZGVyID0gPyAkd3BhcmVudCBMSU1JVCAxOyI7DQoJCWlmKCAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkb3JkZXIrMSkpICl7DQoJCQkkcXVlcnkgPSAiVVBEQVRFICRkYnRhYmxlIFNFVCBpdGVtX29yZGVyPShpdGVtX29yZGVyKzEpIFdIRVJFIGlkID0gPyBMSU1JVCAxOyI7DQoJCQkkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkaXRlbWlkKSk7DQoJCX0NCgkJYnJlYWs7DQp9DQoNCiR0aGlzLT5SZWRpcmVjdCgkaWQsICJkZWZhdWx0YWRtaW4iLCAkcmV0dXJuaWQsICRuZXdwYXJhbXMpOw0KPz4=]]></data>
	</file>
	<file>
	  <filename>/action.reorder.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoIWlzc2V0KCRnQ21zKSkgZXhpdDsKCiRkYiA9ICR0aGlzLT5HZXREYigpOwokbGV2ZWxhcnJheSA9ICR0aGlzLT5nZXRfbGV2ZWxhcnJheSgpOwokb3JkZXJlZGJ5cGFyZW50ID0gYXJyYXkoImNhdGVnb3J5IiwidmlkZW8iKTsKaWYoaXNzZXQoJHBhcmFtc1siY2FuY2VsIl0pKXsKCSR0aGlzLT5SZWRpcmVjdCgkaWQsImRlZmF1bHRhZG1pbiIsJHJldHVybmlkKTsKfWVsc2VpZihpc3NldCgkcGFyYW1zWyJzdWJtaXRyZW9yZGVyIl0pKXsKCWV4cGxvZGUoIiwiLCRwYXJhbXNbIm5ld29yZGVyIl0pOwoJJG9yZGVyID0gYXJyYXkoKTsKCSRsYXN0aWQgPSBhcnJheSgpOwoJZm9yZWFjaChleHBsb2RlKCIsIiwkcGFyYW1zWyJuZXdvcmRlciJdKSBhcyAkaXRlbSl7CgkJbGlzdCgkbGV2ZWwsJGl0ZW1pZCkgPSBleHBsb2RlKCJfIiwkaXRlbSk7CgkJJGxhc3RpZFskbGV2ZWxdID0gJGl0ZW1pZDsKCQlpZighaXNzZXQoJG9yZGVyWyRsZXZlbF0pKQkkb3JkZXJbJGxldmVsXT1hcnJheSgpOwoJCWlmKCRsZXZlbD09MSl7CgkJCSRvcmRlclsxXVtdPSRpdGVtaWQ7CgkJfWVsc2V7CgkJCWlmKCFpc3NldCgkb3JkZXJbJGxldmVsXVskbGFzdGlkWyRsZXZlbC0xXV0pKQkkb3JkZXJbJGxldmVsXVskbGFzdGlkWyRsZXZlbC0xXV09YXJyYXkoKTsKCQkJJG9yZGVyWyRsZXZlbF1bJGxhc3RpZFskbGV2ZWwtMV1dW10gPSAkaXRlbWlkOwoJCX0KCX0KCWZvcmVhY2goJG9yZGVyIGFzICRrZXk9PiRpdGVtcyl7CgkJJGxldmVsID0gJGxldmVsYXJyYXlbJGtleS0xXTsKCQkkaXRlbV9vcmRlciA9IDE7CgkJaWYoJGtleT09MSl7CgkJCWZvcmVhY2goJGl0ZW1zIGFzICRpdGVtKXsKCQkJCSRxdWVyeSA9ICJVUERBVEUgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV92aW1lb3BsYXllcl8iLiRsZXZlbC4iIFNFVCBpdGVtX29yZGVyPT8gV0hFUkUgaWQ9PyBMSU1JVCAxIjsKCQkJCSRkYi0+RXhlY3V0ZSgkcXVlcnksYXJyYXkoJGl0ZW1fb3JkZXIsJGl0ZW0pKTsKCQkJCSRpdGVtX29yZGVyKys7CgkJCX0KCQl9ZWxzZXsKCQkJZm9yZWFjaCgkaXRlbXMgYXMgJHBhcmVudD0+JGNoaWxkcmVuKXsKCQkJCWlmKGluX2FycmF5KCRsZXZlbCwgJG9yZGVyZWRieXBhcmVudCkpCSRpdGVtX29yZGVyID0gMTsKCQkJCWZvcmVhY2goJGNoaWxkcmVuIGFzICRjaGlsZCl7CgkJCQkJJHF1ZXJ5ID0gIlVQREFURSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3ZpbWVvcGxheWVyXyIuJGxldmVsLiIgU0VUIGl0ZW1fb3JkZXI9PyBXSEVSRSBpZD0/IExJTUlUIDEiOwoJCQkJCSRkYi0+RXhlY3V0ZSgkcXVlcnksYXJyYXkoJGl0ZW1fb3JkZXIsJGNoaWxkKSk7CgkJCQkJJGl0ZW1fb3JkZXIrKzsKCQkJCX0KCQkJfQkJCQoJCQkJCgkJfQoJCQoJfQoJJHRoaXMtPlJlZGlyZWN0KCRpZCwiZGVmYXVsdGFkbWluIiwkcmV0dXJuaWQsYXJyYXkoIm1vZHVsZV9tZXNzYWdlIj0+JHRoaXMtPkxhbmcoIm1lc3NhZ2VfbW9kaWZpZWQiKSkpOwp9CgplY2hvICI8aDE+Ii4kdGhpcy0+TGFuZygicmVvcmRlciIpLiI8L2gxPiI7CiRpID0gMDsKJHNlbGVjdCA9ICIiOwokdGFibGVzID0gIiI7CiRvcmRlciA9ICIiOwp3aGlsZSgkaSA8IGNvdW50KCRsZXZlbGFycmF5KSl7CgkkbGV2ZWwgPSAkbGV2ZWxhcnJheVskaV07CgkkaSsrOwoJJHNlbGVjdCAuPSAoJHNlbGVjdD09IiI/IiI6IiwgIikuInRhYmxlIi4kaS4iLmlkIHRhYmxlIi4kaS4iX2lkLCB0YWJsZSIuJGkuIi5uYW1lIHRhYmxlIi4kaS4iX25hbWUiOwoJaWYoJGkgPT0gMSl7CgkJJHRhYmxlcyA9IGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3ZpbWVvcGxheWVyXyIuJGxldmVsLiIgdGFibGUiLiRpOwoJfWVsc2V7CgkJJHRhYmxlcyAuPSAiIExFRlQgSk9JTiAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3ZpbWVvcGxheWVyXyIuJGxldmVsLiIgdGFibGUiLiRpLiAiIE9OIHRhYmxlIi4oJGktMSkuIi5pZD10YWJsZSIuJGkuIi5wYXJlbnQiOwoJfQoJJG9yZGVyIC49ICgkb3JkZXI9PSIiPyIiOiIsICIpLiJ0YWJsZSIuJGkuIi5pdGVtX29yZGVyIjsKfQokcXVlcnkgPSAiU0VMRUNUICRzZWxlY3QgRlJPTSAkdGFibGVzIE9SREVSIEJZICRvcmRlciI7CiRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkpOwoKJGxhc3QgPSBhcnJheSgpOwokbGlzdHMgPSBhcnJheSgpOwokY29udGFpbm1lbnQgPSBhcnJheSgpOwokcGFyc2VsZXZlbCA9IDE7CmVjaG8gJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCgkaWQsICJyZW9yZGVyIiwgJHJldHVybmlkLCAncG9zdCcsICcnLCBmYWxzZSwgJycsIGFycmF5KCksICcgb25zdWJtaXQ9InJldHVybiBjdGxtbV9zdWJtaXRfcmVvcmRlcigpOyInKTsKd2hpbGUoJHBhcnNlbGV2ZWwgPD0gJGkpewoJJGxhc3RbJHBhcnNlbGV2ZWxdID0gZmFsc2U7CgkkbGlzdHNbJHBhcnNlbGV2ZWxdID0gYXJyYXkoKTsKCSRjb250YWlubWVudFskcGFyc2VsZXZlbF0gPSAiIjsKCSRwYXJzZWxldmVsKys7Cn0KZWNobyAiPHA+Ii4kdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCJzdWJtaXRyZW9yZGVyIixsYW5nKCJzdWJtaXQiKSkuIiAiLiR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsInJlc2V0b3JkZXIiLCR0aGlzLT5MYW5nKCJyZXNldG9yZGVyIikpLiIgIi4kdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCJjYW5jZWwiLGxhbmcoImNhbmNlbCIpKS4iPC9wPiI7CiRjdXJyZW50bGV2ZWwgPSAxOwplY2hvICc8dWwgY2xhc3M9InNvcnRhYmxlTGlzdCIgaWQ9ImN0bG1tX2JpZ3NvcnRsaXN0Ij4nOwp3aGlsZSgkZGJyZXN1bHQgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSl7CgkkcGFyc2VsZXZlbCA9IDE7Cgl3aGlsZSgkcGFyc2VsZXZlbCA8PSAkaSl7CgkJaWYoJHJvd1sidGFibGUiLiRwYXJzZWxldmVsLiJfaWQiXSAhPSAkbGFzdFskcGFyc2VsZXZlbF0pewoJCQlpZigkY3VycmVudGxldmVsID09ICRwYXJzZWxldmVsKXsKCQkJCWlmKCRsYXN0WyRjdXJyZW50bGV2ZWxdKQllY2hvICI8L2xpPiI7CgkJCX1lbHNlaWYoJGN1cnJlbnRsZXZlbCA+ICRwYXJzZWxldmVsKXsKCQkJCXdoaWxlKCRjdXJyZW50bGV2ZWwgPiAkcGFyc2VsZXZlbCl7CgkJCQkJZWNobyAiPC9saT48L3VsPjwvbGk+IjsKCQkJCQkkY3VycmVudGxldmVsLS07CgkJCQl9CgkJCX1lbHNlaWYoJGN1cnJlbnRsZXZlbCA8ICRwYXJzZWxldmVsKXsKCQkJCSRsaXN0aWQgPSAibGlzdF8iLiRsZXZlbGFycmF5WyRwYXJzZWxldmVsXS4iXyIuJHJvd1sidGFibGUiLiRwYXJzZWxldmVsLiJfaWQiXTsKCQkJCSRjdXJyZW50bGV2ZWwrKzsKCQkJCWVjaG8gJzx1bCBpZD0iJy4kbGlzdGlkLiciIGNsYXNzPSJzb3J0YWJsZUxpc3QiPic7CgkJCQkkbGlzdHNbJHBhcnNlbGV2ZWxdW10gPSAkbGlzdGlkOwoJCQkJJGNvbnRhaW5tZW50WyRwYXJzZWxldmVsXSAuPSAoJGNvbnRhaW5tZW50WyRwYXJzZWxldmVsXT09IiI/IiI6IiwiKS4nIicuJGxpc3RpZC4nIic7CgkJCX0KCQkJZWNobyAnPGxpIGlkPSJjdGxtbWxldmVsJy4kcGFyc2VsZXZlbC4nXycuJHJvd1sidGFibGUiLiRwYXJzZWxldmVsLiJfaWQiXS4nIj4nLiRyb3dbInRhYmxlIi4kcGFyc2VsZXZlbC4iX25hbWUiXTsKCQkJJGxhc3RbJHBhcnNlbGV2ZWxdID0gJHJvd1sidGFibGUiLiRwYXJzZWxldmVsLiJfaWQiXTsKCQl9CgkJJHBhcnNlbGV2ZWwrKzsKCX0KfQplY2hvICI8L2xpPiI7CndoaWxlKCRjdXJyZW50bGV2ZWwgPiAxKXsKCWVjaG8gIjwvdWw+PC9saT4iOwoJJGN1cnJlbnRsZXZlbC0tOwp9CmVjaG8gIjwvdWw+IjsKZWNobyAiPHA+Ii4kdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCJzdWJtaXRyZW9yZGVyIixsYW5nKCJzdWJtaXQiKSkuIiAiLiR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsInJlc2V0b3JkZXIiLCR0aGlzLT5MYW5nKCJyZXNldG9yZGVyIikpLiIgIi4kdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCJjYW5jZWwiLGxhbmcoImNhbmNlbCIpKS4iPC9wPiI7CmVjaG8gJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwibmV3b3JkZXIiLCIiLCcgaWQ9ImN0bG1tX25ld29yZGVyIicpOwplY2hvICR0aGlzLT5DcmVhdGVGb3JtRW5kKCk7CgokcmVzdHJpY3RlZCA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCJyZXN0cmljdF9wZXJtaXNzaW9ucyIsZmFsc2UpOwppZigkcmVzdHJpY3RlZCAmJiAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCJ2aW1lb3BsYXllcl9hZHZhbmNlZCIpKQkkcmVzdHJpY3RlZCA9IGZhbHNlOwoKZWNobyAnPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgonOwppZighJHJlc3RyaWN0ZWQgfHwgJHRoaXMtPkNoZWNrUGVybWlzc2lvbigicHJvZGNhdGFsb2d1ZV9tYW5hZ2VfIi4kbGV2ZWxhcnJheVswXSkpCWVjaG8gJ1NvcnRhYmxlLmNyZWF0ZSgiY3RsbW1fYmlnc29ydGxpc3QiKTsKJzsKCmZvcmVhY2goJGxpc3RzIGFzICRsZXZlbG51bWJlcj0+JGxldmVsKXsKCWlmKCEkcmVzdHJpY3RlZCB8fCAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCJ2aW1lb3BsYXllcl9tYW5hZ2VfIi4kbGV2ZWxhcnJheVskbGV2ZWxudW1iZXItMV0pKXsKCQlmb3JlYWNoKCRsZXZlbCBhcyAkbGlzdCl7CgkJCS8qCgkJCSAqIHdlIGRvbid0IHVzZSBjb250YWlubWVudCB5ZXQgYmVjYXVzZSB3ZSBkb24ndCB3YW50IHRvIGRlYWwgd2l0aCBjaGFuZ2luZyBwYXJlbnRzLi4uIHlldC4uLgoJCQkgKiBlY2hvICdTb3J0YWJsZS5jcmVhdGUoIicuJGxpc3QuJyInLihjb3VudCgkbGV2ZWwpPjE/Iix7Y29udGFpbm1lbnQ6WyIuJGNvbnRhaW5tZW50WyRsZXZlbG51bWJlcl0uIl0sIGRyb3BPbkVtcHR5OmZhbHNlfSI6IiIpLiIpOwoJCQkgKiAiOwoJCQkgKi8KCQkJZWNobyAnU29ydGFibGUuY3JlYXRlKCInLiRsaXN0LiciKTsKCSc7CgkJfQoJfQp9CmVjaG8gJwpmdW5jdGlvbiBjdGxtbV9zdWJtaXRfcmVvcmRlcigpewoJdmFyIG5ld29yZGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImN0bG1tX25ld29yZGVyIik7Cgl2YXIgbGlzdG5vZGVzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImN0bG1tX2JpZ3NvcnRsaXN0IikuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImxpIik7Cglmb3IoaT0wO2k8bGlzdG5vZGVzLmxlbmd0aDtpKyspewoJCWlmKG5ld29yZGVyLnZhbHVlICE9ICIiKSBuZXdvcmRlci52YWx1ZSArPSAiLCI7CgkJbmV3b3JkZXIudmFsdWUgKz0gbGlzdG5vZGVzW2ldLmlkLnN1YnN0cigxMCk7Cgl9CglyZXR1cm4gdHJ1ZTsJCn0KZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIicuJGlkLidtb2R1bGVmb3JtXzEiKS5vbnN1Ym1pdCA9IGZ1bmN0aW9uKCl7CglyZXR1cm4gY3RsbW1fc3VibWl0X3Jlb3JkZXIoKTsKfQo8L3NjcmlwdD4nOwoKPz4=]]></data>
	</file>
	<file>
	  <filename>/action.search.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoIWlzc2V0KCRnQ21zKSkgZXhpdDsKCiRsZXZlbGFycmF5ID0gJHRoaXMtPmdldF9sZXZlbGFycmF5KCk7CiRmaW5hbGxldmVsID0gInZpZGVvIjsKCiRzZWFyY2htb2RlID0gKGlzc2V0KCRwYXJhbXNbInNlYXJjaG1vZGUiXSkgJiYgaW5fYXJyYXkoJHBhcmFtc1sic2VhcmNobW9kZSJdLCBhcnJheSgic2ltcGxlIiwiYWR2YW5jZWQiKSkpPyRwYXJhbXNbInNlYXJjaG1vZGUiXToiYWR2YW5jZWQiOwoKaWYoaXNzZXQoJHBhcmFtc1sic3VibWl0c2VhcmNoIl0pKXsKCS8vICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCS8vICMgU0VBUkNIIFJFU1VMVFMKCSRpbmxpbmUgPSAoaXNzZXQoJHBhcmFtc1siaW5saW5lIl0pICYmICRwYXJhbXNbImlubGluZSJdKT90cnVlOmZhbHNlOwoJJGxpbmtyZXR1cm5pZCA9IChpc3NldCgkcGFyYW1zWyJkZXRhaWxwYWdlIl0pKT8kdGhpcy0+Z2V0X3BhZ2VpZCgkcGFyYW1zWyJkZXRhaWxwYWdlIl0pOmZhbHNlOwoJaWYoISRsaW5rcmV0dXJuaWQpCSRsaW5rcmV0dXJuaWQgPSAkcmV0dXJuaWQ7Cgkkd2hhdCA9ICRwYXJhbXNbIndoYXQiXTsKCSRtdWx0aXBsZWxpc3RmaWVsZHMgPSBhcnJheSgpOwoJCglpZigkc2VhcmNobW9kZSA9PSAiYWR2YW5jZWQiKXsKCQkvLyBBRFZBTkNFRCBTRUFSQ0gKCQkKCQkkZGIgPSAkdGhpcy0+R2V0RGIoKTsKCQkKCQkvLyB3ZSBwYXJzZSB0aGUga2V5d29yZHMKCQkkd2hlcmUgPSAkdGhpcy0+Z2V0V2hlcmVGcm9tUGFyYW1zKCRwYXJhbXMsIHRydWUpOwoJCWxpc3QoJHdoZXJlY2xhdXNlLCAkd2hlcmV2YWx1ZXMpID0gJHRoaXMtPmJ1aWxkV2hlcmUoJHdoZXJlLCAkd2hhdCk7CgkJCgkJJGdldGZ1bmN0aW9uID0gImdldF9sZXZlbF8iLiR3aGF0OwoJCS8vIHdlIGRvIHRoZSBxdWVyeQoJCSRpdGVtbGlzdCA9ICR0aGlzLT4kZ2V0ZnVuY3Rpb24oYXJyYXkoKSwgZmFsc2UsICIiLCAiIiwgaXNzZXQoJHBhcmFtc1sib3JkZXJieSJdKT8kcGFyYW1zWyJvcmRlcmJ5Il06MCwgaXNzZXQoJHBhcmFtc1sibGltaXQiXSk/JHBhcmFtc1sibGltaXQiXTowLCAkd2hlcmVjbGF1c2UsICR3aGVyZXZhbHVlcyk7CgkJCgkJaWYoY291bnQoJGl0ZW1saXN0KSA+IDApewoJCQkkZm91bmRzb21ldGhpbmcgPSB0cnVlOwoJCQkKCQkJLy8gY2hlY2sgaWYgd2UgbXVzdCBzZXBhcmF0ZSBpbnRvIHBhZ2VzCgkJCSRpdGVtbGlzdCA9ICR0aGlzLT5zcGxpdF9pbnRvX3BhZ2VzKCRpdGVtbGlzdCwgJGlkLCAkcmV0dXJuaWQsICRwYXJhbXMsICJzZWFyY2giLCBmYWxzZSk7CgkJCQoJCQkvLyB3ZSBtdXN0IGJ1aWxkIGEgZGV0YWlsIGxpbmsgZm9yIGVhY2ggcmVzdWx0IGVsZW1lbnQKCQkJJG5ld2xpc3QgPSBhcnJheSgpOwoJCQlmb3JlYWNoKCRpdGVtbGlzdCBhcyAkaXRlbSl7CgkJCQkkaXRlbSA9ICR0aGlzLT5hZGRmcm9udGVuZHVybHMoJGl0ZW0sJHBhcmFtcywkaWQsJGxpbmtyZXR1cm5pZCk7CgkJCQkkaXRlbS0+aXNfc2VsZWN0ZWQgPSBmYWxzZTsKCQkJCWFycmF5X3B1c2goJG5ld2xpc3QsICRpdGVtKTsKCQkJfQoJCQkKCQkJLy8gd2UgcmV0cmlldmUgdGhlIGRpc3BsYXkgdGVtcGxhdGUKCQkJaWYoaXNzZXQoJHBhcmFtc1sibGlzdHRlbXBsYXRlIl0pKQkJJHRlbXBsYXRlID0gJHRoaXMtPkdldFRlbXBsYXRlKCRwYXJhbXNbImxpc3R0ZW1wbGF0ZSJdLCAkdGhpcy0+R2V0TmFtZSgpKTsKCQkJaWYoIWlzc2V0KCR0ZW1wbGF0ZSkgfHwgISR0ZW1wbGF0ZSl7CgkJCQkkdGVtcGxhdGVuYW1lID0gJHRoaXMtPkdldFByZWZlcmVuY2UoInNlYXJjaHJlc3VsdHN0ZW1wbGF0ZSIsIioqIik7CgkJCQlpZigkdGVtcGxhdGVuYW1lID09ICIqKiIpCSR0ZW1wbGF0ZW5hbWUgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgibGlzdHRlbXBsYXRlXyIuJHdoYXQpOwoJCQkJJHRlbXBsYXRlID0gJHRoaXMtPkdldFRlbXBsYXRlKCR0ZW1wbGF0ZW5hbWUsICR0aGlzLT5HZXROYW1lKCkpOwoJCQl9CgoJCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oIml0ZW1saXN0IiwkbmV3bGlzdCk7CgkJCSR0aGlzLT5zbWFydHktPmFzc2lnbigibGV2ZWx0aXRsZSIsJHRoaXMtPkxhbmcoJHdoYXQuIl9wbHVyYWwiKSk7CgkJCSR0aGlzLT5zbWFydHktPmFzc2lnbigiYnJlYWRjcnVtYnMiLGZhbHNlKTsKCQkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJwYXJlbnRvYmoiLGZhbHNlKTsKCQkJZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlRnJvbURhdGEoJHRlbXBsYXRlKTsKCQkJCgkJfWVsc2V7CgkJCSRmb3VuZHNvbWV0aGluZyA9IGZhbHNlOwoJCX0KCX1lbHNlewoJCS8vIFNJTVBMRSBTRUFSQ0gKCQkKCQkkZm91bmRzb21ldGhpbmcgPSBmYWxzZTsKCQkkdGVtcGxhdGUgPSBmYWxzZTsKCQkkbGV2ZWxzID0gKCR3aGF0ID09ICItYWxsIik/JGxldmVsYXJyYXk6YXJyYXkoJHdoYXQpOwoJCQoJCS8vIHdlIHJldHJpZXZlIHRoZSBkaXNwbGF5IHRlbXBsYXRlCgkJLy8gaWYgdGhlIHVzZXIgaGFzIGFza2VkIGZvciBhIHNwZWNpZmljIGRpc3BsYXkgdGVtcGxhdGUsIHdlIHdpbGwgdXNlIGl0IGZvciBldmVyeSBjYXRlZ29yeSA6CgkJaWYoaXNzZXQoJHBhcmFtc1sibGlzdHRlbXBsYXRlIl0pKQkJJHRlbXBsYXRlID0gJHRoaXMtPkdldFRlbXBsYXRlKCRwYXJhbXNbImxpc3R0ZW1wbGF0ZSJdLCAkdGhpcy0+R2V0TmFtZSgpKTsKCQlpZighaXNzZXQoJHRlbXBsYXRlKSB8fCAhJHRlbXBsYXRlKXsKCQkJJHRlbXBsYXRlbmFtZSA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCJzZWFyY2hyZXN1bHRzdGVtcGxhdGUiLCIqKiIpOwoJCQlpZigkdGVtcGxhdGVuYW1lID09ICIqKiIpewoJCQkJaWYoY291bnQoJGxldmVscykgPT0gMSl7CgkJCQkJJHRlbXBsYXRlbmFtZSA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCJsaXN0dGVtcGxhdGVfIi4kbGV2ZWxzWzBdKTsKCQkJCQkkdGVtcGxhdGUgPSAkdGhpcy0+R2V0VGVtcGxhdGUoJHRlbXBsYXRlbmFtZSwgJHRoaXMtPkdldE5hbWUoKSk7CgkJCQl9ZWxzZXsKCQkJCQkkdGVtcGxhdGUgPSBmYWxzZTsKCQkJCX0KCQkJfWVsc2V7CgkJCQkkdGVtcGxhdGUgPSAkdGhpcy0+R2V0VGVtcGxhdGUoJHRlbXBsYXRlbmFtZSwgJHRoaXMtPkdldE5hbWUoKSk7CgkJCX0KCQl9CgoJCQoJCWZvcmVhY2goJGxldmVscyBhcyAkbGV2ZWwpewoJCQkkd2hlcmVjbGF1c2UgPSAiIjsKCQkJJGZpZWxkcyA9ICR0aGlzLT5nZXRfbGV2ZWxzZWFyY2hmaWVsZHMoJGxldmVsKTsKCQkJJGtleXdvcmRzID0gJHRoaXMtPnBhcnNla2V5d29yZHMoaHRtbF9lbnRpdHlfZGVjb2RlKCRwYXJhbXNbInNlYXJjaGZpZWxkIl0pKTsKCQkJZm9yZWFjaCgkZmllbGRzIGFzICRmaWVsZCl7CgkJCQlmb3JlYWNoKCRrZXl3b3JkcyBhcyAka2V5d29yZCl7CgkJCQkJJHdoZXJlY2xhdXNlIC49ICgkd2hlcmVjbGF1c2UgPT0gIiI/IiI6IiBPUiAiKS4iQS4iLiRmaWVsZC4iIExJS0UgJyUiLmFkZHNsYXNoZXMoJGtleXdvcmQpLiIlJyI7CgkJCQl9CgkJCX0KCQkJJHdoZXJlY2xhdXNlID0gIkEuYWN0aXZlPTEiLigkd2hlcmVjbGF1c2UgPT0gIiI/IiI6IiBBTkQgKCIuJHdoZXJlY2xhdXNlLiIpIik7CgkJCSRnZXRmdW5jdGlvbiA9ICJnZXRfbGV2ZWxfIi4kbGV2ZWw7CgkJCSRpdGVtbGlzdCA9ICR0aGlzLT4kZ2V0ZnVuY3Rpb24oYXJyYXkoKSwgZmFsc2UsICIiLCAiIiwgaXNzZXQoJHBhcmFtc1sib3JkZXJieSJdKT8kcGFyYW1zWyJvcmRlcmJ5Il06MCwgaXNzZXQoJHBhcmFtc1sibGltaXQiXSk/JHBhcmFtc1sibGltaXQiXTowLCAkd2hlcmVjbGF1c2UpOwoJCQkKCQkJaWYoY291bnQoJGl0ZW1saXN0KSA+IDApewoKCQkJCS8vIGNoZWNrIGlmIHdlIG11c3Qgc2VwYXJhdGUgaW50byBwYWdlcwoJCQkJJGl0ZW1saXN0ID0gJHRoaXMtPnNwbGl0X2ludG9fcGFnZXMoJGl0ZW1saXN0LCAkaWQsICRyZXR1cm5pZCwgJHBhcmFtcywgInNlYXJjaCIsIGZhbHNlKTsKCQkJCQoJCQkJJGZvdW5kc29tZXRoaW5nID0gdHJ1ZTsKCQkJCS8vIHdlIG11c3QgYnVpbGQgYSBkZXRhaWwgbGluayBmb3IgZWFjaCByZXN1bHQgZWxlbWVudAoJCQkJJG5ld2xpc3QgPSBhcnJheSgpOwoJCQkJZm9yZWFjaCgkaXRlbWxpc3QgYXMgJGl0ZW0pewoJCQkJCSRpdGVtID0gJHRoaXMtPmFkZGZyb250ZW5kdXJscygkaXRlbSwkcGFyYW1zLCRpZCwkbGlua3JldHVybmlkKTsKCQkJCQkkaXRlbS0+aXNfc2VsZWN0ZWQgPSBmYWxzZTsKCQkJCQlhcnJheV9wdXNoKCRuZXdsaXN0LCAkaXRlbSk7CgkJCQl9CgkJCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oIml0ZW1saXN0IiwkbmV3bGlzdCk7CgkJCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oImxldmVsdGl0bGUiLCR0aGlzLT5MYW5nKCRsZXZlbC4iX3BsdXJhbCIpKTsKCQkJCSR0aGlzLT5zbWFydHktPmFzc2lnbigiYnJlYWRjcnVtYnMiLGZhbHNlKTsKCQkJCSR0aGlzLT5zbWFydHktPmFzc2lnbigicGFyZW50b2JqIixmYWxzZSk7CgkJCQkKCQkJCWlmKCR0ZW1wbGF0ZSA9PSBGQUxTRSl7CgkJCQkJZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCJzZWFyY2hfZ2VuZXJhbHJlc3VsdHMudHBsIik7CgkJCQl9ZWxzZXsKCQkJCQllY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGVGcm9tRGF0YSgkdGVtcGxhdGUpOwkJCQkKCQkJCX0KCQkJCQoJCQl9CgkJfQoJCQoJfQoJCgkvLyB3ZSBkaXNwbGF5IHRoZSAiZG8gYW5vdGhlciBzZWFyY2giIGxpbmssIGtlZXBpbmcgdGhlIHNlYXJjaCBwYXJhbWV0ZXJzCgkkbmV3cGFyYW1zID0gYXJyYXkoIndoYXQiPT4kd2hhdCwgInNlYXJjaG1vZGUiPT4kc2VhcmNobW9kZSk7CglpZihpc3NldCgkcGFyYW1zWyJsaXN0dGVtcGxhdGUiXSkpCSRuZXdwYXJhbXNbImxpc3R0ZW1wbGF0ZSJdID0gJHBhcmFtc1sibGlzdHRlbXBsYXRlIl07CglpZihpc3NldCgkcGFyYW1zWyJsaW1pdCJdKSkJCQkkbmV3cGFyYW1zWyJsaW1pdCJdID0gJHBhcmFtc1sibGltaXQiXTsKCWlmKGlzc2V0KCRwYXJhbXNbImlubGluZSJdKSkJCSRuZXdwYXJhbXNbImlubGluZSJdID0gJHBhcmFtc1siaW5saW5lIl07CglpZihpc3NldCgkcGFyYW1zWyJvcmRlcmJ5Il0pKQkJJG5ld3BhcmFtc1sib3JkZXJieSJdID0gJHBhcmFtc1sib3JkZXJieSJdOwoJaWYoaXNzZXQoJHBhcmFtc1sibmJwZXJwYWdlIl0pKQkJJG5ld3BhcmFtc1sibmJwZXJwYWdlIl0gPSAkcGFyYW1zWyJuYnBlcnBhZ2UiXTsKCWlmKGlzc2V0KCRwYXJhbXNbImRldGFpbHBhZ2UiXSkpCSRuZXdwYXJhbXNbImRldGFpbHBhZ2UiXSA9ICRwYXJhbXNbImRldGFpbHBhZ2UiXTsKCgkkYmFja2xpbmsgPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICJzZWFyY2giLCAkcmV0dXJuaWQsICR0aGlzLT5MYW5nKCJzZWFyY2hhZ2FpbiIpLCAkbmV3cGFyYW1zLCAiIiwgZmFsc2UsICRpbmxpbmUsICIiLCBmYWxzZSwgZmFsc2UpOwoJaWYoJGZvdW5kc29tZXRoaW5nKXsKCQllY2hvICI8cD4iLiRiYWNrbGluay4iPC9wPiI7Cgl9ZWxzZXsKCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oImVycm9yX21zZyIsKGlzc2V0KCRwYXJhbXNbImFsaWFzIl0pPyR0aGlzLT5MYW5nKCJlcnJvcl9ub3Rmb3VuZCIpOiR0aGlzLT5MYW5nKCJlcnJvcl9ub2l0ZW1mb3VuZCIpKSk7CgkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJiYWNrbGluayIsZmFsc2UpOwoJCWVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgibm9yZXN1bHQudHBsIik7Cgl9CgoJLy8gIyBFTkQgU0VBUkNIIFJFU1VMVFMKCS8vICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCn1lbHNlewoJCgkvLyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgkvLyAjIFNFQVJDSCBGT1JNCQoJCgkkd2hhdCA9IChpc3NldCgkcGFyYW1zWyJ3aGF0Il0pICYmIGluX2FycmF5KCRwYXJhbXNbIndoYXQiXSwkbGV2ZWxhcnJheSkpPyRwYXJhbXNbIndoYXQiXToiLWFsbCI7CglpZigkc2VhcmNobW9kZSA9PSAiYWR2YW5jZWQiICYmICR3aGF0ID09ICItYWxsIikJCSR3aGF0ID0gJGZpbmFsbGV2ZWw7CgoJZWNobyAkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwgInNlYXJjaCIsICRyZXR1cm5pZCk7CgllY2hvICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsICJ3aGF0IiwgJHdoYXQpOwoJZWNobyAkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCAic2VhcmNobW9kZSIsICRzZWFyY2htb2RlKTsKCWlmKGlzc2V0KCRwYXJhbXNbImxpc3R0ZW1wbGF0ZSJdKSkJZWNobyAkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCAibGlzdHRlbXBsYXRlIiwgJHBhcmFtc1sibGlzdHRlbXBsYXRlIl0pOwoJaWYoaXNzZXQoJHBhcmFtc1sibGltaXQiXSkpCWVjaG8gJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwgImxpbWl0IiwgJHBhcmFtc1sibGltaXQiXSk7CglpZihpc3NldCgkcGFyYW1zWyJpbmxpbmUiXSkpCWVjaG8gJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwgImlubGluZSIsICRwYXJhbXNbImlubGluZSJdKTsKCWlmKGlzc2V0KCRwYXJhbXNbIm9yZGVyYnkiXSkpCWVjaG8gJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwgIm9yZGVyYnkiLCAkcGFyYW1zWyJvcmRlcmJ5Il0pOwoJaWYoaXNzZXQoJHBhcmFtc1sibmJwZXJwYWdlIl0pKQkJZWNobyAkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCAibmJwZXJwYWdlIiwgJHBhcmFtc1sibmJwZXJwYWdlIl0pOwoJaWYoaXNzZXQoJHBhcmFtc1siZGV0YWlscGFnZSJdKSkJZWNobyAkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCAiZGV0YWlscGFnZSIsICRwYXJhbXNbImRldGFpbHBhZ2UiXSk7CgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oInNlYXJjaHRpdGxlIiwgJHRoaXMtPkxhbmcoInNlYXJjaHRpdGxlIikpOwoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJ3aGF0IiwgKCR3aGF0ID09ICItYWxsIik/ZmFsc2U6JHRoaXMtPkxhbmcoJHdoYXQpKTsKCSR0aGlzLT5zbWFydHktPmFzc2lnbigic3VibWl0IiwgJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgInN1Ym1pdHNlYXJjaCIsICR0aGlzLT5MYW5nKCJzZWFyY2hidG4iKSkpOwoKCWlmKCRzZWFyY2htb2RlID09ICJzaW1wbGUiKXsKCQkvLyBXRSBBUkUgRE9JTkcgQSBTSU1QTEUgU0VBUkNICgkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJzZWFyY2hmaWVsZCIsICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCJzZWFyY2hmaWVsZCIsIiIsNTApKTsKCQllY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoInNlYXJjaC50cGwiKTsKCQkKCX1lbHNlewoJCS8vIFdFIEFSRSBET0lORyBBTiBBRFZBTkNFRCBTRUFSQ0gKCgkJJHRoaXMtPmNyZWF0ZUZpZWxkRm9ybSgkd2hhdCwgJGlkLCB0cnVlKTsKCgkJZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCJzZWFyY2hfIi4kd2hhdC4iLnRwbCIpOwoJCQoJfQoJCgllY2hvICR0aGlzLT5DcmVhdGVGb3JtRW5kKCk7CgkKCS8vICMgRU5EIFNFQVJDSCBGT1JNCgkvLyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCQoJCn0KPz4=]]></data>
	</file>
	<file>
	  <filename>/action.sitemap.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoIWlzc2V0KCRnQ21zKSkgZXhpdDsKCiRsZXZlbGFycmF5ID0gJHRoaXMtPmdldF9sZXZlbGFycmF5KCk7CiRtb2RlID0gKGlzc2V0KCRwYXJhbXNbIm1vZGUiXSkgJiYgaW5fYXJyYXkoJHBhcmFtc1sibW9kZSJdLGFycmF5KCJnb29nbGUiLCJ1cmxsaXN0IiwiZnJvbnRlbmQiKSkpPyRwYXJhbXNbIm1vZGUiXToiZnJvbnRlbmQiOwokd2hhdCA9IGlzc2V0KCRwYXJhbXNbIndoYXQiXSk/ZXhwbG9kZSgnfCcsJHBhcmFtc1sid2hhdCJdKTokbGV2ZWxhcnJheTsKJGxpbmtyZXR1cm5pZCA9IChpc3NldCgkcGFyYW1zWyJkZXRhaWxwYWdlIl0pKT8kdGhpcy0+Z2V0X3BhZ2VpZCgkcGFyYW1zWyJkZXRhaWxwYWdlIl0pOiRyZXR1cm5pZDsKJGlubGluZSA9IChpc3NldCgkcGFyYW1zWyJpbmxpbmUiXSkgJiYgJHBhcmFtc1siaW5saW5lIl0pP3RydWU6ZmFsc2U7CgokZGIgPSAkdGhpcy0+R2V0RGIoKTsKJGkgPSAwOwokc2VsZWN0ID0gIiI7CiR0YWJsZXMgPSAiIjsKJG9yZGVyID0gIiI7CndoaWxlKCRpIDwgY291bnQoJGxldmVsYXJyYXkpKXsKCSRsZXZlbCA9ICRsZXZlbGFycmF5WyRpXTsKCSRpKys7Cgkkc2VsZWN0IC49ICgkc2VsZWN0PT0iIj8iIjoiLCAiKS4idGFibGUiLiRpLiIuYWxpYXMgdGFibGUiLiRpLiJfYWxpYXMsIHRhYmxlIi4kaS4iLm5hbWUgdGFibGUiLiRpLiJfbmFtZSI7CglpZigkaSA9PSAxKXsKCQkkdGFibGVzID0gY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfIi4kdGhpcy0+R2V0TmFtZSgpLiJfIi4kbGV2ZWwuIiB0YWJsZSIuJGk7Cgl9ZWxzZXsKCQkkdGFibGVzIC49ICIgTEVGVCBKT0lOICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfIi4kdGhpcy0+R2V0TmFtZSgpLiJfIi4kbGV2ZWwuIiB0YWJsZSIuJGkuICIgT04gdGFibGUiLigkaS0xKS4iLmlkPXRhYmxlIi4kaS4iLnBhcmVudCI7Cgl9Cgkkb3JkZXIgLj0gKCRvcmRlcj09IiI/IiI6IiwgIikuInRhYmxlIi4kaS4iLml0ZW1fb3JkZXIiOwp9CiRxdWVyeSA9ICJTRUxFQ1QgJHNlbGVjdCBGUk9NICR0YWJsZXMgT1JERVIgQlkgJG9yZGVyIjsKJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSk7CgokbGFzdCA9IGFycmF5KCk7CiRjdXJyZW50bGV2ZWwgPSAxOwppZigkbW9kZSA9PSAnZnJvbnRlbmQnKQllY2hvICc8dWwgaWQ9IicuJHRoaXMtPkdldE5hbWUoKS4nX21hcCI+JzsKd2hpbGUoJGRicmVzdWx0ICYmICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpewoJJHBhcnNlbGV2ZWwgPSAxOwoJd2hpbGUoJHBhcnNlbGV2ZWwgPD0gJGkpewoJCWlmKGluX2FycmF5KCRsZXZlbGFycmF5WyRwYXJzZWxldmVsLTFdLCR3aGF0KSAmJiAoIWlzc2V0KCRsYXN0WyRwYXJzZWxldmVsXSkgfHwgJHJvd1sidGFibGUiLiRwYXJzZWxldmVsLiJfYWxpYXMiXSAhPSAkbGFzdFskcGFyc2VsZXZlbF0pICl7CgkJCSR3YW50ZWR3aGF0ID0gKCRwYXJzZWxldmVsPT0kaSk/JGxldmVsYXJyYXlbJGktMV06JGxldmVsYXJyYXlbJHBhcnNlbGV2ZWxdOwoJCQkkd2FudGVkcGFyYW0gPSAoJHBhcnNlbGV2ZWw9PSRpKT8iYWxpYXMiOiJwYXJlbnQiOwoJCQkkbmV3cGFyYW1zID0gYXJyYXkoIndoYXQiPT4kd2FudGVkd2hhdCwgJHdhbnRlZHBhcmFtPT4kcm93WyJ0YWJsZSIuJHBhcnNlbGV2ZWwuIl9hbGlhcyJdKTsKCQkJJHByZXR0eXVybCA9ICR0aGlzLT5CdWlsZFByZXR0eVVybHMoJG5ld3BhcmFtcywgJGxpbmtyZXR1cm5pZCk7CgkJCWlmKCRtb2RlID09ICdmcm9udGVuZCcpewoJCQkJaWYoJGN1cnJlbnRsZXZlbCA9PSAkcGFyc2VsZXZlbCl7CgkJCQkJaWYoJGxhc3RbJGN1cnJlbnRsZXZlbF0pCWVjaG8gIjwvbGk+IjsKCQkJCX1lbHNlaWYoJGN1cnJlbnRsZXZlbCA+ICRwYXJzZWxldmVsKXsKCQkJCQl3aGlsZSgkY3VycmVudGxldmVsID4gJHBhcnNlbGV2ZWwpewoJCQkJCQllY2hvICI8L2xpPjwvdWw+PC9saT4iOwoJCQkJCQkkY3VycmVudGxldmVsLS07CgkJCQkJfQoJCQkJfWVsc2VpZigkY3VycmVudGxldmVsIDwgJHBhcnNlbGV2ZWwpewoJCQkJCSRjdXJyZW50bGV2ZWwrKzsKCQkJCQllY2hvICc8dWw+JzsKCQkJCX0KCQkJCWVjaG8gJzxsaT4nLiR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgImRlZmF1bHQiLCAkbGlua3JldHVybmlkLCAkcm93WyJ0YWJsZSIuJHBhcnNlbGV2ZWwuIl9uYW1lIl0sICRuZXdwYXJhbXMsICIiLCBmYWxzZSwgJGlubGluZSwgIiIsIGZhbHNlLCAkcHJldHR5dXJsKTsKCQkJfWVsc2VpZigkbW9kZSA9PSAndXJsbGlzdCcpewoJCQkJZWNobyAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICJkZWZhdWx0IiwgJGxpbmtyZXR1cm5pZCwgIiIsICRuZXdwYXJhbXMsICIiLCB0cnVlLCAkaW5saW5lLCAiIiwgZmFsc2UsICRwcmV0dHl1cmwpLicKJzsKCQkJfWVsc2VpZigkbW9kZSA9PSAnZ29vZ2xlJyl7CgkJCQkkcHJpb3JpdHkgPSA5IC0gJHBhcnNlbGV2ZWw7CgkJCQlpZigkcHJpb3JpdHkgPCAwKQkkcHJpb3JpdHkgPSAxOwoJCQkJJHByaW9yaXR5ID0gIjAuIi4kcHJpb3JpdHk7CgkJCQllY2hvICcKCTx1cmw+CgkJPGxvYz4nLiR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgImRlZmF1bHQiLCAkbGlua3JldHVybmlkLCAiIiwgJG5ld3BhcmFtcywgIiIsIHRydWUsICRpbmxpbmUsICIiLCBmYWxzZSwgJHByZXR0eXVybCkuJzwvbG9jPgoJCTxwcmlvcml0eT4nLiRwcmlvcml0eS4nPC9wcmlvcml0eT4KCTwvdXJsPic7CgkJCX0KCQkJCgkJCSRsYXN0WyRwYXJzZWxldmVsXSA9ICRyb3dbInRhYmxlIi4kcGFyc2VsZXZlbC4iX2FsaWFzIl07CgkJfQoJCSRwYXJzZWxldmVsKys7Cgl9Cn0KaWYoJG1vZGUgPT0gJ2Zyb250ZW5kJyl7CgllY2hvICI8L2xpPiI7Cgl3aGlsZSgkY3VycmVudGxldmVsID4gMSl7CgkJZWNobyAiPC91bD48L2xpPiI7CgkJJGN1cnJlbnRsZXZlbC0tOwoJfQoJZWNobyAiPC91bD4iOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/action.toggle.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCi8qIFBBUkFNUyA6DQp3aGF0KiA6ICdhY3RpdmUnIHx8ICdkZWZhdWx0Jw0KdGFibGVuYW1lKg0KcHJlZml4DQpwcmVmaXguaWQNCm5ld3ZhbCA6IG5ldyB2YWx1ZSBmb3IgYWN0aXZlICggMCB8fCAxICkNCiovDQoNCmlmICghaXNzZXQoJGdDbXMpKSBleGl0Ow0KDQokbmV3cGFyYW1zID0gaXNzZXQoJHBhcmFtc1snbGV2ZWxuYW1lJ10pP2FycmF5KCdhY3RpdmVfdGFiJz0+JHBhcmFtc1snbGV2ZWxuYW1lJ10pOmFycmF5KCk7DQoNCmlmKCAhaXNzZXQoJHBhcmFtc1snd2hhdCddKSB8fCAhaXNzZXQoJHBhcmFtc1sndGFibGVuYW1lJ10pICkJJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwgJG5ld3BhcmFtcyk7DQoNCiRkYiA9JiAkdGhpcy0+R2V0RGIoKTsNCiRkYnRhYmxlID0gY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfJy4kcGFyYW1zWyd0YWJsZW5hbWUnXTsNCiRmaWVsZCA9ICRwYXJhbXNbJ3doYXQnXTsNCiRpdGVtaWQgPSBpc3NldCgkcGFyYW1zWydwcmVmaXgnXSk/JHBhcmFtc1skcGFyYW1zWydwcmVmaXgnXS4naWQnXTpmYWxzZTsNCiR2YWx1ZSA9IGlzc2V0KCRwYXJhbXNbJ25ld3ZhbCddKT8kcGFyYW1zWyduZXd2YWwnXToxOw0KDQppZigkZmllbGQgPT0gJ2FjdGl2ZScpew0KCSRxdWVyeSA9ICJVUERBVEUgJGRidGFibGUgU0VUIGFjdGl2ZT0/IFdIRVJFIGlkPT8gTElNSVQgMSI7DQoJJGRiLT5FeGVjdXRlKCRxdWVyeSxhcnJheSgkdmFsdWUsICRpdGVtaWQpKTsNCn1lbHNlaWYoJGZpZWxkID09ICdkZWZhdWx0Jyl7DQoJaWYoaXNzZXQoJHBhcmFtc1sicGFyZW50Il0pICYmIGlzc2V0KCRwYXJhbXNbInBhcmVudGRlZmF1bHQiXSkgJiYgJHBhcmFtc1sicGFyZW50ZGVmYXVsdCJdKSB7DQoJCSRxdWVyeSA9ICJVUERBVEUgJGRidGFibGUgU0VUIGlzZGVmYXVsdD0wIFdIRVJFIHBhcmVudD0/IjsNCgkJJGRiLT5FeGVjdXRlKCRxdWVyeSxhcnJheSgkcGFyYW1zWyJwYXJlbnQiXSkpOw0KCX1lbHNlew0KCQkkcXVlcnkgPSAiVVBEQVRFICRkYnRhYmxlIFNFVCBpc2RlZmF1bHQ9MCI7DQoJCSRkYi0+RXhlY3V0ZSgkcXVlcnkpOw0KCX0NCglpZigkaXRlbWlkKXsNCgkJJHF1ZXJ5ID0gIlVQREFURSAkZGJ0YWJsZSBTRVQgaXNkZWZhdWx0PTEgV0hFUkUgaWQ9PyI7DQoJCSRkYi0+RXhlY3V0ZSgkcXVlcnksYXJyYXkoJGl0ZW1pZCkpOw0KCX0NCn0NCg0KDQokdGhpcy0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCAkbmV3cGFyYW1zKTsNCj8+DQo=]]></data>
	</file>
	<file>
	  <filename>/doc/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/doc/faq.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGh0bWw+CjxoZWFkPgoJPHRpdGxlPkNUTE1vZHVsZU1ha2VyIEZBUTwvdGl0bGU+CQoJPHN0eWxlPgoJCWEgeyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IH0KCQlhOmhvdmVyIHsgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7IH0KCQlkaXYucWRpdiB7IG1hcmdpbjogMjVweCAyNXB4IDgwcHggMjVweDsgfQoJCWgxIHsKCQkJdGV4dC1hbGlnbjogcmlnaHQ7CgkJCW1hcmdpbi1ib3R0b206IDA7CgkJfQoJCWRpdiNub3RpY2UgewoJCQl0ZXh0LWFsaWduOiByaWdodDsKCQl9CgkJI21lbnUgewoJCQlmb250LWZhbWlseTogVmVyZGFuYTsKCQkJcGFkZGluZzogMjVweCAwIDI1cHggNzVweDsKCQkJZm9udC13ZWlnaHQ6IGJvbGQ7CgkJfQoJCSNtZW51IGxpIHsKCQkJbWFyZ2luOiAycHg7CgkJfQoJCWRpdi5hbnN3ZXIgewoJCQliYWNrZ3JvdW5kLWNvbG9yIDogI2UxZWNmZTsKCQkJcGFkZGluZzogMTBweDsKCQkJYm9yZGVyOiAxcHggc29saWQgRGFya2JsdWU7CgkJCWJvcmRlci10b3A6IG5vbmU7CgkJfQoJCWRpdi5xdWVzdGlvbiB7IAoJCQlmb250LXdlaWdodDogYm9sZDsKCQkJYmFja2dyb3VuZC1jb2xvciA6ICNhNGM1ZmY7CgkJCXBhZGRpbmc6IDEwcHg7CgkJCWJvcmRlcjogMXB4IHNvbGlkIERhcmtibHVlOwoJCQlib3JkZXItYm90dG9tOiBub25lOwoJCX0KCQkuY29kZSB7CgkJCWRpc3BsYXk6IGJsb2NrOwoJCQliYWNrZ3JvdW5kLWNvbG9yOiBMaWdodEdyZXk7CgkJCWJvcmRlcjogMXB4IHNvbGlkIERhcmtHcmV5OwoJCQlwYWRkaW5nOiA1cHg7CgkJCW1hcmdpbjogMTBweDsKCQl9CgkJCgkJCQoJPC9zdHlsZT4KPC9oZWFkPgo8Ym9keT4KPGgxPkNUTE1vZHVsZU1ha2VyIEZBUTwvaDE+CjxkaXYgaWQ9Im5vdGljZSI+Q292ZXJzIHRoZSBjcmVhdGVkIG1vZHVsZXMsIG5vdCBDVExNb2R1bGVNYWtlciBpdHNlbGYuLi48L2Rpdj4KPHVsIGlkPSJtZW51Ij4KCgk8bGk+PGEgaHJlZj0iI3ExMCI+TW9kaWZ5aW5nIHRoZSBtb2R1bGUgLSB3aGVyZSB0byBzdGFydD88L2E+PC9saT4KCTxsaT48YSBocmVmPSIjcTkiPkNhbiBJIHB1dCA8aT5zbWFydHkgdGFnczwvaT4gaW4gdGhlIGl0ZW0ncyBmaWVsZHM/PC9hPjwvbGk+Cgk8bGk+PGEgaHJlZj0iI3E1Ij5Ib3cgY2FuIEkgcmV0cmlldmUgPGk+aW1hZ2VzPC9pPiBpbiB0aGUgZGlzcGxheSB0ZW1wbGF0ZXM/PC9hPjwvbGk+Cgk8bGk+PGEgaHJlZj0iI3ExMiI+SG93IGNhbiBJIGRpc3BsYXkgdmFsdWVzIGluc2lkZSBhbiA8aT5BcnJheTwvaT4/PC9hPjwvbGk+Cgk8bGk+PGEgaHJlZj0iI3ExNSI+SG93IGNhbiBJIGNoYW5nZSB0aGUgPGk+ZGF0ZXMgZGlzcGxheSBmb3JtYXQ8L2k+PzwvYT48L2xpPgoJPGxpPjxhIGhyZWY9IiNxMTgiPkhvdyBjYW4gSSBmb3JtYXQgdGhlIDxpPnBhZ2UgbWVudTwvaT4/PC9hPjwvbGk+Cgk8bGk+PGEgaHJlZj0iI3EyMiI+SG93IGNhbiBJIGRpc3BsYXkgYSBsaXN0IG9mIGVsZW1lbnRzIHNvcnRlZCBpbiBhIGNlcnRhaW4gd2F5PzwvYT48L2xpPgoJPGxpPjxhIGhyZWY9IiNxNiI+SSdtIHRyeWluZyB0byBkaXNwbGF5IGEgbGlzdCBvZiBpdGVtcywgYnV0IHRoZSBkZXRhaWwgdGVtcGxhdGUgaXMgdXNlZCBpbnN0ZWFkLiBXaGF0J3MgZ29pbmcgb24/PC9hPjwvbGk+Cgk8bGk+PGEgaHJlZj0iI3EyMSI+Q2FuIEkgaW50ZWdyYXRlIHRoZSA8aT5Db21tZW50czwvaT4gbW9kdWxlPzwvYT48L2xpPgoJPGxpPjxhIGhyZWY9IiNxMTEiPldhcm5pbmc6IG1vZHVsZSA8aT4iaXMgbm90IHByb3Blcmx5IGNsZWFuaW5nIGlucHV0IHBhcmFtcy4iPC9pPiBXaGF0J3MgZ29pbmcgb24/PC9hPjwvbGk+Cgk8bGk+PGEgaHJlZj0iI3ExMyI+SG93IGNhbiBJIHJldHJpZXZlIGluZm9ybWF0aW9ucyBhYm91dCBhbiBvYmplY3Qgb3RoZXIgdGhhbiB0aGUgb25lIEknbSB3YXRjaGluZz88L2E+PC9saT4KCTxsaT48YSBocmVmPSIjcTEiPkNhbiBJIGNoYW5nZSB0aGUgZmllbGQgaW5wdXRzIHRoYXQgYXJlIGRpc3BsYXllZCBpbiB0aGUgbW9kdWxlJ3MgPGk+c2VhcmNoIGZvcm08L2k+PzwvYT48L2xpPgoJPGxpPjxhIGhyZWY9IiNxNCI+Q2FuIEkgY2hhbmdlIHRoZSA8aT5lZGl0IGZvcm08L2k+IGZvciBhIGxldmVsPzwvYT48L2xpPgoJPGxpPjxhIGhyZWY9IiNxMTciPkhvdyBjYW4gSSBhZGQgYSA8aT5jb25kaXRpb248L2k+IGZvciBhbmQgZWxlbWVudCdzIGlucHV0IHRvIGJlIGFjY2VwdGVkPzwvYT48L2xpPgoJPGxpPjxhIGhyZWY9IiNxNyI+SG93IGFyZSB0aGUgZGVmYXVsdGFkbWluIHBhbmVscyBnZW5lcmF0ZWQ/PC9hPjwvbGk+Cgk8bGk+PGEgaHJlZj0iI3EyIj5Db3VsZCBJIHNob3cgdGhlIG5hbWUgb2YgdGhlIHNlbGVjdGVkIGl0ZW0gaW4sIHNheSwgdGhlIHBhZ2UncyA8PC8+dGl0bGU+IHRhZz88L2E+PC9saT4KCTxsaT48YSBocmVmPSIjcTE2Ij5Ib3cgY2FuIEkgYWRkIG1vZHVsZSBlbGVtZW50cyB0byBteSA8aT5nb29nbGUgc2l0ZW1hcDwvaT4/PC9hPjwvbGk+Cgk8bGk+PGEgaHJlZj0iI3ExOSI+SG93IGNhbiBJIGFkZCBhbiBleHBpcmF0aW9uIGZpZWxkPzwvYT48L2xpPgoJPGxpPjxhIGhyZWY9IiNxMjAiPkhvdyBjYW4gSSBzZXR1cCB0aGUgZnJvbnRlbmQgZWRpdCBhY3Rpb24gd2l0aCB0aGUgRnJvbnQgRW5kIFVzZXJzIG1vZHVsZT88L2E+PC9saT4KCTxsaT48YSBocmVmPSIjcTMiPkNhbiBJIGNoYW5nZSBob3cgdGhlIDxpPnByZXR0eSB1cmxzPC9pPiBhcmUgZ2VuZXJhdGVkIGFuZCBpbnRlcnByZXRlZD88L2E+PC9saT4KCTxsaT48YSBocmVmPSIjcTgiPkNhbiBJIG1ha2UgbXkgbW9kdWxlIGFsd2F5cyBhY3QgYXMgaWYgdGhlICJmb3JjZWxpc3QiIHBhcmFtZXRlciB3YXMgZW5hYmxlZD88L2E+PC9saT4KCTxsaT48YSBocmVmPSIjcTE0Ij5XaGF0J3Mgd2l0aCB0aGlzIGdldF9tb2R1bGVHZXRWYXJzKCkgZnVuY3Rpb24/PC9hPjwvbGk+CgkKPC91bD4KCjxkaXYgaWQ9InF1ZXN0aW9ucyI+CgoKCTxkaXYgY2xhc3M9InFkaXYiIGlkPSJxMTAiPgoJCTxkaXYgY2xhc3M9InF1ZXN0aW9uIj5Nb2RpZnlpbmcgdGhlIG1vZHVsZSAtIHdoZXJlIHRvIHN0YXJ0PzwvZGl2PgoJCTxkaXYgY2xhc3M9ImFuc3dlciI+CgkJPHA+VG8gZ2V0IHlvdSBzdGFydGVkLCBoZXJlJ3MgYSBiYXNpYyBleHBsYW5hdGlvbiBvZiB0aGUgc3RydWN0dXJlIG9mIHRoZSBjcmVhdGVkIG1vZHVsZS48L3A+CgkJPHA+PGI+VGhlIGxhbmd1YWdlIGZpbGVzPC9iPjwvcD4KCQk8cD5JbiB0aGUgbGFuZy8gZm9sZGVyLCB5b3Ugd2lsbCBmaW5kIG9uZSBmaWxlIGZvciBlYWNoIHN1cHBvcnRlZCBsYW5ndWFnZS4gSW5zaWRlIGVhY2ggZmlsZSwgeW91IHNob3VsZCBoYXZlIHNldmVyYWwgbGluZXMgdGhhdCBsb29rIGxpa2UgdGhpczo8L3A+CgkJPHByZSBjbGFzcz0iY29kZSI+JGxhbmdbInBvc3RpbnN0YWxsIl0gPSAiTW9kdWxlIHN1Y2Nlc3NmdWxseSBhZGRlZC4iOzwvcHJlPgoJCTxwPlRoaXMgbGluZSBkZWZpbmVzIGEgc3RyaW5nIHJlZmVycmVkIHRvIGFzICJwb3N0aW5zdGFsbCIuIEluIGV2ZXJ5IGxhbmd1YWdlIGZpbGUsIHRoZXJlIHNob3VsZCBiZSBhIHN0cmluZyBmb3IgdGhpcyBrZXkuIFdoZW4gdGhlIG1vZHVsZXMgd2lzaGVzIHRvIGRpc3BsYXkgc29tZSB0ZXh0LCBpdCB3aWxsIGxvb2sgZm9yIHRoZSBzdHJpbmcgY29ycmVzcG9uZGluZyB0byB0aGUga2V5IGluIHRoZSBsYW5ndWFnZSBmaWxlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHVzZXIncyBsYW5ndWFnZS4gWW91IHdpbGwgbW9zdCBsaWtlbHkgd2lzaCB0byBjaGFuZ2UgdGhlc2UgZmlsZXMsIGJ1dCBiZSBjYXJlZnVsLiBFYWNoIHN0cmluZyBpcyBkZWxpbWl0ZWQgd2l0aCBxdW90ZXMgKGVpdGhlciAnIG9yICIpLCBhbmQgb2J2aW91c2x5IHlvdSBjYW4ndCB1c2UgdGhlc2UgZGVsaW1pdGVycyBpbnNpZGUgdGhlIHN0cmluZy4gSWYgeW91IHdpc2ggdG8gZG8gc28sIHlvdSdsbCBoYXZlIHRvIHVzZSBhbiBlc2NhcGUgc2lnbiA6IFwiIHdpbGwgZGlzcGxheSBhIHF1b3RlIHdpdGhvdXQgYmVpbmcgY29uc2lkZXJlZCBhcyBhIGRlbGltaXRlci48L3A+CgkJPHA+PGI+VGhlIHRlbXBsYXRlczwvYj48L3A+CgkJPHA+VGhlIGZpbGVzIGluIHRoZSB0ZW1wbGF0ZXMvIGZvbGRlciBjb250YWluIG5vIHBocCAtIGp1c3QgcGxhaW4gaHRtbCBhbmQgc21hcnR5IHRhZ3MuIFRoZXkgYXJlIHVzZWQgZm9yIHRoZSBsYXlvdXQgb2YgbW9zdCBhY3Rpb25zLjxici8+CgkJPHA+PGk+YWRtaW5wYW5lbC50cGw8L2k+IGlzIHRoZSBsYXlvdXQgZm9yIHRoZSBsaXN0IG9mIGVsZW1lbnRzIG9mIGVhY2ggbGV2ZWwgaW4gdGhlIGFkbWluIHBhbmVsICh0byBtb2RpZnkgdGhpcywgc2VlIDxhIGhyZWY9IiNxNyI+dGhpcyB0b3BpYzwvYT4pPGJyLz4KCQk8aT5ub3Jlc3VsdC50cGw8L2k+IGlzIHVzZWQgd2hlbiB0aGVyZSBhcmUgbm8gaXRlbSB0byBkaXNwbGF5LiBUeXBpY2FsbHksIHRoaXMgaXMganVzdCBhIG1lc3NhZ2Ugc2F5aW5nIHRoYXQgbm90aGluZyB3YXMgZm91bmQuPGJyLz4KCQk8aT5zZWFyY2gudHBsPC9pPiBpcyB0aGUgdGVtcGxhdGUgZm9yIHRoZSBzaW1wbGUgc2VhcmNoIGZvcm0gKHdoZW4gY2FsbGluZyB0aGUgc2VhcmNoIGFjdGlvbiB3aXRoIHNlYXJjaG1vZGU9InNpbXBsZSIpLCB3aGljaCBzZWFyY2hlcyBpbiBhbGwgbGV2ZWxzLjxici8+CgkJPGk+c2VhcmNoX2dlbmVyYWxyZXN1bHRzLnRwbDwvaT4gaXMgdGhlIHRlbXBsYXRlIGZvciB0aGUgc2VhcmNoIHJlc3VsdHMgd2hlbiB5b3UgYXJlIHNlYXJjaGluZyBpbiBtb3JlIHRoYW4gb25lIGxldmVsIChvdGhlcndpc2UsIHRoZSBkZWZhdWx0IGxpc3QgdGVtcGxhdGUgZm9yIHRoYXQgbGV2ZWwgaXMgdXNlZCkuPGJyLz4KCQk8aT5icm93c2VmaWxlcy50cGw8L2k+IGlzIHRoZSB0ZW1wbGF0ZSB1c2VkIGZvciB0aGUgZmlsZSBzZWxlY3Rpb24gcGFnZSAod2hlbiB1c2luZyB0YWJsZSBkaXNwbGF5KS48YnIvPgoJCUZvciBlYWNoIGxldmVsLCB5b3Ugc2hvdWxkIGhhdmUgYSA8aT5lZGl0TEVWRUxQUkVGSVgudHBsPC9pPiwgYSA8aT5zZWFyY2hfTEVWRUxOQU1FLnRwbDwvaT4gYW5kIHBvc3NpYmx5IGEgPGk+ZnJvbnRlbmRfYWRkX0xFVkVMUFJFRklYLnRwbDwvaT4uIFRoZSBmaXJzdCBpcyB0aGUgdGVtcGxhdGUgZm9yIHRoZSBhZG1pbiBmb3JtLCB3aGVuIGFuIGl0ZW0gb2YgdGhpcyBsZXZlbCBpcyBhZGRlZCBvciBlZGl0ZWQuIFRoZSBzZWNvbmQgaXMgdGhlIHRlbXBsYXRlIGZvciB0aGUgYWR2YW5jZWQgc2VhcmNoIGZvcm0uIFRoZSBsYXN0IGlzIHRoZSB0ZW1wbGF0ZSBmb3IgdGhlIGZyb250ZW5kIGFkZCBhY3Rpb24gZm9yIHRoaXMgbGV2ZWwgKGlmIHlvdSBjaG9zZSB0byBjcmVhdGUgb25lKS48L3A+CgkJPHA+PGI+VGhlIGFjdGlvbiBmaWxlczwvYj48L3A+CgkJPHA+SW4gdGhlIHJvb3Qgb2YgdGhlIG1vZHVsZSBmb2xkZXJzLCB5b3Ugd2lsbCBub3RpY2UgdGhhdCBmaWxlcyBoYXZlIGEgcHJlZml4IChlaXRoZXIgImFjdGlvbiIgb3IgIm1ldGhvZCIpLCBleGNlcHQgZm9yIHRoZSBtb2R1bGUgZmlsZSAoPGk+bW9kdWxlbmFtZS5tb2R1bGUucGhwPC9pPiksIHdoaWNoIGNvbnRhaW5zIHRoZSBtb3N0IGltcG9ydGFudCBwYXJ0cyBvZiB0aGUgY29kZS4gTWV0aG9kcyBhcmUgY2FsbGVkIHdoZW4gdGhlIG1vZHVsZSBpcyBpbnN0YWxsZWQsIHVuaW5zdGFsbGVkLCBvciB1cGdyYWRlZCAtIGFuZCBhdCBubyBvdGhlciBtb21lbnQuIEFjdGlvbnMsIG9uIHRoZSBvdGhlciBoYW5kLCBhcmUgY2FsbGVkIGV2ZXJ5dGltZSB0aGUgY21zIGFza3MgdGhlIG1vZHVsZSB0byBkbyBzb21ldGhpbmcgLSBlaXRoZXIgaW4gdGhlIGZyb250ZW5kIG9yIHRoZSBhZG1pbi4gQnV0IHRoZSBtb2R1bGUgaGFzIG1vcmUgYWN0aW9ucyB0aGFuIHRoZSBmaWxlcyB5b3Ugc2VlIHRoZXJlLiBPcGVuIHRoZSBtb2R1bGUgZmlsZSAoPGk+bW9kdWxlbmFtZS5tb2R1bGUucGhwPC9pPiksIGFuZCBsb29rIGZvciB0aGUgZnVuY3Rpb24gPGI+RG9BY3Rpb248L2I+IChzaG91bGQgYmUgYXJvdW5kIHRoZSA0MDB0aCBsaW5lKS4gWW91IHNob3VsZCBzZWUgc29tZXRoaW5nIGxpa2UgdGhpczo8L3A+CgkJPHByZSBjbGFzcz0iY29kZSI+CWZ1bmN0aW9uIERvQWN0aW9uKCRhY3Rpb24sICRpZCwgJHBhcmFtcywgJHJldHVybmlkPS0xKXsKCQlnbG9iYWwgJGdDbXM7CgkJc3dpdGNoKCRhY3Rpb24pewoJCQljYXNlICJsaW5rIjoKCQkJCWVjaG8gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCJkZWZhdWx0IiwkcmV0dXJuaWQsIiIsJHBhcmFtcywiIix0cnVlKTsKCQkJCWJyZWFrOwoJCQljYXNlICJjaGFuZ2VkZWZ0ZW1wbGF0ZXMiOgoJCQkJZm9yZWFjaCgkcGFyYW1zIGFzICRrZXk9PiR2YWx1ZSl7CgkJCQkgICAgaWYoJGtleSAhPSAic3VibWl0IikJICAgJHRoaXMtPnNldFByZWZlcmVuY2UoJGtleSwgJHZhbHVlKTsKCQkJCX0KCQkJCSR0aGlzLT5SZWRpcmVjdCgkaWQsICJkZWZhdWx0YWRtaW4iLCAkcmV0dXJuaWQsIGFycmF5KCJhY3RpdmVfdGFiIj0+InRlbXBsYXRlcyIsICJtb2R1bGVfbWVzc2FnZSI9PiJtZXNzYWdlX21vZGlmaWVkIikpOwoJCQkJYnJlYWs7CgkJCWNhc2UgImRlbGV0ZXRwbCI6CgkJCQkkbmV3cGFyYW1zID0gYXJyYXkoImFjdGl2ZV90YWIiPT4idGVtcGxhdGVzIik7CgkJCQkkZGVmdGVtcGxhdGVzID0gJHRoaXMtPmdldERlZmF1bHRUZW1wbGF0ZXMoKTsKCQkJICAgIGlmKGlzc2V0KCRwYXJhbXNbInRwbG5hbWUiXSkgJiYgIWluX2FycmF5KCRwYXJhbXNbInRwbG5hbWUiXSwgJGRlZnRlbXBsYXRlcykpewoJCQkJICAgIGlmKCR0aGlzLT5EZWxldGVUZW1wbGF0ZSgkcGFyYW1zWyJ0cGxuYW1lIl0pKQkgICAkbmV3cGFyYW1zWyJtb2R1bGVfbWVzc2FnZT4iXSA9ICR0aGlzLT5sYW5nKCJtZXNzYWdlX21vZGlmaWVkIik7CgkJCQl9CgkJCQkkdGhpcy0+UmVkaXJlY3QoJGlkLCAiZGVmYXVsdGFkbWluIiwgJHJldHVybmlkLCAkbmV3cGFyYW1zKTsKCQkJCWJyZWFrOzwvcHJlPgoJCTxwPmFuZCBzbyBvbi4uLjxici8+CgkJU29tZSBhY3Rpb25zIChtb3N0bHkgYmVjYXVzZSB0aGV5IGFyZSBzbWFsbCkgZG9uJ3QgaGF2ZSB0aGVpciBvd24gZmlsZS4gRWFjaCAiY2FzZSIsIGhlcmUsIGlzIHN1Y2ggYW4gYWN0aW9uLiBXaGVuIGFza2VkIGZvciBhbiBhY3Rpb24gdGhhdCBpcyBub3QgaW4gdGhlIGxpc3QsIHRoZSBtb2R1bGUgd2lsbCBsb29rIGZvciB0aGUgYWNjb3JkaW5nIGZpbGUgKGFjdGlvbi5BQ1RJT05OQU1FLnBocCkuPC9wPgoJCTxwPlNvIGhlcmUncyBhIHNob3J0IGRlc2NyaXB0aW9uIG9mIHRoZSBhY3Rpb25zIHlvdSBtaWdodCBub3RpY2UgaW4geW91ciBtb2R1bGU6CgkJPHVsPgoJCTxsaT48aT5saW5rPC9pPjogdGhlIGZyb250ZW5kICJsaW5rIiBhY3Rpb24sIHdoaWNoIGNyZWF0ZXMgYSBsaW5rIHRvIGFub3RoZXIgYWN0aW9uPC9saT4KCQk8bGk+PGk+ZGVmYXVsdDwvaT46IHRoZSBmcm9udGVuZCBkZWZhdWx0IGFjdGlvbiwgd2hpY2ggZGlzcGxheXMgZWxlbWVudHMgb3IgbGlzdCBvZiBlbGVtZW50czwvbGk+CgkJPGxpPjxpPnNlYXJjaDwvaT46IHRoZSBmcm9udGVuZCAic2VhcmNoIiBhY3Rpb24sIHdoaWNoIGRpc3BsYXlzIHRoZSBzZWFyY2ggZm9ybSBhbmQgc2VhcmNoIHJlc3VsdHM8L2xpPgoJCTxsaT48aT5mcm9udGVuZF9lZGl0PC9pPjogdGhlIGZyb250ZW5kIGFjdGlvbiB0byBhZGQvZWRpdCBlbGVtZW50cyAoYnJlYWtzIGludG8gRkVhZGRfKiBhY3Rpb25zKTwvbGk+CgkJPGxpPjxpPmRlZmF1bHRhZG1pbjwvaT46IHRoZSBhY3Rpb24gZm9yIHRoZSBhZG1pbiBwYW5lbCB3aGljaCBkaXNwbGF5cyB0aGUgbGlzdCBvZiBsZXZlbHMsIGVsZW1lbnRzLCB0ZW1wbGF0ZXMgYW5kIHNvIG9uPC9saT4KCQk8bGk+PGk+ZWRpdFRlbXBsYXRlPC9pPjogd2hlbiBhIG1vZHVsZSB0ZW1wbGF0ZSBpcyBlZGl0ZWQ8L2xpPgoJCTxsaT48aT5kZWxldGV0cGw8L2k+OiB3aGVuIGEgbW9kdWxlIHRlbXBsYXRlIGlzIGRlbGV0ZWQ8L2xpPgoJCTxsaT48aT5hZGRfb3B0aW9udmFsdWU8L2k+LDxpPnJlbmFtZV9vcHRpb252YWx1ZTwvaT4sPGk+bW92ZV9vcHRpb252YWx1ZTwvaT4gYW5kIDxpPmRlbGV0ZV9vcHRpb252YWx1ZTwvaT4gbWFuYWdlIHRoZSBvcHRpb25zIGZvciB0aGUgZHluYW1pYyBsaXN0IGZpZWxkczwvbGk+CgkJPGxpPjxpPmVkaXRMRVZFTFBSRUZJWDwvaT46IGZvciBlYWNoIGxldmVsLCB0aGUgYWN0aW9uIHRvIGFkZCBvciBlZGl0IGFuIGVsZW1lbnQgb2YgdGhlIGxldmVsPC9saT4KCQk8bGk+PGk+dG9nZ2xlPC9pPjogdXNlZCB3aGVuIGEgbGluayBpbiB0aGUgYWRtaW5wYW5lbCBpcyBjbGlja2VkIHRvIGNoYW5nZSB0aGUgImFjdGl2ZSIgb3IgImRlZmF1bHQiIHZhbHVlIG9mIGFuIGVsZW1lbnQ8L2xpPgoJCTxsaT48aT5tb3Zlc29tZXRoaW5nPC9pPjogdXNlZCB3aGVuIHRoZSBvcmRlciBvZiBlbGVtZW50cyBpcyBjaGFuZ2VkIGluIHRoZSBhZG1pbiBwYW5lbCwgb3Igd2hlbiBhbiBlbGVtZW50IGlzIGRlbGV0ZWQ8L2xpPgoJCTxsaT48aT5icm93c2VmaWxlczwvaT46IHVzZWQgd2hlbiB5b3Ugc2VsZWN0IGEgZmlsZSBmb3IgYW4gZWxlbWVudC4gSXQgZGlzcGxheXMgYSBsaXN0IG9mIHRoZSBjdXJyZW50IGZpbGVzIGFuZCB0aGUgdXBsb2FkIGZvcm0uPC9saT4KCQk8bGk+PGk+YWRkZmlsZXM8L2k+OiB1c2VkIHdoZW4gbmV3IGZpbGUocykgaXMoYXJlKSB1cGxvYWRlZC4gVGhpcyBhY3Rpb24gaXMgY2FsbGVkIGZyb20gdGhlIGJyb3dzZWZpbGVzIGFjdGlvbiAoaW1hZ2VzIGFyZSByZXNpemVkIGhlcmUpLjwvbGk+CgkJPGxpPjxpPmFzc2lnbmZpbGU8L2k+OiBhc3NpZ25zIGFuIGV4aXN0aW5nIGZpbGUgdG8gdGhlIGl0ZW0gaW4gdGhlIGRhdGFiYXNlPC9saT4KCQk8L3VsPgoJCTxwPjxiPlRoZSBmdW5jdGlvbnM8L2I+PC9wPgoJCTxwPkFzaWRlIGZyb20gRG9BY3Rpb24sIHRoZSBtb2R1bGUgZmlsZSBjb250YWlucyBhIGxvdCBvZiBmdW5jdGlvbnMgdGhhdCBhcmUgdXNlZCBpbiBhbnkgYWN0aW9uLiBNb3N0IG9mIHRoZW0gYXJlIHNpbXBseSBwcm9jZWR1cmVzIHRoYXQgdGhlIG1vZHVsZSBuZWVkcyB0byBkbyBxdWl0ZSBvZnRlbi4gSSd2ZSB0cmllZCB0byBjb21tZW50IHRoZW0gYXQgbGVhc3QgdG8gc2F5IHdoYXQgdGhleSdyZSB0aGVyZSBmb3IsIGJ1dCBoZXJlIEknbGwgdHJ5IHRvIGRlc2NyaWJlIHNvbWUgb2YgdGhlIG1vc3QgaW1wb3J0YW50IG9uZXMuPC9wPgoJCTx1bD4KCQk8bGk+VGhlIDxpPkJ1aWxkUHJldHR5VXJscygpPC9pPiBhbmQgPGk+U2V0UGFyYW1ldGVycygpPC9pPiBmdW5jdGlvbnMgY29udHJvbCBhcmUgbW9zdGx5IHVzZWQgZm9yIHByZXR0eSB1cmxzIChtb3JlIGluZm9ybWF0aW9ucyA8YSBocmVmPSIjcTMiPmhlcmU8L2E+KTwvbGk+CgkJPGxpPlRoZSA8aT5nZXRfbW9kdWxlR2V0VmFycygpPC9pPiBpcyB1c2VkIHRvIHJldHJpZXZlIGluZm9ybWF0aW9ucyBmcm9tIHRoZSB1cmwgYWJvdXQgb3RoZXIgY2FsbHMgb2YgdGhlIG1vZHVsZS4gSW4gbW9zdCBjYXNlcywgdGhpcyBpcyB3aGF0IHByb3ZpZGVzIHRoZSAkaXRlbS0+aXNfc2VsZWN0ZWQgYXR0cmlidXRlIG9mIGl0ZW1zLjwvbGk+CgkJPGxpPlRoZSA8aT5wbFJlc2l6ZSgpPC9pPiBmdW5jdGlvbiAobG9jYXRlZCBpbiBmdW5jdGlvbi5wbHJlc2l6ZS5waHApIGlzIHVzZWQgdG8gcmVzaXplIGltYWdlcyBhbmQgY3JlYXRlIHRodW1ibmFpbHM8L2xpPgoJCTxsaT5Gb3IgZWFjaCBsZXZlbCwgeW91IHdpbGwgaGF2ZSBhIDxpPmdldF9sZXZlbF9OQU1FT0ZMRVZFTCgpPC9pPi4gVGhlcmUgYXJlIGFtb25nIHRoZSBtb3N0IGltcG9ydGFudCwgYXMgdGhleSBhcmUgY2FsbCBldmVyeXRoaW5nIGFuIGVsZW1lbnQgKG9yIGxpc3Qgb2YgZWxlbWVudHMpIGlzIHJlcXVlc3RlZC4gSXQgd2lsbCBiZSBleHBsYWluZWQgYmVsb3cuPC9saT4KCQk8bGk+VGhlIDxpPmFkZGFkbWlubGlua3MoKTwvaT4gZnVuY3Rpb24gaXMgdXNlZCBmb3IgdGhlIGFkbWluIHBhbmVsIGFuZCBpcyBjYWxsZWQgZnJvbSB3aXRoaW4gYSA8aT5nZXRfbGV2ZWxfTkFNRU9GTEVWRUwoKTwvaT4gZnVuY3Rpb24uIEl0IHRha2VzIGV2ZXJ5IGl0ZW0gYW5kIGFkZCBsaW5rcyB0byBlZGl0LCBtb3ZlLCBkZWxldGUgdGhlIGl0ZW0gYW5kIHNvIG9uLjwvbGk+CgkJPC91bD4KCQk8cD48Yj5UaGUgZ2V0X2xldmVsIGZ1bmN0aW9uczwvYj48L3A+CgkJPHA+RWFjaCA8aT5nZXRfbGV2ZWxfTkFNRU9GTEVWRUwoKTwvaT4gZnVuY3Rpb24gcXVlcmllcyBlbGVtZW50cyBmcm9tIHRoZSBkYXRhYmFzZSwgY3JlYXRlcyBhbiBvYmplY3QgZm9yIGVhY2gsIGFuZCByZXR1cm4gYW4gYXJyYXkgb2YgdGhlc2Ugb2JqZWN0cyAoYmFzaWNhbGx5LCB0aGUgJGl0ZW1saXN0IHlvdSdyZSB1c2luZyBpbiB0ZW1wbGF0ZXMpLjxici8+CgkJVGhlIGZ1bmN0aW9uIGFjY2VwdHMgc2V2ZXJhbCBwYXJhbWV0ZXJzLCB3aGljaCBJJ2xsIGV4bGFpbiBoZXJlOjwvcD4KCQk8dWw+CgkJPGxpPjxpPiR3aGVyZTwvaT4gaXMgYW4gYXJyYXkgb2YgY29uZGl0aW9ucywgaW4gdGhlIGZvcm0gJGZpZWxkPT4kdmFsdWUuIEZvciBleGFtcGxlLCA8Y29kZT4kd2hlcmU9YXJyYXkoImFjdGl2ZSI9PjEpPC9jb2RlPiB3b3VsZCBtZWFuIHRoYXQgb25seSB0aGUgaXRlbXMgd2VyZSB0aGUgImFjdGl2ZSIgZmllbGQgaXMgZXF1YWwgdG8gMSBhcmUgcXVlcmllZC48L2xpPgoJCTxsaT48aT4kYWRtaW48L2k+IGNvbnRyb2xzIHdoZXRoZXIgdGhlIGFkZGFkbWlubGlua3MoKSBqdXN0IGRpc2N1c3NlZCBzaG91bGQgYmUgY2FsbGVkLiBJZiBpdCBpcywgdGhlICRpZCBhbmQgJHJldHVybmlkIHBhcmFtZXRlcnMgYXJlIG5lY2Vzc2FyeS4gT3RoZXJ3aXNlIHRoZXkgYXJlbid0LjwvbGk+CgkJPGxpPjxpPiRvcmRlcjwvaT4gY29udHJvbHMgdGhlIHdheSB0aGUgbGlzdCBvZiBlbGVtZW50cyBzaG91bGQgYmUgb3JkZXJlZC4gUG9zc2libGUgdmFsdWVzIGFyZSAibW9kaWZpZWQiLCAiY3JlYXRlZCIsICJuYW1lIiBvciBmYWxzZSAoaW4gd2hpY2ggY2FzZSB0aGUgaXRlbSBvcmRlciBkZWZpbmVkIGluIHRoZSBhZG1pbiBwYW5lbCBpcyB1c2VkKTwvbGk+CgkJPGxpPjxpPiRsaW1pdDwvaT4gY29udHJvbHMgdGhlIG1heGltdW0gYW1vdW50IG9mIGl0ZW1zIHRoYXQgc2hvdWxkIGJlIHJldHVybmVkPC9saT4KCQk8bGk+PGk+JGN1c3RvbXdoZXJlPC9pPiBhbmQgPGk+JGN1c3RvbXZhbHVlczwvaT4gYXJlIHVzZWQgdG8gb3ZlcnJpZGUgdGhlICR3aGVyZSBwYXJhbWV0ZXIuIFdoZW4geW91IHdhbnQgdG8gY3JlYXRlIGEgcXVlcnkgbW9yZSBjb21wbGljYXRlZCB0aGFuIHRoZSAkd2hlcmUgcGFyYW1ldGVyIGFsbG93cywgeW91IGNhbiBwcm92aWRlIHRoZSBzdHJpbmcgcXVlcnkgaW4gJGN1c3RvbXdoZXJlIGFuZCB0aGUgYXJyYXkgb2YgdmFsdWVzIGluICRjdXN0b212YWx1ZXMuPC9saT4KCQk8L3VsPgoJCTxwPkhvcGUgdGhpcyBnZXRzIHlvdSBnb2luZy4gSWYgeW91IGhhdmUgYW55IHF1ZXN0aW9uLCBvciB3aXNoIHRvIHNoYXJlIHRoZSBtb2RpZmljYXRpb25zIHlvdSd2ZSBkb25lLCBmZWVsIHRvIGNvbnRhY3QgbWUsIGVpdGhlciBhdCB0aGUgZm9yZ2Ugb3Igb24gdGhlIGZvcnVtLjwvcD4KCQk8L2Rpdj4KCQk8YSBjbGFzcz0iYmFja3RvdG9wIiBocmVmPSIjdG9wIj5CYWNrIHRvIHRvcDwvYT4KCTwvZGl2PgoKCgk8ZGl2IGNsYXNzPSJxZGl2IiBpZD0icTkiPgoJCTxkaXYgY2xhc3M9InF1ZXN0aW9uIj5DYW4gSSBwdXQgc21hcnR5IHRhZ3MgaW4gdGhlIGl0ZW0ncyBmaWVsZHM/PC9kaXY+CgkJPGRpdiBjbGFzcz0iYW5zd2VyIj4KCQk8cD5ZZXMuPC9wPgoJCTxwPkxldCdzIHNheSB5b3UgaGF2ZSBwcm9kdWN0cyB3aGljaCBoYXZlIGEgZGVzY3JpcHRpb24gZmllbGQsIGFuZCBpbiB0aGF0IGRlc2NyaXB0aW9uIHlvdSB3b3VsZCBsaWtlIHRvIHB1dCBzb21lIHNtYXJ0eSBjb2RlLiBJZiB5b3UgdHJ5IGFuZCBwdXQsIHNheSwge3RpdGxlfSBpbiBhbiBhdHRlbXB0IHRvIGRpc3BsYXkgdGhlIHBhZ2UgdGl0bGUsIHlvdSBzaG91bGQgbm90aWNlIHRoYXQgInt0aXRsZX0iIHdpbGwgYmUgZGlzcGxheWVkIGV4YWN0bHkgbGlrZSB0aGF0IGluIHRoZSBwcm9kdWN0J3MgZGVzY3JpcHRpb24uIFRoYXQgaXMgYmVjYXVzZSBpdGVtcycgZmllbGRzIGFyZW4ndCBldmFsdWF0ZWQuPC9wPgoJCTxwPkhvd2V2ZXIsIGluIHlvdXIgdGVtcGxhdGUsIHlvdSBtYXkgY2hvb3NlIHRvIGV2YWx1YXRlIHRoZSBmaWVsZHMuIEZvciBleGFtcGxlLCBpbiB5b3VyIHRlbXBsYXRlLCBpZiBpbnN0ZWFkIG9mIHRoZSBzaW1wbGUgPGNvZGU+eyRpdGVtLT5kZXNjcmlwdGlvbn08L2NvZGU+IHlvdSB3cml0ZTo8L3A+CgkJPHByZSBjbGFzcz0iY29kZSI+e2V2YWwgdmFyPSRpdGVtLT5kZXNjcmlwdGlvbn08L3ByZT4KCQk8cD5Zb3Ugd2lsbCB0aGVuIG5vdGljZSB0aGF0IHt0aXRsZX0gaXMgZXZhbHVhdGVkLCBhbmQgdGhlIHBhZ2UncyB0aXRsZSBpcyBkaXNwbGF5ZWQuPGJyLz4KCQk8L2Rpdj4KCQk8YSBjbGFzcz0iYmFja3RvdG9wIiBocmVmPSIjdG9wIj5CYWNrIHRvIHRvcDwvYT4KCTwvZGl2PgoKCgk8ZGl2IGNsYXNzPSJxZGl2IiBpZD0icTUiPgoJCTxkaXYgY2xhc3M9InF1ZXN0aW9uIj5Ib3cgY2FuIEkgcmV0cmlldmUgaW1hZ2VzIGluIHRoZSBkaXNwbGF5IHRlbXBsYXRlcz88L2Rpdj4KCQk8ZGl2IGNsYXNzPSJhbnN3ZXIiPgoJCTxwPllvdSBwdXQgeyRpdGVtLT5pbWFnZWZpZWxkfSBpbiB5b3VyIHRlbXBsYXRlLCBhbmQgdGhlIGltYWdlIGRvZXNuJ3Qgc2hvdyB1cC4uLjwvcD4KCQk8cD5UaGF0J3MgcHJldHR5IG11Y2ggbm9ybWFsLiAkaXRlbS0+aW1hZ2VmaWVsZCBpcyBpdHNlbGYgYW4gb2JqZWN0LCB0aGF0IGhhcyBzZXZlcmFsIGF0dHJpYnV0ZXM6PC9wPgoJCTx1bD4KCQkJPGxpPiRpdGVtLT5pbWFnZWZpZWxkLSZndDtmaWxlcGF0aCAocmVsYXRpdmUgdXJsKTwvbGk+CgkJCTxsaT4kaXRlbS0+aW1hZ2VmaWVsZC0mZ3Q7ZXh0ICh0aGUgZmlsZSBleHRlbnNpb24pPC9saT4KCQkJPGxpPiRpdGVtLT5pbWFnZWZpZWxkLSZndDt1cmwgKGFic29sdXRlIHVybCk8L2xpPgoJCQk8bGk+JGl0ZW0tPmltYWdlZmllbGQtJmd0O3NpemUgKHNpemUgaW4gYnl0ZXMpPC9saT4KCQkJPGxpPiRpdGVtLT5pbWFnZWZpZWxkLSZndDtzaXplX3dmb3JtYXQgKGZvcm1hdGVkIHNpemUpPC9saT4KCQkJPGxpPiRpdGVtLT5pbWFnZWZpZWxkLSZndDtpbWFnZXNpemUgKGZvciBpbWFnZXMgb25seSk8L2xpPgoJCQk8bGk+JGl0ZW0tPmltYWdlZmllbGQtJmd0O3dpZHRoIChmb3IgaW1hZ2VzIG9ubHkpPC9saT4KCQkJPGxpPiRpdGVtLT5pbWFnZWZpZWxkLSZndDtoZWlnaHQgKGZvciBpbWFnZXMgb25seSk8L2xpPgoJCQk8bGk+JGl0ZW0tPmltYWdlZmllbGQtJmd0O2ltYWdlIChpbWFnZSB0YWc7IGZvciBpbWFnZXMgb25seSk8L2xpPgoJCQk8bGk+JGl0ZW0tPmltYWdlZmllbGQtJmd0O3RodW1ibmFpbCAodGh1bWJuYWlsIHVybCwgaWYgYXBwbGljYWJsZSk8L2xpPgoJCQk8bGk+JGl0ZW0tPmltYWdlZmllbGQtJmd0O2ZpbGVtdGltZSAobGFzdCBtb2RpZmllZCwgdW5peCB0aW1lKTwvbGk+CgkJCTxsaT4kaXRlbS0+aW1hZ2VmaWVsZC0mZ3Q7bW9kaWZpZWQgKGxhc3QgbW9kaWZpZWQsIGZvcm1hdGVkIHRpbWUpPC9saT4KCQk8L3VsPgoJCTxwPlRvIGRpc3BsYXkgdGhlIGltYWdlLCB5b3UgY2FuIHVzZSB7JGl0ZW0tPmltYWdlZmllbGQtPmltYWdlfSwgb3IgaWYgeW91IHdpc2ggbW9yZSBvcHRpb25zLCB5b3UgY2FuIGNyZWF0ZSB0aGUgaW1hZ2UgdGFnIHlvdXJzZWxmOjxici8+CgkJPHByZSBjbGFzcz0iY29kZSI+PDwvPmltZyBzcmM9InVwbG9hZHMveyRpdGVtLT5pbWFnZWZpZWxkLT5maWxlcGF0aH0iIGFsdD0iIi8+PC9wcmU+PC9wPgoJCTwvZGl2PgoJCTxhIGNsYXNzPSJiYWNrdG90b3AiIGhyZWY9IiN0b3AiPkJhY2sgdG8gdG9wPC9hPgoJPC9kaXY+CgoKCTxkaXYgY2xhc3M9InFkaXYiIGlkPSJxMTIiPgoJCTxkaXYgY2xhc3M9InF1ZXN0aW9uIj5Ib3cgY2FuIEkgZGlzcGxheSB2YWx1ZXMgaW5zaWRlIGFuIEFycmF5PzwvZGl2PgoJCTxkaXYgY2xhc3M9ImFuc3dlciI+CgkJPHA+SWYgeW91IGhhdmUgYSBsaXN0IGZpZWxkIHRoYXQgYWxsb3dzIG11bHRpcGxlIGNob2ljZXMgKGNoZWNrYm94ZXMgb3Igc2VsZWN0IGxpc3QpIGFuZCBzaW1wbHkgdXNlIHskaXRlbS0+ZmllbGRuYW1lfSBvciB7JGl0ZW0tPmZpZWxkbmFtZV9uYW1ldmFsdWV9IGluIHlvdXIgdGVtcGxhdGUsIHlvdSdsbCBwcm9iYWJseSBlbmQgdXAgd2l0aCB0aGlzIGJlaW5nIGRpc3BsYXllZDo8L3A+PHByZSBjbGFzcz0iY29kZSI+QXJyYXk8L3ByZT4KCQk8cD5UaGlzIGlzIG5vcm1hbC4gQXMgdGhlIGZpZWxkIGNvbnRhaW5zIChvciBjYW4gY29udGFpbikgbXVsdGlwbGUgdmFsdWVzLCBpdCBpcyBpbmRlZWQgYW4gYXJyYXkgb2YgdmFsdWVzLiBUbyBnZXQgdGhlIHZhbHVlcyB0aGVtc2VsdmVzLCB5b3UgaGF2ZSB0byBpdGVyYXRlIHRocm91Z2ggdGhlIHZhbHVlcyBpbiBhIHdheSBsaWtlIHRoaXM6PC9wPgoJCTxwcmUgY2xhc3M9ImNvZGUiPjw8Lz51bD4KCXtmb3JlYWNoIGZyb209JGl0ZW0tPmZpZWxkbmFtZV9uYW1ldmFsdWUgaXRlbT0ib25ldmFsdWUifQoJCTw8Lz5saT57JG9uZXZhbHVlfTw8Lz4vbGk+Cgl7L2ZvcmVhY2h9Cjw8Lz4vdWw+PC9wcmU+CgkJPC9kaXY+CgkJPGEgY2xhc3M9ImJhY2t0b3RvcCIgaHJlZj0iI3RvcCI+QmFjayB0byB0b3A8L2E+Cgk8L2Rpdj4KCQoKCTxkaXYgY2xhc3M9InFkaXYiIGlkPSJxMTUiPgoJCTxkaXYgY2xhc3M9InF1ZXN0aW9uIj5Ib3cgY2FuIEkgY2hhbmdlIHRoZSA8aT5kYXRlcyBkaXNwbGF5IGZvcm1hdDwvaT4/PC9kaXY+CgkJPGRpdiBjbGFzcz0iYW5zd2VyIj4KCQk8cD5Qb3N0ZWQgQnk6IFNvbHV0aWMgb24gRGF0ZTogMjAwOS0wNS0wNyAxMDozMTxici8+CgkJVXNlOiA8Y29kZT57JGl0ZW0tPnlvdXJWYXJ8ZGF0ZV9mb3JtYXQ6IiVIOiVNIn08L2NvZGU+PC9wPgoJCTxwPjxhIGhyZWY9Imh0dHA6Ly93d3cuc21hcnR5Lm5ldC9tYW51YWwvZW4vbGFuZ3VhZ2UubW9kaWZpZXIuZGF0ZS5mb3JtYXQucGhwIj5TZWUgdGhlIHNtYXJ0eSBlbnRyeSBhYm91dCBkYXRlIGZvcm1hdCBtb2RpZmllcjwvYT4gb3IgdGhlIG1vc3QgdXNlZnVsIDxhIGhyZWY9Imh0dHA6Ly93d3cuc21hcnR5Lm5ldC9tYW51YWwvZW4vbGFuZ3VhZ2UubW9kaWZpZXJzLnBocCI+c21hcnR5IGxpc3Qgb2YgdmFyaWFibGUgbW9kaWZpZXJzPC9hPi48L3A+CgkJPC9kaXY+CgkJPGEgY2xhc3M9ImJhY2t0b3RvcCIgaHJlZj0iI3RvcCI+QmFjayB0byB0b3A8L2E+Cgk8L2Rpdj4KCQoKCTxkaXYgY2xhc3M9InFkaXYiIGlkPSJxMTgiPgoJCTxkaXYgY2xhc3M9InF1ZXN0aW9uIj5Ib3cgY2FuIEkgZm9ybWF0IHRoZSBwYWdlIG1lbnU/PC9kaXY+CgkJPGRpdiBjbGFzcz0iYW5zd2VyIj4KCQk8cD5UaGUgZnVuY3Rpb24gdGhhdCBnZW5lcmF0ZXMgdGhlIHBhZ2VtZW51IGlzIHNwbGl0X2ludG9fcGFnZXMgKGluIG1vZHVsZSBmaWxlKSwgYnV0IHlvdSBzaG91bGQgYmUgYWJsZSB0byBmb3JtYXQgaXQgdGhlIHdheSB5b3UgbGlrZSB3aXRob3V0IG1vZGlmeWluZyB0aGUgZnVuY3Rpb24uPC9wPgoJCTxwPjxiPkNsYXNzZXMgYW5kIENTUzwvYj48YnIvPgoJCVRoZSBwYWdlbWVudSBpcyBpbiBhIGRpdiB3aXRoIGNsYXNzICJwYWdpbmF0aW9uIi4gRWFjaCBwYWdlIG51bWJlciBpcyBhbiBhbmNob3IoPDwvPmE+KSB3aXRoIGNsYXNzICJwYWdlbnVtYmVyIiwgYW5kIHRoZSBjdXJyZW50IHBhZ2UgYWxzbyBoYXMgdGhlIGNsYXNzICJjdXJyZW50Ii4gVGhlICIuLi4iIHNob3duIHdoZW4gdGhlcmUgYXJlIHRvbyBtYW55IHBhZ2VzIGFyZSBzcGFucyB3aXRoIHRoZSBjbGFzcyAicGFnZW1lbnVvdmVyZmxvdyIsIGFuZCB0aGUgbGVmdCBhbmQgcmlnaHQgYXJyb3dzIGFyZSBhbmNob3JzIHJlc3BlY3RpdmVseSB3aXRoIGNsYXNzZXMgInByZXZpb3VzbGluayIgYW5kICJuZXh0bGluayIuPGJyLz4KCQlZb3UgbWF5IHVzZSB0aGVzZSBjbGFzc2VzIHRvIHN0eWxlIHlvdXIgcGFnZSBtZW51LiBZb3UgY2FuIGZpbmQgZXhhbXBsZXMgb2Ygc3R5bGVzIDxhIGhyZWY9Imh0dHA6Ly93d3cubWlzLWFsZ29yaXRtb3MuY29tLzIwMDcvMDMvMTYvc29tZS1zdHlsZXMtZm9yLXlvdXItcGFnaW5hdGlvbi8iIHRhcmdldD0iX2JsYW5rIj5oZXJlPC9hPiAoSSB0cmllZCB0byB1c2UgdGhlIHNhbWUgY2xhc3NlcywgYnV0IGZvciB1bmlmb3JtaXR5IHJlYXNvbnMgSSBkaWRuJ3QgdXNlIHNwYW5zLCBzbyBkb3VibGUtY2hlY2sgdGhlIGNzcykuPC9wPgoJCTxwPjxiPlN0cmluZ3M8L2I+PGJyLz4KCQlUbyBjaGFuZ2UgdGhlIHBhZ2UgZGVsaW1pdGVyICgifCIpIG9yIHRoZSAiLi4uIiwgbG9vayBhdCB0aGUgZmlyc3QgbGluZXMgbGFuZ3VhZ2UgZmlsZXMsIHJlc3BlY3RpdmVseSBhdCB0aGUgZW50cmllcyAicGFnZW1lbnVkZWxpbWl0ZXIiIGFuZCAicGFnZW1lbnVvdmVyZmxvdyIuPGJyLz4KCQlBcyBmb3IgdGhlICZsdDsgYW5kICZndDssIHRoZXkgYXJlIGhhcmQtY29kZWQgaW4gdGhlIGZ1bmN0aW9uIHNwbGl0X2ludG9fcGFnZXMsIGJ1dCBpdCBzaG91bGRuJ3QgYmUgdG9vIGRpZmZpY3VsdCB0byBjaGFuZ2UuPC9wPgoJCTwvZGl2PgoJCTxhIGNsYXNzPSJiYWNrdG90b3AiIGhyZWY9IiN0b3AiPkJhY2sgdG8gdG9wPC9hPgoJPC9kaXY+CgkKCQoJPGRpdiBjbGFzcz0icWRpdiIgaWQ9InEyMiI+CgkJPGRpdiBjbGFzcz0icXVlc3Rpb24iPkhvdyBjYW4gSSBkaXNwbGF5IGEgbGlzdCBvZiBlbGVtZW50cyBzb3J0ZWQgaW4gYSBjZXJ0YWluIHdheT88L2Rpdj4KCQk8ZGl2IGNsYXNzPSJhbnN3ZXIiPgoJCTxwPldlIHdpbGwgbG9vayBhdCBob3cgdG8gY3JlYXRlIGEgbGlzdCBvZiBzb3J0ZWQgZWxlbWVudHMgaW4gdGhlIGZvbGxvd2luZyB3YXk6PC9wPgoJCTx1bD4KCQkJPGxpPltTb3J0aW5nIGZpZWxkXTx1bD4KCQkJCTxsaT5bZWxlbWVudF08L2xpPgoJCQkJPGxpPltlbGVtZW50XTwvbGk+CgkJCQk8bGk+W2VsZW1lbnRdPC9saT4KCQkJPC91bD48L2xpPgoJCQk8bGk+W1NvcnRpbmcgZmllbGRdPHVsPgoJCQkJPGxpPltlbGVtZW50XTwvbGk+CgkJCQk8bGk+Li4uPC9saT4KCQkJPC91bD48L2xpPgoJCTwvdWw+CgkJPHA+VGhlIGJhc2ljIGlkZWEgd2lsbCBiZSB0byBvcmRlciBlbGVtZW50cyBieSB0aGUgc29ydGluZyBmaWVsZCwgYW5kIG5vdGljZSB3aGVuIHRoZXJlJ3MgYSBjaGFuZ2UuPC9wPjxici8+CgkJPHA+PGI+T3JkZXIgYnkgcGFyZW50czwvYj48YnIvPgoJCUNyZWF0ZSB0aGUgZm9sbG93aW5nIHRlbXBsYXRlICh3aGljaCBJJ2xsIGNhbGwgIm9yZGVyX2J5X3BhcmVudHMiKTo8L3A+CgkJPHByZSBjbGFzcz0iY29kZSI+CgkJCTw8Lz51bD4KCQkJe2Fzc2lnbiB2YXI9InBhcmVudGZsYWciIHZhbHVlPWZhbHNlfQoJCQl7Zm9yZWFjaCBmcm9tPSRpdGVtbGlzdCBpdGVtPSJpdGVtIn0KCQkJCXtpZiAkaXRlbS0+cGFyZW50X25hbWUgIT0gJHBhcmVudGZsYWd9CgkJCQkJe2lmICRwYXJlbnRmbGFnfTw8Lz4vdWw+PDwvPi9saT57L2lmfQoJCQkJCTw8Lz5saT57JGl0ZW0tPnBhcmVudF9uYW1lfTw8Lz51bD4KCQkJCQl7YXNzaWduIHZhcj0icGFyZW50ZmxhZyIgdmFsdWU9JGl0ZW0tPnBhcmVudF9uYW1lfQoJCQkJey9pZn0KCQkJCTw8Lz5saT57JGl0ZW0tPm5hbWV9PDwvPi9saT4KCQkJey9mb3JlYWNofQoJCQk8PC8+L3VsPgoJCTwvcHJlPgoJCTxwPmFuZCBjYWxsIGl0IHVzaW5nIHtjbXNfbW9kdWxlIG1vZHVsZT0ibXltb2R1bGUiIHdoYXQ9Iml0ZW0iIGxpc3R0ZW1wbGF0ZT0ib3JkZXJfYnlfcGFyZW50cyIgb3JkZXJieT0icGFyZW50In08L3A+CgkJPHA+PGI+T3JkZXIgYnkgZmllbGQ8L2I+PGJyLz4KCQlMZXQncyBzYXkgeW91ciBsZXZlbCBoYXMgYSBkcm9wZG93biBmaWVsZCBuYW1lZCAibXlmaWVsZCIsIGFuZCB5b3Ugd2lzaCB0byBsaXN0IGVsZW1lbnRzIHNvcnRlZCBvbiB0aGF0IGZpZWxkLiBDcmVhdGUgdGhlIGZvbGxvd2luZyB0ZW1wbGF0ZSAod2hpY2ggSSdsbCBjYWxsICJvcmRlcl9ieV9teWZpZWxkIik6PC9wPgoJCTxwcmUgY2xhc3M9ImNvZGUiPgoJCQk8PC8+dWw+CgkJCXthc3NpZ24gdmFyPSJmaWVsZGZsYWciIHZhbHVlPWZhbHNlfQoJCQl7Zm9yZWFjaCBmcm9tPSRpdGVtbGlzdCBpdGVtPSJpdGVtIn0KCQkJCXtpZiAkaXRlbS0+bXlmaWVsZCAhPSAkZmllbGRmbGFnfQoJCQkJCXtpZiAkZmllbGRmbGFnfTw8Lz4vdWw+PDwvPi9saT57L2lmfQoJCQkJCTw8Lz5saT57JGl0ZW0tPm15ZmllbGR9PDwvPnVsPgoJCQkJCXthc3NpZ24gdmFyPSJmaWVsZGZsYWciIHZhbHVlPSRpdGVtLT5teWZpZWxkfQoJCQkJey9pZn0KCQkJCTw8Lz5saT57JGl0ZW0tPm5hbWV9PDwvPi9saT4KCQkJey9mb3JlYWNofQoJCQk8PC8+L3VsPgoJCTwvcHJlPgoJCTxwPmFuZCBjYWxsIGl0IHVzaW5nIHtjbXNfbW9kdWxlIG1vZHVsZT0ibXltb2R1bGUiIHdoYXQ9Iml0ZW0iIGxpc3R0ZW1wbGF0ZT0ib3JkZXJfYnlfbXlmaWVsZCIgb3JkZXJieT0ibXlmaWVsZCJ9PC9wPgoJCTwvZGl2PgoJCTxhIGNsYXNzPSJiYWNrdG90b3AiIGhyZWY9IiN0b3AiPkJhY2sgdG8gdG9wPC9hPgoJPC9kaXY+CgkKCgk8ZGl2IGNsYXNzPSJxZGl2IiBpZD0icTYiPgoJCTxkaXYgY2xhc3M9InF1ZXN0aW9uIj5JJ20gdHJ5aW5nIHRvIGRpc3BsYXkgYSBsaXN0IG9mIGl0ZW1zLCBidXQgdGhlIGRldGFpbCB0ZW1wbGF0ZSBpcyB1c2VkIGluc3RlYWQuIFdoYXQncyBnb2luZyBvbj88L2Rpdj4KCQk8ZGl2IGNsYXNzPSJhbnN3ZXIiPgoJCTxwPklmIHlvdSdyZSBvbiB0aGUgZmluYWwgbGV2ZWwgYW5kIHRoZXJlJ3Mgb25seSBvbmUgaXRlbSB0byBzaG93LCB0aGUgbW9kdWxlIHdvbid0IGRpc3BsYXkgdGhlIGxpc3QgdmlldyBidXQgd2lsbCBpbW1lZGlhdGVseSBzaG93IHRoZSBkZXRhaWxzIG9mIHRoaXMgaXRlbSwgc28gdGhhdCB0aGUgdXNlciBkb2Vzbid0IGhhdmUgdG8gY2xpY2sgdHdpY2UgZm9yIG5vIHJlYXNvbi48L3A+CgkJPHA+SWYgeW91IHdhbnQgdG8gZGlzcGxheSB0aGUgbGlzdCB2aWV3IGFueXdheSwgdGhlcmUgaXMgbm93ICBhICJmb3JjZWxpc3QiIHBhcmFtZXRlciB0aGF0IHdpbGwgZG8gdGhlIGpvYiAoc2VlIHRoZSBoZWxwIG9mIHlvdXIgbW9kdWxlKS4gWW91ciB0YWcgc2hvdWxkIGJlY29tZTo8L3A+CgkJPHByZSBjbGFzcz0iY29kZSI+e2Ntc19tb2R1bGUgbW9kdWxlPSJwcm9kdWN0cyIgd2hhdD0icHJvZHVjdCIgZm9yY2VsaXN0PSIxIn08L3ByZT4KCQk8cD5UbyBzZXQgZm9yY2VsaXN0IHRvIHRydWUgYnkgZGVmYXVsdCwgPGEgaHJlZj0iI3E4Ij5sb29rIGhlcmU8L2E+LjwvcD4KCQk8L2Rpdj4KCQk8YSBjbGFzcz0iYmFja3RvdG9wIiBocmVmPSIjdG9wIj5CYWNrIHRvIHRvcDwvYT4KCTwvZGl2PgoJCgoJPGRpdiBjbGFzcz0icWRpdiIgaWQ9InEyMSI+CgkJPGRpdiBjbGFzcz0icXVlc3Rpb24iPkNhbiBJIGludGVncmF0ZSB0aGUgPGk+Q29tbWVudHM8L2k+IG1vZHVsZT88L2Rpdj4KCQk8ZGl2IGNsYXNzPSJhbnN3ZXIiPgoJCTxwPjxiPlllcy48L2I+IEluIGZhY3QsIHRoZSBDb21tZW50cyBtb2R1bGUgbWFrZXMgdGhpcyB2ZXJ5IGVhc3kgZm9yIGFueSBvdGhlciBtb2R1bGUuPC9wPgoJCTxwPk9wZW4gdGhlIGRldGFpbCB0ZW1wbGF0ZSBmb3IgeW91ciBsYXN0IGxldmVsIGVsZW1lbnRzLCBhbmQgc2ltcGx5IGFkZCB0aGlzOjwvcD4KCQk8cHJlIGNsYXNzPSJjb2RlIj57Y21zX21vZHVsZSBtb2R1bGU9ImNvbW1lbnRzIiBtb2R1bGVuYW1lPSJOQU1FT0ZZT1VSTU9EVUxFIiBwYWdlaWQ9JGl0ZW0tPmlkfTwvcHJlPgoJCTxwPldoZXJlIE5BTUVPRllPVVJNT0RVTEUgaXMsIG9mIGNvdXJzZSwgdGhlIG5hbWUgb2YgeW91ciBtb2R1bGUuPC9wPgoJCTwvZGl2PgoJCTxhIGNsYXNzPSJiYWNrdG90b3AiIGhyZWY9IiN0b3AiPkJhY2sgdG8gdG9wPC9hPgoJPC9kaXY+CgkKCgk8ZGl2IGNsYXNzPSJxZGl2IiBpZD0icTExIj4KCQk8ZGl2IGNsYXNzPSJxdWVzdGlvbiI+V2FybmluZzogbW9kdWxlICJpcyBub3QgcHJvcGVybHkgY2xlYW5pbmcgaW5wdXQgcGFyYW1zLiIgV2hhdCdzIGdvaW5nIG9uPzwvZGl2PgoJCTxkaXYgY2xhc3M9ImFuc3dlciI+CgkJPHAgc3R5bGU9ImNvbG9yOiByZWQ7IGZvbnQtd2VpZ2h0OiBib2xkOyI+WyoqKiBUaGFua3MgdG8gaWt1bGlzLCB0aGlzIHdhcyBkZWZpbml0ZWx5IGZpeGVkIGluIDEuOC40LjIgYW5kIHNob3VsZG4ndCBiZSBhIHByb2JsZW0gYW55bW9yZSAqKipdPC9wPgoJCTxwPlRoZSBhZHZhbmNlZCBzZWFyY2ggZm9ybSB3b3VsZCBuZWVkIHRvIHJlZ2lzdGVyIGEgcGFyYW0gZm9yIGVhY2ggZmllbGQgb2YgZWFjaCBsZXZlbCwgd2hpY2ggSSBmaW5kIHJhdGhlciBpbmVsZWdhbnQuIEZvciB0aGF0IHJlYXNvbiB0aGUgUmVzdHJpY3RVbmtub3duUGFyYW1zIG9wdGlvbiBoYXMgYmVlbiBkaXNhYmxlZC48L3A+CgkJPHA+PGI+SWYgeW91IGFyZSBub3QgdXNpbmcgdGhlIGFkdmFuY2VkIHNlYXJjaCBmb3JtPC9iPiwgeW91IGNhbiBzYWZlbHkgYWN0aXZhdGUgdGhlIFJlc3RyaWN0VW5rbm93blBhcmFtcygpIG9wdGlvbi4gRWRpdCB0aGUgbW9kdWxlIGZpbGUgKG1vZHVsZW5hbWUubW9kdWxlLnBocCksIGZpbmQgdGhlIFNldFBhcmFtZXRlcnMoKSBmdW5jdGlvbiwgYW5kIGVkaXQgdGhlIGZvbGxvd2luZyBsaW5lIDoKCQk8cHJlIGNsYXNzPSJjb2RlIj4JCSR0aGlzLT5SZXN0cmljdFVua25vd25QYXJhbXMoZmFsc2UpOzwvcHJlPgoJCXRvOgoJCTxwcmUgY2xhc3M9ImNvZGUiPgkJJHRoaXMtPlJlc3RyaWN0VW5rbm93blBhcmFtcygpOzwvcHJlPjwvcD4KCQk8cD48Yj5JZiB5b3UgZG8gdXNlIHRoZSBhZHZhbmNlZCBzZWFyY2g8L2I+LCBJIHdvdWxkIHN1Z2dlc3QgZGlzYWJsaW5nIHRoZSAiQWxsb3cgcGFyYW1ldGVyIGNoZWNrcyB0byBjcmVhdGUgd2FybmluZyBtZXNzYWdlcyIgaW4gdGhlIENNUyBHbG9iYWwgU2V0dGluZ3MuPC9wPgoJCTwvZGl2PgoJCTxhIGNsYXNzPSJiYWNrdG90b3AiIGhyZWY9IiN0b3AiPkJhY2sgdG8gdG9wPC9hPgoJPC9kaXY+CgkKCgk8ZGl2IGNsYXNzPSJxZGl2IiBpZD0icTEzIj4KCQk8ZGl2IGNsYXNzPSJxdWVzdGlvbiI+SG93IGNhbiBJIHJldHJpZXZlIGluZm9ybWF0aW9ucyBhYm91dCBhbiBvYmplY3Qgb3RoZXIgdGhhbiB0aGUgb25lIEknbSB3YXRjaGluZz88L2Rpdj4KCQk8ZGl2IGNsYXNzPSJhbnN3ZXIiPgoJCTxwPkluIGFueSBtb2R1bGUgdGVtcGxhdGUsIHlvdSBjYW4gcmV0cmlldmUgYSB3aG9sZSBpdGVtIG9iamVjdCB1c2luZyB0aGUgZm9sbG93aW5nIHNtYXJ0eSB0YWc6IDxjb2RlPntNT0RVTEVOQU1FX2dldF9sZXZlbGl0ZW19PC9jb2RlPi48L3A+CgkJPHA+VGhlIHRhZyByZXF1aXJlcyAzIHBhcmFtZXRlcnMgOiB3aGF0IChyZXRyaWV2ZSBhbiBpdGVtIGZyb20gd2hpY2ggbGV2ZWwpLCBhbGlhcyAodGhlIGl0ZW0ncyBhbGlhcykgYW5kIGFzc2lnbiAoaW4gd2hpY2ggc21hcnR5IHZhcmlhYmxlIHRoaXMgc2hvdWxkIGJlIHN0b3JlZCkuPGJyLz4KCQlTbyBhIHR5cGljYWwgZXhhbXBsZSB3b3VsZCBiZTo8L3A+CgkJPHByZSBjbGFzcz0iY29kZSI+CQl7bXltb2R1bGVfZ2V0X2xldmVsaXRlbSB3aGF0PSJjYXRlZ29yeSIgYWxpYXM9Im15Zmlyc3RjYXRlZ29yeSIgYXNzaWduPSJjYXRvYmplY3QifTwvcHJlPgoJCTxwPkFuZCB5b3UgY2FuIHRoZW4gdXNlIHRoZSBhc3NpZ25lZCBvYmplY3QgdG8gZGlzcGxheSBpbmZvcm1hdGlvbjo8L3A+CgkJPHByZSBjbGFzcz0iY29kZSI+CQl7JGNhdG9iamVjdC0+bmFtZX08L3ByZT4KCQk8L2Rpdj4KCQk8YSBjbGFzcz0iYmFja3RvdG9wIiBocmVmPSIjdG9wIj5CYWNrIHRvIHRvcDwvYT4KCTwvZGl2PgoJCQoKCTxkaXYgY2xhc3M9InFkaXYiIGlkPSJxMSI+CgkJPGRpdiBjbGFzcz0icXVlc3Rpb24iPkNhbiBJIGNoYW5nZSB0aGUgZmllbGQgaW5wdXRzIHRoYXQgYXJlIGRpc3BsYXllZCBpbiB0aGUgbW9kdWxlJ3MgYWR2YW5jZWQgc2VhcmNoIGZvcm0/PC9kaXY+CgkJPGRpdiBjbGFzcz0iYW5zd2VyIj4KCQk8cD48Yj5ZZXMuPC9iPjwvcD4KCQk8cD5Gcm9tIENUTE1vZHVsZU1ha2VyIDEuOC4zLCBpdCBpcyBwb3NzaWJsZSB0byBkZWZpbmUgd2hpY2ggZmllbGRzIHdpbGwgYmUgc2hvd24gaW4gdGhlIGFkdmFuY2VkIHNlYXJjaCBmb3JtIHVwb24gZmllbGQgY3JlYXRpb24uIElmIHlvdSBoYXZlIGNyZWF0ZWQgeW91ciBtb2R1bGUgd2l0aCBhbiBlYXJsaWVyIHZlcnNpb24gb3IgZG8gbm90IHdhbnQgdG8gY3JlYXRlIGl0IGFnYWluLCB0aGVyZSdzIGFub3RoZXIgd2F5IGFyb3VuZC48L3A+CgkJPHA+VGhlIHNlYXJjaCBmb3JtIGZvciB0aGUgbW9kdWxlJ3Mgc2VhcmNoIGFjdGlvbiBhcmUgZ2VuZXJhdGVkIGZyb20gdGVtcGxhdGVzIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSAidGVtcGxhdGVzIiBmb2xkZXIgb2YgeW91ciBtb2R1bGUuPC9wPgoJCTxwPlRoZSAic2VhcmNoLnRwbCIgZmlsZSBpcyB0aGUgdGVtcGxhdGUgZm9yIHRoZSBzZWFyY2ggZm9ybSB3aGVuIHRoZSAic2ltcGxlIiBzZWFyY2htb2RlIGlzIGNob3Nlbi48L3A+CgkJPHA+VGhlICJzZWFyY2hfZ2VuZXJhbHJlc3VsdHMudHBsIiBmaWxlIGlzIHRoZSB0ZW1wbGF0ZSBmb3IgdGhlIHNlYXJjaCByZXN1bHRzIHdoZW4gd2UgYXJlIHNlYXJjaGluZyBpbiBtb3JlIHRoYW4gb25lIGxldmVsIGF0IHRoZSBzYW1lIHRpbWUuIE90aGVyd2lzZSwgdGhlIGxldmVsJ3MgZGVmYXVsdCBsaXN0IG1vZHVsZSBpcyB1c2VkLjwvcD4KCQk8cD5Gb3IgZWFjaCBsZXZlbCBvZiB5b3VyIG1vZHVsZSwgdGhlcmUgc2hvdWxkIGJlIGEgZmlsZSBuYW1lZCAic2VhcmNoX05BTUVPRlRIRUxFVkVMLnRwbCIuIFRoaXMgY29udGFpbnMgdGhlIHRlbXBsYXRlIGZvciB0aGUgYWR2YW5jZWQgc2VhcmNoIGZvcm0gZm9yIHRoaXMgbGV2ZWwuIElmIHlvdSB3YW50IHRvIHJlbW92ZSBhIGZpZWxkIGlucHV0IGZyb20gdGhlIHNlYXJjaCBmb3JtLCB5b3UgY2FuIHNpbXBseSBkZWxldGUgdGhlIGFwcHJvcHJpYXRlIHNlY3Rpb24gb2YgdGhlIHRlbXBsYXRlLiAoSSB3b3VsZCByZWNvbW1hbmQgdG8gbWFrZSBhIGJhY2t1cCBvZiB0aGUgb3JpZ2luYWwgdGVtcGxhdGUsIGlmIHlvdSBldmVyIGNoYW5nZSB5b3VyIG1pbmQhKTwvcD4KCQk8L2Rpdj4KCQk8YSBjbGFzcz0iYmFja3RvdG9wIiBocmVmPSIjdG9wIj5CYWNrIHRvIHRvcDwvYT4KCTwvZGl2PgoJCgkKCTxkaXYgY2xhc3M9InFkaXYiIGlkPSJxNCI+CgkJPGRpdiBjbGFzcz0icXVlc3Rpb24iPkNhbiBJIGNoYW5nZSB0aGUgZWRpdCBmb3JtIGZvciBhIGxldmVsPzwvZGl2PgoJCTxkaXYgY2xhc3M9ImFuc3dlciI+CgkJPHA+PGI+WWVzLjwvYj48L3A+CgkJPHA+VGhlIGVkaXQgZm9ybXMgZm9yIGVhY2ggbGV2ZWwgYXJlIGdlbmVyYXRlZCBmcm9tIHRlbXBsYXRlcyB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgInRlbXBsYXRlcyIgZm9sZGVyIG9mIHlvdXIgbW9kdWxlLiBGb3IgZWFjaCBsZXZlbCBvZiB5b3VyIG1vZHVsZSwgdGhlIHRlbXBsYXRlIGZvciB0aGUgZWRpdCBmb3JtcmUgc2hvdWxkIGJlIGluIGEgZmlsZSBuYW1lZCAiZWRpdFBSRUZJWE9GVEhFTEVWRUwudHBsIi48L3A+CgkJPHA+WW91IGNhbiBtb2RpZnkgdGhlIHRlbXBsYXRlLCBidXQga2VlcCB0d28gdGhpbmdzIGluIG1pbmQ6PGJyLz4KCQktIElmIHlvdSByZW1vdmUgYW4gaW5wdXQsIHRoZSBmb3JtIG1pZ2h0IG5vdCB3b3JrIGFueW1vcmUuPGJyLz4KCQktIElmIHlvdSB3aXNoIHRvIGNoYW5nZSB0aGUgZmllbGQgbGFiZWxzLCB5b3Ugc2hvdWxkIHByZWZlcmFibHkgZG8gc28gaW4gdGhlIGxhbmd1YWdlIGZpbGUuPC9wPgoJCTwvZGl2PgoJCTxhIGNsYXNzPSJiYWNrdG90b3AiIGhyZWY9IiN0b3AiPkJhY2sgdG8gdG9wPC9hPgoJPC9kaXY+CgkKCQoJPGRpdiBjbGFzcz0icWRpdiIgaWQ9InExNyI+CgkJPGRpdiBjbGFzcz0icXVlc3Rpb24iPkNhbiBJIGFkZCBhIGNvbmRpdGlvbiBmb3IgYW5kIGVsZW1lbnQncyBpbnB1dCB0byBiZSBhY2NlcHRlZD88L2Rpdj4KCQk8ZGl2IGNsYXNzPSJhbnN3ZXIiPgoJCTxwPk9uZSBvZiB5b3VyIGxldmVsIGhhcywgZm9yIGV4YW1wbGUsIGEgbnVtZXJpYyBmaWVsZCAod2hpY2ggd2UnbGwgY2FsbCAibXlmaWVsZCIpLCBhbmQgeW91IHdpc2ggdG8gbWFrZSBzdXJlIGl0J3MgYmV0d2Vlbiwgc2F5LCAwIGFuZCAxMDA/IE9mIGNvdXJzZSBpdCdzIHBvc3NpYmxlLCBidXQgeW91J2xsIG5lZWQgdG8gZWRpdCB0aGUgY29kZS48L3A+CgkJPHA+T3BlbiB0aGUgZWRpdCBmaWxlIGFzc29jaWF0ZWQgd2l0aCB0aGUgbGV2ZWwgKGFjdGlvbi5lZGl0TEVWRUxQUkVGSVgucGhwKS4gU29tZXdoZXJlIG5vdCBzbyBmYXIgZnJvbSB0aGUgYmVnaW5uaW5nIG9mIHRoZSBmaWxlLCB5b3Ugd2lsbCBmaW5kIHRoZSBmb2xsb3dpbmcgY29kZSA6PC9wPgoJCTxwcmUgY2xhc3M9ImNvZGUiPgoJCS8vIENIRUNLIElGIFRIRSBORUVERUQgVkFMVUVTIEFSRSBUSEVSRQojMQkJaWYoCSFpc3NldCgkcGFyYW1zWyJpdGVtbmFtZSJdKSB8fCAkcGFyYW1zWyJpdGVtbmFtZSJdID09ICIiICl7CiMyCQkJZWNobyAkdGhpcy0+U2hvd0Vycm9ycygkdGhpcy0+TGFuZygiZXJyb3JfbWlzc2dpbnZhbHVlIikpOwojMwkJfWVsc2VpZihmYWxzZSA9PSAkdGhpcy0+Y2hlY2thbGlhcygibW9kdWxlX21vZHVsZW5hbWVfaXRlbSIsICRpdGVtLT5hbGlhcywgaXNzZXQoJHBhcmFtc1siaXRlbWlkIl0pPyRwYXJhbXNbIml0ZW1pZCJdOmZhbHNlKSl7CiM0CQkJZWNobyAkdGhpcy0+U2hvd0Vycm9ycygkdGhpcy0+TGFuZygiZXJyb3JfYWxyZWFkeWV4aXN0cyIpKTsKIzUJCX1lbHNlewoJCSMjIyMjIyMjIyMjIyBET0lORyBUSEUgVVBEQVRFCgkJPC9wcmU+CgkJPHA+SGVyZSB0d28gY29uZGl0aW9ucyBhcmUgY2hlY2tlZCBiZWZvcmUgdXBkYXRpbmcvYWRkaW5nIHRoZSBlbGVtZW50OiBmaXJzdCwgb24gbGluZSAjMSwgd2UgY2hlY2sgaWYgYSBuYW1lIHdhcyBnaXZlbiAoYW5kIGFueSBvdGhlciBtYW5kYXRvcnkgdmFsdWUsIGlmIGFueSksIGFuZCBpZiBpdCB3YXNuJ3QsIHdlIGRpc3BsYXkgYW4gZXJyb3IgKGxpbmUgIzIpLiBPbiBsaW5lICMzLCB3ZSBjaGVjayBpZiBhbm90aGVyIGVsZW1lbnQgYWxyZWFkeSBoYXMgdGhlIHNhbWUgYWxpYXMgYW5kIGRpc3BsYXkgYW4gZXJyb3IgbWVzc2FnZSAobGluZSAjNCkgaWYgaXQgaXMgdGhlIGNhc2UuIElmIG5vIHByb2JsZW0gaXMgbWV0LCB3ZSBnZXQgdG8gbGluZSAjNSBhbmQgZ28gb24gd2l0aCB0aGUgdXBkYXRlLjwvcD4KCQk8cD5CYXNpY2FsbHksIHlvdSBjYW4gYWRkIGFueSBjb25kaXRpb24geW91IGxpa2UgdG8gdGhlc2UuIFNvIHdpdGggb3VyIGV4YW1wbGUsIGl0IGNvdWxkIGxvb2sgbGlrZSB0aGlzOjwvcD4KCQk8cHJlIGNsYXNzPSJjb2RlIj4KCQkvLyBDSEVDSyBJRiBUSEUgTkVFREVEIFZBTFVFUyBBUkUgVEhFUkUKCQlpZigJIWlzc2V0KCRwYXJhbXNbIml0ZW1uYW1lIl0pIHx8ICRwYXJhbXNbIml0ZW1uYW1lIl0gPT0gIiIgKXsKCQkJZWNobyAkdGhpcy0+U2hvd0Vycm9ycygkdGhpcy0+TGFuZygiZXJyb3JfbWlzc2dpbnZhbHVlIikpOwoJCX1lbHNlaWYoZmFsc2UgPT0gJHRoaXMtPmNoZWNrYWxpYXMoIm1vZHVsZV9tb2R1bGVuYW1lX2l0ZW0iLCAkaXRlbS0+YWxpYXMsIGlzc2V0KCRwYXJhbXNbIml0ZW1pZCJdKT8kcGFyYW1zWyJpdGVtaWQiXTpmYWxzZSkpewoJCQllY2hvICR0aGlzLT5TaG93RXJyb3JzKCR0aGlzLT5MYW5nKCJlcnJvcl9hbHJlYWR5ZXhpc3RzIikpOwoJCX1lbHNlaWYoIGZhbHNlID09ICgkaXRlbS0+bXlmaWVsZCA+IDAgJiYgJGl0ZW0tPm15ZmllbGQgPD0gMTAwKSApewoJCQllY2hvICR0aGlzLT5TaG93RXJyb3JzKCR0aGlzLT5MYW5nKCJteV9jdXN0b21fZXJyb3JfbWVzc2FnZSIpKTsKCQl9ZWxzZXsKCQkjIyMjIyMjIyMjIyMgRE9JTkcgVEhFIFVQREFURQoJCTwvcHJlPgoJCTxwPldlIGp1c3QgY2hlY2sgaWYgdGhlIGZpZWxkIGlzIG92ZXIgMCBhbmQgYmVsb3cvZXF1YWwgdG8gMTAwLiBJZiBpdCBpcywgd2UgZ28gb24gd2l0aCB0aGUgc3VibWlzc2lvbi4gT3RoZXJ3aXNlIHdlIGRpc3BsYXkgYW4gZXJyb3IgbWVzc2FnZSAod2hpY2ggeW91J2QgbmVlZCB0byBhZGQgdG8gdGhlIGxhbmd1YWdlIGZpbGVzLCBvdGhlcndpc2UgeW91IGNhbiBoYXJkY29kZSB0aGUgZXJyb3IgbWVzc2FnZS4uLik8L3A+CgkJPC9kaXY+CgkJPGEgY2xhc3M9ImJhY2t0b3RvcCIgaHJlZj0iI3RvcCI+QmFjayB0byB0b3A8L2E+Cgk8L2Rpdj4KCQoJCgk8ZGl2IGNsYXNzPSJxZGl2IiBpZD0icTciPgoJCTxkaXYgY2xhc3M9InF1ZXN0aW9uIj5Ib3cgYXJlIHRoZSBkZWZhdWx0YWRtaW4gcGFuZWxzIGdlbmVyYXRlZD88L2Rpdj4KCQk8ZGl2IGNsYXNzPSJhbnN3ZXIiPgoJCTxwPklmIHlvdSBvcGVuIHRoZSAvdGVtcGxhdGVzLyBmb2xkZXIsIHlvdSB3aWxsIG5vdGljZSB0aGF0IHRoZXJlJ3Mgb25seSBvbmUgdGVtcGxhdGUgZm9yIHRoZSBkZWZhdWx0YWRtaW4gOiBhZG1pbnBhbmVsLnRwbC4gVGhpcyBpcyB1c2VkIGZvciBhbGwgbGV2ZWxzLiBTbyB0aGUgZGlmZmVyZW5jZSBpcyB0aGUgaW5mb3JtYXRpb24gcGFzc2VkIHRvIHRoZSB0ZW1wbGF0ZS4gQmVmb3JlIHRha2luZyBhIGxvb2sgYXQgaXQsIGxldCdzIHNlZSB0aGF0IGluZm9ybWF0aW9uLjxici8+CgkJT3BlbiB0aGUgYWN0aW9uLmRlZmF1bHRhZG1pbi5waHAgb2YgeW91ciBtb2R1bGUuIFlvdSB3aWxsIG5vdGljZSB0aGF0IGl0IGlzIGRpdmlkZWQgaW50byB0YWJzIChkZWxpbWl0ZWQgYnkgPGNvZGU+ZWNobyAkdGhpcy0+U3RhcnRUYWIoIm5hbWVvZmxldmVsIik7PC9jb2RlPiBhbmQgPGNvZGU+ZWNobyAkdGhpcy0+RW5kVGFiKCk7PC9jb2RlPikuIEZvciBlYWNoIGxldmVsIHRhYiwgdGhlIGxpc3Qgb2YgaXRzIGl0ZW1zIGlzIGZldGNoZWQgYW5kIHN0b3JlZCBpbnRvIDxjb2RlPiRpdGVtbGlzdDwvY29kZT4sIHdoaWNoIGlzIHRoZW4gcGFzc2VkIHRvIHNtYXJ0eS4gJGl0ZW1saXN0IGlzIGFuIGFycmF5IG9mIG9iamVjdHMgaGF2aW5nIHlvdXIgZmllbGRzIGFzIGF0dHJpYnV0ZXMgKCRpdGVtLT5maWVsZCkuPGJyLz4KCQlKdXN0IGJlbG93IHRoYXQsIHlvdSB3aWxsIG5vdGljZSBsaW5lcyB0aGF0IGxvb2sgbGlrZSB0aGlzOjwvcD4KCQk8cHJlIGNsYXNzPSJjb2RlIj4KCQkkYWRtaW5zaG93ID0gYXJyYXkoCgkJCWFycmF5KCR0aGlzLT5MYW5nKCJuYW1lIiksImVkaXRsaW5rIixmYWxzZSksCgkJCWFycmF5KCR0aGlzLT5MYW5nKCJhbGlhcyIpLCJhbGlhcyIsZmFsc2UpLAoJCQlhcnJheSgkdGhpcy0+TGFuZygiYWN0aXZlIiksInRvZ2dsZWFjdGl2ZSIsdHJ1ZSksCgkJCWFycmF5KCR0aGlzLT5MYW5nKCJuYmNoaWxkcmVuIiksIm5iY2hpbGRyZW4iLGZhbHNlKSwKCQkJYXJyYXkoJHRoaXMtPkxhbmcoInJlb3JkZXIiKSwibW92ZWxpbmtzIix0cnVlKSwKCQkJYXJyYXkoJHRoaXMtPkxhbmcoIkFjdGlvbnMiKSwiZGVsZXRlbGluayIsdHJ1ZSkJCQoJCQkpOwoJCSR0aGlzLT5zbWFydHktPmFzc2lnbigiYWRtaW5zaG93IiwgJGFkbWluc2hvdyk7CgkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJ0YWJsZWlkIiwgImxldmVsbmFtZV90YWJsZSIpOwoJCWVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgiYWRtaW5wYW5lbC50cGwiKTs8L3ByZT4KCQk8cD5UaGUgPGNvZGU+JGFkbWluc2hvdzwvY29kZT4gdmFyaWFibGUgY29udGFpbnMgd2hhdCBzaG91bGQgYmUgc2hvd24gaW4gdGhlIGFkbWlucGFuZWwgb2YgdGhhdCBsZXZlbC4gV2UgdGhlbiBwYXNzIHRoaXMgdmFyaWFibGUgdG8gc21hcnR5IChhbmQgYWxzbyBhIG5hbWUgZm9yIHRoZSB0YWJsZSksIGFuZCB0aGUgbGFzdCBsaW5lIHRlbGxzIHNtYXJ0eSB0byBkaXNwbGF5IHRoZSB0ZW1wbGF0ZSAiYWRtaW5wYW5lbC50cGwiLjxici8+CgkJJGFkbWluc2hvdyBpcyBhbiBhcnJheSwgd2hlcmUgZWFjaCBlbGVtZW50IHJlcHJlc2VudHMgYSBjb2x1bW4gb2YgdGhlIGFkbWlucGFuZWwuIEVhY2ggY29sdW1uLCBpbiB0dXJuLCBpcyBhbiBhcnJheSBjb250YWluaW5nIHRocmVlIHZhbHVlczogdGhlIGZpcnN0IChwb3NpdGlvbiAwKSBpcyB0aGUgdGl0bGUgb2YgdGhlIGNvbHVtbiwgYW5kIHRoZSBzZWNvbmQgKHBvc2l0aW9uIDEpIGlzIHRoZSBuYW1lIG9mIHRoZSBvYmplY3QncyBmaWVsZCB0aGF0IHNob3VsZCBiZSBzaG93biBpbiB0aGlzIGNvbHVtbiwgYW5kIHRoZSB0aGlyZCAocG9zaXRpb24gMikgaXMgd2hldGhlciB0aGUgaW5zdGFudCBzZWFyY2ggKHRoZSBzZWFyY2hib3gganVzdCBhdCB0aGUgdG9wIG9mIHRoZSBhZG1pbnBhbmVsKSBzaG91bGQgc2tpcCB0aGlzIGNvbHVtbi48L3A+CgkJPHA+Rm9yIGV4YW1wbGUsIDxjb2RlPmFycmF5KCR0aGlzLT5MYW5nKCJuYW1lIiksImVkaXRsaW5rIixmYWxzZSk8L2NvZGU+IG1lYW5zLCBoZXJlLCB0aGF0IHdlIHRha2UgJHRoaXMtPkxhbmcoIm5hbWUiKSAoIm5hbWUiIGluIHRoZSBsYW5ndWFnZSB0aGF0IGlzIGN1cnJlbnRseSBkaXNwbGF5ZWQpIHRvIGJlIHRoZSB0aXRsZSBvZiB0aGUgY29sdW1uLCBhbmQgdGhhdCBmb3IgZWFjaCByb3cgb2YgdGhlIHRhYmxlLCB3aGF0ZXZlciBpcyBpbiAkb25laXRlbS0+ZWRpdGxpbmsgd2lsbCBiZSBkaXNwbGF5ZWQgKHRoaXMgcGFydGljdWxhciB2YWx1ZSBpcyBub3Qgc3RyaWN0bHkgc3BlYWtpbmcgYSBmaWVsZCBvZiB0aGUgbGV2ZWwsIGJ1dCBhbiBhdHRyaWJ1dGUgY3JlYXRlZCBieSB0aGUgYWRkYWRtaW5saW5rcygpIGZ1bmN0aW9uKS4gSXQgYWxzbyBtZWFucyB0aGF0IHRoZSBpbnN0YW50IHNlYXJjaCB3aWxsIDxpPm5vdDwvaT4gc2tpcCB0aGlzIGNvbHVtbiwgc28gdGhlIHRleHQgZGlzcGxheWVkIHdpbGwgYmUgdXNlZCB0byBzZWUgaWYgdGhlIHJvdyBtYXRjaGVzIHRoZSBzZWFyY2ggd29yZHMuPC9wPgoJCTxwPk5vdywgbGV0J3MgdGFrZSBhIGxvb2sgYXQgdGhlIGFkbWlucGFuZWwudHBsIGZpbGU6PC9wPgoJCTxwcmUgY2xhc3M9ImNvZGUiPgojMQkJPDwvPmRpdj4KIzIJCTw8Lz50YWJsZSB7aWYgJHRhYmxlaWR9aWQ9InskdGFibGVpZH0iIHsvaWZ9Y2VsbHNwYWNpbmc9IjAiIGNsYXNzPSJwYWdldGFibGUiPgojMwkJPDwvPnRoZWFkPjw8Lz50cj4KIzQJCQl7Zm9yZWFjaCBmcm9tPSRhZG1pbnNob3cgaXRlbT1jb2x1bW59CiM1CQkJCTw8Lz50aD57JGNvbHVtblswXX08PC8+L3RoPgojNgkJCXsvZm9yZWFjaH0KIzcJCTw8Lz4vdHI+PDwvPi90aGVhZD4KIzgJCTw8Lz50Ym9keT4KIzkJCXtjeWNsZSB2YWx1ZXM9InJvdzIscm93MSIgYXNzaWduPXJvd2NsYXNzIHJlc2V0PXRydWV9CiMxMAkJe2ZvcmVhY2ggZnJvbT0kaXRlbWxpc3QgaXRlbT1vbmVpdGVtfQojMTEJCXtjeWNsZSB2YWx1ZXM9InJvdzIscm93MSIgYXNzaWduPXJvd2NsYXNzfQojMTIJCTw8Lz50ciBjbGFzcz0ieyRyb3djbGFzc30iIG9ubW91c2VvdmVyPSJ0aGlzLmNsYXNzTmFtZT0neyRyb3djbGFzc31ob3Zlcic7IiBvbm1vdXNlb3V0PSJ0aGlzLmNsYXNzTmFtZT0neyRyb3djbGFzc30nOyI+CiMxMwkJCXtmb3JlYWNoIGZyb209JGFkbWluc2hvdyBpdGVtPWNvbHVtbn0KIzE0CQkJCXthc3NpZ24gdmFyPW9uZXZhbCB2YWx1ZT0kY29sdW1uWzFdfQojMTUJCQkJPDwvPnRke2lmICRjb2x1bW5bMl19IGNsYXNzPSJjdGxtbV9ub3NlYXJjaCJ7L2lmfT57JG9uZWl0ZW0tPiRvbmV2YWx9PDwvPi90ZD4KIzE2CQkJey9mb3JlYWNofQojMTcJCTw8Lz4vdHI+CiMxOAkJey9mb3JlYWNofQojMTkJCTw8Lz4vdGJvZHk+CiMyMAkJPDwvPi90YWJsZT4KIzIxCQk8PC8+L2Rpdj48L3ByZT4KCQk8cD5Ob3csIEkgd2lsbCBhc3N1bWUgdGhhdCBldmVyeW9uZSB1bmRlcnN0YW5kcyB0aGUgaHRtbCB0YWdzLCBhbmQgd2lsbCBsZWF2ZSBhbG9uZSB0aGUgY29kZSBjb25jZXJuaW5nIHRoZSBjbGFzc2VzLiBJIHdpbGwgZXhwbGFpbiBsaW5lcyAjNCB0byAjNiwgd2hpY2ggd3JpdGUgdGhlIHRhYmxlIGhlYWRlciAodGhlIHRpdGxlcyBvZiB0aGUgY29sdW1ucyksIGFuZCBsaW5lcyAjOSB0byAjMTgsIHdoaWNoIHdyaXRlIHRoZSB0YWJsZSByb3dzLjwvcD4KCQk8cD5MaW5lICM1IGlzIGV4ZWN1dGVkIGZvciBlYWNoIGVsZW1lbnQgb2YgdGhlICRhZG1pbnNob3cgdmFyaWFibGU7IGluIG90aGVyIHdvcmRzLCBmb3IgZWFjaCBjb2x1bW4gb2YgdGhlIHRhYmxlLiBOb3csIHJlbWVtYmVyIHRoYXQgZWFjaCBlbGVtZW50IG9mIHRoZSAkYWRtaW5zaG93IHZhcmlhYmxlIGlzIGFuIGFycmF5IG9mIHR3byBlbGVtZW50cywgc28gd2hhdCBsaW5lICM1IGRvZXMgaXMgZGlzcGxheSB0aGUgZmlyc3QgKHBvc2l0aW9uIFswXSkgb2YgdGhlc2UgdHdvIGVsZW1lbnRzIGFzIHRoZSBjb2x1bW4gaGVhZGVyLjwvcD4KCQk8cD5MaW5lcyAjMTEgdG8gIzE3IGFyZSByZXBlYXRlZCBmb3IgZWFjaCBpdGVtIGluICRpdGVtbGlzdCAoZm9yIGVhY2ggcm93IG9mIHRoZSB0YWJsZSkuIEZvciBlYWNoIHJvdywgZm9yIGVhY2ggZWxlbWVudCBvZiB0aGUgJGFkbWluc2hvdyB2YXJpYWJsZSwgbGluZXMgIzE0IGFuZCAjMTUgYXJlIHJlcGVhdGVkLiBMaW5lICMxNCBmZXRjaCB0aGUgbmFtZSBvZiB0aGUgb2JqZWN0J3MgYXR0cmlidXRlIHRoYXQgc2hvdWxkIGJlIGRpc3BsYXllZCAocG9zaXRpb24gWzFdIG9mIHRoZSBhZG1pbnNob3cgZWxlbWVudCksIGFuZCBsaW5lICMxNSBkaXNwbGF5cyB0aGlzIGF0dHJpYnV0ZSBvZiB0aGUgY3VycmVudCBvYmplY3QuPC9wPgoJCTxwPkFzIG9mIHRoZSA8Y29kZT5jdGxtbV9ub3NlYXJjaDwvY29kZT4gY2xhc3MsIGl0IG9ubHkgbWVhbnMgdGhhdCB0aGUgaW5zdGFudCBzZWFyY2ggd2lsbCBub3QgY2hlY2sgaW50byB0aGlzIGNvbHVtbi48L3A+CgkJPHA+PGI+QWxyaWdodC4uLiBob3cgY2FuIEkgY2hhbmdlIHRoaXM/PC9iPjwvcD4KCQk8cD5JZiB5b3Ugd2FudCB0byBtYWtlIG1ham9yIGNoYW5nZXMsIHRoZSBiZXN0IHRoaW5nIHRvIGRvIHdvdWxkIGJlIHRvIGNyZWF0ZSBhbiBpbmRpdmlkdWFsIHRlbXBsYXRlIGZvciB5b3VyIGxldmVsLiBJbiB0aGUgdGVtcGxhdGVzLyBmb2xkZXIsIGNyZWF0ZSBhIGZpbGUgKGxpa2UgImFkbWlucGFuZWxfbmFtZW9mbGV2ZWwudHBsIiksIHB1dCB0aGUgdGVtcGxhdGUgeW91IHdpc2ggdG8gdXNlIGluIGl0LCBhbmQgaW4gdGhlIGFjY29yZGluZyB0YWIgb2YgdGhlIGFjdGlvbi5kZWZhdWx0YWRtaW4ucGhwIGZpbGUsIGNoYW5nZTxici8+CgkJPGNvZGU+ZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCJhZG1pbnBhbmVsLnRwbCIpOzwvY29kZT48YnIvPgoJCXRvPGJyLz4KCQk8Y29kZT5lY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoImFkbWlucGFuZWxfbmFtZW9mbGV2ZWwudHBsIik7PC9jb2RlPjwvcD4KCQk8cD5Ob3csIGxldCdzIHNheSB5b3Ugd2lzaCB0byBtYWtlIGEgdmVyeSBzaW1wbGUgbW9kaWZpY2F0aW9uLiBGb3IgZXhhbXBsZSwgeW91IGFyZSBkaXNwbGF5aW5nIGEgZmlsZSBmaWVsZCAod2hpY2ggd2UnbGwgY2FsbCAibXlmaWVsZCIpIG9uIHRoZSBhZG1pbnBhbmVsLCBidXQgaW5zdGVhZCBvZiBzaG93aW5nIHRoZSBmaWxlcGF0aCB5b3Ugd291bGQgbGlrZSB0byBzaG93IHRoZSBwaWN0dXJlLiBXaGF0IHlvdSBjb3VsZCBkbyBpcyB0aGlzOjxici8+CgkJSW4gdGhlIGFkbWlucGFuZWwudHBsIHRlbXBsYXRlIGZpbGUsIHlvdSBjb3VsZCBjaGFuZ2UgbGluZSAjMTUgdG8gc29tZXRoaW5nIGxpa2UgdGhpczoKCQk8cHJlIGNsYXNzPSJjb2RlIj4KCQkJPDwvPnRke2lmICRjb2x1bW5bMl19IGNsYXNzPSJjdGxtbV9ub3NlYXJjaCJ7L2lmfT4KCQkJe2lmICRvbmV2YWwgPT0gJ215ZmllbGQnfQoJCQkJe2lmICRvbmVpdGVtLT4kb25ldmFsICE9ICIifTw8Lz5pbWcgc3JjPSJ7cm9vdF91cmx9L3VwbG9hZHMveyRvbmVpdGVtLT4kb25ldmFsfSIgLz57L2lmfQoJCQl7ZWxzZX0KCQkJCXskb25laXRlbS0+JG9uZXZhbH0KCQkJey9pZn08PC8+L3RkPjwvcHJlPgoJCTxwPlRoaXMgbWVhbnMgdGhhdCBzbWFydHkgY2hlY2tzIGlmIHRoZSBmaWVsZCB3ZSdyZSBkaXNwbGF5aW5nIGlzICdteWZpZWxkJywgaWYgaXQgaXMsIGFuZCBpZiB0aGUgdmFsdWUgaXNuJ3QgZW1wdHksIGl0IGRpc3BsYXlzIHRoZSBpbWFnZS4gSWYgaXQgaXNuJ3QsIGl0IGp1c3QgZGlzcGxheXMgdGhlIGZpZWxkIHZhbHVlIG5vcm1hbGx5LjwvcD4KCQk8L2Rpdj4KCQk8YSBjbGFzcz0iYmFja3RvdG9wIiBocmVmPSIjdG9wIj5CYWNrIHRvIHRvcDwvYT4KCTwvZGl2PgkKCQoJCgk8ZGl2IGNsYXNzPSJxZGl2IiBpZD0icTIiPgoJCTxkaXYgY2xhc3M9InF1ZXN0aW9uIj5Db3VsZCBJIHNob3cgdGhlIG5hbWUgb2YgdGhlIHNlbGVjdGVkIGl0ZW0gaW4sIHNheSwgdGhlIHBhZ2UncyA8PC8+dGl0bGU+IHRhZz88L2Rpdj4KCQk8ZGl2IGNsYXNzPSJhbnN3ZXIiPgoJCTxwIHN0eWxlPSJjb2xvcjogcmVkOyBmb250LXdlaWdodDogYm9sZDsiPlsqKiogU2VlIHVwZGF0ZSBiZWxvdy4uLiAqKipdPC9wPgoJCTxwPjxiPlRoZSBzaG9ydCBhbnN3ZXI6PC9iPiBuby48L3A+CgkJPHA+PGI+VGhlIGxvbmcgYW5zd2VyOjwvYj4geWVzLCBtb3N0IG9mIHRoZSB0aW1lLjwvcD4KCQk8cD5UaGUgbmFtZSBvZiB0aGUgc2VsZWN0ZWQgaXRlbSBvciBjYXRlZ29yeSBpcyByZXRyaWV2ZWQgb25seSB3aGVuIHRoZSA8Y29kZT57Y21zX21vZHVsZSBtb2R1bGU9InlvdXJtb2R1bGUifTwvY29kZT4gdGFnIGlzIGVuY291bnRlcmVkIGluIHRoZSB0ZW1wbGF0ZSAtIHdoaWNoIGlzIHF1aXRlIGFsd2F5cyB3YXkgYWZ0ZXIgdGhlIHBhZ2UncyBoZWFkLiBIb3dldmVyLCBpbiBtb3N0IGNhc2VzIGluIGNvdWxkIGJlIHJldHJpZXZlZCBieSBhIHVzZXItZGVmaW5lZCB0YWcgKFVEVCkuPC9wPgoJCTxwIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsiPk5vdGUgdGhhdCB0aGlzIHdpbGwgbm8gd29yayB3aGVuIHRoZSB0YWcgaXMgZGlyZWN0bHkgY2FsbGVkIG9uIHRoZSBwYWdlLCBhbmQgd2lsbCBvbmx5IHdvcmsgd2hlbiB3ZSBhcmUgZm9sbG93aW5nIGEgbW9kdWxlIGFjdGlvbiAod2hlbiB5b3UgaGF2ZSBjbGlja2VkIG9uIGEgbGluayk8L3A+CgkJPHA+Q3JlYXRlIHRoZSBmb2xsb3dpbmcgVURULCByZXBsYWNpbmcgTkFNRV9PRl9ZT1VSX01PRFVMRSB3aXRoIHlvdXIgbW9kdWxlJ3MgbmFtZTo8L3A+CgkJPHByZSBjbGFzcz0iY29kZSI+JG1vZHVsZW5hbWUgPSAnTkFNRV9PRl9ZT1VSX01PRFVMRSc7Cmdsb2JhbCAkZ0NtczsKaWYoIGlzc2V0KCRnQ21zLT5tb2R1bGVzWyRtb2R1bGVuYW1lXSkgJiYKICAgICRnQ21zLT5tb2R1bGVzWyRtb2R1bGVuYW1lXVsnYWN0aXZlJ10gJiYKICAgIGlzc2V0KCRwYXJhbXNbJ2Fzc2lnbiddKSApewoJZ2xvYmFsICRzbWFydHk7CgkkaW5zdGFuY2UgPSAkZ0Ntcy0+bW9kdWxlc1skbW9kdWxlbmFtZV1bJ29iamVjdCddOwoJJGdsb2IgPSAkaW5zdGFuY2UtPmdldF9tb2R1bGVHZXRWYXJzKCk7Cgkkd2FudGVkbGV2ZWwgPSBmYWxzZTsKCSRtb2RsZXZlbHMgPSAkaW5zdGFuY2UtPmdldF9sZXZlbGFycmF5KCk7CglpZihpc3NldCgkZ2xvYlsnYWxpYXMnXSkpewoJCSR3YW50ZWRsZXZlbCA9IGlzc2V0KCRnbG9iWyd3aGF0J10pPyRnbG9iWyd3aGF0J106JG1vZGxldmVsc1tjb3VudCgkbW9kbGV2ZWxzKS0xXTsKCQkkYWxpYXMgPSAkZ2xvYlsnYWxpYXMnXTsKCX1lbHNlaWYoaXNzZXQoJGdsb2JbJ3BhcmVudCddKSl7CgkJaWYoaXNzZXQoJGdsb2JbJ3doYXQnXSkpewoJCQkkd2FudGVkbGV2ZWwgPSAkaW5zdGFuY2UtPmdldF9uZXh0bGV2ZWwoJGdsb2JbJ3doYXQnXSwgZmFsc2UpOwoJCX1lbHNlewoJCQkkd2FudGVkbGV2ZWwgPSRtb2RsZXZlbHNbY291bnQoJG1vZGxldmVscyktMl07CgkJfQoJCSRhbGlhcyA9ICRnbG9iWydwYXJlbnQnXTsKCX0KCWlmKCR3YW50ZWRsZXZlbCl7CgkJJGdldGZ1bmN0aW9uID0gJ2dldF9sZXZlbF8nLiR3YW50ZWRsZXZlbDsKCQkkaXRlbSA9ICRpbnN0YW5jZS0+JGdldGZ1bmN0aW9uKGFycmF5KCdhbGlhcyc9PiRhbGlhcykpOwoJCWlmKGlzc2V0KCRpdGVtWzBdKSkJJHNtYXJ0eS0+YXNzaWduKCRwYXJhbXNbJ2Fzc2lnbiddLCRpdGVtWzBdKTsKCX0KfQoJPC9wcmU+Cgk8cD5MZXQncyBzYXkgeW91J3ZlIG5hbWVkIHlvdXIgdGFnICJyZXRyaWV2ZW1vZGluZm8iLiBUaGVuLCBhdCB0aGUgYmVnaW5uaW5nIG9mIHlvdXIgcGFnZSdzIHRlbXBsYXRlLCB5b3UgcmV0cmlldmUgdGhlIG1vZHVsZSBpbmZvcm1hdGlvbnMgYnkgdXNpbmcgdGhlIHRhZyA8Y29kZT57cmV0cmlldmVtb2RpbmZvIGFzc2lnbj0iY3VycmVudGVsZW1lbnQifTwvY29kZT4uIFRoaXMgbWVhbnMgdGhhdCB0aGUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGN1cnJlbnQgaXRlbSBhcmUgc3RvcmVkIGluIHRoZSB2YXJpYWJsZSAkY3VycmVudGVsZW1lbnQgKHdoaWNoIGNvdWxkIGhhdmUgYmVlbiBhbnl0aGluZykuIFNvIGluIHRoZSA8PC8+dGl0bGU+IHRhZyBvZiB5b3VyIHRlbXBsYXRlLCB5b3UgY291bGQgd3JpdGU6IDxjb2RlPntpZiAkY3VycmVudGVsZW1lbnR9eyRjdXJyZW50ZWxlbWVudC0+bmFtZX17L2lmfTwvY29kZT4sIHdoaWNoIHdvdWxkIGRpc3BsYXkgdGhlIG5hbWUgb2YgdGhlIGN1cnJlbnQgZWxlbWVudCBpZiBpdCBjb3VsZCBoYXZlIGJlZW4gcmV0cmlldmVkLjwvcD4KCTxwIHN0eWxlPSJjb2xvcjogcmVkOyBmb250LXdlaWdodDogYm9sZDsiPlVQREFURTogc2luY2UgdmVyc2lvbiAxLjgsIHlvdSBjYW4gZG8gdGhlIHNhbWUgdGhpbmcgbXVjaCBtb3JlIGVhc2lseSBqdXN0IGJ5IHVzaW5nIHRoZSAiYnJlYWRjcnVtYnMiIGFjdGlvbiBhbmQgaXRzIHBhcmFtZXRlcnMuPC9wPgoJCTwvZGl2PgoJCTxhIGNsYXNzPSJiYWNrdG90b3AiIGhyZWY9IiN0b3AiPkJhY2sgdG8gdG9wPC9hPgoJPC9kaXY+CgkKCgk8ZGl2IGNsYXNzPSJxZGl2IiBpZD0icTE2Ij4KCQk8ZGl2IGNsYXNzPSJxdWVzdGlvbiI+SG93IGNhbiBJIGFkZCBtb2R1bGUgZWxlbWVudHMgdG8gbXkgZ29vZ2xlIHNpdGVtYXA/PC9kaXY+CgkJPGRpdiBjbGFzcz0iYW5zd2VyIj4KCTxwPlRoaXMgd2lsbCBoZWxwIHlvdSBpbmNsdWRlIHRoZSBtb2R1bGUgZW50cmllcyB0byBhIGdvb2dsZSBzaXRlbWFwLCA8dT5wcm92aWRlZCB0aGF0IHlvdXIgbW9kdWxlIGVsZW1lbnRzIGFyZSBhbGwgZGlzcGxheWVkIG9uIHRoZSBzYW1lIHBhZ2U8L3U+LjwvcD48YnIvPgoJPHA+PGI+SWYgeW91IGFyZSB1c2luZyB0aGUgPGEgaHJlZj0iaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9wcm9qZWN0cy9nc2dlbmVyYXRvciI+Z29vZ2xlIHNpdGVtYXAgZ2VuZXJhdG9yIG1vZHVsZTwvYT46PC9iPjwvcD4KCTwvcD5PcGVuIHlvdXIgc2l0ZW1hcCBnZW5lcmF0b3IgKGdzaXRlbWFwLnBocCksIGFuZCBqdXN0IGJlZm9yZSB0aGUgY2xvc3VyZSBvZiB0aGUgdXJsc2V0ICg8Y29kZT5lY2hvICcgIDw8Lz4vdXJsc2V0PicuICJcbiI7PC9jb2RlPiksIGFkZCB0aGUgZm9sbG93aW5nIGxpbmVzOjwvcD4KCTxwcmUgY2xhc3M9ImNvZGUiPgoJJG1vZHVsZW5hbWUgPSAiTkFNRU9GTU9EVUxFIjsJLy8gQ0hBTkdFIFRISVMgVE8gVEhFIE5BTUUgT0YgWU9VUiBNT0RVTEUKCWlmKCAgaXNzZXQoJGdDbXMtPm1vZHVsZXNbJG1vZHVsZW5hbWVdKQoJCSYmICRnQ21zLT5tb2R1bGVzWyRtb2R1bGVuYW1lXVsiYWN0aXZlIl0KCQkmJiAkdGhlbW9kdWxlID0gJGdDbXMtPm1vZHVsZXNbJG1vZHVsZW5hbWVdWyJvYmplY3QiXQoJCSl7CgkJCQoJCS8vIEhFUkUgWU9VIE1VU1QgUFVUIFRIRSBJRCBPUiBBTElBUyBPRiBUSEUgUEFHRSBVU0VEIFRPIERJU1BMQVkgVEhFIE1PRFVMRSBFTEVNRU5UUzoKCQkkZGV0YWlscGFnZSA9ICJNWVBBR0UiOwoJCQoJCSRwYXJhbXMgPSBhcnJheSgibW9kZSI9PiJnb29nbGUiLCAiZGV0YWlscGFnZSI9PiRkZXRhaWxwYWdlKTsKCQkkdGhlbW9kdWxlLT5Eb0FjdGlvbigic2l0ZW1hcCIsICIiLCAkcGFyYW1zKTsKCX0KCTwvcHJlPgoJPHA+T2YgY291cnNlLCByZXBsYWNlIE5BTUVPRk1PRFVMRSBpbiB0aGUgZmlyc3QgbGluZSB3aXRoIHRoZSBuYW1lIG9mIHlvdXIgbW9kdWxlLCBhbmQgZW50ZXIgYSBkZXRhaWxwYWdlLCBiZSBpdCBhbiBpZCBvciBwYWdlIGFsaWFzLjwvcD4KCTxwPk5vdGUgdGhhdCB5b3UgY291bGQgYWxzbyB1c2UgdGhlICJ3aGF0IiBwYXJhbWV0ZXIgdG8gc3BlY2lmeSB3aGljaCBsZXZlbHMgeW91IHdpc2ggdG8gc2VlIGRpc3BsYXllZCAoeW91IGNhbiBzcGVjaWZ5IHNldmVyYWwgbGV2ZWxzIHdpdGggImxldmVsMXxsZXZlbDIiIGFuZCBzbyBvbikuIE90aGVyd2lzZSwgYWxsIGxldmVscyB3aWxsIGJlIGRpc3BsYXllZC48L3A+PC9icj4KCTxwPjxiPklmIHlvdSBhcmUgdXNpbmcgdGhlIDxhIGhyZWY9Imh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvc2l0ZW1hcG1zIj5TaXRlTWFwIE1hZGUgU2ltcGxlPC9hPiBtb2R1bGU6PC9iPjwvcD4KCTxwPlNpbXBseSBwdXQgdGhlIGNvZGUgYWJvdmUgaW4gYSBVRFQgKHVzZXItZGVmaW5lZC10YWcpLCBhbmQgY2FsbCB0aGUgVURUIGF0IHRoZSBlbmQgb2YgeW91ciBzaXRlbWFwJ3MgdGVtcGxhdGUsIGp1c3QgYmVmb3JlIDxjb2RlPjw8Lz4vdXJsc2V0PjwvY29kZT4uPC9wPgoJCTwvZGl2PgoJCTxhIGNsYXNzPSJiYWNrdG90b3AiIGhyZWY9IiN0b3AiPkJhY2sgdG8gdG9wPC9hPgoJPC9kaXY+CgoKCTxkaXYgY2xhc3M9InFkaXYiIGlkPSJxMTkiPgoJCTxkaXYgY2xhc3M9InF1ZXN0aW9uIj5Ib3cgY2FuIEkgYWRkIGFuIGV4cGlyYXRpb24gZmllbGQ/PC9kaXY+CgkJPGRpdiBjbGFzcz0iYW5zd2VyIj4KCTxwPllvdSB3aXNoIHRvIGFkZCBhIGRhdGUgZmllbGQgdGhhdCB3aWxsIGRlY2lkZSB3aGVuIHRoZSBpdGVtIHdpbGwgYmUgZGlzcGxheWVkIG9yIG5vdCAobGlrZSBpbiB0aGUgbmV3cyBtb2R1bGUpLiBJdCBzaG91bGRuJ3QgYmUgdmVyeSBoYXJkLjwvcD4KCTxwPlRvIGRvIHRoaXMsIHlvdSB3aWxsIG5lZWQgdHdvIGZpZWxkcyAob3IgdGhyZWUpOjwvcD4KCTx1bD4KCQk8bGk+QSAiY2hlY2tib3giIHR5cGUgZmllbGQgdG8gY2hvb3NlIHdoZXRoZXIgdGhlIGV4cGlyYXRpb24gZGF0ZSB3aWxsIGJlIHVzZWQgb3Igbm90ICh3ZSdsbCBjYWxsIGl0ICJ1c2VfZXhwaXJhdGlvbiIpPC9saT4KCQk8bGk+QSAiZGF0ZSIgdHlwZSBmaWVsZCB0byBjaG9vc2UgdGhlIGV4cGlyYXRpb24gZGF0ZSAod2UnbGwgY2FsbCBpdCAiZXhwaXJhdGlvbl9kYXRlIik8L2xpPgoJCTxsaT4ob3B0aW9uYWxseSkgQW5vdGhlciBkYXRlIGZpZWxkIChmb3IgYmVnaW4gZGF0ZSk8L2xpPgoJPC91bD4KCTxwPkZvciBzaW1wbGljaXR5LCBJIHdpbGwgYXNzdW1lIHdlIG5lZWQgb25seSBvbmUgZGF0ZSAoeW91IHNob3VsZCBmaWd1cmUgb3V0IHRoZSBwYXJ0IGZvciB0aGUgc2Vjb25kIGRhdGUpLjwvcD4KCTxwPkluIHlvdXIgbGlzdCB0ZW1wbGF0ZSwgdXNlIHRoZSBmb2xsb3dpbmcgY29kZTo8L3A+Cgk8cHJlIGNsYXNzPSJjb2RlIj4KCXtmb3JlYWNoIGZyb209JGl0ZW1saXN0IGl0ZW09Iml0ZW0ifQoJCXtpZiAkaXRlbS0+dXNlX2V4cGlyYXRpb24gJiYgKCRpdGVtLT5leHBpcmF0aW9uX2RhdGV8ZGF0ZV9mb3JtYXQ6IiVzIiAmbHQ7ICRzbWFydHkubm93KX0KCQkJdGhlIGNvZGUgdG8gZGlzcGxheSB0aGUgaXRlbS4uLgoJCXsvaWZ9Cgl7L2ZvcmVhY2h9Cgk8L3ByZT4KCTxwPkJhc2ljYWxseSwgd2Ugb25seSBkaXNwbGF5IHRoZSBpdGVtIHdoZW4gYSBjb25kaXRpb24gaXMgbWV0LCBuYW1lbHkgdGhhdCB1c2VfZXhwaXJhdGlvbiBpcyBvbiwgYW5kIHRoYXQgdGhlIGV4cGlyYXRpb24gZGF0ZSBpcyBsb3dlciAoYmVmb3JlKSB0aGUgY3VycmVudCBkYXRlLiBUbyBkbyB0aGUgb3Bwb3NpdGUsIHlvdSBjYW4ganVzdCBjaGFuZ2UgdGhlICZsdDsgdG8gYSAmZ3Q7LjwvcD4KCQk8L2Rpdj4KCQk8YSBjbGFzcz0iYmFja3RvdG9wIiBocmVmPSIjdG9wIj5CYWNrIHRvIHRvcDwvYT4KCTwvZGl2PgoKCgk8ZGl2IGNsYXNzPSJxZGl2IiBpZD0icTIwIj4KCQk8ZGl2IGNsYXNzPSJxdWVzdGlvbiI+SG93IGNhbiBJIHNldHVwIHRoZSBmcm9udGVuZCBlZGl0IGFjdGlvbiB3aXRoIHRoZSBGcm9udCBFbmQgVXNlcnMgbW9kdWxlPzwvZGl2PgoJCTxkaXYgY2xhc3M9ImFuc3dlciI+Cgk8cD5UaGlzIGlzIGRvbmUgaW4gdHdvIHBhcnRzLiBUaGUgZmlyc3QgcGFydCBpcyB0byBkaXNwbGF5IHRoZSBlZGl0IGxpbmsgb3IgZWRpdCBmb3JtIG9ubHkgdG8gc2VsZWN0ZWQgdXNlcnMgKG9yIGxvZ2dlZCBpbiB1c2VycykuIFRoaXMgaXMgdG8gYmUgZG9uZSB3aXRoIHRoZSBGRVUgbW9kdWxlIChhbmQgcG9zc2libHkgQ3VzdG9tIENvbnRlbnQpLCBhbmQgYXMgc3VjaCB3aWxsIG5vdCBiZSBjb3ZlcmVkIGhlcmUuIFRoaXMgaXMgb25seSBhYm91dCA8aT5oaWRpbmc8L2k+IHRoZSBlZGl0aW9uIGZyb20gb3RoZXIgdXNlcnMuIFRoZSBzZWNvbmQgcGFydCwgd2hpY2ggd2lsbCBiZSBjb3ZlcmVkIGhlcmUsIGlzIGFib3V0IHRoZSByZWFsIHByb3RlY3Rpb24uIFNhZGx5LCB0aGlzIHdpbGwgcmVxdWlyZSBhIGxpdHRsZSBwcm9ncmFtbWluZywgYnV0IGV2ZXJ5b25lIHNob3VsZCBiZSBhYmxlIHRvIGdldCB0aHJvdWdoIHRoaXMgZWFzaWx5LjwvcD4KCTxwPklmIHlvdSdyZSB3b25kZXJpbmcgaG93IHRvIGNoYW5nZSB0aGUgbG9vayBvZiB0aGUgZm9ybSwgc2VlIHRoZSBmcm9udGVuZF9hZGRfKi50cGwgdGVtcGxhdGVzIGluIHRoZSB0ZW1wbGF0ZXMgZm9sZGVyLjwvcD4KCTxwPkJlZm9yZSBlZGl0aW5nIGFuIGl0ZW0gdGhyb3VnaCB0aGUgZnJvbnRlbmQsIHRoZSBmdW5jdGlvbiBmZWFkZF9wZXJtY2hlY2sgKHdob3NlIGNvbnRlbnQgaXMgaW4gdGhlIGZpbGUgZnVuY3Rpb24uZmVhZGRfcGVybWNoZWNrLnBocCkgaXMgY2FsbGVkLiBJZiBpdCByZXR1cm5zIHRydWUgKGlmIHRoZSB2YWx1ZSBvZiB0aGUgJHJldHVybiB2YXJpYWJsZSBpcyBzZXQgdG8gdHJ1ZSksIHRoZSB1c2VyIGhhcyBwZXJtaXNzaW9uIHRvIGVkaXQgdGhlIGl0ZW0sIG90aGVyd2lzZSAoaWYgaXQgcmV0dXJucyBmYWxzZSksIHRoZSBhY2Nlc3MgaXMgZGVuaWVkLjxici8+CglJZiB5b3Ugb3BlbiB0aGUgZmlsZSBmdW5jdGlvbi5mZWFkZF9wZXJtY2hlY2sucGhwLCB5b3Ugd2lsbCBub3RpY2UgdGhhdCBhc2lkZSBmcm9tIGNvbW1lbnRzLCB0aGUgZnVuY3Rpb24gaXMgZW1wdHkuIFdlIHdpbGwgaGF2ZSB0byBmaWxsIGl0IG91dCBkZXBlbmRpbmcgb24gd2hhdCB3ZSB3aXNoIHRvIGRvLjwvcD4KCTxwPlRoZSB2YXJpYWJsZXMgYXQgb3VyIGRpc3Bvc2l0aW9uIGFyZSB0aGUgZm9sbG93aW5nOjx1bD4KCQk8bGk+JGdDbXMgKHRoZSBnbG9iYWwgY21zIG9iamVjdCwgdGhyb3VnaCB3aGljaCB3ZSB3aWxsIGJlIGFibGUgdG8gY2FsbCB0aGUgRkVVIG1vZHVsZSk8L2xpPgoJCTxsaT4kd2hhdCAodGhlIGxldmVsIG9mIHRoZSBpdGVtIHdlIGFyZSBhdHRlbXB0aW5nIHRvIGVkaXQsIGFzIGdpdmVuIGJ5IHRoZSAid2hhdCIgcGFyYW1ldGVyKTwvbGk+CgkJPGxpPiRhbGlhcyAodGhlIGFsaWFzIG9mIHRoZSBpdGVtIHdlIGFyZSBhdHRlbXB0aW5nIHRvIGVkaXQuIElmIGl0IGlzIGEgbmV3IGl0ZW0sICRhbGlhcyBzaG91bGQgYmUgZmFsc2UpPC9saT4KCQk8bGk+JGl0ZW1pZCAodGhlIGlkIG9mIHRoZSBpdGVtIHdlIGFyZSBhdHRlbXB0aW5nIHRvIGVkaXQuIElmIGl0IGlzIGEgbmV3IGl0ZW0sICRpdGVtaWQgc2hvdWxkIGJlIGZhbHNlKTwvbGk+Cgk8L3VsPjwvcD4KCTxwPllvdSBtaWdodCBuZWVkIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIG9mIHRoZSBGRVUgbW9kdWxlOjx1bD4KCQk8bGk+TG9nZ2VkSW4oKSB3aWxsIHJldHVybiB0cnVlIGlmIHRoZSB1c2VyIGlzIGxvZ2dlZCBpbiwgYW5kIGZhbHNlIG90aGVyd2lzZS48L2xpPgoJCTxsaT5Mb2dnZWRJbklkKCkgd2lsbCByZXR1cm4gdGhlIGlkIG9mIHRoZSB1c2VyPC9saT4KCQk8bGk+TG9nZ2VkSW5OYW1lKCkJd2lsbCByZXR1cm4gdGhlIHVzZXJuYW1lIG9mIHRoZSB1c2VyPC9saT4KCQk8bGk+TWVtYmVyT2ZHcm91cCgkdXNlcmlkLCRncm91cGlkKQkJcmV0dXJucyB0cnVlIGlmIHRoZSB1c2VyIGlzIGEgbWVtYmVyIG9mIHRoZSBncm91cCwgZmFsc2Ugb3RoZXJ3aXNlPC9saT4KCQk8bGk+R2V0R3JvdXBJRCgkZ3JvdXBuYW1lKQlyZXR1cm5zIHRoZSBncm91cCBpZCBhc3NvY2lhdGVkIHRvIGEgZ3JvdXAgbmFtZTwvbGk+Cgk8L3VsPjwvcD48YnIvPgoJPHA+Tm93LCBoZXJlIGFyZSB0aHJlZSBiYXNpYyBleGFtcGxlcyBvZiBob3cgdG8gdXNlIHRoaXMuPC9wPgoJPHA+PGI+QWxsb3dpbmcgb25seSBsb2dnZWQgaW4gdXNlcnM8L2I+PGJyLz4KCUhlcmUncyBob3cgdG8gYWxsb3cgb25seSBsb2dnZWQgaW4gdXNlcnMgdG8gZWRpdCBpdGVtczo8L3A+Cgk8cHJlIGNsYXNzPSJjb2RlIj4KCSRyZXR1cm4gPSBmYWxzZTsKCSRGRVUgPSAkdGhpcy0+R2V0TW9kdWxlSW5zdGFuY2UoJ0Zyb250RW5kVXNlcnMnKTsKCWlmKCRGRVUgJiYgJEZFVS0+TG9nZ2VkSW4oKSl7CgkJJHJldHVybiA9IHRydWU7Cgl9Cgk8L3ByZT48YnIvPgoJPHA+PGI+QWxsb3dpbmcgb25seSBtZW1iZXJzIG9mIGEgZ3JvdXA8L2I+PGJyLz4KCUhlcmUncyBob3cgdG8gYWxsb3cgb25seSBtZW1iZXJzIG9mIHRoZSBncm91cCAibXlncm91cCIgdG8gZWRpdCBpdGVtczo8L3A+Cgk8cHJlIGNsYXNzPSJjb2RlIj4KCSRyZXR1cm4gPSBmYWxzZTsKCSRGRVUgPSAkdGhpcy0+R2V0TW9kdWxlSW5zdGFuY2UoJ0Zyb250RW5kVXNlcnMnKTsKCWlmKCRGRVUpewoJCWlmKCRGRVUtPkxvZ2dlZEluKCkpewoJCQkkdXNlcmlkID0gJEZFVS0+TG9nZ2VkSW5JZCgpOwoJCQkkZ3JvdXBpZCA9ICRGRVUtPkdldEdyb3VwSUQoIm15Z3JvdXAiKTsKCQkJaWYoJEZFVS0+TWVtYmVyT2ZHcm91cCgkdXNlcmlkLCAkZ3JvdXBpZCkpewoJCQkJJHJldHVybiA9IHRydWU7CgkJCX0KCQl9Cgl9Cgk8L3ByZT48YnIvPgoJPHA+PGI+QWxsb3dpbmcgbWVtYmVycyB0byBlZGl0IG9ubHkgYSBzaW5nbGUgZWxlbWVudDwvYj48YnIvPgoJU3VwcG9zZSB5b3UgaGF2ZSBhIEZFVSBtZW1iZXIgY29ycmVzcG9uZGluZyB0byBlYWNoIG9mIHlvdXIgaXRlbSwgYW5kIHRoYXQgdGhlIHVzZXJuYW1lIG9mIHRoYXQgbWVtYmVyIGlzIHRoZSBhbGlhcyBvZiB0aGUgaXRlbSAoc2VlIGJlbG93IG9uIGhvdyB0byBkbyB0aGlzKS4gWW91IGNvdWxkIHJlc3RyaWN0IGFjY2VzcyBpbiB0aGUgZm9sbG93aW5nIHdheTo8L3A+Cgk8cHJlIGNsYXNzPSJjb2RlIj4KCSRyZXR1cm4gPSBmYWxzZTsKCSRGRVUgPSAkdGhpcy0+R2V0TW9kdWxlSW5zdGFuY2UoJ0Zyb250RW5kVXNlcnMnKTsKCWlmKCRGRVUpewoJCWlmKCRGRVUtPkxvZ2dlZEluKCkpewoJCQkkdXNlcm5hbWUgPSAkRkVVLT5Mb2dnZWRJbk5hbWUoKTsKCQkJaWYoJHVzZXJuYW1lID09ICRhbGlhcyl7CgkJCQkkcmV0dXJuID0gdHJ1ZTsKCQkJfQoJCX0KCX0KCTwvcHJlPgoJPHA+VXNpbmcgJEZFVS0+R2V0VXNlclByb3BlcnR5KCRwcm9wZXJ0eW5hbWUpLCB5b3UgY291bGQgdXNlIHNvbWV0aGluZyBlbHNlIHRoYW4gdGhlIHVzZXJuYW1lLjxici8+CglJZiBwZXJtaXNzaW9ucyBkZXBlbmQgb24gdGhlIGFsaWFzIG9mIHRoZSBpdGVtLCB5b3Ugc2hvdWxkIG1ha2Ugc3VyZSAoc2VlIFNldHRpbmdzKSB0aGF0IHlvdXIgZnJvbnRlbmQgdXNlcnMgY2FuJ3QgY2hhbmdlIGl0LjwvcD48YnIvPgoJPHA+U2hvdWxkIHlvdSBuZWVkIG1vcmUgaW5mb3JtYXRpb25zIGFib3V0IHRoZSBpdGVtLCB5b3UgY2FuIHVzZSB0aGUgZm9sbG93aW5nIHNuaXBwZXQgdG8gbG9hZCB0aGUgZnVsbCBpdGVtIG9iamVjdDo8L3A+Cgk8cHJlIGNsYXNzPSJjb2RlIj4KCSRnZXRmdW5jdGlvbiA9ICJnZXRfbGV2ZWxfIi4kd2hhdDsKCSRpdGVtbGlzdCA9ICR0aGlzLT4kZ2V0ZnVuY3Rpb24oYXJyYXkoImlkIj0+JGl0ZW1pZCkpOwoJJGl0ZW0gPSBpc3NldCgkaXRlbWxpc3RbMF0pPyRpdGVtbGlzdFswXTpmYWxzZTs8L3ByZT48YnIvPgoJPHA+RmluYWxseSwgeW91IG1heSB1c2UgJHdoYXQgdmFyaWFibGUgdG8gaGF2ZSBkaWZmZXJlbnQgcGVybWlzc2lvbiBtYW5hZ2VtZW50IGZvciBlYWNoIGxldmVsLiBBIHN3aXRjaCB3b3VsZCBiZSB0aGUgdHlwaWNhbCBzb2x1dGlvbjo8L3A+Cgk8cHJlIGNsYXNzPSJjb2RlIj4KCXN3aXRjaCgkd2hhdCl7CgkJY2FzZSAibGV2ZWwxIjoKCQkJLy8gY29kZQoJCQlicmVhazsKCQljYXNlICJsZXZlbDIiOgoJCQkvL2NvZGUKCQkJYnJlYWs7CgkJLi4uKGFuZCBzbyBvbikKCX08L3ByZT48YnIvPgoJPHA+PGI+VHJpZ2dlcmluZyB0aGUgY3JlYXRpb24gb2YgYSBGRVUgbWVtYmVyIGZvciBlYWNoIGl0ZW08L2I+PGJyLz4KCUlmIHlvdSdyZSB1c2luZyBzb21ldGhpbmcgc2ltaWxhciB0byB0aGUgbGFzdCBleGFtcGxlLCB5b3UgbmVlZCB0byBoYXZlIGEgRkVVIHVzZXIgZm9yIGVhY2ggaXRlbS4gVGhpcyBjYW4gYmUgZG9uZSB1c2luZyBldmVudHMuPGJyLz4KCUV2ZXJ5dGltZSBhbiBpdGVtIGlzIGFkZGVkLCBtb2RpZmllZCBvciBkZWxldGVkLCB0aGUgbW9kdWxlcyBzZW5kcyBhbiA8aT5ldmVudDwvaT4gdG8gdGhlIGNtcy4gSWYgeW91IGdvIGludG8gRXh0ZW5zaW9ucyAtPiBFdmVudCBNYW5hZ2VyLCB5b3Ugc2hvdWxkIGZpbmQgdGhlIGV2ZW50cyBzZW50IGJ5IHlvdXIgbW9kdWxlIGluIHRoZSBsaXN0LiBDbGljaywgZm9yIGV4YW1wbGUsIG9uIHRoZSBtb2R1bGVuYW1lX2FkZGVkIGV2ZW50LiBZb3Ugd2lsbCBub3RpY2UgdGhhdCBoZXJlLCB5b3UgY2FuIHNlbGVjdCBhIFVzZXIgRGVmaW5lZCBUYWcgKFVEVCkgdGhhdCB3aWxsIGJlIGNhbGxlZCB3aGVuIHRoZSBldmVudCBpcyB0cmlnZ2VyZWQuIFNvIHdlIHNpbXBseSBuZWVkIHRvIGRlc2lnbiBhbiBVRFQgdGhhdCB3aWxsIGFkZCBhIG1lbWJlciB3aGVuIGEgbmV3IGl0ZW0gaXMgY3JlYXRlZC48L3A+Cgk8cD5XZSB3aWxsIGFzc3VtZSB5b3VyIGl0ZW0gaGFzIGEgZmllbGQgbmFtZWQgInBhc3N3b3JkIiwgd2hpY2ggd2lsbCBiZSB1c2VkIGFzIHRoZSBGRVUgcGFzc3dvcmQsIHRoYXQgeW91ciBtb2R1bGUgaXMgbmFtZWQgIk5BTUVPRk1PRFVMRSIsIGFuZCB0aGUgbGV2ZWwgaXMgbmFtZWQgIk1ZTEVWRUwiLiBMb29rIGF0IHRoZSBmb2xsb3dpbmcgVURUOjwvcD4KCQk8cHJlIGNsYXNzPSJjb2RlIj4KCS8vIGZpcnN0LCB3ZSBjaGVjayBpZiBhbiBpdGVtIGhhcyBiZWVuIGFkZGVkIG9uIHRoZSBsZXZlbCB3ZSdyZSBjb25jZXJuZWQgd2l0aAoJaWYoJHBhcmFtc1sid2hhdCJdICE9ICJNWUxFVkVMIikJcmV0dXJuIGZhbHNlOwoJCgkvLyB3ZSByZXRyaWV2ZSB0aGUgdHdvIG1vZHVsZXMKCSRGRVUgPSAkdGhpcy0+R2V0TW9kdWxlSW5zdGFuY2UoJ0Zyb250RW5kVXNlcnMnKTsKCSRteW1vZCA9ICR0aGlzLT5HZXRNb2R1bGVJbnN0YW5jZSgnTkFNRU9GTU9EVUxFJyk7CglpZighJEZFVSB8fCAhJG15bW9kKQlyZXR1cm4gZmFsc2U7CgkKCS8vIHdlIHRoZW4gcmV0cmlldmUgdGhlIGl0ZW0KCSRpdGVtbGlzdCA9ICRteW1vZC0+Z2V0X01ZTEVWRUwoYXJyYXkoImlkIj0+JHBhcmFtc1siaXRlbWlkIl0pKTsKCWlmKCFpc3NldCgkaXRlbWxpc3RbMF0pKQlyZXR1cm4gZmFsc2U7CgkkaXRlbSA9ICRpdGVtbGlzdFswXTsKCQoJLy8gd2UgdGhlbiBhZGQgdGhlIEZFVSB1c2VyCgkkZXhwaXJlc19pbiA9IDM2NTsgLy8gc2V0cyB0aGUgbnVtYmVyIG9mIGRheXMgdW50aWwgZXhwaXJhdGlvbgoJJGV4cGlyZXMgPSBzdHJ0b3RpbWUoc3ByaW50ZigiKyVkIGRheXMiLCRleHBpcmVzX2luKSwgdGltZSgpKTsKCSRGRVUtPkFkZFVzZXIoJGl0ZW0tPm5hbWUsICRpdGVtLT5wYXNzd29yZCwgJGV4cGlyZXMpOwoJCTwvcHJlPgoJCTwvZGl2PgoJCTxhIGNsYXNzPSJiYWNrdG90b3AiIGhyZWY9IiN0b3AiPkJhY2sgdG8gdG9wPC9hPgoJPC9kaXY+CgoKCTxkaXYgY2xhc3M9InFkaXYiIGlkPSJxMyI+CgkJPGRpdiBjbGFzcz0icXVlc3Rpb24iPkNhbiBJIGNoYW5nZSBob3cgdGhlIHByZXR0eSB1cmxzIGFyZSBnZW5lcmF0ZWQgYW5kIGludGVycHJldGVkPzwvZGl2PgoJCTxkaXYgY2xhc3M9ImFuc3dlciI+CgkJPHA+PGI+WWVzLCB0byBzb21lIGV4dGVudC48L2I+PC9wPgoJCTxwPkknbGwgdHJ5IHRvIG1ha2UgdGhpcyB2ZXJ5IGNvbXByZWhlbnNpdmUuIEJlZm9yZSB0YWxraW5nIG9mIG1vZHlpbmcgaXQsIGxldCdzIHNlZSBob3cgdGhpcyB3b3Jrcy48L3A+CgkJPHA+QmFzaWNhbGx5LCB0aGUgbW9kdWxlIGhhcyB0d28ga2luZHMgb2YgdXJsczo8YnI+CgkJVHlwZSBBOiA8Y29kZT5odHRwOi8vd3d3Lm15ZG9tYWluLmNvbS9uYW1lb2Ztb2R1bGUvZGV0YWlsL25hbWVvZm9iamVjdC81LzwvY29kZT48YnIvPgoJCWFuZDxici8+CgkJVHlwZSBCOiA8Y29kZT5odHRwOi8vd3d3Lm15ZG9tYWluLmNvbS9uYW1lb2Ztb2R1bGUvbmFtZW9mbGV2ZWwvbmFtZW9mcGFyZW50LzUvPC9jb2RlPjxici8+CgkJKGlmIHlvdSBhcmUgc2VwYXJhdGluZyBlbGVtZW50cyBpbnRvIHBhZ2VzLCB5b3Ugd2lsbCBub3RpY2UgdGhhdCB0eXBlIEIgaGFzIHNvbWUgdmFyaWF0aW9ucy4uLiB3ZSB3aWxsIGRpc2N1c3MgdGhpcyBsYXRlci4pPC9wPgoJCTxwPlR5cGUgQSBpcyB1c2VkIHdoZW4gd2UgYXJlIGxvb2tpbmcgYXQgdGhlIGRldGFpbHMgb2YgYSBsYXN0LWxldmVsIG9iamVjdC4gVHlwZSBCIGlzIHVzZWQgd2hlbiB3ZSBkaXNwbGF5IGEgbGlzdCBvZiBpdGVtcy4gTm93LCByZW1lbWJlciB0aGF0IHRoZSB1cmwgaGFzIHRvIGNvbnRhaW4gYWxsIHRoZSBpbmZvcm1hdGlvbiBhYm91dCB3aGF0IHNob3VsZCBiZSBkaXNwbGF5ZWQuIFNvIGxldCdzIHRha2UgYSBsb29rIGFib3V0IHdoYXQncyBjb21tb24gdG8gYm90aCB0eXBlcyBvZiB1cmxzOjwvcD4KCQk8cD5UaGUgPGI+bmFtZW9mbW9kdWxlLzwvYj4gdGVsbHMgdXMgdGhhdCB0aGUgbW9kdWxlIHNob3VsZCBiZSBjYWxsZWQuPGJyLz4KCQlUaGUgPGI+NS88L2I+ICh0aGF0IGFubm95aW5nIG51bWJlcikgaXMgdGhlIHJldHVybmlkIG9mIHRoZSBwYWdlLiBJbiBvdGhlciB3b3JkcywgaXQgdGVsbHMgdXMgb24gd2hhdCBwYWdlIG9mIHRoZSBjbXMgdGhlIGluZm9ybWF0aW9ucyBvZiB0aGUgbW9kdWxlIHNob3VsZCBiZSBzaG93bi4gRXZlbiB0aG91Z2ggdGhlIHBhZ2UgY29udGVudCBpcyByZXBsYWNlZCBieSB3aGF0IHRoZSBtb2R1bGUgaGFzIHRvIGRpc3BsYXksIHRoaXMgaXMgdmVyeSBpbXBvcnRhbnQgYXMgaXQgZGV0ZXJtaW5lcywgZm9yIGluc3RhbmNlLCB3aGF0IHBhZ2UgdGVtcGxhdGUgc2hvdWxkIGJlIHVzZWQuPC9wPgoJCTxwPldoZW4gdGhlIDxiPi9kZXRhaWwvPC9iPiBpcyBpbiB0aGUgdXJsLCB0aGUgbW9kdWxlIGtub3dzIHRoYXQgd2UncmUgZGlzcGxheWluZyB0aGUgZGV0YWlscyBvZiBhIGxhc3QgbGV2ZWwgaXRlbS4gQWxsIHdlIG5lZWQgdG8gc3BlY2lmeSBpcyB3aGljaCBpdGVtIHRvIGRpc3BsYXksIGFuZCB0aGF0cyB0aGUgPGI+bmFtZW9mb2JqZWN0PC9iPiBwYXJ0LjwvcD4KCQk8cD5XaGVuIHRoZSA8Yj4vZGV0YWlsLzwvYj4gPGk+aXNuJ3Q8L2k+IGluIHRoZSB1cmwsIHRoZSBtb2R1bGUgY29uY2x1ZGVzIHRoYXQgd2UgYXJlIGRpc3BsYXlpbmcgYSBsaXN0IG9mIHNvbWV0aGluZyouIFRoZSBlbGVtZW50cyBvZiB3aGF0IGxldmVsIGFyZSBkaXNwbGF5ZWQgaXMgZGV0ZXJtaW5lZCBieSB3aGF0ZXZlciBpcyBpbiB0aGUgcGxhY2Ugb2YgIi9kZXRhaWwvIjogaW4gb3VyIGNhc2UsIDxiPm5hbWVvZmxldmVsLzwvYj4uIEEgdXJsIGxpa2UgPGNvZGU+aHR0cDovL3d3dy5teWRvbWFpbi5jb20vbmFtZW9mbW9kdWxlL3Byb2R1Y3QvNS88L2NvZGU+IHdvdWxkIGJlIHZhbGlkLCBhbmQgd291bGQgdGVsbCB0aGUgbW9kdWxlIHRvIGRpc3BsYXkgYWxsIGVsZW1lbnRzIG9mIHRoZSAicHJvZHVjdCIgbGV2ZWwuPGJyLz4KCQlUaGUgPGI+L25hbWVvZnBhcmVudC88L2I+IHBhcnQgdGVsbHMgdGhlIG1vZHVsZSB0byBkaXNwbGF5IG9ubHkgdGhlIGl0ZW1zIG9mIHRoZSBjaG9zZW4gbGV2ZWwgdGhhdCBoYXZlICJuYW1lb2ZwYXJlbnQiIGFzIGEgcGFyZW50LjwvcD4KCQk8cD5UaGUgcHJldHR5IHVybHMgYXJlIHJlZ2lzdGVyZWQgaW4gdGhlIFNldFBhcmFtZXRlcnMoKSBmdW5jdGlvbiBvZiB0aGUgbWFpbiBtb2R1bGUgZmlsZSAod2hpY2ggc2hvdWxkIGJlIHNvbWV0aGluZyBsaWtlIE5BTUVPRllPVVJNT0RVTEUubW9kdWxlLnBocCkuIE9wZW4gdGhpcyBmaWxlLCBhbmQgZG8gYSBzZWFyY2ggdG8gZmluZCB0aGUgZnVuY3Rpb24uIFdoYXQgbWF0dGVycyBpbiB0aGVyZSBpcyB0aGUgbGluZXMgdGhhdCBsb29rIGxpa2UgdGhpcyAod2l0aG91dCB0aGUgbnVtYmVycyBvbiB0aGUgbGVmdCkgOjwvcD4KCQk8cHJlIGNsYXNzPSJjb2RlIj4KIzEJJHRoaXMtPlJlZ2lzdGVyUm91dGUoIi9bbk5dYW1lb2Ztb2R1bGVcLyhbRGRdZXRhaWwpXC8oP1A8YWxpYXM+W15cL10rKVwvKD9QPHJldHVybmlkPlswLTldKykkLyIpOwojMgkkdGhpcy0+UmVnaXN0ZXJSb3V0ZSgiL1tuTl1hbWVvZm1vZHVsZVwvKD9QPHdoYXQ+W15cL10rKVwvKD9QPHJldHVybmlkPlswLTldKykkLyIpOwojMwkkdGhpcy0+UmVnaXN0ZXJSb3V0ZSgiL1tuTl1hbWVvZm1vZHVsZVwvKD9QPHdoYXQ+W15cL10rKVwvKD9QPHBhcmVudD5bXlwvXSspXC8oP1A8cmV0dXJuaWQ+WzAtOV0rKSQvIik7CiM0CSR0aGlzLT5SZWdpc3RlclJvdXRlKCIvW25OXWFtZW9mbW9kdWxlXC8oP1A8d2hhdD5bXlwvXSspXC8oP1A8cGFnZWluZGV4PlswLTldKylcLyg/UDxuYnBlcnBhZ2U+WzAtOV0rKVwvKD9QPHJldHVybmlkPlswLTldKykkLyIpOwojNQkkdGhpcy0+UmVnaXN0ZXJSb3V0ZSgiL1tuTl1hbWVvZm1vZHVsZVwvKD9QPHdoYXQ+W15cL10rKVwvKD9QPHBhcmVudD5bXlwvXSspXC8oP1A8cGFnZWluZGV4PlswLTldKylcLyg/UDxuYnBlcnBhZ2U+WzAtOV0rKVwvKD9QPHJldHVybmlkPlswLTldKykkLyIpOzwvcHJlPgoJCTxwPkVhY2ggbGluZSBoZXJlIHJlZ2lzdGVyIGEgZGlmZmVyZW50IHVybCBzdHJ1Y3R1cmUuPGJyLz4KCQlMaW5lICMxIHJlZ2lzdGVycyB0aGUgVHlwZSBBIHVybHMuPGJyLz4KCQlBbGwgdGhlIG90aGVyIGxpbmVzIHJlZ2lzdGVyIFR5cGUgQiB1cmxzOjxici8+CgkJTGluZSAjMiBpcyBmb3Igd2hlbiBubyBwYXJlbnQgaXMgc3BlY2lmaWVkLCBsaWtlIGluIDxjb2RlPmh0dHA6Ly93d3cubXlkb21haW4uY29tL25hbWVvZm1vZHVsZS9uYW1lb2ZsZXZlbC81PC9jb2RlPjxici8+CgkJTGluZSAjMyBpcyB1c2VkIHdoZW4gYSBwYXJlbnQgaXMgc3BlY2lmaWVkLCBsaWtlIGluIDxjb2RlPmh0dHA6Ly93d3cubXlkb21haW4uY29tL25hbWVvZm1vZHVsZS9uYW1lb2ZsZXZlbC9uYW1lb2ZwYXJlbnQvNTwvY29kZT48YnIvPgoJCUxpbmUgIzQgaXMgYSB2YXJpYXRpb24gb2YgbGluZSAjMiB0aGF0IGhhbmRsZXMgc2VwYXJhdGlvbiBpbnRvIHBhZ2VzICh3aGVuIHdlIHNlcGFyYXRlIGludG8gcGFnZXMsIHdlIG5lZWQgdG8ga25vdyB3aGljaCBwYWdlIHdlJ3JlIGxvb2tpbmcgYXQpLiBGb3IgZXhhbXBsZSwgPGNvZGU+aHR0cDovL3d3dy5teWRvbWFpbi5jb20vbmFtZW9mbW9kdWxlL3Byb2R1Y3QvMi8xMC81PC9jb2RlPiB3b3VsZCBtZWFuIHRoYXQgd2UgYXJlIGxvb2tpbmcgYXQgdGhlIGxpc3Qgb2YgYWxsIGl0ZW1zIG9mIHRoZSAicHJvZHVjdCIgbGV2ZWwsIHRoYXQgd2UgYXJlIHNlcGFyYXRpbmcgaW4gcGFnZXMgd2l0aCAiMTAiIGVsZW1lbnRzIHBlciBwYWdlLCBhbmQgdGhhdCB3ZSBhcmUgbG9va2luZyBhdCB0aGUgcGFnZSAiMiIuPGJyLz4KCQlJbiBwcmV0dHkgbXVjaCB0aGUgc2FtZSB3YXksIGxpbmUgIzUgaXMgYSB2YXJpYXRpb24gb2YgbGluZSAjMy48L3A+CgkJPHA+VGhlIDw8Lz5wYXJhbW5hbWU+IHRoaW5nIG1lYW5zIHRoYXQgd2hhdGV2ZXIgaXMgaW4gdGhhdCBwbGFjZSBpbiB0aGUgdXJsIHdpbGwgYmUgaW50ZXJwcmV0ZWQgYXMgdGhlICJwYXJhbW5hbWUiIHBhcmFtZXRlci4gSW4gb3RoZXIgd29yZHMsIGVhY2ggdXJsIHN0cnVjdHVyZSBvdXRwdXQgZGlmZmVyZW50IHBhcmFtZXRlcnMgdGhhdCB3aWxsIHRlbGwgdGhlIG1vZHVsZSB3aGF0IHRvIGRvLjwvcD4KCQk8cD48Yj5Nb2RpZnlpbmcgYWxsIHRoaXMuLi48L2I+PGJyLz4KCQlUaGVyZSBhcmUgc29tZSB0aGluZ3MgdGhhdCB5b3UgY2FuIGNoYW5nZSwgc29tZSB0aGF0IHlvdSBjYW4ndCwgYW5kIHNvbWUgdGhhdCB5b3UgY2FuIGF0IGEgcHJpY2UuPC9wPgoJCTxwPkxldCdzIHNheSB5b3UgZG9uJ3QgbGlrZSB0aGUgd29yZCAiPGI+ZGV0YWlsPC9iPiIgaW4gdGhlIHVybCwgYW5kIHdvdWxkIGxpa2UgdG8gY2hhbmdlIGl0IHRvIHNvbWV0aGluZyBlbHNlKiouIEZpcnN0LCBsZXQncyBub3QgdGhhdCB0aGUgIltEZF0iIHBhcnQgaW4gdGhlIHVybCBzdHJ1Y3R1cmUgc2F5cyB0aGF0IHRoZXJlIGNhbiBiZSBlaXRoZXIgYSAiRCIgb3IgYSAiZCIgaGVyZS4gCgkJSW4gb3RoZXIgd29yZHMsIDxjb2RlPmh0dHA6Ly93d3cubXlkb21haW4uY29tL25hbWVvZm1vZHVsZS9kZXRhaWwvbmFtZW9mb2JqZWN0LzUvPC9jb2RlPiBpcyB0aGUgc2FtZSB0aGluZyBhcyA8Y29kZT5odHRwOi8vd3d3Lm15ZG9tYWluLmNvbS9uYW1lb2Ztb2R1bGUvRGV0YWlsL25hbWVvZm9iamVjdC81LzwvY29kZT4uPGJyLz4KCQlZb3UgY2FuIGNoYW5nZSB0aGUgd29yZCAiZGV0YWlsIiBmb3Igc29tZXRoaW5nIGVsc2UsIGJ1dCB5b3UgaGF2ZSB0byBiZSBjYXJlZnVsIGFuZCByZW1lbWJlciB0aGF0IHRoZSB1cmwgY2FycnkgYWxsIG5lY2Vzc2FyeSBpbmZvcm1hdGlvbiBhYm91dCB3aGF0IHNob3VsZCBiZSBzaG93bi4gRm9yIGV4YW1wbGUsIGlmIG9uZSBvZiB5b3VyIGxldmVsIGlzIG5hbWVkICJwcm9kdWN0IiwgeW91IGNvdWxkbid0IHJlcGxhY2UgdGhlIHdvcmQgImRldGFpbCIgYnkgdGhlIHdvcmQgInByb2R1Y3QiLiBJZiB5b3UgZGlkLCB0aGUgbW9kdWxlIGNvdWxkbid0IGtub3cgaWYgdGhlIHdvcmQgInByb2R1Y3QiIGl0IGVuY291bnRlcnMgbWVhbnMgdGhhdCB3ZSdyZSB3YXRjaGluZyB0aGUgZGV0YWlscyBvZiBhbiBpdGVtLCBvciBpZiBpdCBtZWFucyB0aGF0IHdlIGFyZSB3YXRjaGluZyBhIGxpc3Qgb2YgdGhlIGl0ZW1zIGluIHRoZSAicHJvZHVjdCIgbGV2ZWwuPC9wPgoJCTxwPlNvIGxldCdzIHNheSB3ZSB3YW50IHRvIGNoYW5nZSAiZGV0YWlsIiBmb3IgInZpZXciIChwcm92aWRlZCB0aGF0IHlvdSBkb24ndCBoYXZlIGEgbGV2ZWwgY2FsbGVkICJ2aWV3IikuIEluIGxpbmUgIzEsIHdlIHdvdWxkIHJlcGxhY2UgPGNvZGU+KFtEZF1ldGFpbCk8L2NvZGU+IHdpdGggPGNvZGU+KHZpZXcpPC9jb2RlPiAob3IgPGNvZGU+KFtWdl1pZXcpPC9jb2RlPiwgaWYgeW91IHdhbnQgaXQgdG8gYWNjZXB0IGJvdGggIlZpZXciIGFuZCAidmlldyIpLjwvcD4KCQk8cD48dT5CdXQgdGhpcyBpcyBub3QgZW5vdWdoLjwvdT4gWW91J3ZlIGNoYW5nZWQgdGhlIHdheSB0aGUgdXJscyBhcmUgaW50ZXJwcmV0ZWQsIGJ1dCBub3QgdGhlIHdheSB0aGV5IGFyZSBjcmVhdGVkLiBJbiB0aGUgc2FtZSBmaWxlLCBzZWFyY2ggZm9yIHRoZSBCdWlsZFByZXR0eVVSTHMgZnVuY3Rpb24uIEl0IHNob3VsZCBjb250YWluIHNvbWV0aGluZyBsaWtlIHRoaXM6PC9wPgoJCTxwcmUgY2xhc3M9ImNvZGUiPgojMQkJJHByZXR0eXVybCA9ICJuYW1lb2Ztb2R1bGUvIjsKIzIJCWlmKGlzc2V0KCRwYXJhbXNbImFsaWFzIl0pKXsKIzMJCQkkcHJldHR5dXJsIC49ICJkZXRhaWwvIi4kcGFyYW1zWyJhbGlhcyJdOwojNAkJfWVsc2VpZihpc3NldCgkcGFyYW1zWyJwYXJlbnQiXSkpewojNQkJCSRwcmV0dHl1cmwgLj0gJHBhcmFtc1sid2hhdCJdLiIvIi4kcGFyYW1zWyJwYXJlbnQiXTsKIzYJCX1lbHNlewojNwkJCSRwcmV0dHl1cmwgLj0gJHBhcmFtc1sid2hhdCJdOwojOAkJfQojOQkJaWYoIWlzc2V0KCRwYXJhbXNbImFsaWFzIl0pICYmIGlzc2V0KCRwYXJhbXNbInBhZ2VpbmRleCJdKSAmJiBpc3NldCgkcGFyYW1zWyJuYnBlcnBhZ2UiXSkpCSRwcmV0dHl1cmwgLj0gIi8iLiRwYXJhbXNbInBhZ2VpbmRleCJdLiIvIi4kcGFyYW1zWyJuYnBlcnBhZ2UiXTsKIzEwCQkkcHJldHR5dXJsIC49ICIvIi4kcmV0dXJuaWQ7CiMxMQkJcmV0dXJuICRwcmV0dHl1cmw7PC9wcmU+CgkJPHA+VGhpcyBmdW5jdGlvbiB0cmFuc2Zvcm1zIHRoZSBwYXJhbWV0ZXJzIGludG8gYSB1cmwuPGJyLz4KCQlMaW5lICMxIHN0YXJ0cyB3aXRoIHRoZSBtb2R1bGUncyBuYW1lLjxici8+CgkJSW4gbGluZXMgIzItIzMsIGlmIHdlIHdhbnQgdG8gd2F0Y2ggdGhlIGRldGFpbHMgb2YgYW4gaXRlbSwgd2UgYWRkIHRoZSAiZGV0YWlsLyIgYmxvY2sgdG8gdGhlIHVybC48YnIvPgoJCUlmIHRoaXMgaXNuJ3QgdGhlIGNhc2UsIHdlIGFkZCB0aGUgbGV2ZWwgb2YgdGhlIGl0ZW1zIHdlIHdhbnQgdG8gc2hvdyBhbmQsIGlmIHNwZWNpZmllZCwgdGhlIHBhcmVudCAobGluZXMgIzQgdG8gIzgpLiBJbiBsaW5lICM5LCBpZiB3ZSdyZSBzZXBhcmF0aW5nIGludG8gcGFnZXMgd2UgYWRkIHRoZSBwYWdlIHdlIHdpc2ggdG8gbG9vayBhbmQgdGhlIG51bWJlciBvZiBlbGVtZW50cyBwZXIgcGFnZS4KCQlGaW5hbGx5LCBpbiBsaW5lICMxMCwgd2UgYWRkIHRoZSBpZCBvZiB0aGUgcGFnZSBpbiB3aGljaCBpdCBzaG91bGQgYmUgZGlzcGxheWVkLjwvcD4KCQk8cD5JZiB3ZSBjaGFuZ2VkICJbRGRdZXRhaWwiIHRvICJbVnZdaWV3IiBpbiB0aGUgU2V0UGFyYW1ldGVycygpIGZ1bmN0aW9uLCB3ZSBtdXN0IGFsc28gY2hhbmdlIHRoZSAiZGV0YWlsLyIgaW4gbGluZSAjMyBmb3IgInZpZXcvIi48YnIvPk5vdywgdGhpcyBzaG91bGQgZG8gdGhlIHRyaWNrLjwvcD4KCQk8cD48Yj5DYW4gSSBnZXQgcmlkIG9mIHRoZSByZXR1cm5pZD88L2I+PGJyLz5Obywgbm90IHJlYWxseS4gSG93ZXZlciwgaWYgeW91IHRoZSBtb2R1bGUgaXMgPHU+YWx3YXlzPC91PiBkaXNwbGF5ZWQgaW4gdGhlIHNhbWUgcGFnZSAoaS5lLiwgaWYgaXQncyA8dT5hbHdheXM8L3U+IHRoZSBzYW1lIG51bWJlciksIHdlIGNvdWxkIHJlbW92ZSBpdCBmcm9tIHRoZSB1cmwgYW5kIHByb3ZpZGUgaXQgaW4gYW5vdGhlciB3YXkuIEhlcmUncyBob3cgdG8gZG8gaXQ6PC9wPgoJCTxwPkxldCdzIHNheSB0aGUgaWQgb2YgdGhlIHBhZ2UgaW4gd2hpY2ggdGhlIG1vZHVsZSBpcyBhbHdheXMgY2FsbGVkICh0aGUgbnVtYmVyIHdlJ3JlIHRyeWluZyB0byBnZXQgcmlkIG9mKSBpcyA1Ljxici8+CgkJMS4gaW4gdGhlIFNldFBhcmFtZXRlcnMoKSBmdW5jdGlvbiBvZiB5b3VyIG1vZHVsZSwgcmVtb3ZlIGFsbCA8Y29kZT5cLyg/UDxyZXR1cm5pZD5bMC05XSspPC9jb2RlPiBwYXJ0cy4gKGl0IHdvdWxkIGJlIGEgZ29vZCBpZGVhIHRvIGNvcHkgYW5kIHBhc3RlIHRoZSBvcmlnaW5hbCBsaW5lcyBqdXN0IGluIGNhc2UuLi4geW91IGNhbiBjb21tZW50IGxpbmVzIHVzaW5nIDxjb2RlPi8vPC9jb2RlPikuPGJyLz4KCQkyLiBpbiB0aGUgQnVpbGRQcmV0dHlVUkxzKCkgZnVuY3Rpb24gb2YgeW91ciBtb2R1bGUsIGNvbW1lbnQgKGFkZCA8Y29kZT4vLzwvY29kZT4gYmVmb3JlIGl0KSB0aGUgbGluZSAjMTAgKDxjb2RlPi8vICRwcmV0dHl1cmwgLj0gIi8iLiRyZXR1cm5pZDs8L2NvZGU+KS48YnIvPgoJCTMuIHdlIG5vdyBuZWVkIHRvIHByb3ZpZGUgdGhlIGlkLiBHbyBiYWNrIHRvIHRoZSBTZXRQYXJhbWV0ZXJzKCkgZnVuY3Rpb24sIGFuZCBmb3IgZWFjaCBsaW5lLCBqdXN0IGFmdGVyIHRoZSA8Y29kZT4kIi88L2NvZGU+IHBhcnQgKGFuZCBiZWZvcmUgdGhlIGNsb3N1cmUgb2YgdGhlIHBhcmVudGhlc2lzKSwgYWRkIDxjb2RlPiwgYXJyYXkoInJldHVybmlkIj0+NSk8L2NvZGU+ICh3aXRoIHRoZSBjb21tYSksIHdoZXJlICI1IiBpcyB5b3VyIGlkLiBGb3IgZXhhbXBsZSwgdGhpczo8YnIvPgoJCTxjb2RlPiR0aGlzLT5SZWdpc3RlclJvdXRlKCIvW25OXWFtZW9mbW9kdWxlXC8oW0RkXWV0YWlsKVwvKD9QPGFsaWFzPlteXC9dKykkLyIpOzwvY29kZT48YnIvPgoJCXNob3VsZCBiZWNvbWU6PGJyLz4KCQk8Y29kZT4kdGhpcy0+UmVnaXN0ZXJSb3V0ZSgiL1tuTl1hbWVvZm1vZHVsZVwvKFtEZF1ldGFpbClcLyg/UDxhbGlhcz5bXlwvXSspJC8iLCBhcnJheSgicmV0dXJuaWQiPT41KSk7PC9jb2RlPjxici8+CgkJKFJlbWVtYmVyIG5vdCBqdXN0IHRvIGNvcHkgYW5kIHBhc3RlIGxpbmVzIGZyb20gdGhpcyBoZWxwLCBiZWNhdXNlIHlvdXIgbW9kdWxlIGlzIHByb2JhYmx5IDxpPm5vdDwvaT4gbmFtZWQgIm5hbWVvZm1vZHVsZSIpPGJyLz4KCQlUaGlzIHNob3VsZCBkbyB0aGUgdHJpY2ssIGJ1dCB0aGUgbW9kdWxlIHdpbGwgbmV2ZXIgdXNlIGFub3RoZXIgcGFnZSB0byBkaXNwbGF5IGl0cyBjb250ZW50LjwvcD4KCQk8cD48dT5GaW5hbCBub3RpY2U6PC91PiBJZiB5b3UgY2hhbmdlIHRoZSBwcmV0dHkgdXJscyBhbmQgbWFrZSB1c2Ugb2YgdGhlICJpc19zZWxlY3RlZCIgYXR0cmlidXRlcyBpbiB5b3VyIHRlbXBsYXRlcywgeW91IG1pZ2h0IGFsc28gaGF2ZSB0byBjaGFuZ2UgdGhlIGdldF9tb2R1bGVHZXRWYXJzKCkgZnVuY3Rpb24gKHRha2UgYSBsb29rIDxhIGhyZWY9IiNxMTQiPmhlcmU8L2E+KS48L3A+CgkJPHAgc3R5bGU9ImZvbnQtc2l6ZTogMTFweDsiPjxici8+KiBpZiB0aGVyZSBpcyBvbmx5IG9uZSBpdGVtIHRvIGRpc3BsYXksIGFuZCBpZiB5b3UgYXJlbid0IHVzaW5nIHRoZSAiZm9yY2VsaXN0IiBwYXJhbWV0ZXIsIHRoZSBkZXRhaWxzIHdpbGwgYmUgZGlzcGxheWVkIGluc3RlYWQgb2YgYSBsaXN0Ljxici8+CgkJKiogbm8sIHlvdSBjYW4ndCBqdXN0IGdldCByaWQgb2YgaXQsIHVubGVzcyB5b3UgY2hhbmdlIGFsbCByZWdpc3RlcmVkIHVybHMuLi4gZm9yIGV4YW1wbGUsIGluc3RlYWQgb2YgaGF2aW5nIGEgIi9kZXRhaWwvIiwgYWxsIG90aGVyIHVybHMgY291bGQgaGF2ZSBhICIvbGlzdC8iIGJsb2NrLjwvcD4KCQk8L2Rpdj4KCQk8YSBjbGFzcz0iYmFja3RvdG9wIiBocmVmPSIjdG9wIj5CYWNrIHRvIHRvcDwvYT4KCTwvZGl2PgoJCgoJPGRpdiBjbGFzcz0icWRpdiIgaWQ9InE4Ij4KCQk8ZGl2IGNsYXNzPSJxdWVzdGlvbiI+Q2FuIEkgbWFrZSBteSBtb2R1bGUgYWx3YXlzIGFjdCBhcyBpZiB0aGUgImZvcmNlbGlzdCIgcGFyYW1ldGVyIHdhcyBlbmFibGVkPzwvZGl2PgoJCTxkaXYgY2xhc3M9ImFuc3dlciI+CgkJPHAgc3R5bGU9ImNvbG9yOiByZWQ7IGZvbnQtd2VpZ2h0OiBib2xkOyI+U2luY2UgMS44LjYsIHRoaXMgaGFzIGJlY29tZSBhIHNpbXBsZSBvcHRpb24gdG8gdHVybiBvbiBpbiB0aGUgIlNldHRpbmdzIiB0YWIuLi48L3A+CgkJPHA+PGI+WWVzLjwvYj48L3A+CgkJPHA+T3BlbiB0aGUgYWN0aW9uLmRlZmF1bHQucGhwIGZpbGUuIEFyb3VuZCB0aGUgbGluZSAjMTYgeW91IHNob3VsZCBzZWUgc29tZXRoaW5nIGxpa2UgdGhpczo8L3A+CgkJPHByZSBjbGFzcz0iY29kZSI+CgkJJGZvcmNlbGlzdCA9IGlzc2V0KCRwYXJhbXNbImZvcmNlbGlzdCJdKT8kcGFyYW1zWyJmb3JjZWxpc3QiXTpmYWxzZTs8L3ByZT4KCQk8cD5XaGF0IHRoaXMgc2F5cyBpcyB0aGF0IGlmIHRoZSBmb3JjZWxpc3QgcGFyYW1ldGVyIGhhcyBiZWVuIHNldCwgd2UgdXNlIHRoaXMgdmFsdWUsIGFuZCBpZiBpdCBoYXNuJ3QsIHdlIHVzZSB0aGUgdmFsdWUgImZhbHNlIi48YnIvPgoJCUNoYW5naW5nIHRoaXMgPGNvZGU+ZmFsc2U8L2NvZGU+IHRvIGEgPGNvZGU+dHJ1ZTwvY29kZT4gd291bGQgbWVhbiB0aGF0IHRoZSBmb3JjZWxpc3QgbW9kZSBpcyBhbHdheXMgZW5hYmxlZCwgdW5sZXNzIHNwZWNpZmllZCBvdGhlcndpc2UuPGJyLz4KCQlCdXQgdGhhdCdzIG5vdCBleGFjdGx5IHdoYXQgd2Ugd2FudCwgZm9yIHRoaXMgd291bGQgbWVhbiB0aGF0IHdlIGFsd2F5cyBkaXNwbGF5IGEgbGlzdCwgZXZlbiB3aGVuIHdlJ3JlIHRyeWluZyB0byBkaXNwbGF5IGFuIGl0ZW0ncyBkZXRhaWxzLiBTbyB0aGUgcHJvcGVyIGNvZGUgd291bGQgYmU6PC9wPgoJCTxwcmUgY2xhc3M9ImNvZGUiPgoJCSRmb3JjZWxpc3QgPSBpc3NldCgkcGFyYW1zWyJmb3JjZWxpc3QiXSk/JHBhcmFtc1siZm9yY2VsaXN0Il06KGlzc2V0KCRwYXJhbXNbImFsaWFzIl0pP2ZhbHNlOnRydWUpOzwvcHJlPgoJCTxwPlRoaXMgd2F5LCAkZm9yY2VsaXN0IHdpbGwgYmUgZmFsc2UgdW5sZXNzIHNwZWNpZmllZCBvdGhlcndpc2UsIGFuZCB1bmxlc3MgYW4gYWxpYXMgKHVzZWQgaW4gZGV0YWlsIGxpbmtzKSBpcyBzcGVjaWZpZWQuPC9wPgoJCTxwPihUd28gbGluZXMgYmVsb3csIHlvdSBjb3VsZCBkbyB0aGUgc2FtZSBraW5kIG9mIHRoaW5nIGZvciB0aGUgImlubGluZSIgcGFyYW1ldGVyLi4uKTwvcD4KCQk8L2Rpdj4KCQk8YSBjbGFzcz0iYmFja3RvdG9wIiBocmVmPSIjdG9wIj5CYWNrIHRvIHRvcDwvYT4KCTwvZGl2PgoJCgkKCTxkaXYgY2xhc3M9InFkaXYiIGlkPSJxMTQiPgoJCTxkaXYgY2xhc3M9InF1ZXN0aW9uIj5XaGF0J3Mgd2l0aCB0aGlzIGdldF9tb2R1bGVHZXRWYXJzKCkgZnVuY3Rpb24/PC9kaXY+CgkJPGRpdiBjbGFzcz0iYW5zd2VyIj4KCQk8cD48Yj5XaGF0IGlzIGl0IGZvcj8gQW5kIHdoeSBpcyBpdCBzdWNoIGEgbWVzcz88L2I+PC9wPgoJCTxwPkluIHRoZSBtYWluIG1vZHVsZSBmaWxlLCB0aGVyZSBpcyBhIGZ1bmN0aW9uIGNhbGxlZCBnZXRfbW9kdWxlR2V0VmFycygpLiBCYXNpY2FsbHksIHRoZSBmdW5jdGlvbiByZXRyaWV2ZSB0aGUgbW9kdWxlIGFjdGlvbiBwYXJhbWV0ZXJzIGZyb20gdGhlIHVybC48YnIvPgoJCUltYWdpbmUgdGhhdCBpbiB5b3VyIHRlbXBsYXRlLCBpbiBhIGNvbHVtbiBvbiB0aGUgbGVmdCwgeW91IGNhbGwgdGhlIG1vZHVsZSB0byBkaXNwbGF5IGEgY2F0ZWdvcnkgbGlzdC4gV2hlbiB5b3UgY2xpY2sgb24gYW4gY2F0ZWdvcnksIHRoZSBsaXN0IHN0YXlzIHRoZXJlLCBidXQgdGhlIG1haW4gY29udGVudCBibG9jayBkaXNwbGF5cyB0aGUgY2hpbGRyZW4gd2l0aGluIHRoYXQgY2F0ZWdvcnkuIE5vdywgaW4gdGhlIGNhdGVnb3J5IGxpc3QsIHlvdSBtaWdodCB3YW50IHRvIHNob3cgd2hpY2ggY2F0ZWdvcnkgaXMgc2VsZWN0ZWQgKHVzaW5nIHRoZSAkaXRlbS0+aXNfc2VsZWN0ZWQgYXR0cmlidXRlKS4gQnV0IHRoZSBwcm9ibGVtIGlzIHRoYXQgdGhlIGNhdGVnb3J5IGxpc3QgaXMgY2FsbGVkIDxpPmJlZm9yZTwvaT4gdGhlIG1haW4gbW9kdWxlIGFjdGlvbiAodGhlIGxpc3Qgb2YgY2hpbGRyZW4pLCBhbmQgdGh1cyB0aGUgYWN0aW9uIHBhcmFtZXRlcnMgYXJlbid0IHlldCBwYXJzZWQuPGJyLz4KCQlUaGlzIHN1YmplY3QgaGFzIGJlZW4gZGlzY3Vzc2VkIGluIHRoZSBmb3J1bXMgKDxhIGhyZWY9Imh0dHA6Ly9mb3J1bS5jbXNtYWRlc2ltcGxlLm9yZy9pbmRleC5waHAvdG9waWMsMzMzMzQuMC5odG1sIj5oZXJlPC9hPiksIGFuZCBJIGNob3NlIHRoZSBzb2x1dGlvbiB0aGF0IGlzIHRoZSBlYXNpZXN0IHRvIGltcGxlbWVudCBmb3IgdGhlIHVzZXI6IHJldHJpZXZlIHRoZSBwYXJhbWV0ZXJzIGZyb20gdGhlIHVybCBldmVuIGJlZm9yZSB0aGV5IGFyZSBwYXJzZWQgYnkgdGhlIGNtcy4gSXQncyBhIHJhdGhlciBjb21wbGljYXRlZCBmdW5jdGlvbiBiZWNhdXNlIHdlIG5lZWQgdG8gZGVhbCB3aXRoIHRoZSBwb3NzaWJpbGl0eSBvZiBwcmV0dHl1cmxzIGFuZCByZXdyaXR0ZW4gdXJscy4uLjxici8+CgkJT2YgY291cnNlLCBpdCBtZWFucyB0aGF0IGlmIHlvdSB3aXNoIHRvIGNoYW5nZSB0aGUgd2F5IHByZXR0eXVybHMgYXJlIG1hZGUgYW5kIHN0aWxsIHVzZSB0aGUgaXNfc2VsZWN0ZWQgYXR0cmlidXRlLCB5b3UncmUgZ29ubmEgaGF2ZSB0byBwbGF5IGluIHRoaXMgaW5lbGVnYW50IGNvZGUuIEJ1dCBoZXksIEknbSB3cml0aW5nIHRoaXMganVzdCB0byBtYWtlIGl0IGNsZWFyZXIuLi48L3A+CgkJPGJyLz48cD48Yj5Ib3cgZG9lcyBpdCB3b3JrLCBhbmQgaG93IHRvIGNoYW5nZSBpdD88L2I+PC9wPgoJCTxwPkJlZm9yZSB3ZSBnbywgaGVyZSdzIGEgbG9vayBhdCB0aGUgZnVuY3Rpb246PC9wPgoJCTxwcmUgY2xhc3M9ImNvZGUiPgoJZnVuY3Rpb24gZ2V0X21vZHVsZUdldFZhcnMoKXsKIzEJCS8vIHVub3J0aG9kb3ggaGFjayBzbyB0aGF0IGRpZmZlcmVudCBjYWxscyBvZiB0aGUgbW9kdWxlIHNwZWFrIHdpdGggZWFjaCBvdGhlcgojMgkJLy8gYmFzaWNhbGx5LCB3ZSByZXRyaWV2ZSBwYXJhbWV0ZXJzIGluIHRoZSB1cmwgdGhhdCB3ZXJlIG1lYW50IGZvciBvdGhlciBpbnN0YW5jZXMgb2YgdGhlIG1vZHVsZQojMwkJZ2xvYmFsICRfR0VUOwojNAkJZ2xvYmFsICRnQ21zOwojNQkJJGdsb2JhbG1vZHVsZXZhcnMgPSBhcnJheSgpOwojNgkJaWYoaXNzZXQoJF9HRVRbIm1hY3QiXSkpewojNwkJCS8vIGlmIHdlIGFyZW4ndCB1c2luZyBwcmV0dHkgdXJscy4uLgojOAkJCSRtb2RpbmZvID0gZXhwbG9kZSgiLCIsJF9HRVRbIm1hY3QiXSk7CiM5CQkJaWYoaXNzZXQoJG1vZGluZm8pICYmICRtb2RpbmZvWzBdID09ICR0aGlzLT5HZXROYW1lKCkpewojMTAJCQkJaWYoaXNzZXQoJF9HRVRbJG1vZGluZm9bMV0uInBhcmVudCJdKSkKIzExCQkJCQkkZ2xvYmFsbW9kdWxldmFyc1sicGFyZW50Il09JF9HRVRbJG1vZGluZm9bMV0uInBhcmVudCJdOwojMTIJCQkJaWYoaXNzZXQoJF9HRVRbJG1vZGluZm9bMV0uIndoYXQiXSkpCiMxMwkJCQkJJGdsb2JhbG1vZHVsZXZhcnNbIndoYXQiXT0kX0dFVFskbW9kaW5mb1sxXS4id2hhdCJdOwojMTQJCQkJaWYoaXNzZXQoJF9HRVRbJG1vZGluZm9bMV0uImFsaWFzIl0pKQojMTUJCQkJCSRnbG9iYWxtb2R1bGV2YXJzWyJhbGlhcyJdPSRfR0VUWyRtb2RpbmZvWzFdLiJhbGlhcyJdOwojMTYJCQkJaWYoaXNzZXQoJF9HRVRbJG1vZGluZm9bMV0uInBhZ2VpbmRleCJdKSkKIzE3CQkJCQkkZ2xvYmFsbW9kdWxldmFyc1sicGFnZWluZGV4Il09JF9HRVRbJG1vZGluZm9bMV0uInBhZ2VpbmRleCJdOwojMTgJCQl9CiMxOQkJfWVsc2VpZigkZ0Ntcy0+Y29uZmlnWyJpbnRlcm5hbF9wcmV0dHlfdXJscyJdIHx8ICRnQ21zLT5jb25maWdbImFzc3VtZV9tb2RfcmV3cml0ZSJdKXsKIzIwCQkJJHBhcmFtcyA9IGFycmF5KCk7CiMyMQkJCWlmKCRnQ21zLT5jb25maWdbImFzc3VtZV9tb2RfcmV3cml0ZSJdICYmIGlzc2V0KCRfR0VUWyJwYWdlIl0pKXsKIzIyCQkJCS8vIGlmIHdlIGFyZSB1c2luZyBhbiBleHRlcm5hbCBtb2RfcmV3cml0ZSwgYXNzdW1pbmcgeW91IGFyZSB1c2luZyB0aGUgdmVyeQojMjMJCQkJLy8gYmFzaWMgcmV3cml0ZSB3aGljaCBwdXRzIHRoZSBtb2R1bGUgaW5mb3JtYXRpb25zIGluc2lkZSB0aGUgcGFnZSB2YXJpYWJsZQojMjQJCQkJJHBhcnRzID0gZXhwbG9kZSgiLyIsJF9HRVRbInBhZ2UiXSk7CiMyNQkJCQlmb3JlYWNoKCRwYXJ0cyBhcyAkcGFydCl7CiMyNgkJCQkJaWYoJHBhcnQgIT0gIiIpCSRwYXJhbXNbXSA9ICRwYXJ0OwojMjcJCQkJfQojMjgJCQl9ZWxzZWlmKCEkZ0Ntcy0+Y29uZmlnWyJhc3N1bWVfbW9kX3Jld3JpdGUiXSAmJiAkZ0Ntcy0+Y29uZmlnWyJpbnRlcm5hbF9wcmV0dHlfdXJscyJdICYmIGlzc2V0KCRfU0VSVkVSWyJSRVFVRVNUX1VSSSJdKSl7CiMyOQkJCQkvLyBpZiB3ZSBhcmUgdXNpbmcgdGhlIGludGVybmFsIHByZXR0eSB1cmxzCiMzMAkJCQkkcGFydHMgPSBleHBsb2RlKCIvIiwkX1NFUlZFUlsiUkVRVUVTVF9VUkkiXSk7CiMzMQkJCQkkc3RhcnRlZCA9IGZhbHNlOwojMzIJCQkJZm9yZWFjaCgkcGFydHMgYXMgJHBhcnQpewojMzMJCQkJCWlmKCRzdGFydGVkICYmICRwYXJ0ICE9ICIiKQkkcGFyYW1zW10gPSAkcGFydDsKIzM0CQkJCQlpZihzdHJ0b2xvd2VyKCRwYXJ0KSA9PSAiaW5kZXgucGhwIikJJHN0YXJ0ZWQgPSB0cnVlOwojMzUJCQkJfQojMzYJCQl9CiMzNwkJCWlmKGlzc2V0KCRwYXJhbXNbMF0pICYmIHN0cnRvbG93ZXIoJHBhcmFtc1swXSkgPT0gc3RydG9sb3dlcigkdGhpcy0+R2V0TmFtZSgpKSl7CiMzOAkJCQkgLy8gd2UgYXJlIGluIGEgbW9kdWxlIGFjdGlvbgojMzkJCQkJaWYoIWlzc2V0KCRwYXJhbXNbMV0pIHx8IHN0cnRvbG93ZXIoJHBhcmFtc1sxXSkgPT0gInF1ZXJ5Iil7CiM0MAojNDEJCQkJfWVsc2VpZihpc3NldCgkcGFyYW1zWzFdKSAmJiBzdHJ0b2xvd2VyKCRwYXJhbXNbMV0pID09ICJkZXRhaWwiKXsKIzQyCQkJCQkkZ2xvYmFsbW9kdWxldmFyc1sid2hhdCJdID0gInRzdWJhIjsKIzQzCQkJCQkkZ2xvYmFsbW9kdWxldmFyc1siYWxpYXMiXSA9ICRwYXJhbXNbMl07CiM0NAkJCQl9ZWxzZXsKIzQ1CQkJCQkkZ2xvYmFsbW9kdWxldmFyc1sid2hhdCJdID0gJHBhcmFtc1sxXTsKIzQ2CQkJCQlzd2l0Y2goY291bnQoJHBhcmFtcykpewojNDcJCQkJCQljYXNlIDY6CiM0OAkJCQkJCQkkZ2xvYmFsbW9kdWxldmFyc1sicGFnZWluZGV4Il0gPSAkcGFyYW1zWzNdOwojNDkJCQkJCQkJJGdsb2JhbG1vZHVsZXZhcnNbIm5icGVycGFnZSJdID0gJHBhcmFtc1s0XTsKIzUwCQkJCQkJY2FzZSA0OgojNTEJCQkJCQkJJGdsb2JhbG1vZHVsZXZhcnNbInBhcmVudCJdID0gJHBhcmFtc1syXTsKIzUyCQkJCQkJCWJyZWFrOwojNTMJCQkJCQljYXNlIDU6CiM1NAkJCQkJCQkkZ2xvYmFsbW9kdWxldmFyc1sicGFnZWluZGV4Il0gPSAkcGFyYW1zWzJdOwojNTUJCQkJCQkJJGdsb2JhbG1vZHVsZXZhcnNbIm5icGVycGFnZSJdID0gJHBhcmFtc1szXTsKIzU2CQkJCQkJCWJyZWFrOwojNTcJCQkJCX0KIzU4CQkJCX0KIzU5CQkJfQojNjAJCX0KIzYxCQlyZXR1cm4gJGdsb2JhbG1vZHVsZXZhcnM7Cgl9PC9wcmU+CgkJPHA+Tm93IHRoZXJlIGFyZSBmb3VyIHBvc3NpYmxlIHNjZW5hcmlvczo8YnIvPgoJCTEuIFRoZXJlIGlzIG5vIHJld3JpdGUgb3IgcHJldHR5dXJscyBhdCBhbGwgKHRoYXQncyB0aGUgZWFzaWVzdC4uLiBsaW5lcyA3IHRvIDE4IGRlYWwgd2l0aCB0aGlzKTxici8+CgkJMi4gV2UgYXJlIHVzaW5nIGludGVybmFsIHByZXR0eXVybHMgd2l0aG91dCBtb2RfcmV3cml0ZSAobGluZXMgMjkgdG8gMzUsIGFuZCAzNyB0byA1OSk8YnIvPgoJCTMuIFdlIGFyZSB1c2luZyBpbnRlcm5hbCBwcmV0dHl1cmxzIGFsb25nIHdpdGggdGhlIHN0YW5kYXJkIGFzc3VtZWQgbW9kX3Jld3JpdGUgKGxpbmVzIDIyIHRvIDM3LCBhbmQgMzcgdG8gNTkpPGJyLz4KCQk0LiBXZSBhcmUgdXNpbmcgYSBub24tc3RhbmRhcmQgbW9kX3Jld3JpdGUuLi4gaW4gdGhhdCBjYXNlLCB5b3UnbGwgZWl0aGVyIGhhdmUgdG8gZm9yZ2V0IGFib3V0IHRoZSBpc19zZWxlY3RlZCBhdHRyaWJ1dGUgb3IgdG8gd3JpdGUgdGhlIGNvZGUgeW91cnNlbGYuPC9wPgoJCTxwPjxiPkNhc2UgMTogZ29vZCBvbCcgdXJsczwvYj48YnIvPgoJCUlmIHdlIGZpbmQgdGhlICJtYWN0IiBpbiB0aGUgR0VUIHBhcmFtZXRlcnMsIHRoZW4gd2UgYXJlIGRlYWxpbmcgd2l0aCBzdGFuZGFyZCB1cmxzLiBXZSBqdXN0IGhhdmUgdG8gYnJlYWsgdGhlIG1hY3QgdmFsdWUgaW50byBwaWVjZXMsIG1ha2Ugc3VyZSBpdCdzIGFuIGFjdGlvbiBvZiBvdXIgbW9kdWxlLCBhbmQgcmV0cmlldmUgdGhlIGRpZmZlcmVudCBwYXJhbWV0ZXJzIGJ5IHRoZWlyIG5hbWUgKGFsb25nIHdpdGggdGhlICRpZCkuPC9wPgoJCTxwPjxiPkNhc2UgMjogaW50ZXJuYWwgcHJldHR5IHVybHM8L2I+PGJyLz4KCQlMaW5lcyAyOSB0byAzNSByZXRyaWV2ZSB0aGUgdXJsLCBzZXBhcmF0ZSBpdCBpbnRvIHBhcnRzIChlYWNoIHBhcnQgYmVpbmcgYSBmYWtlIGZvbGRlciBpbiB0aGUgdXJsKSwgYW5kIG9ubHkga2VlcCB0aGUgcGFydHMgdGhhdCBhcmUgYWZ0ZXIgdGhlICJpbmRleC5waHAvIi48L3A+CgkJPHA+TGluZXMgMzcgdG8gNTkgdHJ5IHRvIGZpZ3VyZSBqdXN0IHdoYXQgcGFyYW1ldGVycyB0aGVzZSBwYXJ0cyBjb3VsZCBiZS4gUmVtZW1iZXIgdGhhdCB3ZSBoYWQgdGhlIGZvbGxvd2luZyByb3V0ZXMgcmVnaXN0ZXJlZDo8L3A+CgkJPHByZSBjbGFzcz0iY29kZSI+CiMxCSR0aGlzLT5SZWdpc3RlclJvdXRlKCIvW25OXWFtZW9mbW9kdWxlXC8oW0RkXWV0YWlsKVwvKD9QPGFsaWFzPlteXC9dKylcLyg/UDxyZXR1cm5pZD5bMC05XSspJC8iKTsKIzIJJHRoaXMtPlJlZ2lzdGVyUm91dGUoIi9bbk5dYW1lb2Ztb2R1bGVcLyg/UDx3aGF0PlteXC9dKylcLyg/UDxyZXR1cm5pZD5bMC05XSspJC8iKTsKIzMJJHRoaXMtPlJlZ2lzdGVyUm91dGUoIi9bbk5dYW1lb2Ztb2R1bGVcLyg/UDx3aGF0PlteXC9dKylcLyg/UDxwYXJlbnQ+W15cL10rKVwvKD9QPHJldHVybmlkPlswLTldKykkLyIpOwojNAkkdGhpcy0+UmVnaXN0ZXJSb3V0ZSgiL1tuTl1hbWVvZm1vZHVsZVwvKD9QPHdoYXQ+W15cL10rKVwvKD9QPHBhZ2VpbmRleD5bMC05XSspXC8oP1A8bmJwZXJwYWdlPlswLTldKylcLyg/UDxyZXR1cm5pZD5bMC05XSspJC8iKTsKIzUJJHRoaXMtPlJlZ2lzdGVyUm91dGUoIi9bbk5dYW1lb2Ztb2R1bGVcLyg/UDx3aGF0PlteXC9dKylcLyg/UDxwYXJlbnQ+W15cL10rKVwvKD9QPHBhZ2VpbmRleD5bMC05XSspXC8oP1A8bmJwZXJwYWdlPlswLTldKylcLyg/UDxyZXR1cm5pZD5bMC05XSspJC8iKTs8L3ByZT4KCQk8cD5Sb3V0ZSAjMSBpcyBoYW5kbGVkIGJ5IHRoZSBsaW5lcyA0MS00My4gT3RoZXJ3aXNlLCBpdCB3aWxsIGRlcGVuZCBvbiB0aGUgbnVtYmVyIG9mIHBhcmFtZXRlcnMuIElmIHRoZXJlIGFyZSA2LCB3ZSBrbm93IHdlJ3JlIHVzaW5nIHJvdXRlICM1IDogJHBhcmFtc1swXSBpcyB0aGUgbmFtZSBvZiB0aGUgbW9kdWxlLCAkcGFyYW1zWzFdIHRoZSBuYW1lIG9mIHRoZSBsZXZlbCAod2hhdCksICRwYXJhbXNbMl0gdGhlIG5hbWUgb2YgdGhlIHBhcmVudCwgJHBhcmFtc1szXSB0aGUgcGFnZWluZGV4LCBhbmQgc28gb24uLi48YnIvPgoJCUxpa2V3aXNlLCBpZiB3ZSBoYXZlIDUgcGFyYW1zLCB3ZSBrbm93IHdlJ3JlIHVzaW5nIHJvdXRlICM0LCBhbmQgd2l0aCA0IHBhcmFtcywgd2Uga25vdyB3ZSdyZSB1c2luZyByb3V0ZSAjMy4gSWYgd2Ugd2VyZSB1c2luZyByb3V0ZSAjMiwgdGhlcmUgd291bGRuJ3QgYmUgYW55dGhpbmcgdG8gcmV0cmlldmUgYW55d2F5Ljxici8+CgkJSWYgdGhlIG1vZHVsZSBhY3Rpb24gaXMgYSBxdWVyeSAobGluZXMgMzktNDApLCB3ZSBkb24ndCByZXRyaWV2ZSBhbnl0aGluZy4uLjwvcD4KCQk8cD5TbyBiYXNpY2FsbHksIGlmIHlvdSBjaGFuZ2UgdGhlIHJvdXRlcywgeW91J3ZlIGdvdCB0byBjaGFuZ2UgbGluZXMgMzcgdG8gNTkuPC9wPgoJCTxwPjxiPkNhc2UgMzogaW50ZXJuYWwgcHJldHR5IHVybHMgd2l0aCBzdGFuZGFyZCBtb2RfcmV3cml0ZTwvYj48YnIvPgkJCgkJSW4gdGhpcyBjYXNlLCB0aGUgcGF0aCB0aGF0J3MgYWZ0ZXIgImluZGV4LnBocC8iIGluIGNhc2UgMiBpcyBzaW1wbHkgcGFzc2VkIHRocm91Z2ggdGhlICJwYWdlIiBHRVQgcGFyYW1ldGVyLiBTbyBvbmNlIHdlJ3ZlIHJldHJpZXZlZCBpdCwgdGhlIHRhc2sgaXMganVzdCBsaWtlIGNhc2UgMi48L3A+CgkJPC9kaXY+CgkJPGEgY2xhc3M9ImJhY2t0b3RvcCIgaHJlZj0iI3RvcCI+QmFjayB0byB0b3A8L2E+Cgk8L2Rpdj4JCQoJCQo8L2Rpdj4KPHAgYWxpZ249InJpZ2h0Ij5QaWVycmUtTHVjIEdlcm1haW48L3A+CjwvYm9keT4KPC9odG1sPgo=]]></data>
	</file>
	<file>
	  <filename>/function.createFieldForm.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Cjw/cGhwCgkJJGNvbXBhcmVjaG9pY2VzID0gYXJyYXkoJHRoaXMtPkxhbmcoImNvbnRhaW5zIikgPT4xLCAkdGhpcy0+TGFuZygiaXNleGFjdGx5IikgPT4wLCAkdGhpcy0+TGFuZygiaXNub3QiKSA9PjIsICR0aGlzLT5MYW5nKCJpc2hpZ2hlcnRoYW4iKSA9PjMsICR0aGlzLT5MYW5nKCJpc2xvd2VydGhhbiIpID0+NCk7CgkJJGRhdGVjb21wYXJlY2hvaWNlcyA9IGFycmF5KCR0aGlzLT5MYW5nKCJxdWVyeXVzZSIpID0+ICJOQSIsICR0aGlzLT5MYW5nKCJpc2FmdGVyIikgPT4zLCAkdGhpcy0+TGFuZygiaXNiZWZvcmUiKSA9PjQsICR0aGlzLT5MYW5nKCJpc2JldHdlZW4iKSA9PjUpOwoJCSRvcmRlcmNob2ljZXMgPSBhcnJheSgiQVNDIj0+IkFTQyIsIkRFU0MiPT4iREVTQyIpOwoKCQkkb3V0cHV0ID0gYXJyYXkoKTsKCgkJc3dpdGNoKCR3aGF0KXsKCQkJY2FzZSAiY2F0ZWdvcnkiOgoJCQkJJG91dHB1dFsiZGVzY3JpcHRpb24iXSA9IGFycmF5KCR0aGlzLT5MYW5nKCJjYXRlZ29yeV9kZXNjcmlwdGlvbiIpLCAkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsImNvbXBhcmVfZGVzY3JpcHRpb24iLCRjb21wYXJlY2hvaWNlcywtMSwxKS4iICIuJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsImZpZWxkX2Rlc2NyaXB0aW9uIiwiIiwzMCkpOwoJCQkJJG91dHB1dFsibmFtZSJdID0gYXJyYXkoJHRoaXMtPkxhbmcoIm5hbWUiKSwgJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCJjb21wYXJlX25hbWUiLCRjb21wYXJlY2hvaWNlcywtMSwxKS4iICIuJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsImZpZWxkX25hbWUiLCIiLDMwKSk7CgkJCQkKCQkJCSR0aGlzLT5zbWFydHktPmFzc2lnbigidG1wdGltZSIsIHRpbWUoKSk7CgkJCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oInNfYW5kIiwgJHRoaXMtPkxhbmcoInRoaXNhbmR0aGlzIikpOwoJCQkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJ0bXBfcHJlZml4IiwgJGlkLiJkYXRlX2RhdGVfbW9kaWZpZWRfIik7CgkJCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oInRtcF9wcmVmaXgyIiwgJGlkLiJkYXRlX2RhdGVfbW9kaWZpZWRfcGFydDJfIik7CgkJCQkkdG1wdGVtcGxhdGUgPSAne2h0bWxfc2VsZWN0X2RhdGUgcHJlZml4PSR0bXBfcHJlZml4IHRpbWU9JHRtcHRpbWUgc3RhcnRfeWVhcj0iLTEwIiBlbmRfeWVhcj0iKzEwIn0ge2h0bWxfc2VsZWN0X3RpbWUgcHJlZml4PSR0bXBfcHJlZml4IHRpbWU9JHRtcHRpbWUgfTxkaXYgaWQ9IicuJGlkLidkYXRlX21vZGlmaWVkX3BhcnQyIiBzdHlsZT0iZGlzcGxheTogbm9uZTsiPiB7JHNfYW5kfSB7aHRtbF9zZWxlY3RfZGF0ZSBwcmVmaXg9JHRtcF9wcmVmaXgyIHRpbWU9JHRtcHRpbWUgc3RhcnRfeWVhcj0iLTEwIiBlbmRfeWVhcj0iKzEwIn0ge2h0bWxfc2VsZWN0X3RpbWUgcHJlZml4PSR0bXBfcHJlZml4MiB0aW1lPSR0bXB0aW1lIH08L2Rpdj4nOwoJCQkJJHRtcG91dCA9ICR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwiY29tcGFyZV9kYXRlX21vZGlmaWVkIiwkZGF0ZWNvbXBhcmVjaG9pY2VzLC0xLCJOQSIsIiBvbmNoYW5nZT1cImRhdGVpbnB1dF9jaGFuZ2Vjb21wYXJlKCciLiRpZC4iZGF0ZV9tb2RpZmllZCcsIHRoaXMudmFsdWUpO1wiIikuIiAiLiR0aGlzLT5Qcm9jZXNzVGVtcGxhdGVGcm9tRGF0YSgkdG1wdGVtcGxhdGUpOwoJCQkJJHRtcG91dCAuPSAkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCJmaWVsZF9kYXRlX21vZGlmaWVkIiwgIl9fZGF0ZV9maWVsZCIpOwoJCQkJJG91dHB1dFsiZGF0ZV9tb2RpZmllZCJdID0gYXJyYXkoJHRoaXMtPkxhbmcoImRhdGVfbW9kaWZpZWQiKSwgJHRtcG91dCk7CgkJCQkkb3JkZXJmaWVsZG9wdGlvbnMgPSBhcnJheSgiIj0+IiIsImRlc2NyaXB0aW9uIj0+ImRlc2NyaXB0aW9uIiwiaWQiPT4iaWQiLCJuYW1lIj0+Im5hbWUiLCJhbGlhcyI9PiJhbGlhcyIsIml0ZW1fb3JkZXIiPT4iaXRlbV9vcmRlciIsImRhdGVfbW9kaWZpZWQiPT4iZGF0ZV9tb2RpZmllZCIpOwoJCQkJJG91dHB1dFsib3JkZXJieSJdID0gYXJyYXkoJHRoaXMtPkxhbmcoIm9yZGVyYnlmaWVsZCIpLCAkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsIm9yZGVyIiwkb3JkZXJmaWVsZG9wdGlvbnMpLiIgIi4kdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsIm9yZGVyX3R5cGUiLCRvcmRlcmNob2ljZXMpKTsKCQkJCWJyZWFrOwoJCQljYXNlICJ2aWRlbyI6CgkJCQkkb3V0cHV0WyJ2aWRlb2lkIl0gPSBhcnJheSgkdGhpcy0+TGFuZygidmlkZW9fdmlkZW9pZCIpLCAkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsImNvbXBhcmVfdmlkZW9pZCIsJGNvbXBhcmVjaG9pY2VzLC0xLDEpLiIgIi4kdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwiZmllbGRfdmlkZW9pZCIsIiIsMzApKTsKCQkJCSRvdXRwdXRbImRlc2NyaXB0aW9uIl0gPSBhcnJheSgkdGhpcy0+TGFuZygidmlkZW9fZGVzY3JpcHRpb24iKSwgJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCJjb21wYXJlX2Rlc2NyaXB0aW9uIiwkY29tcGFyZWNob2ljZXMsLTEsMSkuIiAiLiR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCJmaWVsZF9kZXNjcmlwdGlvbiIsIiIsMzApKTsKCQkJCSR0bXBvcHRpb25zID0gJHRoaXMtPmdldF9wcmVkZWZpbmVkb3B0aW9ucygidmlkZW9fdGh1bWJuYWlsIik7CgkJCQkkdG1wb3B0aW9uc1siIl0gPSAiIjsKCQkJCSRvdXRwdXRbInRodW1ibmFpbCJdID0gYXJyYXkoJHRoaXMtPkxhbmcoInZpZGVvX3RodW1ibmFpbCIpLCR0aGlzLT5DcmVhdGVJbnB1dFNlbGVjdExpc3QoJGlkLCJmaWVsZF90aHVtYm5haWxbXSIsJHRtcG9wdGlvbnMpKTsKCQkJCSRvdXRwdXRbInBhcmVudCJdID0gYXJyYXkoJHRoaXMtPkxhbmcoInBhcmVudCIpKTsKCQkJCSRwYXJlbnRvcHRpb25zID0gJHRoaXMtPmdldF9oaWVyYXJjaHlvcHRpb25zKCJ2aWRlbyIpOwoJCQkJJG91dHB1dFsicGFyZW50Il1bXSA9ICR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwiZmllbGRfcGFyZW50IiwkcGFyZW50b3B0aW9ucyk7CgkJCQkkb3V0cHV0WyJuYW1lIl0gPSBhcnJheSgkdGhpcy0+TGFuZygibmFtZSIpLCAkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsImNvbXBhcmVfbmFtZSIsJGNvbXBhcmVjaG9pY2VzLC0xLDEpLiIgIi4kdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwiZmllbGRfbmFtZSIsIiIsMzApKTsKCQkJCQoJCQkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJ0bXB0aW1lIiwgdGltZSgpKTsKCQkJCSR0aGlzLT5zbWFydHktPmFzc2lnbigic19hbmQiLCAkdGhpcy0+TGFuZygidGhpc2FuZHRoaXMiKSk7CgkJCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oInRtcF9wcmVmaXgiLCAkaWQuImRhdGVfZGF0ZV9tb2RpZmllZF8iKTsKCQkJCSR0aGlzLT5zbWFydHktPmFzc2lnbigidG1wX3ByZWZpeDIiLCAkaWQuImRhdGVfZGF0ZV9tb2RpZmllZF9wYXJ0Ml8iKTsKCQkJCSR0bXB0ZW1wbGF0ZSA9ICd7aHRtbF9zZWxlY3RfZGF0ZSBwcmVmaXg9JHRtcF9wcmVmaXggdGltZT0kdG1wdGltZSBzdGFydF95ZWFyPSItMTAiIGVuZF95ZWFyPSIrMTAifSB7aHRtbF9zZWxlY3RfdGltZSBwcmVmaXg9JHRtcF9wcmVmaXggdGltZT0kdG1wdGltZSB9PGRpdiBpZD0iJy4kaWQuJ2RhdGVfbW9kaWZpZWRfcGFydDIiIHN0eWxlPSJkaXNwbGF5OiBub25lOyI+IHskc19hbmR9IHtodG1sX3NlbGVjdF9kYXRlIHByZWZpeD0kdG1wX3ByZWZpeDIgdGltZT0kdG1wdGltZSBzdGFydF95ZWFyPSItMTAiIGVuZF95ZWFyPSIrMTAifSB7aHRtbF9zZWxlY3RfdGltZSBwcmVmaXg9JHRtcF9wcmVmaXgyIHRpbWU9JHRtcHRpbWUgfTwvZGl2Pic7CgkJCQkkdG1wb3V0ID0gJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCJjb21wYXJlX2RhdGVfbW9kaWZpZWQiLCRkYXRlY29tcGFyZWNob2ljZXMsLTEsIk5BIiwiIG9uY2hhbmdlPVwiZGF0ZWlucHV0X2NoYW5nZWNvbXBhcmUoJyIuJGlkLiJkYXRlX21vZGlmaWVkJywgdGhpcy52YWx1ZSk7XCIiKS4iICIuJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZUZyb21EYXRhKCR0bXB0ZW1wbGF0ZSk7CgkJCQkkdG1wb3V0IC49ICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsImZpZWxkX2RhdGVfbW9kaWZpZWQiLCAiX19kYXRlX2ZpZWxkIik7CgkJCQkkb3V0cHV0WyJkYXRlX21vZGlmaWVkIl0gPSBhcnJheSgkdGhpcy0+TGFuZygiZGF0ZV9tb2RpZmllZCIpLCAkdG1wb3V0KTsKCQkJCSRvcmRlcmZpZWxkb3B0aW9ucyA9IGFycmF5KCIiPT4iIiwidmlkZW9pZCI9PiJ2aWRlb2lkIiwiZGVzY3JpcHRpb24iPT4iZGVzY3JpcHRpb24iLCJ0aHVtYm5haWwiPT4idGh1bWJuYWlsIiwicGFyZW50Ij0+InBhcmVudCIsImlkIj0+ImlkIiwibmFtZSI9PiJuYW1lIiwiYWxpYXMiPT4iYWxpYXMiLCJpdGVtX29yZGVyIj0+Iml0ZW1fb3JkZXIiLCJkYXRlX21vZGlmaWVkIj0+ImRhdGVfbW9kaWZpZWQiKTsKCQkJCSRvdXRwdXRbIm9yZGVyYnkiXSA9IGFycmF5KCR0aGlzLT5MYW5nKCJvcmRlcmJ5ZmllbGQiKSwgJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCJvcmRlciIsJG9yZGVyZmllbGRvcHRpb25zKS4iICIuJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCJvcmRlcl90eXBlIiwkb3JkZXJjaG9pY2VzKSk7CgkJCQlicmVhazsKCQkJCgkJfQoJCWVjaG8gJzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCWZ1bmN0aW9uIGRhdGVpbnB1dF9jaGFuZ2Vjb21wYXJlKGZpZWxkbmFtZSwgbmV3dmFsdWUpewoJCWlmKG5ld3ZhbHVlID09IDUpewoJCQl2YXIgbmV3c3RhdGUgPSAiaW5saW5lIjsKCQl9ZWxzZXsKCQkJdmFyIG5ld3N0YXRlID0gIm5vbmUiOwoJCX0KCQlpZihkb2N1bWVudC5nZXRFbGVtZW50QnlJZChmaWVsZG5hbWUrIl9wYXJ0MiIpKQlkb2N1bWVudC5nZXRFbGVtZW50QnlJZChmaWVsZG5hbWUrIl9wYXJ0MiIpLnN0eWxlLmRpc3BsYXkgPSBuZXdzdGF0ZTsKCQlyZXR1cm4gdHJ1ZTsKCX0KPC9zY3JpcHQ+Cic7CgkJaWYoJGFzc2lnbil7CgkJCWZvcmVhY2goJG91dHB1dCBhcyAka2V5PT4kdmFsdWUpewoJCQkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCRrZXkuIl9sYWJlbCIsICR2YWx1ZVswXSk7CgkJCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJGtleS4iX2lucHV0IiwgJHZhbHVlWzFdKTsKCQkJfQoJCX1lbHNlewoJCQllY2hvICI8dGFibGUgc3R5bGU9XCJib3JkZXItbGVmdDogMXB4IHNvbGlkIExpZ2h0R3JheTsgcGFkZGluZy1sZWZ0OiAxMHB4O1wiPiI7CgkJCWZvcmVhY2goJG91dHB1dCBhcyAka2V5PT4kdmFsdWUpewoJCQkJaWYoJGtleSAhPSAib3JkZXJieSIpCWVjaG8gIgoJCQkJPHRyPjx0ZD4iLiR2YWx1ZVswXS4iPC90ZD48dGQ+Ii4kdmFsdWVbMV0uIjwvdGQ+PC90cj4iOwoJCQl9CgkJCQllY2hvICIKCQkJPC90YWJsZT48YnIvPiI7CgkJCWVjaG8gIjxwPiIuJG91dHB1dFsib3JkZXJieSJdWzBdLiI6ICIuJG91dHB1dFsib3JkZXJieSJdWzFdLiI8L3A+IjsKCQl9Cj8+]]></data>
	</file>
	<file>
	  <filename>/function.plGetFileInfo.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCWlmKCFpc3NldCgkZmlsZXBhdGgpKQlleGl0OwoJCgkkaW5mbyA9IGFycmF5KCk7CgkKCSRpbmZvWyJmaWxlbmFtZSJdID0gYmFzZW5hbWUoJGZpbGVwYXRoKTsKCQoJJHNpemUgPSBmaWxlc2l6ZSgkZmlsZXBhdGgpOwoJJGluZm9bInNpemUiXSA9ICRzaXplOwoJaWYoJHNpemUgPiAxMDczNzQxODI0KXsKCQkkc2l6ZSA9IHJvdW5kKCgkc2l6ZS8xMDczNzQxODI0KSwyKS4nIEdCJzsKCX1lbHNlaWYoJHNpemUgPiAxMDQ4NTc2KXsKCQkkc2l6ZSA9IHJvdW5kKCgkc2l6ZS8xMDQ4NTc2KSwyKS4nIE1CJzsKCX1lbHNlaWYoJHNpemUgPiAxMDI0KXsKCQkkc2l6ZSA9IHJvdW5kKCgkc2l6ZS8xMDI0KSwyKS4nIEtCJzsKCX1lbHNlewoJCSRzaXplIC49ICcgYnl0ZXMnOwoJfQoJJGluZm9bInNpemVfd2Zvcm1hdCJdID0gJHNpemU7CgkKCSRleHRlbnNpb24gPSBzdHJ0b2xvd2VyKHN1YnN0cihzdHJyY2hyKCRmaWxlcGF0aCwgIi4iKSwgMSkpOwoJJGluZm9bImV4dCJdID0gJGV4dGVuc2lvbjsKCWlmKGluX2FycmF5KCRleHRlbnNpb24sIGFycmF5KCdmbHYnLCdzd2YnLCd3bXYnLCdtb3YnKSkpewoJCSRpbmZvWyJmaWxlaWNvbiJdID0gImljb25zL2ZpbGV0eXBlcy9mbWVkaWEuZ2lmIjsKCX1lbHNlaWYoaW5fYXJyYXkoJGV4dGVuc2lvbiwgYXJyYXkoJ2pwZWcnLCdqcGcnLCdwbmcnLCdnaWYnKSkpewoJCSRpbmZvWyJmaWxlaWNvbiJdID0gImljb25zL2ZpbGV0eXBlcy9mcGFpbnQuZ2lmIjsKCX1lbHNlewoJCSRpbmZvWyJmaWxlaWNvbiJdID0gImljb25zL2ZpbGV0eXBlcy9mZG9jLmdpZiI7Cgl9CgkKCSRpbmZvWyJpbWFnZXNpemUiXSA9IGZhbHNlOwoJJGltZ2luZiA9IGdldGltYWdlc2l6ZSgkZmlsZXBhdGgpOwoJaWYoaXNzZXQoJGltZ2luZlsxXSkpewoJCSRpbmZvWyJ3aWR0aCJdID0gJGltZ2luZlswXTsKCQkkaW5mb1siaGVpZ2h0Il0gPSAkaW1naW5mWzFdOwoJCSRpbmZvWyJpbWFnZXNpemUiXSA9ICRpbWdpbmZbMF0uJ3gnLiRpbWdpbmZbMV07CgkJaWYoaXNzZXQoJGltZ2luZlsibWltZSJdKSkJJGluZm9bIm1pbWUiXSA9ICRpbWdpbmZbIm1pbWUiXTsKCX0KCQoJJGluZm9bIm93bmVyIl0gPSBmaWxlb3duZXIoJGZpbGVwYXRoKTsKCSRpbmZvWyJwZXJtaXNzaW9ucyJdID0gZmlsZXBlcm1zKCRmaWxlcGF0aCk7CgkKCSRpbmZvWyJmaWxlbXRpbWUiXSA9IGZpbGVtdGltZSgkZmlsZXBhdGgpOwoJJGluZm9bIm1vZGlmaWVkIl0gPSBkYXRlKCJZLW0tZCBHOmkiLCAkaW5mb1siZmlsZW10aW1lIl0pOwoJCj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/function.plresize.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLy8gZnVuY3Rpb24gcGxSZXNpemUoJGZ1bGxwYXRoLCAkbmV3cGF0aCwgJG5ld3dpZHRoLCAkbmV3aGVpZ2h0PWZhbHNlLCAkdHJhbnNwYXJlbmN5PWZhbHNlLCAkY3JvcD1mYWxzZSkgewoJJG5hbWUgPSBzdHJfcmVwbGFjZSgnLy8nLCcvJywkZnVsbHBhdGgpOwoJaWYoIWZpbGVfZXhpc3RzKCRuYW1lKSkJcmV0dXJuIGZhbHNlOwoJJGltYWdlX2luZm9zID0gZ2V0aW1hZ2VzaXplKCRuYW1lKTsKCQoJJGRvcmVzaXplID0gdHJ1ZTsKCWlmKCAkaW1hZ2VfaW5mb3NbMF0gPD0gJG5ld3dpZHRoICYmICgkbmV3aGVpZ2h0ID09IGZhbHNlIHx8ICRpbWFnZV9pbmZvc1sxXSA8PSAkbmV3aGVpZ2h0KSApewoJCSRyZXR1cm4gPSBmYWxzZTsKCX1lbHNlewoJCSRuZXduYW1lID0gKCRuZXdwYXRoID09ICcnPyRmdWxscGF0aDokbmV3cGF0aCk7CgkJJGFyciA9IHNwbGl0KCJcLiIsJG5hbWUpOwoJCSRleHQgPSBzdHJ0b2xvd2VyKCRhcnJbY291bnQoJGFyciktMV0pOwoKCQlpZigkZXh0PT0ianBlZyIgfHwgJGV4dD09ImpwZyIpewoJCQkkaW1nID0gQGltYWdlY3JlYXRlZnJvbWpwZWcoJG5hbWUpOwoJCX0gZWxzZWlmKCRleHQ9PSJwbmciKXsKCQkJJGltZyA9IEBpbWFnZWNyZWF0ZWZyb21wbmcoJG5hbWUpOwoJCX0gZWxzZWlmKCRleHQ9PSJnaWYiKSB7CgkJCSRpbWcgPSBAaW1hZ2VjcmVhdGVmcm9tZ2lmKCRuYW1lKTsKCQl9CgkJaWYoISRpbWcpICAgcmV0dXJuIGZhbHNlOwoKCQkkb2xkX3ggPSBpbWFnZVNYKCRpbWcpOwoJCSRvbGRfeSA9IGltYWdlU1koJGltZyk7CgoJCWlmKCRuZXdoZWlnaHQgJiYgJGNyb3ApewoJCQkvLyBmaW5kIHRoZSB3YW50ZWQgcmF0aW8KCQkJJHdhbnRlZHJhdGlvID0gJG5ld3dpZHRoLyRuZXdoZWlnaHQ7CgkJCSRjdXJyZW50cmF0aW8gPSAkb2xkX3gvJG9sZF95OwoJCQlpZigkY3VycmVudHJhdGlvID4gJHdhbnRlZHJhdGlvKXsKCQkJCS8vIHdpZHRoIGlzIHRvbyBsYXJnZQoJCQkJJGNyb3BfeCA9IChpbnQpICgkb2xkX3kgKiAkd2FudGVkcmF0aW8pOwoJCQkJJGNyb3BfeSA9ICRvbGRfeTsKCQkJCSRpbnRfdyA9IChpbnQpICgoJG9sZF94IC0gJGNyb3BfeCkgLyAyKTsKCQkJCSRpbnRfaCA9IDA7CgkJCX1lbHNlaWYoJGN1cnJlbnRyYXRpbyA8ICR3YW50ZWRyYXRpbyl7CgkJCQkvLyBoZWlnaHQgaXMgdG9vIGxhcmdlCgkJCQkkY3JvcF94ID0gJG9sZF94OwoJCQkJJGNyb3BfeSA9IChpbnQpICgkb2xkX3ggLyAkd2FudGVkcmF0aW8pOwoJCQkJJGludF9oID0gKGludCkgKCgkb2xkX3kgLSAkY3JvcF95KSAvIDIpOwoJCQkJJGludF93ID0gMDsKCQkJfQoJCQlpZigkY3VycmVudHJhdGlvICE9ICR3YW50ZWRyYXRpbyl7CgkJCQkvLyB3ZSBmaXJzdCBjcm9wCgkJCQkkZGltZyA9IEltYWdlQ3JlYXRlVHJ1ZUNvbG9yKCRjcm9wX3gsICRjcm9wX3kpOwoJCQkJaWYoaW1hZ2Vjb3B5cmVzYW1wbGVkKCRkaW1nLCRpbWcsMCwwLCRpbnRfdywkaW50X2gsJGNyb3BfeCwkY3JvcF95LCRjcm9wX3gsJGNyb3BfeSkpewoJCQkJCWltYWdlZGVzdHJveSgkaW1nKTsKCQkJCQkkaW1nID0gJGRpbWc7CgkJCQl9CgkJCX0KCQkJJG9sZF94ID0gJGNyb3BfeDsKCQkJJG9sZF95ID0gJGNyb3BfeTsKCQkJJHRodW1iX2ggPSAkbmV3aGVpZ2h0OwoJCQkkdGh1bWJfdyA9ICRuZXd3aWR0aDsKCQl9ZWxzZXsKCQkJJHJhdGlvID0gJG5ld2hlaWdodD9taW4oJG5ld3dpZHRoIC8gJGltYWdlX2luZm9zWzBdLCAkbmV3aGVpZ2h0IC8gJGltYWdlX2luZm9zWzFdKTooJG5ld3dpZHRoIC8gJGltYWdlX2luZm9zWzBdKTsKCQkJJHRodW1iX2ggPSAkaW1hZ2VfaW5mb3NbMV0gKiAkcmF0aW87CgkJCSR0aHVtYl93ID0gJGltYWdlX2luZm9zWzBdICogJHJhdGlvOwoJCX0KCgkJJG5ld19pbWcgPSBJbWFnZUNyZWF0ZVRydWVDb2xvcigkdGh1bWJfdywgJHRodW1iX2gpOwoJICAgCgkJaWYoJHRyYW5zcGFyZW5jeSkgewoJCQlpZigkZXh0PT0icG5nIikgewoJCQkJaW1hZ2VhbHBoYWJsZW5kaW5nKCRuZXdfaW1nLCBmYWxzZSk7CgkJCQkkY29sb3JUcmFuc3BhcmVudCA9IGltYWdlY29sb3JhbGxvY2F0ZWFscGhhKCRuZXdfaW1nLCAwLCAwLCAwLCAxMjcpOwoJCQkJaW1hZ2VmaWxsKCRuZXdfaW1nLCAwLCAwLCAkY29sb3JUcmFuc3BhcmVudCk7CgkJCQlpbWFnZXNhdmVhbHBoYSgkbmV3X2ltZywgdHJ1ZSk7CgkJCX0gZWxzZWlmKCRleHQ9PSJnaWYiKSB7CgkJCQkkdHJucHJ0X2luZHggPSBpbWFnZWNvbG9ydHJhbnNwYXJlbnQoJGltZyk7CgkJCQlpZiAoJHRybnBydF9pbmR4ID49IDApIHsKCQkJCQkvL2l0cyB0cmFuc3BhcmVudAoJCQkJCSR0cm5wcnRfY29sb3IgPSBpbWFnZWNvbG9yc2ZvcmluZGV4KCRpbWcsICR0cm5wcnRfaW5keCk7CgkJCQkJJHRybnBydF9pbmR4ID0gaW1hZ2Vjb2xvcmFsbG9jYXRlKCRuZXdfaW1nLCAkdHJucHJ0X2NvbG9yWydyZWQnXSwgJHRybnBydF9jb2xvclsnZ3JlZW4nXSwgJHRybnBydF9jb2xvclsnYmx1ZSddKTsKCQkJCQlpbWFnZWZpbGwoJG5ld19pbWcsIDAsIDAsICR0cm5wcnRfaW5keCk7CgkJCQkJaW1hZ2Vjb2xvcnRyYW5zcGFyZW50KCRuZXdfaW1nLCAkdHJucHJ0X2luZHgpOwoJCQkJfQoJCQl9CgkJfSBlbHNlIHsKCQkJSW1hZ2VmaWxsKCRuZXdfaW1nLCAwLCAwLCBpbWFnZWNvbG9yYWxsb2NhdGUoJG5ld19pbWcsIDI1NSwgMjU1LCAyNTUpKTsKCQl9CgkJaW1hZ2Vjb3B5cmVzYW1wbGVkKCRuZXdfaW1nLCAkaW1nLCAwLDAsMCwwLCAkdGh1bWJfdywgJHRodW1iX2gsICRvbGRfeCwgJG9sZF95KTsKCgkJaWYoZmlsZV9leGlzdHMoJG5ld25hbWUpKQlAdW5saW5rKCRuZXduYW1lKTsKCgkJaWYoJGV4dD09ImpwZWciIHx8ICRleHQ9PSJqcGciKXsKCQkJaW1hZ2VqcGVnKCRuZXdfaW1nLCAkbmV3bmFtZSk7CgkJCSRyZXR1cm4gPSB0cnVlOwoJCX0gZWxzZWlmKCRleHQ9PSJwbmciKXsKCQkJaW1hZ2VwbmcoJG5ld19pbWcsICRuZXduYW1lKTsKCQkJJHJldHVybiA9IHRydWU7CgkJfSBlbHNlaWYoJGV4dD09ImdpZiIpIHsKCQkJaW1hZ2VnaWYoJG5ld19pbWcsICRuZXduYW1lKTsKCQkJJHJldHVybiA9IHRydWU7CgkJfQoJCWltYWdlZGVzdHJveSgkbmV3X2ltZyk7CgkJaW1hZ2VkZXN0cm95KCRpbWcpOwoJCWlmKCRyZXR1cm4pICRyZXR1cm4gPSAkbmV3bmFtZTsKCX0KCj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/images/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/images/icon.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhQABAAOf7AA83SRM6RhhDVRZDXC1DRy9HYRdTYy1PVjROZTxRVSJcWxJgci9bZyhlgENicBZtiBlwfyxrgR12lRR6jUtyg0V3eR2MmyuHpwqQsx2MqhKPuVWClACYuxGVsgCZwmaBigCbty+OtC2OugCbvgCa0BmUyjOQqQCcywOdwA6ZyQCfuwCexieVrRWasQubxQCgwWiHiiaYqgChwyGYvAChyQqfwQSivgCi0RGgwyKcuTKYt0aVnTCasgCmzwCoyQGl5R6hywCrzRuluxemwi+gxACuyR+lyBWm3UqbrwCs4WmUmwCt2w2q0y6jwBOp2ACv1gCw2A2u0CCrugCx33+SnhWt1SepzAC01Dmmtyuo0kSjvCWsyC2rwgC23VGithCzzgC4zCCt3Rix0wC270KowSGx2kKrzjOw0zCyzg+64kKt0latx0Oy0D60y0azwyq521evv5aeshHD3U+zzDa46SC/53Guph7C5IOqrCTA8ZOnsTfA4mu0yG61uCTG7kbB3ijJ6kDC7ETD2RrN9CLL+lXA31LC2V7A2XK70WHB0zjK+6Wxsh3T8zjL8zXN72zA3jLR6mfF0XPC17C0w4XAzJ66xHzD0ZDAwILC4HjH3G/L3oLG3XXK5YDK5nXQ2qTEx23S7J/Hz37R33zR7JjL2a7Gy4jQ3pHQ4YvT1VPh+ZfO7ZXQ6JvR1rrLxY3W7ZvT55fW537f64nc6nXh+JDc47jS1JPc64Lg+KHb2ajZ5pfd9KTa7aLc58HV4qbc77XZ4srX17Tc77Lf4J7k9KDn76zk79TZ6bbj6q3n5bvk87Lo7qvs/dvi58jo68Tp8svn8qzw9sHr7NXm7L/t9OPl4bzu+7nw983u8dfv9Nju/Mzy/N3u9eLv8Nvy8cn3/sX5+dX2+evx9PTz6tP8/uP49+f3/uH5/ur3+O338tv8///09fj2+vz1///37/T5/P/2/OH//P749/j69+n+/e3/+P36//H+//b/7f/8+vX/+vj/9P/8//n+//z++//+9P7//CH+EUNyZWF0ZWQgd2l0aCBHSU1QACwAAAAAQABAAAAI/gD3/Rv4j589e//8tYtXz122ZMViSYwlq6LFixgzaqRF7Fs6e/XUxavHjx/BkwNL8hsYjx84Xom0NGmSI8eQmzhz6tzJ8yYXOLa82atHdB/BowRVDpxXTZMbKWDk3ClT5s4dOVitYpVjdavVrVa3Wh1bJkuTOcTg8duHD+lAfAT37eNnb9mjJl/kMGI0iJAiQo0CCx5MuPDgQY0IEVKUJ40YLrbM8Yvn72i+f3IHxtvHD14hK2UaKc4zpcySMKhTq17NWrUTJ6jpjFE0CNAXMtPs1UOaj1+9ff/0xas3z9aQN43yhDniZMmTJ1WiS59Ovbr16E6W3Eklh4ukdO7i/sUjmG/fu3r/9MWrB27OFkeD0jCZX0WMmCj48+vfz79//iBXAMLIF2RYM49cBOVTzzv15KOPP/xMo8UbjNxh34XP+aehf0/oV8QWPnQxCCBC2DJPPfsQlE897NSTzz3+8APNFnU00kUQYjwX3RLX9eijdFdE4cQReQxShCfwvFMPQfnU8049+dzjjz3DbOEHIVUw0UMVrzkRRhXPRRHEmM9V8dwTVTwX3RNRBOHDm0b4EEQUz4nxRBI/jEFIEZ7M8049BO2Dzz/87POPP/noEoQfhDARRBE+MHFDEmEsAcUQWETiSSRbWFGFGD4swUQQV0zhhA9YuBEJL9VUU4wp/m1sEUUZYjxxxBSDiOGJPUjVQ9A+//iTjy5W+OFHD1VEcYUPVSwRnRGHKGPOPONAY4gRPkSxhBNVRFFFD1uI8s0489jDjz3zWJOIGFWIEUUSXQwihij2IFUPQfvg408+ulhhLBNLVCHGFQQHsYYt6bjzzjv8zFOMCWVUscQRTjARRBuxwHMQP+LF8w881mTQgxhRJNHFIGKIYg9S9RC0Dz7+5KOLFcYukUQYXVwBhhBzJFOOO0TFgw8/5CjRwxJOHJHEE0IQkw479fyDTzz+VG1POnzgIEYUSXQxiBii2INUPQTtg48/+ejiwx1+VJHEEVNcAYYbxdjDj3j/yCPP/j/5fIJBGUA4MUUUmszjzjv1DJSPPvfok888pNQgRhRJdDGIGKLYg1Q9BO0Tjz/56OLDHYBUkcQRTvjgBjQH/bNPPfWoE88/+TQjgRVGPIdGNeLVs88//Njzjz/65GPPL0ZEIUYSZQwihij2IFUPQfvE408+rhgByCBPLOEEEGsoM886/PwDez3vxDMQNxE0UcQVUfzhjTv58COXSh3z0wsR+CXRxSBiEIU9kFIPguwjHv7Ihytq4IdGPEEMVmADNODBj3W8ox774MdAxAM7CsTgC2JgAiiK8QtrpIMfctkH7N5Rj330gghiCEIS0jCIKGjCHkipB0H2EQ9/5MMV/jXIQx6CUAQhxGIc52BGK9zhDn78Qx/68Ec86sEPJVjgCUlYQg0uoAUuiGIeA+HHPuohHn7oQQdXCEISyjAIH2jCHkipx0D4UY94+CMfrpgBHfLgAy5IwQ3W0AMBFHAJcNgjH1Xzhzz4MQ87WMAJP1iCD6yQBSO0oRv6yAc//hGPf+TDHjDQwRWicIQqOMIHmrAHUvhBkHrs4x/5gAUH6lCHGrxABTV5QAZaIARe2CMf9xiIXPJRCggwIQlMsAITqhCFRJBDH/bgxz7ioQ96dAMBF7CBDU5QBUf4IBP2cAtB6sGPf9gDFhy4wx5qwM52tnMT88iHPv6xD9j5AxgQ/qjBDWpgBCDQQAWRmIc/SrKPeMgjH58YAAZsoIITZMERQ8iEPcQ5kHrw4x/2gAUH7rCHds6gBiPAgQdmoIN05EMf/9hHPfbhD2pUAAQrqAEHapCDFhTDHv+Qy0DiEQ4HTIADKlDBCbLgiCFkwh4U/Uc9+PEPe8CCA3fYQzs5MAJ2esADHVCGPf6Rj33UAx/+EEcFWlADGqyAAyyAQzpKso9/+OMf9ZjEAGJQAxWA4ARZcMQQMmGPpNaDH/+wByw4cIc9uLOdLvAACDwxD37kYx/12Mc/2qEEC9TgBCeYAQt4YQ+5DMQf8XgHAh7QghqoAAQeyIIjhpAJeyS1HvvI/kc+XsGBO+zhsOz0ABBUAAdw2CMf+6jHP/ARj1pAQAUpSMEM+AAOd7xjH/nQRzzeEYcBdOAFNQiqC7LgiCFkwh5Jrcc+ZPsKDtxhD7itgQdckAMsWMMe/4gHPv6xj3qcAwIdSEEJMmANe9SDHfXIhz7iYYwCXICdKwiqC7LgiCFkwh5Jrcc+/pEPWHDgDntI7wpcUIMWyGIe+xgIP/ZRj3P0IQYiEIEr4MGPeryjHrI9BwUaMIMVuMADQXVBFhwxhEzYI6n12Mc/8vEKDtxhD+mtAQ1oAIJIzKMe/8jHP+qxDn4IYwchwMQ46PEPucTjH/nAwwJ0cNWrBtUFWXDE/hAyYQ9x+uMf9eDHP/LxCg7cYQ9JpoEHcoAFbdTDH/n4B+ziAQ9c5EIb89BHO/QmHmAcwAI1SC4NPBDUE2TBEUPIhD2Qso9/+OMf9fiHP/LhCw7cYQ9JZqcHQpALe+SDHvx4Rz3i8Q+V8EM8+xAPMxwwARDUwAMjUEENVACCE2TBEUaQhD2Qso9/+OMf9fiHPvLhCw7cYQ9JzgEHXKCBU8CDHvr4Rz1SSG651CMe6/iAAVpQgxV4oAYqqIEKanACJzjCCJKwB1L28Q9//KMe/9BHPnzBgTvsIdUc8AAG1pCOfPgjHrb+xz7EQxB36CEAFgABB9gZ1BGooAYncIIj/owgCXsgZR//8Mc/6vEPfeTDFxy4wx5SXQMPcKAF3+CHeP5hj5IMJB4D0VslAjCBFtTAAytg5wg8oIIanMAJjjCCJOyBlH38wx//qMc/9JEPX3DgDntI8ghWQAMOtIAY9nhHPPJhj5L8Qzz/0FsrBPCAFrSAAx5YwQtqwAEPqKAGJ3CCI4wgCXsgZR//8Mc/6vEPfeTDFxy4wx5SvYIV1KAFiTDHO+Khj3zwo2PicUctCBCBDoBABSvwwArYOQMPqKAGJ3CCI4wgCXsgZR//8Mc/6vEPfeTDFxy4wx5SXfkagIAHx7CHPPTxD3mIRx31cEctDmCADHBABTaogQtc/sDOq6qgBidwgiOMIAl7IGUf//DHP+rxD33kwxccuMMeaL4CF6wAA3MYxzz88Q95iKce4VAKALAALDADHFADL8BOZbZ9KlADJ+AEjmAEkmAPSLEP/+AP/1AP/6AP+eALHHAHe0BzK+ACKeABOUAL8DAQeiMP4UAFABABHdABI+ABK1ADL1ADZbYCLqACNXACTuAIRiAJ9oAU+0AQ+/AP+pAPvsABd7AHSTYCNbACHkACKcABMcAK4SBb3LAICRAAE8ACOYADNLB9NfACL+ABKeABNLACKlADKeAEg+ADkmAP+LAPBJEP9fAO+2AP+uAP9gALILAHdUBzNVBmHNAB/hlgAhtAAQwgABBgAS0AAuzkAle1fS7gAcnlAmZ4AiVwBI2wBZEwD++wDwSRD/XADvWQD/fgD/xADCqwB37ATiNAiDUwAhyAARIgARfQATVRAytgiZUXjMFYAzagAh5QAknQCEIQCenwDvtAEPlQD+9QD/mgD/7AD8rAA2/gCEZQAyPwjSMwAyNAczMwAxzATjRwAilAAiSwAmb4ju+oAnbHAStQB47QAqIAD3JBEPmwD+9QD/mgD/9QD86ABD7gCF3ATh4wAuU4A+20Ai6wAlflAjRwWDTgAieQXCsQVBzZkSAAAipQBJAgCCxQDPPAD/tAEPnAD/WwD//gD/FQ/g/mgAgjcAeD8AQ0sALbV2Y86QI8WQM5oAI2AAIqUAMcwAHlCI5KOQJX5QI+IAeQwAVIMA72gBT58A/1sA8DEQ/1YA/JkANBAAiD0AU9AASWyJMe4AI8OQLtBAIcCQI5gJaWeFUlcAR+wAhgEAOUMA/84A9ugQ/4MBDxsA/8YA6J0AFB4AiDUAdd0ANAQAM05wInsH0rwE4voAIvsGSauQKamQVjoAiEcAdCAAfgwA/y4A9J9Q8l8Q/24A2WYAJN8AaO4AiDMJuzuReQsBeQAAmMQAiK8JuCMQi2OZzEqQiBcAYsAAfTYA//UDVJVRL2IA//YA/pkAtewANNsAVo/oAGW3Ah3rmdYnAGVDGeZ1Ce9rGd6JmeTcADXnAK4GAP/CAP/yAPR7EPR+EO9sAP/+AP6lAP8zAOsmAIbdAGXIAGZnCgCGoG5XkGaNAG28kGEBqhEjqhbJAIxPAN88AP8UAQJUEQ+3AUsLMP+BAP7nAOzmAKkmAIhiAIgmAIhfCiMBqjKjqjKnoINvoHOJqjOmoIiWAK02AP/yAP+CAX/EAQ+/AP/DAQ8QA7JWEOv0AJliAKszClVFqlVnoLt1CltzClt2ClVgoKnMAHlNAM9iAPclEPR7EP/8APA4EPsMMP88AKlGAKuiALoHCnnJAJnLCnfNqnfvqnfzoKgnoL/rJgC5QQCtJgDyVRD0chF/xAEPvAD/ZwDahAC8PgCqPQCZ2wCZyqqZ76qaAaqqLqqa4gC8NgC6QQCuZgD/+AD/tAEPWwD/xwFPYwD8JAC8QwDLqwCqqwCqsAC7DwCr46rMS6CqdwrMiKrMVarKdgCrawDL7wCs5gD/8QD0dRD/vAD0dhD90gDNCwDL7gC8EwrrnAC7yQC7uQrrsQruyaC7yQC+aaC7lgrvKqrrsQrrmwC7lgrsWwDMvgC79wDvIQD0dRD/vAD0dhD93QDM6QDMkwrsGQDMcgDMhwDBZ7sRibsRq7sRibDK1SDc5QDvIQD0chF/xwFPxADs2QDdnw6gwu6wzN0AzREA3N4Aw2e7M3G7PXELM8ew3X0Aw4G7Qu6wzaULTScA71EA/4QBBywQ9HwQ/ngA3lUA7bgA3Y0A1Yuw3bYLVc27VWuw3SELZauw3YsA1e67XbkA1Wmw7kwA3usA/1sA8EsQ//wA8DAZj/cA5Tew7kQA7wQA7nEA7rsA7hcA6Ge7iHGw6K6w4lwUSKi7iQO7VTew7zgA7o4A77UA/7QBD7cBSAWRL8wETucBD2wESDK7qoi7qgyw8DsQ/8kLqwi7orKA8pdBS2e7u4m7u6u7u6Kw+8+7vAG7zCO7zEW7zG+w8BAQA7]]></data>
	</file>
	<file>
	  <filename>/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[]]></data>
	</file>
	<file>
	  <filename>/instantsearch.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZnVuY3Rpb24gY3RsbW1fc2VhcmNoKHdoYXQsaW53aGF0KXsKCXZhciBkZXN0aW5hdGlvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlud2hhdCk7CglpZighZGVzdGluYXRpb24pIHJldHVybjsKCXZhciBldmVuID0gZmFsc2U7Cgl2YXIgdGhlcm93cyA9IGRlc3RpbmF0aW9uLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0Ym9keSIpWzBdLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ciIpOwoJZm9yKGk9MDtpPHRoZXJvd3MubGVuZ3RoO2krKyl7CgkJdmFyIHRoZWNsYXNzID0gKGV2ZW4/InJvdzIiOiJyb3cxIik7CgkJdmFyIG5ld3N0eWxlID0gIm5vbmUiOwoJCXZhciB0aGVjb2x1bW5zID0gdGhlcm93c1tpXS5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGQiKTsKCQlmb3Ioaj0wO2o8dGhlY29sdW1ucy5sZW5ndGg7aisrKXsKCQkJaWYodGhlY29sdW1uc1tqXS5jbGFzc05hbWUgIT0gImN0bG1tX25vc2VhcmNoIil7CgkJCQl2YXIgdG1wYSA9IHRoZWNvbHVtbnNbal0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoImEiKVswXTsKCQkJCWlmKHRtcGEgJiYgdG1wYS5pbm5lckhUTUwudG9Mb3dlckNhc2UoKS5pbmRleE9mKHdoYXQudG9Mb3dlckNhc2UoKSkgPj0gMCkJbmV3c3R5bGUgPSAidGFibGUtcm93IjsKCQkJCWlmKCF0bXBhICYmIHRoZWNvbHVtbnNbal0uaW5uZXJIVE1MLnRvTG93ZXJDYXNlKCkuaW5kZXhPZih3aGF0LnRvTG93ZXJDYXNlKCkpID49IDApCQluZXdzdHlsZSA9ICJ0YWJsZS1yb3ciOwoJCQl9CgkJfQoJCXRoZXJvd3NbaV0uc3R5bGUuZGlzcGxheSA9IG5ld3N0eWxlOwoJCWlmKG5ld3N0eWxlICE9ICJub25lIil7CgkJCXRoZXJvd3NbaV0uY2xhc3NOYW1lID0gdGhlY2xhc3M7CgkJCXRoZXJvd3NbaV0ub25tb3VzZW92ZXIgPSBmdW5jdGlvbigpeyB0aGlzLmNsYXNzTmFtZSArPSAiaG92ZXIiOyB9OwoJCQl0aGVyb3dzW2ldLm9ubW91c2VvdXQgPSBmdW5jdGlvbigpeyB0aGlzLmNsYXNzTmFtZSA9IHRoaXMuY2xhc3NOYW1lLnN1YnN0cigwLDQpOyB9OwoJCQlldmVuID0gIWV2ZW47CgkJfQoJfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/instantsort.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZnVuY3Rpb24gY3RsbW1fc29ydFJvd3ModGFibGVpZCxjb2xpbmRleCxkZXNjLG51bWVyaWMpewoJLy8gdGFibGVpZCBpcyB0aGUgaWQgb2YgdGhlIHRhYmxlIHRvIHNvcnQKCS8vIGNvbGluZGV4IGlzIGFnYWluc3Qgd2hpY2ggY29sdW1uIHRvIHNvcnQgKDAtPiBmaXJzdCwgMS0+IHNlY29uZC4uLikKCS8vIGRlc2MgbWFrZXMgdGhlIHNvcnQgZGVzY2VuZGluZwoJLy8gbnVtZXJpYyBtYWtlcyB0aGUgc29ydCBudW1lcmljCglpZighZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFibGVpZCkpCXJldHVybiBmYWxzZTsKCXZhciB0aGVyb3dzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFibGVpZCkuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRib2R5IilbMF0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRyIik7CglpZighdGhlcm93c1swXSB8fCAhdGhlcm93c1swXS5jZWxsc1tjb2xpbmRleF0pCXJldHVybiBmYWxzZTsKCQoJdmFyIHNvcnRlZCA9IG5ldyBBcnJheSgpOwoJZm9yKGk9MDsgaTx0aGVyb3dzLmxlbmd0aDsgaSsrKXsKCQl2YXIgdGhlYXMgPSB0aGVyb3dzW2ldLmNlbGxzW2NvbGluZGV4XS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYSIpOwoJCWlmKHRoZWFzWzBdKXsKCQkJdmFyIHNvcnRkYXRhID0gdGhlYXNbMF0uaW5uZXJIVE1MOwoJCX1lbHNlewoJCQl2YXIgc29ydGRhdGEgPSB0aGVyb3dzW2ldLmNlbGxzW2NvbGluZGV4XS5pbm5lckhUTUw7CgkJfQoJCXNvcnRlZC5wdXNoKFtzb3J0ZGF0YSwgdGhlcm93c1tpXV0pOwoJCXRoZXJvd3NbaV0ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGVyb3dzW2ldKTsKCQlpLS07Cgl9CglpZihudW1lcmljKXsKCQlpZihkZXNjKXsKCQkJc29ydGVkLnNvcnQoZnVuY3Rpb24oYSxiKXsgcmV0dXJuIGJbMF0tYVswXTsgfSk7CgkJfWVsc2V7CgkJCXNvcnRlZC5zb3J0KGZ1bmN0aW9uKGEsYil7IHJldHVybiBhWzBdLWJbMF07IH0pOwoJCX0KCX1lbHNlewoJCWlmKGRlc2MpewoJCQlzb3J0ZWQuc29ydChmdW5jdGlvbihhLGIpeyByZXR1cm4gYVswXS50b0xvd2VyQ2FzZSgpIDwgYlswXS50b0xvd2VyQ2FzZSgpOyB9KTsKCQl9ZWxzZXsKCQkJc29ydGVkLnNvcnQoZnVuY3Rpb24oYSxiKXsgcmV0dXJuIGFbMF0udG9Mb3dlckNhc2UoKSA+IGJbMF0udG9Mb3dlckNhc2UoKTsgfSk7CgkJfQoJfQoKCXZhciB0YWJsZWJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YWJsZWlkKS5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGJvZHkiKVswXTsKCXZhciBldmVuID0gdHJ1ZTsKCWZvcihpPTA7IGk8c29ydGVkLmxlbmd0aDsgaSsrKXsKCQlldmVuID0gIWV2ZW47CgkJdmFyIHRoZWNsYXNzID0gKGV2ZW4/InJvdzIiOiJyb3cxIik7CgkJc29ydGVkW2ldWzFdLmNsYXNzTmFtZSA9IHRoZWNsYXNzOwoJCXNvcnRlZFtpXVsxXS5vbm1vdXNlb3ZlciA9IGZ1bmN0aW9uKCl7IHRoaXMuY2xhc3NOYW1lICs9ICJob3ZlciI7IH07CgkJc29ydGVkW2ldWzFdLm9ubW91c2VvdXQgPSBmdW5jdGlvbigpeyB0aGlzLmNsYXNzTmFtZSA9IHRoaXMuY2xhc3NOYW1lLnN1YnN0cigwLDQpOyB9OwoJCXRhYmxlYm9keS5hcHBlbmRDaGlsZChzb3J0ZWRbaV1bMV0pOwoJfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lang/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/en_US.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCgkkbGFuZ1siZnJpZW5kbHluYW1lIl0gPSAiVmltZW8gUGxheWVyIjsNCgkkbGFuZ1sibW9kZGVzY3JpcHRpb24iXSA9ICJFbWJlZCBWaW1lbyBWaWRlbyI7DQoJJGxhbmdbImFkbWluZGVzY3JpcHRpb24iXSA9ICJFbWJlZCBWaW1lbyBWaWRlbyI7DQoNCgkkbGFuZ1sicGFnZW1lbnVkZWxpbWl0ZXIiXSA9ICImbmJzcDsmIzEyNDsmbmJzcDsiOw0KCSRsYW5nWyJwYWdlbWVudW92ZXJmbG93Il0gPSAiJm5ic3A7Li4uJm5ic3A7IjsNCgkNCi8vIHN0cmluZ3MgZm9yIGNhdGVnb3J5DQoJJGxhbmdbImNhdGVnb3J5Il0gPSAiQ2F0ZWdvcnkiOw0KCSRsYW5nWyJjYXRlZ29yeV9wbHVyYWwiXSA9ICJDYXRhZ29yaWVzIjsNCgkkbGFuZ1siYWRkX2NhdGVnb3J5Il0gPSAiQWRkIENhdGVnb3J5IjsNCgkkbGFuZ1siZWRpdF9jYXRlZ29yeSJdID0gIkVkaXQgQ2F0ZWdvcnkiOw0KCSRsYW5nWyJmaWx0ZXJieV9jYXRlZ29yeSJdID0gIkZpbHRlciBieSBDYXRlZ29yeSI7DQoJJGxhbmdbImNhdGVnb3J5X2Rlc2NyaXB0aW9uIl0gPSAiRGVzY3JpcHRpb24iOw0KCSRsYW5nWyJwcm9tcHRfZGVsZXRlY2F0ZWdvcnkiXSA9ICJZb3UgYXJlIGFib3V0IHRvIGRlbGV0ZSB0aGlzIGNhdGVnb3J5ICglcyk/IEFsbCBjaGlsZHJlbiB3aWxsIGJlIGxvc3QuIERvIHlvdSB3aXNoIHRvIGNvbnRpbnVlPyI7DQoJDQovLyBzdHJpbmdzIGZvciB2aWRlbw0KCSRsYW5nWyJ2aWRlbyJdID0gIlZpZGVvIjsNCgkkbGFuZ1sidmlkZW9fcGx1cmFsIl0gPSAiVmlkZW9zIjsNCgkkbGFuZ1siYWRkX3ZpZGVvIl0gPSAiQWRkIFZpZGVvIjsNCgkkbGFuZ1siZWRpdF92aWRlbyJdID0gIkVkaXQgVmlkZW8iOw0KCSRsYW5nWyJmaWx0ZXJieV92aWRlbyJdID0gIkZpbHRlciBieSBWaWRlbyI7DQoJJGxhbmdbInZpZGVvX3ZpZGVvaWQiXSA9ICJWaWRlbyBJRCI7DQoJJGxhbmdbInZpZGVvX2Rlc2NyaXB0aW9uIl0gPSAiRGVzY3JpcHRpb24iOw0KCSRsYW5nWyJ2aWRlb190aHVtYm5haWwiXSA9ICJUaHVtYm5haWwiOw0KCSRsYW5nWyJ2aWRlb190aHVtYm5haWxfb3B0aW9uXzAiXSA9ICJTbWFsbCI7DQoJJGxhbmdbInZpZGVvX3RodW1ibmFpbF9vcHRpb25fMSJdID0gIk1lZGl1bSI7DQoJJGxhbmdbInZpZGVvX3RodW1ibmFpbF9vcHRpb25fMiJdID0gIkxhcmdlIjsNCgkkbGFuZ1sicHJvbXB0X2RlbGV0ZXZpZGVvIl0gPSAiWW91IGFyZSBhYm91dCB0byBkZWxldGUgdGhpcyB2aWRlbyAoJXMpPyBEbyB5b3Ugd2lzaCB0byBjb250aW51ZT8iOw0KCSRsYW5nWyJ0ZW1wbGF0ZWhlbHAiXSA9ICc8ZGl2PjxoMyBzdHlsZT0iY3Vyc29yOiBwb2ludGVyOyIgb25jbGljaz0iY3RsbW1fZGlzcGxheXRvZ2dsZSh0aGlzKTsiPiZndDsgU21hcnR5IHZhcmlhYmxlcyBmb3IgbGlzdCB0ZW1wbGF0ZSBvZjogY2F0ZWdvcnk8L2gzPjxkaXYgY2xhc3M9InRwbHZhcnNfaGlkZSI+PHVsPg0KCTxsaT4kbGV2ZWx0aXRsZTwvbGk+DQoJPGxpPiRwYXJlbnRvYmogKGlmIHBhcmVudCBpcyBzcGVjaWZpZWQpPC9saT4NCgk8bGk+JGl0ZW1saXN0IChhcnJheSBvZiBpdGVtcyk8L2xpPg0KCTxsaT4kaXRlbS0mZ3Q7aXNfc2VsZWN0ZWQ8L2xpPg0KCTxsaT4kaXRlbS0mZ3Q7bmFtZTwvbGk+DQoJPGxpPiRpdGVtLSZndDthbGlhczwvbGk+DQoJPGxpPiRpdGVtLSZndDtkZXRhaWxsaW5rPC9saT4NCgk8bGk+JGl0ZW0tJmd0O2RldGFpbHVybDwvbGk+DQoJPGxpPiRpdGVtLSZndDtkZXNjcmlwdGlvbjwvbGk+DQoJPGxpPiRpdGVtLSZndDtpc2RlZmF1bHQ8L2xpPg0KCTxsaT4kaXRlbS0mZ3Q7ZGF0ZV9tb2RpZmllZDwvbGk+DQoJPGxpPiRpdGVtLSZndDtkYXRlX2NyZWF0ZWQ8L2xpPg0KCTwvdWw+PGJyLz48YnIvPjwvZGl2PjwvZGl2PjxkaXY+PGgzIHN0eWxlPSJjdXJzb3I6IHBvaW50ZXI7IiBvbmNsaWNrPSJjdGxtbV9kaXNwbGF5dG9nZ2xlKHRoaXMpOyI+Jmd0OyBTbWFydHkgdmFyaWFibGVzIGZvciBsaXN0IHRlbXBsYXRlIG9mOiB2aWRlbzwvaDM+PGRpdiBjbGFzcz0idHBsdmFyc19oaWRlIj48dWw+DQoJPGxpPiRsZXZlbHRpdGxlPC9saT4NCgk8bGk+JHBhcmVudG9iaiAoaWYgcGFyZW50IGlzIHNwZWNpZmllZCk8L2xpPg0KCTxsaT4kaXRlbWxpc3QgKGFycmF5IG9mIGl0ZW1zKTwvbGk+DQoJPGxpPiRpdGVtLSZndDtpc19zZWxlY3RlZDwvbGk+DQoJPGxpPiRpdGVtLSZndDtuYW1lPC9saT4NCgk8bGk+JGl0ZW0tJmd0O2FsaWFzPC9saT4NCgk8bGk+JGl0ZW0tJmd0O2RldGFpbGxpbms8L2xpPg0KCTxsaT4kaXRlbS0mZ3Q7ZGV0YWlsdXJsPC9saT4NCgk8bGk+JGl0ZW0tJmd0O3ZpZGVvaWQ8L2xpPg0KCTxsaT4kaXRlbS0mZ3Q7ZGVzY3JpcHRpb248L2xpPg0KCTxsaT4kaXRlbS0mZ3Q7dGh1bWJuYWlsPC9saT4NCgk8bGk+JGl0ZW0tJmd0O3BhcmVudF9pZDwvbGk+DQoJPGxpPiRpdGVtLSZndDtwYXJlbnRfYWxpYXM8L2xpPg0KCTxsaT4kaXRlbS0mZ3Q7cGFyZW50X25hbWU8L2xpPg0KCTxsaT4kaXRlbS0mZ3Q7cGFyZW50bGluazwvbGk+DQoJPGxpPiR0aWVtLSZndDtwYXJlbnR1cmw8L2xpPg0KCTxsaT4kaXRlbS0mZ3Q7aXNkZWZhdWx0PC9saT4NCgk8bGk+JGl0ZW0tJmd0O2RhdGVfbW9kaWZpZWQ8L2xpPg0KCTxsaT4kaXRlbS0mZ3Q7ZGF0ZV9jcmVhdGVkPC9saT4NCgk8L3VsPjxici8+PGJyLz48L2Rpdj48L2Rpdj48ZGl2PjxoMyBzdHlsZT0iY3Vyc29yOiBwb2ludGVyOyIgb25jbGljaz0iY3RsbW1fZGlzcGxheXRvZ2dsZSh0aGlzKTsiPiZndDsgU21hcnR5IHZhcmlhYmxlcyBmb3IgdGhlIGRldGFpbCB0ZW1wbGF0ZTwvaDM+PGRpdiBjbGFzcz0idHBsdmFyc19oaWRlIj48dWw+DQoJPGxpPiRsZXZlbHRpdGxlPC9saT4NCgk8bGk+JGl0ZW0tJmd0O25hbWU8L2xpPg0KCTxsaT4kaXRlbS0mZ3Q7YWxpYXM8L2xpPg0KCTxsaT4kaXRlbS0mZ3Q7dmlkZW9pZDwvbGk+DQoJPGxpPiRpdGVtLSZndDtkZXNjcmlwdGlvbjwvbGk+DQoJPGxpPiRpdGVtLSZndDt0aHVtYm5haWw8L2xpPg0KCTxsaT4kaXRlbS0mZ3Q7cGFyZW50X2lkPC9saT4NCgk8bGk+JGl0ZW0tJmd0O3BhcmVudF9hbGlhczwvbGk+DQoJPGxpPiRpdGVtLSZndDtwYXJlbnRfbmFtZTwvbGk+DQoJPGxpPiRpdGVtLSZndDtwYXJlbnRsaW5rPC9saT4NCgk8bGk+JHRpZW0tJmd0O3BhcmVudHVybDwvbGk+DQoJPGxpPiRpdGVtLSZndDtpc2RlZmF1bHQ8L2xpPg0KCTxsaT4kaXRlbS0mZ3Q7ZGF0ZV9tb2RpZmllZDwvbGk+DQoJPGxpPiRpdGVtLSZndDtkYXRlX2NyZWF0ZWQ8L2xpPg0KCTxsaT4kbGFiZWxzLT4uLi48L2xpPg0KCTwvdWw+PGJyLz48cD5JbiB0aGUgZmluYWwgbGV2ZWwgZGV0YWlsIHRlbXBsYXRlLCB1c2UgdGhlIG9iamVjdCAkbGFiZWxzIHRvIHByaW50IGxhbmd1YWdlLXNlbnNpYmxlIGZpZWxkIGxhYmVscyAoJGxhYmVscy0+ZmllbGRuYW1lKS48L3A+PHA+WW91IG1heSByZWFjaCB0aGUgcGFyZW50IG9iamVjdHMgdXNpbmcgJGl0ZW0tPnBhcmVudF9vYmplY3QtPnBhcmVudF9vYmplY3QtPi4uLiBhbmQgc28gb24uPC9wPjxici8+PC9kaXY+PC9kaXY+DQo8ZGl2PjxoMyBzdHlsZT0iY3Vyc29yOiBwb2ludGVyOyIgb25jbGljaz0iY3RsbW1fZGlzcGxheXRvZ2dsZSh0aGlzKTsiPiZndDsgRmlsZSBPYmplY3Q8L2gzPjxkaXYgY2xhc3M9InRwbHZhcnNfaGlkZSI+DQo8dWw+DQo8bGk+JGZpbGUtJmd0O2ZpbGVwYXRoIChyZWxhdGl2ZSk8L2xpPg0KPGxpPiRmaWxlLSZndDtleHQ8L2xpPg0KPGxpPiRmaWxlLSZndDt1cmwgKGFic29sdXRlIHVybCk8L2xpPg0KPGxpPiRmaWxlLSZndDtzaXplIChzaXplIGluIGJ5dGVzKTwvbGk+DQo8bGk+JGZpbGUtJmd0O3NpemVfd2Zvcm1hdCAoZm9ybWF0ZWQgc2l6ZSk8L2xpPg0KPGxpPiRmaWxlLSZndDtpbWFnZXNpemUgKGZvciBpbWFnZXMgb25seSk8L2xpPg0KPGxpPiRmaWxlLSZndDt3aWR0aCAoZm9yIGltYWdlcyBvbmx5KTwvbGk+DQo8bGk+JGZpbGUtJmd0O2hlaWdodCAoZm9yIGltYWdlcyBvbmx5KTwvbGk+DQo8bGk+JGZpbGUtJmd0O2ltYWdlIChpbWFnZSB0YWc7IGZvciBpbWFnZXMgb25seSk8L2xpPg0KPGxpPiRmaWxlLSZndDt0aHVtYm5haWwgKHRodW1ibmFpbCB1cmwsIGlmIGFwcGxpY2FibGUpPC9saT4NCjxsaT4kZmlsZS0mZ3Q7ZmlsZW10aW1lIChsYXN0IG1vZGlmaWVkLCB1bml4IHRpbWUpPC9saT4NCjxsaT4kZmlsZS0mZ3Q7bW9kaWZpZWQgKGxhc3QgbW9kaWZpZWQsIGZvcm1hdGVkIHRpbWUpPC9saT4NCjwvdWw+PGJyLz48YnIvPjwvZGl2PjwvZGl2Pg0KPGRpdj48aDMgc3R5bGU9ImN1cnNvcjogcG9pbnRlcjsiIG9uY2xpY2s9ImN0bG1tX2Rpc3BsYXl0b2dnbGUodGhpcyk7Ij4mZ3Q7IEJyZWFkY3J1bWJzPC9oMz48ZGl2IGNsYXNzPSJ0cGx2YXJzX2hpZGUiPg0KCQkJCTxwPldoZW4geW91IGFyZSBpbiBhIG1vZHVsZSB0ZW1wbGF0ZSwgeW91IG1heSBjYWxsIHRoZSBicmVhZGNydW1icyB1c2luZyB0aGUge3ZpbWVvcGxheWVyX2JyZWFkY3J1bWJzfSB0YWcuIFlvdSBtYXkgdXNlIHRoZSBzYW1lIHBhcmFtZXRlcnMgYXMgdGhlIGNtcyBjb3JlIGJyZWFkY3J1bWJzIHRhZyAoaW5pdGlhbCwgZGVsaW1pdGVyLCBjbGFzc2lkLCBjdXJyZW50Y2xhc3NpZCksIGFzIHdlbGwgYXMgdGhlICJzdGFydGxldmVsIiBwYXJhbWV0ZXIuPGJyLz4NCgkJCQlPdXRzaWRlIG1vZHVsZSB0ZW1wbGF0ZXMsIGFueXdoZXJlIG9uIHRoZSBwYWdlLCB5b3UgbWF5IGNhbGwgdGhlIGJyZWFkY3J1bWJzIGFjdGlvbiB7Y21zX21vZHVsZSBtb2R1bGU9InZpbWVvcGxheWVyIiBhY3Rpb249ImJyZWFkY3J1bWJzIn0sIG9uY2UgYWdhaW4gdXNpbmcgdGhlIHNhbWUgcGFyYW1ldGVycy48L3A+PC9kaXY+PC9kaXY+JzsNCg0KLy8gRm9yIGZpbGUgZmllbGRzDQokbGFuZ1siUmVtb3ZlIl0gPSAiUmVtb3ZlIjsNCiRsYW5nWyJkZWxldGUiXSA9ICJEZWxldGUiOw0KJGxhbmdbImJyb3dzZWZpbGVzdGl0bGUiXSA9ICJVcGxvYWQgYSBuZXcgZmlsZSBvciBzZWxlY3QgYSBmaWxlIGJlbG93LiI7DQokbGFuZ1sic2hvd2luZ2RpciJdID0gIlNob3dpbmcgZGlyZWN0b3J5IjsNCiRsYW5nWyJicm93c2VmaWxlc3Jlc2l6ZSJdID0gIlRoZSBwaWN0dXJlIHdpbGwgYmUgYXV0b21hdGljYWxseSByZXNpemVkIGZvciB0aGUgbW9kdWxlLiI7DQokbGFuZ1siYnJvd3NlZmlsZWN1cnJlbnRwYXRoIl0gPSAiQ3VycmVudGx5IHNlZWluZyBmaWxlcyBpbiA6ICI7DQokbGFuZ1sicGFyZW50ZGlyIl0gPSAiUGFyZW50IERpcmVjdG9yeSI7DQokbGFuZ1siYWRkYWZpbGUiXSA9ICJBZGQgZmlsZShzKSI7DQokbGFuZ1sic3VibWl0dGluZ19maWxlIl0gPSAiUGxlYXNlIHdhaXQgd2hpbGUgdGhlIGZpbGUgaXMgYmVpbmcgdXBsb2FkZWQuLi4iOw0KJGxhbmdbImZpbGVuYW1lIl0gPSAiRmlsZW5hbWUiOw0KJGxhbmdbImltYWdlc2l6ZSJdID0gIkltYWdlIHNpemUiOw0KJGxhbmdbImZpbGVleHQiXSA9ICJFeHQiOw0KJGxhbmdbImZpbGVzaXplIl0gPSAiRmlsZSBzaXplIjsNCiRsYW5nWyJsYXN0bW9kIl0gPSAiTGFzdCBtb2RpZmllZCI7DQokbGFuZ1siZmlsZW93bmVyIl0gPSAiT3duZXIiOw0KJGxhbmdbImZpbGVwZXJtcyJdID0gIlBlcm1pc3Npb25zIjsNCiRsYW5nWyJ2aWV3YWxsaW1hZ2VzIl0gPSAiVmlldyBhbGwgaW1hZ2VzIjsNCiRsYW5nWyJwb3N0bWF4c2l6ZSJdID0gIk5vdGljZTogdGhlIHBvc3QgbWF4IHNpemUgaXMgIjsNCiRsYW5nWyJhZGRmaWxlaW5wdXQiXSA9ICJBZGQgYW5vdGhlciBmaWxlIjsNCiRsYW5nWyJ6aXBmaWxlbm90aWNlIl0gPSAiVGhlIGZpbGVzIHNob3VsZCBiZSBpbiB0aGUgcm9vdCBvZiB0aGUgYXJjaGl2ZS4iOw0KJGxhbmdbInVwbG9hZHppcGZpbGUiXSA9ICJVcGxvYWQgemlwIGFyY2hpdmUiOw0KDQovLyBzdHJpbmdzIGZvciBnZW5lcmFsIGZpZWxkcw0KJGxhbmdbImlkIl0gPSAiaWQiOw0KJGxhbmdbIm5hbWUiXSA9ICJOYW1lIjsNCiRsYW5nWyJhbGlhcyJdID0gIkFsaWFzIjsNCiRsYW5nWyJpc2RlZmF1bHQiXSA9ICJJcyBkZWZhdWx0PyI7DQokbGFuZ1siYWN0aXZlIl0gPSAiQWN0aXZlIjsNCiRsYW5nWyJwYXJlbnQiXSA9ICJQYXJlbnQiOw0KJGxhbmdbInN1Ym1pdCJdID0gIlN1Ym1pdCI7DQokbGFuZ1siY2FuY2VsIl0gPSAiQ2FuY2VsIjsNCiRsYW5nWyJuYmNoaWxkcmVuIl0gPSAiTmIgb2YgaXRlbXMiOw0KJGxhbmdbImRhdGVfbW9kaWZpZWQiXSA9ICJMYXN0IG1vZGlmaWNhdGlvbiI7DQokbGFuZ1siZGF0ZV9jcmVhdGVkIl0gPSAiQ3JlYXRpb24iOw0KCQ0KLy8gR0VORVJBTA0KJGxhbmdbImFjdGl2YXRlIl0gPSAiQWN0aXZhdGUiOw0KJGxhbmdbInVuYWN0aXZhdGUiXSA9ICJUdXJuIG9mZiI7DQokbGFuZ1sic2VhcmNodGhpc3RhYmxlIl0gPSAiU2VhcmNoIHRoaXMgdGFibGUgZm9yOiI7DQokbGFuZ1sicmVzZXRvcmRlciJdID0gIlJlc2V0IG9yZGVyIjsNCiRsYW5nWyJZZXMiXSA9ICJZZXMiOw0KJGxhbmdbIk5vIl0gPSAiTm8iOw0KJGxhbmdbIkFjdGlvbnMiXSA9ICJBY3Rpb25zIjsNCiRsYW5nWyJyZW9yZGVyIl0gPSAiUmVvcmRlciI7DQokbGFuZ1sibGlzdHRlbXBsYXRlIl0gPSAiTGlzdCB0ZW1wbGF0ZSBmb3IiOw0KJGxhbmdbInRlbXBsYXRlcyJdID0gIlRlbXBsYXRlcyI7DQokbGFuZ1sidGVtcGxhdGUiXSA9ICJUZW1wbGF0ZSI7DQokbGFuZ1siZGVmYXVsdHRlbXBsYXRlcyJdID0gIkRlZmF1bHQgdGVtcGxhdGVzIjsNCiRsYW5nWyJ0ZW1wbGF0ZXZhcnMiXSA9ICJUZW1wbGF0ZSB2YXJpYWJsZXMiOw0KJGxhbmdbImVkaXR0ZW1wbGF0ZSJdID0gIkVkaXQgdGVtcGxhdGUiOw0KJGxhbmdbImRlZnRlbXBsYXRlZm9yIl0gPSAiRGVmYXVsdCBsaXN0IHRlbXBsYXRlIGZvciBsZXZlbCAiOw0KJGxhbmdbImRlZmRldGFpbHRlbXBsYXRlIl0gPSAiRGVmYXVsdCBkZXRhaWwgdGVtcGxhdGUiOw0KJGxhbmdbImRlZnNlYXJjaHJlc3VsdHN0ZW1wbGF0ZSJdID0gIkRlZmF1bHQgdGVtcGxhdGUgZm9yIHNlYXJjaCByZXN1bHRzIjsNCiRsYW5nWyJ1c2VsZXZlbGxpc3R0cGwiXSA9ICJVc2UgdGhlIGxpc3QgdGVtcGxhdGUgb2YgdGhlIGFwcHJvcHJpYXRlIGxldmVsIjsNCiRsYW5nWyJhZGR0ZW1wbGF0ZSJdID0gIkFkZCB0ZW1wbGF0ZSI7DQokbGFuZ1siZmlsdGVyYnkiXSA9ICJGaWx0ZXIgYnkiOw0KJGxhbmdbInNob3dhbGwiXSA9ICJTaG93IGFsbCAobm8gZmlsdGVyKSI7DQokbGFuZ1siZmllbGRvcHRpb25zIl0gPSAiRmllbGQgb3B0aW9ucyI7DQokbGFuZ1siYWRkb3B0aW9uIl0gPSAiQWRkIGFuIG9wdGlvbiI7DQokbGFuZ1sibW9kaWZ5YW5vcHRpb24iXSA9ICJNb2RpZnkgYW4gb3B0aW9uIjsNCiRsYW5nWyJtZXNzYWdlX2RlbGV0ZWQiXSA9ICJFbGVtZW50IGRlbGV0ZWQiOw0KJGxhbmdbIm1lc3NhZ2VfbW9kaWZpZWQiXSA9ICJNb2RpZmljYXRpb24gc2F2ZWQiOw0KJGxhbmdbIndhcm5pbmdfdGFiIl0gPSAiTm90aWNlOiBTYXZlIGNoYW5nZXMgaW4gb3RoZXIgdGFicyBiZWZvcmUgd29ya2luZyBpbiB0aGlzIG9uZS4uLiI7DQokbGFuZ1siZXJyb3JfbWlzc2dpbnZhbHVlIl0gPSAiT25lIG9yIG1vcmUgbmVjZXNzYXJ5IHZhbHVlcyBoYXZlIG5vdCBiZWVuIGVudGVyZWQuIjsNCiRsYW5nWyJlcnJvcl9hbHJlYWR5ZXhpc3RzIl0gPSAiVGhlcmUgaXMgYWxyZWFkeSBhbiBlbGVtZW50IGJlYXJpbmcgdGhhdCBuYW1lLiI7DQokbGFuZ1siZXJyb3JfZGF0ZSJdID0gIlRoZSBkYXRlIHlvdSBoYXZlIGVudGVyZWQgaXMgaW52YWxpZC4iOw0KJGxhbmdbImVycm9yX25vcGFyZW50Il0gPSAiTm8gcGFyZW50IGlzIGRlZmluZWQhIjsNCiRsYW5nWyJlcnJvcl9ub3Rmb3VuZCJdID0gIlRoZSBpdGVtIGNvdWxkIG5vdCBiZSBmb3VuZC4iOw0KJGxhbmdbImVycm9yX25vaXRlbWZvdW5kIl0gPSAiTm8gaXRlbSBmb3VuZC4iOw0KJGxhbmdbImVycm9yX2RlbmllZCJdID0gIlBlcm1pc3Npb24gZGVuaWVkIjsNCiRsYW5nWyJlcnJvcl93cm9uZ3F1ZXJ5Il0gPSAiSW52YWxpZCBxdWVyeS4iOw0KJGxhbmdbImVycm9yX2ZlYWRkZGVuaWVkIl0gPSAiWW91IGRvIG5vdCBoYXZlIHN1ZmZpY2llbnQgYWNjZXNzIHRvIGNvbnRpbnVlLiI7DQokbGFuZ1siZXJyb3Jfd3JvbmdmaWxldHlwZSJdID0gIlRoaXMgdHlwZSBvZiBmaWxlIGlzIG5vdCBhbGxvd2VkIGhlcmUuIjsNCiRsYW5nWyJlcnJvcl9jYXB0Y2hhIl0gPSAiVGhlIHRleHQgZ2l2ZW4gZG9lcyBub3QgbWF0Y2ggdGhlIGNhcHRjaGEgaW1hZ2UuIjsNCiRsYW5nWyJlcnJvcl9maWxldG9vYmlnIl0gPSAiVGhlIGZpbGUgaXMgdG8gYmlnIHRvIGJlIHVwbG9hZGVkIGhlcmUuIjsNCiRsYW5nWyJnaXZlbmVycm9yIl0gPSAiRXJyb3I6ICI7DQokbGFuZ1siZmluYWx0ZW1wbGF0ZSJdID0gIkRpc3BsYXkgdGVtcGxhdGUgZm9yIGZpbmFsIGxldmVsICh2aWRlbykiOw0KJGxhbmdbInByb21wdF9kZWxldGVvcHRpb24iXSA9ICJEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgb3B0aW9uPyI7DQokbGFuZ1sicHJvbXB0X2dlbmVyYWxkZWxldGUiXSA9ICJEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXM/IjsNCiRsYW5nWyJwcm9tcHRfY2FwdGNoYSJdID0gIkVudGVyIHRoZSB0ZXh0IGZyb20gdGhlIGltYWdlLiI7DQokbGFuZ1sicXVlcmllcyJdID0gIlF1ZXJpZXMiOw0KJGxhbmdbInF1ZXJ5Il0gPSAiUXVlcnkiOw0KJGxhbmdbInJlc3VsdHMiXSA9ICJSZXN1bHRzIjsNCiRsYW5nWyJjcmVhdGVxdWVyeSJdID0gIkNyZWF0ZSBhIG5ldyBxdWVyeSI7DQokbGFuZ1sicHJvbXB0X3F1ZXJ5Il0gPSAiQ3JlYXRlIGEgcXVlcnkgZm9yIHdoaWNoIGxldmVsPyI7DQokbGFuZ1sib3JkZXJieWZpZWxkIl0gPSAiT3JkZXIgYnkiOw0KJGxhbmdbImRhdGVfbW9kaWZpZWQiXSA9ICJEYXRlIG1vZGlmaWVkIjsNCiRsYW5nWyJmcm9udGVuZF9zdWJtaXQiXSA9ICJTdWJtaXQiOw0KDQovLyBCUkVBRENSVU1CUyA6DQokbGFuZ1sieW91YXJlaGVyZSJdID0gIllvdSBhcmUgaGVyZTogIjsNCiRsYW5nWyJicmVhZGNydW1ic19kZWxpbWl0ZXIiXSA9ICIgJmd0OyAiOw0KDQovLyBTRUFSQ0ggOg0KJGxhbmdbInNlYXJjaHRpdGxlIl0gPSAiU2VhcmNoIjsNCiRsYW5nWyJzZWFyY2hhZ2FpbiJdID0gIkRvIGFub3RoZXIgc2VhcmNoIjsNCiRsYW5nWyJzZWFyY2hidG4iXSA9ICJTZWFyY2ghIjsNCiRsYW5nWyJjb250YWlucyJdID0gIkNvbnRhaW5zIjsNCiRsYW5nWyJpc2V4YWN0bHkiXSA9ICJJcyBleGFjdGx5IjsNCiRsYW5nWyJpc25vdCJdID0gIklzIG5vdCI7DQokbGFuZ1siaXNoaWdoZXJ0aGFuIl0gPSAiSXMgaGlnaGVyIHRoYW4iOw0KJGxhbmdbImlzbG93ZXJ0aGFuIl0gPSAiSXMgbG93ZXIgdGhhbiI7DQokbGFuZ1siaXNhZnRlciJdID0gIklzIGFmdGVyIjsNCiRsYW5nWyJpc2JlZm9yZSJdID0gIklzIGJlZm9yZSI7DQokbGFuZ1siaXNiZXR3ZWVuIl0gPSAiSXMgYmV0d2VlbiI7DQokbGFuZ1sidGhpc2FuZHRoaXMiXSA9ICJhbmQiOw0KJGxhbmdbInF1ZXJ5dXNlIl0gPSAiTm90IHVzZWQiOw0KJGxhbmdbInF1ZXJ5bmFtZSJdID0gIlF1ZXJ5IG5hbWUiOw0KDQovLyBJTVBPUlQgLyBFWFBPUlQNCiRsYW5nWyJleHBvcnRfdGl0bGUiXSA9ICJFeHBvcnQgaXRlbXMgdG8geG1sIjsNCiRsYW5nWyJleHBvcnR3aGljaGxldmVscyJdID0gIldoaWNoIHRhYmxlcyBzaG91bGQgYmUgZXhwb3J0ZWQ/IjsNCiRsYW5nWyJleHBvcnRfdGVtcGxhdGVzIl0gPSAiRXhwb3J0IHRlbXBsYXRlcyB0b28/IjsNCiRsYW5nWyJpbXBvcnRfdGl0bGUiXSA9ICJJbXBvcnQgZnJvbSB4bWwgZmlsZSI7DQokbGFuZ1siaW1wb3J0X2ZpbGVwcm9tcHQiXSA9ICJTZWxlY3QgeG1sIGZpbGUgZnJvbSB3aGljaCB0byBpbXBvcnQuIjsNCiRsYW5nWyJpbXBvcnRfZG9uZSJdID0gIkltcG9ydCBkb25lLiAlcyByZWNvcmRzIHdoZXJlIGltcG9ydGVkLiI7DQokbGFuZ1siaW1wb3J0X2VudHJpZXMiXSA9ICJUaGUgZmlsZSBjb250YWlucyAlcyByZWNvcmRzLiI7DQokbGFuZ1siaW1wb3J0X2RlbGV0ZSJdID0gIkRlbGV0ZSB0YWJsZSBjb250ZW50IGJlZm9yZSBpbXBvcnRpbmc/IjsNCiRsYW5nWyJpbXBvcnR3aGljaGxldmVscyJdID0gIldoaWNoIHRhYmxlcyBzaG91bGQgYmUgaW1wb3J0ZWQ/IjsNCiRsYW5nWyJpbXBvcnRfdGVtcGxhdGVzIl0gPSAiSW1wb3J0IHRlbXBsYXRlcyB0b28/IjsNCiRsYW5nWyJjb3VsZG5vdGltcG9ydCJdID0gIlRoZXJlIHdhcyBhbiBlcnJvciBpbXBvcnRpbmcgcmVjb3JkcyBmb3I6ICI7DQokbGFuZ1siZXJyb3JfaW52YWxpZHhtbCJdID0gIlRoZSBmaWxlIHlvdSBwcm92aWRlZCBpcyBub3QgYSB2YWxpZCB4bWwgZXhwb3J0IGZvciB0aGlzIG1vZHVsZS4iOw0KDQovLyBNT0RVTEUgSU5URVJBQ1RJT04NCiRsYW5nWyJwb3N0aW5zdGFsbCJdID0gIk1vZHVsZSBzdWNjZXNzZnVsbHkgYWRkZWQuIjsNCiRsYW5nWyJwb3N0dW5pbnN0YWxsIl0gPSAiTW9kdWxlIHN1Y2Nlc3NmdWxseSByZW1vdmVkLiI7DQokbGFuZ1sicmVhbGx5X3VuaW5zdGFsbCJdID0gIkFsbCBvZiB0aGlzIG1vZHVsZSdzIGNvbnRlbnQgd2lsbCBiZSBsb3N0LiBDb250aW51ZT8iOw0KJGxhbmdbInVuaW5zdGFsbGVkIl0gPSAiTW9kdWxlIFVuaW5zdGFsbGVkLiI7DQokbGFuZ1siaW5zdGFsbGVkIl0gPSAiTW9kdWxlIHZlcnNpb24gJXMgaW5zdGFsbGVkLiI7DQokbGFuZ1siaGVscCJdID0gIjxoMz5XaGF0IERvZXMgVGhpcyBEbz88L2gzPg0KCQkJCTxwPlRoaXMgbW9kdWxlIG1hbmFnZXMgYW5kIGRpc3BsYXlzIGEgY2F0YWxvZ3VlIG9mIFZpbWVvIFZpZGVvcy48L3A+DQoJCQk8YnIvPjxoMz5Ib3cgRG8gSSBVc2UgSXQ/PC9oMz4NCgkJCQk8YnIvPjxoND5QZXJtaXNzaW9uczwvaDQ+DQoJCQkJCTxwPk1ha2Ugc3VyZSB5b3VyIHVzZXJzIGhhdmUgdGhlIGFwcHJvcHJpYXRlIHBlcm1pc3Npb25zLiBJZiB5b3UgYXJlIG5vdCB1c2luZyB0aGUgYWNjZXNzIHJlc3RyaWN0aW9uIG9wdGlvbiAoc2VlIHNldHRpbmdzKSwgdGhlIFwidmltZW9wbGF5ZXI6IE5vcm1hbCB1c2VyXCIgcGVybWlzc2lvbiB3aWxsIGJlIGVub3VnaCB0byB1c2UgdGhlIG1vZHVsZS4gSW4gdGhlIHNldHRpbmdzIHRhYiwgeW91IGNhbiBjaG9vc2Ugd2hpY2ggdGFicyB3aWxsIGJlIGRpc3BsYXllZCBmb3IgdGhlIG5vcm1hbCB1c2VyLiBPbmx5IHRoZSBhZG1pbmlzdHJhdG9yIGFuZCB1c2VycyB3aXRoIHRoZSBcInZpbWVvcGxheWVyOiBBZHZhbmNlZFwiIHBlcm1pc3Npb24gd2lsbCBoYXZlIGFjY2VzcyB0byBzZXR0aW5ncyB0YWIuPGJyLz4NCgkJCQkJSWYgeW91IHdpc2ggdG8gZGVmaW5lIGxldmVsLXNwZWNpZmljIHBlcm1pc3Npb25zLCBhY3RpdmF0ZSB0aGUgYWNjZXNzIHJlc3RyaWN0aW9uIG9wdGlvbiBpbiB0aGUgc2V0dGluZ3MgdGFiIGFuZCBnaXZlIHRoZSBcInZpbWVvcGxheWVyOiBNYW5hZ2UgbmFtZV9vZl9sZXZlbFwiIHBlcm1pc3Npb24gdG8gdGhlIGFwcHJvcHJpYXRlIHVzZXJzLjwvcD4NCgkJCQk8YnIvPjxoND5CYXNpY3M8L2g0Pg0KCQkJCQlZb3Ugd2lsbCBuZWVkIHRoZSBWaWRlbyBJRCBmb3IgdGhlIG1vdmllIGZyb20gVmltZW8sIHRvIHRvIHRoaXMgZ28gdG86IGh0dHA6Ly93d3cudmltZW8uY29tLCBmaW5kIGEgdmlkZW8geW91IGFyZSBpbnRlcmVzdGVkIGluIGFuZCBjb3B5IHRoZSBudW1iZXIgYXQgdGhlIGVuZCBvZiB0aGUgVVJMIHN1Y2ggYXMgaHR0cDovL3ZpbWVvLmNvbS88YiBzdHlsZT1cImNvbG9yOiNGRjAwMDBcIj4xNjQ3NDkyMTwvYj48YnIgLz4NCgkJCQkJVmltZW8gTW92aWVzIGhhdmUgYSB0aHVtYm5haWwgY2hvaWNlIG9mIFwiU21hbGwsIE1lZGl1bSBvciBMYXJnZVwiLCBmb3IgdGhlIG1vdmllIGxpc3RpbmcsIHlvdSB3aWxsIGhhdmUgdG8gZXhwZXJpbWVudCB0byB3aGF0IHN1aXRzIHlvdS48YnIgLz48YnIgLz4NCgkJCQkJPHA+VG8gY2FsbCB0aGUgbW9kdWxlLCBzaW1wbHkgdXNlIHRoZSBmb2xsb3dpbmcgdGFnOjxici8+DQoJCQkJCXtjbXNfbW9kdWxlIG1vZHVsZT1cInZpbWVvcGxheWVyXCJ9PC9wPg0KCQkJCQk8cD5JbiB0aGlzIGNhc2UgdGhlIGxpc3Qgb2YgdGhlIGxhc3QgbGV2ZWwgZWxlbWVudHMgKHZpZGVvKSB3aWxsIGJlIGRpc3BsYXllZC4gVG8gc2VsZWN0IGEgbGV2ZWwsIHVzZSB0aGUgXCJ3aGF0XCIgcGFyYW1ldGVyOjxici8+DQoJCQkJCXtjbXNfbW9kdWxlIG1vZHVsZT1cInZpbWVvcGxheWVyXCIgd2hhdD1cInZpZGVvXCJ9PGJyLz4NCgkJCQkJPGk+VGhlIHBvc3NpYmxlIHZhbHVlcyBmb3IgdGhlIFwid2hhdFwiIHBhcmFtZXRlciBhcmUgOiBjYXRlZ29yeSwgdmlkZW88L2k+PC9wPg0KCQkJCQk8cD5Zb3UgbWF5IGFsc28gYXNrIGZvciBlbGVtZW50cyB3aG8gYmVsb25nIHRvIGEgc3BlY2lmaWMgcGFyZW50Ojxici8+DQoJCQkJCXtjbXNfbW9kdWxlIG1vZHVsZT1cInZpbWVvcGxheWVyXCIgcGFyZW50PVwiYWxpYXNfb2ZfcGFyZW50XCJ9PC9wPg0KCQkJCQk8cD5Zb3UgbWF5IGZpbmFsbHkgYXNrIGZvciBhIHNwZWNpZmljIGVsZW1lbnQ6PGJyPg0KCQkJCQl7Y21zX21vZHVsZSBtb2R1bGU9XCJ2aW1lb3BsYXllclwiIGFsaWFzPVwiYWxpYXNfb2ZfaXRlbVwifTwvcD4NCgkJCQk8YnIvPjxoND5TZXBhcmF0aW5nIGludG8gcGFnZXM8L2g0Pg0KCQkJCQk8cD5Zb3UgbWF5IGxpbWl0IHRoZSBudW1iZXIgb2YgaXRlbXMgdG8gYmUgc2hvd24gb24gb25lIHBhZ2U6PGJyLz4NCgkJCQkJe2Ntc19tb2R1bGUgbW9kdWxlPVwidmltZW9wbGF5ZXJcIiBuYnBlcnBhZ2U9XCI1XCJ9PGJyLz4NCgkJCQkJVGhlIHBhZ2UgbWVudSBzaG91bGQgdGhlbiBiZSBzaG93biB3aXRoIHRoZSB7Ii4nJCcuInBhZ2VtZW51fSB0YWcuPC9wPg0KCQkJCTxici8+PGg0PlVzaW5nIHF1ZXJpZXM8L2g0Pg0KCQkJCQk8cD5UbyBnZXQgYSBsaXN0IG9mIGl0ZW0gdGhhdCBtZWV0IHNwZWNpZmljIGNyaXRlcmlhLCB5b3UgY2FuIGNyZWF0ZSBhIHF1ZXJ5IHVzaW5nIHRoZSBxdWVyaWVzIHRhYiBvZiB0aGUgYWRtaW4gcGFuZWwsIGFuZCBjYWxsIHRoZW0gdXNpbmcgdGhlIFwicXVlcnlcIiBwYXJhbWV0ZXI6PGJyLz4NCgkJCQkJe2Ntc19tb2R1bGUgbW9kdWxlPVwidmltZW9wbGF5ZXJcIiBxdWVyeT1cIjVcIn08L3A+DQoJCQkJCTxwPjxpPklmIHRoZSBvcHRpb24gdG8gYWxsb3cgbWFudWVsIHNxbCBxdWVyaWVzIGlzIGVuYWJsZWQ8L2k+IChzZWUgXCJTZXR0aW5nc1wiIHRhYiksIHlvdSBtYXkgYWxzbyBwcm92aWRlIHRoZSBzcWwgcXVlcnkgZGlyZWN0bHkgd2l0aCB0aGUgcXVlcnkgcGFyYW1ldGVyLiBGb3IgZXhhbXBsZTo8YnIvPg0KCQkJCQl7Y21zX21vZHVsZSBtb2R1bGU9XCJ2aW1lb3BsYXllclwiIHdoYXQ9XCJ2aWRlb1wiIHF1ZXJ5PVwiQS5kYXRlX21vZGlmaWVkID4gJzIwMDktMDMtMTUnIEFORCBBLmFjdGl2ZSA9IDFcIn08YnIvPg0KCQkJCQlUaGUgcXVlcnkgcGFyYW1ldGVyIGNhbiBvbmx5IGhvbGQgdGhlIFdIRVJFIGNsYXVzZSBvZiB0aGUgcXVlcnksIGFuZCBzaG91bGQgbm90IGluY2x1ZGUgdGhlIFdIRVJFIGNvbW1hbmQgaXRzZWxmLiBUbyBhdm9pZCBwcm9ibGVtcywgdGhlIHByZWZpeCBcIkEuXCIgc2hvdWxkIGJlIHVzZWQgYmVmb3JlIGZpZWxkIG5hbWVzICh3aGVyZSBhcHBsaWNhYmxlLCB0aGUgXCJCLlwiIHByZWZpeCBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IGNyaXRlcmlhIG9uIHRoZSBwYXJlbnQncyBmaWVsZHMpLjxici8+DQoJCQkJCUFsdGhvdWdoIHRoZSBhYnN0cmFjdGlvbiBsYXllciBpcyBub3QgZWFzaWx5IHByb25lIHRvIGluamVjdGlvbnMsIHJlbWVtYmVyIHRoYXQgYWN0aXZhdGluZyB0aGlzIG9wdGlvbiBtZWFucyBnaXZpbmcgYSBzcWwgb3BlbmluZyB3aXRoaW4gdGhlIHRlbXBsYXRlcyBhbmQgYmUgY2FyZWZ1bC48L3A+DQoJCQkJPGJyLz48aDQ+VGhlIGxpbmsgYWN0aW9uPC9oND4NCgkJCQkJPHA+WW91IG1heSB1c2UgdGhlIGFjdGlvbiA8Yj5cImxpbmtcIjwvYj4gdG8gY3JlYXRlIGEgbGluayB0byB0aGUgZGVmYXVsdCBhY3Rpb24sIHVzaW5nIHRoZSBzYW1lIHBhcmFtZXRlcnM6PGJyLz4NCgkJCQkJe2Ntc19tb2R1bGUgbW9kdWxlPVwidmltZW9wbGF5ZXJcIiBhY3Rpb249XCJsaW5rXCIgd2hhdD1cInZpZGVvXCIgcmFuZG9tPVwiMVwifTxici8+DQoJCQkJCXdvdWxkIGNyZWF0ZSBhIGxpbmsgdG8gYSByYW5kb20gZWxlbWVudCBvZiB0aGlzIGxldmVsLjwvcD4NCgkJCQk8YnIvPjxoND5UaGUgc2l0ZW1hcCBhY3Rpb248L2g0Pg0KCQkJCQk8cD5JZiB5b3VyIG1vZHVsZSBpcyBub3Qgc2hhcmluZyBjaGlsZHJlbiwgeW91IG1heSB1c2UgdGhlIGFjdGlvbiA8Yj5cInNpdGVtYXBcIjwvYj4gdG8gY3JlYXRlIGEgbW9kdWxlIHNpdGVtYXA6PGJyLz4NCgkJCQkJe2Ntc19tb2R1bGUgbW9kdWxlPVwidmltZW9wbGF5ZXJcIiBhY3Rpb249XCJzaXRlbWFwXCJ9PGJyLz4NCgkJCQkJWW91IGNhbiBzZWxlY3QgdGhlIGxldmVscyB1c2luZyB0aGUgXCJ3aGF0XCIgcGFyYW1ldGVyLCBhbmQgbWF5IHNlbGVjdCBtb3JlIHRoYW4gb25lIHVzaW5nIFwifFwiIDogd2hhdD1cImxldmVsMXxsZXZlbDJcIi48YnIvPg0KCQkJCQlPdGhlciBhdmFpbGFibGUgcGFyYW1ldGVycyBmb3IgdGhpcyBhY3Rpb24gYXJlIFwiZGV0YWlscGFnZVwiIGFuZCBcImlubGluZVwiLjxici8+DQoJCQkJCVRvIGNyZWF0ZSBhIGdvb2dsZSBzaXRlbWFwLCBzZWUgdGhlIDxhIGhyZWY9XCIuLi9tb2R1bGVzL3ZpbWVvcGxheWVyL2RvYy9mYXEuaHRtbCNxMTZcIiB0YXJnZXQ9XCJfYmxhbmtcIj5GQVE8L2E+LjwvcD4NCgkJCQk8YnIvPjxoND5UaGUgc2VhcmNoIGFjdGlvbjwvaDQ+DQoJCQkJCTxwPllvdSBtYXkgdXNlIHRoZSBhY3Rpb24gPGI+XCJzZWFyY2hcIjwvYj4gdG8gZGlzcGxheSBhIHNlYXJjaCBmb3JtOjxici8+DQoJCQkJCXtjbXNfbW9kdWxlIG1vZHVsZT1cInZpbWVvcGxheWVyXCIgYWN0aW9uPVwic2VhcmNoXCJ9PGJyLz4NCgkJCQkJVXNlIHRoZSBcInNlYXJjaG1vZGVcIiBwYXJhbWV0ZXIgdG8gc3dpdGNoIGJldHdlZW4gYWR2YW5jZWQgKGRlZmF1bHQpIGFuZCBzaW1wbGUgbW9kZS4gWW91IG1heSBzcGVjaWZ5IHRoZSBsZXZlbCBpbiB3aGljaCB0byBzZWFyY2ggdXNpbmcgdGhlIFwid2hhdFwiIHBhcmFtZXRlci4gWW91IGNhbm5vdCB1c2UgdGhlIGFkdmFuY2VkIHNlYXJjaCBtb2RlIGluIGFsbCBsZXZlbHMgYXQgdGhlIHNhbWUgdGltZS48YnIvPg0KCQkJCQlUaGUgZm9sbG93aW5nIHBhcmFtZXRlcnMgY2FuIGJlIHVzZWQgd2l0aCB0aGUgc2VhcmNoIGFjdGlvbjogd2hhdCwgbGltaXQsIG5icGVycGFnZSwgb3JkZXJieSwgZGV0YWlscGFnZSwgbGlzdHRlbXBsYXRlLCBpbmxpbmUsIHNlYXJjaG1vZGUuPGJyLz4NCgkJCQkJU2VlIHZpbWVvcGxheWVyL3RlbXBsYXRlcy9zZWFyY2gudHBsIHRvIG1vZGlmeSB0aGUgc2VhcmNoIGZvcm0uPC9wPjxici8+DQoJCQkJPHA+Rm9yIG1vcmUgaGVscCwgeW91IG1heSB0YWtlIGEgbG9vayBhdCB0aGUgPGEgaHJlZj1cIi4uL21vZHVsZXMvdmltZW9wbGF5ZXIvZG9jL2ZhcS5odG1sXCIgdGFyZ2V0PVwiX2JsYW5rXCI+RkFRPC9hPi48L3A+DQoJCQk8YnIvPjxoMz5Db3B5cmlnaHQgYW5kIExpY2Vuc2U8L2gzPg0KCQkJCTxwPlRoaXMgbW9kdWxlIGhhcyBiZWVuIGNyZWF0ZWQgd2l0aCBDVExNb2R1bGVNYWtlciwgYW5kIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBHTlUgUHVibGljIExpY2Vuc2UuPC9wPjxici8+PGJyLz4iOw0KDQovL0VWRU5UUw0KJGxhbmdbImV2ZW50ZGVzY19tb2RpZmllZCJdID0gIkNhbGxlZCBhZnRlciBhbiBlbGVtZW50IGhhcyBiZWVuIG1vZGlmaWVkLiBQYXJhbXM6IFwid2hhdFwiPT5sZXZlbCBvZiB0aGUgZWxlbWVudCwgXCJpdGVtaWRcIj0+aWQgb2YgdGhlIGVsZW1lbnQsIFwiYWxpYXNcIj0+YWxpYXMgb2YgdGhlIGVsZW1lbnQuIjsNCiRsYW5nWyJldmVudGRlc2NfZGVsZXRlZCJdID0gIkNhbGxlZCBhZnRlciBhbiBlbGVtZW50IGhhcyBiZWVuIGRlbGV0ZWQuIFBhcmFtczogXCJ3aGF0XCI9PmxldmVsIG9mIHRoZSBlbGVtZW50LiI7DQokbGFuZ1siZXZlbnRkZXNjX2FkZGVkIl0gPSAiQ2FsbGVkIGFmdGVyIGFuIGVsZW1lbnQgaGFzIGJlZW4gYWRkZWQuIFBhcmFtczogXCJ3aGF0XCI9PmxldmVsIG9mIHRoZSBlbGVtZW50LCBcIml0ZW1pZFwiPT5pZCBvZiB0aGUgZWxlbWVudCwgXCJhbGlhc1wiPT5hbGlhcyBvZiB0aGUgZWxlbWVudC4iOw0KDQovL1BSRUZFUkVOQ0VTDQokbGFuZ1sicHJlZmVyZW5jZXMiXSA9ICJTZXR0aW5ncyI7DQokbGFuZ1sicHJlZl90YWJkaXNwbGF5Il0gPSAiQWRtaW4gdGFicyBzaG93biB0byB0aGUgbm9ybWFsIHVzZXIiOw0KJGxhbmdbImhlbHBfdGFiZGlzcGxheSJdID0gIihOb3JtYWwgdXNlcnMgYXJlIHRob3NlIHdobyBoYXZlIGJlZW4gZ2l2ZW4gdGhlIFwidmltZW9wbGF5ZXI6IG5vcm1hbCB1c2VyXCIgcGVybWlzc2lvbi4gVGhlIGxldmVsLXNwZWNpZmljIG1hbmFnZSBwZXJtaXNzaW9ucyBvdmVycmlkZSB0aGUgdmlzaWJsZSB0YWJzIHNlbGVjdGVkIGhlcmUuKSI7DQokbGFuZ1sicHJlZl9zZWFyY2htb2R1bGVfaW5kZXgiXSA9ICJJbmRleCB0aGUgZm9sbG93aW5nIGxldmVscyBmb3IgdGhlIHNlYXJjaCBtb2R1bGUiOw0KJGxhbmdbImhlbHBfc2VhcmNobW9kdWxlX2luZGV4Il0gPSAiKFRoaXMgaGFzIG5vIGVmZmVjdCBvbiB0aGlzIG1vZHVsZSBvd24gc2VhcmNoIGFjdGlvbi4pIjsNCiRsYW5nWyJwcmVmX25ld2l0ZW1zZmlyc3QiXSA9ICJOZXcgaXRlbXMgc2hvdWxkIGFwcGVhciBvbiB0b3AgZm9yIHRoZSBmb2xsb3dpbmcgbGV2ZWxzIjsNCiRsYW5nWyJoZWxwX25ld2l0ZW1zZmlyc3QiXSA9ICIoT2J2aW91c2x5LCBpZiB0aGUgbGV2ZWwgaXMgbm90IGNoZWNrZWQgaGVyZSwgbmV3IGl0ZW1zIHdpbGwgYXBwZWFyIGF0IHRoZSBib3R0b20gb2YgdGhlIGxpc3QpIjsNCiRsYW5nWyJwcmVmX3Jlc3RyaWN0X3Blcm1pc3Npb25zIl0gPSAiU2hvdWxkIHdlIDxiPnJlc3RyaWN0PC9iPiB0aGUgbWFuYWdlbWVudCBvZiBpdGVtcyB0byB0aGUgdXNlcnMgd2hvIGhhdmUgc3BlY2lmaWMgbWFuYWdlbWVudCBwZXJtaXNzaW9ucyBmb3IgdGhlIGxldmVsPyAoaWYgeW91IGRvIG5vdCB3aXNoIHRvIHNwZWNpZnkgZGlmZmVyZW50IHBlcm1pc3Npb25zIGZvciBkaWZmZXJlbnQgbGV2ZWxzLCB5b3UgY2FuIHVuY2hlY2sgdGhpcyBhbmQgc2ltcGx5IHVzZSB0aGUgXCJ2aW1lb3BsYXllcjogbm9ybWFsIHVzZXJcIiBwZXJtaXNzaW9uLikiOw0KJGxhbmdbInByZWZfZGlzcGxheV9maWx0ZXIiXSA9ICJEaXNwbGF5IDxiPmZpbHRlcjwvYj4gb24gdGhlIG1vZHVsZSBhZG1pbiBwYW5lbD8iOw0KJGxhbmdbInByZWZfZGlzcGxheV9pbnN0YW50c2VhcmNoIl0gPSAiRGlzcGxheSA8Yj5pbnN0YW50IHNlYXJjaDwvYj4gb24gdGhlIG1vZHVsZSBhZG1pbiBwYW5lbD8iOw0KJGxhbmdbInByZWZfZGlzcGxheV9pbnN0YW50c29ydCJdID0gIkRpc3BsYXkgPGI+aW5zdGFudCBzb3J0PC9iPiBieSBjb2x1bW4gbGlua3M/IjsNCiRsYW5nWyJwcmVmX2VkaXRhYmxlX2FsaWFzZXMiXSA9ICJTaG91bGQgdGhlIDxiPmFsaWFzPC9iPiBvZiBpdGVtcyBiZSBtYW51YWxseSBlZGl0YWJsZT8iOw0KJGxhbmdbInByZWZfZm9yY2VfbGlzdCJdID0gIlNob3VsZCB0aGUgPGI+Zm9yY2VsaXN0PC9iPiBwYXJhbWV0ZXIgYmUgZW5hYmxlZCBieSBkZWZhdWx0PyAobGlzdCB2aWV3IHdpbGwgYmUgc2hvd24gZXZlbiB3aGVuIHRoZXJlIGlzIG9ubHkgb25lIGl0ZW0pIjsNCiRsYW5nWyJwcmVmX2RlbGV0ZV9maWxlcyJdID0gIldoZW4gYW4gaXRlbSBpcyA8Yj5kZWxldGVkPC9iPiwgc2hvdWxkIHRoZSBhc3NvY2lhdGVkIGZpbGVzIGJlIGFsc28gZGVsZXRlZD8gKHByb3ZpZGVkIHRoZSBpdGVtIGhhcyBhbnkgZmlsZSBmaWVsZHMuLi4pIjsNCiRsYW5nWyJwcmVmX2FsbG93X3NxbCJdID0gIkFsbG93IG1hbnVhbCBTUUwgcXVlcmllcz8gKHdpdGggdGhlIFwicXVlcnlcIiBwYXJhbWV0ZXIpIjsNCiRsYW5nWyJwcmVmX3VzZV9oaWVyYXJjaHkiXSA9ICJEaXNwbGF5IGZ1bGwgaGllcmFyY2h5IGluIGZpbHRlciBhbmQgcGFyZW50IGRyb3Bkb3duPyAoYWRtaW4gcGFuZWwpIjsNCiRsYW5nWyJwcmVmX29yZGVyYnluYW1lIl0gPSAiT3JkZXIgcGFyZW50IGRyb3Bkb3ducyBieSBuYW1lPyI7DQokbGFuZ1sicHJlZl9zaG93dGh1bWJuYWlscyJdID0gIkRpc3BsYXkgYWxsIHRodW1ibmFpbHMgaW5zdGVhZCBvZiBhIHRhYmxlIHdoZW4gc2VsZWN0ZWQgaW1hZ2UgZmlsZXM/IjsNCiRsYW5nWyJwcmVmX21heHNob3ducGFnZXMiXSA9ICJNYXggbnVtYmVyIG9mIHBhZ2VzIGRpc3BsYXllZCBpbiB0aGUgcGFnZSBtZW51OiAiOw0KJGxhbmdbInByZWZfYXV0b2luY3JlbWVudF9hbGlhcyJdID0gIkF1dG8taW5jcmVtZW50IGFsaWFzZXMgaW4gY2FzZSBvZiBpZGVudGljYWwgbmFtZXM/IjsNCiRsYW5nWyJwcmVmX2RlY29kZWVudGl0aWVzIl0gPSAiRGVjb2RlIGh0bWwgZW50aXRpZXMgb24gZnJvbnRlbmQgZm9ybSBzdWJtaXNzaW9uLiI7DQokbGFuZ1sicHJlZl9mcm9udGVuZCJdID0gIkZyb250ZW5kIGVkaXQiOw0KJGxhbmdbImhlbHBfZnJvbnRlbmQiXSA9ICJGb3Igc2VjdXJpdHksIGZyb250ZW5kIGVkaXRpb24gc2hvdWxkIGJlIHVzZWQgd2l0aCB0aGUgRnJvbnQgRW5kIFVzZXJzIG1vZHVsZS4gU2VlIDxhIGhyZWY9XCJtb2R1bGVzL3ZpbWVvcGxheWVyL2RvYy9mYXEuaHRtbCNxMjBcIiB0YXJnZXQ9XCJfYmxhbmtcIj5GYXE8L2E+IGZvciBoZWxwIG9uIHBlcm1pc3Npb24gaW50ZWdyYXRpb24uIjsNCiRsYW5nWyJwcmVmX2ZlX3d5c2l3eWciXSA9ICJFbmFibGUgd3lzaXd5ZyBpbiB0aGUgZnJvbnRlbmQgKG11c3QgYmUgZW5hYmxlZCBpbiB0aGUgR2xvYmFsIFNldHRpbmdzIHRvbykiOw0KJGxhbmdbInByZWZfZmVfZGVjb2RlZW50aXRpZXMiXSA9ICJEZWNvZGUgaHRtbCBlbnRpdGllcyBmcm9tIGZyb250ZW5kIGZvcm1zLiBUaGlzIGlzIG5vdCByZWNvbW1hbmRlZC4iOw0KJGxhbmdbInByZWZfZmVfYWxsb3dmaWxlcyJdID0gIkFsbG93IGZpbGUgdXBsb2FkIGZyb20gdGhlIGZyb250ZW5kLiI7DQokbGFuZ1sicHJlZl9mZV9hbGxvd25hbWVjaGFuZ2UiXSA9ICJBbGxvdyBmcm9udGVuZCB1c2VycyB0byBjaGFuZ2UgdGhlIG5hbWUgKGFuZCB0aHJvdWdoIGl0IHRoZSBhbGlhcykgb2YgdGhlIGl0ZW0gdGhleSBhcmUgZWRpdGluZy4iOw0KJGxhbmdbInByZWZfZmVfYWxsb3dhZGRuZXciXSA9ICJBbGxvdyBmcm9udGVuZCB1c2VycyB0byBhZGQgbmV3IGVsZW1lbnRzLiI7DQokbGFuZ1sicHJlZl9mZV91c2VjYXB0Y2hhIl0gPSAiVXNlIGNhcHRjaGE/IChtb2R1bGUgQ2FwdGNoYSByZXF1aXJlZCkiOw0KJGxhbmdbInByZWZfZmVfYWZ0ZXJzdWJtaXQiXSA9ICJPbmNlIHRoZSBmb3JtIGlzIHN1Ym1pdHRlZCwgcmVkaXJlY3QgdG8gIjsNCiRsYW5nWyJwcmVmX2ZlX21heGZpbGVzaXplIl0gPSAiTWF4aW11bSBzaXplLCBpbiBieXRlcywgb2YgdGhlIGZpbGVzIHVwbG9hZGVkIHRocm91Z2ggdGhlIGZyb250ZW5kIChjYW5ub3QgYmUgb3ZlciBwaHAuaW5pIGxpbWl0KSI7DQokbGFuZ1sicHJlZl9hbGxvd19jb21wbGV4X29yZGVyIl0gPSAiQWxsb3cgY29tcGxleCBcIm9yZGVyYnlcIiBwYXJhbWV0ZXJzLiI7DQoNCi8vUEFSQU1FVEVSUw0KJGxhbmdbInBoZWxwX2FjdGlvbiJdID0gIlBvc3NpYmxlIGFjdGlvbnM6IFwibGlua1wiLCBcInNlYXJjaFwiLCBcImJyZWFkY3J1bWJzXCIsIFwiZGVmYXVsdFwiLCBcInNpdGVtYXBcIi4iOw0KJGxhbmdbInBoZWxwX3doYXQiXSA9ICJBbGxvd3MgeW91IHRvIHNwZWNpZnkgdGhlIGxldmVsIHlvdSB3aXNoIHRvIGRpc3BsYXkuIFBvc3NpYmxlIHZhbHVlcyBhcmUgOiA8aT5jYXRlZ29yeSwgdmlkZW88L2k+IjsNCiRsYW5nWyJwaGVscF9hbGlhcyJdID0gIkFsaWFzIG9mIHRoZSBpdGVtIHlvdSB3aXNoIHRvIGRpc3BsYXkuIjsNCiRsYW5nWyJwaGVscF9wYXJlbnQiXSA9ICJJZiB5b3Ugd2lzaCB0byBsaW1pdCB0aGUgZGlzcGxheWVkIGVsZW1lbnRzIHRvIHRob3NlIHdobyBiZWxvbmcgdG8gYSBzcGVjaWZpYyBwYXJlbnQsIGVudGVyIHRoZSBwYXJlbnQgYWxpYXMgaGVyZS4iOw0KJGxhbmdbInBoZWxwX2xpbWl0Il0gPSAiTGltaXQgdGhlIG51bWJlciBvZiBpdGVtIHJldHVybmVkIGJ5IHRoZSBxdWVyeSAoMCA9IG5vIGxpbWl0KSI7DQokbGFuZ1sicGhlbHBfbmJwZXJwYWdlIl0gPSAiU2V0IHRoZSBudW1iZXIgb2YgaXRlbXMgZGlzcGxheWVkIG9uIGVhY2ggcGFnZS4iOw0KJGxhbmdbInBoZWxwX29yZGVyYnkiXSA9ICJZb3UgY2FuIHNldCB0byBcIm1vZGlmaWVkXCIsIFwiY3JlYXRlZFwiIG9yIHRoZSBuYW1lIG9mIGEgZmllbGQgdG8gb3JkZXIgaXRlbXMgaW4gdGhpcyB3YXkuIEFueSBvdGhlciB2YWx1ZSB3aWxsIG9yZGVyIHdpdGggdGhlIGl0ZW0gb3JkZXIuIjsNCiRsYW5nWyJwaGVscF9kZXRhaWxwYWdlIl0gPSAiU3BlY2lmeSB0aGUgYWxpYXMgb2YgdGhlIHBhZ2UgaW4gd2hpY2ggbGlua3MgdG8gY2hpbGQgZWxlbWVudHMgc2hvdWxkIGJlIHNlbnQgKGlmIG5vbmUgaXMgc3BlY2lmaWVkLCBjdXJyZW50IHBhZ2UgaXMgdXNlZCkiOw0KJGxhbmdbInBoZWxwX3Nob3dkZWZhdWx0Il0gPSAiU2V0IHRvIFwidHJ1ZVwiIGlmIHlvdSB3aXNoIHRvIGRpc3BsYXkgdGhlIGRlZmF1bHQgZWxlbWVudC4iOw0KJGxhbmdbInBoZWxwX3JhbmRvbSJdID0gIlNldCB0byBhIG51bWJlciB0byBzaG93IGEgbnVtYmVyIG9mIHJhbmRvbSBlbGVtZW50cyBmcm9tIHlvdXIgcXVlcnkuIjsNCiRsYW5nWyJwaGVscF9maW5hbHRlbXBsYXRlIl0gPSAiU3BlY2lmeSB0aGUgdGVtcGxhdGUgeW91IHdpc2ggdG8gdXNlIGZvciB0aGUgZGV0YWlsIHZpZXcgb2YgdGhlIGZpbmFsIGxldmVsLiI7DQokbGFuZ1sicGhlbHBfbGlzdHRlbXBsYXRlIl0gPSAiU3BlY2lmeSB0aGUgdGVtcGxhdGUgeW91IHdpc2ggdG8gdXNlIGZvciB0aGUgbGlzdCB2aWV3LiI7DQokbGFuZ1sicGhlbHBfZm9yY2VsaXN0Il0gPSAiU2V0IHRvIDEgaWYgeW91IHdpc2ggdG8gZGlzcGxheSBhIGxpc3QgdmlldyBldmVuIHdoZW4gdGhlcmUgaXMgb25seSBvbmUgZWxlbWVudC4iOw0KJGxhbmdbInBoZWxwX2ludGVybmFsIl0gPSAiRm9yIGludGVybmFsIHVzZTsgc3BlY2lmeSB0aGUgcGFnZSAod2hlbiB1c2luZyBuYnBlcnBhZ2UpLiI7DQokbGFuZ1sicGhlbHBfcXVlcnkiXSA9ICJGb3Igb3B0aW9uYWwgdXNlIHdpdGggdGhlIFwiZGVmYXVsdFwiIGFjdGlvbi4gU3BlY2lmaWVzIHRoZSBpZCBvZiB0aGUgcXVlcnkgdG8gdXNlLiI7DQokbGFuZ1sicGhlbHBfaW5saW5lIl0gPSAiTWFrZXMgdGhlIGxpbmtzIGlubGluZS4iOw0KJGxhbmdbInBoZWxwX3NlYXJjaG1vZGUiXSA9ICJGb3IgdXNlIHdpdGggdGhlIFwic2VhcmNoXCIgYWN0aW9uLiBTZXQgdG8gXCJzaW1wbGVcIiB0byBzZWFyY2ggaW4gYWxsIHRleHQgZmllbGRzLCBhbmQgXCJhZHZhbmNlZFwiIHRvIHNlYXJjaCBpbiBzcGVjaWZpYyBmaWVsZHMuIjsNCiRsYW5nWyJwaGVscF90b2FjdGlvbiJdID0gIkZvciB1c2Ugd2l0aCB0aGUgXCJsaW5rXCIgYWN0aW9uLiBTZXRzIHRoZSBhY3Rpb24gdG8gd2hpY2ggdGhlIGxpbmsgc2hvdWxkIHJlZGlyZWN0LiI7DQoNCj8+]]></data>
	</file>
	<file>
	  <filename>/lang/ext/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/method.install.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmlmKCFpc3NldCgkZ0NtcykpIGV4aXQ7DQoNCi8vIFR5cGljYWwgRGF0YWJhc2UgSW5pdGlhbGl6YXRpb24NCiRkYiA9ICYkdGhpcy0+Y21zLT5kYjsNCiRkaWN0ID0gTmV3RGF0YURpY3Rpb25hcnkoJGRiKTsNCgkJDQovLyBteXNxbC1zcGVjaWZpYywgYnV0IGlnbm9yZWQgYnkgb3RoZXIgZGF0YWJhc2UNCiR0YWJvcHRhcnJheSA9IGFycmF5KCJteXNxbCIgPT4gIlRZUEU9TXlJU0FNIik7DQoJCQ0KDQovLyBDcmVhdGVzIHRoZSBjYXRlZ29yeSB0YWJsZQ0KJGZsZHMgPSAiDQoJZGVzY3JpcHRpb24gQygyNTUpLA0KCWlkIEkgS0VZLA0KCW5hbWUgQyg2NCksDQoJYWxpYXMgQyg2NCksDQoJaXRlbV9vcmRlciBJLA0KCWFjdGl2ZSBMLA0KCWlzZGVmYXVsdCBMLA0KICAgIGRhdGVfbW9kaWZpZWQgIi5DTVNfQURPREJfRFQuIiwNCglkYXRlX2NyZWF0ZWQgIi5DTVNfQURPREJfRFQuIg0KCSI7DQoNCiRzcWxhcnJheSA9ICRkaWN0LT5DcmVhdGVUYWJsZVNRTChjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV92aW1lb3BsYXllcl9jYXRlZ29yeSIsICRmbGRzLCAkdGFib3B0YXJyYXkpOw0KJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOw0KJGRiLT5DcmVhdGVTZXF1ZW5jZShjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV92aW1lb3BsYXllcl9jYXRlZ29yeV9zZXEiKTsNCg0KDQovLyBDcmVhdGVzIHRoZSB2aWRlbyB0YWJsZQ0KJGZsZHMgPSAiDQoJdmlkZW9pZCBDKDY0KSwNCglkZXNjcmlwdGlvbiBDKDI1NSksDQoJdGh1bWJuYWlsIEMoNjQpLA0KCXBhcmVudCBJLA0KCWlkIEkgS0VZLA0KCW5hbWUgQyg2NCksDQoJYWxpYXMgQyg2NCksDQoJaXRlbV9vcmRlciBJLA0KCWFjdGl2ZSBMLA0KCWlzZGVmYXVsdCBMLA0KICAgIGRhdGVfbW9kaWZpZWQgIi5DTVNfQURPREJfRFQuIiwNCglkYXRlX2NyZWF0ZWQgIi5DTVNfQURPREJfRFQuIg0KCSI7DQoNCiRzcWxhcnJheSA9ICRkaWN0LT5DcmVhdGVUYWJsZVNRTChjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV92aW1lb3BsYXllcl92aWRlbyIsICRmbGRzLCAkdGFib3B0YXJyYXkpOw0KJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOw0KJGRiLT5DcmVhdGVTZXF1ZW5jZShjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV92aW1lb3BsYXllcl92aWRlb19zZXEiKTsNCg0KDQoNCi8vIENyZWF0ZXMgdGhlIHF1ZXJpZXMgdGFibGUNCiRmbGRzID0gIg0KICAgIGlkIEksDQoJbmFtZSBDKDY0KSwNCgl3aGF0IEMoMzIpLA0KCXdoZXJlY2xhdXNlIEMoMjU1KSwNCgl3aGVyZXZhbHVlcyBDKDI1NSksDQoJcXVlcnlvcmRlciBDKDMyKQ0KCSI7DQoNCiRzcWxhcnJheSA9ICRkaWN0LT5DcmVhdGVUYWJsZVNRTChjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV92aW1lb3BsYXllcl9zYXZlZF9xdWVyaWVzIiwgJGZsZHMsICR0YWJvcHRhcnJheSk7DQokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7DQokZGItPkNyZWF0ZVNlcXVlbmNlKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3ZpbWVvcGxheWVyX3NhdmVkX3F1ZXJpZXNfc2VxIik7DQoNCg0KLy8gSU5TRVJUSU5HIERFRkFVTFQgVEVNUExBVEVTDQoJJHRlbXBsYXRlID0gJzxoMj57JGxldmVsdGl0bGV9PC9oMj4NCjx1bD4NCntmb3JlYWNoIGZyb209JGl0ZW1saXN0IGl0ZW09Iml0ZW0ifQ0KPGxpIHtpZiAkaXRlbS0+aXNfc2VsZWN0ZWR9Y2xhc3M9ImFjdGl2ZSJ7L2lmfT57JGl0ZW0tPmRldGFpbGxpbmt9PGJyIC8+DQo8YSBocmVmPSJ7JGl0ZW0tPmRldGFpbHVybH0iPjxpbWcgc3JjPSJ7JGl0ZW0tPnRodW1ibmFpbH0iIGFsdD0ieyRpdGVtLT5uYW1lfSIgdGl0bGU9InskaXRlbS0+bmFtZX0iPiANCjwvYT48YnIgLz48YnIgLz4NCjwvbGk+DQp7L2ZvcmVhY2h9DQo8L3VsPg0KJzsNCiR0aGlzLT5TZXRUZW1wbGF0ZSgibGlzdF9kZWZhdWx0IiwkdGVtcGxhdGUsJHRoaXMtPkdldE5hbWUoKSk7DQogICAgJHRoaXMtPlNldFByZWZlcmVuY2UoImxpc3R0ZW1wbGF0ZV9jYXRlZ29yeSIsImxpc3RfZGVmYXVsdCIpOw0KICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlKCJsaXN0dGVtcGxhdGVfdmlkZW8iLCJsaXN0X2RlZmF1bHQiKTsNCg0KJHRlbXBsYXRlID0gJzxoMz57JGl0ZW0tPm5hbWV9PC9oMz4NCjxwPnskbGFiZWxzLT52aWRlb2lkfTogeyRpdGVtLT52aWRlb2lkfTwvcD4NCjxwPnskbGFiZWxzLT5kZXNjcmlwdGlvbn06IHskaXRlbS0+ZGVzY3JpcHRpb259PC9wPg0KPG9iamVjdCB3aWR0aD0iNDAwIiBoZWlnaHQ9IjIyNSI+DQo8cGFyYW0gbmFtZT0iYWxsb3dmdWxsc2NyZWVuIiB2YWx1ZT0idHJ1ZSIgLz48cGFyYW0gbmFtZT0iYWxsb3dzY3JpcHRhY2Nlc3MiIHZhbHVlPSJhbHdheXMiIC8+PHBhcmFtIG5hbWU9Im1vdmllIiB2YWx1ZT0iaHR0cDovL3ZpbWVvLmNvbS9tb29nYWxvb3Auc3dmP2NsaXBfaWQ9eyRpdGVtLT52aWRlb2lkfSZhbXA7c2VydmVyPXZpbWVvLmNvbSZhbXA7c2hvd190aXRsZT0wJmFtcDtzaG93X2J5bGluZT0wJmFtcDtzaG93X3BvcnRyYWl0PTAmYW1wO2NvbG9yPTAwQURFRiZhbXA7ZnVsbHNjcmVlbj0xJmFtcDthdXRvcGxheT0wJmFtcDtsb29wPTAiIC8+DQo8ZW1iZWQgc3JjPSJodHRwOi8vdmltZW8uY29tL21vb2dhbG9vcC5zd2Y/Y2xpcF9pZD17JGl0ZW0tPnZpZGVvaWR9JmFtcDtzZXJ2ZXI9dmltZW8uY29tJmFtcDtzaG93X3RpdGxlPTAmYW1wO3Nob3dfYnlsaW5lPTAmYW1wO3Nob3dfcG9ydHJhaXQ9MCZhbXA7Y29sb3I9MDBBREVGJmFtcDtmdWxsc2NyZWVuPTEmYW1wO2F1dG9wbGF5PTAmYW1wO2xvb3A9MCIgdHlwZT0iYXBwbGljYXRpb24veC1zaG9ja3dhdmUtZmxhc2giIGFsbG93ZnVsbHNjcmVlbj0idHJ1ZSIgYWxsb3dzY3JpcHRhY2Nlc3M9ImFsd2F5cyIgd2lkdGg9IjQwMCIgaGVpZ2h0PSIyMjUiPjwvZW1iZWQ+PC9vYmplY3Q+DQonOw0KJHRoaXMtPlNldFRlbXBsYXRlKCJmaW5hbF9kZWZhdWx0IiwkdGVtcGxhdGUsJHRoaXMtPkdldE5hbWUoKSk7DQokdGhpcy0+U2V0UHJlZmVyZW5jZSgiZmluYWx0ZW1wbGF0ZSIsImZpbmFsX2RlZmF1bHQiKTsNCg0KDQovLyBwZXJtaXNzaW9ucw0KJHRoaXMtPkNyZWF0ZVBlcm1pc3Npb24oInZpbWVvcGxheWVyX25vcm1hbHVzZXIiLCAidmltZW9wbGF5ZXI6IE5vcm1hbCB1c2VyIik7DQokdGhpcy0+Q3JlYXRlUGVybWlzc2lvbigidmltZW9wbGF5ZXJfYWR2YW5jZWQiLCAidmltZW9wbGF5ZXI6IEFkdmFuY2VkIik7DQoJJHRoaXMtPkNyZWF0ZVBlcm1pc3Npb24oInZpbWVvcGxheWVyX21hbmFnZV9jYXRlZ29yeSIsICJ2aW1lb3BsYXllcjogTWFuYWdlIGNhdGVnb3J5Iik7DQoJJHRoaXMtPkNyZWF0ZVBlcm1pc3Npb24oInZpbWVvcGxheWVyX21hbmFnZV92aWRlbyIsICJ2aW1lb3BsYXllcjogTWFuYWdlIHZpZGVvIik7DQovLyBhY3RpdmF0aW5nIGRlZmF1bHQgcHJlZmVyZW5jZXMNCgkkZGVmcHJlZnMgPSBhcnJheSgidGFiZGlzcGxheV9jYXRlZ29yeSIsInNlYXJjaG1vZHVsZV9pbmRleF9jYXRlZ29yeSIsInRhYmRpc3BsYXlfdmlkZW8iLCJzZWFyY2htb2R1bGVfaW5kZXhfdmlkZW8iLCJuZXdpdGVtc2ZpcnN0X3ZpZGVvIiwicmVzdHJpY3RfcGVybWlzc2lvbnMiLCJvcmRlcmJ5bmFtZSIsImRpc3BsYXlfZmlsdGVyIiwiZGlzcGxheV9pbnN0YW50c2VhcmNoIiwiZGlzcGxheV9pbnN0YW50c29ydCIsInNob3d0aHVtYm5haWxzIik7DQoJZm9yZWFjaCgkZGVmcHJlZnMgYXMgJG9uZXByZWYpCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCRvbmVwcmVmLHRydWUpOw0KDQovLyBldmVudHMNCgkkdGhpcy0+Q3JlYXRlRXZlbnQoInZpbWVvcGxheWVyX2FkZGVkIik7DQoJJHRoaXMtPkNyZWF0ZUV2ZW50KCJ2aW1lb3BsYXllcl9tb2RpZmllZCIpOw0KCSR0aGlzLT5DcmVhdGVFdmVudCgidmltZW9wbGF5ZXJfZGVsZXRlZCIpOw0KCQ0KLy8gcHJlcGFyZSBpbmZvcm1hdGlvbiBmb3IgYW4gZXZlbnR1YWwgdXBncmFkZQ0KCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCJtYWtlcnZlcnNpb24iLCIxLjguOC4zIik7DQoNCi8vIHB1dCBtZW50aW9uIGludG8gdGhlIGFkbWluIGxvZw0KCSR0aGlzLT5BdWRpdCggMCwgJHRoaXMtPkxhbmcoImZyaWVuZGx5bmFtZSIpLCAkdGhpcy0+TGFuZygiaW5zdGFsbGVkIiwkdGhpcy0+R2V0VmVyc2lvbigpKSk7DQoNCj8+DQo=]]></data>
	</file>
	<file>
	  <filename>/method.uninstall.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmlmKCFpc3NldCgkZ0NtcykpIGV4aXQ7DQoNCi8vIFR5cGljYWwgRGF0YWJhc2UgSW5pdGlhbGl6YXRpb24NCiRkYiA9ICYkdGhpcy0+Y21zLT5kYjsNCiRkaWN0ID0gTmV3RGF0YURpY3Rpb25hcnkoJGRiKTsNCg0KDQoNCgkkc3FsYXJyYXkgPSAkZGljdC0+RHJvcFRhYmxlU1FMKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3ZpbWVvcGxheWVyX2NhdGVnb3J5Iik7DQoJJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOw0KCSRkYi0+RHJvcFNlcXVlbmNlKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3ZpbWVvcGxheWVyX2NhdGVnb3J5X3NlcSIpOw0KCQ0KDQoJJHNxbGFycmF5ID0gJGRpY3QtPkRyb3BUYWJsZVNRTChjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV92aW1lb3BsYXllcl92aWRlbyIpOw0KCSRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsNCgkkZGItPkRyb3BTZXF1ZW5jZShjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV92aW1lb3BsYXllcl92aWRlb19zZXEiKTsNCgkNCg0KCS8vJHNxbGFycmF5ID0gJGRpY3QtPkRyb3BUYWJsZVNRTChjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV92aW1lb3BsYXllcl90ZW1wbGF0ZXMiKTsNCgkvLyRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsNCgkkdGhpcy0+RGVsZXRlVGVtcGxhdGUoIiIsJHRoaXMtPkdldE5hbWUoKSk7DQoJDQoJJHNxbGFycmF5ID0gJGRpY3QtPkRyb3BUYWJsZVNRTChjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV92aW1lb3BsYXllcl9zYXZlZF9xdWVyaWVzIik7DQoJJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOw0KCSRkYi0+RHJvcFNlcXVlbmNlKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3ZpbWVvcGxheWVyX3NhdmVkX3F1ZXJpZXNfc2VxIik7DQoNCi8vIHBlcm1pc3Npb25zDQoJJHRoaXMtPlJlbW92ZVBlcm1pc3Npb24oInZpbWVvcGxheWVyX21hbmFnZV9jYXRlZ29yeSIpOw0KCSR0aGlzLT5SZW1vdmVQZXJtaXNzaW9uKCJ2aW1lb3BsYXllcl9tYW5hZ2VfdmlkZW8iKTsNCgkkdGhpcy0+UmVtb3ZlUGVybWlzc2lvbigidmltZW9wbGF5ZXJfYWR2YW5jZWQiKTsNCgkkdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgpOw0KCQ0KLy8gZXZlbnRzDQoJJHRoaXMtPlJlbW92ZUV2ZW50KCJ2aW1lb3BsYXllcl9hZGRlZCIpOw0KCSR0aGlzLT5SZW1vdmVFdmVudCgidmltZW9wbGF5ZXJfbW9kaWZpZWQiKTsNCgkkdGhpcy0+UmVtb3ZlRXZlbnQoInZpbWVvcGxheWVyX2RlbGV0ZWQiKTsNCg0KLy8gcHV0IG1lbnRpb24gaW50byB0aGUgYWRtaW4gbG9nDQoJJHRoaXMtPkF1ZGl0KCAwLCAkdGhpcy0+TGFuZygiZnJpZW5kbHluYW1lIiksICR0aGlzLT5MYW5nKCJ1bmluc3RhbGxlZCIpKTsNCg0KPz4NCg==]]></data>
	</file>
	<file>
	  <filename>/method.upgrade.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7CgokZGIgPSYgJHRoaXMtPkdldERiKCk7CiRkaWN0ID0gTmV3RGF0YURpY3Rpb25hcnkoJGRiKTsKJHRhYm9wdCA9IGFycmF5KCJteXNxbCIgPT4gIlRZUEU9TXlJU0FNIik7CgovLyBQQVJUIDE6IFRoaXMgZG9lcyB0aGUgdXBncmFkZSBmb3IgdGhlIENUTE1vZHVsZU1ha2VyIHBhcnQKLy8gVW5mb3J0dW5hdGVseSwgdGhpcyBpcyBvbmx5IGJhY2t3YXJkIGNvbXBhdGlibGUgdG8gQ1RMTW9kdWxlTWFrZXIgMS42LjMuIEkgY291bGRuJ3QgZ28gYW55IGZ1cnRoZXIgYmVoaW5kIGJlY2F1c2UgYXQgdGhhdCB0aW1lIHRoZSBtYWtlciB2ZXJzaW9uIHdhc24ndCBzYXZlZCBhbnl3aGVyZQoKJG9sZG1ha2VyID0gJHRoaXMtPkdldFByZWZlcmVuY2UoIm1ha2VydmVyc2lvbiIsICJ2ZXJ5b2xkIik7Cgpzd2l0Y2goJG9sZG1ha2VyKXsKCS8vIEJFR0lOIFNXSVRDSCgkb2xkbWFrZXIpCgoJY2FzZSAidmVyeW9sZCI6CgkJLy8gdGhlIG1vZHVsZSB3YXMgY3JlYXRlZCB3aXRoIHZlcnNpb24gMS42LjMgb3IgcHJpb3IuCgkJJHRoaXMtPkNyZWF0ZUV2ZW50KCJ2aW1lb3BsYXllcl9hZGRlZCIpOwoJCSR0aGlzLT5DcmVhdGVFdmVudCgidmltZW9wbGF5ZXJfbW9kaWZpZWQiKTsKCQkkdGhpcy0+Q3JlYXRlRXZlbnQoInZpbWVvcGxheWVyX2RlbGV0ZWQiKTsKCQlicmVhazsKCWNhc2UgIjEuNi40IjoKCWNhc2UgIjEuNyI6CgljYXNlICIxLjcuMSI6CgljYXNlICIxLjcuMiI6CgljYXNlICIxLjcuMyI6CgljYXNlICIxLjcuNCI6CgkJOwoJY2FzZSAiMS44LjEiOgoJY2FzZSAiMS44LjIiOgoJY2FzZSAiMS44LjIuMiI6CgljYXNlICIxLjguMyI6CgljYXNlICIxLjguMy4xIjoKCQkvLyBDcmVhdGVzIHRoZSBxdWVyaWVzIHRhYmxlCgkJJGZsZHMgPSAiCgkJCWlkIEksCgkJCW5hbWUgQyg2NCksCgkJCXdoYXQgQygzMiksCgkJCXdoZXJlY2xhdXNlIEMoMjU1KSwKCQkJd2hlcmV2YWx1ZXMgQygyNTUpLAoJCQlxdWVyeW9yZGVyIEMoMzIpCgkJCSI7CgkJJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZVRhYmxlU1FMKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3ZpbWVvcGxheWVyX3NhdmVkX3F1ZXJpZXMiLCAkZmxkcywgJHRhYm9wdCk7CgkJJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoJCSRkYi0+Q3JlYXRlU2VxdWVuY2UoY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfdmltZW9wbGF5ZXJfc2F2ZWRfcXVlcmllc19zZXEiKTsKCQkkdGhpcy0+Q3JlYXRlUGVybWlzc2lvbigidmltZW9wbGF5ZXJfYWR2YW5jZWQiLCAidmltZW9wbGF5ZXI6IEFkdmFuY2VkIik7CgljYXNlICIxLjguNCI6CgljYXNlICIxLjguNC4xIjoKCWNhc2UgIjEuOC41IjoKCWNhc2UgIjEuOC41LjEiOgoJCSR0aGlzLT5DcmVhdGVQZXJtaXNzaW9uKCJ2aW1lb3BsYXllcl9ub3JtYWx1c2VyIiwgInZpbWVvcGxheWVyOiBOb3JtYWwgdXNlciIpOwoJCS8vIGFjdGl2YXRpbmcgZGVmYXVsdCBwcmVmZXJlbmNlcwoJCSRkZWZwcmVmcyA9IGFycmF5KCJ0YWJkaXNwbGF5X2NhdGVnb3J5Iiwic2VhcmNobW9kdWxlX2luZGV4X2NhdGVnb3J5IiwidGFiZGlzcGxheV92aWRlbyIsInNlYXJjaG1vZHVsZV9pbmRleF92aWRlbyIsIm5ld2l0ZW1zZmlyc3RfdmlkZW8iLCJyZXN0cmljdF9wZXJtaXNzaW9ucyIsImRpc3BsYXlfZmlsdGVyIiwiZGlzcGxheV9pbnN0YW50c2VhcmNoIik7CgkJZm9yZWFjaCgkZGVmcHJlZnMgYXMgJG9uZXByZWYpCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCRvbmVwcmVmLHRydWUpOwoJY2FzZSAiMS44LjYiOgoJY2FzZSAiMS44LjYuMSI6CgljYXNlICIxLjguNyI6CgljYXNlICIxLjguNy4xIjoKCQlpZigkZGItPmRidHlwZSA9PSAibXlzcWwiIHx8ICRkYi0+ZGJ0eXBlID09ICJteXNxbGkiKXsKCQkJLy8gbXN5cWwKCQkJJHF1ZXJpZXMgPSBhcnJheSgpOwoJCQkkcXVlcmllc1tdID0gIkFMVEVSIFRBQkxFICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfdmltZW9wbGF5ZXJfY2F0ZWdvcnkgQUREIENPTFVNTiBkYXRlX2NyZWF0ZWQgREFURVRJTUUiOwoJCQkkcXVlcmllc1tdID0gIlVQREFURSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3ZpbWVvcGxheWVyX2NhdGVnb3J5IFNFVCBkYXRlX2NyZWF0ZWQ9ZGF0ZV9tb2RpZmllZCI7CgkJCSRxdWVyaWVzW10gPSAiQUxURVIgVEFCTEUgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV92aW1lb3BsYXllcl92aWRlbyBBREQgQ09MVU1OIGRhdGVfY3JlYXRlZCBEQVRFVElNRSI7CgkJCSRxdWVyaWVzW10gPSAiVVBEQVRFICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfdmltZW9wbGF5ZXJfdmlkZW8gU0VUIGRhdGVfY3JlYXRlZD1kYXRlX21vZGlmaWVkIjsKCQkJZm9yZWFjaCgkcXVlcmllcyBhcyAkcXVlcnkpCQlteXNxbF9xdWVyeSgkcXVlcnkpOwoKCQl9ZWxzZXsKCQkJLy8gbm9uLW15c3FsCgkJCSRkaWN0LT5BZGRDb2x1bW5TUUwoY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfdmltZW9wbGF5ZXJfY2F0ZWdvcnkiLCAiZGF0ZV9jcmVhdGVkICIuQ01TX0FET0RCX0RUKTsKCQkJJGRpY3QtPkFkZENvbHVtblNRTChjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV92aW1lb3BsYXllcl92aWRlbyIsICJkYXRlX2NyZWF0ZWQgIi5DTVNfQURPREJfRFQpOwoJCQkKCQl9CgljYXNlICIxLjguNy4yIjoKCWNhc2UgIjEuOC44IjoKCWNhc2UgIjEuOC44LjEiOgoJY2FzZSAiMS44LjguMiI6CgkJCgkvLyBFTkQgU1dJVENIKCRvbGRtYWtlcikKfQoKJHRoaXMtPlNldFByZWZlcmVuY2UoIm1ha2VydmVyc2lvbiIsICIxLjguOC4zIik7Cj8+]]></data>
	</file>
	<file>
	  <filename>/templates/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/adminpanel.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2lmICRmaWx0ZXIgfHwgJGluc3RhbnRzZWFyY2h9PGRpdiBzdHlsZT0iZmxvYXQ6IHJpZ2h0OyB0ZXh0LWFsaWduOiByaWdodDsiPnskZmlsdGVyfXtpZiAkZmlsdGVyICYmICRpbnN0YW50c2VhcmNofTxici8+ey9pZn17JGluc3RhbnRzZWFyY2h9PC9kaXY+ey9pZn0KPHA+eyRhZGRuZXd9IHskcmVvcmRlcn08L3A+CntpZiBjb3VudCgkaXRlbWxpc3QpID4gMH0KPGRpdiBzdHlsZT0iY2xlYXI6IHJpZ2h0OyI+Cjx0YWJsZSB7aWYgJHRhYmxlaWR9aWQ9InskdGFibGVpZH0iIHsvaWZ9Y2VsbHNwYWNpbmc9IjAiIGNsYXNzPSJwYWdldGFibGUiPgo8dGhlYWQ+PHRyPgoJe2ZvcmVhY2ggZnJvbT0kYWRtaW5zaG93IGl0ZW09Y29sdW1ufQoJCTx0aD57JGNvbHVtblswXX08L3RoPgoJey9mb3JlYWNofQo8L3RyPjwvdGhlYWQ+Cjx0Ym9keT4Ke2N5Y2xlIHZhbHVlcz0icm93Mixyb3cxIiBhc3NpZ249cm93Y2xhc3MgcmVzZXQ9dHJ1ZX0Ke2ZvcmVhY2ggZnJvbT0kaXRlbWxpc3QgaXRlbT1vbmVpdGVtfQp7Y3ljbGUgdmFsdWVzPSJyb3cyLHJvdzEiIGFzc2lnbj1yb3djbGFzc30KPHRyIGNsYXNzPSJ7JHJvd2NsYXNzfSIgb25tb3VzZW92ZXI9InRoaXMuY2xhc3NOYW1lPSd7JHJvd2NsYXNzfWhvdmVyJzsiIG9ubW91c2VvdXQ9InRoaXMuY2xhc3NOYW1lPSd7JHJvd2NsYXNzfSc7Ij4KCXtmb3JlYWNoIGZyb209JGFkbWluc2hvdyBpdGVtPWNvbHVtbn0KCQl7YXNzaWduIHZhcj1vbmV2YWwgdmFsdWU9JGNvbHVtblsxXX0KCQk8dGR7aWYgJGNvbHVtblsyXX0gY2xhc3M9ImN0bG1tX25vc2VhcmNoInsvaWZ9Pnskb25laXRlbS0+JG9uZXZhbH08L3RkPgoJey9mb3JlYWNofQo8L3RyPgp7L2ZvcmVhY2h9CjwvdGJvZHk+CjwvdGFibGU+CjwvZGl2Pgo8cD57JGFkZG5ld308L3A+ey9pZn0K]]></data>
	</file>
	<file>
	  <filename>/templates/browsefiles.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgyPnskYnJvd3NldGl0bGV9PC9oMj4Ke2lmICRwb3N0bWF4c2l6ZX08cCBhbGlnbj0icmlnaHQiPnskcG9zdG1heHNpemV9PC9wPnsvaWZ9CnskZm9ybXN0YXJ0fQoKe2lmICRhZGRmaWxlaW5wdXR9CjxmaWVsZHNldCBzdHlsZT0iZmxvYXQ6IHJpZ2h0OyB3aWR0aDogMzAlOyBtYXJnaW46IDE1cHg7IHBhZGRpbmc6IDVweDsiPjxsZWdlbmQ+PGI+eyR6aXB0aXRsZX08L2I+PC9sZWdlbmQ+CjxwPnskemlwbm90aWNlfTwvcD4Ke2lmICRyZXNpemVub3RpY2V9PHA+eyRyZXNpemVub3RpY2V9PC9wPnsvaWZ9CjxwPnskemlwaW5wdXR9IHskemlwc3VibWl0fTwvcD4KPC9maWVsZHNldD4Key9pZn0KPGZpZWxkc2V0IHN0eWxlPSJtYXJnaW46IDE1cHg7IHBhZGRpbmc6IDVweDsiPjxsZWdlbmQ+PGI+eyR1cGxvYWR0aXRsZX08L2I+PC9sZWdlbmQ+CntpZiAkcmVzaXplbm90aWNlfTxwPnskcmVzaXplbm90aWNlfTwvcD57L2lmfQp7JGZpbGVpbnB1dH0Ke2lmICRhZGRmaWxlaW5wdXR9PHA+eyRhZGRmaWxlaW5wdXR9PC9wPnsvaWZ9CjxwPnskc3VibWl0fTwvcD4KPC9maWVsZHNldD4KCnskZm9ybWVuZH0KCjxici8+CntpZiAkaW5zdGFudHNlYXJjaH08ZGl2IHN0eWxlPSJmbG9hdDogcmlnaHQ7Ij57JGluc3RhbnRzZWFyY2h9PC9kaXY+ey9pZn0KPHA+eyRzaG93aW5nZGlyfTwvcD4KPGRpdiBzdHlsZT0iY2xlYXI6IHJpZ2h0OyI+Cjx0YWJsZSBpZD0iZmlsZWxpc3RfdGFibGUiIGNlbGxzcGFjaW5nPSIwIiBjbGFzcz0icGFnZXRhYmxlIj4KPHRoZWFkPjx0cj4KCTx0aD57JHNvcnRsaW5rc1swXX17JGhlYWRlcnMtPmZpbGVuYW1lfTwvdGg+Cgk8dGg+eyRudW1lcmljX3NvcnRsaW5rc1sxXX17JGhlYWRlcnMtPmltYWdlc2l6ZX08L3RoPgoJPHRoPnskc29ydGxpbmtzWzJdfXskaGVhZGVycy0+ZXh0fTwvdGg+Cgk8dGg+eyRudW1lcmljX3NvcnRsaW5rc1szXX17JGhlYWRlcnMtPnNpemV9PC90aD4KCTx0aD57JG51bWVyaWNfc29ydGxpbmtzWzRdfXskaGVhZGVycy0+bW9kaWZpZWR9PC90aD4KCTx0aCB3aWR0aD0iMTI4Ij57JGhlYWRlcnMtPmRlbGV0ZWxpbmt9PC90aD4KPC90cj48L3RoZWFkPgo8dGJvZHk+CntjeWNsZSB2YWx1ZXM9InJvdzIscm93MSIgYXNzaWduPXJvd2NsYXNzIHJlc2V0PXRydWV9Cntmb3JlYWNoIGZyb209JGl0ZW1saXN0IGl0ZW09b25laXRlbX0Ke2N5Y2xlIHZhbHVlcz0icm93Mixyb3cxIiBhc3NpZ249cm93Y2xhc3N9Cjx0ciBjbGFzcz0ieyRyb3djbGFzc30iIG9ubW91c2VvdmVyPSJ0aGlzLmNsYXNzTmFtZT0neyRyb3djbGFzc31ob3Zlcic7IiBvbm1vdXNlb3V0PSJ0aGlzLmNsYXNzTmFtZT0neyRyb3djbGFzc30nOyI+Cgk8dGQ+eyRvbmVpdGVtLT5waWN9IHskb25laXRlbS0+dGhlbGlua308L3RkPgoJPHRkIGNsYXNzPSJjdGxtbV9ub3NlYXJjaCI+eyRvbmVpdGVtLT5pbWFnZXNpemV9PC90ZD4KCTx0ZCBjbGFzcz0iY3RsbW1fbm9zZWFyY2giPnskb25laXRlbS0+ZXh0fTwvdGQ+Cgk8dGQgY2xhc3M9ImN0bG1tX25vc2VhcmNoIj57JG9uZWl0ZW0tPnNpemV9PC90ZD4KCTx0ZCBjbGFzcz0iY3RsbW1fbm9zZWFyY2giPnskb25laXRlbS0+bW9kaWZpZWR9PC90ZD4KCTx0ZCBjbGFzcz0iY3RsbW1fbm9zZWFyY2giPnskb25laXRlbS0+ZGVsZXRlbGlua308L3RkPgo8L3RyPgp7L2ZvcmVhY2h9CjwvdGJvZHk+CjwvdGFibGU+CjwvZGl2Pgo=]]></data>
	</file>
	<file>
	  <filename>/templates/editA.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[DQp7aWYgJGl0ZW1hbGlhc308c3BhbiBzdHlsZT0iZmxvYXQ6IHJpZ2h0OyBmb250LXNpemU6IDgwJSI+eyRpdGVtYWxpYXN9PC9zcGFuPnsvaWZ9DQo8aDE+eyRlZGl0dGl0bGV9PC9oMT4NCjxwPnskc3VibWl0fSB7JGFwcGx5fSB7JGNhbmNlbH08L3A+DQo8YnIvPjxici8+DQoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG5hbWVfbGFiZWx9KiA6PC9wPg0KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JG5hbWVfaW5wdXR9PC9wPg0KCTwvZGl2Pg0KCXtpZiAkYWxpYXNfaW5wdXR9PGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JGFsaWFzX2xhYmVsfSA6PC9wPg0KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JGFsaWFzX2lucHV0fTwvcD4NCgk8L2Rpdj4NCgl7L2lmfQ0KDQoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JGRlc2NyaXB0aW9uX2xhYmVsfSA6PC9wPg0KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JGRlc2NyaXB0aW9uX2lucHV0fTwvcD4NCgk8L2Rpdj4NCjxici8+DQo8cD57JHN1Ym1pdH0geyRhcHBseX0geyRjYW5jZWx9PC9wPg0K]]></data>
	</file>
	<file>
	  <filename>/templates/editB.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[DQp7aWYgJGl0ZW1hbGlhc308c3BhbiBzdHlsZT0iZmxvYXQ6IHJpZ2h0OyBmb250LXNpemU6IDgwJSI+eyRpdGVtYWxpYXN9PC9zcGFuPnsvaWZ9DQo8aDE+eyRlZGl0dGl0bGV9PC9oMT4NCjxwPnskc3VibWl0fSB7JGFwcGx5fSB7JGNhbmNlbH08L3A+DQo8YnIvPjxici8+DQoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG5hbWVfbGFiZWx9KiA6PC9wPg0KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JG5hbWVfaW5wdXR9PC9wPg0KCTwvZGl2Pg0KCXtpZiAkYWxpYXNfaW5wdXR9PGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JGFsaWFzX2xhYmVsfSA6PC9wPg0KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JGFsaWFzX2lucHV0fTwvcD4NCgk8L2Rpdj4NCgl7L2lmfQ0KDQoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHBhcmVudF9sYWJlbH0qIDo8L3A+DQoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskcGFyZW50X2lucHV0fTwvcD4NCgk8L2Rpdj4NCgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KCQk8cCBjbGFzcz0icGFnZXRleHQiPnskdmlkZW9pZF9sYWJlbH0qIDo8L3A+DQoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskdmlkZW9pZF9pbnB1dH08L3A+DQoJPC9kaXY+DQoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JGRlc2NyaXB0aW9uX2xhYmVsfSA6PC9wPg0KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JGRlc2NyaXB0aW9uX2lucHV0fTwvcD4NCgk8L2Rpdj4NCgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KCQk8cCBjbGFzcz0icGFnZXRleHQiPnskdGh1bWJuYWlsX2xhYmVsfSA6PC9wPg0KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JHRodW1ibmFpbF9pbnB1dH08L3A+DQoNCgk8L2Rpdj4NCjxici8+DQo8cD57JHN1Ym1pdH0geyRhcHBseX0geyRjYW5jZWx9PC9wPg0K]]></data>
	</file>
	<file>
	  <filename>/templates/noresult.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PHA+eyRlcnJvcl9tc2d9PC9wPgp7aWYgJGJhY2tsaW5rfTxwPnskYmFja2xpbmt9PC9wPnsvaWZ9Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/search.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgyPnskc2VhcmNodGl0bGV9e2lmICR3aGF0fTogeyR3aGF0fXsvaWZ9PC9oMj4KPHA+eyRzZWFyY2hmaWVsZH17JHN1Ym1pdH08L3A+Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/search_category.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgyPnskc2VhcmNodGl0bGV9OiB7JHdoYXR9PC9oMj4KPHRhYmxlPgo8dHI+PHRkPnskZGVzY3JpcHRpb25fbGFiZWx9PC90ZD48dGQ+eyRkZXNjcmlwdGlvbl9pbnB1dH08L3RkPjwvdHI+Cjx0cj48dGQ+eyRuYW1lX2xhYmVsfTwvdGQ+PHRkPnskbmFtZV9pbnB1dH08L3RkPjwvdHI+Cjx0cj48dGQ+eyRkYXRlX21vZGlmaWVkX2xhYmVsfTwvdGQ+PHRkPnskZGF0ZV9tb2RpZmllZF9pbnB1dH08L3RkPjwvdHI+CjwvdGFibGU+CjxwPnskc3VibWl0fTwvcD4=]]></data>
	</file>
	<file>
	  <filename>/templates/search_generalresults.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgyPnskbGV2ZWx0aXRsZX08L2gyPgo8dWwgY2xhc3M9ImN0bF9zZWFyY2hyZXN1bHRzIj4Ke2ZvcmVhY2ggZnJvbT0kaXRlbWxpc3QgaXRlbT0iaXRlbSJ9CjxsaT57JGl0ZW0tPmRldGFpbGxpbmt9PC9saT4Key9mb3JlYWNofQo8L3VsPgp7aWYgJHBhZ2VtZW51fTxwPnskcGFnZW1lbnV9PC9wPnsvaWZ9Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/search_video.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgyPnskc2VhcmNodGl0bGV9OiB7JHdoYXR9PC9oMj4KPHRhYmxlPgo8dHI+PHRkPnskdmlkZW9pZF9sYWJlbH08L3RkPjx0ZD57JHZpZGVvaWRfaW5wdXR9PC90ZD48L3RyPgo8dHI+PHRkPnskZGVzY3JpcHRpb25fbGFiZWx9PC90ZD48dGQ+eyRkZXNjcmlwdGlvbl9pbnB1dH08L3RkPjwvdHI+Cjx0cj48dGQ+eyR0aHVtYm5haWxfbGFiZWx9PC90ZD48dGQ+eyR0aHVtYm5haWxfaW5wdXR9PC90ZD48L3RyPgo8dHI+PHRkPnskcGFyZW50X2xhYmVsfTwvdGQ+PHRkPnskcGFyZW50X2lucHV0fTwvdGQ+PC90cj4KPHRyPjx0ZD57JG5hbWVfbGFiZWx9PC90ZD48dGQ+eyRuYW1lX2lucHV0fTwvdGQ+PC90cj4KPHRyPjx0ZD57JGRhdGVfbW9kaWZpZWRfbGFiZWx9PC90ZD48dGQ+eyRkYXRlX21vZGlmaWVkX2lucHV0fTwvdGQ+PC90cj4KPC90YWJsZT4KPHA+eyRzdWJtaXR9PC9wPg==]]></data>
	</file>
	<file>
	  <filename>/vimeoplayer.module.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIE1vZHVsZTogdmltZW9wbGF5ZXINCiMgVmVyc2lvbjogMS4wLCANCiMNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwOCBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpDQojIFRoaXMgcHJvamVjdCJzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnDQojDQojIFRoaXMgbW9kdWxlIHdhcyBjcmVhdGVkIHdpdGggQ1RMTW9kdWxlTWFrZXIgMS44LjguMw0KIyBDVExNb2R1bGVNYWtlciB3YXMgY3JlYXRlZCBieSBQaWVycmUtTHVjIEdlcm1haW4gYW5kIGlzIHJlbGVhc2VkIHVuZGVyIEdOVQ0KIyBodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL2N0bG1vZHVsZW1ha2VyDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIw0KIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQ0KIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQ0KIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcg0KIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLg0KIw0KIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQ0KIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQpjbGFzcyB2aW1lb3BsYXllciBleHRlbmRzIENNU01vZHVsZQ0Kew0KCXZhciAkY3VycmVudHRyZWUgPSBmYWxzZTsNCgl2YXIgJGN1cnJlbnRwYWdlaW5kZXggPSAxOw0KCXZhciAkcGxjdXJyZW50ID0gYXJyYXkoKTsNCgkvL3ZhciAkVmlkZW9UaHVtYiA9IHVuc2VyaWFsaXplKGZpbGVfZ2V0X2NvbnRlbnRzKCJodHRwOi8vdmltZW8uY29tL2FwaS92Mi92aWRlby8kaW1naWQucGhwIikpOw0KCQ0KCWZ1bmN0aW9uIEdldE5hbWUoKQ0KCXsNCgkJcmV0dXJuICJ2aW1lb3BsYXllciI7DQoJfQ0KDQoJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCgkgICBHZXRGcmllbmRseU5hbWUoKQ0KCSAgIFRoaXMgY2FuIHJldHVybiBhbnkgc3RyaW5nLCBwcmVmZXJhYmx5IGEgbG9jYWxpemVkIG5hbWUNCgkgICBvZiB0aGUgbW9kdWxlLiBUaGlzIGlzIHRoZSBuYW1lIHRoYXQicyBzaG93biBpbiB0aGUNCgkgICBBZG1pbiBNZW51cyBhbmQgc2VjdGlvbiBwYWdlcyAoaWYgdGhlIG1vZHVsZSBoYXMgYW4gYWRtaW4NCgkgICBjb21wb25lbnQpLg0KCSAgIA0KCSAgIFNlZSB0aGUgbm90ZSBvbiBsb2NhbGl6YXRpb24gYXQgdGhlIHRvcCBvZiB0aGlzIGZpbGUuDQoJICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KCWZ1bmN0aW9uIEdldEZyaWVuZGx5TmFtZSgpDQoJew0KCQlyZXR1cm4gJHRoaXMtPkxhbmcoImZyaWVuZGx5bmFtZSIpOw0KCX0NCgkNCgkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KCSAgIEdldFZlcnNpb24oKQ0KCSAgIFRoaXMgY2FuIHJldHVybiBhbnkgc3RyaW5nLCBwcmVmZXJhYmx5IGEgbnVtYmVyIG9yDQoJICAgc29tZXRoaW5nIHRoYXQgbWFrZXMgc2Vuc2UgZm9yIGRlc2lnbmF0aW5nIGEgdmVyc2lvbi4NCgkgICBUaGUgQ01TIHdpbGwgdXNlIHRoaXMgdG8gaWRlbnRpZnkgd2hldGhlciBvciBub3QNCgkgICB0aGUgaW5zdGFsbGVkIHZlcnNpb24gb2YgdGhlIG1vZHVsZSBpcyBjdXJyZW50LCBhbmQNCgkgICB0aGUgbW9kdWxlIHdpbGwgdXNlIGl0IHRvIGZpZ3VyZSBvdXQgaG93IHRvIHVwZ3JhZGUNCgkgICBpdHNlbGYgaWYgcmVxdWVzdGVkLgkgICANCgkgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQoJZnVuY3Rpb24gR2V0VmVyc2lvbigpDQoJew0KCQlyZXR1cm4gIjEuMCI7DQoJfQ0KDQoNCgkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KCSAgIEdldERlcGVuZGVuY2llcygpDQoJICAgWW91ciBtb2R1bGUgbWF5IG5lZWQgYW5vdGhlciBtb2R1bGUgdG8gYWxyZWFkeSBiZSBpbnN0YWxsZWQNCgkgICBiZWZvcmUgeW91IGNhbiBpbnN0YWxsIGl0Lg0KCSAgIFRoaXMgbWV0aG9kIHJldHVybnMgYSBsaXN0IG9mIHRob3NlIGRlcGVuZGVuY2llcyBhbmQNCgkgICBtaW5pbXVtIHZlcnNpb24gbnVtYmVycyB0aGF0IHRoaXMgbW9kdWxlIHJlcXVpcmVzLg0KCSAgIA0KCSAgIEl0IHNob3VsZCByZXR1cm4gYW4gaGFzaCwgZWcuDQoJICAgcmV0dXJuIGFycmF5KCJzb21lbW9kdWxlIj0+IjEuMCIsICJvdGhlcm1vZHVsZSI9PiIxLjEiKTsNCgkgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQoJZnVuY3Rpb24gR2V0RGVwZW5kZW5jaWVzKCkNCgl7DQoJCXJldHVybiBhcnJheSgpOw0KCX0NCg0KCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoJICAgR2V0SGVscCgpDQoJICAgVGhpcyByZXR1cm5zIEhUTUwgaW5mb3JtYXRpb24gb24gdGhlIG1vZHVsZS4NCgkgICBUeXBpY2FsbHksIHlvdSJsbCB3YW50IHRvIGluY2x1ZGUgaW5mb3JtYXRpb24gb24gaG93IHRvDQoJICAgdXNlIHRoZSBtb2R1bGUuDQoJICAgDQoJICAgU2VlIHRoZSBub3RlIG9uIGxvY2FsaXphdGlvbiBhdCB0aGUgdG9wIG9mIHRoaXMgZmlsZS4NCgkgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQoJZnVuY3Rpb24gR2V0SGVscCgpDQoJew0KCQlyZXR1cm4gJHRoaXMtPkxhbmcoImhlbHAiKTsNCgl9DQoNCgkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KCSAgIEdldEF1dGhvcigpDQoJICAgVGhpcyByZXR1cm5zIGEgc3RyaW5nIHRoYXQgaXMgcHJlc2VudGVkIGluIHRoZSBNb2R1bGUNCgkgICBBZG1pbiBpZiB5b3UgY2xpY2sgb24gdGhlICJBYm91dCIgbGluay4NCgkgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQoJZnVuY3Rpb24gR2V0QXV0aG9yKCkNCgl7DQoJCXJldHVybiAiQ3JlYXRlZCBieSBNYXJ0aW4gKE1XKSB3aXRoIENUTE1vZHVsZU1ha2VyIDEuOC44LjMiOw0KCQkvLyBvZiBjb3Vyc2UgeW91IG1heSBjaGFuZ2UgdGhpcywgYnV0IGl0IHdvdWxkIGJlIG5pY2UNCgkJLy8gdG8ga2VlcCBhIG1lbnRpb24gb2YgdGhlIENUTE1vZHVsZU1ha2VyIHNvbWV3aGVyZQ0KCX0NCg0KDQoJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCgkgICBHZXRBdXRob3JFbWFpbCgpDQoJICAgVGhpcyByZXR1cm5zIGEgc3RyaW5nIHRoYXQgaXMgcHJlc2VudGVkIGluIHRoZSBNb2R1bGUNCgkgICBBZG1pbiBpZiB5b3UgY2xpY2sgb24gdGhlICJBYm91dCIgbGluay4gSXQgaGVscHMgdXNlcnMNCgkgICBvZiB5b3VyIG1vZHVsZSBnZXQgaW4gdG91Y2ggd2l0aCB5b3UgdG8gc2VuZCBidWcgcmVwb3J0cywNCgkgICBxdWVzdGlvbnMsIGNhc2VzIG9mIGJlZXIsIGFuZC9vciBsYXJnZSBzdW1zIG9mIG1vbmV5Lg0KCSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCglmdW5jdGlvbiBHZXRBdXRob3JFbWFpbCgpDQoJew0KCQlyZXR1cm4gIm13Y291cnRlbmF5QHlhaG9vLmNvbSI7DQoJfQ0KDQoNCgkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KCSAgIElzUGx1Z2luTW9kdWxlKCkNCgkgICBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdHJ1ZSBvciBmYWxzZSwgZGVwZW5kaW5nIHVwb24NCgkgICB3aGV0aGVyIHVzZXJzIGNhbiBpbmNsdWRlIHRoZSBtb2R1bGUgaW4gYSBwYWdlIG9yDQoJICAgdGVtcGxhdGUgdXNpbmcgYSBzbWFydHkgdGFnIG9mIHRoZSBmb3JtDQoJICAge2Ntc19tb2R1bGUgbW9kdWxlPSJQcm9kIiBwYXJhbTE9dmFsIHBhcmFtMj12YWwuLi59DQoJICAgDQoJICAgSWYgeW91ciBtb2R1bGUgZG9lcyBub3QgZ2V0IGluY2x1ZGVkIGluIHBhZ2VzIG9yDQoJICAgdGVtcGxhdGVzLCByZXR1cm4gImZhbHNlIiBoZXJlLg0KCSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCglmdW5jdGlvbiBJc1BsdWdpbk1vZHVsZSgpDQoJew0KCQlyZXR1cm4gdHJ1ZTsNCgl9DQoNCg0KCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoJICAgSGFzQWRtaW4oKQ0KCSAgIFRoaXMgZnVuY3Rpb24gcmV0dXJucyBhIGJvb2xlYW4gdmFsdWUsIGRlcGVuZGluZyBvbg0KCSAgIHdoZXRoZXIgeW91ciBtb2R1bGUgYWRkcyBhbnl0aGluZyB0byB0aGUgQWRtaW4gYXJlYSBvZg0KCSAgIHRoZSBzaXRlLiBGb3IgdGhlIHJlc3Qgb2YgdGhlc2UgY29tbWVudHMsIEkibGwgYmUgY2FsbGluZw0KCSAgIHRoZSBhZG1pbiBwYXJ0IG9mIHlvdXIgbW9kdWxlIHRoZSAiQWRtaW4gUGFuZWwiIGZvcg0KCSAgIHdhbnQgb2YgYSBiZXR0ZXIgdGVybS4NCgkgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQoJZnVuY3Rpb24gSGFzQWRtaW4oKSB7CXJldHVybiB0cnVlOwl9DQoJZnVuY3Rpb24gR2V0QWRtaW5TZWN0aW9uKCkge3JldHVybiAiY29udGVudCI7fQ0KCWZ1bmN0aW9uIEdldEFkbWluRGVzY3JpcHRpb24oKSB7cmV0dXJuICR0aGlzLT5MYW5nKCJhZG1pbmRlc2NyaXB0aW9uIik7fQ0KDQoJZnVuY3Rpb24gVmlzaWJsZVRvQWRtaW5Vc2VyKCl7DQoJCXJldHVybiAoJHRoaXMtPkNoZWNrUGVybWlzc2lvbigidmltZW9wbGF5ZXJfbm9ybWFsdXNlciIpIHx8ICR0aGlzLT5DaGVja1Blcm1pc3Npb24oInZpbWVvcGxheWVyX2FkdmFuY2VkIikpOw0KCX0NCgkNCgkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KCSAgIE1vZHVsZSBDb25zdHJ1Y3RvciANCgktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KCWZ1bmN0aW9uIHZpbWVvcGxheWVyKCkNCgl7DQoJCWdsb2JhbCAkZ0NtczsNCiAgICAJJHNtYXJ0eSA9JiAkZ0Ntcy0+R2V0U21hcnR5KCk7DQoJCSRzbWFydHktPnJlZ2lzdGVyX2Z1bmN0aW9uKCJ2aW1lb3BsYXllcl9icmVhZGNydW1icyIsIGFycmF5KCYkdGhpcywiZnVuY3Rpb25fbW9kYnJlYWRjcnVtYnMiKSk7DQoJCSRzbWFydHktPnJlZ2lzdGVyX2Z1bmN0aW9uKCJ2aW1lb3BsYXllcl9nZXRfbGV2ZWxpdGVtIiwgYXJyYXkoJiR0aGlzLCJmdW5jdGlvbl9nZXRfbGV2ZWxpdGVtIikpOw0KCQlwYXJlbnQ6OkNNU01vZHVsZSgpOw0KCX0NCgkNCgkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KCSAgIFNldFBhcmFtZXRlcnMoKQ0KCSAgIFRoaXMgZnVuY3Rpb24gZW5hYmxlcyB5b3UgdG8gY3JlYXRlIG1hcHBpbmdzIGZvcg0KCSAgIHlvdXIgbW9kdWxlIHdoZW4gdXNpbmcgIlByZXR0eSBVcmxzIi4NCgkgICANCgkgICBUeXBpY2FsbHksIG1vZHVsZXMgY3JlYXRlIGludGVybmFsIGxpbmtzIHRoYXQgaGF2ZQ0KCSAgIGJpZyB1Z2x5IHN0cmluZ3MgYWxvbmcgdGhlIGxpbmVzIG9mOg0KCSAgIGluZGV4LnBocD9tYWN0PU1vZE5hbWUsY250bnQwMSxhY3Rpb25OYW1lLDAmY250bnQwMXBhcmFtMT0xJmNudG50MDFwYXJhbTI9MiZjbnRudDAxcmV0dXJuaWQ9Mw0KCSAgIA0KCSAgIFlvdSBtaWdodCBwcmVmZXIgdGhlc2UgdG8gbG9vayBsaWtlOg0KCSAgIC9Nb2R1bGVGdW5jdGlvbi8yLzMNCgkgICANCgkgICBUbyBkbyB0aGlzLCB5b3UgaGF2ZSB0byByZWdpc3RlciByb3V0ZXMgYW5kIG1hcA0KCSAgIHlvdXIgcGFyYW1ldGVycyBpbiBhIHdheSB0aGF0IHRoZSBBUEkgd2lsbCBiZSBhYmxlDQoJICAgdG8gdW5kZXJzdGFuZC4NCg0KCSAgIEFsc28gbm90ZSB0aGF0IGFueSBjYWxscyB0byBDcmVhdGVMaW5rIHdpbGwgbmVlZCB0bw0KCSAgIGJlIHVwZGF0ZWQgdG8gcGFzcyB0aGUgcHJldHR5IHVybCBwYXJhbWV0ZXIuDQoJICAgDQoJICAgU2luY2UgdGhlIFNrZWxldG9uIGRvZXNuInQgcmVhbGx5IGNyZWF0ZSBhbnkgbGlua3MsDQoJICAgdGhlIHNlY3Rpb24gYmVsb3cgaXMgY29tbWVudGVkIG91dCwgYnV0IHlvdSBjYW4NCgkgICB1c2UgaXQgdG8gZmlndXJlIG91dCBwcmV0dHkgdXJscy4NCgkgICANCgkgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KCWZ1bmN0aW9uIFNldFBhcmFtZXRlcnMoKQ0KCXsNCg0KCQkvLyB0aGVzZSBhcmUgZm9yIGludGVybmFsIHByZXR0eSBVUkxTLg0KCQkvLyB5b3UgbWF5IGNoYW5nZSB0aGVzZSwgYnV0IHlvdSB3aWxsIGFsc28gbmVlZCB0byBjaGFuZ2UgdGhlIEJ1aWxkUHJldHR5VVJMcyBmdW5jdGlvbiBiZWxvdyBhY2NvcmRpbmdseQ0KCQkvLyBzZWUgRkFRIGZvciBtb3JlIGluZm8gb24gdGhpcw0KCQkkZGVmYWN0ID0gYXJyYXkoImFjdGlvbiI9PiJkZWZhdWx0Iik7DQoJCSR0aGlzLT5SZWdpc3RlclJvdXRlKCIvW3ZWXWltZW9wbGF5ZXJcLyhbUXFddWVyeSlcLyg/UDxxdWVyeT5bMC05XSspXC8oP1A8cmV0dXJuaWQ+WzAtOV0rKSQvIiwgJGRlZmFjdCk7DQoJCSR0aGlzLT5SZWdpc3RlclJvdXRlKCIvW3ZWXWltZW9wbGF5ZXJcLyhbUXFddWVyeSlcLyg/UDxxdWVyeT5bMC05XSspXC8oP1A8cGFnZWluZGV4PlswLTldKylcLyg/UDxuYnBlcnBhZ2U+WzAtOV0rKVwvKD9QPHJldHVybmlkPlswLTldKykkLyIsICRkZWZhY3QpOw0KCQkkdGhpcy0+UmVnaXN0ZXJSb3V0ZSgiL1t2Vl1pbWVvcGxheWVyXC8oW0RkXWV0YWlsKVwvKD9QPGFsaWFzPlteXC9dKylcLyg/UDxyZXR1cm5pZD5bMC05XSspJC8iLCAkZGVmYWN0KTsNCgkJJHRoaXMtPlJlZ2lzdGVyUm91dGUoIi9bdlZdaW1lb3BsYXllclwvKD9QPHdoYXQ+W15cL10rKVwvKD9QPHJldHVybmlkPlswLTldKykkLyIsICRkZWZhY3QpOw0KCQkkdGhpcy0+UmVnaXN0ZXJSb3V0ZSgiL1t2Vl1pbWVvcGxheWVyXC8oP1A8d2hhdD5bXlwvXSspXC8oP1A8cGFyZW50PlteXC9dKylcLyg/UDxyZXR1cm5pZD5bMC05XSspJC8iLCAkZGVmYWN0KTsNCgkJJHRoaXMtPlJlZ2lzdGVyUm91dGUoIi9bdlZdaW1lb3BsYXllclwvKD9QPHdoYXQ+W15cL10rKVwvKD9QPHBhZ2VpbmRleD5bMC05XSspXC8oP1A8bmJwZXJwYWdlPlswLTldKylcLyg/UDxyZXR1cm5pZD5bMC05XSspJC8iLCAkZGVmYWN0KTsNCgkJJHRoaXMtPlJlZ2lzdGVyUm91dGUoIi9bdlZdaW1lb3BsYXllclwvKD9QPHdoYXQ+W15cL10rKVwvKD9QPHBhcmVudD5bXlwvXSspXC8oP1A8cGFnZWluZGV4PlswLTldKylcLyg/UDxuYnBlcnBhZ2U+WzAtOV0rKVwvKD9QPHJldHVybmlkPlswLTldKykkLyIsICRkZWZhY3QpOw0KCQ0KCQkkdGhpcy0+UmVzdHJpY3RVbmtub3duUGFyYW1zKCk7DQoJCQ0KCQkkdGhpcy0+Q3JlYXRlUGFyYW1ldGVyKCJhY3Rpb24iLCAiZGVmYXVsdCIsICR0aGlzLT5MYW5nKCJwaGVscF9hY3Rpb24iKSk7DQoJCSR0aGlzLT5DcmVhdGVQYXJhbWV0ZXIoIndoYXQiLCAiIiwgJHRoaXMtPkxhbmcoInBoZWxwX3doYXQiKSk7DQoJCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCJ3aGF0IixDTEVBTl9TVFJJTkcpOw0KCQkkdGhpcy0+Q3JlYXRlUGFyYW1ldGVyKCJhbGlhcyIsICIiLCAkdGhpcy0+TGFuZygicGhlbHBfYWxpYXMiKSk7DQoJCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCJhbGlhcyIsQ0xFQU5fU1RSSU5HKTsNCgkJJHRoaXMtPkNyZWF0ZVBhcmFtZXRlcigic2hvd2RlZmF1bHQiLCBmYWxzZSwgJHRoaXMtPkxhbmcoInBoZWxwX3Nob3dkZWZhdWx0IikpOw0KCQkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgic2hvd2RlZmF1bHQiLENMRUFOX0lOVCk7DQoJCSR0aGlzLT5DcmVhdGVQYXJhbWV0ZXIoInBhcmVudCIsICIiLCAkdGhpcy0+TGFuZygicGhlbHBfcGFyZW50IikpOw0KCQkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgicGFyZW50IixDTEVBTl9TVFJJTkcpOw0KCQkkdGhpcy0+Q3JlYXRlUGFyYW1ldGVyKCJsaW1pdCIsIDAsICR0aGlzLT5MYW5nKCJwaGVscF9saW1pdCIpKTsNCgkJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoImxpbWl0IixDTEVBTl9JTlQpOw0KCQkkdGhpcy0+Q3JlYXRlUGFyYW1ldGVyKCJuYnBlcnBhZ2UiLCAwLCAkdGhpcy0+TGFuZygicGhlbHBfbmJwZXJwYWdlIikpOw0KCQkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgibmJwZXJwYWdlIixDTEVBTl9TVFJJTkcpOw0KCQkkdGhpcy0+Q3JlYXRlUGFyYW1ldGVyKCJvcmRlcmJ5IiwgMCwgJHRoaXMtPkxhbmcoInBoZWxwX29yZGVyYnkiKSk7DQoJCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCJvcmRlcmJ5IixDTEVBTl9TVFJJTkcpOw0KCQkkdGhpcy0+Q3JlYXRlUGFyYW1ldGVyKCJkZXRhaWxwYWdlIiwgIiIsICR0aGlzLT5MYW5nKCJwaGVscF9kZXRhaWxwYWdlIikpOw0KCQkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgiZGV0YWlscGFnZSIsQ0xFQU5fU1RSSU5HKTsNCgkJJHRoaXMtPkNyZWF0ZVBhcmFtZXRlcigicmFuZG9tIiwgMCwgJHRoaXMtPkxhbmcoInBoZWxwX3JhbmRvbSIpKTsNCgkJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoInJhbmRvbSIsQ0xFQU5fSU5UKTsNCgkJJHRoaXMtPkNyZWF0ZVBhcmFtZXRlcigibGlzdHRlbXBsYXRlIiwgIiIsICR0aGlzLT5sYW5nKCJwaGVscF9saXN0dGVtcGxhdGUiKSk7DQoJCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCJsaXN0dGVtcGxhdGUiLENMRUFOX1NUUklORyk7DQoJCSR0aGlzLT5DcmVhdGVQYXJhbWV0ZXIoImZpbmFsdGVtcGxhdGUiLCAiIiwgJHRoaXMtPmxhbmcoInBoZWxwX2ZpbmFsdGVtcGxhdGUiKSk7DQoJCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCJmaW5hbHRlbXBsYXRlIixDTEVBTl9TVFJJTkcpOw0KCQkkdGhpcy0+Q3JlYXRlUGFyYW1ldGVyKCJmb3JjZWxpc3QiLCAiMCIsICR0aGlzLT5sYW5nKCJwaGVscF9mb3JjZWxpc3QiKSk7DQoJCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCJmb3JjZWxpc3QiLENMRUFOX1NUUklORyk7DQoJCSR0aGlzLT5DcmVhdGVQYXJhbWV0ZXIoImlubGluZSIsIDAsICR0aGlzLT5sYW5nKCJwaGVscF9pbmxpbmUiKSk7DQoJCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCJpbmxpbmUiLENMRUFOX1NUUklORyk7DQoJCSR0aGlzLT5DcmVhdGVQYXJhbWV0ZXIoInNlYXJjaG1vZGUiLCAiYWR2YW5jZWQiLCAkdGhpcy0+bGFuZygicGhlbHBfc2VhcmNobW9kZSIpKTsNCgkJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoInNlYXJjaG1vZGUiLENMRUFOX1NUUklORyk7DQoJCSR0aGlzLT5DcmVhdGVQYXJhbWV0ZXIoInF1ZXJ5IiwgMCwgJHRoaXMtPmxhbmcoInBoZWxwX3F1ZXJ5IikpOw0KCQkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgicXVlcnkiLENMRUFOX1NUUklORyk7DQoJCSR0aGlzLT5DcmVhdGVQYXJhbWV0ZXIoInRvYWN0aW9uIiwgIiIsICR0aGlzLT5MYW5nKCJwaGVscF90b2FjdGlvbiIpKTsNCgkJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoInRvYWN0aW9uIixDTEVBTl9TVFJJTkcpOw0KCQkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgicGFnZWluZGV4IixDTEVBTl9JTlQpOw0KDQoJCS8vIGZvciB0aGUgc2VhcmNoIGZvcm0gKHRyaWNrIGZyb20gaWt1bGlzKSA6DQoJCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKENMRUFOX1JFR0VYUC4iL2RhdGVfLiovIixDTEVBTl9TVFJJTkcpOw0KCQkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZShDTEVBTl9SRUdFWFAuIi9maWVsZF8uKi8iLENMRUFOX1NUUklORyk7DQoJCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKENMRUFOX1JFR0VYUC4iL2NvbXBhcmVfLiovIixDTEVBTl9TVFJJTkcpOw0KCQkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgic3VibWl0c2VhcmNoIixDTEVBTl9TVFJJTkcpOw0KCQkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgic2VhcmNoZmllbGQiLENMRUFOX1NUUklORyk7DQoJCQ0KCX0NCg0KICAgIGZ1bmN0aW9uIEdldEV2ZW50RGVzY3JpcHRpb24oJGV2ZW50bmFtZSkNCiAgICB7DQoJCSRldmVudG5hbWUgPSBzdHJfcmVwbGFjZSgidmltZW9wbGF5ZXIiLCAiIiwgJGV2ZW50bmFtZSk7DQoJCXJldHVybiAkdGhpcy0+bGFuZygiZXZlbnRkZXNjIi4kZXZlbnRuYW1lKTsNCiAgICB9DQogICAgDQoJZnVuY3Rpb24gSW5zdGFsbFBvc3RNZXNzYWdlKCkNCgl7DQoJCXJldHVybiAkdGhpcy0+TGFuZygicG9zdGluc3RhbGwiKTsNCgl9DQoJZnVuY3Rpb24gVW5pbnN0YWxsUG9zdE1lc3NhZ2UoKQ0KCXsNCgkJcmV0dXJuICR0aGlzLT5MYW5nKCJwb3N0dW5pbnN0YWxsIik7DQoJfQ0KCWZ1bmN0aW9uIFVuaW5zdGFsbFByZU1lc3NhZ2UoKQ0KCXsNCgkJcmV0dXJuICR0aGlzLT5MYW5nKCJyZWFsbHlfdW5pbnN0YWxsIik7DQoJfQ0KDQoNCgkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KCSAgIEluc3RhbGwoKQ0KCSAgIFdoZW4geW91ciBtb2R1bGUgaXMgaW5zdGFsbGVkLCB5b3UgbWF5IG5lZWQgdG8gZG8gc29tZQ0KCSAgIHNldHVwLiBUeXBpY2FsIHRoaW5ncyB0aGF0IGhhcHBlbiBoZXJlIGFyZSB0aGUgY3JlYXRpb24NCgkgICBhbmQgcHJlcG9wdWxhdGlvbiBvZiBkYXRhYmFzZSB0YWJsZXMsIGRhdGFiYXNlIHNlcXVlbmNlcywNCgkgICBwZXJtaXNzaW9ucywgcHJlZmVyZW5jZXMsIGV0Yy4NCgkgICAJICAgDQoJICAgRm9yIGluZm9ybWF0aW9uIG9uIHRoZSBjcmVhdGlvbiBvZiBkYXRhYmFzZSB0YWJsZXMsDQoJICAgY2hlY2sgb3V0IHRoZSBBRE9EQiBEYXRhIERpY3Rpb25hcnkgcGFnZSBhdA0KCSAgIGh0dHA6Ly9waHBsZW5zLmNvbS9sZW5zL2Fkb2RiL2RvY3MtZGF0YWRpY3QuaHRtDQoJICAgDQoJICAgVGhpcyBmdW5jdGlvbiBjYW4gcmV0dXJuIGEgc3RyaW5nIGluIGNhc2Ugb2YgYW55IGVycm9yLA0KCSAgIGFuZCBDTVMgd2lsbCBub3QgY29uc2lkZXIgdGhlIG1vZHVsZSBpbnN0YWxsZWQuDQoJICAgU3VjY2Vzc2Z1bCBpbnN0YWxscyBzaG91bGQgcmV0dXJuIEZBTFNFIG9yIG5vdGhpbmcgYXQgYWxsLg0KCSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCglmdW5jdGlvbiBJbnN0YWxsKCkNCgl7DQoJCWdsb2JhbCAkZ0NtczsNCgkJcmVxdWlyZSAibWV0aG9kLmluc3RhbGwucGhwIjsNCgl9DQoNCgkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KCSAgIFVuaW5zdGFsbCgpDQoJICAgU29tZXRpbWVzLCBhbiBleGNlcHRpb25hbGx5IHVuZW5saWdodGVuZWQgb3IgaWdub3JhbnQNCgkgICBhZG1pbiB3aWxsIHdpc2ggdG8gdW5pbnN0YWxsIHlvdXIgbW9kdWxlLiBXaGlsZSBpdA0KCSAgIHdvdWxkIGJlIGJlc3QgdG8gbGF5IGludG8gdGhlc2UgaWRpb3RzIHdpdGggYSBjbHVlc3RpY2ssDQoJICAgd2Ugd2lsbCBkbyB0aGUgbWFnbmFuaW1vdXMgdGhpbmcgYW5kIHJlbW92ZSB0aGUgbW9kdWxlDQoJICAgYW5kIGNsZWFuIHVwIHRoZSBkYXRhYmFzZSwgcGVybWlzc2lvbnMsIGFuZCBwcmVmZXJlbmNlcw0KCSAgIHRoYXQgYXJlIHNwZWNpZmljIHRvIGl0Lg0KCSAgIFRoaXMgaXMgdGhlIG1ldGhvZCB3aGVyZSB3ZSBkbyB0aGlzLg0KCSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCglmdW5jdGlvbiBVbmluc3RhbGwoKQ0KCXsNCgkJZ2xvYmFsICRnQ21zOw0KCQlyZXF1aXJlICJtZXRob2QudW5pbnN0YWxsLnBocCI7DQoJfQ0KDQoNCiAgICBmdW5jdGlvbiBTZWFyY2hSZXN1bHQoJHJldHVybmlkLCAkaXRlbWlkLCAkbGV2ZWwgPSAiIikNCiAgICB7DQoJCSRyZXN1bHQgPSBhcnJheSgpOw0KCQkkd2FudGVkcGFyYW0gPSBmYWxzZTsNCgkJJG5ld3BhcmFtcyA9IGFycmF5KCk7DQoJCWlmKCRsZXZlbCA9PSAidmlkZW8iKXsNCgkJCS8vIHdlIHNlZWsgYW4gZWxlbWVudCBvZiB0aGUgbGFzdCBsZXZlbCwgYW5kIHdpbGwgZGlzcGxheSB0aGUgZGV0YWlsIHZpZXcNCgkJCSR3YW50ZWRwYXJhbSA9ICJhbGlhcyI7DQoJCX1lbHNlew0KCQkJaWYoJG5ld3BhcmFtc1sid2hhdCJdID0gJHRoaXMtPmdldF9uZXh0bGV2ZWwoJGxldmVsKSl7DQoJCQkvLyB3ZSBzZWVrIGFuIGVsZW1lbnQgb2YgYW5vdGhlciBsZXZlbCwgYW5kIHdpbGwgZGlzcGxheSB0aGUgbGlzdCB2aWV3IG9mIGl0cyBjaGlsZHJlbg0KCQkJCSR3YW50ZWRwYXJhbSA9ICJwYXJlbnQiOw0KCQkJfQ0KCQl9DQoJCWlmICgkd2FudGVkcGFyYW0pew0KCQkJJHRhYmxlbmFtZSA9IGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3ZpbWVvcGxheWVyXyIuJGxldmVsOw0KCQkJJGRiID0mICR0aGlzLT5HZXREYigpOw0KCQkJJHF1ZXJ5ID0gIlNFTEVDVCBuYW1lLCBhbGlhcyBGUk9NICR0YWJsZW5hbWUgV0hFUkUgaWQgPSA/IjsNCgkJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSggJHF1ZXJ5LCBhcnJheSggJGl0ZW1pZCApICk7DQoJCQlpZiAoJGRicmVzdWx0KXsNCgkJCQkkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpOw0KCQkJCSRuZXdwYXJhbXNbJHdhbnRlZHBhcmFtXSA9ICRyb3dbImFsaWFzIl07DQoNCgkJCQkvLzAgcG9zaXRpb24gaXMgdGhlIHByZWZpeCBkaXNwbGF5ZWQgaW4gdGhlIGxpc3QgcmVzdWx0cy4NCgkJCQkkcmVzdWx0WzBdID0gJHRoaXMtPkdldEZyaWVuZGx5TmFtZSgpOw0KDQoJCQkJLy8xIHBvc2l0aW9uIGlzIHRoZSB0aXRsZQ0KCQkJCSRyZXN1bHRbMV0gPSAkcm93WyJuYW1lIl07DQoJCQ0KCQkJCS8vMiBwb3NpdGlvbiBpcyB0aGUgVVJMIHRvIHRoZSB0aXRsZS4NCgkJCQkkcmVzdWx0WzJdID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAiZGVmYXVsdCIsICRyZXR1cm5pZCwgIiIsICRuZXdwYXJhbXMsICIiLCB0cnVlLCBmYWxzZSwgIiIsIGZhbHNlLCAkdGhpcy0+QnVpbGRQcmV0dHlVcmxzKCRuZXdwYXJhbXMsICRyZXR1cm5pZCkpOw0KCQkJfQ0KCQl9DQoNCgkJcmV0dXJuICRyZXN1bHQ7DQoJfQ0KCQ0KCWZ1bmN0aW9uIFNlYXJjaFJlaW5kZXgoJiRtb2R1bGUpDQogICAgew0KCQkkZGIgPSYgJHRoaXMtPkdldERiKCk7DQoJCWlmKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCJzZWFyY2htb2R1bGVfaW5kZXhfY2F0ZWdvcnkiLGZhbHNlKSl7DQoJCQkkaXRlbWxpc3QgPSAkdGhpcy0+Z2V0X2xldmVsX2NhdGVnb3J5KCk7DQoJCQlmb3JlYWNoKCRpdGVtbGlzdCBhcyAkaXRlbSl7DQoJCQkJJHRleHQgPSAiJGl0ZW0tPm5hbWUiOw0KCQkJCSRtb2R1bGUtPkFkZFdvcmRzKCR0aGlzLT5HZXROYW1lKCksICRpdGVtLT5pZCwgImNhdGVnb3J5IiwgJHRleHQsIE5VTEwpOw0KCQkJfQ0KCQl9DQoJCWlmKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCJzZWFyY2htb2R1bGVfaW5kZXhfdmlkZW8iLGZhbHNlKSl7DQoJCQkkaXRlbWxpc3QgPSAkdGhpcy0+Z2V0X2xldmVsX3ZpZGVvKCk7DQoJCQlmb3JlYWNoKCRpdGVtbGlzdCBhcyAkaXRlbSl7DQoJCQkJJHRleHQgPSAiJGl0ZW0tPm5hbWUiOw0KCQkJCSRtb2R1bGUtPkFkZFdvcmRzKCR0aGlzLT5HZXROYW1lKCksICRpdGVtLT5pZCwgInZpZGVvIiwgJHRleHQsIE5VTEwpOw0KCQkJfQ0KCQl9DQoJCQ0KICAgIH0JDQoNCi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KTk9UIFBBUlQgT0YgVEhFIE5PUk1BTCBNT0RVTEUgQVBJDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCg0KCWZ1bmN0aW9uIHBsY3JlYXRlYWxpYXMoJG5hbWUpew0KCQkvLyBjcmVhdGVzIHRoZSBhbGlhcyBmb3IgbmV3IGVsZW1lbnRzLi4uDQoJCS8vIGFzIGEgc3VnZ2VzdGlvbiBmcm9tIEFNVCwgdGhlIGZpcnN0IHBhcnQgZGVhbHMgd2l0aCBzbWFydCBxdW90ZXMNCiAJCSRzZWFyY2ggPSBhcnJheShjaHIoMHhlMikgLiBjaHIoMHg4MCkgLiBjaHIoMHg5OCksDQoJCQkJCQkgIGNocigweGUyKSAuIGNocigweDgwKSAuIGNocigweDk5KSwNCgkJCQkJCSAgY2hyKDB4ZTIpIC4gY2hyKDB4ODApIC4gY2hyKDB4OWMpLA0KCQkJCQkJICBjaHIoMHhlMikgLiBjaHIoMHg4MCkgLiBjaHIoMHg5ZCksDQoJCQkJCQkgIGNocigweGUyKSAuIGNocigweDgwKSAuIGNocigweDkzKSwNCgkJCQkJCSAgY2hyKDB4ZTIpIC4gY2hyKDB4ODApIC4gY2hyKDB4OTQpKTsNCiAJCSRuYW1lID0gc3RyX3JlcGxhY2UoJHNlYXJjaCwgIiIsICRuYW1lKTsNCiAJCS8vIHRoZSBzZWNvbmQgcGFydCB1c2VzIHRoZSBjbXMgdmVyc2lvbg0KIAkJJGFsaWFzID0gbXVuZ2Vfc3RyaW5nX3RvX3VybCgkbmFtZSwgZmFsc2UpOw0KIAkJcmV0dXJuICRhbGlhczsNCgl9IA0KCQkNCglmdW5jdGlvbiBjaGVja2FsaWFzKCRkYnRhYmxlLCAkYWxpYXMsICRpdGVtaWQ9ZmFsc2UsICRpZGZpZWxkPSJpZCIsICRhbGlhc2ZpZWxkPSJhbGlhcyIpew0KCQkvLyBjaGVja3MgaWYgdGhpcyBhbGlhcyBhbHJlYWR5IGV4aXN0cyBpbiB0aGUgbGV2ZWwNCgkJJHF1ZXJ5ID0gIlNFTEVDVCAiLiRpZGZpZWxkLiIgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4kZGJ0YWJsZS4iIFdIRVJFICIuJGFsaWFzZmllbGQuIiA9ID8iOw0KCQlpZigkaXRlbWlkKSAkcXVlcnkgLj0gIiBBTkQgIi4kaWRmaWVsZC4iIT0iLiRpdGVtaWQ7DQoJCSRkYiA9ICR0aGlzLT5HZXREYigpOw0KCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LGFycmF5KCRhbGlhcykpOw0KCQkkdGFyZ2V0aWQgPSAwOw0KCQlpZigkZGJyZXN1bHQgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkgJHRhcmdldGlkID0gJHJvd1siaWQiXTsNCgkJcmV0dXJuICgkdGFyZ2V0aWQgPT0gMCk7DQoJfQ0KDQogICAgZnVuY3Rpb24gZ2V0RGVmYXVsdFRlbXBsYXRlcygpew0KICAgIAkvLyByZXR1cm5zIGFuIGFycmF5IG9mIHRoZSB0ZW1wbGF0ZXMgdGhhdCBhcmUgc2VsZWN0ZWQgYXMgZGVmYXVsdCAoanVzdCBzbyB0aGF0IHdlIGRvbid0IGRlbGV0ZSB0aGVtKQ0KCSAgICRyZXN1bHQgPSBhcnJheSgpOw0KCSAgICRyZXN1bHRbXSA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCJmaW5hbHRlbXBsYXRlIik7DQoJICAgJHJlc3VsdFtdID0gJHRoaXMtPkdldFByZWZlcmVuY2UoInNlYXJjaHJlc3VsdHN0ZW1wbGF0ZSIpOw0KCSAgICRyZXN1bHRbXSA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCJsaXN0dGVtcGxhdGVfY2F0ZWdvcnkiKTsNCgkgICAkcmVzdWx0W10gPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgibGlzdHRlbXBsYXRlX3ZpZGVvIik7DQoJICAgcmV0dXJuICRyZXN1bHQ7DQogICAgfQ0KDQoJZnVuY3Rpb24gQnVpbGRQcmV0dHlVcmxzKCRwYXJhbXMsICRyZXR1cm5pZD0tMSl7DQoJCS8vIHRyYW5zZm9ybXMgZ2l2ZW4gcGFyYW1zIGludG8gYSBwcmV0dHkgdXJsDQoJCSRwcmV0dHl1cmwgPSAidmltZW9wbGF5ZXIvIjsNCgkJaWYoaXNzZXQoJHBhcmFtc1sicXVlcnkiXSkpew0KCQkJJHByZXR0eXVybCAuPSAicXVlcnkvIi4kcGFyYW1zWyJxdWVyeSJdOwkNCgkJfWVsc2VpZihpc3NldCgkcGFyYW1zWyJhbGlhcyJdKSl7DQoJCQkkcHJldHR5dXJsIC49ICJkZXRhaWwvIi4kcGFyYW1zWyJhbGlhcyJdOw0KCQl9ZWxzZWlmKGlzc2V0KCRwYXJhbXNbInBhcmVudCJdKSl7DQoJCQkkcHJldHR5dXJsIC49ICRwYXJhbXNbIndoYXQiXS4iLyIuJHBhcmFtc1sicGFyZW50Il07DQoJCX1lbHNlew0KCQkJJHByZXR0eXVybCAuPSAkcGFyYW1zWyJ3aGF0Il07DQoJCX0NCgkJaWYoIWlzc2V0KCRwYXJhbXNbImFsaWFzIl0pICYmIGlzc2V0KCRwYXJhbXNbInBhZ2VpbmRleCJdKSAmJiBpc3NldCgkcGFyYW1zWyJuYnBlcnBhZ2UiXSkpCSRwcmV0dHl1cmwgLj0gIi8iLiRwYXJhbXNbInBhZ2VpbmRleCJdLiIvIi4kcGFyYW1zWyJuYnBlcnBhZ2UiXTsNCgkJJHByZXR0eXVybCAuPSAiLyIuJHJldHVybmlkOw0KCQlyZXR1cm4gJHByZXR0eXVybDsNCgl9DQoNCglmdW5jdGlvbiBEb0FjdGlvbigkYWN0aW9uLCAkaWQsICRwYXJhbXMsICRyZXR1cm5pZD0tMSl7DQoJCWdsb2JhbCAkZ0NtczsNCgkJDQoJCXN3aXRjaCgkYWN0aW9uKXsNCgkJCWNhc2UgImxpbmsiOg0KCQkJCSR0b2FjdGlvbiA9IGlzc2V0KCRwYXJhbXNbInRvYWN0aW9uIl0pPyRwYXJhbXNbInRvYWN0aW9uIl06ImRlZmF1bHQiOw0KCQkJCWVjaG8gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCR0b2FjdGlvbiwkcmV0dXJuaWQsIiIsJHBhcmFtcywiIix0cnVlKTsNCgkJCQlicmVhazsNCgkJCWNhc2UgImJyZWFkY3J1bWJzIjoNCgkJCQkkc21hcnR5ID0mICRnQ21zLT5HZXRTbWFydHkoKTsNCgkJCQkkdGhpcy0+ZnVuY3Rpb25fbW9kYnJlYWRjcnVtYnMoJHBhcmFtcywgJHNtYXJ0eSk7DQoJCQkJYnJlYWs7DQoJCQljYXNlICJjaGFuZ2VwcmVmZXJlbmNlcyI6DQoJCQkJaWYoISR0aGlzLT5DaGVja1Blcm1pc3Npb24oInZpbWVvcGxheWVyX2FkdmFuY2VkIikpew0KCQkJCQkkdGhpcy0+UmVkaXJlY3QoJGlkLCAiZGVmYXVsdGFkbWluIiwgJHJldHVybmlkLCBhcnJheSgibW9kdWxlX21lc3NhZ2UiPT4kdGhpcy0+TGFuZygiZXJyb3JfZGVuaWVkIikpKTsNCgkJCQkJYnJlYWs7DQoJCQkJfQ0KCQkJCSRwcmVmcyA9IGFycmF5KCJyZXN0cmljdF9wZXJtaXNzaW9ucyIsInVzZV9oaWVyYXJjaHkiLCJvcmRlcmJ5bmFtZSIsImRpc3BsYXlfZmlsdGVyIiwiZGlzcGxheV9pbnN0YW50c2VhcmNoIiwiZGlzcGxheV9pbnN0YW50c29ydCIsImVkaXRhYmxlX2FsaWFzZXMiLCJhdXRvaW5jcmVtZW50X2FsaWFzIiwiYWxsb3dfc3FsIiwiZm9yY2VfbGlzdCIsImRlbGV0ZV9maWxlcyIsInRhYmRpc3BsYXlfdGVtcGxhdGVzIiwidGFiZGlzcGxheV9maWVsZG9wdGlvbnMiLCJ0YWJkaXNwbGF5X3F1ZXJpZXMiLCJzaG93dGh1bWJuYWlscyIsImZlX3d5c2l3eWciLCJmZV9kZWNvZGVlbnRpdGllcyIsImZlX2FsbG93ZmlsZXMiLCJmZV9hbGxvd25hbWVjaGFuZ2UiLCJmZV9hbGxvd2FkZG5ldyIsImZlX3VzZWNhcHRjaGEiLCJhbGxvd19jb21wbGV4X29yZGVyIik7DQoJCQkJZm9yZWFjaCgkdGhpcy0+Z2V0X2xldmVsYXJyYXkoKSBhcyAkbGV2ZWwpew0KCQkJCQkkcHJlZnNbXSA9ICJuZXdpdGVtc2ZpcnN0XyIuJGxldmVsOw0KCQkJCQkkcHJlZnNbXSA9ICJzZWFyY2htb2R1bGVfaW5kZXhfIi4kbGV2ZWw7DQoJCQkJCSRwcmVmc1tdID0gInRhYmRpc3BsYXlfIi4kbGV2ZWw7DQoJCQkJfQ0KCQkJCWZvcmVhY2goJHByZWZzIGFzICRwcmVmKQkkdGhpcy0+U2V0UHJlZmVyZW5jZSgkcHJlZiwgaXNzZXQoJHBhcmFtc1skcHJlZl0pKTsNCgkJCQkkbWF4c2hvd25wYWdlcyA9IChpbnQpJHBhcmFtc1sibWF4c2hvd25wYWdlcyJdOw0KCQkJCWlmKGlzc2V0KCRwYXJhbXNbImZlX2FmdGVyc3VibWl0Il0pKQkkdGhpcy0+U2V0UHJlZmVyZW5jZSgiZmVfYWZ0ZXJzdWJtaXQiLCAkcGFyYW1zWyJmZV9hZnRlcnN1Ym1pdCJdKTsNCgkJCQlpZihpc3NldCgkcGFyYW1zWyJmZV9tYXhmaWxlc2l6ZSJdKSkJJHRoaXMtPlNldFByZWZlcmVuY2UoImZlX21heGZpbGVzaXplIiwgJHBhcmFtc1siZmVfbWF4ZmlsZXNpemUiXSk7DQoJCQkJJHRoaXMtPlNldFByZWZlcmVuY2UoIm1heHNob3ducGFnZXMiLCAkbWF4c2hvd25wYWdlcyk7DQoJCQkJJHRoaXMtPlJlZGlyZWN0KCRpZCwgImRlZmF1bHRhZG1pbiIsICRyZXR1cm5pZCwgYXJyYXkoImFjdGl2ZV90YWIiPT4icHJlZmVyZW5jZXMiLCAibW9kdWxlX21lc3NhZ2UiPT4kdGhpcy0+TGFuZygibWVzc2FnZV9tb2RpZmllZCIpKSk7DQoJCQkJYnJlYWs7DQoJCQljYXNlICJjaGFuZ2VkZWZ0ZW1wbGF0ZXMiOg0KCQkJCWZvcmVhY2goJHBhcmFtcyBhcyAka2V5PT4kdmFsdWUpew0KCQkJCSAgICBpZigka2V5ICE9ICJzdWJtaXQiKQkgICAkdGhpcy0+c2V0UHJlZmVyZW5jZSgka2V5LCAkdmFsdWUpOw0KCQkJCX0NCgkJCQkkdGhpcy0+UmVkaXJlY3QoJGlkLCAiZGVmYXVsdGFkbWluIiwgJHJldHVybmlkLCBhcnJheSgiYWN0aXZlX3RhYiI9PiJ0ZW1wbGF0ZXMiLCAibW9kdWxlX21lc3NhZ2UiPT4kdGhpcy0+TGFuZygibWVzc2FnZV9tb2RpZmllZCIpKSk7DQoJCQkJYnJlYWs7DQoJCQljYXNlICJkZWxldGV0cGwiOg0KCQkJCSRuZXdwYXJhbXMgPSBhcnJheSgiYWN0aXZlX3RhYiI9PiJ0ZW1wbGF0ZXMiKTsNCgkJCQkkZGVmdGVtcGxhdGVzID0gJHRoaXMtPmdldERlZmF1bHRUZW1wbGF0ZXMoKTsNCgkJCSAgICBpZihpc3NldCgkcGFyYW1zWyJ0cGxuYW1lIl0pICYmICFpbl9hcnJheSgkcGFyYW1zWyJ0cGxuYW1lIl0sICRkZWZ0ZW1wbGF0ZXMpKXsNCgkJCQkgICAgaWYoJHRoaXMtPkRlbGV0ZVRlbXBsYXRlKCRwYXJhbXNbInRwbG5hbWUiXSkpCSAgICRuZXdwYXJhbXNbIm1vZHVsZV9tZXNzYWdlPiJdID0gJHRoaXMtPkxhbmcoIm1lc3NhZ2VfbW9kaWZpZWQiKTsNCgkJCQl9DQoJCQkJJHRoaXMtPlJlZGlyZWN0KCRpZCwgImRlZmF1bHRhZG1pbiIsICRyZXR1cm5pZCwgJG5ld3BhcmFtcyk7DQoJCQkJYnJlYWs7DQoJCQljYXNlICJkZWxldGVxdWVyeSI6DQoJCQkJJG5ld3BhcmFtcyA9IGFycmF5KCJhY3RpdmVfdGFiIj0+InF1ZXJpZXMiKTsNCgkJCQlpZihpc3NldCgkcGFyYW1zWyJxdWVyeWlkIl0pKXsNCgkJCQkJJGRiID0mICR0aGlzLT5HZXREYigpOw0KCQkJCQlpZigkZGItPkV4ZWN1dGUoIkRFTEVURSBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfdmltZW9wbGF5ZXJfc2F2ZWRfcXVlcmllcyBXSEVSRSBpZD0/IExJTUlUIDEiLCBhcnJheSgkcGFyYW1zWyJxdWVyeWlkIl0pKSl7DQoJCQkJCQkkbmV3cGFyYW1zWyJtb2R1bGVfbWVzc2FnZSJdID0gJHRoaXMtPkxhbmcoIm1lc3NhZ2VfZGVsZXRlZCIpOw0KCQkJCQl9DQoJCQkJfQ0KCQkJCSR0aGlzLT5SZWRpcmVjdCgkaWQsICJkZWZhdWx0YWRtaW4iLCAkcmV0dXJuaWQsICRuZXdwYXJhbXMpOw0KCQkJCWJyZWFrOw0KCQkJY2FzZSAidGVzdHF1ZXJ5IjoNCgkJCQlpZihpc3NldCgkcGFyYW1zWyJxdWVyeWlkIl0pICYmICRxdWVyeSA9ICR0aGlzLT5nZXRfcXVlcmllcyhhcnJheSgiaWQiPT4kcGFyYW1zWyJxdWVyeWlkIl0pKSl7DQoJCQkJCSRxdWVyeSA9ICRxdWVyeVswXTsNCgkJCQkJZWNobyAiPHA+PGI+Ii4kdGhpcy0+TGFuZygicXVlcnkiKS4iOjwvYj4gIi4kcXVlcnktPm5hbWU7DQoJCQkJCWlmKCRxdWVyeS0+b3JkZXIgIT0gIiIpCWVjaG8gIiBPUkRFUiBCWSAiLiRxdWVyeS0+b3JkZXI7DQoJCQkJCWVjaG8gIjwvcD4iOw0KCQkJCQkkZ2V0ZnVuY3Rpb24gPSAiZ2V0X2xldmVsXyIuJHF1ZXJ5LT53aGF0Ow0KCQkJCQkkaXRlbWxpc3QgPSAkdGhpcy0+JGdldGZ1bmN0aW9uKGFycmF5KCksIGZhbHNlLCAiIiwgIiIsIDAsIDAsICRxdWVyeS0+d2hlcmVjbGF1c2UsICRxdWVyeS0+d2hlcmV2YWx1ZXMsICgkcXVlcnktPnF1ZXJ5b3JkZXIgPT0gIiI/ZmFsc2U6JHF1ZXJ5LT5xdWVyeW9yZGVyKSk7DQoJCQkJCWVjaG8gIjxwPjxiPiIuJHRoaXMtPkxhbmcoInJlc3VsdHMiKS4iICgiLmNvdW50KCRpdGVtbGlzdCkuIikgOjwvYj48L3A+IjsNCgkJCQkJZWNobyAiPHVsPiI7DQoJCQkJCWZvcmVhY2goJGl0ZW1saXN0IGFzICRpdGVtKQllY2hvICI8bGk+Ii4kaXRlbS0+bmFtZS4iPC9saT4iOw0KCQkJCQllY2hvICI8L3VsPiI7DQoJCQkJfQ0KCQkJCWVjaG8gIjxwPiIuJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAiZGVmYXVsdGFkbWluIiwgJHJldHVybmlkLCBsYW5nKCJiYWNrIiksIGFycmF5KCJhY3RpdmVfdGFiIj0+InF1ZXJpZXMiKSkuIjwvcD4iOw0KCQkJCWJyZWFrOw0KCQkJCQkNCg0KCQkJY2FzZSAiZGVmYXVsdCI6DQoJCQlkZWZhdWx0Og0KCQkJCXBhcmVudDo6RG9BY3Rpb24oJGFjdGlvbiwgJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQpOw0KCQkJCWJyZWFrOw0KCQl9DQoNCg0KCX0NCgkNCglmdW5jdGlvbiBEb0NoZWNrYm94ZXMoJGlkLCAkbmFtZSwgJGNob2ljZXMsICRzZWxlY3RlZD1hcnJheSgpLCAkZGVsaW1pdGVyPSI8YnIvPiIpew0KCQlpZighaXNfYXJyYXkoJHNlbGVjdGVkKSkJJHNlbGVjdGVkID0gYXJyYXkoKTsNCgkJJG91dHB1dCA9ICIiOw0KCQlmb3JlYWNoKCRjaG9pY2VzIGFzICRrZXk9PiR2YWx1ZSl7DQoJCQkkb3V0cHV0IC49ICR0aGlzLT5DcmVhdGVJbnB1dENoZWNrYm94KCRpZCwgJG5hbWUuIltdIiwgJHZhbHVlLCAoaW5fYXJyYXkoJHZhbHVlLCAkc2VsZWN0ZWQpPyR2YWx1ZTowKSkuIiAiLiRrZXkuJGRlbGltaXRlcjsNCgkJfQ0KCQlyZXR1cm4gJG91dHB1dDsNCgl9DQoNCglmdW5jdGlvbiBwYXJzZWtleXdvcmRzKCRzdHJpbmcpew0KCQkvLyBjdXRzIHRoZSBzZWFyY2h3b3JkcyBvZiB0aGUgc2VhcmNoIGZvcm0gaW50byBwaWVjZXMNCgkJJGluc2lkZSA9IChzdWJzdHIoJHN0cmluZywwLDEpID09ICciJyk7DQoJCSRwYXJ0cyA9IGV4cGxvZGUoJyInLCRzdHJpbmcpOw0KCQ0KCQlpZihjb3VudCgkcGFydHMpIDwgMil7DQoJCQlpZigkaW5zaWRlKXsNCgkJCQlyZXR1cm4gYXJyYXkoc3RyX3JlcGxhY2UoJyInLCIiLCRzdHJpbmcpKTsNCgkJCX1lbHNlew0KCQkJCXJldHVybiBleHBsb2RlKCIgIiwkc3RyaW5nKTsNCgkJCX0NCgkJfQ0KCQ0KCQkka2V5d29yZHMgPSBhcnJheSgpOw0KCQlmb3JlYWNoKCRwYXJ0cyBhcyAkcGFydCl7DQoJCQlpZigkcGFydCAhPSAiIil7DQoJCQkJaWYoJGluc2lkZSl7DQoJCQkJCSRrZXl3b3Jkc1tdID0gJHBhcnQ7DQoJCQkJfWVsc2V7DQoJCQkJCSR3b3JkcyA9IGV4cGxvZGUoIiAiLHRyaW0oJHBhcnQpKTsNCgkJCQkJZm9yZWFjaCgkd29yZHMgYXMgJHdvcmQpew0KCQkJCQkJaWYodHJpbSgkd29yZCkgIT0gIiIpCSRrZXl3b3Jkc1tdID0gJHdvcmQ7DQoJCQkJCX0NCgkJCQl9DQoJCQkJJGluc2lkZSA9ICEkaW5zaWRlOw0KCQkJfQ0KCQl9DQoJCXJldHVybiAka2V5d29yZHM7DQoJfQ0KCQ0KDQoJZnVuY3Rpb24gZ2V0X2xldmVsYXJyYXkoKXsNCgkJLy8gcmV0dXJucyBhbiBhcnJheSBvZiB0aGUgbGV2ZWxzICh0b3AgdG8gYm90dG9tKQ0KCQlyZXR1cm4gYXJyYXkoImNhdGVnb3J5IiwidmlkZW8iKTsNCgl9DQoNCglmdW5jdGlvbiBnZXRfbW9kdWxlaGllcmFyY2h5KCRsZXZlbD1mYWxzZSl7DQoJCSRoaWVyYXJjaHkgPSBhcnJheSgpOw0KCQkJJGhpZXJhcmNoeVsxXSA9ICJjYXRlZ29yeSI7DQoJCQkkaGllcmFyY2h5WzJdID0gInZpZGVvIjsNCgkJcmV0dXJuICRoaWVyYXJjaHk7DQoJfQ0KCQ0KCWZ1bmN0aW9uIGdldF9sZXZlbHNlYXJjaGZpZWxkcygkbGV2ZWwpew0KCQkvLyByZXR1cm5zIHRoZSBmaWVsZCBvZiBhIGxldmVsIHdoaWNoIGFyZSBzZWFyY2hhYmxlIChmb3IgdGhlIHNpbXBsZSBzZWFyY2ggYWN0aW9uKQ0KCQkkZmllbGRzID0gYXJyYXkoKTsNCgkJc3dpdGNoKCRsZXZlbCl7DQoJCQljYXNlICJjYXRlZ29yeSI6DQoJCQkJJGZpZWxkcyA9IGFycmF5KCJkZXNjcmlwdGlvbiIsIm5hbWUiKTsNCgkJCQlicmVhazsNCgkJCWNhc2UgInZpZGVvIjoNCgkJCQkkZmllbGRzID0gYXJyYXkoInZpZGVvaWQiLCJkZXNjcmlwdGlvbiIsIm5hbWUiKTsNCgkJCQlicmVhazsNCgkJCQkJCQ0KCQl9DQoJCXJldHVybiAkZmllbGRzOw0KCX0NCg0KCWZ1bmN0aW9uIGdldF9oaWVyYXJjaHlvcHRpb25zKCRlbmQ9ZmFsc2UsICR3aXRoZW1wdHlyb3c9dHJ1ZSwgJGRlcHRoc3ltYm9sPSImbmJzcDstJm5ic3A7Iil7DQoJCS8vIHJldHVybnMgYW4gYXJyYXkgb2YgcGFyZW50IG9wdGlvbnMgZm9yIGEgbGlua2VkIHRvIGEgc2VsZWN0ZWQgbGV2ZWwNCgkJLy8gdXNlZCBmb3IgdGhlIGhpZXJhcmNoeSBkcm9wZG93biBsaXN0IGluIHNlYXJjaCBhY3Rpb24NCgkJJGxldmVsYXJyYXkgPSAkdGhpcy0+Z2V0X2xldmVsYXJyYXkoKTsNCgkJIGlmKCFpbl9hcnJheSgkZW5kLCAkbGV2ZWxhcnJheSkpCSRlbmQgPSAidmlkZW8iOw0KCQkNCgkJLy8gYnVpbGRpbmcgdGhlIGpvaW5lZCBxdWVyeQ0KCQkkdGFibGVzID0gIiI7DQoJCSRmaWVsZHMgPSAiIjsNCgkJJG9yZGVyYnkgPSAiIjsNCgkJJHdoZXJlID0gIiI7DQoJCSRmaW5pc2hlZCA9IGZhbHNlOw0KCQkkaSA9IDE7DQoJCWZvcmVhY2goJGxldmVsYXJyYXkgYXMgJGxldmVsKXsNCgkJCWlmKCRsZXZlbCA9PSAkZW5kKQkkZmluaXNoZWQgPSB0cnVlOw0KCQkJaWYoISRmaW5pc2hlZCl7DQoJCQkJJHRhYmxlcyAuPSAoJHRhYmxlcyA9PSAiIj8iIjoiLCAiKS5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV92aW1lb3BsYXllcl8iLiRsZXZlbC4iIHQiLiRpLiIgIjsNCgkJCQkkZmllbGRzIC49ICgkZmllbGRzID09ICIiPyIiOiIsICIpLiJ0Ii4kaS4iLmlkIGlkIi4kaS4iLCB0Ii4kaS4iLm5hbWUgbmFtZSIuJGk7DQoJCQkJJG9yZGVyYnkgLj0gKCRvcmRlcmJ5ID09ICIiPyIiOiIsICIpLiJ0Ii4kaS4iLml0ZW1fb3JkZXIgREVTQyI7DQoJCQkJaWYoJGkgPiAxKSAkd2hlcmUgLj0gIiBBTkQgdCIuKCRpLTEpLiIuaWQgPSB0Ii4kaS4iLnBhcmVudCAiOw0KCQkJCSR3aGVyZSAuPSAoJHdoZXJlID09ICIiPyIiOiIgQU5EICIpLiIgdCIuJGkuIi5hY3RpdmU9MSI7DQoJCQkJJGkrKzsNCgkJCX0NCgkJfQ0KCQlpZigkZmllbGRzID09ICIiKQlyZXR1cm4gZmFsc2U7DQoJCQ0KCQkkZGIgPSYgJHRoaXMtPkdldERiKCk7DQoJCSRxdWVyeSA9ICJTRUxFQ1QgIi4kZmllbGRzLiIgRlJPTSAiLiR0YWJsZXMuIiBXSEVSRSAiLiR3aGVyZS4iIE9SREVSIEJZICIuJG9yZGVyYnk7DQoJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkpOw0KDQoJCS8vIHBhcnNpbmcgcmVzdWx0cw0KCQkkY3VycmVudCA9IGFycmF5KCk7DQoJCSR0bXBsYXN0bGV2ZWwgPSBhcnJheSgpOw0KCQkkcmVzdWx0cyA9IGFycmF5KCk7DQoJCSRmaW5hbCA9ICRpIC0xOw0KCQl3aGlsZSgkaiA8ICRmaW5hbCApew0KCQkJJGN1cnJlbnRbJGpdID0gYXJyYXkoImlkIj0+ZmFsc2UsIm5hbWUiPT4iIik7DQoJCQkkaisrOw0KCQl9DQoJCXdoaWxlKCRkYnJlc3VsdCAmJiAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKXsNCgkJCS8vIGVhY2ggcm93IGhhcyBhIGZ1bGwgaGllcmFyY2h5LCBmcm9tIHRvcCBwYXJlbnQgdG8gZmluYWwgY2hpbGQNCgkJCSRqID0gJGZpbmFsOw0KCQkJd2hpbGUoJGogPiAwICl7DQoJCQkJaWYoJHJvd1siaWQiLiRqXSAhPSAkY3VycmVudFskal1bImlkIl0pew0KCQkJCQlpZigkY3VycmVudFskal1bImlkIl0gJiYgY291bnQoJGN1cnJlbnRbJGpdWyJyZXMiXSkgPiAwKXsNCgkJCQkJCSRrZXkgPSBzdHJfcmVwZWF0KCRkZXB0aHN5bWJvbCwgKCRqIC0xKSkuJGN1cnJlbnRbJGpdWyJuYW1lIl07DQoJCQkJCQkkcmVzdWx0c1ska2V5XSA9IGltcGxvZGUoIiwiLCRjdXJyZW50WyRqXVsicmVzIl0pOw0KCQkJCQl9DQoJCQkJCSRjdXJyZW50WyRqXSA9IGFycmF5KCJpZCI9PiRyb3dbImlkIi4kal0sICJuYW1lIj0+JHJvd1sibmFtZSIuJGpdLCAicmVzIj0+YXJyYXkoKSk7DQoJCQkJfQ0KCQkJCSRjdXJyZW50WyRqXVsicmVzIl1bXSA9ICRyb3dbImlkIi4kZmluYWxdOw0KCQkJCSRqLS07DQoJCQl9DQoJCQkkcmVzdWx0c1tzdHJfcmVwZWF0KCRkZXB0aHN5bWJvbCwgKCRmaW5hbCAtMSkpLiRyb3dbIm5hbWUiLiRmaW5hbF1dID0gJHJvd1siaWQiLiRmaW5hbF07DQoJCX0NCgkJLy8gd2UgY2xvc2UgdGhlIHJlbWFpbmluZyBzZXRzDQoJCSRqID0gJGZpbmFsIC0xOw0KCQl3aGlsZSgkaiA+IDAgKXsNCgkJCSRrZXkgPSBzdHJfcmVwZWF0KCRkZXB0aHN5bWJvbCwgKCRqIC0xKSkuJGN1cnJlbnRbJGpdWyJuYW1lIl07DQoJCQkkcmVzdWx0c1ska2V5XSA9IGltcGxvZGUoIiwiLCRjdXJyZW50WyRqXVsicmVzIl0pOw0KCQkJJGotLTsNCgkJfQ0KCQlpZigkd2l0aGVtcHR5cm93KQkkcmVzdWx0c1siIl0gPSAiIjsNCgkJcmV0dXJuIGFycmF5X3JldmVyc2UoJHJlc3VsdHMpOw0KCX0NCg0KCWZ1bmN0aW9uIGdldF9hZG1pbl9oaWVyYXJjaHlvcHRpb25zKCRlbmQ9ZmFsc2UsICR3aXRoZW1wdHlyb3c9dHJ1ZSwgJHNlcGFyYXRvcj0iICZndDsgIiwgJG9yZGVyYnluYW1lPWZhbHNlKXsNCgkJLy8gcmV0dXJucyBhbiBhcnJheSBvZiBwYXJlbnQgb3B0aW9ucyBsaW5rZWQgdG8gYSBzZWxlY3RlZCBsZXZlbA0KCQkvLyB1c2VkIGZvciB0aGUgcGFyZW50IGFuZCBmaWx0ZXIgZHJvcGRvd24gaW4gdGhlIGFkbWluDQoJCS8vIHNob3dzIGVtcHR5IHBhcmVudHMgdG9vDQoJCSRsZXZlbGFycmF5ID0gJHRoaXMtPmdldF9sZXZlbGFycmF5KCk7DQoJCWlmKCFpbl9hcnJheSgkZW5kLCAkbGV2ZWxhcnJheSkpCSRlbmQgPSAiaXRlbSI7DQoJCQ0KCQkvLyBidWlsZGluZyB0aGUgam9pbmVkIHF1ZXJ5DQoJCSR0YWJsZXMgPSAiIjsNCgkJJGZpZWxkcyA9ICIiOw0KCQkkb3JkZXJieSA9ICIiOw0KCQkkZmluaXNoZWQgPSBmYWxzZTsNCgkJJGkgPSAxOw0KCQlmb3JlYWNoKCRsZXZlbGFycmF5IGFzICRsZXZlbCl7DQoJCQlpZigkbGV2ZWwgPT0gJGVuZCkJJGZpbmlzaGVkID0gdHJ1ZTsNCgkJCWlmKCEkZmluaXNoZWQpew0KCQkJCSR0YWJsZXMgLj0gKCRpPT0xPyIiOiIgTEVGVCBKT0lOICIpLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3ZpbWVvcGxheWVyXyIuJGxldmVsLiIgdCIuJGkuIiAiOw0KCQkJCWlmKCRpPjEpCSR0YWJsZXMgLj0gIk9OIHQiLigkaS0xKS4iLmlkID0gdCIuJGkuIi5wYXJlbnQgIjsNCgkJCQkkZmllbGRzIC49ICgkZmllbGRzID09ICIiPyIiOiIsICIpLiJ0Ii4kaS4iLmlkIGlkIi4kaS4iLCB0Ii4kaS4iLm5hbWUgbmFtZSIuJGk7DQoJCQkJaWYoJG9yZGVyYnluYW1lKXsNCgkJCQkJJG9yZGVyYnkgLj0gKCRvcmRlcmJ5ID09ICIiPyIiOiIsICIpLiJ0Ii4kaS4iLm5hbWUiOw0KCQkJCX1lbHNlew0KCQkJCQkkb3JkZXJieSAuPSAoJG9yZGVyYnkgPT0gIiI/IiI6IiwgIikuInQiLiRpLiIuaXRlbV9vcmRlciwgdCIuJGkuIi5uYW1lIjsNCgkJCQl9DQoJCQkJJGkrKzsNCgkJCX0NCgkJfQ0KCQlpZigkZmllbGRzID09ICIiKQlyZXR1cm4gYXJyYXkoKTsNCgkJDQoJCSRkYiA9JiAkdGhpcy0+R2V0RGIoKTsNCgkJJHF1ZXJ5ID0gIlNFTEVDVCAiLiRmaWVsZHMuIiBGUk9NICIuJHRhYmxlcy4iIE9SREVSIEJZICIuJG9yZGVyYnk7DQoJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkpOw0KCQkkb3B0aW9ucyA9IGFycmF5KCk7DQoJCXdoaWxlKCRkYnJlc3VsdCAmJiAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKXsNCgkJCS8vIGVhY2ggcm93IGhhcyBhIGZ1bGwgaGllcmFyY2h5LCBmcm9tIHRvcCBwYXJlbnQgdG8gZmluYWwgY2hpbGQNCgkJCSR2YWx1ZSA9ICRyb3dbImlkIi4oJGktMSldOw0KCQkJJGogPSAxOw0KCQkJJG9wdGlvbl9uYW1lID0gIiI7DQoJCQl3aGlsZSgkaiA8ICRpKXsNCgkJCQkkb3B0aW9uX25hbWUgLj0gKCRqPT0xPyIiOiRzZXBhcmF0b3IpLiRyb3dbIm5hbWUiLiRqXTsNCgkJCQkkaisrOw0KCQkJfQ0KCQkJJG9wdGlvbnNbJG9wdGlvbl9uYW1lXSA9ICR2YWx1ZTsNCgkJfQ0KCQlpZigkd2l0aGVtcHR5cm93KQkkb3B0aW9uc1siIl0gPSAiIjsNCgkJcmV0dXJuICRvcHRpb25zOw0KCX0NCg0KCWZ1bmN0aW9uIGdldF9tb2R1bGVHZXRWYXJzKCl7DQoJCS8vIHVub3J0aG9kb3ggaGFjayBzbyB0aGF0IGRpZmZlcmVudCBjYWxscyBvZiB0aGUgbW9kdWxlIHNwZWFrIHdpdGggZWFjaCBvdGhlcg0KCQkvLyBiYXNpY2FsbHksIHdlIHJldHJpZXZlIHBhcmFtZXRlcnMgaW4gdGhlIHVybCB0aGF0IHdlcmUgbWVhbnQgZm9yIG90aGVyIGluc3RhbmNlcyBvZiB0aGUgbW9kdWxlDQoJCS8vIHNlZSBGQVEgZm9yIG1vcmUgaW5mbyBvbiB0aGlzDQoJCWdsb2JhbCAkX0dFVDsNCgkJZ2xvYmFsICRnQ21zOw0KCQkkZ2xvYmFsbW9kdWxldmFycyA9IGFycmF5KCk7DQoJCWlmKGlzc2V0KCRfR0VUWyJtYWN0Il0pKXsNCgkJCS8vIGlmIHdlIGFyZW4ndCB1c2luZyBwcmV0dHkgdXJscy4uLg0KCQkJJG1vZGluZm8gPSBleHBsb2RlKCIsIiwkX0dFVFsibWFjdCJdKTsNCgkJCWlmKGlzc2V0KCRtb2RpbmZvKSAmJiAkbW9kaW5mb1swXSA9PSAkdGhpcy0+R2V0TmFtZSgpKXsNCgkJCQlpZihpc3NldCgkX0dFVFskbW9kaW5mb1sxXS4icGFyZW50Il0pKQ0KCQkJCQkkZ2xvYmFsbW9kdWxldmFyc1sicGFyZW50Il09JF9HRVRbJG1vZGluZm9bMV0uInBhcmVudCJdOw0KCQkJCWlmKGlzc2V0KCRfR0VUWyRtb2RpbmZvWzFdLiJ3aGF0Il0pKQ0KCQkJCQkkZ2xvYmFsbW9kdWxldmFyc1sid2hhdCJdPSRfR0VUWyRtb2RpbmZvWzFdLiJ3aGF0Il07DQoJCQkJaWYoaXNzZXQoJF9HRVRbJG1vZGluZm9bMV0uImFsaWFzIl0pKQ0KCQkJCQkkZ2xvYmFsbW9kdWxldmFyc1siYWxpYXMiXT0kX0dFVFskbW9kaW5mb1sxXS4iYWxpYXMiXTsNCgkJCQlpZihpc3NldCgkX0dFVFskbW9kaW5mb1sxXS4icGFnZWluZGV4Il0pKQ0KCQkJCQkkZ2xvYmFsbW9kdWxldmFyc1sicGFnZWluZGV4Il09JF9HRVRbJG1vZGluZm9bMV0uInBhZ2VpbmRleCJdOw0KCQkJfQ0KCQl9ZWxzZWlmKCRnQ21zLT5jb25maWdbImludGVybmFsX3ByZXR0eV91cmxzIl0gfHwgJGdDbXMtPmNvbmZpZ1siYXNzdW1lX21vZF9yZXdyaXRlIl0pew0KCQkJJHBhcmFtcyA9IGFycmF5KCk7DQoJCQlpZigkZ0Ntcy0+Y29uZmlnWyJhc3N1bWVfbW9kX3Jld3JpdGUiXSAmJiBpc3NldCgkX0dFVFsicGFnZSJdKSl7DQoJCQkJLy8gaWYgd2UgYXJlIHVzaW5nIGFuIGV4dGVybmFsIG1vZF9yZXdyaXRlLCBhc3N1bWluZyB5b3UgYXJlIHVzaW5nIHRoZSB2ZXJ5DQoJCQkJLy8gYmFzaWMgcmV3cml0ZSB3aGljaCBwdXRzIHRoZSBtb2R1bGUgaW5mb3JtYXRpb25zIGluc2lkZSB0aGUgcGFnZSB2YXJpYWJsZQ0KCQkJCSRwYXJ0cyA9IGV4cGxvZGUoIi8iLCRfR0VUWyJwYWdlIl0pOw0KCQkJCWZvcmVhY2goJHBhcnRzIGFzICRwYXJ0KXsNCgkJCQkJaWYoJHBhcnQgIT0gIiIpCSRwYXJhbXNbXSA9ICRwYXJ0Ow0KCQkJCX0NCgkJCX1lbHNlaWYoISRnQ21zLT5jb25maWdbImFzc3VtZV9tb2RfcmV3cml0ZSJdICYmICRnQ21zLT5jb25maWdbImludGVybmFsX3ByZXR0eV91cmxzIl0gJiYgaXNzZXQoJF9TRVJWRVJbIlJFUVVFU1RfVVJJIl0pKXsNCgkJCQkvLyBpZiB3ZSBhcmUgdXNpbmcgdGhlIGludGVybmFsIHByZXR0eSB1cmxzDQoJCQkJJHBhcnRzID0gZXhwbG9kZSgiLyIsJF9TRVJWRVJbIlJFUVVFU1RfVVJJIl0pOw0KCQkJCSRzdGFydGVkID0gZmFsc2U7DQoJCQkJZm9yZWFjaCgkcGFydHMgYXMgJHBhcnQpew0KCQkJCQlpZigkc3RhcnRlZCAmJiAkcGFydCAhPSAiIikJJHBhcmFtc1tdID0gJHBhcnQ7DQoJCQkJCWlmKHN0cnRvbG93ZXIoJHBhcnQpID09ICJpbmRleC5waHAiKQkkc3RhcnRlZCA9IHRydWU7DQoJCQkJfQ0KCQkJfQ0KCQkJaWYoaXNzZXQoJHBhcmFtc1swXSkgJiYgc3RydG9sb3dlcigkcGFyYW1zWzBdKSA9PSBzdHJ0b2xvd2VyKCR0aGlzLT5HZXROYW1lKCkpKXsNCgkJCQkgLy8gd2UgYXJlIGluIGEgbW9kdWxlIGFjdGlvbg0KCQkJCWlmKCFpc3NldCgkcGFyYW1zWzFdKSB8fCBzdHJ0b2xvd2VyKCRwYXJhbXNbMV0pID09ICJxdWVyeSIpew0KDQoJCQkJfWVsc2VpZihpc3NldCgkcGFyYW1zWzFdKSAmJiBzdHJ0b2xvd2VyKCRwYXJhbXNbMV0pID09ICJkZXRhaWwiKXsNCgkJCQkJJGdsb2JhbG1vZHVsZXZhcnNbIndoYXQiXSA9ICJ2aWRlbyI7DQoJCQkJCSRnbG9iYWxtb2R1bGV2YXJzWyJhbGlhcyJdID0gJHBhcmFtc1syXTsNCgkJCQl9ZWxzZXsNCgkJCQkJJGdsb2JhbG1vZHVsZXZhcnNbIndoYXQiXSA9ICRwYXJhbXNbMV07DQoJCQkJCXN3aXRjaChjb3VudCgkcGFyYW1zKSl7DQoJCQkJCQljYXNlIDY6DQoJCQkJCQkJJGdsb2JhbG1vZHVsZXZhcnNbInBhZ2VpbmRleCJdID0gJHBhcmFtc1szXTsNCgkJCQkJCQkkZ2xvYmFsbW9kdWxldmFyc1sibmJwZXJwYWdlIl0gPSAkcGFyYW1zWzRdOw0KCQkJCQkJY2FzZSA0Og0KCQkJCQkJCSRnbG9iYWxtb2R1bGV2YXJzWyJwYXJlbnQiXSA9ICRwYXJhbXNbMl07DQoJCQkJCQkJYnJlYWs7DQoJCQkJCQljYXNlIDU6DQoJCQkJCQkJJGdsb2JhbG1vZHVsZXZhcnNbInBhZ2VpbmRleCJdID0gJHBhcmFtc1syXTsNCgkJCQkJCQkkZ2xvYmFsbW9kdWxldmFyc1sibmJwZXJwYWdlIl0gPSAkcGFyYW1zWzNdOw0KCQkJCQkJCWJyZWFrOw0KCQkJCQl9DQoJCQkJfQ0KCQkJfQ0KCQl9DQoJCXJldHVybiAkZ2xvYmFsbW9kdWxldmFyczsNCgl9DQoJDQoJZnVuY3Rpb24gZ2V0X29ianRyZWUoJGN1cmlkLCAkY3VybGV2ZWw9InZpZGVvIiwgJGZpZWxkPSJpZCIpew0KCQkvLyB0aGlzIGJ1aWxkcyBhbiBvYmplY3QgdHJlZSAoJGl0ZW0tPnBhcmVudF9vYmplY3QtPnBhcmVudF9vYmplY3QuLi4pDQoJCS8vIHdlIGZpcnN0IHB1dCBhbGwgdGhlIHBhcmVudHMgaW4gYW4gYXJyYXkNCgkJJHBhcmVudHMgPSBhcnJheSgpOw0KCQkkbGV2ZWxzID0gJHRoaXMtPmdldF9sZXZlbGFycmF5KCk7DQoJCSRpID0gY291bnQoJGxldmVscyk7DQoJCSRzdGFydGVkID0gZmFsc2U7DQoJCXdoaWxlKCRjdXJpZCAmJiAkaSA+IDApew0KCQkJaWYoJGxldmVsc1skaSAtMV0gPT0gJGN1cmxldmVsKQkkc3RhcnRlZCA9IHRydWU7DQoJCQlpZigkc3RhcnRlZCl7DQoJCQkJJGdldGZ1bmN0aW9uID0gImdldF9sZXZlbF8iLiRsZXZlbHNbJGkgLTFdOw0KCQkJCSRpdGVtID0gJHRoaXMtPiRnZXRmdW5jdGlvbihhcnJheSgkZmllbGQ9PiRjdXJpZCkpOw0KCQkJCSRpdGVtID0gaXNfYXJyYXkoJGl0ZW0pPyRpdGVtWzBdOiRpdGVtOw0KCQkJCSRpdGVtLT5fX3doYXQgPSAkbGV2ZWxzWyRpLTFdOw0KCQkJCSRwYXJlbnRzW10gPSAkaXRlbTsNCgkJCQkkZmllbGQgPSAiaWQiOw0KCQkJCSRjdXJpZCA9IGlzc2V0KCRpdGVtLT5wYXJlbnRfaWQpPyRpdGVtLT5wYXJlbnRfaWQ6ZmFsc2U7DQoJCQl9DQoJCQkkaS0tOw0KCQl9DQoJCQ0KCQkvLyBuZXh0LCB3ZSBwcm9jZXNzIHRoZSBhcnJheSBvZiBwYXJlbnRzIHRvIGJ1aWxkIHRoZSBwYXJlbnQgdHJlZQ0KCQkkcGFyZW50dHJlZSA9IGZhbHNlOw0KCQkkaSA9IGNvdW50KCRwYXJlbnRzKSAtIDE7DQoJCXdoaWxlKCRpID49IDApew0KCQkJaWYoJHBhcmVudHRyZWUpew0KCQkJCSRuZXd0cmVlID0gJHBhcmVudHNbJGldOw0KCQkJCSRuZXd0cmVlLT5wYXJlbnRfb2JqZWN0ID0gJHBhcmVudHRyZWU7DQoJCQkJJHBhcmVudHRyZWUgPSAkbmV3dHJlZTsNCgkJCX1lbHNlew0KCQkJCSRwYXJlbnR0cmVlID0gJHBhcmVudHNbJGldOw0KCQkJfQ0KCQkJJGktLTsNCgkJfQ0KCQkkdGhpcy0+Y3VycmVudHRyZWUgPSAkcGFyZW50dHJlZTsNCgkJcmV0dXJuICRwYXJlbnR0cmVlOw0KCX0NCg0KCWZ1bmN0aW9uIGJ1aWxkR2xvYmFsVHJlZSgpew0KCQkvLyB0aGlzIHNhdmVzIHRoZSBjdXJyZW50IHRyZWUgaW4gdGhlIG1vZHVsZS4uLg0KCQkkbGV2ZWxzID0gJHRoaXMtPmdldF9sZXZlbGFycmF5KCk7DQoJCSRnbG9iID0gJHRoaXMtPmdldF9tb2R1bGVHZXRWYXJzKCk7DQoJCWlmKGlzc2V0KCRnbG9iWyJwYWdlaW5kZXgiXSkpCSR0aGlzLT5jdXJyZW50cGFnZWluZGV4ID0gJGdsb2JbInBhZ2VpbmRleCJdOw0KCQlpZihpc3NldCgkZ2xvYlsiYWxpYXMiXSkpew0KCQkJJHRyZWUgPSAkdGhpcy0+Z2V0X29ianRyZWUoJGdsb2JbImFsaWFzIl0sICRsZXZlbHNbY291bnQoJGxldmVscyktMV0sICJhbGlhcyIpOw0KCQl9ZWxzZWlmKGlzc2V0KCRnbG9iWyJwYXJlbnQiXSkgJiYgaXNzZXQoJGdsb2JbIndoYXQiXSkpew0KCQkJJHRyZWUgPSAkdGhpcy0+Z2V0X29ianRyZWUoJGdsb2JbInBhcmVudCJdLCAkdGhpcy0+Z2V0X25leHRsZXZlbCgkZ2xvYlsid2hhdCJdLGZhbHNlKSwgImFsaWFzIik7DQoJCX0NCgkJDQoJCWlmKGlzc2V0KCR0cmVlKSAmJiAkdHJlZSl7DQoJCQkkdGhpcy0+Y3VycmVudHRyZWUgPSAkdHJlZTsNCgkJCS8vIHRoaXMgc2F2ZXMgdGhlIHNlbGVjdGVkIGl0ZW0gZm9yIGVhY2ggbGV2ZWwNCgkJCSR0aGlzLT5wbGN1cnJlbnRbJHRyZWUtPl9fd2hhdF0gPSAkdHJlZS0+YWxpYXM7DQoJCQl3aGlsZShpc3NldCgkdHJlZS0+cGFyZW50X29iamVjdCkpew0KCQkJCSR0cmVlID0gJHRyZWUtPnBhcmVudF9vYmplY3Q7DQoJCQkJJHRoaXMtPnBsY3VycmVudFskdHJlZS0+X193aGF0XSA9ICR0cmVlLT5hbGlhczsNCgkJCX0NCgkJfQ0KCX0NCg0KCWZ1bmN0aW9uIGZ1bmN0aW9uX21vZGJyZWFkY3J1bWJzKCRwYXJhbXMsICYkc21hcnR5KXsNCgkJaWYoISR0aGlzLT5jdXJyZW50dHJlZSkJCSR0aGlzLT5idWlsZEdsb2JhbFRyZWUoKTsNCgkJDQoJCWlmKCR0aGlzLT5jdXJyZW50dHJlZSl7DQoJCQlnbG9iYWwgJGdDbXM7DQoJCQkkcmV0dXJuaWQgPSAkZ0Ntcy0+dmFyaWFibGVzWyJjb250ZW50X2lkIl07DQoJCQkvLyB3ZSBjcmVhdGUgdGhlIGJyZWFkY3J1bWJzDQoJCQkkY2xhc3NpZCA9IGlzc2V0KCRwYXJhbXNbImNsYXNzaWQiXSk/IiBjbGFzcz1cIiIuJHBhcmFtc1siY2xhc3NpZCJdLiJcIiI6IiI7DQoJCQkkY3VycmVudGNsYXNzaWQgPSBpc3NldCgkcGFyYW1zWyJjdXJyZW50Y2xhc3NpZCJdKT8iIGNsYXNzPVwiIi4kcGFyYW1zWyJjdXJyZW50Y2xhc3NpZCJdLiJcIiI6IiBjbGFzcz1cImxhc3RpdGVtXCIiOw0KCQkJJHN0YXJ0bGV2ZWwgPSBpc3NldCgkcGFyYW1zWyJzdGFydGxldmVsIl0pPyR0aGlzLT5nZXRfbmV4dGxldmVsKCRwYXJhbXNbInN0YXJ0bGV2ZWwiXSwgZmFsc2UpOmZhbHNlOw0KCQkJJGRlbGltaXRlciA9IGlzc2V0KCRwYXJhbXNbImRlbGltaXRlciJdKT8kcGFyYW1zWyJkZWxpbWl0ZXIiXTokdGhpcy0+TGFuZygiYnJlYWRjcnVtYnNfZGVsaW1pdGVyIik7DQoJCQkkaW5pdGlhbCA9IGlzc2V0KCRwYXJhbXNbImluaXRpYWwiXSk/JHBhcmFtc1siaW5pdGlhbCJdOiR0aGlzLT5MYW5nKCJ5b3VhcmVoZXJlIik7DQoNCgkJCSRvdXRwdXQgPSAiIjsNCgkJCSRjdXJyZW50ID0gJHRoaXMtPmN1cnJlbnR0cmVlOw0KCQkJJGdvaW5nb24gPSBmYWxzZTsNCgkJCXdoaWxlKGlzc2V0KCRjdXJyZW50LT5wYXJlbnRfb2JqZWN0KSl7DQoJCQkJJGN1cnJlbnQgPSAkY3VycmVudC0+cGFyZW50X29iamVjdDsNCgkJCQlpZigkY3VycmVudC0+X193aGF0ID09ICRzdGFydGxldmVsKQkkZW5kZWQgPSB0cnVlOw0KCQkJCWlmKCEkZW5kZWQpew0KCQkJCQkkcGFyYW1zID0gYXJyYXkoIndoYXQiPT4kdGhpcy0+Z2V0X25leHRsZXZlbCgkY3VycmVudC0+X193aGF0KSwgInBhcmVudCI9PiRjdXJyZW50LT5hbGlhcyk7DQoJCQkJCSRwcmV0dHl1cmwgPSAkdGhpcy0+QnVpbGRQcmV0dHlVcmxzKCRwYXJhbXMsICRyZXR1cm5pZCk7DQoJCQkJCSRvdXRwdXQgPSAiPHNwYW4iLiRjbGFzc2lkLiI+Ii4kdGhpcy0+Q3JlYXRlTGluaygiIiwgImRlZmF1bHQiLCAkcmV0dXJuaWQsICRjdXJyZW50LT5uYW1lLCAkcGFyYW1zLCAiIiwgZmFsc2UsIGZhbHNlLCAiIiwgZmFsc2UsICRwcmV0dHl1cmwpLiI8L3NwYW4+Ii4kZGVsaW1pdGVyLiRvdXRwdXQ7DQoJCQkJfQ0KCQkJfQ0KCQkJaWYoJG91dHB1dCAhPSAiIikgJG91dHB1dCA9ICRpbml0aWFsLiRvdXRwdXQuIjxzcGFuIi4kY3VycmVudGNsYXNzaWQuIj4iLiR0aGlzLT5jdXJyZW50dHJlZS0+bmFtZS4iPC9zcGFuPiI7DQoJCQkNCgkJCWlmKGlzc2V0KCRwYXJhbXNbImFzc2lnbiJdKSAmJiAkcGFyYW1zWyJhc3NpZ24iXSAhPSAiIil7DQoJCQkJJHNtYXJ0eS0+YXNzaWduKCRwYXJhbXNbImFzc2lnbiJdLCAkb3V0cHV0KTsNCgkJCX1lbHNlew0KCQkJCWVjaG8gJG91dHB1dDsNCgkJCX0NCgkJfQ0KCX0NCgkNCglmdW5jdGlvbiBmdW5jdGlvbl9nZXRfbGV2ZWxpdGVtKCRwYXJhbXMsICYkc21hcnR5KXsNCgkJaWYoCSFpc3NldCgkcGFyYW1zWyJhc3NpZ24iXSkgfHwgJHBhcmFtc1siYXNzaWduIl0gPT0gIiIgfHwgIWlzc2V0KCRwYXJhbXNbIndoYXQiXSkgfHwgIWlzc2V0KCRwYXJhbXNbImFsaWFzIl0pICkJcmV0dXJuIGZhbHNlOw0KCQlpZighaW5fYXJyYXkoJHBhcmFtc1sid2hhdCJdLCAkdGhpcy0+Z2V0X2xldmVsYXJyYXkoKSkpCXJldHVybiBmYWxzZTsNCgkJJGdldGZ1bmN0aW9uID0gImdldF9sZXZlbF8iLiRwYXJhbXNbIndoYXQiXTsNCgkJJHJlc3VsdHMgPSAkdGhpcy0+JGdldGZ1bmN0aW9uKGFycmF5KCJhbGlhcyI9PiRwYXJhbXNbImFsaWFzIl0pKTsNCgkJJGl0ZW0gPSBpc3NldCgkcmVzdWx0c1swXSk/JHJlc3VsdHNbMF06ZmFsc2U7DQoJCSRzbWFydHktPmFzc2lnbigkcGFyYW1zWyJhc3NpZ24iXSwgJGl0ZW0pOw0KCX0NCg0KDQoJZnVuY3Rpb24gY291bnRzb21ldGhpbmcoJHRhYmxlbmFtZSwkd2hhdD0iaWQiLCR3aGVyZT1hcnJheSgpKXsNCgkJLy8gcmV0dXJucyB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIGEgdGFibGUNCgkJJGRiID0mICR0aGlzLT5HZXREYigpOw0KCQkkd2hlcmVzdHJpbmcgPSAiIjsNCgkJJHdoZXJldmFsdWVzID0gYXJyYXkoKTsNCgkJZm9yZWFjaCgkd2hlcmUgYXMgJGtleT0+JHZhbHVlKXsNCgkJCSR3aGVyZXN0cmluZyAuPSAoJHdoZXJlc3RyaW5nID09ICIiPyIgV0hFUkUgIjoiIEFORCAiKS4ka2V5LiI9PyI7DQoJCQkkd2hlcmV2YWx1ZXNbXSA9ICR2YWx1ZTsNCgkJfQ0KCQkkcXVlcnkgPSAiU0VMRUNUIENPVU5UKCR3aGF0KSBvdXJjb3VudCBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfdmltZW9wbGF5ZXJfJHRhYmxlbmFtZSIuJHdoZXJlc3RyaW5nOw0KCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCR3aGVyZXZhbHVlcyk7DQoJCWlmICgkZGJyZXN1bHQgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSl7DQoJCQlyZXR1cm4gJHJvd1sib3VyY291bnQiXTsNCgkJfWVsc2V7DQoJCQlyZXR1cm4gMDsNCgkJfQ0KCX0NCg0KCWZ1bmN0aW9uIGdldF9kaXN0YW5jZXRvbGV2ZWwoJHBhcmVudG5hbWUsJGNoaWxkbmFtZT0idmlkZW8iKXsNCgkJLy8gZ2V0IHRoZSBkaXN0YW5jZSBiZXR3ZWVuIHR3byBsZXZlbHMgKG1vc3QgbGlrZWx5IGJldHdlZW4gYSBsZXZlbCBhbmQgdGhlIGZpbmFsIGxldmVsKQ0KCQkkbGV2ZWxzID0gJHRoaXMtPmdldF9sZXZlbGFycmF5KCk7DQoJCSRwYXJlbnRwb3NpdGlvbiA9IGZhbHNlOw0KCQkkY2hpbGRwb3NpdGlvbiA9IGZhbHNlOw0KCQkkY291bnRlciA9IDA7DQoJCWZvcmVhY2goJGxldmVscyBhcyAkbGV2ZWwpew0KCQkJJGNvdW50ZXIrKzsNCgkJCWlmKCRsZXZlbCA9PSAkcGFyZW50bmFtZSkgJHBhcmVudHBvc2l0aW9uID0gJGNvdW50ZXI7DQoJCQlpZigkbGV2ZWwgPT0gJGNoaWxkbmFtZSkgJGNoaWxkcG9zaXRpb24gPSAkY291bnRlcjsNCgkJfQ0KCQlpZigkY2hpbGRwb3NpdGlvbiAmJiAkcGFyZW50cG9zaXRpb24pew0KCQkJcmV0dXJuIGFicygkcGFyZW50cG9zaXRpb24gLSAkY2hpbGRwb3NpdGlvbik7DQoJCX0NCgl9DQoJZnVuY3Rpb24gZ2V0X25leHRsZXZlbCgkY3VybGV2ZWwsJGZpbmRjaGlsZD10cnVlKXsNCgkJLy8gcmV0dXJuIHRoZSBuYW1lIG9mIHRoZSBsZXZlbCBiZWxvdyAoJGZpbmRjaGlsZD10cnVlKSBvciBhYm92ZSAoJGZpbmRjaGlsZD1mYWxzZSkNCgkJJGxldmVscyA9ICR0aGlzLT5nZXRfbGV2ZWxhcnJheSgpOw0KCQkkaSA9IDA7DQoJCSR3YW50ZWRsZXZlbCA9IGZhbHNlOw0KCQl3aGlsZSgkaSA8IGNvdW50KCRsZXZlbHMpKXsNCgkJCSRuZXh0ID0gJGZpbmRjaGlsZD8kaSsxOiRpLTE7DQoJCQlpZigkbGV2ZWxzWyRpXSA9PSAkY3VybGV2ZWwgJiYgaXNzZXQoJGxldmVsc1skbmV4dF0pKSAkd2FudGVkbGV2ZWwgPSAkbGV2ZWxzWyRuZXh0XTsNCgkJCSRpKys7DQoJCX0NCgkJcmV0dXJuICR3YW50ZWRsZXZlbDsNCgl9DQoNCglmdW5jdGlvbiBnZXRfcGFyZW50cygkcGFyZW50bmFtZSwkY2hpbGRuYW1lLCRjaGlsZGlkKXsNCgkJLy8gZnVuY3Rpb24gd2l0aCB0aGUgc2hhcmVjaGlsZHJlbiBvcHRpb24uLi4NCgkJJGRiID0mICR0aGlzLT5HZXREYigpOw0KCQkkcXVlcnkgPSAiU0VMRUNUICIuJHBhcmVudG5hbWUuIl9pZCBwYXJlbnRpZCBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfdmltZW9wbGF5ZXJfIi4kcGFyZW50bmFtZS4iX2hhc18iLiRjaGlsZG5hbWUuIiBXSEVSRSAiLiRjaGlsZG5hbWUuIl9pZD0/IjsNCgkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSxhcnJheSgkY2hpbGRpZCkpOw0KCQkkcGFyZW50cyA9IGFycmF5KCk7DQoJCXdoaWxlICgkZGJyZXN1bHQgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSl7DQoJCQkkcGFyZW50c1tdID0gJHJvd1sicGFyZW50aWQiXTsNCgkJfQ0KCQlyZXR1cm4gJHBhcmVudHM7DQoJfQ0KDQoJZnVuY3Rpb24gZ2V0X29wdGlvbnMoJHRhYmxlbmFtZSwkb25seWFjdGl2ZT1mYWxzZSwkZnVsbG9iamVjdD1mYWxzZSl7DQoJCSRvcmRlcmJ5bmFtZSA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCJvcmRlcmJ5bmFtZSIsZmFsc2UpOw0KCQkvLyByZXR1cm5zIHRoZSBlbGVtZW50cyBvZiBhbnkgdGFibGUgYXMgb3B0aW9ucyB0byB1c2UgZm9yIGEgZHJvcGRvd24gbGlzdA0KCQkkZGIgPSYgJHRoaXMtPkdldERiKCk7DQoJCSRxdWVyeSA9ICJTRUxFQ1QgKiBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfdmltZW9wbGF5ZXJfIi4kdGFibGVuYW1lOw0KCQlpZigkb25seWFjdGl2ZSkJJHF1ZXJ5IC49ICIgV0hFUkUgYWN0aXZlPTEiOw0KCQkkcXVlcnkgLj0gIiBPUkRFUiBCWSAiLigkb3JkZXJieW5hbWU/Im5hbWUiOiJpdGVtX29yZGVyIik7DQoJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkpOw0KCQkkb3B0aW9ucyA9IGFycmF5KCk7DQoJCXdoaWxlICgkZGJyZXN1bHQgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSl7DQoJCQlpZigkZnVsbG9iamVjdCl7DQoJCQkJJG9iaiA9IG5ldyBTdGRDbGFzcygpOw0KCQkJCWZvcmVhY2goJHJvdyBhcyAka2V5PT4kdmFsdWUpCSRvYmotPiRrZXkgPSAkdmFsdWU7DQoJCQkJJG9wdGlvbnNbXSA9ICRvYmo7DQoJCQl9ZWxzZXsNCgkJCQkkb3B0aW9uc1skcm93WyJuYW1lIl1dID0gJHJvd1siaWQiXTsNCgkJCX0NCgkJfQ0KCQkNCgkJcmV0dXJuICRvcHRpb25zOw0KCX0NCgkNCglmdW5jdGlvbiBnZXRfZmllbGRvcHRpb25zKCRmaWVsZCwkZnVsbG9iamVjdD1mYWxzZSl7DQoJCS8vIHJldHVybnMgZmllbGQgb3B0aW9ucyBhcyBvcHRpb25zIHRvIHVzZSBmb3IgYSBkcm9wZG93biBsaXN0DQoJCSRkYiA9JiAkdGhpcy0+R2V0RGIoKTsNCgkJJHF1ZXJ5ID0gIlNFTEVDVCAqIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV92aW1lb3BsYXllcl9maWVsZG9wdGlvbnMgV0hFUkUgZmllbGQ9PyBPUkRFUiBCWSBpdGVtX29yZGVyIjsNCgkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSxhcnJheSgkZmllbGQpKTsNCgkJJG9wdGlvbnMgPSBhcnJheSgpOw0KCQl3aGlsZSAoJGRicmVzdWx0ICYmICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpew0KCQkJaWYoJGZ1bGxvYmplY3Qpew0KCQkJCSRvYmogPSBuZXcgU3RkQ2xhc3MoKTsNCgkJCQlmb3JlYWNoKCRyb3cgYXMgJGtleT0+JHZhbHVlKQkkb2JqLT4ka2V5ID0gJHZhbHVlOw0KCQkJCSRvcHRpb25zW10gPSAkb2JqOw0KCQkJfWVsc2V7DQoJCQkkb3B0aW9uc1skcm93WyJuYW1lIl1dID0gJHJvd1siaWQiXTsNCgkJCX0NCgkJfQ0KCQkNCgkJcmV0dXJuICRvcHRpb25zOw0KCX0NCg0KCWZ1bmN0aW9uIGdldF9wYWdlaWQoJGFsaWFzKXsNCgkJLy8gcmV0dXJucyB0aGUgcGFnZSBpZCBmcm9tIGFuIGFsaWFzDQoJCWdsb2JhbCAkZ0NtczsNCgkJJG1hbmFnZXIgPSYgJGdDbXMtPkdldEhpZXJhcmNoeU1hbmFnZXIoKTsNCgkJJG5vZGUgPSYgJG1hbmFnZXItPnN1cmVHZXROb2RlQnlBbGlhcygkYWxpYXMpOw0KCQlpZiAoaXNzZXQoJG5vZGUpKSB7DQoJCQkkY29udGVudCA9JiAkbm9kZS0+R2V0Q29udGVudCgpOwkNCgkJCWlmIChpc3NldCgkY29udGVudCkpCXJldHVybiAkY29udGVudC0+SWQoKTsNCgkJfWVsc2V7DQoJCQkkbm9kZSA9JiAkbWFuYWdlci0+c3VyZUdldE5vZGVCeUlkKCRhbGlhcyk7DQoJCQlpZiAoaXNzZXQoJG5vZGUpKSByZXR1cm4gJGFsaWFzOw0KCQl9DQoJfQ0KCQ0KCWZ1bmN0aW9uIGFkZGZyb250ZW5kdXJscygkaXRlbSwkcGFyYW1zLCRpZCwkcmV0dXJuaWQpew0KCQkkbmV4dGxldmVsID0gJHRoaXMtPmdldF9uZXh0bGV2ZWwoJGl0ZW0tPl9fd2hhdCk7DQoJCWlmKCEkbmV4dGxldmVsKXsNCgkJCSRuZXdwYXJhbXMgPSBhcnJheSgid2hhdCI9PiRpdGVtLT5fX3doYXQsICJhbGlhcyI9PiRpdGVtLT5hbGlhcyk7DQoJCX1lbHNlew0KCQkJJG5ld3BhcmFtcyA9IGFycmF5KCJ3aGF0Ij0+JG5leHRsZXZlbCwgInBhcmVudCI9PiRpdGVtLT5hbGlhcyk7DQoJCQlpZihpc3NldCgkcGFyYW1zWyJmb3JjZWxpc3QiXSkgJiYgJHBhcmFtc1siZm9yY2VsaXN0Il0pCSRuZXdwYXJhbXNbImZvcmNlbGlzdCJdID0gdHJ1ZTsNCgkJCWlmKGlzc2V0KCRwYXJhbXNbIm5icGVycGFnZSJdKSAmJiAkcGFyYW1zWyJuYnBlcnBhZ2UiXSA+IDApCSRuZXdwYXJhbXNbIm5icGVycGFnZSJdID0gJHBhcmFtc1sibmJwZXJwYWdlIl07DQoJCQlpZihpc3NldCgkcGFyYW1zWyJwYWdlaW5kZXgiXSkgJiYgJHBhcmFtc1sicGFnZWluZGV4Il0gPiAxKQkkbmV3cGFyYW1zWyJwYWdlaW5kZXgiXSA9ICRwYXJhbXNbInBhZ2VpbmRleCJdOw0KCQl9DQoJCSRpbmxpbmUgPSAoaXNzZXQoJHBhcmFtc1siaW5saW5lIl0pICYmICRwYXJhbXNbImlubGluZSJdKT90cnVlOmZhbHNlOw0KCQlpZigkaW5saW5lKQkkbmV3cGFyYW1zWyJpbmxpbmUiXSA9IHRydWU7DQoJCSRpdGVtLT5kZXRhaWxsaW5rID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAiZGVmYXVsdCIsICRyZXR1cm5pZCwgJGl0ZW0tPm5hbWUsICRuZXdwYXJhbXMsICIiLCBmYWxzZSwgJGlubGluZSwgIiIsIGZhbHNlLCAkdGhpcy0+QnVpbGRQcmV0dHlVcmxzKCRuZXdwYXJhbXMsICRyZXR1cm5pZCkpOw0KCQkkaXRlbS0+ZGV0YWlsdXJsID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAiZGVmYXVsdCIsICRyZXR1cm5pZCwgIiIsICRuZXdwYXJhbXMsICIiLCB0cnVlLCAkaW5saW5lLCAiIiwgZmFsc2UsICR0aGlzLT5CdWlsZFByZXR0eVVybHMoJG5ld3BhcmFtcywgJHJldHVybmlkKSk7DQoJCXJldHVybiAkaXRlbTsNCgl9DQoJDQoJZnVuY3Rpb24gYWRkQ2FydFVybHMoJGl0ZW1saXN0LCRpZCwkcmV0dXJuaWQpew0KCQkkQ2FydE1hZGVTaW1wbGUgPSBmYWxzZTsNCgkJaWYgKGlzc2V0KCRnQ21zLT5tb2R1bGVzWyJDYXJ0TWFkZVNpbXBsZSJdKSAmJiAkZ0Ntcy0+bW9kdWxlc1siQ2FydE1hZGVTaW1wbGUiXVsiYWN0aXZlIl0pCSRDYXJ0TWFkZVNpbXBsZSA9ICRnQ21zLT5tb2R1bGVzWyJDYXJ0TWFkZVNpbXBsZSJdWyJvYmplY3QiXTsNCgkJaWYoISRDYXJ0TWFkZVNpbXBsZSkJcmV0dXJuICRpdGVtbGlzdDsNCgkJJGNhcnRwYXJhbXMgPSBhcnJheSgicGVyZmFjdGlvbiI9PiJhZGRfcHJvZHVjdCIsICJxdHkiPT4xLCAicmV0dXJubW9kIj0+InZpbWVvcGxheWVyIik7DQoJCSRuZXdsaXN0ID0gYXJyYXkoKTsNCgkJZm9yZWFjaCgkaXRlbWxpc3QgYXMgJGl0ZW0pew0KCQkJJGNhcnRwYXJhbXNbInByb2R1Y3RfaWQiXSA9ICRpdGVtLT5pZDsNCgkJCSRjYXJ0cGFyYW1zWyJuYW1lIl0gPSAkaXRlbS0+bmFtZTsNCgkJCSRpdGVtLT5hZGR0b2NhcnRsaW5rID0gJENhcnRNYWRlU2ltcGxlLT5DcmVhdGVMaW5rKCRpZCwgImNhcnQiLCAkcmV0dXJuaWQsICR0aGlzLT5MYW5nKCJhZGR0b2NhcnQiKSwgJGNhcnRwYXJhbXMpOw0KCQkJJGl0ZW0tPmFkZHRvY2FydHVybCA9ICRDYXJ0TWFkZVNpbXBsZS0+Q3JlYXRlTGluaygkaWQsICJjYXJ0IiwgJHJldHVybmlkLCAiIiwgJGNhcnRwYXJhbXMsICIiLCB0cnVlKTsNCgkJCWFycmF5X3B1c2goJG5ld2xpc3QsICRpdGVtKTsNCgkJfQ0KCQlyZXR1cm4gJG5ld2xpc3Q7DQoJfQ0KDQoJZnVuY3Rpb24gYWRkYWRtaW5saW5rcygkaXRlbSwkcGFyYW1zLCRpZCwkcmV0dXJuaWQpew0KCQkvLyBhZGQgdGhlIGFkbWluIGxpbmtzIHRvIHRoZSBsZXZlbCBpdGVtcy4uLg0KCQkvKiAkcGFyYW1zIDogdGhlIGJhc2UgcGFyYW1ldGVycyBmb3IgdGhlIGFkbWluIGxpbmtzDQoJCQkJcHJlZml4DQoJCQkJdGFibGVuYW1lDQoJCQkJY2hpbGQgKGlmIHRoZSBsZXZlbCBoYXMgYSBjaGlsZCBsZXZlbCwgdGhlIG5hbWUgb2YgdGhlIGNoaWxkIGxldmVsKQ0KCQkJCWxldmVsbmFtZQ0KCQkJCXBhcmVudGRlZmF1bHQgKGJvb2wuLi4gd2hldGhlciBvciBub3QgdGhlcmUgaXMgYSBkZWZhdWx0IGVsZW1lbnQgZm9yIGVhY2ggcGFyZW50KQ0KCQkJCW9yZGVyYnlwYXJlbnQgKGJvb2wpDQoJCQkJYWRkZmlsZXMNCgkJCQlzaGFyZWNoaWxkcmVuIChib29sKQ0KCQkJCXNoYXJlZGJ5cGFyZW50cyAoYm9vbCkNCgkJCQlmaWxlcyAoc3RyaW5nLGNzdikNCgkJKi8NCg0KCQlnbG9iYWwgJGdDbXM7DQoJCSRhZG1pbnRoZW1lID0gJGdDbXMtPnZhcmlhYmxlc1siYWRtaW50aGVtZSJdOw0KCQkNCgkJaWYoICR0aGlzLT5HZXRQcmVmZXJlbmNlKCJyZXN0cmljdF9wZXJtaXNzaW9ucyIsZmFsc2UpICYmICEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCJ2aW1lb3BsYXllcl9hZHZhbmNlZCIpICYmICEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCJ2aW1lb3BsYXllcl9tYW5hZ2VfIi4kcGFyYW1zWyJsZXZlbG5hbWUiXSkgKXsNCgkJCS8vIG5vIGFjY2VzcyAtIHdlIGRvbid0IGNyZWF0ZSBsaW5rcw0KCQkJJGl0ZW0tPmVkaXRsaW5rID0gJGl0ZW0tPm5hbWU7DQoJCQkkaXRlbS0+ZGVsZXRlbGluayA9ICIiOw0KCQkJJGl0ZW0tPm1vdmVsaW5rcyA9ICIiOw0KCQkJJGl0ZW0tPnRvZ2dsZWFjdGl2ZSA9ICRpdGVtLT5hY3RpdmU9PTE/JGFkbWludGhlbWUtPkRpc3BsYXlJbWFnZSgiaWNvbnMvc3lzdGVtL3RydWUuZ2lmIiwiIiwiIiwiIiwic3lzdGVtaWNvbiIpOiRhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoImljb25zL3N5c3RlbS9mYWxzZS5naWYiLCIiLCIiLCIiLCJzeXN0ZW1pY29uIik7DQoJCQkkaXRlbS0+dG9nZ2xlZGVmYXVsdCA9ICRpdGVtLT5pc2RlZmF1bHQ9PTE/JGFkbWludGhlbWUtPkRpc3BsYXlJbWFnZSgiaWNvbnMvc3lzdGVtL3RydWUuZ2lmIiwiIiwiIiwiIiwic3lzdGVtaWNvbiIpOiRhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoImljb25zL3N5c3RlbS9mYWxzZS5naWYiLCIiLCIiLCIiLCJzeXN0ZW1pY29uIik7DQoJCQlyZXR1cm4gJGl0ZW07DQoJCX0NCgkJDQoJCSRwcmVmaXggPSAkcGFyYW1zWyJwcmVmaXgiXTsNCgkJJG1vdmVwYXJhbXMgPSAkcGFyYW1zOw0KCQkkbW92ZXBhcmFtc1skcHJlZml4LiJpZCJdID0gJGl0ZW0tPmlkOw0KCQkkbW92ZXBhcmFtc1siY3VycmVudG9yZGVyIl0gPSAkaXRlbS0+aXRlbV9vcmRlcjsNCgkJaWYoaXNzZXQoJG1vdmVwYXJhbXNbImZpbGVzIl0pKQl1bnNldCgkbW92ZXBhcmFtc1siZmlsZXMiXSk7DQoJCWlmKCRtb3ZlcGFyYW1zWyJvcmRlcmJ5cGFyZW50Il0gJiYgaXNzZXQoJGl0ZW0tPnBhcmVudF9pZCkpICRtb3ZlcGFyYW1zWyJwYXJlbnQiXSA9ICRpdGVtLT5wYXJlbnRfaWQ7DQoNCgkJJGl0ZW0tPmVkaXRsaW5rID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAiZWRpdCIuJHByZWZpeCwgJHJldHVybmlkLCAkaXRlbS0+bmFtZSwgYXJyYXkoJHByZWZpeC4iaWQiPT4kaXRlbS0+aWQpKTsNCgkJJGl0ZW0tPmRlbGV0ZWxpbmsgPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICJtb3Zlc29tZXRoaW5nIiwgJHJldHVybmlkLCAkYWRtaW50aGVtZS0+RGlzcGxheUltYWdlKCJpY29ucy9zeXN0ZW0vZGVsZXRlLmdpZiIsbGFuZygiZGVsZXRlIiksIiIsIiIsInN5c3RlbWljb24iKSwgYXJyYXlfbWVyZ2UoYXJyYXkoIm1vdmUiPT4iZGVsZXRlIiwiZmlsZXMiPT4kcGFyYW1zWyJmaWxlcyJdKSwkbW92ZXBhcmFtcyksJHRoaXMtPkxhbmcoInByb21wdF9kZWxldGUiLiRwYXJhbXNbImxldmVsbmFtZSJdLCBzdHJfcmVwbGFjZSgiJyIsIlwnIiwkaXRlbS0+bmFtZSkpKTsNCgkJJGl0ZW0tPm1vdmV1cGxpbmsgPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICJtb3Zlc29tZXRoaW5nIiwgJHJldHVybmlkLCAkYWRtaW50aGVtZS0+RGlzcGxheUltYWdlKCJpY29ucy9zeXN0ZW0vYXJyb3ctdS5naWYiLGxhbmcoInVwIiksIiIsIiIsInN5c3RlbWljb24iKSwgYXJyYXlfbWVyZ2UoYXJyYXkoIm1vdmUiPT4idXAiKSwkbW92ZXBhcmFtcykpOw0KCQkkaXRlbS0+bW92ZWRvd25saW5rID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAibW92ZXNvbWV0aGluZyIsICRyZXR1cm5pZCwgJGFkbWludGhlbWUtPkRpc3BsYXlJbWFnZSgiaWNvbnMvc3lzdGVtL2Fycm93LWQuZ2lmIixsYW5nKCJkb3duIiksIiIsIiIsInN5c3RlbWljb24iKSwgYXJyYXlfbWVyZ2UoYXJyYXkoIm1vdmUiPT4iZG93biIpLCRtb3ZlcGFyYW1zKSk7DQoJCSRpdGVtLT5tb3ZlbGlua3MgPSAkaXRlbS0+bW92ZXVwbGluayAuIiAiLiAkaXRlbS0+bW92ZWRvd25saW5rOw0KCQkNCgkJLy8gd2UgcmVidWlsZCB0aGUgcGFyYW1zLCBiZWNhdXNlIHdlIGRvbid0IG5lZWQgdG8gbWFueSBmb3IgdGhlIHRvZ2dsZSBhY3Rpb24NCgkJJHRvZ2dsZXBhcmFtcyA9IGFycmF5KCRwcmVmaXguImlkIj0+JGl0ZW0tPmlkLCAicHJlZml4Ij0+JHByZWZpeCwgInRhYmxlbmFtZSI9PiRwYXJhbXNbInRhYmxlbmFtZSJdLCAibGV2ZWxuYW1lIj0+JHBhcmFtc1sibGV2ZWxuYW1lIl0pOw0KCQlpZigkcGFyYW1zWyJwYXJlbnRkZWZhdWx0Il0gJiYgaXNzZXQoJGl0ZW0tPnBhcmVudF9pZCkpew0KCQkJJHRvZ2dsZXBhcmFtc1sicGFyZW50Il0gPSAkaXRlbS0+cGFyZW50X2lkOw0KCQkJJHRvZ2dsZXBhcmFtc1sicGFyZW50ZGVmYXVsdCJdID0gMTsNCgkJfQ0KCQlpZiAoJGl0ZW0tPmFjdGl2ZSA9PSAxKXsNCgkJCSRpdGVtLT50b2dnbGVhY3RpdmUgPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICJ0b2dnbGUiLCAkcmV0dXJuaWQsICRhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoImljb25zL3N5c3RlbS90cnVlLmdpZiIsbGFuZygic2V0ZmFsc2UiKSwiIiwiIiwic3lzdGVtaWNvbiIpLCBhcnJheV9tZXJnZShhcnJheSgid2hhdCI9PiJhY3RpdmUiLCJuZXd2YWwiPT4wKSwkdG9nZ2xlcGFyYW1zKSk7DQoJCX1lbHNlew0KCQkJJGl0ZW0tPnRvZ2dsZWFjdGl2ZSA9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgInRvZ2dsZSIsICRyZXR1cm5pZCwgJGFkbWludGhlbWUtPkRpc3BsYXlJbWFnZSgiaWNvbnMvc3lzdGVtL2ZhbHNlLmdpZiIsbGFuZygic2V0dHJ1ZSIpLCIiLCIiLCJzeXN0ZW1pY29uIiksIGFycmF5X21lcmdlKGFycmF5KCJ3aGF0Ij0+ImFjdGl2ZSIsIm5ld3ZhbCI9PjEpLCR0b2dnbGVwYXJhbXMpKTsNCgkJfQ0KDQoJCWlmICgkaXRlbS0+aXNkZWZhdWx0ID09IDEpew0KCQkJJGl0ZW0tPnRvZ2dsZWRlZmF1bHQgPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICJ0b2dnbGUiLCAkcmV0dXJuaWQsICRhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoImljb25zL3N5c3RlbS90cnVlLmdpZiIsbGFuZygic2V0ZmFsc2UiKSwiIiwiIiwic3lzdGVtaWNvbiIpLCBhcnJheV9tZXJnZShhcnJheSgid2hhdCI9PiJkZWZhdWx0IiwibmV3dmFsIj0+MCksJHRvZ2dsZXBhcmFtcykpOw0KCQl9ZWxzZXsNCgkJCSRpdGVtLT50b2dnbGVkZWZhdWx0ID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAidG9nZ2xlIiwgJHJldHVybmlkLCAkYWRtaW50aGVtZS0+RGlzcGxheUltYWdlKCJpY29ucy9zeXN0ZW0vZmFsc2UuZ2lmIixsYW5nKCJzZXR0cnVlIiksIiIsIiIsInN5c3RlbWljb24iKSwgYXJyYXlfbWVyZ2UoYXJyYXkoIndoYXQiPT4iZGVmYXVsdCIsIm5ld3ZhbCI9PjEpLCR0b2dnbGVwYXJhbXMpKTsNCgkJfQ0KCQlyZXR1cm4gJGl0ZW07DQoJfQ0KCQ0KCWZ1bmN0aW9uIGdldF9wYWdlX2N1cmwoJHVybCl7DQoJCSRjdXJsID0gY3VybF9pbml0KCk7DQoJCWN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9IRUFERVIsIDApOyANCgkJY3VybF9zZXRvcHQoJGN1cmwsIENVUkxPUFRfVVJMLCAkdXJsKTsNCgkJY3VybF9zZXRvcHQoJGN1cmwsIENVUkxPUFRfVElNRU9VVCwgNyk7DQoJCWN1cmxfc2V0b3B0KCRjdXJsLCBDVVJMT1BUX0NPTk5FQ1RUSU1FT1VULCA1KTsNCgkJY3VybF9zZXRvcHQoJGN1cmwsIENVUkxPUFRfRk9MTE9XTE9DQVRJT04sIDEpOw0KCQljdXJsX3NldG9wdCgkY3VybCwgQ1VSTE9QVF9GT1JCSURfUkVVU0UsIDEpOw0KCQljdXJsX3NldG9wdCgkY3VybCwgQ1VSTE9QVF9SRVRVUk5UUkFOU0ZFUiwgMSk7DQoJCSRodG1sID0gY3VybF9leGVjKCRjdXJsKTsNCgkJY3VybF9jbG9zZSgkY3VybCk7DQoJCXJldHVybiAkaHRtbDsJCQ0KCX0NCg0KCWZ1bmN0aW9uIGdldF92aW1lb190aHVtYm5haWwoJHZpZGVvSWQsICR0aHVtYnR5cGU9J21lZGl1bScpew0KCQlpZighaW5fYXJyYXkoJHRodW1idHlwZSwgYXJyYXkoJ2FycmF5JywgJ3NtYWxsJywgJ21lZGl1bScsICdsYXJnZScpKSkJJHRodW1idHlwZSA9ICdtZWRpdW0nOw0KCQkkdXJsID0gJ2h0dHA6Ly92aW1lby5jb20vYXBpL3YyL3ZpZGVvLycuJHZpZGVvSWQuJy5waHAnOw0KCQkkcGFnZSA9IGZpbGVfZ2V0X2NvbnRlbnRzKCR1cmwpOw0KCQlpZighJHBhZ2UpCSRwYWdlID0gJHRoaXMtPmdldF9wYWdlX2N1cmwoJHVybCk7DQoJCWlmKCEkcGFnZSkJcmV0dXJuIGZhbHNlOw0KCQkkY250ID0gdW5zZXJpYWxpemUoJHBhZ2UpOw0KCQlpZighaXNfYXJyYXkoJGNudCkgfHwgIWlzc2V0KCRjbnRbMF0pKQlyZXR1cm4gZmFsc2U7DQoJCWlmKCR0aHVtYnR5cGU9PSdhcnJheScpCXJldHVybiAkY250WzBdOw0KCQlyZXR1cm4gKGlzc2V0KCRjbnRbMF1bJ3RodW1ibmFpbF8nLiR0aHVtYnR5cGVdKT8kY250WzBdWyd0aHVtYm5haWxfJy4kdGh1bWJ0eXBlXTpmYWxzZSk7DQoJfQ0KDQoJZnVuY3Rpb24gZ2V0X3ByZWRlZmluZWRvcHRpb25zKCRmaWVsZCwkcmV0cmlldmU9ZmFsc2Upew0KCQkvLyByZXR1cm4gdGhlIG9wdGlvbnMgZm9yIGEgcHJlZGVmaW5lZCBsaXN0DQoJCXN3aXRjaCgkZmllbGQpew0KCQkJY2FzZSAidmlkZW9fdGh1bWJuYWlsIjoNCgkJCQkJcmV0dXJuIGFycmF5KAkkdGhpcy0+TGFuZygidmlkZW9fdGh1bWJuYWlsX29wdGlvbl8wIik9PiJzbWFsbCIsDQoJCQkJCQkJCQkkdGhpcy0+TGFuZygidmlkZW9fdGh1bWJuYWlsX29wdGlvbl8xIik9PiJtZWRpdW0iLA0KCQkJCQkJCQkJJHRoaXMtPkxhbmcoInZpZGVvX3RodW1ibmFpbF9vcHRpb25fMiIpPT4ibGFyZ2UiDQoJCQkJCQkJCSk7CQkJCQ0KCQkJCQlicmVhazsNCgkJfQ0KCX0NCg0KCWZ1bmN0aW9uIHNwbGl0X2ludG9fcGFnZXMoJGl0ZW1saXN0LCAkaWQsICRyZXR1cm5pZCwgJHBhcmFtcywgJGFjdGlvbj0iZGVmYXVsdCIsICRwcmV0dHl1cmxzPXRydWUpew0KCQlpZighaXNzZXQoJHBhcmFtc1sibmJwZXJwYWdlIl0pIHx8ICRwYXJhbXNbIm5icGVycGFnZSJdIDwgMSB8fCAkcGFyYW1zWyJuYnBlcnBhZ2UiXSA+IGNvdW50KCRpdGVtbGlzdCkpew0KCQkJcmV0dXJuICRpdGVtbGlzdDsNCgkJCSR0aGlzLT5zbWFydHktPmFzc2lnbigicGFnZW1lbnUiLGZhbHNlKTsNCgkJfQ0KCQkkbmV3bGlzdCA9IGFycmF5KCk7DQoJCSRwYWdlaW5kZXggPSAoaXNzZXQoJHBhcmFtc1sicGFnZWluZGV4Il0pICYmICRwYXJhbXNbInBhZ2VpbmRleCJdID4gMCk/JHBhcmFtc1sicGFnZWluZGV4Il06MTsNCgkJJGJlZ2luID0gKCRwYWdlaW5kZXggLSAxKSAqICRwYXJhbXNbIm5icGVycGFnZSJdOw0KCQkkaSA9ICRiZWdpbjsNCgkJd2hpbGUoJGkgPCAoJGJlZ2luICsgJHBhcmFtc1sibmJwZXJwYWdlIl0pKXsNCgkJCWlmKGlzc2V0KCRpdGVtbGlzdFskaV0pKSAkbmV3bGlzdFtdID0gJGl0ZW1saXN0WyRpXTsNCgkJCSRpKys7DQoJCX0NCgkJJG5icGFnZXMgPSBjZWlsKGNvdW50KCRpdGVtbGlzdCkgLyAkcGFyYW1zWyJuYnBlcnBhZ2UiXSApOw0KCQkkcGFnZW1lbnUgPSAiIjsNCgkJJG5ld3BhcmFtcyA9ICRwYXJhbXM7DQoJCSRuZXdwYXJhbXNbInBhZ2VpbmRleCJdID0gJHBhZ2VpbmRleCAtIDE7DQoJCWlmKCRuYnBhZ2VzID4gMSAmJiAkcGFnZWluZGV4ID4gMSkgJHBhZ2VtZW51IC49ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJGFjdGlvbiwgJHJldHVybmlkLCAiJmx0OyIsICRuZXdwYXJhbXMsICIiLCBmYWxzZSwgdHJ1ZSwgIiBjbGFzcz1cInByZXZpb3VzbGluayIuKCRwYWdlaW5kZXggPCAyPyIgZGlzYWJsZWQiOiIiKS4iXCIiLCBmYWxzZSwgJHByZXR0eXVybHM/JHRoaXMtPkJ1aWxkUHJldHR5VXJscygkbmV3cGFyYW1zLCAkcmV0dXJuaWQpOiIiKTsNCgkJJGkgPSAxOw0KCQkkbGlua3MgPSBhcnJheSgpOw0KCQl3aGlsZSgkaSA8PSAkbmJwYWdlcyAmJiAkbmJwYWdlcyA+IDEpew0KCQkJJG5ld3BhcmFtcyA9ICRwYXJhbXM7DQoJCQkkbmV3cGFyYW1zWyJwYWdlaW5kZXgiXSA9ICRpOw0KCQkJaWYoJGkgPT0gJHBhZ2VpbmRleCl7DQoJCQkJJGxpbmtzW10gPSAiPGEgY2xhc3M9XCJwYWdlbnVtYmVyIGN1cnJlbnRcIj4iLiRpLiI8L2E+IjsNCgkJCX1lbHNlew0KCQkJCSRsaW5rc1tdID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAkYWN0aW9uLCAkcmV0dXJuaWQsICRpLCAkbmV3cGFyYW1zLCAiIiwgZmFsc2UsIHRydWUsICIgY2xhc3M9XCJwYWdlbnVtYmVyXCIiLCBmYWxzZSwgJHByZXR0eXVybHM/JHRoaXMtPkJ1aWxkUHJldHR5VXJscygkbmV3cGFyYW1zLCAkcmV0dXJuaWQpOiIiKTsNCgkJCX0NCgkJCSRpKys7DQoJCX0NCgkJJGkgPSAwOw0KCQkkdG1wZmxhZyA9IHRydWU7DQoJCSRtYXhwYWdlcyA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCJtYXhzaG93bnBhZ2VzIiw3KTsNCgkJJG1heHBhZ2VzID0gKGludCkgJG1heHBhZ2VzOw0KCQlpZigkbWF4cGFnZXMgPCAxKQkkbWF4cGFnZXMgPSA5OTk5Ow0KCQl3aGlsZSgkaSA8IGNvdW50KCRsaW5rcykpew0KCQkJaWYoJGkgPCAoJG1heHBhZ2VzLTEpIHx8ICRuYnBhZ2VzIDw9ICRtYXhwYWdlcyl7DQoJCQkJJHBhZ2VtZW51IC49ICgkcGFnZW1lbnUgPT0gIiI/IiI6JHRoaXMtPkxhbmcoInBhZ2VtZW51ZGVsaW1pdGVyIikpLiRsaW5rc1skaV07DQoJCQl9ZWxzZWlmKCRpID09IGNvdW50KCRsaW5rcykpew0KCQkJCSRwYWdlbWVudSAuPSAkbGlua3NbJGldOw0KCQkJfWVsc2VpZigkdG1wZmxhZyl7DQoJCQkJJHRtcGZsYWcgPSBmYWxzZTsNCgkJCQkkcGFnZW1lbnUgLj0gIjxzcGFuIGNsYXNzPVwicGFnZW1lbnVvdmVyZmxvd1wiPiIuJHRoaXMtPkxhbmcoInBhZ2VtZW51b3ZlcmZsb3ciKS4iPC9zcGFuPiI7DQoJCQl9DQoJCQkkaSsrOw0KCQl9DQoJCSRuZXdwYXJhbXNbInBhZ2VpbmRleCJdID0gJHBhZ2VpbmRleCArIDE7DQoJCWlmKCRwYWdlbWVudSAhPSAiIil7DQoJCQlpZigkcGFnZWluZGV4IDwgJG5icGFnZXMpCSRwYWdlbWVudSAuPSAkdGhpcy0+TGFuZygicGFnZW1lbnVkZWxpbWl0ZXIiKS4kdGhpcy0+Q3JlYXRlTGluaygkaWQsICRhY3Rpb24sICRyZXR1cm5pZCwgIiZndDsiLCAkbmV3cGFyYW1zLCAiIiwgZmFsc2UsIHRydWUsICIgY2xhc3M9XCJuZXh0bGluayIuKCRwYWdlaW5kZXggPCAkbmJwYWdlcz8iIjoiIGRpc2FibGVkIikuIlwiIiwgZmFsc2UsICRwcmV0dHl1cmxzPyR0aGlzLT5CdWlsZFByZXR0eVVybHMoJG5ld3BhcmFtcywgJHJldHVybmlkKToiIik7DQoJCQkkcGFnZW1lbnUgPSAiPGRpdiBjbGFzcz1cInBhZ2luYXRpb25cIj4iLiRwYWdlbWVudS4iPC9kaXY+IjsNCgkJfQ0KCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oInBhZ2VtZW51IiwkcGFnZW1lbnUpOw0KCQkkaXRlbWxpc3QgPSAkbmV3bGlzdDsNCgkJcmV0dXJuICRpdGVtbGlzdDsNCgl9DQoJDQoJZnVuY3Rpb24gZ2V0X3F1ZXJpZXMoJHdoZXJlPWFycmF5KCksICRhZG1pbj1mYWxzZSwgJGlkPWZhbHNlLCAkcmV0dXJuaWQ9ZmFsc2Upew0KCQlnbG9iYWwgJGdDbXM7DQoJCSRkYiA9JiAkdGhpcy0+R2V0RGIoKTsNCgkJJHF1ZXJ5ID0gIlNFTEVDVCAqIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV92aW1lb3BsYXllcl9zYXZlZF9xdWVyaWVzIjsNCgkJJHdoZXJlY2xhdXNlID0gIiI7DQoJCSR3aGVyZXZhbHVlcyA9IGFycmF5KCk7DQoJCWlmKGNvdW50KCR3aGVyZSk+MCl7DQoJCQlmb3JlYWNoKCR3aGVyZSBhcyAka2V5PT4kdmFsdWUpew0KCQkJCSR3aGVyZWNsYXVzZSAuPSAoJHdoZXJlY2xhdXNlID09ICIiPyIgV0hFUkUgIjoiIEFORCAiKS4ka2V5LiI9PyI7DQoJCQkJJHdoZXJldmFsdWVzW10gPSAkdmFsdWU7DQoJCQl9DQoJCX0NCgkJJHF1ZXJ5IC49ICR3aGVyZWNsYXVzZTsNCgkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwkd2hlcmV2YWx1ZXMpOw0KCQkkaXRlbWxpc3QgPSBhcnJheSgpOw0KCQl3aGlsZSAoJGRicmVzdWx0ICYmICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpew0KCQkJJGl0ZW0gPSBuZXcgc3RkQ2xhc3MoKTsNCgkJCWZvcmVhY2goJHJvdyBhcyAka2V5PT4kdmFsdWUpew0KCQkJCSRpdGVtLT4ka2V5ID0gJHZhbHVlOw0KCQkJfQ0KCQkJJGl0ZW0tPndoZXJldmFsdWVzID0gdW5zZXJpYWxpemUoJGl0ZW0tPndoZXJldmFsdWVzKTsNCgkJCWlmKCFpc19hcnJheSgkaXRlbS0+dmFsdWVzKSkJJGl0ZW0tPnZhbHVlcyA9IGFycmF5KCk7DQoJCQlpZigkYWRtaW4pew0KCQkJCSRpdGVtLT5hY3Rpb25zID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAiZGVsZXRlcXVlcnkiLCAkcmV0dXJuaWQsICRnQ21zLT52YXJpYWJsZXNbImFkbWludGhlbWUiXS0+RGlzcGxheUltYWdlKCJpY29ucy9zeXN0ZW0vZGVsZXRlLmdpZiIsbGFuZygiZGVsZXRlIiksIiIsIiIsInN5c3RlbWljb24iKSwgYXJyYXkoInF1ZXJ5aWQiPT4kaXRlbS0+aWQpKTsNCgkJCQkkaXRlbS0+YWN0aW9ucyAuPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICJ0ZXN0cXVlcnkiLCAkcmV0dXJuaWQsICRnQ21zLT52YXJpYWJsZXNbImFkbWludGhlbWUiXS0+RGlzcGxheUltYWdlKCJpY29ucy9zeXN0ZW0vdmlldy5naWYiLGxhbmcoInZpZXciKSwiIiwiIiwic3lzdGVtaWNvbiIpLCBhcnJheSgicXVlcnlpZCI9PiRpdGVtLT5pZCkpOw0KCQkJfQ0KCQkJJGl0ZW1saXN0W10gPSAkaXRlbTsNCgkJfQ0KCQlyZXR1cm4gKGNvdW50KCRpdGVtbGlzdCk+MD8kaXRlbWxpc3Q6ZmFsc2UpOw0KCX0NCgkNCglmdW5jdGlvbiBjcmVhdGVGaWVsZEZvcm0oJHdoYXQsJGlkLCRhc3NpZ249dHJ1ZSl7DQoJCXJlcXVpcmUgImZ1bmN0aW9uLmNyZWF0ZUZpZWxkRm9ybS5waHAiOw0KCX0NCgkNCglmdW5jdGlvbiBnZXRXaGVyZUZyb21QYXJhbXMoJHBhcmFtcywgJGh0bWxlbmNvZGVkPWZhbHNlKXsNCgkJJGRiID0mICR0aGlzLT5HZXREYigpOw0KCQkkd2hlcmUgPSBhcnJheSgpOw0KCQlmb3JlYWNoKCRwYXJhbXMgYXMgJGtleT0+JHZhbHVlKXsNCgkJCWlmKHN1YnN0cigka2V5LDAsNikgPT0gImZpZWxkXyIgJiYgdHJpbSgkdmFsdWUpICE9ICIiKXsNCgkJCQkka2V5ID0gc3Vic3RyKCRrZXksNik7DQoJCQkJaWYoaXNfYXJyYXkoJHZhbHVlKSAmJiBjb3VudCgkdmFsdWUpPT0xKQkkdmFsdWUgPSAkdmFsdWVbMF07DQoJCQkJJGNvbXBhcmUgPSBpc3NldCgkcGFyYW1zWyJjb21wYXJlXyIuJGtleV0pPyRwYXJhbXNbImNvbXBhcmVfIi4ka2V5XTowOw0KCQkJCWlmKCR2YWx1ZSA9PSAiX19kYXRlX2ZpZWxkIil7DQoJCQkJCWlmKCRjb21wYXJlICE9ICJOQSIpew0KCQkJCQkJLy8gVGhlIGNvZGUgaXMgc3VjaCB0aGF0IHJlbW92aW5nIGFueSBwYXJ0IG9mIHRoZSB0aW1lIGlucHV0IGZyb20gdGhlIGZvcm0gd2lsbCByZXN1bHQgaW4gdXNpbmcgdGhlIGRlZmF1bHQgdmFsdWUNCgkJCQkJCSR0aW1laW5wdXRzID0gYXJyYXkoIkhvdXIiPT4iSCIsIk1pbnV0ZSI9PiJpIiwiU2Vjb25kIj0+InMiLCJNb250aCI9PiJuIiwiRGF5Ij0+ImoiLCJZZWFyIj0+IlkiKTsNCgkJCQkJCSRwYXJ0cyA9IGFycmF5KCk7DQoJCQkJCQlmb3JlYWNoKCR0aW1laW5wdXRzIGFzICRpbnB1dG5hbWU9PiRkYXRlcGFydCl7CQ0KCQkJCQkJCSRwYXJ0c1tdID0gKGlzc2V0KCRwYXJhbXNbImRhdGVfIi4ka2V5LiJfIi4kaW5wdXRuYW1lXSkpPyRwYXJhbXNbImRhdGVfIi4ka2V5LiJfIi4kaW5wdXRuYW1lXTpkYXRlKCRkYXRlcGFydCk7DQoJCQkJCQl9DQoJCQkJCQkkdmFsdWUgPSBta3RpbWUoJHBhcnRzWzBdLCRwYXJ0c1sxXSwkcGFydHNbMl0sJHBhcnRzWzNdLCRwYXJ0c1s0XSwkcGFydHNbNV0pOw0KCQkJCQkJJHZhbHVlID0gc3RyX3JlcGxhY2UoIiciLCIiLCRkYi0+REJUaW1lU3RhbXAoJHZhbHVlKSk7DQoJCQkJCQkNCgkJCQkJCWlmKCRjb21wYXJlID09IDUpew0KCQkJCQkJCSRwYXJ0cyA9IGFycmF5KCk7DQoJCQkJCQkJZm9yZWFjaCgkdGltZWlucHV0cyBhcyAkaW5wdXRuYW1lPT4kZGF0ZXBhcnQpewkNCgkJCQkJCQkJJHBhcnRzW10gPSAoaXNzZXQoJHBhcmFtc1siZGF0ZV8iLiRrZXkuIl9wYXJ0Ml8iLiRpbnB1dG5hbWVdKSk/JHBhcmFtc1siZGF0ZV8iLiRrZXkuIl9wYXJ0Ml8iLiRpbnB1dG5hbWVdOmRhdGUoJGRhdGVwYXJ0KTsNCgkJCQkJCQl9DQoJCQkJCQkJJHZhbHVlMiA9IG1rdGltZSgkcGFydHNbMF0sJHBhcnRzWzFdLCRwYXJ0c1syXSwkcGFydHNbM10sJHBhcnRzWzRdLCRwYXJ0c1s1XSk7DQoJCQkJCQkJJHZhbHVlMiA9IHN0cl9yZXBsYWNlKCInIiwiIiwkZGItPkRCVGltZVN0YW1wKCR2YWx1ZTIpKTsNCgkJCQkJCQkkd2hlcmVbXSA9IGFycmF5KCRrZXksIGFycmF5KCR2YWx1ZSwkdmFsdWUyKSwgJGNvbXBhcmUpOw0KCQkJCQkJfWVsc2V7CQ0KCQkJCQkJCSR3aGVyZVtdID0gYXJyYXkoJGtleSwgJHZhbHVlLCAkY29tcGFyZSk7DQoJCQkJCQl9DQoJCQkJCX0NCgkJCQl9ZWxzZXsNCgkJCQkJaWYoaXNfYXJyYXkoJHZhbHVlKSl7DQoJCQkJCQlmb3JlYWNoKCR2YWx1ZSBhcyAkb25ldmFsdWUpCSR3aGVyZVtdID0gYXJyYXkoJGtleSwgJG9uZXZhbHVlLCAxKTsNCgkJCQkJfWVsc2VpZigkY29tcGFyZSA9PSAxKXsNCgkJCQkJCSRrZXl3b3JkcyA9ICR0aGlzLT5wYXJzZWtleXdvcmRzKCR2YWx1ZSk7DQoJCQkJCQlmb3JlYWNoKCRrZXl3b3JkcyBhcyAkdmFsdWUpew0KCQkJCQkJCWlmKCRodG1sZW5jb2RlZCkJJHZhbHVlID0gaHRtbF9lbnRpdHlfZGVjb2RlKCR2YWx1ZSk7DQoJCQkJCQkJJHZhbHVlID0gYWRkc2xhc2hlcygkdmFsdWUpOwkJCQkJCQkNCgkJCQkJCQkkd2hlcmVbXSA9IGFycmF5KCRrZXksICR2YWx1ZSwgJGNvbXBhcmUpOw0KCQkJCQkJfQ0KCQkJCQl9ZWxzZXsNCgkJCQkJCWlmKCRodG1sZW5jb2RlZCkJJHZhbHVlID0gaHRtbF9lbnRpdHlfZGVjb2RlKCR2YWx1ZSk7DQoJCQkJCQkkdmFsdWUgPSBhZGRzbGFzaGVzKCR2YWx1ZSk7DQoJCQkJCQkkd2hlcmVbXSA9IGFycmF5KCRrZXksICR2YWx1ZSwgJGNvbXBhcmUpOw0KCQkJCQl9DQoJCQkJfQkJCQkNCgkJCX0NCgkJfQkJDQoJCXJldHVybiAkd2hlcmU7DQoJfQ0KDQoNCg0KCWZ1bmN0aW9uIGJ1aWxkV2hlcmUoJHdoZXJlPWFycmF5KCksJHdoYXQ9IiIpew0KCQkkbXVsdGlwbGVsaXN0ZmllbGRzID0gYXJyYXkoKTsNCgkJJHdoZXJlY2xhdXNlID0gIkEuYWN0aXZlPTEiOw0KCQkkd2hlcmV2YWx1ZXMgPSBhcnJheSgpOw0KCQlmb3JlYWNoKCR3aGVyZSBhcyAkY2xhdXNlKXsNCgkJCWlmKGluX2FycmF5KCR3aGF0LiJfIi4kY2xhdXNlWzBdLCAkbXVsdGlwbGVsaXN0ZmllbGRzKSl7DQoJCQkJLy8gbGlzdCB3aXRoIG11bHRpcGxlIHNlbGVjdGVkIHZhbHVlcyBhcmUgc2F2ZWQgaW4gYSBzZXJpYWxpemVkIGFycmF5LCBzbyB3ZSBoYXZlIHRvIHR3ZWFrIHRoZSB2YWx1ZQ0KCQkJCSRjbGF1c2VbMV0gPSAnIicuJGNsYXVzZVsxXS4nIic7DQoJCQkJJGNsYXVzZVsyXSA9IDE7DQoJCQl9DQoJCQlpZigkY2xhdXNlWzBdID09ICJwYXJlbnQiKXsNCgkJCQkJJGNyaXRlcmlhID0gZXhwbG9kZSgiLCIsJGNsYXVzZVsxXSk7DQoJCQkJCWlmKGNvdW50KCRjcml0ZXJpYSkgPiAxKXsNCgkJCQkJCSR0bXAgPSAiIjsNCgkJCQkJCWZvcmVhY2goJGNyaXRlcmlhIGFzICRjcml0KXsNCgkJCQkJCQkkdG1wID0gKCR0bXA9PSIiPyIiOiIgT1IgIikuIkEucGFyZW50PSIuJGNyaXQ7DQoJCQkJCQl9DQoJCQkJCQkkdG1wID0gIiBBTkQgKCIuJHRtcC4iKSI7DQoJCQkJCX1lbHNlew0KCQkJCQkJJHRtcCA9ICIgQU5EIEEucGFyZW50PT8iOw0KCQkJCQkJJHdoZXJldmFsdWVzW10gPSAkY2xhdXNlWzFdOw0KCQkJCQl9DQoJCQkJCSR3aGVyZWNsYXVzZSAuPSAkdG1wOw0KCQkJCQ0KCQkJfWVsc2V7DQoJCQkJc3dpdGNoKCRjbGF1c2VbMl0pew0KCQkJCQljYXNlIDA6DQoJCQkJCQkkd2hlcmVjbGF1c2UgLj0gIiBBTkQgQS4iLiRjbGF1c2VbMF0uIj0/IjsNCgkJCQkJCSR3aGVyZXZhbHVlc1tdID0gYWRkc2xhc2hlcygkY2xhdXNlWzFdKTsJCQkJCQ0KCQkJCQkJYnJlYWs7DQoJCQkJCQ0KCQkJCQljYXNlIDE6DQoJCQkJCQkkd2hlcmVjbGF1c2UgLj0gIiBBTkQgQS4iLiRjbGF1c2VbMF0uIiBMSUtFICclIi5hZGRzbGFzaGVzKCRjbGF1c2VbMV0pLiIlJyI7DQoJCQkJCQlicmVhazsNCgkJCQkJDQoJCQkJCWNhc2UgMjoNCgkJCQkJCSR3aGVyZWNsYXVzZSAuPSAiIEFORCBBLiIuJGNsYXVzZVswXS4iICE9ID8iOw0KCQkJCQkJJHdoZXJldmFsdWVzW10gPSBhZGRzbGFzaGVzKCRjbGF1c2VbMV0pOw0KCQkJCQkJYnJlYWs7DQoJCQkJCQkNCgkJCQkJY2FzZSAzOg0KCQkJCQkJJHdoZXJlY2xhdXNlIC49ICIgQU5EIEEuIi4kY2xhdXNlWzBdLiIgPiA/IjsNCgkJCQkJCSR3aGVyZXZhbHVlc1tdID0gYWRkc2xhc2hlcygkY2xhdXNlWzFdKTsJCQkJCQ0KCQkJCQkJYnJlYWs7DQoJCQkJCQkNCgkJCQkJY2FzZSA0Og0KCQkJCQkJJHdoZXJlY2xhdXNlIC49ICIgQU5EIEEuIi4kY2xhdXNlWzBdLiIgPCA/IjsNCgkJCQkJCSR3aGVyZXZhbHVlc1tdID0gYWRkc2xhc2hlcygkY2xhdXNlWzFdKTsJCQkJCQ0KCQkJCQkJYnJlYWs7DQoJCQkJCWNhc2UgNToNCgkJCQkJCSR3aGVyZWNsYXVzZSAuPSAiIEFORCAoQS4iLiRjbGF1c2VbMF0uIiA+ID8gQU5EIEEuIi4kY2xhdXNlWzBdLiIgPCA/KSI7DQoJCQkJCQkkd2hlcmV2YWx1ZXNbXSA9IGFkZHNsYXNoZXMoJGNsYXVzZVsxXVswXSk7DQoJCQkJCQkkd2hlcmV2YWx1ZXNbXSA9IGFkZHNsYXNoZXMoJGNsYXVzZVsxXVsxXSk7DQoJCQkJCQlicmVhazsJCQkJCQ0KCQkJCX0NCgkJCX0NCgkJfQ0KCQlyZXR1cm4gYXJyYXkoJHdoZXJlY2xhdXNlLCAkd2hlcmV2YWx1ZXMpOw0KCX0NCg0KCWZ1bmN0aW9uIGdldF9sZXZlbF9jYXRlZ29yeSgkd2hlcmU9YXJyYXkoKSwkYWRtaW49ZmFsc2UsJGlkPSIiLCRyZXR1cm5pZD0iIiwkb3JkZXI9ZmFsc2UsJGxpbWl0PTAsJGN1c3RvbXdoZXJlPWZhbHNlLCRjdXN0b212YWx1ZXM9YXJyYXkoKSwkY3VzdG9tb3JkZXI9ZmFsc2Upew0KCQlnbG9iYWwgJGdDbXM7DQoJCWlmKCRhZG1pbikJJGFkbWludGhlbWUgPSAkZ0Ntcy0+dmFyaWFibGVzWyJhZG1pbnRoZW1lIl07DQoJCWlmKCEkb3JkZXIpCSRvcmRlciA9ICIiOw0KCQkkZGIgPSYgJHRoaXMtPkdldERiKCk7DQoJCSRmaWVsZHMgPSBhcnJheSgiZGVzY3JpcHRpb24iLCJpZCIsIm5hbWUiLCJhbGlhcyIsIml0ZW1fb3JkZXIiLCJhY3RpdmUiLCJpc2RlZmF1bHQiKTsNCgkJDQoJCSR3aGVyZXN0cmluZyA9ICIiOw0KCQkkd2hlcmV2YWx1ZXMgPSBhcnJheSgpOw0KCQkNCg0KCQlpZigkY3VzdG9td2hlcmUpew0KCQkJJHdoZXJlc3RyaW5nID0gJGN1c3RvbXdoZXJlOw0KCQkJJHdoZXJldmFsdWVzID0gJGN1c3RvbXZhbHVlczsNCgkJfWVsc2V7DQoJCQlmb3JlYWNoKCR3aGVyZSBhcyAka2V5PT4kdmFsdWUpew0KCQkJCWlmKGluX2FycmF5KHN0cnRvbG93ZXIoJGtleSksICRmaWVsZHMpKXsNCgkJCQkJJHdoZXJlc3RyaW5nIC49ICgkd2hlcmVzdHJpbmcgPT0gIiI/IiI6IiBBTkQgIikuJGtleS4iPT8iOw0KCQkJCQkkd2hlcmV2YWx1ZXNbXSA9ICR2YWx1ZTsNCgkJCQl9DQoJCQl9DQoJCX0NCgkJJHF1ZXJ5ID0gIlNFTEVDVCAqIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV92aW1lb3BsYXllcl9jYXRlZ29yeSBBICIuKCR3aGVyZXN0cmluZyA9PSAiIj8iIjoiIFdIRVJFICIuJHdoZXJlc3RyaW5nKTsNCgkJJHF1ZXJ5IC49ICgkY3VzdG9tb3JkZXI/IiBPUkRFUiBCWSAiLiRjdXN0b21vcmRlcjoiIE9SREVSIEJZIGl0ZW1fb3JkZXIiKTsNCg0KCQlpZigkbGltaXQgPiAwKQkkcXVlcnkgLj0gIiBMSU1JVCAiLiRsaW1pdDsNCg0KCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCR3aGVyZXZhbHVlcyk7DQoJCSRpdGVtbGlzdCA9IGFycmF5KCk7DQoJCXdoaWxlICgkZGJyZXN1bHQgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSl7DQoJCQkkaXRlbSA9IG5ldyBzdGRDbGFzcygpOw0KCQkJJGl0ZW0tPl9fd2hhdCA9ICJjYXRlZ29yeSI7DQoJCQlmb3JlYWNoKCRyb3cgYXMgJGtleT0+JHZhbHVlKXsNCgkJCQkkaXRlbS0+JGtleSA9ICR2YWx1ZTsNCgkJCX0NCgkJCSRpdGVtLT5kZXNjcmlwdGlvbiA9IHN0cmlwc2xhc2hlcygkaXRlbS0+ZGVzY3JpcHRpb24pOw0KCQkJJGl0ZW0tPm5hbWUgPSBzdHJpcHNsYXNoZXMoJGl0ZW0tPm5hbWUpOw0KCQkJJGl0ZW0tPmFsaWFzID0gc3RyaXBzbGFzaGVzKCRpdGVtLT5hbGlhcyk7DQoJCSRpdGVtLT5uYmNoaWxkcmVuID0gJHRoaXMtPmNvdW50c29tZXRoaW5nKCJ2aWRlbyIsImlkIixhcnJheSgicGFyZW50IiA9PiAkaXRlbS0+aWQpKTsNCgkJDQoJCQlpZigkYWRtaW4gPT0gdHJ1ZSl7DQoJCQkJLy8gJHBhcm1zIHdpbGwgYmUgdGhlIGJhc2UgZm9yIHBhcmFtZXRlcnMgb2YgdGhlIGFkbWluIGxpbmtzDQoJCQkJJHBhcm1zID0gYXJyYXkoDQoJCQkJCSJwcmVmaXgiPT4iQSIsDQoJCQkJCSJ0YWJsZW5hbWUiPT4idmltZW9wbGF5ZXJfY2F0ZWdvcnkiLA0KCQkJCQkibGV2ZWxuYW1lIj0+ImNhdGVnb3J5IiwNCgkJCQkJImNoaWxkIj0+InZpbWVvcGxheWVyX3ZpZGVvIiwNCgkJCQkJInBhcmVudGRlZmF1bHQiPT5mYWxzZSwNCgkJCQkJIm9yZGVyYnlwYXJlbnQiPT50cnVlLA0KCQkJCQkiYWRkZmlsZXMiPT4iIiwNCgkJCQkJInNoYXJlY2hpbGRyZW4iPT5mYWxzZSwNCgkJCQkJInNoYXJlZGJ5cGFyZW50cyI9PmZhbHNlLA0KCQkJCQkiZmlsZXMiPT4iIg0KCQkJCQkpOw0KCQkJCSRpdGVtID0gJHRoaXMtPmFkZGFkbWlubGlua3MoJGl0ZW0sJHBhcm1zLCRpZCwkcmV0dXJuaWQpOw0KCQkJfQ0KCQkJYXJyYXlfcHVzaCgkaXRlbWxpc3QsJGl0ZW0pOw0KCQl9DQoNCgkJcmV0dXJuICRpdGVtbGlzdDsNCgl9DQoNCglmdW5jdGlvbiBnZXRfbGV2ZWxfdmlkZW8oJHdoZXJlPWFycmF5KCksJGFkbWluPWZhbHNlLCRpZD0iIiwkcmV0dXJuaWQ9IiIsJG9yZGVyPWZhbHNlLCRsaW1pdD0wLCRjdXN0b213aGVyZT1mYWxzZSwkY3VzdG9tdmFsdWVzPWFycmF5KCksJGN1c3RvbW9yZGVyPWZhbHNlKXsNCgkJZ2xvYmFsICRnQ21zOw0KCQlpZigkYWRtaW4pCSRhZG1pbnRoZW1lID0gJGdDbXMtPnZhcmlhYmxlc1siYWRtaW50aGVtZSJdOw0KCQlpZighJG9yZGVyKQkkb3JkZXIgPSAiIjsNCgkJJGRiID0mICR0aGlzLT5HZXREYigpOw0KCQkkZmllbGRzID0gYXJyYXkoInZpZGVvaWQiLCJkZXNjcmlwdGlvbiIsInRodW1ibmFpbCIsInBhcmVudCIsImlkIiwibmFtZSIsImFsaWFzIiwiaXRlbV9vcmRlciIsImFjdGl2ZSIsImlzZGVmYXVsdCIpOw0KCQkNCgkJJHdoZXJlc3RyaW5nID0gIiI7DQoJCSR3aGVyZXZhbHVlcyA9IGFycmF5KCk7DQoJCQ0KDQoJCWlmKCRjdXN0b213aGVyZSl7DQoJCQkkd2hlcmVzdHJpbmcgPSAkY3VzdG9td2hlcmU7DQoJCQkkd2hlcmV2YWx1ZXMgPSAkY3VzdG9tdmFsdWVzOw0KCQl9ZWxzZXsNCgkJCWZvcmVhY2goJHdoZXJlIGFzICRrZXk9PiR2YWx1ZSl7DQoJCQkJaWYoJGtleSA9PSAicGFyZW50Iil7DQoJCQkJCSR3aGVyZXN0cmluZyAuPSAoJHdoZXJlc3RyaW5nID09ICIiPyIiOiIgQU5EICIpLiJCLmFsaWFzPT8iOw0KCQkJCQkkd2hlcmV2YWx1ZXNbXSA9ICR2YWx1ZTsNCgkJCQl9ZWxzZWlmKCRrZXkgPT0gInBhcmVudF9pZCIpew0KCQkJCQkkd2hlcmVzdHJpbmcgLj0gKCR3aGVyZXN0cmluZyA9PSAiIj8iIjoiIEFORCAiKS4iQi5pZD0/IjsNCgkJCQkJJHdoZXJldmFsdWVzW10gPSAkdmFsdWU7DQoJCQkJfWVsc2VpZihpbl9hcnJheShzdHJ0b2xvd2VyKCRrZXkpLCAkZmllbGRzKSl7DQoJCQkJCSR3aGVyZXN0cmluZyAuPSAoJHdoZXJlc3RyaW5nID09ICIiPyIiOiIgQU5EICIpLiJBLiIuJGtleS4iPT8iOw0KCQkJCQkkd2hlcmV2YWx1ZXNbXSA9ICR2YWx1ZTsNCgkJCQl9DQoJCQl9DQoJCX0NCgkJDQoJCSRxdWVyeSA9ICJTRUxFQ1QgQS4qLCBCLmlkIHBhcmVudF9pZCwgQi5uYW1lIHBhcmVudF9uYW1lLCBCLmFsaWFzIHBhcmVudF9hbGlhcyBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfdmltZW9wbGF5ZXJfdmlkZW8gQSwgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV92aW1lb3BsYXllcl9jYXRlZ29yeSBCIFdIRVJFIEEucGFyZW50ID0gQi5pZCAiLigkd2hlcmVzdHJpbmcgPT0gIiI/IiI6IiBBTkQgIikuJHdoZXJlc3RyaW5nOw0KCQlpZigkY3VzdG9tb3JkZXIpew0KCQkJICRxdWVyeSAuPSAiIE9SREVSIEJZIEEuIi4kY3VzdG9tb3JkZXI7DQoJCX1lbHNlaWYoJG9yZGVyID09ICJtb2RpZmllZCIpew0KCQkJICRxdWVyeSAuPSAiIE9SREVSIEJZIEEuZGF0ZV9tb2RpZmllZCBERVNDIjsNCgkJfWVsc2VpZigkb3JkZXIgPT0gImNyZWF0ZWQiKXsNCgkJCSAkcXVlcnkgLj0gIiBPUkRFUiBCWSBBLmlkIERFU0MiOw0KCQl9ZWxzZWlmKCAkb3JkZXIgIT0gIiIgJiYgKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCJhbGxvd19jb21wbGV4X29yZGVyIixmYWxzZSkgfHwgaW5fYXJyYXkoc3RydG9sb3dlcigkb3JkZXIpLCAkZmllbGRzKSkgKXsNCgkJCSRxdWVyeSAuPSAiIE9SREVSIEJZIEEuIi4kb3JkZXI7DQoJCX1lbHNlew0KCQkJICRxdWVyeSAuPSAiIE9SREVSIEJZIEIuaXRlbV9vcmRlciwgQS5pdGVtX29yZGVyIjsNCgkJfQ0KCQlpZigkbGltaXQgPiAwKQkkcXVlcnkgLj0gIiBMSU1JVCAiLiRsaW1pdDsNCg0KCQkJJG9wdGlvbnNfdGh1bWJuYWlsID0gJHRoaXMtPmdldF9wcmVkZWZpbmVkb3B0aW9ucygidmlkZW9fdGh1bWJuYWlsIix0cnVlKTsNCgkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwkd2hlcmV2YWx1ZXMpOw0KCQkkaXRlbWxpc3QgPSBhcnJheSgpOw0KCQl3aGlsZSAoJGRicmVzdWx0ICYmICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpew0KCQkJJGl0ZW0gPSBuZXcgc3RkQ2xhc3MoKTsNCgkJCSRpdGVtLT5fX3doYXQgPSAidmlkZW8iOw0KCQkJZm9yZWFjaCgkcm93IGFzICRrZXk9PiR2YWx1ZSl7DQoJCQkJJGl0ZW0tPiRrZXkgPSAkdmFsdWU7DQoJCQl9DQoJCQkkaXRlbS0+dmlkZW9pZCA9IHN0cmlwc2xhc2hlcygkaXRlbS0+dmlkZW9pZCk7DQoJCQkkaXRlbS0+ZGVzY3JpcHRpb24gPSBzdHJpcHNsYXNoZXMoJGl0ZW0tPmRlc2NyaXB0aW9uKTsNCgkJCS8vJGl0ZW0tPnRodW1ibmFpbCA9IChpc3NldCgkb3B0aW9uc190aHVtYm5haWxbJGl0ZW0tPnRodW1ibmFpbF0pKT8kaXRlbS0+dGh1bWJuYWlsOmZhbHNlOw0KCQkJLy8kaXRlbS0+dGh1bWJuYWlsX25hbWV2YWx1ZSA9IChpc3NldCgkb3B0aW9uc190aHVtYm5haWxbJGl0ZW0tPnRodW1ibmFpbF0pKT8kb3B0aW9uc190aHVtYm5haWxbJGl0ZW0tPnRodW1ibmFpbF06IiI7DQoJCQkkaXRlbS0+bmFtZSA9IHN0cmlwc2xhc2hlcygkaXRlbS0+bmFtZSk7DQoJCQkkaXRlbS0+YWxpYXMgPSBzdHJpcHNsYXNoZXMoJGl0ZW0tPmFsaWFzKTsNCg0KCQkJaWYoJGFkbWluID09IHRydWUpew0KCQkJCS8vICRwYXJtcyB3aWxsIGJlIHRoZSBiYXNlIGZvciBwYXJhbWV0ZXJzIG9mIHRoZSBhZG1pbiBsaW5rcw0KCQkJCSRwYXJtcyA9IGFycmF5KA0KCQkJCQkicHJlZml4Ij0+IkIiLA0KCQkJCQkidGFibGVuYW1lIj0+InZpbWVvcGxheWVyX3ZpZGVvIiwNCgkJCQkJImxldmVsbmFtZSI9PiJ2aWRlbyIsDQoJCQkJCSJjaGlsZCI9PmZhbHNlLA0KCQkJCQkicGFyZW50ZGVmYXVsdCI9PmZhbHNlLA0KCQkJCQkib3JkZXJieXBhcmVudCI9PnRydWUsDQoJCQkJCSJhZGRmaWxlcyI9PiIiLA0KCQkJCQkic2hhcmVjaGlsZHJlbiI9PmZhbHNlLA0KCQkJCQkic2hhcmVkYnlwYXJlbnRzIj0+ZmFsc2UsDQoJCQkJCSJmaWxlcyI9PiIiDQoJCQkJCSk7DQoJCQkJJGl0ZW0gPSAkdGhpcy0+YWRkYWRtaW5saW5rcygkaXRlbSwkcGFybXMsJGlkLCRyZXR1cm5pZCk7DQoJCQl9DQoJCQlhcnJheV9wdXNoKCRpdGVtbGlzdCwkaXRlbSk7DQoJCX0NCg0KCQlyZXR1cm4gJGl0ZW1saXN0Ow0KDQoJfQ0KCWZ1bmN0aW9uIHBsUmVzaXplKCRmdWxscGF0aCwgJG5ld3BhdGgsICRuZXd3aWR0aCwgJG5ld2hlaWdodD1mYWxzZSwgJHRyYW5zcGFyZW5jeT1mYWxzZSwgJGNyb3A9ZmFsc2UpIHsNCgkJcmVxdWlyZSAiZnVuY3Rpb24ucGxyZXNpemUucGhwIjsNCgkJcmV0dXJuICRyZXR1cm47DQoJfQ0KCQ0KCWZ1bmN0aW9uIHBsR2V0RmlsZUluZm8oJGZpbGVwYXRoKXsNCgkJaWYoIWZpbGVfZXhpc3RzKCRmaWxlcGF0aCkpCXJldHVybiBmYWxzZTsNCgkJcmVxdWlyZSAiZnVuY3Rpb24ucGxHZXRGaWxlSW5mby5waHAiOw0KCQlyZXR1cm4gJGluZm87DQoJfQ0KCQ0KCWZ1bmN0aW9uIHVwbG9hZF9jaGVja2ZpbGVuYW1lKCRmaWxlbmFtZSwgJGRpcil7DQoJCSR0bXBmaWxlbmFtZSA9IHN0cl9yZXBsYWNlKCIgIiwiXyIsJGZpbGVuYW1lKTsNCgkJJGV4dGVuc2lvbiA9IHN0cnJjaHIoJHRtcGZpbGVuYW1lLCAiLiIpOw0KCQkkY2xlYW5maWxlbmFtZSA9IHN0cl9yZXBsYWNlKCRleHRlbnNpb24sICIiLCAkdG1wZmlsZW5hbWUpOw0KDQoJCSRkZXN0ZGlyID0gJGRpci4kdG1wZmlsZW5hbWU7DQoJCSRpID0gMTsNCgkJd2hpbGUoZmlsZV9leGlzdHMoJGRlc3RkaXIpKXsNCgkJCSR0bXBmaWxlbmFtZSA9ICRjbGVhbmZpbGVuYW1lLiJfIi4kaS4kZXh0ZW5zaW9uOw0KCQkJJGRlc3RkaXIgPSAkZGlyLiR0bXBmaWxlbmFtZTsNCgkJCSRpKys7DQoJCX0NCgkJcmV0dXJuICR0bXBmaWxlbmFtZTsNCgl9DQoJDQoJZnVuY3Rpb24gcGxVcGxvYWRGaWxlKCRmaWxlLCAkZGVzdGluYXRpb249IiIsICRyZXNpemU9ZmFsc2UsICRjcm9wPWZhbHNlKXsNCgkJZ2xvYmFsICRnQ21zOw0KCQkkZGlyID0gJGdDbXMtPmNvbmZpZ1sidXBsb2Fkc19wYXRoIl0uc3RyX3JlcGxhY2UoIi8vIiwiLyIsIi8iLiRkZXN0aW5hdGlvbi4iLyIpOw0KCQkNCgkJJGZpbGVuYW1lID0gJHRoaXMtPnVwbG9hZF9jaGVja2ZpbGVuYW1lKCRmaWxlWyJuYW1lIl0sJGRpcik7DQoJCQ0KCQlpZiAoY21zX21vdmVfdXBsb2FkZWRfZmlsZSgkZmlsZVsidG1wX25hbWUiXSwgJGRpci4kZmlsZW5hbWUpKSB7DQoJCQlpZigkcmVzaXplICYmICFpc19hcnJheSgkcmVzaXplKSkJJHJlc2l6ZSA9IGV4cGxvZGUoIngiLCRyZXNpemUpOw0KCQkJaWYoJHJlc2l6ZSAmJiBjb3VudCgkcmVzaXplKSA9PSAyKSAkdGhpcy0+cGxSZXNpemUoJGRpci4kZmlsZW5hbWUsICcnLCAkcmVzaXplWzBdLCAkcmVzaXplWzFdLHRydWUsJGNyb3ApOw0KCQkJcmV0dXJuIHN0cl9yZXBsYWNlKCIvLyIsIi8iLCIvIi4kZGVzdGluYXRpb24uIi8iLiRmaWxlbmFtZSk7DQoJCX1lbHNlew0KCQkJcmV0dXJuIGZhbHNlOw0KCQl9DQoJfQ0KCQ0KCWZ1bmN0aW9uIHBsQXNzaWduRmlsZSgkZmlsZXBhdGgsICR0YWJsZSwgJGl0ZW1pZCwgJGZpZWxkLCAkdGh1bWJzaXplPWZhbHNlLCAkY3JvcHRodW1iPWZhbHNlKXsNCgkJJHRhYmxlbmFtZSA9IGNtc19kYl9wcmVmaXgoKS4nbW9kdWxlXycuJHRhYmxlOw0KCQkkZmlsZXBhdGggPSBzdHJfcmVwbGFjZSgiLy8iLCIvIiwkZmlsZXBhdGgpOw0KDQoJCWlmKCR0aHVtYnNpemUgJiYgIWlzX2FycmF5KCR0aHVtYnNpemUpKQkkdGh1bWJzaXplID0gZXhwbG9kZSgieCIsJHRodW1ic2l6ZSk7DQoJCWlmKCAkZmlsZXBhdGggIT0gIiIgJiYgJHRodW1ic2l6ZSAmJiBjb3VudCgkdGh1bWJzaXplKSA9PTIgKSB7DQoJCQlnbG9iYWwgJGdDbXM7DQoJCQkkYmFzZXBhdGggPSAkZ0Ntcy0+Y29uZmlnWyJ1cGxvYWRzX3BhdGgiXTsNCgkJCSRleHBsb2RlZCA9IGV4cGxvZGUoIi8iLCRmaWxlcGF0aCk7DQoJCQkkZXhwbG9kZWRbY291bnQoJGV4cGxvZGVkKS0xXSA9ICJwbHRodW1iXyIuJGV4cGxvZGVkW2NvdW50KCRleHBsb2RlZCktMV07DQoJCQkkdGh1bWJwYXRoID0gaW1wbG9kZSgiLyIsJGV4cGxvZGVkKTsNCgkJCSR0aGlzLT5wbFJlc2l6ZSgkYmFzZXBhdGguIi8iLiRmaWxlcGF0aCwgJGJhc2VwYXRoLiIvIi4kdGh1bWJwYXRoLCAkdGh1bWJzaXplWzBdLCAkdGh1bWJzaXplWzFdLCB0cnVlLCAkY3JvcHRodW1iKTsNCgkJfQ0KDQoJCSRkYiA9ICR0aGlzLT5HZXREYigpOw0KDQoJCWlmKCAkdGFibGUgPT0gJHRoaXMtPkdldE5hbWUoKS4iX211bHRpcGxlZmlsZXNmaWVsZHMiICkgew0KCQkJJG5ld2lkID0gJGRiLT5HZW5JRCgkdGFibGVuYW1lLiJfc2VxIik7DQoJCQkkcXVlcnkgPSAiSU5TRVJUIElOVE8gJHRhYmxlbmFtZSBTRVQgZmlsZWlkPT8sIGl0ZW1pZD0/LCBmaWVsZG5hbWU9PywgZmlsZXBhdGg9PyI7DQoJCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoICRxdWVyeSwgYXJyYXkoJG5ld2lkLCAkaXRlbWlkLCAkZmllbGQsICRmaWxlcGF0aCkgKTsNCgkJfWVsc2V7DQoJCQkkcXVlcnkgPSAiVVBEQVRFICR0YWJsZW5hbWUgU0VUICRmaWVsZD0/IFdIRVJFIGlkPT8gTElNSVQgMSI7DQoJCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LGFycmF5KCRmaWxlcGF0aCwkaXRlbWlkKSk7DQoJCX0NCgkJDQoJCXJldHVybiAkZGJyZXN1bHQ7DQoJfQ0KDQoNCglmdW5jdGlvbiBnZXRGaWxlQ29udGVudCgkZmlsZW5hbWUpew0KCQkkZmlsZXBhdGggPSBkaXJuYW1lKF9fRklMRV9fKS5ESVJFQ1RPUllfU0VQQVJBVE9SLiRmaWxlbmFtZTsNCgkJaWYoZmlsZV9leGlzdHMoJGZpbGVwYXRoKSl7DQoJCQkkZmhhbmRsZSA9IGZvcGVuKCRmaWxlcGF0aCwgInIrIik7DQoJCQkkY29udGVudCA9IGZyZWFkKCRmaGFuZGxlLCBmaWxlc2l6ZSgkZmlsZXBhdGgpKTsNCgkJCXJldHVybiAkY29udGVudDsNCgkJfWVsc2V7DQoJCQlyZXR1cm4gZmFsc2U7DQoJCX0NCgl9DQoNCn0NCg0KPz4NCg==]]></data>
	</file>
	<file>
	  <filename>/vimeoplayer_auto_export.dna</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[YToyOntzOjU6ImluZm9zIjthOjE0OntzOjQ6Im5hbWUiO3M6MTE6InZpbWVvcGxheWVyIjtzOjEyOiJmcmllbmRseW5hbWUiO3M6MTI6IlZpbWVvIFBsYXllciI7czoxMToiZGVzY3JpcHRpb24iO3M6MTI6IlZpbWVvIFBsYXllciI7czo4OiJuYmxldmVscyI7czoxOiIyIjtzOjEzOiJ0ZW1wbGF0ZWxldmVsIjtzOjE6IjAiO3M6OToiZG91cGdyYWRlIjtiOjA7czoxNDoidXBncmFkZXF1ZXJpZXMiO2E6MDp7fXM6MTM6Im1vZGlmaWNhdGlvbnMiO2E6MDp7fXM6MTI6Im5hbWVvZm1vZHVsZSI7czoxMToidmltZW9wbGF5ZXIiO3M6NzoidmVyc2lvbiI7czozOiIxLjAiO3M6MTE6ImRlbGV0ZWZpbGVzIjtiOjA7czoxMzoiZWRpdGFibGVhbGlhcyI7YjowO3M6NzoiZG9mZWFkZCI7czoxOiIwIjtzOjk6ImxhbmdmaWxlcyI7YToxOntpOjA7czo5OiJlbl9VUy5waHAiO319czo2OiJsZXZlbHMiO2E6Mjp7aTowO2E6MTA6e2k6MDtzOjg6ImNhdGVnb3J5IjtpOjE7czoxOiJBIjtpOjI7czoxOiIwIjtpOjM7czoxOiIxIjtpOjY7czoxOiIxIjtpOjc7czoxOiIwIjtpOjg7czoxOiIwIjtpOjk7YToyOntpOjA7czo4OiJjYXRlZ29yeSI7aToxO3M6MTA6ImNhdGFnb3JpZXMiO31pOjQ7YToxOntpOjA7YTo4OntpOjA7czoxMToiZGVzY3JpcHRpb24iO2k6NztzOjExOiJEZXNjcmlwdGlvbiI7aToxO3M6MToiNCI7aToyO3M6MToiMCI7aTozO3M6MToiMCI7aTo0O3M6MDoiIjtpOjU7YTo5OntzOjExOiJsaXN0b3B0aW9ucyI7czowOiIiO3M6ODoibGlzdG1vZGUiO3M6MToiMSI7czo4OiJ1cGZvbGRlciI7czowOiIiO3M6NToidGh1bWIiO3M6MDoiIjtzOjQ6InNpemUiO3M6MDoiIjtzOjExOiJpbm5lcnNlYXJjaCI7czoxOiIxIjtzOjQ6ImNyb3AiO3M6MToiMCI7czo3OiJmaWxlZXh0IjtzOjA6IiI7czo5OiJjcm9wdGh1bWIiO3M6MToiMCI7fWk6NjthOjA6e319fWk6NTtzOjIxOiJuYW1lLGFjdGl2ZSxtb3ZlbGlua3MiO31pOjE7YToxMDp7aTowO3M6NToidmlkZW8iO2k6MTtzOjE6IkIiO2k6MjtpOjA7aTozO3M6MToiMyI7aTo2O3M6MToiMSI7aTo3O3M6MToiMCI7aTo4O3M6MToiMSI7aTo5O2E6Mjp7aTowO3M6NToidmlkZW8iO2k6MTtzOjY6InZpZGVvcyI7fWk6NDthOjM6e2k6MDthOjg6e2k6MDtzOjc6InZpZGVvaWQiO2k6NztzOjg6IlZpZGVvIElEIjtpOjE7czoxOiIzIjtpOjI7czoxOiIxIjtpOjM7czoxOiIwIjtpOjQ7czowOiIiO2k6NTthOjk6e3M6MTE6Imxpc3RvcHRpb25zIjtzOjA6IiI7czo4OiJsaXN0bW9kZSI7czoxOiIxIjtzOjg6InVwZm9sZGVyIjtzOjA6IiI7czo1OiJ0aHVtYiI7czowOiIiO3M6NDoic2l6ZSI7czowOiIiO3M6MTE6ImlubmVyc2VhcmNoIjtzOjE6IjEiO3M6NDoiY3JvcCI7czoxOiIwIjtzOjc6ImZpbGVleHQiO3M6MDoiIjtzOjk6ImNyb3B0aHVtYiI7czoxOiIwIjt9aTo2O2E6MDp7fX1pOjE7YTo4OntpOjA7czoxMToiZGVzY3JpcHRpb24iO2k6NztzOjExOiJEZXNjcmlwdGlvbiI7aToxO3M6MToiNCI7aToyO3M6MToiMCI7aTozO3M6MToiMCI7aTo0O3M6MDoiIjtpOjU7YTo5OntzOjExOiJsaXN0b3B0aW9ucyI7czowOiIiO3M6ODoibGlzdG1vZGUiO3M6MToiMSI7czo4OiJ1cGZvbGRlciI7czowOiIiO3M6NToidGh1bWIiO3M6MDoiIjtzOjQ6InNpemUiO3M6MDoiIjtzOjExOiJpbm5lcnNlYXJjaCI7czoxOiIxIjtzOjQ6ImNyb3AiO3M6MToiMCI7czo3OiJmaWxlZXh0IjtzOjA6IiI7czo5OiJjcm9wdGh1bWIiO3M6MToiMCI7fWk6NjthOjA6e319aToyO2E6ODp7aTowO3M6OToidGh1bWJuYWlsIjtpOjc7czo5OiJUaHVtYm5haWwiO2k6MTtzOjE6IjYiO2k6MjtzOjE6IjAiO2k6MztzOjE6IjAiO2k6NDtzOjA6IiI7aTo1O2E6OTp7czoxMToibGlzdG9wdGlvbnMiO3M6MTg6IlNtYWxsLE1lZGl1bSxMYXJnZSI7czo4OiJsaXN0bW9kZSI7czoxOiIxIjtzOjg6InVwZm9sZGVyIjtzOjA6IiI7czo1OiJ0aHVtYiI7czowOiIiO3M6NDoic2l6ZSI7czowOiIiO3M6MTE6ImlubmVyc2VhcmNoIjtzOjE6IjEiO3M6NDoiY3JvcCI7czoxOiIwIjtzOjc6ImZpbGVleHQiO3M6MDoiIjtzOjk6ImNyb3B0aHVtYiI7czoxOiIwIjt9aTo2O2E6MDp7fX19aTo1O3M6MzE6Im5hbWUsYWN0aXZlLGlzZGVmYXVsdCxtb3ZlbGlua3MiO319fQ==]]></data>
	</file>
</module>
