<?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>avplayer</name>
	<version>1.3.1</version>
  <mincmsversion>1.9</mincmsversion>
	<help><![CDATA[PGgzPldoYXQgRG9lcyBUaGlzIERvPzwvaDM+DQoJCQkJPHA+VGhpcyBtb2R1bGUgbWFuYWdlcyBhbmQgZGlzcGxheXMgYW4gaXRlbSBjYXRhbG9ndWUuPC9wPg0KCQkJPGJyLz48aDM+SG93IERvIEkgVXNlIEl0PzwvaDM+DQoJCQkJPGJyLz48aDQ+UGVybWlzc2lvbnM8L2g0Pg0KCQkJCQk8cD5NYWtlIHN1cmUgeW91ciB1c2VycyBoYXZlIHRoZSBhcHByb3ByaWF0ZSBwZXJtaXNzaW9ucy4gSWYgeW91IGFyZSBub3QgdXNpbmcgdGhlIGFjY2VzcyByZXN0cmljdGlvbiBvcHRpb24gKHNlZSBzZXR0aW5ncyksIHRoZSAiYXZwbGF5ZXI6IE5vcm1hbCB1c2VyIiBwZXJtaXNzaW9uIHdpbGwgYmUgZW5vdWdoIHRvIHVzZSB0aGUgbW9kdWxlLiBJbiB0aGUgc2V0dGluZ3MgdGFiLCB5b3UgY2FuIGNob29zZSB3aGljaCB0YWJzIHdpbGwgYmUgZGlzcGxheWVkIGZvciB0aGUgbm9ybWFsIHVzZXIuIE9ubHkgdGhlIGFkbWluaXN0cmF0b3IgYW5kIHVzZXJzIHdpdGggdGhlICJhdnBsYXllcjogQWR2YW5jZWQiIHBlcm1pc3Npb24gd2lsbCBoYXZlIGFjY2VzcyB0byBzZXR0aW5ncyB0YWIuPGJyLz4NCgkJCQkJSWYgeW91IHdpc2ggdG8gZGVmaW5lIGxldmVsLXNwZWNpZmljIHBlcm1pc3Npb25zLCBhY3RpdmF0ZSB0aGUgYWNjZXNzIHJlc3RyaWN0aW9uIG9wdGlvbiBpbiB0aGUgc2V0dGluZ3MgdGFiIGFuZCBnaXZlIHRoZSAiYXZwbGF5ZXI6IE1hbmFnZSBuYW1lX29mX2xldmVsIiBwZXJtaXNzaW9uIHRvIHRoZSBhcHByb3ByaWF0ZSB1c2Vycy48L3A+DQoJCQkJPGJyLz48aDQ+QmFzaWNzPC9oND4NCgkJCQkJPHA+VG8gY2FsbCB0aGUgbW9kdWxlLCBzaW1wbHkgdXNlIHRoZSBmb2xsb3dpbmcgdGFnOjxici8+DQoJCQkJCXtjbXNfbW9kdWxlIG1vZHVsZT0iYXZwbGF5ZXIifTwvcD4NCgkJCQkJPHA+SW4gdGhpcyBjYXNlIHRoZSBsaXN0IG9mIHRoZSBsYXN0IGxldmVsIGVsZW1lbnRzIChtZWRpYWZpbGUpIHdpbGwgYmUgZGlzcGxheWVkLiBUbyBzZWxlY3QgYSBsZXZlbCwgdXNlIHRoZSAid2hhdCIgcGFyYW1ldGVyOjxici8+DQoJCQkJCXtjbXNfbW9kdWxlIG1vZHVsZT0iYXZwbGF5ZXIiIHdoYXQ9Im1lZGlhZmlsZSJ9PGJyLz4NCgkJCQkJPGk+VGhlIHBvc3NpYmxlIHZhbHVlcyBmb3IgdGhlICJ3aGF0IiBwYXJhbWV0ZXIgYXJlIDogcGxheWVyLCBtZWRpYWZpbGU8L2k+PC9wPg0KCQkJCQk8cD5Zb3UgbWF5IGFsc28gYXNrIGZvciBlbGVtZW50cyB3aG8gYmVsb25nIHRvIGEgc3BlY2lmaWMgcGFyZW50Ojxici8+DQoJCQkJCXtjbXNfbW9kdWxlIG1vZHVsZT0iYXZwbGF5ZXIiIHBhcmVudD0iYWxpYXNfb2ZfcGFyZW50In08L3A+DQoJCQkJCTxwPllvdSBtYXkgZmluYWxseSBhc2sgZm9yIGEgc3BlY2lmaWMgZWxlbWVudDo8YnI+DQoJCQkJCXtjbXNfbW9kdWxlIG1vZHVsZT0iYXZwbGF5ZXIiIGFsaWFzPSJhbGlhc19vZl9pdGVtIn08L3A+DQoJCQkJPGJyLz48aDQ+U2VwYXJhdGluZyBpbnRvIHBhZ2VzPC9oND4NCgkJCQkJPHA+WW91IG1heSBsaW1pdCB0aGUgbnVtYmVyIG9mIGl0ZW1zIHRvIGJlIHNob3duIG9uIG9uZSBwYWdlOjxici8+DQoJCQkJCXtjbXNfbW9kdWxlIG1vZHVsZT0iYXZwbGF5ZXIiIG5icGVycGFnZT0iNSJ9PGJyLz4NCgkJCQkJSW4gdGhlIHRlbXBsYXRlLCB5b3UgY2FuIGJ1aWxkIHRoZSBwYWdlIG1lbnUgdXNpbmcgdGhlIGZvbGxvd2luZyB0YWdzOjxici8+DQoJCQkJCXskcGFnZV9zaG93aW5nfSwgeyRwYWdlX3RvdGFsaXRlbXN9LCB7JHBhZ2VfcGFnZW51bWJlcnN9LCB7JHBhZ2VfbmV4dH0sIHskcGFnZV9wcmV2aW91c308L3A+DQoJCQkJPGJyLz48aDQ+VXNpbmcgcXVlcmllczwvaDQ+DQoJCQkJCTxwPlRvIGdldCBhIGxpc3Qgb2YgaXRlbSB0aGF0IG1lZXQgc3BlY2lmaWMgY3JpdGVyaWEsIHlvdSBjYW4gY3JlYXRlIGEgcXVlcnkgdXNpbmcgdGhlIHF1ZXJpZXMgdGFiIG9mIHRoZSBhZG1pbiBwYW5lbCwgYW5kIGNhbGwgdGhlbSB1c2luZyB0aGUgInF1ZXJ5IiBwYXJhbWV0ZXI6PGJyLz4NCgkJCQkJe2Ntc19tb2R1bGUgbW9kdWxlPSJhdnBsYXllciIgcXVlcnk9IjUifTwvcD4NCgkJCQkJPHA+PGk+SWYgdGhlIG9wdGlvbiB0byBhbGxvdyBtYW51ZWwgc3FsIHF1ZXJpZXMgaXMgZW5hYmxlZDwvaT4gKHNlZSAiU2V0dGluZ3MiIHRhYiksIHlvdSBtYXkgYWxzbyBwcm92aWRlIHRoZSBzcWwgcXVlcnkgZGlyZWN0bHkgd2l0aCB0aGUgcXVlcnkgcGFyYW1ldGVyLiBGb3IgZXhhbXBsZTo8YnIvPg0KCQkJCQl7Y21zX21vZHVsZSBtb2R1bGU9ImF2cGxheWVyIiB3aGF0PSJtZWRpYWZpbGUiIHF1ZXJ5PSJBLmRhdGVfbW9kaWZpZWQgPiAnMjAwOS0wMy0xNScgQU5EIEEuYWN0aXZlID0gMSJ9PGJyLz4NCgkJCQkJVGhlIHF1ZXJ5IHBhcmFtZXRlciBjYW4gb25seSBob2xkIHRoZSBXSEVSRSBjbGF1c2Ugb2YgdGhlIHF1ZXJ5LCBhbmQgc2hvdWxkIG5vdCBpbmNsdWRlIHRoZSBXSEVSRSBjb21tYW5kIGl0c2VsZi4gVG8gYXZvaWQgcHJvYmxlbXMsIHRoZSBwcmVmaXggIkEuIiBzaG91bGQgYmUgdXNlZCBiZWZvcmUgZmllbGQgbmFtZXMgKHdoZXJlIGFwcGxpY2FibGUsIHRoZSAiQi4iIHByZWZpeCBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IGNyaXRlcmlhIG9uIHRoZSBwYXJlbnQncyBmaWVsZHMpLjxici8+DQoJCQkJCUFsdGhvdWdoIHRoZSBhYnN0cmFjdGlvbiBsYXllciBpcyBub3QgZWFzaWx5IHByb25lIHRvIGluamVjdGlvbnMsIHJlbWVtYmVyIHRoYXQgYWN0aXZhdGluZyB0aGlzIG9wdGlvbiBtZWFucyBnaXZpbmcgYSBzcWwgb3BlbmluZyB3aXRoaW4gdGhlIHRlbXBsYXRlcyBhbmQgYmUgY2FyZWZ1bC48L3A+DQoJCQkJPGJyLz48aDQ+VGhlIGxpbmsgYWN0aW9uPC9oND4NCgkJCQkJPHA+WW91IG1heSB1c2UgdGhlIGFjdGlvbiA8Yj4ibGluayI8L2I+IHRvIGNyZWF0ZSBhIGxpbmsgdG8gdGhlIGRlZmF1bHQgYWN0aW9uLCB1c2luZyB0aGUgc2FtZSBwYXJhbWV0ZXJzOjxici8+DQoJCQkJCXtjbXNfbW9kdWxlIG1vZHVsZT0iYXZwbGF5ZXIiIGFjdGlvbj0ibGluayIgd2hhdD0ibWVkaWFmaWxlIiByYW5kb209IjEifTxici8+DQoJCQkJCXdvdWxkIGNyZWF0ZSBhIGxpbmsgdG8gYSByYW5kb20gZWxlbWVudCBvZiB0aGlzIGxldmVsLjwvcD4NCgkJCQk8YnIvPjxoND5UaGUgc2l0ZW1hcCBhY3Rpb248L2g0Pg0KCQkJCQk8cD5JZiB5b3VyIG1vZHVsZSBpcyBub3Qgc2hhcmluZyBjaGlsZHJlbiwgeW91IG1heSB1c2UgdGhlIGFjdGlvbiA8Yj4ic2l0ZW1hcCI8L2I+IHRvIGNyZWF0ZSBhIG1vZHVsZSBzaXRlbWFwOjxici8+DQoJCQkJCXtjbXNfbW9kdWxlIG1vZHVsZT0iYXZwbGF5ZXIiIGFjdGlvbj0ic2l0ZW1hcCJ9PGJyLz4NCgkJCQkJWW91IGNhbiBzZWxlY3QgdGhlIGxldmVscyB1c2luZyB0aGUgIndoYXQiIHBhcmFtZXRlciwgYW5kIG1heSBzZWxlY3QgbW9yZSB0aGFuIG9uZSB1c2luZyAifCIgOiB3aGF0PSJsZXZlbDF8bGV2ZWwyIi48YnIvPg0KCQkJCQlPdGhlciBhdmFpbGFibGUgcGFyYW1ldGVycyBmb3IgdGhpcyBhY3Rpb24gYXJlICJkZXRhaWxwYWdlIiBhbmQgImlubGluZSIuPGJyLz4NCgkJCQkJVG8gY3JlYXRlIGEgZ29vZ2xlIHNpdGVtYXAsIHNlZSB0aGUgPGEgaHJlZj0iLi4vbW9kdWxlcy9hdnBsYXllci9kb2MvZmFxLmh0bWwjcTE2IiB0YXJnZXQ9Il9ibGFuayI+RkFRPC9hPi48L3A+DQoJCQkJPGJyLz48aDQ+VGhlIGZyb250ZW5kIGVkaXQgYWN0aW9uPC9oND4NCgkJCQkJPHA+QSBmb3JtIGZvciB0aGUgZnJvbnRlbmQgZWRpdGlvbiBvZiBlbGVtZW50cyBjYW4gYmUgY2FsbGVkIHVzaW5nOjxici8+DQoJCQkJCXtjbXNfbW9kdWxlIG1vZHVsZT0iYXZwbGF5ZXIiIGFjdGlvbj0iZnJvbnRlbmRfZWRpdCIgd2hhdD0ibWVkaWFmaWxlIn08YnIvPg0KCQkJCQlUaGlzIHRhZyB3b3VsZCBzaG93IGFuIGVtcHR5IGZvcm0sIGFuZCBjcmVhdGUgYSBuZXcgZWxlbWVudCBvZiB0aGUgbGV2ZWwgIm1lZGlhZmlsZSIuIEluIG9yZGVyIHRvIGVkaXQgYW4gZXhpc3RpbmcgZWxlbWVudCwgeW91IHNpbXBseSBoYXZlIHRvIHNwZWNpZnkgdGhlIGFsaWFzOjxici8+DQoJCQkJCXtjbXNfbW9kdWxlIG1vZHVsZT0iYXZwbGF5ZXIiIGFjdGlvbj0iZnJvbnRlbmRfZWRpdCIgd2hhdD0ibWVkaWFmaWxlIiBhbGlhcz0iaXRlbV9hbGlhcyJ9PC9wPg0KCQkJCQk8cD5JZiB5b3Ugd2lzaCB0byBkaXNwbGF5IGEgbGluayB0byB0aGUgZWRpdGlvbiBvZiBhbiBpdGVtLCB1c2UgdGhlICJsaW5rIiBhY3Rpb246PGJyLz4NCgkJCQkJe2Ntc19tb2R1bGUgbW9kdWxlPSJhdnBsYXllciIgYWN0aW9uPSJsaW5rIiB0b2FjdGlvbj0iZnJvbnRlbmRfZWRpdCIgd2hhdD0ibWVkaWFmaWxlIiBhbGlhcz0iaXRlbV9hbGlhcyJ9PGJyLz4NCgkJCQkJWW91IGNvdWxkLCBmb3IgZXhhbXBsZSwgZG8gdGhpcyBpbiBhIGxpc3QgdGVtcGxhdGUuLi48L3A+DQoJCQkJCTxwPihTZWUgdGhlIHNldHRpbmdzIHRhYiBmb3Igb3B0aW9ucyBhYm91dCB0aGUgZnJvbnRlbmRfZWRpdCBmZWF0dXJlKTxici8+DQoJCQkJCUl0IGlzIHJlY29tbWFuZGVkIHRoYXQgdGhlIGZyb250ZW5kIGVkaXQgZmVhdHVyZSBiZSB1c2VkIHdpdGggdGhlIEZyb250IEVuZCBVc2VycyBtb2R1bGUgZm9yIHBlcm1pc3Npb25zIG1hbmFnZW1lbnQuIFNlZSA8YSBocmVmPSIuLi9tb2R1bGVzL2F2cGxheWVyL2RvYy9mYXEuaHRtbCNxMjAiIHRhcmdldD0iX2JsYW5rIj5GQVE8L2E+IGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGhvdyB0byBkbyB0aGlzLjwvcD4NCgkJCQk8YnIvPjxoND5UaGUgc2VhcmNoIGFjdGlvbjwvaDQ+DQoJCQkJCTxwPllvdSBtYXkgdXNlIHRoZSBhY3Rpb24gPGI+InNlYXJjaCI8L2I+IHRvIGRpc3BsYXkgYSBzZWFyY2ggZm9ybTo8YnIvPg0KCQkJCQl7Y21zX21vZHVsZSBtb2R1bGU9ImF2cGxheWVyIiBhY3Rpb249InNlYXJjaCJ9PGJyLz4NCgkJCQkJVXNlIHRoZSAic2VhcmNobW9kZSIgcGFyYW1ldGVyIHRvIHN3aXRjaCBiZXR3ZWVuIGFkdmFuY2VkIChkZWZhdWx0KSBhbmQgc2ltcGxlIG1vZGUuIFlvdSBtYXkgc3BlY2lmeSB0aGUgbGV2ZWwgaW4gd2hpY2ggdG8gc2VhcmNoIHVzaW5nIHRoZSAid2hhdCIgcGFyYW1ldGVyLiBZb3UgY2Fubm90IHVzZSB0aGUgYWR2YW5jZWQgc2VhcmNoIG1vZGUgaW4gYWxsIGxldmVscyBhdCB0aGUgc2FtZSB0aW1lLjxici8+DQoJCQkJCVRoZSBmb2xsb3dpbmcgcGFyYW1ldGVycyBjYW4gYmUgdXNlZCB3aXRoIHRoZSBzZWFyY2ggYWN0aW9uOiB3aGF0LCBsaW1pdCwgbmJwZXJwYWdlLCBvcmRlcmJ5LCBkZXRhaWxwYWdlLCBsaXN0dGVtcGxhdGUsIGlubGluZSwgc2VhcmNobW9kZS48YnIvPg0KCQkJCQlTZWUgYXZwbGF5ZXIvdGVtcGxhdGVzL3NlYXJjaC50cGwgdG8gbW9kaWZ5IHRoZSBzZWFyY2ggZm9ybS48L3A+PGJyLz4NCg0KCQkJCTxoND5BdWRpby9WaWRlbyBQbGF5ZXJzPC9oND4NCgkJCQlXaGlsZSBpdCBpcyBwb3NzaWJsZSB0byB1c2Ugb3RoZXIgcGxheWVycyB3aXRoIEFWUGxheWVyLCBpdCBoYXMgYmVlbiBjb25maWd1cmVkIG9wdGltYWxseSBmb3IgDQoJCQkJdGhlIDxzdHJvbmc+TmVvTGFvIFBsYXllcjwvc3Ryb25nPjxiciAvPg0KCQkJCUZvciBWaWRlbywgZG93bmxvYWQgdGhlIDxzdHJvbmc+TmVvTGFvIFZpZGVvIChGTFYgUGxheWVyKTwvc3Ryb25nPiBmcm9tOg0KCQkJCTxhIGhyZWY9Imh0dHA6Ly9mbHYtcGxheWVyLm5ldC9wbGF5ZXJzL21heGkvZG93bmxvYWQiIHRhcmdldD0iX2JsYW5rIj5odHRwOi8vZmx2LXBsYXllci5uZXQvcGxheWVycy9tYXhpL2Rvd25sb2FkPC9hPjxiciAvPg0KCQkJCVVwbG9hZCB0byB5b3VyIHNpdGUgYW5kIHBsYWNlIHRoZSBwYXRoIGludG8gdGhlIGxvY2F0aW9uIGZpZWxkIG9mIHRoZSBQbGF5ZXIsIGllOg0KCQkJCXVwbG9hZHMvRkxWUGxheWVyL3BsYXllcl9mbHZfbWF4aS5zd2Y8YnIgLz4NCgkJCQlGb3IgPHN0cm9uZz5NUDMnczwvc3Ryb25nPiBwbGVhc2UgZG93bmxvYWQgdGhlIDxzdHJvbmc+TmVvTGFvIEZsYXNoIE1QMyBQbGF5ZXI8L3N0cm9uZz4gZnJvbSA6PGJyPg0KCQkJCTxhIGhyZWY9Imh0dHA6Ly9mbGFzaC1tcDMtcGxheWVyLm5ldC9wbGF5ZXJzL21heGkvZG93bmxvYWQiIHRhcmdldD0iX2JsYW5rIj5odHRwOi8vZmxhc2gtbXAzLXBsYXllci5uZXQvcGxheWVycy9tYXhpL2Rvd25sb2FkPC9hPjxiciAvPg0KCQkJCWZvciA8c3Ryb25nPlBsYXllciBQYXJhbWV0ZXJzPC9zdHJvbmc+IAlwbGVhc2UgcmVmZXIgdG86PGEgaHJlZj0iaHR0cDovL2Zsdi1wbGF5ZXIubmV0L3BsYXllcnMvbWF4aS9nZW5lcmF0b3IiIHRhcmdldD0iX2JsYW5rIj5odHRwOi8vZmx2LXBsYXllci5uZXQvcGxheWVycy9tYXhpL2dlbmVyYXRvcjwvYT48YnIgLz4NCg0KCQkJCQ0KCQkJCTxiciAvPg0KDQoNCgkJCQk8cD5Gb3IgbW9yZSBoZWxwIG9uIG1vZHVsZSB1c2UsIHlvdSBtYXkgdGFrZSBhIGxvb2sgYXQgdGhlIDxhIGhyZWY9Ii4uL21vZHVsZXMvYXZwbGF5ZXIvZG9jL2ZhcS5odG1sIiB0YXJnZXQ9Il9ibGFuayI+RkFRPC9hPi48L3A+DQoJCQk8YnIvPjxoMz5Db3B5cmlnaHQgYW5kIExpY2Vuc2U8L2gzPg0KCQkJCTxwPlRoaXMgbW9kdWxlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBHTlUgUHVibGljIExpY2Vuc2UuPC9wPjxici8+PGJyLz48aDM+UGFyYW1ldGVyczwvaDM+PHVsPjxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IGxhbmc9ImVuX1VTIiAtIFBhcmFtZXRlciBpcyB1c2VkIHRvIHNwZWNpZnkgd2hhdCBsYW5ndWFnZSB0byB1c2UgZm9yIGRpc3BsYXkgb24gdGhlIGZyb250ZW5kLiBOb3QgYWxsIG1vZHVsZXMgc3VwcG9ydCBvciBuZWVkIHRoaXMuPC9saT48bGk+PGVtPihvcHRpb25hbCk8L2VtPiBhY3Rpb249ImRlZmF1bHQiIC0gUG9zc2libGUgYWN0aW9uczogImxpbmsiLCAic2VhcmNoIiwgImJyZWFkY3J1bWJzIiwgImRlZmF1bHQiLCAic2l0ZW1hcCIgYW5kICJmcm9udGVuZF9lZGl0Ii48L2xpPjxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IHdoYXQ9IiIgLSBBbGxvd3MgeW91IHRvIHNwZWNpZnkgdGhlIGxldmVsIHlvdSB3aXNoIHRvIGRpc3BsYXkuIFBvc3NpYmxlIHZhbHVlcyBhcmUgOiA8aT5wbGF5ZXIsIG1lZGlhZmlsZTwvaT48L2xpPjxsaT48ZW0+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+QXV0aG9yOiBNYXJ0aW4gV29vZHMgJmx0O213Y291cnRlbmF5QHlhaG9vLmNvbSZndDs8YnIgLz48YnIgLz5WZXJzaW9uOiAxLjMuMTxiciAvPg==]]></about>
	<description><![CDATA[Player front end]]></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+R2VuSUQoY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfYXZwbGF5ZXJzYXZlZF9xdWVyaWVzX3NlcSIpOwoJJG5hbWUgPSBpc3NldCgkcGFyYW1zWyJxdWVyeW5hbWUiXSk/YWRkc2xhc2hlcygkcGFyYW1zWyJxdWVyeW5hbWUiXSk6IiI7CgkKCSRxdWVyeSA9ICJJTlNFUlQgSU5UTyAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2F2cGxheWVyX3NhdmVkX3F1ZXJpZXMgU0VUIGlkPT8sIG5hbWU9Pywgd2hhdD0/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+dmFyaWFibGVzWyJhZG1pbnRoZW1lIl07DQoNCiMjIGRlZmluaW5nIHRoZSBhbGxvd2VkIGV4dGVuc2lvbnM6DQokbWVkaWFleHQgPSBhcnJheSgnc3dmJywnZmx2JywnanBlZycsJ2pwZycsJ3BuZycsJ2dpZicsJ21wMycsJ21wNCcsJ3dlYm0nLCdvZ2cnKTsNCiRkb2NleHQgPSBhcnJheSgnZG9jJywnZG9jeCcsJ3hscycsJ3hsc3gnLCdydGYnLCd0eHQnLCdwZGYnKTsNCg0KaWYoJHBhcmFtc1snbW9kZSddID09ICdpbWFnZXMnIHx8ICRwYXJhbXNbJ21vZGUnXSA9PSAnaW1hZ2UnKSB7DQoJJG1vZGUgPSAnaW1hZ2UnOw0KCSRhbGxvd2VkZXh0ID0gJG1lZGlhZXh0Ow0KfWVsc2V7DQoJJG1vZGUgPSAnb3RoZXInOw0KCSRhbGxvd2VkZXh0ID0gYXJyYXlfbWVyZ2UoJG1lZGlhZXh0LCRkb2NleHQpOw0KfQ0KaWYoaXNzZXQoJHBhcmFtc1snZXh0ZW5zaW9ucyddKSAmJiAkcGFyYW1zWydleHRlbnNpb25zJ10gJiYgJHBhcmFtc1snZXh0ZW5zaW9ucyddICE9ICIiKQkkYWxsb3dlZGV4dCA9IGV4cGxvZGUoIiwiLCRwYXJhbXNbJ2V4dGVuc2lvbnMnXSk7DQppZigkbW9kZSA9PSAnaW1hZ2UnICYmICEkdGhpcy0+R2V0UHJlZmVyZW5jZSgic2hvd3RodW1ibmFpbHMiLHRydWUpKQkkbW9kZSA9ICdvdGhlcic7DQoNCiRhZGRmaWxlcyA9ICggaXNzZXQoJHBhcmFtc1snYWRkZmlsZXMnXSkgJiYgJHBhcmFtc1snYWRkZmlsZXMnXSApOw0KDQoNCg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQojIFNPTUUgRlVOQ1RJT05TLi4uDQojDQoNCmZ1bmN0aW9uIHN0cmxpbWl0KCRzdHJpbmcpew0KCS8vIGZ1bmN0aW9uIHRvIGxpbWl0IHRoZSBsZW5ndGggb2YgdGhlIGZpbGVuYW1lcw0KCWlmIChzdWJzdHIoJHN0cmluZywwLDIxKSA9PSAkc3RyaW5nKXsNCgkJcmV0dXJuICRzdHJpbmc7DQoJfWVsc2V7DQoJCXJldHVybiBzdWJzdHIoJHN0cmluZywwLDE5KS4nLi4uJzsNCgl9DQp9DQpmdW5jdGlvbiBnZXRfdGh1bWJuYWlsKCRiYXNldXJsLCAkZmlsZW5hbWUsICRkaXIsICRyZXR1cm5hcnJheT1mYWxzZSl7DQoJJHRodW1icGF0aCA9ICRkaXIuRElSRUNUT1JZX1NFUEFSQVRPUi4kZmlsZW5hbWU7DQoJJHRodW1ibmFtZSA9ICRmaWxlbmFtZTsNCglpZiAoZmlsZV9leGlzdHMoJGRpci5ESVJFQ1RPUllfU0VQQVJBVE9SLid0aHVtYl8nLiRmaWxlbmFtZSkpIHsNCgkJJHRodW1ibmFtZSA9ICd0aHVtYl8nLiRmaWxlbmFtZTsNCgl9ZWxzZWlmKGZpbGVfZXhpc3RzKCRkaXIuRElSRUNUT1JZX1NFUEFSQVRPUi4ncGx0aHVtYl8nLiRmaWxlbmFtZSkpew0KCQkkdGh1bWJuYW1lID0gJ3BsdGh1bWJfJy4kZmlsZW5hbWU7DQoJfQ0KCSRpbWdpbmYgPSBnZXRpbWFnZXNpemUoJGRpci5ESVJFQ1RPUllfU0VQQVJBVE9SLiR0aHVtYm5hbWUpOw0KCWlmKCEkaW1naW5mIHx8ICFpc3NldCgkaW1naW5mWzFdKSkJcmV0dXJuIGZhbHNlOw0KCWxpc3QoJHdpZHRoLCAkaGVpZ2h0KSA9ICRpbWdpbmY7DQoJJHRodW1ibmFpbHJhdGlvID0gbWF4KCR3aWR0aCAvIDEwNiwkaGVpZ2h0IC8gMTA2KTsNCglpZiAoJHRodW1ibmFpbHJhdGlvIDwgMSkgJHRodW1ibmFpbHJhdGlvID0gMTsNCgkkdGhlaWdodCA9IGZsb29yKCRoZWlnaHQgLyAkdGh1bWJuYWlscmF0aW8pOw0KCSR0d2lkdGggPSBmbG9vcigkd2lkdGggLyAkdGh1bWJuYWlscmF0aW8pOw0KCWlmKCRyZXR1cm5hcnJheSl7DQoJCXJldHVybiBhcnJheSgkYmFzZXVybC4nLycuJHRodW1ibmFtZSwgJHR3aWR0aCwgJHRoZWlnaHQpOw0KCX1lbHNlew0KCQlyZXR1cm4gJzxpbWcgYm9yZGVyPTAgc3JjPSInLiRiYXNldXJsLicvJy4kdGh1bWJuYW1lLiciIHdpZHRoPSInLiR0d2lkdGguJyIgaGVpZ2h0PSInLiR0aGVpZ2h0LiciIC8+JzsNCgl9DQp9DQpmdW5jdGlvbiBpbWFnZW1vZGVfYnVpbGRsaW5rY29udGVudCgkYmFzZXVybCwgJGZpbGVuYW1lLCAkZGlyPScnKXsNCgkvLyBjcmVhdGVzIHRoZSBjb250ZW50IG9mIHRoZSBsaW5rIGluIGltYWdlIG1vZGUNCgkkZXh0ZW5zaW9uID0gc3RydG9sb3dlcihzdWJzdHIoc3RycmNocigkZmlsZW5hbWUsICIuIiksIDEpKTsNCglpZihpbl9hcnJheSgkZXh0ZW5zaW9uLCBhcnJheSgnanBlZycsJ2pwZycsJ3BuZycsJ2dpZicpKSl7DQoJCSR0aGV0aHVtYiA9IGdldF90aHVtYm5haWwoJGJhc2V1cmwsICRmaWxlbmFtZSwgJGRpcik7DQoJCXJldHVybiAnPGRpdiBzdHlsZT0idGV4dC1hbGlnbjogY2VudGVyOyI+Jy4kdGhldGh1bWIuJzwvZGl2Picuc3RybGltaXQoJGZpbGVuYW1lKTsNCgl9DQoJZ2xvYmFsICRnQ21zOw0KCSR0aGVhZG1pbnRoZW1lID0gJGdDbXMtPnZhcmlhYmxlc1siYWRtaW50aGVtZSJdOw0KCWlmKGluX2FycmF5KCRleHRlbnNpb24sIGFycmF5KCdmbHYnLCdzd2YnLCd3bXYnLCdtb3YnKSkpew0KCQkkcGljID0gJHRoZWFkbWludGhlbWUtPkRpc3BsYXlJbWFnZSgiaWNvbnMvZmlsZXR5cGVzL2ZtZWRpYS5naWYiKTsNCgl9ZWxzZWlmKGluX2FycmF5KCRleHRlbnNpb24sIGFycmF5KCdqcGVnJywnanBnJywncG5nJywnZ2lmJykpKXsNCgkJJHBpYyA9ICR0aGVhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoImljb25zL2ZpbGV0eXBlcy9mcGFpbnQuZ2lmIik7DQoJfWVsc2V7DQoJCSRwaWMgPSAkdGhlYWRtaW50aGVtZS0+RGlzcGxheUltYWdlKCJpY29ucy9maWxldHlwZXMvZmRvYy5naWYiKTsNCgl9DQoJcmV0dXJuICc8ZGl2IHN0eWxlPSJ0ZXh0LWFsaWduOiBjZW50ZXI7Ij4nLiRwaWMuJzwvZGl2Picuc3RybGltaXQoJGZpbGVuYW1lKTsNCn0NCg0KZnVuY3Rpb24gbWFrZURpck9iaigkZmlsZW5hbWUsJGRpciwkbW9kdWxlLCRwYXJhbXMsJGN1cmRpciwkcGFyZW50ZGlyLCRpZCwkcmV0dXJuaWQpew0KCWdsb2JhbCAkZ0NtczsNCgkkdGhlYWRtaW50aGVtZSA9ICRnQ21zLT52YXJpYWJsZXNbImFkbWludGhlbWUiXTsNCgkkcGFyZW50ID0gKCRmaWxlbmFtZSA9PSAnLi4nKTsNCgkkb2JqID0gbmV3IFN0ZENsYXNzKCk7DQoJJG9iai0+Zm9sZGVyID0gdHJ1ZTsNCgkkZW1wdHkgPSBhcnJheSgiZXh0Iiwic2l6ZSIsImltYWdlc2l6ZSIsImRlbGV0ZWxpbmsiLCJtb2RpZmllZCIsIm93bmVyIiwicGVybWlzc2lvbnMiKTsNCglmb3JlYWNoKCRlbXB0eSBhcyAkZmllbGQpCSRvYmotPiRmaWVsZCA9ICcnOw0KCSRvYmotPmZpbGVuYW1lID0gJGZpbGVuYW1lOw0KCSRvYmotPnBpYyA9ICR0aGVhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoImljb25zL2ZpbGV0eXBlcy8iLigkcGFyZW50PyJ1cCI6IiIpLiJmb2xkZXIuZ2lmIik7DQoJaWYoJHBhcmVudCl7DQoJCSRuZXdwYXJhbXMgPSBhcnJheV9tZXJnZSgkcGFyYW1zLCBhcnJheSgnY3VyZGlyJyA9PiAkcGFyZW50ZGlyKSk7DQoJCSRvYmotPnRoZWxpbmsgPSAkbW9kdWxlLT5DcmVhdGVMaW5rKCRpZCwgJ2Jyb3dzZWZpbGVzJywgJHJldHVybmlkLCAnLi4nLCAkbmV3cGFyYW1zKTsNCgl9ZWxzZXsNCgkJJG5ld3BhcmFtcyA9IGFycmF5X21lcmdlKCRwYXJhbXMsIGFycmF5KCdjdXJkaXInID0+ICRjdXJkaXIuJy8nLiRmaWxlbmFtZSwgJ3BhcmVudGRpcicgPT4gJGN1cmRpcikpOw0KCQkkb2JqLT50aGVsaW5rID0gJzxhIHN0eWxlPSJkaXNwbGF5Om5vbmU7Ij4uJy4kZmlsZW5hbWUuJzwvYT4nLiRtb2R1bGUtPkNyZWF0ZUxpbmsoJGlkLCAnYnJvd3NlZmlsZXMnLCAkcmV0dXJuaWQsICRmaWxlbmFtZSwgJG5ld3BhcmFtcyk7DQoJfQ0KCXJldHVybiAkb2JqOw0KfQ0KZnVuY3Rpb24gbWFrZUZpbGVPYmooJGZpbGVuYW1lLCRkaXIsJG1vZHVsZSwkcGFyYW1zLCRjdXJkaXIsJGlkLCRyZXR1cm5pZCwkYmFzZXVybCl7DQoJZ2xvYmFsICRnQ21zOw0KCSR0aGVhZG1pbnRoZW1lID0gJGdDbXMtPnZhcmlhYmxlc1siYWRtaW50aGVtZSJdOw0KCSRpbmZvID0gJG1vZHVsZS0+cGxHZXRGaWxlSW5mbygkZGlyLkRJUkVDVE9SWV9TRVBBUkFUT1IuJGZpbGVuYW1lKTsNCgkkZXh0ZW5zaW9uID0gJGluZm9bJ2V4dCddOw0KCSRvYmogPSBuZXcgU3RkQ2xhc3MoKTsNCgkkb2JqLT5mb2xkZXIgPSBmYWxzZTsNCgkkb2JqLT5maWxlbmFtZSA9ICRmaWxlbmFtZTsNCgkkb2JqLT5leHQgPSAkZXh0ZW5zaW9uOw0KCSRvYmotPnNpemUgPSAnPGEgc3R5bGU9ImRpc3BsYXk6bm9uZTsiPicuJGluZm9bInNpemUiXS4nPC9hPicuJGluZm9bInNpemVfd2Zvcm1hdCJdOw0KCSRvYmotPnBpYyA9ICR0aGVhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoJGluZm9bImZpbGVpY29uIl0pOw0KCSRvYmotPmltYWdlc2l6ZSA9ICcnOw0KCSRvYmotPnZpZXdsaW5rID0gJyc7DQoJaWYoJGluZm9bImltYWdlc2l6ZSJdKXsNCgkJJG9iai0+aW1hZ2VzaXplID0gJzxhIHN0eWxlPSJkaXNwbGF5Om5vbmU7Ij4nLiRpbmZvWyJ3aWR0aCJdLic8L2E+Jy4kaW5mb1siaW1hZ2VzaXplIl07DQoJCSR0aGV0aHVtYiA9IGdldF90aHVtYm5haWwoJGJhc2V1cmwsICRmaWxlbmFtZSwgJGRpciwgdHJ1ZSk7DQoJCWlmKCR0aGV0aHVtYikJJG9iai0+dmlld2xpbmsgPSAnIDxhIGhyZWY9IicuJHRoZXRodW1iWzBdLiciIHRpdGxlPSInLiRtb2R1bGUtPkxhbmcoImluc3RhbnRwcmV2aWV3IikuJyIgc3R5bGU9ImN1cnNvcjogcG9pbnRlcjsiIG9uY2xpY2s9InJldHVybiBkaXNwbGF5dGh1bWIodGhpcyxcJycuJHRoZXRodW1iWzBdLidcJywnLiR0aGV0aHVtYlsxXS4nLCcuJHRoZXRodW1iWzJdLicpOyI+Jy4kdGhlYWRtaW50aGVtZS0+RGlzcGxheUltYWdlKCJpY29ucy9zeXN0ZW0vdmlldy5naWYiKS4nPC9hPic7DQoJfQ0KCSRvYmotPmRlbGV0ZWxpbmsgPSAkbW9kdWxlLT5DcmVhdGVMaW5rKCRpZCwgJ2Jyb3dzZWZpbGVzJywgJHJldHVybmlkLCAkdGhlYWRtaW50aGVtZS0+RGlzcGxheUltYWdlKCJpY29ucy9zeXN0ZW0vZGVsZXRlLmdpZiIpLGFycmF5X21lcmdlKCRwYXJhbXMsIGFycmF5KCdkZWxldGVmaWxlJz0+JGZpbGVuYW1lKSkpLiRvYmotPnZpZXdsaW5rOw0KCSRuZXdwYXJhbXMgPSBhcnJheV9tZXJnZSgkcGFyYW1zLCBhcnJheSgnZmlsZW5hbWUnPT4kZmlsZW5hbWUsICdmaWxlcGF0aCcgPT4gJGN1cmRpci4nLycuJGZpbGVuYW1lKSk7DQoJJG9iai0+dGhlbGluayA9ICRtb2R1bGUtPkNyZWF0ZUxpbmsoJGlkLCAnYXNzaWduZmlsZScsICRyZXR1cm5pZCwgJGZpbGVuYW1lLCAkbmV3cGFyYW1zKTsNCgkkb2JqLT5tb2RpZmllZCA9ICc8YSBzdHlsZT0iZGlzcGxheTpub25lOyI+Jy4kaW5mb1siZmlsZW10aW1lIl0uJzwvYT4nLiRpbmZvWyJtb2RpZmllZCJdOw0KCSRvYmotPm93bmVyID0gJGluZm9bIm93bmVyIl07DQoJJG9iai0+cGVybWlzc2lvbnMgPSAkaW5mb1sicGVybWlzc2lvbnMiXTsNCglyZXR1cm4gJG9iajsNCn0NCg0KDQoNCg0KDQoNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KIyBSRVRSSUVWSU5HIENVUlJFTlQgUEFUSC4uLg0KIw0KDQokc3RhcnRkaXIgPSBpc3NldCgkcGFyYW1zWydzdGFydGRpciddKT8kcGFyYW1zWydzdGFydGRpciddOicnOw0KaWYoJHN0YXJ0ZGlyICE9ICcnICYmIHN1YnN0cigkc3RhcnRkaXIsMCwxKSAhPSAnLycgJiYgc3Vic3RyKCRzdGFydGRpciwwLDEpICE9ICdcXCcpICRzdGFydGRpciA9IERJUkVDVE9SWV9TRVBBUkFUT1IuJHN0YXJ0ZGlyOw0KaWYoIWZpbGVfZXhpc3RzKCRnQ21zLT5jb25maWdbJ3VwbG9hZHNfcGF0aCddLiRzdGFydGRpcikpIEBta2RpcigkZ0Ntcy0+Y29uZmlnWyd1cGxvYWRzX3BhdGgnXS4kc3RhcnRkaXIpOw0KDQokcGFyZW50ZGlyID0gKGlzc2V0KCRwYXJhbXNbJ3BhcmVudGRpciddKSA/ICRwYXJhbXNbJ3BhcmVudGRpciddIDogJycpOw0KJGN1cmRpciA9IChpc3NldCgkcGFyYW1zWydjdXJkaXInXSkgPyAkcGFyYW1zWydjdXJkaXInXSA6ICcnKTsNCiRkaXIgPSAkZ0Ntcy0+Y29uZmlnWyd1cGxvYWRzX3BhdGgnXS4kc3RhcnRkaXIuJGN1cmRpcjsNCmlmKCFpc19kaXIoJGRpcikpew0KCSRkaXIgPSAkZ0Ntcy0+Y29uZmlnWyJ1cGxvYWRzX3BhdGgiXTsNCgkkY3VyZGlyID0gJyc7DQoJJHBhcmVudGRpciA9ICcnOw0KfQ0KJGJhc2V1cmwgPSAkZ0Ntcy0+Y29uZmlnWyd1cGxvYWRzX3VybCddLiRzdGFydGRpci4kY3VyZGlyOw0KDQppZiAoaXNzZXQoJHBhcmFtc1snZGVsZXRlZmlsZSddKSl7DQoJLy8gV2UncmUgZGVsZXRpbmcgYSBmaWxlDQoJaWYoZmlsZV9leGlzdHMoJGRpci4nLycuJHBhcmFtc1snZGVsZXRlZmlsZSddKSAmJiB1bmxpbmsoJGRpci4nLycuJHBhcmFtc1snZGVsZXRlZmlsZSddKSl7DQoJCWVjaG8gJHRoaXMtPlNob3dNZXNzYWdlKCR0aGlzLT5MYW5nKCJtZXNzYWdlX2RlbGV0ZWQiKSk7DQoJfQ0KfQ0KDQoNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KIyBQUkVQQVJJTkcgSElEREVOIEZJRUxEUyBGT1IgVVBMT0FEDQojDQoNCiRoaWRkZW4gPSAkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCdjdXJkaXInLCRjdXJkaXIpLiR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsJ2ZpZWxkJywkcGFyYW1zWydmaWVsZCddKS4kdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCd0YWJsZW5hbWUnLCRwYXJhbXNbJ3RhYmxlbmFtZSddKS4kdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCdtb2RlJywkcGFyYW1zWydtb2RlJ10pLiR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsJ3ByZWZpeCcsJHBhcmFtc1sncHJlZml4J10pLiR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsJHBhcmFtc1sncHJlZml4J10uJ2lkJywkcGFyYW1zWyRwYXJhbXNbJ3ByZWZpeCddLidpZCddKTsNCmlmKGlzc2V0KCRwYXJhbXNbJ2V4dGVuc2lvbnMnXSkpICRoaWRkZW4gLj0gJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwnZXh0ZW5zaW9ucycsJHBhcmFtc1snZXh0ZW5zaW9ucyddKTsNCmlmKGlzc2V0KCRwYXJhbXNbJ3N0YXJ0ZGlyJ10pKSAkaGlkZGVuIC49ICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsJ3N0YXJ0ZGlyJywkcGFyYW1zWydzdGFydGRpciddKTsNCmlmKGlzc2V0KCRwYXJhbXNbJ3NpemUnXSkpICRoaWRkZW4gLj0gJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwnc2l6ZScsJHBhcmFtc1snc2l6ZSddKTsNCmlmKGlzc2V0KCRwYXJhbXNbJ3RodW1iJ10pKSAkaGlkZGVuIC49ICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsJ3RodW1iJywkcGFyYW1zWyd0aHVtYiddKTsNCmlmKGlzc2V0KCRwYXJhbXNbJ2Nyb3AnXSkpICRoaWRkZW4gLj0gJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwnY3JvcCcsJHBhcmFtc1snY3JvcCddKTsNCmlmKGlzc2V0KCRwYXJhbXNbJ2Nyb3B0aHVtYiddKSkgJGhpZGRlbiAuPSAkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCdjcm9wdGh1bWInLCRwYXJhbXNbJ2Nyb3B0aHVtYiddKTsNCmlmKGlzc2V0KCRwYXJhbXNbJ2FkZGZpbGVzJ10pKSAkaGlkZGVuIC49ICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsJ2FkZGZpbGVzJywkcGFyYW1zWydhZGRmaWxlcyddKTsNCmlmKGlzc2V0KCRwYXJhbXNbJ2FjdGl2ZV90YWInXSkpICRoaWRkZW4gLj0gJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwnYWN0aXZlX3RhYicsJHBhcmFtc1snYWN0aXZlX3RhYiddKTsNCg0KDQoNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KIyBSRVRSSUVWSU5HIEZJTEVTICYgRk9MREVSUw0KIw0KDQokZGggID0gb3BlbmRpcigkZGlyKTsNCiRmb2xkZXJzID0gYXJyYXkoKTsNCiRmaWxlcyA9IGFycmF5KCk7DQokdXBmb2xkZXIgPSBmYWxzZTsNCndoaWxlICgkZmlsZW5hbWUgPSByZWFkZGlyKCRkaCkpew0KCWlmKGlzX2RpcigkZGlyLkRJUkVDVE9SWV9TRVBBUkFUT1IuJGZpbGVuYW1lKSAmJiAkZmlsZW5hbWUhPScuJyl7DQoJCQlpZiAoJGZpbGVuYW1lPT0nLi4nKSB7DQoJCQkJaWYgKCRjdXJkaXIgIT0gJycpCQkkdXBmb2xkZXIgPSB0cnVlOw0KCQkJfWVsc2V7DQoJCQkJJGZvbGRlcnNbXSA9ICRmaWxlbmFtZTsNCgkJCX0NCgl9ZWxzZXsNCgkJJGV4dGVuc2lvbiA9IHN0cnRvbG93ZXIoc3Vic3RyKHN0cnJjaHIoJGZpbGVuYW1lLCAiLiIpLCAxKSk7DQoJCWlmKGluX2FycmF5KCRleHRlbnNpb24sICRhbGxvd2VkZXh0KSAmJiAoISRoaWRldGh1bWJzIHx8IHN1YnN0cigkZmlsZW5hbWUsMCw2KSAhPSAndGh1bWJfJykgJiYgc3Vic3RyKCRmaWxlbmFtZSwwLDgpICE9ICdwbHRodW1iXycpew0KCQkJJGZpbGVzW10gPSAkZmlsZW5hbWU7DQoJCX0NCgl9DQp9DQppZiAoaXNzZXQoJGRoKSkJY2xvc2VkaXIoJGRoKTsNCnNvcnQoJGZvbGRlcnMpOw0Kc29ydCgkZmlsZXMpOw0KDQoNCg0KDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiMgRElTUExBWUlORy4uLg0KIw0KDQplY2hvICc8ZGl2IGlkPSJjdGxtbV9zdWJtaXRtZXNzYWdlIiBjbGFzcz0icGFnZW1jb250YWluZXIiIHN0eWxlPSJkaXNwbGF5OiBub25lOyI+Jy4kdGhpcy0+TGFuZygic3VibWl0dGluZ19maWxlIikuJzwvZGl2Pic7DQoNCmlmKCRtb2RlID09ICdpbWFnZScpew0KCS8vIGltYWdlIG1vZGUgKHdpdGggdGh1bWJuYWlscykgLSBubyB0ZW1wbGF0ZQ0KCWVjaG8gJzxoMj4nLiR0aGlzLT5MYW5nKCdicm93c2VmaWxlc3RpdGxlJykuJzwvaDI+JzsNCgllY2hvICc8cD4nLiR0aGlzLT5MYW5nKCdzaG93aW5nZGlyJykuJyA6ICcuJGRpci4nPC9wPic7DQoJZWNobyAnPGRpdiBpZD0iZmlsZXNlbGVjdCIgY2xhc3M9InBhZ2VvdmVyZmxvdyIgc3R5bGU9InBhZGRpbmc6IDRweDsgbWFyZ2luLWJvdHRvbTogMTBweDsgYm9yZGVyOiAxcHggc29saWQgIzY2NjY2NjsgYmFja2dyb3VuZDogI0ZGRkZGRjsgb3ZlcmZsb3c6IGF1dG87Ij48ZGl2IHN0eWxlPSJjbGVhcjogYm90aDsiPic7DQoJJGRpdm9wdGlvbiA9ICc8ZGl2IHN0eWxlPSJ0ZXh0LWFsaWduOiBjZW50ZXI7IGZsb2F0OiBsZWZ0OyB3aWR0aDogMTY1cHg7IGhlaWdodDogMTgwcHg7Ij48YnIvPic7DQoJJGNsb3NlZGl2ID0gJzwvZGl2Pg0KJzsNCglpZigkdXBmb2xkZXIpew0KCQllY2hvICRkaXZvcHRpb247DQoJCSRuZXdwYXJhbXMgPSBhcnJheV9tZXJnZSgkcGFyYW1zLCBhcnJheSgnY3VyZGlyJyA9PiAkcGFyZW50ZGlyKSk7DQoJCWVjaG8gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnYnJvd3NlZmlsZXMnLCAkcmV0dXJuaWQsICR0aGVhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoImljb25zL2ZpbGV0eXBlcy91cGZvbGRlci5naWYiKS4nPGJyLz4nLiR0aGlzLT5MYW5nKCdwYXJlbnRkaXInKSwgJG5ld3BhcmFtcyk7DQoJCWVjaG8gJGNsb3NlZGl2Ow0KCX0NCglmb3JlYWNoKCRmb2xkZXJzIGFzICRmaWxlbmFtZSl7DQoJCWVjaG8gJGRpdm9wdGlvbjsNCgkJJG5ld3BhcmFtcyA9IGFycmF5X21lcmdlKCRwYXJhbXMsIGFycmF5KCdjdXJkaXInID0+ICRjdXJkaXIuJy8nLiRmaWxlbmFtZSwgJ3BhcmVudGRpcicgPT4gJGN1cmRpcikpOw0KCQllY2hvICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2Jyb3dzZWZpbGVzJywgJHJldHVybmlkLCAnPGRpdiBzdHlsZT0idGV4dC1hbGlnbjogY2VudGVyOyI+PGltZyBib3JkZXI9MCBzcmM9Ii4uL2xpYi9maWxlbWFuYWdlci9JbWFnZU1hbmFnZXIvaW1nL2ZvbGRlci5naWYiIC8+PC9kaXY+Jy4kZmlsZW5hbWUsICRuZXdwYXJhbXMpOw0KCQllY2hvICRjbG9zZWRpdjsNCgl9DQoJZm9yZWFjaCgkZmlsZXMgYXMgJGZpbGVuYW1lKXsNCgkJZWNobyAkZGl2b3B0aW9uOw0KCQkkbmV3cGFyYW1zID0gYXJyYXlfbWVyZ2UoJHBhcmFtcywgYXJyYXkoJ2ZpbGVuYW1lJz0+JGZpbGVuYW1lLCAnZmlsZXBhdGgnID0+ICRjdXJkaXIuJy8nLiRmaWxlbmFtZSkpOw0KCQllY2hvICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2Fzc2lnbmZpbGUnLCAkcmV0dXJuaWQsIGltYWdlbW9kZV9idWlsZGxpbmtjb250ZW50KCRiYXNldXJsLCAkZmlsZW5hbWUsICRkaXIpLCAkbmV3cGFyYW1zKS4nPGJyLz4nOw0KCQkkaW1naW5mID0gZ2V0aW1hZ2VzaXplKCRkaXIuRElSRUNUT1JZX1NFUEFSQVRPUi4kZmlsZW5hbWUpOw0KCQlpZigkaW1naW5mICYmIGlzc2V0KCRpbWdpbmZbMV0pKQllY2hvICcoJy4kaW1naW5mWzBdLid4Jy4kaW1naW5mWzFdLicpICc7DQoJCSRuZXdwYXJhbXMgPSBhcnJheV9tZXJnZSgkcGFyYW1zLCBhcnJheSgnZGVsZXRlZmlsZSc9PiRmaWxlbmFtZSkpOw0KCQllY2hvICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2Jyb3dzZWZpbGVzJywgJHJldHVybmlkLCAkdGhlYWRtaW50aGVtZS0+RGlzcGxheUltYWdlKCJpY29ucy9zeXN0ZW0vZGVsZXRlLmdpZiIpLCRuZXdwYXJhbXMpOw0KCQllY2hvICRjbG9zZWRpdjsNCgl9DQoJZWNobyAnPC9kaXY+PC9kaXY+JzsNCgkNCgllY2hvICR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoJGlkLCAnYWRkZmlsZXMnLCAkcmV0dXJuaWQsICdwb3N0JywgJ211bHRpcGFydC9mb3JtLWRhdGEnKTsNCgllY2hvICc8aDM+Jy5sYW5nKCd1cGxvYWRmaWxlJykuJzo8L2gzPjxkaXY+JzsNCglpZigkYWRkZmlsZXMpew0KCQllY2hvICc8ZmllbGRzZXQgc3R5bGU9ImZsb2F0OiByaWdodDsiPjxsZWdlbmQ+PGI+Jy4kdGhpcy0+TGFuZygidXBsb2FkemlwZmlsZSIpLic8L2I+PC9sZWdlbmQ+JzsNCgkJZWNobyAnPHA+Jy4kdGhpcy0+TGFuZygiemlwZmlsZW5vdGljZSIpLic8L3A+JzsNCgkJZWNobyAnPHA+Jy4kdGhpcy0+Q3JlYXRlRmlsZVVwbG9hZElucHV0KCRpZCwndXBsb2FkemlwZmlsZScpLicgJy4kdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCdzdWJtaXR6aXBmaWxlJyxsYW5nKCdzZW5kJykpLic8L3A+PC9maWVsZHNldD4nOw0KCX0NCgllY2hvICc8cD4nLiR0aGlzLT5MYW5nKCdwb3N0bWF4c2l6ZScpLmluaV9nZXQoJ3Bvc3RfbWF4X3NpemUnKS4nPC9wPic7DQoJaWYoaXNzZXQoJHBhcmFtc1sic2l6ZSJdKSkJZWNobyAnPHA+KCcuJHRoaXMtPkxhbmcoJ2Jyb3dzZWZpbGVzcmVzaXplJykuJyk8L3A+JzsNCgllY2hvICc8ZGl2IGlkPSJmaWxlaW5wdXRzIj48cD4nLiR0aGlzLT5DcmVhdGVGaWxlVXBsb2FkSW5wdXQoJGlkLCd1cGxvYWRmaWxlJykuJzwvcD48L2Rpdj4nOw0KCWlmKCRhZGRmaWxlcykJZWNobyAnPHA+PGEgaHJlZj0iamF2YXNjcmlwdDphZGRmaWxlaW5wdXQoXCdmaWxlaW5wdXRzXCcsdGhpcyk7IiBzdHlsZT0iY3Vyc29yOiBwb2ludGVyOyI+Jy4kdGhpcy0+TGFuZygiYWRkZmlsZWlucHV0IikuJzwvYT48L3A+JzsNCgllY2hvICc8cD4nLiR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsJ3N1Ym1pdCcsbGFuZygnc2VuZCcpKS4nPC9wPic7DQoJZWNobyAkaGlkZGVuOw0KCWVjaG8gJzwvZGl2Pic7CQkNCgllY2hvICR0aGlzLT5DcmVhdGVGb3JtRW5kKCk7DQoJDQp9ZWxzZXsNCgkvLyBsaXN0IG1vZGUgKG5vIHRodW1ibmFpbHMpIC0gdXNlcyBhIHRlbXBsYXRlDQoJDQoJJGluc3RhbnRzZWFyY2ggPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgiZGlzcGxheV9pbnN0YW50c2VhcmNoIixmYWxzZSk7DQoJJGluc3RhbnRzb3J0ID0gJHRoaXMtPkdldFByZWZlcmVuY2UoImRpc3BsYXlfaW5zdGFudHNvcnQiLGZhbHNlKTsNCgkNCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oImJyb3dzZXRpdGxlIiwkdGhpcy0+TGFuZygnYnJvd3NlZmlsZXN0aXRsZScpKTsNCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oInVwbG9hZHRpdGxlIixsYW5nKCd1cGxvYWRmaWxlJykpOw0KCSR0aGlzLT5zbWFydHktPmFzc2lnbigic2hvd2luZ2RpciIsJHRoaXMtPkxhbmcoJ3Nob3dpbmdkaXInKS4nIDogJy4kZGlyKTsNCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oImZvcm1zdGFydCIsJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCgkaWQsICdhZGRmaWxlcycsICRyZXR1cm5pZCwgJ3Bvc3QnLCAnbXVsdGlwYXJ0L2Zvcm0tZGF0YScpKTsNCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oImZvcm1lbmQiLCRoaWRkZW4uJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7DQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJyZXNpemVub3RpY2UiLGlzc2V0KCRwYXJhbXNbInNpemUiXSk/JHRoaXMtPkxhbmcoJ2Jyb3dzZWZpbGVzcmVzaXplJyk6ZmFsc2UpOw0KCSR0aGlzLT5zbWFydHktPmFzc2lnbigicG9zdG1heHNpemUiLCR0aGlzLT5MYW5nKCdwb3N0bWF4c2l6ZScpLmluaV9nZXQoJ3Bvc3RfbWF4X3NpemUnKSk7DQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJzdWJtaXQiLCR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsJ3N1Ym1pdCcsbGFuZygnc2VuZCcpKSk7DQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJpbnN0YW50c2VhcmNoIiwgJGluc3RhbnRzZWFyY2g/JHRoaXMtPkxhbmcoInNlYXJjaHRoaXN0YWJsZSIpLiIgIi4kdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgInNlYXJjaGZpbGV0YWJsZSIsICIiLCAxMCwgNjQsICcgb25rZXl1cD0iY3RsbW1fc2VhcmNoKHRoaXMudmFsdWUsXCdmaWxlbGlzdF90YWJsZVwnKTsiJyk6ZmFsc2UpOw0KDQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJ6aXB0aXRsZSIsICR0aGlzLT5MYW5nKCJ1cGxvYWR6aXBmaWxlIikpOw0KCSR0aGlzLT5zbWFydHktPmFzc2lnbigiemlwbm90aWNlIiwgJHRoaXMtPkxhbmcoInppcGZpbGVub3RpY2UiKSk7DQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJ6aXBpbnB1dCIsICR0aGlzLT5DcmVhdGVGaWxlVXBsb2FkSW5wdXQoJGlkLCd1cGxvYWR6aXBmaWxlJykpOw0KCSR0aGlzLT5zbWFydHktPmFzc2lnbigiemlwc3VibWl0IiwgJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwnc3VibWl0emlwZmlsZScsbGFuZygnc2VuZCcpKSk7DQoNCglpZigkYWRkZmlsZXMpew0KCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oImZpbGVpbnB1dCIsJzxkaXYgaWQ9ImZpbGVpbnB1dHMiPjxwPicuJHRoaXMtPkNyZWF0ZUZpbGVVcGxvYWRJbnB1dCgkaWQsJ3VwbG9hZGZpbGUnKS4nPC9wPjwvZGl2PicpOw0KCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oImFkZGZpbGVpbnB1dCIsJzxhIGhyZWY9ImphdmFzY3JpcHQ6YWRkZmlsZWlucHV0KFwnZmlsZWlucHV0c1wnLHRoaXMpOyIgc3R5bGU9ImN1cnNvcjogcG9pbnRlcjsiPicuJHRoaXMtPkxhbmcoImFkZGZpbGVpbnB1dCIpLic8L2E+Jyk7DQoJfWVsc2V7DQoJCSR0aGlzLT5zbWFydHktPmFzc2lnbigiZmlsZWlucHV0IiwnPHA+Jy4kdGhpcy0+Q3JlYXRlRmlsZVVwbG9hZElucHV0KCRpZCwndXBsb2FkZmlsZScpLic8L3A+Jyk7DQoJCSR0aGlzLT5zbWFydHktPmFzc2lnbigiYWRkZmlsZWlucHV0IixmYWxzZSk7DQoJfQ0KCQ0KCSRzb3J0bGlua3MgPSBhcnJheSgpOw0KCSRudW1lcmljX3NvcnRsaW5rcyA9IGFycmF5KCk7DQoJJGkgPSAwOw0KCXdoaWxlKCRpIDwgMTApew0KCQlpZigkaW5zdGFudHNvcnQpew0KCQkJJHNvcnRsaW5rc1skaV0gPSAnPGRpdiBzdHlsZT0iZmxvYXQ6bGVmdDsiPjxhIHN0eWxlPSJjdXJzb3I6IHBvaW50ZXI7IiBvbmNsaWNrPSJjdGxtbV9zb3J0Um93cyhcJ2ZpbGVsaXN0X3RhYmxlXCcsJy4kaS4nKTsiPjxpbWcgc3JjPSJ0aGVtZXMvZGVmYXVsdC9pbWFnZXMvaWNvbnMvc3lzdGVtL3NvcnRfdXAuZ2lmIiBhbHQ9Il4iLz48L2E+PGJyLz48YSBzdHlsZT0iY3Vyc29yOiBwb2ludGVyOyIgb25jbGljaz0iY3RsbW1fc29ydFJvd3MoXCdmaWxlbGlzdF90YWJsZVwnLCcuJGkuJyx0cnVlKTsiPjxpbWcgc3JjPSJ0aGVtZXMvZGVmYXVsdC9pbWFnZXMvaWNvbnMvc3lzdGVtL3NvcnRfZG93bi5naWYiIGFsdD0idiIvPjwvYT48L2Rpdj4gJm5ic3A7JzsNCgkJCSRudW1lcmljX3NvcnRsaW5rc1skaV0gPSAnPGRpdiBzdHlsZT0iZmxvYXQ6bGVmdDsiPjxhIHN0eWxlPSJjdXJzb3I6IHBvaW50ZXI7IiBvbmNsaWNrPSJjdGxtbV9zb3J0Um93cyhcJ2ZpbGVsaXN0X3RhYmxlXCcsJy4kaS4nLGZhbHNlLHRydWUpOyI+PGltZyBzcmM9InRoZW1lcy9kZWZhdWx0L2ltYWdlcy9pY29ucy9zeXN0ZW0vc29ydF91cC5naWYiIGFsdD0iXiIvPjwvYT48YnIvPjxhIHN0eWxlPSJjdXJzb3I6IHBvaW50ZXI7IiBvbmNsaWNrPSJjdGxtbV9zb3J0Um93cyhcJ2ZpbGVsaXN0X3RhYmxlXCcsJy4kaS4nLHRydWUsdHJ1ZSk7Ij48aW1nIHNyYz0idGhlbWVzL2RlZmF1bHQvaW1hZ2VzL2ljb25zL3N5c3RlbS9zb3J0X2Rvd24uZ2lmIiBhbHQ9InYiLz48L2E+PC9kaXY+ICZuYnNwOyc7DQoJCX1lbHNlew0KCQkJJHNvcnRsaW5rc1skaV0gPSAnJzsNCgkJCSRudW1lcmljX3NvcnRsaW5rc1skaV0gPSAnJzsNCgkJfQ0KCQkkaSsrOw0KCX0NCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oInNvcnRsaW5rcyIsJHNvcnRsaW5rcyk7DQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJudW1lcmljX3NvcnRsaW5rcyIsJG51bWVyaWNfc29ydGxpbmtzKTsNCgkNCgkkb2JqID0gbmV3IFN0ZENsYXNzKCk7DQoJJG9iai0+Zm9sZGVyID0gIiI7DQoJJG9iai0+ZmlsZW5hbWUgPSAkdGhpcy0+TGFuZygiZmlsZW5hbWUiKTsNCgkkb2JqLT5leHQgPSAkdGhpcy0+TGFuZygiZmlsZWV4dCIpOw0KCSRvYmotPnNpemUgPSAkdGhpcy0+TGFuZygiZmlsZXNpemUiKTsNCgkkb2JqLT5waWMgPSAiIjsNCgkkb2JqLT5pbWFnZXNpemUgPSAkdGhpcy0+TGFuZygiaW1hZ2VzaXplIik7DQoJJG9iai0+ZGVsZXRlbGluayA9ICR0aGlzLT5MYW5nKCJBY3Rpb25zIik7DQoJJG9iai0+bW9kaWZpZWQgPSAkdGhpcy0+TGFuZygibGFzdG1vZCIpOw0KCSRvYmotPm93bmVyID0gJHRoaXMtPkxhbmcoImZpbGVvd25lciIpOw0KCSRvYmotPnBlcm1pc3Npb25zID0gJHRoaXMtPkxhbmcoImZpbGVwZXJtcyIpOw0KCSR0aGlzLT5zbWFydHktPmFzc2lnbigiaGVhZGVycyIsJG9iaik7DQoJDQoJJGl0ZW1saXN0ID0gYXJyYXkoKTsNCglpZigkdXBmb2xkZXIpCSRpdGVtbGlzdFtdID0gbWFrZURpck9iaigiLi4iLCRkaXIsJHRoaXMsJHBhcmFtcywkY3VyZGlyLCRwYXJlbnRkaXIsJGlkLCRyZXR1cm5pZCk7DQoJZm9yZWFjaCgkZm9sZGVycyBhcyAkZm9sZGVyKQkkaXRlbWxpc3RbXSA9IG1ha2VEaXJPYmooJGZvbGRlciwkZGlyLCR0aGlzLCRwYXJhbXMsJGN1cmRpciwkcGFyZW50ZGlyLCRpZCwkcmV0dXJuaWQpOw0KCWZvcmVhY2goJGZpbGVzIGFzICRmaWxlbmFtZSkJJGl0ZW1saXN0W10gPSBtYWtlRmlsZU9iaigkZmlsZW5hbWUsJGRpciwkdGhpcywkcGFyYW1zLCRjdXJkaXIsJGlkLCRyZXR1cm5pZCwkYmFzZXVybCk7DQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJpdGVtbGlzdCIsJGl0ZW1saXN0KTsNCgkNCgllY2hvICcNCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+DQonOw0KCWlmKCRpbnN0YW50c2VhcmNoKQllY2hvICR0aGlzLT5nZXRGaWxlQ29udGVudCgiaW5zdGFudHNlYXJjaC5qcyIpOw0KCWlmKCRpbnN0YW50c29ydCkJZWNobyAkdGhpcy0+Z2V0RmlsZUNvbnRlbnQoImluc3RhbnRzb3J0LmpzIik7DQoJZWNobyAnDQoJPC9zY3JpcHQ+DQonOw0KDQoJZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCJicm93c2VmaWxlcy50cGwiKTsNCn0NCg0KZWNobyAnPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPg0KdmFyIGN0bG1tX2Zvcm0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiJy4kaWQuJ21vZHVsZWZvcm1fMSIpOw0KaWYoY3RsbW1fZm9ybSkJY3RsbW1fZm9ybS5vbnN1Ym1pdCA9IGZ1bmN0aW9uKCkgew0KCWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjdGxtbV9zdWJtaXRtZXNzYWdlIikuc3R5bGUuZGlzcGxheSA9ICJibG9jayI7DQp9DQpmdW5jdGlvbiBkaXNwbGF5dGh1bWIoZWxlLHRodW1icGF0aCx3aWR0aCxoZWlnaHQpew0KCWVsZS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOw0KCXZhciB0aGVpbWcgPSBuZXcgSW1hZ2UoKTsNCgl0aGVpbWcud2lkdGggPSB3aWR0aDsNCgl0aGVpbWcuaGVpZ2h0ID0gaGVpZ2h0Ow0KCXRoZWltZy5zcmMgPSB0aHVtYnBhdGg7DQoJdGhlaW1nLnN0eWxlLmN1cnNvciA9ICJwb2ludGVyIjsNCgl0aGVpbWcub25jbGljayA9IGZ1bmN0aW9uKCkgeyBoaWRldGh1bWIodGhpcyk7IH07DQoJZWxlLnBhcmVudE5vZGUuYXBwZW5kQ2hpbGQodGhlaW1nKTsNCglyZXR1cm4gZmFsc2U7DQp9DQpmdW5jdGlvbiBoaWRldGh1bWIoZWxlLHRodW1icGF0aCx3aWR0aCxoZWlnaHQpew0KCXZhciBwYXJlbnQgPSBlbGUucGFyZW50Tm9kZTsNCglwYXJlbnQucmVtb3ZlQ2hpbGQoZWxlKTsNCgl2YXIgdGhlYXMgPSBwYXJlbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImEiKTsNCgl0aGVhc1t0aGVhcy5sZW5ndGgtMV0uc3R5bGUuZGlzcGxheSA9ICJpbmxpbmUiOw0KfQ0KDQp2YXIgbmJmaWxlaW5wdXQgPSAxOw0KDQpmdW5jdGlvbiBhZGRmaWxlaW5wdXQoY29udGFpbmVyaWQsIGJ0bil7DQoJdmFyIGNvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGNvbnRhaW5lcmlkKTsNCglpZighY29udGFpbmVyKSByZXR1cm4gZmFsc2U7DQoJbmJmaWxlaW5wdXQrKzsNCgl2YXIgdG1waW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpOw0KCXRtcGlucHV0LnR5cGUgPSAiZmlsZSI7DQoJdG1waW5wdXQubmFtZSA9ICInLiRpZC4ndXBsb2FkZmlsZSIrbmJmaWxlaW5wdXQ7DQoJdmFyIHRoZXAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJwIik7DQoJdGhlcC5hcHBlbmRDaGlsZCh0bXBpbnB1dCk7DQoJY29udGFpbmVyLmFwcGVuZENoaWxkKHRoZXApOw0KCWlmKG5iZmlsZWlucHV0ID09IDEyKQlidG4uc3R5bGUuZGlzcGxheSA9IGZhbHNlOw0KfQ0KPC9zY3JpcHQ+JzsNCj8+DQo=]]></data>
	</file>
	<file>
	  <filename>/action.default.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmlmKCFpc3NldCgkZ0NtcykpIGV4aXQ7DQoNCi8vIHdlIG5lZWQgdG8ga25vdyB3aGljaCBsZXZlbCBpcyB0aGUgZmluYWwgbGV2ZWwNCiRsZXZlbGFycmF5ID0gJHRoaXMtPmdldF9sZXZlbGFycmF5KCk7DQokZmluYWxsZXZlbCA9ICJtZWRpYWZpbGUiOw0KDQovLyB3ZSBjaGVjayB3aGF0IGxldmVsIHdlJ3JlIHdhdGNoaW5nLi4uIGlmIG5vbmUgaXMgc3BlY2lmaWVkLCB3ZSB1c2UgdGhlIGZpbmFsIGxldmVsDQokd2hhdCA9IChpc3NldCgkcGFyYW1zWyJ3aGF0Il0pICYmIGluX2FycmF5KCRwYXJhbXNbIndoYXQiXSwkbGV2ZWxhcnJheSkpPyRwYXJhbXNbIndoYXQiXTokZmluYWxsZXZlbDsNCi8vIHdlIGdpdmUgaXQgYmFjayB0byB0aGUgcGFyYW1zIGZvciBwcmV0dHkgdXJscyBhbmQgcGFnZSB2aWV3DQppZighaXNzZXQoJHBhcmFtc1sid2hhdCJdKSB8fCAkcGFyYW1zWyJ3aGF0Il0gPT0gIiIpCSRwYXJhbXNbIndoYXQiXSA9ICR3aGF0Ow0KJHBhcmVudGxldmVsID0gJHRoaXMtPmdldF9uZXh0bGV2ZWwoJHdoYXQsIGZhbHNlKTsNCg0KLy8gd2UgcmV0cmlldmUgc29tZSBvdGhlciBwYXJhbWV0ZXJzDQppZigkd2hhdCAhPSAkZmluYWxsZXZlbCl7DQoJJGZvcmNlbGlzdCA9IHRydWU7CQkvLyBBbHdheXMgZGlzcGxheSBhcyBsaXN0IHdoZW4gd2UncmUgbm90IG9uIHRoZSBmaW5hbCBsZXZlbA0KfWVsc2VpZihpc3NldCgkcGFyYW1zWyJhbGlhcyJdKSl7DQoJJGZvcmNlbGlzdCA9IGZhbHNlOwkJLy8gbmV2ZXIgZGlzcGxheSBhIGxpc3Qgd2hlbiB0aGUgYWxpYXMgaXMgc3BlY2lmaWVkDQp9ZWxzZXsNCgkvLyBkZWZhdWx0IHZhbHVlDQoJJGZvcmNlbGlzdCA9IGlzc2V0KCRwYXJhbXNbImZvcmNlbGlzdCJdKT8kcGFyYW1zWyJmb3JjZWxpc3QiXTokdGhpcy0+R2V0UHJlZmVyZW5jZSgiZm9yY2VfbGlzdCIsZmFsc2UpOw0KfQ0KJG9yZGVyYnkgPSBpc3NldCgkcGFyYW1zWyJvcmRlcmJ5Il0pPyRwYXJhbXNbIm9yZGVyYnkiXTpmYWxzZTsNCiRpbmxpbmUgPSAoaXNzZXQoJHBhcmFtc1siaW5saW5lIl0pICYmICRwYXJhbXNbImlubGluZSJdKT90cnVlOmZhbHNlOw0KJGxpbWl0ID0gaXNzZXQoJHBhcmFtc1sibGltaXQiXSk/JHBhcmFtc1sibGltaXQiXTowOw0KJGxpbWl0ID0gKGludCkgJGxpbWl0Ow0KaWYoaXNzZXQoJHBhcmFtc1sibmJwZXJwYWdlIl0pICYmICRwYXJhbXNbIm5icGVycGFnZSJdID4gJGxpbWl0KXsNCgkkbmJwZXJwYWdlID0gKGludCkgJHBhcmFtc1sibmJwZXJwYWdlIl07DQp9ZWxzZXsNCgkvLyBkZWZhdWx0IHBhZ2luYXRpb24NCgkkZGVmYXVsdF9uYnBlcnBhZ2UgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgkd2hhdC4iX3BhZ2luYXRpb24iLDApOw0KCSRuYnBlcnBhZ2UgPSAoJGRlZmF1bHRfbmJwZXJwYWdlID4gJGxpbWl0KT8kZGVmYXVsdF9uYnBlcnBhZ2U6ZmFsc2U7DQoJJHBhcmFtc1sibmJwZXJwYWdlIl0gPSAkbmJwZXJwYWdlOwkvLyBnaXZlIGl0IGJhY2sgZm9yIGxpbmtzDQp9DQppZigkbmJwZXJwYWdlKQkkbGltaXQgPSAoKChpc3NldCgkcGFyYW1zWyJwYWdlaW5kZXgiXSk/JHBhcmFtc1sicGFnZWluZGV4Il06MSktMSkgKiAkbmJwZXJwYWdlKS4iLCIuJG5icGVycGFnZTsNCg0KLy8gd2UgYnVpbGQgdGhlIHF1ZXJ5LiBGaXJzdCwgd2UgY2hlY2sgaWYgd2UncmUgdXNpbmcgYSBzYXZlZCBxdWVyeSA6DQppZihpc3NldCgkcGFyYW1zWyJxdWVyeSJdKSl7DQoJJHF1ZXJ5aWQgPSAoaW50KSAkcGFyYW1zWyJxdWVyeSJdOw0KCWlmKCRxdWVyeSA9ICR0aGlzLT5nZXRfcXVlcmllcyhhcnJheSgiaWQiPT4kcXVlcnlpZCkpKXsNCgkJLy8gd2UgcmV0cmlldmUgdGhlIG5hbWUgb2YgdGhlIGZ1bmN0aW9uIHRoYXQgd2lsbCBkbyB0aGUgcXVlcnkNCgkJJHF1ZXJ5ID0gJHF1ZXJ5WzBdOw0KCQkkd2hhdCA9ICRxdWVyeS0+d2hhdDsNCgkJJGdldGZ1bmN0aW9uID0gImdldF9sZXZlbF8iLiR3aGF0Ow0KCQkkcGFyZW50bGV2ZWwgPSAkdGhpcy0+Z2V0X25leHRsZXZlbCgkd2hhdCwgZmFsc2UpOw0KCQkkd2hlcmVjbGF1c2UgPSAkcXVlcnktPndoZXJlY2xhdXNlOw0KCQkkd2hlcmV2YWx1ZXMgPSAkcXVlcnktPndoZXJldmFsdWVzOw0KCQkkY3VzdG9tb3JkZXIgPSAoJHF1ZXJ5LT5xdWVyeW9yZGVyID09ICIiP2ZhbHNlOiRxdWVyeS0+cXVlcnlvcmRlcik7DQoJfWVsc2VpZigkdGhpcy0+R2V0UHJlZmVyZW5jZSgiYWxsb3dfc3FsIixmYWxzZSkpew0KCQkkZ2V0ZnVuY3Rpb24gPSAiZ2V0X2xldmVsXyIuJHdoYXQ7DQoJCSRwYXJlbnRsZXZlbCA9ICR0aGlzLT5nZXRfbmV4dGxldmVsKCR3aGF0LCBmYWxzZSk7DQoJCSR3aGVyZWNsYXVzZSA9ICRwYXJhbXNbInF1ZXJ5Il07IC8vIHF1ZXJ5IHNob3VsZCBiZSBzYW5pdGl6ZWQuLi4NCgkJJHdoZXJldmFsdWVzID0gYXJyYXkoKTsNCgkJJGN1c3RvbW9yZGVyID0gZmFsc2U7DQoJCSRpdGVtbGlzdCA9ICR0aGlzLT4kZ2V0ZnVuY3Rpb24oYXJyYXkoKSwgZmFsc2UsICIiLCAiIiwgJG9yZGVyYnksICRsaW1pdCwgJHF1ZXJ5KTsNCgl9ZWxzZXsNCgkJJG1lc3NhZ2UgPSAkdGhpcy0+TGFuZygiZXJyb3Jfd3JvbmdxdWVyeSIpOw0KCQlpZigkcXVlcnlpZCAhPSAkcXVlcnkgJiYgJG1zZyA9IG15c3FsX2Vycm9yKCkpCQkkbWVzc2FnZSAuPSAiPGJyLz4iLiR0aGlzLT5MYW5nKCJnaXZlbmVycm9yIikuJG1zZzsNCgkJZWNobyAkdGhpcy0+U2hvd0Vycm9ycygkbWVzc2FnZSk7DQoJCXJldHVybiBmYWxzZTsNCgl9DQoJaWYoIWlzc2V0KCRwYXJhbXNbImFsaWFzIl0pICYmICRuYnBlcnBhZ2Upew0KCQkvLyB3ZSBuZWVkIHBhZ2luYXRpb24gLSBzbyB3ZSBmaXJzdCByZXRyaWV2ZSB0aGUgdG90YWwgbnVtYmVyIG9mIGl0ZW1zIGZpdHRpbmcgdGhlIHF1ZXJ5DQoJCSR0b3RhbCA9ICR0aGlzLT5jb3VudHNvbWV0aGluZygkd2hhdCwiaWQiLGFycmF5KCksJHdoZXJlY2xhdXNlLCAkd2hlcmV2YWx1ZXMsICRwYXJlbnRsZXZlbCk7DQoJfQ0KCWlmKGlzc2V0KCR0b3RhbCkgJiYgJHRvdGFsID09IDApew0KCQkkaXRlbWxpc3QgPSBhcnJheSgpOwkvLyB3ZSBhbHJlYWR5IGtub3cgdGhlcmUncyBub3RoaW5nIHRvIHF1ZXJ5DQoJfWVsc2V7DQoJCSRpdGVtbGlzdCA9ICR0aGlzLT4kZ2V0ZnVuY3Rpb24oYXJyYXkoKSwgZmFsc2UsICIiLCAiIiwgJG9yZGVyYnksICRsaW1pdCwgJHdoZXJlY2xhdXNlLCAkd2hlcmV2YWx1ZXMsICRjdXN0b21vcmRlcik7DQoJfQ0KfWVsc2V7DQoJLy8gd2UncmUgbm90IHVzaW5nIGEgc2F2ZWQgcXVlcnksIHNvIHdlIHBhcnNlIHRoZSBwYXJhbWV0ZXJzDQoJLy8gd2UgcmV0cmlldmUgdGhlIG5hbWUgb2YgdGhlIGZ1bmN0aW9uIHRoYXQgd2lsbCBkbyB0aGUgcXVlcnkNCgkkZ2V0ZnVuY3Rpb24gPSAiZ2V0X2xldmVsXyIuJHdoYXQ7DQoJLy8gVGhlICR3aGVyZSBob2xkcyBlbGVtZW50cyBvZiB0aGUgV0hFUkUgY2xhdXNlIG9mIHRoZSBxdWVyeSwgaW4gdGhlIGZvcm0gZmllbGRfbmFtZT0+ZmllbGRfdmFsdWUNCglpZihpc3NldCgkcGFyYW1zWyJhbGlhcyJdKSAmJiAkcGFyYW1zWyJhbGlhcyJdICE9ICIiKSB7DQoJCSR3aGVyZSA9IGFycmF5KCJhbGlhcyI9PiRwYXJhbXNbImFsaWFzIl0pOw0KCX1lbHNlaWYoaXNzZXQoJHBhcmFtc1sic2hvd2RlZmF1bHQiXSkgJiYgJHBhcmFtc1sic2hvd2RlZmF1bHQiXSkgew0KCQkkd2hlcmUgPSBhcnJheSgiaXNkZWZhdWx0Ij0+MSk7DQoJfWVsc2V7DQoJCSR3aGVyZSA9IGFycmF5KCk7DQoJfQ0KCWlmKGlzc2V0KCRwYXJhbXNbInBhcmVudCJdKSAmJiAkcGFyYW1zWyJwYXJlbnQiXSAhPSAiIikgJHdoZXJlWyJwYXJlbnQiXSA9ICRwYXJhbXNbInBhcmVudCJdOw0KDQoJJHdoZXJlWyJhY3RpdmUiXSA9IDE7DQoJaWYoIWlzc2V0KCRwYXJhbXNbImFsaWFzIl0pICYmICRuYnBlcnBhZ2Upew0KCQkvLyB3ZSBuZWVkIHBhZ2luYXRpb24gLSBzbyB3ZSBmaXJzdCByZXRyaWV2ZSB0aGUgdG90YWwgbnVtYmVyIG9mIGl0ZW1zIGZpdHRpbmcgdGhlIHF1ZXJ5DQoJCSR0b3RhbCA9ICR0aGlzLT5jb3VudHNvbWV0aGluZygkd2hhdCwiaWQiLCR3aGVyZSxmYWxzZSxhcnJheSgpLCRwYXJlbnRsZXZlbCk7DQoJfQ0KCWlmKGlzc2V0KCR0b3RhbCkgJiYgJHRvdGFsID09IDApew0KCQkkaXRlbWxpc3QgPSBhcnJheSgpOwkvLyB3ZSBhbHJlYWR5IGtub3cgdGhlcmUncyBub3RoaW5nIHRvIHF1ZXJ5DQoJfWVsc2V7DQoJCSRpdGVtbGlzdCA9ICR0aGlzLT4kZ2V0ZnVuY3Rpb24oJHdoZXJlLCBmYWxzZSwgIiIsICIiLCAkb3JkZXJieSwgJGxpbWl0KTsNCgl9DQp9DQoNCi8vIEludGVncmF0aW9uIHdvdWxkIHJlcXVpcmUgc29tZSBjaGFuZ2VzIHRvIENhcnRNYWRlU2ltcGxlDQovLyAkaXRlbWxpc3QgPSAkdGhpcy0+YWRkQ2FydFVybHMoJGl0ZW1saXN0LCRpZCwkcmV0dXJuaWQpOw0KDQoNCg0KLy8gIFNUQVJUIFBST0NFU1NJTkcNCg0KaWYoY291bnQoJGl0ZW1saXN0KSA9PSAxICYmICEkZm9yY2VsaXN0KXsNCgkNCgkvLyAjIyMjIyMjIyMjIyMjIyMjIyBXRSBBUkUgRElTUExBWUlORyBBTiBJVEVNIElOIERFVEFJTCBWSUVXDQoJDQoJJGl0ZW09JGl0ZW1saXN0WzBdOw0KDQoJLy8gaWYgYSB0ZW1wbGF0ZSBoYXMgYmVlbiBzcGVjaWZpZWQsIHdlIHRyeSB0byByZXRyaWV2ZSBpdAkNCgkkdGVtcGxhdGUgPSBmYWxzZTsNCglpZihpc3NldCgkcGFyYW1zWyJmaW5hbHRlbXBsYXRlIl0pICYmICRwYXJhbXNbImZpbmFsdGVtcGxhdGUiXSAhPSAiIil7DQoJCSR0ZW1wbGF0ZSA9ICR0aGlzLT5HZXRUZW1wbGF0ZSgkcGFyYW1zWyJmaW5hbHRlbXBsYXRlIl0pOw0KCX0NCg0KCS8vIGlmIG5vIHRlbXBsYXRlIGhhcyBiZWVuIHNwZWNpZmllZCwgd2UgcmV0cmlldmUgdGhlIGRlZmF1bHQgZmluYWwgdGVtcGxhdGUNCglpZighJHRlbXBsYXRlIHx8ICR0ZW1wbGF0ZSA9PSAiIil7DQoJCSR0ZW1wbGF0ZW5hbWUgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgiZmluYWx0ZW1wbGF0ZSIpOw0KCQkkdGVtcGxhdGUgPSAkdGhpcy0+R2V0VGVtcGxhdGUoJHRlbXBsYXRlbmFtZSwgJHRoaXMtPkdldE5hbWUoKSk7DQoJfQ0KCS8vIHdlIHJldHJpZXZlIHRoZSBwYXJlbnQgdHJlZToNCgkkcGFyZW50dHJlZSA9ICR0aGlzLT5nZXRfb2JqdHJlZSggJGl0ZW0tPnBhcmVudF9pZCwgJHRoaXMtPmdldF9uZXh0bGV2ZWwoJHdoYXQsIGZhbHNlKSApOw0KCSRpdGVtLT5wYXJlbnRfb2JqZWN0ID0gJHBhcmVudHRyZWU7DQoNCgkNCgkvLyBpZiB0aGUgaXRlbSBoYXMgcGFyZW50cywgd2UgYXNzaWduIGxpbmtzIHRvIHRoYXQgcGFyZW50DQoJaWYoaXNzZXQoJGl0ZW0tPnBhcmVudF9hbGlhcykpew0KCQkkcHJldHR5dXJsID0gJHRoaXMtPkJ1aWxkUHJldHR5VXJscyhhcnJheSgicGFyZW50Ij0+JGl0ZW0tPnBhcmVudF9hbGlhcywgIndoYXQiPT4kd2hhdCksICRyZXR1cm5pZCk7DQoJCSRpdGVtLT5wYXJlbnRsaW5rID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAiZGVmYXVsdCIsICRyZXR1cm5pZCwgJGl0ZW0tPnBhcmVudF9uYW1lLCBhcnJheSgicGFyZW50Ij0+JGl0ZW0tPnBhcmVudF9hbGlhcyksICIiLCBmYWxzZSwgJGlubGluZSwgIiIsIGZhbHNlLCAkcHJldHR5dXJsKTsNCgkJJGl0ZW0tPnBhcmVudHVybCA9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgImRlZmF1bHQiLCAkcmV0dXJuaWQsICIiLCBhcnJheSgicGFyZW50Ij0+JGl0ZW0tPnBhcmVudF9hbGlhcyksICIiLCB0cnVlLCAkaW5saW5lLCAiIiwgZmFsc2UsICRwcmV0dHl1cmwpOw0KCX0NCgkNCgkvLyB3ZSByZXRyaWV2ZSBhIGxhYmVsIGZvciBlYWNoIG9mIHRoZSBpdGVtJ3MgZmllbGQgYW5kIGFzc2lnbiBpdCB0byBzbWFydHkNCgkkbGFiZWxzID0gbmV3IFN0ZENsYXNzKCk7DQoJZm9yZWFjaCgkaXRlbSBhcyAka2V5PT4kdmFsdWUpew0KCQkkbGFiZWxzLT4ka2V5ID0gJHRoaXMtPkxhbmcoJHdoYXQuIl8iLiRrZXkpOwkJDQoJfQ0KCSR0aGlzLT5zbWFydHktPmFzc2lnbigibGFiZWxzIiwgJGxhYmVscyk7DQoJDQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJpdGVtIiwkaXRlbSk7DQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJsZXZlbHRpdGxlIiwkdGhpcy0+TGFuZygkd2hhdC4iX3BsdXJhbCIpKTsNCg0KCWlmKCFpc3NldCgkcGFyYW1zWyJxdWVyeSJdKSAmJiAkdGhpcy0+R2V0UHJlZmVyZW5jZSgibG9hZF9uZXh0cHJldmlvdXMiLGZhbHNlKSl7DQoJCS8vIHdlIGxvYWQgbGlua3MgdG8gbmV4dCBhbmQgcHJldmlvdXMgaXRlbXMNCgkJLy8gYXMgdGhpcyBpbXBsaWVzIHR3byBtb3JlIHF1ZXJpZXMsIGl0IG11c3QgYmUgYWN0aXZhdGVkIGluIHRoZSBzZXR0aW5ncyB0YWJzDQoJCSRuZXd3aGVyZSA9IGFycmF5KCJhY3RpdmUiPT4xKTsNCgkJaWYoaXNzZXQoJHBhcmFtc1sicGFyZW50Il0pKXsNCgkJCSRuZXd3aGVyZVsicGFyZW50Il0gPSAkcGFyYW1zWyJwYXJlbnQiXTsJDQoJCX1lbHNlaWYoaXNzZXQoJGl0ZW0tPnBhcmVudF9hbGlhcykgJiYgJHRoaXMtPmdldE9yZGVyVHlwZSgkd2hhdCkpew0KCQkJJG5ld3doZXJlWyJwYXJlbnQiXSA9ICRpdGVtLT5wYXJlbnRfYWxpYXM7DQoJCX0NCgkJJG5leHRpdGVtID0gZmFsc2U7DQoJCSRuZXd3aGVyZVsiaXRlbV9vcmRlciJdID0gJGl0ZW0tPml0ZW1fb3JkZXIgKyAxOw0KCQkkbmV3cGFybXMgPSAkcGFyYW1zOw0KCQkkdG1waXRlbSA9ICR0aGlzLT4kZ2V0ZnVuY3Rpb24oJG5ld3doZXJlKTsNCgkJaWYoaXNzZXQoJHRtcGl0ZW1bMF0pKXsNCgkJCSRuZXdwYXJtc1siYWxpYXMiXSA9ICR0bXBpdGVtWzBdLT5hbGlhczsNCgkJCSRuZXh0aXRlbSA9ICR0aGlzLT5hZGRmcm9udGVuZHVybHMoJHRtcGl0ZW1bMF0sJG5ld3Bhcm1zLCRpZCwkcmV0dXJuaWQpOw0KCQl9DQoJCSRwcmV2aXRlbSA9IGZhbHNlOw0KCQlpZigkaXRlbS0+aXRlbV9vcmRlciA+IDEpew0KCQkJJG5ld3doZXJlWyJpdGVtX29yZGVyIl0gPSAkaXRlbS0+aXRlbV9vcmRlciAtIDE7DQoJCQkkdG1waXRlbSA9ICR0aGlzLT4kZ2V0ZnVuY3Rpb24oJG5ld3doZXJlKTsNCgkJCWlmKGlzc2V0KCR0bXBpdGVtWzBdKSl7DQoJCQkJJG5ld3Bhcm1zWyJhbGlhcyJdID0gJHRtcGl0ZW1bMF0tPmFsaWFzOw0KCQkJCSRwcmV2aXRlbSA9ICR0aGlzLT5hZGRmcm9udGVuZHVybHMoJHRtcGl0ZW1bMF0sJG5ld3Bhcm1zLCRpZCwkcmV0dXJuaWQpOw0KCQkJfQ0KCQl9DQoJCSR0aGlzLT5zbWFydHktPmFzc2lnbigibmV4dF9pdGVtIiwkbmV4dGl0ZW0pOw0KCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oInByZXZpb3VzX2l0ZW0iLCRwcmV2aXRlbSk7DQoJfQ0KCQ0KCS8vIHdlIHByb2Nlc3MgdGhlIHRlbXBsYXRlDQoJZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlRnJvbURhdGEoJHRlbXBsYXRlKTsNCgkNCn1lbHNlaWYoY291bnQoJGl0ZW1saXN0KSA+IDApew0KCQ0KCS8vICMjIyMjIyMjIyMjIyMjIyMjIFdFIEFSRSBESVNQTEFZSU5HIEEgTElTVCBWSUVXDQoJJHBhcmVudG9iaiA9IGZhbHNlOw0KCS8vIGlmIHdlIGFyZSB3YXRjaGluZyBpdGVtcyBmcm9tIGEgc3BlY2lmaWMgcGFyZW50cywgd2Ugd2FudCB0byBoYXZlIHRoZSBpbmZvcm1hdGlvbnMgb2YgdGhpcyBwYXJlbnQgYXZhaWxhYmxlDQoJLy8gaW4gdGhlIHRlbXBsYXRlIChmb3IgZXhhbXBsZSwgaWYgd2Ugd2FudCB0byBkaXNwbGF5IGEgY2F0ZWdvcnkgcGFnZSwgd2UgbWlnaHQgd2FudCB0byBzaG93IHRoZSBjYXRlZ29yeSBkZXNjcmlwdGlvbikNCgkvLyBpZiBpdCBpcyB0aGUgY2FzZSwgd2UgcmV0cmlldmUgdGhlIHBhcmVudCBhbmQgZ2l2ZSBpdCB0byBzbWFydHkNCglpZihpc3NldCgkcGFyYW1zWyJwYXJlbnQiXSkgJiYgJHBhcmFtc1sicGFyZW50Il0gIT0gIiIpew0KCQkkcGFyZW50b2JqID0gJHRoaXMtPmdldF9vYmp0cmVlKCRwYXJhbXNbInBhcmVudCJdLCAkdGhpcy0+Z2V0X25leHRsZXZlbCgkd2hhdCxmYWxzZSksICJhbGlhcyIpOw0KCX0NCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oInBhcmVudG9iaiIsJHBhcmVudG9iaik7DQoJDQoJJHNlbGVjdGVkYWxpYXMgPSBmYWxzZTsNCgkvLyB3ZSBjaGVjayBpZiB0aGUgY3VycmVudCBwYWdlIGhhcyBvdGhlciBpbnN0YW5jZXMgb2YgdGhlIG1vZHVsZSB3aGljaCBhcmUgaW4gYWN0aW9uDQoJJGdsb2IgPSAkdGhpcy0+Z2V0X21vZHVsZUdldFZhcnMoKTsNCglpZigkd2hhdCA9PSAkZmluYWxsZXZlbCAmJiBpc3NldCgkZ2xvYlsiYWxpYXMiXSkpew0KCQkkc2VsZWN0ZWRhbGlhcyA9ICRnbG9iWyJhbGlhcyJdOw0KCX1lbHNlaWYoaXNzZXQoJGdsb2JbInBhcmVudCJdKSAmJiBpc3NldCgkZ2xvYlsid2hhdCJdKSAmJiAkZ2xvYlsid2hhdCJdID09ICR0aGlzLT5nZXRfbmV4dGxldmVsKCR3aGF0KSl7DQoJCSRzZWxlY3RlZGFsaWFzID0gJGdsb2JbInBhcmVudCJdOw0KCX0NCglpZihpc3NldCgkcGFyYW1zWyJuYnBlcnBhZ2UiXSkgJiYgaXNzZXQoJGdsb2JbInBhZ2VpbmRleCJdKSAmJiAhaXNzZXQoJHBhcmFtc1sicGFnZWluZGV4Il0pKSAkcGFyYW1zWyJwYWdlaW5kZXgiXSA9ICRnbG9iWyJwYWdlaW5kZXgiXTsNCglpZighaXNzZXQoJHRoaXMtPnBsY3VycmVudFskd2hhdF0pKQkkdGhpcy0+YnVpbGRHbG9iYWxUcmVlKCk7DQoJaWYoaXNzZXQoJHRoaXMtPnBsY3VycmVudFskd2hhdF0pKQkkc2VsZWN0ZWRhbGlhcyA9ICR0aGlzLT5wbGN1cnJlbnRbJHdoYXRdOw0KCWlmKGlzc2V0KCRwYXJhbXNbIm5icGVycGFnZSJdKSAmJiAhaXNzZXQoJHBhcmFtc1sicGFnZWluZGV4Il0pKSAkcGFyYW1zWyJwYWdlaW5kZXgiXSA9ICR0aGlzLT5jdXJyZW50cGFnZWluZGV4Ow0KCSRsaW5rcmV0dXJuaWQgPSAoaXNzZXQoJHBhcmFtc1siZGV0YWlscGFnZSJdKSk/JHRoaXMtPmdldF9wYWdlaWQoJHBhcmFtc1siZGV0YWlscGFnZSJdKTokcmV0dXJuaWQ7DQoNCgkvLyB3ZSByZXRyaWV2ZSB0aGUgdGVtcGxhdGUNCglpZihpc3NldCgkcGFyYW1zWyJsaXN0dGVtcGxhdGUiXSkgJiYgJHBhcmFtc1sibGlzdHRlbXBsYXRlIl0gIT0gIiIgJiYgJGN1c3RvbXRwbCA9ICR0aGlzLT5HZXRUZW1wbGF0ZSgkcGFyYW1zWyJsaXN0dGVtcGxhdGUiXSwgJHRoaXMtPkdldE5hbWUoKSkpew0KCQkkdGVtcGxhdGUgPSAkY3VzdG9tdHBsOw0KCX1lbHNlew0KCQkkdGVtcGxhdGVuYW1lID0gJHRoaXMtPkdldFByZWZlcmVuY2UoImxpc3R0ZW1wbGF0ZV8iLiR3aGF0KTsNCgkJJHRlbXBsYXRlID0gJHRoaXMtPkdldFRlbXBsYXRlKCR0ZW1wbGF0ZW5hbWUsICR0aGlzLT5HZXROYW1lKCkpOw0KCX0NCg0KCS8vIGlmIFJBTkRPTSBvcHRpb24gaXMgc2V0LCB3ZSByYW5kb21seSBzZWxlY3RlZCBvbmx5IGEgbnVtYmVyIG9mIHRoZSBpdGVtcyByZXRyaWV2ZWQNCglpZiggaXNzZXQoJHBhcmFtc1sicmFuZG9tIl0pICYmICRwYXJhbXNbInJhbmRvbSJdID4gMCAmJiAkcGFyYW1zWyJyYW5kb20iXSA8IGNvdW50KCRpdGVtbGlzdCkgKXsNCgkJJG5ld2xpc3QgPSBhcnJheSgpOw0KCQkkaSA9IDE7DQoJCSRzZWxlY3RlZCA9IGFycmF5KCk7DQoJCSRjdXJyYW5kID0gcmFuZCgwLChjb3VudCgkaXRlbWxpc3QpLTEpKTsNCgkJd2hpbGUoJGkgPD0gJHBhcmFtc1sicmFuZG9tIl0pew0KCQkJd2hpbGUoaW5fYXJyYXkoJGN1cnJhbmQsICRzZWxlY3RlZCkgJiYgY291bnQoJHNlbGVjdGVkKSA8IGNvdW50KCRpdGVtbGlzdCkpCSRjdXJyYW5kID0gcmFuZCgwLChjb3VudCgkaXRlbWxpc3QpLTEpKTsNCgkJCSRuZXdsaXN0W10gPSAkaXRlbWxpc3RbJGN1cnJhbmRdOw0KCQkJJHNlbGVjdGVkW10gPSAkY3VycmFuZDsNCgkJCSRpKys7DQoJCX0NCgkJJGl0ZW1saXN0ID0gJG5ld2xpc3Q7DQoJfQ0KCQkNCgkvLyBmaW5hbCBwcm9jZXNzaW5nIC0gd2UgY3JlYXRlIHRoZSBkZXRhaWxsaW5rcyBmb3IgZWFjaCBpdGVtDQoJJG5ld2xpc3QgPSBhcnJheSgpOw0KCWZvcmVhY2goJGl0ZW1saXN0IGFzICRpdGVtKXsNCgkJJGl0ZW0gPSAkdGhpcy0+YWRkZnJvbnRlbmR1cmxzKCRpdGVtLCRwYXJhbXMsJGlkLCRsaW5rcmV0dXJuaWQpOw0KCQkkaXRlbS0+aXNfc2VsZWN0ZWQgPSAoJGl0ZW0tPmFsaWFzID09ICRzZWxlY3RlZGFsaWFzKT90cnVlOmZhbHNlOw0KCQlhcnJheV9wdXNoKCRuZXdsaXN0LCAkaXRlbSk7DQoJfQ0KCSRpdGVtbGlzdCA9ICRuZXdsaXN0Ow0KCQ0KCSR0aGlzLT5wYWdpbmF0ZSgkd2hhdCwkdG90YWwsJGlkLCRyZXR1cm5pZCwkcGFyYW1zKTsNCgkNCgkvLyB3ZSBnaXZlIGV2ZXJ5dGhpbmcgdG8gc21hcnR5IGFuZCBwcm9jZXNzIHRoZSB0ZW1wbGF0ZQ0KCSR0aGlzLT5zbWFydHktPmFzc2lnbigiaXRlbWxpc3QiLCRpdGVtbGlzdCk7DQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJsZXZlbHRpdGxlIiwkdGhpcy0+TGFuZygkd2hhdC4iX3BsdXJhbCIpKTsNCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oIml0ZW1jb3VudCIsY291bnQoJGl0ZW1saXN0KSk7DQoJZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlRnJvbURhdGEoJHRlbXBsYXRlKTsNCgkNCn1lbHNlew0KCQ0KCS8vICMjIyMjIyMjIyMjIyMjIyMjIFdFIEFSRU4nVCBESVNQTEFZSU5HIEFOWVRISU5HIEFUIEFMTA0KCSR0aGlzLT5zbWFydHktPmFzc2lnbigiZXJyb3JfbXNnIiwoaXNzZXQoJHBhcmFtc1siYWxpYXMiXSk/JHRoaXMtPkxhbmcoImVycm9yX25vdGZvdW5kIik6JHRoaXMtPkxhbmcoImVycm9yX25vaXRlbWZvdW5kIikpKTsNCgkkcGFyZW50b2JqID0gZmFsc2U7DQoJaWYoaXNzZXQoJHBhcmFtc1sicGFyZW50Il0pICYmICRwYXJlbnRsZXZlbCl7DQoJCSR0bXBmdW5jdGlvbiA9ICJnZXRfbGV2ZWxfIi4kcGFyZW50bGV2ZWw7DQoJCSRwYXJlbnRvYmogPSAkdGhpcy0+JHRtcGZ1bmN0aW9uKGFycmF5KCJhbGlhcyI9PiRwYXJhbXNbInBhcmVudCJdKSk7DQoJCSRwYXJlbnRvYmogPSBpc3NldCgkcGFyZW50b2JqWzBdKT8kcGFyZW50b2JqWzBdOmZhbHNlOw0KCX0NCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oInBhcmVudG9iaiIsJHBhcmVudG9iaik7DQoJDQoJJHRlbXBsYXRlID0gJHRoaXMtPkdldFByZWZlcmVuY2UoImVtcHR5dGVtcGxhdGUiLCIqKiIpOw0KCWlmKCR0ZW1wbGF0ZSA9PSAiKioiKXsNCgkJLy8gd2UgdXNlIHRoZSBsaXN0IHRlbXBsYXRlDQoJCWlmKGlzc2V0KCRwYXJhbXNbImxpc3R0ZW1wbGF0ZSJdKSAmJiAkcGFyYW1zWyJsaXN0dGVtcGxhdGUiXSAhPSAiIiAmJiAkY3VzdG9tdHBsID0gJHRoaXMtPkdldFRlbXBsYXRlKCRwYXJhbXNbImxpc3R0ZW1wbGF0ZSJdLCAkdGhpcy0+R2V0TmFtZSgpKSl7DQoJCQkkdGVtcGxhdGUgPSAkY3VzdG9tdHBsOw0KCQl9ZWxzZXsNCgkJCSR0ZW1wbGF0ZW5hbWUgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgibGlzdHRlbXBsYXRlXyIuJHdoYXQpOw0KCQkJJHRlbXBsYXRlID0gJHRoaXMtPkdldFRlbXBsYXRlKCR0ZW1wbGF0ZW5hbWUsICR0aGlzLT5HZXROYW1lKCkpOw0KCQl9DQoJCSR0aGlzLT5zbWFydHktPmFzc2lnbigiaXRlbWxpc3QiLCRpdGVtbGlzdCk7DQoJCSR0aGlzLT5zbWFydHktPmFzc2lnbigibGV2ZWx0aXRsZSIsJHRoaXMtPkxhbmcoJHdoYXQuIl9wbHVyYWwiKSk7DQoJCSR0aGlzLT5zbWFydHktPmFzc2lnbigiaXRlbWNvdW50IiwwKTsNCgkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKGFycmF5KCJwYWdlX3Nob3dpbmciPT5mYWxzZSwicGFnZV90b3RhbGl0ZW1zIj0+ZmFsc2UsInBhZ2VfcGFnZW51bWJlcnMiPT5mYWxzZSwicGFnZV9uZXh0Ij0+ZmFsc2UsInBhZ2VfcHJldmlvdXMiPT5mYWxzZSkpOw0KCQllY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGVGcm9tRGF0YSgkdGVtcGxhdGUpOw0KCX1lbHNlew0KCQkvLyB3ZSB1c2UgdGhlIG5vcmVzdWx0IHRlbXBsYXRlDQoJCWVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZUZyb21EYXRhYmFzZSgkdGVtcGxhdGUpOw0KCX0NCg0KfQ0KDQo/Pg0K]]></data>
	</file>
	<file>
	  <filename>/action.defaultadmin.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmlmICghaXNzZXQoJGdDbXMpKSBleGl0Ow0KJGFkbWludGhlbWUgPSAkZ0Ntcy0+dmFyaWFibGVzWyJhZG1pbnRoZW1lIl07DQokYWN0aXZlX3RhYiA9IGlzc2V0KCRwYXJhbXNbImFjdGl2ZV90YWIiXSk/JHBhcmFtc1siYWN0aXZlX3RhYiJdOiJwbGF5ZXIiOw0KDQokaGFzX2FkdmFuY2VkX3Blcm0gPSAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCJhdnBsYXllcl9hZHZhbmNlZCIpOw0KDQokZmlsdGVyID0gJHRoaXMtPkdldFByZWZlcmVuY2UoImRpc3BsYXlfZmlsdGVyIixmYWxzZSk7DQokaW5zdGFudHNlYXJjaCA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCJkaXNwbGF5X2luc3RhbnRzZWFyY2giLGZhbHNlKTsNCiRpbnN0YW50c29ydCA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCJkaXNwbGF5X2luc3RhbnRzb3J0IixmYWxzZSk7DQokYWRtaW5wYWdlcyA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCJhZG1pbnBhZ2VzIiwwKTsNCiR1c2VfaGllcmFyY2h5ID0gJHRoaXMtPkdldFByZWZlcmVuY2UoInVzZV9oaWVyYXJjaHkiLGZhbHNlKTsNCiR1c2Vfc2Vzc2lvbiA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCJ1c2Vfc2Vzc2lvbiIsdHJ1ZSk7DQoNCmlmKCRpbnN0YW50c29ydCB8fCAkaW5zdGFudHNlYXJjaCl7DQoJZWNobyAnDQoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPg0KJzsNCglpZigkaW5zdGFudHNlYXJjaCkJZWNobyAkdGhpcy0+Z2V0RmlsZUNvbnRlbnQoImluc3RhbnRzZWFyY2guanMiKTsNCglpZigkaW5zdGFudHNvcnQpCWVjaG8gJHRoaXMtPmdldEZpbGVDb250ZW50KCJpbnN0YW50c29ydC5qcyIpOw0KCWVjaG8gIg0KCTwvc2NyaXB0Pg0KIjsNCn0NCg0KZWNobyAkdGhpcy0+U3RhcnRUYWJIZWFkZXJzKCk7DQoJaWYoICRoYXNfYWR2YW5jZWRfcGVybSB8fCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgidGFiZGlzcGxheV9wbGF5ZXIiLGZhbHNlKSB8fCAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCJhdnBsYXllcl9tYW5hZ2VfcGxheWVyIikgKSB7DQoJCWVjaG8gJHRoaXMtPlNldFRhYkhlYWRlcigicGxheWVyIiwgJHRoaXMtPkxhbmcoInBsYXllcl9wbHVyYWwiKSwgInBsYXllciIgPT0gJGFjdGl2ZV90YWIgPyB0cnVlIDogZmFsc2UpOw0KCX0NCglpZiggJGhhc19hZHZhbmNlZF9wZXJtIHx8ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCJ0YWJkaXNwbGF5X21lZGlhZmlsZSIsZmFsc2UpIHx8ICR0aGlzLT5DaGVja1Blcm1pc3Npb24oImF2cGxheWVyX21hbmFnZV9tZWRpYWZpbGUiKSApIHsNCgkJZWNobyAkdGhpcy0+U2V0VGFiSGVhZGVyKCJtZWRpYWZpbGUiLCAkdGhpcy0+TGFuZygibWVkaWFmaWxlX3BsdXJhbCIpLCAibWVkaWFmaWxlIiA9PSAkYWN0aXZlX3RhYiA/IHRydWUgOiBmYWxzZSk7DQoJfQ0KCWlmKCAkaGFzX2FkdmFuY2VkX3Blcm0gfHwgJHRoaXMtPkdldFByZWZlcmVuY2UoInRhYmRpc3BsYXlfZmllbGRvcHRpb25zIixmYWxzZSkgKSB7DQoJCWVjaG8gJHRoaXMtPlNldFRhYkhlYWRlcigiZmllbGRvcHRpb25zIiwgJHRoaXMtPkxhbmcoImZpZWxkb3B0aW9ucyIpLCAiZmllbGRvcHRpb25zIiA9PSAkYWN0aXZlX3RhYiA/IHRydWUgOiBmYWxzZSk7CQkNCgl9DQoJaWYoICRoYXNfYWR2YW5jZWRfcGVybSB8fCAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCJNb2RpZnkgVGVtcGxhdGVzIikgfHwgJHRoaXMtPkdldFByZWZlcmVuY2UoInRhYmRpc3BsYXlfdGVtcGxhdGVzIixmYWxzZSkgKSB7DQoJCWVjaG8gJHRoaXMtPlNldFRhYkhlYWRlcigidGVtcGxhdGVzIiwgJHRoaXMtPkxhbmcoInRlbXBsYXRlcyIpLCAidGVtcGxhdGVzIiA9PSAkYWN0aXZlX3RhYiA/IHRydWUgOiBmYWxzZSk7CQkNCgl9DQoJaWYoICRoYXNfYWR2YW5jZWRfcGVybSB8fCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgidGFiZGlzcGxheV9xdWVyaWVzIixmYWxzZSkgKSB7DQoJCWVjaG8gJHRoaXMtPlNldFRhYkhlYWRlcigicXVlcmllcyIsICR0aGlzLT5MYW5nKCJxdWVyaWVzIiksICJxdWVyaWVzIiA9PSAkYWN0aXZlX3RhYiA/IHRydWUgOiBmYWxzZSk7CQkNCgl9DQoJaWYoICRoYXNfYWR2YW5jZWRfcGVybSApIHsNCgkJZWNobyAkdGhpcy0+U2V0VGFiSGVhZGVyKCJwcmVmZXJlbmNlcyIsICR0aGlzLT5MYW5nKCJwcmVmZXJlbmNlcyIpLCAicHJlZmVyZW5jZXMiID09ICRhY3RpdmVfdGFiID8gdHJ1ZSA6IGZhbHNlKTsJCQ0KCX0NCmVjaG8gJHRoaXMtPkVuZFRhYkhlYWRlcnMoKTsNCg0KDQoNCmVjaG8gJHRoaXMtPlN0YXJ0VGFiQ29udGVudCgpOw0KDQoNCmlmKCAkaGFzX2FkdmFuY2VkX3Blcm0gfHwgJHRoaXMtPkdldFByZWZlcmVuY2UoInRhYmRpc3BsYXlfcGxheWVyIixmYWxzZSkgfHwgJHRoaXMtPkNoZWNrUGVybWlzc2lvbigiYXZwbGF5ZXJfbWFuYWdlX3BsYXllciIpICkgew0KCWVjaG8gJHRoaXMtPlN0YXJ0VGFiKCJwbGF5ZXIiKTsNCg0KCQkkd2hlcmVjbGF1c2UgPSBhcnJheSgpOw0KCQkkZmlsdGVyb3V0cHV0ID0gZmFsc2U7DQoNCgkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJmaWx0ZXIiLCAkZmlsdGVyb3V0cHV0KTsNCgkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJpbnN0YW50c2VhcmNoIiwgJGluc3RhbnRzZWFyY2g/JHRoaXMtPkxhbmcoInNlYXJjaHRoaXN0YWJsZSIpLiIgIi4kdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgInNlYXJjaHRhYmxlX3BsYXllciIsICIiLCAxMCwgNjQsICcgb25rZXl1cD0iY3RsbW1fc2VhcmNoKHRoaXMudmFsdWUsXCdwbGF5ZXJfdGFibGVcJyk7IicpOmZhbHNlKTsNCgkJCQ0KCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oImFkZG5ldyIsICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgImVkaXRBIiwgJHJldHVybmlkLCAkYWRtaW50aGVtZS0+RGlzcGxheUltYWdlKCJpY29ucy9zeXN0ZW0vbmV3b2JqZWN0LmdpZiIsICIiLCIiLCIiLCJzeXN0ZW1pY29uIikuIiAiLiR0aGlzLT5MYW5nKCJhZGRfcGxheWVyIikpKTsNCgkJJHJlb3JkZXJfYnRuID0gZmFsc2U7aWYoJGhhc19hZHZhbmNlZF9wZXJtIHx8ICEkdGhpcy0+R2V0UHJlZmVyZW5jZSgicmVzdHJpY3RfcGVybWlzc2lvbnMiLGZhbHNlKSB8fCAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCJhdnBsYXllcl9tYW5hZ2VfcGxheWVyIikpCSRyZW9yZGVyX2J0biA9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgInJlb3JkZXIiLCAkcmV0dXJuaWQsICRhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoImljb25zL3N5c3RlbS9yZW9yZGVyLmdpZiIsICIiLCIiLCIiLCJzeXN0ZW1pY29uIikuIiAiLiR0aGlzLT5MYW5nKCJyZW9yZGVyIikpOw0KCQkJDQoJCSR0aGlzLT5zbWFydHktPmFzc2lnbigicmVvcmRlciIsICRyZW9yZGVyX2J0bik7DQoJCSRsaW1pdCA9IGZhbHNlOw0KCQlpZigkYWRtaW5wYWdlcyl7DQoJCQkkbGltaXQgPSAoKGlzc2V0KCRwYXJhbXNbInBsYXllcl9wYWdlIl0pPyRwYXJhbXNbInBsYXllcl9wYWdlIl06MCkgKiAkYWRtaW5wYWdlcykuIiwiLiRhZG1pbnBhZ2VzOw0KCQl9DQoJCQ0KCQkJJGl0ZW1saXN0ID0gJHRoaXMtPmdldF9sZXZlbF9wbGF5ZXIoaXNzZXQoJHdoZXJlY2xhdXNlKT8kd2hlcmVjbGF1c2U6YXJyYXkoKSx0cnVlLCAkaWQsICRyZXR1cm5pZCwgZmFsc2UsICRsaW1pdCk7DQoJCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oInRhYmxlaWQiLCAicGxheWVyX3RhYmxlIik7DQoJCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oIml0ZW1saXN0IiwgJGl0ZW1saXN0KTsNCgkJCSRhZG1pbnNob3cgPSBhcnJheSgNCgkJCQlhcnJheSgkdGhpcy0+TGFuZygibmFtZSIpLCJlZGl0bGluayIsZmFsc2UpLA0KCQkJCWFycmF5KCR0aGlzLT5MYW5nKCJpbnNlcnRfdGFnIiksImluc2VydFRhZyIsdHJ1ZSksDQoJCQkJYXJyYXkoJHRoaXMtPkxhbmcoImFjdGl2ZSIpLCJ0b2dnbGVhY3RpdmUiLHRydWUpLA0KCQkJCWFycmF5KCR0aGlzLT5MYW5nKCJyZW9yZGVyIiksIm1vdmVsaW5rcyIsdHJ1ZSksDQoJCQkJYXJyYXkoJHRoaXMtPkxhbmcoIkFjdGlvbnMiKSwiZGVsZXRlbGluayIsdHJ1ZSkJCQ0KCQkJCSk7DQoJCQlpZigkaW5zdGFudHNvcnQgJiYgY291bnQoJGl0ZW1saXN0KT4xKXsNCgkJCQkkaSA9IDA7DQoJCQkJd2hpbGUoJGk8Y291bnQoJGFkbWluc2hvdykpew0KCQkJCQlpZighJGFkbWluc2hvd1skaV1bMl0pCSRhZG1pbnNob3dbJGldWzBdID0gJzxkaXYgc3R5bGU9ImZsb2F0OmxlZnQ7Ij48YSBzdHlsZT0iY3Vyc29yOiBwb2ludGVyOyIgb25jbGljaz0iY3RsbW1fc29ydFJvd3MoXCdwbGF5ZXJfdGFibGVcJywnLiRpLicpOyI+PGltZyBzcmM9InRoZW1lcy9kZWZhdWx0L2ltYWdlcy9pY29ucy9zeXN0ZW0vc29ydF91cC5naWYiIGFsdD0iXiIvPjwvYT48YnIvPjxhIHN0eWxlPSJjdXJzb3I6IHBvaW50ZXI7IiBvbmNsaWNrPSJjdGxtbV9zb3J0Um93cyhcJ3BsYXllcl90YWJsZVwnLCcuJGkuJyx0cnVlKTsiPjxpbWcgc3JjPSJ0aGVtZXMvZGVmYXVsdC9pbWFnZXMvaWNvbnMvc3lzdGVtL3NvcnRfZG93bi5naWYiIGFsdD0idiIvPjwvYT48L2Rpdj48ZGl2IHN0eWxlPSJsaW5lLWhlaWdodDogMjRweDsiPiAmbmJzcDsnLiRhZG1pbnNob3dbJGldWzBdLiI8L2Rpdj4iOw0KCQkJCQkkaSsrOw0KCQkJCX0NCgkJCX0NCgkJCWxpc3QoJHBhZ2VpbmZvLCAkbmV4dHBhZ2UsICRwcmV2aW91c3BhZ2UsICRwYWdlcykgPSAkdGhpcy0+YWRtaW5fcGFnaW5hdGUoInBsYXllciIsJGFkbWlucGFnZXMsJGlkLCRyZXR1cm5pZCwkcGFyYW1zKTsNCgkJCSR0aGlzLT5zbWFydHktPmFzc2lnbigibmV4dHBhZ2UiLCAkbmV4dHBhZ2UpOw0KCQkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJwcmV2aW91c3BhZ2UiLCAkcHJldmlvdXNwYWdlKTsNCgkJCSR0aGlzLT5zbWFydHktPmFzc2lnbigicGFnZWluZm8iLCAkcGFnZWluZm8pOw0KCQkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJwYWdlcyIsICRwYWdlcyk7DQoJCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oImFkbWluc2hvdyIsICRhZG1pbnNob3cpOw0KCQkJZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCJhZG1pbnBhbmVsLnRwbCIpOw0KDQoJZWNobyAkdGhpcy0+RW5kVGFiKCk7DQoNCn0NCg0KaWYoICRoYXNfYWR2YW5jZWRfcGVybSB8fCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgidGFiZGlzcGxheV9tZWRpYWZpbGUiLGZhbHNlKSB8fCAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCJhdnBsYXllcl9tYW5hZ2VfbWVkaWFmaWxlIikgKSB7DQoJZWNobyAkdGhpcy0+U3RhcnRUYWIoIm1lZGlhZmlsZSIpOw0KDQoJaWYoJHRoaXMtPmNvdW50c29tZXRoaW5nKCJwbGF5ZXIiKSA+IDApew0KDQoJCSR3aGVyZWNsYXVzZSA9IGFycmF5KCk7DQoJCSRmaWx0ZXJvdXRwdXQgPSBmYWxzZTsNCg0KCQkJaWYoJGZpbHRlcil7DQoJCQkJJGN1cl9maWx0ZXIgPSBmYWxzZTsNCgkJCQlpZihpc3NldCgkcGFyYW1zWyJtZWRpYWZpbGVfc2hvd29ubHkiXSkpew0KCQkJCQkkY3VyX2ZpbHRlciA9ICRwYXJhbXNbIm1lZGlhZmlsZV9zaG93b25seSJdOw0KCQkJCQlpZigkdXNlX3Nlc3NvaW4pCSRfU0VTU0lPTlsiY3RsbW1fZmlsdGVyX21lZGlhZmlsZSJdID0gJHBhcmFtc1sibWVkaWFmaWxlX3Nob3dvbmx5Il07DQoJCQkJfWVsc2VpZigkdXNlX3Nlc3Npb24gJiYgaXNzZXQoJF9TRVNTSU9OWyJjdGxtbV9maWx0ZXJfbWVkaWFmaWxlIl0pICYmICRfU0VTU0lPTlsiY3RsbW1fZmlsdGVyX21lZGlhZmlsZSJdKXsNCgkJCQkJJGN1cl9maWx0ZXIgPSAkX1NFU1NJT05bImN0bG1tX2ZpbHRlcl9tZWRpYWZpbGUiXTsNCgkJCQl9DQoJCQkJaWYoJGN1cl9maWx0ZXIgJiYgJGN1cl9maWx0ZXIgIT0gIiIpew0KCQkJCQkkZmlsdGVyb3B0aW9ucyA9IGFycmF5X2ZsaXAoJHRoaXMtPmdldF9vcHRpb25zKCJwbGF5ZXIiKSk7DQoJCQkJCSRmaWx0ZXJvdXRwdXQgPSBpc3NldCgkZmlsdGVyb3B0aW9uc1skcGFyYW1zWyJtZWRpYWZpbGVfc2hvd29ubHkiXV0pPyR0aGlzLT5MYW5nKCJzaG93aW5nb25seSIpLiRmaWx0ZXJvcHRpb25zWyRwYXJhbXNbIm1lZGlhZmlsZV9zaG93b25seSJdXS4iICI6IiI7DQoJCQkJCSRmaWx0ZXJvdXRwdXQgLj0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAiZGVmYXVsdGFkbWluIiwgJHJldHVybmlkLCAkdGhpcy0+TGFuZygic2hvd2FsbCIpLCBhcnJheSgiYWN0aXZlX3RhYiIgPT4gIm1lZGlhZmlsZSIsICJtZWRpYWZpbGVfc2hvd29ubHkiPT5mYWxzZSkpOw0KCQkJCQkkd2hlcmVjbGF1c2UgPSBhcnJheSgicGFyZW50X2lkIj0+JHBhcmFtc1sibWVkaWFmaWxlX3Nob3dvbmx5Il0pOw0KCQkJCX1lbHNlewkJCQkJDQoJCQkJCWlmKCR1c2VfaGllcmFyY2h5KXsNCgkJCQkJCSRmaWx0ZXJvcHRpb25zID0gJHRoaXMtPmdldF9hZG1pbl9oaWVyYXJjaHlvcHRpb25zKCJtZWRpYWZpbGUiLHRydWUpOw0KCQkJCQl9ZWxzZXsNCgkJCQkJCSRmaWx0ZXJvcHRpb25zID0gJHRoaXMtPmdldF9vcHRpb25zKCJwbGF5ZXIiKTsNCgkJCQkJfQ0KCQkJCQkkZmlsdGVyb3V0cHV0ID0gJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCgkaWQsICJkZWZhdWx0YWRtaW4iLCAkcmV0dXJuaWQpOw0KCQkJCQkkZmlsdGVyb3V0cHV0IC49ICR0aGlzLT5MYW5nKCJmaWx0ZXJieV9wbGF5ZXIiKS4iIDogIjsNCgkJCQkJJGZpbHRlcm91dHB1dCAuPSAkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsICJtZWRpYWZpbGVfc2hvd29ubHkiLCAkZmlsdGVyb3B0aW9ucywgLTEpOw0KCQkJCQkkZmlsdGVyb3V0cHV0IC49ICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsICJhY3RpdmVfdGFiIiwgIm1lZGlhZmlsZSIpOw0KCQkJCQkkZmlsdGVyb3V0cHV0IC49ICIgIi4kdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAic3VibWl0IiwgbGFuZygic3VibWl0IikpOw0KCQkJCQkkZmlsdGVyb3V0cHV0IC49ICR0aGlzLT5DcmVhdGVGb3JtRW5kKCk7DQoJCQkJfQ0KCQkJfQ0KCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oImZpbHRlciIsICRmaWx0ZXJvdXRwdXQpOw0KCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oImluc3RhbnRzZWFyY2giLCAkaW5zdGFudHNlYXJjaD8kdGhpcy0+TGFuZygic2VhcmNodGhpc3RhYmxlIikuIiAiLiR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAic2VhcmNodGFibGVfbWVkaWFmaWxlIiwgIiIsIDEwLCA2NCwgJyBvbmtleXVwPSJjdGxtbV9zZWFyY2godGhpcy52YWx1ZSxcJ21lZGlhZmlsZV90YWJsZVwnKTsiJyk6ZmFsc2UpOw0KCQkJDQoJCSR0aGlzLT5zbWFydHktPmFzc2lnbigiYWRkbmV3IiwgJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAiZWRpdEIiLCAkcmV0dXJuaWQsICRhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoImljb25zL3N5c3RlbS9uZXdvYmplY3QuZ2lmIiwgIiIsIiIsIiIsInN5c3RlbWljb24iKS4iICIuJHRoaXMtPkxhbmcoImFkZF9tZWRpYWZpbGUiKSkpOw0KCQkkcmVvcmRlcl9idG4gPSBmYWxzZTtpZigkaGFzX2FkdmFuY2VkX3Blcm0gfHwgISR0aGlzLT5HZXRQcmVmZXJlbmNlKCJyZXN0cmljdF9wZXJtaXNzaW9ucyIsZmFsc2UpIHx8ICR0aGlzLT5DaGVja1Blcm1pc3Npb24oImF2cGxheWVyX21hbmFnZV9tZWRpYWZpbGUiKSkJJHJlb3JkZXJfYnRuID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAicmVvcmRlciIsICRyZXR1cm5pZCwgJGFkbWludGhlbWUtPkRpc3BsYXlJbWFnZSgiaWNvbnMvc3lzdGVtL3Jlb3JkZXIuZ2lmIiwgIiIsIiIsIiIsInN5c3RlbWljb24iKS4iICIuJHRoaXMtPkxhbmcoInJlb3JkZXIiKSk7DQoJCQkNCgkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJyZW9yZGVyIiwgJHJlb3JkZXJfYnRuKTsNCgkJJGxpbWl0ID0gZmFsc2U7DQoJCWlmKCRhZG1pbnBhZ2VzKXsNCgkJCSRsaW1pdCA9ICgoaXNzZXQoJHBhcmFtc1sibWVkaWFmaWxlX3BhZ2UiXSk/JHBhcmFtc1sibWVkaWFmaWxlX3BhZ2UiXTowKSAqICRhZG1pbnBhZ2VzKS4iLCIuJGFkbWlucGFnZXM7DQoJCX0NCgkJDQoJCQkkaXRlbWxpc3QgPSAkdGhpcy0+Z2V0X2xldmVsX21lZGlhZmlsZShpc3NldCgkd2hlcmVjbGF1c2UpPyR3aGVyZWNsYXVzZTphcnJheSgpLHRydWUsICRpZCwgJHJldHVybmlkLCBmYWxzZSwgJGxpbWl0KTsNCgkJCSR0aGlzLT5zbWFydHktPmFzc2lnbigidGFibGVpZCIsICJtZWRpYWZpbGVfdGFibGUiKTsNCgkJCSR0aGlzLT5zbWFydHktPmFzc2lnbigiaXRlbWxpc3QiLCAkaXRlbWxpc3QpOw0KCQkJJGFkbWluc2hvdyA9IGFycmF5KA0KCQkJCWFycmF5KCR0aGlzLT5MYW5nKCJuYW1lIiksImVkaXRsaW5rIixmYWxzZSksDQoJCQkJYXJyYXkoJHRoaXMtPkxhbmcoImluc2VydF90YWciKSwiaW5zZXJ0VGFnIix0cnVlKSwNCgkJCQlhcnJheSgkdGhpcy0+TGFuZygiYWN0aXZlIiksInRvZ2dsZWFjdGl2ZSIsdHJ1ZSksDQoJCQkJYXJyYXkoJHRoaXMtPkxhbmcoImlzZGVmYXVsdCIpLCJ0b2dnbGVkZWZhdWx0Iix0cnVlKSwNCgkJCQlhcnJheSgkdGhpcy0+TGFuZygicmVvcmRlciIpLCJtb3ZlbGlua3MiLHRydWUpLA0KCQkJCWFycmF5KCR0aGlzLT5MYW5nKCJBY3Rpb25zIiksImRlbGV0ZWxpbmsiLHRydWUpCQkNCgkJCQkpOw0KCQkJaWYoJGluc3RhbnRzb3J0ICYmIGNvdW50KCRpdGVtbGlzdCk+MSl7DQoJCQkJJGkgPSAwOw0KCQkJCXdoaWxlKCRpPGNvdW50KCRhZG1pbnNob3cpKXsNCgkJCQkJaWYoISRhZG1pbnNob3dbJGldWzJdKQkkYWRtaW5zaG93WyRpXVswXSA9ICc8ZGl2IHN0eWxlPSJmbG9hdDpsZWZ0OyI+PGEgc3R5bGU9ImN1cnNvcjogcG9pbnRlcjsiIG9uY2xpY2s9ImN0bG1tX3NvcnRSb3dzKFwnbWVkaWFmaWxlX3RhYmxlXCcsJy4kaS4nKTsiPjxpbWcgc3JjPSJ0aGVtZXMvZGVmYXVsdC9pbWFnZXMvaWNvbnMvc3lzdGVtL3NvcnRfdXAuZ2lmIiBhbHQ9Il4iLz48L2E+PGJyLz48YSBzdHlsZT0iY3Vyc29yOiBwb2ludGVyOyIgb25jbGljaz0iY3RsbW1fc29ydFJvd3MoXCdtZWRpYWZpbGVfdGFibGVcJywnLiRpLicsdHJ1ZSk7Ij48aW1nIHNyYz0idGhlbWVzL2RlZmF1bHQvaW1hZ2VzL2ljb25zL3N5c3RlbS9zb3J0X2Rvd24uZ2lmIiBhbHQ9InYiLz48L2E+PC9kaXY+PGRpdiBzdHlsZT0ibGluZS1oZWlnaHQ6IDI0cHg7Ij4gJm5ic3A7Jy4kYWRtaW5zaG93WyRpXVswXS4iPC9kaXY+IjsNCgkJCQkJJGkrKzsNCgkJCQl9DQoJCQl9DQoJCQlsaXN0KCRwYWdlaW5mbywgJG5leHRwYWdlLCAkcHJldmlvdXNwYWdlLCAkcGFnZXMpID0gJHRoaXMtPmFkbWluX3BhZ2luYXRlKCJtZWRpYWZpbGUiLCRhZG1pbnBhZ2VzLCRpZCwkcmV0dXJuaWQsJHBhcmFtcyk7DQoJCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oIm5leHRwYWdlIiwgJG5leHRwYWdlKTsNCgkJCSR0aGlzLT5zbWFydHktPmFzc2lnbigicHJldmlvdXNwYWdlIiwgJHByZXZpb3VzcGFnZSk7DQoJCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oInBhZ2VpbmZvIiwgJHBhZ2VpbmZvKTsNCgkJCSR0aGlzLT5zbWFydHktPmFzc2lnbigicGFnZXMiLCAkcGFnZXMpOw0KCQkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJhZG1pbnNob3ciLCAkYWRtaW5zaG93KTsNCgkJCWVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgiYWRtaW5wYW5lbC50cGwiKTsNCg0KCX1lbHNlew0KCQllY2hvICI8cD4iLiR0aGlzLT5MYW5nKCJlcnJvcl9ub3BhcmVudCIpLiI8L3A+IjsNCgl9DQoNCgllY2hvICR0aGlzLT5FbmRUYWIoKTsNCg0KfQ0KCSR0aGlzLT5zbWFydHktPmFzc2lnbihhcnJheSgibmV4dHBhZ2UiPT5mYWxzZSwicHJldmlvdXNwYWdlIj0+ZmFsc2UsInBhZ2VpbmZvIj0+ZmFsc2UsInBhZ2VzIj0+ZmFsc2UpKTsNCg0KDQppZiggJGhhc19hZHZhbmNlZF9wZXJtIHx8ICR0aGlzLT5DaGVja1Blcm1pc3Npb24oIk1vZGlmeSBUZW1wbGF0ZXMiKSB8fCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgidGFiZGlzcGxheV9maWVsZG9wdGlvbnMiLGZhbHNlKSApIHsNCgllY2hvICR0aGlzLT5TdGFydFRhYigiZmllbGRvcHRpb25zIik7DQoNCgllY2hvICI8ZmllbGRzZXQgc3R5bGU9XCJ3aWR0aDogNjAwcHg7XCI+PGxlZ2VuZD48Yj4ocGxheWVyKSB1c2VyZGVmaW5lZDEgOjwvYj48L2xlZ2VuZD48dWw+IjsNCgkkb3B0aW9ucyA9ICR0aGlzLT5nZXRfZmllbGRvcHRpb25zKCJwbGF5ZXJfdXNlcmRlZmluZWQxIix0cnVlKTsNCgllY2hvICc8dGFibGUgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBjbGFzcz0icGFnZXRhYmxlIj4nOw0KCSRyb3djbGFzcyA9IDE7DQoJZm9yZWFjaCgkb3B0aW9ucyBhcyAkb3B0aW9uKXsNCgkJJG5ld3BhcmFtcyA9IGFycmF5KCJmaWVsZCI9PiJwbGF5ZXJfdXNlcmRlZmluZWQxIiwgIm9wdGlvbmlkIj0+JG9wdGlvbi0+aWQsICJjdXJyZW50b3JkZXIiPT4kb3B0aW9uLT5pdGVtX29yZGVyKTsNCgkJZWNobyAiDQoJCTx0ciBjbGFzcz1cInJvdyIuJHJvd2NsYXNzLiJcIj48dGQ+Ii4kb3B0aW9uLT5uYW1lLiI8L3RkPjx0ZCB3aWR0aD1cIjEyMFwiPiI7DQoJCWVjaG8gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAicmVuYW1lX29wdGlvbnZhbHVlIiwgJHJldHVybmlkLCAkYWRtaW50aGVtZS0+RGlzcGxheUltYWdlKCJpY29ucy9zeXN0ZW0vZWRpdC5naWYiLCBsYW5nKCJlZGl0IiksIiIsIiIsInN5c3RlbWljb24iKSwgYXJyYXlfbWVyZ2UoJG5ld3BhcmFtcywgYXJyYXkoIm9wdGlvbm5hbWUiPT4kb3B0aW9uLT5uYW1lKSkpLiIgIjsNCgkJZWNobyAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICJkZWxldGVfb3B0aW9udmFsdWUiLCAkcmV0dXJuaWQsICRhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoImljb25zL3N5c3RlbS9kZWxldGUuZ2lmIixsYW5nKCJkZWxldGUiKSwiIiwiIiwic3lzdGVtaWNvbiIpLCAkbmV3cGFyYW1zLCAkdGhpcy0+TGFuZygicHJvbXB0X2RlbGV0ZW9wdGlvbiIpKTsNCgkJZWNobyAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICJtb3ZlX29wdGlvbnZhbHVlIiwgJHJldHVybmlkLCAkYWRtaW50aGVtZS0+RGlzcGxheUltYWdlKCJpY29ucy9zeXN0ZW0vYXJyb3ctdS5naWYiLGxhbmcoInVwIiksIiIsIiIsInN5c3RlbWljb24iKSwgYXJyYXlfbWVyZ2UoJG5ld3BhcmFtcywgYXJyYXkoIm1vdmUiPT4idXAiKSkpOw0KCQllY2hvICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgIm1vdmVfb3B0aW9udmFsdWUiLCAkcmV0dXJuaWQsICRhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoImljb25zL3N5c3RlbS9hcnJvdy1kLmdpZiIsbGFuZygiZG93biIpLCIiLCIiLCJzeXN0ZW1pY29uIiksIGFycmF5X21lcmdlKCRuZXdwYXJhbXMsIGFycmF5KCJtb3ZlIj0+ImRvd24iKSkpOw0KCQllY2hvICI8L3RkPjwvdHI+IjsNCgkJJHJvd2NsYXNzID0gJHJvd2NsYXNzID09IDE/MjoxOw0KCX0NCgllY2hvICI8L3RhYmxlPiI7DQoJZWNobyAiPHA+Ii4kdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwgImFkZF9vcHRpb252YWx1ZSIpOw0KCQllY2hvICI8cD4iLiR0aGlzLT5MYW5nKCJhZGRvcHRpb24iKS4iOiAiLiR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAib3B0aW9ubmFtZSIsICIiLCAyMCwgNjQpOw0KCQllY2hvICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsICJmaWVsZCIsICJwbGF5ZXJfdXNlcmRlZmluZWQxIik7DQoJCWVjaG8gIiAiLiR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICJzdWJtaXQiLCBsYW5nKCJzdWJtaXQiKSkuIjwvcD4iOw0KCWVjaG8gJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKTsNCgllY2hvICI8L3A+PC9maWVsZHNldD48YnIvPjxici8+IjsNCgllY2hvICI8ZmllbGRzZXQgc3R5bGU9XCJ3aWR0aDogNjAwcHg7XCI+PGxlZ2VuZD48Yj4obWVkaWFmaWxlKSB1c2VyZGVmaW5lZDIgOjwvYj48L2xlZ2VuZD48dWw+IjsNCgkkb3B0aW9ucyA9ICR0aGlzLT5nZXRfZmllbGRvcHRpb25zKCJtZWRpYWZpbGVfdXNlcmRlZmluZWQyIix0cnVlKTsNCgllY2hvICc8dGFibGUgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBjbGFzcz0icGFnZXRhYmxlIj4nOw0KCSRyb3djbGFzcyA9IDE7DQoJZm9yZWFjaCgkb3B0aW9ucyBhcyAkb3B0aW9uKXsNCgkJJG5ld3BhcmFtcyA9IGFycmF5KCJmaWVsZCI9PiJtZWRpYWZpbGVfdXNlcmRlZmluZWQyIiwgIm9wdGlvbmlkIj0+JG9wdGlvbi0+aWQsICJjdXJyZW50b3JkZXIiPT4kb3B0aW9uLT5pdGVtX29yZGVyKTsNCgkJZWNobyAiDQoJCTx0ciBjbGFzcz1cInJvdyIuJHJvd2NsYXNzLiJcIj48dGQ+Ii4kb3B0aW9uLT5uYW1lLiI8L3RkPjx0ZCB3aWR0aD1cIjEyMFwiPiI7DQoJCWVjaG8gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAicmVuYW1lX29wdGlvbnZhbHVlIiwgJHJldHVybmlkLCAkYWRtaW50aGVtZS0+RGlzcGxheUltYWdlKCJpY29ucy9zeXN0ZW0vZWRpdC5naWYiLCBsYW5nKCJlZGl0IiksIiIsIiIsInN5c3RlbWljb24iKSwgYXJyYXlfbWVyZ2UoJG5ld3BhcmFtcywgYXJyYXkoIm9wdGlvbm5hbWUiPT4kb3B0aW9uLT5uYW1lKSkpLiIgIjsNCgkJZWNobyAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICJkZWxldGVfb3B0aW9udmFsdWUiLCAkcmV0dXJuaWQsICRhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoImljb25zL3N5c3RlbS9kZWxldGUuZ2lmIixsYW5nKCJkZWxldGUiKSwiIiwiIiwic3lzdGVtaWNvbiIpLCAkbmV3cGFyYW1zLCAkdGhpcy0+TGFuZygicHJvbXB0X2RlbGV0ZW9wdGlvbiIpKTsNCgkJZWNobyAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICJtb3ZlX29wdGlvbnZhbHVlIiwgJHJldHVybmlkLCAkYWRtaW50aGVtZS0+RGlzcGxheUltYWdlKCJpY29ucy9zeXN0ZW0vYXJyb3ctdS5naWYiLGxhbmcoInVwIiksIiIsIiIsInN5c3RlbWljb24iKSwgYXJyYXlfbWVyZ2UoJG5ld3BhcmFtcywgYXJyYXkoIm1vdmUiPT4idXAiKSkpOw0KCQllY2hvICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgIm1vdmVfb3B0aW9udmFsdWUiLCAkcmV0dXJuaWQsICRhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoImljb25zL3N5c3RlbS9hcnJvdy1kLmdpZiIsbGFuZygiZG93biIpLCIiLCIiLCJzeXN0ZW1pY29uIiksIGFycmF5X21lcmdlKCRuZXdwYXJhbXMsIGFycmF5KCJtb3ZlIj0+ImRvd24iKSkpOw0KCQllY2hvICI8L3RkPjwvdHI+IjsNCgkJJHJvd2NsYXNzID0gJHJvd2NsYXNzID09IDE/MjoxOw0KCX0NCgllY2hvICI8L3RhYmxlPiI7DQoJZWNobyAiPHA+Ii4kdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwgImFkZF9vcHRpb252YWx1ZSIpOw0KCQllY2hvICI8cD4iLiR0aGlzLT5MYW5nKCJhZGRvcHRpb24iKS4iOiAiLiR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAib3B0aW9ubmFtZSIsICIiLCAyMCwgNjQpOw0KCQllY2hvICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsICJmaWVsZCIsICJtZWRpYWZpbGVfdXNlcmRlZmluZWQyIik7DQoJCWVjaG8gIiAiLiR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICJzdWJtaXQiLCBsYW5nKCJzdWJtaXQiKSkuIjwvcD4iOw0KCWVjaG8gJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKTsNCgllY2hvICI8L3A+PC9maWVsZHNldD48YnIvPjxici8+IjsNCgllY2hvICR0aGlzLT5FbmRUYWIoKTsNCn0NCg0KCSR0aGlzLT5zbWFydHktPmFzc2lnbihhcnJheSgiZmlsdGVyIj0+ZmFsc2UsInJlb3JkZXIiPT5mYWxzZSwiaW5zdGFudHNlYXJjaCI9PmZhbHNlLCJ0YWJsZWlkIj0+ZmFsc2UpKTsNCg0KaWYoICRoYXNfYWR2YW5jZWRfcGVybSB8fCAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCJNb2RpZnkgVGVtcGxhdGVzIikgfHwgJHRoaXMtPkdldFByZWZlcmVuY2UoInRhYmRpc3BsYXlfdGVtcGxhdGVzIixmYWxzZSkgKSB7DQoJZWNobyAkdGhpcy0+U3RhcnRUYWIoInRlbXBsYXRlcyIpOw0KCQ0KICAgIGVjaG8gIjxmaWVsZHNldCBzdHlsZT1cIndpZHRoOiA2MDBweDtcIj48bGVnZW5kPjxiPiIuJHRoaXMtPkxhbmcoImRlZmF1bHR0ZW1wbGF0ZXMiKS4iPC9iPjwvbGVnZW5kPiI7DQogICAgZWNobyAkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwgImNoYW5nZWRlZnRlbXBsYXRlcyIsICRyZXR1cm5pZCk7DQogICAgJHRlbXBsYXRlbGlzdCA9ICR0aGlzLT5MaXN0VGVtcGxhdGVzKCR0aGlzLT5HZXROYW1lKCkpOw0KICAgICRkZWZ0cGxzID0gJHRoaXMtPmdldERlZmF1bHRUZW1wbGF0ZXMoKTsNCiAgICAkdHBsb3B0aW9ucyA9IGFycmF5KCk7DQogICAgJGl0ZW1saXN0ID0gYXJyYXkoKTsNCiAgICBmb3JlYWNoKCR0ZW1wbGF0ZWxpc3QgYXMgJG9uZXRwbCl7DQoJICAgJHRwbG9wdGlvbnNbJG9uZXRwbF0gPSAkb25ldHBsOw0KCSAgICR0cGwgPSBuZXcgc3RkQ2xhc3MoKTsNCgkgICAkdHBsLT5lZGl0bGluayA9ICR0aGlzLT5DcmVhdGVMaW5rKCAkaWQsICJlZGl0VGVtcGxhdGUiLCAkcmV0dXJuaWQsICRvbmV0cGwsIGFycmF5KCJ0cGxuYW1lIj0+JG9uZXRwbCkgKTsNCgkgICAkdHBsLT5kZWxldGVsaW5rID0gaW5fYXJyYXkoJG9uZXRwbCwgJGRlZnRwbHMpPyIiOiR0aGlzLT5DcmVhdGVMaW5rKCAkaWQsICJkZWxldGV0cGwiLCAkcmV0dXJuaWQsICRhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoImljb25zL3N5c3RlbS9kZWxldGUuZ2lmIiwgJHRoaXMtPkxhbmcoImRlbGV0ZSIpLCAiIiwgIiIsICJzeXN0ZW1pY29uIiksIGFycmF5KCJ0cGxuYW1lIj0+JG9uZXRwbCkgKTsNCgkgICBhcnJheV9wdXNoKCRpdGVtbGlzdCwgJHRwbCk7DQogICAgfQ0KDQoJICAgZWNobyAiCTxkaXYgY2xhc3M9XCJwYWdlb3ZlcmZsb3dcIj4NCgkJCSA8cCBjbGFzcz1cInBhZ2V0ZXh0XCI+Ii4kdGhpcy0+TGFuZygiZGVmdGVtcGxhdGVmb3IiKS4iIFwicGxheWVyXCI6PC9wPg0KCQkJIDxwIGNsYXNzPVwicGFnZWlucHV0XCI+Ii4kdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsImxpc3R0ZW1wbGF0ZV9wbGF5ZXIiLCR0cGxvcHRpb25zLC0xLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCJsaXN0dGVtcGxhdGVfcGxheWVyIikpLiI8L3A+DQoJCTwvZGl2Pg0KICAgICI7DQoJICAgZWNobyAiCTxkaXYgY2xhc3M9XCJwYWdlb3ZlcmZsb3dcIj4NCgkJCSA8cCBjbGFzcz1cInBhZ2V0ZXh0XCI+Ii4kdGhpcy0+TGFuZygiZGVmdGVtcGxhdGVmb3IiKS4iIFwibWVkaWFmaWxlXCI6PC9wPg0KCQkJIDxwIGNsYXNzPVwicGFnZWlucHV0XCI+Ii4kdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsImxpc3R0ZW1wbGF0ZV9tZWRpYWZpbGUiLCR0cGxvcHRpb25zLC0xLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCJsaXN0dGVtcGxhdGVfbWVkaWFmaWxlIikpLiI8L3A+DQoJCTwvZGl2Pg0KICAgICI7DQogICAgZWNobyAiCTxkaXYgY2xhc3M9XCJwYWdlb3ZlcmZsb3dcIj4NCgkJCSA8cCBjbGFzcz1cInBhZ2V0ZXh0XCI+Ii4kdGhpcy0+TGFuZygiZGVmZGV0YWlsdGVtcGxhdGUiKS4iOjwvcD4NCgkJCSA8cCBjbGFzcz1cInBhZ2VpbnB1dFwiPiIuJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCJmaW5hbHRlbXBsYXRlIiwkdHBsb3B0aW9ucywtMSwkdGhpcy0+R2V0UHJlZmVyZW5jZSgiZmluYWx0ZW1wbGF0ZSIpKS4iPC9wPg0KCQk8L2Rpdj4NCgkiOw0KCSR0cGxvcHRpb25zWyR0aGlzLT5MYW5nKCJ1c2VsZXZlbGxpc3R0cGwiKV0gPSAiKioiOw0KCWVjaG8gIgk8ZGl2IGNsYXNzPVwicGFnZW92ZXJmbG93XCI+DQoJCQkgPHAgY2xhc3M9XCJwYWdldGV4dFwiPiIuJHRoaXMtPkxhbmcoImRlZnNlYXJjaHJlc3VsdHN0ZW1wbGF0ZSIpLiI6PC9wPg0KCQkJIDxwIGNsYXNzPVwicGFnZWlucHV0XCI+Ii4kdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsInNlYXJjaHJlc3VsdHN0ZW1wbGF0ZSIsJHRwbG9wdGlvbnMsLTEsJHRoaXMtPkdldFByZWZlcmVuY2UoInNlYXJjaHJlc3VsdHN0ZW1wbGF0ZSIsIioqIikpLiI8L3A+DQoJCTwvZGl2Pg0KCSI7DQoJZWNobyAiCTxkaXYgY2xhc3M9XCJwYWdlb3ZlcmZsb3dcIj4NCgkJCSA8cCBjbGFzcz1cInBhZ2V0ZXh0XCI+Ii4kdGhpcy0+TGFuZygiZGVmZW1wdHl0ZW1wbGF0ZSIpLiI6PC9wPg0KCQkJIDxwIGNsYXNzPVwicGFnZWlucHV0XCI+Ii4kdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsImVtcHR5dGVtcGxhdGUiLCR0cGxvcHRpb25zLC0xLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCJlbXB0eXRlbXBsYXRlIiwiKioiKSkuIjwvcD4NCgkJPC9kaXY+DQogICAgPHA+Ii4kdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAic3VibWl0IiwgbGFuZygic3VibWl0IikpLiI8L3A+IjsNCiAgICBlY2hvICR0aGlzLT5DcmVhdGVGb3JtRW5kKCk7DQoNCiAgICBlY2hvICI8L2ZpZWxkc2V0Pjxici8+PGJyLz4iOw0KICAgICR0aGlzLT5zbWFydHktPmFzc2lnbigiaXRlbWxpc3QiLCAkaXRlbWxpc3QpOw0KCSR0aGlzLT5zbWFydHktPmFzc2lnbigiYWRkbmV3IiwgJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAiZWRpdFRlbXBsYXRlIiwgJHJldHVybmlkLCAkYWRtaW50aGVtZS0+RGlzcGxheUltYWdlKCJpY29ucy9zeXN0ZW0vbmV3b2JqZWN0LmdpZiIsICIiLCIiLCIiLCJzeXN0ZW1pY29uIikuIiAiLiR0aGlzLT5MYW5nKCJhZGR0ZW1wbGF0ZSIpKSk7DQogICAgJGFkbWluc2hvdyA9IGFycmF5KAlhcnJheSgkdGhpcy0+TGFuZygidGVtcGxhdGUiKSwgImVkaXRsaW5rIiwgZmFsc2UpLCBhcnJheSgkdGhpcy0+TGFuZygiQWN0aW9ucyIpLCAiZGVsZXRlbGluayIsIGZhbHNlKQkpOw0KICAgICR0aGlzLT5zbWFydHktPmFzc2lnbigiYWRtaW5zaG93IiwgJGFkbWluc2hvdyk7DQogICAgZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCJhZG1pbnBhbmVsLnRwbCIpOw0KCWVjaG8gJHRoaXMtPkVuZFRhYigpOw0KfQ0KDQppZiggJGhhc19hZHZhbmNlZF9wZXJtIHx8ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCJ0YWJkaXNwbGF5X3F1ZXJpZXMiLGZhbHNlKSApIHsNCgllY2hvICR0aGlzLT5TdGFydFRhYigicXVlcmllcyIpOw0KDQoJCSRpdGVtbGlzdCA9ICR0aGlzLT5nZXRfcXVlcmllcygkd2hlcmU9YXJyYXkoKSwgdHJ1ZSwgJGlkLCAkcmV0dXJuaWQpOw0KCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oIml0ZW1saXN0IiwgJGl0ZW1saXN0PyRpdGVtbGlzdDphcnJheSgpKTsNCgkJJGFkbWluc2hvdyA9IGFycmF5KCBhcnJheSgiaWQiLCJpZCIpLA0KCQkJCQkJCWFycmF5KCR0aGlzLT5MYW5nKCJuYW1lIiksICJuYW1lIiksDQoJCQkJCQkJYXJyYXkoJHRoaXMtPkxhbmcoIkFjdGlvbnMiKSwgImFjdGlvbnMiKQ0KCQkJCQkJCSk7DQoJCSR0aGlzLT5zbWFydHktPmFzc2lnbigiYWRtaW5zaG93IiwgJGFkbWluc2hvdyk7DQoJCSR0aGlzLT5zbWFydHktPmFzc2lnbigiYWRkbmV3IiwgJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAiYWRtaW5xdWVyeSIsICRyZXR1cm5pZCwgJGFkbWludGhlbWUtPkRpc3BsYXlJbWFnZSgiaWNvbnMvc3lzdGVtL25ld29iamVjdC5naWYiLCAiIiwiIiwiIiwic3lzdGVtaWNvbiIpLiIgIi4kdGhpcy0+TGFuZygiY3JlYXRlcXVlcnkiKSkpOw0KCQllY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoImFkbWlucGFuZWwudHBsIik7DQoJCQ0KCWVjaG8gJHRoaXMtPkVuZFRhYigpOw0KfQ0KDQppZiggJGhhc19hZHZhbmNlZF9wZXJtICkgew0KCWVjaG8gJHRoaXMtPlN0YXJ0VGFiKCJwcmVmZXJlbmNlcyIpOw0KCWVjaG8gJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCgkaWQsICJjaGFuZ2VwcmVmZXJlbmNlcyIsICRyZXR1cm5pZCk7DQoJZWNobyAiPGZpZWxkc2V0IHN0eWxlPVwid2lkdGg6IDQ2NXB4O1wiPjxsZWdlbmQ+PGI+Ii4kdGhpcy0+TGFuZygicHJlZl90YWJkaXNwbGF5IikuIjo8L2I+PC9sZWdlbmQ+PHVsPg0KCSI7DQoJJHRhYmRpc3BsYXkgPSBhcnJheSgicGxheWVyIiwibWVkaWFmaWxlIiwiZmllbGRvcHRpb25zIiwidGVtcGxhdGVzIiwicXVlcmllcyIpOw0KCWZvcmVhY2goJHRhYmRpc3BsYXkgYXMgJG9uZXByZWYpew0KCQllY2hvICI8bGk+Ii4kdGhpcy0+Q3JlYXRlSW5wdXRDaGVja2JveCgkaWQsICJ0YWJkaXNwbGF5XyIuJG9uZXByZWYsIHRydWUsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCJ0YWJkaXNwbGF5XyIuJG9uZXByZWYsZmFsc2UpKS4kdGhpcy0+TGFuZygkb25lcHJlZikuIjwvbGk+DQoJIjsNCgl9DQoJZWNobyAiPC91bD48YnIvPjxwPiIuJHRoaXMtPkxhbmcoImhlbHBfdGFiZGlzcGxheSIpLiI8L3A+DQo8L2ZpZWxkc2V0Pjxici8+DQoiOw0KCWVjaG8gIjxmaWVsZHNldCBzdHlsZT1cIndpZHRoOiA0NjVweDtcIj48bGVnZW5kPjxiPiIuJHRoaXMtPkxhbmcoInByZWZfc2VhcmNobW9kdWxlX2luZGV4IikuIjo8L2I+PC9sZWdlbmQ+PHVsPg0KCSI7DQoJZm9yZWFjaCgkdGhpcy0+Z2V0X2xldmVsYXJyYXkoKSBhcyAkb25lcHJlZil7DQoJCWVjaG8gIjxsaT4iLiR0aGlzLT5DcmVhdGVJbnB1dENoZWNrYm94KCRpZCwgInNlYXJjaG1vZHVsZV9pbmRleF8iLiRvbmVwcmVmLCB0cnVlLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgic2VhcmNobW9kdWxlX2luZGV4XyIuJG9uZXByZWYsZmFsc2UpKS4kdGhpcy0+TGFuZygkb25lcHJlZikuIjwvbGk+DQoJIjsNCgl9DQoJZWNobyAiPC91bD48YnIvPjxwPiIuJHRoaXMtPkxhbmcoImhlbHBfc2VhcmNobW9kdWxlX2luZGV4IikuIjwvcD4NCjwvZmllbGRzZXQ+PGJyLz4NCiI7DQoJZWNobyAiPGZpZWxkc2V0IHN0eWxlPVwid2lkdGg6IDQ2NXB4O1wiPjxsZWdlbmQ+PGI+Ii4kdGhpcy0+TGFuZygicHJlZl9uZXdpdGVtc2ZpcnN0IikuIjo8L2I+PC9sZWdlbmQ+PHVsPg0KCSI7DQoJZm9yZWFjaCgkdGhpcy0+Z2V0X2xldmVsYXJyYXkoKSBhcyAkb25lcHJlZil7DQoJCWVjaG8gIjxsaT4iLiR0aGlzLT5DcmVhdGVJbnB1dENoZWNrYm94KCRpZCwgIm5ld2l0ZW1zZmlyc3RfIi4kb25lcHJlZiwgdHJ1ZSwgJHRoaXMtPkdldFByZWZlcmVuY2UoIm5ld2l0ZW1zZmlyc3RfIi4kb25lcHJlZixmYWxzZSkpLiR0aGlzLT5MYW5nKCRvbmVwcmVmKS4iPC9saT4NCgkiOw0KCX0NCgllY2hvICI8L3VsPjxici8+PHA+Ii4kdGhpcy0+TGFuZygiaGVscF9uZXdpdGVtc2ZpcnN0IikuIjwvcD4NCjwvZmllbGRzZXQ+PGJyLz4NCiI7DQoNCgllY2hvICI8ZmllbGRzZXQgc3R5bGU9XCJ3aWR0aDogNDY1cHg7XCI+PGxlZ2VuZD48Yj4iLiR0aGlzLT5MYW5nKCJwcmVmX2xldmVscGFnaW5hdGlvbiIpLiI6PC9iPjwvbGVnZW5kPjx1bD4NCgkiOw0KCWZvcmVhY2goJHRoaXMtPmdldF9sZXZlbGFycmF5KCkgYXMgJG9uZXByZWYpew0KCQllY2hvICI8bGk+Ii4kdGhpcy0+TGFuZygkb25lcHJlZikuIjogIjsNCgkJZWNobyAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJG9uZXByZWYuIl9wYWdpbmF0aW9uIiwgJHRoaXMtPkdldFByZWZlcmVuY2UoJG9uZXByZWYuIl9wYWdpbmF0aW9uIiwwKSwgMTIsIDMpLiI8L2xpPg0KCSI7DQoJfQ0KCWVjaG8gIjwvdWw+PGJyLz48cD4iLiR0aGlzLT5MYW5nKCJoZWxwX2xldmVscGFnaW5hdGlvbiIpLiI8L3A+DQo8L2ZpZWxkc2V0Pjxici8+DQoiOw0KDQoJZWNobyAiPGZpZWxkc2V0IHN0eWxlPVwid2lkdGg6IDYwMHB4O1wiPjxsZWdlbmQ+PGI+Ii4kdGhpcy0+TGFuZygicHJlZl9mcm9udGVuZCIpLiI6PC9iPjwvbGVnZW5kPg0KCSI7DQoJJGNoZWNrYm94cHJlZnMgPSBhcnJheSgiZmVfd3lzaXd5ZyIsImZlX2RlY29kZWVudGl0aWVzIiwiZmVfYWxsb3dmaWxlcyIsImZlX2FsbG93bmFtZWNoYW5nZSIsImZlX2FsbG93YWRkbmV3IiwiZmVfdXNlY2FwdGNoYSIpOw0KCWZvcmVhY2goJGNoZWNrYm94cHJlZnMgYXMgJG9uZXByZWYpew0KCQllY2hvICI8cD4iLiR0aGlzLT5DcmVhdGVJbnB1dENoZWNrYm94KCRpZCwgJG9uZXByZWYsIHRydWUsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCRvbmVwcmVmLGZhbHNlKSkuJHRoaXMtPkxhbmcoInByZWZfIi4kb25lcHJlZikuIjwvcD4NCgkiOw0KCX0NCgllY2hvICI8cD4iLiR0aGlzLT5MYW5nKCJwcmVmX2ZlX21heGZpbGVzaXplIikuIjoiLiR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAiZmVfbWF4ZmlsZXNpemUiLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgiZmVfbWF4ZmlsZXNpemUiLCIiKSwgMTIsIDEyKS4iPC9wPg0KCSI7DQoJJGNudG9wZXJhdGlvbnMgPSAkZ0Ntcy0+Z2V0Q29udGVudE9wZXJhdGlvbnMoKTsNCgkkY3VyX3JlZGlyZWN0ID0gJHRoaXMtPkdldFByZWZlcmVuY2UoImZlX2FmdGVyc3VibWl0IiwtMSk7DQoJZWNobyAiPHA+Ii4kdGhpcy0+TGFuZygicHJlZl9mZV9hZnRlcnN1Ym1pdCIpLiRjbnRvcGVyYXRpb25zLT5DcmVhdGVIaWVyYXJjaHlEcm9wZG93bigiIiwkY3VyX3JlZGlyZWN0LCRpZC4iZmVfYWZ0ZXJzdWJtaXQiKS4iPC9wPg0KCSI7DQoJZWNobyAiPGJyLz48cD4iLiR0aGlzLT5MYW5nKCJoZWxwX2Zyb250ZW5kIikuIjwvcD4NCjwvZmllbGRzZXQ+PGJyLz4NCiI7DQoNCgllY2hvICI8ZmllbGRzZXQgc3R5bGU9XCJ3aWR0aDogNjAwcHg7XCI+PGxlZ2VuZD48Yj4iLiR0aGlzLT5MYW5nKCJwcmVmZXJlbmNlcyIpLiI6PC9iPjwvbGVnZW5kPg0KCSI7DQoJJGNoZWNrYm94cHJlZnMgPSBhcnJheSgibG9hZF9uYmNoaWxkcmVuIiwibG9hZF9uZXh0cHJldmlvdXMiLCJyZXN0cmljdF9wZXJtaXNzaW9ucyIsInVzZV9oaWVyYXJjaHkiLCJvcmRlcmJ5bmFtZSIsImRpc3BsYXlfZmlsdGVyIiwiZGlzcGxheV9pbnN0YW50c2VhcmNoIiwiZGlzcGxheV9pbnN0YW50c29ydCIsImVkaXRhYmxlX2FsaWFzZXMiLCJhdXRvaW5jcmVtZW50X2FsaWFzIiwiYWxsb3dfc3FsIiwiZm9yY2VfbGlzdCIsInNob3d0aHVtYm5haWxzIiwiZGVsZXRlX2ZpbGVzIiwiYWxsb3dfY29tcGxleF9vcmRlciIsInVzZV9zZXNzaW9uIik7DQoJZm9yZWFjaCgkY2hlY2tib3hwcmVmcyBhcyAkb25lcHJlZil7DQoJCWVjaG8gIjxwPiIuJHRoaXMtPkNyZWF0ZUlucHV0Q2hlY2tib3goJGlkLCAkb25lcHJlZiwgdHJ1ZSwgJHRoaXMtPkdldFByZWZlcmVuY2UoJG9uZXByZWYsZmFsc2UpKS4iICIuJHRoaXMtPkxhbmcoInByZWZfIi4kb25lcHJlZikuIjwvcD4NCgkiOw0KCX0NCgllY2hvICI8cD4iLiR0aGlzLT5MYW5nKCJwcmVmX2FkbWlucGFnZXMiKS4kdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgImFkbWlucGFnZXMiLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgiYWRtaW5wYWdlcyIsMCksIDEyLCAzKS4iPC9wPg0KCSI7DQoJZWNobyAiPHA+Ii4kdGhpcy0+TGFuZygicHJlZl9tYXhzaG93bnBhZ2VzIikuJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICJtYXhzaG93bnBhZ2VzIiwgJHRoaXMtPkdldFByZWZlcmVuY2UoIm1heHNob3ducGFnZXMiLDcpLCAxMiwgMikuIjwvcD4NCgkiOw0KCWVjaG8gIjwvZmllbGRzZXQ+PGJyLz48cD4iLiR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICJzdWJtaXQiLCBsYW5nKCJzdWJtaXQiKSkuIjwvcD4iOw0KICAgIGVjaG8gJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKTsNCgllY2hvICI8YnIvPjxwPiIuJGFkbWludGhlbWUtPkRpc3BsYXlJbWFnZSgiaWNvbnMvc3lzdGVtL2ltcG9ydC5naWYiLCAiIiwiIiwiIiwic3lzdGVtaWNvbiIpLiIgIjsNCgllY2hvICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgImV4cG9ydCIsICRyZXR1cm5pZCwgJHRoaXMtPkxhbmcoImV4cG9ydF90aXRsZSIpKS4iIHwgIi4kdGhpcy0+Q3JlYXRlTGluaygkaWQsICJpbXBvcnQiLCAkcmV0dXJuaWQsICR0aGlzLT5MYW5nKCJpbXBvcnRfdGl0bGUiKSkuIjwvcD4iOw0KCWVjaG8gJHRoaXMtPkVuZFRhYigpOw0KfQ0KDQplY2hvICR0aGlzLT5FbmRUYWJDb250ZW50KCk7DQoNCj8+]]></data>
	</file>
	<file>
	  <filename>/action.editA.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmlmICghaXNzZXQoJGdDbXMpKSBleGl0Ow0KJGFkbWludGhlbWUgPSAkZ0Ntcy0+dmFyaWFibGVzWyJhZG1pbnRoZW1lIl07DQppZihpc3NldCgkcGFyYW1zWyJjYW5jZWwiXSkgfHwgKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCJyZXN0cmljdF9wZXJtaXNzaW9ucyIsZmFsc2UpICYmICEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCJhdnBsYXllcl9hZHZhbmNlZCIpICYmICEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCJhdnBsYXllcl9tYW5hZ2VfcGxheWVyIikpICl7DQoJJG5ld3BhcmFtcyA9IGFycmF5KCJhY3RpdmVfdGFiIiA9PiAicGxheWVyIik7DQoJaWYoIWlzc2V0KCRwYXJhbXNbImNhbmNlbCJdKSkJJG5ld3BhcmFtc1sibW9kdWxlX21lc3NhZ2UiXSA9ICR0aGlzLT5MYW5nKCJlcnJvcl9kZW5pZWQiKTsNCgkkdGhpcy0+UmVkaXJlY3QoJGlkLCAiZGVmYXVsdGFkbWluIiwgJHJldHVybmlkLCAkbmV3cGFyYW1zKTsNCn0NCg0KJGRiID0mICR0aGlzLT5HZXREYigpOw0KJHVzZXJkZWZpbmVkMW9wdGlvbnMgPSAkdGhpcy0+Z2V0X2ZpZWxkb3B0aW9ucygicGxheWVyX3VzZXJkZWZpbmVkMSIpOw0KJHBsYXllcnR5cGVvcHRpb25zID0gJHRoaXMtPmdldF9wcmVkZWZpbmVkb3B0aW9ucygicGxheWVyX3BsYXllcnR5cGUiKTsNCg0KDQppZihpc3NldCgkcGFyYW1zWyJBaWQiXSkpIHsNCgkvLyBpZiB3ZSBhcmUgd29ya2luZyBvbiBhbiBpdGVtIHRoYXQgZXhpc3RzLCB3ZSBsb2FkIGl0LiBXZSBtdXN0IGRvIHRoaXMgZXZlbiB3aGVuIHRoZSBmb3JtIGlzIHN1Ym1pdHRlZCwgb3RoZXJ3aXNlIHdlIHdvbid0IGhhdmUgdGhlIGZpbGUgZmllbGRzDQoJJGl0ZW1zID0gJHRoaXMtPmdldF9sZXZlbF9wbGF5ZXIoYXJyYXkoImlkIj0+JHBhcmFtc1siQWlkIl0pKTsNCgkkaXRlbSA9ICRpdGVtc1swXTsNCn0NCg0KLy8gQ0hFQ0sgSUYgVEhFIEZPUk0gSVMgQkVJTkcgU1VCTUlUVEVEIDoNCi8vICh3ZSBtdXN0IGRldGVjdCBhbGwga2luZHMgb2Ygc3VibWl0IGJ1dHRvbnMsIGluY2x1ZGluZyBmaWxlcywgc2luY2UgaW5mb3JtYXRpb24gbXVzdCBiZSBzYXZlZCBiZWZvcmUgd2UgZ28gdG8gZmlsZSBzdWJtaXNzaW9uKQ0KaWYgKGlzc2V0KCRwYXJhbXNbInN1Ym1pdCJdKSB8fCANCglpc3NldCgkcGFyYW1zWyJhcHBseSJdKSANCgkpDQp7DQoJZGVidWdfYnVmZmVyKCJFZGl0IEZvcm0gaGFzIGJlZW4gc3VibWl0dGVkIi5fX0xJTkVfXyk7DQoNCgkvLyBSRVRSSUVWSU5HIFRIRSBGT1JNIFZBTFVFUyAoYW5kIGVzY2FwaW5nIGl0LCBpZiBuZWVkZWQpDQoJaWYoIWlzc2V0KCRpdGVtKSkgJGl0ZW0gPSBuZXcgc3RkQ2xhc3MoKTsNCglpZihpc3NldCgkcGFyYW1zWyJBaXRlbV9vcmRlciJdKSkgJGl0ZW0tPml0ZW1fb3JkZXIgPSAkcGFyYW1zWyJBaXRlbV9vcmRlciJdOw0KCSRpdGVtLT5sb2NhdGlvbiA9ICRwYXJhbXNbIkFsb2NhdGlvbiJdOw0KCQkkaXRlbS0+d2lkdGggPSAkcGFyYW1zWyJBd2lkdGgiXTsNCgkJJGl0ZW0tPmhlaWdodCA9ICRwYXJhbXNbIkFoZWlnaHQiXTsNCgkJJGl0ZW0tPnBhcmFtZXRlcnMgPSAkcGFyYW1zWyJBcGFyYW1ldGVycyJdOw0KCQkkaXRlbS0+dXNlcmRlZmluZWQxID0gJHBhcmFtc1siQXVzZXJkZWZpbmVkMSJdOw0KCQkkaXRlbS0+cGxheWVydHlwZSA9ICRwYXJhbXNbIkFwbGF5ZXJ0eXBlIl07DQoJCSRpdGVtLT5uYW1lID0gJHBhcmFtc1siQW5hbWUiXTsNCgkJDQoJaWYoJHRoaXMtPkdldFByZWZlcmVuY2UoImVkaXRhYmxlX2FsaWFzZXMiLGZhbHNlKSl7DQoJCWlmKGlzc2V0KCRwYXJhbXNbIkFhbGlhcyJdKSl7DQoJCQkkdG1wYWxpYXMgPSAkdGhpcy0+cGxjcmVhdGVhbGlhcyh0cmltKCRwYXJhbXNbIkFhbGlhcyJdKSk7DQoJCQkkaXRlbS0+YWxpYXMgPSAkdG1wYWxpYXMgPT0gIiI/JHRoaXMtPnBsY3JlYXRlYWxpYXMoJGl0ZW0tPm5hbWUpOiR0bXBhbGlhczsNCgkJfWVsc2V7DQoJCQkkaXRlbS0+YWxpYXMgPSAkdGhpcy0+cGxjcmVhdGVhbGlhcygkaXRlbS0+bmFtZSk7DQoJCX0NCgl9ZWxzZXsNCgkJJGl0ZW0tPmFsaWFzID0gJHRoaXMtPnBsY3JlYXRlYWxpYXMoJGl0ZW0tPm5hbWUpOw0KCX0NCgkNCgkkYXV0b2luY3JlbWVudGFsaWFzID0gJHRoaXMtPkdldFByZWZlcmVuY2UoImF1dG9pbmNyZW1lbnRfYWxpYXMiLGZhbHNlKTsNCg0KCS8vIENIRUNLIElGIFRIRSBORUVERUQgVkFMVUVTIEFSRSBUSEVSRQ0KCWlmKAkhaXNzZXQoJHBhcmFtc1siQWxvY2F0aW9uIl0pIHx8ICRwYXJhbXNbIkFsb2NhdGlvbiJdID09ICIiDQoJCSB8fCAhaXNzZXQoJHBhcmFtc1siQW5hbWUiXSkgfHwgJHBhcmFtc1siQW5hbWUiXSA9PSAiIg0KCQkgKQ0KCXsNCgkJZWNobyAkdGhpcy0+U2hvd0Vycm9ycygkdGhpcy0+TGFuZygiZXJyb3JfbWlzc2dpbnZhbHVlIikpOw0KCX1lbHNlaWYoISRhdXRvaW5jcmVtZW50YWxpYXMgJiYgZmFsc2UgPT0gJHRoaXMtPmNoZWNrYWxpYXMoIm1vZHVsZV9hdnBsYXllcl9wbGF5ZXIiLCAkaXRlbS0+YWxpYXMsIGlzc2V0KCRwYXJhbXNbIkFpZCJdKT8kcGFyYW1zWyJBaWQiXTpmYWxzZSkpew0KCQllY2hvICR0aGlzLT5TaG93RXJyb3JzKCR0aGlzLT5MYW5nKCJlcnJvcl9hbHJlYWR5ZXhpc3RzIikpOw0KCX1lbHNlew0KCQkjIyMjIyMjIyMjIyMgRE9JTkcgVEhFIFVQREFURQ0KDQoJCWlmKCRhdXRvaW5jcmVtZW50YWxpYXMpew0KCQkJJGJhc2VhbGlhcyA9ICRpdGVtLT5hbGlhczsNCgkJCSR0bXBhbGlhcyA9ICRpdGVtLT5hbGlhczsNCgkJCSRpID0gMTsNCgkJCXdoaWxlKCEkdGhpcy0+Y2hlY2thbGlhcygibW9kdWxlX2F2cGxheWVyX3BsYXllciIsICR0bXBhbGlhcywgaXNzZXQoJHBhcmFtc1siQWlkIl0pPyRwYXJhbXNbIkFpZCJdOmZhbHNlKSl7DQoJCQkJJHRtcGFsaWFzID0gJGJhc2VhbGlhcy4iXyIuJGk7DQoJCQkJJGkrKzsNCgkJCX0NCgkJCSRpdGVtLT5hbGlhcyA9ICR0bXBhbGlhczsNCgkJfQ0KDQoJCS8vIEZJRUxEUyBUTyBVUERBVEUNCgkJJHF1ZXJ5ID0gKGlzc2V0KCRpdGVtLT5pZCk/IlVQREFURSAiOiJJTlNFUlQgSU5UTyAiKS5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9hdnBsYXllcl9wbGF5ZXIgU0VUIA0KCQkJbG9jYXRpb249PywNCgkJCXdpZHRoPT8sDQoJCQloZWlnaHQ9PywNCgkJCXBhcmFtZXRlcnM9PywNCgkJCXVzZXJkZWZpbmVkMT0/LA0KCQkJcGxheWVydHlwZT0/LA0KCQkJbmFtZT0/LA0KCQlhbGlhcz0/LA0KCQlkYXRlX21vZGlmaWVkPT8sDQoJCWFjdGl2ZT0iLihpc3NldCgkaXRlbS0+YWN0aXZlKT8kaXRlbS0+YWN0aXZlOjEpLiIsDQoJCWlzZGVmYXVsdD0iLihpc3NldCgkaXRlbS0+aXNkZWZhdWx0KT8kaXRlbS0+aXNkZWZhdWx0OjApLiIiOw0KCQkJDQoJCS8vIFZBTFVFUw0KCQkkdmFsdWVzID0gYXJyYXkoYWRkc2xhc2hlcygkaXRlbS0+bG9jYXRpb24pLA0KCQkJYWRkc2xhc2hlcygkaXRlbS0+d2lkdGgpLA0KCQkJYWRkc2xhc2hlcygkaXRlbS0+aGVpZ2h0KSwNCgkJCWFkZHNsYXNoZXMoJGl0ZW0tPnBhcmFtZXRlcnMpLA0KCQkJJGl0ZW0tPnVzZXJkZWZpbmVkMSwNCgkJCSRpdGVtLT5wbGF5ZXJ0eXBlLA0KCQkJYWRkc2xhc2hlcygkaXRlbS0+bmFtZSksJGl0ZW0tPmFsaWFzLHN0cl9yZXBsYWNlKCInIiwiIiwkZGItPkRCVGltZVN0YW1wKHRpbWUoKSkpKTsNCg0KCQlpZihpc3NldCgkaXRlbS0+aWQpKXsNCgkJCSRldmVudCA9ICJhdnBsYXllcl9tb2RpZmllZCI7DQoJCQkkcXVlcnkgLj0gIiBXSEVSRSBpZD0/OyI7DQoJCQlhcnJheV9wdXNoKCR2YWx1ZXMsJGl0ZW0tPmlkKTsNCgkJfWVsc2V7DQoJCQkvLyBORVcgSVRFTQ0KCQkJJHF1ZXJ5IC49ICIsIGRhdGVfY3JlYXRlZD0/IjsNCgkJCSR2YWx1ZXNbXSA9IHN0cl9yZXBsYWNlKCInIiwiIiwkZGItPkRCVGltZVN0YW1wKHRpbWUoKSkpOw0KCQkJJGV2ZW50ID0gImF2cGxheWVyX2FkZGVkIjsNCgkJCS8vIGdldCBhIG5ldyBpZCBmcm9tIHRoZSBzZXF1ZW5jZSB0YWJsZQ0KCQkJJGl0ZW0tPmlkID0gJGRiLT5HZW5JRChjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9hdnBsYXllcl9wbGF5ZXJfc2VxIik7DQoJCQlpZigkdGhpcy0+R2V0UHJlZmVyZW5jZSgibmV3aXRlbXNmaXJzdF9wbGF5ZXIiLGZhbHNlKSl7DQoJCQkJLy8gbmV3IGl0ZW1zIGdldCB0byB0aGUgdG9wIC0gc28gd2UgbXVzdCBwdXQgYWxsIG90aGVyIGl0ZW1zIGRvd24gZnJvbSBvbmUgc3RlcCwgYW5kIHRoZW4gc2V0IHRoaXMgaXRlbSdzIG9yZGVyIHRvIDENCgkJCQkkcXVlcnkyID0gIlVQREFURSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2F2cGxheWVyX3BsYXllciBTRVQgaXRlbV9vcmRlcj0oaXRlbV9vcmRlcisxKSI7DQoJCQkJJGRiLT5FeGVjdXRlKCRxdWVyeTIpOw0KCQkJCSRxdWVyeSAuPSAiLGl0ZW1fb3JkZXI9MSwgaWQ9Ii4kaXRlbS0+aWQ7DQoJCQl9ZWxzZXsNCgkJCQkvLyBuZXcgaXRlbXMgZ2V0IHRvIHRoZSBib3R0b20gLSBzbyB3ZSBtdXN0IHNldCB0aGUgaXRlbV9vcmRlciB0byB0aGUgbnVtYmVyIG9mIGl0ZW1zICsgMQ0KCQkJCSRpdGVtX29yZGVyID0gJHRoaXMtPmNvdW50c29tZXRoaW5nKCJwbGF5ZXIiKSArIDE7DQoJCQkJJHF1ZXJ5IC49ICIsaXRlbV9vcmRlcj0iLiRpdGVtX29yZGVyLiIsIGlkPSIuJGl0ZW0tPmlkOw0KCQkJfQ0KCQl9DQoJCSRkYi0+RXhlY3V0ZSgkcXVlcnksICR2YWx1ZXMpOw0KDQoJCSRyZWRpcmVjdCA9IHRydWU7DQoJCS8vaWYobXlzcWxfYWZmZWN0ZWRfcm93cygpKXsJLy8gbXlzcWwtb25seQ0KCQlpZigkZGItPkFmZmVjdGVkX1Jvd3MoKSl7DQoJCQlpZigkdGhpcy0+R2V0UHJlZmVyZW5jZSgic2VhcmNobW9kdWxlX2luZGV4X3BsYXllciIsZmFsc2UpKXsNCgkJCQkvLyBJRiBBTllUSElORyBXQVMgTU9ESUZJRUQsIFdFIE1VU1QgVVBEQVRFIFRIRSBTRUFSQ0ggSU5ERVggQU5EIFNFTkQgQU4gRVZFTlQuLi4NCgkJCQlpZihpc3NldCgkZXZlbnQpKQkkdGhpcy0+U2VuZEV2ZW50KCRldmVudCwgYXJyYXkoIndoYXQiPT4icGxheWVyIiwgIml0ZW1pZCIgPT4gJGl0ZW0tPmlkLCAiYWxpYXMiPT4kaXRlbS0+YWxpYXMpKTsNCgkJCQlkZWJ1Z19idWZmZXIoIlNFQVJIQyBJTkRFWCBXQVMgVVBEQVRFRCAiLl9fTElORV9fKTsNCgkJCQkkbW9kdWxlID0mICR0aGlzLT5HZXRNb2R1bGVJbnN0YW5jZSgiU2VhcmNoIik7DQoJCQkJaWYoJG1vZHVsZSkgew0KCQkJCQkkdGV4dCA9ICIkaXRlbS0+bmFtZSI7DQoJCQkJCSRtb2R1bGUtPkFkZFdvcmRzKCR0aGlzLT5HZXROYW1lKCksICRpdGVtLT5pZCwgInBsYXllciIsICR0ZXh0LCBOVUxMKTsNCgkJCQl9DQoJCQl9DQoJCX1lbHNlaWYobXlzcWxfZXJyb3IoKSl7DQoJCQkvLyBkbyBub3QgcmVkaXJlY3QgOg0KCQkJJHJlZGlyZWN0ID0gZmFsc2U7DQoJCQllY2hvICR0aGlzLT5TaG93RXJyb3JzKG15c3FsX2Vycm9yKCkpOw0KCQl9DQoNCgkJLy8gUkVESVJFQ1RJTkcuLi4NCgkJCWlmKCRyZWRpcmVjdCA9PSBmYWxzZSl7DQoJCQl9ZWxzZWlmKGlzc2V0KCRwYXJhbXNbImFwcGx5Il0pKXsNCgkJCQllY2hvICR0aGlzLT5TaG93TWVzc2FnZSgkdGhpcy0+TGFuZygibWVzc2FnZV9tb2RpZmllZCIpKTsNCgkJCX1lbHNlew0KCQkJCSRwYXJhbXMgPSBhcnJheSgibW9kdWxlX21lc3NhZ2UiID0+ICR0aGlzLT5MYW5nKCJtZXNzYWdlX21vZGlmaWVkIiksICJhY3RpdmVfdGFiIj0+InBsYXllciIpOw0KCQkJCSR0aGlzLT5SZWRpcmVjdCgkaWQsICJkZWZhdWx0YWRtaW4iLCAkcmV0dXJuaWQsICRwYXJhbXMpOwkNCgkJCX0NCgl9DQoJLy8gRU5EIE9GIEZPUk0gU1VCTUlTU0lPTg0KfQ0KDQoNCg0KLyogIyMgUFJFUEFSSU5HIFNNQVJUWSBFTEVNRU5UUw0KQ3JlYXRlSW5wdXRUZXh0IDogKGlkLG5hbWUsdmFsdWUsc2l6ZSxtYXhsZW5ndGgpDQpDcmVhdGVUZXh0QXJlYSA6ICh3eXNpd3lnLGlkLHRleHQsbmFtZSkNCkNyZWF0ZUlucHV0U2VsZWN0TGlzdCA6IChpZCxuYW1lLGl0ZW1zLHNlbGVjdGVkaXRlbXMsc2l6ZSkNCkNyZWF0ZUlucHV0RHJvcGRvd24gOiAoaWQsbmFtZSxpdGVtcyxzaW5kZXgsc3ZhbHVlKQ0KKi8NCg0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJsb2NhdGlvbl9sYWJlbCIsICR0aGlzLT5MYW5nKCJwbGF5ZXJfbG9jYXRpb24iKSk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oImxvY2F0aW9uX2lucHV0IiwgJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsIkFsb2NhdGlvbiIsaXNzZXQoJGl0ZW0pPyRpdGVtLT5sb2NhdGlvbjoiIiw1MCwyNTUpKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbigid2lkdGhfbGFiZWwiLCAkdGhpcy0+TGFuZygicGxheWVyX3dpZHRoIikpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJ3aWR0aF9pbnB1dCIsICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCJBd2lkdGgiLGlzc2V0KCRpdGVtKT8kaXRlbS0+d2lkdGg6IiIsMzAsMTApKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbigiaGVpZ2h0X2xhYmVsIiwgJHRoaXMtPkxhbmcoInBsYXllcl9oZWlnaHQiKSk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oImhlaWdodF9pbnB1dCIsICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCJBaGVpZ2h0Iixpc3NldCgkaXRlbSk/JGl0ZW0tPmhlaWdodDoiIiwzMCwxMCkpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJwYXJhbWV0ZXJzX2xhYmVsIiwgJHRoaXMtPkxhbmcoInBsYXllcl9wYXJhbWV0ZXJzIikpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJwYXJhbWV0ZXJzX2lucHV0IiwgJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsIkFwYXJhbWV0ZXJzIixpc3NldCgkaXRlbSk/JGl0ZW0tPnBhcmFtZXRlcnM6IiIsNzUsMjAwMCkpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJ1c2VyZGVmaW5lZDFfbGFiZWwiLCAkdGhpcy0+TGFuZygicGxheWVyX3VzZXJkZWZpbmVkMSIpKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbigidXNlcmRlZmluZWQxX2lucHV0IiwgJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCJBdXNlcmRlZmluZWQxIiwkdXNlcmRlZmluZWQxb3B0aW9ucywtMSxpc3NldCgkaXRlbSk/JGl0ZW0tPnVzZXJkZWZpbmVkMTowKSk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oInBsYXllcnR5cGVfbGFiZWwiLCAkdGhpcy0+TGFuZygicGxheWVyX3BsYXllcnR5cGUiKSk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oInBsYXllcnR5cGVfaW5wdXQiLCAkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsIkFwbGF5ZXJ0eXBlIiwkcGxheWVydHlwZW9wdGlvbnMsLTEsaXNzZXQoJGl0ZW0pPyRpdGVtLT5wbGF5ZXJ0eXBlOjApKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbigibmFtZV9sYWJlbCIsICR0aGlzLT5MYW5nKCJuYW1lIikpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJuYW1lX2lucHV0IiwgJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsIkFuYW1lIixpc3NldCgkaXRlbSk/JGl0ZW0tPm5hbWU6IiIsNTAsNjQpKTsNCmlmKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCJlZGl0YWJsZV9hbGlhc2VzIixmYWxzZSkpew0KCSR0aGlzLT5zbWFydHktPmFzc2lnbigiYWxpYXNfbGFiZWwiLCAkdGhpcy0+TGFuZygiYWxpYXMiKSk7DQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJhbGlhc19pbnB1dCIsICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCJBYWxpYXMiLGlzc2V0KCRpdGVtKT8kaXRlbS0+YWxpYXM6IiIsNTAsNjQpKTsNCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oIml0ZW1hbGlhcyIsZmFsc2UpOw0KfWVsc2V7DQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJpdGVtYWxpYXMiLGlzc2V0KCRpdGVtLT5hbGlhcyk/IihhbGlhcyA6ICIuJGl0ZW0tPmFsaWFzLiIpIjpmYWxzZSk7DQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJhbGlhc19pbnB1dCIsIGZhbHNlKTsNCn0NCg0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJlZGl0dGl0bGUiLCAkdGhpcy0+TGFuZygiZWRpdF9wbGF5ZXIiKSk7DQoNCiR0aGlzLT5zbWFydHktPmFzc2lnbigic3VibWl0IiwgJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgInN1Ym1pdCIsIGxhbmcoInN1Ym1pdCIpKSk7DQokdGhpcy0+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[PD9waHANCmlmICghaXNzZXQoJGdDbXMpKSBleGl0Ow0KJGFkbWludGhlbWUgPSAkZ0Ntcy0+dmFyaWFibGVzWyJhZG1pbnRoZW1lIl07DQppZihpc3NldCgkcGFyYW1zWyJjYW5jZWwiXSkgfHwgKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCJyZXN0cmljdF9wZXJtaXNzaW9ucyIsZmFsc2UpICYmICEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCJhdnBsYXllcl9hZHZhbmNlZCIpICYmICEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCJhdnBsYXllcl9tYW5hZ2VfbWVkaWFmaWxlIikpICl7DQoJJG5ld3BhcmFtcyA9IGFycmF5KCJhY3RpdmVfdGFiIiA9PiAibWVkaWFmaWxlIik7DQoJaWYoIWlzc2V0KCRwYXJhbXNbImNhbmNlbCJdKSkJJG5ld3BhcmFtc1sibW9kdWxlX21lc3NhZ2UiXSA9ICR0aGlzLT5MYW5nKCJlcnJvcl9kZW5pZWQiKTsNCgkkdGhpcy0+UmVkaXJlY3QoJGlkLCAiZGVmYXVsdGFkbWluIiwgJHJldHVybmlkLCAkbmV3cGFyYW1zKTsNCn0NCg0KJGRiID0mICR0aGlzLT5HZXREYigpOw0KDQppZigkdGhpcy0+R2V0UHJlZmVyZW5jZSgidXNlX2hpZXJhcmNoeSIsZmFsc2UpKXsNCgkkcGFyZW50b3B0aW9ucyA9ICR0aGlzLT5nZXRfYWRtaW5faGllcmFyY2h5b3B0aW9ucygibWVkaWFmaWxlIixmYWxzZSk7DQp9ZWxzZXsNCgkkcGFyZW50b3B0aW9ucyA9ICR0aGlzLT5nZXRfb3B0aW9ucygicGxheWVyIik7DQp9JHVzZXJkZWZpbmVkMm9wdGlvbnMgPSAkdGhpcy0+Z2V0X2ZpZWxkb3B0aW9ucygibWVkaWFmaWxlX3VzZXJkZWZpbmVkMiIpOw0KDQoNCmlmKGlzc2V0KCRwYXJhbXNbIkJpZCJdKSkgew0KCS8vIGlmIHdlIGFyZSB3b3JraW5nIG9uIGFuIGl0ZW0gdGhhdCBleGlzdHMsIHdlIGxvYWQgaXQuIFdlIG11c3QgZG8gdGhpcyBldmVuIHdoZW4gdGhlIGZvcm0gaXMgc3VibWl0dGVkLCBvdGhlcndpc2Ugd2Ugd29uJ3QgaGF2ZSB0aGUgZmlsZSBmaWVsZHMNCgkkaXRlbXMgPSAkdGhpcy0+Z2V0X2xldmVsX21lZGlhZmlsZShhcnJheSgiaWQiPT4kcGFyYW1zWyJCaWQiXSkpOw0KCSRpdGVtID0gJGl0ZW1zWzBdOw0KfQ0KDQovLyBDSEVDSyBJRiBUSEUgRk9STSBJUyBCRUlORyBTVUJNSVRURUQgOg0KLy8gKHdlIG11c3QgZGV0ZWN0IGFsbCBraW5kcyBvZiBzdWJtaXQgYnV0dG9ucywgaW5jbHVkaW5nIGZpbGVzLCBzaW5jZSBpbmZvcm1hdGlvbiBtdXN0IGJlIHNhdmVkIGJlZm9yZSB3ZSBnbyB0byBmaWxlIHN1Ym1pc3Npb24pDQppZiAoaXNzZXQoJHBhcmFtc1sic3VibWl0Il0pIHx8IA0KCWlzc2V0KCRwYXJhbXNbImFwcGx5Il0pIHx8DQoJaXNzZXQoJHBhcmFtc1siYWRkX21lZGlhZmlsZSJdKSB8fA0KCWlzc2V0KCRwYXJhbXNbInJlbW92ZV9tZWRpYWZpbGUiXSkgfHwNCglpc3NldCgkcGFyYW1zWyJhZGRfcGljdHVyZSJdKSB8fA0KCWlzc2V0KCRwYXJhbXNbInJlbW92ZV9waWN0dXJlIl0pIA0KCSkNCnsNCglkZWJ1Z19idWZmZXIoIkVkaXQgRm9ybSBoYXMgYmVlbiBzdWJtaXR0ZWQiLl9fTElORV9fKTsNCg0KCS8vIFJFVFJJRVZJTkcgVEhFIEZPUk0gVkFMVUVTIChhbmQgZXNjYXBpbmcgaXQsIGlmIG5lZWRlZCkNCglpZighaXNzZXQoJGl0ZW0pKSAkaXRlbSA9IG5ldyBzdGRDbGFzcygpOw0KCWlmKGlzc2V0KCRwYXJhbXNbIkJpdGVtX29yZGVyIl0pKSAkaXRlbS0+aXRlbV9vcmRlciA9ICRwYXJhbXNbIkJpdGVtX29yZGVyIl07DQoJJGl0ZW0tPnVzZXJkZWZpbmVkMiA9ICRwYXJhbXNbIkJ1c2VyZGVmaW5lZDIiXTsNCgkJJGl0ZW0tPnBhcmVudCA9ICRwYXJhbXNbIkJwYXJlbnQiXTsNCgkJJGl0ZW0tPm5hbWUgPSAkcGFyYW1zWyJCbmFtZSJdOw0KCQkNCglpZigkdGhpcy0+R2V0UHJlZmVyZW5jZSgiZWRpdGFibGVfYWxpYXNlcyIsZmFsc2UpKXsNCgkJaWYoaXNzZXQoJHBhcmFtc1siQmFsaWFzIl0pKXsNCgkJCSR0bXBhbGlhcyA9ICR0aGlzLT5wbGNyZWF0ZWFsaWFzKHRyaW0oJHBhcmFtc1siQmFsaWFzIl0pKTsNCgkJCSRpdGVtLT5hbGlhcyA9ICR0bXBhbGlhcyA9PSAiIj8kdGhpcy0+cGxjcmVhdGVhbGlhcygkaXRlbS0+bmFtZSk6JHRtcGFsaWFzOw0KCQl9ZWxzZXsNCgkJCSRpdGVtLT5hbGlhcyA9ICR0aGlzLT5wbGNyZWF0ZWFsaWFzKCRpdGVtLT5uYW1lKTsNCgkJfQ0KCX1lbHNlew0KCQkkaXRlbS0+YWxpYXMgPSAkdGhpcy0+cGxjcmVhdGVhbGlhcygkaXRlbS0+bmFtZSk7DQoJfQ0KCQ0KCSRhdXRvaW5jcmVtZW50YWxpYXMgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgiYXV0b2luY3JlbWVudF9hbGlhcyIsZmFsc2UpOw0KDQoJLy8gQ0hFQ0sgSUYgVEhFIE5FRURFRCBWQUxVRVMgQVJFIFRIRVJFDQoJaWYoCSFpc3NldCgkcGFyYW1zWyJCbmFtZSJdKSB8fCAkcGFyYW1zWyJCbmFtZSJdID09ICIiDQoJCSApDQoJew0KCQllY2hvICR0aGlzLT5TaG93RXJyb3JzKCR0aGlzLT5MYW5nKCJlcnJvcl9taXNzZ2ludmFsdWUiKSk7DQoJfWVsc2VpZighJGF1dG9pbmNyZW1lbnRhbGlhcyAmJiBmYWxzZSA9PSAkdGhpcy0+Y2hlY2thbGlhcygibW9kdWxlX2F2cGxheWVyX21lZGlhZmlsZSIsICRpdGVtLT5hbGlhcywgaXNzZXQoJHBhcmFtc1siQmlkIl0pPyRwYXJhbXNbIkJpZCJdOmZhbHNlKSl7DQoJCWVjaG8gJHRoaXMtPlNob3dFcnJvcnMoJHRoaXMtPkxhbmcoImVycm9yX2FscmVhZHlleGlzdHMiKSk7DQoJfWVsc2V7DQoJCSMjIyMjIyMjIyMjIyBET0lORyBUSEUgVVBEQVRFDQoNCgkJaWYoJGF1dG9pbmNyZW1lbnRhbGlhcyl7DQoJCQkkYmFzZWFsaWFzID0gJGl0ZW0tPmFsaWFzOw0KCQkJJHRtcGFsaWFzID0gJGl0ZW0tPmFsaWFzOw0KCQkJJGkgPSAxOw0KCQkJd2hpbGUoISR0aGlzLT5jaGVja2FsaWFzKCJtb2R1bGVfYXZwbGF5ZXJfbWVkaWFmaWxlIiwgJHRtcGFsaWFzLCBpc3NldCgkcGFyYW1zWyJCaWQiXSk/JHBhcmFtc1siQmlkIl06ZmFsc2UpKXsNCgkJCQkkdG1wYWxpYXMgPSAkYmFzZWFsaWFzLiJfIi4kaTsNCgkJCQkkaSsrOw0KCQkJfQ0KCQkJJGl0ZW0tPmFsaWFzID0gJHRtcGFsaWFzOw0KCQl9DQoNCgkJLy8gRklFTERTIFRPIFVQREFURQ0KCQkkcXVlcnkgPSAoaXNzZXQoJGl0ZW0tPmlkKT8iVVBEQVRFICI6IklOU0VSVCBJTlRPICIpLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2F2cGxheWVyX21lZGlhZmlsZSBTRVQgDQoJCQl1c2VyZGVmaW5lZDI9PywNCgkJCXBhcmVudD0/LA0KCQkJbmFtZT0/LA0KCQlhbGlhcz0/LA0KCQlkYXRlX21vZGlmaWVkPT8sDQoJCWFjdGl2ZT0iLihpc3NldCgkaXRlbS0+YWN0aXZlKT8kaXRlbS0+YWN0aXZlOjEpLiIsDQoJCWlzZGVmYXVsdD0iLihpc3NldCgkaXRlbS0+aXNkZWZhdWx0KT8kaXRlbS0+aXNkZWZhdWx0OjApLiIiOw0KCQkJDQoJCS8vIFZBTFVFUw0KCQkkdmFsdWVzID0gYXJyYXkoJGl0ZW0tPnVzZXJkZWZpbmVkMiwNCgkJCSRpdGVtLT5wYXJlbnQsDQoJCQlhZGRzbGFzaGVzKCRpdGVtLT5uYW1lKSwkaXRlbS0+YWxpYXMsc3RyX3JlcGxhY2UoIiciLCIiLCRkYi0+REJUaW1lU3RhbXAodGltZSgpKSkpOw0KDQoJCWlmKGlzc2V0KCRpdGVtLT5pZCkpew0KCQkJJGV2ZW50ID0gImF2cGxheWVyX21vZGlmaWVkIjsNCgkJCSRxdWVyeSAuPSAiIFdIRVJFIGlkPT87IjsNCgkJCWFycmF5X3B1c2goJHZhbHVlcywkaXRlbS0+aWQpOw0KCQl9ZWxzZXsNCgkJCS8vIE5FVyBJVEVNDQoJCQkkcXVlcnkgLj0gIiwgZGF0ZV9jcmVhdGVkPT8iOw0KCQkJJHZhbHVlc1tdID0gc3RyX3JlcGxhY2UoIiciLCIiLCRkYi0+REJUaW1lU3RhbXAodGltZSgpKSk7DQoJCQkkZXZlbnQgPSAiYXZwbGF5ZXJfYWRkZWQiOw0KCQkJLy8gZ2V0IGEgbmV3IGlkIGZyb20gdGhlIHNlcXVlbmNlIHRhYmxlDQoJCQkkaXRlbS0+aWQgPSAkZGItPkdlbklEKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2F2cGxheWVyX21lZGlhZmlsZV9zZXEiKTsNCgkJCWlmKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCJuZXdpdGVtc2ZpcnN0X21lZGlhZmlsZSIsZmFsc2UpKXsNCgkJCQkvLyBuZXcgaXRlbXMgZ2V0IHRvIHRoZSB0b3AgLSBzbyB3ZSBtdXN0IHB1dCBhbGwgb3RoZXIgaXRlbXMgZG93biBmcm9tIG9uZSBzdGVwLCBhbmQgdGhlbiBzZXQgdGhpcyBpdGVtJ3Mgb3JkZXIgdG8gMQ0KCQkJCSRxdWVyeTIgPSAiVVBEQVRFICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfYXZwbGF5ZXJfbWVkaWFmaWxlIFNFVCBpdGVtX29yZGVyPShpdGVtX29yZGVyKzEpIFdIRVJFIHBhcmVudD0/IjsNCgkJCQkkZGItPkV4ZWN1dGUoJHF1ZXJ5MiwgYXJyYXkoJGl0ZW0tPnBhcmVudCkpOw0KCQkJCSRxdWVyeSAuPSAiLGl0ZW1fb3JkZXI9MSwgaWQ9Ii4kaXRlbS0+aWQ7DQoJCQl9ZWxzZXsNCgkJCQkvLyBuZXcgaXRlbXMgZ2V0IHRvIHRoZSBib3R0b20gLSBzbyB3ZSBtdXN0IHNldCB0aGUgaXRlbV9vcmRlciB0byB0aGUgbnVtYmVyIG9mIGl0ZW1zICsgMQ0KCQkJCSRpdGVtX29yZGVyID0gJHRoaXMtPmNvdW50c29tZXRoaW5nKCJtZWRpYWZpbGUiLCJpZCIsYXJyYXkoInBhcmVudCI9PiRpdGVtLT5wYXJlbnQpKSArIDE7DQoJCQkJJHF1ZXJ5IC49ICIsaXRlbV9vcmRlcj0iLiRpdGVtX29yZGVyLiIsIGlkPSIuJGl0ZW0tPmlkOw0KCQkJfQ0KCQl9DQoJCSRkYi0+RXhlY3V0ZSgkcXVlcnksICR2YWx1ZXMpOw0KDQoJaWYoaXNzZXQoJHBhcmFtc1sib2xkcGFyZW50Il0pICYmICRwYXJhbXNbIm9sZHBhcmVudCJdICE9ICRpdGVtLT5wYXJlbnQpew0KCQkvLyB0aGUgaXRlbSBpcyBjaGFuZ2luZyBwYXJlbnQsIGFuZCB3ZSdyZSBvcmRlcmluZyBieSBwYXJlbnRzDQoJCQ0KCQlpZigkdGhpcy0+R2V0UHJlZmVyZW5jZSgibmV3aXRlbXNmaXJzdF9tZWRpYWZpbGUiLGZhbHNlKSl7DQoJCQkvLyBuZXcgaXRlbXMgZ2V0IHRvIHRoZSB0b3ANCgkJCQ0KCQkJLy8gVVBEQVRFIFRIRSBPUkRFUiBPRiBUSEUgSVRFTVMgV0lUSCBUSEUgT0xEIFBBUkVOVA0KCQkJJHF1ZXJ5ID0gIlVQREFURSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2F2cGxheWVyX21lZGlhZmlsZSBTRVQgaXRlbV9vcmRlcj0oaXRlbV9vcmRlci0xKSBXSEVSRSBpdGVtX29yZGVyID4gPyBBTkQgcGFyZW50PT8iOw0KCQkJJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGl0ZW0tPml0ZW1fb3JkZXIsICRwYXJhbXNbIm9sZHBhcmVudCJdKSk7DQoJCQkvLyBHRVQgTkVXIElURU0gT1JERVINCgkJCSRpdGVtLT5pdGVtX29yZGVyID0gJHRoaXMtPmNvdW50c29tZXRoaW5nKCJtZWRpYWZpbGUiLCJpZCIsYXJyYXkoInBhcmVudCI9PiRpdGVtLT5wYXJlbnQpKSArIDE7DQoJCQkkcXVlcnkgPSAiVVBEQVRFICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfYXZwbGF5ZXJfbWVkaWFmaWxlIFNFVCBpdGVtX29yZGVyPT8gV0hFUkUgaWQ9PyI7DQoJCQkkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkaXRlbS0+aXRlbV9vcmRlciwgJGl0ZW0tPmlkKSk7DQoNCgkJfWVsc2V7DQoNCgkJCS8vIFVQREFURSBUSEUgT1JERVIgT0YgVEhFIElURU1TIFdJVEggVEhFIE9MRCBQQVJFTlQNCgkJCSRxdWVyeSA9ICJVUERBVEUgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9hdnBsYXllcl9tZWRpYWZpbGUgU0VUIGl0ZW1fb3JkZXI9KGl0ZW1fb3JkZXItMSkgV0hFUkUgaXRlbV9vcmRlciA+ID8gQU5EIHBhcmVudD0/IjsNCgkJCSRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRpdGVtLT5pdGVtX29yZGVyLCAkcGFyYW1zWyJvbGRwYXJlbnQiXSkpOw0KCQkJLy8gVVBEQVRFIE5FVyBQQVJFTlQNCgkJCSRxdWVyeSA9ICJVUERBVEUgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9hdnBsYXllcl9tZWRpYWZpbGUgU0VUIGl0ZW1fb3JkZXI9KGl0ZW1fb3JkZXIrMSkgV0hFUkUgcGFyZW50PT8iOw0KCQkJJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGl0ZW0tPnBhcmVudCkpOw0KCQkJLy8gR0VUIE5FVyBJVEVNIE9SREVSDQoJCQkkaXRlbS0+aXRlbV9vcmRlciA9IDE7DQoJCQkkcXVlcnkgPSAiVVBEQVRFICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfYXZwbGF5ZXJfbWVkaWFmaWxlIFNFVCBpdGVtX29yZGVyPT8gV0hFUkUgaWQ9PyI7DQoJCQkkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkaXRlbS0+aXRlbV9vcmRlciwgJGl0ZW0tPmlkKSk7DQoJCQ0KCQl9DQoJfQ0KDQoJCSRyZWRpcmVjdCA9IHRydWU7DQoJCS8vaWYobXlzcWxfYWZmZWN0ZWRfcm93cygpKXsJLy8gbXlzcWwtb25seQ0KCQlpZigkZGItPkFmZmVjdGVkX1Jvd3MoKSl7DQoJCQlpZigkdGhpcy0+R2V0UHJlZmVyZW5jZSgic2VhcmNobW9kdWxlX2luZGV4X21lZGlhZmlsZSIsZmFsc2UpKXsNCgkJCQkvLyBJRiBBTllUSElORyBXQVMgTU9ESUZJRUQsIFdFIE1VU1QgVVBEQVRFIFRIRSBTRUFSQ0ggSU5ERVggQU5EIFNFTkQgQU4gRVZFTlQuLi4NCgkJCQlpZihpc3NldCgkZXZlbnQpKQkkdGhpcy0+U2VuZEV2ZW50KCRldmVudCwgYXJyYXkoIndoYXQiPT4ibWVkaWFmaWxlIiwgIml0ZW1pZCIgPT4gJGl0ZW0tPmlkLCAiYWxpYXMiPT4kaXRlbS0+YWxpYXMpKTsNCgkJCQlkZWJ1Z19idWZmZXIoIlNFQVJIQyBJTkRFWCBXQVMgVVBEQVRFRCAiLl9fTElORV9fKTsNCgkJCQkkbW9kdWxlID0mICR0aGlzLT5HZXRNb2R1bGVJbnN0YW5jZSgiU2VhcmNoIik7DQoJCQkJaWYoJG1vZHVsZSkgew0KCQkJCQkkdGV4dCA9ICIkaXRlbS0+bmFtZSI7DQoJCQkJCSRtb2R1bGUtPkFkZFdvcmRzKCR0aGlzLT5HZXROYW1lKCksICRpdGVtLT5pZCwgIm1lZGlhZmlsZSIsICR0ZXh0LCBOVUxMKTsNCgkJCQl9DQoJCQl9DQoJCX1lbHNlaWYobXlzcWxfZXJyb3IoKSl7DQoJCQkvLyBkbyBub3QgcmVkaXJlY3QgOg0KCQkJJHJlZGlyZWN0ID0gZmFsc2U7DQoJCQllY2hvICR0aGlzLT5TaG93RXJyb3JzKG15c3FsX2Vycm9yKCkpOw0KCQl9DQoNCgkJLy8gUkVESVJFQ1RJTkcuLi4NCgkJCWlmKGlzc2V0KCRwYXJhbXNbImFkZF9tZWRpYWZpbGUiXSkpew0KCQkJCSRwYXJhbXMgPSBhcnJheSgiQmlkIj0+JGl0ZW0tPmlkLCJmaWVsZCI9PiJtZWRpYWZpbGUiLCJ0YWJsZW5hbWUiPT4iYXZwbGF5ZXJfbWVkaWFmaWxlIiwicHJlZml4Ij0+IkIiLCAic3RhcnRkaXIiPT4ibWVkaWEiLCAibW9kZSI9PiJmaWxlIik7DQoJCQkJJHRoaXMtPlJlZGlyZWN0KCRpZCwgImJyb3dzZWZpbGVzIiwgJHJldHVybmlkLCAkcGFyYW1zKTsNCgkJCX1lbHNlaWYoaXNzZXQoJHBhcmFtc1sicmVtb3ZlX21lZGlhZmlsZSJdKSl7DQoJCQkJJHBhcmFtcyA9IGFycmF5KCJCaWQiPT4kaXRlbS0+aWQsImZpZWxkIj0+Im1lZGlhZmlsZSIsImxldmVsIj0+Im1lZGlhZmlsZSIsInRhYmxlbmFtZSI9PiJhdnBsYXllcl9tZWRpYWZpbGUiLCJwcmVmaXgiPT4iQiIpOw0KCQkJCSR0aGlzLT5SZWRpcmVjdCgkaWQsICJhc3NpZ25maWxlIiwgJHJldHVybmlkLCAkcGFyYW1zKTsNCgkJCX1lbHNlaWYoaXNzZXQoJHBhcmFtc1siYWRkX3BpY3R1cmUiXSkpew0KCQkJCSRwYXJhbXMgPSBhcnJheSgiQmlkIj0+JGl0ZW0tPmlkLCJmaWVsZCI9PiJwaWN0dXJlIiwidGFibGVuYW1lIj0+ImF2cGxheWVyX21lZGlhZmlsZSIsInByZWZpeCI9PiJCIiwgInN0YXJ0ZGlyIj0+IiIsICJzaXplIj0+IjEyMHgxMDAiLCAibW9kZSI9PiJpbWFnZSIpOw0KCQkJCSR0aGlzLT5SZWRpcmVjdCgkaWQsICJicm93c2VmaWxlcyIsICRyZXR1cm5pZCwgJHBhcmFtcyk7DQoJCQl9ZWxzZWlmKGlzc2V0KCRwYXJhbXNbInJlbW92ZV9waWN0dXJlIl0pKXsNCgkJCQkkcGFyYW1zID0gYXJyYXkoIkJpZCI9PiRpdGVtLT5pZCwiZmllbGQiPT4icGljdHVyZSIsImxldmVsIj0+Im1lZGlhZmlsZSIsInRhYmxlbmFtZSI9PiJhdnBsYXllcl9tZWRpYWZpbGUiLCJwcmVmaXgiPT4iQiIpOw0KCQkJCSR0aGlzLT5SZWRpcmVjdCgkaWQsICJhc3NpZ25maWxlIiwgJHJldHVybmlkLCAkcGFyYW1zKTsNCgkJCX1lbHNlaWYoJHJlZGlyZWN0ID09IGZhbHNlKXsNCgkJCX1lbHNlaWYoaXNzZXQoJHBhcmFtc1siYXBwbHkiXSkpew0KCQkJCWVjaG8gJHRoaXMtPlNob3dNZXNzYWdlKCR0aGlzLT5MYW5nKCJtZXNzYWdlX21vZGlmaWVkIikpOw0KCQkJfWVsc2V7DQoJCQkJJHBhcmFtcyA9IGFycmF5KCJtb2R1bGVfbWVzc2FnZSIgPT4gJHRoaXMtPkxhbmcoIm1lc3NhZ2VfbW9kaWZpZWQiKSwgImFjdGl2ZV90YWIiPT4ibWVkaWFmaWxlIik7DQoJCQkJJHRoaXMtPlJlZGlyZWN0KCRpZCwgImRlZmF1bHRhZG1pbiIsICRyZXR1cm5pZCwgJHBhcmFtcyk7CQ0KCQkJfQ0KCX0NCgkvLyBFTkQgT0YgRk9STSBTVUJNSVNTSU9ODQp9DQoNCg0KDQovKiAjIyBQUkVQQVJJTkcgU01BUlRZIEVMRU1FTlRTDQpDcmVhdGVJbnB1dFRleHQgOiAoaWQsbmFtZSx2YWx1ZSxzaXplLG1heGxlbmd0aCkNCkNyZWF0ZVRleHRBcmVhIDogKHd5c2l3eWcsaWQsdGV4dCxuYW1lKQ0KQ3JlYXRlSW5wdXRTZWxlY3RMaXN0IDogKGlkLG5hbWUsaXRlbXMsc2VsZWN0ZWRpdGVtcyxzaXplKQ0KQ3JlYXRlSW5wdXREcm9wZG93biA6IChpZCxuYW1lLGl0ZW1zLHNpbmRleCxzdmFsdWUpDQoqLw0KDQokdGhpcy0+c21hcnR5LT5hc3NpZ24oIm1lZGlhZmlsZV9sYWJlbCIsICR0aGlzLT5MYW5nKCJtZWRpYWZpbGVfbWVkaWFmaWxlIikpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJtZWRpYWZpbGVfaW5wdXQiLCAoKGlzc2V0KCRpdGVtLT5tZWRpYWZpbGUpICYmICRpdGVtLT5tZWRpYWZpbGUpPyRpdGVtLT5tZWRpYWZpbGUtPnBpYy4nPGEgaHJlZj0iJy4kaXRlbS0+bWVkaWFmaWxlLT51cmwuJyIgPicuJGl0ZW0tPm1lZGlhZmlsZS0+ZmlsZXBhdGguIjwvYT4gKCIuJGl0ZW0tPm1lZGlhZmlsZS0+c2l6ZV93Zm9ybWF0LiIpPGJyLz4iLiR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsInJlbW92ZV9tZWRpYWZpbGUiLCR0aGlzLT5MYW5nKCJSZW1vdmUiKSkuIiAiOiIiKS4kdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCJhZGRfbWVkaWFmaWxlIiwkdGhpcy0+TGFuZygibWVkaWFmaWxlX3NlbGVjdF9tZWRpYWZpbGUiKSkpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJwaWN0dXJlX2xhYmVsIiwgJHRoaXMtPkxhbmcoIm1lZGlhZmlsZV9waWN0dXJlIikpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJwaWN0dXJlX2lucHV0IiwgKChpc3NldCgkaXRlbS0+cGljdHVyZSkgJiYgJGl0ZW0tPnBpY3R1cmUpPyc8aW1nIHNyYz0iJy4kaXRlbS0+cGljdHVyZS0+dXJsLiciIC8+PGJyLz4nLiR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsInJlbW92ZV9waWN0dXJlIiwkdGhpcy0+TGFuZygiUmVtb3ZlIikpLiIgIjoiIikuJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwiYWRkX3BpY3R1cmUiLCR0aGlzLT5MYW5nKCJtZWRpYWZpbGVfc2VsZWN0X3BpY3R1cmUiKSkpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJ1c2VyZGVmaW5lZDJfbGFiZWwiLCAkdGhpcy0+TGFuZygibWVkaWFmaWxlX3VzZXJkZWZpbmVkMiIpKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbigidXNlcmRlZmluZWQyX2lucHV0IiwgJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCJCdXNlcmRlZmluZWQyIiwkdXNlcmRlZmluZWQyb3B0aW9ucywtMSxpc3NldCgkaXRlbSk/JGl0ZW0tPnVzZXJkZWZpbmVkMjowKSk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oIm5hbWVfbGFiZWwiLCAkdGhpcy0+TGFuZygibmFtZSIpKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbigibmFtZV9pbnB1dCIsICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCJCbmFtZSIsaXNzZXQoJGl0ZW0pPyRpdGVtLT5uYW1lOiIiLDUwLDY0KSk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oInBhcmVudF9sYWJlbCIsICR0aGlzLT5MYW5nKCJwbGF5ZXIiKSk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oInBhcmVudF9pbnB1dCIsICR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwiQnBhcmVudCIsJHBhcmVudG9wdGlvbnMsLTEsaXNzZXQoJGl0ZW0pPyRpdGVtLT5wYXJlbnQ6MCkpO2lmKGlzc2V0KCRpdGVtKSkgJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwgIm9sZHBhcmVudCIsICRpdGVtLT5wYXJlbnQpOw0KaWYoJHRoaXMtPkdldFByZWZlcmVuY2UoImVkaXRhYmxlX2FsaWFzZXMiLGZhbHNlKSl7DQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJhbGlhc19sYWJlbCIsICR0aGlzLT5MYW5nKCJhbGlhcyIpKTsNCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oImFsaWFzX2lucHV0IiwgJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsIkJhbGlhcyIsaXNzZXQoJGl0ZW0pPyRpdGVtLT5hbGlhczoiIiw1MCw2NCkpOw0KCSR0aGlzLT5zbWFydHktPmFzc2lnbigiaXRlbWFsaWFzIixmYWxzZSk7DQp9ZWxzZXsNCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oIml0ZW1hbGlhcyIsaXNzZXQoJGl0ZW0tPmFsaWFzKT8iKGFsaWFzIDogIi4kaXRlbS0+YWxpYXMuIikiOmZhbHNlKTsNCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oImFsaWFzX2lucHV0IiwgZmFsc2UpOw0KfQ0KDQokdGhpcy0+c21hcnR5LT5hc3NpZ24oImVkaXR0aXRsZSIsICR0aGlzLT5MYW5nKCJlZGl0X21lZGlhZmlsZSIpKTsNCg0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJzdWJtaXQiLCAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAic3VibWl0IiwgbGFuZygic3VibWl0IikpKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbigiYXBwbHkiLCAoaXNzZXQoJGl0ZW0pICYmIGlzc2V0KCRpdGVtLT5pZCkpPyR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICJhcHBseSIsIGxhbmcoImFwcGx5IikpOiIiKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbigiY2FuY2VsIiwgJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgImNhbmNlbCIsIGxhbmcoImNhbmNlbCIpKSk7DQoNCg0KLy8gRElTUExBWUlORw0KaWYoaXNzZXQoJGl0ZW0pICYmIGlzc2V0KCRpdGVtLT5pZCkpew0KCQllY2hvICR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoJGlkLCAiZWRpdEIiLCAkcmV0dXJuaWQpOw0KCQllY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoImVkaXRCLnRwbCIpOw0KCQllY2hvICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsICJCaWQiLCAkaXRlbS0+aWQpOw0KCQlpZihpc3NldCgkaXRlbSkgJiYgaXNzZXQoJGl0ZW0tPnBhcmVudCkpIGVjaG8gJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwgIm9sZHBhcmVudCIsICRpdGVtLT5wYXJlbnQpOw0KCQllY2hvICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsICJCaXRlbV9vcmRlciIsICRpdGVtLT5pdGVtX29yZGVyKTsNCgkJZWNobyAkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpOw0KCQ0KDQp9ZWxzZXsNCgllY2hvICR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoJGlkLCAiZWRpdEIiLCAkcmV0dXJuaWQpOw0KCWVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgiZWRpdEIudHBsIik7DQoJZWNobyAkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpOw0KfQ0KPz4=]]></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.FEaddA.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmlmICghaXNzZXQoJGdDbXMpKSBleGl0Ow0KDQovLyB3ZSByZXRyaWV2ZSBzb21lIHByZWZlcmVuY2VzDQokZGVjb2RlID0gJHRoaXMtPkdldFByZWZlcmVuY2UoImZlX2RlY29kZWVudGl0aWVzIixmYWxzZSk7DQokd3lzaXd5ZyA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCJmZV93eXNpd3lnIiwgZmFsc2UpOw0KJGFsbG93ZmlsZXMgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgiZmVfYWxsb3dmaWxlcyIsIGZhbHNlKTsNCiRhbGxvd25hbWVjaGFuZ2UgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgiZmVfYWxsb3duYW1lY2hhbmdlIiwgZmFsc2UpOw0KJGFsbG93YWRkbmV3ID0gJHRoaXMtPkdldFByZWZlcmVuY2UoImZlX2FsbG93YWRkbmV3IiwgZmFsc2UpOw0KJGZpbGVtYXhzaXplID0gKGludCkkdGhpcy0+R2V0UHJlZmVyZW5jZSgiZmVfbWF4ZmlsZXNpemUiLCAiIik7DQoNCiRjYXB0Y2hhID0gZmFsc2U7DQppZigkdGhpcy0+R2V0UHJlZmVyZW5jZSgiZmVfdXNlY2FwdGNoYSIsIGZhbHNlKSAmJiBpc3NldCgkZ0Ntcy0+bW9kdWxlc1siQ2FwdGNoYSJdKSAmJiAkZ0Ntcy0+bW9kdWxlc1siQ2FwdGNoYSJdWyJhY3RpdmUiXSl7DQoJJGNhcHRjaGEgPSAkdGhpcy0+Z2V0TW9kdWxlSW5zdGFuY2UoIkNhcHRjaGEiKTsNCn0NCg0KJGRiID0mICR0aGlzLT5HZXREYigpOw0KDQokaXRlbSA9IG5ldyBzdGRDbGFzcygpOw0KJGl0ZW0tPmlkID0gZmFsc2U7DQoNCi8vIGhlcmUgd2UgcmV0cmlldmUgdGhlIGl0ZW0gd2UncmUgd29ya2luZyB3aXRoLg0KLy8gV2UgY2FuJ3Qgd29yayB3aXRoIGVpdGhlciBpZCBvciBhbGlhcyBhbG9uZSwgYXMgaXQgaXMgYWxpYXMgdGhhdCBhcmUgYmVpbmcgdXNlZCBpbiB0aGUgdGFncyBidXQgYWxpYXMgY2FuIGNoYW5nZS4uLg0KaWYoIWlzc2V0KCRwYXJhbXNbImFsaWFzIl0pICYmIGlzc2V0KCRwYXJhbXNbImZlYWRkX2lkIl0pKXsNCgkkcXVlcnkgPSAiU0VMRUNUIGlkLCBhbGlhcyBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfYXZwbGF5ZXJfcGxheWVyIFdIRVJFIGlkPT8gTElNSVQgMSI7DQoJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSxhcnJheSgkcGFyYW1zWyJmZWFkZF9pZCJdKSk7DQoJaWYoJGRicmVzdWx0ICYmICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpew0KCQkkaXRlbS0+aWQgPSAkcm93WyJpZCJdOw0KCQkkaXRlbS0+YWxpYXMgPSAkcm93WyJhbGlhcyJdOw0KCX0NCn1lbHNlaWYoIWlzc2V0KCRwYXJhbXNbImZlYWRkX2lkIl0pICYmIGlzc2V0KCRwYXJhbXNbImFsaWFzIl0pKXsNCgkkcXVlcnkgPSAiU0VMRUNUIGlkLCBhbGlhcyBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfYXZwbGF5ZXJfcGxheWVyIFdIRVJFIGFsaWFzPT8gTElNSVQgMSI7DQoJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSxhcnJheSgkcGFyYW1zWyJhbGlhcyJdKSk7DQoJaWYoJGRicmVzdWx0ICYmICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpew0KCQkkaXRlbS0+aWQgPSAkcm93WyJpZCJdOw0KCQkkaXRlbS0+YWxpYXMgPSAkcm93WyJhbGlhcyJdOw0KCX0NCn0NCg0KLy8gd2UgY2hlY2sgaWYgdGhlcmUgaXMgc3VmZmljaWVudCBwZXJtaXNzaW9uICggZnVuY3Rpb24uZmVhZGRfcGVybWNoZWNrLnBocCBkb2VzIG1vc3Qgb2YgdGhlIGpvYiAtIHNlZSBGQVEpDQppZigJKCEkYWxsb3dhZGRuZXcgJiYgISRpdGVtLT5pZCkJfHwNCgkoISR0aGlzLT5mZWFkZF9wZXJtY2hlY2soInBsYXllciIsICRpdGVtLT5pZCwgJGl0ZW0tPmlkPyRpdGVtLT5hbGlhczpmYWxzZSkpDQogICl7DQoJZWNobyAnPGRpdiBjbGFzcz0iZmVhZGRfZm9ybV9tZXNzYWdlIj4nLiR0aGlzLT5MYW5nKCJlcnJvcl9mZWFkZGRlbmllZCIpLiI8L2Rpdj4iOw0KCXJldHVybiBmYWxzZTsNCn0NCg0KaWYoaXNzZXQoJHBhcmFtc1siZmVhZGRfaWQiXSkgJiYgaXNzZXQoJHBhcmFtc1siZmVhZGRmaWxlZGVsZXRlIl0pKXsNCgkkcXVlcnkgPSAiREVMRVRFIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9hdnBsYXllcl9tdWx0aXBsZWZpbGVzZmllbGRzIFdIRVJFIGZpbGVpZD0/IEFORCBpdGVtaWQ9PyBMSU1JVCAxIjsNCgkkZGItPkV4ZWN1dGUoICRxdWVyeSwgYXJyYXkoJHBhcmFtc1siZmVhZGRmaWxlZGVsZXRlIl0sICRpdGVtLT5pZCkgKTsNCgl1bnNldCgkcGFyYW1zWyJmZWFkZGZpbGVkZWxldGUiXSk7DQp9DQoNCiR1c2VyZGVmaW5lZDFvcHRpb25zID0gJHRoaXMtPmdldF9maWVsZG9wdGlvbnMoInBsYXllcl91c2VyZGVmaW5lZDEiKTsNCiRwbGF5ZXJ0eXBlb3B0aW9ucyA9ICR0aGlzLT5nZXRfcHJlZGVmaW5lZG9wdGlvbnMoInBsYXllcl9wbGF5ZXJ0eXBlIik7DQoNCg0KLy8gQkVHSU4gRk9STSBTVUJNSVNTSU9ODQppZiAoaXNzZXQoJHBhcmFtc1siZmVhZGRzdWJtaXQiXSkpIHsNCgkNCglkZWJ1Z19idWZmZXIoIkVkaXQgRm9ybSBoYXMgYmVlbiBzdWJtaXR0ZWQiLl9fTElORV9fKTsNCg0KCS8vIFJFVFJJRVZJTkcgVEhFIEZPUk0gVkFMVUVTIChhbmQgZXNjYXBpbmcgaXQsIGlmIG5lZWRlZCkNCglpZihpc3NldCgkcGFyYW1zWyJmZWFkZF9pdGVtX29yZGVyIl0pKSAkaXRlbS0+aXRlbV9vcmRlciA9ICRwYXJhbXNbImZlYWRkX2l0ZW1fb3JkZXIiXTsNCgkkaXRlbS0+bG9jYXRpb24gPSAkZGVjb2RlP2h0bWxfZW50aXR5X2RlY29kZSgkcGFyYW1zWyJmZWFkZF9sb2NhdGlvbiJdKTokcGFyYW1zWyJmZWFkZF9sb2NhdGlvbiJdOw0KCQkkaXRlbS0+d2lkdGggPSAkZGVjb2RlP2h0bWxfZW50aXR5X2RlY29kZSgkcGFyYW1zWyJmZWFkZF93aWR0aCJdKTokcGFyYW1zWyJmZWFkZF93aWR0aCJdOw0KCQkkaXRlbS0+aGVpZ2h0ID0gJGRlY29kZT9odG1sX2VudGl0eV9kZWNvZGUoJHBhcmFtc1siZmVhZGRfaGVpZ2h0Il0pOiRwYXJhbXNbImZlYWRkX2hlaWdodCJdOw0KCQkkaXRlbS0+cGFyYW1ldGVycyA9ICRkZWNvZGU/aHRtbF9lbnRpdHlfZGVjb2RlKCRwYXJhbXNbImZlYWRkX3BhcmFtZXRlcnMiXSk6JHBhcmFtc1siZmVhZGRfcGFyYW1ldGVycyJdOw0KCQkkaXRlbS0+dXNlcmRlZmluZWQxID0gJGRlY29kZT9odG1sX2VudGl0eV9kZWNvZGUoJHBhcmFtc1siZmVhZGRfdXNlcmRlZmluZWQxIl0pOiRwYXJhbXNbImZlYWRkX3VzZXJkZWZpbmVkMSJdOw0KCQkkaXRlbS0+cGxheWVydHlwZSA9ICRkZWNvZGU/aHRtbF9lbnRpdHlfZGVjb2RlKCRwYXJhbXNbImZlYWRkX3BsYXllcnR5cGUiXSk6JHBhcmFtc1siZmVhZGRfcGxheWVydHlwZSJdOw0KCQkkaXRlbS0+bmFtZSA9ICRkZWNvZGU/aHRtbF9lbnRpdHlfZGVjb2RlKCRwYXJhbXNbImZlYWRkX25hbWUiXSk6JHBhcmFtc1siZmVhZGRfbmFtZSJdOw0KCQkNCgkkaXRlbS0+YWxpYXMgPSAkdGhpcy0+cGxjcmVhdGVhbGlhcygkaXRlbS0+bmFtZSk7DQoJDQoJJGF1dG9pbmNyZW1lbnRhbGlhcyA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCJhdXRvaW5jcmVtZW50X2FsaWFzIixmYWxzZSk7DQoNCglpZigkY2FwdGNoYSAmJiAhJGNhcHRjaGEtPmNoZWNrQ2FwdGNoYSgkcGFyYW1zWyJjYXB0Y2hhX2lucHV0Il0pKXsNCgkJZWNobyAnPGRpdiBjbGFzcz0iZmVhZGRfZm9ybV9tZXNzYWdlIj4nLiR0aGlzLT5MYW5nKCJlcnJvcl9jYXB0Y2hhIikuIjwvZGl2PiI7DQoJfWVsc2VpZigJIWlzc2V0KCRwYXJhbXNbImZlYWRkX2xvY2F0aW9uIl0pIHx8ICRwYXJhbXNbImZlYWRkX2xvY2F0aW9uIl0gPT0gIiINCgkJCSB8fCAhaXNzZXQoJHBhcmFtc1siZmVhZGRfbmFtZSJdKSB8fCAkcGFyYW1zWyJmZWFkZF9uYW1lIl0gPT0gIiINCgkJCSApDQoJew0KCQllY2hvICc8ZGl2IGNsYXNzPSJmZWFkZF9mb3JtX21lc3NhZ2UiPicuJHRoaXMtPkxhbmcoImVycm9yX21pc3NnaW52YWx1ZSIpLiI8L2Rpdj4iOw0KCX1lbHNlaWYoISRhdXRvaW5jcmVtZW50YWxpYXMgJiYgZmFsc2UgPT0gJHRoaXMtPmNoZWNrYWxpYXMoIm1vZHVsZV9hdnBsYXllcl9wbGF5ZXIiLCAkaXRlbS0+YWxpYXMsICRpdGVtLT5pZD8kaXRlbS0+aWQ6ZmFsc2UpKXsNCgkJZWNobyAnPGRpdiBjbGFzcz0iZmVhZGRfZm9ybV9tZXNzYWdlIj4nLiR0aGlzLT5MYW5nKCJlcnJvcl9hbHJlYWR5ZXhpc3RzIikuIjwvZGl2PiI7DQoJfWVsc2V7DQoJCSMjIyMjIyMjIyMjIyBET0lORyBUSEUgVVBEQVRFDQoNCgkJaWYoJGF1dG9pbmNyZW1lbnRhbGlhcyl7DQoJCQkkYmFzZWFsaWFzID0gJGl0ZW0tPmFsaWFzOw0KCQkJJHRtcGFsaWFzID0gJGl0ZW0tPmFsaWFzOw0KCQkJJGkgPSAxOw0KCQkJd2hpbGUoISR0aGlzLT5jaGVja2FsaWFzKCJtb2R1bGVfYXZwbGF5ZXJfcGxheWVyIiwgJHRtcGFsaWFzLCAkaXRlbS0+aWQ/JGl0ZW0tPmlkOmZhbHNlKSl7DQoJCQkJJHRtcGFsaWFzID0gJGJhc2VhbGlhcy4iXyIuJGk7DQoJCQkJJGkrKzsNCgkJCX0NCgkJCSRpdGVtLT5hbGlhcyA9ICR0bXBhbGlhczsNCgkJfQ0KDQoJCS8vIEZJRUxEUyBUTyBVUERBVEUNCgkJJHF1ZXJ5ID0gKCRpdGVtLT5pZD8iVVBEQVRFICI6IklOU0VSVCBJTlRPICIpLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2F2cGxheWVyX3BsYXllciBTRVQgDQoJCQlsb2NhdGlvbj0/LA0KCQkJCXdpZHRoPT8sDQoJCQkJaGVpZ2h0PT8sDQoJCQkJcGFyYW1ldGVycz0/LA0KCQkJCXVzZXJkZWZpbmVkMT0/LA0KCQkJCXBsYXllcnR5cGU9PywNCgkJCQluYW1lPT8sDQoJCWFsaWFzPT8sDQoJCWRhdGVfbW9kaWZpZWQ9PywNCgkJYWN0aXZlPSIuKGlzc2V0KCRpdGVtLT5hY3RpdmUpPyRpdGVtLT5hY3RpdmU6MSkuIiwNCgkJaXNkZWZhdWx0PSIuKGlzc2V0KCRpdGVtLT5pc2RlZmF1bHQpPyRpdGVtLT5pc2RlZmF1bHQ6MCkuIiI7DQoJCQkNCgkJLy8gVkFMVUVTDQoJCSR2YWx1ZXMgPSBhcnJheShhZGRzbGFzaGVzKCRpdGVtLT5sb2NhdGlvbiksDQoJCQkJYWRkc2xhc2hlcygkaXRlbS0+d2lkdGgpLA0KCQkJCWFkZHNsYXNoZXMoJGl0ZW0tPmhlaWdodCksDQoJCQkJYWRkc2xhc2hlcygkaXRlbS0+cGFyYW1ldGVycyksDQoJCQkJJGl0ZW0tPnVzZXJkZWZpbmVkMSwNCgkJCQkkaXRlbS0+cGxheWVydHlwZSwNCgkJCQlhZGRzbGFzaGVzKCRpdGVtLT5uYW1lKSwkaXRlbS0+YWxpYXMsc3RyX3JlcGxhY2UoIiciLCIiLCRkYi0+REJUaW1lU3RhbXAodGltZSgpKSkpOw0KDQoJCWlmKCRpdGVtLT5pZCl7DQoJCQkkZXZlbnQgPSAiYXZwbGF5ZXJfbW9kaWZpZWQiOw0KCQkJJHF1ZXJ5IC49ICIgV0hFUkUgaWQ9PzsiOw0KCQkJYXJyYXlfcHVzaCgkdmFsdWVzLCRpdGVtLT5pZCk7DQoJCX1lbHNlew0KCQkJLy8gTkVXIElURU0NCgkJCSRldmVudCA9ICJhdnBsYXllcl9hZGRlZCI7DQoJCQkkcXVlcnkgLj0gIiwgZGF0ZV9jcmVhdGVkPT8iOw0KCQkJJHZhbHVlc1tdID0gc3RyX3JlcGxhY2UoIiciLCIiLCRkYi0+REJUaW1lU3RhbXAodGltZSgpKSk7DQoJCQkvLyBnZXQgYSBuZXcgaWQgZnJvbSB0aGUgc2VxdWVuY2UgdGFibGUNCgkJCSRpdGVtLT5pZCA9ICRkYi0+R2VuSUQoY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfYXZwbGF5ZXJfcGxheWVyX3NlcSIpOw0KCQkJaWYoJHRoaXMtPkdldFByZWZlcmVuY2UoIm5ld2l0ZW1zZmlyc3RfcGxheWVyIixmYWxzZSkpew0KCQkJCS8vIG5ldyBpdGVtcyBnZXQgdG8gdGhlIHRvcCAtIHNvIHdlIG11c3QgcHV0IGFsbCBvdGhlciBpdGVtcyBkb3duIGZyb20gb25lIHN0ZXAsIGFuZCB0aGVuIHNldCB0aGlzIGl0ZW0ncyBvcmRlciB0byAxDQoJCQkJJHF1ZXJ5MiA9ICJVUERBVEUgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9hdnBsYXllcl9wbGF5ZXIgU0VUIGl0ZW1fb3JkZXI9KGl0ZW1fb3JkZXIrMSkiOw0KCQkJCSRkYi0+RXhlY3V0ZSgkcXVlcnkyKTsNCgkJCQkkcXVlcnkgLj0gIixpdGVtX29yZGVyPTEsIGlkPSIuJGl0ZW0tPmlkOw0KCQkJfWVsc2V7DQoJCQkJLy8gbmV3IGl0ZW1zIGdldCB0byB0aGUgYm90dG9tIC0gc28gd2UgbXVzdCBzZXQgdGhlIGl0ZW1fb3JkZXIgdG8gdGhlIG51bWJlciBvZiBpdGVtcyArIDENCgkJCQkkaXRlbV9vcmRlciA9ICR0aGlzLT5jb3VudHNvbWV0aGluZygicGxheWVyIikgKyAxOw0KCQkJCSRxdWVyeSAuPSAiLGl0ZW1fb3JkZXI9Ii4kaXRlbV9vcmRlci4iLCBpZD0iLiRpdGVtLT5pZDsNCgkJCX0NCgkJfQ0KCQkkZGItPkV4ZWN1dGUoJHF1ZXJ5LCAkdmFsdWVzKTsNCg0KDQoJCQ0KDQoJCWlmKCRkYi0+QWZmZWN0ZWRfUm93cygpKXsNCgkJCWlmKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCJzZWFyY2htb2R1bGVfaW5kZXhfcGxheWVyIixmYWxzZSkpew0KCQkJCS8vIElGIEFOWVRISU5HIFdBUyBNT0RJRklFRCwgV0UgTVVTVCBVUERBVEUgVEhFIFNFQVJDSCBJTkRFWCBBTkQgU0VORCBBTiBFVkVOVC4uLg0KCQkJCWlmKGlzc2V0KCRldmVudCkpCSR0aGlzLT5TZW5kRXZlbnQoJGV2ZW50LCBhcnJheSgid2hhdCI9PiJwbGF5ZXIiLCAiaXRlbWlkIiA9PiAkaXRlbS0+aWQsICJhbGlhcyI9PiRpdGVtLT5hbGlhcykpOw0KCQkJCSRtb2R1bGUgPSYgJHRoaXMtPkdldE1vZHVsZUluc3RhbmNlKCJTZWFyY2giKTsNCgkJCQlpZigkbW9kdWxlKSB7DQoJCQkJCWRlYnVnX2J1ZmZlcigiU0VBUkhDIElOREVYIFdBUyBVUERBVEVEICIuX19MSU5FX18pOw0KCQkJCQkkdGV4dCA9ICIkaXRlbS0+bmFtZSI7DQoJCQkJCSRtb2R1bGUtPkFkZFdvcmRzKCR0aGlzLT5HZXROYW1lKCksICRpdGVtLT5pZCwgInBsYXllciIsICR0ZXh0LCBOVUxMKTsNCgkJCQl9DQoJCQl9DQoJCQllY2hvICc8ZGl2IGNsYXNzPSJmZWFkZF9mb3JtX21lc3NhZ2UiPicuJHRoaXMtPkxhbmcoIm1lc3NhZ2VfbW9kaWZpZWQiKS4iPC9kaXY+IjsNCgkJfQ0KCQkNCgkJLy8gaWYgYSBjb250ZW50IHJlZGlyZWN0aW9uIGhhcyBiZWVuIHNldCwgd2UgcmVkaXJlY3QuLi4NCgkJJHJlZGlyZWN0X3RvX2lkID0gJHRoaXMtPkdldFByZWZlcmVuY2UoImZlX2FmdGVyc3VibWl0IiwtMSk7DQoJCWlmKCAkcmVkaXJlY3RfdG9faWQgPiAxICkJJHRoaXMtPlJlZGlyZWN0Q29udGVudCgkcmVkaXJlY3RfdG9faWQpOw0KCX0NCgkvLyBFTkQgT0YgRk9STSBTVUJNSVNTSU9ODQoJDQoJaWYoIWlzc2V0KCRwYXJhbXNbImZlYWRkX2lkIl0pICYmIGlzc2V0KCRpdGVtLT5pZCkpCSRwYXJhbXNbImZlYWRkX2lkIl0gPSAkaXRlbS0+aWQ7DQp9DQoNCmlmKCRpdGVtLT5pZCkgew0KCS8vIGlmIHdlIGFyZSB3b3JraW5nIG9uIGFuIGl0ZW0gdGhhdCBleGlzdHMsIHdlIGxvYWQgaXQuIFdlIG11c3QgZG8gdGhpcyBldmVuIHdoZW4gdGhlIGZvcm0gaXMgc3VibWl0dGVkLCBvdGhlcndpc2Ugd2Ugd29uJ3QgaGF2ZSB0aGUgZmlsZSBmaWVsZHMNCgkkaXRlbXMgPSAkdGhpcy0+Z2V0X2xldmVsX3BsYXllcihhcnJheSgiaWQiPT4kaXRlbS0+aWQpKTsNCgkkaXRlbSA9ICRpdGVtc1swXTsNCn0NCg0KDQovKiAjIyBQUkVQQVJJTkcgU01BUlRZIEVMRU1FTlRTDQpDcmVhdGVJbnB1dFRleHQgOiAoaWQsbmFtZSx2YWx1ZSxzaXplLG1heGxlbmd0aCkNCkNyZWF0ZVRleHRBcmVhIDogKHd5c2l3eWcsaWQsdGV4dCxuYW1lKQ0KQ3JlYXRlSW5wdXRTZWxlY3RMaXN0IDogKGlkLG5hbWUsaXRlbXMsc2VsZWN0ZWRpdGVtcyxzaXplKQ0KQ3JlYXRlSW5wdXREcm9wZG93biA6IChpZCxuYW1lLGl0ZW1zLHNpbmRleCxzdmFsdWUpDQoqLw0KDQppZighJGl0ZW0tPmlkIHx8ICRhbGxvd25hbWVjaGFuZ2Upew0KCSRuYW1laW5wdXQgPSAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwiZmVhZGRfbmFtZSIsJGl0ZW0tPmlkPyRpdGVtLT5uYW1lOiIiLDUwLDY0KTsNCn1lbHNlew0KCSRuYW1laW5wdXQgPSAkaXRlbS0+bmFtZS4kdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCAiZmVhZGRfbmFtZSIsICRpdGVtLT5uYW1lKTsNCn0NCiR0aGlzLT5zbWFydHktPmFzc2lnbigibmFtZV9sYWJlbCIsICR0aGlzLT5MYW5nKCJuYW1lIikpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJuYW1lX2lucHV0IiwgJG5hbWVpbnB1dCk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oImxvY2F0aW9uX2xhYmVsIiwgJHRoaXMtPkxhbmcoInBsYXllcl9sb2NhdGlvbiIpKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbigibG9jYXRpb25faW5wdXQiLCAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwiZmVhZGRfbG9jYXRpb24iLCRpdGVtLT5pZD8kaXRlbS0+bG9jYXRpb246IiIsNTAsMjU1KSk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oIndpZHRoX2xhYmVsIiwgJHRoaXMtPkxhbmcoInBsYXllcl93aWR0aCIpKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbigid2lkdGhfaW5wdXQiLCAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwiZmVhZGRfd2lkdGgiLCRpdGVtLT5pZD8kaXRlbS0+d2lkdGg6IiIsMzAsMTApKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbigiaGVpZ2h0X2xhYmVsIiwgJHRoaXMtPkxhbmcoInBsYXllcl9oZWlnaHQiKSk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oImhlaWdodF9pbnB1dCIsICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCJmZWFkZF9oZWlnaHQiLCRpdGVtLT5pZD8kaXRlbS0+aGVpZ2h0OiIiLDMwLDEwKSk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oInBhcmFtZXRlcnNfbGFiZWwiLCAkdGhpcy0+TGFuZygicGxheWVyX3BhcmFtZXRlcnMiKSk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oInBhcmFtZXRlcnNfaW5wdXQiLCAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwiZmVhZGRfcGFyYW1ldGVycyIsJGl0ZW0tPmlkPyRpdGVtLT5wYXJhbWV0ZXJzOiIiLDUwLDI1NSkpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJ1c2VyZGVmaW5lZDFfbGFiZWwiLCAkdGhpcy0+TGFuZygicGxheWVyX3VzZXJkZWZpbmVkMSIpKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbigidXNlcmRlZmluZWQxX2lucHV0IiwgJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCJmZWFkZF91c2VyZGVmaW5lZDEiLCR1c2VyZGVmaW5lZDFvcHRpb25zLC0xLCRpdGVtLT5pZD8kaXRlbS0+dXNlcmRlZmluZWQxOjApKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbigicGxheWVydHlwZV9sYWJlbCIsICR0aGlzLT5MYW5nKCJwbGF5ZXJfcGxheWVydHlwZSIpKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbigicGxheWVydHlwZV9pbnB1dCIsICR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwiZmVhZGRfcGxheWVydHlwZSIsJHBsYXllcnR5cGVvcHRpb25zLC0xLCRpdGVtLT5pZD8kaXRlbS0+cGxheWVydHlwZTowKSk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oIml0ZW1hbGlhcyIsaXNzZXQoJGl0ZW0tPmFsaWFzKT8iKGFsaWFzIDogIi4kaXRlbS0+YWxpYXMuIikiOmZhbHNlKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbigiYWxpYXNfaW5wdXQiLCBmYWxzZSk7DQoNCiR0aGlzLT5zbWFydHktPmFzc2lnbigiZWRpdHRpdGxlIiwgJHRoaXMtPkxhbmcoImVkaXRfcGxheWVyIikpOw0KDQokdGhpcy0+c21hcnR5LT5hc3NpZ24oInN1Ym1pdCIsICR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICJmZWFkZHN1Ym1pdCIsICR0aGlzLT5MYW5nKCJzdWJtaXQiKSkpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJjYW5jZWwiLCAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAiZmVhZGRjYW5jZWwiLCAkdGhpcy0+TGFuZygiY2FuY2VsIikpKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbigiY2FwdGNoYV9pbWFnZSIsICRjYXB0Y2hhPyRjYXB0Y2hhLT5nZXRDYXB0Y2hhKCk6ZmFsc2UpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJjYXB0Y2hhX2lucHV0IiwgJGNhcHRjaGE/JHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsImNhcHRjaGFfaW5wdXQiLCIiLDMwLDEwKTpmYWxzZSk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oImNhcHRjaGFfcHJvbXB0IiwgJGNhcHRjaGE/JHRoaXMtPkxhbmcoInByb21wdF9jYXB0Y2hhIik6ZmFsc2UpOw0KDQoNCiR0aGlzLT5zbWFydHktPmFzc2lnbigiaXRlbSIsICRpdGVtKTsNCg0KDQovLyBESVNQTEFZSU5HDQoJDQplY2hvICR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoJGlkLCAiRkVhZGRBIiwgJHJldHVybmlkLCAicG9zdCIsICJtdWx0aXBhcnQvZm9ybS1kYXRhIik7DQplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoImZyb250ZW5kX2FkZF9wbGF5ZXIudHBsIik7DQoNCmlmKGlzc2V0KCRpdGVtKSAmJiBpc3NldCgkaXRlbS0+aWQpKXsNCgllY2hvICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsICJmZWFkZF9pZCIsICRpdGVtLT5pZCk7DQoJaWYoaXNzZXQoJGl0ZW0tPnBhcmVudCkpIGVjaG8gJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwgImZlYWRkX29sZHBhcmVudCIsICRpdGVtLT5wYXJlbnQpOw0KCWVjaG8gJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwgImZlYWRkX2l0ZW1fb3JkZXIiLCAkaXRlbS0+aXRlbV9vcmRlcik7DQp9DQplY2hvICR0aGlzLT5DcmVhdGVGb3JtRW5kKCk7DQoNCj8+]]></data>
	</file>
	<file>
	  <filename>/action.FEaddB.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmlmICghaXNzZXQoJGdDbXMpKSBleGl0Ow0KDQovLyB3ZSByZXRyaWV2ZSBzb21lIHByZWZlcmVuY2VzDQokZGVjb2RlID0gJHRoaXMtPkdldFByZWZlcmVuY2UoImZlX2RlY29kZWVudGl0aWVzIixmYWxzZSk7DQokd3lzaXd5ZyA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCJmZV93eXNpd3lnIiwgZmFsc2UpOw0KJGFsbG93ZmlsZXMgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgiZmVfYWxsb3dmaWxlcyIsIGZhbHNlKTsNCiRhbGxvd25hbWVjaGFuZ2UgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgiZmVfYWxsb3duYW1lY2hhbmdlIiwgZmFsc2UpOw0KJGFsbG93YWRkbmV3ID0gJHRoaXMtPkdldFByZWZlcmVuY2UoImZlX2FsbG93YWRkbmV3IiwgZmFsc2UpOw0KJGZpbGVtYXhzaXplID0gKGludCkkdGhpcy0+R2V0UHJlZmVyZW5jZSgiZmVfbWF4ZmlsZXNpemUiLCAiIik7DQoNCiRjYXB0Y2hhID0gZmFsc2U7DQppZigkdGhpcy0+R2V0UHJlZmVyZW5jZSgiZmVfdXNlY2FwdGNoYSIsIGZhbHNlKSAmJiBpc3NldCgkZ0Ntcy0+bW9kdWxlc1siQ2FwdGNoYSJdKSAmJiAkZ0Ntcy0+bW9kdWxlc1siQ2FwdGNoYSJdWyJhY3RpdmUiXSl7DQoJJGNhcHRjaGEgPSAkdGhpcy0+Z2V0TW9kdWxlSW5zdGFuY2UoIkNhcHRjaGEiKTsNCn0NCg0KJGRiID0mICR0aGlzLT5HZXREYigpOw0KDQokaXRlbSA9IG5ldyBzdGRDbGFzcygpOw0KJGl0ZW0tPmlkID0gZmFsc2U7DQoNCi8vIGhlcmUgd2UgcmV0cmlldmUgdGhlIGl0ZW0gd2UncmUgd29ya2luZyB3aXRoLg0KLy8gV2UgY2FuJ3Qgd29yayB3aXRoIGVpdGhlciBpZCBvciBhbGlhcyBhbG9uZSwgYXMgaXQgaXMgYWxpYXMgdGhhdCBhcmUgYmVpbmcgdXNlZCBpbiB0aGUgdGFncyBidXQgYWxpYXMgY2FuIGNoYW5nZS4uLg0KaWYoIWlzc2V0KCRwYXJhbXNbImFsaWFzIl0pICYmIGlzc2V0KCRwYXJhbXNbImZlYWRkX2lkIl0pKXsNCgkkcXVlcnkgPSAiU0VMRUNUIGlkLCBhbGlhcyBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfYXZwbGF5ZXJfbWVkaWFmaWxlIFdIRVJFIGlkPT8gTElNSVQgMSI7DQoJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSxhcnJheSgkcGFyYW1zWyJmZWFkZF9pZCJdKSk7DQoJaWYoJGRicmVzdWx0ICYmICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpew0KCQkkaXRlbS0+aWQgPSAkcm93WyJpZCJdOw0KCQkkaXRlbS0+YWxpYXMgPSAkcm93WyJhbGlhcyJdOw0KCX0NCn1lbHNlaWYoIWlzc2V0KCRwYXJhbXNbImZlYWRkX2lkIl0pICYmIGlzc2V0KCRwYXJhbXNbImFsaWFzIl0pKXsNCgkkcXVlcnkgPSAiU0VMRUNUIGlkLCBhbGlhcyBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfYXZwbGF5ZXJfbWVkaWFmaWxlIFdIRVJFIGFsaWFzPT8gTElNSVQgMSI7DQoJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSxhcnJheSgkcGFyYW1zWyJhbGlhcyJdKSk7DQoJaWYoJGRicmVzdWx0ICYmICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpew0KCQkkaXRlbS0+aWQgPSAkcm93WyJpZCJdOw0KCQkkaXRlbS0+YWxpYXMgPSAkcm93WyJhbGlhcyJdOw0KCX0NCn0NCg0KLy8gd2UgY2hlY2sgaWYgdGhlcmUgaXMgc3VmZmljaWVudCBwZXJtaXNzaW9uICggZnVuY3Rpb24uZmVhZGRfcGVybWNoZWNrLnBocCBkb2VzIG1vc3Qgb2YgdGhlIGpvYiAtIHNlZSBGQVEpDQppZigJKCEkYWxsb3dhZGRuZXcgJiYgISRpdGVtLT5pZCkJfHwNCgkoISR0aGlzLT5mZWFkZF9wZXJtY2hlY2soIm1lZGlhZmlsZSIsICRpdGVtLT5pZCwgJGl0ZW0tPmlkPyRpdGVtLT5hbGlhczpmYWxzZSkpDQogICl7DQoJZWNobyAnPGRpdiBjbGFzcz0iZmVhZGRfZm9ybV9tZXNzYWdlIj4nLiR0aGlzLT5MYW5nKCJlcnJvcl9mZWFkZGRlbmllZCIpLiI8L2Rpdj4iOw0KCXJldHVybiBmYWxzZTsNCn0NCg0KaWYoaXNzZXQoJHBhcmFtc1siZmVhZGRfaWQiXSkgJiYgaXNzZXQoJHBhcmFtc1siZmVhZGRmaWxlZGVsZXRlIl0pKXsNCgkkcXVlcnkgPSAiREVMRVRFIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9hdnBsYXllcl9tdWx0aXBsZWZpbGVzZmllbGRzIFdIRVJFIGZpbGVpZD0/IEFORCBpdGVtaWQ9PyBMSU1JVCAxIjsNCgkkZGItPkV4ZWN1dGUoICRxdWVyeSwgYXJyYXkoJHBhcmFtc1siZmVhZGRmaWxlZGVsZXRlIl0sICRpdGVtLT5pZCkgKTsNCgl1bnNldCgkcGFyYW1zWyJmZWFkZGZpbGVkZWxldGUiXSk7DQp9DQoNCg0KaWYoJHRoaXMtPkdldFByZWZlcmVuY2UoInVzZV9oaWVyYXJjaHkiLGZhbHNlKSl7DQoJJHBhcmVudG9wdGlvbnMgPSAkdGhpcy0+Z2V0X2FkbWluX2hpZXJhcmNoeW9wdGlvbnMoIm1lZGlhZmlsZSIsZmFsc2UpOw0KfWVsc2V7DQoJJHBhcmVudG9wdGlvbnMgPSAkdGhpcy0+Z2V0X29wdGlvbnMoInBsYXllciIpOw0KfSR1c2VyZGVmaW5lZDJvcHRpb25zID0gJHRoaXMtPmdldF9maWVsZG9wdGlvbnMoIm1lZGlhZmlsZV91c2VyZGVmaW5lZDIiKTsNCg0KDQovLyBCRUdJTiBGT1JNIFNVQk1JU1NJT04NCmlmIChpc3NldCgkcGFyYW1zWyJmZWFkZHN1Ym1pdCJdKSkgew0KCQ0KCWRlYnVnX2J1ZmZlcigiRWRpdCBGb3JtIGhhcyBiZWVuIHN1Ym1pdHRlZCIuX19MSU5FX18pOw0KDQoJLy8gUkVUUklFVklORyBUSEUgRk9STSBWQUxVRVMgKGFuZCBlc2NhcGluZyBpdCwgaWYgbmVlZGVkKQ0KCWlmKGlzc2V0KCRwYXJhbXNbImZlYWRkX2l0ZW1fb3JkZXIiXSkpICRpdGVtLT5pdGVtX29yZGVyID0gJHBhcmFtc1siZmVhZGRfaXRlbV9vcmRlciJdOw0KCSRpdGVtLT51c2VyZGVmaW5lZDIgPSAkZGVjb2RlP2h0bWxfZW50aXR5X2RlY29kZSgkcGFyYW1zWyJmZWFkZF91c2VyZGVmaW5lZDIiXSk6JHBhcmFtc1siZmVhZGRfdXNlcmRlZmluZWQyIl07DQoJCSRpdGVtLT5wYXJlbnQgPSAkZGVjb2RlP2h0bWxfZW50aXR5X2RlY29kZSgkcGFyYW1zWyJmZWFkZF9wYXJlbnQiXSk6JHBhcmFtc1siZmVhZGRfcGFyZW50Il07DQoJCSRpdGVtLT5uYW1lID0gJGRlY29kZT9odG1sX2VudGl0eV9kZWNvZGUoJHBhcmFtc1siZmVhZGRfbmFtZSJdKTokcGFyYW1zWyJmZWFkZF9uYW1lIl07DQoJCQ0KCSRpdGVtLT5hbGlhcyA9ICR0aGlzLT5wbGNyZWF0ZWFsaWFzKCRpdGVtLT5uYW1lKTsNCgkNCgkkYXV0b2luY3JlbWVudGFsaWFzID0gJHRoaXMtPkdldFByZWZlcmVuY2UoImF1dG9pbmNyZW1lbnRfYWxpYXMiLGZhbHNlKTsNCg0KCWlmKCRjYXB0Y2hhICYmICEkY2FwdGNoYS0+Y2hlY2tDYXB0Y2hhKCRwYXJhbXNbImNhcHRjaGFfaW5wdXQiXSkpew0KCQllY2hvICc8ZGl2IGNsYXNzPSJmZWFkZF9mb3JtX21lc3NhZ2UiPicuJHRoaXMtPkxhbmcoImVycm9yX2NhcHRjaGEiKS4iPC9kaXY+IjsNCgl9ZWxzZWlmKAkhaXNzZXQoJHBhcmFtc1siZmVhZGRfbmFtZSJdKSB8fCAkcGFyYW1zWyJmZWFkZF9uYW1lIl0gPT0gIiINCgkJCSApDQoJew0KCQllY2hvICc8ZGl2IGNsYXNzPSJmZWFkZF9mb3JtX21lc3NhZ2UiPicuJHRoaXMtPkxhbmcoImVycm9yX21pc3NnaW52YWx1ZSIpLiI8L2Rpdj4iOw0KCX1lbHNlaWYoISRhdXRvaW5jcmVtZW50YWxpYXMgJiYgZmFsc2UgPT0gJHRoaXMtPmNoZWNrYWxpYXMoIm1vZHVsZV9hdnBsYXllcl9tZWRpYWZpbGUiLCAkaXRlbS0+YWxpYXMsICRpdGVtLT5pZD8kaXRlbS0+aWQ6ZmFsc2UpKXsNCgkJZWNobyAnPGRpdiBjbGFzcz0iZmVhZGRfZm9ybV9tZXNzYWdlIj4nLiR0aGlzLT5MYW5nKCJlcnJvcl9hbHJlYWR5ZXhpc3RzIikuIjwvZGl2PiI7DQoJfWVsc2V7DQoJCSMjIyMjIyMjIyMjIyBET0lORyBUSEUgVVBEQVRFDQoNCgkJaWYoJGF1dG9pbmNyZW1lbnRhbGlhcyl7DQoJCQkkYmFzZWFsaWFzID0gJGl0ZW0tPmFsaWFzOw0KCQkJJHRtcGFsaWFzID0gJGl0ZW0tPmFsaWFzOw0KCQkJJGkgPSAxOw0KCQkJd2hpbGUoISR0aGlzLT5jaGVja2FsaWFzKCJtb2R1bGVfYXZwbGF5ZXJfbWVkaWFmaWxlIiwgJHRtcGFsaWFzLCAkaXRlbS0+aWQ/JGl0ZW0tPmlkOmZhbHNlKSl7DQoJCQkJJHRtcGFsaWFzID0gJGJhc2VhbGlhcy4iXyIuJGk7DQoJCQkJJGkrKzsNCgkJCX0NCgkJCSRpdGVtLT5hbGlhcyA9ICR0bXBhbGlhczsNCgkJfQ0KDQoJCS8vIEZJRUxEUyBUTyBVUERBVEUNCgkJJHF1ZXJ5ID0gKCRpdGVtLT5pZD8iVVBEQVRFICI6IklOU0VSVCBJTlRPICIpLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2F2cGxheWVyX21lZGlhZmlsZSBTRVQgDQoJCQl1c2VyZGVmaW5lZDI9PywNCgkJCQlwYXJlbnQ9PywNCgkJCQluYW1lPT8sDQoJCWFsaWFzPT8sDQoJCWRhdGVfbW9kaWZpZWQ9PywNCgkJYWN0aXZlPSIuKGlzc2V0KCRpdGVtLT5hY3RpdmUpPyRpdGVtLT5hY3RpdmU6MSkuIiwNCgkJaXNkZWZhdWx0PSIuKGlzc2V0KCRpdGVtLT5pc2RlZmF1bHQpPyRpdGVtLT5pc2RlZmF1bHQ6MCkuIiI7DQoJCQkNCgkJLy8gVkFMVUVTDQoJCSR2YWx1ZXMgPSBhcnJheSgkaXRlbS0+dXNlcmRlZmluZWQyLA0KCQkJCSRpdGVtLT5wYXJlbnQsDQoJCQkJYWRkc2xhc2hlcygkaXRlbS0+bmFtZSksJGl0ZW0tPmFsaWFzLHN0cl9yZXBsYWNlKCInIiwiIiwkZGItPkRCVGltZVN0YW1wKHRpbWUoKSkpKTsNCg0KCQlpZigkaXRlbS0+aWQpew0KCQkJJGV2ZW50ID0gImF2cGxheWVyX21vZGlmaWVkIjsNCgkJCSRxdWVyeSAuPSAiIFdIRVJFIGlkPT87IjsNCgkJCWFycmF5X3B1c2goJHZhbHVlcywkaXRlbS0+aWQpOw0KCQl9ZWxzZXsNCgkJCS8vIE5FVyBJVEVNDQoJCQkkZXZlbnQgPSAiYXZwbGF5ZXJfYWRkZWQiOw0KCQkJJHF1ZXJ5IC49ICIsIGRhdGVfY3JlYXRlZD0/IjsNCgkJCSR2YWx1ZXNbXSA9IHN0cl9yZXBsYWNlKCInIiwiIiwkZGItPkRCVGltZVN0YW1wKHRpbWUoKSkpOw0KCQkJLy8gZ2V0IGEgbmV3IGlkIGZyb20gdGhlIHNlcXVlbmNlIHRhYmxlDQoJCQkkaXRlbS0+aWQgPSAkZGItPkdlbklEKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2F2cGxheWVyX21lZGlhZmlsZV9zZXEiKTsNCgkJCWlmKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCJuZXdpdGVtc2ZpcnN0X21lZGlhZmlsZSIsZmFsc2UpKXsNCgkJCQkvLyBuZXcgaXRlbXMgZ2V0IHRvIHRoZSB0b3AgLSBzbyB3ZSBtdXN0IHB1dCBhbGwgb3RoZXIgaXRlbXMgZG93biBmcm9tIG9uZSBzdGVwLCBhbmQgdGhlbiBzZXQgdGhpcyBpdGVtJ3Mgb3JkZXIgdG8gMQ0KCQkJCSRxdWVyeTIgPSAiVVBEQVRFICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfYXZwbGF5ZXJfbWVkaWFmaWxlIFNFVCBpdGVtX29yZGVyPShpdGVtX29yZGVyKzEpIFdIRVJFIHBhcmVudD0/IjsNCgkJCQkkZGItPkV4ZWN1dGUoJHF1ZXJ5MiwgYXJyYXkoJGl0ZW0tPnBhcmVudCkpOw0KCQkJCSRxdWVyeSAuPSAiLGl0ZW1fb3JkZXI9MSwgaWQ9Ii4kaXRlbS0+aWQ7DQoJCQl9ZWxzZXsNCgkJCQkvLyBuZXcgaXRlbXMgZ2V0IHRvIHRoZSBib3R0b20gLSBzbyB3ZSBtdXN0IHNldCB0aGUgaXRlbV9vcmRlciB0byB0aGUgbnVtYmVyIG9mIGl0ZW1zICsgMQ0KCQkJCSRpdGVtX29yZGVyID0gJHRoaXMtPmNvdW50c29tZXRoaW5nKCJtZWRpYWZpbGUiLCJpZCIsYXJyYXkoInBhcmVudCI9PiRpdGVtLT5wYXJlbnQpKSArIDE7DQoJCQkJJHF1ZXJ5IC49ICIsaXRlbV9vcmRlcj0iLiRpdGVtX29yZGVyLiIsIGlkPSIuJGl0ZW0tPmlkOw0KCQkJfQ0KCQl9DQoJCSRkYi0+RXhlY3V0ZSgkcXVlcnksICR2YWx1ZXMpOw0KDQoJaWYoaXNzZXQoJHBhcmFtc1siZmVhZGRfb2xkcGFyZW50Il0pICYmICRwYXJhbXNbImZlYWRkX29sZHBhcmVudCJdICE9ICRpdGVtLT5wYXJlbnQpew0KCQkvLyB0aGUgaXRlbSBpcyBjaGFuZ2luZyBwYXJlbnQsIGFuZCB3ZSdyZSBvcmRlcmluZyBieSBwYXJlbnRzDQoJCQ0KCQlpZigkdGhpcy0+R2V0UHJlZmVyZW5jZSgibmV3aXRlbXNmaXJzdF9tZWRpYWZpbGUiLGZhbHNlKSl7DQoJCQkvLyBuZXcgaXRlbXMgZ2V0IHRvIHRoZSB0b3ANCgkJCQ0KCQkJLy8gVVBEQVRFIFRIRSBPUkRFUiBPRiBUSEUgSVRFTVMgV0lUSCBUSEUgT0xEIFBBUkVOVA0KCQkJJHF1ZXJ5ID0gIlVQREFURSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2F2cGxheWVyX21lZGlhZmlsZSBTRVQgaXRlbV9vcmRlcj0oaXRlbV9vcmRlci0xKSBXSEVSRSBpdGVtX29yZGVyID4gPyBBTkQgcGFyZW50PT8iOw0KCQkJJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGl0ZW0tPml0ZW1fb3JkZXIsICRwYXJhbXNbImZlYWRkX29sZHBhcmVudCJdKSk7DQoJCQkvLyBHRVQgTkVXIElURU0gT1JERVINCgkJCSRpdGVtLT5pdGVtX29yZGVyID0gJHRoaXMtPmNvdW50c29tZXRoaW5nKCJtZWRpYWZpbGUiLCJpZCIsYXJyYXkoInBhcmVudCI9PiRpdGVtLT5wYXJlbnQpKSArIDE7DQoJCQkkcXVlcnkgPSAiVVBEQVRFICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfYXZwbGF5ZXJfbWVkaWFmaWxlIFNFVCBpdGVtX29yZGVyPT8gV0hFUkUgaWQ9PyI7DQoJCQkkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkaXRlbS0+aXRlbV9vcmRlciwgJGl0ZW0tPmlkKSk7DQoNCgkJfWVsc2V7DQoNCgkJCS8vIFVQREFURSBUSEUgT1JERVIgT0YgVEhFIElURU1TIFdJVEggVEhFIE9MRCBQQVJFTlQNCgkJCSRxdWVyeSA9ICJVUERBVEUgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9hdnBsYXllcl9tZWRpYWZpbGUgU0VUIGl0ZW1fb3JkZXI9KGl0ZW1fb3JkZXItMSkgV0hFUkUgaXRlbV9vcmRlciA+ID8gQU5EIHBhcmVudD0/IjsNCgkJCSRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRpdGVtLT5pdGVtX29yZGVyLCAkcGFyYW1zWyJmZWFkZF9vbGRwYXJlbnQiXSkpOw0KCQkJLy8gVVBEQVRFIE5FVyBQQVJFTlQNCgkJCSRxdWVyeSA9ICJVUERBVEUgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9hdnBsYXllcl9tZWRpYWZpbGUgU0VUIGl0ZW1fb3JkZXI9KGl0ZW1fb3JkZXIrMSkgV0hFUkUgcGFyZW50PT8iOw0KCQkJJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGl0ZW0tPnBhcmVudCkpOw0KCQkJLy8gR0VUIE5FVyBJVEVNIE9SREVSDQoJCQkkaXRlbS0+aXRlbV9vcmRlciA9IDE7DQoJCQkkcXVlcnkgPSAiVVBEQVRFICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfYXZwbGF5ZXJfbWVkaWFmaWxlIFNFVCBpdGVtX29yZGVyPT8gV0hFUkUgaWQ9PyI7DQoJCQkkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkaXRlbS0+aXRlbV9vcmRlciwgJGl0ZW0tPmlkKSk7DQoJCQ0KCQl9DQoJfQ0KDQoNCgkJaWYoaXNzZXQoJGl0ZW0tPmlkKSAmJiBpc3NldCgkX0ZJTEVTKSAmJiBpc3NldCgkX0ZJTEVTWyRpZC4iZmVmaWxlX21lZGlhZmlsZSJdKSAmJiAkX0ZJTEVTWyRpZC4iZmVmaWxlX21lZGlhZmlsZSJdWyJuYW1lIl0gIT0gIiIpew0KCQkJaWYoJGZpbGVtYXhzaXplICYmICRmaWxlbWF4c2l6ZSA+IDAgJiYgJF9GSUxFU1skaWQuImZlZmlsZV9tZWRpYWZpbGUiXVsic2l6ZSJdID4gJGZpbGVtYXhzaXplKXsNCgkJCQllY2hvICc8ZGl2IGNsYXNzPSJmZWFkZF9mb3JtX21lc3NhZ2UiPicuJHRoaXMtPkxhbmcoImVycm9yX2ZpbGV0b29iaWciKS4iPC9kaXY+IjsNCgkJCX1lbHNlew0KCQkJCSRleHRlbnNpb24gPSBzdHJ0b2xvd2VyKHN1YnN0cihzdHJyY2hyKCRfRklMRVNbJGlkLiJmZWZpbGVfbWVkaWFmaWxlIl1bIm5hbWUiXSwgIi4iKSwxKSk7DQoJCQkJJGFsbG93ZWRleHQgPSBmYWxzZTsNCgkJCQlpZiggISRhbGxvd2VkZXh0IHx8IGluX2FycmF5KCRleHRlbnNpb24sICRhbGxvd2VkZXh0KSApew0KCQkJCQlpZiggJGZpbGVwYXRoID0gJHRoaXMtPnBsVXBsb2FkRmlsZSgkX0ZJTEVTWyRpZC4iZmVmaWxlX21lZGlhZmlsZSJdLCAibWVkaWEiLCBmYWxzZSwgZmFsc2UpICl7DQoJCQkJCQkkdGhpcy0+cGxBc3NpZ25GaWxlKCRmaWxlcGF0aCwgImF2cGxheWVyX21lZGlhZmlsZSIsICRpdGVtLT5pZCwgIm1lZGlhZmlsZSIsIGZhbHNlLCBmYWxzZSk7DQoJCQkJCX0NCgkJCQl9DQoJCQl9DQoJCX0NCgkJaWYoaXNzZXQoJGl0ZW0tPmlkKSAmJiBpc3NldCgkX0ZJTEVTKSAmJiBpc3NldCgkX0ZJTEVTWyRpZC4iZmVmaWxlX3BpY3R1cmUiXSkgJiYgJF9GSUxFU1skaWQuImZlZmlsZV9waWN0dXJlIl1bIm5hbWUiXSAhPSAiIil7DQoJCQlpZigkZmlsZW1heHNpemUgJiYgJGZpbGVtYXhzaXplID4gMCAmJiAkX0ZJTEVTWyRpZC4iZmVmaWxlX3BpY3R1cmUiXVsic2l6ZSJdID4gJGZpbGVtYXhzaXplKXsNCgkJCQllY2hvICc8ZGl2IGNsYXNzPSJmZWFkZF9mb3JtX21lc3NhZ2UiPicuJHRoaXMtPkxhbmcoImVycm9yX2ZpbGV0b29iaWciKS4iPC9kaXY+IjsNCgkJCX1lbHNlew0KCQkJCSRleHRlbnNpb24gPSBzdHJ0b2xvd2VyKHN1YnN0cihzdHJyY2hyKCRfRklMRVNbJGlkLiJmZWZpbGVfcGljdHVyZSJdWyJuYW1lIl0sICIuIiksMSkpOw0KCQkJCSRhbGxvd2VkZXh0ID0gZmFsc2U7DQoJCQkJaWYoICEkYWxsb3dlZGV4dCB8fCBpbl9hcnJheSgkZXh0ZW5zaW9uLCAkYWxsb3dlZGV4dCkgKXsNCgkJCQkJaWYoICRmaWxlcGF0aCA9ICR0aGlzLT5wbFVwbG9hZEZpbGUoJF9GSUxFU1skaWQuImZlZmlsZV9waWN0dXJlIl0sICIiLCAiMTIweDEwMCIsIGZhbHNlKSApew0KCQkJCQkJJHRoaXMtPnBsQXNzaWduRmlsZSgkZmlsZXBhdGgsICJhdnBsYXllcl9tZWRpYWZpbGUiLCAkaXRlbS0+aWQsICJwaWN0dXJlIiwgIiIsIGZhbHNlKTsNCgkJCQkJfQ0KCQkJCX0NCgkJCX0NCgkJfQ0KCQkNCg0KCQlpZigkZGItPkFmZmVjdGVkX1Jvd3MoKSl7DQoJCQlpZigkdGhpcy0+R2V0UHJlZmVyZW5jZSgic2VhcmNobW9kdWxlX2luZGV4X21lZGlhZmlsZSIsZmFsc2UpKXsNCgkJCQkvLyBJRiBBTllUSElORyBXQVMgTU9ESUZJRUQsIFdFIE1VU1QgVVBEQVRFIFRIRSBTRUFSQ0ggSU5ERVggQU5EIFNFTkQgQU4gRVZFTlQuLi4NCgkJCQlpZihpc3NldCgkZXZlbnQpKQkkdGhpcy0+U2VuZEV2ZW50KCRldmVudCwgYXJyYXkoIndoYXQiPT4ibWVkaWFmaWxlIiwgIml0ZW1pZCIgPT4gJGl0ZW0tPmlkLCAiYWxpYXMiPT4kaXRlbS0+YWxpYXMpKTsNCgkJCQkkbW9kdWxlID0mICR0aGlzLT5HZXRNb2R1bGVJbnN0YW5jZSgiU2VhcmNoIik7DQoJCQkJaWYoJG1vZHVsZSkgew0KCQkJCQlkZWJ1Z19idWZmZXIoIlNFQVJIQyBJTkRFWCBXQVMgVVBEQVRFRCAiLl9fTElORV9fKTsNCgkJCQkJJHRleHQgPSAiJGl0ZW0tPm5hbWUiOw0KCQkJCQkkbW9kdWxlLT5BZGRXb3JkcygkdGhpcy0+R2V0TmFtZSgpLCAkaXRlbS0+aWQsICJtZWRpYWZpbGUiLCAkdGV4dCwgTlVMTCk7DQoJCQkJfQ0KCQkJfQ0KCQkJZWNobyAnPGRpdiBjbGFzcz0iZmVhZGRfZm9ybV9tZXNzYWdlIj4nLiR0aGlzLT5MYW5nKCJtZXNzYWdlX21vZGlmaWVkIikuIjwvZGl2PiI7DQoJCX0NCgkJDQoJCS8vIGlmIGEgY29udGVudCByZWRpcmVjdGlvbiBoYXMgYmVlbiBzZXQsIHdlIHJlZGlyZWN0Li4uDQoJCSRyZWRpcmVjdF90b19pZCA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCJmZV9hZnRlcnN1Ym1pdCIsLTEpOw0KCQlpZiggJHJlZGlyZWN0X3RvX2lkID4gMSApCSR0aGlzLT5SZWRpcmVjdENvbnRlbnQoJHJlZGlyZWN0X3RvX2lkKTsNCgl9DQoJLy8gRU5EIE9GIEZPUk0gU1VCTUlTU0lPTg0KCQ0KCWlmKCFpc3NldCgkcGFyYW1zWyJmZWFkZF9pZCJdKSAmJiBpc3NldCgkaXRlbS0+aWQpKQkkcGFyYW1zWyJmZWFkZF9pZCJdID0gJGl0ZW0tPmlkOw0KfQ0KDQppZigkaXRlbS0+aWQpIHsNCgkvLyBpZiB3ZSBhcmUgd29ya2luZyBvbiBhbiBpdGVtIHRoYXQgZXhpc3RzLCB3ZSBsb2FkIGl0LiBXZSBtdXN0IGRvIHRoaXMgZXZlbiB3aGVuIHRoZSBmb3JtIGlzIHN1Ym1pdHRlZCwgb3RoZXJ3aXNlIHdlIHdvbid0IGhhdmUgdGhlIGZpbGUgZmllbGRzDQoJJGl0ZW1zID0gJHRoaXMtPmdldF9sZXZlbF9tZWRpYWZpbGUoYXJyYXkoImlkIj0+JGl0ZW0tPmlkKSk7DQoJJGl0ZW0gPSAkaXRlbXNbMF07DQp9DQoNCg0KLyogIyMgUFJFUEFSSU5HIFNNQVJUWSBFTEVNRU5UUw0KQ3JlYXRlSW5wdXRUZXh0IDogKGlkLG5hbWUsdmFsdWUsc2l6ZSxtYXhsZW5ndGgpDQpDcmVhdGVUZXh0QXJlYSA6ICh3eXNpd3lnLGlkLHRleHQsbmFtZSkNCkNyZWF0ZUlucHV0U2VsZWN0TGlzdCA6IChpZCxuYW1lLGl0ZW1zLHNlbGVjdGVkaXRlbXMsc2l6ZSkNCkNyZWF0ZUlucHV0RHJvcGRvd24gOiAoaWQsbmFtZSxpdGVtcyxzaW5kZXgsc3ZhbHVlKQ0KKi8NCg0KaWYoISRpdGVtLT5pZCB8fCAkYWxsb3duYW1lY2hhbmdlKXsNCgkkbmFtZWlucHV0ID0gJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsImZlYWRkX25hbWUiLCRpdGVtLT5pZD8kaXRlbS0+bmFtZToiIiw1MCw2NCk7DQp9ZWxzZXsNCgkkbmFtZWlucHV0ID0gJGl0ZW0tPm5hbWUuJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwgImZlYWRkX25hbWUiLCAkaXRlbS0+bmFtZSk7DQp9DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oIm5hbWVfbGFiZWwiLCAkdGhpcy0+TGFuZygibmFtZSIpKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbigibmFtZV9pbnB1dCIsICRuYW1laW5wdXQpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJtZWRpYWZpbGVfbGFiZWwiLCAkdGhpcy0+TGFuZygibWVkaWFmaWxlX21lZGlhZmlsZSIpKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbigibWVkaWFmaWxlX2lucHV0IiwgKChpc3NldCgkaXRlbS0+bWVkaWFmaWxlKSAmJiAkaXRlbS0+bWVkaWFmaWxlKT8kaXRlbS0+bWVkaWFmaWxlLT5waWMuJzxhIGhyZWY9IicuJGl0ZW0tPm1lZGlhZmlsZS0+dXJsLiciID4nLiRpdGVtLT5tZWRpYWZpbGUtPmZpbGVwYXRoLiI8L2E+ICgiLiRpdGVtLT5tZWRpYWZpbGUtPnNpemVfd2Zvcm1hdC4iKTxici8+IjoiIikuKCRhbGxvd2ZpbGVzPyR0aGlzLT5DcmVhdGVGaWxlVXBsb2FkSW5wdXQoJGlkLCJmZWZpbGVfbWVkaWFmaWxlIik6IiIpKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbigicGljdHVyZV9sYWJlbCIsICR0aGlzLT5MYW5nKCJtZWRpYWZpbGVfcGljdHVyZSIpKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbigicGljdHVyZV9pbnB1dCIsICgoaXNzZXQoJGl0ZW0tPnBpY3R1cmUpICYmICRpdGVtLT5waWN0dXJlKT8nPGltZyBzcmM9IicuJGl0ZW0tPnBpY3R1cmUtPnVybC4nIiAvPjxici8+JzoiIikuKCRhbGxvd2ZpbGVzPyR0aGlzLT5DcmVhdGVGaWxlVXBsb2FkSW5wdXQoJGlkLCJmZWZpbGVfcGljdHVyZSIpOiIiKSk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oInVzZXJkZWZpbmVkMl9sYWJlbCIsICR0aGlzLT5MYW5nKCJtZWRpYWZpbGVfdXNlcmRlZmluZWQyIikpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJ1c2VyZGVmaW5lZDJfaW5wdXQiLCAkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsImZlYWRkX3VzZXJkZWZpbmVkMiIsJHVzZXJkZWZpbmVkMm9wdGlvbnMsLTEsJGl0ZW0tPmlkPyRpdGVtLT51c2VyZGVmaW5lZDI6MCkpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJwYXJlbnRfbGFiZWwiLCAkdGhpcy0+TGFuZygicGxheWVyIikpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJwYXJlbnRfaW5wdXQiLCAkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsImZlYWRkX3BhcmVudCIsJHBhcmVudG9wdGlvbnMsLTEsJGl0ZW0tPmlkPyRpdGVtLT5wYXJlbnQ6MCkpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJpdGVtYWxpYXMiLGlzc2V0KCRpdGVtLT5hbGlhcyk/IihhbGlhcyA6ICIuJGl0ZW0tPmFsaWFzLiIpIjpmYWxzZSk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oImFsaWFzX2lucHV0IiwgZmFsc2UpOw0KDQokdGhpcy0+c21hcnR5LT5hc3NpZ24oImVkaXR0aXRsZSIsICR0aGlzLT5MYW5nKCJlZGl0X21lZGlhZmlsZSIpKTsNCg0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJzdWJtaXQiLCAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAiZmVhZGRzdWJtaXQiLCAkdGhpcy0+TGFuZygic3VibWl0IikpKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbigiY2FuY2VsIiwgJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgImZlYWRkY2FuY2VsIiwgJHRoaXMtPkxhbmcoImNhbmNlbCIpKSk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oImNhcHRjaGFfaW1hZ2UiLCAkY2FwdGNoYT8kY2FwdGNoYS0+Z2V0Q2FwdGNoYSgpOmZhbHNlKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbigiY2FwdGNoYV9pbnB1dCIsICRjYXB0Y2hhPyR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCJjYXB0Y2hhX2lucHV0IiwiIiwzMCwxMCk6ZmFsc2UpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJjYXB0Y2hhX3Byb21wdCIsICRjYXB0Y2hhPyR0aGlzLT5MYW5nKCJwcm9tcHRfY2FwdGNoYSIpOmZhbHNlKTsNCg0KDQokdGhpcy0+c21hcnR5LT5hc3NpZ24oIml0ZW0iLCAkaXRlbSk7DQoNCg0KLy8gRElTUExBWUlORw0KCQ0KZWNobyAkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwgIkZFYWRkQiIsICRyZXR1cm5pZCwgInBvc3QiLCAibXVsdGlwYXJ0L2Zvcm0tZGF0YSIpOw0KZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCJmcm9udGVuZF9hZGRfbWVkaWFmaWxlLnRwbCIpOw0KDQppZihpc3NldCgkaXRlbSkgJiYgaXNzZXQoJGl0ZW0tPmlkKSl7DQoJZWNobyAkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCAiZmVhZGRfaWQiLCAkaXRlbS0+aWQpOw0KCWlmKGlzc2V0KCRpdGVtLT5wYXJlbnQpKSBlY2hvICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsICJmZWFkZF9vbGRwYXJlbnQiLCAkaXRlbS0+cGFyZW50KTsNCgllY2hvICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsICJmZWFkZF9pdGVtX29yZGVyIiwgJGl0ZW0tPml0ZW1fb3JkZXIpOw0KfQ0KZWNobyAkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpOw0KDQo/Pg==]]></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+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRpdGVtaWQpKTsNCgkJCX0NCgkJfWVsc2VpZihpc3NldCgkcGFyYW1zWyJjaGlsZCJdKSAmJiAkcGFyYW1zWyJjaGlsZCJdICE9ICIiKXsNCgkJCS8vIHRoaXMgbGV2ZWwgZG9lc24ndCBzaGFyZSBpdHMgY2hpbGRyZW4uLi4gd2UgZGVsZXRlIHRoZSBpdGVtJ3MgY2hpbGRyZW4NCgkJCSRjaGlsZHRhYmxlID0gY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfIi4kcGFyYW1zWyJjaGlsZCJdOw0KCQkJJHF1ZXJ5ID0gIkRFTEVURSBGUk9NICRjaGlsZHRhYmxlIFdIRVJFIHBhcmVudCA9ID8iOw0KCQkJJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGl0ZW1pZCkpOw0KCQl9DQoJCWlmKGlzc2V0KCRwYXJhbXNbInNoYXJlZGJ5cGFyZW50cyJdKSAmJiAkcGFyYW1zWyJzaGFyZWRieXBhcmVudHMiXSl7DQoJCQkvLyB0aGlzIGl0ZW0gaXMgc2hhcmVkIGJ5IGl0cyBwYXJlbnRzLi4uIHdlIGRlbGV0ZSBsaW5rcyBmcm9tIHBhcmVudHMgdG8gdGhpcyBjaGlsZA0KCQkJaWYoJHBhcmVudGxldmVsID0gJHRoaXMtPmdldF9uZXh0bGV2ZWwoJHBhcmFtc1sibGV2ZWxuYW1lIl0sIGZhbHNlKSl7DQoJCQkJJGxpbmt0YWJsZSA9IGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2F2cGxheWVyXyIuJHBhcmVudGxldmVsLiJfaGFzXyIuJHBhcmFtc1sibGV2ZWxuYW1lIl07DQoJCQkJJHF1ZXJ5ID0gIkRFTEVURSBGUk9NICRsaW5rdGFibGUgV0hFUkUgIi4kcGFyYW1zWyJsZXZlbG5hbWUiXS4iX2lkPT8iOw0KCQkJCSRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRpdGVtaWQpKTsNCgkJCX0NCgkJfQ0KCQkNCgkJaWYoaXNzZXQoJHBhcmFtc1siZmlsZXMiXSkgJiYgJHBhcmFtc1siZmlsZXMiXSAhPSAiIiAmJiAkdGhpcy0+R2V0UHJlZmVyZW5jZSgiZGVsZXRlX2ZpbGVzIixmYWxzZSkgKXsNCgkJCSRmaWxlZmllbGRzID0gZXhwbG9kZSgiLCIsJHBhcmFtc1siZmlsZXMiXSk7DQoJCQkkcXVlcnkgPSAiU0VMRUNUICogRlJPTSAkZGJ0YWJsZSBXSEVSRSBpZCA9ID8iOw0KCQkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGl0ZW1pZCkpOw0KCQkJaWYoJGRicmVzdWx0ICYmICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpew0KCQkJCWZvcmVhY2goJGZpbGVmaWVsZHMgYXMgJGZpZWxkKXsNCgkJCQkJaWYoJHJvd1skZmllbGRdICE9ICIiICYmICRyb3dbJGZpZWxkXSAhPSAiLyIpew0KCQkJCQkJJGZpbGVwYXRoID0gJGdDbXMtPmNvbmZpZ1sidXBsb2Fkc19wYXRoIl0uKHN1YnN0cigkcm93WyJmaWxlcGF0aCJdLDAsMSk9PSIvIj8iIjoiLyIpLiRyb3dbJGZpZWxkXTsNCgkJCQkJCSR0bXBleHAgPSBleHBsb2RlKCIvIiwkcm93WyRmaWVsZF0pOw0KCQkJCQkJJGZpbGVuYW1lID0gJHRtcGV4cFtjb3VudCgkdG1wZXhwKSAtMV07DQoJCQkJCQkkdGh1bWJwYXRoID0gc3RyX3JlcGxhY2UoJGZpbGVuYW1lLCJwbHRodW1iXyIuJGZpbGVuYW1lLCRmaWxlcGF0aCk7DQoJCQkJCQlpZihmaWxlX2V4aXN0cygkdGh1bWJwYXRoKSkJdW5saW5rKCR0aHVtYnBhdGgpOw0KCQkJCQkJaWYoZmlsZV9leGlzdHMoJGZpbGVwYXRoKSkJdW5saW5rKCRmaWxlcGF0aCk7DQoJCQkJCX0NCgkJCQl9DQoJCQl9DQoJCX0NCgkJLy8gaWYgdGhlIGxldmVsIGhhcyBmaWVsZHMgb2YgdGhlIHR5cGUgIlVuZGVmaW5lZCBhbW91bnQgb2YgZmlsZXMiLCB3ZSBkZWxldGUgdGhlIGZpbGVzDQoJCWlmKGlzc2V0KCRwYXJhbXNbImFkZGZpbGVzIl0pICYmICRwYXJhbXNbImFkZGZpbGVzIl0gIT0gIiIpew0KCQkJJGZpZWxkcyA9IGV4cGxvZGUoIiwiLCRwYXJhbXNbImFkZGZpbGVzIl0pOw0KCQkJaWYoY291bnQoJGZpZWxkcykgPiAwKXsNCgkJCQkkd2hlcmUgPSAiIjsNCgkJCQkkdmFsdWVzID0gYXJyYXkoKTsNCgkJCQlmb3JlYWNoKCRmaWVsZHMgYXMgJGZpZWxkKXsNCgkJCQkJJHdoZXJlIC49ICgkd2hlcmUgPT0gIiI/IiI6IiBPUiAiKS4iIGZpZWxkbmFtZT0/IjsNCgkJCQkJJHZhbHVlc1tdID0gJGZpZWxkOw0KCQkJCX0NCgkJCQkkYWRkZmlsZXN0YWJsZSA9IGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2F2cGxheWVyX211bHRpcGxlZmlsZXNmaWVsZHMiOw0KDQoJCQkJaWYoJHRoaXMtPkdldFByZWZlcmVuY2UoImRlbGV0ZV9maWxlcyIsZmFsc2UpKXsNCgkJCQkJJHF1ZXJ5ID0gIlNFTEVDVCAqIEZST00gJGFkZGZpbGVzdGFibGUgV0hFUkUgKCR3aGVyZSkgQU5EIGl0ZW1pZD0iLiRpdGVtaWQ7DQoJCQkJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksICR2YWx1ZXMpOw0KCQkJCQl3aGlsZSgkZGJyZXN1bHQgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSl7DQoJCQkJCQkkZmlsZXBhdGggPSAkZ0Ntcy0+Y29uZmlnWyJ1cGxvYWRzX3BhdGgiXS4oc3Vic3RyKCRyb3dbImZpbGVwYXRoIl0sMCwxKT09Ii8iPyIiOiIvIikuJHJvd1siZmlsZXBhdGgiXTsNCgkJCQkJCWlmKGZpbGVfZXhpc3RzKCRmaWxlcGF0aCkpCXVubGluaygkZmlsZXBhdGgpOw0KCQkJCQl9DQoJCQkJfQ0KCQkJCSRxdWVyeSA9ICJERUxFVEUgRlJPTSAkYWRkZmlsZXN0YWJsZSBXSEVSRSAoJHdoZXJlKSBBTkQgaXRlbWlkPSIuJGl0ZW1pZDsNCgkJCQkkZGItPkV4ZWN1dGUoJHF1ZXJ5LCAkdmFsdWVzKTsNCgkJCX0NCgkJfQ0KCQkJDQoJCQ0KCQkkcXVlcnkgPSAiREVMRVRFIEZST00gJGRidGFibGUgV0hFUkUgaWQgPSA/IExJTUlUIDEiOw0KCQkkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkaXRlbWlkKSk7DQoNCgkJLy8gVVBEQVRFIFRIRSBPUkRFUiBPRiBUSEUgSVRFTVMNCgkJJHF1ZXJ5ID0gIlVQREFURSAkZGJ0YWJsZSBTRVQgaXRlbV9vcmRlcj0oaXRlbV9vcmRlci0xKSBXSEVSRSBpdGVtX29yZGVyID4gPyAiLiR3cGFyZW50Ow0KCQkkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkb3JkZXIpKTsNCg0KCQlpZihpc3NldCgkcGFyYW1zWyJsZXZlbG5hbWUiXSkpCSR0aGlzLT5TZW5kRXZlbnQoImF2cGxheWVyX2RlbGV0ZWQiLCBhcnJheSgid2hhdCI9PiRwYXJhbXNbImxldmVsbmFtZSJdKSk7DQoJCSRuZXdwYXJhbXNbIm1vZHVsZV9tZXNzYWdlIl0gPSAkdGhpcy0+bGFuZygibWVzc2FnZV9kZWxldGVkIik7DQoJCWJyZWFrOwkNCg0KCWNhc2UgInVwIjoNCgkJaWYgKCRvcmRlciAhPSAxKXsNCgkJCSRxdWVyeSA9ICJVUERBVEUgJGRidGFibGUgU0VUIGl0ZW1fb3JkZXI9KGl0ZW1fb3JkZXIrMSkgV0hFUkUgaXRlbV9vcmRlciA9ID8gJHdwYXJlbnQgTElNSVQgMTsiOw0KCQkJJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJG9yZGVyLTEpKTsNCgkJCSRxdWVyeSA9ICJVUERBVEUgJGRidGFibGUgU0VUIGl0ZW1fb3JkZXI9KGl0ZW1fb3JkZXItMSkgV0hFUkUgaWQgPSA/IExJTUlUIDE7IjsNCgkJCSRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRpdGVtaWQpKTsNCgkJfQ0KCQlicmVhazsNCgkJDQoJY2FzZSAiZG93biI6DQoJCSRxdWVyeSA9ICJVUERBVEUgJGRidGFibGUgU0VUIGl0ZW1fb3JkZXI9KGl0ZW1fb3JkZXItMSkgV0hFUkUgaXRlbV9vcmRlciA9ID8gJHdwYXJlbnQgTElNSVQgMTsiOw0KCQlpZiggJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJG9yZGVyKzEpKSApew0KCQkJJHF1ZXJ5ID0gIlVQREFURSAkZGJ0YWJsZSBTRVQgaXRlbV9vcmRlcj0oaXRlbV9vcmRlcisxKSBXSEVSRSBpZCA9ID8gTElNSVQgMTsiOw0KCQkJJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGl0ZW1pZCkpOw0KCQl9DQoJCWJyZWFrOw0KfQ0KDQokdGhpcy0+UmVkaXJlY3QoJGlkLCAiZGVmYXVsdGFkbWluIiwgJHJldHVybmlkLCAkbmV3cGFyYW1zKTsNCj8+]]></data>
	</file>
	<file>
	  <filename>/action.reorder.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoIWlzc2V0KCRnQ21zKSkgZXhpdDsKCiRkYiA9ICR0aGlzLT5HZXREYigpOwokbGV2ZWxhcnJheSA9ICR0aGlzLT5nZXRfbGV2ZWxhcnJheSgpOwokb3JkZXJlZGJ5cGFyZW50ID0gYXJyYXkoInBsYXllciIsIm1lZGlhZmlsZSIpOwppZihpc3NldCgkcGFyYW1zWyJjYW5jZWwiXSkpewoJJHRoaXMtPlJlZGlyZWN0KCRpZCwiZGVmYXVsdGFkbWluIiwkcmV0dXJuaWQpOwp9ZWxzZWlmKGlzc2V0KCRwYXJhbXNbInN1Ym1pdHJlb3JkZXIiXSkpewoJZXhwbG9kZSgiLCIsJHBhcmFtc1sibmV3b3JkZXIiXSk7Cgkkb3JkZXIgPSBhcnJheSgpOwoJJGxhc3RpZCA9IGFycmF5KCk7Cglmb3JlYWNoKGV4cGxvZGUoIiwiLCRwYXJhbXNbIm5ld29yZGVyIl0pIGFzICRpdGVtKXsKCQlsaXN0KCRsZXZlbCwkaXRlbWlkKSA9IGV4cGxvZGUoIl8iLCRpdGVtKTsKCQkkbGFzdGlkWyRsZXZlbF0gPSAkaXRlbWlkOwoJCWlmKCFpc3NldCgkb3JkZXJbJGxldmVsXSkpCSRvcmRlclskbGV2ZWxdPWFycmF5KCk7CgkJaWYoJGxldmVsPT0xKXsKCQkJJG9yZGVyWzFdW109JGl0ZW1pZDsKCQl9ZWxzZXsKCQkJaWYoIWlzc2V0KCRvcmRlclskbGV2ZWxdWyRsYXN0aWRbJGxldmVsLTFdXSkpCSRvcmRlclskbGV2ZWxdWyRsYXN0aWRbJGxldmVsLTFdXT1hcnJheSgpOwoJCQkkb3JkZXJbJGxldmVsXVskbGFzdGlkWyRsZXZlbC0xXV1bXSA9ICRpdGVtaWQ7CgkJfQoJfQoJZm9yZWFjaCgkb3JkZXIgYXMgJGtleT0+JGl0ZW1zKXsKCQkkbGV2ZWwgPSAkbGV2ZWxhcnJheVska2V5LTFdOwoJCSRpdGVtX29yZGVyID0gMTsKCQlpZigka2V5PT0xKXsKCQkJZm9yZWFjaCgkaXRlbXMgYXMgJGl0ZW0pewoJCQkJJHF1ZXJ5ID0gIlVQREFURSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2F2cGxheWVyXyIuJGxldmVsLiIgU0VUIGl0ZW1fb3JkZXI9PyBXSEVSRSBpZD0/IExJTUlUIDEiOwoJCQkJJGRiLT5FeGVjdXRlKCRxdWVyeSxhcnJheSgkaXRlbV9vcmRlciwkaXRlbSkpOwoJCQkJJGl0ZW1fb3JkZXIrKzsKCQkJfQoJCX1lbHNlewoJCQlmb3JlYWNoKCRpdGVtcyBhcyAkcGFyZW50PT4kY2hpbGRyZW4pewoJCQkJaWYoaW5fYXJyYXkoJGxldmVsLCAkb3JkZXJlZGJ5cGFyZW50KSkJJGl0ZW1fb3JkZXIgPSAxOwoJCQkJZm9yZWFjaCgkY2hpbGRyZW4gYXMgJGNoaWxkKXsKCQkJCQkkcXVlcnkgPSAiVVBEQVRFICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfYXZwbGF5ZXJfIi4kbGV2ZWwuIiBTRVQgaXRlbV9vcmRlcj0/IFdIRVJFIGlkPT8gTElNSVQgMSI7CgkJCQkJJGRiLT5FeGVjdXRlKCRxdWVyeSxhcnJheSgkaXRlbV9vcmRlciwkY2hpbGQpKTsKCQkJCQkkaXRlbV9vcmRlcisrOwoJCQkJfQoJCQl9CQkJCgkJCQkKCQl9CgkJCgl9CgkkdGhpcy0+UmVkaXJlY3QoJGlkLCJkZWZhdWx0YWRtaW4iLCRyZXR1cm5pZCxhcnJheSgibW9kdWxlX21lc3NhZ2UiPT4kdGhpcy0+TGFuZygibWVzc2FnZV9tb2RpZmllZCIpKSk7Cn0KCmVjaG8gIjxoMT4iLiR0aGlzLT5MYW5nKCJyZW9yZGVyIikuIjwvaDE+IjsKJGkgPSAwOwokc2VsZWN0ID0gIiI7CiR0YWJsZXMgPSAiIjsKJG9yZGVyID0gIiI7CndoaWxlKCRpIDwgY291bnQoJGxldmVsYXJyYXkpKXsKCSRsZXZlbCA9ICRsZXZlbGFycmF5WyRpXTsKCSRpKys7Cgkkc2VsZWN0IC49ICgkc2VsZWN0PT0iIj8iIjoiLCAiKS4idGFibGUiLiRpLiIuaWQgdGFibGUiLiRpLiJfaWQsIHRhYmxlIi4kaS4iLm5hbWUgdGFibGUiLiRpLiJfbmFtZSI7CglpZigkaSA9PSAxKXsKCQkkdGFibGVzID0gY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfYXZwbGF5ZXJfIi4kbGV2ZWwuIiB0YWJsZSIuJGk7Cgl9ZWxzZXsKCQkkdGFibGVzIC49ICIgTEVGVCBKT0lOICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfYXZwbGF5ZXJfIi4kbGV2ZWwuIiB0YWJsZSIuJGkuICIgT04gdGFibGUiLigkaS0xKS4iLmlkPXRhYmxlIi4kaS4iLnBhcmVudCI7Cgl9Cgkkb3JkZXIgLj0gKCRvcmRlcj09IiI/IiI6IiwgIikuInRhYmxlIi4kaS4iLml0ZW1fb3JkZXIiOwp9CiRxdWVyeSA9ICJTRUxFQ1QgJHNlbGVjdCBGUk9NICR0YWJsZXMgT1JERVIgQlkgJG9yZGVyIjsKJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSk7CgokbGFzdCA9IGFycmF5KCk7CiRsaXN0cyA9IGFycmF5KCk7CiRjb250YWlubWVudCA9IGFycmF5KCk7CiRwYXJzZWxldmVsID0gMTsKZWNobyAkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwgInJlb3JkZXIiLCAkcmV0dXJuaWQsICdwb3N0JywgJycsIGZhbHNlLCAnJywgYXJyYXkoKSwgJyBvbnN1Ym1pdD0icmV0dXJuIGN0bG1tX3N1Ym1pdF9yZW9yZGVyKCk7IicpOwp3aGlsZSgkcGFyc2VsZXZlbCA8PSAkaSl7CgkkbGFzdFskcGFyc2VsZXZlbF0gPSBmYWxzZTsKCSRsaXN0c1skcGFyc2VsZXZlbF0gPSBhcnJheSgpOwoJJGNvbnRhaW5tZW50WyRwYXJzZWxldmVsXSA9ICIiOwoJJHBhcnNlbGV2ZWwrKzsKfQplY2hvICI8cD4iLiR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsInN1Ym1pdHJlb3JkZXIiLGxhbmcoInN1Ym1pdCIpKS4iICIuJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwicmVzZXRvcmRlciIsJHRoaXMtPkxhbmcoInJlc2V0b3JkZXIiKSkuIiAiLiR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsImNhbmNlbCIsbGFuZygiY2FuY2VsIikpLiI8L3A+IjsKJGN1cnJlbnRsZXZlbCA9IDE7CmVjaG8gJzx1bCBjbGFzcz0ic29ydGFibGVMaXN0IiBpZD0iY3RsbW1fYmlnc29ydGxpc3QiPic7CndoaWxlKCRkYnJlc3VsdCAmJiAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKXsKCSRwYXJzZWxldmVsID0gMTsKCXdoaWxlKCRwYXJzZWxldmVsIDw9ICRpKXsKCQlpZigkcm93WyJ0YWJsZSIuJHBhcnNlbGV2ZWwuIl9pZCJdICE9ICRsYXN0WyRwYXJzZWxldmVsXSl7CgkJCWlmKCRjdXJyZW50bGV2ZWwgPT0gJHBhcnNlbGV2ZWwpewoJCQkJaWYoJGxhc3RbJGN1cnJlbnRsZXZlbF0pCWVjaG8gIjwvbGk+IjsKCQkJfWVsc2VpZigkY3VycmVudGxldmVsID4gJHBhcnNlbGV2ZWwpewoJCQkJd2hpbGUoJGN1cnJlbnRsZXZlbCA+ICRwYXJzZWxldmVsKXsKCQkJCQllY2hvICI8L2xpPjwvdWw+PC9saT4iOwoJCQkJCSRjdXJyZW50bGV2ZWwtLTsKCQkJCX0KCQkJfWVsc2VpZigkY3VycmVudGxldmVsIDwgJHBhcnNlbGV2ZWwpewoJCQkJJGxpc3RpZCA9ICJsaXN0XyIuJGxldmVsYXJyYXlbJHBhcnNlbGV2ZWxdLiJfIi4kcm93WyJ0YWJsZSIuJHBhcnNlbGV2ZWwuIl9pZCJdOwoJCQkJJGN1cnJlbnRsZXZlbCsrOwoJCQkJZWNobyAnPHVsIGlkPSInLiRsaXN0aWQuJyIgY2xhc3M9InNvcnRhYmxlTGlzdCI+JzsKCQkJCSRsaXN0c1skcGFyc2VsZXZlbF1bXSA9ICRsaXN0aWQ7CgkJCQkkY29udGFpbm1lbnRbJHBhcnNlbGV2ZWxdIC49ICgkY29udGFpbm1lbnRbJHBhcnNlbGV2ZWxdPT0iIj8iIjoiLCIpLiciJy4kbGlzdGlkLiciJzsKCQkJfQoJCQllY2hvICc8bGkgaWQ9ImN0bG1tbGV2ZWwnLiRwYXJzZWxldmVsLidfJy4kcm93WyJ0YWJsZSIuJHBhcnNlbGV2ZWwuIl9pZCJdLiciPicuJHJvd1sidGFibGUiLiRwYXJzZWxldmVsLiJfbmFtZSJdOwoJCQkkbGFzdFskcGFyc2VsZXZlbF0gPSAkcm93WyJ0YWJsZSIuJHBhcnNlbGV2ZWwuIl9pZCJdOwoJCX0KCQkkcGFyc2VsZXZlbCsrOwoJfQp9CmVjaG8gIjwvbGk+IjsKd2hpbGUoJGN1cnJlbnRsZXZlbCA+IDEpewoJZWNobyAiPC91bD48L2xpPiI7CgkkY3VycmVudGxldmVsLS07Cn0KZWNobyAiPC91bD4iOwplY2hvICI8cD4iLiR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsInN1Ym1pdHJlb3JkZXIiLGxhbmcoInN1Ym1pdCIpKS4iICIuJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwicmVzZXRvcmRlciIsJHRoaXMtPkxhbmcoInJlc2V0b3JkZXIiKSkuIiAiLiR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsImNhbmNlbCIsbGFuZygiY2FuY2VsIikpLiI8L3A+IjsKZWNobyAkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCJuZXdvcmRlciIsIiIsJyBpZD0iY3RsbW1fbmV3b3JkZXIiJyk7CmVjaG8gJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKTsKCiRyZXN0cmljdGVkID0gJHRoaXMtPkdldFByZWZlcmVuY2UoInJlc3RyaWN0X3Blcm1pc3Npb25zIixmYWxzZSk7CmlmKCRyZXN0cmljdGVkICYmICR0aGlzLT5DaGVja1Blcm1pc3Npb24oImF2cGxheWVyX2FkdmFuY2VkIikpCSRyZXN0cmljdGVkID0gZmFsc2U7CgplY2hvICc8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Cic7CmlmKCEkcmVzdHJpY3RlZCB8fCAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCJwcm9kY2F0YWxvZ3VlX21hbmFnZV8iLiRsZXZlbGFycmF5WzBdKSkJZWNobyAnU29ydGFibGUuY3JlYXRlKCJjdGxtbV9iaWdzb3J0bGlzdCIpOwonOwoKZm9yZWFjaCgkbGlzdHMgYXMgJGxldmVsbnVtYmVyPT4kbGV2ZWwpewoJaWYoISRyZXN0cmljdGVkIHx8ICR0aGlzLT5DaGVja1Blcm1pc3Npb24oImF2cGxheWVyX21hbmFnZV8iLiRsZXZlbGFycmF5WyRsZXZlbG51bWJlci0xXSkpewoJCWZvcmVhY2goJGxldmVsIGFzICRsaXN0KXsKCQkJLyoKCQkJICogd2UgZG9uJ3QgdXNlIGNvbnRhaW5tZW50IHlldCBiZWNhdXNlIHdlIGRvbid0IHdhbnQgdG8gZGVhbCB3aXRoIGNoYW5naW5nIHBhcmVudHMuLi4geWV0Li4uCgkJCSAqIGVjaG8gJ1NvcnRhYmxlLmNyZWF0ZSgiJy4kbGlzdC4nIicuKGNvdW50KCRsZXZlbCk+MT8iLHtjb250YWlubWVudDpbIi4kY29udGFpbm1lbnRbJGxldmVsbnVtYmVyXS4iXSwgZHJvcE9uRW1wdHk6ZmFsc2V9IjoiIikuIik7CgkJCSAqICI7CgkJCSAqLwoJCQllY2hvICdTb3J0YWJsZS5jcmVhdGUoIicuJGxpc3QuJyIpOwoJJzsKCQl9Cgl9Cn0KZWNobyAnCmZ1bmN0aW9uIGN0bG1tX3N1Ym1pdF9yZW9yZGVyKCl7Cgl2YXIgbmV3b3JkZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY3RsbW1fbmV3b3JkZXIiKTsKCXZhciBsaXN0bm9kZXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY3RsbW1fYmlnc29ydGxpc3QiKS5nZXRFbGVtZW50c0J5VGFnTmFtZSgibGkiKTsKCWZvcihpPTA7aTxsaXN0bm9kZXMubGVuZ3RoO2krKyl7CgkJaWYobmV3b3JkZXIudmFsdWUgIT0gIiIpIG5ld29yZGVyLnZhbHVlICs9ICIsIjsKCQluZXdvcmRlci52YWx1ZSArPSBsaXN0bm9kZXNbaV0uaWQuc3Vic3RyKDEwKTsKCX0KCXJldHVybiB0cnVlOwkKfQpkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiJy4kaWQuJ21vZHVsZWZvcm1fMSIpLm9uc3VibWl0ID0gZnVuY3Rpb24oKXsKCXJldHVybiBjdGxtbV9zdWJtaXRfcmVvcmRlcigpOwp9Cjwvc2NyaXB0Pic7Cgo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.search.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoIWlzc2V0KCRnQ21zKSkgZXhpdDsKCiRsZXZlbGFycmF5ID0gJHRoaXMtPmdldF9sZXZlbGFycmF5KCk7CiRmaW5hbGxldmVsID0gIm1lZGlhZmlsZSI7Cgokc2VhcmNobW9kZSA9IChpc3NldCgkcGFyYW1zWyJzZWFyY2htb2RlIl0pICYmIGluX2FycmF5KCRwYXJhbXNbInNlYXJjaG1vZGUiXSwgYXJyYXkoInNpbXBsZSIsImFkdmFuY2VkIikpKT8kcGFyYW1zWyJzZWFyY2htb2RlIl06ImFkdmFuY2VkIjsKCmlmKGlzc2V0KCRwYXJhbXNbInN1Ym1pdHNlYXJjaCJdKSl7CgkvLyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgkvLyAjIFNFQVJDSCBSRVNVTFRTCgkkaW5saW5lID0gKGlzc2V0KCRwYXJhbXNbImlubGluZSJdKSAmJiAkcGFyYW1zWyJpbmxpbmUiXSk/dHJ1ZTpmYWxzZTsKCSRsaW5rcmV0dXJuaWQgPSAoaXNzZXQoJHBhcmFtc1siZGV0YWlscGFnZSJdKSk/JHRoaXMtPmdldF9wYWdlaWQoJHBhcmFtc1siZGV0YWlscGFnZSJdKTpmYWxzZTsKCWlmKCEkbGlua3JldHVybmlkKQkkbGlua3JldHVybmlkID0gJHJldHVybmlkOwoJJHdoYXQgPSAkcGFyYW1zWyJ3aGF0Il07CgkkbGltaXQgPSBpc3NldCgkcGFyYW1zWyJsaW1pdCJdKT8kcGFyYW1zWyJsaW1pdCJdOjA7CglpZihpc3NldCgkcGFyYW1zWyJuYnBlcnBhZ2UiXSkgJiYgJHBhcmFtc1sibmJwZXJwYWdlIl0gPiAwKXsKCQkkbmJwZXJwYWdlID0gKGludCkgJHBhcmFtc1sibmJwZXJwYWdlIl07CgkJJGxpbWl0ID0gKCgoaXNzZXQoJHBhcmFtc1sicGFnZWluZGV4Il0pPyRwYXJhbXNbInBhZ2VpbmRleCJdOjEpLTEpICogJG5icGVycGFnZSkuIiwiLiRuYnBlcnBhZ2U7Cgl9ZWxzZXsKCQkkbmJwZXJwYWdlID0gZmFsc2U7Cgl9CgkKCSRlbXB0eXRlbXBsYXRlID0gJHRoaXMtPkdldFByZWZlcmVuY2UoImVtcHR5dGVtcGxhdGUiLCIqKiIpOwoJCgkvLyB3ZSBwcmVwYXJlIHRoZSAiZG8gYW5vdGhlciBzZWFyY2giIGxpbmssIGtlZXBpbmcgdGhlIHNlYXJjaCBwYXJhbWV0ZXJzCgkkbmV3cGFyYW1zID0gYXJyYXkoIndoYXQiPT4kd2hhdCwgInNlYXJjaG1vZGUiPT4kc2VhcmNobW9kZSk7CglpZihpc3NldCgkcGFyYW1zWyJsaXN0dGVtcGxhdGUiXSkpCSRuZXdwYXJhbXNbImxpc3R0ZW1wbGF0ZSJdID0gJHBhcmFtc1sibGlzdHRlbXBsYXRlIl07CglpZihpc3NldCgkcGFyYW1zWyJsaW1pdCJdKSkJCQkkbmV3cGFyYW1zWyJsaW1pdCJdID0gJHBhcmFtc1sibGltaXQiXTsKCWlmKGlzc2V0KCRwYXJhbXNbImlubGluZSJdKSkJCSRuZXdwYXJhbXNbImlubGluZSJdID0gJHBhcmFtc1siaW5saW5lIl07CglpZihpc3NldCgkcGFyYW1zWyJvcmRlcmJ5Il0pKQkJJG5ld3BhcmFtc1sib3JkZXJieSJdID0gJHBhcmFtc1sib3JkZXJieSJdOwoJaWYoaXNzZXQoJHBhcmFtc1sibmJwZXJwYWdlIl0pKQkJJG5ld3BhcmFtc1sibmJwZXJwYWdlIl0gPSAkcGFyYW1zWyJuYnBlcnBhZ2UiXTsKCWlmKGlzc2V0KCRwYXJhbXNbImRldGFpbHBhZ2UiXSkpCSRuZXdwYXJhbXNbImRldGFpbHBhZ2UiXSA9ICRwYXJhbXNbImRldGFpbHBhZ2UiXTsKCSRiYWNrbGluayA9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgInNlYXJjaCIsICRyZXR1cm5pZCwgJHRoaXMtPkxhbmcoInNlYXJjaGFnYWluIiksICRuZXdwYXJhbXMsICIiLCBmYWxzZSwgJGlubGluZSwgIiIsIGZhbHNlLCBmYWxzZSk7CQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJiYWNrbGluayIsJGJhY2tsaW5rKTsKCSR0aGlzLT5zbWFydHktPmFzc2lnbigiYnJlYWRjcnVtYnMiLGZhbHNlKTsKCSR0aGlzLT5zbWFydHktPmFzc2lnbigicGFyZW50b2JqIixmYWxzZSk7CgkKCSRtdWx0aXBsZWxpc3RmaWVsZHMgPSBhcnJheSgpOwoJCglpZigkc2VhcmNobW9kZSA9PSAiYWR2YW5jZWQiKXsKCQkvLyBBRFZBTkNFRCBTRUFSQ0gKCQkKCQkkZGIgPSAkdGhpcy0+R2V0RGIoKTsKCQkKCQkvLyB3ZSBwYXJzZSB0aGUga2V5d29yZHMKCQkkd2hlcmUgPSAkdGhpcy0+Z2V0V2hlcmVGcm9tUGFyYW1zKCRwYXJhbXMsIHRydWUpOwoJCWxpc3QoJHdoZXJlY2xhdXNlLCAkd2hlcmV2YWx1ZXMpID0gJHRoaXMtPmJ1aWxkV2hlcmUoJHdoZXJlLCAkd2hhdCk7CgkJCgkJJGdldGZ1bmN0aW9uID0gImdldF9sZXZlbF8iLiR3aGF0OwoJCS8vIHdlIGRvIHRoZSBxdWVyeQoJCSRpdGVtbGlzdCA9ICR0aGlzLT4kZ2V0ZnVuY3Rpb24oYXJyYXkoKSwgZmFsc2UsICIiLCAiIiwgaXNzZXQoJHBhcmFtc1sib3JkZXJieSJdKT8kcGFyYW1zWyJvcmRlcmJ5Il06MCwgJGxpbWl0LCAkd2hlcmVjbGF1c2UsICR3aGVyZXZhbHVlcyk7CgkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJpdGVtY291bnQiLGNvdW50KCRpdGVtbGlzdCkpOwoJCQoJCWlmKGNvdW50KCRpdGVtbGlzdCkgPiAwKXsKCQkKCQkJJHRvdGFsID0gJG5icGVycGFnZT8kdGhpcy0+Y291bnRzb21ldGhpbmcoJHdoYXQsImlkIixhcnJheSgpLCR3aGVyZWNsYXVzZSwgJHdoZXJldmFsdWVzKTpmYWxzZTsKCQkJJHRoaXMtPnBhZ2luYXRlKCR3aGF0LCR0b3RhbCwkaWQsJHJldHVybmlkLCRwYXJhbXMsInNlYXJjaCIpOwoJCQkKCQkJLy8gd2UgbXVzdCBidWlsZCBhIGRldGFpbCBsaW5rIGZvciBlYWNoIHJlc3VsdCBlbGVtZW50CgkJCSRuZXdsaXN0ID0gYXJyYXkoKTsKCQkJZm9yZWFjaCgkaXRlbWxpc3QgYXMgJGl0ZW0pewoJCQkJJGl0ZW0gPSAkdGhpcy0+YWRkZnJvbnRlbmR1cmxzKCRpdGVtLCRwYXJhbXMsJGlkLCRsaW5rcmV0dXJuaWQpOwoJCQkJJGl0ZW0tPmlzX3NlbGVjdGVkID0gZmFsc2U7CgkJCQlhcnJheV9wdXNoKCRuZXdsaXN0LCAkaXRlbSk7CgkJCX0KCgkJCSR0aGlzLT5zbWFydHktPmFzc2lnbigiaXRlbWxpc3QiLCRuZXdsaXN0KTsKCQkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJsZXZlbHRpdGxlIiwkdGhpcy0+TGFuZygkd2hhdC4iX3BsdXJhbCIpKTsKCQkJCgkJfWVsc2V7CgkJCSR0aGlzLT5wYWdpbmF0ZSgkd2hhdCwwLCRpZCwkcmV0dXJuaWQsJHBhcmFtcywic2VhcmNoIik7CgkJCSR0aGlzLT5zbWFydHktPmFzc2lnbigiaXRlbWxpc3QiLCRuZXdsaXN0KTsKCQkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJlcnJvcl9tc2ciLCR0aGlzLT5MYW5nKCJlcnJvcl9ub2l0ZW1mb3VuZCIpKTsKCQl9CgkJCgkJLy8gd2UgcmV0cmlldmUgdGhlIGRpc3BsYXkgdGVtcGxhdGUKCQlpZihjb3VudCgkaXRlbWxpc3QpID09IDAgJiYgJGVtcHR5dGVtcGxhdGUgIT0gIioqIil7CgkJCWVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZUZyb21EYXRhYmFzZSgkZW1wdHl0ZW1wbGF0ZSk7CgkJfWVsc2V7CgkJCWlmKGlzc2V0KCRwYXJhbXNbImxpc3R0ZW1wbGF0ZSJdKSkJCSR0ZW1wbGF0ZSA9ICR0aGlzLT5HZXRUZW1wbGF0ZSgkcGFyYW1zWyJsaXN0dGVtcGxhdGUiXSwgJHRoaXMtPkdldE5hbWUoKSk7CgkJCWlmKCFpc3NldCgkdGVtcGxhdGUpIHx8ICEkdGVtcGxhdGUpewoJCQkJJHRlbXBsYXRlbmFtZSA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCJzZWFyY2hyZXN1bHRzdGVtcGxhdGUiLCIqKiIpOwoJCQkJaWYoJHRlbXBsYXRlbmFtZSA9PSAiKioiKQkkdGVtcGxhdGVuYW1lID0gJHRoaXMtPkdldFByZWZlcmVuY2UoImxpc3R0ZW1wbGF0ZV8iLiR3aGF0KTsKCQkJCSR0ZW1wbGF0ZSA9ICR0aGlzLT5HZXRUZW1wbGF0ZSgkdGVtcGxhdGVuYW1lLCAkdGhpcy0+R2V0TmFtZSgpKTsKCQkJfQkJCgkJCWVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZUZyb21EYXRhKCR0ZW1wbGF0ZSk7CgkJfQoJCQoJfWVsc2V7CgkJLy8gU0lNUExFIFNFQVJDSAoJCQoJCSR0ZW1wbGF0ZSA9IGZhbHNlOwoJCSRsZXZlbHMgPSAoJHdoYXQgPT0gIi1hbGwiKT8kbGV2ZWxhcnJheTphcnJheSgkd2hhdCk7CgkJCgkJLy8gd2UgcmV0cmlldmUgdGhlIGRpc3BsYXkgdGVtcGxhdGUKCQkvLyBpZiB0aGUgdXNlciBoYXMgYXNrZWQgZm9yIGEgc3BlY2lmaWMgZGlzcGxheSB0ZW1wbGF0ZSwgd2Ugd2lsbCB1c2UgaXQgZm9yIGV2ZXJ5IGNhdGVnb3J5IDoKCQlpZihpc3NldCgkcGFyYW1zWyJsaXN0dGVtcGxhdGUiXSkpCQkkdGVtcGxhdGUgPSAkdGhpcy0+R2V0VGVtcGxhdGUoJHBhcmFtc1sibGlzdHRlbXBsYXRlIl0sICR0aGlzLT5HZXROYW1lKCkpOwoJCWlmKCFpc3NldCgkdGVtcGxhdGUpIHx8ICEkdGVtcGxhdGUpewoJCQkkdGVtcGxhdGVuYW1lID0gJHRoaXMtPkdldFByZWZlcmVuY2UoInNlYXJjaHJlc3VsdHN0ZW1wbGF0ZSIsIioqIik7CgkJCWlmKCR0ZW1wbGF0ZW5hbWUgPT0gIioqIil7CgkJCQlpZihjb3VudCgkbGV2ZWxzKSA9PSAxKXsKCQkJCQkkdGVtcGxhdGVuYW1lID0gJHRoaXMtPkdldFByZWZlcmVuY2UoImxpc3R0ZW1wbGF0ZV8iLiRsZXZlbHNbMF0pOwoJCQkJCSR0ZW1wbGF0ZSA9ICR0aGlzLT5HZXRUZW1wbGF0ZSgkdGVtcGxhdGVuYW1lLCAkdGhpcy0+R2V0TmFtZSgpKTsKCQkJCX1lbHNlewoJCQkJCSR0ZW1wbGF0ZSA9IGZhbHNlOwoJCQkJfQoJCQl9ZWxzZXsKCQkJCSR0ZW1wbGF0ZSA9ICR0aGlzLT5HZXRUZW1wbGF0ZSgkdGVtcGxhdGVuYW1lLCAkdGhpcy0+R2V0TmFtZSgpKTsKCQkJfQoJCX0KCgkJCgkJZm9yZWFjaCgkbGV2ZWxzIGFzICRsZXZlbCl7CgkJCSR3aGVyZWNsYXVzZSA9ICIiOwoJCQkkZmllbGRzID0gJHRoaXMtPmdldF9sZXZlbHNlYXJjaGZpZWxkcygkbGV2ZWwpOwoJCQkka2V5d29yZHMgPSAkdGhpcy0+cGFyc2VrZXl3b3JkcyhodG1sX2VudGl0eV9kZWNvZGUoJHBhcmFtc1sic2VhcmNoZmllbGQiXSkpOwoJCQlmb3JlYWNoKCRmaWVsZHMgYXMgJGZpZWxkKXsKCQkJCWZvcmVhY2goJGtleXdvcmRzIGFzICRrZXl3b3JkKXsKCQkJCQkkd2hlcmVjbGF1c2UgLj0gKCR3aGVyZWNsYXVzZSA9PSAiIj8iIjoiIE9SICIpLiJBLiIuJGZpZWxkLiIgTElLRSAnJSIuYWRkc2xhc2hlcygka2V5d29yZCkuIiUnIjsKCQkJCX0KCQkJfQoJCQkkd2hlcmVjbGF1c2UgPSAiQS5hY3RpdmU9MSIuKCR3aGVyZWNsYXVzZSA9PSAiIj8iIjoiIEFORCAoIi4kd2hlcmVjbGF1c2UuIikiKTsKCQkJJGdldGZ1bmN0aW9uID0gImdldF9sZXZlbF8iLiRsZXZlbDsKCQkJJGl0ZW1saXN0ID0gJHRoaXMtPiRnZXRmdW5jdGlvbihhcnJheSgpLCBmYWxzZSwgIiIsICIiLCBpc3NldCgkcGFyYW1zWyJvcmRlcmJ5Il0pPyRwYXJhbXNbIm9yZGVyYnkiXTowLCAkbGltaXQsICR3aGVyZWNsYXVzZSk7CgkJCSR0aGlzLT5zbWFydHktPmFzc2lnbigiaXRlbWNvdW50Iixjb3VudCgkaXRlbWxpc3QpKTsKCQkJCgkJCWlmKGNvdW50KCRpdGVtbGlzdCkgPiAwKXsKCgkJCQkkdG90YWwgPSAkbmJwZXJwYWdlPyR0aGlzLT5jb3VudHNvbWV0aGluZygkbGV2ZWwsImlkIixhcnJheSgpLCR3aGVyZWNsYXVzZSwgYXJyYXkoKSk6ZmFsc2U7CgkJCQkkdGhpcy0+cGFnaW5hdGUoJHdoYXQsJHRvdGFsLCRpZCwkcmV0dXJuaWQsJHBhcmFtcywic2VhcmNoIik7CgkJCQkKCQkJCS8vIHdlIG11c3QgYnVpbGQgYSBkZXRhaWwgbGluayBmb3IgZWFjaCByZXN1bHQgZWxlbWVudAoJCQkJJG5ld2xpc3QgPSBhcnJheSgpOwoJCQkJZm9yZWFjaCgkaXRlbWxpc3QgYXMgJGl0ZW0pewoJCQkJCSRpdGVtID0gJHRoaXMtPmFkZGZyb250ZW5kdXJscygkaXRlbSwkcGFyYW1zLCRpZCwkbGlua3JldHVybmlkKTsKCQkJCQkkaXRlbS0+aXNfc2VsZWN0ZWQgPSBmYWxzZTsKCQkJCQlhcnJheV9wdXNoKCRuZXdsaXN0LCAkaXRlbSk7CgkJCQl9CgkJCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oIml0ZW1saXN0IiwkbmV3bGlzdCk7CgkJCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oImxldmVsdGl0bGUiLCR0aGlzLT5MYW5nKCRsZXZlbC4iX3BsdXJhbCIpKTsKCQkJCQkJCQoJCQkJaWYoJHRlbXBsYXRlID09IEZBTFNFKXsKCQkJCQllY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoInNlYXJjaF9nZW5lcmFscmVzdWx0cy50cGwiKTsKCQkJCX1lbHNlewoJCQkJCWVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZUZyb21EYXRhKCR0ZW1wbGF0ZSk7CQkJCQoJCQkJfQoJCQkJCgkJCX1lbHNlewoJCQkJJHRoaXMtPnBhZ2luYXRlKCR3aGF0LDAsJGlkLCRyZXR1cm5pZCwkcGFyYW1zLCJzZWFyY2giKTsKCQkJCSR0aGlzLT5zbWFydHktPmFzc2lnbigiaXRlbWxpc3QiLCRpdGVtbGlzdCk7CgkJCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oImVycm9yX21zZyIsJHRoaXMtPkxhbmcoImVycm9yX25vaXRlbWZvdW5kIikpOwoJCQl9CgkJCWlmKGNvdW50KCRpdGVtbGlzdCkgPT0gMCAmJiAkZW1wdHl0ZW1wbGF0ZSAhPSAiKioiKXsKCQkJCWVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZUZyb21EYXRhYmFzZSgkZW1wdHl0ZW1wbGF0ZSk7CQkJCQoJCQl9ZWxzZWlmKCR0ZW1wbGF0ZSA9PSBGQUxTRSl7CgkJCQllY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoInNlYXJjaF9nZW5lcmFscmVzdWx0cy50cGwiKTsKCQkJfWVsc2V7CgkJCQllY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGVGcm9tRGF0YSgkdGVtcGxhdGUpOwoJCQl9CgkJfQoJCQoJfQoJCgkvLyAjIEVORCBTRUFSQ0ggUkVTVUxUUwoJLy8gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKfWVsc2V7CgkKCS8vICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCS8vICMgU0VBUkNIIEZPUk0JCgkKCSR3aGF0ID0gKGlzc2V0KCRwYXJhbXNbIndoYXQiXSkgJiYgaW5fYXJyYXkoJHBhcmFtc1sid2hhdCJdLCRsZXZlbGFycmF5KSk/JHBhcmFtc1sid2hhdCJdOiItYWxsIjsKCWlmKCRzZWFyY2htb2RlID09ICJhZHZhbmNlZCIgJiYgJHdoYXQgPT0gIi1hbGwiKQkJJHdoYXQgPSAkZmluYWxsZXZlbDsKCgllY2hvICR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoJGlkLCAic2VhcmNoIiwgJHJldHVybmlkKTsKCWVjaG8gJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwgIndoYXQiLCAkd2hhdCk7CgllY2hvICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsICJzZWFyY2htb2RlIiwgJHNlYXJjaG1vZGUpOwoJaWYoaXNzZXQoJHBhcmFtc1sibGlzdHRlbXBsYXRlIl0pKQllY2hvICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsICJsaXN0dGVtcGxhdGUiLCAkcGFyYW1zWyJsaXN0dGVtcGxhdGUiXSk7CglpZihpc3NldCgkcGFyYW1zWyJsaW1pdCJdKSkJZWNobyAkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCAibGltaXQiLCAkcGFyYW1zWyJsaW1pdCJdKTsKCWlmKGlzc2V0KCRwYXJhbXNbImlubGluZSJdKSkJZWNobyAkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCAiaW5saW5lIiwgJHBhcmFtc1siaW5saW5lIl0pOwoJaWYoaXNzZXQoJHBhcmFtc1sib3JkZXJieSJdKSkJZWNobyAkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCAib3JkZXJieSIsICRwYXJhbXNbIm9yZGVyYnkiXSk7CglpZihpc3NldCgkcGFyYW1zWyJuYnBlcnBhZ2UiXSkpCQllY2hvICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsICJuYnBlcnBhZ2UiLCAkcGFyYW1zWyJuYnBlcnBhZ2UiXSk7CglpZihpc3NldCgkcGFyYW1zWyJkZXRhaWxwYWdlIl0pKQllY2hvICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsICJkZXRhaWxwYWdlIiwgJHBhcmFtc1siZGV0YWlscGFnZSJdKTsKCSR0aGlzLT5zbWFydHktPmFzc2lnbigic2VhcmNodGl0bGUiLCAkdGhpcy0+TGFuZygic2VhcmNodGl0bGUiKSk7CgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oIndoYXQiLCAoJHdoYXQgPT0gIi1hbGwiKT9mYWxzZTokdGhpcy0+TGFuZygkd2hhdCkpOwoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJzdWJtaXQiLCAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAic3VibWl0c2VhcmNoIiwgJHRoaXMtPkxhbmcoInNlYXJjaGJ0biIpKSk7CgoJaWYoJHNlYXJjaG1vZGUgPT0gInNpbXBsZSIpewoJCS8vIFdFIEFSRSBET0lORyBBIFNJTVBMRSBTRUFSQ0gKCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oInNlYXJjaGZpZWxkIiwgJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsInNlYXJjaGZpZWxkIiwiIiw1MCkpOwoJCWVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgic2VhcmNoLnRwbCIpOwoJCQoJfWVsc2V7CgkJLy8gV0UgQVJFIERPSU5HIEFOIEFEVkFOQ0VEIFNFQVJDSAoKCQkkdGhpcy0+Y3JlYXRlRmllbGRGb3JtKCR3aGF0LCAkaWQsIHRydWUpOwoKCQllY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoInNlYXJjaF8iLiR3aGF0LiIudHBsIik7CgkJCgl9CgkKCWVjaG8gJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKTsKCQoJLy8gIyBFTkQgU0VBUkNIIEZPUk0KCS8vICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMJCgkKfQo/Pg==]]></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>/avplayer.module.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIE1vZHVsZTogYXZwbGF5ZXINCiMgVmVyc2lvbjogMS4zLCANCiMNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwOCBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpDQojIFRoaXMgcHJvamVjdCJzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnDQojDQojIFRoaXMgbW9kdWxlIHdhcyBjcmVhdGVkIHdpdGggQ1RMTW9kdWxlTWFrZXIgMS44LjkuMw0KIyBDVExNb2R1bGVNYWtlciB3YXMgY3JlYXRlZCBieSBQaWVycmUtTHVjIEdlcm1haW4gYW5kIGlzIHJlbGVhc2VkIHVuZGVyIEdOVQ0KIyBodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL2N0bG1vZHVsZW1ha2VyDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIw0KIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQ0KIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQ0KIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcg0KIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLg0KIw0KIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQ0KIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQpjbGFzcyBhdnBsYXllciBleHRlbmRzIENNU01vZHVsZQ0Kew0KCXZhciAkY3VycmVudHRyZWUgPSBmYWxzZTsNCgl2YXIgJGN1cnJlbnRwYWdlaW5kZXggPSAxOw0KCXZhciAkcGxjdXJyZW50ID0gYXJyYXkoKTsNCg0KCWZ1bmN0aW9uIEdldE5hbWUoKQ0KCXsNCgkJcmV0dXJuICJhdnBsYXllciI7DQoJfQ0KDQoJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCgkgICBHZXRGcmllbmRseU5hbWUoKQ0KCSAgIFRoaXMgY2FuIHJldHVybiBhbnkgc3RyaW5nLCBwcmVmZXJhYmx5IGEgbG9jYWxpemVkIG5hbWUNCgkgICBvZiB0aGUgbW9kdWxlLiBUaGlzIGlzIHRoZSBuYW1lIHRoYXQicyBzaG93biBpbiB0aGUNCgkgICBBZG1pbiBNZW51cyBhbmQgc2VjdGlvbiBwYWdlcyAoaWYgdGhlIG1vZHVsZSBoYXMgYW4gYWRtaW4NCgkgICBjb21wb25lbnQpLg0KCSAgIA0KCSAgIFNlZSB0aGUgbm90ZSBvbiBsb2NhbGl6YXRpb24gYXQgdGhlIHRvcCBvZiB0aGlzIGZpbGUuDQoJICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KCWZ1bmN0aW9uIEdldEZyaWVuZGx5TmFtZSgpDQoJew0KCQlyZXR1cm4gJHRoaXMtPkxhbmcoImZyaWVuZGx5bmFtZSIpOw0KCX0NCgkNCgkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KCSAgIEdldFZlcnNpb24oKQ0KCSAgIFRoaXMgY2FuIHJldHVybiBhbnkgc3RyaW5nLCBwcmVmZXJhYmx5IGEgbnVtYmVyIG9yDQoJICAgc29tZXRoaW5nIHRoYXQgbWFrZXMgc2Vuc2UgZm9yIGRlc2lnbmF0aW5nIGEgdmVyc2lvbi4NCgkgICBUaGUgQ01TIHdpbGwgdXNlIHRoaXMgdG8gaWRlbnRpZnkgd2hldGhlciBvciBub3QNCgkgICB0aGUgaW5zdGFsbGVkIHZlcnNpb24gb2YgdGhlIG1vZHVsZSBpcyBjdXJyZW50LCBhbmQNCgkgICB0aGUgbW9kdWxlIHdpbGwgdXNlIGl0IHRvIGZpZ3VyZSBvdXQgaG93IHRvIHVwZ3JhZGUNCgkgICBpdHNlbGYgaWYgcmVxdWVzdGVkLgkgICANCgkgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQoJZnVuY3Rpb24gR2V0VmVyc2lvbigpDQoJew0KCQlyZXR1cm4gIjEuMy4xIjsNCgl9DQoNCg0KCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoJICAgR2V0RGVwZW5kZW5jaWVzKCkNCgkgICBZb3VyIG1vZHVsZSBtYXkgbmVlZCBhbm90aGVyIG1vZHVsZSB0byBhbHJlYWR5IGJlIGluc3RhbGxlZA0KCSAgIGJlZm9yZSB5b3UgY2FuIGluc3RhbGwgaXQuDQoJICAgVGhpcyBtZXRob2QgcmV0dXJucyBhIGxpc3Qgb2YgdGhvc2UgZGVwZW5kZW5jaWVzIGFuZA0KCSAgIG1pbmltdW0gdmVyc2lvbiBudW1iZXJzIHRoYXQgdGhpcyBtb2R1bGUgcmVxdWlyZXMuDQoJICAgDQoJICAgSXQgc2hvdWxkIHJldHVybiBhbiBoYXNoLCBlZy4NCgkgICByZXR1cm4gYXJyYXkoInNvbWVtb2R1bGUiPT4iMS4wIiwgIm90aGVybW9kdWxlIj0+IjEuMSIpOw0KCSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCglmdW5jdGlvbiBHZXREZXBlbmRlbmNpZXMoKQ0KCXsNCgkJcmV0dXJuIGFycmF5KCk7DQoJfQ0KDQoJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCgkgICBHZXRIZWxwKCkNCgkgICBUaGlzIHJldHVybnMgSFRNTCBpbmZvcm1hdGlvbiBvbiB0aGUgbW9kdWxlLg0KCSAgIFR5cGljYWxseSwgeW91ImxsIHdhbnQgdG8gaW5jbHVkZSBpbmZvcm1hdGlvbiBvbiBob3cgdG8NCgkgICB1c2UgdGhlIG1vZHVsZS4NCgkgICANCgkgICBTZWUgdGhlIG5vdGUgb24gbG9jYWxpemF0aW9uIGF0IHRoZSB0b3Agb2YgdGhpcyBmaWxlLg0KCSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCglmdW5jdGlvbiBHZXRIZWxwKCkNCgl7DQoJCXJldHVybiAkdGhpcy0+TGFuZygiaGVscCIpOw0KCX0NCg0KCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoJICAgR2V0QXV0aG9yKCkNCgkgICBUaGlzIHJldHVybnMgYSBzdHJpbmcgdGhhdCBpcyBwcmVzZW50ZWQgaW4gdGhlIE1vZHVsZQ0KCSAgIEFkbWluIGlmIHlvdSBjbGljayBvbiB0aGUgIkFib3V0IiBsaW5rLg0KCSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCglmdW5jdGlvbiBHZXRBdXRob3IoKQ0KCXsNCgkJcmV0dXJuICJNYXJ0aW4gV29vZHMiOw0KCQkvLyBvZiBjb3Vyc2UgeW91IG1heSBjaGFuZ2UgdGhpcywgYnV0IGl0IHdvdWxkIGJlIG5pY2UNCgkJLy8gdG8ga2VlcCBhIG1lbnRpb24gb2YgdGhlIENUTE1vZHVsZU1ha2VyIHNvbWV3aGVyZQ0KCX0NCg0KDQoJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCgkgICBHZXRBdXRob3JFbWFpbCgpDQoJICAgVGhpcyByZXR1cm5zIGEgc3RyaW5nIHRoYXQgaXMgcHJlc2VudGVkIGluIHRoZSBNb2R1bGUNCgkgICBBZG1pbiBpZiB5b3UgY2xpY2sgb24gdGhlICJBYm91dCIgbGluay4gSXQgaGVscHMgdXNlcnMNCgkgICBvZiB5b3VyIG1vZHVsZSBnZXQgaW4gdG91Y2ggd2l0aCB5b3UgdG8gc2VuZCBidWcgcmVwb3J0cywNCgkgICBxdWVzdGlvbnMsIGNhc2VzIG9mIGJlZXIsIGFuZC9vciBsYXJnZSBzdW1zIG9mIG1vbmV5Lg0KCSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCglmdW5jdGlvbiBHZXRBdXRob3JFbWFpbCgpDQoJew0KCQlyZXR1cm4gIm13Y291cnRlbmF5QHlhaG9vLmNvbSI7DQoJfQ0KDQoNCgkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KCSAgIElzUGx1Z2luTW9kdWxlKCkNCgkgICBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdHJ1ZSBvciBmYWxzZSwgZGVwZW5kaW5nIHVwb24NCgkgICB3aGV0aGVyIHVzZXJzIGNhbiBpbmNsdWRlIHRoZSBtb2R1bGUgaW4gYSBwYWdlIG9yDQoJICAgdGVtcGxhdGUgdXNpbmcgYSBzbWFydHkgdGFnIG9mIHRoZSBmb3JtDQoJICAge2Ntc19tb2R1bGUgbW9kdWxlPSJQcm9kIiBwYXJhbTE9dmFsIHBhcmFtMj12YWwuLi59DQoJICAgDQoJICAgSWYgeW91ciBtb2R1bGUgZG9lcyBub3QgZ2V0IGluY2x1ZGVkIGluIHBhZ2VzIG9yDQoJICAgdGVtcGxhdGVzLCByZXR1cm4gImZhbHNlIiBoZXJlLg0KCSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCglmdW5jdGlvbiBJc1BsdWdpbk1vZHVsZSgpDQoJew0KCQlyZXR1cm4gdHJ1ZTsNCgl9DQoNCg0KCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoJICAgSGFzQWRtaW4oKQ0KCSAgIFRoaXMgZnVuY3Rpb24gcmV0dXJucyBhIGJvb2xlYW4gdmFsdWUsIGRlcGVuZGluZyBvbg0KCSAgIHdoZXRoZXIgeW91ciBtb2R1bGUgYWRkcyBhbnl0aGluZyB0byB0aGUgQWRtaW4gYXJlYSBvZg0KCSAgIHRoZSBzaXRlLiBGb3IgdGhlIHJlc3Qgb2YgdGhlc2UgY29tbWVudHMsIEkibGwgYmUgY2FsbGluZw0KCSAgIHRoZSBhZG1pbiBwYXJ0IG9mIHlvdXIgbW9kdWxlIHRoZSAiQWRtaW4gUGFuZWwiIGZvcg0KCSAgIHdhbnQgb2YgYSBiZXR0ZXIgdGVybS4NCgkgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQoJZnVuY3Rpb24gSGFzQWRtaW4oKSB7CXJldHVybiB0cnVlOwl9DQoJZnVuY3Rpb24gR2V0QWRtaW5TZWN0aW9uKCkge3JldHVybiAiY29udGVudCI7fQ0KCWZ1bmN0aW9uIEdldEFkbWluRGVzY3JpcHRpb24oKSB7cmV0dXJuICR0aGlzLT5MYW5nKCJhZG1pbmRlc2NyaXB0aW9uIik7fQ0KDQoJZnVuY3Rpb24gVmlzaWJsZVRvQWRtaW5Vc2VyKCl7DQoJCXJldHVybiAoJHRoaXMtPkNoZWNrUGVybWlzc2lvbigiYXZwbGF5ZXJfbm9ybWFsdXNlciIpIHx8ICR0aGlzLT5DaGVja1Blcm1pc3Npb24oImF2cGxheWVyX2FkdmFuY2VkIikpOw0KCX0NCgkNCgkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KCSAgIE1vZHVsZSBDb25zdHJ1Y3RvciANCgktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KCWZ1bmN0aW9uIGF2cGxheWVyKCkNCgl7DQoJCWdsb2JhbCAkZ0NtczsNCiAgICAJJHNtYXJ0eSA9JiAkZ0Ntcy0+R2V0U21hcnR5KCk7DQoJCSRzbWFydHktPnJlZ2lzdGVyX2Z1bmN0aW9uKCJhdnBsYXllcl9icmVhZGNydW1icyIsIGFycmF5KCYkdGhpcywiZnVuY3Rpb25fbW9kYnJlYWRjcnVtYnMiKSk7DQoJCSRzbWFydHktPnJlZ2lzdGVyX2Z1bmN0aW9uKCJhdnBsYXllcl9nZXRfbGV2ZWxpdGVtIiwgYXJyYXkoJiR0aGlzLCJmdW5jdGlvbl9nZXRfbGV2ZWxpdGVtIikpOw0KCQlwYXJlbnQ6OkNNU01vZHVsZSgpOw0KCX0NCgkNCgkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KCSAgIFNldFBhcmFtZXRlcnMoKQ0KCSAgIFRoaXMgZnVuY3Rpb24gZW5hYmxlcyB5b3UgdG8gY3JlYXRlIG1hcHBpbmdzIGZvcg0KCSAgIHlvdXIgbW9kdWxlIHdoZW4gdXNpbmcgIlByZXR0eSBVcmxzIi4NCgkgICANCgkgICBUeXBpY2FsbHksIG1vZHVsZXMgY3JlYXRlIGludGVybmFsIGxpbmtzIHRoYXQgaGF2ZQ0KCSAgIGJpZyB1Z2x5IHN0cmluZ3MgYWxvbmcgdGhlIGxpbmVzIG9mOg0KCSAgIGluZGV4LnBocD9tYWN0PU1vZE5hbWUsY250bnQwMSxhY3Rpb25OYW1lLDAmY250bnQwMXBhcmFtMT0xJmNudG50MDFwYXJhbTI9MiZjbnRudDAxcmV0dXJuaWQ9Mw0KCSAgIA0KCSAgIFlvdSBtaWdodCBwcmVmZXIgdGhlc2UgdG8gbG9vayBsaWtlOg0KCSAgIC9Nb2R1bGVGdW5jdGlvbi8yLzMNCgkgICANCgkgICBUbyBkbyB0aGlzLCB5b3UgaGF2ZSB0byByZWdpc3RlciByb3V0ZXMgYW5kIG1hcA0KCSAgIHlvdXIgcGFyYW1ldGVycyBpbiBhIHdheSB0aGF0IHRoZSBBUEkgd2lsbCBiZSBhYmxlDQoJICAgdG8gdW5kZXJzdGFuZC4NCg0KCSAgIEFsc28gbm90ZSB0aGF0IGFueSBjYWxscyB0byBDcmVhdGVMaW5rIHdpbGwgbmVlZCB0bw0KCSAgIGJlIHVwZGF0ZWQgdG8gcGFzcyB0aGUgcHJldHR5IHVybCBwYXJhbWV0ZXIuDQoJICAgDQoJICAgU2luY2UgdGhlIFNrZWxldG9uIGRvZXNuInQgcmVhbGx5IGNyZWF0ZSBhbnkgbGlua3MsDQoJICAgdGhlIHNlY3Rpb24gYmVsb3cgaXMgY29tbWVudGVkIG91dCwgYnV0IHlvdSBjYW4NCgkgICB1c2UgaXQgdG8gZmlndXJlIG91dCBwcmV0dHkgdXJscy4NCgkgICANCgkgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KCWZ1bmN0aW9uIFNldFBhcmFtZXRlcnMoKQ0KCXsNCg0KCQkvLyB0aGVzZSBhcmUgZm9yIGludGVybmFsIHByZXR0eSBVUkxTLg0KCQkvLyB5b3UgbWF5IGNoYW5nZSB0aGVzZSwgYnV0IHlvdSB3aWxsIGFsc28gbmVlZCB0byBjaGFuZ2UgdGhlIEJ1aWxkUHJldHR5VVJMcyBmdW5jdGlvbiBiZWxvdyBhY2NvcmRpbmdseQ0KCQkvLyBzZWUgRkFRIGZvciBtb3JlIGluZm8gb24gdGhpcw0KCQkkZGVmYWN0ID0gYXJyYXkoImFjdGlvbiI9PiJkZWZhdWx0Iik7DQoJCSR0aGlzLT5SZWdpc3RlclJvdXRlKCIvW2FBXXZwbGF5ZXJcLyhbUXFddWVyeSlcLyg/UDxxdWVyeT5bMC05XSspXC8oP1A8cmV0dXJuaWQ+WzAtOV0rKSQvIiwgJGRlZmFjdCk7DQoJCSR0aGlzLT5SZWdpc3RlclJvdXRlKCIvW2FBXXZwbGF5ZXJcLyhbUXFddWVyeSlcLyg/UDxxdWVyeT5bMC05XSspXC8oP1A8cGFnZWluZGV4PlswLTldKylcLyg/UDxuYnBlcnBhZ2U+WzAtOV0rKVwvKD9QPHJldHVybmlkPlswLTldKykkLyIsICRkZWZhY3QpOw0KCQkkdGhpcy0+UmVnaXN0ZXJSb3V0ZSgiL1thQV12cGxheWVyXC8oW0RkXWV0YWlsKVwvKD9QPGFsaWFzPlteXC9dKylcLyg/UDxyZXR1cm5pZD5bMC05XSspJC8iLCAkZGVmYWN0KTsNCgkJJHRoaXMtPlJlZ2lzdGVyUm91dGUoIi9bYUFddnBsYXllclwvKD9QPHdoYXQ+W15cL10rKVwvKD9QPHJldHVybmlkPlswLTldKykkLyIsICRkZWZhY3QpOw0KCQkkdGhpcy0+UmVnaXN0ZXJSb3V0ZSgiL1thQV12cGxheWVyXC8oP1A8d2hhdD5bXlwvXSspXC8oP1A8cGFyZW50PlteXC9dKylcLyg/UDxyZXR1cm5pZD5bMC05XSspJC8iLCAkZGVmYWN0KTsNCgkJJHRoaXMtPlJlZ2lzdGVyUm91dGUoIi9bYUFddnBsYXllclwvKD9QPHdoYXQ+W15cL10rKVwvKD9QPHBhZ2VpbmRleD5bMC05XSspXC8oP1A8bmJwZXJwYWdlPlswLTldKylcLyg/UDxyZXR1cm5pZD5bMC05XSspJC8iLCAkZGVmYWN0KTsNCgkJJHRoaXMtPlJlZ2lzdGVyUm91dGUoIi9bYUFddnBsYXllclwvKD9QPHdoYXQ+W15cL10rKVwvKD9QPHBhcmVudD5bXlwvXSspXC8oP1A8cGFnZWluZGV4PlswLTldKylcLyg/UDxuYnBlcnBhZ2U+WzAtOV0rKVwvKD9QPHJldHVybmlkPlswLTldKykkLyIsICRkZWZhY3QpOw0KCQ0KCQkkdGhpcy0+UmVzdHJpY3RVbmtub3duUGFyYW1zKCk7DQoJCQ0KCQkkdGhpcy0+Q3JlYXRlUGFyYW1ldGVyKCJhY3Rpb24iLCAiZGVmYXVsdCIsICR0aGlzLT5MYW5nKCJwaGVscF9hY3Rpb24iKSk7DQoJCSR0aGlzLT5DcmVhdGVQYXJhbWV0ZXIoIndoYXQiLCAiIiwgJHRoaXMtPkxhbmcoInBoZWxwX3doYXQiKSk7DQoJCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCJ3aGF0IixDTEVBTl9TVFJJTkcpOw0KCQkkdGhpcy0+Q3JlYXRlUGFyYW1ldGVyKCJhbGlhcyIsICIiLCAkdGhpcy0+TGFuZygicGhlbHBfYWxpYXMiKSk7DQoJCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCJhbGlhcyIsQ0xFQU5fU1RSSU5HKTsNCgkJJHRoaXMtPkNyZWF0ZVBhcmFtZXRlcigic2hvd2RlZmF1bHQiLCBmYWxzZSwgJHRoaXMtPkxhbmcoInBoZWxwX3Nob3dkZWZhdWx0IikpOw0KCQkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgic2hvd2RlZmF1bHQiLENMRUFOX0lOVCk7DQoJCSR0aGlzLT5DcmVhdGVQYXJhbWV0ZXIoInBhcmVudCIsICIiLCAkdGhpcy0+TGFuZygicGhlbHBfcGFyZW50IikpOw0KCQkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgicGFyZW50IixDTEVBTl9TVFJJTkcpOw0KCQkkdGhpcy0+Q3JlYXRlUGFyYW1ldGVyKCJsaW1pdCIsIDAsICR0aGlzLT5MYW5nKCJwaGVscF9saW1pdCIpKTsNCgkJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoImxpbWl0IixDTEVBTl9JTlQpOw0KCQkkdGhpcy0+Q3JlYXRlUGFyYW1ldGVyKCJuYnBlcnBhZ2UiLCAwLCAkdGhpcy0+TGFuZygicGhlbHBfbmJwZXJwYWdlIikpOw0KCQkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgibmJwZXJwYWdlIixDTEVBTl9TVFJJTkcpOw0KCQkkdGhpcy0+Q3JlYXRlUGFyYW1ldGVyKCJvcmRlcmJ5IiwgMCwgJHRoaXMtPkxhbmcoInBoZWxwX29yZGVyYnkiKSk7DQoJCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCJvcmRlcmJ5IixDTEVBTl9TVFJJTkcpOw0KCQkkdGhpcy0+Q3JlYXRlUGFyYW1ldGVyKCJkZXRhaWxwYWdlIiwgIiIsICR0aGlzLT5MYW5nKCJwaGVscF9kZXRhaWxwYWdlIikpOw0KCQkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgiZGV0YWlscGFnZSIsQ0xFQU5fU1RSSU5HKTsNCgkJJHRoaXMtPkNyZWF0ZVBhcmFtZXRlcigicmFuZG9tIiwgMCwgJHRoaXMtPkxhbmcoInBoZWxwX3JhbmRvbSIpKTsNCgkJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoInJhbmRvbSIsQ0xFQU5fSU5UKTsNCgkJJHRoaXMtPkNyZWF0ZVBhcmFtZXRlcigibGlzdHRlbXBsYXRlIiwgIiIsICR0aGlzLT5sYW5nKCJwaGVscF9saXN0dGVtcGxhdGUiKSk7DQoJCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCJsaXN0dGVtcGxhdGUiLENMRUFOX1NUUklORyk7DQoJCSR0aGlzLT5DcmVhdGVQYXJhbWV0ZXIoImZpbmFsdGVtcGxhdGUiLCAiIiwgJHRoaXMtPmxhbmcoInBoZWxwX2ZpbmFsdGVtcGxhdGUiKSk7DQoJCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCJmaW5hbHRlbXBsYXRlIixDTEVBTl9TVFJJTkcpOw0KCQkkdGhpcy0+Q3JlYXRlUGFyYW1ldGVyKCJmb3JjZWxpc3QiLCAiMCIsICR0aGlzLT5sYW5nKCJwaGVscF9mb3JjZWxpc3QiKSk7DQoJCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCJmb3JjZWxpc3QiLENMRUFOX1NUUklORyk7DQoJCSR0aGlzLT5DcmVhdGVQYXJhbWV0ZXIoImlubGluZSIsIDAsICR0aGlzLT5sYW5nKCJwaGVscF9pbmxpbmUiKSk7DQoJCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCJpbmxpbmUiLENMRUFOX1NUUklORyk7DQoJCSR0aGlzLT5DcmVhdGVQYXJhbWV0ZXIoInNlYXJjaG1vZGUiLCAiYWR2YW5jZWQiLCAkdGhpcy0+bGFuZygicGhlbHBfc2VhcmNobW9kZSIpKTsNCgkJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoInNlYXJjaG1vZGUiLENMRUFOX1NUUklORyk7DQoJCSR0aGlzLT5DcmVhdGVQYXJhbWV0ZXIoInF1ZXJ5IiwgMCwgJHRoaXMtPmxhbmcoInBoZWxwX3F1ZXJ5IikpOw0KCQkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgicXVlcnkiLENMRUFOX1NUUklORyk7DQoJCSR0aGlzLT5DcmVhdGVQYXJhbWV0ZXIoInRvYWN0aW9uIiwgIiIsICR0aGlzLT5MYW5nKCJwaGVscF90b2FjdGlvbiIpKTsNCgkJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoInRvYWN0aW9uIixDTEVBTl9TVFJJTkcpOw0KCQkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgicGFnZWluZGV4IixDTEVBTl9JTlQpOw0KDQoJCS8vIGZvciB0aGUgc2VhcmNoIGZvcm0gKHRyaWNrIGZyb20gaWt1bGlzKSA6DQoJCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKENMRUFOX1JFR0VYUC4iL2RhdGVfLiovIixDTEVBTl9TVFJJTkcpOw0KCQkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZShDTEVBTl9SRUdFWFAuIi9maWVsZF8uKi8iLENMRUFOX1NUUklORyk7DQoJCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKENMRUFOX1JFR0VYUC4iL2NvbXBhcmVfLiovIixDTEVBTl9TVFJJTkcpOw0KCQkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgic3VibWl0c2VhcmNoIixDTEVBTl9TVFJJTkcpOw0KCQkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgic2VhcmNoZmllbGQiLENMRUFOX1NUUklORyk7DQoJCQ0KCQkvLyBmb3IgdGhlIGZyb250ZW5kIGFkZCBhY3Rpb24NCgkJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoQ0xFQU5fUkVHRVhQLiIvZmVhZGQuKi8iLENMRUFOX1NUUklORyk7DQoJCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKENMRUFOX1JFR0VYUC4iL2ZlZmlsZS4qLyIsQ0xFQU5fU1RSSU5HKTsNCgkJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoImNhcHRjaGFfaW5wdXQiLCBDTEVBTl9TVFJJTkcpOw0KCQkNCgl9DQoNCiAgICBmdW5jdGlvbiBHZXRFdmVudERlc2NyaXB0aW9uKCRldmVudG5hbWUpDQogICAgew0KCQkkZXZlbnRuYW1lID0gc3RyX3JlcGxhY2UoImF2cGxheWVyIiwgIiIsICRldmVudG5hbWUpOw0KCQlyZXR1cm4gJHRoaXMtPmxhbmcoImV2ZW50ZGVzYyIuJGV2ZW50bmFtZSk7DQogICAgfQ0KICAgIA0KCWZ1bmN0aW9uIEluc3RhbGxQb3N0TWVzc2FnZSgpDQoJew0KCQlyZXR1cm4gJHRoaXMtPkxhbmcoInBvc3RpbnN0YWxsIik7DQoJfQ0KCWZ1bmN0aW9uIFVuaW5zdGFsbFBvc3RNZXNzYWdlKCkNCgl7DQoJCXJldHVybiAkdGhpcy0+TGFuZygicG9zdHVuaW5zdGFsbCIpOw0KCX0NCglmdW5jdGlvbiBVbmluc3RhbGxQcmVNZXNzYWdlKCkNCgl7DQoJCXJldHVybiAkdGhpcy0+TGFuZygicmVhbGx5X3VuaW5zdGFsbCIpOw0KCX0NCg0KDQoJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCgkgICBJbnN0YWxsKCkNCgkgICBXaGVuIHlvdXIgbW9kdWxlIGlzIGluc3RhbGxlZCwgeW91IG1heSBuZWVkIHRvIGRvIHNvbWUNCgkgICBzZXR1cC4gVHlwaWNhbCB0aGluZ3MgdGhhdCBoYXBwZW4gaGVyZSBhcmUgdGhlIGNyZWF0aW9uDQoJICAgYW5kIHByZXBvcHVsYXRpb24gb2YgZGF0YWJhc2UgdGFibGVzLCBkYXRhYmFzZSBzZXF1ZW5jZXMsDQoJICAgcGVybWlzc2lvbnMsIHByZWZlcmVuY2VzLCBldGMuDQoJICAgCSAgIA0KCSAgIEZvciBpbmZvcm1hdGlvbiBvbiB0aGUgY3JlYXRpb24gb2YgZGF0YWJhc2UgdGFibGVzLA0KCSAgIGNoZWNrIG91dCB0aGUgQURPREIgRGF0YSBEaWN0aW9uYXJ5IHBhZ2UgYXQNCgkgICBodHRwOi8vcGhwbGVucy5jb20vbGVucy9hZG9kYi9kb2NzLWRhdGFkaWN0Lmh0bQ0KCSAgIA0KCSAgIFRoaXMgZnVuY3Rpb24gY2FuIHJldHVybiBhIHN0cmluZyBpbiBjYXNlIG9mIGFueSBlcnJvciwNCgkgICBhbmQgQ01TIHdpbGwgbm90IGNvbnNpZGVyIHRoZSBtb2R1bGUgaW5zdGFsbGVkLg0KCSAgIFN1Y2Nlc3NmdWwgaW5zdGFsbHMgc2hvdWxkIHJldHVybiBGQUxTRSBvciBub3RoaW5nIGF0IGFsbC4NCgkgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQoJZnVuY3Rpb24gSW5zdGFsbCgpDQoJew0KCQlnbG9iYWwgJGdDbXM7DQoJCXJlcXVpcmUgIm1ldGhvZC5pbnN0YWxsLnBocCI7DQoJfQ0KDQoJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCgkgICBVbmluc3RhbGwoKQ0KCSAgIFNvbWV0aW1lcywgYW4gZXhjZXB0aW9uYWxseSB1bmVubGlnaHRlbmVkIG9yIGlnbm9yYW50DQoJICAgYWRtaW4gd2lsbCB3aXNoIHRvIHVuaW5zdGFsbCB5b3VyIG1vZHVsZS4gV2hpbGUgaXQNCgkgICB3b3VsZCBiZSBiZXN0IHRvIGxheSBpbnRvIHRoZXNlIGlkaW90cyB3aXRoIGEgY2x1ZXN0aWNrLA0KCSAgIHdlIHdpbGwgZG8gdGhlIG1hZ25hbmltb3VzIHRoaW5nIGFuZCByZW1vdmUgdGhlIG1vZHVsZQ0KCSAgIGFuZCBjbGVhbiB1cCB0aGUgZGF0YWJhc2UsIHBlcm1pc3Npb25zLCBhbmQgcHJlZmVyZW5jZXMNCgkgICB0aGF0IGFyZSBzcGVjaWZpYyB0byBpdC4NCgkgICBUaGlzIGlzIHRoZSBtZXRob2Qgd2hlcmUgd2UgZG8gdGhpcy4NCgkgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQoJZnVuY3Rpb24gVW5pbnN0YWxsKCkNCgl7DQoJCWdsb2JhbCAkZ0NtczsNCgkJcmVxdWlyZSAibWV0aG9kLnVuaW5zdGFsbC5waHAiOw0KCX0NCg0KDQogICAgZnVuY3Rpb24gU2VhcmNoUmVzdWx0KCRyZXR1cm5pZCwgJGl0ZW1pZCwgJGxldmVsID0gIiIpDQogICAgew0KCQkkcmVzdWx0ID0gYXJyYXkoKTsNCgkJJHdhbnRlZHBhcmFtID0gZmFsc2U7DQoJCSRuZXdwYXJhbXMgPSBhcnJheSgpOw0KCQlpZigkbGV2ZWwgPT0gIm1lZGlhZmlsZSIpew0KCQkJLy8gd2Ugc2VlayBhbiBlbGVtZW50IG9mIHRoZSBsYXN0IGxldmVsLCBhbmQgd2lsbCBkaXNwbGF5IHRoZSBkZXRhaWwgdmlldw0KCQkJJHdhbnRlZHBhcmFtID0gImFsaWFzIjsNCgkJfWVsc2V7DQoJCQlpZigkbmV3cGFyYW1zWyJ3aGF0Il0gPSAkdGhpcy0+Z2V0X25leHRsZXZlbCgkbGV2ZWwpKXsNCgkJCS8vIHdlIHNlZWsgYW4gZWxlbWVudCBvZiBhbm90aGVyIGxldmVsLCBhbmQgd2lsbCBkaXNwbGF5IHRoZSBsaXN0IHZpZXcgb2YgaXRzIGNoaWxkcmVuDQoJCQkJJHdhbnRlZHBhcmFtID0gInBhcmVudCI7DQoJCQl9DQoJCX0NCgkJaWYgKCR3YW50ZWRwYXJhbSl7DQoJCQkkdGFibGVuYW1lID0gY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfYXZwbGF5ZXJfIi4kbGV2ZWw7DQoJCQkkZGIgPSYgJHRoaXMtPkdldERiKCk7DQoJCQkkcXVlcnkgPSAiU0VMRUNUIG5hbWUsIGFsaWFzIEZST00gJHRhYmxlbmFtZSBXSEVSRSBpZCA9ID8iOw0KCQkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCAkcXVlcnksIGFycmF5KCAkaXRlbWlkICkgKTsNCgkJCWlmICgkZGJyZXN1bHQpew0KCQkJCSRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCk7DQoJCQkJJG5ld3BhcmFtc1skd2FudGVkcGFyYW1dID0gJHJvd1siYWxpYXMiXTsNCg0KCQkJCS8vMCBwb3NpdGlvbiBpcyB0aGUgcHJlZml4IGRpc3BsYXllZCBpbiB0aGUgbGlzdCByZXN1bHRzLg0KCQkJCSRyZXN1bHRbMF0gPSAkdGhpcy0+R2V0RnJpZW5kbHlOYW1lKCk7DQoNCgkJCQkvLzEgcG9zaXRpb24gaXMgdGhlIHRpdGxlDQoJCQkJJHJlc3VsdFsxXSA9ICRyb3dbIm5hbWUiXTsNCgkJDQoJCQkJLy8yIHBvc2l0aW9uIGlzIHRoZSBVUkwgdG8gdGhlIHRpdGxlLg0KCQkJCSRyZXN1bHRbMl0gPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICJkZWZhdWx0IiwgJHJldHVybmlkLCAiIiwgJG5ld3BhcmFtcywgIiIsIHRydWUsIGZhbHNlLCAiIiwgZmFsc2UsICR0aGlzLT5CdWlsZFByZXR0eVVybHMoJG5ld3BhcmFtcywgJHJldHVybmlkKSk7DQoJCQl9DQoJCX0NCg0KCQlyZXR1cm4gJHJlc3VsdDsNCgl9DQoJDQoJZnVuY3Rpb24gU2VhcmNoUmVpbmRleCgmJG1vZHVsZSkNCiAgICB7DQoJCSRkYiA9JiAkdGhpcy0+R2V0RGIoKTsNCgkJaWYoJHRoaXMtPkdldFByZWZlcmVuY2UoInNlYXJjaG1vZHVsZV9pbmRleF9wbGF5ZXIiLGZhbHNlKSl7DQoJCQkkaXRlbWxpc3QgPSAkdGhpcy0+Z2V0X2xldmVsX3BsYXllcigpOw0KCQkJZm9yZWFjaCgkaXRlbWxpc3QgYXMgJGl0ZW0pew0KCQkJCSR0ZXh0ID0gIiRpdGVtLT5uYW1lIjsNCgkJCQkkbW9kdWxlLT5BZGRXb3JkcygkdGhpcy0+R2V0TmFtZSgpLCAkaXRlbS0+aWQsICJwbGF5ZXIiLCAkdGV4dCwgTlVMTCk7DQoJCQl9DQoJCX0NCgkJaWYoJHRoaXMtPkdldFByZWZlcmVuY2UoInNlYXJjaG1vZHVsZV9pbmRleF9tZWRpYWZpbGUiLGZhbHNlKSl7DQoJCQkkaXRlbWxpc3QgPSAkdGhpcy0+Z2V0X2xldmVsX21lZGlhZmlsZSgpOw0KCQkJZm9yZWFjaCgkaXRlbWxpc3QgYXMgJGl0ZW0pew0KCQkJCSR0ZXh0ID0gIiRpdGVtLT5uYW1lIjsNCgkJCQkkbW9kdWxlLT5BZGRXb3JkcygkdGhpcy0+R2V0TmFtZSgpLCAkaXRlbS0+aWQsICJtZWRpYWZpbGUiLCAkdGV4dCwgTlVMTCk7DQoJCQl9DQoJCX0NCgkJDQogICAgfQkNCg0KLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpOT1QgUEFSVCBPRiBUSEUgTk9STUFMIE1PRFVMRSBBUEkNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KDQogICAgZnVuY3Rpb24gZ2V0RGVmYXVsdFRlbXBsYXRlcygpew0KICAgIAkvLyByZXR1cm5zIGFuIGFycmF5IG9mIHRoZSB0ZW1wbGF0ZXMgdGhhdCBhcmUgc2VsZWN0ZWQgYXMgZGVmYXVsdCAoanVzdCBzbyB0aGF0IHdlIGRvbid0IGRlbGV0ZSB0aGVtKQ0KCSAgICRyZXN1bHQgPSBhcnJheSgpOw0KCSAgICRyZXN1bHRbXSA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCJmaW5hbHRlbXBsYXRlIik7DQoJICAgJHJlc3VsdFtdID0gJHRoaXMtPkdldFByZWZlcmVuY2UoInNlYXJjaHJlc3VsdHN0ZW1wbGF0ZSIpOw0KCSAgICRyZXN1bHRbXSA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCJsaXN0dGVtcGxhdGVfcGxheWVyIik7DQoJICAgJHJlc3VsdFtdID0gJHRoaXMtPkdldFByZWZlcmVuY2UoImxpc3R0ZW1wbGF0ZV9tZWRpYWZpbGUiKTsNCgkgICByZXR1cm4gJHJlc3VsdDsNCiAgICB9DQoJDQogICAgZnVuY3Rpb24gZ2V0T3JkZXJUeXBlKCR3aGF0KXsNCgkJLy8gcmV0dXJucyB3aGV0aGVyIGEgbGV2ZWwgaXMgb3JkZXJlZCBieSBwYXJlbnQgb3Igbm90DQoJCSRyZXR1cm4gPSBhcnJheSgicGxheWVyIj0+dHJ1ZSwibWVkaWFmaWxlIj0+dHJ1ZSk7DQoJCXJldHVybiAoaXNzZXQoJHJldHVyblskd2hhdF0pPyRyZXR1cm5bJHdoYXRdOmZhbHNlKTsNCiAgICB9DQoNCglmdW5jdGlvbiBEb0FjdGlvbigkYWN0aW9uLCAkaWQsICRwYXJhbXMsICRyZXR1cm5pZD0tMSl7DQoJCWdsb2JhbCAkZ0NtczsNCgkJDQoJCXN3aXRjaCgkYWN0aW9uKXsNCgkJCWNhc2UgImxpbmsiOg0KCQkJCSR0b2FjdGlvbiA9IGlzc2V0KCRwYXJhbXNbInRvYWN0aW9uIl0pPyRwYXJhbXNbInRvYWN0aW9uIl06ImRlZmF1bHQiOw0KCQkJCWVjaG8gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCR0b2FjdGlvbiwkcmV0dXJuaWQsIiIsJHBhcmFtcywiIix0cnVlKTsNCgkJCQlicmVhazsNCgkJCWNhc2UgImJyZWFkY3J1bWJzIjoNCgkJCQkkc21hcnR5ID0mICRnQ21zLT5HZXRTbWFydHkoKTsNCgkJCQkkdGhpcy0+ZnVuY3Rpb25fbW9kYnJlYWRjcnVtYnMoJHBhcmFtcywgJHNtYXJ0eSk7DQoJCQkJYnJlYWs7DQoJCQljYXNlICJmcm9udGVuZF9lZGl0IjoNCgkJCQkkd2hhdCA9IGlzc2V0KCRwYXJhbXNbIndoYXQiXSk/JHBhcmFtc1sid2hhdCJdOiJtZWRpYWZpbGUiOw0KCQkJCXN3aXRjaCgkd2hhdCl7DQoJCQkJCWNhc2UgInBsYXllciI6DQoJCQkJCQlyZXF1aXJlICJhY3Rpb24uRkVhZGRBLnBocCI7DQoJCQkJCQlicmVhazsNCgkJCQkJY2FzZSAibWVkaWFmaWxlIjoNCgkJCQkJCXJlcXVpcmUgImFjdGlvbi5GRWFkZEIucGhwIjsNCgkJCQkJCWJyZWFrOw0KCQkJCQkNCgkJCQl9DQoJCQkJYnJlYWs7DQoJCQljYXNlICJjaGFuZ2VwcmVmZXJlbmNlcyI6DQoJCQkJaWYoISR0aGlzLT5DaGVja1Blcm1pc3Npb24oImF2cGxheWVyX2FkdmFuY2VkIikpew0KCQkJCQkkdGhpcy0+UmVkaXJlY3QoJGlkLCAiZGVmYXVsdGFkbWluIiwgJHJldHVybmlkLCBhcnJheSgibW9kdWxlX21lc3NhZ2UiPT4kdGhpcy0+TGFuZygiZXJyb3JfZGVuaWVkIikpKTsNCgkJCQkJYnJlYWs7DQoJCQkJfQ0KCQkJCSRwcmVmcyA9IGFycmF5KCJyZXN0cmljdF9wZXJtaXNzaW9ucyIsInVzZV9oaWVyYXJjaHkiLCJvcmRlcmJ5bmFtZSIsImRpc3BsYXlfZmlsdGVyIiwiZGlzcGxheV9pbnN0YW50c2VhcmNoIiwiZGlzcGxheV9pbnN0YW50c29ydCIsImVkaXRhYmxlX2FsaWFzZXMiLCJhdXRvaW5jcmVtZW50X2FsaWFzIiwiYWxsb3dfc3FsIiwiZm9yY2VfbGlzdCIsImRlbGV0ZV9maWxlcyIsInRhYmRpc3BsYXlfdGVtcGxhdGVzIiwidGFiZGlzcGxheV9maWVsZG9wdGlvbnMiLCJ0YWJkaXNwbGF5X3F1ZXJpZXMiLCJzaG93dGh1bWJuYWlscyIsImZlX3d5c2l3eWciLCJmZV9kZWNvZGVlbnRpdGllcyIsImZlX2FsbG93ZmlsZXMiLCJmZV9hbGxvd25hbWVjaGFuZ2UiLCJmZV9hbGxvd2FkZG5ldyIsImZlX3VzZWNhcHRjaGEiLCJhbGxvd19jb21wbGV4X29yZGVyIiwibG9hZF9uZXh0cHJldmlvdXMiLCJsb2FkX25iY2hpbGRyZW4iLCJ1c2Vfc2Vzc2lvbiIsInJldHJpZXZldHJlZSIpOw0KCQkJCWZvcmVhY2goJHRoaXMtPmdldF9sZXZlbGFycmF5KCkgYXMgJGxldmVsKXsNCgkJCQkJJHByZWZzW10gPSAibmV3aXRlbXNmaXJzdF8iLiRsZXZlbDsNCgkJCQkJJHByZWZzW10gPSAic2VhcmNobW9kdWxlX2luZGV4XyIuJGxldmVsOw0KCQkJCQkkcHJlZnNbXSA9ICJ0YWJkaXNwbGF5XyIuJGxldmVsOw0KCQkJCX0NCgkJCQlmb3JlYWNoKCRwcmVmcyBhcyAkcHJlZikJJHRoaXMtPlNldFByZWZlcmVuY2UoJHByZWYsIGlzc2V0KCRwYXJhbXNbJHByZWZdKSk7DQoJCQkJaWYoaXNzZXQoJHBhcmFtc1siZmVfYWZ0ZXJzdWJtaXQiXSkpCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCJmZV9hZnRlcnN1Ym1pdCIsICRwYXJhbXNbImZlX2FmdGVyc3VibWl0Il0pOw0KCQkJCWlmKGlzc2V0KCRwYXJhbXNbImZlX21heGZpbGVzaXplIl0pKQkkdGhpcy0+U2V0UHJlZmVyZW5jZSgiZmVfbWF4ZmlsZXNpemUiLCAkcGFyYW1zWyJmZV9tYXhmaWxlc2l6ZSJdKTsNCgkJCQkkbWF4c2hvd25wYWdlcyA9IChpbnQpJHBhcmFtc1sibWF4c2hvd25wYWdlcyJdOw0KCQkJCSRhZG1pbnBhZ2VzID0gKGludCkkcGFyYW1zWyJhZG1pbnBhZ2VzIl07DQoJCQkJZm9yZWFjaCgkdGhpcy0+Z2V0X2xldmVsYXJyYXkoKSBhcyAkbGV2ZWwpew0KCQkJCQkkbmJwZXJwYWdlID0gKGludCkgKGlzc2V0KCRwYXJhbXNbJGxldmVsLiJfcGFnaW5hdGlvbiJdKT8kcGFyYW1zWyRsZXZlbC4iX3BhZ2luYXRpb24iXTowKTsNCgkJCQkJJHRoaXMtPlNldFByZWZlcmVuY2UoJGxldmVsLiJfcGFnaW5hdGlvbiIsICRuYnBlcnBhZ2UpOw0KCQkJCX0NCgkJCQkkdGhpcy0+U2V0UHJlZmVyZW5jZSgibWF4c2hvd25wYWdlcyIsICRtYXhzaG93bnBhZ2VzKTsNCgkJCQkkdGhpcy0+U2V0UHJlZmVyZW5jZSgiYWRtaW5wYWdlcyIsICRhZG1pbnBhZ2VzKTsNCgkJCQkkdGhpcy0+UmVkaXJlY3QoJGlkLCAiZGVmYXVsdGFkbWluIiwgJHJldHVybmlkLCBhcnJheSgiYWN0aXZlX3RhYiI9PiJwcmVmZXJlbmNlcyIsICJtb2R1bGVfbWVzc2FnZSI9PiR0aGlzLT5MYW5nKCJtZXNzYWdlX21vZGlmaWVkIikpKTsNCgkJCQlicmVhazsNCgkJCWNhc2UgImNoYW5nZWRlZnRlbXBsYXRlcyI6DQoJCQkJZm9yZWFjaCgkcGFyYW1zIGFzICRrZXk9PiR2YWx1ZSl7DQoJCQkJICAgIGlmKCRrZXkgIT0gInN1Ym1pdCIpCSAgICR0aGlzLT5zZXRQcmVmZXJlbmNlKCRrZXksICR2YWx1ZSk7DQoJCQkJfQ0KCQkJCSR0aGlzLT5SZWRpcmVjdCgkaWQsICJkZWZhdWx0YWRtaW4iLCAkcmV0dXJuaWQsIGFycmF5KCJhY3RpdmVfdGFiIj0+InRlbXBsYXRlcyIsICJtb2R1bGVfbWVzc2FnZSI9PiR0aGlzLT5MYW5nKCJtZXNzYWdlX21vZGlmaWVkIikpKTsNCgkJCQlicmVhazsNCgkJCWNhc2UgImRlbGV0ZXRwbCI6DQoJCQkJJG5ld3BhcmFtcyA9IGFycmF5KCJhY3RpdmVfdGFiIj0+InRlbXBsYXRlcyIpOw0KCQkJCSRkZWZ0ZW1wbGF0ZXMgPSAkdGhpcy0+Z2V0RGVmYXVsdFRlbXBsYXRlcygpOw0KCQkJICAgIGlmKGlzc2V0KCRwYXJhbXNbInRwbG5hbWUiXSkgJiYgIWluX2FycmF5KCRwYXJhbXNbInRwbG5hbWUiXSwgJGRlZnRlbXBsYXRlcykpew0KCQkJCSAgICBpZigkdGhpcy0+RGVsZXRlVGVtcGxhdGUoJHBhcmFtc1sidHBsbmFtZSJdKSkJICAgJG5ld3BhcmFtc1sibW9kdWxlX21lc3NhZ2U+Il0gPSAkdGhpcy0+TGFuZygibWVzc2FnZV9tb2RpZmllZCIpOw0KCQkJCX0NCgkJCQkkdGhpcy0+UmVkaXJlY3QoJGlkLCAiZGVmYXVsdGFkbWluIiwgJHJldHVybmlkLCAkbmV3cGFyYW1zKTsNCgkJCQlicmVhazsNCgkJCWNhc2UgImRlbGV0ZXF1ZXJ5IjoNCgkJCQkkbmV3cGFyYW1zID0gYXJyYXkoImFjdGl2ZV90YWIiPT4icXVlcmllcyIpOw0KCQkJCWlmKGlzc2V0KCRwYXJhbXNbInF1ZXJ5aWQiXSkpew0KCQkJCQkkZGIgPSYgJHRoaXMtPkdldERiKCk7DQoJCQkJCWlmKCRkYi0+RXhlY3V0ZSgiREVMRVRFIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9hdnBsYXllcl9zYXZlZF9xdWVyaWVzIFdIRVJFIGlkPT8gTElNSVQgMSIsIGFycmF5KCRwYXJhbXNbInF1ZXJ5aWQiXSkpKXsNCgkJCQkJCSRuZXdwYXJhbXNbIm1vZHVsZV9tZXNzYWdlIl0gPSAkdGhpcy0+TGFuZygibWVzc2FnZV9kZWxldGVkIik7DQoJCQkJCX0NCgkJCQl9DQoJCQkJJHRoaXMtPlJlZGlyZWN0KCRpZCwgImRlZmF1bHRhZG1pbiIsICRyZXR1cm5pZCwgJG5ld3BhcmFtcyk7DQoJCQkJYnJlYWs7DQoJCQljYXNlICJ0ZXN0cXVlcnkiOg0KCQkJCWlmKGlzc2V0KCRwYXJhbXNbInF1ZXJ5aWQiXSkgJiYgJHF1ZXJ5ID0gJHRoaXMtPmdldF9xdWVyaWVzKGFycmF5KCJpZCI9PiRwYXJhbXNbInF1ZXJ5aWQiXSkpKXsNCgkJCQkJJHF1ZXJ5ID0gJHF1ZXJ5WzBdOw0KCQkJCQllY2hvICI8cD48Yj4iLiR0aGlzLT5MYW5nKCJxdWVyeSIpLiI6PC9iPiAiLiRxdWVyeS0+bmFtZTsNCgkJCQkJaWYoJHF1ZXJ5LT5vcmRlciAhPSAiIikJZWNobyAiIE9SREVSIEJZICIuJHF1ZXJ5LT5vcmRlcjsNCgkJCQkJZWNobyAiPC9wPiI7DQoJCQkJCSRnZXRmdW5jdGlvbiA9ICJnZXRfbGV2ZWxfIi4kcXVlcnktPndoYXQ7DQoJCQkJCSRpdGVtbGlzdCA9ICR0aGlzLT4kZ2V0ZnVuY3Rpb24oYXJyYXkoKSwgZmFsc2UsICIiLCAiIiwgMCwgMCwgJHF1ZXJ5LT53aGVyZWNsYXVzZSwgJHF1ZXJ5LT53aGVyZXZhbHVlcywgKCRxdWVyeS0+cXVlcnlvcmRlciA9PSAiIj9mYWxzZTokcXVlcnktPnF1ZXJ5b3JkZXIpKTsNCgkJCQkJZWNobyAiPHA+PGI+Ii4kdGhpcy0+TGFuZygicmVzdWx0cyIpLiIgKCIuY291bnQoJGl0ZW1saXN0KS4iKSA6PC9iPjwvcD4iOw0KCQkJCQllY2hvICI8dWw+IjsNCgkJCQkJZm9yZWFjaCgkaXRlbWxpc3QgYXMgJGl0ZW0pCWVjaG8gIjxsaT4iLiRpdGVtLT5uYW1lLiI8L2xpPiI7DQoJCQkJCWVjaG8gIjwvdWw+IjsNCgkJCQl9DQoJCQkJZWNobyAiPHA+Ii4kdGhpcy0+Q3JlYXRlTGluaygkaWQsICJkZWZhdWx0YWRtaW4iLCAkcmV0dXJuaWQsIGxhbmcoImJhY2siKSwgYXJyYXkoImFjdGl2ZV90YWIiPT4icXVlcmllcyIpKS4iPC9wPiI7DQoJCQkJYnJlYWs7DQoJCQkJCQ0KDQoJCQljYXNlICJhZGRfb3B0aW9udmFsdWUiOg0KCQkJCWlmKGlzc2V0KCRwYXJhbXNbImZpZWxkIl0pICYmIGlzc2V0KCRwYXJhbXNbIm9wdGlvbm5hbWUiXSkgJiYgJHBhcmFtc1sib3B0aW9ubmFtZSJdICE9ICIiKXsNCgkJCQkJJHRhYmxlbmFtZSA9IGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2F2cGxheWVyX2ZpZWxkb3B0aW9ucyI7DQoJCQkJCSRkYiA9JiAkdGhpcy0+R2V0RGIoKTsNCgkJCQkJJGl0ZW1pZCA9ICRkYi0+R2VuSUQoJHRhYmxlbmFtZS4iX3NlcSIpOw0KCQkJCQkkaXRlbW9yZGVyID0gJHRoaXMtPmNvdW50c29tZXRoaW5nKCJmaWVsZG9wdGlvbnMiLCAiaWQiLCBhcnJheSgiZmllbGQiPT4kcGFyYW1zWyJmaWVsZCJdKSkgKyAxOw0KCQkJCQkkcXVlcnkgPSAiSU5TRVJUIElOVE8gIi4kdGFibGVuYW1lLiIgU0VUIGlkPT8sIGZpZWxkPT8sIG5hbWU9PywgaXRlbV9vcmRlcj0/IjsNCgkJCQkJJGRiLT5FeGVjdXRlKCRxdWVyeSxhcnJheSgkaXRlbWlkLCRwYXJhbXNbImZpZWxkIl0sJHBhcmFtc1sib3B0aW9ubmFtZSJdLCRpdGVtb3JkZXIpKTsNCgkJCQl9DQoJCQkJJHRoaXMtPlJlZGlyZWN0KCRpZCwgImRlZmF1bHRhZG1pbiIsICRyZXR1cm5pZCwgYXJyYXkoImFjdGl2ZV90YWIiPT4iZmllbGRvcHRpb25zIikgKTsNCgkJCQlicmVhazsNCgkJCWNhc2UgImRlbGV0ZV9vcHRpb252YWx1ZSI6DQoJCQkJaWYoaXNzZXQoJHBhcmFtc1siZmllbGQiXSkgJiYgaXNzZXQoJHBhcmFtc1sib3B0aW9uaWQiXSkgJiYgJHBhcmFtc1sib3B0aW9uaWQiXSA+IDApew0KCQkJCQkkdGFibGVuYW1lID0gY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfYXZwbGF5ZXJfZmllbGRvcHRpb25zIjsNCgkJCQkJJGRiID0mICR0aGlzLT5HZXREYigpOw0KCQkJCQkkcXVlcnkgPSAiREVMRVRFIEZST00gJHRhYmxlbmFtZSBXSEVSRSBpZD0/IEFORCBmaWVsZD0/IExJTUlUIDEiOw0KCQkJCQlpZigkZGItPkV4ZWN1dGUoJHF1ZXJ5LGFycmF5KCRwYXJhbXNbIm9wdGlvbmlkIl0sICRwYXJhbXNbImZpZWxkIl0pKSl7DQoJCQkJCQkkcXVlcnkgPSAiVVBEQVRFICR0YWJsZW5hbWUgU0VUIGl0ZW1fb3JkZXI9KGl0ZW1fb3JkZXItMSkgV0hFUkUgZmllbGQ9PyBBTkQgaXRlbV9vcmRlciA+ID8iOw0KCQkJCQkJJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJHBhcmFtc1siZmllbGQiXSwgJHBhcmFtc1siY3VycmVudG9yZGVyIl0pKTsNCgkJCQkJfQ0KCQkJCX0NCgkJCQkkdGhpcy0+UmVkaXJlY3QoJGlkLCAiZGVmYXVsdGFkbWluIiwgJHJldHVybmlkLCBhcnJheSgiYWN0aXZlX3RhYiI9PiJmaWVsZG9wdGlvbnMiKSApOw0KCQkJCWJyZWFrOw0KCQkJY2FzZSAibW92ZV9vcHRpb252YWx1ZSI6DQoJCQkJJGRiID0mICR0aGlzLT5HZXREYigpOw0KCQkJCSR0YWJsZW5hbWUgPSBjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9hdnBsYXllcl9maWVsZG9wdGlvbnMiOw0KCQkJCWlmKGlzc2V0KCRwYXJhbXNbImZpZWxkIl0pICYmIGlzc2V0KCRwYXJhbXNbIm9wdGlvbmlkIl0pICYmIGlzc2V0KCRwYXJhbXNbIm1vdmUiXSkgJiYgaXNzZXQoJHBhcmFtc1siY3VycmVudG9yZGVyIl0pKXsNCgkJCQkJaWYoJHBhcmFtc1sibW92ZSJdID09ICJ1cCIgJiYgJHBhcmFtc1siY3VycmVudG9yZGVyIl0gIT0gMSl7DQoJCQkJCQkkcXVlcnkgPSAiVVBEQVRFICR0YWJsZW5hbWUgU0VUIGl0ZW1fb3JkZXI9KGl0ZW1fb3JkZXIrMSkgV0hFUkUgZmllbGQ9PyBBTkQgaXRlbV9vcmRlciA9ID8gTElNSVQgMTsiOw0KCQkJCQkJJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJHBhcmFtc1siZmllbGQiXSwgJHBhcmFtc1siY3VycmVudG9yZGVyIl0gLTEpKTsNCgkJCQkJCSRxdWVyeSA9ICJVUERBVEUgJHRhYmxlbmFtZSBTRVQgaXRlbV9vcmRlcj0oaXRlbV9vcmRlci0xKSBXSEVSRSBmaWVsZD0/IEFORCBpZCA9ID8gTElNSVQgMTsiOw0KCQkJCQkJJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJHBhcmFtc1siZmllbGQiXSwgJHBhcmFtc1sib3B0aW9uaWQiXSkpOw0KCQkJCQl9ZWxzZWlmKCRwYXJhbXNbIm1vdmUiXSA9PSAiZG93biIpew0KCQkJCQkJJHF1ZXJ5ID0gIlVQREFURSAkdGFibGVuYW1lIFNFVCBpdGVtX29yZGVyPShpdGVtX29yZGVyLTEpIFdIRVJFIGZpZWxkPT8gQU5EIGl0ZW1fb3JkZXIgPSA/IExJTUlUIDE7IjsNCgkJCQkJCWlmKCRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRwYXJhbXNbImZpZWxkIl0sICRwYXJhbXNbImN1cnJlbnRvcmRlciJdICsxKSkpew0KCQkJCQkJCSRxdWVyeSA9ICJVUERBVEUgJHRhYmxlbmFtZSBTRVQgaXRlbV9vcmRlcj0oaXRlbV9vcmRlcisxKSBXSEVSRSBmaWVsZD0/IEFORCBpZCA9ID8gTElNSVQgMTsiOw0KCQkJCQkJCSRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRwYXJhbXNbImZpZWxkIl0sICRwYXJhbXNbIm9wdGlvbmlkIl0pKTsNCgkJCQkJCX0NCgkJCQkJfQ0KCQkJCX0NCgkJCQkkdGhpcy0+UmVkaXJlY3QoJGlkLCAiZGVmYXVsdGFkbWluIiwgJHJldHVybmlkLCBhcnJheSgiYWN0aXZlX3RhYiI9PiJmaWVsZG9wdGlvbnMiKSApOw0KCQkJCWJyZWFrOw0KCQkJY2FzZSAicmVuYW1lX29wdGlvbnZhbHVlIjoNCgkJCQlpZighaXNzZXQoJHBhcmFtc1siY2FuY2VsIl0pICYmIGlzc2V0KCRwYXJhbXNbIm9wdGlvbmlkIl0pICYmIGlzc2V0KCRwYXJhbXNbImZpZWxkIl0pICYmIGlzc2V0KCRwYXJhbXNbIm9wdGlvbm5hbWUiXSkgKXsNCgkJCQkJaWYoaXNzZXQoJHBhcmFtc1sic3VibWl0Il0pICYmICRwYXJhbXNbIm9wdGlvbm5hbWUiXSAhPSAiIiApew0KCQkJCQkJJHRhYmxlbmFtZSA9IGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2F2cGxheWVyX2ZpZWxkb3B0aW9ucyI7DQoJCQkJCQkkZGIgPSYgJHRoaXMtPkdldERiKCk7DQoJCQkJCQkkcXVlcnkgPSAiVVBEQVRFICR0YWJsZW5hbWUgU0VUIG5hbWU9PyBXSEVSRSBmaWVsZD0/IEFORCBpZD0/IjsNCgkJCQkJCSRkYi0+RXhlY3V0ZSgkcXVlcnksYXJyYXkoJHBhcmFtc1sib3B0aW9ubmFtZSJdLCAkcGFyYW1zWyJmaWVsZCJdLCAkcGFyYW1zWyJvcHRpb25pZCJdKSk7DQoJCQkJCQkkdGhpcy0+UmVkaXJlY3QoJGlkLCAiZGVmYXVsdGFkbWluIiwgJHJldHVybmlkLCBhcnJheSgiYWN0aXZlX3RhYiI9PiJmaWVsZG9wdGlvbnMiKSApOw0KCQkJCQl9ZWxzZXsNCgkJCQkJCWVjaG8gIjxoMj4iLiR0aGlzLT5MYW5nKCJtb2RpZnlhbm9wdGlvbiIpLiI8L2gyPiI7DQoJCQkJCQllY2hvICR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoJGlkLCAicmVuYW1lX29wdGlvbnZhbHVlIiwgJHJldHVybmlkKTsNCgkJCQkJCWVjaG8gIjxwPiIuJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsIm9wdGlvbm5hbWUiLCRwYXJhbXNbIm9wdGlvbm5hbWUiXSw0MCw2NCkuIjwvcD4iOw0KCQkJCQkJZWNobyAiPHA+Ii4kdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAic3VibWl0IiwgbGFuZygic3VibWl0IikpLiR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICJjYW5jZWwiLCBsYW5nKCJjYW5jZWwiKSkuIjwvcD4iOw0KCQkJCQkJZWNobyAkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCAib3B0aW9uaWQiLCAkcGFyYW1zWyJvcHRpb25pZCJdKS4kdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCAiZmllbGQiLCAkcGFyYW1zWyJmaWVsZCJdKTsNCgkJCQkJCWVjaG8gJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKTsNCgkJCQkJfQ0KCQkJCX1lbHNlew0KCQkJCQkkdGhpcy0+UmVkaXJlY3QoJGlkLCAiZGVmYXVsdGFkbWluIiwgJHJldHVybmlkLCBhcnJheSgiYWN0aXZlX3RhYiI9PiJmaWVsZG9wdGlvbnMiKSApOw0KCQkJCX0NCgkJCQlicmVhazsNCgkJCWNhc2UgImRlZmF1bHQiOg0KCQkJZGVmYXVsdDoNCgkJCQlwYXJlbnQ6OkRvQWN0aW9uKCRhY3Rpb24sICRpZCwgJHBhcmFtcywgJHJldHVybmlkKTsNCgkJCQlicmVhazsNCgkJfQ0KDQoNCgl9DQoJZnVuY3Rpb24gcGxjcmVhdGVhbGlhcygkbmFtZSl7DQoJCS8vIHRyYW5zZm9ybXMgJG5hbWUgaW50byBhIHVybC1mcmllbmRseSBhbGlhcw0KCQkNCgkJLy8gYXMgYSBzdWdnZXN0aW9uIGZyb20gQU1ULCB0aGUgZmlyc3QgcGFydCBkZWFscyB3aXRoIHNtYXJ0IHF1b3Rlcw0KIAkJJHNlYXJjaCA9IGFycmF5KGNocigweGUyKSAuIGNocigweDgwKSAuIGNocigweDk4KSwNCgkJCQkJCSAgY2hyKDB4ZTIpIC4gY2hyKDB4ODApIC4gY2hyKDB4OTkpLA0KCQkJCQkJICBjaHIoMHhlMikgLiBjaHIoMHg4MCkgLiBjaHIoMHg5YyksDQoJCQkJCQkgIGNocigweGUyKSAuIGNocigweDgwKSAuIGNocigweDlkKSwNCgkJCQkJCSAgY2hyKDB4ZTIpIC4gY2hyKDB4ODApIC4gY2hyKDB4OTMpLA0KCQkJCQkJICBjaHIoMHhlMikgLiBjaHIoMHg4MCkgLiBjaHIoMHg5NCkpOw0KIAkJJG5hbWUgPSBzdHJfcmVwbGFjZSgkc2VhcmNoLCAiIiwgJG5hbWUpOw0KCQkNCiAJCS8vIHRoZSBzZWNvbmQgcGFydCB1c2VzIHRoZSBjbXMgdmVyc2lvbg0KIAkJJGFsaWFzID0gbXVuZ2Vfc3RyaW5nX3RvX3VybCgkbmFtZSwgZmFsc2UpOw0KIAkJcmV0dXJuICRhbGlhczsNCgl9DQoNCglmdW5jdGlvbiBjaGVja2FsaWFzKCRkYnRhYmxlLCAkYWxpYXMsICRpdGVtaWQ9ZmFsc2UsICRpZGZpZWxkPSJpZCIsICRhbGlhc2ZpZWxkPSJhbGlhcyIpew0KCQkvLyBjaGVja3MgaWYgdGhpcyBhbGlhcyBhbHJlYWR5IGV4aXN0cyBpbiB0aGUgbGV2ZWwNCgkJJHF1ZXJ5ID0gIlNFTEVDVCAiLiRpZGZpZWxkLiIgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4kZGJ0YWJsZS4iIFdIRVJFICIuJGFsaWFzZmllbGQuIiA9ID8iOw0KCQlpZigkaXRlbWlkKSAkcXVlcnkgLj0gIiBBTkQgIi4kaWRmaWVsZC4iIT0iLiRpdGVtaWQ7DQoJCSRkYiA9ICR0aGlzLT5HZXREYigpOw0KCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LGFycmF5KCRhbGlhcykpOw0KCQkkdGFyZ2V0aWQgPSAwOw0KCQlpZigkZGJyZXN1bHQgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkgJHRhcmdldGlkID0gJHJvd1siaWQiXTsNCgkJcmV0dXJuICgkdGFyZ2V0aWQgPT0gMCk7DQoJfQ0KCWZ1bmN0aW9uIEJ1aWxkUHJldHR5VXJscygkcGFyYW1zLCAkcmV0dXJuaWQ9LTEpew0KCQkvLyB0cmFuc2Zvcm1zIGdpdmVuIHBhcmFtcyBpbnRvIGEgcHJldHR5IHVybA0KCQkkcHJldHR5dXJsID0gJHRoaXMtPkdldE5hbWUoKS4iLyI7DQoJCWlmKGlzc2V0KCRwYXJhbXNbInF1ZXJ5Il0pKXsNCgkJCSRwcmV0dHl1cmwgLj0gInF1ZXJ5LyIuJHBhcmFtc1sicXVlcnkiXTsJDQoJCX1lbHNlaWYoaXNzZXQoJHBhcmFtc1siYWxpYXMiXSkpew0KCQkJJHByZXR0eXVybCAuPSAiZGV0YWlsLyIuJHBhcmFtc1siYWxpYXMiXTsNCgkJfWVsc2VpZihpc3NldCgkcGFyYW1zWyJwYXJlbnQiXSkpew0KCQkJJHByZXR0eXVybCAuPSAkcGFyYW1zWyJ3aGF0Il0uIi8iLiRwYXJhbXNbInBhcmVudCJdOw0KCQl9ZWxzZXsNCgkJCSRwcmV0dHl1cmwgLj0gJHBhcmFtc1sid2hhdCJdOw0KCQl9DQoJCWlmKCFpc3NldCgkcGFyYW1zWyJhbGlhcyJdKSAmJiBpc3NldCgkcGFyYW1zWyJwYWdlaW5kZXgiXSkgJiYgaXNzZXQoJHBhcmFtc1sibmJwZXJwYWdlIl0pKQkkcHJldHR5dXJsIC49ICIvIi4kcGFyYW1zWyJwYWdlaW5kZXgiXS4iLyIuJHBhcmFtc1sibmJwZXJwYWdlIl07DQoJCSRwcmV0dHl1cmwgLj0gIi8iLiRyZXR1cm5pZDsNCgkJcmV0dXJuICRwcmV0dHl1cmw7DQoJfQ0KCWZ1bmN0aW9uIERvQ2hlY2tib3hlcygkaWQsICRuYW1lLCAkY2hvaWNlcywgJHNlbGVjdGVkPWFycmF5KCksICRkZWxpbWl0ZXI9Ijxici8+Iil7DQoJCS8vIHByZXR0eSBtdWNoIGxpa2UgQ3JlYXRlSW5wdXRSYWRpb0dyb3VwLCBidXQgdXNpbmcgY2hlY2tib3hlcw0KCQlpZighaXNfYXJyYXkoJHNlbGVjdGVkKSkJJHNlbGVjdGVkID0gYXJyYXkoKTsNCgkJJG91dHB1dCA9ICIiOw0KCQlmb3JlYWNoKCRjaG9pY2VzIGFzICRrZXk9PiR2YWx1ZSl7DQoJCQkkb3V0cHV0IC49ICR0aGlzLT5DcmVhdGVJbnB1dENoZWNrYm94KCRpZCwgJG5hbWUuIltdIiwgJHZhbHVlLCAoaW5fYXJyYXkoJHZhbHVlLCAkc2VsZWN0ZWQpPyR2YWx1ZTowKSkuIiAiLiRrZXkuJGRlbGltaXRlcjsNCgkJfQ0KCQlyZXR1cm4gJG91dHB1dDsNCgl9DQoJZnVuY3Rpb24gcGFyc2VrZXl3b3Jkcygkc3RyaW5nKXsNCgkJLy8gY3V0cyB0aGUgc2VhcmNod29yZHMgb2YgdGhlIHNlYXJjaCBmb3JtIGludG8gcGllY2VzDQoJCS8vIGJhc2NpYWxseSwgdGhpcyBleHBsb2RlcyB0aGUgJHN0cmluZywgYnV0IHRha2VzIG5vdGljZSBvZiB0aGUgcXVvdGVzDQoJCQ0KCQkkaW5zaWRlID0gKHN1YnN0cigkc3RyaW5nLDAsMSkgPT0gJyInKTsNCgkJJHBhcnRzID0gZXhwbG9kZSgnIicsJHN0cmluZyk7DQoJDQoJCWlmKGNvdW50KCRwYXJ0cykgPCAyKXsNCgkJCWlmKCRpbnNpZGUpew0KCQkJCXJldHVybiBhcnJheShzdHJfcmVwbGFjZSgnIicsIiIsJHN0cmluZykpOw0KCQkJfWVsc2V7DQoJCQkJcmV0dXJuIGV4cGxvZGUoIiAiLCRzdHJpbmcpOw0KCQkJfQ0KCQl9DQoJDQoJCSRrZXl3b3JkcyA9IGFycmF5KCk7DQoJCWZvcmVhY2goJHBhcnRzIGFzICRwYXJ0KXsNCgkJCWlmKCRwYXJ0ICE9ICIiKXsNCgkJCQlpZigkaW5zaWRlKXsNCgkJCQkJJGtleXdvcmRzW10gPSAkcGFydDsNCgkJCQl9ZWxzZXsNCgkJCQkJJHdvcmRzID0gZXhwbG9kZSgiICIsdHJpbSgkcGFydCkpOw0KCQkJCQlmb3JlYWNoKCR3b3JkcyBhcyAkd29yZCl7DQoJCQkJCQlpZih0cmltKCR3b3JkKSAhPSAiIikJJGtleXdvcmRzW10gPSAkd29yZDsNCgkJCQkJfQ0KCQkJCX0NCgkJCQkkaW5zaWRlID0gISRpbnNpZGU7DQoJCQl9DQoJCX0NCgkJcmV0dXJuICRrZXl3b3JkczsNCgl9DQoNCg0KCWZ1bmN0aW9uIGZlYWRkX3Blcm1jaGVjaygkd2hhdCwgJGl0ZW1pZCwgJGFsaWFzKXsNCgkJZ2xvYmFsICRnQ21zOw0KCQkkcmV0dXJuID0gdHJ1ZTsNCgkJcmVxdWlyZSAiZnVuY3Rpb24uZmVhZGRfcGVybWNoZWNrLnBocCI7DQoJCXJldHVybiAkcmV0dXJuOw0KCX0NCg0KCWZ1bmN0aW9uIGdldF9sZXZlbGFycmF5KCl7DQoJCS8vIHJldHVybnMgYW4gYXJyYXkgb2YgdGhlIGxldmVscyAodG9wIHRvIGJvdHRvbSkNCgkJcmV0dXJuIGFycmF5KCJwbGF5ZXIiLCJtZWRpYWZpbGUiKTsNCgl9DQoNCglmdW5jdGlvbiBnZXRfbW9kdWxlaGllcmFyY2h5KCRsZXZlbD1mYWxzZSl7DQoJCSRoaWVyYXJjaHkgPSBhcnJheSgpOw0KCQkJJGhpZXJhcmNoeVsxXSA9ICJwbGF5ZXIiOw0KCQkJJGhpZXJhcmNoeVsyXSA9ICJtZWRpYWZpbGUiOw0KCQlyZXR1cm4gJGhpZXJhcmNoeTsNCgl9DQoJDQoJZnVuY3Rpb24gZ2V0X2xldmVsc2VhcmNoZmllbGRzKCRsZXZlbCl7DQoJCS8vIHJldHVybnMgdGhlIGZpZWxkIG9mIGEgbGV2ZWwgd2hpY2ggYXJlIHNlYXJjaGFibGUgKGZvciB0aGUgc2ltcGxlIHNlYXJjaCBhY3Rpb24pDQoJCSRmaWVsZHMgPSBhcnJheSgpOw0KCQlzd2l0Y2goJGxldmVsKXsNCgkJCWNhc2UgInBsYXllciI6DQoJCQkJJGZpZWxkcyA9IGFycmF5KCJsb2NhdGlvbiIsIndpZHRoIiwiaGVpZ2h0IiwicGFyYW1ldGVycyIsIm5hbWUiKTsNCgkJCQlicmVhazsNCgkJCWNhc2UgIm1lZGlhZmlsZSI6DQoJCQkJJGZpZWxkcyA9IGFycmF5KCJuYW1lIik7DQoJCQkJYnJlYWs7DQoJCQkJCQkNCgkJfQ0KCQlyZXR1cm4gJGZpZWxkczsNCgl9DQoJZnVuY3Rpb24gZ2V0X2hpZXJhcmNoeW9wdGlvbnMoJGVuZD1mYWxzZSwgJHdpdGhlbXB0eXJvdz10cnVlLCAkZGVwdGhzeW1ib2w9IiZuYnNwOy0mbmJzcDsiKXsNCgkJLy8gcmV0dXJucyBhbiBhcnJheSBvZiBwYXJlbnQgb3B0aW9ucyBmb3IgYSBsaW5rZWQgdG8gYSBzZWxlY3RlZCBsZXZlbA0KCQkvLyB1c2VkIGZvciB0aGUgaGllcmFyY2h5IGRyb3Bkb3duIGxpc3QgaW4gc2VhcmNoIGFjdGlvbg0KCQkkbGV2ZWxhcnJheSA9ICR0aGlzLT5nZXRfbGV2ZWxhcnJheSgpOw0KCQkgaWYoIWluX2FycmF5KCRlbmQsICRsZXZlbGFycmF5KSkJJGVuZCA9ICRsZXZlbGFycmF5W2NvdW50KCRsZXZlbGFycmF5KS0xXTsNCgkJDQoJCS8vIGJ1aWxkaW5nIHRoZSBqb2luZWQgcXVlcnkNCgkJJHRhYmxlcyA9ICIiOw0KCQkkZmllbGRzID0gIiI7DQoJCSRvcmRlcmJ5ID0gIiI7DQoJCSR3aGVyZSA9ICIiOw0KCQkkZmluaXNoZWQgPSBmYWxzZTsNCgkJJGkgPSAxOw0KCQlmb3JlYWNoKCRsZXZlbGFycmF5IGFzICRsZXZlbCl7DQoJCQlpZigkbGV2ZWwgPT0gJGVuZCkJJGZpbmlzaGVkID0gdHJ1ZTsNCgkJCWlmKCEkZmluaXNoZWQpew0KCQkJCSR0YWJsZXMgLj0gKCR0YWJsZXMgPT0gIiI/IiI6IiwgIikuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfIi4kdGhpcy0+R2V0TmFtZSgpLiJfIi4kbGV2ZWwuIiB0Ii4kaS4iICI7DQoJCQkJJGZpZWxkcyAuPSAoJGZpZWxkcyA9PSAiIj8iIjoiLCAiKS4idCIuJGkuIi5pZCBpZCIuJGkuIiwgdCIuJGkuIi5uYW1lIG5hbWUiLiRpOw0KCQkJCSRvcmRlcmJ5IC49ICgkb3JkZXJieSA9PSAiIj8iIjoiLCAiKS4idCIuJGkuIi5pdGVtX29yZGVyIERFU0MiOw0KCQkJCWlmKCRpID4gMSkgJHdoZXJlIC49ICIgQU5EIHQiLigkaS0xKS4iLmlkID0gdCIuJGkuIi5wYXJlbnQgIjsNCgkJCQkkd2hlcmUgLj0gKCR3aGVyZSA9PSAiIj8iIjoiIEFORCAiKS4iIHQiLiRpLiIuYWN0aXZlPTEiOw0KCQkJCSRpKys7DQoJCQl9DQoJCX0NCgkJaWYoJGZpZWxkcyA9PSAiIikJcmV0dXJuIGZhbHNlOw0KCQkNCgkJJGRiID0mICR0aGlzLT5HZXREYigpOw0KCQkkcXVlcnkgPSAiU0VMRUNUICIuJGZpZWxkcy4iIEZST00gIi4kdGFibGVzLiIgV0hFUkUgIi4kd2hlcmUuIiBPUkRFUiBCWSAiLiRvcmRlcmJ5Ow0KCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsNCg0KCQkvLyBwYXJzaW5nIHJlc3VsdHMNCgkJJGN1cnJlbnQgPSBhcnJheSgpOw0KCQkkdG1wbGFzdGxldmVsID0gYXJyYXkoKTsNCgkJJHJlc3VsdHMgPSBhcnJheSgpOw0KCQkkZmluYWwgPSAkaSAtMTsNCgkJd2hpbGUoJGogPCAkZmluYWwgKXsNCgkJCSRjdXJyZW50WyRqXSA9IGFycmF5KCJpZCI9PmZhbHNlLCJuYW1lIj0+IiIpOw0KCQkJJGorKzsNCgkJfQ0KCQl3aGlsZSgkZGJyZXN1bHQgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSl7DQoJCQkvLyBlYWNoIHJvdyBoYXMgYSBmdWxsIGhpZXJhcmNoeSwgZnJvbSB0b3AgcGFyZW50IHRvIGZpbmFsIGNoaWxkDQoJCQkkaiA9ICRmaW5hbDsNCgkJCXdoaWxlKCRqID4gMCApew0KCQkJCWlmKCRyb3dbImlkIi4kal0gIT0gJGN1cnJlbnRbJGpdWyJpZCJdKXsNCgkJCQkJaWYoJGN1cnJlbnRbJGpdWyJpZCJdICYmIGNvdW50KCRjdXJyZW50WyRqXVsicmVzIl0pID4gMCl7DQoJCQkJCQkka2V5ID0gc3RyX3JlcGVhdCgkZGVwdGhzeW1ib2wsICgkaiAtMSkpLiRjdXJyZW50WyRqXVsibmFtZSJdOw0KCQkJCQkJJHJlc3VsdHNbJGtleV0gPSBpbXBsb2RlKCIsIiwkY3VycmVudFskal1bInJlcyJdKTsNCgkJCQkJfQ0KCQkJCQkkY3VycmVudFskal0gPSBhcnJheSgiaWQiPT4kcm93WyJpZCIuJGpdLCAibmFtZSI9PiRyb3dbIm5hbWUiLiRqXSwgInJlcyI9PmFycmF5KCkpOw0KCQkJCX0NCgkJCQkkY3VycmVudFskal1bInJlcyJdW10gPSAkcm93WyJpZCIuJGZpbmFsXTsNCgkJCQkkai0tOw0KCQkJfQ0KCQkJJHJlc3VsdHNbc3RyX3JlcGVhdCgkZGVwdGhzeW1ib2wsICgkZmluYWwgLTEpKS4kcm93WyJuYW1lIi4kZmluYWxdXSA9ICRyb3dbImlkIi4kZmluYWxdOw0KCQl9DQoJCS8vIHdlIGNsb3NlIHRoZSByZW1haW5pbmcgc2V0cw0KCQkkaiA9ICRmaW5hbCAtMTsNCgkJd2hpbGUoJGogPiAwICl7DQoJCQkka2V5ID0gc3RyX3JlcGVhdCgkZGVwdGhzeW1ib2wsICgkaiAtMSkpLiRjdXJyZW50WyRqXVsibmFtZSJdOw0KCQkJJHJlc3VsdHNbJGtleV0gPSBpbXBsb2RlKCIsIiwkY3VycmVudFskal1bInJlcyJdKTsNCgkJCSRqLS07DQoJCX0NCgkJaWYoJHdpdGhlbXB0eXJvdykJJHJlc3VsdHNbIiJdID0gIiI7DQoJCXJldHVybiBhcnJheV9yZXZlcnNlKCRyZXN1bHRzKTsNCgl9DQoJZnVuY3Rpb24gZ2V0X2FkbWluX2hpZXJhcmNoeW9wdGlvbnMoJGVuZD1mYWxzZSwgJHdpdGhlbXB0eXJvdz10cnVlLCAkc2VwYXJhdG9yPSIgJmd0OyAiLCAkb3JkZXJieW5hbWU9ZmFsc2Upew0KCQkvLyByZXR1cm5zIGFuIGFycmF5IG9mIHBhcmVudCBvcHRpb25zIGxpbmtlZCB0byBhIHNlbGVjdGVkIGxldmVsDQoJCS8vIHVzZWQgZm9yIHRoZSBwYXJlbnQgYW5kIGZpbHRlciBkcm9wZG93biBpbiB0aGUgYWRtaW4NCgkJLy8gc2hvd3MgZW1wdHkgcGFyZW50cyB0b28NCgkJJGxldmVsYXJyYXkgPSAkdGhpcy0+Z2V0X2xldmVsYXJyYXkoKTsNCgkJaWYoIWluX2FycmF5KCRlbmQsICRsZXZlbGFycmF5KSkJJGVuZCA9ICJpdGVtIjsNCgkJDQoJCS8vIGJ1aWxkaW5nIHRoZSBqb2luZWQgcXVlcnkNCgkJJHRhYmxlcyA9ICIiOw0KCQkkZmllbGRzID0gIiI7DQoJCSRvcmRlcmJ5ID0gIiI7DQoJCSRmaW5pc2hlZCA9IGZhbHNlOw0KCQkkaSA9IDE7DQoJCWZvcmVhY2goJGxldmVsYXJyYXkgYXMgJGxldmVsKXsNCgkJCWlmKCRsZXZlbCA9PSAkZW5kKQkkZmluaXNoZWQgPSB0cnVlOw0KCQkJaWYoISRmaW5pc2hlZCl7DQoJCQkJJHRhYmxlcyAuPSAoJGk9PTE/IiI6IiBMRUZUIEpPSU4gIikuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfIi4kdGhpcy0+R2V0TmFtZSgpLiJfIi4kbGV2ZWwuIiB0Ii4kaS4iICI7DQoJCQkJaWYoJGk+MSkJJHRhYmxlcyAuPSAiT04gdCIuKCRpLTEpLiIuaWQgPSB0Ii4kaS4iLnBhcmVudCAiOw0KCQkJCSRmaWVsZHMgLj0gKCRmaWVsZHMgPT0gIiI/IiI6IiwgIikuInQiLiRpLiIuaWQgaWQiLiRpLiIsIHQiLiRpLiIubmFtZSBuYW1lIi4kaTsNCgkJCQlpZigkb3JkZXJieW5hbWUpew0KCQkJCQkkb3JkZXJieSAuPSAoJG9yZGVyYnkgPT0gIiI/IiI6IiwgIikuInQiLiRpLiIubmFtZSI7DQoJCQkJfWVsc2V7DQoJCQkJCSRvcmRlcmJ5IC49ICgkb3JkZXJieSA9PSAiIj8iIjoiLCAiKS4idCIuJGkuIi5pdGVtX29yZGVyLCB0Ii4kaS4iLm5hbWUiOw0KCQkJCX0NCgkJCQkkaSsrOw0KCQkJfQ0KCQl9DQoJCWlmKCRmaWVsZHMgPT0gIiIpCXJldHVybiBhcnJheSgpOw0KCQkNCgkJJGRiID0mICR0aGlzLT5HZXREYigpOw0KCQkkcXVlcnkgPSAiU0VMRUNUICIuJGZpZWxkcy4iIEZST00gIi4kdGFibGVzLiIgT1JERVIgQlkgIi4kb3JkZXJieTsNCgkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSk7DQoJCSRvcHRpb25zID0gYXJyYXkoKTsNCgkJd2hpbGUoJGRicmVzdWx0ICYmICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpew0KCQkJLy8gZWFjaCByb3cgaGFzIGEgZnVsbCBoaWVyYXJjaHksIGZyb20gdG9wIHBhcmVudCB0byBmaW5hbCBjaGlsZA0KCQkJJHZhbHVlID0gJHJvd1siaWQiLigkaS0xKV07DQoJCQkkaiA9IDE7DQoJCQkkb3B0aW9uX25hbWUgPSAiIjsNCgkJCXdoaWxlKCRqIDwgJGkpew0KCQkJCSRvcHRpb25fbmFtZSAuPSAoJGo9PTE/IiI6JHNlcGFyYXRvcikuJHJvd1sibmFtZSIuJGpdOw0KCQkJCSRqKys7DQoJCQl9DQoJCQkkb3B0aW9uc1skb3B0aW9uX25hbWVdID0gJHZhbHVlOw0KCQl9DQoJCWlmKCR3aXRoZW1wdHlyb3cpCSRvcHRpb25zWyIiXSA9ICIiOw0KCQlyZXR1cm4gJG9wdGlvbnM7DQoJfQ0KCWZ1bmN0aW9uIGdldF9tb2R1bGVHZXRWYXJzKCl7DQoJCS8vIHVub3J0aG9kb3ggaGFjayBzbyB0aGF0IGRpZmZlcmVudCBjYWxscyBvZiB0aGUgbW9kdWxlIHNwZWFrIHdpdGggZWFjaCBvdGhlcg0KCQkvLyBiYXNpY2FsbHksIHdlIHJldHJpZXZlIHBhcmFtZXRlcnMgaW4gdGhlIHVybCB0aGF0IHdlcmUgbWVhbnQgZm9yIG90aGVyIGluc3RhbmNlcyBvZiB0aGUgbW9kdWxlDQoJCS8vIHNlZSBGQVEgZm9yIG1vcmUgaW5mbyBvbiB0aGlzDQoJCWdsb2JhbCAkX0dFVDsNCgkJZ2xvYmFsICRnQ21zOw0KCQkkcmVkaXJlY3Rpb24gPSBmYWxzZTsNCgkJaWYoaXNzZXQoJGdDbXMtPmNvbmZpZ1sidXJsX3Jld3JpdGluZyJdKSl7DQoJCQkvLyBjb3JlIDEuNiBvciBtb3JlDQoJCQkkcmVkaXJlY3Rpb24gPSAkZ0Ntcy0+Y29uZmlnWyJ1cmxfcmV3cml0aW5nIl07DQoJCX1lbHNlew0KCQkJLy8gY29yZSBiZWxvdyAxLjYNCgkJCWlmKCRnQ21zLT5jb25maWdbImFzc3VtZV9tb2RfcmV3cml0ZSJdICYmIGlzc2V0KCRfR0VUWyJwYWdlIl0pKXsNCgkJCQkkcmVkaXJlY3Rpb24gPSAibW9kX3Jld3JpdGUiOw0KCQkJfWVsc2VpZighJGdDbXMtPmNvbmZpZ1siYXNzdW1lX21vZF9yZXdyaXRlIl0gJiYgJGdDbXMtPmNvbmZpZ1siaW50ZXJuYWxfcHJldHR5X3VybHMiXSAmJiBpc3NldCgkX1NFUlZFUlsiUkVRVUVTVF9VUkkiXSkpew0KCQkJCSRyZWRpcmVjdGlvbiA9ICJpbnRlcm5hbCI7DQoJCQl9DQoJCX0NCgkJJHBhcmFtcyA9IGFycmF5KCk7DQoJCSRnbG9iYWxtb2R1bGV2YXJzID0gYXJyYXkoKTsNCgkJaWYoaXNzZXQoJF9HRVRbIm1hY3QiXSkpew0KCQkJLy8gaWYgd2UgYXJlbid0IHVzaW5nIHByZXR0eSB1cmxzLi4uDQoJCQkkbW9kaW5mbyA9IGV4cGxvZGUoIiwiLCRfR0VUWyJtYWN0Il0pOw0KCQkJaWYoaXNzZXQoJG1vZGluZm8pICYmICRtb2RpbmZvWzBdID09ICR0aGlzLT5HZXROYW1lKCkpew0KCQkJCWlmKGlzc2V0KCRfR0VUWyRtb2RpbmZvWzFdLiJwYXJlbnQiXSkpDQoJCQkJCSRnbG9iYWxtb2R1bGV2YXJzWyJwYXJlbnQiXT0kX0dFVFskbW9kaW5mb1sxXS4icGFyZW50Il07DQoJCQkJaWYoaXNzZXQoJF9HRVRbJG1vZGluZm9bMV0uIndoYXQiXSkpDQoJCQkJCSRnbG9iYWxtb2R1bGV2YXJzWyJ3aGF0Il09JF9HRVRbJG1vZGluZm9bMV0uIndoYXQiXTsNCgkJCQlpZihpc3NldCgkX0dFVFskbW9kaW5mb1sxXS4iYWxpYXMiXSkpDQoJCQkJCSRnbG9iYWxtb2R1bGV2YXJzWyJhbGlhcyJdPSRfR0VUWyRtb2RpbmZvWzFdLiJhbGlhcyJdOw0KCQkJCWlmKGlzc2V0KCRfR0VUWyRtb2RpbmZvWzFdLiJwYWdlaW5kZXgiXSkpDQoJCQkJCSRnbG9iYWxtb2R1bGV2YXJzWyJwYWdlaW5kZXgiXT0kX0dFVFskbW9kaW5mb1sxXS4icGFnZWluZGV4Il07DQoJCQl9DQoJCX1lbHNlaWYoJHJlZGlyZWN0aW9uID09ICJtb2RfcmV3cml0ZSIgfHwgJHJlZGlyZWN0aW9uID09ICJpbnRlcm5hbCIpew0KCQkJJHBhcmFtcyA9IGFycmF5KCk7DQoJCQlpZigkcmVkaXJlY3Rpb24gPT0gIm1vZF9yZXdyaXRlIiAmJiBpc3NldCgkX0dFVFsicGFnZSJdKSl7DQoJCQkJLy8gaWYgd2UgYXJlIHVzaW5nIGFuIGV4dGVybmFsIG1vZF9yZXdyaXRlLCBhc3N1bWluZyB5b3UgYXJlIHVzaW5nIHRoZSB2ZXJ5DQoJCQkJLy8gYmFzaWMgcmV3cml0ZSB3aGljaCBwdXRzIHRoZSBtb2R1bGUgaW5mb3JtYXRpb25zIGluc2lkZSB0aGUgcGFnZSB2YXJpYWJsZQ0KCQkJCSRwYXJ0cyA9IGV4cGxvZGUoIi8iLCRfR0VUWyJwYWdlIl0pOw0KCQkJCWZvcmVhY2goJHBhcnRzIGFzICRwYXJ0KXsNCgkJCQkJaWYoJHBhcnQgIT0gIiIpCSRwYXJhbXNbXSA9ICRwYXJ0Ow0KCQkJCX0NCgkJCX1lbHNlaWYoJHJlZGlyZWN0aW9uID09ICJpbnRlcm5hbCIpew0KCQkJCS8vIGlmIHdlIGFyZSB1c2luZyB0aGUgaW50ZXJuYWwgcHJldHR5IHVybHMNCgkJCQkkcGFydHMgPSBleHBsb2RlKCIvIiwkX1NFUlZFUlsiUkVRVUVTVF9VUkkiXSk7DQoJCQkJJHN0YXJ0ZWQgPSBmYWxzZTsNCgkJCQlmb3JlYWNoKCRwYXJ0cyBhcyAkcGFydCl7DQoJCQkJCWlmKCRzdGFydGVkICYmICRwYXJ0ICE9ICIiKQkkcGFyYW1zW10gPSAkcGFydDsNCgkJCQkJaWYoc3RydG9sb3dlcigkcGFydCkgPT0gImluZGV4LnBocCIpCSRzdGFydGVkID0gdHJ1ZTsNCgkJCQl9DQoJCQl9DQoJCQlpZihpc3NldCgkcGFyYW1zWzBdKSAmJiBzdHJ0b2xvd2VyKCRwYXJhbXNbMF0pID09IHN0cnRvbG93ZXIoJHRoaXMtPkdldE5hbWUoKSkpew0KCQkJCSAvLyB3ZSBhcmUgaW4gYSBtb2R1bGUgYWN0aW9uDQoJCQkJIC8vIHRoaXMgcGFydCBzaG91bGQgYmUgY2hhbmdlZCBpZiB5b3UgY2hhbmdlIHRoZSBwcmV0dHkgdXJscyBzdHJ1Y3R1cmUNCgkJCQlpZighaXNzZXQoJHBhcmFtc1sxXSkgfHwgc3RydG9sb3dlcigkcGFyYW1zWzFdKSA9PSAicXVlcnkiKXsNCg0KCQkJCX1lbHNlaWYoaXNzZXQoJHBhcmFtc1sxXSkgJiYgc3RydG9sb3dlcigkcGFyYW1zWzFdKSA9PSAiZGV0YWlsIil7DQoJCQkJCSRsZXZlbHMgPSAkdGhpcy0+Z2V0X2xldmVsYXJyYXkoKTsNCgkJCQkJJGdsb2JhbG1vZHVsZXZhcnNbIndoYXQiXSA9ICRsZXZlbHNbY291bnQoJGxldmVscyktMV07DQoJCQkJCSRnbG9iYWxtb2R1bGV2YXJzWyJhbGlhcyJdID0gJHBhcmFtc1syXTsNCgkJCQl9ZWxzZXsNCgkJCQkJJGdsb2JhbG1vZHVsZXZhcnNbIndoYXQiXSA9ICRwYXJhbXNbMV07DQoJCQkJCXN3aXRjaChjb3VudCgkcGFyYW1zKSl7DQoJCQkJCQljYXNlIDY6DQoJCQkJCQkJJGdsb2JhbG1vZHVsZXZhcnNbInBhZ2VpbmRleCJdID0gJHBhcmFtc1szXTsNCgkJCQkJCQkkZ2xvYmFsbW9kdWxldmFyc1sibmJwZXJwYWdlIl0gPSAkcGFyYW1zWzRdOw0KCQkJCQkJY2FzZSA0Og0KCQkJCQkJCSRnbG9iYWxtb2R1bGV2YXJzWyJwYXJlbnQiXSA9ICRwYXJhbXNbMl07DQoJCQkJCQkJYnJlYWs7DQoJCQkJCQljYXNlIDU6DQoJCQkJCQkJJGdsb2JhbG1vZHVsZXZhcnNbInBhZ2VpbmRleCJdID0gJHBhcmFtc1syXTsNCgkJCQkJCQkkZ2xvYmFsbW9kdWxldmFyc1sibmJwZXJwYWdlIl0gPSAkcGFyYW1zWzNdOw0KCQkJCQkJCWJyZWFrOw0KCQkJCQl9DQoJCQkJfQ0KCQkJfQ0KCQl9DQoJCXJldHVybiAkZ2xvYmFsbW9kdWxldmFyczsNCgl9DQoJZnVuY3Rpb24gZ2V0X29ianRyZWUoJGN1cmlkLCAkY3VybGV2ZWw9ZmFsc2UsICRmaWVsZD0iaWQiKXsNCgkJLy8gdGhpcyBidWlsZHMgYW4gb2JqZWN0IHRyZWUgKCRpdGVtLT5wYXJlbnRfb2JqZWN0LT5wYXJlbnRfb2JqZWN0Li4uKQ0KCQkvLyB3ZSBmaXJzdCBwdXQgYWxsIHRoZSBwYXJlbnRzIGluIGFuIGFycmF5DQoJCSRwYXJlbnRzID0gYXJyYXkoKTsNCgkJJGxldmVscyA9ICR0aGlzLT5nZXRfbGV2ZWxhcnJheSgpOw0KCQlpZighJGN1cmxldmVsKQkkY3VybGV2ZWwgPSAkbGV2ZWxzW2NvdW50KCRsZXZlbHMpLTFdOw0KCQkkaSA9IGNvdW50KCRsZXZlbHMpOw0KCQkkc3RhcnRlZCA9IGZhbHNlOw0KCQl3aGlsZSgkY3VyaWQgJiYgJGkgPiAwKXsNCgkJCWlmKCRsZXZlbHNbJGkgLTFdID09ICRjdXJsZXZlbCkJJHN0YXJ0ZWQgPSB0cnVlOw0KCQkJaWYoJHN0YXJ0ZWQpew0KCQkJCSRnZXRmdW5jdGlvbiA9ICJnZXRfbGV2ZWxfIi4kbGV2ZWxzWyRpIC0xXTsNCgkJCQkkaXRlbSA9ICR0aGlzLT4kZ2V0ZnVuY3Rpb24oYXJyYXkoJGZpZWxkPT4kY3VyaWQpKTsNCgkJCQkkaXRlbSA9IGlzX2FycmF5KCRpdGVtKT8kaXRlbVswXTokaXRlbTsNCgkJCQkkaXRlbS0+X193aGF0ID0gJGxldmVsc1skaS0xXTsNCgkJCQkkcGFyZW50c1tdID0gJGl0ZW07DQoJCQkJJGZpZWxkID0gImlkIjsNCgkJCQkkY3VyaWQgPSBpc3NldCgkaXRlbS0+cGFyZW50X2lkKT8kaXRlbS0+cGFyZW50X2lkOmZhbHNlOw0KCQkJfQ0KCQkJJGktLTsNCgkJfQ0KCQkNCgkJLy8gbmV4dCwgd2UgcHJvY2VzcyB0aGUgYXJyYXkgb2YgcGFyZW50cyB0byBidWlsZCB0aGUgcGFyZW50IHRyZWUNCgkJJHBhcmVudHRyZWUgPSBmYWxzZTsNCgkJJGkgPSBjb3VudCgkcGFyZW50cykgLSAxOw0KCQl3aGlsZSgkaSA+PSAwKXsNCgkJCWlmKCRwYXJlbnR0cmVlKXsNCgkJCQkkbmV3dHJlZSA9ICRwYXJlbnRzWyRpXTsNCgkJCQkkbmV3dHJlZS0+cGFyZW50X29iamVjdCA9ICRwYXJlbnR0cmVlOw0KCQkJCSRwYXJlbnR0cmVlID0gJG5ld3RyZWU7DQoJCQl9ZWxzZXsNCgkJCQkkcGFyZW50dHJlZSA9ICRwYXJlbnRzWyRpXTsNCgkJCX0NCgkJCSRpLS07DQoJCX0NCgkJJHRoaXMtPmN1cnJlbnR0cmVlID0gJHBhcmVudHRyZWU7DQoJCXJldHVybiAkcGFyZW50dHJlZTsNCgl9DQoJZnVuY3Rpb24gYnVpbGRHbG9iYWxUcmVlKCl7DQoJCS8vIHRoaXMgc2F2ZXMgdGhlIGN1cnJlbnQgdHJlZSBpbiB0aGUgbW9kdWxlLi4uDQoJCSRsZXZlbHMgPSAkdGhpcy0+Z2V0X2xldmVsYXJyYXkoKTsNCgkJJGdsb2IgPSAkdGhpcy0+Z2V0X21vZHVsZUdldFZhcnMoKTsNCgkJaWYoaXNzZXQoJGdsb2JbInBhZ2VpbmRleCJdKSkJJHRoaXMtPmN1cnJlbnRwYWdlaW5kZXggPSAkZ2xvYlsicGFnZWluZGV4Il07DQoJCWlmKGlzc2V0KCRnbG9iWyJhbGlhcyJdKSl7DQoJCQkkdHJlZSA9ICR0aGlzLT5nZXRfb2JqdHJlZSgkZ2xvYlsiYWxpYXMiXSwgJGxldmVsc1tjb3VudCgkbGV2ZWxzKS0xXSwgImFsaWFzIik7DQoJCX1lbHNlaWYoaXNzZXQoJGdsb2JbInBhcmVudCJdKSAmJiBpc3NldCgkZ2xvYlsid2hhdCJdKSl7DQoJCQkkdHJlZSA9ICR0aGlzLT5nZXRfb2JqdHJlZSgkZ2xvYlsicGFyZW50Il0sICR0aGlzLT5nZXRfbmV4dGxldmVsKCRnbG9iWyJ3aGF0Il0sZmFsc2UpLCAiYWxpYXMiKTsNCgkJfQ0KCQkNCgkJaWYoaXNzZXQoJHRyZWUpICYmICR0cmVlKXsNCgkJCSR0aGlzLT5jdXJyZW50dHJlZSA9ICR0cmVlOw0KCQkJLy8gdGhpcyBzYXZlcyB0aGUgc2VsZWN0ZWQgaXRlbSBmb3IgZWFjaCBsZXZlbA0KCQkJJHRoaXMtPnBsY3VycmVudFskdHJlZS0+X193aGF0XSA9ICR0cmVlLT5hbGlhczsNCgkJCXdoaWxlKGlzc2V0KCR0cmVlLT5wYXJlbnRfb2JqZWN0KSl7DQoJCQkJJHRyZWUgPSAkdHJlZS0+cGFyZW50X29iamVjdDsNCgkJCQkkdGhpcy0+cGxjdXJyZW50WyR0cmVlLT5fX3doYXRdID0gJHRyZWUtPmFsaWFzOw0KCQkJfQ0KCQl9DQoJfQ0KCWZ1bmN0aW9uIGZ1bmN0aW9uX21vZGJyZWFkY3J1bWJzKCRwYXJhbXMsICYkc21hcnR5KXsNCgkJLy8gcmVnaXN0ZXJlZCBzbWFydHkgZnVuY3Rpb24gdGhhdCBnZW5lcmF0ZXMgYnJlYWRjcnVtYnMNCgkJLy8gdXNlcyBzaW1pbGFyIHBhcmFtZXRlcnMgdG8gdGhlIGNvcmUgYnJlYWRjcnVtYnMgZnVuY3Rpb24NCgkJaWYoISR0aGlzLT5jdXJyZW50dHJlZSkJCSR0aGlzLT5idWlsZEdsb2JhbFRyZWUoKTsNCgkJDQoJCWlmKCR0aGlzLT5jdXJyZW50dHJlZSl7DQoJCQlnbG9iYWwgJGdDbXM7DQoJCQkkcmV0dXJuaWQgPSAkZ0Ntcy0+dmFyaWFibGVzWyJjb250ZW50X2lkIl07DQoJCQkvLyB3ZSBjcmVhdGUgdGhlIGJyZWFkY3J1bWJzDQoJCQkkY2xhc3NpZCA9IGlzc2V0KCRwYXJhbXNbImNsYXNzaWQiXSk/IiBjbGFzcz1cIiIuJHBhcmFtc1siY2xhc3NpZCJdLiJcIiI6IiI7DQoJCQkkY3VycmVudGNsYXNzaWQgPSBpc3NldCgkcGFyYW1zWyJjdXJyZW50Y2xhc3NpZCJdKT8iIGNsYXNzPVwiIi4kcGFyYW1zWyJjdXJyZW50Y2xhc3NpZCJdLiJcIiI6IiBjbGFzcz1cImxhc3RpdGVtXCIiOw0KCQkJJHN0YXJ0bGV2ZWwgPSBpc3NldCgkcGFyYW1zWyJzdGFydGxldmVsIl0pPyR0aGlzLT5nZXRfbmV4dGxldmVsKCRwYXJhbXNbInN0YXJ0bGV2ZWwiXSwgZmFsc2UpOmZhbHNlOw0KCQkJJGRlbGltaXRlciA9IGlzc2V0KCRwYXJhbXNbImRlbGltaXRlciJdKT8kcGFyYW1zWyJkZWxpbWl0ZXIiXTokdGhpcy0+TGFuZygiYnJlYWRjcnVtYnNfZGVsaW1pdGVyIik7DQoJCQkkaW5pdGlhbCA9IGlzc2V0KCRwYXJhbXNbImluaXRpYWwiXSk/JHBhcmFtc1siaW5pdGlhbCJdOiR0aGlzLT5MYW5nKCJ5b3VhcmVoZXJlIik7DQoNCgkJCSRvdXRwdXQgPSAiIjsNCgkJCSRjdXJyZW50ID0gJHRoaXMtPmN1cnJlbnR0cmVlOw0KCQkJJGdvaW5nb24gPSBmYWxzZTsNCgkJCXdoaWxlKGlzc2V0KCRjdXJyZW50LT5wYXJlbnRfb2JqZWN0KSl7DQoJCQkJJGN1cnJlbnQgPSAkY3VycmVudC0+cGFyZW50X29iamVjdDsNCgkJCQlpZigkY3VycmVudC0+X193aGF0ID09ICRzdGFydGxldmVsKQkkZW5kZWQgPSB0cnVlOw0KCQkJCWlmKCEkZW5kZWQpew0KCQkJCQkkcGFyYW1zID0gYXJyYXkoIndoYXQiPT4kdGhpcy0+Z2V0X25leHRsZXZlbCgkY3VycmVudC0+X193aGF0KSwgInBhcmVudCI9PiRjdXJyZW50LT5hbGlhcyk7DQoJCQkJCSRwcmV0dHl1cmwgPSAkdGhpcy0+QnVpbGRQcmV0dHlVcmxzKCRwYXJhbXMsICRyZXR1cm5pZCk7DQoJCQkJCSRvdXRwdXQgPSAiPHNwYW4iLiRjbGFzc2lkLiI+Ii4kdGhpcy0+Q3JlYXRlTGluaygiIiwgImRlZmF1bHQiLCAkcmV0dXJuaWQsICRjdXJyZW50LT5uYW1lLCAkcGFyYW1zLCAiIiwgZmFsc2UsIGZhbHNlLCAiIiwgZmFsc2UsICRwcmV0dHl1cmwpLiI8L3NwYW4+Ii4kZGVsaW1pdGVyLiRvdXRwdXQ7DQoJCQkJfQ0KCQkJfQ0KCQkJaWYoJG91dHB1dCAhPSAiIikgJG91dHB1dCA9ICRpbml0aWFsLiRvdXRwdXQuIjxzcGFuIi4kY3VycmVudGNsYXNzaWQuIj4iLiR0aGlzLT5jdXJyZW50dHJlZS0+bmFtZS4iPC9zcGFuPiI7DQoJCQkNCgkJCWlmKGlzc2V0KCRwYXJhbXNbImFzc2lnbiJdKSAmJiAkcGFyYW1zWyJhc3NpZ24iXSAhPSAiIil7DQoJCQkJJHNtYXJ0eS0+YXNzaWduKCRwYXJhbXNbImFzc2lnbiJdLCAkb3V0cHV0KTsNCgkJCX1lbHNlew0KCQkJCWVjaG8gJG91dHB1dDsNCgkJCX0NCgkJfQ0KCX0NCglmdW5jdGlvbiBmdW5jdGlvbl9nZXRfbGV2ZWxpdGVtKCRwYXJhbXMsICYkc21hcnR5KXsNCgkJLy8gcmVnaXN0ZXJlZCBzbWFydHkgZnVuY3Rpb24gdGhhdCByZXRyaWV2ZXMgYSBnaXZlbiBpdGVtIChhbGlhcykgb2YgYSBnaXZlbiBsZXZlbCAod2hhdCkNCgkJaWYoCSFpc3NldCgkcGFyYW1zWyJhc3NpZ24iXSkgfHwgJHBhcmFtc1siYXNzaWduIl0gPT0gIiIgfHwgIWlzc2V0KCRwYXJhbXNbIndoYXQiXSkgfHwgIWlzc2V0KCRwYXJhbXNbImFsaWFzIl0pICkJcmV0dXJuIGZhbHNlOw0KCQlpZighaW5fYXJyYXkoJHBhcmFtc1sid2hhdCJdLCAkdGhpcy0+Z2V0X2xldmVsYXJyYXkoKSkpCXJldHVybiBmYWxzZTsNCgkJJGdldGZ1bmN0aW9uID0gImdldF9sZXZlbF8iLiRwYXJhbXNbIndoYXQiXTsNCgkJJHJlc3VsdHMgPSAkdGhpcy0+JGdldGZ1bmN0aW9uKGFycmF5KCJhbGlhcyI9PiRwYXJhbXNbImFsaWFzIl0pKTsNCgkJJGl0ZW0gPSBpc3NldCgkcmVzdWx0c1swXSk/JHJlc3VsdHNbMF06ZmFsc2U7DQoJCSRzbWFydHktPmFzc2lnbigkcGFyYW1zWyJhc3NpZ24iXSwgJGl0ZW0pOw0KCX0NCglmdW5jdGlvbiBjb3VudHNvbWV0aGluZygkdGFibGVuYW1lLCR3aGF0PSJpZCIsJHdoZXJlPWFycmF5KCksJHdoZXJlc3RyaW5nPWZhbHNlLCR3aGVyZXZhbHVlcz1hcnJheSgpLCRwYXJlbnQ9ZmFsc2Upew0KCQkvLyByZXR1cm5zIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgaW4gYSB0YWJsZSBjb3JyZXNwb25kaW5nIHRvIGNyaXRlcmlhcw0KCQlpZighJHBhcmVudCAmJiBpc3NldCgkd2hlcmVbInBhcmVudCJdKSkJdW5zZXQoJHdoZXJlWyJwYXJlbnQiXSk7DQoJCSRkYiA9JiAkdGhpcy0+R2V0RGIoKTsNCgkJaWYoJHdoZXJlc3RyaW5nKXsNCgkJCSR3aGVyZXN0cmluZyA9ICIgV0hFUkUgIi4kd2hlcmVzdHJpbmc7DQoJCX1lbHNlew0KCQkJJHdoZXJlc3RyaW5nID0gIiI7DQoJCQkkd2hlcmV2YWx1ZXMgPSBhcnJheSgpOw0KCQkJZm9yZWFjaCgkd2hlcmUgYXMgJGtleT0+JHZhbHVlKXsNCgkJCQlpZigka2V5ID09ICJwYXJlbnQiKXsNCgkJCQkJJHdoZXJlc3RyaW5nIC49ICgkd2hlcmVzdHJpbmcgPT0gIiI/IiBXSEVSRSAiOiIgQU5EICIpLiJBLnBhcmVudD1CLmlkIEFORCBCLmFsaWFzPT8iOw0KCQkJCX1lbHNlew0KCQkJCQkkd2hlcmVzdHJpbmcgLj0gKCR3aGVyZXN0cmluZyA9PSAiIj8iIFdIRVJFICI6IiBBTkQgIikuIkEuIi4ka2V5LiI9PyI7DQoJCQkJfQ0KCQkJCSR3aGVyZXZhbHVlc1tdID0gJHZhbHVlOw0KCQkJfQ0KCQl9DQoJCSRxdWVyeSA9ICJTRUxFQ1QgQ09VTlQoQS4kd2hhdCkgb3VyY291bnQgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlXyIuJHRoaXMtPkdldE5hbWUoKS4iXyIuJHRhYmxlbmFtZS4iIEEiOw0KCQlpZigkcGFyZW50ICYmIGlzc2V0KCR3aGF0WyJwYXJlbnQiXSkpCSRxdWVyeSAuPSAiLCAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlXyIuJHRoaXMtPkdldE5hbWUoKS4iXyIuJHBhcmVudC4iIEIiOw0KCQkkcXVlcnkgLj0gJHdoZXJlc3RyaW5nOw0KCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCR3aGVyZXZhbHVlcyk7DQoJCWlmICgkZGJyZXN1bHQgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSl7DQoJCQlyZXR1cm4gJHJvd1sib3VyY291bnQiXTsNCgkJfWVsc2V7DQoJCQlyZXR1cm4gMDsNCgkJfQ0KCX0NCgkNCgkNCglmdW5jdGlvbiBhZG1pbl9wYWdpbmF0ZSgkbGV2ZWwsJG5icGVycGFnZSwkaWQsJHJldHVybmlkLCRwYXJhbXMpew0KCQkvLyBzYW1lIGFzIHBhZ2luYXRlLCBidXQgZm9yIHRoZSBhZG1pbiBwYW5lbHMNCgkJJHdoZXJlY2xhdXNlID0gYXJyYXkoKTsNCgkJaWYoaXNzZXQoJHBhcmFtc1skbGV2ZWwuIl9zaG93b25seSJdKSAmJiAkcGFyYW1zWyRsZXZlbC4iX3Nob3dvbmx5Il0gIT0gIiIpCSR3aGVyZWNsYXVzZVsicGFyZW50Il0gPSAkcGFyYW1zWyRsZXZlbC4iX3Nob3dvbmx5Il07DQoJCSR0b3RhbCA9ICR0aGlzLT5jb3VudHNvbWV0aGluZygkbGV2ZWwsImlkIiwkd2hlcmVjbGF1c2UpOw0KCQkkbmV4dHBhZ2UgPSBmYWxzZTsNCgkJJHByZXZpb3VzcGFnZSA9IGZhbHNlOw0KCQkkcGFnZWluZm8gPSBmYWxzZTsNCgkJJHBhZ2VzID0gZmFsc2U7DQoJCWlmKCRuYnBlcnBhZ2UgPiAwICYmICR0b3RhbCA+ICRuYnBlcnBhZ2Upew0KCQkJJGN1cnBhZ2UgPSBpc3NldCgkcGFyYW1zWyRsZXZlbC4iX3BhZ2UiXSk/JHBhcmFtc1skbGV2ZWwuIl9wYWdlIl06MDsNCgkJCSRuYnBhZ2VzID0gY2VpbCgkdG90YWwvJG5icGVycGFnZSk7DQoJCQkkcGFnZWluZm8gPSAoKCRjdXJwYWdlICogJG5icGVycGFnZSkgKyAxKTsNCgkJCSR0bXBlbmQgPSAkcGFnZWluZm8gKyAkbmJwZXJwYWdlIC0gMTsNCgkJCWlmKCR0bXBlbmQgPiAkdG90YWwpCSR0bXBlbmQgPSAkdG90YWw7DQoJCQlpZigkdG1wZW5kICE9ICRwYWdlaW5mbykJJHBhZ2VpbmZvIC49ICItIi4kdG1wZW5kOw0KCQkJJHBhZ2VpbmZvIC49ICIgLyAiLiR0b3RhbDsNCgkJCSRwYWdlcGFyYW1zID0gYXJyYXkoImFjdGl2ZV90YWIiPT4kbGV2ZWwpOw0KCQkJaWYoaXNzZXQoJHBhcmFtc1skbGV2ZWwuIl9zaG93b25seSJdKSAmJiAkcGFyYW1zWyRsZXZlbC4iX3Nob3dvbmx5Il0gIT0gIiIpew0KCQkJCSRwYWdlcGFyYW1zWyRsZXZlbC4iX3Nob3dvbmx5Il0gPSAkcGFyYW1zWyRsZXZlbC4iX3Nob3dvbmx5Il07DQoJCQl9DQoJCQlpZigkY3VycGFnZSA+IDApew0KCQkJCSRwYWdlcGFyYW1zWyRsZXZlbC4iX3BhZ2UiXSA9ICRjdXJwYWdlIC0gMTsNCgkJCQkkcHJldmlvdXNwYWdlID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAiZGVmYXVsdGFkbWluIiwgJHJldHVybmlkLCAkdGhpcy0+TGFuZygicHJldmlvdXNwYWdlIiksICRwYWdlcGFyYW1zKTsNCgkJCX0NCgkJCWlmKCRjdXJwYWdlIDwgKCRuYnBhZ2VzLTEpKXsNCgkJCQkkcGFnZXBhcmFtc1skbGV2ZWwuIl9wYWdlIl0gPSAkY3VycGFnZSArIDE7DQoJCQkJJG5leHRwYWdlID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAiZGVmYXVsdGFkbWluIiwgJHJldHVybmlkLCAkdGhpcy0+TGFuZygibmV4dHBhZ2UiKSwgJHBhZ2VwYXJhbXMpOw0KCQkJfQ0KCQkJJGkgPSAwOw0KCQkJJHBhZ2VzID0gJHRoaXMtPkxhbmcoInBhZ2VzIik7DQoJCQl3aGlsZSgkaSA8ICRuYnBhZ2VzKXsNCgkJCQlpZigkaSA+IDApCSRwYWdlcyAuPSAiJm5ic3A7ICI7DQoJCQkJaWYoJGkgPT0gJGN1cnBhZ2Upew0KCQkJCQkkcGFnZXMgLj0gJGk7DQoJCQkJfWVsc2V7DQoJCQkJCSRwYWdlcGFyYW1zWyRsZXZlbC4iX3BhZ2UiXSA9ICRpOw0KCQkJCQkkcGFnZXMgLj0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAiZGVmYXVsdGFkbWluIiwgJHJldHVybmlkLCAkaSwgJHBhZ2VwYXJhbXMpOw0KCQkJCX0NCgkJCQkkaSsrOw0KCQkJfQ0KCQl9DQoJCXJldHVybiBhcnJheSgkcGFnZWluZm8sICRuZXh0cGFnZSwgJHByZXZpb3VzcGFnZSwgJHBhZ2VzKTsNCgl9DQoNCglmdW5jdGlvbiBwYWdpbmF0ZSgkd2hhdCwkdG90YWwsJGlkLCRyZXR1cm5pZCwkcGFyYW1zLCRhY3Rpb249ImRlZmF1bHQiKXsNCgkJLy8gZm9yIGZyb250ZW5kIHVzYWdlDQoJCS8vIHRoaXMgYXNzaWducyB0aGUgZGlmZmVyZW50IHBhcnRzIG9mIHRoZSBwYWdlIG1lbnUNCgkJDQoJCSRuYnBlcnBhZ2UgPSBpc3NldCgkcGFyYW1zWyJuYnBlcnBhZ2UiXSk/JHBhcmFtc1sibmJwZXJwYWdlIl06MDsNCgkJJG5icGVycGFnZSA9IChpbnQpICRuYnBlcnBhZ2U7DQoJCWlmKCRuYnBlcnBhZ2UgPT0gMCB8fCAkbmJwZXJwYWdlID49ICR0b3RhbCl7DQoJCQkvLyB3ZSdyZSBub3QgdXNpbmcgcGFnaW5hdGlvbg0KCQkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKGFycmF5KCJwYWdlX3Nob3dpbmciPT5mYWxzZSwicGFnZV90b3RhbGl0ZW1zIj0+ZmFsc2UsInBhZ2VfcGFnZW51bWJlcnMiPT5mYWxzZSwicGFnZV9uZXh0Ij0+ZmFsc2UsInBhZ2VfcHJldmlvdXMiPT5mYWxzZSkpOw0KCQkJcmV0dXJuIGZhbHNlOw0KCQl9DQoJCQ0KCQkvLyB3ZSdyZSB1c2luZyBwYWdpbmF0aW9uDQoJCSRjdXJwYWdlID0gaXNzZXQoJHBhcmFtc1sicGFnZWluZGV4Il0pPyRwYXJhbXNbInBhZ2VpbmRleCJdOjE7DQoJCSRuYnBhZ2VzID0gY2VpbCgkdG90YWwvJG5icGVycGFnZSk7DQoJCSRzaG93aW5nID0gKCgoJGN1cnBhZ2UgLTEpICogJG5icGVycGFnZSkgKyAxKTsNCgkJJHRtcGVuZCA9ICRzaG93aW5nICsgJG5icGVycGFnZSAtIDE7DQoJCWlmKCR0bXBlbmQgPiAkdG90YWwpCSR0bXBlbmQgPSAkdG90YWw7DQoJCWlmKCR0bXBlbmQgIT0gJHNob3dpbmcpCSRzaG93aW5nIC49ICItIi4kdG1wZW5kOw0KCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oInBhZ2Vfc2hvd2luZyIsJHNob3dpbmcpOw0KCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oInBhZ2VfdG90YWxpdGVtcyIsJHRvdGFsKTsNCg0KCQkkbmV3cGFyYW1zID0gJHBhcmFtczsNCgkJJHByZXZpb3VzbGluayA9IGZhbHNlOw0KCQkkbmV4dGxpbmsgPSBmYWxzZTsNCgkJaWYoJGN1cnBhZ2UgPiAxKXsNCgkJCS8vIHdlIGNyZWF0ZSB0aGUgbGluayB0byB0aGUgcHJldmlvdXMgcGFnZQ0KCQkJJG5ld3BhcmFtc1sicGFnZWluZGV4Il0gPSAkY3VycGFnZSAtIDE7DQoJCQkkcHJldmlvdXNsaW5rID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAkYWN0aW9uLCAkcmV0dXJuaWQsICImbHQ7IiwgJG5ld3BhcmFtcywgIiIsIGZhbHNlLCB0cnVlLCAiIGNsYXNzPVwicHJldmlvdXNsaW5rXCIiLCBmYWxzZSwgKCRhY3Rpb24gIT0gImRlZmF1bHQiKT8iIjokdGhpcy0+QnVpbGRQcmV0dHlVcmxzKCRuZXdwYXJhbXMsICRyZXR1cm5pZCkpOw0KCQl9DQoJCWlmKCRjdXJwYWdlIDwgJG5icGFnZXMpew0KCQkJLy8gd2UgY3JlYXRlIHRoZSBsaW5rIHRvIHRoZSBuZXh0IHBhZ2UNCgkJCSRuZXdwYXJhbXNbInBhZ2VpbmRleCJdID0gJGN1cnBhZ2UgKyAxOw0KCQkJJG5leHRsaW5rID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAkYWN0aW9uLCAkcmV0dXJuaWQsICImZ3Q7IiwgJG5ld3BhcmFtcywgIiIsIGZhbHNlLCB0cnVlLCAiIGNsYXNzPVwibmV4dGxpbmtcIiIsIGZhbHNlLCAoJGFjdGlvbiAhPSAiZGVmYXVsdCIpPyIiOiR0aGlzLT5CdWlsZFByZXR0eVVybHMoJG5ld3BhcmFtcywgJHJldHVybmlkKSk7DQoJCX0NCgkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJwYWdlX25leHQiLCRuZXh0bGluayk7DQoJCSR0aGlzLT5zbWFydHktPmFzc2lnbigicGFnZV9wcmV2aW91cyIsJHByZXZpb3VzbGluayk7CQ0KCQkJCQ0KCQkvLyB3ZSBjcmVhdGUgbGlua3MgZm9yIGVhY2ggcGFnZSBudW1iZXINCgkJJGkgPSAxOw0KCQkkbGlua3MgPSBhcnJheSgpOw0KCQl3aGlsZSgkaSA8PSAkbmJwYWdlcyAmJiAkbmJwYWdlcyA+IDEpew0KCQkJJG5ld3BhcmFtc1sicGFnZWluZGV4Il0gPSAkaTsNCgkJCWlmKCRpID09ICRjdXJwYWdlKXsNCgkJCQkkbGlua3NbXSA9ICI8YSBjbGFzcz1cInBhZ2VudW1iZXIgY3VycmVudFwiPiIuJGkuIjwvYT4iOw0KCQkJfWVsc2V7DQoJCQkJJGxpbmtzW10gPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICRhY3Rpb24sICRyZXR1cm5pZCwgJGksICRuZXdwYXJhbXMsICIiLCBmYWxzZSwgdHJ1ZSwgIiBjbGFzcz1cInBhZ2VudW1iZXJcIiIsIGZhbHNlLCAoJGFjdGlvbiAhPSAiZGVmYXVsdCIpPyIiOiR0aGlzLT5CdWlsZFByZXR0eVVybHMoJG5ld3BhcmFtcywgJHJldHVybmlkKSk7DQoJCQl9DQoJCQkkaSsrOw0KCQl9DQoJCSRpID0gMDsNCgkJJHRtcGZsYWcgPSB0cnVlOw0KCQkkbWF4cGFnZXMgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgibWF4c2hvd25wYWdlcyIsNyk7DQoJCSRtYXhwYWdlcyA9IChpbnQpICRtYXhwYWdlczsNCgkJJHBhZ2VtZW51ID0gIiI7DQoJCWlmKCRtYXhwYWdlcyA8IDEpCSRtYXhwYWdlcyA9IDk5OTsNCgkJd2hpbGUoJGkgPCBjb3VudCgkbGlua3MpKXsNCgkJCWlmKCRpIDwgKCRtYXhwYWdlcy0xKSB8fCAkbmJwYWdlcyA8PSAkbWF4cGFnZXMpew0KCQkJCSRwYWdlbWVudSAuPSAoJHBhZ2VtZW51ID09ICIiPyIiOiR0aGlzLT5MYW5nKCJwYWdlbWVudWRlbGltaXRlciIpKS4kbGlua3NbJGldOw0KCQkJfWVsc2VpZigkaSA9PSBjb3VudCgkbGlua3MpKXsNCgkJCQkkcGFnZW1lbnUgLj0gJGxpbmtzWyRpXTsNCgkJCX1lbHNlaWYoJHRtcGZsYWcpew0KCQkJCSR0bXBmbGFnID0gZmFsc2U7DQoJCQkJJHBhZ2VtZW51IC49ICI8c3BhbiBjbGFzcz1cInBhZ2VtZW51b3ZlcmZsb3dcIj4iLiR0aGlzLT5MYW5nKCJwYWdlbWVudW92ZXJmbG93IikuIjwvc3Bhbj4iOw0KCQkJfQ0KCQkJJGkrKzsNCgkJfQ0KCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oInBhZ2VfcGFnZW51bWJlcnMiLCRwYWdlbWVudSk7DQoJfQ0KDQoJZnVuY3Rpb24gZ2V0X2Rpc3RhbmNldG9sZXZlbCgkcGFyZW50bmFtZSwkY2hpbGRuYW1lPWZhbHNlKXsNCgkJLy8gZ2V0IHRoZSBkaXN0YW5jZSBiZXR3ZWVuIHR3byBsZXZlbHMgKG1vc3QgbGlrZWx5IGJldHdlZW4gYSBsZXZlbCBhbmQgdGhlIGZpbmFsIGxldmVsKQ0KCQkkbGV2ZWxzID0gJHRoaXMtPmdldF9sZXZlbGFycmF5KCk7DQoJCWlmKCEkY2hpbGRuYW1lKQkkY2hpbGRuYW1lID0gJGxldmVsc1tjb3VudCgkbGV2ZWxzKS0xXTsNCgkJJHBhcmVudHBvc2l0aW9uID0gZmFsc2U7DQoJCSRjaGlsZHBvc2l0aW9uID0gZmFsc2U7DQoJCSRjb3VudGVyID0gMDsNCgkJZm9yZWFjaCgkbGV2ZWxzIGFzICRsZXZlbCl7DQoJCQkkY291bnRlcisrOw0KCQkJaWYoJGxldmVsID09ICRwYXJlbnRuYW1lKSAkcGFyZW50cG9zaXRpb24gPSAkY291bnRlcjsNCgkJCWlmKCRsZXZlbCA9PSAkY2hpbGRuYW1lKSAkY2hpbGRwb3NpdGlvbiA9ICRjb3VudGVyOw0KCQl9DQoJCWlmKCRjaGlsZHBvc2l0aW9uICYmICRwYXJlbnRwb3NpdGlvbil7DQoJCQlyZXR1cm4gYWJzKCRwYXJlbnRwb3NpdGlvbiAtICRjaGlsZHBvc2l0aW9uKTsNCgkJfQ0KCX0NCglmdW5jdGlvbiBnZXRfbmV4dGxldmVsKCRjdXJsZXZlbCwkZmluZGNoaWxkPXRydWUpew0KCQkvLyByZXR1cm4gdGhlIG5hbWUgb2YgdGhlIGxldmVsIGJlbG93ICgkZmluZGNoaWxkPXRydWUpIG9yIGFib3ZlICgkZmluZGNoaWxkPWZhbHNlKQ0KCQkkbGV2ZWxzID0gJHRoaXMtPmdldF9sZXZlbGFycmF5KCk7DQoJCSRpID0gMDsNCgkJJHdhbnRlZGxldmVsID0gZmFsc2U7DQoJCXdoaWxlKCRpIDwgY291bnQoJGxldmVscykpew0KCQkJJG5leHQgPSAkZmluZGNoaWxkPyRpKzE6JGktMTsNCgkJCWlmKCRsZXZlbHNbJGldID09ICRjdXJsZXZlbCAmJiBpc3NldCgkbGV2ZWxzWyRuZXh0XSkpICR3YW50ZWRsZXZlbCA9ICRsZXZlbHNbJG5leHRdOw0KCQkJJGkrKzsNCgkJfQ0KCQlyZXR1cm4gJHdhbnRlZGxldmVsOw0KCX0NCglmdW5jdGlvbiBnZXRfcGFyZW50cygkcGFyZW50bmFtZSwkY2hpbGRuYW1lLCRjaGlsZGlkKXsNCgkJLy8gd2hlbiB1c2luZyB0aGUgc2hhcmVjaGlsZHJlbiBvcHRpb24sIHJldHJpZXZlcyB0aGUgcGFyZW50cyBvZiBhIGdpdmVuIGVsZW1lbnQNCgkJJGRiID0mICR0aGlzLT5HZXREYigpOw0KCQkkcXVlcnkgPSAiU0VMRUNUICIuJHBhcmVudG5hbWUuIl9pZCBwYXJlbnRpZCBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfIi4kdGhpcy0+R2V0TmFtZSgpLiJfIi4kcGFyZW50bmFtZS4iX2hhc18iLiRjaGlsZG5hbWUuIiBXSEVSRSAiLiRjaGlsZG5hbWUuIl9pZD0/IjsNCgkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSxhcnJheSgkY2hpbGRpZCkpOw0KCQkkcGFyZW50cyA9IGFycmF5KCk7DQoJCXdoaWxlICgkZGJyZXN1bHQgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSl7DQoJCQkkcGFyZW50c1tdID0gJHJvd1sicGFyZW50aWQiXTsNCgkJfQ0KCQlyZXR1cm4gJHBhcmVudHM7DQoJfQ0KCWZ1bmN0aW9uIGdldF9vcHRpb25zKCR0YWJsZW5hbWUsJG9ubHlhY3RpdmU9ZmFsc2UsJGZ1bGxvYmplY3Q9ZmFsc2Upew0KCQkvLyByZXR1cm5zIHRoZSBlbGVtZW50cyBvZiBhbnkgdGFibGUgYXMgb3B0aW9ucyB0byB1c2UgZm9yIGEgZHJvcGRvd24gbGlzdA0KCQkvLyByZXR1cm5zIGFuIGFycmF5IG9mICRsYWJlbD0+JHZhbHVlDQoJCSRvcmRlcmJ5bmFtZSA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCJvcmRlcmJ5bmFtZSIsZmFsc2UpOw0KCQkkZGIgPSYgJHRoaXMtPkdldERiKCk7DQoJCSRxdWVyeSA9ICJTRUxFQ1QgIi4oJGZ1bGxvYmplY3Q/IioiOiJpZCwgbmFtZSIpLiIgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlXyIuJHRoaXMtPkdldE5hbWUoKS4iXyIuJHRhYmxlbmFtZTsNCgkJaWYoJG9ubHlhY3RpdmUpCSRxdWVyeSAuPSAiIFdIRVJFIGFjdGl2ZT0xIjsNCgkJJHF1ZXJ5IC49ICIgT1JERVIgQlkgIi4oJG9yZGVyYnluYW1lPyJuYW1lIjoiaXRlbV9vcmRlciIpOw0KCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsNCgkJJG9wdGlvbnMgPSBhcnJheSgpOw0KCQl3aGlsZSAoJGRicmVzdWx0ICYmICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpew0KCQkJaWYoJGZ1bGxvYmplY3Qpew0KCQkJCSRvYmogPSBuZXcgU3RkQ2xhc3MoKTsNCgkJCQlmb3JlYWNoKCRyb3cgYXMgJGtleT0+JHZhbHVlKQkkb2JqLT4ka2V5ID0gJHZhbHVlOw0KCQkJCSRvcHRpb25zW10gPSAkb2JqOw0KCQkJfWVsc2V7DQoJCQkJJG9wdGlvbnNbJHJvd1sibmFtZSJdXSA9ICRyb3dbImlkIl07DQoJCQl9DQoJCX0NCgkJDQoJCXJldHVybiAkb3B0aW9uczsNCgl9DQoJZnVuY3Rpb24gZ2V0X2ZpZWxkb3B0aW9ucygkZmllbGQsJGZ1bGxvYmplY3Q9ZmFsc2Upew0KCQkvLyByZXR1cm5zIGZpZWxkIG9wdGlvbnMgYXMgb3B0aW9ucyB0byB1c2UgZm9yIGEgZHJvcGRvd24gbGlzdA0KCQkkZGIgPSYgJHRoaXMtPkdldERiKCk7DQoJCSRxdWVyeSA9ICJTRUxFQ1QgKiBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfIi4kdGhpcy0+R2V0TmFtZSgpLiJfZmllbGRvcHRpb25zIFdIRVJFIGZpZWxkPT8gT1JERVIgQlkgaXRlbV9vcmRlciI7DQoJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksYXJyYXkoJGZpZWxkKSk7DQoJCSRvcHRpb25zID0gYXJyYXkoKTsNCgkJd2hpbGUgKCRkYnJlc3VsdCAmJiAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKXsNCgkJCWlmKCRmdWxsb2JqZWN0KXsNCgkJCQkkb2JqID0gbmV3IFN0ZENsYXNzKCk7DQoJCQkJZm9yZWFjaCgkcm93IGFzICRrZXk9PiR2YWx1ZSkJJG9iai0+JGtleSA9ICR2YWx1ZTsNCgkJCQkkb3B0aW9uc1tdID0gJG9iajsNCgkJCX1lbHNlew0KCQkJCSRvcHRpb25zWyRyb3dbIm5hbWUiXV0gPSAkcm93WyJpZCJdOw0KCQkJfQ0KCQl9DQoJCQ0KCQlyZXR1cm4gJG9wdGlvbnM7DQoJfQ0KCWZ1bmN0aW9uIGdldF9wYWdlaWQoJGFsaWFzKXsNCgkJLy8gcmV0dXJucyB0aGUgcGFnZSBpZCBmcm9tIGFuIGFsaWFzDQoJCWdsb2JhbCAkZ0NtczsNCgkJJG1hbmFnZXIgPSYgJGdDbXMtPkdldEhpZXJhcmNoeU1hbmFnZXIoKTsNCgkJJG5vZGUgPSYgJG1hbmFnZXItPnN1cmVHZXROb2RlQnlBbGlhcygkYWxpYXMpOw0KCQlpZiAoaXNzZXQoJG5vZGUpKSB7DQoJCQkkY29udGVudCA9JiAkbm9kZS0+R2V0Q29udGVudCgpOwkNCgkJCWlmIChpc3NldCgkY29udGVudCkpCXJldHVybiAkY29udGVudC0+SWQoKTsNCgkJfWVsc2V7DQoJCQkkbm9kZSA9JiAkbWFuYWdlci0+c3VyZUdldE5vZGVCeUlkKCRhbGlhcyk7DQoJCQlpZiAoaXNzZXQoJG5vZGUpKSByZXR1cm4gJGFsaWFzOw0KCQl9DQoJfQ0KCWZ1bmN0aW9uIGFkZGZyb250ZW5kdXJscygkaXRlbSwkcGFyYW1zLCRpZCwkcmV0dXJuaWQpew0KCQkvLyBhZGRzICRpdGVtLT5kZXRhaWxsaW5rIGFuZCAkaXRlbS0+ZGV0YWlsdXJsIHRvIGEgZ2l2ZW4gJGl0ZW0NCgkJJG5leHRsZXZlbCA9ICR0aGlzLT5nZXRfbmV4dGxldmVsKCRpdGVtLT5fX3doYXQpOw0KCQlpZighJG5leHRsZXZlbCl7DQoJCQkkbmV3cGFyYW1zID0gYXJyYXkoIndoYXQiPT4kaXRlbS0+X193aGF0LCAiYWxpYXMiPT4kaXRlbS0+YWxpYXMpOw0KCQl9ZWxzZXsNCgkJCSRuZXdwYXJhbXMgPSBhcnJheSgid2hhdCI9PiRuZXh0bGV2ZWwsICJwYXJlbnQiPT4kaXRlbS0+YWxpYXMpOw0KCQkJaWYoaXNzZXQoJHBhcmFtc1siZm9yY2VsaXN0Il0pICYmICRwYXJhbXNbImZvcmNlbGlzdCJdKQkkbmV3cGFyYW1zWyJmb3JjZWxpc3QiXSA9IHRydWU7DQoJCQlpZihpc3NldCgkcGFyYW1zWyJuYnBlcnBhZ2UiXSkgJiYgJHBhcmFtc1sibmJwZXJwYWdlIl0gPiAwKQkkbmV3cGFyYW1zWyJuYnBlcnBhZ2UiXSA9ICRwYXJhbXNbIm5icGVycGFnZSJdOw0KCQkJaWYoaXNzZXQoJHBhcmFtc1sicGFnZWluZGV4Il0pICYmICRwYXJhbXNbInBhZ2VpbmRleCJdID4gMSkJJG5ld3BhcmFtc1sicGFnZWluZGV4Il0gPSAkcGFyYW1zWyJwYWdlaW5kZXgiXTsNCgkJfQ0KCQkkaW5saW5lID0gKGlzc2V0KCRwYXJhbXNbImlubGluZSJdKSAmJiAkcGFyYW1zWyJpbmxpbmUiXSk/dHJ1ZTpmYWxzZTsNCgkJaWYoJGlubGluZSkJJG5ld3BhcmFtc1siaW5saW5lIl0gPSB0cnVlOw0KCQkkaXRlbS0+ZGV0YWlsbGluayA9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgImRlZmF1bHQiLCAkcmV0dXJuaWQsICRpdGVtLT5uYW1lLCAkbmV3cGFyYW1zLCAiIiwgZmFsc2UsICRpbmxpbmUsICIiLCBmYWxzZSwgJHRoaXMtPkJ1aWxkUHJldHR5VXJscygkbmV3cGFyYW1zLCAkcmV0dXJuaWQpKTsNCgkJJGl0ZW0tPmRldGFpbHVybCA9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgImRlZmF1bHQiLCAkcmV0dXJuaWQsICIiLCAkbmV3cGFyYW1zLCAiIiwgdHJ1ZSwgJGlubGluZSwgIiIsIGZhbHNlLCAkdGhpcy0+QnVpbGRQcmV0dHlVcmxzKCRuZXdwYXJhbXMsICRyZXR1cm5pZCkpOw0KCQlyZXR1cm4gJGl0ZW07DQoJfQ0KCWZ1bmN0aW9uIGFkZENhcnRVcmxzKCRpdGVtbGlzdCwkaWQsJHJldHVybmlkKXsNCgkJLy8gZm9yIGV2ZW50dWFsIHVzZSB3aXRoIENhcnRNYWRlU2ltcGxlDQoJCS8vIGhvd2V2ZXIsIGludGVncmF0aW9uIHJlcXVpcmVzIGNoYW5nZXMgdG8gQ2FydE1hZGVTaW1wbGUNCgkJJENhcnRNYWRlU2ltcGxlID0gZmFsc2U7DQoJCWlmIChpc3NldCgkZ0Ntcy0+bW9kdWxlc1siQ2FydE1hZGVTaW1wbGUiXSkgJiYgJGdDbXMtPm1vZHVsZXNbIkNhcnRNYWRlU2ltcGxlIl1bImFjdGl2ZSJdKQkkQ2FydE1hZGVTaW1wbGUgPSAkZ0Ntcy0+bW9kdWxlc1siQ2FydE1hZGVTaW1wbGUiXVsib2JqZWN0Il07DQoJCWlmKCEkQ2FydE1hZGVTaW1wbGUpCXJldHVybiAkaXRlbWxpc3Q7DQoJCSRjYXJ0cGFyYW1zID0gYXJyYXkoInBlcmZhY3Rpb24iPT4iYWRkX3Byb2R1Y3QiLCAicXR5Ij0+MSwgInJldHVybm1vZCI9PiR0aGlzLT5HZXROYW1lKCkpOw0KCQkkbmV3bGlzdCA9IGFycmF5KCk7DQoJCWZvcmVhY2goJGl0ZW1saXN0IGFzICRpdGVtKXsNCgkJCSRjYXJ0cGFyYW1zWyJwcm9kdWN0X2lkIl0gPSAkaXRlbS0+aWQ7DQoJCQkkY2FydHBhcmFtc1sibmFtZSJdID0gJGl0ZW0tPm5hbWU7DQoJCQkkaXRlbS0+YWRkdG9jYXJ0bGluayA9ICRDYXJ0TWFkZVNpbXBsZS0+Q3JlYXRlTGluaygkaWQsICJjYXJ0IiwgJHJldHVybmlkLCAkdGhpcy0+TGFuZygiYWRkdG9jYXJ0IiksICRjYXJ0cGFyYW1zKTsNCgkJCSRpdGVtLT5hZGR0b2NhcnR1cmwgPSAkQ2FydE1hZGVTaW1wbGUtPkNyZWF0ZUxpbmsoJGlkLCAiY2FydCIsICRyZXR1cm5pZCwgIiIsICRjYXJ0cGFyYW1zLCAiIiwgdHJ1ZSk7DQoJCQlhcnJheV9wdXNoKCRuZXdsaXN0LCAkaXRlbSk7DQoJCX0NCgkJcmV0dXJuICRuZXdsaXN0Ow0KCX0NCglmdW5jdGlvbiBhZGRhZG1pbmxpbmtzKCRpdGVtLCRwYXJhbXMsJGlkLCRyZXR1cm5pZCl7DQoJCS8vIGFkZHMgdGhlIGFkbWluIGxpbmtzIHRvIHRoZSBsZXZlbCBpdGVtcy4uLg0KCQkvKiAkcGFyYW1zIDogdGhlIGJhc2UgcGFyYW1ldGVycyBmb3IgdGhlIGFkbWluIGxpbmtzDQoJCQkJcHJlZml4DQoJCQkJdGFibGVuYW1lDQoJCQkJY2hpbGQgKGlmIHRoZSBsZXZlbCBoYXMgYSBjaGlsZCBsZXZlbCwgdGhlIG5hbWUgb2YgdGhlIGNoaWxkIGxldmVsKQ0KCQkJCWxldmVsbmFtZQ0KCQkJCXBhcmVudGRlZmF1bHQgKGJvb2wuLi4gd2hldGhlciBvciBub3QgdGhlcmUgaXMgYSBkZWZhdWx0IGVsZW1lbnQgZm9yIGVhY2ggcGFyZW50KQ0KCQkJCW9yZGVyYnlwYXJlbnQgKGJvb2wpDQoJCQkJYWRkZmlsZXMNCgkJCQlzaGFyZWNoaWxkcmVuIChib29sKQ0KCQkJCXNoYXJlZGJ5cGFyZW50cyAoYm9vbCkNCgkJCQlmaWxlcyAoc3RyaW5nLGNzdikNCgkJKi8NCg0KCQlnbG9iYWwgJGdDbXM7DQoJCSRhZG1pbnRoZW1lID0gJGdDbXMtPnZhcmlhYmxlc1siYWRtaW50aGVtZSJdOw0KCQkNCgkJaWYoICR0aGlzLT5HZXRQcmVmZXJlbmNlKCJyZXN0cmljdF9wZXJtaXNzaW9ucyIsZmFsc2UpICYmICEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCR0aGlzLT5HZXROYW1lKCkuIl9hZHZhbmNlZCIpICYmICEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCR0aGlzLT5HZXROYW1lKCkuIl9tYW5hZ2VfIi4kcGFyYW1zWyJsZXZlbG5hbWUiXSkgKXsNCgkJCS8vIG5vIGFjY2VzcyAtIHdlIGRvbid0IGNyZWF0ZSBsaW5rcw0KCQkJJGl0ZW0tPmVkaXRsaW5rID0gJGl0ZW0tPm5hbWU7DQoJCQkkaXRlbS0+ZGVsZXRlbGluayA9ICIiOw0KCQkJJGl0ZW0tPm1vdmVsaW5rcyA9ICIiOw0KCQkJJGl0ZW0tPnRvZ2dsZWFjdGl2ZSA9ICRpdGVtLT5hY3RpdmU9PTE/JGFkbWludGhlbWUtPkRpc3BsYXlJbWFnZSgiaWNvbnMvc3lzdGVtL3RydWUuZ2lmIiwiIiwiIiwiIiwic3lzdGVtaWNvbiIpOiRhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoImljb25zL3N5c3RlbS9mYWxzZS5naWYiLCIiLCIiLCIiLCJzeXN0ZW1pY29uIik7DQoJCQkkaXRlbS0+dG9nZ2xlZGVmYXVsdCA9ICRpdGVtLT5pc2RlZmF1bHQ9PTE/JGFkbWludGhlbWUtPkRpc3BsYXlJbWFnZSgiaWNvbnMvc3lzdGVtL3RydWUuZ2lmIiwiIiwiIiwiIiwic3lzdGVtaWNvbiIpOiRhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoImljb25zL3N5c3RlbS9mYWxzZS5naWYiLCIiLCIiLCIiLCJzeXN0ZW1pY29uIik7DQoJCQlyZXR1cm4gJGl0ZW07DQoJCX0NCgkJDQoJCSRwcmVmaXggPSAkcGFyYW1zWyJwcmVmaXgiXTsNCgkJJG1vdmVwYXJhbXMgPSAkcGFyYW1zOw0KCQkkbW92ZXBhcmFtc1skcHJlZml4LiJpZCJdID0gJGl0ZW0tPmlkOw0KCQkkbW92ZXBhcmFtc1siY3VycmVudG9yZGVyIl0gPSAkaXRlbS0+aXRlbV9vcmRlcjsNCgkJaWYoaXNzZXQoJG1vdmVwYXJhbXNbImZpbGVzIl0pKQl1bnNldCgkbW92ZXBhcmFtc1siZmlsZXMiXSk7DQoJCWlmKCRtb3ZlcGFyYW1zWyJvcmRlcmJ5cGFyZW50Il0gJiYgaXNzZXQoJGl0ZW0tPnBhcmVudF9pZCkpICRtb3ZlcGFyYW1zWyJwYXJlbnQiXSA9ICRpdGVtLT5wYXJlbnRfaWQ7DQoNCgkJJGl0ZW0tPmVkaXRsaW5rID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAiZWRpdCIuJHByZWZpeCwgJHJldHVybmlkLCAkaXRlbS0+bmFtZSwgYXJyYXkoJHByZWZpeC4iaWQiPT4kaXRlbS0+aWQpKTsNCgkJJGl0ZW0tPmRlbGV0ZWxpbmsgPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICJtb3Zlc29tZXRoaW5nIiwgJHJldHVybmlkLCAkYWRtaW50aGVtZS0+RGlzcGxheUltYWdlKCJpY29ucy9zeXN0ZW0vZGVsZXRlLmdpZiIsbGFuZygiZGVsZXRlIiksIiIsIiIsInN5c3RlbWljb24iKSwgYXJyYXlfbWVyZ2UoYXJyYXkoIm1vdmUiPT4iZGVsZXRlIiwiZmlsZXMiPT4kcGFyYW1zWyJmaWxlcyJdKSwkbW92ZXBhcmFtcyksJHRoaXMtPkxhbmcoInByb21wdF9kZWxldGUiLiRwYXJhbXNbImxldmVsbmFtZSJdLCBzdHJfcmVwbGFjZSgiJyIsIlwnIiwkaXRlbS0+bmFtZSkpKTsNCgkJJGl0ZW0tPm1vdmV1cGxpbmsgPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICJtb3Zlc29tZXRoaW5nIiwgJHJldHVybmlkLCAkYWRtaW50aGVtZS0+RGlzcGxheUltYWdlKCJpY29ucy9zeXN0ZW0vYXJyb3ctdS5naWYiLGxhbmcoInVwIiksIiIsIiIsInN5c3RlbWljb24iKSwgYXJyYXlfbWVyZ2UoYXJyYXkoIm1vdmUiPT4idXAiKSwkbW92ZXBhcmFtcykpOw0KCQkkaXRlbS0+bW92ZWRvd25saW5rID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAibW92ZXNvbWV0aGluZyIsICRyZXR1cm5pZCwgJGFkbWludGhlbWUtPkRpc3BsYXlJbWFnZSgiaWNvbnMvc3lzdGVtL2Fycm93LWQuZ2lmIixsYW5nKCJkb3duIiksIiIsIiIsInN5c3RlbWljb24iKSwgYXJyYXlfbWVyZ2UoYXJyYXkoIm1vdmUiPT4iZG93biIpLCRtb3ZlcGFyYW1zKSk7DQoJCSRpdGVtLT5tb3ZlbGlua3MgPSAkaXRlbS0+bW92ZXVwbGluayAuIiAiLiAkaXRlbS0+bW92ZWRvd25saW5rOw0KCQkNCgkJLy8gd2UgcmVidWlsZCB0aGUgcGFyYW1zLCBiZWNhdXNlIHdlIGRvbid0IG5lZWQgc28gbWFueSBmb3IgdGhlIHRvZ2dsZSBhY3Rpb24NCgkJJHRvZ2dsZXBhcmFtcyA9IGFycmF5KCRwcmVmaXguImlkIj0+JGl0ZW0tPmlkLCAicHJlZml4Ij0+JHByZWZpeCwgInRhYmxlbmFtZSI9PiRwYXJhbXNbInRhYmxlbmFtZSJdLCAibGV2ZWxuYW1lIj0+JHBhcmFtc1sibGV2ZWxuYW1lIl0pOw0KCQlpZigkcGFyYW1zWyJwYXJlbnRkZWZhdWx0Il0gJiYgaXNzZXQoJGl0ZW0tPnBhcmVudF9pZCkpew0KCQkJJHRvZ2dsZXBhcmFtc1sicGFyZW50Il0gPSAkaXRlbS0+cGFyZW50X2lkOw0KCQkJJHRvZ2dsZXBhcmFtc1sicGFyZW50ZGVmYXVsdCJdID0gMTsNCgkJfQ0KCQlpZiAoJGl0ZW0tPmFjdGl2ZSA9PSAxKXsNCgkJCSRpdGVtLT50b2dnbGVhY3RpdmUgPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICJ0b2dnbGUiLCAkcmV0dXJuaWQsICRhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoImljb25zL3N5c3RlbS90cnVlLmdpZiIsbGFuZygic2V0ZmFsc2UiKSwiIiwiIiwic3lzdGVtaWNvbiIpLCBhcnJheV9tZXJnZShhcnJheSgid2hhdCI9PiJhY3RpdmUiLCJuZXd2YWwiPT4wKSwkdG9nZ2xlcGFyYW1zKSk7DQoJCX1lbHNlew0KCQkJJGl0ZW0tPnRvZ2dsZWFjdGl2ZSA9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgInRvZ2dsZSIsICRyZXR1cm5pZCwgJGFkbWludGhlbWUtPkRpc3BsYXlJbWFnZSgiaWNvbnMvc3lzdGVtL2ZhbHNlLmdpZiIsbGFuZygic2V0dHJ1ZSIpLCIiLCIiLCJzeXN0ZW1pY29uIiksIGFycmF5X21lcmdlKGFycmF5KCJ3aGF0Ij0+ImFjdGl2ZSIsIm5ld3ZhbCI9PjEpLCR0b2dnbGVwYXJhbXMpKTsNCgkJfQ0KDQoJCWlmICgkaXRlbS0+aXNkZWZhdWx0ID09IDEpew0KCQkJJGl0ZW0tPnRvZ2dsZWRlZmF1bHQgPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICJ0b2dnbGUiLCAkcmV0dXJuaWQsICRhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoImljb25zL3N5c3RlbS90cnVlLmdpZiIsbGFuZygic2V0ZmFsc2UiKSwiIiwiIiwic3lzdGVtaWNvbiIpLCBhcnJheV9tZXJnZShhcnJheSgid2hhdCI9PiJkZWZhdWx0IiwibmV3dmFsIj0+MCksJHRvZ2dsZXBhcmFtcykpOw0KCQl9ZWxzZXsNCgkJCSRpdGVtLT50b2dnbGVkZWZhdWx0ID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAidG9nZ2xlIiwgJHJldHVybmlkLCAkYWRtaW50aGVtZS0+RGlzcGxheUltYWdlKCJpY29ucy9zeXN0ZW0vZmFsc2UuZ2lmIixsYW5nKCJzZXR0cnVlIiksIiIsIiIsInN5c3RlbWljb24iKSwgYXJyYXlfbWVyZ2UoYXJyYXkoIndoYXQiPT4iZGVmYXVsdCIsIm5ld3ZhbCI9PjEpLCR0b2dnbGVwYXJhbXMpKTsNCgkJfQ0KCQlyZXR1cm4gJGl0ZW07DQoJfQ0KDQoJZnVuY3Rpb24gZ2V0X3ByZWRlZmluZWRvcHRpb25zKCRmaWVsZCwkcmV0cmlldmU9ZmFsc2Upew0KCQkvLyByZXR1cm4gdGhlIG9wdGlvbnMgZm9yIGEgcHJlZGVmaW5lZCBsaXN0DQoJCWlmKCRyZXRyaWV2ZSl7DQoJCQlzd2l0Y2goJGZpZWxkKXsNCgkJCQljYXNlICJwbGF5ZXJfcGxheWVydHlwZSI6DQoJCQkJCXJldHVybiBhcnJheSgiMCI9PiR0aGlzLT5MYW5nKCJwbGF5ZXJfcGxheWVydHlwZV9vcHRpb25fMCIpLCAiMSI9PiR0aGlzLT5MYW5nKCJwbGF5ZXJfcGxheWVydHlwZV9vcHRpb25fMSIpKTsNCgkJCQkJYnJlYWs7DQoJCQl9DQoJCX1lbHNlew0KCQkJc3dpdGNoKCRmaWVsZCl7DQoJCQkJY2FzZSAicGxheWVyX3BsYXllcnR5cGUiOg0KCQkJCQlyZXR1cm4gYXJyYXkoJHRoaXMtPkxhbmcoInBsYXllcl9wbGF5ZXJ0eXBlX29wdGlvbl8wIik9PiIwIiwgJHRoaXMtPkxhbmcoInBsYXllcl9wbGF5ZXJ0eXBlX29wdGlvbl8xIik9PiIxIik7DQoJCQkJCWJyZWFrOw0KCQkJfQ0KCQl9DQoJfQ0KCWZ1bmN0aW9uIHNwbGl0X2ludG9fcGFnZXMoJGl0ZW1saXN0LCAkaWQsICRyZXR1cm5pZCwgJHBhcmFtcywgJGFjdGlvbj0iZGVmYXVsdCIsICRwcmV0dHl1cmxzPXRydWUpew0KCQkvLyBkZXByZWNhdGVkIC0gc2hvdWxkIHVzZSBmdW5jdGlvbiBwYWdpbmF0ZSBpbnN0ZWFkDQoJCXJldHVybiAkaXRlbWxpc3Q7DQoJfQ0KCWZ1bmN0aW9uIGdldF9xdWVyaWVzKCR3aGVyZT1hcnJheSgpLCAkYWRtaW49ZmFsc2UsICRpZD1mYWxzZSwgJHJldHVybmlkPWZhbHNlKXsNCgkJLy8gcmV0cml2ZXMgcXVlcmllcyBmcm9tIHRoZSBkYXRhYmFzZSBhbmQgcmV0dXJucyBhbiBhcnJheSBvZiBvYmplY3RzDQoJCWdsb2JhbCAkZ0NtczsNCgkJJGRiID0mICR0aGlzLT5HZXREYigpOw0KCQkkcXVlcnkgPSAiU0VMRUNUICogRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlXyIuJHRoaXMtPkdldE5hbWUoKS4iX3NhdmVkX3F1ZXJpZXMiOw0KCQkkd2hlcmVjbGF1c2UgPSAiIjsNCgkJJHdoZXJldmFsdWVzID0gYXJyYXkoKTsNCgkJaWYoY291bnQoJHdoZXJlKT4wKXsNCgkJCWZvcmVhY2goJHdoZXJlIGFzICRrZXk9PiR2YWx1ZSl7DQoJCQkJJHdoZXJlY2xhdXNlIC49ICgkd2hlcmVjbGF1c2UgPT0gIiI/IiBXSEVSRSAiOiIgQU5EICIpLiRrZXkuIj0/IjsNCgkJCQkkd2hlcmV2YWx1ZXNbXSA9ICR2YWx1ZTsNCgkJCX0NCgkJfQ0KCQkkcXVlcnkgLj0gJHdoZXJlY2xhdXNlOw0KCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCR3aGVyZXZhbHVlcyk7DQoJCSRpdGVtbGlzdCA9IGFycmF5KCk7DQoJCXdoaWxlICgkZGJyZXN1bHQgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSl7DQoJCQkkaXRlbSA9IG5ldyBzdGRDbGFzcygpOw0KCQkJZm9yZWFjaCgkcm93IGFzICRrZXk9PiR2YWx1ZSl7DQoJCQkJJGl0ZW0tPiRrZXkgPSAkdmFsdWU7DQoJCQl9DQoJCQkkaXRlbS0+d2hlcmV2YWx1ZXMgPSB1bnNlcmlhbGl6ZSgkaXRlbS0+d2hlcmV2YWx1ZXMpOw0KCQkJaWYoIWlzX2FycmF5KCRpdGVtLT52YWx1ZXMpKQkkaXRlbS0+dmFsdWVzID0gYXJyYXkoKTsNCgkJCWlmKCRhZG1pbil7DQoJCQkJJGl0ZW0tPmFjdGlvbnMgPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICJkZWxldGVxdWVyeSIsICRyZXR1cm5pZCwgJGdDbXMtPnZhcmlhYmxlc1siYWRtaW50aGVtZSJdLT5EaXNwbGF5SW1hZ2UoImljb25zL3N5c3RlbS9kZWxldGUuZ2lmIixsYW5nKCJkZWxldGUiKSwiIiwiIiwic3lzdGVtaWNvbiIpLCBhcnJheSgicXVlcnlpZCI9PiRpdGVtLT5pZCkpOw0KCQkJCSRpdGVtLT5hY3Rpb25zIC49ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgInRlc3RxdWVyeSIsICRyZXR1cm5pZCwgJGdDbXMtPnZhcmlhYmxlc1siYWRtaW50aGVtZSJdLT5EaXNwbGF5SW1hZ2UoImljb25zL3N5c3RlbS92aWV3LmdpZiIsbGFuZygidmlldyIpLCIiLCIiLCJzeXN0ZW1pY29uIiksIGFycmF5KCJxdWVyeWlkIj0+JGl0ZW0tPmlkKSk7DQoJCQl9DQoJCQkkaXRlbWxpc3RbXSA9ICRpdGVtOw0KCQl9DQoJCXJldHVybiAoY291bnQoJGl0ZW1saXN0KT4wPyRpdGVtbGlzdDpmYWxzZSk7DQoJfQ0KDQoJZnVuY3Rpb24gY3JlYXRlRmllbGRGb3JtKCR3aGF0LCRpZCwkYXNzaWduPXRydWUpew0KCQlyZXF1aXJlICJmdW5jdGlvbi5jcmVhdGVGaWVsZEZvcm0ucGhwIjsNCgl9DQoJDQoNCglmdW5jdGlvbiBidWlsZFdoZXJlKCR3aGVyZT1hcnJheSgpLCR3aGF0PSIiKXsNCgkJJG11bHRpcGxlbGlzdGZpZWxkcyA9IGFycmF5KCk7DQoJCSR3aGVyZWNsYXVzZSA9ICJBLmFjdGl2ZT0xIjsNCgkJJHdoZXJldmFsdWVzID0gYXJyYXkoKTsNCgkJZm9yZWFjaCgkd2hlcmUgYXMgJGNsYXVzZSl7DQoJCQlpZihpbl9hcnJheSgkd2hhdC4iXyIuJGNsYXVzZVswXSwgJG11bHRpcGxlbGlzdGZpZWxkcykpew0KCQkJCS8vIGxpc3Qgd2l0aCBtdWx0aXBsZSBzZWxlY3RlZCB2YWx1ZXMgYXJlIHNhdmVkIGluIGEgc2VyaWFsaXplZCBhcnJheSwgc28gd2UgaGF2ZSB0byB0d2VhayB0aGUgdmFsdWUNCgkJCQkkY2xhdXNlWzFdID0gJyInLiRjbGF1c2VbMV0uJyInOw0KCQkJCSRjbGF1c2VbMl0gPSAxOw0KCQkJfQ0KCQkJaWYoJGNsYXVzZVswXSA9PSAicGFyZW50Iil7DQoJCQkJCSRjcml0ZXJpYSA9IGV4cGxvZGUoIiwiLCRjbGF1c2VbMV0pOw0KCQkJCQlpZihjb3VudCgkY3JpdGVyaWEpID4gMSl7DQoJCQkJCQkkdG1wID0gIiI7DQoJCQkJCQlmb3JlYWNoKCRjcml0ZXJpYSBhcyAkY3JpdCl7DQoJCQkJCQkJJHRtcCA9ICgkdG1wPT0iIj8iIjoiIE9SICIpLiJBLnBhcmVudD0iLiRjcml0Ow0KCQkJCQkJfQ0KCQkJCQkJJHRtcCA9ICIgQU5EICgiLiR0bXAuIikiOw0KCQkJCQl9ZWxzZXsNCgkJCQkJCSR0bXAgPSAiIEFORCBBLnBhcmVudD0/IjsNCgkJCQkJCSR3aGVyZXZhbHVlc1tdID0gJGNsYXVzZVsxXTsNCgkJCQkJfQ0KCQkJCQkkd2hlcmVjbGF1c2UgLj0gJHRtcDsNCgkJCQkNCgkJCX1lbHNlew0KCQkJCXN3aXRjaCgkY2xhdXNlWzJdKXsNCgkJCQkJY2FzZSAwOg0KCQkJCQkJJHdoZXJlY2xhdXNlIC49ICIgQU5EIEEuIi4kY2xhdXNlWzBdLiI9PyI7DQoJCQkJCQkkd2hlcmV2YWx1ZXNbXSA9IGFkZHNsYXNoZXMoJGNsYXVzZVsxXSk7CQkJCQkNCgkJCQkJCWJyZWFrOw0KCQkJCQkNCgkJCQkJY2FzZSAxOg0KCQkJCQkJJHdoZXJlY2xhdXNlIC49ICIgQU5EIEEuIi4kY2xhdXNlWzBdLiIgTElLRSAnJSIuYWRkc2xhc2hlcygkY2xhdXNlWzFdKS4iJSciOw0KCQkJCQkJYnJlYWs7DQoJCQkJCQ0KCQkJCQljYXNlIDI6DQoJCQkJCQkkd2hlcmVjbGF1c2UgLj0gIiBBTkQgQS4iLiRjbGF1c2VbMF0uIiAhPSA/IjsNCgkJCQkJCSR3aGVyZXZhbHVlc1tdID0gYWRkc2xhc2hlcygkY2xhdXNlWzFdKTsNCgkJCQkJCWJyZWFrOw0KCQkJCQkJDQoJCQkJCWNhc2UgMzoNCgkJCQkJCSR3aGVyZWNsYXVzZSAuPSAiIEFORCBBLiIuJGNsYXVzZVswXS4iID4gPyI7DQoJCQkJCQkkd2hlcmV2YWx1ZXNbXSA9IGFkZHNsYXNoZXMoJGNsYXVzZVsxXSk7CQkJCQkNCgkJCQkJCWJyZWFrOw0KCQkJCQkJDQoJCQkJCWNhc2UgNDoNCgkJCQkJCSR3aGVyZWNsYXVzZSAuPSAiIEFORCBBLiIuJGNsYXVzZVswXS4iIDwgPyI7DQoJCQkJCQkkd2hlcmV2YWx1ZXNbXSA9IGFkZHNsYXNoZXMoJGNsYXVzZVsxXSk7CQkJCQkNCgkJCQkJCWJyZWFrOw0KCQkJCQljYXNlIDU6DQoJCQkJCQkkd2hlcmVjbGF1c2UgLj0gIiBBTkQgKEEuIi4kY2xhdXNlWzBdLiIgPiA/IEFORCBBLiIuJGNsYXVzZVswXS4iIDwgPykiOw0KCQkJCQkJJHdoZXJldmFsdWVzW10gPSBhZGRzbGFzaGVzKCRjbGF1c2VbMV1bMF0pOw0KCQkJCQkJJHdoZXJldmFsdWVzW10gPSBhZGRzbGFzaGVzKCRjbGF1c2VbMV1bMV0pOw0KCQkJCQkJYnJlYWs7CQkJCQkNCgkJCQl9DQoJCQl9DQoJCX0NCgkJcmV0dXJuIGFycmF5KCR3aGVyZWNsYXVzZSwgJHdoZXJldmFsdWVzKTsNCgl9DQoJZnVuY3Rpb24gZ2V0V2hlcmVGcm9tUGFyYW1zKCRwYXJhbXMsICRodG1sZW5jb2RlZD1mYWxzZSl7DQoJCS8vIHVzZWQgZm9yIHF1ZXJ5IGNyZWF0aW9uIGFuZCBmcm9udGVuZCBhZHZhbmNlZCBzZWFyY2ggYWN0aW9uDQoJCS8vIHRyYW5zZm9ybXMgcGFyYW1ldGVycyBpbnRvICR3aGVyZSAtIGFuIGFycmF5IG9mIGNyaXRlcmlhOg0KCQkvLyAkd2hlcmVbXSA9IGFycmF5KCRmaWVsZG5hbWUsICRzZWFyY2h2YWx1ZSwgJGNvbXBhcmlzb25fdHlwZSkNCgkJJGRiID0mICR0aGlzLT5HZXREYigpOw0KCQkkd2hlcmUgPSBhcnJheSgpOw0KCQlmb3JlYWNoKCRwYXJhbXMgYXMgJGtleT0+JHZhbHVlKXsNCgkJCWlmKHN1YnN0cigka2V5LDAsNikgPT0gImZpZWxkXyIgJiYgdHJpbSgkdmFsdWUpICE9ICIiKXsNCgkJCQkka2V5ID0gc3Vic3RyKCRrZXksNik7DQoJCQkJaWYoaXNfYXJyYXkoJHZhbHVlKSAmJiBjb3VudCgkdmFsdWUpPT0xKQkkdmFsdWUgPSAkdmFsdWVbMF07DQoJCQkJJGNvbXBhcmUgPSBpc3NldCgkcGFyYW1zWyJjb21wYXJlXyIuJGtleV0pPyRwYXJhbXNbImNvbXBhcmVfIi4ka2V5XTowOw0KCQkJCWlmKCR2YWx1ZSA9PSAiX19kYXRlX2ZpZWxkIil7DQoJCQkJCWlmKCRjb21wYXJlICE9ICJOQSIpew0KCQkJCQkJLy8gVGhlIGNvZGUgaXMgc3VjaCB0aGF0IHJlbW92aW5nIGFueSBwYXJ0IG9mIHRoZSB0aW1lIGlucHV0IGZyb20gdGhlIGZvcm0gd2lsbCByZXN1bHQgaW4gdXNpbmcgdGhlIGRlZmF1bHQgdmFsdWUNCgkJCQkJCSR0aW1laW5wdXRzID0gYXJyYXkoIkhvdXIiPT4iSCIsIk1pbnV0ZSI9PiJpIiwiU2Vjb25kIj0+InMiLCJNb250aCI9PiJuIiwiRGF5Ij0+ImoiLCJZZWFyIj0+IlkiKTsNCgkJCQkJCSRwYXJ0cyA9IGFycmF5KCk7DQoJCQkJCQlmb3JlYWNoKCR0aW1laW5wdXRzIGFzICRpbnB1dG5hbWU9PiRkYXRlcGFydCl7CQ0KCQkJCQkJCSRwYXJ0c1tdID0gKGlzc2V0KCRwYXJhbXNbImRhdGVfIi4ka2V5LiJfIi4kaW5wdXRuYW1lXSkpPyRwYXJhbXNbImRhdGVfIi4ka2V5LiJfIi4kaW5wdXRuYW1lXTpkYXRlKCRkYXRlcGFydCk7DQoJCQkJCQl9DQoJCQkJCQkkdmFsdWUgPSBta3RpbWUoJHBhcnRzWzBdLCRwYXJ0c1sxXSwkcGFydHNbMl0sJHBhcnRzWzNdLCRwYXJ0c1s0XSwkcGFydHNbNV0pOw0KCQkJCQkJJHZhbHVlID0gc3RyX3JlcGxhY2UoIlwnIiwiIiwkZGItPkRCVGltZVN0YW1wKCR2YWx1ZSkpOw0KCQkJCQkJDQoJCQkJCQlpZigkY29tcGFyZSA9PSA1KXsNCgkJCQkJCQkkcGFydHMgPSBhcnJheSgpOw0KCQkJCQkJCWZvcmVhY2goJHRpbWVpbnB1dHMgYXMgJGlucHV0bmFtZT0+JGRhdGVwYXJ0KXsJDQoJCQkJCQkJCSRwYXJ0c1tdID0gKGlzc2V0KCRwYXJhbXNbImRhdGVfIi4ka2V5LiJfcGFydDJfIi4kaW5wdXRuYW1lXSkpPyRwYXJhbXNbImRhdGVfIi4ka2V5LiJfcGFydDJfIi4kaW5wdXRuYW1lXTpkYXRlKCRkYXRlcGFydCk7DQoJCQkJCQkJfQ0KCQkJCQkJCSR2YWx1ZTIgPSBta3RpbWUoJHBhcnRzWzBdLCRwYXJ0c1sxXSwkcGFydHNbMl0sJHBhcnRzWzNdLCRwYXJ0c1s0XSwkcGFydHNbNV0pOw0KCQkJCQkJCSR2YWx1ZTIgPSBzdHJfcmVwbGFjZSgiXCciLCIiLCRkYi0+REJUaW1lU3RhbXAoJHZhbHVlMikpOw0KCQkJCQkJCSR3aGVyZVtdID0gYXJyYXkoJGtleSwgYXJyYXkoJHZhbHVlLCR2YWx1ZTIpLCAkY29tcGFyZSk7DQoJCQkJCQl9ZWxzZXsJDQoJCQkJCQkJJHdoZXJlW10gPSBhcnJheSgka2V5LCAkdmFsdWUsICRjb21wYXJlKTsNCgkJCQkJCX0NCgkJCQkJfQ0KCQkJCX1lbHNlew0KCQkJCQlpZihpc19hcnJheSgkdmFsdWUpKXsNCgkJCQkJCWZvcmVhY2goJHZhbHVlIGFzICRvbmV2YWx1ZSkJJHdoZXJlW10gPSBhcnJheSgka2V5LCAkb25ldmFsdWUsIDEpOw0KCQkJCQl9ZWxzZWlmKCRjb21wYXJlID09IDEpew0KCQkJCQkJJGtleXdvcmRzID0gJHRoaXMtPnBhcnNla2V5d29yZHMoJHZhbHVlKTsNCgkJCQkJCWZvcmVhY2goJGtleXdvcmRzIGFzICR2YWx1ZSl7DQoJCQkJCQkJaWYoJGh0bWxlbmNvZGVkKQkkdmFsdWUgPSBodG1sX2VudGl0eV9kZWNvZGUoJHZhbHVlKTsNCgkJCQkJCQkkdmFsdWUgPSBhZGRzbGFzaGVzKCR2YWx1ZSk7CQkJCQkJCQ0KCQkJCQkJCSR3aGVyZVtdID0gYXJyYXkoJGtleSwgJHZhbHVlLCAkY29tcGFyZSk7DQoJCQkJCQl9DQoJCQkJCX1lbHNlew0KCQkJCQkJaWYoJGh0bWxlbmNvZGVkKQkkdmFsdWUgPSBodG1sX2VudGl0eV9kZWNvZGUoJHZhbHVlKTsNCgkJCQkJCSR2YWx1ZSA9IGFkZHNsYXNoZXMoJHZhbHVlKTsNCgkJCQkJCSR3aGVyZVtdID0gYXJyYXkoJGtleSwgJHZhbHVlLCAkY29tcGFyZSk7DQoJCQkJCX0NCgkJCQl9CQkJCQ0KCQkJfQ0KCQl9CQkNCgkJcmV0dXJuICR3aGVyZTsNCgl9DQoNCglmdW5jdGlvbiBnZXRfbGV2ZWxfcGxheWVyKCR3aGVyZT1hcnJheSgpLCRhZG1pbj1mYWxzZSwkaWQ9IiIsJHJldHVybmlkPSIiLCRvcmRlcj1mYWxzZSwkbGltaXQ9MCwkY3VzdG9td2hlcmU9ZmFsc2UsJGN1c3RvbXZhbHVlcz1hcnJheSgpLCRjdXN0b21vcmRlcj1mYWxzZSl7DQoJCWdsb2JhbCAkZ0NtczsNCgkJJGxvYWRfbmJjaGlsZHJlbiA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCJsb2FkX25iY2hpbGRyZW4iLHRydWUpOw0KCQlpZigkYWRtaW4pCSRhZG1pbnRoZW1lID0gJGdDbXMtPnZhcmlhYmxlc1siYWRtaW50aGVtZSJdOw0KCQlpZighJG9yZGVyKQkkb3JkZXIgPSAiIjsNCgkJJGRiID0mICR0aGlzLT5HZXREYigpOw0KCQkkZmllbGRzID0gYXJyYXkoImxvY2F0aW9uIiwid2lkdGgiLCJoZWlnaHQiLCJwYXJhbWV0ZXJzIiwidXNlcmRlZmluZWQxIiwicGxheWVydHlwZSIsImlkIiwibmFtZSIsImFsaWFzIiwiaXRlbV9vcmRlciIsImFjdGl2ZSIsImlzZGVmYXVsdCIpOw0KCQkNCg0KCQkkd2hlcmVzdHJpbmcgPSAiIjsNCgkJJHdoZXJldmFsdWVzID0gYXJyYXkoKTsNCgkJDQoNCgkJaWYoJGN1c3RvbXdoZXJlKXsNCgkJCSR3aGVyZXN0cmluZyA9ICRjdXN0b213aGVyZTsNCgkJCSR3aGVyZXZhbHVlcyA9ICRjdXN0b212YWx1ZXM7DQoJCX1lbHNlew0KCQkJZm9yZWFjaCgkd2hlcmUgYXMgJGtleT0+JHZhbHVlKXsNCgkJCQlpZihpbl9hcnJheShzdHJ0b2xvd2VyKCRrZXkpLCAkZmllbGRzKSl7DQoJCQkJCSR3aGVyZXN0cmluZyAuPSAoJHdoZXJlc3RyaW5nID09ICIiPyIiOiIgQU5EICIpLiRrZXkuIj0/IjsNCgkJCQkJJHdoZXJldmFsdWVzW10gPSAkdmFsdWU7DQoJCQkJfQ0KCQkJfQ0KCQl9DQoJCSRxdWVyeSA9ICJTRUxFQ1QgKiBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfYXZwbGF5ZXJfcGxheWVyIEEgIi4oJHdoZXJlc3RyaW5nID09ICIiPyIiOiIgV0hFUkUgIi4kd2hlcmVzdHJpbmcpOw0KCQkkcXVlcnkgLj0gKCRjdXN0b21vcmRlcj8iIE9SREVSIEJZICIuJGN1c3RvbW9yZGVyOiIgT1JERVIgQlkgaXRlbV9vcmRlciIpOw0KDQoJCWlmKCRsaW1pdCAmJiAkbGltaXQgIT0gIjAiICYmICRsaW1pdCAhPSAiIikJJHF1ZXJ5IC49ICIgTElNSVQgIi4kbGltaXQ7DQoNCgkJCSRvcHRpb25zX3VzZXJkZWZpbmVkMSA9IGFycmF5X2ZsaXAoJHRoaXMtPmdldF9maWVsZG9wdGlvbnMoInBsYXllcl91c2VyZGVmaW5lZDEiKSk7DQoJCQkkb3B0aW9uc19wbGF5ZXJ0eXBlID0gJHRoaXMtPmdldF9wcmVkZWZpbmVkb3B0aW9ucygicGxheWVyX3BsYXllcnR5cGUiLHRydWUpOw0KCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCR3aGVyZXZhbHVlcyk7DQoJCSRpdGVtbGlzdCA9IGFycmF5KCk7DQoJCSRpZGxpc3QgPSAiIjsNCgkJd2hpbGUgKCRkYnJlc3VsdCAmJiAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKXsNCgkJCSRpdGVtID0gbmV3IHN0ZENsYXNzKCk7DQoJCQkkaXRlbS0+X193aGF0ID0gInBsYXllciI7DQoJCQlmb3JlYWNoKCRyb3cgYXMgJGtleT0+JHZhbHVlKXsNCgkJCQkkaXRlbS0+JGtleSA9ICR2YWx1ZTsNCgkJCX0NCgkJCSRpdGVtLT5sb2NhdGlvbiA9IHN0cmlwc2xhc2hlcygkaXRlbS0+bG9jYXRpb24pOw0KCQkJJGl0ZW0tPndpZHRoID0gc3RyaXBzbGFzaGVzKCRpdGVtLT53aWR0aCk7DQoJCQkkaXRlbS0+aGVpZ2h0ID0gc3RyaXBzbGFzaGVzKCRpdGVtLT5oZWlnaHQpOw0KCQkJJGl0ZW0tPnBhcmFtZXRlcnMgPSBzdHJpcHNsYXNoZXMoJGl0ZW0tPnBhcmFtZXRlcnMpOw0KCQkJJGl0ZW0tPnVzZXJkZWZpbmVkMSA9IChpc3NldCgkb3B0aW9uc191c2VyZGVmaW5lZDFbJGl0ZW0tPnVzZXJkZWZpbmVkMV0pKT8kaXRlbS0+dXNlcmRlZmluZWQxOmZhbHNlOw0KCQkJJGl0ZW0tPnVzZXJkZWZpbmVkMV9uYW1ldmFsdWUgPSAoaXNzZXQoJG9wdGlvbnNfdXNlcmRlZmluZWQxWyRpdGVtLT51c2VyZGVmaW5lZDFdKSk/JG9wdGlvbnNfdXNlcmRlZmluZWQxWyRpdGVtLT51c2VyZGVmaW5lZDFdOiIiOw0KCQkJJGl0ZW0tPnBsYXllcnR5cGUgPSAoaXNzZXQoJG9wdGlvbnNfcGxheWVydHlwZVskaXRlbS0+cGxheWVydHlwZV0pKT8kaXRlbS0+cGxheWVydHlwZTpmYWxzZTsNCgkJCSRpdGVtLT5wbGF5ZXJ0eXBlX25hbWV2YWx1ZSA9IChpc3NldCgkb3B0aW9uc19wbGF5ZXJ0eXBlWyRpdGVtLT5wbGF5ZXJ0eXBlXSkpPyRvcHRpb25zX3BsYXllcnR5cGVbJGl0ZW0tPnBsYXllcnR5cGVdOiIiOw0KCQkJJGl0ZW0tPm5hbWUgPSBzdHJpcHNsYXNoZXMoJGl0ZW0tPm5hbWUpOw0KCQkJJGl0ZW0tPmFsaWFzID0gc3RyaXBzbGFzaGVzKCRpdGVtLT5hbGlhcyk7DQoJCQkkaXRlbS0+aW5zZXJ0VGFnID0gJ3tjbXNfbW9kdWxlIG1vZHVsZT0iYXZwbGF5ZXIiIHBhcmVudD0iJy4kaXRlbS0+YWxpYXMuJyJ9JzsNCg0KCQkJaWYoJGFkbWluID09IHRydWUpew0KCQkJCS8vICRwYXJtcyB3aWxsIGJlIHRoZSBiYXNlIGZvciBwYXJhbWV0ZXJzIG9mIHRoZSBhZG1pbiBsaW5rcw0KCQkJCSRwYXJtcyA9IGFycmF5KA0KCQkJCQkicHJlZml4Ij0+IkEiLA0KCQkJCQkidGFibGVuYW1lIj0+ImF2cGxheWVyX3BsYXllciIsDQoJCQkJCSJsZXZlbG5hbWUiPT4icGxheWVyIiwNCgkJCQkJImNoaWxkIj0+ImF2cGxheWVyX21lZGlhZmlsZSIsDQoJCQkJCSJwYXJlbnRkZWZhdWx0Ij0+ZmFsc2UsDQoJCQkJCSJvcmRlcmJ5cGFyZW50Ij0+dHJ1ZSwNCgkJCQkJImFkZGZpbGVzIj0+IiIsDQoJCQkJCSJzaGFyZWNoaWxkcmVuIj0+ZmFsc2UsDQoJCQkJCSJzaGFyZWRieXBhcmVudHMiPT5mYWxzZSwNCgkJCQkJImZpbGVzIj0+IiINCgkJCQkJKTsNCgkJCQkkaXRlbSA9ICR0aGlzLT5hZGRhZG1pbmxpbmtzKCRpdGVtLCRwYXJtcywkaWQsJHJldHVybmlkKTsNCgkJCX0NCgkJCSRpZGxpc3QgLj0gKCRpZGxpc3Q9PSIiPyIiOiIgT1IgIikuIiBwYXJlbnQ9JyIuJGl0ZW0tPmlkLiInIjsNCgkJCWFycmF5X3B1c2goJGl0ZW1saXN0LCRpdGVtKTsNCgkJfQ0KDQoJCWlmKCRhZG1pbiB8fCAkbG9hZF9uYmNoaWxkcmVuKXsNCgkJCSRuYmNoaWxkcmVucyA9IGFycmF5KCk7DQoJCQkkcXVlcnkgPSAiU0VMRUNUIHBhcmVudCwgY291bnQoaWQpIG5iY2hpbGRyZW4gRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2F2cGxheWVyX21lZGlhZmlsZSBXSEVSRSAoIi4kaWRsaXN0LiIpICIuKCRhZG1pbj8iIjoiQU5EIGFjdGl2ZT0xICIpLiJHUk9VUCBCWSBwYXJlbnQiOw0KCQkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSk7DQoJCQl3aGlsZSgkZGJyZXN1bHQgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkJJG5iY2hpbGRyZW5zWyRyb3dbInBhcmVudCJdXSA9ICRyb3dbIm5iY2hpbGRyZW4iXTsNCgkJCSRuZXdsaXN0ID0gYXJyYXkoKTsNCgkJCWZvcmVhY2goJGl0ZW1saXN0IGFzICRpdGVtKXsNCgkJCQkkaXRlbS0+bmJjaGlsZHJlbiA9IGlzc2V0KCRuYmNoaWxkcmVuc1skaXRlbS0+aWRdKT8kbmJjaGlsZHJlbnNbJGl0ZW0tPmlkXTpmYWxzZTsNCgkJCQlhcnJheV9wdXNoKCRuZXdsaXN0LCAkaXRlbSk7DQoJCQl9DQoJCQkkaXRlbWxpc3QgPSAkbmV3bGlzdDsNCgkJfQ0KCQlyZXR1cm4gJGl0ZW1saXN0Ow0KCX0NCg0KCWZ1bmN0aW9uIGdldF9sZXZlbF9tZWRpYWZpbGUoJHdoZXJlPWFycmF5KCksJGFkbWluPWZhbHNlLCRpZD0iIiwkcmV0dXJuaWQ9IiIsJG9yZGVyPWZhbHNlLCRsaW1pdD0wLCRjdXN0b213aGVyZT1mYWxzZSwkY3VzdG9tdmFsdWVzPWFycmF5KCksJGN1c3RvbW9yZGVyPWZhbHNlKXsNCgkJZ2xvYmFsICRnQ21zOw0KCQkkbG9hZF9uYmNoaWxkcmVuID0gJHRoaXMtPkdldFByZWZlcmVuY2UoImxvYWRfbmJjaGlsZHJlbiIsdHJ1ZSk7DQoJCWlmKCRhZG1pbikJJGFkbWludGhlbWUgPSAkZ0Ntcy0+dmFyaWFibGVzWyJhZG1pbnRoZW1lIl07DQoJCWlmKCEkb3JkZXIpCSRvcmRlciA9ICIiOw0KCQkkZGIgPSYgJHRoaXMtPkdldERiKCk7DQoJCSRmaWVsZHMgPSBhcnJheSgibWVkaWFmaWxlIiwicGljdHVyZSIsInVzZXJkZWZpbmVkMiIsInBhcmVudCIsImlkIiwibmFtZSIsImFsaWFzIiwiaXRlbV9vcmRlciIsImFjdGl2ZSIsImlzZGVmYXVsdCIpOw0KCQkNCgkJJHdoZXJlc3RyaW5nID0gIiI7DQoJCSR3aGVyZXZhbHVlcyA9IGFycmF5KCk7DQoJCQ0KDQoJCWlmKCRjdXN0b213aGVyZSl7DQoJCQkkd2hlcmVzdHJpbmcgPSAkY3VzdG9td2hlcmU7DQoJCQkkd2hlcmV2YWx1ZXMgPSAkY3VzdG9tdmFsdWVzOw0KCQl9ZWxzZXsNCgkJCWZvcmVhY2goJHdoZXJlIGFzICRrZXk9PiR2YWx1ZSl7DQoJCQkJaWYoJGtleSA9PSAicGFyZW50Iil7DQoJCQkJCSR3aGVyZXN0cmluZyAuPSAoJHdoZXJlc3RyaW5nID09ICIiPyIiOiIgQU5EICIpLiJCLmFsaWFzPT8iOw0KCQkJCQkkd2hlcmV2YWx1ZXNbXSA9ICR2YWx1ZTsNCgkJCQl9ZWxzZWlmKCRrZXkgPT0gInBhcmVudF9pZCIpew0KCQkJCQkkd2hlcmVzdHJpbmcgLj0gKCR3aGVyZXN0cmluZyA9PSAiIj8iIjoiIEFORCAiKS4iQi5pZD0/IjsNCgkJCQkJJHdoZXJldmFsdWVzW10gPSAkdmFsdWU7DQoJCQkJfWVsc2VpZihpbl9hcnJheShzdHJ0b2xvd2VyKCRrZXkpLCAkZmllbGRzKSl7DQoJCQkJCSR3aGVyZXN0cmluZyAuPSAoJHdoZXJlc3RyaW5nID09ICIiPyIiOiIgQU5EICIpLiJBLiIuJGtleS4iPT8iOw0KCQkJCQkkd2hlcmV2YWx1ZXNbXSA9ICR2YWx1ZTsNCgkJCQl9DQoJCQl9DQoJCX0NCgkJDQoJCSRxdWVyeSA9ICJTRUxFQ1QgQS4qLCBCLmlkIHBhcmVudF9pZCwgQi5uYW1lIHBhcmVudF9uYW1lLCBCLmFsaWFzIHBhcmVudF9hbGlhcyBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfYXZwbGF5ZXJfbWVkaWFmaWxlIEEsICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfYXZwbGF5ZXJfcGxheWVyIEIgV0hFUkUgQS5wYXJlbnQgPSBCLmlkICIuKCR3aGVyZXN0cmluZyA9PSAiIj8iIjoiIEFORCAiKS4kd2hlcmVzdHJpbmc7DQoJCWlmKCRjdXN0b21vcmRlcil7DQoJCQkgJHF1ZXJ5IC49ICIgT1JERVIgQlkgQS4iLiRjdXN0b21vcmRlcjsNCgkJfWVsc2VpZigkb3JkZXIgPT0gIm1vZGlmaWVkIil7DQoJCQkgJHF1ZXJ5IC49ICIgT1JERVIgQlkgQS5kYXRlX21vZGlmaWVkIERFU0MiOw0KCQl9ZWxzZWlmKCRvcmRlciA9PSAiY3JlYXRlZCIpew0KCQkJICRxdWVyeSAuPSAiIE9SREVSIEJZIEEuaWQgREVTQyI7DQoJCX1lbHNlaWYoICRvcmRlciAhPSAiIiAmJiAoJHRoaXMtPkdldFByZWZlcmVuY2UoImFsbG93X2NvbXBsZXhfb3JkZXIiLGZhbHNlKSB8fCBpbl9hcnJheShzdHJ0b2xvd2VyKCRvcmRlciksICRmaWVsZHMpKSApew0KCQkJJHF1ZXJ5IC49ICIgT1JERVIgQlkgQS4iLiRvcmRlcjsNCgkJfWVsc2V7DQoJCQkgJHF1ZXJ5IC49ICIgT1JERVIgQlkgQi5pdGVtX29yZGVyLCBBLml0ZW1fb3JkZXIiOw0KCQl9DQoJCWlmKCRsaW1pdCAmJiAkbGltaXQgIT0gIjAiICYmICRsaW1pdCAhPSAiIikJJHF1ZXJ5IC49ICIgTElNSVQgIi4kbGltaXQ7DQoNCgkJCSRvcHRpb25zX3VzZXJkZWZpbmVkMiA9IGFycmF5X2ZsaXAoJHRoaXMtPmdldF9maWVsZG9wdGlvbnMoIm1lZGlhZmlsZV91c2VyZGVmaW5lZDIiKSk7DQoJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksJHdoZXJldmFsdWVzKTsNCgkJJGl0ZW1saXN0ID0gYXJyYXkoKTsNCgkJJGlkbGlzdCA9ICIiOw0KCQl3aGlsZSAoJGRicmVzdWx0ICYmICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpew0KCQkJJGl0ZW0gPSBuZXcgc3RkQ2xhc3MoKTsNCgkJCSRpdGVtLT5fX3doYXQgPSAibWVkaWFmaWxlIjsNCgkJCWZvcmVhY2goJHJvdyBhcyAka2V5PT4kdmFsdWUpew0KCQkJCSRpdGVtLT4ka2V5ID0gJHZhbHVlOw0KCQkJfQ0KCQkJaWYoJGl0ZW0tPm1lZGlhZmlsZSAhPSAiIiAmJiAkaXRlbS0+bWVkaWFmaWxlICE9ICIvIil7DQoJCQkJJGZpbGUgPSBuZXcgU3RkQ2xhc3MoKTsNCgkJCQkkZmlsZS0+ZmlsZXBhdGggPSAoc3Vic3RyKCRpdGVtLT5tZWRpYWZpbGUsMCwxKT09Ii8iPyIiOiIvIikuJGl0ZW0tPm1lZGlhZmlsZTsNCgkJCQkkZmlsZS0+dXJsID0gJGdDbXMtPmNvbmZpZ1sidXBsb2Fkc191cmwiXS4kZmlsZS0+ZmlsZXBhdGg7DQoJCQkJJGluZm8gPSAkdGhpcy0+cGxHZXRGaWxlSW5mbygkZ0Ntcy0+Y29uZmlnWyJ1cGxvYWRzX3BhdGgiXS4kZmlsZS0+ZmlsZXBhdGgpOw0KCQkJCWZvcmVhY2goJGluZm8gYXMgJGtleT0+JHZhbHVlKQkkZmlsZS0+JGtleSA9ICR2YWx1ZTsNCgkJCQlpZigkZmlsZS0+ZmlsZWljb24gPT0gImljb25zL2ZpbGV0eXBlcy9mcGFpbnQuZ2lmIikJJGZpbGUtPmltYWdlID0gJzxpbWcgc3JjPSInLiRmaWxlLT51cmwuJyIgYWx0PSIiLz4nOw0KCQkJCWlmKCRhZG1pbikJJGZpbGUtPnBpYyA9ICRhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoJGZpbGUtPmZpbGVpY29uKTsNCgkJCX1lbHNlew0KCQkJCSRmaWxlID0gZmFsc2U7DQoJCQl9DQoJCQkkaXRlbS0+bWVkaWFmaWxlID0gJGZpbGU7DQoJCQlpZigkaXRlbS0+cGljdHVyZSAhPSAiIiAmJiAkaXRlbS0+cGljdHVyZSAhPSAiLyIpew0KCQkJCSRmaWxlID0gbmV3IFN0ZENsYXNzKCk7DQoJCQkJJGZpbGUtPmZpbGVwYXRoID0gKHN1YnN0cigkaXRlbS0+cGljdHVyZSwwLDEpPT0iLyI/IiI6Ii8iKS4kaXRlbS0+cGljdHVyZTsNCgkJCQkkZmlsZS0+dXJsID0gJGdDbXMtPmNvbmZpZ1sidXBsb2Fkc191cmwiXS4kZmlsZS0+ZmlsZXBhdGg7DQoJCQkJJGluZm8gPSAkdGhpcy0+cGxHZXRGaWxlSW5mbygkZ0Ntcy0+Y29uZmlnWyJ1cGxvYWRzX3BhdGgiXS4kZmlsZS0+ZmlsZXBhdGgpOw0KCQkJCWZvcmVhY2goJGluZm8gYXMgJGtleT0+JHZhbHVlKQkkZmlsZS0+JGtleSA9ICR2YWx1ZTsNCgkJCQlpZigkZmlsZS0+ZmlsZWljb24gPT0gImljb25zL2ZpbGV0eXBlcy9mcGFpbnQuZ2lmIikJJGZpbGUtPmltYWdlID0gJzxpbWcgc3JjPSInLiRmaWxlLT51cmwuJyIgYWx0PSIiLz4nOw0KCQkJCWlmKCRhZG1pbikJJGZpbGUtPnBpYyA9ICRhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoJGZpbGUtPmZpbGVpY29uKTsNCgkJCX1lbHNlew0KCQkJCSRmaWxlID0gZmFsc2U7DQoJCQl9DQoJCQkkaXRlbS0+cGljdHVyZSA9ICRmaWxlOw0KCQkJJGl0ZW0tPnVzZXJkZWZpbmVkMiA9IChpc3NldCgkb3B0aW9uc191c2VyZGVmaW5lZDJbJGl0ZW0tPnVzZXJkZWZpbmVkMl0pKT8kaXRlbS0+dXNlcmRlZmluZWQyOmZhbHNlOw0KCQkJJGl0ZW0tPnVzZXJkZWZpbmVkMl9uYW1ldmFsdWUgPSAoaXNzZXQoJG9wdGlvbnNfdXNlcmRlZmluZWQyWyRpdGVtLT51c2VyZGVmaW5lZDJdKSk/JG9wdGlvbnNfdXNlcmRlZmluZWQyWyRpdGVtLT51c2VyZGVmaW5lZDJdOiIiOw0KCQkJJGl0ZW0tPm5hbWUgPSBzdHJpcHNsYXNoZXMoJGl0ZW0tPm5hbWUpOw0KCQkJJGl0ZW0tPmFsaWFzID0gc3RyaXBzbGFzaGVzKCRpdGVtLT5hbGlhcyk7DQoJCQkkaXRlbS0+bmJjaGlsZHJlbiA9IGZhbHNlOw0KCQkJJGl0ZW0tPmluc2VydFRhZyA9ICd7Y21zX21vZHVsZSBtb2R1bGU9ImF2cGxheWVyIiBhbGlhcz0iJy4kaXRlbS0+YWxpYXMuJyJ9JzsNCgkJDQoJCQlpZigkYWRtaW4gPT0gdHJ1ZSl7DQoJCQkJLy8gJHBhcm1zIHdpbGwgYmUgdGhlIGJhc2UgZm9yIHBhcmFtZXRlcnMgb2YgdGhlIGFkbWluIGxpbmtzDQoJCQkJJHBhcm1zID0gYXJyYXkoDQoJCQkJCSJwcmVmaXgiPT4iQiIsDQoJCQkJCSJ0YWJsZW5hbWUiPT4iYXZwbGF5ZXJfbWVkaWFmaWxlIiwNCgkJCQkJImxldmVsbmFtZSI9PiJtZWRpYWZpbGUiLA0KCQkJCQkiY2hpbGQiPT5mYWxzZSwNCgkJCQkJInBhcmVudGRlZmF1bHQiPT5mYWxzZSwNCgkJCQkJIm9yZGVyYnlwYXJlbnQiPT50cnVlLA0KCQkJCQkiYWRkZmlsZXMiPT4iIiwNCgkJCQkJInNoYXJlY2hpbGRyZW4iPT5mYWxzZSwNCgkJCQkJInNoYXJlZGJ5cGFyZW50cyI9PmZhbHNlLA0KCQkJCQkiZmlsZXMiPT4ibWVkaWFmaWxlLHBpY3R1cmUiDQoJCQkJCSk7DQoJCQkJJGl0ZW0gPSAkdGhpcy0+YWRkYWRtaW5saW5rcygkaXRlbSwkcGFybXMsJGlkLCRyZXR1cm5pZCk7DQoJCQl9DQoJCQkkaWRsaXN0IC49ICgkaWRsaXN0PT0iIj8iIjoiIE9SICIpLiIgcGFyZW50PSciLiRpdGVtLT5pZC4iJyI7DQoJCQlhcnJheV9wdXNoKCRpdGVtbGlzdCwkaXRlbSk7DQoJCX0NCg0KCQlyZXR1cm4gJGl0ZW1saXN0Ow0KCX0NCglmdW5jdGlvbiBwbFJlc2l6ZSgkZnVsbHBhdGgsICRuZXdwYXRoLCAkbmV3d2lkdGgsICRuZXdoZWlnaHQ9ZmFsc2UsICR0cmFuc3BhcmVuY3k9ZmFsc2UsICRjcm9wPWZhbHNlKSB7DQoJCXJlcXVpcmUgImZ1bmN0aW9uLnBscmVzaXplLnBocCI7DQoJCXJldHVybiAkcmV0dXJuOw0KCX0NCgkNCglmdW5jdGlvbiBwbEdldEZpbGVJbmZvKCRmaWxlcGF0aCl7DQoJCWlmKCFmaWxlX2V4aXN0cygkZmlsZXBhdGgpKQlyZXR1cm4gZmFsc2U7DQoJCXJlcXVpcmUgImZ1bmN0aW9uLnBsR2V0RmlsZUluZm8ucGhwIjsNCgkJcmV0dXJuICRpbmZvOw0KCX0NCgkNCglmdW5jdGlvbiB1cGxvYWRfY2hlY2tmaWxlbmFtZSgkZmlsZW5hbWUsICRkaXIpew0KCQkvLyBpZiBhIGZpbGUgb2YgdGhhdCBuYW1lIGV4aXN0cywgYXBwZW5kcyBudW1iZXIgdG8gdGhlIGZpbGVuYW1lDQoJCSR0bXBmaWxlbmFtZSA9IHN0cl9yZXBsYWNlKCIgIiwiXyIsJGZpbGVuYW1lKTsNCgkJJGV4dGVuc2lvbiA9IHN0cnJjaHIoJHRtcGZpbGVuYW1lLCAiLiIpOw0KCQkkY2xlYW5maWxlbmFtZSA9IHN0cl9yZXBsYWNlKCRleHRlbnNpb24sICIiLCAkdG1wZmlsZW5hbWUpOw0KDQoJCSRkZXN0ZGlyID0gJGRpci4kdG1wZmlsZW5hbWU7DQoJCSRpID0gMTsNCgkJd2hpbGUoZmlsZV9leGlzdHMoJGRlc3RkaXIpKXsNCgkJCSR0bXBmaWxlbmFtZSA9ICRjbGVhbmZpbGVuYW1lLiJfIi4kaS4kZXh0ZW5zaW9uOw0KCQkJJGRlc3RkaXIgPSAkZGlyLiR0bXBmaWxlbmFtZTsNCgkJCSRpKys7DQoJCX0NCgkJcmV0dXJuICR0bXBmaWxlbmFtZTsNCgl9DQoJDQoJZnVuY3Rpb24gcGxVcGxvYWRGaWxlKCRmaWxlLCAkZGVzdGluYXRpb249IiIsICRyZXNpemU9ZmFsc2UsICRjcm9wPWZhbHNlKXsNCgkJZ2xvYmFsICRnQ21zOw0KCQkkZGlyID0gJGdDbXMtPmNvbmZpZ1sidXBsb2Fkc19wYXRoIl0uc3RyX3JlcGxhY2UoIi8vIiwiLyIsIi8iLiRkZXN0aW5hdGlvbi4iLyIpOw0KCQkNCgkJJGZpbGVuYW1lID0gJHRoaXMtPnVwbG9hZF9jaGVja2ZpbGVuYW1lKCRmaWxlWyJuYW1lIl0sJGRpcik7DQoJCQ0KCQlpZiAoY21zX21vdmVfdXBsb2FkZWRfZmlsZSgkZmlsZVsidG1wX25hbWUiXSwgJGRpci4kZmlsZW5hbWUpKSB7DQoJCQlpZigkcmVzaXplICYmICFpc19hcnJheSgkcmVzaXplKSkJJHJlc2l6ZSA9IGV4cGxvZGUoIngiLCRyZXNpemUpOw0KCQkJaWYoJHJlc2l6ZSAmJiBjb3VudCgkcmVzaXplKSA9PSAyKSAkdGhpcy0+cGxSZXNpemUoJGRpci4kZmlsZW5hbWUsICcnLCAkcmVzaXplWzBdLCAkcmVzaXplWzFdLHRydWUsJGNyb3ApOw0KCQkJcmV0dXJuIHN0cl9yZXBsYWNlKCIvLyIsIi8iLCIvIi4kZGVzdGluYXRpb24uIi8iLiRmaWxlbmFtZSk7DQoJCX1lbHNlew0KCQkJcmV0dXJuIGZhbHNlOw0KCQl9DQoJfQ0KCQ0KCWZ1bmN0aW9uIHBsQXNzaWduRmlsZSgkZmlsZXBhdGgsICR0YWJsZSwgJGl0ZW1pZCwgJGZpZWxkLCAkdGh1bWJzaXplPWZhbHNlLCAkY3JvcHRodW1iPWZhbHNlKXsNCgkJJHRhYmxlbmFtZSA9IGNtc19kYl9wcmVmaXgoKS4nbW9kdWxlXycuJHRhYmxlOw0KCQkkZmlsZXBhdGggPSBzdHJfcmVwbGFjZSgiLy8iLCIvIiwkZmlsZXBhdGgpOw0KDQoJCWlmKCR0aHVtYnNpemUgJiYgIWlzX2FycmF5KCR0aHVtYnNpemUpKQkkdGh1bWJzaXplID0gZXhwbG9kZSgieCIsJHRodW1ic2l6ZSk7DQoJCWlmKCAkZmlsZXBhdGggIT0gIiIgJiYgJHRodW1ic2l6ZSAmJiBjb3VudCgkdGh1bWJzaXplKSA9PTIgKSB7DQoJCQlnbG9iYWwgJGdDbXM7DQoJCQkkYmFzZXBhdGggPSAkZ0Ntcy0+Y29uZmlnWyJ1cGxvYWRzX3BhdGgiXTsNCgkJCSRleHBsb2RlZCA9IGV4cGxvZGUoIi8iLCRmaWxlcGF0aCk7DQoJCQkkZXhwbG9kZWRbY291bnQoJGV4cGxvZGVkKS0xXSA9ICJwbHRodW1iXyIuJGV4cGxvZGVkW2NvdW50KCRleHBsb2RlZCktMV07DQoJCQkkdGh1bWJwYXRoID0gaW1wbG9kZSgiLyIsJGV4cGxvZGVkKTsNCgkJCSR0aGlzLT5wbFJlc2l6ZSgkYmFzZXBhdGguIi8iLiRmaWxlcGF0aCwgJGJhc2VwYXRoLiIvIi4kdGh1bWJwYXRoLCAkdGh1bWJzaXplWzBdLCAkdGh1bWJzaXplWzFdLCB0cnVlLCAkY3JvcHRodW1iKTsNCgkJfQ0KDQoJCSRkYiA9ICR0aGlzLT5HZXREYigpOw0KDQoJCWlmKCAkdGFibGUgPT0gJHRoaXMtPkdldE5hbWUoKS4iX211bHRpcGxlZmlsZXNmaWVsZHMiICkgew0KCQkJJG5ld2lkID0gJGRiLT5HZW5JRCgkdGFibGVuYW1lLiJfc2VxIik7DQoJCQkkcXVlcnkgPSAiSU5TRVJUIElOVE8gJHRhYmxlbmFtZSBTRVQgZmlsZWlkPT8sIGl0ZW1pZD0/LCBmaWVsZG5hbWU9PywgZmlsZXBhdGg9PyI7DQoJCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoICRxdWVyeSwgYXJyYXkoJG5ld2lkLCAkaXRlbWlkLCAkZmllbGQsICRmaWxlcGF0aCkgKTsNCgkJfWVsc2V7DQoJCQkkcXVlcnkgPSAiVVBEQVRFICR0YWJsZW5hbWUgU0VUICRmaWVsZD0/IFdIRVJFIGlkPT8gTElNSVQgMSI7DQoJCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LGFycmF5KCRmaWxlcGF0aCwkaXRlbWlkKSk7DQoJCX0NCgkJDQoJCXJldHVybiAkZGJyZXN1bHQ7DQoJfQ0KCWZ1bmN0aW9uIGdldEZpbGVDb250ZW50KCRmaWxlbmFtZSl7DQoJCS8vIHJldHVybnMgdGhlIGNvbnRlbnQgb2YgYSBmaWxlDQoJCSRmaWxlcGF0aCA9IGRpcm5hbWUoX19GSUxFX18pLkRJUkVDVE9SWV9TRVBBUkFUT1IuJGZpbGVuYW1lOw0KCQlpZihmaWxlX2V4aXN0cygkZmlsZXBhdGgpKXsNCgkJCSRmaGFuZGxlID0gZm9wZW4oJGZpbGVwYXRoLCAicisiKTsNCgkJCSRjb250ZW50ID0gZnJlYWQoJGZoYW5kbGUsIGZpbGVzaXplKCRmaWxlcGF0aCkpOw0KCQkJcmV0dXJuICRjb250ZW50Ow0KCQl9ZWxzZXsNCgkJCXJldHVybiBmYWxzZTsNCgkJfQ0KCX0NCg0KfQ0KDQo/Pg0K]]></data>
	</file>
	<file>
	  <filename>/avplayer_auto_export.dna</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[YToyOntzOjU6ImluZm9zIjthOjE0OntzOjQ6Im5hbWUiO3M6ODoiYXZwbGF5ZXIiO3M6MTI6ImZyaWVuZGx5bmFtZSI7czo4OiJBVlBsYXllciI7czoxMToiZGVzY3JpcHRpb24iO3M6MTY6IlBsYXllciBmcm9udCBlbmQiO3M6ODoibmJsZXZlbHMiO3M6MToiMiI7czoxMjoibmFtZW9mbW9kdWxlIjtzOjg6ImF2cGxheWVyIjtzOjEzOiJ0ZW1wbGF0ZWxldmVsIjtzOjE6IjAiO3M6OToiZG91cGdyYWRlIjtiOjA7czoxNDoidXBncmFkZXF1ZXJpZXMiO2E6MDp7fXM6MTM6Im1vZGlmaWNhdGlvbnMiO2E6MDp7fXM6NzoidmVyc2lvbiI7czozOiIxLjMiO3M6MTE6ImRlbGV0ZWZpbGVzIjtiOjA7czoxMzoiZWRpdGFibGVhbGlhcyI7YjowO3M6NzoiZG9mZWFkZCI7czoxOiIxIjtzOjk6ImxhbmdmaWxlcyI7YToxOntpOjA7czo5OiJlbl9VUy5waHAiO319czo2OiJsZXZlbHMiO2E6Mjp7aTowO2E6MTA6e2k6MDtzOjY6InBsYXllciI7aToxO3M6MToiQSI7aToyO3M6MToiMCI7aTozO3M6MToiNiI7aTo2O3M6MToiMSI7aTo3O3M6MToiMCI7aTo4O3M6MToiMSI7aTo0O2E6Njp7aTowO2E6ODp7aTowO3M6ODoibG9jYXRpb24iO2k6NztzOjg6IkxvY2F0aW9uIjtpOjE7czoxOiI0IjtpOjI7czoxOiIxIjtpOjM7czoxOiIwIjtpOjQ7czowOiIiO2k6NTthOjk6e3M6MTE6Imxpc3RvcHRpb25zIjtzOjA6IiI7czo4OiJsaXN0bW9kZSI7czoxOiIxIjtzOjg6InVwZm9sZGVyIjtzOjA6IiI7czo1OiJ0aHVtYiI7czowOiIiO3M6NDoic2l6ZSI7czowOiIiO3M6MTE6ImlubmVyc2VhcmNoIjtzOjE6IjEiO3M6NDoiY3JvcCI7czoxOiIwIjtzOjc6ImZpbGVleHQiO3M6MDoiIjtzOjk6ImNyb3B0aHVtYiI7czoxOiIwIjt9aTo2O2E6MDp7fX1pOjE7YTo4OntpOjA7czo1OiJ3aWR0aCI7aTo3O3M6NToiV2lkdGgiO2k6MTtzOjE6IjEiO2k6MjtzOjE6IjAiO2k6MztzOjE6IjAiO2k6NDtzOjA6IiI7aTo1O2E6OTp7czoxMToibGlzdG9wdGlvbnMiO3M6MDoiIjtzOjg6Imxpc3Rtb2RlIjtzOjE6IjEiO3M6ODoidXBmb2xkZXIiO3M6MDoiIjtzOjU6InRodW1iIjtzOjA6IiI7czo0OiJzaXplIjtzOjA6IiI7czoxMToiaW5uZXJzZWFyY2giO3M6MToiMSI7czo0OiJjcm9wIjtzOjE6IjAiO3M6NzoiZmlsZWV4dCI7czowOiIiO3M6OToiY3JvcHRodW1iIjtzOjE6IjAiO31pOjY7YTowOnt9fWk6MjthOjg6e2k6MDtzOjY6ImhlaWdodCI7aTo3O3M6NjoiSGVpZ2h0IjtpOjE7czoxOiIxIjtpOjI7czoxOiIwIjtpOjM7czoxOiIwIjtpOjQ7czowOiIiO2k6NTthOjk6e3M6MTE6Imxpc3RvcHRpb25zIjtzOjA6IiI7czo4OiJsaXN0bW9kZSI7czoxOiIxIjtzOjg6InVwZm9sZGVyIjtzOjA6IiI7czo1OiJ0aHVtYiI7czowOiIiO3M6NDoic2l6ZSI7czowOiIiO3M6MTE6ImlubmVyc2VhcmNoIjtzOjE6IjEiO3M6NDoiY3JvcCI7czoxOiIwIjtzOjc6ImZpbGVleHQiO3M6MDoiIjtzOjk6ImNyb3B0aHVtYiI7czoxOiIwIjt9aTo2O2E6MDp7fX1pOjM7YTo4OntpOjA7czoxMDoicGFyYW1ldGVycyI7aTo3O3M6MTA6IlBhcmFtZXRlcnMiO2k6MTtzOjE6IjQiO2k6MjtzOjE6IjAiO2k6MztzOjE6IjAiO2k6NDtzOjA6IiI7aTo1O2E6OTp7czoxMToibGlzdG9wdGlvbnMiO3M6MDoiIjtzOjg6Imxpc3Rtb2RlIjtzOjE6IjEiO3M6ODoidXBmb2xkZXIiO3M6MDoiIjtzOjU6InRodW1iIjtzOjA6IiI7czo0OiJzaXplIjtzOjA6IiI7czoxMToiaW5uZXJzZWFyY2giO3M6MToiMSI7czo0OiJjcm9wIjtzOjE6IjAiO3M6NzoiZmlsZWV4dCI7czowOiIiO3M6OToiY3JvcHRodW1iIjtzOjE6IjAiO31pOjY7YTowOnt9fWk6NDthOjg6e2k6MDtzOjEyOiJ1c2VyZGVmaW5lZDEiO2k6NztzOjEzOiJVc2VyRGVmaW5lZCAxIjtpOjE7czoxOiI3IjtpOjI7czoxOiIwIjtpOjM7czoxOiIwIjtpOjQ7czowOiIiO2k6NTthOjk6e3M6MTE6Imxpc3RvcHRpb25zIjtzOjA6IiI7czo4OiJsaXN0bW9kZSI7czoxOiIxIjtzOjg6InVwZm9sZGVyIjtzOjA6IiI7czo1OiJ0aHVtYiI7czowOiIiO3M6NDoic2l6ZSI7czowOiIiO3M6MTE6ImlubmVyc2VhcmNoIjtzOjE6IjEiO3M6NDoiY3JvcCI7czoxOiIwIjtzOjc6ImZpbGVleHQiO3M6MDoiIjtzOjk6ImNyb3B0aHVtYiI7czoxOiIwIjt9aTo2O2E6MDp7fX1pOjU7YTo4OntpOjA7czoxMDoicGxheWVydHlwZSI7aTo3O3M6MTE6IlBsYXllciBUeXBlIjtpOjE7czoxOiI2IjtpOjI7czoxOiIwIjtpOjM7czoxOiIwIjtpOjQ7czowOiIiO2k6NTthOjk6e3M6MTE6Imxpc3RvcHRpb25zIjtzOjc6Im1wMyxmbHYiO3M6ODoibGlzdG1vZGUiO3M6MToiMSI7czo4OiJ1cGZvbGRlciI7czowOiIiO3M6NToidGh1bWIiO3M6MDoiIjtzOjQ6InNpemUiO3M6MDoiIjtzOjExOiJpbm5lcnNlYXJjaCI7czoxOiIxIjtzOjQ6ImNyb3AiO3M6MToiMCI7czo3OiJmaWxlZXh0IjtzOjA6IiI7czo5OiJjcm9wdGh1bWIiO3M6MToiMCI7fWk6NjthOjA6e319fWk6NTtzOjIxOiJuYW1lLGFjdGl2ZSxtb3ZlbGlua3MiO2k6OTthOjI6e2k6MDtzOjY6IlBsYXllciI7aToxO3M6NjoiUGxheWVyIjt9fWk6MTthOjEwOntpOjA7czo5OiJtZWRpYWZpbGUiO2k6MTtzOjE6IkIiO2k6MjtpOjA7aTozO3M6MToiMyI7aTo2O3M6MToiMSI7aTo3O3M6MToiMCI7aTo4O3M6MToiMSI7aTo0O2E6Mzp7aTowO2E6ODp7aTowO3M6OToibWVkaWFmaWxlIjtpOjc7czo5OiJNZWRpYWZpbGUiO2k6MTtzOjE6IjkiO2k6MjtzOjE6IjEiO2k6MztzOjE6IjAiO2k6NDtzOjA6IiI7aTo1O2E6OTp7czoxMToibGlzdG9wdGlvbnMiO3M6MDoiIjtzOjg6Imxpc3Rtb2RlIjtzOjE6IjEiO3M6ODoidXBmb2xkZXIiO3M6NToibWVkaWEiO3M6NToidGh1bWIiO3M6MDoiIjtzOjQ6InNpemUiO3M6MDoiIjtzOjExOiJpbm5lcnNlYXJjaCI7czoxOiIxIjtzOjQ6ImNyb3AiO3M6MToiMCI7czo3OiJmaWxlZXh0IjtzOjA6IiI7czo5OiJjcm9wdGh1bWIiO3M6MToiMCI7fWk6NjthOjA6e319aToxO2E6ODp7aTowO3M6NzoicGljdHVyZSI7aTo3O3M6OToiVGh1bWJuYWlsIjtpOjE7czoxOiI4IjtpOjI7czoxOiIwIjtpOjM7czoxOiIwIjtpOjQ7czowOiIiO2k6NTthOjk6e3M6MTE6Imxpc3RvcHRpb25zIjtzOjA6IiI7czo4OiJsaXN0bW9kZSI7czoxOiIxIjtzOjg6InVwZm9sZGVyIjtzOjA6IiI7czo1OiJ0aHVtYiI7czowOiIiO3M6NDoic2l6ZSI7czo3OiIxMjB4MTAwIjtzOjExOiJpbm5lcnNlYXJjaCI7czoxOiIxIjtzOjQ6ImNyb3AiO3M6MToiMCI7czo3OiJmaWxlZXh0IjtzOjA6IiI7czo5OiJjcm9wdGh1bWIiO3M6MToiMCI7fWk6NjthOjA6e319aToyO2E6ODp7aTowO3M6MTI6InVzZXJkZWZpbmVkMiI7aTo3O3M6MTM6IlVzZXJEZWZpbmVkIDIiO2k6MTtzOjE6IjciO2k6MjtzOjE6IjAiO2k6MztzOjE6IjAiO2k6NDtzOjA6IiI7aTo1O2E6OTp7czoxMToibGlzdG9wdGlvbnMiO3M6MDoiIjtzOjg6Imxpc3Rtb2RlIjtzOjE6IjEiO3M6ODoidXBmb2xkZXIiO3M6MDoiIjtzOjU6InRodW1iIjtzOjA6IiI7czo0OiJzaXplIjtzOjA6IiI7czoxMToiaW5uZXJzZWFyY2giO3M6MToiMSI7czo0OiJjcm9wIjtzOjE6IjAiO3M6NzoiZmlsZWV4dCI7czowOiIiO3M6OToiY3JvcHRodW1iIjtzOjE6IjAiO31pOjY7YTowOnt9fX1pOjU7czozMToibmFtZSxhY3RpdmUsaXNkZWZhdWx0LG1vdmVsaW5rcyI7aTo5O2E6Mjp7aTowO3M6OToiTWVkaWFmaWxlIjtpOjE7czo1OiJNZWRpYSI7fX19fQ==]]></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+Q292ZXJzIHRoZSBjcmVhdGVkIG1vZHVsZXMsIG5vdCBDVExNb2R1bGVNYWtlciBpdHNlbGYuLi48YnIvPmNsaWNrIDxhIGhyZWY9ImhlbHAuaHRtbCI+aGVyZTwvYT4gZm9yIGhlbHAgYWJvdXQgdGhlIG1vZHVsZSBjcmVhdGlvbi48L2Rpdj4KPHVsIGlkPSJtZW51Ij4KCgk8bGk+PGEgaHJlZj0iI3ExMCI+TW9kaWZ5aW5nIHRoZSBtb2R1bGUgLSB3aGVyZSB0byBzdGFydD88L2E+PC9saT4KCTxsaT48YSBocmVmPSIjcTkiPkNhbiBJIHB1dCA8aT5zbWFydHkgdGFnczwvaT4gaW4gdGhlIGl0ZW0ncyBmaWVsZHM/PC9hPjwvbGk+Cgk8bGk+PGEgaHJlZj0iI3E1Ij5Ib3cgY2FuIEkgcmV0cmlldmUgPGk+aW1hZ2VzPC9pPiBpbiB0aGUgZGlzcGxheSB0ZW1wbGF0ZXM/PC9hPjwvbGk+Cgk8bGk+PGEgaHJlZj0iI3ExMiI+SG93IGNhbiBJIGRpc3BsYXkgdmFsdWVzIGluc2lkZSBhbiA8aT5BcnJheTwvaT4/PC9hPjwvbGk+Cgk8bGk+PGEgaHJlZj0iI3ExNSI+SG93IGNhbiBJIGNoYW5nZSB0aGUgPGk+ZGF0ZXMgZGlzcGxheSBmb3JtYXQ8L2k+PzwvYT48L2xpPgoJPGxpPjxhIGhyZWY9IiNxMTgiPkhvdyBjYW4gSSBmb3JtYXQgdGhlIDxpPnBhZ2UgbWVudTwvaT4/PC9hPjwvbGk+Cgk8bGk+PGEgaHJlZj0iI3EyMiI+SG93IGNhbiBJIGRpc3BsYXkgYSBsaXN0IG9mIGVsZW1lbnRzIHNvcnRlZCBpbiBhIGNlcnRhaW4gd2F5PzwvYT48L2xpPgoJPGxpPjxhIGhyZWY9IiNxMjQiPkhvdyBjYW4gSSBnZXQgdGhlIDxpPm51bWJlciBvZiBlbGVtZW50czwvaT4gaW4gYSBjYXRlZ29yeT88L2E+PC9saT4KCTxsaT48YSBocmVmPSIjcTYiPkknbSB0cnlpbmcgdG8gZGlzcGxheSBhIGxpc3Qgb2YgaXRlbXMsIGJ1dCB0aGUgZGV0YWlsIHRlbXBsYXRlIGlzIHVzZWQgaW5zdGVhZC4gV2hhdCdzIGdvaW5nIG9uPzwvYT48L2xpPgoJPGxpPjxhIGhyZWY9IiNxMjMiPkFkbWluIHBhbmVsIGJyZWFrcyB3aGVuIEkgYWRkIGFuIGltYWdlIHRvIGFuIGl0ZW0uIFdoYXQncyBnb2luZyBvbj88L2E+PC9saT4KCTxsaT48YSBocmVmPSIjcTIxIj5DYW4gSSBpbnRlZ3JhdGUgdGhlIDxpPkNvbW1lbnRzPC9pPiBtb2R1bGU/PC9hPjwvbGk+Cgk8bGk+PGEgaHJlZj0iI3ExMSI+V2FybmluZzogbW9kdWxlIDxpPiJpcyBub3QgcHJvcGVybHkgY2xlYW5pbmcgaW5wdXQgcGFyYW1zLiI8L2k+IFdoYXQncyBnb2luZyBvbj88L2E+PC9saT4KCTxsaT48YSBocmVmPSIjcTEzIj5Ib3cgY2FuIEkgcmV0cmlldmUgaW5mb3JtYXRpb25zIGFib3V0IGFuIG9iamVjdCBvdGhlciB0aGFuIHRoZSBvbmUgSSdtIHdhdGNoaW5nPzwvYT48L2xpPgoJPGxpPjxhIGhyZWY9IiNxMSI+Q2FuIEkgY2hhbmdlIHRoZSBmaWVsZCBpbnB1dHMgdGhhdCBhcmUgZGlzcGxheWVkIGluIHRoZSBtb2R1bGUncyA8aT5zZWFyY2ggZm9ybTwvaT4/PC9hPjwvbGk+Cgk8bGk+PGEgaHJlZj0iI3E0Ij5DYW4gSSBjaGFuZ2UgdGhlIDxpPmVkaXQgZm9ybTwvaT4gZm9yIGEgbGV2ZWw/PC9hPjwvbGk+Cgk8bGk+PGEgaHJlZj0iI3ExNyI+SG93IGNhbiBJIGFkZCBhIDxpPmNvbmRpdGlvbjwvaT4gZm9yIGFuZCBlbGVtZW50J3MgaW5wdXQgdG8gYmUgYWNjZXB0ZWQ/PC9hPjwvbGk+Cgk8bGk+PGEgaHJlZj0iI3E3Ij5Ib3cgYXJlIHRoZSA8aT5kZWZhdWx0YWRtaW4gcGFuZWxzPC9pPiBnZW5lcmF0ZWQ/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+L3VsPgoJCTwvcHJlPgoJCTxwPmFuZCBjYWxsIGl0IHVzaW5nIHtjbXNfbW9kdWxlIG1vZHVsZT0ibXltb2R1bGUiIHdoYXQ9Iml0ZW0iIGxpc3R0ZW1wbGF0ZT0ib3JkZXJfYnlfcGFyZW50cyJ9PC9wPgoJCTxwPjxiPk9yZGVyIGJ5IGZpZWxkPC9iPjxici8+CgkJTGV0J3Mgc2F5IHlvdXIgbGV2ZWwgaGFzIGEgZHJvcGRvd24gZmllbGQgbmFtZWQgIm15ZmllbGQiLCBhbmQgeW91IHdpc2ggdG8gbGlzdCBlbGVtZW50cyBzb3J0ZWQgb24gdGhhdCBmaWVsZC4gQ3JlYXRlIHRoZSBmb2xsb3dpbmcgdGVtcGxhdGUgKHdoaWNoIEknbGwgY2FsbCAib3JkZXJfYnlfbXlmaWVsZCIpOjwvcD4KCQk8cHJlIGNsYXNzPSJjb2RlIj4KCQkJPDwvPnVsPgoJCQl7YXNzaWduIHZhcj0iZmllbGRmbGFnIiB2YWx1ZT1mYWxzZX0KCQkJe2ZvcmVhY2ggZnJvbT0kaXRlbWxpc3QgaXRlbT0iaXRlbSJ9CgkJCQl7aWYgJGl0ZW0tPm15ZmllbGQgIT0gJGZpZWxkZmxhZ30KCQkJCQl7aWYgJGZpZWxkZmxhZ308PC8+L3VsPjw8Lz4vbGk+ey9pZn0KCQkJCQk8PC8+bGk+eyRpdGVtLT5teWZpZWxkfTw8Lz51bD4KCQkJCQl7YXNzaWduIHZhcj0iZmllbGRmbGFnIiB2YWx1ZT0kaXRlbS0+bXlmaWVsZH0KCQkJCXsvaWZ9CgkJCQk8PC8+bGk+eyRpdGVtLT5uYW1lfTw8Lz4vbGk+CgkJCXsvZm9yZWFjaH0KCQkJPDwvPi91bD4KCQk8L3ByZT4KCQk8cD5hbmQgY2FsbCBpdCB1c2luZyB7Y21zX21vZHVsZSBtb2R1bGU9Im15bW9kdWxlIiB3aGF0PSJpdGVtIiBsaXN0dGVtcGxhdGU9Im9yZGVyX2J5X215ZmllbGQiIG9yZGVyYnk9Im15ZmllbGQifTwvcD4KCQk8L2Rpdj4KCQk8YSBjbGFzcz0iYmFja3RvdG9wIiBocmVmPSIjdG9wIj5CYWNrIHRvIHRvcDwvYT4KCTwvZGl2PgoKCgk8ZGl2IGNsYXNzPSJxZGl2IiBpZD0icTI0Ij4KCQk8ZGl2IGNsYXNzPSJxdWVzdGlvbiI+SG93IGNhbiBJIGdldCB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIGEgY2F0ZWdvcnk/PC9kaXY+CgkJPGRpdiBjbGFzcz0iYW5zd2VyIj4KCQk8cD5JZiB5b3UncmUgZGlzcGxheWluZyBhIGxpc3QgdmlldyBvZiBoaWdoZXItbGV2ZWwgb2JqZWN0cyAobGlrZSBjYXRlZ29yaWVzKSwgeW91IGNhbiBzaW1wbHkgdXNlOjwvcD4KCQk8cHJlIGNsYXNzPSJjb2RlIj57JGl0ZW0tPm5iY2hpbGRyZW59PC9wcmU+CgkJPHA+KHByb3ZpZGVkIGl0IGlzIGxvYWRlZCAtIHNlZSB0aGUgc2V0dGluZ3MgdGFiKTwvcD4KCQk8cD4kaXRlbS0+bmJjaGlsZHJlbiBnaXZlcyB0aGUgbnVtYmVyIG9mIGNoaWxkcmVuIHRoaXMgdmVyeSAkaXRlbSBoYXMgKG5vdCB0aGUgY2F0ZWdvcnkgdGhpcyBpdGVtIGlzIGluKS4gSW4gb3RoZXIgd29yZHMsIGlmIHlvdSdyZSBvbiB0aGUgZmluYWwgbGV2ZWwsIHlvdSBjYW5ub3QgdXNlIHRoaXMgYXR0cmlidXRlIChmb3IgZmluYWwgbGV2ZWwgaXRlbXMgaGF2ZSBubyBjaGlsZHJlbikuPC9wPgoJCTxwPklmIHRoYXQncyB0aGUgY2FzZSwgYW5kIHlvdSB3aXNoIHRvIGdldCB0aGUgbnVtYmVyIG9mIGl0ZW1zIHlvdXIgYXJlIGRpc3BsYXlpbmcsIHlvdSBjYW4gdXNlOjwvcD4KCQk8cHJlIGNsYXNzPSJjb2RlIj57JGl0ZW1jb3VudH08L3ByZT4KCQk8cD5JZiB5b3Ugc2VwYXJhdGUgeW91ciBjb250ZW50IGludG8gcGFnZXMsICRpdGVtY291bnQgd2lsbCBzaG93IHRoZSBudW1iZXIgb2YgaXRlbXMgY3VycmVudGx5IGRpc3BsYXllZCBvbiB0aGUgcGFnZS4gVG8gZ2V0IHRoZSB0b3RhbCBudW1iZXIgb2YgaXRlbXMgd2hlbiBzZXBhcmF0aW5nIGludG8gcGFnZXMsIHlvdSBjYW4gdXNlOjwvcD4KCQk8cHJlIGNsYXNzPSJjb2RlIj57JHBhZ2VfdG90YWxpdGVtc308L3ByZT4KCQk8L2Rpdj4KCQk8YSBjbGFzcz0iYmFja3RvdG9wIiBocmVmPSIjdG9wIj5CYWNrIHRvIHRvcDwvYT4KCTwvZGl2PgoJCgoJPGRpdiBjbGFzcz0icWRpdiIgaWQ9InE2Ij4KCQk8ZGl2IGNsYXNzPSJxdWVzdGlvbiI+SSdtIHRyeWluZyB0byBkaXNwbGF5IGEgbGlzdCBvZiBpdGVtcywgYnV0IHRoZSBkZXRhaWwgdGVtcGxhdGUgaXMgdXNlZCBpbnN0ZWFkLiBXaGF0J3MgZ29pbmcgb24/PC9kaXY+CgkJPGRpdiBjbGFzcz0iYW5zd2VyIj4KCQk8cD5JZiB5b3UncmUgb24gdGhlIGZpbmFsIGxldmVsIGFuZCB0aGVyZSdzIG9ubHkgb25lIGl0ZW0gdG8gc2hvdywgdGhlIG1vZHVsZSB3b24ndCBkaXNwbGF5IHRoZSBsaXN0IHZpZXcgYnV0IHdpbGwgaW1tZWRpYXRlbHkgc2hvdyB0aGUgZGV0YWlscyBvZiB0aGlzIGl0ZW0sIHNvIHRoYXQgdGhlIHVzZXIgZG9lc24ndCBoYXZlIHRvIGNsaWNrIHR3aWNlIGZvciBubyByZWFzb24uPC9wPgoJCTxwPklmIHlvdSB3YW50IHRvIGRpc3BsYXkgdGhlIGxpc3QgdmlldyBhbnl3YXksIHRoZXJlIGlzIG5vdyAgYSAiZm9yY2VsaXN0IiBwYXJhbWV0ZXIgdGhhdCB3aWxsIGRvIHRoZSBqb2IgKHNlZSB0aGUgaGVscCBvZiB5b3VyIG1vZHVsZSkuIFlvdXIgdGFnIHNob3VsZCBiZWNvbWU6PC9wPgoJCTxwcmUgY2xhc3M9ImNvZGUiPntjbXNfbW9kdWxlIG1vZHVsZT0icHJvZHVjdHMiIHdoYXQ9InByb2R1Y3QiIGZvcmNlbGlzdD0iMSJ9PC9wcmU+CgkJPHA+VG8gc2V0IGZvcmNlbGlzdCB0byB0cnVlIGJ5IGRlZmF1bHQsIDxhIGhyZWY9IiNxOCI+bG9vayBoZXJlPC9hPi48L3A+CgkJPC9kaXY+CgkJPGEgY2xhc3M9ImJhY2t0b3RvcCIgaHJlZj0iI3RvcCI+QmFjayB0byB0b3A8L2E+Cgk8L2Rpdj4KCQoKCTxkaXYgY2xhc3M9InFkaXYiIGlkPSJxMjMiPgoJCTxkaXYgY2xhc3M9InF1ZXN0aW9uIj5BZG1pbiBwYW5lbCBicmVha3Mgd2hlbiBJIGFkZCBhbiBpbWFnZSB0byBhbiBpdGVtLiBXaGF0J3MgZ29pbmcgb24/PC9kaXY+CgkJPGRpdiBjbGFzcz0iYW5zd2VyIj4KCQk8cD5EdXJpbmcgbW9kdWxlIGNyZWF0aW9uLCB5b3UgY2hvc2UgZm9yIGVhY2ggbGV2ZWwgd2hpY2ggZmllbGRzIHNob3VsZCBiZSBzaG93biBpbiB0aGUgYWRtaW4gcGFuZWwgbGlzdCBvZiBpdGVtcy4gSW4gdGhlIGhlbHAgdGFiIG9uIHRoaXMgc3RlcCBvZiB0aGUgbW9kdWxlIGNyZWF0aW9uLCBpdCB3YXMgc3BlY2lmaWNhbGx5IHdyaXR0ZW4gdGhhdCB5b3UgY2Fubm90IG5vcm1hbGx5IHVzZSBmaWxlIGZpZWxkcyBpbiB0aGUgYWRtaW4gcGFuZWwgbGlzdHMgKHRvIGRvIHNvLCB5b3Ugd291bGQgaGF2ZSB0byBhZGQgYSBjb25kaXRpb24gaW4gYWRtaW5wYW5lbC50cGwgYXMgZXhwbGFpbmVkIDxhIGhyZWY9IiNxNyI+aGVyZTwvYT4pLjwvcD4KCQk8cD5SZW1vdmUgdGhlIGZpbGUgZmllbGQgZnJvbSB0aGUgYWRtaW4gcGFuZWwgdmlldy48L3A+CgkJPC9kaXY+CgkJPGEgY2xhc3M9ImJhY2t0b3RvcCIgaHJlZj0iI3RvcCI+QmFjayB0byB0b3A8L2E+Cgk8L2Rpdj4JCgoKCTxkaXYgY2xhc3M9InFkaXYiIGlkPSJxMjEiPgoJCTxkaXYgY2xhc3M9InF1ZXN0aW9uIj5DYW4gSSBpbnRlZ3JhdGUgdGhlIDxpPkNvbW1lbnRzPC9pPiBtb2R1bGU/PC9kaXY+CgkJPGRpdiBjbGFzcz0iYW5zd2VyIj4KCQk8cD48Yj5ZZXMuPC9iPiBJbiBmYWN0LCB0aGUgQ29tbWVudHMgbW9kdWxlIG1ha2VzIHRoaXMgdmVyeSBlYXN5IGZvciBhbnkgb3RoZXIgbW9kdWxlLjwvcD4KCQk8cD5PcGVuIHRoZSBkZXRhaWwgdGVtcGxhdGUgZm9yIHlvdXIgbGFzdCBsZXZlbCBlbGVtZW50cywgYW5kIHNpbXBseSBhZGQgdGhpczo8L3A+CgkJPHByZSBjbGFzcz0iY29kZSI+e2Ntc19tb2R1bGUgbW9kdWxlPSJjb21tZW50cyIgbW9kdWxlbmFtZT0iTkFNRU9GWU9VUk1PRFVMRSIgcGFnZWlkPSRpdGVtLT5pZH08L3ByZT4KCQk8cD5XaGVyZSBOQU1FT0ZZT1VSTU9EVUxFIGlzLCBvZiBjb3Vyc2UsIHRoZSBuYW1lIG9mIHlvdXIgbW9kdWxlLjwvcD4KCQk8L2Rpdj4KCQk8YSBjbGFzcz0iYmFja3RvdG9wIiBocmVmPSIjdG9wIj5CYWNrIHRvIHRvcDwvYT4KCTwvZGl2PgoJCgoJPGRpdiBjbGFzcz0icWRpdiIgaWQ9InExMSI+CgkJPGRpdiBjbGFzcz0icXVlc3Rpb24iPldhcm5pbmc6IG1vZHVsZSAiaXMgbm90IHByb3Blcmx5IGNsZWFuaW5nIGlucHV0IHBhcmFtcy4iIFdoYXQncyBnb2luZyBvbj88L2Rpdj4KCQk8ZGl2IGNsYXNzPSJhbnN3ZXIiPgoJCTxwIHN0eWxlPSJjb2xvcjogcmVkOyBmb250LXdlaWdodDogYm9sZDsiPlsqKiogVGhhbmtzIHRvIGlrdWxpcywgdGhpcyB3YXMgZGVmaW5pdGVseSBmaXhlZCBpbiAxLjguNC4yIGFuZCBzaG91bGRuJ3QgYmUgYSBwcm9ibGVtIGFueW1vcmUgKioqXTwvcD4KCQk8cD5UaGUgYWR2YW5jZWQgc2VhcmNoIGZvcm0gd291bGQgbmVlZCB0byByZWdpc3RlciBhIHBhcmFtIGZvciBlYWNoIGZpZWxkIG9mIGVhY2ggbGV2ZWwsIHdoaWNoIEkgZmluZCByYXRoZXIgaW5lbGVnYW50LiBGb3IgdGhhdCByZWFzb24gdGhlIFJlc3RyaWN0VW5rbm93blBhcmFtcyBvcHRpb24gaGFzIGJlZW4gZGlzYWJsZWQuPC9wPgoJCTxwPjxiPklmIHlvdSBhcmUgbm90IHVzaW5nIHRoZSBhZHZhbmNlZCBzZWFyY2ggZm9ybTwvYj4sIHlvdSBjYW4gc2FmZWx5IGFjdGl2YXRlIHRoZSBSZXN0cmljdFVua25vd25QYXJhbXMoKSBvcHRpb24uIEVkaXQgdGhlIG1vZHVsZSBmaWxlIChtb2R1bGVuYW1lLm1vZHVsZS5waHApLCBmaW5kIHRoZSBTZXRQYXJhbWV0ZXJzKCkgZnVuY3Rpb24sIGFuZCBlZGl0IHRoZSBmb2xsb3dpbmcgbGluZSA6CgkJPHByZSBjbGFzcz0iY29kZSI+CQkkdGhpcy0+UmVzdHJpY3RVbmtub3duUGFyYW1zKGZhbHNlKTs8L3ByZT4KCQl0bzoKCQk8cHJlIGNsYXNzPSJjb2RlIj4JCSR0aGlzLT5SZXN0cmljdFVua25vd25QYXJhbXMoKTs8L3ByZT48L3A+CgkJPHA+PGI+SWYgeW91IGRvIHVzZSB0aGUgYWR2YW5jZWQgc2VhcmNoPC9iPiwgSSB3b3VsZCBzdWdnZXN0IGRpc2FibGluZyB0aGUgIkFsbG93IHBhcmFtZXRlciBjaGVja3MgdG8gY3JlYXRlIHdhcm5pbmcgbWVzc2FnZXMiIGluIHRoZSBDTVMgR2xvYmFsIFNldHRpbmdzLjwvcD4KCQk8L2Rpdj4KCQk8YSBjbGFzcz0iYmFja3RvdG9wIiBocmVmPSIjdG9wIj5CYWNrIHRvIHRvcDwvYT4KCTwvZGl2PgoJCgoJPGRpdiBjbGFzcz0icWRpdiIgaWQ9InExMyI+CgkJPGRpdiBjbGFzcz0icXVlc3Rpb24iPkhvdyBjYW4gSSByZXRyaWV2ZSBpbmZvcm1hdGlvbnMgYWJvdXQgYW4gb2JqZWN0IG90aGVyIHRoYW4gdGhlIG9uZSBJJ20gd2F0Y2hpbmc/PC9kaXY+CgkJPGRpdiBjbGFzcz0iYW5zd2VyIj4KCQk8cD5JbiBhbnkgbW9kdWxlIHRlbXBsYXRlLCB5b3UgY2FuIHJldHJpZXZlIGEgd2hvbGUgaXRlbSBvYmplY3QgdXNpbmcgdGhlIGZvbGxvd2luZyBzbWFydHkgdGFnOiA8Y29kZT57TU9EVUxFTkFNRV9nZXRfbGV2ZWxpdGVtfTwvY29kZT4uPC9wPgoJCTxwPlRoZSB0YWcgcmVxdWlyZXMgMyBwYXJhbWV0ZXJzIDogd2hhdCAocmV0cmlldmUgYW4gaXRlbSBmcm9tIHdoaWNoIGxldmVsKSwgYWxpYXMgKHRoZSBpdGVtJ3MgYWxpYXMpIGFuZCBhc3NpZ24gKGluIHdoaWNoIHNtYXJ0eSB2YXJpYWJsZSB0aGlzIHNob3VsZCBiZSBzdG9yZWQpLjxici8+CgkJU28gYSB0eXBpY2FsIGV4YW1wbGUgd291bGQgYmU6PC9wPgoJCTxwcmUgY2xhc3M9ImNvZGUiPgkJe215bW9kdWxlX2dldF9sZXZlbGl0ZW0gd2hhdD0iY2F0ZWdvcnkiIGFsaWFzPSJteWZpcnN0Y2F0ZWdvcnkiIGFzc2lnbj0iY2F0b2JqZWN0In08L3ByZT4KCQk8cD5BbmQgeW91IGNhbiB0aGVuIHVzZSB0aGUgYXNzaWduZWQgb2JqZWN0IHRvIGRpc3BsYXkgaW5mb3JtYXRpb246PC9wPgoJCTxwcmUgY2xhc3M9ImNvZGUiPgkJeyRjYXRvYmplY3QtPm5hbWV9PC9wcmU+CgkJPC9kaXY+CgkJPGEgY2xhc3M9ImJhY2t0b3RvcCIgaHJlZj0iI3RvcCI+QmFjayB0byB0b3A8L2E+Cgk8L2Rpdj4KCQkKCgk8ZGl2IGNsYXNzPSJxZGl2IiBpZD0icTEiPgoJCTxkaXYgY2xhc3M9InF1ZXN0aW9uIj5DYW4gSSBjaGFuZ2UgdGhlIGZpZWxkIGlucHV0cyB0aGF0IGFyZSBkaXNwbGF5ZWQgaW4gdGhlIG1vZHVsZSdzIGFkdmFuY2VkIHNlYXJjaCBmb3JtPzwvZGl2PgoJCTxkaXYgY2xhc3M9ImFuc3dlciI+CgkJPHA+PGI+WWVzLjwvYj48L3A+CgkJPHA+RnJvbSBDVExNb2R1bGVNYWtlciAxLjguMywgaXQgaXMgcG9zc2libGUgdG8gZGVmaW5lIHdoaWNoIGZpZWxkcyB3aWxsIGJlIHNob3duIGluIHRoZSBhZHZhbmNlZCBzZWFyY2ggZm9ybSB1cG9uIGZpZWxkIGNyZWF0aW9uLiBJZiB5b3UgaGF2ZSBjcmVhdGVkIHlvdXIgbW9kdWxlIHdpdGggYW4gZWFybGllciB2ZXJzaW9uIG9yIGRvIG5vdCB3YW50IHRvIGNyZWF0ZSBpdCBhZ2FpbiwgdGhlcmUncyBhbm90aGVyIHdheSBhcm91bmQuPC9wPgoJCTxwPlRoZSBzZWFyY2ggZm9ybSBmb3IgdGhlIG1vZHVsZSdzIHNlYXJjaCBhY3Rpb24gYXJlIGdlbmVyYXRlZCBmcm9tIHRlbXBsYXRlcyB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgInRlbXBsYXRlcyIgZm9sZGVyIG9mIHlvdXIgbW9kdWxlLjwvcD4KCQk8cD5UaGUgInNlYXJjaC50cGwiIGZpbGUgaXMgdGhlIHRlbXBsYXRlIGZvciB0aGUgc2VhcmNoIGZvcm0gd2hlbiB0aGUgInNpbXBsZSIgc2VhcmNobW9kZSBpcyBjaG9zZW4uPC9wPgoJCTxwPlRoZSAic2VhcmNoX2dlbmVyYWxyZXN1bHRzLnRwbCIgZmlsZSBpcyB0aGUgdGVtcGxhdGUgZm9yIHRoZSBzZWFyY2ggcmVzdWx0cyB3aGVuIHdlIGFyZSBzZWFyY2hpbmcgaW4gbW9yZSB0aGFuIG9uZSBsZXZlbCBhdCB0aGUgc2FtZSB0aW1lLiBPdGhlcndpc2UsIHRoZSBsZXZlbCdzIGRlZmF1bHQgbGlzdCBtb2R1bGUgaXMgdXNlZC48L3A+CgkJPHA+Rm9yIGVhY2ggbGV2ZWwgb2YgeW91ciBtb2R1bGUsIHRoZXJlIHNob3VsZCBiZSBhIGZpbGUgbmFtZWQgInNlYXJjaF9OQU1FT0ZUSEVMRVZFTC50cGwiLiBUaGlzIGNvbnRhaW5zIHRoZSB0ZW1wbGF0ZSBmb3IgdGhlIGFkdmFuY2VkIHNlYXJjaCBmb3JtIGZvciB0aGlzIGxldmVsLiBJZiB5b3Ugd2FudCB0byByZW1vdmUgYSBmaWVsZCBpbnB1dCBmcm9tIHRoZSBzZWFyY2ggZm9ybSwgeW91IGNhbiBzaW1wbHkgZGVsZXRlIHRoZSBhcHByb3ByaWF0ZSBzZWN0aW9uIG9mIHRoZSB0ZW1wbGF0ZS4gKEkgd291bGQgcmVjb21tYW5kIHRvIG1ha2UgYSBiYWNrdXAgb2YgdGhlIG9yaWdpbmFsIHRlbXBsYXRlLCBpZiB5b3UgZXZlciBjaGFuZ2UgeW91ciBtaW5kISk8L3A+CgkJPC9kaXY+CgkJPGEgY2xhc3M9ImJhY2t0b3RvcCIgaHJlZj0iI3RvcCI+QmFjayB0byB0b3A8L2E+Cgk8L2Rpdj4KCQoJCgk8ZGl2IGNsYXNzPSJxZGl2IiBpZD0icTQiPgoJCTxkaXYgY2xhc3M9InF1ZXN0aW9uIj5DYW4gSSBjaGFuZ2UgdGhlIGVkaXQgZm9ybSBmb3IgYSBsZXZlbD88L2Rpdj4KCQk8ZGl2IGNsYXNzPSJhbnN3ZXIiPgoJCTxwPjxiPlllcy48L2I+PC9wPgoJCTxwPlRoZSBlZGl0IGZvcm1zIGZvciBlYWNoIGxldmVsIGFyZSBnZW5lcmF0ZWQgZnJvbSB0ZW1wbGF0ZXMgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlICJ0ZW1wbGF0ZXMiIGZvbGRlciBvZiB5b3VyIG1vZHVsZS4gRm9yIGVhY2ggbGV2ZWwgb2YgeW91ciBtb2R1bGUsIHRoZSB0ZW1wbGF0ZSBmb3IgdGhlIGVkaXQgZm9ybXJlIHNob3VsZCBiZSBpbiBhIGZpbGUgbmFtZWQgImVkaXRQUkVGSVhPRlRIRUxFVkVMLnRwbCIuPC9wPgoJCTxwPllvdSBjYW4gbW9kaWZ5IHRoZSB0ZW1wbGF0ZSwgYnV0IGtlZXAgdHdvIHRoaW5ncyBpbiBtaW5kOjxici8+CgkJLSBJZiB5b3UgcmVtb3ZlIGFuIGlucHV0LCB0aGUgZm9ybSBtaWdodCBub3Qgd29yayBhbnltb3JlLjxici8+CgkJLSBJZiB5b3Ugd2lzaCB0byBjaGFuZ2UgdGhlIGZpZWxkIGxhYmVscywgeW91IHNob3VsZCBwcmVmZXJhYmx5IGRvIHNvIGluIHRoZSBsYW5ndWFnZSBmaWxlLjwvcD4KCQk8L2Rpdj4KCQk8YSBjbGFzcz0iYmFja3RvdG9wIiBocmVmPSIjdG9wIj5CYWNrIHRvIHRvcDwvYT4KCTwvZGl2PgoJCgkKCTxkaXYgY2xhc3M9InFkaXYiIGlkPSJxMTciPgoJCTxkaXYgY2xhc3M9InF1ZXN0aW9uIj5DYW4gSSBhZGQgYSBjb25kaXRpb24gZm9yIGFuZCBlbGVtZW50J3MgaW5wdXQgdG8gYmUgYWNjZXB0ZWQ/PC9kaXY+CgkJPGRpdiBjbGFzcz0iYW5zd2VyIj4KCQk8cD5PbmUgb2YgeW91ciBsZXZlbCBoYXMsIGZvciBleGFtcGxlLCBhIG51bWVyaWMgZmllbGQgKHdoaWNoIHdlJ2xsIGNhbGwgIm15ZmllbGQiKSwgYW5kIHlvdSB3aXNoIHRvIG1ha2Ugc3VyZSBpdCdzIGJldHdlZW4sIHNheSwgMCBhbmQgMTAwPyBPZiBjb3Vyc2UgaXQncyBwb3NzaWJsZSwgYnV0IHlvdSdsbCBuZWVkIHRvIGVkaXQgdGhlIGNvZGUuPC9wPgoJCTxwPk9wZW4gdGhlIGVkaXQgZmlsZSBhc3NvY2lhdGVkIHdpdGggdGhlIGxldmVsIChhY3Rpb24uZWRpdExFVkVMUFJFRklYLnBocCkuIFNvbWV3aGVyZSBub3Qgc28gZmFyIGZyb20gdGhlIGJlZ2lubmluZyBvZiB0aGUgZmlsZSwgeW91IHdpbGwgZmluZCB0aGUgZm9sbG93aW5nIGNvZGUgOjwvcD4KCQk8cHJlIGNsYXNzPSJjb2RlIj4KCQkvLyBDSEVDSyBJRiBUSEUgTkVFREVEIFZBTFVFUyBBUkUgVEhFUkUKIzEJCWlmKAkhaXNzZXQoJHBhcmFtc1siaXRlbW5hbWUiXSkgfHwgJHBhcmFtc1siaXRlbW5hbWUiXSA9PSAiIiApewojMgkJCWVjaG8gJHRoaXMtPlNob3dFcnJvcnMoJHRoaXMtPkxhbmcoImVycm9yX21pc3NnaW52YWx1ZSIpKTsKIzMJCX1lbHNlaWYoZmFsc2UgPT0gJHRoaXMtPmNoZWNrYWxpYXMoIm1vZHVsZV9tb2R1bGVuYW1lX2l0ZW0iLCAkaXRlbS0+YWxpYXMsIGlzc2V0KCRwYXJhbXNbIml0ZW1pZCJdKT8kcGFyYW1zWyJpdGVtaWQiXTpmYWxzZSkpewojNAkJCWVjaG8gJHRoaXMtPlNob3dFcnJvcnMoJHRoaXMtPkxhbmcoImVycm9yX2FscmVhZHlleGlzdHMiKSk7CiM1CQl9ZWxzZXsKCQkjIyMjIyMjIyMjIyMgRE9JTkcgVEhFIFVQREFURQoJCTwvcHJlPgoJCTxwPkhlcmUgdHdvIGNvbmRpdGlvbnMgYXJlIGNoZWNrZWQgYmVmb3JlIHVwZGF0aW5nL2FkZGluZyB0aGUgZWxlbWVudDogZmlyc3QsIG9uIGxpbmUgIzEsIHdlIGNoZWNrIGlmIGEgbmFtZSB3YXMgZ2l2ZW4gKGFuZCBhbnkgb3RoZXIgbWFuZGF0b3J5IHZhbHVlLCBpZiBhbnkpLCBhbmQgaWYgaXQgd2Fzbid0LCB3ZSBkaXNwbGF5IGFuIGVycm9yIChsaW5lICMyKS4gT24gbGluZSAjMywgd2UgY2hlY2sgaWYgYW5vdGhlciBlbGVtZW50IGFscmVhZHkgaGFzIHRoZSBzYW1lIGFsaWFzIGFuZCBkaXNwbGF5IGFuIGVycm9yIG1lc3NhZ2UgKGxpbmUgIzQpIGlmIGl0IGlzIHRoZSBjYXNlLiBJZiBubyBwcm9ibGVtIGlzIG1ldCwgd2UgZ2V0IHRvIGxpbmUgIzUgYW5kIGdvIG9uIHdpdGggdGhlIHVwZGF0ZS48L3A+CgkJPHA+QmFzaWNhbGx5LCB5b3UgY2FuIGFkZCBhbnkgY29uZGl0aW9uIHlvdSBsaWtlIHRvIHRoZXNlLiBTbyB3aXRoIG91ciBleGFtcGxlLCBpdCBjb3VsZCBsb29rIGxpa2UgdGhpczo8L3A+CgkJPHByZSBjbGFzcz0iY29kZSI+CgkJLy8gQ0hFQ0sgSUYgVEhFIE5FRURFRCBWQUxVRVMgQVJFIFRIRVJFCgkJaWYoCSFpc3NldCgkcGFyYW1zWyJpdGVtbmFtZSJdKSB8fCAkcGFyYW1zWyJpdGVtbmFtZSJdID09ICIiICl7CgkJCWVjaG8gJHRoaXMtPlNob3dFcnJvcnMoJHRoaXMtPkxhbmcoImVycm9yX21pc3NnaW52YWx1ZSIpKTsKCQl9ZWxzZWlmKGZhbHNlID09ICR0aGlzLT5jaGVja2FsaWFzKCJtb2R1bGVfbW9kdWxlbmFtZV9pdGVtIiwgJGl0ZW0tPmFsaWFzLCBpc3NldCgkcGFyYW1zWyJpdGVtaWQiXSk/JHBhcmFtc1siaXRlbWlkIl06ZmFsc2UpKXsKCQkJZWNobyAkdGhpcy0+U2hvd0Vycm9ycygkdGhpcy0+TGFuZygiZXJyb3JfYWxyZWFkeWV4aXN0cyIpKTsKCQl9ZWxzZWlmKCBmYWxzZSA9PSAoJGl0ZW0tPm15ZmllbGQgPiAwICYmICRpdGVtLT5teWZpZWxkIDw9IDEwMCkgKXsKCQkJZWNobyAkdGhpcy0+U2hvd0Vycm9ycygkdGhpcy0+TGFuZygibXlfY3VzdG9tX2Vycm9yX21lc3NhZ2UiKSk7CgkJfWVsc2V7CgkJIyMjIyMjIyMjIyMjIERPSU5HIFRIRSBVUERBVEUKCQk8L3ByZT4KCQk8cD5XZSBqdXN0IGNoZWNrIGlmIHRoZSBmaWVsZCBpcyBvdmVyIDAgYW5kIGJlbG93L2VxdWFsIHRvIDEwMC4gSWYgaXQgaXMsIHdlIGdvIG9uIHdpdGggdGhlIHN1Ym1pc3Npb24uIE90aGVyd2lzZSB3ZSBkaXNwbGF5IGFuIGVycm9yIG1lc3NhZ2UgKHdoaWNoIHlvdSdkIG5lZWQgdG8gYWRkIHRvIHRoZSBsYW5ndWFnZSBmaWxlcywgb3RoZXJ3aXNlIHlvdSBjYW4gaGFyZGNvZGUgdGhlIGVycm9yIG1lc3NhZ2UuLi4pPC9wPgoJCTwvZGl2PgoJCTxhIGNsYXNzPSJiYWNrdG90b3AiIGhyZWY9IiN0b3AiPkJhY2sgdG8gdG9wPC9hPgoJPC9kaXY+CgkKCQoJPGRpdiBjbGFzcz0icWRpdiIgaWQ9InE3Ij4KCQk8ZGl2IGNsYXNzPSJxdWVzdGlvbiI+SG93IGFyZSB0aGUgZGVmYXVsdGFkbWluIHBhbmVscyBnZW5lcmF0ZWQ/PC9kaXY+CgkJPGRpdiBjbGFzcz0iYW5zd2VyIj4KCQk8cD5JZiB5b3Ugb3BlbiB0aGUgL3RlbXBsYXRlcy8gZm9sZGVyLCB5b3Ugd2lsbCBub3RpY2UgdGhhdCB0aGVyZSdzIG9ubHkgb25lIHRlbXBsYXRlIGZvciB0aGUgZGVmYXVsdGFkbWluIDogYWRtaW5wYW5lbC50cGwuIFRoaXMgaXMgdXNlZCBmb3IgYWxsIGxldmVscy4gU28gdGhlIGRpZmZlcmVuY2UgaXMgdGhlIGluZm9ybWF0aW9uIHBhc3NlZCB0byB0aGUgdGVtcGxhdGUuIEJlZm9yZSB0YWtpbmcgYSBsb29rIGF0IGl0LCBsZXQncyBzZWUgdGhhdCBpbmZvcm1hdGlvbi48YnIvPgoJCU9wZW4gdGhlIGFjdGlvbi5kZWZhdWx0YWRtaW4ucGhwIG9mIHlvdXIgbW9kdWxlLiBZb3Ugd2lsbCBub3RpY2UgdGhhdCBpdCBpcyBkaXZpZGVkIGludG8gdGFicyAoZGVsaW1pdGVkIGJ5IDxjb2RlPmVjaG8gJHRoaXMtPlN0YXJ0VGFiKCJuYW1lb2ZsZXZlbCIpOzwvY29kZT4gYW5kIDxjb2RlPmVjaG8gJHRoaXMtPkVuZFRhYigpOzwvY29kZT4pLiBGb3IgZWFjaCBsZXZlbCB0YWIsIHRoZSBsaXN0IG9mIGl0cyBpdGVtcyBpcyBmZXRjaGVkIGFuZCBzdG9yZWQgaW50byA8Y29kZT4kaXRlbWxpc3Q8L2NvZGU+LCB3aGljaCBpcyB0aGVuIHBhc3NlZCB0byBzbWFydHkuICRpdGVtbGlzdCBpcyBhbiBhcnJheSBvZiBvYmplY3RzIGhhdmluZyB5b3VyIGZpZWxkcyBhcyBhdHRyaWJ1dGVzICgkaXRlbS0+ZmllbGQpLjxici8+CgkJSnVzdCBiZWxvdyB0aGF0LCB5b3Ugd2lsbCBub3RpY2UgbGluZXMgdGhhdCBsb29rIGxpa2UgdGhpczo8L3A+CgkJPHByZSBjbGFzcz0iY29kZSI+CgkJJGFkbWluc2hvdyA9IGFycmF5KAoJCQlhcnJheSgkdGhpcy0+TGFuZygibmFtZSIpLCJlZGl0bGluayIsZmFsc2UpLAoJCQlhcnJheSgkdGhpcy0+TGFuZygiYWxpYXMiKSwiYWxpYXMiLGZhbHNlKSwKCQkJYXJyYXkoJHRoaXMtPkxhbmcoImFjdGl2ZSIpLCJ0b2dnbGVhY3RpdmUiLHRydWUpLAoJCQlhcnJheSgkdGhpcy0+TGFuZygibmJjaGlsZHJlbiIpLCJuYmNoaWxkcmVuIixmYWxzZSksCgkJCWFycmF5KCR0aGlzLT5MYW5nKCJyZW9yZGVyIiksIm1vdmVsaW5rcyIsdHJ1ZSksCgkJCWFycmF5KCR0aGlzLT5MYW5nKCJBY3Rpb25zIiksImRlbGV0ZWxpbmsiLHRydWUpCQkKCQkJKTsKCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oImFkbWluc2hvdyIsICRhZG1pbnNob3cpOwoJCSR0aGlzLT5zbWFydHktPmFzc2lnbigidGFibGVpZCIsICJsZXZlbG5hbWVfdGFibGUiKTsKCQllY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoImFkbWlucGFuZWwudHBsIik7PC9wcmU+CgkJPHA+VGhlIDxjb2RlPiRhZG1pbnNob3c8L2NvZGU+IHZhcmlhYmxlIGNvbnRhaW5zIHdoYXQgc2hvdWxkIGJlIHNob3duIGluIHRoZSBhZG1pbnBhbmVsIG9mIHRoYXQgbGV2ZWwuIFdlIHRoZW4gcGFzcyB0aGlzIHZhcmlhYmxlIHRvIHNtYXJ0eSAoYW5kIGFsc28gYSBuYW1lIGZvciB0aGUgdGFibGUpLCBhbmQgdGhlIGxhc3QgbGluZSB0ZWxscyBzbWFydHkgdG8gZGlzcGxheSB0aGUgdGVtcGxhdGUgImFkbWlucGFuZWwudHBsIi48YnIvPgoJCSRhZG1pbnNob3cgaXMgYW4gYXJyYXksIHdoZXJlIGVhY2ggZWxlbWVudCByZXByZXNlbnRzIGEgY29sdW1uIG9mIHRoZSBhZG1pbnBhbmVsLiBFYWNoIGNvbHVtbiwgaW4gdHVybiwgaXMgYW4gYXJyYXkgY29udGFpbmluZyB0aHJlZSB2YWx1ZXM6IHRoZSBmaXJzdCAocG9zaXRpb24gMCkgaXMgdGhlIHRpdGxlIG9mIHRoZSBjb2x1bW4sIGFuZCB0aGUgc2Vjb25kIChwb3NpdGlvbiAxKSBpcyB0aGUgbmFtZSBvZiB0aGUgb2JqZWN0J3MgZmllbGQgdGhhdCBzaG91bGQgYmUgc2hvd24gaW4gdGhpcyBjb2x1bW4sIGFuZCB0aGUgdGhpcmQgKHBvc2l0aW9uIDIpIGlzIHdoZXRoZXIgdGhlIGluc3RhbnQgc2VhcmNoICh0aGUgc2VhcmNoYm94IGp1c3QgYXQgdGhlIHRvcCBvZiB0aGUgYWRtaW5wYW5lbCkgc2hvdWxkIHNraXAgdGhpcyBjb2x1bW4uPC9wPgoJCTxwPkZvciBleGFtcGxlLCA8Y29kZT5hcnJheSgkdGhpcy0+TGFuZygibmFtZSIpLCJlZGl0bGluayIsZmFsc2UpPC9jb2RlPiBtZWFucywgaGVyZSwgdGhhdCB3ZSB0YWtlICR0aGlzLT5MYW5nKCJuYW1lIikgKCJuYW1lIiBpbiB0aGUgbGFuZ3VhZ2UgdGhhdCBpcyBjdXJyZW50bHkgZGlzcGxheWVkKSB0byBiZSB0aGUgdGl0bGUgb2YgdGhlIGNvbHVtbiwgYW5kIHRoYXQgZm9yIGVhY2ggcm93IG9mIHRoZSB0YWJsZSwgd2hhdGV2ZXIgaXMgaW4gJG9uZWl0ZW0tPmVkaXRsaW5rIHdpbGwgYmUgZGlzcGxheWVkICh0aGlzIHBhcnRpY3VsYXIgdmFsdWUgaXMgbm90IHN0cmljdGx5IHNwZWFraW5nIGEgZmllbGQgb2YgdGhlIGxldmVsLCBidXQgYW4gYXR0cmlidXRlIGNyZWF0ZWQgYnkgdGhlIGFkZGFkbWlubGlua3MoKSBmdW5jdGlvbikuIEl0IGFsc28gbWVhbnMgdGhhdCB0aGUgaW5zdGFudCBzZWFyY2ggd2lsbCA8aT5ub3Q8L2k+IHNraXAgdGhpcyBjb2x1bW4sIHNvIHRoZSB0ZXh0IGRpc3BsYXllZCB3aWxsIGJlIHVzZWQgdG8gc2VlIGlmIHRoZSByb3cgbWF0Y2hlcyB0aGUgc2VhcmNoIHdvcmRzLjwvcD4KCQk8cD5Ob3csIGxldCdzIHRha2UgYSBsb29rIGF0IHRoZSBhZG1pbnBhbmVsLnRwbCBmaWxlOjwvcD4KCQk8cHJlIGNsYXNzPSJjb2RlIj4KIzEJCTw8Lz5kaXY+CiMyCQk8PC8+dGFibGUge2lmICR0YWJsZWlkfWlkPSJ7JHRhYmxlaWR9IiB7L2lmfWNlbGxzcGFjaW5nPSIwIiBjbGFzcz0icGFnZXRhYmxlIj4KIzMJCTw8Lz50aGVhZD48PC8+dHI+CiM0CQkJe2ZvcmVhY2ggZnJvbT0kYWRtaW5zaG93IGl0ZW09Y29sdW1ufQojNQkJCQk8PC8+dGg+eyRjb2x1bW5bMF19PDwvPi90aD4KIzYJCQl7L2ZvcmVhY2h9CiM3CQk8PC8+L3RyPjw8Lz4vdGhlYWQ+CiM4CQk8PC8+dGJvZHk+CiM5CQl7Y3ljbGUgdmFsdWVzPSJyb3cyLHJvdzEiIGFzc2lnbj1yb3djbGFzcyByZXNldD10cnVlfQojMTAJCXtmb3JlYWNoIGZyb209JGl0ZW1saXN0IGl0ZW09b25laXRlbX0KIzExCQl7Y3ljbGUgdmFsdWVzPSJyb3cyLHJvdzEiIGFzc2lnbj1yb3djbGFzc30KIzEyCQk8PC8+dHIgY2xhc3M9Inskcm93Y2xhc3N9IiBvbm1vdXNlb3Zlcj0idGhpcy5jbGFzc05hbWU9J3skcm93Y2xhc3N9aG92ZXInOyIgb25tb3VzZW91dD0idGhpcy5jbGFzc05hbWU9J3skcm93Y2xhc3N9JzsiPgojMTMJCQl7Zm9yZWFjaCBmcm9tPSRhZG1pbnNob3cgaXRlbT1jb2x1bW59CiMxNAkJCQl7YXNzaWduIHZhcj1vbmV2YWwgdmFsdWU9JGNvbHVtblsxXX0KIzE1CQkJCTw8Lz50ZHtpZiAkY29sdW1uWzJdfSBjbGFzcz0iY3RsbW1fbm9zZWFyY2giey9pZn0+eyRvbmVpdGVtLT4kb25ldmFsfTw8Lz4vdGQ+CiMxNgkJCXsvZm9yZWFjaH0KIzE3CQk8PC8+L3RyPgojMTgJCXsvZm9yZWFjaH0KIzE5CQk8PC8+L3Rib2R5PgojMjAJCTw8Lz4vdGFibGU+CiMyMQkJPDwvPi9kaXY+PC9wcmU+CgkJPHA+Tm93LCBJIHdpbGwgYXNzdW1lIHRoYXQgZXZlcnlvbmUgdW5kZXJzdGFuZHMgdGhlIGh0bWwgdGFncywgYW5kIHdpbGwgbGVhdmUgYWxvbmUgdGhlIGNvZGUgY29uY2VybmluZyB0aGUgY2xhc3Nlcy4gSSB3aWxsIGV4cGxhaW4gbGluZXMgIzQgdG8gIzYsIHdoaWNoIHdyaXRlIHRoZSB0YWJsZSBoZWFkZXIgKHRoZSB0aXRsZXMgb2YgdGhlIGNvbHVtbnMpLCBhbmQgbGluZXMgIzkgdG8gIzE4LCB3aGljaCB3cml0ZSB0aGUgdGFibGUgcm93cy48L3A+CgkJPHA+TGluZSAjNSBpcyBleGVjdXRlZCBmb3IgZWFjaCBlbGVtZW50IG9mIHRoZSAkYWRtaW5zaG93IHZhcmlhYmxlOyBpbiBvdGhlciB3b3JkcywgZm9yIGVhY2ggY29sdW1uIG9mIHRoZSB0YWJsZS4gTm93LCByZW1lbWJlciB0aGF0IGVhY2ggZWxlbWVudCBvZiB0aGUgJGFkbWluc2hvdyB2YXJpYWJsZSBpcyBhbiBhcnJheSBvZiB0d28gZWxlbWVudHMsIHNvIHdoYXQgbGluZSAjNSBkb2VzIGlzIGRpc3BsYXkgdGhlIGZpcnN0IChwb3NpdGlvbiBbMF0pIG9mIHRoZXNlIHR3byBlbGVtZW50cyBhcyB0aGUgY29sdW1uIGhlYWRlci48L3A+CgkJPHA+TGluZXMgIzExIHRvICMxNyBhcmUgcmVwZWF0ZWQgZm9yIGVhY2ggaXRlbSBpbiAkaXRlbWxpc3QgKGZvciBlYWNoIHJvdyBvZiB0aGUgdGFibGUpLiBGb3IgZWFjaCByb3csIGZvciBlYWNoIGVsZW1lbnQgb2YgdGhlICRhZG1pbnNob3cgdmFyaWFibGUsIGxpbmVzICMxNCBhbmQgIzE1IGFyZSByZXBlYXRlZC4gTGluZSAjMTQgZmV0Y2ggdGhlIG5hbWUgb2YgdGhlIG9iamVjdCdzIGF0dHJpYnV0ZSB0aGF0IHNob3VsZCBiZSBkaXNwbGF5ZWQgKHBvc2l0aW9uIFsxXSBvZiB0aGUgYWRtaW5zaG93IGVsZW1lbnQpLCBhbmQgbGluZSAjMTUgZGlzcGxheXMgdGhpcyBhdHRyaWJ1dGUgb2YgdGhlIGN1cnJlbnQgb2JqZWN0LjwvcD4KCQk8cD5BcyBvZiB0aGUgPGNvZGU+Y3RsbW1fbm9zZWFyY2g8L2NvZGU+IGNsYXNzLCBpdCBvbmx5IG1lYW5zIHRoYXQgdGhlIGluc3RhbnQgc2VhcmNoIHdpbGwgbm90IGNoZWNrIGludG8gdGhpcyBjb2x1bW4uPC9wPgoJCTxwPjxiPkFscmlnaHQuLi4gaG93IGNhbiBJIGNoYW5nZSB0aGlzPzwvYj48L3A+CgkJPHA+SWYgeW91IHdhbnQgdG8gbWFrZSBtYWpvciBjaGFuZ2VzLCB0aGUgYmVzdCB0aGluZyB0byBkbyB3b3VsZCBiZSB0byBjcmVhdGUgYW4gaW5kaXZpZHVhbCB0ZW1wbGF0ZSBmb3IgeW91ciBsZXZlbC4gSW4gdGhlIHRlbXBsYXRlcy8gZm9sZGVyLCBjcmVhdGUgYSBmaWxlIChsaWtlICJhZG1pbnBhbmVsX25hbWVvZmxldmVsLnRwbCIpLCBwdXQgdGhlIHRlbXBsYXRlIHlvdSB3aXNoIHRvIHVzZSBpbiBpdCwgYW5kIGluIHRoZSBhY2NvcmRpbmcgdGFiIG9mIHRoZSBhY3Rpb24uZGVmYXVsdGFkbWluLnBocCBmaWxlLCBjaGFuZ2U8YnIvPgoJCTxjb2RlPmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgiYWRtaW5wYW5lbC50cGwiKTs8L2NvZGU+PGJyLz4KCQl0bzxici8+CgkJPGNvZGU+ZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCJhZG1pbnBhbmVsX25hbWVvZmxldmVsLnRwbCIpOzwvY29kZT48L3A+CgkJPHA+Tm93LCBsZXQncyBzYXkgeW91IHdpc2ggdG8gbWFrZSBhIHZlcnkgc2ltcGxlIG1vZGlmaWNhdGlvbi4gRm9yIGV4YW1wbGUsIHlvdSBhcmUgZGlzcGxheWluZyBhIGZpbGUgZmllbGQgKHdoaWNoIHdlJ2xsIGNhbGwgIm15ZmllbGQiKSBvbiB0aGUgYWRtaW5wYW5lbCwgYnV0IGluc3RlYWQgb2Ygc2hvd2luZyB0aGUgZmlsZXBhdGggeW91IHdvdWxkIGxpa2UgdG8gc2hvdyB0aGUgcGljdHVyZS4gV2hhdCB5b3UgY291bGQgZG8gaXMgdGhpczo8YnIvPgoJCUluIHRoZSBhZG1pbnBhbmVsLnRwbCB0ZW1wbGF0ZSBmaWxlLCB5b3UgY291bGQgY2hhbmdlIGxpbmUgIzE1IHRvIHNvbWV0aGluZyBsaWtlIHRoaXM6CgkJPHByZSBjbGFzcz0iY29kZSI+CgkJCTw8Lz50ZHtpZiAkY29sdW1uWzJdfSBjbGFzcz0iY3RsbW1fbm9zZWFyY2giey9pZn0+CgkJCXtpZiAkb25ldmFsID09ICdteWZpZWxkJ30KCQkJCXtpZiAkb25laXRlbS0+JG9uZXZhbCAhPSAiIn08PC8+aW1nIHNyYz0ie3Jvb3RfdXJsfS91cGxvYWRzL3skb25laXRlbS0+JG9uZXZhbH0iIC8+ey9pZn0KCQkJe2Vsc2V9CgkJCQl7JG9uZWl0ZW0tPiRvbmV2YWx9CgkJCXsvaWZ9PDwvPi90ZD48L3ByZT4KCQk8cD5UaGlzIG1lYW5zIHRoYXQgc21hcnR5IGNoZWNrcyBpZiB0aGUgZmllbGQgd2UncmUgZGlzcGxheWluZyBpcyAnbXlmaWVsZCcsIGlmIGl0IGlzLCBhbmQgaWYgdGhlIHZhbHVlIGlzbid0IGVtcHR5LCBpdCBkaXNwbGF5cyB0aGUgaW1hZ2UuIElmIGl0IGlzbid0LCBpdCBqdXN0IGRpc3BsYXlzIHRoZSBmaWVsZCB2YWx1ZSBub3JtYWxseS48L3A+CgkJPC9kaXY+CgkJPGEgY2xhc3M9ImJhY2t0b3RvcCIgaHJlZj0iI3RvcCI+QmFjayB0byB0b3A8L2E+Cgk8L2Rpdj4JCgkKCQoJPGRpdiBjbGFzcz0icWRpdiIgaWQ9InEyIj4KCQk8ZGl2IGNsYXNzPSJxdWVzdGlvbiI+Q291bGQgSSBzaG93IHRoZSBuYW1lIG9mIHRoZSBzZWxlY3RlZCBpdGVtIGluLCBzYXksIHRoZSBwYWdlJ3MgPDwvPnRpdGxlPiB0YWc/PC9kaXY+CgkJPGRpdiBjbGFzcz0iYW5zd2VyIj4KCQk8cCBzdHlsZT0iY29sb3I6IHJlZDsgZm9udC13ZWlnaHQ6IGJvbGQ7Ij5bKioqIFNlZSB1cGRhdGUgYmVsb3cuLi4gKioqXTwvcD4KCQk8cD48Yj5UaGUgc2hvcnQgYW5zd2VyOjwvYj4gbm8uPC9wPgoJCTxwPjxiPlRoZSBsb25nIGFuc3dlcjo8L2I+IHllcywgbW9zdCBvZiB0aGUgdGltZS48L3A+CgkJPHA+VGhlIG5hbWUgb2YgdGhlIHNlbGVjdGVkIGl0ZW0gb3IgY2F0ZWdvcnkgaXMgcmV0cmlldmVkIG9ubHkgd2hlbiB0aGUgPGNvZGU+e2Ntc19tb2R1bGUgbW9kdWxlPSJ5b3VybW9kdWxlIn08L2NvZGU+IHRhZyBpcyBlbmNvdW50ZXJlZCBpbiB0aGUgdGVtcGxhdGUgLSB3aGljaCBpcyBxdWl0ZSBhbHdheXMgd2F5IGFmdGVyIHRoZSBwYWdlJ3MgaGVhZC4gSG93ZXZlciwgaW4gbW9zdCBjYXNlcyBpbiBjb3VsZCBiZSByZXRyaWV2ZWQgYnkgYSB1c2VyLWRlZmluZWQgdGFnIChVRFQpLjwvcD4KCQk8cCBzdHlsZT0idGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7Ij5Ob3RlIHRoYXQgdGhpcyB3aWxsIG5vIHdvcmsgd2hlbiB0aGUgdGFnIGlzIGRpcmVjdGx5IGNhbGxlZCBvbiB0aGUgcGFnZSwgYW5kIHdpbGwgb25seSB3b3JrIHdoZW4gd2UgYXJlIGZvbGxvd2luZyBhIG1vZHVsZSBhY3Rpb24gKHdoZW4geW91IGhhdmUgY2xpY2tlZCBvbiBhIGxpbmspPC9wPgoJCTxwPkNyZWF0ZSB0aGUgZm9sbG93aW5nIFVEVCwgcmVwbGFjaW5nIE5BTUVfT0ZfWU9VUl9NT0RVTEUgd2l0aCB5b3VyIG1vZHVsZSdzIG5hbWU6PC9wPgoJCTxwcmUgY2xhc3M9ImNvZGUiPiRtb2R1bGVuYW1lID0gJ05BTUVfT0ZfWU9VUl9NT0RVTEUnOwpnbG9iYWwgJGdDbXM7CmlmKCBpc3NldCgkZ0Ntcy0+bW9kdWxlc1skbW9kdWxlbmFtZV0pICYmCiAgICAkZ0Ntcy0+bW9kdWxlc1skbW9kdWxlbmFtZV1bJ2FjdGl2ZSddICYmCiAgICBpc3NldCgkcGFyYW1zWydhc3NpZ24nXSkgKXsKCWdsb2JhbCAkc21hcnR5OwoJJGluc3RhbmNlID0gJGdDbXMtPm1vZHVsZXNbJG1vZHVsZW5hbWVdWydvYmplY3QnXTsKCSRnbG9iID0gJGluc3RhbmNlLT5nZXRfbW9kdWxlR2V0VmFycygpOwoJJHdhbnRlZGxldmVsID0gZmFsc2U7CgkkbW9kbGV2ZWxzID0gJGluc3RhbmNlLT5nZXRfbGV2ZWxhcnJheSgpOwoJaWYoaXNzZXQoJGdsb2JbJ2FsaWFzJ10pKXsKCQkkd2FudGVkbGV2ZWwgPSBpc3NldCgkZ2xvYlsnd2hhdCddKT8kZ2xvYlsnd2hhdCddOiRtb2RsZXZlbHNbY291bnQoJG1vZGxldmVscyktMV07CgkJJGFsaWFzID0gJGdsb2JbJ2FsaWFzJ107Cgl9ZWxzZWlmKGlzc2V0KCRnbG9iWydwYXJlbnQnXSkpewoJCWlmKGlzc2V0KCRnbG9iWyd3aGF0J10pKXsKCQkJJHdhbnRlZGxldmVsID0gJGluc3RhbmNlLT5nZXRfbmV4dGxldmVsKCRnbG9iWyd3aGF0J10sIGZhbHNlKTsKCQl9ZWxzZXsKCQkJJHdhbnRlZGxldmVsID0kbW9kbGV2ZWxzW2NvdW50KCRtb2RsZXZlbHMpLTJdOwoJCX0KCQkkYWxpYXMgPSAkZ2xvYlsncGFyZW50J107Cgl9CglpZigkd2FudGVkbGV2ZWwpewoJCSRnZXRmdW5jdGlvbiA9ICdnZXRfbGV2ZWxfJy4kd2FudGVkbGV2ZWw7CgkJJGl0ZW0gPSAkaW5zdGFuY2UtPiRnZXRmdW5jdGlvbihhcnJheSgnYWxpYXMnPT4kYWxpYXMpKTsKCQlpZihpc3NldCgkaXRlbVswXSkpCSRzbWFydHktPmFzc2lnbigkcGFyYW1zWydhc3NpZ24nXSwkaXRlbVswXSk7Cgl9Cn0KCTwvcHJlPgoJPHA+TGV0J3Mgc2F5IHlvdSd2ZSBuYW1lZCB5b3VyIHRhZyAicmV0cmlldmVtb2RpbmZvIi4gVGhlbiwgYXQgdGhlIGJlZ2lubmluZyBvZiB5b3VyIHBhZ2UncyB0ZW1wbGF0ZSwgeW91IHJldHJpZXZlIHRoZSBtb2R1bGUgaW5mb3JtYXRpb25zIGJ5IHVzaW5nIHRoZSB0YWcgPGNvZGU+e3JldHJpZXZlbW9kaW5mbyBhc3NpZ249ImN1cnJlbnRlbGVtZW50In08L2NvZGU+LiBUaGlzIG1lYW5zIHRoYXQgdGhlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjdXJyZW50IGl0ZW0gYXJlIHN0b3JlZCBpbiB0aGUgdmFyaWFibGUgJGN1cnJlbnRlbGVtZW50ICh3aGljaCBjb3VsZCBoYXZlIGJlZW4gYW55dGhpbmcpLiBTbyBpbiB0aGUgPDwvPnRpdGxlPiB0YWcgb2YgeW91ciB0ZW1wbGF0ZSwgeW91IGNvdWxkIHdyaXRlOiA8Y29kZT57aWYgJGN1cnJlbnRlbGVtZW50fXskY3VycmVudGVsZW1lbnQtPm5hbWV9ey9pZn08L2NvZGU+LCB3aGljaCB3b3VsZCBkaXNwbGF5IHRoZSBuYW1lIG9mIHRoZSBjdXJyZW50IGVsZW1lbnQgaWYgaXQgY291bGQgaGF2ZSBiZWVuIHJldHJpZXZlZC48L3A+Cgk8cCBzdHlsZT0iY29sb3I6IHJlZDsgZm9udC13ZWlnaHQ6IGJvbGQ7Ij5VUERBVEU6IHNpbmNlIHZlcnNpb24gMS44LCB5b3UgY2FuIGRvIHRoZSBzYW1lIHRoaW5nIG11Y2ggbW9yZSBlYXNpbHkganVzdCBieSB1c2luZyB0aGUgImJyZWFkY3J1bWJzIiBhY3Rpb24gYW5kIGl0cyBwYXJhbWV0ZXJzLjwvcD4KCQk8L2Rpdj4KCQk8YSBjbGFzcz0iYmFja3RvdG9wIiBocmVmPSIjdG9wIj5CYWNrIHRvIHRvcDwvYT4KCTwvZGl2PgoJCgoJPGRpdiBjbGFzcz0icWRpdiIgaWQ9InExNiI+CgkJPGRpdiBjbGFzcz0icXVlc3Rpb24iPkhvdyBjYW4gSSBhZGQgbW9kdWxlIGVsZW1lbnRzIHRvIG15IGdvb2dsZSBzaXRlbWFwPzwvZGl2PgoJCTxkaXYgY2xhc3M9ImFuc3dlciI+Cgk8cD5UaGlzIHdpbGwgaGVscCB5b3UgaW5jbHVkZSB0aGUgbW9kdWxlIGVudHJpZXMgdG8gYSBnb29nbGUgc2l0ZW1hcCwgPHU+cHJvdmlkZWQgdGhhdCB5b3VyIG1vZHVsZSBlbGVtZW50cyBhcmUgYWxsIGRpc3BsYXllZCBvbiB0aGUgc2FtZSBwYWdlPC91Pi48L3A+PGJyLz4KCTxwPjxiPklmIHlvdSBhcmUgdXNpbmcgdGhlIDxhIGhyZWY9Imh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvZ3NnZW5lcmF0b3IiPmdvb2dsZSBzaXRlbWFwIGdlbmVyYXRvciBtb2R1bGU8L2E+OjwvYj48L3A+Cgk8L3A+T3BlbiB5b3VyIHNpdGVtYXAgZ2VuZXJhdG9yIChnc2l0ZW1hcC5waHApLCBhbmQganVzdCBiZWZvcmUgdGhlIGNsb3N1cmUgb2YgdGhlIHVybHNldCAoPGNvZGU+ZWNobyAnICA8PC8+L3VybHNldD4nLiAiXG4iOzwvY29kZT4pLCBhZGQgdGhlIGZvbGxvd2luZyBsaW5lczo8L3A+Cgk8cHJlIGNsYXNzPSJjb2RlIj4KCSRtb2R1bGVuYW1lID0gIk5BTUVPRk1PRFVMRSI7CS8vIENIQU5HRSBUSElTIFRPIFRIRSBOQU1FIE9GIFlPVVIgTU9EVUxFCglpZiggIGlzc2V0KCRnQ21zLT5tb2R1bGVzWyRtb2R1bGVuYW1lXSkKCQkmJiAkZ0Ntcy0+bW9kdWxlc1skbW9kdWxlbmFtZV1bImFjdGl2ZSJdCgkJJiYgJHRoZW1vZHVsZSA9ICRnQ21zLT5tb2R1bGVzWyRtb2R1bGVuYW1lXVsib2JqZWN0Il0KCQkpewoJCQkKCQkvLyBIRVJFIFlPVSBNVVNUIFBVVCBUSEUgSUQgT1IgQUxJQVMgT0YgVEhFIFBBR0UgVVNFRCBUTyBESVNQTEFZIFRIRSBNT0RVTEUgRUxFTUVOVFM6CgkJJGRldGFpbHBhZ2UgPSAiTVlQQUdFIjsKCQkKCQkkcGFyYW1zID0gYXJyYXkoIm1vZGUiPT4iZ29vZ2xlIiwgImRldGFpbHBhZ2UiPT4kZGV0YWlscGFnZSk7CgkJJHRoZW1vZHVsZS0+RG9BY3Rpb24oInNpdGVtYXAiLCAiIiwgJHBhcmFtcyk7Cgl9Cgk8L3ByZT4KCTxwPk9mIGNvdXJzZSwgcmVwbGFjZSBOQU1FT0ZNT0RVTEUgaW4gdGhlIGZpcnN0IGxpbmUgd2l0aCB0aGUgbmFtZSBvZiB5b3VyIG1vZHVsZSwgYW5kIGVudGVyIGEgZGV0YWlscGFnZSwgYmUgaXQgYW4gaWQgb3IgcGFnZSBhbGlhcy48L3A+Cgk8cD5Ob3RlIHRoYXQgeW91IGNvdWxkIGFsc28gdXNlIHRoZSAid2hhdCIgcGFyYW1ldGVyIHRvIHNwZWNpZnkgd2hpY2ggbGV2ZWxzIHlvdSB3aXNoIHRvIHNlZSBkaXNwbGF5ZWQgKHlvdSBjYW4gc3BlY2lmeSBzZXZlcmFsIGxldmVscyB3aXRoICJsZXZlbDF8bGV2ZWwyIiBhbmQgc28gb24pLiBPdGhlcndpc2UsIGFsbCBsZXZlbHMgd2lsbCBiZSBkaXNwbGF5ZWQuPC9wPjwvYnI+Cgk8cD48Yj5JZiB5b3UgYXJlIHVzaW5nIHRoZSA8YSBocmVmPSJodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL3NpdGVtYXBtcyI+U2l0ZU1hcCBNYWRlIFNpbXBsZTwvYT4gbW9kdWxlOjwvYj48L3A+Cgk8cD5TaW1wbHkgcHV0IHRoZSBjb2RlIGFib3ZlIGluIGEgVURUICh1c2VyLWRlZmluZWQtdGFnKSwgYW5kIGNhbGwgdGhlIFVEVCBhdCB0aGUgZW5kIG9mIHlvdXIgc2l0ZW1hcCdzIHRlbXBsYXRlLCBqdXN0IGJlZm9yZSA8Y29kZT48PC8+L3VybHNldD48L2NvZGU+LjwvcD4KCQk8L2Rpdj4KCQk8YSBjbGFzcz0iYmFja3RvdG9wIiBocmVmPSIjdG9wIj5CYWNrIHRvIHRvcDwvYT4KCTwvZGl2PgoKCgk8ZGl2IGNsYXNzPSJxZGl2IiBpZD0icTE5Ij4KCQk8ZGl2IGNsYXNzPSJxdWVzdGlvbiI+SG93IGNhbiBJIGFkZCBhbiBleHBpcmF0aW9uIGZpZWxkPzwvZGl2PgoJCTxkaXYgY2xhc3M9ImFuc3dlciI+Cgk8cD5Zb3Ugd2lzaCB0byBhZGQgYSBkYXRlIGZpZWxkIHRoYXQgd2lsbCBkZWNpZGUgd2hlbiB0aGUgaXRlbSB3aWxsIGJlIGRpc3BsYXllZCBvciBub3QgKGxpa2UgaW4gdGhlIG5ld3MgbW9kdWxlKS4gSXQgc2hvdWxkbid0IGJlIHZlcnkgaGFyZC48L3A+Cgk8cD5UbyBkbyB0aGlzLCB5b3Ugd2lsbCBuZWVkIHR3byBmaWVsZHMgKG9yIHRocmVlKTo8L3A+Cgk8dWw+CgkJPGxpPkEgImNoZWNrYm94IiB0eXBlIGZpZWxkIHRvIGNob29zZSB3aGV0aGVyIHRoZSBleHBpcmF0aW9uIGRhdGUgd2lsbCBiZSB1c2VkIG9yIG5vdCAod2UnbGwgY2FsbCBpdCAidXNlX2V4cGlyYXRpb24iKTwvbGk+CgkJPGxpPkEgImRhdGUiIHR5cGUgZmllbGQgdG8gY2hvb3NlIHRoZSBleHBpcmF0aW9uIGRhdGUgKHdlJ2xsIGNhbGwgaXQgImV4cGlyYXRpb25fZGF0ZSIpPC9saT4KCQk8bGk+KG9wdGlvbmFsbHkpIEFub3RoZXIgZGF0ZSBmaWVsZCAoZm9yIGJlZ2luIGRhdGUpPC9saT4KCTwvdWw+Cgk8cD5Gb3Igc2ltcGxpY2l0eSwgSSB3aWxsIGFzc3VtZSB3ZSBuZWVkIG9ubHkgb25lIGRhdGUgKHlvdSBzaG91bGQgZmlndXJlIG91dCB0aGUgcGFydCBmb3IgdGhlIHNlY29uZCBkYXRlKS48L3A+Cgk8cD5JbiB5b3VyIGxpc3QgdGVtcGxhdGUsIHVzZSB0aGUgZm9sbG93aW5nIGNvZGU6PC9wPgoJPHByZSBjbGFzcz0iY29kZSI+Cgl7Zm9yZWFjaCBmcm9tPSRpdGVtbGlzdCBpdGVtPSJpdGVtIn0KCQl7aWYgJGl0ZW0tPnVzZV9leHBpcmF0aW9uICYmICgkaXRlbS0+ZXhwaXJhdGlvbl9kYXRlfGRhdGVfZm9ybWF0OiIlcyIgJmx0OyAkc21hcnR5Lm5vdyl9CgkJCXRoZSBjb2RlIHRvIGRpc3BsYXkgdGhlIGl0ZW0uLi4KCQl7L2lmfQoJey9mb3JlYWNofQoJPC9wcmU+Cgk8cD5CYXNpY2FsbHksIHdlIG9ubHkgZGlzcGxheSB0aGUgaXRlbSB3aGVuIGEgY29uZGl0aW9uIGlzIG1ldCwgbmFtZWx5IHRoYXQgdXNlX2V4cGlyYXRpb24gaXMgb24sIGFuZCB0aGF0IHRoZSBleHBpcmF0aW9uIGRhdGUgaXMgbG93ZXIgKGJlZm9yZSkgdGhlIGN1cnJlbnQgZGF0ZS4gVG8gZG8gdGhlIG9wcG9zaXRlLCB5b3UgY2FuIGp1c3QgY2hhbmdlIHRoZSAmbHQ7IHRvIGEgJmd0Oy48L3A+CgkJPC9kaXY+CgkJPGEgY2xhc3M9ImJhY2t0b3RvcCIgaHJlZj0iI3RvcCI+QmFjayB0byB0b3A8L2E+Cgk8L2Rpdj4KCgoJPGRpdiBjbGFzcz0icWRpdiIgaWQ9InEyMCI+CgkJPGRpdiBjbGFzcz0icXVlc3Rpb24iPkhvdyBjYW4gSSBzZXR1cCB0aGUgZnJvbnRlbmQgZWRpdCBhY3Rpb24gd2l0aCB0aGUgRnJvbnQgRW5kIFVzZXJzIG1vZHVsZT88L2Rpdj4KCQk8ZGl2IGNsYXNzPSJhbnN3ZXIiPgoJPHA+VGhpcyBpcyBkb25lIGluIHR3byBwYXJ0cy4gVGhlIGZpcnN0IHBhcnQgaXMgdG8gZGlzcGxheSB0aGUgZWRpdCBsaW5rIG9yIGVkaXQgZm9ybSBvbmx5IHRvIHNlbGVjdGVkIHVzZXJzIChvciBsb2dnZWQgaW4gdXNlcnMpLiBUaGlzIGlzIHRvIGJlIGRvbmUgd2l0aCB0aGUgRkVVIG1vZHVsZSAoYW5kIHBvc3NpYmx5IEN1c3RvbSBDb250ZW50KSwgYW5kIGFzIHN1Y2ggd2lsbCBub3QgYmUgY292ZXJlZCBoZXJlLiBUaGlzIGlzIG9ubHkgYWJvdXQgPGk+aGlkaW5nPC9pPiB0aGUgZWRpdGlvbiBmcm9tIG90aGVyIHVzZXJzLiBUaGUgc2Vjb25kIHBhcnQsIHdoaWNoIHdpbGwgYmUgY292ZXJlZCBoZXJlLCBpcyBhYm91dCB0aGUgcmVhbCBwcm90ZWN0aW9uLiBTYWRseSwgdGhpcyB3aWxsIHJlcXVpcmUgYSBsaXR0bGUgcHJvZ3JhbW1pbmcsIGJ1dCBldmVyeW9uZSBzaG91bGQgYmUgYWJsZSB0byBnZXQgdGhyb3VnaCB0aGlzIGVhc2lseS48L3A+Cgk8cD5JZiB5b3UncmUgd29uZGVyaW5nIGhvdyB0byBjaGFuZ2UgdGhlIGxvb2sgb2YgdGhlIGZvcm0sIHNlZSB0aGUgZnJvbnRlbmRfYWRkXyoudHBsIHRlbXBsYXRlcyBpbiB0aGUgdGVtcGxhdGVzIGZvbGRlci48L3A+Cgk8cD5CZWZvcmUgZWRpdGluZyBhbiBpdGVtIHRocm91Z2ggdGhlIGZyb250ZW5kLCB0aGUgZnVuY3Rpb24gZmVhZGRfcGVybWNoZWNrICh3aG9zZSBjb250ZW50IGlzIGluIHRoZSBmaWxlIGZ1bmN0aW9uLmZlYWRkX3Blcm1jaGVjay5waHApIGlzIGNhbGxlZC4gSWYgaXQgcmV0dXJucyB0cnVlIChpZiB0aGUgdmFsdWUgb2YgdGhlICRyZXR1cm4gdmFyaWFibGUgaXMgc2V0IHRvIHRydWUpLCB0aGUgdXNlciBoYXMgcGVybWlzc2lvbiB0byBlZGl0IHRoZSBpdGVtLCBvdGhlcndpc2UgKGlmIGl0IHJldHVybnMgZmFsc2UpLCB0aGUgYWNjZXNzIGlzIGRlbmllZC48YnIvPgoJSWYgeW91IG9wZW4gdGhlIGZpbGUgZnVuY3Rpb24uZmVhZGRfcGVybWNoZWNrLnBocCwgeW91IHdpbGwgbm90aWNlIHRoYXQgYXNpZGUgZnJvbSBjb21tZW50cywgdGhlIGZ1bmN0aW9uIGlzIGVtcHR5LiBXZSB3aWxsIGhhdmUgdG8gZmlsbCBpdCBvdXQgZGVwZW5kaW5nIG9uIHdoYXQgd2Ugd2lzaCB0byBkby48L3A+Cgk8cD5UaGUgdmFyaWFibGVzIGF0IG91ciBkaXNwb3NpdGlvbiBhcmUgdGhlIGZvbGxvd2luZzo8dWw+CgkJPGxpPiRnQ21zICh0aGUgZ2xvYmFsIGNtcyBvYmplY3QsIHRocm91Z2ggd2hpY2ggd2Ugd2lsbCBiZSBhYmxlIHRvIGNhbGwgdGhlIEZFVSBtb2R1bGUpPC9saT4KCQk8bGk+JHdoYXQgKHRoZSBsZXZlbCBvZiB0aGUgaXRlbSB3ZSBhcmUgYXR0ZW1wdGluZyB0byBlZGl0LCBhcyBnaXZlbiBieSB0aGUgIndoYXQiIHBhcmFtZXRlcik8L2xpPgoJCTxsaT4kYWxpYXMgKHRoZSBhbGlhcyBvZiB0aGUgaXRlbSB3ZSBhcmUgYXR0ZW1wdGluZyB0byBlZGl0LiBJZiBpdCBpcyBhIG5ldyBpdGVtLCAkYWxpYXMgc2hvdWxkIGJlIGZhbHNlKTwvbGk+CgkJPGxpPiRpdGVtaWQgKHRoZSBpZCBvZiB0aGUgaXRlbSB3ZSBhcmUgYXR0ZW1wdGluZyB0byBlZGl0LiBJZiBpdCBpcyBhIG5ldyBpdGVtLCAkaXRlbWlkIHNob3VsZCBiZSBmYWxzZSk8L2xpPgoJPC91bD48L3A+Cgk8cD5Zb3UgbWlnaHQgbmVlZCB0aGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBvZiB0aGUgRkVVIG1vZHVsZTo8dWw+CgkJPGxpPkxvZ2dlZEluKCkgd2lsbCByZXR1cm4gdHJ1ZSBpZiB0aGUgdXNlciBpcyBsb2dnZWQgaW4sIGFuZCBmYWxzZSBvdGhlcndpc2UuPC9saT4KCQk8bGk+TG9nZ2VkSW5JZCgpIHdpbGwgcmV0dXJuIHRoZSBpZCBvZiB0aGUgdXNlcjwvbGk+CgkJPGxpPkxvZ2dlZEluTmFtZSgpCXdpbGwgcmV0dXJuIHRoZSB1c2VybmFtZSBvZiB0aGUgdXNlcjwvbGk+CgkJPGxpPk1lbWJlck9mR3JvdXAoJHVzZXJpZCwkZ3JvdXBpZCkJCXJldHVybnMgdHJ1ZSBpZiB0aGUgdXNlciBpcyBhIG1lbWJlciBvZiB0aGUgZ3JvdXAsIGZhbHNlIG90aGVyd2lzZTwvbGk+CgkJPGxpPkdldEdyb3VwSUQoJGdyb3VwbmFtZSkJcmV0dXJucyB0aGUgZ3JvdXAgaWQgYXNzb2NpYXRlZCB0byBhIGdyb3VwIG5hbWU8L2xpPgoJPC91bD48L3A+PGJyLz4KCTxwPk5vdywgaGVyZSBhcmUgdGhyZWUgYmFzaWMgZXhhbXBsZXMgb2YgaG93IHRvIHVzZSB0aGlzLjwvcD4KCTxwPjxiPkFsbG93aW5nIG9ubHkgbG9nZ2VkIGluIHVzZXJzPC9iPjxici8+CglIZXJlJ3MgaG93IHRvIGFsbG93IG9ubHkgbG9nZ2VkIGluIHVzZXJzIHRvIGVkaXQgaXRlbXM6PC9wPgoJPHByZSBjbGFzcz0iY29kZSI+CgkkcmV0dXJuID0gZmFsc2U7CgkkRkVVID0gJHRoaXMtPkdldE1vZHVsZUluc3RhbmNlKCdGcm9udEVuZFVzZXJzJyk7CglpZigkRkVVICYmICRGRVUtPkxvZ2dlZEluKCkpewoJCSRyZXR1cm4gPSB0cnVlOwoJfQoJPC9wcmU+PGJyLz4KCTxwPjxiPkFsbG93aW5nIG9ubHkgbWVtYmVycyBvZiBhIGdyb3VwPC9iPjxici8+CglIZXJlJ3MgaG93IHRvIGFsbG93IG9ubHkgbWVtYmVycyBvZiB0aGUgZ3JvdXAgIm15Z3JvdXAiIHRvIGVkaXQgaXRlbXM6PC9wPgoJPHByZSBjbGFzcz0iY29kZSI+CgkkcmV0dXJuID0gZmFsc2U7CgkkRkVVID0gJHRoaXMtPkdldE1vZHVsZUluc3RhbmNlKCdGcm9udEVuZFVzZXJzJyk7CglpZigkRkVVKXsKCQlpZigkRkVVLT5Mb2dnZWRJbigpKXsKCQkJJHVzZXJpZCA9ICRGRVUtPkxvZ2dlZEluSWQoKTsKCQkJJGdyb3VwaWQgPSAkRkVVLT5HZXRHcm91cElEKCJteWdyb3VwIik7CgkJCWlmKCRGRVUtPk1lbWJlck9mR3JvdXAoJHVzZXJpZCwgJGdyb3VwaWQpKXsKCQkJCSRyZXR1cm4gPSB0cnVlOwoJCQl9CgkJfQoJfQoJPC9wcmU+PGJyLz4KCTxwPjxiPkFsbG93aW5nIG1lbWJlcnMgdG8gZWRpdCBvbmx5IGEgc2luZ2xlIGVsZW1lbnQ8L2I+PGJyLz4KCVN1cHBvc2UgeW91IGhhdmUgYSBGRVUgbWVtYmVyIGNvcnJlc3BvbmRpbmcgdG8gZWFjaCBvZiB5b3VyIGl0ZW0sIGFuZCB0aGF0IHRoZSB1c2VybmFtZSBvZiB0aGF0IG1lbWJlciBpcyB0aGUgYWxpYXMgb2YgdGhlIGl0ZW0gKHNlZSBiZWxvdyBvbiBob3cgdG8gZG8gdGhpcykuIFlvdSBjb3VsZCByZXN0cmljdCBhY2Nlc3MgaW4gdGhlIGZvbGxvd2luZyB3YXk6PC9wPgoJPHByZSBjbGFzcz0iY29kZSI+CgkkcmV0dXJuID0gZmFsc2U7CgkkRkVVID0gJHRoaXMtPkdldE1vZHVsZUluc3RhbmNlKCdGcm9udEVuZFVzZXJzJyk7CglpZigkRkVVKXsKCQlpZigkRkVVLT5Mb2dnZWRJbigpKXsKCQkJJHVzZXJuYW1lID0gJEZFVS0+TG9nZ2VkSW5OYW1lKCk7CgkJCWlmKCR1c2VybmFtZSA9PSAkYWxpYXMpewoJCQkJJHJldHVybiA9IHRydWU7CgkJCX0KCQl9Cgl9Cgk8L3ByZT4KCTxwPlVzaW5nICRGRVUtPkdldFVzZXJQcm9wZXJ0eSgkcHJvcGVydHluYW1lKSwgeW91IGNvdWxkIHVzZSBzb21ldGhpbmcgZWxzZSB0aGFuIHRoZSB1c2VybmFtZS48YnIvPgoJSWYgcGVybWlzc2lvbnMgZGVwZW5kIG9uIHRoZSBhbGlhcyBvZiB0aGUgaXRlbSwgeW91IHNob3VsZCBtYWtlIHN1cmUgKHNlZSBTZXR0aW5ncykgdGhhdCB5b3VyIGZyb250ZW5kIHVzZXJzIGNhbid0IGNoYW5nZSBpdC48L3A+PGJyLz4KCTxwPlNob3VsZCB5b3UgbmVlZCBtb3JlIGluZm9ybWF0aW9ucyBhYm91dCB0aGUgaXRlbSwgeW91IGNhbiB1c2UgdGhlIGZvbGxvd2luZyBzbmlwcGV0IHRvIGxvYWQgdGhlIGZ1bGwgaXRlbSBvYmplY3Q6PC9wPgoJPHByZSBjbGFzcz0iY29kZSI+CgkkZ2V0ZnVuY3Rpb24gPSAiZ2V0X2xldmVsXyIuJHdoYXQ7CgkkaXRlbWxpc3QgPSAkdGhpcy0+JGdldGZ1bmN0aW9uKGFycmF5KCJpZCI9PiRpdGVtaWQpKTsKCSRpdGVtID0gaXNzZXQoJGl0ZW1saXN0WzBdKT8kaXRlbWxpc3RbMF06ZmFsc2U7PC9wcmU+PGJyLz4KCTxwPkZpbmFsbHksIHlvdSBtYXkgdXNlICR3aGF0IHZhcmlhYmxlIHRvIGhhdmUgZGlmZmVyZW50IHBlcm1pc3Npb24gbWFuYWdlbWVudCBmb3IgZWFjaCBsZXZlbC4gQSBzd2l0Y2ggd291bGQgYmUgdGhlIHR5cGljYWwgc29sdXRpb246PC9wPgoJPHByZSBjbGFzcz0iY29kZSI+Cglzd2l0Y2goJHdoYXQpewoJCWNhc2UgImxldmVsMSI6CgkJCS8vIGNvZGUKCQkJYnJlYWs7CgkJY2FzZSAibGV2ZWwyIjoKCQkJLy9jb2RlCgkJCWJyZWFrOwoJCS4uLihhbmQgc28gb24pCgl9PC9wcmU+PGJyLz4KCTxwPjxiPlRyaWdnZXJpbmcgdGhlIGNyZWF0aW9uIG9mIGEgRkVVIG1lbWJlciBmb3IgZWFjaCBpdGVtPC9iPjxici8+CglJZiB5b3UncmUgdXNpbmcgc29tZXRoaW5nIHNpbWlsYXIgdG8gdGhlIGxhc3QgZXhhbXBsZSwgeW91IG5lZWQgdG8gaGF2ZSBhIEZFVSB1c2VyIGZvciBlYWNoIGl0ZW0uIFRoaXMgY2FuIGJlIGRvbmUgdXNpbmcgZXZlbnRzLjxici8+CglFdmVyeXRpbWUgYW4gaXRlbSBpcyBhZGRlZCwgbW9kaWZpZWQgb3IgZGVsZXRlZCwgdGhlIG1vZHVsZXMgc2VuZHMgYW4gPGk+ZXZlbnQ8L2k+IHRvIHRoZSBjbXMuIElmIHlvdSBnbyBpbnRvIEV4dGVuc2lvbnMgLT4gRXZlbnQgTWFuYWdlciwgeW91IHNob3VsZCBmaW5kIHRoZSBldmVudHMgc2VudCBieSB5b3VyIG1vZHVsZSBpbiB0aGUgbGlzdC4gQ2xpY2ssIGZvciBleGFtcGxlLCBvbiB0aGUgbW9kdWxlbmFtZV9hZGRlZCBldmVudC4gWW91IHdpbGwgbm90aWNlIHRoYXQgaGVyZSwgeW91IGNhbiBzZWxlY3QgYSBVc2VyIERlZmluZWQgVGFnIChVRFQpIHRoYXQgd2lsbCBiZSBjYWxsZWQgd2hlbiB0aGUgZXZlbnQgaXMgdHJpZ2dlcmVkLiBTbyB3ZSBzaW1wbHkgbmVlZCB0byBkZXNpZ24gYW4gVURUIHRoYXQgd2lsbCBhZGQgYSBtZW1iZXIgd2hlbiBhIG5ldyBpdGVtIGlzIGNyZWF0ZWQuPC9wPgoJPHA+V2Ugd2lsbCBhc3N1bWUgeW91ciBpdGVtIGhhcyBhIGZpZWxkIG5hbWVkICJwYXNzd29yZCIsIHdoaWNoIHdpbGwgYmUgdXNlZCBhcyB0aGUgRkVVIHBhc3N3b3JkLCB0aGF0IHlvdXIgbW9kdWxlIGlzIG5hbWVkICJOQU1FT0ZNT0RVTEUiLCBhbmQgdGhlIGxldmVsIGlzIG5hbWVkICJNWUxFVkVMIi4gTG9vayBhdCB0aGUgZm9sbG93aW5nIFVEVDo8L3A+CgkJPHByZSBjbGFzcz0iY29kZSI+CgkvLyBmaXJzdCwgd2UgY2hlY2sgaWYgYW4gaXRlbSBoYXMgYmVlbiBhZGRlZCBvbiB0aGUgbGV2ZWwgd2UncmUgY29uY2VybmVkIHdpdGgKCWlmKCRwYXJhbXNbIndoYXQiXSAhPSAiTVlMRVZFTCIpCXJldHVybiBmYWxzZTsKCQoJLy8gd2UgcmV0cmlldmUgdGhlIHR3byBtb2R1bGVzCgkkRkVVID0gJHRoaXMtPkdldE1vZHVsZUluc3RhbmNlKCdGcm9udEVuZFVzZXJzJyk7CgkkbXltb2QgPSAkdGhpcy0+R2V0TW9kdWxlSW5zdGFuY2UoJ05BTUVPRk1PRFVMRScpOwoJaWYoISRGRVUgfHwgISRteW1vZCkJcmV0dXJuIGZhbHNlOwoJCgkvLyB3ZSB0aGVuIHJldHJpZXZlIHRoZSBpdGVtCgkkaXRlbWxpc3QgPSAkbXltb2QtPmdldF9NWUxFVkVMKGFycmF5KCJpZCI9PiRwYXJhbXNbIml0ZW1pZCJdKSk7CglpZighaXNzZXQoJGl0ZW1saXN0WzBdKSkJcmV0dXJuIGZhbHNlOwoJJGl0ZW0gPSAkaXRlbWxpc3RbMF07CgkKCS8vIHdlIHRoZW4gYWRkIHRoZSBGRVUgdXNlcgoJJGV4cGlyZXNfaW4gPSAzNjU7IC8vIHNldHMgdGhlIG51bWJlciBvZiBkYXlzIHVudGlsIGV4cGlyYXRpb24KCSRleHBpcmVzID0gc3RydG90aW1lKHNwcmludGYoIislZCBkYXlzIiwkZXhwaXJlc19pbiksIHRpbWUoKSk7CgkkRkVVLT5BZGRVc2VyKCRpdGVtLT5uYW1lLCAkaXRlbS0+cGFzc3dvcmQsICRleHBpcmVzKTsKCQk8L3ByZT4KCQk8L2Rpdj4KCQk8YSBjbGFzcz0iYmFja3RvdG9wIiBocmVmPSIjdG9wIj5CYWNrIHRvIHRvcDwvYT4KCTwvZGl2PgoKCgk8ZGl2IGNsYXNzPSJxZGl2IiBpZD0icTMiPgoJCTxkaXYgY2xhc3M9InF1ZXN0aW9uIj5DYW4gSSBjaGFuZ2UgaG93IHRoZSBwcmV0dHkgdXJscyBhcmUgZ2VuZXJhdGVkIGFuZCBpbnRlcnByZXRlZD88L2Rpdj4KCQk8ZGl2IGNsYXNzPSJhbnN3ZXIiPgoJCTxwPjxiPlllcywgdG8gc29tZSBleHRlbnQuPC9iPjwvcD4KCQk8cD5JJ2xsIHRyeSB0byBtYWtlIHRoaXMgdmVyeSBjb21wcmVoZW5zaXZlLiBCZWZvcmUgdGFsa2luZyBvZiBtb2R5aW5nIGl0LCBsZXQncyBzZWUgaG93IHRoaXMgd29ya3MuPC9wPgoJCTxwPkJhc2ljYWxseSwgdGhlIG1vZHVsZSBoYXMgdHdvIGtpbmRzIG9mIHVybHM6PGJyPgoJCVR5cGUgQTogPGNvZGU+aHR0cDovL3d3dy5teWRvbWFpbi5jb20vbmFtZW9mbW9kdWxlL2RldGFpbC9uYW1lb2ZvYmplY3QvNS88L2NvZGU+PGJyLz4KCQlhbmQ8YnIvPgoJCVR5cGUgQjogPGNvZGU+aHR0cDovL3d3dy5teWRvbWFpbi5jb20vbmFtZW9mbW9kdWxlL25hbWVvZmxldmVsL25hbWVvZnBhcmVudC81LzwvY29kZT48YnIvPgoJCShpZiB5b3UgYXJlIHNlcGFyYXRpbmcgZWxlbWVudHMgaW50byBwYWdlcywgeW91IHdpbGwgbm90aWNlIHRoYXQgdHlwZSBCIGhhcyBzb21lIHZhcmlhdGlvbnMuLi4gd2Ugd2lsbCBkaXNjdXNzIHRoaXMgbGF0ZXIuKTwvcD4KCQk8cD5UeXBlIEEgaXMgdXNlZCB3aGVuIHdlIGFyZSBsb29raW5nIGF0IHRoZSBkZXRhaWxzIG9mIGEgbGFzdC1sZXZlbCBvYmplY3QuIFR5cGUgQiBpcyB1c2VkIHdoZW4gd2UgZGlzcGxheSBhIGxpc3Qgb2YgaXRlbXMuIE5vdywgcmVtZW1iZXIgdGhhdCB0aGUgdXJsIGhhcyB0byBjb250YWluIGFsbCB0aGUgaW5mb3JtYXRpb24gYWJvdXQgd2hhdCBzaG91bGQgYmUgZGlzcGxheWVkLiBTbyBsZXQncyB0YWtlIGEgbG9vayBhYm91dCB3aGF0J3MgY29tbW9uIHRvIGJvdGggdHlwZXMgb2YgdXJsczo8L3A+CgkJPHA+VGhlIDxiPm5hbWVvZm1vZHVsZS88L2I+IHRlbGxzIHVzIHRoYXQgdGhlIG1vZHVsZSBzaG91bGQgYmUgY2FsbGVkLjxici8+CgkJVGhlIDxiPjUvPC9iPiAodGhhdCBhbm5veWluZyBudW1iZXIpIGlzIHRoZSByZXR1cm5pZCBvZiB0aGUgcGFnZS4gSW4gb3RoZXIgd29yZHMsIGl0IHRlbGxzIHVzIG9uIHdoYXQgcGFnZSBvZiB0aGUgY21zIHRoZSBpbmZvcm1hdGlvbnMgb2YgdGhlIG1vZHVsZSBzaG91bGQgYmUgc2hvd24uIEV2ZW4gdGhvdWdoIHRoZSBwYWdlIGNvbnRlbnQgaXMgcmVwbGFjZWQgYnkgd2hhdCB0aGUgbW9kdWxlIGhhcyB0byBkaXNwbGF5LCB0aGlzIGlzIHZlcnkgaW1wb3J0YW50IGFzIGl0IGRldGVybWluZXMsIGZvciBpbnN0YW5jZSwgd2hhdCBwYWdlIHRlbXBsYXRlIHNob3VsZCBiZSB1c2VkLjwvcD4KCQk8cD5XaGVuIHRoZSA8Yj4vZGV0YWlsLzwvYj4gaXMgaW4gdGhlIHVybCwgdGhlIG1vZHVsZSBrbm93cyB0aGF0IHdlJ3JlIGRpc3BsYXlpbmcgdGhlIGRldGFpbHMgb2YgYSBsYXN0IGxldmVsIGl0ZW0uIEFsbCB3ZSBuZWVkIHRvIHNwZWNpZnkgaXMgd2hpY2ggaXRlbSB0byBkaXNwbGF5LCBhbmQgdGhhdHMgdGhlIDxiPm5hbWVvZm9iamVjdDwvYj4gcGFydC48L3A+CgkJPHA+V2hlbiB0aGUgPGI+L2RldGFpbC88L2I+IDxpPmlzbid0PC9pPiBpbiB0aGUgdXJsLCB0aGUgbW9kdWxlIGNvbmNsdWRlcyB0aGF0IHdlIGFyZSBkaXNwbGF5aW5nIGEgbGlzdCBvZiBzb21ldGhpbmcqLiBUaGUgZWxlbWVudHMgb2Ygd2hhdCBsZXZlbCBhcmUgZGlzcGxheWVkIGlzIGRldGVybWluZWQgYnkgd2hhdGV2ZXIgaXMgaW4gdGhlIHBsYWNlIG9mICIvZGV0YWlsLyI6IGluIG91ciBjYXNlLCA8Yj5uYW1lb2ZsZXZlbC88L2I+LiBBIHVybCBsaWtlIDxjb2RlPmh0dHA6Ly93d3cubXlkb21haW4uY29tL25hbWVvZm1vZHVsZS9wcm9kdWN0LzUvPC9jb2RlPiB3b3VsZCBiZSB2YWxpZCwgYW5kIHdvdWxkIHRlbGwgdGhlIG1vZHVsZSB0byBkaXNwbGF5IGFsbCBlbGVtZW50cyBvZiB0aGUgInByb2R1Y3QiIGxldmVsLjxici8+CgkJVGhlIDxiPi9uYW1lb2ZwYXJlbnQvPC9iPiBwYXJ0IHRlbGxzIHRoZSBtb2R1bGUgdG8gZGlzcGxheSBvbmx5IHRoZSBpdGVtcyBvZiB0aGUgY2hvc2VuIGxldmVsIHRoYXQgaGF2ZSAibmFtZW9mcGFyZW50IiBhcyBhIHBhcmVudC48L3A+CgkJPHA+VGhlIHByZXR0eSB1cmxzIGFyZSByZWdpc3RlcmVkIGluIHRoZSBTZXRQYXJhbWV0ZXJzKCkgZnVuY3Rpb24gb2YgdGhlIG1haW4gbW9kdWxlIGZpbGUgKHdoaWNoIHNob3VsZCBiZSBzb21ldGhpbmcgbGlrZSBOQU1FT0ZZT1VSTU9EVUxFLm1vZHVsZS5waHApLiBPcGVuIHRoaXMgZmlsZSwgYW5kIGRvIGEgc2VhcmNoIHRvIGZpbmQgdGhlIGZ1bmN0aW9uLiBXaGF0IG1hdHRlcnMgaW4gdGhlcmUgaXMgdGhlIGxpbmVzIHRoYXQgbG9vayBsaWtlIHRoaXMgKHdpdGhvdXQgdGhlIG51bWJlcnMgb24gdGhlIGxlZnQpIDo8L3A+CgkJPHByZSBjbGFzcz0iY29kZSI+CiMxCSR0aGlzLT5SZWdpc3RlclJvdXRlKCIvW25OXWFtZW9mbW9kdWxlXC8oW0RkXWV0YWlsKVwvKD9QPGFsaWFzPlteXC9dKylcLyg/UDxyZXR1cm5pZD5bMC05XSspJC8iKTsKIzIJJHRoaXMtPlJlZ2lzdGVyUm91dGUoIi9bbk5dYW1lb2Ztb2R1bGVcLyg/UDx3aGF0PlteXC9dKylcLyg/UDxyZXR1cm5pZD5bMC05XSspJC8iKTsKIzMJJHRoaXMtPlJlZ2lzdGVyUm91dGUoIi9bbk5dYW1lb2Ztb2R1bGVcLyg/UDx3aGF0PlteXC9dKylcLyg/UDxwYXJlbnQ+W15cL10rKVwvKD9QPHJldHVybmlkPlswLTldKykkLyIpOwojNAkkdGhpcy0+UmVnaXN0ZXJSb3V0ZSgiL1tuTl1hbWVvZm1vZHVsZVwvKD9QPHdoYXQ+W15cL10rKVwvKD9QPHBhZ2VpbmRleD5bMC05XSspXC8oP1A8bmJwZXJwYWdlPlswLTldKylcLyg/UDxyZXR1cm5pZD5bMC05XSspJC8iKTsKIzUJJHRoaXMtPlJlZ2lzdGVyUm91dGUoIi9bbk5dYW1lb2Ztb2R1bGVcLyg/UDx3aGF0PlteXC9dKylcLyg/UDxwYXJlbnQ+W15cL10rKVwvKD9QPHBhZ2VpbmRleD5bMC05XSspXC8oP1A8bmJwZXJwYWdlPlswLTldKylcLyg/UDxyZXR1cm5pZD5bMC05XSspJC8iKTs8L3ByZT4KCQk8cD5FYWNoIGxpbmUgaGVyZSByZWdpc3RlciBhIGRpZmZlcmVudCB1cmwgc3RydWN0dXJlLjxici8+CgkJTGluZSAjMSByZWdpc3RlcnMgdGhlIFR5cGUgQSB1cmxzLjxici8+CgkJQWxsIHRoZSBvdGhlciBsaW5lcyByZWdpc3RlciBUeXBlIEIgdXJsczo8YnIvPgoJCUxpbmUgIzIgaXMgZm9yIHdoZW4gbm8gcGFyZW50IGlzIHNwZWNpZmllZCwgbGlrZSBpbiA8Y29kZT5odHRwOi8vd3d3Lm15ZG9tYWluLmNvbS9uYW1lb2Ztb2R1bGUvbmFtZW9mbGV2ZWwvNTwvY29kZT48YnIvPgoJCUxpbmUgIzMgaXMgdXNlZCB3aGVuIGEgcGFyZW50IGlzIHNwZWNpZmllZCwgbGlrZSBpbiA8Y29kZT5odHRwOi8vd3d3Lm15ZG9tYWluLmNvbS9uYW1lb2Ztb2R1bGUvbmFtZW9mbGV2ZWwvbmFtZW9mcGFyZW50LzU8L2NvZGU+PGJyLz4KCQlMaW5lICM0IGlzIGEgdmFyaWF0aW9uIG9mIGxpbmUgIzIgdGhhdCBoYW5kbGVzIHNlcGFyYXRpb24gaW50byBwYWdlcyAod2hlbiB3ZSBzZXBhcmF0ZSBpbnRvIHBhZ2VzLCB3ZSBuZWVkIHRvIGtub3cgd2hpY2ggcGFnZSB3ZSdyZSBsb29raW5nIGF0KS4gRm9yIGV4YW1wbGUsIDxjb2RlPmh0dHA6Ly93d3cubXlkb21haW4uY29tL25hbWVvZm1vZHVsZS9wcm9kdWN0LzIvMTAvNTwvY29kZT4gd291bGQgbWVhbiB0aGF0IHdlIGFyZSBsb29raW5nIGF0IHRoZSBsaXN0IG9mIGFsbCBpdGVtcyBvZiB0aGUgInByb2R1Y3QiIGxldmVsLCB0aGF0IHdlIGFyZSBzZXBhcmF0aW5nIGluIHBhZ2VzIHdpdGggIjEwIiBlbGVtZW50cyBwZXIgcGFnZSwgYW5kIHRoYXQgd2UgYXJlIGxvb2tpbmcgYXQgdGhlIHBhZ2UgIjIiLjxici8+CgkJSW4gcHJldHR5IG11Y2ggdGhlIHNhbWUgd2F5LCBsaW5lICM1IGlzIGEgdmFyaWF0aW9uIG9mIGxpbmUgIzMuPC9wPgoJCTxwPlRoZSA8PC8+cGFyYW1uYW1lPiB0aGluZyBtZWFucyB0aGF0IHdoYXRldmVyIGlzIGluIHRoYXQgcGxhY2UgaW4gdGhlIHVybCB3aWxsIGJlIGludGVycHJldGVkIGFzIHRoZSAicGFyYW1uYW1lIiBwYXJhbWV0ZXIuIEluIG90aGVyIHdvcmRzLCBlYWNoIHVybCBzdHJ1Y3R1cmUgb3V0cHV0IGRpZmZlcmVudCBwYXJhbWV0ZXJzIHRoYXQgd2lsbCB0ZWxsIHRoZSBtb2R1bGUgd2hhdCB0byBkby48L3A+CgkJPHA+PGI+TW9kaWZ5aW5nIGFsbCB0aGlzLi4uPC9iPjxici8+CgkJVGhlcmUgYXJlIHNvbWUgdGhpbmdzIHRoYXQgeW91IGNhbiBjaGFuZ2UsIHNvbWUgdGhhdCB5b3UgY2FuJ3QsIGFuZCBzb21lIHRoYXQgeW91IGNhbiBhdCBhIHByaWNlLjwvcD4KCQk8cD5MZXQncyBzYXkgeW91IGRvbid0IGxpa2UgdGhlIHdvcmQgIjxiPmRldGFpbDwvYj4iIGluIHRoZSB1cmwsIGFuZCB3b3VsZCBsaWtlIHRvIGNoYW5nZSBpdCB0byBzb21ldGhpbmcgZWxzZSoqLiBGaXJzdCwgbGV0J3Mgbm90IHRoYXQgdGhlICJbRGRdIiBwYXJ0IGluIHRoZSB1cmwgc3RydWN0dXJlIHNheXMgdGhhdCB0aGVyZSBjYW4gYmUgZWl0aGVyIGEgIkQiIG9yIGEgImQiIGhlcmUuIAoJCUluIG90aGVyIHdvcmRzLCA8Y29kZT5odHRwOi8vd3d3Lm15ZG9tYWluLmNvbS9uYW1lb2Ztb2R1bGUvZGV0YWlsL25hbWVvZm9iamVjdC81LzwvY29kZT4gaXMgdGhlIHNhbWUgdGhpbmcgYXMgPGNvZGU+aHR0cDovL3d3dy5teWRvbWFpbi5jb20vbmFtZW9mbW9kdWxlL0RldGFpbC9uYW1lb2ZvYmplY3QvNS88L2NvZGU+Ljxici8+CgkJWW91IGNhbiBjaGFuZ2UgdGhlIHdvcmQgImRldGFpbCIgZm9yIHNvbWV0aGluZyBlbHNlLCBidXQgeW91IGhhdmUgdG8gYmUgY2FyZWZ1bCBhbmQgcmVtZW1iZXIgdGhhdCB0aGUgdXJsIGNhcnJ5IGFsbCBuZWNlc3NhcnkgaW5mb3JtYXRpb24gYWJvdXQgd2hhdCBzaG91bGQgYmUgc2hvd24uIEZvciBleGFtcGxlLCBpZiBvbmUgb2YgeW91ciBsZXZlbCBpcyBuYW1lZCAicHJvZHVjdCIsIHlvdSBjb3VsZG4ndCByZXBsYWNlIHRoZSB3b3JkICJkZXRhaWwiIGJ5IHRoZSB3b3JkICJwcm9kdWN0Ii4gSWYgeW91IGRpZCwgdGhlIG1vZHVsZSBjb3VsZG4ndCBrbm93IGlmIHRoZSB3b3JkICJwcm9kdWN0IiBpdCBlbmNvdW50ZXJzIG1lYW5zIHRoYXQgd2UncmUgd2F0Y2hpbmcgdGhlIGRldGFpbHMgb2YgYW4gaXRlbSwgb3IgaWYgaXQgbWVhbnMgdGhhdCB3ZSBhcmUgd2F0Y2hpbmcgYSBsaXN0IG9mIHRoZSBpdGVtcyBpbiB0aGUgInByb2R1Y3QiIGxldmVsLjwvcD4KCQk8cD5TbyBsZXQncyBzYXkgd2Ugd2FudCB0byBjaGFuZ2UgImRldGFpbCIgZm9yICJ2aWV3IiAocHJvdmlkZWQgdGhhdCB5b3UgZG9uJ3QgaGF2ZSBhIGxldmVsIGNhbGxlZCAidmlldyIpLiBJbiBsaW5lICMxLCB3ZSB3b3VsZCByZXBsYWNlIDxjb2RlPihbRGRdZXRhaWwpPC9jb2RlPiB3aXRoIDxjb2RlPih2aWV3KTwvY29kZT4gKG9yIDxjb2RlPihbVnZdaWV3KTwvY29kZT4sIGlmIHlvdSB3YW50IGl0IHRvIGFjY2VwdCBib3RoICJWaWV3IiBhbmQgInZpZXciKS48L3A+CgkJPHA+PHU+QnV0IHRoaXMgaXMgbm90IGVub3VnaC48L3U+IFlvdSd2ZSBjaGFuZ2VkIHRoZSB3YXkgdGhlIHVybHMgYXJlIGludGVycHJldGVkLCBidXQgbm90IHRoZSB3YXkgdGhleSBhcmUgY3JlYXRlZC4gSW4gdGhlIHNhbWUgZmlsZSwgc2VhcmNoIGZvciB0aGUgQnVpbGRQcmV0dHlVUkxzIGZ1bmN0aW9uLiBJdCBzaG91bGQgY29udGFpbiBzb21ldGhpbmcgbGlrZSB0aGlzOjwvcD4KCQk8cHJlIGNsYXNzPSJjb2RlIj4KIzEJCSRwcmV0dHl1cmwgPSAibmFtZW9mbW9kdWxlLyI7CiMyCQlpZihpc3NldCgkcGFyYW1zWyJhbGlhcyJdKSl7CiMzCQkJJHByZXR0eXVybCAuPSAiZGV0YWlsLyIuJHBhcmFtc1siYWxpYXMiXTsKIzQJCX1lbHNlaWYoaXNzZXQoJHBhcmFtc1sicGFyZW50Il0pKXsKIzUJCQkkcHJldHR5dXJsIC49ICRwYXJhbXNbIndoYXQiXS4iLyIuJHBhcmFtc1sicGFyZW50Il07CiM2CQl9ZWxzZXsKIzcJCQkkcHJldHR5dXJsIC49ICRwYXJhbXNbIndoYXQiXTsKIzgJCX0KIzkJCWlmKCFpc3NldCgkcGFyYW1zWyJhbGlhcyJdKSAmJiBpc3NldCgkcGFyYW1zWyJwYWdlaW5kZXgiXSkgJiYgaXNzZXQoJHBhcmFtc1sibmJwZXJwYWdlIl0pKQkkcHJldHR5dXJsIC49ICIvIi4kcGFyYW1zWyJwYWdlaW5kZXgiXS4iLyIuJHBhcmFtc1sibmJwZXJwYWdlIl07CiMxMAkJJHByZXR0eXVybCAuPSAiLyIuJHJldHVybmlkOwojMTEJCXJldHVybiAkcHJldHR5dXJsOzwvcHJlPgoJCTxwPlRoaXMgZnVuY3Rpb24gdHJhbnNmb3JtcyB0aGUgcGFyYW1ldGVycyBpbnRvIGEgdXJsLjxici8+CgkJTGluZSAjMSBzdGFydHMgd2l0aCB0aGUgbW9kdWxlJ3MgbmFtZS48YnIvPgoJCUluIGxpbmVzICMyLSMzLCBpZiB3ZSB3YW50IHRvIHdhdGNoIHRoZSBkZXRhaWxzIG9mIGFuIGl0ZW0sIHdlIGFkZCB0aGUgImRldGFpbC8iIGJsb2NrIHRvIHRoZSB1cmwuPGJyLz4KCQlJZiB0aGlzIGlzbid0IHRoZSBjYXNlLCB3ZSBhZGQgdGhlIGxldmVsIG9mIHRoZSBpdGVtcyB3ZSB3YW50IHRvIHNob3cgYW5kLCBpZiBzcGVjaWZpZWQsIHRoZSBwYXJlbnQgKGxpbmVzICM0IHRvICM4KS4gSW4gbGluZSAjOSwgaWYgd2UncmUgc2VwYXJhdGluZyBpbnRvIHBhZ2VzIHdlIGFkZCB0aGUgcGFnZSB3ZSB3aXNoIHRvIGxvb2sgYW5kIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgcGVyIHBhZ2UuCgkJRmluYWxseSwgaW4gbGluZSAjMTAsIHdlIGFkZCB0aGUgaWQgb2YgdGhlIHBhZ2UgaW4gd2hpY2ggaXQgc2hvdWxkIGJlIGRpc3BsYXllZC48L3A+CgkJPHA+SWYgd2UgY2hhbmdlZCAiW0RkXWV0YWlsIiB0byAiW1Z2XWlldyIgaW4gdGhlIFNldFBhcmFtZXRlcnMoKSBmdW5jdGlvbiwgd2UgbXVzdCBhbHNvIGNoYW5nZSB0aGUgImRldGFpbC8iIGluIGxpbmUgIzMgZm9yICJ2aWV3LyIuPGJyLz5Ob3csIHRoaXMgc2hvdWxkIGRvIHRoZSB0cmljay48L3A+CgkJPHA+PGI+Q2FuIEkgZ2V0IHJpZCBvZiB0aGUgcmV0dXJuaWQ/PC9iPjxici8+Tm8sIG5vdCByZWFsbHkuIEhvd2V2ZXIsIGlmIHlvdSB0aGUgbW9kdWxlIGlzIDx1PmFsd2F5czwvdT4gZGlzcGxheWVkIGluIHRoZSBzYW1lIHBhZ2UgKGkuZS4sIGlmIGl0J3MgPHU+YWx3YXlzPC91PiB0aGUgc2FtZSBudW1iZXIpLCB3ZSBjb3VsZCByZW1vdmUgaXQgZnJvbSB0aGUgdXJsIGFuZCBwcm92aWRlIGl0IGluIGFub3RoZXIgd2F5LiBIZXJlJ3MgaG93IHRvIGRvIGl0OjwvcD4KCQk8cD5MZXQncyBzYXkgdGhlIGlkIG9mIHRoZSBwYWdlIGluIHdoaWNoIHRoZSBtb2R1bGUgaXMgYWx3YXlzIGNhbGxlZCAodGhlIG51bWJlciB3ZSdyZSB0cnlpbmcgdG8gZ2V0IHJpZCBvZikgaXMgNS48YnIvPgoJCTEuIGluIHRoZSBTZXRQYXJhbWV0ZXJzKCkgZnVuY3Rpb24gb2YgeW91ciBtb2R1bGUsIHJlbW92ZSBhbGwgPGNvZGU+XC8oP1A8cmV0dXJuaWQ+WzAtOV0rKTwvY29kZT4gcGFydHMuIChpdCB3b3VsZCBiZSBhIGdvb2QgaWRlYSB0byBjb3B5IGFuZCBwYXN0ZSB0aGUgb3JpZ2luYWwgbGluZXMganVzdCBpbiBjYXNlLi4uIHlvdSBjYW4gY29tbWVudCBsaW5lcyB1c2luZyA8Y29kZT4vLzwvY29kZT4pLjxici8+CgkJMi4gaW4gdGhlIEJ1aWxkUHJldHR5VVJMcygpIGZ1bmN0aW9uIG9mIHlvdXIgbW9kdWxlLCBjb21tZW50IChhZGQgPGNvZGU+Ly88L2NvZGU+IGJlZm9yZSBpdCkgdGhlIGxpbmUgIzEwICg8Y29kZT4vLyAkcHJldHR5dXJsIC49ICIvIi4kcmV0dXJuaWQ7PC9jb2RlPikuPGJyLz4KCQkzLiB3ZSBub3cgbmVlZCB0byBwcm92aWRlIHRoZSBpZC4gR28gYmFjayB0byB0aGUgU2V0UGFyYW1ldGVycygpIGZ1bmN0aW9uLCBhbmQgZm9yIGVhY2ggbGluZSwganVzdCBhZnRlciB0aGUgPGNvZGU+JCIvPC9jb2RlPiBwYXJ0IChhbmQgYmVmb3JlIHRoZSBjbG9zdXJlIG9mIHRoZSBwYXJlbnRoZXNpcyksIGFkZCA8Y29kZT4sIGFycmF5KCJyZXR1cm5pZCI9PjUpPC9jb2RlPiAod2l0aCB0aGUgY29tbWEpLCB3aGVyZSAiNSIgaXMgeW91ciBpZC4gRm9yIGV4YW1wbGUsIHRoaXM6PGJyLz4KCQk8Y29kZT4kdGhpcy0+UmVnaXN0ZXJSb3V0ZSgiL1tuTl1hbWVvZm1vZHVsZVwvKFtEZF1ldGFpbClcLyg/UDxhbGlhcz5bXlwvXSspJC8iKTs8L2NvZGU+PGJyLz4KCQlzaG91bGQgYmVjb21lOjxici8+CgkJPGNvZGU+JHRoaXMtPlJlZ2lzdGVyUm91dGUoIi9bbk5dYW1lb2Ztb2R1bGVcLyhbRGRdZXRhaWwpXC8oP1A8YWxpYXM+W15cL10rKSQvIiwgYXJyYXkoInJldHVybmlkIj0+NSkpOzwvY29kZT48YnIvPgoJCShSZW1lbWJlciBub3QganVzdCB0byBjb3B5IGFuZCBwYXN0ZSBsaW5lcyBmcm9tIHRoaXMgaGVscCwgYmVjYXVzZSB5b3VyIG1vZHVsZSBpcyBwcm9iYWJseSA8aT5ub3Q8L2k+IG5hbWVkICJuYW1lb2Ztb2R1bGUiKTxici8+CgkJVGhpcyBzaG91bGQgZG8gdGhlIHRyaWNrLCBidXQgdGhlIG1vZHVsZSB3aWxsIG5ldmVyIHVzZSBhbm90aGVyIHBhZ2UgdG8gZGlzcGxheSBpdHMgY29udGVudC48L3A+CgkJPHA+PHU+RmluYWwgbm90aWNlOjwvdT4gSWYgeW91IGNoYW5nZSB0aGUgcHJldHR5IHVybHMgYW5kIG1ha2UgdXNlIG9mIHRoZSAiaXNfc2VsZWN0ZWQiIGF0dHJpYnV0ZXMgaW4geW91ciB0ZW1wbGF0ZXMsIHlvdSBtaWdodCBhbHNvIGhhdmUgdG8gY2hhbmdlIHRoZSBnZXRfbW9kdWxlR2V0VmFycygpIGZ1bmN0aW9uICh0YWtlIGEgbG9vayA8YSBocmVmPSIjcTE0Ij5oZXJlPC9hPikuPC9wPgoJCTxwIHN0eWxlPSJmb250LXNpemU6IDExcHg7Ij48YnIvPiogaWYgdGhlcmUgaXMgb25seSBvbmUgaXRlbSB0byBkaXNwbGF5LCBhbmQgaWYgeW91IGFyZW4ndCB1c2luZyB0aGUgImZvcmNlbGlzdCIgcGFyYW1ldGVyLCB0aGUgZGV0YWlscyB3aWxsIGJlIGRpc3BsYXllZCBpbnN0ZWFkIG9mIGEgbGlzdC48YnIvPgoJCSoqIG5vLCB5b3UgY2FuJ3QganVzdCBnZXQgcmlkIG9mIGl0LCB1bmxlc3MgeW91IGNoYW5nZSBhbGwgcmVnaXN0ZXJlZCB1cmxzLi4uIGZvciBleGFtcGxlLCBpbnN0ZWFkIG9mIGhhdmluZyBhICIvZGV0YWlsLyIsIGFsbCBvdGhlciB1cmxzIGNvdWxkIGhhdmUgYSAiL2xpc3QvIiBibG9jay48L3A+CgkJPC9kaXY+CgkJPGEgY2xhc3M9ImJhY2t0b3RvcCIgaHJlZj0iI3RvcCI+QmFjayB0byB0b3A8L2E+Cgk8L2Rpdj4KCQoKCTxkaXYgY2xhc3M9InFkaXYiIGlkPSJxOCI+CgkJPGRpdiBjbGFzcz0icXVlc3Rpb24iPkNhbiBJIG1ha2UgbXkgbW9kdWxlIGFsd2F5cyBhY3QgYXMgaWYgdGhlICJmb3JjZWxpc3QiIHBhcmFtZXRlciB3YXMgZW5hYmxlZD88L2Rpdj4KCQk8ZGl2IGNsYXNzPSJhbnN3ZXIiPgoJCTxwIHN0eWxlPSJjb2xvcjogcmVkOyBmb250LXdlaWdodDogYm9sZDsiPlNpbmNlIDEuOC42LCB0aGlzIGhhcyBiZWNvbWUgYSBzaW1wbGUgb3B0aW9uIHRvIHR1cm4gb24gaW4gdGhlICJTZXR0aW5ncyIgdGFiLi4uPC9wPgoJCTxwPjxiPlllcy48L2I+PC9wPgoJCTxwPk9wZW4gdGhlIGFjdGlvbi5kZWZhdWx0LnBocCBmaWxlLiBBcm91bmQgdGhlIGxpbmUgIzE2IHlvdSBzaG91bGQgc2VlIHNvbWV0aGluZyBsaWtlIHRoaXM6PC9wPgoJCTxwcmUgY2xhc3M9ImNvZGUiPgoJCSRmb3JjZWxpc3QgPSBpc3NldCgkcGFyYW1zWyJmb3JjZWxpc3QiXSk/JHBhcmFtc1siZm9yY2VsaXN0Il06ZmFsc2U7PC9wcmU+CgkJPHA+V2hhdCB0aGlzIHNheXMgaXMgdGhhdCBpZiB0aGUgZm9yY2VsaXN0IHBhcmFtZXRlciBoYXMgYmVlbiBzZXQsIHdlIHVzZSB0aGlzIHZhbHVlLCBhbmQgaWYgaXQgaGFzbid0LCB3ZSB1c2UgdGhlIHZhbHVlICJmYWxzZSIuPGJyLz4KCQlDaGFuZ2luZyB0aGlzIDxjb2RlPmZhbHNlPC9jb2RlPiB0byBhIDxjb2RlPnRydWU8L2NvZGU+IHdvdWxkIG1lYW4gdGhhdCB0aGUgZm9yY2VsaXN0IG1vZGUgaXMgYWx3YXlzIGVuYWJsZWQsIHVubGVzcyBzcGVjaWZpZWQgb3RoZXJ3aXNlLjxici8+CgkJQnV0IHRoYXQncyBub3QgZXhhY3RseSB3aGF0IHdlIHdhbnQsIGZvciB0aGlzIHdvdWxkIG1lYW4gdGhhdCB3ZSBhbHdheXMgZGlzcGxheSBhIGxpc3QsIGV2ZW4gd2hlbiB3ZSdyZSB0cnlpbmcgdG8gZGlzcGxheSBhbiBpdGVtJ3MgZGV0YWlscy4gU28gdGhlIHByb3BlciBjb2RlIHdvdWxkIGJlOjwvcD4KCQk8cHJlIGNsYXNzPSJjb2RlIj4KCQkkZm9yY2VsaXN0ID0gaXNzZXQoJHBhcmFtc1siZm9yY2VsaXN0Il0pPyRwYXJhbXNbImZvcmNlbGlzdCJdOihpc3NldCgkcGFyYW1zWyJhbGlhcyJdKT9mYWxzZTp0cnVlKTs8L3ByZT4KCQk8cD5UaGlzIHdheSwgJGZvcmNlbGlzdCB3aWxsIGJlIGZhbHNlIHVubGVzcyBzcGVjaWZpZWQgb3RoZXJ3aXNlLCBhbmQgdW5sZXNzIGFuIGFsaWFzICh1c2VkIGluIGRldGFpbCBsaW5rcykgaXMgc3BlY2lmaWVkLjwvcD4KCQk8cD4oVHdvIGxpbmVzIGJlbG93LCB5b3UgY291bGQgZG8gdGhlIHNhbWUga2luZCBvZiB0aGluZyBmb3IgdGhlICJpbmxpbmUiIHBhcmFtZXRlci4uLik8L3A+CgkJPC9kaXY+CgkJPGEgY2xhc3M9ImJhY2t0b3RvcCIgaHJlZj0iI3RvcCI+QmFjayB0byB0b3A8L2E+Cgk8L2Rpdj4KCQoJCgk8ZGl2IGNsYXNzPSJxZGl2IiBpZD0icTE0Ij4KCQk8ZGl2IGNsYXNzPSJxdWVzdGlvbiI+V2hhdCdzIHdpdGggdGhpcyBnZXRfbW9kdWxlR2V0VmFycygpIGZ1bmN0aW9uPzwvZGl2PgoJCTxkaXYgY2xhc3M9ImFuc3dlciI+CgkJPHA+PGI+V2hhdCBpcyBpdCBmb3I/IEFuZCB3aHkgaXMgaXQgc3VjaCBhIG1lc3M/PC9iPjwvcD4KCQk8cD5JbiB0aGUgbWFpbiBtb2R1bGUgZmlsZSwgdGhlcmUgaXMgYSBmdW5jdGlvbiBjYWxsZWQgZ2V0X21vZHVsZUdldFZhcnMoKS4gQmFzaWNhbGx5LCB0aGUgZnVuY3Rpb24gcmV0cmlldmUgdGhlIG1vZHVsZSBhY3Rpb24gcGFyYW1ldGVycyBmcm9tIHRoZSB1cmwuPGJyLz4KCQlJbWFnaW5lIHRoYXQgaW4geW91ciB0ZW1wbGF0ZSwgaW4gYSBjb2x1bW4gb24gdGhlIGxlZnQsIHlvdSBjYWxsIHRoZSBtb2R1bGUgdG8gZGlzcGxheSBhIGNhdGVnb3J5IGxpc3QuIFdoZW4geW91IGNsaWNrIG9uIGFuIGNhdGVnb3J5LCB0aGUgbGlzdCBzdGF5cyB0aGVyZSwgYnV0IHRoZSBtYWluIGNvbnRlbnQgYmxvY2sgZGlzcGxheXMgdGhlIGNoaWxkcmVuIHdpdGhpbiB0aGF0IGNhdGVnb3J5LiBOb3csIGluIHRoZSBjYXRlZ29yeSBsaXN0LCB5b3UgbWlnaHQgd2FudCB0byBzaG93IHdoaWNoIGNhdGVnb3J5IGlzIHNlbGVjdGVkICh1c2luZyB0aGUgJGl0ZW0tPmlzX3NlbGVjdGVkIGF0dHJpYnV0ZSkuIEJ1dCB0aGUgcHJvYmxlbSBpcyB0aGF0IHRoZSBjYXRlZ29yeSBsaXN0IGlzIGNhbGxlZCA8aT5iZWZvcmU8L2k+IHRoZSBtYWluIG1vZHVsZSBhY3Rpb24gKHRoZSBsaXN0IG9mIGNoaWxkcmVuKSwgYW5kIHRodXMgdGhlIGFjdGlvbiBwYXJhbWV0ZXJzIGFyZW4ndCB5ZXQgcGFyc2VkLjxici8+CgkJVGhpcyBzdWJqZWN0IGhhcyBiZWVuIGRpc2N1c3NlZCBpbiB0aGUgZm9ydW1zICg8YSBocmVmPSJodHRwOi8vZm9ydW0uY21zbWFkZXNpbXBsZS5vcmcvaW5kZXgucGhwL3RvcGljLDMzMzM0LjAuaHRtbCI+aGVyZTwvYT4pLCBhbmQgSSBjaG9zZSB0aGUgc29sdXRpb24gdGhhdCBpcyB0aGUgZWFzaWVzdCB0byBpbXBsZW1lbnQgZm9yIHRoZSB1c2VyOiByZXRyaWV2ZSB0aGUgcGFyYW1ldGVycyBmcm9tIHRoZSB1cmwgZXZlbiBiZWZvcmUgdGhleSBhcmUgcGFyc2VkIGJ5IHRoZSBjbXMuIEl0J3MgYSByYXRoZXIgY29tcGxpY2F0ZWQgZnVuY3Rpb24gYmVjYXVzZSB3ZSBuZWVkIHRvIGRlYWwgd2l0aCB0aGUgcG9zc2liaWxpdHkgb2YgcHJldHR5dXJscyBhbmQgcmV3cml0dGVuIHVybHMuLi48YnIvPgoJCU9mIGNvdXJzZSwgaXQgbWVhbnMgdGhhdCBpZiB5b3Ugd2lzaCB0byBjaGFuZ2UgdGhlIHdheSBwcmV0dHl1cmxzIGFyZSBtYWRlIGFuZCBzdGlsbCB1c2UgdGhlIGlzX3NlbGVjdGVkIGF0dHJpYnV0ZSwgeW91J3JlIGdvbm5hIGhhdmUgdG8gcGxheSBpbiB0aGlzIGluZWxlZ2FudCBjb2RlLiBCdXQgaGV5LCBJJ20gd3JpdGluZyB0aGlzIGp1c3QgdG8gbWFrZSBpdCBjbGVhcmVyLi4uPC9wPgoJCTxici8+PHA+PGI+SG93IGRvZXMgaXQgd29yaywgYW5kIGhvdyB0byBjaGFuZ2UgaXQ/PC9iPjwvcD4KCQk8cD5CZWZvcmUgd2UgZ28sIGhlcmUncyBhIGxvb2sgYXQgdGhlIGZ1bmN0aW9uOjwvcD4KCQk8cHJlIGNsYXNzPSJjb2RlIj4KCWZ1bmN0aW9uIGdldF9tb2R1bGVHZXRWYXJzKCl7CiMxCQkvLyB1bm9ydGhvZG94IGhhY2sgc28gdGhhdCBkaWZmZXJlbnQgY2FsbHMgb2YgdGhlIG1vZHVsZSBzcGVhayB3aXRoIGVhY2ggb3RoZXIKIzIJCS8vIGJhc2ljYWxseSwgd2UgcmV0cmlldmUgcGFyYW1ldGVycyBpbiB0aGUgdXJsIHRoYXQgd2VyZSBtZWFudCBmb3Igb3RoZXIgaW5zdGFuY2VzIG9mIHRoZSBtb2R1bGUKIzMJCWdsb2JhbCAkX0dFVDsKIzQJCWdsb2JhbCAkZ0NtczsKIzUJCSRnbG9iYWxtb2R1bGV2YXJzID0gYXJyYXkoKTsKIzYJCWlmKGlzc2V0KCRfR0VUWyJtYWN0Il0pKXsKIzcJCQkvLyBpZiB3ZSBhcmVuJ3QgdXNpbmcgcHJldHR5IHVybHMuLi4KIzgJCQkkbW9kaW5mbyA9IGV4cGxvZGUoIiwiLCRfR0VUWyJtYWN0Il0pOwojOQkJCWlmKGlzc2V0KCRtb2RpbmZvKSAmJiAkbW9kaW5mb1swXSA9PSAkdGhpcy0+R2V0TmFtZSgpKXsKIzEwCQkJCWlmKGlzc2V0KCRfR0VUWyRtb2RpbmZvWzFdLiJwYXJlbnQiXSkpCiMxMQkJCQkJJGdsb2JhbG1vZHVsZXZhcnNbInBhcmVudCJdPSRfR0VUWyRtb2RpbmZvWzFdLiJwYXJlbnQiXTsKIzEyCQkJCWlmKGlzc2V0KCRfR0VUWyRtb2RpbmZvWzFdLiJ3aGF0Il0pKQojMTMJCQkJCSRnbG9iYWxtb2R1bGV2YXJzWyJ3aGF0Il09JF9HRVRbJG1vZGluZm9bMV0uIndoYXQiXTsKIzE0CQkJCWlmKGlzc2V0KCRfR0VUWyRtb2RpbmZvWzFdLiJhbGlhcyJdKSkKIzE1CQkJCQkkZ2xvYmFsbW9kdWxldmFyc1siYWxpYXMiXT0kX0dFVFskbW9kaW5mb1sxXS4iYWxpYXMiXTsKIzE2CQkJCWlmKGlzc2V0KCRfR0VUWyRtb2RpbmZvWzFdLiJwYWdlaW5kZXgiXSkpCiMxNwkJCQkJJGdsb2JhbG1vZHVsZXZhcnNbInBhZ2VpbmRleCJdPSRfR0VUWyRtb2RpbmZvWzFdLiJwYWdlaW5kZXgiXTsKIzE4CQkJfQojMTkJCX1lbHNlaWYoJGdDbXMtPmNvbmZpZ1siaW50ZXJuYWxfcHJldHR5X3VybHMiXSB8fCAkZ0Ntcy0+Y29uZmlnWyJhc3N1bWVfbW9kX3Jld3JpdGUiXSl7CiMyMAkJCSRwYXJhbXMgPSBhcnJheSgpOwojMjEJCQlpZigkZ0Ntcy0+Y29uZmlnWyJhc3N1bWVfbW9kX3Jld3JpdGUiXSAmJiBpc3NldCgkX0dFVFsicGFnZSJdKSl7CiMyMgkJCQkvLyBpZiB3ZSBhcmUgdXNpbmcgYW4gZXh0ZXJuYWwgbW9kX3Jld3JpdGUsIGFzc3VtaW5nIHlvdSBhcmUgdXNpbmcgdGhlIHZlcnkKIzIzCQkJCS8vIGJhc2ljIHJld3JpdGUgd2hpY2ggcHV0cyB0aGUgbW9kdWxlIGluZm9ybWF0aW9ucyBpbnNpZGUgdGhlIHBhZ2UgdmFyaWFibGUKIzI0CQkJCSRwYXJ0cyA9IGV4cGxvZGUoIi8iLCRfR0VUWyJwYWdlIl0pOwojMjUJCQkJZm9yZWFjaCgkcGFydHMgYXMgJHBhcnQpewojMjYJCQkJCWlmKCRwYXJ0ICE9ICIiKQkkcGFyYW1zW10gPSAkcGFydDsKIzI3CQkJCX0KIzI4CQkJfWVsc2VpZighJGdDbXMtPmNvbmZpZ1siYXNzdW1lX21vZF9yZXdyaXRlIl0gJiYgJGdDbXMtPmNvbmZpZ1siaW50ZXJuYWxfcHJldHR5X3VybHMiXSAmJiBpc3NldCgkX1NFUlZFUlsiUkVRVUVTVF9VUkkiXSkpewojMjkJCQkJLy8gaWYgd2UgYXJlIHVzaW5nIHRoZSBpbnRlcm5hbCBwcmV0dHkgdXJscwojMzAJCQkJJHBhcnRzID0gZXhwbG9kZSgiLyIsJF9TRVJWRVJbIlJFUVVFU1RfVVJJIl0pOwojMzEJCQkJJHN0YXJ0ZWQgPSBmYWxzZTsKIzMyCQkJCWZvcmVhY2goJHBhcnRzIGFzICRwYXJ0KXsKIzMzCQkJCQlpZigkc3RhcnRlZCAmJiAkcGFydCAhPSAiIikJJHBhcmFtc1tdID0gJHBhcnQ7CiMzNAkJCQkJaWYoc3RydG9sb3dlcigkcGFydCkgPT0gImluZGV4LnBocCIpCSRzdGFydGVkID0gdHJ1ZTsKIzM1CQkJCX0KIzM2CQkJfQojMzcJCQlpZihpc3NldCgkcGFyYW1zWzBdKSAmJiBzdHJ0b2xvd2VyKCRwYXJhbXNbMF0pID09IHN0cnRvbG93ZXIoJHRoaXMtPkdldE5hbWUoKSkpewojMzgJCQkJIC8vIHdlIGFyZSBpbiBhIG1vZHVsZSBhY3Rpb24KIzM5CQkJCWlmKCFpc3NldCgkcGFyYW1zWzFdKSB8fCBzdHJ0b2xvd2VyKCRwYXJhbXNbMV0pID09ICJxdWVyeSIpewojNDAKIzQxCQkJCX1lbHNlaWYoaXNzZXQoJHBhcmFtc1sxXSkgJiYgc3RydG9sb3dlcigkcGFyYW1zWzFdKSA9PSAiZGV0YWlsIil7CiM0MgkJCQkJJGdsb2JhbG1vZHVsZXZhcnNbIndoYXQiXSA9ICJ0c3ViYSI7CiM0MwkJCQkJJGdsb2JhbG1vZHVsZXZhcnNbImFsaWFzIl0gPSAkcGFyYW1zWzJdOwojNDQJCQkJfWVsc2V7CiM0NQkJCQkJJGdsb2JhbG1vZHVsZXZhcnNbIndoYXQiXSA9ICRwYXJhbXNbMV07CiM0NgkJCQkJc3dpdGNoKGNvdW50KCRwYXJhbXMpKXsKIzQ3CQkJCQkJY2FzZSA2OgojNDgJCQkJCQkJJGdsb2JhbG1vZHVsZXZhcnNbInBhZ2VpbmRleCJdID0gJHBhcmFtc1szXTsKIzQ5CQkJCQkJCSRnbG9iYWxtb2R1bGV2YXJzWyJuYnBlcnBhZ2UiXSA9ICRwYXJhbXNbNF07CiM1MAkJCQkJCWNhc2UgNDoKIzUxCQkJCQkJCSRnbG9iYWxtb2R1bGV2YXJzWyJwYXJlbnQiXSA9ICRwYXJhbXNbMl07CiM1MgkJCQkJCQlicmVhazsKIzUzCQkJCQkJY2FzZSA1OgojNTQJCQkJCQkJJGdsb2JhbG1vZHVsZXZhcnNbInBhZ2VpbmRleCJdID0gJHBhcmFtc1syXTsKIzU1CQkJCQkJCSRnbG9iYWxtb2R1bGV2YXJzWyJuYnBlcnBhZ2UiXSA9ICRwYXJhbXNbM107CiM1NgkJCQkJCQlicmVhazsKIzU3CQkJCQl9CiM1OAkJCQl9CiM1OQkJCX0KIzYwCQl9CiM2MQkJcmV0dXJuICRnbG9iYWxtb2R1bGV2YXJzOwoJfTwvcHJlPgoJCTxwPk5vdyB0aGVyZSBhcmUgZm91ciBwb3NzaWJsZSBzY2VuYXJpb3M6PGJyLz4KCQkxLiBUaGVyZSBpcyBubyByZXdyaXRlIG9yIHByZXR0eXVybHMgYXQgYWxsICh0aGF0J3MgdGhlIGVhc2llc3QuLi4gbGluZXMgNyB0byAxOCBkZWFsIHdpdGggdGhpcyk8YnIvPgoJCTIuIFdlIGFyZSB1c2luZyBpbnRlcm5hbCBwcmV0dHl1cmxzIHdpdGhvdXQgbW9kX3Jld3JpdGUgKGxpbmVzIDI5IHRvIDM1LCBhbmQgMzcgdG8gNTkpPGJyLz4KCQkzLiBXZSBhcmUgdXNpbmcgaW50ZXJuYWwgcHJldHR5dXJscyBhbG9uZyB3aXRoIHRoZSBzdGFuZGFyZCBhc3N1bWVkIG1vZF9yZXdyaXRlIChsaW5lcyAyMiB0byAzNywgYW5kIDM3IHRvIDU5KTxici8+CgkJNC4gV2UgYXJlIHVzaW5nIGEgbm9uLXN0YW5kYXJkIG1vZF9yZXdyaXRlLi4uIGluIHRoYXQgY2FzZSwgeW91J2xsIGVpdGhlciBoYXZlIHRvIGZvcmdldCBhYm91dCB0aGUgaXNfc2VsZWN0ZWQgYXR0cmlidXRlIG9yIHRvIHdyaXRlIHRoZSBjb2RlIHlvdXJzZWxmLjwvcD4KCQk8cD48Yj5DYXNlIDE6IGdvb2Qgb2wnIHVybHM8L2I+PGJyLz4KCQlJZiB3ZSBmaW5kIHRoZSAibWFjdCIgaW4gdGhlIEdFVCBwYXJhbWV0ZXJzLCB0aGVuIHdlIGFyZSBkZWFsaW5nIHdpdGggc3RhbmRhcmQgdXJscy4gV2UganVzdCBoYXZlIHRvIGJyZWFrIHRoZSBtYWN0IHZhbHVlIGludG8gcGllY2VzLCBtYWtlIHN1cmUgaXQncyBhbiBhY3Rpb24gb2Ygb3VyIG1vZHVsZSwgYW5kIHJldHJpZXZlIHRoZSBkaWZmZXJlbnQgcGFyYW1ldGVycyBieSB0aGVpciBuYW1lIChhbG9uZyB3aXRoIHRoZSAkaWQpLjwvcD4KCQk8cD48Yj5DYXNlIDI6IGludGVybmFsIHByZXR0eSB1cmxzPC9iPjxici8+CgkJTGluZXMgMjkgdG8gMzUgcmV0cmlldmUgdGhlIHVybCwgc2VwYXJhdGUgaXQgaW50byBwYXJ0cyAoZWFjaCBwYXJ0IGJlaW5nIGEgZmFrZSBmb2xkZXIgaW4gdGhlIHVybCksIGFuZCBvbmx5IGtlZXAgdGhlIHBhcnRzIHRoYXQgYXJlIGFmdGVyIHRoZSAiaW5kZXgucGhwLyIuPC9wPgoJCTxwPkxpbmVzIDM3IHRvIDU5IHRyeSB0byBmaWd1cmUganVzdCB3aGF0IHBhcmFtZXRlcnMgdGhlc2UgcGFydHMgY291bGQgYmUuIFJlbWVtYmVyIHRoYXQgd2UgaGFkIHRoZSBmb2xsb3dpbmcgcm91dGVzIHJlZ2lzdGVyZWQ6PC9wPgoJCTxwcmUgY2xhc3M9ImNvZGUiPgojMQkkdGhpcy0+UmVnaXN0ZXJSb3V0ZSgiL1tuTl1hbWVvZm1vZHVsZVwvKFtEZF1ldGFpbClcLyg/UDxhbGlhcz5bXlwvXSspXC8oP1A8cmV0dXJuaWQ+WzAtOV0rKSQvIik7CiMyCSR0aGlzLT5SZWdpc3RlclJvdXRlKCIvW25OXWFtZW9mbW9kdWxlXC8oP1A8d2hhdD5bXlwvXSspXC8oP1A8cmV0dXJuaWQ+WzAtOV0rKSQvIik7CiMzCSR0aGlzLT5SZWdpc3RlclJvdXRlKCIvW25OXWFtZW9mbW9kdWxlXC8oP1A8d2hhdD5bXlwvXSspXC8oP1A8cGFyZW50PlteXC9dKylcLyg/UDxyZXR1cm5pZD5bMC05XSspJC8iKTsKIzQJJHRoaXMtPlJlZ2lzdGVyUm91dGUoIi9bbk5dYW1lb2Ztb2R1bGVcLyg/UDx3aGF0PlteXC9dKylcLyg/UDxwYWdlaW5kZXg+WzAtOV0rKVwvKD9QPG5icGVycGFnZT5bMC05XSspXC8oP1A8cmV0dXJuaWQ+WzAtOV0rKSQvIik7CiM1CSR0aGlzLT5SZWdpc3RlclJvdXRlKCIvW25OXWFtZW9mbW9kdWxlXC8oP1A8d2hhdD5bXlwvXSspXC8oP1A8cGFyZW50PlteXC9dKylcLyg/UDxwYWdlaW5kZXg+WzAtOV0rKVwvKD9QPG5icGVycGFnZT5bMC05XSspXC8oP1A8cmV0dXJuaWQ+WzAtOV0rKSQvIik7PC9wcmU+CgkJPHA+Um91dGUgIzEgaXMgaGFuZGxlZCBieSB0aGUgbGluZXMgNDEtNDMuIE90aGVyd2lzZSwgaXQgd2lsbCBkZXBlbmQgb24gdGhlIG51bWJlciBvZiBwYXJhbWV0ZXJzLiBJZiB0aGVyZSBhcmUgNiwgd2Uga25vdyB3ZSdyZSB1c2luZyByb3V0ZSAjNSA6ICRwYXJhbXNbMF0gaXMgdGhlIG5hbWUgb2YgdGhlIG1vZHVsZSwgJHBhcmFtc1sxXSB0aGUgbmFtZSBvZiB0aGUgbGV2ZWwgKHdoYXQpLCAkcGFyYW1zWzJdIHRoZSBuYW1lIG9mIHRoZSBwYXJlbnQsICRwYXJhbXNbM10gdGhlIHBhZ2VpbmRleCwgYW5kIHNvIG9uLi4uPGJyLz4KCQlMaWtld2lzZSwgaWYgd2UgaGF2ZSA1IHBhcmFtcywgd2Uga25vdyB3ZSdyZSB1c2luZyByb3V0ZSAjNCwgYW5kIHdpdGggNCBwYXJhbXMsIHdlIGtub3cgd2UncmUgdXNpbmcgcm91dGUgIzMuIElmIHdlIHdlcmUgdXNpbmcgcm91dGUgIzIsIHRoZXJlIHdvdWxkbid0IGJlIGFueXRoaW5nIHRvIHJldHJpZXZlIGFueXdheS48YnIvPgoJCUlmIHRoZSBtb2R1bGUgYWN0aW9uIGlzIGEgcXVlcnkgKGxpbmVzIDM5LTQwKSwgd2UgZG9uJ3QgcmV0cmlldmUgYW55dGhpbmcuLi48L3A+CgkJPHA+U28gYmFzaWNhbGx5LCBpZiB5b3UgY2hhbmdlIHRoZSByb3V0ZXMsIHlvdSd2ZSBnb3QgdG8gY2hhbmdlIGxpbmVzIDM3IHRvIDU5LjwvcD4KCQk8cD48Yj5DYXNlIDM6IGludGVybmFsIHByZXR0eSB1cmxzIHdpdGggc3RhbmRhcmQgbW9kX3Jld3JpdGU8L2I+PGJyLz4JCQoJCUluIHRoaXMgY2FzZSwgdGhlIHBhdGggdGhhdCdzIGFmdGVyICJpbmRleC5waHAvIiBpbiBjYXNlIDIgaXMgc2ltcGx5IHBhc3NlZCB0aHJvdWdoIHRoZSAicGFnZSIgR0VUIHBhcmFtZXRlci4gU28gb25jZSB3ZSd2ZSByZXRyaWV2ZWQgaXQsIHRoZSB0YXNrIGlzIGp1c3QgbGlrZSBjYXNlIDIuPC9wPgoJCTwvZGl2PgoJCTxhIGNsYXNzPSJiYWNrdG90b3AiIGhyZWY9IiN0b3AiPkJhY2sgdG8gdG9wPC9hPgoJPC9kaXY+CQkKCQkKPC9kaXY+CjxwIGFsaWduPSJyaWdodCI+UGllcnJlLUx1YyBHZXJtYWluPC9wPgo8L2JvZHk+CjwvaHRtbD4K]]></data>
	</file>
	<file>
	  <filename>/function.createFieldForm.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Cjw/cGhwCgkJJGNvbXBhcmVjaG9pY2VzID0gYXJyYXkoJHRoaXMtPkxhbmcoImNvbnRhaW5zIikgPT4xLCAkdGhpcy0+TGFuZygiaXNleGFjdGx5IikgPT4wLCAkdGhpcy0+TGFuZygiaXNub3QiKSA9PjIsICR0aGlzLT5MYW5nKCJpc2hpZ2hlcnRoYW4iKSA9PjMsICR0aGlzLT5MYW5nKCJpc2xvd2VydGhhbiIpID0+NCk7CgkJJGRhdGVjb21wYXJlY2hvaWNlcyA9IGFycmF5KCR0aGlzLT5MYW5nKCJxdWVyeXVzZSIpID0+ICJOQSIsICR0aGlzLT5MYW5nKCJpc2FmdGVyIikgPT4zLCAkdGhpcy0+TGFuZygiaXNiZWZvcmUiKSA9PjQsICR0aGlzLT5MYW5nKCJpc2JldHdlZW4iKSA9PjUpOwoJCSRvcmRlcmNob2ljZXMgPSBhcnJheSgiQVNDIj0+IkFTQyIsIkRFU0MiPT4iREVTQyIpOwoKCQkkb3V0cHV0ID0gYXJyYXkoKTsKCgkJc3dpdGNoKCR3aGF0KXsKCQkJY2FzZSAicGxheWVyIjoKCQkJCSRvdXRwdXRbImxvY2F0aW9uIl0gPSBhcnJheSgkdGhpcy0+TGFuZygicGxheWVyX2xvY2F0aW9uIiksICR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwiY29tcGFyZV9sb2NhdGlvbiIsJGNvbXBhcmVjaG9pY2VzLC0xLDEpLiIgIi4kdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwiZmllbGRfbG9jYXRpb24iLCIiLDMwKSk7CgkJCQkkb3V0cHV0WyJ3aWR0aCJdID0gYXJyYXkoJHRoaXMtPkxhbmcoInBsYXllcl93aWR0aCIpLCAkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsImNvbXBhcmVfd2lkdGgiLCRjb21wYXJlY2hvaWNlcywtMSwxKS4iICIuJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsImZpZWxkX3dpZHRoIiwiIiwzMCkpOwoJCQkJJG91dHB1dFsiaGVpZ2h0Il0gPSBhcnJheSgkdGhpcy0+TGFuZygicGxheWVyX2hlaWdodCIpLCAkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsImNvbXBhcmVfaGVpZ2h0IiwkY29tcGFyZWNob2ljZXMsLTEsMSkuIiAiLiR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCJmaWVsZF9oZWlnaHQiLCIiLDMwKSk7CgkJCQkkb3V0cHV0WyJwYXJhbWV0ZXJzIl0gPSBhcnJheSgkdGhpcy0+TGFuZygicGxheWVyX3BhcmFtZXRlcnMiKSwgJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCJjb21wYXJlX3BhcmFtZXRlcnMiLCRjb21wYXJlY2hvaWNlcywtMSwxKS4iICIuJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsImZpZWxkX3BhcmFtZXRlcnMiLCIiLDMwKSk7CgkJCQkkdG1wb3B0aW9ucyA9ICR0aGlzLT5nZXRfZmllbGRvcHRpb25zKCJwbGF5ZXJfdXNlcmRlZmluZWQxIik7CgkJCQkkdG1wb3B0aW9uc1siIl0gPSAiIjsKCQkJCSRvdXRwdXRbInVzZXJkZWZpbmVkMSJdID0gYXJyYXkoJHRoaXMtPkxhbmcoInBsYXllcl91c2VyZGVmaW5lZDEiKSwkdGhpcy0+Q3JlYXRlSW5wdXRTZWxlY3RMaXN0KCRpZCwiZmllbGRfdXNlcmRlZmluZWQxW10iLCR0bXBvcHRpb25zKSk7CgkJCQkkdG1wb3B0aW9ucyA9ICR0aGlzLT5nZXRfcHJlZGVmaW5lZG9wdGlvbnMoInBsYXllcl9wbGF5ZXJ0eXBlIik7CgkJCQkkdG1wb3B0aW9uc1siIl0gPSAiIjsKCQkJCSRvdXRwdXRbInBsYXllcnR5cGUiXSA9IGFycmF5KCR0aGlzLT5MYW5nKCJwbGF5ZXJfcGxheWVydHlwZSIpLCR0aGlzLT5DcmVhdGVJbnB1dFNlbGVjdExpc3QoJGlkLCJmaWVsZF9wbGF5ZXJ0eXBlW10iLCR0bXBvcHRpb25zKSk7CgkJCQkkb3V0cHV0WyJuYW1lIl0gPSBhcnJheSgkdGhpcy0+TGFuZygibmFtZSIpLCAkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsImNvbXBhcmVfbmFtZSIsJGNvbXBhcmVjaG9pY2VzLC0xLDEpLiIgIi4kdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwiZmllbGRfbmFtZSIsIiIsMzApKTsKCQkJCQoJCQkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJ0bXB0aW1lIiwgdGltZSgpKTsKCQkJCSR0aGlzLT5zbWFydHktPmFzc2lnbigic19hbmQiLCAkdGhpcy0+TGFuZygidGhpc2FuZHRoaXMiKSk7CgkJCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oInRtcF9wcmVmaXgiLCAkaWQuImRhdGVfZGF0ZV9tb2RpZmllZF8iKTsKCQkJCSR0aGlzLT5zbWFydHktPmFzc2lnbigidG1wX3ByZWZpeDIiLCAkaWQuImRhdGVfZGF0ZV9tb2RpZmllZF9wYXJ0Ml8iKTsKCQkJCSR0bXB0ZW1wbGF0ZSA9ICd7aHRtbF9zZWxlY3RfZGF0ZSBwcmVmaXg9JHRtcF9wcmVmaXggdGltZT0kdG1wdGltZSBzdGFydF95ZWFyPSItMTAiIGVuZF95ZWFyPSIrMTAifSB7aHRtbF9zZWxlY3RfdGltZSBwcmVmaXg9JHRtcF9wcmVmaXggdGltZT0kdG1wdGltZSB9PGRpdiBpZD0iJy4kaWQuJ2RhdGVfbW9kaWZpZWRfcGFydDIiIHN0eWxlPSJkaXNwbGF5OiBub25lOyI+IHskc19hbmR9IHtodG1sX3NlbGVjdF9kYXRlIHByZWZpeD0kdG1wX3ByZWZpeDIgdGltZT0kdG1wdGltZSBzdGFydF95ZWFyPSItMTAiIGVuZF95ZWFyPSIrMTAifSB7aHRtbF9zZWxlY3RfdGltZSBwcmVmaXg9JHRtcF9wcmVmaXgyIHRpbWU9JHRtcHRpbWUgfTwvZGl2Pic7CgkJCQkkdG1wb3V0ID0gJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCJjb21wYXJlX2RhdGVfbW9kaWZpZWQiLCRkYXRlY29tcGFyZWNob2ljZXMsLTEsIk5BIiwiIG9uY2hhbmdlPVwiZGF0ZWlucHV0X2NoYW5nZWNvbXBhcmUoJyIuJGlkLiJkYXRlX21vZGlmaWVkJywgdGhpcy52YWx1ZSk7XCIiKS4iICIuJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZUZyb21EYXRhKCR0bXB0ZW1wbGF0ZSk7CgkJCQkkdG1wb3V0IC49ICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsImZpZWxkX2RhdGVfbW9kaWZpZWQiLCAiX19kYXRlX2ZpZWxkIik7CgkJCQkkb3V0cHV0WyJkYXRlX21vZGlmaWVkIl0gPSBhcnJheSgkdGhpcy0+TGFuZygiZGF0ZV9tb2RpZmllZCIpLCAkdG1wb3V0KTsKCQkJCSRvcmRlcmZpZWxkb3B0aW9ucyA9IGFycmF5KCIiPT4iIiwibG9jYXRpb24iPT4ibG9jYXRpb24iLCJ3aWR0aCI9PiJ3aWR0aCIsImhlaWdodCI9PiJoZWlnaHQiLCJwYXJhbWV0ZXJzIj0+InBhcmFtZXRlcnMiLCJ1c2VyZGVmaW5lZDEiPT4idXNlcmRlZmluZWQxIiwicGxheWVydHlwZSI9PiJwbGF5ZXJ0eXBlIiwiaWQiPT4iaWQiLCJuYW1lIj0+Im5hbWUiLCJhbGlhcyI9PiJhbGlhcyIsIml0ZW1fb3JkZXIiPT4iaXRlbV9vcmRlciIsImRhdGVfbW9kaWZpZWQiPT4iZGF0ZV9tb2RpZmllZCIpOwoJCQkJJG91dHB1dFsib3JkZXJieSJdID0gYXJyYXkoJHRoaXMtPkxhbmcoIm9yZGVyYnlmaWVsZCIpLCAkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsIm9yZGVyIiwkb3JkZXJmaWVsZG9wdGlvbnMpLiIgIi4kdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsIm9yZGVyX3R5cGUiLCRvcmRlcmNob2ljZXMpKTsKCQkJCWJyZWFrOwoJCQljYXNlICJtZWRpYWZpbGUiOgoJCQkJJHRtcG9wdGlvbnMgPSAkdGhpcy0+Z2V0X2ZpZWxkb3B0aW9ucygibWVkaWFmaWxlX3VzZXJkZWZpbmVkMiIpOwoJCQkJJHRtcG9wdGlvbnNbIiJdID0gIiI7CgkJCQkkb3V0cHV0WyJ1c2VyZGVmaW5lZDIiXSA9IGFycmF5KCR0aGlzLT5MYW5nKCJtZWRpYWZpbGVfdXNlcmRlZmluZWQyIiksJHRoaXMtPkNyZWF0ZUlucHV0U2VsZWN0TGlzdCgkaWQsImZpZWxkX3VzZXJkZWZpbmVkMltdIiwkdG1wb3B0aW9ucykpOwoJCQkJJG91dHB1dFsicGFyZW50Il0gPSBhcnJheSgkdGhpcy0+TGFuZygicGFyZW50IikpOwoJCQkJJHBhcmVudG9wdGlvbnMgPSAkdGhpcy0+Z2V0X2hpZXJhcmNoeW9wdGlvbnMoIm1lZGlhZmlsZSIpOwoJCQkJJG91dHB1dFsicGFyZW50Il1bXSA9ICR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwiZmllbGRfcGFyZW50IiwkcGFyZW50b3B0aW9ucyk7CgkJCQkkb3V0cHV0WyJuYW1lIl0gPSBhcnJheSgkdGhpcy0+TGFuZygibmFtZSIpLCAkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsImNvbXBhcmVfbmFtZSIsJGNvbXBhcmVjaG9pY2VzLC0xLDEpLiIgIi4kdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwiZmllbGRfbmFtZSIsIiIsMzApKTsKCQkJCQoJCQkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJ0bXB0aW1lIiwgdGltZSgpKTsKCQkJCSR0aGlzLT5zbWFydHktPmFzc2lnbigic19hbmQiLCAkdGhpcy0+TGFuZygidGhpc2FuZHRoaXMiKSk7CgkJCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oInRtcF9wcmVmaXgiLCAkaWQuImRhdGVfZGF0ZV9tb2RpZmllZF8iKTsKCQkJCSR0aGlzLT5zbWFydHktPmFzc2lnbigidG1wX3ByZWZpeDIiLCAkaWQuImRhdGVfZGF0ZV9tb2RpZmllZF9wYXJ0Ml8iKTsKCQkJCSR0bXB0ZW1wbGF0ZSA9ICd7aHRtbF9zZWxlY3RfZGF0ZSBwcmVmaXg9JHRtcF9wcmVmaXggdGltZT0kdG1wdGltZSBzdGFydF95ZWFyPSItMTAiIGVuZF95ZWFyPSIrMTAifSB7aHRtbF9zZWxlY3RfdGltZSBwcmVmaXg9JHRtcF9wcmVmaXggdGltZT0kdG1wdGltZSB9PGRpdiBpZD0iJy4kaWQuJ2RhdGVfbW9kaWZpZWRfcGFydDIiIHN0eWxlPSJkaXNwbGF5OiBub25lOyI+IHskc19hbmR9IHtodG1sX3NlbGVjdF9kYXRlIHByZWZpeD0kdG1wX3ByZWZpeDIgdGltZT0kdG1wdGltZSBzdGFydF95ZWFyPSItMTAiIGVuZF95ZWFyPSIrMTAifSB7aHRtbF9zZWxlY3RfdGltZSBwcmVmaXg9JHRtcF9wcmVmaXgyIHRpbWU9JHRtcHRpbWUgfTwvZGl2Pic7CgkJCQkkdG1wb3V0ID0gJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCJjb21wYXJlX2RhdGVfbW9kaWZpZWQiLCRkYXRlY29tcGFyZWNob2ljZXMsLTEsIk5BIiwiIG9uY2hhbmdlPVwiZGF0ZWlucHV0X2NoYW5nZWNvbXBhcmUoJyIuJGlkLiJkYXRlX21vZGlmaWVkJywgdGhpcy52YWx1ZSk7XCIiKS4iICIuJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZUZyb21EYXRhKCR0bXB0ZW1wbGF0ZSk7CgkJCQkkdG1wb3V0IC49ICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsImZpZWxkX2RhdGVfbW9kaWZpZWQiLCAiX19kYXRlX2ZpZWxkIik7CgkJCQkkb3V0cHV0WyJkYXRlX21vZGlmaWVkIl0gPSBhcnJheSgkdGhpcy0+TGFuZygiZGF0ZV9tb2RpZmllZCIpLCAkdG1wb3V0KTsKCQkJCSRvcmRlcmZpZWxkb3B0aW9ucyA9IGFycmF5KCIiPT4iIiwidXNlcmRlZmluZWQyIj0+InVzZXJkZWZpbmVkMiIsInBhcmVudCI9PiJwYXJlbnQiLCJpZCI9PiJpZCIsIm5hbWUiPT4ibmFtZSIsImFsaWFzIj0+ImFsaWFzIiwiaXRlbV9vcmRlciI9PiJpdGVtX29yZGVyIiwiZGF0ZV9tb2RpZmllZCI9PiJkYXRlX21vZGlmaWVkIik7CgkJCQkkb3V0cHV0WyJvcmRlcmJ5Il0gPSBhcnJheSgkdGhpcy0+TGFuZygib3JkZXJieWZpZWxkIiksICR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwib3JkZXIiLCRvcmRlcmZpZWxkb3B0aW9ucykuIiAiLiR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwib3JkZXJfdHlwZSIsJG9yZGVyY2hvaWNlcykpOwoJCQkJYnJlYWs7CgkJCQoJCX0KCQllY2hvICc8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CglmdW5jdGlvbiBkYXRlaW5wdXRfY2hhbmdlY29tcGFyZShmaWVsZG5hbWUsIG5ld3ZhbHVlKXsKCQlpZihuZXd2YWx1ZSA9PSA1KXsKCQkJdmFyIG5ld3N0YXRlID0gImlubGluZSI7CgkJfWVsc2V7CgkJCXZhciBuZXdzdGF0ZSA9ICJub25lIjsKCQl9CgkJaWYoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZmllbGRuYW1lKyJfcGFydDIiKSkJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZmllbGRuYW1lKyJfcGFydDIiKS5zdHlsZS5kaXNwbGF5ID0gbmV3c3RhdGU7CgkJcmV0dXJuIHRydWU7Cgl9Cjwvc2NyaXB0PgonOwoJCWlmKCRhc3NpZ24pewoJCQlmb3JlYWNoKCRvdXRwdXQgYXMgJGtleT0+JHZhbHVlKXsKCQkJCSR0aGlzLT5zbWFydHktPmFzc2lnbigka2V5LiJfbGFiZWwiLCAkdmFsdWVbMF0pOwoJCQkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCRrZXkuIl9pbnB1dCIsICR2YWx1ZVsxXSk7CgkJCX0KCQl9ZWxzZXsKCQkJZWNobyAiPHRhYmxlIHN0eWxlPVwiYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCBMaWdodEdyYXk7IHBhZGRpbmctbGVmdDogMTBweDtcIj4iOwoJCQlmb3JlYWNoKCRvdXRwdXQgYXMgJGtleT0+JHZhbHVlKXsKCQkJCWlmKCRrZXkgIT0gIm9yZGVyYnkiKQllY2hvICIKCQkJCTx0cj48dGQ+Ii4kdmFsdWVbMF0uIjwvdGQ+PHRkPiIuJHZhbHVlWzFdLiI8L3RkPjwvdHI+IjsKCQkJfQoJCQkJZWNobyAiCgkJCTwvdGFibGU+PGJyLz4iOwoJCQllY2hvICI8cD4iLiRvdXRwdXRbIm9yZGVyYnkiXVswXS4iOiAiLiRvdXRwdXRbIm9yZGVyYnkiXVsxXS4iPC9wPiI7CgkJfQo/Pg==]]></data>
	</file>
	<file>
	  <filename>/function.feadd_permcheck.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyogVGhpcyBmdW5jdGlvbiB3aWxsIGRldGVybWluZSB3aGV0aGVyIG9yIG5vdCB0aGUgZnJvbnRlbmQgdXNlciBoYXMgYWNjZXNzIHRvIHRoZSBlZGl0aW9uCiAqIAogKiBUaGUgYWNjZXNzaWJsZSB2YXJpYWJsZXMgYXJlIDoKICogCQkkZ0NtcyAodGhlIGdsb2JhbCBjbXMgb2JqZWN0LCB0aHJvdWdoIHdoaWNoIHdlIHdpbGwgYmUgYWJsZSB0byBjYWxsIHRoZSBGRVUgbW9kdWxlKQogKgkJJHdoYXQgKHRoZSBsZXZlbCBvZiB0aGUgaXRlbSB3ZSBhcmUgYXR0ZW1wdGluZyB0byBlZGl0LCBhcyBnaXZlbiBieSB0aGUgIndoYXQiIHBhcmFtZXRlcikKICoJCSRhbGlhcyAodGhlIGFsaWFzIG9mIHRoZSBpdGVtIHdlIGFyZSBhdHRlbXB0aW5nIHRvIGVkaXQuIElmIGl0IGlzIGEgbmV3IGl0ZW0sICRhbGlhcyBzaG91bGQgYmUgZmFsc2UpCiAqIAogKiBUaGUgJHJldHVybiB2YXJpYWJsZSwgd2hpY2ggc3RhcnRzIG91dCB0cnVlLCBzaG91bGQgYmUgc2V0IHRvIHRydWUgdG8gZ2l2ZSBwZXJtaXNzaW9uIGFuZCB0byBmYWxzZSB0byBkZW55IGl0LgogKiAKICogWW91IHNob3VsZCBiZWdpbiBieSBjaGVja2luZyB3aGV0aGVyIHRoZSBGRVUgbW9kdWxlIGlzIHByZXNlbnQgYW5kIHdvcmtpbmcuIFRoZSBmb2xsb3dpbmcgY29kZToKICogJEZFVSA9ICR0aGlzLT5HZXRNb2R1bGVJbnN0YW5jZSgnRnJvbnRFbmRVc2VycycpOwogKiB3aWxsIG1ha2UgJEZFVSB0aGUgbW9kdWxlIG9iamVjdCBmb3IgdGhlIEZFVSBtb2R1bGUgaWYgaXQgaXMgcHJlc2VudCwgYW5kIHdpbGwgc2V0ICRGRVUgdG8gZmFsc2U7CiAqIAogKiBJbXBvcnRhbnQgRkVVIGZ1bmN0aW9ucyAocHJvdmlkZWQgdGhhdCAkRkVVIGlzIG5vdCBmYWxzZSkgYXJlIDoKICogICRGRVUtPkxvZ2dlZEluKCkgd2lsbCByZXR1cm4gdHJ1ZSBpZiB0aGUgdXNlciBpcyBsb2dnZWQgaW4sIGFuZCBmYWxzZSBvdGhlcndpc2UuCiAqCSRGRVUtPkxvZ2dlZEluSWQoKQkJcmV0dXJucyB0aGUgaWQgb2YgdGhlIHVzZXIKICoJJEZFVS0+TG9nZ2VkSW5OYW1lKCkJCXJldHVybnMgdGhlIHVzZXJuYW1lIG9mIHRoZSB1c2VyCiAqICAkRkVVLT5NZW1iZXJPZkdyb3VwKCR1c2VyaWQsJGdyb3VwaWQpCQlyZXR1cm5zIHRydWUgaWYgdGhlIHVzZXIgaXMgYSBtZW1iZXIgb2YgdGhlIGdyb3VwLCBmYWxzZSBvdGhlcndpc2UKICogCSRGRVUtPkdldEdyb3VwSUQoJGdyb3VwbmFtZSkJcmV0dXJucyB0aGUgZ3JvdXAgaWQgYXNzb2NpYXRlZCB0byBhIGdyb3VwIG5hbWUKICogCiAqLyAKPz4K]]></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[R0lGODlhQABAAOf/AAABAAIABQADDwAECAAIJAQJGAcKBgIMHwMNLAANOwAFkgAPNwwQEwARMw8RDgAQRw0JegATTBcZFwcaTwEdUAscPxwbHgQeXhIfMh4fHQAiaQoaoQAhiAEjdwAjfAAjhA4mWSUmJCclKQApeCUmLRcoZCIqQAEskRYtUAAuiissLBEwdws0bTIyNTIzMRQwrQc7hSU3YQA+lhM8fBg8cDY4Qzk4Ozg6NwA/rBY/kzA+Xj89QCdBbD4+TDtAQhFFlCxBeCZBikFCPwBKsSZDuzRHbRFKwEZIS0dJRjtNawRYv0tPUlFOUjVRiE5QTU1PYDFSmylWiw9ctVJSWyZVy0hWhFhWWVZXVQBg/1NYWlhWaD1bjCpbzD9dmF1aaVleYFxccV1eW19dYV5faAFs/xll/yRm1lFigU1jkABx/19kckVjyV5kemRmY2RnajdwpVBpomhpcjNv2B914z9ytWttagZ8/2tsgW9tcTB24WdviGFxjl9yll1yoXFye3BygVh2rXV0dzt73nV2cyeB/kJ/zieF7Ex/vHl6d3x7f3h9fyiJ/zyG6Xp9liON/3yAjm+Dq0WK54GCi2WGwC6T/4aFiGmF4YWHhFmNzUmQ7TGX/0CU9oaMpkWZ9YqOnI2Ol4+OkkCe/5CSj1Gb8XSU45CSp4mVsZSVnpeVmU+i+Eal/06k82Gi5lui/ZmbmHyf1Fan/Zydpp+doZGfvE6t/5efs3Gm+W2q9p+js2et/lyx/6Smo6emqqansWO3/5es06urqW21/6ystq+tsXq5/rKvwHC9/4628quzxYu3/LW1v7i1ura4tX/B/4fG/r68wLm+wb2/y8HBvsPAxZnH/5TM/6rH+KfJ/8bIxcXH0srIzKbQ/8HR5NHP09DQ283S1dLT0K7b/7zY/dLX2tHX59rY3NjZ47/f/eTe3eDf497f6c/k/8To/+Pl4uPk7tzm9Ofk6efp5uvo7d3s/+nq9O/s8eTy/+/w+vPx9fH08O32/vf1+fz5/vf9//7//P///yH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEKAP8ALAAAAABAAEAAAAj+AP8JHEiwoMGDCBMqXMiwocOHECNKnEixosWLGDNiVJEBgMaPBzO0G9cCAMiT/wYA87fPmxgAKDUCYFIJlTdyYgDExAjARqIvSLLsAABgp0UAPkCFcYIkA1GjFkPEwycriwqiUCs6wOavnrtYA4hmnQggUb996rK1IDpWIoAjiQLx8saEaNuIAEQkcuMEiQ2iCh2EAKDwxIkUJ1XwquMEiQqiCQGowNZOAoCDJ3J0gXIixUcH4PxpC+TCAFGEAL7k8+ePlwGDKYI0QiULzokRGQGI8ofPnTcRRBECsPIsHT9++3YAKJhCj6RPsnr9+IDgIgAf+Pi5MxdnAACEDAL+CQM1CFQ3VCIAEEzRx8+jT7GWQfpw4aKFRINkefs0AMBBAEJMs4widYThggigLMMAAAJ5MIknfkjySSzDKBNEBxYNgAceVyDBBANEGSTBJfn4U88wX4RwwzL4+AMKAP94AAg3avwhySexCCMNIB80QJEBoChyhRM3GEBUQQC0MA1r+/AjjxhilINPPfj0E0YCUOiDixeVyBJLLMJMM0sKE0wEgCj+lFPJEQ4QVRAAYggjiyvd7DONFaDUg089fPpjygfH9PMHHqIAw0wvvTwTDQwXSARAG/7s4w45TBBFEAAhgMILKIOE4UQWYjyDD5987oPMCHPYQ84Yg4iyCzP+ywjzjDZddCCRCNrsQw85khBFEABXtOMPNHVcIUQGeKSDD6n17JPNClxU4080YiAiyi7MYDOMMuBA0sEBEDEQiBuJKBPLAAAQZIAorO3DTzc+qMALPvjwyec+6gBhhC7n+IPLFYiIsgsz2DyjDDimdIDAQwCIEUgYSNzAAFECASDCJ8+Uww8/5eCRSDn42MsnPvVUgQMtzazTzyNXICLKLsxgo80y3SAzwgIOAQAKL1kgIYQDRAkEABO9yKKIG6DIYoUs9IpcDz778JFCK804Y489cVyBiCi7MIPNN89ok80KCTQEQB3+7COMGBIQ9Q8AEuwijyx1tIGEBExog4/+03zyw0kHmxjTTDD6vJNFGIiIsgsz2IAzjTbdzDABQwAg4c8+7rjjB1H/AIAEOKzJw4sQGVQiDz5818OPMBoYYkwzsDiiDzlHhIGIKLswgw042mjTTRMTMMQAKunQo84pBhA1gBjl+MMPPvzwcsQy+6Rezz7ZlCCHL8boQgYl/URzRBiIiLILM9iA03s5W0SwEABiBNJGL9mIQNQAeCgDCi/w7IOKD93Ah/XwUY8iDEEXvvAFIbDQCn8gwwdZQIQodsEMbICjG9ooBxoioBAA7CARYXCCEERAlBCAgheVGEQYsiAGPJQDHyKj1z74sQ953EEGqkjgIshQBlv4Axf+NehBDfAADGZgAxzf0EY5+PCAhABgCcNogxOQkAGihCEe/RhGHa7gghCgoh74qAc+9sGPfcijHMrwxBliAINQ+CIYlEiDHciQDH/U4gl30IIFKiENbICjG9pABx8ekBAX5MMf0wiECgDgAFewZmPTaMERtLGPetArHc/whB6KwIIZ5EAJc8iFL3ShCTsQghB2oEY/aqEFZcgjDi1gBjbA0Q1toIMPD0AIAFzQjX24oxcGEMEptBGPjZUDD4mABz7qgY90sCEGM/iBFASxiVDQgha+aIYuQrEIR3jTEdfoRyn+4I16dMMCosAGOMahDXTw4QEJAYADYpENETChF7L+UEQdZCELK/ACH/bihyd+sIpgNMMZzfCFLmihCl3oQhOUoIQmJkqJbejDFHcoRjbSsQM3gAMc49AGOviQAIUAYAAtAEY6UFGHNiBBAl/oBj5Etg89FIId4mhGMGDRilCEYhOwgIUmNuHTom7DHqYAQymK4Q0rLOGj49AGOvaQAIYYQBr+SAcqbiACUNQDH07bhx4wwY5mFDUUqkgrLWARilak9a3bsIcpwNCIUmTDCkj46Di0gY49JKAhGUiHP3ixhGfsw2l82scfMMEOYrw1qEGlBSzSCllYqGIb9jAFGPTAiWgwwQkfHYc2ynGGBTQEAEsIxAAC4Q/E8okfjzj+xDmMAYtr2va2uKVFNeZhCjDogRPFsEEdPjoObZTjDA04yEGIAgADPKMfrt3HKd4QDmPk9rq2rcY8ZuGFOzSiFBZwBTbA0Q1tlCMJCFCuegEggnjsA7H4GEYUwtGM66aCFrrIrTPWMQsv3KERT3ABM7ABjm5ooxs6IIB61QuAL/ADH/aShzzq0Q0eOKMZtAiqhmHRiVHYVsOpIMY6fuGFO4DBApeABjbA0Q1tdAMFB1iwegGACn/UQ8I4hkcSWOGMUaRiFJ0IciciEYlUGNnIo+jELc7xix7UgARtAAYzsAGO3kWjAgWQsXozAI994Bge8MCHGujgjFFk4syZILL+IAQh5E6geRTi+IUNbFAHV+yCGdgAR++E0YABaFm5ABADP+oBZni4ox6ooEEzRrHmRudBDlxgRCQYQWlGCCIS1rDGEsKACFHsghnYAMc0uuEJBAzgz8oFACr6AQ93wCNz5TBBIUZhBi7Ymgq4JoIZ8iAIOfja18m4hhrCgAhR7IIZ2PjGM7rxBwIMANXKZYA29gFmdaiDHpVAAAgmwO0JUODbIADBEKhgay5QwQik2IYeroAIUeyCGdjQxjO68YQCQFu5ALBBPeRh7X5XIgx4wEMgElGJSsgCGEIQgAaIQIQXOHwN24DEFRAhil0wAxvTeMY0TCCAeysXAHjgh7X+zUFydXjj5CinRzeYQJQBNCAFL9iAAjaQjFd8ARGi2AUzsLGMZ/TiAAHwuHIBwIt9kPzoSFfHPYYhAqIIZAACoAAHFKAASxxDDYMQxS6YAQ1hTMMPBRiA0JVrgXLQA+nm8IY56AGPQBiAKAUZwAEuAAEiJIMPgxAFL5gxDGE8owcCGLtyAXAEfKjj6N4wxz2G0QLmHiQAA0CABmwxCTyIAhjDiIUwYnGAAQheuQBIxD7McXJ3wCMQBiCKjAcwgCbYQg+JQMUnYqGMMQQAAKjOvQGWcQ9z3EMbO2AuqgcQhUn44RGf6MUpCjCA3DtfBOnYByoYQBTn/wMAGFCDJ041EYsaBAAA1kc1AJggBuaG/x8AYMAU4tAC1p8f1cx9/0AAMACiyP/++M+//vfP//77//8LFhAAOw==]]></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[PD9waHANCgkkbGFuZ1siZnJpZW5kbHluYW1lIl0gPSAiQVZQbGF5ZXIiOw0KCSRsYW5nWyJtb2RkZXNjcmlwdGlvbiJdID0gIlBsYXllciBmcm9udCBlbmQiOw0KCSRsYW5nWyJhZG1pbmRlc2NyaXB0aW9uIl0gPSAiUGxheWVyIGZyb250IGVuZCI7DQoNCgkkbGFuZ1sicGFnZW1lbnVkZWxpbWl0ZXIiXSA9ICImbmJzcDsmIzEyNDsmbmJzcDsiOw0KCSRsYW5nWyJwYWdlbWVudW92ZXJmbG93Il0gPSAiJm5ic3A7Li4uJm5ic3A7IjsNCgkNCi8vIHN0cmluZ3MgZm9yIHBsYXllcg0KCSRsYW5nWyJwbGF5ZXIiXSA9ICJQbGF5ZXIiOw0KCSRsYW5nWyJwbGF5ZXJfcGx1cmFsIl0gPSAiUGxheWVyIjsNCgkkbGFuZ1siYWRkX3BsYXllciJdID0gIkFkZCBQbGF5ZXIiOw0KCSRsYW5nWyJlZGl0X3BsYXllciJdID0gIkVkaXQgUGxheWVyIjsNCgkkbGFuZ1siZmlsdGVyYnlfcGxheWVyIl0gPSAiRmlsdGVyIGJ5IFBsYXllciI7DQoJJGxhbmdbInBsYXllcl9sb2NhdGlvbiJdID0gIkxvY2F0aW9uIjsNCgkkbGFuZ1sicGxheWVyX3dpZHRoIl0gPSAiV2lkdGgiOw0KCSRsYW5nWyJwbGF5ZXJfaGVpZ2h0Il0gPSAiSGVpZ2h0IjsNCgkkbGFuZ1sicGxheWVyX3BhcmFtZXRlcnMiXSA9ICJQYXJhbWV0ZXJzIChzZXBhcmF0ZSB3aXRoICZhbXA7KSI7DQoJJGxhbmdbInBsYXllcl91c2VyZGVmaW5lZDEiXSA9ICJVc2VyRGVmaW5lZCAxIjsNCgkkbGFuZ1sicGxheWVyX3BsYXllcnR5cGUiXSA9ICJQbGF5ZXIgVHlwZSI7DQoJJGxhbmdbInBsYXllcl9wbGF5ZXJ0eXBlX29wdGlvbl8wIl0gPSAibXAzIjsNCgkkbGFuZ1sicGxheWVyX3BsYXllcnR5cGVfb3B0aW9uXzEiXSA9ICJmbHYiOw0KCSRsYW5nWyJwcm9tcHRfZGVsZXRlcGxheWVyIl0gPSAiWW91IGFyZSBhYm91dCB0byBkZWxldGUgdGhpcyBQbGF5ZXIgKCVzKT8gQWxsIGNoaWxkcmVuIHdpbGwgYmUgbG9zdC4gRG8geW91IHdpc2ggdG8gY29udGludWU/IjsNCgkNCi8vIHN0cmluZ3MgZm9yIG1lZGlhZmlsZQ0KCSRsYW5nWyJtZWRpYWZpbGUiXSA9ICJNZWRpYWZpbGUiOw0KCSRsYW5nWyJtZWRpYWZpbGVfcGx1cmFsIl0gPSAiTWVkaWEiOw0KCSRsYW5nWyJhZGRfbWVkaWFmaWxlIl0gPSAiQWRkIE1lZGlhZmlsZSI7DQoJJGxhbmdbImVkaXRfbWVkaWFmaWxlIl0gPSAiRWRpdCBNZWRpYWZpbGUiOw0KCSRsYW5nWyJmaWx0ZXJieV9tZWRpYWZpbGUiXSA9ICJGaWx0ZXIgYnkgTWVkaWFmaWxlIjsNCgkkbGFuZ1sibWVkaWFmaWxlX21lZGlhZmlsZSJdID0gIk1lZGlhZmlsZSI7DQoJJGxhbmdbIm1lZGlhZmlsZV9zZWxlY3RfbWVkaWFmaWxlIl0gPSAiU2VsZWN0IE1lZGlhZmlsZSI7DQoJJGxhbmdbIm1lZGlhZmlsZV9waWN0dXJlIl0gPSAiVGh1bWJuYWlsIjsNCgkkbGFuZ1sibWVkaWFmaWxlX3NlbGVjdF9waWN0dXJlIl0gPSAiU2VsZWN0IFRodW1ibmFpbCI7DQoJJGxhbmdbIm1lZGlhZmlsZV91c2VyZGVmaW5lZDIiXSA9ICJVc2VyRGVmaW5lZCAyIjsNCgkkbGFuZ1sicHJvbXB0X2RlbGV0ZW1lZGlhZmlsZSJdID0gIllvdSBhcmUgYWJvdXQgdG8gZGVsZXRlIHRoaXMgTWVkaWFmaWxlICglcyk/IERvIHlvdSB3aXNoIHRvIGNvbnRpbnVlPyI7DQoJJGxhbmdbInRlbXBsYXRlaGVscCJdID0gJzxkaXY+PGgzIHN0eWxlPSJjdXJzb3I6IHBvaW50ZXI7IiBvbmNsaWNrPSJjdGxtbV9kaXNwbGF5dG9nZ2xlKHRoaXMpOyI+Jmd0OyBTbWFydHkgdmFyaWFibGVzIGZvciBsaXN0IHRlbXBsYXRlIG9mOiBwbGF5ZXI8L2gzPjxkaXYgY2xhc3M9InRwbHZhcnNfaGlkZSI+PHVsPg0KCTxsaT4kbGV2ZWx0aXRsZTwvbGk+DQoJPGxpPiRwYXJlbnRvYmogKGlmIHBhcmVudCBpcyBzcGVjaWZpZWQpPC9saT4NCgk8bGk+JGl0ZW1saXN0IChhcnJheSBvZiBpdGVtcyk8L2xpPg0KCTxsaT4kaXRlbS0mZ3Q7aXNfc2VsZWN0ZWQ8L2xpPg0KCTxsaT4kaXRlbS0mZ3Q7bmJjaGlsZHJlbiAoaWYgbG9hZGVkKTwvbGk+DQoJPGxpPiRpdGVtLSZndDtuYW1lPC9saT4NCgk8bGk+JGl0ZW0tJmd0O2FsaWFzPC9saT4NCgk8bGk+JGl0ZW0tJmd0O2RldGFpbGxpbms8L2xpPg0KCTxsaT4kaXRlbS0mZ3Q7ZGV0YWlsdXJsPC9saT4NCgk8bGk+JGl0ZW0tJmd0O2xvY2F0aW9uPC9saT4NCgk8bGk+JGl0ZW0tJmd0O3dpZHRoPC9saT4NCgk8bGk+JGl0ZW0tJmd0O2hlaWdodDwvbGk+DQoJPGxpPiRpdGVtLSZndDtwYXJhbWV0ZXJzPC9saT4NCgk8bGk+JGl0ZW0tJmd0O3VzZXJkZWZpbmVkMTwvbGk+DQoJPGxpPiRpdGVtLSZndDt1c2VyZGVmaW5lZDFfbmFtZXZhbHVlPC9saT4NCgk8bGk+JGl0ZW0tJmd0O3BsYXllcnR5cGU8L2xpPg0KCTxsaT4kaXRlbS0mZ3Q7cGxheWVydHlwZV9uYW1ldmFsdWU8L2xpPg0KCTxsaT4kaXRlbS0mZ3Q7aXNkZWZhdWx0PC9saT4NCgk8bGk+JGl0ZW0tJmd0O2RhdGVfbW9kaWZpZWQ8L2xpPg0KCTxsaT4kaXRlbS0mZ3Q7ZGF0ZV9jcmVhdGVkPC9saT4NCgk8L3VsPjxici8+PGJyLz48L2Rpdj48L2Rpdj48ZGl2PjxoMyBzdHlsZT0iY3Vyc29yOiBwb2ludGVyOyIgb25jbGljaz0iY3RsbW1fZGlzcGxheXRvZ2dsZSh0aGlzKTsiPiZndDsgU21hcnR5IHZhcmlhYmxlcyBmb3IgbGlzdCB0ZW1wbGF0ZSBvZjogbWVkaWFmaWxlPC9oMz48ZGl2IGNsYXNzPSJ0cGx2YXJzX2hpZGUiPjx1bD4NCgk8bGk+JGxldmVsdGl0bGU8L2xpPg0KCTxsaT4kcGFyZW50b2JqIChpZiBwYXJlbnQgaXMgc3BlY2lmaWVkKTwvbGk+DQoJPGxpPiRpdGVtbGlzdCAoYXJyYXkgb2YgaXRlbXMpPC9saT4NCgk8bGk+JGl0ZW0tJmd0O2lzX3NlbGVjdGVkPC9saT4NCgk8bGk+JGl0ZW0tJmd0O25hbWU8L2xpPg0KCTxsaT4kaXRlbS0mZ3Q7YWxpYXM8L2xpPg0KCTxsaT4kaXRlbS0mZ3Q7ZGV0YWlsbGluazwvbGk+DQoJPGxpPiRpdGVtLSZndDtkZXRhaWx1cmw8L2xpPg0KCTxsaT4kaXRlbS0mZ3Q7bWVkaWFmaWxlIChmaWxlIG9iamVjdCk8L2xpPg0KCTxsaT4kaXRlbS0mZ3Q7cGljdHVyZSAoZmlsZSBvYmplY3QpPC9saT4NCgk8bGk+JGl0ZW0tJmd0O3VzZXJkZWZpbmVkMjwvbGk+DQoJPGxpPiRpdGVtLSZndDt1c2VyZGVmaW5lZDJfbmFtZXZhbHVlPC9saT4NCgk8bGk+JGl0ZW0tJmd0O3BhcmVudF9pZDwvbGk+DQoJPGxpPiRpdGVtLSZndDtwYXJlbnRfYWxpYXM8L2xpPg0KCTxsaT4kaXRlbS0mZ3Q7cGFyZW50X25hbWU8L2xpPg0KCTxsaT4kaXRlbS0mZ3Q7cGFyZW50bGluazwvbGk+DQoJPGxpPiR0aWVtLSZndDtwYXJlbnR1cmw8L2xpPg0KCTxsaT4kaXRlbS0mZ3Q7aXNkZWZhdWx0PC9saT4NCgk8bGk+JGl0ZW0tJmd0O2RhdGVfbW9kaWZpZWQ8L2xpPg0KCTxsaT4kaXRlbS0mZ3Q7ZGF0ZV9jcmVhdGVkPC9saT4NCgk8L3VsPjxici8+PGJyLz48L2Rpdj48L2Rpdj48ZGl2PjxoMyBzdHlsZT0iY3Vyc29yOiBwb2ludGVyOyIgb25jbGljaz0iY3RsbW1fZGlzcGxheXRvZ2dsZSh0aGlzKTsiPiZndDsgU21hcnR5IHZhcmlhYmxlcyBmb3IgdGhlIGRldGFpbCB0ZW1wbGF0ZTwvaDM+PGRpdiBjbGFzcz0idHBsdmFyc19oaWRlIj48dWw+DQoJPGxpPiRsZXZlbHRpdGxlPC9saT4NCgk8bGk+JHByZXZpb3VzX2l0ZW0gKGlmIGxvYWRlZCk8L2xpPg0KCTxsaT4kbmV4dF9pdGVtIChpZiBsb2FkZWQpPC9saT4NCgk8bGk+JGl0ZW0tJmd0O25hbWU8L2xpPg0KCTxsaT4kaXRlbS0mZ3Q7YWxpYXM8L2xpPg0KCTxsaT4kaXRlbS0mZ3Q7bWVkaWFmaWxlIChmaWxlIG9iamVjdCk8L2xpPg0KCTxsaT4kaXRlbS0mZ3Q7cGljdHVyZSAoZmlsZSBvYmplY3QpPC9saT4NCgk8bGk+JGl0ZW0tJmd0O3VzZXJkZWZpbmVkMjwvbGk+DQoJPGxpPiRpdGVtLSZndDt1c2VyZGVmaW5lZDJfbmFtZXZhbHVlPC9saT4NCgk8bGk+JGl0ZW0tJmd0O3BhcmVudF9pZDwvbGk+DQoJPGxpPiRpdGVtLSZndDtwYXJlbnRfYWxpYXM8L2xpPg0KCTxsaT4kaXRlbS0mZ3Q7cGFyZW50X25hbWU8L2xpPg0KCTxsaT4kaXRlbS0mZ3Q7cGFyZW50bGluazwvbGk+DQoJPGxpPiR0aWVtLSZndDtwYXJlbnR1cmw8L2xpPg0KCTxsaT4kaXRlbS0mZ3Q7aXNkZWZhdWx0PC9saT4NCgk8bGk+JGl0ZW0tJmd0O2RhdGVfbW9kaWZpZWQ8L2xpPg0KCTxsaT4kaXRlbS0mZ3Q7ZGF0ZV9jcmVhdGVkPC9saT4NCgk8bGk+JGxhYmVscy0+Li4uPC9saT4NCgk8L3VsPjxici8+PHA+SW4gdGhlIGZpbmFsIGxldmVsIGRldGFpbCB0ZW1wbGF0ZSwgdXNlIHRoZSBvYmplY3QgJGxhYmVscyB0byBwcmludCBsYW5ndWFnZS1zZW5zaWJsZSBmaWVsZCBsYWJlbHMgKCRsYWJlbHMtPmZpZWxkbmFtZSkuPC9wPjxwPllvdSBtYXkgcmVhY2ggdGhlIHBhcmVudCBvYmplY3RzIHVzaW5nICRpdGVtLT5wYXJlbnRfb2JqZWN0LT5wYXJlbnRfb2JqZWN0LT4uLi4gYW5kIHNvIG9uLjwvcD48YnIvPjwvZGl2PjwvZGl2Pg0KPGRpdj48aDMgc3R5bGU9ImN1cnNvcjogcG9pbnRlcjsiIG9uY2xpY2s9ImN0bG1tX2Rpc3BsYXl0b2dnbGUodGhpcyk7Ij4mZ3Q7IEZpbGUgT2JqZWN0PC9oMz48ZGl2IGNsYXNzPSJ0cGx2YXJzX2hpZGUiPg0KPHVsPg0KPGxpPiRmaWxlLSZndDtmaWxlcGF0aCAocmVsYXRpdmUpPC9saT4NCjxsaT4kZmlsZS0mZ3Q7ZXh0PC9saT4NCjxsaT4kZmlsZS0mZ3Q7dXJsIChhYnNvbHV0ZSB1cmwpPC9saT4NCjxsaT4kZmlsZS0mZ3Q7c2l6ZSAoc2l6ZSBpbiBieXRlcyk8L2xpPg0KPGxpPiRmaWxlLSZndDtzaXplX3dmb3JtYXQgKGZvcm1hdGVkIHNpemUpPC9saT4NCjxsaT4kZmlsZS0mZ3Q7aW1hZ2VzaXplIChmb3IgaW1hZ2VzIG9ubHkpPC9saT4NCjxsaT4kZmlsZS0mZ3Q7d2lkdGggKGZvciBpbWFnZXMgb25seSk8L2xpPg0KPGxpPiRmaWxlLSZndDtoZWlnaHQgKGZvciBpbWFnZXMgb25seSk8L2xpPg0KPGxpPiRmaWxlLSZndDtpbWFnZSAoaW1hZ2UgdGFnOyBmb3IgaW1hZ2VzIG9ubHkpPC9saT4NCjxsaT4kZmlsZS0mZ3Q7dGh1bWJuYWlsICh0aHVtYm5haWwgdXJsLCBpZiBhcHBsaWNhYmxlKTwvbGk+DQo8bGk+JGZpbGUtJmd0O2ZpbGVtdGltZSAobGFzdCBtb2RpZmllZCwgdW5peCB0aW1lKTwvbGk+DQo8bGk+JGZpbGUtJmd0O21vZGlmaWVkIChsYXN0IG1vZGlmaWVkLCBmb3JtYXRlZCB0aW1lKTwvbGk+DQo8L3VsPjxici8+PGJyLz48L2Rpdj48L2Rpdj4NCjxkaXY+PGgzIHN0eWxlPSJjdXJzb3I6IHBvaW50ZXI7IiBvbmNsaWNrPSJjdGxtbV9kaXNwbGF5dG9nZ2xlKHRoaXMpOyI+Jmd0OyBCcmVhZGNydW1iczwvaDM+PGRpdiBjbGFzcz0idHBsdmFyc19oaWRlIj4NCgkJCQk8cD5XaGVuIHlvdSBhcmUgaW4gYSBtb2R1bGUgdGVtcGxhdGUsIHlvdSBtYXkgY2FsbCB0aGUgYnJlYWRjcnVtYnMgdXNpbmcgdGhlIHthdnBsYXllcl9icmVhZGNydW1ic30gdGFnLiBZb3UgbWF5IHVzZSB0aGUgc2FtZSBwYXJhbWV0ZXJzIGFzIHRoZSBjbXMgY29yZSBicmVhZGNydW1icyB0YWcgKGluaXRpYWwsIGRlbGltaXRlciwgY2xhc3NpZCwgY3VycmVudGNsYXNzaWQpLCBhcyB3ZWxsIGFzIHRoZSAic3RhcnRsZXZlbCIgcGFyYW1ldGVyLjxici8+DQoJCQkJT3V0c2lkZSBtb2R1bGUgdGVtcGxhdGVzLCBhbnl3aGVyZSBvbiB0aGUgcGFnZSwgeW91IG1heSBjYWxsIHRoZSBicmVhZGNydW1icyBhY3Rpb24ge2Ntc19tb2R1bGUgbW9kdWxlPSJhdnBsYXllciIgYWN0aW9uPSJicmVhZGNydW1icyJ9LCBvbmNlIGFnYWluIHVzaW5nIHRoZSBzYW1lIHBhcmFtZXRlcnMuPC9wPjwvZGl2PjwvZGl2Pic7DQoNCi8vIEZvciBmaWxlIGZpZWxkcw0KJGxhbmdbIlJlbW92ZSJdID0gIlJlbW92ZSI7DQokbGFuZ1siZGVsZXRlIl0gPSAiRGVsZXRlIjsNCiRsYW5nWyJicm93c2VmaWxlc3RpdGxlIl0gPSAiVXBsb2FkIGEgbmV3IGZpbGUgb3Igc2VsZWN0IGEgZmlsZSBiZWxvdy4iOw0KJGxhbmdbInNob3dpbmdkaXIiXSA9ICJTaG93aW5nIGRpcmVjdG9yeSI7DQokbGFuZ1siYnJvd3NlZmlsZXNyZXNpemUiXSA9ICJUaGUgcGljdHVyZSB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgcmVzaXplZCBmb3IgdGhlIG1vZHVsZS4iOw0KJGxhbmdbImJyb3dzZWZpbGVjdXJyZW50cGF0aCJdID0gIkN1cnJlbnRseSBzZWVpbmcgZmlsZXMgaW4gOiAiOw0KJGxhbmdbInBhcmVudGRpciJdID0gIlBhcmVudCBEaXJlY3RvcnkiOw0KJGxhbmdbImFkZGFmaWxlIl0gPSAiQWRkIGZpbGUocykiOw0KJGxhbmdbInN1Ym1pdHRpbmdfZmlsZSJdID0gIlBsZWFzZSB3YWl0IHdoaWxlIHRoZSBmaWxlIGlzIGJlaW5nIHVwbG9hZGVkLi4uIjsNCiRsYW5nWyJmaWxlbmFtZSJdID0gIkZpbGVuYW1lIjsNCiRsYW5nWyJpbWFnZXNpemUiXSA9ICJJbWFnZSBzaXplIjsNCiRsYW5nWyJmaWxlZXh0Il0gPSAiRXh0IjsNCiRsYW5nWyJmaWxlc2l6ZSJdID0gIkZpbGUgc2l6ZSI7DQokbGFuZ1sibGFzdG1vZCJdID0gIkxhc3QgbW9kaWZpZWQiOw0KJGxhbmdbImZpbGVvd25lciJdID0gIk93bmVyIjsNCiRsYW5nWyJmaWxlcGVybXMiXSA9ICJQZXJtaXNzaW9ucyI7DQokbGFuZ1sidmlld2FsbGltYWdlcyJdID0gIlZpZXcgYWxsIGltYWdlcyI7DQokbGFuZ1sicG9zdG1heHNpemUiXSA9ICJOb3RpY2U6IHRoZSBwb3N0IG1heCBzaXplIGlzICI7DQokbGFuZ1siYWRkZmlsZWlucHV0Il0gPSAiQWRkIGFub3RoZXIgZmlsZSI7DQokbGFuZ1siemlwZmlsZW5vdGljZSJdID0gIlRoZSBmaWxlcyBzaG91bGQgYmUgaW4gdGhlIHJvb3Qgb2YgdGhlIGFyY2hpdmUuIjsNCiRsYW5nWyJ1cGxvYWR6aXBmaWxlIl0gPSAiVXBsb2FkIHppcCBhcmNoaXZlIjsNCg0KLy8gc3RyaW5ncyBmb3IgZ2VuZXJhbCBmaWVsZHMNCiRsYW5nWyJpZCJdID0gImlkIjsNCiRsYW5nWyJuYW1lIl0gPSAiTmFtZSI7DQokbGFuZ1siYWxpYXMiXSA9ICJBbGlhcyI7DQokbGFuZ1siaXNkZWZhdWx0Il0gPSAiSXMgZGVmYXVsdD8iOw0KJGxhbmdbImFjdGl2ZSJdID0gIkFjdGl2ZSI7DQokbGFuZ1sicGFyZW50Il0gPSAiUGFyZW50IjsNCiRsYW5nWyJzdWJtaXQiXSA9ICJTdWJtaXQiOw0KJGxhbmdbImNhbmNlbCJdID0gIkNhbmNlbCI7DQokbGFuZ1sibmJjaGlsZHJlbiJdID0gIk5iIG9mIGl0ZW1zIjsNCiRsYW5nWyJkYXRlX21vZGlmaWVkIl0gPSAiTGFzdCBtb2RpZmljYXRpb24iOw0KJGxhbmdbImRhdGVfY3JlYXRlZCJdID0gIkNyZWF0aW9uIjsNCgkNCi8vIEdFTkVSQUwNCiRsYW5nWyJwYWdlcyJdID0gIlBhZ2VzOiAiOw0KJGxhbmdbIm5leHRwYWdlIl0gPSAiTmV4dCBwYWdlIjsNCiRsYW5nWyJwcmV2aW91c3BhZ2UiXSA9ICJQcmV2aW91cyBwYWdlIjsNCiRsYW5nWyJhY3RpdmF0ZSJdID0gIkFjdGl2YXRlIjsNCiRsYW5nWyJ1bmFjdGl2YXRlIl0gPSAiVHVybiBvZmYiOw0KJGxhbmdbInNlYXJjaHRoaXN0YWJsZSJdID0gIlNlYXJjaCB0aGlzIHRhYmxlIGZvcjoiOw0KJGxhbmdbInJlc2V0b3JkZXIiXSA9ICJSZXNldCBvcmRlciI7DQokbGFuZ1siWWVzIl0gPSAiWWVzIjsNCiRsYW5nWyJObyJdID0gIk5vIjsNCiRsYW5nWyJBY3Rpb25zIl0gPSAiQWN0aW9ucyI7DQokbGFuZ1sicmVvcmRlciJdID0gIlJlb3JkZXIiOw0KJGxhbmdbImxpc3R0ZW1wbGF0ZSJdID0gIkxpc3QgdGVtcGxhdGUgZm9yIjsNCiRsYW5nWyJ0ZW1wbGF0ZXMiXSA9ICJUZW1wbGF0ZXMiOw0KJGxhbmdbInRlbXBsYXRlIl0gPSAiVGVtcGxhdGUiOw0KJGxhbmdbImRlZmF1bHR0ZW1wbGF0ZXMiXSA9ICJEZWZhdWx0IHRlbXBsYXRlcyI7DQokbGFuZ1sidGVtcGxhdGV2YXJzIl0gPSAiVGVtcGxhdGUgdmFyaWFibGVzIjsNCiRsYW5nWyJlZGl0dGVtcGxhdGUiXSA9ICJFZGl0IHRlbXBsYXRlIjsNCiRsYW5nWyJkZWZ0ZW1wbGF0ZWZvciJdID0gIkRlZmF1bHQgbGlzdCB0ZW1wbGF0ZSBmb3IgbGV2ZWwgIjsNCiRsYW5nWyJkZWZkZXRhaWx0ZW1wbGF0ZSJdID0gIkRlZmF1bHQgZGV0YWlsIHRlbXBsYXRlIjsNCiRsYW5nWyJkZWZzZWFyY2hyZXN1bHRzdGVtcGxhdGUiXSA9ICJEZWZhdWx0IHRlbXBsYXRlIGZvciBzZWFyY2ggcmVzdWx0cyI7DQokbGFuZ1siZGVmZW1wdHl0ZW1wbGF0ZSJdID0gIlRlbXBsYXRlIGZvciBlbXB0eSByZXN1bHQgc2V0cyI7DQokbGFuZ1sidXNlbGV2ZWxsaXN0dHBsIl0gPSAiVXNlIHRoZSBsaXN0IHRlbXBsYXRlIG9mIHRoZSBhcHByb3ByaWF0ZSBsZXZlbCI7DQokbGFuZ1siYWRkdGVtcGxhdGUiXSA9ICJBZGQgdGVtcGxhdGUiOw0KJGxhbmdbImZpbHRlcmJ5Il0gPSAiRmlsdGVyIGJ5IjsNCiRsYW5nWyJzaG93aW5nb25seSJdID0gIkZpbHRlcjogIjsNCiRsYW5nWyJzaG93YWxsIl0gPSAiU2hvdyBhbGwgKG5vIGZpbHRlcikiOw0KJGxhbmdbImZpZWxkb3B0aW9ucyJdID0gIkZpZWxkIG9wdGlvbnMiOw0KJGxhbmdbImFkZG9wdGlvbiJdID0gIkFkZCBhbiBvcHRpb24iOw0KJGxhbmdbIm1vZGlmeWFub3B0aW9uIl0gPSAiTW9kaWZ5IGFuIG9wdGlvbiI7DQokbGFuZ1sibWVzc2FnZV9kZWxldGVkIl0gPSAiRWxlbWVudCBkZWxldGVkIjsNCiRsYW5nWyJtZXNzYWdlX21vZGlmaWVkIl0gPSAiTW9kaWZpY2F0aW9uIHNhdmVkIjsNCiRsYW5nWyJ3YXJuaW5nX3RhYiJdID0gIk5vdGljZTogU2F2ZSBjaGFuZ2VzIGluIG90aGVyIHRhYnMgYmVmb3JlIHdvcmtpbmcgaW4gdGhpcyBvbmUuLi4iOw0KJGxhbmdbImVycm9yX21pc3NnaW52YWx1ZSJdID0gIk9uZSBvciBtb3JlIG5lY2Vzc2FyeSB2YWx1ZXMgaGF2ZSBub3QgYmVlbiBlbnRlcmVkLiI7DQokbGFuZ1siZXJyb3JfYWxyZWFkeWV4aXN0cyJdID0gIlRoZXJlIGlzIGFscmVhZHkgYW4gZWxlbWVudCBiZWFyaW5nIHRoYXQgbmFtZS4iOw0KJGxhbmdbImVycm9yX2RhdGUiXSA9ICJUaGUgZGF0ZSB5b3UgaGF2ZSBlbnRlcmVkIGlzIGludmFsaWQuIjsNCiRsYW5nWyJlcnJvcl9ub3BhcmVudCJdID0gIk5vIHBhcmVudCBpcyBkZWZpbmVkISI7DQokbGFuZ1siZXJyb3Jfbm90Zm91bmQiXSA9ICJUaGUgaXRlbSBjb3VsZCBub3QgYmUgZm91bmQuIjsNCiRsYW5nWyJlcnJvcl9ub2l0ZW1mb3VuZCJdID0gIk5vIGl0ZW0gZm91bmQuIjsNCiRsYW5nWyJlcnJvcl9kZW5pZWQiXSA9ICJQZXJtaXNzaW9uIGRlbmllZCI7DQokbGFuZ1siZXJyb3Jfd3JvbmdxdWVyeSJdID0gIkludmFsaWQgcXVlcnkuIjsNCiRsYW5nWyJlcnJvcl9mZWFkZGRlbmllZCJdID0gIllvdSBkbyBub3QgaGF2ZSBzdWZmaWNpZW50IGFjY2VzcyB0byBjb250aW51ZS4iOw0KJGxhbmdbImVycm9yX3dyb25nZmlsZXR5cGUiXSA9ICJUaGlzIHR5cGUgb2YgZmlsZSBpcyBub3QgYWxsb3dlZCBoZXJlLiI7DQokbGFuZ1siZXJyb3JfY2FwdGNoYSJdID0gIlRoZSB0ZXh0IGdpdmVuIGRvZXMgbm90IG1hdGNoIHRoZSBjYXB0Y2hhIGltYWdlLiI7DQokbGFuZ1siZXJyb3JfZmlsZXRvb2JpZyJdID0gIlRoZSBmaWxlIGlzIHRvIGJpZyB0byBiZSB1cGxvYWRlZCBoZXJlLiI7DQokbGFuZ1siZ2l2ZW5lcnJvciJdID0gIkVycm9yOiAiOw0KJGxhbmdbImZpbmFsdGVtcGxhdGUiXSA9ICJEaXNwbGF5IHRlbXBsYXRlIGZvciBmaW5hbCBsZXZlbCAobWVkaWFmaWxlKSI7DQokbGFuZ1sicHJvbXB0X2RlbGV0ZW9wdGlvbiJdID0gIkRvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBvcHRpb24/IjsNCiRsYW5nWyJwcm9tcHRfZ2VuZXJhbGRlbGV0ZSJdID0gIkRvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcz8iOw0KJGxhbmdbInByb21wdF9jYXB0Y2hhIl0gPSAiRW50ZXIgdGhlIHRleHQgZnJvbSB0aGUgaW1hZ2UuIjsNCiRsYW5nWyJxdWVyaWVzIl0gPSAiUXVlcmllcyI7DQokbGFuZ1sicXVlcnkiXSA9ICJRdWVyeSI7DQokbGFuZ1sicmVzdWx0cyJdID0gIlJlc3VsdHMiOw0KJGxhbmdbImNyZWF0ZXF1ZXJ5Il0gPSAiQ3JlYXRlIGEgbmV3IHF1ZXJ5IjsNCiRsYW5nWyJwcm9tcHRfcXVlcnkiXSA9ICJDcmVhdGUgYSBxdWVyeSBmb3Igd2hpY2ggbGV2ZWw/IjsNCiRsYW5nWyJvcmRlcmJ5ZmllbGQiXSA9ICJPcmRlciBieSI7DQokbGFuZ1siZGF0ZV9tb2RpZmllZCJdID0gIkRhdGUgbW9kaWZpZWQiOw0KJGxhbmdbImZyb250ZW5kX3N1Ym1pdCJdID0gIlN1Ym1pdCI7DQokbGFuZ1siaW5zZXJ0X3RhZyJdID0gIlVzYWdlLi4uIjsNCg0KLy8gQlJFQURDUlVNQlMgOg0KJGxhbmdbInlvdWFyZWhlcmUiXSA9ICJZb3UgYXJlIGhlcmU6ICI7DQokbGFuZ1siYnJlYWRjcnVtYnNfZGVsaW1pdGVyIl0gPSAiICZndDsgIjsNCg0KLy8gU0VBUkNIIDoNCiRsYW5nWyJzZWFyY2h0aXRsZSJdID0gIlNlYXJjaCI7DQokbGFuZ1sic2VhcmNoYWdhaW4iXSA9ICJEbyBhbm90aGVyIHNlYXJjaCI7DQokbGFuZ1sic2VhcmNoYnRuIl0gPSAiU2VhcmNoISI7DQokbGFuZ1siY29udGFpbnMiXSA9ICJDb250YWlucyI7DQokbGFuZ1siaXNleGFjdGx5Il0gPSAiSXMgZXhhY3RseSI7DQokbGFuZ1siaXNub3QiXSA9ICJJcyBub3QiOw0KJGxhbmdbImlzaGlnaGVydGhhbiJdID0gIklzIGhpZ2hlciB0aGFuIjsNCiRsYW5nWyJpc2xvd2VydGhhbiJdID0gIklzIGxvd2VyIHRoYW4iOw0KJGxhbmdbImlzYWZ0ZXIiXSA9ICJJcyBhZnRlciI7DQokbGFuZ1siaXNiZWZvcmUiXSA9ICJJcyBiZWZvcmUiOw0KJGxhbmdbImlzYmV0d2VlbiJdID0gIklzIGJldHdlZW4iOw0KJGxhbmdbInRoaXNhbmR0aGlzIl0gPSAiYW5kIjsNCiRsYW5nWyJxdWVyeXVzZSJdID0gIk5vdCB1c2VkIjsNCiRsYW5nWyJxdWVyeW5hbWUiXSA9ICJRdWVyeSBuYW1lIjsNCg0KLy8gSU1QT1JUIC8gRVhQT1JUDQokbGFuZ1siZXhwb3J0X3RpdGxlIl0gPSAiRXhwb3J0IGl0ZW1zIHRvIHhtbCI7DQokbGFuZ1siZXhwb3J0d2hpY2hsZXZlbHMiXSA9ICJXaGljaCB0YWJsZXMgc2hvdWxkIGJlIGV4cG9ydGVkPyI7DQokbGFuZ1siZXhwb3J0X3RlbXBsYXRlcyJdID0gIkV4cG9ydCB0ZW1wbGF0ZXMgdG9vPyI7DQokbGFuZ1siaW1wb3J0X3RpdGxlIl0gPSAiSW1wb3J0IGZyb20geG1sIGZpbGUiOw0KJGxhbmdbImltcG9ydF9maWxlcHJvbXB0Il0gPSAiU2VsZWN0IHhtbCBmaWxlIGZyb20gd2hpY2ggdG8gaW1wb3J0LiI7DQokbGFuZ1siaW1wb3J0X2RvbmUiXSA9ICJJbXBvcnQgZG9uZS4gJXMgcmVjb3JkcyB3aGVyZSBpbXBvcnRlZC4iOw0KJGxhbmdbImltcG9ydF9lbnRyaWVzIl0gPSAiVGhlIGZpbGUgY29udGFpbnMgJXMgcmVjb3Jkcy4iOw0KJGxhbmdbImltcG9ydF9kZWxldGUiXSA9ICJEZWxldGUgdGFibGUgY29udGVudCBiZWZvcmUgaW1wb3J0aW5nPyI7DQokbGFuZ1siaW1wb3J0d2hpY2hsZXZlbHMiXSA9ICJXaGljaCB0YWJsZXMgc2hvdWxkIGJlIGltcG9ydGVkPyI7DQokbGFuZ1siaW1wb3J0X3RlbXBsYXRlcyJdID0gIkltcG9ydCB0ZW1wbGF0ZXMgdG9vPyI7DQokbGFuZ1siY291bGRub3RpbXBvcnQiXSA9ICJUaGVyZSB3YXMgYW4gZXJyb3IgaW1wb3J0aW5nIHJlY29yZHMgZm9yOiAiOw0KJGxhbmdbImVycm9yX2ludmFsaWR4bWwiXSA9ICJUaGUgZmlsZSB5b3UgcHJvdmlkZWQgaXMgbm90IGEgdmFsaWQgeG1sIGV4cG9ydCBmb3IgdGhpcyBtb2R1bGUuIjsNCg0KLy8gTU9EVUxFIElOVEVSQUNUSU9ODQokbGFuZ1sicG9zdGluc3RhbGwiXSA9ICJNb2R1bGUgc3VjY2Vzc2Z1bGx5IGFkZGVkLjxici8+SWYgdGhpcyBtb2R1bGUgaGFzIGFueSBmaWxlIGZpZWxkcywgcGxlYXNlIG1ha2Ugc3VyZSB0aGF0IHRoZSBhcHByb3ByaWF0ZSBkaXJlY3RvcmllcyBleGlzdCBpbiB0aGUgdXBsb2FkcyBmb2xkZXIuIERvbid0IGZvcmdldCB0byBnaXZlIHlvdXIgdXNlcnMgdGhlIHBlcm1pc3Npb24gdG8gdXNlIHRoaXMgbW9kdWxlISI7DQokbGFuZ1sicG9zdHVuaW5zdGFsbCJdID0gIk1vZHVsZSBzdWNjZXNzZnVsbHkgcmVtb3ZlZC4iOw0KJGxhbmdbInJlYWxseV91bmluc3RhbGwiXSA9ICJBbGwgb2YgdGhpcyBtb2R1bGUncyBjb250ZW50IHdpbGwgYmUgbG9zdC4gQ29udGludWU/IjsNCiRsYW5nWyJ1bmluc3RhbGxlZCJdID0gIk1vZHVsZSBVbmluc3RhbGxlZC4iOw0KJGxhbmdbImluc3RhbGxlZCJdID0gIk1vZHVsZSB2ZXJzaW9uICVzIGluc3RhbGxlZC4iOw0KJGxhbmdbImhlbHAiXSA9ICI8aDM+V2hhdCBEb2VzIFRoaXMgRG8/PC9oMz4NCgkJCQk8cD5UaGlzIG1vZHVsZSBtYW5hZ2VzIGFuZCBkaXNwbGF5cyBhbiBpdGVtIGNhdGFsb2d1ZS48L3A+DQoJCQk8YnIvPjxoMz5Ib3cgRG8gSSBVc2UgSXQ/PC9oMz4NCgkJCQk8YnIvPjxoND5QZXJtaXNzaW9uczwvaDQ+DQoJCQkJCTxwPk1ha2Ugc3VyZSB5b3VyIHVzZXJzIGhhdmUgdGhlIGFwcHJvcHJpYXRlIHBlcm1pc3Npb25zLiBJZiB5b3UgYXJlIG5vdCB1c2luZyB0aGUgYWNjZXNzIHJlc3RyaWN0aW9uIG9wdGlvbiAoc2VlIHNldHRpbmdzKSwgdGhlIFwiYXZwbGF5ZXI6IE5vcm1hbCB1c2VyXCIgcGVybWlzc2lvbiB3aWxsIGJlIGVub3VnaCB0byB1c2UgdGhlIG1vZHVsZS4gSW4gdGhlIHNldHRpbmdzIHRhYiwgeW91IGNhbiBjaG9vc2Ugd2hpY2ggdGFicyB3aWxsIGJlIGRpc3BsYXllZCBmb3IgdGhlIG5vcm1hbCB1c2VyLiBPbmx5IHRoZSBhZG1pbmlzdHJhdG9yIGFuZCB1c2VycyB3aXRoIHRoZSBcImF2cGxheWVyOiBBZHZhbmNlZFwiIHBlcm1pc3Npb24gd2lsbCBoYXZlIGFjY2VzcyB0byBzZXR0aW5ncyB0YWIuPGJyLz4NCgkJCQkJSWYgeW91IHdpc2ggdG8gZGVmaW5lIGxldmVsLXNwZWNpZmljIHBlcm1pc3Npb25zLCBhY3RpdmF0ZSB0aGUgYWNjZXNzIHJlc3RyaWN0aW9uIG9wdGlvbiBpbiB0aGUgc2V0dGluZ3MgdGFiIGFuZCBnaXZlIHRoZSBcImF2cGxheWVyOiBNYW5hZ2UgbmFtZV9vZl9sZXZlbFwiIHBlcm1pc3Npb24gdG8gdGhlIGFwcHJvcHJpYXRlIHVzZXJzLjwvcD4NCgkJCQk8YnIvPjxoND5CYXNpY3M8L2g0Pg0KCQkJCQk8cD5UbyBjYWxsIHRoZSBtb2R1bGUsIHNpbXBseSB1c2UgdGhlIGZvbGxvd2luZyB0YWc6PGJyLz4NCgkJCQkJe2Ntc19tb2R1bGUgbW9kdWxlPVwiYXZwbGF5ZXJcIn08L3A+DQoJCQkJCTxwPkluIHRoaXMgY2FzZSB0aGUgbGlzdCBvZiB0aGUgbGFzdCBsZXZlbCBlbGVtZW50cyAobWVkaWFmaWxlKSB3aWxsIGJlIGRpc3BsYXllZC4gVG8gc2VsZWN0IGEgbGV2ZWwsIHVzZSB0aGUgXCJ3aGF0XCIgcGFyYW1ldGVyOjxici8+DQoJCQkJCXtjbXNfbW9kdWxlIG1vZHVsZT1cImF2cGxheWVyXCIgd2hhdD1cIm1lZGlhZmlsZVwifTxici8+DQoJCQkJCTxpPlRoZSBwb3NzaWJsZSB2YWx1ZXMgZm9yIHRoZSBcIndoYXRcIiBwYXJhbWV0ZXIgYXJlIDogcGxheWVyLCBtZWRpYWZpbGU8L2k+PC9wPg0KCQkJCQk8cD5Zb3UgbWF5IGFsc28gYXNrIGZvciBlbGVtZW50cyB3aG8gYmVsb25nIHRvIGEgc3BlY2lmaWMgcGFyZW50Ojxici8+DQoJCQkJCXtjbXNfbW9kdWxlIG1vZHVsZT1cImF2cGxheWVyXCIgcGFyZW50PVwiYWxpYXNfb2ZfcGFyZW50XCJ9PC9wPg0KCQkJCQk8cD5Zb3UgbWF5IGZpbmFsbHkgYXNrIGZvciBhIHNwZWNpZmljIGVsZW1lbnQ6PGJyPg0KCQkJCQl7Y21zX21vZHVsZSBtb2R1bGU9XCJhdnBsYXllclwiIGFsaWFzPVwiYWxpYXNfb2ZfaXRlbVwifTwvcD4NCgkJCQk8YnIvPjxoND5TZXBhcmF0aW5nIGludG8gcGFnZXM8L2g0Pg0KCQkJCQk8cD5Zb3UgbWF5IGxpbWl0IHRoZSBudW1iZXIgb2YgaXRlbXMgdG8gYmUgc2hvd24gb24gb25lIHBhZ2U6PGJyLz4NCgkJCQkJe2Ntc19tb2R1bGUgbW9kdWxlPVwiYXZwbGF5ZXJcIiBuYnBlcnBhZ2U9XCI1XCJ9PGJyLz4NCgkJCQkJSW4gdGhlIHRlbXBsYXRlLCB5b3UgY2FuIGJ1aWxkIHRoZSBwYWdlIG1lbnUgdXNpbmcgdGhlIGZvbGxvd2luZyB0YWdzOjxici8+DQoJCQkJCXsiLickJy4icGFnZV9zaG93aW5nfSwgeyIuJyQnLiJwYWdlX3RvdGFsaXRlbXN9LCB7Ii4nJCcuInBhZ2VfcGFnZW51bWJlcnN9LCB7Ii4nJCcuInBhZ2VfbmV4dH0sIHsiLickJy4icGFnZV9wcmV2aW91c308L3A+DQoJCQkJPGJyLz48aDQ+VXNpbmcgcXVlcmllczwvaDQ+DQoJCQkJCTxwPlRvIGdldCBhIGxpc3Qgb2YgaXRlbSB0aGF0IG1lZXQgc3BlY2lmaWMgY3JpdGVyaWEsIHlvdSBjYW4gY3JlYXRlIGEgcXVlcnkgdXNpbmcgdGhlIHF1ZXJpZXMgdGFiIG9mIHRoZSBhZG1pbiBwYW5lbCwgYW5kIGNhbGwgdGhlbSB1c2luZyB0aGUgXCJxdWVyeVwiIHBhcmFtZXRlcjo8YnIvPg0KCQkJCQl7Y21zX21vZHVsZSBtb2R1bGU9XCJhdnBsYXllclwiIHF1ZXJ5PVwiNVwifTwvcD4NCgkJCQkJPHA+PGk+SWYgdGhlIG9wdGlvbiB0byBhbGxvdyBtYW51ZWwgc3FsIHF1ZXJpZXMgaXMgZW5hYmxlZDwvaT4gKHNlZSBcIlNldHRpbmdzXCIgdGFiKSwgeW91IG1heSBhbHNvIHByb3ZpZGUgdGhlIHNxbCBxdWVyeSBkaXJlY3RseSB3aXRoIHRoZSBxdWVyeSBwYXJhbWV0ZXIuIEZvciBleGFtcGxlOjxici8+DQoJCQkJCXtjbXNfbW9kdWxlIG1vZHVsZT1cImF2cGxheWVyXCIgd2hhdD1cIm1lZGlhZmlsZVwiIHF1ZXJ5PVwiQS5kYXRlX21vZGlmaWVkID4gJzIwMDktMDMtMTUnIEFORCBBLmFjdGl2ZSA9IDFcIn08YnIvPg0KCQkJCQlUaGUgcXVlcnkgcGFyYW1ldGVyIGNhbiBvbmx5IGhvbGQgdGhlIFdIRVJFIGNsYXVzZSBvZiB0aGUgcXVlcnksIGFuZCBzaG91bGQgbm90IGluY2x1ZGUgdGhlIFdIRVJFIGNvbW1hbmQgaXRzZWxmLiBUbyBhdm9pZCBwcm9ibGVtcywgdGhlIHByZWZpeCBcIkEuXCIgc2hvdWxkIGJlIHVzZWQgYmVmb3JlIGZpZWxkIG5hbWVzICh3aGVyZSBhcHBsaWNhYmxlLCB0aGUgXCJCLlwiIHByZWZpeCBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IGNyaXRlcmlhIG9uIHRoZSBwYXJlbnQncyBmaWVsZHMpLjxici8+DQoJCQkJCUFsdGhvdWdoIHRoZSBhYnN0cmFjdGlvbiBsYXllciBpcyBub3QgZWFzaWx5IHByb25lIHRvIGluamVjdGlvbnMsIHJlbWVtYmVyIHRoYXQgYWN0aXZhdGluZyB0aGlzIG9wdGlvbiBtZWFucyBnaXZpbmcgYSBzcWwgb3BlbmluZyB3aXRoaW4gdGhlIHRlbXBsYXRlcyBhbmQgYmUgY2FyZWZ1bC48L3A+DQoJCQkJPGJyLz48aDQ+VGhlIGxpbmsgYWN0aW9uPC9oND4NCgkJCQkJPHA+WW91IG1heSB1c2UgdGhlIGFjdGlvbiA8Yj5cImxpbmtcIjwvYj4gdG8gY3JlYXRlIGEgbGluayB0byB0aGUgZGVmYXVsdCBhY3Rpb24sIHVzaW5nIHRoZSBzYW1lIHBhcmFtZXRlcnM6PGJyLz4NCgkJCQkJe2Ntc19tb2R1bGUgbW9kdWxlPVwiYXZwbGF5ZXJcIiBhY3Rpb249XCJsaW5rXCIgd2hhdD1cIm1lZGlhZmlsZVwiIHJhbmRvbT1cIjFcIn08YnIvPg0KCQkJCQl3b3VsZCBjcmVhdGUgYSBsaW5rIHRvIGEgcmFuZG9tIGVsZW1lbnQgb2YgdGhpcyBsZXZlbC48L3A+DQoJCQkJPGJyLz48aDQ+VGhlIHNpdGVtYXAgYWN0aW9uPC9oND4NCgkJCQkJPHA+SWYgeW91ciBtb2R1bGUgaXMgbm90IHNoYXJpbmcgY2hpbGRyZW4sIHlvdSBtYXkgdXNlIHRoZSBhY3Rpb24gPGI+XCJzaXRlbWFwXCI8L2I+IHRvIGNyZWF0ZSBhIG1vZHVsZSBzaXRlbWFwOjxici8+DQoJCQkJCXtjbXNfbW9kdWxlIG1vZHVsZT1cImF2cGxheWVyXCIgYWN0aW9uPVwic2l0ZW1hcFwifTxici8+DQoJCQkJCVlvdSBjYW4gc2VsZWN0IHRoZSBsZXZlbHMgdXNpbmcgdGhlIFwid2hhdFwiIHBhcmFtZXRlciwgYW5kIG1heSBzZWxlY3QgbW9yZSB0aGFuIG9uZSB1c2luZyBcInxcIiA6IHdoYXQ9XCJsZXZlbDF8bGV2ZWwyXCIuPGJyLz4NCgkJCQkJT3RoZXIgYXZhaWxhYmxlIHBhcmFtZXRlcnMgZm9yIHRoaXMgYWN0aW9uIGFyZSBcImRldGFpbHBhZ2VcIiBhbmQgXCJpbmxpbmVcIi48YnIvPg0KCQkJCQlUbyBjcmVhdGUgYSBnb29nbGUgc2l0ZW1hcCwgc2VlIHRoZSA8YSBocmVmPVwiLi4vbW9kdWxlcy9hdnBsYXllci9kb2MvZmFxLmh0bWwjcTE2XCIgdGFyZ2V0PVwiX2JsYW5rXCI+RkFRPC9hPi48L3A+DQoJCQkJPGJyLz48aDQ+VGhlIGZyb250ZW5kIGVkaXQgYWN0aW9uPC9oND4NCgkJCQkJPHA+QSBmb3JtIGZvciB0aGUgZnJvbnRlbmQgZWRpdGlvbiBvZiBlbGVtZW50cyBjYW4gYmUgY2FsbGVkIHVzaW5nOjxici8+DQoJCQkJCXtjbXNfbW9kdWxlIG1vZHVsZT1cImF2cGxheWVyXCIgYWN0aW9uPVwiZnJvbnRlbmRfZWRpdFwiIHdoYXQ9XCJtZWRpYWZpbGVcIn08YnIvPg0KCQkJCQlUaGlzIHRhZyB3b3VsZCBzaG93IGFuIGVtcHR5IGZvcm0sIGFuZCBjcmVhdGUgYSBuZXcgZWxlbWVudCBvZiB0aGUgbGV2ZWwgXCJtZWRpYWZpbGVcIi4gSW4gb3JkZXIgdG8gZWRpdCBhbiBleGlzdGluZyBlbGVtZW50LCB5b3Ugc2ltcGx5IGhhdmUgdG8gc3BlY2lmeSB0aGUgYWxpYXM6PGJyLz4NCgkJCQkJe2Ntc19tb2R1bGUgbW9kdWxlPVwiYXZwbGF5ZXJcIiBhY3Rpb249XCJmcm9udGVuZF9lZGl0XCIgd2hhdD1cIm1lZGlhZmlsZVwiIGFsaWFzPVwiaXRlbV9hbGlhc1wifTwvcD4NCgkJCQkJPHA+SWYgeW91IHdpc2ggdG8gZGlzcGxheSBhIGxpbmsgdG8gdGhlIGVkaXRpb24gb2YgYW4gaXRlbSwgdXNlIHRoZSBcImxpbmtcIiBhY3Rpb246PGJyLz4NCgkJCQkJe2Ntc19tb2R1bGUgbW9kdWxlPVwiYXZwbGF5ZXJcIiBhY3Rpb249XCJsaW5rXCIgdG9hY3Rpb249XCJmcm9udGVuZF9lZGl0XCIgd2hhdD1cIm1lZGlhZmlsZVwiIGFsaWFzPVwiaXRlbV9hbGlhc1wifTxici8+DQoJCQkJCVlvdSBjb3VsZCwgZm9yIGV4YW1wbGUsIGRvIHRoaXMgaW4gYSBsaXN0IHRlbXBsYXRlLi4uPC9wPg0KCQkJCQk8cD4oU2VlIHRoZSBzZXR0aW5ncyB0YWIgZm9yIG9wdGlvbnMgYWJvdXQgdGhlIGZyb250ZW5kX2VkaXQgZmVhdHVyZSk8YnIvPg0KCQkJCQlJdCBpcyByZWNvbW1hbmRlZCB0aGF0IHRoZSBmcm9udGVuZCBlZGl0IGZlYXR1cmUgYmUgdXNlZCB3aXRoIHRoZSBGcm9udCBFbmQgVXNlcnMgbW9kdWxlIGZvciBwZXJtaXNzaW9ucyBtYW5hZ2VtZW50LiBTZWUgPGEgaHJlZj1cIi4uL21vZHVsZXMvYXZwbGF5ZXIvZG9jL2ZhcS5odG1sI3EyMFwiIHRhcmdldD1cIl9ibGFua1wiPkZBUTwvYT4gZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gaG93IHRvIGRvIHRoaXMuPC9wPg0KCQkJCTxici8+PGg0PlRoZSBzZWFyY2ggYWN0aW9uPC9oND4NCgkJCQkJPHA+WW91IG1heSB1c2UgdGhlIGFjdGlvbiA8Yj5cInNlYXJjaFwiPC9iPiB0byBkaXNwbGF5IGEgc2VhcmNoIGZvcm06PGJyLz4NCgkJCQkJe2Ntc19tb2R1bGUgbW9kdWxlPVwiYXZwbGF5ZXJcIiBhY3Rpb249XCJzZWFyY2hcIn08YnIvPg0KCQkJCQlVc2UgdGhlIFwic2VhcmNobW9kZVwiIHBhcmFtZXRlciB0byBzd2l0Y2ggYmV0d2VlbiBhZHZhbmNlZCAoZGVmYXVsdCkgYW5kIHNpbXBsZSBtb2RlLiBZb3UgbWF5IHNwZWNpZnkgdGhlIGxldmVsIGluIHdoaWNoIHRvIHNlYXJjaCB1c2luZyB0aGUgXCJ3aGF0XCIgcGFyYW1ldGVyLiBZb3UgY2Fubm90IHVzZSB0aGUgYWR2YW5jZWQgc2VhcmNoIG1vZGUgaW4gYWxsIGxldmVscyBhdCB0aGUgc2FtZSB0aW1lLjxici8+DQoJCQkJCVRoZSBmb2xsb3dpbmcgcGFyYW1ldGVycyBjYW4gYmUgdXNlZCB3aXRoIHRoZSBzZWFyY2ggYWN0aW9uOiB3aGF0LCBsaW1pdCwgbmJwZXJwYWdlLCBvcmRlcmJ5LCBkZXRhaWxwYWdlLCBsaXN0dGVtcGxhdGUsIGlubGluZSwgc2VhcmNobW9kZS48YnIvPg0KCQkJCQlTZWUgYXZwbGF5ZXIvdGVtcGxhdGVzL3NlYXJjaC50cGwgdG8gbW9kaWZ5IHRoZSBzZWFyY2ggZm9ybS48L3A+PGJyLz4NCg0KCQkJCTxoND5BdWRpby9WaWRlbyBQbGF5ZXJzPC9oND4NCgkJCQlXaGlsZSBpdCBpcyBwb3NzaWJsZSB0byB1c2Ugb3RoZXIgcGxheWVycyB3aXRoIEFWUGxheWVyLCBpdCBoYXMgYmVlbiBjb25maWd1cmVkIG9wdGltYWxseSBmb3IgDQoJCQkJdGhlIDxzdHJvbmc+TmVvTGFvIFBsYXllcjwvc3Ryb25nPjxiciAvPg0KCQkJCUZvciBWaWRlbywgZG93bmxvYWQgdGhlIDxzdHJvbmc+TmVvTGFvIFZpZGVvIChGTFYgUGxheWVyKTwvc3Ryb25nPiBmcm9tOg0KCQkJCTxhIGhyZWY9XCJodHRwOi8vZmx2LXBsYXllci5uZXQvcGxheWVycy9tYXhpL2Rvd25sb2FkXCIgdGFyZ2V0PVwiX2JsYW5rXCI+aHR0cDovL2Zsdi1wbGF5ZXIubmV0L3BsYXllcnMvbWF4aS9kb3dubG9hZDwvYT48YnIgLz4NCgkJCQlVcGxvYWQgdG8geW91ciBzaXRlIGFuZCBwbGFjZSB0aGUgcGF0aCBpbnRvIHRoZSBsb2NhdGlvbiBmaWVsZCBvZiB0aGUgUGxheWVyLCBpZToNCgkJCQl1cGxvYWRzL0ZMVlBsYXllci9wbGF5ZXJfZmx2X21heGkuc3dmPGJyIC8+DQoJCQkJRm9yIDxzdHJvbmc+TVAzJ3M8L3N0cm9uZz4gcGxlYXNlIGRvd25sb2FkIHRoZSA8c3Ryb25nPk5lb0xhbyBGbGFzaCBNUDMgUGxheWVyPC9zdHJvbmc+IGZyb20gOjxicj4NCgkJCQk8YSBocmVmPVwiaHR0cDovL2ZsYXNoLW1wMy1wbGF5ZXIubmV0L3BsYXllcnMvbWF4aS9kb3dubG9hZFwiIHRhcmdldD1cIl9ibGFua1wiPmh0dHA6Ly9mbGFzaC1tcDMtcGxheWVyLm5ldC9wbGF5ZXJzL21heGkvZG93bmxvYWQ8L2E+PGJyIC8+DQoJCQkJZm9yIDxzdHJvbmc+UGxheWVyIFBhcmFtZXRlcnM8L3N0cm9uZz4gCXBsZWFzZSByZWZlciB0bzo8YSBocmVmPVwiaHR0cDovL2Zsdi1wbGF5ZXIubmV0L3BsYXllcnMvbWF4aS9nZW5lcmF0b3JcIiB0YXJnZXQ9XCJfYmxhbmtcIj5odHRwOi8vZmx2LXBsYXllci5uZXQvcGxheWVycy9tYXhpL2dlbmVyYXRvcjwvYT48YnIgLz4NCg0KCQkJCQ0KCQkJCTxiciAvPg0KDQoNCgkJCQk8cD5Gb3IgbW9yZSBoZWxwIG9uIG1vZHVsZSB1c2UsIHlvdSBtYXkgdGFrZSBhIGxvb2sgYXQgdGhlIDxhIGhyZWY9XCIuLi9tb2R1bGVzL2F2cGxheWVyL2RvYy9mYXEuaHRtbFwiIHRhcmdldD1cIl9ibGFua1wiPkZBUTwvYT4uPC9wPg0KCQkJPGJyLz48aDM+Q29weXJpZ2h0IGFuZCBMaWNlbnNlPC9oMz4NCgkJCQk8cD5UaGlzIG1vZHVsZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgR05VIFB1YmxpYyBMaWNlbnNlLjwvcD48YnIvPjxici8+IjsNCg0KLy9FVkVOVFMNCiRsYW5nWyJldmVudGRlc2NfbW9kaWZpZWQiXSA9ICJDYWxsZWQgYWZ0ZXIgYW4gZWxlbWVudCBoYXMgYmVlbiBtb2RpZmllZC4gUGFyYW1zOiBcIndoYXRcIj0+bGV2ZWwgb2YgdGhlIGVsZW1lbnQsIFwiaXRlbWlkXCI9PmlkIG9mIHRoZSBlbGVtZW50LCBcImFsaWFzXCI9PmFsaWFzIG9mIHRoZSBlbGVtZW50LiI7DQokbGFuZ1siZXZlbnRkZXNjX2RlbGV0ZWQiXSA9ICJDYWxsZWQgYWZ0ZXIgYW4gZWxlbWVudCBoYXMgYmVlbiBkZWxldGVkLiBQYXJhbXM6IFwid2hhdFwiPT5sZXZlbCBvZiB0aGUgZWxlbWVudC4iOw0KJGxhbmdbImV2ZW50ZGVzY19hZGRlZCJdID0gIkNhbGxlZCBhZnRlciBhbiBlbGVtZW50IGhhcyBiZWVuIGFkZGVkLiBQYXJhbXM6IFwid2hhdFwiPT5sZXZlbCBvZiB0aGUgZWxlbWVudCwgXCJpdGVtaWRcIj0+aWQgb2YgdGhlIGVsZW1lbnQsIFwiYWxpYXNcIj0+YWxpYXMgb2YgdGhlIGVsZW1lbnQuIjsNCg0KLy9QUkVGRVJFTkNFUw0KJGxhbmdbInByZWZlcmVuY2VzIl0gPSAiU2V0dGluZ3MiOw0KJGxhbmdbInByZWZfdGFiZGlzcGxheSJdID0gIkFkbWluIHRhYnMgc2hvd24gdG8gdGhlIG5vcm1hbCB1c2VyIjsNCiRsYW5nWyJoZWxwX3RhYmRpc3BsYXkiXSA9ICIoTm9ybWFsIHVzZXJzIGFyZSB0aG9zZSB3aG8gaGF2ZSBiZWVuIGdpdmVuIHRoZSBcImF2cGxheWVyOiBub3JtYWwgdXNlclwiIHBlcm1pc3Npb24uIFRoZSBsZXZlbC1zcGVjaWZpYyBtYW5hZ2UgcGVybWlzc2lvbnMgb3ZlcnJpZGUgdGhlIHZpc2libGUgdGFicyBzZWxlY3RlZCBoZXJlLikiOw0KJGxhbmdbInByZWZfc2VhcmNobW9kdWxlX2luZGV4Il0gPSAiSW5kZXggdGhlIGZvbGxvd2luZyBsZXZlbHMgZm9yIHRoZSBzZWFyY2ggbW9kdWxlIjsNCiRsYW5nWyJoZWxwX3NlYXJjaG1vZHVsZV9pbmRleCJdID0gIihUaGlzIGhhcyBubyBlZmZlY3Qgb24gdGhpcyBtb2R1bGUgb3duIGludGVybmFsIHNlYXJjaCBhY3Rpb24uIEFsc28gbm90ZSB0aGF0IGFmdGVyIGNoYW5naW5nIHRoZXNlIHNldHRpbmdzIHlvdSBtaWdodCBoYXZlIHRvIHJlaW5kZXggdG8gZ2V0IG9mIHByZXZpb3VzbHkgaW5kZXhlZCBkYXRhLCB3aGljaCB5b3UgbWF5IGRvIGluIEV4dGVuc2lvbi0mZ3Q7U2VhcmNoLikiOw0KJGxhbmdbInByZWZfbmV3aXRlbXNmaXJzdCJdID0gIk5ldyBpdGVtcyBzaG91bGQgYXBwZWFyIG9uIHRvcCBmb3IgdGhlIGZvbGxvd2luZyBsZXZlbHMiOw0KJGxhbmdbImhlbHBfbmV3aXRlbXNmaXJzdCJdID0gIihPYnZpb3VzbHksIGlmIHRoZSBsZXZlbCBpcyBub3QgY2hlY2tlZCBoZXJlLCBuZXcgaXRlbXMgd2lsbCBhcHBlYXIgYXQgdGhlIGJvdHRvbSBvZiB0aGUgbGlzdCkiOw0KJGxhbmdbInByZWZfcmVzdHJpY3RfcGVybWlzc2lvbnMiXSA9ICJTaG91bGQgd2UgPGI+cmVzdHJpY3Q8L2I+IHRoZSBtYW5hZ2VtZW50IG9mIGl0ZW1zIHRvIHRoZSB1c2VycyB3aG8gaGF2ZSBzcGVjaWZpYyBtYW5hZ2VtZW50IHBlcm1pc3Npb25zIGZvciB0aGUgbGV2ZWw/IChpZiB5b3UgZG8gbm90IHdpc2ggdG8gc3BlY2lmeSBkaWZmZXJlbnQgcGVybWlzc2lvbnMgZm9yIGRpZmZlcmVudCBsZXZlbHMsIHlvdSBjYW4gdW5jaGVjayB0aGlzIGFuZCBzaW1wbHkgdXNlIHRoZSBcImF2cGxheWVyOiBub3JtYWwgdXNlclwiIHBlcm1pc3Npb24uKSI7DQokbGFuZ1sicHJlZl9kaXNwbGF5X2ZpbHRlciJdID0gIkRpc3BsYXkgPGI+ZmlsdGVyPC9iPiBvbiB0aGUgbW9kdWxlIGFkbWluIHBhbmVsPyI7DQokbGFuZ1sicHJlZl9kaXNwbGF5X2luc3RhbnRzZWFyY2giXSA9ICJEaXNwbGF5IDxiPmluc3RhbnQgc2VhcmNoPC9iPiBvbiB0aGUgbW9kdWxlIGFkbWluIHBhbmVsPyI7DQokbGFuZ1sicHJlZl9kaXNwbGF5X2luc3RhbnRzb3J0Il0gPSAiRGlzcGxheSA8Yj5pbnN0YW50IHNvcnQ8L2I+IGJ5IGNvbHVtbiBsaW5rcz8iOw0KJGxhbmdbInByZWZfZWRpdGFibGVfYWxpYXNlcyJdID0gIlNob3VsZCB0aGUgPGI+YWxpYXM8L2I+IG9mIGl0ZW1zIGJlIG1hbnVhbGx5IGVkaXRhYmxlPyI7DQokbGFuZ1sicHJlZl9mb3JjZV9saXN0Il0gPSAiU2hvdWxkIHRoZSA8Yj5mb3JjZWxpc3Q8L2I+IHBhcmFtZXRlciBiZSBlbmFibGVkIGJ5IGRlZmF1bHQ/IChsaXN0IHZpZXcgd2lsbCBiZSBzaG93biBldmVuIHdoZW4gdGhlcmUgaXMgb25seSBvbmUgaXRlbSkiOw0KJGxhbmdbInByZWZfZGVsZXRlX2ZpbGVzIl0gPSAiV2hlbiBhbiBpdGVtIGlzIDxiPmRlbGV0ZWQ8L2I+LCBzaG91bGQgdGhlIGFzc29jaWF0ZWQgZmlsZXMgYmUgYWxzbyBkZWxldGVkPyAocHJvdmlkZWQgdGhlIGl0ZW0gaGFzIGFueSBmaWxlIGZpZWxkcy4uLikiOw0KJGxhbmdbInByZWZfYWxsb3dfc3FsIl0gPSAiQWxsb3cgbWFudWFsIFNRTCBxdWVyaWVzPyAod2l0aCB0aGUgXCJxdWVyeVwiIHBhcmFtZXRlcikiOw0KJGxhbmdbInByZWZfdXNlX2hpZXJhcmNoeSJdID0gIkRpc3BsYXkgZnVsbCBoaWVyYXJjaHkgaW4gZmlsdGVyIGFuZCBwYXJlbnQgZHJvcGRvd24/IChhZG1pbiBwYW5lbCkiOw0KJGxhbmdbInByZWZfb3JkZXJieW5hbWUiXSA9ICJPcmRlciBwYXJlbnQgZHJvcGRvd25zIGJ5IG5hbWU/IjsNCiRsYW5nWyJwcmVmX3Nob3d0aHVtYm5haWxzIl0gPSAiRGlzcGxheSBhbGwgdGh1bWJuYWlscyBpbnN0ZWFkIG9mIGEgdGFibGUgd2hlbiBzZWxlY3RlZCBpbWFnZSBmaWxlcz8iOw0KJGxhbmdbInByZWZfbWF4c2hvd25wYWdlcyJdID0gIk1heCBudW1iZXIgb2YgcGFnZXMgZGlzcGxheWVkIGluIHRoZSBwYWdlIG1lbnU6ICI7DQokbGFuZ1sicHJlZl9hdXRvaW5jcmVtZW50X2FsaWFzIl0gPSAiQXV0by1pbmNyZW1lbnQgYWxpYXNlcyBpbiBjYXNlIG9mIGlkZW50aWNhbCBuYW1lcz8iOw0KJGxhbmdbInByZWZfZGVjb2RlZW50aXRpZXMiXSA9ICJEZWNvZGUgaHRtbCBlbnRpdGllcyBvbiBmcm9udGVuZCBmb3JtIHN1Ym1pc3Npb24uIjsNCiRsYW5nWyJwcmVmX2Zyb250ZW5kIl0gPSAiRnJvbnRlbmQgZWRpdCI7DQokbGFuZ1siaGVscF9mcm9udGVuZCJdID0gIkZvciBzZWN1cml0eSwgZnJvbnRlbmQgZWRpdGlvbiBzaG91bGQgYmUgdXNlZCB3aXRoIHRoZSBGcm9udCBFbmQgVXNlcnMgbW9kdWxlLiBTZWUgPGEgaHJlZj1cIm1vZHVsZXMvYXZwbGF5ZXIvZG9jL2ZhcS5odG1sI3EyMFwiIHRhcmdldD1cIl9ibGFua1wiPkZhcTwvYT4gZm9yIGhlbHAgb24gcGVybWlzc2lvbiBpbnRlZ3JhdGlvbi4iOw0KJGxhbmdbInByZWZfZmVfd3lzaXd5ZyJdID0gIkVuYWJsZSB3eXNpd3lnIGluIHRoZSBmcm9udGVuZCAobXVzdCBiZSBlbmFibGVkIGluIHRoZSBHbG9iYWwgU2V0dGluZ3MgdG9vKSI7DQokbGFuZ1sicHJlZl9mZV9kZWNvZGVlbnRpdGllcyJdID0gIkRlY29kZSBodG1sIGVudGl0aWVzIGZyb20gZnJvbnRlbmQgZm9ybXMuIFRoaXMgaXMgbm90IHJlY29tbWFuZGVkLiI7DQokbGFuZ1sicHJlZl9mZV9hbGxvd2ZpbGVzIl0gPSAiQWxsb3cgZmlsZSB1cGxvYWQgZnJvbSB0aGUgZnJvbnRlbmQuIjsNCiRsYW5nWyJwcmVmX2ZlX2FsbG93bmFtZWNoYW5nZSJdID0gIkFsbG93IGZyb250ZW5kIHVzZXJzIHRvIGNoYW5nZSB0aGUgbmFtZSAoYW5kIHRocm91Z2ggaXQgdGhlIGFsaWFzKSBvZiB0aGUgaXRlbSB0aGV5IGFyZSBlZGl0aW5nLiI7DQokbGFuZ1sicHJlZl9mZV9hbGxvd2FkZG5ldyJdID0gIkFsbG93IGZyb250ZW5kIHVzZXJzIHRvIGFkZCBuZXcgZWxlbWVudHMuIjsNCiRsYW5nWyJwcmVmX2ZlX3VzZWNhcHRjaGEiXSA9ICJVc2UgY2FwdGNoYT8gKG1vZHVsZSBDYXB0Y2hhIHJlcXVpcmVkKSI7DQokbGFuZ1sicHJlZl9mZV9hZnRlcnN1Ym1pdCJdID0gIk9uY2UgdGhlIGZvcm0gaXMgc3VibWl0dGVkLCByZWRpcmVjdCB0byAiOw0KJGxhbmdbInByZWZfZmVfbWF4ZmlsZXNpemUiXSA9ICJNYXhpbXVtIHNpemUsIGluIGJ5dGVzLCBvZiB0aGUgZmlsZXMgdXBsb2FkZWQgdGhyb3VnaCB0aGUgZnJvbnRlbmQgKGNhbm5vdCBiZSBvdmVyIHBocC5pbmkgbGltaXQpIjsNCiRsYW5nWyJwcmVmX2FsbG93X2NvbXBsZXhfb3JkZXIiXSA9ICJBbGxvdyBjb21wbGV4IFwib3JkZXJieVwiIHBhcmFtZXRlcnMgKGJldGEpLiI7DQokbGFuZ1sicHJlZl9hZG1pbnBhZ2VzIl0gPSAiTnVtYmVyIG9mIGl0ZW1zIHBlciBwYWdlIGluIHRoZSBhZG1pbiBwYW5lbCAoMCA9IHBhcyBkZSBwYWdpbmF0aW9uKS4iOw0KJGxhbmdbInByZWZfbG9hZF9uYmNoaWxkcmVuIl0gPSAiTG9hZCB0aGUgbnVtYmVyIG9mIGNoaWxkcmVuIChpdGVtLSZndDtuYmNoaWxkcmVuKSBmb3IgYWxsIGl0ZW1zPyI7DQokbGFuZ1sicHJlZl9sb2FkX25leHRwcmV2aW91cyJdID0gIkxvYWQgbmV4dC9wcmV2aW91cyBsaW5rcz8gKGRldGFpbCB2aWV3IG9ubHkpIjsNCiRsYW5nWyJwcmVmX3VzZV9zZXNzaW9uIl0gPSAiVXNlIHNlc3Npb24gdG8gc3RvcmUgYWRtaW4gcGFuZWwgZmlsdGVycy4iOw0KJGxhbmdbInByZWZfbGV2ZWxwYWdpbmF0aW9uIl0gPSAiRGVmYXVsdCBudW1iZXIgb2YgZWxlbWVudCBwZXIgcGFnZSBmb3IgdGhlIGZyb250ZW5kIjsNCiRsYW5nWyJoZWxwX2xldmVscGFnaW5hdGlvbiJdID0gIihFbXB0eSBvciAwIGZvciB3aWxsIGRpc2FibGUgZGVmYXVsdCBwYWdpbmF0aW9uLiBUaGUgbmJwZXJwYWdlIHBhcmFtZXRlciBvdmVycmlkZXMgdGhlc2Ugc2V0dGluZ3MuKSI7DQoNCi8vUEFSQU1FVEVSUw0KJGxhbmdbInBoZWxwX2FjdGlvbiJdID0gIlBvc3NpYmxlIGFjdGlvbnM6IFwibGlua1wiLCBcInNlYXJjaFwiLCBcImJyZWFkY3J1bWJzXCIsIFwiZGVmYXVsdFwiLCBcInNpdGVtYXBcIiBhbmQgXCJmcm9udGVuZF9lZGl0XCIuIjsNCiRsYW5nWyJwaGVscF93aGF0Il0gPSAiQWxsb3dzIHlvdSB0byBzcGVjaWZ5IHRoZSBsZXZlbCB5b3Ugd2lzaCB0byBkaXNwbGF5LiBQb3NzaWJsZSB2YWx1ZXMgYXJlIDogPGk+cGxheWVyLCBtZWRpYWZpbGU8L2k+IjsNCiRsYW5nWyJwaGVscF9hbGlhcyJdID0gIkFsaWFzIG9mIHRoZSBpdGVtIHlvdSB3aXNoIHRvIGRpc3BsYXkuIjsNCiRsYW5nWyJwaGVscF9wYXJlbnQiXSA9ICJJZiB5b3Ugd2lzaCB0byBsaW1pdCB0aGUgZGlzcGxheWVkIGVsZW1lbnRzIHRvIHRob3NlIHdobyBiZWxvbmcgdG8gYSBzcGVjaWZpYyBwYXJlbnQsIGVudGVyIHRoZSBwYXJlbnQgYWxpYXMgaGVyZS4iOw0KJGxhbmdbInBoZWxwX2xpbWl0Il0gPSAiTGltaXQgdGhlIG51bWJlciBvZiBpdGVtIHJldHVybmVkIGJ5IHRoZSBxdWVyeSAoMCA9IG5vIGxpbWl0KSI7DQokbGFuZ1sicGhlbHBfbmJwZXJwYWdlIl0gPSAiU2V0IHRoZSBudW1iZXIgb2YgaXRlbXMgZGlzcGxheWVkIG9uIGVhY2ggcGFnZS4iOw0KJGxhbmdbInBoZWxwX29yZGVyYnkiXSA9ICJZb3UgY2FuIHNldCB0byBcIm1vZGlmaWVkXCIsIFwiY3JlYXRlZFwiIG9yIHRoZSBuYW1lIG9mIGEgZmllbGQgdG8gb3JkZXIgaXRlbXMgaW4gdGhpcyB3YXkuIEFueSBvdGhlciB2YWx1ZSB3aWxsIG9yZGVyIHdpdGggdGhlIGl0ZW0gb3JkZXIuIjsNCiRsYW5nWyJwaGVscF9kZXRhaWxwYWdlIl0gPSAiU3BlY2lmeSB0aGUgYWxpYXMgb2YgdGhlIHBhZ2UgaW4gd2hpY2ggbGlua3MgdG8gY2hpbGQgZWxlbWVudHMgc2hvdWxkIGJlIHNlbnQgKGlmIG5vbmUgaXMgc3BlY2lmaWVkLCBjdXJyZW50IHBhZ2UgaXMgdXNlZCkiOw0KJGxhbmdbInBoZWxwX3Nob3dkZWZhdWx0Il0gPSAiU2V0IHRvIFwidHJ1ZVwiIGlmIHlvdSB3aXNoIHRvIGRpc3BsYXkgdGhlIGRlZmF1bHQgZWxlbWVudC4iOw0KJGxhbmdbInBoZWxwX3JhbmRvbSJdID0gIlNldCB0byBhIG51bWJlciB0byBzaG93IGEgbnVtYmVyIG9mIHJhbmRvbSBlbGVtZW50cyBmcm9tIHlvdXIgcXVlcnkuIjsNCiRsYW5nWyJwaGVscF9maW5hbHRlbXBsYXRlIl0gPSAiU3BlY2lmeSB0aGUgdGVtcGxhdGUgeW91IHdpc2ggdG8gdXNlIGZvciB0aGUgZGV0YWlsIHZpZXcgb2YgdGhlIGZpbmFsIGxldmVsLiI7DQokbGFuZ1sicGhlbHBfbGlzdHRlbXBsYXRlIl0gPSAiU3BlY2lmeSB0aGUgdGVtcGxhdGUgeW91IHdpc2ggdG8gdXNlIGZvciB0aGUgbGlzdCB2aWV3LiI7DQokbGFuZ1sicGhlbHBfZm9yY2VsaXN0Il0gPSAiU2V0IHRvIDEgaWYgeW91IHdpc2ggdG8gZGlzcGxheSBhIGxpc3QgdmlldyBldmVuIHdoZW4gdGhlcmUgaXMgb25seSBvbmUgZWxlbWVudC4iOw0KJGxhbmdbInBoZWxwX2ludGVybmFsIl0gPSAiRm9yIGludGVybmFsIHVzZTsgc3BlY2lmeSB0aGUgcGFnZSAod2hlbiB1c2luZyBuYnBlcnBhZ2UpLiI7DQokbGFuZ1sicGhlbHBfcXVlcnkiXSA9ICJGb3Igb3B0aW9uYWwgdXNlIHdpdGggdGhlIFwiZGVmYXVsdFwiIGFjdGlvbi4gU3BlY2lmaWVzIHRoZSBpZCBvZiB0aGUgcXVlcnkgdG8gdXNlLiI7DQokbGFuZ1sicGhlbHBfaW5saW5lIl0gPSAiTWFrZXMgdGhlIGxpbmtzIGlubGluZS4iOw0KJGxhbmdbInBoZWxwX3NlYXJjaG1vZGUiXSA9ICJGb3IgdXNlIHdpdGggdGhlIFwic2VhcmNoXCIgYWN0aW9uLiBTZXQgdG8gXCJzaW1wbGVcIiB0byBzZWFyY2ggaW4gYWxsIHRleHQgZmllbGRzLCBhbmQgXCJhZHZhbmNlZFwiIHRvIHNlYXJjaCBpbiBzcGVjaWZpYyBmaWVsZHMuIjsNCiRsYW5nWyJwaGVscF90b2FjdGlvbiJdID0gIkZvciB1c2Ugd2l0aCB0aGUgXCJsaW5rXCIgYWN0aW9uLiBTZXRzIHRoZSBhY3Rpb24gdG8gd2hpY2ggdGhlIGxpbmsgc2hvdWxkIHJlZGlyZWN0LiI7DQoNCj8+]]></data>
	</file>
	<file>
	  <filename>/lang/ext/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/ext/de_DE.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KCSRsYW5nWyJmcmllbmRseW5hbWUiXSA9ICJBVlBsYXllciI7DQoNCgkkbGFuZ1sibW9kZGVzY3JpcHRpb24iXSA9ICJQbGF5ZXIgRnJvbnQgRW5kIjsNCg0KCSRsYW5nWyJhZG1pbmRlc2NyaXB0aW9uIl0gPSAiUGxheWVyIEZyb250IEVuZCI7DQoNCg0KDQoJJGxhbmdbInBhZ2VtZW51ZGVsaW1pdGVyIl0gPSAiJm5ic3A7JiMxMjQ7Jm5ic3A7IjsNCg0KCSRsYW5nWyJwYWdlbWVudW92ZXJmbG93Il0gPSAiJm5ic3A7Li4uJm5ic3A7IjsNCg0KCQ0KDQovLyBzdHJpbmdzIGZvciBwbGF5ZXINCg0KCSRsYW5nWyJwbGF5ZXIiXSA9ICJQbGF5ZXIiOw0KDQoJJGxhbmdbInBsYXllcl9wbHVyYWwiXSA9ICJQbGF5ZXIiOw0KDQoJJGxhbmdbImFkZF9wbGF5ZXIiXSA9ICJQbGF5ZXIgaGluenVmw7xnZW4iOw0KDQoJJGxhbmdbImVkaXRfcGxheWVyIl0gPSAiUGxheWVyIGJlYXJiZWl0ZW4iOw0KDQoJJGxhbmdbImZpbHRlcmJ5X3BsYXllciJdID0gIk5hY2ggUGxheWVybiBmaWx0ZXJuIjsNCg0KCSRsYW5nWyJwbGF5ZXJfbG9jYXRpb24iXSA9ICJTcGVpY2hlcnBsYXR6IjsNCg0KCSRsYW5nWyJwbGF5ZXJfd2lkdGgiXSA9ICJCcmVpdGUiOw0KDQoJJGxhbmdbInBsYXllcl9oZWlnaHQiXSA9ICJIw7ZoZSI7DQoNCgkkbGFuZ1sicGxheWVyX3BhcmFtZXRlcnMiXSA9ICJQYXJhbWV0ZXJzICh0cmVubmVuIG1pdCAmYW1wOykiOw0KDQoJJGxhbmdbInBsYXllcl91c2VyZGVmaW5lZDEiXSA9ICJTZWxic3RkZWZpbmllcnRlcyBGZWxkIDEiOw0KDQoJJGxhbmdbInBsYXllcl9wbGF5ZXJ0eXBlIl0gPSAiUGxheWVyIFR5cCI7DQoNCgkkbGFuZ1sicGxheWVyX3BsYXllcnR5cGVfb3B0aW9uXzAiXSA9ICJtcDMiOw0KDQoJJGxhbmdbInBsYXllcl9wbGF5ZXJ0eXBlX29wdGlvbl8xIl0gPSAiZmx2IjsNCg0KCSRsYW5nWyJwcm9tcHRfZGVsZXRlcGxheWVyIl0gPSAiV29sbGVuIFNpZSBkaWVzZW4gUGxheWVyICglcykgd2lya2xpY2ggbMO2c2NoZW4/IEFsbGUgJ2NoaWxkcmVuJyB3ZXJkZW4gdmVybG9yZW5nZWhlbi4gV2VpdGVybWFjaGVuPyI7DQoNCgkNCg0KLy8gc3RyaW5ncyBmb3IgTWVkaWVuZGF0ZWkNCg0KCSRsYW5nWyJtZWRpYWZpbGUiXSA9ICJNZWRpYWRhdGVpIjsNCg0KCSRsYW5nWyJtZWRpYWZpbGVfcGx1cmFsIl0gPSAiTWVkaWVuZGF0ZWllbiI7DQoNCgkkbGFuZ1siYWRkX21lZGlhZmlsZSJdID0gIk1lZGlhZGF0ZWkgaGluenVmw7xnZW4iOw0KDQoJJGxhbmdbImVkaXRfbWVkaWFmaWxlIl0gPSAiTWVkaWVuZGF0ZWkgYmVhcmJlaXRlbiI7DQoNCgkkbGFuZ1siZmlsdGVyYnlfbWVkaWFmaWxlIl0gPSAiTWl0IE1lZGlhZGF0ZWkgZmlsdGVuIjsNCg0KCSRsYW5nWyJtZWRpYWZpbGVfbWVkaWFmaWxlIl0gPSAiTWVkaWFkYXRlaSI7DQoNCgkkbGFuZ1sibWVkaWFmaWxlX3NlbGVjdF9tZWRpYWZpbGUiXSA9ICJNZWRpZW5kYXRlaSBhdXN3w6RobGVuIjsNCg0KCSRsYW5nWyJtZWRpYWZpbGVfcGljdHVyZSJdID0gIlRodW1ibmFpbCI7DQoNCgkkbGFuZ1sibWVkaWFmaWxlX3NlbGVjdF9waWN0dXJlIl0gPSAiVGh1bWJuYWlsIGF1c3fDpGhsZW4iOw0KDQoJJGxhbmdbIm1lZGlhZmlsZV91c2VyZGVmaW5lZDIiXSA9ICJTZWxic3RkZWZpbmllcnRlcyBGZWxkICAyIjsNCg0KCSRsYW5nWyJwcm9tcHRfZGVsZXRlbWVkaWFmaWxlIl0gPSAiV29sbGVuIFNpZSBkaWVzZSBNZWRpYWRhdGVpICglcykgd2lya2xpY2ggbMO2c2NoZW4/IFdlaXRlcm1hY2hlbj8iOw0KDQoJJGxhbmdbInRlbXBsYXRlaGVscCJdID0gJzxkaXY+PGgzIHN0eWxlPSJjdXJzb3I6IHBvaW50ZXI7IiBvbmNsaWNrPSJjdGxtbV9kaXNwbGF5dG9nZ2xlKHRoaXMpOyI+Jmd0OyBTbWFydHkgVmFyaWFibGVuIGbDvHIgTGlzdGVuLVZvcmxhZ2UgZsO8cjogcGxheWVyPC9oMz48ZGl2IGNsYXNzPSJ0cGx2YXJzX2hpZGUiPjx1bD4NCg0KCTxsaT4kbGV2ZWx0aXRsZTwvbGk+DQoNCgk8bGk+JHBhcmVudG9iaiAoZmFsbHMgcGFyZW50IGRlZmluaWVydCBpc3QpPC9saT4NCg0KCTxsaT4kaXRlbWxpc3QgKEFycmF5IGRlciBFaW50csOkZ2UpPC9saT4NCg0KCTxsaT4kaXRlbS0mZ3Q7aXNfc2VsZWN0ZWQ8L2xpPg0KDQoJPGxpPiRpdGVtLSZndDtuYmNoaWxkcmVuICh3ZW5uIGdlbGFkZW4pPC9saT4NCg0KCTxsaT4kaXRlbS0mZ3Q7bmFtZTwvbGk+DQoNCgk8bGk+JGl0ZW0tJmd0O2FsaWFzPC9saT4NCg0KCTxsaT4kaXRlbS0mZ3Q7ZGV0YWlsbGluazwvbGk+DQoNCgk8bGk+JGl0ZW0tJmd0O2RldGFpbHVybDwvbGk+DQoNCgk8bGk+JGl0ZW0tJmd0O2xvY2F0aW9uPC9saT4NCg0KCTxsaT4kaXRlbS0mZ3Q7d2lkdGg8L2xpPg0KDQoJPGxpPiRpdGVtLSZndDtoZWlnaHQ8L2xpPg0KDQoJPGxpPiRpdGVtLSZndDtwYXJhbWV0ZXJzPC9saT4NCg0KCTxsaT4kaXRlbS0mZ3Q7dXNlcmRlZmluZWQxPC9saT4NCg0KCTxsaT4kaXRlbS0mZ3Q7dXNlcmRlZmluZWQxX25hbWV2YWx1ZTwvbGk+DQoNCgk8bGk+JGl0ZW0tJmd0O3BsYXllcnR5cGU8L2xpPg0KDQoJPGxpPiRpdGVtLSZndDtwbGF5ZXJ0eXBlX25hbWV2YWx1ZTwvbGk+DQoNCgk8bGk+JGl0ZW0tJmd0O2lzZGVmYXVsdDwvbGk+DQoNCgk8bGk+JGl0ZW0tJmd0O2RhdGVfbW9kaWZpZWQ8L2xpPg0KDQoJPGxpPiRpdGVtLSZndDtkYXRlX2NyZWF0ZWQ8L2xpPg0KDQoJPC91bD48YnIvPjxici8+PC9kaXY+PC9kaXY+PGRpdj48aDMgc3R5bGU9ImN1cnNvcjogcG9pbnRlcjsiIG9uY2xpY2s9ImN0bG1tX2Rpc3BsYXl0b2dnbGUodGhpcyk7Ij4mZ3Q7IFNtYXJ0eSBWYXJpYWJsZW4gZsO8ciBMaXN0ZW52b3JsYWdlIGbDvHI6IE1lZGllbmRhdGVpPC9oMz48ZGl2IGNsYXNzPSJ0cGx2YXJzX2hpZGUiPjx1bD4NCg0KCTxsaT4kbGV2ZWx0aXRsZTwvbGk+DQoNCgk8bGk+JHBhcmVudG9iaiAoZmFsbHMgcGFyZW50IGRlZmluaWVydCBpc3QpPC9saT4NCg0KCTxsaT4kaXRlbWxpc3QgKEFycmF5IGRlciBFaW50csOkZ2UpPC9saT4NCg0KCTxsaT4kaXRlbS0mZ3Q7aXNfc2VsZWN0ZWQ8L2xpPg0KDQoJPGxpPiRpdGVtLSZndDtuYW1lPC9saT4NCg0KCTxsaT4kaXRlbS0mZ3Q7YWxpYXM8L2xpPg0KDQoJPGxpPiRpdGVtLSZndDtkZXRhaWxsaW5rPC9saT4NCg0KCTxsaT4kaXRlbS0mZ3Q7ZGV0YWlsdXJsPC9saT4NCg0KCTxsaT4kaXRlbS0mZ3Q7bWVkaWFmaWxlIChEYXRlaS1PYmpla3QpPC9saT4NCg0KCTxsaT4kaXRlbS0mZ3Q7cGljdHVyZSAoRGF0ZWktT2JqZWt0KTwvbGk+DQoNCgk8bGk+JGl0ZW0tJmd0O3VzZXJkZWZpbmVkMjwvbGk+DQoNCgk8bGk+JGl0ZW0tJmd0O3VzZXJkZWZpbmVkMl9uYW1ldmFsdWU8L2xpPg0KDQoJPGxpPiRpdGVtLSZndDtwYXJlbnRfaWQ8L2xpPg0KDQoJPGxpPiRpdGVtLSZndDtwYXJlbnRfYWxpYXM8L2xpPg0KDQoJPGxpPiRpdGVtLSZndDtwYXJlbnRfbmFtZTwvbGk+DQoNCgk8bGk+JGl0ZW0tJmd0O3BhcmVudGxpbms8L2xpPg0KDQoJPGxpPiR0aWVtLSZndDtwYXJlbnR1cmw8L2xpPg0KDQoJPGxpPiRpdGVtLSZndDtpc2RlZmF1bHQ8L2xpPg0KDQoJPGxpPiRpdGVtLSZndDtkYXRlX21vZGlmaWVkPC9saT4NCg0KCTxsaT4kaXRlbS0mZ3Q7ZGF0ZV9jcmVhdGVkPC9saT4NCg0KCTwvdWw+PGJyLz48YnIvPjwvZGl2PjwvZGl2PjxkaXY+PGgzIHN0eWxlPSJjdXJzb3I6IHBvaW50ZXI7IiBvbmNsaWNrPSJjdGxtbV9kaXNwbGF5dG9nZ2xlKHRoaXMpOyI+Jmd0OyBTbWFydHkgVmFyaWFibGVuIGbDvHIgZGllIERldGFpbC1Wb3JsYWdlPC9oMz48ZGl2IGNsYXNzPSJ0cGx2YXJzX2hpZGUiPjx1bD4NCg0KCTxsaT4kbGV2ZWx0aXRsZTwvbGk+DQoNCgk8bGk+JHByZXZpb3VzX2l0ZW0gKHdlbm4gZ2VsYWRlbik8L2xpPg0KDQoJPGxpPiRuZXh0X2l0ZW0gKHdlbm4gZ2VsYWRlbik8L2xpPg0KDQoJPGxpPiRpdGVtLSZndDtuYW1lPC9saT4NCg0KCTxsaT4kaXRlbS0mZ3Q7YWxpYXM8L2xpPg0KDQoJPGxpPiRpdGVtLSZndDttZWRpYWZpbGUgKERhdGVpLU9iamVrdCk8L2xpPg0KDQoJPGxpPiRpdGVtLSZndDtwaWN0dXJlIChEYXRlaS1PYmpla3QpPC9saT4NCg0KCTxsaT4kaXRlbS0mZ3Q7dXNlcmRlZmluZWQyPC9saT4NCg0KCTxsaT4kaXRlbS0mZ3Q7dXNlcmRlZmluZWQyX25hbWV2YWx1ZTwvbGk+DQoNCgk8bGk+JGl0ZW0tJmd0O3BhcmVudF9pZDwvbGk+DQoNCgk8bGk+JGl0ZW0tJmd0O3BhcmVudF9hbGlhczwvbGk+DQoNCgk8bGk+JGl0ZW0tJmd0O3BhcmVudF9uYW1lPC9saT4NCg0KCTxsaT4kaXRlbS0mZ3Q7cGFyZW50bGluazwvbGk+DQoNCgk8bGk+JHRpZW0tJmd0O3BhcmVudHVybDwvbGk+DQoNCgk8bGk+JGl0ZW0tJmd0O2lzZGVmYXVsdDwvbGk+DQoNCgk8bGk+JGl0ZW0tJmd0O2RhdGVfbW9kaWZpZWQ8L2xpPg0KDQoJPGxpPiRpdGVtLSZndDtkYXRlX2NyZWF0ZWQ8L2xpPg0KDQoJPGxpPiRsYWJlbHMtPi4uLjwvbGk+DQoNCgk8L3VsPjxici8+PHA+SW0gImZpbmFsIGxldmVsIGRldGFpbCB0ZW1wbGF0ZSIga8O2bm5lbiBTaWUgZGFzIE9iamVrdCAkbGFiZWxzIG51dHplbiwgdW0gc3ByYWNoLXNwZXppZmlzY2hlIEZlbGQtbGFiZWxzIGF1c3p1Z2ViZW4gICgkbGFiZWxzLT5maWVsZG5hbWUpLjwvcD48cD5EYXMgUGFyZW50LU9iamVrdCBlcmhhbHRlbiBTaWUgbWl0ICRpdGVtLT5wYXJlbnRfb2JqZWN0LT5wYXJlbnRfb2JqZWN0LT4uLi4gdW5kIHNvIHdlaXRlci48L3A+PGJyLz48L2Rpdj48L2Rpdj4NCg0KPGRpdj48aDMgc3R5bGU9ImN1cnNvcjogcG9pbnRlcjsiIG9uY2xpY2s9ImN0bG1tX2Rpc3BsYXl0b2dnbGUodGhpcyk7Ij4mZ3Q7IERhdGVpIE9iamVrdDwvaDM+PGRpdiBjbGFzcz0idHBsdmFyc19oaWRlIj4NCg0KPHVsPg0KDQo8bGk+JGZpbGUtJmd0O2ZpbGVwYXRoIChyZWxhdGl2KTwvbGk+DQoNCjxsaT4kZmlsZS0mZ3Q7ZXh0PC9saT4NCg0KPGxpPiRmaWxlLSZndDt1cmwgKGFic29sdXRlIFVSTCk8L2xpPg0KDQo8bGk+JGZpbGUtJmd0O3NpemUgKEdyw7bDn2UgaW4gYnl0ZXMpPC9saT4NCg0KPGxpPiRmaWxlLSZndDtzaXplX3dmb3JtYXQgKGZvcm1hdGllcnRlIEdyw7bDn2UpPC9saT4NCg0KPGxpPiRmaWxlLSZndDtpbWFnZXNpemUgKG51ciBmw7xyIEJpbGQtRGF0ZWllbik8L2xpPg0KDQo8bGk+JGZpbGUtJmd0O3dpZHRoIChudXIgZsO8ciBCaWxkLURhdGVpZW4pPC9saT4NCg0KPGxpPiRmaWxlLSZndDtoZWlnaHQgKG51ciBmw7xyIEJpbGQtRGF0ZWllbik8L2xpPg0KDQo8bGk+JGZpbGUtJmd0O2ltYWdlIChJbWFnZSBUYWc7IG51ciBmw7xyIEJpbGQtRGF0ZWllbik8L2xpPg0KDQo8bGk+JGZpbGUtJmd0O3RodW1ibmFpbCAoVGh1bWJuYWlsIFVybCwgd2VubiBub3R3ZW5kaWcpPC9saT4NCg0KPGxpPiRmaWxlLSZndDtmaWxlbXRpbWUgKGxldHp0ZSDDhG5kZXJ1bmcsIFVuaXggWmVpdGZvcm1hdCk8L2xpPg0KDQo8bGk+JGZpbGUtJmd0O21vZGlmaWVkIChsZXR6dGUgw4RuZGVydW5nLCBmb3JtYXRpZXJ0ZXMgWmVpdGZvcm1hdCk8L2xpPg0KDQo8L3VsPjxici8+PGJyLz48L2Rpdj48L2Rpdj4NCg0KPGRpdj48aDMgc3R5bGU9ImN1cnNvcjogcG9pbnRlcjsiIG9uY2xpY2s9ImN0bG1tX2Rpc3BsYXl0b2dnbGUodGhpcyk7Ij4mZ3Q7IEJyZWFkY3J1bWJzPC9oMz48ZGl2IGNsYXNzPSJ0cGx2YXJzX2hpZGUiPg0KDQoJCQkJPHA+SW4gZWluZXIgTW9kdWwtVm9ybGFnZSBrw7ZubmVuIFNpZSBkaWUgIkJyZWFkY3J1bWJzLU5hdmlnYXRpb24iIG1pdCBkZW0gIHthdnBsYXllcl9icmVhZGNydW1ic30gVGFnIG51dHplbi4gU2llIGvDtm5uZW4gZGUgZ2xlaWNoZW4gUGFyYW1ldGVyIHdpZSBiZWltICJDb3JlIi1CcmVhZGNydW1icy1UYWcgbnV0emVuICAoaW5pdGlhbCwgZGVsaW1pdGVyLCBjbGFzc2lkLCBjdXJyZW50Y2xhc3NpZCksIGdlbmF1IHdpZSBhdWNoIGRlbiAgInN0YXJ0bGV2ZWwiIFBhcmFtZXRlci48YnIvPg0KDQoJCQkJQXXDn2VyaGFsYiBkZXIgTW9kdWwtVm9ybGFnZW4sIGlyZ2VuZHdvIGF1ZiBkZXIgU2VpdGUsIGvDtm5uZW4gU2llIGRpZSBCcmVhZGNydW1icy1GdW5rdGlvbmFsaXTDpHQgPGk+e2Ntc19tb2R1bGUgbW9kdWxlPSJhdnBsYXllciIgYWN0aW9uPSJicmVhZGNydW1icyJ9PC9pPiBlaW5zZXR6ZW4sIGF1Y2ggd2llZGVyIG1pdCBkZW4gZ2xlaWNoZW4gUGFyYW1ldGVybi4uPC9wPjwvZGl2PjwvZGl2Pic7DQoNCg0KDQovLyBGb3IgZmlsZSBmaWVsZHMNCg0KJGxhbmdbIlJlbW92ZSJdID0gIkVudGZlcm5lbiI7DQoNCiRsYW5nWyJkZWxldGUiXSA9ICJMw7ZzY2hlbiI7DQoNCiRsYW5nWyJicm93c2VmaWxlc3RpdGxlIl0gPSAiTmV1ZSBEYXRlaSBob2NobGFkZW4gb2RlciBhdXMgdm9yaGFuZGVuZW4gRGF0ZWllbiBhdXN3w6RobGVuLiI7DQoNCiRsYW5nWyJzaG93aW5nZGlyIl0gPSAiVmVyemVpY2huaXMgYW5zY2hhdWVuIjsNCg0KJGxhbmdbImJyb3dzZWZpbGVzcmVzaXplIl0gPSAiRGFzIEJpbGQgd2lyZCBhdXRvbWF0aXNjaCBpbiBkaWUgcmljaHRpZ2UgR3LDtsOfZSBnZXdhbmRlbHQuIjsNCg0KJGxhbmdbImJyb3dzZWZpbGVjdXJyZW50cGF0aCJdID0gIkVzIHdlcmRlIERhdGVpZW4gYW5nZXplaWd0IGF1czogIjsNCg0KJGxhbmdbInBhcmVudGRpciJdID0gIsOcYmVyZ2VvcmRuZXRlcyBWZXJ6ZWljaG5pcyI7DQoNCiRsYW5nWyJhZGRhZmlsZSJdID0gIkRhdGVpKGVuKSBoaW56dWbDvGdlbiI7DQoNCiRsYW5nWyJzdWJtaXR0aW5nX2ZpbGUiXSA9ICJEYXRlaSB3aXJkIGhvY2hnZWxhZGVuLi4uIjsNCg0KJGxhbmdbImZpbGVuYW1lIl0gPSAiRGF0ZWluYW1lIjsNCg0KJGxhbmdbImltYWdlc2l6ZSJdID0gIkJpbGRncsO2w59lIjsNCg0KJGxhbmdbImZpbGVleHQiXSA9ICJFeHQiOw0KDQokbGFuZ1siZmlsZXNpemUiXSA9ICJEYXRlaWdyw7bDn2UiOw0KDQokbGFuZ1sibGFzdG1vZCJdID0gInp1bGV0enQgZ2XDpG5kZXJ0IjsNCg0KJGxhbmdbImZpbGVvd25lciJdID0gIkVpZ2VudMO8bWVyIjsNCg0KJGxhbmdbImZpbGVwZXJtcyJdID0gIlJlY2h0ZSI7DQoNCiRsYW5nWyJ2aWV3YWxsaW1hZ2VzIl0gPSAiQWxsZSBCaWxkZXIgYW56ZWlnZW4iOw0KDQokbGFuZ1sicG9zdG1heHNpemUiXSA9ICJCZWFjaHRlbjogU2llIGRpZSBtYXhpbWFsZSBEYXRlaWdyw7bDn2UgenVtIEhvY2hsYWRlbiBiZXRyw6RndCAiOw0KDQokbGFuZ1siYWRkZmlsZWlucHV0Il0gPSAiV2VpdGVyZSBEYXRlaSBoaW56dWbDvGdlbiI7DQoNCiRsYW5nWyJ6aXBmaWxlbm90aWNlIl0gPSAiRGllIERhdGVpZW4gc29sbHRlbiBzaWNoIGltIEFyY2hpdi1IYXVwdHZlcnplaWNobmlzIGJlZmluZGVuLiI7DQoNCiRsYW5nWyJ1cGxvYWR6aXBmaWxlIl0gPSAiWklQLURhdGVpIGhvY2hsYWRlbiI7DQoNCg0KDQovLyBzdHJpbmdzIGZvciBnZW5lcmFsIGZpZWxkcw0KDQokbGFuZ1siaWQiXSA9ICJpZCI7DQoNCiRsYW5nWyJuYW1lIl0gPSAiTmFtZSI7DQoNCiRsYW5nWyJhbGlhcyJdID0gIkFsaWFzIjsNCg0KJGxhbmdbImlzZGVmYXVsdCJdID0gIkRlZmF1bHQ/PyI7DQoNCiRsYW5nWyJhY3RpdmUiXSA9ICJBY3RpdiI7DQoNCiRsYW5nWyJwYXJlbnQiXSA9ICJQYXJlbnQiOw0KDQokbGFuZ1sic3VibWl0Il0gPSAiYWJzZW5kZW4iOw0KDQokbGFuZ1siY2FuY2VsIl0gPSAiYWJicmVjaGVuIjsNCg0KJGxhbmdbIm5iY2hpbGRyZW4iXSA9ICJBbnphaGwgRWludHLDpGdlIjsNCg0KJGxhbmdbImRhdGVfbW9kaWZpZWQiXSA9ICJMZXR6dGUgw4RuZGVydW5nIjsNCg0KJGxhbmdbImRhdGVfY3JlYXRlZCJdID0gIkVyc3RlbGxkYXR1bSI7DQoNCgkNCg0KLy8gR0VORVJBTA0KDQokbGFuZ1sicGFnZXMiXSA9ICJTZWl0ZW46ICI7DQoNCiRsYW5nWyJuZXh0cGFnZSJdID0gIk7DpGNoc3RlIFNlaXRlIjsNCg0KJGxhbmdbInByZXZpb3VzcGFnZSJdID0gIlZvcmhlcmlnZSBTZWl0ZSI7DQoNCiRsYW5nWyJhY3RpdmF0ZSJdID0gIkFrdGl2aWVyZW4iOw0KDQokbGFuZ1sidW5hY3RpdmF0ZSJdID0gIkFic2NoYWx0ZW4iOw0KDQokbGFuZ1sic2VhcmNodGhpc3RhYmxlIl0gPSAiTGlzdGUgZHVyY2hzdWNoZW4gbmFjaDoiOw0KDQokbGFuZ1sicmVzZXRvcmRlciJdID0gIlNvcnRpZXJmb2xnZSB6dXLDvGNrc2V0emVuIjsNCg0KJGxhbmdbIlllcyJdID0gIkpBIjsNCg0KJGxhbmdbIk5vIl0gPSAiTkVJTiI7DQoNCiRsYW5nWyJBY3Rpb25zIl0gPSAiQWN0aW9uZW4iOw0KDQokbGFuZ1sicmVvcmRlciJdID0gIk5ldSBvcmRuZW4iOw0KDQokbGFuZ1sibGlzdHRlbXBsYXRlIl0gPSAiVm9ybGFnZW4gYW56ZWlnZW4gZsO8ciI7DQoNCiRsYW5nWyJ0ZW1wbGF0ZXMiXSA9ICJWb3JsYWdlbiI7DQoNCiRsYW5nWyJ0ZW1wbGF0ZSJdID0gIlZvcmxhZ2UiOw0KDQokbGFuZ1siZGVmYXVsdHRlbXBsYXRlcyJdID0gIlN0YW5kYXJkLVZvcmxhZ2VuIjsNCg0KJGxhbmdbInRlbXBsYXRldmFycyJdID0gIlZvcmxhZ2VuLVZhcmlhYmxlbiI7DQoNCiRsYW5nWyJlZGl0dGVtcGxhdGUiXSA9ICJWb3JsYWdlIGJlYXJiZWl0ZW4iOw0KDQokbGFuZ1siZGVmdGVtcGxhdGVmb3IiXSA9ICJTdGFuZGFyZC1MaXN0ZW4tVm9ybGFnZSBmw7xyIExldmVsICI7DQoNCiRsYW5nWyJkZWZkZXRhaWx0ZW1wbGF0ZSJdID0gIlN0YW5kYXJkLUVpbnplbC1Wb3JsYWdlIjsNCg0KJGxhbmdbImRlZnNlYXJjaHJlc3VsdHN0ZW1wbGF0ZSJdID0gIlN0YW5kYXJkLVZvcmxhZ2UgZsO8ciBTdWNoZXJnZWJuaXNzZSI7DQoNCiRsYW5nWyJkZWZlbXB0eXRlbXBsYXRlIl0gPSAiVm9ybGFnZSBmw7xyIGxlZXJlIEVyZ2VibmlzbGlzdGUiOw0KDQokbGFuZ1sidXNlbGV2ZWxsaXN0dHBsIl0gPSAiQmVudXR6ZW4gU2llIGRpZSBMaXN0ZW52b3JsYWdlIGbDvHIgZGFzIGVudHNwcmVjaGVuZGUgTGV2ZWwiOw0KDQokbGFuZ1siYWRkdGVtcGxhdGUiXSA9ICJWb3JsYWdlIGhpbnp1ZsO8Z2VuIjsNCg0KJGxhbmdbImZpbHRlcmJ5Il0gPSAiRmlsdGVybiBuYWNoIjsNCg0KJGxhbmdbInNob3dpbmdvbmx5Il0gPSAiRmlsdGVyOiAiOw0KDQokbGFuZ1sic2hvd2FsbCJdID0gIkFsbGUgYW56ZWlnZW4gKGtlaW4gRklsdGVyKSI7DQoNCiRsYW5nWyJmaWVsZG9wdGlvbnMiXSA9ICJGZWxkIE9wdGlvbmVuIjsNCg0KJGxhbmdbImFkZG9wdGlvbiJdID0gIk9wdGlvbiBoaW56dWbDvGdlbiI7DQoNCiRsYW5nWyJtb2RpZnlhbm9wdGlvbiJdID0gIk9wdGlvbiDDpG5kZXJuIjsNCg0KJGxhbmdbIm1lc3NhZ2VfZGVsZXRlZCJdID0gIkVsZW1lbnQgd3VyZGUgZ2Vsw7ZzY2h0IjsNCg0KJGxhbmdbIm1lc3NhZ2VfbW9kaWZpZWQiXSA9ICLDhG5kZXJ1bmcgd3VyZGUgZ2VzcGVpY2hlcnQiOw0KDQokbGFuZ1sid2FybmluZ190YWIiXSA9ICJBY2h0dW5nOiBTaWNoZXJuIFNpZSBlcnN0IGRpZSDDhG5kZXJ1bmdlbiBpbiBkZW4gYW5kZXJlbiBUYWJzLCBiZXZvciBTaWUgaGllciB3ZWl0ZXJhcmJlaXRlbiAuLi4iOw0KDQokbGFuZ1siZXJyb3JfbWlzc2dpbnZhbHVlIl0gPSAiRWluIG9kZXIgbWVocmVyZSBNdcOfLUZlbGRlciBzaW5kIGxlZXIuIjsNCg0KJGxhbmdbImVycm9yX2FscmVhZHlleGlzdHMiXSA9ICJFcyBnaWJ0IHNjaG9uIGVpbiBFbGVtZW50IG1pdCBkaWVzZW0gTmFtZW4uIjsNCg0KJGxhbmdbImVycm9yX2RhdGUiXSA9ICJEYXMgZWluZ2VnZWJlbmUgRGF0dW0gaXN0IHVuZ8O8bHRpZy4iOw0KDQokbGFuZ1siZXJyb3Jfbm9wYXJlbnQiXSA9ICJLZWluIEVsdGVybi1FbGVtZW50IGRlZmluaWVydCEiOw0KDQokbGFuZ1siZXJyb3Jfbm90Zm91bmQiXSA9ICJEYXMgRWxlbWVudCB3dXJkZSBuaWNodCBnZWZ1bmRlbi4iOw0KDQokbGFuZ1siZXJyb3Jfbm9pdGVtZm91bmQiXSA9ICJOaWNodHMgZ2VmdW5kZW4uIjsNCg0KJGxhbmdbImVycm9yX2RlbmllZCJdID0gIkRhenUgc2luZCBTaWUgbmljaHQgYmVyZWNodGlndCI7DQoNCiRsYW5nWyJlcnJvcl93cm9uZ3F1ZXJ5Il0gPSAiVW5nw7xsdGlnZSBBYmZyYWdlLiI7DQoNCiRsYW5nWyJlcnJvcl9mZWFkZGRlbmllZCJdID0gIlNpZSBzaW5kIG5pY2h0IGF1c3JlaWNoZW5kIGJlcmVjaHRpZ3QgdW0gaGllciB3ZWl0ZXJ6dWFyYmVpdGVuLiI7DQoNCiRsYW5nWyJlcnJvcl93cm9uZ2ZpbGV0eXBlIl0gPSAiRGllc2VyIERhdGVpdHlwIGlzdCBuaWNodCB6dWdlbGFzc2VuLiI7DQoNCiRsYW5nWyJlcnJvcl9jYXB0Y2hhIl0gPSAiRGVyIHZvbiBJaG5lbiBlaW5nZWdlYmVuZSBUZXh0IHBhc3N0IG5pY2h0IHp1bSBDYXB0Y2hhLUJpbGQuIjsNCg0KJGxhbmdbImVycm9yX2ZpbGV0b29iaWciXSA9ICJEaWUgRGF0ZWkgaXN0IHp1IGdyb8OfLCBzaWUgw7xiZXJzY2hyZWl0ZXQgZGllIGVybGF1YnRlIERhdGVpZ3LDtsOfZSB6dW0gSG9jaGxhZGVuLiI7DQoNCiRsYW5nWyJnaXZlbmVycm9yIl0gPSAiRmVobGVyOiAiOw0KDQokbGFuZ1siZmluYWx0ZW1wbGF0ZSJdID0gIlZvcmxhZ2UgZsO8ciBGaW5hbGVzIExldmVsIGFuemVpZ2VuICg/PykgIChNZWRpZWRhdGVpKSI7DQoNCiRsYW5nWyJwcm9tcHRfZGVsZXRlb3B0aW9uIl0gPSAiV29sbGVuIFNpZSBkaWVzZSBPcHRpb24gd2lya2xpY2ggbMO2c2NoZW4/IjsNCg0KJGxhbmdbInByb21wdF9nZW5lcmFsZGVsZXRlIl0gPSAiV29sbGVuIFNpZSBkaWVzIHdpcmtsaWNoIGzDtnNjaGVuPyI7DQoNCiRsYW5nWyJwcm9tcHRfY2FwdGNoYSJdID0gIkdlYmVuIFNpZSBkZW4gaW0gQmlsZCBhbmdlemVpZ3RlbiBUZXh0IGVpbi4iOw0KDQokbGFuZ1sicXVlcmllcyJdID0gIkFiZnJhZ2VuIjsNCg0KJGxhbmdbInF1ZXJ5Il0gPSAiQWJmcmFnZSI7DQoNCiRsYW5nWyJyZXN1bHRzIl0gPSAiRXJnZWJuaXMiOw0KDQokbGFuZ1siY3JlYXRlcXVlcnkiXSA9ICJOZXVlIEFiZnJhZ2UgZXJzdGVsbGVuIjsNCg0KJGxhbmdbInByb21wdF9xdWVyeSJdID0gIkbDvHIgd2VsY2hlcyBMZXZlbCBzb2xsIGRpZSBBYmZyYWdlIGVyc3RlbGx0IHdlcmRlbj8iOw0KDQokbGFuZ1sib3JkZXJieWZpZWxkIl0gPSAiU29ydGllcm5lIG5hY2giOw0KDQokbGFuZ1siZGF0ZV9tb2RpZmllZCJdID0gIkRhdHVtIHd1cmRlIGdlw6RuZGVydCI7DQoNCiRsYW5nWyJmcm9udGVuZF9zdWJtaXQiXSA9ICJBYnNlbmRlbiI7DQoNCiRsYW5nWyJpbnNlcnRfdGFnIl0gPSAiVXNhZ2UiOw0KDQoNCg0KLy8gQlJFQURDUlVNQlMgOg0KDQokbGFuZ1sieW91YXJlaGVyZSJdID0gIkhpZXIgc2luZCBTaWUgZ2VyYWRlOiAiOw0KDQokbGFuZ1siYnJlYWRjcnVtYnNfZGVsaW1pdGVyIl0gPSAiICZndDsgIjsNCg0KDQoNCi8vIFNFQVJDSCA6DQoNCiRsYW5nWyJzZWFyY2h0aXRsZSJdID0gIlN1Y2hlIjsNCg0KJGxhbmdbInNlYXJjaGFnYWluIl0gPSAiRXJuZXV0IHN1Y2hlbiI7DQoNCiRsYW5nWyJzZWFyY2hidG4iXSA9ICJTdWNoZW4hIjsNCg0KJGxhbmdbImNvbnRhaW5zIl0gPSAiZW50aMOkbHQiOw0KDQokbGFuZ1siaXNleGFjdGx5Il0gPSAiaXN0IGdlbmF1IjsNCg0KJGxhbmdbImlzbm90Il0gPSAiaXN0IG5pY2h0IjsNCg0KJGxhbmdbImlzaGlnaGVydGhhbiJdID0gImlzdCBncsO2w59lciBhbHMiOw0KDQokbGFuZ1siaXNsb3dlcnRoYW4iXSA9ICJpc3Qga2xlaW5lciBhcyI7DQoNCiRsYW5nWyJpc2FmdGVyIl0gPSAic3RlaHQgbmFjaCI7DQoNCiRsYW5nWyJpc2JlZm9yZSJdID0gInN0ZWh0IGJldm9yIjsNCg0KJGxhbmdbImlzYmV0d2VlbiJdID0gInN0ZWh0IHp3aXNjaGVuIjsNCg0KJGxhbmdbInRoaXNhbmR0aGlzIl0gPSAidW5kIjsNCg0KJGxhbmdbInF1ZXJ5dXNlIl0gPSAiTmljaHQgYmVudXR6dCI7DQoNCiRsYW5nWyJxdWVyeW5hbWUiXSA9ICJOYW1lIGRlciBBYmZyYWdlIjsNCg0KDQoNCi8vIElNUE9SVCAvIEVYUE9SVA0KDQokbGFuZ1siZXhwb3J0X3RpdGxlIl0gPSAiRWludHLDpGdlIGFscyBYTUwtRGF0ZWkgZXhwb3J0aWVyZW4iOw0KDQokbGFuZ1siZXhwb3J0d2hpY2hsZXZlbHMiXSA9ICJXZWxjaGUgVGFiZWxsZW4gc29sbGVuIGV4cG9ydGllcnQgd2VyZGVuPyI7DQoNCiRsYW5nWyJleHBvcnRfdGVtcGxhdGVzIl0gPSAiVm9ybGFnZW4gYXVjaCBleHBvcnRpZXJlbj8iOw0KDQokbGFuZ1siaW1wb3J0X3RpdGxlIl0gPSAiRWludHLDpGdlIGF1cyBYTUwtRGF0ZWkgaW1wb3J0aWVyZW4iOw0KDQokbGFuZ1siaW1wb3J0X2ZpbGVwcm9tcHQiXSA9ICJXw6RobGVuIFNpZSBkaWUgenUgaW1wb3J0aWVyZW5kZSBYTUwtRGF0ZWkgYXVzLiI7DQoNCiRsYW5nWyJpbXBvcnRfZG9uZSJdID0gIkltcG9ydCBkdXJjaGdlZsO8aHJ0LiAlcyBEYXRlbnPDpHR6ZSB3dXJkZW4gw7xiZXJub21tZW4uIjsNCg0KJGxhbmdbImltcG9ydF9lbnRyaWVzIl0gPSAiRGllIERhdGVpIGVudGjDpGx0ICVzIERhdGVuc8OkdHplLiI7DQoNCiRsYW5nWyJpbXBvcnRfZGVsZXRlIl0gPSAiVGFiZWxsZW4gdm9yIGRlbSBJbXBvcnQgbGVlcmVuPyI7DQoNCiRsYW5nWyJpbXBvcnR3aGljaGxldmVscyJdID0gIldlbGNoZSBUYWJlbGxlbiBzb2xsZW4gaW1wb3J0aWVydCB3ZXJkZW4/IjsNCg0KJGxhbmdbImltcG9ydF90ZW1wbGF0ZXMiXSA9ICJWb3JsYWdlbiBhdWNoIGltcG9ydGllcmVuPyI7DQoNCiRsYW5nWyJjb3VsZG5vdGltcG9ydCJdID0gIkVzIHRyYXQgZWluIEZlaGxlciBhdWYgYmVpbSBJbXBvcnRpZXJlbiBkZXIgRGF0ZW5zw6R0emUgZsO8cjogIjsNCg0KJGxhbmdbImVycm9yX2ludmFsaWR4bWwiXSA9ICJEaWVzZSBEYXRlaSBpc3Qga2VpbmUgZsO8ciBkaWVzZXMgTW9kdWwgYnJhdWNoYmFyZSBYTUwtRGF0ZWkuIjsNCg0KDQoNCi8vIE1PRFVMRSBJTlRFUkFDVElPTg0KDQokbGFuZ1sicG9zdGluc3RhbGwiXSA9ICJNb2R1bCB3dXJkZSBlcmZvbGdyZWljaCBoaW56dWdlZsO8Z3QuPGJyLz5TdGVsbGVuIFNpZSBzaWNoZXIsIGRhc3MgZGllIGbDvHIgZGllc2VzIE1vZHVsIG5vdHdlbmRpZ2VuIFZlcnplaWNobmlzc2UgaW0gVXBsYW9kcy1WZXJ6ZWljaG5pcyBhbmdlbGVndCBzaW5kLiBWZXJnZWJlbiBTaWUgZGllIG5vdHdlbmRpZ2VuIFJlY2h0ZSBmw7xyIElocmUgQW53ZW5kZXIhIjsNCg0KJGxhbmdbInBvc3R1bmluc3RhbGwiXSA9ICJNb2R1bCB3dXJkZSBlcmZvbGdyZWljaCBlbnRmZXJudC4iOw0KDQokbGFuZ1sicmVhbGx5X3VuaW5zdGFsbCJdID0gIkFsbGUgRGF0ZW4gZGllc2VzIE1vZHVscyB3ZXJkZW4gZW50ZmVybnQuIFdlaXRlcm1hY2hlbiI7DQoNCiRsYW5nWyJ1bmluc3RhbGxlZCJdID0gIk1vZHVsIHd1cmRlIGRlLWluc3RhbGxpZXJ0LiI7DQoNCiRsYW5nWyJpbnN0YWxsZWQiXSA9ICJEYXMgTW9kdWwgd3VyZGUgaW4gZGVyIFZlcnNpb24gJXMgaW5zdGFsbGllcnQuIjsNCg0KJGxhbmdbImhlbHAiXSA9ICI8aDM+V2FzIG1hY2h0IGRpZXNlcyBNb2R1bD88L2gzPg0KDQoJCQkJPHA+RGllc2VzIE1vZHVsIHZlcndhbHRldCBLYXRhbG9nZSBtaXQgRGF0ZWllbiB1bmQgemVpZ3QgZGllc2UgYXVjaCBhbi48L3A+DQoNCgkJCTxici8+PGgzPldpZSB3aXJkIGVzIGJlbnV0enQ/PC9oMz4NCg0KCQkJCTxici8+PGg0PlJlY2h0ZTwvaDQ+DQoNCgkJCQkJPHA+U3RlbGxlbiBTaWUgc2ljaGVyLCBkYcOfIFNpZSBJaHJlbiBBbndlbmRlcm4gZGllIG5vdHdlbmRpZ2VuIFJlY2h0ZSB2ZXJnZWJlbi4gRmFsbHMgU2llIGtlaW5lIFp1Z3JpZmZzYmVzY2hyw6Rua3VuZ3MtT3B0aW9uZW4gbnV0emVuIG3DtmNodGUgKHNpZWhlIEVpbnN0ZWxsdW5nZW4pLCByZWljaGVuIGRpZSBSZWNodGUgZsO8ciBkZW4gXCJhdnBsYXllcjogTm9ybWFsIHVzZXJcIiB6dXIgTnV0enVuZyBkZXMgTW9kdWxzIGF1cy4gQmVpIGRlbiBFaW5zdGVsbHVuZ2VuIGvDtm5uZW4gU2llIGVudHNjaGVpZGVuLCB3ZWxjaGUgQXVzd2FobGVuIGRlbSBcIm5vcm1hbGVuXCIgQW53ZW5kZXIgYW5nZXplaWd0IHdlcmRlbiBzb2xsZW4uIE51ciBkZXIgQWRtaW5pc3RyYXRvciB1bmQgQW53ZW5kZXIgbWl0IGRlbiBSZWNodGVuICBcImF2cGxheWVyOiBBZHZhbmNlZFwiIGhhYmVuIFp1Z3JpZmYgYXVmIGRpZSBFaW5zdGVsbHVuZ2VuLjxici8+DQoNCkZhbGxzIFNpZSBSZWNodGUgZsO8ciB2ZXJzY2hpZWRlbmUgTGV2ZWwgZGVmaW5pZXJlbiBtw7ZjaHRlbiwgYWt0aXZpZXJlbiBTaWUgZGllIFwiWnVnYW5nc2Jlc2NocsOkbmt1bmdzLU9wdGlvbmVuXCIgYmVpIGRlbiBFaW5zdGVsbHVuZ2VuIHVuZCBlcnRlaWxlbiBkaWUgIFwiYXZwbGF5ZXI6IE1hbmFnZSBuYW1lX29mX2xldmVsXCIgQmVyZWNodGlndW5nIGbDvHIgZGllIGdld8O8bnNjaHRlbiBBbndlbmRlci48L3A+DQoNCgkJCQk8YnIvPjxoND5HcnVuZGxlZ2VuZGVzPC9oND4NCg0KCQkJCQk8cD5adW0gRWluYmluZGVuIGRlcyBNb2R1bHMgaW4gZWluZXIgU2VpdGU6PGJyIC8+PHN0cm9uZz57Y21zX21vZHVsZSBtb2R1bGU9XCJhdnBsYXllclwifTwvc3Ryb25nPjwvcD4NCg0KCQkJCQk8cD5JbiBkaWVzZW0gRmFsbCB3aXJkIGRpZSBMaXN0ZSBhbGxlciBNZWRpYWRhdGVpZW4gZGVzIG9iZXJzdGVuIExldmVscyBhbmdlemVpZ3QuIFVtIGVpbiBiZXN0aW1tdGVzIExldmVsIHp1IHfDpGhsZW4sIGFuenV6ZWlnZW4sIG51dHplbiBTaWUgZGVuIFwid2hhdFwiIFBhcmFtZXRlcjo8YnIvPjxzdHJvbmc+e2Ntc19tb2R1bGUgbW9kdWxlPVwiYXZwbGF5ZXJcIiB3aGF0PVwiTWVkaWFkYXRlaVwifTwvc3Ryb25nPjxici8+DQoNCgkJCQkJPGk+TcO2Z2xpY2hlIFdlcnRlIGbDvHIgZGVuIFwid2hhdFwiIFBhcmFtZXRlciBzaW5kOiBwbGF5ZXIsIG1lZGlhZmlsZTwvaT48L3A+DQoNCgkJCQkJPHA+U2llIGvDtm5uZW4gYXVjaCBFbGVtZW50ZSBhbnplaWdlbiwgZGllIGVpbmVtIGJlc3RpbW10ZW4gUGFyZW50LUVsZW1lbnQgenVnZW9yZG5ldCBzaW5kOjxici8+DQoNCgkJCQkJPHN0cm9uZz57Y21zX21vZHVsZSBtb2R1bGU9XCJhdnBsYXllclwiIHBhcmVudD1cIkFsaWFzX2Rlc19FbHRlcm4tRWxlbWVudGVzXCJ9PC9zdHJvbmc+PC9wPg0KDQoJCQkJCTxwPlNpZSBrw7ZubmVuIGF1Y2ggZWluIGdhbnogc3BlemllbGxlcyBFbGVtZW50IGFuemVpZ2VudDo8YnIgLz4NCg0KCQkJCQk8c3Ryb25nPntjbXNfbW9kdWxlIG1vZHVsZT1cImF2cGxheWVyXCIgYWxpYXM9XCJBbGlhc19kZXJfTWVkaWVuZGF0ZWlcIn08L3N0cm9uZz48L3A+DQoNCgkJCQk8YnIvPjxoND5TZWl0ZW53ZWlzZSBBdXNnYWJlIChQYWdpbmllcnVuZyk8L2g0Pg0KDQoJCQkJCTxwPlNpZSBrw7ZubmVuIGRpZSBaYWhsIGRlciBhdWYgZWluZXIgU2VpdGUgYW56dXplaWdlbmRlbiBNZWRpZW4gYmVncmVuemVuOjoNCg0KCQkJCQk8YnIvPjxzdHJvbmc+e2Ntc19tb2R1bGUgbW9kdWxlPVwiYXZwbGF5ZXJcIiBuYnBlcnBhZ2U9XCI1XCJ9PC9zdHJvbmc+PGJyLz4NCg0KCQkJCQlJbiBkZXIgVm9ybGFnZSBrw7ZubmVuIFNpZSBmb2xnZW5kZSBUYWdzIGbDvHIgZGFzIFNlaXRlbi1NZW7DvCBudXR6ZW46PGJyLz4NCg0KCQkJCQl7Ii4nJCcuInBhZ2Vfc2hvd2luZ30sIHsiLickJy4icGFnZV90b3RhbGl0ZW1zfSwgeyIuJyQnLiJwYWdlX3BhZ2VudW1iZXJzfSwgeyIuJyQnLiJwYWdlX25leHR9LCB7Ii4nJCcuInBhZ2VfcHJldmlvdXN9PC9wPg0KDQoJCQkJPGJyLz48aDQ+QWJmcmFnZW4gbnV0emVuPC9oND4NCg0KCQkJCQk8cD5VbSBlaW5lIExpc3RlIG1pdCBFaW50csOkZ2VuLCBkaWUgZWluZW0gYmVzdGltbXRlbiBLcml0ZXJpdW0gZ2Vuw7xnZW4sIHp1IGVyaGFsdGVuLCBrw7ZubmVuIFNpZSBBYmZyYWdlbiAoUXVlcmllcykgZXJzdGVsbGVuLiBOdXR6ZW4gU2llIGRhenUgZGVuIEFiZnJhZ2UtVGFiIChRdWVyeS1UYWIpIGltIFZlcndhbHR1bmdzbWVuw7wgdW5kIGJpbmRlbiBTaWUgZGllc2UgbWl0IGRlbSBcInF1ZXJ5XCIgUGFyYW1ldGVyIGVpbjoNCg0KCQkJCQk8YnIvPjxzdHJvbmc+e2Ntc19tb2R1bGUgbW9kdWxlPVwiYXZwbGF5ZXJcIiBxdWVyeT1cIjVcIn08L3N0cm9uZz48L3A+DQoNCgkJCQkJPHA+RmFsbHMgZGllIE9wdGlvbiB6dXIgZGlyZWt0ZW4gRWluZ2FiZSB2b24gQWJmcmFnZW4gYWt0aXZpZXQgaXN0LCAoc2llaGUgYmVpIGRlbiBFaW5zdGVsbHVuZ2VuKSxrw7ZubmVuIFNpZSBkaWUgQWJmcmFnZSBhdWNoIGRpcmVrdCBhbHMgXCJxdWVyeVwiIC0gUGFyYW1ldGVyIG1pdGdlYmVuLiBFaW4gQmVpc3BpZWw6DQoNCgkJCQkJPGJyLz48c3Ryb25nPntjbXNfbW9kdWxlIG1vZHVsZT1cImF2cGxheWVyXCIgd2hhdD1cIm1lZGlhZmlsZVwiIHF1ZXJ5PVwiQS5kYXRlX21vZGlmaWVkID4gJzIwMDktMDMtMTUnIEFORCBBLmFjdGl2ZSA9IDFcIn08L3N0cm9uZz48YnIvPg0KDQoJCQkJCURpZXNlciBRdWVyeS1QYXJhbWV0ZXIgZGFyZiBudXIgZGllIFdIRVJFLUtsYXVzZWwgdW5kIG5pY2h0IGRlbiBXSEVSRS1CZWZlaGwgc2VsYnN0IGVudGhhbHRlbi4gVW0gUHJvYmxlbWUgenUgdmVtZWlkZW4sIG51dHplIFNpZSBkZW4gUHLDpGZpeCBcIkEuXCIgdm9yIGRlbiBGZWxkLU5hbWVuLCAoZmFsbHMgbm90d2VuZGlnLCBrYW5uIGRlciAgXCJCLlwiIC1QcsOkZml4IGdlbnV0enQgd2VyZGVuLCB1bSBzcGV6aWVsbGUgS3JpdGVyaWVuIGRlciBQYXJlbnQtRmVsZGVyIHp1IHNwZXppZml6aWVyZW4pLjxici8+DQoNCgkJCQkJQXVjaCB3ZW5uIGRlciBBYnN0cmFjdGlvbi1MYXllciBuaWNodCBzbyBsZWljaHQgbWnDn2JyYXVjaHQgd2VyZGVuIGthbm4gKFNRTC1JbmplY3Rpb3MpLCBzZWllbiBTaWUgc2ljaCB0cm90emRlbSBiZXd1w590LCBkYcOfIFNpZSBtaXQgZGllc2VyIE9wdGlvbiBlaW5lbiBadWdhbmcgenUgZGVuIFNRTC1PcHRpb25lbiBkZXIgVm9ybGFnZW4gZXLDtmZmbmVuLiBTZWllbiBTaWUgdm9yc2ljaHRpZy48L3A+DQoNCgkJCQk8YnIvPjxoND5WZXJsaW5rdW5nPC9oND4NCg0KCQkJCQk8cD5TaWUga8O2bm5lbiBkaWUgQWt0aW9uIDxiPlwibGlua1wiPC9iPiBlaW5zZXR6ZW4sIHVtIGVpbmVuIExpbmsgenUgZGVyIFN0YW5kYXJkLUF1c2dhYmUgenUgZXJtw7ZnbGljaGVuLiBEYXp1IGdpYnQgZXMgZWluaWdlIFBhcmFtZXRlcjo8YnIvPjxzdHJvbmc+e2Ntc19tb2R1bGUgbW9kdWxlPVwiYXZwbGF5ZXJcIiBhY3Rpb249XCJsaW5rXCIgd2hhdD1cIm1lZGlhZmlsZVwiIHJhbmRvbT1cIjFcIn08L3N0cm9uZz48YnIvPg0KDQoJCQkJCWdlbmVyaWVydCBlaW5lbiBMaW5rIHp1IGVpbmVtIHp1ZsOkbGxpZ2VuIEVsZW1lbnQgZGllc2VzIExldmVscy48L3A+DQoNCgkJCQk8YnIvPjxoND5TaXRlbWFwPC9oND4NCg0KCQkJCQk8cD5FbnRow6RsdCBJaHJlIEVpbnJpY2h0dW5nIGtlaW5lIHVudGVyZ2VvcmRuZXRlbiBEYXRlaWVuIChjaGlsZHJlbiksIGvDtm5uZW4gU2llIGRpZSBBa3Rpb24gPGI+XCJzaXRlbWFwXCI8L2I+IGVpbnNldHplbiwgdW0gZWluZSBTaXRlbWFwIGRlcyBNb2R1bHMgYXVzenVnZWJlbjo8YnIvPg0KDQoJCQkJCTxzdHJvbmc+e2Ntc19tb2R1bGUgbW9kdWxlPVwiYXZwbGF5ZXJcIiBhY3Rpb249XCJzaXRlbWFwXCJ9PC9zdHJvbmc+PGJyLz4NCg0KCQkJCQlTaWUga8O2bm5lbiBMZXZlbHMgYXVzd8OkaGxlbiBtaXQgZGVtIFwid2hhdFwiIC1QYXJhbWV0ZXIuIEVzIGlzdCBhdWNoIG3DtmdsaWNoLCBlaHIgYWxzIGVpbmVuIExldmVsIGF1c3p1d8OkaGxlbiwgbnV0emVuIFNpZSBkYWbDvHIgPHN0cm9uZz4gXCJ8XCIgOiB3aGF0PVwibGV2ZWwxfGxldmVsMlwiPC9zdHJvbmc+Ljxici8+DQoNCgkJCQkJV2VpdGVyZSBtw7ZnbGljaGUgUGFyYW1ldGVyIGbDvHIgZGllc2UgQXVzd2FobCBzaW5kIDxzdHJvbmc+XCJkZXRhaWxwYWdlXCI8L3N0cm9uZz4gdW5kIDxzdHJvbmc+XCJpbmxpbmVcIjwvc3Ryb25nPi48YnIvPg0KDQoJCQkJCVVtIGVpbmUgR29vZ2xlLVNpdGVNYXAgYW56dWxlZ2VuLCBzY2hhdWVuIFNpZSBpbiBkZXIgPGEgaHJlZj1cIi4uL21vZHVsZXMvYXZwbGF5ZXIvZG9jL2ZhcS5odG1sI3ExNlwiIHRhcmdldD1cIl9ibGFua1wiPkZBUTwvYT4gbmFjaC48L3A+DQoNCgkJCQk8YnIvPjxoND5Gcm9udGVuZCAtIEJlYXJiZWl0dW5nPC9oND4NCg0KCQkJCQk8cD5FaW4gRm9ybXVsYXIgZsO8ciBkaWUgQmVhcmJlaXR1bmcgdm9uIEVsZW1lbnRlbiBpbSBGcm9udGVuZCBydWZlbiBTaWUgZm9sZ2VuZGVybWHDn2VuIGF1ZjoNCg0KCQkJCQk8YnIvPjxzdHJvbmc+e2Ntc19tb2R1bGUgbW9kdWxlPVwiYXZwbGF5ZXJcIiBhY3Rpb249XCJmcm9udGVuZF9lZGl0XCIgd2hhdD1cIm1lZGlhZmlsZVwifTwvc3Ryb25nPjxici8+DQoNCgkJCQkJRGllc2VyIFRhZyBnaWJ0IGVpbiBsZWVyZXMgRm9ybXVsYXIgYXVzIHVuZCBsZWd0IGVpbiBuZXVlcyBFbGVtZW50IGRlcyBMZXZlbHMgXCJtZWRpYWZpbGVcIiBhbi4gPGJyIC8+DQoNCgkJCQkJVW0gYmVzdGVoZW5kZSBFbGVtZW50ZSBzbyB6dSBlZGl0aWVyZW4sIGdlYmVuIFNpZSBkZW4gQWxpYXMgZGVzIGJldHJlZmZlbmRlbiBFbGVtZW50ZXMgYW46DQoNCgkJCQkJPGJyLz48c3Ryb25nPntjbXNfbW9kdWxlIG1vZHVsZT1cImF2cGxheWVyXCIgYWN0aW9uPVwiZnJvbnRlbmRfZWRpdFwiIHdoYXQ9XCJtZWRpYWZpbGVcIiBhbGlhcz1cIml0ZW1fYWxpYXNcIn08L3N0cm9uZz48L3A+DQoNCgkJCQkJPHA+TcO2Y2h0ZW4gU2llIGVpbmVuIExpbmsgenUgZGVtIEVkaXRpZXJmb3JtdWxhciBlaW5lcyBFbGVtZW50ZXMgc2V0emVuLCBudXR6ZW4gU2llIFwibGlua1wiOjxici8+DQoNCgkJCQkJPHN0cm9uZz57Y21zX21vZHVsZSBtb2R1bGU9XCJhdnBsYXllclwiIGFjdGlvbj1cImxpbmtcIiB0b2FjdGlvbj1cImZyb250ZW5kX2VkaXRcIiB3aGF0PVwibWVkaWFmaWxlXCIgYWxpYXM9XCJpdGVtX2FsaWFzXCJ9PGJyLz4NCg0KCQkJCQlZb3UgY291bGQsIGZvciBleGFtcGxlLCBkbyB0aGlzIGluIGEgbGlzdCB0ZW1wbGF0ZS4uLjwvcD48L3N0cm9uZz4NCg0KCQkJCQk8cD4oQmVhY2h0ZW4gU2llIGRpZSBPcHRpb25lbiBmw7xyIGRhcyBGcm9udC1FbmQtRWRpdGllcmVuIGluIGRlbiBFaW5zdGVsbHVuZ2VuKTxici8+DQoNCgkJCQkJRXMgd2lyZCBlbXBmb2hsZW4sIGRhcyBGcm9udC1FbmQtRWRpdGllcmVuIHp1c2FtbWVuIG1pdCBkZW0gTW9kdWwgXCJGcm9udCBFbmQgVXNlcnNcIiBmw7xyIGRhcyBSZWNodGUtTWFuYWdlbWVudCBlaW56dXNldHplbi4gIE1laHIgZGF6dSBpbiBkZXIgPGEgaHJlZj1cIi4uL21vZHVsZXMvYXZwbGF5ZXIvZG9jL2ZhcS5odG1sI3EyMFwiIHRhcmdldD1cIl9ibGFua1wiPkZBUTwvYT4uPC9wPg0KDQoJCQkJPGJyLz48aDQ+U3VjaGU8L2g0Pg0KDQoJCQkJCTxwPk51dHplbiBTaWUgZGllIEFrdGlvbiAgPGI+XCJzZWFyY2hcIjwvYj4genVyIEF1c2dhYmUgZWluZXMgU3VjaC1Gb3JtdWxhcnM6PGJyLz4NCg0KCQkJCQk8c3Ryb25nPntjbXNfbW9kdWxlIG1vZHVsZT1cImF2cGxheWVyXCIgYWN0aW9uPVwic2VhcmNoXCJ9PC9zdHJvbmc+PGJyLz4NCg0KCQkJCQlNaXQgZGVtICBcInNlYXJjaG1vZGVcIiBrw7ZubmVuIHNpZSB6d2lzY2hlbiA8aT5hZHZhbmNlZDwvYT48L2k+IChTdGFuZGFyZCkgdW5kIGVpbmZhY2hlbiBTdWNoLU1vZHVzIHdlY2hzZWxuLiBTaWUga8O2bm5lbiBkYXMgTGV2ZWwsIGluIGRlbSBnZXN1Y2h0IHdlcmRlbiBzb2xsLCBmZXN0bGVnZW4gbWl0IGRlbSBcIndoYXRcIiAtIFBhcmFtZXRlci4gRXMgaXN0IG5pY2h0IG3DtmdsaWNoLCBhbGxlIExldmVscyBpbSBBZHZhbmNlZC1Nb2R1cyBhdWYgZWluYW1sIHp1IGR1cmNoc3VjaGVuLjxici8+DQoNCgkJCQkJRGllIG5hY2hzdGVoZW5kZW4gUGFyYW1ldGVyIHN0ZWhlbiBmw7xyIGRpZSBTdWNoZSB6dXIgVmVyZsO8Z3VuZzogPGk+d2hhdCwgbGltaXQsIG5icGVycGFnZSwgb3JkZXJieSwgZGV0YWlscGFnZSwgbGlzdHRlbXBsYXRlLCBpbmxpbmUsIHNlYXJjaG1vZGU8L2k+Ljxici8+DQoNCgkJCQkJVW0gZGFzIFN1Y2gtRm9ybXVsYXIgenUgbW9kaWZpemllcmVuLCBudXR6ZW4gU2llIGRpZSBWb3JsYWdlIFwiYXZwbGF5ZXIvdGVtcGxhdGVzL3NlYXJjaC50cGxcIi48L3A+PGJyLz4NCg0KDQoNCgkJCQk8aDQ+QXVkaW8vVmlkZW8gUGxheWVyPC9oND4NCg0KCQkJCUVpbiA8aT5QbGF5ZXI8L2k+IGlzdCBlaW5lIERlZmluaXRpb24sIHdpZSBlaW5lIE1lZGlhLURhdGVpIGFiZ2VzcGllbHQgdW5kIGF1ZiBkZXIgV2Vic2VpdGUgZGFyZ2VzdGVsbHQgd2VyZGVuIHNvbGwuIEFsc28gei5CLiBkaWUgRmFyYmVuIGRlciBSw6RuZGVyLCBkaWUgR3LDtsOfZSBkZXIgQW56ZWlnZSwgZGllIEFuemVpZ2Ugdm9uIFN0ZXVlci1FbGVtZW50ZW4sIGF1dG9tYXRpc2NoZXMgQWJzcGllbGVuIGV0Yy48YnIgLz4NCg0KCQkJCUF1Y2ggd2VubiBtYW4gYW5kZXJlIFwiUGxheWVyXCIgbWl0IEFWUGxheWVyIGVpbnNldHplbiBrYW5uLCBpc3QgZXMgZsO8ciBmw7xyIGRlbiBFaW5zYXR6IGRlcyA8c3Ryb25nPk5lb0xhbyBQbGF5ZXI8L3N0cm9uZz4gb3B0aW1pZXJ0IHdvcmRlbi4gPGJyIC8+DQoNCgkJCQlGw7xyIGRpZSBBdXNnYWJlIHZvbiBWaWRlby1EYXRlaWVuIGvDtm5uZW4gU2llIGRlbiA8c3Ryb25nPk5lb0xhbyBWaWRlbyAoRkxWIFBsYXllcik8L3N0cm9uZz4gdm9uDQoNCgkJCQk8YSBocmVmPVwiaHR0cDovL2Zsdi1wbGF5ZXIubmV0L3BsYXllcnMvbWF4aS9kb3dubG9hZFwiIHRhcmdldD1cIl9ibGFua1wiPmh0dHA6Ly9mbHYtcGxheWVyLm5ldC9wbGF5ZXJzL21heGkvZG93bmxvYWQ8L2E+IGhlcnVudGVybGFkZW4uPGJyIC8+DQoNCgkJCQlMYWRlbiBTaWUgaWhuIGRhbm4gYXVmIElocmUgU2VpdGUgaG9jaCB1bmQgZ2ViZW4gU2llIGRlbiBQZmFkIHp1IGRpZXNlciBEYXRlaSBpbSBcIkxvY2F0aW9uXCItRmVsZCBkZXMgUGxheWVycyAoXCJBYnNwaWVsZXJzXCIpIGFuLCB6LkIuIDxpPnVwbG9hZHMvRkxWUGxheWVyL3BsYXllcl9mbHZfbWF4aS5zd2Y8L2k+LjxiciAvPg0KDQoJCQlGw7xyIGRpZSBBdXNnYWJlIHZvbiA8c3Ryb25nPk1QMydzPC9zdHJvbmc+IGvDtm5uZW4gU2llIGRlbiAgPHN0cm9uZz5OZW9MYW8gRmxhc2ggTVAzIFBsYXllcjwvc3Ryb25nPiB2b24gPGJyPg0KDQo8YSBocmVmPVwiaHR0cDovL2ZsYXNoLW1wMy1wbGF5ZXIubmV0L3BsYXllcnMvbWF4aS9kb3dubG9hZFwiIHRhcmdldD1cIl9ibGFua1wiPmh0dHA6Ly9mbGFzaC1tcDMtcGxheWVyLm5ldC9wbGF5ZXJzL21heGkvZG93bmxvYWQ8L2E+IGhlcnVudGVybGFkZW4uPGJyIC8+DQoNCkRpZSA8c3Ryb25nPlBsYXllciBQYXJhbWV0ZXI8L3N0cm9uZz4ga8O2bm5lbiBTaWUgbWl0IGRlbSA8aT5NYXhpLUdlbmVyYXRvcjwvaT4gYXVmIDxhIGhyZWY9XCJodHRwOi8vZmx2LXBsYXllci5uZXQvcGxheWVycy9tYXhpL2dlbmVyYXRvclwiIHRhcmdldD1cIl9ibGFua1wiPmh0dHA6Ly9mbHYtcGxheWVyLm5ldC9wbGF5ZXJzL21heGkvZ2VuZXJhdG9yPC9hPiB6dXNhbW1lbnN0ZWxsZW4gdW5kIGF1c3Byb2JpZXJlbiB1bmQgYW5zY2hsaWXDn2VuZCBhbHMgUGFyYW1ldGVyIGVpbnRyYWdlbi48YnIgLz4NCg0KPHA+V2VpdGVyZSBJbmZvcm1hdGlvbmVuIGZpbmRlbiBTaWUgaW4gZGVyICA8YSBocmVmPVwiLi4vbW9kdWxlcy9hdnBsYXllci9kb2MvZmFxLmh0bWxcIiB0YXJnZXQ9XCJfYmxhbmtcIj5GQVE8L2E+LjwvcD4NCg0KPGJyLz4NCg0KPGgzPkNvcHlyaWdodCB1bmQgTGl6ZW56PC9oMz48cD5EaWVzZXMgTW9kdWwgc3RlaHQgdW50ZXIgZGVyIEdOVSBQdWJsaWMgTGljZW5zZS48L3A+PGJyLz48YnIvPiI7DQoNCg0KDQovL0VWRU5UUw0KDQokbGFuZ1siZXZlbnRkZXNjX21vZGlmaWVkIl0gPSAiYWt0aXYsIG5hY2hkZW0gZWluIEVsZW1lbnQgZ2XDpG5kZXJ0IHd1cmRlLiBQYXJhbWV0ZXI6IFwid2hhdFwiPT5MZXZlbCBkZXMgRWxlbWVudGVzLCBcIml0ZW1pZFwiPT5JRCBkZXMgRWxlbWVudHMsIFwiYWxpYXNcIj0+QWxpYXMgZGVzIEVsZW1lbnRzLiI7DQoNCiRsYW5nWyJldmVudGRlc2NfZGVsZXRlZCJdID0gImFrdGl2LCBuYWNoZGVtIGVpbiBFbGVtZW50IGdlbMO2c2NodCB3dXJkZS4gUGFyYW1ldGVyOiBcIndoYXRcIj0+TGV2ZWwgZGVzIEVsZW1lbnRlcy4iOw0KDQokbGFuZ1siZXZlbnRkZXNjX2FkZGVkIl0gPSAiYWt0aXYsIG5hY2hkZW0gZWluIEVsZW1lbnQgaGluenVnZWbDvGd0IHd1cmRlLiBQYXJhbWV0ZXI6IFwid2hhdFwiPT5MZXZlbCBkZXMgRWxlbWVudGVzLCBcIml0ZW1pZFwiPT5JRCBkZXMgRWxlbWVudHMsIFwiYWxpYXNcIj0+QWxpYXMgZGVzIEVsZW1lbnRzLiI7DQoNCg0KDQovL1BSRUZFUkVOQ0VTDQoNCiRsYW5nWyJwcmVmZXJlbmNlcyJdID0gIkVpbnN0ZWxsdW5nZW4iOw0KDQokbGFuZ1sicHJlZl90YWJkaXNwbGF5Il0gPSAiVmV3YWx0dW5ncy1UYWJzLCBkaWUgZGVtIGVpbmZhY2hlbiBBbndlbmRlciBhbmdlemVpZ3Qgd2VyZGVuLiI7DQoNCiRsYW5nWyJoZWxwX3RhYmRpc3BsYXkiXSA9ICIoZWluZmFjaGUgQW53ZW5kZXIgc2luZCBkaWUsIGRpZSBkYXMgUmVjaHQgXCJhdnBsYXllcjogbm9ybWFsIHVzZXJcIiB6dWdldGVpbHQgYmVrYW1lbi4gRGllIGplZGVtIExldmVsIHp1Z2V0ZWlsdGVuIFJlY2h0ZSDDvGJlcnNjaHJlaWJlbiBkaWUgaGllciBhdXNnZXfDpGhsdGVuIFRhYnMgZXZlbnR1ZWxsLikpIjsNCg0KJGxhbmdbInByZWZfc2VhcmNobW9kdWxlX2luZGV4Il0gPSAiSW5kZXggZGVyIG5hY2hmb2xnZW5kZW4gTGV2ZWxzIGbDvHIgZGFzIFN1Y2gtTW9kdWwiOw0KDQokbGFuZ1siaGVscF9zZWFyY2htb2R1bGVfaW5kZXgiXSA9ICIoRGllcyB3aXJrdCBzaWNobmljaHQgYXVmIGRpZSBlaWdlbmUsIGludGVybmUgU3VjaGZ1bmt0aW9uIGRlcyBBVlBsYXllcnMgYXVzLiBCZWFjaHRlbiBTaWUgYXVjaCwgZGHDnyBTaWUsIHdlbm4gU2llIGRpZWUgRWluc3RlbGx1bmdlbiDDpG5kZXJuLCBTaWUgZGVuIFN1Y2hpbmRleCBuZXUgZ2VuZXJpZXJlbiBtw7xzc2VuIChFcndlaXRlcnVuZ2VuIC0mZ3Q7U3VjaGUpKSI7DQoNCiRsYW5nWyJwcmVmX25ld2l0ZW1zZmlyc3QiXSA9ICJOZXVlIEVsZW1lbnRlc29sbGVuIG9iZXJoYWxiIGRlciBuYWNoc3RlaGVuZGVuIExldmVsIGFuZ2V6ZWlndCB3ZXJkZW46IjsNCg0KJGxhbmdbImhlbHBfbmV3aXRlbXNmaXJzdCJdID0gIihXaXJkIGhpZXIga2VpbiBMZXZlbCBhdXNnZXN1Y2h0LCB3ZXJkZW4gZGllIG5ldWVzdGVuIEVpbnRyw6RnZSBzZWxic3R2ZXJzdMOkbmRsaWNoIGFtIExpc3RlbmVuZGUgYW5nZXplaWd0KSI7DQoNCiRsYW5nWyJwcmVmX3Jlc3RyaWN0X3Blcm1pc3Npb25zIl0gPSAiU29sbCBkaWUgQmVhcmJlaXR1bmcgZGVyIEVpbnRyw6RnZSBhdWYgQW53ZW5kZXIgPGI+YmVzY2hyw6Rua3Q8L2I+IHdlcmRlbiwgZGllIGVpbmUgc3BlemllbGxlIEJlcmVjaHRpZ3VuZyBmw7xyIGRpZXNlcyBMZXZlbCB6dWVydGVpbHQgYmVrb21tZW4gaGFiZW4/IChXZW5uIFNpZSBrZWluZSB2ZXJzY2hpZWRlbmVuIEJlcmVjaHRpZ3VuZ2VuIGbDvHIgZGllIHZlcnNjaGllZGVuZW4gTGV2ZWxzIHZlcmdlYmVuIG3DtmNodGVuLCB3w6RobGVuIFNpZSBkaWVzZSBBdXN3YWhsIG5pY2h0IGFuIHVuZCBudXR6ZW4gZWluZmFjaCBkYXMgXCJhdnBsYXllcjogbm9ybWFsIHVzZXJcIiAtIFByb2ZpbC4pIjsNCg0KJGxhbmdbInByZWZfZGlzcGxheV9maWx0ZXIiXSA9ICI8Yj5GaWx0ZXI8L2I+IGltIFZlcndhbHR1bmdzbWVuw7wgYW56ZWlnZW4/IjsNCg0KJGxhbmdbInByZWZfZGlzcGxheV9pbnN0YW50c2VhcmNoIl0gPSAiPGI+U2NobmVsbHN1Y2hlPC9iPiBpbSBWZXJ3YWx0dW5nc21lbsO8IGFuemVpZ2VuPyI7DQoNCiRsYW5nWyJwcmVmX2Rpc3BsYXlfaW5zdGFudHNvcnQiXSA9ICI8Yj5TY2huZWxsLVNvcnRpZXJ1bmc8L2I+IGJlaSBkZW4gU3BhbHRlbi1MaW5rcyBhbnplaWdlbj8iOw0KDQokbGFuZ1sicHJlZl9lZGl0YWJsZV9hbGlhc2VzIl0gPSAiRGFyZiBkZXIgPGI+QWxpYXM8L2I+IGRlciBFaW50csOkZ2UgbWFudWVsbCBlZGl0aWVydCB3ZXJkZW4/IjsNCg0KJGxhbmdbInByZWZfZm9yY2VfbGlzdCJdID0gIlNvbGwgZGVyIDxiPmZvcmNlbGlzdDwvYj4gUGFyYW1ldGVyIHN0YW5kYXJkbcOkw59pZyBha3RpdiBzZWluPyAoZGFubiB3aXJkIGRpZSBMaXN0ZSBhdWNoIGRhbm4gYWxzIExpc3RlIGFuZ2V6ZWlndCwgd2VubiBlcyBudXIgZWluIEVsZW1lbnQgZ2lidCkiOw0KDQokbGFuZ1sicHJlZl9kZWxldGVfZmlsZXMiXSA9ICJTb2xsZW4sIHdlbm4gZWluIEVpbnRyYWcgPGI+Z2Vsw7ZzY2h0PC9iPiB3aXJkLCBhdWNoIGRpZSBkYXp1Z2Vow7ZyaWdlbiBEYXRlaWVuIGdlbMO2c2NodCB3ZXJkZW4gKHdlbm4gd2VsY2hlIHZvcmhhbmRlbiBzaW5kKSI7DQoNCiRsYW5nWyJwcmVmX2FsbG93X3NxbCJdID0gIk1hbnVlbGxlIFNRTCBRdWVyaWVzPyAobWl0IGRlbSBcInF1ZXJ5XCIgLVBhcmFtZXRlcikgenVsYXNzZW4/IjsNCg0KJGxhbmdbInByZWZfdXNlX2hpZXJhcmNoeSJdID0gIkRpZSBrb21wbGV0dGUgSGllcmFyY2hpZSBpbSBGaWx0ZXIgdW5kIFwiRWx0ZXJuLURyb3Bkb3duLUxpc3RlXCIgaW0gVmVyd2FsdHVuZ3NtZW7DvCBhbnplaWdlbj8iOw0KDQokbGFuZ1sicHJlZl9vcmRlcmJ5bmFtZSJdID0gIkVsdGVybi1Ecm9wZG93bi1MaXN0ZSBuYWNoIE5hbWVuIHNvcnRpZXJlbj8iOw0KDQokbGFuZ1sicHJlZl9zaG93dGh1bWJuYWlscyJdID0gIkFsbGUgVGh1bWJuYWlscyBzdGF0dCBlaW5lciBUYWJlbGxlIGF1Zmxpc3Rlbiwgd2VubiBlaW5lIEJpbGQtRGF0ZWkgYXVzZ2V3w6RobHQgd2lyZD8iOw0KDQokbGFuZ1sicHJlZl9tYXhzaG93bnBhZ2VzIl0gPSAiV2lldmllbGUgU2VpdGVuIHNvbGxlbiBpbSBTZWl0ZW4tTWVuw7wgYW5nZXplaWd0IHdlcmRlbjogIjsNCg0KJGxhbmdbInByZWZfYXV0b2luY3JlbWVudF9hbGlhcyJdID0gIlNvbGxlbiBkaWUgQWxpYXNlIGhvY2hnZXrDpGhsdCB3ZXJkZW4sIHdlbm4gaWRlbnRpc2NoZSBOYW1lbiB2ZXJnZWJlbiB3ZXJkZW4/IjsNCg0KJGxhbmdbInByZWZfZGVjb2RlZW50aXRpZXMiXSA9ICJTb2xsZW4gZGllIEhUTUwtRW50aXRpZXMsIHdlbm4gZWluIEZyb250LUVuZC1Gb3JtdWxhciBhYmdlc2FuZHQgd2lyZCwgZGVrb2RpZXJ0IHdlcmRlbj8iOw0KDQokbGFuZ1sicHJlZl9mcm9udGVuZCJdID0gIkZyb250ZW5kIEJlYXJiZWl0dW5nIjsNCg0KJGxhbmdbImhlbHBfZnJvbnRlbmQiXSA9ICJBdXMgU2ljaGVyaGVpdHNncsO8bmRlbiBzb2xsdGUgZGFzIEZyb250LUVuZC1FZGl0aWVyZW4gbnVyIGltIFp1c2FtbWVuc3BpZWwgbWl0IGRlbSBGcm9udCBFbmQgVXNlcnMgTW9kdWwgZXJtw7ZnbGljaHQgd2VyZGVuLiBXZWl0ZXJlIEluZm9ybWF0aW9uZW4genVyIEVpbmJpbmR1bmdlbiBmaW5kZW4gU2llIGluIGRlciA8YSBocmVmPVwibW9kdWxlcy9hdnBsYXllci9kb2MvZmFxLmh0bWwjcTIwXCIgdGFyZ2V0PVwiX2JsYW5rXCI+RmFxPC9hPi4iOw0KDQokbGFuZ1sicHJlZl9mZV93eXNpd3lnIl0gPSAiV1lTSVdHIGltIEZyb250ZW5kIGVybGF1YmVuIChtdXNzIGF1Y2ggaW4gZGVuIEFsbGdlbWVpbmVuIEVpbnN0ZWxsdW5nZW4gZXJsYXVidCB3ZXJkZW4uKSI7DQoNCiRsYW5nWyJwcmVmX2ZlX2RlY29kZWVudGl0aWVzIl0gPSAiSFRNTC1FbnRpdGllcyB2b24gRnJvbnQtRW5kLUZvcm11bGFyZW4gZGVrb2RpZXJlbj8gRGF2b24gd2lyZCBhYmdlcmF0ZW4uIjsNCg0KJGxhbmdbInByZWZfZmVfYWxsb3dmaWxlcyJdID0gIkRhdGVpLVVwbG9hZCBpbSBGcm9udC1FbmQgZXJsYXViZW4/IjsNCg0KJGxhbmdbInByZWZfZmVfYWxsb3duYW1lY2hhbmdlIl0gPSAiRnJvbnQtRW5kLUFud2VuZGVyIGTDvHJmZW4gRGF0ZWktTmFtZW4gKHVuZCBkYW1pdCBpbXBsaXppdCBhdWNoIGRpZSBBbGlhcy1CZXplaWNobnVuZ2VuKSBkZXMgRWxlbWVudGVzLCBkYXMgc2llIGJlYXJiZWl0ZW4sIHZlcsOkbmRlcm4/IjsNCg0KJGxhbmdbInByZWZfZmVfYWxsb3dhZGRuZXciXSA9ICJGcm9udC1FbmQtQW53ZW5kZXIgZMO8cmZlbiBuZXVlIEVsZW1lbnRlIG9jaGxhZGVuLiI7DQoNCiRsYW5nWyJwcmVmX2ZlX3VzZWNhcHRjaGEiXSA9ICJDYXB0Y2hhIGVpbnNldHplbj8gKERhcyBNb2R1bCBcIkNhcHRjaGFcIiBtdXNzIGFrdGl2aWVydCBzZWluKSI7DQoNCiRsYW5nWyJwcmVmX2ZlX2FmdGVyc3VibWl0Il0gPSAiTmFjaCBkZW0gQWJzZW5kZW4gZWluZXMgRm9ybXVsYXJzIHdlaXRlcmxlaXRlbiBuYWNoICI7DQoNCiRsYW5nWyJwcmVmX2ZlX21heGZpbGVzaXplIl0gPSAiTWF4aW1hbGUgRGF0ZWlncsO2w59lIGluIEJ5dGVzIGbDvHIgZGVuIEZyb250LUVuZC1VcGxvYWQgKGVpbmdlc2NocsOkbmt0IGR1cmNoIGRpZSBpbiBkZXIgUEhQLklOSSBkZWZpbmllcnRlIG1heGltYWxlIERhdGVpZ3LDtsOfZSkiOw0KDQokbGFuZ1sicHJlZl9hbGxvd19jb21wbGV4X29yZGVyIl0gPSAiS29tcGxleGUgXCJvcmRlcmJ5XCIgLVNvcnRpZXItUGFyYW1ldGVyIHp1bGFzc2VuIChiZXRhKS4iOw0KDQokbGFuZ1sicHJlZl9hZG1pbnBhZ2VzIl0gPSAiQW56YWhsIGRlciBFaW50csOkZ2UgcHJvIFNlaXRlIGltIFZlcndhbHR1bmdzbWVuw7wgKDAgPSBrZWluZSBQYWdpbmllcnVuZykuIjsNCg0KJGxhbmdbInByZWZfbG9hZF9uYmNoaWxkcmVuIl0gPSAiQW56YWhsIGRlciBLaW5kLUVsZW1lbnRlIChpdGVtLSZndDtuYmNoaWxkcmVuKSBmw7xyIGFsbGUgRWludHLDpGdlIGFuemVpZ2VuPyI7DQoNCiRsYW5nWyJwcmVmX2xvYWRfbmV4dHByZXZpb3VzIl0gPSAiV2VpdGVyLSAvIFp1csO8Y2stTGlua3MgYW56ZWlnZW4gKG51ciBpbiBkZXIgRGV0YWlsLUFuc2ljaHQpIjsNCg0KJGxhbmdbInByZWZfdXNlX3Nlc3Npb24iXSA9ICJWZXJ3YWx0dW5nc21lbsO8LUZpbHRlciBwZXIgc2Vzc2lvbiBzcGVpY2hlcm4uIjsNCg0KJGxhbmdbInByZWZfbGV2ZWxwYWdpbmF0aW9uIl0gPSAiU3RhbmRhcmQtQW56YWhsIGRlciBhdWYgZWluZXIgU2VpdGUgYW5nZXplaWd0ZW4gRWxlbWVudGUgaW0gRnJvbnQtRW5kIjsNCg0KJGxhbmdbImhlbHBfbGV2ZWxwYWdpbmF0aW9uIl0gPSAiKGtlaW4gRWludHJhZyBvZGVyIDAgZGVha3RpdmllcnQgc3RhbmRhcmRtw6TDn2lnZSBQYWdpbmllcnVuZy4gRGVyIFwibmJwZXJwYWdlXCItUGFyYW1ldGVyw7xiZXJzY2hyZWlidCBkaWVzZSBFaW5zdGVsbHVuZy4pIjsNCg0KDQoNCi8vUEFSQU1FVEVSUw0KDQokbGFuZ1sicGhlbHBfYWN0aW9uIl0gPSAiTcO2Z2xpY2hlIEFrdGlvbmVuOiBcImxpbmtcIiwgXCJzZWFyY2hcIiwgXCJicmVhZGNydW1ic1wiLCBcImRlZmF1bHRcIiwgXCJzaXRlbWFwXCIgdW5kIFwiZnJvbnRlbmRfZWRpdFwiLiI7DQoNCiRsYW5nWyJwaGVscF93aGF0Il0gPSAiR2ViZW4gU2llIGRhcyBMZXZlbCBhbiwgd2VsY2hlcyBTaWUgYW56ZWlnZW4gbcO2Y2h0ZW4uIE3DtmdsaWNoZSBXZXJ0ZSBzaW5kIDogPGk+cGxheWVyLCBtZWRpYWZpbGU8L2k+IjsNCg0KJGxhbmdbInBoZWxwX2FsaWFzIl0gPSAiQWxpYXMgZGVzIGFuenV6ZWlnZW5kZW4gRWxlbWVudGVzLiI7DQoNCiRsYW5nWyJwaGVscF9wYXJlbnQiXSA9ICJXZW5uIFNpZSBkaWUgQW56ZWlnZSBkZXIgRWxlbWVudGUgYXVmIGRpZWplbmlnZW4gYmVzY2hyw6Rua2VuIG3DtmNodGUsIGRpZSB6dSBlaW5lbSBFbHRlcm4tRWxlbWVudCBnZWjDtnJlbiwgdHJhZ2VuIFNpZSBoaWVyIGRlbiBOYW1lbiBkZXMgRWx0ZXJuLUVsZW1lbnRlcyBlaW4uIjsNCg0KJGxhbmdbInBoZWxwX2xpbWl0Il0gPSAiQW56YWhsIGRlciBBYmZyYWdlLUVyZ2Vibmlzc2UgKDAgPSBrZWluZSBFaW5zY2hyw6Rua3VuZykiOw0KDQokbGFuZ1sicGhlbHBfbmJwZXJwYWdlIl0gPSAiQW56YWhsIGRlciBhdWYgZWluZXIgU2VpdGUgYW56dXplaWdlbmRlbiBFbGVtZW50ZS4iOw0KDQokbGFuZ1sicGhlbHBfb3JkZXJieSJdID0gIlNpZSBrw7ZubmVuIGRpZSBFaW50csOkZ2UgbmFjaCBcIm1vZGlmaWVkXCIsIFwiY3JlYXRlZFwiIG9kZXIgZGVtIEZlbGRuYW1lciBzb3J0aWVyZW4gbGFzc2VuLiBKZWRlciBhbmRlcmUgV2VydCBnaWJ0IGluIGRlciBTdGFuZGFyZC1SZWloZW5mb2xnZSBkZXIgRWxlbWVudGUgYXVzLiI7DQoNCiRsYW5nWyJwaGVscF9kZXRhaWxwYWdlIl0gPSAiR2ViZW4gU2llIGRlbiBBbGlhcyBkZXIgU2VpdGUgYW4sIGluIGRlciBkaWUgTGlua3MgenUgZGVuIEtpbmQtRWxlbWVudGVuIGFuZ2V6ZWlndCB3ZXJkZW4gc29sbGVuIChLZWluIEVpbnRyYWcgPSBkaWUgQXVzZ2FiZSBlcmZvbGd0IGF1ZiBkZXIgYWt0dWVsbGVuIFNlaXRlKSkiOw0KDQokbGFuZ1sicGhlbHBfc2hvd2RlZmF1bHQiXSA9ICJEaWUgRWluZ2FiZSBcInRydWVcIiB6ZWlndCBkYXMgU3RhbmRhcmQtRWxlbWVudCBhbi4iOw0KDQokbGFuZ1sicGhlbHBfcmFuZG9tIl0gPSAiRGVmaW5pZXJlbiBTaWUsIHdpZXZpZWwgRWxlbWVudGUgSWhyZXIgQWJmcmFnZSBpbiB6dWbDpGxsaWdlciBBbm9yZG51bmcgYXVzZ2VnZWJlbiB3ZXJkZW4gc29sbGVuLiI7DQoNCiRsYW5nWyJwaGVscF9maW5hbHRlbXBsYXRlIl0gPSAiV2VsY2hlIFZvcmxhZ2Ugc29sbCBmw7xyIGRpZSBEZXRhaWwtQW56ZWlnZSBkZXMgRXJnZWJuaXMtTGV2ZWxzIGdlbm9tbWVuIHdlcmRlbi4iOw0KDQokbGFuZ1sicGhlbHBfbGlzdHRlbXBsYXRlIl0gPSAiVGVtcGxhdGUgZsO8ciBkaWUgTGlzdGVuLUFuemVpZ2UiOw0KDQokbGFuZ1sicGhlbHBfZm9yY2VsaXN0Il0gPSAiXCIxXCIgd2VubiBTaWUgYXVjaCBkYW5uIGVpbmUgTGlzdGUgYW56ZWlnZW4gbcO2Y2h0ZW4sIHdlbm4gZXMgbnVyIGVpbiBFbGVtZW50IGdpYnQuIjsNCg0KJGxhbmdbInBoZWxwX2ludGVybmFsIl0gPSAiRsO8ciBpbnRlcm5lbiBHZWJyYXVjaDsgbmVubmVuIFNpZSBkaWUgU2VpdGUsIHdlbm4gU2llIGRlbiBQYXJhbWV0ZXIgXCJuYnBlcnBhZ2VcIiBlaW5zZXR6ZW4uIjsNCg0KJGxhbmdbInBoZWxwX3F1ZXJ5Il0gPSAiT3B0aW9uYWw6IGdlaMO2cnQgenVyIFwiZGVmYXVsdFwiIEFrdGlvbi4gTGVndCBkaWUgSUQgZGVyIFF1ZXJ5IGZlc3QsIGRpZSBTaWUgZWluc2V0emVuIG3DtmNodGVuLiI7DQoNCiRsYW5nWyJwaGVscF9pbmxpbmUiXSA9ICJMaW5rcyBhbHMgSW5saW5lLUxpbmtzIGVyc3RlbGxlbi4iOw0KDQokbGFuZ1sicGhlbHBfc2VhcmNobW9kZSJdID0gIkdlaMO2cnQgenVyIFwic2VhcmNoXCIgLSBBY2tpb24uIFwic2ltcGxlXCI6IGVzIHdpcmQgaW4gYWxsZW4gVGV4dC1GZWxkZXJuIGdlc3VjaHQsIFwiYWR2YW5jZWRcIjogZXMgd2lyZCBpbiB6dSBzcGV6aWZpemllcmVuZGVuIEZlbGRlcm4gZ2VzdWNodC4iOw0KDQokbGFuZ1sicGhlbHBfdG9hY3Rpb24iXSA9ICJnZWjDtnJ0IHp1ciAgXCJsaW5rXCIgLSBBa3Rpb24uIERlZmluaWVydCwgenUgd2VsY2hlciBBa3Rpb24gZGVyIExpbmsgenVyw7xja3ZlcndlaXNlbiBzb2xsLiI7DQoNCg0KDQo/Pg==]]></data>
	</file>
	<file>
	  <filename>/method.install.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmlmKCFpc3NldCgkZ0NtcykpIGV4aXQ7DQoNCi8vIFR5cGljYWwgRGF0YWJhc2UgSW5pdGlhbGl6YXRpb24NCiRkYiA9ICYkdGhpcy0+Y21zLT5kYjsNCiRkaWN0ID0gTmV3RGF0YURpY3Rpb25hcnkoJGRiKTsNCgkJDQovLyBteXNxbC1zcGVjaWZpYywgYnV0IGlnbm9yZWQgYnkgb3RoZXIgZGF0YWJhc2UNCiR0YWJvcHRhcnJheSA9IGFycmF5KCJteXNxbCIgPT4gIlRZUEU9TXlJU0FNIik7DQoJCQ0KDQovLyBDcmVhdGVzIHRoZSBwbGF5ZXIgdGFibGUNCiRmbGRzID0gIg0KCWxvY2F0aW9uIEMoMjU1KSwNCgl3aWR0aCBDKDEwKSwNCgloZWlnaHQgQygxMCksDQoJcGFyYW1ldGVycyBYLA0KCXVzZXJkZWZpbmVkMSBJLA0KCXBsYXllcnR5cGUgSSwNCglpZCBJIEtFWSwNCgluYW1lIEMoNjQpLA0KCWFsaWFzIEMoNjQpLA0KCWl0ZW1fb3JkZXIgSSwNCglhY3RpdmUgTCwNCglpc2RlZmF1bHQgTCwNCiAgICBkYXRlX21vZGlmaWVkICIuQ01TX0FET0RCX0RULiIsDQoJZGF0ZV9jcmVhdGVkICIuQ01TX0FET0RCX0RULiINCgkiOw0KDQokc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlVGFibGVTUUwoY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfYXZwbGF5ZXJfcGxheWVyIiwgJGZsZHMsICR0YWJvcHRhcnJheSk7DQokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7DQokZGItPkNyZWF0ZVNlcXVlbmNlKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2F2cGxheWVyX3BsYXllcl9zZXEiKTsNCg0KDQovLyBDcmVhdGVzIHRoZSBtZWRpYWZpbGUgdGFibGUNCiRmbGRzID0gIg0KCW1lZGlhZmlsZSBDKDI1NSksDQoJcGljdHVyZSBDKDI1NSksDQoJdXNlcmRlZmluZWQyIEksDQoJcGFyZW50IEksDQoJaWQgSSBLRVksDQoJbmFtZSBDKDY0KSwNCglhbGlhcyBDKDY0KSwNCglpdGVtX29yZGVyIEksDQoJYWN0aXZlIEwsDQoJaXNkZWZhdWx0IEwsDQogICAgZGF0ZV9tb2RpZmllZCAiLkNNU19BRE9EQl9EVC4iLA0KCWRhdGVfY3JlYXRlZCAiLkNNU19BRE9EQl9EVC4iDQoJIjsNCg0KJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZVRhYmxlU1FMKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2F2cGxheWVyX21lZGlhZmlsZSIsICRmbGRzLCAkdGFib3B0YXJyYXkpOw0KJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOw0KJGRiLT5DcmVhdGVTZXF1ZW5jZShjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9hdnBsYXllcl9tZWRpYWZpbGVfc2VxIik7DQoNCg0KLy8gQ3JlYXRlIHRoZSBmaWVsZG9wdGlvbnMgdGFibGUNCiRmbGRzID0gIg0KCWlkIEksDQoJZmllbGQgQygxMjgpLA0KCW5hbWUgQygzMiksDQoJaXRlbV9vcmRlciBJDQoJIjsNCiRzcWxhcnJheSA9ICRkaWN0LT5DcmVhdGVUYWJsZVNRTChjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9hdnBsYXllcl9maWVsZG9wdGlvbnMiLCAkZmxkcywgJHRhYm9wdCk7DQokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7DQokZGItPkNyZWF0ZVNlcXVlbmNlKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2F2cGxheWVyX2ZpZWxkb3B0aW9uc19zZXEiKTsNCg0KDQoNCi8vIENyZWF0ZXMgdGhlIHF1ZXJpZXMgdGFibGUNCiRmbGRzID0gIg0KICAgIGlkIEksDQoJbmFtZSBDKDY0KSwNCgl3aGF0IEMoMzIpLA0KCXdoZXJlY2xhdXNlIEMoMjU1KSwNCgl3aGVyZXZhbHVlcyBDKDI1NSksDQoJcXVlcnlvcmRlciBDKDMyKQ0KCSI7DQoNCiRzcWxhcnJheSA9ICRkaWN0LT5DcmVhdGVUYWJsZVNRTChjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9hdnBsYXllcl9zYXZlZF9xdWVyaWVzIiwgJGZsZHMsICR0YWJvcHRhcnJheSk7DQokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7DQokZGItPkNyZWF0ZVNlcXVlbmNlKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2F2cGxheWVyX3NhdmVkX3F1ZXJpZXNfc2VxIik7DQoNCg0KLy8gSU5TRVJUSU5HIERFRkFVTFQgVEVNUExBVEVTDQoJJHRlbXBsYXRlID0gJzxoMj57JGxldmVsdGl0bGV9PC9oMj4NCntpZiAkaXRlbWNvdW50ID4gMH0NCjx1bD4NCntmb3JlYWNoIGZyb209JGl0ZW1saXN0IGl0ZW09Iml0ZW0ifQ0KCTxsaSB7aWYgJGl0ZW0tPmlzX3NlbGVjdGVkfWNsYXNzPSJhY3RpdmUiey9pZn0+eyRpdGVtLT5kZXRhaWxsaW5rfTwvbGk+DQp7L2ZvcmVhY2h9DQo8L3VsPg0Ke2lmICRwYWdlX3BhZ2VudW1iZXJzfQ0KPGRpdiBpZD0icGFnZW1lbnUiIHN0eWxlPSJ0ZXh0LWFsaWduOiBjZW50ZXI7Ij4NCnskcGFnZV9wcmV2aW91c30mbmJzcDsgeyRwYWdlX3Nob3dpbmd9L3skcGFnZV90b3RhbGl0ZW1zfSAmbmJzcDt7JHBhZ2VfbmV4dH08YnIvPg0KeyRwYWdlX3BhZ2VudW1iZXJzfQ0KPC9kaXY+DQp7L2lmfQ0Ke2Vsc2V9DQo8cD57JGVycm9yX21zZ308L3A+DQp7L2lmfQ0KJzsNCiR0aGlzLT5TZXRUZW1wbGF0ZSgibGlzdF9kZWZhdWx0IiwkdGVtcGxhdGUsJHRoaXMtPkdldE5hbWUoKSk7DQogICAgJHRoaXMtPlNldFByZWZlcmVuY2UoImxpc3R0ZW1wbGF0ZV9wbGF5ZXIiLCJsaXN0X2RlZmF1bHQiKTsNCiAgICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgibGlzdHRlbXBsYXRlX21lZGlhZmlsZSIsImxpc3RfZGVmYXVsdCIpOw0KDQoNCiR0ZW1wbGF0ZSA9ICc8aDM+eyRpdGVtLT5uYW1lfTwvaDM+DQp7aWYgJGl0ZW0tPm1lZGlhZmlsZSAhPSAiIn08cD57JGxhYmVscy0+bWVkaWFmaWxlfTogPGEgaHJlZj0ieyRpdGVtLT5tZWRpYWZpbGUtPnVybH0iPnskaXRlbS0+bWVkaWFmaWxlLT5maWxlcGF0aH08L2E+ICh7JGl0ZW0tPm1lZGlhZmlsZS0+c2l6ZV93Zm9ybWF0fSk8L3A+ey9pZn0NCntpZiAkaXRlbS0+cGljdHVyZSAhPSAiIn08cD57JGl0ZW0tPnBpY3R1cmUtPmltYWdlfTwvcD57L2lmfQ0KPHA+eyRsYWJlbHMtPnVzZXJkZWZpbmVkMn06IHskaXRlbS0+dXNlcmRlZmluZWQyX25hbWV2YWx1ZX08L3A+DQo8b2JqZWN0IHR5cGU9ImFwcGxpY2F0aW9uL3gtc2hvY2t3YXZlLWZsYXNoImRhdGE9InskaXRlbS0+cGFyZW50X29iamVjdC0+bG9jYXRpb259IiB3aWR0aD0ieyRpdGVtLT5wYXJlbnRfb2JqZWN0LT53aWR0aH0iaGVpZ2h0PSJ7JGl0ZW0tPnBhcmVudF9vYmplY3QtPmhlaWdodH0iPjxiciAvPg0KPHBhcmFtIG5hbWU9Im1vdmllInZhbHVlPSJ7JGl0ZW0tPnBhcmVudF9vYmplY3QtPmxvY2F0aW9ufSIgLz48YnIgLz4NCjxwYXJhbSBuYW1lPSJGbGFzaFZhcnMiIHZhbHVlPSJ7JGl0ZW0tPnBhcmVudF9vYmplY3QtPnBsYXllcnR5cGVfbmFtZXZhbHVlfT1odHRwOi8veyRyb290X3VybH0vdXBsb2Fkc3skaXRlbS0+bWVkaWFmaWxlLT5maWxlcGF0aH17JGl0ZW0tPnBhcmVudF9vYmplY3QtPnBhcmFtZXRlcnN9Ii8+PHBhcmFtIG5hbWU9Indtb2RlInZhbHVlPSJ0cmFuc3BhcmVudCIgLz48L29iamVjdD4NCic7DQokdGhpcy0+U2V0VGVtcGxhdGUoImZpbmFsX2RlZmF1bHQiLCR0ZW1wbGF0ZSwkdGhpcy0+R2V0TmFtZSgpKTsNCiR0aGlzLT5TZXRQcmVmZXJlbmNlKCJmaW5hbHRlbXBsYXRlIiwiZmluYWxfZGVmYXVsdCIpOw0KDQokdGVtcGxhdGUgPSAnPHA+eyRlcnJvcl9tc2d9PC9wPg0Ke2lmICRiYWNrbGlua308cD57JGJhY2tsaW5rfTwvcD57L2lmfSc7DQokdGhpcy0+U2V0VGVtcGxhdGUoIm5vX3Jlc3VsdCIsJHRlbXBsYXRlLCR0aGlzLT5HZXROYW1lKCkpOw0KDQovLyBDUkVBVElORyBQRVJNSVNTSU9OUyA6DQoNCi8vIHBlcm1pc3Npb25zDQokdGhpcy0+Q3JlYXRlUGVybWlzc2lvbigiYXZwbGF5ZXJfbm9ybWFsdXNlciIsICJhdnBsYXllcjogTm9ybWFsIHVzZXIiKTsNCiR0aGlzLT5DcmVhdGVQZXJtaXNzaW9uKCJhdnBsYXllcl9hZHZhbmNlZCIsICJhdnBsYXllcjogQWR2YW5jZWQiKTsNCgkkdGhpcy0+Q3JlYXRlUGVybWlzc2lvbigiYXZwbGF5ZXJfbWFuYWdlX3BsYXllciIsICJhdnBsYXllcjogTWFuYWdlIHBsYXllciIpOw0KCSR0aGlzLT5DcmVhdGVQZXJtaXNzaW9uKCJhdnBsYXllcl9tYW5hZ2VfbWVkaWFmaWxlIiwgImF2cGxheWVyOiBNYW5hZ2UgbWVkaWFmaWxlIik7DQovLyBhY3RpdmF0aW5nIGRlZmF1bHQgcHJlZmVyZW5jZXMNCgkkZGVmcHJlZnMgPSBhcnJheSgidGFiZGlzcGxheV9wbGF5ZXIiLCJzZWFyY2htb2R1bGVfaW5kZXhfcGxheWVyIiwibmV3aXRlbXNmaXJzdF9wbGF5ZXIiLCJ0YWJkaXNwbGF5X21lZGlhZmlsZSIsInNlYXJjaG1vZHVsZV9pbmRleF9tZWRpYWZpbGUiLCJuZXdpdGVtc2ZpcnN0X21lZGlhZmlsZSIsInJlc3RyaWN0X3Blcm1pc3Npb25zIiwib3JkZXJieW5hbWUiLCJkaXNwbGF5X2ZpbHRlciIsImRpc3BsYXlfaW5zdGFudHNlYXJjaCIsImRpc3BsYXlfaW5zdGFudHNvcnQiLCJzaG93dGh1bWJuYWlscyIsImxvYWRfbmJjaGlsZHJlbiIsInVzZV9zZXNzaW9uIik7DQoJZm9yZWFjaCgkZGVmcHJlZnMgYXMgJG9uZXByZWYpCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCRvbmVwcmVmLHRydWUpOw0KCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCJlbXB0eXRlbXBsYXRlIiwiKioiKTsNCg0KLy8gZXZlbnRzDQoJJHRoaXMtPkNyZWF0ZUV2ZW50KCJhdnBsYXllcl9hZGRlZCIpOw0KCSR0aGlzLT5DcmVhdGVFdmVudCgiYXZwbGF5ZXJfbW9kaWZpZWQiKTsNCgkkdGhpcy0+Q3JlYXRlRXZlbnQoImF2cGxheWVyX2RlbGV0ZWQiKTsNCgkNCi8vIHByZXBhcmUgaW5mb3JtYXRpb24gZm9yIGFuIGV2ZW50dWFsIHVwZ3JhZGUNCgkkdGhpcy0+U2V0UHJlZmVyZW5jZSgibWFrZXJ2ZXJzaW9uIiwiMS44LjkuMyIpOw0KDQovLyBwdXQgbWVudGlvbiBpbnRvIHRoZSBhZG1pbiBsb2cNCgkkdGhpcy0+QXVkaXQoIDAsICR0aGlzLT5MYW5nKCJmcmllbmRseW5hbWUiKSwgJHRoaXMtPkxhbmcoImluc3RhbGxlZCIsJHRoaXMtPkdldFZlcnNpb24oKSkpOw0KDQo/Pg0K]]></data>
	</file>
	<file>
	  <filename>/method.uninstall.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmlmKCFpc3NldCgkZ0NtcykpIGV4aXQ7DQoNCi8vIFR5cGljYWwgRGF0YWJhc2UgSW5pdGlhbGl6YXRpb24NCiRkYiA9ICYkdGhpcy0+Y21zLT5kYjsNCiRkaWN0ID0gTmV3RGF0YURpY3Rpb25hcnkoJGRiKTsNCg0KDQoNCgkkc3FsYXJyYXkgPSAkZGljdC0+RHJvcFRhYmxlU1FMKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2F2cGxheWVyX3BsYXllciIpOw0KCSRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsNCgkkZGItPkRyb3BTZXF1ZW5jZShjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9hdnBsYXllcl9wbGF5ZXJfc2VxIik7DQoJDQoNCgkkc3FsYXJyYXkgPSAkZGljdC0+RHJvcFRhYmxlU1FMKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2F2cGxheWVyX21lZGlhZmlsZSIpOw0KCSRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsNCgkkZGItPkRyb3BTZXF1ZW5jZShjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9hdnBsYXllcl9tZWRpYWZpbGVfc2VxIik7DQoJDQoJJHNxbGFycmF5ID0gJGRpY3QtPkRyb3BUYWJsZVNRTChjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9hdnBsYXllcl9maWVsZG9wdGlvbnMiKTsNCgkkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7DQoJJGRiLT5Ecm9wU2VxdWVuY2UoY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfYXZwbGF5ZXJfZmllbGRvcHRpb25zX3NlcSIpOw0KCQ0KDQoJLy8kc3FsYXJyYXkgPSAkZGljdC0+RHJvcFRhYmxlU1FMKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2F2cGxheWVyX3RlbXBsYXRlcyIpOw0KCS8vJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOw0KCSR0aGlzLT5EZWxldGVUZW1wbGF0ZSgiIiwkdGhpcy0+R2V0TmFtZSgpKTsNCgkNCgkkc3FsYXJyYXkgPSAkZGljdC0+RHJvcFRhYmxlU1FMKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2F2cGxheWVyX3NhdmVkX3F1ZXJpZXMiKTsNCgkkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7DQoJJGRiLT5Ecm9wU2VxdWVuY2UoY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfYXZwbGF5ZXJfc2F2ZWRfcXVlcmllc19zZXEiKTsNCg0KLy8gcGVybWlzc2lvbnMNCgkkdGhpcy0+UmVtb3ZlUGVybWlzc2lvbigiYXZwbGF5ZXJfbWFuYWdlX3BsYXllciIpOw0KCSR0aGlzLT5SZW1vdmVQZXJtaXNzaW9uKCJhdnBsYXllcl9tYW5hZ2VfbWVkaWFmaWxlIik7DQoJJHRoaXMtPlJlbW92ZVBlcm1pc3Npb24oImF2cGxheWVyX2FkdmFuY2VkIik7DQoJJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoKTsNCgkNCi8vIGV2ZW50cw0KCSR0aGlzLT5SZW1vdmVFdmVudCgiYXZwbGF5ZXJfYWRkZWQiKTsNCgkkdGhpcy0+UmVtb3ZlRXZlbnQoImF2cGxheWVyX21vZGlmaWVkIik7DQoJJHRoaXMtPlJlbW92ZUV2ZW50KCJhdnBsYXllcl9kZWxldGVkIik7DQoNCi8vIHB1dCBtZW50aW9uIGludG8gdGhlIGFkbWluIGxvZw0KCSR0aGlzLT5BdWRpdCggMCwgJHRoaXMtPkxhbmcoImZyaWVuZGx5bmFtZSIpLCAkdGhpcy0+TGFuZygidW5pbnN0YWxsZWQiKSk7DQoNCj8+DQo=]]></data>
	</file>
	<file>
	  <filename>/method.upgrade.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7CgokZGIgPSYgJHRoaXMtPkdldERiKCk7CiRkaWN0ID0gTmV3RGF0YURpY3Rpb25hcnkoJGRiKTsKJHRhYm9wdCA9IGFycmF5KCJteXNxbCIgPT4gIlRZUEU9TXlJU0FNIik7CgovLyBQQVJUIDE6IFRoaXMgZG9lcyB0aGUgdXBncmFkZSBmb3IgdGhlIENUTE1vZHVsZU1ha2VyIHBhcnQKLy8gVW5mb3J0dW5hdGVseSwgdGhpcyBpcyBvbmx5IGJhY2t3YXJkIGNvbXBhdGlibGUgdG8gQ1RMTW9kdWxlTWFrZXIgMS42LjMuIEkgY291bGRuJ3QgZ28gYW55IGZ1cnRoZXIgYmVoaW5kIGJlY2F1c2UgYXQgdGhhdCB0aW1lIHRoZSBtYWtlciB2ZXJzaW9uIHdhc24ndCBzYXZlZCBhbnl3aGVyZQoKJG9sZG1ha2VyID0gJHRoaXMtPkdldFByZWZlcmVuY2UoIm1ha2VydmVyc2lvbiIsICJ2ZXJ5b2xkIik7Cgpzd2l0Y2goJG9sZG1ha2VyKXsKCS8vIEJFR0lOIFNXSVRDSCgkb2xkbWFrZXIpCgoJY2FzZSAidmVyeW9sZCI6CgkJLy8gdGhlIG1vZHVsZSB3YXMgY3JlYXRlZCB3aXRoIHZlcnNpb24gMS42LjMgb3IgcHJpb3IuCgkJJHRoaXMtPkNyZWF0ZUV2ZW50KCJhdnBsYXllcl9hZGRlZCIpOwoJCSR0aGlzLT5DcmVhdGVFdmVudCgiYXZwbGF5ZXJfbW9kaWZpZWQiKTsKCQkkdGhpcy0+Q3JlYXRlRXZlbnQoImF2cGxheWVyX2RlbGV0ZWQiKTsKCQlicmVhazsKCWNhc2UgIjEuNi40IjoKCWNhc2UgIjEuNyI6CgljYXNlICIxLjcuMSI6CgljYXNlICIxLjcuMiI6CgljYXNlICIxLjcuMyI6CgljYXNlICIxLjcuNCI6CgoKLy8gSU5TRVJUSU5HIERFRkFVTFQgVEVNUExBVEVTCgkkdGVtcGxhdGUgPSAnPGgyPnskbGV2ZWx0aXRsZX08L2gyPgp7aWYgJGl0ZW1jb3VudCA+IDB9Cjx1bD4Ke2ZvcmVhY2ggZnJvbT0kaXRlbWxpc3QgaXRlbT0iaXRlbSJ9Cgk8bGkge2lmICRpdGVtLT5pc19zZWxlY3RlZH1jbGFzcz0iYWN0aXZlInsvaWZ9PnskaXRlbS0+ZGV0YWlsbGlua308L2xpPgp7L2ZvcmVhY2h9CjwvdWw+CntpZiAkcGFnZV9wYWdlbnVtYmVyc30KPGRpdiBpZD0icGFnZW1lbnUiIHN0eWxlPSJ0ZXh0LWFsaWduOiBjZW50ZXI7Ij4KeyRwYWdlX3ByZXZpb3VzfSZuYnNwOyB7JHBhZ2Vfc2hvd2luZ30veyRwYWdlX3RvdGFsaXRlbXN9ICZuYnNwO3skcGFnZV9uZXh0fTxici8+CnskcGFnZV9wYWdlbnVtYmVyc30KPC9kaXY+CnsvaWZ9CntlbHNlfQo8cD57JGVycm9yX21zZ308L3A+CnsvaWZ9Cic7CiR0aGlzLT5TZXRUZW1wbGF0ZSgibGlzdF9kZWZhdWx0X3Zlcl8xLjMiLCR0ZW1wbGF0ZSwkdGhpcy0+R2V0TmFtZSgpKTsKICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlKCJsaXN0dGVtcGxhdGVfcGxheWVyX3Zlcl8xLjMiLCJsaXN0X2RlZmF1bHRfdmVyXzEuMyIpOwogICAgJHRoaXMtPlNldFByZWZlcmVuY2UoImxpc3R0ZW1wbGF0ZV9tZWRpYWZpbGVfdmVyXzEuMyIsImxpc3RfZGVmYXVsdF92ZXJfMS4zIik7CgoKJHRlbXBsYXRlID0gJzxoMz57JGl0ZW0tPm5hbWV9PC9oMz4Ke2lmICRpdGVtLT5tZWRpYWZpbGUgIT0gIiJ9PHA+eyRsYWJlbHMtPm1lZGlhZmlsZX06IDxhIGhyZWY9InskaXRlbS0+bWVkaWFmaWxlLT51cmx9Ij57JGl0ZW0tPm1lZGlhZmlsZS0+ZmlsZXBhdGh9PC9hPiAoeyRpdGVtLT5tZWRpYWZpbGUtPnNpemVfd2Zvcm1hdH0pPC9wPnsvaWZ9CntpZiAkaXRlbS0+cGljdHVyZSAhPSAiIn08cD57JGl0ZW0tPnBpY3R1cmUtPmltYWdlfTwvcD57L2lmfQo8cD57JGxhYmVscy0+dXNlcmRlZmluZWQyfTogeyRpdGVtLT51c2VyZGVmaW5lZDJfbmFtZXZhbHVlfTwvcD4KPG9iamVjdCB0eXBlPSJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCJkYXRhPSJ7JGl0ZW0tPnBhcmVudF9vYmplY3QtPmxvY2F0aW9ufSIgd2lkdGg9InskaXRlbS0+cGFyZW50X29iamVjdC0+d2lkdGh9ImhlaWdodD0ieyRpdGVtLT5wYXJlbnRfb2JqZWN0LT5oZWlnaHR9Ij48YnIgLz4KPHBhcmFtIG5hbWU9Im1vdmllInZhbHVlPSJ7JGl0ZW0tPnBhcmVudF9vYmplY3QtPmxvY2F0aW9ufSIgLz48YnIgLz4KPHBhcmFtIG5hbWU9IkZsYXNoVmFycyIgdmFsdWU9InskaXRlbS0+cGFyZW50X29iamVjdC0+cGxheWVydHlwZV9uYW1ldmFsdWV9PWh0dHA6Ly97JHJvb3RfdXJsfS91cGxvYWRzeyRpdGVtLT5tZWRpYWZpbGUtPmZpbGVwYXRofXskaXRlbS0+cGFyZW50X29iamVjdC0+cGFyYW1ldGVyc30iLz48cGFyYW0gbmFtZT0id21vZGUidmFsdWU9InRyYW5zcGFyZW50IiAvPjwvb2JqZWN0PgonOwokdGhpcy0+U2V0VGVtcGxhdGUoImZpbmFsX2RlZmF1bHRfdmVyXzEuMyIsJHRlbXBsYXRlLCR0aGlzLT5HZXROYW1lKCkpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgiZmluYWx0ZW1wbGF0ZV92ZXJfMS4zIiwiZmluYWxfZGVmYXVsdF92ZXJfMS4zIik7CgokdGVtcGxhdGUgPSAnPHA+eyRlcnJvcl9tc2d9PC9wPgp7aWYgJGJhY2tsaW5rfTxwPnskYmFja2xpbmt9PC9wPnsvaWZ9JzsKJHRoaXMtPlNldFRlbXBsYXRlKCJub19yZXN1bHQiLCR0ZW1wbGF0ZSwkdGhpcy0+R2V0TmFtZSgpKTsKCgoKCgoKCQkKCQkvLyBvcHRpb24gdmFsdWVzIGZvciBkeW5hbWljIGxpc3QgZmllbGRzIGFyZSBub3cgYWxsIGluIHRoZSBzYW1lIHRhYmxlCgoJCS8vIENyZWF0ZSB0aGUgbmV3IGZpZWxkb3B0aW9ucyB0YWJsZQoJCSRuZXd0YWJsZSA9IGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2F2cGxheWVyX2ZpZWxkb3B0aW9ucyI7CgkJJGZsZHMgPSAiCgkJCWlkIEksCgkJCWZpZWxkIEMoMTI4KSwKCQkJbmFtZSBDKDMyKSwKCQkJaXRlbV9vcmRlciBJCgkJCSI7CgkJJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZVRhYmxlU1FMKCRuZXd0YWJsZSwgJGZsZHMsICR0YWJvcHQpOwoJCSRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCQkkZGItPkNyZWF0ZVNlcXVlbmNlKCRuZXd0YWJsZS4iX3NlcSIpOwoKCQkvLyB0cmFuc2ZlciB0aGUgZXhpc3Rpbmcgb3B0aW9ucwoJCSRsaXN0ZmllbGRzID0gYXJyYXkoYXJyYXkoIkEiLCAicGxheWVyIiwgInVzZXJkZWZpbmVkMSIpLGFycmF5KCJCIiwgIm1lZGlhZmlsZSIsICJ1c2VyZGVmaW5lZDIiKSk7CgkJJG1heGlkID0gMDsKCQlmb3JlYWNoKCRsaXN0ZmllbGRzIGFzICRmaWVsZCl7CgkJCSRvbGR0YWJsZSA9IGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2F2cGxheWVyXyIuJGZpZWxkWzBdLiJfIi4kZmllbGRbMl0uIl9vcHRpb25zIjsKCQkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCJTRUxFQ1QgKiBGUk9NICIuJG9sZHRhYmxlKTsKCQkJJGl0ZW1fb3JkZXIgPSAxOwoJCQl3aGlsZSgkZGJyZXN1bHQgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSl7CgkJCQlpZigkcm93WyJpZCJdID4gJG1heGlkKQkkbWF4aWQgPSAkcm93WyJpZCJdOwoJCQkJJG5ld2lkID0gJGRiLT5HZW5JRCgkbmV3dGFibGUuIl9zZXEiKTsKCQkJCSRxdWVyeSA9ICJJTlNFUlQgSU5UTyAiLiRuZXd0YWJsZS4iIFNFVCBpZD0/LCBmaWVsZD0/LCBuYW1lPT8sIGl0ZW1fb3JkZXI9PyI7CgkJCQkkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkcm93WyJpZCJdLCAkZmllbGRbMV0uIl8iLiRmaWVsZFsyXSwgJHJvd1sibmFtZSJdLCAkaXRlbV9vcmRlcikpOwoJCQkJJGl0ZW1fb3JkZXIrKzsKCQkJfQoJCQkkc3FsYXJyYXkgPSAkZGljdC0+RHJvcFRhYmxlU1FMKCRvbGR0YWJsZSk7CgkJCSRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCQkJJGRiLT5Ecm9wU2VxdWVuY2UoJG9sZHRhYmxlLiJfc2VxIik7CgkJfQoJCS8vIHdlIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIG5leHQgb3B0aW9ucyB3b24ndCBoYXZlIHRoZSBzYW1lIGlkcwoJCSRkdW1teWlkID0gJGRiLT5HZW5JRCgkbmV3dGFibGUuIl9zZXEiKTsKCQl3aGlsZSgkZHVtbXlpZCA8PSAkbWF4aWQpewoJCQkkZHVtbXlpZCA9ICRkYi0+R2VuSUQoJG5ld3RhYmxlLiJfc2VxIik7CgoKCS8vcGxheWVydHlwZQoJCQkkcXVlcmllcyA9IGFycmF5KCk7CgkJCSRxdWVyaWVzW10gPSAiQUxURVIgVEFCTEUgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9hdnBsYXllcl9wbGF5ZXIgQUREIENPTFVNTiBwbGF5ZXJ0eXBlIElOVCI7CgkJCWZvcmVhY2goJHF1ZXJpZXMgYXMgJHF1ZXJ5KQkJbXlzcWxfcXVlcnkoJHF1ZXJ5KTsKCQoJCgoJCQoKCgoKfTsKCWNhc2UgIjEuOC4xIjoKCWNhc2UgIjEuOC4yIjoKCWNhc2UgIjEuOC4yLjIiOgoJY2FzZSAiMS44LjMiOgoJY2FzZSAiMS44LjMuMSI6CgkJLy8gQ3JlYXRlcyB0aGUgcXVlcmllcyB0YWJsZQoJCSRmbGRzID0gIgoJCQlpZCBJLAoJCQluYW1lIEMoNjQpLAoJCQl3aGF0IEMoMzIpLAoJCQl3aGVyZWNsYXVzZSBDKDI1NSksCgkJCXdoZXJldmFsdWVzIEMoMjU1KSwKCQkJcXVlcnlvcmRlciBDKDMyKQoJCQkiOwoJCSRzcWxhcnJheSA9ICRkaWN0LT5DcmVhdGVUYWJsZVNRTChjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9hdnBsYXllcl9zYXZlZF9xdWVyaWVzIiwgJGZsZHMsICR0YWJvcHQpOwoJCSRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCQkkZGItPkNyZWF0ZVNlcXVlbmNlKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2F2cGxheWVyX3NhdmVkX3F1ZXJpZXNfc2VxIik7CgkJJHRoaXMtPkNyZWF0ZVBlcm1pc3Npb24oImF2cGxheWVyX2FkdmFuY2VkIiwgImF2cGxheWVyOiBBZHZhbmNlZCIpOwoJY2FzZSAiMS44LjQiOgoJY2FzZSAiMS44LjQuMSI6CgljYXNlICIxLjguNSI6CgljYXNlICIxLjguNS4xIjoKCQkkdGhpcy0+Q3JlYXRlUGVybWlzc2lvbigiYXZwbGF5ZXJfbm9ybWFsdXNlciIsICJhdnBsYXllcjogTm9ybWFsIHVzZXIiKTsKCQkvLyBhY3RpdmF0aW5nIGRlZmF1bHQgcHJlZmVyZW5jZXMKCQkkZGVmcHJlZnMgPSBhcnJheSgidGFiZGlzcGxheV9wbGF5ZXIiLCJzZWFyY2htb2R1bGVfaW5kZXhfcGxheWVyIiwibmV3aXRlbXNmaXJzdF9wbGF5ZXIiLCJ0YWJkaXNwbGF5X21lZGlhZmlsZSIsInNlYXJjaG1vZHVsZV9pbmRleF9tZWRpYWZpbGUiLCJuZXdpdGVtc2ZpcnN0X21lZGlhZmlsZSIsInJlc3RyaWN0X3Blcm1pc3Npb25zIiwiZGlzcGxheV9maWx0ZXIiLCJkaXNwbGF5X2luc3RhbnRzZWFyY2giKTsKCQlmb3JlYWNoKCRkZWZwcmVmcyBhcyAkb25lcHJlZikJJHRoaXMtPlNldFByZWZlcmVuY2UoJG9uZXByZWYsdHJ1ZSk7CgljYXNlICIxLjguNiI6CgljYXNlICIxLjguNi4xIjoKCWNhc2UgIjEuOC43IjoKCWNhc2UgIjEuOC43LjEiOgoJCWlmKCRkYi0+ZGJ0eXBlID09ICJteXNxbCIgfHwgJGRiLT5kYnR5cGUgPT0gIm15c3FsaSIpewoJCQkvLyBtc3lxbAoJCQkkcXVlcmllcyA9IGFycmF5KCk7CgkJCSRxdWVyaWVzW10gPSAiQUxURVIgVEFCTEUgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9hdnBsYXllcl9wbGF5ZXIgQUREIENPTFVNTiBkYXRlX2NyZWF0ZWQgREFURVRJTUUiOwoJCQkkcXVlcmllc1tdID0gIlVQREFURSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2F2cGxheWVyX3BsYXllciBTRVQgZGF0ZV9jcmVhdGVkPWRhdGVfbW9kaWZpZWQiOwoJCQkkcXVlcmllc1tdID0gIkFMVEVSIFRBQkxFICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfYXZwbGF5ZXJfbWVkaWFmaWxlIEFERCBDT0xVTU4gZGF0ZV9jcmVhdGVkIERBVEVUSU1FIjsKCQkJJHF1ZXJpZXNbXSA9ICJVUERBVEUgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9hdnBsYXllcl9tZWRpYWZpbGUgU0VUIGRhdGVfY3JlYXRlZD1kYXRlX21vZGlmaWVkIjsKCQkJJHF1ZXJpZXNbXSA9ICJBTFRFUiBUQUJMRSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2F2cGxheWVyX3BsYXllciBBREQgQ09MVU1OIHBsYXllcnR5cGUgSU5UIjsKCQkJZm9yZWFjaCgkcXVlcmllcyBhcyAkcXVlcnkpCQlteXNxbF9xdWVyeSgkcXVlcnkpOwoKCQl9ZWxzZXsKCQkJLy8gbm9uLW15c3FsCgkJCSRkaWN0LT5BZGRDb2x1bW5TUUwoY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfYXZwbGF5ZXJfcGxheWVyIiwgImRhdGVfY3JlYXRlZCAiLkNNU19BRE9EQl9EVCk7CgkJCSRkaWN0LT5BZGRDb2x1bW5TUUwoY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfYXZwbGF5ZXJfbWVkaWFmaWxlIiwgImRhdGVfY3JlYXRlZCAiLkNNU19BRE9EQl9EVCk7CgkJCQoJCX0KCWNhc2UgIjEuOC43LjIiOgoJY2FzZSAiMS44LjgiOgoJY2FzZSAiMS44LjguMSI6CgljYXNlICIxLjguOC4yIjoKCWNhc2UgIjEuOC44LjMiOgoJY2FzZSAiMS44LjguNCI6CgkJJHRoaXMtPlNldFByZWZlcmVuY2UoImFkbWlucGFnZXMiLDApOwoJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCJsb2FkX25iY2hpbGRyZW4iLHRydWUpOwoJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCJsb2FkX25leHRwcmV2aW91cyIsZmFsc2UpOwoJY2FzZSAiMS44LjkiOgoJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCJ1c2Vfc2Vzc2lvbiIsdHJ1ZSk7CgkJJHRoaXMtPlNldFByZWZlcmVuY2UoImRlZmVtcHR5dGVtcGxhdGUiLCIqKiIpOwoJCQoJLy8gRU5EIFNXSVRDSCgkb2xkbWFrZXIpCn0KCiR0aGlzLT5TZXRQcmVmZXJlbmNlKCJtYWtlcnZlcnNpb24iLCAiMS44LjkuMyIpOwovL2lmKCFpc3NldCgkY3VycmVudF92ZXJzaW9uKSkgJGN1cnJlbnRfdmVyc2lvbiA9ICRvbGR2ZXJzaW9uOwoKCj8+]]></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+CjwvZGl2Pgp7aWYgJHBhZ2VpbmZvfQo8cCBzdHlsZT0idGV4dC1hbGlnbjogY2VudGVyOyI+e2lmICRwcmV2aW91c3BhZ2V9eyRwcmV2aW91c3BhZ2V9ICZuYnNwOyB7L2lmfXskcGFnZWluZm99e2lmICRuZXh0cGFnZX0gJm5ic3A7IHskbmV4dHBhZ2V9ey9pZn08YnIvPgp7JHBhZ2VzfTwvcD4Key9pZn0KPHA+eyRhZGRuZXd9PC9wPnsvaWZ9Cg==]]></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+DQoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG5hbWVfbGFiZWx9KiA6PC9wPg0KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JG5hbWVfaW5wdXR9PC9wPg0KCTwvZGl2Pg0KCXtpZiAkYWxpYXNfaW5wdXR9PGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JGFsaWFzX2xhYmVsfSA6PC9wPg0KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JGFsaWFzX2lucHV0fTwvcD4NCgk8L2Rpdj4NCgl7L2lmfQ0KDQoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JGxvY2F0aW9uX2xhYmVsfSogOjwvcD4NCgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRsb2NhdGlvbl9pbnB1dH08L3A+DQoJPC9kaXY+DQoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHdpZHRoX2xhYmVsfSA6PC9wPg0KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JHdpZHRoX2lucHV0fTwvcD4NCgk8L2Rpdj4NCgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KCQk8cCBjbGFzcz0icGFnZXRleHQiPnskaGVpZ2h0X2xhYmVsfSA6PC9wPg0KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JGhlaWdodF9pbnB1dH08L3A+DQoJPC9kaXY+DQoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHBhcmFtZXRlcnNfbGFiZWx9IDo8L3A+DQoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskcGFyYW1ldGVyc19pbnB1dH08L3A+DQoJPC9kaXY+DQoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHVzZXJkZWZpbmVkMV9sYWJlbH0gOjwvcD4NCgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyR1c2VyZGVmaW5lZDFfaW5wdXR9PC9wPg0KCTwvZGl2Pg0KCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQoJCTxwIGNsYXNzPSJwYWdldGV4dCI+eyRwbGF5ZXJ0eXBlX2xhYmVsfSA6PC9wPg0KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JHBsYXllcnR5cGVfaW5wdXR9PC9wPg0KCTwvZGl2Pg0KPGJyLz4NCjxwPnskc3VibWl0fSB7JGFwcGx5fSB7JGNhbmNlbH08L3A+DQo=]]></data>
	</file>
	<file>
	  <filename>/templates/editB.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[DQp7aWYgJGl0ZW1hbGlhc308c3BhbiBzdHlsZT0iZmxvYXQ6IHJpZ2h0OyBmb250LXNpemU6IDgwJSI+eyRpdGVtYWxpYXN9PC9zcGFuPnsvaWZ9DQo8aDE+eyRlZGl0dGl0bGV9PC9oMT4NCjxwPnskc3VibWl0fSB7JGFwcGx5fSB7JGNhbmNlbH08L3A+DQo8YnIvPjxici8+DQoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG5hbWVfbGFiZWx9KiA6PC9wPg0KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JG5hbWVfaW5wdXR9PC9wPg0KCTwvZGl2Pg0KCXtpZiAkYWxpYXNfaW5wdXR9PGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JGFsaWFzX2xhYmVsfSA6PC9wPg0KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JGFsaWFzX2lucHV0fTwvcD4NCgk8L2Rpdj4NCgl7L2lmfQ0KDQoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHBhcmVudF9sYWJlbH0qIDo8L3A+DQoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskcGFyZW50X2lucHV0fTwvcD4NCgk8L2Rpdj4NCgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KCQk8cCBjbGFzcz0icGFnZXRleHQiPnskbWVkaWFmaWxlX2xhYmVsfSogOjwvcD4NCgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRtZWRpYWZpbGVfaW5wdXR9PC9wPg0KCTwvZGl2Pg0KCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQoJCTxwIGNsYXNzPSJwYWdldGV4dCI+eyRwaWN0dXJlX2xhYmVsfSA6PC9wPg0KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JHBpY3R1cmVfaW5wdXR9PC9wPg0KCTwvZGl2Pg0KCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQoJCTxwIGNsYXNzPSJwYWdldGV4dCI+eyR1c2VyZGVmaW5lZDJfbGFiZWx9IDo8L3A+DQoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskdXNlcmRlZmluZWQyX2lucHV0fTwvcD4NCgk8L2Rpdj4NCjxici8+DQo8cD57JHN1Ym1pdH0geyRhcHBseX0geyRjYW5jZWx9PC9wPg0K]]></data>
	</file>
	<file>
	  <filename>/templates/frontend_add_mediafile.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgxPnskZWRpdHRpdGxlfTwvaDE+Cgo8YnIvPgo8dGFibGUgYm9yZGVyPSIwIj4KCTx0cj4KCQk8dGQ+eyRuYW1lX2xhYmVsfSogOjwvdGQ+CgkJPHRkPnskbmFtZV9pbnB1dH08L3RkPgoJPC90cj4KCgk8dHI+CgkJPHRkPnskcGFyZW50X2xhYmVsfSogOjwvdGQ+CgkJPHRkPnskcGFyZW50X2lucHV0fTwvdGQ+Cgk8L3RyPgoJPHRyPgoJCTx0ZD57JG1lZGlhZmlsZV9sYWJlbH0qIDo8L3RkPgoJCTx0ZD57JG1lZGlhZmlsZV9pbnB1dH08L3RkPgoJPC90cj4KCTx0cj4KCQk8dGQ+eyRwaWN0dXJlX2xhYmVsfSA6PC90ZD4KCQk8dGQ+eyRwaWN0dXJlX2lucHV0fTwvdGQ+Cgk8L3RyPgoJPHRyPgoJCTx0ZD57JHVzZXJkZWZpbmVkMl9sYWJlbH0gOjwvdGQ+CgkJPHRkPnskdXNlcmRlZmluZWQyX2lucHV0fTwvdGQ+Cgk8L3RyPgo8L3RhYmxlPjxici8+Cgo8cD48ZGl2IHN0eWxlPSJmbG9hdDpsZWZ0OyI+eyRjYXB0Y2hhX2ltYWdlfTwvZGl2PnskY2FwdGNoYV9wcm9tcHR9PGJyLz57JGNhcHRjaGFfaW5wdXR9PC9wPgo8cD57JHN1Ym1pdH08L3A+Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/frontend_add_player.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgxPnskZWRpdHRpdGxlfTwvaDE+Cgo8YnIvPgo8dGFibGUgYm9yZGVyPSIwIj4KCTx0cj4KCQk8dGQ+eyRuYW1lX2xhYmVsfSogOjwvdGQ+CgkJPHRkPnskbmFtZV9pbnB1dH08L3RkPgoJPC90cj4KCgk8dHI+CgkJPHRkPnskbG9jYXRpb25fbGFiZWx9KiA6PC90ZD4KCQk8dGQ+eyRsb2NhdGlvbl9pbnB1dH08L3RkPgoJPC90cj4KCTx0cj4KCQk8dGQ+eyR3aWR0aF9sYWJlbH0gOjwvdGQ+CgkJPHRkPnskd2lkdGhfaW5wdXR9PC90ZD4KCTwvdHI+Cgk8dHI+CgkJPHRkPnskaGVpZ2h0X2xhYmVsfSA6PC90ZD4KCQk8dGQ+eyRoZWlnaHRfaW5wdXR9PC90ZD4KCTwvdHI+Cgk8dHI+CgkJPHRkPnskcGFyYW1ldGVyc19sYWJlbH0gOjwvdGQ+CgkJPHRkPnskcGFyYW1ldGVyc19pbnB1dH08L3RkPgoJPC90cj4KCTx0cj4KCQk8dGQ+eyR1c2VyZGVmaW5lZDFfbGFiZWx9IDo8L3RkPgoJCTx0ZD57JHVzZXJkZWZpbmVkMV9pbnB1dH08L3RkPgoJPC90cj4KCTx0cj4KCQk8dGQ+eyRwbGF5ZXJ0eXBlX2xhYmVsfSA6PC90ZD4KCQk8dGQ+eyRwbGF5ZXJ0eXBlX2lucHV0fTwvdGQ+Cgk8L3RyPgo8L3RhYmxlPjxici8+Cgo8cD48ZGl2IHN0eWxlPSJmbG9hdDpsZWZ0OyI+eyRjYXB0Y2hhX2ltYWdlfTwvZGl2PnskY2FwdGNoYV9wcm9tcHR9PGJyLz57JGNhcHRjaGFfaW5wdXR9PC9wPgo8cD57JHN1Ym1pdH08L3A+Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/search.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgyPnskc2VhcmNodGl0bGV9e2lmICR3aGF0fTogeyR3aGF0fXsvaWZ9PC9oMj4KPHA+eyRzZWFyY2hmaWVsZH17JHN1Ym1pdH08L3A+Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/search_generalresults.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgyPnskbGV2ZWx0aXRsZX08L2gyPgo8dWwgY2xhc3M9ImN0bF9zZWFyY2hyZXN1bHRzIj4Ke2ZvcmVhY2ggZnJvbT0kaXRlbWxpc3QgaXRlbT0iaXRlbSJ9CjxsaT57JGl0ZW0tPmRldGFpbGxpbmt9PC9saT4Key9mb3JlYWNofQo8L3VsPgp7aWYgJHBhZ2VtZW51fTxwPnskcGFnZW1lbnV9PC9wPnsvaWZ9Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/search_mediafile.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgyPnskc2VhcmNodGl0bGV9OiB7JHdoYXR9PC9oMj4KPHRhYmxlPgo8dHI+PHRkPnskdXNlcmRlZmluZWQyX2xhYmVsfTwvdGQ+PHRkPnskdXNlcmRlZmluZWQyX2lucHV0fTwvdGQ+PC90cj4KPHRyPjx0ZD57JHBhcmVudF9sYWJlbH08L3RkPjx0ZD57JHBhcmVudF9pbnB1dH08L3RkPjwvdHI+Cjx0cj48dGQ+eyRuYW1lX2xhYmVsfTwvdGQ+PHRkPnskbmFtZV9pbnB1dH08L3RkPjwvdHI+Cjx0cj48dGQ+eyRkYXRlX21vZGlmaWVkX2xhYmVsfTwvdGQ+PHRkPnskZGF0ZV9tb2RpZmllZF9pbnB1dH08L3RkPjwvdHI+CjwvdGFibGU+CjxwPnskc3VibWl0fTwvcD4=]]></data>
	</file>
	<file>
	  <filename>/templates/search_player.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgyPnskc2VhcmNodGl0bGV9OiB7JHdoYXR9PC9oMj4KPHRhYmxlPgo8dHI+PHRkPnskbG9jYXRpb25fbGFiZWx9PC90ZD48dGQ+eyRsb2NhdGlvbl9pbnB1dH08L3RkPjwvdHI+Cjx0cj48dGQ+eyR3aWR0aF9sYWJlbH08L3RkPjx0ZD57JHdpZHRoX2lucHV0fTwvdGQ+PC90cj4KPHRyPjx0ZD57JGhlaWdodF9sYWJlbH08L3RkPjx0ZD57JGhlaWdodF9pbnB1dH08L3RkPjwvdHI+Cjx0cj48dGQ+eyRwYXJhbWV0ZXJzX2xhYmVsfTwvdGQ+PHRkPnskcGFyYW1ldGVyc19pbnB1dH08L3RkPjwvdHI+Cjx0cj48dGQ+eyR1c2VyZGVmaW5lZDFfbGFiZWx9PC90ZD48dGQ+eyR1c2VyZGVmaW5lZDFfaW5wdXR9PC90ZD48L3RyPgo8dHI+PHRkPnskcGxheWVydHlwZV9sYWJlbH08L3RkPjx0ZD57JHBsYXllcnR5cGVfaW5wdXR9PC90ZD48L3RyPgo8dHI+PHRkPnskbmFtZV9sYWJlbH08L3RkPjx0ZD57JG5hbWVfaW5wdXR9PC90ZD48L3RyPgo8dHI+PHRkPnskZGF0ZV9tb2RpZmllZF9sYWJlbH08L3RkPjx0ZD57JGRhdGVfbW9kaWZpZWRfaW5wdXR9PC90ZD48L3RyPgo8L3RhYmxlPgo8cD57JHN1Ym1pdH08L3A+]]></data>
	</file>
</module>
