<?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>CMSSimplepie</name>
	<version>1.0</version>
  <mincmsversion>1.0</mincmsversion>
	<help>PGgzPldoYXQgRG9lcyBUaGlzIERvPzwvaDM+CjxwPlRoaXMgaXMgUlNTIFBhcnNlciB1c2luZyB0aGUgU2ltcGxlUGllIExpYiBodHRwOi8vc2ltcGxlcGllLm9yZzwvcD4KPGgzPkhvdyBEbyBJIFVzZSBJdDwvaDM+CjxwPlNpbXBsZSwganVzdCBhZGQgaXQgdG8geW91ciB5b3VyIHBhZ2Ugb3IgdGVtcGxhdGUgbGlrZSB0aGlzOiB7Q01TU2ltcGxlcGllIGZlZWQ9InlvdXR1YmUifTwvcD4KCjx1bD4KPGxpPkZvciB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhpcyBtb2R1bGUsIEZBUXMsIG9yIHRvIGZpbGUgYSBCdWcgUmVwb3J0LCBwbGVhc2UgdmlzaXQgdGhlIE1vZHVsZSBGb3JnZQo8YSBocmVmPSJodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL3NpbXBsZXBpZS8iPkNNU1NpbXBsZXBpZTwvYT4uPC9saT4KPGxpPkFkZGl0aW9uYWwgZGlzY3Vzc2lvbiBvZiB0aGlzIG1vZHVsZSBtYXkgYWxzbyBiZSBmb3VuZCBpbiB0aGUgPGEgaHJlZj0iaHR0cDovL2ZvcnVtLmNtc21hZGVzaW1wbGUub3JnIj5DTVMgTWFkZSBTaW1wbGUgRm9ydW1zPC9hPi48L2xpPgo8bGk+VGhlIGF1dGhvciwgTnVubywgY2FuIG9mdGVuIGJlIGZvdW5kIGluIHRoZSA8YSBocmVmPSJpcmM6Ly9pcmMuZnJlZW5vZGUubmV0LyNjbXMiPkNNUyBJUkMgQ2hhbm5lbDwvYT4uPC9saT4KPGxpPkZpbmFsbHksIHlvdSBtYXkgaGF2ZSBzb21lIHN1Y2Nlc3MgZW1haWxpbmcgdGhlIGF1dGhvciBkaXJlY3RseS48L2xpPgo8L3VsPgo8cD5BcyBwZXIgdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCBhcy1pcy4gUGxlYXNlIHJlYWQgdGhlIHRleHQKb2YgdGhlIGxpY2Vuc2UgZm9yIHRoZSBmdWxsIGRpc2NsYWltZXIuPC9wPgoKPGgzPkNvcHlyaWdodCBhbmQgTGljZW5zZTwvaDM+CjxwPkNvcHlyaWdodCAmY29weTsgMjAwOSwgTnVubyBDb3N0YSA8YSBocmVmPSJtYWlsdG86bnVuby5tZmNvc3RhQHNhcG8ucHQiPiZsdDtudW5vLm1mY29zdGFAc2Fwby5wdCZndDs8L2E+LiBBbGwgUmlnaHRzIEFyZSBSZXNlcnZlZC48L3A+CjxwPlRoaXMgbW9kdWxlIGhhcyBiZWVuIHJlbGVhc2VkIHVuZGVyIHRoZSA8YSBocmVmPSJodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwiPkdOVSBQdWJsaWMgTGljZW5zZTwvYT4uIFlvdSBtdXN0IGFncmVlIHRvIHRoaXMgbGljZW5zZSBiZWZvcmUgdXNpbmcgdGhlIG1vZHVsZS48L3A+CjxoMz5EZXBlbmRlbmNpZXM8L2gzPjx1bD48bGk+Q0dFeHRlbnNpb25zID0mZ3Q7IDEuMTU8L2xpPjwvdWw+PGgzPlBhcmFtZXRlcnM8L2gzPjx1bD48bGk+PGVtPihvcHRpb25hbCk8L2VtPiBsYW5nPSJlbl9VUyIgLSBQYXJhbWV0ZXIgaXMgdXNlZCB0byBzcGVjaWZ5IHdoYXQgbGFuZ3VhZ2UgdG8gdXNlIGZvciBkaXNwbGF5IG9uIHRoZSBmcm9udGVuZC4gTm90IGFsbCBtb2R1bGVzIHN1cHBvcnQgb3IgbmVlZCB0aGlzLjwvbGk+PGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gZmVlZD0iIiAtIFRoaXMgaXMgeW91ciBmZWVkIE5hbWUgKG11c3QgYmUgY3JlYXRlZCBpbiBHZW5lcmFsIGZlZWRzIHRhYiksIHRoaXMgbWVhbnMgdGhhdCBwYXJhbSBuYW1lIGlzIHVuaXF1ZS4ge0NNU1NpbXBsZXBpZSBmZWVkPSJ5b3V0dWJlIn08L2xpPjxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IGxpbWl0PSIwIiAtIERlZmF1bHQgaXMgIjAiIHRoaXMgbWVhbnMgZGlzcGxheSBhbGwuIE9yIGxpbWl0PSIxMCIgaW5jbHVkZSBqdXN0IDEwIGl0ZW1zIGZlZWRzLjwvbGk+PGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gdGVtcGxhdGU9IiIgLSBTZXQgeW91ciB0ZW1wbGF0ZSAgdGVtcGxhdGU9InlvdXR1YmUiIDwvbGk+PC91bD4=</help>
	<about>PGJyIC8+QXV0aG9yOiBOdW5vIENvc3RhICZsdDtudW5vLm1mY29zdGFAc2Fwby5wdCZndDs8YnIgLz48YnIgLz5WZXJzaW9uOiAxLjA8YnIgLz48YnIgLz5DaGFuZ2UgSGlzdG9yeTo8YnIgLz48dWw+CjxsaT4KPHA+VmVyc2lvbjogMS4wPC9wPgo8cD5WZXJzaW9uIDEuMCBKdW5oIDIwMDkuIEluaXRpYWwgUmVsZWFzZS48L3A+CjwvbGk+IAo8L3VsPgo8YnIgLz4=</about>
	<description>CSMSimplePie is an RSS to HTML parser. Powerfull Module.</description>
	<requires>
	  <requiredname>CGExtensions</requiredname>
	  <requiredversion>1.15</requiredversion>
	</requires>
	<file>
	  <filename>/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/action.admin_add_edit.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KaWYgKCFpc3NldCgkZ0NtcykpDQoJCWV4aXQ7DQoNCiR0aGlzLT5TZXRDdXJyZW50VGFiKCdnZW5lcmFsJyk7DQoNCiRkYiA9ICYkZ0Ntcy0+R2V0RGIoKTsNCmlmIChpc3NldCgkcGFyYW1zWydjYW5jZWwnXSkpDQp7DQoJCSR0aGlzLT5SZWRpcmVjdFRvVGFiKCRpZCk7DQp9DQoNCiRzcF9uYW1lID0gaXNzZXQoJHBhcmFtc1snc3BfbmFtZSddKSA/IHRyaW0oJHBhcmFtc1snc3BfbmFtZSddKSA6ICcnOw0KJHNwX3VybCA9IGlzc2V0KCRwYXJhbXNbJ3NwX3VybCddKSA/IHRyaW0oJHBhcmFtc1snc3BfdXJsJ10pIDogJyc7DQoNCmlmIChpc3NldCgkcGFyYW1zWydzdWJtaXRfYWRkX2VkaXQnXSkpDQp7DQoNCg0KCQlpZiAoaXNzZXQoJHBhcmFtc1snc3BfaWQnXSkgJiYgJHBhcmFtc1snc3BfaWQnXSAhPSAtMSkNCgkJew0KCQkJCWlmICgkc3BfdXJsICE9ICcnKQ0KCQkJCXsNCgkJCQkJCSRxdWVyeSA9ICdVUERBVEUgJyAuIGNtc19kYl9wcmVmaXgoKSAuDQoJCQkJCQkJCSdtb2R1bGVfc2ltcGxlcGllIFNFVCBzcF91cmw9PyBXSEVSRSBzcF9pZCA9ID8nOw0KCQkJCQkJJHJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRzcF91cmwsICRwYXJhbXNbJ3NwX2lkJ10pKTsNCg0KCQkJCQkJJHRoaXMtPlNldE1lc3NhZ2UoJHRoaXMtPkxhbmcoJ3VwZGF0ZWRfZmVlZCcpKTsNCgkJCQkJCSR0aGlzLT5SZWRpcmVjdFRvVGFiKCRpZCk7DQoJCQkJfQ0KCQkJCWVsc2UNCgkJCQl7DQoJCQkJCQllY2hvICR0aGlzLT5TZXRFcnJvcigkdGhpcy0+TGFuZygnZXJyb3JfZmVlZCcpKTsNCgkJCQkJCSR0aGlzLT5SZWRpcmVjdFRvVGFiKCRpZCk7DQoJCQkJfSAvL2Vsc2UNCg0KDQoJCX0NCgkJZWxzZQ0KCQl7DQoJCQkJaWYgKCRzcF9uYW1lICE9ICcnICYmICRzcF91cmwgIT0gJycpDQoJCQkJew0KCQkJCQkJLy8gQ2hlY2sgaWYgd2UgYWxyZWFkeSBoYXZlIGEgZmVlZCBuYW1lIGluIGRiLg0KCQkJCQkJJHF1ZXJ5ID0gJ1NFTEVDVCBzcF9pZCwgc3BfbmFtZSAgRlJPTSAnIC4gY21zX2RiX3ByZWZpeCgpIC4NCgkJCQkJCQkJJ21vZHVsZV9zaW1wbGVwaWUgV0hFUkUgc3BfbmFtZSA9ID8gTElNSVQgMSc7DQoJCQkJCQkkdG1wID0gJGRiLT5HZXRPbmUoJHF1ZXJ5LCBhcnJheSgkc3BfbmFtZSkpOw0KCQkJCQkJaWYgKCR0bXApDQoJCQkJCQl7DQoJCQkJCQkJCSR0aGlzLT5TZXRFcnJvcigkdGhpcy0+TGFuZygnZmVlZF9uYW1lX2V4aXN0cycpKTsNCgkJCQkJCQkJJHRoaXMtPlJlZGlyZWN0VG9UYWIoJGlkKTsNCgkJCQkJCX0NCg0KDQoJCQkJCQkkcXVlcnkgPSAnSU5TRVJUIElOVE8gJyAuIGNtc19kYl9wcmVmaXgoKSAuDQoJCQkJCQkJCSdtb2R1bGVfc2ltcGxlcGllIChzcF9uYW1lLCBzcF91cmwpIFZBTFVFUyAoPyw/KSc7DQoJCQkJCQkkcmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJHBhcmFtc1snc3BfbmFtZSddLCAkcGFyYW1zWydzcF91cmwnXSkpOw0KCQkJCQkJJHBhcmFtc1snbW9kdWxlX21lc3NhZ2UnXSA9ICR0aGlzLT5MYW5nKCdhZGRlZF9yZWNvcmQnKTsNCgkJCQkJCSR0aGlzLT5TZXRNZXNzYWdlKCR0aGlzLT5MYW5nKCdhZGRlZF9mZWVkJykpOw0KCQkJCQkJJHRoaXMtPlJlZGlyZWN0VG9UYWIoJGlkKTsNCg0KCQkJCX0NCgkJCQllbHNlDQoJCQkJew0KCQkJCQkJZWNobyAkdGhpcy0+U2V0RXJyb3IoJHRoaXMtPkxhbmcoJ2Vycm9yX2ZlZWQnKSk7DQoJCQkJCQkkdGhpcy0+UmVkaXJlY3RUb1RhYigkaWQsICcnLCAnJywgJ2FkbWluX2FkZF9lZGl0Jyk7DQoJCQkJfSAvL2Vsc2UNCg0KCQl9DQoNCg0KCQlpZiAoJHJlc3VsdCA9PT0gZmFsc2UpDQoJCXsNCgkJCQkvLyB5ZWFoLCB0aGF0J3MgZ3JhY2VmdWwgOigNCgkJCQllY2hvICJEYXRhYmFzZSBlcnJvciEiOw0KCQkJCWV4aXQ7DQoJCX0NCgkJdW5zZXQoJHBhcmFtc1snc3BfaWQnXSk7DQoNCg0KfSAvLyBlbmQgc3VibWl0IHBhcmFtcyBzdWJtaXQNCg0KDQppZiAoaXNzZXQoJHBhcmFtc1snc3BfaWQnXSkpDQp7DQoJCSRxdWVyeSA9ICdTRUxFQ1Qgc3BfaWQsIHNwX25hbWUsIHNwX3VybCBGUk9NICcgLiBjbXNfZGJfcHJlZml4KCkgLg0KCQkJCSdtb2R1bGVfc2ltcGxlcGllIFdIRVJFIHNwX2lkID0gPyc7DQoJCSRyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkcGFyYW1zWydzcF9pZCddKSk7DQoNCgkJaWYgKCRyZXN1bHQgIT09IGZhbHNlKQ0KCQl7DQoJCQkJJHJvdyA9ICRyZXN1bHQtPkZldGNoUm93KCk7DQoJCQkJJHNpZCA9ICRyb3dbJ3NwX2lkJ107DQoJCQkJJG5hbWUgPSAkcm93WydzcF9uYW1lJ107DQoJCQkJJHVybCA9ICRyb3dbJ3NwX3VybCddOw0KCQl9DQoJCWVsc2UNCgkJew0KCQkJCS8vIHllYWgsIHRoYXQncyBncmFjZWZ1bCA6KA0KCQkJCWVjaG8gIkRhdGFiYXNlIGVycm9yISI7DQoJCQkJZXhpdDsNCgkJfQ0KfQ0KZWxzZQ0Kew0KCQkkc2lkID0gLTE7DQoJCSRuYW1lID0gJyc7DQoJCSR1cmwgPSAnJzsNCgkJJGlzX3VwZGF0ZSA9ICd0cnVlJzsNCn0NCg0KDQovL3RlbXBsYXRlcw0KJHNtYXJ0eS0+YXNzaWduKCdzdGFydF9mb3JtJywgJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCgkaWQsICdhZG1pbl9hZGRfZWRpdCcsICRyZXR1cm5pZCkpOw0KJHNtYXJ0eS0+YXNzaWduKCdpc191cGRhdGUnLCAkaXNfdXBkYXRlKTsNCiRzbWFydHktPmFzc2lnbignbmFtZScsICRuYW1lKTsNCiRzbWFydHktPmFzc2lnbignaW5wdXRfbmFtZScsICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAnc3BfbmFtZScsICRuYW1lLCAnNDAnKSk7DQokc21hcnR5LT5hc3NpZ24oJ2lucHV0X3VybCcsICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAnc3BfdXJsJywgJHVybCwgJzgwJykpOw0KLy8gcGFzcyBhIGhpZGRlbiBrZXkgdmFsdWUgYWxvbmcgd2l0aCB0aGUgc3VibWl0IGJ1dHRvbg0KJHNtYXJ0eS0+YXNzaWduKCdzdWJtaXQnLCAkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCAnc3BfaWQnLCAkc2lkKSAuICR0aGlzLT4NCgkJQ3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAnc3VibWl0X2FkZF9lZGl0JywgJHRoaXMtPkxhbmcoJ3N1Ym1pdCcpKSk7DQokc21hcnR5LT5hc3NpZ24oJ2NhbmNlbCcsICR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICdjYW5jZWwnLCBsYW5nKCdjYW5jZWwnKSkpOw0KJHNtYXJ0eS0+YXNzaWduKCdlbmRfZm9ybScsICR0aGlzLT5DcmVhdGVGb3JtRW5kKCkpOw0KDQoNCi8vIERpc3BsYXkgdGhlIHBvcHVsYXRlZCB0ZW1wbGF0ZQ0KZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdhZG1pbl9hZGRfZWRpdC50cGwnKTsNCg0KPz4=]]></data>
	</file>
	<file>
	  <filename>/action.admin_delete_feed.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KCQlpZiAoIWlzc2V0KCRnQ21zKSkNCgkJCQkJCWV4aXQ7DQoNCgkJJHRoaXMtPlNldEN1cnJlbnRUYWIoJ2dlbmVyYWwnKTsNCg0KCQlpZiAoISR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ1VzZSBTaW1wbGVwaWUnKSkNCgkJew0KCQkJCQkJcmV0dXJuICR0aGlzLT5EaXNwbGF5RXJyb3JQYWdlKCRpZCwgJHBhcmFtcywgJHJldHVybmlkLCAkdGhpcy0+TGFuZygnYWNjZXNzZGVuaWVkJykpOw0KCQl9DQoNCg0KCQkkaWQgPSBpc3NldCgkcGFyYW1zWydzcF9pZCddKSA/IChpbnQpJHBhcmFtc1snc3BfaWQnXSA6ICcnOw0KDQoJCWlmICghZW1wdHkoJGlkKSkNCgkJew0KDQoJCQkJCQkkdGhpcy0+X2RlbGV0ZV9mZWVkKCRpZCk7DQoJCQkJCQkkdGhpcy0+QXVkaXQoMCwgJHRoaXMtPkxhbmcoJ2ZyaWVuZGx5bmFtZScpLCAkdGhpcy0+TGFuZygnZmVlZF9kZWxldGVkJykpOw0KCQkJCQkJZWNobyAkdGhpcy0+U2V0TWVzc2FnZSgkdGhpcy0+TGFuZygnZmVlZF9kZWxldGVkJykpOw0KCQl9DQoJCWVsc2UNCgkJew0KCQkJCQkJZWNobyAkdGhpcy0+U2V0RXJyb3IoJHRoaXMtPkxhbmcoJ2Vycm9yX2RlbGV0ZScpKTsNCgkJfQ0KCQkkdGhpcy0+UmVkaXJlY3RUb1RhYigkaWQpOw0KDQo/Pg0K]]></data>
	</file>
	<file>
	  <filename>/action.default.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCglpZiAoIWlzc2V0KCRnQ21zKSkKCQkJZXhpdDsKCgoJJHNpbXBsZXBpZV9saWIgPSBjbXNfam9pbl9wYXRoKCRnQ21zLT5jb25maWdbJ3Jvb3RfcGF0aCddLCAnbW9kdWxlcycsCgkJCSdDTVNTaW1wbGVwaWUnLCAnbGlicycsICdzaW1wbGVwaWUuaW5jJyk7CglyZXF1aXJlX29uY2UgKCRzaW1wbGVwaWVfbGliKTsKCgkkc2ltcGxlcGllX3Rvb2xzID0gY21zX2pvaW5fcGF0aCgkZ0Ntcy0+Y29uZmlnWydyb290X3BhdGgnXSwgJ21vZHVsZXMnLAoJCQknQ01TU2ltcGxlcGllJywgJ2xpYnMnLCAnc2ltcGxlcGllX3Rvb2xzLnBocCcpOwoJcmVxdWlyZV9vbmNlICgkc2ltcGxlcGllX3Rvb2xzKTsKCgoJJGRiID0gJiRnQ21zLT5HZXREYigpOwoKCWlmIChpc3NldCgkcGFyYW1zWydmZWVkJ10pKQoJewoJCQkkZmVlZCA9ICRwYXJhbXNbJ2ZlZWQnXTsKCX0KCWVsc2UKCXsKCQkJZWNobyAkdGhpcy0+TGFuZygnZnJvbnRfcGFyYW1fbmFtZScpOwoJCQlyZXR1cm47Cgl9CgoKCSRxdWVyeSA9ICdTRUxFQ1Qgc3BfaWQsIHNwX3VybCBGUk9NICcgLiBjbXNfZGJfcHJlZml4KCkgLgoJCQknbW9kdWxlX3NpbXBsZXBpZSBXSEVSRSBzcF9uYW1lID0gPyBMSU1JVCAxJzsKCSRyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkZmVlZCkpOwoKCWlmICgkcmVzdWx0ICE9PSBmYWxzZSkKCXsKCQkJJHJvdyA9ICRyZXN1bHQtPkZldGNoUm93KCk7CgkJCSR1cmwgPSAkcm93WydzcF91cmwnXTsKCX0KCWVsc2UKCXsKCQkJLy8geWVhaCwgdGhhdCdzIGdyYWNlZnVsIDooCgkJCWVjaG8gIkRhdGFiYXNlIGVycm9yISI7CgkJCWV4aXQ7Cgl9CgkvL1ByZWZlcmVuY2VzCgkkaXNfY2FjaGUgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnaXNfY2FjaGUnLCB0cnVlKTsKCSRjYWNoZV9saWZldGltZSA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdjYWNoZV9saWZldGltZScsIDE4MDApOwoJJGxlbmd0aF9pbl9wcmVmID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ2xpbWl0JywgJzAnKTsKCgkvL2dyYWIgdGhlIGZlZWQKCSRmZWVkID0gbmV3IFNpbXBsZVBpZSgpOwoKCWlmICgkdXJsID09IG51bGwpCgl7CgkJCWVjaG8gJHRoaXMtPkxhbmcoJ2Zyb250X25vX2ZlZWQnKTsKCQkJcmV0dXJuOwoJfQoKCSRmZWVkLT5zZXRfZmVlZF91cmwoJHVybCk7CgkkZmVlZC0+c2V0X2NhY2hlX2xvY2F0aW9uKFRNUF9DQUNIRV9MT0NBVElPTik7CgkkZmVlZC0+ZW5hYmxlX2NhY2hlKCRpc19jYWNoZSk7CgkkZmVlZC0+c2V0X2NhY2hlX2R1cmF0aW9uKCRjYWNoZV9saWZldGltZSk7CgkvL2luaXQgdGhlIHByb2Nlc3MKCSRmZWVkLT5pbml0KCk7CgkkZmVlZC0+aGFuZGxlX2NvbnRlbnRfdHlwZSgpOwoKCgkvL2RlZmF1bHQgc3RhcnRpbmcgaXRlbQoJJHN0YXJ0ID0gMDsKCS8vZGVmYXVsdCBudW1iZXIgb2YgaXRlbXMgdG8gZGlzcGxheS4gMCA9IGFsbAoJJGxlbmd0aF9wcmVmID0gJGxlbmd0aF9pbl9wcmVmOwoKCWlmIChpc3NldCgkcGFyYW1zWydsaW1pdCddKSkKCXsKCQkJJGxlbmd0aCA9IHRyaW0oJHBhcmFtc1snbGltaXQnXSk7Cgl9CgllbHNlCgl7CgkJCSRsZW5ndGggPSAkbGVuZ3RoX3ByZWY7Cgl9CgoKCSRzbWFydHktPmFzc2lnbl9ieV9yZWYoJ2ZlZWQnLCAkZmVlZCk7Cgkkc21hcnR5LT5hc3NpZ24oJ3N0YXJ0JywgJHN0YXJ0KTsKCSRzbWFydHktPmFzc2lnbignbGVuZ3RoJywgJGxlbmd0aCk7CgoJLy8gUmVsYXRlZCB0byB0b29scwoJJHRvb2xzID0gbmV3IHNpbXBsZXBpZV90b29scygpOwoJJHNtYXJ0eS0+YXNzaWduX2J5X3JlZigndG9vbHMnLCAkdG9vbHMpOwoKCgkvLyBEaXNwbGF5IHRoZSBwb3B1bGF0ZWQgdGVtcGxhdGUKCSR0ZW1wbGF0ZSA9ICdzcF8nIC4gJHRoaXMtPkdldFByZWZlcmVuY2UoU1BfUFJFRl9ERUZBVUxUX0ZST05UX1NJTVBMRVBJRV9URU1QTEFURSk7CglpZiAoaXNzZXQoJHBhcmFtc1sndGVtcGxhdGUnXSkpCgl7CgkJCSR0ZW1wbGF0ZSA9ICdzcF8nIC4gdHJpbSgkcGFyYW1zWyd0ZW1wbGF0ZSddKTsKCX0KCWVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZUZyb21EYXRhYmFzZSgkdGVtcGxhdGUpOwoKPz4=]]></data>
	</file>
	<file>
	  <filename>/action.defaultadmin.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmICghaXNzZXQoJGdDbXMpKSBleGl0OwoKaWYgKCEgJHRoaXMtPkNoZWNrUGVybWlzc2lvbignVXNlIFNpbXBsZXBpZScpKSB7CiAgcmV0dXJuICR0aGlzLT5EaXNwbGF5RXJyb3JQYWdlKCRpZCwgJHBhcmFtcywgJHJldHVybmlkLCR0aGlzLT5MYW5nKCdhY2Nlc3NkZW5pZWQnKSk7Cn0KLyppZihpc3NldCgkcGFyYW1zWyd0YWJfbWVzc2FnZSddKSl7CiRtZXNzYWdlID0gJHRoaXMtPlNob3dNZXNzYWdlKCR0aGlzLT5MYW5nKCRwYXJhbXNbJ3RhYl9tZXNzYWdlJ10pKTsKZWNobyAkbWVzc2FnZTsJCn0qLwoKCi8vZnVuY3Rpb24gUmVkaXJlY3RUb1RhYiggJGlkLCAkdGFiID0gJycsICRwYXJhbXMgPSAnJywgJGFjdGlvbiA9ICcnICkKLy9jZ19hY3RpdmV0YWIKZWNobyAkdGhpcy0+U3RhcnRUYWJIZWFkZXJzKCk7CgogLy8gZWNobyAkdGhpcy0+U2V0VGFiSGVhZGVyKCdldmVudHMnLCAkdGhpcy0+TGFuZygnbGJsX2V2ZW50cycpLicmbmJzcDsnLiR0aGlzLT5EaXNwbGF5SW1hZ2UoJ2ZsYWdfZ3JlZW4ucG5nJykpOwogIAogIAogIAplY2hvICR0aGlzLT5TZXRUYWJIZWFkZXIoJ2dlbmVyYWwnLCAkdGhpcy0+TGFuZygndGl0bGVfZ2VuZXJhbCcpKTsKZWNobyAkdGhpcy0+U2V0VGFiSGVhZGVyKCdwcmVmcycsICR0aGlzLT5MYW5nKCd0aXRsZV9tb2RfcHJlZnMnKSk7CmVjaG8gJHRoaXMtPlNldFRhYkhlYWRlcignZmVlZF90ZW1wbGF0ZXMnLCAnRmVlZHMgVGVtcGxhdGVzJyk7CmVjaG8gJHRoaXMtPlNldFRhYkhlYWRlcignZGZ0X3RlbXBsYXRlcycsICdEZWZhdWx0IFRlbXBsYXRlcycpOwoKCmVjaG8gJHRoaXMtPkVuZFRhYkhlYWRlcnMoKTsKCgoKZWNobyAkdGhpcy0+U3RhcnRUYWJDb250ZW50KCk7CgplY2hvICR0aGlzLT5TdGFydFRhYignZ2VuZXJhbCcpOwppbmNsdWRlICdmdW5jdGlvbi5hZG1pbl9nZW5lcmFsX3RhYi5waHAnOwplY2hvICR0aGlzLT5FbmRUYWIoKTsKCgplY2hvICR0aGlzLT5TdGFydFRhYigncHJlZnMnKTsKaW5jbHVkZSAnZnVuY3Rpb24uYWRtaW5fcHJlZnNfdGFiLnBocCc7CmVjaG8gJHRoaXMtPkVuZFRhYigpOwoKCgplY2hvICR0aGlzLT5TdGFydFRhYignZmVlZF90ZW1wbGF0ZXMnKTsKaW5jbHVkZSAnZnVuY3Rpb24uYWRtaW5fZmVlZF90ZW1wbGF0ZXNfdGFiLnBocCc7CmVjaG8gJHRoaXMtPkVuZFRhYigpOwoKZWNobyAkdGhpcy0+U3RhcnRUYWIoJ2RmdF90ZW1wbGF0ZXMnKTsKaW5jbHVkZSAnZnVuY3Rpb24uYWRtaW5fZGZ0X3RlbXBsYXRlc190YWIucGhwJzsKZWNobyAkdGhpcy0+RW5kVGFiKCk7CgoKZWNobyAkdGhpcy0+RW5kVGFiQ29udGVudCgpOwoKCj8+]]></data>
	</file>
	<file>
	  <filename>/action.save_admin_prefs.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCgkJaWYgKCFpc3NldCgkZ0NtcykpCgkJCQkJCWV4aXQ7CgkJJHRoaXMtPlNldEN1cnJlbnRUYWIoJ3ByZWZzJyk7CgoKCQlpZiAoISR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ1VzZSBTaW1wbGVwaWUnKSkKCQl7CgkJCQkJCXJldHVybiAkdGhpcy0+RGlzcGxheUVycm9yUGFnZSgkaWQsICRwYXJhbXMsICRyZXR1cm5pZCwgJHRoaXMtPkxhbmcoJ2FjY2Vzc2RlbmllZCcpKTsKCQl9CgoKCQlpZiAoaXNzZXQoJHBhcmFtc1snc3VibWl0X3ByZWYnXSkgJiYgdHJpbSgkcGFyYW1zWydsaW1pdCddKSAhPSAnJyAmJiB0cmltKCRwYXJhbXNbJ2NhY2hlX2xpZmV0aW1lJ10pICE9JycpCgkJewoJCQkJCQkvLyBzZXQgb3VyIHByZWZlcmVuY2UKCQkJCQkJJHRoaXMtPlNldFByZWZlcmVuY2UoJ2xpbWl0JywgaXNzZXQoJHBhcmFtc1snbGltaXQnXSkgPyB0cmltKCRwYXJhbXNbJ2xpbWl0J10pIDogJzAnKTsKCQkJCQkJJHRoaXMtPlNldFByZWZlcmVuY2UoJ2lzX2NhY2hlJywgaXNzZXQoJHBhcmFtc1snaXNfY2FjaGUnXSkgPyAkcGFyYW1zWydpc19jYWNoZSddIDogZmFsc2UpOwoJCQkJCQkkdGhpcy0+U2V0UHJlZmVyZW5jZSgnY2FjaGVfbGlmZXRpbWUnLCBpc3NldCgkcGFyYW1zWydjYWNoZV9saWZldGltZSddKSA/IHRyaW0oJHBhcmFtc1snY2FjaGVfbGlmZXRpbWUnXSkgOiAxODAwKTsKCQkJCQkJCgkJCQkJCS8vIHdyaXRlIHRvIHRoZSBhZG1pbiBsb2cKCQkJCQkJJHRoaXMtPkF1ZGl0KDAsICR0aGlzLT5MYW5nKCdmcmllbmRseW5hbWUnKSwgJHRoaXMtPkxhbmcoJ3ByZWZzdXBkYXRlZCcpKTsKCQkJCQkJJHRoaXMtPlNldE1lc3NhZ2UoJHRoaXMtPkxhbmcoJ3ByZWZzdXBkYXRlZCcpKTsKCQl9CgkJZWxzZQoJCXsKCQkJCQkJJHRoaXMtPlNldEVycm9yKCR0aGlzLT5MYW5nKCdlcnJvcl9mZWVkJykpOwoJCX0KCQkkdGhpcy0+UmVkaXJlY3RUb1RhYigkaWQpOwoKPz4KCg==]]></data>
	</file>
	<file>
	  <filename>/changelog.inc</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PHVsPgo8bGk+CjxwPlZlcnNpb246IDEuMDwvcD4KPHA+VmVyc2lvbiAxLjAgSnVuaCAyMDA5LiBJbml0aWFsIFJlbGVhc2UuPC9wPgo8L2xpPiAKPC91bD4K]]></data>
	</file>
	<file>
	  <filename>/CMSSimplepie.module.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgTW9kdWxlOiBTaW1wbGVwaWUgLSBBbiBSU1MgUGFyc2VyCiMgVmVyc2lvbjogMS4wLCBOdW5vIENvc3RhCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMgVGhlIG1vZHVsZSdzIGhvbWVwYWdlIGlzOiBodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL3NpbXBsZXBpZS8KIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi8qKgogKiAKICogQGF1dGhvciBOdW5vIENvc3RhCiAqIEBzaW5jZSAxLjAKICogQGxpY2Vuc2UgR1BMCiAqKi8KCi8vIFRoaXMgbW9kdWxlIGlzIGRlcml2ZWQgZnJvbSBDR0V4dGVuc2lvbnMKJGNnZXh0ZW5zaW9ucyA9IGNtc19qb2luX3BhdGgoJGdDbXMtPmNvbmZpZ1sncm9vdF9wYXRoJ10sICdtb2R1bGVzJywKCQknQ0dFeHRlbnNpb25zJywgJ0NHRXh0ZW5zaW9ucy5tb2R1bGUucGhwJyk7CmlmICghaXNfcmVhZGFibGUoJGNnZXh0ZW5zaW9ucykpCnsKCQllY2hvICc8aDE+PGZvbnQgY29sb3I9InJlZCI+RVJST1I6IFRoZSBDR0V4dGVuc2lvbnMgbW9kdWxlIGNvdWxkIG5vdCBiZSBmb3VuZC4gWW91IEluc3RhbGwgaXQgQVNBUCE8L2ZvbnQ+PC9oMT4nOwoJCXJldHVybjsKfQpyZXF1aXJlX29uY2UgKCRjZ2V4dGVuc2lvbnMpOwoKLy8gQWxsIERlZmluZXMKcmVxdWlyZV9vbmNlIChkaXJuYW1lKF9fZmlsZV9fKSAuICcvZGVmaW5lcy5waHAnKTsKCmNsYXNzIENNU1NpbXBsZXBpZSBleHRlbmRzIENHRXh0ZW5zaW9ucwp7CgoJCWZ1bmN0aW9uIEdldE5hbWUoKQoJCXsKCQkJCXJldHVybiBnZXRfY2xhc3MoJHRoaXMpOwoJCX0KCgkJZnVuY3Rpb24gR2V0RnJpZW5kbHlOYW1lKCkKCQl7CgkJCQlyZXR1cm4gJHRoaXMtPkxhbmcoJ2ZyaWVuZGx5bmFtZScpOwoJCX0KCgoJCWZ1bmN0aW9uIEdldFZlcnNpb24oKQoJCXsKCQkJCXJldHVybiAnMS4wJzsKCQl9CgoJCWZ1bmN0aW9uIEdldEhlbHAoKQoJCXsKCQkJCXJldHVybiAkdGhpcy0+TGFuZygnaGVscCcpOwoJCX0KCgkJZnVuY3Rpb24gR2V0QXV0aG9yKCkKCQl7CgkJCQlyZXR1cm4gJ051bm8gQ29zdGEnOwoJCX0KCgkJZnVuY3Rpb24gR2V0QXV0aG9yRW1haWwoKQoJCXsKCQkJCXJldHVybiAnbnVuby5tZmNvc3RhQHNhcG8ucHQnOwoJCX0KCgkJZnVuY3Rpb24gR2V0Q2hhbmdlTG9nKCkKCQl7CgkJCQlyZXR1cm4gZmlsZV9nZXRfY29udGVudHMoZGlybmFtZShfX2ZpbGVfXykgLiAnL2NoYW5nZWxvZy5pbmMnKTsKCQl9CgoJCWZ1bmN0aW9uIElzUGx1Z2luTW9kdWxlKCkKCQl7CgkJCQlyZXR1cm4gdHJ1ZTsKCQl9CgkJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCQlBbGxvd0F1dG9JbnN0YWxsKCkKCQktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoJCWZ1bmN0aW9uIEFsbG93QXV0b0luc3RhbGwoKQoJCXsKCQkJCXJldHVybiBmYWxzZTsKCQl9CgkJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCQlBbGxvd0F1dG9VcGdyYWRlKCkKCQktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoJCWZ1bmN0aW9uIEFsbG93QXV0b1VwZ3JhZGUoKQoJCXsKCQkJCXJldHVybiBmYWxzZTsKCQl9CgkJZnVuY3Rpb24gSGFzQWRtaW4oKQoJCXsKCQkJCXJldHVybiB0cnVlOwoJCX0KCgkJZnVuY3Rpb24gR2V0QWRtaW5TZWN0aW9uKCkKCQl7CgkJCQlyZXR1cm4gJ2NvbnRlbnQnOwoJCX0KCgkJZnVuY3Rpb24gR2V0QWRtaW5EZXNjcmlwdGlvbigpCgkJewoJCQkJcmV0dXJuICR0aGlzLT5MYW5nKCdtb2RkZXNjcmlwdGlvbicpOwoJCX0KCgkJZnVuY3Rpb24gVmlzaWJsZVRvQWRtaW5Vc2VyKCkKCQl7CgkJCQlyZXR1cm4gJHRoaXMtPkNoZWNrUGVybWlzc2lvbignVXNlIFNpbXBsZXBpZScpOwoJCX0KCgkJZnVuY3Rpb24gR2V0RGVwZW5kZW5jaWVzKCkKCQl7CgkJCQlyZXR1cm4gYXJyYXkoJ0NHRXh0ZW5zaW9ucycgPT4gJzEuMTUnKTsKCQl9CgoKCQlmdW5jdGlvbiBNaW5pbXVtQ01TVmVyc2lvbigpCgkJewoJCQkJcmV0dXJuICIxLjAiOwoJCX0KCgoJCS8qCgkJZnVuY3Rpb24gTWF4aW11bUNNU1ZlcnNpb24oKQoJCXsKCQlyZXR1cm4gIjEuNSI7CgkJfQoJCSovCgoJCWZ1bmN0aW9uIFNldFBhcmFtZXRlcnMoKQoJCXsKCQkJCSR0aGlzLT5SZWdpc3Rlck1vZHVsZVBsdWdpbigpOyAvL2Fsb3cgeW91IHB1dCB7U2tlbGV0b259IG9uIHlvciB0ZW1wbGF0ZSBvdSBwYWdlCgkJCQkkdGhpcy0+UmVzdHJpY3RVbmtub3duUGFyYW1zKCk7CgoKCQkJCSR0aGlzLT5DcmVhdGVQYXJhbWV0ZXIoJ2ZlZWQnLCAnJywgJHRoaXMtPkxhbmcoJ2hlbHBfZmVlZCcpKTsKCQkJCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdmZWVkJywgQ0xFQU5fU1RSSU5HKTsKCQkJCSR0aGlzLT5DcmVhdGVQYXJhbWV0ZXIoJ2xpbWl0JywgJzAnLCAkdGhpcy0+TGFuZygnaGVscF9saW1pdCcpKTsKCQkJCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdsaW1pdCcsIENMRUFOX0lOVCk7CgkJCQkkdGhpcy0+Q3JlYXRlUGFyYW1ldGVyKCd0ZW1wbGF0ZScsICcnLCAkdGhpcy0+TGFuZygnaGVscF90ZW1wbGF0ZScpKTsKCQkJCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCd0ZW1wbGF0ZScsIENMRUFOX1NUUklORyk7CgoJCX0KCgkJZnVuY3Rpb24gR2V0RXZlbnREZXNjcmlwdGlvbigkZXZlbnRuYW1lKQoJCXsKCQkJCXJldHVybiAkdGhpcy0+TGFuZygnZXZlbnRfaW5mb18nIC4gJGV2ZW50bmFtZSk7CgkJfQoKCgkJZnVuY3Rpb24gR2V0RXZlbnRIZWxwKCRldmVudG5hbWUpCgkJewoJCQkJcmV0dXJuICR0aGlzLT5MYW5nKCdldmVudF9oZWxwXycgLiAkZXZlbnRuYW1lKTsKCQl9CgoJCWZ1bmN0aW9uIEluc3RhbGxQb3N0TWVzc2FnZSgpCgkJewoJCQkJcmV0dXJuICR0aGlzLT5MYW5nKCdwb3N0aW5zdGFsbCcpOwoJCX0KCgkJZnVuY3Rpb24gVW5pbnN0YWxsUG9zdE1lc3NhZ2UoKQoJCXsKCQkJCXJldHVybiAkdGhpcy0+TGFuZygncG9zdHVuaW5zdGFsbCcpOwoJCX0KCgkJZnVuY3Rpb24gVW5pbnN0YWxsUHJlTWVzc2FnZSgpCgkJewoJCQkJcmV0dXJuICR0aGlzLT5MYW5nKCdyZWFsbHlfdW5pbnN0YWxsJyk7CgkJfQoKCgkJCgkJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCQkgICBpcyBOT1QgUGFydCBvZiBDTVNNUyBBUEkKCQktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoJCWZ1bmN0aW9uIF9kZWxldGVfZmVlZCgkaWQpCgkJewoKCQkJCSRkYiA9ICYkdGhpcy0+R2V0RGIoKTsKCQkJCSRxdWVyeSA9ICJERUxFVEUgRlJPTSAiIC4gY21zX2RiX3ByZWZpeCgpIC4gIm1vZHVsZV9zaW1wbGVwaWUgV0hFUkUgc3BfaWQgPSA/IjsKCQkJCSRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRpZCkpOwoKCQl9CgoKfSAvL2VuZCBjbGFzcwoKCj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/defines.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KaWYoICFpc3NldCgkZ0NtcykgKSBleGl0Ow0KDQojIFBlcm1pc3Npb25zDQpkZWZpbmUoJ1NQX1BFUk1JU1NJT05fVVNFJywnVXNlIFNpbXBsZXBpZScpOw0KDQoNCiMgVGVtcGxhdGVzDQpkZWZpbmUoJ1NQX1BSRUZfRlJPTlRfU0lNUExFUElFX1RFTVBMQVRFJywgICdmcm9udF9zaW1wbGVwaWVfc3lzZGVmYXVsdCcpOw0KZGVmaW5lKCdTUF9QUkVGX0RFRkFVTFRfRlJPTlRfU0lNUExFUElFX1RFTVBMQVRFJywgICdkZWZhdWx0X2Zyb250X3NpbXBsZXBpZScpOw0KDQo/Pg==]]></data>
	</file>
	<file>
	  <filename>/function.admin_dft_templates_tab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KCQlpZiAoIWlzc2V0KCRnQ21zKSkNCgkJCQkJCWV4aXQ7DQoNCg0KCQkjIFN5c3RlbSBEZWZhdWx0IFJlc291cmNlIEZlZWRzIFRlbXBsYXRlDQoJCWVjaG8gJHRoaXMtPkdldERlZmF1bHRUZW1wbGF0ZUZvcm0oJHRoaXMsICRpZCwgJHJldHVybmlkLA0KCQkJCQkJU1BfUFJFRl9GUk9OVF9TSU1QTEVQSUVfVEVNUExBVEUsICdkZWZhdWx0YWRtaW4nLCAnZGZ0X3RlbXBsYXRlcycsICdTb21lIEluZm8nLA0KCQkJCQkJJ29yaWdfZnJvbnRfc2ltcGxlcGllX3RlbXBsYXRlLnRwbCcsICdTb21lIEluZm8gVGV4dCcpOw0KDQoJCWVjaG8gJzxkaXYgc3R5bGU9Im1hcmdpbi1ib3R0b206IDAuNWVtOyBoZWlnaHQ6IDAuNWVtOyBib3JkZXItdG9wOiAxcHggc29saWQgIzAwMDsgd2lkdGg6IDgwJTsiPjwvZGl2PicgLg0KCQkJCQkJIlxuIjsNCg0KDQoJCSMgU3lzdGVtIERlZmF1bHQgUmVzb3VyY2UgRGV0YWlsIFRlbXBsYXRlDQoJCS8qZWNobyAkdGhpcy0+R2V0RGVmYXVsdFRlbXBsYXRlRm9ybSgkdGhpcywkaWQsJHJldHVybmlkLA0KCQlGSVJTVE1fUFJFRl9ORVdERVRBSUxfVEVNUExBVEUsDQoJCSdkZWZhdWx0YWRtaW4nLCAnZGVmYXVsdF90ZW1wbGF0ZXMnLA0KCQkkdGhpcy0+TGFuZygnaW5mb19zeXNkZmx0X2RldGFpbF90ZW1wbGF0ZScpLA0KCQknb3JpZ19hZGRfZWRpdF90ZW1wbGF0ZS50cGwnLA0KCQkkdGhpcy0+TGFuZygnaW5mb19zeXNkZmx0X3RlbXBsYXRlJykpOw0KDQoJCWVjaG8gJzxkaXYgc3R5bGU9Im1hcmdpbi1ib3R0b206IDAuNWVtOyBoZWlnaHQ6IDAuNWVtOyBib3JkZXItdG9wOiAxcHggc29saWQgIzAwMDsgd2lkdGg6IDgwJTsiPjwvZGl2PicuIlxuIjsqLw0KDQoNCgkJIw0KCQkjIEVPRg0KCQkjDQoNCg0KPz4=]]></data>
	</file>
	<file>
	  <filename>/function.admin_feed_templates_tab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KCQlpZiAoIWlzc2V0KCRnQ21zKSkNCgkJCQkJCWV4aXQ7DQoJCSR0aGlzLT5TZXRDdXJyZW50VGFiKCdmZWVkX3RlbXBsYXRlcycpOw0KDQoJCSRzbWFydHktPmFzc2lnbignbXNnJywgJHRoaXMtPkxhbmcoJ3RlbXBsYXRlX2luZm9fdGFiJykpOw0KCQkkc21hcnR5LT5hc3NpZ24oJ3RlbXBsYXRlbGlzdCcsICR0aGlzLT5TaG93VGVtcGxhdGVMaXN0KCRpZCwgJHJldHVybmlkLCAnc3BfJywNCgkJCQkJCVNQX1BSRUZfRlJPTlRfU0lNUExFUElFX1RFTVBMQVRFLCANCgkJCQkJCS8vY3VycmVudCB0YWINCgkJCQkJCSdmZWVkX3RlbXBsYXRlcycsIFNQX1BSRUZfREVGQVVMVF9GUk9OVF9TSU1QTEVQSUVfVEVNUExBVEUsDQoJCQkJCQkkdGhpcy0+TGFuZygnYWRkZWRpdF9mZWVkc190ZW1wbGF0ZScpLA0KCQkJCQkJJHRoaXMtPkxhbmcoJ3RlbXBsYXRlX2luZm9fZmVlZCcpKSk7DQoNCgkJZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCd0ZW1wbGF0ZV90YWIudHBsJyk7DQoNCj8+]]></data>
	</file>
	<file>
	  <filename>/function.admin_general_tab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmICghaXNzZXQoJGdDbXMpKQoJCWV4aXQ7CgoKLy8kdGhpcy0+U2V0Q3VycmVudFRhYignZ2VuZXJhbCcpOwoKJGRiID0gJiRnQ21zLT5HZXREYigpOwoKJHF1ZXJ5ID0gJ1NFTEVDVCAqIEZST00gJyAuIGNtc19kYl9wcmVmaXgoKSAuCgkJJ21vZHVsZV9zaW1wbGVwaWUgT1JERVIgQlkgc3BfaWQgQVNDJzsKCmlmIChpc3NldCgkcGFyYW1zWydzcF9pZCddKSkKewoJCSRxdWVyeSAuPSAnIFdIRVJFIHNwX2lkID0gPyc7CgkJJHJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRwYXJhbXNbJ3NwX2lkJ10pKTsKfQplbHNlCnsKCQkkcmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSk7Cn0KCiRyZWNvcmRzID0gYXJyYXkoKTsKd2hpbGUgKCRyZXN1bHQgIT09IGZhbHNlICYmICRyb3cgPSAkcmVzdWx0LT5GZXRjaFJvdygpKQp7CgkJJHJlYyA9IG5ldyBzdGRDbGFzcygpOwoJCSRyZWMtPmlkID0gJHJvd1snc3BfaWQnXTsKCQkkcmVjLT5uYW1lID0gJHJvd1snc3BfbmFtZSddOwoJCSRyZWMtPnVybCA9ICRyb3dbJ3NwX3VybCddOwoKCgkJJHJlYy0+ZWRpdCA9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2FkbWluX2FkZF9lZGl0JywgJHJldHVybmlkLCAkZ0Ntcy0+CgkJCQl2YXJpYWJsZXNbJ2FkbWludGhlbWUnXS0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vZWRpdC5naWYnLCAkdGhpcy0+TGFuZygnZWRpdCcpLAoJCQkJJycsICcnLCAnc3lzdGVtaWNvbicpLCBhcnJheSgnc3BfaWQnID0+ICRyZWMtPmlkKSk7CgoJCSRyZWMtPmRlbGV0ZSA9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2FkbWluX2RlbGV0ZV9mZWVkJywgJHJldHVybmlkLCAkZ0Ntcy0+CgkJCQl2YXJpYWJsZXNbJ2FkbWludGhlbWUnXS0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vZGVsZXRlLmdpZicsICdEZWxldGUnLCAnJywKCQkJCScnLCAnc3lzdGVtaWNvbicpLCBhcnJheSgnc3BfaWQnID0+ICRyZWMtPmlkKSwgJHRoaXMtPkxhbmcoJ2FyZV95b3Vfc3VyZScpKTsKCgkJYXJyYXlfcHVzaCgkcmVjb3JkcywgJHJlYyk7Cn0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdhZGQnLCAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdhZG1pbl9hZGRfZWRpdCcsICRyZXR1cm5pZCwKCQkkZ0Ntcy0+dmFyaWFibGVzWydhZG1pbnRoZW1lJ10tPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL25ld29iamVjdC5naWYnLCAkdGhpcy0+CgkJTGFuZygnYWRkX2ZlZWQnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpLCBhcnJheSgpLCAnJywgZmFsc2UsIGZhbHNlLCAnJykgLiAnICcgLgoJCSR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2FkbWluX2FkZF9lZGl0JywgJHJldHVybmlkLCAkdGhpcy0+TGFuZygnYWRkX2ZlZWQnKSwKCQlhcnJheSgpLCAnJywgZmFsc2UsIGZhbHNlLCAnY2xhc3M9InBhZ2VvcHRpb25zIicpKTsKCiR0aGlzLT5zbWFydHktPmFzc2lnbl9ieV9yZWYoJ3JlY29yZHMnLCAkcmVjb3Jkcyk7CiR0aGlzLT5zbWFydHktPmFzc2lnbigndGl0bGVfbnVtX3JlY29yZHMnLCAkdGhpcy0+TGFuZygndGl0bGVfbnVtX3JlY29yZHMnLAoJCWFycmF5KGNvdW50KCRyZWNvcmRzKSkpKTsKCgplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2FkbWluX2dlbmVyYWwudHBsJyk7Cgo/Pg==]]></data>
	</file>
	<file>
	  <filename>/function.admin_prefs_tab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KCQlpZiAoIWlzc2V0KCRnQ21zKSkNCgkJCQkJCWV4aXQ7DQoJCQ0KCQlpZiAoISR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ1VzZSBTaW1wbGVwaWUnKSkNCgkJew0KCQkJCQkJcmV0dXJuICR0aGlzLT5EaXNwbGF5RXJyb3JQYWdlKCRpZCwgJHBhcmFtcywgJHJldHVybmlkLCAkdGhpcy0+TGFuZygnYWNjZXNzZGVuaWVkJykpOw0KCQl9DQoNCgkJJHNtYXJ0eS0+YXNzaWduKCdzdGFydF9mb3JtJywgJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCgkaWQsICdzYXZlX2FkbWluX3ByZWZzJywgJHJldHVybmlkKSk7DQoJCSRzbWFydHktPmFzc2lnbignaW5wdXRfbGltaXQnLCAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJ2xpbWl0JywgJHRoaXMtPg0KCQkJCQkJR2V0UHJlZmVyZW5jZSgnbGltaXQnLCAnMCcpKSk7DQoJCQkJCQkNCgkJJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9pc19jYWNoZScsICR0aGlzLT5DcmVhdGVJbnB1dENoZWNrYm94KCRpZCwgJ2lzX2NhY2hlJywgdHJ1ZSwNCiAgICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdpc19jYWNoZScsdHJ1ZSkpLiAkdGhpcy0+TGFuZygnbm90ZXNfaXNfY2FjaGUnKSk7DQoJCQkJCQkNCgkJJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9jYWNoZV9saWZldGltZScsICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAnY2FjaGVfbGlmZXRpbWUnLCAkdGhpcy0+DQoJCQkJCQlHZXRQcmVmZXJlbmNlKCdjYWNoZV9saWZldGltZScsIDE4MDApKSk7DQoJCQkJCQkNCgkJJHNtYXJ0eS0+YXNzaWduKCdzdWJtaXQnLCAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAnc3VibWl0X3ByZWYnLCBsYW5nKCdzdWJtaXQnKSkpOw0KCQkkc21hcnR5LT5hc3NpZ24oJ2VuZF9mb3JtJywgJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7DQoNCg0KCQllY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2FkbWluX3ByZWZzLnRwbCcpOw0KDQo/Pg==]]></data>
	</file>
	<file>
	  <filename>/images/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/images/icon.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[]]></data>
	</file>
	<file>
	  <filename>/lang/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/en_US.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI1RlbXBsYXRlcwokbGFuZ1sndGVtcGxhdGVfaW5mb190YWInXSA9ICc8Yj5BdmFpbGFibGUgRmVlZCBUZW1wbGF0ZXMuPC9iPic7CiRsYW5nWyd0ZW1wbGF0ZV9pbmZvX2ZlZWQnXSA9ICdGZWVkIFRlbXBsYXRlIFZpZXcnOwokbGFuZ1snYWRkZWRpdF9mZWVkc190ZW1wbGF0ZSddID0gJ0FkZC9FZGl0IGEgRmVlZCBWaWV3IFRlbXBsYXRlJzsKCiNNZXNzYWdlcwokbGFuZ1sndXBkYXRlZF9mZWVkJ10gPSAnRmVlZCB1cGRhdGVkLic7CiRsYW5nWydlcnJvcl9mZWVkJ10gPSAnU29tZSBmaWVsZHMgYXJlIGVtcHR5ISc7CiRsYW5nWydhZGRlZF9mZWVkJ10gPSAnRmVlZCBpcyBBZGRlZC4nOwokbGFuZ1snYXJlX3lvdV9zdXJlJ10gPSAnQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSB0aGlzIEZlZWQ/JzsKJGxhbmdbJ2ZlZWRfZGVsZXRlZCddID0gJ0ZlZWQgd2FzIHJlbW92ZWQgc3VjY2Vzc2Z1bGx5Lic7CiRsYW5nWydlcnJvcl9kZWxldGUnXSA9ICdTb21ldGhpbmcgd3JvbmcgaGFwcGVuZWQsIHRyeSBhZ2Fpbi4nOwokbGFuZ1snZnJvbnRfbm9fZmVlZCddID0gJ05PIEZlZWRzIEF2YWxpYWJsZSEnOwokbGFuZ1snZnJvbnRfcGFyYW1fbmFtZSddID0gJ1BhcmFtIE5hbWUgaXMgTWlzc2luZyEnOwokbGFuZ1snZmVlZF9uYW1lX2V4aXN0cyddID0gJ09uZSBGZWVkIHdpdGggdGhhdCBuYW1lIGFscmVhZHkgZXhpc3RzISc7CgojRmVlZHMgdGFiCiRsYW5nWydmZWVkX2lkJ10gPSAnSUQnOwokbGFuZ1snZmVlZF9uYW1lJ10gPSAnTmFtZSc7CiRsYW5nWydmZWVkX3VybCddID0gJ0ZlZWQgVXJsJzsKJGxhbmdbJ3RpdGxlX2dlbmVyYWwnXSA9ICdHZW5lcmFsIEZlZWRzJzsKJGxhbmdbJ2FkZF9mZWVkJ10gPSAnQWRkIG5ldyBGZWVkJzsKJGxhbmdbJ2VkaXQnXSA9ICdFZGl0IEZlZWQnOwokbGFuZ1sndGl0bGVfbnVtX3JlY29yZHMnXSA9ICclcyBmZWVkKHMpIGZvdW5kLic7CiRsYW5nWyd0aXRsZV9jYWNoZV9saWZldGltZSddID0gJ0NhY2hlIExpZmV0aW1lJzsKJGxhbmdbJ25vdGVzX2NhY2hlX2xpZmV0aW1lJ10gPSAnQ2FjaGUgTGlmZXRpbWUgaW4gc2Vjb25kcy4gRS5HOiBIYWxmIGhvdXIgICIxODAwIiwgT25lIEhvdXIgIjM2MDAiJzsKJGxhbmdbJ3RpdGxlX2lzX2NhY2hlJ10gPSAnRW5hYmxlIENhY2hlIEZlZWRzJzsKJGxhbmdbJ25vdGVzX2lzX2NhY2hlJ10gPSAnVG8gQ2xlYXIgY2FjaGVkIGZlZWRzIGdvIHRvICJHbG9iYWwgU2V0dGluZ3MiIGFuZCBjbGVhciB0aGUgY2FjaGUnOwoKI1ByZWYgdGFiCiRsYW5nWydwcmVmc3VwZGF0ZWQnXSA9ICdNb2R1bGUgcHJlZmVyZW5jZXMgdXBkYXRlZC4nOwokbGFuZ1sndGl0bGVfbGltaXQnXSA9ICdMaW1pdCBJdGVtcyBGZWVkcyc7CiRsYW5nWydub3Rlc19saW1pdCddID0gJ0xpbWl0IGZlZWRzIEl0ZW1zLCBzZXQgMCB0byBkaXNwbGF5IGFsbCBpdGVtcy4gImxpbWl0IiBwYXJhbSBvdmVycmlkZSB0aGlzIFByZWZlcmVuY2UhJzsKCiNHZW5lcmFsIE1vZHVsZQokbGFuZ1snZnJpZW5kbHluYW1lJ10gPSAnQ01TU2ltcGxlcGllJzsKJGxhbmdbJ3Bvc3RpbnN0YWxsJ10gPSAnQ01TU2ltcGxlcGllIGlzIGluc3RhbGxlZCwgYmUgc3VyZSB0byBzZXQgIlVzZSBTaW1wbGVwaWUiIHBlcm1pc3Npb25zIHRvIHVzZSB0aGlzIG1vZHVsZSEnOwokbGFuZ1sncG9zdHVuaW5zdGFsbCddID0gJ0NNU1NpbXBsZXBpZSBpcyBVbmluc3RhbGxlZCEnOwokbGFuZ1sncmVhbGx5X3VuaW5zdGFsbCddID0gJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byB1bmluc3RhbGwgdGhpcyBtb2R1bGU/JzsKJGxhbmdbJ3VuaW5zdGFsbGVkJ10gPSAnTW9kdWxlIFVuaW5zdGFsbGVkLic7CiRsYW5nWydpbnN0YWxsZWQnXSA9ICdNb2R1bGUgdmVyc2lvbiAlcyBpbnN0YWxsZWQuJzsKJGxhbmdbJ3VwZ3JhZGVkJ10gPSAnTW9kdWxlIHVwZ3JhZGVkIHRvIHZlcnNpb24gJXMuJzsKCiRsYW5nWydzdWJtaXQnXSA9ICdTYXZlJzsKJGxhbmdbJ2FjY2Vzc2RlbmllZCddID0gJ0FjY2VzcyBEZW5pZWQuIFBsZWFzZSBjaGVjayB5b3VyIHBlcm1pc3Npb25zLic7CgojSGVscCBQYXJhbXMKJGxhbmdbJ2hlbHBfbGltaXQnXSA9ICdEZWZhdWx0IGlzICIwIiB0aGlzIG1lYW5zIGRpc3BsYXkgYWxsLiBPciBsaW1pdD0iMTAiIGluY2x1ZGUganVzdCAxMCBpdGVtcyBmZWVkcy4nOwokbGFuZ1snaGVscF9mZWVkJ10gPSAnVGhpcyBpcyB5b3VyIGZlZWQgTmFtZSAobXVzdCBiZSBjcmVhdGVkIGluIEdlbmVyYWwgZmVlZHMgdGFiKSwgdGhpcyBtZWFucyB0aGF0IHBhcmFtIG5hbWUgaXMgdW5pcXVlLiB7Q01TU2ltcGxlcGllIGZlZWQ9InlvdXR1YmUifSc7CiRsYW5nWydoZWxwX3RlbXBsYXRlJ10gPSAnU2V0IHlvdXIgdGVtcGxhdGUgIHRlbXBsYXRlPSJ5b3V0dWJlIiAnOwoKJGxhbmdbJ3RpdGxlX21vZF9wcmVmcyddID0gJ01vZHVsZSBQcmVmZXJlbmNlcyc7CgokbGFuZ1snZXZlbnRfaW5mb19PblNpbXBsZXBpZVByZWZlcmVuY2VDaGFuZ2UnXSA9ICdBbiBldmVudCBnZW5lcmF0ZWQgd2hlbiB0aGUgcHJlZmVyZW5jZXMgdG8gdGhlIENNU1NpbXBsZXBpZSBNb2R1bGUgYXJlIGNoYW5nZWQnOwokbGFuZ1snZXZlbnRfaGVscF9PblNpbXBsZXBpZVByZWZlcmVuY2VDaGFuZ2UnXSA9ICdBbiBldmVudCBnZW5lcmF0ZWQgd2hlbiB0aGUgcHJlZmVyZW5jZXMgdG8gdGhlIENNU1NpbXBsZXBpZSBNb2R1bGUgYXJlIGNoYW5nZWQnOwoKJGxhbmdbJ21vZGRlc2NyaXB0aW9uJ10gPSAnQ1NNU2ltcGxlUGllIGlzIGFuIFJTUyB0byBIVE1MIHBhcnNlci4gUG93ZXJmdWxsIE1vZHVsZS4nOwoKJGxhbmdbJ2hlbHAnXSA9ICc8aDM+V2hhdCBEb2VzIFRoaXMgRG8/PC9oMz4KPHA+VGhpcyBpcyBSU1MgUGFyc2VyIHVzaW5nIHRoZSBTaW1wbGVQaWUgTGliIGh0dHA6Ly9zaW1wbGVwaWUub3JnPC9wPgo8aDM+SG93IERvIEkgVXNlIEl0PC9oMz4KPHA+U2ltcGxlLCBqdXN0IGFkZCBpdCB0byB5b3VyIHlvdXIgcGFnZSBvciB0ZW1wbGF0ZSBsaWtlIHRoaXM6IHtDTVNTaW1wbGVwaWUgZmVlZD0ieW91dHViZSJ9PC9wPgoKPHVsPgo8bGk+Rm9yIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGlzIG1vZHVsZSwgRkFRcywgb3IgdG8gZmlsZSBhIEJ1ZyBSZXBvcnQsIHBsZWFzZSB2aXNpdCB0aGUgTW9kdWxlIEZvcmdlCjxhIGhyZWY9Imh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvc2ltcGxlcGllLyI+Q01TU2ltcGxlcGllPC9hPi48L2xpPgo8bGk+QWRkaXRpb25hbCBkaXNjdXNzaW9uIG9mIHRoaXMgbW9kdWxlIG1heSBhbHNvIGJlIGZvdW5kIGluIHRoZSA8YSBocmVmPSJodHRwOi8vZm9ydW0uY21zbWFkZXNpbXBsZS5vcmciPkNNUyBNYWRlIFNpbXBsZSBGb3J1bXM8L2E+LjwvbGk+CjxsaT5UaGUgYXV0aG9yLCBOdW5vLCBjYW4gb2Z0ZW4gYmUgZm91bmQgaW4gdGhlIDxhIGhyZWY9ImlyYzovL2lyYy5mcmVlbm9kZS5uZXQvI2NtcyI+Q01TIElSQyBDaGFubmVsPC9hPi48L2xpPgo8bGk+RmluYWxseSwgeW91IG1heSBoYXZlIHNvbWUgc3VjY2VzcyBlbWFpbGluZyB0aGUgYXV0aG9yIGRpcmVjdGx5LjwvbGk+CjwvdWw+CjxwPkFzIHBlciB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkIGFzLWlzLiBQbGVhc2UgcmVhZCB0aGUgdGV4dApvZiB0aGUgbGljZW5zZSBmb3IgdGhlIGZ1bGwgZGlzY2xhaW1lci48L3A+Cgo8aDM+Q29weXJpZ2h0IGFuZCBMaWNlbnNlPC9oMz4KPHA+Q29weXJpZ2h0ICZjb3B5OyAyMDA5LCBOdW5vIENvc3RhIDxhIGhyZWY9Im1haWx0bzpudW5vLm1mY29zdGFAc2Fwby5wdCI+Jmx0O251bm8ubWZjb3N0YUBzYXBvLnB0Jmd0OzwvYT4uIEFsbCBSaWdodHMgQXJlIFJlc2VydmVkLjwvcD4KPHA+VGhpcyBtb2R1bGUgaGFzIGJlZW4gcmVsZWFzZWQgdW5kZXIgdGhlIDxhIGhyZWY9Imh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTCI+R05VIFB1YmxpYyBMaWNlbnNlPC9hPi4gWW91IG11c3QgYWdyZWUgdG8gdGhpcyBsaWNlbnNlIGJlZm9yZSB1c2luZyB0aGUgbW9kdWxlLjwvcD4KJzsKPz4K]]></data>
	</file>
	<file>
	  <filename>/lang/ext/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/ext/nb_NO.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ3RlbXBsYXRlX2luZm9fdGFiJ10gPSAnPGI+VGlsZ2plbmdlbGlnZSBtYWxlciBmb3IgbGV2ZW5kZSBib2ttZXJrZXIuPC9iPic7CiRsYW5nWyd0ZW1wbGF0ZV9pbmZvX2ZlZWQnXSA9ICdMZXZlbmRlIGJva21lcmtlIHZpc25pbmdlcic7CiRsYW5nWydhZGRlZGl0X2ZlZWRzX3RlbXBsYXRlJ10gPSAnTGVnZyB0aWwvcmVkaWdlciBlbiBsZXZlbmRlIGJva21lcmtlIHZpc25pbmdzbWFsJzsKJGxhbmdbJ3VwZGF0ZWRfZmVlZCddID0gJ0xldmVuZGUgYm9rbWVya2Ugb3BwZGF0ZXJ0JzsKJGxhbmdbJ2Vycm9yX2ZlZWQnXSA9ICdOb2VuIGZlbHRlciBlciB0b21tZSEnOwokbGFuZ1snYWRkZWRfZmVlZCddID0gJ0xldmVuZGUgYm9rbWVya2UgZXIgbGFndCB0aWwnOwokbGFuZ1snYXJlX3lvdV9zdXJlJ10gPSAnRXIgZHUgc2lra2VyIHAmYXJpbmc7IGF0IGR1IHZpbCBzbGV0dGUgZGV0dGUgbGV2ZW5kZSBib2ttZXJrZXQ/JzsKJGxhbmdbJ2ZlZWRfZGVsZXRlZCddID0gJ0ZlZWQgd2FzIGJlZW4gZGVsZXRlZCB3aXRoIHN1Y2Vzcy4nOwokbGFuZ1snZXJyb3JfZGVsZXRlJ10gPSAnRW4gZmVpbCBvcHBzdG9kLCBmb3JzJm9zbGFzaDtrIGlnamVuLic7CiRsYW5nWydmcm9udF9ub19mZWVkJ10gPSAnSW5nZW4gbGV2ZW5kZSBib2ttZXJrZXIgdGlsZ2plbmdlbGlnZSEnOwokbGFuZ1snZnJvbnRfcGFyYW1fbmFtZSddID0gJ1BhcmFtIE5hbWUgbWFuZ2xlciEnOwokbGFuZ1snZmVlZF9uYW1lX2V4aXN0cyddID0gJ0V0IGxldmVuZGUgYm9rbWVya2UgbWVkIGRldCBuYXZuZXQgZWtzaXN0ZXJlciBhbGxlcmVkZSEnOwokbGFuZ1snZmVlZF9pZCddID0gJ0lEICc7CiRsYW5nWydmZWVkX25hbWUnXSA9ICdOYXZuJzsKJGxhbmdbJ2ZlZWRfdXJsJ10gPSAnTGV2ZW5kZSBib2ttZXJrZSBVUkwnOwokbGFuZ1sndGl0bGVfZ2VuZXJhbCddID0gJ0dlbmVyZWxsZSBsZXZlbmRlIGJva21lcmtlcic7CiRsYW5nWydhZGRfZmVlZCddID0gJ0xlZ2cgdGlsIG55dHQgbGV2ZW5kZSBib2ttZXJrZSc7CiRsYW5nWydlZGl0J10gPSAnUmVkaWdlciBsZXZlbmRlIGJva21lcmtlJzsKJGxhbmdbJ3RpdGxlX251bV9yZWNvcmRzJ10gPSAnJXMgbGV2ZW5kZSBib2ttZXJrZShyIGZ1bm5ldC4nOwokbGFuZ1sndGl0bGVfY2FjaGVfbGlmZXRpbWUnXSA9ICdNZWxsb21sYWdlciBsZXZldGlkJzsKJGxhbmdbJ25vdGVzX2NhY2hlX2xpZmV0aW1lJ10gPSAnTWVsbG9tbGFnZXIgbGV2ZXRpZCBpIHNla3VuZGVyLiBGLmVrcy46IEhhbHYgdGltZSAmcXVvdDsxODAwJnF1b3Q7LCBFbiB0aW1lICZxdW90OzM2MDAmcXVvdDsnOwokbGFuZ1sndGl0bGVfaXNfY2FjaGUnXSA9ICdNZWxsb21sYWdyZSBsZXZlbmRlIGJva21lcmtlcic7CiRsYW5nWydub3Rlc19pc19jYWNoZSddID0gJ1RvIENsZWFyIGNhY2hlZCBmZWVkcyBnbyB0byAmcXVvdDtHbG9iYWwgU2V0dGluZ3MmcXVvdDsgYW5kIGNsZWFyIHRoZSBjYWNoZSc7CiRsYW5nWydwcmVmc3VwZGF0ZWQnXSA9ICdNb2R1bCBpbm5zdGlsbGluZ2VyIG9wcGRhdGVydC4nOwokbGFuZ1sndGl0bGVfbGltaXQnXSA9ICdHcmVuc2UgZm9yIGVuaGV0ZXIgaSBsZXZlbmRlIGJva21lcmtlcic7CiRsYW5nWydub3Rlc19saW1pdCddID0gJ0JlZ3JlbnMgZW5oZXRlciBpIGxldmVuZGUgYm9rbWVya2VyLCBzZXR0IDAgZm9yICZhcmluZzsgaW5rbHVkZXJlIGFsbGUgZW5oZXRlci4gT20gZGVubmUgcHJlZmVyYW5zZW4gZXIgc2F0dCB0aWwgbWVyIGVubiAwIHZpbCAmcXVvdDtsaW1pdCZxdW90OyBwYXJhbWV0ZXJlbiBibGkgb3ZlcnN0eXJ0ISc7CiRsYW5nWydmcmllbmRseW5hbWUnXSA9ICdDTVNTaW1wbGVwaWUgJzsKJGxhbmdbJ3Bvc3RpbnN0YWxsJ10gPSAnQ01TU2ltcGxlcGllIGVyIGluc3RhbGxlcnQsIHYmYWVsaWc7ciBzaWtrZXIgcCZhcmluZzsgJmFyaW5nOyBzZXR0ZSAmcXVvdDtVc2UgU2ltcGxlcGllJnF1b3Q7IHJldHRpZ2hldGVyIGZvciAmYXJpbmc7IGJlbnl0dGUgZGVubmUgbW9kdWxlbiEnOwokbGFuZ1sncG9zdHVuaW5zdGFsbCddID0gJ0NNU1NpbXBsZXBpZSBlciBhdmluc3RhbGxlcnQhJzsKJGxhbmdbJ3JlYWxseV91bmluc3RhbGwnXSA9ICdFciBkdSBzaWtrZXIgcCZhcmluZzsgYXQgZHUgdmlsIGF2aW5zdGFsbGVyZSBkZW5uZSBtb2R1bGVuPyc7CiRsYW5nWyd1bmluc3RhbGxlZCddID0gJ01vZHVsZSBhdmluc3RhbGxlcnQuJzsKJGxhbmdbJ2luc3RhbGxlZCddID0gJ01vZHVsIHZlcnNqb24gJXMgZXIgaW5zdGFsbGVydC4nOwokbGFuZ1sndXBncmFkZWQnXSA9ICdNb2R1bGVuIGVyIG9wcGdyYWRlcnQgdGlsIHZlcnNqb24gJXMuJzsKJGxhbmdbJ3N1Ym1pdCddID0gJ0xhZ3JlJzsKJGxhbmdbJ2FjY2Vzc2RlbmllZCddID0gJ1RpbGdhbmcgbmVrdGV0LiBWZW5ubGlnc3Qgc2pla2sgZGluZSByZXR0aWdoZXRlci4nOwokbGFuZ1snaGVscF9saW1pdCddID0gJ1RPRE8nOwokbGFuZ1snaGVscF9mZWVkJ10gPSAnVE9ETyc7CiRsYW5nWydoZWxwX3RlbXBsYXRlJ10gPSAnVE9ETyc7CiRsYW5nWyd0aXRsZV9tb2RfcHJlZnMnXSA9ICdNb2R1bCBpbm5zdGlsbGluZ2VyJzsKJGxhbmdbJ2V2ZW50X2luZm9fT25TaW1wbGVwaWVQcmVmZXJlbmNlQ2hhbmdlJ10gPSAnRW4gaGVuZGVsc2UgZ2VuZXJlcnQgbiZhcmluZztyIGlubnN0aWxsaW5nZW5lIGZvciBTaW1wbGVwaWUgTW9kdWxlbiBibGlyIGVuZHJldCc7CiRsYW5nWydldmVudF9oZWxwX09uU2ltcGxlcGllUHJlZmVyZW5jZUNoYW5nZSddID0gJzxwPkFuIGV2ZW50IGdlbmVyYXRlZCB3aGVuIHRoZSBwcmVmZXJlbmNlcyB0byB0aGUgU2ltcGxlcGllIE1vZHVsZSBnZXQgY2hhbmdlZDwvcD4NCjxoND5QYXJhbWV0ZXJzPC9oND4NCjx1bD4NCjxsaT48ZW0+YWxsb3dfYWRkPC9lbT4gLSBUaGUgbmV3IHNldHRpbmcgb2YgdGhlICZxdW90O0FsbG93IEFkZCZxdW90OyBwcmVmZXJlbmNlOyBib29sZWFuPC9saT4NCjwvdWw+IA0KJzsKJGxhbmdbJ21vZGRlc2NyaXB0aW9uJ10gPSAnVE9ETyc7CiRsYW5nWydoZWxwJ10gPSAnPGgzPldoYXQgRG9lcyBUaGlzIERvPzwvaDM+DQo8cD5UT0RPPC9wPg0KPGgzPkhvdyBEbyBJIFVzZSBJdDwvaDM+DQo8cD5XZWxsLCB5b3UgY291bGQgYWN0dWFsbHkgaW5zdGFsbCBpdCBieSBwbGFjaW5nIHRoZSBtb2R1bGUgaW4gYSBwYWdlIG9yIHRlbXBsYXRlIHVzaW5nIHRoZQ0Kc21hcnR5IHRhZyB7Y21zX21vZHVsZSBtb2R1bGU9JiMwMzk7Q01TU2ltcGxlcGllJiMwMzk7fTwvcD4NCg0KPHVsPg0KPGxpPkZvciB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhpcyBtb2R1bGUsIEZBUXMsIG9yIHRvIGZpbGUgYSBCdWcgUmVwb3J0LCBwbGVhc2UgdmlzaXQgdGhlIE1vZHVsZSBGb3JnZQ0KPGEgaHJlZj0iaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9wcm9qZWN0cy9zaW1wbGVwaWUvIj5DTVNTaW1wbGVwaWU8L2E+LjwvbGk+DQo8bGk+QWRkaXRpb25hbCBkaXNjdXNzaW9uIG9mIHRoaXMgbW9kdWxlIG1heSBhbHNvIGJlIGZvdW5kIGluIHRoZSA8YSBocmVmPSJodHRwOi8vZm9ydW0uY21zbWFkZXNpbXBsZS5vcmciPkNNUyBNYWRlIFNpbXBsZSBGb3J1bXM8L2E+LjwvbGk+DQo8bGk+VGhlIGF1dGhvciwgTnVubywgY2FuIG9mdGVuIGJlIGZvdW5kIGluIHRoZSA8YSBocmVmPSJpcmM6Ly9pcmMuZnJlZW5vZGUubmV0LyNjbXMiPkNNUyBJUkMgQ2hhbm5lbDwvYT4uPC9saT4NCjxsaT5MYXN0bHksIHlvdSBtYXkgaGF2ZSBzb21lIHN1Y2Nlc3MgZW1haWxpbmcgdGhlIGF1dGhvciBkaXJlY3RseS48L2xpPiAgDQo8L3VsPg0KPHA+QXMgcGVyIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgYXMtaXMuIFBsZWFzZSByZWFkIHRoZSB0ZXh0DQpvZiB0aGUgbGljZW5zZSBmb3IgdGhlIGZ1bGwgZGlzY2xhaW1lci48L3A+DQoNCjxoMz5Db3B5cmlnaHQgYW5kIExpY2Vuc2U8L2gzPg0KPHA+Q29weXJpZ2h0ICZjb3B5OyAyMDA5LCBOdW5vIENvc3RhIDxhIGhyZWY9Im1haWx0bzpudW5vLm1mY29zdGFAc2Fwby5wdCI+PG51bm8ubWZjb3N0YUBzYXBvLnB0PjwvYT4uIEFsbCBSaWdodHMgQXJlIFJlc2VydmVkLjwvcD4NCjxwPlRoaXMgbW9kdWxlIGhhcyBiZWVuIHJlbGVhc2VkIHVuZGVyIHRoZSA8YSBocmVmPSJodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwiPkdOVSBQdWJsaWMgTGljZW5zZTwvYT4uIFlvdSBtdXN0IGFncmVlIHRvIHRoaXMgbGljZW5zZSBiZWZvcmUgdXNpbmcgdGhlIG1vZHVsZS48L3A+DQonOwokbGFuZ1sndXRteiddID0gJzE1Njg2MTM1My4xMjQzMTE4MjY4LjEzMzQuMzMudXRtY3NyPWZvcnVtLmNtc21hZGVzaW1wbGUub3JnfHV0bWNjbj0ocmVmZXJyYWwpfHV0bWNtZD1yZWZlcnJhbHx1dG1jY3Q9L2luZGV4LnBocCc7CiRsYW5nWyd1dG1hJ10gPSAnMTU2ODYxMzUzLjE3OTA1MjYyMzA4NDExMDEwMC4xMjEwNDIzNTc3LjEyNDQ1NjQyNzUuMTI0NDU3NzkzNy4xNDA1JzsKJGxhbmdbJ3V0bWMnXSA9ICcxNTY4NjEzNTMnOwokbGFuZ1sndXRtYiddID0gJzE1Njg2MTM1My4xLjEwLjEyNDQ1Nzc5MzcnOwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/lang/ext/nl_NL.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ3RlbXBsYXRlX2luZm9fdGFiJ10gPSAnPGI+QmVzY2hpa2JhcmUgRmVlZCBTamFibG9uZW4uPC9iPic7CiRsYW5nWyd0ZW1wbGF0ZV9pbmZvX2ZlZWQnXSA9ICdGZWVkcyBTamFibG9vbiBPdmVyemljaHQnOwokbGFuZ1snYWRkZWRpdF9mZWVkc190ZW1wbGF0ZSddID0gJ1RvZXZvZWdlbi93aWp6aWdlbiB2YW4gZWVuIEZlZWQgT3ZlcnppY2h0IFNqYWJsb29uJzsKJGxhbmdbJ3VwZGF0ZWRfZmVlZCddID0gJ0ZlZWQgYmlqZ2V3ZXJrdC4nOwokbGFuZ1snZXJyb3JfZmVlZCddID0gJ0Vua2VsZSB2ZWxkZW4gemlqbiBsZWVnISc7CiRsYW5nWydhZGRlZF9mZWVkJ10gPSAnRmVlZCBpcyBUb2VnZXZvZWdkLic7CiRsYW5nWydhcmVfeW91X3N1cmUnXSA9ICdXZWV0IHUgemVrZXIgZGF0IHUgZGV6ZSBGZWVkIHdpbHQgdmVyd2lqZGVyZW4/JzsKJGxhbmdbJ2ZlZWRfZGVsZXRlZCddID0gJ0ZlZWQgaXMgdmVyd2lqZGVyZC4nOwokbGFuZ1snZXJyb3JfZGVsZXRlJ10gPSAnSWV0cyBnaW5nIHZlcmtlZXIsIHByb2JlZXIgaGV0IG9wbmlldXcuJzsKJGxhbmdbJ2Zyb250X25vX2ZlZWQnXSA9ICdHZWVuIEZlZWRzIEJlc2NoaWtiYWFyISc7CiRsYW5nWydmcm9udF9wYXJhbV9uYW1lJ10gPSAnUGFyYW0gTmFhbSBpcyBuaWV0IGFhbndlemlnISc7CiRsYW5nWydmZWVkX25hbWVfZXhpc3RzJ10gPSAnRXIgYmVzdGFhdCBhbCBlZW4gRmVlZCBtZXQgZGV6ZSBuYWFtISc7CiRsYW5nWydmZWVkX2lkJ10gPSAnSWQnOwokbGFuZ1snZmVlZF9uYW1lJ10gPSAnTmFhbSc7CiRsYW5nWydmZWVkX3VybCddID0gJ0ZlZWQgVXJsICc7CiRsYW5nWyd0aXRsZV9nZW5lcmFsJ10gPSAnQWxnZW1lbmUgRmVlZHMnOwokbGFuZ1snYWRkX2ZlZWQnXSA9ICdOaWV1d2UgRmVlZCBUb2V2b2VnZW4nOwokbGFuZ1snZWRpdCddID0gJ1dpanppZyBGZWVkJzsKJGxhbmdbJ3RpdGxlX251bV9yZWNvcmRzJ10gPSAnJXMgZmVlZChzKSBnZXZvbmRlbi4nOwokbGFuZ1sndGl0bGVfY2FjaGVfbGlmZXRpbWUnXSA9ICdMZXZlbnNkdXVyIEJ1ZmZlcic7CiRsYW5nWydub3Rlc19jYWNoZV9saWZldGltZSddID0gJ0xldmVuc2R1dXIgQnVmZmVyIGluIHNlY29uZGVuLiBCaWp2LiBoYWxmIHV1ciAgJnF1b3Q7MTgwMCZxdW90OywgZWVuIHV1ciAmcXVvdDszNjAwJnF1b3Q7JzsKJGxhbmdbJ3RpdGxlX2lzX2NhY2hlJ10gPSAnQnVmZmVyIEZlZWRzICc7CiRsYW5nWydub3Rlc19pc19jYWNoZSddID0gJ09tIGRlIGJ1ZmZlciB2YW4gRmVlZHMgdGUgbGVnZW4gZ2EgbmFhciAmcXVvdDtBbGdlbWVuZSBJbnN0ZWxsaW5nZW4mcXVvdDsgZW4gbGVlZyBkZSBidWZmZXIgdmFuIGRlIHdlYnNpdGUnOwokbGFuZ1sncHJlZnN1cGRhdGVkJ10gPSAnTW9kdWxlIGluc3RlbGxpbmdlbiBiaWpnZXdlcmt0Lic7CiRsYW5nWyd0aXRsZV9saW1pdCddID0gJ0xpbWl0ZWVyIEl0ZW1zIEZlZWRzJzsKJGxhbmdbJ25vdGVzX2xpbWl0J10gPSAnTGltaXQgZmVlZHMgSXRlbXMsIHNldCAwIHRvIGluY2x1ZGUgYWxsIGl0ZW1zLiBJZiB0aGlzIFByZWZlcmVuY2Ugd2FzIG1vcmUgdGhhbiAwICZxdW90O2xpbWl0JnF1b3Q7IHBhcmFtIGlzIG92ZXJyaWRlISc7CiRsYW5nWydmcmllbmRseW5hbWUnXSA9ICdDTVNTaW1wbGVwaWUgJzsKJGxhbmdbJ3Bvc3RpbnN0YWxsJ10gPSAnRGUgbW9kdWxlIENNU1NpbXBsZXBpZSBpcyBnZSZpdW1sO25zdGFsbGVlcmQsIGNvbnRyb2xlZXIgdXcgcmVjaHRlbiAmcXVvdDtVc2UgU2ltcGxlcGllJnF1b3Q7IG9tIGRlIG1vZHVsZSB0ZSBnZWJydWlrZW4hJzsKJGxhbmdbJ3Bvc3R1bmluc3RhbGwnXSA9ICdDTVNTaW1wbGVwaWUgaXMgZ2VkZSZpdW1sO25zdGFsbGVlcmQhJzsKJGxhbmdbJ3JlYWxseV91bmluc3RhbGwnXSA9ICdZb3UmIzAzOTtyZSBzdXJlIHlvdSB3YW50IHRvIHVuaW5zdGFsbCB0aGlzIG1vZHVsZT8nOwokbGFuZ1sndW5pbnN0YWxsZWQnXSA9ICdNb2R1bGUgdmVyd2lqZGVyZC4nOwokbGFuZ1snaW5zdGFsbGVkJ10gPSAnTW9kdWxlIHZlcnNpZSAlcyBnZSZpdW1sO25zdGFsbGVlcmQuJzsKJGxhbmdbJ3VwZ3JhZGVkJ10gPSAnTW9kdWxlIGJpamdld2Vya3QgbmFhciB2ZXJzaWUgJXMuJzsKJGxhbmdbJ3N1Ym1pdCddID0gJ09wc2xhYW4nOwokbGFuZ1snYWNjZXNzZGVuaWVkJ10gPSAnVG9lZ2FuZyBnZXdlaWdlcmQuIEJla2lqayB1dyBiZXZvZWdkaGVkZW4uJzsKJGxhbmdbJ2hlbHBfbGltaXQnXSA9ICdUZSBkb2VuJzsKJGxhbmdbJ2hlbHBfZmVlZCddID0gJ1RlIGRvZW4nOwokbGFuZ1snaGVscF90ZW1wbGF0ZSddID0gJ1RlIGRvZW4nOwokbGFuZ1sndGl0bGVfbW9kX3ByZWZzJ10gPSAnTW9kdWxlIEluc3RlbGxpbmdlbic7CiRsYW5nWydldmVudF9pbmZvX09uU2ltcGxlcGllUHJlZmVyZW5jZUNoYW5nZSddID0gJ0VlbiBnZWJldXJ0ZW5pcyBkaWUgd29yZHQgZ2VnZW5lcmVlcmQgYWxzIGRlIGluc3RlbGxpbmdlbiB2YW4gZGUgU2ltcGxlcGllIE1vZHVsZSB3b3JkZW4gZ2V3aWp6aWdkLic7CiRsYW5nWydldmVudF9oZWxwX09uU2ltcGxlcGllUHJlZmVyZW5jZUNoYW5nZSddID0gJzxwPkVlbiBnZWJldXJ0ZW5pcyBkaWUgd29yZHQgZ2VnZW5lcmVlcmQgYWxzIGRlIGluc3RlbGxpbmdlbiB2YW4gZGUgU2ltcGxlcGllIE1vZHVsZSB3b3JkZW4gZ2V3aWp6aWdkLjwvcD4NCjxoND5QYXJhbWV0ZXJzIDwvaDQ+DQo8dWw+DQo8bGk+PGVtPmFsbG93X2FkZDwvZW0+IC0gVGhlIG5ldyBzZXR0aW5nIG9mIHRoZSAmcXVvdDtBbGxvdyBBZGQmcXVvdDsgcHJlZmVyZW5jZTsgYm9vbGVhbjwvbGk+DQo8L3VsPiANCic7CiRsYW5nWydtb2RkZXNjcmlwdGlvbiddID0gJ1RlIGRvZW4nOwokbGFuZ1snaGVscCddID0gJzxoMz5XaGF0IERvZXMgVGhpcyBEbz8gPC9oMz4NCjxwPlRPRE88L3A+DQo8aDM+SG93IERvIEkgVXNlIEl0PC9oMz4NCjxwPldlbGwsIHlvdSBjb3VsZCBhY3R1YWxseSBpbnN0YWxsIGl0IGJ5IHBsYWNpbmcgdGhlIG1vZHVsZSBpbiBhIHBhZ2Ugb3IgdGVtcGxhdGUgdXNpbmcgdGhlDQpzbWFydHkgdGFnIHtjbXNfbW9kdWxlIG1vZHVsZT0mIzAzOTtDTVNTaW1wbGVwaWUmIzAzOTt9PC9wPg0KDQo8dWw+DQo8bGk+Rm9yIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGlzIG1vZHVsZSwgRkFRcywgb3IgdG8gZmlsZSBhIEJ1ZyBSZXBvcnQsIHBsZWFzZSB2aXNpdCB0aGUgTW9kdWxlIEZvcmdlDQo8YSBocmVmPSJodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL3NpbXBsZXBpZS8iPkNNU1NpbXBsZXBpZTwvYT4uPC9saT4NCjxsaT5BZGRpdGlvbmFsIGRpc2N1c3Npb24gb2YgdGhpcyBtb2R1bGUgbWF5IGFsc28gYmUgZm91bmQgaW4gdGhlIDxhIGhyZWY9Imh0dHA6Ly9mb3J1bS5jbXNtYWRlc2ltcGxlLm9yZyI+Q01TIE1hZGUgU2ltcGxlIEZvcnVtczwvYT4uPC9saT4NCjxsaT5UaGUgYXV0aG9yLCBTakcsIGNhbiBvZnRlbiBiZSBmb3VuZCBpbiB0aGUgPGEgaHJlZj0iaXJjOi8vaXJjLmZyZWVub2RlLm5ldC8jY21zIj5DTVMgSVJDIENoYW5uZWw8L2E+LjwvbGk+DQo8bGk+TGFzdGx5LCB5b3UgbWF5IGhhdmUgc29tZSBzdWNjZXNzIGVtYWlsaW5nIHRoZSBhdXRob3IgZGlyZWN0bHkuPC9saT4gIA0KPC91bD4NCjxwPkFzIHBlciB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkIGFzLWlzLiBQbGVhc2UgcmVhZCB0aGUgdGV4dA0Kb2YgdGhlIGxpY2Vuc2UgZm9yIHRoZSBmdWxsIGRpc2NsYWltZXIuPC9wPg0KDQo8aDM+Q29weXJpZ2h0IGFuZCBMaWNlbnNlPC9oMz4NCjxwPkNvcHlyaWdodCAmY29weTsgMjAwOSwgTnVubyBDb3N0YSA8YSBocmVmPSJtYWlsdG86bnVuby5tZmNvc3RhQHNhcG8ucHQiPjxudW5vLm1mY29zdGFAc2Fwby5wdD48L2E+LiBBbGwgUmlnaHRzIEFyZSBSZXNlcnZlZC48L3A+DQo8cD5UaGlzIG1vZHVsZSBoYXMgYmVlbiByZWxlYXNlZCB1bmRlciB0aGUgPGEgaHJlZj0iaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMIj5HTlUgUHVibGljIExpY2Vuc2U8L2E+LiBZb3UgbXVzdCBhZ3JlZSB0byB0aGlzIGxpY2Vuc2UgYmVmb3JlIHVzaW5nIHRoZSBtb2R1bGUuPC9wPg0KJzsKJGxhbmdbJ3V0bWEnXSA9ICcxNTY4NjEzNTMuNzk5OTY5MDUwLjEyMjUwMjQwNTYuMTI0NDYzOTMwNS4xMjQ0NjUyNTQ5LjM0MSc7CiRsYW5nWyd1dG16J10gPSAnMTU2ODYxMzUzLjEyNDQ1NTAwODcuMzM3LjU5LnV0bWNzcj1mb3J1bS5jbXNtYWRlc2ltcGxlLm9yZ3x1dG1jY249KHJlZmVycmFsKXx1dG1jbWQ9cmVmZXJyYWx8dXRtY2N0PS9pbmRleC5waHAvdG9waWMsMzQ0OTMubmV3Lmh0bWwnOwokbGFuZ1sndXRtYyddID0gJzE1Njg2MTM1Myc7CiRsYW5nWyd1dG1iJ10gPSAnMTU2ODYxMzUzLjIuMTAuMTI0NDY1MjU0OSc7Cj8+]]></data>
	</file>
	<file>
	  <filename>/lang/ext/pt_PT.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ3RlbXBsYXRlX2luZm9fdGFiJ10gPSAnPGI+RmVlZHMgVGVtcGxhdGVzIERpc3BvbiZpYWN1dGU7dmVpcy48L2I+JzsKJGxhbmdbJ3RlbXBsYXRlX2luZm9fZmVlZCddID0gJ0ZlZWRzIFRlbXBsYXRlJzsKJGxhbmdbJ2FkZGVkaXRfZmVlZHNfdGVtcGxhdGUnXSA9ICdBZGljaW9uYXIvRWRpdGFyIHVtIEZlZWQgVGVtcGxhdGUnOwokbGFuZ1sndXBkYXRlZF9mZWVkJ10gPSAnRmVlZCBmb2kgYWN0dWFsaXphZG8uJzsKJGxhbmdbJ2Vycm9yX2ZlZWQnXSA9ICdBbGd1bnMgY2FtcG9zIGVzdCZhdGlsZGU7byB2YXppb3MhJzsKJGxhbmdbJ2FkZGVkX2ZlZWQnXSA9ICdGZWVkIGFkaWNpb25hZG8uJzsKJGxhbmdbJ2FyZV95b3Vfc3VyZSddID0gJ1RlbSBhIGNlcnRlemEgcXVlIHBlcnRlbmRlIGVsaW1pbmFyIGVzdGUgRmVlZD8nOwokbGFuZ1snZmVlZF9kZWxldGVkJ10gPSAnRmVlZCBlbGltaW5hZG8gY29tIHN1Y2Vzc28uJzsKJGxhbmdbJ2Vycm9yX2RlbGV0ZSddID0gJ0FsZ28gZGUgZXJyYWRvIGFjb250ZWNldSwgdGVudGUgbm92YW1lbnRlLic7CiRsYW5nWydmcm9udF9ub19mZWVkJ10gPSAnU2VtIEZlZWRzIERpc3BvbiZpYWN1dGU7dmVpcyEnOwokbGFuZ1snZnJvbnRfcGFyYW1fbmFtZSddID0gJ08gcGFyYW1ldHJvICZxdW90O05hbWUmcXVvdDsgbiZhdGlsZGU7byBmb2kgZW5jb250cmFkbyEnOwokbGFuZ1snZmVlZF9uYW1lX2V4aXN0cyddID0gJ1VtIEZlZWQgY29tIG8gbWVzbW8gbm9tZSBqJmFhY3V0ZTsgZXhpc3RlISc7CiRsYW5nWydmZWVkX2lkJ10gPSAnSUQgJzsKJGxhbmdbJ2ZlZWRfbmFtZSddID0gJ05vbWUnOwokbGFuZ1snZmVlZF91cmwnXSA9ICdGZWVkIFVybCAnOwokbGFuZ1sndGl0bGVfZ2VuZXJhbCddID0gJ0dlcmFsIEZlZWRzJzsKJGxhbmdbJ2FkZF9mZWVkJ10gPSAnQWRpY2lvbmFyIG5vdm8gRmVlZCc7CiRsYW5nWydlZGl0J10gPSAnRWRpdGFyIEZlZWQnOwokbGFuZ1sndGl0bGVfbnVtX3JlY29yZHMnXSA9ICclcyBmZWVkKHMpIGVuY29udHJhZG8ocykuJzsKJGxhbmdbJ3RpdGxlX2NhY2hlX2xpZmV0aW1lJ10gPSAnQ2FjaGUgVGVtcG8gZGUgVmlkYSc7CiRsYW5nWydub3Rlc19jYWNoZV9saWZldGltZSddID0gJ0NhY2hlIGVtIHNlZ3VuZG9zLiBFeC46IE1laWEgSG9yYSAgJnF1b3Q7MTgwMCZxdW90OywgVW1hIEhvcmEgJnF1b3Q7MzYwMCZxdW90Oyc7CiRsYW5nWyd0aXRsZV9pc19jYWNoZSddID0gJ0NhY2hlIEZlZWRzICc7CiRsYW5nWydub3Rlc19pc19jYWNoZSddID0gJ1BhcmEgZWxpbWluYXIgbyBjYWNoZSBkb3MgZmVlZHMgdiZhYWN1dGU7IGVtIENvbmZpcmEmY2NlZGlsOyZvdGlsZGU7ZXMgR2xvYmFpcyBlIGVsaW1pbmFyIGNhY2hlJzsKJGxhbmdbJ3ByZWZzdXBkYXRlZCddID0gJ01vZHVsbyBQcmVmZXImZWNpcmM7bmNpYXMgYWN0dWFsaXphZGFzLic7CiRsYW5nWyd0aXRsZV9saW1pdCddID0gJ0xpbWl0ZSBJdGVtcyBGZWVkcyc7CiRsYW5nWydub3Rlc19saW1pdCddID0gJ0xpbWl0ZSBmZWVkcyBpdGVucywgZGVmaW5pciAgJnF1b3Q7MCZxdW90OyBzZSBwcmV0ZW5kZSBpbmNsdWlyIHRvZG9zIG9zIGl0ZW5zLiBTZSBlc3RhIHByZWZlciZlY2lyYztuY2lhIGZvaSBtYWlvciBkbyBxdWUgJnF1b3Q7MCZxdW90OyBvIHBhcmFtZXRybyAmcXVvdDtsaW1pdGUmcXVvdDsgJmVhY3V0ZTsgc29icmVwb3N0byEnOwokbGFuZ1snZnJpZW5kbHluYW1lJ10gPSAnQ01TU2ltcGxlcGllICc7CiRsYW5nWydwb3N0aW5zdGFsbCddID0gJ0NNU1NpbXBsZXBpZSBmb2kgaW5zdGFsYWRvLCBjZXJ0aWZpcXVlLXNlIGRlIGRlZmluaXIgJnF1b3Q7VXNlIFNpbXBsZXBpZSZxdW90OyBwZXJtaXNzJm90aWxkZTtlcyBwYXJhIHVzYXIgZXN0ZSBtJm9hY3V0ZTtkdWxvISc7CiRsYW5nWydwb3N0dW5pbnN0YWxsJ10gPSAnQ01TU2ltcGxlcGllIGZvaSBkZXNpbnN0YWxhZG8hJzsKJGxhbmdbJ3JlYWxseV91bmluc3RhbGwnXSA9ICdUZW0gYSBjZXJ0ZXphIHF1ZSBwcmV0ZW5kZSBkZXNpbnN0YWxhciBlc3RlIG1vZHVsbz8nOwokbGFuZ1sndW5pbnN0YWxsZWQnXSA9ICdNb2R1bG8gZGVzaW5zdGFsYWRvLic7CiRsYW5nWydpbnN0YWxsZWQnXSA9ICdNb2R1bG8gdmVycyZhdGlsZGU7byAlcyBpbnN0YWxhZG8uJzsKJGxhbmdbJ3VwZ3JhZGVkJ10gPSAnTW9kdWxvIGFjdHVhbGl6YWRvIHBhcmEgYSB2ZXJzJmF0aWxkZTtvICVzLic7CiRsYW5nWydzdWJtaXQnXSA9ICdHdWFyZGFyJzsKJGxhbmdbJ2FjY2Vzc2RlbmllZCddID0gJ0FjZXNzbyBuZWdhZG8uIFBvciBmYXZvciwgdmVyaWZpcXVlIGFzIHBlcm1pc3Mmb3RpbGRlO2VzLic7CiRsYW5nWydoZWxwX2xpbWl0J10gPSAnVE9ETyAnOwokbGFuZ1snaGVscF9mZWVkJ10gPSAnVE9ETyAnOwokbGFuZ1snaGVscF90ZW1wbGF0ZSddID0gJ1RPRE8gJzsKJGxhbmdbJ3RpdGxlX21vZF9wcmVmcyddID0gJ01vZHVsbyBQcmVmZXImZWNpcmM7bmNpYXMnOwokbGFuZ1snZXZlbnRfaW5mb19PblNpbXBsZXBpZVByZWZlcmVuY2VDaGFuZ2UnXSA9ICdVbSBldmVudG8gZ2VyYWRvIHF1YW5kbyBhcyBwcmVmZXImZWNpcmM7bmNpYXMgcGFyYSBvIFNpbXBsZXBpZSBNJm9hY3V0ZTtkdWxvIGZvcmVtIGFsdGVyYWRhcyc7CiRsYW5nWydldmVudF9oZWxwX09uU2ltcGxlcGllUHJlZmVyZW5jZUNoYW5nZSddID0gJzxwPkFuIGV2ZW50IGdlbmVyYXRlZCB3aGVuIHRoZSBwcmVmZXJlbmNlcyB0byB0aGUgU2ltcGxlcGllIE1vZHVsZSBnZXQgY2hhbmdlZDwvcD4NCjxoND5QYXJhbWV0ZXJzPC9oND4NCjx1bD4NCjxsaT48ZW0+YWxsb3dfYWRkPC9lbT4gLSBUaGUgbmV3IHNldHRpbmcgb2YgdGhlICZxdW90O0FsbG93IEFkZCZxdW90OyBwcmVmZXJlbmNlOyBib29sZWFuPC9saT4NCjwvdWw+IA0KJzsKJGxhbmdbJ21vZGRlc2NyaXB0aW9uJ10gPSAnVE9ETyc7CiRsYW5nWydoZWxwJ10gPSAnPGgzPldoYXQgRG9lcyBUaGlzIERvPzwvaDM+DQo8cD5UT0RPPC9wPg0KPGgzPkhvdyBEbyBJIFVzZSBJdDwvaDM+DQo8cD5XZWxsLCB5b3UgY291bGQgYWN0dWFsbHkgaW5zdGFsbCBpdCBieSBwbGFjaW5nIHRoZSBtb2R1bGUgaW4gYSBwYWdlIG9yIHRlbXBsYXRlIHVzaW5nIHRoZQ0Kc21hcnR5IHRhZyB7Y21zX21vZHVsZSBtb2R1bGU9JiMwMzk7Q01TU2ltcGxlcGllJiMwMzk7fTwvcD4NCg0KPHVsPg0KPGxpPkZvciB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhpcyBtb2R1bGUsIEZBUXMsIG9yIHRvIGZpbGUgYSBCdWcgUmVwb3J0LCBwbGVhc2UgdmlzaXQgdGhlIE1vZHVsZSBGb3JnZQ0KPGEgaHJlZj0iaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9wcm9qZWN0cy9zaW1wbGVwaWUvIj5DTVNTaW1wbGVwaWU8L2E+LjwvbGk+DQo8bGk+QWRkaXRpb25hbCBkaXNjdXNzaW9uIG9mIHRoaXMgbW9kdWxlIG1heSBhbHNvIGJlIGZvdW5kIGluIHRoZSA8YSBocmVmPSJodHRwOi8vZm9ydW0uY21zbWFkZXNpbXBsZS5vcmciPkNNUyBNYWRlIFNpbXBsZSBGb3J1bXM8L2E+LjwvbGk+DQo8bGk+VGhlIGF1dGhvciwgTnVubywgY2FuIG9mdGVuIGJlIGZvdW5kIGluIHRoZSA8YSBocmVmPSJpcmM6Ly9pcmMuZnJlZW5vZGUubmV0LyNjbXMiPkNNUyBJUkMgQ2hhbm5lbDwvYT4uPC9saT4NCjxsaT5MYXN0bHksIHlvdSBtYXkgaGF2ZSBzb21lIHN1Y2Nlc3MgZW1haWxpbmcgdGhlIGF1dGhvciBkaXJlY3RseS48L2xpPiAgDQo8L3VsPg0KPHA+QXMgcGVyIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgYXMtaXMuIFBsZWFzZSByZWFkIHRoZSB0ZXh0DQpvZiB0aGUgbGljZW5zZSBmb3IgdGhlIGZ1bGwgZGlzY2xhaW1lci48L3A+DQoNCjxoMz5Db3B5cmlnaHQgYW5kIExpY2Vuc2U8L2gzPg0KPHA+Q29weXJpZ2h0ICZjb3B5OyAyMDA5LCBOdW5vIENvc3RhIDxhIGhyZWY9Im1haWx0bzpudW5vLm1mY29zdGFAc2Fwby5wdCI+PG51bm8ubWZjb3N0YUBzYXBvLnB0PjwvYT4uIEFsbCBSaWdodHMgQXJlIFJlc2VydmVkLjwvcD4NCjxwPlRoaXMgbW9kdWxlIGhhcyBiZWVuIHJlbGVhc2VkIHVuZGVyIHRoZSA8YSBocmVmPSJodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwiPkdOVSBQdWJsaWMgTGljZW5zZTwvYT4uIFlvdSBtdXN0IGFncmVlIHRvIHRoaXMgbGljZW5zZSBiZWZvcmUgdXNpbmcgdGhlIG1vZHVsZS48L3A+DQonOwokbGFuZ1sndXRtYSddID0gJzE1Njg2MTM1My40MDI3OTI3MjguMTI0Mzk4MzIxMi4xMjQ0NTA1MzM0LjEyNDQ1NDI0NzAuMTcnOwokbGFuZ1sndXRteiddID0gJzE1Njg2MTM1My4xMjQ0MzI3MzM3LjEyLjUudXRtY3NyPWZvcnVtLmNtc21hZGVzaW1wbGUub3JnfHV0bWNjbj0ocmVmZXJyYWwpfHV0bWNtZD1yZWZlcnJhbHx1dG1jY3Q9L2luZGV4LnBocC90b3BpYywzNDA5Mi5uZXcuaHRtbCc7CiRsYW5nWyd1dG1jJ10gPSAnMTU2ODYxMzUzJzsKJGxhbmdbJ3V0bWInXSA9ICcxNTY4NjEzNTMnOwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/libs/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/libs/DEV/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/libs/DEV/1.1.3/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/libs/DEV/1.1.3/compatibility_test/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/libs/DEV/1.1.3/compatibility_test/COMPATIBILITY README.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[U0lNUExFUElFIENPTVBBVElCSUxJVFkgVEVTVAoKMSkgVXBsb2FkIHNwX2NvbXBhdGliaWxpdHlfdGVzdC5waHAgdG8gdGhlIHdlYi1hY2Nlc3NpYmxlIHJvb3Qgb2YgeW91ciB3ZWJzaXRlLgpGb3IgZXhhbXBsZSwgaWYgeW91ciB3ZWJzaXRlIGlzIHd3dy5leGFtcGxlLmNvbSwgdXBsb2FkIGl0IHNvIHRoYXQgeW91IGNhbiBnZXQgCnRvIGl0IGF0IHd3dy5leGFtcGxlLmNvbS9zcF9jb21wYXRpYmlsaXR5X3Rlc3QucGhwCgoyKSBPcGVuIHlvdXIgd2ViIGJyb3dzZXIgYW5kIGdvIHRvIHRoZSBwYWdlIHlvdSBqdXN0IHVwbG9hZGVkLg==]]></data>
	</file>
	<file>
	  <filename>/libs/DEV/1.1.3/compatibility_test/sp_compatibility_test.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKGlzc2V0KCRfR0VUWydsb2dvcG5nJ10pKQp7CgkkZGF0YT0naVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQVpBQUFBQXRDQVlBQUFDQW5EM1RBQUFBQkhOQ1NWUUlDQWdJZkFoa2lBQUFBQWx3U0ZsekFBQUxFZ0FBQ3hJQjB0MSsvQUFBQUJaMFJWaDBRM0psWVhScGIyNGdWR2x0WlFBd01pOHdNeTh3Tm5LVS9KSUFBQUFmZEVWWWRGTnZablIzWVhKbEFFMWhZM0p2YldWa2FXRWdSbWx5WlhkdmNtdHpJRGkxYU5KNEFBQVI2RWxFUVZSNG5PMWR6WXJyU0piK1R0UDc5QnVrNWduU1JidnAxWkM2cTRHQjRicVd2YnErbTFrTUREZHIwZENMR2NvSkRUWFVwbnhwNkZsZTUycFdRL3N5TU5Bd1VFb2FMaFR0cHB4UFVQSVR0TDB2Vjh3aVR0aHk2SVFVa2tPeW5La1BoRE9sK0RtS3YzUGkvSVJJS1lVZVBYcjA2TkdqS241K2JnSzZEaUtLQUV3QWJBQXNsRkxwR2NtNUtCQlJEQ0FHa0VLMzNlYWM5UFFJQXlLYUFJZ0FySlJTaTBCbFJxZzR6NGhvd0hrR25HY1ZncFllRmFDVWVwRVg5S0NMK1JvNjBneWhCN1RpS3owMzNTWHZOSVplckZYbWlzOUV5OFNpWTM3bXRvbE1mNSs3bnk3NUFqQzMrblhDOXdjQUV1dloxTE5NNXp3RE1MV2VxVXg5SzZ1KzZOenQ4OUt1RjdVRElhSWhnRHZvaGZiS2VnWUFhK2hKTUZWYUFycXowbDBUMFZCMVY5SzVBM0FkcWpDVzhPNGNqemZRRTNpbDVKM0YxUHAvSElvdVgyVG9ueURUTHR6WGp3RHVPdHlYblFQdkV0NVl0OGZRVEdVQzRMWm0wVVh6N0V0SG5qR0FHK0hlckNZTndWQXliM3lRS3FYbWdjaHBGRWNNaFA0NitoYkFSL1dMWmRCT29MK09JaHdrd0NHMDlIRER2d1lyQUZ2K1RRQWs2aGZMWUNvUDNuWi9LRWwyRFQxQjNoRFJaMHl6allGdzc3bGlBdmNFM29PSUhuQmd1Z1kySTd0Q2kyQmhZU0hRWVhBTHplUmFaMnhkUkVhRnRJZFNhbW9saTRTc0ErdTNEb3JLclowbm8wSTFhR3RoSHNKajNoVGdFWm9wTjRvUTdYTzhBL2xKYi9IcEw2TWI5Y3ZsMjlxRS9XV1VWUSs5aHR6Wk5vYjhld3ZnSFplVEFIZ0FzRkMvck05TWlHaU1jdVpoNHlVeENoZDgyK0FOZ0RFUnhWMlE2RmtDTEdJZUJuMGZINUFnMzE3VDlza0lBMmFJMzFxM1cxbVlMd0doMnNkbUlBWVQrbTQwQlBDNSt0VXk5U2JxdTlFRVdxSjdYWVdJQXNSOGZVUGZqZDREbUtsZjFXSWtWWGRVWmllVXEwc3BsZFNvL3lYZ0NzQ0NWUThiNkRiTTdqb2VXNlJsaG9DcXZCY0NuL2FTNWw0U29PNDY4NnlNbHFnK09TOENVWWhDZm5iMDMrN29HbUtISCtqVGFFNmZSczdLNk5Ob1NKOUdNL28wK2h0MitJQWRYbHZsaExnRzJPRkxwcWVTYnBHM2FkTGsyQUo0RCtBVlg1L3ovMnRvZys4R1dvck40bjJWdXA4eG5oejNyM0ZRZzlodDE0cHUycUduTjloQ016SkRmOUk4UmM4SHZMdGNaMjV0RVVhaXJ6UFA3RHhQejBpNFM4OU5nQytPZHlBN01ZMjJDZng1bE9KZ1pCNUFxNXhzTzBiVEdBRDRodjQ4ZWczZ3JmcDdyOTFSN0xvdnFGc1dBTzVZQlFLbDFKd05ybU1BaVZMcTdBYTZEdUJlS1RYbE5rcVJ0MjFNb0puRkhmUXVMb1pteUVIY1BUMHdkZHgvZ0RhYWI0QTlvK2xSSFRGMDN3NEF6RlFBdC9ZNjgwd3BsUkxSS3h4Y2Y2ZW4waEVRSzJpaDFJYXRNb0tVN3BJWW9ROERNWWo0cXV0cEVSSXhnTzhwR2IxVjhiTE93dlJZcEt2UGVoV3hVV2xlbzQ1bkRhWFVob2ptWUh0VkJqZm1PVFFqYVp2cFNrYnhSNlhVSkhzanhNTDNFcEh4VGd4ZDdod1Y1eGt2dEVsb1drNEZqLzNFdnM5TTBrNmJTM2RKT0ZaaC9YaFIxd0EvNG8vMGY2TkpqZmNlbGlmcDRZRlV1c2tlVUsyRDFaV1N0OWUwWFVwNjlIZ1pzSGNnSzF6ZTR2cUIvalNDK29mbDNQRmNNclpkc2NkUUVwSVFWb3RFQURhdUhRNHZjb0E3ZmtMS1kxeWZLK1h6TER0R0FiMGxjT1dwcGRZOGtSWkFWbGV1Ni9RekVVVlZkeW1zMWhzQ2Jza3kwNWVwYi9tWmNZVXErV3lhaXVocUd1WWRMbDNpYmh1WnZxODA3M2t1QlYwckpOZ01wTkhLR3NRSCt0OVJxdjV4bVFqUHBIdUFsa3Jqc29MWkJUakxWT2RtQW5Oc1Njelh0WlVQMEhyM0tiUmFaUUlyOEltSXRtQzdTN2FqZWRDTStjcXBESW5vQ1ZyL1BDK2pYOGhiRkZ3bnhYUFVBdGN6UnNiYnc0NHJhSUFXU2ZoSmZETVQwVFJMQzlOaCtpaEhDMC9TTVhULzIzMExjTEFpMDVYelR1UTBIN25zVmVhK2FUdFR0aDMwdW9aVzk4eXNjUk16L1JFY3F1Wk0yeG83eGtSS3gybW5tWDlUdGxWRVROY2dlOTlSeElETHVEUHZrSG5uaVVXN2M1NFYwR2ZhMVNEaDN4aXlsMUZrdjVPUUxyR1puRUJiby9FazNJOTN5SStYTmZSWXlkVk5SR1llU2VOd0M5MDJjMmlCT29aZisrVGFJbGV2VW9mREZPbC9SdC9DWTFIdEtEWUFQbFAvbERlc0UxRUsyUlByaXlLREhSSE5rTmZ4djFKS0pVUzBRYmpndUVlbFZNeDFUdUVmaFBTUTFlMFRVWUw4d3ZIS0RBSmVtQkxrSTNpejJFSWY3Wkk2YUxrM2pJQUh1c3N3T0xQclVVcnRsY0JWYVNsSXN3Y1JyWVR5Q3Z1NElpMTd4d3NpV2lDY3Uvb1dXanJmOEdJMWg5L1llbUthTnJ5dy8xQ2h6a2ZvZC9ZZGE0L1FDOVRLb3UxUktSVlhITGVBOXBvYUFxWHpMSGZhcTFLS3VKMythRDI2aDE2L1RySFR2bGRLN1cwOGpnRGtvM25uQzllN1dHbWsrcHcwZW83ZExHejMraUxzNTdvTHRodnZxZ0VYM0xhdUFYYk9obmMxd3JURUc2ZEluUmN5c3ZvMll6ZUlLK1I3WTBrTVpaaWpmS0Jkd2QrWVdkUStaZldFcHNWVnA0ODZiT0ZKUzlaaEk2VDM0UlVPTzRFaC9NZldUWWFtcUdLZHR6WHlSQWczN205NHNRVHFxYzFEcU5vbGQzUzczRWhJVTFmRldnaGVBM3dDbnQ5bFZPRTVRYTBFUVUrRXNCbklwZ09NNEpRcnB2OGU1Ynh3ZU1zbkJiTFppOEk1SVhrUCtXRHZkbHdFSG5DK0V2T3RwNXVycTk3Q0NkWVFMUzRVcW1WNUVmT1ZXSzh6aTE1bzFPMy8yOHhpVWhWVjhpVTE2eWhDM1hjT2hhbHd6MllnRXFOcWhJR2dtc2ZpaEgrYmJNT2tMSUhOUUpJT01JRlRMM3NyYkRDQjNyN1p1T0V0ZEFoOEFhMitlUkNlYlRQUEpjbW5pQWs4Y0w1NzRka1YvQWFSNUhwcHlwWG84U2t6RnU2dFBReDN3V2x4ZVg1NUdPUkQwbUx5ZmVGNGJnSlhwZkZSMVA5UE9BUzdTcGdJdW1vVE5Ha3VGNHFlWi9QWFdUU2ZBUHdkZ004Z3o3MjRScGxsV09FNFdEUUx1MDFXT0E2TUJMU0RUWlQ1UDljdlRUZ0M4UGkxQlprdGRKOUw0Mm5NZVZ3N2lyYzRCRW0vaFI1ekpuamF0MzNTTXJwdEkzcHBoZ3RBVFA4MUdxcGZMNDhHUE92MDd5QnZFZDhSMGVMVWdXRjA3V3k0c3FPaFY1bm5NNEdPb2kzNTNQaThFNUdrWi9iWnp0c1MveFpzdkdjMW1LMVBMdHpWT0FZODRDZXBCcVdsUXBvajhFSWhiZituUEY2a2Zvb0xpc3oyMHpmMnc0emVPa1YrZkJTcElmWmprNGdla1c5MzAvOXZvWGRjaWMzRU9XYkhybk9lc1dkSit2bllLaU8yMDVSZy8xMFB0aG5aOVYvNTdKNnJJTlBHTWZMMnVaWHdUb2xBVjRURDRtbTNkVk5IOGtpQ3ljd0U0UExPTnp0R3J1QWU4NCtDb2Yzb2Y5LzJLY1BSRGtUOWVybCtCbW9zWUNlclI3aFJQenJhWWhGNk1CY2dQU0d2TklBTEdZaGo0bWRkL0tRZGc1UUgwQ3F6Qk1EM2p1ZnpGbWs1RlZLNTI0elJQaFdlMnhKcVpaem81WllJOTB6dzVsd3A1ZnB3MXlsMWhvQ3IvaEMyakZNZzdheGlZRytnOWtrZkFyRndMOG44WGJhcnoyTFkxbHIyczl5ZEg1RjBJRWp3MUNzdWVPY0o4dHRXb0Z2MmtOQUlxY2U5Z3R0bThPaXhpMnRUcDF5R1NMaTNjdnhkbHEvSFpVTHE0NGgvMnh5cmRldVNCT0xXMXJJOEEza2VkcERZOWNJc25VMGNqMjlaelhWcEtETUNTOUpJRlluR0IwL3dzNXUwUVlzdjRxS0hUUWRoaGNRSmh2UzJrSnliQUFrT2djY3M1cEh3ckNrR2tyTmxlSTQvbC8zMmx0V1dqVUppSUlzT01JRFRyd0x3b0pFTTBrQzVhKzhsb282YW9NcmkrUkVjajlBQld0ckF1ZFV1VGhEUmdJam1SSlFTa2VJcndlWEdkN1VCV3kxc2JBMlJkWC9ieFBkdVhBNGdIdGp3V2lZNVpRRGF6YjlSZ1RqM1NWdjF6OHMxL2Vkb2hRNVBraERnRTJYSHlCc3ZyNkE5Y3k1eEorS0NKUFVQMldBOVJMWHQ4eG9IZlhZQ2JTaXRNcWxDMHRJRVVvODBiZG5LS3FFZ3FLd0xCNkIyR1N0WWJjUkNwRDBXbXhxSDBuamE4cHdZTUIyNVBzek11enNjVGtlMzhRMFJiWnFLbkplL2liN0RESmQ5QXExdlIwOGdHNE1udUN3R1VzY3o1RFhxUlZMdlBYY0NvaTR0VFNBOU53RjF3RkhiVTFRTEt1dWhrU0FmQ1I4aHY3QW5MZEJpY0FYUHlINzJYb3doZjE0QkFENFEwYXFKM1ZOZWhRVVlOZFlsZTJONU5SUTNxTFQ5TzluVDVobmdYSVp0Q2JWcGVXSDlPQkh1R2Q5K0tRNmpUY1JucnI4STB2Z2FJcS9DNnRLY09JcmpZUFZ4REhjL0owMTRab2tNUkwxYmJySERyQU9Nb081VnhRUEJsVGFxVU1aend4cmRtU3hldEJSNGYwVVY2NHM5MHFRVnkyd2N6Q2lsODk3RzdOdnZNcmFlRlYwNG5aZmRxbTNQekFIeTdkbVZPUUVJNnhZTHhCTkgraXMwTUFaa0ZSWmcxRmgzNktpK3R3Q3ArczNTRmVzaG9VdURvaTdTR25uTVlYb3JISXpVUjBlRmsvQUJuSVpRU3NzSmlBS1VZU050b014VHNJYmpQYnV3UUY4SVZqaG1HSkgxZkgyR2o1RGRROCtIL1JwVjFwOUtxUVVSZlFFZ0Y4Z0tQanN2NUhzNEdZajZ6WEpML3pHYW9xT1NTd0dtRmROM3pjT25ESkpCTksxUlR0S0FMYU11UXRHeVJsNXFqRkhUbm5lQ2QweVRpSVY3YWNzMDFJSFVsazFGZGRkQmdtTTduTzJTM3JxZ1dYZE9LS1ZtN0NBa3JSVkRCQnd2c2czRUVQTGI1WHY4aEJWK0FpN2tTdFJ2bHk2WE5oZmlpdW5QaGdJZFpscVNOUWxMeVVsSUdpdzdGZTZOQzlxdGJGR29tNjlKU0RTbGpyUmRXcUFqNFY2WGR2ODJMYll4dWpGYUc5b2x1Z1Qvb0VKUklRTUJBT3d3dVJDRCtnWTdPWkNOaUdiU0thcThzRXdkYjk2bHdXMFFPKzZYMFNydHNweEJmdzBIcFRWSlN5TGN1NEkySUVhWk1vM2JzRVJMNVBqYndPZXd5RWJBNDdYS2tmV2RjTjh0T0hNc2FaV1FBbmdzNG1YUFQwWE8rTTI3aUJ3NDFxZU1FYlF5UnQwMkVJYjY5K1VUZlRtYW9OdkhmR3dBeE9wKzZmSkFlQWZzUDlhVVFFdHNBK2lGU3pJOHJ0azFMamloTldHa1RtbEFyVDNjODZUbk41bjJBUFJpT2VRNnJvbm9zK3BrZXFFV0xaNHVpSzQwTndCK0VQcFRDaWE5SnRwL3pqWVduaWZDdmFaUjFQK0FucHRSNkVvejdYQXFKSmY0clRrb3NFVkVKYytsZ3lvTm1oWW9jN0VvMEVITndJRVp4TkR6NGpWMDhPNllBd1UzMEdyZ05KTjNVbENQQzFFVmdnRVBCZ0lBNm43NWtmNXRORUUzWTBNMDgvamRVanFlMkpaZ3I1RS9lVlBDL0hTeWdtTE9KN2pXa3VJNFJrRDZFdG1YY1B1YU4rSTgwU1F0YkVDczhzVTFWN2x6eHltdHdIa0VxWGNGcHgrditlUmdVZUxrVTNDTHZIUDI1U0F2VE0zNEs0OHg5RGhML0VrR29BL2VqQ0hUM2JSdE5SWHVYZk1KeXh2bzlyQ1B3WmNXY1VCL1BiRnBpWDRoMUgyRC9NblVCbWJzM3VId0NlWXQ5RHNNNFo0RENmK213ck95OXNtaFhJWEZVTDliUG1DSFljZlVXUXZzRUxtWUJ5UDJmVWZHRnQxekhMaUNPMERNbDlaNUdGS0NZTjVnMlZYNmJnTTVEdWdXTWpON09vUFViT0NTakdmQVBnNUFPaVQwTmZTN1NEdnRKUE4zV3BDM3p0Y0xBZmZCbTJzMFBNY0tkazd2Y0dpUHlIcVdPUEswb2M1ZW9GNnNUclpmVFh1N21NZURZWVExMnljSGJ3WUNBT3FyNVJOMmlIRCtBeGMzMkdHaXZscCtycjV5cXEwTXFrZ09XMmkvK1V2eHpIcW9FRjA2UmJVQjJxUUgwaFROMFRLRC9MRWNDV2xGV2lZVjZHZ0RhK3Q3NzlNVHlpcGpqTkVKWldmUjVod3JjK2VQclA5ZGM2bHhCc0lMZWhXbU9xem9KZmlFdkNxeGF2dmtVSW1CQUlENmVybFZYeTlmc1hFOVBRUGptR0tIU0gzdDUyM0ZFK3k5UjlKSDZBTUJrNEkwVzdnWlV0bWlsWjc0WEtwUDBpMW5zVCszS2hPcEtrbXBOaDdoM2lXa1BzUTVhRUZnV25MSWxGM1dIL2Y4L1l3VXVoMkxtTWdXd09jbHpIcUw0cllwZTFlZnRyRHJPN0tKOEhsSHZsNklEemhlR09jb2JqUFh1NmY4bTZDY0VUOUJ6N0d5QmJsb25oVjVscVhXLzlNU21vN280TEVncFcrS2dSejFPYnZ0K3F4VjVnTnNLL2oxOTN2SWg1MU9VYUY5SkpCU3VRK1JWUUxkamQ0d0lkRkpCUlZqQmMyZEYycFd1dU1Rd1o0Z01RNEcyZ0gwZ0V0Ui9VREF4c0M2ZDN2Yi94YkhCdzB1b00ra3FpWEZzWGVIS1MvYkRpdm9qenVsZGNydEdpMHNvWTF4T0pET2xMdXd5K1h4TVViZVVIMVNXMWNGT3hQWTZyUDMwTFFiMmxiUVg2dExIV1dZOTQ1d21KZUorWFVKU2V6bE5ZR2VKMGJIbm5LZXVTZjlwait6Ylc3S0VPdHRFdHl2RXh5cnNzMFl5TkVqelQrbFZLdmVOSm14R09FdzV4TndVS0ZOdHpET045RHZtRUsvcDNQc1ZtMmZYUDVUR2NpK29IOGQzV1lJaVFJVW1VQlAzb1g2L2JLcWRIYXhjRENRVjMxRThjdUFnNEhjZHlqbzgxbERtSCtQVlQveitwTGc1WVhsQS9YN3Bma1FPK2hmUmpjNFNKV0dnOFpDdGhUSFcyRE5ZZit3N0ZJQVZJOGVQVjRPYkx0Q0p6UVRYVVV3QnBLRitzUHlDVnJmV1RVcXZFZVBIajFhZ1IzbndzSEd0Z2RUMGlKSkY0ZEdHRWlQSGoxNmRCbHNOL2llaU14Qm5nUGt2d2x5am1ESGkwTFBRSHIwNlBFU0VmUHZMZHd4TmozektFRmxOOTRlUFhyMGVBWW9POTFnaTlQaWFsNEVlZ2JTbzBlUGw0ZzUzREVRSnRneGJZMmFDMFd2d3VvZTdETnhIbkVaMzN2b0VRWUpkR0NqTWVZK29mY0VDZzQrUDh6RVR3eWhRdzlNL01TOFp4NStDQllIMHFOSGp4NDlYaGIrSDZKV0N0Nys3b2tJQUFBQUFFbEZUa1N1UW1DQyc7CgloZWFkZXIoJ0NvbnRlbnQtdHlwZTogaW1hZ2UvcG5nJyk7CgllY2hvIGJhc2U2NF9kZWNvZGUoJGRhdGEpOwoJZXhpdDsKfQplbHNlIGlmIChpc3NldCgkX0dFVFsnYmFja2dyb3VuZCddKSkKewoJJGRhdGE9J1IwbEdPRGxoTUFFZUFlWUFBUC8vLzhuaTZjVGY1KzcyK1BEMytjM2s2K256OXVmeTlldjA5OVBuN2JuWjQ4Ymc2TGZZNHVIdjgvcjgvZjMrL3Y3Ly83Ylg0Y2poNmZqNy9Ndmo2dno5L3J2YTQrejE5L1g2Ky9mNy9QbjgvZmI2KzdqWjR2djkvYnJhNDczYjVMemI1TFhYNGI3YzViL2M1ZTMxK05Ubzd0dnM4ZGZxNy9IMytialk0dG5xNzlIbTdjL2w2OW5yOFBMNCt0N3Q4c0RkNWNMZTV1UHc5TnZyOE1yaTZmUDQrdExuN2VyMDk5SG03Ty8yK2REbTdPVHc5T1h4OU5icDd0YnA3K0x2OCtEdThzemo2c1hnNTdiWTRkM3M4ZGpxNytqejl0enM4Y1BlNThmaDZNN2s2OFBmNStieTlmeisvc0RkNXZUNSt2VDUrOTd0OGJiWTR0cnI4UDcrL3Y3Ky8rUHc4K1h4OWRYbzdzSGU1dkg0K2ZQNStzSGQ1dC91OHMvbDdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDSDVCQUFBQUFBQUxBQUFBQUF3QVI0QkFBZi9nQ0dDZzRTRmhvZUlpWXFMakkyT2o1Q1JrcE9VbFphWG1KbWFtNXlkbnArZ29hS05FYVdtcDZpcHFxdXNyYTZ2c0xHeXM3UzF0cmU0dWJxN3ZMMit2OERCd3NQRXhiQkR5TW5LeTh6TnpzL1EwZExUMU5YVzE5aloydHZjM2Q3S1V1SGk0K1RsNXVmbzZlcnI3TzN1Ny9EeDh2UDA5ZmIzNHd6NisvejkvdjhBQXdvY1NMQ2d3WU1JRXlwY3lMQ2h3NGNRSTBxY1NMR2l4WXNZTTJvc21LS2p4NDhnUTRvY1NiS2t5Wk1vVTZwY3liS2x5NWN3WThxYytaR0R6WnM0YytyY3liT256NTlBZ3dvZFNyU28wYU5Ja3lwZHlyU3AwNmRRbzBxZFNyV3ExYUFLc21yZHlyV3IxNjlndzRvZFM3YXMyYk5vMDZwZHk3YXQyN2R3LytQS25VdTNydDI3ZVBPUzljQzNyOSsvZ0FNTEhreTRzT0hEaUJNclhzeTRzZVBIa0NOTG5reTVzdVhMbUROcjNzejVzSVhQb0VPTEhrMjZ0T25UcUZPclhzMjZ0ZXZYc0dQTG5rMjd0dTNidUhQcjNzMjd0Ky9mcWtFSUgwNjh1UEhqeUpNclg4Njh1ZlBuMEtOTG4wNjl1dlhyMkxOcjM4Njl1L2Z2NE1PTGIvNmh2UG56Nk5Pclg4Kyt2ZnYzOE9QTG4wKy92djM3K1BQcjM4Ky92Ly8vQUFZbzRJQUVGZ2lmQ0FnbXFPQ0NERGJvNElNUVJpamhoQlJXYU9HRkdHYW80WVljZHVqaGh5Q0dLT0tJSkpabzRva29UampDaWl5MjZPS0xNTVlvNDR3MDFtampqVGptcU9PT1BQYm80NDlBQmlua2tFUVdhZVNSU0NhcDVQK1NOc0xnNUpOUVJpbmxsRlJXYWVXVldHYXA1WlpjZHVubGwyQ0dLZWFZWkVMcHhKbG9wcW5tbW15MjZlYWJjTVlwNTV4MDFtbm5uWGptcWVlZWZQYVpKaGVBQmlyb29JUVdhdWloaUNhcTZLS01OdXJvbzVCR0t1bWtsRlpxcWFCWlpLcnBwcHgyNnVtbm9JWXE2cWlrbG1ycXFhaW1xdXFxckxicTZxdWJ4aURyckxUV2F1dXR1T2FxNjY2ODl1cnJyOEFHSyt5d3hCWnI3TEhJMG9yRXNzdzI2K3l6MEVZcjdiVFVWbXZ0dGRobXErMjIzSGJyN2JmZ2h0dnNFdVNXYSs2NTZLYXI3cnJzdHV2dXUvREdLKys4OU5acjc3MzQ1cXV2dVFMMDYrKy9BQWNzOE1BRUYyend3UWduclBEQ0REZnM4TU1RUnl6eHhCUlhiUEgveFJobnJQSEdISGVNc0JBZ2h5enl5Q1NYYlBMSktLZXM4c29zdCt6eXl6REhMUFBNTk5kc3M4Z0w1S3p6emp6MzdQUFBRQWN0OU5CRUYyMzAwVWducmZUU1REZnQ5Tk5RUnkzMTFGUlhiZlhWV0dkTmRCSmNkKzMxMTJDSExmYllaSmR0OXRsb3A2MzIybXkzN2ZiYmNNY3R0OWNTMUczMzNYam5yZmZlZlBmdDk5K0FCeTc0NElRWGJ2amhpQ2V1K09LTU4rNzQ0NUJITHZua2xGY09lQUNZWjY3NTVweDM3dm5ub0ljdSt1aWtsMjc2NmFpbnJ2cnFyTGZ1K3V1d3h5Nzc3TFRYYnZ2dHVJOU93KzY4OSs3Nzc4QUhML3p3eEJkdi9QSElKNi84OHN3MzcvenowRWZmT3dYVVYyLzk5ZGhuci8zMjNIZnYvZmZnaHkvKy8vamtsMi8rK2VpbnIvNzY3TGZ2L3Z2d3h5Ly8vUFIvSDhUOStPZXYvLzc4OSsvLy93QU1vQUFIU01BQ0d2Q0FDRXlnQWhmSXdBYm1yd0FRaktBRUowakJDbHJ3Z2hqTW9BWTN5TUVPZXZDRElBeWhDRWRJd2hLYThJUW9US0VLVjhqQ0ZycndoVERjb0JKbVNNTWEydkNHT015aERuZkl3eDc2OElkQURLSVFoMGpFSWhyeGlFaE1ZZzFad01RbU92R0pVSXlpRktkSXhTcGE4WXBZektJV3Q4akZMbnJ4aTJBTW94aWQ2SVV5bXZHTWFFeWpHdGZJeGphNjhZMXdqS01jNTBqSE90cnhqbmpNb3g3M2VFWWQrUEdQZ0F5a0lBZEp5RUlhOHBDSVRLUWlGOG5JUmpyeWtaQ01wQ1FuU1VsQTR1Q1NtTXlrSmpmSnlVNTY4ditUb0F5bEtFZEp5bEthOHBTb1RLVXFWOG5LVm1aeUJiQ01wU3huU2N0YTJ2S1d1TXlsTG5mSnkxNzY4cGZBREtZd2gwbk1ZaHBUbGpaSXBqS1h5Y3htT3ZPWjBJeW1OS2RKeldwYTg1cll6S1kydDhuTmJucnptOHRNZ0RqSFNjNXltdk9jNkV5bk90Zkp6bmE2ODUzd2pLYzg1MG5QZXRyem52ak1wejczeWM5Kyt2T2ZBQTJvUU50WmdvSWE5S0FJVGFoQ0Y4clFoanIwb1JDTnFFUW5TdEdLV3ZTaUdNMm9SamQ2VUN4NDlLTWdEYWxJUjByU2twcjBwQ2hOcVVwWHl0S1d1dlNsTUkycFRHZEtVNUQyNEtZNHphbE9kOHJUbnZyMHAwQU5xbENIU3RTaUd2V29TRTJxVXBmSzFLYm0xQWRRamFwVXAwclZxbHIxcWxqL3phcFd0OHJWcm5yMXEyQU5xMWpIU3RheW1sV3FKMGlyV3RmSzFyYTY5YTF3amF0YzUwclh1dHIxcm5qTnExNzN5dGUrK3ZXdmF5MkNZQWRMMk1JYTlyQ0lUYXhpRjh2WXhqcjJzWkNOckdRblM5bktXdmF5bUNXc0NqYkwyYzU2OXJPZ0RhMW9SMHZhMHByMnRLaE5yV3BYeTlyV3V2YTFzSTF0WjF0QTI5cmE5cmE0emExdWQ4dmIzdnIydDhBTnJuQ0hTOXppR3ZlNHlFMnVjbTA3aGVZNjk3blFqYTUwcDB2ZDZscjN1dGpOcm5hM3k5M3VldmU3NEEydmVNZjczQm1ZOTd6b1RhOTYxOHZlOXJyM3ZmQ05yM3puUzkvNjJ2ZSsrTTJ2ZnZmTFgvU2E0TDhBRHJDQUIwemdBaHY0d0FoT3NJSVh6T0FHTy9qQkVJNncvNFFuVE9FS0IvZ0lHTTZ3aGpmTTRRNTcrTU1nRHJHSVIwemlFcHY0eENoT3NZcFh6T0lXdTFqRFJJaXhqR2RNNHhyYitNWTR6ckdPZDh6akh2djR4MEFPc3BDSFRPUWlHL25JTTQ2Q2twZk01Q1k3K2NsUWpyS1VwMHpsS2x2NXlsak9zcGEzek9VdWUvbkxZR2J5QzhaTTVqS2IrY3hvVHJPYTE4em1OcnY1elhDT3M1em5UT2M2Mi9uT2VNNXptYnZBNXo3NytjK0FEclNnQjAzb1FodjYwSWhPdEtJWHplaEdPL3JSa0k2MHBQME1oRXBiK3RLWXpyU21OODNwVG52NjA2QU90YWhIVGVwU20vclVxRTYxcWxkOTZRYTQrdFd3anJXc1owM3JXdHY2MXJqT3RhNTN6ZXRlKy9yWHdBNjJzSWRON0dJYis5aklUcmF5bC8vTjdHWTdPOWMvaUxhMHAwM3RhbHY3MnRqT3RyYTN6ZTF1ZS92YjRBNjN1TWRON25LYis5elR0b0s2MTgzdWRydjczZkNPdDd6blRlOTYyL3ZlK002M3Z2Zk43Mzc3Kzk4QVo3Y01Cazd3Z2h2ODRBaFB1TUlYenZDR08vemhFSSs0eENkTzhZcGIvT0lZejNqQmQ4RHhqbnY4NHlBUHVjaEhUdktTbS96a0tFKzV5bGZPOHBhNy9PVXdqN25NUGM2RG10djg1ampQdWM1M3p2T2UrL3puUUErNjBJZE85S0liL2VoSVQ3clNsMzd6S3pqOTZWQ1B1dFNuVHZXcVcvM3FXTSs2MXJmTzlhNTcvZXRnRDd2WXgwNTJxRFBoN0doUHU5clh6dmEydS8zdGNJKzczT2RPOTdyYi9lNTR6N3ZlOTg3M3ZxZjlBSUFQdk9BSFQvai93aHYrOEloUHZPSVh6L2pHTy83eGtJKzg1Q2RQK2NwYi92S1l6N3ptTjgvNXpudis4NkJmdkJGR1QvclNtLzcwcUUrOTZsZlArdGE3L3ZXd2o3M3NaMC83MnR2KzlyalBmZWtOd1B2ZSsvNzN3QSsrOElkUC9PSWIvL2pJVDc3eWw4Lzg1anYvK2RDUHZ2U25ULzNxVy8vNjJNKys5cmZQL2VQZjRQdmdENy80eDAvKzhwdi8vT2hQdi9yWHovNzJ1Ly85OEkrLy9PZFAvL3FISHdINHo3Lys5OC8vL3Z2Ly93QVlnQUk0Z0FSWWdBWjRnQWlZZ0FxNGdBellnQTc0Z0JBWWdSSTRnUlJZZ1JaNGdSZzRnQmV3Z1J6WWdSNzRnU0FZZ2lJNGdpUllnaVo0Z2lpWWdpcTRnaXpZZ2k3NGdqQVlnekk0Z3pSWWd6WjRnemlZLzRNNnVJTW1TQUkrK0lOQUdJUkNPSVJFV0lSR2VJUkltSVJLdUlSTTJJUk8rSVJRR0lWU09JVlVDSVFEY0lWWW1JVmF1SVZjMklWZStJVmdHSVppT0laa1dJWm1lSVpvbUlacXVJWnMySVp1K0lad0dJZHlPSWQwV0lkMmVJZGltQU42dUlkODJJZCsrSWVBR0lpQ09JaUVXSWlHZUlpSW1JaUt1SWlNMklpTytJaVF5SWNFTUltVVdJbVdlSW1ZbUltYXVJbWMySW1lK0ltZ0dJcWlPSXFrV0lxbWVJcW9tSXFxdUlxczJJcXUrSXF3R0l1eU9JdWVpQUsyZUl1NG1JdTZ1SXU4Mkl1KytJdkFHSXpDT0l6RVdJekdlSXpJbUl6S3VJek1pSXRhOEl6UUdJM1NPSTNVV0kzV2VJM1ltSTNhdUkzYzJJM2UrSTNnR0k3aU9QK081RmlPMGVnQzZKaU82cmlPN05pTzd2aU84QmlQOGppUDlGaVA5bmlQK0ppUCtyaVAvTmlQL3FpT05SQ1FBam1RQkZtUUJubVFDSm1RQ3JtUURObVFEdm1RRUJtUkVqbVJGRm1SRm5tUkE3a0ZHcm1SSE5tUkh2bVJJQm1TSWptU0pGbVNKbm1TS0ptU0tybVNMTm1TTHZtU01NbVJUekNUTkZtVE5ubVRPSm1UT3JtVFBObVRQdm1UUUJtVVFqbVVSRm1VUm5tVVNKbVVOUWtGVE5tVVR2bVVVQm1WVWptVlZGbVZWbm1WV0ptVldybVZYTm1WWHZtVllCbVdZdW1VR0ZDV1pubVdhSm1XYXJtV2JObVdidm1XY0JtWGNqbVhkRm1YZG5tWGVKbVhlcm1YZk5tWGZ2bVhnQm1ZZ2ptWWhGbVljTGtCaUptWWlybVlqTm4vbUk3NW1KQVptWkk1bVpSWm1aWjVtWmlabVpxNW1aelptWjc1bWFBWm1xSTVtcVJabXFaNW1xZzVtUm13bXF6Wm1xNzVtckFabTdJNW03UlptN1o1bTdpWm03cTVtN3pabTc3NW04QVpuTUk1bk1SWm5NWjVuTWlabk1xNW5MWTVBYzc1bk5BWm5kSTVuZFJabmRaNW5kaVpuZHE1bmR6Wm5kNzVuZUFabnVJNW51UlpudVo1bnVpWm51cTVudXpabnU2Wm5Sb1FuL0k1bi9SWm4vWjVuL2labi9xNW4velpuLzc1bndBYW9BSTZvQVJhb0FaNm9BaWFvQXE2b0F6YW9BNzZvQkFhb2Z6cEFCUmFvUlo2b1JpYW9ScTZvUnphb1I3Nm9TQWFvaUk2b2lSYW9pWjZvaWlhb2lxNm9pemFvaTc2b2pBYW96STZvelQ2b1Ixdy82TTRtcU02dXFNODJxTSsrcU5BR3FSQ09xUkVXcVJHZXFSSW1xUkt1cVJNMnFSTytxUlFHcVZTT3FWVVdxVldlcVZDV2dGYXVxVmMycVZlK3FWZ0dxWmlPcVprV3FabWVxWm9tcVpxdXFaczJxWnUrcVp3R3FkeU9xZDBXcWQyZXFkNG1xZDZXcVpOMEtkKytxZUFHcWlDT3FpRVdxaUdlcWlJbXFpS3VxaU0ycWlPK3FpUUdxbVNPcWwvK2dDV2VxbVltcW1hdXFtYzJxbWUrcW1nR3FxaU9xcWtXcXFtZXFxb21xcXF1cXFzMnFxdStxcXdHcXV5T3F1MFdxdTJHcXBVa0t1NnVxdTgycXUrK3F2QUdxekNPcXpFV3F6R2VxekltcXpLdXF6TTJxek8rcXk3V2dYU09xM1VXcTNXZXEzWW1xM2F1cTNjMnEzZStxM2dHdit1NGpxdTVGcXU1bnF1NkVxdEVMQ3U3TnF1N3ZxdThCcXY4anF2OUZxdjlucXYrSnF2K3Jxdi9OcXYvdnF2QUJ1d0FqdXdCRnV3Qm51d0NKdXdDcnV3OWdvQUR2dXdFQnV4RWp1eEZGdXhGbnV4R0p1eEdydXhITnV4SHZ1eElCdXlJanV5SkZ1eUpudXlLSnV5S3J1eUxOdXlMdnV5TUJ1ek1qdXpORnV6Tm51ek9KdXpPcnV6UE51elB2dXpRQnUwUWp1MFJGdTBSbnUwU0p1MFNydTBUTnUwVHZ1MFVCdTFVanUxVkZ1MVZudTFXSnUxV3J1MVhOdTFYdnUxWUJ1MllqdTJaRnUyWm51MmFKdTJhcnUyYk51MmJ2dTJjQnUzY2p1M2RGdTNkbnUzZUp1M2VydTNmTnUzZnZ1M2dCdTRnanU0aEZ1NGhudTRpSnU0aXJ2L3VJemJ1STc3dUpBYnVaSTd1WlJidVpaN3VaaWJ1WnE3dVp6YnVaNzd1YUFidXFJN3VxUmJ1cVo3dXFpYnVxcTd1cXpidXE3N3VyQWJ1N0k3dTdSYnU3Wjd1N2lidTdxN3U3emJ1Nzc3dThBYnZNSTd2TVJidk1aN3ZNaWJ2TXE3dk16YnZNNzd2TkFidmRJN3ZkUmJ2ZFo3dmRpYnZkcTd2ZHpidmQ3N3ZlQWJ2dUk3dnVSYnZ1Wjd2dWlidnVxN3Z1emJ2dTc3dnZBYnYvSTd2L1Jidi9aN3YvaWJ2L3E3di96YnYvNzd2d0Fjd0FJOHdBUmN3QVo4d0FpY3dBcTh3QXpjd0E3OHdCQWN3Ukk4d1JSY3dSWjh3Umljd1JxOHdSemN3Ujc4d1NBY3dpSTh3aVJjd2laOHdpaWN3aXE4d2l6Y3dpNzh3akFjd3pJOHd6UmNGY00yZk1NNG5NTTZ2TU04M01NKy9NTkFyTG1CQUFBNyc7CgloZWFkZXIoJ0NvbnRlbnQtdHlwZTogaW1hZ2UvZ2lmJyk7CgllY2hvIGJhc2U2NF9kZWNvZGUoJGRhdGEpOwoJZXhpdDsKfQoKJHBocF9vayA9IChmdW5jdGlvbl9leGlzdHMoJ3ZlcnNpb25fY29tcGFyZScpICYmIHZlcnNpb25fY29tcGFyZShwaHB2ZXJzaW9uKCksICc0LjMuMCcsICc+PScpKTsKJHhtbF9vayA9IGV4dGVuc2lvbl9sb2FkZWQoJ3htbCcpOwokcGNyZV9vayA9IGV4dGVuc2lvbl9sb2FkZWQoJ3BjcmUnKTsKJGN1cmxfb2sgPSBmdW5jdGlvbl9leGlzdHMoJ2N1cmxfZXhlYycpOwokemxpYl9vayA9IGV4dGVuc2lvbl9sb2FkZWQoJ3psaWInKTsKJG1ic3RyaW5nX29rID0gZXh0ZW5zaW9uX2xvYWRlZCgnbWJzdHJpbmcnKTsKJGljb252X29rID0gZXh0ZW5zaW9uX2xvYWRlZCgnaWNvbnYnKTsKCmhlYWRlcignQ29udGVudC10eXBlOiB0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgnKTsKCj8+PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIj4KCjxodG1sIGxhbmc9ImVuIj4KPGhlYWQ+Cjx0aXRsZT5TaW1wbGVQaWU6IFNlcnZlciBDb21wYXRpYmlsaXR5IFRlc3QgMS4xPC90aXRsZT4KCjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CmJvZHkgewoJZm9udDoxNHB4LzEuNGVtICJMdWNpZGEgR3JhbmRlIiwgVmVyZGFuYSwgQXJpYWwsIEhlbHZldGljYSwgQ2xlYW4sIFNhbnMsIHNhbnMtc2VyaWY7CglsZXR0ZXItc3BhY2luZzowcHg7Cgljb2xvcjojMzMzOwoJbWFyZ2luOjA7CglwYWRkaW5nOjA7CgliYWNrZ3JvdW5kOiNmZmYgdXJsKDw/cGhwIGVjaG8gcGF0aGluZm8oX19GSUxFX18sIFBBVEhJTkZPX0JBU0VOQU1FKTsgPz4/YmFja2dyb3VuZCkgcmVwZWF0LXggdG9wIGxlZnQ7Cn0KCmRpdiNzaXRlIHsKCXdpZHRoOjU1MHB4OwoJbWFyZ2luOjIwcHggYXV0byAwIGF1dG87Cn0KCmEgewoJY29sb3I6IzAwMDsKCXRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7CglwYWRkaW5nOjAgMXB4Owp9CgphOmhvdmVyIHsKCWNvbG9yOiNmZmY7CgliYWNrZ3JvdW5kLWNvbG9yOiMzMzM7Cgl0ZXh0LWRlY29yYXRpb246bm9uZTsKCXBhZGRpbmc6MCAxcHg7Cn0KCnAgewoJbWFyZ2luOjA7CglwYWRkaW5nOjVweCAwOwp9CgplbSB7Cglmb250LXN0eWxlOm5vcm1hbDsKCWJhY2tncm91bmQtY29sb3I6I2ZmYzsKfQoKdWwsIG9sIHsKCW1hcmdpbjoxMHB4IDAgMTBweCAyMHB4OwoJcGFkZGluZzowIDAgMCAxNXB4Owp9Cgp1bCBsaSwgb2wgbGkgewoJbWFyZ2luOjAgMCA3cHggMDsKCXBhZGRpbmc6MCAwIDAgM3B4Owp9CgpoMiB7Cglmb250LXNpemU6MThweDsKCXBhZGRpbmc6MDsKCW1hcmdpbjozMHB4IDAgMTBweCAwOwp9CgpoMyB7Cglmb250LXNpemU6MTZweDsKCXBhZGRpbmc6MDsKCW1hcmdpbjoyMHB4IDAgNXB4IDA7Cn0KCmg0IHsKCWZvbnQtc2l6ZToxNHB4OwoJcGFkZGluZzowOwoJbWFyZ2luOjE1cHggMCA1cHggMDsKfQoKY29kZSB7Cglmb250LXNpemU6MS4xZW07CgliYWNrZ3JvdW5kLWNvbG9yOiNmM2YzZmY7Cgljb2xvcjojMDAwOwp9CgplbSBzdHJvbmcgewogICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKfQoKdGFibGUjY2hhcnQgewoJYm9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlOwp9Cgp0YWJsZSNjaGFydCB0aCB7CgliYWNrZ3JvdW5kLWNvbG9yOiNlZWU7CglwYWRkaW5nOjJweCAzcHg7Cglib3JkZXI6MXB4IHNvbGlkICNmZmY7Cn0KCnRhYmxlI2NoYXJ0IHRkIHsKCXRleHQtYWxpZ246Y2VudGVyOwoJcGFkZGluZzoycHggM3B4OwoJYm9yZGVyOjFweCBzb2xpZCAjZWVlOwp9Cgp0YWJsZSNjaGFydCB0ci5lbmFibGVkIHRkIHsKCS8qIExlYXZlIHRoaXMgYWxvbmUgKi8KfQoKdGFibGUjY2hhcnQgdHIuZGlzYWJsZWQgdGQsIAp0YWJsZSNjaGFydCB0ci5kaXNhYmxlZCB0ZCBhIHsKCWNvbG9yOiM5OTk7Cglmb250LXN0eWxlOml0YWxpYzsKfQoKdGFibGUjY2hhcnQgdHIuZGlzYWJsZWQgdGQgYSB7Cgl0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lOwp9CgpkaXYuY2h1bmsgewoJbWFyZ2luOjIwcHggMCAwIDA7CglwYWRkaW5nOjAgMCAxMHB4IDA7Cglib3JkZXItYm90dG9tOjFweCBzb2xpZCAjY2NjOwp9CgouZm9vdG5vdGUsCi5mb290bm90ZSBhIHsKCWZvbnQ6MTBweC8xMnB4IHZlcmRhbmEsIHNhbnMtc2VyaWY7Cgljb2xvcjojYWFhOwp9CgouZm9vdG5vdGUgZW0gewoJYmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDsKCWZvbnQtc3R5bGU6aXRhbGljOwp9Cjwvc3R5bGU+Cgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci8vIFNsZWlnaHQgLSBBbHBoYSB0cmFuc3BhcmVuY3kgUE5HJ3MgaW4gSW50ZXJuZXQgRXhwbG9yZXIgNS41LzYuMAovLyAoYykgMjAwMSwgQWFyb24gQm9vZG1hbjsgaHR0cDovL3d3dy55b3VuZ3B1cC5uZXQKCmlmIChuYXZpZ2F0b3IucGxhdGZvcm0gPT0gIldpbjMyIiAmJiBuYXZpZ2F0b3IuYXBwTmFtZSA9PSAiTWljcm9zb2Z0IEludGVybmV0IEV4cGxvcmVyIiAmJiB3aW5kb3cuYXR0YWNoRXZlbnQpIHsKCWRvY3VtZW50LndyaXRlbG4oJzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+aW1nLCBpbnB1dC5pbWFnZSB7IHZpc2liaWxpdHk6aGlkZGVuOyB9IDwvc3R5bGU+Jyk7Cgl3aW5kb3cuYXR0YWNoRXZlbnQoIm9ubG9hZCIsIGZuTG9hZFBuZ3MpOwp9CgpmdW5jdGlvbiBmbkxvYWRQbmdzKCkgewoJdmFyIHJzbHQgPSBuYXZpZ2F0b3IuYXBwVmVyc2lvbi5tYXRjaCgvTVNJRSAoXGQrXC5cZCspLywgJycpOwoJdmFyIGl0c0FsbEdvb2QgPSAocnNsdCAhPSBudWxsICYmIE51bWJlcihyc2x0WzFdKSA+PSA1LjUpOwoKCWZvciAodmFyIGkgPSBkb2N1bWVudC5pbWFnZXMubGVuZ3RoIC0gMSwgaW1nID0gbnVsbDsgKGltZyA9IGRvY3VtZW50LmltYWdlc1tpXSk7IGktLSkgewoJCWlmIChpdHNBbGxHb29kICYmIGltZy5zcmMubWF0Y2goL1xwbmckL2kpICE9IG51bGwpIHsKCQkJdmFyIHNyYyA9IGltZy5zcmM7CgkJCXZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJESVYiKTsKCQkJZGl2LnN0eWxlLmZpbHRlciA9ICJwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGFJbWFnZUxvYWRlcihzcmM9JyIgKyBzcmMgKyAiJywgc2l6aW5nPSdzY2FsZScpIjsKCQkJZGl2LnN0eWxlLndpZHRoID0gaW1nLndpZHRoICsgInB4IjsKCQkJZGl2LnN0eWxlLmhlaWdodCA9IGltZy5oZWlnaHQgKyAicHgiOwoJCQlpbWcucmVwbGFjZU5vZGUoZGl2KTsKCQl9CgkJaW1nLnN0eWxlLnZpc2liaWxpdHkgPSAidmlzaWJsZSI7Cgl9Cn0KPC9zY3JpcHQ+Cgo8L2hlYWQ+Cgo8Ym9keT4KCjxkaXYgaWQ9InNpdGUiPgoJPGRpdiBpZD0iY29udGVudCI+CgoJCTxkaXYgY2xhc3M9ImNodW5rIj4KCQkJPGgyIHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlcjsiPjxpbWcgc3JjPSI8P3BocCBlY2hvIHBhdGhpbmZvKF9fRklMRV9fLCBQQVRISU5GT19CQVNFTkFNRSk7ID8+P2xvZ29wbmciIGFsdD0iU2ltcGxlUGllIENvbXBhdGliaWxpdHkgVGVzdCIgdGl0bGU9IlNpbXBsZVBpZSBDb21wYXRpYmlsaXR5IFRlc3QiIC8+PC9oMj4KCQkJPHRhYmxlIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgYm9yZGVyPSIwIiB3aWR0aD0iMTAwJSIgaWQ9ImNoYXJ0Ij4KCQkJCTx0aGVhZD4KCQkJCQk8dHI+CgkJCQkJCTx0aD5UZXN0PC90aD4KCQkJCQkJPHRoPlNob3VsZCBCZTwvdGg+CgkJCQkJCTx0aD5XaGF0IFlvdSBIYXZlPC90aD4KCQkJCQk8L3RyPgoJCQkJPC90aGVhZD4KCQkJCTx0Ym9keT4KCQkJCQk8dHIgY2xhc3M9Ijw/cGhwIGVjaG8gKCRwaHBfb2spID8gJ2VuYWJsZWQnIDogJ2Rpc2FibGVkJzsgPz4iPgoJCQkJCQk8dGQ+UEhQJnN1cDE7PC90ZD4KCQkJCQkJPHRkPjQuMy4wIG9yIGhpZ2hlcjwvdGQ+CgkJCQkJCTx0ZD48P3BocCBlY2hvIHBocHZlcnNpb24oKTsgPz48L3RkPgoJCQkJCTwvdHI+CgkJCQkJPHRyIGNsYXNzPSI8P3BocCBlY2hvICgkeG1sX29rKSA/ICdlbmFibGVkJyA6ICdkaXNhYmxlZCc7ID8+Ij4KCQkJCQkJPHRkPjxhIGhyZWY9Imh0dHA6Ly9waHAubmV0L3htbCI+WE1MPC9hPjwvdGQ+CgkJCQkJCTx0ZD5FbmFibGVkPC90ZD4KCQkJCQkJPHRkPjw/cGhwIGVjaG8gKCR4bWxfb2spID8gJ0VuYWJsZWQnIDogJ0Rpc2FibGVkJzsgPz48L3RkPgoJCQkJCTwvdHI+CgkJCQkJPHRyIGNsYXNzPSI8P3BocCBlY2hvICgkcGNyZV9vaykgPyAnZW5hYmxlZCcgOiAnZGlzYWJsZWQnOyA/PiI+CgkJCQkJCTx0ZD48YSBocmVmPSJodHRwOi8vcGhwLm5ldC9wY3JlIj5QQ1JFPC9hPiZzdXAyOzwvdGQ+CgkJCQkJCTx0ZD5FbmFibGVkPC90ZD4KCQkJCQkJPHRkPjw/cGhwIGVjaG8gKCRwY3JlX29rKSA/ICdFbmFibGVkJyA6ICdEaXNhYmxlZCc7ID8+PC90ZD4KCQkJCQk8L3RyPgoJCQkJCTx0ciBjbGFzcz0iPD9waHAgZWNobyAoJGN1cmxfb2spID8gJ2VuYWJsZWQnIDogJ2Rpc2FibGVkJzsgPz4iPgoJCQkJCQk8dGQ+PGEgaHJlZj0iaHR0cDovL3BocC5uZXQvY3VybCI+Y1VSTDwvYT48L3RkPgoJCQkJCQk8dGQ+RW5hYmxlZDwvdGQ+CgkJCQkJCTx0ZD48P3BocCBlY2hvIChleHRlbnNpb25fbG9hZGVkKCdjdXJsJykpID8gJ0VuYWJsZWQnIDogJ0Rpc2FibGVkJzsgPz48L3RkPgoJCQkJCTwvdHI+CgkJCQkJPHRyIGNsYXNzPSI8P3BocCBlY2hvICgkemxpYl9vaykgPyAnZW5hYmxlZCcgOiAnZGlzYWJsZWQnOyA/PiI+CgkJCQkJCTx0ZD48YSBocmVmPSJodHRwOi8vcGhwLm5ldC96bGliIj5abGliPC9hPjwvdGQ+CgkJCQkJCTx0ZD5FbmFibGVkPC90ZD4KCQkJCQkJPHRkPjw/cGhwIGVjaG8gKCR6bGliX29rKSA/ICdFbmFibGVkJyA6ICdEaXNhYmxlZCc7ID8+PC90ZD4KCQkJCQk8L3RyPgoJCQkJCTx0ciBjbGFzcz0iPD9waHAgZWNobyAoJG1ic3RyaW5nX29rKSA/ICdlbmFibGVkJyA6ICdkaXNhYmxlZCc7ID8+Ij4KCQkJCQkJPHRkPjxhIGhyZWY9Imh0dHA6Ly9waHAubmV0L21ic3RyaW5nIj5tYnN0cmluZzwvYT48L3RkPgoJCQkJCQk8dGQ+RW5hYmxlZDwvdGQ+CgkJCQkJCTx0ZD48P3BocCBlY2hvICgkbWJzdHJpbmdfb2spID8gJ0VuYWJsZWQnIDogJ0Rpc2FibGVkJzsgPz48L3RkPgoJCQkJCTwvdHI+CgkJCQkJPHRyIGNsYXNzPSI8P3BocCBlY2hvICgkaWNvbnZfb2spID8gJ2VuYWJsZWQnIDogJ2Rpc2FibGVkJzsgPz4iPgoJCQkJCQk8dGQ+PGEgaHJlZj0iaHR0cDovL3BocC5uZXQvaWNvbnYiPmljb252PC9hPjwvdGQ+CgkJCQkJCTx0ZD5FbmFibGVkPC90ZD4KCQkJCQkJPHRkPjw/cGhwIGVjaG8gKCRpY29udl9vaykgPyAnRW5hYmxlZCcgOiAnRGlzYWJsZWQnOyA/PjwvdGQ+CgkJCQkJPC90cj4KCQkJCTwvdGJvZHk+CgkJCTwvdGFibGU+CgkJPC9kaXY+CgoJCTxkaXYgY2xhc3M9ImNodW5rIj4KCQkJPGgzPldoYXQgZG9lcyB0aGlzIG1lYW4/PC9oMz4KCQkJPG9sPgoJCQkJPD9waHAgaWYgKCRwaHBfb2sgJiYgJHhtbF9vayAmJiAkcGNyZV9vayAmJiAkbWJzdHJpbmdfb2sgJiYgJGljb252X29rICYmICRjdXJsX29rICYmICR6bGliX29rKTogPz4KCQkJCTxsaT48ZW0+WW91IGhhdmUgZXZlcnl0aGluZyB5b3UgbmVlZCB0byBydW4gU2ltcGxlUGllIHByb3Blcmx5ISAgQ29uZ3JhdHVsYXRpb25zITwvZW0+PC9saT4KCQkJCTw/cGhwIGVsc2U6ID8+CgkJCQkJPD9waHAgaWYgKCRwaHBfb2spOiA/PgoJCQkJCQk8bGk+PHN0cm9uZz5QSFA6PC9zdHJvbmc+IFlvdSBhcmUgcnVubmluZyBhIHN1cHBvcnRlZCB2ZXJzaW9uIG9mIFBIUC4gIDxlbT5ObyBwcm9ibGVtcyBoZXJlLjwvZW0+PC9saT4KCQkJCQkJPD9waHAgaWYgKCR4bWxfb2spOiA/PgoJCQkJCQkJPGxpPjxzdHJvbmc+WE1MOjwvc3Ryb25nPiBZb3UgaGF2ZSBYTUwgc3VwcG9ydCBpbnN0YWxsZWQuICA8ZW0+Tm8gcHJvYmxlbXMgaGVyZS48L2VtPjwvbGk+CgkJCQkJCQk8P3BocCBpZiAoJHBjcmVfb2spOiA/PgoJCQkJCQkJCTxsaT48c3Ryb25nPlBDUkU6PC9zdHJvbmc+IFlvdSBoYXZlIFBDUkUgc3VwcG9ydCBpbnN0YWxsZWQuIDxlbT5ObyBwcm9ibGVtcyBoZXJlLjwvZW0+PC9saT4KCQkJCQkJCQk8P3BocCBpZiAoJGN1cmxfb2spOiA/PgoJCQkJCQkJCQk8bGk+PHN0cm9uZz5jVVJMOjwvc3Ryb25nPiBZb3UgaGF2ZSA8Y29kZT5jVVJMPC9jb2RlPiBzdXBwb3J0IGluc3RhbGxlZC4gIDxlbT5ObyBwcm9ibGVtcyBoZXJlLjwvZW0+PC9saT4KCQkJCQkJCQk8P3BocCBlbHNlOiA/PgoJCQkJCQkJCQk8bGk+PHN0cm9uZz5jVVJMOjwvc3Ryb25nPiBUaGUgPGNvZGU+Y1VSTDwvY29kZT4gZXh0ZW5zaW9uIGlzIG5vdCBhdmFpbGFibGUuICBTaW1wbGVQaWUgd2lsbCB1c2UgPGNvZGU+ZnNvY2tvcGVuKCk8L2NvZGU+IGluc3RlYWQuPC9saT4KCQkJCQkJCQk8P3BocCBlbmRpZjsgPz4KCQoJCQkJCQkJCTw/cGhwIGlmICgkemxpYl9vayk6ID8+CgkJCQkJCQkJCTxsaT48c3Ryb25nPlpsaWI6PC9zdHJvbmc+IFlvdSBoYXZlIDxjb2RlPlpsaWI8L2NvZGU+IGVuYWJsZWQuICBUaGlzIGFsbG93cyBTaW1wbGVQaWUgdG8gc3VwcG9ydCBHWklQLWVuY29kZWQgZmVlZHMuICA8ZW0+Tm8gcHJvYmxlbXMgaGVyZS48L2VtPjwvbGk+CgkJCQkJCQkJPD9waHAgZWxzZTogPz4KCQkJCQkJCQkJPGxpPjxzdHJvbmc+WmxpYjo8L3N0cm9uZz4gVGhlIDxjb2RlPlpsaWI8L2NvZGU+IGV4dGVuc2lvbiBpcyBub3QgYXZhaWxhYmxlLiAgU2ltcGxlUGllIHdpbGwgaWdub3JlIGFueSBHWklQLWVuY29kaW5nLCBhbmQgaW5zdGVhZCBoYW5kbGUgZmVlZHMgYXMgdW5jb21wcmVzc2VkIHRleHQuPC9saT4KCQkJCQkJCQk8P3BocCBlbmRpZjsgPz4KCQoJCQkJCQkJCTw/cGhwIGlmICgkbWJzdHJpbmdfb2sgJiYgJGljb252X29rKTogPz4KCQkJCQkJCQkJPGxpPjxzdHJvbmc+bWJzdHJpbmcgYW5kIGljb252Ojwvc3Ryb25nPiBZb3UgaGF2ZSBib3RoIDxjb2RlPm1ic3RyaW5nPC9jb2RlPiBhbmQgPGNvZGU+aWNvbnY8L2NvZGU+IGluc3RhbGxlZCEgIFRoaXMgd2lsbCBhbGxvdyBTaW1wbGVQaWUgdG8gaGFuZGxlIHRoZSBncmVhdGVzdCBudW1iZXIgb2YgbGFuZ3VhZ2VzLiAgQ2hlY2sgdGhlIDxhIGhyZWY9Imh0dHA6Ly9zaW1wbGVwaWUub3JnL3dpa2kvZmFxL3N1cHBvcnRlZF9jaGFyYWN0ZXJfZW5jb2RpbmdzIj5TdXBwb3J0ZWQgQ2hhcmFjdGVyIEVuY29kaW5nczwvYT4gY2hhcnQgdG8gc2VlIHdoYXQncyBzdXBwb3J0ZWQgb24geW91ciB3ZWJob3N0LjwvbGk+CgkJCQkJCQkJPD9waHAgZWxzZWlmICgkbWJzdHJpbmdfb2spOiA/PgoJCQkJCQkJCQk8bGk+PHN0cm9uZz5tYnN0cmluZzo8L3N0cm9uZz4gPGNvZGU+bWJzdHJpbmc8L2NvZGU+IGlzIGluc3RhbGxlZCwgYnV0IDxjb2RlPmljb252PC9jb2RlPiBpcyBub3QuICBDaGVjayB0aGUgPGEgaHJlZj0iaHR0cDovL3NpbXBsZXBpZS5vcmcvd2lraS9mYXEvc3VwcG9ydGVkX2NoYXJhY3Rlcl9lbmNvZGluZ3MiPlN1cHBvcnRlZCBDaGFyYWN0ZXIgRW5jb2RpbmdzPC9hPiBjaGFydCB0byBzZWUgd2hhdCdzIHN1cHBvcnRlZCBvbiB5b3VyIHdlYmhvc3QuPC9saT4KCQkJCQkJCQk8P3BocCBlbHNlaWYgKCRpY29udl9vayk6ID8+CgkJCQkJCQkJCTxsaT48c3Ryb25nPmljb252Ojwvc3Ryb25nPiA8Y29kZT5pY29udjwvY29kZT4gaXMgaW5zdGFsbGVkLCBidXQgPGNvZGU+bWJzdHJpbmc8L2NvZGU+IGlzIG5vdC4gIENoZWNrIHRoZSA8YSBocmVmPSJodHRwOi8vc2ltcGxlcGllLm9yZy93aWtpL2ZhcS9zdXBwb3J0ZWRfY2hhcmFjdGVyX2VuY29kaW5ncyI+U3VwcG9ydGVkIENoYXJhY3RlciBFbmNvZGluZ3M8L2E+IGNoYXJ0IHRvIHNlZSB3aGF0J3Mgc3VwcG9ydGVkIG9uIHlvdXIgd2ViaG9zdC48L2xpPgoJCQkJCQkJCTw/cGhwIGVsc2U6ID8+CgkJCQkJCQkJCTxsaT48c3Ryb25nPm1ic3RyaW5nIGFuZCBpY29udjo8L3N0cm9uZz4gPGVtPllvdSBkbyBub3QgaGF2ZSBlaXRoZXIgb2YgdGhlIGV4dGVuc2lvbnMgaW5zdGFsbGVkLjwvZW0+IFRoaXMgd2lsbCBzaWduaWZpY2FudGx5IGltcGFpciB5b3VyIGFiaWxpdHkgdG8gcmVhZCBub24tRW5nbGlzaCBmZWVkcywgYXMgd2VsbCBhcyBldmVuIHNvbWUgRW5nbGlzaCBvbmVzLiAgQ2hlY2sgdGhlIDxhIGhyZWY9Imh0dHA6Ly9zaW1wbGVwaWUub3JnL3dpa2kvZmFxL3N1cHBvcnRlZF9jaGFyYWN0ZXJfZW5jb2RpbmdzIj5TdXBwb3J0ZWQgQ2hhcmFjdGVyIEVuY29kaW5nczwvYT4gY2hhcnQgdG8gc2VlIHdoYXQncyBzdXBwb3J0ZWQgb24geW91ciB3ZWJob3N0LjwvbGk+CgkJCQkJCQkJPD9waHAgZW5kaWY7ID8+CgkJCQkJCQk8P3BocCBlbHNlOiA/PgoJCQkJCQkJCTxsaT48c3Ryb25nPlBDUkU6PC9zdHJvbmc+IFlvdXIgUEhQIGluc3RhbGxhdGlvbiBkb2Vzbid0IHN1cHBvcnQgUGVybC1Db21wYXRpYmxlIFJlZ3VsYXIgRXhwcmVzc2lvbnMuICA8ZW0+U2ltcGxlUGllIGlzIGEgbm8tZ28gYXQgdGhlIG1vbWVudC48L2VtPjwvbGk+CgkJCQkJCQk8P3BocCBlbmRpZjsgPz4KCQkJCQkJPD9waHAgZWxzZTogPz4KCQkJCQkJCTxsaT48c3Ryb25nPlhNTDo8L3N0cm9uZz4gWW91ciBQSFAgaW5zdGFsbGF0aW9uIGRvZXNuJ3Qgc3VwcG9ydCBYTUwgcGFyc2luZy4gIDxlbT5TaW1wbGVQaWUgaXMgYSBuby1nbyBhdCB0aGUgbW9tZW50LjwvZW0+PC9saT4KCQkJCQkJPD9waHAgZW5kaWY7ID8+CgkJCQkJPD9waHAgZWxzZTogPz4KCQkJCQkJPGxpPjxzdHJvbmc+UEhQOjwvc3Ryb25nPiBZb3UgYXJlIHJ1bm5pbmcgYW4gdW5zdXBwb3J0ZWQgdmVyc2lvbiBvZiBQSFAuICA8ZW0+U2ltcGxlUGllIGlzIGEgbm8tZ28gYXQgdGhlIG1vbWVudC48L2VtPjwvbGk+CgkJCQkJPD9waHAgZW5kaWY7ID8+CgkJCQk8P3BocCBlbmRpZjsgPz4KCQkJPC9vbD4KCQk8L2Rpdj4KCgkJPGRpdiBjbGFzcz0iY2h1bmsiPgoJCQk8P3BocCBpZiAoJHBocF9vayAmJiAkeG1sX29rICYmICRwY3JlX29rICYmICRtYnN0cmluZ19vayAmJiAkaWNvbnZfb2spIHsgPz4KCQkJCTxoMz5Cb3R0b20gTGluZTogWWVzLCB5b3UgY2FuITwvaDM+CgkJCQk8cD48ZW0+WW91ciB3ZWJob3N0IGhhcyBpdHMgYWN0IHRvZ2V0aGVyITwvZW0+PC9wPgoJCQkJPHA+WW91IGNhbiBkb3dubG9hZCB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgU2ltcGxlUGllIGZyb20gPGEgaHJlZj0iaHR0cDovL3NpbXBsZXBpZS5vcmcvZG93bmxvYWRzLyI+U2ltcGxlUGllLm9yZzwvYT4gYW5kIGluc3RhbGwgaXQgYnkgPGEgaHJlZj0iaHR0cDovL3NpbXBsZXBpZS5vcmcvd2lraS9zZXR1cC9zdGFydCI+Zm9sbG93aW5nIHRoZSBpbnN0cnVjdGlvbnM8L2E+LiAgWW91IGNhbiBmaW5kIGV4YW1wbGUgdXNlcyB3aXRoIDxhIGhyZWY9Imh0dHA6Ly9zaW1wbGVwaWUub3JnL2lkZWFzLyI+U2ltcGxlUGllIElkZWFzPC9hPi48L3A+CgkJCQk8cD5UYWtlIHRoZSB0aW1lIHRvIHJlYWQgPGEgaHJlZj0iaHR0cDovL3NpbXBsZXBpZS5vcmcvd2lraS9zZXR1cC9zdGFydCI+UmVxdWlyZW1lbnRzIGFuZCBHZXR0aW5nIFN0YXJ0ZWQ8L2E+IHRvIG1ha2Ugc3VyZSB5b3UncmUgcHJlcGFyZWQgdG8gdXNlIFNpbXBsZVBpZS4gTm8gc2VyaW91c2x5LCByZWFkIHRoZW0uPC9wPgoJCQkJPHAgY2xhc3M9ImZvb3Rub3RlIj48ZW0+PHN0cm9uZz5Ob3RlPC9zdHJvbmc+PC9lbT46IFBhc3NpbmcgdGhpcyB0ZXN0IGRvZXMgbm90IGd1YXJhbnRlZSB0aGF0IFNpbXBsZVBpZSB3aWxsIHJ1biBvbiB5b3VyIHdlYmhvc3QgJm1kYXNoOyBpdCBvbmx5IGVuc3VyZXMgdGhhdCB0aGUgYmFzaWMgcmVxdWlyZW1lbnRzIGhhdmUgYmVlbiBhZGRyZXNzZWQuPC9wPgoJCQk8P3BocCB9IGVsc2UgaWYgKCRwaHBfb2sgJiYgJHhtbF9vayAmJiAkcGNyZV9vaykgeyA/PgoJCQkJPGgzPkJvdHRvbSBMaW5lOiBZZXMsIHlvdSBjYW4hPC9oMz4KCQkJCTxwPjxlbT5Gb3IgbW9zdCBmZWVkcywgaXQnbGwgcnVuIHdpdGggbm8gcHJvYmxlbXMuPC9lbT4gIFRoZXJlIGFyZSA8YSBocmVmPSJodHRwOi8vc2ltcGxlcGllLm9yZy93aWtpL2ZhcS9zdXBwb3J0ZWRfY2hhcmFjdGVyX2VuY29kaW5ncyI+Y2VydGFpbiBsYW5ndWFnZXM8L2E+IHRoYXQgeW91IG1pZ2h0IGhhdmUgYSBoYXJkIHRpbWUgd2l0aCB0aG91Z2guPC9wPgoJCQkJPHA+WW91IGNhbiBkb3dubG9hZCB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgU2ltcGxlUGllIGZyb20gPGEgaHJlZj0iaHR0cDovL3NpbXBsZXBpZS5vcmcvZG93bmxvYWRzLyI+U2ltcGxlUGllLm9yZzwvYT4gYW5kIGluc3RhbGwgaXQgYnkgPGEgaHJlZj0iaHR0cDovL3NpbXBsZXBpZS5vcmcvd2lraS9zZXR1cC9zdGFydCI+Zm9sbG93aW5nIHRoZSBpbnN0cnVjdGlvbnM8L2E+LiAgWW91IGNhbiBmaW5kIGV4YW1wbGUgdXNlcyB3aXRoIDxhIGhyZWY9Imh0dHA6Ly9zaW1wbGVwaWUub3JnL2lkZWFzLyI+U2ltcGxlUGllIElkZWFzPC9hPi48L3A+CgkJCQk8cD5UYWtlIHRoZSB0aW1lIHRvIHJlYWQgPGEgaHJlZj0iaHR0cDovL3NpbXBsZXBpZS5vcmcvd2lraS9zZXR1cC9zdGFydCI+UmVxdWlyZW1lbnRzIGFuZCBHZXR0aW5nIFN0YXJ0ZWQ8L2E+IHRvIG1ha2Ugc3VyZSB5b3UncmUgcHJlcGFyZWQgdG8gdXNlIFNpbXBsZVBpZS4gTm8gc2VyaW91c2x5LCByZWFkIHRoZW0uPC9wPgoJCQkJPHAgY2xhc3M9ImZvb3Rub3RlIj48ZW0+PHN0cm9uZz5Ob3RlPC9zdHJvbmc+PC9lbT46IFBhc3NpbmcgdGhpcyB0ZXN0IGRvZXMgbm90IGd1YXJhbnRlZSB0aGF0IFNpbXBsZVBpZSB3aWxsIHJ1biBvbiB5b3VyIHdlYmhvc3QgJm1kYXNoOyBpdCBvbmx5IGVuc3VyZXMgdGhhdCB0aGUgYmFzaWMgcmVxdWlyZW1lbnRzIGhhdmUgYmVlbiBhZGRyZXNzZWQuPC9wPgoJCQk8P3BocCB9IGVsc2UgeyA/PgoJCQkJPGgzPkJvdHRvbSBMaW5lOiBXZSdyZSBzb3JyeeKApjwvaDM+CgkJCQk8cD48ZW0+WW91ciB3ZWJob3N0IGRvZXMgbm90IHN1cHBvcnQgdGhlIG1pbmltdW0gcmVxdWlyZW1lbnRzIGZvciBTaW1wbGVQaWUuPC9lbT4gIEl0IG1heSBiZSBhIGdvb2QgaWRlYSB0byBjb250YWN0IHlvdXIgd2ViaG9zdCwgYW5kIGFzayB0aGVtIHRvIGluc3RhbGwgYSBtb3JlIHJlY2VudCB2ZXJzaW9uIG9mIFBIUCBhcyB3ZWxsIGFzIHRoZSA8Y29kZT54bWw8L2NvZGU+LCA8Y29kZT5tYnN0cmluZzwvY29kZT4sIDxjb2RlPmljb252PC9jb2RlPiwgPGNvZGU+Y3VybDwvY29kZT4sIGFuZCA8Y29kZT56bGliPC9jb2RlPiBleHRlbnNpb25zLjwvcD4KCQkJPD9waHAgfSA/PgoJCTwvZGl2PgoKCQk8ZGl2IGNsYXNzPSJjaHVuayI+CgkJCTxwIGNsYXNzPSJmb290bm90ZSI+JnN1cDE7ICZtZGFzaDsgU2ltcGxlUGllIDIgd2lsbCBub3Qgc3VwcG9ydCBQSFAgNC54LiBUaGUgY29yZSBQSFAgdGVhbSBoYXMgZGlzY29udGludWVkIFBIUCA0LnggcGF0Y2hlcyBhbmQgc3VwcG9ydC4gPGEgaHJlZj0iaHR0cDovL3NpbXBsZXBpZS5vcmcvYmxvZy8yMDA3LzA3LzEzL3NpbXBsZXBpZS1pcy1nb2luZy1waHA1LW9ubHkvIj5SZWFkIHRoZSBhbm5vdW5jZW1lbnQuPC9hPjwvcD4KCQkJPHAgY2xhc3M9ImZvb3Rub3RlIj4mc3VwMjsgJm1kYXNoOyBTb21lIHJlY2VudCB2ZXJzaW9ucyBvZiB0aGUgUENSRSAoUEVSTC1Db21wYXRpYmxlIFJlZ3VsYXIgRXhwcmVzc2lvbikgZW5naW5lIGNvbXBpbGVkIGludG8gUEhQIGhhdmUgYmVlbiBidWdneSwgYW5kIGFyZSB0aGUgc291cmNlIG9mIFBIUCBzZWdtZW50YXRpb24gZmF1bHRzIChlLmcuIGNyYXNoZXMpIHdoaWNoIGNhdXNlIHJhbmRvbSB0aGluZ3MgbGlrZSBibGFuaywgd2hpdGUgc2NyZWVucy4gQ2hlY2sgdGhlIDxhIGhyZWY9Imh0dHA6Ly9zaW1wbGVwaWUub3JnL3N1cHBvcnQvIj5TdXBwb3J0IEZvcnVtczwvYT4gZm9yIHRoZSBsYXRlc3QgaW5mb3JtYXRpb24gb24gcGF0Y2hlcyBhbmQgb25nb2luZyBmaXhlcy48L3A+CgkJPC9kaXY+CgoJPC9kaXY+Cgo8L2Rpdj4KCjwvYm9keT4KPC9odG1sPg==]]></data>
	</file>
	<file>
	  <filename>/libs/DEV/1.1.3/create.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCnJlcXVpcmVfb25jZSAnc2ltcGxlcGllLmluYyc7CgpmdW5jdGlvbiBub3JtYWxpemVfY2hhcmFjdGVyX3NldCgkY2hhcnNldCkKewoJcmV0dXJuIHN0cnRvbG93ZXIocHJlZ19yZXBsYWNlKCcvW1x4MDktXHgwRFx4MjAtXHgyRlx4M0EtXHg0MFx4NUItXHg2MFx4N0ItXHg3RV0vJywgJycsICRjaGFyc2V0KSk7Cn0KCmZ1bmN0aW9uIGJ1aWxkX2NoYXJhY3Rlcl9zZXRfbGlzdCgpCnsKCSRmaWxlID0gbmV3IFNpbXBsZVBpZV9GaWxlKCdodHRwOi8vd3d3LmlhbmEub3JnL2Fzc2lnbm1lbnRzL2NoYXJhY3Rlci1zZXRzJyk7CglpZiAoISRmaWxlLT5zdWNjZXNzICYmICEoJGZpbGUtPm1ldGhvZCAmIFNJTVBMRVBJRV9GSUxFX1NPVVJDRV9SRU1PVEUgPT09IDAgfHwgKCRmaWxlLT5zdGF0dXNfY29kZSA9PT0gMjAwIHx8ICRmaWxlLT5zdGF0dXNfY29kZSA+IDIwNiAmJiAkZmlsZS0+c3RhdHVzX2NvZGUgPCAzMDApKSkKCXsKCQlyZXR1cm4gZmFsc2U7Cgl9CgllbHNlCgl7CgkJJGRhdGEgPSBleHBsb2RlKCJcbiIsICRmaWxlLT5ib2R5KTsKCQl1bnNldCgkZmlsZSk7CgkJCgkJZm9yZWFjaCAoJGRhdGEgYXMgJGxpbmUpCgkJewoJCQkvLyBOZXcgY2hhcmFjdGVyIHNldAoJCQlpZiAoc3Vic3RyKCRsaW5lLCAwLCA1KSA9PT0gJ05hbWU6JykKCQkJewoJCQkJLy8gSWYgd2UgYWxyZWFkeSBoYXZlIG9uZSwgcHVzaCBpdCBvbiB0byB0aGUgYXJyYXkKCQkJCWlmIChpc3NldCgkYWxpYXNlcykpCgkJCQl7CgkJCQkJbmF0Y2FzZXNvcnQoJGFsaWFzZXMpOwoJCQkJCWZvciAoJGkgPSAwLCAkY291bnQgPSBjb3VudCgkYWxpYXNlcyk7ICRpIDwgJGNvdW50OyAkaSsrKQoJCQkJCXsKCQkJCQkJJGFsaWFzZXNbJGldID0gbm9ybWFsaXplX2NoYXJhY3Rlcl9zZXQoJGFsaWFzZXNbJGldKTsKCQkJCQl9CgkJCQkJJGNoYXJzZXRzWyRwcmVmZXJyZWRdID0gJGFsaWFzZXM7CgkJCQl9CgkJCQkKCQkJCSRzdGFydCA9IDUgKyBzdHJzcG4oJGxpbmUsICJceDA5XHgwQVx4MEJceENceDBEXHgyMCIsIDUpOwoJCQkJJGNoYXJzID0gc3RyY3NwbigkbGluZSwgIlx4MDlceDBBXHgwQlx4Q1x4MERceDIwIiwgJHN0YXJ0KTsKCQkJCSRhbGlhc2VzID0gYXJyYXkoc3Vic3RyKCRsaW5lLCAkc3RhcnQsICRjaGFycykpOwoJCQkJJHByZWZlcnJlZCA9IGVuZCgkYWxpYXNlcyk7CgkJCX0KCQkJLy8gQW5vdGhlciBhbGlhcwoJCQllbHNlaWYoc3Vic3RyKCRsaW5lLCAwLCA2KSA9PT0gJ0FsaWFzOicpCgkJCXsKCQkJCSRzdGFydCA9IDcgKyBzdHJzcG4oJGxpbmUsICJceDA5XHgwQVx4MEJceENceDBEXHgyMCIsIDcpOwoJCQkJJGNoYXJzID0gc3RyY3NwbigkbGluZSwgIlx4MDlceDBBXHgwQlx4Q1x4MERceDIwIiwgJHN0YXJ0KTsKCQkJCSRhbGlhc2VzW10gPSBzdWJzdHIoJGxpbmUsICRzdGFydCwgJGNoYXJzKTsKCQkJCQoJCQkJaWYgKGVuZCgkYWxpYXNlcykgPT09ICdOb25lJykKCQkJCXsKCQkJCQlhcnJheV9wb3AoJGFsaWFzZXMpOwoJCQkJfQoJCQkJZWxzZWlmIChzdWJzdHIoJGxpbmUsIDcgKyAkY2hhcnMgKyAxLCAyMSkgPT09ICcocHJlZmVycmVkIE1JTUUgbmFtZSknKQoJCQkJewoJCQkJCSRwcmVmZXJyZWQgPSBlbmQoJGFsaWFzZXMpOwoJCQkJfQoJCQl9CgkJfQoJCQoJCS8vIENvbXBhdGliaWxpdHkgcmVwbGFjZW1lbnRzCgkJJGNvbXBhdCA9IGFycmF5KAoJCQknRVVDLUtSJyA9PiAnV2luZG93cy05NDknLAoJCQknR0IyMzEyJyA9PiAnR0JLJywKCQkJJ0dCXzIzMTItODAnID0+ICdHQksnLAoJCQknSVNPLTg4NTktMScgPT4gJ1dpbmRvd3MtMTI1MicsCgkJCSdJU08tODg1OS05JyA9PiAnV2luZG93cy0xMjU0JywKCQkJJ0lTTy04ODU5LTExJyA9PiAnV2luZG93cy04NzQnLAoJCQknS1NfQ181NjAxLTE5ODcnID0+ICdXaW5kb3dzLTk0OScsCgkJCSdUSVMtNjIwJyA9PiAnV2luZG93cy04NzQnLAoJCQkneC14LWJpZzUnID0+ICdCaWc1JywKCQkpOwoJCQoJCWZvcmVhY2ggKCRjb21wYXQgYXMgJHJlYWwgPT4gJHJlcGxhY2UpCgkJewoJCQlpZiAoaXNzZXQoJGNoYXJzZXRzWyRyZWFsXSkgJiYgaXNzZXQoJGNoYXJzZXRzWyRyZXBsYWNlXSkpCgkJCXsKCQkJCSRjaGFyc2V0c1skcmVwbGFjZV0gPSBhcnJheV9tZXJnZSgkY2hhcnNldHNbJHJlcGxhY2VdLCAkY2hhcnNldHNbJHJlYWxdKTsKCQkJCXVuc2V0KCRjaGFyc2V0c1skcmVhbF0pOwoJCQl9CgkJCWVsc2VpZiAoaXNzZXQoJGNoYXJzZXRzWyRyZWFsXSkpCgkJCXsKCQkJCSRjaGFyc2V0c1skcmVwbGFjZV0gPSAkY2hhcnNldHNbJHJlYWxdOwoJCQkJJGNoYXJzZXRzWyRyZXBsYWNlXVtdID0gbm9ybWFsaXplX2NoYXJhY3Rlcl9zZXQoJHJlcGxhY2UpOwoJCQkJJGNoYXJzZXRzWyRyZXBsYWNlXSA9IGFycmF5X3VuaXF1ZSgkY2hhcnNldHNbJHJlcGxhY2VdKTsKCQkJCXVuc2V0KCRjaGFyc2V0c1skcmVhbF0pOwoJCQl9CgkJCWVsc2UKCQkJewoJCQkJJGNoYXJzZXRzWyRyZXBsYWNlXVtdID0gbm9ybWFsaXplX2NoYXJhY3Rlcl9zZXQoJHJlYWwpOwoJCQl9CgkJfQoJCQoJCS8vIFNvcnQgaXQKCQl1a3NvcnQoJGNoYXJzZXRzLCAnc3RybmF0Y2FzZWNtcCcpOwoJCQoJCS8vIEFuZCB3ZSdyZSBkb25lIQoJCXJldHVybiAkY2hhcnNldHM7Cgl9Cn0KCmZ1bmN0aW9uIGNoYXJzZXQoJGNoYXJzZXQpCnsKCSRub3JtYWxpemVkX2NoYXJzZXQgPSBub3JtYWxpemVfY2hhcmFjdGVyX3NldCgkY2hhcnNldCk7CglpZiAoJGNoYXJzZXRzID0gYnVpbGRfY2hhcmFjdGVyX3NldF9saXN0KCkpCgl7CgkJZm9yZWFjaCAoJGNoYXJzZXRzIGFzICRwcmVmZXJyZWQgPT4gJGFsaWFzZXMpCgkJewoJCQlpZiAoaW5fYXJyYXkoJG5vcm1hbGl6ZWRfY2hhcnNldCwgJGFsaWFzZXMpKQoJCQl7CgkJCQlyZXR1cm4gJHByZWZlcnJlZDsKCQkJfQoJCX0KCQlyZXR1cm4gJGNoYXJzZXQ7Cgl9CgllbHNlCgl7CgkJcmV0dXJuIGZhbHNlOwoJfQp9CgpmdW5jdGlvbiBidWlsZF9mdW5jdGlvbigpCnsKCWlmICgkY2hhcnNldHMgPSBidWlsZF9jaGFyYWN0ZXJfc2V0X2xpc3QoKSkKCXsKCQkkcmV0dXJuID0gPDw8RU9GCmZ1bmN0aW9uIGNoYXJzZXQoXCRjaGFyc2V0KQp7CgkvKiBDaGFyYWN0ZXIgc2V0cyBhcmUgY2FzZS1pbnNlbnNpdGl2ZSwgYW5kIGFsc28gbmVlZCBzb21lIGZ1cnRoZXIKCW5vcm1hbGl6YXRpb24gaW4gdGhlIHJlYWwgd29ybGQgKHRob3VnaCB3ZSdsbCByZXR1cm4gdGhlbSBpbiB0aGUgZm9ybSBnaXZlbgoJaW4gdGhlaXIgcmVnaXN0cmF0aW9uKS4gKi8KCXN3aXRjaCAoc3RydG9sb3dlcihwcmVnX3JlcGxhY2UoJy9bXFx4MDktXFx4MERcXHgyMC1cXHgyRlxceDNBLVxceDQwXFx4NUItXFx4NjBcXHg3Qi1cXHg3RV0vJywgJycsIFwkY2hhcnNldCkpKQoJewoKRU9GOwoJCWZvcmVhY2ggKCRjaGFyc2V0cyBhcyAkcHJlZmVycmVkID0+ICRhbGlhc2VzKQoJCXsKCQkJZm9yZWFjaCAoJGFsaWFzZXMgYXMgJGFsaWFzKQoJCQl7CgkJCQkkcmV0dXJuIC49ICJcdFx0Y2FzZSAiIC4gdmFyX2V4cG9ydCgkYWxpYXMsIHRydWUpIC4gIjpcbiI7CgkJCX0KCQkJJHJldHVybiAuPSAiXHRcdFx0cmV0dXJuICIgLiB2YXJfZXhwb3J0KCRwcmVmZXJyZWQsIHRydWUpIC4gIjtcblxuIjsKCQl9CgkJJHJldHVybiAuPSA8PDxFT0YKCQlkZWZhdWx0OgoJCQlyZXR1cm4gXCRjaGFyc2V0OwoJfQp9CkVPRjsKCQlyZXR1cm4gJHJldHVybjsKCX0KCWVsc2UKCXsKCQlyZXR1cm4gZmFsc2U7Cgl9Cn0KCmlmIChwaHBfc2FwaV9uYW1lKCkgPT09ICdjbGknICYmIHJlYWxwYXRoKCRfU0VSVkVSWydhcmd2J11bMF0pID09PSBfX0ZJTEVfXykKewoJZWNobyBidWlsZF9mdW5jdGlvbigpOwp9Cgo/Pg==]]></data>
	</file>
	<file>
	  <filename>/libs/DEV/1.1.3/demo/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/libs/DEV/1.1.3/demo/cache/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/libs/DEV/1.1.3/demo/cache/003183d755278c74b8609e69209afe9a.spi</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[YToyOntzOjc6ImhlYWRlcnMiO2E6OTp7czo0OiJkYXRlIjtzOjI5OiJNb24sIDA4IEp1biAyMDA5IDE4OjUyOjAxIEdNVCI7czo2OiJzZXJ2ZXIiO3M6OTA6IkFwYWNoZS8yLjIuMyAoRGViaWFuKSBQSFAvNS4yLjktMC5kb3RkZWIuMCB3aXRoIFN1aG9zaW4tUGF0Y2ggbW9kX3NzbC8yLjIuMyBPcGVuU1NMLzAuOS44YyI7czoxMzoibGFzdC1tb2RpZmllZCI7czoyOToiU3VuLCAwNyBTZXAgMjAwOCAxNTo0MTozNyBHTVQiO3M6NDoiZXRhZyI7czoyMToiMzgwN2EwN2EtNDdlLTIzNTUyZTQwIjtzOjEzOiJhY2NlcHQtcmFuZ2VzIjtzOjU6ImJ5dGVzIjtzOjE0OiJjb250ZW50LWxlbmd0aCI7czo0OiIxMTUwIjtzOjEzOiJjYWNoZS1jb250cm9sIjtzOjE2OiJtYXgtYWdlPTM5Mzg2OTc1IjtzOjc6ImV4cGlyZXMiO3M6Mjk6IlR1ZSwgMDcgU2VwIDIwMTAgMTU6NDE6MzcgR01UIjtzOjEyOiJjb250ZW50LXR5cGUiO3M6MTI6ImltYWdlL3gtaWNvbiI7fXM6NDoiYm9keSI7czoxMTUwOiIAAAEAAQAQEAAAAQAgAGgEAAAWAAAAKAAAABAAAAAgAAAAAQAgAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAENN7P3w8f39/////f////33+P793uD8/cTH+f2/w/n93+H8/f////3////9/////f////3////94+X8/TtG6/0aJ+j9rLD3/f////2prvb9Ulzt/S466v0jMOn9IS3p/Sk26f2UmfT9/////f////3////9/////f////1ze/H9IC3o/UtV7f1jbO/9HCjo/Rwp6P0iL+n9JTHp/SYy6f0aJ+f9MDzq/ebo/f3////9/////f////3////9kZf0/Sg06f0iLun9HSno/SYy6f0nM+n9JzPp/Scz6f0oNOn9HSro/TlE6/3s7P39/////f////3////9/////ZOZ9P0nM+n9JzPp/Scz6f0nM+n9JzPp/Sg06f0mMun9HSno/Rgl6P2ZnvT9/////f////3////9/////f////2FjPL9JzLp/Scz6f0nM+n9JzPp/SUx6f0dKej9Gifo/UhR7P2wtPf9/v7//f////3////9/////f////36+v/9Ulvu/Sc26v0nMen9JzLp/R0p6P0iLuj9VV7u/aqu9/3x8v79/////f////3////9/////f////3////9uLz4/SEt6P0wUPD9LELt/SMx6v1WYO79u7/4/fv7//3////9/////f////3////9/////f////3////93d/7/T1I6/0fK+j9N1nx/Tda8f2Xpvf99vf+/f////3////9/////f////3////9/////f////3+/v/9usb6/T5Z7/0eLOn9JzLp/Txd8f2ntvj9/////f////3////9/////f////3////9/////f79//3H0Pv9c4v1/SlN8P0kSvD9LEru/Sc06f2Dl/b9/v3//f////3////9/////f////3////98PP+/bTA+v1uhvX9Pl7x/TBS8f00VvD9MFPw/S1S8P0qQ+391Nv8/f////3////9/////f////3////9xc/7/XKK9v1Na/L9S2ny/Upp8v1GZPL9Pl7x/TdY8f0wU/D9LVDw/fHz/v3////9/////f////3////9zdX7/WuD9P1mgPT9Z4D0/WB89P1Yc/P9UGzy/URj8v0+XvH9Nlfx/S9T8P33+f79/////f////3////9/////bXB+f14jvX9fJP2/XaN9v1thfX9Ynz0/VJv8/1WcfP9RmXy/T5f8f0yVPH98vT+/f////3////9/////f////3m6v39nKz4/Ymc9/2Blvb9epD2/XiP9f2fr/j91Nr8/WJ89P1AYPL9M1Hw/erv/v3////9/////f////3////9/////fX2/v3b4f391Nv8/d3j/P3x8/79/////f////2XqPf9P2Hy/TpT7/0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIjt9]]></data>
	</file>
	<file>
	  <filename>/libs/DEV/1.1.3/demo/cache/4e6d5d6e98d7099e9934b04818dd4b6a.spc</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[YTozOntzOjM6InVybCI7czoyMjoiaHR0cDovL3BhdHJpY2lhdmF6LmNvbSI7czo4OiJmZWVkX3VybCI7czo0MToiaHR0cDovL3BhdHJpY2lhdmF6LmNvbS9mZWVkcy9mZWVkYmxvZy5yc3MiO3M6NToiYnVpbGQiO2k6MjAwODEyMTk7fQ==]]></data>
	</file>
	<file>
	  <filename>/libs/DEV/1.1.3/demo/cache/4f00777ba735f7a90601c8c02fadd110.spc</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[YTo0OntzOjU6ImNoaWxkIjthOjE6e3M6Mjc6Imh0dHA6Ly93d3cudzMub3JnLzIwMDUvQXRvbSI7YToxOntzOjQ6ImZlZWQiO2E6MTp7aTowO2E6Njp7czo0OiJkYXRhIjtzOjA6IiI7czo3OiJhdHRyaWJzIjthOjE6e3M6MzY6Imh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSI7YToyOntzOjQ6ImxhbmciO3M6MjoiZW4iO3M6NDoiYmFzZSI7czo0MzoiaHR0cDovL3d3dy5zbWFzaGluZ21hZ2F6aW5lLmNvbS93cC1hdG9tLnBocCI7fX1zOjg6InhtbF9iYXNlIjtzOjQzOiJodHRwOi8vd3d3LnNtYXNoaW5nbWFnYXppbmUuY29tL3dwLWF0b20ucGhwIjtzOjE3OiJ4bWxfYmFzZV9leHBsaWNpdCI7YjoxO3M6ODoieG1sX2xhbmciO3M6MjoiZW4iO3M6NToiY2hpbGQiO2E6MTp7czoyNzoiaHR0cDovL3d3dy53My5vcmcvMjAwNS9BdG9tIjthOjc6e3M6NToidGl0bGUiO2E6MTp7aTowO2E6NTp7czo0OiJkYXRhIjtzOjE3OiJTbWFzaGluZyBNYWdhemluZSI7czo3OiJhdHRyaWJzIjthOjE6e3M6MDoiIjthOjE6e3M6NDoidHlwZSI7czo0OiJ0ZXh0Ijt9fXM6ODoieG1sX2Jhc2UiO3M6NDM6Imh0dHA6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20vd3AtYXRvbS5waHAiO3M6MTc6InhtbF9iYXNlX2V4cGxpY2l0IjtiOjE7czo4OiJ4bWxfbGFuZyI7czoyOiJlbiI7fX1zOjg6InN1YnRpdGxlIjthOjE6e2k6MDthOjU6e3M6NDoiZGF0YSI7czowOiIiO3M6NzoiYXR0cmlicyI7YToxOntzOjA6IiI7YToxOntzOjQ6InR5cGUiO3M6NDoidGV4dCI7fX1zOjg6InhtbF9iYXNlIjtzOjQzOiJodHRwOi8vd3d3LnNtYXNoaW5nbWFnYXppbmUuY29tL3dwLWF0b20ucGhwIjtzOjE3OiJ4bWxfYmFzZV9leHBsaWNpdCI7YjoxO3M6ODoieG1sX2xhbmciO3M6MjoiZW4iO319czo3OiJ1cGRhdGVkIjthOjE6e2k6MDthOjU6e3M6NDoiZGF0YSI7czoyMDoiMjAwOS0wNi0wOFQxMzoyNDozNVoiO3M6NzoiYXR0cmlicyI7YTowOnt9czo4OiJ4bWxfYmFzZSI7czo0MzoiaHR0cDovL3d3dy5zbWFzaGluZ21hZ2F6aW5lLmNvbS93cC1hdG9tLnBocCI7czoxNzoieG1sX2Jhc2VfZXhwbGljaXQiO2I6MTtzOjg6InhtbF9sYW5nIjtzOjI6ImVuIjt9fXM6OToiZ2VuZXJhdG9yIjthOjE6e2k6MDthOjU6e3M6NDoiZGF0YSI7czo5OiJXb3JkUHJlc3MiO3M6NzoiYXR0cmlicyI7YToxOntzOjA6IiI7YToyOntzOjM6InVyaSI7czoyMToiaHR0cDovL3dvcmRwcmVzcy5vcmcvIjtzOjc6InZlcnNpb24iO3M6NToiMi43LjEiO319czo4OiJ4bWxfYmFzZSI7czo0MzoiaHR0cDovL3d3dy5zbWFzaGluZ21hZ2F6aW5lLmNvbS93cC1hdG9tLnBocCI7czoxNzoieG1sX2Jhc2VfZXhwbGljaXQiO2I6MTtzOjg6InhtbF9sYW5nIjtzOjI6ImVuIjt9fXM6NDoibGluayI7YToyOntpOjA7YTo1OntzOjQ6ImRhdGEiO3M6MDoiIjtzOjc6ImF0dHJpYnMiO2E6MTp7czowOiIiO2E6Mzp7czozOiJyZWwiO3M6OToiYWx0ZXJuYXRlIjtzOjQ6InR5cGUiO3M6OToidGV4dC9odG1sIjtzOjQ6ImhyZWYiO3M6MzE6Imh0dHA6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20iO319czo4OiJ4bWxfYmFzZSI7czo0MzoiaHR0cDovL3d3dy5zbWFzaGluZ21hZ2F6aW5lLmNvbS93cC1hdG9tLnBocCI7czoxNzoieG1sX2Jhc2VfZXhwbGljaXQiO2I6MTtzOjg6InhtbF9sYW5nIjtzOjI6ImVuIjt9aToxO2E6NTp7czo0OiJkYXRhIjtzOjA6IiI7czo3OiJhdHRyaWJzIjthOjE6e3M6MDoiIjthOjM6e3M6MzoicmVsIjtzOjQ6InNlbGYiO3M6NDoidHlwZSI7czoyMDoiYXBwbGljYXRpb24vYXRvbSt4bWwiO3M6NDoiaHJlZiI7czo0MjoiaHR0cDovL3d3dy5zbWFzaGluZ21hZ2F6aW5lLmNvbS9mZWVkL2F0b20vIjt9fXM6ODoieG1sX2Jhc2UiO3M6NDM6Imh0dHA6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20vd3AtYXRvbS5waHAiO3M6MTc6InhtbF9iYXNlX2V4cGxpY2l0IjtiOjE7czo4OiJ4bWxfbGFuZyI7czoyOiJlbiI7fX1zOjI6ImlkIjthOjE6e2k6MDthOjU6e3M6NDoiZGF0YSI7czo0MjoiaHR0cDovL3d3dy5zbWFzaGluZ21hZ2F6aW5lLmNvbS9mZWVkL2F0b20vIjtzOjc6ImF0dHJpYnMiO2E6MDp7fXM6ODoieG1sX2Jhc2UiO3M6NDM6Imh0dHA6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20vd3AtYXRvbS5waHAiO3M6MTc6InhtbF9iYXNlX2V4cGxpY2l0IjtiOjE7czo4OiJ4bWxfbGFuZyI7czoyOiJlbiI7fX1zOjU6ImVudHJ5IjthOjY6e2k6MDthOjY6e3M6NDoiZGF0YSI7czozNzoiCgkJCgkJCgkJCgkJCgkJCgkJCgkJCQkKCQkKCQkKCQkKCQkKCSI7czo3OiJhdHRyaWJzIjthOjA6e31zOjg6InhtbF9iYXNlIjtzOjQzOiJodHRwOi8vd3d3LnNtYXNoaW5nbWFnYXppbmUuY29tL3dwLWF0b20ucGhwIjtzOjE3OiJ4bWxfYmFzZV9leHBsaWNpdCI7YjoxO3M6ODoieG1sX2xhbmciO3M6MjoiZW4iO3M6NToiY2hpbGQiO2E6Mjp7czoyNzoiaHR0cDovL3d3dy53My5vcmcvMjAwNS9BdG9tIjthOjk6e3M6NjoiYXV0aG9yIjthOjE6e2k6MDthOjY6e3M6NDoiZGF0YSI7czoxMDoiCgkJCQoJCQkJCSI7czo3OiJhdHRyaWJzIjthOjA6e31zOjg6InhtbF9iYXNlIjtzOjQzOiJodHRwOi8vd3d3LnNtYXNoaW5nbWFnYXppbmUuY29tL3dwLWF0b20ucGhwIjtzOjE3OiJ4bWxfYmFzZV9leHBsaWNpdCI7YjoxO3M6ODoieG1sX2xhbmciO3M6MjoiZW4iO3M6NToiY2hpbGQiO2E6MTp7czoyNzoiaHR0cDovL3d3dy53My5vcmcvMjAwNS9BdG9tIjthOjE6e3M6NDoibmFtZSI7YToxOntpOjA7YTo1OntzOjQ6ImRhdGEiO3M6MTg6IlNtYXNoaW5nIEVkaXRvcmlhbCI7czo3OiJhdHRyaWJzIjthOjA6e31zOjg6InhtbF9iYXNlIjtzOjQzOiJodHRwOi8vd3d3LnNtYXNoaW5nbWFnYXppbmUuY29tL3dwLWF0b20ucGhwIjtzOjE3OiJ4bWxfYmFzZV9leHBsaWNpdCI7YjoxO3M6ODoieG1sX2xhbmciO3M6MjoiZW4iO319fX19fXM6NToidGl0bGUiO2E6MTp7aTowO2E6NTp7czo0OiJkYXRhIjtzOjQ2OiI1MCBGcmVzaCBVc2VmdWwgSWNvbiBTZXRzIEZvciBZb3VyIE5leHQgRGVzaWduIjtzOjc6ImF0dHJpYnMiO2E6MTp7czowOiIiO2E6MTp7czo0OiJ0eXBlIjtzOjQ6Imh0bWwiO319czo4OiJ4bWxfYmFzZSI7czo0MzoiaHR0cDovL3d3dy5zbWFzaGluZ21hZ2F6aW5lLmNvbS93cC1hdG9tLnBocCI7czoxNzoieG1sX2Jhc2VfZXhwbGljaXQiO2I6MTtzOjg6InhtbF9sYW5nIjtzOjI6ImVuIjt9fXM6NDoibGluayI7YTozOntpOjA7YTo1OntzOjQ6ImRhdGEiO3M6MDoiIjtzOjc6ImF0dHJpYnMiO2E6MTp7czowOiIiO2E6Mzp7czozOiJyZWwiO3M6OToiYWx0ZXJuYXRlIjtzOjQ6InR5cGUiO3M6OToidGV4dC9odG1sIjtzOjQ6ImhyZWYiO3M6OTA6Imh0dHA6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20vMjAwOS8wNi8wNy81MC1mcmVzaC11c2VmdWwtaWNvbi1zZXRzLWZvci15b3VyLW5leHQtZGVzaWduLyI7fX1zOjg6InhtbF9iYXNlIjtzOjQzOiJodHRwOi8vd3d3LnNtYXNoaW5nbWFnYXppbmUuY29tL3dwLWF0b20ucGhwIjtzOjE3OiJ4bWxfYmFzZV9leHBsaWNpdCI7YjoxO3M6ODoieG1sX2xhbmciO3M6MjoiZW4iO31pOjE7YTo1OntzOjQ6ImRhdGEiO3M6MDoiIjtzOjc6ImF0dHJpYnMiO2E6Mjp7czowOiIiO2E6Mzp7czozOiJyZWwiO3M6NzoicmVwbGllcyI7czo0OiJ0eXBlIjtzOjk6InRleHQvaHRtbCI7czo0OiJocmVmIjtzOjk5OiJodHRwOi8vd3d3LnNtYXNoaW5nbWFnYXppbmUuY29tLzIwMDkvMDYvMDcvNTAtZnJlc2gtdXNlZnVsLWljb24tc2V0cy1mb3IteW91ci1uZXh0LWRlc2lnbi8jY29tbWVudHMiO31zOjM4OiJodHRwOi8vcHVybC5vcmcvc3luZGljYXRpb24vdGhyZWFkLzEuMCI7YToxOntzOjU6ImNvdW50IjtzOjI6Ijg1Ijt9fXM6ODoieG1sX2Jhc2UiO3M6NDM6Imh0dHA6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20vd3AtYXRvbS5waHAiO3M6MTc6InhtbF9iYXNlX2V4cGxpY2l0IjtiOjE7czo4OiJ4bWxfbGFuZyI7czoyOiJlbiI7fWk6MjthOjU6e3M6NDoiZGF0YSI7czowOiIiO3M6NzoiYXR0cmlicyI7YToyOntzOjA6IiI7YTozOntzOjM6InJlbCI7czo3OiJyZXBsaWVzIjtzOjQ6InR5cGUiO3M6MjA6ImFwcGxpY2F0aW9uL2F0b20reG1sIjtzOjQ6ImhyZWYiO3M6MTAwOiJodHRwOi8vd3d3LnNtYXNoaW5nbWFnYXppbmUuY29tLzIwMDkvMDYvMDcvNTAtZnJlc2gtdXNlZnVsLWljb24tc2V0cy1mb3IteW91ci1uZXh0LWRlc2lnbi9mZWVkL2F0b20vIjt9czozODoiaHR0cDovL3B1cmwub3JnL3N5bmRpY2F0aW9uL3RocmVhZC8xLjAiO2E6MTp7czo1OiJjb3VudCI7czoyOiI4NSI7fX1zOjg6InhtbF9iYXNlIjtzOjQzOiJodHRwOi8vd3d3LnNtYXNoaW5nbWFnYXppbmUuY29tL3dwLWF0b20ucGhwIjtzOjE3OiJ4bWxfYmFzZV9leHBsaWNpdCI7YjoxO3M6ODoieG1sX2xhbmciO3M6MjoiZW4iO319czoyOiJpZCI7YToxOntpOjA7YTo1OntzOjQ6ImRhdGEiO3M6Mzk6Imh0dHA6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20vP3A9NzY0OCI7czo3OiJhdHRyaWJzIjthOjA6e31zOjg6InhtbF9iYXNlIjtzOjQzOiJodHRwOi8vd3d3LnNtYXNoaW5nbWFnYXppbmUuY29tL3dwLWF0b20ucGhwIjtzOjE3OiJ4bWxfYmFzZV9leHBsaWNpdCI7YjoxO3M6ODoieG1sX2xhbmciO3M6MjoiZW4iO319czo3OiJ1cGRhdGVkIjthOjE6e2k6MDthOjU6e3M6NDoiZGF0YSI7czoyMDoiMjAwOS0wNi0wOFQwOTozODoxM1oiO3M6NzoiYXR0cmlicyI7YTowOnt9czo4OiJ4bWxfYmFzZSI7czo0MzoiaHR0cDovL3d3dy5zbWFzaGluZ21hZ2F6aW5lLmNvbS93cC1hdG9tLnBocCI7czoxNzoieG1sX2Jhc2VfZXhwbGljaXQiO2I6MTtzOjg6InhtbF9sYW5nIjtzOjI6ImVuIjt9fXM6OToicHVibGlzaGVkIjthOjE6e2k6MDthOjU6e3M6NDoiZGF0YSI7czoyMDoiMjAwOS0wNi0wOFQwMDo1MzowOVoiO3M6NzoiYXR0cmlicyI7YTowOnt9czo4OiJ4bWxfYmFzZSI7czo0MzoiaHR0cDovL3d3dy5zbWFzaGluZ21hZ2F6aW5lLmNvbS93cC1hdG9tLnBocCI7czoxNzoieG1sX2Jhc2VfZXhwbGljaXQiO2I6MTtzOjg6InhtbF9sYW5nIjtzOjI6ImVuIjt9fXM6ODoiY2F0ZWdvcnkiO2E6NTp7aTowO2E6NTp7czo0OiJkYXRhIjtzOjA6IiI7czo3OiJhdHRyaWJzIjthOjE6e3M6MDoiIjthOjI6e3M6Njoic2NoZW1lIjtzOjMxOiJodHRwOi8vd3d3LnNtYXNoaW5nbWFnYXppbmUuY29tIjtzOjQ6InRlcm0iO3M6ODoiR3JhcGhpY3MiO319czo4OiJ4bWxfYmFzZSI7czo0MzoiaHR0cDovL3d3dy5zbWFzaGluZ21hZ2F6aW5lLmNvbS93cC1hdG9tLnBocCI7czoxNzoieG1sX2Jhc2VfZXhwbGljaXQiO2I6MTtzOjg6InhtbF9sYW5nIjtzOjI6ImVuIjt9aToxO2E6NTp7czo0OiJkYXRhIjtzOjA6IiI7czo3OiJhdHRyaWJzIjthOjE6e3M6MDoiIjthOjI6e3M6Njoic2NoZW1lIjtzOjMxOiJodHRwOi8vd3d3LnNtYXNoaW5nbWFnYXppbmUuY29tIjtzOjQ6InRlcm0iO3M6OToiZG93bmxvYWRzIjt9fXM6ODoieG1sX2Jhc2UiO3M6NDM6Imh0dHA6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20vd3AtYXRvbS5waHAiO3M6MTc6InhtbF9iYXNlX2V4cGxpY2l0IjtiOjE7czo4OiJ4bWxfbGFuZyI7czoyOiJlbiI7fWk6MjthOjU6e3M6NDoiZGF0YSI7czowOiIiO3M6NzoiYXR0cmlicyI7YToxOntzOjA6IiI7YToyOntzOjY6InNjaGVtZSI7czozMToiaHR0cDovL3d3dy5zbWFzaGluZ21hZ2F6aW5lLmNvbSI7czo0OiJ0ZXJtIjtzOjQ6ImZyZWUiO319czo4OiJ4bWxfYmFzZSI7czo0MzoiaHR0cDovL3d3dy5zbWFzaGluZ21hZ2F6aW5lLmNvbS93cC1hdG9tLnBocCI7czoxNzoieG1sX2Jhc2VfZXhwbGljaXQiO2I6MTtzOjg6InhtbF9sYW5nIjtzOjI6ImVuIjt9aTozO2E6NTp7czo0OiJkYXRhIjtzOjA6IiI7czo3OiJhdHRyaWJzIjthOjE6e3M6MDoiIjthOjI6e3M6Njoic2NoZW1lIjtzOjMxOiJodHRwOi8vd3d3LnNtYXNoaW5nbWFnYXppbmUuY29tIjtzOjQ6InRlcm0iO3M6ODoiRnJlZWJpZXMiO319czo4OiJ4bWxfYmFzZSI7czo0MzoiaHR0cDovL3d3dy5zbWFzaGluZ21hZ2F6aW5lLmNvbS93cC1hdG9tLnBocCI7czoxNzoieG1sX2Jhc2VfZXhwbGljaXQiO2I6MTtzOjg6InhtbF9sYW5nIjtzOjI6ImVuIjt9aTo0O2E6NTp7czo0OiJkYXRhIjtzOjA6IiI7czo3OiJhdHRyaWJzIjthOjE6e3M6MDoiIjthOjI6e3M6Njoic2NoZW1lIjtzOjMxOiJodHRwOi8vd3d3LnNtYXNoaW5nbWFnYXppbmUuY29tIjtzOjQ6InRlcm0iO3M6NToiaWNvbnMiO319czo4OiJ4bWxfYmFzZSI7czo0MzoiaHR0cDovL3d3dy5zbWFzaGluZ21hZ2F6aW5lLmNvbS93cC1hdG9tLnBocCI7czoxNzoieG1sX2Jhc2VfZXhwbGljaXQiO2I6MTtzOjg6InhtbF9sYW5nIjtzOjI6ImVuIjt9fXM6Nzoic3VtbWFyeSI7YToxOntpOjA7YTo1OntzOjQ6ImRhdGEiO3M6MTYzNDoiPCEtLSBmZWVkIGJhbm5lcnMgLS0+CjxkaXYgY2xhc3M9ImdzZW5zZSI+PHNwYW4gY2xhc3M9ImFuIj5BZHZlcnRpc2VtZW50czwvc3Bhbj48YnIvPgkKCjxhIGhyZWY9Imh0dHA6Ly9hZHNlcnZlci4zZGlnaXQuZGUvd3d3L2RlbGl2ZXJ5L2NrLnBocD96b25laWQ9NTYiIHRhcmdldD0iX2JsYW5rIj48aW1nIHNyYz0iaHR0cDovL2Fkc2VydmVyLjNkaWdpdC5kZS93d3cvZGVsaXZlcnkvYXZ3LnBocD96b25laWQ9NTYiIGJvcmRlcj0iMCIgYWx0PSIiIC8+CTwvYT4KCjwvZGl2PjwhLS0gPGltZyBzcmM9Imh0dHA6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20vaW1hZ2VzL3Bvc3QtcGljdHVyZXMvbW9yZS1pY29ucy5qcGciIC8+IC0tPjxwPkJlYXV0aWZ1bCBhbmQgZnJlZSBpY29uIHNldHMgYWx3YXlzIGNvbWUgaW4gaGFuZHkuIFVzZWQgcHJvcGVybHkgYW5kIG1vZGVyYXRlbHksIGljb25zIGNhbiBiZSBoZWxwZnVsIHRvIHByb3ZpZGUgdXNlcnMgd2l0aCBtZW1vcmFibGUgbWV0YXBob3JzIGFuZCBpbGx1c3RyYXRpb25zIHRoYXQgd291bGQgcHJvdmlkZSBhIHZpc3VhbCBzdXBwb3J0IGZvciBvdGhlcndpc2UgdW5zcGVjdGFjdWxhciB0ZXh0IGJsb2Nrcy4gRm9yIGluc3RhbmNlLCBpbiB3ZWItYXBwbGljYXRpb25zIG1lbW9yYWJsZSBpY29ucyBjYW4gYmUgdmVyeSBoZWxwZnVsIGFzIHRoZXkgY2FuIG1ha2UgaXQgZWFzaWVyIGZvciB1c2VycyB0byBtZW1vcml6ZSBob3cgdG8gcGVyZm9tIHNvbWUgc3BlY2lmaWMgdGFzayBvciB3aGVyZSB0byBmaW5kIHNvbWUgc3BlY2lmaWMgZnVuY3Rpb25zLjwvcD4NCg0KPHA+PGEgaHJlZj0iaHR0cDovL3d3dy5zbWFzaGluZ21hZ2F6aW5lLmNvbS8yMDA5LzA2LzA3LzUwLWZyZXNoLXVzZWZ1bC1pY29uLXNldHMtZm9yLXlvdXItbmV4dC1kZXNpZ24vIj48aW1nIHdpZHRoPSI1MDAiIGhlaWdodD0iMjgyIiBhbHQ9IkZyZWUgSWNvbnMgUm91bmQtVXAgLSBNYWMgUmVsZWFzZXMgSWNvbiBNYW5pbGEgTWFpbCIgc3JjPSJodHRwOi8vODcuMjM3LjEyMC4xNzAvd3AtY29udGVudC91cGxvYWRzL2ltYWdlcy9mcmVlLWljb25zLXJvdW5kLXVwL2ZyZWUtaWNvbnMtcm91bmQtdXAtOTcucG5nIiAvPjwvYT48L3A+IA0KDQo8cD5UaGlzIDxzdHJvbmc+bGFyZ2UgY29sbGVjdGlvbiBvZiByZWNlbnRseSByZWxlYXNlZCBpY29uIHNldHM8L3N0cm9uZz4gaXMgc3VwcG9zZWQgdG8gaGVscCBkZXNpZ25lcnMgaW1wcm92ZSB0aGVpciBkZXNpZ25zIG9uIHRoZWlyIHdlYi1zaXRlcyBhbmQgaW4gd2ViLWFwcGxpY2F0aW9ucy4gQWxsIGljb24gc2V0cyBhcmUgZnJlZS4gUGxlYXNlIHJlYWQgdGhlIGxpY2Vuc2UgYWdyZWVtZW50cyBjYXJlZnVsbHkgYmVmb3JlIHVzaW5nIHRoZSBpY29ucyDigJQgdGhlIGxpY2Vuc2UgY2FuIGNoYW5nZSBmcm9tIHRpbWUgdG8gdGltZS4gVGhlIGljb25zIHByb3ZpZGVkIGJlbG93IG1heSB0dXJuIG91dCB0byBiZSB1c2VmdWwgYW5kIGhlbHBmdWwgaW4gY29ycG9yYXRlIGRlc2lnbnMsIHBvcnRmb2xpb3MsIGJsb2dzLCBtYWdhemluZXMgYW5kIGluIFdlYi1hcHBsaWNhdGlvbnMuIFBsZWFzZSBmZWVsIGZyZWUgdG8gc3VnZ2VzdCBtb3JlIGljb24gc2V0cyBpbiB0aGUgY29tbWVudHMgdG8gdGhpcyBwb3N0LjwvcD4iO3M6NzoiYXR0cmlicyI7YToxOntzOjA6IiI7YToxOntzOjQ6InR5cGUiO3M6NDoiaHRtbCI7fX1zOjg6InhtbF9iYXNlIjtzOjQzOiJodHRwOi8vd3d3LnNtYXNoaW5nbWFnYXppbmUuY29tL3dwLWF0b20ucGhwIjtzOjE3OiJ4bWxfYmFzZV9leHBsaWNpdCI7YjoxO3M6ODoieG1sX2xhbmciO3M6MjoiZW4iO319czo3OiJjb250ZW50IjthOjE6e2k6MDthOjU6e3M6NDoiZGF0YSI7czozOTM1MToiCjwhLS0gZ29vZ2xlX2FkX3NlY3Rpb25fc3RhcnQgLS0+CjxwPjwhLS0gZmVlZCBiYW5uZXJzIC0tPjwvcD4KPGRpdiBjbGFzcz0iZ3NlbnNlIj48c3BhbiBjbGFzcz0iYW4iPkFkdmVydGlzZW1lbnRzPC9zcGFuPjxici8+CTwvcD4KPHA+PGEgaHJlZj0iaHR0cDovL2Fkc2VydmVyLjNkaWdpdC5kZS93d3cvZGVsaXZlcnkvY2sucGhwP3pvbmVpZD01NiIgdGFyZ2V0PSJfYmxhbmsiPjxpbWcgc3JjPSJodHRwOi8vYWRzZXJ2ZXIuM2RpZ2l0LmRlL3d3dy9kZWxpdmVyeS9hdncucGhwP3pvbmVpZD01NiIgYm9yZGVyPSIwIiBhbHQ9IiIgLz4JPC9hPjwvcD4KPC9kaXY+CjxwPkJlYXV0aWZ1bCBhbmQgZnJlZSBpY29uIHNldHMgYWx3YXlzIGNvbWUgaW4gaGFuZHkuIFVzZWQgcHJvcGVybHkgYW5kIG1vZGVyYXRlbHksIGljb25zIGNhbiBiZSBoZWxwZnVsIHRvIHByb3ZpZGUgdXNlcnMgd2l0aCBtZW1vcmFibGUgbWV0YXBob3JzIGFuZCBpbGx1c3RyYXRpb25zIHRoYXQgd291bGQgcHJvdmlkZSBhIHZpc3VhbCBzdXBwb3J0IGZvciBvdGhlcndpc2UgdW5zcGVjdGFjdWxhciB0ZXh0IGJsb2Nrcy4gRm9yIGluc3RhbmNlLCBpbiB3ZWItYXBwbGljYXRpb25zIG1lbW9yYWJsZSBpY29ucyBjYW4gYmUgdmVyeSBoZWxwZnVsIGFzIHRoZXkgY2FuIG1ha2UgaXQgZWFzaWVyIGZvciB1c2VycyB0byBtZW1vcml6ZSBob3cgdG8gcGVyZm9tIHNvbWUgc3BlY2lmaWMgdGFzayBvciB3aGVyZSB0byBmaW5kIHNvbWUgc3BlY2lmaWMgZnVuY3Rpb25zLjwvcD4KPHA+VGhpcyA8c3Ryb25nPmxhcmdlIGNvbGxlY3Rpb24gb2YgcmVjZW50bHkgcmVsZWFzZWQgaWNvbiBzZXRzPC9zdHJvbmc+IGlzIHN1cHBvc2VkIHRvIGhlbHAgZGVzaWduZXJzIGltcHJvdmUgdGhlaXIgZGVzaWducyBvbiB0aGVpciB3ZWItc2l0ZXMgYW5kIGluIHdlYi1hcHBsaWNhdGlvbnMuIEFsbCBpY29uIHNldHMgYXJlIGZyZWUuIFBsZWFzZSByZWFkIHRoZSBsaWNlbnNlIGFncmVlbWVudHMgY2FyZWZ1bGx5IGJlZm9yZSB1c2luZyB0aGUgaWNvbnMg4oCUIHRoZSBsaWNlbnNlIGNhbiBjaGFuZ2UgZnJvbSB0aW1lIHRvIHRpbWUuIFRoZSBpY29ucyBwcm92aWRlZCBiZWxvdyBtYXkgdHVybiBvdXQgdG8gYmUgdXNlZnVsIGFuZCBoZWxwZnVsIGluIGNvcnBvcmF0ZSBkZXNpZ25zLCBwb3J0Zm9saW9zLCBibG9ncywgbWFnYXppbmVzIGFuZCBpbiBXZWItYXBwbGljYXRpb25zLiBQbGVhc2UgZmVlbCBmcmVlIHRvIHN1Z2dlc3QgbW9yZSBpY29uIHNldHMgaW4gdGhlIGNvbW1lbnRzIHRvIHRoaXMgcG9zdC48L3A+CjxoMz5XZWIgQXBwbGljYXRpb24gSWNvbiBTZXRzPC9oMz4KPHA+PGEgaHJlZj0iaHR0cDovL3d3dy5tZXp6b2JsdWUuY29tL2ljb25zL2NoYWxrd29yay9odG1sLyI+Q2hhbGt3b3JrIEhUTUwgUm95YWx0eS1mcmVlIEljb25zPC9hPjxiciAvPgpDaGFsa3dvcmsgSFRNTCBpcyBhIGZyZWUgc2V0IG9mIEhUTUwtdGhlbWVkIGljb25zLCBkZXNpZ25lZCB0byBwZXJmZWN0bHkgY29tcGxlbWVudCBhbGwgb3RoZXIgc2V0cyBpbiB0aGUgQ2hhbGt3b3JrIEZhbWlseS4gRmVhdHVyaW5nIDMxIGdyYXBoaWNhbCByZXByZXNlbnRhdGlvbnMgb2YgY29tbW9uIG1hcmt1cCBlbGVtZW50cywgdGhpcyBpcyBhIGNvbXBsZXRlbHkgZnJlZSBpY29uIHNldCBhdmFpbGFibGUgZm9yIHBlcnNvbmFsIGFuZCBjb21tZXJjaWFsIHByb2plY3RzIGFsaWtlIChhbHRob3VnaCB0aGUgdXN1YWwgQ2hhbGt3b3JrIGxpY2Vuc2UgdGVybXMgc3RpbGwgYXBwbHkpLiBUaGUgc2V0IGlzIGF2YWlsYWJsZSBpbiAzIHNpemVzIGFuZCA2IGZpbGUgZm9ybWF0czogdHJhbnNwYXJlbnQgUE5HLCBUSUYsIEdJRiwgQk1QLCBXaW5kb3dzIElDTywgYW5kIE1hYyBJQ05TLjwvcD4KPHAgY2xhc3M9InNob3djYXNlIj48YSBocmVmPSJodHRwOi8vd3d3Lm1lenpvYmx1ZS5jb20vaWNvbnMvY2hhbGt3b3JrL2h0bWwvIj48aW1nIHNyYz0iaHR0cDovL21lZGlhMi5zbWFzaGluZ21hZ2F6aW5lLmNvbS93cC1jb250ZW50L3VwbG9hZHMvaW1hZ2VzL2ZyZWUtaWNvbnMtcm91bmQtdXAvaHRtbC5naWYiIGFsdD0iRnJlZSBJY29ucyBSb3VuZC1VcCAtIENoYWxrd29yayBIVE1MIFJveWFsdHktZnJlZSBJY29ucyIgd2lkdGg9IjQ4OSIgaGVpZ2h0PSIzODQiIC8+PC9hPjwvcD4KPHA+PGEgaHJlZj0iaHR0cDovL3d3dy5pY29qb3kuY29tL2FydGljbGVzLzM5LyI+SGFuZCBQb2ludGVyIEljb25zPC9hPjxiciAvPgpGcmVlIGljb24gc2V0IHRoYXQgaW5jbHVkZXMgMzYgaGFuZCBwb2ludGVyIGljb25zIG9mIDYgZGlmZXJlbnQgdHlwZXMgd2l0aCA2IGNvbG9yIHZhcmlhbnRzLiBJY29uIHNldCBhbHNvIGluY2x1ZGVzIC5wc2Qgc291cmNlIGZpbGUuPC9wPgo8cCBjbGFzcz0ic2hvd2Nhc2UiPjxhIGhyZWY9Imh0dHA6Ly93d3cuaWNvam95LmNvbS9hcnRpY2xlcy8zOS8iPjxpbWcgc3JjPSJodHRwOi8vbWVkaWEyLnNtYXNoaW5nbWFnYXppbmUuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy9pbWFnZXMvZnJlZS1pY29ucy1yb3VuZC11cC9oYW5kLmpwZyIgYWx0PSJGcmVlIEljb25zIFJvdW5kLVVwIC0gU2NyZWVuc2hvdCIgd2lkdGg9IjQ1MiIgaGVpZ2h0PSIzNDciIC8+PC9hPjwvcD4KPHA+PGEgaHJlZj0iaHR0cDovL2t5by10dXguZGV2aWFudGFydC5jb20vYXJ0L01pbkljb25zLTExNTY5MDcwMyI+TWluSWNvbnM8L2E+PC9wPgo8cCBjbGFzcz0ic2hvd2Nhc2UiPjxhIGhyZWY9Imh0dHA6Ly9reW8tdHV4LmRldmlhbnRhcnQuY29tL2FydC9NaW5JY29ucy0xMTU2OTA3MDMiPjxpbWcgc3JjPSJodHRwOi8vbWVkaWEyLnNtYXNoaW5nbWFnYXppbmUuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy9pbWFnZXMvZnJlZS1pY29ucy1yb3VuZC11cC91cGxvYWQuZ2lmIiBhbHQ9IkZyZWUgSWNvbnMgUm91bmQtVXAgLSBNaW5JY29ucyIgd2lkdGg9IjI2MiIgaGVpZ2h0PSIzODMiIC8+PC9hPjwvcD4KPHA+PGEgaHJlZj0iaHR0cDovL3d3dy5zbWFzaGluZ21hZ2F6aW5lLmNvbS8yMDA5LzA1LzIwL2ZsYXZvdXItZXh0ZW5kZWQtdGhlLXVsdGltYXRlLWljb24tc2V0LWZvci13ZWItZGVzaWduZXJzLyI+Rmxhdm91ciBFeHRlbmRlZDogVGhlIFVsdGltYXRlIEljb24gU2V0IEZvciBXZWIgRGVzaWduZXJzPC9hPjxiciAvPgpBIGNvdXBsZSBvZiBtb250aHMgYWdvIHdlIHJlbGVhc2VkIHRoZSBiZWF1dGlmdWwgRmxhdm91cnMgSWNvbiBzZXQgdGhhdCB3YXMgZGVzaWduZWQgYnkgT2xpdmVyIFR3YXJkb3dza2ksIGEgZ3JhcGhpYyBkZXNpZ25lciBmcm9tIEJvbm4sIEdlcm1hbnksIHRoZSBzZXQgYWltZWQgdG8gaGVscCBkZXNpZ25lcnMgaW4gdGhlaXIgV2ViIGFuZCB1c2VyIGludGVyZmFjZSBkZXNpZ25zLCBjb250YWluaW5nIDE3NyBpY29ucyBpbiBhIHJlc29sdXRpb24gb2YgNDjDlzQ4IHBpeGVscy4gSW4gdGhpcyBwb3N0IHdlIHJlbGVhc2UgdGhlIHVwZGF0ZWQgdmVyc2lvbiBvZiB0aGUgaWNvbiBzZXQsIG5vdyB3aXRoIDQ1MiBpY29ucywgZnJlZWx5IGF2YWlsYWJsZSB0byB1c2UgaW4gcHJpdmF0ZSBvciBjb21tZXJjaWFsIHByb2plY3RzLjwvcD4KPHAgY2xhc3M9InNob3djYXNlIj48YSBocmVmPSJodHRwOi8vd3d3LnNtYXNoaW5nbWFnYXppbmUuY29tLzIwMDkvMDUvMjAvZmxhdm91ci1leHRlbmRlZC10aGUtdWx0aW1hdGUtaWNvbi1zZXQtZm9yLXdlYi1kZXNpZ25lcnMvIj48aW1nIHNyYz0iaHR0cDovL21lZGlhMS5zbWFzaGluZ21hZ2F6aW5lLmNvbS93cC1jb250ZW50L3VwbG9hZHMvaW1hZ2VzL2ZyZWUtaWNvbnMtcm91bmQtdXAvZnJlZS1pY29ucy1yb3VuZC11cC03LmpwZyIgYWx0PSJGcmVlIEljb25zIFJvdW5kLVVwIC0gRmxhdm91ciBFeHRlbmRlZDogVGhlIFVsdGltYXRlIEljb24gU2V0IEZvciBXZWIgRGVzaWduZXJzIiB3aWR0aD0iMjc3IiBoZWlnaHQ9IjY3NSIgLz48L2E+PC9wPgo8cD48YSBocmVmPSJodHRwOi8vd3d3LmZyZWVpY29uc2Rvd25sb2FkLmNvbS9GcmVlX0Rvd25sb2Fkcy5hc3A/aWQ9NTk3Ij5CYXNpYyBTZXQ8L2E+PGJyIC8+CjQyIGhpZ2ggcXVhbGl0eSBpY29ucyBpbiA2NMOXNjQsIDMyw5czMiBhbmQgMTbDlzE2IHNpemVzLiBNYWMgT1MsIFdpbiBhbmQgLlBORy1mb3JtYXRzLjwvcD4KPHAgY2xhc3M9InNob3djYXNlIj48YSBocmVmPSJodHRwOi8vd3d3LmZyZWVpY29uc2Rvd25sb2FkLmNvbS9GcmVlX0Rvd25sb2Fkcy5hc3A/aWQ9NTk3Ij48aW1nIHNyYz0iaHR0cDovL21lZGlhMS5zbWFzaGluZ21hZ2F6aW5lLmNvbS93cC1jb250ZW50L3VwbG9hZHMvaW1hZ2VzL2ZyZWUtaWNvbnMtcm91bmQtdXAvZnJlZS1pY29ucy1yb3VuZC11cC04NC5qcGciIGFsdD0iRnJlZSBJY29ucyBSb3VuZC1VcCAtIEJhc2ljIFNldCIgd2lkdGg9IjQ0NiIgaGVpZ2h0PSI4MDciIC8+PC9hPjwvcD4KPHA+PGEgaHJlZj0iaHR0cDovL3d3dy50dXRvcmlhbDkubmV0L3Jlc291cmNlcy9mcmVlLWljb24tcGFjay13ZWItaW5qZWN0aW9uLyI+V2ViIEluamVjdGlvbjwvYT48YnIgLz4KVGhpcyBGcmVlIEljb24gUGFjayBpcyBmb3IgdXNlIGluIHlvdXIgcGVyc29uYWwgYW5kIGNvbW1lcmNpYWwgcHJvamVjdHMsIGFuZCBjYW4gYmUgdXNlZCB3aXRob3V0IGF0dHJpYnV0aW9uLiBJdCBtYXkgbm90IGJlIHJlZGlzdHJpYnV0ZWQuIFRoZSBzZXQgaW5jbHVkZXMgMjYgc3R5bGlzaCBpY29ucyBkZXNpZ25lZCBieSBNaWR0b25lIERlc2lnbiBTdHVkaW8uIEVhY2ggaWNvbiBpcyBhIC5wbmcgYXQgNDgmIzIxNTs0OHB4LiBUaGUgSWNvbnMgd2VyZSB0ZWRpb3VzbHkgaGFuZCBjcmFmdGVkIGJ5IGRlc2lnbmVyIEpvbmF0YW4gQ2FzdHJvIEZlcm7DoW5kZXouPC9wPgo8cCBjbGFzcz0ic2hvd2Nhc2UiPjxhIGhyZWY9Imh0dHA6Ly93d3cudHV0b3JpYWw5Lm5ldC9yZXNvdXJjZXMvZnJlZS1pY29uLXBhY2std2ViLWluamVjdGlvbi8iPjxpbWcgc3JjPSJodHRwOi8vbWVkaWEyLnNtYXNoaW5nbWFnYXppbmUuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy9pbWFnZXMvZnJlZS1pY29ucy1yb3VuZC11cC93ZWJpbmouanBnIiBhbHQ9IkZyZWUgSWNvbnMgUm91bmQtVXAgLSBGcmVlIEljb24gUGFjazogV2ViIEluamVjdGlvbiIgd2lkdGg9IjQ4MCIgaGVpZ2h0PSIzNjQiIC8+PC9hPjwvcD4KPHA+PGEgaHJlZj0iaHR0cDovL3d3dy5mcmVlaWNvbnNkb3dubG9hZC5jb20vRnJlZV9Eb3dubG9hZHMuYXNwP2lkPTU4NiI+RmlsZSBTdGF0dXMgSWNvbnM8L2E+PGJyIC8+CkZpbGUgU3RhdHVzIEljb25zIHNldCBpbmNsdWRlcyAxNiBpY29ucyB0aGF0IGNhbiBiZSB1c2VkIGZvciB3ZWItYXBwbGljYXRpb25zIHRoYXQgZGVwbG95IFN1YnZlcnNpb24tYmFzZWQgcHJvamVjdHMuPC9wPgo8cCBjbGFzcz0ic2hvd2Nhc2UiPjxhIGhyZWY9Imh0dHA6Ly93d3cuZnJlZWljb25zZG93bmxvYWQuY29tL0ZyZWVfRG93bmxvYWRzLmFzcD9pZD01ODYiPjxpbWcgc3JjPSJodHRwOi8vbWVkaWEyLnNtYXNoaW5nbWFnYXppbmUuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy9pbWFnZXMvZnJlZS1pY29ucy1yb3VuZC11cC9mcmVlLWljb25zLXJvdW5kLXVwLTg5LmpwZyIgYWx0PSJGcmVlIEljb25zIFJvdW5kLVVwIC0gRmlsZSBTdGF0dXMgSWNvbnMiIHdpZHRoPSI0NTIiIGhlaWdodD0iMzM2IiAvPjwvYT48L3A+CjxwPjxhIGhyZWY9Imh0dHA6Ly93d3cuMmV4cGVydHNkZXNpZ24uY29tLzIwMDgvMTAvMDUvMmV4cGVydHMtZnJlZS1pY29ucy1zZXQvIj4yZXhwZXJ0cyBJY29ucyBTZXQ8L2E+PGJyIC8+ClRoZXNlIGljb25zIGFyZSBjcmVhdGVkIGZyb20gc2NyYXRjaCB1c2luZyBBZG9iZSBGaXJld29ya3MuIFRoZSB6aXBwZWQgcGFjayBjb250YWlucyA0OMOXNDggUE5HIGltYWdlcywgd2hpY2ggeW91IGNhbiB1c2UgZm9yIGZyZWUuPC9wPgo8cCBjbGFzcz0ic2hvd2Nhc2UiPjxhIGhyZWY9Imh0dHA6Ly93d3cuMmV4cGVydHNkZXNpZ24uY29tLzIwMDgvMTAvMDUvMmV4cGVydHMtZnJlZS1pY29ucy1zZXQvIj48aW1nIHNyYz0iaHR0cDovL21lZGlhMi5zbWFzaGluZ21hZ2F6aW5lLmNvbS93cC1jb250ZW50L3VwbG9hZHMvaW1hZ2VzL2ZyZWUtaWNvbnMtcm91bmQtdXAvZnJlZS1pY29ucy1yb3VuZC11cC03MC5qcGciIGFsdD0iRnJlZSBJY29ucyBSb3VuZC1VcCAtIEZyZWUgSWNvbnMgOiAyZXhwZXJ0cyBJY29ucyBTZXQsIDEwMCUgRnJlZSAzMCBJY29ucyBTZXQiIHdpZHRoPSI0ODUiIGhlaWdodD0iMzUwIiAvPjwvYT48L3A+CjxwPjxhIGhyZWY9Imh0dHA6Ly93d3cuam9uYXNyYXNrZGVzaWduLmNvbS9kb3dubG9hZHMvZG93bmxvYWRzLmh0bWwiPkRhbmlzaCBSb3lhbHR5IEZyZWU8L2E+PGJyIC8+CkRlc2lnbmVkIGJ5IEpvbmFzIFJhc2suPC9wPgo8cCBjbGFzcz0ic2hvd2Nhc2UiPjxhIGhyZWY9Imh0dHA6Ly93d3cuam9uYXNyYXNrZGVzaWduLmNvbS9kb3dubG9hZHMvZG93bmxvYWRzLmh0bWwiPjxpbWcgc3JjPSJodHRwOi8vbWVkaWExLnNtYXNoaW5nbWFnYXppbmUuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy9pbWFnZXMvZnJlZS1pY29ucy1yb3VuZC11cC9kYW5pc2guanBnIiBhbHQ9IkZyZWUgSWNvbnMgUm91bmQtVXAgLSBTY3JlZW5zaG90IiB3aWR0aD0iNDgwIiBoZWlnaHQ9IjI2MyIgLz48L2E+PC9wPgo8cD48YSBocmVmPSJodHRwOi8vd3d3Lmljb2pveS5jb20vYXJ0aWNsZXMvNDYvIj5PbmViaXQgSWNvbnMgU2V0PC9hPjxiciAvPgo4MCBiZWF1dGlmdWwgaWNvbnMgaW4gdGhlIHJlc29sdXRpb24gNDjDlzQ4cHgsIC5wbmcuIDxhIGhyZWY9Imh0dHA6Ly93d3cuaWNvam95LmNvbS9hcnRpY2xlcy80NC8iPkRvd25sb2FkIHBhcnQgMTwvYT4sIHRvby48L3A+CjxwIGNsYXNzPSJzaG93Y2FzZSI+PGEgaHJlZj0iaHR0cDovL3d3dy5pY29qb3kuY29tL2FydGljbGVzLzQ2LyI+PGltZyBzcmM9Imh0dHA6Ly9tZWRpYTIuc21hc2hpbmdtYWdhemluZS5jb20vd3AtY29udGVudC91cGxvYWRzL2ltYWdlcy9mcmVlLWljb25zLXJvdW5kLXVwL29uZWJpdDEuanBnIiBhbHQ9IkZyZWUgSWNvbnMgUm91bmQtVXAgLSBTY3JlZW5zaG90IiB3aWR0aD0iMzkxIiBoZWlnaHQ9IjMyNCIgLz48L2E+PC9wPgo8cD48YSBocmVmPSJodHRwOi8vbWVkaWExLnNtYXNoaW5nbWFnYXppbmUuY29tLzIwMDgvMDgvMjcvb24tc3RhZ2UtYS1mcmVlLWljb24tc2V0LyI+T24gU3RhZ2UgSWNvbnMgU2V0PC9hPjxiciAvPgpUaGUgc2V0IGNvbnRhaW5zIDQ5IGZyZWUgdmVjdG9yIGljb25zLCBpbmNsdWRpbmcgUFNELCB3aGljaCBjYW4gYmUgdXNlZnVsIGZvciBib3RoIGNvcnBvcmF0ZSBhbmQgcGVyc29uYWwgcHJvamVjdHMuIFlvdSBjYW4gdXNlIHRoZSBzZXQgZm9yIGZyZWUsIHdpdGhvdXQgYW55IHJlc3RyaWN0aW9ucyB3aGF0c29ldmVyLiBUaGUgaWNvbnMgYXJlIGF2YWlsYWJsZSBpbiBQTkcgZm9ybWF0IGluIGEgcmVzb2x1dGlvbiAxMjjDlzEyOCBwaXhlbHMuIEFsc28gaW5jbHVkZWQgaW4gdGhlIHBhY2thZ2UgYXJlIDEwMCUgcHVyZSBzaGFwZS1iYXNlZCBsYXllcmVkIFBTRHMuPC9wPgo8cCBjbGFzcz0ic2hvd2Nhc2UiPjxhIGhyZWY9Imh0dHA6Ly9tZWRpYTIuc21hc2hpbmdtYWdhemluZS5jb20vMjAwOC8wOC8yNy9vbi1zdGFnZS1hLWZyZWUtaWNvbi1zZXQvIj48aW1nIHNyYz0iaHR0cDovL21lZGlhMi5zbWFzaGluZ21hZ2F6aW5lLmNvbS9pbWFnZXMvb24tc3RhZ2UtaWNvbi1zZXQvZGZfb25fc3RhZ2VfcHJldmlldy5qcGciIGFsdD0iIiB3aWR0aD0iNTAwIiBoZWlnaHQ9IjYxMiIgLz48L2E+PC9wPgo8cD48YSBocmVmPSJodHRwOi8vd3d3Lm1vcmNoYS5uZXQvcG9zdC80Ni5odG1sIj5UaGUgQnJvd3NlciBJY29uczwvYT48YnIgLz4KVGhpcyBzZXQgY29udGFpbnMgOSB3ZWIgYnJvd3NlciBpY29ucyBhdmFpbGFibGUgaW4gNjTDlzY0LCAzMsOXMzIgYW5kIDE2w5cxNiBwaXhlbHMuIEluY2x1ZGVzIG1ham9yIGJyb3dzZXJzIGxpa2UgTW96aWxsYSBGaXJlZm94LEludGVybmV0IEV4cGxvcmVyLCBPcGVyYSxHb29nbGUgQ2hyb21lIGFuZCBtb3JlLjwvcD4KPHAgY2xhc3M9InNob3djYXNlIj48YSBocmVmPSJodHRwOi8vd3d3Lm1vcmNoYS5uZXQvcG9zdC80Ni5odG1sIj48aW1nIHNyYz0iaHR0cDovL21lZGlhMi5zbWFzaGluZ21hZ2F6aW5lLmNvbS93cC1jb250ZW50L3VwbG9hZHMvaW1hZ2VzL2ZyZWUtaWNvbnMtcm91bmQtdXAvYnJvdy5qcGciIGFsdD0iRnJlZSBJY29ucyBSb3VuZC1VcCAtIEtJREFVQklTIC1USEUgQlJPV1NFUiIgd2lkdGg9IjUwMCIgaGVpZ2h0PSIyNTAiIC8+PC9hPjwvcD4KPHA+PGEgaHJlZj0iaHR0cDovL21hdGhpbGRlLmRldmlhbnRhcnQuY29tL2FydC9Ta2V0Y2h5LWljb25zLTE3OTg3NzM5Ij5Ta2V0Y2h5IGljb25zPC9hPjwvcD4KPHAgY2xhc3M9InNob3djYXNlIj48YSBocmVmPSJodHRwOi8vbWF0aGlsZGUuZGV2aWFudGFydC5jb20vYXJ0L1NrZXRjaHktaWNvbnMtMTc5ODc3MzkiPjxpbWcgc3JjPSJodHRwOi8vbWVkaWEyLnNtYXNoaW5nbWFnYXppbmUuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy9pbWFnZXMvZnJlZS1pY29ucy1yb3VuZC11cC9mcmVlLWljb25zLXJvdW5kLXVwLTY1LmpwZyIgYWx0PSJGcmVlIEljb25zIFJvdW5kLVVwIC0gU2tldGNoeSBpY29ucyIgd2lkdGg9IjI4NiIgaGVpZ2h0PSI3MDAiIC8+PC9hPjwvcD4KPHA+PGEgaHJlZj0iaHR0cDovL3d3dy5pY29uZWRlbi5jb20vaWNvbi9taWxreS1hLWZyZWUtdmVjdG9yLWljb25zZXQuaHRtbCI+TWlsa3kgSWNvbnMgU2V0PC9hPjxiciAvPgpUaGUgTWlsa3kgc2V0IGNvbnRhaW5zIG1vcmUgdGhhbiAxMzEgaWNvbnMgcHJpbWFyaWx5IGNvbG9yZWQgaW4gZ3JlZW4sIGdpdmluZyBhbiBleWUtcGxlYXNhbnQgbG9vayBhbmQgcHJvbWluZW50IGRpc3BsYXkgb24gZWl0aGVyIGRhcmsgb3IgYnJpZ2h0IGJhY2tncm91bmRzLiBBZnRlciBlaWdodCB0aW1lcyBvZiByZWxlYXNpbmcgdGhlIGljb25zIHNlcGVyYXRlbHkgYXMgZWFjaCBwYXJ0IGF0IE1pbiBUcmFu4oCZcyB3ZWJsb2csIGRlc2lnbmVkIG1vc3RseSBhdCByZXF1ZXN0IGJ5IG91ciB1c2VycyBvciByZWFkZXJzLCBub3cgd2UgZ2F0aGVyZWQgYW5kIHBhY2tlZCB0aGVtIGFsbCBpbnRvIG9uZSBwYWNrYWdlLCBjb252ZW5pZW50bHkgZm9yIHlvdSB0byBnZXQgYWxsIHRoZSBpY29ucyBhdCB0aGUgc2FtZSB0aW1lLjwvcD4KPHAgY2xhc3M9InNob3djYXNlIj48YSBocmVmPSJodHRwOi8vd3d3Lmljb25lZGVuLmNvbS9pY29uL21pbGt5LWEtZnJlZS12ZWN0b3ItaWNvbnNldC5odG1sIj48aW1nIHNyYz0iaHR0cDovL21lZGlhMS5zbWFzaGluZ21hZ2F6aW5lLmNvbS93cC1jb250ZW50L3VwbG9hZHMvaW1hZ2VzL2ZyZWUtaWNvbnMtcm91bmQtdXAvbWlsay5qcGciIGFsdD0iRnJlZSBJY29ucyBSb3VuZC1VcCAtIFNjcmVlbnNob3QiIHdpZHRoPSI0OTgiIGhlaWdodD0iNDQ4IiAvPjwvYT48L3A+CjxwPjxhIGhyZWY9Imh0dHA6Ly9pcGFwdW4uZGV2aWFudGFydC5jb20vYXJ0L01lZGlhLUljb25zLTExMjYxMzIwOCI+TWVkaWEgSWNvbnM8L2E+PGJyIC8+ClRoaXMgaWNvbnMgc2V0IGNvbnRhaW5zIDE1IHNpbXBsZSBpY29ucyBpbiBQTkcgKDEyOMOXMTI4cHgpLCBmb3IgV2luZG93cyBhbmQgTWFjLjwvcD4KPHAgY2xhc3M9InNob3djYXNlIj48YSBocmVmPSJodHRwOi8vaXBhcHVuLmRldmlhbnRhcnQuY29tL2FydC9NZWRpYS1JY29ucy0xMTI2MTMyMDgiPjxpbWcgc3JjPSJodHRwOi8vbWVkaWExLnNtYXNoaW5nbWFnYXppbmUuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy9pbWFnZXMvZnJlZS1pY29ucy1yb3VuZC11cC9mcmVlLWljb25zLXJvdW5kLXVwLTc2LmpwZyIgYWx0PSJGcmVlIEljb25zIFJvdW5kLVVwIC0gTWVkaWEgSWNvbnMiIHdpZHRoPSI1MjUiIGhlaWdodD0iNDMwIiAvPjwvYT48L3A+CjxwPjxhIGhyZWY9Imh0dHA6Ly9tYWN0aGVtZXMyLm5ldC9mb3J1bS92aWV3dG9waWMucGhwP2lkPTE2Nzk2MjM3Ij5BYnNxdWU8L2E+PC9wPgo8cCBjbGFzcz0ic2hvd2Nhc2UiPjxhIGhyZWY9Imh0dHA6Ly9tYWN0aGVtZXMyLm5ldC9mb3J1bS92aWV3dG9waWMucGhwP2lkPTE2Nzk2MjM3Ij48aW1nIHNyYz0iaHR0cDovL21lZGlhMi5zbWFzaGluZ21hZ2F6aW5lLmNvbS93cC1jb250ZW50L3VwbG9hZHMvaW1hZ2VzL2ZyZWUtaWNvbnMtcm91bmQtdXAvZnJlZS1pY29ucy1yb3VuZC11cC05My5wbmciIGFsdD0iRnJlZSBJY29ucyBSb3VuZC1VcCAtIEFic3F1ZSIgd2lkdGg9IjM1MCIgaGVpZ2h0PSIxNjEiIC8+PC9hPjwvcD4KPHA+PGEgaHJlZj0iaHR0cDovL2RhbWllbmcuY29tL2NyZWF0aXZlL2ljb25zL3NpbGstY29tcGFuaW9uLTEtaWNvbnMiPlNpbGsgQ29tcGFuaW9uIDEgKG1vcmUgU2lsayBpY29ucyk8L2E+PGJyIC8+Ck1hcmsgSmFtZXMgKEZhbUZhbUZhbSkgY3JlYXRlZCBhIGdyZWF0IHNldCBvZiAxLDAyMiBzaWxreS1zbW9vdGggMTYmIzIxNTsxNiB0cnVlLWNvbG91ciBpY29ucyBpbiBQTkcgZm9ybWF0LCBhcHRseSBuYW1lZCBTaWxrIEljb25zLiBUaGlzIHNldCBpcyBiYXNlZCB1cG9uIHRoZSA8YSBocmVmPSJodHRwOi8vd3d3LmZhbWZhbWZhbS5jb20vbGFiL2ljb25zL3NpbGsvIj5TaWxrIHNldDwvYT4gYW5kIHByZXNlbnRzIDQ2MCsgbW9yZSBpY29ucyB0aGF0IGFyZSBkZXJpdmF0aW9ucyBhbmQgcmVjb21wb3NpdGlvbnMgb2YgdGhlIG9yaWdpbmFsIHNldC48L3A+CjxwIGNsYXNzPSJzaG93Y2FzZSI+PGEgaHJlZj0iaHR0cDovL2RhbWllbmcuY29tL2NyZWF0aXZlL2ljb25zL3NpbGstY29tcGFuaW9uLTEtaWNvbnMiPjxpbWcgc3JjPSJodHRwOi8vbWVkaWEyLnNtYXNoaW5nbWFnYXppbmUuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy9pbWFnZXMvZnJlZS1pY29ucy1yb3VuZC11cC9mcmVlLWljb25zLXJvdW5kLXVwLTQxLnBuZyIgYWx0PSJGcmVlIEljb25zIFJvdW5kLVVwIC0gU2lsayBDb21wYW5pb24gMSAobW9yZSBTaWxrIGljb25zKSIgd2lkdGg9IjQ0MSIgaGVpZ2h0PSI2MDciIC8+PC9hPjwvcD4KPHA+PGEgaHJlZj0iaHR0cDovL2RyeWljb25zLmNvbS9mcmVlLWljb25zL3ByZXZpZXcvY29xdWV0dGUtcGFydC00LWljb25zLXNldC8iPkNvcXVldHRlIDQgSWNvbnMgU2V0PC9hPjxiciAvPgpUaGUgZm9ydGggcGFydCBvZiB0aGUgQ29xdWV0dGUgZnJlZSBpY29ucyBzZXQgaXMgcG93ZXJlZCBieSBhbm90aGVyIDUwIG5ldyBpY29ucy4gVGhpcyBwbGF5ZnVsIGZyZWUgaWNvbiBzZXQgY29udGFpbnMgY3VydnkgYW5kIGNvbG9yZnVsIGZyZWUgaWNvbnMgbWFkZSB3aXRoIG9uZSBnb2FsLCB0byBnZXQgYWxsIHRoZSBhZmZlY3Rpb24gYW5kIHBsYXlmdWxuZXNzIHRvIHlvdXIgcHJvamVjdHMuICYjODIyMDtDb3F1ZXR0ZSYjODIyMTsgZnJlZSBpY29uIHNldCBjb250YWlucyA1MCBoaWdoIHF1YWxpdHksIGZyZWUgaWNvbnMgaW4gdGhlc2Ugc2l6ZXM6IDE2JiMyMTU7MTZweCwgMzImIzIxNTszMnB4LCA0OCYjMjE1OzQ4cHgsIDY0JiMyMTU7NjRweCBhbmQgMTI4JiMyMTU7MTI4cHggYW5kIDMyLWJpdCB0cmFuc3BhcmVuY3kgUE5HIGZpbGUgZm9ybWF0LjwvcD4KPHAgY2xhc3M9InNob3djYXNlIj48YSBocmVmPSJodHRwOi8vZHJ5aWNvbnMuY29tL2ZyZWUtaWNvbnMvcHJldmlldy9jb3F1ZXR0ZS1wYXJ0LTQtaWNvbnMtc2V0LyI+PGltZyBzcmM9Imh0dHA6Ly9tZWRpYTEuc21hc2hpbmdtYWdhemluZS5jb20vd3AtY29udGVudC91cGxvYWRzL2ltYWdlcy9mcmVlLWljb25zLXJvdW5kLXVwL2NvcTQuanBnIiBhbHQ9IkZyZWUgSWNvbnMgUm91bmQtVXAgLSBTY3JlZW5zaG90IiB3aWR0aD0iNDkwIiBoZWlnaHQ9IjM3NSIgLz48L2E+PC9wPgo8cD48YSBocmVmPSJodHRwOi8vZHJ5aWNvbnMuY29tL2ZyZWUtaWNvbnMvcHJldmlldy9jb3F1ZXR0ZS1wYXJ0LTUtaWNvbnMtc2V0LyI+Q29xdWV0dGUgNSBJY29ucyBTZXQ8L2E+PGJyIC8+ClRoZSBmaWZ0aCBwYXJ0IG9mIHRoZSAmIzgyMjA7Q29xdWV0dGUmIzgyMjE7IGljb24gc2V0IGNvbnRhaW5zIDUwIGhpZ2ggcXVhbGl0eSwgZnJlZSBpY29ucyBpbiB0aGVzZSBzaXplczogMTYmIzIxNTsxNnB4LCAzMiYjMjE1OzMycHgsIDQ4JiMyMTU7NDhweCwgNjQmIzIxNTs2NHB4IGFuZCAxMjgmIzIxNTsxMjhweCBhbmQgMzItYml0IHRyYW5zcGFyZW5jeSBQTkcgZmlsZSBmb3JtYXQuPC9wPgo8cCBjbGFzcz0ic2hvd2Nhc2UiPjxhIGhyZWY9Imh0dHA6Ly9kcnlpY29ucy5jb20vZnJlZS1pY29ucy9wcmV2aWV3L2NvcXVldHRlLXBhcnQtNS1pY29ucy1zZXQvIj48aW1nIHNyYz0iaHR0cDovL21lZGlhMi5zbWFzaGluZ21hZ2F6aW5lLmNvbS93cC1jb250ZW50L3VwbG9hZHMvaW1hZ2VzL2ZyZWUtaWNvbnMtcm91bmQtdXAvY29xMi5qcGciIGFsdD0iRnJlZSBJY29ucyBSb3VuZC1VcCAtIFNjcmVlbnNob3QiIHdpZHRoPSI0OTAiIGhlaWdodD0iMzY5IiAvPjwvYT48L3A+CjxoMz5FLUNvbW1lcmNlIEljb24gU2V0czwvaDM+CjxwPjxhIGhyZWY9Imh0dHA6Ly93d3cubWV6em9ibHVlLmNvbS9pY29ucy9jaGFsa3dvcmsvcGF5bWVudHMvIj5DaGFsa3dvcmsgUGF5bWVudHMgKEZyZWUpIEljb25zPC9hPjxiciAvPgpDaGFsa3dvcmsgUGF5bWVudHMgaXMgYSBmcmVlIHNldCBvZiBvbmxpbmUgcGF5bWVudHMgaWNvbnMsIGRlc2lnbmVkIHRvIHBlcmZlY3RseSBjb21wbGVtZW50IGFsbCBvdGhlciBzZXRzIGluIHRoZSBDaGFsa3dvcmsgRmFtaWx5LiBGZWF0dXJpbmcgMjEgYmFzZSBpY29ucyBhbmQgMTA1IHZhcmlhdGlvbnMsIHRoZXNlIGdyYXBoaWNhbCByZXByZXNlbnRhdGlvbnMgb2YgY29tbW9uIHBheW1lbnQgc2VydmljZXMgYW5kIHBheW1lbnQtcmVsYXRlZCBpbWFnZXJ5IGFyZSBhIGNvbXBsZXRlbHkgZnJlZSBpY29uIHNldCBhdmFpbGFibGUgZm9yIHBlcnNvbmFsIGFuZCBjb21tZXJjaWFsIHByb2plY3RzIGFsaWtlIChhbHRob3VnaCB0aGUgdXN1YWwgQ2hhbGt3b3JrIGxpY2Vuc2UgdGVybXMgc3RpbGwgYXBwbHkpLiAgQ2hhbGt3b3JrIFBheW1lbnRzIGlzIGF2YWlsYWJsZSBpbiAzIHNpemVzIGFuZCA2IGZpbGUgZm9ybWF0czogdHJhbnNwYXJlbnQgUE5HLCBUSUYsIEdJRiwgQk1QLCBXaW5kb3dzIElDTywgYW5kIE1hYyBJQ05TLjwvcD4KPHAgY2xhc3M9InNob3djYXNlIj48YSBocmVmPSJodHRwOi8vd3d3Lm1lenpvYmx1ZS5jb20vaWNvbnMvY2hhbGt3b3JrL3BheW1lbnRzLyI+PGltZyBzcmM9Imh0dHA6Ly9tZWRpYTIuc21hc2hpbmdtYWdhemluZS5jb20vd3AtY29udGVudC91cGxvYWRzL2ltYWdlcy9mcmVlLWljb25zLXJvdW5kLXVwL3BheW0uZ2lmIiBhbHQ9IkZyZWUgSWNvbnMgUm91bmQtVXAgLSBDaGFsa3dvcmsgUGF5bWVudHMgKEZyZWUpIEljb25zIiB3aWR0aD0iNDk4IiBoZWlnaHQ9IjQwMyIgLz48L2E+PC9wPgo8cD48YSBocmVmPSJodHRwOi8vd3d3LnZpc3VhbHBoYXJtLmNvbS9maW5hbmNlX2ljb25fc2V0LyI+RmluYW5jZSBJY29ucyBTZXQ8L2E+PGJyIC8+ClRoZSBpY29ucyBhcmUgZnJlZSBmb3IgcGVyc29uYWwgdXNlIGFuZCBhbHNvIGZyZWUgZm9yIGNvbW1lcmNpYWwgdXNlLCBidXQgdGhlIGRlc2lnbmVycyByZXF1aXJlIGxpbmtpbmcgdG8gdGhlaXIgd2ViIHNpdGUuIFRoZSBhcmNoaXZlIGNvbnRhaW5zIHRoZSBpY29ucyBpbiBhbGwgc2l6ZXMsIFdpbmRvd3MsIE1hYyBhbmQgUE5HIGZvcm1hdHMuPC9wPgo8cCBjbGFzcz0ic2hvd2Nhc2UiPjxhIGhyZWY9Imh0dHA6Ly93d3cudmlzdWFscGhhcm0uY29tL2ZpbmFuY2VfaWNvbl9zZXQvIj48aW1nIHNyYz0iaHR0cDovL21lZGlhMi5zbWFzaGluZ21hZ2F6aW5lLmNvbS93cC1jb250ZW50L3VwbG9hZHMvaW1hZ2VzL2ZyZWUtaWNvbnMtcm91bmQtdXAvZ29sZC5qcGciIGFsdD0iRnJlZSBJY29ucyBSb3VuZC1VcCAtIFNjcmVlbnNob3QiIHdpZHRoPSIyNDkiIGhlaWdodD0iNDgzIiAvPjwvYT48L3A+CjxwPjxhIGhyZWY9Imh0dHA6Ly93d3cuZmluZWljb25zLmNvbS9lbi9mcmVlLWljb25zL2NyZWRpdC1jYXJkcy8iPkNyZWRpdCBDYXJkcyBJY29uczwvYT48YnIgLz4KMjMgZnJlZSBjcmVkaXQgY2FyZCBpY29ucyBmb3IgZnJlZSBkb3dubG9hZC4gPGEgaHJlZj0iaHR0cDovL21lZGlhMS5zbWFzaGluZ21hZ2F6aW5lLmNvbS8yMDA4LzA0LzI1L2ZyZWUtY3JlZGl0LWNhcmQtaWNvbnMtZm9yLW9ubGluZS1zaG9wcy8iPk1vcmUgZnJlZSBjcmVkaXQgY2FyZCBpY29uczwvYT4uPC9wPgo8cCBjbGFzcz0ic2hvd2Nhc2UiPjxhIGhyZWY9Imh0dHA6Ly93d3cuZmluZWljb25zLmNvbS9lbi9mcmVlLWljb25zL2NyZWRpdC1jYXJkcy8iPjxpbWcgc3JjPSJodHRwOi8vbWVkaWEyLnNtYXNoaW5nbWFnYXppbmUuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy9pbWFnZXMvZnJlZS1pY29ucy1yb3VuZC11cC9jYy5naWYiIGFsdD0iRnJlZSBJY29ucyBSb3VuZC1VcCAtIFNjcmVlbnNob3QiIHdpZHRoPSIyODMiIGhlaWdodD0iMTYzIiAvPjwvYT48L3A+CjxwPjxhIGhyZWY9Imh0dHA6Ly93d3cuaWNvbmFyY2hpdmUuY29tL2NhdGVnb3J5L2J1c2luZXNzL2J1c2luZXNzLWljb25zLWJ5LWFoYS1zb2Z0Lmh0bWwiPkJ1c2luZXNzIEljb25zPC9hPjwvcD4KPHAgY2xhc3M9InNob3djYXNlIj48YSBocmVmPSJodHRwOi8vd3d3Lmljb25hcmNoaXZlLmNvbS9jYXRlZ29yeS9idXNpbmVzcy9idXNpbmVzcy1pY29ucy1ieS1haGEtc29mdC5odG1sIj48aW1nIHNyYz0iaHR0cDovL21lZGlhMS5zbWFzaGluZ21hZ2F6aW5lLmNvbS9pbWFnZXMvY29ycG9yYXRlLWljb25zLzE1LmpwZyIgYWx0PSJTYW1wbGUiIHdpZHRoPSI0ODAiIGhlaWdodD0iMjUwIiAvPjwvYT48L3A+CjxwPjxhIGhyZWY9Imh0dHA6Ly9tZWRpYTIuc21hc2hpbmdtYWdhemluZS5jb20vMjAwOC8xMC8wOS9maW5hbmNlLWFuZC1hcHBsaWNhdGlvbnMtYS1mcmVlLWljb24tc2V0LyI+RnJlc2ggSWNvbnMgU2V0PC9hPjxiciAvPgpUaGlzIHNldCBjb250YWlucyA1OSByYXN0ZXIgYW5kIHZlY3RvciBpY29ucy4gVGhlIHNldCBpbmNsdWRlcyBpY29ucyBpbiBQTkcsIElDTlMgYW5kIElDTyBmb3JtYXRzLiBBbiBFUFMgdmVjdG9yIGZpbGUgaXMgYXZhaWxhYmxlIGFzIHdlbGwuPC9wPgo8cCBjbGFzcz0ic2hvd2Nhc2UiPjxhIGhyZWY9Imh0dHA6Ly9tZWRpYTIuc21hc2hpbmdtYWdhemluZS5jb20vMjAwOC8xMC8wOS9maW5hbmNlLWFuZC1hcHBsaWNhdGlvbnMtYS1mcmVlLWljb24tc2V0LyI+PGltZyBzcmM9Imh0dHA6Ly83OC40Ni4xMDguOTgvaW1hZ2VzL2ZpbmFuY2UtYXBwbGljYXRpb24taWNvbi1zZXQvcmVsZWFzZS5qcGciIGFsdD0iIiB3aWR0aD0iNTAwIiBoZWlnaHQ9IjQ1MCIgLz48L2E+PC9wPgo8aDM+VXNlZnVsIEljb24gU2V0czwvaDM+CjxwPjxhIGhyZWY9Imh0dHA6Ly93d3cuZGVzaWduZnJlZWJpZXMub3JnL2ZyZWUtdmVjdG9ycy9mcmVlLW11bHRpbWVkaWEtdmVjdG9yLWljb25zLyI+RnJlZSBNdWx0aW1lZGlhIFZlY3RvciBJY29uczwvYT48YnIgLz4KQSBzZXQgb2YgZnJlZSBtdWx0aW1lZGlhIHZlY3RvciBpY29ucyBpbiB2YXJpb3VzIGNvbG9ycyBhbmQgYnV0dG9uIHN0eWxlcy4gVGhlc2UgYXJlIGFscmVhZHkgdmVjdG9ycyBhbmQgbm90IHNvbWUgb3JkaW5hcnkgdHJhbnNwYXJlbnQgUE5HIGFueW1vcmUgc28geW91IGNhbiBlYXNpbHkgbW9kaWZ5IHRoZW0gdG8geW91ciBoZWFydOKAmXMgZGVzaXJlLiBJ4oCZbSB0aGlua2luZyBvZiBkb2luZyBzb21lIHZlY3RvciBzb2NpYWwgbmV0d29yayBpY29ucyBuZXh0IHRpbWUgYnV0IEnigJltIHN0aWxsIGZpZ3VyaW5nIG91dCBhIGNvbmNlcHQuIEkga25vdyB0aGVyZSBhcmUgYSBsb3Qgb2YgdGhlc2Uga2luZCBvZiBpY29ucyBzY2F0dGVyZWQgYXJvdW5kIGJ1dCBJ4oCZZCBsaWtlIHRvIGRvIHNvbWV0aGluZyBkaWZmZXJlbnQuIFdl4oCZbGwgc2VlLiBJbiB0aGUgbWVhbnRpbWUsIGVuam95IHRoZXNlIHZlY3RvciBpY29ucy4gVGhlc2UgaWNvbnMgY29tZSBpbiB0d28gdmVjdG9yIGZpbGUgZm9ybWF0cywgRVBTIChJbGx1c3RyYXRvciAxMCB1cCkgYW5kIEFJIChJbGx1c3RyYXRvciBDUyB1cCkuPC9wPgo8cCBjbGFzcz0ic2hvd2Nhc2UiPjxhIGhyZWY9Imh0dHA6Ly93d3cuZGVzaWduZnJlZWJpZXMub3JnL2ZyZWUtdmVjdG9ycy9mcmVlLW11bHRpbWVkaWEtdmVjdG9yLWljb25zLyI+PGltZyBzcmM9Imh0dHA6Ly9tZWRpYTEuc21hc2hpbmdtYWdhemluZS5jb20vd3AtY29udGVudC91cGxvYWRzL2ltYWdlcy9mcmVlLWljb25zLXJvdW5kLXVwL211bHRpLmdpZiIgYWx0PSJGcmVlIEljb25zIFJvdW5kLVVwIC0gRnJlZSBNdWx0aW1lZGlhIFZlY3RvciBJY29ucyIgd2lkdGg9IjQ4MCIgaGVpZ2h0PSIyMDkiIC8+PC9hPjwvcD4KPHA+PGEgaHJlZj0iaHR0cDovL25vb2JyLm5ldC8yMDA5LzAyLzE4LWFtYXppbmctaGlnaC1xdWFsaXR5LWljb25zZXRzLyI+Rm9ydHVuZSA1MDAgQmFkZ2VzPC9hPiAoPGVtPnRoZSBzZXQgd2FzIHRha2VuIGRvd24gYWZ0ZXIgdGhpcyBwb3N0IHdhcyBwdWJsaXNoZWQgOig8L2VtPik8YnIgLz4KT3ZlciAyMDAgYmFkZ2VzIG9mIGZhbW91cyBicmFuZHMsIFBTRHMgaW5jbHVkZWQuPC9wPgo8cCBjbGFzcz0ic2hvd2Nhc2UiPjxhIGhyZWY9Imh0dHA6Ly9ub29ici5uZXQvMjAwOS8wMi8xOC1hbWF6aW5nLWhpZ2gtcXVhbGl0eS1pY29uc2V0cy8iPjxpbWcgc3JjPSJodHRwOi8vbWVkaWExLnNtYXNoaW5nbWFnYXppbmUuY29tL2ltYWdlcy9oaWdoLXF1YWxpdHktZnJlZS1pY29ucy9icmFuZHMuZ2lmIiBhbHQ9IiIgd2lkdGg9IjI3NyIgaGVpZ2h0PSI0NTkiIC8+PC9hPjwvcD4KPHA+PGEgaHJlZj0iaHR0cDovL3d3dy5mcmVlaWNvbnNkb3dubG9hZC5jb20vRnJlZV9Eb3dubG9hZHMuYXNwP2lkPTU3MiI+MTcyIGZpbmFsIGNvdW50cnkgZmxhZyBpY29uczwvYT48YnIgLz4KMTcyIGZpbmFsIGNvdW50cnkgZmxhZyBpY29ucy4gNDjDlzQ4IHBuZy48L3A+CjxwIGNsYXNzPSJzaG93Y2FzZSI+PGEgaHJlZj0iaHR0cDovL3d3dy5mcmVlaWNvbnNkb3dubG9hZC5jb20vRnJlZV9Eb3dubG9hZHMuYXNwP2lkPTU3MiI+PGltZyBzcmM9Imh0dHA6Ly9tZWRpYTEuc21hc2hpbmdtYWdhemluZS5jb20vd3AtY29udGVudC91cGxvYWRzL2ltYWdlcy9mcmVlLWljb25zLXJvdW5kLXVwL2ZyZWUtaWNvbnMtcm91bmQtdXAtOTAuanBnIiBhbHQ9IkZyZWUgSWNvbnMgUm91bmQtVXAgLSAxNzIgZmluYWwgY291bnRyeSBmbGFnIGljb25zIiB3aWR0aD0iNDUyIiBoZWlnaHQ9IjMzNiIgLz48L2E+PC9wPgo8cD48YSBocmVmPSJodHRwOi8vd3d3LmFpZ2Eub3JnL2NvbnRlbnQuY2ZtL3N5bWJvbC1zaWducyI+U3ltYm9sIFNpZ25zPC9hPjxiciAvPgpUaGUgY29tcGxldGUgc2V0IG9mIDUwIHBhc3Nlbmdlci9wZWRlc3RyaWFuIHN5bWJvbHMgZGV2ZWxvcGVkIGJ5IEFJR0EgaXMgbm93IGF2YWlsYWJsZSBvbiB0aGUgd2ViLCBmcmVlIG9mIGNoYXJnZS4gU2lnbnMgYXJlIGF2YWlsYWJsZSBpbiBFUFMgYW5kIEdJRiBmb3JtYXRzLjwvcD4KPHAgY2xhc3M9InNob3djYXNlIj48YSBocmVmPSJodHRwOi8vd3d3LmFpZ2Eub3JnL2NvbnRlbnQuY2ZtL3N5bWJvbC1zaWducyI+PGltZyBzcmM9Imh0dHA6Ly9tZWRpYTIuc21hc2hpbmdtYWdhemluZS5jb20vd3AtY29udGVudC91cGxvYWRzL2ltYWdlcy9mcmVlLWljb25zLXJvdW5kLXVwL3N5bWIuZ2lmIiBhbHQ9IkZyZWUgSWNvbnMgUm91bmQtVXAgLSBTeW1ib2wgU2lnbnMiIHdpZHRoPSIzNjMiIGhlaWdodD0iMzA2IiAvPjwvYT48L3A+CjxwPjxhIGhyZWY9Imh0dHA6Ly93d3cudmVjdGVlenkuY29tL3ZmLzcyNC1GcmVlLVZlY3Rvci1JY29ucy1QYWNrLTAzIj5GcmVlIFZlY3RvciBJY29ucyBQYWNrIDAzPC9hPjxiciAvPgpWZWN0b3IgdGVtcGxhdGUuPC9wPgo8cCBjbGFzcz0ic2hvd2Nhc2UiPjxhIGhyZWY9Imh0dHA6Ly93d3cudmVjdGVlenkuY29tL3ZmLzcyNC1GcmVlLVZlY3Rvci1JY29ucy1QYWNrLTAzIj48aW1nIHNyYz0iaHR0cDovL21lZGlhMi5zbWFzaGluZ21hZ2F6aW5lLmNvbS93cC1jb250ZW50L3VwbG9hZHMvaW1hZ2VzL2ZyZWUtaWNvbnMtcm91bmQtdXAvdHJhdmVsLmpwZyIgYWx0PSJGcmVlIEljb25zIFJvdW5kLVVwIC0gaVBob25lIFVJIEljb24gU2V0IiB3aWR0aD0iNDU0IiBoZWlnaHQ9IjM0NyIgLz48L2E+PC9wPgo8cD48YSBocmVmPSJodHRwOi8vZ3JhcGhpY2R6bnIuY29tL2Rvd25sb2Fkcy8iPkF1ZGlvIEdlYXIgSWNvbiBTZXQ8L2E+PGJyIC8+CkEgc21hbGwgc2V0IG9mIDQ4w5c0OHB4IGljb25zOiBNLUJveCwgYW4gTS1BdWRpbyBBeGlvbSAyNSBNaWRpIGtleWJvYXJkIGFuZCBUYXBjbyBTNSBtb25pdG9yIHNwZWFrZXJzLiBUaGVzZSBpY29ucyBhcmUgZnJlZSBmb3IgcGVyc29uYWwgdXNlLiBBdmFpbGFibGUgaW4gLklDTlMsIC5QTkcgYW5kIGFzIGEgQ2FuZHliYXIgaUNvbnRhaW5lci48L3A+CjxwIGNsYXNzPSJzaG93Y2FzZSI+PGEgaHJlZj0iaHR0cDovL2dyYXBoaWNkem5yLmNvbS9kb3dubG9hZHMvIj48aW1nIHNyYz0iaHR0cDovL21lZGlhMi5zbWFzaGluZ21hZ2F6aW5lLmNvbS93cC1jb250ZW50L3VwbG9hZHMvaW1hZ2VzL2ZyZWUtaWNvbnMtcm91bmQtdXAvYXVkaW9nZWFyLnBuZyIgYWx0PSJGcmVlIEljb25zIFJvdW5kLVVwIC0gU2NyZWVuc2hvdCIgd2lkdGg9IjMwMCIgaGVpZ2h0PSIyMDAiIC8+PC9hPjwvcD4KPGgzPlNvY2lhbCBJY29uIFNldHM8L2gzPgo8cD48YSBocmVmPSJodHRwOi8vd3d3LmtvbW9kb21lZGlhLmNvbS9ibG9nLzIwMDgvMTIvc29jaWFsLW1lZGlhLW1pbmktaWNvbnBhY2svIj5Tb2NpYWwgTWVkaWEgTWluaSBJY29ucGFjazwvYT48YnIgLz4KVGhpcyBpY29uIHNldCBjb25zaXN0cyBvZiAzMCAoMTbDlzE2KSBmaW5lbHkgY3JhZnRlZCBzb2NpYWwgbWVkaWEgaWNvbnMuIFRoZXkgYXJlIGZyZWUgdG8gdXNlIG5vbi1jb21tZXJjaWFsbHkuIFB1dCB0aGVtIG9uIHlvdXIgYmxvZyBvciBvbiB5b3VyIHdlYnNpdGUgdG8gaGVscCB1c2VycyBib29rbWFyayBvciBzaGFyZSB5b3VyIHNpdGUgc29jaWFsbHkuIEkgaGVhciBpdHMgYWxsLXRoZS1yYWdlIHRoZXNlIGRheXMuIFRoaXMgaWNvbiBwYWNrIGNvbnNpc3RzIG9mIHRoZSBmb2xsb3dpbmcgaWNvbnMsIGluIGFic29sdXRlbHkgbm8gbG9naWNhbCBvcmRlcjo8L3A+CjxwIGNsYXNzPSJzaG93Y2FzZSI+PGEgaHJlZj0iaHR0cDovL3d3dy5rb21vZG9tZWRpYS5jb20vYmxvZy8yMDA4LzEyL3NvY2lhbC1tZWRpYS1taW5pLWljb25wYWNrLyI+PGltZyBzcmM9Imh0dHA6Ly9tZWRpYTIuc21hc2hpbmdtYWdhemluZS5jb20vd3AtY29udGVudC91cGxvYWRzL2ltYWdlcy9mcmVlLWljb25zLXJvdW5kLXVwL3NtbS5qcGciIGFsdD0iRnJlZSBJY29ucyBSb3VuZC1VcCAtIFNvY2lhbCBNZWRpYSBNaW5pIEljb25wYWNrIiB3aWR0aD0iMzE2IiBoZWlnaHQ9IjI2NiIgLz48L2E+PC9wPgo8cD48YSBocmVmPSJodHRwOi8vd3d3LmZyZWVpY29uc2Rvd25sb2FkLmNvbS9GcmVlX0Rvd25sb2Fkcy5hc3A/aWQ9NTYyIj5JY29ucyBDbG91ZDwvYT48YnIgLz4KU29jaWFsIGljb24gc2V0IHdpdGggaWNvbnMgc2hhcGVkIGNsb3VkLiBQTkcuPC9wPgo8cCBjbGFzcz0ic2hvd2Nhc2UiPjxhIGhyZWY9Imh0dHA6Ly93d3cuZnJlZWljb25zZG93bmxvYWQuY29tL0ZyZWVfRG93bmxvYWRzLmFzcD9pZD01NjIiPjxpbWcgc3JjPSJodHRwOi8vbWVkaWEyLnNtYXNoaW5nbWFnYXppbmUuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy9pbWFnZXMvZnJlZS1pY29ucy1yb3VuZC11cC9JY29ucy1DbG91ZC00NTIuanBnIiBhbHQ9IkZyZWUgSWNvbnMgUm91bmQtVXAgLSBJY29ucyBDbG91ZCIgd2lkdGg9IjQ1MiIgaGVpZ2h0PSIzMzYiIC8+PC9hPjwvcD4KPHA+PGEgaHJlZj0iaHR0cDovL3d3dy5wcm9kdWN0aXZlZHJlYW1zLmNvbS9wYWdlLXBlZWwtZnJlZS1zb2NpYWwtaWNvbnNldC8iPlBhZ2UgUGVlbDwvYT48YnIgLz4KVGhlIHNldCBjb250YWlucyAxNiBzb2NpYWwgaWNvbnMgaW4gKHRyYW5zcGFyZW50KSBQTkcgZm9ybWF0LjwvcD4KPHAgY2xhc3M9InNob3djYXNlIj48YSBocmVmPSJodHRwOi8vd3d3LnByb2R1Y3RpdmVkcmVhbXMuY29tL3BhZ2UtcGVlbC1mcmVlLXNvY2lhbC1pY29uc2V0LyI+PGltZyBzcmM9Imh0dHA6Ly9tZWRpYTIuc21hc2hpbmdtYWdhemluZS5jb20vd3AtY29udGVudC91cGxvYWRzL2ltYWdlcy9mcmVlLWljb25zLXJvdW5kLXVwL3BlZWwuanBnIiBhbHQ9IkZyZWUgSWNvbnMgUm91bmQtVXAgLSBQYWdlIFBlZWwgLSBBIEZyZWUgU29jaWFsIE1lZGlhIiB3aWR0aD0iNDgwIiBoZWlnaHQ9IjUzNSIgLz48L2E+PC9wPgo8cD48YSBocmVmPSJodHRwOi8va2FpbG9vbi5jb20vZnJlZS12ZWN0b3ItaWNvbnMtc2V0LXR3aXR0ZXItYmlyZHktaWNvbi8iPkZyZWUgVmVjdG9yIEljb25zIFNldCArIFR3aXR0ZXIgQmlyZHkgSWNvbjwvYT48L3A+CjxwIGNsYXNzPSJzaG93Y2FzZSI+PGEgaHJlZj0iaHR0cDovL2thaWxvb24uY29tL2ZyZWUtdmVjdG9yLWljb25zLXNldC10d2l0dGVyLWJpcmR5LWljb24vIj48aW1nIHNyYz0iaHR0cDovL21lZGlhMi5zbWFzaGluZ21hZ2F6aW5lLmNvbS93cC1jb250ZW50L3VwbG9hZHMvaW1hZ2VzL2ZyZWUtaWNvbnMtcm91bmQtdXAvZnJlZS1pY29ucy1yb3VuZC11cC03MS5wbmciIGFsdD0iRnJlZSBJY29ucyBSb3VuZC1VcCAtIEZyZWUgVmVjdG9yIEljb25zIFNldCArIFR3aXR0ZXIgQmlyZHkgSWNvbiIgd2lkdGg9IjQwMCIgaGVpZ2h0PSIyNzEiIC8+PC9hPjwvcD4KPHA+PGEgaHJlZj0iaHR0cDovL3d3dy5qYW5rb2F0d2FycHNwZWVkLmNvbS9wb3N0LzIwMDkvMDIvMjMvSGFuZHljb25zLTItYW5vdGhlci1mcmVlLWhhbmQtZHJhd24taWNvbi1zZXQuYXNweCI+SGFuZHljb25zIDIgLSBhbm90aGVyIGZyZWUgaGFuZCBkcmF3biBpY29uIHNldDwvYT48YnIgLz4KVGhpcyBpY29ucyBzZXQgY29udGFpbnMgRmFjZWJvb2ssIEJsaW5rbGlzdCwgRmVlZGJ1cm5lciwgRmxpY2tyLCBGcmllbmRGZWVkLCBGdXJsLCBHbWFpbCwgR29vZ2xlLCBIZWFydCBpY29uLCBMYXN0IEZNLCBMaW5rZWQgSU4sIE1hZ25vbGlhLCBOZXdzdmluZSwgUGF5UGFsLCBTa3lwZSwgU3BoaW5uLCBUd2l0dGVyLCBWaW1lbywgWWFob28gYW5kIFlvdSBUdWJlIGljb25zLiBBbGwgaWNvbnMgY29tZSBpbiBmb3VyIHNpemVzOiAxNiYjMjE1OzE2LCAzMiYjMjE1OzMyLCA2NCYjMjE1OzY0IGFuZCAxMiYjMjE1OzEyOHB4LiBBbmQgdGhleSBhcmUgYWxsIGZyZWUuPC9wPgo8cCBjbGFzcz0ic2hvd2Nhc2UiPjxhIGhyZWY9Imh0dHA6Ly93d3cuamFua29hdHdhcnBzcGVlZC5jb20vcG9zdC8yMDA5LzAyLzIzL0hhbmR5Y29ucy0yLWFub3RoZXItZnJlZS1oYW5kLWRyYXduLWljb24tc2V0LmFzcHgiPjxpbWcgc3JjPSJodHRwOi8vbWVkaWEyLnNtYXNoaW5nbWFnYXppbmUuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy9pbWFnZXMvZnJlZS1pY29ucy1yb3VuZC11cC9mcmVlLWljb25zLXJvdW5kLXVwLTY2LmpwZyIgYWx0PSJGcmVlIEljb25zIFJvdW5kLVVwIC0gSGFuZHljb25zIDIgLSBhbm90aGVyIGZyZWUgaGFuZCBkcmF3biBpY29uIHNldCIgd2lkdGg9IjUwMCIgaGVpZ2h0PSIzMzMiIC8+PC9hPjwvcD4KPHA+PGEgaHJlZj0iaHR0cDovL3d3dy5jaGFyZmlzaGRlc2lnbi5jb20vZ29vZGllcy8xOS1mcmVlLWhhbmQtZHJhd24tc2tldGNoLWljb25zLyI+MTkgRnJlZSBIYW5kLURyYW4gU2tldGNoIEljb25zPC9hPjxiciAvPgpFYWNoIGljb24gaXMgYSAuSlBHIGFuZCBjb21lcyBpbiB0d28gc2l6ZXM6IDQ4w5c0OHB4IGFuZCA5NsOXOTZweC4gRWFjaCBpcyBkYXJrIGdyZXlpc2ggb24gYSB3aGl0ZSBiYWNrZ3JvdW5kLjwvcD4KPHAgY2xhc3M9InNob3djYXNlIj48YSBocmVmPSJodHRwOi8vd3d3LmNoYXJmaXNoZGVzaWduLmNvbS9nb29kaWVzLzE5LWZyZWUtaGFuZC1kcmF3bi1za2V0Y2gtaWNvbnMvIj48aW1nIHNyYz0iaHR0cDovL21lZGlhMS5zbWFzaGluZ21hZ2F6aW5lLmNvbS93cC1jb250ZW50L3VwbG9hZHMvaW1hZ2VzL2ZyZWUtaWNvbnMtcm91bmQtdXAvZnJlZS1pY29ucy1yb3VuZC11cC02Ny5qcGciIGFsdD0iRnJlZSBJY29ucyBSb3VuZC1VcCAtIENoYXJmaXNoIERlc2lnbiAtIDE5IEZyZWUgaGFuZC1kcmF3biBza2V0Y2ggaWNvbnMiIHdpZHRoPSIyNjIiIGhlaWdodD0iMjQzIiAvPjwvYT48L3A+CjxwPjxhIGhyZWY9Imh0dHA6Ly93ZWJ0b29sa2l0NC5tZS8yMDA5LzAzLzE3L3BvbGFyb2lkLWljb24tc2V0LyI+UG9sYXJvaWQgaWNvbiBzZXQ8L2E+PGJyIC8+CllvdVR1YmUsIERlbGljaW91cywgUlNTLCBUd2l0dGVyLCBGYWNlYm9vaywgRmxpY2tyLCBEaWdnLCBTdHVtYmxlVXBvbiwgbXlTcGFjZSwgRmVlZGJ1cm5lciwgU2t5cGUsIFlhaG9vLCBMYXN0LmZtLCBMaW5raW4sIFJlZGRpdCBhbmQgR21haWwuPC9wPgo8cCBjbGFzcz0ic2hvd2Nhc2UiPjxhIGhyZWY9Imh0dHA6Ly93ZWJ0b29sa2l0NC5tZS8yMDA5LzAzLzE3L3BvbGFyb2lkLWljb24tc2V0LyI+PGltZyBzcmM9Imh0dHA6Ly9tZWRpYTEuc21hc2hpbmdtYWdhemluZS5jb20vd3AtY29udGVudC91cGxvYWRzL2ltYWdlcy9mcmVlLWljb25zLXJvdW5kLXVwL2ZyZWUtaWNvbnMtcm91bmQtdXAtNjkuanBnIiBhbHQ9IkZyZWUgSWNvbnMgUm91bmQtVXAgLSBQb2xhcm9pZCBpY29uIHNldCIgd2lkdGg9IjU5MCIgaGVpZ2h0PSIyODAiIC8+PC9hPjwvcD4KPHA+PGEgaHJlZj0iaHR0cDovL21hc3RlcmZpZGdldGVyLmNvbS8yMDA5LzAyL2RlYWQtc2ltcGxlLXNvY2lhbC1tZWRpYS1pY29ucy8iPkRlYWQtU2ltcGxlIFNvY2lhbCBNZWRpYSBJY29ucyB8IE1hc3RlciBGaWRnZXRlcjwvYT48YnIgLz4KU2ltcGxlLCBjbGVhbiBhbmQgYmVhdXRpZnVsLiAxNsOXMTZweCBtaW5pLXNvY2lhbCBpY29ucy48L3A+CjxwIGNsYXNzPSJzaG93Y2FzZSI+PGEgaHJlZj0iaHR0cDovL21hc3RlcmZpZGdldGVyLmNvbS8yMDA5LzAyL2RlYWQtc2ltcGxlLXNvY2lhbC1tZWRpYS1pY29ucy8iPjxpbWcgc3JjPSJodHRwOi8vbWVkaWEyLnNtYXNoaW5nbWFnYXppbmUuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy9pbWFnZXMvZnJlZS1pY29ucy1yb3VuZC11cC9mcmVlLWljb25zLXJvdW5kLXVwLTcyLmpwZyIgYWx0PSJGcmVlIEljb25zIFJvdW5kLVVwIC0gRGVhZC1TaW1wbGUgU29jaWFsIE1lZGlhIEljb25zIHwgTWFzdGVyIEZpZGdldGVyIiB3aWR0aD0iMzM0IiBoZWlnaHQ9IjI3OSIgLz48L2E+PC9wPgo8cD48YSBocmVmPSJodHRwOi8vaWNvbnRleHRvLmJsb2dzcG90LmNvbS8yMDA5LzA0L2ljb250ZXh0by13ZWItMjAtdXNlci5odG1sIj5JY29uVGV4dG8gV2ViIDIuMCBVc2VyPC9hPjxiciAvPgoyOCBpY29ucyBpbiBmb3JtYXRzIFBORyAoMjU2JiMyMTU7MjU2LCAxMjgmIzIxNTsxMjgsIDQ4JiMyMTU7NDgsIDMyJiMyMTU7MzIsIDE2JiMyMTU7MTYpLCBJQ08gKDI1NiYjMjE1OzI1NiwgMTI4JiMyMTU7MTI4LCA0OCYjMjE1OzQ4LCAzMiYjMjE1OzMyLCAxNiYjMjE1OzE2KSBhbmQgSUNOUyAoMjU2JiMyMTU7MjU2LCAxMjgmIzIxNTsxMjgsIDQ4JiMyMTU7NDgsIDMyJiMyMTU7MzIsIDE2JiMyMTU7MTYpLjwvcD4KPHAgY2xhc3M9InNob3djYXNlIj48YSBocmVmPSJodHRwOi8vaWNvbnRleHRvLmJsb2dzcG90LmNvbS8yMDA5LzA0L2ljb250ZXh0by13ZWItMjAtdXNlci5odG1sIj48aW1nIHNyYz0iaHR0cDovL21lZGlhMi5zbWFzaGluZ21hZ2F6aW5lLmNvbS93cC1jb250ZW50L3VwbG9hZHMvaW1hZ2VzL2ZyZWUtaWNvbnMtcm91bmQtdXAvZnJlZS1pY29ucy1yb3VuZC11cC03NS5qcGciIGFsdD0iRnJlZSBJY29ucyBSb3VuZC1VcCAtIEljb25UZXh0bzogSWNvblRleHRvIFdlYiAyLjAgVXNlciIgd2lkdGg9IjM5MCIgaGVpZ2h0PSIzOTAiIC8+PC9hPjwvcD4KPHA+PGEgaHJlZj0iaHR0cDovL3RoZWctZm9yY2UuZGV2aWFudGFydC5jb20vYXJ0L1NvY2lhbC1JY29ucy1oYW5kLWRyYXduZWQtMTA5NDY3MDY5Ij5Tb2NpYWwgSWNvbnMgSGFuZC1EcmF3bjwvYT48YnIgLz4KVGhpcyBzZXQgaW5jbHVkZXMgaWNvbnMgZm9yIEJsaXAuZm0sIERpZ2csIEZhY2Vib29rLCBGaXJlZm94LCBGbGlja3IsIE1lbmVhbWUsIE15c3BhY2UsIFRlY2hub3JhdGksIFR3aXR0ZXIsIFZpbWVvLCBXb3JkcHJlc3MsIFlvdXR1YmUsIExhc3RGTSwgUlNTLCBCbG9nZ2VyLCBHTWFpbCwgUmVkZGl0IGFuZCBTdHVtYmxlVXBvbi4gVGhlIGljb25zIGFyZSBhdmFpbGFibGUgaW4gdGhlIHNpemVzIDI0JiMyMTU7MjQsIDMyJiMyMTU7MzIsIDQ4JiMyMTU7NDggYW5kIDY0JiMyMTU7NjQuIFJlbGVhc2VkIHVuZGVyIENyZWF0aXZlIENvbW1vbnMgbGljZW5zZS48L3A+CjxwIGNsYXNzPSJzaG93Y2FzZSI+PGEgaHJlZj0iaHR0cDovL3RoZWctZm9yY2UuZGV2aWFudGFydC5jb20vYXJ0L1NvY2lhbC1JY29ucy1oYW5kLWRyYXduZWQtMTA5NDY3MDY5Ij48aW1nIHNyYz0iaHR0cDovL21lZGlhMi5zbWFzaGluZ21hZ2F6aW5lLmNvbS93cC1jb250ZW50L3VwbG9hZHMvaW1hZ2VzL2ZyZWUtaWNvbnMtcm91bmQtdXAvc20uZ2lmIiBhbHQ9IkZyZWUgSWNvbnMgUm91bmQtVXAgLSBTY3JlZW5zaG90IiB3aWR0aD0iMzM0IiBoZWlnaHQ9IjQ3MCIgLz48L2E+PC9wPgo8cD48YSBocmVmPSJodHRwOi8vd3d3LmJsb2dwZXJmdW1lLmNvbS9zb2NpYWwtbWVkaWEtaWNvbnMtcGFjay1pbi0zLXNpemVzLWZvci1kb3dubG9hZC8iPkNpcmN1bGFyIFNvY2lhbCBJY29uczwvYT48YnIgLz4KVGhlIHppcCBmaWxlIGluY2x1ZGVzIDMgc2l6ZXMgZm9yIDE3IGljb25zOiAxMjjDlzEyOHB4LCA2NMOXNjRweCBhbmQgMzLDlzMycHguIFRoZXJlIGlzIGFuIGljb24gZm9yIHRoZSBmb2xsb3dpbmc6IEJsb2dnZXIsIERlbGljaW91cywgRGVzaWduRmxvYXQsIERpZ2csIEZhY2Vib29rLCBGbGlja3IsIEdvb2dsZSwgYSBoZWFydCBpY29uIHRoYXQgd2lsbCB3b3JrIGZvciBhbnl0aGluZyAoc3VjaCBhcyBib29rbWFyayksIE15U3BhY2UsIFJlZGRpdCwgYW4gUlNTIGljb24sIFN0dW1ibGVVcG9uLCBUZWNobm9yYXRpLCBUd2l0dGVyLCBXb3JkUHJlc3MsIFlhaG9vISBhbmQgWW91VHViZS4gRGVzaWduZWQgYnkgRWxpIEJ1cmZvcmQgZnJvbSBBdXN0cmFsaWEuPC9wPgo8cCBjbGFzcz0ic2hvd2Nhc2UiPjxhIGhyZWY9Imh0dHA6Ly93d3cuYmxvZ3BlcmZ1bWUuY29tL3NvY2lhbC1tZWRpYS1pY29ucy1wYWNrLWluLTMtc2l6ZXMtZm9yLWRvd25sb2FkLyI+PGltZyBzcmM9Imh0dHA6Ly9tZWRpYTEuc21hc2hpbmdtYWdhemluZS5jb20vd3AtY29udGVudC91cGxvYWRzL2ltYWdlcy9mcmVlLWljb25zLXJvdW5kLXVwL2ZyZWUtaWNvbnMtcm91bmQtdXAtNDIuanBnIiBhbHQ9IkZyZWUgSWNvbnMgUm91bmQtVXAgLSBTb2NpYWwgTWVkaWEgSWNvbnMgUGFjayBpbiAzIFNpemVzIGZvciBEb3dubG9hZCIgd2lkdGg9IjUyMCIgaGVpZ2h0PSIyMTAiIC8+PC9hPjwvcD4KPGgzPkJlYXV0aWZ1bCBHZW5lcmFsIEljb24gU2V0czwvaDM+CjxwPjxhIGhyZWY9Imh0dHA6Ly9tYWN0aGVtZXMyLm5ldC9mb3J1bS92aWV3dG9waWMucGhwP2lkPTE2Nzk1NTU4Ij5NYW5pbGEgTWFpbDwvYT48YnIgLz5BIG1hbmlsYSBlbnZlbG9wZSBzdHlsZSBtYWlsIHJlcGxhY2VtZW50LjwvcD4KPHAgY2xhc3M9InNob3djYXNlIj48YSBocmVmPSJodHRwOi8vbWFjdGhlbWVzMi5uZXQvZm9ydW0vdmlld3RvcGljLnBocD9pZD0xNjc5NTU1OCI+PGltZyBzcmM9Imh0dHA6Ly9tZWRpYTEuc21hc2hpbmdtYWdhemluZS5jb20vd3AtY29udGVudC91cGxvYWRzL2ltYWdlcy9mcmVlLWljb25zLXJvdW5kLXVwL2ZyZWUtaWNvbnMtcm91bmQtdXAtOTcucG5nIiBhbHQ9IkZyZWUgSWNvbnMgUm91bmQtVXAgLSBNYWMgUmVsZWFzZXMgSWNvbiBNYW5pbGEgTWFpbCIgd2lkdGg9IjUwMCIgaGVpZ2h0PSIyODIiIC8+PC9hPjwvcD4KPHA+PGEgaHJlZj0iaHR0cDovL2ZyZWViaWVzZG9jay5jb20vYmFnZ3ktaWNvbi1zZXQtcmVsZWFzZWQvIj5CYWdneSBJY29uIFNldDwvYT48YnIgLz4KQmFnZ3kgSWNvbiBTZXQgd2FzIGRlc2lnbmVkIGJ5IFBhdWwgS2FkeXN6LiBJdCBjb250YWlucyA1IGhpZ2ggcXVhbGl0eSBpY25zLiBUaGlzIHRpbWUgd2XigJl2ZSBnb3QgMyBkaWZmZXJlbnQgZm9ybWF0cyAoLmljbywgLmljbnMgYW5kIC5wbmcpIGFuZCA2IHNpemVzISA1MTJweC0xNnB4IChleGNlcHQgLnBuZykuIEhlcmXigJlzIGhvdyB0aGUgc2V0IGxvb2tzIGxpa2UuPC9wPgo8cCBjbGFzcz0ic2hvd2Nhc2UiPjxhIGhyZWY9Imh0dHA6Ly9mcmVlYmllc2RvY2suY29tL2JhZ2d5LWljb24tc2V0LXJlbGVhc2VkLyI+PGltZyBzcmM9Imh0dHA6Ly9tZWRpYTIuc21hc2hpbmdtYWdhemluZS5jb20vd3AtY29udGVudC91cGxvYWRzL2ltYWdlcy9mcmVlLWljb25zLXJvdW5kLXVwL2ZyZWUtaWNvbnMtcm91bmQtdXAtMy5qcGciIGFsdD0iRnJlZSBJY29ucyBSb3VuZC1VcCAtIEJhZ2d5IEljb24gU2V0IiB3aWR0aD0iNDc4IiBoZWlnaHQ9IjQ1MiIgLz48L2E+PC9wPgo8cD48YSBocmVmPSJodHRwOi8vZGV1c2V4NzQuZGV2aWFudGFydC5jb20vYXJ0L0RPWC1BRERPTi1BcmNoaXZlci0xMjE0MzkzNzYiPkRveDwvYT48YnIgLz4KVGhlIHNldCBjb250YWlucyA0NyBJQ05TIGluIGlDT05UQUlORVIgZm9ybWF0LjwvcD4KPHAgY2xhc3M9InNob3djYXNlIj48YSBocmVmPSJodHRwOi8vZGV1c2V4NzQuZGV2aWFudGFydC5jb20vYXJ0L0RPWC1BRERPTi1BcmNoaXZlci0xMjE0MzkzNzYiPjxpbWcgc3JjPSJodHRwOi8vbWVkaWEyLnNtYXNoaW5nbWFnYXppbmUuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy9pbWFnZXMvZnJlZS1pY29ucy1yb3VuZC11cC9kb3guanBnIiBhbHQ9IkZyZWUgSWNvbnMgUm91bmQtVXAgLSBET1ggQURET04gLSBBcmNoaXZlciBieSB+RGV1c0V4NzQgb24gZGV2aWFudEFSVCIgd2lkdGg9IjQ4MCIgaGVpZ2h0PSIzNDciIC8+PC9hPjwvcD4KPHA+PGEgaHJlZj0iaHR0cDovL2RsYW5oYW0uY29tL2FydC9hZ3VhLyI+QWd1YSBJY29ucyBTZXQ8L2E+PGJyIC8+CjM1MCBmcmVlIGJlYXV0aWZ1bCBkZXNrdG9wIGljb25zIHRoYXQgY2FuIGFsc28gYmUgdXNlZCBvbmxpbmUuIERlc2lnbmVkIGJ5IHRoZSBtYXN0ZXIgRGF2aWQgTGFuaGFtLjwvcD4KPHAgY2xhc3M9InNob3djYXNlIj48YSBocmVmPSJodHRwOi8vZGxhbmhhbS5jb20vYXJ0L2FndWEvIj48aW1nIHNyYz0iaHR0cDovL21lZGlhMi5zbWFzaGluZ21hZ2F6aW5lLmNvbS93cC1jb250ZW50L3VwbG9hZHMvaW1hZ2VzL2ZyZWUtaWNvbnMtcm91bmQtdXAvYWd1YS5qcGciIGFsdD0iRnJlZSBJY29ucyBSb3VuZC1VcCAtIFNjcmVlbnNob3QiIHdpZHRoPSI0OTMiIGhlaWdodD0iMzQzIiAvPjwvYT48L3A+CjxwPjxhIGhyZWY9Imh0dHA6Ly93d3cuZnJlZWljb25zZG93bmxvYWQuY29tL0JpZ19QcmV2aWV3LmFzcD9pZD01NzMiPjMwIGZyZWUgb2ZmaWNlIEljb25zPC9hPjxiciAvPgozMCBmcmVlIG9mZmljZSBpY29ucyB3aGljaCByZW5kZXJlZCBhdCAyNTYmIzIxNTsyNTYsIDEyOCYjMjE1OzEyOCwgNjQmIzIxNTs2NCwgNDgmIzIxNTs0OCwgMzImIzIxNTszMiwgMjQmIzIxNTsyNCwgMTYmIzIxNTsxNiBwaXhlbHMgYW5kIGZvcm1hdHMgYXJlIHBuZywgaWNvIGFuZCBpY25zLjwvcD4KPHAgY2xhc3M9InNob3djYXNlIj48YSBocmVmPSJodHRwOi8vd3d3LmZyZWVpY29uc2Rvd25sb2FkLmNvbS9CaWdfUHJldmlldy5hc3A/aWQ9NTczIj48aW1nIHNyYz0iaHR0cDovL21lZGlhMi5zbWFzaGluZ21hZ2F6aW5lLmNvbS93cC1jb250ZW50L3VwbG9hZHMvaW1hZ2VzL2ZyZWUtaWNvbnMtcm91bmQtdXAvZnJlZS1pY29ucy1yb3VuZC11cC04NS5wbmciIGFsdD0iRnJlZSBJY29ucyBSb3VuZC1VcCAtIDMwIGZyZWUgb2ZmaWNlIEljb25zIiB3aWR0aD0iNDUyIiBoZWlnaHQ9IjMzNiIgLz48L2E+PC9wPgo8cD48YSBocmVmPSJodHRwOi8vbWVkaWExLnNtYXNoaW5nbWFnYXppbmUuY29tLzIwMDkvMDQvMjcvcHJvamVjdC1pY29uLXNldC1mb3ItZnJlZS1kb3dubG9hZC8iPlByb2plY3QgSWNvbiBTZXQgRm9yIEZyZWUgRG93bmxvYWQ8L2E+PGJyIC8+ClRoaXMgaWNvbiBzZXQsIGRlc2lnbmVkIGJ5IE5hdmRlZXAgUmFqIGFuZCByZWxlYXNlZCBmb3IgU21hc2hpbmcgTWFnYXppbmUgYW5kIGl0cyByZWFkZXJzLCBjb250YWlucyAxOCBiZWF1dGlmdWwgaWNvbnMgcmVsYXRlZCB0byBwcm9qZWN0IG1hbmFnZW1lbnQuIFRoZSBzZXQgaW5jbHVkZXMgdGhlIGljb25zIGFkZHJlc3MgY2FyZCwgYmFyIGdyYXBoLCBjYWxlbmRhciwgY2xvY2sgLyB0aW1lLCBjb25mZXJlbmNlIGRldmljZSwgY29udGFjdCwgZG9jdW1lbnRzLCBkcmFmdCwgbWFpbCwgbWFya2VyLCBtaWxlc3RvbmUsIG5vdGVzLCBwb3J0Zm9saW8sIHByb2plY3QgcGxhbiAvIGdhbnQgY2hhcnQsIHNlYXJjaCAvIGZpbmQsIHNpdGVtYXAgLyBmbG93Y2hhcnQsIHRvZG8gYW5kIHVzZXIgLyByZXNvdXJjZS4gVGhlIGZpbGVzIGFyZSB0cmFuc3BhcmVudCBQTkdzLCBhbmQgdmVjdG9yIEZpcmV3b3JrcyBzb3VyY2UgZmlsZXMgYXJlIGluY2x1ZGVkIGFzIHdlbGwuIEFzIGFsd2F5cywgdGhlIHNldCBpcyBjb21wbGV0ZWx5IGZyZWUgYW5kIG1heSBiZSB1c2VkIGZvciBhbnkgcHJpdmF0ZSBvciBjb21tZXJjaWFsIHByb2plY3Qgd2l0aG91dCBhbnkgcmVzdHJpY3Rpb25zIHdoYXRzb2V2ZXIuPC9wPgo8cCBjbGFzcz0ic2hvd2Nhc2UiPjxhIGhyZWY9Imh0dHA6Ly9tZWRpYTEuc21hc2hpbmdtYWdhemluZS5jb20vMjAwOS8wNC8yNy9wcm9qZWN0LWljb24tc2V0LWZvci1mcmVlLWRvd25sb2FkLyI+PGltZyBzcmM9Imh0dHA6Ly9tZWRpYTIuc21hc2hpbmdtYWdhemluZS5jb20vd3AtY29udGVudC91cGxvYWRzL2ltYWdlcy9mcmVlLWljb25zLXJvdW5kLXVwL2ZyZWUtaWNvbnMtcm91bmQtdXAtMzguanBnIiBhbHQ9IkZyZWUgSWNvbnMgUm91bmQtVXAgLSBQcm9qZWN0IEljb24gU2V0IEZvciBGcmVlIERvd25sb2FkIiB3aWR0aD0iNTIzIiBoZWlnaHQ9IjEwNjgiIC8+PC9hPjwvcD4KPHA+PGEgaHJlZj0iaHR0cDovL3d3dy5zbWFzaGluZ21hZ2F6aW5lLmNvbS8yMDA5LzAxLzA1L3N0YXRpb25lcnktaWNvbnMtc29jY2VyLWljb25zLWFuZC1hdGxhbnRpYy13b3JkcHJlc3MtdGhlbWUvIj5TdGF0aW9uZXJ5IEljb25zIFNldDwvYT48YnIgLz4KQSB1c2VmdWwgc2V0IG9mIDIyIHZlY3RvciBpY29ucyAoMjU2IMOXIDI1NiBwaXhlbHMpLiBJdCBjb250YWlucyBib29rLCBicnVzaCwgY3JheW9uLCBjbGlwLCBjb2xvciBwZW5jaWxzLCBkb2N1bWVudCwgZXJhc2VyLCBwYWQsIHBhbGV0dGUsIHBvc3QtaXQgbm90ZSwgc2NhbGUgYW5kIHNjaXNzb3JzLCBhcyB3ZWxsIGFzIHRoZSBGaXJld29ya3Mgc291cmNlIGZpbGUuPC9wPgo8cCBjbGFzcz0ic2hvd2Nhc2UiPjxhIGhyZWY9Imh0dHA6Ly9tZWRpYTIuc21hc2hpbmdtYWdhemluZS5jb20vMjAwOS8wMS8wNS9zdGF0aW9uZXJ5LWljb25zLXNvY2Nlci1pY29ucy1hbmQtYXRsYW50aWMtd29yZHByZXNzLXRoZW1lLyI+PGltZyBzcmM9Imh0dHA6Ly83OC40Ni4xMDguOTgvaW1hZ2VzL2phbnVhcnktaWNvbi1zZXQvc3RhdC1zbWFsbHByZXZpZXcuanBnIiBhbHQ9IiIgd2lkdGg9IjUwMCIgaGVpZ2h0PSIzODYiIC8+PC9hPjwvcD4KPHA+PGEgaHJlZj0iaHR0cDovL3d3dy5zbWFzaGluZ21hZ2F6aW5lLmNvbS8yMDA4LzA5LzIzL3ByYWN0aWthLWEtZnJlZS1pY29uLXNldC8iPlByYWN0aWNhIEljb25zIFNldDwvYT48YnIgLz4KQSBmcmVlIHNldCBvZiAxMSB1c2VmdWwgaGlnaC1xdWFsaXR5IGljb25zLCBkZXNpZ25lZCBieSBEcnlJY29ucyBlc3BlY2lhbGx5IGZvciBTbWFzaGluZyBNYWdhemluZSBhbmQgaXRzIHJlYWRlcnMuIFRoZSBpY29ucyBhcmUgYXZhaWxhYmxlIGluIHJlc29sdXRpb25zIG9mIDY0LCAxMjggYW5kIDI1NiBwaXhlbHMsIGluIDMyLWJpdCB0cmFuc3BhcmVuY3kgUE5HIGZvcm1hdC48L3A+CjxwPjxhIGhyZWY9Imh0dHA6Ly9tZWRpYTEuc21hc2hpbmdtYWdhemluZS5jb20vMjAwOC8wOS8yMy9wcmFjdGlrYS1hLWZyZWUtaWNvbi1zZXQvIj48aW1nIHNyYz0iaHR0cDovLzc4LjQ2LjEwOC45OC9pbWFnZXMvcHJhY3Rpa2EtaWNvbi1zZXQvcHJhY3Rpa2FfbGFyZ2UuanBnIiBhbHQ9IiIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI1MjEiIC8+PC9hPjwvcD4KPHA+PGEgaHJlZj0iaHR0cDovL2hlYWRkeS5kZXZpYW50YXJ0LmNvbS9hcnQvREktRm9sZGVyLUljb25zLTEyMzcyMDg3MSI+REkgLSBGb2xkZXIgSWNvbnM8L2E+PC9wPgo8cCBjbGFzcz0ic2hvd2Nhc2UiPjxhIGhyZWY9Imh0dHA6Ly9oZWFkZHkuZGV2aWFudGFydC5jb20vYXJ0L0RJLUZvbGRlci1JY29ucy0xMjM3MjA4NzEiPjxpbWcgc3JjPSJodHRwOi8vbWVkaWEyLnNtYXNoaW5nbWFnYXppbmUuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy9pbWFnZXMvZnJlZS1pY29ucy1yb3VuZC11cC9kaS5naWYiIGFsdD0iRnJlZSBJY29ucyBSb3VuZC1VcCAtIERJIC0gRm9sZGVyIEljb25zIiB3aWR0aD0iNDgwIiBoZWlnaHQ9IjM4MCIgLz48L2E+PC9wPgo8cD48YSBocmVmPSJodHRwOi8vYmxvZy5pY29uc3BlZGlhLmNvbS9pY29ucy8xMDAtZnJlZS1pY29ucy13ZWJ5LWljb24tc2V0LTE5Mi8iPldlYnkgSWNvbiBTZXQ8L2E+PGJyIC8+ClRoZSBpY29ucyBhcmUgYXZhaWxhYmxlIGluIFBORywgSUNPIGFuZCBJQ05TIGZvcm1hdC4gVGhleSBhcmUgZnJlZSB0byB1c2UgZm9yIGJvdGggcGVyc29uYWwgYW5kIGNvbW1lcmNpYWwgcHJvamVjdHMsIGluY2x1ZGluZyB3ZWJzaXRlcywgdGVtcGxhdGVzICYjMzg7IHNvZnR3YXJlLiBZb3UgYXJlIG5vdCBhbGxvd2VkIHRvIHNlbGwgb3IgcmVkaXN0cmlidXRlIHRoZSBpY29ucyBhbnl3aGVyZSBlbHNlLiBJZiB5b3UgbGlrZSB0byBzaGFyZSB0aGUgaWNvbnMgcGxlYXNlIGxpbmsgdG8gdGhpcyBhcnRpY2xlLjwvcD4KPHAgY2xhc3M9InNob3djYXNlIj48YSBocmVmPSJodHRwOi8vYmxvZy5pY29uc3BlZGlhLmNvbS9pY29ucy8xMDAtZnJlZS1pY29ucy13ZWJ5LWljb24tc2V0LTE5Mi8iPjxpbWcgc3JjPSJodHRwOi8vbWVkaWEyLnNtYXNoaW5nbWFnYXppbmUuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy9pbWFnZXMvZnJlZS1pY29ucy1yb3VuZC11cC9pYzMxLmpwZyIgYWx0PSJGcmVlIEljb25zIFJvdW5kLVVwIC0gMTAwIEZyZWUgSWNvbnMgLSBXZWJ5IEljb24gU2V0IiB3aWR0aD0iNTAwIiBoZWlnaHQ9IjI1MCIgLz48L2E+PC9wPgo8cD48YSBocmVmPSJodHRwOi8vd3d3LmZyZWVpY29uc2Rvd25sb2FkLmNvbS9GcmVlX0Rvd25sb2Fkcy5hc3A/aWQ9NDE1Ij5TbGVlayBYUCBCYXNpYyBJY29uczwvYT48YnIgLz4KNTAgc3RvY2sgaWNvbiBpbiBQTkcgYW5kIElDTyBmb3JtYXRzLiB0aGlzIGlzIGFic29sdXRlbHkgZnJlZSBmb3IgcGVyc29uYWwgYW5kIG5vbi1jb21tZXJjaWFsIHB1cnBvc2VzIG9ubHkuPC9wPgo8cCBjbGFzcz0ic2hvd2Nhc2UiPjxhIGhyZWY9Imh0dHA6Ly93d3cuZnJlZWljb25zZG93bmxvYWQuY29tL0ZyZWVfRG93bmxvYWRzLmFzcD9pZD00MTUiPjxpbWcgc3JjPSJodHRwOi8vbWVkaWExLnNtYXNoaW5nbWFnYXppbmUuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy9pbWFnZXMvZnJlZS1pY29ucy1yb3VuZC11cC9mcmVlLWljb25zLXJvdW5kLXVwLTg3LmpwZyIgYWx0PSJGcmVlIEljb25zIFJvdW5kLVVwIC0gU2xlZWsgWFAgQmFzaWMgSWNvbnMiIHdpZHRoPSI0NTIiIGhlaWdodD0iMzM2IiAvPjwvYT48L3A+CjxwPjxhIGhyZWY9Imh0dHA6Ly93ZWZ1bmN0aW9uLmNvbS8yMDA5LzA1LzQwLWZyZWUtdHdpdHRlci1iYWRnZXMvIj40MCBGcmVlIFR3aXR0ZXIgQmFkZ2VzPC9hPjxiciAvPgpUaGUgc2V0IGluY2x1ZGVzIDQwIGZpbGVzIGluIHRvdGFsLCBhbGwgaW4gdHJhbnNwYXJlbnQgLnBuZyBmb3JtYXQuIFRoZSBidXR0b25zIGV0YyBjb21lIHdpdGggUFNEIGZpbGVzIHRvbyBzbyB5b3UgY2FuIGVkaXQgYW5kIHJlLXNpemUgdGhlbSBhcyBuZWVkZWQuIFRoZSBvcmlnaW5hbCBjaGFyYWN0ZXJzIGNvbWUgYXMgYSBsYXJnZSBIaWdoIFJlcyBpbWFnZSB3aGljaCBtYWtlcyBpdCB2ZXJ5IGVhc3kgdG8gc2NhbGUgZG93biBhbmQgdXNlIGhvd2V2ZXIgeW91IHdhbnQuPC9wPgo8cCBjbGFzcz0ic2hvd2Nhc2UiPjxhIGhyZWY9Imh0dHA6Ly93ZWZ1bmN0aW9uLmNvbS8yMDA5LzA1LzQwLWZyZWUtdHdpdHRlci1iYWRnZXMvIj48aW1nIHNyYz0iaHR0cDovL21lZGlhMi5zbWFzaGluZ21hZ2F6aW5lLmNvbS93cC1jb250ZW50L3VwbG9hZHMvaW1hZ2VzL2ZyZWUtaWNvbnMtcm91bmQtdXAvYmFkZ2VzLmpwZyIgYWx0PSJGcmVlIEljb25zIFJvdW5kLVVwIC0gVHdpdHRlciBCYWRnZXMiIHdpZHRoPSI0OTAiIGhlaWdodD0iMzAwIiAvPjwvYT48L3A+CjxwPjxhIGhyZWY9Imh0dHA6Ly9yaWNoZC5jb20vMjAwMy8wMi9wdXp6bGUtaWNvbnMuaHRtbCI+UHV6emxlIEljb25zPC9hPjxiciAvPgpBIHNtYWxsIHRyaWJ1dGUgdG8gRXJubyBSdWJpayBhbmQgVXdlIE1lZmZlcnQsIE1hYyBPUyBYIFN0eWxlITwvcD4KPHAgY2xhc3M9InNob3djYXNlIj48YSBocmVmPSJodHRwOi8vcmljaGQuY29tLzIwMDMvMDIvcHV6emxlLWljb25zLmh0bWwiPjxpbWcgc3JjPSJodHRwOi8vbWVkaWEyLnNtYXNoaW5nbWFnYXppbmUuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy9pbWFnZXMvZnJlZS1pY29ucy1yb3VuZC11cC9mcmVlLWljb25zLXJvdW5kLXVwLTEwMi5qcGciIGFsdD0iRnJlZSBJY29ucyBSb3VuZC1VcCAtIFB1enpsZSBJY29ucyIgd2lkdGg9IjUxMiIgaGVpZ2h0PSIxMjgiIC8+PC9hPjwvcD4KPHA+PGEgaHJlZj0iaHR0cDovL3d3dy50dXRvcmlhbDkubmV0L3Bob3Rvc2hvcC9kZXNpZ24tYS1zdHlsaXNoLW1haWwtaWNvbi1pbi1waG90b3Nob3AvIj5EZXNpZ24gYSBTdHlsaXNoIE1haWwgSWNvbiBpbiBQaG90b3Nob3A8L2E+PC9wPgo8cCBjbGFzcz0ic2hvd2Nhc2UiPjxhIGhyZWY9Imh0dHA6Ly93d3cudHV0b3JpYWw5Lm5ldC9waG90b3Nob3AvZGVzaWduLWEtc3R5bGlzaC1tYWlsLWljb24taW4tcGhvdG9zaG9wLyI+PGltZyBzcmM9Imh0dHA6Ly9tZWRpYTIuc21hc2hpbmdtYWdhemluZS5jb20vd3AtY29udGVudC91cGxvYWRzL2ltYWdlcy9mcmVlLWljb25zLXJvdW5kLXVwL21haWwuanBnIiBhbHQ9IkZyZWUgSWNvbnMgUm91bmQtVXAgLSBEZXNpZ24gYSBTdHlsaXNoIE1haWwgSWNvbiBpbiBQaG90b3Nob3AiIHdpZHRoPSI0NTAiIGhlaWdodD0iMzYwIiAvPjwvYT48L3A+CjxwPjxhIGhyZWY9Imh0dHA6Ly9rb24uZGV2aWFudGFydC5jb20vYXJ0L1JvdW5kLVRoZW1lLUljb25zLTEwMjA4MjM4MCI+Um91bmQgVGhlbWUgSWNvbnM8L2E+PC9wPgo8cCBjbGFzcz0ic2hvd2Nhc2UiPjxhIGhyZWY9Imh0dHA6Ly9rb24uZGV2aWFudGFydC5jb20vYXJ0L1JvdW5kLVRoZW1lLUljb25zLTEwMjA4MjM4MCI+PGltZyBzcmM9Imh0dHA6Ly9tZWRpYTIuc21hc2hpbmdtYWdhemluZS5jb20vd3AtY29udGVudC91cGxvYWRzL2ltYWdlcy9mcmVlLWljb25zLXJvdW5kLXVwL2ZyZWUtaWNvbnMtcm91bmQtdXAtNjgucG5nIiBhbHQ9IkZyZWUgSWNvbnMgUm91bmQtVXAgLSBSb3VuZCBUaGVtZSBJY29ucyIgd2lkdGg9IjMyMCIgaGVpZ2h0PSI0ODAiIC8+PC9hPjwvcD4KPHA+PGEgaHJlZj0iaHR0cDovL2lpcm9qYXBwaW5lbi5jb20vZG93bmxvYWRzLmh0bWwiPklpcm8gSmFwcGluZW4mIzgyMTc7cyBJY29uczwvYT48YnIgLz4KRm9yIHBlcnNvbmFsIHVzZSBvbmx5LjwvcD4KPHAgY2xhc3M9InNob3djYXNlIj48YSBocmVmPSJodHRwOi8vaWlyb2phcHBpbmVuLmNvbS9kb3dubG9hZHMuaHRtbCI+PGltZyBzcmM9Imh0dHA6Ly9tZWRpYTIuc21hc2hpbmdtYWdhemluZS5jb20vd3AtY29udGVudC91cGxvYWRzL2ltYWdlcy9mcmVlLWljb25zLXJvdW5kLXVwL3VtYi5qcGciIGFsdD0iRnJlZSBJY29ucyBSb3VuZC1VcCAtIFNjcmVlbnNob3QiIHdpZHRoPSIzMjYiIGhlaWdodD0iMzE1IiAvPjwvYT48L3A+CjxwPjxhIGhyZWY9Imh0dHA6Ly93d3cua3JlbWFsaWNpb3VzLmNvbS8yMDA4LzA2LzQtbW9yZS1pY29ucy1uaWVwY2VzLWNhbWVyYS1vYnNjdXJhLXYxMS8iPk5pZXBjZSYjODIxNztzIENhbWVyYSBPYnNjdXJhPC9hPjxiciAvPgpUaGUgZG93bmxvYWQgcGFja2FnZSBub3cgaW5jbHVkZXMgNyBpY29ucyBhcyBhbiBpQ29udGFpbmVyIGFuZCBmb3IgTWFjIChpY25zLCBGb2xkZXIpLCBMaW51eCAoUE5HKSBhbmQgV2luZG93cyAoaWNvKSBhbmQgeW91IGNhbiBncmFiIGl0IGZyb20gdGhlIEdvb2RpZXMgcGFnZS48L3A+CjxwIGNsYXNzPSJzaG93Y2FzZSI+PGEgaHJlZj0iaHR0cDovL3d3dy5rcmVtYWxpY2lvdXMuY29tLzIwMDgvMDYvNC1tb3JlLWljb25zLW5pZXBjZXMtY2FtZXJhLW9ic2N1cmEtdjExLyI+PGltZyBzcmM9Imh0dHA6Ly9tZWRpYTIuc21hc2hpbmdtYWdhemluZS5jb20vd3AtY29udGVudC91cGxvYWRzL2ltYWdlcy9mcmVlLWljb25zLXJvdW5kLXVwLzRtb3JlLmpwZyIgYWx0PSJGcmVlIEljb25zIFJvdW5kLVVwIC0gNCBNb3JlIEljb25zIiB3aWR0aD0iNDk1IiBoZWlnaHQ9IjQ4NCIgLz48L2E+PC9wPgo8cD48YSBocmVmPSJodHRwOi8va3lvLXR1eC5kZXZpYW50YXJ0LmNvbS9hcnQvTW9kLWVtLTExNTA0NjMyNSI+TW9kPC9hPjwvcD4KPHAgY2xhc3M9InNob3djYXNlIj48YSBocmVmPSJodHRwOi8va3lvLXR1eC5kZXZpYW50YXJ0LmNvbS9hcnQvTW9kLWVtLTExNTA0NjMyNSI+PGltZyBzcmM9Imh0dHA6Ly9tZWRpYTIuc21hc2hpbmdtYWdhemluZS5jb20vd3AtY29udGVudC91cGxvYWRzL2ltYWdlcy9mcmVlLWljb25zLXJvdW5kLXVwLzI1NngyNTYucG5nIiBhbHQ9IkZyZWUgSWNvbnMgUm91bmQtVXAgLSBNb2QiIHdpZHRoPSIyNTYiIGhlaWdodD0iMjU2IiAvPjwvYT48L3A+CjxwPjxhIGhyZWY9Imh0dHA6Ly9hcmNoaWdyYXBocy5jb20vIj5BcmNoaWdyYXBoczwvYT48L3A+CjxwIGNsYXNzPSJzaG93Y2FzZSI+PGEgaHJlZj0iaHR0cDovL2FyY2hpZ3JhcGhzLmNvbS8iPjxpbWcgc3JjPSJodHRwOi8vbWVkaWEyLnNtYXNoaW5nbWFnYXppbmUuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy9pbWFnZXMvZnJlZS1pY29ucy1yb3VuZC11cC9hcmMuanBnIiBhbHQ9IkZyZWUgSWNvbnMgUm91bmQtVXAgLSBBcmNoaWdyYXBoczo6Li4uIENyZWF0aXZlIEdvb2RzIiB3aWR0aD0iNDgwIiBoZWlnaHQ9IjM0NCIgLz48L2E+PC9wPgo8cD48YSBocmVmPSJodHRwOi8vd3d3LnR1dG9yaWFsOS5uZXQvcmVzb3VyY2VzL2N1dGUtY3JpdHRlcnMtZnJlZS1pY29uLXBhY2svIj5DdXRlIENyaXR0ZXJzIEZyZWUgSWNvbiBQYWNrPC9hPjxiciAvPgpUaGUgQ3V0ZSBDcml0dGVycyBJY29uIFBhY2sgaXMgYSBmcmVlIEljb24gc2V0IHdpdGggMTMgcGFpbmZ1bGx5IGN1dGUgY3JpdHRlcnMsIGNyZWF0ZWQgYnkgRWxpbyBSaXZlcm8gb2YgaWxvdmVjb2xvcnMuIEVhY2ggaWNvbiBpcyBpbiAucG5nIGZvcm1hdCBzaXplZCBhdCA1MTLDlzUxMnB4IHdpdGggdHJhbnNwYXJlbnQgYmFja2dyb3VuZHMuIEFsdG9nZXRoZXIsIHRoZXJlIGlzIG1vcmUgY3V0ZW5lc3MgdGhhbiB5b3UgY291bGQgc2hha2UgYSBzdGljayBhdC4gVGhpcyBGcmVlIEljb24gUGFjayBpcyBmb3IgdXNlIGluIHlvdXIgcGVyc29uYWwgYW5kIGNvbW1lcmNpYWwgcHJvamVjdHMsIGFuZCBjYW4gYmUgdXNlZCB3aXRob3V0IGF0dHJpYnV0aW9uLiBJdCBtYXkgbm90IGJlIHJlZGlzdHJpYnV0ZWQuPC9wPgo8cCBjbGFzcz0ic2hvd2Nhc2UiPjxhIGhyZWY9Imh0dHA6Ly93d3cudHV0b3JpYWw5Lm5ldC9yZXNvdXJjZXMvY3V0ZS1jcml0dGVycy1mcmVlLWljb24tcGFjay8iPjxpbWcgc3JjPSJodHRwOi8vbWVkaWEyLnNtYXNoaW5nbWFnYXppbmUuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy9pbWFnZXMvZnJlZS1pY29ucy1yb3VuZC11cC9jdXRlLmpwZyIgYWx0PSJGcmVlIEljb25zIFJvdW5kLVVwIC0gQ3V0ZSBDcml0dGVycyBGcmVlIEljb24gUGFjayIgd2lkdGg9IjQ1MCIgaGVpZ2h0PSI0NTEiIC8+PC9hPjwvcD4KPHA+PGEgaHJlZj0iaHR0cDovL2dyZXZlbmx4LmRldmlhbnRhcnQuY29tL2FydC9CbG9nLUljb25zLTg3NDAyNDc3Ij5CbG9nIEljb25zPC9hPjwvcD4KPHAgY2xhc3M9InNob3djYXNlIj48YSBocmVmPSJodHRwOi8vZ3JldmVubHguZGV2aWFudGFydC5jb20vYXJ0L0Jsb2ctSWNvbnMtODc0MDI0NzciPjxpbWcgc3JjPSJodHRwOi8vbWVkaWExLnNtYXNoaW5nbWFnYXppbmUuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy9pbWFnZXMvZnJlZS1pY29ucy1yb3VuZC11cC9mcmVlLWljb25zLXJvdW5kLXVwLTgyLnBuZyIgYWx0PSJGcmVlIEljb25zIFJvdW5kLVVwIC0gQmxvZyBJY29ucyIgd2lkdGg9IjU1MCIgaGVpZ2h0PSIyNzUiIC8+PC9hPjwvcD4KPHA+PGEgaHJlZj0iaHR0cDovL3d3dy5wYWludGJpdHMuY29tLzIwMDkvMDEvMjgvc29tYXRpYy1yZWJpcnRoLWFwcHMvIj5Tb21hdGljIFJlYmlydGggQXBwcyBJY29ucyAtIExpZmUgaW4gQ29sb3JzPC9hPjwvcD4KPHAgY2xhc3M9InNob3djYXNlIj48YSBocmVmPSJodHRwOi8vd3d3LnBhaW50Yml0cy5jb20vMjAwOS8wMS8yOC9zb21hdGljLXJlYmlydGgtYXBwcy8iPjxpbWcgc3JjPSJodHRwOi8vbWVkaWExLnNtYXNoaW5nbWFnYXppbmUuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy9pbWFnZXMvZnJlZS1pY29ucy1yb3VuZC11cC9mcmVlLWljb25zLXJvdW5kLXVwLTgzLnBuZyIgYWx0PSJGcmVlIEljb25zIFJvdW5kLVVwIC0gU29tYXRpYyBSZWJpcnRoIEFwcHMgSWNvbnMgLSBMaWZlIGluIENvbG9ycyIgd2lkdGg9IjQ5MCIgaGVpZ2h0PSIxNTAiIC8+PC9hPjwvcD4KPHA+PGEgaHJlZj0iaHR0cDovL2RsYW5oYW0uY29tL2FydC9zdGlja2VyLyI+U3RpY2tlciBJY29uczwvYT48YnIgLz4xNTIgdmFyaW91cyBiZWF1dGlmdWwgaWNvbnMgZGVzaWduZWQgYnkgRGF2aWQgTGFuaGFtLjwvcD4KPHAgY2xhc3M9InNob3djYXNlIj48YSBocmVmPSJodHRwOi8vZGxhbmhhbS5jb20vYXJ0L3N0aWNrZXIvIj48aW1nIHNyYz0iaHR0cDovL21lZGlhMi5zbWFzaGluZ21hZ2F6aW5lLmNvbS93cC1jb250ZW50L3VwbG9hZHMvaW1hZ2VzL2ZyZWUtaWNvbnMtcm91bmQtdXAvc3RpY2tlci5qcGciIGFsdD0iRnJlZSBJY29ucyBSb3VuZC1VcCAtIFNjcmVlbnNob3QiIHdpZHRoPSI0NTAiIGhlaWdodD0iMzE4IiAvPjwvYT48L3A+CjxwPjxhIGhyZWY9Imh0dHA6Ly9pY29uZmFjdG9yeS5jb20vc3RhcnRyZWsvIj5TdGFyIFRyZWsgSWNvbnM8L2E+PGJyIC8+T2ZmaWNpYWwgU3RhciBUcmVrIGljb25zIGFuZCBkZXNrdG9wIHBpY3R1cmVzIGZvciBmcmVlIGRvd25sb2FkLjwvcD4KPHAgY2xhc3M9InNob3djYXNlIj48YSBocmVmPSJodHRwOi8vaWNvbmZhY3RvcnkuY29tL3N0YXJ0cmVrLyI+PGltZyBzcmM9Imh0dHA6Ly9tZWRpYTIuc21hc2hpbmdtYWdhemluZS5jb20vd3AtY29udGVudC91cGxvYWRzL2ltYWdlcy9mcmVlLWljb25zLXJvdW5kLXVwL3N0LmpwZyIgYWx0PSJGcmVlIEljb25zIFJvdW5kLVVwIC0gVGhlIEljb25mYWN0b3J5IHByZXNlbnRzIFN0YXIgVHJlayIgd2lkdGg9IjQ2MyIgaGVpZ2h0PSIzMDEiIC8+PC9hPjwvcD4KCjwhLS0gZ29vZ2xlX2FkX3NlY3Rpb25fZW5kIC0tPgo8aHIgLz4NCg0KPHA+PHNtYWxsPsKpIFNtYXNoaW5nIEVkaXRvcmlhbCBmb3IgPGEgaHJlZj0iaHR0cDovL3d3dy5zbWFzaGluZ21hZ2F6aW5lLmNvbSI+U21hc2hpbmcgTWFnYXppbmU8L2E+LCAyMDA5LiB8DQo8YSBocmVmPSJodHRwOi8vd3d3LnNtYXNoaW5nbWFnYXppbmUuY29tLzIwMDkvMDYvMDcvNTAtZnJlc2gtdXNlZnVsLWljb24tc2V0cy1mb3IteW91ci1uZXh0LWRlc2lnbi8iPlBlcm1hbGluazwvYT4gfCANCjxhIGhyZWY9Imh0dHA6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20vMjAwOS8wNi8wNy81MC1mcmVzaC11c2VmdWwtaWNvbi1zZXRzLWZvci15b3VyLW5leHQtZGVzaWduLyNjb21tZW50cyI+ODUgY29tbWVudHM8L2E+IHwgDQo8YSB0aXRsZT0iQm9va21hcmsgaW4gZGVsLmljaW8udXMiIGhyZWY9Imh0dHA6Ly9kZWwuaWNpby51cy9wb3N0P3VybD1odHRwOi8vd3d3LnNtYXNoaW5nbWFnYXppbmUuY29tLzIwMDkvMDYvMDcvNTAtZnJlc2gtdXNlZnVsLWljb24tc2V0cy1mb3IteW91ci1uZXh0LWRlc2lnbi8mdGl0bGU9NTAgRnJlc2ggVXNlZnVsIEljb24gU2V0cyBGb3IgWW91ciBOZXh0IERlc2lnbiI+QWRkIHRvIGRlbC5pY2lvLnVzPC9hPiB8IDxhIHRpdGxlPSJCb29rbWFyayBpbiBEaWdnIiBocmVmPSJodHRwOi8vZGlnZy5jb20vc3VibWl0P3BoYXNlPTImdXJsPWh0dHA6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20vMjAwOS8wNi8wNy81MC1mcmVzaC11c2VmdWwtaWNvbi1zZXRzLWZvci15b3VyLW5leHQtZGVzaWduLyI+RGlnZyB0aGlzPC9hPiB8IDxhIHRpdGxlPSJTdHVtYmxlIG9uIFN0dW1ibGVVcG9uIiBocmVmPSJodHRwOi8vd3d3LnN0dW1ibGV1cG9uLmNvbS9zdWJtaXQ/dXJsPWh0dHA6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20vMjAwOS8wNi8wNy81MC1mcmVzaC11c2VmdWwtaWNvbi1zZXRzLWZvci15b3VyLW5leHQtZGVzaWduLyI+U3R1bWJsZSBvbiBTdHVtYmxlVXBvbiE8L2E+IHwgPGEgdGl0bGU9IlR3ZWV0IHVzISIgaHJlZj0iaHR0cDovL3R3aXR0ZXIuY29tL2hvbWU/c3RhdHVzPUB0d2VldG1lbWUlMjBAc21hc2hpbmdtYWclMjBSZWFkaW5nJTIwJzUwIEZyZXNoIFVzZWZ1bCBJY29uIFNldHMgRm9yIFlvdXIgTmV4dCBEZXNpZ24nIGh0dHA6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20vMjAwOS8wNi8wNy81MC1mcmVzaC11c2VmdWwtaWNvbi1zZXRzLWZvci15b3VyLW5leHQtZGVzaWduLyI+VHdlZXQgaXQhPC9hPiB8IDxhIHRpdGxlPSJCb29rbWFyayBpbiBSZWRkaXQiIGhyZWY9Imh0dHA6Ly9yZWRkaXQuY29tL3N1Ym1pdD91cmw9aHR0cDovL3d3dy5zbWFzaGluZ21hZ2F6aW5lLmNvbS8yMDA5LzA2LzA3LzUwLWZyZXNoLXVzZWZ1bC1pY29uLXNldHMtZm9yLXlvdXItbmV4dC1kZXNpZ24vIj5TdWJtaXQgdG8gUmVkZGl0PC9hPiB8IDxhIGhyZWY9Imh0dHA6Ly9mb3J1bS5zbWFzaGluZ21hZ2F6aW5lLmNvbS8iPkZvcnVtIFNtYXNoaW5nIE1hZ2F6aW5lPC9hPg0KDQo8YnIvPg0KUG9zdCB0YWdzOiA8YSBocmVmPSJodHRwOi8vd3d3LnNtYXNoaW5nbWFnYXppbmUuY29tL3RhZy9kb3dubG9hZHMvIiByZWw9InRhZyI+ZG93bmxvYWRzPC9hPiwgPGEgaHJlZj0iaHR0cDovL3d3dy5zbWFzaGluZ21hZ2F6aW5lLmNvbS90YWcvZnJlZS8iIHJlbD0idGFnIj5mcmVlPC9hPiwgPGEgaHJlZj0iaHR0cDovL3d3dy5zbWFzaGluZ21hZ2F6aW5lLmNvbS90YWcvZnJlZWJpZXMvIiByZWw9InRhZyI+RnJlZWJpZXM8L2E+LCA8YSBocmVmPSJodHRwOi8vd3d3LnNtYXNoaW5nbWFnYXppbmUuY29tL3RhZy9pY29ucy8iIHJlbD0idGFnIj5pY29uczwvYT48YnIvPg0KPC9zbWFsbD48L3A+IjtzOjc6ImF0dHJpYnMiO2E6Mjp7czowOiIiO2E6MTp7czo0OiJ0eXBlIjtzOjQ6Imh0bWwiO31zOjM2OiJodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UiO2E6MTp7czo0OiJiYXNlIjtzOjkwOiJodHRwOi8vd3d3LnNtYXNoaW5nbWFnYXppbmUuY29tLzIwMDkvMDYvMDcvNTAtZnJlc2gtdXNlZnVsLWljb24tc2V0cy1mb3IteW91ci1uZXh0LWRlc2lnbi8iO319czo4OiJ4bWxfYmFzZSI7czo5MDoiaHR0cDovL3d3dy5zbWFzaGluZ21hZ2F6aW5lLmNvbS8yMDA5LzA2LzA3LzUwLWZyZXNoLXVzZWZ1bC1pY29uLXNldHMtZm9yLXlvdXItbmV4dC1kZXNpZ24vIjtzOjE3OiJ4bWxfYmFzZV9leHBsaWNpdCI7YjoxO3M6ODoieG1sX2xhbmciO3M6MjoiZW4iO319fXM6Mzg6Imh0dHA6Ly9wdXJsLm9yZy9zeW5kaWNhdGlvbi90aHJlYWQvMS4wIjthOjE6e3M6NToidG90YWwiO2E6MTp7aTowO2E6NTp7czo0OiJkYXRhIjtzOjI6Ijg1IjtzOjc6ImF0dHJpYnMiO2E6MDp7fXM6ODoieG1sX2Jhc2UiO3M6NDM6Imh0dHA6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20vd3AtYXRvbS5waHAiO3M6MTc6InhtbF9iYXNlX2V4cGxpY2l0IjtiOjE7czo4OiJ4bWxfbGFuZyI7czoyOiJlbiI7fX19fX1pOjE7YTo2OntzOjQ6ImRhdGEiO3M6Mzc6IgoJCQoJCQoJCQoJCQoJCQoJCQoJCQkJCgkJCgkJCgkJCgkJCgkiO3M6NzoiYXR0cmlicyI7YTowOnt9czo4OiJ4bWxfYmFzZSI7czo0MzoiaHR0cDovL3d3dy5zbWFzaGluZ21hZ2F6aW5lLmNvbS93cC1hdG9tLnBocCI7czoxNzoieG1sX2Jhc2VfZXhwbGljaXQiO2I6MTtzOjg6InhtbF9sYW5nIjtzOjI6ImVuIjtzOjU6ImNoaWxkIjthOjI6e3M6Mjc6Imh0dHA6Ly93d3cudzMub3JnLzIwMDUvQXRvbSI7YTo5OntzOjY6ImF1dGhvciI7YToxOntpOjA7YTo2OntzOjQ6ImRhdGEiO3M6MTA6IgoJCQkKCQkJCQkiO3M6NzoiYXR0cmlicyI7YTowOnt9czo4OiJ4bWxfYmFzZSI7czo0MzoiaHR0cDovL3d3dy5zbWFzaGluZ21hZ2F6aW5lLmNvbS93cC1hdG9tLnBocCI7czoxNzoieG1sX2Jhc2VfZXhwbGljaXQiO2I6MTtzOjg6InhtbF9sYW5nIjtzOjI6ImVuIjtzOjU6ImNoaWxkIjthOjE6e3M6Mjc6Imh0dHA6Ly93d3cudzMub3JnLzIwMDUvQXRvbSI7YToxOntzOjQ6Im5hbWUiO2E6MTp7aTowO2E6NTp7czo0OiJkYXRhIjtzOjEyOiJDYXJsb3MgUGluaG8iO3M6NzoiYXR0cmlicyI7YTowOnt9czo4OiJ4bWxfYmFzZSI7czo0MzoiaHR0cDovL3d3dy5zbWFzaGluZ21hZ2F6aW5lLmNvbS93cC1hdG9tLnBocCI7czoxNzoieG1sX2Jhc2VfZXhwbGljaXQiO2I6MTtzOjg6InhtbF9sYW5nIjtzOjI6ImVuIjt9fX19fX1zOjU6InRpdGxlIjthOjE6e2k6MDthOjU6e3M6NDoiZGF0YSI7czoyNzoiNTAgQmVhdXRpZnVsIEZsYXNoIFdlYnNpdGVzIjtzOjc6ImF0dHJpYnMiO2E6MTp7czowOiIiO2E6MTp7czo0OiJ0eXBlIjtzOjQ6Imh0bWwiO319czo4OiJ4bWxfYmFzZSI7czo0MzoiaHR0cDovL3d3dy5zbWFzaGluZ21hZ2F6aW5lLmNvbS93cC1hdG9tLnBocCI7czoxNzoieG1sX2Jhc2VfZXhwbGljaXQiO2I6MTtzOjg6InhtbF9sYW5nIjtzOjI6ImVuIjt9fXM6NDoibGluayI7YTozOntpOjA7YTo1OntzOjQ6ImRhdGEiO3M6MDoiIjtzOjc6ImF0dHJpYnMiO2E6MTp7czowOiIiO2E6Mzp7czozOiJyZWwiO3M6OToiYWx0ZXJuYXRlIjtzOjQ6InR5cGUiO3M6OToidGV4dC9odG1sIjtzOjQ6ImhyZWYiO3M6NzE6Imh0dHA6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20vMjAwOS8wNi8wNy81MC1iZWF1dGlmdWwtZmxhc2gtd2Vic2l0ZXMvIjt9fXM6ODoieG1sX2Jhc2UiO3M6NDM6Imh0dHA6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20vd3AtYXRvbS5waHAiO3M6MTc6InhtbF9iYXNlX2V4cGxpY2l0IjtiOjE7czo4OiJ4bWxfbGFuZyI7czoyOiJlbiI7fWk6MTthOjU6e3M6NDoiZGF0YSI7czowOiIiO3M6NzoiYXR0cmlicyI7YToyOntzOjA6IiI7YTozOntzOjM6InJlbCI7czo3OiJyZXBsaWVzIjtzOjQ6InR5cGUiO3M6OToidGV4dC9odG1sIjtzOjQ6ImhyZWYiO3M6ODA6Imh0dHA6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20vMjAwOS8wNi8wNy81MC1iZWF1dGlmdWwtZmxhc2gtd2Vic2l0ZXMvI2NvbW1lbnRzIjt9czozODoiaHR0cDovL3B1cmwub3JnL3N5bmRpY2F0aW9uL3RocmVhZC8xLjAiO2E6MTp7czo1OiJjb3VudCI7czoyOiI5MyI7fX1zOjg6InhtbF9iYXNlIjtzOjQzOiJodHRwOi8vd3d3LnNtYXNoaW5nbWFnYXppbmUuY29tL3dwLWF0b20ucGhwIjtzOjE3OiJ4bWxfYmFzZV9leHBsaWNpdCI7YjoxO3M6ODoieG1sX2xhbmciO3M6MjoiZW4iO31pOjI7YTo1OntzOjQ6ImRhdGEiO3M6MDoiIjtzOjc6ImF0dHJpYnMiO2E6Mjp7czowOiIiO2E6Mzp7czozOiJyZWwiO3M6NzoicmVwbGllcyI7czo0OiJ0eXBlIjtzOjIwOiJhcHBsaWNhdGlvbi9hdG9tK3htbCI7czo0OiJocmVmIjtzOjgxOiJodHRwOi8vd3d3LnNtYXNoaW5nbWFnYXppbmUuY29tLzIwMDkvMDYvMDcvNTAtYmVhdXRpZnVsLWZsYXNoLXdlYnNpdGVzL2ZlZWQvYXRvbS8iO31zOjM4OiJodHRwOi8vcHVybC5vcmcvc3luZGljYXRpb24vdGhyZWFkLzEuMCI7YToxOntzOjU6ImNvdW50IjtzOjI6IjkzIjt9fXM6ODoieG1sX2Jhc2UiO3M6NDM6Imh0dHA6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20vd3AtYXRvbS5waHAiO3M6MTc6InhtbF9iYXNlX2V4cGxpY2l0IjtiOjE7czo4OiJ4bWxfbGFuZyI7czoyOiJlbiI7fX1zOjI6ImlkIjthOjE6e2k6MDthOjU6e3M6NDoiZGF0YSI7czozOToiaHR0cDovL3d3dy5zbWFzaGluZ21hZ2F6aW5lLmNvbS8/cD03NTk0IjtzOjc6ImF0dHJpYnMiO2E6MDp7fXM6ODoieG1sX2Jhc2UiO3M6NDM6Imh0dHA6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20vd3AtYXRvbS5waHAiO3M6MTc6InhtbF9iYXNlX2V4cGxpY2l0IjtiOjE7czo4OiJ4bWxfbGFuZyI7czoyOiJlbiI7fX1zOjc6InVwZGF0ZWQiO2E6MTp7aTowO2E6NTp7czo0OiJkYXRhIjtzOjIwOiIyMDA5LTA2LTA4VDEzOjI0OjM1WiI7czo3OiJhdHRyaWJzIjthOjA6e31zOjg6InhtbF9iYXNlIjtzOjQzOiJodHRwOi8vd3d3LnNtYXNoaW5nbWFnYXppbmUuY29tL3dwLWF0b20ucGhwIjtzOjE3OiJ4bWxfYmFzZV9leHBsaWNpdCI7YjoxO3M6ODoieG1sX2xhbmciO3M6MjoiZW4iO319czo5OiJwdWJsaXNoZWQiO2E6MTp7aTowO2E6NTp7czo0OiJkYXRhIjtzOjIwOiIyMDA5LTA2LTA3VDA5OjUzOjE5WiI7czo3OiJhdHRyaWJzIjthOjA6e31zOjg6InhtbF9iYXNlIjtzOjQzOiJodHRwOi8vd3d3LnNtYXNoaW5nbWFnYXppbmUuY29tL3dwLWF0b20ucGhwIjtzOjE3OiJ4bWxfYmFzZV9leHBsaWNpdCI7YjoxO3M6ODoieG1sX2xhbmciO3M6MjoiZW4iO319czo4OiJjYXRlZ29yeSI7YTozOntpOjA7YTo1OntzOjQ6ImRhdGEiO3M6MDoiIjtzOjc6ImF0dHJpYnMiO2E6MTp7czowOiIiO2E6Mjp7czo2OiJzY2hlbWUiO3M6MzE6Imh0dHA6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20iO3M6NDoidGVybSI7czoxNToiRGVzaWduIFNob3djYXNlIjt9fXM6ODoieG1sX2Jhc2UiO3M6NDM6Imh0dHA6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20vd3AtYXRvbS5waHAiO3M6MTc6InhtbF9iYXNlX2V4cGxpY2l0IjtiOjE7czo4OiJ4bWxfbGFuZyI7czoyOiJlbiI7fWk6MTthOjU6e3M6NDoiZGF0YSI7czowOiIiO3M6NzoiYXR0cmlicyI7YToxOntzOjA6IiI7YToyOntzOjY6InNjaGVtZSI7czozMToiaHR0cDovL3d3dy5zbWFzaGluZ21hZ2F6aW5lLmNvbSI7czo0OiJ0ZXJtIjtzOjU6ImZsYXNoIjt9fXM6ODoieG1sX2Jhc2UiO3M6NDM6Imh0dHA6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20vd3AtYXRvbS5waHAiO3M6MTc6InhtbF9iYXNlX2V4cGxpY2l0IjtiOjE7czo4OiJ4bWxfbGFuZyI7czoyOiJlbiI7fWk6MjthOjU6e3M6NDoiZGF0YSI7czowOiIiO3M6NzoiYXR0cmlicyI7YToxOntzOjA6IiI7YToyOntzOjY6InNjaGVtZSI7czozMToiaHR0cDovL3d3dy5zbWFzaGluZ21hZ2F6aW5lLmNvbSI7czo0OiJ0ZXJtIjtzOjk6InNob3djYXNlcyI7fX1zOjg6InhtbF9iYXNlIjtzOjQzOiJodHRwOi8vd3d3LnNtYXNoaW5nbWFnYXppbmUuY29tL3dwLWF0b20ucGhwIjtzOjE3OiJ4bWxfYmFzZV9leHBsaWNpdCI7YjoxO3M6ODoieG1sX2xhbmciO3M6MjoiZW4iO319czo3OiJzdW1tYXJ5IjthOjE6e2k6MDthOjU6e3M6NDoiZGF0YSI7czoxMzA1OiI8IS0tIGZlZWQgYmFubmVycyAtLT4KPGRpdiBjbGFzcz0iZ3NlbnNlIj48c3BhbiBjbGFzcz0iYW4iPkFkdmVydGlzZW1lbnRzPC9zcGFuPjxici8+CQoKPGEgaHJlZj0iaHR0cDovL2Fkc2VydmVyLjNkaWdpdC5kZS93d3cvZGVsaXZlcnkvY2sucGhwP3pvbmVpZD01NiIgdGFyZ2V0PSJfYmxhbmsiPjxpbWcgc3JjPSJodHRwOi8vYWRzZXJ2ZXIuM2RpZ2l0LmRlL3d3dy9kZWxpdmVyeS9hdncucGhwP3pvbmVpZD01NiIgYm9yZGVyPSIwIiBhbHQ9IiIgLz4JPC9hPgoKPC9kaXY+PCEtLSA8aW1nIHNyYz0iaHR0cDovL3d3dy5zbWFzaGluZ21hZ2F6aW5lLmNvbS9pbWFnZXMvcG9zdC1waWN0dXJlcy9mbGFzaDIuanBnIiAvPiAtLT48cD48c3Ryb25nPkZsYXNoPC9zdHJvbmc+IGVuYWJsZWQgZGVzaWduZXJzIGFuZCBkZXZlbG9wZXJzIHRvIGRlbGl2ZXIgcmljaCBjb250ZW50IG92ZXIgdGhlIGJyb3dzZXJzLCBjcmVhdGluZyBtb3Rpb24sIGludGVyYWN0aXZpdHkgYW5kIGFuIGltcHJlc3NpdmUgdmlzdWFsIGV4cGVyaWVuY2UuIEdvb2QgRmxhc2gtc2l0ZXMgZG8gbm90IHJlcXVpcmUgdG9vIG11Y2ggYmFuZHdpZHRoLCBsb2FkIGZhc3QgYW5kIGFsbG93IGZvciBhIHNtb290aCBpbnRlcmFjdGlvbjsgYmVzaWRlcywgYmVhdXRpZnVsIEZsYXNoLWJhc2VkIHNpdGVzIGFyZSBQaG90b3Nob3AgbWFzdGVycGllY2VzLCB0cmFuc3BvcnRpbmcgc29tZSBraW5kIG9mIHJlYWxpdHkgYW5kIGZhbnRhc3kgdG8gdGhlIEZsYXNoIG1vdmllLjwvcD4NCg0KPHA+PGEgaHJlZj0iaHR0cDovL3d3dy5zbWFzaGluZ21hZ2F6aW5lLmNvbS8yMDA5LzA2LzA3LzUwLWJlYXV0aWZ1bC1mbGFzaC13ZWJzaXRlcy8iPjxpbWcgc3JjPSJodHRwOi8vbWVkaWEyLnNtYXNoaW5nbWFnYXppbmUuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy9pbWFnZXMvNTAtZmxhc2gtd2ViLWRlc2lnbnMvaHAuanBnIiB3aWR0aD0iNTAwIiBoZWlnaHQ9IjMzMCIgYWx0PSJIZXdsZXR0LVBhY2thcmQgLSBXYWtlIHVwIHlvdXIgZmVlbGluZ3Mgd2l0aCB0aGUgcG93ZXIgb2YgdG91Y2giIC8+PC9hPjwvcD4gDQoNCjxwPkluIHRoZSBzaG93Y2FzZSBiZWxvdyB3ZSBwcmVzZW50IDxzdHJvbmc+NTAgY29sb3JmdWwsIGNyZWF0aXZlLCBpbnRlcmFjdGl2ZSBhbmQgYmVhdXRpZnVsIEZsYXNoLWJhc2VkIHdlYi1zaXRlczwvc3Ryb25nPi4gSG9wZWZ1bGx5IHRoZXkgd2lsbCBzZXJ2ZSB5b3UgYXMgYW4gaW5zcGlyYXRpb24gZm9yIHlvdXIgZnV0dXJlIHdvcmtzIG9yIGp1c3QgZW50ZXJ0YWluIHlvdSBvbiBhIGxvdXN5LCBib3JpbmcgU3VuZGF5LjwvcD4iO3M6NzoiYXR0cmlicyI7YToxOntzOjA6IiI7YToxOntzOjQ6InR5cGUiO3M6NDoiaHRtbCI7fX1zOjg6InhtbF9iYXNlIjtzOjQzOiJodHRwOi8vd3d3LnNtYXNoaW5nbWFnYXppbmUuY29tL3dwLWF0b20ucGhwIjtzOjE3OiJ4bWxfYmFzZV9leHBsaWNpdCI7YjoxO3M6ODoieG1sX2xhbmciO3M6MjoiZW4iO319czo3OiJjb250ZW50IjthOjE6e2k6MDthOjU6e3M6NDoiZGF0YSI7czoyMzg2MjoiCjwhLS0gZ29vZ2xlX2FkX3NlY3Rpb25fc3RhcnQgLS0+CjxwPjwhLS0gZmVlZCBiYW5uZXJzIC0tPjwvcD4KPGRpdiBjbGFzcz0iZ3NlbnNlIj48c3BhbiBjbGFzcz0iYW4iPkFkdmVydGlzZW1lbnRzPC9zcGFuPjxici8+CTwvcD4KPHA+PGEgaHJlZj0iaHR0cDovL2Fkc2VydmVyLjNkaWdpdC5kZS93d3cvZGVsaXZlcnkvY2sucGhwP3pvbmVpZD01NiIgdGFyZ2V0PSJfYmxhbmsiPjxpbWcgc3JjPSJodHRwOi8vYWRzZXJ2ZXIuM2RpZ2l0LmRlL3d3dy9kZWxpdmVyeS9hdncucGhwP3pvbmVpZD01NiIgYm9yZGVyPSIwIiBhbHQ9IiIgLz4JPC9hPjwvcD4KPC9kaXY+CjxwPjxzdHJvbmc+Rmxhc2g8L3N0cm9uZz4gZW5hYmxlZCBkZXNpZ25lcnMgYW5kIGRldmVsb3BlcnMgdG8gZGVsaXZlciByaWNoIGNvbnRlbnQgb3ZlciB0aGUgYnJvd3NlcnMsIGNyZWF0aW5nIG1vdGlvbiwgaW50ZXJhY3Rpdml0eSBhbmQgYW4gaW1wcmVzc2l2ZSB2aXN1YWwgZXhwZXJpZW5jZS4gR29vZCBGbGFzaC1zaXRlcyBkbyBub3QgcmVxdWlyZSB0b28gbXVjaCBiYW5kd2lkdGgsIGxvYWQgZmFzdCBhbmQgYWxsb3cgZm9yIGEgc21vb3RoIGludGVyYWN0aW9uOyBiZXNpZGVzLCBiZWF1dGlmdWwgRmxhc2gtYmFzZWQgc2l0ZXMgYXJlIFBob3Rvc2hvcCBtYXN0ZXJwaWVjZXMsIHRyYW5zcG9ydGluZyBzb21lIGtpbmQgb2YgcmVhbGl0eSBhbmQgZmFudGFzeSB0byB0aGUgRmxhc2ggbW92aWUuPC9wPgo8cD5JbiB0aGUgc2hvd2Nhc2UgYmVsb3cgd2UgcHJlc2VudCA8c3Ryb25nPjUwIGNvbG9yZnVsLCBjcmVhdGl2ZSwgaW50ZXJhY3RpdmUgYW5kIGJlYXV0aWZ1bCBGbGFzaC1iYXNlZCB3ZWItc2l0ZXM8L3N0cm9uZz4uIEhvcGVmdWxseSB0aGV5IHdpbGwgc2VydmUgeW91IGFzIGFuIGluc3BpcmF0aW9uIGZvciB5b3VyIGZ1dHVyZSB3b3JrcyBvciBqdXN0IGVudGVydGFpbiB5b3Ugb24gYSBsb3VzeSwgYm9yaW5nIFN1bmRheS48L3A+CjxwPllvdSBtaWdodCBhbHNvIHdhbnQgdG8gdmlzaXQgdGhlIGZvbGxvd2luZyBhcnRpY2xlczoKPC9wPgo8dWw+CjxsaT48YSBocmVmPSJodHRwOi8vd3d3LnNtYXNoaW5nbWFnYXppbmUuY29tLzIwMDcvMTAvMzAvNjUtZXhjZWxsZW50LWZsYXNoLWRlc2lnbnMvIj42NSBFeGNlbGxlbnQgRmxhc2ggRGVzaWduczwvYT4gd2hpY2ggZmVhdHVyZXMgNjUgZXhhbXBsZXMgb2Ygb3V0c3RhbmRpbmcgRmxhc2gtYmFzZWQgd2ViLXNpdGVzLjwvbGk+CjxsaT48YSBocmVmPSJodHRwOi8vd3d3LnNtYXNoaW5nbWFnYXppbmUuY29tLzIwMDgvMDQvMDIvMzktY3JlYXRpdmUtZmxhc2gtZGVzaWducy8iPjM5IENyZWF0aXZlIEZsYXNoIERlc2lnbnM8L2E+IDM5IGhhbmQtcGlja2VkIGNyZWF0aXZlIGFuZCBjb2xvcmVkIGZsYXNoIHdlYnNpdGVzIDwvbGk+CjwvdWw+CjxoMz5Ecmlua3MgU2l0ZXM8L2gzPgo8cD48YSBocmVmPSJodHRwOi8vd3d3Lm1hcnRpbmlhc3RpLmNvbS8iPk1hcnRpbmkgQXN0aTwvYT48YnIgLz5UaGlzIE1hcnRpbmkgc2l0ZSBpcyBhIG5pY2UgZXhhbXBsZSBvZiBnaXZpbmcgYSBmcmVzaCBpbWFnZSBvZiBhIGRyaW5rLiBUaGUgbmF2aWdhdGlvbiBpcyBtYWRlIHNpbXBsZSwgdGhlIGdyYXBoaWNzIGhhdmUgc3VwZXJpb3IgcXVhbGl0eSwgaXQgbG9hZHMgZmFzdCBhbmQgcnVucyBzbW9vdGhseS4gV2hhdCBlbHNlIGRvZXMgYSBGbGFzaCBzaXRlIG5lZWQ/IDxlbT5Ob3RlPC9lbT4gZHVlIHRvIHRoZSBsYXcgb24gYWxjb2hvbGljIGRyaW5rcywgeW91IG5lZWQgdG8gZW50ZXIgYW4gZS1tYWlsIGFkZHJlc3MsIGEgcGFzc3dvcmQgb2YgeW91ciBjaG9pY2UgYW5kIGFjY2VwdCB0aGVpciB0ZXJtcy48L3A+CjxwPjxhIGhyZWY9Imh0dHA6Ly93d3cubWFydGluaWFzdGkuY29tLyI+PGltZyBzcmM9Imh0dHA6Ly9tZWRpYTIuc21hc2hpbmdtYWdhemluZS5jb20vd3AtY29udGVudC91cGxvYWRzL2ltYWdlcy81MC1mbGFzaC13ZWItZGVzaWducy9tYXJ0aW5pYXN0aS5qcGciIHdpZHRoPSI1MDAiIGhlaWdodD0iMzMwIiBhbHQ9Ik1hcnRpbmkgQXN0aSIgLz48L2E+PC9wPgo8cD48YSBocmVmPSJodHRwOi8vd3d3LnZpdGFtaW53YXRlci5jb20iPkdsYWPDqWF1IC0gVml0YW1pbndhdGVyPC9hPjxiciAvPlRoZSB2aXRhbWluIHdhdGVyIHNpdGUgaXMgZnVsbCBvZiBtb3Rpb24gYW5kIHNtYWxsIGRldGFpbHMgbGlrZSB0aGUgdG9wIG1lbnUsIHdpdGggYSBjb2xvcmVkIHdhdmUgZWZmZWN0LCB0aGUgbW91c2UgbW92ZW1lbnQsIHRoZSBtYXNrcyBlZmZlY3RzIGFuZCBzd2lybHMgd2hpY2ggbWFrZSBpdCBncmVhdC48L3A+CjxwPjxhIGhyZWY9Imh0dHA6Ly93d3cudml0YW1pbndhdGVyLmNvbSI+PGltZyBzcmM9Imh0dHA6Ly9tZWRpYTIuc21hc2hpbmdtYWdhemluZS5jb20vd3AtY29udGVudC91cGxvYWRzL2ltYWdlcy81MC1mbGFzaC13ZWItZGVzaWducy9nbGFjZWF1LmpwZyIgd2lkdGg9IjUwMCIgaGVpZ2h0PSIzMzAiIGFsdD0iR2xhY8OpYXUgLSBWaXRhbWlud2F0ZXIiIC8+PC9hPjwvcD4KPHA+PGEgaHJlZj0iaHR0cDovL3d3dy5vcmlnaW5hbG1vaml0by5wbCI+QmFjYXJkaSAtIE9yaWdpbmFsIE1vaml0bzwvYT4gKGN1cnJlbnRseSBvZmZsaW5lKTxiciAvPlRoZSBtb3Rpb24gZ3JhcGhpY3MgYW5kIHRoZSB3YXRlciBlZmZlY3RzIGluIHNsb3cgbW90aW9uIGdpdmUgYSB1bmlxdWUgc3R5bGUgdG8gdGhpcyBzaXRlLiBBIGZyZXNoIHNpdGUsIHdpdGggYSBjb2xvcmVkIG1lbnUgd2l0aCBhIGRyYWcgb3B0aW9uLCBtYWtlcyBpdCBmdW5jdGlvbmFsIGFuZCBzaW1wbGUuIDxlbT5Ob3RlPC9lbT46IGR1ZSB0byB0aGUgbGF3IG9uIGFsY29ob2xpYyBkcmlua3MsIHlvdSBuZWVkIHRvIGVudGVyIGFuIGUtbWFpbCBhZGRyZXNzLCBhIHBhc3N3b3JkIG9mIHlvdXIgY2hvaWNlIGFuZCBhY2NlcHQgdGhlaXIgdGVybXMuPC9wPgo8cD48YSBocmVmPSJodHRwOi8vd3d3Lm9yaWdpbmFsbW9qaXRvLnBsIj48aW1nIHNyYz0iaHR0cDovL21lZGlhMS5zbWFzaGluZ21hZ2F6aW5lLmNvbS93cC1jb250ZW50L3VwbG9hZHMvaW1hZ2VzLzUwLWZsYXNoLXdlYi1kZXNpZ25zL2JhY2FyZGkuanBnIiB3aWR0aD0iNTAwIiBoZWlnaHQ9IjMzMCIgYWx0PSJCYWNhcmRpIC0gT3JpZ2luYWwgTW9qaXRvIiAvPjwvYT48L3A+CjxoMz5Qb3J0Zm9saW9zPC9oMz4KPHA+PGEgaHJlZj0iaHR0cDovL3Y1ZGVzaWduLmNvbS9pbmRleDIuaHRtbCI+djUgRGVzaWduPC9hPjxiciAvPkJlYXV0aWZ1bCBsYW5kc2NhcGUgd2l0aCBzb21lIG5pY2UgZGV0YWlscyBzdWNoIHVzIHRoZSBzdW4gYW5kIGJ1dHRlcmZsaWVzLiBUaGUgb2xkIHBhcGVyIGVmZmVjdCB3aGVuIG9wZW5pbmcgZnJvbSB0aGUgbWVudSwgYW5kIHRoZSBtYXNrIGVmZmVjdCBvdmVyIHRoZSBncmVlbiBwbGFudHMgZ2l2ZSBpdCBhIHNwZWNpYWwgdG91Y2guPC9wPgo8cD48YSBocmVmPSJodHRwOi8vdjVkZXNpZ24uY29tL2luZGV4Mi5odG1sIj48aW1nIHNyYz0iaHR0cDovL21lZGlhMS5zbWFzaGluZ21hZ2F6aW5lLmNvbS93cC1jb250ZW50L3VwbG9hZHMvaW1hZ2VzLzUwLWZsYXNoLXdlYi1kZXNpZ25zL3Y1ZGVzaWduLmpwZyIgd2lkdGg9IjUwMCIgaGVpZ2h0PSIzMzAiIGFsdD0idjUgRGVzaWduIiAvPjwvYT48L3A+CjxwPjxhIGhyZWY9Imh0dHA6Ly93d3cuc2Vuc2lzb2Z0LmNvbS8iPlNlbnNpc29mdDwvYT48YnIgLz5UaGUgU2Vuc2lzb2Z0IHNpdGUgb2ZmZXJzIGEgbmljZSBpbnRlcmFjdGlvbiBmb3IgdXNlcnMuIFRoZSB2b3J0ZXggZWZmZWN0IHdoaWxlIGNoYW5naW5nIGZyb20gcGF0aCwgIHRoZSBtb3Rpb24gZ3JhcGhpY3MgaW4gdGhlIGJhY2tncm91bmQsIHRoZSBoaWdoIHF1YWxpdHkgYW5kIGRldGFpbHMgb2YgdGhlIGdyYXBoaWNzIG1ha2UgaXQgYSBncmVhdCBkZXNpZ24gYWdlbmN5IHNpdGUuPC9wPgo8cD48YSBocmVmPSJodHRwOi8vd3d3LnNlbnNpc29mdC5jb20vIj48aW1nIHNyYz0iaHR0cDovL21lZGlhMi5zbWFzaGluZ21hZ2F6aW5lLmNvbS93cC1jb250ZW50L3VwbG9hZHMvaW1hZ2VzLzUwLWZsYXNoLXdlYi1kZXNpZ25zL3NlbnNpc29mdC5qcGciIHdpZHRoPSI1MDAiIGhlaWdodD0iMzMwIiBhbHQ9IlNlbnNpc29mdCIgLz48L2E+PC9wPgo8cD48YSBocmVmPSJodHRwOi8vbWF1cmljaW8uYXJ0LmJyLyI+TWF1cmljaW8gR3VpbWFyw6NlcyBQb3J0Zm9saW88L2E+PGJyIC8+TWF1cmljaW8gcG9ydGZvbGlvIGlzIGEgZ29vZCBleGFtcGxlIG9mIGNyZWF0aXZpdHkuIEluc3RlYWQgb2YgdGhlIG9yZGluYXJ5IG1lbnUsIGhlIHVzZXMgYSBraW5kIG9mIHBhcmFsbGF4IG1vdmllY2xpcCwgd2hlcmUgdGhlIHVzZXIgbXVzdCBpbnRlcmFjdCB3aXRoIHRoZSBzdGFnZSB0byBleHBsb3JlIHRoZSBzaXRlLjwvcD4KPHA+PGEgaHJlZj0iaHR0cDovL21hdXJpY2lvLmFydC5ici8iPjxpbWcgc3JjPSJodHRwOi8vbWVkaWEyLnNtYXNoaW5nbWFnYXppbmUuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy9pbWFnZXMvNTAtZmxhc2gtd2ViLWRlc2lnbnMvbWF1cmljaW9wb3J0Zm9saW8uanBnIiB3aWR0aD0iNTAwIiBoZWlnaHQ9IjMzMCIgYWx0PSJNYXVyaWNpbyBHdWltYXLDo2VzIFBvcnRmb2xpbyIgLz48L2E+PC9wPgo8cD48YSBocmVmPSJodHRwOi8vd3d3LmNvbG9yY2hha3JhLmNvbS8iPkNvbG9yY2hha3JhIC0gUG9ydGZvbGlvIG9mIFNyaW5hdGggUmFuZ2FtYW5pPC9hPjxiciAvPkEgY29sb3JlZCBiYWNrZ3JvdW5kIHdpdGggaGlnaCBxdWFsaXR5IGdyYXBoaWNzLjwvcD4KPHA+PGEgaHJlZj0iaHR0cDovL3d3dy5jb2xvcmNoYWtyYS5jb20vIj48aW1nIHNyYz0iaHR0cDovL21lZGlhMS5zbWFzaGluZ21hZ2F6aW5lLmNvbS93cC1jb250ZW50L3VwbG9hZHMvaW1hZ2VzLzUwLWZsYXNoLXdlYi1kZXNpZ25zL2NvbG9yY2hha3JhLmpwZyIgd2lkdGg9IjUwMCIgaGVpZ2h0PSIzMzAiIGFsdD0iQ29sb3JjaGFrcmEgLSBQb3J0Zm9saW8gb2YgU3JpbmF0aCBSYW5nYW1hbmkiIC8+PC9hPjwvcD4KPHA+PGEgaHJlZj0iaHR0cDovL3d3dy5tYWduaXZhdGUuY29tL2ZsYXNoX3VzLmh0bWwiPk1hZ25pdmF0ZSBJbnRlcmFjdGl2ZSBCb3V0aXF1ZSBBZ2VuY3k8L2E+PGJyIC8+QSBuaWNlIGFuaW1hdGVkIHNpdGUuIE9uZSBwYXJ0aWN1bGFyIGZlYXR1cmUgb24gdGhpcyBzaXRlIGlzIHRoYXQgeW91IG5lZWQgdG8gc2V0IGEgY2hhcmFjdGVyIHRvIGV4cGxvcmUgdGhlIHNpdGUuPC9wPgo8cD48YSBocmVmPSJodHRwOi8vd3d3Lm1hZ25pdmF0ZS5jb20vZmxhc2hfdXMuaHRtbCI+PGltZyBzcmM9Imh0dHA6Ly9tZWRpYTEuc21hc2hpbmdtYWdhemluZS5jb20vd3AtY29udGVudC91cGxvYWRzL2ltYWdlcy81MC1mbGFzaC13ZWItZGVzaWducy9tYWduaXZhdGUuanBnIiB3aWR0aD0iNTAwIiBoZWlnaHQ9IjMzMCIgYWx0PSJNYWduaXZhdGUgSW50ZXJhY3RpdmUgQm91dGlxdWUgQWdlbmN5IiAvPjwvYT48L3A+CjxwPjxhIGhyZWY9Imh0dHA6Ly93d3cuZWNvbnRlbnQuaHUvZmxhc2hfdmVyc2lvbi9pbmRleC5odG1sIj5lLUNvbnRlbnQgU29sdXRpb25zPC9hPjxiciAvPlRoaXMgc3R1ZGlvIHBvcnRmb2xpbyBzdGFydHMgd2l0aCBhIG5pY2UgYW5kIHVudXN1YWwgcHJlbG9hZGVyLCBhIGtpbmQgb2YgcHV6emxlIHdoaWNoIGludGVyYWN0cyBvbiBtb3VzZSByb2xsb3Zlci4gQW5vdGhlciBraW5kIG9mIGludGVyYWN0aW9uIGlzIHVzZXImIzgyMTc7cyBhYmlsaXR5IHRvIGV4cGxvZGUgdGhlIGJhbGxvb25zLiA8L3A+CjxwPjxhIGhyZWY9Imh0dHA6Ly93d3cuZWNvbnRlbnQuaHUvZmxhc2hfdmVyc2lvbi9pbmRleC5odG1sIj48aW1nIHNyYz0iaHR0cDovL21lZGlhMi5zbWFzaGluZ21hZ2F6aW5lLmNvbS93cC1jb250ZW50L3VwbG9hZHMvaW1hZ2VzLzUwLWZsYXNoLXdlYi1kZXNpZ25zL2Vjb250ZW50LmpwZyIgd2lkdGg9IjUwMCIgaGVpZ2h0PSIzMzAiIGFsdD0iZS1Db250ZW50IFNvbHV0aW9ucyIgLz48L2E+PC9wPgo8cD48YSBocmVmPSJodHRwOi8vd3d3LmFyaWhpcnZvbmVuLmNvbS8iPkFyacK0cyBMYWJzLiBUaGUgRGlnaXRhbCBIb21lIG9mIEdyYXBoaWMgRGVzaWduZXIgQXJpIEhpcnZvbmVuPC9hPjxiciAvPlRoZSBoaWdoIHF1YWxpdHkgb2YgbW90aW9uIGdyYXBoaWNzLCBjb25jZXB0aW9uIGFuZCB0aGUgZnVuY3Rpb25hbCBsYXlvdXQgbWFrZXMgdGhpcyBzaXRlIGEgZ29vZCBleGFtcGxlIG9mIHdoYXQgYSBGbGFzaCBwb3J0Zm9saW8gc2hvdWxkIGxvb2sgbGlrZS48L3A+CjxwPjxhIGhyZWY9Imh0dHA6Ly93d3cuYXJpaGlydm9uZW4uY29tLyI+PGltZyBzcmM9Imh0dHA6Ly9tZWRpYTIuc21hc2hpbmdtYWdhemluZS5jb20vd3AtY29udGVudC91cGxvYWRzL2ltYWdlcy81MC1mbGFzaC13ZWItZGVzaWducy9hcmlsYWJzLmpwZyIgd2lkdGg9IjUwMCIgaGVpZ2h0PSIzMzAiIGFsdD0iQXJpwrRzIExhYnMuIFRoZSBEaWdpdGFsIEhvbWUgb2YgR3JhcGhpYyBEZXNpZ25lciBBcmkgSGlydm9uZW4iIC8+PC9hPjwvcD4KPHA+PGEgaHJlZj0iaHR0cDovL3d3dy5mZWFydG94LmNvbS8iPkVkd2luIE11cmF0IEdhbnRlciBQb3J0Zm9saW88L2E+PGJyIC8+QSBzaW1wbGUgYW5kIGNyZWF0aXZlIGxheW91dC4gTm90IGNvbW1vbiwgYnV0IHN0aWxsIHByYWN0aWNhbCBhbmQgZWFzeSB0byB1c2UuPC9wPgo8cD48YSBocmVmPSJodHRwOi8vd3d3LmZlYXJ0b3guY29tLyI+PGltZyBzcmM9Imh0dHA6Ly9tZWRpYTEuc21hc2hpbmdtYWdhemluZS5jb20vd3AtY29udGVudC91cGxvYWRzL2ltYWdlcy81MC1mbGFzaC13ZWItZGVzaWducy9lZHdpbm11cmF0LmpwZyIgd2lkdGg9IjUwMCIgaGVpZ2h0PSIzMzAiIGFsdD0iRWR3aW4gTXVyYXQgR2FudGVyIFBvcnRmb2xpbyIgLz48L2E+PC9wPgo8cD48YSBocmVmPSJodHRwOi8vd3d3LnZlZ2FvbmUuZGUvIj5WZWdhb25lPC9hPjxiciAvPkNvbG9yIGVmZmVjdHMgYW5kIDNEIGxheW91dCBvbiB0aGlzIHNpdGUgYXJlIHJlbWFya2FibGUuIEhvd2V2ZXIsIGl0IGNvdWxkIGJlIGltcHJvdmVkIHdpdGggc29tZSBtb3Rpb24gZ3JhcGhpY3MgYW5kIHBhZ2UgdHJhbnNpdGlvbiBlZmZlY3RzLjwvcD4KPHA+PGEgaHJlZj0iaHR0cDovL3d3dy52ZWdhb25lLmRlLyI+PGltZyBzcmM9Imh0dHA6Ly9tZWRpYTEuc21hc2hpbmdtYWdhemluZS5jb20vd3AtY29udGVudC91cGxvYWRzL2ltYWdlcy81MC1mbGFzaC13ZWItZGVzaWducy92ZWdhb25lLmpwZyIgd2lkdGg9IjUwMCIgaGVpZ2h0PSIzMzAiIGFsdD0iVmVnYW9uZSIgLz48L2E+PC9wPgo8cD48YSBocmVmPSJodHRwOi8vd3d3LmluZmluaXRjb2xvdXJzLmNvbS8iPkluZmluaXQgQ29sb3VyczwvYT48YnIgLz5UaGlzIHNpdGUgZ2l2ZXMgdGhlIHVzZXIgdGhlIG9wdGlvbiB0byBjaGFuZ2UgdGhlIGJhY2tncm91bmQgYmV0d2VlbiBiZWF1dGlmdWwgaGlnaCBxdWFsaXR5IGRlc2lnbnMuIFRoZSBtZW51IGlzIGFsc28gYSBjcmVhdGl2ZSBhbHRlcm5hdGl2ZSB0byBkZWxpdmVyIHNvbWUgaW50ZXJhY3Rpdml0eS48L3A+CjxwPjxhIGhyZWY9Imh0dHA6Ly93d3cuaW5maW5pdGNvbG91cnMuY29tLyI+PGltZyBzcmM9Imh0dHA6Ly9tZWRpYTIuc21hc2hpbmdtYWdhemluZS5jb20vd3AtY29udGVudC91cGxvYWRzL2ltYWdlcy81MC1mbGFzaC13ZWItZGVzaWducy9pbmZpbml0Y29sb3Vycy5qcGciIHdpZHRoPSI1MDAiIGhlaWdodD0iMzMwIiBhbHQ9IkluZm9ncmFwaGlzdGUgaW5kw6lwZW5kYW50IiAvPjwvYT48L3A+CjxwPjxhIGhyZWY9Imh0dHA6Ly93d3cuYXBhcnRlLWdyYXBoaXF1ZS5jb20vaW5mb2dyYXBoaXN0ZV9mcmVlbGFuY2Vfd2ViZGVzaWduZXJfM0QuaHRtIj5JbmZvZ3JhcGhpc3RlIEluZMOpcGVuZGFudDwvYT48YnIgLz5Bbm90aGVyIGNyZWF0aXZlIHBvcnRmb2xpbywgZnVsbCBvZiBpbnRlcmFjdGl2aXR5IGFuZCBtb3Rpb24gZ3JhcGhpY3MuIFRoZSBiYWNrZ3JvdW5kIGltYWdlIGlzIGdyZWF0LjwvcD4KPHA+PGEgaHJlZj0iaHR0cDovL3d3dy5hcGFydGUtZ3JhcGhpcXVlLmNvbS9pbmZvZ3JhcGhpc3RlX2ZyZWVsYW5jZV93ZWJkZXNpZ25lcl8zRC5odG0iPjxpbWcgc3JjPSJodHRwOi8vbWVkaWEyLnNtYXNoaW5nbWFnYXppbmUuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy9pbWFnZXMvNTAtZmxhc2gtd2ViLWRlc2lnbnMvaW5mb2dyYXBoaXN0ZS5qcGciIHdpZHRoPSI1MDAiIGhlaWdodD0iMzMwIiBhbHQ9IkluZm9ncmFwaGlzdGUgaW5kw6lwZW5kYW50IiAvPjwvYT48L3A+CjxwPjxhIGhyZWY9Imh0dHA6Ly93d3cuc29uYWNvbS5mci8iPlNvbmFjb208L2E+PGJyIC8+QSBncmVhdCBHZW5lcmF0aXZlIEFydCBleGFtcGxlIHdoaWNoIHJlcXVpcmVzIHRoZSB1c2VyIHRvIGludGVyYWN0IHdpdGggdGhlIHN0YWdlLjwvcD4KPHA+PGEgaHJlZj0iaHR0cDovL3d3dy5zb25hY29tLmZyLyI+PGltZyBzcmM9Imh0dHA6Ly9tZWRpYTEuc21hc2hpbmdtYWdhemluZS5jb20vd3AtY29udGVudC91cGxvYWRzL2ltYWdlcy81MC1mbGFzaC13ZWItZGVzaWducy9zb25hY29tLmpwZyIgd2lkdGg9IjUwMCIgaGVpZ2h0PSIzMzAiIGFsdD0iU29uYWNvbSwgYWdlbmNlIGRlIGNyw6lhdGlvbiBhdmVjIDUgc3R1ZGlvcyBkJ2VucmVnaXN0cmVtZW50IGV0IDEgcGxhdGVhdSBkZSB0b3VybmFnZSBUViBpbnTDqWdyw6lzLiIgLz4gPC9hPjwvcD4KPHA+PGEgaHJlZj0iaHR0cDovL3d3dy5jbG91ZHJha2VyLmNvbS8iPkNsb3VkUmFrZXI8L2E+PGJyIC8+T24gdGhpcyBzaXRlIHlvdSBjYW4gdXNlIHRoZSBjaGFyYWN0ZXIgdG8gbW92ZSBhbG9uZy4gVGhlIGdyYXBoaWMgZWxlbWVudCBpcyBncmVhdCBhbmQgdGhlIGNvbmNlcHQgaXQgdW51c3VhbC48L3A+CjxwPjxhIGhyZWY9Imh0dHA6Ly93d3cuY2xvdWRyYWtlci5jb20vIj48aW1nIHNyYz0iaHR0cDovL21lZGlhMS5zbWFzaGluZ21hZ2F6aW5lLmNvbS93cC1jb250ZW50L3VwbG9hZHMvaW1hZ2VzLzUwLWZsYXNoLXdlYi1kZXNpZ25zL2Nsb3VkcmFrZXIuanBnIiB3aWR0aD0iNTAwIiBoZWlnaHQ9IjMzMCIgYWx0PSJDbG91ZFJha2VyIiAvPjwvYT48L3A+CjxwPjxhIGhyZWY9Imh0dHA6Ly9wcmlzbWdpcmwub3JnLyI+UHJpc21naXJsPC9hPjxiciAvPkEgZ3JlYXQgY3JlYXRpdmUgcG9ydGZvbGlvLCB1c2luZyBhbiB1bnVzdWFsIGxheW91dC48L3A+CjxwPjxhIGhyZWY9Imh0dHA6Ly9wcmlzbWdpcmwub3JnLyI+PGltZyBzcmM9Imh0dHA6Ly9tZWRpYTIuc21hc2hpbmdtYWdhemluZS5jb20vd3AtY29udGVudC91cGxvYWRzL2ltYWdlcy81MC1mbGFzaC13ZWItZGVzaWducy9wcmltc2dpcmwuanBnIiB3aWR0aD0iNTAwIiBoZWlnaHQ9IjMzMCIgYWx0PSJQcmlzbWdpcmwiIC8+PC9hPjwvcD4KPHA+PGEgaHJlZj0iaHR0cDovL3d3dy5sYXBsYW5ldGUuc2xkaW1lbnNpb24uY29tLyI+QWdlbmNlIFNlY29uZGxpZmU8L2E+PGJyIC8+QXQgYSBmaXJzdCBnbGFuY2UgdGhpcyBzaXRlIG5lZWRzIHRoZSB1c2VyIHRvIGludGVyYWN0IHdpdGggaXQgaW4gb3JkZXIgdG8gbW92ZSBmb3J3YXJkLiBSYXRoZXIgdGhhbiB0aGUgZ3JhcGhpY3MgcXVhbGl0eSwgdGhpcyBzaXRlIGNyZWF0ZXMgYSAzRCBnbG9iZSwgZnVsbCBvZiBjb2xvciB3aGljaCBpcyBhIGNyZWF0aXZlIG9wdGlvbiB0byBtb3ZlIGFyb3VuZCB0aGUgc2l0ZS48L3A+CjxwPjxhIGhyZWY9Imh0dHA6Ly93d3cubGFwbGFuZXRlLnNsZGltZW5zaW9uLmNvbS8iPjxpbWcgc3JjPSJodHRwOi8vbWVkaWEyLnNtYXNoaW5nbWFnYXppbmUuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy9pbWFnZXMvNTAtZmxhc2gtd2ViLWRlc2lnbnMvYWdlbmNlc2Vjb25kbGlmZS5qcGciIHdpZHRoPSI1MDAiIGhlaWdodD0iMzMwIiBhbHQ9IkFnZW5jZSBTZWNvbmRsaWZlIiAvPjwvYT48L3A+CjxwPjxhIGhyZWY9Imh0dHA6Ly93d3cuZGlnYXdvcmtzLmNvbS8iPkRpZ2F3b3JrcyBDb3Jwb3JhdGlvbjwvYT48L3A+CjxwPjxhIGhyZWY9Imh0dHA6Ly93d3cuZGlnYXdvcmtzLmNvbS8iPjxpbWcgc3JjPSJodHRwOi8vbWVkaWExLnNtYXNoaW5nbWFnYXppbmUuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy9pbWFnZXMvNTAtZmxhc2gtd2ViLWRlc2lnbnMvZGlnYXdvcmtzLmpwZyIgd2lkdGg9IjUwMCIgaGVpZ2h0PSIzMzAiIGFsdD0iRGlnYXdvcmtzIENvcnBvcmF0aW9uIiAvPjwvYT48L3A+CjxwPjxhIGhyZWY9Imh0dHA6Ly93d3cuemlnbi5jb20uYnIvIj5aaWduIE1hcmtldGluZyBEaWdpdGFsPC9hPjwvcD4KPHA+PGEgaHJlZj0iaHR0cDovL3d3dy56aWduLmNvbS5ici8iPjxpbWcgc3JjPSJodHRwOi8vbWVkaWExLnNtYXNoaW5nbWFnYXppbmUuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy9pbWFnZXMvNTAtZmxhc2gtd2ViLWRlc2lnbnMvemlnbm1hcmtldGluZy5qcGciIHdpZHRoPSI1MDAiIGhlaWdodD0iMzMwIiBhbHQ9IlppZ24gTWFya2V0aW5nIERpZ2l0YWwiIC8+PC9hPjwvcD4KPHA+PGEgaHJlZj0iaHR0cDovL3d3dy5tb24tbW9uZGUuY29tIj5Nb24tTW9uZGU8L2E+PC9wPgo8cD48YSBocmVmPSJodHRwOi8vd3d3Lm1vbi1tb25kZS5jb20iPjxpbWcgc3JjPSJodHRwOi8vbWVkaWEyLnNtYXNoaW5nbWFnYXppbmUuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy9pbWFnZXMvNTAtZmxhc2gtd2ViLWRlc2lnbnMvbW9ubW9uZGUuanBnIiB3aWR0aD0iNTAwIiBoZWlnaHQ9IjMzMCIgYWx0PSJNb24tTW9uZGUiIC8+PC9hPjwvcD4KPHA+PGEgaHJlZj0iaHR0cDovL3d3dy5lbGlwc2VhZ2VuY3kuY29tL2FnZW5jeS5odG1sIj5FbGlwc2UgQWdlbmN5PC9hPjwvcD4KPHA+PGEgaHJlZj0iaHR0cDovL3d3dy5lbGlwc2VhZ2VuY3kuY29tL2FnZW5jeS5odG1sIj48aW1nIHNyYz0iaHR0cDovL21lZGlhMi5zbWFzaGluZ21hZ2F6aW5lLmNvbS93cC1jb250ZW50L3VwbG9hZHMvaW1hZ2VzLzUwLWZsYXNoLXdlYi1kZXNpZ25zL2VsaXBzZWFnZW5jeS5qcGciIHdpZHRoPSI1MDAiIGhlaWdodD0iMzMwIiBhbHQ9IkVsaXBzZSBBZ2VuY3kiIC8+PC9hPjwvcD4KPHA+PGEgaHJlZj0iaHR0cDovL3d3dy5tYXR0d2lnZ2lucy5uZXQvIj5NYXR0IFdpZ2dpbnMgUG9ydGZvbGlvPC9hPjwvcD4KPHA+PGEgaHJlZj0iaHR0cDovL3d3dy5tYXR0d2lnZ2lucy5uZXQvIj48aW1nIHNyYz0iaHR0cDovL21lZGlhMS5zbWFzaGluZ21hZ2F6aW5lLmNvbS93cC1jb250ZW50L3VwbG9hZHMvaW1hZ2VzLzUwLWZsYXNoLXdlYi1kZXNpZ25zL01hdHRXaWdnaW5zLmpwZyIgd2lkdGg9IjUwMCIgaGVpZ2h0PSIzMzAiIGFsdD0iTWF0dCBXaWdnaW5zIiAvPjwvYT48L3A+CjxwPjxhIGhyZWY9Imh0dHA6Ly93d3cubGlsaWFwbGFuZXQuY29tLyI+TGlsaWEgUGxhbmV0PC9hPjwvcD4KPHA+PGEgaHJlZj0iaHR0cDovL3d3dy5saWxpYXBsYW5ldC5jb20vIj48aW1nIHNyYz0iaHR0cDovL21lZGlhMS5zbWFzaGluZ21hZ2F6aW5lLmNvbS93cC1jb250ZW50L3VwbG9hZHMvaW1hZ2VzLzUwLWZsYXNoLXdlYi1kZXNpZ25zL2xpbGlhcGxhbmV0LmpwZyIgd2lkdGg9IjUwMCIgaGVpZ2h0PSIzMzAiIGFsdD0iTGlsaWEgUGxhbmV0IiAvPjwvYT48L3A+CjxwPjxhIGhyZWY9Imh0dHA6Ly9sYWRpby5ydS9mbGFzaC9lbi9pbmRleC5odG1sIj5MYWRpbzwvYT48L3A+CjxwPjxhIGhyZWY9Imh0dHA6Ly9sYWRpby5ydS9mbGFzaC9lbi9pbmRleC5odG1sIj48aW1nIHNyYz0iaHR0cDovL21lZGlhMi5zbWFzaGluZ21hZ2F6aW5lLmNvbS93cC1jb250ZW50L3VwbG9hZHMvaW1hZ2VzLzUwLWZsYXNoLXdlYi1kZXNpZ25zL2xhZGlvLmpwZyIgd2lkdGg9IjUwMCIgaGVpZ2h0PSIzMzAiIGFsdD0iTGFkaW8iIC8+PC9hPjwvcD4KPGgzPkluc3VyYW5jZTwvaDM+CjxwPjxhIGhyZWY9Imh0dHA6Ly93d3cucHJpdmFkby1zZWd1cm9zLnB0Ij5Qcml2YWRvIFNlZ3Vyb3M8L2E+ICg8ZW0+Y3VycmVudGx5IG9mZmxpbmU8L2VtPik8YnIgLz5UaGUgUHJpdmFkbyBTZWd1cm9zIHNpdGUgaGFzIHdvbmRlcmZ1bCBncmFwaGljcywgd2l0aCBtYW55IHJpY2ggZGV0YWlscy4gQSBnb29kIGV4YW1wbGUgdG8gZ2V0IGluc3BpcmVkIGZyb20uPC9wPgo8cD48YSBocmVmPSJodHRwOi8vd3d3LnByaXZhZG8tc2VndXJvcy5wdCI+PGltZyBzcmM9Imh0dHA6Ly9tZWRpYTIuc21hc2hpbmdtYWdhemluZS5jb20vd3AtY29udGVudC91cGxvYWRzL2ltYWdlcy81MC1mbGFzaC13ZWItZGVzaWducy9wcml2YWRvc2VndXJvcy5qcGciIHdpZHRoPSI1MDAiIGhlaWdodD0iMzMwIiBhbHQ9IlByaXZhZG8gU2VndXJvcyIgLz48L2E+PC9wPgo8cD48YSBocmVmPSJodHRwOi8vd3d3LmxldHlvdXJ3b3JyaWVzZ28uY29tIj5MZXQgWW91ciBXb3JyaWVzIEdvPC9hPjxiciAvPkFub3RoZXIgcGFyYWxsYXggc2l0ZSwgd2l0aCBiZWF1dGlmdWwgZ3JhcGhpY3MsIHdpdGggZnVubnkgaW50ZXJhY3Rpb25zIGxpa2UgZHJhZ2dpbmcgdGhlIGNoYXJhY3RlcnMgJm5kYXNoOyBlYWNoIG9mIHRoZW0gcmVwcmVzZW50cyBvbmUgc3BlY2lmaWMgdG9waWMuPC9wPgo8cD48YSBocmVmPSJodHRwOi8vd3d3LmxldHlvdXJ3b3JyaWVzZ28uY29tIj48aW1nIHNyYz0iaHR0cDovL21lZGlhMS5zbWFzaGluZ21hZ2F6aW5lLmNvbS93cC1jb250ZW50L3VwbG9hZHMvaW1hZ2VzLzUwLWZsYXNoLXdlYi1kZXNpZ25zL2xldHlvdXJ3b3JyaWVzZ28uanBnIiB3aWR0aD0iNTAwIiBoZWlnaHQ9IjMzMCIgYWx0PSJMZXQgWW91ciBXb3JyaWVzIEdvIiAvPiA8L2E+PC9wPgo8aDM+UHJvamVjdHM8L2gzPgo8cD5Tb21ldGltZXMgZGVzaWduZXJzIGFuZCBkZXZlbG9wZXJzIGNyZWF0ZSBhd2Vzb21lIHdvcmtzLCBidXQgdGhlc2Ugd29ya3MgbmV2ZXIgZ28gb25saW5lLCBiZWNhdXNlIHRoZSBjbGllbnQgaGFzbiYjODIxNzt0IGNob3NlbiB0aGVtLiBUaGUgZm9sbG93aW5nIHByb2plY3RzIGFyZSBncmVhdCBleGFtcGxlcyB3aGljaCB3aWxsIGluc3BpcmUgeW91IGZvciBzdXJlIG9uIHlvdXIgZnV0dXJlIHByb2plY3RzLjwvcD4KPHA+PGEgaHJlZj0iaHR0cDovL2phbi1rYXNrLmRyZWFtaG9zdGVycy5jb20vc2Nob29sL2ltYWdpbmVfYWlyLyI+SW1hZ2luZSBBaXIgLSBGbGFzaCBTaXRlIFNjaG9vbCBwcm9qZWN0PC9hPjwvcD4KPHA+PGEgaHJlZj0iaHR0cDovL2phbi1rYXNrLmRyZWFtaG9zdGVycy5jb20vc2Nob29sL2ltYWdpbmVfYWlyLyI+PGltZyBzcmM9Imh0dHA6Ly9tZWRpYTEuc21hc2hpbmdtYWdhemluZS5jb20vd3AtY29udGVudC91cGxvYWRzL2ltYWdlcy81MC1mbGFzaC13ZWItZGVzaWducy9pbWFnaW5lYWlyLmpwZyIgd2lkdGg9IjUwMCIgaGVpZ2h0PSIzMzAiIGFsdD0iSW1hZ2luZSBBaXIgLSBGbGFzaCBTaXRlIFNjaG9vbCBwcm9qZWN0IiAvPjwvYT48L3A+CjxwPjxhIGhyZWY9Imh0dHA6Ly93d3cuZ3JpbmdvLm51L3Byb2plY3RzL2Nva2VsaWdodC13b3JsZGZsYXZvdXJzLyMvd29ybGQiPlByb2plY3Q6IENvY2EtQ29sYSBMaWdodCAtIFRhc3RlcyBvZiB0aGUgV29ybGQ8L2E+PC9wPgo8cD48YSBocmVmPSJodHRwOi8vd3d3LmdyaW5nby5udS9wcm9qZWN0cy9jb2tlbGlnaHQtd29ybGRmbGF2b3Vycy8jL3dvcmxkIj48aW1nIHNyYz0iaHR0cDovL21lZGlhMi5zbWFzaGluZ21hZ2F6aW5lLmNvbS93cC1jb250ZW50L3VwbG9hZHMvaW1hZ2VzLzUwLWZsYXNoLXdlYi1kZXNpZ25zL2Njb2xhbGlnaHQuanBnIiB3aWR0aD0iNTAwIiBoZWlnaHQ9IjMzMCIgYWx0PSJyb2plY3Q6IENvY2EtQ29sYSBMaWdodCAtIFRhc3RlcyBvZiB0aGUgV29ybGQiIC8+PC9hPjwvcD4KPHA+PGEgaHJlZj0iaHR0cDovL3NhaXplbm1lZGlhLmNvbS9rZWVwZXJzZ2FtZS8iPlNhaXplbm1lZGlhIC0gS2VlcGVyc2dhbWU8L2E+PC9wPgo8cD48YSBocmVmPSJodHRwOi8vc2FpemVubWVkaWEuY29tL2tlZXBlcnNnYW1lLyI+PGltZyBzcmM9Imh0dHA6Ly9tZWRpYTIuc21hc2hpbmdtYWdhemluZS5jb20vd3AtY29udGVudC91cGxvYWRzL2ltYWdlcy81MC1mbGFzaC13ZWItZGVzaWducy9rZWVwZXJzZ2FtZS5qcGciIHdpZHRoPSI1MDAiIGhlaWdodD0iMzMwIiBhbHQ9IlNhaXplbm1lZGlhIC0gS2VlcGVyc2dhbWUiIC8+PC9hPjwvcD4KPHA+PGEgaHJlZj0iaHR0cDovL2RlbW8ubm9ydGhraW5nZG9tLmNvbS9paHV2dWRldHBhdG95b3RhL2luZGV4X2VuLmh0bWwiPk9uIFRveW90YeKAmXMgbWluZDwvYT48L3A+CjxwPjxhIGhyZWY9Imh0dHA6Ly9kZW1vLm5vcnRoa2luZ2RvbS5jb20vaWh1dnVkZXRwYXRveW90YS9pbmRleF9lbi5odG1sIj48aW1nIHNyYz0iaHR0cDovL21lZGlhMS5zbWFzaGluZ21hZ2F6aW5lLmNvbS93cC1jb250ZW50L3VwbG9hZHMvaW1hZ2VzLzUwLWZsYXNoLXdlYi1kZXNpZ25zL29udG95b3RhbWluZC5qcGciIHdpZHRoPSI1MDAiIGhlaWdodD0iMzMwIiBhbHQ9Ik9uIFRveW90YeKAmXMgbWluZCIgLz48L2E+PC9wPgo8aDM+R2FtZXMgb3IgR2FtZXMgUmVsYXRlZDwvaDM+CjxwPjxhIGhyZWY9Imh0dHA6Ly93d3cuZ2V0dGhlZ2xhc3MuY29tIj5HZXQgdGhlIEdsYXNzPC9hPjxiciAvPlRoaXMgc2l0ZSBpcyBhIDNEIGJvYXJkIGdhbWUsIHdpdGggYW5pbWF0ZWQgY2hhcmFjdGVycywgZnVsbCBvZiBhY3Rpb24uIFRoZSBncmFwaGljcywgYW5pbWF0aW9ucywgY29uY2VwdCBhcmUgYWxsIGF3ZXNvbWUuPC9wPgo8cD48YSBocmVmPSJodHRwOi8vd3d3LmdldHRoZWdsYXNzLmNvbSI+PGltZyBzcmM9Imh0dHA6Ly9tZWRpYTEuc21hc2hpbmdtYWdhemluZS5jb20vd3AtY29udGVudC91cGxvYWRzL2ltYWdlcy81MC1mbGFzaC13ZWItZGVzaWducy9nZXR0aGVnbGFzcy5qcGciIHdpZHRoPSI1MDAiIGhlaWdodD0iMzMwIiBhbHQ9IkdldCB0aGUgR2xhc3MiIC8+PC9hPjwvcD4KPHA+PGEgaHJlZj0iaHR0cDovL3d3dy4ya2dhbWVzLmNvbS9iaW9zaG9jay9wczMvdXMvbGF1bmNoLmh0bWwiPkJpb1Nob2NrPC9hPjxiciAvPkEgUGxheXN0YXRpb24gZ2FtZSByZWxhdGVkLCB0aGlzIHNpdGUgb2ZmZXJzIGEgbmljZSBuYXZpZ2F0aW9uIHRocm91Z2ggdGhlIHNpdGUsIGFuZCBoYXMgY29vbCBkZXRhaWxzIGxpa2UgdGhlIHR2IGFuZCBjaW5lbWEgY2FtZXJhLiBUaGUgZ3JhcGhpY3MgYXJlIGFub3RoZXIgZ3JlYXQgYXNwZWN0IG9mIHRoaXMgc2l0ZS48L3A+CjxwPjxhIGhyZWY9Imh0dHA6Ly93d3cuMmtnYW1lcy5jb20vYmlvc2hvY2svcHMzL3VzL2xhdW5jaC5odG1sIj48aW1nIHNyYz0iaHR0cDovL21lZGlhMi5zbWFzaGluZ21hZ2F6aW5lLmNvbS93cC1jb250ZW50L3VwbG9hZHMvaW1hZ2VzLzUwLWZsYXNoLXdlYi1kZXNpZ25zL2Jpb3Nob2NrLmpwZyIgd2lkdGg9IjUwMCIgaGVpZ2h0PSIzMzAiIGFsdD0iQmlvU2hvY2siIC8+PC9hPjwvcD4KPHA+PGEgaHJlZj0iaHR0cDovL3d3dy5sZXZlbnRodW1wcy5jb20vIj5MZXZlbiBUaHVtcHM8L2E+PC9wPgo8cD48YSBocmVmPSJodHRwOi8vd3d3LmxldmVudGh1bXBzLmNvbS8iPjxpbWcgc3JjPSJodHRwOi8vbWVkaWEyLnNtYXNoaW5nbWFnYXppbmUuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy9pbWFnZXMvNTAtZmxhc2gtd2ViLWRlc2lnbnMvbGV2ZW50aHVtcHMuanBnIiB3aWR0aD0iNTAwIiBoZWlnaHQ9IjMzMCIgYWx0PSJMZXZlbiBUaHVtcHMiIC8+PC9hPjwvcD4KPGgzPkNvbW1lcmNpYWw8L2gzPgo8cD48YSBocmVmPSJodHRwOi8vd3d3LmJlYmlrby5jb20ucGwvIy9ob21lIiB0YXJnZXQ9Il9ibGFuayI+QmViaWtvPC9hPjxiciAvPkEgbmljZSBjb2xvcmVkIGRlc2lnbiwgd2l0aCBtb3Rpb24gZ3JhcGhpY3MgYW5kIGludGVncmF0ZWQgdmlkZW8gY29udGVudC48L3A+CjxwPjxhIGhyZWY9Imh0dHA6Ly93d3cuYmViaWtvLmNvbS5wbC8jL2hvbWUiPjxpbWcgc3JjPSJodHRwOi8vbWVkaWExLnNtYXNoaW5nbWFnYXppbmUuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy9pbWFnZXMvNTAtZmxhc2gtd2ViLWRlc2lnbnMvYmViaWtvLmpwZyIgd2lkdGg9IjUwMCIgaGVpZ2h0PSIzMzAiIGFsdD0iQmViaWtvIiAvPjwvYT48L3A+CjxwPjxhIGhyZWY9Imh0dHA6Ly93d3cubm9raWF0cmVuZHNsYWIucGwvIj5Ob2tpYSBUcmVuZHMgTGFiPC9hPjxiciAvPlRoaXMgc2l0ZSBpcyBmdWxsIG9mIGNvbG9yIHdoaWNoIGNoYW5nZXMgZGVwZW5kaW5nIG9uIHRoZSBwYXRoIHRoZSB1c2VyIGhhcyBjaG9zZW4uIFlvdSBjYW4gc2VlIHNvbWUgZ3JlYXQgZGV0YWlscyBsaWtlIHRoZSB2aWRlbyBpbWFnZXMgaW4gdGhlIGJ1YmJsZXMuIE1vdGlvbiwgbXVsdGltZWRpYSBjb250ZW50IGFuZCBjb2xvciBkZWZpbmUgdGhpcyBzaXRlLiA8L3A+CjxwPjxhIGhyZWY9Imh0dHA6Ly93d3cubm9raWF0cmVuZHNsYWIucGwvIj48aW1nIHNyYz0iaHR0cDovL21lZGlhMS5zbWFzaGluZ21hZ2F6aW5lLmNvbS93cC1jb250ZW50L3VwbG9hZHMvaW1hZ2VzLzUwLWZsYXNoLXdlYi1kZXNpZ25zL25va2lhX3RyZW5kc19sYWIuanBnIiB3aWR0aD0iNTAwIiBoZWlnaHQ9IjMzMCIgYWx0PSJOb2tpYSBUcmVuZHMgTGFiIiAvPjwvYT48L3A+CjxwPjxhIGhyZWY9Imh0dHA6Ly9oMzA0NjYud3d3My5ocC5jb20vY2FtcGFpZ24vdG91Y2hzbWFydC9hcC9lbi8/ZmJpZD02aFRlNGpJM1NQNCMjIj5IZXdsZXR0LVBhY2thcmQgLSBXYWtlIHVwIHlvdXIgZmVlbGluZ3Mgd2l0aCB0aGUgcG93ZXIgb2YgdG91Y2g8L2E+PGJyIC8+QW5vdGhlciBzaXRlIHdpdGggZ3JlYXQgZ3JhcGhpY3MgYW5kIGFuIGV4dHJhb3JkaW5hcnkgY29uY2VwdC4gVGhlIG5hdmlnYXRpb24gaXMganVzdCByZW1hcmthYmxlLiBBIGdvb2QgcGxhY2UgdG8gZ2V0IGluc3BpcmVkLjwvcD4KPHA+PGEgaHJlZj0iaHR0cDovL2gzMDQ2Ni53d3czLmhwLmNvbS9jYW1wYWlnbi90b3VjaHNtYXJ0L2FwL2VuLz9mYmlkPTZoVGU0akkzU1A0IyMiPjxpbWcgc3JjPSJodHRwOi8vbWVkaWEyLnNtYXNoaW5nbWFnYXppbmUuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy9pbWFnZXMvNTAtZmxhc2gtd2ViLWRlc2lnbnMvaHAuanBnIiB3aWR0aD0iNTAwIiBoZWlnaHQ9IjMzMCIgYWx0PSJIZXdsZXR0LVBhY2thcmQgLSBXYWtlIHVwIHlvdXIgZmVlbGluZ3Mgd2l0aCB0aGUgcG93ZXIgb2YgdG91Y2giIC8+PC9hPjwvcD4KPHA+PGEgaHJlZj0iaHR0cDovL3d3dy50aGVvbG9nb3MuZ3IvIj5UaGVvbG9nb3MgSG91c2Ugb2YgSmV3ZWxsZXJ5PC9hPjxiciAvPlRoZSBzaW1wbGljaXR5IG9mIHRoZSBzaXRlIG5hdmlnYXRpb24gYW5kIHRoZSBiZWF1dHkgb2YgZmxvd2VycyBhcmUgaGFyZCB0byBvdmVybG9vay48L3A+CjxwPjxhIGhyZWY9Imh0dHA6Ly93d3cudGhlb2xvZ29zLmdyLyI+PGltZyBzcmM9Imh0dHA6Ly9tZWRpYTIuc21hc2hpbmdtYWdhemluZS5jb20vd3AtY29udGVudC91cGxvYWRzL2ltYWdlcy81MC1mbGFzaC13ZWItZGVzaWducy90aGVvbG9nb3MuanBnIiB3aWR0aD0iNTAwIiBoZWlnaHQ9IjMzMCIgYWx0PSJUaGVvbG9nb3MgSG91c2Ugb2YgSmV3ZWxsZXJ5IiAvPjwvYT48L3A+CjxwPjxhIGhyZWY9Imh0dHA6Ly9yZWFsY2FzdWFsLmNvbS51YS8iPlJlYWwgQ2FzdWFsPC9hPjxiciAvPkFub3RoZXIgc2l0ZSB3aXRoIGdyZWF0IGdyYXBoaWNzIGFuZCBhIG5pY2UgY29uY2VwdC48L3A+CjxwPjxhIGhyZWY9Imh0dHA6Ly9yZWFsY2FzdWFsLmNvbS51YS8iPjxpbWcgc3JjPSJodHRwOi8vbWVkaWExLnNtYXNoaW5nbWFnYXppbmUuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy9pbWFnZXMvNTAtZmxhc2gtd2ViLWRlc2lnbnMvcmVhbGNhc3VhbC5qcGciIHdpZHRoPSI1MDAiIGhlaWdodD0iMzMwIiBhbHQ9IlJlYWwgQ2FzdWFsIiAvPjwvYT48L3A+CjxwPjxhIGhyZWY9Imh0dHA6Ly93d3cuYnViYmFsb28ubmV0L3YxL2luZGV4LmFzcCI+QnViYmFsb288L2E+PC9wPgo8cD48YSBocmVmPSJodHRwOi8vd3d3LmJ1YmJhbG9vLm5ldC92MS9pbmRleC5hc3AiPjxpbWcgc3JjPSJodHRwOi8vbWVkaWExLnNtYXNoaW5nbWFnYXppbmUuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy9pbWFnZXMvNTAtZmxhc2gtd2ViLWRlc2lnbnMvYnViYmFsb28uanBnIiB3aWR0aD0iNTAwIiBoZWlnaHQ9IjMzMCIgYWx0PSJCdWJiYWxvbyIgLz48L2E+PC9wPgo8cD48YSBocmVmPSJodHRwOi8vd3d3LnBpcm9nb3YucnUvIj5QaXJvZ292PC9hPjxiciAvPkEgc2ltcGxlIHNpdGUsIHdpdGggZ3JlYXQgZGV0YWlscywgbGlrZSB0aGUgbGlnaHQgYXQgdGhlIGxlZnQsIHRoZSBzZWEgYW5kIHRoZSBjYXN0bGUgYXQgdGhlIHJpZ2h0LjwvcD4KPHA+PGEgaHJlZj0iaHR0cDovL3d3dy5waXJvZ292LnJ1LyI+PGltZyBzcmM9Imh0dHA6Ly9tZWRpYTIuc21hc2hpbmdtYWdhemluZS5jb20vd3AtY29udGVudC91cGxvYWRzL2ltYWdlcy81MC1mbGFzaC13ZWItZGVzaWducy9waXJvZ292LmpwZyIgd2lkdGg9IjUwMCIgaGVpZ2h0PSIzMzAiIGFsdD0iUGlyb2dvdiIgLz48L2E+PC9wPgo8cD48YSBocmVmPSJodHRwOi8vd3d3LndoaXRlZ29sZGlzd2hpdGVnb2xkLmNvbSI+V2hpdGUgR29sZDwvYT48YnIgLz5EbyB5b3UgbGlrZSBtdXNpYz8gQW5kIGludGVyYWN0IHdpdGggYSBtb3ZpZS1jbGlwPyBXZWxsLCBoZXJlIHlvdSBhcmUgYWJsZSB0byBoYXZlIGJvdGguIEdyZWF0IGdyYXBoaWNzLCBhbmQgdGhlIHZpZGVvIGludGVncmF0aW9uIGlzIGltcHJlc3NpdmUuPC9wPgo8cD48YSBocmVmPSJodHRwOi8vd3d3LndoaXRlZ29sZGlzd2hpdGVnb2xkLmNvbSI+PGltZyBzcmM9Imh0dHA6Ly9tZWRpYTIuc21hc2hpbmdtYWdhemluZS5jb20vd3AtY29udGVudC91cGxvYWRzL2ltYWdlcy81MC1mbGFzaC13ZWItZGVzaWducy93aGl0ZWdvbGRpc3doaXRlZ29sZC5qcGciIHdpZHRoPSI1MDAiIGhlaWdodD0iMzMwIiBhbHQ9IldoaXRlIEdvbGQiIC8+PC9hPjwvcD4KPHA+PGEgaHJlZj0iaHR0cDovL3d3dy5wYXRhZ29uaWEuY29tL3dlYi9ldS90aW5zaGVkL2luZGV4LmpzcD9zbGM9ZW5fR0ImIzAzODtzY3Q9UFQmIzAzODsmIzAzODtsbj0yNDEiPlBhbnRhZ29uaWE8L2E+PGJyIC8+QW5vdGhlciBuaWNlIGFuZCBpbnRlcmFjdGl2ZSBpbnRlcmZhY2UgZXhhbXBsZS48L3A+CjxwPjxhIGhyZWY9Imh0dHA6Ly93d3cucGF0YWdvbmlhLmNvbS93ZWIvZXUvdGluc2hlZC9pbmRleC5qc3A/c2xjPWVuX0dCJiMwMzg7c2N0PVBUJiMwMzg7JiMwMzg7bG49MjQxIj48aW1nIHNyYz0iaHR0cDovL21lZGlhMS5zbWFzaGluZ21hZ2F6aW5lLmNvbS93cC1jb250ZW50L3VwbG9hZHMvaW1hZ2VzLzUwLWZsYXNoLXdlYi1kZXNpZ25zL3BhdGFnb25pYS5qcGciIHdpZHRoPSI1MDAiIGhlaWdodD0iMzMwIiBhbHQ9IlBhbnRhZ29uaWEiIC8+IDwvYT48L3A+CjxwPjxhIGhyZWY9Imh0dHA6Ly93d3cuc2NpZmkuY29tL3Rpbm1hbi9vei8iPkluZmluaXRlIE9aIHwgVGluIE1hbiB8IFNDSUZJLkNPTTwvYT48YnIgLz5UaGUgZ3JhcGhpY3MgYXJlIGV4Y2VwdGlvbmFsLCBhbmQgdGhlIGNvbnRpbnVvdXMgbW92ZW1lbnQgYmV0d2VlbiBzY2VuZXMgaXMgZ3JlYXQuIDwvcD4KPHA+PGEgaHJlZj0iaHR0cDovL3d3dy5zY2lmaS5jb20vdGlubWFuL296LyI+PGltZyBzcmM9Imh0dHA6Ly9tZWRpYTEuc21hc2hpbmdtYWdhemluZS5jb20vd3AtY29udGVudC91cGxvYWRzL2ltYWdlcy81MC1mbGFzaC13ZWItZGVzaWducy9JbmZpbml0ZU9aLmpwZyIgd2lkdGg9IjUwMCIgaGVpZ2h0PSIzMzAiIGFsdD0iSW5maW5pdGUgT1ogfCBUaW4gTWFuIHwgU0NJRkkuQ09NIiAvPjwvYT48L3A+CjxwPjxhIGhyZWY9Imh0dHA6Ly93d3cuenVuZWpvdXJuZXkubmV0LyI+WnViZTwvYT48YnIgLz5BIHNpbXBsZSBsYXlvdXQgd2l0aCBxdWFsaXR5IGdyYXBoaWNzIGFuZCBncmVhdCB0cmFuc2l0aW9ucy48L3A+CjxwPjxhIGhyZWY9Imh0dHA6Ly93d3cuenVuZWpvdXJuZXkubmV0LyI+PGltZyBzcmM9Imh0dHA6Ly9tZWRpYTIuc21hc2hpbmdtYWdhemluZS5jb20vd3AtY29udGVudC91cGxvYWRzL2ltYWdlcy81MC1mbGFzaC13ZWItZGVzaWducy96dW5lam91cm5leS5qcGciIHdpZHRoPSI1MDAiIGhlaWdodD0iMzMwIiBhbHQ9IlpVTkUiIC8+PC9hPjwvcD4KPHA+PGEgaHJlZj0iaHR0cDovL3d3dy5oZWxwdGhlaG9uZXliZWVzLmNvbSI+SMOkYWdlbi1EYXpzIC0gSGVscCB0aGUgSG9uZXkgQmVlczwvYT48YnIgLz5Bbm90aGVyIGV4YW1wbGUgb2YgYSBncmVhdCB1c2VyIGludGVyYWN0aXZpdHksIHdpdGggZ3JlYXQgZ3JhcGhpY3MuIDwvcD4KPHA+PGEgaHJlZj0iaHR0cDovL3d3dy5oZWxwdGhlaG9uZXliZWVzLmNvbSI+PGltZyBzcmM9Imh0dHA6Ly9tZWRpYTIuc21hc2hpbmdtYWdhemluZS5jb20vd3AtY29udGVudC91cGxvYWRzL2ltYWdlcy81MC1mbGFzaC13ZWItZGVzaWducy9oZWxwdGhlaG9uZXliZWVzLmpwZyIgd2lkdGg9IjUwMCIgaGVpZ2h0PSIzMzAiIGFsdD0iSMOkYWdlbi1EYXpzIC0gSGVscCB0aGUgSG9uZXkgQmVlcyIgLz4gPC9hPjwvcD4KPHA+PGEgaHJlZj0iaHR0cDovL2RlbW8ubm9ydGhraW5nZG9tLmNvbS9nb3RtaWxrL3BsYW5ldGlubmVlZC8iPkdvdCBNaWxrPzwvYT48L3A+CjxwPjxhIGhyZWY9Imh0dHA6Ly9kZW1vLm5vcnRoa2luZ2RvbS5jb20vZ290bWlsay9wbGFuZXRpbm5lZWQvIj48aW1nIHNyYz0iaHR0cDovL21lZGlhMS5zbWFzaGluZ21hZ2F6aW5lLmNvbS93cC1jb250ZW50L3VwbG9hZHMvaW1hZ2VzLzUwLWZsYXNoLXdlYi1kZXNpZ25zL2dvdG1pbGsuanBnIiB3aWR0aD0iNTAwIiBoZWlnaHQ9IjMzMCIgYWx0PSJHb3QgTWlsaz8iIC8+IDwvYT48L3A+CjxoMz5FbnZpcm9ubWVudDwvaDM+CjxwPjxhIGhyZWY9Imh0dHA6Ly9nZS5lY29tYWdpbmF0aW9uLmNvbS9zbWFydGdyaWQvIy9sYW5kaW5nX3BhZ2UiPkdFIHwgUGx1ZyBJbnRvIHRoZSBTbWFydCBHcmlkPC9hPjxiciAvPk1heWJlIHRoZSBtYWpvcml0eSBvZiB5b3UgaGF2ZSBoZWFyZCBhYm91dCB0aGlzIHNpdGUsIGFuZCBldmVuIHZpc2l0ZWQgaXQgZHVlIHRvIHRoZSBBdWdtZW50IFJlYWxpdHkgZmVhdHVyZS4gQnV0IEkgc3RpbGwgd2FudGVkIHRvIGZlYXR1cmUgaXQsIGR1ZSB0byB0aGUgaGlnaCBxdWFsaXR5IG9mIHRoZSBncmFwaGljcywgY29uY2VwdCBhbmQgZGVzaWduLiA8L3A+CjxwPjxhIGhyZWY9Imh0dHA6Ly9nZS5lY29tYWdpbmF0aW9uLmNvbS9zbWFydGdyaWQvIy9sYW5kaW5nX3BhZ2UiPjxpbWcgc3JjPSJodHRwOi8vbWVkaWExLnNtYXNoaW5nbWFnYXppbmUuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy9pbWFnZXMvNTAtZmxhc2gtd2ViLWRlc2lnbnMvZWNvbWFnaW5hdGlvbi5qcGciIHdpZHRoPSI1MDAiIGhlaWdodD0iMzMwIiBhbHQ9IkdFIHwgUGx1ZyBJbnRvIHRoZSBTbWFydCBHcmlkIiAvPiA8L2E+PC9wPgo8cD48YSBocmVmPSJodHRwOi8vYWN0b25jbzIuZGlyZWN0Lmdvdi51ay9pbmRleC5odG1sIj5EaXJlY3RHb3YgLSBBY3QgT24gQ08yIENhbGN1bGF0b3I8L2E+PGJyIC8+QW5vdGhlciBlbnZpcm9ubWVudC1yZWxhdGVkIHNpdGUsIHdpdGggYW4gZWR1Y2F0aW9uYWwgYW5kIGluZm9ybWF0aW9uYWwgcHVycG9zZS4gWW91IHdpbGwgZmluZCBuaWNlIGdyYXBoaWNzLCBjb250aW51b3VzIG1vdGlvbiBhbmQgYW4gZWFzeSBuYXZpZ2F0aW9uLiBBIGdvb2QgZXhhbXBsZSBvZiBkZWxpdmVyaW5nIGdsb2JhbCB0b3BpY3MuPC9wPgo8cD48YSBocmVmPSJodHRwOi8vYWN0b25jbzIuZGlyZWN0Lmdvdi51ay9pbmRleC5odG1sIj48aW1nIHNyYz0iaHR0cDovL21lZGlhMi5zbWFzaGluZ21hZ2F6aW5lLmNvbS93cC1jb250ZW50L3VwbG9hZHMvaW1hZ2VzLzUwLWZsYXNoLXdlYi1kZXNpZ25zL0NPMkNhbGN1bGF0b3IuanBnIiB3aWR0aD0iNTAwIiBoZWlnaHQ9IjMzMCIgYWx0PSJEaXJlY3RHb3YgLSBBY3QgT24gQ08yIENhbGN1bGF0b3IiIC8+PC9hPjwvcD4KPHA+PGEgaHJlZj0iaHR0cDovL3d3dy5wZWdhZGFlY29sb2dpY2Eub3JnLmJyL3BlZ2FsZXZlLyNhIj5XV0YgQnJhc2lsPC9hPjwvcD4KPHA+PGEgaHJlZj0iaHR0cDovL3d3dy5wZWdhZGFlY29sb2dpY2Eub3JnLmJyL3BlZ2FsZXZlLyNhIj48aW1nIHNyYz0iaHR0cDovL21lZGlhMi5zbWFzaGluZ21hZ2F6aW5lLmNvbS93cC1jb250ZW50L3VwbG9hZHMvaW1hZ2VzLzUwLWZsYXNoLXdlYi1kZXNpZ25zL3d3ZmJyYXppbC5qcGciIHdpZHRoPSI1MDAiIGhlaWdodD0iMzMwIiBhbHQ9IldXRiBCcmFzaWwiIC8+PC9hPjwvcD4KPGg0PkFib3V0IHRoZSBBdXRob3I8L2g0Pgo8cD48ZW0+Q2FybG9zIGlzIGEgZ2VlaywgZmxhc2ggYWRkaWN0ZWQgYW5kIGlzIHRoZSBmb3VuZGVyIG9mIDxhIGhyZWY9Imh0dHA6Ly93d3cudGhldGVjaGxhYnMuY29tIj5UaGUgVGVjaCBMYWJzPC9hPiwgYSBzaXRlIHRoYXQgcmVndWxhcmx5IHB1Ymxpc2hlcyBGbGFzaCBUdXRvcmlhbHMsIEZsZXggVHV0b3JpYWxzIGFuZCBBSVIgVHV0b3JpYWxzLiBZb3UgY2FuIGFsc28gZm9sbG93IGhpbSBvbiA8YSBocmVmPSJodHRwOi8vdHdpdHRlci5jb20vdGhldGVjaGxhYnMiPlR3aXR0ZXI8L2E+LjwvZW0+PC9wPgoKPCEtLSBnb29nbGVfYWRfc2VjdGlvbl9lbmQgLS0+CjxociAvPg0KDQo8cD48c21hbGw+wqkgQ2FybG9zIFBpbmhvIGZvciA8YSBocmVmPSJodHRwOi8vd3d3LnNtYXNoaW5nbWFnYXppbmUuY29tIj5TbWFzaGluZyBNYWdhemluZTwvYT4sIDIwMDkuIHwNCjxhIGhyZWY9Imh0dHA6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20vMjAwOS8wNi8wNy81MC1iZWF1dGlmdWwtZmxhc2gtd2Vic2l0ZXMvIj5QZXJtYWxpbms8L2E+IHwgDQo8YSBocmVmPSJodHRwOi8vd3d3LnNtYXNoaW5nbWFnYXppbmUuY29tLzIwMDkvMDYvMDcvNTAtYmVhdXRpZnVsLWZsYXNoLXdlYnNpdGVzLyNjb21tZW50cyI+OTMgY29tbWVudHM8L2E+IHwgDQo8YSB0aXRsZT0iQm9va21hcmsgaW4gZGVsLmljaW8udXMiIGhyZWY9Imh0dHA6Ly9kZWwuaWNpby51cy9wb3N0P3VybD1odHRwOi8vd3d3LnNtYXNoaW5nbWFnYXppbmUuY29tLzIwMDkvMDYvMDcvNTAtYmVhdXRpZnVsLWZsYXNoLXdlYnNpdGVzLyZ0aXRsZT01MCBCZWF1dGlmdWwgRmxhc2ggV2Vic2l0ZXMiPkFkZCB0byBkZWwuaWNpby51czwvYT4gfCA8YSB0aXRsZT0iQm9va21hcmsgaW4gRGlnZyIgaHJlZj0iaHR0cDovL2RpZ2cuY29tL3N1Ym1pdD9waGFzZT0yJnVybD1odHRwOi8vd3d3LnNtYXNoaW5nbWFnYXppbmUuY29tLzIwMDkvMDYvMDcvNTAtYmVhdXRpZnVsLWZsYXNoLXdlYnNpdGVzLyI+RGlnZyB0aGlzPC9hPiB8IDxhIHRpdGxlPSJTdHVtYmxlIG9uIFN0dW1ibGVVcG9uIiBocmVmPSJodHRwOi8vd3d3LnN0dW1ibGV1cG9uLmNvbS9zdWJtaXQ/dXJsPWh0dHA6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20vMjAwOS8wNi8wNy81MC1iZWF1dGlmdWwtZmxhc2gtd2Vic2l0ZXMvIj5TdHVtYmxlIG9uIFN0dW1ibGVVcG9uITwvYT4gfCA8YSB0aXRsZT0iVHdlZXQgdXMhIiBocmVmPSJodHRwOi8vdHdpdHRlci5jb20vaG9tZT9zdGF0dXM9QHR3ZWV0bWVtZSUyMEBzbWFzaGluZ21hZyUyMFJlYWRpbmclMjAnNTAgQmVhdXRpZnVsIEZsYXNoIFdlYnNpdGVzJyBodHRwOi8vd3d3LnNtYXNoaW5nbWFnYXppbmUuY29tLzIwMDkvMDYvMDcvNTAtYmVhdXRpZnVsLWZsYXNoLXdlYnNpdGVzLyI+VHdlZXQgaXQhPC9hPiB8IDxhIHRpdGxlPSJCb29rbWFyayBpbiBSZWRkaXQiIGhyZWY9Imh0dHA6Ly9yZWRkaXQuY29tL3N1Ym1pdD91cmw9aHR0cDovL3d3dy5zbWFzaGluZ21hZ2F6aW5lLmNvbS8yMDA5LzA2LzA3LzUwLWJlYXV0aWZ1bC1mbGFzaC13ZWJzaXRlcy8iPlN1Ym1pdCB0byBSZWRkaXQ8L2E+IHwgPGEgaHJlZj0iaHR0cDovL2ZvcnVtLnNtYXNoaW5nbWFnYXppbmUuY29tLyI+Rm9ydW0gU21hc2hpbmcgTWFnYXppbmU8L2E+DQoNCjxici8+DQpQb3N0IHRhZ3M6IDxhIGhyZWY9Imh0dHA6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20vdGFnL2ZsYXNoLyIgcmVsPSJ0YWciPmZsYXNoPC9hPiwgPGEgaHJlZj0iaHR0cDovL3d3dy5zbWFzaGluZ21hZ2F6aW5lLmNvbS90YWcvc2hvd2Nhc2VzLyIgcmVsPSJ0YWciPnNob3djYXNlczwvYT48YnIvPg0KPC9zbWFsbD48L3A+IjtzOjc6ImF0dHJpYnMiO2E6Mjp7czowOiIiO2E6MTp7czo0OiJ0eXBlIjtzOjQ6Imh0bWwiO31zOjM2OiJodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UiO2E6MTp7czo0OiJiYXNlIjtzOjcxOiJodHRwOi8vd3d3LnNtYXNoaW5nbWFnYXppbmUuY29tLzIwMDkvMDYvMDcvNTAtYmVhdXRpZnVsLWZsYXNoLXdlYnNpdGVzLyI7fX1zOjg6InhtbF9iYXNlIjtzOjcxOiJodHRwOi8vd3d3LnNtYXNoaW5nbWFnYXppbmUuY29tLzIwMDkvMDYvMDcvNTAtYmVhdXRpZnVsLWZsYXNoLXdlYnNpdGVzLyI7czoxNzoieG1sX2Jhc2VfZXhwbGljaXQiO2I6MTtzOjg6InhtbF9sYW5nIjtzOjI6ImVuIjt9fX1zOjM4OiJodHRwOi8vcHVybC5vcmcvc3luZGljYXRpb24vdGhyZWFkLzEuMCI7YToxOntzOjU6InRvdGFsIjthOjE6e2k6MDthOjU6e3M6NDoiZGF0YSI7czoyOiI5MyI7czo3OiJhdHRyaWJzIjthOjA6e31zOjg6InhtbF9iYXNlIjtzOjQzOiJodHRwOi8vd3d3LnNtYXNoaW5nbWFnYXppbmUuY29tL3dwLWF0b20ucGhwIjtzOjE3OiJ4bWxfYmFzZV9leHBsaWNpdCI7YjoxO3M6ODoieG1sX2xhbmciO3M6MjoiZW4iO319fX19aToyO2E6Njp7czo0OiJkYXRhIjtzOjM3OiIKCQkKCQkKCQkKCQkKCQkKCQkKCQkJCQoJCQoJCQoJCQoJCQoJIjtzOjc6ImF0dHJpYnMiO2E6MDp7fXM6ODoieG1sX2Jhc2UiO3M6NDM6Imh0dHA6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20vd3AtYXRvbS5waHAiO3M6MTc6InhtbF9iYXNlX2V4cGxpY2l0IjtiOjE7czo4OiJ4bWxfbGFuZyI7czoyOiJlbiI7czo1OiJjaGlsZCI7YToyOntzOjI3OiJodHRwOi8vd3d3LnczLm9yZy8yMDA1L0F0b20iO2E6OTp7czo2OiJhdXRob3IiO2E6MTp7aTowO2E6Njp7czo0OiJkYXRhIjtzOjEwOiIKCQkJCgkJCQkJIjtzOjc6ImF0dHJpYnMiO2E6MDp7fXM6ODoieG1sX2Jhc2UiO3M6NDM6Imh0dHA6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20vd3AtYXRvbS5waHAiO3M6MTc6InhtbF9iYXNlX2V4cGxpY2l0IjtiOjE7czo4OiJ4bWxfbGFuZyI7czoyOiJlbiI7czo1OiJjaGlsZCI7YToxOntzOjI3OiJodHRwOi8vd3d3LnczLm9yZy8yMDA1L0F0b20iO2E6MTp7czo0OiJuYW1lIjthOjE6e2k6MDthOjU6e3M6NDoiZGF0YSI7czoxODoiU21hc2hpbmcgRWRpdG9yaWFsIjtzOjc6ImF0dHJpYnMiO2E6MDp7fXM6ODoieG1sX2Jhc2UiO3M6NDM6Imh0dHA6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20vd3AtYXRvbS5waHAiO3M6MTc6InhtbF9iYXNlX2V4cGxpY2l0IjtiOjE7czo4OiJ4bWxfbGFuZyI7czoyOiJlbiI7fX19fX19czo1OiJ0aXRsZSI7YToxOntpOjA7YTo1OntzOjQ6ImRhdGEiO3M6NTA6IkJlYXV0aWZ1bCBIaWdoLVF1YWxpdHkgRnJlZSBGb250cyBGb3IgWW91ciBEZXNpZ25zIjtzOjc6ImF0dHJpYnMiO2E6MTp7czowOiIiO2E6MTp7czo0OiJ0eXBlIjtzOjQ6Imh0bWwiO319czo4OiJ4bWxfYmFzZSI7czo0MzoiaHR0cDovL3d3dy5zbWFzaGluZ21hZ2F6aW5lLmNvbS93cC1hdG9tLnBocCI7czoxNzoieG1sX2Jhc2VfZXhwbGljaXQiO2I6MTtzOjg6InhtbF9sYW5nIjtzOjI6ImVuIjt9fXM6NDoibGluayI7YTozOntpOjA7YTo1OntzOjQ6ImRhdGEiO3M6MDoiIjtzOjc6ImF0dHJpYnMiO2E6MTp7czowOiIiO2E6Mzp7czozOiJyZWwiO3M6OToiYWx0ZXJuYXRlIjtzOjQ6InR5cGUiO3M6OToidGV4dC9odG1sIjtzOjQ6ImhyZWYiO3M6OTQ6Imh0dHA6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20vMjAwOS8wNi8wNS9iZWF1dGlmdWwtaGlnaC1xdWFsaXR5LWZyZWUtZm9udHMtZm9yLXlvdXItZGVzaWducy8iO319czo4OiJ4bWxfYmFzZSI7czo0MzoiaHR0cDovL3d3dy5zbWFzaGluZ21hZ2F6aW5lLmNvbS93cC1hdG9tLnBocCI7czoxNzoieG1sX2Jhc2VfZXhwbGljaXQiO2I6MTtzOjg6InhtbF9sYW5nIjtzOjI6ImVuIjt9aToxO2E6NTp7czo0OiJkYXRhIjtzOjA6IiI7czo3OiJhdHRyaWJzIjthOjI6e3M6MDoiIjthOjM6e3M6MzoicmVsIjtzOjc6InJlcGxpZXMiO3M6NDoidHlwZSI7czo5OiJ0ZXh0L2h0bWwiO3M6NDoiaHJlZiI7czoxMDM6Imh0dHA6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20vMjAwOS8wNi8wNS9iZWF1dGlmdWwtaGlnaC1xdWFsaXR5LWZyZWUtZm9udHMtZm9yLXlvdXItZGVzaWducy8jY29tbWVudHMiO31zOjM4OiJodHRwOi8vcHVybC5vcmcvc3luZGljYXRpb24vdGhyZWFkLzEuMCI7YToxOntzOjU6ImNvdW50IjtzOjI6IjkyIjt9fXM6ODoieG1sX2Jhc2UiO3M6NDM6Imh0dHA6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20vd3AtYXRvbS5waHAiO3M6MTc6InhtbF9iYXNlX2V4cGxpY2l0IjtiOjE7czo4OiJ4bWxfbGFuZyI7czoyOiJlbiI7fWk6MjthOjU6e3M6NDoiZGF0YSI7czowOiIiO3M6NzoiYXR0cmlicyI7YToyOntzOjA6IiI7YTozOntzOjM6InJlbCI7czo3OiJyZXBsaWVzIjtzOjQ6InR5cGUiO3M6MjA6ImFwcGxpY2F0aW9uL2F0b20reG1sIjtzOjQ6ImhyZWYiO3M6MTA0OiJodHRwOi8vd3d3LnNtYXNoaW5nbWFnYXppbmUuY29tLzIwMDkvMDYvMDUvYmVhdXRpZnVsLWhpZ2gtcXVhbGl0eS1mcmVlLWZvbnRzLWZvci15b3VyLWRlc2lnbnMvZmVlZC9hdG9tLyI7fXM6Mzg6Imh0dHA6Ly9wdXJsLm9yZy9zeW5kaWNhdGlvbi90aHJlYWQvMS4wIjthOjE6e3M6NToiY291bnQiO3M6MjoiOTIiO319czo4OiJ4bWxfYmFzZSI7czo0MzoiaHR0cDovL3d3dy5zbWFzaGluZ21hZ2F6aW5lLmNvbS93cC1hdG9tLnBocCI7czoxNzoieG1sX2Jhc2VfZXhwbGljaXQiO2I6MTtzOjg6InhtbF9sYW5nIjtzOjI6ImVuIjt9fXM6MjoiaWQiO2E6MTp7aTowO2E6NTp7czo0OiJkYXRhIjtzOjM5OiJodHRwOi8vd3d3LnNtYXNoaW5nbWFnYXppbmUuY29tLz9wPTc1ODAiO3M6NzoiYXR0cmlicyI7YTowOnt9czo4OiJ4bWxfYmFzZSI7czo0MzoiaHR0cDovL3d3dy5zbWFzaGluZ21hZ2F6aW5lLmNvbS93cC1hdG9tLnBocCI7czoxNzoieG1sX2Jhc2VfZXhwbGljaXQiO2I6MTtzOjg6InhtbF9sYW5nIjtzOjI6ImVuIjt9fXM6NzoidXBkYXRlZCI7YToxOntpOjA7YTo1OntzOjQ6ImRhdGEiO3M6MjA6IjIwMDktMDYtMDZUMTc6NDE6MzFaIjtzOjc6ImF0dHJpYnMiO2E6MDp7fXM6ODoieG1sX2Jhc2UiO3M6NDM6Imh0dHA6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20vd3AtYXRvbS5waHAiO3M6MTc6InhtbF9iYXNlX2V4cGxpY2l0IjtiOjE7czo4OiJ4bWxfbGFuZyI7czoyOiJlbiI7fX1zOjk6InB1Ymxpc2hlZCI7YToxOntpOjA7YTo1OntzOjQ6ImRhdGEiO3M6MjA6IjIwMDktMDYtMDVUMTI6NDQ6MTNaIjtzOjc6ImF0dHJpYnMiO2E6MDp7fXM6ODoieG1sX2Jhc2UiO3M6NDM6Imh0dHA6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20vd3AtYXRvbS5waHAiO3M6MTc6InhtbF9iYXNlX2V4cGxpY2l0IjtiOjE7czo4OiJ4bWxfbGFuZyI7czoyOiJlbiI7fX1zOjg6ImNhdGVnb3J5IjthOjM6e2k6MDthOjU6e3M6NDoiZGF0YSI7czowOiIiO3M6NzoiYXR0cmlicyI7YToxOntzOjA6IiI7YToyOntzOjY6InNjaGVtZSI7czozMToiaHR0cDovL3d3dy5zbWFzaGluZ21hZ2F6aW5lLmNvbSI7czo0OiJ0ZXJtIjtzOjU6IkZvbnRzIjt9fXM6ODoieG1sX2Jhc2UiO3M6NDM6Imh0dHA6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20vd3AtYXRvbS5waHAiO3M6MTc6InhtbF9iYXNlX2V4cGxpY2l0IjtiOjE7czo4OiJ4bWxfbGFuZyI7czoyOiJlbiI7fWk6MTthOjU6e3M6NDoiZGF0YSI7czowOiIiO3M6NzoiYXR0cmlicyI7YToxOntzOjA6IiI7YToyOntzOjY6InNjaGVtZSI7czozMToiaHR0cDovL3d3dy5zbWFzaGluZ21hZ2F6aW5lLmNvbSI7czo0OiJ0ZXJtIjtzOjk6ImRvd25sb2FkcyI7fX1zOjg6InhtbF9iYXNlIjtzOjQzOiJodHRwOi8vd3d3LnNtYXNoaW5nbWFnYXppbmUuY29tL3dwLWF0b20ucGhwIjtzOjE3OiJ4bWxfYmFzZV9leHBsaWNpdCI7YjoxO3M6ODoieG1sX2xhbmciO3M6MjoiZW4iO31pOjI7YTo1OntzOjQ6ImRhdGEiO3M6MDoiIjtzOjc6ImF0dHJpYnMiO2E6MTp7czowOiIiO2E6Mjp7czo2OiJzY2hlbWUiO3M6MzE6Imh0dHA6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20iO3M6NDoidGVybSI7czo0OiJmcmVlIjt9fXM6ODoieG1sX2Jhc2UiO3M6NDM6Imh0dHA6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20vd3AtYXRvbS5waHAiO3M6MTc6InhtbF9iYXNlX2V4cGxpY2l0IjtiOjE7czo4OiJ4bWxfbGFuZyI7czoyOiJlbiI7fX1zOjc6InN1bW1hcnkiO2E6MTp7aTowO2E6NTp7czo0OiJkYXRhIjtzOjE3NDI6IjwhLS0gZmVlZCBiYW5uZXJzIC0tPgo8ZGl2IGNsYXNzPSJnc2Vuc2UiPjxzcGFuIGNsYXNzPSJhbiI+QWR2ZXJ0aXNlbWVudHM8L3NwYW4+PGJyLz4JCgo8YSBocmVmPSJodHRwOi8vYWRzZXJ2ZXIuM2RpZ2l0LmRlL3d3dy9kZWxpdmVyeS9jay5waHA/em9uZWlkPTU2IiB0YXJnZXQ9Il9ibGFuayI+PGltZyBzcmM9Imh0dHA6Ly9hZHNlcnZlci4zZGlnaXQuZGUvd3d3L2RlbGl2ZXJ5L2F2dy5waHA/em9uZWlkPTU2IiBib3JkZXI9IjAiIGFsdD0iIiAvPgk8L2E+Cgo8L2Rpdj48IS0tIDxpbWcgc3JjPSJodHRwOi8vd3d3LnNtYXNoaW5nbWFnYXppbmUuY29tL2ltYWdlcy9wb3N0LXBpY3R1cmVzL2ZyZWVmb250cy5qcGciIC8+IC0tPjxwPkV2ZXJ5IG5vdyBhbmQgYWdhaW4gd2UgdGFrZSBhIGxvb2sgYXJvdW5kLCBzZWxlY3QgPHN0cm9uZz4mIzgyMjA7ZnJlc2gmIzgyMjE7IGhpZ2gtcXVhbGl0eSBmcmVlIGZvbnRzPC9zdHJvbmc+IGFuZCBwcmVzZW50IHRoZW0gdG8geW91IGluIGEgYnJpZWYgb3ZlcnZpZXcuIFRoZSBjaG9pY2UgaXMgZW5vcm1vdXMsIHNvIHRoZSB0aW1lIHlvdSBuZWVkIHRvIGZpbmQgdGhlbSBpcyB1c3VhbGx5IHRoZSB0aW1lIHlvdSBzaG91bGQgYmUgaW52ZXN0aW5nIGluIHlvdXIgY3VycmVudCBwcm9qZWN0cy4gV2Ugc2VhcmNoIGZvciB0aGVtIGFuZCB3ZSBmaW5kIHRoZW0sIHNvIHlvdSBkb24mIzgyMTc7dCBoYXZlIHRvLjwvcD4gDQoNCjxwPjxhIGhyZWY9Imh0dHA6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20vMjAwOS8wNi8wNS9iZWF1dGlmdWwtaGlnaC1xdWFsaXR5LWZyZWUtZm9udHMtZm9yLXlvdXItZGVzaWducy8iPjxpbWcgc3JjPSJodHRwOi8vd3d3LnNtYXNoaW5nbWFnYXppbmUuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDA5L2ZyZWUtZm9udHMtbWF5LTIwMDkvdGl0LmpwZyIgd2lkdGg9IjUwMCIgaGVpZ2h0PSIzMzIiIGFsdD0iU2NyZWVuc2hvdCIgLz48L2E+PC9wPg0KDQo8cD5JbiB0aGlzIHNlbGVjdGlvbiB3ZSYjODIxNztyZSBnbGFkIHRvIHByZXNlbnQgeW91IENodW5rLCBUaXRpbGl1bSwgQW1wdXRhIEJhbmdpeiwgU2VyaWYgQmV0YSwgUXVhdHJvLCBSb3VnaCBEcmFmdCwgQ29tZm9ydGFhIGFuZCBhIGNvdXBsZSBvZiBvdGhlciBoaWdoLXF1YWxpdHkgZnJlZSBmb250cy4gUGxlYXNlIDxzdHJvbmc+cmVhZCB0aGUgbGljZW5zZSBhZ3JlZW1lbnRzIGNhcmVmdWxseTwvc3Ryb25nPiBiZWZvcmUgdXNpbmcgdGhlIGZvbnRzICZtZGFzaDsgdGhlIGxpY2Vuc2UgY2FuIGNoYW5nZSBmcm9tIHRpbWUgdG8gdGltZS48L3A+DQo8dWw+IA0KPGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20vMjAwOS8wNS8xMS8xNS1mcmVzaC1oaWdoLXF1YWxpdHktZnJlZS1mb250cy8iPjE1IEJlYXV0aWZ1bCBIaWdoLVF1YWxpdHkgRnJlZSBGb250czwvYT48L2xpPiANCjxsaT48YSBocmVmPSJodHRwOi8vd3d3LnNtYXNoaW5nbWFnYXppbmUuY29tLzIwMDcvMTEvMDgvNDAtZXhjZWxsZW50LWZyZWVmb250cy1mb3ItcHJvZmVzc2lvbmFsLWRlc2lnbi8iPjQwIEV4Y2VsbGVudCBGcmVlIEZvbnRzIEZvciBQcm9mZXNzaW9uYWwgRGVzaWduPC9hPjwvbGk+IA0KPGxpPllvdSBjYW4gZmluZCBvdmVyIDgwIG1vcmUgZnJlZSBmb250cyBpbiBvdXIgc2VjdGlvbiA8YSBocmVmPSJodHRwOi8vd3d3LnNtYXNoaW5nbWFnYXppbmUuY29tL2NhdGVnb3J5L2ZvbnRzLyI+Rm9udHM8L2E+LjwvbGk+IA0KPC91bD4gIjtzOjc6ImF0dHJpYnMiO2E6MTp7czowOiIiO2E6MTp7czo0OiJ0eXBlIjtzOjQ6Imh0bWwiO319czo4OiJ4bWxfYmFzZSI7czo0MzoiaHR0cDovL3d3dy5zbWFzaGluZ21hZ2F6aW5lLmNvbS93cC1hdG9tLnBocCI7czoxNzoieG1sX2Jhc2VfZXhwbGljaXQiO2I6MTtzOjg6InhtbF9sYW5nIjtzOjI6ImVuIjt9fXM6NzoiY29udGVudCI7YToxOntpOjA7YTo1OntzOjQ6ImRhdGEiO3M6MTc1NDM6Igo8IS0tIGdvb2dsZV9hZF9zZWN0aW9uX3N0YXJ0IC0tPgo8cD48IS0tIGZlZWQgYmFubmVycyAtLT48L3A+CjxkaXYgY2xhc3M9ImdzZW5zZSI+PHNwYW4gY2xhc3M9ImFuIj5BZHZlcnRpc2VtZW50czwvc3Bhbj48YnIvPgk8L3A+CjxwPjxhIGhyZWY9Imh0dHA6Ly9hZHNlcnZlci4zZGlnaXQuZGUvd3d3L2RlbGl2ZXJ5L2NrLnBocD96b25laWQ9NTYiIHRhcmdldD0iX2JsYW5rIj48aW1nIHNyYz0iaHR0cDovL2Fkc2VydmVyLjNkaWdpdC5kZS93d3cvZGVsaXZlcnkvYXZ3LnBocD96b25laWQ9NTYiIGJvcmRlcj0iMCIgYWx0PSIiIC8+CTwvYT48L3A+CjwvZGl2Pgo8cD5FdmVyeSBub3cgYW5kIGFnYWluIHdlIHRha2UgYSBsb29rIGFyb3VuZCwgc2VsZWN0IDxzdHJvbmc+JiM4MjIwO2ZyZXNoJiM4MjIxOyBoaWdoLXF1YWxpdHkgZnJlZSBmb250czwvc3Ryb25nPiBhbmQgcHJlc2VudCB0aGVtIHRvIHlvdSBpbiBhIGJyaWVmIG92ZXJ2aWV3LiBUaGUgY2hvaWNlIGlzIGVub3Jtb3VzLCBzbyB0aGUgdGltZSB5b3UgbmVlZCB0byBmaW5kIHRoZW0gaXMgdXN1YWxseSB0aGUgdGltZSB5b3Ugc2hvdWxkIGJlIGludmVzdGluZyBpbiB5b3VyIGN1cnJlbnQgcHJvamVjdHMuIFdlIHNlYXJjaCBmb3IgdGhlbSBhbmQgd2UgZmluZCB0aGVtLCBzbyB5b3UgZG9uJiM4MjE3O3QgaGF2ZSB0by48L3A+CjxwPkluIHRoaXMgc2VsZWN0aW9uIHdlJiM4MjE3O3JlIGdsYWQgdG8gcHJlc2VudCB5b3UgQ2h1bmssIFRpdGlsaXVtLCBBbXB1dGEgQmFuZ2l6LCBTZXJpZiBCZXRhLCBRdWF0cm8sIFJvdWdoIERyYWZ0LCBDb21mb3J0YWEgYW5kIGEgY291cGxlIG9mIG90aGVyIGhpZ2gtcXVhbGl0eSBmcmVlIGZvbnRzLiBQbGVhc2UgPHN0cm9uZz5yZWFkIHRoZSBsaWNlbnNlIGFncmVlbWVudHMgY2FyZWZ1bGx5PC9zdHJvbmc+IGJlZm9yZSB1c2luZyB0aGUgZm9udHMgJm1kYXNoOyB0aGUgbGljZW5zZSBjYW4gY2hhbmdlIGZyb20gdGltZSB0byB0aW1lLjwvcCA+PC9wPgo8dWw+CjxsaT48YSBocmVmPSJodHRwOi8vd3d3LnNtYXNoaW5nbWFnYXppbmUuY29tLzIwMDkvMDUvMTEvMTUtZnJlc2gtaGlnaC1xdWFsaXR5LWZyZWUtZm9udHMvIj4xNSBCZWF1dGlmdWwgSGlnaC1RdWFsaXR5IEZyZWUgRm9udHM8L2E+PC9saT4KPGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20vMjAwNy8xMS8wOC80MC1leGNlbGxlbnQtZnJlZWZvbnRzLWZvci1wcm9mZXNzaW9uYWwtZGVzaWduLyI+NDAgRXhjZWxsZW50IEZyZWUgRm9udHMgRm9yIFByb2Zlc3Npb25hbCBEZXNpZ248L2E+PC9saT4KPGxpPllvdSBjYW4gZmluZCBvdmVyIDgwIG1vcmUgZnJlZSBmb250cyBpbiBvdXIgc2VjdGlvbiA8YSBocmVmPSJodHRwOi8vd3d3LnNtYXNoaW5nbWFnYXppbmUuY29tL2NhdGVnb3J5L2ZvbnRzLyI+Rm9udHM8L2E+LjwvbGk+CjwvdWw+CjxoMz5GcmVzaCBIaWdoLVF1YWxpdHkgRnJlZSBGb250czwvaDM+CjxwPjxhIGhyZWY9Imh0dHA6Ly93d3cudGhlbGVhZ3Vlb2Ztb3ZlYWJsZXR5cGUuY29tL2ZvbnRzLzQtY2h1bmsiPkNodW5rIE9wZW4gU291cmNlIFR5cGVmYWNlPC9hPiBbIDxhIGhyZWY9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL3RoZWxlYWd1ZS9mb250cy9jaHVuay56aXA/MTI0MzcwODE2NyI+RG93bmxvYWQgdGhlIC56aXAtcGFja2FnZTwvYT4gXTxiciAvPkNodW5rIGlzIGFuIHVsdHJhLWJvbGQgc2xhYiBzZXJpZiB0eXBlZmFjZSB0aGF0IGlzIHJlbWluaXNjZW50IG9mIG9sZCBBbWVyaWNhbiBXZXN0ZXJuIHdvb2RjdXRzLCBicm9hZHNpZGVzLCBhbmQgbmV3c3BhcGVyIGhlYWRsaW5lcy4gVXNlZCBtYWlubHkgZm9yIGRpc3BsYXksIHRoZSBmYXQgYmxvY2sgbGV0dGVyaW5nIGlzIHVucmVzZXJ2ZWQgeWV0IHJlZmluZWQgZm9yIGNvbnRlbXBvcmFyeSB1c2UuIE9wZW5UeXBlLiBEZXNpZ25lZCBieSBNZXJlZGl0aCBNYW5kZWwuICh2aWEgPGEgaHJlZj0iaHR0cDovL2ltanVzdGNyZWF0aXZlLmNvbS9jaHVuay1vcGVuLXNvdXJjZS10eXBlLWZvci1pbW1lZGlhdGUtZG93bmxvYWQvMjAwOS8wNS8yNS8iPkdyYWhhbSBTbWl0aDwvYT4pLjwvcD4KPHAgY2xhc3M9InNob3djYXNlIj48YSBocmVmPSJodHRwOi8vd3d3LnRoZWxlYWd1ZW9mbW92ZWFibGV0eXBlLmNvbS9mb250cy80LWNodW5rIj48aW1nIHNyYz0iaHR0cDovL3d3dy5zbWFzaGluZ21hZ2F6aW5lLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAwOS9mcmVlLWZvbnRzLW1heS0yMDA5L2NodW5rMS5qcGciIHdpZHRoPSI1MTEiIGhlaWdodD0iMzAwIiBhbHQ9IlNjcmVlbnNob3QiIC8+PC9hPjwvcD4KPHAgY2xhc3M9InNob3djYXNlIj48YSBocmVmPSJodHRwOi8vd3d3LnRoZWxlYWd1ZW9mbW92ZWFibGV0eXBlLmNvbS9mb250cy80LWNodW5rIj48aW1nIHNyYz0iaHR0cDovL3d3dy5zbWFzaGluZ21hZ2F6aW5lLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAwOS9mcmVlLWZvbnRzLW1heS0yMDA5L2NodW5rMi5qcGciIHdpZHRoPSI1MTEiIGhlaWdodD0iMzAwIiBhbHQ9IlNjcmVlbnNob3QiIC8+PC9hPjwvcD4KPHA+PGEgaHJlZj0iaHR0cDovL3d3dy5jYW1waXZpc2l2aS5uZXQvdGl0aWxsaXVtLz9wYWdlX2lkPTIiPlRpdGlsaXVtPC9hPiBbIDxhIGhyZWY9Imh0dHA6Ly93d3cuY2FtcGl2aXNpdmkubmV0L3RpdGlsbGl1bS93cC1jb250ZW50L3RoZW1lcy93b25kZXJsYW5kL2ltYWdlcy9UaXRpbGxpdW1fZ2VuZXJhdGUuemlwIj5Eb3dubG9hZCB0aGUgLnppcC1wYWNrYWdlPC9hPiBdPGJyIC8+QSB2ZXJ5IGxlZ2libGUsIGJlYXV0aWZ1bCBhY2FkZW1pYyB0eXBlZmFjZSB0aGF0IHBlcmZlY3RseSBmaXRzIHRvIGV2ZXJ5IGNvcnBvcmF0ZSBpZGVudGl0eSBkZXNpZ24sIG1hZ2F6aW5lcyBhbmQgaGVhZGxpbmVzIG9mIGNvcnBvcmF0ZSB3ZWItc2l0ZXMuIFRoZSB0eXBlZmFjZSBpcyBhdmFpbGFibGUgaW4gdmFyaW91cyB3ZWlnaHRzOiB0ZXh0IHZlcnNpb24sIHRpdGxlIHZlcnNpb24sIGV4dHJhLWJsYWNrIHZlcnNpb24gYW5kIGZ1bGwtdmVyc2lvbi48L3A+CjxwIGNsYXNzPSJzaG93Y2FzZSI+PGEgaHJlZj0iaHR0cDovL3d3dy5jYW1waXZpc2l2aS5uZXQvdGl0aWxsaXVtLz9wYWdlX2lkPTIiPjxpbWcgc3JjPSJodHRwOi8vd3d3LnNtYXNoaW5nbWFnYXppbmUuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDA5L2ZyZWUtZm9udHMtbWF5LTIwMDkvdGl0LmpwZyIgd2lkdGg9IjUwMCIgaGVpZ2h0PSIzMzIiIGFsdD0iU2NyZWVuc2hvdCIgLz48L2E+PC9wPgo8cCBjbGFzcz0ic2hvd2Nhc2UiPjxhIGhyZWY9Imh0dHA6Ly93d3cuY2FtcGl2aXNpdmkubmV0L3RpdGlsbGl1bS8/cGFnZV9pZD0yIj48aW1nIHNyYz0iaHR0cDovL3d3dy5zbWFzaGluZ21hZ2F6aW5lLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAwOS9mcmVlLWZvbnRzLW1heS0yMDA5L3RpdC5naWYiIHdpZHRoPSI1MjAiIGhlaWdodD0iNDE4IiBhbHQ9IlNjcmVlbnNob3QiIC8+PC9hPjwvcD4KPHA+PGEgaHJlZj0iaHR0cDovL3F1aWNjcy5kZXZpYW50YXJ0LmNvbS9hcnQvQW1wdXRhLUJhbmdpei1TdGFuZGFyZC1UVEYtMTIyNDQ0Nzk0Ij5BbXB1dGEgQmFuZ2l6IFN0YW5kYXJkIFRURjwvYT4gWyA8YSBocmVmPSJodHRwOi8vd3d3LmRldmlhbnRhcnQuY29tL2Rvd25sb2FkLzEyMjQ0NDc5NC9BbXB1dGFfQmFuZ2l6X1N0YW5kYXJkX1RURl9ieV9RdWljY3MuemlwIj5Eb3dubG9hZCB0aGUgLnppcC1wYWNrYWdlPC9hPiBdPGJyIC8+QW4gb3JpZ2luYWwgcmV0cm8vZ3J1bmd5LWZvbnQsIGRlc2lnbmVkIGJ5IFF1aWNjcyBhbmQgYXZhaWxhYmxlIGZvciBmcmVlIGRvd25sb2FkIGFuZCB1c2UgaW4gcHJpdmF0ZSBhbmQgY29tbWVyY2lhbCBwcm9qZWN0cy4gSW5jbHVkZXMgc29tZSBiYXNpYyBub24tYWxwaGFudW1lcmljIGNoYXJhY3RlcnMgYXMgd2VsbC48L3A+CjxwIGNsYXNzPSJzaG93Y2FzZSI+PGEgaHJlZj0iaHR0cDovL3F1aWNjcy5kZXZpYW50YXJ0LmNvbS9hcnQvQW1wdXRhLUJhbmdpei1TdGFuZGFyZC1UVEYtMTIyNDQ0Nzk0Ij48aW1nIHNyYz0iaHR0cDovL3d3dy5zbWFzaGluZ21hZ2F6aW5lLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAwOS9mcmVlLWZvbnRzLW1heS0yMDA5L2FtcC5qcGciIHdpZHRoPSI1MDgiIGhlaWdodD0iNDk4IiBhbHQ9IlNjcmVlbnNob3QiIC8+PC9hPjwvcD4KPHA+PGEgaHJlZj0iaHR0cDovL2JldGF0eXBlLmNvbS9ub2RlLzM1Ij5TZXJpZiBCZXRhPC9hPiBbIDxhIGhyZWY9Imh0dHA6Ly9iZXRhdHlwZS5jb20vc3lzdGVtL2ZpbGVzL1NlcmlmQmV0YS5wZGYiPnNwZWNpbWVuPC9hPiB8IDxhIGhyZWY9Imh0dHA6Ly9iZXRhdHlwZS5jb20vc3lzdGVtL2ZpbGVzL1NlcmlmQmV0YV9PVEYuemlwIj5Eb3dubG9hZCB0aGUgLnppcC1wYWNrYWdlPC9hPiBdPGJyIC8+U2VyaWYgQmV0YSBpcyBhIHZlcnkgbGVnaWJsZSBsYXJnZSBzZXJpZiBmYW1pbHkgb2YgZnJlZSBmb250cywgaW5jbHVkaW5nIDMgZm9udHNwYWNrcyB3aXRoIHRoZSBvcHRpYyB3ZWlnaHRzIDYsIDEyIHVuZCA3MiAob3ZlcmFsbCAxNCB3ZWlnaHRzKS4gVGhlIGZhbWlseSBpbmNsdWRlcyBzd2FzaC1nbHlwaHMgYW5kIGJsYWNrLXdlaWdodHMuIEVhY2ggZm9udCBoYXMgMjc0IGdseXBocy4gRnJlZSBmb3IgcGVyc29uYWwgYW5kIGNvbW1lcmNpYWwgdXNlLCBmZWVkYmFjayBpcyBhcHByZWNpYXRlZC4gKHZpYSA8YSBocmVmPSJodHRwOi8vd3d3LmRlcnN2ZW4uZGUvc2VyaWYtYmV0YS1laW5lLWtvbXBsZXR0ZS1mcmVlZm9udC1mYW1pbHkiPmRlcnN2ZW48L2E+KS48L3A+CjxwIGNsYXNzPSJzaG93Y2FzZSI+PGEgaHJlZj0iaHR0cDovL2JldGF0eXBlLmNvbS9ub2RlLzM1Ij48aW1nIHNyYz0iaHR0cDovL3d3dy5zbWFzaGluZ21hZ2F6aW5lLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAwOS9mcmVlLWZvbnRzLW1heS0yMDA5L3RlYW0uZ2lmIiB3aWR0aD0iNTAwIiBoZWlnaHQ9IjQzMyIgYWx0PSJTY3JlZW5zaG90IiAvPjwvYT48L3A+CjxwPjxhIGhyZWY9Imh0dHA6Ly93d3cucHByd3Jrc3R1ZGlvLmNvbS9yb290Ly1xdWF0cm8tLS1mcmVlLyI+UXVhdHJvPC9hPjxiciAvPlRvIHJlY2VpdmUgYSBiZXRhIHZlcnNpb24gb2YgUXVhdHJvIHBsZWFzZSBlbWFpbCB0aGUgYXV0aG9yIG9mIHRoZSBwb3N0IChzZWUgdGhlIGxpbmsgYWJvdmUpIHdpdGggdGhlIHN1YmplY3QgbGluZSBRdWF0cm8uIFBsZWFzZSBpbmNsdWRlIHlvdXIgZnVsbCBuYW1lLCB3aGVyZSB5b3Ugd29yay90aXRsZSBhbmQgYSBjdXJyZW50IGVtYWlsIGFkZHJlc3MgYW5kIEkgd2lsbCBzdXBwbHkgYSBjb21wcmVzc2VkIHBvc3RzY3JpcHQgdHlwZWZhY2Ugc2hvcnRseSB0aGVyZSBhZnRlci48L3A+CjxwIGNsYXNzPSJzaG93Y2FzZSI+PGEgaHJlZj0iaHR0cDovL3d3dy5wcHJ3cmtzdHVkaW8uY29tL3Jvb3QvLXF1YXRyby0tLWZyZWUvIj48aW1nIHNyYz0iaHR0cDovL3d3dy5zbWFzaGluZ21hZ2F6aW5lLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAwOS9mcmVlLWZvbnRzLW1heS0yMDA5L3F1YXQuZ2lmIiB3aWR0aD0iNDk5IiBoZWlnaHQ9IjQ1MSIgYWx0PSJTY3JlZW5zaG90IiAvPjwvYT48L3A+CjxwIGNsYXNzPSJzaG93Y2FzZSI+PGEgaHJlZj0iaHR0cDovL3d3dy5wcHJ3cmtzdHVkaW8uY29tL3Jvb3QvLXF1YXRyby0tLWZyZWUvIj48aW1nIHNyYz0iaHR0cDovL3d3dy5zbWFzaGluZ21hZ2F6aW5lLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAwOS9mcmVlLWZvbnRzLW1heS0yMDA5L3F1YXRyby5naWYiIHdpZHRoPSI1MDAiIGhlaWdodD0iMzY0IiBhbHQ9IlNjcmVlbnNob3QiIC8+PC9hPjwvcD4KPHA+PGEgaHJlZj0iaHR0cDovL3d3dy5hYnN0cmFjdGZvbnRzLmNvbS9mb250LzEzMTg4Ij5Sb3VnaCBEcmFmdCBSZWd1bGFyPC9hPjxiciAvPkEgbGVnZW5kYXJ5IFRydWVUeXBlIHR5cGVmYWNlIGJ5IEhhcm9sZCBMb2huZXIuIENvbnRhaW5zIDE4OSBjaGFyYWN0ZXJzIGluIDkgcmFuZ2VzLiBGb3IgJDUgeW91IGNhbiBidXkgdGhlIGNvbXBsZXRlIHNldCB3aGljaCBpbmNsdWRlcyBzZXBhcmF0ZSBPdXRsaW5lLCBDbGVhbiBGaWxsLCBhbmQgU29saWQgRmlsbCBmb250cy48L3A+CjxwIGNsYXNzPSJzaG93Y2FzZSI+PGEgaHJlZj0iaHR0cDovL3d3dy5hYnN0cmFjdGZvbnRzLmNvbS9mb250LzEzMTg4Ij48aW1nIHNyYz0iaHR0cDovL3d3dy5zbWFzaGluZ21hZ2F6aW5lLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAwOS9mcmVlLWZvbnRzLW1heS0yMDA5L3JvdWdoLmdpZiIgd2lkdGg9IjUxOCIgaGVpZ2h0PSI0MDAiIGFsdD0iU2NyZWVuc2hvdCIgLz48L2E+PC9wPgo8cD48YSBocmVmPSJodHRwOi8vYWFqb2hhbi5kZXZpYW50YXJ0LmNvbS9hcnQvQ29tZm9ydGFhLWZvbnQtMTA1Mzk1OTQ5Ij5Db21mb3J0YWE8L2E+IFsgPGEgaHJlZj0iaHR0cDovL3d3dy5kZXZpYW50YXJ0LmNvbS9kb3dubG9hZC8xMDUzOTU5NDkvQ29tZm9ydGFhX19fZm9udF9ieV9hYWpvaGFuLnppcCI+RG93bmxvYWQgdGhlIC56aXAtcGFja2FnZTwvYT4gXTxiciAvPkNvbWZvcnRhYSBpcyBhIHNpbXBsZSwgbW9kZXJuLCBsZWdpYmxlIHRydWUgdHlwZSBmb250IHdpdGggNDY2IGRpZmZlcmVudCBjaGFyYWN0ZXJzIGFuZCBzeW1ib2xzIChpbmNsLiBFdXJvcGVhbiBhY2NlbnRzKS4gQXZhaWxhYmxlIGluIHRocmVlIHdlaWdodHM6IFJlZ3VsYXIsIEJvbGQgYW5kIFRoaW4uIFRoZSB0eXBlZmFjZSBoYXMgc21vb3RoLCByb3VuZGVkIGVkZ2VzLCBBYnNvbHV0ZWx5IGZyZWUgZm9yIHBlcnNvbmFsIGFuZCBjb21tZXJjaWFsIHByb2plY3RzLiBEZXNpZ25lZCBieSBKb2hhbiBBYWtlcmx1bmQgZnJvbSBEZW5tYXJrLjwvcD4KPHAgY2xhc3M9InNob3djYXNlIj48YSBocmVmPSJodHRwOi8vYWFqb2hhbi5kZXZpYW50YXJ0LmNvbS9hcnQvQ29tZm9ydGFhLWZvbnQtMTA1Mzk1OTQ5Ij48aW1nIHNyYz0iaHR0cDovL3d3dy5zbWFzaGluZ21hZ2F6aW5lLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAwOS9mcmVlLWZvbnRzLW1heS0yMDA5L2NvbWYuZ2lmIiB3aWR0aD0iNTE4IiBoZWlnaHQ9IjQxNCIgYWx0PSJTY3JlZW5zaG90IiAvPjwvYT48L3A+CjxwPjxhIGhyZWY9Imh0dHA6Ly9mb250ZmFicmljLmNvbS8/cD0zOTYiPk1PROKEoiBmb250PC9hPiBbIDxhIGhyZWY9Imh0dHA6Ly9mb250ZmFicmljLmNvbS9ncmFwaGlsbGEvbW9kLnppcCI+RG93bmxvYWQgdGhlIC56aXAtcGFja2FnZTwvYT4gXTxiciAvPk1vZCBpcyBhbiBvcmlnaW5hbCwgZXhwZXJpbWVudGFsIGZvbnQgdGhhdCBpcyBhcHBsaWNhYmxlIGZvciBhbnkgdHlwZSBvZiBncmFwaGljIGRlc2lnbiAmbmRhc2g7IFdlYiwgcHJpbnQsIG1vdGlvbiBncmFwaGljcyBldGMgYW5kIHBlcmZlY3QgZm9yIFQtc2hpcnRzIGFuZCBvdGhlciBpdGVtcyBsaWtlIGxvZ29zLCBwaWN0b2dyYW1zLiBEZXNpZ25lZCBieSBTdmV0b3NsYXYgU2ltb3YgZnJvbSBTb2ZpYSwgQnVsZ2FyaWEuPC9wPgo8cCBjbGFzcz0ic2hvd2Nhc2UiPjxhIGhyZWY9Imh0dHA6Ly9mb250ZmFicmljLmNvbS8/cD0zOTYiPjxpbWcgc3JjPSJodHRwOi8vd3d3LnNtYXNoaW5nbWFnYXppbmUuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDA5L2ZyZWUtZm9udHMtbWF5LTIwMDkvbWlsazEuanBnIiB3aWR0aD0iNTAwIiBoZWlnaHQ9IjM3MyIgYWx0PSJTY3JlZW5zaG90IiAvPjwvYT48L3A+CjxwIGNsYXNzPSJzaG93Y2FzZSI+PGEgaHJlZj0iaHR0cDovL2ZvbnRmYWJyaWMuY29tLz9wPTM5NiI+PGltZyBzcmM9Imh0dHA6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMDkvZnJlZS1mb250cy1tYXktMjAwOS9taWxrMy5naWYiIHdpZHRoPSI0ODAiIGhlaWdodD0iNDc5IiBhbHQ9IlNjcmVlbnNob3QiIC8+PC9hPjwvcD4KPHAgY2xhc3M9InNob3djYXNlIj48YSBocmVmPSJodHRwOi8vZm9udGZhYnJpYy5jb20vP3A9Mzk2Ij48aW1nIHNyYz0iaHR0cDovL3d3dy5zbWFzaGluZ21hZ2F6aW5lLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAwOS9mcmVlLWZvbnRzLW1heS0yMDA5L21pbGsyLmpwZyIgd2lkdGg9IjUwMCIgaGVpZ2h0PSI3NjMiIGFsdD0iU2NyZWVuc2hvdCIgLz48L2E+PC9wPgo8aDM+UmVtaW5kZXIgKGFrYSBGZWF0dXJlZCBpbiBwcmV2aW91cyBwb3N0cyk8L2gzPgo8cD48YSBocmVmPSJodHRwOi8vZGFtaWVuZy5jb20vYmxvZy8yMDA3LzExLzE0L2Ryb2lkLWZvbnQtZmFtaWx5LWNvdXJ0ZXN5LW9mLWdvb2dsZS1hc2NlbmRlciI+RHJvaWQgRm9udCBGYW1pbHk8L2E+PGJyIC8+R29vZ2xl4oCZcyBBbmRyb2lkIHByb2plY3QsIGFuIG9wZW4gcGxhdGZvcm0gZm9yIG1vYmlsZSBkZXZpY2VzLCBpbmNsdWRlcyB0aGUgRHJvaWQgZm9udCBmYW1pbHksIHdoaWNoIHdhcyBkZXNpZ25lZCB0byBwcm92aWRlIG9wdGltYWwgcXVhbGl0eSBhbmQgY29tZm9ydCBvbiBhIG1vYmlsZSBoYW5kc2V0IHdoZW4gcmVuZGVyZWQgaW4gYXBwbGljYXRpb24gbWVudXMsIHdlYiBicm93c2VycyBhbmQgZm9yIG90aGVyIHNjcmVlbiB0ZXh0LjwvcD4KPHAgY2xhc3M9InNob3djYXNlIj48YSBocmVmPSJodHRwOi8vZGFtaWVuZy5jb20vYmxvZy8yMDA3LzExLzE0L2Ryb2lkLWZvbnQtZmFtaWx5LWNvdXJ0ZXN5LW9mLWdvb2dsZS1hc2NlbmRlciI+PGltZyBzcmM9Imh0dHA6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20vaW1hZ2VzL2ZyZWVmb250cy1ub3ZlbWJlci9kcm9pZC5naWYiIHdpZHRoPSI1MDAiIGhlaWdodD0iNDMyIiAvPjwvYT48L3A+CjxwPlRoZSBEcm9pZCBmYW1pbHkgb2YgZm9udHMgY29uc2lzdHMgb2YgRHJvaWQgU2FucywgRHJvaWQgU2FucyBNb25vIGFuZCBEcm9pZCBTZXJpZi4gRWFjaCBjb250YWlucyBleHRlbnNpdmUgY2hhcmFjdGVyIHNldCBjb3ZlcmFnZSBpbmNsdWRpbmcgV2VzdGVybiBFdXJvcGUsIEVhc3Rlcm4vQ2VudHJhbCBFdXJvcGUsIEJhbHRpYywgQ3lyaWxsaWMsIEdyZWVrIGFuZCBUdXJraXNoIHN1cHBvcnQuIDxhIGhyZWY9Imh0dHA6Ly93d3cuYXNjZW5kZXJjb3JwLmNvbS9wci9wcjIwMDdfMTFfMTIuaHRtbCI+RGVzY3JpcHRpb24gd2l0aCBhIHNwZWNpbWVuPC9hPi4gWW91IGNhbiBmaW5kIGNvbmNyZXRlIGluc3RydWN0aW9uIG9mIGhvdyB5b3UgY2FuIHVzZSB0aGUgZm9udHMgPGEgaHJlZj0iaHR0cDovL2Jlbm5vLmlkLmF1L2Jsb2cvMjAwNy8xMS8xNC9hbmRyb2lkLWZpbGVzeXN0ZW1zIj5pbiB0aGlzIGFydGljbGU8L2E+LjwvcD4KPHA+PGEgaHJlZj0iaHR0cDovL3d3dy5kYWZvbnQuY29tL25pbGxhbmQuZm9udCI+TmlsbGFuZDwvYT48YnIgLz5BIGJlYXV0aWZ1bCBzbGFiLXNlcmlmIHR5cGVmYWNlLCBkZXNpZ25lZCBieSBNYW5mcmVkIEtsZWluLiBUaGUgZmFtaWx5IGNvbnNpc3RzIG9mIDYgd2VpZ2h0cywgcmVndWxhciwgYm9sZCwgZXh0cmEgYm9sZCwgYmxhY2ssIHNtYWxsIGNhcHMgYW5kIHNtYWxsIGNhcHMgYm9sZCAobGluayBhbmQgaW1hZ2VzIHZpYSA8YSBocmVmPSJodHRwOi8vYmxvZy5kZXJzdmVuLmRlL2ZyZWVmb250cy1zYW5zYXRpb24tdW5kLW5pbGxhbmQiPkRlclN2ZW4uZGU8L2E+KS48L3A+CjxwIGNsYXNzPSJzaG93Y2FzZSI+PGEgaHJlZj0iaHR0cDovL3d3dy5kYWZvbnQuY29tL25pbGxhbmQuZm9udCI+PGltZyBzcmM9Imh0dHA6Ly9tZWRpYTEuc21hc2hpbmdtYWdhemluZS5jb20vaW1hZ2VzLzE1LW1vcmUtaGlnaC1xdWFsaXR5LWZyZWUtZm9udHMvbmlsbGFuZC5wbmciIHdpZHRoPSI0MjUiIGhlaWdodD0iMjMwIiBhbHQ9IlNjcmVlbnNob3QiIC8+PC9hPjwvcD4KPHA+PGEgaHJlZj0iaHR0cDovL3d3dy5kbWp4LmRrL3ByZXNzZXJ1bS9za3JpZnQuaHRtbCI+QWxsZXIgU2FuczwvYT4gWyA8YSBocmVmPSJodHRwOi8vd3d3LmRtanguZGsvcHJlc3NlcnVtL2Rvd25sb2Fkcy9BbGxlclNhbnNfc2tyaWZ0cHJvZXZlLnBkZiI+U3BlY2ltZW48L2E+IHwgPGEgaHJlZj0iaHR0cDovL3d3dy5kbWp4LmRrL3ByZXNzZXJ1bS9kb3dubG9hZHMvQWxsZXJfRVVMQS5wZGYiPkxpY2Vuc2U8L2E+IHwgPGEgaHJlZj0iaHR0cDovL3d3dy5kbWp4LmRrL3ByZXNzZXJ1bS9kb3dubG9hZHMvQWxsZXIuemlwIj5Eb3dubG9hZDwvYT4gXTxiciAvPkRhbHRvbiBNYWFnIGRlc2lnbiB0ZWFtIGRlc2lnbmVkIGEgYmVhdXRpZnVsIHNhbnMtc2VyaWYgQWxsZXIgU2Fucywgc3BvbnNvcmVkIGJ5IERhbmlzaCBwdWJsaXNoaW5nIGNvbXBhbnkgQWxsZXIgKGhlbmNlIHRoZSBuYW1lKS4gVGhlIHR5cGVmYWNlIHdhcyBkZXNpZ25lZCBhcyBwYXJ0IG9mIHRoZSBEYW5pc2ggU2Nob29sIG9mIE1lZGlhIGFuZCBKb3VybmFsaXNtcyBuZXcgQ0kgYW5kIGlzIG5vdyBhdmFpbGFibGUgZm9yIGZyZWUgdXNlIGFuZCBkb3dubG9hZCAoPGEgaHJlZj0iaHR0cDovL3d3dy50eXBvcGhpbGUuY29tL25vZGUvNTExOTgiPnZpYTwvYT4pLjwvcD4KPHAgY2xhc3M9InNob3djYXNlIj48YSBocmVmPSJodHRwOi8vd3d3LmRtanguZGsvcHJlc3NlcnVtL3NrcmlmdC5odG1sIj48aW1nIHNyYz0iaHR0cDovL21lZGlhMS5zbWFzaGluZ21hZ2F6aW5lLmNvbS9pbWFnZXMvMTUtYmVhdXRpZnVsLWZyZWUtZm9udHMvYWxsZXJzYW5zLmdpZiIgd2lkdGg9IjUxNyIgaGVpZ2h0PSI0MzAiIGFsdD0iQWxsZXIgU2FucyIgLz48L2E+PC9wPgo8cD48YSBocmVmPSJodHRwOi8vbXBsdXMtZm9udHMuc291cmNlZm9yZ2UuanAvbXBsdXMtb3V0bGluZS1mb250cy9kb3dubG9hZC9pbmRleC5odG1sIj5NKyBPdXRsaW5lPC9hPjxiciAvPlRoZXNlIGZvbnRzIGFyZSBmcmVlIHNvZnR3YXJlLiBVbmxpbWl0ZWQgcGVybWlzc2lvbiBpcyBncmFudGVkIHRvIHVzZSwgY29weSwgYW5kIGRpc3RyaWJ1dGUgaXQsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sIGVpdGhlciBjb21tZXJjaWFsbHkgYW5kIG5vbmNvbW1lcmNpYWxseS4gRGVzaWduZWQgYnkgTW9yaXNoaXRhIENvamkuIFRoZSBmb250cyBhcmUgcmVndWxhcnkgdXBkYXRlZCwgd29yayBpbiBwcm9ncmVzcy4gQ2F1dGlvbjogSmFwYW5lc2UgbGFuZ3VhZ2UuPC9wPgo8cCBjbGFzcz0ic2hvd2Nhc2UiPjxhIGhyZWY9Imh0dHA6Ly9tcGx1cy1mb250cy5zb3VyY2Vmb3JnZS5qcC9tcGx1cy1vdXRsaW5lLWZvbnRzL2Rvd25sb2FkL2luZGV4Lmh0bWwiPjxpbWcgc3JjPSJodHRwOi8vbWVkaWExLnNtYXNoaW5nbWFnYXppbmUuY29tL2ltYWdlcy9mcmVlZm9udHMtbWFyY2gtMDgvbXBsdXMucG5nIiB3aWR0aD0iNTA1IiBoZWlnaHQ9IjIyMyIgYWx0PSJNKyBPdXRsaW5lIiAvPjwvYT48L3A+CjxwPjxhIGhyZWY9Imh0dHA6Ly9ob21lLmNvbWNhc3QubmV0L35jcnVkZmFjdG9yeS9mb250cy54aHRtbCI+R291ZHkgQm9va2xldHRlciAxOTExPC9hPjxiciAvPkEgc2VyaWYgb2xkLXN0eWxlIE9wZW5UeXBlIGZvbnQuIFlvdSBuZWVkIHRvIHNjcm9sbCB0aGUgZnJhbWUgdG8gZmluZCB0aGUgZG93bmxvYWQgbGluay4gW3ZpYSA8YSBocmVmPSJodHRwOi8vd3d3LmRlcnN2ZW4uZGUvYmxvZy9hcnRpY2xlLy0zOTVjZjhkNDZkLmh0bWwiPmRlclN2ZW48L2E+XTwvcD4KPHAgY2xhc3M9InNob3djYXNlIj48YSBocmVmPSJodHRwOi8vaG9tZS5jb21jYXN0Lm5ldC9+Y3J1ZGZhY3RvcnkvZm9udHMueGh0bWwiPjxpbWcgc3JjPSJodHRwOi8vbWVkaWExLnNtYXNoaW5nbWFnYXppbmUuY29tL2ltYWdlcy9mcmVlZm9udHMtamFudWFyeTA4L2dvdWR5LnBuZyIgd2lkdGg9IjQ1NSIgaGVpZ2h0PSI0NjQiIGFsdD0iR291ZHkgQm9va2xldHRlciAxOTExIFNjcmVlbnNob3QiIC8+PC9hPjwvcD4KPHA+PGEgaHJlZj0iaHR0cDovL3dlYi5uaWNrc2hhbmtzLmNvbS90eXBvZ3JhcGh5L2NvcmVmb250cyI+QW5kYWxlIE1vbm88L2E+PGJyIC8+QW5kYWxlIE1vbm8gaXMgYSA8c3Ryb25nPmhpZ2hseSBsZWdpYmxlIG1vbm9zcGFjZWQgZm9udDwvc3Ryb25nPiB3aGljaCB3YXMgb3JpZ2luYWxseSBkaXN0cmlidXRlZCBhcyBwYXJ0IG9mIHRoZSBJbnRlcm5ldCBFeHBsb3JlciA0LjAgYWRkLW9ucyBwYWdlIGFzIE1vbm90eXBlLmNvbS4gSXQgZGlzdGluZ3Vpc2hlcyB3ZWxsIGJldHdlZW4gdGhlIHplcm8sIGFuZCB0aGUgTy4gWW91IGNhbiBmaW5kIDQgZnVydGhlciBtb25vc3BhY2VkIGZvbnRzIGluIEhhbWlzaCBNYWNwaGVyc29uJiM4MjE3O3MgYXJ0aWNsZSA8YSBocmVmPSJodHRwOi8vYmxvZy5oYW1zdHUuY29tLzIwMDgvMDIvMDMvdGhlLXR5cG9ncmFwaHktb2YtY29kZS8iPlRoZSBUeXBvZ3JhcGh5IG9mIENvZGU8L2E+LjwvcD4KPHAgY2xhc3M9InNob3djYXNlIj48YSBocmVmPSJodHRwOi8vd2ViLm5pY2tzaGFua3MuY29tL3R5cG9ncmFwaHkvY29yZWZvbnRzIj48aW1nIHNyYz0iaHR0cDovL21lZGlhMS5zbWFzaGluZ21hZ2F6aW5lLmNvbS9pbWFnZXMvZnJlZWZvbnRzLWphbnVhcnkwOC9hbmRhbGVtb25vLnBuZyIgd2lkdGg9IjUwMCIgaGVpZ2h0PSI0NjAiIGFsdD0iQW5kYWxlIE1vbm8gU2NyZWVuc2hvdCIgLz48L2E+PGJyIC8+PGVtPkNyZWRpdHM6IDxhIGhyZWY9Imh0dHA6Ly9ibG9nLmhhbXN0dS5jb20vMjAwOC8wMi8wMy90aGUtdHlwb2dyYXBoeS1vZi1jb2RlLyI+SGFtaXNoIE1hY3BoZXJzb248L2E+PC9lbT48L3A+CjxwPjxhIGhyZWY9Imh0dHA6Ly93d3cudGhlbGVhZ3Vlb2Ztb3ZlYWJsZXR5cGUuY29tL2ZvbnRzLzEtanVuY3Rpb24iPkp1bmN0aW9uPC9hPiBbIDxhIGhyZWY9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL3RoZWxlYWd1ZS9mb250cy9qdW5jdGlvbi56aXA/MTIzNDIwNDYzMiI+RG93bmxvYWQgdGhlIC56aXAtcGFja2FnZTwvYT4gXTxiciAvPkRlc2lnbmVkIGJ5IENhcm9saW5lIEhhZGlsYWtzb25vLCBKdW5jdGlvbiBpcyBhIGh1bWFuaXN0IHNhbnMtc2VyaWYgdHlwZWZhY2UuIEl0IGhhcyBlbGVnYW50LCBjbGVhcm4gYW5kIHZlcnkgc2hhcnAgZ2x5cGhzLCBidXQgY29udGFpbnMgb25seSAxMDAgbW9zdCBjb21tb24gc3ltYm9scy4gTGlrZSA8YSBocmVmPSJodHRwOi8vc2NyaXB0cy5zaWwub3JnL2Ntcy9zY3JpcHRzL3BhZ2UucGhwP3NpdGVfaWQ9bnJzaSYjMDM4O2l0ZW1faWQ9R2VudGl1bSI+R2VudGl1bTwvYT4gaXQgcGVyZmVjdGx5IGZpdHMgdG8gYm9keSBjb3B5LCBidXQgY2FuIGFsc28gc2hvdyBpdHMgc3RyZW5ndGhzLCBiYWxhbmNlIGFuZCBiZWF1dHkgaW4gaGVhZGxpbmVzLiBIZXJlIGFyZSBzb21lIGluc2lnaHRzIGZyb20gdGhlIGRlc2lnbmVyOjwvcD4KPHAgY2xhc3M9InNob3djYXNlIj48YSBocmVmPSJodHRwOi8vd3d3LnRoZWxlYWd1ZW9mbW92ZWFibGV0eXBlLmNvbS9mb250cy8xLWp1bmN0aW9uIj48aW1nIHNyYz0iaHR0cDovL21lZGlhMS5zbWFzaGluZ21hZ2F6aW5lLmNvbS9pbWFnZXMvMTUtbW9yZS1oaWdoLXF1YWxpdHktZnJlZS1mb250cy9qdW5jMS5qcGciIHdpZHRoPSI0OTgiIGhlaWdodD0iMjk5IiBhbHQ9IlNjcmVlbnNob3QiIC8+PC9hPjwvcD4KPHAgY2xhc3M9InNob3djYXNlIj48YSBocmVmPSJodHRwOi8vd3d3LnRoZWxlYWd1ZW9mbW92ZWFibGV0eXBlLmNvbS9mb250cy8xLWp1bmN0aW9uIj48aW1nIHNyYz0iaHR0cDovL21lZGlhMS5zbWFzaGluZ21hZ2F6aW5lLmNvbS9pbWFnZXMvMTUtbW9yZS1oaWdoLXF1YWxpdHktZnJlZS1mb250cy9qdW5jMy5qcGciIHdpZHRoPSI0OTgiIGhlaWdodD0iMzAyIiBhbHQ9IlNjcmVlbnNob3QiIC8+PC9hPjwvcD4KPHA+PGEgaHJlZj0iaHR0cDovL3d3dy5kb3Rjb2xvbi5uZXQvZm9udC9mb250LnBocD9pZD0xIj5WZWd1cjwvYT48YnIgLz5UaGlzIGh1bWFuaXN0IHNhbnMtc2VyaWYgZmFtaWx5IGlzIGF2YWlsYWJsZSBpbiBPcGVuVHlwZS1mb3JtYXQgaW4gdGhyZWUgd2VpZ2h0czogRXh0cmFMaWdodCwgUmVndWxhciBhbmQgQm9sZC4gVGhlIHR5cGVmYWNlIGNhbiBiZSBwZXJmZWN0bHkgdXNlZCBib3RoIGluIGJvZHkgY29weSBhbmQgaW4gaGVhZGxpbmVzLjwvcD4KPHAgY2xhc3M9InNob3djYXNlIj48YSBocmVmPSJodHRwOi8vd3d3LmRvdGNvbG9uLm5ldC9mb250L2ZvbnQucGhwP2lkPTEiPjxpbWcgc3JjPSJodHRwOi8vbWVkaWExLnNtYXNoaW5nbWFnYXppbmUuY29tL2ltYWdlcy8xNS1tb3JlLWhpZ2gtcXVhbGl0eS1mcmVlLWZvbnRzL3ZlZ3VyLmdpZiIgd2lkdGg9IjUzNSIgaGVpZ2h0PSI2NDQiIGFsdD0iU2NyZWVuc2hvdCIgLz48L2E+PC9wPgo8aDM+TW9yZSBmcmVlIGZvbnRzITwvaDM+CjxwPkZvciBtb3JlIGZyZWUgZm9udHMsIHBsZWFzZSBjb25zaWRlciB2aXNpdGlvbmcgb3VyIHByZXZpb3VzIHBvc3RzOjwvcD4KPHVsPgo8bGk+PGEgaHJlZj0iaHR0cDovL3d3dy5zbWFzaGluZ21hZ2F6aW5lLmNvbS8yMDA5LzA1LzExLzE1LWZyZXNoLWhpZ2gtcXVhbGl0eS1mcmVlLWZvbnRzLyI+MTUgRnJlc2ggSGlnaC1RdWFsaXR5IEZyZWUgRm9udHM8L2E+PC9saT4KPGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20vMjAwOC8xMS8yNC8xNS1iZWF1dGlmdWwtaGlnaC1xdWFsaXR5LWZyZWUtZm9udHMvIj4xNSBCZWF1dGlmdWwgSGlnaC1RdWFsaXR5IEZyZWUgRm9udHM8L2E+PC9saT4KPGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20vMjAwNy8xMS8wOC80MC1leGNlbGxlbnQtZnJlZWZvbnRzLWZvci1wcm9mZXNzaW9uYWwtZGVzaWduLyI+NDAgRXhjZWxsZW50IEZyZWUgRm9udHMgRm9yIFByb2Zlc3Npb25hbCBEZXNpZ248L2E+PC9saT4KPGxpPllvdSBjYW4gZmluZCBvdmVyIDgwIG1vcmUgZnJlZSBmb250cyBpbiBvdXIgc2VjdGlvbiA8YSBocmVmPSJodHRwOi8vd3d3LnNtYXNoaW5nbWFnYXppbmUuY29tL2NhdGVnb3J5L2ZvbnRzLyI+Rm9udHM8L2E+LjwvbGk+CjwvdWw+CjxoMz5GdXJ0aGVyIFJlc291cmNlczwvaDM+Cjx1bD4KPGxpPjxhIGhyZWY9Imh0dHA6Ly9oaXZlbG9naWMuY29tL2FydGljbGVzL3ZpZXcvdG9wLTEwLXByb2dyYW1taW5nLWZvbnRzIj5Ub3AgMTAgUHJvZ3JhbW1pbmcgRm9udHM8L2E+PGJyIC8+SGVyZeKAmXMgYSByb3VuZC11cCBvZiB0aGUgdG9wIDEwIHJlYWRpbHktYXZhaWxhYmxlIG1vbm9zcGFjZSBmb250cyBmb3IgeW91ciBjb2RpbmcgZW5qb3ltZW50LCB3aXRoIGRlc2NyaXB0aW9ucywgdmlzdWFsIGV4YW1wbGVzIGFuZCBzYW1wbGVzLCBhbmQgZG93bmxvYWQgbGlua3MgZm9yIGVhY2guIFRoZSByb3VuZC11cCBmZWF0dXJlcyBDb3VyaWVyLCBBbmRhbGUgTW9ubywgTW9uYWNvLCBQcm9mb250LCBNb25vZnVyLCBQcm9nZ3ksIERyb2lkIFNhbnMgTW9ubywgRGVqYSBWdSBTYW5zIE1vbm8sIENvbnNvbGFzIGFuZCBJbmNvbnNvbGF0YS4KPGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cudHJpcHdpcmVtYWdhemluZS5jb20vZGVzaWduL2Rlc2lnbi80NS1leGNlcHRpb25hbGx5LXVzZWZ1bC1mcmVlLWhhbmR3cml0dGVuLWZvbnRzLmh0bWwiPjQ1IFVzZWZ1bCBGcmVlIEhhbmR3cml0dGVuIEZvbnRzPC9hPjxiciAvPkEgY291cGxlIG9mIHJlYWxseSBiZWF1dGlmdWwgaGFuZCB3cml0aW5nLWZvbnRzIHRoYXQgY2FuIGdpdmUgeW91ciBzaXRlIGEgbW9yZSBwZXJzb25hbCwgaW5kaXZpZHVhbCB0b3VjaC48L2xpPgo8bGk+PGEgaHJlZj0iaHR0cDovL3d3dy5mb250ZXgub3JnLyI+Rm9udGV4Lm9yZzwvYT48YnIgLz5BIGdyb3dpbmcgY29sbGVjdGlvbiBvZiBmcmVlIGZvbnRzLjwvbGk+CjxsaT48YSBocmVmPSJodHRwOi8vd3d3LmZvbnRzcXVpcnJlbC5jb20vIj5Gb250c3F1aXJyZWw8L2E+PGJyIC8+QW5vdGhlciBncm93aW5nIGNvbGxlY3Rpb24gb2YgZnJlZSBmb250cy48L2xpPgo8L3VsPgoKPCEtLSBnb29nbGVfYWRfc2VjdGlvbl9lbmQgLS0+CjxociAvPg0KDQo8cD48c21hbGw+wqkgU21hc2hpbmcgRWRpdG9yaWFsIGZvciA8YSBocmVmPSJodHRwOi8vd3d3LnNtYXNoaW5nbWFnYXppbmUuY29tIj5TbWFzaGluZyBNYWdhemluZTwvYT4sIDIwMDkuIHwNCjxhIGhyZWY9Imh0dHA6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20vMjAwOS8wNi8wNS9iZWF1dGlmdWwtaGlnaC1xdWFsaXR5LWZyZWUtZm9udHMtZm9yLXlvdXItZGVzaWducy8iPlBlcm1hbGluazwvYT4gfCANCjxhIGhyZWY9Imh0dHA6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20vMjAwOS8wNi8wNS9iZWF1dGlmdWwtaGlnaC1xdWFsaXR5LWZyZWUtZm9udHMtZm9yLXlvdXItZGVzaWducy8jY29tbWVudHMiPjkyIGNvbW1lbnRzPC9hPiB8IA0KPGEgdGl0bGU9IkJvb2ttYXJrIGluIGRlbC5pY2lvLnVzIiBocmVmPSJodHRwOi8vZGVsLmljaW8udXMvcG9zdD91cmw9aHR0cDovL3d3dy5zbWFzaGluZ21hZ2F6aW5lLmNvbS8yMDA5LzA2LzA1L2JlYXV0aWZ1bC1oaWdoLXF1YWxpdHktZnJlZS1mb250cy1mb3IteW91ci1kZXNpZ25zLyZ0aXRsZT1CZWF1dGlmdWwgSGlnaC1RdWFsaXR5IEZyZWUgRm9udHMgRm9yIFlvdXIgRGVzaWducyI+QWRkIHRvIGRlbC5pY2lvLnVzPC9hPiB8IDxhIHRpdGxlPSJCb29rbWFyayBpbiBEaWdnIiBocmVmPSJodHRwOi8vZGlnZy5jb20vc3VibWl0P3BoYXNlPTImdXJsPWh0dHA6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20vMjAwOS8wNi8wNS9iZWF1dGlmdWwtaGlnaC1xdWFsaXR5LWZyZWUtZm9udHMtZm9yLXlvdXItZGVzaWducy8iPkRpZ2cgdGhpczwvYT4gfCA8YSB0aXRsZT0iU3R1bWJsZSBvbiBTdHVtYmxlVXBvbiIgaHJlZj0iaHR0cDovL3d3dy5zdHVtYmxldXBvbi5jb20vc3VibWl0P3VybD1odHRwOi8vd3d3LnNtYXNoaW5nbWFnYXppbmUuY29tLzIwMDkvMDYvMDUvYmVhdXRpZnVsLWhpZ2gtcXVhbGl0eS1mcmVlLWZvbnRzLWZvci15b3VyLWRlc2lnbnMvIj5TdHVtYmxlIG9uIFN0dW1ibGVVcG9uITwvYT4gfCA8YSB0aXRsZT0iVHdlZXQgdXMhIiBocmVmPSJodHRwOi8vdHdpdHRlci5jb20vaG9tZT9zdGF0dXM9QHR3ZWV0bWVtZSUyMEBzbWFzaGluZ21hZyUyMFJlYWRpbmclMjAnQmVhdXRpZnVsIEhpZ2gtUXVhbGl0eSBGcmVlIEZvbnRzIEZvciBZb3VyIERlc2lnbnMnIGh0dHA6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20vMjAwOS8wNi8wNS9iZWF1dGlmdWwtaGlnaC1xdWFsaXR5LWZyZWUtZm9udHMtZm9yLXlvdXItZGVzaWducy8iPlR3ZWV0IGl0ITwvYT4gfCA8YSB0aXRsZT0iQm9va21hcmsgaW4gUmVkZGl0IiBocmVmPSJodHRwOi8vcmVkZGl0LmNvbS9zdWJtaXQ/dXJsPWh0dHA6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20vMjAwOS8wNi8wNS9iZWF1dGlmdWwtaGlnaC1xdWFsaXR5LWZyZWUtZm9udHMtZm9yLXlvdXItZGVzaWducy8iPlN1Ym1pdCB0byBSZWRkaXQ8L2E+IHwgPGEgaHJlZj0iaHR0cDovL2ZvcnVtLnNtYXNoaW5nbWFnYXppbmUuY29tLyI+Rm9ydW0gU21hc2hpbmcgTWFnYXppbmU8L2E+DQoNCjxici8+DQpQb3N0IHRhZ3M6IDxhIGhyZWY9Imh0dHA6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20vdGFnL2Rvd25sb2Fkcy8iIHJlbD0idGFnIj5kb3dubG9hZHM8L2E+LCA8YSBocmVmPSJodHRwOi8vd3d3LnNtYXNoaW5nbWFnYXppbmUuY29tL3RhZy9mb250cy8iIHJlbD0idGFnIj5Gb250czwvYT4sIDxhIGhyZWY9Imh0dHA6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20vdGFnL2ZyZWUvIiByZWw9InRhZyI+ZnJlZTwvYT48YnIvPg0KPC9zbWFsbD48L3A+IjtzOjc6ImF0dHJpYnMiO2E6Mjp7czowOiIiO2E6MTp7czo0OiJ0eXBlIjtzOjQ6Imh0bWwiO31zOjM2OiJodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UiO2E6MTp7czo0OiJiYXNlIjtzOjk0OiJodHRwOi8vd3d3LnNtYXNoaW5nbWFnYXppbmUuY29tLzIwMDkvMDYvMDUvYmVhdXRpZnVsLWhpZ2gtcXVhbGl0eS1mcmVlLWZvbnRzLWZvci15b3VyLWRlc2lnbnMvIjt9fXM6ODoieG1sX2Jhc2UiO3M6OTQ6Imh0dHA6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20vMjAwOS8wNi8wNS9iZWF1dGlmdWwtaGlnaC1xdWFsaXR5LWZyZWUtZm9udHMtZm9yLXlvdXItZGVzaWducy8iO3M6MTc6InhtbF9iYXNlX2V4cGxpY2l0IjtiOjE7czo4OiJ4bWxfbGFuZyI7czoyOiJlbiI7fX19czozODoiaHR0cDovL3B1cmwub3JnL3N5bmRpY2F0aW9uL3RocmVhZC8xLjAiO2E6MTp7czo1OiJ0b3RhbCI7YToxOntpOjA7YTo1OntzOjQ6ImRhdGEiO3M6MjoiOTIiO3M6NzoiYXR0cmlicyI7YTowOnt9czo4OiJ4bWxfYmFzZSI7czo0MzoiaHR0cDovL3d3dy5zbWFzaGluZ21hZ2F6aW5lLmNvbS93cC1hdG9tLnBocCI7czoxNzoieG1sX2Jhc2VfZXhwbGljaXQiO2I6MTtzOjg6InhtbF9sYW5nIjtzOjI6ImVuIjt9fX19fWk6MzthOjY6e3M6NDoiZGF0YSI7czozNzoiCgkJCgkJCgkJCgkJCgkJCgkJCgkJCQkKCQkKCQkKCQkKCQkKCSI7czo3OiJhdHRyaWJzIjthOjA6e31zOjg6InhtbF9iYXNlIjtzOjQzOiJodHRwOi8vd3d3LnNtYXNoaW5nbWFnYXppbmUuY29tL3dwLWF0b20ucGhwIjtzOjE3OiJ4bWxfYmFzZV9leHBsaWNpdCI7YjoxO3M6ODoieG1sX2xhbmciO3M6MjoiZW4iO3M6NToiY2hpbGQiO2E6Mjp7czoyNzoiaHR0cDovL3d3dy53My5vcmcvMjAwNS9BdG9tIjthOjk6e3M6NjoiYXV0aG9yIjthOjE6e2k6MDthOjY6e3M6NDoiZGF0YSI7czoxMDoiCgkJCQoJCQkJCSI7czo3OiJhdHRyaWJzIjthOjA6e31zOjg6InhtbF9iYXNlIjtzOjQzOiJodHRwOi8vd3d3LnNtYXNoaW5nbWFnYXppbmUuY29tL3dwLWF0b20ucGhwIjtzOjE3OiJ4bWxfYmFzZV9leHBsaWNpdCI7YjoxO3M6ODoieG1sX2xhbmciO3M6MjoiZW4iO3M6NToiY2hpbGQiO2E6MTp7czoyNzoiaHR0cDovL3d3dy53My5vcmcvMjAwNS9BdG9tIjthOjE6e3M6NDoibmFtZSI7YToxOntpOjA7YTo1OntzOjQ6ImRhdGEiO3M6MTE6Ik1hcmsgTnV0dGVyIjtzOjc6ImF0dHJpYnMiO2E6MDp7fXM6ODoieG1sX2Jhc2UiO3M6NDM6Imh0dHA6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20vd3AtYXRvbS5waHAiO3M6MTc6InhtbF9iYXNlX2V4cGxpY2l0IjtiOjE7czo4OiJ4bWxfbGFuZyI7czoyOiJlbiI7fX19fX19czo1OiJ0aXRsZSI7YToxOntpOjA7YTo1OntzOjQ6ImRhdGEiO3M6MzI6IjMwIE11c3QtSGF2ZSBUd2Vha3MgRm9yIFlvdXIgTWFjIjtzOjc6ImF0dHJpYnMiO2E6MTp7czowOiIiO2E6MTp7czo0OiJ0eXBlIjtzOjQ6Imh0bWwiO319czo4OiJ4bWxfYmFzZSI7czo0MzoiaHR0cDovL3d3dy5zbWFzaGluZ21hZ2F6aW5lLmNvbS93cC1hdG9tLnBocCI7czoxNzoieG1sX2Jhc2VfZXhwbGljaXQiO2I6MTtzOjg6InhtbF9sYW5nIjtzOjI6ImVuIjt9fXM6NDoibGluayI7YTozOntpOjA7YTo1OntzOjQ6ImRhdGEiO3M6MDoiIjtzOjc6ImF0dHJpYnMiO2E6MTp7czowOiIiO2E6Mzp7czozOiJyZWwiO3M6OToiYWx0ZXJuYXRlIjtzOjQ6InR5cGUiO3M6OToidGV4dC9odG1sIjtzOjQ6ImhyZWYiO3M6NzY6Imh0dHA6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20vMjAwOS8wNi8wNC8zMC1tdXN0LWhhdmUtdHdlYWtzLWZvci15b3VyLW1hYy8iO319czo4OiJ4bWxfYmFzZSI7czo0MzoiaHR0cDovL3d3dy5zbWFzaGluZ21hZ2F6aW5lLmNvbS93cC1hdG9tLnBocCI7czoxNzoieG1sX2Jhc2VfZXhwbGljaXQiO2I6MTtzOjg6InhtbF9sYW5nIjtzOjI6ImVuIjt9aToxO2E6NTp7czo0OiJkYXRhIjtzOjA6IiI7czo3OiJhdHRyaWJzIjthOjI6e3M6MDoiIjthOjM6e3M6MzoicmVsIjtzOjc6InJlcGxpZXMiO3M6NDoidHlwZSI7czo5OiJ0ZXh0L2h0bWwiO3M6NDoiaHJlZiI7czo4NToiaHR0cDovL3d3dy5zbWFzaGluZ21hZ2F6aW5lLmNvbS8yMDA5LzA2LzA0LzMwLW11c3QtaGF2ZS10d2Vha3MtZm9yLXlvdXItbWFjLyNjb21tZW50cyI7fXM6Mzg6Imh0dHA6Ly9wdXJsLm9yZy9zeW5kaWNhdGlvbi90aHJlYWQvMS4wIjthOjE6e3M6NToiY291bnQiO3M6MzoiMTE1Ijt9fXM6ODoieG1sX2Jhc2UiO3M6NDM6Imh0dHA6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20vd3AtYXRvbS5waHAiO3M6MTc6InhtbF9iYXNlX2V4cGxpY2l0IjtiOjE7czo4OiJ4bWxfbGFuZyI7czoyOiJlbiI7fWk6MjthOjU6e3M6NDoiZGF0YSI7czowOiIiO3M6NzoiYXR0cmlicyI7YToyOntzOjA6IiI7YTozOntzOjM6InJlbCI7czo3OiJyZXBsaWVzIjtzOjQ6InR5cGUiO3M6MjA6ImFwcGxpY2F0aW9uL2F0b20reG1sIjtzOjQ6ImhyZWYiO3M6ODY6Imh0dHA6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20vMjAwOS8wNi8wNC8zMC1tdXN0LWhhdmUtdHdlYWtzLWZvci15b3VyLW1hYy9mZWVkL2F0b20vIjt9czozODoiaHR0cDovL3B1cmwub3JnL3N5bmRpY2F0aW9uL3RocmVhZC8xLjAiO2E6MTp7czo1OiJjb3VudCI7czozOiIxMTUiO319czo4OiJ4bWxfYmFzZSI7czo0MzoiaHR0cDovL3d3dy5zbWFzaGluZ21hZ2F6aW5lLmNvbS93cC1hdG9tLnBocCI7czoxNzoieG1sX2Jhc2VfZXhwbGljaXQiO2I6MTtzOjg6InhtbF9sYW5nIjtzOjI6ImVuIjt9fXM6MjoiaWQiO2E6MTp7aTowO2E6NTp7czo0OiJkYXRhIjtzOjM5OiJodHRwOi8vd3d3LnNtYXNoaW5nbWFnYXppbmUuY29tLz9wPTY4MTAiO3M6NzoiYXR0cmlicyI7YTowOnt9czo4OiJ4bWxfYmFzZSI7czo0MzoiaHR0cDovL3d3dy5zbWFzaGluZ21hZ2F6aW5lLmNvbS93cC1hdG9tLnBocCI7czoxNzoieG1sX2Jhc2VfZXhwbGljaXQiO2I6MTtzOjg6InhtbF9sYW5nIjtzOjI6ImVuIjt9fXM6NzoidXBkYXRlZCI7YToxOntpOjA7YTo1OntzOjQ6ImRhdGEiO3M6MjA6IjIwMDktMDYtMDVUMDc6MTA6MTFaIjtzOjc6ImF0dHJpYnMiO2E6MDp7fXM6ODoieG1sX2Jhc2UiO3M6NDM6Imh0dHA6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20vd3AtYXRvbS5waHAiO3M6MTc6InhtbF9iYXNlX2V4cGxpY2l0IjtiOjE7czo4OiJ4bWxfbGFuZyI7czoyOiJlbiI7fX1zOjk6InB1Ymxpc2hlZCI7YToxOntpOjA7YTo1OntzOjQ6ImRhdGEiO3M6MjA6IjIwMDktMDYtMDRUMTY6MjU6MjVaIjtzOjc6ImF0dHJpYnMiO2E6MDp7fXM6ODoieG1sX2Jhc2UiO3M6NDM6Imh0dHA6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20vd3AtYXRvbS5waHAiO3M6MTc6InhtbF9iYXNlX2V4cGxpY2l0IjtiOjE7czo4OiJ4bWxfbGFuZyI7czoyOiJlbiI7fX1zOjg6ImNhdGVnb3J5IjthOjU6e2k6MDthOjU6e3M6NDoiZGF0YSI7czowOiIiO3M6NzoiYXR0cmlicyI7YToxOntzOjA6IiI7YToyOntzOjY6InNjaGVtZSI7czozMToiaHR0cDovL3d3dy5zbWFzaGluZ21hZ2F6aW5lLmNvbSI7czo0OiJ0ZXJtIjtzOjY6Ikhvdy1UbyI7fX1zOjg6InhtbF9iYXNlIjtzOjQzOiJodHRwOi8vd3d3LnNtYXNoaW5nbWFnYXppbmUuY29tL3dwLWF0b20ucGhwIjtzOjE3OiJ4bWxfYmFzZV9leHBsaWNpdCI7YjoxO3M6ODoieG1sX2xhbmciO3M6MjoiZW4iO31pOjE7YTo1OntzOjQ6ImRhdGEiO3M6MDoiIjtzOjc6ImF0dHJpYnMiO2E6MTp7czowOiIiO2E6Mjp7czo2OiJzY2hlbWUiO3M6MzE6Imh0dHA6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20iO3M6NDoidGVybSI7czo1OiJhcHBsZSI7fX1zOjg6InhtbF9iYXNlIjtzOjQzOiJodHRwOi8vd3d3LnNtYXNoaW5nbWFnYXppbmUuY29tL3dwLWF0b20ucGhwIjtzOjE3OiJ4bWxfYmFzZV9leHBsaWNpdCI7YjoxO3M6ODoieG1sX2xhbmciO3M6MjoiZW4iO31pOjI7YTo1OntzOjQ6ImRhdGEiO3M6MDoiIjtzOjc6ImF0dHJpYnMiO2E6MTp7czowOiIiO2E6Mjp7czo2OiJzY2hlbWUiO3M6MzE6Imh0dHA6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20iO3M6NDoidGVybSI7czoxMjoiYXBwbGljYXRpb25zIjt9fXM6ODoieG1sX2Jhc2UiO3M6NDM6Imh0dHA6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20vd3AtYXRvbS5waHAiO3M6MTc6InhtbF9iYXNlX2V4cGxpY2l0IjtiOjE7czo4OiJ4bWxfbGFuZyI7czoyOiJlbiI7fWk6MzthOjU6e3M6NDoiZGF0YSI7czowOiIiO3M6NzoiYXR0cmlicyI7YToxOntzOjA6IiI7YToyOntzOjY6InNjaGVtZSI7czozMToiaHR0cDovL3d3dy5zbWFzaGluZ21hZ2F6aW5lLmNvbSI7czo0OiJ0ZXJtIjtzOjE0OiJjb25maWd1cmF0aW9ucyI7fX1zOjg6InhtbF9iYXNlIjtzOjQzOiJodHRwOi8vd3d3LnNtYXNoaW5nbWFnYXppbmUuY29tL3dwLWF0b20ucGhwIjtzOjE3OiJ4bWxfYmFzZV9leHBsaWNpdCI7YjoxO3M6ODoieG1sX2xhbmciO3M6MjoiZW4iO31pOjQ7YTo1OntzOjQ6ImRhdGEiO3M6MDoiIjtzOjc6ImF0dHJpYnMiO2E6MTp7czowOiIiO2E6Mjp7czo2OiJzY2hlbWUiO3M6MzE6Imh0dHA6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20iO3M6NDoidGVybSI7czozOiJtYWMiO319czo4OiJ4bWxfYmFzZSI7czo0MzoiaHR0cDovL3d3dy5zbWFzaGluZ21hZ2F6aW5lLmNvbS93cC1hdG9tLnBocCI7czoxNzoieG1sX2Jhc2VfZXhwbGljaXQiO2I6MTtzOjg6InhtbF9sYW5nIjtzOjI6ImVuIjt9fXM6Nzoic3VtbWFyeSI7YToxOntpOjA7YTo1OntzOjQ6ImRhdGEiO3M6MTM1NzoiPCEtLSBmZWVkIGJhbm5lcnMgLS0+CjxkaXYgY2xhc3M9ImdzZW5zZSI+PHNwYW4gY2xhc3M9ImFuIj5BZHZlcnRpc2VtZW50czwvc3Bhbj48YnIvPgkKCjxhIGhyZWY9Imh0dHA6Ly9hZHNlcnZlci4zZGlnaXQuZGUvd3d3L2RlbGl2ZXJ5L2NrLnBocD96b25laWQ9NTYiIHRhcmdldD0iX2JsYW5rIj48aW1nIHNyYz0iaHR0cDovL2Fkc2VydmVyLjNkaWdpdC5kZS93d3cvZGVsaXZlcnkvYXZ3LnBocD96b25laWQ9NTYiIGJvcmRlcj0iMCIgYWx0PSIiIC8+CTwvYT4KCjwvZGl2PjwhLS0gPGltZyBzcmM9Imh0dHA6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20vaW1hZ2VzL3Bvc3QtcGljdHVyZXMvbWFjYm9vay5naWYiIC8+IC0tPjxwPkluIDxhIGhyZWY9Imh0dHA6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20vMjAwOS8wNC8yNi9maXZlLXJlYXNvbnMtd2h5LWRlc2lnbmVycy1hcmUtc3dpdGNoaW5nLXRvLW1hYy8iPm9uZSBvZiB0aGUgcmVjZW50IHBvc3RzPC9hPiwgd2UgbG9va2VkIGF0IHNvbWUgcmVhc29ucyB3aHkgc29tZSBkZXZlbG9wZXJzIHN3aXRjaCB0byB0aGUgTWFjLiBJZiB5b3UndmUgZGVjaWRlZCB0byBtYWtlIHRoZSBzd2l0Y2ggeW91cnNlbGYsIHlvdSBjYW4gZG8gYSBsb3QgdG8gbWFrZSB0aGUgdHJhbnNpdGlvbiBzbW9vdGhlci4gV2Ugd2lsbCB0YWtlIGEgbG9vayBhdCBzb21lIG11c3QtaGF2ZSBzb2Z0d2FyZSwgY29uZmlndXJhdGlvbnMgYW5kIGhhY2tzIHRoYXQgY2FuIG1ha2UgeW91ciBsaWZlIGVhc2llciBhcyB5b3Ugc3dpdGNoIGFuZCB0aGF0IGNhbiBnZXQgeW91IHVwIHRvIGZ1bGwgcHJvZHVjdGl2aXR5IChhbmQgbWF5YmUgYmV5b25kKSBpbiBubyB0aW1lIGF0IGFsbC48L3A+DQoNCg0KPHA+PGEgaHJlZj0iaHR0cDovL3d3dy5zbWFzaGluZ21hZ2F6aW5lLmNvbS8yMDA5LzA2LzA0LzMwLW11c3QtaGF2ZS10d2Vha3MtZm9yLXlvdXItbWFjLyI+PGltZyBzcmM9Imh0dHA6Ly9tZWRpYTEuc21hc2hpbmdtYWdhemluZS5jb20vaW1hZ2VzL21hYy1oYWNrcy9QaWN0dXJlMTIucG5nIiB3aWR0aD0iNTAwIiBoZWlnaHQ9IjQwMSIgYWx0PSJQaWN0dXJlIi8+PC9hPjwvcD4NCg0KPHA+V2UgaGF2ZSB0cmllZCB0byBmaW5kIGFzIG1hbnkgZnJlZSBzb2x1dGlvbnMgYXMgcG9zc2libGUsIGJ1dCB5b3UgaGF2ZSB0byBwYXkgZm9yIHNvbWUgYXBwbGljYXRpb25zIHRvIGdldCB0aGVpciBmdWxsIGZ1bmN0aW9uYWxpdHkuIElmIHdlIGhhdmUgbWlzc2VkIGEgY29uZmlndXJhdGlvbiwgaGFjayBvciBwaWVjZSBvZiBzb2Z0d2FyZSB0aGF0IHlvdSBmb3VuZCBoZWxwZnVsIHdoZW4gc3dpdGNoaW5nLCBwbGVhc2UgcG9zdCBpdCBpbiB0aGUgY29tbWVudHMuPC9wPiI7czo3OiJhdHRyaWJzIjthOjE6e3M6MDoiIjthOjE6e3M6NDoidHlwZSI7czo0OiJodG1sIjt9fXM6ODoieG1sX2Jhc2UiO3M6NDM6Imh0dHA6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20vd3AtYXRvbS5waHAiO3M6MTc6InhtbF9iYXNlX2V4cGxpY2l0IjtiOjE7czo4OiJ4bWxfbGFuZyI7czoyOiJlbiI7fX1zOjc6ImNvbnRlbnQiO2E6MTp7aTowO2E6NTp7czo0OiJkYXRhIjtzOjI3NDY4OiIKPCEtLSBnb29nbGVfYWRfc2VjdGlvbl9zdGFydCAtLT4KPHA+PCEtLSBmZWVkIGJhbm5lcnMgLS0+PC9wPgo8ZGl2IGNsYXNzPSJnc2Vuc2UiPjxzcGFuIGNsYXNzPSJhbiI+QWR2ZXJ0aXNlbWVudHM8L3NwYW4+PGJyLz4JPC9wPgo8cD48YSBocmVmPSJodHRwOi8vYWRzZXJ2ZXIuM2RpZ2l0LmRlL3d3dy9kZWxpdmVyeS9jay5waHA/em9uZWlkPTU2IiB0YXJnZXQ9Il9ibGFuayI+PGltZyBzcmM9Imh0dHA6Ly9hZHNlcnZlci4zZGlnaXQuZGUvd3d3L2RlbGl2ZXJ5L2F2dy5waHA/em9uZWlkPTU2IiBib3JkZXI9IjAiIGFsdD0iIiAvPgk8L2E+PC9wPgo8L2Rpdj4KPHA+SW4gPGEgaHJlZj0iaHR0cDovL3d3dy5zbWFzaGluZ21hZ2F6aW5lLmNvbS8yMDA5LzA0LzI2L2ZpdmUtcmVhc29ucy13aHktZGVzaWduZXJzLWFyZS1zd2l0Y2hpbmctdG8tbWFjLyI+b25lIG9mIHRoZSByZWNlbnQgcG9zdHM8L2E+LCB3ZSBsb29rZWQgYXQgc29tZSByZWFzb25zIHdoeSBzb21lIGRldmVsb3BlcnMgc3dpdGNoIHRvIHRoZSBNYWMuIElmIHlvdSYjODIxNzt2ZSBkZWNpZGVkIHRvIG1ha2UgdGhlIHN3aXRjaCB5b3Vyc2VsZiwgeW91IGNhbiBkbyBhIGxvdCB0byBtYWtlIHRoZSB0cmFuc2l0aW9uIHNtb290aGVyLiBXZSB3aWxsIHRha2UgYSBsb29rIGF0IHNvbWUgbXVzdC1oYXZlIHNvZnR3YXJlLCBjb25maWd1cmF0aW9ucyBhbmQgaGFja3MgdGhhdCBjYW4gbWFrZSB5b3VyIGxpZmUgZWFzaWVyIGFzIHlvdSBzd2l0Y2ggYW5kIHRoYXQgY2FuIGdldCB5b3UgdXAgdG8gZnVsbCBwcm9kdWN0aXZpdHkgKGFuZCBtYXliZSBiZXlvbmQpIGluIG5vIHRpbWUgYXQgYWxsLjwvcD4KPHA+V2UgaGF2ZSB0cmllZCB0byBmaW5kIGFzIG1hbnkgZnJlZSBzb2x1dGlvbnMgYXMgcG9zc2libGUsIGJ1dCB5b3UgaGF2ZSB0byBwYXkgZm9yIHNvbWUgYXBwbGljYXRpb25zIHRvIGdldCB0aGVpciBmdWxsIGZ1bmN0aW9uYWxpdHkuIElmIHdlIGhhdmUgbWlzc2VkIGEgY29uZmlndXJhdGlvbiwgaGFjayBvciBwaWVjZSBvZiBzb2Z0d2FyZSB0aGF0IHlvdSBmb3VuZCBoZWxwZnVsIHdoZW4gc3dpdGNoaW5nLCBwbGVhc2UgcG9zdCBpdCBpbiB0aGUgY29tbWVudHMuPC9wPgo8aDM+Q29uZmlndXJhdGlvbnM8L2gzPgo8aDQ+UmlnaHQtQ2xpY2tpbmc8L2g0Pgo8cD5PbmUgb2YgdGhlIG1vc3QgdmlzaWJsZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIE1hY3MgYW5kIG90aGVyIGNvbXB1dGVycyBpcyB0aGUgZm9ybWVyJiM4MjE3O3MgbGFjayBvZiBhIHNlY29uZCBidXR0b24gb24gdGhlIG1vdXNlLiBUaGUgTWFjIG1vdXNlIGhhcmtlbnMgYmFjayB0byB0aGUgb3JpZ2luYWwgbW91c2UgaW52ZW50ZWQgYXQgdGhlIFhlcm94IFBhbG8gQWx0byBSZXNlYXJjaCBDZW50ZXIsIHdoaWNoIGFsc28gaGFkIG9ubHkgb25lIGJ1dHRvbi4gRXZlbnR1YWxseSwgV2luZG93cyBncmV3IHRvIHViaXF1aXR5LCB0b3V0aW5nIGl0cyB0d28tYnV0dG9uIG1vdXNlLCBhbmQgdGhlIHdvcmxkIGJlY2FtZSBjb21mb3J0YWJsZSB3aXRoIHRoYXQgY29uZmlndXJhdGlvbi4gQXMgYSBzd2l0Y2hlciwgeW91JiM4MjE3O3JlIHVzZWQgdG8gdGhhdCBoYW5keSByaWdodC1jbGljaywgYW5kIGx1Y2t5IGZvciB5b3UsIHRoZSBoYWJpdCBkb2VzbiYjODIxNzt0IGhhdmUgdG8gZW5kLjwvcD4KPHA+PGltZyBzcmM9Imh0dHA6Ly9tZWRpYTIuc21hc2hpbmdtYWdhemluZS5jb20vaW1hZ2VzL21hYy1oYWNrcy9QaWN0dXJlIDEucG5nIiB3aWR0aD0iMzAzIiBoZWlnaHQ9IjQzMiIgYWx0PSJQaWN0dXJlIDEiPjwvcD4KPHA+QWxsIE1hY3Mgc3VwcG9ydCByaWdodC1jbGlja2luZywgYW5kIGl0IHdvcmtzIGp1c3QgYXMgaXQgZG9lcyBvbiBhIFdpbmRvd3Mgc3lzdGVtLCBwb3BwaW5nIHVwIG1lbnVzIGFuZCBleHRyYXMuIFdpdGhvdXQgbWVzc2luZyB3aXRoIHlvdXIgc2V0dGluZ3MsIHlvdSBjYW4gYWx3YXlzIGhvbGQgJiM4MjIwO0NvbnRyb2wmIzgyMjE7IGFuZCBjbGljayB0byBhY3RpdmUgYSByaWdodC1jbGljayBvbiBhIE1hYywgYnV0IHRoaXMgZ2V0cyB0ZWRpb3VzIHByZXR0eSBxdWlja2x5LiBUbyBtYWtlIHRoZSBleHBlcmllbmNlIG1vcmUgc2VhbWxlc3MsIGdvIGludG8geW91ciBwcmVmZXJlbmNlcyBhbmQgYWN0aXZhdGUgJiM4MjIwO1RhcCB0byBjbGljayYjODIyMTsgYW5kICYjODIyMDtTZWNvbmRhcnkgY2xpY2ssJiM4MjIxOyB3aGljaCB3aWxsIGFsbG93IHlvdSB0byB0YXAgdGhlIHRyYWNrcGFkIHdpdGggdHdvIGZpbmdlcnMgc2ltdWx0YW5lb3VzbHkgdG8gdHJpZ2dlciBhIHJpZ2h0IGNsaWNrLiBJdCBtYXkgc291bmQgb2RkLCBidXQgaXQgdGFrZXMgb25seSBhIGZldyBtaW51dGVzIHRvIGdldCB1c2VkIHRvLiBZb3UgY2FuIGFsc28ganVzdCBob2xkIHR3byBmaW5nZXJzIGRvd24gb24gdGhlIHRyYWNrcGFkIGFuZCBjbGljayB0aGUgcGh5c2ljYWwgbW91c2UgYnV0dG9uIHRvIGdldCB0aGUgc2FtZSBlZmZlY3QuIE9mIGNvdXJzZSwgcGx1Z2dpbmcgYSB0d28tYnV0dG9uIG1vdXNlIGludG8gYSBNYWMgaXMgYW5vdGhlciB3YXkgdG8gZ2V0IHlvdXIgcmlnaHQtY2xpY2sgYmFjay48L3A+CjxoND5Ud2VhayBNb3VzZS1UcmFja2luZyBTcGVlZDwvaDQ+CjxwPlRoZSBtb3VzZSB0cmFja2luZyBvbiBhIE1hYyBmZWVscyBxdWl0ZSBkaWZmZXJlbnQgZnJvbSB0aGF0IG9mIFdpbmRvd3MgYmVjYXVzZSBpdCBkb2VzIG5vdCBhY2NlbGVyYXRlLiBUaGlzIGNhbiBiZSBwYXJ0bHkgYWxsZXZpYXRlZCBieSB0dXJuaW5nIHRoZSB0cmFja2luZyBzcGVlZCBhbGwgdGhlIHdheSB1cC4gQnV0IGlmIHlvdSByZWFsbHkgcGluZSBmb3IgdGhhdCBXaW5kb3dzIGZlZWwsIHlvdSBjYW4gdHJ5IDxhIGhyZWY9Imh0dHA6Ly9wbGVudHljb20uanAvZW4vc3RlZXJtb3VzZS8iPlN0ZWVyTW91c2U8L2E+LCBhbGJlaXQgZm9yICQyMC48L3A+CjxoND5UdXJuIE9mZiBTY3JlZW4tRGltbWluZzwvaDQ+CjxwPjxpbWcgc3JjPSJodHRwOi8vbWVkaWEyLnNtYXNoaW5nbWFnYXppbmUuY29tL2ltYWdlcy9tYWMtaGFja3MvUGljdHVyZSAyLnBuZyIgd2lkdGg9IjUwMCIgaGVpZ2h0PSIyMjYiIGFsdD0iUGljdHVyZSAyIj48L3A+CjxwPldoaWxlIHNvbWUgcGVvcGxlIHdhbnQgdGhlaXIgc2NyZWVuIHRvIGRpbSBhZnRlciBhIHBlcmlvZCBvZiBpbmFjdGl2aXR5LCBpdCBjYW4gcXVpY2tseSBiZWNvbWUgYW5ub3lpbmcgZm9yIG90aGVycy4gVGhpcyBmZWF0dXJlIGNhbiBiZSB0dXJuZWQgb2ZmIGluIHRoZSBwcmVmZXJlbmNlcyB1bmRlciB0aGUgb3B0aW9ucyBmb3IgJiM4MjIwO0VuZXJneSBzYXZlci4mIzgyMjE7PC9wPgo8aDQ+VHVybiBvbiB0aGUgRmlyZXdhbGw8L2g0Pgo8cD48aW1nIHNyYz0iaHR0cDovL21lZGlhMS5zbWFzaGluZ21hZ2F6aW5lLmNvbS9pbWFnZXMvbWFjLWhhY2tzL1BpY3R1cmUgMy5wbmciIHdpZHRoPSI1MDAiIGhlaWdodD0iMzU3IiBhbHQ9IlBpY3R1cmUgMyI+PC9wPgo8cD5NYWNzIGluY2x1ZGUgdHdvIGZpcmV3YWxsczogYSBwYWNrZXQtZmlsdGVyaW5nIGZpcmV3YWxsIGNhbGxlZCA8YSBocmVmPSJodHRwOi8vd3d3Lm1hY2RldmNlbnRlci5jb20vcHViL2EvbWFjLzIwMDUvMDMvMTUvZmlyZXdhbGwuaHRtbCI+SVBGVzwvYT4gdGhhdCBmaWx0ZXJzIHRyYWZmaWMgYmFzZWQgb24gdHlwZSwgcG9ydCBudW1iZXIsIG9yaWdpbiBhbmQgZGVzdGluYXRpb24sIGFuZCBhIHNvY2tldC1maWx0ZXIgZmlyZXdhbGwgKG5ldyBpbiBMZW9wYXJkKSB0aGF0IGZpbHRlcnMgYmFzZWQgb24gdGhlIGFwcGxpY2F0aW9uIG1ha2luZyB0aGUgcmVxdWVzdC4gV2hpbGUgdGhlIHNvY2tldC1maWx0ZXIgZmlyZXdhbGwgaW4gT1MgWCBpcyBkaXNhYmxlZCBieSBkZWZhdWx0LCB5b3UgY2FuIGdvIGludG8gJiM4MjIwO1ByZWZlcmVuY2VzID4gU2VjdXJpdHkgPiBGaXJld2FsbCYjODIyMTsgdG8gZW5hYmxlIGl0LiBJUEZXIGlzIHNob3J0IG9uIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgYnV0IHRoYXQgY2FuIGJlIHJlbWVkaWVkIGJ5IGRvd25sb2FkaW5nIGVpdGhlciA8YSBocmVmPSJodHRwOi8vd3d3LmhhbnluZXQuY29tL25vb2Jwcm9vZi9pbmRleC5odG1sIj5Ob29iUHJvb2Y8L2E+IG9yIDxhIGhyZWY9Imh0dHA6Ly93d3cuaGFueW5ldC5jb20vd2F0ZXJyb29mL2luZGV4Lmh0bWwiPldhdGVyUm9vZjwvYT4sIHdoaWNoIGdpdmUgeW91IG1vcmUgc2VjdXJpdHkgb3B0aW9ucy48L3A+CjxoND5Mb2ctSW4gSXRlbXM8L2g0Pgo8cD48aW1nIHNyYz0iaHR0cDovL21lZGlhMS5zbWFzaGluZ21hZ2F6aW5lLmNvbS9pbWFnZXMvbWFjLWhhY2tzL1BpY3R1cmUgNC5wbmciIHdpZHRoPSI1MDAiIGhlaWdodD0iMzUyIiBhbHQ9IlBpY3R1cmUgNCI+PC9wPgo8cD5TZXR0aW5nIGFwcGxpY2F0aW9ucyB0byBzdGFydCB1cG9uIGxvZ2dpbmcgaW4gaXMgYWN0dWFsbHkgcXVpdGUgc2ltcGxlIG9uIGEgTWFjLiBJZiB0aGUgYXBwbGljYXRpb24geW91IHdhbnQgdG8gc3RhcnQgYXQgbG9nLWluIGlzIG9uIHlvdXIgZG9jaywgc2ltcGx5IHJpZ2h0LWNsaWNrIGl0cyBpY29uIGFuZCBjaG9vc2UgJiM4MjIwO09wZW4gYXQgbG9nLWluLiYjODIyMTsgWW91IGNhbiBhbHNvIGdvIGludG8gJiM4MjIwO1ByZWZlcmVuY2VzID4gQWNjb3VudHMgPiBbeW91ciBhY2NvdW50XSA+IExvZy1pbiBpdGVtcyYjODIyMTsgYW5kIGFkZCBhcHBsaWNhdGlvbnMgbWFudWFsbHkgdGhlcmUuIEtlZXAgaW4gbWluZCB0aGF0IHRoZSBtb3JlIGFwcGxpY2F0aW9ucyB5b3Ugc2V0IHRvIG9wZW4gYXQgbG9nLWluLCB0aGUgbG9uZ2VyIHlvdXIgc3lzdGVtcyB3aWxsIHRha2UgdG8gYm9vdC48L3A+CjxwPllvdSBjYW4gYWxzbyBjaGFuZ2UgdGhlIGJhY2tncm91bmQgZm9yIHRoZSBtYWluIGxvZy1pbiBzY3JlZW4gb24geW91ciBNYWMuIFRoaXMgaGFuZHkgbGl0dGxlIHBpZWNlIG9mIGZyZWV3YXJlIHRha2VzIHdoYXRldmVyIHlvdXIgZGVza3RvcCBiYWNrZ3JvdW5kIGlzIGFuZCBtaXJyb3JzIGl0IG9udG8geW91ciBsb2ctaW4gc2NyZWVuLiBPciB5b3UgY2FuIHVzZSB0aGUgZm9sbG93aW5nIGNvbW1hbmQgaW4geW91ciB0ZXJtaW5hbCB0byBjaGFuZ2UgaXQgdG8gYW55IGltYWdlIHlvdSB3YW50OjwvcD4KPGJsb2NrcXVvdGU+PHA+c3VkbyBkZWZhdWx0cyB3cml0ZSAvTGlicmFyeS9QcmVmZXJlbmNlcy9jb20uYXBwbGUubG9naW53aW5kb3cgRGVza3RvcFBpY3R1cmUgJiM4MjIwOy9MaWJyYXJ5L3BhdGhfdG9feW91cl9waWMveW91cl9waWMuanBnJiM4MjIxOzwvcD4KPC9ibG9ja3F1b3RlPgo8aDQ+SG90IENvcm5lcnM8L2g0Pgo8cD48aW1nIHNyYz0iaHR0cDovL21lZGlhMi5zbWFzaGluZ21hZ2F6aW5lLmNvbS9pbWFnZXMvbWFjLWhhY2tzL1BpY3R1cmUgNS5wbmciIHdpZHRoPSI1MDAiIGhlaWdodD0iMTY1IiBhbHQ9IlBpY3R1cmUgNSI+PC9wPgo8cD5Ib3QgY29ybmVycyBhbGxvdyB5b3UgdG8gc2V0IHVwIGVhY2ggY29ybmVyIG9mIHlvdXIgc2NyZWVuIHRvIGJlIGEgaG90IHNwb3QgdGhhdCB0cmlnZ2VycyBhbiBldmVudCB3aGVuZXZlciB5b3UgbW91c2Ugb3ZlciBpdCwgc3VjaCBhcyBzaHVmZmxpbmcgYWN0aXZlIHdpbmRvd3MgdG8gb2ZmIHNjcmVlbiB0byBzaG93IHRoZSBkZXNrdG9wIG9yIGRpc3BsYXlpbmcgd2lkZ2V0cy4gVGhpcyBnZXRzIGludGVyZXN0aW5nIHdoZW4gY29tYmluZWQgd2l0aCB0aGUgJiM4MjIwO0V4cG9zZSYjODIyMTsgYW5kICYjODIyMDtTcGFjZXMmIzgyMjE7IGZlYXR1cmVzLjwvcD4KPHA+RXhwb3NlIHNwcmVhZHMgeW91ciB3aW5kb3dzIG91dCBvbiB0aGUgc2NyZWVuIHNvIHRoYXQgeW91IGNhbiBmb2N1cyBvbiBhIG5ldyBvbmUuIE9uY2UgeW91IGdldCB1c2VkIHRvIGl0LCB5b3UmIzgyMTc7bGwgd29uZGVyIGhvdyB5b3UgZXZlciBsaXZlZCB3aXRob3V0IGl0LiBUbyBtYWtlIGl0IHJlYWxseSB1c2VmdWwsIHNldCB1cCBhIGhvdCBjb3JuZXIgdG8gYWN0aXZhdGUgaXQuIEFkZGl0aW9uYWxseSwgU3BhY2VzIGFsbG93cyB5b3UgdG8gZGlzcGxheSBtdWx0aXBsZSBkZXNrdG9wcyBmcm9tIGEgYmlyZCYjODIxNztzLWV5ZSB2aWV3LiBBZGQgdGhpcyB0byBhbm90aGVyIGNvcm5lciBhbmQgeW91JiM4MjE3O3ZlIGdvdCBzb21ldGhpbmcgcmVhbGx5IHNwZWNpYWwuIFlvdSYjODIxNztsbCBiZSBhYmxlIHRvIHNob3cgdGhlIGRlc2t0b3AsIGRyYWcgYSBmaWxlLCBzd2l0Y2ggdG8gYSBkaWZmZXJlbnQgc3BhY2UsIGZpbmQgYSB3aW5kb3cgdGhhdCYjODIxNztzIGhpZGRlbiBiZWhpbmQgc2V2ZXJhbCBvdGhlcnMgYW5kIGRyb3AgdGhlIGZpbGUgaW50byB0aGF0IHdpbmRvdywgYWxsIHdpdGggb25lIG1vdXNlIGNsaWNrLiBDaGVjayBpdCBvdXQgaW4gdGhlIHZpZGVvIGJlbG93OiA8L3A+CjxwPjxvYmplY3Qgd2lkdGg9IjUwMCIgaGVpZ2h0PSIzMzAiPjxwYXJhbSBuYW1lPSJhbGxvd2Z1bGxzY3JlZW4iIHZhbHVlPSJ0cnVlIiAvPjxwYXJhbSBuYW1lPSJhbGxvd3NjcmlwdGFjY2VzcyIgdmFsdWU9ImFsd2F5cyIgLz48cGFyYW0gbmFtZT0ibW92aWUiIHZhbHVlPSJodHRwOi8vdmltZW8uY29tL21vb2dhbG9vcC5zd2Y/Y2xpcF9pZD00NTk1MjMxJiMzODtzZXJ2ZXI9dmltZW8uY29tJiMzODtzaG93X3RpdGxlPTEmIzM4O3Nob3dfYnlsaW5lPTEmIzM4O3Nob3dfcG9ydHJhaXQ9MCYjMzg7Y29sb3I9MDBBREVGJiMzODtmdWxsc2NyZWVuPTEiIC8+PGVtYmVkIHNyYz0iaHR0cDovL3ZpbWVvLmNvbS9tb29nYWxvb3Auc3dmP2NsaXBfaWQ9NDU5NTIzMSYjMzg7c2VydmVyPXZpbWVvLmNvbSYjMzg7c2hvd190aXRsZT0xJiMzODtzaG93X2J5bGluZT0xJiMzODtzaG93X3BvcnRyYWl0PTAmIzM4O2NvbG9yPTAwQURFRiYjMzg7ZnVsbHNjcmVlbj0xIiB0eXBlPSJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCIgYWxsb3dmdWxsc2NyZWVuPSJ0cnVlIiBhbGxvd3NjcmlwdGFjY2Vzcz0iYWx3YXlzIiB3aWR0aD0iNTAwIiBoZWlnaHQ9IjMzMCI+PC9lbWJlZD48L29iamVjdD48L3A+CjxwPlBsYXkgYXJvdW5kIHdpdGggZGlmZmVyZW50IGhvdCBjb3JuZXIgY29uZmlndXJhdGlvbnMgdG8gZmluZCB0aGUgb25lIHRoYXQgYmVzdCBzdWl0cyB5b3UuIEkgcmVjb21tZW5kIHVzaW5nIHRocmVlIG9mIHRoZSBmb3VyIGZvciB0aGUgJiM4MjIwO0V4cG9zZSBBbGwgV2luZG93cyYjODIyMTsgYW5kICYjODIyMDtTaG93IERlc2t0b3AmIzgyMjE7IGZ1bmN0aW9ucyBhbmQgU3BhY2VzLiBJZiB5b3UgaGF2ZSBhIGxhcHRvcCwgc2V0dGluZyBvbmUgb2YgdGhlIGNvcm5lcnMgdG8gcHV0IHRoZSBkaXNwbGF5IHRvIHNsZWVwIGlzIGhhbmR5IGJlY2F1c2Ugbm8gYnV0dG9uIG9yIGtleSBkb2VzIHRoYXQgb3RoZXJ3aXNlLjwvcD4KPGg0PkNvbmZpZ3VyZSBTcGFjZXM8L2g0Pgo8cD48aW1nIHNyYz0iaHR0cDovL21lZGlhMi5zbWFzaGluZ21hZ2F6aW5lLmNvbS9pbWFnZXMvbWFjLWhhY2tzL1BpY3R1cmUgNi5wbmciIHdpZHRoPSI1MDAiIGhlaWdodD0iMzkxIiBhbHQ9IlBpY3R1cmUgNiI+PC9wPgo8cD5IYXZpbmcgbXVsdGlwbGUgZGVza3RvcHMgdG8gd29yayBmcm9tIGNhbiBiZSBhIGJvb24gdG8gcHJvZHVjdGl2aXR5LiBTcGFjZXMgYWxsb3dzIHlvdSB0byBjcmVhdGUgdXAgdG8gMTYgZGlmZmVyZW50IGRlc2t0b3BzLCBlbm91Z2ggdG8gc2F0aXNmeSBldmVuIHRoZSBtb3N0IHNwYXN0aWMgbXVsdGktdGFza2VyLiBBbG9uZyB3aXRoIHRoZXNlIGRlc2t0b3BzLCB5b3UgY2FuIHNwZWNpZnkgdGhhdCBjZXJ0YWluIGFwcGxpY2F0aW9ucyBvbmx5IG9wZW4gaW4gY2VydGFpbiBzcGFjZXMsIGFzIHdlbGwgYXMgc3BlY2lmeSB0aGF0IHNvbWUgYXBwcyBkaXNwbGF5IG5vIG1hdHRlciB3aGljaCBkZXNrdG9wIHlvdSYjODIxNztyZSB3b3JraW5nIGluLiBIZXJlIGFyZSBhIGZldyBhcHBsaWNhdGlvbnMgd2Ugc3VnZ2VzdCBkaXNwbGF5aW5nIGluIGFsbCBzcGFjZXM6IENoYXQgYXBwbGljYXRpb25zIChBZGl1bSwgaUNoYXQsIElSQyksIG1vdmllIHBsYXllcnMgKFZMQywgUXVpY2tUaW1lLCBEVkQgcGxheWVyKSwgVHdpdHRlciBjbGllbnRzIGFuZCBhbnkgYXBwbGljYXRpb24gdXNlZnVsIGluIG1vcmUgdGhhbiBvbmUgY29udGV4dC4gSSBoYXZlIGEgc3BhY2UgZm9yIGdlbmVyYWwgV2ViIGJyb3dzaW5nLCBpVHVuZXMgYW5kIGlQaG90bywgZW1haWwgYW5kIGNvbW11bmljYXRpb25zLCBQaG90b3Nob3AgYW5kIGRlc2lnbiwgY29kaW5nIGFuZCBkZXZlbG9wbWVudCwgV2luZG93cyB2aXJ0dWFsaXphdGlvbiwgbm90ZXMgYW5kIHJlbWluZGVycyBhbmQgb25lIHRoYXQgSSBrZWVwIGNsZWFuIGp1c3QgaW4gY2FzZS48L3A+CjxoND5BZGQgQWN0aXZpdHkgTW9uaXRvciB0byB0aGUgRG9jazwvaDQ+CjxwPjxpbWcgc3JjPSJodHRwOi8vbWVkaWExLnNtYXNoaW5nbWFnYXppbmUuY29tL2ltYWdlcy9tYWMtaGFja3MvUGljdHVyZSA4LnBuZyIgYWx0PSJQaWN0dXJlIDciPjwvcD4KPHA+QWN0aXZpdHkgbW9uaXRvciBpcyB0aGUgZXF1aXZhbGVudCBvZiB0aGUgdGFzayBtYW5hZ2VyIGluIFdpbmRvd3MuIENlcnRhaW4gaXRlbXMsIHdoZW4gYWRkZWQgdG8gdGhlIERvY2ssIHRha2Ugb24gYSBmZXcgZXh0cmEgYmVoYXZpb3JzLiBJbiB0aGUgY2FzZSBvZiB0aGUgYWN0aXZpdHkgbW9uaXRvciwgdGhvc2UgaXRlbXMgY2FuIGRpc3BsYXkgaGVscGZ1bCBpbmZvcm1hdGlvbiBpbnN0ZWFkIG9mIHRoZWlyIGljb25zIHdoaWxlIHNpdHRpbmcgaW4gdGhlIGRvY2s6IHN1Y2ggYXMgYSBwaWUgY2hhcnQgc2hvd2luZyBob3cgbXVjaCBtZW1vcnkgaXMgYmVpbmcgdXNlZCwgYSBsaXZlIGdyYXBoIG9mIHByb2Nlc3NvciBhY3Rpdml0eSBhbmQgbW9yZS4gV2hpbGUgeW91IGNhbiBhbHdheXMgcG9wIHVwIGEgd2luZG93IGFuZCBoaXQgQ29tbWFuZCArIE9wdGlvbiArIEVzYyAoeW91ciBuZXcgQ3RybCArIEFsdCArIERlbGV0ZSkgdG8gZm9yY2UgcXVpdCBhbiBhcHBsaWNhdGlvbiwgeW91IGRvbiYjODIxNzt0IGdldCBhbnkgaW5mb3JtYXRpb24gYWJvdXQgcHJvZ3JhbXMgdGhhdCBhcmUgcnVubmluZy4gQ2xpY2tpbmcgb24gdGhlIGFjdGl2aXR5IG1vbml0b3IgZ2l2ZXMgeW91IHRoZSBmb3JjZSBxdWl0IG9wdGlvbiBhbmQgYSB3ZWFsdGggb2YgaW5mb3JtYXRpb24gYWJvdXQgeW91ciBwcm9jZXNzZXMuPC9wPgo8aDQ+QSBTbWFydGVyIEZpbmRlcjwvaDQ+CjxwPjxpbWcgc3JjPSJodHRwOi8vbWVkaWExLnNtYXNoaW5nbWFnYXppbmUuY29tL2ltYWdlcy9tYWMtaGFja3MvUGljdHVyZSA5LnBuZyIgd2lkdGg9IjUwMCIgYWx0PSJQaWN0dXJlIDkiPjwvcD4KPHA+RmluZGVyIGlzIGEgZmlsZSBleHBsb3JlciB0aGF0IHBlb3BsZSBlaXRoZXIgbG92ZSBvciBsb2F0aC4gWW91IGNhbiBkbyBhIGZldyB0aGluZ3MgdG8gbWFrZSBpdCBtb3JlIHVzZWZ1bCwgdGhvdWdoLiBSaWdodC1jbGljayBvbiB0aGUgdG9wIHBhcnQgb2YgdGhlIGZpbmRlciB3aW5kb3csIG11Y2ggbGlrZSB5b3Ugd291bGQgdG8gZWRpdCBhIHRvb2xiYXIgaW4gdGhlIGJyb3dzZXIsIGFuZCB5b3UmIzgyMTc7bGwgc2VlIHRoYXQgeW91IGNhbiBjb25maWd1cmUgdGhlIGJ1dHRvbnMgaW4gdGhlIGZpbmRlciB3aW5kb3cuIENob29zZSAmIzgyMjA7Q3VzdG9taXplIFRvb2JhciYjODIyMTsgYW5kIGFkZCB0aGUgJiM4MjIwO1BhdGgsJiM4MjIxOyAmIzgyMjA7RGVsZXRlLCYjODIyMTsgYW5kICYjODIyMDtOZXcgRm9sZGVyJiM4MjIxOyBidXR0b25zLCBhbG9uZyB3aXRoIGFueSBvdGhlcnMgeW91IGRlc2lyZS48L3A+CjxwPkluIHRoZSBsZWZ0IHNpZGViYXIgb2YgdGhlIGZpbmRlciwgeW91JiM4MjE3O2xsIHNlZSBhIGxpc3Qgb2YgZmF2b3JpdGVzLCBpbmNsdWRpbmcgeW91ciBob21lIGZvbGRlciwgbWFpbiBkaXNrIGRyaXZlcywgYW55IGF0dGFjaGVkIGRyaXZlcyBhbmQgdGhlIG1vc3QgdXNlZCBmb2xkZXJzIChwaG90b3MsIG11c2ljLCBzaXRlcywgZXRjLikuIFlvdSBjYW4gY3VzdG9taXplIHRoaXMgbGlzdCBieSBkcmFnZ2luZyBmb2xkZXJzIGFuZCBvdGhlciBpdGVtcyBvbnRvIHRoZSBzaWRlYmFyLiBZb3UgY2FuIGFsc28gYWRkICYjODIyMDtzbWFydCBmb2xkZXJzJiM4MjIxOyAoRmlsZSA+IE5ldyBzbWFydCBmb2xkZXIpIHRoYXQgZmlsdGVyIGZpbGVzIGJhc2VkIG9uIGEgc2V0IG9mIHJ1bGVzLiBGb3IgaW5zdGFuY2UsIG9uZSBzbWFydCBmb2xkZXIgSSBrZWVwIGluIG15IHNpZGViYXIgaXMgYSBsaXN0IG9mIGFsbCBmaWxlcyBvdmVyIDEwMCBNQiwgaW4gY2FzZSBJIG5lZWQgdG8gZnJlZSB1cCBzb21lIGhhcmQgZHJpdmUgc3BhY2UuIElmIHlvdSB3YW50IHRvIGFkZCBzZXBhcmF0b3JzIHRvIHRoZSBzaWRlYmFyLCB0aGVyZSYjODIxNztzIDxhIGhyZWY9Imh0dHA6Ly93d3cudHlwb2V0LmNvbS9zZXBhcmF0b3JzL2luZGV4Lmh0bWwiPmEgbmVhdCBsaXR0bGUgZ3VpZGUgb24gaG93IHRvIGRvIHRoYXQgaGVyZTwvYT4uPC9wPgo8cD5Zb3UgY2FuIGRvd25sb2FkIHRvb2xiYXIgc2NyaXB0cyBmb3IgZXZlbiBtb3JlIGZ1bmN0aW9uYWxpdHkuIEZvciBpbnN0YW5jZSwgeW91IGNhbiBhZGQgYSBidXR0b24gdGhhdCBvcGVucyB0aGUgdGVybWluYWwgaW4gd2hhdGV2ZXIgZm9sZGVyIHlvdSBhcmUgY3VycmVudGx5IGJyb3dzaW5nLiA8YSBocmVmPSJodHRwOi8vbWFjLnNvZnRwZWRpYS5jb20vZ2V0L1N5c3RlbS1VdGlsaXRpZXMvRmluZGVyLVRvb2xiYXItU2NyaXB0cy5zaHRtbCI+Q2hlY2sgdGhlbSBvdXQgaGVyZTwvYT4uIE9mIGNvdXJzZSwgaWYgeW91IGVuZCB1cCBoYXRpbmcgdGhlIGZpbmRlciwgeW91IGNhbiB0cnkgYW4gYWx0ZXJuYXRpdmUsIGxpa2UgPGEgaHJlZj0iaHR0cDovL3d3dy5jb2NvYXRlY2guY29tLyI+Q29jb2F0ZWNoJiM4MjE3O3MgUGF0aCBGaW5kZXI8L2E+PC9wPgo8aDM+SGFja3M8L2gzPgo8aDQ+V2lkZ2V0cyBvbiBZb3VyIERlc2t0b3A8L2g0Pgo8cD48aW1nIHNyYz0iaHR0cDovL21lZGlhMi5zbWFzaGluZ21hZ2F6aW5lLmNvbS9pbWFnZXMvbWFjLWhhY2tzL1BpY3R1cmUgMTAucG5nIiB3aWR0aD0iNTAwIiBoZWlnaHQ9IjgyIiBhbHQ9IlBpY3R1cmUgMTAiPjwvcD4KPHA+V2lkZ2V0cyBhcmUgQXBwbGUmIzgyMTc7cyB2ZXJzaW9uIG9mIEtvbmZhYnVsYXRvciAobm93IFlhaG9vISBXaWRnZXRzKSwgYnV0IHVubGlrZSBLb25mYWJ1bGF0b3IsIHRoZXkgYXJlIGRvb21lZCB0byBleGlsZSBpbiB0aGUgZGFzaGJvYXJkIChhICYjODIyMDtzZWNvbmQgZGVza3RvcCYjODIyMTsgdGhhdCBwb3BzIHVwIHdoZW4geW91IGhpdCB0aGUgcmlnaHQga2V5cyBvciBob3QgY29ybmVyKS4gVGhlIHByb2JsZW0gd2l0aCBEYXNoYm9hcmQgaXMgdGhhdCB0aGUgbW9yZSB3aWRnZXRzIHlvdSBoYXZlIHJ1bm5pbmcsIHRoZSBsb25nZXIgdGhleSBhbGwgdGFrZSB0byBwb3AgdXAgdGhlIGZpcnN0IHRpbWUgeW91IGFjdGl2YXRlIGl0IGFmdGVyIGEgcmVzdGFydC4gSWYgeW91IHByZWZlciB0byBoYXZlIHlvdXIgd2lkZ2V0cyBhdmFpbGFibGUgb24gZGVtYW5kIG9uIHRoZSBkZXNrdG9wLCBlbnRlciB0aGUgZm9sbG93aW5nIGNvbW1hbmQgaW50byB5b3VyIE1hYyB0ZXJtaW5hbDo8L3A+CjxibG9ja3F1b3RlPjxwPmRlZmF1bHRzIHdyaXRlIGNvbS5hcHBsZS5kYXNoYm9hcmQgZGV2bW9kZSBZRVM8L3A+CjwvYmxvY2txdW90ZT4KPHA+VG8gcGxhY2UgYSB3aWRnZXQgb24gdGhlIGRlc2t0b3AsIG9wZW4gdXAgRGFzaGJvYXJkLCBzdGFydCBkcmFnZ2luZyB0aGUgd2lkZ2V0IGFuZCBjbG9zZSB0aGUgZGFzaGJvYXJkLiBVbmZvcnR1bmF0ZWx5LCB3aWRnZXRzIHdpbGwgc3RheSBvbiB0b3Agb2YgYWxsIHlvdXIgd2luZG93cy4gRnJ1c3RyYXRpbmdseSwgdGhlIG9ubHkgd2F5IHRvIG92ZXJyaWRlIHRoaXMgYmVoYXZpb3IgaXMgdG8gZ2V0IGEgcGFpZCBhcHBsaWNhdGlvbiBjYWxsZWQgPGEgaHJlZj0iaHR0cDovL3d3dy5hbW5lc3R5d2lkZ2V0cy5jb20vV2lkZ2V0QnJvd3Nlci5odG1sIj5BbW5lc3R5IFdpZGdldHM8L2E+LCB3aGljaCBtYWtlcyBPUyBYJiM4MjE3O3Mgd2lkZ2V0cyBtb3JlIGxpa2UgWWFob28gV2lkZ2V0cy4gT2YgY291cnNlLCB5b3UgY291bGQganVzdCB1c2UgWWFob28hIFdpZGdldHMgYW5kIGZvcmdldCBPUyBYJiM4MjE3O3Mgd2lkZ2V0cyBhbHRvZ2V0aGVyLjwvcD4KPGg0PkNoYW5nZSBDb21tYW5kIHRvIENvbnRyb2w8L2g0Pgo8cD5UaGlzIGlzIGFuIGFkZXF1YXRlIGNvbmZpZ3VyYXRpb24gZm9yIG1vc3QsIGJ1dCBhbiBhYnNvbHV0ZSBsaWZlc2F2ZXIgZm9yIHNvbWUuIEl0IHRvb2sgbWUgYSB3aGlsZSB0byBnZXQgdXNlZCB0byB1c2luZyBDb21tYW5kIGluc3RlYWQgb2YgQ29udHJvbCwgYnV0IEkgZXZlbnR1YWxseSBicm9rZSB0aGUgb2xkIGhhYml0LiBTb21lIHBlb3BsZSBoYXZlIGJlZW4ga25vd24gdG8gZ2l2ZSB1cCBvbiB0aGUgcGxhdGZvcm0gYmVjYXVzZSBvZiB0aGlzIGlzc3VlLiBGb3IgdGhvc2Ugb2YgeW91IHdobyBoYXZlIGEgaGFyZCB0aW1lIGFkanVzdGluZywgc2ltcGx5IG1hcCB0aGUgQ29tbWFuZCBrZXkgdG8gQ29udHJvbC4gPGEgaHJlZj0iaHR0cDovL2RvdWJsZWNvbW1hbmQuc291cmNlZm9yZ2UubmV0LyI+ZG91YmxlY29tbWFuZDwvYT4gYW5kIDxhIGhyZWY9Imh0dHA6Ly93d3cua29kYWNoaS5jb20vc29mdHdhcmUvZktleXMvIj5mS2V5czwvYT4gYXJlIHBvcHVsYXIgdXRpbGl0aWVzIHRoYXQgbGV0IHlvdSBkbyBhbGwgc29ydHMgb2YgY3VzdG9tIG1hcHBpbmcgdG8gbWFrZSB5b3VyIHN3aXRjaCBlYXNpZXIuPC9wPgo8aDQ+TWF4aW1pemUgWW91ciBab29tPC9oND4KPHA+T25lIG9mIHRoZSB3ZWlyZGVzdCBxdWlya3MgdG8gZ2V0IHVzZWQgdG8gd2hlbiBzd2l0Y2hpbmcgdG8gdGhlIE1hYyBpcyB0aGUgYmVoYXZpb3Igb2YgdGhlICYjODIyMDtab29tJiM4MjIxOyBidXR0b24gb24gd2luZG93cyAodGhlIGdyZWVuIGJ1dHRvbiBpbiB0aGUgdG9wLWxlZnQgY29ybmVyIG9mIGFsbCB3aW5kb3dzKS4gSW5zdGVhZCBvZiBzdGlja2luZyB0aGUgZm91ciBzaWRlcyBvZiB0aGUgd2luZG93IHRvIHRoZSB2ZXJ5IGVkZ2VzIG9mIHRoZSBzY3JlZW4sIFpvb20gd2lsbCBzaW1wbHkgZXhwYW5kIHRoZSBzaXplIG9mIHRoZSB3aW5kb3cgdG8gZml0IHRoZSBzY3JlZW4gYnV0IHRoZSB3aW5kb3cgd2lsbCByZW1haW4gZHJhZ2dhYmxlLiBPZnRlbiBpdCBkb2VzbiYjODIxNzt0IGV2ZW4gZG8gdGhpcyBhbmQgaW5zdGVhZCBjaGFuZ2VzIHRoZSBzaXplIG9mIHRoZSB3aW5kb3cgaW4gdW5leHBlY3RlZCBhbmQgZnJ1c3RyYXRpbmcgd2F5cy4gTHVja2lseSB5b3UgY2FuIGRvd25sb2FkIGEgPGEgaHJlZj0iaHR0cDovL3d3dy5zd2l0Y2hpbmd0b21hYy5jb20vdHV0b3JpYWxzL21ha2UtdGhlLW9zLXgtbWF4aW1pemUtYnV0dG9uLXdvcmstbGlrZS13aW5kb3dzIj5oYW5keSBsaXR0bGUgcGx1Zy1pbjwvYT4gdG8gZm9yY2UgWm9vbSB0byB1c2UgdGhlIHdpbmRvdyYjODIxNztzIG1heGltaXplIGZ1bmN0aW9uLiBPdGhlciB0aGFuIHVzaW5nIHRoaXMgcGx1Zy1pbiwgeW91JiM4MjE3O2xsIGhhdmUgdG8gZ2V0IHVzZWQgdG8gZHJhZ2dpbmcgdGhlIGJvdHRvbS1yaWdodCBjb3JuZXIgb2YgdGhlIHdpbmRvdyB0byBmb3JjZSBpdC48L3A+CjxoND5IaWRkZW4gQXBwbGljYXRpb25zLCBIaWRkZW4gRmlsZXM8L2g0Pgo8cD5JZiB5b3UgZXZlciBuZWVkIHRvIGZpbmQgZmlsZXMgdGhhdCBhcmUgaGlkZGVuIGJ5IGRlZmF1bHQsIHR5cGUgdGhpcyBpbnRvIHRoZSB0ZXJtaW5hbDo8L3A+CjxibG9ja3F1b3RlPjxwPmRlZmF1bHRzIHdyaXRlIGNvbS5hcHBsZS5maW5kZXIgQXBwbGVTaG93QWxsRmlsZXMgVFJVRTwvcD4KPC9ibG9ja3F1b3RlPgo8cD5Zb3UgY2FuIGhpZGUgd2luZG93cyBieSBoaXR0aW5nIENvbW1hbmQgKyBoLCBidXQgeW91IGdldCBubyBpbmRpY2F0aW9uIHRoYXQgYSB3aW5kb3cgaXMgaGlkZGVuIG9uY2UgaXQmIzgyMTc7cyBnb25lLiBUbyBtYWtlIHRoZSBhcHBsaWNhdGlvbiBpY29uIG1vcmUgdHJhbnNwYXJlbnQgaW4gdGhlIGRvY2sgd2hlbiBpdCBpcyBoaWRkZW4sIHR5cGUgdGhpcyBpbnRvIHRoZSB0ZXJtaW5hbDo8L3A+CjxibG9ja3F1b3RlPjxwPmRlZmF1bHRzIHdyaXRlIGNvbS5hcHBsZS5Eb2NrIHNob3doaWRkZW4gLWJvb2wgWUVTPGJyLz4ga2lsbGFsbCBEb2NrPC9wPgo8L2Jsb2NrcXVvdGU+CjxoND5RdWljayBMb29rIEV4cGFuZGVkPC9oND4KPHA+PGltZyBzcmM9Imh0dHA6Ly9tZWRpYTIuc21hc2hpbmdtYWdhemluZS5jb20vaW1hZ2VzL21hYy1oYWNrcy9QaWN0dXJlIDExLnBuZyIgd2lkdGg9IjUyNiIgaGVpZ2h0PSI0NTUiIGFsdD0iUGljdHVyZSAxMSI+PC9wPgo8cD5RdWljayBMb29rIGNhbiBzYXZlIHlvdSBwcmVjaW91cyBzZWNvbmRzIGJ5IHNob3dpbmcgeW91IGEgcHJldmlldyBvZiBhIGZpbGUgYmVmb3JlIG9wZW5pbmcgaXQgaW4gaXRzIGRlZmF1bHQgcHJvZ3JhbS4gU2ltcGx5IGhpdCB0aGUgc3BhY2UgYmFyIG9uIGEgZmlsZSB0byBhY3RpdmF0ZSBpdC4gVGhpcyBpcyBsaW1pdGVkIHRvIGNlcnRhaW4gZmlsZXMsIGJ1dCBhIGZldyBoYW5keSBwbHVnLWlucyBvdXQgdGhlcmUgZ2l2ZSB5b3UgUXVpY2sgTG9vayBmdW5jdGlvbmFsaXR5IGZvciBmb2xkZXJzLCBaaXAgZmlsZXMgYW5kIG1vcmUuIHRoZUFwcGxlQmxvZy5jb20gaGFzIGNvbXBpbGVkIDxhIGhyZWY9Imh0dHA6Ly90aGVhcHBsZWJsb2cuY29tLzIwMDkvMDUvMDYvZm91ci11c2VmdWwtcXVpY2tsb29rLXBsdWdpbnMvIj5hIGdyZWF0IGxpc3Qgb2YgZm91cnMgc3VjaCBwbHVnLWluczwvYT4uIDwvcD4KPGg0PlNhZmFyaSBEZWJ1Z2dlcjwvaDQ+CjxwPjxpbWcgc3JjPSJodHRwOi8vbWVkaWExLnNtYXNoaW5nbWFnYXppbmUuY29tL2ltYWdlcy9tYWMtaGFja3MvUGljdHVyZSAxMi5wbmciIHdpZHRoPSI1MDAiIGhlaWdodD0iNDAxIiBhbHQ9IlBpY3R1cmUgMTIiPjwvcD4KPHA+U2FmYXJpIG9mZmVycyBhIGdyZWF0IGJyb3dzaW5nIGV4cGVyaWVuY2UsIGRlc3BpdGUgd2hhdCB5b3UgbWF5IGhhdmUgaGVhcmQuIEl0JiM4MjE3O3MgcXVpY2ssIGNsZWFuIGFuZCBwb3dlcmZ1bCwgYWx0aG91Z2ggbm90IHRoYXQgZWFzeSB0byBjdXN0b21pemUuIFlvdSBjYW4gYXBwbHkgYSBmZXcgbmVhdCBoYWNrcyB0byBtYWtlIGl0IGEgbGl0dGxlIG1vcmUgdXNlZnVsIHRob3VnaC4gVG8gZW5hYmxlIHRoZSBzdXJwcmlzaW5nbHkgcmljaCBXZWIgZGV2ZWxvcG1lbnQgZGVidWdnZXIgdG9vbCwgdHlwZSB0aGlzIGludG8geW91ciB0ZXJtaW5hbDo8L3A+CjxibG9ja3F1b3RlPjxwPmRlZmF1bHRzIHdyaXRlIGNvbS5hcHBsZS5TYWZhcmkgSW5jbHVkZURlYnVnTWVudSBZRVM8L3A+CjwvYmxvY2txdW90ZT4KPHA+Rm9yIGEgd2VhbHRoIG9mIFNhZmFyaSBoYWNrcyBhbmQgcGx1Zy1pbnMsIGNoZWNrIG91dCA8YSBocmVmPSJodHRwOi8vd3d3LnNhZmFyaWhhY2tzLmNvbS8iPlNhZmFyaSBIYWNrczwvYT4gYW5kIDxhIGhyZWY9Imh0dHA6Ly9waW1wbXlzYWZhcmkuY29tIj5QaW1wIE15IFNhZmFyaTwvYT4uIDxhIGhyZWY9Imh0dHA6Ly9waW1wbXlzYWZhcmkuY29tL3BsdWdpbnMvc2FmdCI+U0FGVDwvYT4gaXMgYSBncmVhdCBleHRlbnNpb24gZm9yIFNhZmFyaSB0aGF0IHByb3ZpZGVzIGEgbG90IG9mIGdyZWF0IGZ1bmN0aW9uYWxpdHkgZm9yICQxMi48L3A+CjxoND5DdXN0b21pemUgWW91ciBEb2NrPC9oND4KPHA+PGltZyBzcmM9Imh0dHA6Ly9tZWRpYTEuc21hc2hpbmdtYWdhemluZS5jb20vaW1hZ2VzL21hYy1oYWNrcy9QaWN0dXJlIDEzLnBuZyIgd2lkdGg9IjUwMCIgaGVpZ2h0PSI1OCIgYWx0PSJQaWN0dXJlIDEzIj48L3A+CjxwPkFwcGxlIGhhcyB2ZXJ5IGRlZmluaXRlIGZlZWxpbmdzIGFib3V0IGhvdyB0aGUgRG9jayBzaG91bGQgbG9vayBiZWNhdXNlIGl0IGRvZXMgbm90IGdpdmUgeW91IG1hbnkgbWVhbnMgb2YgY3VzdG9taXphdGlvbi4gVG8gbWVzcyB3aXRoIHRoZSBsb29rIGFuZCBmZWVsIG9mIHRoZSBEb2NrLCB5b3UgY2FuIHRyeSA8YSBocmVmPSJodHRwOi8vZG9ja3VsaWNpb3VzLmNvbS9kb2Nrcy92aWV3L21pcmFnZSI+TWlyYWdlPC9hPiwgd2hpY2ggcmVtb3ZlcyBhbGwgc3R5bGluZywgPGEgaHJlZj0iaHR0cDovL3d3dy5wYW5pYy5jb20vY2FuZHliYXIvIj5DYW5keWJhcjwvYT4sIHdoaWNoIGdpdmVzIHlvdSBhIHZhcmlldHkgb2Ygc3R5bGluZyBvcHRpb25zLCBhbmQgPGEgaHJlZj0iaHR0cDovL2xlb3BhcmRkb2Nrcy5uZXQvIj5MZW9wYXJkIERvY2tzPC9hPiwgYSB3ZWJzaXRlIGRlZGljYXRlZCB0byBjdXN0b20gRG9jayBzdHlsaW5ncy48L3A+CjxwPldoZW4gdGhlIERvY2sgaXMgb24gdGhlIGxlZnQgb3IgcmlnaHQgc2lkZSBvZiB5b3VyIHNjcmVlbiwgaXQgZ29lcyBmcm9tIGEgMy1EIGxvb2sgdG8gMi1ELiBJZiB5b3UgcHJlZmVyIHRoZSAyLUQgYW5kIGJvdHRvbS1zY3JlZW4gY29uZmlndXJhdGlvbiwgdHlwZSB0aGlzIGludG8geW91ciB0ZXJtaW5hbDo8L3A+CjxibG9ja3F1b3RlPjxwPmRlZmF1bHRzIHdyaXRlIGNvbS5hcHBsZS5kb2NrIG5vLWdsYXNzIC1ib29sZWFuIFlFUzxici8+IGtpbGxhbGwgRG9jazwvcD4KPC9ibG9ja3F1b3RlPgo8cD5BcyBmYXIgYXMgdGhlIERvY2smIzgyMTc7cyBiZWhhdmlvciBnb2VzLCBoZXJlJiM4MjE3O3MgYSBtdXN0LWhhdmUgaGFjayB5b3UgY2FuIGFwcGx5LiBBZGQgYSAmIzgyMjA7UmVjZW50IGZpbGVzJiM4MjIxOyBzdGFjayB0byB0aGUgRG9jayBieSBlbnRlcmluZyB0aGUgZm9sbG93aW5nIGluIHlvdXIgdGVybWluYWw6PC9wPgo8YmxvY2txdW90ZT48cD5kZWZhdWx0cyB3cml0ZSBjb20uYXBwbGUuZG9jayBwZXJzaXN0ZW50LW90aGVycyAtYXJyYXktYWRkICYjODIxNjt7ICYjODIyMDt0aWxlLWRhdGEmIzgyMjE7ID0geyAmIzgyMjA7bGlzdC10eXBlJiM4MjIxOyA9IDE7IH07ICYjODIyMDt0aWxlLXR5cGUmIzgyMjE7ID0gJiM4MjIwO3JlY2VudHMtdGlsZSYjODIyMTs7IH0mIzgyMTc7PGJyLz4ga2lsbGFsbCBEb2NrPC9wPgo8L2Jsb2NrcXVvdGU+CjxoND5PcGVuLVdpdGggRGVmYXVsdHM8L2g0Pgo8cD48aW1nIHNyYz0iaHR0cDovL21lZGlhMi5zbWFzaGluZ21hZ2F6aW5lLmNvbS9pbWFnZXMvbWFjLWhhY2tzL1BpY3R1cmUgMTQucG5nIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjE5NCIgYWx0PSJQaWN0dXJlIDE0Ij48L3A+CjxwPklmIHlvdSB3YW50IGEgY2VydGFpbiBmaWxlIHRvIG9wZW4gaW4gYSBjZXJ0YWluIHByb2dyYW0sIHJpZ2h0LWNsaWNrIG9uIGEgZmlsZSBvZiB0aGF0IGZpbGUgdHlwZSBhbmQgc2VsZWN0ICYjODIyMDtHZXQgaW5mbywmIzgyMjE7IHdoaWNoIHdpbGwgYnJpbmcgdXAgYSBib3ggd2l0aCBhbGwgc29ydHMgb2YgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGZpbGUuIFdlJiM4MjE3O3JlIGludGVyZXN0ZWQgaGVyZSBpbiB0aGUgJiM4MjIwO09wZW4gd2l0aCYjODIyMTsgc2VjdGlvbiwgd2hlcmUgeW91IGNhbiBjaG9vc2UgaXRzIGRlZmF1bHQgcHJvZ3JhbS4gT25jZSB5b3UmIzgyMTc7dmUgc2VsZWN0ZWQgdGhlIHByb3BlciBwcm9ncmFtLCBjbGljayB0aGUgJiM4MjIwO0NoYW5nZSBBbGwmIzgyMjE7IGJ1dHRvbiB0byBtYWtlIGl0IHRoZSBkZWZhdWx0IHByb2dyYW0gZm9yIGFsbCBmaWxlcyBvZiB0aGF0IGZpbGUgdHlwZS4gT25lIHN1Z2dlc3Rpb246IG1ha2UgVGV4dEVkaXQgeW91ciBkZWZhdWx0IHByb2dyYW0gZm9yIC5kb2MgYW5kIC5kb2N4IGZpbGVzOiBpdCBvcGVucyB0aGVtIG11Y2ggZmFzdGVyIHRoYW4gV29yZCBvciBPcGVuT2ZmaWNlLjwvcD4KPGgzPlNvZnR3YXJlPC9oMz4KPHA+V2hpbGUgdGhlIHNvZnR3YXJlIGxpYnJhcnkgb24gdGhlIE1hYyBwYWxlcyBpbiBjb21wYXJpc29uIHRvIHRoZSBvbmUgb24gV2luZG93cyBpbiB0ZXJtcyBvZiBzaGVlciB2b2x1bWUsIGl0IGRvZXMgaGF2ZSBxdWl0ZSBhIGJpdCBvZiBwb2xpc2guIFRoaXMgcG9saXNoLCBob3dldmVyLCBvZnRlbiBkb2VzbiYjODIxNzt0IGNvbWUgd2l0aG91dCBhIHByaWNlLiBGcmVlIHNvZnR3YXJlIGZvciB0aGUgTWFjIGRvZXMgZXhpc3Qgb3V0IHRoZXJlLCBidXQgaXQmIzgyMTc7cyBub3QgbmVhcmx5IGFzIHdpZGVseSBhdmFpbGFibGUgYXMgeW91JiM4MjE3O3JlIHByb2JhYmx5IHVzZWQgdG8gd2l0aCBXaW5kb3dzLiBUaGF0IGJlaW5nIHNhaWQsIHRoZXJlIGFyZSBxdWl0ZSBhIGZldyBhcHBzLCBib3RoIGZyZWUgYW5kIHBhaWQsIHRoYXQgeW91IHNob3VsZCBpbnN0YWxsIG9uIHlvdXIgTWFjIHRvIG1ha2UgdGhlIGV4cGVyaWVuY2UgbXVjaCBtb3JlIGVuam95YWJsZSBhbmQgcHJvZHVjdGl2ZS4gSGVyZSBhcmUgYSBmZXcgdG8gZ2V0IHlvdSBzdGFydGVkOjwvcD4KPGg0Pk11bHRpbWVkaWE8L2g0Pgo8dWw+CjxsaT48YSBocmVmPSJodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vZG93bmxvYWRzL2RldGFpbHMuYXNweD9GYW1pbHlJZD05MTVEODc0RC1ENzQ3LTQxODAtQTQwMC01RjA2QjFCNUU1NTkmIzAzODtkaXNwbGF5bGFuZz1lbiI+RmxpcDRNYWM8L2E+PGJyIC8+SW5zdGFsbCB0aGUgZnJlZSB2ZXJzaW9uIHRvIHBsYXkgV01WIHdpdGggUXVpY2tUaW1lLjwvbGk+CjxsaT48YSBocmVmPSJodHRwOi8vcGVyaWFuLm9yZy8iPlBlcmlhbjwvYT48YnIgLz5FdmVyeSBjb2RlYyB5b3UmIzgyMTc7bGwgZXZlciBuZWVkIGZvciBRdWlja1RpbWUuPC9saT4KPGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cudmlkZW9sYW4ub3JnL3ZsYy8iPlZMQzwvYT48YnIgLz5UaGUgZGUgZmFjdG8gbWVkaWEgcGxheWVyIGZvciB0aGUgTWFjLiBOb3Qgb25seSBkb2VzIGl0IGVsaW1pbmF0ZSB0aGUgbmVlZCBmb3IgdGhlIHR3byBwaWVjZXMgb2Ygc29mdHdhcmUgbWVudGlvbmVkIGFib3ZlLCBpdCBwcm92aWRlcyBtb3JlIGZlYXR1cmVzIHRoYW4geW91JiM4MjE3O2xsIHByb2JhYmx5IGV2ZXIgY2FyZSB0byB1c2UuIFVzZSBWTEMgaW5zdGVhZCBvZiB0aGUgYnVpbHQtaW4gRFZEIHBsYXllciBhcyB3ZWxsLiBWTEMgaW50ZWdyYXRlcyBuaWNlbHkgd2l0aCBPUyBYLCBhbmQgeW91IGNhbiBldmVuIHVzZSB5b3VyIEFwcGxlIHJlbW90ZSB3aXRoIGl0LiBKdXN0IGRvd25sb2FkIGl0LjwvbGk+CjxsaT48YSBocmVmPSJodHRwOi8vd3d3Lm51bGxyaXZlci5jb20vcHJvZHVjdHMvY29ubmVjdDM2MCI+Q29ubmVjdDM2MDwvYT48YnIgLz5JZiB5b3Ugd2FudCB0byBzdHJlYW0gbW92aWVzLCBwaWN0dXJlcyBhbmQgbXVzaWMgdG8geW91ciBYYm94IDM2MCwgdGhpcyBpcyBhIGdyZWF0IHNvbHV0aW9uIGZvciB0aGUgTWFjOyBzb21lIGNsYWltIGl0IHdvcmtzIGJldHRlciB0aGFuIE1pY3Jvc29mdCYjODIxNztzIGltcGxlbWVudGF0aW9uLjwvbGk+CjxsaT48YSBocmVmPSJodHRwOi8vd3d3LnRyYW5zbWlzc2lvbmJ0LmNvbS8iPlRyYW5zbWlzc2lvbjwvYT48YnIgLz5BIHZlcnkgbGlnaHR3ZWlnaHQgYW5kIHNvbGlkIGJpdCB0b3JyZW50IGNsaWVudCBmb3IgdGhlIE1hYy4gSXQgZml0cyBpbiB2ZXJ5IHdlbGwgd2l0aCBPUyBYLCBzdHlsZS13aXNlLjwvbGk+CjxsaT48YSBocmVmPSJodHRwOi8vZ2V0c29uZ2JpcmQuY29tLyI+U29uZ2JpcmQ8L2E+PGJyIC8+Tm90IGV2ZXJ5b25lIHdhbnRzIHRvIHVzZSBpVHVuZXMgdG8gbWFuYWdlIHRoZWlyIG11c2ljIGNvbGxlY3Rpb24uIE1hbnkgcHJlZmVyIFNvbmdiaXJkLCB0aGUgbXVjaC1sb3ZlZCBvcGVuLXNvdXJjZSBhbHRlcm5hdGl2ZS48L2xpPgo8L3VsPgo8aDQ+U3lzdGVtIGFuZCBHZW5lcmFsIFB1cnBvc2U8L2g0Pgo8cD48aW1nIHNyYz0iaHR0cDovL21lZGlhMi5zbWFzaGluZ21hZ2F6aW5lLmNvbS9pbWFnZXMvbWFjLWhhY2tzL1BpY3R1cmUgMTkucG5nIiB3aWR0aD0iNTAwIiBoZWlnaHQ9IjIxMCIgYWx0PSJQaWN0dXJlIDE5Ij48L3A+Cjx1bD4KPGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cuZ29vZ2xlLmNvbS91cmw/c2E9dCYjMDM4O3NvdXJjZT13ZWImIzAzODtjdD1yZXMmIzAzODtjZD0xJiMwMzg7dXJsPWh0dHAlM0ElMkYlMkZncm93bC5pbmZvJTJGJiMwMzg7ZWk9S0hRSVN1dkRHdVN3dGdlWXJKaWZCdyYjMDM4O3VzZz1BRlFqQ05FR3B1TEh4b01pcWdDZFRhQkh4MFN4ck5aWjF3JiMwMzg7c2lnMj14eXJ1Ry1KV0gyUDdadjNyT0Y0WXlRIj5Hcm93bDwvYT48YnIgLz5JZiBoYXZpbmcgdW5pZm9ybSBzeXN0ZW0td2lkZSBub3RpZmljYXRpb25zIGZvciBhbGwgeW91ciBhcHBsaWNhdGlvbnMgc291bmRzIGludHJpZ3VpbmcsIHlvdSYjODIxNztsbCB3YW50IHRvIGNoZWNrIG91dCBHcm93bC4gSXQgd29ya3Mgd2l0aCBhIHZhc3QgYXJyYXkgb2Ygc29mdHdhcmUgYW5kIGlzIGV4dHJlbWVseSBjdXN0b21pemFibGUuIFNvbWUgbm90aWZpY2F0aW9ucyB5b3UmIzgyMTc7bGwgcmVjZWl2ZSBsZXQgeW91IGtub3cgd2hlbiBuZXcgZW1haWwsIGluc3RhbnQgbWVzc2FnZXMgb3IgVHdpdHRlciBtZXNzYWdlcyBhcnJpdmUsIHdoZW4geW91ciBkb3dubG9hZHMgYXJlIGNvbXBsZXRlLCB3aGVuIHlvdXIgY29tcHV0ZXIgaGFzIGJlZW4gdW5wbHVnZ2VkIGFuZCB3aGVuIGEgbmV3IHNvbmcgaXMgcGxheWluZyBvbiBMYXN0LmZtIChjb21wbGV0ZSB3aXRoIGFydGlzdCBhbmQgZGV0YWlscykuIEdyb3dsIGhhcyBhIG15cmlhZCBvZiB1c2VmdWwgcGx1Zy1pbnMgYW5kIHVzZXMuIFRha2UsIGZvciBpbnN0YW5jZSwgdGhlIGdyb3dsIG5vdGlmaWNhdGlvbiB0aGF0IHRlbGxzIHlvdSB3aGVuIHlvdXIgdGVzdHMgaGF2ZSBwYXNzZWQgaW4geW91ciBXZWIgYXBwbGljYXRpb246IGEgbXVzdCBmb3IgYW55IE1hYyB1c2VyLjwvbGk+CjxsaT48YSBocmVmPSJodHRwOi8vd3d3LnZlcnNpb250cmFja2VyLmNvbS9keW4vbW9yZWluZm8vbWFjb3N4LzI5NDc4Ij5VbnBsdWdnZWQ8L2E+PGJyIC8+aHR0cDovL3VucGx1Z2dlZC5lbi5zb2Z0b25pYy5jb20vbWFjL2Rvd25sb2FkICh1bnBsdWdnZWQpPC9saT4KPGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cuYmxhY2t0cmVlLmNvbS8iPlF1aWNrc2lsdmVyPC9hPjxiciAvPldoaWxlIE9TIFggZG9lcyBoYXZlIHRoZSAmIzgyMjA7U3BvdGxpZ2h0JiM4MjIxOyBmZWF0dXJlLCB3aGljaCBhbGxvd3MgeW91IHRvIHF1aWNrbHkgZmluZCBmaWxlcyBhbmQgbGF1bmNoIGFwcGxpY2F0aW9ucywgaXQgcGFsZXMgaW4gY29tcGFyaXNvbiB0byB0aGUgc25hcHBpbmVzcyBhbmQgY3VzdG9taXphYmlsaXR5IG9mIHRoZSBhcHBsaWNhdGlvbi1sYXVuY2hlciBRdWlja3NpbHZlciwgd2hpY2ggaXMgdmVyeSBzaW1pbGFyIHRvIEZpcmVmb3gmIzgyMTc7cyBVYmlxdWl0eS4gTXVjaCBsaWtlIEdyb3dsLCB5b3UgY2FuIGluc3RhbGwgdG9ucyBvZiB1c2VmdWwgcGx1Z2lucyB0byB0YWlsb3IgdGhlIGV4cGVyaWVuY2UgdG8geW91ciBuZWVkcy4gV2hlbiB5b3Ugc3RhcnQgdXNpbmcgUXVpY2tzaWx2ZXIgcmVndWxhcmx5LCB5b3UmIzgyMTc7bGwgZmluZCB5b3Vyc2VsZiBnb2luZyB0byB0aGUgRG9jayBsZXNzIGFuZCBsZXNzIHRvIGxhdW5jaCBhbmQgaW50ZXJhY3Qgd2l0aCB5b3VyIGFwcGxpY2F0aW9ucy4gSXQmIzgyMTc7cyBsaWdodGVuaW5nIGZhc3QgYW5kIHF1aXRlIHBvd2VyZnVsLiBJbWFnaW5lIGhpdHRpbmcgYSBrZXlib2FyZCBzaG9ydGN1dCwgdHlwaW5nICYjODIyMDtlbWFpbCwmIzgyMjE7ICYjODIyMDt0YWIsJiM4MjIxOyAmIzgyMjA7Y29tcG9zZSwmIzgyMjE7IDxjb250YWN0IG5hbWU+LCA8bWVzc2FnZT4gYW5kICYjODIyMDtlbnRlciYjODIyMTsgdG8gc2VuZCBhIHF1aWNrIGVtYWlsIHRvIHNvbWVib2R5LiBBbm90aGVyIG11c3QgaGF2ZS48L2xpPgo8bGk+PGEgaHJlZj0iaHR0cDovL2ZsdWlkYXBwLmNvbS8iPkZsdWlkPC9hPjxiciAvPklmIHlvdSYjODIxNztyZSBhbnl0aGluZyBsaWtlIG1lLCB5b3Ugc3BlbmQgYSBsb3Qgb2YgeW91ciBjb21wdXRlciB0aW1lIGludGVyYWN0aW5nIHdpdGggV2ViIGFwcGxpY2F0aW9ucyByYXRoZXIgdGhhbiBjbGllbnQtc2lkZSBhcHBsaWNhdGlvbnMuIFlvdSBtYXkgbWlzcyB0aGUgbmVhdG5lc3Mgb2YgYXBwbGljYXRpb25zIGV4aXN0aW5nIGluZGVwZW5kZW50bHkgb2YgeW91ciBXZWIgYnJvd3NlciwgdG9vLiBJZiB5b3UgZG8sIHRoZW4gRmx1aWQgaXMgdGhlIHNvbHV0aW9uLiBJdCB0YWtlcyBhbnkgV2ViIHBhZ2UgeW91IHNwZWNpZnkgYW5kIGNvbnRhaW5zIGl0IHdpdGhpbiBpdHMgb3duIE1hYyBhcHBsaWNhdGlvbiwgY29tcGxldGUgd2l0aCBpY29uIGFuZCB3aW5kb3dpbmcgcHJlZmVyZW5jZXMuIEltYWdpbmUgaGF2aW5nIGEgZGVkaWNhdGVkIGFwcCBmb3IgeW91ciBHb29nbGUgZG9jdW1lbnRzLCBGYWNlYm9vaywgeW91ciBmYXZvcml0ZSBUd2l0dGVyIGNsaWVudCwgeW91ciBXZWIgYW5hbHl0aWNzIGFuZCBtb3JlLiBJdCBkcmF3cyBvbiB0aGUgc2FtZSBpZGVhIHRoYXQgQWRvYmUgaXMgcHVzaGluZyB3aXRoIEFpci4gRmx1aWQgaXMgYXMgZXh0ZW5zaWJsZSBhbmQgY3VzdG9taXphYmxlIGFzIEdyb3dsIGFuZCBRdWlja3NpbHZlci48L2xpPgo8bGk+PGEgaHJlZj0iaHR0cDovL3dha2FiYS5jMy5jeC9zL2FwcHMvdW5hcmNoaXZlci5odG1sIj5UaGUgVW5hcmNoaXZlcjwvYT48YnIgLz5Zb3UmIzgyMTc7cmUgZ29pbmcgdG8gd2FudCBhIHByb2dyYW0gdGhhdCBjYW4gaGFuZGxlIFN0dWZmSXQsIFJBUiwgWklQIGFuZCBvdGhlciBjb21wcmVzc2lvbiBmaWxlIHR5cGVzIHdpdGggZWFzZSwgYW5kIHRoZSBVbmFyY2hpdmVyIGlzIGl0LiBGcmVlIGFuZCBzdHJhaWdodGZvcndhcmQuPC9saT4KPGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cuZWlkYWMuZGUvIj5zbWNGYW5Db250cm9sPC9hPjxiciAvPk1hY3MgdGVuZCB0byBiZSBhIGJpdCBtb3JlIG9mIGEgd2FsbGVkIGdhcmRlbiB0aGFuIG90aGVyIGNvbXB1dGVycywgYnV0IHRoYXQgZG9lc24mIzgyMTc7dCBtZWFuIHRoZXkgaGF2ZSB0byBiZS4gV2l0aCB0aGUgcmlnaHQgYW1vdW50IG9mIHJlc2VhcmNoLCB5b3UgY2FuIHVzdWFsbHkgZmluZCBhIHBpZWNlIG9mIHNvZnR3YXJlIG9yIHRlcm1pbmFsIGhhY2sgdGhhdCBiZW5kcyB0aGUgTWFjIHRvIHlvdXIgd2lsbC4gc21jRmFuQ29udHJvbCBpcyBvbmUgc3VjaCBhcHBsaWNhdGlvbiwgbWFkZSBmb3IgdGhvc2Ugd2hvIHdhbnQgdG8gY29udHJvbCBqdXN0IGhvdyBob3QgdGhlaXIgbGFwdG9wcyBnZXQuPC9saT4KPGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cuZ29vZ2xlLmNvbS91cmw/c2E9dCYjMDM4O3NvdXJjZT13ZWImIzAzODtjdD1yZXMmIzAzODtjZD0xJiMwMzg7dXJsPWh0dHAlM0ElMkYlMkZ3d3cuYm9tYmljaC5jb20lMkZzb2Z0d2FyZSUyRmNjYy5odG1sJiMwMzg7ZWk9dW5RSVN0dkZHNUNtTS1Uei1hSUQmIzAzODt1c2c9QUZRakNOSFpTMDQzbVg3TTJDX0k2ZjM1RlZMWEkyRHBRQSYjMDM4O3NpZzI9eWJwdnZjaDB2RUpJblRUZ1dyZVNuZyI+Q2FyYm9uIENvcHkgQ2xvbmVyPC9hPjxiciAvPklmIHlvdSBldmVyIG5lZWQgdG8gdHJhbnNmZXIgeW91ciBoYXJkIGRyaXZlIHRvIGFub3RoZXIgbWFjaGluZSwgYW5kIHlvdSB3aWxsLCBDYXJib24gQ29weSBDbG9uZXIgaXMgdHJ1bHkgdGhlIGJlc3Qgc29sdXRpb24gdG8gdGhlIHByb2JsZW0uIEl0JiM4MjE3O3Mgcm9jayBzb2xpZCwgc2ltcGxlIHRvIHVzZSBhbmQgbWFrZXMgdGhlIHdob2xlIHByb2Nlc3MgZXh0cmVtZWx5IHBhaW4gZnJlZS48L2xpPgo8L3VsPgo8aDQ+Q29tbXVuaWNhdGlvbnM8L2g0Pgo8dWw+CjxsaT48YSBocmVmPSJodHRwOi8vd3d3Lmdvb2dsZS5jb20vdXJsP3E9aHR0cDovL2FkaXVteC5jb20vJiMwMzg7ZWk9elhRSVNxU0JCNWZJdGdldV9NV1hCdyYjMDM4O3NhPVgmIzAzODtvaT1zcGVsbG1lbGVvbl9yZXN1bHQmIzAzODtyZXNudW09MSYjMDM4O2N0PXJlc3VsdCYjMDM4O3VzZz1BRlFqQ05FM1FBNmVFbWljczVMd1QzYl95dzNoTEd0X3NnIj5BZGl1bTwvYT48YnIgLz5BZGl1bSBpcyB0aGUgZGUgZmFjdG8gY2hhdCBjbGllbnQgZm9yIHRoZSBtYWpvcml0eSBvZiBoaWdoLWVuZCBNYWMgdXNlcnMgb3V0IHRoZXJlLiBJdCBjb3ZlcnMgbW9yZSBuZXR3b3JrcyB0aGFuIGFyZSB3b3J0aCBsaXN0aW5nIGhlcmUuIFRoaXMgaXMgYW5vdGhlciBtdXN0LWhhdmUgYXBwLjwvbGk+CjxsaT48YSBocmVmPSJodHRwOi8vd3d3Lmdvb2dsZS5jb20vdXJsP3NhPXQmIzAzODtzb3VyY2U9d2ViJiMwMzg7Y3Q9cmVzJiMwMzg7Y2Q9MSYjMDM4O3VybD1odHRwJTNBJTJGJTJGY29sbG9xdXkuaW5mbyUyRiYjMDM4O2VpPTVuUUlTcXpaTU1PRXR3ZmdyS21CQncmIzAzODt1c2c9QUZRakNORmhKbkxDa2RMX2tBSTdTT0hYUmk3T0tua2xYdyYjMDM4O3NpZzI9NXlaYnNReVZENi1CSzdEbGhSYVlrZyI+Q29sbG9xdXk8L2E+PGJyIC8+UHJvYmFibHkgdGhlIGJlc3QgSVJDIGNsaWVudCBmb3IgdGhlIE1hYy4gV2VsbCBkZXNpZ25lZCBhbmQgZXh0cmVtZWx5IGV4dGVuc2libGUuPC9saT4KPGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cubW96aWxsYW1lc3NhZ2luZy5jb20vZW4tVVMvdGh1bmRlcmJpcmQvIj5UaHVuZGVyYmlyZDwvYT48YnIgLz5BIGdyZWF0IGFsdGVybmF0aXZlIHRvIHRoZSBkZWZhdWx0IE1haWwgYXBwbGljYXRpb24uPC9saT4KPC91bD4KPGg0PlByb2R1Y3Rpdml0eTwvaDQ+Cjx1bD4KPGxpPjxhIGhyZWY9Imh0dHA6Ly8lMjB3d3cuZ2ltcC5vcmcvIj5HaW1wPC9hPjxiciAvPkJlY2F1c2UgdGhlIE1hYyBkb2VzbiYjODIxNzt0IGNvbWUgd2l0aCBidWlsdC1pbiBpbWFnZSBlZGl0aW5nIHNvZnR3YXJlIG9mIGFueSBraW5kLCBHaW1wLCB0aGUgb3Blbi1zb3VyY2UgYWx0ZXJuYXRpdmUgdG8gUGhvdG9zaG9wLCBpcyBhIGhhbmR5IGluc3RhbGwuPC9saT4KPGxpPjxhIGhyZWY9Imh0dHA6Ly9tYWNyb21hdGVzLmNvbS8iPlRleHRtYXRlPC9hPjxiciAvPlByb2JhYmx5IHRoZSBtb3N0IHBvcHVsYXIgdGV4dCBlZGl0b3IgZm9yIHRoZSBNYWMuIEl0JiM4MjE3O3MgYSBoZWZ0eSAkNTAgYnV0IHdvcnRoIGV2ZXJ5IHBlbm55LjwvbGk+CjxsaT48YSBocmVmPSJodHRwOi8vd3d3Lm9tei1zb2Z0d2FyZS5kZS9za2V0Y2hib3gvIj5Ta2V0Y2hib3g8L2E+PGJyIC8+QW4gaW1wcm92ZW1lbnQgdG8gT1MgWCYjODIxNztzIFN0aWNraWVzLjwvbGk+CjwvdWw+CjxoMz5Db25jbHVzaW9uPC9oMz4KPHA+U28sIHRoZXJlIHlvdSBoYXZlIGl0LCBzb21lIGNvbmZpZ3VyYXRpb25zLCBoYWNrcyBhbmQgYXBwbGljYXRpb25zIHRoYXQgd2lsbCBtYWtlIHlvdXIgdHJhbnNpdGlvbiBlYXNpZXIuIEFzIHlvdSBtYWtlIHlvdXIgd2F5IG9uIHlvdXIgam91cm5leSBzd2l0Y2hpbmcgb3ZlciwgcmVtZW1iZXIgdG8gc2VlayBvdXQgb3RoZXIgTWFjIHVzZXJzLCBzcGVjaWZpY2FsbHkgb3RoZXIgc3dpdGNoZXJzLCB3aGVuIHlvdSBoYXZlIHF1ZXN0aW9ucyBvciBuZWVkIGFkdmljZS4gQW5kIGFzIGFsd2F5cywgY2hlY2sgU21hc2hpbmcgTWFnYXppbmUgcmVndWxhcmx5IGZvciBtb3JlIGhlbGZwdWwgTWFjIGd1aWRlcywgYXJ0aWNsZXMgYW5kIHJlc291cmNlcy48L3A+CjxwPjxlbT48YSBocmVmPSJodHRwOi8vbnV0dGVyc21hcmsuY29tIj5NYXJrIE51dHRlcjwvYT4gcnVucyBhIFdlYiBkZXZlbG9wbWVudCBzaG9wIGluIE1pbm5lc290YS4gWW91IGNhbiBmb2xsb3cgaGltIG9uIDxhIGhyZWY9Imh0dHA6Ly90d2l0dGVyLmNvbS9tYXJrbnV0dGVyIj5Ud2l0dGVyPC9hPiwgd2hlcmUgaGUgb2NjYXNpb25hbGx5IHNheXMgc29tZXRoaW5nIHdvcnRod2hpbGUuPC9lbT48L3A+CjxwPjxlbT4oYWwpPC9lbT48L3A+Cgo8IS0tIGdvb2dsZV9hZF9zZWN0aW9uX2VuZCAtLT4KPGhyIC8+DQoNCjxwPjxzbWFsbD7CqSBNYXJrIE51dHRlciBmb3IgPGEgaHJlZj0iaHR0cDovL3d3dy5zbWFzaGluZ21hZ2F6aW5lLmNvbSI+U21hc2hpbmcgTWFnYXppbmU8L2E+LCAyMDA5LiB8DQo8YSBocmVmPSJodHRwOi8vd3d3LnNtYXNoaW5nbWFnYXppbmUuY29tLzIwMDkvMDYvMDQvMzAtbXVzdC1oYXZlLXR3ZWFrcy1mb3IteW91ci1tYWMvIj5QZXJtYWxpbms8L2E+IHwgDQo8YSBocmVmPSJodHRwOi8vd3d3LnNtYXNoaW5nbWFnYXppbmUuY29tLzIwMDkvMDYvMDQvMzAtbXVzdC1oYXZlLXR3ZWFrcy1mb3IteW91ci1tYWMvI2NvbW1lbnRzIj4xMTUgY29tbWVudHM8L2E+IHwgDQo8YSB0aXRsZT0iQm9va21hcmsgaW4gZGVsLmljaW8udXMiIGhyZWY9Imh0dHA6Ly9kZWwuaWNpby51cy9wb3N0P3VybD1odHRwOi8vd3d3LnNtYXNoaW5nbWFnYXppbmUuY29tLzIwMDkvMDYvMDQvMzAtbXVzdC1oYXZlLXR3ZWFrcy1mb3IteW91ci1tYWMvJnRpdGxlPTMwIE11c3QtSGF2ZSBUd2Vha3MgRm9yIFlvdXIgTWFjIj5BZGQgdG8gZGVsLmljaW8udXM8L2E+IHwgPGEgdGl0bGU9IkJvb2ttYXJrIGluIERpZ2ciIGhyZWY9Imh0dHA6Ly9kaWdnLmNvbS9zdWJtaXQ/cGhhc2U9MiZ1cmw9aHR0cDovL3d3dy5zbWFzaGluZ21hZ2F6aW5lLmNvbS8yMDA5LzA2LzA0LzMwLW11c3QtaGF2ZS10d2Vha3MtZm9yLXlvdXItbWFjLyI+RGlnZyB0aGlzPC9hPiB8IDxhIHRpdGxlPSJTdHVtYmxlIG9uIFN0dW1ibGVVcG9uIiBocmVmPSJodHRwOi8vd3d3LnN0dW1ibGV1cG9uLmNvbS9zdWJtaXQ/dXJsPWh0dHA6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20vMjAwOS8wNi8wNC8zMC1tdXN0LWhhdmUtdHdlYWtzLWZvci15b3VyLW1hYy8iPlN0dW1ibGUgb24gU3R1bWJsZVVwb24hPC9hPiB8IDxhIHRpdGxlPSJUd2VldCB1cyEiIGhyZWY9Imh0dHA6Ly90d2l0dGVyLmNvbS9ob21lP3N0YXR1cz1AdHdlZXRtZW1lJTIwQHNtYXNoaW5nbWFnJTIwUmVhZGluZyUyMCczMCBNdXN0LUhhdmUgVHdlYWtzIEZvciBZb3VyIE1hYycgaHR0cDovL3d3dy5zbWFzaGluZ21hZ2F6aW5lLmNvbS8yMDA5LzA2LzA0LzMwLW11c3QtaGF2ZS10d2Vha3MtZm9yLXlvdXItbWFjLyI+VHdlZXQgaXQhPC9hPiB8IDxhIHRpdGxlPSJCb29rbWFyayBpbiBSZWRkaXQiIGhyZWY9Imh0dHA6Ly9yZWRkaXQuY29tL3N1Ym1pdD91cmw9aHR0cDovL3d3dy5zbWFzaGluZ21hZ2F6aW5lLmNvbS8yMDA5LzA2LzA0LzMwLW11c3QtaGF2ZS10d2Vha3MtZm9yLXlvdXItbWFjLyI+U3VibWl0IHRvIFJlZGRpdDwvYT4gfCA8YSBocmVmPSJodHRwOi8vZm9ydW0uc21hc2hpbmdtYWdhemluZS5jb20vIj5Gb3J1bSBTbWFzaGluZyBNYWdhemluZTwvYT4NCg0KPGJyLz4NClBvc3QgdGFnczogPGEgaHJlZj0iaHR0cDovL3d3dy5zbWFzaGluZ21hZ2F6aW5lLmNvbS90YWcvYXBwbGUvIiByZWw9InRhZyI+YXBwbGU8L2E+LCA8YSBocmVmPSJodHRwOi8vd3d3LnNtYXNoaW5nbWFnYXppbmUuY29tL3RhZy9hcHBsaWNhdGlvbnMvIiByZWw9InRhZyI+YXBwbGljYXRpb25zPC9hPiwgPGEgaHJlZj0iaHR0cDovL3d3dy5zbWFzaGluZ21hZ2F6aW5lLmNvbS90YWcvY29uZmlndXJhdGlvbnMvIiByZWw9InRhZyI+Y29uZmlndXJhdGlvbnM8L2E+LCA8YSBocmVmPSJodHRwOi8vd3d3LnNtYXNoaW5nbWFnYXppbmUuY29tL3RhZy9tYWMvIiByZWw9InRhZyI+bWFjPC9hPjxici8+DQo8L3NtYWxsPjwvcD4iO3M6NzoiYXR0cmlicyI7YToyOntzOjA6IiI7YToxOntzOjQ6InR5cGUiO3M6NDoiaHRtbCI7fXM6MzY6Imh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSI7YToxOntzOjQ6ImJhc2UiO3M6NzY6Imh0dHA6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20vMjAwOS8wNi8wNC8zMC1tdXN0LWhhdmUtdHdlYWtzLWZvci15b3VyLW1hYy8iO319czo4OiJ4bWxfYmFzZSI7czo3NjoiaHR0cDovL3d3dy5zbWFzaGluZ21hZ2F6aW5lLmNvbS8yMDA5LzA2LzA0LzMwLW11c3QtaGF2ZS10d2Vha3MtZm9yLXlvdXItbWFjLyI7czoxNzoieG1sX2Jhc2VfZXhwbGljaXQiO2I6MTtzOjg6InhtbF9sYW5nIjtzOjI6ImVuIjt9fX1zOjM4OiJodHRwOi8vcHVybC5vcmcvc3luZGljYXRpb24vdGhyZWFkLzEuMCI7YToxOntzOjU6InRvdGFsIjthOjE6e2k6MDthOjU6e3M6NDoiZGF0YSI7czozOiIxMTUiO3M6NzoiYXR0cmlicyI7YTowOnt9czo4OiJ4bWxfYmFzZSI7czo0MzoiaHR0cDovL3d3dy5zbWFzaGluZ21hZ2F6aW5lLmNvbS93cC1hdG9tLnBocCI7czoxNzoieG1sX2Jhc2VfZXhwbGljaXQiO2I6MTtzOjg6InhtbF9sYW5nIjtzOjI6ImVuIjt9fX19fWk6NDthOjY6e3M6NDoiZGF0YSI7czozNzoiCgkJCgkJCgkJCgkJCgkJCgkJCgkJCQkKCQkKCQkKCQkKCQkKCSI7czo3OiJhdHRyaWJzIjthOjA6e31zOjg6InhtbF9iYXNlIjtzOjQzOiJodHRwOi8vd3d3LnNtYXNoaW5nbWFnYXppbmUuY29tL3dwLWF0b20ucGhwIjtzOjE3OiJ4bWxfYmFzZV9leHBsaWNpdCI7YjoxO3M6ODoieG1sX2xhbmciO3M6MjoiZW4iO3M6NToiY2hpbGQiO2E6Mjp7czoyNzoiaHR0cDovL3d3dy53My5vcmcvMjAwNS9BdG9tIjthOjk6e3M6NjoiYXV0aG9yIjthOjE6e2k6MDthOjY6e3M6NDoiZGF0YSI7czoxMDoiCgkJCQoJCQkJCSI7czo3OiJhdHRyaWJzIjthOjA6e31zOjg6InhtbF9iYXNlIjtzOjQzOiJodHRwOi8vd3d3LnNtYXNoaW5nbWFnYXppbmUuY29tL3dwLWF0b20ucGhwIjtzOjE3OiJ4bWxfYmFzZV9leHBsaWNpdCI7YjoxO3M6ODoieG1sX2xhbmciO3M6MjoiZW4iO3M6NToiY2hpbGQiO2E6MTp7czoyNzoiaHR0cDovL3d3dy53My5vcmcvMjAwNS9BdG9tIjthOjE6e3M6NDoibmFtZSI7YToxOntpOjA7YTo1OntzOjQ6ImRhdGEiO3M6MTg6IlNtYXNoaW5nIEVkaXRvcmlhbCI7czo3OiJhdHRyaWJzIjthOjA6e31zOjg6InhtbF9iYXNlIjtzOjQzOiJodHRwOi8vd3d3LnNtYXNoaW5nbWFnYXppbmUuY29tL3dwLWF0b20ucGhwIjtzOjE3OiJ4bWxfYmFzZV9leHBsaWNpdCI7YjoxO3M6ODoieG1sX2xhbmciO3M6MjoiZW4iO319fX19fXM6NToidGl0bGUiO2E6MTp7aTowO2E6NTp7czo0OiJkYXRhIjtzOjI4OiI2IEZyZWUgUFNELyhYKUhUTUwtVGVtcGxhdGVzIjtzOjc6ImF0dHJpYnMiO2E6MTp7czowOiIiO2E6MTp7czo0OiJ0eXBlIjtzOjQ6Imh0bWwiO319czo4OiJ4bWxfYmFzZSI7czo0MzoiaHR0cDovL3d3dy5zbWFzaGluZ21hZ2F6aW5lLmNvbS93cC1hdG9tLnBocCI7czoxNzoieG1sX2Jhc2VfZXhwbGljaXQiO2I6MTtzOjg6InhtbF9sYW5nIjtzOjI6ImVuIjt9fXM6NDoibGluayI7YTozOntpOjA7YTo1OntzOjQ6ImRhdGEiO3M6MDoiIjtzOjc6ImF0dHJpYnMiO2E6MTp7czowOiIiO2E6Mzp7czozOiJyZWwiO3M6OToiYWx0ZXJuYXRlIjtzOjQ6InR5cGUiO3M6OToidGV4dC9odG1sIjtzOjQ6ImhyZWYiO3M6Njk6Imh0dHA6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20vMjAwOS8wNi8wNC82LWZyZWUtcHNkeGh0bWwtdGVtcGxhdGVzLyI7fX1zOjg6InhtbF9iYXNlIjtzOjQzOiJodHRwOi8vd3d3LnNtYXNoaW5nbWFnYXppbmUuY29tL3dwLWF0b20ucGhwIjtzOjE3OiJ4bWxfYmFzZV9leHBsaWNpdCI7YjoxO3M6ODoieG1sX2xhbmciO3M6MjoiZW4iO31pOjE7YTo1OntzOjQ6ImRhdGEiO3M6MDoiIjtzOjc6ImF0dHJpYnMiO2E6Mjp7czowOiIiO2E6Mzp7czozOiJyZWwiO3M6NzoicmVwbGllcyI7czo0OiJ0eXBlIjtzOjk6InRleHQvaHRtbCI7czo0OiJocmVmIjtzOjc4OiJodHRwOi8vd3d3LnNtYXNoaW5nbWFnYXppbmUuY29tLzIwMDkvMDYvMDQvNi1mcmVlLXBzZHhodG1sLXRlbXBsYXRlcy8jY29tbWVudHMiO31zOjM4OiJodHRwOi8vcHVybC5vcmcvc3luZGljYXRpb24vdGhyZWFkLzEuMCI7YToxOntzOjU6ImNvdW50IjtzOjM6IjE0MSI7fX1zOjg6InhtbF9iYXNlIjtzOjQzOiJodHRwOi8vd3d3LnNtYXNoaW5nbWFnYXppbmUuY29tL3dwLWF0b20ucGhwIjtzOjE3OiJ4bWxfYmFzZV9leHBsaWNpdCI7YjoxO3M6ODoieG1sX2xhbmciO3M6MjoiZW4iO31pOjI7YTo1OntzOjQ6ImRhdGEiO3M6MDoiIjtzOjc6ImF0dHJpYnMiO2E6Mjp7czowOiIiO2E6Mzp7czozOiJyZWwiO3M6NzoicmVwbGllcyI7czo0OiJ0eXBlIjtzOjIwOiJhcHBsaWNhdGlvbi9hdG9tK3htbCI7czo0OiJocmVmIjtzOjc5OiJodHRwOi8vd3d3LnNtYXNoaW5nbWFnYXppbmUuY29tLzIwMDkvMDYvMDQvNi1mcmVlLXBzZHhodG1sLXRlbXBsYXRlcy9mZWVkL2F0b20vIjt9czozODoiaHR0cDovL3B1cmwub3JnL3N5bmRpY2F0aW9uL3RocmVhZC8xLjAiO2E6MTp7czo1OiJjb3VudCI7czozOiIxNDEiO319czo4OiJ4bWxfYmFzZSI7czo0MzoiaHR0cDovL3d3dy5zbWFzaGluZ21hZ2F6aW5lLmNvbS93cC1hdG9tLnBocCI7czoxNzoieG1sX2Jhc2VfZXhwbGljaXQiO2I6MTtzOjg6InhtbF9sYW5nIjtzOjI6ImVuIjt9fXM6MjoiaWQiO2E6MTp7aTowO2E6NTp7czo0OiJkYXRhIjtzOjM5OiJodHRwOi8vd3d3LnNtYXNoaW5nbWFnYXppbmUuY29tLz9wPTc1NjAiO3M6NzoiYXR0cmlicyI7YTowOnt9czo4OiJ4bWxfYmFzZSI7czo0MzoiaHR0cDovL3d3dy5zbWFzaGluZ21hZ2F6aW5lLmNvbS93cC1hdG9tLnBocCI7czoxNzoieG1sX2Jhc2VfZXhwbGljaXQiO2I6MTtzOjg6InhtbF9sYW5nIjtzOjI6ImVuIjt9fXM6NzoidXBkYXRlZCI7YToxOntpOjA7YTo1OntzOjQ6ImRhdGEiO3M6MjA6IjIwMDktMDYtMDRUMTE6MTE6NTFaIjtzOjc6ImF0dHJpYnMiO2E6MDp7fXM6ODoieG1sX2Jhc2UiO3M6NDM6Imh0dHA6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20vd3AtYXRvbS5waHAiO3M6MTc6InhtbF9iYXNlX2V4cGxpY2l0IjtiOjE7czo4OiJ4bWxfbGFuZyI7czoyOiJlbiI7fX1zOjk6InB1Ymxpc2hlZCI7YToxOntpOjA7YTo1OntzOjQ6ImRhdGEiO3M6MjA6IjIwMDktMDYtMDRUMTE6MTE6MzhaIjtzOjc6ImF0dHJpYnMiO2E6MDp7fXM6ODoieG1sX2Jhc2UiO3M6NDM6Imh0dHA6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20vd3AtYXRvbS5waHAiO3M6MTc6InhtbF9iYXNlX2V4cGxpY2l0IjtiOjE7czo4OiJ4bWxfbGFuZyI7czoyOiJlbiI7fX1zOjg6ImNhdGVnb3J5IjthOjY6e2k6MDthOjU6e3M6NDoiZGF0YSI7czowOiIiO3M6NzoiYXR0cmlicyI7YToxOntzOjA6IiI7YToyOntzOjY6InNjaGVtZSI7czozMToiaHR0cDovL3d3dy5zbWFzaGluZ21hZ2F6aW5lLmNvbSI7czo0OiJ0ZXJtIjtzOjg6IkZyZWViaWVzIjt9fXM6ODoieG1sX2Jhc2UiO3M6NDM6Imh0dHA6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20vd3AtYXRvbS5waHAiO3M6MTc6InhtbF9iYXNlX2V4cGxpY2l0IjtiOjE7czo4OiJ4bWxfbGFuZyI7czoyOiJlbiI7fWk6MTthOjU6e3M6NDoiZGF0YSI7czowOiIiO3M6NzoiYXR0cmlicyI7YToxOntzOjA6IiI7YToyOntzOjY6InNjaGVtZSI7czozMToiaHR0cDovL3d3dy5zbWFzaGluZ21hZ2F6aW5lLmNvbSI7czo0OiJ0ZXJtIjtzOjk6ImRvd25sb2FkcyI7fX1zOjg6InhtbF9iYXNlIjtzOjQzOiJodHRwOi8vd3d3LnNtYXNoaW5nbWFnYXppbmUuY29tL3dwLWF0b20ucGhwIjtzOjE3OiJ4bWxfYmFzZV9leHBsaWNpdCI7YjoxO3M6ODoieG1sX2xhbmciO3M6MjoiZW4iO31pOjI7YTo1OntzOjQ6ImRhdGEiO3M6MDoiIjtzOjc6ImF0dHJpYnMiO2E6MTp7czowOiIiO2E6Mjp7czo2OiJzY2hlbWUiO3M6MzE6Imh0dHA6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20iO3M6NDoidGVybSI7czo0OiJmcmVlIjt9fXM6ODoieG1sX2Jhc2UiO3M6NDM6Imh0dHA6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20vd3AtYXRvbS5waHAiO3M6MTc6InhtbF9iYXNlX2V4cGxpY2l0IjtiOjE7czo4OiJ4bWxfbGFuZyI7czoyOiJlbiI7fWk6MzthOjU6e3M6NDoiZGF0YSI7czowOiIiO3M6NzoiYXR0cmlicyI7YToxOntzOjA6IiI7YToyOntzOjY6InNjaGVtZSI7czozMToiaHR0cDovL3d3dy5zbWFzaGluZ21hZ2F6aW5lLmNvbSI7czo0OiJ0ZXJtIjtzOjQ6InBzZHMiO319czo4OiJ4bWxfYmFzZSI7czo0MzoiaHR0cDovL3d3dy5zbWFzaGluZ21hZ2F6aW5lLmNvbS93cC1hdG9tLnBocCI7czoxNzoieG1sX2Jhc2VfZXhwbGljaXQiO2I6MTtzOjg6InhtbF9sYW5nIjtzOjI6ImVuIjt9aTo0O2E6NTp7czo0OiJkYXRhIjtzOjA6IiI7czo3OiJhdHRyaWJzIjthOjE6e3M6MDoiIjthOjI6e3M6Njoic2NoZW1lIjtzOjMxOiJodHRwOi8vd3d3LnNtYXNoaW5nbWFnYXppbmUuY29tIjtzOjQ6InRlcm0iO3M6OToidGVtcGxhdGVzIjt9fXM6ODoieG1sX2Jhc2UiO3M6NDM6Imh0dHA6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20vd3AtYXRvbS5waHAiO3M6MTc6InhtbF9iYXNlX2V4cGxpY2l0IjtiOjE7czo4OiJ4bWxfbGFuZyI7czoyOiJlbiI7fWk6NTthOjU6e3M6NDoiZGF0YSI7czowOiIiO3M6NzoiYXR0cmlicyI7YToxOntzOjA6IiI7YToyOntzOjY6InNjaGVtZSI7czozMToiaHR0cDovL3d3dy5zbWFzaGluZ21hZ2F6aW5lLmNvbSI7czo0OiJ0ZXJtIjtzOjU6InhodG1sIjt9fXM6ODoieG1sX2Jhc2UiO3M6NDM6Imh0dHA6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20vd3AtYXRvbS5waHAiO3M6MTc6InhtbF9iYXNlX2V4cGxpY2l0IjtiOjE7czo4OiJ4bWxfbGFuZyI7czoyOiJlbiI7fX1zOjc6InN1bW1hcnkiO2E6MTp7aTowO2E6NTp7czo0OiJkYXRhIjtzOjE2MDI6IjwhLS0gZmVlZCBiYW5uZXJzIC0tPgo8ZGl2IGNsYXNzPSJnc2Vuc2UiPjxzcGFuIGNsYXNzPSJhbiI+QWR2ZXJ0aXNlbWVudHM8L3NwYW4+PGJyLz4JCgo8YSBocmVmPSJodHRwOi8vYWRzZXJ2ZXIuM2RpZ2l0LmRlL3d3dy9kZWxpdmVyeS9jay5waHA/em9uZWlkPTU2IiB0YXJnZXQ9Il9ibGFuayI+PGltZyBzcmM9Imh0dHA6Ly9hZHNlcnZlci4zZGlnaXQuZGUvd3d3L2RlbGl2ZXJ5L2F2dy5waHA/em9uZWlkPTU2IiBib3JkZXI9IjAiIGFsdD0iIiAvPgk8L2E+Cgo8L2Rpdj48IS0tIDxpbWcgc3JjPSJodHRwOi8vd3d3LnNtYXNoaW5nbWFnYXppbmUuY29tL2ltYWdlcy9wb3N0LXBpY3R1cmVzL3BzZC10ZW1wbGF0ZXMuanBnIiAvPiAtLT48cD48c3Ryb25nPldlIGxvdmUgb3VyIHJlYWRlcnM8L3N0cm9uZz4uIFdlIHJlc3BlY3QgdGhlIGhhcmQgd29yayBvZiBkZXNpZ25lcnMgYW5kIGRldmVsb3BlcnMgYWNyb3NzIHRoZSBnbG9iZS4gQW5kIHdlIGRvIG91ciBiZXN0IHRvIG1ha2UgdGhlIHdlYiBkZXNpZ24gY29tbXVuaXR5IHN0cm9uZ2VyIGFuZCB0aGUgV2ViIGEgbGl0dGxlIGJpdCBwcmV0dGllci4gVGhlcmVmb3JlIHdlIGFzayB0YWxlbnRlZCBhcnRpc3RzIGFuZCBjcmVhdGl2ZSBwcm9mZXNzaW9uYWxzIHRvIHNob3djYXNlIHRoZWlyIHNraWxscyBhbmQgcmVsZWFzZSBzb21ldGhpbmcgdW5pcXVlIGFuZCBiZWF1dGlmdWwgYXMgYSBnaWZ0IHRvIHRoZSBjb21tdW5pdHkuIEFuZCB3aGVuIGRlc2lnbmVycyBhZ3JlZSwgdHJ1bHkgaW1wcmVzc2l2ZSB3b3JrcyBzZWUgdGhlIGxpZ2h0IG9mIGRheS48L3A+DQo8cD48YSBocmVmPSJodHRwOi8vd3d3LnNtYXNoaW5nbWFnYXppbmUuY29tLzIwMDkvMDYvMDQvNi1mcmVlLXBzZHhodG1sLXRlbXBsYXRlcy8iPjxpbWcgc3JjPSJodHRwOi8vODguMTk4LjYwLjE3L2ltYWdlcy94aHRtbC1wc2QtdGVtcGxhdGVzL3NoYXBlLmpwZyIgd2lkdGg9IjUwMCIgaGVpZ2h0PSIzMjciIGFsdD0iU2NyZWVuc2hvdCIgLz48L2E+PC9wPg0KPHA+QSBjb3VwbGUgb2Ygd2Vla3MgYWdvIHdlIHJlbGVhc2VkIDxhIGhyZWY9Imh0dHA6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20vMjAwOS8wNS8wMi9kZWxsaXN0b3JlLWEtZnJlZS1wcm9mZXNzaW9uYWwtY3NzeGh0bWxwc2QtdGVtcGxhdGUvIj5EZWxsaVN0b3JlPC9hPiwgYSBwcm9mZXNzaW9uYWwgQ1NTLyhYKUhUTUwtdGVtcGxhdGUgd2l0aCBQU0Qtc291cmNlcy4gSW4gdGhlIHBvbGwgYW5kIGluIHRoZSBjb21tZW50cyB0byB0aGlzIHBvc3Qgb3VyIHJlYWRlcnMgYXNrZWQgZm9yIG1vcmUgKFgpSFRNTC9DU1MtdGVtcGxhdGUsIHNvIGhlcmUgYXJlIDYgbW9yZSBwcm9mZXNzaW9uYWwgdGVtcGxhdGUgdGhhdCB5b3UgY2FuIHVzZSB3aXRob3V0IGFueSByZXN0cmljdGlvbiBmb3IgeW91ciBwcml2YXRlIG9yIGNvbW1lcmljYWwgcHJvamVjdHMuIFRoZSB0ZW1wbGF0ZSB3ZXJlIGRlc2lnbmVkIGJ5IDxhIGhyZWY9Imh0dHA6Ly93d3cudGVtcGxhdGV3b3JsZC5jb20iPlRlbXBsYXRld29ybGQ8L2E+IGFuZCByZWxlYXNlZCBmb3IgZnJlZSBlc3BlY2lhbGx5IGZvciBTbWFzaGluZyBNYWdhemluZSBhbmQgaXRzIHJlYWRlcnMuPC9wPiI7czo3OiJhdHRyaWJzIjthOjE6e3M6MDoiIjthOjE6e3M6NDoidHlwZSI7czo0OiJodG1sIjt9fXM6ODoieG1sX2Jhc2UiO3M6NDM6Imh0dHA6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20vd3AtYXRvbS5waHAiO3M6MTc6InhtbF9iYXNlX2V4cGxpY2l0IjtiOjE7czo4OiJ4bWxfbGFuZyI7czoyOiJlbiI7fX1zOjc6ImNvbnRlbnQiO2E6MTp7aTowO2E6NTp7czo0OiJkYXRhIjtzOjE0NDczOiIKPCEtLSBnb29nbGVfYWRfc2VjdGlvbl9zdGFydCAtLT4KPHA+PCEtLSBmZWVkIGJhbm5lcnMgLS0+PC9wPgo8ZGl2IGNsYXNzPSJnc2Vuc2UiPjxzcGFuIGNsYXNzPSJhbiI+QWR2ZXJ0aXNlbWVudHM8L3NwYW4+PGJyLz4JPC9wPgo8cD48YSBocmVmPSJodHRwOi8vYWRzZXJ2ZXIuM2RpZ2l0LmRlL3d3dy9kZWxpdmVyeS9jay5waHA/em9uZWlkPTU2IiB0YXJnZXQ9Il9ibGFuayI+PGltZyBzcmM9Imh0dHA6Ly9hZHNlcnZlci4zZGlnaXQuZGUvd3d3L2RlbGl2ZXJ5L2F2dy5waHA/em9uZWlkPTU2IiBib3JkZXI9IjAiIGFsdD0iIiAvPgk8L2E+PC9wPgo8L2Rpdj4KPHA+PHN0cm9uZz5XZSBsb3ZlIG91ciByZWFkZXJzPC9zdHJvbmc+LiBXZSByZXNwZWN0IHRoZSBoYXJkIHdvcmsgb2YgZGVzaWduZXJzIGFuZCBkZXZlbG9wZXJzIGFjcm9zcyB0aGUgZ2xvYmUuIEFuZCB3ZSBkbyBvdXIgYmVzdCB0byBtYWtlIHRoZSB3ZWIgZGVzaWduIGNvbW11bml0eSBzdHJvbmdlciBhbmQgdGhlIFdlYiBhIGxpdHRsZSBiaXQgcHJldHRpZXIuIFRoZXJlZm9yZSB3ZSBhc2sgdGFsZW50ZWQgYXJ0aXN0cyBhbmQgY3JlYXRpdmUgcHJvZmVzc2lvbmFscyB0byBzaG93Y2FzZSB0aGVpciBza2lsbHMgYW5kIHJlbGVhc2Ugc29tZXRoaW5nIHVuaXF1ZSBhbmQgYmVhdXRpZnVsIGFzIGEgZ2lmdCB0byB0aGUgY29tbXVuaXR5LiBBbmQgd2hlbiBkZXNpZ25lcnMgYWdyZWUsIHRydWx5IGltcHJlc3NpdmUgd29ya3Mgc2VlIHRoZSBsaWdodCBvZiBkYXkuPC9wPgo8cD5BIGNvdXBsZSBvZiB3ZWVrcyBhZ28gd2UgcmVsZWFzZWQgPGEgaHJlZj0iaHR0cDovL3d3dy5zbWFzaGluZ21hZ2F6aW5lLmNvbS8yMDA5LzA1LzAyL2RlbGxpc3RvcmUtYS1mcmVlLXByb2Zlc3Npb25hbC1jc3N4aHRtbHBzZC10ZW1wbGF0ZS8iPkRlbGxpU3RvcmU8L2E+LCBhIHByb2Zlc3Npb25hbCBDU1MvKFgpSFRNTC10ZW1wbGF0ZSB3aXRoIFBTRC1zb3VyY2VzLiBJbiB0aGUgcG9sbCBhbmQgaW4gdGhlIGNvbW1lbnRzIHRvIHRoaXMgcG9zdCBvdXIgcmVhZGVycyBhc2tlZCBmb3IgbW9yZSAoWClIVE1ML0NTUy10ZW1wbGF0ZSwgc28gaGVyZSBhcmUgNiBtb3JlIHByb2Zlc3Npb25hbCB0ZW1wbGF0ZSB0aGF0IHlvdSBjYW4gdXNlIHdpdGhvdXQgYW55IHJlc3RyaWN0aW9uIGZvciB5b3VyIHByaXZhdGUgb3IgY29tbWVyaWNhbCBwcm9qZWN0cy4gVGhlIHRlbXBsYXRlIHdlcmUgZGVzaWduZWQgYnkgPGEgaHJlZj0iaHR0cDovL3d3dy50ZW1wbGF0ZXdvcmxkLmNvbSI+VGVtcGxhdGV3b3JsZDwvYT4gYW5kIHJlbGVhc2VkIGZvciBmcmVlIGVzcGVjaWFsbHkgZm9yIFNtYXNoaW5nIE1hZ2F6aW5lIGFuZCBpdHMgcmVhZGVycy48L3A+CjxoND5Eb3dubG9hZCBhbmQgdXNlIHRoZSB0ZW1wbGF0ZXMgZm9yIGZyZWUhPC9oND4KPHA+VGhlIHRoZW1lcyBjYW4gYmUgdXNlZCBhbmQgZWRpdGVkIHdpdGhvdXQgYW55IHJlc3RyaWN0aW9ucyBvciBsaW1pdGF0aW9ucy4gRmVlbCBmcmVlIHRvIG1vZGlmeSB0aGUgdGVtcGxhdGVzIGluIHByaXZhdGUgb3IgY29tbWVyY2lhbCBwcm9qZWN0cyAmbmRhc2g7IHRoZSB0ZW1wbGF0ZXMgYXJlIGFic29sdXRlbHkgZnJlZSB0byB1c2UuPC9wPgo8aDM+U2hhcGU8L2gzPgo8cD5Gcm9tIGEgbG9uZyB0aW1lIHdlIGhhdmUgYmVlbiBwbGF5aW5nIHdpdGggdGhlIGlkZWEgb2YgY3JlYXRpbmcgYSBmdXNpb24gZGVzaWduLiBUaGVuIHdlIHRob3VnaHQgd2h5IG5vdCB0cnkgYSBmdXNpb24gYmV0d2VlbiByZXRybyBhbmQgY29udGVtcG9yYXJ5IGRlc2lnbiB0cmVuZHM/IFRodXMgdGhlIOKAmFNoYXBl4oCZIHRlbXBsYXRlIHdhcyBib3JuICZuZGFzaDsgYW4gYXR0ZW1wdCB0byByZWNyZWF0ZSB0aGUgbWFnaWMgb2YgdGhlIDcwcyB3aGlsZSB1c2luZyBhIG1vZGVybiBsb29rLiBGb3IgdGhpcyBwdXJwb3NlIHdlIHVzZWQgdHlwb2dyYXBoeSBhbmQgdGhlIERhaGxpYS9TdW5mbG93ZXIgcmlnaHQgaW4gdGhlIGNlbnRyZSB0byBlbXBoYXNpemUgdGhlIHJldHJvIGxvb2suIFRoZSBjb2xvdXIgd2hlZWwgYmVoaW5kIHRoZSBEYWhsaWEvU3VuZmxvd2VyIGlzIG91ciB2aWV3IG9uIGNoYW5naW5nIHRpbWVzIGFuZCBjb2xvdXIgcHJlZmVyZW5jZXMuIE91ciBsb3ZlIGZvciBuYXR1cmUgc2hvd3MgdGhyb3VnaCB0aGUgZW50aXJlIGRlc2lnbiBhcyB3ZSB1c2VkIGEgbG90IG9mIGdyZWVuIOKAkyBpbiBkaWZmZXJlbnQgc2hhZGVzLCBmbG9yYWwgcGF0dGVybnMgYW5kIGJhbWJvbyB0cmVlcyBpbiB0aGUgaGVhZGVyLiA8L3A+CjxwPlRoYXTigJlzIHdpdGggdGhlIGRlc2lnbi4gQ29taW5nIHRvIHRoZSBwYWdlIGVsZW1lbnRzLCB0aGUgaGVhZGVyIHNlY3Rpb24gc2hvd3MgbGlua3MgdG8gOCBwYWdlcywgYSByZWdpc3RyYXRpb24sIGxvZ2luIGFuZCBib29rbWFya2luZyBsaW5rLiBUaGUgaGVhZGVyIGFsc28gaGFzIGFuIGludGVncmF0ZWQgc2VhcmNoIGZlYXR1cmUuIDwvcD4KPHA+PGEgaHJlZj0iaHR0cDovL2RlbW8udGVtcGxhdGV3b3JsZC5jb20vNTA4LWNoZWNrLzA5My8iPjxpbWcgc3JjPSJodHRwOi8vbWVkaWExLnNtYXNoaW5nbWFnYXppbmUuY29tL2ltYWdlcy94aHRtbC1wc2QtdGVtcGxhdGVzL3NoYXBlLmpwZyIgd2lkdGg9IjUwMCIgaGVpZ2h0PSIzMjciIGFsdD0iU2NyZWVuc2hvdCIgLz48L2E+PC9wPgo8cD48YSBocmVmPSJodHRwOi8vZGVtby50ZW1wbGF0ZXdvcmxkLmNvbS81MDgtY2hlY2svMDkzLyI+PGltZyBzcmM9Imh0dHA6Ly9tZWRpYTEuc21hc2hpbmdtYWdhemluZS5jb20vaW1hZ2VzL3hodG1sLXBzZC10ZW1wbGF0ZXMvU2hhcGUtc21hbGwuanBnIiB3aWR0aD0iNTAwIiBoZWlnaHQ9IjYxOCIgYWx0PSJTY3JlZW5zaG90IiAvPjwvYT48L3A+CjxwPldlIHdhbnRlZCB0byBoYXZlIGEgZGlzdGluY3QgYmFja2dyb3VuZCBjb2xvdXIgZm9yIHRoZSBjb21wYW55IGRlc2NyaXB0aW9uIGFuZCB0aHVzIHVzZWQgYmxhY2sgdG8gbWFrZSBpdCBsb29rIHByb21pbmVudC4gVGhlbiB0aGVyZSBpcyBhIG5ld3Mgc2VjdGlvbiwgYW4gYXdhcmRzIGNvbHVtbiBhbmQgYSBwb3J0Zm9saW8gc2VjdGlvbi4gSWYgeW91IGFyZSBvbmUgb2YgdGhvc2UgZGVzaWduZXJzIHdobyBoYXZlIGp1c3QgdG9vIG1hbnkgZGVzaWducyB0byBzaG93Y2FzZSwgeW91IGNhbiB1cGxvYWQgYXMgbWFueSBkZXNpZ25zIGFzIHlvdSB3YW50IGFzIHdlaGF2ZSBwcm92aWRlZCBhIG51bWJlciBvZiBwYWdlcyBmb3IgaXQuIFRoZSBmb290ZXIgc2hvd3MgbGlua3MgdG8gOCBwYWdlcy4gPC9wPgo8cD5UaGUgdGVtcGxhdGUgY29kZSBpcyB2YWxpZGF0ZWQgYnkgVzNDIGFuZCBhbHNvIGNvbmZvcm1zIHRvIHNlY3Rpb24gNTA4IG9mIHRoZSBVUyBSZWhhYmlsaXRhdGlvbiBBY3QgZm9yIEFjY2Vzc2libGUgZGVzaWduLiA8L3A+Cjx1bD4KPGxpPjxhIGhyZWY9Imh0dHA6Ly9tZWRpYTIuc21hc2hpbmdtYWdhemluZS5jb20vaW1hZ2VzL3hodG1sLXBzZC10ZW1wbGF0ZXMvU2hhcGUtbGFyZ2UuanBnIj5sYXJnZSBmdWxsc2NyZWVuIHByZXZpZXc8L2E+ICguanBnKTwvbGk+CjxsaT48YSBocmVmPSJodHRwOi8vZGVtby50ZW1wbGF0ZXdvcmxkLmNvbS81MDgtY2hlY2svMDkzLyI+bGl2ZSBkZW1vPC9hPjwvbGk+CjxsaT48YSBocmVmPSJodHRwOi8vbWVkaWEyLnNtYXNoaW5nbWFnYXppbmUuY29tL2ltYWdlcy94aHRtbC1wc2QtdGVtcGxhdGVzL1NoYXBlLXRlbXBsYXRlLnppcCI+ZG93bmxvYWQgdGhlIHRlbXBsYXRlPC9hPiAoLnppcCwgUFNEICsgKFgpSFRNTC9DU1MpPC9saT4KPC91bD4KPGgzPlByb2plY3Rpb24gVGVtcGxhdGU8L2gzPgo8cD5UaGlzIHRlbXBsYXRlIGluY29ycG9yYXRlcyB0aGUgbG9vayBhbmQgZmVlbCBvZiBncmFmZml0aSBhcnQuIFlvdSB3aWxsIHNlZSB0aGUgaGVhZGVyIHNlY3Rpb24gd2l0aCBhIHdhbGwgYXMgdGhlIGJhY2tncm91bmQuIFdlIGhhdmUgdXNlZCBhIGJyaWdodCBzaGFkZSBvZiBncmVlbiBhcyB3ZSB3YW50ZWQgdGhpcyB0ZW1wbGF0ZSB0byBleHVkZSBhIGNlcnRhaW4gYW1vdW50IG9mIGZyZXNobmVzcy4gSWYgeW91IGFyZSB3b25kZXJpbmcgd2hhdCB0aGUgd2hlZWwgaXMgYWxsIGFib3V0LCBpdOKAmXMgYSB3aGVlbCBvZiBsYXRlc3QgcHJvamVjdHMvc2VydmljZXMgYnkgdGhlIGNvbXBhbnkuPC9wPgo8cD48YSBocmVmPSJodHRwOi8vZGVtby50ZW1wbGF0ZXdvcmxkLmNvbS81MDgtY2hlY2svMDk2LyI+PGltZyBzcmM9Imh0dHA6Ly9tZWRpYTEuc21hc2hpbmdtYWdhemluZS5jb20vaW1hZ2VzL3hodG1sLXBzZC10ZW1wbGF0ZXMvcHJvai5qcGciIHdpZHRoPSI1MDIiIGhlaWdodD0iMzI3IiBhbHQ9IlNjcmVlbnNob3QiIC8+PC9hPjwvcD4KPHA+PGEgaHJlZj0iaHR0cDovL2RlbW8udGVtcGxhdGV3b3JsZC5jb20vNTA4LWNoZWNrLzA5Ni8iPjxpbWcgc3JjPSJodHRwOi8vbWVkaWExLnNtYXNoaW5nbWFnYXppbmUuY29tL2ltYWdlcy94aHRtbC1wc2QtdGVtcGxhdGVzL3Byb2plY3Rpb24uanBnIiB3aWR0aD0iNTAwIiBoZWlnaHQ9IjQ5MyIgYWx0PSJTY3JlZW5zaG90IiAvPjwvYT48L3A+CjxwPldlIGhhdmUgZGVsaWJlcmF0ZWx5IHVzZWQgYSBkYXJrIGNvbG91ciBmb3IgdGhlIGZvb3RlciBzbyBhcyB0byBtYWtlIGl0IGNvbnNwaWN1b3VzIGFzIGl0IGNvbnRhaW5zIGltcG9ydGFudCBpbmZvcm1hdGlvbiBsaWtlIGxhdGVzdCBwcm9qZWN0cyB3b3JrZWQgb24gYW5kIHRoZSBjb3JyZXNwb25kaW5nIGNsaWVudCB0ZXN0aW1vbmlhbHMuICBUaGUgdGVtcGxhdGUgY29kZSBpcyB2YWxpZGF0ZWQgYnkgVzNDIGFuZCBhbHNvIGNvbmZvcm1zIHRvIFNlY3Rpb24gNTA4IG9mIHRoZSBVUyBSZWhhYmlsaXRhdGlvbiBBY3QgZm9yIEFjY2Vzc2libGUgZGVzaWduLiA8L3A+Cjx1bD4KPGxpPjxhIGhyZWY9Imh0dHA6Ly9tZWRpYTIuc21hc2hpbmdtYWdhemluZS5jb20vaW1hZ2VzL3hodG1sLXBzZC10ZW1wbGF0ZXMvUHJvamVjdGlvbi1sYXJnZS5qcGciPmxhcmdlIGZ1bGxzY3JlZW4gcHJldmlldzwvYT4gKC5qcGcpPC9saT4KPGxpPjxhIGhyZWY9Imh0dHA6Ly9kZW1vLnRlbXBsYXRld29ybGQuY29tLzUwOC1jaGVjay8wOTYvIj5saXZlIGRlbW88L2E+PC9saT4KPGxpPjxhIGhyZWY9Imh0dHA6Ly9tZWRpYTIuc21hc2hpbmdtYWdhemluZS5jb20vaW1hZ2VzL3hodG1sLXBzZC10ZW1wbGF0ZXMvUHJvamVjdGlvbi10ZW1wbGF0ZS56aXAiPmRvd25sb2FkIHRoZSB0ZW1wbGF0ZTwvYT4gKC56aXAsIFBTRCArIChYKUhUTUwvQ1NTKTwvbGk+CjwvdWw+CjxoMz5BcnRpZmljaWFsIENhc3RpbmcgVGVtcGxhdGU8L2gzPgo8cD5XZSBoYXZlIGFsd2F5cyBzZWVuIHRoZSBnYW1lIG9mIGNoZXNzIGFzIGEgdmVyeSBwb3dlcmZ1bCBnYW1lIHdoaWNoIHJlcXVpcmVzIGltbWVuc2UgaW50ZWxsaWdlbmNlIGFuZCBwcmVzZW5jZSBvZiBtaW5kIG9uIHRoZSBwYXJ0IG9mIHRoZSBwbGF5ZXJzLiBUaGVzZSBsaXR0bGUgZmlndXJlcywgdGhvdWdoIGluYW5pbWF0ZSwgbG9vayB2ZXJ5IHBvd2VyZnVsIGFuZCBteXN0ZXJpb3VzLiBXZSB1c2VkIHRoZWlyIGltYWdlcyBmb3IgdGhlIHRlbXBsYXRlIHRvIHJlcHJlc2VudCB0aGVpciBwb3dlciBhbmQgbXlzdGVyeS4g4oCYQXJ0aWZpY2lhbCBDYXN0aW5n4oCZIHNob3dzIHRoZSBjaGVzcyBwaWVjZXMg4oCYS25pZ2h04oCZIGFuZCDigJhCaXNob3DigJkgc3RhbmRpbmcgYWxvb2YgdG8gc2hvdyB0aGVpciBzb3BoaXN0aWNhdGlvbiBhbmQgYSBzZW5zZSBvZiBteXN0ZXJ5LiA8L3A+CjxwPjxhIGhyZWY9Imh0dHA6Ly9kZW1vLnRlbXBsYXRld29ybGQuY29tLzUwOC1jaGVjay8xMzAvIj48aW1nIHNyYz0iaHR0cDovL21lZGlhMS5zbWFzaGluZ21hZ2F6aW5lLmNvbS9pbWFnZXMveGh0bWwtcHNkLXRlbXBsYXRlcy9hcnQuZ2lmIiB3aWR0aD0iNTAwIiBoZWlnaHQ9IjMyNyIgYWx0PSJTY3JlZW5zaG90IiAvPjwvYT48L3A+CjxwPjxhIGhyZWY9Imh0dHA6Ly9kZW1vLnRlbXBsYXRld29ybGQuY29tLzUwOC1jaGVjay8xMzAvIj48aW1nIHNyYz0iaHR0cDovL21lZGlhMS5zbWFzaGluZ21hZ2F6aW5lLmNvbS9pbWFnZXMveGh0bWwtcHNkLXRlbXBsYXRlcy9BcnRpZmljaWFsIENhc3Rpbmctc21hbGwuanBnIiB3aWR0aD0iNTAwIiBoZWlnaHQ9IjYyMiIgYWx0PSJTY3JlZW5zaG90IiAvPjwvYT48L3A+CjxwPlRoZSB0ZW1wbGF0ZSBjb2RlIGlzIHZhbGlkYXRlZCBieSBXM0MgYW5kIGFsc28gY29uZm9ybXMgdG8gU2VjdGlvbiA1MDggb2YgdGhlIFVTIFJlaGFiaWxpdGF0aW9uIEFjdCBmb3IgQWNjZXNzaWJsZSBkZXNpZ24uPC9wPgo8dWw+CjxsaT48YSBocmVmPSJodHRwOi8vbWVkaWEyLnNtYXNoaW5nbWFnYXppbmUuY29tL2ltYWdlcy94aHRtbC1wc2QtdGVtcGxhdGVzL0FydGlmaWNpYWwgQ2FzdGluZy1sYXJnZS5qcGciPmxhcmdlIGZ1bGxzY3JlZW4gcHJldmlldzwvYT4gKC5qcGcpPC9saT4KPGxpPjxhIGhyZWY9Imh0dHA6Ly9kZW1vLnRlbXBsYXRld29ybGQuY29tLzUwOC1jaGVjay8xMzAvIj5saXZlIGRlbW88L2E+PC9saT4KPGxpPjxhIGhyZWY9Imh0dHA6Ly9tZWRpYTIuc21hc2hpbmdtYWdhemluZS5jb20vaW1hZ2VzL3hodG1sLXBzZC10ZW1wbGF0ZXMvQXJ0aWZpY2lhbCBDYXN0aW5nLXRlbXBsYXRlLnppcCI+ZG93bmxvYWQgdGhlIHRlbXBsYXRlPC9hPiAoLnppcCwgUFNEICsgKFgpSFRNTC9DU1MpPC9saT4KPC91bD4KPGgzPjIgQnJlZWQgVGVtcGxhdGU8L2gzPgo8cD5OYXR1cmUgaGFzIGFsd2F5cyBmYXNjaW5hdGVkIHVzIHdpdGggaXRzIGF0dHJhY3RpdmUgYW5kIHZpYnJhbnQgY29sb3Vycy4gVGhlIG5hdHVyYWwgY29sb3VyIG9mIGZydWl0cyBhbmQgdmVnZXRhYmxlcyBpcyB3aGVyZSB3ZSBkcmV3IGluc3BpcmF0aW9uIGZvciB0aGUgZGVzaWduIG9mIHRoaXMgdGVtcGxhdGUuIFRoZXJlZm9yZSwgeW91IHdpbGwgc2VlIHRoYXQgd2UgaGF2ZSB1c2VkIHRvbWF0byBhbmQga2l3aSB0byBnaXZlIHRoZSB0ZW1wbGF0ZSBhIG5hdHVyYWwgZmVlbC4gV2UgaGF2ZSBwbGFjZWQgdHdvIG9mIHRoZSBtYWluIHNlY3Rpb25zIG9mIHRoZSBwYWdlIOKAkyDigJhXaG8gV2UgQXJl4oCZIGFuZCDigJhMYXRlc3QgRXZlbnRz4oCZIG9uIHRoZXNlIHRvIGRyYXcgdGhlIHJlYWRlcuKAmXMgYXR0ZW50aW9uIHRvIGl0IGluc3RhbnRhbmVvdXNseS4gPC9wPgo8cD5UaGUgcmlnaHQgbmF2aWdhdGlvbiBzaG93cyBsaW5rcyB0byA4IHBhZ2VzLiBXZSBoYXZlIGFsc28gcGxhY2VkIGEgYm94IGFkdmVydGlzaW5nIHRoZSBsYXRlc3Qgam9icyBieSB0aGUgY29tcGFueS4gVGhlbiB0aGVyZSBpcyBhIHNlY3Rpb24gd2hpY2ggc2hvd3MgbGlua3MgdG8gdGhlIGxhdGVzdCBibG9nIHBvc3RzLiBUaGUgbGlua3MgaGF2ZSByb2xsb3ZlciBlZmZlY3QuIFdlIGhhdmUgdXNlZCBzZXBhcmF0ZSBib3hlcyBmb3IgSWRlYXMsIFNpZ24tdXAgYW5kIEJsb2cgc28gYXMgaXQgdG8gZ2l2ZSB0aGVtIGRpc3RpbmN0aXZlLiBKdXN0IGJlbG93IHRoYXQgeW91IHdpbGwgZmluZCBhIG5ld3NsZXR0ZXIgc2lnbi11cCBib3ggdGhyb3VnaCB3aGljaCByZWFkZXJzIGNhbiBzdGF5IHVwZGF0ZWQgb24gdGhlIGxhdGVzdCBhY3Rpdml0aWVzIG9uIHRoZSB3ZWJzaXRlIGFuZCBieSB0aGUgY29tcGFueS4gPC9wPgo8cD48YSBocmVmPSJodHRwOi8vZGVtby50ZW1wbGF0ZXdvcmxkLmNvbS81MDgtY2hlY2svMTA1LyI+PGltZyBzcmM9Imh0dHA6Ly9tZWRpYTEuc21hc2hpbmdtYWdhemluZS5jb20vaW1hZ2VzL3hodG1sLXBzZC10ZW1wbGF0ZXMvYnJlZWQuanBnIiB3aWR0aD0iNTAwIiBoZWlnaHQ9IjMyNyIgYWx0PSJTY3JlZW5zaG90IiAvPjwvYT48L3A+CjxwPjxhIGhyZWY9Imh0dHA6Ly9kZW1vLnRlbXBsYXRld29ybGQuY29tLzUwOC1jaGVjay8xMDUvIj48aW1nIHNyYz0iaHR0cDovL21lZGlhMS5zbWFzaGluZ21hZ2F6aW5lLmNvbS9pbWFnZXMveGh0bWwtcHNkLXRlbXBsYXRlcy8yIGJyZWVkLXNtYWxsLmpwZyIgd2lkdGg9IjUwMCIgaGVpZ2h0PSI1MTAiIGFsdD0iU2NyZWVuc2hvdCIgLz48L2E+PC9wPgo8cD5UaGVyZSBpcyBhIEZlYXR1cmVzIHNlY3Rpb24gd2hpY2ggZW5saXN0cyBhbGwgdGhlIGZlYXR1cmVzIG9mIHRoZSBzZXJ2aWNlcyBieSB0aGUgY29tcGFueS4gQmVzaWRlIHRoYXQgeW91IHdpbGwgYWxzbyBmaW5kIGEgTWVtYmVyIExvZ2luIGJveCBhbmQgYSBjb250YWN0IG51bWJlciBmb3IgcXVpY2sgY29udGFjdC4gVG8gYmFsYW5jZSB0aGUgbGlnaHQgY29sb3VycyB1c2FnZSwgd2UgaGF2ZSB1c2VkIGEgZGFyayBjb2xvdXIgZm9yIHRoZSBmb290ZXIgd2hpY2ggc2hvd3MgOCBsaW5rcy4gPC9wPgo8cD5UaGUgdGVtcGxhdGUgY29kZSBpcyB2YWxpZGF0ZWQgYnkgVzNDIGFuZCBhbHNvIGNvbmZvcm1zIHRvIFNlY3Rpb24gNTA4IG9mIHRoZSBVUyBSZWhhYmlsaXRhdGlvbiBBY3QgZm9yIEFjY2Vzc2libGUgZGVzaWduLjwvcD4KPHVsPgo8bGk+PGEgaHJlZj0iaHR0cDovL21lZGlhMi5zbWFzaGluZ21hZ2F6aW5lLmNvbS9pbWFnZXMveGh0bWwtcHNkLXRlbXBsYXRlcy8yIGJyZWVkLWxhcmdlLmpwZyI+bGFyZ2UgZnVsbHNjcmVlbiBwcmV2aWV3PC9hPiAoLmpwZyk8L2xpPgo8bGk+PGEgaHJlZj0iaHR0cDovL2RlbW8udGVtcGxhdGV3b3JsZC5jb20vNTA4LWNoZWNrLzEwNS8iPmxpdmUgZGVtbzwvYT48L2xpPgo8bGk+PGEgaHJlZj0iaHR0cDovL21lZGlhMi5zbWFzaGluZ21hZ2F6aW5lLmNvbS9pbWFnZXMveGh0bWwtcHNkLXRlbXBsYXRlcy8yIEJyZWVkLXRlbXBsYXRlLnppcCI+ZG93bmxvYWQgdGhlIHRlbXBsYXRlPC9hPiAoLnppcCwgUFNEICsgKFgpSFRNTC9DU1MpPC9saT4KPC91bD4KPGgzPkR1c2t5IFRlbXBsYXRlPC9oMz4KPHA+VGhpcyB0ZW1wbGF0ZSB0aXRsZWQgJiM4MjE2O0R1c2t5JiM4MjE3OyBpcyBhbiBpbGx1c3RyYXRpb24gb2YgdGhlIHR3aWxpZ2h0IHdoaWNoIGlzIG91ciBmYXZvdXJpdGUgdGltZSBvZiB0aGUgZGF5LiBJdCBpcyBhIHRpbWUgd2hlbiB0aGUgc2t5IHNob3dzIGRpZmZlcmVudCBodWVzIG9mIGNvbG91ciBpbiBhIHBlYWNlZnVsIGFuZCBzZXJlbmUgc2V0dGluZy4gVGhlIHNreSBidXN0bGluZyB3aXRoIGNoaXJwaW5nIGJpcmRzIGlzIGFsc28gYSB0cmVhdCB0byB3YXRjaC4gV2UgdHJpZWQgdG8gcmVwbGljYXRlIHRoaXMgYmVhdXRpZnVsIHBhcnQgb2YgdGhlIGRheSBpbiB0aGUgdGVtcGxhdGUgYnkgdXNpbmcgbGlnaHQgc2hhZGVzIG9mIGJsdWUsIGdyZWVuLCBhbmQgeWVsbG93IGFuZCBwaWN0dXJlcyBvZiBiaXJkcyBhbmQgc2t5LjwvcD4KPHA+PGEgaHJlZj0iaHR0cDovL2RlbW8udGVtcGxhdGV3b3JsZC5jb20vNTA4LWNoZWNrLzEyNS8iPjxpbWcgc3JjPSJodHRwOi8vbWVkaWExLnNtYXNoaW5nbWFnYXppbmUuY29tL2ltYWdlcy94aHRtbC1wc2QtdGVtcGxhdGVzL2R1c2suanBnIiB3aWR0aD0iNTAwIiBoZWlnaHQ9IjMyNyIgYWx0PSJTY3JlZW5zaG90IiAvPjwvYT48L3A+CjxwPjxhIGhyZWY9Imh0dHA6Ly9kZW1vLnRlbXBsYXRld29ybGQuY29tLzUwOC1jaGVjay8xMjUvIj48aW1nIHNyYz0iaHR0cDovL21lZGlhMS5zbWFzaGluZ21hZ2F6aW5lLmNvbS9pbWFnZXMveGh0bWwtcHNkLXRlbXBsYXRlcy9EdXNreS1zbWFsbC5qcGciIHdpZHRoPSI1MDAiIGhlaWdodD0iNTA1IiBhbHQ9IlNjcmVlbnNob3QiIC8+PC9hPjwvcD4KPHA+VGhlIGxlZnQgbmF2aWdhdGlvbiBvZiB0aGUgYm9keSBhcmVhIHNob3dzIGEgVXNlciBMb2dpbiBib3ggYW5kIGEgUG9ydGZvbGlvIG9mIHByb2plY3RzLiBUaGUgdXNlcnMgY2FuIGJyb3dzZSB0aHJvdWdoIGFsbCB0aGUgcHJvamVjdHMgYnkgY2xpY2tpbmcgb24gTmV4dC4gVGhlIHJpZ2h0IG5hdmlnYXRpb24gcHJvdmlkZXMgaW5mb3JtYXRpb24gYWJvdXQgbmV3IHNlcnZpY2VzIGFuZCBhIFF1aWNrIENvbnRhY3QgYm94IHdoZXJlaW4gdXNlcnMgY2FuIGVudGVyIHRoZWlyIG5hbWUgYW5kIGVtYWlsIElEIHRvIGNvbnRhY3QgaW5zdGFudGx5LiBUaGUgY2VudHJhbCBhcmVhIHByb3ZpZGVzIGEgYnJpZWYgb3ZlcnZpZXcgb2YgdGhlIGNvbXBhbnkuIDwvcD4KPHA+VGhlIHRlbXBsYXRlIGNvZGUgaXMgdmFsaWRhdGVkIGJ5IFczQyBhbmQgYWxzbyBjb25mb3JtcyB0byBTZWN0aW9uIDUwOCBvZiB0aGUgVVMgUmVoYWJpbGl0YXRpb24gQWN0IGZvciBBY2Nlc3NpYmxlIGRlc2lnbi48L3A+Cjx1bD4KPGxpPjxhIGhyZWY9Imh0dHA6Ly9tZWRpYTIuc21hc2hpbmdtYWdhemluZS5jb20vaW1hZ2VzL3hodG1sLXBzZC10ZW1wbGF0ZXMvRHVza3ktbGFyZ2UuanBnIj5sYXJnZSBmdWxsc2NyZWVuIHByZXZpZXc8L2E+ICguanBnKTwvbGk+CjxsaT48YSBocmVmPSJodHRwOi8vZGVtby50ZW1wbGF0ZXdvcmxkLmNvbS81MDgtY2hlY2svMTI1LyI+bGl2ZSBkZW1vPC9hPjwvbGk+CjxsaT48YSBocmVmPSJodHRwOi8vbWVkaWEyLnNtYXNoaW5nbWFnYXppbmUuY29tL2ltYWdlcy94aHRtbC1wc2QtdGVtcGxhdGVzL0R1c2t5LXRlbXBsYXRlLnppcCI+ZG93bmxvYWQgdGhlIHRlbXBsYXRlPC9hPiAoLnppcCwgUFNEICsgKFgpSFRNTC9DU1MpPC9saT4KPC91bD4KPGgzPlNvbGl0dWRlIFRlbXBsYXRlPC9oMz4KPHA+SW4gdGhpcyBodXN0bGUgYnVzdGxlIG9mIGxpZmUsIHdlIGFyZSBhbHdheXMgc3Vycm91bmRlZCBieSBwZW9wbGUgYW5kIG91ciByZXNwb25zaWJpbGl0aWVzIGFuZCBvZnRlbiBsb25nIGZvciBzb2xpdHVkZS4gVGhpcyB0ZW1wbGF0ZSwgdGl0bGVkICYjODIxNjtTb2xpdHVkZSYjODIxNzsgZGVwaWN0cyB0aGlzIHJlYWxpdHkgb2YgbGlmZS4gU29saXR1ZGUgb3IgcXVpZXQgdGltZSBoYXMgb2Z0ZW4gYmVlbiByZWdhcmRlZCBhcyBhIGJsZXNzaW5nIGFzIHRoaXMgaXMgdGhlIHRpbWUgd2hlbiB3ZSB0aGluayBkZWVwbHksIGZlZWwgcmVqdXZlbmF0ZWQsIGFuZCBoYXZlIG91ciBtaW5kcyBicmltbWluZyB3aXRoIGJyaWdodCBuZXcgaWRlYXMuIElmIHlvdSBhcmUgdGhpbmtpbmcgdGhhdCBJIGFtIHRha2luZyB5b3Ugb24gYSBzcGlyaXR1YWwgcmVhbG0sIHlvdSBhcmUgcmlnaHQhIFRoaXMgaXMgb3VyIGludGVudGlvbiB0aHJvdWdoIHRoZSB0ZW1wbGF0ZSB0aXRsZWQgJiM4MjE2O1NvbGl0dWRlJiM4MjE3Oy48L3A+CjxwPlRoZSBoZWFkZXIgc2VjdGlvbiBzaG93cyBhIGJpcmQgcGVyY2hlZCBvbiBhIGJyYW5jaCBhbmQgbG9va2luZyB1cHdhcmRzIGFzIGlmIGxvb2tpbmcgZm9yIGluc3BpcmF0aW9uLiBUaGlzIGlzIHVzLCB0aGUgZGVzaWduZXJzIHdobyBhcmUgYWx3YXlzIGxvb2tpbmcgYWhlYWQgZm9yIG5ldyBpZGVhcywgaW5zcGlyYXRpb24gYW5kIG9mIGNvdXJzZSBzb2xpdHVkZSEgV2UgdXNlZCBsaWdodCBjb2xvdXJzIGFuZCBhYnN0cmFjdCBhcnQgdG8gY29tcGxlbWVudCB0aGUgdGhlbWUgb2YgdGhlIHRlbXBsYXRlLiA8L3A+CjxwPjxhIGhyZWY9Imh0dHA6Ly9kZW1vLnRlbXBsYXRld29ybGQuY29tLzUwOC1jaGVjay8xMjcvIj48aW1nIHNyYz0iaHR0cDovL21lZGlhMS5zbWFzaGluZ21hZ2F6aW5lLmNvbS9pbWFnZXMveGh0bWwtcHNkLXRlbXBsYXRlcy9zb2xpLmpwZyIgd2lkdGg9IjUwMCIgaGVpZ2h0PSIzMjciIGFsdD0iU2NyZWVuc2hvdCIgLz48L2E+PC9wPgo8cD48YSBocmVmPSJodHRwOi8vZGVtby50ZW1wbGF0ZXdvcmxkLmNvbS81MDgtY2hlY2svMTI3LyI+PGltZyBzcmM9Imh0dHA6Ly9tZWRpYTEuc21hc2hpbmdtYWdhemluZS5jb20vaW1hZ2VzL3hodG1sLXBzZC10ZW1wbGF0ZXMvU29saXR1ZGUtc21hbGwuanBnIiB3aWR0aD0iNTAwIiBoZWlnaHQ9IjY0MiIgYWx0PSJTY3JlZW5zaG90IiAvPjwvYT48L3A+CjxwPlRoZSBib2R5IHNob3dzIGEgc2hvcnQgZGVzY3JpcHRpb24gb2YgdGhlIGNvbXBhbnksIHRoZSBzZXJ2aWNlcyBwcm92aWRlZCwgYW5kIGEgdGVzdGltb25pYWwgY29sdW1uLiBUaGUgc2VydmljZXMgY29sdW1uIGFsc28gc2hvd3MgdGhlIHJlbGF0ZWQgaWNvbi4gVGhlIHJpZ2h0IG5hdmlnYXRpb24gc2hvd3MgYSBwcmV2aWV3IG9mIHBob3RvcyBieSB0aGUgY29tcGFueSwgYSBRdWljayBDb250YWN0IGJveCwgYW5kIExpbmtzIHRvIFByb2plY3RzIGNvbXBsZXRlZC48L3A+CjxwPlRoZSB0ZW1wbGF0ZSBjb2RlIGlzIHZhbGlkYXRlZCBieSBXM0MgYW5kIGFsc28gY29uZm9ybXMgdG8gU2VjdGlvbiA1MDggb2YgdGhlIFVTIFJlaGFiaWxpdGF0aW9uIEFjdCBmb3IgQWNjZXNzaWJsZSBkZXNpZ24uIDwvcD4KPHVsPgo8bGk+PGEgaHJlZj0iaHR0cDovL21lZGlhMi5zbWFzaGluZ21hZ2F6aW5lLmNvbS9pbWFnZXMveGh0bWwtcHNkLXRlbXBsYXRlcy9Tb2xpdHVkZS1sYXJnZS5qcGciPmxhcmdlIGZ1bGxzY3JlZW4gcHJldmlldzwvYT4gKC5qcGcpPC9saT4KPGxpPjxhIGhyZWY9Imh0dHA6Ly9kZW1vLnRlbXBsYXRld29ybGQuY29tLzUwOC1jaGVjay8xMjcvIj5saXZlIGRlbW88L2E+PC9saT4KPGxpPjxhIGhyZWY9Imh0dHA6Ly9tZWRpYTIuc21hc2hpbmdtYWdhemluZS5jb20vaW1hZ2VzL3hodG1sLXBzZC10ZW1wbGF0ZXMvU29saXR1ZGUtdGVtcGxhdGUuemlwIj5kb3dubG9hZCB0aGUgdGVtcGxhdGU8L2E+ICguemlwLCBQU0QgKyAoWClIVE1ML0NTUyk8L2xpPgo8L3VsPgo8cD5UaGFuayB5b3UsIGd1eXMuIFdlIGFwcHJlY2lhdGUgeW91ciB3b3JrIGFuZCB5b3VyIGdvb2QgaW50ZW50aW9ucyE8L3A+Cgo8IS0tIGdvb2dsZV9hZF9zZWN0aW9uX2VuZCAtLT4KPGhyIC8+DQoNCjxwPjxzbWFsbD7CqSBTbWFzaGluZyBFZGl0b3JpYWwgZm9yIDxhIGhyZWY9Imh0dHA6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20iPlNtYXNoaW5nIE1hZ2F6aW5lPC9hPiwgMjAwOS4gfA0KPGEgaHJlZj0iaHR0cDovL3d3dy5zbWFzaGluZ21hZ2F6aW5lLmNvbS8yMDA5LzA2LzA0LzYtZnJlZS1wc2R4aHRtbC10ZW1wbGF0ZXMvIj5QZXJtYWxpbms8L2E+IHwgDQo8YSBocmVmPSJodHRwOi8vd3d3LnNtYXNoaW5nbWFnYXppbmUuY29tLzIwMDkvMDYvMDQvNi1mcmVlLXBzZHhodG1sLXRlbXBsYXRlcy8jY29tbWVudHMiPjE0MSBjb21tZW50czwvYT4gfCANCjxhIHRpdGxlPSJCb29rbWFyayBpbiBkZWwuaWNpby51cyIgaHJlZj0iaHR0cDovL2RlbC5pY2lvLnVzL3Bvc3Q/dXJsPWh0dHA6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20vMjAwOS8wNi8wNC82LWZyZWUtcHNkeGh0bWwtdGVtcGxhdGVzLyZ0aXRsZT02IEZyZWUgUFNELyhYKUhUTUwtVGVtcGxhdGVzIj5BZGQgdG8gZGVsLmljaW8udXM8L2E+IHwgPGEgdGl0bGU9IkJvb2ttYXJrIGluIERpZ2ciIGhyZWY9Imh0dHA6Ly9kaWdnLmNvbS9zdWJtaXQ/cGhhc2U9MiZ1cmw9aHR0cDovL3d3dy5zbWFzaGluZ21hZ2F6aW5lLmNvbS8yMDA5LzA2LzA0LzYtZnJlZS1wc2R4aHRtbC10ZW1wbGF0ZXMvIj5EaWdnIHRoaXM8L2E+IHwgPGEgdGl0bGU9IlN0dW1ibGUgb24gU3R1bWJsZVVwb24iIGhyZWY9Imh0dHA6Ly93d3cuc3R1bWJsZXVwb24uY29tL3N1Ym1pdD91cmw9aHR0cDovL3d3dy5zbWFzaGluZ21hZ2F6aW5lLmNvbS8yMDA5LzA2LzA0LzYtZnJlZS1wc2R4aHRtbC10ZW1wbGF0ZXMvIj5TdHVtYmxlIG9uIFN0dW1ibGVVcG9uITwvYT4gfCA8YSB0aXRsZT0iVHdlZXQgdXMhIiBocmVmPSJodHRwOi8vdHdpdHRlci5jb20vaG9tZT9zdGF0dXM9QHR3ZWV0bWVtZSUyMEBzbWFzaGluZ21hZyUyMFJlYWRpbmclMjAnNiBGcmVlIFBTRC8oWClIVE1MLVRlbXBsYXRlcycgaHR0cDovL3d3dy5zbWFzaGluZ21hZ2F6aW5lLmNvbS8yMDA5LzA2LzA0LzYtZnJlZS1wc2R4aHRtbC10ZW1wbGF0ZXMvIj5Ud2VldCBpdCE8L2E+IHwgPGEgdGl0bGU9IkJvb2ttYXJrIGluIFJlZGRpdCIgaHJlZj0iaHR0cDovL3JlZGRpdC5jb20vc3VibWl0P3VybD1odHRwOi8vd3d3LnNtYXNoaW5nbWFnYXppbmUuY29tLzIwMDkvMDYvMDQvNi1mcmVlLXBzZHhodG1sLXRlbXBsYXRlcy8iPlN1Ym1pdCB0byBSZWRkaXQ8L2E+IHwgPGEgaHJlZj0iaHR0cDovL2ZvcnVtLnNtYXNoaW5nbWFnYXppbmUuY29tLyI+Rm9ydW0gU21hc2hpbmcgTWFnYXppbmU8L2E+DQoNCjxici8+DQpQb3N0IHRhZ3M6IDxhIGhyZWY9Imh0dHA6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20vdGFnL2Rvd25sb2Fkcy8iIHJlbD0idGFnIj5kb3dubG9hZHM8L2E+LCA8YSBocmVmPSJodHRwOi8vd3d3LnNtYXNoaW5nbWFnYXppbmUuY29tL3RhZy9mcmVlLyIgcmVsPSJ0YWciPmZyZWU8L2E+LCA8YSBocmVmPSJodHRwOi8vd3d3LnNtYXNoaW5nbWFnYXppbmUuY29tL3RhZy9mcmVlYmllcy8iIHJlbD0idGFnIj5GcmVlYmllczwvYT4sIDxhIGhyZWY9Imh0dHA6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20vdGFnL3BzZHMvIiByZWw9InRhZyI+cHNkczwvYT4sIDxhIGhyZWY9Imh0dHA6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20vdGFnL3RlbXBsYXRlcy8iIHJlbD0idGFnIj50ZW1wbGF0ZXM8L2E+LCA8YSBocmVmPSJodHRwOi8vd3d3LnNtYXNoaW5nbWFnYXppbmUuY29tL3RhZy94aHRtbC8iIHJlbD0idGFnIj54aHRtbDwvYT48YnIvPg0KPC9zbWFsbD48L3A+IjtzOjc6ImF0dHJpYnMiO2E6Mjp7czowOiIiO2E6MTp7czo0OiJ0eXBlIjtzOjQ6Imh0bWwiO31zOjM2OiJodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UiO2E6MTp7czo0OiJiYXNlIjtzOjY5OiJodHRwOi8vd3d3LnNtYXNoaW5nbWFnYXppbmUuY29tLzIwMDkvMDYvMDQvNi1mcmVlLXBzZHhodG1sLXRlbXBsYXRlcy8iO319czo4OiJ4bWxfYmFzZSI7czo2OToiaHR0cDovL3d3dy5zbWFzaGluZ21hZ2F6aW5lLmNvbS8yMDA5LzA2LzA0LzYtZnJlZS1wc2R4aHRtbC10ZW1wbGF0ZXMvIjtzOjE3OiJ4bWxfYmFzZV9leHBsaWNpdCI7YjoxO3M6ODoieG1sX2xhbmciO3M6MjoiZW4iO319fXM6Mzg6Imh0dHA6Ly9wdXJsLm9yZy9zeW5kaWNhdGlvbi90aHJlYWQvMS4wIjthOjE6e3M6NToidG90YWwiO2E6MTp7aTowO2E6NTp7czo0OiJkYXRhIjtzOjM6IjE0MSI7czo3OiJhdHRyaWJzIjthOjA6e31zOjg6InhtbF9iYXNlIjtzOjQzOiJodHRwOi8vd3d3LnNtYXNoaW5nbWFnYXppbmUuY29tL3dwLWF0b20ucGhwIjtzOjE3OiJ4bWxfYmFzZV9leHBsaWNpdCI7YjoxO3M6ODoieG1sX2xhbmciO3M6MjoiZW4iO319fX19aTo1O2E6Njp7czo0OiJkYXRhIjtzOjM3OiIKCQkKCQkKCQkKCQkKCQkKCQkKCQkJCQoJCQoJCQoJCQoJCQoJIjtzOjc6ImF0dHJpYnMiO2E6MDp7fXM6ODoieG1sX2Jhc2UiO3M6NDM6Imh0dHA6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20vd3AtYXRvbS5waHAiO3M6MTc6InhtbF9iYXNlX2V4cGxpY2l0IjtiOjE7czo4OiJ4bWxfbGFuZyI7czoyOiJlbiI7czo1OiJjaGlsZCI7YToyOntzOjI3OiJodHRwOi8vd3d3LnczLm9yZy8yMDA1L0F0b20iO2E6OTp7czo2OiJhdXRob3IiO2E6MTp7aTowO2E6Njp7czo0OiJkYXRhIjtzOjEwOiIKCQkJCgkJCQkJIjtzOjc6ImF0dHJpYnMiO2E6MDp7fXM6ODoieG1sX2Jhc2UiO3M6NDM6Imh0dHA6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20vd3AtYXRvbS5waHAiO3M6MTc6InhtbF9iYXNlX2V4cGxpY2l0IjtiOjE7czo4OiJ4bWxfbGFuZyI7czoyOiJlbiI7czo1OiJjaGlsZCI7YToxOntzOjI3OiJodHRwOi8vd3d3LnczLm9yZy8yMDA1L0F0b20iO2E6MTp7czo0OiJuYW1lIjthOjE6e2k6MDthOjU6e3M6NDoiZGF0YSI7czoxODoiU21hc2hpbmcgRWRpdG9yaWFsIjtzOjc6ImF0dHJpYnMiO2E6MDp7fXM6ODoieG1sX2Jhc2UiO3M6NDM6Imh0dHA6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20vd3AtYXRvbS5waHAiO3M6MTc6InhtbF9iYXNlX2V4cGxpY2l0IjtiOjE7czo4OiJ4bWxfbGFuZyI7czoyOiJlbiI7fX19fX19czo1OiJ0aXRsZSI7YToxOntpOjA7YTo1OntzOjQ6ImRhdGEiO3M6NTg6IjkgQ3J1Y2lhbCBVSSBGZWF0dXJlcyBvZiBTb2NpYWwgTWVkaWEgYW5kIE5ldHdvcmtpbmcgU2l0ZXMiO3M6NzoiYXR0cmlicyI7YToxOntzOjA6IiI7YToxOntzOjQ6InR5cGUiO3M6NDoiaHRtbCI7fX1zOjg6InhtbF9iYXNlIjtzOjQzOiJodHRwOi8vd3d3LnNtYXNoaW5nbWFnYXppbmUuY29tL3dwLWF0b20ucGhwIjtzOjE3OiJ4bWxfYmFzZV9leHBsaWNpdCI7YjoxO3M6ODoieG1sX2xhbmciO3M6MjoiZW4iO319czo0OiJsaW5rIjthOjM6e2k6MDthOjU6e3M6NDoiZGF0YSI7czowOiIiO3M6NzoiYXR0cmlicyI7YToxOntzOjA6IiI7YTozOntzOjM6InJlbCI7czo5OiJhbHRlcm5hdGUiO3M6NDoidHlwZSI7czo5OiJ0ZXh0L2h0bWwiO3M6NDoiaHJlZiI7czoxMDI6Imh0dHA6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20vMjAwOS8wNi8wMy85LWNydWNpYWwtdWktZmVhdHVyZXMtb2Ytc29jaWFsLW1lZGlhLWFuZC1uZXR3b3JraW5nLXNpdGVzLyI7fX1zOjg6InhtbF9iYXNlIjtzOjQzOiJodHRwOi8vd3d3LnNtYXNoaW5nbWFnYXppbmUuY29tL3dwLWF0b20ucGhwIjtzOjE3OiJ4bWxfYmFzZV9leHBsaWNpdCI7YjoxO3M6ODoieG1sX2xhbmciO3M6MjoiZW4iO31pOjE7YTo1OntzOjQ6ImRhdGEiO3M6MDoiIjtzOjc6ImF0dHJpYnMiO2E6Mjp7czowOiIiO2E6Mzp7czozOiJyZWwiO3M6NzoicmVwbGllcyI7czo0OiJ0eXBlIjtzOjk6InRleHQvaHRtbCI7czo0OiJocmVmIjtzOjExMToiaHR0cDovL3d3dy5zbWFzaGluZ21hZ2F6aW5lLmNvbS8yMDA5LzA2LzAzLzktY3J1Y2lhbC11aS1mZWF0dXJlcy1vZi1zb2NpYWwtbWVkaWEtYW5kLW5ldHdvcmtpbmctc2l0ZXMvI2NvbW1lbnRzIjt9czozODoiaHR0cDovL3B1cmwub3JnL3N5bmRpY2F0aW9uL3RocmVhZC8xLjAiO2E6MTp7czo1OiJjb3VudCI7czoyOiI1MCI7fX1zOjg6InhtbF9iYXNlIjtzOjQzOiJodHRwOi8vd3d3LnNtYXNoaW5nbWFnYXppbmUuY29tL3dwLWF0b20ucGhwIjtzOjE3OiJ4bWxfYmFzZV9leHBsaWNpdCI7YjoxO3M6ODoieG1sX2xhbmciO3M6MjoiZW4iO31pOjI7YTo1OntzOjQ6ImRhdGEiO3M6MDoiIjtzOjc6ImF0dHJpYnMiO2E6Mjp7czowOiIiO2E6Mzp7czozOiJyZWwiO3M6NzoicmVwbGllcyI7czo0OiJ0eXBlIjtzOjIwOiJhcHBsaWNhdGlvbi9hdG9tK3htbCI7czo0OiJocmVmIjtzOjExMjoiaHR0cDovL3d3dy5zbWFzaGluZ21hZ2F6aW5lLmNvbS8yMDA5LzA2LzAzLzktY3J1Y2lhbC11aS1mZWF0dXJlcy1vZi1zb2NpYWwtbWVkaWEtYW5kLW5ldHdvcmtpbmctc2l0ZXMvZmVlZC9hdG9tLyI7fXM6Mzg6Imh0dHA6Ly9wdXJsLm9yZy9zeW5kaWNhdGlvbi90aHJlYWQvMS4wIjthOjE6e3M6NToiY291bnQiO3M6MjoiNTAiO319czo4OiJ4bWxfYmFzZSI7czo0MzoiaHR0cDovL3d3dy5zbWFzaGluZ21hZ2F6aW5lLmNvbS93cC1hdG9tLnBocCI7czoxNzoieG1sX2Jhc2VfZXhwbGljaXQiO2I6MTtzOjg6InhtbF9sYW5nIjtzOjI6ImVuIjt9fXM6MjoiaWQiO2E6MTp7aTowO2E6NTp7czo0OiJkYXRhIjtzOjM5OiJodHRwOi8vd3d3LnNtYXNoaW5nbWFnYXppbmUuY29tLz9wPTc1NDgiO3M6NzoiYXR0cmlicyI7YTowOnt9czo4OiJ4bWxfYmFzZSI7czo0MzoiaHR0cDovL3d3dy5zbWFzaGluZ21hZ2F6aW5lLmNvbS93cC1hdG9tLnBocCI7czoxNzoieG1sX2Jhc2VfZXhwbGljaXQiO2I6MTtzOjg6InhtbF9sYW5nIjtzOjI6ImVuIjt9fXM6NzoidXBkYXRlZCI7YToxOntpOjA7YTo1OntzOjQ6ImRhdGEiO3M6MjA6IjIwMDktMDYtMDRUMDg6Mjg6NDlaIjtzOjc6ImF0dHJpYnMiO2E6MDp7fXM6ODoieG1sX2Jhc2UiO3M6NDM6Imh0dHA6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20vd3AtYXRvbS5waHAiO3M6MTc6InhtbF9iYXNlX2V4cGxpY2l0IjtiOjE7czo4OiJ4bWxfbGFuZyI7czoyOiJlbiI7fX1zOjk6InB1Ymxpc2hlZCI7YToxOntpOjA7YTo1OntzOjQ6ImRhdGEiO3M6MjA6IjIwMDktMDYtMDNUMjI6MjI6MDdaIjtzOjc6ImF0dHJpYnMiO2E6MDp7fXM6ODoieG1sX2Jhc2UiO3M6NDM6Imh0dHA6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20vd3AtYXRvbS5waHAiO3M6MTc6InhtbF9iYXNlX2V4cGxpY2l0IjtiOjE7czo4OiJ4bWxfbGFuZyI7czoyOiJlbiI7fX1zOjg6ImNhdGVnb3J5IjthOjY6e2k6MDthOjU6e3M6NDoiZGF0YSI7czowOiIiO3M6NzoiYXR0cmlicyI7YToxOntzOjA6IiI7YToyOntzOjY6InNjaGVtZSI7czozMToiaHR0cDovL3d3dy5zbWFzaGluZ21hZ2F6aW5lLmNvbSI7czo0OiJ0ZXJtIjtzOjY6Ikhvdy1UbyI7fX1zOjg6InhtbF9iYXNlIjtzOjQzOiJodHRwOi8vd3d3LnNtYXNoaW5nbWFnYXppbmUuY29tL3dwLWF0b20ucGhwIjtzOjE3OiJ4bWxfYmFzZV9leHBsaWNpdCI7YjoxO3M6ODoieG1sX2xhbmciO3M6MjoiZW4iO31pOjE7YTo1OntzOjQ6ImRhdGEiO3M6MDoiIjtzOjc6ImF0dHJpYnMiO2E6MTp7czowOiIiO2E6Mjp7czo2OiJzY2hlbWUiO3M6MzE6Imh0dHA6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20iO3M6NDoidGVybSI7czo0OiJkaWdnIjt9fXM6ODoieG1sX2Jhc2UiO3M6NDM6Imh0dHA6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20vd3AtYXRvbS5waHAiO3M6MTc6InhtbF9iYXNlX2V4cGxpY2l0IjtiOjE7czo4OiJ4bWxfbGFuZyI7czoyOiJlbiI7fWk6MjthOjU6e3M6NDoiZGF0YSI7czowOiIiO3M6NzoiYXR0cmlicyI7YToxOntzOjA6IiI7YToyOntzOjY6InNjaGVtZSI7czozMToiaHR0cDovL3d3dy5zbWFzaGluZ21hZ2F6aW5lLmNvbSI7czo0OiJ0ZXJtIjtzOjk6IkludGVyZmFjZSI7fX1zOjg6InhtbF9iYXNlIjtzOjQzOiJodHRwOi8vd3d3LnNtYXNoaW5nbWFnYXppbmUuY29tL3dwLWF0b20ucGhwIjtzOjE3OiJ4bWxfYmFzZV9leHBsaWNpdCI7YjoxO3M6ODoieG1sX2xhbmciO3M6MjoiZW4iO31pOjM7YTo1OntzOjQ6ImRhdGEiO3M6MDoiIjtzOjc6ImF0dHJpYnMiO2E6MTp7czowOiIiO2E6Mjp7czo2OiJzY2hlbWUiO3M6MzE6Imh0dHA6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20iO3M6NDoidGVybSI7czo1OiJtZWRpYSI7fX1zOjg6InhtbF9iYXNlIjtzOjQzOiJodHRwOi8vd3d3LnNtYXNoaW5nbWFnYXppbmUuY29tL3dwLWF0b20ucGhwIjtzOjE3OiJ4bWxfYmFzZV9leHBsaWNpdCI7YjoxO3M6ODoieG1sX2xhbmciO3M6MjoiZW4iO31pOjQ7YTo1OntzOjQ6ImRhdGEiO3M6MDoiIjtzOjc6ImF0dHJpYnMiO2E6MTp7czowOiIiO2E6Mjp7czo2OiJzY2hlbWUiO3M6MzE6Imh0dHA6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20iO3M6NDoidGVybSI7czoxMDoibmV0d29ya2luZyI7fX1zOjg6InhtbF9iYXNlIjtzOjQzOiJodHRwOi8vd3d3LnNtYXNoaW5nbWFnYXppbmUuY29tL3dwLWF0b20ucGhwIjtzOjE3OiJ4bWxfYmFzZV9leHBsaWNpdCI7YjoxO3M6ODoieG1sX2xhbmciO3M6MjoiZW4iO31pOjU7YTo1OntzOjQ6ImRhdGEiO3M6MDoiIjtzOjc6ImF0dHJpYnMiO2E6MTp7czowOiIiO2E6Mjp7czo2OiJzY2hlbWUiO3M6MzE6Imh0dHA6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20iO3M6NDoidGVybSI7czo2OiJzb2NpYWwiO319czo4OiJ4bWxfYmFzZSI7czo0MzoiaHR0cDovL3d3dy5zbWFzaGluZ21hZ2F6aW5lLmNvbS93cC1hdG9tLnBocCI7czoxNzoieG1sX2Jhc2VfZXhwbGljaXQiO2I6MTtzOjg6InhtbF9sYW5nIjtzOjI6ImVuIjt9fXM6Nzoic3VtbWFyeSI7YToxOntpOjA7YTo1OntzOjQ6ImRhdGEiO3M6MjMwMjoiPCEtLSBmZWVkIGJhbm5lcnMgLS0+CjxkaXYgY2xhc3M9ImdzZW5zZSI+PHNwYW4gY2xhc3M9ImFuIj5BZHZlcnRpc2VtZW50czwvc3Bhbj48YnIvPgkKCjxhIGhyZWY9Imh0dHA6Ly9hZHNlcnZlci4zZGlnaXQuZGUvd3d3L2RlbGl2ZXJ5L2NrLnBocD96b25laWQ9NTYiIHRhcmdldD0iX2JsYW5rIj48aW1nIHNyYz0iaHR0cDovL2Fkc2VydmVyLjNkaWdpdC5kZS93d3cvZGVsaXZlcnkvYXZ3LnBocD96b25laWQ9NTYiIGJvcmRlcj0iMCIgYWx0PSIiIC8+CTwvYT4KCjwvZGl2PjwhLS0gPGltZyBzcmM9Imh0dHA6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20vaW1hZ2VzL3Bvc3QtcGljdHVyZXMvZGlnZy5qcGciIC8+IC0tPiAgICAgICAgICA8cD5UaGUgbWFpbiBmdW5jdGlvbiBvZiBhIGdvb2QgPHN0cm9uZz51c2VyIGludGVyZmFjZTwvc3Ryb25nPiBpcyB0byBwcm92aWRlIHVzZXJzIHdpdGggYW4gaW50dWl0aXZlIG1hcHBpbmcgYmV0d2VlbiB1c2VyJ3MgaW50ZW50aW9uIGFuZCBhcHBsaWNhdGlvbidzIGZ1bmN0aW9uIHRoYXQgbWFuYWdlcyB0byBwcm92aWRlIGEgc29sdXRpb24gdG8gdGhlIGdpdmVuIHRhc2suIEJhc2ljYWxseSwgdXNlciBpbnRlcmZhY2UgZGVzY3JpYmVzIHRoZSB3YXkgcGVvcGxlIGludGVyYWN0IHdpdGggYSBzaXRlIGFuZCB0aGUgd2F5IHVzZXJzIGNhbiBhY2Nlc3MgaXRzIGZ1bmN0aW9ucy4gSW4gZmFjdCwgdXNhYmlsaXR5IGlzIGEgYmlwcm9kdWN0IG9mIGEgZ29vZCB1c2VyIGludGVyZmFjZSBhbmQgaXQgZGV0ZXJtaW5lcyBob3cgZWFzaWx5IGEgdXNlciBjYW4gcGVyZm9ybSBhbGwgb2YgdGhlIGZ1bmN0aW9ucyBwcm92aWRlZCBieSB0aGUgc2l0ZS4gVXNhYmlsaXR5IGlzIGEgY3J1Y2lhbCBwYXJ0IG9mIGV2ZXJ5IGRlc2lnbiwgZXNwZWNpYWxseSBvbiB3ZWJzaXRlcyB3aXRoIGEgbGFyZ2UgYW1vdW50IG9mIGZ1bmN0aW9ucyBhbmQgdXNlcnMuPC9wPg0KICAgICAgICANCjxwPjxhIGhyZWY9Imh0dHA6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20vMjAwOS8wNi8wMy85LWNydWNpYWwtdWktZmVhdHVyZXMtb2Ytc29jaWFsLW1lZGlhLWFuZC1uZXR3b3JraW5nLXNpdGVzLyI+PGltZyBhbHQ9IlNjcmVlbnNob3QiIHNyYz0iaHR0cDovL21lZGlhMi5zbWFzaGluZ21hZ2F6aW5lLmNvbS9pbWFnZXMvc29jaWFsLXVzZXItaW50ZXJmYWNlcy9kaWdnLmdpZiIgd2lkdGg9IjUwMiIgaGVpZ2h0PSIzNzciIC8+PC9hPjwvcD4gDQoNCiAgICAgICAgICA8cD5UaGlzIGFydGljbGUgZ29lcyBvdmVyIDxzdHJvbmc+Y3J1Y2lhbCBmZWF0dXJlcyBvZiB0aGUgdXNlciBpbnRlcmZhY2VzIG9mIHNvY2lhbCBtZWRpYSBhbmQgc29jaWFsIG5ldHdvcmtpbmcgc2l0ZXM8L3N0cm9uZz4uIEl0IGRpc2N1c3NlcyBpbXBvcnRhbnQgZmVhdHVyZXMsIHRlY2huaXF1ZXMgYW5kIGNvbmNlcHRzIGJlaGluZCB0aGVzZSBkZXNpZ25zIGFuZCBleHBsYWlucyB3aHkgdGhleSBhcmUgaW1wb3J0YW50LCB3aXRoIGV4YW1wbGVzIGZyb20gdG9wIHNpdGVzLiBUaGVzZSBlYXN5IGFuZCBnZW5lcmFsIHVzYWJpbGl0eSBzdHJhdGVnaWVzIGNhbiBiZSBhcHBsaWVkIGFsbW9zdCBhbnl3aGVyZSBhbmQgdG8gYWxtb3N0IGFueSB0eXBlIG9mIHVzZXIgaW50ZXJmYWNlLjwvcD4NCiAgICAgICAgICA8cD5Zb3UgbWF5IHdhbnQgdG8gdGFrZSBhIGxvb2sgYXQgdGhlIGZvbGxvd2luZyByZWxhdGVkIHBvc3RzPC9wPg0KICAgICAgICAgIDx1bD4NCgkJCTxsaT48YSBocmVmPSJodHRwOi8vd3d3LnNtYXNoaW5nbWFnYXppbmUuY29tLzIwMDkvMDEvMTkvMTItdXNlZnVsLXRlY2huaXF1ZXMtZm9yLWdvb2QtdXNlci1pbnRlcmZhY2UtZGVzaWduLWluLXdlYi1hcHBsaWNhdGlvbnMvIj4xMiBVc2VmdWwgVGVjaG5pcXVlcyBGb3IgR29vZCBVc2VyIEludGVyZmFjZSBEZXNpZ248L2E+PC9saT4NCgkJCTxsaT48YSBocmVmPSJodHRwOi8vd3d3LnNtYXNoaW5nbWFnYXppbmUuY29tLzIwMDgvMTIvMTUvMTAtdXNlZnVsLXRlY2huaXF1ZXMtdG8taW1wcm92ZS15b3VyLXVzZXItaW50ZXJmYWNlLWRlc2lnbnMvIj4xMCBNb3JlIFVzZWZ1bCBUZWNobmlxdWVzIFRvIEltcHJvdmUgWW91ciBVc2VyIEludGVyZmFjZSBEZXNpZ25zPC9hPjwvbGk+DQoJCQk8bGk+PGEgaHJlZj0iaHR0cDovL3d3dy5zbWFzaGluZ21hZ2F6aW5lLmNvbS8yMDA5LzAxLzEyLzEwLXVzZWZ1bC13ZWItYXBwbGljYXRpb24taW50ZXJmYWNlLXRlY2huaXF1ZXMvIj4xMCBVc2VmdWwgV2ViIEFwcGxpY2F0aW9uIEludGVyZmFjZSBUZWNobmlxdWVzPC9hPjwvbGk+DQogICAgICAgICAgPC91bD4NCiI7czo3OiJhdHRyaWJzIjthOjE6e3M6MDoiIjthOjE6e3M6NDoidHlwZSI7czo0OiJodG1sIjt9fXM6ODoieG1sX2Jhc2UiO3M6NDM6Imh0dHA6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20vd3AtYXRvbS5waHAiO3M6MTc6InhtbF9iYXNlX2V4cGxpY2l0IjtiOjE7czo4OiJ4bWxfbGFuZyI7czoyOiJlbiI7fX1zOjc6ImNvbnRlbnQiO2E6MTp7aTowO2E6NTp7czo0OiJkYXRhIjtzOjMyMTA1OiIKPCEtLSBnb29nbGVfYWRfc2VjdGlvbl9zdGFydCAtLT4KPHA+PCEtLSBmZWVkIGJhbm5lcnMgLS0+PC9wPgo8ZGl2IGNsYXNzPSJnc2Vuc2UiPjxzcGFuIGNsYXNzPSJhbiI+QWR2ZXJ0aXNlbWVudHM8L3NwYW4+PGJyLz4JPC9wPgo8cD48YSBocmVmPSJodHRwOi8vYWRzZXJ2ZXIuM2RpZ2l0LmRlL3d3dy9kZWxpdmVyeS9jay5waHA/em9uZWlkPTU2IiB0YXJnZXQ9Il9ibGFuayI+PGltZyBzcmM9Imh0dHA6Ly9hZHNlcnZlci4zZGlnaXQuZGUvd3d3L2RlbGl2ZXJ5L2F2dy5waHA/em9uZWlkPTU2IiBib3JkZXI9IjAiIGFsdD0iIiAvPgk8L2E+PC9wPgo8L2Rpdj4KPHA+VGhlIG1haW4gZnVuY3Rpb24gb2YgYSBnb29kIDxzdHJvbmc+dXNlciBpbnRlcmZhY2U8L3N0cm9uZz4gaXMgdG8gcHJvdmlkZSB1c2VycyB3aXRoIGFuIGludHVpdGl2ZSBtYXBwaW5nIGJldHdlZW4gdXNlciYjODIxNztzIGludGVudGlvbiBhbmQgYXBwbGljYXRpb24mIzgyMTc7cyBmdW5jdGlvbiB0aGF0IG1hbmFnZXMgdG8gcHJvdmlkZSBhIHNvbHV0aW9uIHRvIHRoZSBnaXZlbiB0YXNrLiBCYXNpY2FsbHksIHVzZXIgaW50ZXJmYWNlIGRlc2NyaWJlcyB0aGUgd2F5IHBlb3BsZSBpbnRlcmFjdCB3aXRoIGEgc2l0ZSBhbmQgdGhlIHdheSB1c2VycyBjYW4gYWNjZXNzIGl0cyBmdW5jdGlvbnMuIEluIGZhY3QsIHVzYWJpbGl0eSBpcyBhIGJpcHJvZHVjdCBvZiBhIGdvb2QgdXNlciBpbnRlcmZhY2UgYW5kIGl0IGRldGVybWluZXMgaG93IGVhc2lseSBhIHVzZXIgY2FuIHBlcmZvcm0gYWxsIG9mIHRoZSBmdW5jdGlvbnMgcHJvdmlkZWQgYnkgdGhlIHNpdGUuIFVzYWJpbGl0eSBpcyBhIGNydWNpYWwgcGFydCBvZiBldmVyeSBkZXNpZ24sIGVzcGVjaWFsbHkgb24gd2Vic2l0ZXMgd2l0aCBhIGxhcmdlIGFtb3VudCBvZiBmdW5jdGlvbnMgYW5kIHVzZXJzLjwvcD4KPHA+VGhpcyBhcnRpY2xlIGdvZXMgb3ZlciA8c3Ryb25nPmNydWNpYWwgZmVhdHVyZXMgb2YgdGhlIHVzZXIgaW50ZXJmYWNlcyBvZiBzb2NpYWwgbWVkaWEgYW5kIHNvY2lhbCBuZXR3b3JraW5nIHNpdGVzPC9zdHJvbmc+LiBJdCBkaXNjdXNzZXMgaW1wb3J0YW50IGZlYXR1cmVzLCB0ZWNobmlxdWVzIGFuZCBjb25jZXB0cyBiZWhpbmQgdGhlc2UgZGVzaWducyBhbmQgZXhwbGFpbnMgd2h5IHRoZXkgYXJlIGltcG9ydGFudCwgd2l0aCBleGFtcGxlcyBmcm9tIHRvcCBzaXRlcy4gVGhlc2UgZWFzeSBhbmQgZ2VuZXJhbCB1c2FiaWxpdHkgc3RyYXRlZ2llcyBjYW4gYmUgYXBwbGllZCBhbG1vc3QgYW55d2hlcmUgYW5kIHRvIGFsbW9zdCBhbnkgdHlwZSBvZiB1c2VyIGludGVyZmFjZS48L3A+CjxwPllvdSBtYXkgd2FudCB0byB0YWtlIGEgbG9vayBhdCB0aGUgZm9sbG93aW5nIHJlbGF0ZWQgcG9zdHM8L3A+Cjx1bD4KPGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20vMjAwOS8wMS8xOS8xMi11c2VmdWwtdGVjaG5pcXVlcy1mb3ItZ29vZC11c2VyLWludGVyZmFjZS1kZXNpZ24taW4td2ViLWFwcGxpY2F0aW9ucy8iPjEyIFVzZWZ1bCBUZWNobmlxdWVzIEZvciBHb29kIFVzZXIgSW50ZXJmYWNlIERlc2lnbjwvYT48L2xpPgo8bGk+PGEgaHJlZj0iaHR0cDovL3d3dy5zbWFzaGluZ21hZ2F6aW5lLmNvbS8yMDA4LzEyLzE1LzEwLXVzZWZ1bC10ZWNobmlxdWVzLXRvLWltcHJvdmUteW91ci11c2VyLWludGVyZmFjZS1kZXNpZ25zLyI+MTAgTW9yZSBVc2VmdWwgVGVjaG5pcXVlcyBUbyBJbXByb3ZlIFlvdXIgVXNlciBJbnRlcmZhY2UgRGVzaWduczwvYT48L2xpPgo8bGk+PGEgaHJlZj0iaHR0cDovL3d3dy5zbWFzaGluZ21hZ2F6aW5lLmNvbS8yMDA5LzAxLzEyLzEwLXVzZWZ1bC13ZWItYXBwbGljYXRpb24taW50ZXJmYWNlLXRlY2huaXF1ZXMvIj4xMCBVc2VmdWwgV2ViIEFwcGxpY2F0aW9uIEludGVyZmFjZSBUZWNobmlxdWVzPC9hPjwvbGk+CjwvdWw+CjxoMz4xLiBTaW1wbGUgSW50ZXJmYWNlIElzIFRoZSBLZXk8L2gzPgo8cD5CZWZvcmUgZ2V0dGluZyBpbnRvIHRoZSBzcGVjaWZpY3Mgb2YgdGhlIHVzZXIgaW50ZXJmYWNlLCBpdCYjODIxNztzIGltcG9ydGFudCB0byBwb2ludCBvdXQgdGhlIGZhY3QgdGhhdCA8c3Ryb25nPnNpbXBsaWNpdHk8L3N0cm9uZz4gaW4gdXNlciBpbnRlcmZhY2UgaXMgYSBzaGFyZWQgY2hhcmFjdGVyaXN0aWMgb2Ygc29jaWFsIG1lZGlhIGFuZCBuZXR3b3JraW5nIHdlYnNpdGVzLiBTb2NpYWwgbWVkaWEgd2Vic2l0ZXMgYXJlIHJhdGhlciBzaW1wbGUgaW4gdGVybXMgb2YgY29sb3Igc2NoZW1lIGFuZCBncmFwaGljcy4gVGhlIGNvbG9yIHNjaGVtZSB1c3VhbGx5IGNvbnNpc3RzIG9mIGEgZmV3IGNvbG9ycyBhbG9uZyB3aXRoIHNsaWdodCBtb25vY2hyb21hdGljIHZhcmlhdGlvbnM7IHRoZSBiYWNrZ3JvdW5kIGlzIGdlbmVyYWxseSB3aGl0ZSwgdXBkYXRlcyAoZS5nLiBzdGF0dXMgdXBkYXRlZCkgYXJlIG9mdGVuIGhpZ2hsaWdodGVkIHdpdGggYSBsaWdodCBjb2xvciBhcyB3ZWxsICh1c3VhbGx5IGdyZWVuIG9yIHllbGxvdzsgYWxlcnRzIGFyZSB1c3VhbGx5IGhpZ2hsaWdodGVkIHdpdGggYSByZWQgYmFja2dyb3VuZCBjb2xvcikuPC9wPgo8cD5BbHNvLCB5b3Ugd2lsbCBub3RpY2UgdGhhdCBncmFwaGljcyBhcmUgYWx3YXlzIHZlcnkgc2ltcGxlIGFuZCBhcmUgdXNlZCB2ZXJ5IHNwYXJpbmdseS4gVGhlcmUgYXJlIG11bHRpcGxlIHJlYXNvbnMgZm9yIHRoaXMuIFRoZSBtb3N0IGltcG9ydGFudCByZWFzb24gaXMgdGhlIHNpbXBsZSBmYWN0IHRoYXQgPHN0cm9uZz52aXZpZCB2aXN1YWwgZGVzaWduIGlzbiYjODIxNzt0IHJlYWxseSB1c2VmdWw8L3N0cm9uZz4gb24gc29jaWFsIG5ldHdvcmtpbmcgc2l0ZXMuIFNvY2lhbCBhcHBsaWNhdGlvbnMgYXJlIHN1cHBvc2VkIHRvIHByb3ZpZGUgYSBzaGFyZWQgZW52aXJvbm1lbnQgd2hlcmUgdGhlIGNvbnRlbnQgY2FuIGJlIGVhc2lseSBwcm9kdWNlZCBhbmQgd2hlcmUgY29udmVyc2F0aW9ucyBjYW4gdGFrZSBwbGFjZSAmbmRhc2g7IGEgc3Ryb25nIHZpc3VhbCBkZXNpZ24gd291bGQgY3JlYXRlIHVubmVjZXNzYXJ5IG5vaXNlIGFuZCBtYWtlIGl0IGhhcmRlciBmb3IgdXNlcnMgdG8gZm9jdXMgb24gdGhlaXIgY29udmVyc2F0aW9ucy48L3A+CjxwIGNsYXNzPSJzaG93Y2FzZSI+PGEgaHJlZj0iaHR0cDovL3d3dy50d2l0dGVyLmNvbSI+PGltZyBhbHQ9IlNjcmVlbnNob3QiIHNyYz0iaHR0cDovL21lZGlhMS5zbWFzaGluZ21hZ2F6aW5lLmNvbS9pbWFnZXMvc29jaWFsLXVzZXItaW50ZXJmYWNlcy90d2l0dGVyLXVpLmdpZiIgd2lkdGg9IjUwMCIgaGVpZ2h0PSIzMjciIC8+PC9hPjwvcD4KPHA+Rm9yIGV4YW1wbGUsIDxhIGhyZWY9Imh0dHA6Ly93d3cudHdpdHRlci5jb20iPlR3aXR0ZXI8L2E+IGhhcyBwcm9iYWJseSBvbmUgb2YgdGhlIG1vc3QgbWluaW1hbGlzdGljIHNvY2lhbCB1c2VyIGludGVyZmFjZXM7IHRoZSBVSSBpcyB2ZXJ5IHNpbXBsZSwgdXNlcyBmZXcgY29sb3JzIGFuZCBwdXRzIHRoZSBtYWluIGZlYXR1cmUgb2YgdGhlIHNlcnZpY2UgaW4gdGhlIGZvcmVncm91bmQgJm5kYXNoOyBhIHRleHRhcmVhLWJveCB0aGF0IGlzIHN1cHBvc2VkIHRvIGJlIHVzZWQgdG8gc2VuZCBvdXQgc2hvcnQgbWVzc2FnZXMuPC9wPgo8cD5JbiBvdGhlciB3b3Jkcywgc2luY2UgdGhlIGluZm9ybWF0aW9uIGZsb3cgaXMgcXVpdGUgbGFyZ2UgZm9yIG1vc3QgdXNlcnMsIGl0IGlzIGFsbW9zdCBuYXR1cmFsIHRvIG1ha2UgdGhlIGludGVyZmFjZSBhcyBzaW1wbGUgYXMgcG9zc2libGUuIElmIHRoZSBpbnRlcmZhY2UgaXMgb3ZlcmRvbmUgd2l0aCBncmFwaGljYWwgZWxlbWVudHMsIHVzZXJzIHdpbGwgZmVlbCB1bmNvbWZvcnRhYmxlIGFuZCBjb25mdXNlZCwgc2luY2UgaXQgd2lsbCBiZSBoYXJkIHRvIGZvY3VzIG9uIHNwZWNpZmljIHRhc2tzIG9yIGFyZWFzLiBTaW1wbGUgaW50ZXJmYWNlIGRvZXNuJiM4MjE3O3QganVzdCBtZWFuIGEgc2ltcGxlIHZpc3VhbCBkZXNpZ24sIHRob3VnaC4gTW9yZSBpbXBvcnRhbnRseSwgaXQgbWVhbnMgdGhhdCBhdmFpbGFibGUgaW50ZXJmYWNlIG9wdGlvbnMgYXJlIGRlc2lnbmVkLCBwbGFjZWQgYW5kIHByZXNlbnRlZCBpbiBhbiBpbnR1aXRpdmUgd2F5LjwvcD4KPHA+VGhlIGNvbG9ycyBvbiBzb2NpYWwgbWVkaWEgYW5kIHNvY2lhbCBuZXR3b3JraW5nIHNpdGVzIGFyZSBhbHdheXMgY2FsbSBhbmQgc3VwcG9ydGl2ZSwgcmF0aGVyIHRoYW4gYnJpZ2h0IGFuZCBvYm5veGlvdXMuIEZlYXR1cmVzIGRvIG5vdCBmaWdodCBmb3IgYXR0ZW50aW9uOyBtYW55IG9mIHRoZW0gcmVtYWluIGludmlzaWJsZSBtb3N0IG9mIHRoZSB0aW1lLiBJbiBmYWN0LCBtb3N0IHNvY2lhbCBtZWRpYSBpbnRlcmZhY2VzIGFyZSA8c3Ryb25nPmNvbnRleHQtc2Vuc2l0aXZlPC9zdHJvbmc+LCBkaXNwbGF5aW5nIG1hbnkgZmVhdHVyZXMgb25seSAmIzgyMjA7b24gZGVtYW5kJiM4MjIxOy4gV2l0aCBzdWNoIGEgbGFyZ2UgYW1vdW50IG9mIGRhdGEgYW5kIGZ1bmN0aW9ucywgYnJpZ2h0IGNvbG9ycyB3b3VsZCBzaW1wbHkgZ2V0IGluIHRoZSB3YXkgYW5kIGRpc3RyYWN0IHRoZSB1c2VyLjwvcD4KPGgzPjIuIFByb21pbmVudCBhbmQgRnVuY3Rpb25hbCBTZWFyY2g8L2gzPgo8cD5Hb29kIHNlYXJjaCBmdW5jdGlvbmFsaXR5IGlzIHVuZG91YnRlZGx5IHRoZSBwaW5uYWNsZSBvZiBnb29kIHVzYWJpbGl0eSBhbmQgZ29vZCB1c2VyIGludGVyZmFjZS4gSW4gdGhlIHNvY2lhbCBtZWRpYSBhIHNlYXJjaCBmdW5jdGlvbmFsaXR5IGlzIGEgbXVzdCAmbmRhc2g7IHNpbXBseSBiZWNhdXNlIG9mIHRoZSB2YXN0IGFtb3VudCBvZiBhdmFpbGFibGUgaW5mb3JtYXRpb24uIFRoZSBzZWFyY2gsIGhvd2V2ZXIsIGhhcyBtdWx0aXBsZSBkaW1lbnNpb25zOiBhcGFydCBmcm9tIHRoZSB0cmFkaXRpb25hbCBjb250ZW50IHNlYXJjaCwgc29jaWFsIGFwcGxpY2F0aW9ucyBhbHNvIHByb3ZpZGUgYW4gYWR2YW5jZWQgc2VhcmNoIG9mIGNvbm5lY3Rpb25zIGluIHRoZSBzb2NpYWwgZ3JhcGggJm5kYXNoOyBiZSBpdCAgZ3JvdXBzLCBjb21tdW5pdGllcyBvciBpbnRlcmVzdHMuIFRoZSB1cHBlci1yaWdodCBjb3JuZXIgb2YgdGhlIHNpdGUgaXMgdGhlIG1vc3Qgc3VpdGFibGUgbG9jYXRpb24gZm9yIGEgc2VhcmNoIGJveC4gVXNlcnMgZXhwZWN0IGl0IHRoZXJlOiBhIHNlYXJjaCBpbnB1dCBhcmVhIGFuZCBhIGNsZWFybHkgdmlzaWJsZSBzZWFyY2ggYnV0dG9uLiA8L3A+CjxwPkEgY29tbW9uIGZlYXR1cmUgaW4gc29jaWFsIGFwcGxpY2F0aW9ucyBpcyB0aGUgdXNlIG9mIDxzdHJvbmc+bGl2ZSBzZWFyY2ggcmVzdWx0cyBhbmQgZmlsdGVyaW5nPC9zdHJvbmc+LiBXaGVuIHlvdSB0eXBlIGludG8gdGhlIGJveCwgdGhlIHJlc3VsdHMgYXJlIGZpbHRlcmVkIG91dCBpbiBhIGRyb3AtZG93biBzdHlsZS4gVGhlIGZpbHRlcmluZyBoZWxwcyB1c2VycyB0byBxdWlja2x5IGZpbmQgdGhlIGNvbnRlbnQgdGhleSBhcmUgbG9va2luZyBmb3IgYW5kIGdldCByaWQgb2YgYW55IGNvbnRlbnQgdGhhdCBpc24mIzgyMTc7dCByZWxldmFudCB0byB0aGVtLiBZb3Ugd2FudCB0aGUgZXhwZXJpZW5jZSB0byBiZSBmaW5lIHR1bmVkIHRvIGVhY2ggaW5kaXZpZHVhbCB1c2VyIGFuZCBmaWx0ZXJpbmcgc2VhcmNoZXMgZG9lcyBqdXN0IHRoaXMuPC9wPgo8cCBjbGFzcz0ic2hvd2Nhc2UiPjxhIGhyZWY9Imh0dHA6Ly9kaWdnLmNvbS9zZWFyY2g/cz1hcHBsZSI+PGltZyBhbHQ9IlNjcmVlbnNob3QiIHNyYz0iaHR0cDovL21lZGlhMS5zbWFzaGluZ21hZ2F6aW5lLmNvbS9pbWFnZXMvc29jaWFsLXVzZXItaW50ZXJmYWNlcy9kaWdnc2VhcmNoLmpwZyIgd2lkdGg9IjQ1MCIgaGVpZ2h0PSIzNTAiIC8+PC9hPjwvcD4KPHA+VGhlIHNlYXJjaCByZXN1bHRzIHBhZ2UgaXMgZXZlbiBtb3JlIGNydWNpYWwgdGhhbiBhIHVzZXItZnJpZW5kbHkgZGVzaWduIG9mIGEgc2VhcmNoIGJveC4gPGEgaHJlZj0iaHR0cDovL2RpZ2cuY29tL3NlYXJjaD9zPWFwcGxlIj5EaWdnPC9hPiByZWNlbnRseSB1cGRhdGVkIHRoZWlyIHNlYXJjaCBlbmdpbmUgYW5kIGl0IGlzIG5vdyBhbiBleGFtcGxlIG9mIHRoZSBleHRyZW1lbHkgZnVuY3Rpb25hbCBhbmQgdmVyeSB1c2VyLWZyaWVuZGx5IHNlYXJjaCBmdW5jdGlvbmFsaXR5LiBZb3UgY2FuIG9yZ2FuaXplIHNlYXJjaCByZXN1bHRzIGJ5IG9wdGlvbnMgc3VjaCBhcyBiZXN0IG1hdGNoLCBtb3N0IERpZ2dzLCBhbmQgbmV3ZXN0LiBPbiB0aGUgcmlnaHQgc2lkZSB5b3UmIzgyMTc7bGwgZmluZCBhIGxpc3Qgb2YgYWdlIHJhbmdlcywgRGlnZyByYW5nZXMsIHBvcHVsYXIgdG9waWNzLCBhbmQgdG9wIGNhdGVnb3JpZXMuIEZ1cnRoZXJtb3JlLCB5b3UgY2FuIHNlYXJjaCBieSB0aGUgc291cmNlIG9mIHRoZSBjb250ZW50LCB0b28uIFRoZSBzZWFyY2ggcmVzdWx0cyBwYWdlIGFsc28gaW5jbHVkZXMgYSBsYXJnZSBzZWFyY2ggYmFyIGF0IHRoZSB0b3AsIHdoaWNoIGhlbHBzIHRoZSB1c2VyIHJlZmluZSB0aGVpciBzZWFyY2ggaWYgbmVjZXNzYXJ5LjwvcD4KPGgzPjMuIFByb21pbmVudCBDYWxsLVRvLUFjdGlvbi1CdXR0b25zPC9oMz4KPHA+T2YgY291cnNlLCBzb2NpYWwgYXBwbGljYXRpb25zIGNvbnRhaW4gbWFueSBmdW5jdGlvbnMgdGhhdCBuZWVkIHRvIGJlIGNvbW11bmljYXRlZCBpbiBzb21lIHdheS4gQ29uc2VxdWVudGx5LCBidXR0b25zIGFuZCBsaW5rcyBuZWVkIHRvIGJlIHBsYWNlZCBhbG1vc3Qgb24gZXZlcnkgcGFnZSAoYSBzaWduLXVwIGZvcm0gaXMgcHJvYmFibHkgdGhlIG9ubHkgcmVhc29uYWJsZSBleGNlcHRpb24pLiBTb21lIGxpbmtzIHJlbGF0ZSB0byBuYXZpZ2F0aW9uIGFuZCBzb21lIGxldCB0aGUgdXNlciBhZGp1c3Qgc3BlY2lmaWMgYXBwbGljYXRpb24gZnVuY3Rpb25zLiBCdXR0b25zIGFyZSBvZnRlbiB1c2VkIHRvIDxzdHJvbmc+YW5pbWF0ZSB1c2VycyB0byBhY3Rpb25zPC9zdHJvbmc+LCB3aGlsZSBsaW5rcyBhcmUgb2Z0ZW4gbW9yZSBwYXNzaXZlIGFuZCBzdWJ0bGUuIEJ1dHRvbnMgYXJlIGFsc28gb2Z0ZW4gbGFyZ2VyLCBtb3JlIHZpdmlkIGFuZCBtb3JlIG1lbW9yYWJsZS4gTm8gbWF0dGVyIHdoYXQgdGFzayBhIGJ1dHRvbiBwZXJmb3JtcywgaXQgbmVlZHMgdG8gYmUgbGFyZ2UgYW5kIGNsaWNrYWJsZS48L3A+CjxwPk9mdGVuIHNvY2lhbCBuZXR3b3JraW5nIHNpdGVzIGhhdmUgb25seSBmZXcgY2FsbC10by1hY3Rpb24tYnV0dG9ucyB0aGF0IGFyZSBzdXBwb3NlZCB0byBtb3RpdmF0ZSB1c2VycyB0byBhY3Rpb25zIChzZWUgYWxzbyA8YSBocmVmPSJodHRwOi8vd3d3LmxlZW11bnJvZS5jb20vd2ViLWRlc2lnbi10cmVuZHMtY2FsbC10by1hY3Rpb24tc2lnbi11cC1kb3dubG9hZC1idXR0b25zLyI+V2ViIERlc2lnbiBUcmVuZHM6IENhbGwgVG8gQWN0aW9uIEJ1dHRvbnM8L2E+LCA8YSBocmVmPSJodHRwOi8vdmFuZGVsYXlkZXNpZ24uY29tL2Jsb2cvZ2FsbGVyaWVzL2J1dHRvbi1kZXNpZ24tc2hvd2Nhc2UvIj5CdXR0b25zIERlc2lnbiBTaG93Y2FzZTwvYT4gYW5kIDxhIGhyZWY9Imh0dHA6Ly93d3cudXhib290aC5jb20vYmxvZy9nb29kLWNhbGwtdG8tYWN0aW9uLWJ1dHRvbnMvIj5Hb29kIENhbGwtVG8tQWN0aW9uIEJ1dHRvbnM8L2E+IGZvciBnb29kIGd1aWRlbGluZXMgZm9yIHRoZSBkZXNpZ24gb2YgY2FsbC10by1hY3Rpb24tYnV0dG9ucykuIFRoZXNlIGJ1dHRvbnMgYXJlIHVzdWFsbHkgZGVzaWduZWQgYW5kIHBsYWNlZCBwcm9taW5lbnRseSwgd2hpbGUgb3RoZXIgZGVzaWduIGVsZW1lbnRzIHJlbWFpbiB2ZXJ5IHN1YnRsZSBhbmQgc2ltcGxlIChzZWUgdGhlIHNjcmVlbnNob3QgYmVsb3cpLjwvcD4KPHAgY2xhc3M9InNob3djYXNlIj48YSBocmVmPSJodHRwOi8vd3d3LnN0dW1ibGV1cG9uLmNvbS8iPjxpbWcgYWx0PSJTY3JlZW5zaG90IiBzcmM9Imh0dHA6Ly9tZWRpYTIuc21hc2hpbmdtYWdhemluZS5jb20vaW1hZ2VzL3NvY2lhbC11c2VyLWludGVyZmFjZXMvc3UyLmdpZiIgd2lkdGg9IjQ2NyIgaGVpZ2h0PSIzNzIiIC8+PC9hPjwvcD4KPHA+SW4gZ2VuZXJhbCwgdGhlIHVzYWdlIG9mIHJlYWwtbGlmZSBtZXRhcGhvcnMgaW4gdXNlciBpbnRlcmZhY2UgZGVzaWducyBpcyBoaWdobHkgcmVjb21tZW5kYWJsZS4gSXQgaXMgdGhlcmVmb3JlIGEgZ29vZCBpZGVhIHRvIG5vdCBvbmx5IDxzdHJvbmc+bWFrZSB0aGUgYnV0dG9uIGxvb2sgbGlrZSBhIGJ1dHRvbjwvc3Ryb25nPiAoZm9yIGluc3RhbmNlLCB1c2luZyBkcm9wLXNoYWRvdyksIGJ1dCBhbHNvIG1ha2Ugc3VyZSB0aGF0IHRoZSA8Y29kZT46YWN0aXZlPC9jb2RlPi0gYW5kIDxjb2RlPjpmb2N1czwvY29kZT4tc3RhdGVzIGFyZSBkZXNpZ25lZCBhY2NvcmRpbmdseSwgY29tbXVuaWNhdGluZyB0aGF0IHRoZSBidXR0b24gd2FzIGFjdHVhbGx5ICYjODIyMDtwcmVzc2VkJiM4MjIxOy4gSW4gdGhpcyBzaXR1YXRpb24gaXQgaXMgYmV0dGVyIHRvIGFkZCB0aGUgZW1ib3NzaW5nLWVmZmVjdCBpbnN0ZWFkIG9mIGp1c3QgY2hhbmdpbmcgdGhlIGNvbG9yIG9mIHRoZSBidXR0b24gb3IgaXRzIGJvcmRlci48L3A+CjxwPkEgYnV0dG9uIHNob3VsZCBiZSBsYXJnZSBlbm91Z2ggdG8gYmUgbm90aWNlZCBhbmQgc2VsZWN0ZWQgd2l0aG91dCBkaWZmaWN1bHR5LiBIb3dldmVyLCBzaXplIGlzbiYjODIxNzt0IHRoZSBvbmx5IGNoYXJhY3RlcmlzdGljIG9mIGEgY2xpY2thYmxlIGJ1dHRvbiBvciBsaW5rLiBBbm90aGVyIGltcG9ydGFudCBmYWN0b3IgaXMgPHN0cm9uZz5wYWRkaW5nPC9zdHJvbmc+LiBJZiB5b3UgaGF2ZSBhIGxpbmUgb2YgbGlua3MgdGlnaHRseSBwYWNrZWQgdG9nZXRoZXIsIGl0IHdpbGwgYmUgaW1wb3NzaWJsZSB0byBjbGljayB0aGUgb25lIHlvdSBhY3R1YWxseSB3YW50IHRvIGNsaWNrLiBZb3UgbWF5IGNvbnNpZGVyIHByb3ZpZGluZyB2aXN1YWwgc3VwcG9ydCBmb3IgeW91ciBsaW5rcyBvciBidXR0b25zLjwvcD4KPHA+SW4gdGhlIGNhc2Ugb2YgbGlua3MsIGl0IGlzIHNvbWV0aW1lcyB1c2VmdWwgdG8gaW5jbHVkZSBpY29ucyBvciBzbWFsbCBpbGx1c3RyYXRpb25zLiBIb3dldmVyLCB0aGlzIGRvZXNuJiM4MjE3O3QgYWx3YXlzIHdvcmssIGVzcGVjaWFsbHkgd2hlbiB0aGUgbGluayBpcyBub3QgdGhhdCBpbXBvcnRhbnQgdG8gbW9zdCB1c2Vycy4gSWYgeW91IG5lZWQgdG8gaGlnaGxpZ2h0IHNvbWUgaW1wb3J0YW50IGxpbmtzLCB5b3Ugc2hvdWxkIGNvbnNpZGVyIGFkZGluZyBzcGFjaW5nIHRvIHRoZSBsaW5rLCB1c2UgYSBiYWNrZ3JvdW5kIHRoYXQgc3RhbmRzIG91dCwgbWFrZSBpdCBhIGxhcmdlIGNsaWNrYWJsZSBibG9jayBvciBqdXN0IHJlcGxhY2UgaXQgd2l0aCBhIHByb21pbmVudCBidXR0b24uIFVzZSBhIGJhY2tncm91bmQgdGhhdCBzdGFuZHMgb3V0LCBidXQgaXNuJiM4MjE3O3Qgb3Zlcmx5IGNvbXBsaWNhdGVkLjwvcD4KPHA+SXQgaXMgYWxzbyBpbXBvcnRhbnQgdG8gbWVudGlvbiB0aGUgaW1wb3J0YW5jZSBvZiA8c3Ryb25nPmhvdmVyIGVmZmVjdHM8L3N0cm9uZz4uIFRoZSBob3ZlciBlZmZlY3QgbGV0cyB0aGUgdXNlciBrbm93IHRoYXQgdGhlIGJ1dHRvbiBpcyBpbiBmYWN0IGNsaWNrYWJsZSBhbmQgY29uZmlybXMgdGhhdCB0aGUgdXNlciYjODIxNztzIGFjdGlvbiBpcyB1bmRlcnN0b29kIGJ5IHRoZSBzeXN0ZW0uPC9wPgo8aDM+NC4gQ2FsbSBTZXBhcmF0aW9uIG9mIEVsZW1lbnRzPC9oMz4KPHA+QSBtZWFuaW5nZnVsIG9yZ2FuaXphdGlvbiBhbmQgcHJlc2VudGF0aW9uIG9mIHZhcmlvdXMgY2h1bmtzIG9mIGluZm9ybWF0aW9uIGlzIHByb2JhYmx5IG9uZSBvZiB0aGUgYWR2YW5jZWQgZGVzaWduIHByb2JsZW1zIHRoYXQgZGVzaWduZXJzIG9mIHNvY2lhbCB1c2VyIGludGVyZmFjZSBoYXZlIHRvIGRlYWwgd2l0aC4gSW4gb3JkZXIgdG8gbWFrZSB0aGUgY29udGVudCByZWFkYWJsZSwgc2Nhbm5hYmxlIGFuZCBlYXN5IHRvIHBlcmNlaXZlLCA8c3Ryb25nPmNvbnRlbnQgYmxvY2tzIG5lZWQgdG8gYmUgdmlzdWFsbHkgc2VwYXJhdGVkPC9zdHJvbmc+LiBJbiBvdGhlciB3b3JkcywgZWFjaCBlbGVtZW50IG5lZWRzIHRvIGJlIGRlZmluZWQgYXMgYW5kIHByZXNlbnRlZCBhIHNlcGFyYXRlIGVsZW1lbnQgaW4gc29tZSB3YXkuIEluIGZhY3QsIHRoZSBzZXBhcmF0aW9uIG9mIGVsZW1lbnRzIGluIGEgbGF5b3V0IGlzIG9uZSBvZiB0aGUgbW9zdCBzaW1wbGUgd2F5cyB0byBhY2hpZXZlIGEgbW9yZSBjbGVhbiB1c2VyIGludGVyZmFjZSB0aGF0IHRoZSB1c2VyIGNhbiBlYXNpbHkgaW50ZXJhY3Qgd2l0aC48L3A+CjxwPkhvd2V2ZXIsIGlmIG1hbnkgZWxlbWVudHMgYXJlIHZpc3VhbGx5IHNlcGFyYXRlZCwgdGhlIGludGVyZmFjZSBjb250YWlucyBtb3JlIGNodW5rcyBvZiBpbmZvcm1hdGlvbiBhbmQgY29uc2VxdWVudGx5IHRoZSBsYXlvdXQgYmVjb21lcyBtb3JlIGNvbXBsZXguIFRoZXJlZm9yZSwgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIGxheW91dCByZW1haW5zIHNjYW5uYWJsZSwgdGhlIHZpc3VhbCBzZXBhcmF0aW9uIG5lZWRzIHRvIGJlIDxzdHJvbmc+c3VidGxlPC9zdHJvbmc+LiBJbiBtb3N0IGNhc2VzIGhvcml6b250YWwgYW5kIHZlcnRpY2FsIGxpbmVzIGRlc2lnbmVkIGluIG5ldXRyYWwsIGNhbG0gY29sb3JzIChmb3IgaW5zdGFuY2UsIGdyZXkpIGFyZSB1c2VkLiBBIHN0cm9uZywgdml2aWQgY29sb3IgJm5kYXNoOyB0aGF0IG9mdGVuIGlzIGRpZmZpY3VsdCB0byBvdmVybG9vayAmbmRhc2g7IHdvdWxkIGRpc3RyYWN0IHRoZSB1c2VyLCBmaWdodGluZyBmb3IgaGVyIGF0dGVudGlvbi4gT24gdGhlIGNvbnRyYXJ5LCAmIzgyMjA7Y2FsbSYjODIyMTsgbGluZXMgYXJlIGVhc2llciB0byBpZ25vcmUgYW5kIHByb3ZpZGUgdmlzdWFsIHN1cHBvcnQuPC9wPgo8cD5XaGF0IGV4YWN0bHkgZG9lcyBpdCBtZWFuIHRvIDxlbT5zZXBhcmF0ZSBlbGVtZW50cyBpbiBhIGxheW91dDwvZW0+PyA8YSBocmVmPSJodHRwOi8vd3d3LnR3aXR0ZXIuY29tL3NtYXNoaW5nbWFnIj5Ud2l0dGVyPC9hPiB1c2VzIHZpc3VhbCBzZXBhcmF0aW9uIHRvIHN0cnVjdHVyZSB0aGUgbGF5b3V0LiBZb3UgY2FuIHNlZSB0aGF0IGJldHdlZW4gZWFjaCB0d2VldCB0aGVyZSBpcyBhIGxpbmUgc3BsaXR0aW5nIHVwIHRoZSB0d28uIFdpdGhvdXQgdGhpcyBkaXZpZGluZyBsaW5lLCBpdCB3b3VsZCBiZSBuZWFybHkgaW1wb3NzaWJsZSB0byBxdWlja2x5IHNjYW4gdGhyb3VnaCBkb3plbnMgb2YgdGV4dCBsaW5lcy4gSXQmIzgyMTc7cyBzbWFsbCBkZXRhaWxzIHN1Y2ggYXMgdGhpcyB0aGF0IGhlbHAgdG8gc2lnbmlmaWNhbnRseSBpbXByb3ZlIGEgdXNlciBpbnRlcmZhY2UsIG1ha2luZyBpdCBlYXN5IHRvIHVzZS48L3A+CjxwIGNsYXNzPSJzaG93Y2FzZSI+PGEgaHJlZj0iaHR0cDovL3R3aXR0ZXIuY29tL3RoZW1jY3JvbmluIj48aW1nIGFsdD0iU2NyZWVuc2hvdCIgc3JjPSJodHRwOi8vbWVkaWEyLnNtYXNoaW5nbWFnYXppbmUuY29tL2ltYWdlcy9zb2NpYWwtdXNlci1pbnRlcmZhY2VzL3R3aXR0ZXIuanBnIiAvPjwvYT48L3A+CjxwPjxhIGhyZWY9Imh0dHA6Ly93d3cuZGVsaWNpb3VzLmNvbSI+RGVsaWNpb3VzPC9hPiB1c2VzIHRoaW4gMXB4LWdyZXkgbGluZXMgdG8gc2VwYXJhdGUgdGhlIHBvcHVsYXIgYm9va21hcmtzIG9mIGl0cyB1c2Vycy48L3A+CjxwIGNsYXNzPSJzaG93Y2FzZSI+PGEgaHJlZj0iaHR0cDovL3d3dy5kZWxpY2lvdXMuY29tIj48aW1nIGFsdD0iU2NyZWVuc2hvdCIgc3JjPSJodHRwOi8vbWVkaWExLnNtYXNoaW5nbWFnYXppbmUuY29tL2ltYWdlcy9zb2NpYWwtdXNlci1pbnRlcmZhY2VzL2RlbGljaW91cy1wb3B1bGFyLmdpZiIgd2lkdGg9IjQ4MiIgaGVpZ2h0PSIzNDIiIC8+PC9hPjwvcD4KPHA+WW91IGNhbiBhbHNvIHNlZSBhIHNlcGFyYXRpb24gYmV0d2VlbiBlbGVtZW50cyBiZWluZyB1c2VkIG9uIDxhIGhyZWY9Imh0dHA6Ly93d3cubWl4eC5jb20iPk1peHguY29tPC9hPi4gSnVzdCBsaWtlIG9uIFR3aXR0ZXIsIGEgc2luZ2xlIGdyZXkgcGl4ZWwgbGluZSBzZXBhcmF0ZXMgdGhlIGxhcmdlIGFtb3VudHMgb2YgdGV4dCwgbWFraW5nIGl0IG11Y2ggZWFzaWVyIHRvIHNjYW4uPC9wPgo8cCBjbGFzcz0ic2hvd2Nhc2UiPjxhIGhyZWY9Imh0dHA6Ly93d3cubWl4eC5jb20vdGVjaCI+PGltZyBhbHQ9IlNjcmVlbnNob3QiIHNyYz0iaHR0cDovL21lZGlhMS5zbWFzaGluZ21hZ2F6aW5lLmNvbS9pbWFnZXMvc29jaWFsLXVzZXItaW50ZXJmYWNlcy9taXh4LmpwZyIgLz48L2E+PC9wPgo8cD5PbiB0aGUgY29udHJhcnksIDxhIGhyZWY9Imh0dHA6Ly93d3cucmVkZGl0LmNvbSI+UmVkZGl0PC9hPiBkb2VzbiYjODIxNzt0IHVzZSBhIHNlcGFyYXRpb24gYmV0d2VlbiBzdG9yaWVzIHdoaWNoIG1ha2VzIGFuIGludGVyZmFjZSBtb3JlIGNsdXR0ZXJlZCwgYW5kIHRoZXJlZm9yZSBtb3JlIGRpZmZpY3VsdCB0byBzY2FuLiBTb21ldGltZXMsIGEgbGFyZ2UgYW1vdW50IG9mIGFjdGl2ZSB3aGl0ZSBzcGFjZSBtYXkgYWxzbyBoZWxwIHRvIHNlcGFyYXRlIGVsZW1lbnRzIGluIHRoZSBsYXlvdXQ7IGhvd2V2ZXIsIHRoZSBkaXNhZHZhbnRhZ2Ugb2YgdGhpcyBhcHByb2FjaCBpcyB0aGF0IHRoZSBwYWdlIG1heSBiZWNvbWUgdG9vIGxvbmcgYW5kIHRoZSB1c2VyIHdpbGwgaGF2ZSB0byBzY3JvbGwgdmVydGljYWxseS4gSW4gdGhlIFJlZGRpdCYjODIxNztzIGNhc2UgdGhlIHNjYW5uYWJpbGl0eSBpcyBpbXByb3ZlZCBieSB0aGUgYnJpZ2h0IHRpdGxlIGxpbmtzLiBUaGUgZm9jdXMgaXMgbWVhbnQgdG8gYmUgYnJvdWdodCB0byB0aGUgdGl0bGUgY29tcGxldGVseSwgd2hpY2ggaXMgZGVmaW5pdGVseSBhIGdvb2QgaWRlYSBpbiB0aGlzIGRlc2lnbi48L3A+CjxwIGNsYXNzPSJzaG93Y2FzZSI+PGEgaHJlZj0iaHR0cDovL3d3dy5taXh4LmNvbS90ZWNoIj48aW1nIGFsdD0iU2NyZWVuc2hvdCIgc3JjPSJodHRwOi8vbWVkaWEyLnNtYXNoaW5nbWFnYXppbmUuY29tL2ltYWdlcy9zb2NpYWwtdXNlci1pbnRlcmZhY2VzL3JlZGRpdC5qcGciIC8+PC9hPjwvcD4KPHA+QW5vdGhlciB0ZWNobmlxdWUgdG8gc2VwYXJhdGUgZWxlbWVudHMgaXMgYnkgdXNpbmcgYW4gYXBwcm9wcmlhdGUgbGF5b3V0IHN0cnVjdHVyZSB0aGF0IHdvdWxkIHZpc3VhbGx5IHNlcGFyYXRlIGNvbnRlbnQgYmxvY2sgZnJvbSBlYWNoIG90aGVyIG9yL2FuZCB1c2luZyB3aGl0ZXNwYWNlIGZvciB0aGUgc2FtZSBwdXJwb3NlLiBFLmcuIDxhIGhyZWY9Imh0dHA6Ly9zbGFzaGRvdC5vcmcvIj5TbGFzaGRvdDwvYT4gcHV0IGVhY2ggY29udGVudCBibG9jayBpbiBhbiBlYXNpbHkgcmVjb2duaXphYmxlIGJveCBhbmQgdXNlcyBiYWNrZ3JvdW5kLWltYWdlcyBmb3IgdGhlIGhlYWRsaW5lIHRvIGhpZ2hsaWdodCBlYWNoIGhlYWRsaW5lLjwvcD4KPHAgY2xhc3M9InNob3djYXNlIj48YSBocmVmPSJodHRwOi8vc2xhc2hkb3Qub3JnLyI+PGltZyBhbHQ9IlNjcmVlbnNob3QiIHNyYz0iaHR0cDovL21lZGlhMi5zbWFzaGluZ21hZ2F6aW5lLmNvbS9pbWFnZXMvc29jaWFsLXVzZXItaW50ZXJmYWNlcy9zbGFzaGRvdC5naWYiIHdpZHRoPSI0ODIiIGhlaWdodD0iNDQyIiAvPjwvYT48L3A+CjxwPjxhIGhyZWY9Imh0dHA6Ly93d3cuc3R1bWJsZXVwb24uY29tL3RhZy9waG90b3MvIj5TdHVtYmxlVXBvbjwvYT4gdXNlcyBhIHJpZ2lkIGdyaWQtYmFzZWQtc3RydWN0dXJlIGluIHdoaWNoIGVhY2ggY29udGVudCBpdGVtIGlzIHB1dCBpbiB0aGUgYmxvY2sgb2YgdGhlIHNhbWUgaGVpZ2h0IGFuZCB3aWR0aC4gVGhhdCYjODIxNztzIGFub3RoZXIgZGVzaWduIGFwcHJvYWNoIHRvIGNhbG0gc2VwYXJhdGlvbiBvZiBjb250ZW50IHRoYXQgd29ya3MgYXMgd2VsbC48L3A+CjxwIGNsYXNzPSJzaG93Y2FzZSI+PGEgaHJlZj0iaHR0cDovL3d3dy5zdHVtYmxldXBvbi5jb20vdGFnL3Bob3Rvcy8iPjxpbWcgYWx0PSJTY3JlZW5zaG90IiBzcmM9Imh0dHA6Ly9tZWRpYTEuc21hc2hpbmdtYWdhemluZS5jb20vaW1hZ2VzL3NvY2lhbC11c2VyLWludGVyZmFjZXMvc3UuZ2lmIiB3aWR0aD0iNDgyIiBoZWlnaHQ9IjM3NyIgLz48L2E+PC9wPgo8aDM+NS4gVHJlYXQgdGV4dCBhcyBVc2VyIEludGVyZmFjZTwvaDM+CjxwPkluIHRoZSBwcmVzZW50YXRpb24gPGEgaHJlZj0iaHR0cDovL3d3dy5jYW1lcm9ubW9sbC5jb20vYXJjaGl2ZXMvMDAxMjY2Lmh0bWwiPk5pbmUgc2tpbGxzIHRoYXQgc2VwYXJhdGUgZ29vZCBhbmQgZ3JlYXQgZGVzaWduZXJzPC9hPiBDYW1lcm9uIE1vbGwgbWVudGlvbmVkIHRoYXQgZ29vZCBkZXNpZ25lcnMgdHJlYXQgdGV4dCBhcyBjb250ZW50LCB3aGlsZSBncmVhdCBkZXNpZ25lcnMgdHJlYXQgdGV4dCBhcyB1c2VyIGludGVyZmFjZS4gV2hpbGUgY29udGVudCBpcyBiYXNpY2FsbHkgYSBodWdlIGJsb2NrIG9mIHRleHQsIHVzZXIgaW50ZXJmYWNlIGluY29ycG9yYXRlcyBzdWJ0bGUgdmFyaWF0aW9ucyBvZiB0ZXh0IGNvbG9yLCBiYWNrZ3JvdW5kLCBmb250LXNpemVzIGFuZCBsaW5rIHByZXNlbnRhdGlvbiB0byBtYWtlIHRoZSBjb250ZW50IG1vcmUgYWNjZXNzaWJsZS48L3A+CjxwPkluIGZhY3QsIG9uIHNvY2lhbCBtZWRpYSBzaXRlcyBhIGdvb2QgdXNlciBpbnRlcmZhY2UgcHJhY3RpY2UgaXMgdmFyeWluZyBzaXplIGFuZCBjb2xvciBvZiBlbGVtZW50cyB0byBjcmVhdGUgYSA8c3Ryb25nPmNsZWFyIHZpc3VhbCBhbmQgc3RydWN0dXJhbCBoaWVyYXJjaHkgb24gdGhlIHNpdGU8L3N0cm9uZz4uIFRoaXMgaXMgc2ltaWxhciB0byB0aGUgcHJldmlvdXMgdGlwIGJlY2F1c2UgdGhpcyB0ZWNobmlxdWUgaGVscHMgdG8gcHJvdmlkZSBzZXBhcmF0aW9uIGFuZCBkZWZpbmUgZWxlbWVudHMsIGFzIHdlbGwgYXMgY2xlYW5pbmcgdXAgdGhlIGludGVyZmFjZS4gQXBhcnQgZnJvbSBpbXByb3ZpbmcgdXNhYmlsaXR5LCB0cmVhdGluZyB0ZXh0IGFzIHVzZXIgaW50ZXJmYWNlIGhlbHBzIHRvIGltcHJvdmUgcmVhZGFiaWxpdHkgYmVjYXVzZSBpdCBhcnJhbmdlcyBjbGVhciByZWxhdGlvbnMgYmV0d2VlbiBkZXNpZ24gZWxlbWVudHMsIGltcGx5aW5nIHRoZWlyIHdlaWdodCBhbmQgaGVuY2UgdGhlIGltcG9ydGFuY2UgaW4gdGhlIGxheW91dC4gVGhlIHJlc3VsdDogdGhlIHBhZ2UgaXMgbXVjaCBlYXNpZXIgdG8gc2Nhbi48L3A+CjxwPkFzIGFuIGV4YW1wbGUgZm9yIHRoaXMgY29uY2VwdCwgY29uc2lkZXIgdGhlIDxhIGhyZWY9Imh0dHA6Ly93d3cuZGlnZy5jb20iPkRpZ2c8L2E+JiM4MjE3O3MgdXNlciBpbnRlcmZhY2UgKHNlZSB0aGUgaW1hZ2UgYmVsb3cpLiBXaGVuIGJyb3dzaW5nIGl0LCB5b3UmIzgyMTc7bGwgc3BvdCBtYW55IHZhcmlhdGlvbnMgaW4gc2l6ZXMgb2YgdGV4dHVhbCBlbGVtZW50cywgYW5kIGRpZmZlcmVudCBjb2xvcnMgaW4gdGV4dCBhbmQgaW4gb3RoZXIgZWxlbWVudHMgdXNlZCBpbiBhIHZlcnkgY29uc2lzdGVudCB3YXkuIEFsc28gbm90aWNlIGhvdyB3ZWxsIHRoZSBkZXNpZ24gbWFuYWdlcyB0byBwcm92aWRlIHVzZXJzIHdpdGggYSBjbGVhciBuYXZpZ2F0aW9uIHBhdGh3YXk7IHdoaWxlIHRoZSBtYWluIGxpbmsgaXMgdW5kZXJsaW5lZCBhbmQgaGFzIGEgYmx1ZSBjb2xvciwgdGhlICYjODIyMDttb3JlJiM4MjMwOyYjODIyMTstbGluayBpcyBncmV5LCB3aGlsZSBvdGhlciBsaW5rcyBhcmVuJiM4MjE3O3QgdW5kZXJsaW5lZCwgYW5kIHNvbWUgdGV4dHVhbCBlbGVtZW50cyBhcmUgcmVkIG9yIGdyZXkuPC9wPgo8cCBjbGFzcz0ic2hvd2Nhc2UiPjxhIGhyZWY9Imh0dHA6Ly93d3cuZGlnZy5jb20vIj48aW1nIGFsdD0iU2NyZWVuc2hvdCIgc3JjPSJodHRwOi8vbWVkaWExLnNtYXNoaW5nbWFnYXppbmUuY29tL2ltYWdlcy9zb2NpYWwtdXNlci1pbnRlcmZhY2VzL2RpZ2cuZ2lmIiB3aWR0aD0iNTAyIiBoZWlnaHQ9IjM3NyIgLz48L2E+PC9wPgo8cD5FYWNoIGNvbnRlbnQgYmxvY2sgaGFzIDcgdmFyaW91cyBkZXNpZ24gZWxlbWVudHMgKGhlYWRsaW5lLCBzb3VyY2UsIGRlc2NyaXB0aW9uLCB0aGUgJiM4MjIwO21vcmUmIzgyMjE7LWxpbmssIGNhdGVnb3J5IHNlY3Rpb24sIHRpbWUgc3RhbXAgYW5kIGZ1cnRoZXIgbGlua3MgYmVsb3cgdGhlIGRlc2NyaXB0aW9uKS4gSG93ZXZlciwgdGhlIGRlc2lnbiB3b3JrcyB3ZWxsLCBiZWNhdXNlIHRoZSB2aXN1YWwgd2VpZ2h0IG9mIGVhY2ggZWxlbWVudCBpcyB2ZXJ5IGRpc3RpbmN0aXZlIGFuZCBjb21tdW5pY2F0ZWQgdmVyeSBjbGVhcmx5LiBUaGF0JiM4MjE3O3MgYSBnb29kIGRlc2lnbi48L3A+CjxwPkFsc28sIHlvdSBjYW4gc2VlIGEgc2ltcGxlciBleGFtcGxlIG9uIHRoZSA8YSBocmVmPSJodHRwOi8vd3d3LnR3aXR0ZXIuY29tIj5Ud2l0dGVyPC9hPiYjODIxNztzIHNjcmVlbnNob3QgZnJvbSBhYm92ZS4gRmlyc3QgdGhlIHBvc3QgaXMgc2hvd24sIHRoZW4gYmVsb3cgaXMgc21hbGxlciBhbmQgbW9yZSBzdWJ0bGUgdGV4dCBpcyBkaXNwbGF5ZWQgJm5kYXNoOyBpdCBpcyBlYXN5IHRvIGZpbmQgb25seSBpZiB5b3UgYXJlIGxvb2tpbmcgZm9yIGl0LiBPdGhlcndpc2UsIHRoZSB1c2VyJiM4MjE3O3MgZXllIHdpbGwganVzdCBmbG93IGRpcmVjdGx5IG92ZXIgaXQsIHdoaWNoIGlzIGV4YWN0bHkgdGhlIHBvaW50LjwvcD4KPHAgY2xhc3M9InNob3djYXNlIj48YSBocmVmPSJodHRwOi8vdHdpdHRlci5jb20vdGhlbWNjcm9uaW4iPjxpbWcgYWx0PSJTY3JlZW5zaG90IiBzcmM9Imh0dHA6Ly9tZWRpYTIuc21hc2hpbmdtYWdhemluZS5jb20vaW1hZ2VzL3NvY2lhbC11c2VyLWludGVyZmFjZXMvdHdpdHRlci5qcGciIC8+PC9hPjwvcD4KPHA+QW5vdGhlciBleGFtcGxlIG9mIHRoaXMgaXMgPGEgaHJlZj0iaHR0cDovL3d3dy5wcm9wZWxsZXIuY29tLyI+UHJvcGVsbGVyPC9hPi4gVGhlIGl0ZW1zIGluIHRoZSBtYWluIGNvbnRlbnQgYXJlYSBhbHRlcm5hdGUgaW4gYmFja2dyb3VuZCBjb2xvciBvZiB3aGl0ZSBhbmQgZ3JleS4gVGhlIGVsZW1lbnRzIG9mIGVhY2ggYmxvY2sgaGF2ZSBkaWZmZXJlbnQgc2hhZGVzLCBhbmQgdGhlIG1haW4gY29udGVudCBoYXMgYSBjbGVhcmx5IHZpc2libGUgYm9yZGVyLiBUaGVzZSBjb2xvciB2YXJpYXRpb25zIG1ha2UgdGhlIGludGVyZmFjZSBsb29rIG11Y2ggbmljZXIuPC9wPgo8cCBjbGFzcz0ic2hvd2Nhc2UiPjxhIGhyZWY9Imh0dHA6Ly93d3cucHJvcGVsbGVyLmNvbS8iPjxpbWcgYWx0PSJTY3JlZW5zaG90IiBzcmM9Imh0dHA6Ly9tZWRpYTIuc21hc2hpbmdtYWdhemluZS5jb20vaW1hZ2VzL3NvY2lhbC11c2VyLWludGVyZmFjZXMvcHJvcGVsbGVyLmpwZyIgLz48L2E+PC9wPgo8aDM+Ni4gU2ltcGxlIGFuZCBVc2FibGUgRm9ybXM8L2gzPgo8cD5XZWIgZm9ybXMgYXJlIHByb2JhYmx5IHRoZSBtb3N0IGltcG9ydGFudCBkZXNpZ24gZWxlbWVudCBmb3Igc29jaWFsIG1lZGlhIGFuZCBuZXR3b3JraW5nIHNpdGVzLiBGb3JtcyBhbmQgaW5wdXRzIGFyZSB1c2VkIGluIGV2ZXJ5dGhpbmcgZnJvbSBzaWduLXVwIHRvIHNlYXJjaCwgbG9nLWluLCByZXBseWluZyB0byBhIHBvc3Qgb3IgYWRkaW5nIHNvbWUgb3RoZXIgY29udGVudC4gU2luY2UgZm9ybXMgYXJlIGV4dHJlbWVseSBpbXBvcnRhbnQsIHRoZXkgbXVzdCBiZSB1c2FibGUuIFRoaXMgaXMgZXNwZWNpYWxseSB0cnVlIGZvciB0aGUgc2lnbi11cCBmb3JtcywgYmVjYXVzZSB3aXRob3V0IGEgJiM4MjIwO3dvcmtpbmcmIzgyMjE7IHNpZ24tdXAtZm9ybSwgaXQgbWF5IGJlIGRpZmZpY3VsdCB0byBnYWluIGEgY3JpdGljYWwgbWFzcyBvZiB1c2VycyB0aGF0IHdvdWxkIGtlZXAgYSBzb2NpYWwgbWVkaWEgc2l0ZSBhbGl2ZS48L3A+CjxwPkEgbnVtYmVyIG9mIGZhY3RvcnMgd2lsbCBoZWxwIHRvIDxzdHJvbmc+a2VlcCB0aGUgZm9ybXMgdXNhYmxlPC9zdHJvbmc+LiBUaGUgZWFzaWVzdCBpcyBrZWVwaW5nIGl0IGFzIHNob3J0IGFzIHBvc3NpYmxlLiBNYW55IHNvY2lhbCBtZWRpYSBzaXRlcyBpbmNsdWRlIG9ubHkgZXNzZW50aWFscyBpbiB0aGUgc2lnbi11cC1mb3JtIChvbmx5IGUtbWFpbCBhbmQgcGFzc3dvcmQpIGFuZCBsZWF2ZSB0aGUgZXh0cmEgaW5mb3JtYXRpb24gZm9yIHRoZSB1c2VyIHRvIGVkaXQgb25jZSB0aGVpciBhY2NvdW50IGlzIGNyZWF0ZWQgKGUuZy4gYmlvLCBsb2NhdGlvbiwgYW5kIG90aGVyIGdlbmVyYWwgaW5mb3JtYXRpb24pLiBJZiBwb3NzaWJsZSBkb24mIzgyMTc7dCByZXF1aXJlIGFueSBlLW1haWwgb3IgcGFzc3dvcmQtY29uZmlybWF0aW9uIGFuZCBkbyBub3QgdXNlIGEgY2FwdGNoYS48L3A+CjxwPlNvbWUgc2VydmljZXMgcmVxdWlyZSBlLW1haWwgY29uZmlybWF0aW9uIGFuZCBlLW1haWwgYWN0aXZhdGlvbiB3aGljaCB0YWtlcyB1c2VyJiM4MjE3O3MgdGltZSBhbmQgZG9lc24mIzgyMTc7dCBuZWNlc3NhcmlseSBoZWxwIHRoZSB1c2VyIHRvIHN0YXJ0IHBsYXlpbmcgYXJvdW5kIHdpdGggdGhlIHN5c3RlbSBpbW1lZGlhdGVseS4gVGhlIHJ1bGUgb2YgdGh1bWJzOiA8c3Ryb25nPnRoZSBzaW1wbGVyIHlvdXIgd2ViIGZvcm0gaXMsIHRoZSBiZXR0ZXIgaXQgaXMgZm9yIHRoZSB1c2VyPC9zdHJvbmc+OyB0aGUgbW9yZSBmaWVsZHMgYW5kIHJlcXVpcmVtZW50cyB5b3UgcmVtb3ZlLCB0aGUgbW9yZSB1c2VycyB3aWxsIHNpZ24tdXAgZm9yIHlvdXIgc2VydmljZS4gWW91IHdpbGwgZmluZCBtb3JlIHVzZWZ1bCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZGVzaWduIG9mIHVzYWJsZSBzaWduLXVwIGZvcm1zIGluIG91ciBzdHVkeSA8YSBocmVmPSJodHRwOi8vd3d3LnNtYXNoaW5nbWFnYXppbmUuY29tLzIwMDgvMDcvMDQvd2ViLWZvcm0tZGVzaWduLXBhdHRlcm5zLXNpZ24tdXAtZm9ybXMvIj5XZWIgRm9ybSBEZXNpZ24gUGF0dGVybnM6IFNpZ24tVXAgRm9ybXM8L2E+IChzZWUgPGEgaHJlZj0iaHR0cDovL3d3dy5zbWFzaGluZ21hZ2F6aW5lLmNvbS8yMDA4LzA3LzA4L3dlYi1mb3JtLWRlc2lnbi1wYXR0ZXJucy1zaWduLXVwLWZvcm1zLXBhcnQtMi8iPnBhcnQgMjwvYT4gYXMgd2VsbCkuPC9wPgo8cD48YSBocmVmPSJodHRwOi8vd3d3LnJlZGRpdC5jb20vIj5SZWRkaXQ8L2E+IHVzZXMgYSB2ZXJ5IHNob3J0IHNpZ24tdXAgZmllbGQgdGhhdCBjYW4gYmUgZmlsbGVkIGluIGluIHNlY29uZHMuIE5vIGUtbWFpbCBjb25maXJtYXRpb24gb3IgYWN0aXZhdGlvbiBpcyByZXF1aXJlZC4gVGhlIGZvcm0gaXMgY2xlYW4gYW5kIHNpbXBsZS48L3A+CjxwIGNsYXNzPSJzaG93Y2FzZSI+PGEgaHJlZj0iaHR0cDovL3d3dy5yZWRkaXQuY29tLyI+PGltZyBhbHQ9IlNjcmVlbnNob3QiIHNyYz0iaHR0cDovL21lZGlhMS5zbWFzaGluZ21hZ2F6aW5lLmNvbS9pbWFnZXMvc29jaWFsLXVzZXItaW50ZXJmYWNlcy9yZWRkaXQuZ2lmIiB3aWR0aD0iMjgzIiBoZWlnaHQ9IjM4OSIgLz48L2E+PC9wPgo8cD48YSBocmVmPSJodHRwczovL3R3aXR0ZXIuY29tL3NpZ251cCI+VHdpdHRlcjwvYT4gYWxzbyB1c2VzIGEgc2ltcGxlIGFuZCBhIGNsZWFuIHNpZ24tdXAgZm9ybSB0aGF0IGRvZXNuJiM4MjE3O3QgcmVxdWlyZSBwYXNzd29yZCBjb25maXJtYXRpb24uIFdoZW4gYW4gaW5wdXQgZmllbGQgaXMgY2xpY2tlZCwgYSBoaW50IGlzIGRpc3BsYXllZCByaWdodCB0byB0aGUgaW5wdXQgZmllbGQsIGluZm9ybWluZyB0aGUgdXNlciBvbiB0aGUgZGV0YWlscyBvZiB0aGUgaW5wdXQuPC9wPgo8cCBjbGFzcz0ic2hvd2Nhc2UiPjxhIGhyZWY9Imh0dHBzOi8vdHdpdHRlci5jb20vc2lnbnVwIj48aW1nIGFsdD0iU2NyZWVuc2hvdCIgc3JjPSJodHRwOi8vbWVkaWExLnNtYXNoaW5nbWFnYXppbmUuY29tL2ltYWdlcy9zb2NpYWwtdXNlci1pbnRlcmZhY2VzL3R3aXR0ZXIuZ2lmIiB3aWR0aD0iNDgyIiBoZWlnaHQ9IjUyNCIgLz48L2E+PC9wPgo8cD5UaGUgdWx0aW1hdGUgZXhhbXBsZSBvZiBhbiBlYXN5IHNpZ24tdXAtZm9ybSBpcyA8YSBocmVmPSJodHRwOi8vd3d3LnR1bWJsci5jb20vIj5UdW1ibHI8L2E+LiBUaGUgc2lnbi11cCBoYXMgdGhyZWUgcGllY2VzOiBlbWFpbCwgcGFzc3dvcmQsIGFuZCB1c2VybmFtZSwgdGhhdCYjODIxNztzIGl0LjwvcD4KPHAgY2xhc3M9InNob3djYXNlIj48YSBocmVmPSJodHRwOi8vd3d3LnR1bWJsci5jb20vIj48aW1nIGFsdD0iU2NyZWVuc2hvdCIgc3JjPSJodHRwOi8vbWVkaWEyLnNtYXNoaW5nbWFnYXppbmUuY29tL2ltYWdlcy9zb2NpYWwtdXNlci1pbnRlcmZhY2VzL3R1bWJsci5qcGciIC8+PC9hPjwvcD4KPGgzPjcuIFJlYWwtVGltZSBVcGRhdGVzPC9oMz4KPHA+T25lIG9mIHRoZSByZWFzb25zIHdoeSBtaWNyby1ibG9nZ2luZyBzZXJ2aWNlcyBoYXZlIG1hbmFnZWQgdG8gdGFrZSBvZmYgb3ZlciB0aGUgbGFzdCB5ZWFycywgd2FzIHRoZWlyIGFiaWxpdHkgdG8gYnJpbmcgdGhlIG5ldywgJiM4MjIwO3JlYWwtdGltZSYjODIyMTsgZGltZW5zaW9uIHRvIHRoZSBzb2NpYWwgaW50ZXJhY3Rpb24gb24gdGhlIFdlYi4gRGlmZmVyZW50IGZyb20gaW5zdGFudCBtZXNzYWdpbmcgd2hlcmUgdXNlcnMgd2VyZSBtb3N0bHkgZm9jdXNlZCBvbiB0aGUgdHdvLXdheS1jb252ZXJzYXRpb25zLCBUd2l0dGVyICYjMzg7IENvLiBkZWxpdmVyZWQgbWFueS13YXlzLWNvbnZlcnNhdGlvbnMgdG8gdGhlIFdlYi48L3A+CjxwPk1vZGVybiB1c2VycyB3YW50IHRvIHNlZSBhbiBpbmNvbWluZyBtZXNzYWdlIG9yIHBvc3QgYXMgc29vbiBhcyBpdCBjb21lcywgPHN0cm9uZz5vYnNlcnZpbmcgd2hhdCBoYXBwZW5zIDxlbT5yaWdodCBub3c8L2VtPiBpbiBoaXMgc29jaWFsIGdyYXBoIGluIHJlYWwtdGltZTwvc3Ryb25nPi4gRm9yIGRlc2lnbmVycyBvZiBzb2NpYWwgdXNlciBpbnRlcmZhY2UgaXQgbWVhbnMgdGhhdCB1c2VycyBzaG91bGQgaGF2ZSBhIHJlYWwtdGltZSB1cGRhdGUgZmVhdHVyZSB0aGF0IHdvdWxkIGRlbGl2ZXIgdXBkYXRlcyBhcyBzb29uIGFzIHRoZXkgYXJlIHN1Ym1pdHRlZCB3aXRoaW4gdGhlIGFwcGxpY2F0aW9uLiBBbiBhdXRvbWF0aWMgYW5kIGV5ZS1jYXRjaGluZyAoeWV0IHVub2J0cnVzaXZlKSB1cGRhdGUgaGVscHMgdGhlIHVzZXIgdG8gJiM4MjIwO3N0YXkgaW4gZmxvdyYjODIyMTssIGkuZS4gZm9jdXMgb24gaGlzIHByaW1hcnkgdGFza3MgYW5kIGdldCBpbnN0YW50bHkgaW5mb3JtZWQgYWJvdXQgc2Vjb25kYXJ5IGluZm9ybWF0aW9uIHRoYXQgbWF5IGJlIGltcG9ydGFudCBhcyB3ZWxsLjwvcD4KPHAgY2xhc3M9InNob3djYXNlIj48YSBocmVmPSJodHRwOi8vd3d3LnR3aXR0ZXIuY29tLyI+PGltZyBhbHQ9IlNjcmVlbnNob3QiIHNyYz0iaHR0cDovL21lZGlhMi5zbWFzaGluZ21hZ2F6aW5lLmNvbS9pbWFnZXMvc29jaWFsLXVzZXItaW50ZXJmYWNlcy90dy5naWYiIHdpZHRoPSI0NTgiIGhlaWdodD0iMjk5IiAvPjwvYT48YnIgLz48ZW0+PGEgaHJlZj0iaHR0cDovL3R3aXR0ZXIuY29tLyNzZWFyY2g/cT1jc3MiPlR3aXR0ZXIgc2VhcmNoPC9hPiBzaG93cyB1c2VyIHVwZGF0ZXMgaW4gcmVhbC10aW1lLCB3aXRoIG5ldyB1cGRhdGVzIGhpZ2hsaWdodGVkIGF0IHRoZSB0b3Agb2YgdGhlIHNlYXJjaCBib3guIFRoaXMgaXMgcHJvYmFibHkgaG93IHRoZSBzZWFyY2ggYW5kIG5ld3Mgc3RyZWFtIHdpbGwgbG9vayBsaWtlIGluIHRoZSBmdXR1cmUgKEdvb2dsZSBhbmQgRGlnZywgd2UgYXJlIGxvb2tpbmcgYXQgeW91KS48L2VtPjwvcD4KPHAgY2xhc3M9InNob3djYXNlIj48YSBocmVmPSJodHRwOi8vd3d3LmZhY2Vib29rLmNvbS8iPjxpbWcgYWx0PSJTY3JlZW5zaG90IiBzcmM9Imh0dHA6Ly9tZWRpYTEuc21hc2hpbmdtYWdhemluZS5jb20vaW1hZ2VzL3NvY2lhbC11c2VyLWludGVyZmFjZXMvZmIuZ2lmIiB3aWR0aD0iNDg2IiBoZWlnaHQ9IjIyNSIgLz48L2E+PGJyIC8+PGVtPkZhY2Vib29rIHNob3dzIHRoZSB1cGRhdGVzIGF0IHRoZSB0b3Agb2YgdGhlIHBhZ2UgYW5kIGxldHMgdGhlIHVzZXIgc2VlIHRoZW0gb24gZGVtYW5kICZuZGFzaDsgd2l0aCBBSkFYIGFuZCB3aXRob3V0IGEgc2l0ZSByZWxvYWQsIG9mIGNvdXJzZS48L2VtPjwvcD4KPGgzPjguIFdvcmQtT2YtTW91dGgtQWR2ZXJ0aXNpbmcgYW5kIFBlcnNvbmFsaXphdGlvbjwvaDM+CjxwPlByb2JhYmx5IHRoZSBiZXN0IHN0cmF0ZWd5IGZvciBhbiBlZmZlY3RpdmUgd29yZC1vZi1tb3V0aC1hZHZlcnRpc2luZyBpcyBwcm92aWRpbmcgYSBnb29kIHF1YWxpdHkgb2Ygc2VydmljZSBhbmQgYSBnb29kIHVzZXIgZXhwZXJpZW5jZS4gVGhlIG1vcmUgY29tZm9ydGFibGUgYSB1c2VyIHdpbGwgZmVlbCB3aXRoIGEgc29jaWFsIG5ldHdvcmtpbmcgc2l0ZSwgdGhlIG1vcmUgbGlrZWx5IHNoZSB3aWxsIGJlIHRvIGltcHJvdmUgaXRzIHNvY2lhbCBjYXBpdGFsIGFuZCBleHBhbmQgaGVyIHNvY2lhbCBjaXJjbGVzLiBUbyBhY2hpZXZlIHRoaXMsIGEgc29jaWFsIG5ldHdvcmtpbmcgc2l0ZSBuZWVkcyB0byBvZmZlciBhdHRyYWN0aXZlIGZlYXR1cmVzIGFuZCBwcm92aWRlIGZ1bmN0aW9ucyB0aGF0IHdvdWxkIGhhdmUgYWR2YW50YWdlcyBib3RoIG9ubGluZSBhbmQgb2ZmbGluZS4gVGhlcmVmb3JlIGl0JiM4MjE3O3MgcXVpdGUgdW5kZXJzdGFuZGFibGUgdGhhdCBzb2NpYWwgbmV0d29ya2luZyBzaXRlcyBvZnRlbiB1dGlsaXplIHBlcnNvbmFsaXphdGlvbiwgb2ZmZXJpbmcgPHN0cm9uZz5tb3JlIGZsZXhpYmxlIGFuZCBtb3JlIGFkYXB0aXZlIHVzZXIgaW50ZXJmYWNlczwvc3Ryb25nPi48L3A+CjxwPk9uIGl0cyBjb3JlLCBwZXJzb25hbGl6YXRpb24gaXMgYSB2ZXJ5IHBvd2VyZnVsIHRlY2huaXF1ZSB0aGF0IGNhbiBiZSB1dGlsaXplZCB0byBkZWxpdmVyIG9ubHkgcmVsZXZhbnQgY29udGVudCB0byB0aGUgdXNlcnMgb2YgYSBzb2NpYWwgYXBwbGljYXRpb24uIFJlY29tbWVuZGF0aW9uIHN5c3RlbXMgYXJlIG9mdGVuIHVzZWQgdG8gcHJvdmlkZSB1c2VycyB3aXRoIHRoZSBpbmZvcm1hdGlvbiB0aGF0IGlzIHZlcnkgbGlrZWx5IHRvIGludGVyZXN0IHRoZW0gb3IgbWVldCB0aGVpciBleHBlY3RhdGlvbnMuIEl0IGlzIGltcG9ydGFudCB0byBtZW50aW9uIHRoYXQgc3VjaCBzeXN0ZW1zIHVzdWFsbHkgcmVxdWlyZSBhIGxvdCBvZiB0aW1lIHRvIHRha2Ugb2ZmLCBiZWNhdXNlIGluIHRoZSB2ZXJ5IGJlZ2lubmluZyB0aGV5IGhhdmUgdmVyeSBsaXR0bGUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHVzZXIgYW5kIGhpcyBwcmVmZXJlbmNlcyBhbmQgYXJlIHRoZXJlZm9yZSB1bmFibGUgdG8gc3VnZ2VzdCB1c2VmdWwgcmVjb21tZW5kYXRpb25zLiBDb250aW51b3VzIGxlYXJuaW5nIG9mIGludGVyZXN0cywgYmFzZWQgdXBvbiB1c2VycyYjODIxNzsgYWN0aXZpdGllcywgc2VhcmNoIGxvZ3MgYW5kIG90aGVyIGFjdGlvbnMgaXMgdGhlbiB1c2VkIHRvIGNyZWF0ZSBhIG1vZGVsIG9mIHRoZSB1c2VyIGFuZCBzZWFyY2ggZm9yIGdvb2QgcGVyc29uYWxpemVkIHN1Z2dlc3Rpb25zLjwvcD4KPHA+QWdhaW4sIERpZ2cgZG9lcyB0aGlzIHdpdGggdGhlaXIgPGEgaHJlZj0iaHR0cDovL3d3dy51aWUuY29tL2FydGljbGVzL3JlY29tbWVuZGF0aW9uX3N5c3RlbXMvIj5EaWdnIFJlY29tbWVuZGF0aW9uIEVuZ2luZTwvYT4uIFdpdGggdGhpcyBlbmdpbmUsIHRoZSB1c2VyIGNhbiBzZWUgc3RvcmllcyB0aGF0IGFyZSBEdWdnIGJ5IERpZ2dlcnMgd2hvIGxpa2Ugc3RvcmllcyB0aGF0IHlvdSBsaWtlLiBJdCBhbHNvIHJlY29tbWVuZHMgdXNlcnMgdGhhdCBsaWtlIHN0b3JpZXMgc2ltaWxhciB0byB5b3UuPC9wPgo8cCBjbGFzcz0ic2hvd2Nhc2UiPjxhIGhyZWY9Imh0dHA6Ly9kaWdnLmNvbS8iPjxpbWcgYWx0PSJTY3JlZW5zaG90IiBzcmM9Imh0dHA6Ly9tZWRpYTEuc21hc2hpbmdtYWdhemluZS5jb20vaW1hZ2VzL3NvY2lhbC11c2VyLWludGVyZmFjZXMvZGlnZzIuanBnIiAvPjwvYT48L3A+CjxwPkl0IGlzIGltcG9ydGFudCB0byB1bmRlcnN0YW5kIHRoYXQgbW9zdCB1c2VycyBvZiBzb2NpYWwgbmV0d29ya2luZyBhcHBsaWNhdGlvbnMgYXJlIG5vdCBqdXN0IGxvb2tpbmcgZm9yIHdheXMgdG8gY29ubmVjdCB3aXRoIHRoZSBwZW9wbGUgdGhhdCB0aGV5IGFscmVhZHkga25vdyAoYWx0aG91Z2ggYWNjb3JkaW5nIHRvIEpvc2h1YSBQb3J0ZXImIzgyMTc7cyBib29rICYjODIyMDtEZXNpZ25pbmcgZm9yIHRoZSBTb2NpYWwgV2ViJiM4MjIxOywgdGhlIGZpcnN0IHRoaW5ncyB1c2VycyBkbyBpcyBjb25uZWN0aW5nIHdpdGggdGhlIHBlb3BsZSB0aGV5IGtub3cpLCBidXQgZGlzY292ZXJpbmcgbmV3LCBsaWtlLW1pbmRlZCBwZW9wbGUgKHRoYW5rcywgPGEgaHJlZj0iaHR0cDovL3R3aXR0ZXIuY29tL2JudW5uYWxseS9zdGF0dXMvMjAyMDQ0MDQxNyI+QnJhZCBOdW5uYWxseTwvYT4pLiBQZXJzb25hbGl6ZWQgcmVjb21tZW5kYXRpb24gc3lzdGVtcyBhcmUgb2Z0ZW4gdmVyeSBwb3B1bGFyIGluIHNvY2lhbCBhcHBsaWNhdGlvbnMsIGJlY2F1c2UgdGhleSBpbXByb3ZlIHRoZSBzb2NpYWwgcHJlc2VuY2Ugb2YgYSB1c2VyIGFuZCBoZWxwIHRvIGVzdGFibGlzaCBuZXcgY29ubmVjdGlvbnMuPC9wPgo8cD5BcGFydCBmcm9tIHRoYXQsIG1vc3Qgc29jaWFsIG5ldHdvcmtpbmcgc2l0ZXMgYWxzbyBtYWtlIGl0IGVhc3kgZm9yIHVzZXJzIHRvIDxzdHJvbmc+aW52aXRlIHRoZWlyIGZyaWVuZHM8L3N0cm9uZz4gdG8gdGhlIG5ldHdvcmsgYW5kIHNwcmVhZCB0aGUgd29yZCBpbiBzb2NpYWwgY2lyY2xlcyAoJiM4MjIxO3NoYXJlIHRoaXMgbWVzc2FnZSYjODIyMTssICYjODIyMDtzaGFyZSB0aGlzIGxpbmsmIzgyMjE7IGV0Yy4pLiBGYWNlYm9vayYjODIxNztzICYjODIyMDtDb25uZWN0IHdpdGggbW9yZSBmcmllbmRzJiM4MjIxOyBmZWF0dXJlIGlzIGV4ZW1wbGFyeSBmb3IgdGhpcyBzdHJhdGVneS48L3A+CjxwPlRoZSByZWFzb24gYmVoaW5kIGl0IGlzIHRoZSBjbGFzc2ljIDxzdHJvbmc+bmV0d29yayBlZmZlY3Q8L3N0cm9uZz4gJm5kYXNoOyB0aGUgZWZmZWN0IHRoYXQgb25lIHVzZXIgb2YgYSBzZXJ2aWNlIGhhcyBvbiB0aGUgdmFsdWUgb2YgdGhhdCBwcm9kdWN0IHRvIG90aGVyIHBlb3BsZS4gVGhlIG1vcmUgcGVvcGxlIHVzZSBGYWNlYm9vaywgdGhlIG1vcmUgdmFsdWFibGUgRmFjZWJvb2sgaXMgdG8gZWFjaCBvd25lci4gVGhpcyBjcmVhdGVzIGEgcG9zaXRpdmUgZWZmZWN0IGJlY2F1c2UgYSB1c2VyIG1heSBzaWduIHVwIGluIEZhY2Vib29rIHdpdGhvdXQgaW50ZW5kaW5nIHRvIGNyZWF0ZSB2YWx1ZSBmb3Igb3RoZXIgdXNlcnMsIGJ1dCBkb2VzIHNvIGluIGFueSBjYXNlLiBUaGUgYWNjdW11bGF0aW9uIG9mIHNtYWxsICYjODIyMDtuZXR3b3JrIGNvbnRyaWJ1dGlvbnMmIzgyMjE7IHJlc3VsdHMgaW4gYSB2YWx1YWJsZSBhbmQgaGlnaGx5IHBvcHVsYXIgYXBwbGljYXRpb25zICZuZGFzaDsgd2hpY2ggRmFjZWJvb2sgaGFzIGNlcnRhaW5seSBiZWNvbWUgdG9kYXkuPC9wPgo8cCBjbGFzcz0ic2hvd2Nhc2UiPjxhIGhyZWY9Imh0dHA6Ly93d3cuZmFjZWJvb2suY29tLyI+PGltZyBhbHQ9IlNjcmVlbnNob3QiIHNyYz0iaHR0cDovL21lZGlhMi5zbWFzaGluZ21hZ2F6aW5lLmNvbS9pbWFnZXMvc29jaWFsLXVzZXItaW50ZXJmYWNlcy9jb25uZWN0LmdpZiIgd2lkdGg9IjI4MyIgaGVpZ2h0PSIyOTciIC8+PC9hPjwvcD4KPHA+RmFjZWJvb2sgZ29lcyBldmVuIGZ1cnRoZXIgYW5kIG1ha2VzIGl0IHBvc3NpYmxlIGZvciB1c2VycyB0byA8c3Ryb25nPmludGVncmF0ZSB0aGVpciBjb250YWN0cyBmcm9tIG90aGVyIHNlcnZpY2VzPC9zdHJvbmc+IChlLmcuIGZyb20gR29vZ2xlIE1haWwpIHRvIEZhY2Vib29rIGFuZCBpbnZpdGUgdGhlbSBhdXRvbWF0aWNhbGx5IHVzaW5nIHRoZSBvcGVuIEFQSXMgZnJvbSBvdGhlciBzb2NpYWwgc2VydmljZSBwcm92aWRlcnMuIE5vIHVzZXIgd291bGQgd2lsbGluZ2x5IHRha2UgdGltZSB0byBtYW51YWxseSBpbnZpdGUgZWFjaCBvZiBoaXMgZnJpZW5kcyB0byBhbiBhcHBsaWNhdGlvbiAmbmRhc2g7IEZhY2Vib29rIHRha2VzIGNhcmUgb2YgaXQsIGF1dG9tYXRpY2FsbHkgYW5kIHBhaW5sZXNzbHkuPC9wPgo8cCBjbGFzcz0ic2hvd2Nhc2UiPjxhIGhyZWY9Imh0dHA6Ly93d3cuZmFjZWJvb2suY29tLyI+PGltZyBhbHQ9IlNjcmVlbnNob3QiIHNyYz0iaHR0cDovL21lZGlhMi5zbWFzaGluZ21hZ2F6aW5lLmNvbS9pbWFnZXMvc29jaWFsLXVzZXItaW50ZXJmYWNlcy9mYWNlYm9vazIuZ2lmIiB3aWR0aD0iNTAwIiBoZWlnaHQ9IjM5NSIgLz48L2E+PC9wPgo8aDM+OS4gVXNlci1DZW50cmljIFVzZXIgSW50ZXJmYWNlPC9oMz4KPHA+U2luY2Ugc29jaWFsIHNvZnR3YXJlIGlzIDxlbT5zb2NpYWw8L2VtPiwgaXQgcHJvdmlkZXMgdXNlcnMgd2l0aCBhIHVzZXIgaW50ZXJmYWNlIHRoYXQgaXMgc3Ryb25nbHkgZm9jdXNlZCBvbiB0aGUgcGVyc29uYWwgaW50ZXJlc3RzIG9mIGl0cyB1c2Vycy4gQW5kIGJlY2F1c2Ugc29jaWFsIG1lZGlhIGFuZCBzb2NpYWwgbmV0d29ya2luZyBzaXRlcyBsaXZlIGJ5IHRoZSBhY3Rpb25zIG9mIGl0cyB1c2VycywgaXQmIzgyMTc7cyBubyB3b25kZXIgdGhhdCBzb2NpYWwgdXNlciBpbnRlcmZhY2VzIGFyZSA8c3Ryb25nPmV4dHJlbWVseSB1c2VyLWNlbnRyaWM8L3N0cm9uZz4uIFR3aXR0ZXIsIEZhY2Vib29rIGFuZCBvdGhlciBzb2NpYWwgYXBwbGljYXRpb25zIHB1dCB0aGUgdXNlciBpbiB0aGUgbWlkZGxlIG9mIHRoZSBhcHBsaWNhdGlvbiwgZm9jdXNpbmcgb24gdGhlIGxpdHRsZSBkZXRhaWxzIG9mIHVzZXJzJiM4MjE3OyBwcm9maWxlcywgc3VnZ2VzdGluZyBuZXcgZnJpZW5kcywgaW50ZXJlc3RzLCBldmVudHMsIGdyb3VwcyBldGMuIGluIHRoZSBhdHRlbXB0IHRvIGV4dGVuZCB0aGVpciBzb2NpYWwgY2lyY2xlcyBhbmQgaW50ZW5zaWZ5IHRoZSBlbmdhZ2VtZW50IG9mIHRoZSB1c2VyLjwvcD4KPHA+RmFjZWJvb2smIzgyMTc7cyBmcm9udCBwYWdlIGlzIGV4ZW1wbGFyeSBmb3IgYW4gPHN0cm9uZz5lZ29jZW50cmljIHVzZXIgaW50ZXJmYWNlPC9zdHJvbmc+LiBJdCBwcm92aWRlcyBkZXRhaWxlZCBpbmZvcm1hdGlvbiBhYm91dCB1cGRhdGVzIGFuZCBub3RpZmljYXRpb25zIG9mIGEgdXNlciBhbmQgYWxzbyBwcm92aWRlcyBhIG9uZS1jbGljay1pbnRlcmZhY2UgdGhhdCBtYWtlcyBpdCBlYXN5IHRvIHVwZGF0ZSB0aGUgY3VycmVudCBzdGF0dXMsIGhpZGUgaW5mb3JtYXRpb24gcHJvdmlkZWQgYnkgZnJpZW5kcyBhbmQgaXQgdXBkYXRlcyB5b3UgYWJvdXQgcGVvcGxlIGEgdXNlciBtYXkga25vdyBvciBncm91cHMgb3IgY29udmVyc2F0aW9ucyB0aGF0IHRoZSB1c2VyIG1heSBiZSBpbnRlcmVzdGVkIGluLiBIZW5jZSBGYWNlYm9vayBlbXBoYXNpemVzIHRoZSBwZXJzb25hbCB2YWx1ZSBvZiB0aGUgYXBwbGljYXRpb24sIHB1dHRpbmcgdGhlIHBlcnNvbiBhdCB0aGUgY2VudGVyIG9mIHRoZSBzb2Z0d2FyZS4gVHdpdHRlciBpcyBhbm90aGVyIGV4YW1wbGUgZm9yIGEgc2ltaWxhciBhcHByb2FjaDogdGhlIGZyb250IHBhZ2UgaXMgYWxsIGFib3V0IHRoZSB1c2VyLCBoaXMgY29ubmVjdGlvbnMgYW5kIGNvbnZlcnNhdGlvbnMgYW1vbmcgaGlzIGZyaWVuZHMuPC9wPgo8cD5Gcm9tIHRoZSB1c2FiaWxpdHkgcG9pbnQgb2YgdmlldywgdGhpcyBhcHByb2FjaCBpcyBhbG1vc3Qgb2J2aW91cyAmbmRhc2g7IHNpbmNlIGFuIGFwcGxpY2F0aW9uIGlzIGNyZWF0ZWQgZm9yIHRoZSBjdXN0b21lciwgaXQgc2hvdWxkIGJlIGFsbCBhYm91dCB0aGUgY3VzdG9tZXIuIEhvd2V2ZXIsIG1vc3Qgc29jaWFsIGFwcGxpY2F0aW9ucyBhcmUgbm90IHRhc2stc3BlY2lmaWMgbGlrZSBjb21tb24gb25saW5lLWJhbmtpbmctc29mdHdhcmUsIGJ1dCBtb3JlIGFjdGl2aXR5LXNwZWNpZmljOiBpdCYjODIxNztzIGFsbCBhYm91dCBlbmdhZ2VtZW50IGFuZCBiZWluZyBjb25uZWN0ZWQuIEFuZCBpdCYjODIxNztzIGFsc28gYWJvdXQgdXNpbmcgdGhlIHNlcnZpY2Ugbm90IHRvIHNvbHZlIHNpbmdsZSB0YXNrcywgYnV0IHRvIHVzZSB0aGUgYXBwbGljYXRpb24gY29udGludW91c2x5IGFuZCBhcyBvZnRlbiBhcyBwb3NzaWJsZS4gVGhlIG1vcmUgZW5nYWdlZCB0aGUgdXNlciBpcywgdGhlIG1vcmUgdHJhZmZpYyBzaGUgZGVsaXZlcnMgYmFjayB0byB0aGUgc2VydmljZSBhbmQgdGhlIG1vcmUgdXNlcnMgYXJlIGdldHRpbmcgZW5nYWdlZCBieSB0aGUgd29yZCBvZiBtb3V0aCBhZHZlcnRpc2luZy4gVGhhdCYjODIxNztzIHRoZSBrZXkgb2Ygc29jaWFsIGFwcGxpY2F0aW9ucyAmbmRhc2g7IGFuZCBlZ29jZW50cmljIHVzZXIgaW50ZXJmYWNlcyBsZXZlcmFnZSB0aGlzIHN0cmF0ZWd5IHRvIGVmZmVjdGl2ZWx5IGJpbmQgdXNlcnMgdG8gdXNpbmcgdGhlc2UgYXBwbGljYXRpb25zLjwvcD4KPGgzPkZ1cnRoZXIgUmVzb3VyY2VzPC9oMz4KPHA+WW91IG1heSB3YW50IHRvIHRha2UgYSBsb29rIGF0IHRoZSBmb2xsb3dpbmcgcmVsYXRlZCBwb3N0czwvcD4KPHVsPgo8bGk+PGEgaHJlZj0iaHR0cDovL3d3dy5zbWFzaGluZ21hZ2F6aW5lLmNvbS8yMDA5LzAxLzE5LzEyLXVzZWZ1bC10ZWNobmlxdWVzLWZvci1nb29kLXVzZXItaW50ZXJmYWNlLWRlc2lnbi1pbi13ZWItYXBwbGljYXRpb25zLyI+MTIgVXNlZnVsIFRlY2huaXF1ZXMgRm9yIEdvb2QgVXNlciBJbnRlcmZhY2UgRGVzaWduPC9hPjwvbGk+CjxsaT48YSBocmVmPSJodHRwOi8vd3d3LnNtYXNoaW5nbWFnYXppbmUuY29tLzIwMDgvMTIvMTUvMTAtdXNlZnVsLXRlY2huaXF1ZXMtdG8taW1wcm92ZS15b3VyLXVzZXItaW50ZXJmYWNlLWRlc2lnbnMvIj4xMCBNb3JlIFVzZWZ1bCBUZWNobmlxdWVzIFRvIEltcHJvdmUgWW91ciBVc2VyIEludGVyZmFjZSBEZXNpZ25zPC9hPjwvbGk+CjxsaT48YSBocmVmPSJodHRwOi8vd3d3LnNtYXNoaW5nbWFnYXppbmUuY29tLzIwMDkvMDEvMTIvMTAtdXNlZnVsLXdlYi1hcHBsaWNhdGlvbi1pbnRlcmZhY2UtdGVjaG5pcXVlcy8iPjEwIFVzZWZ1bCBXZWIgQXBwbGljYXRpb24gSW50ZXJmYWNlIFRlY2huaXF1ZXM8L2E+PC9saT4KPGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20vMjAwOS8wNS8xOS84LWxheW91dC1zb2x1dGlvbnMtdG8taW1wcm92ZS15b3VyLWRlc2lnbnMvIj44IExheW91dCBTb2x1dGlvbnMgVG8gSW1wcm92ZSBZb3VyIERlc2lnbnM8L2E+PC9saT4KPGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20vMjAwOS8wNC8wMi8xMC1pbXByZXNzaXZlLXNpbXBsZS1kZXNpZ24tdGVjaG5pcXVlcy8iPjEwIFNpbXBsZSBhbmQgSW1wcmVzc2l2ZSBEZXNpZ24gVGVjaG5pcXVlczwvYT48L2xpPgo8bGk+PGEgaHJlZj0iaHR0cDovL3d3dy5jYXRhbHlzdG55Yy5jb20vY29mYWN0b3JzL2luZGV4LnBocC8yMDA5LzA1L25ldy1leWUtdHJhY2tpbmctc3R1ZHktZnJpZW5kcy1saXN0LWxheW91dHMvIj5TZWVpbmcgRnJpZW5kczogQW4gRXllIFRyYWNraW5nIGFuZCBVc2FiaWxpdHkgU3R1ZHk8L2E+PGJyIC8+QWNjb3JkaW5nIHRvIHJlY2VudCBleWUtdHJhY2sgc3R1ZGllcywgYmlnLCBzY2FubmFibGUgZnJpZW5kIGxpc3RzIGFyZSB2ZXJ5IGltcG9ydGFudCBpbiBzb2NpYWwgbmV0d29ya2luZyBzaXRlcyBVSXMuPC9saT4KPC91bD4KPGg0PkFib3V0IHRoZSBhdXRob3I8L2g0Pgo8cD48ZW0+TWF0dCBDcm9uaW4gaXMgYW4gYXZpZCBncmFwaGljIGRlc2lnbmVyLCB3ZWIgZGVzaWduZXIvZGV2ZWxvcGVyLCBDb2NvYSBwcm9ncmFtbWVyLCBwaG90b2dyYXBoZXIsIGRpZ2l0YWwgYXJ0aXN0LCBhbmQgdGhlIGxpa2UuIEhlIGFsc28gZW5qb3lzIHdyaXRpbmcsIGFuZCBkb2VzIHF1aXRlIGEgYml0IG9mIHdyaXRpbmcgZm9yIFNtYXNoaW5nIE1hZ2F6aW5lLiBIZSBpcyBjdXJyZW50bHkgd29ya2luZyBvbiBhIHN0YXJ0dXAgY2FsbGVkIFZBRU9VLCB3aGljaCB3aWxsIGhhdmUgbmV3IHNlcnZpY2VzIGNvbWluZyBzb29uLiA8YSBocmVmPSJodHRwOi8vdHdpdHRlci5jb20vdGhlbWNjcm9uaW4iPkZvbGxvdyBNYXR0IG9uIFR3aXR0ZXIuPC9hPjwvZW0+PC9wPgoKPCEtLSBnb29nbGVfYWRfc2VjdGlvbl9lbmQgLS0+CjxociAvPg0KDQo8cD48c21hbGw+wqkgU21hc2hpbmcgRWRpdG9yaWFsIGZvciA8YSBocmVmPSJodHRwOi8vd3d3LnNtYXNoaW5nbWFnYXppbmUuY29tIj5TbWFzaGluZyBNYWdhemluZTwvYT4sIDIwMDkuIHwNCjxhIGhyZWY9Imh0dHA6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20vMjAwOS8wNi8wMy85LWNydWNpYWwtdWktZmVhdHVyZXMtb2Ytc29jaWFsLW1lZGlhLWFuZC1uZXR3b3JraW5nLXNpdGVzLyI+UGVybWFsaW5rPC9hPiB8IA0KPGEgaHJlZj0iaHR0cDovL3d3dy5zbWFzaGluZ21hZ2F6aW5lLmNvbS8yMDA5LzA2LzAzLzktY3J1Y2lhbC11aS1mZWF0dXJlcy1vZi1zb2NpYWwtbWVkaWEtYW5kLW5ldHdvcmtpbmctc2l0ZXMvI2NvbW1lbnRzIj41MCBjb21tZW50czwvYT4gfCANCjxhIHRpdGxlPSJCb29rbWFyayBpbiBkZWwuaWNpby51cyIgaHJlZj0iaHR0cDovL2RlbC5pY2lvLnVzL3Bvc3Q/dXJsPWh0dHA6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20vMjAwOS8wNi8wMy85LWNydWNpYWwtdWktZmVhdHVyZXMtb2Ytc29jaWFsLW1lZGlhLWFuZC1uZXR3b3JraW5nLXNpdGVzLyZ0aXRsZT05IENydWNpYWwgVUkgRmVhdHVyZXMgb2YgU29jaWFsIE1lZGlhIGFuZCBOZXR3b3JraW5nIFNpdGVzIj5BZGQgdG8gZGVsLmljaW8udXM8L2E+IHwgPGEgdGl0bGU9IkJvb2ttYXJrIGluIERpZ2ciIGhyZWY9Imh0dHA6Ly9kaWdnLmNvbS9zdWJtaXQ/cGhhc2U9MiZ1cmw9aHR0cDovL3d3dy5zbWFzaGluZ21hZ2F6aW5lLmNvbS8yMDA5LzA2LzAzLzktY3J1Y2lhbC11aS1mZWF0dXJlcy1vZi1zb2NpYWwtbWVkaWEtYW5kLW5ldHdvcmtpbmctc2l0ZXMvIj5EaWdnIHRoaXM8L2E+IHwgPGEgdGl0bGU9IlN0dW1ibGUgb24gU3R1bWJsZVVwb24iIGhyZWY9Imh0dHA6Ly93d3cuc3R1bWJsZXVwb24uY29tL3N1Ym1pdD91cmw9aHR0cDovL3d3dy5zbWFzaGluZ21hZ2F6aW5lLmNvbS8yMDA5LzA2LzAzLzktY3J1Y2lhbC11aS1mZWF0dXJlcy1vZi1zb2NpYWwtbWVkaWEtYW5kLW5ldHdvcmtpbmctc2l0ZXMvIj5TdHVtYmxlIG9uIFN0dW1ibGVVcG9uITwvYT4gfCA8YSB0aXRsZT0iVHdlZXQgdXMhIiBocmVmPSJodHRwOi8vdHdpdHRlci5jb20vaG9tZT9zdGF0dXM9QHR3ZWV0bWVtZSUyMEBzbWFzaGluZ21hZyUyMFJlYWRpbmclMjAnOSBDcnVjaWFsIFVJIEZlYXR1cmVzIG9mIFNvY2lhbCBNZWRpYSBhbmQgTmV0d29ya2luZyBTaXRlcycgaHR0cDovL3d3dy5zbWFzaGluZ21hZ2F6aW5lLmNvbS8yMDA5LzA2LzAzLzktY3J1Y2lhbC11aS1mZWF0dXJlcy1vZi1zb2NpYWwtbWVkaWEtYW5kLW5ldHdvcmtpbmctc2l0ZXMvIj5Ud2VldCBpdCE8L2E+IHwgPGEgdGl0bGU9IkJvb2ttYXJrIGluIFJlZGRpdCIgaHJlZj0iaHR0cDovL3JlZGRpdC5jb20vc3VibWl0P3VybD1odHRwOi8vd3d3LnNtYXNoaW5nbWFnYXppbmUuY29tLzIwMDkvMDYvMDMvOS1jcnVjaWFsLXVpLWZlYXR1cmVzLW9mLXNvY2lhbC1tZWRpYS1hbmQtbmV0d29ya2luZy1zaXRlcy8iPlN1Ym1pdCB0byBSZWRkaXQ8L2E+IHwgPGEgaHJlZj0iaHR0cDovL2ZvcnVtLnNtYXNoaW5nbWFnYXppbmUuY29tLyI+Rm9ydW0gU21hc2hpbmcgTWFnYXppbmU8L2E+DQoNCjxici8+DQpQb3N0IHRhZ3M6IDxhIGhyZWY9Imh0dHA6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20vdGFnL2RpZ2cvIiByZWw9InRhZyI+ZGlnZzwvYT4sIDxhIGhyZWY9Imh0dHA6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20vdGFnL2ludGVyZmFjZS8iIHJlbD0idGFnIj5JbnRlcmZhY2U8L2E+LCA8YSBocmVmPSJodHRwOi8vd3d3LnNtYXNoaW5nbWFnYXppbmUuY29tL3RhZy9tZWRpYS8iIHJlbD0idGFnIj5tZWRpYTwvYT4sIDxhIGhyZWY9Imh0dHA6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20vdGFnL25ldHdvcmtpbmcvIiByZWw9InRhZyI+bmV0d29ya2luZzwvYT4sIDxhIGhyZWY9Imh0dHA6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20vdGFnL3NvY2lhbC8iIHJlbD0idGFnIj5zb2NpYWw8L2E+PGJyLz4NCjwvc21hbGw+PC9wPiI7czo3OiJhdHRyaWJzIjthOjI6e3M6MDoiIjthOjE6e3M6NDoidHlwZSI7czo0OiJodG1sIjt9czozNjoiaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIjthOjE6e3M6NDoiYmFzZSI7czoxMDI6Imh0dHA6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20vMjAwOS8wNi8wMy85LWNydWNpYWwtdWktZmVhdHVyZXMtb2Ytc29jaWFsLW1lZGlhLWFuZC1uZXR3b3JraW5nLXNpdGVzLyI7fX1zOjg6InhtbF9iYXNlIjtzOjEwMjoiaHR0cDovL3d3dy5zbWFzaGluZ21hZ2F6aW5lLmNvbS8yMDA5LzA2LzAzLzktY3J1Y2lhbC11aS1mZWF0dXJlcy1vZi1zb2NpYWwtbWVkaWEtYW5kLW5ldHdvcmtpbmctc2l0ZXMvIjtzOjE3OiJ4bWxfYmFzZV9leHBsaWNpdCI7YjoxO3M6ODoieG1sX2xhbmciO3M6MjoiZW4iO319fXM6Mzg6Imh0dHA6Ly9wdXJsLm9yZy9zeW5kaWNhdGlvbi90aHJlYWQvMS4wIjthOjE6e3M6NToidG90YWwiO2E6MTp7aTowO2E6NTp7czo0OiJkYXRhIjtzOjI6IjUwIjtzOjc6ImF0dHJpYnMiO2E6MDp7fXM6ODoieG1sX2Jhc2UiO3M6NDM6Imh0dHA6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20vd3AtYXRvbS5waHAiO3M6MTc6InhtbF9iYXNlX2V4cGxpY2l0IjtiOjE7czo4OiJ4bWxfbGFuZyI7czoyOiJlbiI7fX19fX19fX19fX19czo0OiJ0eXBlIjtpOjUxMjtzOjc6ImhlYWRlcnMiO2E6ODp7czo3OiJleHBpcmVzIjtzOjI5OiJNb24sIDA4IEp1biAyMDA5IDE5OjE4OjExIEdNVCI7czoxMzoiY2FjaGUtY29udHJvbCI7czoxMjoibWF4LWFnZT0xODAwIjtzOjEyOiJ4LXBvd2VyZWQtYnkiO3M6MTg6IlBIUC81LjIuMC04K2V0Y2gxMyI7czoxNjoiY29udGVudC1lbmNvZGluZyI7czo0OiJnemlwIjtzOjEyOiJjb250ZW50LXR5cGUiO3M6MjA6ImFwcGxpY2F0aW9uL2F0b20reG1sIjtzOjE0OiJjb250ZW50LWxlbmd0aCI7czo1OiI0MjgyNSI7czo0OiJkYXRlIjtzOjI5OiJNb24sIDA4IEp1biAyMDA5IDE4OjQ4OjExIEdNVCI7czo2OiJzZXJ2ZXIiO3M6MTU6ImxpZ2h0dHBkLzEuNC4xMyI7fXM6NToiYnVpbGQiO2k6MjAwODEyMTk7fQ==]]></data>
	</file>
	<file>
	  <filename>/libs/DEV/1.1.3/demo/cache/570cbd2a6f5e3c8d32b539d47fb9dc41.spc</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[YTozOntzOjM6InVybCI7czoyNzoiaHR0cDovL3NtYXNoaW5nbWFnYXppbmUuY29tIjtzOjg6ImZlZWRfdXJsIjtzOjM4OiJodHRwOi8vcnNzMS5zbWFzaGluZ21hZ2F6aW5lLmNvbS9mZWVkLyI7czo1OiJidWlsZCI7aToyMDA4MTIxOTt9]]></data>
	</file>
	<file>
	  <filename>/libs/DEV/1.1.3/demo/cache/dca087fd37115db2a8e329231e2b26f7.spc</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[YTo0OntzOjU6ImNoaWxkIjthOjE6e3M6MDoiIjthOjE6e3M6MzoicnNzIjthOjE6e2k6MDthOjY6e3M6NDoiZGF0YSI7czowOiIiO3M6NzoiYXR0cmlicyI7YToxOntzOjA6IiI7YToxOntzOjc6InZlcnNpb24iO3M6MzoiMi4wIjt9fXM6ODoieG1sX2Jhc2UiO3M6MDoiIjtzOjE3OiJ4bWxfYmFzZV9leHBsaWNpdCI7YjowO3M6ODoieG1sX2xhbmciO3M6MDoiIjtzOjU6ImNoaWxkIjthOjE6e3M6MDoiIjthOjE6e3M6NzoiY2hhbm5lbCI7YToxOntpOjA7YTo2OntzOjQ6ImRhdGEiO3M6OTk6IgogICAgCiAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICI7czo3OiJhdHRyaWJzIjthOjA6e31zOjg6InhtbF9iYXNlIjtzOjA6IiI7czoxNzoieG1sX2Jhc2VfZXhwbGljaXQiO2I6MDtzOjg6InhtbF9sYW5nIjtzOjA6IiI7czo1OiJjaGlsZCI7YToyOntzOjI3OiJodHRwOi8vd3d3LnczLm9yZy8yMDA1L0F0b20iO2E6MTp7czo0OiJsaW5rIjthOjE6e2k6MDthOjU6e3M6NDoiZGF0YSI7czowOiIiO3M6NzoiYXR0cmlicyI7YToxOntzOjA6IiI7YTozOntzOjQ6ImhyZWYiO3M6NDE6Imh0dHA6Ly9wYXRyaWNpYXZhei5jb20vZmVlZHMvZmVlZGJsb2cucnNzIjtzOjM6InJlbCI7czo0OiJzZWxmIjtzOjQ6InR5cGUiO3M6MTk6ImFwcGxpY2F0aW9uL3Jzcyt4bWwiO319czo4OiJ4bWxfYmFzZSI7czowOiIiO3M6MTc6InhtbF9iYXNlX2V4cGxpY2l0IjtiOjA7czo4OiJ4bWxfbGFuZyI7czowOiIiO319fXM6MDoiIjthOjg6e3M6NToidGl0bGUiO2E6MTp7aTowO2E6NTp7czo0OiJkYXRhIjtzOjIxOiJQYXRyw61jaWEncyBCbG9nIEZlZWQiO3M6NzoiYXR0cmlicyI7YTowOnt9czo4OiJ4bWxfYmFzZSI7czowOiIiO3M6MTc6InhtbF9iYXNlX2V4cGxpY2l0IjtiOjA7czo4OiJ4bWxfbGFuZyI7czowOiIiO319czo0OiJsaW5rIjthOjE6e2k6MDthOjU6e3M6NDoiZGF0YSI7czoyMjoiaHR0cDovL3BhdHJpY2lhdmF6LmNvbSI7czo3OiJhdHRyaWJzIjthOjA6e31zOjg6InhtbF9iYXNlIjtzOjA6IiI7czoxNzoieG1sX2Jhc2VfZXhwbGljaXQiO2I6MDtzOjg6InhtbF9sYW5nIjtzOjA6IiI7fX1zOjExOiJkZXNjcmlwdGlvbiI7YToxOntpOjA7YTo1OntzOjQ6ImRhdGEiO3M6MTY6IlBhdHLDrWNpYSdzIEJsb2ciO3M6NzoiYXR0cmlicyI7YTowOnt9czo4OiJ4bWxfYmFzZSI7czowOiIiO3M6MTc6InhtbF9iYXNlX2V4cGxpY2l0IjtiOjA7czo4OiJ4bWxfbGFuZyI7czowOiIiO319czo5OiJjb3B5cmlnaHQiO2E6MTp7aTowO2E6NTp7czo0OiJkYXRhIjtzOjEzOiJQYXRyw61jaWEgVmF6IjtzOjc6ImF0dHJpYnMiO2E6MDp7fXM6ODoieG1sX2Jhc2UiO3M6MDoiIjtzOjE3OiJ4bWxfYmFzZV9leHBsaWNpdCI7YjowO3M6ODoieG1sX2xhbmciO3M6MDoiIjt9fXM6OToiZ2VuZXJhdG9yIjthOjE6e2k6MDthOjU6e3M6NDoiZGF0YSI7czozNjoiQ0dGZWVkTWFrZXIgMS4wLjUgb24gQ01TIE1hZGUgU2ltcGxlIjtzOjc6ImF0dHJpYnMiO2E6MDp7fXM6ODoieG1sX2Jhc2UiO3M6MDoiIjtzOjE3OiJ4bWxfYmFzZV9leHBsaWNpdCI7YjowO3M6ODoieG1sX2xhbmciO3M6MDoiIjt9fXM6MTQ6Im1hbmFnaW5nRWRpdG9yIjthOjE6e2k6MDthOjU6e3M6NDoiZGF0YSI7czo0MjoicGF0cmljaWF2YXpAY3JpYWNhb3dlYi5uZXQgKFBhdHLDrWNpYSBWYXopIjtzOjc6ImF0dHJpYnMiO2E6MDp7fXM6ODoieG1sX2Jhc2UiO3M6MDoiIjtzOjE3OiJ4bWxfYmFzZV9leHBsaWNpdCI7YjowO3M6ODoieG1sX2xhbmciO3M6MDoiIjt9fXM6OToid2ViTWFzdGVyIjthOjE6e2k6MDthOjU6e3M6NDoiZGF0YSI7czozMjoibnVub0BjcmlhY2Fvd2ViLm5ldCAoQWRtaW4gVXNlcikiO3M6NzoiYXR0cmlicyI7YTowOnt9czo4OiJ4bWxfYmFzZSI7czowOiIiO3M6MTc6InhtbF9iYXNlX2V4cGxpY2l0IjtiOjA7czo4OiJ4bWxfbGFuZyI7czowOiIiO319czo0OiJpdGVtIjthOjQ6e2k6MDthOjY6e3M6NDoiZGF0YSI7czo0NjoiCiAgICAgIAogICAgICAKICAgICAgICAgICAgCiAgICAgIAogICAgICAKICAgICI7czo3OiJhdHRyaWJzIjthOjA6e31zOjg6InhtbF9iYXNlIjtzOjA6IiI7czoxNzoieG1sX2Jhc2VfZXhwbGljaXQiO2I6MDtzOjg6InhtbF9sYW5nIjtzOjA6IiI7czo1OiJjaGlsZCI7YToxOntzOjA6IiI7YTo1OntzOjU6InRpdGxlIjthOjE6e2k6MDthOjU6e3M6NDoiZGF0YSI7czoyMDoiTyBjYXNvIEFsZXhhbmRyYSAuLi4iO3M6NzoiYXR0cmlicyI7YTowOnt9czo4OiJ4bWxfYmFzZSI7czowOiIiO3M6MTc6InhtbF9iYXNlX2V4cGxpY2l0IjtiOjA7czo4OiJ4bWxfbGFuZyI7czowOiIiO319czo0OiJsaW5rIjthOjE6e2k6MDthOjU6e3M6NDoiZGF0YSI7czowOiIiO3M6NzoiYXR0cmlicyI7YTowOnt9czo4OiJ4bWxfYmFzZSI7czowOiIiO3M6MTc6InhtbF9iYXNlX2V4cGxpY2l0IjtiOjA7czo4OiJ4bWxfbGFuZyI7czowOiIiO319czoxMToiZGVzY3JpcHRpb24iO2E6MTp7aTowO2E6NTp7czo0OiJkYXRhIjtzOjIyNToiTXVpdG8gc2UgdGVtIGRpdG8sIG11aXRvIHNlIHRlbSBhY3VzYWRvIGEgbcOjZSBiaW9sw7NnaWNhIGUgZGVmZW5kaWRvIG9zIHBhaXMgYWZlY3Rpdm9zLiBRdWFudG8gc2VpLCBvcyBwYWlzIGFmZWN0aXZvcyBudW5jYSBxdWlzZXJhbSBwYXNzYXIgZGUgZmFtw61saWEgZGUgYWNvbGhpbWVudG8gZSBuw6NvIGZhemlhIHBhcnRlIGRvIHNldSBwcm9qZWN0byBkZSB2aWRhIGEgYWRvcMOnw6NvLi4uIjtzOjc6ImF0dHJpYnMiO2E6MDp7fXM6ODoieG1sX2Jhc2UiO3M6MDoiIjtzOjE3OiJ4bWxfYmFzZV9leHBsaWNpdCI7YjowO3M6ODoieG1sX2xhbmciO3M6MDoiIjt9fXM6NzoicHViRGF0ZSI7YToxOntpOjA7YTo1OntzOjQ6ImRhdGEiO3M6MzE6IlRodSwgMjggTWF5IDIwMDkgMjI6MzA6MzcgKzAxMDAiO3M6NzoiYXR0cmlicyI7YTowOnt9czo4OiJ4bWxfYmFzZSI7czowOiIiO3M6MTc6InhtbF9iYXNlX2V4cGxpY2l0IjtiOjA7czo4OiJ4bWxfbGFuZyI7czowOiIiO319czo0OiJndWlkIjthOjE6e2k6MDthOjU6e3M6NDoiZGF0YSI7czowOiIiO3M6NzoiYXR0cmlicyI7YTowOnt9czo4OiJ4bWxfYmFzZSI7czowOiIiO3M6MTc6InhtbF9iYXNlX2V4cGxpY2l0IjtiOjA7czo4OiJ4bWxfbGFuZyI7czowOiIiO319fX19aToxO2E6Njp7czo0OiJkYXRhIjtzOjQ2OiIKICAgICAgCiAgICAgIAogICAgICAgICAgICAKICAgICAgCiAgICAgIAogICAgIjtzOjc6ImF0dHJpYnMiO2E6MDp7fXM6ODoieG1sX2Jhc2UiO3M6MDoiIjtzOjE3OiJ4bWxfYmFzZV9leHBsaWNpdCI7YjowO3M6ODoieG1sX2xhbmciO3M6MDoiIjtzOjU6ImNoaWxkIjthOjE6e3M6MDoiIjthOjU6e3M6NToidGl0bGUiO2E6MTp7aTowO2E6NTp7czo0OiJkYXRhIjtzOjE3OiJMw6FncmltYSBkZSBwcmV0YSI7czo3OiJhdHRyaWJzIjthOjA6e31zOjg6InhtbF9iYXNlIjtzOjA6IiI7czoxNzoieG1sX2Jhc2VfZXhwbGljaXQiO2I6MDtzOjg6InhtbF9sYW5nIjtzOjA6IiI7fX1zOjQ6ImxpbmsiO2E6MTp7aTowO2E6NTp7czo0OiJkYXRhIjtzOjA6IiI7czo3OiJhdHRyaWJzIjthOjA6e31zOjg6InhtbF9iYXNlIjtzOjA6IiI7czoxNzoieG1sX2Jhc2VfZXhwbGljaXQiO2I6MDtzOjg6InhtbF9sYW5nIjtzOjA6IiI7fX1zOjExOiJkZXNjcmlwdGlvbiI7YToxOntpOjA7YTo1OntzOjQ6ImRhdGEiO3M6MjA3OiLCoCAKIEFudMOzbmlvIEdlZGXDo28sIHBzZXVkw7NuaW1vIGRlIFLDs211bG8gZGUgY2FydmFsaG8gZGV1LW5vcyB1bWEgbGnDp8OjbyBjb250cmEgbyByYWNpc21vIG51bSBwb2VtYSBpbXBhciBlIHF1ZSBuw6NvIGNvbnNpZ28gZGVpeGFyIGRlIGxlci4gQXF1aSB2b3MgZGVpeG/CoHBlbGEgdm96IGRlIE1hbnVlbCBGcmVpcmUuLi4gCiDCoCAKIAogCiAKIAouLi4iO3M6NzoiYXR0cmlicyI7YTowOnt9czo4OiJ4bWxfYmFzZSI7czowOiIiO3M6MTc6InhtbF9iYXNlX2V4cGxpY2l0IjtiOjA7czo4OiJ4bWxfbGFuZyI7czowOiIiO319czo3OiJwdWJEYXRlIjthOjE6e2k6MDthOjU6e3M6NDoiZGF0YSI7czozMToiU2F0LCAyMyBNYXkgMjAwOSAxODoxNzoxMCArMDEwMCI7czo3OiJhdHRyaWJzIjthOjA6e31zOjg6InhtbF9iYXNlIjtzOjA6IiI7czoxNzoieG1sX2Jhc2VfZXhwbGljaXQiO2I6MDtzOjg6InhtbF9sYW5nIjtzOjA6IiI7fX1zOjQ6Imd1aWQiO2E6MTp7aTowO2E6NTp7czo0OiJkYXRhIjtzOjA6IiI7czo3OiJhdHRyaWJzIjthOjA6e31zOjg6InhtbF9iYXNlIjtzOjA6IiI7czoxNzoieG1sX2Jhc2VfZXhwbGljaXQiO2I6MDtzOjg6InhtbF9sYW5nIjtzOjA6IiI7fX19fX1pOjI7YTo2OntzOjQ6ImRhdGEiO3M6NDY6IgogICAgICAKICAgICAgCiAgICAgICAgICAgIAogICAgICAKICAgICAgCiAgICAiO3M6NzoiYXR0cmlicyI7YTowOnt9czo4OiJ4bWxfYmFzZSI7czowOiIiO3M6MTc6InhtbF9iYXNlX2V4cGxpY2l0IjtiOjA7czo4OiJ4bWxfbGFuZyI7czowOiIiO3M6NToiY2hpbGQiO2E6MTp7czowOiIiO2E6NTp7czo1OiJ0aXRsZSI7YToxOntpOjA7YTo1OntzOjQ6ImRhdGEiO3M6MTg6IkEgcXXDrW1pY2EgZG8gY2jDoSI7czo3OiJhdHRyaWJzIjthOjA6e31zOjg6InhtbF9iYXNlIjtzOjA6IiI7czoxNzoieG1sX2Jhc2VfZXhwbGljaXQiO2I6MDtzOjg6InhtbF9sYW5nIjtzOjA6IiI7fX1zOjQ6ImxpbmsiO2E6MTp7aTowO2E6NTp7czo0OiJkYXRhIjtzOjA6IiI7czo3OiJhdHRyaWJzIjthOjA6e31zOjg6InhtbF9iYXNlIjtzOjA6IiI7czoxNzoieG1sX2Jhc2VfZXhwbGljaXQiO2I6MDtzOjg6InhtbF9sYW5nIjtzOjA6IiI7fX1zOjExOiJkZXNjcmlwdGlvbiI7YToxOntpOjA7YTo1OntzOjQ6ImRhdGEiO3M6MjQwOiJRdWVtIHRldmUgY2nDqm5jaWFzIG5vIHNldSBwZXJjdXJzbyBlc2NvbGFyLCBtYWlzIHBhcnRpY3VsYXJtZW50ZSBxdcOtbWljYSwgY2VydGFtZW50ZSBvdXZpdSBmYWxhciBkZSBpbmRpY2Fkb3JlcyDDoWNpZG8gLSBiYXNlLiAKIEluZGljYWRvcmVzIMOhY2lkbyAtIGJhc2Ugc8OjbyDDoWNpZG9zIG91IGJhc2VzIGZyYWNvcyBxdWUgZW0gc29sdcOnw6NvIHZhcmlhbSBkZSBjb3IgY29uc29hbnRlIG8gcEguIAogRGUuLi4iO3M6NzoiYXR0cmlicyI7YTowOnt9czo4OiJ4bWxfYmFzZSI7czowOiIiO3M6MTc6InhtbF9iYXNlX2V4cGxpY2l0IjtiOjA7czo4OiJ4bWxfbGFuZyI7czowOiIiO319czo3OiJwdWJEYXRlIjthOjE6e2k6MDthOjU6e3M6NDoiZGF0YSI7czozMToiU2F0LCAyMyBNYXkgMjAwOSAxNTo1MDoxNyArMDEwMCI7czo3OiJhdHRyaWJzIjthOjA6e31zOjg6InhtbF9iYXNlIjtzOjA6IiI7czoxNzoieG1sX2Jhc2VfZXhwbGljaXQiO2I6MDtzOjg6InhtbF9sYW5nIjtzOjA6IiI7fX1zOjQ6Imd1aWQiO2E6MTp7aTowO2E6NTp7czo0OiJkYXRhIjtzOjA6IiI7czo3OiJhdHRyaWJzIjthOjA6e31zOjg6InhtbF9iYXNlIjtzOjA6IiI7czoxNzoieG1sX2Jhc2VfZXhwbGljaXQiO2I6MDtzOjg6InhtbF9sYW5nIjtzOjA6IiI7fX19fX1pOjM7YTo2OntzOjQ6ImRhdGEiO3M6NDY6IgogICAgICAKICAgICAgCiAgICAgICAgICAgIAogICAgICAKICAgICAgCiAgICAiO3M6NzoiYXR0cmlicyI7YTowOnt9czo4OiJ4bWxfYmFzZSI7czowOiIiO3M6MTc6InhtbF9iYXNlX2V4cGxpY2l0IjtiOjA7czo4OiJ4bWxfbGFuZyI7czowOiIiO3M6NToiY2hpbGQiO2E6MTp7czowOiIiO2E6NTp7czo1OiJ0aXRsZSI7YToxOntpOjA7YTo1OntzOjQ6ImRhdGEiO3M6MTA6ImNhbCB2cyBDYWwiO3M6NzoiYXR0cmlicyI7YTowOnt9czo4OiJ4bWxfYmFzZSI7czowOiIiO3M6MTc6InhtbF9iYXNlX2V4cGxpY2l0IjtiOjA7czo4OiJ4bWxfbGFuZyI7czowOiIiO319czo0OiJsaW5rIjthOjE6e2k6MDthOjU6e3M6NDoiZGF0YSI7czowOiIiO3M6NzoiYXR0cmlicyI7YTowOnt9czo4OiJ4bWxfYmFzZSI7czowOiIiO3M6MTc6InhtbF9iYXNlX2V4cGxpY2l0IjtiOjA7czo4OiJ4bWxfbGFuZyI7czowOiIiO319czoxMToiZGVzY3JpcHRpb24iO2E6MTp7aTowO2E6NTp7czo0OiJkYXRhIjtzOjIzODoiwqAgCiBDb3JyZW50ZW1lbnRlIHRlbmhvIG9ic2VydmFkbyBlbSBhbsO6bmNpb3MgY29tZXJjaWFpcyBxdWUgcGFzc2FtIG5hIHRlbGV2aXPDo28gZXhwcmVzc8O1ZXMgY29tbzog4oCcIHPDsyAzMCBjYWxvcmlhc+KAnS4gRGl0byBkZXN0YSBtYW5laXJhIG8gc2Vuc28gY29tdW0gY2FpIG5hIGlsdXPDo28gZGUgcXVlIG8gYWxpbWVudG8gZW0gY2F1c2Egw6kgbXVpdG8gcG91Y28gY2Fsw7NyaWNvIHF1YW5kbyBuYS4uLiI7czo3OiJhdHRyaWJzIjthOjA6e31zOjg6InhtbF9iYXNlIjtzOjA6IiI7czoxNzoieG1sX2Jhc2VfZXhwbGljaXQiO2I6MDtzOjg6InhtbF9sYW5nIjtzOjA6IiI7fX1zOjc6InB1YkRhdGUiO2E6MTp7aTowO2E6NTp7czo0OiJkYXRhIjtzOjMxOiJNb24sIDE4IE1heSAyMDA5IDIxOjIzOjMzICswMTAwIjtzOjc6ImF0dHJpYnMiO2E6MDp7fXM6ODoieG1sX2Jhc2UiO3M6MDoiIjtzOjE3OiJ4bWxfYmFzZV9leHBsaWNpdCI7YjowO3M6ODoieG1sX2xhbmciO3M6MDoiIjt9fXM6NDoiZ3VpZCI7YToxOntpOjA7YTo1OntzOjQ6ImRhdGEiO3M6MDoiIjtzOjc6ImF0dHJpYnMiO2E6MDp7fXM6ODoieG1sX2Jhc2UiO3M6MDoiIjtzOjE3OiJ4bWxfYmFzZV9leHBsaWNpdCI7YjowO3M6ODoieG1sX2xhbmciO3M6MDoiIjt9fX19fX19fX19fX19fX19czo0OiJ0eXBlIjtpOjEyODtzOjc6ImhlYWRlcnMiO2E6OTp7czo0OiJkYXRlIjtzOjI5OiJNb24sIDA4IEp1biAyMDA5IDE3OjU3OjAxIEdNVCI7czo2OiJzZXJ2ZXIiO3M6NjoiQXBhY2hlIjtzOjEyOiJ4LXBvd2VyZWQtYnkiO3M6MjA6IlBIUC81LjIuOS0wLmRvdGRlYi4yIjtzOjc6ImV4cGlyZXMiO3M6Mjk6IlRodSwgMTkgTm92IDE5ODEgMDg6NTI6MDAgR01UIjtzOjEzOiJjYWNoZS1jb250cm9sIjtzOjYyOiJuby1zdG9yZSwgbm8tY2FjaGUsIG11c3QtcmV2YWxpZGF0ZSwgcG9zdC1jaGVjaz0wLCBwcmUtY2hlY2s9MCI7czo2OiJwcmFnbWEiO3M6ODoibm8tY2FjaGUiO3M6MTA6InNldC1jb29raWUiO3M6NTg6IkNNU1NFU1NJRGQ3ZjRhZDAzPWE1ZWM2MmRkNmE4ZjZhMGRiNWI3Njg3NGUyZTU4NWZkOyBwYXRoPS8iO3M6MTc6InRyYW5zZmVyLWVuY29kaW5nIjtzOjc6ImNodW5rZWQiO3M6MTI6ImNvbnRlbnQtdHlwZSI7czozNDoiYXBwbGljYXRpb24vcnNzK3htbDsgY2hhcnNldD11dGYtOCI7fXM6NToiYnVpbGQiO2k6MjAwODEyMTk7fQ==]]></data>
	</file>
	<file>
	  <filename>/libs/DEV/1.1.3/demo/cli_test.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IyEvdXNyL2Jpbi9waHAKPD9waHAKaW5jbHVkZV9vbmNlKCcuLi9zaW1wbGVwaWUuaW5jJyk7CgovLyBQYXJzZSBpdAokZmVlZCA9IG5ldyBTaW1wbGVQaWUoKTsKaWYgKGlzc2V0KCRhcmd2WzFdKSAmJiAkYXJndlsxXSAhPT0gJycpCnsKCSRmZWVkLT5zZXRfZmVlZF91cmwoJGFyZ3ZbMV0pOwoJJGZlZWQtPmVuYWJsZV9jYWNoZShmYWxzZSk7CgkkZmVlZC0+aW5pdCgpOwp9CgokaXRlbXMgPSAkZmVlZC0+Z2V0X2l0ZW1zKCk7Cgpmb3JlYWNoICgkaXRlbXMgYXMgJGl0ZW0pCnsKCWVjaG8gJGl0ZW0tPmdldF90aXRsZSgpIC4gIlxuIjsKfQoKdmFyX2R1bXAoJGZlZWQtPmdldF9pdGVtX3F1YW50aXR5KCkpOwoKPz4=]]></data>
	</file>
	<file>
	  <filename>/libs/DEV/1.1.3/demo/for_the_demo/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/libs/DEV/1.1.3/demo/for_the_demo/alternate_favicon.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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GLbk/TrnYcZw4mLntDV7nfgz9yiPlYN/a/EhbSdtyp7ZyP+jMp/zLsh+W9YpfUffzrpij9FYRdxMr+fX/dn7wZpwwpbqlWHUg7mk+zfn8tE3GM/350Z59TDaQN+LTBsTP/Oelbn3tUtoab1APb70v1JKKaWUUkoppZRSSl1NOxERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERGRO+Qfh5eOajemXSYAAAFTbWtCVPrOyv4Af1WJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4nO3W4WmDYBSGUQdxEQdxEBdxEAdxEQexvIELt6Yh/4oJ54FDm0/7601szlOSJEmSJEmSJEmSJEmSJEmSJEkf0XEc577vT+c5y7V397+6T/dvXddzHMdzmqbHz+wY/Sz31L11FsuyPF7HMAx/vod077JjlX2zYXatzfs9tX/VN7/+je5ftut7Vjnrn+V6nX37xtm/ul7T/ctzvu9f/9fneX7aP9fs/31l23ru1+/btv36zPfnv/2/r/oe1/er90Cu1Xf7nEXVnx3Xa5IkSZIkSZIkSfr3BgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+EA/CvmsuD1UqYgAAA7XbWtCVPrOyv4Af594AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4nO2djZEcKQyFHYgTcSAOxIk4EAfiRBzIXunqPte7Z0lAz8/+WK9qame7aRASCNCDnpeXwWAwGAwGg8FgMBgMBoPB4D/8+vXr5efPn3984jr3qufic6WsAGX498H/Uen5iv4zfP/+/eXTp09/fOI69zJ8+fLl388uvn379jvvsDdlBPT7R0bU+7SelZ5P9b8CNtH+rvZf9VH6dpWmk9ft3/mdXVTyrOQEXRq9XqXLrmftvHs+cGrnq3rr7B/la991ubRvex6aD3kFqv6veWX1jvufP3/+93voLdL9+PHj9714hrqoLwtEOr0e6TNE/p4m8oi8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]]></data>
	</file>
	<file>
	  <filename>/libs/DEV/1.1.3/demo/for_the_demo/background_blockquote.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAfQAAAAKCAYAAABCOaxXAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAAB90RVh0U29mdHdhcmUATWFjcm9tZWRpYSBGaXJld29ya3MgOLVo0ngAAAAWdEVYdENyZWF0aW9uIFRpbWUAMTEvMDcvMDWZvSB8AAAA1nByVld4nO3VMQ7CMAyFYQeJhYmZU3JCDoByFzZG0ommLTaiUuxU5f9UFKkM9rNb9f66PeQql1JKzlmA/5TeV9yplk9Bp9JAv/RjeffUyWogJvX3CcSktxew//TjLb0B9/TmBFK9vNPb+++W/qM7r/R1zprJPw3PRXmjgbqXtudv1fVOW/yU6VsPgEd59ZkwB+A2AfWcFw9Lr+fvmj5s99H7X6aOncDa7//+09v7b/8CaunjJrD2+w8AALbn9DzIWY692wAAAAAAAAAAAAAAAAAAAAC2YACuEw2rQpWeSwAAAEhta0JG+t7K/gAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKaQzoQAAHTtta1RTeJztXVtz28aSxubEsWXLt+RU9mFfVLW1tU/JwZWXR5EUJcWUxENQtuwXFwgSNk9kO0e3xMvCf9/ungEIDAYgAPEi27ASDYnBDDBfd3/d0zOAjl60bmbdQXs60/zBP4+nM1NremPXMPyzXtubqf5rVrw67HgzS1X9g8OhN9NUf7Bne7O67g/s0ynUt/ahC8+b0D+/3+vdzFp9+NXeHV7OlC1lpLjKW6WvTJSP8GmqnPuHx0dQ8xBqPkKNpvwCtVPlLzjj3B90TkbY6e4x9b1rT2fGpOG3Ood4n62jI7gWFHDY8Vv2Hp1kd6nOPqCi1aODrRdUtI95B3td+j4Y0kndFn3rDqg4Zgft/nTWrPmtIascst6HNrvIEeuPFYe7eJfHeFeq3znRprMGFDp20zkxqOjCQR0KnRUGFn4uZP5Thoyyo+zC0Sv4/gt8OofSUS6hZrxOzLRbYqatCrNHHLN95QJw+UN5D3VXyiQTG5NhM8nARpVi47oxbNQMbNwGw8bQC6OjmQweh8HjMHgaDJ4Gg6fh2/03cJWRb9u87J8AapYDB/iHfAA+5wC2lU+gXJ8ARlAtULromVEwoWNCU7ey0HRyoCloWhaagqY5y7VOgrBWk0Bo91usxmZlFNIHHNIW2eNUcTmgTzmgNoDpgS7uKAP4dA3HxgutVoql5pnLtVvDLWm3TlG7TcNom2N0AMcvSN16UPtxVXZbwA8UwEZdDTZPE9jcUn+W7Ck3j9B2wsJKa49oW0X0Z8O2FVB6h9B5T7oR16BITQzFLJT0O8pA2tJReiZFqUO2NgJXmK1NdxUnfek4PZHixNmpOEYb5+ssTbIYQhZDyLqVvR1A6Sg3yucv0uNr8VjUYjBZDCaHweQwmOSRZl6DG4IaTSFw/1INzli6wW2FOH0C53a1xqAxMwR3zZKeTWXQqAwalUGjMmhUBo0ag2abQ7MLinEB3r0Fv68RJA7QAw5QPo+GIo3gUzMZQFS/EKCGmQEQze0iEI1vGRnpDCGdIWQyhEyGkMkmfCjW2IwPh0HTFThQBMNg3jwE9foLlOyaTfyykZTaYDaQWpNDqY+yJs8ilIWmz6XB1Jv5wHzCwWyDwp1TCuZdmG74LFgtKuUH+PxJ+ZSdoOFmqxm5g3VNNYvbraUyJIkQEEkva/Yct1y9kRtLo8Hn0YY2LoxdtkHXxwy6hsuQmywprFCzwgq9JNnlg6wsQP8EO53iWTGATIsBpI0E3QqyfyrDyM0yVFSLxbpFhBjBqcadAinVCoBK6lZoqGUNdAC1IzLQj5lqpjWXq2fLnS6uRs9+4Bi9Al9wJUWnLqiYEHVkzaaxaQwffeP4UH6PkqitBOk/CvF6T3MdFzTGCdOmgTa1yW8i5WfH+QJemu5KERMIv+4WVymT50odjpkxNnP7zvJG2Qoyp9zVFEeyT+R/tXg1SEDSM3N4Ti/wnBhP5AQy5DYOJMUky8cR4bODaATJjYUlwQdElsUlwYdBYYjvxxNmReAln7FwPkHqXBjfCY9MsDECTFn+pQI8AFz1yYRhJjqNbMzKBMhyUqSVknToXL24jYfhsaUz6BiG+bDTJrmpMVQ83ZNOXtvkQT6TLy0zN4tPzWiKUDJjnceQ9QaPUmhSkhMtQ5ehVWNo1RhaNWbKjADxw8gTTBl9zOCgAI73w2jFUX5fkBppMBSbDEUK0SIoqrdF0WQoMhWTwohrgoijnoGjxdMAEFaxFEmTI8kVr8Y1r2amgRmuzAVgevLMU7pSDml52FV+L2LFubQyX/QsV0syZnTUo6XzHzkYsuEAyEHU0zDfk66eAUN2aSMCLrQMMVcnSQxfgJLuKEf800S5yKOwRQDWrEmelIw8FFpS9FhLLMG3goxMeviYjd0BheHveTj+nsKfC+l6O/kJUk81Zu7MuyTMXTozISeeN2/grBS7/FAF2fVeCFG6oomzFFeasNIzJinzSKZEyL0yPYuy3zzeRnumeLsxKYDn/RgZflzuenLOdJ+6nH1EBcw0BEvcGfMDB+tEskWtRWsTOClZtDrhlF14R85fBJMhOODAYQQTElLohPvVcgR9eJRWKDhYeoN5CPIHu+TWSPlwCwz6BxNLmnQtxPB5BEOMq3Ejg03rPA5f1cj2EY50GpIDUoz3MxJYrsNA1Tmori7MQsY8kmYzngV+GFSXwdrguDYYsC7fruVyYN2GGNXgh0HwIbnxaBB+CMLw/oB77sEgmAjayUmNTBSPwunfGuA3xrngFyYyIfqZ2emUiNLkEaXJsDdchj2VBpWENENRijQ5cQSYFH3AFD8vvA9DeK8o8sSNOpd54p8g9R8sSWnO5LZLUpwxLIEx4syKfIvgahng1sxi4AbAaV4YSRKA+mKm+Ek+0+aLVvn4t16Sf3O5KT4B8hxhJYXDaY5i9GvK6DeAU+QJi6+DWnwhFMr40hSL1QcMUHvAqZl/R6A1T0rJjznQr8jeJzy9QRs8hUlRvn0KwtpfGHXmW2fGNEXBYCBkBCKUW6U2pFtnw7zbfLJOkXzwYXASUWqVYS3sAM2Pcb6Jp96Qpo9oerREhIN5pxHkjqz8AMsjLkM276Rts2kba4vBWCRk9Ti3enFu9ZwcIOYJxm47PZKrqC5DkMWs0RghnLCLq6xB7mPA/c8n5YPg/HF/90fFw4UdfJhAhqFmmQzDWhxDpwCENakeqjIIWfqozH6JQAvjO+R1roZUGlQy661x880P2n0lugUn25kbMqMVllpVKVZqft9DfJvEamQuTryFnlxIvCHBEl7sg8E+MO8DE0rmffBDP8DQDgKjQcCRbEqQD9NgbbGLDl6G6MiMhZ6B9hWJPTMf0CAMZQlNeXTEMTVkmLoNuTtv8rlnkyeGmzU2jyKnHeTZWnMnHuTdhNxROojzWPPfAKNDkVK2elplV7ELeBQWEUVmpgVWciB6kqonHu/y4112PISSvHWdO+s609AAUlLQAxY4FTP214RntneJe+hca4+5dDNu7SPpVjshzpR6l7SwPS3LHl/F5apI8WTKfrJTgOojOeprmuwEQfzPHMSXFLC7tIv6kp5dw9QmPkq0Qyu8uE8/ewFSmrNj6+V514SMxckUN86nFAslUylmoXknd+IG3+8JJWHM0+88tcIolXNBLNokzY5E+o14oF9QIPe4QAylU2LNsp5nc2SeDKkRjznjGg22WxptvSFJXR2woKkITg/nOIGK7lPc+Wc2YlKPn28/aQCZtpgEXKnH1yYy76StFbLtMKR8TztfMMs8SeynEmGrlU2RavkXLcLJo1ErvtIbROaLnrs8COYyB8m5zCLonodB0Dlt5SuaFZUvaNxe9WiTUCQt6kinN4Hy5UkciaGRVPkCPhyEuc1kRJnXgE/g+BV5m0VPgi3DgK38+SIBw+ZiLx7sORDmN0sy30AHQ3e8eh1MLI9LPbTRbMRz857Ua8iXO4RdG66cAmUBuvgg9Twrz8PKaNqNqSsMsG6xOKlWTFsfh6mMTzS3fA/A831v2Tq7vOdfsvx0Q7rvGRNTEcT1IgnjNK1lAaednJUvQvBJBMG/KKu2Q6mjwhjSXrUCTzCEOJqLcxulXyeByYscToiyQm5dssuI9iTQgeBDEET2eXSPQ2TrR5FwnxY6/G6vczPrRp/A9UgWNiXkppFHlDySwTG9MOADSec0tYbLpMsA6TJV7DKF6u4RaN1Bh04ZDFjdASvOsPC70VkcuyH+wC/O2IRbitacptaUuyWd3RIU++EdPYf7ccMXUIz5ZOcq8j6Fy9D0Xb4iikzrKr+D2gavq+juvwTgj9us80P4vN/Hl7B02UtWVPrnR6q0oIr9Q9ntv8Y69fb9aCW7CKrwXze6HcHj+7KmlNu9pvGLchtw9JKqFK0pJzeDyc2o5FZEbk+43AaAjAujxbzJO0F6T0IZyc45zXFOOYk6TKJOJdEiEn0YWiKuBaDrjIbRXmSdIKg7zagrJzmTSc6sJFfGFpkErii9dhHgJdii/JzTHOfcil01rRJpEZHOYyuH3u4136zs8RR/cPw05Xg5cVlMXFYlrTLS6lMQ6UaeRff4ZDo4fppyvJy06kxa9UpaZaTVJUTGIR6BVObHT1OOl5NWg0mrUUmriLQec2nt8edS/yB+iwYnj7l8ZGecLjyjnCybTJbNSpZFZHmfy7JFi6mX4RKrFz4VdhFanXi0nJxcJie3klMROW2Fkzu0Ffb6HXFCPq8RJ+TzmnIyGzOZjSuZlfFqr2i/5iTh1ebHT1OOl5PWhElrUkmrzGS7P19WCWP8h2F0GK07zagrJzmPSc6L3dh2qEYTZaR0SBTvadUnWN4N1EasP11QX+4mNZ7pxbKjRRDtdvTYNyP2zYx9G2Kvvr9PCewyavo8oqbXcNZrWtam3QDBsYi6GlEd+XWuCiNVdxw/VmmFqjb2oDpe2RRbivq8ygstQeFLQf2EQ401I3obyRVt9hdBrsnvy2igwUYHpzfmtXrTqcdrTWteO6qJbWtZTesZTTXxjkTRfXm3vymF2IooBAYWyCVzNTBld9OsmzVNMAAjNIDRuOFa8cpGWFtz9YlWkw5k4o1H7jgpys3cwqbE8YyLY4/29tDaK21U2aftptBqkY3qquHG7y2q5NqoWddGaUquTUzPtFKUvOZMXFVLU/Jkx5p4R7ls9E7f/qaUIgjjwuBtHtAtCuOCGCvrrvKEcfn62RRADzlAkfcYQd0CSwGdqNVqaarWUBuqSPhzVavVRDgiqoYN616aqrELpwTEdfgvp6Xc6dvftCIM6CnGZFiTotvp99ME763ntpE8/WwKmqcxaEJ/sijATh9cJOpVVfw/9bZlEdqqLrLpOMqml0TeCHGU1IKbRhP0Is2CTR1/0ix4ZI2MkZZiwbVakhrmFjye4I8UBGSNRl5Xfadvf1Nq8ChUgz/4lgt89++Hxb4oqfh6tDLB5fMb1p2MiYloMhAJR5k8NTMjDw2+sHvfNNXiAzmfaIP+lXLC30/wbrE/0puqYzXTXKw0lr5FP5sOar+F3OStpoJBVow57khubJHLDoIOeaIqPViBf1IlW9VFlpH83et2bmZ73ci65oRgPqSdzDiTbsHvG3rDabAuNgkfB3GUK3+vb9/MOu09/PWCjHhP8eihbWTxQ5hXsOfrpvwvlHTaL+Gs7znDg0OKtH0Ua3tEL+E5VDq8zf8oM6VOtTVFgx9V0ZVf4LMLR/ATHhvTX6JrwLE61Kj0Y9GZdfitQQ1+82NX3ZqPURkqn9ED8Sv+h6LGznwYOfMVPQpzpbzn536HdxQ7+3Hk7GDz0gWbaYVt6ooltNmDXoHs6MUB9KgslLTCn3JPj+lv7b0jugz+utBHancZtjBiLbbpXWSXwBxp54tXmL/HrMNfbuLQDpEAp7+RNESs5q3CO4ycbwgj34K7Oadk2mSBFJ5GzjyiTZlX/M9xTCl8DFppQiv2tE1Mp+f0wVvdV/4b8Pe45sSv+4Serf+Tx/5oBeNE+y1or0Z+DMUTsDwgrs7uwYv8iD08oh7OeUJDdv+R1kJLm55+G9MoZC0jdy5gt8f/QABoCVi+Qza3aOxJjbBJl/8ESYyUfzEr523vwd1izu4ywQgtktoV2Y9NmneVqhnPg4ch+ZkXqRorttwKW4p2LZ75v4DE73D/XZLChNJLF1waJ3CNc9Bd9mKgD6CTn8jiL+BYlNlO4fxj9hwiv8qjCOPuRDiXKLoEOw9oD9e7ip0rdl45O1sVO1fsXLFzDnbeCtn5mq6HNlcxdMXQq2boWsXQFUNXDF2AoW3omz/tXjF0xdArZ2iRayuGrhi6YmgZQ/+YZGh+Pi0eK+yPz1acXXH2qjlbrzi74uyKs3Nw9kPO2W/I9t7ANd6B9VQcXXH0qjnarDi64uiKowtkPiIcXTF0xdArZ2ijYuiKoSuGDhlaosnf5M47rWLnO8DO1c67ip2/dnaea+cy2Pnb2HlXsfNdYOdq513FzhU752Hnb2/nXcXQd4Ghq513FUNXDF2Eob+dnXcVQ98Fhq523lUMXTF0Hoaudt5VnH03OLvaeVdxdsXZeTj7W9x5V3H0XeDoauddxdEVRxfJfHw7O+8qhr4LDF3tvKsYumLoOUN34CzU/4g8wxdTMoaev3Pxbeys9bK1A/zWVEz4GUN/jaWwdbYWizroCDPwh7HWi/ZZR89lL2mcs4spcEP03DSdq2eMJMmRBiBgrUX3An3aielKUd0L9hVxr/LN6VpNWENdnq41CusaRiP6F6xtT7i2Rf2OGI0+4PqGeV3wG1/9PmND0Jj0WFTMO365kag4jk1HotUu4y8xEtUE264i0XR+3p7zKTB0BO1bMPQArjAlRL9uhhZjzYqhK4auGLrKFSyXoR/P+VQZZ3L005gUd2hc7G/NnUfmbduxp/42ly2wOAd7xL7I0XX4MeH8gK0N+IR/0xLvL9CbBvG7R/M+5OzbZQssiRZW2YJkfCDTljK695T8yjnZUaw35Vf8SWjgYi0aKU2QpAu/0XdPyOebxNOBFmFuAHXIAx0L5I5nN+A76t4YzvfXgOSisUfv4L9grC24hkd3wDzTW7jWBXkn9GV/wver8P7QJv8vvNI9GvsO/o71ek9xBD36DsYe16IHyjhnhuEe1Gb7J2L5ElryMKZzQd162Ukn5mmAfsC4iYlQX1CDyrNTnqivJshjcUQmrmfnjWXSfPFqPKW5BguT601cA7eBS8cQYVzTeHYiyDDd+xlQuwijU4618g9RXqX5ygDdMIB/RqQtzNc1Qa+0mF5h/Rh6UYnT0Ds2KY4eE2+Jc5TVoFkMibgGjSQt31LvnwD5j6G+J+N3V+g9T6slsmUhXfkhuse0hC6MQa4W6IPG5fsLRUJj4ABxvtoIPRfqAsZIY/hfJU1ahy7ER3oXsN+COWTAbpelrRFZ2oR6j1BmMagG6FkSCegblYBsvPEY85Ks5ILmX285D7+F7++UUaq1xdu85zYbb/U30lLRK43Jqq9yXulx5Pz8V9mCesTgA/wW+9dyjn6Smh3JGv28Vf7Rp18pbfTZVxFHH+0/PvpnKaN/pwR/YzxtTpyGgNhSdn9PJCgsuuJTKRJ5rvYohkbyOmJGR47ISGF/G1d+dyKO8zuMt5Pd32MJGtlXeyLFYvGVHsaQEK+h3RF2bhOONzTC5cRKkzBWMu5crCQbb1xmxF6E/SdlShHOpb/fB0D3+8Ob2VmvjX8i8TUr/Pkx3bLYUfzgJ/rEjNAy+9yeW9ZS+30U6OlSe92Udj+C+mvKO+5EvfKt4w8tjD/MOxd/pI25ikGqGKSKQaoY5O7FIM+VA/I4/1BsWhm6JqbD62CGYTkxyTiMSfQ7F5PkGX9cpu+5h16ccUGrTfaZp+UzyoAXzwxtQ4tzOjfMOgt6Il8l3JT2PZwfgVom2fM157DHpG8mZahdylw7tNehKeSwUX+d2H4IWlumnZUTQVfvpa4ry3LJ90F//6A1YdTmzyGjJPcEbEXWvVEXxqmctarcsUxecZnfg/7x2fJJRMpdimXZuizbnVEmDvRoT4oKkkDcMebzaI1qvhaqUhyI8thsHCgf8TosLon+M56LDp7y3+Hx6S70/AeuM5WQhE4y0MlyHGJ1F0qTVhGjEblFKz359hCtRhKLR78OqXwfrn0zmcy/l7ECDeo8inzMcDYUzPzv0mxoPspNYPxM2Ye7uSbfOaU1uZ3gjCVlwtVwJmrcOewXjz56D3+nSDV6dhCvXtCMxqH17utwPfVHGNGvxMTpP7WNSH0rHOUOSfBCsr+yqI3pd9jGZOPdBO5P6OpBjHt7S7MAwQb5ihpgViNf7/FVP5Nk4VGkptG+Fov2t+CuVpxrNugMJxGVrUYC2SNfkSxis4wPketH7Ta5j6UpRIl/T22bvr9F3K2S1IQB5wucaSyDc9EWDdrLxWxRp/4bpAm4J8AiTUCL80gXxhSdmGSdHlmjuyZNyBr56jXhx5Cp8fpxTRBnjt8BQnFd+Cm19b+hdJTz2OzkO+S9BZqwrbxR8E1TH5agBU3+DBsyQC3MHujEyPh824j4ABmjRnO5EXGBR7M7neZwGHuuQwvSR716DXgG57BrF5X+c2nLvJK/z3esXdCe8o/hs4/xo8Wl7pJ3xTke7jRjMz72XEJyxlffqB8Wx7oOHyxHfTt+9FZxkEb7QT3KbbK9N02ywnoiDgr2920K//RRb04ST+E+P9LzJ6xmJ9ylWJYF43GpeYfj0kVjXz0X/kSMN7+Dt5SHv6Sn/5cxo8nqX8a4lsC4P2e0v8p6dknI9xzTSjFmdAP73yWvtzOvKa1vE9IclfbqjijP5pJOGeR1XT7zxd8WPZEU7P5FXzshj40x2XrsP23Ucf/o0Flv4TrBWfmk9ZO05TUvxT3e686z/6C06frXcIeX4b7L6LEyXOPRTIrxusvjrGZk1Z09M6CCrDf7zEB8pKtnli2y0s8SuWOWv0k6j5npprAS4YZ3md6ySXMXI4d8n9N+c4bLBfk89Ao7t5T6mGLqOsVYTZJ6jeZSzZjURzTbbsakjv97dO565t15xv816sKPtKbwmY+VPRvyGT6bXBq482QvjEDiuYkhYYsjLD8bb1DOZUJWziLyBuVoohF5jTL/BuVh8Df7jiVba1tPBJI99nXwchFZRZ97wZkje1Z0U3Jqrs2Os8Z912S0RVHsBVt33qANmYmnplaVXU6Odx0y+YnW56Z8JmfDyKb8Ez6l7tA63lwqD+ZrrCuWSR0kUac8ZJ3ykfi7Rr7SouhoHTJJjnY9M1z2Zov4M4jB260OKNr99JW/ySL+dN7y33tZS7RZ/C4LTWix6F0WmL0r+uykuH+uepsF2xVYvc3i63mbRUPQvs0+o/t9ynO5chYO3kB8TP1jFmnde+i+PiYu/lah1TNx8u0CFRdXXPz1cXH+9yWs490uMS72j2wgY7+/O7yZtdq96czzVPrnd9m3Cf3zu/2Qsx/Qes3b+XtNOGvfixw5TRwZdE5GM+h12JrO9Ibjd/e6U/xuH8F3+DaczjS/O+jQSYMBqztgxRkW/vCsdTMLLrXPkx8fYQAvbmav+nBOQ/UPeDm030B/MIrhIdz38LAzndW9senRasPwrBt09IiYA1npF5Ie/j2SHbDmeacW69OSd9lsNsYE495Z/2bWPaJRtHsDLPo9+tbfJYB7xziIPlVBJ/0h/w6oaP5uv8cKG4e/u9umb7sdKmzoZgJndrDBPnaq+r/1/zmdmS6UNvt6woo+tt/vHmLxmw3nWA6Ue+zrELv7zW4RxL0+YXuMN7dv9/BYzz7FosOKnk2yaNtH2GyvbeNgjl/b+K1n07eD4RF2cjAcXgavfJ2Qqv1JJW1R9c+6dItnR3T/wwF1By2xOOvsUufdM+hA8Y+PzJsZ/JrOaj4VHis0VqhCAWUXz++ieKgAGt47bmM53O3R5fqv6OJ4o1B5dAwNjo47dDW/9xoG39t9DZr/Yh/HejpgOPCpYA/G8FlhrxVBlaDKozaJqnNIQLR7aBZ72E/7BVbv9Y5uZv3hQXigsqxbWlZr0CczGrJxnAxxHINjOGkyslTDNPzhyZk3+8Wsw4fX8KEGJ7e7KJ2+zSv6dlCxFxzZC450gyPd4EgL7qLfAns+tMkQW3YPn07t90GzTKhOPLdKdzNWG4Z/bHe8mQVDab2BTlpvSBdbu2/AyPxISzxDaKuztlruptq8rZb3usmmauZloW0bwUAV5WAQChYUCRT6Axs68l/uIVq/arrld05J2+bwnBxTH5HWESQWttez2ms5OtAkHRRorqY3LzR6aD84BFRvo6RHwzNgMlXFax6pGt7BkapToams0KhOYwd1lXVwpGu8A13Hen/QhqEMOjae1esOvRnZUd+bwTmDQ/huwYHWCXyo4613hrugGXsnXT4S/+UhmPxLxoZAqSKbapxNtyB0mUAoszNnVcaoGmNUNZtRExfy9wedm9k+Wj44PLR7KBBJowbla1Yynq3RP2jRgRnkfocutt95wQgZ/4dvB+gFOy/xQid2C8V2Yu8SN/4/8Q7rxUuUEN4AAAC+bWtCU3icXU7LDoIwEOzN3/ATAIPgEcrDhq0aqBG8gbEJV02amM3+uy0gB+cyk5mdzcgqNVjUfESfWuAaPepmuolMYxDu6SiURj8KqM4bjY6b62gP0tK29AKCDgxC0hlMq3Kw8bUGR3CSb2QbBqxnH/ZkL7ZlPslmCjnYEs9dk1fOyEEaFLJcjfZcTJtm+lt4ae1sz6OjE/2DVHMfMfZICftRiWzESB+C2KdFh9HQ/3Qf7ParDuOQKFOJQVrwBaemX1kg7QRYAAAKtW1rQlT6zsr+AH9XugAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeJztnY2R2zgMRlNIGkkhKSSNpJAUkkZSSG6Qm3fz7gtIyVmvHdt4M57V6oekCBKiAJD6+XMYhmEYhmEYhmEYhmF4Sb5///7b78ePH/8duydVjnuX4dn58OHDb7+vX7/+qvfavmf9VzmqDMP7gbzP4vbwlv65u7aO1W8nf65HVw17Pn782NbVSv7u/2x/+vTp199v3779/PLly3/6ovYXta/yKSovzuUY55FO/Vyu2s+x2m/5k3adW2laX9WxYc9Kzp3+Lzr5f/78+dc29U//LbmUDJA5MmI/51T+yBSZ1/5sF/RrziU/txPaAuUb9uzkXzLy+K/o5M8x5EJ/tQyRc7UV91nkxzXgPr46hj4AymM9MezZyf+s/k/5d+8M6HnkXn+rLSDX2rYs/cxYyd96AOj7lZ51w9BzTfkj15JVXes+SF/3mMB5+FmSx3a6IduJ9YzlX23EaQz/UnXi/nO0H13NWJxtH6dfZ/spWVneKQ/6beZd13ksl7KsbdogeoYxyeqaYRiGYRiGYXhFGMffk0ew16f/828v71ny3foeXOprujb1rniEy+jtagfP5mdInfCW9r67lvfznfzP2PGPfIZ5nvd1vsQuvZX8/4b+8xZc/vSzYc/Dpo5NJv136dvDF+Rr6SOdz5D6JD/OXfkDTedvpIxcj/3IvizbL+3f2qWX8rcf4lHbQMrffjYfcz8pfYnOLLkgG2y+7Oec9AvYZ1ggI+x2BedR57QPk/Zntx3aDPdCnpkW8u7s2Zleyt919Kjjga7/A3VoveC+bT+OfXtdjNAufsh90HZf9/9KO+t452/MZ0r26/RZXZLes+t/QLbpAy7sqymZ4W9xf0OW/L+TP33fPkDH+1ifwM7fmPInLfwA5NPJ/yi9V5E/z/b6m7KxvIv0xdsX5/re6Qb0idsJusW6GHb+xpS/z+vkT5zKmfRS/pzX+cP+duxbSz9bQX2lPy39d/bt5bXUbdHVkf19PEfIY+VLhJW/MX2IvKd15fF45kx63qYeHlX+wzAMwzAMw1BjW+yb/Dw+v2dcPfaAGWO/H7Z98bNNvosLvRV/w/zDZ2dn0+r84NYJ6A7HhOfcwPQtQl7r82tfZz/M8qCvRj+co7OrIP+V3dd2MHx82I7QG9h/PcenSL9Qxu7bZ+dz7LfjL8doH9iR8UkNx3T93H4X13uR8uf6bl6nfYG271rm+A+6eUSe65fzz+y38zXoiOn/51jJf6X/V3bw9KWnTx0bKe0i+7FjMM4cy3ZZ4JPYxQsM/+da8u98fuC5XyUvzwUszvR/cFyAy8m5ec6w51ryL9DJ6TsveIYX1uHOc/X8X+kGtzk//x2rUMzcrzXdu1ztW73jeXze2QIYw+f1xI04ndTP3fifZwDk+7/LyrFMe+Q/DMMwDMMwDOcYX+BrM77A54Y+tJLj+AKfG9vcxhf4euQaq8n4Al+DnfzHF/j8XFP+4wt8PK4p/2J8gY/Fyuc3vsBhGIZhGIZheG4utZV064YcYX8SP2zE915D45XfEXZrrazYvSOu4P3cfmX7kO4p/7QzPDNe1wfbG7a5wmvwrGRs+WN/wSa3aksrm5zlb38iZfL6PC7jyp5gm8HqXigzeszyz/bodQqfwaZs2ys2u/rfdrTumzyZhtcQw6+HDb5rN13/L2zTYxtbYP1P2vb50G59vdfn8pqEq+8LkUfK3+uOsQaa18R6dJARuF523+QyKX8/O1dtxnL1NZ38HW/kY/Yfs5/+SXrsP/q+mI+RT+73enj3jHu5JtjHIfuFZbl6Lv6p/Lv9nfzTF9TFItGv0e2kf/QNud0x/BTW8+TB8Udn1//teyvSjwO3kn/XHmz7dzwB/T19R9297NpGxqiQXvopH/WdgbbsekkdcORHv5X8C6/jS+wArNacznvNe9nJ32XI7wv7mkeVf5ExMunH262vz3Gvp5lpdW1mF5eTPr8uv9X+3X2srs3r8pyufp5h7D8MwzAMwzAMsJpbdbS/myvwN/hTdnGsw+/s5tat9nnOhecKHb0/3oKRf499GLah5ZwaWPnnd+3FtpHadsw/3+Ww36nw90Tw/4GP+Vrbk/AtcS+WP9+z8T2/6jwRy8x+toybhyP939nmrf/Z5rs+ttPZRmv/jNsicf74erABcq2/UehvCTnGxHKmLPiI7q2nbs1ZWzsc7adv5joBKX9AD7gtYNenLdg3i/woe84bsd+vm1PS7afd+rtAr8K15d/1n0vk7zkf6O781qC/ybiTfz4POp9uwTPpFecKX1v/Xyp/6210sGNt7MNDPuRxpP9T/rSNTJP4EMcIPLI/5xI8bqKP0a9uIf/CPj3359088rw2x387+ePHq/Rz/Pfo/txhGIZhGIZhGIZ74HjLjJlcxX/eit376nAdeOe2PzDXi7wXI/81nt/g+Hrmx9GPmYNjv12ms7KheA5e+upsh/K8oJUP0McoE9dm+bH/On4fn6bL09mjXgFsoGkPxW7nNRo5r7OpF55Xx89+t1w7FNs/dv5ujpftu/bnkjZlzHKl39H9v/NVYlN+dvmn/qNeufdVDE83TyjpfDsr+VPP6Uf0/DR8P9hm7R+0/9D3tio/x3KOl/dXfs8yz2/FTv6W2Z/Kf6X/U/45/9d+ZI5hq+eY5/Lu1ofcyd9tFEiLNvbsbcBY/1v/3Ur+hf2Qfs5zLuMS2gN5nNH/kG2DNNm2T9zt7xV8Qh7/rWT8nvL3+C/n+NkHmP7BYjX+28m/yHn+3fjvVeQ/DMMwDMMwDMMwDMMwDMMwDMMwDMMwvC7EUBaXfg8EH/4q1s4xQEdc4p+/5NxLyvDeEN9yS1j/mLVzMn/isSjfpfLnuo5K6+y3Fro4lI6MJz7iklhA4pa8Ds5RrPtR/Rpio+DacfSOnfJ3eIkL7GL3KZO/6+64X8pLfJWPkXbOFyDe3DHnjtVNvDYQawhln2UtMseb7/o1+Z85l/MdP0tejkW6pH6JOfLPsVHvsa5ZrtdGuTiW638RD04/5X47Oj1KPJfv29/+oS3sdADxusSSeU5B3hvH6We7/kP+jglc4ftO/eJYykvql3MpJ+leS/9nXH7i5zJ9mzbtfdSzv7fh7ym5HtxuXU+7+3LeHV4bzPezaod+hiK37nsfcOa54vkyOXeANpQc1S/QLhyfei127Tr7K/3H/6Pzsk173leXHv2P+0pZua9a963K6rWiYCW3jA3t0qRsOY+FvBLnle2etpkc1a/PI0/PVXor6MFV/z877v0T+XOO59xkmn4edvHgTrebh0Sd5zcqLlnnqxsrdjrTeWU79Pg4y32mfun/3XyFt7Irw5HehU7+OX+j4N3AfZV7QsaeI3QGr+mY13jukOPVrXOPWMm/a6+MU6wfVu2b/C/V57t1Sj1v6gxH/b/wPIvVu0wn/6Oy80ys8joP5ERdsjbcaqxmnZnyZ0yY6wR6nS+vK9i9W3uOmd8dunLw3UP0Ta5Z13GmfuHoW7sce495i7yjrvLNeRoJYwXIekG/p970u/SR3jvT7nfvhKuxgMc5l6wTeslzele/lPtIrpzz7PNWh2F4M/8AoIL6IOC/JaMAAA7XbWtCVPrOyv4Af5KBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4nO2djZEcKQyFHYgTcSAOxIk4EAfiRBzIXunqPte7Z0lAz8/+WK9qame7aRASCNCDnpeXwWAwGAwGg8FgMBgMBoPB4D/8+vXr5efPn3984jr3qufic6WsAGX498H/Uen5iv4zfP/+/eXTp09/fOI69zJ8+fLl388uvn379jvvsDdlBPT7R0bU+7SelZ5P9b8CNtH+rvZf9VH6dpWmk9ft3/mdXVTyrOQEXRq9XqXLrmftvHs+cGrnq3rr7B/la991ubRvex6aD3kFqv6veWX1jvufP3/+93voLdL9+PHj9714hrqoLwtEOr0e6TNE/p4m8oi8uRdlq15IF9f1eeqgaSMvT0cd9Hr8jc+q/8ffr1+//n7uCjr7c01l0fIjTZTPM1mfIz33Mvu7DFGe2wibx9/QmaaJ74xbXHM9RRqd8zi0fUU+pEcXyKnpVO74oAvassod11Qfqmctn/F91/76zBWs/H9WZtb/6X+dvIHM/upvqFNWd+wcelZ90S7igy/QPqh+gTxWcna6QD7KIT/3FVWd/fmQz8vfGf/vMRe4xf7oPPoj9e7kpf6V/X0d4sC22D3+Rlsgf/73foas9FHai0LzoU6ZLvC3LivtkbleZX9k1Oe9/ExvK1tcxS32px1ru+/kDWT2V3+H7836KH3d/Y/qNu5x3f0kviOzP3rQNpbpQtOpzWkXyO/2xz/yTPzlGc03riHjM+xPX1F90J8BdfXv6m8Z3xyaHpnpW/o9nqUPdGulyIv7+E3A/5HG7yEnfS8D9caHZLrQcjL5yV/HQ/qH/++yqPw6l6n06bodDAaDwWAwGAw6OPeX3X/N8m/BPbiEKzgt8zR9xduewmPlxKVYz2RxgXtiVf7q2RWf1nGYj8Kpzq7ouOJt7yGrxrarZyrOqvIfVVx6t/xb+bRHQeXWPRNepytydfH8e7XrTFbl1fz+CedVpT8p/1Y+rdKT84bOKfoeBed4kIV8nANZ6azSgcYVu2ceaX/045xcxXlp3F5j5lX60/Jv4dMqPRGjC8CzwvMh88r+xO1UFpWz01mlA7U/cmbyZ/7/yh6aE/tXnJdz1sq9VhzZbvnU9SqfVtkf7lj5I+UUPf/MRsjc/X+qA8+rkn+XK1uhGqvgRvR+xXkFSKtcTJd+t/xb+bTOT9KHo4xoD/Q1nt21v44ZnvZUB6f2vxXqb+AalHevfFNmF6773MHTn5R/K5/W6Smzt847GRe07MxGAeUWs7Q7OngN++vYycf34ikviE9Tzgt5sutV+pPyb+HTMt7OZQPKKVZlMyd3rpTnkWdHZ5mOPe9K/q5eg8FgMBgMBoPBCsS+iPmcgnUga5hVLKpLE3PbHf7nHtiRNYBuHlnmriz3BudiWHd7DH8F4h+sv3fWJt369Zn7GTOuUdeUgfhOrPBRZXbXHwmPXQeor8a3uvavZ2NIr/rLnucZ7mm9nfeKe+6X9MxBpjOe6fRJf/M4hsdos/J38spkzNJ113fLyPS4g1UcSffkV+dxlIPwOK3u1dfnSaM+B50rl6PxQOXslA9wmfQcUcWf4fPIR2P+Wpeq/J3yXMaqzOr6jrzEG1XGE6zs3523BF3M0vkv+Drt/+jKzzNk5zvJqzpnQjnIUp2NyPTvfEdXfpWX7td3Gasyq+s78mZ6PEHHj5Hfimfs7F/pf+dsEfn6p8sXedD9js/S/p7F4rPyPa+ds4RVmdX1HXkzPZ4gG/+VW/Q2X+37udr/M11V/V/L7uzvHPSq/2veXf+v5n9d/9eyqzKr6zvy3mr/gI4tPobhn3R86fgrl2k1/qvcbv+AnuGrzp9nulrNWXw89TFOecWsfEU3/mv6qszq+o6897A/9a7W/3ova5vc1z7kPJrP/z2NzpF9Tp/N5bsYgc6F+Z4BGfw+5XXlV3mtZKzKrK6v0mR6HAwGg8FgMBgMKujcXD9XOMBHo5LL1x8fAc/iAlm7+x7M1TqC/dLPRBVnq/Zjvmc8iwvM9jIrsriA7tnV/f8n61e1FbE2vZ5xbtife54Hcuh15yJ3uDzSVGv0zi6ZHvRcoHKklb5u5RtP4Pvv1T5V7I+YE35jhyNUP6PxK67rnnn273u8UfnCLI8sXp1xRh0vWMX7dji6LtapZxPh1zN97ci44gJPUPl/7I8Mfm4l42hVB95HNA6n5/goX/uFc258V31UZyZ4XmPr9JMsRu39hbbH+RWww9GtuA7yq/S1K+OKCzzByv8jK30v41V3OELOUmhfz8rv5NF8uzMzIQ9tlnJcN1U5jG3q3yh7xdGdcJ2ZvnZl3OUCd9DpW/us+niv6w5HqO+1zPq/jt9d/9+xP2c79Sznbt/SvQPab3c4ul2us9LXlf6vz99if/f/yO7jP/rHT1bpvD35uFrZX/POxv8d+6Mjv3Zl/D/h6Ha5zk5fV8b/nbOOFar1v3LeWUyA69pvO44Q+bCfzjGzZ7I5cFZelUe1fj6ZW1/h6Ha4Tk+3U/cdGZ8VMxgMBoPBYDAYvH/A5+ja71G4kre+W+Me777X2MAJdmV/T1wUa144ANaUj6gDdjwB61pierqvstsHXAGO4RQaT+xwpY6vBWIWvm4kfhbwfay+Dsdv6HqVMxjx0ZgNbUvjC+ir43ZVxs7+XV67abROug/e5bhXHUH2uyO093iO65Sr6QKR5mrfynTE9ewcC3ELjbM6B6O/z0U90A16JdaF33H5KUNj8dVZAbVFxdHtpHGZtK7KeVJH/S2hK3UMKA9LXA/7aKxQ0xEnpdwqXtihsr9er+yv8XHaPW0SPXl8S/Py+HbFq2X8idtc/ZhyyIqdNAG1n8cfPY6b8XtX6rj63THS+/sEnTs93bfl8ngc2usTcPs7b0A++puUyJjpBlRc1I79Kx5DsZMGPSrvmcmrfJi/R/BKHU+4Q8rlA1dd+ZYVeI4xLrOZ77WgDzlfRZ/QsaniDb39Vv1xx/4B9X/K4yl20ijnqOOgypF9z+y/W0flBPH5HXeonJ/ux7oCHdv043st4oNv9L0c3FMdZNeVX8ue787Xg8r++DLl1B07aVQmn3cq3853+oe3mZM6BtQGuqfHx2fXrbaTU/5PoeMHc8zs3mqP3eq67yVajVt+X8uvZOnWrrek8bIrnZzW8fS5zHdd2f83GAwGg8FgMPi7oOsYXc/cax7Z7UmMdZC+K2WnTF2rEu/O1oLvAW9BXo/nsO47PUdSobM/nADpduyvsRbWOzz3FvR5grcgbxaPJE7uMRvntIg9Ot+lUO5W4xUBnnWfozy0xyA8Jqv8v+ozS6t5E0OpuBgvF/k0lqMccscpaT21/iovfM6OXpBdy1G5TtCdMXGOR7kIjaV3PsO5e+WV4Qs8Rqr18/ONzsFW/p9ysjK9btnebG//2I3Yp8d8sW22b5u2AificWLsre2i04vL7nKdYGV/7OplZrH/FY/oNgowB6hsepKfc0HeX7K8qxiw7g/SeDex1uy3oyruVX2N7q1SriXzGSu9uL9DrhOs/L/bX+cJt9qffklc/VH2136xa3/8BnmpzyNft/9qbwd+RHlV5Q/Arl6q+p5gNf+jnnCMugflFvtrue6Hb7U/OqQc1cuu/clDxw61ue532ckHf678n8vrPj/TS3bP5TpBtv7zfUU6t8jOX6tuHCt70f51/8M97K/zv+rccqCzm/dxzZO+zLNdPj7/y2TRfRgrvfj8z+UafEy8hfXi4PUw9v+7Mfz+YDAYDO6FbP23imWAt/Su+Y5nOoWu17rxtoqdnmBX1/csM8tP4z+rvZEBXZe+BVw5+1CB+Nfufs1bsKNrT/8I+1f5aexHYxV+xinjCB3ELTyeDnemvC79jzNxzH2VD+Oefyd2qnXwdyRWsZKsbhqT0Xbh8iiycrK6wv+4rjWO7zKpvYhTO1e4i8r/a4xfz0vRz5TzrThCLwfdwZ1o+ehFz9WgH5cniznqdz9/SzvSeDryeBvwugU8lux8QLYP22OzxM+9rhWHp/lW+uB54sYVB7tjf/f/QNuWjlMed804QgcclfJxrsPu/137oxc9j+kyB/Rsj0LTZTZWfWX297mInq2r8lL9KLfY6cPL4d4JVv7fZcr2WlQcoeuENN37H+9hf2SirWUyB96S/Stu8Vn2z+Z/+EL1l7qPAp9UcYSuU/x/1/8Du/4O35TpPJvD7/h/rVsmzz38f2b/jlt8hv/3D/X3c7B67lDnKRlH6OXo2cGqfXta14XOM6uzmW43xWr+F3D7V/O/zndm5XT277hFv3fP+d9bx73XO4P3hbH/YGw/GAwGg8FgMBgMBoPBYDAYDAaDwWDw9+ERe9HZ+/SRwX4T/6z2vbPH0t9pEWBvTPZ5hD51b6nD32lccYnsS/N8ff8I7wDSD/s3nslTdnU5zUf37fGp7K+/Y8K+I/bZ6T63LM9qb/Ct8nd79dWG+h4Qh9Yb3bKHTPsE+T2rbVfo6vLIMnVfpPaNrP842K+W5emfam+eP7vaG7Jrf97LRPr439+xofZ/bbyG/f13B9Q+9MMO7COuoH2p28sW1/W3RTqs7E/boU87PP+s/3Od/HmXm+6h1H2bAdqbvmuJfX76jO6x1Xy1TZKG7yc4GUNUF/6uoaxvK6hbV576gsz2jL34hlWZ5Knv71GZ9f1yJ/b3ve5c53+tJ+eSdJxUWbjPd/SKzHouRPOlPajcV3zTyX5xPV+hvgB5qr5Nu9zx59nZAc3H95av5MePa/4BdKfvYlM9Mub7fKXSsc95tE7aX31Pr+5l1/mU5pG924/24P3wdEzgnFM2n3FgQ//tzGocZv20M5Yjy+ncsLM/etUxC//p7Ujtr/5d95qT54n99Vwi7VfLzN5d5fOsyv78Tzu+MidAvuzjQH50RxvO/Dq6q/yq53vl3XWByv7qNwFtMYsV6JlRXd9QV50fVucbMvtTro7lel3PpXqf0nMfnf2RydvXM9DFXXbnFpHuqtzdeHfSnvTdOtqXPtp5isFg8KHxD4gkaqLrd70WAAAAs21rQlT6zsr+AH+ZjQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeJzt00ENAAAMArH5N82y5zTQOjgSkmSKXX7zAJdf3T8OUN0PAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMCzKMIT7atamSEAAAR5bWtCVPrOyv4Af6I2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4nO2aiW3rMBAFXUgaSSEpJI2kkBSSRlKIPzb4YzxsSNmxZPiaBwx0kOKxy0Mitd8rpZRSSimllFJK/df39/f+6+trSoXfg7Iel0z7EulfU1Wf3W435fPzc//6+vpzfst1px5V1i1Vvn95eTnYY+v0r630//v7+y9Kdax6P6P/afvP4P+ZPj4+ftoAcwFto64rjHbBdYXVkfgVzr1ZmnXMOLO0+rN1ThnSP6RXUD7KMUpzpIpXaVb/5/yR/V91S/BFH/+Jz7iIL3KczPmjwohf4ppnS5VXXdexnpnNRVke8mNsyvMsW6afVJxZG0i7VL7P4P8Otpv5/+3t7fCOiH14pvfHTCN9QZsgvNLinPZH/J5WHcs3vJeRXvd9PpNp0p66si3nHPjo/p9p5v/sO32eTEr4sOxY7SbHVMpQ9zP9VN4jr/TfqB1n/67wSh8f1vlsDiAeZeT9J+89itb4P4XNmG/p5/lugO2xYfbr7Jv0vXw3GI0V+T6a/T/HkPRVliXLO6vvEo+irfyPL/Ft9rWeTn8v6ONJjrXZ92bzUdaD/Hp7yPE802TM6TbpZJlu+Tvor9rK/6WyUb4Dlm37e3v3Ne0k/cD7BGnRpnjmFP9nPMYk8iLNXr4lPer8r5RSSimlnlOX2ufNdO9lL/nWlOsgl7BhfRvNvmv699RftfZ5tT+sOdSayWzNeo3S/31tI7/zR9/8S2shrJv082soyznqR/zjMbu/lN7oepbXLK1RvybubM1pVua/iv2y3PsjX9Y88pz2wjO5zp5tJPdeOWcNl3s5JrB3sya82zrLmeuJdY/1Ztaa+rpShfc61r1MK21Xx/QZkFdeox6nxHol90mXve6lMp+j7pdsb6P+z1obtmY/vms09le83Mct6COs860JP1Yv7JdjXv+3IfchEHsZdcy1yrRVptnzGtm3/xNBnNH9kf9HZT5Hff4/xf8Zf/b+kHbinL0Zjvgz/8lYE35qvfqcl3sC+HpUp/RBt09ez/LKsNE+E/ezP3OdeY/KfK628H/fRymfUKY8LzHWMX4yltGe14afUi/CGDf4jwAb074Qc233fx9zco/ymP/5fyLzKPX73f+zMp+rY/7PuR079H6SdS318Sl9g7+Iyzy2Vfgxu2cYtuT9OudhxnDiYue0NXud+DP3KI+Vg39r8SFtJ23KntnI/6Myn/MuyH5b1il9R9/OumKP0VhF3Eyv59f92fvBmnDCluqVYdSDuaT7N+fy0TcYz/fnRnn1MNpA34tMGxM/856Vufe1S2hpvUA9vvS/UkoppZRSSimllFJKXU07EREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREZE75B+Hl45q2TuOnAAAAVNta0JU+s7K/gB/pYUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHic7dbhaYNgFIZRB3ERB3EQF3EQB3ERB7G8gQu3piH/ignngUObT/vrTWzOU5IkSZIk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]]></data>
	</file>
	<file>
	  <filename>/libs/DEV/1.1.3/demo/for_the_demo/background_menuitem.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhLAEcAMQAAP////7+/v39/fz8/Pv7+/r6+vn5+fj4+Pf39/b29vX19fT09PPz8/Ly8vHx8fDw8O/v7+7u7u3t7ezs7Ovr6+rq6unp6ejo6Ofn5+bm5uXl5eTk5OPj4+Li4gCZMwAAACH5BAAHAP8ALAAAAAAsARwAAAX/ICCOZGmeaKqubOu+cCzPdG3feK7vfO//wKBwSCwaj8ikcslsOp/QqHRKrVqv2Kx2y+16v+CweEwum8/otHrNFgfe8Hd7Tl/G73CBfs8X1P+AM3h4fXwDh4iIBIuMBIGPkCiDAXuJio2MBZqbmgaen5GhgZMBloicnZ+qB6ytCK+wCKKzc3l9jaitrLGwCb6/CQrCw8K0xmh4lpufsb/EwgvR0gsM1dYN2A3H22N3pgOqBr7E1tfZ2A7p6g/s7Q/c8F6DmLoHxNnr7uwQ/P0R/wAlCIxHkEsfVLGmqUsHMKDAhxImSJxIoWLFghi1JPoErJy7iBMnWBxZoaTJChZSkqrMyLLKRk/AzvWbeFKlygs4c+LEwLMnhpZAobwU58tau4cmc/r0maGp06YaokoNSpUJIo5Fq7GDaPOp1K9RN4gdO5aD2apokVz1NAzbTIkqm5Ita7auXbMd8upNyzdHAS0eAgseTLiw4cOIEytezLix48eQI0ueTLmy5cuYM2vezLmz58+gQ4seTbq06dOoTYcAADs=]]></data>
	</file>
	<file>
	  <filename>/libs/DEV/1.1.3/demo/for_the_demo/background_menuitem_off.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhLAEcAMQAAP////7+/v39/fz8/Pv7+/r6+vn5+fj4+Pf39/b29vX19fT09PPz8/Ly8vHx8fDw8O/v7+7u7u3t7ezs7Ovr6+rq6unp6ejo6Ofn5+bm5uXl5eTk5OPj4+Li4jMzMwAAACH5BAAHAP8ALAAAAAAsARwAAAX/ICCOZGmeaKqubOu+cCzPdG3feK7vfO//wKBwSCwaj8ikcslsOp/QqHRKrVqv2Kx2y+16v+CweEwum8/otHrNFgfe8Hd7Tl/G73CBfs8X1P+AM3h4fXwDh4iIBIuMBIGPkCiDAXuJio2MBZqbmgaen5GhgZMBloicnZ+qB6ytCK+wCKKzc3l9jaitrLGwCb6/CQrCw8K0xmh4lpufsb/EwgvR0gsM1dYN2A3H22N3pgOqBr7E1tfZ2A7p6g/s7Q/c8F6DmLoHxNnr7uwQ/P0R/wAlCIxHkEsfVLGmqUsHMKDAhxImSJxIoWLFghi1JPoErJy7iBMnWBxZoaTJChZSkqrMyLLKRk/AzvWbeFKlygs4c+LEwLMnhpZAobwU58tau4cmc/r0maGp06YaokoNSpUJIo5Fq7GDaPOp1K9RN4gdO5aD2apokVz1NAzbTIkqm5Ita7auXbMd8upNyzdHAS0eAgseTLiw4cOIEytezLix48eQI0ueTLmy5cuYM2vezLmz58+gQ4seTbq06dOoTYcAADs=]]></data>
	</file>
	<file>
	  <filename>/libs/DEV/1.1.3/demo/for_the_demo/background_menuitem_shadow.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhCgB4ALMAAPX19e7u7u3t7ezs7Ovr6+rq6unp6ejo6Ofn5+bm5uXl5eTk5OLi4uDg4N/f393d3SH5BAAHAP8ALAAAAAAKAHgAAASn8K1HZVUuO6ybb8kHMiRCluexrIu6GkmcwHGB3IiNG3zvE8CgMDgoGgeAgDKQXDqbSiiUuZxKn1WsM8uldq1dr3isjYav3zJ4a06722M0fLuOn+/zaVlc76v3e3J8f29keHZ5h3V0hHB+hXqKjYOQbImXiJmLgZKVmIyempORmI+Oo5aioaaGpaiuYZywp6GgtLeUuKSqup1zsry5wrusgsaHtsO+YhEAOw==]]></data>
	</file>
	<file>
	  <filename>/libs/DEV/1.1.3/demo/for_the_demo/favicons/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/libs/DEV/1.1.3/demo/for_the_demo/favicons/alternate.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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GLbk/TrnYcZw4mLntDV7nfgz9yiPlYN/a/EhbSdtyp7ZyP+jMp/zLsh+W9YpfUffzrpij9FYRdxMr+fX/dn7wZpwwpbqlWHUg7mk+zfn8tE3GM/350Z59TDaQN+LTBsTP/Oelbn3tUtoab1APb70v1JKKaWUUkoppZRSSl1NOxERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERGRO+Qfh5eOajemXSYAAAFTbWtCVPrOyv4Af1WJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4nO3W4WmDYBSGUQdxEQdxEBdxEAdxEQexvIELt6Yh/4oJ54FDm0/7601szlOSJEmSJEmSJEmSJEmSJEmSJEkf0XEc577vT+c5y7V397+6T/dvXddzHMdzmqbHz+wY/Sz31L11FsuyPF7HMAx/vod077JjlX2zYXatzfs9tX/VN7/+je5ftut7Vjnrn+V6nX37xtm/ul7T/ctzvu9f/9fneX7aP9fs/31l23ru1+/btv36zPfnv/2/r/oe1/er90Cu1Xf7nEXVnx3Xa5IkSZIkSZIkSfr3BgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+EA/CvmsuD1UqYgAAA7XbWtCVPrOyv4Af594AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4nO2djZEcKQyFHYgTcSAOxIk4EAfiRBzIXunqPte7Z0lAz8/+WK9qame7aRASCNCDnpeXwWAwGAwGg8FgMBgMBoPB4D/8+vXr5efPn3984jr3qufic6WsAGX498H/Uen5iv4zfP/+/eXTp09/fOI69zJ8+fLl388uvn379jvvsDdlBPT7R0bU+7SelZ5P9b8CNtH+rvZf9VH6dpWmk9ft3/mdXVTyrOQEXRq9XqXLrmftvHs+cGrnq3rr7B/la991ubRvex6aD3kFqv6veWX1jvufP3/+93voLdL9+PHj9714hrqoLwtEOr0e6TNE/p4m8oi8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]]></data>
	</file>
	<file>
	  <filename>/libs/DEV/1.1.3/demo/for_the_demo/favicons/blinklist.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/libs/DEV/1.1.3/demo/for_the_demo/favicons/blogmarks.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/libs/DEV/1.1.3/demo/for_the_demo/favicons/delicious.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/libs/DEV/1.1.3/demo/for_the_demo/favicons/digg.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAOK2lDQ1BJQ0MgUHJvZmlsZQAAeJyVV3c41Q/f/nzPNI/jOFZkr3CsY6+MyIzskb3LnhmRUZHMjJQko5BEKFJSIYWorCQVCVHJqVTGef7oed/fH+/1XM/13n/dn/u6PvOfz3UDsPF4hYcHowAgJDQ60ma/gZCTs4sQfhJwwAloIAHVyycqXN/a2gL+I35OAAIA8JLiFR4e7PbeA19X7Nqf4VSK0qst1fjPeQAAQIh0cnYBQGQBgBzwl+sBANn7L7cDAHJcdHg0ABIIAGSfQC9fACQJAGQj7WwMAZA6ACAE/OUdAEDw/ssHAIAQ6xMQDYBMAeBIob5BoQD4VQCcrq9flA8AQRYAfH2jfEIACPkAIBcSEuYLQOgBACmf8MhoAMISAFCcnF2E/o58iAlAdQ8ATv4fLVoCoLUSQND5H03iKgCXDcD1i/9oNBtAAADhGonypyoBAADCYgCAnaXTaRIA+EKA7QI6fbOKTt+uBkDPAPQE+8RExv77XggyDPDf4r87/xtoBAAFAFxgARcRLGKJVKHQqEjUKjoag8c0YF1w3Li3+A6G84w5THnM51maWUcJG0QV9jjSIHk3ZwjXKI8+byMfH3+RAF4wX5gkUixGFK+SpEi1SSvJDFCs5GYUDisuUoOUV1Rj1dEaCZo07Uid73vj9JYNwgw/GDkaD5rImFaY4yziLCesdK1rbRhs/eweOEg4xjtNuqi6VhzacHfwaPNi9fb2afFD/J0DrgfSDusdyQmeCpUOCwu/GbEZpREdGXM79utRiXj/hLLEwaStZEqK+/Hc1Ja0NxnoE+InTU+FZhZn3T09mf0th5BLyTPP9ypILzx/tqXobvFYydI5pAxb9u382IV75ecvplYcvuRQqXGZrwqpWq4eremuvXQl62pgnXk9tYH/GvracuOT681NxTfim11btG/y39xunWt72F5xK/22Z4dWJ0/n7zsTXc13s+65d6veJ97/0NP+IOuh2yOlXlzveN/1/qTH5gO8A/NPbj1NGTQb4h6aH65/FjOiO4qM9jxPfKH8YuVlzZjXOO/4wETWpN7k+lT9K89pzunHr4/NKM7MvSmd3T/74+3Vd/bvkffX5zzn2efbP/gtcC7c++i3SFjsWPJZZllu/uS8gl2pX7VcpX0u/2LwZeFr7pra2ttvp9bl11/TTn1X/b74o/Kn24bgxvKv3t8df55tie6w0ukAwA5akAgjiDRyCllH+aHm0WEYPKYWa41jwvXh8xh8GfWYhJm5WBhZUQQymyBRkd2BFM9xiTzIucOtwhPF276Lzm+5u1JgXUhT+JzIb7ED4i2SLFJH90zIUGULKDR5B4UuJWHqKeVPqnpqNerbmp5abTo4Xce9V/V+GZgY5u+bN5bcH2fSa8ZmbmdRZrlgJWEdcfCuLZudrX21w5qTlnOqS+8hBjc79wqP114C3l4+tb5r/vIBRwJvBq0cEQ0OCCkLfRbOFKEbGRpVET0SQ4+TPXowPjWhKrEvaSmZJUXpuFNqRNrp9NqMhyfenFzPZM0SO62crXvGOsc9Ny4vOT+swKPQ7qxBEbVYqkSglFhKP/epbOJ8/4Wu8pqLpRUnLkVWul7Wr5Ku5qpB16zUDl25ebWmLrP+cIPVNZVGnsY/1981PbhR2ZzZEnTTpFWqjbFttX341tXb2R2BnUZ3RLswXYt3h+5d6U6779Vj+ED0wc7DqUftvcV98f0uj9UHOAZoT2ae3hrMGwobtn4mN8Iy8nV04Hn9i8yXQWOm41ITDBPLkwNTNa9Spz1f687wz2y/mZntfFv8LuK91Zz8PMv8hw9PFqo/Hl/0WNJe5l6mfRpZub565nPQF+OvYl/pa9Pfbq+X0KK+W/+Q/8n689PG41+Xfyf/cd1U3SJvfd8e2mmke9PpAMAEYmAOx6ALQSPGSCGygNJH1aDZ0GnoLUwqlhVbjqPixvEJDOIMk4x5TJbM7MwzLPWsCQRrNgUiM/En+zTpAUcj+QJnLlc6dzxPKG/ALk8+D37X3Q4CBwUPCtkI24nYi1qKGYmbSxhJ6klp7lGVFpERkGWl4CkbcovyswrTii+UhqgDyvdV2lSvqVWrl2nkaZ7ROq2doZOqm7w3QS9KP8jAy9B7n6eRjbHVfnMTY1MrMzNzQwszS4MD2lYG1loH1Wx0bTXt1OxVHFQc1Zw0nKkuaq7UQwpuCu5KHmqeOl6a3mo+6r5afnv9tQOMAo2DjA/rHNEL1g0xCTUKo4YLRRAjtiKXoqajh2LuxF6Nyz4aG++ZYJOokSR+jHjsV/JsyoPj1am5aXHphzLUT/CfxJxcPNWfWZuVczooe/8ZqRxczkLu47ya/NQC90Lts3xnfxWNFbeW5JQGnNtXJnIefX7+Qnf5uYsxFfaXqJWEyo+XH1ZVVqfX+NXqXeG98u1qX11JfWCDcsPOtSeNudedm8Sbvtxob05qMblJujnd2tQW1653i3Br/nZrx4lOjzuaXZxdtLuT91q7K+/n9sQ+CHjo+ci116MvuD/mcdpAxZPep5+H+Idtn5WPfH1u+uLamMR4w6Tm1Px060zObMy7tLnBBYXFiU+3Py99q/0purlKpwP8/X0AADhVgFJ1AJcjAPbqANkvASRpAJyeANasAHYagDokBSh+KUAOrvzv/xADP6iFD4gw4oaUIS9RBJQxKgXVgfqGlkb7oi+gxzAsGEPMMUwn5juWgvXHVmFncXw4R1wxbhzPjrfG5+NHGTgYHBlKGaYZBRh9GBsYvzNpMB1nGmTmZPZgbmD+zWLGcp5lhVWHNZf1LUGJkE34wKbDVsK2RjQlVrNj2H3Yu0mCpHTSIocZRytZmHyKTOP05HzKpc3VxC3Anc+D4UngofGG8n7c5bHrPZ873wy/K//EbufdbwQ8BOYFgwTXhY4JMwtfEJEWuS1qLPpGLFacWbxaQldiQjJUiijVusdmzw/pSzLmMmuyFylWciDXKO+jwKcwrligZEllpj5VLlZxUhVW/arWrZ6j4aZJ0dzWmtK+pXNWN2LvAT15fV79nwbvDQf39Rk1G9fuLzTJNL1s9sL8lyX1gJdVvnXXwS1bNbtQ+2sOs07izj4uba6bbnvdMz1eesl4J/mM+kn5nwxYDDpwuCGYHJIRuhTuGfE6yjy6L9Y4bijeI2EuKS6ZnNKcapH2MaPopMKpuazCbLscTO5gfm6hdZFk8efSp2V3Lty+2HPpyeXe6rXa5TquBoVGm6b05ms3F9p5bvt21nXtdLv2XHjE0+f/eOap09DoiNHz2TG7ifVXOTP8swPv3ec3P1Yua6wMf3Fce0QT/uG9Efnb+M+7Ld1t1R0ROpFOBwA5CIKr8AERRTyRSmQWtRvljipHvUELot3Ql9BzGBGML6YOs4pVxMZi7+JQOFNcPm4SL4gPwDfjNxnMGIoZ3jHKMh5jHGTaxRTC1MVMYPZh7mQhsgSw3GflYY1gHSJIEtIJ79j02GqJWGIQcZSdyl5OYiDFkOY5bDkekVXIdZxCnEVcTFyZ3MCdwL3BE8OzwZvI+2dXMh+eL5ufxF+ym293vYCiQJfgfsFxIX+h38J5IqIi7aImogtiqeJ84h0SDhJrkrlSVKlXe+KlhaWfySTICsm+oJyUU5H7KF+h4KTIoTiidIZqrkxQnlIpUw1QU1HHqo9r1GrGaplqS+ngdT7q9u2t0cvRjzJwMjTep2mkbCy2X9CE1ZTdjGJuYeFnmXOgyWrI+osNt62pXZJ9k8OkE9nZ2CXF9Z4byt3So8hz0lvQJ9H3uT9XQGTgy8MKR3KDf4c6h/VHqEeWR5NisuKQo0fj1xITkmjJycfxqXnp5IySk5RTj7LsT8+fSckVzXtY4FZIKyos2Vu6VJZ4Qa58oeJMpdZlWnV5rcdVUt1wQ0ajQRNyo7slvdW6fdethY62Oyl3rbrF7tMfzD5q6ct9fPSJ+aDGMP8z+ujXF2/HRibuTdVPV80UzRa8K5jL+XDi4+mlE5+yVvO+lK41rLd87/85/uvdJmqbmU4HAAtoQPCIL9KN4kPFoF6g5dDZ6CWMEaYGi8X6YPtx4rjTuDW8A/4egzhDLsMmYyDjFJMxUwczhbmGhY/lLCsrayaBmVDARmQ7RxQhNrFrsY+R/DgQjhKyGnmKM4aLxHWL25F7i+cKry3vzq4mPi9+En/P7lgBGYH3gueFHIV5hGdEykSdxSTEVsXbJFIk9aWIUnN7rkmnyTjLSlLQlFm5Zvk8hVDFA0pyVAJ1TXlGpVu1Ua1M/YRGhOYhLRNtPR01XcpeET0efR4DJkOmfcxGPMbc+4VM+ExlzCzNQy1yLTsPvLWGgzI2DrZn7R7b0x3lnMKd612WD8m7Jbo/8+T08vRu9eXxO+zfEygWlHN4MdgxpC9MLvxKJCkqKwYbmxa3E5+YiEnKSGZPqUyVSWvP0Drx/NSRLOT02TOUnLG8uALOwqYis+I/pfVl/hdkymkVI5V1VUU14Vds6wwalBu5mog3llvet061t92u7Dzd5XFP/T65Z+bhnd6YfuoAPGkZdB/GP6sclXs+9NJ9bGrCcvL+K8r0ude0N3tnM98OvyfMmc1HfihZ6Pw4ubi0tL68/Gl2ZXT1weemL0VfI9b2fcN/e7qeRTOl/fpe/cPyx+rP7A3JjfZf+369/G31e/CPyZ+7m6KbWZtftxy26rY2tvdvl2wv7Kju1NF30XPodIC/fgkAAJgMw4LDIoUsDPf9F3P3/0VIcMz/9EAAgMUv1N4WAEgAwA+GEAbBEAaRIAQWYAj7AP56NQAAHBGg3BsAoMeN/n/qRvsdjQYAMAwLj48MCgiMFtIPDw/2EzIMCwmPifaLlBUyDfWRkxVSUlBQAQD4Fzxy/RLXD6nBAAABNElEQVQ4jaWSsc3CMBCFPxA9Q7AAS2QCCjaAmZKOLhtQZIBIrIBCgURBg2QkwIl8ORrsP7GR/oJX+t57d+988CMm/xHKstT4zRjDdrudAMz8Y57ngeiLHuv1emRQFAVN0+hisZjMvHiz2QDQdR2AxibP5xNrLdbacYRY/Hq9uN/v7Pd75vN5mOB2u2GtpW1bqqoKtal3GoofjwcAq9UqdPJiP8FyucQY87eDodiT+r7HGENRFPEeA4LBUCwiAIgIWZYF8mc/4x34JcaFOL9zDuccIoJzjqqq0nFio7IsVVX1er3q5XLR8/msp9NJj8ej5nmuTdPoNLVJMewsIiEiDH7Bd/8Wx4sPh0NikBzSB6ND8p29WWIA0LYtXdfhnEsiDEUiQt/3qcFut0uE326gruuE9xPeV+QGGGbM4PIAAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/libs/DEV/1.1.3/demo/for_the_demo/favicons/magnolia.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/libs/DEV/1.1.3/demo/for_the_demo/favicons/myweb2.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/libs/DEV/1.1.3/demo/for_the_demo/favicons/newsvine.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/libs/DEV/1.1.3/demo/for_the_demo/favicons/reddit.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/libs/DEV/1.1.3/demo/for_the_demo/favicons/segnalo.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/libs/DEV/1.1.3/demo/for_the_demo/favicons/simpy.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/libs/DEV/1.1.3/demo/for_the_demo/favicons/spurl.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/libs/DEV/1.1.3/demo/for_the_demo/favicons/technorati.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/libs/DEV/1.1.3/demo/for_the_demo/favicons/wists.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/libs/DEV/1.1.3/demo/for_the_demo/feed.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAANbY1E9YMgAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAJdSURBVHjajJPNaxNBGMaf2U1aC1G3YoxEtCuttBU/WsihIGgLXrxoi3gQEdu/oOYvqCKetTdvLfQgiNAUBG/NSYRSbJBYC1ISsdZKsG5Io+l+ZH1mZ5OUnHzh3Z2Pd37zPLOzAox6JjIOp/6MTRMunx7TDdPxW+1WFv060vqMnxHe8vAkyutzSIxCGxwA9DkW1NoWH3hXyP/ow98CCJkQzpszv8WxIUNPPQEKd4G9daWgkfW2ti6AmICzIuD9EMVIvVY1ogPDwOY94MhToNtglQWUloBfGcC22mBU8ReIUOz+lmZqntcBgRdAOQ9EuTg+yhwHztPKSAFIPiQEKvfD3PMhonToaQgAwS4OJ4pp4PMUsD3PvqWAgzzbkSwnDQVxQpjbALidARG7HPSHqM0EVmeB12eB/HMEcZyqrmYD6aiFAC5xXAJ23+9wR+K+c/DEA+DcDHBzDbi2COQIWp5SkG7CLz5SFmw1ZLs6NJsUVENpBR5cKadmk9z1DkE/2V95rMZShHeZqjYAaBKgA3/CC7JGyQv8Iq/GuBPPoJO+r/Mw33HnSlGtujStahsKpI8mgJcJt7Pq8F6Oqao4pfdPAh9mVb93vAkIzsCXrQbgCiX2EDJB/9uU/mleVfbdAr5kVPuo2QTItVogpcyXL5RfGTs5VbSxpPrSSjm0IOPCDcrvCZpi9X68YBy2zd5kRd31xGUFkHGIC0/SQs1SYybVxTje34fNt19h5XNFCaApLBoxG6cTVXR08b5G0MrogZR3ztHwbeMUrKL0zZ9JPkOI+p3/L6SfdGqhlPknwABytQHv8b3E2QAAAABJRU5ErkJggg==]]></data>
	</file>
	<file>
	  <filename>/libs/DEV/1.1.3/demo/for_the_demo/logo_simplepie_demo.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/libs/DEV/1.1.3/demo/for_the_demo/lucida-grande-bold.swf</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/libs/DEV/1.1.3/demo/for_the_demo/mediaplayer.swf</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/libs/DEV/1.1.3/demo/for_the_demo/mediaplayer_readme.htm</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGh0bWw+CjxoZWFkPgo8bWV0YSBodHRwLWVxdWl2PSJyZWZyZXNoIiBjb250ZW50PSIwO3VybD1odHRwOi8vd3d3Lmplcm9lbndpamVyaW5nLmNvbS9leHRyYXMvcmVhZG1lLmh0bWwiPgo8L2hlYWQ+CjwvaHRtbD4=]]></data>
	</file>
	<file>
	  <filename>/libs/DEV/1.1.3/demo/for_the_demo/mini_podcast.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAEQAAAATCAYAAAApmKv9AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAAB90RVh0U29mdHdhcmUATWFjcm9tZWRpYSBGaXJld29ya3MgOLVo0ngAAAAWdEVYdENyZWF0aW9uIFRpbWUAMDEvMDMvMDZDfOYPAAAEB0lEQVRYheWWUWgbdRzHP5dcel3TLGt6Q65mtjCxWIfBppOKzi1jwsRtOs2TLysiRJ/sg/TBBwni07A+TaQFccIQGS2dZUhFaCKDtYxma0C7pbquxSxpbRpb07TL2uZ8SHLJ5TLZ02zjH46Q7+/7+/5/v+/97u4vqKqqXl+9xcfRL7l+P0J8I0HpUixyVWJHze18ZD/D8/KzWK1WTCYTAEIodVM9evM96sTabVHoo8SW11c4l/2A159+hYaGBkwmE+bY26I/kV0mnkmAinYpFrnqsU0hS2TxNi+kW5FlmZqaGsTQ2i3i98vcq5GJr/8/sIi8QHgyTHNzM/X19Yj/lnBkj5sje9zUm+u4sPAD8a3EA4V3MhaNRkmlUgCY2ILCpZjzCVtw/ik/l57pJbul8unMV5xv9RN09Rt4lXJ3GpbJZNjc3ARAZCvvlFR0r6vpJGeUE7zz6yd8HRsG4I3JD7nz0jCKWMFlqTowyBuiSDLxtZJgNvczNB+gYFhLjcLF+Z/wNb2J//d+jaoen9AJeq75iKTniK8ldDHvjR4GF0Yr8gt7l8Y813wEk6EH4ookE3t5RKflvdHDwHNnDU2W7qGZsWY0A0BURGPwgHU/30QvEzzYh/+3fiZXpvm+/XN2i1bCf0/jj/RrwgCecR/BpXzxr03gGfcR84xouCLJxI7l/hf4kdU54pmExg909uEN9TA4P6rTCXT2GfS9oR4G3Gd1uCLlvhxCrEPHK+g9jBkAYnlQqZU5N3ORycPfYrfUM+T+jN7bF9gtWgGYXYvnnr/aonCgs694N676CCZyRZLNf+IKe+Qnr1G0V5zIpcyKNpHCcAdKrWzQL/CE4Q7UUyWTc9VnaLRUr9BbpX51hhgS0rmEyZVpDsvtADxZt0/jXLobzDWZLgp7ruTv+D39Zo1mu45X2GtpXV9oo9lejOdx9fQEnis+TT+YCKHUysReHdF4wlDOtPi9hMYv8Mr1Snur1K/BkPLgbDqmGRL8M0RLnQLAj/ExY+Oi3SDcdPk4sRPFZ9zzs49Iag6AwKHiHfeO9TB4dxThjw5U74SOH1wsm7R0cdLU02Xvojxf10eW4jQ/hBkAAt+5VWWX8Y3buruF9/e/BYD/l36WN1JU4lUD1j1+iK6uLlwuF6LX4WFgMWBIiPw1S/dEr15ktYLwDsf2zlmQJAlRFAEwves8ya4NS/GwUpNPKD3AVCkmroN7RsHpdGKz2XKGvLivnS8e76Z15bFtU+ijwPbesXBs7AkOKgdwuVw4HA4AhGw2qyaTSaampgiHw0SjUTKZDNW+JEnC6XTicrloa2vD4XAgCAKCmluk02mSySSpVEo711fzEkURm82Gw+HAarUiCAJAzpD/uLZttf4BoMzuXes4COsAAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/libs/DEV/1.1.3/demo/for_the_demo/place_audio.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAIIAAAAQCAIAAABVzzDiAAAAA3NCSVQICAjb4U/gAAAACXBIWXMAABv9AAAb/QGX0Qc2AAAAFHRFWHRDcmVhdGlvbiBUaW1lADQvNS8wNpNytkIAAAAfdEVYdFNvZnR3YXJlAE1hY3JvbWVkaWEgRmlyZXdvcmtzIDi1aNJ4AAACq0lEQVRYhe2Xv08TYRjHP3fUgkhNo2AoEFMZXFwIVAcduMnBSKwDAw5iTCwrg39A/wD7DzCQhoUYHRphNKYTOhwJqx304o9TVCxy0ApUXof22mvv7Q9iaBPb7/Tm+zzP933e9/v07qowP8rTz2j9dNB85AQbvwgPKtw4x91BLp5udUftivcZnn9R8aodD1qJS730dnkY6ZFGtYEJ7cLE9sFuwkwae2aTe2svDPeofPrt5uNXo/Fr0eS39bixkrj+JHol0vze2ggeReWslzTsgAUZyPJgZCo8rGmv5pLf17cPrfDaY20g1OpO/wscQQ4OIAsZsGAH0pDFU8j4A0AOgH2MHdMwTQCFYF8g8S4Z7tcSH5Oo0AUgZvR8nfKs4JCY1otrNyOma+W7a50lFVXVGCdZV+dYUu7MuiSgLIUQiNkSAygL8oH2uKmgLxBPrSZuxuZfx4Do2NzY+cvzazHsp5eI6EU5EdGVRVs6a0sqZYK1b1zqgfuENXRq2ylNaFyqFM0hZnRlOYRA3NOVJZt8qCuLIXJl11LaeiEE8pATEhviqdW4Fp0MjAPx1ApgWKa/2yetL1N3v2XSjoUHoOCZUjgq+alBYl4poYpJFWk1MksJy46EHAj7AZC1yV0Q9tqyo/YpnIcV9x1jnitERUR3ZzYCiQ2GVfgu8nf7gr4hYPtgN2EkpfV1fa7o1Zlfd1IkfFqyLvtpyqTk+pZjXRygw8qGnXA3nyfdGx3jWgCpDYBhmZOBcb+3L2nq4aC2sfW26A3Vba82C7XHJB9tpOl/GbcGpdxk45tK/Wi0H24HmBqqYP1eXzQU2fiRyj+UOjhZvNxUuDPErUCrG2lvvDBVNvdb3UXb40NGxdjjq+SPdAdNQsrilKrwaBT9J4M9nJG/rjs4Qewf8WaL2eBf4ENY5FGx1LwAAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/libs/DEV/1.1.3/demo/for_the_demo/place_video.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/libs/DEV/1.1.3/demo/for_the_demo/sifr-config.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[dmFyIHlhbm9uZV9rYWZmZWVzYXR6ID0gewoJc3JjOiAnLi9mb3JfdGhlX2RlbW8veWFub25lLWthZmZlZXNhdHotYm9sZC5zd2YnCn07Cgp2YXIgbHVjaWRhX2dyYW5kZSA9IHsKCXNyYzogJy4vZm9yX3RoZV9kZW1vL2x1Y2lkYS1ncmFuZGUtYm9sZC5zd2YnCn07CgpzSUZSLmFjdGl2YXRlKHlhbm9uZV9rYWZmZWVzYXR6KTsKLy9zSUZSLmFjdGl2YXRlKGx1Y2lkYV9ncmFuZGUpOwoKc0lGUi5yZXBsYWNlKHlhbm9uZV9rYWZmZWVzYXR6LCB7Ci8vc0lGUi5yZXBsYWNlKGx1Y2lkYV9ncmFuZGUsIHsKCglzZWxlY3RvcjogJ2gzLmhlYWRlcicsCgl3bW9kZTogJ3RyYW5zcGFyZW50JywKCWNzczogewoJCScuc0lGUi1yb290JzogewoJCQkndGV4dC1hbGlnbic6ICdjZW50ZXInLAoJCQknY29sb3InOiAnIzAwMDAwMCcsCgkJCSdmb250LXdlaWdodCc6ICdib2xkJywKCQkJJ2JhY2tncm91bmQtY29sb3InOiAnI0VFRkZFRScsCgoJCQknZm9udC1zaXplJzogJzUwcHgnLCAvLyBGb3IgWWFub25lIEthZmZlZXNhdHoKCQkJLy8nZm9udC1zaXplJzogJzQwcHgnLCAvLyBGb3IgTHVjaWRhIEdyYW5kZQoKCQkJJ2xldHRlci1zcGFjaW5nJzogJzAnIC8vIEZvciBZYW5vbmUgS2FmZmVlc2F0egoJCQkvLydsZXR0ZXItc3BhY2luZyc6ICctNCcgLy8gRm9yIEx1Y2lkYSBHcmFuZGUKCgkJfSwKCQknYSc6IHsKCQkJJ3RleHQtZGVjb3JhdGlvbic6ICdub25lJywKCQkJJ2NvbG9yJzogJyMwMDAwMDAnCgkJfSwKCQknYTpob3Zlcic6IHsKCQkJJ3RleHQtZGVjb3JhdGlvbic6ICdub25lJywKCQkJJ2NvbG9yJzogJyM2NjY2NjYnCgkJfQoJfQp9KTsK]]></data>
	</file>
	<file>
	  <filename>/libs/DEV/1.1.3/demo/for_the_demo/sIFR-print.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Lyo9OnByb2plY3QKICAgIHNjYWxhYmxlIElubWFuIEZsYXNoIFJlcGxhY2VtZW50IChzSUZSKSB2ZXJzaW9uIDMuCgogID06ZmlsZQogICAgQ29weXJpZ2h0OiAyMDA2IE1hcmsgV3ViYmVuLgogICAgQXV0aG9yOiBNYXJrIFd1YmJlbiwgPGh0dHA6Ly9ub3ZlbWJlcmJvcm4ubmV0Lz4KCiAgPTpoaXN0b3J5CiAgICAqIElGUjogU2hhdW4gSW5tYW4KICAgICogc0lGUiAxOiBNaWtlIERhdmlkc29uLCBTaGF1biBJbm1hbiBhbmQgVG9tYXMgSm9naW4KICAgICogc0lGUiAyOiBNaWtlIERhdmlkc29uLCBTaGF1biBJbm1hbiwgVG9tYXMgSm9naW4gYW5kIE1hcmsgV3ViYmVuCgogID06bGljZW5zZQogICAgVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhbmQgcHJvdmlkZWQgdW5kZXIgdGhlIENDLUdOVSBMR1BMLgogICAgU2VlIDxodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9saWNlbnNlcy9MR1BMLzIuMS8+ICAgIAoqLwoKCi8qIFRoaXMgaXMgdGhlIHByaW50IHN0eWxlc2hlZXQgdG8gaGlkZSB0aGUgRmxhc2ggaGVhZGxpbmVzIGZyb20gdGhlIGJyb3dzZXIuLi4gcmVndWxhciBicm93c2VyIHRleHQgaGVhZGxpbmVzIHdpbGwgbm93IHByaW50IGFzIG5vcm1hbCAqLwoKLnNJRlItZmxhc2ggewoJZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OwoJaGVpZ2h0OiAwOwoJd2lkdGg6IDA7Cglwb3NpdGlvbjogYWJzb2x1dGU7CglvdmVyZmxvdzogaGlkZGVuOwp9Cgouc0lGUi1hbHRlcm5hdGUgewoJdmlzaWJpbGl0eTogdmlzaWJsZSAhaW1wb3J0YW50OwoJZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKCXBvc2l0aW9uOiBzdGF0aWMgIWltcG9ydGFudDsKCWxlZnQ6IGF1dG8gIWltcG9ydGFudDsKCXRvcDogYXV0byAhaW1wb3J0YW50Owp9]]></data>
	</file>
	<file>
	  <filename>/libs/DEV/1.1.3/demo/for_the_demo/sIFR-screen.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Lyo9OnByb2plY3QKICAgIHNjYWxhYmxlIElubWFuIEZsYXNoIFJlcGxhY2VtZW50IChzSUZSKSB2ZXJzaW9uIDMuCgogID06ZmlsZQogICAgQ29weXJpZ2h0OiAyMDA2IE1hcmsgV3ViYmVuLgogICAgQXV0aG9yOiBNYXJrIFd1YmJlbiwgPGh0dHA6Ly9ub3ZlbWJlcmJvcm4ubmV0Lz4KCiAgPTpoaXN0b3J5CiAgICAqIElGUjogU2hhdW4gSW5tYW4KICAgICogc0lGUiAxOiBNaWtlIERhdmlkc29uLCBTaGF1biBJbm1hbiBhbmQgVG9tYXMgSm9naW4KICAgICogc0lGUiAyOiBNaWtlIERhdmlkc29uLCBTaGF1biBJbm1hbiwgVG9tYXMgSm9naW4gYW5kIE1hcmsgV3ViYmVuCgogID06bGljZW5zZQogICAgVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhbmQgcHJvdmlkZWQgdW5kZXIgdGhlIENDLUdOVSBMR1BMLgogICAgU2VlIDxodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9saWNlbnNlcy9MR1BMLzIuMS8+ICAgIAoqLwoKLyotLS0tIHNJRlIgLS0tKi8KLnNJRlItZmxhc2ggewoJdmlzaWJpbGl0eTogdmlzaWJsZSAhaW1wb3J0YW50OwoJbWFyZ2luOiAwOwoJcGFkZGluZzogMDsKfQoKLnNJRlItcmVwbGFjZWQgewoJdmlzaWJpbGl0eTogdmlzaWJsZSAhaW1wb3J0YW50Owp9Cgouc0lGUi1hbHRlcm5hdGUgewoJcG9zaXRpb246IGFic29sdXRlOwoJbGVmdDogMDsKCXRvcDogMDsKCXdpZHRoOiAwOwoJaGVpZ2h0OiAwOwoJZGlzcGxheTogYmxvY2s7CglvdmVyZmxvdzogaGlkZGVuOwp9CgovKi0tLS0gSGVhZGVyIHN0eWxpbmcgLS0tKi8K]]></data>
	</file>
	<file>
	  <filename>/libs/DEV/1.1.3/demo/for_the_demo/sifr.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Lyo9OnByb2plY3QKICAgIHNjYWxhYmxlIElubWFuIEZsYXNoIFJlcGxhY2VtZW50IChzSUZSKSB2ZXJzaW9uIDMsIHJldmlzaW9uIDI0NQoKICA9OmZpbGUKICAgIENvcHlyaWdodDogMjAwNiBNYXJrIFd1YmJlbi4KICAgIEF1dGhvcjogTWFyayBXdWJiZW4sIDxodHRwOi8vbm92ZW1iZXJib3JuLm5ldC8+CgogID06aGlzdG9yeQogICAgKiBJRlI6IFNoYXVuIElubWFuCiAgICAqIHNJRlIgMTogTWlrZSBEYXZpZHNvbiwgU2hhdW4gSW5tYW4gYW5kIFRvbWFzIEpvZ2luCiAgICAqIHNJRlIgMjogTWlrZSBEYXZpZHNvbiwgU2hhdW4gSW5tYW4sIFRvbWFzIEpvZ2luIGFuZCBNYXJrIFd1YmJlbgoKICA9OmxpY2Vuc2UKICAgIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYW5kIHByb3ZpZGVkIHVuZGVyIHRoZSBDQy1HTlUgTEdQTC4KICAgIFNlZSA8aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbGljZW5zZXMvTEdQTC8yLjEvPiAgICAKKi8KCnZhciBwYXJzZVNlbGVjdG9yPShmdW5jdGlvbigpe3ZhciBfMT0vXHMqLFxzKi87dmFyIF8yPS9ccyooW1xzPit+KCksXXxefCQpXHMqL2c7dmFyIF8zPS8oW1xzPit+LF18W14oXVwrfF4pKFsjLjpAXSkvZzt2YXIgXzQ9L15bXlxzPit+XS87dmFyIF81PS9bXHMjLjo+K34oKUBdfFteXHMjLjo+K34oKUBdKy9nO2Z1bmN0aW9uIHBhcnNlU2VsZWN0b3IoXzYsXzcpe183PV83fHxkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7dmFyIF84PV82LnNwbGl0KF8xKSxfOT1bXTtmb3IodmFyIGk9MDtpPF84Lmxlbmd0aDtpKyspe3ZhciBfYj1bXzddLF9jPXRvU3RyZWFtKF84W2ldKTtmb3IodmFyIGo9MDtqPF9jLmxlbmd0aDspe3ZhciBfZT1fY1tqKytdLF9mPV9jW2orK10sXzEwPSIiO2lmKF9jW2pdPT0iKCIpe3doaWxlKF9jW2orK10hPSIpIiYmajxfYy5sZW5ndGgpe18xMCs9X2Nbal19XzEwPV8xMC5zbGljZSgwLC0xKX1fYj1zZWxlY3QoX2IsX2UsX2YsXzEwKX1fOT1fOS5jb25jYXQoX2IpfXJldHVybiBfOX1mdW5jdGlvbiB0b1N0cmVhbShfMTEpe3ZhciBfMTI9XzExLnJlcGxhY2UoXzIsIiQxIikucmVwbGFjZShfMywiJDEqJDIiKTtpZihfNC50ZXN0KF8xMikpe18xMj0iICIrXzEyfXJldHVybiBfMTIubWF0Y2goXzUpfHxbXX1mdW5jdGlvbiBzZWxlY3QoXzEzLF8xNCxfMTUsXzE2KXtyZXR1cm4gKF8xN1tfMTRdKT9fMTdbXzE0XShfMTMsXzE1LF8xNik6W119dmFyIF8xOD17dG9BcnJheTpmdW5jdGlvbihfMTkpe3ZhciBhPVtdO2Zvcih2YXIgaT0wO2k8XzE5Lmxlbmd0aDtpKyspe2EucHVzaChfMTlbaV0pfXJldHVybiBhfX07dmFyIGRvbT17aXNUYWc6ZnVuY3Rpb24oXzFkLHRhZyl7cmV0dXJuICh0YWc9PSIqIil8fCh0YWcudG9Mb3dlckNhc2UoKT09XzFkLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpfSxwcmV2aW91c1NpYmxpbmdFbGVtZW50OmZ1bmN0aW9uKF8xZil7ZG97XzFmPV8xZi5wcmV2aW91c1NpYmxpbmd9d2hpbGUoXzFmJiZfMWYubm9kZVR5cGUhPTEpO3JldHVybiBfMWZ9LG5leHRTaWJsaW5nRWxlbWVudDpmdW5jdGlvbihfMjApe2Rve18yMD1fMjAubmV4dFNpYmxpbmd9d2hpbGUoXzIwJiZfMjAubm9kZVR5cGUhPTEpO3JldHVybiBfMjB9LGhhc0NsYXNzOmZ1bmN0aW9uKF8yMSxfMjIpe3JldHVybiAoXzIyLmNsYXNzTmFtZXx8IiIpLm1hdGNoKCIoXnxcXHMpIitfMjErIihcXHN8JCkiKX0sZ2V0QnlUYWc6ZnVuY3Rpb24odGFnLF8yNCl7cmV0dXJuIF8yNC5nZXRFbGVtZW50c0J5VGFnTmFtZSh0YWcpfX07dmFyIF8xNz17IiMiOmZ1bmN0aW9uKF8yNSxfMjYpe2Zvcih2YXIgaT0wO2k8XzI1Lmxlbmd0aDtpKyspe2lmKF8yNVtpXS5nZXRBdHRyaWJ1dGUoImlkIik9PV8yNil7cmV0dXJuIFtfMjVbaV1dfX1yZXR1cm4gW119LCIgIjpmdW5jdGlvbihfMjgsXzI5KXt2YXIgXzJhPVtdO2Zvcih2YXIgaT0wO2k8XzI4Lmxlbmd0aDtpKyspe18yYT1fMmEuY29uY2F0KF8xOC50b0FycmF5KGRvbS5nZXRCeVRhZyhfMjksXzI4W2ldKSkpfXJldHVybiBfMmF9LCI+IjpmdW5jdGlvbihfMmMsXzJkKXt2YXIgXzJlPVtdO2Zvcih2YXIgaT0wLF8zMDtpPF8yYy5sZW5ndGg7aSsrKXtfMzA9XzJjW2ldO2Zvcih2YXIgaj0wLF8zMjtqPF8zMC5jaGlsZE5vZGVzLmxlbmd0aDtqKyspe18zMj1fMzAuY2hpbGROb2Rlc1tqXTtpZihfMzIubm9kZVR5cGU9PTEmJmRvbS5pc1RhZyhfMzIsXzJkKSl7XzJlLnB1c2goXzMyKX19fXJldHVybiBfMmV9LCIuIjpmdW5jdGlvbihfMzMsXzM0KXt2YXIgXzM1PVtdO2Zvcih2YXIgaT0wLF8zNztpPF8zMy5sZW5ndGg7aSsrKXtfMzc9XzMzW2ldO2lmKGRvbS5oYXNDbGFzcyhbXzM0XSxfMzcpKXtfMzUucHVzaChfMzcpfX1yZXR1cm4gXzM1fSwiOiI6ZnVuY3Rpb24oXzM4LF8zOSxfM2Epe3JldHVybiAocHNldWRvQ2xhc3Nlc1tfMzldKT9wc2V1ZG9DbGFzc2VzW18zOV0oXzM4LF8zYSk6W119fTtwYXJzZVNlbGVjdG9yLnNlbGVjdG9ycz1fMTc7cGFyc2VTZWxlY3Rvci5wc2V1ZG9DbGFzc2VzPXt9O3BhcnNlU2VsZWN0b3IudXRpbD1fMTg7cGFyc2VTZWxlY3Rvci5kb209ZG9tO3JldHVybiBwYXJzZVNlbGVjdG9yfSkoKTsKdmFyIHNJRlI9bmV3IGZ1bmN0aW9uKCl7dmFyIF8zYj10aGlzO3ZhciBfM2M9InNJRlItYWN0aXZlIjt2YXIgXzNkPSJzSUZSLXJlcGxhY2VkIjt2YXIgXzNlPSJzSUZSLXJlcGxhY2luZyI7dmFyIF8zZj0ic0lGUi1mbGFzaCI7dmFyIF80MD0ic0lGUi1pZ25vcmUiO3ZhciBfNDE9InNJRlItYWx0ZXJuYXRlIjt2YXIgXzQyPSJzSUZSLWNsYXNzIjt2YXIgXzQzPSJzSUZSLWxheW91dCI7dmFyIF80ND02O3ZhciBfNDU9MTI2O3ZhciBfNDY9ODt2YXIgXzQ3PSJTSUZSLVBSRUZFVENIRUQiO3ZhciBfNDg9WzEwLDEuNTUsMTksMS40NSwzMiwxLjM1LDcxLDEuMywxLjI1XTt2YXIgXzQ5PTU7dGhpcy5pc0FjdGl2ZT1mYWxzZTt0aGlzLmlzRW5hYmxlZD10cnVlO3RoaXMuaGlkZUVsZW1lbnRzPXRydWU7dGhpcy5wcmVzZXJ2ZVNpbmdsZVdoaXRlc3BhY2U9ZmFsc2U7dGhpcy5maXhXcmFwPXRydWU7dGhpcy5maXhIb3Zlcj10cnVlO3RoaXMucmVnaXN0ZXJFdmVudHM9dHJ1ZTt0aGlzLnNldFByZWZldGNoQ29va2llPXRydWU7dGhpcy5jb29raWVQYXRoPSIvIjt0aGlzLmRvbWFpbnM9W107dGhpcy5mcm9tTG9jYWw9dHJ1ZTt0aGlzLmZvcmNlQ2xlYXI9ZmFsc2U7dGhpcy5mb3JjZVdpZHRoPWZhbHNlO3RoaXMuZml0RXhhY3RseT1mYWxzZTt0aGlzLmZvcmNlVGV4dFRyYW5zZm9ybT10cnVlO3RoaXMudXNlRG9tQ29udGVudExvYWRlZD10cnVlO3RoaXMuZGVidWdNb2RlPWZhbHNlO3RoaXMuaGFzRmxhc2hDbGFzc1NldD1mYWxzZTt0aGlzLmRlbGF5Q3NzPWZhbHNlO3RoaXMuY2FsbGJhY2tzPVtdO3ZhciBfNGE9MDt2YXIgXzRiPWZhbHNlLF80Yz1mYWxzZTt2YXIgZG9tPW5ldyBmdW5jdGlvbigpe3ZhciBfNGU9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiO3RoaXMuZ2V0Qm9keT1mdW5jdGlvbigpe3ZhciBfNGY9ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKTtpZihfNGYubGVuZ3RoPT0xKXtyZXR1cm4gXzRmWzBdfXJldHVybiBudWxsfTt0aGlzLmFkZENsYXNzPWZ1bmN0aW9uKF81MCxfNTEpe2lmKF81MSl7XzUxLmNsYXNzTmFtZT0oKF81MS5jbGFzc05hbWV8fCIiKT09IiI/IiI6XzUxLmNsYXNzTmFtZSsiICIpK181MH19O3RoaXMucmVtb3ZlQ2xhc3M9ZnVuY3Rpb24oXzUyLF81Myl7aWYoXzUzKXtfNTMuY2xhc3NOYW1lPV81My5jbGFzc05hbWUucmVwbGFjZShuZXcgUmVnRXhwKCIoXnxcXHMpIitfNTIrIihcXHN8JCkiKSwiIikucmVwbGFjZSgvXlxzK3woXHMpXHMrL2csIiQxIil9fTt0aGlzLmhhc0NsYXNzPWZ1bmN0aW9uKF81NCxfNTUpe3JldHVybiBuZXcgUmVnRXhwKCIoXnxcXHMpIitfNTQrIihcXHN8JCkiKS50ZXN0KF81NS5jbGFzc05hbWUpfTt0aGlzLmhhc09uZU9mQ2xhc3NzZXM9ZnVuY3Rpb24oXzU2LF81Nyl7Zm9yKHZhciBpPTA7aTxfNTYubGVuZ3RoO2krKyl7aWYodGhpcy5oYXNDbGFzcyhfNTZbaV0sXzU3KSl7cmV0dXJuIHRydWV9fXJldHVybiBmYWxzZX07dGhpcy5jcmVhdGU9ZnVuY3Rpb24oXzU5KXtpZihkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMpe3JldHVybiBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoXzRlLF81OSl9cmV0dXJuIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXzU5KX07dGhpcy5zZXRJbm5lckh0bWw9ZnVuY3Rpb24oXzVhLF81Yil7aWYodWEuaW5uZXJIdG1sU3VwcG9ydCl7XzVhLmlubmVySFRNTD1fNWJ9ZWxzZXtpZih1YS54aHRtbFN1cHBvcnQpe181Yj1bIjxyb290IHhtbG5zPVwiIixfNGUsIlwiPiIsXzViLCI8L3Jvb3Q+Il0uam9pbigiIik7dmFyIHhtbD0obmV3IERPTVBhcnNlcigpKS5wYXJzZUZyb21TdHJpbmcoXzViLCJ0ZXh0L3htbCIpO3htbD1kb2N1bWVudC5pbXBvcnROb2RlKHhtbC5kb2N1bWVudEVsZW1lbnQsdHJ1ZSk7d2hpbGUoXzVhLmZpcnN0Q2hpbGQpe181YS5yZW1vdmVDaGlsZChfNWEuZmlyc3RDaGlsZCl9d2hpbGUoeG1sLmZpcnN0Q2hpbGQpe181YS5hcHBlbmRDaGlsZCh4bWwuZmlyc3RDaGlsZCl9fX19O3RoaXMubm9kZUZyb21IdG1sPWZ1bmN0aW9uKF81ZCl7dmFyIF81ZT10aGlzLmNyZWF0ZSgiZGl2Iik7XzVlLmlubmVySFRNTD1fNWQ7cmV0dXJuIF81ZS5maXJzdENoaWxkfTt0aGlzLmdldENvbXB1dGVkU3R5bGU9ZnVuY3Rpb24oXzVmLF82MCl7dmFyIF82MTtpZihkb2N1bWVudC5kZWZhdWx0VmlldyYmZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZSl7XzYxPWRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoXzVmLG51bGwpW182MF19ZWxzZXtpZihfNWYuY3VycmVudFN0eWxlKXtfNjE9XzVmLmN1cnJlbnRTdHlsZVtfNjBdfX1yZXR1cm4gXzYxfHwiIn07dGhpcy5nZXRTdHlsZUFzSW50PWZ1bmN0aW9uKF82MixfNjMsXzY0KXt2YXIgXzY1PXRoaXMuZ2V0Q29tcHV0ZWRTdHlsZShfNjIsXzYzKTtpZihfNjQmJiEvcHgkLy50ZXN0KF82NSkpe3JldHVybiAwfV82NT1wYXJzZUludChfNjUpO3JldHVybiBpc05hTihfNjUpPzA6XzY1fTt0aGlzLmdldFpvb209ZnVuY3Rpb24oKXtyZXR1cm4gXzY2Lnpvb20uZ2V0TGF0ZXN0KCl9fTt0aGlzLmRvbT1kb207dmFyIHVhPW5ldyBmdW5jdGlvbigpe3ZhciB1YT1uYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCk7dmFyIF82OT0obmF2aWdhdG9yLnByb2R1Y3R8fCIiKS50b0xvd2VyQ2FzZSgpO3RoaXMubWFjaW50b3NoPXVhLmluZGV4T2YoIm1hYyIpPi0xO3RoaXMud2luZG93cz11YS5pbmRleE9mKCJ3aW5kb3dzIik+LTE7dGhpcy5xdWlja3RpbWU9ZmFsc2U7dGhpcy5vcGVyYT11YS5pbmRleE9mKCJvcGVyYSIpPi0xO3RoaXMua29ucXVlcm9yPV82OS5pbmRleE9mKCJrb25xdWVyb3IiKT4tMTt0aGlzLmllPWZhbHNlLypAY2Nfb24gfHwgdHJ1ZSBAKi87dGhpcy5pZVN1cHBvcnRlZD10aGlzLmllJiYhL3BwY3xzbWFydHBob25lfGllbW9iaWxlfG1zaWVcczVcLjUvLnRlc3QodWEpLypAY2Nfb24gJiYgQF9qc2NyaXB0X3ZlcnNpb24gPj0gNS41IEAqLzt0aGlzLmllV2luPXRoaXMuaWUmJnRoaXMud2luZG93cy8qQGNjX29uICYmIEBfanNjcmlwdF92ZXJzaW9uID49IDUuMSBAKi87dGhpcy53aW5kb3dzPXRoaXMud2luZG93cyYmKCF0aGlzLmllfHx0aGlzLmllV2luKTt0aGlzLmllTWFjPXRoaXMuaWUmJnRoaXMubWFjaW50b3NoLypAY2Nfb24gJiYgQF9qc2NyaXB0X3ZlcnNpb24gPCA1LjEgQCovO3RoaXMubWFjaW50b3NoPXRoaXMubWFjaW50b3NoJiYoIXRoaXMuaWV8fHRoaXMuaWVNYWMpO3RoaXMuc2FmYXJpPXVhLmluZGV4T2YoInNhZmFyaSIpPi0xO3RoaXMud2Via2l0PXVhLmluZGV4T2YoImFwcGxld2Via2l0Iik+LTEmJiF0aGlzLmtvbnF1ZXJvcjt0aGlzLmtodG1sPXRoaXMud2Via2l0fHx0aGlzLmtvbnF1ZXJvcjt0aGlzLmdlY2tvPSF0aGlzLndlYmtpdCYmXzY5PT0iZ2Vja28iO3RoaXMub3BlcmFWZXJzaW9uPXRoaXMub3BlcmEmJi8uKm9wZXJhKFxzfFwvKShcZCtcLlxkKykvLmV4ZWModWEpP3BhcnNlSW50KFJlZ0V4cC4kMik6MDt0aGlzLndlYmtpdFZlcnNpb249dGhpcy53ZWJraXQmJi8uKmFwcGxld2Via2l0XC8oXGQrKS4qLy5leGVjKHVhKT9wYXJzZUludChSZWdFeHAuJDEpOjA7dGhpcy5nZWNrb0J1aWxkRGF0ZT10aGlzLmdlY2tvJiYvLipnZWNrb1wvKFxkezh9KS4qLy5leGVjKHVhKT9wYXJzZUludChSZWdFeHAuJDEpOjA7dGhpcy5rb25xdWVyb3JWZXJzaW9uPXRoaXMua29ucXVlcm9yJiYvLiprb25xdWVyb3JcLyhcZFwuXGQpLiovLmV4ZWModWEpP3BhcnNlSW50KFJlZ0V4cC4kMSk6MDt0aGlzLmZsYXNoVmVyc2lvbj0wO2lmKHRoaXMuaWVXaW4pe3ZhciBheG87dmFyIF82Yj1mYWxzZTt0cnl7YXhvPW5ldyBBY3RpdmVYT2JqZWN0KCJTaG9ja3dhdmVGbGFzaC5TaG9ja3dhdmVGbGFzaC43Iil9Y2F0Y2goZSl7dHJ5e2F4bz1uZXcgQWN0aXZlWE9iamVjdCgiU2hvY2t3YXZlRmxhc2guU2hvY2t3YXZlRmxhc2guNiIpO3RoaXMuZmxhc2hWZXJzaW9uPTY7YXhvLkFsbG93U2NyaXB0QWNjZXNzPSJhbHdheXMifWNhdGNoKGUpe182Yj10aGlzLmZsYXNoVmVyc2lvbj09Nn1pZighXzZiKXt0cnl7YXhvPW5ldyBBY3RpdmVYT2JqZWN0KCJTaG9ja3dhdmVGbGFzaC5TaG9ja3dhdmVGbGFzaCIpfWNhdGNoKGUpe319fWlmKCFfNmImJmF4byl7dGhpcy5mbGFzaFZlcnNpb249cGFyc2VGbG9hdCgvKFtcZCw/XSspLy5leGVjKGF4by5HZXRWYXJpYWJsZSgiJHZlcnNpb24iKSlbMV0ucmVwbGFjZSgvLC9nLCIuIikpfX1lbHNle2lmKG5hdmlnYXRvci5wbHVnaW5zJiZuYXZpZ2F0b3IucGx1Z2luc1siU2hvY2t3YXZlIEZsYXNoIl0pe3ZhciBfNmM9bmF2aWdhdG9yLnBsdWdpbnNbIlNob2Nrd2F2ZSBGbGFzaCJdO3RoaXMuZmxhc2hWZXJzaW9uPXBhcnNlRmxvYXQoLyhcZCtcLj9cZCopLy5leGVjKF82Yy5kZXNjcmlwdGlvbilbMV0pO3ZhciBpPTA7d2hpbGUodGhpcy5mbGFzaFZlcnNpb24+PV80NiYmaTxuYXZpZ2F0b3IubWltZVR5cGVzLmxlbmd0aCl7dmFyIF82ZT1uYXZpZ2F0b3IubWltZVR5cGVzW2ldO2lmKF82ZS50eXBlPT0iYXBwbGljYXRpb24veC1zaG9ja3dhdmUtZmxhc2giJiZfNmUuZW5hYmxlZFBsdWdpbi5kZXNjcmlwdGlvbi50b0xvd2VyQ2FzZSgpLmluZGV4T2YoInF1aWNrdGltZSIpPi0xKXt0aGlzLmZsYXNoVmVyc2lvbj0wO3RoaXMucXVpY2t0aW1lPXRydWV9aSsrfX19dGhpcy5mbGFzaD10aGlzLmZsYXNoVmVyc2lvbj49XzQ2O3RoaXMudHJhbnNwYXJlbmN5U3VwcG9ydD10aGlzLm1hY2ludG9zaHx8dGhpcy53aW5kb3dzO3RoaXMuY29tcHV0ZWRTdHlsZVN1cHBvcnQ9dGhpcy5pZXx8ZG9jdW1lbnQuZGVmYXVsdFZpZXcmJmRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUmJighdGhpcy5nZWNrb3x8dGhpcy5nZWNrb0J1aWxkRGF0ZT49MjAwMzA2MjQpO3RoaXMuY3NzPXRydWU7aWYodGhpcy5jb21wdXRlZFN0eWxlU3VwcG9ydCl7dHJ5e3ZhciBfNmY9ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImhlYWQiKVswXTtfNmYuc3R5bGUuYmFja2dyb3VuZENvbG9yPSIjRkYwMDAwIjt2YXIgXzcwPWRvbS5nZXRDb21wdXRlZFN0eWxlKF82ZiwiYmFja2dyb3VuZENvbG9yIik7dGhpcy5jc3M9IV83MHx8L1wjRnsyfTB7NH18cmdiXCgyNTUsXHM/MCxccz8wXCkvaS50ZXN0KF83MCk7XzZmLnN0eWxlLmJhY2tncm91bmRDb2xvcj0iIjtfNmY9bnVsbH1jYXRjaChlKXt9fXRoaXMueGh0bWxTdXBwb3J0PSEhd2luZG93LkRPTVBhcnNlciYmISFkb2N1bWVudC5pbXBvcnROb2RlO3RyeXt2YXIgbj1kb20uY3JlYXRlKCJzcGFuIik7aWYoIXRoaXMuaWVNYWMpe24uaW5uZXJIVE1MPSJ4In10aGlzLmlubmVySHRtbFN1cHBvcnQ9bi5pbm5lckhUTUw9PSJ4In1jYXRjaChlKXt0aGlzLmlubmVySHRtbFN1cHBvcnQ9ZmFsc2V9dGhpcy56b29tU3VwcG9ydD0hISh0aGlzLm9wZXJhJiZkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpO3RoaXMuZ2Vja29YbWw9dGhpcy5nZWNrbyYmKGRvY3VtZW50LmNvbnRlbnRUeXBlfHwiIikuaW5kZXhPZigieG1sIik+LTE7dGhpcy5yZXF1aXJlc1ByZWZldGNoPXRoaXMuaWVXaW58fHRoaXMua2h0bWw7dGhpcy52ZXJpZmllZEtvbnF1ZXJvcj1mYWxzZTt0aGlzLnN1cHBvcnRlZD10aGlzLmZsYXNoJiZ0aGlzLmNzcyYmKCF0aGlzLmllfHx0aGlzLmllU3VwcG9ydGVkKSYmKCF0aGlzLm9wZXJhfHx0aGlzLm9wZXJhVmVyc2lvbj49OCkmJighdGhpcy53ZWJraXR8fHRoaXMud2Via2l0VmVyc2lvbj49NDEyKSYmKCF0aGlzLmtvbnF1ZXJvcnx8dGhpcy5rb25xdWVyb3JWZXJzaW9uPjMuNSkmJnRoaXMuY29tcHV0ZWRTdHlsZVN1cHBvcnQmJih0aGlzLmlubmVySHRtbFN1cHBvcnR8fCF0aGlzLmtodG1sJiZ0aGlzLnhodG1sU3VwcG9ydCl9O3RoaXMudWE9dWE7dmFyIF83Mj1uZXcgZnVuY3Rpb24oKXt2YXIgXzczPXtsZWFkaW5nOnRydWUsIm1hcmdpbi1sZWZ0Ijp0cnVlLCJtYXJnaW4tcmlnaHQiOnRydWUsInRleHQtaW5kZW50Ijp0cnVlfTt2YXIgXzc0PSIgIjtmdW5jdGlvbiBjYXBpdGFsaXplKCQpe3JldHVybiAkLnRvVXBwZXJDYXNlKCl9dGhpcy5ub3JtYWxpemU9ZnVuY3Rpb24oc3RyKXtpZihfM2IucHJlc2VydmVTaW5nbGVXaGl0ZXNwYWNlKXtyZXR1cm4gc3RyLnJlcGxhY2UoL1xzL2csXzc0KX1yZXR1cm4gc3RyLnJlcGxhY2UoLyhccylccysvZywiJDEiKS5yZXBsYWNlKC9ceEEwLyxfNzQpfTt0aGlzLnRleHRUcmFuc2Zvcm09ZnVuY3Rpb24oXzc3LHN0cil7c3dpdGNoKF83Nyl7Y2FzZSAidXBwZXJjYXNlIjpzdHI9c3RyLnRvVXBwZXJDYXNlKCk7YnJlYWs7Y2FzZSAibG93ZXJjYXNlIjpzdHI9c3RyLnRvTG93ZXJDYXNlKCk7YnJlYWs7Y2FzZSAiY2FwaXRhbGl6ZSI6dmFyIF83OT1zdHI7c3RyPXN0ci5yZXBsYWNlKC9eXHd8XHNcdy9nLGNhcGl0YWxpemUpO2lmKHN0ci5pbmRleE9mKCJmdW5jdGlvbiBjYXBpdGFsaXplIikhPS0xKXt2YXIgXzdhPV83OS5yZXBsYWNlKC8oXnxccykoXHcpL2csIiQxJDEkMiQyIikuc3BsaXQoL15cd3xcc1x3L2cpO3N0cj0iIjtmb3IodmFyIGk9MDtpPF83YS5sZW5ndGg7aSsrKXtzdHIrPV83YVtpXS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKStfN2FbaV0uc3Vic3RyaW5nKDEpfX1icmVha31yZXR1cm4gc3RyfTt0aGlzLnRvSGV4U3RyaW5nPWZ1bmN0aW9uKHN0cil7aWYodHlwZW9mIChzdHIpIT0ic3RyaW5nInx8IXN0ci5jaGFyQXQoMCk9PSIjInx8c3RyLmxlbmd0aCE9NCYmc3RyLmxlbmd0aCE9Nyl7cmV0dXJuIHN0cn1zdHI9c3RyLnJlcGxhY2UoLyMvLCIiKTtpZihzdHIubGVuZ3RoPT0zKXtzdHI9c3RyLnJlcGxhY2UoLyguKSguKSguKS8sIiQxJDEkMiQyJDMkMyIpfXJldHVybiAiMHgiK3N0cn07dGhpcy50b0pzb249ZnVuY3Rpb24ob2JqKXt2YXIgXzdlPSIiO3N3aXRjaCh0eXBlb2YgKG9iaikpe2Nhc2UgInN0cmluZyI6XzdlPSJcIiIrb2JqKyJcIiI7YnJlYWs7Y2FzZSAibnVtYmVyIjpjYXNlICJib29sZWFuIjpfN2U9b2JqLnRvU3RyaW5nKCk7YnJlYWs7Y2FzZSAib2JqZWN0IjpfN2U9W107Zm9yKHZhciBfN2YgaW4gb2JqKXtpZihvYmpbXzdmXT09T2JqZWN0LnByb3RvdHlwZVtfN2ZdKXtjb250aW51ZX1fN2UucHVzaCgiXCIiK183ZisiXCI6IitfNzIudG9Kc29uKG9ialtfN2ZdKSl9XzdlPSJ7IitfN2Uuam9pbigiLCIpKyJ9IjticmVha31yZXR1cm4gXzdlfTt0aGlzLmNvbnZlcnRDc3NBcmc9ZnVuY3Rpb24oYXJnKXtpZighYXJnKXtyZXR1cm4ge319aWYodHlwZW9mIChhcmcpPT0ib2JqZWN0Iil7aWYoYXJnLmNvbnN0cnVjdG9yPT1BcnJheSl7YXJnPWFyZy5qb2luKCIiKX1lbHNle3JldHVybiBhcmd9fXZhciBvYmo9e307dmFyIF84Mj1hcmcuc3BsaXQoIn0iKTtmb3IodmFyIGk9MDtpPF84Mi5sZW5ndGg7aSsrKXt2YXIgJD1fODJbaV0ubWF0Y2goLyhbXlxze10rKVxzKlx7KC4rKVxzKjs/XHMqLyk7aWYoISR8fCQubGVuZ3RoIT0zKXtjb250aW51ZX1pZighb2JqWyRbMV1dKXtvYmpbJFsxXV09e319dmFyIF84NT0kWzJdLnNwbGl0KCI7Iik7Zm9yKHZhciBqPTA7ajxfODUubGVuZ3RoO2orKyl7dmFyICQyPV84NVtqXS5tYXRjaCgvXHMqKFteOlxzXSspXHMqXDpccyooW15ccztdKykvKTtpZighJDJ8fCQyLmxlbmd0aCE9Myl7Y29udGludWV9b2JqWyRbMV1dWyQyWzFdXT0kMlsyXX19cmV0dXJuIG9ian07dGhpcy5leHRyYWN0RnJvbUNzcz1mdW5jdGlvbihjc3MsXzg5LF84YSxfOGIpe3ZhciBfOGM9bnVsbDtpZihjc3MmJmNzc1tfODldJiZjc3NbXzg5XVtfOGFdKXtfOGM9Y3NzW184OV1bXzhhXTtpZihfOGIpe2RlbGV0ZSBjc3NbXzg5XVtfOGFdfX1yZXR1cm4gXzhjfTt0aGlzLmNzc1RvU3RyaW5nPWZ1bmN0aW9uKGFyZyl7dmFyIGNzcz1bXTtmb3IodmFyIF84ZiBpbiBhcmcpe3ZhciBfOTA9YXJnW184Zl07aWYoXzkwPT1PYmplY3QucHJvdG90eXBlW184Zl0pe2NvbnRpbnVlfWNzcy5wdXNoKF84ZiwieyIpO2Zvcih2YXIgXzkxIGluIF85MCl7aWYoXzkwW185MV09PU9iamVjdC5wcm90b3R5cGVbXzkxXSl7Y29udGludWV9dmFyIF85Mj1fOTBbXzkxXTtpZihfNzNbXzkxXSl7XzkyPXBhcnNlSW50KF85MiwxMCl9Y3NzLnB1c2goXzkxLCI6IixfOTIsIjsiKX1jc3MucHVzaCgifSIpfXJldHVybiBlc2NhcGUoY3NzLmpvaW4oIiIpKX07dGhpcy5iaW5kPWZ1bmN0aW9uKF85MyxfOTQpe3JldHVybiBmdW5jdGlvbigpe185M1tfOTRdLmFwcGx5KF85Myxhcmd1bWVudHMpfX19O3RoaXMudXRpbD1fNzI7dmFyIF82Nj17fTtfNjYuZnJhZ21lbnRJZGVudGlmaWVyPW5ldyBmdW5jdGlvbigpe3RoaXMuZml4PXRydWU7dmFyIF85NTt0aGlzLmNhY2hlPWZ1bmN0aW9uKCl7Xzk1PWRvY3VtZW50LnRpdGxlfTtmdW5jdGlvbiBkb0ZpeCgpe2RvY3VtZW50LnRpdGxlPV85NX10aGlzLnJlc3RvcmU9ZnVuY3Rpb24oKXtpZih0aGlzLmZpeCl7c2V0VGltZW91dChkb0ZpeCwwKX19fTtfNjYuc3luY2hyb25pemVyPW5ldyBmdW5jdGlvbigpe3RoaXMuaXNCbG9ja2VkPWZhbHNlO3RoaXMuYmxvY2s9ZnVuY3Rpb24oKXt0aGlzLmlzQmxvY2tlZD10cnVlfTt0aGlzLnVuYmxvY2s9ZnVuY3Rpb24oKXt0aGlzLmlzQmxvY2tlZD1mYWxzZTtfOTYucmVwbGFjZUFsbCgpfX07XzY2Lnpvb209bmV3IGZ1bmN0aW9uKCl7dmFyIF85Nz0xMDA7dGhpcy5nZXRMYXRlc3Q9ZnVuY3Rpb24oKXtyZXR1cm4gXzk3fTtpZih1YS56b29tU3VwcG9ydCYmdWEub3BlcmEpe3ZhciBfOTg9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Xzk4LnN0eWxlLnBvc2l0aW9uPSJmaXhlZCI7Xzk4LnN0eWxlLmxlZnQ9Ii02NTUzNnB4IjtfOTguc3R5bGUudG9wPSIwIjtfOTguc3R5bGUuaGVpZ2h0PSIxMDAlIjtfOTguc3R5bGUud2lkdGg9IjFweCI7Xzk4LnN0eWxlLnpJbmRleD0iLTMyIjtkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuYXBwZW5kQ2hpbGQoXzk4KTtmdW5jdGlvbiB1cGRhdGVab29tKCl7aWYoIV85OCl7cmV0dXJufXZhciBfOTk9d2luZG93LmlubmVySGVpZ2h0L185OC5vZmZzZXRIZWlnaHQ7dmFyIF85YT1NYXRoLnJvdW5kKF85OSoxMDApJTEwO2lmKF85YT41KXtfOTk9TWF0aC5yb3VuZChfOTkqMTAwKSsxMC1fOWF9ZWxzZXtfOTk9TWF0aC5yb3VuZChfOTkqMTAwKS1fOWF9Xzk3PWlzTmFOKF85OSk/MTAwOl85OTtfNjYuc3luY2hyb25pemVyLnVuYmxvY2soKTtkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQucmVtb3ZlQ2hpbGQoXzk4KTtfOTg9bnVsbH1fNjYuc3luY2hyb25pemVyLmJsb2NrKCk7c2V0VGltZW91dCh1cGRhdGVab29tLDU0KX19O3RoaXMuaGFja3M9XzY2O3ZhciBfOWI9e2t3YXJnczpbXSxyZXBsYWNlQWxsOmZ1bmN0aW9uKCl7Zm9yKHZhciBpPTA7aTx0aGlzLmt3YXJncy5sZW5ndGg7aSsrKXtfM2IucmVwbGFjZSh0aGlzLmt3YXJnc1tpXSl9dGhpcy5rd2FyZ3M9W119fTt2YXIgXzk2PXtrd2FyZ3M6W10scmVwbGFjZUFsbDpfOWIucmVwbGFjZUFsbH07ZnVuY3Rpb24gaXNWYWxpZERvbWFpbigpe2lmKF8zYi5kb21haW5zLmxlbmd0aD09MCl7cmV0dXJuIHRydWV9dmFyIF85ZD0iIjt0cnl7XzlkPWRvY3VtZW50LmRvbWFpbn1jYXRjaChlKXt9aWYoXzNiLmZyb21Mb2NhbCYmc0lGUi5kb21haW5zWzBdIT0ibG9jYWxob3N0Iil7c0lGUi5kb21haW5zLnVuc2hpZnQoImxvY2FsaG9zdCIpfWZvcih2YXIgaT0wO2k8XzNiLmRvbWFpbnMubGVuZ3RoO2krKyl7dmFyIF85Zj1fM2IuZG9tYWluc1tpXTtpZihfOWY9PSIqInx8XzlmPT1fOWQpe3JldHVybiB0cnVlfXZhciBfYTA9XzlmLmxhc3RJbmRleE9mKCIqIik7aWYoX2EwPi0xKXtfOWY9XzlmLnN1YnN0cihfYTArMSk7dmFyIF9hMT1fOWQubGFzdEluZGV4T2YoXzlmKTtpZihfYTE+LTEmJihfYTErXzlmLmxlbmd0aCk9PV85ZC5sZW5ndGgpe3JldHVybiB0cnVlfX19cmV0dXJuIGZhbHNlfXRoaXMuYWN0aXZhdGU9ZnVuY3Rpb24oKXtpZighdWEuc3VwcG9ydGVkfHwhdGhpcy5pc0VuYWJsZWR8fHRoaXMuaXNBY3RpdmV8fCFpc1ZhbGlkRG9tYWluKCkpe3JldHVybn1pZihhcmd1bWVudHMubGVuZ3RoPjApe3RoaXMucHJlZmV0Y2guYXBwbHkodGhpcyxhcmd1bWVudHMpfXRoaXMuaXNBY3RpdmU9dHJ1ZTtpZih0aGlzLmhpZGVFbGVtZW50cyl7dGhpcy5zZXRGbGFzaENsYXNzKCl9aWYodWEuaWVXaW4mJl82Ni5mcmFnbWVudElkZW50aWZpZXIuZml4JiZ3aW5kb3cubG9jYXRpb24uaGFzaCE9IiIpe182Ni5mcmFnbWVudElkZW50aWZpZXIuY2FjaGUoKX1lbHNle182Ni5mcmFnbWVudElkZW50aWZpZXIuZml4PWZhbHNlfWlmKCF0aGlzLnJlZ2lzdGVyRXZlbnRzKXtyZXR1cm59ZnVuY3Rpb24gaGFuZGxlcihldnQpe18zYi5pbml0aWFsaXplKCk7aWYoZXZ0JiZldnQudHlwZT09ImxvYWQiKXtpZihkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKXtkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIixoYW5kbGVyLGZhbHNlKX1pZih3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcil7d2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoImxvYWQiLGhhbmRsZXIsZmFsc2UpfX19aWYod2luZG93LmFkZEV2ZW50TGlzdGVuZXIpe2lmKF8zYi51c2VEb21Db250ZW50TG9hZGVkJiZ1YS5nZWNrbyl7ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsaGFuZGxlcixmYWxzZSl9d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLGhhbmRsZXIsZmFsc2UpfWVsc2V7aWYodWEuaWVXaW4pe2lmKF8zYi51c2VEb21Db250ZW50TG9hZGVkKXtkb2N1bWVudC53cml0ZSgiPHNjciIrImlwdCBpZD1fX3NpZnJfaWVfb25sb2FkIGRlZmVyIHNyYz0vLzo+PC9zY3JpcHQ+Iik7ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIl9fc2lmcl9pZV9vbmxvYWQiKS5vbnJlYWR5c3RhdGVjaGFuZ2U9ZnVuY3Rpb24oKXtpZih0aGlzLnJlYWR5U3RhdGU9PSJjb21wbGV0ZSIpe2hhbmRsZXIoKTt0aGlzLnJlbW92ZU5vZGUoKX19fXdpbmRvdy5hdHRhY2hFdmVudCgib25sb2FkIixoYW5kbGVyKX19fTt0aGlzLnNldEZsYXNoQ2xhc3M9ZnVuY3Rpb24oKXtpZih0aGlzLmhhc0ZsYXNoQ2xhc3NTZXQpe3JldHVybn1kb20uYWRkQ2xhc3MoXzNjLGRvbS5nZXRCb2R5KCl8fGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCk7dGhpcy5oYXNGbGFzaENsYXNzU2V0PXRydWV9O3RoaXMucmVtb3ZlRmxhc2hDbGFzcz1mdW5jdGlvbigpe2lmKCF0aGlzLmhhc0ZsYXNoQ2xhc3NTZXQpe3JldHVybn1kb20ucmVtb3ZlQ2xhc3MoXzNjLGRvbS5nZXRCb2R5KCkpO2RvbS5yZW1vdmVDbGFzcyhfM2MsZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KTt0aGlzLmhhc0ZsYXNoQ2xhc3NTZXQ9ZmFsc2V9O3RoaXMuaW5pdGlhbGl6ZT1mdW5jdGlvbigpe2lmKF80Y3x8IXRoaXMuaXNBY3RpdmV8fCF0aGlzLmlzRW5hYmxlZCl7cmV0dXJufV80Yz10cnVlO185Yi5yZXBsYWNlQWxsKCk7Y2xlYXJQcmVmZXRjaCgpfTtmdW5jdGlvbiBnZXRTb3VyY2Uoc3JjKXtpZih0eXBlb2YgKHNyYykhPSJzdHJpbmciKXtpZihzcmMuc3JjKXtzcmM9c3JjLnNyY31pZih0eXBlb2YgKHNyYykhPSJzdHJpbmciKXt2YXIgX2E0PVtdO2Zvcih2YXIgX2E1IGluIHNyYyl7aWYoc3JjW19hNV0hPU9iamVjdC5wcm90b3R5cGVbX2E1XSl7X2E0LnB1c2goX2E1KX19X2E0LnNvcnQoKS5yZXZlcnNlKCk7dmFyIF9hNj0iIjt2YXIgaT0tMTt3aGlsZSghX2E2JiYrK2k8X2E0Lmxlbmd0aCl7aWYocGFyc2VGbG9hdChfYTRbaV0pPD11YS5mbGFzaFZlcnNpb24pe19hNj1zcmNbX2E0W2ldXX19c3JjPV9hNn19aWYoIXNyYyYmXzNiLmRlYnVnTW9kZSl7dGhyb3cgbmV3IEVycm9yKCJzSUZSOiBDb3VsZCBub3QgZGV0ZXJtaW5lIGFwcHJvcHJpYXRlIHNvdXJjZSIpfWlmKHVhLmllJiZzcmMuY2hhckF0KDApPT0iLyIpe3NyYz13aW5kb3cubG9jYXRpb24udG9TdHJpbmcoKS5yZXBsYWNlKC8oW146XSspKDpcLz9cLz8pKFteXC9dKykuKi8sIiQxJDIkMyIpK3NyY31yZXR1cm4gc3JjfXRoaXMucHJlZmV0Y2g9ZnVuY3Rpb24oKXtpZighdWEucmVxdWlyZXNQcmVmZXRjaHx8IXVhLnN1cHBvcnRlZHx8IXRoaXMuaXNFbmFibGVkfHwhaXNWYWxpZERvbWFpbigpKXtyZXR1cm59aWYodGhpcy5zZXRQcmVmZXRjaENvb2tpZSYmbmV3IFJlZ0V4cCgiOz8iK180NysiPXRydWU7PyIpLnRlc3QoZG9jdW1lbnQuY29va2llKSl7cmV0dXJufXRyeXtfNGI9dHJ1ZTtpZih1YS5pZVdpbil7cHJlZmV0Y2hJZXhwbG9yZShhcmd1bWVudHMpfWVsc2V7cHJlZmV0Y2hMaWdodChhcmd1bWVudHMpfWlmKHRoaXMuc2V0UHJlZmV0Y2hDb29raWUpe2RvY3VtZW50LmNvb2tpZT1fNDcrIj10cnVlO3BhdGg9Iit0aGlzLmNvb2tpZVBhdGh9fWNhdGNoKGUpe2lmKF8zYi5kZWJ1Z01vZGUpe3Rocm93IGV9fX07ZnVuY3Rpb24gcHJlZmV0Y2hJZXhwbG9yZShfYTgpe2Zvcih2YXIgaT0wO2k8X2E4Lmxlbmd0aDtpKyspe2RvY3VtZW50LndyaXRlKCI8c2NyaXB0IGRlZmVyIHR5cGU9XCJzaWZyL3ByZWZldGNoXCIgc3JjPVwiIitnZXRTb3VyY2UoX2E4W2ldKSsiXCI+PC9zY3JpcHQ+Iil9fWZ1bmN0aW9uIHByZWZldGNoTGlnaHQoX2FhKXtmb3IodmFyIGk9MDtpPF9hYS5sZW5ndGg7aSsrKXtuZXcgSW1hZ2UoKS5zcmM9Z2V0U291cmNlKF9hYVtpXSl9fWZ1bmN0aW9uIGNsZWFyUHJlZmV0Y2goKXtpZighdWEuaWVXaW58fCFfNGIpe3JldHVybn10cnl7dmFyIF9hYz1kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgic2NyaXB0Iik7Zm9yKHZhciBpPV9hYy5sZW5ndGgtMTtpPj0wO2ktLSl7dmFyIF9hZT1fYWNbaV07aWYoX2FlLnR5cGU9PSJzaWZyL3ByZWZldGNoIil7X2FlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoX2FlKX19fWNhdGNoKGUpe319ZnVuY3Rpb24gZ2V0UmF0aW8oX2FmLF9iMCl7Zm9yKHZhciBpPTA7aTxfYjAubGVuZ3RoO2krPTIpe2lmKF9hZjw9X2IwW2ldKXtyZXR1cm4gX2IwW2krMV19fXJldHVybiBfYjBbX2IwLmxlbmd0aC0xXX1mdW5jdGlvbiBnZXRGaWx0ZXJzKG9iail7dmFyIF9iMz1bXTtmb3IodmFyIF9iNCBpbiBvYmope2lmKG9ialtfYjRdPT1PYmplY3QucHJvdG90eXBlW19iNF0pe2NvbnRpbnVlfXZhciBfYjU9b2JqW19iNF07X2I0PVtfYjQucmVwbGFjZSgvZmlsdGVyL2ksIiIpKyJGaWx0ZXIiXTtmb3IodmFyIF9iNiBpbiBfYjUpe2lmKF9iNVtfYjZdPT1PYmplY3QucHJvdG90eXBlW19iNl0pe2NvbnRpbnVlfV9iNC5wdXNoKF9iNisiOiIrZXNjYXBlKF83Mi50b0pzb24oXzcyLnRvSGV4U3RyaW5nKF9iNVtfYjZdKSkpKX1fYjMucHVzaChfYjQuam9pbigiLCIpKX1yZXR1cm4gX2IzLmpvaW4oIjsiKX1mdW5jdGlvbiBjYWxjdWxhdGUoX2I3KXt2YXIgX2I4LF9iOTtpZighdWEuaWUpe19iOD1kb20uZ2V0U3R5bGVBc0ludChfYjcsImxpbmVIZWlnaHQiKTtfYjk9TWF0aC5mbG9vcihkb20uZ2V0U3R5bGVBc0ludChfYjcsImhlaWdodCIpL19iOCl9ZWxzZXtpZih1YS5pZSl7dmFyIF9iYT1fYjcuaW5uZXJIVE1MO19iNy5zdHlsZS52aXNpYmlsaXR5PSJ2aXNpYmxlIjtfYjcuc3R5bGUub3ZlcmZsb3c9InZpc2libGUiO19iNy5zdHlsZS5wb3NpdGlvbj0ic3RhdGljIjtfYjcuc3R5bGUuem9vbT0ibm9ybWFsIjtfYjcuc3R5bGUud3JpdGluZ01vZGU9ImxyLXRiIjtfYjcuc3R5bGUud2lkdGg9X2I3LnN0eWxlLmhlaWdodD0iYXV0byI7X2I3LnN0eWxlLm1heFdpZHRoPV9iNy5zdHlsZS5tYXhIZWlnaHQ9X2I3LnN0eWxlLnN0eWxlRmxvYXQ9Im5vbmUiO3ZhciBfYmI9X2I3O3ZhciBfYmM9X2I3LmN1cnJlbnRTdHlsZS5oYXNMYXlvdXQ7aWYoX2JjKXtkb20uc2V0SW5uZXJIdG1sKF9iNywiPGRpdiBjbGFzcz1cIiIrXzQzKyJcIj5YPGJyIC8+WDxiciAvPlg8L2Rpdj4iKTtfYmI9X2I3LmZpcnN0Q2hpbGR9ZWxzZXtkb20uc2V0SW5uZXJIdG1sKF9iNywiWDxiciAvPlg8YnIgLz5YIil9dmFyIF9iZD1fYmIuZ2V0Q2xpZW50UmVjdHMoKTtfYjg9X2JkWzFdLmJvdHRvbS1fYmRbMV0udG9wO19iOD1NYXRoLmNlaWwoX2I4KjAuOCk7aWYoX2JjKXtkb20uc2V0SW5uZXJIdG1sKF9iNywiPGRpdiBjbGFzcz1cIiIrXzQzKyJcIj4iK19iYSsiPC9kaXY+Iik7X2JiPV9iNy5maXJzdENoaWxkfWVsc2V7ZG9tLnNldElubmVySHRtbChfYjcsX2JhKX1fYmQ9X2JiLmdldENsaWVudFJlY3RzKCk7X2I5PV9iZC5sZW5ndGg7aWYoX2JjKXtkb20uc2V0SW5uZXJIdG1sKF9iNyxfYmEpfV9iNy5zdHlsZS52aXNpYmlsaXR5PV9iNy5zdHlsZS53aWR0aD1fYjcuc3R5bGUuaGVpZ2h0PV9iNy5zdHlsZS5tYXhXaWR0aD1fYjcuc3R5bGUubWF4SGVpZ2h0PV9iNy5zdHlsZS5vdmVyZmxvdz1fYjcuc3R5bGUuc3R5bGVGbG9hdD1fYjcuc3R5bGUucG9zaXRpb249X2I3LnN0eWxlLnpvb209X2I3LnN0eWxlLndyaXRpbmdNb2RlPSIifX1yZXR1cm4ge2xpbmVIZWlnaHQ6X2I4LGxpbmVzOl9iOX19dGhpcy5yZXBsYWNlPWZ1bmN0aW9uKF9iZSxfYmYpe2lmKCF1YS5zdXBwb3J0ZWQpe3JldHVybn1pZihfYmYpe2Zvcih2YXIgX2MwIGluIF9iZSl7aWYodHlwZW9mIChfYmZbX2MwXSk9PSJ1bmRlZmluZWQiKXtfYmZbX2MwXT1fYmVbX2MwXX19X2JlPV9iZn1pZighXzRjKXtyZXR1cm4gXzliLmt3YXJncy5wdXNoKF9iZSl9aWYoXzY2LnN5bmNocm9uaXplci5pc0Jsb2NrZWQpe3JldHVybiBfOTYua3dhcmdzLnB1c2goX2JlKX12YXIgX2MxPV9iZS5lbGVtZW50cztpZighX2MxJiZwYXJzZVNlbGVjdG9yKXtfYzE9cGFyc2VTZWxlY3RvcihfYmUuc2VsZWN0b3IpfWlmKF9jMS5sZW5ndGg9PTApe3JldHVybn10aGlzLnNldEZsYXNoQ2xhc3MoKTt2YXIgc3JjPWdldFNvdXJjZShfYmUuc3JjKTt2YXIgY3NzPV83Mi5jb252ZXJ0Q3NzQXJnKF9iZS5jc3MpO3ZhciBfYzQ9Z2V0RmlsdGVycyhfYmUuZmlsdGVycyk7dmFyIF9jNT0oX2JlLmZvcmNlQ2xlYXI9PW51bGwpP18zYi5mb3JjZUNsZWFyOl9iZS5mb3JjZUNsZWFyO3ZhciBfYzY9KF9iZS5maXRFeGFjdGx5PT1udWxsKT9fM2IuZml0RXhhY3RseTpfYmUuZml0RXhhY3RseTt2YXIgX2M3PV9jNnx8KF9iZS5mb3JjZVdpZHRoPT1udWxsP18zYi5mb3JjZVdpZHRoOl9iZS5mb3JjZVdpZHRoKTt2YXIgX2M4PXBhcnNlSW50KF83Mi5leHRyYWN0RnJvbUNzcyhjc3MsIi5zSUZSLXJvb3QiLCJsZWFkaW5nIikpfHwwO3ZhciBfYzk9XzcyLmV4dHJhY3RGcm9tQ3NzKGNzcywiLnNJRlItcm9vdCIsImZvbnQtc2l6ZSIsdHJ1ZSl8fDA7dmFyIF9jYT1fNzIuZXh0cmFjdEZyb21Dc3MoY3NzLCIuc0lGUi1yb290IiwiYmFja2dyb3VuZC1jb2xvciIsdHJ1ZSl8fCIjRkZGRkZGIjt2YXIgX2NiPV83Mi5leHRyYWN0RnJvbUNzcyhjc3MsIi5zSUZSLXJvb3QiLCJrZXJuaW5nIix0cnVlKXx8IiI7dmFyIF9jYz1fYmUuZ3JpZEZpdFR5cGV8fF83Mi5leHRyYWN0RnJvbUNzcyhjc3MsIi5zSUZSLXJvb3QiLCJ0ZXh0LWFsaWduIik9PSJyaWdodCI/InN1YnBpeGVsIjoicGl4ZWwiO3ZhciBfY2Q9XzNiLmZvcmNlVGV4dFRyYW5zZm9ybT9fNzIuZXh0cmFjdEZyb21Dc3MoY3NzLCIuc0lGUi1yb290IiwidGV4dC10cmFuc2Zvcm0iLHRydWUpfHwibm9uZSI6Im5vbmUiO3ZhciBfY2U9XzcyLmV4dHJhY3RGcm9tQ3NzKGNzcywiLnNJRlItcm9vdCIsIm9wYWNpdHkiLHRydWUpfHwiMTAwIjt2YXIgX2NmPV9iZS5waXhlbEZvbnR8fGZhbHNlO3ZhciBfZDA9X2JlLnJhdGlvc3x8XzQ4O2lmKHBhcnNlSW50KF9jOSkudG9TdHJpbmcoKSE9X2M5JiZfYzkuaW5kZXhPZigicHgiKT09LTEpe19jOT0wfWVsc2V7X2M5PXBhcnNlSW50KF9jOSl9aWYocGFyc2VGbG9hdChfY2UpPDEpe19jZT0xMDAqcGFyc2VGbG9hdChfY2UpfXZhciBfZDE9bnVsbDt2YXIgX2QyPSIiO2lmKF9jNil7XzcyLmV4dHJhY3RGcm9tQ3NzKGNzcywiLnNJRlItcm9vdCIsInRleHQtYWxpZ24iLHRydWUpfWlmKCFfYmUubW9kaWZ5Q3NzKXtfZDI9XzcyLmNzc1RvU3RyaW5nKGNzcyk7X2QxPV8zYi5maXhIb3ZlciYmX2QyLmluZGV4T2YoIiUzQWhvdmVyIik+LTF9dmFyIF9kMz0hdWEub3BlcmEmJl8zYi5kZWxheUNzczt2YXIgX2Q0PV9iZS53bW9kZXx8IiI7aWYoIV9kNCl7aWYoX2JlLnRyYW5zcGFyZW50KXtfZDQ9InRyYW5zcGFyZW50In1lbHNle2lmKF9iZS5vcGFxdWUpe19kND0ib3BhcXVlIn19fWlmKF9kND09InRyYW5zcGFyZW50Iil7aWYoIXVhLnRyYW5zcGFyZW5jeVN1cHBvcnQpe19kND0ib3BhcXVlIn1lbHNle19jYT0idHJhbnNwYXJlbnQifX1mb3IodmFyIGk9MDtpPF9jMS5sZW5ndGg7aSsrKXt2YXIgX2Q2PV9jMVtpXTtpZighdWEudmVyaWZpZWRLb25xdWVyb3Ipe2lmKGRvbS5nZXRDb21wdXRlZFN0eWxlKF9kNiwibGluZUhlaWdodCIpLm1hdGNoKC9lXCswOHB4Lykpe3VhLnN1cHBvcnRlZD1fM2IuaXNFbmFibGVkPWZhbHNlO3RoaXMucmVtb3ZlRmxhc2hDbGFzcygpO3JldHVybn11YS52ZXJpZmllZEtvbnF1ZXJvcj10cnVlfWlmKGRvbS5oYXNPbmVPZkNsYXNzc2VzKFtfM2QsXzNlLF80MCxfNDFdLF9kNikpe2NvbnRpbnVlfXZhciBfZDc9X2Q2Lm9mZnNldEhlaWdodDt2YXIgX2Q4PV9kNi5vZmZzZXRXaWR0aDt2YXIgX2Q5PWRvbS5nZXRDb21wdXRlZFN0eWxlKF9kNiwiZGlzcGxheSIpO2lmKCFfZDd8fCFfZDh8fF9kOT09bnVsbHx8X2Q5PT0ibm9uZSIpe2NvbnRpbnVlfWlmKF9jNSYmdWEuZ2Vja28pe19kNi5zdHlsZS5jbGVhcj0iYm90aCJ9dmFyIF9kYT1udWxsO2lmKF8zYi5maXhXcmFwJiZ1YS5pZSYmX2Q5PT0iYmxvY2siKXtfZGE9X2Q2LmlubmVySFRNTDtkb20uc2V0SW5uZXJIdG1sKF9kNiwiWCIpfV9kOD1kb20uZ2V0U3R5bGVBc0ludChfZDYsIndpZHRoIix1YS5pZSk7aWYoX2Q4PT0wKXt2YXIgX2RiPWRvbS5nZXRTdHlsZUFzSW50KF9kNiwicGFkZGluZ1JpZ2h0Iix0cnVlKTt2YXIgX2RjPWRvbS5nZXRTdHlsZUFzSW50KF9kNiwicGFkZGluZ0xlZnQiLHRydWUpO3ZhciBfZGQ9ZG9tLmdldFN0eWxlQXNJbnQoX2Q2LCJib3JkZXJSaWdodFdpZHRoIix0cnVlKTt2YXIgX2RlPWRvbS5nZXRTdHlsZUFzSW50KF9kNiwiYm9yZGVyTGVmdFdpZHRoIix0cnVlKTtfZDg9X2Q2Lm9mZnNldFdpZHRoLV9kYy1fZGItX2RlLV9kZH1pZihfZGEmJl8zYi5maXhXcmFwJiZ1YS5pZSl7ZG9tLnNldElubmVySHRtbChfZDYsX2RhKX12YXIgX2RmLF9lMDtpZighX2M5KXt2YXIgX2UxPWNhbGN1bGF0ZShfZDYpO19kZj1NYXRoLm1pbihfNDUsTWF0aC5tYXgoXzQ0LF9lMS5saW5lSGVpZ2h0KSk7aWYoX2NmKXtfZGY9TWF0aC5tYXgoOCw4Kk1hdGgucm91bmQoX2RmLzgpKX1fZTA9X2UxLmxpbmVzO2lmKGlzTmFOKF9lMCl8fCFpc0Zpbml0ZShfZTApfHxfZTA9PTApe19lMD0xfWlmKF9lMD4xJiZfYzgpe19kNys9TWF0aC5yb3VuZCgoX2UwLTEpKl9jOCl9fWVsc2V7X2RmPV9jOTtfZTA9MX1fZDc9TWF0aC5yb3VuZChfZTAqX2RmKTtpZihfYzUmJnVhLmdlY2tvKXtfZDYuc3R5bGUuY2xlYXI9IiJ9dmFyIF9lMj1kb20uY3JlYXRlKCJzcGFuIik7X2UyLmNsYXNzTmFtZT1fNDE7dmFyIF9lMz1fZDYuY2xvbmVOb2RlKHRydWUpO2Zvcih2YXIgaj0wLGw9X2UzLmNoaWxkTm9kZXMubGVuZ3RoO2o8bDtqKyspe19lMi5hcHBlbmRDaGlsZChfZTMuY2hpbGROb2Rlc1tqXS5jbG9uZU5vZGUodHJ1ZSkpfWlmKF9iZS5tb2RpZnlDb250ZW50KXtfYmUubW9kaWZ5Q29udGVudChfZTMsX2JlLnNlbGVjdG9yKX1pZihfYmUubW9kaWZ5Q3NzKXtfZDI9X2JlLm1vZGlmeUNzcyhjc3MsX2UzLF9iZS5zZWxlY3Rvcil9aWYoX2QxPT1udWxsKXtfZDE9XzNiLmZpeEhvdmVyJiZfZDIuaW5kZXhPZigiJTNBaG92ZXIiKT4tMX12YXIgX2U2PWhhbmRsZUNvbnRlbnQoX2UzLF9jZCk7aWYoX2JlLm1vZGlmeUNvbnRlbnRTdHJpbmcpe19lNj1fYmUubW9kaWZ5Q29udGVudFN0cmluZyhfZTYsX2JlLnNlbGVjdG9yKX1pZihfZTY9PSIiKXtjb250aW51ZX12YXIgX2U3PVsiY29udGVudD0iK19lNiwid2lkdGg9IitfZDgsImhlaWdodD0iK19kNywiZml0ZXhhY3RseT0iKyhfYzY/InRydWUiOiIiKSwidHVuZXdpZHRoPSIrKF9iZS50dW5lV2lkdGh8fCIiKSwidHVuZWhlaWdodD0iKyhfYmUudHVuZUhlaWdodHx8IiIpLCJvZmZzZXRsZWZ0PSIrKF9iZS5vZmZzZXRMZWZ0fHwiIiksIm9mZnNldHRvcD0iKyhfYmUub2Zmc2V0VG9wfHwiIiksInRoaWNrbmVzcz0iKyhfYmUudGhpY2tuZXNzfHwiIiksInNoYXJwbmVzcz0iKyhfYmUuc2hhcnBuZXNzfHwiIiksImtlcm5pbmc9IitfY2IsImdyaWRmaXR0eXBlPSIrX2NjLCJ6b29tc3VwcG9ydD0iK3VhLnpvb21TdXBwb3J0LCJmbGFzaGZpbHRlcnM9IitfYzQsIm9wYWNpdHk9IitfY2UsImJsZW5kbW9kZT0iKyhfYmUuYmxlbmRNb2RlfHwiIiksInNpemU9IitfZGYsInpvb209Iitkb20uZ2V0Wm9vbSgpLCJjc3M9IitfZDIsInNlbGVjdGFibGU9IisoX2JlLnNlbGVjdGFibGU9PW51bGw/InRydWUiOl9iZS5zZWxlY3RhYmxlKSwibGluZXM9IitfZTBdO3ZhciBfZTg9ZW5jb2RlVVJJKF9lNy5qb2luKCImYW1wOyIpKTt2YXIgX2U5PSJzSUZSX2NhbGxiYWNrXyIrXzRhKys7dmFyIF9lYT1uZXcgQ2FsbGJhY2tJbmZvKF9lOSxfZTcsX2JlLm9uUmVwbGFjZW1lbnQsX2QxKTt3aW5kb3dbX2U5KyJfRG9GU0NvbW1hbmQiXT0oZnVuY3Rpb24oX2ViKXtyZXR1cm4gZnVuY3Rpb24oX2VjLGFyZyl7X2ViLmhhbmRsZShfZWMsYXJnKX19KShfZWEpO19kNz1NYXRoLnJvdW5kKF9lMCpnZXRSYXRpbyhfZGYsX2QwKSpfZGYpK180OTt2YXIgX2VlPV9jNz9fZDg6IjEwMCUiO3ZhciBfZWY7aWYodWEuaWUpe19lZj1bIjxvYmplY3QgY2xhc3NpZD1cImNsc2lkOkQyN0NEQjZFLUFFNkQtMTFjZi05NkI4LTQ0NDU1MzU0MDAwMFwiIGlkPVwiIixfZTksIlwiIHNpZnI9XCJ0cnVlXCIgd2lkdGg9XCIiLF9lZSwiXCIgaGVpZ2h0PVwiIixfZDcsIlwiIGNsYXNzPVwiIixfM2YsIlwiPiIsIjxwYXJhbSBuYW1lPVwibW92aWVcIiB2YWx1ZT1cIiIsc3JjLCJcIj48L3BhcmFtPiIsIjxwYXJhbSBuYW1lPVwiZmxhc2h2YXJzXCIgdmFsdWU9XCIiLF9lOCwiXCI+PC9wYXJhbT4iLCI8cGFyYW0gbmFtZT1cImFsbG93U2NyaXB0QWNjZXNzXCIgdmFsdWU9XCJhbHdheXNcIj48L3BhcmFtPiIsIjxwYXJhbSBuYW1lPVwicXVhbGl0eVwiIHZhbHVlPVwiYmVzdFwiPjwvcGFyYW0+IiwiPHBhcmFtIG5hbWU9XCJ3bW9kZVwiIHZhbHVlPVwiIixfZDQsIlwiPjwvcGFyYW0+IiwiPHBhcmFtIG5hbWU9XCJiZ2NvbG9yXCIgdmFsdWU9XCIiLF9jYSwiXCI+PC9wYXJhbT4iLCI8cGFyYW0gbmFtZT1cIm5hbWVcIiB2YWx1ZT1cIiIsX2U5LCJcIj48L3BhcmFtPiIsIjwvb2JqZWN0PiIsIjxzY3IiLCJpcHQgZXZlbnQ9RlNDb21tYW5kKGluZm8sYXJncykgZm9yPSIsX2U5LCI+IixfZTksIl9Eb0ZTQ29tbWFuZChpbmZvLCBhcmdzKTsiLCI8LyIsInNjcmlwdD4iXS5qb2luKCIiKX1lbHNle19lZj1bIjxlbWJlZCB0eXBlPVwiYXBwbGljYXRpb24veC1zaG9ja3dhdmUtZmxhc2hcIiIsKF9kMz8iIGNsYXNzPVwiIitfM2YrIlwiIjoiIiksIiBzcmM9XCIiLHNyYywiXCIgcXVhbGl0eT1cImJlc3RcIiBmbGFzaHZhcnM9XCIiLF9lOCwiXCIgd2lkdGg9XCIiLF9lZSwiXCIgaGVpZ2h0PVwiIixfZDcsIlwiIHdtb2RlPVwiIixfZDQsIlwiIGJnY29sb3I9XCIiLF9jYSwiXCIgbmFtZT1cIiIsX2U5LCJcIiBpZD1cIiIsX2U5LCJcIiBhbGxvd1NjcmlwdEFjY2Vzcz1cImFsd2F5c1wiIHNpZnI9XCJ0cnVlXCI+PC9lbWJlZD4iXS5qb2luKCIiKX1kb20uc2V0SW5uZXJIdG1sKF9kNixfZWYpO19lYS5mbGFzaE5vZGU9X2Q2LmZpcnN0Q2hpbGQ7X2VhLmh0bWw9X2VmO18zYi5jYWxsYmFja3MucHVzaChfZWEpO2lmKF9iZS5zZWxlY3Rvcil7aWYoIV8zYi5jYWxsYmFja3NbX2JlLnNlbGVjdG9yXSl7XzNiLmNhbGxiYWNrc1tfYmUuc2VsZWN0b3JdPVtfZWFdfWVsc2V7XzNiLmNhbGxiYWNrc1tfYmUuc2VsZWN0b3JdLnB1c2goX2VhKX19X2Q2LmFwcGVuZENoaWxkKF9lMik7ZG9tLmFkZENsYXNzKF9kMz9fM2U6XzNkLF9kNik7X2VhLnNldHVwRml4SG92ZXIoKX1fNjYuZnJhZ21lbnRJZGVudGlmaWVyLnJlc3RvcmUoKX07dGhpcy5nZXRDYWxsYmFja0J5Rmxhc2hFbGVtZW50PWZ1bmN0aW9uKF9mMCl7Zm9yKHZhciBpPTA7aTxfM2IuY2FsbGJhY2tzLmxlbmd0aDtpKyspe2lmKF8zYi5jYWxsYmFja3NbaV0uaWQ9PV9mMC5nZXRBdHRyaWJ1dGUoImlkIikpe3JldHVybiBfM2IuY2FsbGJhY2tzW2ldfX19O2Z1bmN0aW9uIGhhbmRsZUNvbnRlbnQoX2YyLF9mMyl7dmFyIF9mND1bXSxfZjU9W107dmFyIF9mNj1fZjIuY2hpbGROb2Rlczt2YXIgaT0wO3doaWxlKGk8X2Y2Lmxlbmd0aCl7dmFyIF9mOD1fZjZbaV07aWYoX2Y4Lm5vZGVUeXBlPT0zKXt2YXIgX2Y5PV83Mi5ub3JtYWxpemUoX2Y4Lm5vZGVWYWx1ZSk7X2Y5PV83Mi50ZXh0VHJhbnNmb3JtKF9mMyxfZjkpO19mNS5wdXNoKF9mOS5yZXBsYWNlKC9cJS9nLCIlMjUiKS5yZXBsYWNlKC9cJi9nLCIlMjYiKS5yZXBsYWNlKC9cLC9nLCIlMkMiKS5yZXBsYWNlKC9cKy9nLCIlMkIiKSl9aWYoX2Y4Lm5vZGVUeXBlPT0xKXt2YXIgX2ZhPVtdO3ZhciBfZmI9X2Y4Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7dmFyIF9mYz1fZjguY2xhc3NOYW1lfHwiIjtpZigvXHMrLy50ZXN0KF9mYykpe2lmKF9mYy5pbmRleE9mKF80Mik+LTEpe19mYz1fZmMubWF0Y2goIihcXHN8XikiK180MisiLShbXlxccyRdKikoXFxzfCQpIilbMl19ZWxzZXtfZmM9X2ZjLm1hdGNoKC9eKFteXHNdKykvKVsxXX19aWYoX2ZjIT0iIil7X2ZhLnB1c2goImNsYXNzPVwiIitfZmMrIlwiIil9aWYoX2ZiPT0iYSIpe3ZhciBfZmQ9X2Y4LmdldEF0dHJpYnV0ZSgiaHJlZiIpfHwiIjt2YXIgX2ZlPV9mOC5nZXRBdHRyaWJ1dGUoInRhcmdldCIpfHwiIjtfZmEucHVzaCgiaHJlZj1cIiIrX2ZkKyJcIiIsInRhcmdldD1cIiIrX2ZlKyJcIiIpfV9mNS5wdXNoKCI8IitfZmIrKF9mYS5sZW5ndGg+MD8iICI6IiIpK2VzY2FwZShfZmEuam9pbigiICIpKSsiPiIpO2lmKF9mOC5oYXNDaGlsZE5vZGVzKCkpe19mNC5wdXNoKGkpO2k9MDtfZjY9X2Y4LmNoaWxkTm9kZXM7Y29udGludWV9ZWxzZXtpZighL14oYnJ8aW1nKSQvaS50ZXN0KF9mOC5ub2RlTmFtZSkpe19mNS5wdXNoKCI8LyIsX2Y4Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCksIj4iKX19fWlmKF9mNC5sZW5ndGg+MCYmIV9mOC5uZXh0U2libGluZyl7ZG97aT1fZjQucG9wKCk7X2Y2PV9mOC5wYXJlbnROb2RlLnBhcmVudE5vZGUuY2hpbGROb2RlcztfZjg9X2Y2W2ldO2lmKF9mOCl7X2Y1LnB1c2goIjwvIixfZjgubm9kZU5hbWUudG9Mb3dlckNhc2UoKSwiPiIpfX13aGlsZShpPT1fZjYubGVuZ3RoLTEmJl9mNC5sZW5ndGg+MCl9aSsrfXJldHVybiBfZjUuam9pbigiIikucmVwbGFjZSgvXG58XHIvZywiIil9ZnVuY3Rpb24gQ2FsbGJhY2tJbmZvKGlkLHZhcnMsXzEwMSxfMTAyKXt0aGlzLmlkPWlkO3RoaXMudmFycz12YXJzO3RoaXMuX3JlcGxhY2VtZW50SGFuZGxlcj1fMTAxO3RoaXMuX2ZpcmVkUmVwbGFjZW1lbnRFdmVudD0hKHRoaXMuX3JlcGxhY2VtZW50SGFuZGxlciE9bnVsbCk7dGhpcy5fZml4SG92ZXI9XzEwMjt0aGlzLl9zZXRDbGFzc2VzPSFfM2IuZGVsYXlDc3M7dGhpcy5odG1sPSIiO3RoaXMuX3BpbmdzPTB9Q2FsbGJhY2tJbmZvLnByb3RvdHlwZS5nZXRGbGFzaEVsZW1lbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy5pZCl9O0NhbGxiYWNrSW5mby5wcm90b3R5cGUuaGFuZGxlPWZ1bmN0aW9uKGluZm8sYXJnKXtpZigvKEZTQ29tbWFuZFw6KT9yZXNpemUvLnRlc3QoaW5mbykpe3ZhciBfMTA1PXRoaXMuZ2V0Rmxhc2hFbGVtZW50KCk7dmFyICQ9YXJnLnNwbGl0KC9cOnwsLyk7XzEwNS5zZXRBdHRyaWJ1dGUoJFswXSwkWzFdKTtpZigkLmxlbmd0aD4yKXtfMTA1LnNldEF0dHJpYnV0ZSgkWzJdLCRbM10pfWlmKCF0aGlzLl9zZXRDbGFzc2VzKXtpZighdWEuaWUmJiF1YS5vcGVyYSl7ZG9tLmFkZENsYXNzKF8zZixfMTA1KX1kb20ucmVtb3ZlQ2xhc3MoXzNlLF8xMDUucGFyZW50Tm9kZSk7ZG9tLmFkZENsYXNzKF8zZCxfMTA1LnBhcmVudE5vZGUpO3RoaXMuX3NldENsYXNzZXM9dHJ1ZX1pZih1YS5raHRtbCl7dmFyIF8xMDc9XzEwNS5vZmZzZXRIZWlnaHR9aWYoIXRoaXMuX2ZpcmVkUmVwbGFjZW1lbnRFdmVudCl7dGhpcy5fcmVwbGFjZW1lbnRIYW5kbGVyKHRoaXMpO3RoaXMuX2ZpcmVkUmVwbGFjZW1lbnRFdmVudD10cnVlfX1lbHNle2lmKC8oRlNDb21tYW5kXDopP3Jlc2V0bW92aWUvLnRlc3QoaW5mbykpe3RoaXMucmVzZXRNb3ZpZSgpfWVsc2V7aWYoLyhGU0NvbW1hbmRcOik/cGluZy8udGVzdChpbmZvKSl7aWYodGhpcy5fcGluZ3M+MCl7dGhpcy5zZXR1cEZpeEhvdmVyKCl9dGhpcy5fcGluZ3MrK31lbHNle2lmKHRoaXMuZGVidWdIYW5kbGVyJiYvKEZTQ29tbWFuZFw6KT9kZWJ1Zy8udGVzdChpbmZvKSl7dGhpcy5kZWJ1Z0hhbmRsZXIoaW5mbyxhcmcpfX19fX07Q2FsbGJhY2tJbmZvLnByb3RvdHlwZS5jYWxsPWZ1bmN0aW9uKHR5cGUsXzEwOSl7dmFyIF8xMGE9dGhpcy5nZXRGbGFzaEVsZW1lbnQoKTtpZighXzEwYSl7cmV0dXJufV8xMGEuU2V0VmFyaWFibGUoImNhbGxiYWNrVHlwZSIsdHlwZSk7XzEwYS5TZXRWYXJpYWJsZSgiY2FsbGJhY2tWYWx1ZSIsXzEwOSk7XzEwYS5TZXRWYXJpYWJsZSgiY2FsbGJhY2tUcmlnZ2VyIix0cnVlKX07Q2FsbGJhY2tJbmZvLnByb3RvdHlwZS5yZXBsYWNlVGV4dD1mdW5jdGlvbihfMTBiKXtfMTBiPWVzY2FwZShfMTBiKTt0aGlzLmNhbGwoInJlcGxhY2V0ZXh0IixfMTBiKTt0aGlzLnZhcnNbMF09ImNvbnRlbnQ9IitfMTBiO3RoaXMuaHRtbD10aGlzLmh0bWwucmVwbGFjZSgvKGZsYXNodmFycyg9fFwiXHN2YWx1ZT0pXCIpW15cIl0rLywiJDEiK2VuY29kZVVSSSh0aGlzLnZhcnMuam9pbigiJmFtcDsiKSkpfTtDYWxsYmFja0luZm8ucHJvdG90eXBlLnJlc2V0TW92aWU9ZnVuY3Rpb24oKXt2YXIgXzEwYz10aGlzLmdldEZsYXNoRWxlbWVudCgpO3ZhciBub2RlPV8xMGMucGFyZW50Tm9kZTtub2RlLnJlcGxhY2VDaGlsZChkb20ubm9kZUZyb21IdG1sKHRoaXMuaHRtbCksXzEwYyk7dGhpcy5zZXR1cEZpeEhvdmVyKCl9O0NhbGxiYWNrSW5mby5wcm90b3R5cGUuc2V0dXBGaXhIb3Zlcj1mdW5jdGlvbigpe3ZhciBfMTBlPXRoaXMuZ2V0Rmxhc2hFbGVtZW50KCk7aWYoIXRoaXMuX2ZpeEhvdmVyfHwhXzEwZSl7cmV0dXJufXZhciBub2RlPV8xMGUucGFyZW50Tm9kZTtpZihub2RlLmFkZEV2ZW50TGlzdGVuZXIpe25vZGUuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VvdXQiLF83Mi5iaW5kKHRoaXMsImZpeEhvdmVyIiksZmFsc2UpfWVsc2V7aWYobm9kZS5hdHRhY2hFdmVudCl7bm9kZS5hdHRhY2hFdmVudCgib25tb3VzZW91dCIsXzcyLmJpbmQodGhpcywiZml4SG92ZXIiKSl9fX07Q2FsbGJhY2tJbmZvLnByb3RvdHlwZS5maXhIb3Zlcj1mdW5jdGlvbigpe3RoaXMuY2FsbCgicmVzZXR0ZXh0Iil9fTs=]]></data>
	</file>
	<file>
	  <filename>/libs/DEV/1.1.3/demo/for_the_demo/simplepie.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoKVGhlbWUgTmFtZTogU2ltcGxlUGllClRoZW1lIFVSSTogaHR0cDovL3NpbXBsZXBpZS5vcmcKRGVzY3JpcHRpb246IEEgc2ltcGxlLCB5ZXQgYmVhdXRpZnVsIHRoZW1lIGluc3BpcmVkIGJ5IHNldmVyYWwgY2xlYW5seSBkZXNpZ25lZCB3ZWJzaXRlcy4KVmVyc2lvbjogMS40CkF1dGhvcjogUnlhbiBQYXJtYW4KQXV0aG9yIFVSSTogaHR0cDovL3NreXp5eC5jb20KVXBkYXRlZDogMjEgSnVuZSAyMDA3CiovCgoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgpIWVBFUkxJTksgU1RZTEVTCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KYSB7Cgljb2xvcjojMzY5OwoJdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTsKCXBhZGRpbmc6MCAxcHg7Cn0KCmE6aG92ZXIgewoJY29sb3I6I2ZmZiAhaW1wb3J0YW50OwoJYmFja2dyb3VuZC1jb2xvcjojMzMzOwoJdGV4dC1kZWNvcmF0aW9uOm5vbmU7CglwYWRkaW5nOjAgMXB4Owp9CgphLm5vaG92ZXIgewoJdGV4dC1kZWNvcmF0aW9uOm5vbmU7Cglib3JkZXI6bm9uZTsKfQoKYS5ub2hvdmVyOmhvdmVyIHsKCWJhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Cglib3JkZXI6bm9uZTsKfQoKYS5uYW1lbGluayB7CglwYWRkaW5nOjA7CgltYXJnaW46MDsKCW92ZXJmbG93OmhpZGRlbjsKCWhlaWdodDoxcHg7Cn0KCmg0IGEsCi5zYW1wbGVfZmVlZHMgYSB7Cgljb2xvcjojMDAwOwp9CgoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgpHRU5FUkFMIFNUWUxFUwoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCmJvZHkgewoJLypmb250OjEycHgvMThweCBWZXJkYW5hLCBzYW5zLXNlcmlmOyovCglmb250OjE0cHgvMS41ZW0gIkx1Y2lkYSBHcmFuZGUiLCBUYWhvbWEsIHNhbnMtc2VyaWY7CglsZXR0ZXItc3BhY2luZzowcHg7Cgljb2xvcjojMzMzOwoJYmFja2dyb3VuZC1jb2xvcjojZmZmOwoJbWFyZ2luOjA7CglwYWRkaW5nOjA7Cn0KCmRpdiNzaXRlIHsKCXdpZHRoOjYwMHB4OwoJbWFyZ2luOjUwcHggYXV0byAwIGF1dG87Cn0KCmgxI2xvZ28gewoJbWFyZ2luOjA7CglwYWRkaW5nOjA7Cgl0ZXh0LWFsaWduOmNlbnRlcjsKfQoKaDEjbG9nbyBhLCAKaDEjbG9nbyBhOmhvdmVyIHsKCWJhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Cgl0ZXh0LWRlY29yYXRpb246bm9uZTsKCXBhZGRpbmc6MDsKfQoKaDIuaW1hZ2UgewoJbWFyZ2luOjA7CglwYWRkaW5nOjA7Cgl0ZXh0LWFsaWduOmNlbnRlcjsKfQoKaDMgewoJbWFyZ2luOjIwcHggMCAwIDA7CglwYWRkaW5nOjA7Cglmb250LXNpemU6MS41ZW07Cn0KCmg0IHsKCW1hcmdpbjoyMHB4IDAgMCAwOwoJcGFkZGluZzowOwoJZm9udC1zaXplOjEuMmVtOwoJbGV0dGVyLXNwYWNpbmc6LTFweDsKfQoKaDUgewoJbWFyZ2luOjEwcHggMCAwIDA7CglwYWRkaW5nOjA7Cglmb250LXNpemU6MWVtOwoJZm9udC13ZWlnaHQ6Ym9sZDsKfQoKZW0gewoJZm9udC1zdHlsZTpub3JtYWw7CgliYWNrZ3JvdW5kLWNvbG9yOiNmZmM7Cn0KCnAgewoJbWFyZ2luOjA7CglwYWRkaW5nOjVweCAwOwp9Cgp1bCwgb2wgewoJbWFyZ2luOjEwcHggMCAxMHB4IDIwcHg7CglwYWRkaW5nOjAgMCAwIDE1cHg7Cn0KCnVsIGxpLCBvbCBsaSB7CgltYXJnaW46MCAwIDdweCAwOwoJcGFkZGluZzowIDAgMCAzcHg7Cn0KCmZvcm0gewoJbWFyZ2luOjA7CglwYWRkaW5nOjA7Cn0KCmNvZGUgewoJZm9udC1zaXplOjFlbTsKCWJhY2tncm91bmQtY29sb3I6I2YzZjNmZjsKCWNvbG9yOiMwMDA7Cn0KCmRpdiNzaXRlIHByZSB7CgliYWNrZ3JvdW5kLWNvbG9yOiNmM2YzZmY7Cgljb2xvcjojMDAwMDgwOwoJYm9yZGVyOjFweCBkb3R0ZWQgIzAwMDA4MDsKCW92ZXJmbG93OmF1dG87CglwYWRkaW5nOjNweCA1cHg7Cn0KCmJsb2NrcXVvdGUgewoJZm9udC1zaXplOjFlbTsKCWNvbG9yOiM2NjY7Cglib3JkZXItbGVmdDo0cHggc29saWQgIzY2NjsKCW1hcmdpbjoxMHB4IDAgMTBweCAzMHB4OwoJcGFkZGluZzowIDVweCAwIDEwcHg7CgliYWNrZ3JvdW5kOiNmM2YzZjMgdXJsKGJhY2tncm91bmRfYmxvY2txdW90ZS5wbmcpIHJlcGVhdCB0b3AgbGVmdDsKfQoKaW5wdXQsIHNlbGVjdCwgdGV4dGFyZWEgewoJZm9udC1zaXplOjEycHg7CglsaW5lLWhlaWdodDoxLjJlbTsKCXBhZGRpbmc6MnB4Owp9CgppbnB1dFt0eXBlPXRleHRdLCBzZWxlY3QsIHRleHRhcmVhIHsKCWJhY2tncm91bmQtY29sb3I6I2U5ZjVmZjsKCWJvcmRlcjoxcHggc29saWQgIzMzMzsKfQoKaW5wdXRbdHlwZT10ZXh0XTpmb2N1cywgc2VsZWN0OmZvY3VzLCB0ZXh0YXJlYTpmb2N1cyB7CgliYWNrZ3JvdW5kLWNvbG9yOiNmZmU7Cn0KCi5jbGVhckxlZnQge2NsZWFyOmxlZnQ7fQouY2xlYXJSaWdodCB7Y2xlYXI6cmlnaHQ7fQouY2xlYXJCb3RoIHtjbGVhcjpib3RoO30KLmhpZGUge2Rpc3BsYXk6bm9uZTt9CgoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgpOQVZJR0FUSU9OIFNUWUxFUwoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCmRpdiNoZWFkZXIgewoJYmFja2dyb3VuZDojZmZmIHVybCh0b3BfZ3JhZGllbnQuZ2lmKSByZXBlYXQteCB0b3AgbGVmdDsKCW1hcmdpbjowOwoJcGFkZGluZzowOwp9CgpkaXYjaGVhZGVyIGZvcm0gewoJbWFyZ2luOjA7CglwYWRkaW5nOjA7Cn0KCmRpdiNoZWFkZXIgZGl2I2hlYWRlcklubmVyIHsKCW1hcmdpbjowOwoJcGFkZGluZzowOwp9CgpkaXYjaGVhZGVyIGRpdiNoZWFkZXJJbm5lciBkaXYjbG9nb0NvbnRhaW5lciB7fQoKZGl2I2hlYWRlciBkaXYjaGVhZGVySW5uZXIgZGl2I2xvZ29Db250YWluZXJJbm5lciB7Cgl3aWR0aDo1NTBweDsKCW1hcmdpbjowIGF1dG87CglwYWRkaW5nOjIwcHg7Cn0KCmRpdiNoZWFkZXIgZGl2I2hlYWRlcklubmVyIGRpdiNsb2dvQ29udGFpbmVyIGRpdiNsb2dvIHsKCWZsb2F0OmxlZnQ7Cgl3aWR0aDoyMDBweDsKfQoKZGl2I2hlYWRlciBkaXYjaGVhZGVySW5uZXIgZGl2I2xvZ29Db250YWluZXIgZGl2I2xvZ28gYSwKZGl2I2hlYWRlciBkaXYjaGVhZGVySW5uZXIgZGl2I2xvZ29Db250YWluZXIgZGl2I2xvZ28gYTpob3ZlciB7Cglib3JkZXI6bm9uZTsKCWJhY2tncm91bmQ6bm9uZTsKfQoKZGl2I2hlYWRlciBkaXYjaGVhZGVySW5uZXIgZGl2I2xvZ29Db250YWluZXIgZGl2I2ZlZWQgewoJZmxvYXQ6cmlnaHQ7Cgl3aWR0aDozMDBweDsKCXRleHQtYWxpZ246cmlnaHQ7CglwYWRkaW5nOjEwcHggMCAwIDA7Cn0KCmRpdiNoZWFkZXIgZGl2I2hlYWRlcklubmVyIGRpdiNsb2dvQ29udGFpbmVyIGRpdiNmZWVkIGlucHV0LnRleHQgewoJd2lkdGg6NjAlOwp9CgpkaXYjaGVhZGVyIGRpdiNoZWFkZXJJbm5lciBkaXYjbWVudSB7CgliYWNrZ3JvdW5kOiNlZWUgdXJsKGJhY2tncm91bmRfbWVudWl0ZW1fc2hhZG93LmdpZikgcmVwZWF0LXggdG9wIGxlZnQ7Cglib3JkZXItdG9wOjJweCBzb2xpZCAjY2NjOwoJYm9yZGVyLWJvdHRvbToxcHggc29saWQgI2RkZDsKCXRleHQtYWxpZ246Y2VudGVyOwp9CgpkaXYjaGVhZGVyIGRpdiNoZWFkZXJJbm5lciBkaXYjbWVudSB0YWJsZSB7Cgl3aWR0aDphdXRvOwoJbWFyZ2luOjAgYXV0bzsKfQoKZGl2I2hlYWRlciBkaXYjaGVhZGVySW5uZXIgZGl2I21lbnUgdWwgewoJZGlzcGxheTpibG9jazsKCXdpZHRoOjEwMCU7CgltYXJnaW46MCBhdXRvOwoJcGFkZGluZzowOwoJZm9udC1zaXplOjEycHg7Cn0KCmRpdiNoZWFkZXIgZGl2I2hlYWRlcklubmVyIGRpdiNtZW51IHVsIGxpIHsKCWRpc3BsYXk6YmxvY2s7CglmbG9hdDpsZWZ0Owp9CgpkaXYjaGVhZGVyIGRpdiNoZWFkZXJJbm5lciBkaXYjbWVudSB1bCBsaSBhIHsKCWRpc3BsYXk6YmxvY2s7CgltYXJnaW46LTJweCAwIDAgMDsKCXBhZGRpbmc6NXB4IDdweCA4cHggN3B4OwoJdGV4dC1kZWNvcmF0aW9uOm5vbmU7Cgljb2xvcjojNjY2ICFpbXBvcnRhbnQ7CgliYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50Owp9CgpkaXYjaGVhZGVyIGRpdiNoZWFkZXJJbm5lciBkaXYjbWVudSB1bCBsaSBhOmhvdmVyIHsKCWRpc3BsYXk6YmxvY2s7CgltYXJnaW46LTJweCAwIDAgMDsKCXBhZGRpbmc6NXB4IDdweCA4cHggN3B4OwoJdGV4dC1kZWNvcmF0aW9uOm5vbmU7Cgljb2xvcjojNjY2OwoJYmFja2dyb3VuZDojZmZmIHVybChiYWNrZ3JvdW5kX21lbnVpdGVtX29mZi5naWYpIG5vLXJlcGVhdCBib3R0b20gcmlnaHQ7Cn0KCmJvZHkjYm9keWRlbW8gZGl2I2hlYWRlciBkaXYjaGVhZGVySW5uZXIgZGl2I21lbnUgdWwgbGkjZGVtbyBhIHsKCWRpc3BsYXk6YmxvY2s7CgltYXJnaW46LTJweCAwIDAgMDsKCXBhZGRpbmc6NXB4IDdweCA4cHggN3B4OwoJdGV4dC1kZWNvcmF0aW9uOm5vbmU7Cgljb2xvcjojMzMzOwoJZm9udC13ZWlnaHQ6Ym9sZDsKCWJhY2tncm91bmQ6I2ZmZiB1cmwoYmFja2dyb3VuZF9tZW51aXRlbS5naWYpIG5vLXJlcGVhdCBib3R0b20gcmlnaHQ7Cn0KCgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCkNPTlRFTlQgU1RZTEVTCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KZGl2LmNodW5rIHsKCW1hcmdpbjoyMHB4IDAgMCAwOwoJcGFkZGluZzowIDAgMTBweCAwOwoJYm9yZGVyLWJvdHRvbToxcHggc29saWQgI2NjYzsKfQoKZGl2LnRvcGNodW5rIHsKCW1hcmdpbjowICFpbXBvcnRhbnQ7Cn0KCi5mb290bm90ZSwKLmZvb3Rub3RlIGEgewoJZm9udC1zaXplOjEycHg7CglsaW5lLWhlaWdodDoxLjNlbTsKCWNvbG9yOiNhYWE7Cn0KCi5mb290bm90ZSBlbSB7CgliYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50OwoJZm9udC1zdHlsZTppdGFsaWM7Cn0KCi5mb290bm90ZSBjb2RlIHsKCWJhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Cglmb250OjExcHgvMTRweCBtb25vc3BhY2U7Cgljb2xvcjojYWFhOwp9CgpwLnN1YnNjcmliZSB7CgliYWNrZ3JvdW5kLWNvbG9yOiNmM2YzZjM7Cglmb250LXNpemU6MTJweDsKCXRleHQtYWxpZ246Y2VudGVyOwp9CgpwLmhpZ2hsaWdodCB7CgliYWNrZ3JvdW5kLWNvbG9yOiNmZmM7Cglmb250LXNpemU6MTJweDsKCXRleHQtYWxpZ246Y2VudGVyOwp9CgpwLnNhbXBsZV9mZWVkcyB7Cglmb250LXNpemU6MTJweDsKCWxpbmUtaGVpZ2h0OjEuMmVtOwp9CgpkaXYuc3BfZXJyb3JzIHsKCWJhY2tncm91bmQtY29sb3I6I2VlZTsKCXBhZGRpbmc6NXB4OwoJdGV4dC1hbGlnbjpjZW50ZXI7Cglmb250LXNpemU6MTJweDsKfQoKLm5vYm9yZGVyIHsKCWJvcmRlcjpub25lICFpbXBvcnRhbnQ7Cn0KCmltZy5mYXZpY29uIHsKCW1hcmdpbjowIDRweCAtMnB4IDA7Cgl3aWR0aDoxNnB4OwoJaGVpZ2h0OjE2cHg7Cn0KCnAuZmF2aWNvbnMgYSwKcC5mYXZpY29ucyBhOmhvdmVyIHsKCWJvcmRlcjpub25lOwoJYmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDsKfQoKcC5mYXZpY29ucyBpbWcgewoJYm9yZGVyOm5vbmU7Cn0KCgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCkRFTU8gU1RZTEVTCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KZGl2I3NwX2lucHV0IHsKCWJhY2tncm91bmQtY29sb3I6I2ZmYzsKCWJvcmRlcjoycHggc29saWQgI2Y5MDsKCXBhZGRpbmc6NXB4OwoJdGV4dC1hbGlnbjpjZW50ZXI7Cn0KCmRpdiNzcF9pbnB1dCBpbnB1dC50ZXh0IHsKCWJvcmRlcjoxcHggc29saWQgIzk5OTsKCWJhY2tncm91bmQ6I2U5ZjVmZiB1cmwoZmVlZC5wbmcpIG5vLXJlcGVhdCA0cHggNTAlOwoJd2lkdGg6NzUlOwoJcGFkZGluZzoycHggMnB4IDJweCAyOHB4OwoJZm9udDoxOHB4LzIycHggIkx1Y2lkYSBHcmFuZGUiLCBWZXJkYW5hLCBzYW5zLXNlcmlmOwoJZm9udC13ZWlnaHQ6Ym9sZDsKCWxldHRlci1zcGFjaW5nOi0xcHg7Cn0KCmZvcm0jc3BfZm9ybSB7CgltYXJnaW46MTVweCAwOwp9CgpkaXYuZm9jdXMgewoJbWFyZ2luOjA7CglwYWRkaW5nOjEwcHggMjBweDsKCWJhY2tncm91bmQtY29sb3I6I2VmZTsKfQoKcC5zYW1wbGVfZmVlZHMgewoJdGV4dC1hbGlnbjpqdXN0aWZ5Owp9CgoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgpTSUZSIFNUWUxFUwoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi5zSUZSLWFjdGl2ZSBoMy5oZWFkZXIgewoJdmlzaWJpbGl0eTpoaWRkZW47CglsaW5lLWhlaWdodDoxZW07Cn0K]]></data>
	</file>
	<file>
	  <filename>/libs/DEV/1.1.3/demo/for_the_demo/sleight.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKU2xlaWdodAooYykgMjAwMSwgQWFyb24gQm9vZG1hbgpodHRwOi8vd3d3LnlvdW5ncHVwLm5ldAoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKaWYgKG5hdmlnYXRvci5wbGF0Zm9ybSA9PSAiV2luMzIiICYmIG5hdmlnYXRvci5hcHBOYW1lID09ICJNaWNyb3NvZnQgSW50ZXJuZXQgRXhwbG9yZXIiICYmIHdpbmRvdy5hdHRhY2hFdmVudCkKewoJZG9jdW1lbnQud3JpdGVsbignPHN0eWxlIHR5cGU9InRleHQvY3NzIj5pbWcgeyB2aXNpYmlsaXR5OmhpZGRlbjsgfSA8L3N0eWxlPicpOwoJd2luZG93LmF0dGFjaEV2ZW50KCJvbmxvYWQiLCBmbkxvYWRQbmdzKTsKfQoKZnVuY3Rpb24gZm5Mb2FkUG5ncygpCnsKCXZhciByc2x0ID0gbmF2aWdhdG9yLmFwcFZlcnNpb24ubWF0Y2goL01TSUUgKFxkK1wuXGQrKS8sICcnKTsKCXZhciBpdHNBbGxHb29kID0gKHJzbHQgIT0gbnVsbCAmJiBOdW1iZXIocnNsdFsxXSkgPj0gNS41KTsKCglmb3IgKHZhciBpID0gZG9jdW1lbnQuaW1hZ2VzLmxlbmd0aCAtIDEsIGltZyA9IG51bGw7IChpbWcgPSBkb2N1bWVudC5pbWFnZXNbaV0pOyBpLS0pCgl7CgkJaWYgKGl0c0FsbEdvb2QgJiYgaW1nLnNyYy5tYXRjaCgvXC5wbmckL2kpICE9IG51bGwpCgkJewoJCQl2YXIgc3JjID0gaW1nLnNyYzsKCQkJdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIkRJViIpOwoJCQlkaXYuc3R5bGUuZmlsdGVyID0gInByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5BbHBoYUltYWdlTG9hZGVyKHNyYz0nIiArIHNyYyArICInLCBzaXppbmc9J3NjYWxlJykiCgkJCWRpdi5zdHlsZS53aWR0aCA9IGltZy53aWR0aCArICJweCI7CgkJCWRpdi5zdHlsZS5oZWlnaHQgPSBpbWcuaGVpZ2h0ICsgInB4IjsKCQkJaW1nLnJlcGxhY2VOb2RlKGRpdik7CgkJfQoJCWltZy5zdHlsZS52aXNpYmlsaXR5ID0gInZpc2libGUiOwoJfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/libs/DEV/1.1.3/demo/for_the_demo/top_gradient.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhMgBVAOYAAP7+//3+/vz9/vv9/vn8/fr8/fj7/Pf6/Pb6+/X5+/T5+/P4+vL4+vH3+fD3+e/3+e72+O/2+ez1+O31+Or09+v09+nz9ujy9ufy9ebx9eXx9ePw9OTw9OLv8+Hv8+Dv89/u8uDu897t8t3t8tvs8dzs8drr8Nnq8Njq79fp79bp79Xo7tTo7tTn7dPn7dHm7dLn7dDm7M/l7M7l7M3k68zk68vj6sri6sni6cnh6cjh6cfg6Mbg6MXf58Tf58Pf58Le58He5sDd5r/d5r/c5b7c5b3b5Lva47za5LrZ47nZ47fY4rjY4rbX4bXX4QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAAHAP8ALAAAAAAyAFUAAAf/gE6Cg4SFhoeIiYqLjI2JTZCRkpOUlZaXk0uam5ydnp+goZ1MpKWmp6ipqqunSq6vsLGys7S1sUm4ubq7vL2+v7tHwsPExcbHyMnFSMzNzs/Q0dLTz0bW19jZ2tvc3d7f4OHdReTl5ufo6err50Tu7/Dx8vP09fFD+Pn6+/z9/v/7hAgcSLCgwYMIExYMwrChw4cQI0qc+BCIxYsYM2rcyLFjxh8gQ4ocSbKkyZMjfahcybKly5cwY7bsQbOmzZs4c+rceZOHz59AgwodSrRo0B1IkypdyrSp06dLdUidSrWq1atYs1bNwbWr169gw4od+xWH2bNo06pdy7Zt2htw/+PKnUu3rt27c23o3cu3r9+/gAMLHky4cOAaiBMrXsy4sePHi2lInky5suXLmDNXnsG5s+fPoEOLHv1ZhunTqFOrXs26deoYsGPLnk27tu3bs1/o3s27t+/fwIP3hkG8uPHjyJMrX37chfPn0KNLn069evQW2LNr3869u/fv21mIH0++vPnz6NOXX8G+vfv38OPLn/9ehf37+PPr38+/f/4UAAYo4IAEFmjggQOioOCCDDbo4IMQRtjgCRRWaOGFGGao4YYXmuDhhyCGKOKIJJZo4okoplgiCSy26OKLMMYo44wvlmDjjTjmqOOOPPaY4whABinkkEQWaeSRQ4qg5P+STDbp5JNQRtkkCFRWaeWVWGap5ZZXhuDll2CGKeaYZJYZ5gdopqnmmmy26eaba3og55x01mnnnXjmWWcHfPbp55+ABirooH9uYOihiCaq6KKMNpooB5BGKumklFZq6aWTaqDpppx26umnoIbaaQaklmrqqaimquqqp2Lg6quwxirrrLTWGusFuOaq66689urrr7taIOywxBZr7LHIJqvsssw2mywF0EYr7bTUVmvttdNWoO223Hbr7bfghtutBOSWa+656Kar7rrnTuDuu/DGK++89NYbLwT45qvvvvz26++/+0Yg8MAEF2zwwQgnXPADDDfs8MMQRyzxxA87YPG/xRhnrPHGHHeccQMghyzyyCSXbPLJIzOg8sost+zyyzDH3PICNNds880456zzzjcr4PPPQAct9NBEFx10AkgnrfTSTDft9NNLIyD11FRXbfXVWGdd9QFcd+3112CHLfbYXxtg9tlop6322my37fbbcMfdNgF012333Xjnrffedxfg99+ABy744IQXHvgAiCeu+OKMN+7444sLIPnklFdu+eWYZ155AJx37vnnoIcu+uifA2D66ainrvrqrLeeeiAAOw==]]></data>
	</file>
	<file>
	  <filename>/libs/DEV/1.1.3/demo/for_the_demo/verdana.swf</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/libs/DEV/1.1.3/demo/for_the_demo/yanone-kaffeesatz-bold.swf</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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PYuNprbHY+pZFJkHJe77TC35ppXdP8kwhzWmSUI33nPjPTfec+M9N95z4z033nPjPTfec+M9N95z4z033nPjPTfec+M9N95z4z033nPjPTfec+M9N95z4z033nPjPTfec+M9N95z4z033nPjPTfec+M9N95z4z033nPjPTfec+M9N95z4z033nPjPTfec+M9N95z4z033nPjPTfec+M9N95z4z033nPjPTfec+M9N95z4z033nPjPTfec+M9N95z4z033nPjPTfec+M9N95z4z033nPjPTfec+M9N95z4z033nPjPTfec+M9N95z4z033nPjPTfec+M9N95z4z033nPjPTfec+M9N95z4z033nPjPTfec+M9N95z4z033nPjPTfec+O9yeLK/eZk+Vw5VZScLDN1cXyyzNWWpGfI+U4WdykXy1lPFndpeiVcDdcbcxKTZf5tlNruMBZIPXdKLCaLo/TTzXxrC9wKtxnjx0wWL+mn2+EO8nfCXeTsoc69pPMMu+Tn86mHnAJaW0j6kPSFycZRypfQZi/5PuiHpTAAy2A5rKDNn0lEJuOWybhlMm6ZjFsm45bJ4hbVpJGjHCOnCTaT00q6jRa2k+4g3Um6C54QZ042vqD8KdrfTboH9lKmj3Q/HICDcIhPh0nHqSdhNEoNaaa2Kt3UTydYn8q5JFuqQIql9dugHTrgXEtrWGLpWb9pafQvmqRpc1hrSBJOET94B6eIH5QpltIG7dAhnCojlXVmqnjjxNBUGZfGSXqhjBJTZcwxBqZKxHMlZwvcCu8SNaZKlOckpkqUlV7K+6AflsIALIPlMqpMRdWp4mGv1POm5T1zBUefJm48Hp8mbgxLeqXhFa6W/jtNRrni09PkynCOpNca00amyVhXLCXXGXuGpok/s/un0bZptG2ajG+NUmab9M1pem0oOTvhHmnDNBw4TRx4t6TzOWKB9Ppp4hxN13DcWhiGERiFdfBvtORzWA8bYEzG82m4ZZq4RdkJu2AP7IV9sB8OwEE4BIfhCIxLX5gm3lCmmXp09cY0GQf0WOawnmmScDoaTpeoHY5Pl6vsE4npxG66XFV7B6eLho1fTRf1iuXTTEpmybg9XTS8TrhelJkuSlpSMkeiP120UuZJG6aLSmGhR9owXbTS/ELjXKnHa+hxfdAPS2EAlsFKWhLjKHG+m4DZ5vNDUqep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z924/CZnYdlNtzh3lN30+Vtv+8Ltd9y5ctVdq+++Z80X165bf29G5oYvbdyUtXnLl+/7l/+1NTtnW+72vPwdOwvuf6Bw1+6i4j0lpWV795VXVO7/1387cND1kutl1yuu77tedf3A9Zrrh67XXT9y/dh11PWGq9r1E9dPXW+6fub6uesXrl+6fuX6tes3rrdcv3XVuGpdb7t+5/q96x13lftB90Puh92H3I+4H3U/5j7sftz9FfdX3U+4v+Z+0v1191Pub7i/6f6W+2n3t91H3M+4n3U/537e/YL7Rfd33N91f8/9kvtl9yvu77tfdf/A/Zr7h+7X3T9y/9h91P2Gu9r9E/dP3W+6f+b+ufsX7l+6f+X+tfs37rfcv3XXuGvdb7t/5/69+x1PledBz0Oehz2HPI94HvU85jnsedzzFc9XPU94vuZ50vN1z1Oeb3i+6fmW52nPtz1HPM94nvU853ne84LnRc93PN/1fM/zkudlzyue73te9fzA85rnh57XPT/y/Nhz1POGp9rzE89PPW96fub5uecXnl96fuX5tec3nrc8v/XUeGo9b3t+5/m95x1vlfdB70Peh72HvI94H/U+5j3sfdz7Fe9XvU94v+Z90vt171Peb3i/6f2W92nvt71HvM94n/U+533e+4L3Re93vN/1fs/7kvdl7yve73tf9f7A+5r3h97XvT/y/th71PuGt9r7E+9PvW96f+b9ufcX3l96f+X9tfc33re8v/XWeGu9b3t/5/29952Gbza81PByw08b3vTV+Gp9b/t+5/u9753Ao4HHAo8Hng08F3g+8ELgxcB3/lD1hwf/8PAfHv/D9//j982Hmh9pfrT5sebDzY83f6X5ieYnm7/e/FTzN5q/2fyt5qebv918pPmZ5mebn2t+vvmF5hebv9P83ebvNb/U/HLz95tfbf5B82vNP2x+vflHzT9uPtr8RnN180+af9r8ZvPPmn/e/IvmXzb/qvnXzb9pfqv5t801zbXNbzf/rvn3ze8cqzr24LGHjj187NCxR449euyxY4ePPX7sK8e+euyJY1879mTLgy0PtTzccqjlkZZHWx5rOdzyeMtXWr7a8kTLky1fb3mq5Rst32z5VsvTLd9uOdLyTMuzLc+1PN/yQsuLLd9p+W7L91peanm55ZWW77e82vKDltdaftjyesuPWn7ccrTljZbqlp+0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]]></data>
	</file>
	<file>
	  <filename>/libs/DEV/1.1.3/demo/handler_image.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLy8gVGhpcyBzaG91bGQgYmUgbW9kaWZlZCBhcyB5b3VyIG93biB1c2Ugd2FycmFudHMuCgpyZXF1aXJlX29uY2UoJy4uL3NpbXBsZXBpZS5pbmMnKTsKU2ltcGxlUGllX01pc2M6OmRpc3BsYXlfY2FjaGVkX2ZpbGUoJF9HRVRbJ2knXSwgJy4vY2FjaGUnLCAnc3BpJyk7Cj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/libs/DEV/1.1.3/demo/index.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLy8gU3RhcnQgY291bnRpbmcgdGltZSBmb3IgdGhlIHBhZ2UgbG9hZAokc3RhcnR0aW1lID0gZXhwbG9kZSgnICcsIG1pY3JvdGltZSgpKTsKJHN0YXJ0dGltZSA9ICRzdGFydHRpbWVbMV0gKyAkc3RhcnR0aW1lWzBdOwoKLy8gSW5jbHVkZSBTaW1wbGVQaWUKLy8gTG9jYXRlZCBpbiB0aGUgcGFyZW50IGRpcmVjdG9yeQppbmNsdWRlX29uY2UoJy4uL3NpbXBsZXBpZS5pbmMnKTsKaW5jbHVkZV9vbmNlKCcuLi9pZG4vaWRuYV9jb252ZXJ0LmNsYXNzLnBocCcpOwoKLy8gQ3JlYXRlIGEgbmV3IGluc3RhbmNlIG9mIHRoZSBTaW1wbGVQaWUgb2JqZWN0CiRmZWVkID0gbmV3IFNpbXBsZVBpZSgpOwoKLy8gTWFrZSBzdXJlIHRoYXQgcGFnZSBpcyBnZXR0aW5nIHBhc3NlZCBhIFVSTAppZiAoaXNzZXQoJF9HRVRbJ2ZlZWQnXSkgJiYgJF9HRVRbJ2ZlZWQnXSAhPT0gJycpCnsKCS8vIFN0cmlwIHNsYXNoZXMgaWYgbWFnaWMgcXVvdGVzIGlzIGVuYWJsZWQgKHdoaWNoIGF1dG9tYXRpY2FsbHkgZXNjYXBlcyBjZXJ0YWluIGNoYXJhY3RlcnMpCglpZiAoZnVuY3Rpb25fZXhpc3RzKCdnZXRfbWFnaWNfcXVvdGVzX2dwYycpICYmIGdldF9tYWdpY19xdW90ZXNfZ3BjKCkpCgl7CgkJJF9HRVRbJ2ZlZWQnXSA9IHN0cmlwc2xhc2hlcygkX0dFVFsnZmVlZCddKTsKCX0KCQoJLy8gVXNlIHRoZSBVUkwgdGhhdCB3YXMgcGFzc2VkIHRvIHRoZSBwYWdlIGluIFNpbXBsZVBpZQoJJGZlZWQtPnNldF9mZWVkX3VybCgkX0dFVFsnZmVlZCddKTsKCQoJLy8gWE1MIGR1bXAKCSRmZWVkLT5lbmFibGVfeG1sX2R1bXAoaXNzZXQoJF9HRVRbJ3htbGR1bXAnXSkgPyB0cnVlIDogZmFsc2UpOwp9CgovLyBBbGxvdyB1cyB0byBjaGFuZ2UgdGhlIGlucHV0IGVuY29kaW5nIGZyb20gdGhlIFVSTCBzdHJpbmcgaWYgd2Ugd2FudCB0by4gKG9wdGlvbmFsKQppZiAoIWVtcHR5KCRfR0VUWydpbnB1dCddKSkKewoJJGZlZWQtPnNldF9pbnB1dF9lbmNvZGluZygkX0dFVFsnaW5wdXQnXSk7Cn0KCi8vIEFsbG93IHVzIHRvIGNob29zZSB0byBub3QgcmUtb3JkZXIgdGhlIGl0ZW1zIGJ5IGRhdGUuIChvcHRpb25hbCkKaWYgKCFlbXB0eSgkX0dFVFsnb3JkZXJieWRhdGUnXSkgJiYgJF9HRVRbJ29yZGVyYnlkYXRlJ10gPT0gJ2ZhbHNlJykKewoJJGZlZWQtPmVuYWJsZV9vcmRlcl9ieV9kYXRlKGZhbHNlKTsKfQoKLy8gQWxsb3cgdXMgdG8gY2FjaGUgaW1hZ2VzIGluIGZlZWRzLiAgVGhpcyB3aWxsIGFsc28gYnlwYXNzIGFueSBob3RsaW5rIGJsb2NraW5nIHB1dCBpbiBwbGFjZSBieSB0aGUgd2Vic2l0ZS4KaWYgKCFlbXB0eSgkX0dFVFsnaW1hZ2UnXSkgJiYgJF9HRVRbJ2ltYWdlJ10gPT0gJ3RydWUnKQp7CgkkZmVlZC0+c2V0X2ltYWdlX2hhbmRsZXIoJy4vaGFuZGxlcl9pbWFnZS5waHAnKTsKfQoKLy8gV2UnbGwgZW5hYmxlIHRoZSBkaXNjb3ZlcmluZyBhbmQgY2FjaGluZyBvZiBmYXZpY29ucy4KJGZlZWQtPnNldF9mYXZpY29uX2hhbmRsZXIoJy4vaGFuZGxlcl9pbWFnZS5waHAnKTsKCi8vIEluaXRpYWxpemUgdGhlIHdob2xlIFNpbXBsZVBpZSBvYmplY3QuICBSZWFkIHRoZSBmZWVkLCBwcm9jZXNzIGl0LCBwYXJzZSBpdCwgY2FjaGUgaXQsIGFuZCAKLy8gYWxsIHRoYXQgb3RoZXIgZ29vZCBzdHVmZi4gIFRoZSBmZWVkJ3MgaW5mb3JtYXRpb24gd2lsbCBub3QgYmUgYXZhaWxhYmxlIHRvIFNpbXBsZVBpZSBiZWZvcmUgCi8vIHRoaXMgaXMgY2FsbGVkLgokc3VjY2VzcyA9ICRmZWVkLT5pbml0KCk7CgovLyBXZSdsbCBtYWtlIHN1cmUgdGhhdCB0aGUgcmlnaHQgY29udGVudCB0eXBlIGFuZCBjaGFyYWN0ZXIgZW5jb2RpbmcgZ2V0cyBzZXQgYXV0b21hdGljYWxseS4KLy8gVGhpcyBmdW5jdGlvbiB3aWxsIGdyYWIgdGhlIHByb3BlciBjaGFyYWN0ZXIgZW5jb2RpbmcsIGFzIHdlbGwgYXMgc2V0IHRoZSBjb250ZW50IHR5cGUgdG8gdGV4dC9odG1sLgokZmVlZC0+aGFuZGxlX2NvbnRlbnRfdHlwZSgpOwoKLy8gV2hlbiB3ZSBlbmQgb3VyIFBIUCBibG9jaywgd2Ugd2FudCB0byBtYWtlIHN1cmUgb3VyIERPQ1RZUEUgaXMgb24gdGhlIHRvcCBsaW5lIHRvIG1ha2UgCi8vIHN1cmUgdGhhdCB0aGUgYnJvd3NlciBzbmFwcyBpbnRvIFN0YW5kYXJkcyBNb2RlLgo/PjwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS10cmFuc2l0aW9uYWwuZHRkIj4KCjxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiB4bWw6bGFuZz0iZW4tVVMiIGxhbmc9ImVuLVVTIj4KPGhlYWQ+Cjx0aXRsZT5TaW1wbGVQaWU6IERlbW88L3RpdGxlPgoKPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuL2Zvcl90aGVfZGVtby9zSUZSLXNjcmVlbi5jc3MiIHR5cGU9InRleHQvY3NzIiBtZWRpYT0ic2NyZWVuIj4KPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuL2Zvcl90aGVfZGVtby9zSUZSLXByaW50LmNzcyIgdHlwZT0idGV4dC9jc3MiIG1lZGlhPSJwcmludCI+CjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi9mb3JfdGhlX2RlbW8vc2ltcGxlcGllLmNzcyIgdHlwZT0idGV4dC9jc3MiIG1lZGlhPSJzY3JlZW4sIHByb2plY3RvciIgLz4KCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii4vZm9yX3RoZV9kZW1vL3NpZnIuanMiPjwvc2NyaXB0Pgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIuL2Zvcl90aGVfZGVtby9zaWZyLWNvbmZpZy5qcyI+PC9zY3JpcHQ+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii4vZm9yX3RoZV9kZW1vL3NsZWlnaHQuanMiPjwvc2NyaXB0PgoKPC9oZWFkPgoKPGJvZHkgaWQ9ImJvZHlkZW1vIj4KCjxkaXYgaWQ9ImhlYWRlciI+Cgk8ZGl2IGlkPSJoZWFkZXJJbm5lciI+CgkJPGRpdiBpZD0ibG9nb0NvbnRhaW5lciI+CgkJCTxkaXYgaWQ9ImxvZ29Db250YWluZXJJbm5lciI+CgkJCQk8ZGl2IGFsaWduPSJjZW50ZXIiPjxhIGhyZWY9Imh0dHA6Ly9zaW1wbGVwaWUub3JnIj48aW1nIHNyYz0iLi9mb3JfdGhlX2RlbW8vbG9nb19zaW1wbGVwaWVfZGVtby5wbmciIGFsdD0iU2ltcGxlUGllIERlbW86IFBIUC1iYXNlZCBSU1MgYW5kIEF0b20gZmVlZCBoYW5kbGluZyIgdGl0bGU9IlNpbXBsZVBpZSBEZW1vOiBQSFAtYmFzZWQgUlNTIGFuZCBBdG9tIGZlZWQgaGFuZGxpbmciIGJvcmRlcj0iMCIgLz48L2E+PC9kaXY+CgkJCQk8ZGl2IGNsYXNzPSJjbGVhckxlZnQiPjwvZGl2PgoJCQk8L2Rpdj4KCgkJPC9kaXY+CgkJPGRpdiBpZD0ibWVudSI+CgkJPCEtLSBJIGtub3csIEkga25vdywgSSBrbm93Li4uIHRhYmxlcyBmb3IgbGF5b3V0LCBJIGtub3cuICBJZiBhIHdlYiBzdGFuZGFyZHMgZXZhbmdlbGlzdCAobGlrZSBtZSkgaGFzIHRvIHJlc29ydCAKCQl0byB1c2luZyB0YWJsZXMgZm9yIHNvbWV0aGluZywgaXQncyBiZWNhdXNlIG5vIG90aGVyIHBvc3NpYmxlIHNvbHV0aW9uIGNvdWxkIGJlIGZvdW5kLiAgVGhpcyBpc3N1ZT8gIE5vIHdheSB0byAKCQlkbyBjZW50ZXJlZCBmbG9hdHMgcHVyZWx5IHdpdGggQ1NTLiBUaGUgdGFibGUgYm94IG1vZGVsIGFsbG93cyBmb3IgYSBkeW5hbWljIHdpZHRoIHdoaWxlIGNlbnRlcmVkLCB3aGlsZSB0aGUgCgkJQ1NTIGJveCBtb2RlbCBmb3IgRElWcyBkb2Vzbid0IGFsbG93IGZvciBpdC4gOiggLS0+CgkJPHRhYmxlIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgYm9yZGVyPSIwIj48dGJvZHk+PHRyPjx0ZD4KPHVsPjxsaSBpZD0iZGVtbyI+PGEgaHJlZj0iLi8iPlNpbXBsZVBpZSBEZW1vPC9hPjwvbGk+PGxpPjxhIGhyZWY9Imh0dHA6Ly9zaW1wbGVwaWUub3JnL3dpa2kvZmFxL3N0YXJ0Ij5GQVEvVHJvdWJsZXNob290aW5nPC9hPjwvbGk+PGxpPjxhIGhyZWY9Imh0dHA6Ly9zaW1wbGVwaWUub3JnL3N1cHBvcnQvIj5TdXBwb3J0IEZvcnVtczwvYT48L2xpPjxsaT48YSBocmVmPSJodHRwOi8vc2ltcGxlcGllLm9yZy93aWtpL3JlZmVyZW5jZS9zdGFydCI+QVBJIFJlZmVyZW5jZTwvYT48L2xpPjxsaT48YSBocmVmPSJodHRwOi8vc2ltcGxlcGllLm9yZy9ibG9nLyI+V2VibG9nPC9hPjwvbGk+PGxpPjxhIGhyZWY9Ii4uL3Rlc3QvdGVzdC5waHAiPlVuaXQgVGVzdHM8L2E+PC9saT48L3VsPgoKCQkJPGRpdiBjbGFzcz0iY2xlYXJMZWZ0Ij48L2Rpdj4KCQk8L3RkPjwvdHI+PC90Ym9keT48L3RhYmxlPgoJCTwvZGl2PgoJPC9kaXY+CjwvZGl2PgoKPGRpdiBpZD0ic2l0ZSI+CgoJPGRpdiBpZD0iY29udGVudCI+CgoJCTxkaXYgY2xhc3M9ImNodW5rIj4KCQkJPGZvcm0gYWN0aW9uPSIiIG1ldGhvZD0iZ2V0IiBuYW1lPSJzcF9mb3JtIiBpZD0ic3BfZm9ybSI+CgkJCQk8ZGl2IGlkPSJzcF9pbnB1dCI+CgoKCQkJCQk8IS0tIElmIGEgZmVlZCBoYXMgYWxyZWFkeSBiZWVuIHBhc3NlZCB0aHJvdWdoIHRoZSBmb3JtLCB0aGVuIG1ha2Ugc3VyZSB0aGF0IHRoZSBVUkwgcmVtYWlucyBpbiB0aGUgZm9ybSBmaWVsZC4gLS0+CgkJCQkJPHA+PGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImZlZWQiIHZhbHVlPSI8P3BocCBpZiAoJGZlZWQtPnN1YnNjcmliZV91cmwoKSkgZWNobyAkZmVlZC0+c3Vic2NyaWJlX3VybCgpOyA/PiIgY2xhc3M9InRleHQiIGlkPSJmZWVkX2lucHV0IiAvPiZuYnNwOzxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJSZWFkIiBjbGFzcz0iYnV0dG9uIiAvPjwvcD4KCgoJCQkJPC9kaXY+CgkJCTwvZm9ybT4KCgoJCQk8P3BocAoJCQkvLyBDaGVjayB0byBzZWUgaWYgdGhlcmUgYXJlIG1vcmUgdGhhbiB6ZXJvIGVycm9ycyAoaS5lLiBpZiB0aGVyZSBhcmUgYW55IGVycm9ycyBhdCBhbGwpCgkJCWlmICgkZmVlZC0+ZXJyb3IoKSkKCQkJewoJCQkJLy8gSWYgc28sIHN0YXJ0IGEgPGRpdj4gZWxlbWVudCB3aXRoIGEgY2xhc3NuYW1lIHNvIHdlIGNhbiBzdHlsZSBpdC4KCQkJCWVjaG8gJzxkaXYgY2xhc3M9InNwX2Vycm9ycyI+JyAuICJcclxuIjsKCgkJCQkJLy8gLi4uIGFuZCBkaXNwbGF5IGl0LgoJCQkJCWVjaG8gJzxwPicgLiBodG1sc3BlY2lhbGNoYXJzKCRmZWVkLT5lcnJvcigpKSAuICI8L3A+XHJcbiI7CgoJCQkJLy8gQ2xvc2UgdGhlIDxkaXY+IGVsZW1lbnQgd2Ugb3BlbmVkLgoJCQkJZWNobyAnPC9kaXY+JyAuICJcclxuIjsKCQkJfQoJCQk/PgoKCQkJPCEtLSBIZXJlIGFyZSBzb21lIHNhbXBsZSBmZWVkcy4gLS0+CgkJCTxwIGNsYXNzPSJzYW1wbGVfZmVlZHMiPjxzdHJvbmc+T3IgdHJ5IG9uZSBvZiB0aGUgZm9sbG93aW5nOjwvc3Ryb25nPiAKCQkJPGEgaHJlZj0iP2ZlZWQ9aHR0cDovL3d3dy7oqbnlp4bmlq8uY29tL2F0b210ZXN0cy9pcmkvZXZlcnl0aGluZy5hdG9tIiB0aXRsZT0iVGVzdDogSW50ZXJuYXRpb25hbCBEb21haW4gTmFtZSBzdXBwb3J0Ij7oqbnlp4bmlq8uY29tPC9hPiwgCgkJCTxhIGhyZWY9Ij9mZWVkPWh0dHA6Ly93d3cuYWR1bHRzd2ltLmNvbS93aWxsaWFtcy9wb2RjYXN0L3Rvb2xzL3htbC92aWRlb19yc3MueG1sIiB0aXRsZT0iSHVtb3IgZnJvbSB0aGUgcGVvcGxlIHdobyBtYWtlIFthZHVsdCBzd2ltXSBjYXJ0b29ucy4iPmFkdWx0IHN3aW08L2E+LCAKCQkJPGEgaHJlZj0iP2ZlZWQ9aHR0cDovL2FmdGVyZGF3bi5jb20vbmV3cy9hZnRlcmRhd25fcnNzLnhtbCIgdGl0bGU9IlJpcHBpbmcsIEJ1cm5pbmcsIERSTSwgYW5kIHRoZSBEYXJrIFNpZGUgb2YgQ29uc3VtZXIgRWxlY3Ryb25pY3MgTWVkaWEiPkFmdGVyZGF3bjwvYT4sIAoJCQk8YSBocmVmPSI/ZmVlZD1odHRwOi8vZmVlZHMuZmVlZGJ1cm5lci5jb20vYWpheGlhbiIgdGl0bGU9IkFKQVggYW5kIFNjcmlwdGluZyBOZXdzIj5BamF4aWFuPC9hPiwgCgkJCTxhIGhyZWY9Ij9mZWVkPWh0dHA6Ly93d3cuYW5keWJ1ZGQuY29tL2luZGV4LnJkZiZhbXA7aW1hZ2U9dHJ1ZSIgdGl0bGU9IlRlc3Q6IEJ5cGFzcyBJbWFnZSBIb3RsaW5rIEJsb2NraW5nIj5BbmR5IEJ1ZGQ8L2E+LCAKCQkJPGEgaHJlZj0iP2ZlZWQ9aHR0cDovL2ZlZWRzLmZlZWRidXJuZXIuY29tL0Fza0FOaW5qYSIgdGl0bGU9IlRlc3Q6IEVtYmVkZGVkIEVuY2xvc3VyZXMiPkFzayBhIE5pbmphPC9hPiwgCgkJCTxhIGhyZWY9Ij9mZWVkPWh0dHA6Ly93d3cuYXRvbWVuYWJsZWQub3JnL2F0b20ueG1sIiB0aXRsZT0iVGVzdDogQXRvbSAxLjAgU3VwcG9ydCI+QXRvbUVuYWJsZWQub3JnPC9hPiwgCgkJCTxhIGhyZWY9Ij9mZWVkPWh0dHA6Ly9uZXdzcnNzLmJiYy5jby51ay9yc3MvbmV3c29ubGluZV93b3JsZF9lZGl0aW9uL2Zyb250X3BhZ2UvcnNzLnhtbCIgdGl0bGU9IldvcmxkIE5ld3MiPkJCQyBOZXdzPC9hPiwgCgkJCTxhIGhyZWY9Ij9mZWVkPWh0dHA6Ly9uZXdzcnNzLmJiYy5jby51ay9yc3MvYXJhYmljL25ld3MvcnNzLnhtbCIgdGl0bGU9IlRlc3Q6IFdpbmRvd3MtMTI1NiBFbmNvZGluZyI+QkJDIEFyYWJpYzwvYT4sIAoJCQk8YSBocmVmPSI/ZmVlZD1odHRwOi8vbmV3c3Jzcy5iYmMuY28udWsvcnNzL2NoaW5lc2Uvc2ltcC9uZXdzL3Jzcy54bWwiIHRpdGxlPSJUZXN0OiBHQjIzMTIgRW5jb2RpbmciPkJCQyBDaGluYTwvYT4sIAoJCQk8YSBocmVmPSI/ZmVlZD1odHRwOi8vbmV3c3Jzcy5iYmMuY28udWsvcnNzL3J1c3NpYW4vbmV3cy9yc3MueG1sIiB0aXRsZT0iVGVzdDogV2luZG93cy0xMjUxIEVuY29kaW5nIj5CQkMgUnVzc2lhPC9hPiwgCgkJCTxhIGhyZWY9Ij9mZWVkPWh0dHA6Ly9ibG9nZGlnZ2VyLmNvbS9tZWRpYS9tb3YueG1sIiB0aXRsZT0iVGVzdDogTXVsdGlwbGUgSXNzdWVzIj5CbG9nZGlnZ2VyPC9hPiwgCgkJCTxhIGhyZWY9Ij9mZWVkPWh0dHA6Ly9pbmVzc2VudGlhbC5jb20veG1sL3Jzcy54bWwiIHRpdGxlPSJEZXZlbG9wZXIgb2YgTmV0TmV3c1dpcmUiPkJyZW50IFNpbW1vbnM8L2E+LCAKCQkJPGEgaHJlZj0iP2ZlZWQ9aHR0cDovL3d3dy5jaGFubmVsZnJlZGVyYXRvci5jb20vcnNzIiB0aXRsZT0iVGVzdDogRW1iZWRkZWQgRW5jbG9zdXJlcyI+Q2hhbm5lbCBGcmVkZXJhdG9yPC9hPiwgCgkJCTxhIGhyZWY9Ij9mZWVkPWh0dHA6Ly9yc3MuY25uLmNvbS9yc3MvY25uX3RvcHN0b3JpZXMucnNzIiB0aXRsZT0iV29ybGQgTmV3cyI+Q05OPC9hPiwgCgkJCTxhIGhyZWY9Ij9mZWVkPWh0dHA6Ly93d3cuY3JhenlhcHBsZXJ1bW9ycy5jb20vP2ZlZWQ9cnNzMiIgdGl0bGU9IkhpbGFyaXR5IGF0IGl0cyBiZXN0Ij5DcmF6eSBBcHBsZSBSdW1vcnM8L2E+LCAKCQkJPGEgaHJlZj0iP2ZlZWQ9aHR0cDovL2RlbC5pY2lvLnVzL3Jzcy8iIHRpdGxlPSJUaGUgZGVmYWN0byBzb2NpYWwgYm9va21hcmtpbmcgc2l0ZSI+ZGVsLmljaW8udXM8L2E+LCAKCQkJPGEgaHJlZj0iP2ZlZWQ9aHR0cDovL2RpZ2cuY29tL3Jzcy9pbmRleC54bWwiIHRpdGxlPSJUZWNoIG5ld3MuICBCZXR0ZXIgdGhhbiBTbGFzaGRvdC4iPkRpZ2c8L2E+LCAKCQkJPGEgaHJlZj0iP2ZlZWQ9aHR0cDovL29kZW8uY29tL2NoYW5uZWwvcnNzLzQ1NjUiIHRpdGxlPSJUZWNoIGFuZCBpbmR1c3RyeSB2aWRlb2Nhc3QuIj5EaWdnbmF0aW9uIChPZGVvKTwvYT4sIAoJCQk8YSBocmVmPSI/ZmVlZD1odHRwOi8vcmV2aXNpb24zLmNvbS9kaWdnbmF0aW9uL2ZlZWQvcXVpY2t0aW1lLWxhcmdlIiB0aXRsZT0iVGVjaCBhbmQgaW5kdXN0cnkgdmlkZW9jYXN0LiI+RGlnZ25hdGlvbiAoVmlkZW8pPC9hPiwgCgkJCTxhIGhyZWY9Ij9mZWVkPWh0dHA6Ly9vZGVvLmNvbS9jaGFubmVsLzMyMDIyL3JzcyIgdGl0bGU9IlRlc3Q6IEVtYmVkZGVkIE9kZW8gUGxheWVyIj5Eb21pbmljIFNhZ29sbGE8L2E+LCAKCQkJPGEgaHJlZj0iP2ZlZWQ9aHR0cDovL3d3dy5kb29jZS5jb20vYXRvbS54bWwiIHRpdGxlPSJUZXN0OiBBZCBTdHJpcHBpbmciPkRvb2NlPC9hPiwgCgkJCTxhIGhyZWY9Ij9mZWVkPWh0dHA6Ly93d3cuZmxpY2tyLmNvbS9zZXJ2aWNlcy9mZWVkcy9waG90b3NfcHVibGljLmduZT9mb3JtYXQ9cnNzMiIgdGl0bGU9IkZsaWNrciBQaG90b3MiPkZsaWNrcjwvYT4sIAoJCQk8YSBocmVmPSI/ZmVlZD1odHRwOi8vbmV3cy5nb29nbGUuY29tLz9vdXRwdXQ9cnNzIiB0aXRsZT0iV29ybGQgTmV3cyI+R29vZ2xlIE5ld3M8L2E+LCAKCQkJPGEgaHJlZj0iP2ZlZWQ9aHR0cDovL3ZpZGVvLmdvb2dsZS5jb20vdmlkZW9mZWVkP3R5cGU9dG9wMTAwbmV3Jm51bT0yMCZvdXRwdXQ9cnNzIiB0aXRsZT0iVGVzdDogTWVkaWEgUlNTIFN1cHBvcnQiPkdvb2dsZSBWaWRlbzwvYT4sIAoJCQk8YSBocmVmPSI/ZmVlZD1odHRwOi8vYmxvZ3MubGF3LmhhcnZhcmQuZWR1L2hvbWUvZmVlZC9yZGYvIiB0aXRsZT0iVGVzdDogVGFnIFN0cmlwcGluZyI+SGFydmFyZCBMYXc8L2E+LCAKCQkJPGEgaHJlZj0iP2ZlZWQ9aHR0cDovL2hhZ2FkYS5vcmcuaWwvaGFnYWRhL2h0bWwvYmFja2VuZC5waHAiIHRpdGxlPSJUZXN0OiBXaW5kb3ctMTI1NSBFbmNvZGluZyI+SGVicmV3IExhbmd1YWdlPC9hPiwgCgkJCTxhIGhyZWY9Ij9mZWVkPWh0dHA6Ly93d3cuaW5mb3dvcmxkLmNvbS9yc3MvbmV3cy54bWwiIHRpdGxlPSJUZXN0OiBBZCBTdHJpcHBpbmciPkluZm9Xb3JsZDwvYT4sIAoJCQk8YSBocmVmPSI/ZmVlZD1odHRwOi8vcGhvYm9zLmFwcGxlLmNvbS9XZWJPYmplY3RzL01aU3RvcmUud29hL3dwYS9NUlNTL3RvcHNvbmdzL2xpbWl0PTEwL3Jzcy54bWwmb3JkZXJieWRhdGU9ZmFsc2UiIHRpdGxlPSJUZXN0OiBUYWcgU3RyaXBwaW5nIj5pVHVuZXM8L2E+LCAKCQkJPGEgaHJlZj0iP2ZlZWQ9aHR0cDovL2Jsb2cuamFwYW4uY25ldC5jb20vbGVzc2lnL2luZGV4LnJkZiIgdGl0bGU9IlRlc3Q6IEVVQy1KUCBFbmNvZGluZyI+SmFwYW5lc2UgTGFuZ3VhZ2U8L2E+LCAKCQkJPGEgaHJlZj0iP2ZlZWQ9aHR0cDovL251cmFwdC5rYWlzdC5hYy5rci9+amFtYWljYS9odG1scy9ibG9nL3Jzcy5waHAmYW1wO2lucHV0PUVVQy1LUiIgdGl0bGU9IlRlc3Q6IEVVQy1LUiBFbmNvZGluZyI+S29yZWFuIExhbmd1YWdlPC9hPiwgCgkJCTxhIGhyZWY9Ij9mZWVkPWh0dHA6Ly9tYWNubi5jb20vcG9kY2FzdHMvbWFjbm4ucnNzIiB0aXRsZT0iVGVzdDogRW1iZWRkZWQgRW5jbG9zdXJlcyI+TWFjTk48L2E+LCAKCQkJPGEgaHJlZj0iP2ZlZWQ9aHR0cDovL21pci5hY3Vsby51cy94bWwvcnNzL2ZlZWQueG1sIiB0aXRsZT0iV2VibG9nIGZvciB0aGUgZGV2ZWxvcGVyIG9mIFNjcmlwdGFjdWxvdXMiPm1pci5hY3Vsby51czwvYT4sIAoJCQk8YSBocmVmPSI/ZmVlZD1odHRwOi8vaW1hZ2VzLmFwcGxlLmNvbS90cmFpbGVycy9yc3MvbmV3dHJhaWxlcnMucnNzIiB0aXRsZT0iQXBwbGUncyBRdWlja1RpbWUgbW92aWUgdHJhaWxlciBzaXRlIj5Nb3ZpZSBUcmFpbGVyczwvYT4sIAoJCQk8YSBocmVmPSI/ZmVlZD1odHRwOi8vbmljay50eXBlcGFkLmNvbS9ibG9nL2luZGV4LnJzcyIgdGl0bGU9IkRldmVsb3BlciBvZiBUb3BTdHlsZSBhbmQgRmVlZERlbW9uIj5OaWNrIEJyYWRidXJ5PC9hPiwgCgkJCTxhIGhyZWY9Ij9mZWVkPWh0dHA6Ly9mZWVkcy5mZWVkYnVybmVyLmNvbS9vay1jYW5jZWwiIHRpdGxlPSJVc2FiaWxpdHkgY29taWNzIGFuZCBjb21tZW50YXJ5Ij5PSy9DYW5jZWw8L2E+LCAKCQkJPGEgaHJlZj0iP2ZlZWQ9aHR0cDovL29zbmV3cy5jb20vZmlsZXMvcmVjZW50LnJkZiIgdGl0bGU9Ik5ld3MgYWJvdXQgZXZlcnkgT1MgZXZlciI+T1MgTmV3czwvYT4sIAoJCQk8YSBocmVmPSI/ZmVlZD1odHRwOi8vd2VibG9nLnBoaWxyaW5nbmFsZGEuY29tL2ZlZWQvIiB0aXRsZT0iVGVzdDogQXRvbSAxLjAgU3VwcG9ydCI+UGhpbCBSaW5nbmFsZGE8L2E+LCAKCQkJPGEgaHJlZj0iP2ZlZWQ9aHR0cDovL3Bob3RvY2FzdC5tYWMuY29tL3R1cmJvZGVyZWsvaVBob3RvL3RvcC1yaWRlcy9pbmRleC5yc3MiIHRpdGxlPSJUZXN0OiBpUGhvdG8gNiBQaG90b2Nhc3RpbmciPlBob3RvY2FzdDwvYT4sIAoJCQk8YSBocmVmPSI/ZmVlZD1odHRwOi8va2FiaWxpLmxpYnN5bi5jb20vcnNzIiB0aXRsZT0iVGVzdDogSW1wcm92ZWQgZW5jbG9zdXJlIHR5cGUgc25pZmZpbmciPlBob3Rvc2hvcCBWaWRlb2Nhc3Q8L2E+LCAKCQkJPGEgaHJlZj0iP2ZlZWQ9aHR0cDovL3d3dy5wYXJpdXJpc3BvcnRpdmUuY29tL2Jsb2cveG1sc3J2L3JzczIucGhwP2Jsb2c9MiIgdGl0bGU9IlRlc3Q6IElTTy04ODU5LTEgRW5jb2RpbmciPlJvbWFuaWFuIExhbmd1YWdlPC9hPiwgCgkJCTxhIGhyZWY9Ij9mZWVkPWh0dHA6Ly93d3cuZXJhc2VkLmluZm8vcnNzMi5waHAiIHRpdGxlPSJUZXN0OiBLT0k4LVIgRW5jb2RpbmciPlJ1c3NpYW4gTGFuZ3VhZ2U8L2E+LCAKCQkJPGEgaHJlZj0iP2ZlZWQ9aHR0cDovL3d3dy51cHNhaWQuY29tL2lzaXMvaW5kZXgucmRmIiB0aXRsZT0iVGVzdDogQklHNSBFbmNvZGluZyI+VHJhZGl0aW9uYWwgQ2hpbmVzZSBMYW5ndWFnZTwvYT4sIAoJCQk8YSBocmVmPSI/ZmVlZD1odHRwOi8vdGVjaG5vcmF0aS5jb20vd2F0Y2hsaXN0cy9yc3MuaHRtbD93aWQ9MjkyOTAiIHRpdGxlPSJUZWNobm9yYXRpIHdhdGNoIGZvciBTaW1wbGVQaWUiPlRlY2hub3JhdGk8L2E+LCAKCQkJPGEgaHJlZj0iP2ZlZWQ9aHR0cDovL3RoaW5rc2VjcmV0LmNvbS9yc3MueG1sIiB0aXRsZT0iQXBwbGUgUnVtb3JzIj5UaGluayBTZWNyZXQ8L2E+LCAKCQkJPGEgaHJlZj0iP2ZlZWQ9aHR0cDovL3d3dy50YnJheS5vcmcvb25nb2luZy9vbmdvaW5nLmF0b20iIHRpdGxlPSJUZXN0OiBBdG9tIDEuMCBTdXBwb3J0Ij5UaW0gQnJheTwvYT4sIAoJCQk8YSBocmVmPSI/ZmVlZD1odHRwOi8vdHVhdy5jb20vcnNzLnhtbCIgdGl0bGU9IlRlc3Q6IEFkIFN0cmlwcGluZyI+VFVBVzwvYT4sIAoJCQk8YSBocmVmPSI/ZmVlZD1odHRwOi8vd3d3LnR2Z2FzbS5jb20vYXRvbS54bWwmYW1wO2ltYWdlPXRydWUiIHRpdGxlPSJUZXN0OiBCeXBhc3MgSW1hZ2UgSG90bGluayBCbG9ja2luZyI+VFZnYXNtPC9hPiwgCgkJCTxhIGhyZWY9Ij9mZWVkPWh0dHA6Ly91bmVhc3lzaWxlbmNlLmNvbS9mZWVkLyIgdGl0bGU9IkludGVyZXN0aW5nIHRlY2ggcmFuZG9tbmVzcyI+VU5FQVNZc2lsZW5jZTwvYT4sIAoJCQk8YSBocmVmPSI/ZmVlZD1odHRwOi8vZmVlZHMuZmVlZGJ1cm5lci5jb20vd2ViMjBTaG93IiB0aXRsZT0iVGVzdDogRW1iZWRkZWQgRW5jbG9zdXJlcyI+V2ViIDIuMCBTaG93PC9hPiwgCgkJCTxhIGhyZWY9Ij9mZWVkPWh0dHA6Ly93aGl0ZWNvbGxhcnJ1Y2t1cy5saWJzeW4uY29tL3JzcyIgdGl0bGU9IlRlc3Q6IEVtYmVkZGVkIEVuY2xvc3VyZXMiPldoaXRlIENvbGxhciBSdWNrdXM8L2E+LCAKCQkJPGEgaHJlZj0iP2ZlZWQ9aHR0cDovL2Jsb2dzLnRlY2huZXQuY29tL3dpbmRvd3N2aXN0YS9yc3MueG1sIiB0aXRsZT0iVGVzdDogVGFnIFN0cmlwcGluZyI+V2luZG93cyBWaXN0YSBCbG9nPC9hPiwgCgkJCTxhIGhyZWY9Ij9mZWVkPWh0dHA6Ly9yc3MubmV3cy55YWhvby5jb20vcnNzL3RvcHN0b3JpZXMiIHRpdGxlPSJXb3JsZCBOZXdzIj5ZYWhvbyEgTmV3czwvYT4sIAoJCQk8YSBocmVmPSI/ZmVlZD1odHRwOi8veW91dHViZS5jb20vcnNzL2dsb2JhbC90b3BfZmF2b3JpdGVzLnJzcyIgdGl0bGU9IkZ1bm55IHVzZXItc3VibWl0dGVkIHZpZGVvcyI+WW91IFR1YmU8L2E+LCAKCQkJPGEgaHJlZj0iP2ZlZWQ9aHR0cDovL3plbGRtYW4uY29tL3Jzcy8iIHRpdGxlPSJUaGUgZmF0aGVyIG9mIHRoZSB3ZWIgc3RhbmRhcmRzIG1vdmVtZW50Ij5aZWxkbWFuPC9hPjwvcD4KCgkJPC9kaXY+CgoJCTxkaXYgaWQ9InNwX3Jlc3VsdHMiPgoKCQkJPCEtLSBBcyBsb25nIGFzIHRoZSBmZWVkIGhhcyBkYXRhIHRvIHdvcmsgd2l0aC4uLiAtLT4KCQkJPD9waHAgaWYgKCRzdWNjZXNzKTogPz4KCQkJCTxkaXYgY2xhc3M9ImNodW5rIGZvY3VzIiBhbGlnbj0iY2VudGVyIj4KCgkJCQkJPCEtLSBJZiB0aGUgZmVlZCBoYXMgYSBsaW5rIGJhY2sgdG8gdGhlIHNpdGUgdGhhdCBwdWJsaXNoZXMgaXQgKHdoaWNoIDk5JSBvZiB0aGVtIGRvKSwgbGluayB0aGUgZmVlZCdzIHRpdGxlIHRvIGl0LiAtLT4KCQkJCQk8aDMgY2xhc3M9ImhlYWRlciI+PD9waHAgaWYgKCRmZWVkLT5nZXRfbGluaygpKSBlY2hvICc8YSBocmVmPSInIC4gJGZlZWQtPmdldF9saW5rKCkgLiAnIj4nOyBlY2hvICRmZWVkLT5nZXRfdGl0bGUoKTsgaWYgKCRmZWVkLT5nZXRfbGluaygpKSBlY2hvICc8L2E+JzsgPz48L2gzPgoKCQkJCQk8IS0tIElmIHRoZSBmZWVkIGhhcyBhIGRlc2NyaXB0aW9uLCBkaXNwbGF5IGl0LiAtLT4KCQkJCQk8P3BocCBlY2hvICRmZWVkLT5nZXRfZGVzY3JpcHRpb24oKTsgPz4KCgkJCQk8L2Rpdj4KCgkJCQk8IS0tIEFkZCBzdWJzY3JpYmUgbGlua3MgZm9yIHNldmVyYWwgZGlmZmVyZW50IGFnZ3JlZ2F0aW9uIHNlcnZpY2VzIC0tPgoJCQkJPHAgY2xhc3M9InN1YnNjcmliZSI+PHN0cm9uZz5TdWJzY3JpYmU6PC9zdHJvbmc+IDxhIGhyZWY9Ijw/cGhwIGVjaG8gJGZlZWQtPnN1YnNjcmliZV9ibG9nbGluZXMoKTsgPz4iPkJsb2dsaW5lczwvYT4sIDxhIGhyZWY9Ijw/cGhwIGVjaG8gJGZlZWQtPnN1YnNjcmliZV9nb29nbGUoKTsgPz4iPkdvb2dsZSBSZWFkZXI8L2E+LCA8YSBocmVmPSI8P3BocCBlY2hvICRmZWVkLT5zdWJzY3JpYmVfbXNuKCk7ID8+Ij5NeSBNU048L2E+LCA8YSBocmVmPSI8P3BocCBlY2hvICRmZWVkLT5zdWJzY3JpYmVfbmV0dmliZXMoKTsgPz4iPk5ldHZpYmVzPC9hPiwgPGEgaHJlZj0iPD9waHAgZWNobyAkZmVlZC0+c3Vic2NyaWJlX25ld3NidXJzdCgpOyA/PiI+TmV3c2J1cnN0PC9hPjxiciAvPjxhIGhyZWY9Ijw/cGhwIGVjaG8gJGZlZWQtPnN1YnNjcmliZV9uZXdzZ2F0b3IoKTsgPz4iPk5ld3NnYXRvcjwvYT4sIDxhIGhyZWY9Ijw/cGhwIGVjaG8gJGZlZWQtPnN1YnNjcmliZV9vZGVvKCk7ID8+Ij5PZGVvPC9hPiwgPGEgaHJlZj0iPD9waHAgZWNobyAkZmVlZC0+c3Vic2NyaWJlX3BvZG5vdmEoKTsgPz4iPlBvZG5vdmE8L2E+LCA8YSBocmVmPSI8P3BocCBlY2hvICRmZWVkLT5zdWJzY3JpYmVfcm9qbygpOyA/PiI+Um9qbzwvYT4sIDxhIGhyZWY9Ijw/cGhwIGVjaG8gJGZlZWQtPnN1YnNjcmliZV95YWhvbygpOyA/PiI+TXkgWWFob28hPC9hPiwgPGEgaHJlZj0iPD9waHAgZWNobyAkZmVlZC0+c3Vic2NyaWJlX2ZlZWQoKTsgPz4iPkRlc2t0b3AgUmVhZGVyPC9hPjwvcD4KCgoJCQkJPCEtLSBMZXQncyBiZWdpbiBsb29waW5nIHRocm91Z2ggZWFjaCBpbmRpdmlkdWFsIG5ld3MgaXRlbSBpbiB0aGUgZmVlZC4gLS0+CgkJCQk8P3BocCBmb3JlYWNoKCRmZWVkLT5nZXRfaXRlbXMoKSBhcyAkaXRlbSk6ID8+CgkJCQkJPGRpdiBjbGFzcz0iY2h1bmsiPgoKCQkJCQkJPD9waHAKCQkJCQkJLy8gTGV0J3MgYWRkIGEgZmF2aWNvbiBmb3IgZWFjaCBpdGVtLiBJZiBvbmUgZG9lc24ndCBleGlzdCwgd2UnbGwgdXNlIGFuIGFsdGVybmF0ZSBvbmUuCgkJCQkJCWlmICghJGZhdmljb24gPSAkZmVlZC0+Z2V0X2Zhdmljb24oKSkKCQkJCQkJewoJCQkJCQkJJGZhdmljb24gPSAnLi9mb3JfdGhlX2RlbW8vZmF2aWNvbnMvYWx0ZXJuYXRlLnBuZyc7CgkJCQkJCX0KCQkJCQkJPz4KCgkJCQkJCTwhLS0gSWYgdGhlIGl0ZW0gaGFzIGEgcGVybWFsaW5rIGJhY2sgdG8gdGhlIG9yaWdpbmFsIHBvc3QgKHdoaWNoIDk5JSBvZiB0aGVtIGRvKSwgbGluayB0aGUgaXRlbSdzIHRpdGxlIHRvIGl0LiAtLT4KCQkJCQkJPGg0PjxpbWcgc3JjPSI8P3BocCBlY2hvICRmYXZpY29uOyA/PiIgYWx0PSJGYXZpY29uIiBjbGFzcz0iZmF2aWNvbiIgLz48P3BocCBpZiAoJGl0ZW0tPmdldF9wZXJtYWxpbmsoKSkgZWNobyAnPGEgaHJlZj0iJyAuICRpdGVtLT5nZXRfcGVybWFsaW5rKCkgLiAnIj4nOyBlY2hvICRpdGVtLT5nZXRfdGl0bGUoKTsgaWYgKCRpdGVtLT5nZXRfcGVybWFsaW5rKCkpIGVjaG8gJzwvYT4nOyA/PiZuYnNwOzxzcGFuIGNsYXNzPSJmb290bm90ZSI+PD9waHAgZWNobyAkaXRlbS0+Z2V0X2RhdGUoJ2ogTSBZLCBnOmkgYScpOyA/Pjwvc3Bhbj48L2g0PgoKCQkJCQkJPCEtLSBEaXNwbGF5IHRoZSBpdGVtJ3MgcHJpbWFyeSBjb250ZW50LiAtLT4KCQkJCQkJPD9waHAgZWNobyAkaXRlbS0+Z2V0X2NvbnRlbnQoKTsgPz4KCgkJCQkJCTw/cGhwCgkJCQkJCS8vIENoZWNrIGZvciBlbmNsb3N1cmVzLiAgSWYgYW4gaXRlbSBoYXMgYW55LCBzZXQgdGhlIGZpcnN0IG9uZSB0byB0aGUgJGVuY2xvc3VyZSB2YXJpYWJsZS4KCQkJCQkJaWYgKCRlbmNsb3N1cmUgPSAkaXRlbS0+Z2V0X2VuY2xvc3VyZSgwKSkKCQkJCQkJewoJCQkJCQkJLy8gVXNlIHRoZSBlbWJlZCgpIG1ldGhvZCB0byBlbWJlZCB0aGUgZW5jbG9zdXJlIGludG8gdGhlIHBhZ2UgaW5saW5lLgoJCQkJCQkJZWNobyAnPGRpdiBhbGlnbj0iY2VudGVyIj4nOwoJCQkJCQkJZWNobyAnPHA+JyAuICRlbmNsb3N1cmUtPmVtYmVkKGFycmF5KAoJCQkJCQkJCSdhdWRpbycgPT4gJy4vZm9yX3RoZV9kZW1vL3BsYWNlX2F1ZGlvLnBuZycsCgkJCQkJCQkJJ3ZpZGVvJyA9PiAnLi9mb3JfdGhlX2RlbW8vcGxhY2VfdmlkZW8ucG5nJywKCQkJCQkJCQknbWVkaWFwbGF5ZXInID0+ICcuL2Zvcl90aGVfZGVtby9tZWRpYXBsYXllci5zd2YnLAoJCQkJCQkJCSdhbHQnID0+ICc8aW1nIHNyYz0iLi9mb3JfdGhlX2RlbW8vbWluaV9wb2RjYXN0LnBuZyIgY2xhc3M9ImRvd25sb2FkIiBib3JkZXI9IjAiIHRpdGxlPSJEb3dubG9hZCB0aGUgUG9kY2FzdCAoJyAuICRlbmNsb3N1cmUtPmdldF9leHRlbnNpb24oKSAuICc7ICcgLiAkZW5jbG9zdXJlLT5nZXRfc2l6ZSgpIC4gJyBNQikiIC8+JywKCQkJCQkJCQknYWx0Y2xhc3MnID0+ICdkb3dubG9hZCcKCQkJCQkJCSkpIC4gJzwvcD4nOwoJCQkJCQkJZWNobyAnPHAgY2xhc3M9ImZvb3Rub3RlIiBhbGlnbj0iY2VudGVyIj4oJyAuICRlbmNsb3N1cmUtPmdldF90eXBlKCk7CgkJCQkJCQlpZiAoJGVuY2xvc3VyZS0+Z2V0X3NpemUoKSkKCQkJCQkJCXsKCQkJCQkJCQllY2hvICc7ICcgLiAkZW5jbG9zdXJlLT5nZXRfc2l6ZSgpIC4gJyBNQic7CQkJCQkJCQkKCQkJCQkJCX0KCQkJCQkJCWVjaG8gJyk8L3A+JzsKCQkJCQkJCWVjaG8gJzwvZGl2Pic7CgkJCQkJCX0KCQkJCQkJPz4KCgkJCQkJCTwhLS0gQWRkIGxpbmtzIHRvIGFkZCB0aGlzIHBvc3QgdG8gb25lIG9mIGEgaGFuZGZ1bCBvZiBzZXJ2aWNlcy4gLS0+CgkJCQkJCTxwIGNsYXNzPSJmb290bm90ZSBmYXZpY29ucyIgYWxpZ249ImNlbnRlciI+CgkJCQkJCQk8YSBocmVmPSI8P3BocCBlY2hvICRpdGVtLT5hZGRfdG9fYmxpbmtsaXN0KCk7ID8+IiB0aXRsZT0iQWRkIHBvc3QgdG8gQmxpbmtsaXN0Ij48aW1nIHNyYz0iLi9mb3JfdGhlX2RlbW8vZmF2aWNvbnMvYmxpbmtsaXN0LnBuZyIgYWx0PSJCbGlua2xpc3QiIC8+PC9hPgoJCQkJCQkJPGEgaHJlZj0iPD9waHAgZWNobyAkaXRlbS0+YWRkX3RvX2Jsb2dtYXJrcygpOyA/PiIgdGl0bGU9IkFkZCBwb3N0IHRvIEJsb2dtYXJrcyI+PGltZyBzcmM9Ii4vZm9yX3RoZV9kZW1vL2Zhdmljb25zL2Jsb2dtYXJrcy5wbmciIGFsdD0iQmxvZ21hcmtzIiAvPjwvYT4KCQkJCQkJCTxhIGhyZWY9Ijw/cGhwIGVjaG8gJGl0ZW0tPmFkZF90b19kZWxpY2lvdXMoKTsgPz4iIHRpdGxlPSJBZGQgcG9zdCB0byBkZWwuaWNpby51cyI+PGltZyBzcmM9Ii4vZm9yX3RoZV9kZW1vL2Zhdmljb25zL2RlbGljaW91cy5wbmciIGFsdD0iZGVsLmljaW8udXMiIC8+PC9hPgoJCQkJCQkJPGEgaHJlZj0iPD9waHAgZWNobyAkaXRlbS0+YWRkX3RvX2RpZ2coKTsgPz4iIHRpdGxlPSJEaWdnIHRoaXMhIj48aW1nIHNyYz0iLi9mb3JfdGhlX2RlbW8vZmF2aWNvbnMvZGlnZy5wbmciIGFsdD0iRGlnZyIgLz48L2E+CgkJCQkJCQk8YSBocmVmPSI8P3BocCBlY2hvICRpdGVtLT5hZGRfdG9fbWFnbm9saWEoKTsgPz4iIHRpdGxlPSJBZGQgcG9zdCB0byBNYS5nbm9saWEiPjxpbWcgc3JjPSIuL2Zvcl90aGVfZGVtby9mYXZpY29ucy9tYWdub2xpYS5wbmciIGFsdD0iTWEuZ25vbGlhIiAvPjwvYT4KCQkJCQkJCTxhIGhyZWY9Ijw/cGhwIGVjaG8gJGl0ZW0tPmFkZF90b19teXdlYjIwKCk7ID8+IiB0aXRsZT0iQWRkIHBvc3QgdG8gTXkgV2ViIDIuMCI+PGltZyBzcmM9Ii4vZm9yX3RoZV9kZW1vL2Zhdmljb25zL215d2ViMi5wbmciIGFsdD0iTXkgV2ViIDIuMCIgLz48L2E+CgkJCQkJCQk8YSBocmVmPSI8P3BocCBlY2hvICRpdGVtLT5hZGRfdG9fbmV3c3ZpbmUoKTsgPz4iIHRpdGxlPSJBZGQgcG9zdCB0byBOZXdzdmluZSI+PGltZyBzcmM9Ii4vZm9yX3RoZV9kZW1vL2Zhdmljb25zL25ld3N2aW5lLnBuZyIgYWx0PSJOZXdzdmluZSIgLz48L2E+CgkJCQkJCQk8YSBocmVmPSI8P3BocCBlY2hvICRpdGVtLT5hZGRfdG9fcmVkZGl0KCk7ID8+IiB0aXRsZT0iQWRkIHBvc3QgdG8gUmVkZGl0Ij48aW1nIHNyYz0iLi9mb3JfdGhlX2RlbW8vZmF2aWNvbnMvcmVkZGl0LnBuZyIgYWx0PSJSZWRkaXQiIC8+PC9hPgoJCQkJCQkJPGEgaHJlZj0iPD9waHAgZWNobyAkaXRlbS0+YWRkX3RvX3NlZ25hbG8oKTsgPz4iIHRpdGxlPSJBZGQgcG9zdCB0byBTZWduYWxvIj48aW1nIHNyYz0iLi9mb3JfdGhlX2RlbW8vZmF2aWNvbnMvc2VnbmFsby5wbmciIGFsdD0iU2VnbmFsbyIgLz48L2E+CgkJCQkJCQk8YSBocmVmPSI8P3BocCBlY2hvICRpdGVtLT5hZGRfdG9fc2ltcHkoKTsgPz4iIHRpdGxlPSJBZGQgcG9zdCB0byBTaW1weSI+PGltZyBzcmM9Ii4vZm9yX3RoZV9kZW1vL2Zhdmljb25zL3NpbXB5LnBuZyIgYWx0PSJTaW1weSIgLz48L2E+CgkJCQkJCQk8YSBocmVmPSI8P3BocCBlY2hvICRpdGVtLT5hZGRfdG9fc3B1cmwoKTsgPz4iIHRpdGxlPSJBZGQgcG9zdCB0byBTcHVybCI+PGltZyBzcmM9Ii4vZm9yX3RoZV9kZW1vL2Zhdmljb25zL3NwdXJsLnBuZyIgYWx0PSJTcHVybCIgLz48L2E+CgkJCQkJCQk8YSBocmVmPSI8P3BocCBlY2hvICRpdGVtLT5hZGRfdG9fd2lzdHMoKTsgPz4iIHRpdGxlPSJBZGQgcG9zdCB0byBXaXN0cyI+PGltZyBzcmM9Ii4vZm9yX3RoZV9kZW1vL2Zhdmljb25zL3dpc3RzLnBuZyIgYWx0PSJXaXN0cyIgLz48L2E+CgkJCQkJCQk8YSBocmVmPSI8P3BocCBlY2hvICRpdGVtLT5zZWFyY2hfdGVjaG5vcmF0aSgpOyA/PiIgdGl0bGU9IldobydzIGxpbmtpbmcgdG8gdGhpcyBwb3N0PyI+PGltZyBzcmM9Ii4vZm9yX3RoZV9kZW1vL2Zhdmljb25zL3RlY2hub3JhdGkucG5nIiBhbHQ9IlRlY2hub3JhdGkiIC8+PC9hPgoJCQkJCQk8L3A+CgoJCQkJCTwvZGl2PgoKCQkJCTwhLS0gU3RvcCBsb29waW5nIHRocm91Z2ggZWFjaCBpdGVtIG9uY2Ugd2UndmUgZ29uZSB0aHJvdWdoIGFsbCBvZiB0aGVtLiAtLT4KCQkJCTw/cGhwIGVuZGZvcmVhY2g7ID8+CgoJCQk8IS0tIEZyb20gaGVyZSBvbiwgd2UncmUgbm8gbG9uZ2VyIHVzaW5nIGRhdGEgZnJvbSB0aGUgZmVlZC4gLS0+CgkJCTw/cGhwIGVuZGlmOyA/PgoKCQk8L2Rpdj4KCgkJPGRpdj4KCQkJPCEtLSBEaXNwbGF5IGhvdyBmYXN0IHRoZSBwYWdlIHdhcyByZW5kZXJlZC4gLS0+CgkJCTxwIGNsYXNzPSJmb290bm90ZSI+UGFnZSBwcm9jZXNzZWQgaW4gPD9waHAgJG10aW1lID0gZXhwbG9kZSgnICcsIG1pY3JvdGltZSgpKTsgZWNobyByb3VuZCgkbXRpbWVbMF0gKyAkbXRpbWVbMV0gLSAkc3RhcnR0aW1lLCAzKTsgPz4gc2Vjb25kcy48L3A+CgoJCQk8IS0tIERpc3BsYXkgdGhlIHZlcnNpb24gb2YgU2ltcGxlUGllIGJlaW5nIGxvYWRlZC4gLS0+CgkJCTxwIGNsYXNzPSJmb290bm90ZSI+UG93ZXJlZCBieSA8YSBocmVmPSI8P3BocCBlY2hvIFNJTVBMRVBJRV9VUkw7ID8+Ij48P3BocCBlY2hvIFNJTVBMRVBJRV9OQU1FIC4gJyAnIC4gU0lNUExFUElFX1ZFUlNJT04gLiAnLCBCdWlsZCAnIC4gU0lNUExFUElFX0JVSUxEOyA/PjwvYT4uICBSdW4gdGhlIDxhIGhyZWY9Ii4uL2NvbXBhdGliaWxpdHlfdGVzdC9zcF9jb21wYXRpYmlsaXR5X3Rlc3QucGhwIj5TaW1wbGVQaWUgQ29tcGF0aWJpbGl0eSBUZXN0PC9hPi4gIFNpbXBsZVBpZSBpcyAmY29weTsgMjAwNCZuZGFzaDs8P3BocCBlY2hvIGRhdGUoJ1knKTsgPz4sIFJ5YW4gUGFybWFuIGFuZCBHZW9mZnJleSBTbmVkZG9uLCBhbmQgbGljZW5zZWQgdW5kZXIgdGhlIDxhIGhyZWY9Imh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwIj5CU0QgTGljZW5zZTwvYT4uPC9wPgoJCTwvZGl2PgoKCTwvZGl2PgoKPC9kaXY+Cgo8L2JvZHk+CjwvaHRtbD4K]]></data>
	</file>
	<file>
	  <filename>/libs/DEV/1.1.3/demo/minimalistic.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmZ1bmN0aW9uIG1pY3JvdGltZV9mbG9hdCgpCnsKCWlmICh2ZXJzaW9uX2NvbXBhcmUocGhwdmVyc2lvbigpLCAnNS4wLjAnLCAnPj0nKSkKCXsKCQlyZXR1cm4gbWljcm90aW1lKHRydWUpOwoJfQoJZWxzZQoJewoJCWxpc3QoJHVzZWMsICRzZWMpID0gZXhwbG9kZSgnICcsIG1pY3JvdGltZSgpKTsKCQlyZXR1cm4gKChmbG9hdCkgJHVzZWMgKyAoZmxvYXQpICRzZWMpOwoJfQp9Cgokc3RhcnQgPSBtaWNyb3RpbWVfZmxvYXQoKTsKCmluY2x1ZGUoJy4uL3NpbXBsZXBpZS5pbmMnKTsKCi8vIFBhcnNlIGl0CiRmZWVkID0gbmV3IFNpbXBsZVBpZSgpOwppZiAoIWVtcHR5KCRfR0VUWydmZWVkJ10pKQp7CglpZiAoZ2V0X21hZ2ljX3F1b3Rlc19ncGMoKSkKCXsKCQkkX0dFVFsnZmVlZCddID0gc3RyaXBzbGFzaGVzKCRfR0VUWydmZWVkJ10pOwoJfQoJJGZlZWQtPnNldF9mZWVkX3VybCgkX0dFVFsnZmVlZCddKTsKCSRmZWVkLT5pbml0KCk7Cn0KJGZlZWQtPmhhbmRsZV9jb250ZW50X3R5cGUoKTsKCj8+PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQiPgoKPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgo8aGVhZD4KPHRpdGxlPjw/cGhwIGVjaG8gKGVtcHR5KCRfR0VUWydmZWVkJ10pKSA/ICdTaW1wbGVQaWUnIDogJ1NpbXBsZVBpZTogJyAuICRmZWVkLT5nZXRfdGl0bGUoKTsgPz48L3RpdGxlPgoKPCEtLSBNRVRBIEhUVFAtRVFVSVYgLS0+CjxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PTw/cGhwIGVjaG8gKCRmZWVkLT5nZXRfZW5jb2RpbmcoKSkgPyAkZmVlZC0+Z2V0X2VuY29kaW5nKCkgOiAnVVRGLTgnOyA/PiIgLz4KPG1ldGEgaHR0cC1lcXVpdj0iaW1hZ2V0b29sYmFyIiBjb250ZW50PSJmYWxzZSIgLz4KCjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Cmh0bWwsIGJvZHkgewoJaGVpZ2h0OjEwMCU7CgltYXJnaW46MDsKCXBhZGRpbmc6MDsKfQoKaDEgewoJYmFja2dyb3VuZC1jb2xvcjojMzMzOwoJY29sb3I6I2ZmZjsKCWZvbnQtc2l6ZTozZW07CgltYXJnaW46MDsKCXBhZGRpbmc6NXB4IDE1cHg7Cgl0ZXh0LWFsaWduOmNlbnRlcjsKfQoKZGl2I2Zvb3RlciB7CglwYWRkaW5nOjVweCAwOwp9CgpkaXYjZm9vdGVyLApkaXYjZm9vdGVyIGEgewoJdGV4dC1hbGlnbjpjZW50ZXI7Cglmb250LXNpemU6MC43ZW07Cn0KCmRpdiNmb290ZXIgYSB7Cgl0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lOwp9Cgpjb2RlIHsKCWJhY2tncm91bmQtY29sb3I6I2YzZjNmZjsKCWNvbG9yOiMwMDA7Cn0KCnByZSB7CgliYWNrZ3JvdW5kLWNvbG9yOiNmM2YzZmY7Cgljb2xvcjojMDAwMDgwOwoJYm9yZGVyOjFweCBkb3R0ZWQgIzAwMDA4MDsKCXBhZGRpbmc6M3B4IDVweDsKfQoKZm9ybSB7CgltYXJnaW46MDsKCXBhZGRpbmc6MDsKfQoKZGl2LmNodW5rIHsKCWJvcmRlci1ib3R0b206MXB4IHNvbGlkICNjY2M7Cn0KCmZvcm0jc3BfZm9ybSB7Cgl0ZXh0LWFsaWduOmNlbnRlcjsKCW1hcmdpbjowOwoJcGFkZGluZzowOwp9Cgpmb3JtI3NwX2Zvcm0gaW5wdXQudGV4dCB7Cgl3aWR0aDo4NSU7Cn0KPC9zdHlsZT4KCjwvaGVhZD4KCjxib2R5PgoJPGgxPjw/cGhwIGVjaG8gKGVtcHR5KCRfR0VUWydmZWVkJ10pKSA/ICdTaW1wbGVQaWUnIDogJ1NpbXBsZVBpZTogJyAuICRmZWVkLT5nZXRfdGl0bGUoKTsgPz48L2gxPgoKCTxmb3JtIGFjdGlvbj0iIiBtZXRob2Q9ImdldCIgbmFtZT0ic3BfZm9ybSIgaWQ9InNwX2Zvcm0iPgoJCTxwPjxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJmZWVkIiB2YWx1ZT0iPD9waHAgZWNobyAoJGZlZWQtPnN1YnNjcmliZV91cmwoKSkgPyBodG1sc3BlY2lhbGNoYXJzKCRmZWVkLT5zdWJzY3JpYmVfdXJsKCkpIDogJ2h0dHA6Ly8nOyA/PiIgY2xhc3M9InRleHQiIGlkPSJmZWVkX2lucHV0IiAvPiZuYnNwOzxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJSZWFkIiBjbGFzcz0iYnV0dG9uIiAvPjwvcD4KCTwvZm9ybT4KCgk8ZGl2IGlkPSJzcF9yZXN1bHRzIj4KCQk8P3BocCBpZiAoJGZlZWQtPmRhdGEpOiA/PgoJCQk8P3BocCAkaXRlbXMgPSAkZmVlZC0+Z2V0X2l0ZW1zKCk7ID8+CgkJCTxwIGFsaWduPSJjZW50ZXIiPjxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiNmZmM7Ij5EaXNwbGF5aW5nIDw/cGhwIGVjaG8gJGZlZWQtPmdldF9pdGVtX3F1YW50aXR5KCk7ID8+IG1vc3QgcmVjZW50IGVudHJpZXMuPC9zcGFuPjwvcD4KCQkJPD9waHAgZm9yZWFjaCgkaXRlbXMgYXMgJGl0ZW0pOiA/PgoJCQkJPGRpdiBjbGFzcz0iY2h1bmsiIHN0eWxlPSJwYWRkaW5nOjAgNXB4OyI+CgkJCQkJPGg0PjxhIGhyZWY9Ijw/cGhwIGVjaG8gJGl0ZW0tPmdldF9wZXJtYWxpbmsoKTsgPz4iPjw/cGhwIGVjaG8gJGl0ZW0tPmdldF90aXRsZSgpOyA/PjwvYT4gPD9waHAgZWNobyAkaXRlbS0+Z2V0X2RhdGUoJ2ogTSBZJyk7ID8+PC9oND4KCQkJCQk8P3BocCBlY2hvICRpdGVtLT5nZXRfY29udGVudCgpOyA/PgoJCQkJCTw/cGhwCgkJCQkJaWYgKCRlbmNsb3N1cmUgPSAkaXRlbS0+Z2V0X2VuY2xvc3VyZSgwKSkKCQkJCQkJZWNobyAnPHA+PGEgaHJlZj0iJyAuICRlbmNsb3N1cmUtPmdldF9saW5rKCkgLiAnIiBjbGFzcz0iZG93bmxvYWQiPjxpbWcgc3JjPSIuL2Zvcl90aGVfZGVtby9taW5pX3BvZGNhc3QucG5nIiBhbHQ9IlBvZGNhc3QiIHRpdGxlPSJEb3dubG9hZCB0aGUgUG9kY2FzdCIgYm9yZGVyPSIwIiAvPjwvYT48L3A+JzsKCQkJCQk/PgoJCQkJPC9kaXY+CgkJCTw/cGhwIGVuZGZvcmVhY2g7ID8+CgkJCTwvZGl2PgoJCTw/cGhwIGVuZGlmOyA/PgoJPC9kaXY+CgoJPGRpdiBpZD0iZm9vdGVyIj4KCQlQb3dlcmVkIGJ5IDw/cGhwIGVjaG8gU0lNUExFUElFX0xJTktCQUNLOyA/PiwgYSBwcm9kdWN0IG9mIDxhIGhyZWY9Imh0dHA6Ly93d3cuc2t5enl4LmNvbSI+U2t5enl4IFRlY2hub2xvZ2llczwvYT4uPGJyIC8+CgkJUGFnZSBjcmVhdGVkIGluIDw/cGhwIGVjaG8gcm91bmQobWljcm90aW1lX2Zsb2F0KCktJHN0YXJ0LCAzKTsgPz4gc2Vjb25kcy4KCTwvZGl2Pgo8L2JvZHk+CjwvaHRtbD4K]]></data>
	</file>
	<file>
	  <filename>/libs/DEV/1.1.3/demo/multifeeds.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCk1VTFRJRkVFRFMgVEVTVCBQQUdFCgpOb3RoaW5nIHRvbyBleGNpdGluZyBoZXJlLiAgSnVzdCBhIHNhbXBsZSBwYWdlIHRoYXQgZGVtb3MgaW50ZWdyYXRlZCAKTXVsdGlmZWVkcyBzdXBwb3J0IGFzIHdlbGwgYXMgY2FjaGVkIGZhdmljb25zIGFuZCBwZXJoYXBzIGEgZmV3IG90aGVyIAp0aGluZ3MuCgpMb3RzIG9mIHRoaXMgY29kZSBpcyBjb21tZW50ZWQgdG8gaGVscCBleHBsYWluIHNvbWUgb2YgdGhlIG5ldyBzdHVmZi4gIApDb2RlIHdhcyB0ZXN0ZWQgaW4gUEhQIDUuMi4yLCBidXQgKnNob3VsZCogYWxzbyB3b3JrIHdpdGggZWFybGllciAKdmVyc2lvbnMgb2YgUEhQLCBhcyBzdXBwb3J0ZWQgYnkgU2ltcGxlUGllIChQSFAgNC4xKS4KCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKLy8gSW5jbHVkZSB0aGUgU2ltcGxlUGllIGxpYnJhcnksIGFuZCB0aGUgb25lIHRoYXQgaGFuZGxlcyBpbnRlcm5hdGlvbmFsaXplZCBkb21haW4gbmFtZXMuCnJlcXVpcmVfb25jZSgnLi4vc2ltcGxlcGllLmluYycpOwpyZXF1aXJlX29uY2UoJy4uL2lkbi9pZG5hX2NvbnZlcnQuY2xhc3MucGhwJyk7CgovLyBJbml0aWFsaXplIHNvbWUgZmVlZHMgZm9yIHVzZS4KJGZlZWQgPSBuZXcgU2ltcGxlUGllKCk7CiRmZWVkLT5zZXRfZmVlZF91cmwoYXJyYXkoCgknaHR0cDovL3Jzcy5uZXdzLnlhaG9vLmNvbS9yc3MvdG9wc3RvcmllcycsCgknaHR0cDovL25ld3MuZ29vZ2xlLmNvbS8/b3V0cHV0PWF0b20nLAoJJ2h0dHA6Ly9yc3MuY25uLmNvbS9yc3MvY25uX3RvcHN0b3JpZXMucnNzJwopKTsKCi8vIFdoZW4gd2Ugc2V0IHRoZXNlLCB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBoYW5kbGVyX2ltYWdlLnBocCBmaWxlIGlzIGFsc28gdHJ5aW5nIHRvIHJlYWQgZnJvbSB0aGUgc2FtZSBjYWNoZSBkaXJlY3RvcnkgdGhhdCB3ZSBhcmUuCiRmZWVkLT5zZXRfZmF2aWNvbl9oYW5kbGVyKCcuL2hhbmRsZXJfaW1hZ2UucGhwJyk7CiRmZWVkLT5zZXRfaW1hZ2VfaGFuZGxlcignLi9oYW5kbGVyX2ltYWdlLnBocCcpOwoKLy8gSW5pdGlhbGl6ZSB0aGUgZmVlZC4KJGZlZWQtPmluaXQoKTsKCi8vIE1ha2Ugc3VyZSB0aGUgcGFnZSBpcyBiZWluZyBzZXJ2ZWQgd2l0aCB0aGUgVVRGLTggaGVhZGVycy4KJGZlZWQtPmhhbmRsZV9jb250ZW50X3R5cGUoKTsKCi8vIEJlZ2luIHRoZSAoWClIVE1MIHBhZ2UuCj8+PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTiIKICAgICAgICAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCI+CjxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiB4bWw6bGFuZz0iZW4iIGxhbmc9ImVuIj4JCjxoZWFkPgoJPHRpdGxlPk11bHRpZmVlZHMgVGVzdCBwYWdlPC90aXRsZT4KCTxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vZGVtby9mb3JfdGhlX2RlbW8vc2ltcGxlcGllLmNzcyIgdHlwZT0idGV4dC9jc3MiIG1lZGlhPSJzY3JlZW4iIHRpdGxlPSJTaW1wbGVQaWUgU3R5bGVzIiBjaGFyc2V0PSJ1dGYtOCIgLz4KCTxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CglkaXYjc2l0ZSB7CgkJd2lkdGg6NjAwcHg7Cgl9CglzcGFuLmZvb3Rub3RlIHsKCQl3aGl0ZS1zcGFjZTpub3dyYXA7Cgl9CgloMSB7CgkJbGluZS1oZWlnaHQ6MS40ZW07Cgl9CgloNCB7CgkJcGFkZGluZy1sZWZ0OjIwcHg7CgkJYmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDsKCQliYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7CgkJYmFja2dyb3VuZC1wb3NpdGlvbjowIDFweDsKCX0KCS5jbGVhckJvdGggewoJCWNsZWFyOmJvdGg7Cgl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5Pgo8ZGl2IGlkPSJzaXRlIj4KCgk8P3BocCBpZiAoJGZlZWQtPmVycm9yKTogPz4KCQk8cD48Pz0kZmVlZC0+ZXJyb3IoKT8+PC9wPgoJPD9waHAgZW5kaWYgPz4KCgk8ZGl2IGNsYXNzPSJjaHVuayI+CgkJPGgxPlF1aWNrLW4tRGlydHkgTXVsdGlmZWVkcyBEZW1vPC9hPjwvaDE+Cgk8L2Rpdj4KCgk8P3BocAoJLy8gTGV0J3MgbG9vcCB0aHJvdWdoIGVhY2ggaXRlbSBpbiB0aGUgZmVlZC4KCWZvcmVhY2goJGZlZWQtPmdldF9pdGVtcygpIGFzICRpdGVtKToKCgkvLyBMZXQncyBnaXZlIG91cnNlbHZlcyBhIHJlZmVyZW5jZSB0byB0aGUgcGFyZW50ICRmZWVkIG9iamVjdCBmb3IgdGhpcyBwYXJ0aWN1bGFyIGl0ZW0uCgkkZmVlZCA9ICRpdGVtLT5nZXRfZmVlZCgpOwoJPz4KCgkJPGRpdiBjbGFzcz0iY2h1bmsiPgoJCQk8aDQgc3R5bGU9ImJhY2tncm91bmQtaW1hZ2U6dXJsKDw/cGhwIGVjaG8gJGZlZWQtPmdldF9mYXZpY29uKCk7ID8+KTsiPjxhIGhyZWY9Ijw/cGhwIGVjaG8gJGl0ZW0tPmdldF9wZXJtYWxpbmsoKTsgPz4iPjw/cGhwIGVjaG8gaHRtbF9lbnRpdHlfZGVjb2RlKCRpdGVtLT5nZXRfdGl0bGUoKSwgRU5UX1FVT1RFUywgJ1VURi04Jyk7ID8+PC9hPjwvaDQ+CgoJCQk8IS0tIGdldF9jb250ZW50KCkgcHJlZmVycyBmdWxsIGNvbnRlbnQgb3ZlciBzdW1tYXJpZXMgLS0+CgkJCTw/cGhwIGVjaG8gJGl0ZW0tPmdldF9jb250ZW50KCk7ID8+CgoJCQk8P3BocCBpZiAoJGVuY2xvc3VyZSA9ICRpdGVtLT5nZXRfZW5jbG9zdXJlKCkpOiA/PgoJCQkJPGRpdj4KCQkJCTw/cGhwIGVjaG8gJGVuY2xvc3VyZS0+bmF0aXZlX2VtYmVkKGFycmF5KAoJCQkJCS8vIE5ldyAnbWVkaWFwbGF5ZXInIGF0dHJpYnV0ZSBzaG93cyBvZmYgRmxhc2gtYmFzZWQgTVAzIGFuZCBGTFYgcGxheWJhY2suCgkJCQkJJ21lZGlhcGxheWVyJyA9PiAnLi4vZGVtby9mb3JfdGhlX2RlbW8vbWVkaWFwbGF5ZXIuc3dmJwoJCQkJKSk7ID8+CgkJCQk8L2Rpdj4KCQkJPD9waHAgZW5kaWY7ID8+CgoJCQk8cCBjbGFzcz0iZm9vdG5vdGUiPlNvdXJjZTogPGEgaHJlZj0iPD9waHAgZWNobyAkZmVlZC0+Z2V0X3Blcm1hbGluaygpOyA/PiI+PD9waHAgZWNobyAkZmVlZC0+Z2V0X3RpdGxlKCk7ID8+PC9hPiB8IDw/cGhwIGVjaG8gJGl0ZW0tPmdldF9kYXRlKCdqIE0gWSB8IGc6aSBhJyk7ID8+PC9wPgoJCTwvZGl2PgoKCTw/cGhwIGVuZGZvcmVhY2ggPz4KCgk8cCBjbGFzcz0iZm9vdG5vdGUiPlRoaXMgaXMgYSB0ZXN0IG9mIHRoZSBlbWVyZ2VuY3kgYnJvYWRjYXN0IHN5c3RlbS4gIFRoaXMgaXMgb25seSBhIHRlc3QmaGVsbGlwOyBiZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVwITwvcD4KCjwvZGl2Pgo8L2JvZHk+CjwvaHRtbD4=]]></data>
	</file>
	<file>
	  <filename>/libs/DEV/1.1.3/demo/test.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaW5jbHVkZV9vbmNlKCcuLi9zaW1wbGVwaWUuaW5jJyk7CmluY2x1ZGVfb25jZSgnLi4vaWRuL2lkbmFfY29udmVydC5jbGFzcy5waHAnKTsKCi8vIFBhcnNlIGl0CiRmZWVkID0gbmV3IFNpbXBsZVBpZSgpOwppZiAoaXNzZXQoJF9HRVRbJ2ZlZWQnXSkgJiYgJF9HRVRbJ2ZlZWQnXSAhPT0gJycpCnsKCWlmIChnZXRfbWFnaWNfcXVvdGVzX2dwYygpKQoJewoJCSRfR0VUWydmZWVkJ10gPSBzdHJpcHNsYXNoZXMoJF9HRVRbJ2ZlZWQnXSk7Cgl9CgkkZmVlZC0+c2V0X2ZlZWRfdXJsKCRfR0VUWydmZWVkJ10pOwoJJGZlZWQtPmVuYWJsZV9jYWNoZShmYWxzZSk7Cgkkc3RhcnR0aW1lID0gZXhwbG9kZSgnICcsIG1pY3JvdGltZSgpKTsKCSRzdGFydHRpbWUgPSAkc3RhcnR0aW1lWzFdICsgJHN0YXJ0dGltZVswXTsKCSRmZWVkLT5pbml0KCk7CgkkZW5kdGltZSA9IGV4cGxvZGUoJyAnLCBtaWNyb3RpbWUoKSk7CgkkZW5kdGltZSA9ICRlbmR0aW1lWzFdICsgJGVuZHRpbWVbMF07CgkkdGltZSA9ICRlbmR0aW1lIC0gJHN0YXJ0dGltZTsKfQplbHNlCnsKCSR0aW1lID0gJ251bGwnOwp9CgokZmVlZC0+aGFuZGxlX2NvbnRlbnRfdHlwZSgpOwoKPz4KPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIj4KPHRpdGxlPlNpbXBsZVBpZSBUZXN0PC90aXRsZT4KPHByZT4KPD9waHAKCi8vIG1lbW9yeV9nZXRfcGVha191c2FnZSgpIG9ubHkgZXhpc3RzIG9uIFBIUCA1LjIgYW5kIGhpZ2hlciBpZiBQSFAgaXMgY29tcGlsZWQgd2l0aCB0aGUgLS1lbmFibGUtbWVtb3J5LWxpbWl0IGNvbmZpZ3VyYXRpb24gb3B0aW9uIG9yIG9uIFBIUCA1LjIuMSBhbmQgaGlnaGVyICh3aGljaCBydW5zIGFzIGlmIC0tZW5hYmxlLW1lbW9yeS1saW1pdCB3YXMgb24sIHdpdGggbm8gb3B0aW9uKQppZiAoZnVuY3Rpb25fZXhpc3RzKCdtZW1vcnlfZ2V0X3BlYWtfdXNhZ2UnKSkKewoJdmFyX2R1bXAoJHRpbWUsIG1lbW9yeV9nZXRfdXNhZ2UoKSwgbWVtb3J5X2dldF9wZWFrX3VzYWdlKCkpOwp9Ci8vIG1lbW9yeV9nZXRfdXNhZ2UoKSBvbmx5IGV4aXN0cyBpZiBQSFAgaXMgY29tcGlsZWQgd2l0aCB0aGUgLS1lbmFibGUtbWVtb3J5LWxpbWl0IGNvbmZpZ3VyYXRpb24gb3B0aW9uIG9yIG9uIFBIUCA1LjIuMSBhbmQgaGlnaGVyICh3aGljaCBydW5zIGFzIGlmIC0tZW5hYmxlLW1lbW9yeS1saW1pdCB3YXMgb24sIHdpdGggbm8gb3B0aW9uKQplbHNlIGlmIChmdW5jdGlvbl9leGlzdHMoJ21lbW9yeV9nZXRfdXNhZ2UnKSkKewoJdmFyX2R1bXAoJHRpbWUsIG1lbW9yeV9nZXRfdXNhZ2UoKSk7Cn0KZWxzZQp7Cgl2YXJfZHVtcCgkdGltZSk7Cn0KCi8vIE91dHB1dCBidWZmZXIKZnVuY3Rpb24gY2FsbGFibGVfaHRtbHNwZWNpYWxjaGFycygkc3RyaW5nKQp7CglyZXR1cm4gaHRtbHNwZWNpYWxjaGFycygkc3RyaW5nKTsKfQpvYl9zdGFydCgnY2FsbGFibGVfaHRtbHNwZWNpYWxjaGFycycpOwoKLy8gT3V0cHV0CnByaW50X3IoJGZlZWQpOwpvYl9lbmRfZmx1c2goKTsKCj8+CjwvcHJlPg==]]></data>
	</file>
	<file>
	  <filename>/libs/DEV/1.1.3/idn/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/libs/DEV/1.1.3/idn/idna_convert.class.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLy8ge3t7IGxpY2Vuc2UKCi8qIHZpbTogc2V0IGV4cGFuZHRhYiB0YWJzdG9wPTQgc2hpZnR3aWR0aD00IHNvZnR0YWJzdG9wPTQgZm9sZG1ldGhvZD1tYXJrZXI6ICovCi8vCi8vICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwovLyB8IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IHwKLy8gfCBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyAgICAgICB8Ci8vIHwgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgfAovLyB8IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uICAgICAgICAgICAgICAgICAgICAgIHwKLy8gfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci8vIHwgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCAgfAovLyB8IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgICAgICAgICAgIHwKLy8gfCBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSAgICB8Ci8vIHwgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4gICAgICAgICAgICAgICAgICAgICAgfAovLyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLy8gfCBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljICAgICB8Ci8vIHwgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSAgfAovLyB8IEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3IHwKLy8gfCBVU0EuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci8vICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwovLwoKLy8gfX19CgovKioKICogRW5jb2RlL2RlY29kZSBJbnRlcm5hdGlvbmFsaXplZCBEb21haW4gTmFtZXMuCiAqCiAqIFRoZSBjbGFzcyBhbGxvd3MgdG8gY29udmVydCBpbnRlcm5hdGlvbmFsaXplZCBkb21haW4gbmFtZXMKICogKHNlZSBSRkMgMzQ5MCBmb3IgZGV0YWlscykgYXMgdGhleSBjYW4gYmUgdXNlZCB3aXRoIHZhcmlvdXMgcmVnaXN0cmllcyB3b3JsZHdpZGUKICogdG8gYmUgdHJhbnNsYXRlZCBiZXR3ZWVuIHRoZWlyIG9yaWdpbmFsIChsb2NhbGl6ZWQpIGZvcm0gYW5kIHRoZWlyIGVuY29kZWQgZm9ybQogKiBhcyBpdCB3aWxsIGJlIHVzZWQgaW4gdGhlIEROUyAoRG9tYWluIE5hbWUgU3lzdGVtKS4KICoKICogVGhlIGNsYXNzIHByb3ZpZGVzIHR3byBwdWJsaWMgbWV0aG9kcywgZW5jb2RlKCkgYW5kIGRlY29kZSgpLCB3aGljaCBkbyBleGFjdGx5CiAqIHdoYXQgeW91IHdvdWxkIGV4cGVjdCB0aGVtIHRvIGRvLiBZb3UgYXJlIGFsbG93ZWQgdG8gdXNlIGNvbXBsZXRlIGRvbWFpbiBuYW1lcywKICogc2ltcGxlIHN0cmluZ3MgYW5kIGNvbXBsZXRlIGVtYWlsIGFkZHJlc3NlcyBhcyB3ZWxsLiBUaGF0IG1lYW5zLCB0aGF0IHlvdSBtaWdodAogKiB1c2UgYW55IG9mIHRoZSBmb2xsb3dpbmcgbm90YXRpb25zOgogKgogKiAtIHd3dy5uw7ZyZ2xlci5jb20KICogLSB4bi0tbnJnbGVyLXd4YQogKiAtIHhuLS1icnNlLTVxYS54bi0ta25yei0xcmEuaW5mbwogKgogKiBVbmljb2RlIGlucHV0IG1pZ2h0IGJlIGdpdmVuIGFzIGVpdGhlciBVVEYtOCBzdHJpbmcsIFVDUy00IHN0cmluZyBvciBVQ1MtNAogKiBhcnJheS4gVW5pY29kZSBvdXRwdXQgaXMgYXZhaWxhYmxlIGluIHRoZSBzYW1lIGZvcm1hdHMuCiAqIFlvdSBjYW4gc2VsZWN0IHlvdXIgcHJlZmVycmVkIGZvcm1hdCB2aWEge0BsaW5rIHNldF9wYXJhbXRlcigpfS4KICoKICogQUNFIGlucHV0IGFuZCBvdXRwdXQgaXMgYWx3YXlzIGV4cGVjdGVkIHRvIGJlIEFTQ0lJLgogKgogKiBAYXV0aG9yICBNYXR0aGlhcyBTb21tZXJmZWxkIDxtc29AcGhseWxhYnMuZGU+CiAqIEBjb3B5cmlnaHQgMjAwNC0yMDA3IHBobHlMYWJzIEJlcmxpbiwgaHR0cDovL3BobHlsYWJzLmRlCiAqIEB2ZXJzaW9uIDAuNS4xCiAqCiAqLwpjbGFzcyBpZG5hX2NvbnZlcnQKewogICAgLyoqCiAgICAgKiBIb2xkcyBhbGwgcmVsZXZhbnQgbWFwcGluZyB0YWJsZXMsIGxvYWRlZCBmcm9tIGEgc2VwZXJhdGUgZmlsZSBvbiBjb25zdHJ1Y3QKICAgICAqIFNlZSBSRkMzNDU0IGZvciBkZXRhaWxzCiAgICAgKgogICAgICogQHZhciBhcnJheQogICAgICogQGFjY2VzcyBwcml2YXRlCiAgICAgKi8KICAgIHZhciAkTlAgPSBhcnJheSgpOwoKICAgIC8vIEludGVybmFsIHNldHRpbmdzLCBkbyBub3QgbWVzcyB3aXRoIHRoZW0KICAgIHZhciAkX3B1bnljb2RlX3ByZWZpeCA9ICd4bi0tJzsKICAgIHZhciAkX2ludmFsaWRfdWNzID0gICAgIDB4ODAwMDAwMDA7CiAgICB2YXIgJF9tYXhfdWNzID0gICAgICAgICAweDEwRkZGRjsKICAgIHZhciAkX2Jhc2UgPSAgICAgICAgICAgIDM2OwogICAgdmFyICRfdG1pbiA9ICAgICAgICAgICAgMTsKICAgIHZhciAkX3RtYXggPSAgICAgICAgICAgIDI2OwogICAgdmFyICRfc2tldyA9ICAgICAgICAgICAgMzg7CiAgICB2YXIgJF9kYW1wID0gICAgICAgICAgICA3MDA7CiAgICB2YXIgJF9pbml0aWFsX2JpYXMgPSAgICA3MjsKICAgIHZhciAkX2luaXRpYWxfbiA9ICAgICAgIDB4ODA7CiAgICB2YXIgJF9zYmFzZSA9ICAgICAgICAgICAweEFDMDA7CiAgICB2YXIgJF9sYmFzZSA9ICAgICAgICAgICAweDExMDA7CiAgICB2YXIgJF92YmFzZSA9ICAgICAgICAgICAweDExNjE7CiAgICB2YXIgJF90YmFzZSA9ICAgICAgICAgICAweDExQTc7CiAgICB2YXIgJF9sY291bnQgPSAgICAgICAgICAxOTsKICAgIHZhciAkX3Zjb3VudCA9ICAgICAgICAgIDIxOwogICAgdmFyICRfdGNvdW50ID0gICAgICAgICAgMjg7CiAgICB2YXIgJF9uY291bnQgPSAgICAgICAgICA1ODg7ICAgLy8gX3Zjb3VudCAqIF90Y291bnQKICAgIHZhciAkX3Njb3VudCA9ICAgICAgICAgIDExMTcyOyAvLyBfbGNvdW50ICogX3Rjb3VudCAqIF92Y291bnQKICAgIHZhciAkX2Vycm9yID0gICAgICAgICAgIGZhbHNlOwoKICAgIC8vIFNlZSB7QGxpbmsgc2V0X3BhcmFtdGVyKCl9IGZvciBkZXRhaWxzIG9mIGhvdyB0byBjaGFuZ2UgdGhlIGZvbGxvd2luZwogICAgLy8gc2V0dGluZ3MgZnJvbSB3aXRoaW4geW91ciBzY3JpcHQgLyBhcHBsaWNhdGlvbgogICAgdmFyICRfYXBpX2VuY29kaW5nICAgPSAgJ3V0ZjgnOyAvLyBEZWZhdWx0IGlucHV0IGNoYXJzZXQgaXMgVVRGLTgKICAgIHZhciAkX2FsbG93X292ZXJsb25nID0gIGZhbHNlOyAgLy8gT3ZlcmxvbmcgVVRGLTggZW5jb2RpbmdzIGFyZSBmb3JiaWRkZW4KICAgIHZhciAkX3N0cmljdF9tb2RlICAgID0gIGZhbHNlOyAgLy8gQmVoYXZlIHN0cmljdCBvciBub3QKCiAgICAvLyBUaGUgY29uc3RydWN0b3IKICAgIGZ1bmN0aW9uIGlkbmFfY29udmVydCgkb3B0aW9ucyA9IGZhbHNlKQogICAgewogICAgICAgICR0aGlzLT5zbGFzdCA9ICR0aGlzLT5fc2Jhc2UgKyAkdGhpcy0+X2xjb3VudCAqICR0aGlzLT5fdmNvdW50ICogJHRoaXMtPl90Y291bnQ7CiAgICAgICAgaWYgKGZ1bmN0aW9uX2V4aXN0cygnZmlsZV9nZXRfY29udGVudHMnKSkgewogICAgICAgICAgICAkdGhpcy0+TlAgPSB1bnNlcmlhbGl6ZShmaWxlX2dldF9jb250ZW50cyhkaXJuYW1lKF9fRklMRV9fKS4nL25wZGF0YS5zZXInKSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJHRoaXMtPk5QID0gdW5zZXJpYWxpemUoam9pbignJywgZmlsZShkaXJuYW1lKF9fRklMRV9fKS4nL25wZGF0YS5zZXInKSkpOwogICAgICAgIH0KICAgICAgICAvLyBJZiBwYXJhbWV0ZXJzIGFyZSBnaXZlbiwgcGFzcyB0aGVzZSB0byB0aGUgcmVzcGVjdGl2ZSBtZXRob2QKICAgICAgICBpZiAoaXNfYXJyYXkoJG9wdGlvbnMpKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+c2V0X3BhcmFtZXRlcigkb3B0aW9ucyk7CiAgICAgICAgfQogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIC8qKgogICAgICogU2V0cyBhIG5ldyBvcHRpb24gdmFsdWUuIEF2YWlsYWJsZSBvcHRpb25zIGFuZCB2YWx1ZXM6CiAgICAgKiBbZW5jb2RpbmcgLSBVc2UgZWl0aGVyIFVURi04LCBVQ1M0IGFzIGFycmF5IG9yIFVDUzQgYXMgc3RyaW5nIGFzIGlucHV0ICgndXRmOCcgZm9yIFVURi04LAogICAgICogICAgICAgICAndWNzNF9zdHJpbmcnIGFuZCAndWNzNF9hcnJheScgcmVzcGVjdGl2ZWx5IGZvciBVQ1M0KTsgVGhlIG91dHB1dCBpcyBhbHdheXMgVVRGLThdCiAgICAgKiBbb3ZlcmxvbmcgLSBVbmljb2RlIGRvZXMgbm90IGFsbG93IHVubmVjZXNzYXJpbHkgbG9uZyBlbmNvZGluZ3Mgb2YgY2hhcnMsCiAgICAgKiAgICAgICAgICAgICB0byBhbGxvdyB0aGlzLCBzZXQgdGhpcyBwYXJhbWV0ZXIgdG8gdHJ1ZSwgZWxzZSB0byBmYWxzZTsKICAgICAqICAgICAgICAgICAgIGRlZmF1bHQgaXMgZmFsc2UuXQogICAgICogW3N0cmljdCAtIHRydWU6IHN0cmljdCBtb2RlLCBnb29kIGZvciByZWdpc3RyYXRpb24gcHVycG9zZXMgLSBDYXVzZXMgZXJyb3JzCiAgICAgKiAgICAgICAgICAgb24gZmFpbHVyZXM7IGZhbHNlOiBsb29zZSBtb2RlLCBpZGVhbCBmb3IgIndpbGRsaWZlIiBhcHBsaWNhdGlvbnMKICAgICAqICAgICAgICAgICBieSBzaWxlbnRseSBpZ25vcmluZyBlcnJvcnMgYW5kIHJldHVybmluZyB0aGUgb3JpZ2luYWwgaW5wdXQgaW5zdGVhZAogICAgICoKICAgICAqIEBwYXJhbSAgICBtaXhlZCAgICAgUGFyYW1ldGVyIHRvIHNldCAoc3RyaW5nOiBzaW5nbGUgcGFyYW1ldGVyOyBhcnJheSBvZiBQYXJhbWV0ZXIgPT4gVmFsdWUgcGFpcnMpCiAgICAgKiBAcGFyYW0gICAgc3RyaW5nICAgIFZhbHVlIHRvIHVzZSAoaWYgcGFyYW1ldGVyIDEgaXMgYSBzdHJpbmcpCiAgICAgKiBAcmV0dXJuICAgYm9vbGVhbiAgIHRydWUgb24gc3VjY2VzcywgZmFsc2Ugb3RoZXJ3aXNlCiAgICAgKiBAYWNjZXNzICAgcHVibGljCiAgICAgKi8KICAgIGZ1bmN0aW9uIHNldF9wYXJhbWV0ZXIoJG9wdGlvbiwgJHZhbHVlID0gZmFsc2UpCiAgICB7CiAgICAgICAgaWYgKCFpc19hcnJheSgkb3B0aW9uKSkgewogICAgICAgICAgICAkb3B0aW9uID0gYXJyYXkoJG9wdGlvbiA9PiAkdmFsdWUpOwogICAgICAgIH0KICAgICAgICBmb3JlYWNoICgkb3B0aW9uIGFzICRrID0+ICR2KSB7CiAgICAgICAgICAgIHN3aXRjaCAoJGspIHsKICAgICAgICAgICAgY2FzZSAnZW5jb2RpbmcnOgogICAgICAgICAgICAgICAgc3dpdGNoICgkdikgewogICAgICAgICAgICAgICAgY2FzZSAndXRmOCc6CiAgICAgICAgICAgICAgICBjYXNlICd1Y3M0X3N0cmluZyc6CiAgICAgICAgICAgICAgICBjYXNlICd1Y3M0X2FycmF5JzoKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+X2FwaV9lbmNvZGluZyA9ICR2OwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+X2Vycm9yKCdTZXQgUGFyYW1ldGVyOiBVbmtub3duIHBhcmFtZXRlciAnLiR2LicgZm9yIG9wdGlvbiAnLiRrKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAnb3ZlcmxvbmcnOgogICAgICAgICAgICAgICAgJHRoaXMtPl9hbGxvd19vdmVybG9uZyA9ICgkdikgPyB0cnVlIDogZmFsc2U7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAnc3RyaWN0JzoKICAgICAgICAgICAgICAgICR0aGlzLT5fc3RyaWN0X21vZGUgPSAoJHYpID8gdHJ1ZSA6IGZhbHNlOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAkdGhpcy0+X2Vycm9yKCdTZXQgUGFyYW1ldGVyOiBVbmtub3duIG9wdGlvbiAnLiRrKTsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICAvKioKICAgICAqIERlY29kZSBhIGdpdmVuIEFDRSBkb21haW4gbmFtZQogICAgICogQHBhcmFtICAgIHN0cmluZyAgIERvbWFpbiBuYW1lIChBQ0Ugc3RyaW5nKQogICAgICogW0BwYXJhbSAgICBzdHJpbmcgICBEZXNpcmVkIG91dHB1dCBlbmNvZGluZywgc2VlIHtAbGluayBzZXRfcGFyYW1ldGVyfV0KICAgICAqIEByZXR1cm4gICBzdHJpbmcgICBEZWNvZGVkIERvbWFpbiBuYW1lIChVVEYtOCBvciBVQ1MtNCkKICAgICAqIEBhY2Nlc3MgICBwdWJsaWMKICAgICAqLwogICAgZnVuY3Rpb24gZGVjb2RlKCRpbnB1dCwgJG9uZV90aW1lX2VuY29kaW5nID0gZmFsc2UpCiAgICB7CiAgICAgICAgLy8gT3B0aW9uYWxseSBzZXQKICAgICAgICBpZiAoJG9uZV90aW1lX2VuY29kaW5nKSB7CiAgICAgICAgICAgIHN3aXRjaCAoJG9uZV90aW1lX2VuY29kaW5nKSB7CiAgICAgICAgICAgIGNhc2UgJ3V0ZjgnOgogICAgICAgICAgICBjYXNlICd1Y3M0X3N0cmluZyc6CiAgICAgICAgICAgIGNhc2UgJ3VjczRfYXJyYXknOgogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAkdGhpcy0+X2Vycm9yKCdVbmtub3duIGVuY29kaW5nICcuJG9uZV90aW1lX2VuY29kaW5nKTsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAvLyBNYWtlIHN1cmUgdG8gZHJvcCBhbnkgbmV3bGluZSBjaGFyYWN0ZXJzIGFyb3VuZAogICAgICAgICRpbnB1dCA9IHRyaW0oJGlucHV0KTsKCiAgICAgICAgLy8gTmVnb3RpYXRlIGlucHV0IGFuZCB0cnkgdG8gZGV0ZXJtaW5lLCB3aGV0aGVyIGl0IGlzIGEgcGxhaW4gc3RyaW5nLAogICAgICAgIC8vIGFuIGVtYWlsIGFkZHJlc3Mgb3Igc29tZXRoaW5nIGxpa2UgYSBjb21wbGV0ZSBVUkwKICAgICAgICBpZiAoc3RycG9zKCRpbnB1dCwgJ0AnKSkgeyAvLyBNYXliZSBpdCBpcyBhbiBlbWFpbCBhZGRyZXNzCiAgICAgICAgICAgIC8vIE5vIG5vIGluIHN0cmljdCBtb2RlCiAgICAgICAgICAgIGlmICgkdGhpcy0+X3N0cmljdF9tb2RlKSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+X2Vycm9yKCdPbmx5IHNpbXBsZSBkb21haW4gbmFtZSBwYXJ0cyBjYW4gYmUgaGFuZGxlZCBpbiBzdHJpY3QgbW9kZScpOwogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGxpc3QgKCRlbWFpbF9wcmVmLCAkaW5wdXQpID0gZXhwbG9kZSgnQCcsICRpbnB1dCwgMik7CiAgICAgICAgICAgICRhcnIgPSBleHBsb2RlKCcuJywgJGlucHV0KTsKICAgICAgICAgICAgZm9yZWFjaCAoJGFyciBhcyAkayA9PiAkdikgewogICAgICAgICAgICAgICAgaWYgKHByZWdfbWF0Y2goJyFeJy5wcmVnX3F1b3RlKCR0aGlzLT5fcHVueWNvZGVfcHJlZml4LCAnIScpLichJywgJHYpKSB7CiAgICAgICAgICAgICAgICAgICAgJGNvbnYgPSAkdGhpcy0+X2RlY29kZSgkdik7CiAgICAgICAgICAgICAgICAgICAgaWYgKCRjb252KSAkYXJyWyRrXSA9ICRjb252OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgICRpbnB1dCA9IGpvaW4oJy4nLCAkYXJyKTsKICAgICAgICAgICAgJGFyciA9IGV4cGxvZGUoJy4nLCAkZW1haWxfcHJlZik7CiAgICAgICAgICAgIGZvcmVhY2ggKCRhcnIgYXMgJGsgPT4gJHYpIHsKICAgICAgICAgICAgICAgIGlmIChwcmVnX21hdGNoKCchXicucHJlZ19xdW90ZSgkdGhpcy0+X3B1bnljb2RlX3ByZWZpeCwgJyEnKS4nIScsICR2KSkgewogICAgICAgICAgICAgICAgICAgICRjb252ID0gJHRoaXMtPl9kZWNvZGUoJHYpOwogICAgICAgICAgICAgICAgICAgIGlmICgkY29udikgJGFyclska10gPSAkY29udjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAkZW1haWxfcHJlZiA9IGpvaW4oJy4nLCAkYXJyKTsKICAgICAgICAgICAgJHJldHVybiA9ICRlbWFpbF9wcmVmIC4gJ0AnIC4gJGlucHV0OwogICAgICAgIH0gZWxzZWlmIChwcmVnX21hdGNoKCchWzpcLi9dIScsICRpbnB1dCkpIHsgLy8gT3IgYSBjb21wbGV0ZSBkb21haW4gbmFtZSAod2l0aCBvciB3aXRob3V0IHBhdGhzIC8gcGFyYW1ldGVycykKICAgICAgICAgICAgLy8gTm8gbm8gaW4gc3RyaWN0IG1vZGUKICAgICAgICAgICAgaWYgKCR0aGlzLT5fc3RyaWN0X21vZGUpIHsKICAgICAgICAgICAgICAgICR0aGlzLT5fZXJyb3IoJ09ubHkgc2ltcGxlIGRvbWFpbiBuYW1lIHBhcnRzIGNhbiBiZSBoYW5kbGVkIGluIHN0cmljdCBtb2RlJyk7CiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJHBhcnNlZCA9IHBhcnNlX3VybCgkaW5wdXQpOwogICAgICAgICAgICBpZiAoaXNzZXQoJHBhcnNlZFsnaG9zdCddKSkgewogICAgICAgICAgICAgICAgJGFyciA9IGV4cGxvZGUoJy4nLCAkcGFyc2VkWydob3N0J10pOwogICAgICAgICAgICAgICAgZm9yZWFjaCAoJGFyciBhcyAkayA9PiAkdikgewogICAgICAgICAgICAgICAgICAgICRjb252ID0gJHRoaXMtPl9kZWNvZGUoJHYpOwogICAgICAgICAgICAgICAgICAgIGlmICgkY29udikgJGFyclska10gPSAkY29udjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRwYXJzZWRbJ2hvc3QnXSA9IGpvaW4oJy4nLCAkYXJyKTsKICAgICAgICAgICAgICAgICRyZXR1cm4gPQogICAgICAgICAgICAgICAgICAgICAgICAoZW1wdHkoJHBhcnNlZFsnc2NoZW1lJ10pID8gJycgOiAkcGFyc2VkWydzY2hlbWUnXS4oc3RydG9sb3dlcigkcGFyc2VkWydzY2hlbWUnXSkgPT0gJ21haWx0bycgPyAnOicgOiAnOi8vJykpCiAgICAgICAgICAgICAgICAgICAgICAgIC4oZW1wdHkoJHBhcnNlZFsndXNlciddKSA/ICcnIDogJHBhcnNlZFsndXNlciddLihlbXB0eSgkcGFyc2VkWydwYXNzJ10pID8gJycgOiAnOicuJHBhcnNlZFsncGFzcyddKS4nQCcpCiAgICAgICAgICAgICAgICAgICAgICAgIC4kcGFyc2VkWydob3N0J10KICAgICAgICAgICAgICAgICAgICAgICAgLihlbXB0eSgkcGFyc2VkWydwb3J0J10pID8gJycgOiAnOicuJHBhcnNlZFsncG9ydCddKQogICAgICAgICAgICAgICAgICAgICAgICAuKGVtcHR5KCRwYXJzZWRbJ3BhdGgnXSkgPyAnJyA6ICRwYXJzZWRbJ3BhdGgnXSkKICAgICAgICAgICAgICAgICAgICAgICAgLihlbXB0eSgkcGFyc2VkWydxdWVyeSddKSA/ICcnIDogJz8nLiRwYXJzZWRbJ3F1ZXJ5J10pCiAgICAgICAgICAgICAgICAgICAgICAgIC4oZW1wdHkoJHBhcnNlZFsnZnJhZ21lbnQnXSkgPyAnJyA6ICcjJy4kcGFyc2VkWydmcmFnbWVudCddKTsKICAgICAgICAgICAgfSBlbHNlIHsgLy8gcGFyc2VfdXJsIHNlZW1zIHRvIGhhdmUgZmFpbGVkLCB0cnkgd2l0aG91dCBpdAogICAgICAgICAgICAgICAgJGFyciA9IGV4cGxvZGUoJy4nLCAkaW5wdXQpOwogICAgICAgICAgICAgICAgZm9yZWFjaCAoJGFyciBhcyAkayA9PiAkdikgewogICAgICAgICAgICAgICAgICAgICRjb252ID0gJHRoaXMtPl9kZWNvZGUoJHYpOwogICAgICAgICAgICAgICAgICAgICRhcnJbJGtdID0gKCRjb252KSA/ICRjb252IDogJHY7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkcmV0dXJuID0gam9pbignLicsICRhcnIpOwogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsgLy8gT3RoZXJ3aXNlIHdlIGNvbnNpZGVyIGl0IGJlaW5nIGEgcHVyZSBkb21haW4gbmFtZSBzdHJpbmcKICAgICAgICAgICAgJHJldHVybiA9ICR0aGlzLT5fZGVjb2RlKCRpbnB1dCk7CiAgICAgICAgICAgIGlmICghJHJldHVybikgJHJldHVybiA9ICRpbnB1dDsKICAgICAgICB9CiAgICAgICAgLy8gVGhlIG91dHB1dCBpcyBVVEYtOCBieSBkZWZhdWx0LCBvdGhlciBvdXRwdXQgZm9ybWF0cyBuZWVkIGNvbnZlcnNpb24gaGVyZQogICAgICAgIC8vIElmIG9uZSB0aW1lIGVuY29kaW5nIGlzIGdpdmVuLCB1c2UgdGhpcywgZWxzZSB0aGUgb2JqZWN0cyBwcm9wZXJ0eQogICAgICAgIHN3aXRjaCAoKCRvbmVfdGltZV9lbmNvZGluZykgPyAkb25lX3RpbWVfZW5jb2RpbmcgOiAkdGhpcy0+X2FwaV9lbmNvZGluZykgewogICAgICAgIGNhc2UgJ3V0ZjgnOgogICAgICAgICAgICByZXR1cm4gJHJldHVybjsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAndWNzNF9zdHJpbmcnOgogICAgICAgICAgIHJldHVybiAkdGhpcy0+X3VjczRfdG9fdWNzNF9zdHJpbmcoJHRoaXMtPl91dGY4X3RvX3VjczQoJHJldHVybikpOwogICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgJ3VjczRfYXJyYXknOgogICAgICAgICAgICByZXR1cm4gJHRoaXMtPl91dGY4X3RvX3VjczQoJHJldHVybik7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICR0aGlzLT5fZXJyb3IoJ1Vuc3VwcG9ydGVkIG91dHB1dCBmb3JtYXQnKTsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEVuY29kZSBhIGdpdmVuIFVURi04IGRvbWFpbiBuYW1lCiAgICAgKiBAcGFyYW0gICAgc3RyaW5nICAgRG9tYWluIG5hbWUgKFVURi04IG9yIFVDUy00KQogICAgICogW0BwYXJhbSAgICBzdHJpbmcgICBEZXNpcmVkIGlucHV0IGVuY29kaW5nLCBzZWUge0BsaW5rIHNldF9wYXJhbWV0ZXJ9XQogICAgICogQHJldHVybiAgIHN0cmluZyAgIEVuY29kZWQgRG9tYWluIG5hbWUgKEFDRSBzdHJpbmcpCiAgICAgKiBAYWNjZXNzICAgcHVibGljCiAgICAgKi8KICAgIGZ1bmN0aW9uIGVuY29kZSgkZGVjb2RlZCwgJG9uZV90aW1lX2VuY29kaW5nID0gZmFsc2UpCiAgICB7CiAgICAgICAgLy8gRm9yY2luZyBjb252ZXJzaW9uIG9mIGlucHV0IHRvIFVDUzQgYXJyYXkKICAgICAgICAvLyBJZiBvbmUgdGltZSBlbmNvZGluZyBpcyBnaXZlbiwgdXNlIHRoaXMsIGVsc2UgdGhlIG9iamVjdHMgcHJvcGVydHkKICAgICAgICBzd2l0Y2ggKCRvbmVfdGltZV9lbmNvZGluZyA/ICRvbmVfdGltZV9lbmNvZGluZyA6ICR0aGlzLT5fYXBpX2VuY29kaW5nKSB7CiAgICAgICAgY2FzZSAndXRmOCc6CiAgICAgICAgICAgICRkZWNvZGVkID0gJHRoaXMtPl91dGY4X3RvX3VjczQoJGRlY29kZWQpOwogICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlICd1Y3M0X3N0cmluZyc6CiAgICAgICAgICAgJGRlY29kZWQgPSAkdGhpcy0+X3VjczRfc3RyaW5nX3RvX3VjczQoJGRlY29kZWQpOwogICAgICAgIGNhc2UgJ3VjczRfYXJyYXknOgogICAgICAgICAgIGJyZWFrOwogICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICR0aGlzLT5fZXJyb3IoJ1Vuc3VwcG9ydGVkIGlucHV0IGZvcm1hdDogJy4oJG9uZV90aW1lX2VuY29kaW5nID8gJG9uZV90aW1lX2VuY29kaW5nIDogJHRoaXMtPl9hcGlfZW5jb2RpbmcpKTsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgLy8gTm8gaW5wdXQsIG5vIG91dHB1dCwgd2hhdCBlbHNlIGRpZCB5b3UgZXhwZWN0PwogICAgICAgIGlmIChlbXB0eSgkZGVjb2RlZCkpIHJldHVybiAnJzsKCiAgICAgICAgLy8gQW5jaG9ycyBmb3IgaXRlcmF0aW9uCiAgICAgICAgJGxhc3RfYmVnaW4gPSAwOwogICAgICAgIC8vIE91dHB1dCBzdHJpbmcKICAgICAgICAkb3V0cHV0ID0gJyc7CiAgICAgICAgZm9yZWFjaCAoJGRlY29kZWQgYXMgJGsgPT4gJHYpIHsKICAgICAgICAgICAgLy8gTWFrZSBzdXJlIHRvIHVzZSBqdXN0IHRoZSBwbGFpbiBkb3QKICAgICAgICAgICAgc3dpdGNoKCR2KSB7CiAgICAgICAgICAgIGNhc2UgMHgzMDAyOgogICAgICAgICAgICBjYXNlIDB4RkYwRToKICAgICAgICAgICAgY2FzZSAweEZGNjE6CiAgICAgICAgICAgICAgICAkZGVjb2RlZFska10gPSAweDJFOwogICAgICAgICAgICAgICAgLy8gUmlnaHQsIG5vIGJyZWFrIGhlcmUsIHRoZSBhYm92ZSBhcmUgY29udmVydGVkIHRvIGRvdHMgYW55d2F5CiAgICAgICAgICAgIC8vIFN0dW1ibGluZyBhY3Jvc3MgYW4gYW5jaG9yaW5nIGNoYXJhY3RlcgogICAgICAgICAgICBjYXNlIDB4MkU6CiAgICAgICAgICAgIGNhc2UgMHgyRjoKICAgICAgICAgICAgY2FzZSAweDNBOgogICAgICAgICAgICBjYXNlIDB4M0Y6CiAgICAgICAgICAgIGNhc2UgMHg0MDoKICAgICAgICAgICAgICAgIC8vIE5laXRoZXIgZW1haWwgYWRkcmVzc2VzIG5vciBVUkxzIGFsbG93ZWQgaW4gc3RyaWN0IG1vZGUKICAgICAgICAgICAgICAgIGlmICgkdGhpcy0+X3N0cmljdF9tb2RlKSB7CiAgICAgICAgICAgICAgICAgICAkdGhpcy0+X2Vycm9yKCdOZWl0aGVyIGVtYWlsIGFkZHJlc3NlcyBub3IgVVJMcyBhcmUgYWxsb3dlZCBpbiBzdHJpY3QgbW9kZS4nKTsKICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgLy8gU2tpcCBmaXJzdCBjaGFyCiAgICAgICAgICAgICAgICAgICAgaWYgKCRrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRlbmNvZGVkID0gJyc7CiAgICAgICAgICAgICAgICAgICAgICAgICRlbmNvZGVkID0gJHRoaXMtPl9lbmNvZGUoYXJyYXlfc2xpY2UoJGRlY29kZWQsICRsYXN0X2JlZ2luLCAoKCRrKS0kbGFzdF9iZWdpbikpKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRlbmNvZGVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkb3V0cHV0IC49ICRlbmNvZGVkOwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJG91dHB1dCAuPSAkdGhpcy0+X3VjczRfdG9fdXRmOChhcnJheV9zbGljZSgkZGVjb2RlZCwgJGxhc3RfYmVnaW4sICgoJGspLSRsYXN0X2JlZ2luKSkpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICRvdXRwdXQgLj0gY2hyKCRkZWNvZGVkWyRrXSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICRsYXN0X2JlZ2luID0gJGsgKyAxOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIC8vIENhdGNoIHRoZSByZXN0IG9mIHRoZSBzdHJpbmcKICAgICAgICBpZiAoJGxhc3RfYmVnaW4pIHsKICAgICAgICAgICAgJGlucF9sZW4gPSBzaXplb2YoJGRlY29kZWQpOwogICAgICAgICAgICAkZW5jb2RlZCA9ICcnOwogICAgICAgICAgICAkZW5jb2RlZCA9ICR0aGlzLT5fZW5jb2RlKGFycmF5X3NsaWNlKCRkZWNvZGVkLCAkbGFzdF9iZWdpbiwgKCgkaW5wX2xlbiktJGxhc3RfYmVnaW4pKSk7CiAgICAgICAgICAgIGlmICgkZW5jb2RlZCkgewogICAgICAgICAgICAgICAgJG91dHB1dCAuPSAkZW5jb2RlZDsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICRvdXRwdXQgLj0gJHRoaXMtPl91Y3M0X3RvX3V0ZjgoYXJyYXlfc2xpY2UoJGRlY29kZWQsICRsYXN0X2JlZ2luLCAoKCRpbnBfbGVuKS0kbGFzdF9iZWdpbikpKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gJG91dHB1dDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBpZiAoJG91dHB1dCA9ICR0aGlzLT5fZW5jb2RlKCRkZWNvZGVkKSkgewogICAgICAgICAgICAgICAgcmV0dXJuICRvdXRwdXQ7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJHRoaXMtPl91Y3M0X3RvX3V0ZjgoJGRlY29kZWQpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogVXNlIHRoaXMgbWV0aG9kIHRvIGdldCB0aGUgbGFzdCBlcnJvciBvY3VycmVkCiAgICAgKiBAcGFyYW0gICAgdm9pZAogICAgICogQHJldHVybiAgIHN0cmluZyAgIFRoZSBsYXN0IGVycm9yLCB0aGF0IG9jY3VyZWQKICAgICAqIEBhY2Nlc3MgICBwdWJsaWMKICAgICAqLwogICAgZnVuY3Rpb24gZ2V0X2xhc3RfZXJyb3IoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+X2Vycm9yOwogICAgfQoKICAgIC8qKgogICAgICogVGhlIGFjdHVhbCBkZWNvZGluZyBhbGdvcml0aG0KICAgICAqIEBhY2Nlc3MgICBwcml2YXRlCiAgICAgKi8KICAgIGZ1bmN0aW9uIF9kZWNvZGUoJGVuY29kZWQpCiAgICB7CiAgICAgICAgLy8gV2UgZG8gbmVlZCB0byBmaW5kIHRoZSBQdW55Y29kZSBwcmVmaXgKICAgICAgICBpZiAoIXByZWdfbWF0Y2goJyFeJy5wcmVnX3F1b3RlKCR0aGlzLT5fcHVueWNvZGVfcHJlZml4LCAnIScpLichJywgJGVuY29kZWQpKSB7CiAgICAgICAgICAgICR0aGlzLT5fZXJyb3IoJ1RoaXMgaXMgbm90IGEgcHVueWNvZGUgc3RyaW5nJyk7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICAgICAgJGVuY29kZV90ZXN0ID0gcHJlZ19yZXBsYWNlKCchXicucHJlZ19xdW90ZSgkdGhpcy0+X3B1bnljb2RlX3ByZWZpeCwgJyEnKS4nIScsICcnLCAkZW5jb2RlZCk7CiAgICAgICAgLy8gSWYgbm90aGluZyBsZWZ0IGFmdGVyIHJlbW92aW5nIHRoZSBwcmVmaXgsIGl0IGlzIGhvcGVsZXNzCiAgICAgICAgaWYgKCEkZW5jb2RlX3Rlc3QpIHsKICAgICAgICAgICAgJHRoaXMtPl9lcnJvcignVGhlIGdpdmVuIGVuY29kZWQgc3RyaW5nIHdhcyBlbXB0eScpOwogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgICAgIC8vIEZpbmQgbGFzdCBvY2N1cmVuY2Ugb2YgdGhlIGRlbGltaXRlcgogICAgICAgICRkZWxpbV9wb3MgPSBzdHJycG9zKCRlbmNvZGVkLCAnLScpOwogICAgICAgIGlmICgkZGVsaW1fcG9zID4gc3RybGVuKCR0aGlzLT5fcHVueWNvZGVfcHJlZml4KSkgewogICAgICAgICAgICBmb3IgKCRrID0gc3RybGVuKCR0aGlzLT5fcHVueWNvZGVfcHJlZml4KTsgJGsgPCAkZGVsaW1fcG9zOyArKyRrKSB7CiAgICAgICAgICAgICAgICAkZGVjb2RlZFtdID0gb3JkKCRlbmNvZGVkeyRrfSk7CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkZGVjb2RlZCA9IGFycmF5KCk7CiAgICAgICAgfQogICAgICAgICRkZWNvX2xlbiA9IGNvdW50KCRkZWNvZGVkKTsKICAgICAgICAkZW5jb19sZW4gPSBzdHJsZW4oJGVuY29kZWQpOwoKICAgICAgICAvLyBXYW5kZXJpbmcgdGhyb3VnaCB0aGUgc3RyaW5nczsgaW5pdAogICAgICAgICRpc19maXJzdCA9IHRydWU7CiAgICAgICAgJGJpYXMgICAgID0gJHRoaXMtPl9pbml0aWFsX2JpYXM7CiAgICAgICAgJGlkeCAgICAgID0gMDsKICAgICAgICAkY2hhciAgICAgPSAkdGhpcy0+X2luaXRpYWxfbjsKCiAgICAgICAgZm9yICgkZW5jb19pZHggPSAoJGRlbGltX3BvcykgPyAoJGRlbGltX3BvcyArIDEpIDogMDsgJGVuY29faWR4IDwgJGVuY29fbGVuOyArKyRkZWNvX2xlbikgewogICAgICAgICAgICBmb3IgKCRvbGRfaWR4ID0gJGlkeCwgJHcgPSAxLCAkayA9ICR0aGlzLT5fYmFzZTsgMSA7ICRrICs9ICR0aGlzLT5fYmFzZSkgewogICAgICAgICAgICAgICAgJGRpZ2l0ID0gJHRoaXMtPl9kZWNvZGVfZGlnaXQoJGVuY29kZWR7JGVuY29faWR4Kyt9KTsKICAgICAgICAgICAgICAgICRpZHggKz0gJGRpZ2l0ICogJHc7CiAgICAgICAgICAgICAgICAkdCA9ICgkayA8PSAkYmlhcykgPyAkdGhpcy0+X3RtaW4gOgogICAgICAgICAgICAgICAgICAgICAgICAoKCRrID49ICRiaWFzICsgJHRoaXMtPl90bWF4KSA/ICR0aGlzLT5fdG1heCA6ICgkayAtICRiaWFzKSk7CiAgICAgICAgICAgICAgICBpZiAoJGRpZ2l0IDwgJHQpIGJyZWFrOwogICAgICAgICAgICAgICAgJHcgPSAoaW50KSAoJHcgKiAoJHRoaXMtPl9iYXNlIC0gJHQpKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkYmlhcyA9ICR0aGlzLT5fYWRhcHQoJGlkeCAtICRvbGRfaWR4LCAkZGVjb19sZW4gKyAxLCAkaXNfZmlyc3QpOwogICAgICAgICAgICAkaXNfZmlyc3QgPSBmYWxzZTsKICAgICAgICAgICAgJGNoYXIgKz0gKGludCkgKCRpZHggLyAoJGRlY29fbGVuICsgMSkpOwogICAgICAgICAgICAkaWR4ICU9ICgkZGVjb19sZW4gKyAxKTsKICAgICAgICAgICAgaWYgKCRkZWNvX2xlbiA+IDApIHsKICAgICAgICAgICAgICAgIC8vIE1ha2Ugcm9vbSBmb3IgdGhlIGRlY29kZWQgY2hhcgogICAgICAgICAgICAgICAgZm9yICgkaSA9ICRkZWNvX2xlbjsgJGkgPiAkaWR4OyAkaS0tKSB7CiAgICAgICAgICAgICAgICAgICAgJGRlY29kZWRbJGldID0gJGRlY29kZWRbKCRpIC0gMSldOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgICRkZWNvZGVkWyRpZHgrK10gPSAkY2hhcjsKICAgICAgICB9CiAgICAgICAgcmV0dXJuICR0aGlzLT5fdWNzNF90b191dGY4KCRkZWNvZGVkKTsKICAgIH0KCiAgICAvKioKICAgICAqIFRoZSBhY3R1YWwgZW5jb2RpbmcgYWxnb3JpdGhtCiAgICAgKiBAYWNjZXNzICAgcHJpdmF0ZQogICAgICovCiAgICBmdW5jdGlvbiBfZW5jb2RlKCRkZWNvZGVkKQogICAgewogICAgICAgIC8vIFdlIGNhbm5vdCBlbmNvZGUgYSBkb21haW4gbmFtZSBjb250YWluaW5nIHRoZSBQdW55Y29kZSBwcmVmaXgKICAgICAgICAkZXh0cmFjdCA9IHN0cmxlbigkdGhpcy0+X3B1bnljb2RlX3ByZWZpeCk7CiAgICAgICAgJGNoZWNrX3ByZWYgPSAkdGhpcy0+X3V0ZjhfdG9fdWNzNCgkdGhpcy0+X3B1bnljb2RlX3ByZWZpeCk7CiAgICAgICAgJGNoZWNrX2RlY28gPSBhcnJheV9zbGljZSgkZGVjb2RlZCwgMCwgJGV4dHJhY3QpOwoKICAgICAgICBpZiAoJGNoZWNrX3ByZWYgPT0gJGNoZWNrX2RlY28pIHsKICAgICAgICAgICAgJHRoaXMtPl9lcnJvcignVGhpcyBpcyBhbHJlYWR5IGEgcHVueWNvZGUgc3RyaW5nJyk7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICAgICAgLy8gV2Ugd2lsbCBub3QgdHJ5IHRvIGVuY29kZSBzdHJpbmdzIGNvbnNpc3Rpbmcgb2YgYmFzaWMgY29kZSBwb2ludHMgb25seQogICAgICAgICRlbmNvZGFibGUgPSBmYWxzZTsKICAgICAgICBmb3JlYWNoICgkZGVjb2RlZCBhcyAkayA9PiAkdikgewogICAgICAgICAgICBpZiAoJHYgPiAweDdhKSB7CiAgICAgICAgICAgICAgICAkZW5jb2RhYmxlID0gdHJ1ZTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmICghJGVuY29kYWJsZSkgewogICAgICAgICAgICAkdGhpcy0+X2Vycm9yKCdUaGUgZ2l2ZW4gc3RyaW5nIGRvZXMgbm90IGNvbnRhaW4gZW5jb2RhYmxlIGNoYXJzJyk7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CgogICAgICAgIC8vIERvIE5BTUVQUkVQCiAgICAgICAgJGRlY29kZWQgPSAkdGhpcy0+X25hbWVwcmVwKCRkZWNvZGVkKTsKICAgICAgICBpZiAoISRkZWNvZGVkIHx8ICFpc19hcnJheSgkZGVjb2RlZCkpIHJldHVybiBmYWxzZTsgLy8gTkFNRVBSRVAgZmFpbGVkCgogICAgICAgICRkZWNvX2xlbiAgPSBjb3VudCgkZGVjb2RlZCk7CiAgICAgICAgaWYgKCEkZGVjb19sZW4pIHJldHVybiBmYWxzZTsgLy8gRW1wdHkgYXJyYXkKCiAgICAgICAgJGNvZGVjb3VudCA9IDA7IC8vIEhvdyBtYW55IGNoYXJzIGhhdmUgYmVlbiBjb25zdW1lZAoKICAgICAgICAkZW5jb2RlZCA9ICcnOwogICAgICAgIC8vIENvcHkgYWxsIGJhc2ljIGNvZGUgcG9pbnRzIHRvIG91dHB1dAogICAgICAgIGZvciAoJGkgPSAwOyAkaSA8ICRkZWNvX2xlbjsgKyskaSkgewogICAgICAgICAgICAkdGVzdCA9ICRkZWNvZGVkWyRpXTsKICAgICAgICAgICAgLy8gV2lsbCBtYXRjaCBbLTAtOWEtekEtWl0KICAgICAgICAgICAgaWYgKCgweDJGIDwgJHRlc3QgJiYgJHRlc3QgPCAweDQwKSB8fCAoMHg0MCA8ICR0ZXN0ICYmICR0ZXN0IDwgMHg1QikKICAgICAgICAgICAgICAgICAgICB8fCAoMHg2MCA8ICR0ZXN0ICYmICR0ZXN0IDw9IDB4N0IpIHx8ICgweDJEID09ICR0ZXN0KSkgewogICAgICAgICAgICAgICAgJGVuY29kZWQgLj0gY2hyKCRkZWNvZGVkWyRpXSk7CiAgICAgICAgICAgICAgICAkY29kZWNvdW50Kys7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYgKCRjb2RlY291bnQgPT0gJGRlY29fbGVuKSByZXR1cm4gJGVuY29kZWQ7IC8vIEFsbCBjb2RlcG9pbnRzIHdlcmUgYmFzaWMgb25lcwoKICAgICAgICAvLyBTdGFydCB3aXRoIHRoZSBwcmVmaXg7IGNvcHkgaXQgdG8gb3V0cHV0CiAgICAgICAgJGVuY29kZWQgPSAkdGhpcy0+X3B1bnljb2RlX3ByZWZpeC4kZW5jb2RlZDsKCiAgICAgICAgLy8gSWYgd2UgaGF2ZSBiYXNpYyBjb2RlIHBvaW50cyBpbiBvdXRwdXQsIGFkZCBhbiBoeXBoZW4gdG8gdGhlIGVuZAogICAgICAgIGlmICgkY29kZWNvdW50KSAkZW5jb2RlZCAuPSAnLSc7CgogICAgICAgIC8vIE5vdyBmaW5kIGFuZCBlbmNvZGUgYWxsIG5vbi1iYXNpYyBjb2RlIHBvaW50cwogICAgICAgICRpc19maXJzdCAgPSB0cnVlOwogICAgICAgICRjdXJfY29kZSAgPSAkdGhpcy0+X2luaXRpYWxfbjsKICAgICAgICAkYmlhcyAgICAgID0gJHRoaXMtPl9pbml0aWFsX2JpYXM7CiAgICAgICAgJGRlbHRhICAgICA9IDA7CiAgICAgICAgd2hpbGUgKCRjb2RlY291bnQgPCAkZGVjb19sZW4pIHsKICAgICAgICAgICAgLy8gRmluZCB0aGUgc21hbGxlc3QgY29kZSBwb2ludCA+PSB0aGUgY3VycmVudCBjb2RlIHBvaW50IGFuZAogICAgICAgICAgICAvLyByZW1lbWJlciB0aGUgbGFzdCBvdWNjcmVuY2Ugb2YgaXQgaW4gdGhlIGlucHV0CiAgICAgICAgICAgIGZvciAoJGkgPSAwLCAkbmV4dF9jb2RlID0gJHRoaXMtPl9tYXhfdWNzOyAkaSA8ICRkZWNvX2xlbjsgJGkrKykgewogICAgICAgICAgICAgICAgaWYgKCRkZWNvZGVkWyRpXSA+PSAkY3VyX2NvZGUgJiYgJGRlY29kZWRbJGldIDw9ICRuZXh0X2NvZGUpIHsKICAgICAgICAgICAgICAgICAgICAkbmV4dF9jb2RlID0gJGRlY29kZWRbJGldOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAkZGVsdGEgKz0gKCRuZXh0X2NvZGUgLSAkY3VyX2NvZGUpICogKCRjb2RlY291bnQgKyAxKTsKICAgICAgICAgICAgJGN1cl9jb2RlID0gJG5leHRfY29kZTsKCiAgICAgICAgICAgIC8vIFNjYW4gaW5wdXQgYWdhaW4gYW5kIGVuY29kZSBhbGwgY2hhcmFjdGVycyB3aG9zZSBjb2RlIHBvaW50IGlzICRjdXJfY29kZQogICAgICAgICAgICBmb3IgKCRpID0gMDsgJGkgPCAkZGVjb19sZW47ICRpKyspIHsKICAgICAgICAgICAgICAgIGlmICgkZGVjb2RlZFskaV0gPCAkY3VyX2NvZGUpIHsKICAgICAgICAgICAgICAgICAgICAkZGVsdGErKzsKICAgICAgICAgICAgICAgIH0gZWxzZWlmICgkZGVjb2RlZFskaV0gPT0gJGN1cl9jb2RlKSB7CiAgICAgICAgICAgICAgICAgICAgZm9yICgkcSA9ICRkZWx0YSwgJGsgPSAkdGhpcy0+X2Jhc2U7IDE7ICRrICs9ICR0aGlzLT5fYmFzZSkgewogICAgICAgICAgICAgICAgICAgICAgICAkdCA9ICgkayA8PSAkYmlhcykgPyAkdGhpcy0+X3RtaW4gOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoJGsgPj0gJGJpYXMgKyAkdGhpcy0+X3RtYXgpID8gJHRoaXMtPl90bWF4IDogJGsgLSAkYmlhcyk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkcSA8ICR0KSBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgJGVuY29kZWQgLj0gJHRoaXMtPl9lbmNvZGVfZGlnaXQoaW50dmFsKCR0ICsgKCgkcSAtICR0KSAlICgkdGhpcy0+X2Jhc2UgLSAkdCkpKSk7IC8vdjAuNC41IENoYW5nZWQgZnJvbSBjZWlsKCkgdG8gaW50dmFsKCkKICAgICAgICAgICAgICAgICAgICAgICAgJHEgPSAoaW50KSAoKCRxIC0gJHQpIC8gKCR0aGlzLT5fYmFzZSAtICR0KSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICRlbmNvZGVkIC49ICR0aGlzLT5fZW5jb2RlX2RpZ2l0KCRxKTsKICAgICAgICAgICAgICAgICAgICAkYmlhcyA9ICR0aGlzLT5fYWRhcHQoJGRlbHRhLCAkY29kZWNvdW50KzEsICRpc19maXJzdCk7CiAgICAgICAgICAgICAgICAgICAgJGNvZGVjb3VudCsrOwogICAgICAgICAgICAgICAgICAgICRkZWx0YSA9IDA7CiAgICAgICAgICAgICAgICAgICAgJGlzX2ZpcnN0ID0gZmFsc2U7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJGRlbHRhKys7CiAgICAgICAgICAgICRjdXJfY29kZSsrOwogICAgICAgIH0KICAgICAgICByZXR1cm4gJGVuY29kZWQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBBZGFwdCB0aGUgYmlhcyBhY2NvcmRpbmcgdG8gdGhlIGN1cnJlbnQgY29kZSBwb2ludCBhbmQgcG9zaXRpb24KICAgICAqIEBhY2Nlc3MgICBwcml2YXRlCiAgICAgKi8KICAgIGZ1bmN0aW9uIF9hZGFwdCgkZGVsdGEsICRucG9pbnRzLCAkaXNfZmlyc3QpCiAgICB7CiAgICAgICAgJGRlbHRhID0gaW50dmFsKCRpc19maXJzdCA/ICgkZGVsdGEgLyAkdGhpcy0+X2RhbXApIDogKCRkZWx0YSAvIDIpKTsKICAgICAgICAkZGVsdGEgKz0gaW50dmFsKCRkZWx0YSAvICRucG9pbnRzKTsKICAgICAgICBmb3IgKCRrID0gMDsgJGRlbHRhID4gKCgkdGhpcy0+X2Jhc2UgLSAkdGhpcy0+X3RtaW4pICogJHRoaXMtPl90bWF4KSAvIDI7ICRrICs9ICR0aGlzLT5fYmFzZSkgewogICAgICAgICAgICAkZGVsdGEgPSBpbnR2YWwoJGRlbHRhIC8gKCR0aGlzLT5fYmFzZSAtICR0aGlzLT5fdG1pbikpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gaW50dmFsKCRrICsgKCR0aGlzLT5fYmFzZSAtICR0aGlzLT5fdG1pbiArIDEpICogJGRlbHRhIC8gKCRkZWx0YSArICR0aGlzLT5fc2tldykpOwogICAgfQoKICAgIC8qKgogICAgICogRW5jb2RpbmcgYSBjZXJ0YWluIGRpZ2l0CiAgICAgKiBAYWNjZXNzICAgcHJpdmF0ZQogICAgICovCiAgICBmdW5jdGlvbiBfZW5jb2RlX2RpZ2l0KCRkKQogICAgewogICAgICAgIHJldHVybiBjaHIoJGQgKyAyMiArIDc1ICogKCRkIDwgMjYpKTsKICAgIH0KCiAgICAvKioKICAgICAqIERlY29kZSBhIGNlcnRhaW4gZGlnaXQKICAgICAqIEBhY2Nlc3MgICBwcml2YXRlCiAgICAgKi8KICAgIGZ1bmN0aW9uIF9kZWNvZGVfZGlnaXQoJGNwKQogICAgewogICAgICAgICRjcCA9IG9yZCgkY3ApOwogICAgICAgIHJldHVybiAoJGNwIC0gNDggPCAxMCkgPyAkY3AgLSAyMiA6ICgoJGNwIC0gNjUgPCAyNikgPyAkY3AgLSA2NSA6ICgoJGNwIC0gOTcgPCAyNikgPyAkY3AgLSA5NyA6ICR0aGlzLT5fYmFzZSkpOwogICAgfQoKICAgIC8qKgogICAgICogSW50ZXJuYWwgZXJyb3IgaGFuZGxpbmcgbWV0aG9kCiAgICAgKiBAYWNjZXNzICAgcHJpdmF0ZQogICAgICovCiAgICBmdW5jdGlvbiBfZXJyb3IoJGVycm9yID0gJycpCiAgICB7CiAgICAgICAgJHRoaXMtPl9lcnJvciA9ICRlcnJvcjsKICAgIH0KCiAgICAvKioKICAgICAqIERvIE5hbWVwcmVwIGFjY29yZGluZyB0byBSRkMzNDkxIGFuZCBSRkMzNDU0CiAgICAgKiBAcGFyYW0gICAgYXJyYXkgICAgVW5pY29kZSBDaGFyYWN0ZXJzCiAgICAgKiBAcmV0dXJuICAgc3RyaW5nICAgVW5pY29kZSBDaGFyYWN0ZXJzLCBOYW1lcHJlcCdkCiAgICAgKiBAYWNjZXNzICAgcHJpdmF0ZQogICAgICovCiAgICBmdW5jdGlvbiBfbmFtZXByZXAoJGlucHV0KQogICAgewogICAgICAgICRvdXRwdXQgPSBhcnJheSgpOwogICAgICAgICRlcnJvciA9IGZhbHNlOwogICAgICAgIC8vCiAgICAgICAgLy8gTWFwcGluZwogICAgICAgIC8vIFdhbGtpbmcgdGhyb3VnaCB0aGUgaW5wdXQgYXJyYXksIHBlcmZvcm1pbmcgdGhlIHJlcXVpcmVkIHN0ZXBzIG9uIGVhY2ggb2YKICAgICAgICAvLyB0aGUgaW5wdXQgY2hhcnMgYW5kIHB1dHRpbmcgdGhlIHJlc3VsdCBpbnRvIHRoZSBvdXRwdXQgYXJyYXkKICAgICAgICAvLyBXaGlsZSBtYXBwaW5nIHJlcXVpcmVkIGNoYXJzIHdlIGFwcGx5IHRoZSBjYW5ub25pY2FsIG9yZGVyaW5nCiAgICAgICAgZm9yZWFjaCAoJGlucHV0IGFzICR2KSB7CiAgICAgICAgICAgIC8vIE1hcCB0byBub3RoaW5nID09IHNraXAgdGhhdCBjb2RlIHBvaW50CiAgICAgICAgICAgIGlmIChpbl9hcnJheSgkdiwgJHRoaXMtPk5QWydtYXBfbm90aGluZyddKSkgY29udGludWU7CgogICAgICAgICAgICAvLyBUcnkgdG8gZmluZCBwcm9oaWJpdGVkIGlucHV0CiAgICAgICAgICAgIGlmIChpbl9hcnJheSgkdiwgJHRoaXMtPk5QWydwcm9oaWJpdCddKSB8fCBpbl9hcnJheSgkdiwgJHRoaXMtPk5QWydnZW5lcmFsX3Byb2hpYml0ZWQnXSkpIHsKICAgICAgICAgICAgICAgICR0aGlzLT5fZXJyb3IoJ05BTUVQUkVQOiBQcm9oaWJpdGVkIGlucHV0IFUrJy5zcHJpbnRmKCclMDhYJywgJHYpKTsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBmb3JlYWNoICgkdGhpcy0+TlBbJ3Byb2hpYml0X3JhbmdlcyddIGFzICRyYW5nZSkgewogICAgICAgICAgICAgICAgaWYgKCRyYW5nZVswXSA8PSAkdiAmJiAkdiA8PSAkcmFuZ2VbMV0pIHsKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+X2Vycm9yKCdOQU1FUFJFUDogUHJvaGliaXRlZCBpbnB1dCBVKycuc3ByaW50ZignJTA4WCcsICR2KSk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIC8vCiAgICAgICAgICAgIC8vIEhhbmd1bCBzeWxsYWJsZSBkZWNvbXBvc2l0aW9uCiAgICAgICAgICAgIGlmICgweEFDMDAgPD0gJHYgJiYgJHYgPD0gMHhEN0FGKSB7CiAgICAgICAgICAgICAgICBmb3JlYWNoICgkdGhpcy0+X2hhbmd1bF9kZWNvbXBvc2UoJHYpIGFzICRvdXQpIHsKICAgICAgICAgICAgICAgICAgICAkb3V0cHV0W10gPSAoaW50KSAkb3V0OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAvLyBUaGVyZSdzIGEgZGVjb21wb3NpdGlvbiBtYXBwaW5nIGZvciB0aGF0IGNvZGUgcG9pbnQKICAgICAgICAgICAgfSBlbHNlaWYgKGlzc2V0KCR0aGlzLT5OUFsncmVwbGFjZW1hcHMnXVskdl0pKSB7CiAgICAgICAgICAgICAgICBmb3JlYWNoICgkdGhpcy0+X2FwcGx5X2Nhbm5vbmljYWxfb3JkZXJpbmcoJHRoaXMtPk5QWydyZXBsYWNlbWFwcyddWyR2XSkgYXMgJG91dCkgewogICAgICAgICAgICAgICAgICAgICRvdXRwdXRbXSA9IChpbnQpICRvdXQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkb3V0cHV0W10gPSAoaW50KSAkdjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAvLyBCZWZvcmUgYXBwbHlpbmcgYW55IENvbWJpbmluZywgdHJ5IHRvIHJlYXJyYW5nZSBhbnkgSGFuZ3VsIHN5bGxhYmxlcwogICAgICAgICRvdXRwdXQgPSAkdGhpcy0+X2hhbmd1bF9jb21wb3NlKCRvdXRwdXQpOwogICAgICAgIC8vCiAgICAgICAgLy8gQ29tYmluZSBjb2RlIHBvaW50cwogICAgICAgIC8vCiAgICAgICAgJGxhc3RfY2xhc3MgICA9IDA7CiAgICAgICAgJGxhc3Rfc3RhcnRlciA9IDA7CiAgICAgICAgJG91dF9sZW4gICAgICA9IGNvdW50KCRvdXRwdXQpOwogICAgICAgIGZvciAoJGkgPSAwOyAkaSA8ICRvdXRfbGVuOyArKyRpKSB7CiAgICAgICAgICAgICRjbGFzcyA9ICR0aGlzLT5fZ2V0X2NvbWJpbmluZ19jbGFzcygkb3V0cHV0WyRpXSk7CiAgICAgICAgICAgIGlmICgoISRsYXN0X2NsYXNzIHx8ICRsYXN0X2NsYXNzID4gJGNsYXNzKSAmJiAkY2xhc3MpIHsKICAgICAgICAgICAgICAgIC8vIFRyeSB0byBtYXRjaAogICAgICAgICAgICAgICAgJHNlcV9sZW4gPSAkaSAtICRsYXN0X3N0YXJ0ZXI7CiAgICAgICAgICAgICAgICAkb3V0ID0gJHRoaXMtPl9jb21iaW5lKGFycmF5X3NsaWNlKCRvdXRwdXQsICRsYXN0X3N0YXJ0ZXIsICRzZXFfbGVuKSk7CiAgICAgICAgICAgICAgICAvLyBPbiBtYXRjaDogUmVwbGFjZSB0aGUgbGFzdCBzdGFydGVyIHdpdGggdGhlIGNvbXBvc2VkIGNoYXJhY3RlciBhbmQgcmVtb3ZlCiAgICAgICAgICAgICAgICAvLyB0aGUgbm93IHJlZHVuZGFudCBub24tc3RhcnRlcihzKQogICAgICAgICAgICAgICAgaWYgKCRvdXQpIHsKICAgICAgICAgICAgICAgICAgICAkb3V0cHV0WyRsYXN0X3N0YXJ0ZXJdID0gJG91dDsKICAgICAgICAgICAgICAgICAgICBpZiAoY291bnQoJG91dCkgIT0gJHNlcV9sZW4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICgkaiA9ICRpKzE7ICRqIDwgJG91dF9sZW47ICsrJGopIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRvdXRwdXRbJGotMV0gPSAkb3V0cHV0WyRqXTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB1bnNldCgkb3V0cHV0WyRvdXRfbGVuXSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIC8vIFJld2luZCB0aGUgZm9yIGxvb3AgYnkgb25lLCBzaW5jZSB0aGVyZSBjYW4gYmUgbW9yZSBwb3NzaWJsZSBjb21wb3NpdGlvbnMKICAgICAgICAgICAgICAgICAgICAkaS0tOwogICAgICAgICAgICAgICAgICAgICRvdXRfbGVuLS07CiAgICAgICAgICAgICAgICAgICAgJGxhc3RfY2xhc3MgPSAoJGkgPT0gJGxhc3Rfc3RhcnRlcikgPyAwIDogJHRoaXMtPl9nZXRfY29tYmluaW5nX2NsYXNzKCRvdXRwdXRbJGktMV0pOwogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIC8vIFRoZSBjdXJyZW50IGNsYXNzIGlzIDAKICAgICAgICAgICAgaWYgKCEkY2xhc3MpICRsYXN0X3N0YXJ0ZXIgPSAkaTsKICAgICAgICAgICAgJGxhc3RfY2xhc3MgPSAkY2xhc3M7CiAgICAgICAgfQogICAgICAgIHJldHVybiAkb3V0cHV0OwogICAgfQoKICAgIC8qKgogICAgICogRGVjb21wb3NlcyBhIEhhbmd1bCBzeWxsYWJsZQogICAgICogKHNlZSBodHRwOi8vd3d3LnVuaWNvZGUub3JnL3VuaWNvZGUvcmVwb3J0cy90cjE1LyNIYW5ndWwKICAgICAqIEBwYXJhbSAgICBpbnRlZ2VyICAzMmJpdCBVQ1M0IGNvZGUgcG9pbnQKICAgICAqIEByZXR1cm4gICBhcnJheSAgICBFaXRoZXIgSGFuZ3VsIFN5bGxhYmxlIGRlY29tcG9zZWQgb3Igb3JpZ2luYWwgMzJiaXQgdmFsdWUgYXMgb25lIHZhbHVlIGFycmF5CiAgICAgKiBAYWNjZXNzICAgcHJpdmF0ZQogICAgICovCiAgICBmdW5jdGlvbiBfaGFuZ3VsX2RlY29tcG9zZSgkY2hhcikKICAgIHsKICAgICAgICAkc2luZGV4ID0gKGludCkgJGNoYXIgLSAkdGhpcy0+X3NiYXNlOwogICAgICAgIGlmICgkc2luZGV4IDwgMCB8fCAkc2luZGV4ID49ICR0aGlzLT5fc2NvdW50KSB7CiAgICAgICAgICAgIHJldHVybiBhcnJheSgkY2hhcik7CiAgICAgICAgfQogICAgICAgICRyZXN1bHQgPSBhcnJheSgpOwogICAgICAgICRyZXN1bHRbXSA9IChpbnQpICR0aGlzLT5fbGJhc2UgKyAkc2luZGV4IC8gJHRoaXMtPl9uY291bnQ7CiAgICAgICAgJHJlc3VsdFtdID0gKGludCkgJHRoaXMtPl92YmFzZSArICgkc2luZGV4ICUgJHRoaXMtPl9uY291bnQpIC8gJHRoaXMtPl90Y291bnQ7CiAgICAgICAgJFQgPSBpbnR2YWwoJHRoaXMtPl90YmFzZSArICRzaW5kZXggJSAkdGhpcy0+X3Rjb3VudCk7CiAgICAgICAgaWYgKCRUICE9ICR0aGlzLT5fdGJhc2UpICRyZXN1bHRbXSA9ICRUOwogICAgICAgIHJldHVybiAkcmVzdWx0OwogICAgfQogICAgLyoqCiAgICAgKiBDY29tcG9zZXMgYSBIYW5ndWwgc3lsbGFibGUKICAgICAqIChzZWUgaHR0cDovL3d3dy51bmljb2RlLm9yZy91bmljb2RlL3JlcG9ydHMvdHIxNS8jSGFuZ3VsCiAgICAgKiBAcGFyYW0gICAgYXJyYXkgICAgRGVjb21wb3NlZCBVQ1M0IHNlcXVlbmNlCiAgICAgKiBAcmV0dXJuICAgYXJyYXkgICAgVUNTNCBzZXF1ZW5jZSB3aXRoIHN5bGxhYmxlcyBjb21wb3NlZAogICAgICogQGFjY2VzcyAgIHByaXZhdGUKICAgICAqLwogICAgZnVuY3Rpb24gX2hhbmd1bF9jb21wb3NlKCRpbnB1dCkKICAgIHsKICAgICAgICAkaW5wX2xlbiA9IGNvdW50KCRpbnB1dCk7CiAgICAgICAgaWYgKCEkaW5wX2xlbikgcmV0dXJuIGFycmF5KCk7CiAgICAgICAgJHJlc3VsdCA9IGFycmF5KCk7CiAgICAgICAgJGxhc3QgPSAoaW50KSAkaW5wdXRbMF07CiAgICAgICAgJHJlc3VsdFtdID0gJGxhc3Q7IC8vIGNvcHkgZmlyc3QgY2hhciBmcm9tIGlucHV0IHRvIG91dHB1dAoKICAgICAgICBmb3IgKCRpID0gMTsgJGkgPCAkaW5wX2xlbjsgKyskaSkgewogICAgICAgICAgICAkY2hhciA9IChpbnQpICRpbnB1dFskaV07CiAgICAgICAgICAgICRzaW5kZXggPSAkbGFzdCAtICR0aGlzLT5fc2Jhc2U7CiAgICAgICAgICAgICRsaW5kZXggPSAkbGFzdCAtICR0aGlzLT5fbGJhc2U7CiAgICAgICAgICAgICR2aW5kZXggPSAkY2hhciAtICR0aGlzLT5fdmJhc2U7CiAgICAgICAgICAgICR0aW5kZXggPSAkY2hhciAtICR0aGlzLT5fdGJhc2U7CiAgICAgICAgICAgIC8vIEZpbmQgb3V0LCB3aGV0aGVyIHR3byBjdXJyZW50IGNoYXJhY3RlcnMgYXJlIExWIGFuZCBUCiAgICAgICAgICAgIGlmICgwIDw9ICRzaW5kZXggJiYgJHNpbmRleCA8ICR0aGlzLT5fc2NvdW50ICYmICgkc2luZGV4ICUgJHRoaXMtPl90Y291bnQgPT0gMCkKICAgICAgICAgICAgICAgICAgICAmJiAwIDw9ICR0aW5kZXggJiYgJHRpbmRleCA8PSAkdGhpcy0+X3Rjb3VudCkgewogICAgICAgICAgICAgICAgLy8gY3JlYXRlIHN5bGxhYmxlIG9mIGZvcm0gTFZUCiAgICAgICAgICAgICAgICAkbGFzdCArPSAkdGluZGV4OwogICAgICAgICAgICAgICAgJHJlc3VsdFsoY291bnQoJHJlc3VsdCkgLSAxKV0gPSAkbGFzdDsgLy8gcmVzZXQgbGFzdAogICAgICAgICAgICAgICAgY29udGludWU7IC8vIGRpc2NhcmQgY2hhcgogICAgICAgICAgICB9CiAgICAgICAgICAgIC8vIEZpbmQgb3V0LCB3aGV0aGVyIHR3byBjdXJyZW50IGNoYXJhY3RlcnMgZm9ybSBMIGFuZCBWCiAgICAgICAgICAgIGlmICgwIDw9ICRsaW5kZXggJiYgJGxpbmRleCA8ICR0aGlzLT5fbGNvdW50ICYmIDAgPD0gJHZpbmRleCAmJiAkdmluZGV4IDwgJHRoaXMtPl92Y291bnQpIHsKICAgICAgICAgICAgICAgIC8vIGNyZWF0ZSBzeWxsYWJsZSBvZiBmb3JtIExWCiAgICAgICAgICAgICAgICAkbGFzdCA9IChpbnQpICR0aGlzLT5fc2Jhc2UgKyAoJGxpbmRleCAqICR0aGlzLT5fdmNvdW50ICsgJHZpbmRleCkgKiAkdGhpcy0+X3Rjb3VudDsKICAgICAgICAgICAgICAgICRyZXN1bHRbKGNvdW50KCRyZXN1bHQpIC0gMSldID0gJGxhc3Q7IC8vIHJlc2V0IGxhc3QKICAgICAgICAgICAgICAgIGNvbnRpbnVlOyAvLyBkaXNjYXJkIGNoYXIKICAgICAgICAgICAgfQogICAgICAgICAgICAvLyBpZiBuZWl0aGVyIGNhc2Ugd2FzIHRydWUsIGp1c3QgYWRkIHRoZSBjaGFyYWN0ZXIKICAgICAgICAgICAgJGxhc3QgPSAkY2hhcjsKICAgICAgICAgICAgJHJlc3VsdFtdID0gJGNoYXI7CiAgICAgICAgfQogICAgICAgIHJldHVybiAkcmVzdWx0OwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgY29tYmluaW5nIGNsYXNzIG9mIGEgY2VydGFpbiB3aWRlIGNoYXIKICAgICAqIEBwYXJhbSAgICBpbnRlZ2VyICAgIFdpZGUgY2hhciB0byBjaGVjayAoMzJiaXQgaW50ZWdlcikKICAgICAqIEByZXR1cm4gICBpbnRlZ2VyICAgIENvbWJpbmluZyBjbGFzcyBpZiBmb3VuZCwgZWxzZSAwCiAgICAgKiBAYWNjZXNzICAgcHJpdmF0ZQogICAgICovCiAgICBmdW5jdGlvbiBfZ2V0X2NvbWJpbmluZ19jbGFzcygkY2hhcikKICAgIHsKICAgICAgICByZXR1cm4gaXNzZXQoJHRoaXMtPk5QWydub3JtX2NvbWJjbHMnXVskY2hhcl0pID8gJHRoaXMtPk5QWydub3JtX2NvbWJjbHMnXVskY2hhcl0gOiAwOwogICAgfQoKICAgIC8qKgogICAgICogQXBsbGllcyB0aGUgY2Fubm9uaWNhbCBvcmRlcmluZyBvZiBhIGRlY29tcG9zZWQgVUNTNCBzZXF1ZW5jZQogICAgICogQHBhcmFtICAgIGFycmF5ICAgICAgRGVjb21wb3NlZCBVQ1M0IHNlcXVlbmNlCiAgICAgKiBAcmV0dXJuICAgYXJyYXkgICAgICBPcmRlcmVkIFVTQzQgc2VxdWVuY2UKICAgICAqIEBhY2Nlc3MgICBwcml2YXRlCiAgICAgKi8KICAgIGZ1bmN0aW9uIF9hcHBseV9jYW5ub25pY2FsX29yZGVyaW5nKCRpbnB1dCkKICAgIHsKICAgICAgICAkc3dhcCA9IHRydWU7CiAgICAgICAgJHNpemUgPSBjb3VudCgkaW5wdXQpOwogICAgICAgIHdoaWxlICgkc3dhcCkgewogICAgICAgICAgICAkc3dhcCA9IGZhbHNlOwogICAgICAgICAgICAkbGFzdCA9ICR0aGlzLT5fZ2V0X2NvbWJpbmluZ19jbGFzcyhpbnR2YWwoJGlucHV0WzBdKSk7CiAgICAgICAgICAgIGZvciAoJGkgPSAwOyAkaSA8ICRzaXplLTE7ICsrJGkpIHsKICAgICAgICAgICAgICAgICRuZXh0ID0gJHRoaXMtPl9nZXRfY29tYmluaW5nX2NsYXNzKGludHZhbCgkaW5wdXRbJGkrMV0pKTsKICAgICAgICAgICAgICAgIGlmICgkbmV4dCAhPSAwICYmICRsYXN0ID4gJG5leHQpIHsKICAgICAgICAgICAgICAgICAgICAvLyBNb3ZlIGl0ZW0gbGVmdHdhcmQgdW50aWwgaXQgZml0cwogICAgICAgICAgICAgICAgICAgIGZvciAoJGogPSAkaSArIDE7ICRqID4gMDsgLS0kaikgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHRoaXMtPl9nZXRfY29tYmluaW5nX2NsYXNzKGludHZhbCgkaW5wdXRbJGotMV0pKSA8PSAkbmV4dCkgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICR0ID0gaW50dmFsKCRpbnB1dFskal0pOwogICAgICAgICAgICAgICAgICAgICAgICAkaW5wdXRbJGpdID0gaW50dmFsKCRpbnB1dFskai0xXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICRpbnB1dFskai0xXSA9ICR0OwogICAgICAgICAgICAgICAgICAgICAgICAkc3dhcCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIC8vIFJlZW50ZXJpbmcgdGhlIGxvb3AgbG9va2luZyBhdCB0aGUgb2xkIGNoYXJhY3RlciBhZ2FpbgogICAgICAgICAgICAgICAgICAgICRuZXh0ID0gJGxhc3Q7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkbGFzdCA9ICRuZXh0OwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiAkaW5wdXQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBEbyBjb21wb3NpdGlvbiBvZiBhIHNlcXVlbmNlIG9mIHN0YXJ0ZXIgYW5kIG5vbi1zdGFydGVyCiAgICAgKiBAcGFyYW0gICAgYXJyYXkgICAgICBVQ1M0IERlY29tcG9zZWQgc2VxdWVuY2UKICAgICAqIEByZXR1cm4gICBhcnJheSAgICAgIE9yZGVyZWQgVVNDNCBzZXF1ZW5jZQogICAgICogQGFjY2VzcyAgIHByaXZhdGUKICAgICAqLwogICAgZnVuY3Rpb24gX2NvbWJpbmUoJGlucHV0KQogICAgewogICAgICAgICRpbnBfbGVuID0gY291bnQoJGlucHV0KTsKICAgICAgICBmb3JlYWNoICgkdGhpcy0+TlBbJ3JlcGxhY2VtYXBzJ10gYXMgJG5wX3NyYyA9PiAkbnBfdGFyZ2V0KSB7CiAgICAgICAgICAgIGlmICgkbnBfdGFyZ2V0WzBdICE9ICRpbnB1dFswXSkgY29udGludWU7CiAgICAgICAgICAgIGlmIChjb3VudCgkbnBfdGFyZ2V0KSAhPSAkaW5wX2xlbikgY29udGludWU7CiAgICAgICAgICAgICRoaXQgPSBmYWxzZTsKICAgICAgICAgICAgZm9yZWFjaCAoJGlucHV0IGFzICRrMiA9PiAkdjIpIHsKICAgICAgICAgICAgICAgIGlmICgkdjIgPT0gJG5wX3RhcmdldFskazJdKSB7CiAgICAgICAgICAgICAgICAgICAgJGhpdCA9IHRydWU7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICRoaXQgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoJGhpdCkgcmV0dXJuICRucF9zcmM7CiAgICAgICAgfQogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICAvKioKICAgICAqIFRoaXMgY29udmVydHMgYW4gVVRGLTggZW5jb2RlZCBzdHJpbmcgdG8gaXRzIFVDUy00IHJlcHJlc2VudGF0aW9uCiAgICAgKiBCeSB0YWxraW5nIGFib3V0IFVDUy00ICJzdHJpbmdzIiB3ZSBtZWFuIGFycmF5cyBvZiAzMmJpdCBpbnRlZ2VycyByZXByZXNlbnRpbmcKICAgICAqIGVhY2ggb2YgdGhlICJjaGFycyIuIFRoaXMgaXMgZHVlIHRvIFBIUCBub3QgYmVpbmcgYWJsZSB0byBoYW5kbGUgc3RyaW5ncyB3aXRoCiAgICAgKiBiaXQgZGVwdGggZGlmZmVyZW50IGZyb20gOC4gVGhpcyBhcGxsaWVzIHRvIHRoZSByZXZlcnNlIG1ldGhvZCBfdWNzNF90b191dGY4KCksIHRvby4KICAgICAqIFRoZSBmb2xsb3dpbmcgVVRGLTggZW5jb2RpbmdzIGFyZSBzdXBwb3J0ZWQ6CiAgICAgKiBieXRlcyBiaXRzICByZXByZXNlbnRhdGlvbgogICAgICogMSAgICAgICAgNyAgMHh4eHh4eHgKICAgICAqIDIgICAgICAgMTEgIDExMHh4eHh4IDEweHh4eHh4CiAgICAgKiAzICAgICAgIDE2ICAxMTEweHh4eCAxMHh4eHh4eCAxMHh4eHh4eAogICAgICogNCAgICAgICAyMSAgMTExMTB4eHggMTB4eHh4eHggMTB4eHh4eHggMTB4eHh4eHgKICAgICAqIDUgICAgICAgMjYgIDExMTExMHh4IDEweHh4eHh4IDEweHh4eHh4IDEweHh4eHh4IDEweHh4eHh4CiAgICAgKiA2ICAgICAgIDMxICAxMTExMTEweCAxMHh4eHh4eCAxMHh4eHh4eCAxMHh4eHh4eCAxMHh4eHh4eCAxMHh4eHh4eAogICAgICogRWFjaCB4IHJlcHJlc2VudHMgYSBiaXQgdGhhdCBjYW4gYmUgdXNlZCB0byBzdG9yZSBjaGFyYWN0ZXIgZGF0YS4KICAgICAqIFRoZSBmaXZlIGFuZCBzaXggYnl0ZSBzZXF1ZW5jZXMgYXJlIHBhcnQgb2YgQW5uZXggRCBvZiBJU08vSUVDIDEwNjQ2LTE6MjAwMAogICAgICogQGFjY2VzcyAgIHByaXZhdGUKICAgICAqLwogICAgZnVuY3Rpb24gX3V0ZjhfdG9fdWNzNCgkaW5wdXQpCiAgICB7CiAgICAgICAgJG91dHB1dCA9IGFycmF5KCk7CiAgICAgICAgJG91dF9sZW4gPSAwOwogICAgICAgICRpbnBfbGVuID0gc3RybGVuKCRpbnB1dCk7CiAgICAgICAgJG1vZGUgPSAnbmV4dCc7CiAgICAgICAgJHRlc3QgPSAnbm9uZSc7CiAgICAgICAgZm9yICgkayA9IDA7ICRrIDwgJGlucF9sZW47ICsrJGspIHsKICAgICAgICAgICAgJHYgPSBvcmQoJGlucHV0eyRrfSk7IC8vIEV4dHJhY3QgYnl0ZSBmcm9tIGlucHV0IHN0cmluZwoKICAgICAgICAgICAgaWYgKCR2IDwgMTI4KSB7IC8vIFdlIGZvdW5kIGFuIEFTQ0lJIGNoYXIgLSBwdXQgaW50byBzdGlybmcgYXMgaXMKICAgICAgICAgICAgICAgICRvdXRwdXRbJG91dF9sZW5dID0gJHY7CiAgICAgICAgICAgICAgICArKyRvdXRfbGVuOwogICAgICAgICAgICAgICAgaWYgKCdhZGQnID09ICRtb2RlKSB7CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPl9lcnJvcignQ29udmVyc2lvbiBmcm9tIFVURi04IHRvIFVDUy00IGZhaWxlZDogbWFsZm9ybWVkIGlucHV0IGF0IGJ5dGUgJy4kayk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCduZXh0JyA9PSAkbW9kZSkgeyAvLyBUcnkgdG8gZmluZCB0aGUgbmV4dCBzdGFydCBieXRlOyBkZXRlcm1pbmUgdGhlIHdpZHRoIG9mIHRoZSBVbmljb2RlIGNoYXIKICAgICAgICAgICAgICAgICRzdGFydF9ieXRlID0gJHY7CiAgICAgICAgICAgICAgICAkbW9kZSA9ICdhZGQnOwogICAgICAgICAgICAgICAgJHRlc3QgPSAncmFuZ2UnOwogICAgICAgICAgICAgICAgaWYgKCR2ID4+IDUgPT0gNikgeyAvLyAmMTEweHh4eHggMTB4eHh4eAogICAgICAgICAgICAgICAgICAgICRuZXh0X2J5dGUgPSAwOyAvLyBUZWxscywgaG93IG1hbnkgdGltZXMgc3Vic2VxdWVudCBiaXRtYXNrcyBtdXN0IHJvdGF0ZSA2Yml0cyB0byB0aGUgbGVmdAogICAgICAgICAgICAgICAgICAgICR2ID0gKCR2IC0gMTkyKSA8PCA2OwogICAgICAgICAgICAgICAgfSBlbHNlaWYgKCR2ID4+IDQgPT0gMTQpIHsgLy8gJjExMTB4eHh4IDEweHh4eHh4IDEweHh4eHh4CiAgICAgICAgICAgICAgICAgICAgJG5leHRfYnl0ZSA9IDE7CiAgICAgICAgICAgICAgICAgICAgJHYgPSAoJHYgLSAyMjQpIDw8IDEyOwogICAgICAgICAgICAgICAgfSBlbHNlaWYgKCR2ID4+IDMgPT0gMzApIHsgLy8gJjExMTEweHh4IDEweHh4eHh4IDEweHh4eHh4IDEweHh4eHh4CiAgICAgICAgICAgICAgICAgICAgJG5leHRfYnl0ZSA9IDI7CiAgICAgICAgICAgICAgICAgICAgJHYgPSAoJHYgLSAyNDApIDw8IDE4OwogICAgICAgICAgICAgICAgfSBlbHNlaWYgKCR2ID4+IDIgPT0gNjIpIHsgLy8gJjExMTExMHh4IDEweHh4eHh4IDEweHh4eHh4IDEweHh4eHh4IDEweHh4eHh4CiAgICAgICAgICAgICAgICAgICAgJG5leHRfYnl0ZSA9IDM7CiAgICAgICAgICAgICAgICAgICAgJHYgPSAoJHYgLSAyNDgpIDw8IDI0OwogICAgICAgICAgICAgICAgfSBlbHNlaWYgKCR2ID4+IDEgPT0gMTI2KSB7IC8vICYxMTExMTEweCAxMHh4eHh4eCAxMHh4eHh4eCAxMHh4eHh4eCAxMHh4eHh4eCAxMHh4eHh4eAogICAgICAgICAgICAgICAgICAgICRuZXh0X2J5dGUgPSA0OwogICAgICAgICAgICAgICAgICAgICR2ID0gKCR2IC0gMjUyKSA8PCAzMDsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPl9lcnJvcignVGhpcyBtaWdodCBiZSBVVEYtOCwgYnV0IEkgZG9uXCd0IHVuZGVyc3RhbmQgaXQgYXQgYnl0ZSAnLiRrKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoJ2FkZCcgPT0gJG1vZGUpIHsKICAgICAgICAgICAgICAgICAgICAkb3V0cHV0WyRvdXRfbGVuXSA9IChpbnQpICR2OwogICAgICAgICAgICAgICAgICAgICsrJG91dF9sZW47CiAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCdhZGQnID09ICRtb2RlKSB7CiAgICAgICAgICAgICAgICBpZiAoISR0aGlzLT5fYWxsb3dfb3ZlcmxvbmcgJiYgJHRlc3QgPT0gJ3JhbmdlJykgewogICAgICAgICAgICAgICAgICAgICR0ZXN0ID0gJ25vbmUnOwogICAgICAgICAgICAgICAgICAgIGlmICgoJHYgPCAweEEwICYmICRzdGFydF9ieXRlID09IDB4RTApIHx8ICgkdiA8IDB4OTAgJiYgJHN0YXJ0X2J5dGUgPT0gMHhGMCkgfHwgKCR2ID4gMHg4RiAmJiAkc3RhcnRfYnl0ZSA9PSAweEY0KSkgewogICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+X2Vycm9yKCdCb2d1cyBVVEYtOCBjaGFyYWN0ZXIgZGV0ZWN0ZWQgKG91dCBvZiBsZWdhbCByYW5nZSkgYXQgYnl0ZSAnLiRrKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICgkdiA+PiA2ID09IDIpIHsgLy8gQml0IG1hc2sgbXVzdCBiZSAxMHh4eHh4eAogICAgICAgICAgICAgICAgICAgICR2ID0gKCR2IC0gMTI4KSA8PCAoJG5leHRfYnl0ZSAqIDYpOwogICAgICAgICAgICAgICAgICAgICRvdXRwdXRbKCRvdXRfbGVuIC0gMSldICs9ICR2OwogICAgICAgICAgICAgICAgICAgIC0tJG5leHRfYnl0ZTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPl9lcnJvcignQ29udmVyc2lvbiBmcm9tIFVURi04IHRvIFVDUy00IGZhaWxlZDogbWFsZm9ybWVkIGlucHV0IGF0IGJ5dGUgJy4kayk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKCRuZXh0X2J5dGUgPCAwKSB7CiAgICAgICAgICAgICAgICAgICAgJG1vZGUgPSAnbmV4dCc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9IC8vIGZvcgogICAgICAgIHJldHVybiAkb3V0cHV0OwogICAgfQoKICAgIC8qKgogICAgICogQ29udmVydCBVQ1MtNCBzdHJpbmcgaW50byBVVEYtOCBzdHJpbmcKICAgICAqIFNlZSBfdXRmOF90b191Y3M0KCkgZm9yIGRldGFpbHMKICAgICAqIEBhY2Nlc3MgICBwcml2YXRlCiAgICAgKi8KICAgIGZ1bmN0aW9uIF91Y3M0X3RvX3V0ZjgoJGlucHV0KQogICAgewogICAgICAgICRvdXRwdXQgPSAnJzsKICAgICAgICAkayA9IDA7CiAgICAgICAgZm9yZWFjaCAoJGlucHV0IGFzICR2KSB7CiAgICAgICAgICAgICsrJGs7CiAgICAgICAgICAgIC8vICR2ID0gb3JkKCR2KTsKICAgICAgICAgICAgaWYgKCR2IDwgMTI4KSB7IC8vIDdiaXQgYXJlIHRyYW5zZmVycmVkIGxpdGVyYWxseQogICAgICAgICAgICAgICAgJG91dHB1dCAuPSBjaHIoJHYpOwogICAgICAgICAgICB9IGVsc2VpZiAoJHYgPCAoMSA8PCAxMSkpIHsgLy8gMiBieXRlcwogICAgICAgICAgICAgICAgJG91dHB1dCAuPSBjaHIoMTkyICsgKCR2ID4+IDYpKSAuIGNocigxMjggKyAoJHYgJiA2MykpOwogICAgICAgICAgICB9IGVsc2VpZiAoJHYgPCAoMSA8PCAxNikpIHsgLy8gMyBieXRlcwogICAgICAgICAgICAgICAgJG91dHB1dCAuPSBjaHIoMjI0ICsgKCR2ID4+IDEyKSkgLiBjaHIoMTI4ICsgKCgkdiA+PiA2KSAmIDYzKSkgLiBjaHIoMTI4ICsgKCR2ICYgNjMpKTsKICAgICAgICAgICAgfSBlbHNlaWYgKCR2IDwgKDEgPDwgMjEpKSB7IC8vIDQgYnl0ZXMKICAgICAgICAgICAgICAgICRvdXRwdXQgLj0gY2hyKDI0MCArICgkdiA+PiAxOCkpIC4gY2hyKDEyOCArICgoJHYgPj4gMTIpICYgNjMpKQogICAgICAgICAgICAgICAgICAgICAgICAgLiBjaHIoMTI4ICsgKCgkdiA+PiA2KSAmIDYzKSkgLiBjaHIoMTI4ICsgKCR2ICYgNjMpKTsKICAgICAgICAgICAgfSBlbHNlaWYgKCR2IDwgKDEgPDwgMjYpKSB7IC8vIDUgYnl0ZXMKICAgICAgICAgICAgICAgICRvdXRwdXQgLj0gY2hyKDI0OCArICgkdiA+PiAyNCkpIC4gY2hyKDEyOCArICgoJHYgPj4gMTgpICYgNjMpKQogICAgICAgICAgICAgICAgICAgICAgICAgLiBjaHIoMTI4ICsgKCgkdiA+PiAxMikgJiA2MykpIC4gY2hyKDEyOCArICgoJHYgPj4gNikgJiA2MykpCiAgICAgICAgICAgICAgICAgICAgICAgICAuIGNocigxMjggKyAoJHYgJiA2MykpOwogICAgICAgICAgICB9IGVsc2VpZiAoJHYgPCAoMSA8PCAzMSkpIHsgLy8gNiBieXRlcwogICAgICAgICAgICAgICAgJG91dHB1dCAuPSBjaHIoMjUyICsgKCR2ID4+IDMwKSkgLiBjaHIoMTI4ICsgKCgkdiA+PiAyNCkgJiA2MykpCiAgICAgICAgICAgICAgICAgICAgICAgICAuIGNocigxMjggKyAoKCR2ID4+IDE4KSAmIDYzKSkgLiBjaHIoMTI4ICsgKCgkdiA+PiAxMikgJiA2MykpCiAgICAgICAgICAgICAgICAgICAgICAgICAuIGNocigxMjggKyAoKCR2ID4+IDYpICYgNjMpKSAuIGNocigxMjggKyAoJHYgJiA2MykpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJHRoaXMtPl9lcnJvcignQ29udmVyc2lvbiBmcm9tIFVDUy00IHRvIFVURi04IGZhaWxlZDogbWFsZm9ybWVkIGlucHV0IGF0IGJ5dGUgJy4kayk7CiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuICRvdXRwdXQ7CiAgICB9CgogICAgLyoqCiAgICAgICogQ29udmVydCBVQ1MtNCBhcnJheSBpbnRvIFVDUy00IHN0cmluZwogICAgICAqCiAgICAgICogQGFjY2VzcyAgIHByaXZhdGUKICAgICAgKi8KICAgIGZ1bmN0aW9uIF91Y3M0X3RvX3VjczRfc3RyaW5nKCRpbnB1dCkKICAgIHsKICAgICAgICAkb3V0cHV0ID0gJyc7CiAgICAgICAgLy8gVGFrZSBhcnJheSB2YWx1ZXMgYW5kIHNwbGl0IG91dHB1dCB0byA0IGJ5dGVzIHBlciB2YWx1ZQogICAgICAgIC8vIFRoZSBiaXQgbWFzayBpcyAyNTUsIHdoaWNoIHJlYWRzICYxMTExMTExMQogICAgICAgIGZvcmVhY2ggKCRpbnB1dCBhcyAkdikgewogICAgICAgICAgICAkb3V0cHV0IC49IGNocigoJHYgPj4gMjQpICYgMjU1KS5jaHIoKCR2ID4+IDE2KSAmIDI1NSkuY2hyKCgkdiA+PiA4KSAmIDI1NSkuY2hyKCR2ICYgMjU1KTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuICRvdXRwdXQ7CiAgICB9CgogICAgLyoqCiAgICAgICogQ29udmVydCBVQ1MtNCBzdHJpbiBpbnRvIFVDUy00IGdhcnJheQogICAgICAqCiAgICAgICogQGFjY2VzcyAgIHByaXZhdGUKICAgICAgKi8KICAgIGZ1bmN0aW9uIF91Y3M0X3N0cmluZ190b191Y3M0KCRpbnB1dCkKICAgIHsKICAgICAgICAkb3V0cHV0ID0gYXJyYXkoKTsKICAgICAgICAkaW5wX2xlbiA9IHN0cmxlbigkaW5wdXQpOwogICAgICAgIC8vIElucHV0IGxlbmd0aCBtdXN0IGJlIGRpdmlkYWJsZSBieSA0CiAgICAgICAgaWYgKCRpbnBfbGVuICUgNCkgewogICAgICAgICAgICAkdGhpcy0+X2Vycm9yKCdJbnB1dCBVQ1M0IHN0cmluZyBpcyBicm9rZW4nKTsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgICAgICAvLyBFbXB0eSBpbnB1dCAtIHJldHVybiBlbXB0eSBvdXRwdXQKICAgICAgICBpZiAoISRpbnBfbGVuKSByZXR1cm4gJG91dHB1dDsKICAgICAgICBmb3IgKCRpID0gMCwgJG91dF9sZW4gPSAtMTsgJGkgPCAkaW5wX2xlbjsgKyskaSkgewogICAgICAgICAgICAvLyBJbmNyZW1lbnQgb3V0cHV0IHBvc2l0aW9uIGV2ZXJ5IDQgaW5wdXQgYnl0ZXMKICAgICAgICAgICAgaWYgKCEoJGkgJSA0KSkgewogICAgICAgICAgICAgICAgJG91dF9sZW4rKzsKICAgICAgICAgICAgICAgICRvdXRwdXRbJG91dF9sZW5dID0gMDsKICAgICAgICAgICAgfQogICAgICAgICAgICAkb3V0cHV0WyRvdXRfbGVuXSArPSBvcmQoJGlucHV0eyRpfSkgPDwgKDggKiAoMyAtICgkaSAlIDQpICkgKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuICRvdXRwdXQ7CiAgICB9Cn0KCi8qKgoqIEFkYXB0ZXIgY2xhc3MgZm9yIGFsaWduaW5nIHRoZSBBUEkgb2YgaWRuYV9jb252ZXJ0IHdpdGggdGhhdCBvZiBOZXRfSUROQQoqIEBhdXRob3IgIE1hdHRoaWFzIFNvbW1lcmZlbGQgPG1zb0BwaGx5bGFicy5kZT4KKi8KY2xhc3MgTmV0X0lETkFfcGhwNCBleHRlbmRzIGlkbmFfY29udmVydAp7CiAgICAvKioKICAgICAqIFNldHMgYSBuZXcgb3B0aW9uIHZhbHVlLiBBdmFpbGFibGUgb3B0aW9ucyBhbmQgdmFsdWVzOgogICAgICogW2VuY29kaW5nIC0gVXNlIGVpdGhlciBVVEYtOCwgVUNTNCBhcyBhcnJheSBvciBVQ1M0IGFzIHN0cmluZyBhcyBpbnB1dCAoJ3V0ZjgnIGZvciBVVEYtOCwKICAgICAqICAgICAgICAgJ3VjczRfc3RyaW5nJyBhbmQgJ3VjczRfYXJyYXknIHJlc3BlY3RpdmVseSBmb3IgVUNTNCk7IFRoZSBvdXRwdXQgaXMgYWx3YXlzIFVURi04XQogICAgICogW292ZXJsb25nIC0gVW5pY29kZSBkb2VzIG5vdCBhbGxvdyB1bm5lY2Vzc2FyaWx5IGxvbmcgZW5jb2RpbmdzIG9mIGNoYXJzLAogICAgICogICAgICAgICAgICAgdG8gYWxsb3cgdGhpcywgc2V0IHRoaXMgcGFyYW1ldGVyIHRvIHRydWUsIGVsc2UgdG8gZmFsc2U7CiAgICAgKiAgICAgICAgICAgICBkZWZhdWx0IGlzIGZhbHNlLl0KICAgICAqIFtzdHJpY3QgLSB0cnVlOiBzdHJpY3QgbW9kZSwgZ29vZCBmb3IgcmVnaXN0cmF0aW9uIHB1cnBvc2VzIC0gQ2F1c2VzIGVycm9ycwogICAgICogICAgICAgICAgIG9uIGZhaWx1cmVzOyBmYWxzZTogbG9vc2UgbW9kZSwgaWRlYWwgZm9yICJ3aWxkbGlmZSIgYXBwbGljYXRpb25zCiAgICAgKiAgICAgICAgICAgYnkgc2lsZW50bHkgaWdub3JpbmcgZXJyb3JzIGFuZCByZXR1cm5pbmcgdGhlIG9yaWdpbmFsIGlucHV0IGluc3RlYWQKICAgICAqCiAgICAgKiBAcGFyYW0gICAgbWl4ZWQgICAgIFBhcmFtZXRlciB0byBzZXQgKHN0cmluZzogc2luZ2xlIHBhcmFtZXRlcjsgYXJyYXkgb2YgUGFyYW1ldGVyID0+IFZhbHVlIHBhaXJzKQogICAgICogQHBhcmFtICAgIHN0cmluZyAgICBWYWx1ZSB0byB1c2UgKGlmIHBhcmFtZXRlciAxIGlzIGEgc3RyaW5nKQogICAgICogQHJldHVybiAgIGJvb2xlYW4gICB0cnVlIG9uIHN1Y2Nlc3MsIGZhbHNlIG90aGVyd2lzZQogICAgICogQGFjY2VzcyAgIHB1YmxpYwogICAgICovCiAgICBmdW5jdGlvbiBzZXRQYXJhbXMoJG9wdGlvbiwgJHBhcmFtID0gZmFsc2UpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5JQy0+c2V0X3BhcmFtZXRlcnMoJG9wdGlvbiwgJHBhcmFtKTsKICAgIH0KfQoKPz4=]]></data>
	</file>
	<file>
	  <filename>/libs/DEV/1.1.3/idn/LICENCE</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ICAgICAgICAgICAgICAgICAgR05VIExFU1NFUiBHRU5FUkFMIFBVQkxJQyBMSUNFTlNFCiAgICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbiAyLjEsIEZlYnJ1YXJ5IDE5OTkKCiBDb3B5cmlnaHQgKEMpIDE5OTEsIDE5OTkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgICAgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQogRXZlcnlvbmUgaXMgcGVybWl0dGVkIHRvIGNvcHkgYW5kIGRpc3RyaWJ1dGUgdmVyYmF0aW0gY29waWVzCiBvZiB0aGlzIGxpY2Vuc2UgZG9jdW1lbnQsIGJ1dCBjaGFuZ2luZyBpdCBpcyBub3QgYWxsb3dlZC4KCltUaGlzIGlzIHRoZSBmaXJzdCByZWxlYXNlZCB2ZXJzaW9uIG9mIHRoZSBMZXNzZXIgR1BMLiAgSXQgYWxzbyBjb3VudHMKIGFzIHRoZSBzdWNjZXNzb3Igb2YgdGhlIEdOVSBMaWJyYXJ5IFB1YmxpYyBMaWNlbnNlLCB2ZXJzaW9uIDIsIGhlbmNlCiB0aGUgdmVyc2lvbiBudW1iZXIgMi4xLl0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmVhbWJsZQoKICBUaGUgbGljZW5zZXMgZm9yIG1vc3Qgc29mdHdhcmUgYXJlIGRlc2lnbmVkIHRvIHRha2UgYXdheSB5b3VyCmZyZWVkb20gdG8gc2hhcmUgYW5kIGNoYW5nZSBpdC4gIEJ5IGNvbnRyYXN0LCB0aGUgR05VIEdlbmVyYWwgUHVibGljCkxpY2Vuc2VzIGFyZSBpbnRlbmRlZCB0byBndWFyYW50ZWUgeW91ciBmcmVlZG9tIHRvIHNoYXJlIGFuZCBjaGFuZ2UKZnJlZSBzb2Z0d2FyZS0tdG8gbWFrZSBzdXJlIHRoZSBzb2Z0d2FyZSBpcyBmcmVlIGZvciBhbGwgaXRzIHVzZXJzLgoKICBUaGlzIGxpY2Vuc2UsIHRoZSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgYXBwbGllcyB0byBzb21lCnNwZWNpYWxseSBkZXNpZ25hdGVkIHNvZnR3YXJlIHBhY2thZ2VzLS10eXBpY2FsbHkgbGlicmFyaWVzLS1vZiB0aGUKRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIGFuZCBvdGhlciBhdXRob3JzIHdobyBkZWNpZGUgdG8gdXNlIGl0LiAgWW91CmNhbiB1c2UgaXQgdG9vLCBidXQgd2Ugc3VnZ2VzdCB5b3UgZmlyc3QgdGhpbmsgY2FyZWZ1bGx5IGFib3V0IHdoZXRoZXIKdGhpcyBsaWNlbnNlIG9yIHRoZSBvcmRpbmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGlzIHRoZSBiZXR0ZXIKc3RyYXRlZ3kgdG8gdXNlIGluIGFueSBwYXJ0aWN1bGFyIGNhc2UsIGJhc2VkIG9uIHRoZSBleHBsYW5hdGlvbnMgYmVsb3cuCgogIFdoZW4gd2Ugc3BlYWsgb2YgZnJlZSBzb2Z0d2FyZSwgd2UgYXJlIHJlZmVycmluZyB0byBmcmVlZG9tIG9mIHVzZSwKbm90IHByaWNlLiAgT3VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VzIGFyZSBkZXNpZ25lZCB0byBtYWtlIHN1cmUgdGhhdAp5b3UgaGF2ZSB0aGUgZnJlZWRvbSB0byBkaXN0cmlidXRlIGNvcGllcyBvZiBmcmVlIHNvZnR3YXJlIChhbmQgY2hhcmdlCmZvciB0aGlzIHNlcnZpY2UgaWYgeW91IHdpc2gpOyB0aGF0IHlvdSByZWNlaXZlIHNvdXJjZSBjb2RlIG9yIGNhbiBnZXQKaXQgaWYgeW91IHdhbnQgaXQ7IHRoYXQgeW91IGNhbiBjaGFuZ2UgdGhlIHNvZnR3YXJlIGFuZCB1c2UgcGllY2VzIG9mCml0IGluIG5ldyBmcmVlIHByb2dyYW1zOyBhbmQgdGhhdCB5b3UgYXJlIGluZm9ybWVkIHRoYXQgeW91IGNhbiBkbwp0aGVzZSB0aGluZ3MuCgogIFRvIHByb3RlY3QgeW91ciByaWdodHMsIHdlIG5lZWQgdG8gbWFrZSByZXN0cmljdGlvbnMgdGhhdCBmb3JiaWQKZGlzdHJpYnV0b3JzIHRvIGRlbnkgeW91IHRoZXNlIHJpZ2h0cyBvciB0byBhc2sgeW91IHRvIHN1cnJlbmRlciB0aGVzZQpyaWdodHMuICBUaGVzZSByZXN0cmljdGlvbnMgdHJhbnNsYXRlIHRvIGNlcnRhaW4gcmVzcG9uc2liaWxpdGllcyBmb3IKeW91IGlmIHlvdSBkaXN0cmlidXRlIGNvcGllcyBvZiB0aGUgbGlicmFyeSBvciBpZiB5b3UgbW9kaWZ5IGl0LgoKICBGb3IgZXhhbXBsZSwgaWYgeW91IGRpc3RyaWJ1dGUgY29waWVzIG9mIHRoZSBsaWJyYXJ5LCB3aGV0aGVyIGdyYXRpcwpvciBmb3IgYSBmZWUsIHlvdSBtdXN0IGdpdmUgdGhlIHJlY2lwaWVudHMgYWxsIHRoZSByaWdodHMgdGhhdCB3ZSBnYXZlCnlvdS4gIFlvdSBtdXN0IG1ha2Ugc3VyZSB0aGF0IHRoZXksIHRvbywgcmVjZWl2ZSBvciBjYW4gZ2V0IHRoZSBzb3VyY2UKY29kZS4gIElmIHlvdSBsaW5rIG90aGVyIGNvZGUgd2l0aCB0aGUgbGlicmFyeSwgeW91IG11c3QgcHJvdmlkZQpjb21wbGV0ZSBvYmplY3QgZmlsZXMgdG8gdGhlIHJlY2lwaWVudHMsIHNvIHRoYXQgdGhleSBjYW4gcmVsaW5rIHRoZW0Kd2l0aCB0aGUgbGlicmFyeSBhZnRlciBtYWtpbmcgY2hhbmdlcyB0byB0aGUgbGlicmFyeSBhbmQgcmVjb21waWxpbmcKaXQuICBBbmQgeW91IG11c3Qgc2hvdyB0aGVtIHRoZXNlIHRlcm1zIHNvIHRoZXkga25vdyB0aGVpciByaWdodHMuCgogIFdlIHByb3RlY3QgeW91ciByaWdodHMgd2l0aCBhIHR3by1zdGVwIG1ldGhvZDogKDEpIHdlIGNvcHlyaWdodCB0aGUKbGlicmFyeSwgYW5kICgyKSB3ZSBvZmZlciB5b3UgdGhpcyBsaWNlbnNlLCB3aGljaCBnaXZlcyB5b3UgbGVnYWwKcGVybWlzc2lvbiB0byBjb3B5LCBkaXN0cmlidXRlIGFuZC9vciBtb2RpZnkgdGhlIGxpYnJhcnkuCgogIFRvIHByb3RlY3QgZWFjaCBkaXN0cmlidXRvciwgd2Ugd2FudCB0byBtYWtlIGl0IHZlcnkgY2xlYXIgdGhhdAp0aGVyZSBpcyBubyB3YXJyYW50eSBmb3IgdGhlIGZyZWUgbGlicmFyeS4gIEFsc28sIGlmIHRoZSBsaWJyYXJ5IGlzCm1vZGlmaWVkIGJ5IHNvbWVvbmUgZWxzZSBhbmQgcGFzc2VkIG9uLCB0aGUgcmVjaXBpZW50cyBzaG91bGQga25vdwp0aGF0IHdoYXQgdGhleSBoYXZlIGlzIG5vdCB0aGUgb3JpZ2luYWwgdmVyc2lvbiwgc28gdGhhdCB0aGUgb3JpZ2luYWwKYXV0aG9yJ3MgcmVwdXRhdGlvbiB3aWxsIG5vdCBiZSBhZmZlY3RlZCBieSBwcm9ibGVtcyB0aGF0IG1pZ2h0IGJlCmludHJvZHVjZWQgYnkgb3RoZXJzLgoKICBGaW5hbGx5LCBzb2Z0d2FyZSBwYXRlbnRzIHBvc2UgYSBjb25zdGFudCB0aHJlYXQgdG8gdGhlIGV4aXN0ZW5jZSBvZgphbnkgZnJlZSBwcm9ncmFtLiAgV2Ugd2lzaCB0byBtYWtlIHN1cmUgdGhhdCBhIGNvbXBhbnkgY2Fubm90CmVmZmVjdGl2ZWx5IHJlc3RyaWN0IHRoZSB1c2VycyBvZiBhIGZyZWUgcHJvZ3JhbSBieSBvYnRhaW5pbmcgYQpyZXN0cmljdGl2ZSBsaWNlbnNlIGZyb20gYSBwYXRlbnQgaG9sZGVyLiAgVGhlcmVmb3JlLCB3ZSBpbnNpc3QgdGhhdAphbnkgcGF0ZW50IGxpY2Vuc2Ugb2J0YWluZWQgZm9yIGEgdmVyc2lvbiBvZiB0aGUgbGlicmFyeSBtdXN0IGJlCmNvbnNpc3RlbnQgd2l0aCB0aGUgZnVsbCBmcmVlZG9tIG9mIHVzZSBzcGVjaWZpZWQgaW4gdGhpcyBsaWNlbnNlLgoKICBNb3N0IEdOVSBzb2Z0d2FyZSwgaW5jbHVkaW5nIHNvbWUgbGlicmFyaWVzLCBpcyBjb3ZlcmVkIGJ5IHRoZQpvcmRpbmFyeSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIFRoaXMgbGljZW5zZSwgdGhlIEdOVSBMZXNzZXIKR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgYXBwbGllcyB0byBjZXJ0YWluIGRlc2lnbmF0ZWQgbGlicmFyaWVzLCBhbmQKaXMgcXVpdGUgZGlmZmVyZW50IGZyb20gdGhlIG9yZGluYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBXZSB1c2UKdGhpcyBsaWNlbnNlIGZvciBjZXJ0YWluIGxpYnJhcmllcyBpbiBvcmRlciB0byBwZXJtaXQgbGlua2luZyB0aG9zZQpsaWJyYXJpZXMgaW50byBub24tZnJlZSBwcm9ncmFtcy4KCiAgV2hlbiBhIHByb2dyYW0gaXMgbGlua2VkIHdpdGggYSBsaWJyYXJ5LCB3aGV0aGVyIHN0YXRpY2FsbHkgb3IgdXNpbmcKYSBzaGFyZWQgbGlicmFyeSwgdGhlIGNvbWJpbmF0aW9uIG9mIHRoZSB0d28gaXMgbGVnYWxseSBzcGVha2luZyBhCmNvbWJpbmVkIHdvcmssIGEgZGVyaXZhdGl2ZSBvZiB0aGUgb3JpZ2luYWwgbGlicmFyeS4gIFRoZSBvcmRpbmFyeQpHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHRoZXJlZm9yZSBwZXJtaXRzIHN1Y2ggbGlua2luZyBvbmx5IGlmIHRoZQplbnRpcmUgY29tYmluYXRpb24gZml0cyBpdHMgY3JpdGVyaWEgb2YgZnJlZWRvbS4gIFRoZSBMZXNzZXIgR2VuZXJhbApQdWJsaWMgTGljZW5zZSBwZXJtaXRzIG1vcmUgbGF4IGNyaXRlcmlhIGZvciBsaW5raW5nIG90aGVyIGNvZGUgd2l0aAp0aGUgbGlicmFyeS4KCiAgV2UgY2FsbCB0aGlzIGxpY2Vuc2UgdGhlICJMZXNzZXIiIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYmVjYXVzZSBpdApkb2VzIExlc3MgdG8gcHJvdGVjdCB0aGUgdXNlcidzIGZyZWVkb20gdGhhbiB0aGUgb3JkaW5hcnkgR2VuZXJhbApQdWJsaWMgTGljZW5zZS4gIEl0IGFsc28gcHJvdmlkZXMgb3RoZXIgZnJlZSBzb2Z0d2FyZSBkZXZlbG9wZXJzIExlc3MKb2YgYW4gYWR2YW50YWdlIG92ZXIgY29tcGV0aW5nIG5vbi1mcmVlIHByb2dyYW1zLiAgVGhlc2UgZGlzYWR2YW50YWdlcwphcmUgdGhlIHJlYXNvbiB3ZSB1c2UgdGhlIG9yZGluYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1hbnkKbGlicmFyaWVzLiAgSG93ZXZlciwgdGhlIExlc3NlciBsaWNlbnNlIHByb3ZpZGVzIGFkdmFudGFnZXMgaW4gY2VydGFpbgpzcGVjaWFsIGNpcmN1bXN0YW5jZXMuCgogIEZvciBleGFtcGxlLCBvbiByYXJlIG9jY2FzaW9ucywgdGhlcmUgbWF5IGJlIGEgc3BlY2lhbCBuZWVkIHRvCmVuY291cmFnZSB0aGUgd2lkZXN0IHBvc3NpYmxlIHVzZSBvZiBhIGNlcnRhaW4gbGlicmFyeSwgc28gdGhhdCBpdCBiZWNvbWVzCmEgZGUtZmFjdG8gc3RhbmRhcmQuICBUbyBhY2hpZXZlIHRoaXMsIG5vbi1mcmVlIHByb2dyYW1zIG11c3QgYmUKYWxsb3dlZCB0byB1c2UgdGhlIGxpYnJhcnkuICBBIG1vcmUgZnJlcXVlbnQgY2FzZSBpcyB0aGF0IGEgZnJlZQpsaWJyYXJ5IGRvZXMgdGhlIHNhbWUgam9iIGFzIHdpZGVseSB1c2VkIG5vbi1mcmVlIGxpYnJhcmllcy4gIEluIHRoaXMKY2FzZSwgdGhlcmUgaXMgbGl0dGxlIHRvIGdhaW4gYnkgbGltaXRpbmcgdGhlIGZyZWUgbGlicmFyeSB0byBmcmVlCnNvZnR3YXJlIG9ubHksIHNvIHdlIHVzZSB0aGUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuCgogIEluIG90aGVyIGNhc2VzLCBwZXJtaXNzaW9uIHRvIHVzZSBhIHBhcnRpY3VsYXIgbGlicmFyeSBpbiBub24tZnJlZQpwcm9ncmFtcyBlbmFibGVzIGEgZ3JlYXRlciBudW1iZXIgb2YgcGVvcGxlIHRvIHVzZSBhIGxhcmdlIGJvZHkgb2YKZnJlZSBzb2Z0d2FyZS4gIEZvciBleGFtcGxlLCBwZXJtaXNzaW9uIHRvIHVzZSB0aGUgR05VIEMgTGlicmFyeSBpbgpub24tZnJlZSBwcm9ncmFtcyBlbmFibGVzIG1hbnkgbW9yZSBwZW9wbGUgdG8gdXNlIHRoZSB3aG9sZSBHTlUKb3BlcmF0aW5nIHN5c3RlbSwgYXMgd2VsbCBhcyBpdHMgdmFyaWFudCwgdGhlIEdOVS9MaW51eCBvcGVyYXRpbmcKc3lzdGVtLgoKICBBbHRob3VnaCB0aGUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgaXMgTGVzcyBwcm90ZWN0aXZlIG9mIHRoZQp1c2VycycgZnJlZWRvbSwgaXQgZG9lcyBlbnN1cmUgdGhhdCB0aGUgdXNlciBvZiBhIHByb2dyYW0gdGhhdCBpcwpsaW5rZWQgd2l0aCB0aGUgTGlicmFyeSBoYXMgdGhlIGZyZWVkb20gYW5kIHRoZSB3aGVyZXdpdGhhbCB0byBydW4KdGhhdCBwcm9ncmFtIHVzaW5nIGEgbW9kaWZpZWQgdmVyc2lvbiBvZiB0aGUgTGlicmFyeS4KCiAgVGhlIHByZWNpc2UgdGVybXMgYW5kIGNvbmRpdGlvbnMgZm9yIGNvcHlpbmcsIGRpc3RyaWJ1dGlvbiBhbmQKbW9kaWZpY2F0aW9uIGZvbGxvdy4gIFBheSBjbG9zZSBhdHRlbnRpb24gdG8gdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBhCiJ3b3JrIGJhc2VkIG9uIHRoZSBsaWJyYXJ5IiBhbmQgYSAid29yayB0aGF0IHVzZXMgdGhlIGxpYnJhcnkiLiAgVGhlCmZvcm1lciBjb250YWlucyBjb2RlIGRlcml2ZWQgZnJvbSB0aGUgbGlicmFyeSwgd2hlcmVhcyB0aGUgbGF0dGVyIG11c3QKYmUgY29tYmluZWQgd2l0aCB0aGUgbGlicmFyeSBpbiBvcmRlciB0byBydW4uCgogICAgICAgICAgICAgICAgICBHTlUgTEVTU0VSIEdFTkVSQUwgUFVCTElDIExJQ0VOU0UKICAgVEVSTVMgQU5EIENPTkRJVElPTlMgRk9SIENPUFlJTkcsIERJU1RSSUJVVElPTiBBTkQgTU9ESUZJQ0FUSU9OCgogIDAuIFRoaXMgTGljZW5zZSBBZ3JlZW1lbnQgYXBwbGllcyB0byBhbnkgc29mdHdhcmUgbGlicmFyeSBvciBvdGhlcgpwcm9ncmFtIHdoaWNoIGNvbnRhaW5zIGEgbm90aWNlIHBsYWNlZCBieSB0aGUgY29weXJpZ2h0IGhvbGRlciBvcgpvdGhlciBhdXRob3JpemVkIHBhcnR5IHNheWluZyBpdCBtYXkgYmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mCnRoaXMgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKGFsc28gY2FsbGVkICJ0aGlzIExpY2Vuc2UiKS4KRWFjaCBsaWNlbnNlZSBpcyBhZGRyZXNzZWQgYXMgInlvdSIuCgogIEEgImxpYnJhcnkiIG1lYW5zIGEgY29sbGVjdGlvbiBvZiBzb2Z0d2FyZSBmdW5jdGlvbnMgYW5kL29yIGRhdGEKcHJlcGFyZWQgc28gYXMgdG8gYmUgY29udmVuaWVudGx5IGxpbmtlZCB3aXRoIGFwcGxpY2F0aW9uIHByb2dyYW1zCih3aGljaCB1c2Ugc29tZSBvZiB0aG9zZSBmdW5jdGlvbnMgYW5kIGRhdGEpIHRvIGZvcm0gZXhlY3V0YWJsZXMuCgogIFRoZSAiTGlicmFyeSIsIGJlbG93LCByZWZlcnMgdG8gYW55IHN1Y2ggc29mdHdhcmUgbGlicmFyeSBvciB3b3JrCndoaWNoIGhhcyBiZWVuIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZXNlIHRlcm1zLiAgQSAid29yayBiYXNlZCBvbiB0aGUKTGlicmFyeSIgbWVhbnMgZWl0aGVyIHRoZSBMaWJyYXJ5IG9yIGFueSBkZXJpdmF0aXZlIHdvcmsgdW5kZXIKY29weXJpZ2h0IGxhdzogdGhhdCBpcyB0byBzYXksIGEgd29yayBjb250YWluaW5nIHRoZSBMaWJyYXJ5IG9yIGEKcG9ydGlvbiBvZiBpdCwgZWl0aGVyIHZlcmJhdGltIG9yIHdpdGggbW9kaWZpY2F0aW9ucyBhbmQvb3IgdHJhbnNsYXRlZApzdHJhaWdodGZvcndhcmRseSBpbnRvIGFub3RoZXIgbGFuZ3VhZ2UuICAoSGVyZWluYWZ0ZXIsIHRyYW5zbGF0aW9uIGlzCmluY2x1ZGVkIHdpdGhvdXQgbGltaXRhdGlvbiBpbiB0aGUgdGVybSAibW9kaWZpY2F0aW9uIi4pCgogICJTb3VyY2UgY29kZSIgZm9yIGEgd29yayBtZWFucyB0aGUgcHJlZmVycmVkIGZvcm0gb2YgdGhlIHdvcmsgZm9yCm1ha2luZyBtb2RpZmljYXRpb25zIHRvIGl0LiAgRm9yIGEgbGlicmFyeSwgY29tcGxldGUgc291cmNlIGNvZGUgbWVhbnMKYWxsIHRoZSBzb3VyY2UgY29kZSBmb3IgYWxsIG1vZHVsZXMgaXQgY29udGFpbnMsIHBsdXMgYW55IGFzc29jaWF0ZWQKaW50ZXJmYWNlIGRlZmluaXRpb24gZmlsZXMsIHBsdXMgdGhlIHNjcmlwdHMgdXNlZCB0byBjb250cm9sIGNvbXBpbGF0aW9uCmFuZCBpbnN0YWxsYXRpb24gb2YgdGhlIGxpYnJhcnkuCgogIEFjdGl2aXRpZXMgb3RoZXIgdGhhbiBjb3B5aW5nLCBkaXN0cmlidXRpb24gYW5kIG1vZGlmaWNhdGlvbiBhcmUgbm90CmNvdmVyZWQgYnkgdGhpcyBMaWNlbnNlOyB0aGV5IGFyZSBvdXRzaWRlIGl0cyBzY29wZS4gIFRoZSBhY3Qgb2YKcnVubmluZyBhIHByb2dyYW0gdXNpbmcgdGhlIExpYnJhcnkgaXMgbm90IHJlc3RyaWN0ZWQsIGFuZCBvdXRwdXQgZnJvbQpzdWNoIGEgcHJvZ3JhbSBpcyBjb3ZlcmVkIG9ubHkgaWYgaXRzIGNvbnRlbnRzIGNvbnN0aXR1dGUgYSB3b3JrIGJhc2VkCm9uIHRoZSBMaWJyYXJ5IChpbmRlcGVuZGVudCBvZiB0aGUgdXNlIG9mIHRoZSBMaWJyYXJ5IGluIGEgdG9vbCBmb3IKd3JpdGluZyBpdCkuICBXaGV0aGVyIHRoYXQgaXMgdHJ1ZSBkZXBlbmRzIG9uIHdoYXQgdGhlIExpYnJhcnkgZG9lcwphbmQgd2hhdCB0aGUgcHJvZ3JhbSB0aGF0IHVzZXMgdGhlIExpYnJhcnkgZG9lcy4KCiAgMS4gWW91IG1heSBjb3B5IGFuZCBkaXN0cmlidXRlIHZlcmJhdGltIGNvcGllcyBvZiB0aGUgTGlicmFyeSdzCmNvbXBsZXRlIHNvdXJjZSBjb2RlIGFzIHlvdSByZWNlaXZlIGl0LCBpbiBhbnkgbWVkaXVtLCBwcm92aWRlZCB0aGF0CnlvdSBjb25zcGljdW91c2x5IGFuZCBhcHByb3ByaWF0ZWx5IHB1Ymxpc2ggb24gZWFjaCBjb3B5IGFuCmFwcHJvcHJpYXRlIGNvcHlyaWdodCBub3RpY2UgYW5kIGRpc2NsYWltZXIgb2Ygd2FycmFudHk7IGtlZXAgaW50YWN0CmFsbCB0aGUgbm90aWNlcyB0aGF0IHJlZmVyIHRvIHRoaXMgTGljZW5zZSBhbmQgdG8gdGhlIGFic2VuY2Ugb2YgYW55CndhcnJhbnR5OyBhbmQgZGlzdHJpYnV0ZSBhIGNvcHkgb2YgdGhpcyBMaWNlbnNlIGFsb25nIHdpdGggdGhlCkxpYnJhcnkuCgogIFlvdSBtYXkgY2hhcmdlIGEgZmVlIGZvciB0aGUgcGh5c2ljYWwgYWN0IG9mIHRyYW5zZmVycmluZyBhIGNvcHksCmFuZCB5b3UgbWF5IGF0IHlvdXIgb3B0aW9uIG9mZmVyIHdhcnJhbnR5IHByb3RlY3Rpb24gaW4gZXhjaGFuZ2UgZm9yIGEKZmVlLgoKICAyLiBZb3UgbWF5IG1vZGlmeSB5b3VyIGNvcHkgb3IgY29waWVzIG9mIHRoZSBMaWJyYXJ5IG9yIGFueSBwb3J0aW9uCm9mIGl0LCB0aHVzIGZvcm1pbmcgYSB3b3JrIGJhc2VkIG9uIHRoZSBMaWJyYXJ5LCBhbmQgY29weSBhbmQKZGlzdHJpYnV0ZSBzdWNoIG1vZGlmaWNhdGlvbnMgb3Igd29yayB1bmRlciB0aGUgdGVybXMgb2YgU2VjdGlvbiAxCmFib3ZlLCBwcm92aWRlZCB0aGF0IHlvdSBhbHNvIG1lZXQgYWxsIG9mIHRoZXNlIGNvbmRpdGlvbnM6CgogICAgYSkgVGhlIG1vZGlmaWVkIHdvcmsgbXVzdCBpdHNlbGYgYmUgYSBzb2Z0d2FyZSBsaWJyYXJ5LgoKICAgIGIpIFlvdSBtdXN0IGNhdXNlIHRoZSBmaWxlcyBtb2RpZmllZCB0byBjYXJyeSBwcm9taW5lbnQgbm90aWNlcwogICAgc3RhdGluZyB0aGF0IHlvdSBjaGFuZ2VkIHRoZSBmaWxlcyBhbmQgdGhlIGRhdGUgb2YgYW55IGNoYW5nZS4KCiAgICBjKSBZb3UgbXVzdCBjYXVzZSB0aGUgd2hvbGUgb2YgdGhlIHdvcmsgdG8gYmUgbGljZW5zZWQgYXQgbm8KICAgIGNoYXJnZSB0byBhbGwgdGhpcmQgcGFydGllcyB1bmRlciB0aGUgdGVybXMgb2YgdGhpcyBMaWNlbnNlLgoKICAgIGQpIElmIGEgZmFjaWxpdHkgaW4gdGhlIG1vZGlmaWVkIExpYnJhcnkgcmVmZXJzIHRvIGEgZnVuY3Rpb24gb3IgYQogICAgdGFibGUgb2YgZGF0YSB0byBiZSBzdXBwbGllZCBieSBhbiBhcHBsaWNhdGlvbiBwcm9ncmFtIHRoYXQgdXNlcwogICAgdGhlIGZhY2lsaXR5LCBvdGhlciB0aGFuIGFzIGFuIGFyZ3VtZW50IHBhc3NlZCB3aGVuIHRoZSBmYWNpbGl0eQogICAgaXMgaW52b2tlZCwgdGhlbiB5b3UgbXVzdCBtYWtlIGEgZ29vZCBmYWl0aCBlZmZvcnQgdG8gZW5zdXJlIHRoYXQsCiAgICBpbiB0aGUgZXZlbnQgYW4gYXBwbGljYXRpb24gZG9lcyBub3Qgc3VwcGx5IHN1Y2ggZnVuY3Rpb24gb3IKICAgIHRhYmxlLCB0aGUgZmFjaWxpdHkgc3RpbGwgb3BlcmF0ZXMsIGFuZCBwZXJmb3JtcyB3aGF0ZXZlciBwYXJ0IG9mCiAgICBpdHMgcHVycG9zZSByZW1haW5zIG1lYW5pbmdmdWwuCgogICAgKEZvciBleGFtcGxlLCBhIGZ1bmN0aW9uIGluIGEgbGlicmFyeSB0byBjb21wdXRlIHNxdWFyZSByb290cyBoYXMKICAgIGEgcHVycG9zZSB0aGF0IGlzIGVudGlyZWx5IHdlbGwtZGVmaW5lZCBpbmRlcGVuZGVudCBvZiB0aGUKICAgIGFwcGxpY2F0aW9uLiAgVGhlcmVmb3JlLCBTdWJzZWN0aW9uIDJkIHJlcXVpcmVzIHRoYXQgYW55CiAgICBhcHBsaWNhdGlvbi1zdXBwbGllZCBmdW5jdGlvbiBvciB0YWJsZSB1c2VkIGJ5IHRoaXMgZnVuY3Rpb24gbXVzdAogICAgYmUgb3B0aW9uYWw6IGlmIHRoZSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBzdXBwbHkgaXQsIHRoZSBzcXVhcmUKICAgIHJvb3QgZnVuY3Rpb24gbXVzdCBzdGlsbCBjb21wdXRlIHNxdWFyZSByb290cy4pCgpUaGVzZSByZXF1aXJlbWVudHMgYXBwbHkgdG8gdGhlIG1vZGlmaWVkIHdvcmsgYXMgYSB3aG9sZS4gIElmCmlkZW50aWZpYWJsZSBzZWN0aW9ucyBvZiB0aGF0IHdvcmsgYXJlIG5vdCBkZXJpdmVkIGZyb20gdGhlIExpYnJhcnksCmFuZCBjYW4gYmUgcmVhc29uYWJseSBjb25zaWRlcmVkIGluZGVwZW5kZW50IGFuZCBzZXBhcmF0ZSB3b3JrcyBpbgp0aGVtc2VsdmVzLCB0aGVuIHRoaXMgTGljZW5zZSwgYW5kIGl0cyB0ZXJtcywgZG8gbm90IGFwcGx5IHRvIHRob3NlCnNlY3Rpb25zIHdoZW4geW91IGRpc3RyaWJ1dGUgdGhlbSBhcyBzZXBhcmF0ZSB3b3Jrcy4gIEJ1dCB3aGVuIHlvdQpkaXN0cmlidXRlIHRoZSBzYW1lIHNlY3Rpb25zIGFzIHBhcnQgb2YgYSB3aG9sZSB3aGljaCBpcyBhIHdvcmsgYmFzZWQKb24gdGhlIExpYnJhcnksIHRoZSBkaXN0cmlidXRpb24gb2YgdGhlIHdob2xlIG11c3QgYmUgb24gdGhlIHRlcm1zIG9mCnRoaXMgTGljZW5zZSwgd2hvc2UgcGVybWlzc2lvbnMgZm9yIG90aGVyIGxpY2Vuc2VlcyBleHRlbmQgdG8gdGhlCmVudGlyZSB3aG9sZSwgYW5kIHRodXMgdG8gZWFjaCBhbmQgZXZlcnkgcGFydCByZWdhcmRsZXNzIG9mIHdobyB3cm90ZQppdC4KClRodXMsIGl0IGlzIG5vdCB0aGUgaW50ZW50IG9mIHRoaXMgc2VjdGlvbiB0byBjbGFpbSByaWdodHMgb3IgY29udGVzdAp5b3VyIHJpZ2h0cyB0byB3b3JrIHdyaXR0ZW4gZW50aXJlbHkgYnkgeW91OyByYXRoZXIsIHRoZSBpbnRlbnQgaXMgdG8KZXhlcmNpc2UgdGhlIHJpZ2h0IHRvIGNvbnRyb2wgdGhlIGRpc3RyaWJ1dGlvbiBvZiBkZXJpdmF0aXZlIG9yCmNvbGxlY3RpdmUgd29ya3MgYmFzZWQgb24gdGhlIExpYnJhcnkuCgpJbiBhZGRpdGlvbiwgbWVyZSBhZ2dyZWdhdGlvbiBvZiBhbm90aGVyIHdvcmsgbm90IGJhc2VkIG9uIHRoZSBMaWJyYXJ5CndpdGggdGhlIExpYnJhcnkgKG9yIHdpdGggYSB3b3JrIGJhc2VkIG9uIHRoZSBMaWJyYXJ5KSBvbiBhIHZvbHVtZSBvZgphIHN0b3JhZ2Ugb3IgZGlzdHJpYnV0aW9uIG1lZGl1bSBkb2VzIG5vdCBicmluZyB0aGUgb3RoZXIgd29yayB1bmRlcgp0aGUgc2NvcGUgb2YgdGhpcyBMaWNlbnNlLgoKICAzLiBZb3UgbWF5IG9wdCB0byBhcHBseSB0aGUgdGVybXMgb2YgdGhlIG9yZGluYXJ5IEdOVSBHZW5lcmFsIFB1YmxpYwpMaWNlbnNlIGluc3RlYWQgb2YgdGhpcyBMaWNlbnNlIHRvIGEgZ2l2ZW4gY29weSBvZiB0aGUgTGlicmFyeS4gIFRvIGRvCnRoaXMsIHlvdSBtdXN0IGFsdGVyIGFsbCB0aGUgbm90aWNlcyB0aGF0IHJlZmVyIHRvIHRoaXMgTGljZW5zZSwgc28KdGhhdCB0aGV5IHJlZmVyIHRvIHRoZSBvcmRpbmFyeSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgdmVyc2lvbiAyLAppbnN0ZWFkIG9mIHRvIHRoaXMgTGljZW5zZS4gIChJZiBhIG5ld2VyIHZlcnNpb24gdGhhbiB2ZXJzaW9uIDIgb2YgdGhlCm9yZGluYXJ5IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGhhcyBhcHBlYXJlZCwgdGhlbiB5b3UgY2FuIHNwZWNpZnkKdGhhdCB2ZXJzaW9uIGluc3RlYWQgaWYgeW91IHdpc2guKSAgRG8gbm90IG1ha2UgYW55IG90aGVyIGNoYW5nZSBpbgp0aGVzZSBub3RpY2VzLgoKICBPbmNlIHRoaXMgY2hhbmdlIGlzIG1hZGUgaW4gYSBnaXZlbiBjb3B5LCBpdCBpcyBpcnJldmVyc2libGUgZm9yCnRoYXQgY29weSwgc28gdGhlIG9yZGluYXJ5IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFwcGxpZXMgdG8gYWxsCnN1YnNlcXVlbnQgY29waWVzIGFuZCBkZXJpdmF0aXZlIHdvcmtzIG1hZGUgZnJvbSB0aGF0IGNvcHkuCgogIFRoaXMgb3B0aW9uIGlzIHVzZWZ1bCB3aGVuIHlvdSB3aXNoIHRvIGNvcHkgcGFydCBvZiB0aGUgY29kZSBvZgp0aGUgTGlicmFyeSBpbnRvIGEgcHJvZ3JhbSB0aGF0IGlzIG5vdCBhIGxpYnJhcnkuCgogIDQuIFlvdSBtYXkgY29weSBhbmQgZGlzdHJpYnV0ZSB0aGUgTGlicmFyeSAob3IgYSBwb3J0aW9uIG9yCmRlcml2YXRpdmUgb2YgaXQsIHVuZGVyIFNlY3Rpb24gMikgaW4gb2JqZWN0IGNvZGUgb3IgZXhlY3V0YWJsZSBmb3JtCnVuZGVyIHRoZSB0ZXJtcyBvZiBTZWN0aW9ucyAxIGFuZCAyIGFib3ZlIHByb3ZpZGVkIHRoYXQgeW91IGFjY29tcGFueQppdCB3aXRoIHRoZSBjb21wbGV0ZSBjb3JyZXNwb25kaW5nIG1hY2hpbmUtcmVhZGFibGUgc291cmNlIGNvZGUsIHdoaWNoCm11c3QgYmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIFNlY3Rpb25zIDEgYW5kIDIgYWJvdmUgb24gYQptZWRpdW0gY3VzdG9tYXJpbHkgdXNlZCBmb3Igc29mdHdhcmUgaW50ZXJjaGFuZ2UuCgogIElmIGRpc3RyaWJ1dGlvbiBvZiBvYmplY3QgY29kZSBpcyBtYWRlIGJ5IG9mZmVyaW5nIGFjY2VzcyB0byBjb3B5CmZyb20gYSBkZXNpZ25hdGVkIHBsYWNlLCB0aGVuIG9mZmVyaW5nIGVxdWl2YWxlbnQgYWNjZXNzIHRvIGNvcHkgdGhlCnNvdXJjZSBjb2RlIGZyb20gdGhlIHNhbWUgcGxhY2Ugc2F0aXNmaWVzIHRoZSByZXF1aXJlbWVudCB0bwpkaXN0cmlidXRlIHRoZSBzb3VyY2UgY29kZSwgZXZlbiB0aG91Z2ggdGhpcmQgcGFydGllcyBhcmUgbm90CmNvbXBlbGxlZCB0byBjb3B5IHRoZSBzb3VyY2UgYWxvbmcgd2l0aCB0aGUgb2JqZWN0IGNvZGUuCgogIDUuIEEgcHJvZ3JhbSB0aGF0IGNvbnRhaW5zIG5vIGRlcml2YXRpdmUgb2YgYW55IHBvcnRpb24gb2YgdGhlCkxpYnJhcnksIGJ1dCBpcyBkZXNpZ25lZCB0byB3b3JrIHdpdGggdGhlIExpYnJhcnkgYnkgYmVpbmcgY29tcGlsZWQgb3IKbGlua2VkIHdpdGggaXQsIGlzIGNhbGxlZCBhICJ3b3JrIHRoYXQgdXNlcyB0aGUgTGlicmFyeSIuICBTdWNoIGEKd29yaywgaW4gaXNvbGF0aW9uLCBpcyBub3QgYSBkZXJpdmF0aXZlIHdvcmsgb2YgdGhlIExpYnJhcnksIGFuZAp0aGVyZWZvcmUgZmFsbHMgb3V0c2lkZSB0aGUgc2NvcGUgb2YgdGhpcyBMaWNlbnNlLgoKICBIb3dldmVyLCBsaW5raW5nIGEgIndvcmsgdGhhdCB1c2VzIHRoZSBMaWJyYXJ5IiB3aXRoIHRoZSBMaWJyYXJ5CmNyZWF0ZXMgYW4gZXhlY3V0YWJsZSB0aGF0IGlzIGEgZGVyaXZhdGl2ZSBvZiB0aGUgTGlicmFyeSAoYmVjYXVzZSBpdApjb250YWlucyBwb3J0aW9ucyBvZiB0aGUgTGlicmFyeSksIHJhdGhlciB0aGFuIGEgIndvcmsgdGhhdCB1c2VzIHRoZQpsaWJyYXJ5Ii4gIFRoZSBleGVjdXRhYmxlIGlzIHRoZXJlZm9yZSBjb3ZlcmVkIGJ5IHRoaXMgTGljZW5zZS4KU2VjdGlvbiA2IHN0YXRlcyB0ZXJtcyBmb3IgZGlzdHJpYnV0aW9uIG9mIHN1Y2ggZXhlY3V0YWJsZXMuCgogIFdoZW4gYSAid29yayB0aGF0IHVzZXMgdGhlIExpYnJhcnkiIHVzZXMgbWF0ZXJpYWwgZnJvbSBhIGhlYWRlciBmaWxlCnRoYXQgaXMgcGFydCBvZiB0aGUgTGlicmFyeSwgdGhlIG9iamVjdCBjb2RlIGZvciB0aGUgd29yayBtYXkgYmUgYQpkZXJpdmF0aXZlIHdvcmsgb2YgdGhlIExpYnJhcnkgZXZlbiB0aG91Z2ggdGhlIHNvdXJjZSBjb2RlIGlzIG5vdC4KV2hldGhlciB0aGlzIGlzIHRydWUgaXMgZXNwZWNpYWxseSBzaWduaWZpY2FudCBpZiB0aGUgd29yayBjYW4gYmUKbGlua2VkIHdpdGhvdXQgdGhlIExpYnJhcnksIG9yIGlmIHRoZSB3b3JrIGlzIGl0c2VsZiBhIGxpYnJhcnkuICBUaGUKdGhyZXNob2xkIGZvciB0aGlzIHRvIGJlIHRydWUgaXMgbm90IHByZWNpc2VseSBkZWZpbmVkIGJ5IGxhdy4KCiAgSWYgc3VjaCBhbiBvYmplY3QgZmlsZSB1c2VzIG9ubHkgbnVtZXJpY2FsIHBhcmFtZXRlcnMsIGRhdGEKc3RydWN0dXJlIGxheW91dHMgYW5kIGFjY2Vzc29ycywgYW5kIHNtYWxsIG1hY3JvcyBhbmQgc21hbGwgaW5saW5lCmZ1bmN0aW9ucyAodGVuIGxpbmVzIG9yIGxlc3MgaW4gbGVuZ3RoKSwgdGhlbiB0aGUgdXNlIG9mIHRoZSBvYmplY3QKZmlsZSBpcyB1bnJlc3RyaWN0ZWQsIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBpcyBsZWdhbGx5IGEgZGVyaXZhdGl2ZQp3b3JrLiAgKEV4ZWN1dGFibGVzIGNvbnRhaW5pbmcgdGhpcyBvYmplY3QgY29kZSBwbHVzIHBvcnRpb25zIG9mIHRoZQpMaWJyYXJ5IHdpbGwgc3RpbGwgZmFsbCB1bmRlciBTZWN0aW9uIDYuKQoKICBPdGhlcndpc2UsIGlmIHRoZSB3b3JrIGlzIGEgZGVyaXZhdGl2ZSBvZiB0aGUgTGlicmFyeSwgeW91IG1heQpkaXN0cmlidXRlIHRoZSBvYmplY3QgY29kZSBmb3IgdGhlIHdvcmsgdW5kZXIgdGhlIHRlcm1zIG9mIFNlY3Rpb24gNi4KQW55IGV4ZWN1dGFibGVzIGNvbnRhaW5pbmcgdGhhdCB3b3JrIGFsc28gZmFsbCB1bmRlciBTZWN0aW9uIDYsCndoZXRoZXIgb3Igbm90IHRoZXkgYXJlIGxpbmtlZCBkaXJlY3RseSB3aXRoIHRoZSBMaWJyYXJ5IGl0c2VsZi4KCiAgNi4gQXMgYW4gZXhjZXB0aW9uIHRvIHRoZSBTZWN0aW9ucyBhYm92ZSwgeW91IG1heSBhbHNvIGNvbWJpbmUgb3IKbGluayBhICJ3b3JrIHRoYXQgdXNlcyB0aGUgTGlicmFyeSIgd2l0aCB0aGUgTGlicmFyeSB0byBwcm9kdWNlIGEKd29yayBjb250YWluaW5nIHBvcnRpb25zIG9mIHRoZSBMaWJyYXJ5LCBhbmQgZGlzdHJpYnV0ZSB0aGF0IHdvcmsKdW5kZXIgdGVybXMgb2YgeW91ciBjaG9pY2UsIHByb3ZpZGVkIHRoYXQgdGhlIHRlcm1zIHBlcm1pdAptb2RpZmljYXRpb24gb2YgdGhlIHdvcmsgZm9yIHRoZSBjdXN0b21lcidzIG93biB1c2UgYW5kIHJldmVyc2UKZW5naW5lZXJpbmcgZm9yIGRlYnVnZ2luZyBzdWNoIG1vZGlmaWNhdGlvbnMuCgogIFlvdSBtdXN0IGdpdmUgcHJvbWluZW50IG5vdGljZSB3aXRoIGVhY2ggY29weSBvZiB0aGUgd29yayB0aGF0IHRoZQpMaWJyYXJ5IGlzIHVzZWQgaW4gaXQgYW5kIHRoYXQgdGhlIExpYnJhcnkgYW5kIGl0cyB1c2UgYXJlIGNvdmVyZWQgYnkKdGhpcyBMaWNlbnNlLiAgWW91IG11c3Qgc3VwcGx5IGEgY29weSBvZiB0aGlzIExpY2Vuc2UuICBJZiB0aGUgd29yawpkdXJpbmcgZXhlY3V0aW9uIGRpc3BsYXlzIGNvcHlyaWdodCBub3RpY2VzLCB5b3UgbXVzdCBpbmNsdWRlIHRoZQpjb3B5cmlnaHQgbm90aWNlIGZvciB0aGUgTGlicmFyeSBhbW9uZyB0aGVtLCBhcyB3ZWxsIGFzIGEgcmVmZXJlbmNlCmRpcmVjdGluZyB0aGUgdXNlciB0byB0aGUgY29weSBvZiB0aGlzIExpY2Vuc2UuICBBbHNvLCB5b3UgbXVzdCBkbyBvbmUKb2YgdGhlc2UgdGhpbmdzOgoKICAgIGEpIEFjY29tcGFueSB0aGUgd29yayB3aXRoIHRoZSBjb21wbGV0ZSBjb3JyZXNwb25kaW5nCiAgICBtYWNoaW5lLXJlYWRhYmxlIHNvdXJjZSBjb2RlIGZvciB0aGUgTGlicmFyeSBpbmNsdWRpbmcgd2hhdGV2ZXIKICAgIGNoYW5nZXMgd2VyZSB1c2VkIGluIHRoZSB3b3JrICh3aGljaCBtdXN0IGJlIGRpc3RyaWJ1dGVkIHVuZGVyCiAgICBTZWN0aW9ucyAxIGFuZCAyIGFib3ZlKTsgYW5kLCBpZiB0aGUgd29yayBpcyBhbiBleGVjdXRhYmxlIGxpbmtlZAogICAgd2l0aCB0aGUgTGlicmFyeSwgd2l0aCB0aGUgY29tcGxldGUgbWFjaGluZS1yZWFkYWJsZSAid29yayB0aGF0CiAgICB1c2VzIHRoZSBMaWJyYXJ5IiwgYXMgb2JqZWN0IGNvZGUgYW5kL29yIHNvdXJjZSBjb2RlLCBzbyB0aGF0IHRoZQogICAgdXNlciBjYW4gbW9kaWZ5IHRoZSBMaWJyYXJ5IGFuZCB0aGVuIHJlbGluayB0byBwcm9kdWNlIGEgbW9kaWZpZWQKICAgIGV4ZWN1dGFibGUgY29udGFpbmluZyB0aGUgbW9kaWZpZWQgTGlicmFyeS4gIChJdCBpcyB1bmRlcnN0b29kCiAgICB0aGF0IHRoZSB1c2VyIHdobyBjaGFuZ2VzIHRoZSBjb250ZW50cyBvZiBkZWZpbml0aW9ucyBmaWxlcyBpbiB0aGUKICAgIExpYnJhcnkgd2lsbCBub3QgbmVjZXNzYXJpbHkgYmUgYWJsZSB0byByZWNvbXBpbGUgdGhlIGFwcGxpY2F0aW9uCiAgICB0byB1c2UgdGhlIG1vZGlmaWVkIGRlZmluaXRpb25zLikKCiAgICBiKSBVc2UgYSBzdWl0YWJsZSBzaGFyZWQgbGlicmFyeSBtZWNoYW5pc20gZm9yIGxpbmtpbmcgd2l0aCB0aGUKICAgIExpYnJhcnkuICBBIHN1aXRhYmxlIG1lY2hhbmlzbSBpcyBvbmUgdGhhdCAoMSkgdXNlcyBhdCBydW4gdGltZSBhCiAgICBjb3B5IG9mIHRoZSBsaWJyYXJ5IGFscmVhZHkgcHJlc2VudCBvbiB0aGUgdXNlcidzIGNvbXB1dGVyIHN5c3RlbSwKICAgIHJhdGhlciB0aGFuIGNvcHlpbmcgbGlicmFyeSBmdW5jdGlvbnMgaW50byB0aGUgZXhlY3V0YWJsZSwgYW5kICgyKQogICAgd2lsbCBvcGVyYXRlIHByb3Blcmx5IHdpdGggYSBtb2RpZmllZCB2ZXJzaW9uIG9mIHRoZSBsaWJyYXJ5LCBpZgogICAgdGhlIHVzZXIgaW5zdGFsbHMgb25lLCBhcyBsb25nIGFzIHRoZSBtb2RpZmllZCB2ZXJzaW9uIGlzCiAgICBpbnRlcmZhY2UtY29tcGF0aWJsZSB3aXRoIHRoZSB2ZXJzaW9uIHRoYXQgdGhlIHdvcmsgd2FzIG1hZGUgd2l0aC4KCiAgICBjKSBBY2NvbXBhbnkgdGhlIHdvcmsgd2l0aCBhIHdyaXR0ZW4gb2ZmZXIsIHZhbGlkIGZvciBhdAogICAgbGVhc3QgdGhyZWUgeWVhcnMsIHRvIGdpdmUgdGhlIHNhbWUgdXNlciB0aGUgbWF0ZXJpYWxzCiAgICBzcGVjaWZpZWQgaW4gU3Vic2VjdGlvbiA2YSwgYWJvdmUsIGZvciBhIGNoYXJnZSBubyBtb3JlCiAgICB0aGFuIHRoZSBjb3N0IG9mIHBlcmZvcm1pbmcgdGhpcyBkaXN0cmlidXRpb24uCgogICAgZCkgSWYgZGlzdHJpYnV0aW9uIG9mIHRoZSB3b3JrIGlzIG1hZGUgYnkgb2ZmZXJpbmcgYWNjZXNzIHRvIGNvcHkKICAgIGZyb20gYSBkZXNpZ25hdGVkIHBsYWNlLCBvZmZlciBlcXVpdmFsZW50IGFjY2VzcyB0byBjb3B5IHRoZSBhYm92ZQogICAgc3BlY2lmaWVkIG1hdGVyaWFscyBmcm9tIHRoZSBzYW1lIHBsYWNlLgoKICAgIGUpIFZlcmlmeSB0aGF0IHRoZSB1c2VyIGhhcyBhbHJlYWR5IHJlY2VpdmVkIGEgY29weSBvZiB0aGVzZQogICAgbWF0ZXJpYWxzIG9yIHRoYXQgeW91IGhhdmUgYWxyZWFkeSBzZW50IHRoaXMgdXNlciBhIGNvcHkuCgogIEZvciBhbiBleGVjdXRhYmxlLCB0aGUgcmVxdWlyZWQgZm9ybSBvZiB0aGUgIndvcmsgdGhhdCB1c2VzIHRoZQpMaWJyYXJ5IiBtdXN0IGluY2x1ZGUgYW55IGRhdGEgYW5kIHV0aWxpdHkgcHJvZ3JhbXMgbmVlZGVkIGZvcgpyZXByb2R1Y2luZyB0aGUgZXhlY3V0YWJsZSBmcm9tIGl0LiAgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwKdGhlIG1hdGVyaWFscyB0byBiZSBkaXN0cmlidXRlZCBuZWVkIG5vdCBpbmNsdWRlIGFueXRoaW5nIHRoYXQgaXMKbm9ybWFsbHkgZGlzdHJpYnV0ZWQgKGluIGVpdGhlciBzb3VyY2Ugb3IgYmluYXJ5IGZvcm0pIHdpdGggdGhlIG1ham9yCmNvbXBvbmVudHMgKGNvbXBpbGVyLCBrZXJuZWwsIGFuZCBzbyBvbikgb2YgdGhlIG9wZXJhdGluZyBzeXN0ZW0gb24Kd2hpY2ggdGhlIGV4ZWN1dGFibGUgcnVucywgdW5sZXNzIHRoYXQgY29tcG9uZW50IGl0c2VsZiBhY2NvbXBhbmllcwp0aGUgZXhlY3V0YWJsZS4KCiAgSXQgbWF5IGhhcHBlbiB0aGF0IHRoaXMgcmVxdWlyZW1lbnQgY29udHJhZGljdHMgdGhlIGxpY2Vuc2UKcmVzdHJpY3Rpb25zIG9mIG90aGVyIHByb3ByaWV0YXJ5IGxpYnJhcmllcyB0aGF0IGRvIG5vdCBub3JtYWxseQphY2NvbXBhbnkgdGhlIG9wZXJhdGluZyBzeXN0ZW0uICBTdWNoIGEgY29udHJhZGljdGlvbiBtZWFucyB5b3UgY2Fubm90CnVzZSBib3RoIHRoZW0gYW5kIHRoZSBMaWJyYXJ5IHRvZ2V0aGVyIGluIGFuIGV4ZWN1dGFibGUgdGhhdCB5b3UKZGlzdHJpYnV0ZS4KCiAgNy4gWW91IG1heSBwbGFjZSBsaWJyYXJ5IGZhY2lsaXRpZXMgdGhhdCBhcmUgYSB3b3JrIGJhc2VkIG9uIHRoZQpMaWJyYXJ5IHNpZGUtYnktc2lkZSBpbiBhIHNpbmdsZSBsaWJyYXJ5IHRvZ2V0aGVyIHdpdGggb3RoZXIgbGlicmFyeQpmYWNpbGl0aWVzIG5vdCBjb3ZlcmVkIGJ5IHRoaXMgTGljZW5zZSwgYW5kIGRpc3RyaWJ1dGUgc3VjaCBhIGNvbWJpbmVkCmxpYnJhcnksIHByb3ZpZGVkIHRoYXQgdGhlIHNlcGFyYXRlIGRpc3RyaWJ1dGlvbiBvZiB0aGUgd29yayBiYXNlZCBvbgp0aGUgTGlicmFyeSBhbmQgb2YgdGhlIG90aGVyIGxpYnJhcnkgZmFjaWxpdGllcyBpcyBvdGhlcndpc2UKcGVybWl0dGVkLCBhbmQgcHJvdmlkZWQgdGhhdCB5b3UgZG8gdGhlc2UgdHdvIHRoaW5nczoKCiAgICBhKSBBY2NvbXBhbnkgdGhlIGNvbWJpbmVkIGxpYnJhcnkgd2l0aCBhIGNvcHkgb2YgdGhlIHNhbWUgd29yawogICAgYmFzZWQgb24gdGhlIExpYnJhcnksIHVuY29tYmluZWQgd2l0aCBhbnkgb3RoZXIgbGlicmFyeQogICAgZmFjaWxpdGllcy4gIFRoaXMgbXVzdCBiZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlCiAgICBTZWN0aW9ucyBhYm92ZS4KCiAgICBiKSBHaXZlIHByb21pbmVudCBub3RpY2Ugd2l0aCB0aGUgY29tYmluZWQgbGlicmFyeSBvZiB0aGUgZmFjdAogICAgdGhhdCBwYXJ0IG9mIGl0IGlzIGEgd29yayBiYXNlZCBvbiB0aGUgTGlicmFyeSwgYW5kIGV4cGxhaW5pbmcKICAgIHdoZXJlIHRvIGZpbmQgdGhlIGFjY29tcGFueWluZyB1bmNvbWJpbmVkIGZvcm0gb2YgdGhlIHNhbWUgd29yay4KCiAgOC4gWW91IG1heSBub3QgY29weSwgbW9kaWZ5LCBzdWJsaWNlbnNlLCBsaW5rIHdpdGgsIG9yIGRpc3RyaWJ1dGUKdGhlIExpYnJhcnkgZXhjZXB0IGFzIGV4cHJlc3NseSBwcm92aWRlZCB1bmRlciB0aGlzIExpY2Vuc2UuICBBbnkKYXR0ZW1wdCBvdGhlcndpc2UgdG8gY29weSwgbW9kaWZ5LCBzdWJsaWNlbnNlLCBsaW5rIHdpdGgsIG9yCmRpc3RyaWJ1dGUgdGhlIExpYnJhcnkgaXMgdm9pZCwgYW5kIHdpbGwgYXV0b21hdGljYWxseSB0ZXJtaW5hdGUgeW91cgpyaWdodHMgdW5kZXIgdGhpcyBMaWNlbnNlLiAgSG93ZXZlciwgcGFydGllcyB3aG8gaGF2ZSByZWNlaXZlZCBjb3BpZXMsCm9yIHJpZ2h0cywgZnJvbSB5b3UgdW5kZXIgdGhpcyBMaWNlbnNlIHdpbGwgbm90IGhhdmUgdGhlaXIgbGljZW5zZXMKdGVybWluYXRlZCBzbyBsb25nIGFzIHN1Y2ggcGFydGllcyByZW1haW4gaW4gZnVsbCBjb21wbGlhbmNlLgoKICA5LiBZb3UgYXJlIG5vdCByZXF1aXJlZCB0byBhY2NlcHQgdGhpcyBMaWNlbnNlLCBzaW5jZSB5b3UgaGF2ZSBub3QKc2lnbmVkIGl0LiAgSG93ZXZlciwgbm90aGluZyBlbHNlIGdyYW50cyB5b3UgcGVybWlzc2lvbiB0byBtb2RpZnkgb3IKZGlzdHJpYnV0ZSB0aGUgTGlicmFyeSBvciBpdHMgZGVyaXZhdGl2ZSB3b3Jrcy4gIFRoZXNlIGFjdGlvbnMgYXJlCnByb2hpYml0ZWQgYnkgbGF3IGlmIHlvdSBkbyBub3QgYWNjZXB0IHRoaXMgTGljZW5zZS4gIFRoZXJlZm9yZSwgYnkKbW9kaWZ5aW5nIG9yIGRpc3RyaWJ1dGluZyB0aGUgTGlicmFyeSAob3IgYW55IHdvcmsgYmFzZWQgb24gdGhlCkxpYnJhcnkpLCB5b3UgaW5kaWNhdGUgeW91ciBhY2NlcHRhbmNlIG9mIHRoaXMgTGljZW5zZSB0byBkbyBzbywgYW5kCmFsbCBpdHMgdGVybXMgYW5kIGNvbmRpdGlvbnMgZm9yIGNvcHlpbmcsIGRpc3RyaWJ1dGluZyBvciBtb2RpZnlpbmcKdGhlIExpYnJhcnkgb3Igd29ya3MgYmFzZWQgb24gaXQuCgogIDEwLiBFYWNoIHRpbWUgeW91IHJlZGlzdHJpYnV0ZSB0aGUgTGlicmFyeSAob3IgYW55IHdvcmsgYmFzZWQgb24gdGhlCkxpYnJhcnkpLCB0aGUgcmVjaXBpZW50IGF1dG9tYXRpY2FsbHkgcmVjZWl2ZXMgYSBsaWNlbnNlIGZyb20gdGhlCm9yaWdpbmFsIGxpY2Vuc29yIHRvIGNvcHksIGRpc3RyaWJ1dGUsIGxpbmsgd2l0aCBvciBtb2RpZnkgdGhlIExpYnJhcnkKc3ViamVjdCB0byB0aGVzZSB0ZXJtcyBhbmQgY29uZGl0aW9ucy4gIFlvdSBtYXkgbm90IGltcG9zZSBhbnkgZnVydGhlcgpyZXN0cmljdGlvbnMgb24gdGhlIHJlY2lwaWVudHMnIGV4ZXJjaXNlIG9mIHRoZSByaWdodHMgZ3JhbnRlZCBoZXJlaW4uCllvdSBhcmUgbm90IHJlc3BvbnNpYmxlIGZvciBlbmZvcmNpbmcgY29tcGxpYW5jZSBieSB0aGlyZCBwYXJ0aWVzIHdpdGgKdGhpcyBMaWNlbnNlLgoKICAxMS4gSWYsIGFzIGEgY29uc2VxdWVuY2Ugb2YgYSBjb3VydCBqdWRnbWVudCBvciBhbGxlZ2F0aW9uIG9mIHBhdGVudAppbmZyaW5nZW1lbnQgb3IgZm9yIGFueSBvdGhlciByZWFzb24gKG5vdCBsaW1pdGVkIHRvIHBhdGVudCBpc3N1ZXMpLApjb25kaXRpb25zIGFyZSBpbXBvc2VkIG9uIHlvdSAod2hldGhlciBieSBjb3VydCBvcmRlciwgYWdyZWVtZW50IG9yCm90aGVyd2lzZSkgdGhhdCBjb250cmFkaWN0IHRoZSBjb25kaXRpb25zIG9mIHRoaXMgTGljZW5zZSwgdGhleSBkbyBub3QKZXhjdXNlIHlvdSBmcm9tIHRoZSBjb25kaXRpb25zIG9mIHRoaXMgTGljZW5zZS4gIElmIHlvdSBjYW5ub3QKZGlzdHJpYnV0ZSBzbyBhcyB0byBzYXRpc2Z5IHNpbXVsdGFuZW91c2x5IHlvdXIgb2JsaWdhdGlvbnMgdW5kZXIgdGhpcwpMaWNlbnNlIGFuZCBhbnkgb3RoZXIgcGVydGluZW50IG9ibGlnYXRpb25zLCB0aGVuIGFzIGEgY29uc2VxdWVuY2UgeW91Cm1heSBub3QgZGlzdHJpYnV0ZSB0aGUgTGlicmFyeSBhdCBhbGwuICBGb3IgZXhhbXBsZSwgaWYgYSBwYXRlbnQKbGljZW5zZSB3b3VsZCBub3QgcGVybWl0IHJveWFsdHktZnJlZSByZWRpc3RyaWJ1dGlvbiBvZiB0aGUgTGlicmFyeSBieQphbGwgdGhvc2Ugd2hvIHJlY2VpdmUgY29waWVzIGRpcmVjdGx5IG9yIGluZGlyZWN0bHkgdGhyb3VnaCB5b3UsIHRoZW4KdGhlIG9ubHkgd2F5IHlvdSBjb3VsZCBzYXRpc2Z5IGJvdGggaXQgYW5kIHRoaXMgTGljZW5zZSB3b3VsZCBiZSB0bwpyZWZyYWluIGVudGlyZWx5IGZyb20gZGlzdHJpYnV0aW9uIG9mIHRoZSBMaWJyYXJ5LgoKSWYgYW55IHBvcnRpb24gb2YgdGhpcyBzZWN0aW9uIGlzIGhlbGQgaW52YWxpZCBvciB1bmVuZm9yY2VhYmxlIHVuZGVyIGFueQpwYXJ0aWN1bGFyIGNpcmN1bXN0YW5jZSwgdGhlIGJhbGFuY2Ugb2YgdGhlIHNlY3Rpb24gaXMgaW50ZW5kZWQgdG8gYXBwbHksCmFuZCB0aGUgc2VjdGlvbiBhcyBhIHdob2xlIGlzIGludGVuZGVkIHRvIGFwcGx5IGluIG90aGVyIGNpcmN1bXN0YW5jZXMuCgpJdCBpcyBub3QgdGhlIHB1cnBvc2Ugb2YgdGhpcyBzZWN0aW9uIHRvIGluZHVjZSB5b3UgdG8gaW5mcmluZ2UgYW55CnBhdGVudHMgb3Igb3RoZXIgcHJvcGVydHkgcmlnaHQgY2xhaW1zIG9yIHRvIGNvbnRlc3QgdmFsaWRpdHkgb2YgYW55CnN1Y2ggY2xhaW1zOyB0aGlzIHNlY3Rpb24gaGFzIHRoZSBzb2xlIHB1cnBvc2Ugb2YgcHJvdGVjdGluZyB0aGUKaW50ZWdyaXR5IG9mIHRoZSBmcmVlIHNvZnR3YXJlIGRpc3RyaWJ1dGlvbiBzeXN0ZW0gd2hpY2ggaXMKaW1wbGVtZW50ZWQgYnkgcHVibGljIGxpY2Vuc2UgcHJhY3RpY2VzLiAgTWFueSBwZW9wbGUgaGF2ZSBtYWRlCmdlbmVyb3VzIGNvbnRyaWJ1dGlvbnMgdG8gdGhlIHdpZGUgcmFuZ2Ugb2Ygc29mdHdhcmUgZGlzdHJpYnV0ZWQKdGhyb3VnaCB0aGF0IHN5c3RlbSBpbiByZWxpYW5jZSBvbiBjb25zaXN0ZW50IGFwcGxpY2F0aW9uIG9mIHRoYXQKc3lzdGVtOyBpdCBpcyB1cCB0byB0aGUgYXV0aG9yL2Rvbm9yIHRvIGRlY2lkZSBpZiBoZSBvciBzaGUgaXMgd2lsbGluZwp0byBkaXN0cmlidXRlIHNvZnR3YXJlIHRocm91Z2ggYW55IG90aGVyIHN5c3RlbSBhbmQgYSBsaWNlbnNlZSBjYW5ub3QKaW1wb3NlIHRoYXQgY2hvaWNlLgoKVGhpcyBzZWN0aW9uIGlzIGludGVuZGVkIHRvIG1ha2UgdGhvcm91Z2hseSBjbGVhciB3aGF0IGlzIGJlbGlldmVkIHRvCmJlIGEgY29uc2VxdWVuY2Ugb2YgdGhlIHJlc3Qgb2YgdGhpcyBMaWNlbnNlLgoKICAxMi4gSWYgdGhlIGRpc3RyaWJ1dGlvbiBhbmQvb3IgdXNlIG9mIHRoZSBMaWJyYXJ5IGlzIHJlc3RyaWN0ZWQgaW4KY2VydGFpbiBjb3VudHJpZXMgZWl0aGVyIGJ5IHBhdGVudHMgb3IgYnkgY29weXJpZ2h0ZWQgaW50ZXJmYWNlcywgdGhlCm9yaWdpbmFsIGNvcHlyaWdodCBob2xkZXIgd2hvIHBsYWNlcyB0aGUgTGlicmFyeSB1bmRlciB0aGlzIExpY2Vuc2UgbWF5IGFkZAphbiBleHBsaWNpdCBnZW9ncmFwaGljYWwgZGlzdHJpYnV0aW9uIGxpbWl0YXRpb24gZXhjbHVkaW5nIHRob3NlIGNvdW50cmllcywKc28gdGhhdCBkaXN0cmlidXRpb24gaXMgcGVybWl0dGVkIG9ubHkgaW4gb3IgYW1vbmcgY291bnRyaWVzIG5vdCB0aHVzCmV4Y2x1ZGVkLiAgSW4gc3VjaCBjYXNlLCB0aGlzIExpY2Vuc2UgaW5jb3Jwb3JhdGVzIHRoZSBsaW1pdGF0aW9uIGFzIGlmCndyaXR0ZW4gaW4gdGhlIGJvZHkgb2YgdGhpcyBMaWNlbnNlLgoKICAxMy4gVGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBtYXkgcHVibGlzaCByZXZpc2VkIGFuZC9vciBuZXcKdmVyc2lvbnMgb2YgdGhlIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZyb20gdGltZSB0byB0aW1lLgpTdWNoIG5ldyB2ZXJzaW9ucyB3aWxsIGJlIHNpbWlsYXIgaW4gc3Bpcml0IHRvIHRoZSBwcmVzZW50IHZlcnNpb24sCmJ1dCBtYXkgZGlmZmVyIGluIGRldGFpbCB0byBhZGRyZXNzIG5ldyBwcm9ibGVtcyBvciBjb25jZXJucy4KCkVhY2ggdmVyc2lvbiBpcyBnaXZlbiBhIGRpc3Rpbmd1aXNoaW5nIHZlcnNpb24gbnVtYmVyLiAgSWYgdGhlIExpYnJhcnkKc3BlY2lmaWVzIGEgdmVyc2lvbiBudW1iZXIgb2YgdGhpcyBMaWNlbnNlIHdoaWNoIGFwcGxpZXMgdG8gaXQgYW5kCiJhbnkgbGF0ZXIgdmVyc2lvbiIsIHlvdSBoYXZlIHRoZSBvcHRpb24gb2YgZm9sbG93aW5nIHRoZSB0ZXJtcyBhbmQKY29uZGl0aW9ucyBlaXRoZXIgb2YgdGhhdCB2ZXJzaW9uIG9yIG9mIGFueSBsYXRlciB2ZXJzaW9uIHB1Ymxpc2hlZCBieQp0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLiAgSWYgdGhlIExpYnJhcnkgZG9lcyBub3Qgc3BlY2lmeSBhCmxpY2Vuc2UgdmVyc2lvbiBudW1iZXIsIHlvdSBtYXkgY2hvb3NlIGFueSB2ZXJzaW9uIGV2ZXIgcHVibGlzaGVkIGJ5CnRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCgogIDE0LiBJZiB5b3Ugd2lzaCB0byBpbmNvcnBvcmF0ZSBwYXJ0cyBvZiB0aGUgTGlicmFyeSBpbnRvIG90aGVyIGZyZWUKcHJvZ3JhbXMgd2hvc2UgZGlzdHJpYnV0aW9uIGNvbmRpdGlvbnMgYXJlIGluY29tcGF0aWJsZSB3aXRoIHRoZXNlLAp3cml0ZSB0byB0aGUgYXV0aG9yIHRvIGFzayBmb3IgcGVybWlzc2lvbi4gIEZvciBzb2Z0d2FyZSB3aGljaCBpcwpjb3B5cmlnaHRlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3cml0ZSB0byB0aGUgRnJlZQpTb2Z0d2FyZSBGb3VuZGF0aW9uOyB3ZSBzb21ldGltZXMgbWFrZSBleGNlcHRpb25zIGZvciB0aGlzLiAgT3VyCmRlY2lzaW9uIHdpbGwgYmUgZ3VpZGVkIGJ5IHRoZSB0d28gZ29hbHMgb2YgcHJlc2VydmluZyB0aGUgZnJlZSBzdGF0dXMKb2YgYWxsIGRlcml2YXRpdmVzIG9mIG91ciBmcmVlIHNvZnR3YXJlIGFuZCBvZiBwcm9tb3RpbmcgdGhlIHNoYXJpbmcKYW5kIHJldXNlIG9mIHNvZnR3YXJlIGdlbmVyYWxseS4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOTyBXQVJSQU5UWQoKICAxNS4gQkVDQVVTRSBUSEUgTElCUkFSWSBJUyBMSUNFTlNFRCBGUkVFIE9GIENIQVJHRSwgVEhFUkUgSVMgTk8KV0FSUkFOVFkgRk9SIFRIRSBMSUJSQVJZLCBUTyBUSEUgRVhURU5UIFBFUk1JVFRFRCBCWSBBUFBMSUNBQkxFIExBVy4KRVhDRVBUIFdIRU4gT1RIRVJXSVNFIFNUQVRFRCBJTiBXUklUSU5HIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQvT1IKT1RIRVIgUEFSVElFUyBQUk9WSURFIFRIRSBMSUJSQVJZICJBUyBJUyIgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkKS0lORCwgRUlUSEVSIEVYUFJFU1NFRCBPUiBJTVBMSUVELCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCklNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgpQVVJQT1NFLiAgVEhFIEVOVElSRSBSSVNLIEFTIFRPIFRIRSBRVUFMSVRZIEFORCBQRVJGT1JNQU5DRSBPRiBUSEUKTElCUkFSWSBJUyBXSVRIIFlPVS4gIFNIT1VMRCBUSEUgTElCUkFSWSBQUk9WRSBERUZFQ1RJVkUsIFlPVSBBU1NVTUUKVEhFIENPU1QgT0YgQUxMIE5FQ0VTU0FSWSBTRVJWSUNJTkcsIFJFUEFJUiBPUiBDT1JSRUNUSU9OLgoKICAxNi4gSU4gTk8gRVZFTlQgVU5MRVNTIFJFUVVJUkVEIEJZIEFQUExJQ0FCTEUgTEFXIE9SIEFHUkVFRCBUTyBJTgpXUklUSU5HIFdJTEwgQU5ZIENPUFlSSUdIVCBIT0xERVIsIE9SIEFOWSBPVEhFUiBQQVJUWSBXSE8gTUFZIE1PRElGWQpBTkQvT1IgUkVESVNUUklCVVRFIFRIRSBMSUJSQVJZIEFTIFBFUk1JVFRFRCBBQk9WRSwgQkUgTElBQkxFIFRPIFlPVQpGT1IgREFNQUdFUywgSU5DTFVESU5HIEFOWSBHRU5FUkFMLCBTUEVDSUFMLCBJTkNJREVOVEFMIE9SCkNPTlNFUVVFTlRJQUwgREFNQUdFUyBBUklTSU5HIE9VVCBPRiBUSEUgVVNFIE9SIElOQUJJTElUWSBUTyBVU0UgVEhFCkxJQlJBUlkgKElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gTE9TUyBPRiBEQVRBIE9SIERBVEEgQkVJTkcKUkVOREVSRUQgSU5BQ0NVUkFURSBPUiBMT1NTRVMgU1VTVEFJTkVEIEJZIFlPVSBPUiBUSElSRCBQQVJUSUVTIE9SIEEKRkFJTFVSRSBPRiBUSEUgTElCUkFSWSBUTyBPUEVSQVRFIFdJVEggQU5ZIE9USEVSIFNPRlRXQVJFKSwgRVZFTiBJRgpTVUNIIEhPTERFUiBPUiBPVEhFUiBQQVJUWSBIQVMgQkVFTiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNICkRBTUFHRVMuCgogICAgICAgICAgICAgICAgICAgICBFTkQgT0YgVEVSTVMgQU5EIENPTkRJVElPTlMKCiAgICAgICAgICAgSG93IHRvIEFwcGx5IFRoZXNlIFRlcm1zIHRvIFlvdXIgTmV3IExpYnJhcmllcwoKICBJZiB5b3UgZGV2ZWxvcCBhIG5ldyBsaWJyYXJ5LCBhbmQgeW91IHdhbnQgaXQgdG8gYmUgb2YgdGhlIGdyZWF0ZXN0CnBvc3NpYmxlIHVzZSB0byB0aGUgcHVibGljLCB3ZSByZWNvbW1lbmQgbWFraW5nIGl0IGZyZWUgc29mdHdhcmUgdGhhdApldmVyeW9uZSBjYW4gcmVkaXN0cmlidXRlIGFuZCBjaGFuZ2UuICBZb3UgY2FuIGRvIHNvIGJ5IHBlcm1pdHRpbmcKcmVkaXN0cmlidXRpb24gdW5kZXIgdGhlc2UgdGVybXMgKG9yLCBhbHRlcm5hdGl2ZWx5LCB1bmRlciB0aGUgdGVybXMgb2YgdGhlCm9yZGluYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UpLgoKICBUbyBhcHBseSB0aGVzZSB0ZXJtcywgYXR0YWNoIHRoZSBmb2xsb3dpbmcgbm90aWNlcyB0byB0aGUgbGlicmFyeS4gIEl0IGlzCnNhZmVzdCB0byBhdHRhY2ggdGhlbSB0byB0aGUgc3RhcnQgb2YgZWFjaCBzb3VyY2UgZmlsZSB0byBtb3N0IGVmZmVjdGl2ZWx5CmNvbnZleSB0aGUgZXhjbHVzaW9uIG9mIHdhcnJhbnR5OyBhbmQgZWFjaCBmaWxlIHNob3VsZCBoYXZlIGF0IGxlYXN0IHRoZQoiY29weXJpZ2h0IiBsaW5lIGFuZCBhIHBvaW50ZXIgdG8gd2hlcmUgdGhlIGZ1bGwgbm90aWNlIGlzIGZvdW5kLgoKICAgIDxvbmUgbGluZSB0byBnaXZlIHRoZSBsaWJyYXJ5J3MgbmFtZSBhbmQgYSBicmllZiBpZGVhIG9mIHdoYXQgaXQgZG9lcy4+CiAgICBDb3B5cmlnaHQgKEMpIDx5ZWFyPiAgPG5hbWUgb2YgYXV0aG9yPgoKICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogICAgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCgogICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCgogICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQoKQWxzbyBhZGQgaW5mb3JtYXRpb24gb24gaG93IHRvIGNvbnRhY3QgeW91IGJ5IGVsZWN0cm9uaWMgYW5kIHBhcGVyIG1haWwuCgpZb3Ugc2hvdWxkIGFsc28gZ2V0IHlvdXIgZW1wbG95ZXIgKGlmIHlvdSB3b3JrIGFzIGEgcHJvZ3JhbW1lcikgb3IgeW91cgpzY2hvb2wsIGlmIGFueSwgdG8gc2lnbiBhICJjb3B5cmlnaHQgZGlzY2xhaW1lciIgZm9yIHRoZSBsaWJyYXJ5LCBpZgpuZWNlc3NhcnkuICBIZXJlIGlzIGEgc2FtcGxlOyBhbHRlciB0aGUgbmFtZXM6CgogIFlveW9keW5lLCBJbmMuLCBoZXJlYnkgZGlzY2xhaW1zIGFsbCBjb3B5cmlnaHQgaW50ZXJlc3QgaW4gdGhlCiAgbGlicmFyeSBgRnJvYicgKGEgbGlicmFyeSBmb3IgdHdlYWtpbmcga25vYnMpIHdyaXR0ZW4gYnkgSmFtZXMgUmFuZG9tIEhhY2tlci4KCiAgPHNpZ25hdHVyZSBvZiBUeSBDb29uPiwgMSBBcHJpbCAxOTkwCiAgVHkgQ29vbiwgUHJlc2lkZW50IG9mIFZpY2UKClRoYXQncyBhbGwgdGhlcmUgaXMgdG8gaXQhCg==]]></data>
	</file>
	<file>
	  <filename>/libs/DEV/1.1.3/idn/npdata.ser</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[YTo2OntzOjExOiJtYXBfbm90aGluZyI7YToyNzp7aTowO2k6MTczO2k6MTtpOjg0NztpOjI7aTo2MTUwO2k6MztpOjYxNTU7aTo0O2k6NjE1NjtpOjU7aTo2MTU3O2k6NjtpOjgyMDM7aTo3O2k6ODIwNDtpOjg7aTo4MjA1O2k6OTtpOjgyODg7aToxMDtpOjY1MDI0O2k6MTE7aTo2NTAyNTtpOjEyO2k6NjUwMjY7aToxMztpOjY1MDI3O2k6MTQ7aTo2NTAyODtpOjE1O2k6NjUwMjk7aToxNjtpOjY1MDMwO2k6MTc7aTo2NTAzMTtpOjE4O2k6NjUwMzI7aToxOTtpOjY1MDMzO2k6MjA7aTo2NTAzNDtpOjIxO2k6NjUwMzU7aToyMjtpOjY1MDM2O2k6MjM7aTo2NTAzNztpOjI0O2k6NjUwMzg7aToyNTtpOjY1MDM5O2k6MjY7aTo2NTI3OTt9czoxODoiZ2VuZXJhbF9wcm9oaWJpdGVkIjthOjY0OntpOjA7aTowO2k6MTtpOjE7aToyO2k6MjtpOjM7aTozO2k6NDtpOjQ7aTo1O2k6NTtpOjY7aTo2O2k6NztpOjc7aTo4O2k6ODtpOjk7aTo5O2k6MTA7aToxMDtpOjExO2k6MTE7aToxMjtpOjEyO2k6MTM7aToxMztpOjE0O2k6MTQ7aToxNTtpOjE1O2k6MTY7aToxNjtpOjE3O2k6MTc7aToxODtpOjE4O2k6MTk7aToxOTtpOjIwO2k6MjA7aToyMTtpOjIxO2k6MjI7aToyMjtpOjIzO2k6MjM7aToyNDtpOjI0O2k6MjU7aToyNTtpOjI2O2k6MjY7aToyNztpOjI3O2k6Mjg7aToyODtpOjI5O2k6Mjk7aTozMDtpOjMwO2k6MzE7aTozMTtpOjMyO2k6MzI7aTozMztpOjMzO2k6MzQ7aTozNDtpOjM1O2k6MzU7aTozNjtpOjM2O2k6Mzc7aTozNztpOjM4O2k6Mzg7aTozOTtpOjM5O2k6NDA7aTo0MDtpOjQxO2k6NDE7aTo0MjtpOjQyO2k6NDM7aTo0MztpOjQ0O2k6NDQ7aTo0NTtpOjQ3O2k6NDY7aTo1OTtpOjQ3O2k6NjA7aTo0ODtpOjYxO2k6NDk7aTo2MjtpOjUwO2k6NjM7aTo1MTtpOjY0O2k6NTI7aTo5MTtpOjUzO2k6OTI7aTo1NDtpOjkzO2k6NTU7aTo5NDtpOjU2O2k6OTU7aTo1NztpOjk2O2k6NTg7aToxMjM7aTo1OTtpOjEyNDtpOjYwO2k6MTI1O2k6NjE7aToxMjY7aTo2MjtpOjEyNztpOjYzO2k6MTIyOTA7fXM6ODoicHJvaGliaXQiO2E6ODQ6e2k6MDtpOjE2MDtpOjE7aTo1NzYwO2k6MjtpOjgxOTI7aTozO2k6ODE5MztpOjQ7aTo4MTk0O2k6NTtpOjgxOTU7aTo2O2k6ODE5NjtpOjc7aTo4MTk3O2k6ODtpOjgxOTg7aTo5O2k6ODE5OTtpOjEwO2k6ODIwMDtpOjExO2k6ODIwMTtpOjEyO2k6ODIwMjtpOjEzO2k6ODIwMztpOjE0O2k6ODIzOTtpOjE1O2k6ODI4NztpOjE2O2k6MTIyODg7aToxNztpOjE3NTc7aToxODtpOjE4MDc7aToxOTtpOjYxNTg7aToyMDtpOjgyMDQ7aToyMTtpOjgyMDU7aToyMjtpOjgyMzI7aToyMztpOjgyMzM7aToyNDtpOjY1Mjc5O2k6MjU7aTo2NTUyOTtpOjI2O2k6NjU1MzA7aToyNztpOjY1NTMxO2k6Mjg7aTo2NTUzMjtpOjI5O2k6NjU1MzQ7aTozMDtpOjY1NTM1O2k6MzE7aToxMzEwNzA7aTozMjtpOjEzMTA3MTtpOjMzO2k6MTk2NjA2O2k6MzQ7aToxOTY2MDc7aTozNTtpOjI2MjE0MjtpOjM2O2k6MjYyMTQzO2k6Mzc7aTozMjc2Nzg7aTozODtpOjMyNzY3OTtpOjM5O2k6MzkzMjE0O2k6NDA7aTozOTMyMTU7aTo0MTtpOjQ1ODc1MDtpOjQyO2k6NDU4NzUxO2k6NDM7aTo1MjQyODY7aTo0NDtpOjUyNDI4NztpOjQ1O2k6NTg5ODIyO2k6NDY7aTo1ODk4MjM7aTo0NztpOjY1NTM1ODtpOjQ4O2k6NjU1MzU5O2k6NDk7aTo3MjA4OTQ7aTo1MDtpOjcyMDg5NTtpOjUxO2k6Nzg2NDMwO2k6NTI7aTo3ODY0MzE7aTo1MztpOjg1MTk2NjtpOjU0O2k6ODUxOTY3O2k6NTU7aTo5MTc1MDI7aTo1NjtpOjkxNzUwMztpOjU3O2k6OTgzMDM4O2k6NTg7aTo5ODMwMzk7aTo1OTtpOjEwNDg1NzQ7aTo2MDtpOjEwNDg1NzU7aTo2MTtpOjExMTQxMTA7aTo2MjtpOjExMTQxMTE7aTo2MztpOjY1NTI5O2k6NjQ7aTo2NTUzMDtpOjY1O2k6NjU1MzE7aTo2NjtpOjY1NTMyO2k6Njc7aTo2NTUzMztpOjY4O2k6ODMyO2k6Njk7aTo4MzM7aTo3MDtpOjgyMDY7aTo3MTtpOjgyMDc7aTo3MjtpOjgyMzQ7aTo3MztpOjgyMzU7aTo3NDtpOjgyMzY7aTo3NTtpOjgyMzc7aTo3NjtpOjgyMzg7aTo3NztpOjgyOTg7aTo3ODtpOjgyOTk7aTo3OTtpOjgzMDA7aTo4MDtpOjgzMDE7aTo4MTtpOjgzMDI7aTo4MjtpOjgzMDM7aTo4MztpOjkxNzUwNTt9czoxNToicHJvaGliaXRfcmFuZ2VzIjthOjEwOntpOjA7YToyOntpOjA7aToxMjg7aToxO2k6MTU5O31pOjE7YToyOntpOjA7aTo4Mjg4O2k6MTtpOjgzMDM7fWk6MjthOjI6e2k6MDtpOjExOTE1NTtpOjE7aToxMTkxNjI7fWk6MzthOjI6e2k6MDtpOjU3MzQ0O2k6MTtpOjYzNzQzO31pOjQ7YToyOntpOjA7aTo5ODMwNDA7aToxO2k6MTA0ODU3Mzt9aTo1O2E6Mjp7aTowO2k6MTA0ODU3NjtpOjE7aToxMTE0MTA5O31pOjY7YToyOntpOjA7aTo2NDk3NjtpOjE7aTo2NTAwNzt9aTo3O2E6Mjp7aTowO2k6NTUyOTY7aToxO2k6NTczNDM7fWk6ODthOjI6e2k6MDtpOjEyMjcyO2k6MTtpOjEyMjgzO31pOjk7YToyOntpOjA7aTo5MTc1MzY7aToxO2k6OTE3NjMxO319czoxMToicmVwbGFjZW1hcHMiO2E6MTQwMTp7aTo2NTthOjE6e2k6MDtpOjk3O31pOjY2O2E6MTp7aTowO2k6OTg7fWk6Njc7YToxOntpOjA7aTo5OTt9aTo2ODthOjE6e2k6MDtpOjEwMDt9aTo2OTthOjE6e2k6MDtpOjEwMTt9aTo3MDthOjE6e2k6MDtpOjEwMjt9aTo3MTthOjE6e2k6MDtpOjEwMzt9aTo3MjthOjE6e2k6MDtpOjEwNDt9aTo3MzthOjE6e2k6MDtpOjEwNTt9aTo3NDthOjE6e2k6MDtpOjEwNjt9aTo3NTthOjE6e2k6MDtpOjEwNzt9aTo3NjthOjE6e2k6MDtpOjEwODt9aTo3NzthOjE6e2k6MDtpOjEwOTt9aTo3ODthOjE6e2k6MDtpOjExMDt9aTo3OTthOjE6e2k6MDtpOjExMTt9aTo4MDthOjE6e2k6MDtpOjExMjt9aTo4MTthOjE6e2k6MDtpOjExMzt9aTo4MjthOjE6e2k6MDtpOjExNDt9aTo4MzthOjE6e2k6MDtpOjExNTt9aTo4NDthOjE6e2k6MDtpOjExNjt9aTo4NTthOjE6e2k6MDtpOjExNzt9aTo4NjthOjE6e2k6MDtpOjExODt9aTo4NzthOjE6e2k6MDtpOjExOTt9aTo4ODthOjE6e2k6MDtpOjEyMDt9aTo4OTthOjE6e2k6MDtpOjEyMTt9aTo5MDthOjE6e2k6MDtpOjEyMjt9aToxODE7YToxOntpOjA7aTo5NTY7fWk6MTkyO2E6MTp7aTowO2k6MjI0O31pOjE5MzthOjE6e2k6MDtpOjIyNTt9aToxOTQ7YToxOntpOjA7aToyMjY7fWk6MTk1O2E6MTp7aTowO2k6MjI3O31pOjE5NjthOjE6e2k6MDtpOjIyODt9aToxOTc7YToxOntpOjA7aToyMjk7fWk6MTk4O2E6MTp7aTowO2k6MjMwO31pOjE5OTthOjE6e2k6MDtpOjIzMTt9aToyMDA7YToxOntpOjA7aToyMzI7fWk6MjAxO2E6MTp7aTowO2k6MjMzO31pOjIwMjthOjE6e2k6MDtpOjIzNDt9aToyMDM7YToxOntpOjA7aToyMzU7fWk6MjA0O2E6MTp7aTowO2k6MjM2O31pOjIwNTthOjE6e2k6MDtpOjIzNzt9aToyMDY7YToxOntpOjA7aToyMzg7fWk6MjA3O2E6MTp7aTowO2k6MjM5O31pOjIwODthOjE6e2k6MDtpOjI0MDt9aToyMDk7YToxOntpOjA7aToyNDE7fWk6MjEwO2E6MTp7aTowO2k6MjQyO31pOjIxMTthOjE6e2k6MDtpOjI0Mzt9aToyMTI7YToxOntpOjA7aToyNDQ7fWk6MjEzO2E6MTp7aTowO2k6MjQ1O31pOjIxNDthOjE6e2k6MDtpOjI0Njt9aToyMTY7YToxOntpOjA7aToyNDg7fWk6MjE3O2E6MTp7aTowO2k6MjQ5O31pOjIxODthOjE6e2k6MDtpOjI1MDt9aToyMTk7YToxOntpOjA7aToyNTE7fWk6MjIwO2E6MTp7aTowO2k6MjUyO31pOjIyMTthOjE6e2k6MDtpOjI1Mzt9aToyMjI7YToxOntpOjA7aToyNTQ7fWk6MjIzO2E6Mjp7aTowO2k6MTE1O2k6MTtpOjExNTt9aToyNTY7YToxOntpOjA7aToyNTc7fWk6MjU4O2E6MTp7aTowO2k6MjU5O31pOjI2MDthOjE6e2k6MDtpOjI2MTt9aToyNjI7YToxOntpOjA7aToyNjM7fWk6MjY0O2E6MTp7aTowO2k6MjY1O31pOjI2NjthOjE6e2k6MDtpOjI2Nzt9aToyNjg7YToxOntpOjA7aToyNjk7fWk6MjcwO2E6MTp7aTowO2k6MjcxO31pOjI3MjthOjE6e2k6MDtpOjI3Mzt9aToyNzQ7YToxOntpOjA7aToyNzU7fWk6Mjc2O2E6MTp7aTowO2k6Mjc3O31pOjI3ODthOjE6e2k6MDtpOjI3OTt9aToyODA7YToxOntpOjA7aToyODE7fWk6MjgyO2E6MTp7aTowO2k6MjgzO31pOjI4NDthOjE6e2k6MDtpOjI4NTt9aToyODY7YToxOntpOjA7aToyODc7fWk6Mjg4O2E6MTp7aTowO2k6Mjg5O31pOjI5MDthOjE6e2k6MDtpOjI5MTt9aToyOTI7YToxOntpOjA7aToyOTM7fWk6Mjk0O2E6MTp7aTowO2k6Mjk1O31pOjI5NjthOjE6e2k6MDtpOjI5Nzt9aToyOTg7YToxOntpOjA7aToyOTk7fWk6MzAwO2E6MTp7aTowO2k6MzAxO31pOjMwMjthOjE6e2k6MDtpOjMwMzt9aTozMDQ7YToyOntpOjA7aToxMDU7aToxO2k6Nzc1O31pOjMwNjthOjE6e2k6MDtpOjMwNzt9aTozMDg7YToxOntpOjA7aTozMDk7fWk6MzEwO2E6MTp7aTowO2k6MzExO31pOjMxMzthOjE6e2k6MDtpOjMxNDt9aTozMTU7YToxOntpOjA7aTozMTY7fWk6MzE3O2E6MTp7aTowO2k6MzE4O31pOjMxOTthOjE6e2k6MDtpOjMyMDt9aTozMjE7YToxOntpOjA7aTozMjI7fWk6MzIzO2E6MTp7aTowO2k6MzI0O31pOjMyNTthOjE6e2k6MDtpOjMyNjt9aTozMjc7YToxOntpOjA7aTozMjg7fWk6MzI5O2E6Mjp7aTowO2k6NzAwO2k6MTtpOjExMDt9aTozMzA7YToxOntpOjA7aTozMzE7fWk6MzMyO2E6MTp7aTowO2k6MzMzO31pOjMzNDthOjE6e2k6MDtpOjMzNTt9aTozMzY7YToxOntpOjA7aTozMzc7fWk6MzM4O2E6MTp7aTowO2k6MzM5O31pOjM0MDthOjE6e2k6MDtpOjM0MTt9aTozNDI7YToxOntpOjA7aTozNDM7fWk6MzQ0O2E6MTp7aTowO2k6MzQ1O31pOjM0NjthOjE6e2k6MDtpOjM0Nzt9aTozNDg7YToxOntpOjA7aTozNDk7fWk6MzUwO2E6MTp7aTowO2k6MzUxO31pOjM1MjthOjE6e2k6MDtpOjM1Mzt9aTozNTQ7YToxOntpOjA7aTozNTU7fWk6MzU2O2E6MTp7aTowO2k6MzU3O31pOjM1ODthOjE6e2k6MDtpOjM1OTt9aTozNjA7YToxOntpOjA7aTozNjE7fWk6MzYyO2E6MTp7aTowO2k6MzYzO31pOjM2NDthOjE6e2k6MDtpOjM2NTt9aTozNjY7YToxOntpOjA7aTozNjc7fWk6MzY4O2E6MTp7aTowO2k6MzY5O31pOjM3MDthOjE6e2k6MDtpOjM3MTt9aTozNzI7YToxOntpOjA7aTozNzM7fWk6Mzc0O2E6MTp7aTowO2k6Mzc1O31pOjM3NjthOjE6e2k6MDtpOjI1NTt9aTozNzc7YToxOntpOjA7aTozNzg7fWk6Mzc5O2E6MTp7aTowO2k6MzgwO31pOjM4MTthOjE6e2k6MDtpOjM4Mjt9aTozODM7YToxOntpOjA7aToxMTU7fWk6Mzg1O2E6MTp7aTowO2k6NTk1O31pOjM4NjthOjE6e2k6MDtpOjM4Nzt9aTozODg7YToxOntpOjA7aTozODk7fWk6MzkwO2E6MTp7aTowO2k6NTk2O31pOjM5MTthOjE6e2k6MDtpOjM5Mjt9aTozOTM7YToxOntpOjA7aTo1OTg7fWk6Mzk0O2E6MTp7aTowO2k6NTk5O31pOjM5NTthOjE6e2k6MDtpOjM5Njt9aTozOTg7YToxOntpOjA7aTo0Nzc7fWk6Mzk5O2E6MTp7aTowO2k6NjAxO31pOjQwMDthOjE6e2k6MDtpOjYwMzt9aTo0MDE7YToxOntpOjA7aTo0MDI7fWk6NDAzO2E6MTp7aTowO2k6NjA4O31pOjQwNDthOjE6e2k6MDtpOjYxMTt9aTo0MDY7YToxOntpOjA7aTo2MTc7fWk6NDA3O2E6MTp7aTowO2k6NjE2O31pOjQwODthOjE6e2k6MDtpOjQwOTt9aTo0MTI7YToxOntpOjA7aTo2MjM7fWk6NDEzO2E6MTp7aTowO2k6NjI2O31pOjQxNTthOjE6e2k6MDtpOjYyOTt9aTo0MTY7YToxOntpOjA7aTo0MTc7fWk6NDE4O2E6MTp7aTowO2k6NDE5O31pOjQyMDthOjE6e2k6MDtpOjQyMTt9aTo0MjI7YToxOntpOjA7aTo2NDA7fWk6NDIzO2E6MTp7aTowO2k6NDI0O31pOjQyNTthOjE6e2k6MDtpOjY0Mzt9aTo0Mjg7YToxOntpOjA7aTo0Mjk7fWk6NDMwO2E6MTp7aTowO2k6NjQ4O31pOjQzMTthOjE6e2k6MDtpOjQzMjt9aTo0MzM7YToxOntpOjA7aTo2NTA7fWk6NDM0O2E6MTp7aTowO2k6NjUxO31pOjQzNTthOjE6e2k6MDtpOjQzNjt9aTo0Mzc7YToxOntpOjA7aTo0Mzg7fWk6NDM5O2E6MTp7aTowO2k6NjU4O31pOjQ0MDthOjE6e2k6MDtpOjQ0MTt9aTo0NDQ7YToxOntpOjA7aTo0NDU7fWk6NDUyO2E6MTp7aTowO2k6NDU0O31pOjQ1MzthOjE6e2k6MDtpOjQ1NDt9aTo0NTU7YToxOntpOjA7aTo0NTc7fWk6NDU2O2E6MTp7aTowO2k6NDU3O31pOjQ1ODthOjE6e2k6MDtpOjQ2MDt9aTo0NTk7YToxOntpOjA7aTo0NjA7fWk6NDYxO2E6MTp7aTowO2k6NDYyO31pOjQ2MzthOjE6e2k6MDtpOjQ2NDt9aTo0NjU7YToxOntpOjA7aTo0NjY7fWk6NDY3O2E6MTp7aTowO2k6NDY4O31pOjQ2OTthOjE6e2k6MDtpOjQ3MDt9aTo0NzE7YToxOntpOjA7aTo0NzI7fWk6NDczO2E6MTp7aTowO2k6NDc0O31pOjQ3NTthOjE6e2k6MDtpOjQ3Njt9aTo0Nzg7YToxOntpOjA7aTo0Nzk7fWk6NDgwO2E6MTp7aTowO2k6NDgxO31pOjQ4MjthOjE6e2k6MDtpOjQ4Mzt9aTo0ODQ7YToxOntpOjA7aTo0ODU7fWk6NDg2O2E6MTp7aTowO2k6NDg3O31pOjQ4ODthOjE6e2k6MDtpOjQ4OTt9aTo0OTA7YToxOntpOjA7aTo0OTE7fWk6NDkyO2E6MTp7aTowO2k6NDkzO31pOjQ5NDthOjE6e2k6MDtpOjQ5NTt9aTo0OTY7YToyOntpOjA7aToxMDY7aToxO2k6NzgwO31pOjQ5NzthOjE6e2k6MDtpOjQ5OTt9aTo0OTg7YToxOntpOjA7aTo0OTk7fWk6NTAwO2E6MTp7aTowO2k6NTAxO31pOjUwMjthOjE6e2k6MDtpOjQwNTt9aTo1MDM7YToxOntpOjA7aTo0NDc7fWk6NTA0O2E6MTp7aTowO2k6NTA1O31pOjUwNjthOjE6e2k6MDtpOjUwNzt9aTo1MDg7YToxOntpOjA7aTo1MDk7fWk6NTEwO2E6MTp7aTowO2k6NTExO31pOjUxMjthOjE6e2k6MDtpOjUxMzt9aTo1MTQ7YToxOntpOjA7aTo1MTU7fWk6NTE2O2E6MTp7aTowO2k6NTE3O31pOjUxODthOjE6e2k6MDtpOjUxOTt9aTo1MjA7YToxOntpOjA7aTo1MjE7fWk6NTIyO2E6MTp7aTowO2k6NTIzO31pOjUyNDthOjE6e2k6MDtpOjUyNTt9aTo1MjY7YToxOntpOjA7aTo1Mjc7fWk6NTI4O2E6MTp7aTowO2k6NTI5O31pOjUzMDthOjE6e2k6MDtpOjUzMTt9aTo1MzI7YToxOntpOjA7aTo1MzM7fWk6NTM0O2E6MTp7aTowO2k6NTM1O31pOjUzNjthOjE6e2k6MDtpOjUzNzt9aTo1Mzg7YToxOntpOjA7aTo1Mzk7fWk6NTQwO2E6MTp7aTowO2k6NTQxO31pOjU0MjthOjE6e2k6MDtpOjU0Mzt9aTo1NDQ7YToxOntpOjA7aTo0MTQ7fWk6NTQ2O2E6MTp7aTowO2k6NTQ3O31pOjU0ODthOjE6e2k6MDtpOjU0OTt9aTo1NTA7YToxOntpOjA7aTo1NTE7fWk6NTUyO2E6MTp7aTowO2k6NTUzO31pOjU1NDthOjE6e2k6MDtpOjU1NTt9aTo1NTY7YToxOntpOjA7aTo1NTc7fWk6NTU4O2E6MTp7aTowO2k6NTU5O31pOjU2MDthOjE6e2k6MDtpOjU2MTt9aTo1NjI7YToxOntpOjA7aTo1NjM7fWk6ODM3O2E6MTp7aTowO2k6OTUzO31pOjg5MDthOjI6e2k6MDtpOjMyO2k6MTtpOjk1Mzt9aTo5MDI7YToxOntpOjA7aTo5NDA7fWk6OTA0O2E6MTp7aTowO2k6OTQxO31pOjkwNTthOjE6e2k6MDtpOjk0Mjt9aTo5MDY7YToxOntpOjA7aTo5NDM7fWk6OTA4O2E6MTp7aTowO2k6OTcyO31pOjkxMDthOjE6e2k6MDtpOjk3Mzt9aTo5MTE7YToxOntpOjA7aTo5NzQ7fWk6OTEyO2E6Mzp7aTowO2k6OTUzO2k6MTtpOjc3NjtpOjI7aTo3Njk7fWk6OTEzO2E6MTp7aTowO2k6OTQ1O31pOjkxNDthOjE6e2k6MDtpOjk0Njt9aTo5MTU7YToxOntpOjA7aTo5NDc7fWk6OTE2O2E6MTp7aTowO2k6OTQ4O31pOjkxNzthOjE6e2k6MDtpOjk0OTt9aTo5MTg7YToxOntpOjA7aTo5NTA7fWk6OTE5O2E6MTp7aTowO2k6OTUxO31pOjkyMDthOjE6e2k6MDtpOjk1Mjt9aTo5MjE7YToxOntpOjA7aTo5NTM7fWk6OTIyO2E6MTp7aTowO2k6OTU0O31pOjkyMzthOjE6e2k6MDtpOjk1NTt9aTo5MjQ7YToxOntpOjA7aTo5NTY7fWk6OTI1O2E6MTp7aTowO2k6OTU3O31pOjkyNjthOjE6e2k6MDtpOjk1ODt9aTo5Mjc7YToxOntpOjA7aTo5NTk7fWk6OTI4O2E6MTp7aTowO2k6OTYwO31pOjkyOTthOjE6e2k6MDtpOjk2MTt9aTo5MzE7YToxOntpOjA7aTo5NjM7fWk6OTMyO2E6MTp7aTowO2k6OTY0O31pOjkzMzthOjE6e2k6MDtpOjk2NTt9aTo5MzQ7YToxOntpOjA7aTo5NjY7fWk6OTM1O2E6MTp7aTowO2k6OTY3O31pOjkzNjthOjE6e2k6MDtpOjk2ODt9aTo5Mzc7YToxOntpOjA7aTo5Njk7fWk6OTM4O2E6MTp7aTowO2k6OTcwO31pOjkzOTthOjE6e2k6MDtpOjk3MTt9aTo5NDQ7YTozOntpOjA7aTo5NjU7aToxO2k6Nzc2O2k6MjtpOjc2OTt9aTo5NjI7YToxOntpOjA7aTo5NjM7fWk6OTc2O2E6MTp7aTowO2k6OTQ2O31pOjk3NzthOjE6e2k6MDtpOjk1Mjt9aTo5Nzg7YToxOntpOjA7aTo5NjU7fWk6OTc5O2E6MTp7aTowO2k6OTczO31pOjk4MDthOjE6e2k6MDtpOjk3MTt9aTo5ODE7YToxOntpOjA7aTo5NjY7fWk6OTgyO2E6MTp7aTowO2k6OTYwO31pOjk4NDthOjE6e2k6MDtpOjk4NTt9aTo5ODY7YToxOntpOjA7aTo5ODc7fWk6OTg4O2E6MTp7aTowO2k6OTg5O31pOjk5MDthOjE6e2k6MDtpOjk5MTt9aTo5OTI7YToxOntpOjA7aTo5OTM7fWk6OTk0O2E6MTp7aTowO2k6OTk1O31pOjk5NjthOjE6e2k6MDtpOjk5Nzt9aTo5OTg7YToxOntpOjA7aTo5OTk7fWk6MTAwMDthOjE6e2k6MDtpOjEwMDE7fWk6MTAwMjthOjE6e2k6MDtpOjEwMDM7fWk6MTAwNDthOjE6e2k6MDtpOjEwMDU7fWk6MTAwNjthOjE6e2k6MDtpOjEwMDc7fWk6MTAwODthOjE6e2k6MDtpOjk1NDt9aToxMDA5O2E6MTp7aTowO2k6OTYxO31pOjEwMTA7YToxOntpOjA7aTo5NjM7fWk6MTAxMjthOjE6e2k6MDtpOjk1Mjt9aToxMDEzO2E6MTp7aTowO2k6OTQ5O31pOjEwMjQ7YToxOntpOjA7aToxMTA0O31pOjEwMjU7YToxOntpOjA7aToxMTA1O31pOjEwMjY7YToxOntpOjA7aToxMTA2O31pOjEwMjc7YToxOntpOjA7aToxMTA3O31pOjEwMjg7YToxOntpOjA7aToxMTA4O31pOjEwMjk7YToxOntpOjA7aToxMTA5O31pOjEwMzA7YToxOntpOjA7aToxMTEwO31pOjEwMzE7YToxOntpOjA7aToxMTExO31pOjEwMzI7YToxOntpOjA7aToxMTEyO31pOjEwMzM7YToxOntpOjA7aToxMTEzO31pOjEwMzQ7YToxOntpOjA7aToxMTE0O31pOjEwMzU7YToxOntpOjA7aToxMTE1O31pOjEwMzY7YToxOntpOjA7aToxMTE2O31pOjEwMzc7YToxOntpOjA7aToxMTE3O31pOjEwMzg7YToxOntpOjA7aToxMTE4O31pOjEwMzk7YToxOntpOjA7aToxMTE5O31pOjEwNDA7YToxOntpOjA7aToxMDcyO31pOjEwNDE7YToxOntpOjA7aToxMDczO31pOjEwNDI7YToxOntpOjA7aToxMDc0O31pOjEwNDM7YToxOntpOjA7aToxMDc1O31pOjEwNDQ7YToxOntpOjA7aToxMDc2O31pOjEwNDU7YToxOntpOjA7aToxMDc3O31pOjEwNDY7YToxOntpOjA7aToxMDc4O31pOjEwNDc7YToxOntpOjA7aToxMDc5O31pOjEwNDg7YToxOntpOjA7aToxMDgwO31pOjEwNDk7YToxOntpOjA7aToxMDgxO31pOjEwNTA7YToxOntpOjA7aToxMDgyO31pOjEwNTE7YToxOntpOjA7aToxMDgzO31pOjEwNTI7YToxOntpOjA7aToxMDg0O31pOjEwNTM7YToxOntpOjA7aToxMDg1O31pOjEwNTQ7YToxOntpOjA7aToxMDg2O31pOjEwNTU7YToxOntpOjA7aToxMDg3O31pOjEwNTY7YToxOntpOjA7aToxMDg4O31pOjEwNTc7YToxOntpOjA7aToxMDg5O31pOjEwNTg7YToxOntpOjA7aToxMDkwO31pOjEwNTk7YToxOntpOjA7aToxMDkxO31pOjEwNjA7YToxOntpOjA7aToxMDkyO31pOjEwNjE7YToxOntpOjA7aToxMDkzO31pOjEwNjI7YToxOntpOjA7aToxMDk0O31pOjEwNjM7YToxOntpOjA7aToxMDk1O31pOjEwNjQ7YToxOntpOjA7aToxMDk2O31pOjEwNjU7YToxOntpOjA7aToxMDk3O31pOjEwNjY7YToxOntpOjA7aToxMDk4O31pOjEwNjc7YToxOntpOjA7aToxMDk5O31pOjEwNjg7YToxOntpOjA7aToxMTAwO31pOjEwNjk7YToxOntpOjA7aToxMTAxO31pOjEwNzA7YToxOntpOjA7aToxMTAyO31pOjEwNzE7YToxOntpOjA7aToxMTAzO31pOjExMjA7YToxOntpOjA7aToxMTIxO31pOjExMjI7YToxOntpOjA7aToxMTIzO31pOjExMjQ7YToxOntpOjA7aToxMTI1O31pOjExMjY7YToxOntpOjA7aToxMTI3O31pOjExMjg7YToxOntpOjA7aToxMTI5O31pOjExMzA7YToxOntpOjA7aToxMTMxO31pOjExMzI7YToxOntpOjA7aToxMTMzO31pOjExMzQ7YToxOntpOjA7aToxMTM1O31pOjExMzY7YToxOntpOjA7aToxMTM3O31pOjExMzg7YToxOntpOjA7aToxMTM5O31pOjExNDA7YToxOntpOjA7aToxMTQxO31pOjExNDI7YToxOntpOjA7aToxMTQzO31pOjExNDQ7YToxOntpOjA7aToxMTQ1O31pOjExNDY7YToxOntpOjA7aToxMTQ3O31pOjExNDg7YToxOntpOjA7aToxMTQ5O31pOjExNTA7YToxOntpOjA7aToxMTUxO31pOjExNTI7YToxOntpOjA7aToxMTUzO31pOjExNjI7YToxOntpOjA7aToxMTYzO31pOjExNjQ7YToxOntpOjA7aToxMTY1O31pOjExNjY7YToxOntpOjA7aToxMTY3O31pOjExNjg7YToxOntpOjA7aToxMTY5O31pOjExNzA7YToxOntpOjA7aToxMTcxO31pOjExNzI7YToxOntpOjA7aToxMTczO31pOjExNzQ7YToxOntpOjA7aToxMTc1O31pOjExNzY7YToxOntpOjA7aToxMTc3O31pOjExNzg7YToxOntpOjA7aToxMTc5O31pOjExODA7YToxOntpOjA7aToxMTgxO31pOjExODI7YToxOntpOjA7aToxMTgzO31pOjExODQ7YToxOntpOjA7aToxMTg1O31pOjExODY7YToxOntpOjA7aToxMTg3O31pOjExODg7YToxOntpOjA7aToxMTg5O31pOjExOTA7YToxOntpOjA7aToxMTkxO31pOjExOTI7YToxOntpOjA7aToxMTkzO31pOjExOTQ7YToxOntpOjA7aToxMTk1O31pOjExOTY7YToxOntpOjA7aToxMTk3O31pOjExOTg7YToxOntpOjA7aToxMTk5O31pOjEyMDA7YToxOntpOjA7aToxMjAxO31pOjEyMDI7YToxOntpOjA7aToxMjAzO31pOjEyMDQ7YToxOntpOjA7aToxMjA1O31pOjEyMDY7YToxOntpOjA7aToxMjA3O31pOjEyMDg7YToxOntpOjA7aToxMjA5O31pOjEyMTA7YToxOntpOjA7aToxMjExO31pOjEyMTI7YToxOntpOjA7aToxMjEzO31pOjEyMTQ7YToxOntpOjA7aToxMjE1O31pOjEyMTc7YToxOntpOjA7aToxMjE4O31pOjEyMTk7YToxOntpOjA7aToxMjIwO31pOjEyMjE7YToxOntpOjA7aToxMjIyO31pOjEyMjM7YToxOntpOjA7aToxMjI0O31pOjEyMjU7YToxOntpOjA7aToxMjI2O31pOjEyMjc7YToxOntpOjA7aToxMjI4O31pOjEyMjk7YToxOntpOjA7aToxMjMwO31pOjEyMzI7YToxOntpOjA7aToxMjMzO31pOjEyMzQ7YToxOntpOjA7aToxMjM1O31pOjEyMzY7YToxOntpOjA7aToxMjM3O31pOjEyMzg7YToxOntpOjA7aToxMjM5O31pOjEyNDA7YToxOntpOjA7aToxMjQxO31pOjEyNDI7YToxOntpOjA7aToxMjQzO31pOjEyNDQ7YToxOntpOjA7aToxMjQ1O31pOjEyNDY7YToxOntpOjA7aToxMjQ3O31pOjEyNDg7YToxOntpOjA7aToxMjQ5O31pOjEyNTA7YToxOntpOjA7aToxMjUxO31pOjEyNTI7YToxOntpOjA7aToxMjUzO31pOjEyNTQ7YToxOntpOjA7aToxMjU1O31pOjEyNTY7YToxOntpOjA7aToxMjU3O31pOjEyNTg7YToxOntpOjA7aToxMjU5O31pOjEyNjA7YToxOntpOjA7aToxMjYxO31pOjEyNjI7YToxOntpOjA7aToxMjYzO31pOjEyNjQ7YToxOntpOjA7aToxMjY1O31pOjEyNjY7YToxOntpOjA7aToxMjY3O31pOjEyNjg7YToxOntpOjA7aToxMjY5O31pOjEyNzI7YToxOntpOjA7aToxMjczO31pOjEyODA7YToxOntpOjA7aToxMjgxO31pOjEyODI7YToxOntpOjA7aToxMjgzO31pOjEyODQ7YToxOntpOjA7aToxMjg1O31pOjEyODY7YToxOntpOjA7aToxMjg3O31pOjEyODg7YToxOntpOjA7aToxMjg5O31pOjEyOTA7YToxOntpOjA7aToxMjkxO31pOjEyOTI7YToxOntpOjA7aToxMjkzO31pOjEyOTQ7YToxOntpOjA7aToxMjk1O31pOjEzMjk7YToxOntpOjA7aToxMzc3O31pOjEzMzA7YToxOntpOjA7aToxMzc4O31pOjEzMzE7YToxOntpOjA7aToxMzc5O31pOjEzMzI7YToxOntpOjA7aToxMzgwO31pOjEzMzM7YToxOntpOjA7aToxMzgxO31pOjEzMzQ7YToxOntpOjA7aToxMzgyO31pOjEzMzU7YToxOntpOjA7aToxMzgzO31pOjEzMzY7YToxOntpOjA7aToxMzg0O31pOjEzMzc7YToxOntpOjA7aToxMzg1O31pOjEzMzg7YToxOntpOjA7aToxMzg2O31pOjEzMzk7YToxOntpOjA7aToxMzg3O31pOjEzNDA7YToxOntpOjA7aToxMzg4O31pOjEzNDE7YToxOntpOjA7aToxMzg5O31pOjEzNDI7YToxOntpOjA7aToxMzkwO31pOjEzNDM7YToxOntpOjA7aToxMzkxO31pOjEzNDQ7YToxOntpOjA7aToxMzkyO31pOjEzNDU7YToxOntpOjA7aToxMzkzO31pOjEzNDY7YToxOntpOjA7aToxMzk0O31pOjEzNDc7YToxOntpOjA7aToxMzk1O31pOjEzNDg7YToxOntpOjA7aToxMzk2O31pOjEzNDk7YToxOntpOjA7aToxMzk3O31pOjEzNTA7YToxOntpOjA7aToxMzk4O31pOjEzNTE7YToxOntpOjA7aToxMzk5O31pOjEzNTI7YToxOntpOjA7aToxNDAwO31pOjEzNTM7YToxOntpOjA7aToxNDAxO31pOjEzNTQ7YToxOntpOjA7aToxNDAyO31pOjEzNTU7YToxOntpOjA7aToxNDAzO31pOjEzNTY7YToxOntpOjA7aToxNDA0O31pOjEzNTc7YToxOntpOjA7aToxNDA1O31pOjEzNTg7YToxOntpOjA7aToxNDA2O31pOjEzNTk7YToxOntpOjA7aToxNDA3O31pOjEzNjA7YToxOntpOjA7aToxNDA4O31pOjEzNjE7YToxOntpOjA7aToxNDA5O31pOjEzNjI7YToxOntpOjA7aToxNDEwO31pOjEzNjM7YToxOntpOjA7aToxNDExO31pOjEzNjQ7YToxOntpOjA7aToxNDEyO31pOjEzNjU7YToxOntpOjA7aToxNDEzO31pOjEzNjY7YToxOntpOjA7aToxNDE0O31pOjE0MTU7YToyOntpOjA7aToxMzgxO2k6MTtpOjE0MTA7fWk6NzY4MDthOjE6e2k6MDtpOjc2ODE7fWk6NzY4MjthOjE6e2k6MDtpOjc2ODM7fWk6NzY4NDthOjE6e2k6MDtpOjc2ODU7fWk6NzY4NjthOjE6e2k6MDtpOjc2ODc7fWk6NzY4ODthOjE6e2k6MDtpOjc2ODk7fWk6NzY5MDthOjE6e2k6MDtpOjc2OTE7fWk6NzY5MjthOjE6e2k6MDtpOjc2OTM7fWk6NzY5NDthOjE6e2k6MDtpOjc2OTU7fWk6NzY5NjthOjE6e2k6MDtpOjc2OTc7fWk6NzY5ODthOjE6e2k6MDtpOjc2OTk7fWk6NzcwMDthOjE6e2k6MDtpOjc3MDE7fWk6NzcwMjthOjE6e2k6MDtpOjc3MDM7fWk6NzcwNDthOjE6e2k6MDtpOjc3MDU7fWk6NzcwNjthOjE6e2k6MDtpOjc3MDc7fWk6NzcwODthOjE6e2k6MDtpOjc3MDk7fWk6NzcxMDthOjE6e2k6MDtpOjc3MTE7fWk6NzcxMjthOjE6e2k6MDtpOjc3MTM7fWk6NzcxNDthOjE6e2k6MDtpOjc3MTU7fWk6NzcxNjthOjE6e2k6MDtpOjc3MTc7fWk6NzcxODthOjE6e2k6MDtpOjc3MTk7fWk6NzcyMDthOjE6e2k6MDtpOjc3MjE7fWk6NzcyMjthOjE6e2k6MDtpOjc3MjM7fWk6NzcyNDthOjE6e2k6MDtpOjc3MjU7fWk6NzcyNjthOjE6e2k6MDtpOjc3Mjc7fWk6NzcyODthOjE6e2k6MDtpOjc3Mjk7fWk6NzczMDthOjE6e2k6MDtpOjc3MzE7fWk6NzczMjthOjE6e2k6MDtpOjc3MzM7fWk6NzczNDthOjE6e2k6MDtpOjc3MzU7fWk6NzczNjthOjE6e2k6MDtpOjc3Mzc7fWk6NzczODthOjE6e2k6MDtpOjc3Mzk7fWk6Nzc0MDthOjE6e2k6MDtpOjc3NDE7fWk6Nzc0MjthOjE6e2k6MDtpOjc3NDM7fWk6Nzc0NDthOjE6e2k6MDtpOjc3NDU7fWk6Nzc0NjthOjE6e2k6MDtpOjc3NDc7fWk6Nzc0ODthOjE6e2k6MDtpOjc3NDk7fWk6Nzc1MDthOjE6e2k6MDtpOjc3NTE7fWk6Nzc1MjthOjE6e2k6MDtpOjc3NTM7fWk6Nzc1NDthOjE6e2k6MDtpOjc3NTU7fWk6Nzc1NjthOjE6e2k6MDtpOjc3NTc7fWk6Nzc1ODthOjE6e2k6MDtpOjc3NTk7fWk6Nzc2MDthOjE6e2k6MDtpOjc3NjE7fWk6Nzc2MjthOjE6e2k6MDtpOjc3NjM7fWk6Nzc2NDthOjE6e2k6MDtpOjc3NjU7fWk6Nzc2NjthOjE6e2k6MDtpOjc3Njc7fWk6Nzc2ODthOjE6e2k6MDtpOjc3Njk7fWk6Nzc3MDthOjE6e2k6MDtpOjc3NzE7fWk6Nzc3MjthOjE6e2k6MDtpOjc3NzM7fWk6Nzc3NDthOjE6e2k6MDtpOjc3NzU7fWk6Nzc3NjthOjE6e2k6MDtpOjc3Nzc7fWk6Nzc3ODthOjE6e2k6MDtpOjc3Nzk7fWk6Nzc4MDthOjE6e2k6MDtpOjc3ODE7fWk6Nzc4MjthOjE6e2k6MDtpOjc3ODM7fWk6Nzc4NDthOjE6e2k6MDtpOjc3ODU7fWk6Nzc4NjthOjE6e2k6MDtpOjc3ODc7fWk6Nzc4ODthOjE6e2k6MDtpOjc3ODk7fWk6Nzc5MDthOjE6e2k6MDtpOjc3OTE7fWk6Nzc5MjthOjE6e2k6MDtpOjc3OTM7fWk6Nzc5NDthOjE6e2k6MDtpOjc3OTU7fWk6Nzc5NjthOjE6e2k6MDtpOjc3OTc7fWk6Nzc5ODthOjE6e2k6MDtpOjc3OTk7fWk6NzgwMDthOjE6e2k6MDtpOjc4MDE7fWk6NzgwMjthOjE6e2k6MDtpOjc4MDM7fWk6NzgwNDthOjE6e2k6MDtpOjc4MDU7fWk6NzgwNjthOjE6e2k6MDtpOjc4MDc7fWk6NzgwODthOjE6e2k6MDtpOjc4MDk7fWk6NzgxMDthOjE6e2k6MDtpOjc4MTE7fWk6NzgxMjthOjE6e2k6MDtpOjc4MTM7fWk6NzgxNDthOjE6e2k6MDtpOjc4MTU7fWk6NzgxNjthOjE6e2k6MDtpOjc4MTc7fWk6NzgxODthOjE6e2k6MDtpOjc4MTk7fWk6NzgyMDthOjE6e2k6MDtpOjc4MjE7fWk6NzgyMjthOjE6e2k6MDtpOjc4MjM7fWk6NzgyNDthOjE6e2k6MDtpOjc4MjU7fWk6NzgyNjthOjE6e2k6MDtpOjc4Mjc7fWk6NzgyODthOjE6e2k6MDtpOjc4Mjk7fWk6NzgzMDthOjI6e2k6MDtpOjEwNDtpOjE7aTo4MTc7fWk6NzgzMTthOjI6e2k6MDtpOjExNjtpOjE7aTo3NzY7fWk6NzgzMjthOjI6e2k6MDtpOjExOTtpOjE7aTo3Nzg7fWk6NzgzMzthOjI6e2k6MDtpOjEyMTtpOjE7aTo3Nzg7fWk6NzgzNDthOjI6e2k6MDtpOjk3O2k6MTtpOjcwMjt9aTo3ODM1O2E6MTp7aTowO2k6Nzc3Nzt9aTo3ODQwO2E6MTp7aTowO2k6Nzg0MTt9aTo3ODQyO2E6MTp7aTowO2k6Nzg0Mzt9aTo3ODQ0O2E6MTp7aTowO2k6Nzg0NTt9aTo3ODQ2O2E6MTp7aTowO2k6Nzg0Nzt9aTo3ODQ4O2E6MTp7aTowO2k6Nzg0OTt9aTo3ODUwO2E6MTp7aTowO2k6Nzg1MTt9aTo3ODUyO2E6MTp7aTowO2k6Nzg1Mzt9aTo3ODU0O2E6MTp7aTowO2k6Nzg1NTt9aTo3ODU2O2E6MTp7aTowO2k6Nzg1Nzt9aTo3ODU4O2E6MTp7aTowO2k6Nzg1OTt9aTo3ODYwO2E6MTp7aTowO2k6Nzg2MTt9aTo3ODYyO2E6MTp7aTowO2k6Nzg2Mzt9aTo3ODY0O2E6MTp7aTowO2k6Nzg2NTt9aTo3ODY2O2E6MTp7aTowO2k6Nzg2Nzt9aTo3ODY4O2E6MTp7aTowO2k6Nzg2OTt9aTo3ODcwO2E6MTp7aTowO2k6Nzg3MTt9aTo3ODcyO2E6MTp7aTowO2k6Nzg3Mzt9aTo3ODc0O2E6MTp7aTowO2k6Nzg3NTt9aTo3ODc2O2E6MTp7aTowO2k6Nzg3Nzt9aTo3ODc4O2E6MTp7aTowO2k6Nzg3OTt9aTo3ODgwO2E6MTp7aTowO2k6Nzg4MTt9aTo3ODgyO2E6MTp7aTowO2k6Nzg4Mzt9aTo3ODg0O2E6MTp7aTowO2k6Nzg4NTt9aTo3ODg2O2E6MTp7aTowO2k6Nzg4Nzt9aTo3ODg4O2E6MTp7aTowO2k6Nzg4OTt9aTo3ODkwO2E6MTp7aTowO2k6Nzg5MTt9aTo3ODkyO2E6MTp7aTowO2k6Nzg5Mzt9aTo3ODk0O2E6MTp7aTowO2k6Nzg5NTt9aTo3ODk2O2E6MTp7aTowO2k6Nzg5Nzt9aTo3ODk4O2E6MTp7aTowO2k6Nzg5OTt9aTo3OTAwO2E6MTp7aTowO2k6NzkwMTt9aTo3OTAyO2E6MTp7aTowO2k6NzkwMzt9aTo3OTA0O2E6MTp7aTowO2k6NzkwNTt9aTo3OTA2O2E6MTp7aTowO2k6NzkwNzt9aTo3OTA4O2E6MTp7aTowO2k6NzkwOTt9aTo3OTEwO2E6MTp7aTowO2k6NzkxMTt9aTo3OTEyO2E6MTp7aTowO2k6NzkxMzt9aTo3OTE0O2E6MTp7aTowO2k6NzkxNTt9aTo3OTE2O2E6MTp7aTowO2k6NzkxNzt9aTo3OTE4O2E6MTp7aTowO2k6NzkxOTt9aTo3OTIwO2E6MTp7aTowO2k6NzkyMTt9aTo3OTIyO2E6MTp7aTowO2k6NzkyMzt9aTo3OTI0O2E6MTp7aTowO2k6NzkyNTt9aTo3OTI2O2E6MTp7aTowO2k6NzkyNzt9aTo3OTI4O2E6MTp7aTowO2k6NzkyOTt9aTo3OTQ0O2E6MTp7aTowO2k6NzkzNjt9aTo3OTQ1O2E6MTp7aTowO2k6NzkzNzt9aTo3OTQ2O2E6MTp7aTowO2k6NzkzODt9aTo3OTQ3O2E6MTp7aTowO2k6NzkzOTt9aTo3OTQ4O2E6MTp7aTowO2k6Nzk0MDt9aTo3OTQ5O2E6MTp7aTowO2k6Nzk0MTt9aTo3OTUwO2E6MTp7aTowO2k6Nzk0Mjt9aTo3OTUxO2E6MTp7aTowO2k6Nzk0Mzt9aTo3OTYwO2E6MTp7aTowO2k6Nzk1Mjt9aTo3OTYxO2E6MTp7aTowO2k6Nzk1Mzt9aTo3OTYyO2E6MTp7aTowO2k6Nzk1NDt9aTo3OTYzO2E6MTp7aTowO2k6Nzk1NTt9aTo3OTY0O2E6MTp7aTowO2k6Nzk1Njt9aTo3OTY1O2E6MTp7aTowO2k6Nzk1Nzt9aTo3OTc2O2E6MTp7aTowO2k6Nzk2ODt9aTo3OTc3O2E6MTp7aTowO2k6Nzk2OTt9aTo3OTc4O2E6MTp7aTowO2k6Nzk3MDt9aTo3OTc5O2E6MTp7aTowO2k6Nzk3MTt9aTo3OTgwO2E6MTp7aTowO2k6Nzk3Mjt9aTo3OTgxO2E6MTp7aTowO2k6Nzk3Mzt9aTo3OTgyO2E6MTp7aTowO2k6Nzk3NDt9aTo3OTgzO2E6MTp7aTowO2k6Nzk3NTt9aTo3OTkyO2E6MTp7aTowO2k6Nzk4NDt9aTo3OTkzO2E6MTp7aTowO2k6Nzk4NTt9aTo3OTk0O2E6MTp7aTowO2k6Nzk4Njt9aTo3OTk1O2E6MTp7aTowO2k6Nzk4Nzt9aTo3OTk2O2E6MTp7aTowO2k6Nzk4ODt9aTo3OTk3O2E6MTp7aTowO2k6Nzk4OTt9aTo3OTk4O2E6MTp7aTowO2k6Nzk5MDt9aTo3OTk5O2E6MTp7aTowO2k6Nzk5MTt9aTo4MDA4O2E6MTp7aTowO2k6ODAwMDt9aTo4MDA5O2E6MTp7aTowO2k6ODAwMTt9aTo4MDEwO2E6MTp7aTowO2k6ODAwMjt9aTo4MDExO2E6MTp7aTowO2k6ODAwMzt9aTo4MDEyO2E6MTp7aTowO2k6ODAwNDt9aTo4MDEzO2E6MTp7aTowO2k6ODAwNTt9aTo4MDE2O2E6Mjp7aTowO2k6OTY1O2k6MTtpOjc4Nzt9aTo4MDE4O2E6Mzp7aTowO2k6OTY1O2k6MTtpOjc4NztpOjI7aTo3Njg7fWk6ODAyMDthOjM6e2k6MDtpOjk2NTtpOjE7aTo3ODc7aToyO2k6NzY5O31pOjgwMjI7YTozOntpOjA7aTo5NjU7aToxO2k6Nzg3O2k6MjtpOjgzNDt9aTo4MDI1O2E6MTp7aTowO2k6ODAxNzt9aTo4MDI3O2E6MTp7aTowO2k6ODAxOTt9aTo4MDI5O2E6MTp7aTowO2k6ODAyMTt9aTo4MDMxO2E6MTp7aTowO2k6ODAyMzt9aTo4MDQwO2E6MTp7aTowO2k6ODAzMjt9aTo4MDQxO2E6MTp7aTowO2k6ODAzMzt9aTo4MDQyO2E6MTp7aTowO2k6ODAzNDt9aTo4MDQzO2E6MTp7aTowO2k6ODAzNTt9aTo4MDQ0O2E6MTp7aTowO2k6ODAzNjt9aTo4MDQ1O2E6MTp7aTowO2k6ODAzNzt9aTo4MDQ2O2E6MTp7aTowO2k6ODAzODt9aTo4MDQ3O2E6MTp7aTowO2k6ODAzOTt9aTo4MDY0O2E6Mjp7aTowO2k6NzkzNjtpOjE7aTo5NTM7fWk6ODA2NTthOjI6e2k6MDtpOjc5Mzc7aToxO2k6OTUzO31pOjgwNjY7YToyOntpOjA7aTo3OTM4O2k6MTtpOjk1Mzt9aTo4MDY3O2E6Mjp7aTowO2k6NzkzOTtpOjE7aTo5NTM7fWk6ODA2ODthOjI6e2k6MDtpOjc5NDA7aToxO2k6OTUzO31pOjgwNjk7YToyOntpOjA7aTo3OTQxO2k6MTtpOjk1Mzt9aTo4MDcwO2E6Mjp7aTowO2k6Nzk0MjtpOjE7aTo5NTM7fWk6ODA3MTthOjI6e2k6MDtpOjc5NDM7aToxO2k6OTUzO31pOjgwNzI7YToyOntpOjA7aTo3OTM2O2k6MTtpOjk1Mzt9aTo4MDczO2E6Mjp7aTowO2k6NzkzNztpOjE7aTo5NTM7fWk6ODA3NDthOjI6e2k6MDtpOjc5Mzg7aToxO2k6OTUzO31pOjgwNzU7YToyOntpOjA7aTo3OTM5O2k6MTtpOjk1Mzt9aTo4MDc2O2E6Mjp7aTowO2k6Nzk0MDtpOjE7aTo5NTM7fWk6ODA3NzthOjI6e2k6MDtpOjc5NDE7aToxO2k6OTUzO31pOjgwNzg7YToyOntpOjA7aTo3OTQyO2k6MTtpOjk1Mzt9aTo4MDc5O2E6Mjp7aTowO2k6Nzk0MztpOjE7aTo5NTM7fWk6ODA4MDthOjI6e2k6MDtpOjc5Njg7aToxO2k6OTUzO31pOjgwODE7YToyOntpOjA7aTo3OTY5O2k6MTtpOjk1Mzt9aTo4MDgyO2E6Mjp7aTowO2k6Nzk3MDtpOjE7aTo5NTM7fWk6ODA4MzthOjI6e2k6MDtpOjc5NzE7aToxO2k6OTUzO31pOjgwODQ7YToyOntpOjA7aTo3OTcyO2k6MTtpOjk1Mzt9aTo4MDg1O2E6Mjp7aTowO2k6Nzk3MztpOjE7aTo5NTM7fWk6ODA4NjthOjI6e2k6MDtpOjc5NzQ7aToxO2k6OTUzO31pOjgwODc7YToyOntpOjA7aTo3OTc1O2k6MTtpOjk1Mzt9aTo4MDg4O2E6Mjp7aTowO2k6Nzk2ODtpOjE7aTo5NTM7fWk6ODA4OTthOjI6e2k6MDtpOjc5Njk7aToxO2k6OTUzO31pOjgwOTA7YToyOntpOjA7aTo3OTcwO2k6MTtpOjk1Mzt9aTo4MDkxO2E6Mjp7aTowO2k6Nzk3MTtpOjE7aTo5NTM7fWk6ODA5MjthOjI6e2k6MDtpOjc5NzI7aToxO2k6OTUzO31pOjgwOTM7YToyOntpOjA7aTo3OTczO2k6MTtpOjk1Mzt9aTo4MDk0O2E6Mjp7aTowO2k6Nzk3NDtpOjE7aTo5NTM7fWk6ODA5NTthOjI6e2k6MDtpOjc5NzU7aToxO2k6OTUzO31pOjgwOTY7YToyOntpOjA7aTo4MDMyO2k6MTtpOjk1Mzt9aTo4MDk3O2E6Mjp7aTowO2k6ODAzMztpOjE7aTo5NTM7fWk6ODA5ODthOjI6e2k6MDtpOjgwMzQ7aToxO2k6OTUzO31pOjgwOTk7YToyOntpOjA7aTo4MDM1O2k6MTtpOjk1Mzt9aTo4MTAwO2E6Mjp7aTowO2k6ODAzNjtpOjE7aTo5NTM7fWk6ODEwMTthOjI6e2k6MDtpOjgwMzc7aToxO2k6OTUzO31pOjgxMDI7YToyOntpOjA7aTo4MDM4O2k6MTtpOjk1Mzt9aTo4MTAzO2E6Mjp7aTowO2k6ODAzOTtpOjE7aTo5NTM7fWk6ODEwNDthOjI6e2k6MDtpOjgwMzI7aToxO2k6OTUzO31pOjgxMDU7YToyOntpOjA7aTo4MDMzO2k6MTtpOjk1Mzt9aTo4MTA2O2E6Mjp7aTowO2k6ODAzNDtpOjE7aTo5NTM7fWk6ODEwNzthOjI6e2k6MDtpOjgwMzU7aToxO2k6OTUzO31pOjgxMDg7YToyOntpOjA7aTo4MDM2O2k6MTtpOjk1Mzt9aTo4MTA5O2E6Mjp7aTowO2k6ODAzNztpOjE7aTo5NTM7fWk6ODExMDthOjI6e2k6MDtpOjgwMzg7aToxO2k6OTUzO31pOjgxMTE7YToyOntpOjA7aTo4MDM5O2k6MTtpOjk1Mzt9aTo4MTE0O2E6Mjp7aTowO2k6ODA0ODtpOjE7aTo5NTM7fWk6ODExNTthOjI6e2k6MDtpOjk0NTtpOjE7aTo5NTM7fWk6ODExNjthOjI6e2k6MDtpOjk0MDtpOjE7aTo5NTM7fWk6ODExODthOjI6e2k6MDtpOjk0NTtpOjE7aTo4MzQ7fWk6ODExOTthOjM6e2k6MDtpOjk0NTtpOjE7aTo4MzQ7aToyO2k6OTUzO31pOjgxMjA7YToxOntpOjA7aTo4MTEyO31pOjgxMjE7YToxOntpOjA7aTo4MTEzO31pOjgxMjI7YToxOntpOjA7aTo4MDQ4O31pOjgxMjM7YToxOntpOjA7aTo4MDQ5O31pOjgxMjQ7YToyOntpOjA7aTo5NDU7aToxO2k6OTUzO31pOjgxMjY7YToxOntpOjA7aTo5NTM7fWk6ODEzMDthOjI6e2k6MDtpOjgwNTI7aToxO2k6OTUzO31pOjgxMzE7YToyOntpOjA7aTo5NTE7aToxO2k6OTUzO31pOjgxMzI7YToyOntpOjA7aTo5NDI7aToxO2k6OTUzO31pOjgxMzQ7YToyOntpOjA7aTo5NTE7aToxO2k6ODM0O31pOjgxMzU7YTozOntpOjA7aTo5NTE7aToxO2k6ODM0O2k6MjtpOjk1Mzt9aTo4MTM2O2E6MTp7aTowO2k6ODA1MDt9aTo4MTM3O2E6MTp7aTowO2k6ODA1MTt9aTo4MTM4O2E6MTp7aTowO2k6ODA1Mjt9aTo4MTM5O2E6MTp7aTowO2k6ODA1Mzt9aTo4MTQwO2E6Mjp7aTowO2k6OTUxO2k6MTtpOjk1Mzt9aTo4MTQ2O2E6Mzp7aTowO2k6OTUzO2k6MTtpOjc3NjtpOjI7aTo3Njg7fWk6ODE0NzthOjM6e2k6MDtpOjk1MztpOjE7aTo3NzY7aToyO2k6NzY5O31pOjgxNTA7YToyOntpOjA7aTo5NTM7aToxO2k6ODM0O31pOjgxNTE7YTozOntpOjA7aTo5NTM7aToxO2k6Nzc2O2k6MjtpOjgzNDt9aTo4MTUyO2E6MTp7aTowO2k6ODE0NDt9aTo4MTUzO2E6MTp7aTowO2k6ODE0NTt9aTo4MTU0O2E6MTp7aTowO2k6ODA1NDt9aTo4MTU1O2E6MTp7aTowO2k6ODA1NTt9aTo4MTYyO2E6Mzp7aTowO2k6OTY1O2k6MTtpOjc3NjtpOjI7aTo3Njg7fWk6ODE2MzthOjM6e2k6MDtpOjk2NTtpOjE7aTo3NzY7aToyO2k6NzY5O31pOjgxNjQ7YToyOntpOjA7aTo5NjE7aToxO2k6Nzg3O31pOjgxNjY7YToyOntpOjA7aTo5NjU7aToxO2k6ODM0O31pOjgxNjc7YTozOntpOjA7aTo5NjU7aToxO2k6Nzc2O2k6MjtpOjgzNDt9aTo4MTY4O2E6MTp7aTowO2k6ODE2MDt9aTo4MTY5O2E6MTp7aTowO2k6ODE2MTt9aTo4MTcwO2E6MTp7aTowO2k6ODA1ODt9aTo4MTcxO2E6MTp7aTowO2k6ODA1OTt9aTo4MTcyO2E6MTp7aTowO2k6ODE2NTt9aTo4MTc4O2E6Mjp7aTowO2k6ODA2MDtpOjE7aTo5NTM7fWk6ODE3OTthOjI6e2k6MDtpOjk2OTtpOjE7aTo5NTM7fWk6ODE4MDthOjI6e2k6MDtpOjk3NDtpOjE7aTo5NTM7fWk6ODE4MjthOjI6e2k6MDtpOjk2OTtpOjE7aTo4MzQ7fWk6ODE4MzthOjM6e2k6MDtpOjk2OTtpOjE7aTo4MzQ7aToyO2k6OTUzO31pOjgxODQ7YToxOntpOjA7aTo4MDU2O31pOjgxODU7YToxOntpOjA7aTo4MDU3O31pOjgxODY7YToxOntpOjA7aTo4MDYwO31pOjgxODc7YToxOntpOjA7aTo4MDYxO31pOjgxODg7YToyOntpOjA7aTo5Njk7aToxO2k6OTUzO31pOjgzNjA7YToyOntpOjA7aToxMTQ7aToxO2k6MTE1O31pOjg0NTA7YToxOntpOjA7aTo5OTt9aTo4NDUxO2E6Mjp7aTowO2k6MTc2O2k6MTtpOjk5O31pOjg0NTU7YToxOntpOjA7aTo2MDM7fWk6ODQ1NzthOjI6e2k6MDtpOjE3NjtpOjE7aToxMDI7fWk6ODQ1OTthOjE6e2k6MDtpOjEwNDt9aTo4NDYwO2E6MTp7aTowO2k6MTA0O31pOjg0NjE7YToxOntpOjA7aToxMDQ7fWk6ODQ2NDthOjE6e2k6MDtpOjEwNTt9aTo4NDY1O2E6MTp7aTowO2k6MTA1O31pOjg0NjY7YToxOntpOjA7aToxMDg7fWk6ODQ2OTthOjE6e2k6MDtpOjExMDt9aTo4NDcwO2E6Mjp7aTowO2k6MTEwO2k6MTtpOjExMTt9aTo4NDczO2E6MTp7aTowO2k6MTEyO31pOjg0NzQ7YToxOntpOjA7aToxMTM7fWk6ODQ3NTthOjE6e2k6MDtpOjExNDt9aTo4NDc2O2E6MTp7aTowO2k6MTE0O31pOjg0Nzc7YToxOntpOjA7aToxMTQ7fWk6ODQ4MDthOjI6e2k6MDtpOjExNTtpOjE7aToxMDk7fWk6ODQ4MTthOjM6e2k6MDtpOjExNjtpOjE7aToxMDE7aToyO2k6MTA4O31pOjg0ODI7YToyOntpOjA7aToxMTY7aToxO2k6MTA5O31pOjg0ODQ7YToxOntpOjA7aToxMjI7fWk6ODQ4NjthOjE6e2k6MDtpOjk2OTt9aTo4NDg4O2E6MTp7aTowO2k6MTIyO31pOjg0OTA7YToxOntpOjA7aToxMDc7fWk6ODQ5MTthOjE6e2k6MDtpOjIyOTt9aTo4NDkyO2E6MTp7aTowO2k6OTg7fWk6ODQ5MzthOjE6e2k6MDtpOjk5O31pOjg0OTY7YToxOntpOjA7aToxMDE7fWk6ODQ5NzthOjE6e2k6MDtpOjEwMjt9aTo4NDk5O2E6MTp7aTowO2k6MTA5O31pOjg1MTA7YToxOntpOjA7aTo5NDc7fWk6ODUxMTthOjE6e2k6MDtpOjk2MDt9aTo4NTE3O2E6MTp7aTowO2k6MTAwO31pOjg1NDQ7YToxOntpOjA7aTo4NTYwO31pOjg1NDU7YToxOntpOjA7aTo4NTYxO31pOjg1NDY7YToxOntpOjA7aTo4NTYyO31pOjg1NDc7YToxOntpOjA7aTo4NTYzO31pOjg1NDg7YToxOntpOjA7aTo4NTY0O31pOjg1NDk7YToxOntpOjA7aTo4NTY1O31pOjg1NTA7YToxOntpOjA7aTo4NTY2O31pOjg1NTE7YToxOntpOjA7aTo4NTY3O31pOjg1NTI7YToxOntpOjA7aTo4NTY4O31pOjg1NTM7YToxOntpOjA7aTo4NTY5O31pOjg1NTQ7YToxOntpOjA7aTo4NTcwO31pOjg1NTU7YToxOntpOjA7aTo4NTcxO31pOjg1NTY7YToxOntpOjA7aTo4NTcyO31pOjg1NTc7YToxOntpOjA7aTo4NTczO31pOjg1NTg7YToxOntpOjA7aTo4NTc0O31pOjg1NTk7YToxOntpOjA7aTo4NTc1O31pOjkzOTg7YToxOntpOjA7aTo5NDI0O31pOjkzOTk7YToxOntpOjA7aTo5NDI1O31pOjk0MDA7YToxOntpOjA7aTo5NDI2O31pOjk0MDE7YToxOntpOjA7aTo5NDI3O31pOjk0MDI7YToxOntpOjA7aTo5NDI4O31pOjk0MDM7YToxOntpOjA7aTo5NDI5O31pOjk0MDQ7YToxOntpOjA7aTo5NDMwO31pOjk0MDU7YToxOntpOjA7aTo5NDMxO31pOjk0MDY7YToxOntpOjA7aTo5NDMyO31pOjk0MDc7YToxOntpOjA7aTo5NDMzO31pOjk0MDg7YToxOntpOjA7aTo5NDM0O31pOjk0MDk7YToxOntpOjA7aTo5NDM1O31pOjk0MTA7YToxOntpOjA7aTo5NDM2O31pOjk0MTE7YToxOntpOjA7aTo5NDM3O31pOjk0MTI7YToxOntpOjA7aTo5NDM4O31pOjk0MTM7YToxOntpOjA7aTo5NDM5O31pOjk0MTQ7YToxOntpOjA7aTo5NDQwO31pOjk0MTU7YToxOntpOjA7aTo5NDQxO31pOjk0MTY7YToxOntpOjA7aTo5NDQyO31pOjk0MTc7YToxOntpOjA7aTo5NDQzO31pOjk0MTg7YToxOntpOjA7aTo5NDQ0O31pOjk0MTk7YToxOntpOjA7aTo5NDQ1O31pOjk0MjA7YToxOntpOjA7aTo5NDQ2O31pOjk0MjE7YToxOntpOjA7aTo5NDQ3O31pOjk0MjI7YToxOntpOjA7aTo5NDQ4O31pOjk0MjM7YToxOntpOjA7aTo5NDQ5O31pOjEzMTY5O2E6Mzp7aTowO2k6MTA0O2k6MTtpOjExMjtpOjI7aTo5Nzt9aToxMzE3MTthOjI6e2k6MDtpOjk3O2k6MTtpOjExNzt9aToxMzE3MzthOjI6e2k6MDtpOjExMTtpOjE7aToxMTg7fWk6MTMxODQ7YToyOntpOjA7aToxMTI7aToxO2k6OTc7fWk6MTMxODU7YToyOntpOjA7aToxMTA7aToxO2k6OTc7fWk6MTMxODY7YToyOntpOjA7aTo5NTY7aToxO2k6OTc7fWk6MTMxODc7YToyOntpOjA7aToxMDk7aToxO2k6OTc7fWk6MTMxODg7YToyOntpOjA7aToxMDc7aToxO2k6OTc7fWk6MTMxODk7YToyOntpOjA7aToxMDc7aToxO2k6OTg7fWk6MTMxOTA7YToyOntpOjA7aToxMDk7aToxO2k6OTg7fWk6MTMxOTE7YToyOntpOjA7aToxMDM7aToxO2k6OTg7fWk6MTMxOTQ7YToyOntpOjA7aToxMTI7aToxO2k6MTAyO31pOjEzMTk1O2E6Mjp7aTowO2k6MTEwO2k6MTtpOjEwMjt9aToxMzE5NjthOjI6e2k6MDtpOjk1NjtpOjE7aToxMDI7fWk6MTMyMDA7YToyOntpOjA7aToxMDQ7aToxO2k6MTIyO31pOjEzMjAxO2E6Mzp7aTowO2k6MTA3O2k6MTtpOjEwNDtpOjI7aToxMjI7fWk6MTMyMDI7YTozOntpOjA7aToxMDk7aToxO2k6MTA0O2k6MjtpOjEyMjt9aToxMzIwMzthOjM6e2k6MDtpOjEwMztpOjE7aToxMDQ7aToyO2k6MTIyO31pOjEzMjA0O2E6Mzp7aTowO2k6MTE2O2k6MTtpOjEwNDtpOjI7aToxMjI7fWk6MTMyMjU7YToyOntpOjA7aToxMTI7aToxO2k6OTc7fWk6MTMyMjY7YTozOntpOjA7aToxMDc7aToxO2k6MTEyO2k6MjtpOjk3O31pOjEzMjI3O2E6Mzp7aTowO2k6MTA5O2k6MTtpOjExMjtpOjI7aTo5Nzt9aToxMzIyODthOjM6e2k6MDtpOjEwMztpOjE7aToxMTI7aToyO2k6OTc7fWk6MTMyMzY7YToyOntpOjA7aToxMTI7aToxO2k6MTE4O31pOjEzMjM3O2E6Mjp7aTowO2k6MTEwO2k6MTtpOjExODt9aToxMzIzODthOjI6e2k6MDtpOjk1NjtpOjE7aToxMTg7fWk6MTMyMzk7YToyOntpOjA7aToxMDk7aToxO2k6MTE4O31pOjEzMjQwO2E6Mjp7aTowO2k6MTA3O2k6MTtpOjExODt9aToxMzI0MTthOjI6e2k6MDtpOjEwOTtpOjE7aToxMTg7fWk6MTMyNDI7YToyOntpOjA7aToxMTI7aToxO2k6MTE5O31pOjEzMjQzO2E6Mjp7aTowO2k6MTEwO2k6MTtpOjExOTt9aToxMzI0NDthOjI6e2k6MDtpOjk1NjtpOjE7aToxMTk7fWk6MTMyNDU7YToyOntpOjA7aToxMDk7aToxO2k6MTE5O31pOjEzMjQ2O2E6Mjp7aTowO2k6MTA3O2k6MTtpOjExOTt9aToxMzI0NzthOjI6e2k6MDtpOjEwOTtpOjE7aToxMTk7fWk6MTMyNDg7YToyOntpOjA7aToxMDc7aToxO2k6OTY5O31pOjEzMjQ5O2E6Mjp7aTowO2k6MTA5O2k6MTtpOjk2OTt9aToxMzI1MTthOjI6e2k6MDtpOjk4O2k6MTtpOjExMzt9aToxMzI1NDthOjQ6e2k6MDtpOjk5O2k6MTtpOjg3MjU7aToyO2k6MTA3O2k6MztpOjEwMzt9aToxMzI1NTthOjM6e2k6MDtpOjk5O2k6MTtpOjExMTtpOjI7aTo0Njt9aToxMzI1NjthOjI6e2k6MDtpOjEwMDtpOjE7aTo5ODt9aToxMzI1NzthOjI6e2k6MDtpOjEwMztpOjE7aToxMjE7fWk6MTMyNTk7YToyOntpOjA7aToxMDQ7aToxO2k6MTEyO31pOjEzMjYxO2E6Mjp7aTowO2k6MTA3O2k6MTtpOjEwNzt9aToxMzI2MjthOjI6e2k6MDtpOjEwNztpOjE7aToxMDk7fWk6MTMyNzE7YToyOntpOjA7aToxMTI7aToxO2k6MTA0O31pOjEzMjczO2E6Mzp7aTowO2k6MTEyO2k6MTtpOjExMjtpOjI7aToxMDk7fWk6MTMyNzQ7YToyOntpOjA7aToxMTI7aToxO2k6MTE0O31pOjEzMjc2O2E6Mjp7aTowO2k6MTE1O2k6MTtpOjExODt9aToxMzI3NzthOjI6e2k6MDtpOjExOTtpOjE7aTo5ODt9aTo2NDI1NjthOjI6e2k6MDtpOjEwMjtpOjE7aToxMDI7fWk6NjQyNTc7YToyOntpOjA7aToxMDI7aToxO2k6MTA1O31pOjY0MjU4O2E6Mjp7aTowO2k6MTAyO2k6MTtpOjEwODt9aTo2NDI1OTthOjM6e2k6MDtpOjEwMjtpOjE7aToxMDI7aToyO2k6MTA1O31pOjY0MjYwO2E6Mzp7aTowO2k6MTAyO2k6MTtpOjEwMjtpOjI7aToxMDg7fWk6NjQyNjE7YToyOntpOjA7aToxMTU7aToxO2k6MTE2O31pOjY0MjYyO2E6Mjp7aTowO2k6MTE1O2k6MTtpOjExNjt9aTo2NDI3NTthOjI6e2k6MDtpOjEzOTY7aToxO2k6MTM5ODt9aTo2NDI3NjthOjI6e2k6MDtpOjEzOTY7aToxO2k6MTM4MTt9aTo2NDI3NzthOjI6e2k6MDtpOjEzOTY7aToxO2k6MTM4Nzt9aTo2NDI3ODthOjI6e2k6MDtpOjE0MDY7aToxO2k6MTM5ODt9aTo2NDI3OTthOjI6e2k6MDtpOjEzOTY7aToxO2k6MTM4OTt9aTo2NTMxMzthOjE6e2k6MDtpOjY1MzQ1O31pOjY1MzE0O2E6MTp7aTowO2k6NjUzNDY7fWk6NjUzMTU7YToxOntpOjA7aTo2NTM0Nzt9aTo2NTMxNjthOjE6e2k6MDtpOjY1MzQ4O31pOjY1MzE3O2E6MTp7aTowO2k6NjUzNDk7fWk6NjUzMTg7YToxOntpOjA7aTo2NTM1MDt9aTo2NTMxOTthOjE6e2k6MDtpOjY1MzUxO31pOjY1MzIwO2E6MTp7aTowO2k6NjUzNTI7fWk6NjUzMjE7YToxOntpOjA7aTo2NTM1Mzt9aTo2NTMyMjthOjE6e2k6MDtpOjY1MzU0O31pOjY1MzIzO2E6MTp7aTowO2k6NjUzNTU7fWk6NjUzMjQ7YToxOntpOjA7aTo2NTM1Njt9aTo2NTMyNTthOjE6e2k6MDtpOjY1MzU3O31pOjY1MzI2O2E6MTp7aTowO2k6NjUzNTg7fWk6NjUzMjc7YToxOntpOjA7aTo2NTM1OTt9aTo2NTMyODthOjE6e2k6MDtpOjY1MzYwO31pOjY1MzI5O2E6MTp7aTowO2k6NjUzNjE7fWk6NjUzMzA7YToxOntpOjA7aTo2NTM2Mjt9aTo2NTMzMTthOjE6e2k6MDtpOjY1MzYzO31pOjY1MzMyO2E6MTp7aTowO2k6NjUzNjQ7fWk6NjUzMzM7YToxOntpOjA7aTo2NTM2NTt9aTo2NTMzNDthOjE6e2k6MDtpOjY1MzY2O31pOjY1MzM1O2E6MTp7aTowO2k6NjUzNjc7fWk6NjUzMzY7YToxOntpOjA7aTo2NTM2ODt9aTo2NTMzNzthOjE6e2k6MDtpOjY1MzY5O31pOjY1MzM4O2E6MTp7aTowO2k6NjUzNzA7fWk6NjY1NjA7YToxOntpOjA7aTo2NjYwMDt9aTo2NjU2MTthOjE6e2k6MDtpOjY2NjAxO31pOjY2NTYyO2E6MTp7aTowO2k6NjY2MDI7fWk6NjY1NjM7YToxOntpOjA7aTo2NjYwMzt9aTo2NjU2NDthOjE6e2k6MDtpOjY2NjA0O31pOjY2NTY1O2E6MTp7aTowO2k6NjY2MDU7fWk6NjY1NjY7YToxOntpOjA7aTo2NjYwNjt9aTo2NjU2NzthOjE6e2k6MDtpOjY2NjA3O31pOjY2NTY4O2E6MTp7aTowO2k6NjY2MDg7fWk6NjY1Njk7YToxOntpOjA7aTo2NjYwOTt9aTo2NjU3MDthOjE6e2k6MDtpOjY2NjEwO31pOjY2NTcxO2E6MTp7aTowO2k6NjY2MTE7fWk6NjY1NzI7YToxOntpOjA7aTo2NjYxMjt9aTo2NjU3MzthOjE6e2k6MDtpOjY2NjEzO31pOjY2NTc0O2E6MTp7aTowO2k6NjY2MTQ7fWk6NjY1NzU7YToxOntpOjA7aTo2NjYxNTt9aTo2NjU3NjthOjE6e2k6MDtpOjY2NjE2O31pOjY2NTc3O2E6MTp7aTowO2k6NjY2MTc7fWk6NjY1Nzg7YToxOntpOjA7aTo2NjYxODt9aTo2NjU3OTthOjE6e2k6MDtpOjY2NjE5O31pOjY2NTgwO2E6MTp7aTowO2k6NjY2MjA7fWk6NjY1ODE7YToxOntpOjA7aTo2NjYyMTt9aTo2NjU4MjthOjE6e2k6MDtpOjY2NjIyO31pOjY2NTgzO2E6MTp7aTowO2k6NjY2MjM7fWk6NjY1ODQ7YToxOntpOjA7aTo2NjYyNDt9aTo2NjU4NTthOjE6e2k6MDtpOjY2NjI1O31pOjY2NTg2O2E6MTp7aTowO2k6NjY2MjY7fWk6NjY1ODc7YToxOntpOjA7aTo2NjYyNzt9aTo2NjU4ODthOjE6e2k6MDtpOjY2NjI4O31pOjY2NTg5O2E6MTp7aTowO2k6NjY2Mjk7fWk6NjY1OTA7YToxOntpOjA7aTo2NjYzMDt9aTo2NjU5MTthOjE6e2k6MDtpOjY2NjMxO31pOjY2NTkyO2E6MTp7aTowO2k6NjY2MzI7fWk6NjY1OTM7YToxOntpOjA7aTo2NjYzMzt9aTo2NjU5NDthOjE6e2k6MDtpOjY2NjM0O31pOjY2NTk1O2E6MTp7aTowO2k6NjY2MzU7fWk6NjY1OTY7YToxOntpOjA7aTo2NjYzNjt9aTo2NjU5NzthOjE6e2k6MDtpOjY2NjM3O31pOjExOTgwODthOjE6e2k6MDtpOjk3O31pOjExOTgwOTthOjE6e2k6MDtpOjk4O31pOjExOTgxMDthOjE6e2k6MDtpOjk5O31pOjExOTgxMTthOjE6e2k6MDtpOjEwMDt9aToxMTk4MTI7YToxOntpOjA7aToxMDE7fWk6MTE5ODEzO2E6MTp7aTowO2k6MTAyO31pOjExOTgxNDthOjE6e2k6MDtpOjEwMzt9aToxMTk4MTU7YToxOntpOjA7aToxMDQ7fWk6MTE5ODE2O2E6MTp7aTowO2k6MTA1O31pOjExOTgxNzthOjE6e2k6MDtpOjEwNjt9aToxMTk4MTg7YToxOntpOjA7aToxMDc7fWk6MTE5ODE5O2E6MTp7aTowO2k6MTA4O31pOjExOTgyMDthOjE6e2k6MDtpOjEwOTt9aToxMTk4MjE7YToxOntpOjA7aToxMTA7fWk6MTE5ODIyO2E6MTp7aTowO2k6MTExO31pOjExOTgyMzthOjE6e2k6MDtpOjExMjt9aToxMTk4MjQ7YToxOntpOjA7aToxMTM7fWk6MTE5ODI1O2E6MTp7aTowO2k6MTE0O31pOjExOTgyNjthOjE6e2k6MDtpOjExNTt9aToxMTk4Mjc7YToxOntpOjA7aToxMTY7fWk6MTE5ODI4O2E6MTp7aTowO2k6MTE3O31pOjExOTgyOTthOjE6e2k6MDtpOjExODt9aToxMTk4MzA7YToxOntpOjA7aToxMTk7fWk6MTE5ODMxO2E6MTp7aTowO2k6MTIwO31pOjExOTgzMjthOjE6e2k6MDtpOjEyMTt9aToxMTk4MzM7YToxOntpOjA7aToxMjI7fWk6MTE5ODYwO2E6MTp7aTowO2k6OTc7fWk6MTE5ODYxO2E6MTp7aTowO2k6OTg7fWk6MTE5ODYyO2E6MTp7aTowO2k6OTk7fWk6MTE5ODYzO2E6MTp7aTowO2k6MTAwO31pOjExOTg2NDthOjE6e2k6MDtpOjEwMTt9aToxMTk4NjU7YToxOntpOjA7aToxMDI7fWk6MTE5ODY2O2E6MTp7aTowO2k6MTAzO31pOjExOTg2NzthOjE6e2k6MDtpOjEwNDt9aToxMTk4Njg7YToxOntpOjA7aToxMDU7fWk6MTE5ODY5O2E6MTp7aTowO2k6MTA2O31pOjExOTg3MDthOjE6e2k6MDtpOjEwNzt9aToxMTk4NzE7YToxOntpOjA7aToxMDg7fWk6MTE5ODcyO2E6MTp7aTowO2k6MTA5O31pOjExOTg3MzthOjE6e2k6MDtpOjExMDt9aToxMTk4NzQ7YToxOntpOjA7aToxMTE7fWk6MTE5ODc1O2E6MTp7aTowO2k6MTEyO31pOjExOTg3NjthOjE6e2k6MDtpOjExMzt9aToxMTk4Nzc7YToxOntpOjA7aToxMTQ7fWk6MTE5ODc4O2E6MTp7aTowO2k6MTE1O31pOjExOTg3OTthOjE6e2k6MDtpOjExNjt9aToxMTk4ODA7YToxOntpOjA7aToxMTc7fWk6MTE5ODgxO2E6MTp7aTowO2k6MTE4O31pOjExOTg4MjthOjE6e2k6MDtpOjExOTt9aToxMTk4ODM7YToxOntpOjA7aToxMjA7fWk6MTE5ODg0O2E6MTp7aTowO2k6MTIxO31pOjExOTg4NTthOjE6e2k6MDtpOjEyMjt9aToxMTk5MTI7YToxOntpOjA7aTo5Nzt9aToxMTk5MTM7YToxOntpOjA7aTo5ODt9aToxMTk5MTQ7YToxOntpOjA7aTo5OTt9aToxMTk5MTU7YToxOntpOjA7aToxMDA7fWk6MTE5OTE2O2E6MTp7aTowO2k6MTAxO31pOjExOTkxNzthOjE6e2k6MDtpOjEwMjt9aToxMTk5MTg7YToxOntpOjA7aToxMDM7fWk6MTE5OTE5O2E6MTp7aTowO2k6MTA0O31pOjExOTkyMDthOjE6e2k6MDtpOjEwNTt9aToxMTk5MjE7YToxOntpOjA7aToxMDY7fWk6MTE5OTIyO2E6MTp7aTowO2k6MTA3O31pOjExOTkyMzthOjE6e2k6MDtpOjEwODt9aToxMTk5MjQ7YToxOntpOjA7aToxMDk7fWk6MTE5OTI1O2E6MTp7aTowO2k6MTEwO31pOjExOTkyNjthOjE6e2k6MDtpOjExMTt9aToxMTk5Mjc7YToxOntpOjA7aToxMTI7fWk6MTE5OTI4O2E6MTp7aTowO2k6MTEzO31pOjExOTkyOTthOjE6e2k6MDtpOjExNDt9aToxMTk5MzA7YToxOntpOjA7aToxMTU7fWk6MTE5OTMxO2E6MTp7aTowO2k6MTE2O31pOjExOTkzMjthOjE6e2k6MDtpOjExNzt9aToxMTk5MzM7YToxOntpOjA7aToxMTg7fWk6MTE5OTM0O2E6MTp7aTowO2k6MTE5O31pOjExOTkzNTthOjE6e2k6MDtpOjEyMDt9aToxMTk5MzY7YToxOntpOjA7aToxMjE7fWk6MTE5OTM3O2E6MTp7aTowO2k6MTIyO31pOjExOTk2NDthOjE6e2k6MDtpOjk3O31pOjExOTk2NjthOjE6e2k6MDtpOjk5O31pOjExOTk2NzthOjE6e2k6MDtpOjEwMDt9aToxMTk5NzA7YToxOntpOjA7aToxMDM7fWk6MTE5OTczO2E6MTp7aTowO2k6MTA2O31pOjExOTk3NDthOjE6e2k6MDtpOjEwNzt9aToxMTk5Nzc7YToxOntpOjA7aToxMTA7fWk6MTE5OTc4O2E6MTp7aTowO2k6MTExO31pOjExOTk3OTthOjE6e2k6MDtpOjExMjt9aToxMTk5ODA7YToxOntpOjA7aToxMTM7fWk6MTE5OTgyO2E6MTp7aTowO2k6MTE1O31pOjExOTk4MzthOjE6e2k6MDtpOjExNjt9aToxMTk5ODQ7YToxOntpOjA7aToxMTc7fWk6MTE5OTg1O2E6MTp7aTowO2k6MTE4O31pOjExOTk4NjthOjE6e2k6MDtpOjExOTt9aToxMTk5ODc7YToxOntpOjA7aToxMjA7fWk6MTE5OTg4O2E6MTp7aTowO2k6MTIxO31pOjExOTk4OTthOjE6e2k6MDtpOjEyMjt9aToxMjAwMTY7YToxOntpOjA7aTo5Nzt9aToxMjAwMTc7YToxOntpOjA7aTo5ODt9aToxMjAwMTg7YToxOntpOjA7aTo5OTt9aToxMjAwMTk7YToxOntpOjA7aToxMDA7fWk6MTIwMDIwO2E6MTp7aTowO2k6MTAxO31pOjEyMDAyMTthOjE6e2k6MDtpOjEwMjt9aToxMjAwMjI7YToxOntpOjA7aToxMDM7fWk6MTIwMDIzO2E6MTp7aTowO2k6MTA0O31pOjEyMDAyNDthOjE6e2k6MDtpOjEwNTt9aToxMjAwMjU7YToxOntpOjA7aToxMDY7fWk6MTIwMDI2O2E6MTp7aTowO2k6MTA3O31pOjEyMDAyNzthOjE6e2k6MDtpOjEwODt9aToxMjAwMjg7YToxOntpOjA7aToxMDk7fWk6MTIwMDI5O2E6MTp7aTowO2k6MTEwO31pOjEyMDAzMDthOjE6e2k6MDtpOjExMTt9aToxMjAwMzE7YToxOntpOjA7aToxMTI7fWk6MTIwMDMyO2E6MTp7aTowO2k6MTEzO31pOjEyMDAzMzthOjE6e2k6MDtpOjExNDt9aToxMjAwMzQ7YToxOntpOjA7aToxMTU7fWk6MTIwMDM1O2E6MTp7aTowO2k6MTE2O31pOjEyMDAzNjthOjE6e2k6MDtpOjExNzt9aToxMjAwMzc7YToxOntpOjA7aToxMTg7fWk6MTIwMDM4O2E6MTp7aTowO2k6MTE5O31pOjEyMDAzOTthOjE6e2k6MDtpOjEyMDt9aToxMjAwNDA7YToxOntpOjA7aToxMjE7fWk6MTIwMDQxO2E6MTp7aTowO2k6MTIyO31pOjEyMDA2ODthOjE6e2k6MDtpOjk3O31pOjEyMDA2OTthOjE6e2k6MDtpOjk4O31pOjEyMDA3MTthOjE6e2k6MDtpOjEwMDt9aToxMjAwNzI7YToxOntpOjA7aToxMDE7fWk6MTIwMDczO2E6MTp7aTowO2k6MTAyO31pOjEyMDA3NDthOjE6e2k6MDtpOjEwMzt9aToxMjAwNzc7YToxOntpOjA7aToxMDY7fWk6MTIwMDc4O2E6MTp7aTowO2k6MTA3O31pOjEyMDA3OTthOjE6e2k6MDtpOjEwODt9aToxMjAwODA7YToxOntpOjA7aToxMDk7fWk6MTIwMDgxO2E6MTp7aTowO2k6MTEwO31pOjEyMDA4MjthOjE6e2k6MDtpOjExMTt9aToxMjAwODM7YToxOntpOjA7aToxMTI7fWk6MTIwMDg0O2E6MTp7aTowO2k6MTEzO31pOjEyMDA4NjthOjE6e2k6MDtpOjExNTt9aToxMjAwODc7YToxOntpOjA7aToxMTY7fWk6MTIwMDg4O2E6MTp7aTowO2k6MTE3O31pOjEyMDA4OTthOjE6e2k6MDtpOjExODt9aToxMjAwOTA7YToxOntpOjA7aToxMTk7fWk6MTIwMDkxO2E6MTp7aTowO2k6MTIwO31pOjEyMDA5MjthOjE6e2k6MDtpOjEyMTt9aToxMjAxMjA7YToxOntpOjA7aTo5Nzt9aToxMjAxMjE7YToxOntpOjA7aTo5ODt9aToxMjAxMjM7YToxOntpOjA7aToxMDA7fWk6MTIwMTI0O2E6MTp7aTowO2k6MTAxO31pOjEyMDEyNTthOjE6e2k6MDtpOjEwMjt9aToxMjAxMjY7YToxOntpOjA7aToxMDM7fWk6MTIwMTI4O2E6MTp7aTowO2k6MTA1O31pOjEyMDEyOTthOjE6e2k6MDtpOjEwNjt9aToxMjAxMzA7YToxOntpOjA7aToxMDc7fWk6MTIwMTMxO2E6MTp7aTowO2k6MTA4O31pOjEyMDEzMjthOjE6e2k6MDtpOjEwOTt9aToxMjAxMzQ7YToxOntpOjA7aToxMTE7fWk6MTIwMTM4O2E6MTp7aTowO2k6MTE1O31pOjEyMDEzOTthOjE6e2k6MDtpOjExNjt9aToxMjAxNDA7YToxOntpOjA7aToxMTc7fWk6MTIwMTQxO2E6MTp7aTowO2k6MTE4O31pOjEyMDE0MjthOjE6e2k6MDtpOjExOTt9aToxMjAxNDM7YToxOntpOjA7aToxMjA7fWk6MTIwMTQ0O2E6MTp7aTowO2k6MTIxO31pOjEyMDE3MjthOjE6e2k6MDtpOjk3O31pOjEyMDE3MzthOjE6e2k6MDtpOjk4O31pOjEyMDE3NDthOjE6e2k6MDtpOjk5O31pOjEyMDE3NTthOjE6e2k6MDtpOjEwMDt9aToxMjAxNzY7YToxOntpOjA7aToxMDE7fWk6MTIwMTc3O2E6MTp7aTowO2k6MTAyO31pOjEyMDE3ODthOjE6e2k6MDtpOjEwMzt9aToxMjAxNzk7YToxOntpOjA7aToxMDQ7fWk6MTIwMTgwO2E6MTp7aTowO2k6MTA1O31pOjEyMDE4MTthOjE6e2k6MDtpOjEwNjt9aToxMjAxODI7YToxOntpOjA7aToxMDc7fWk6MTIwMTgzO2E6MTp7aTowO2k6MTA4O31pOjEyMDE4NDthOjE6e2k6MDtpOjEwOTt9aToxMjAxODU7YToxOntpOjA7aToxMTA7fWk6MTIwMTg2O2E6MTp7aTowO2k6MTExO31pOjEyMDE4NzthOjE6e2k6MDtpOjExMjt9aToxMjAxODg7YToxOntpOjA7aToxMTM7fWk6MTIwMTg5O2E6MTp7aTowO2k6MTE0O31pOjEyMDE5MDthOjE6e2k6MDtpOjExNTt9aToxMjAxOTE7YToxOntpOjA7aToxMTY7fWk6MTIwMTkyO2E6MTp7aTowO2k6MTE3O31pOjEyMDE5MzthOjE6e2k6MDtpOjExODt9aToxMjAxOTQ7YToxOntpOjA7aToxMTk7fWk6MTIwMTk1O2E6MTp7aTowO2k6MTIwO31pOjEyMDE5NjthOjE6e2k6MDtpOjEyMTt9aToxMjAxOTc7YToxOntpOjA7aToxMjI7fWk6MTIwMjI0O2E6MTp7aTowO2k6OTc7fWk6MTIwMjI1O2E6MTp7aTowO2k6OTg7fWk6MTIwMjI2O2E6MTp7aTowO2k6OTk7fWk6MTIwMjI3O2E6MTp7aTowO2k6MTAwO31pOjEyMDIyODthOjE6e2k6MDtpOjEwMTt9aToxMjAyMjk7YToxOntpOjA7aToxMDI7fWk6MTIwMjMwO2E6MTp7aTowO2k6MTAzO31pOjEyMDIzMTthOjE6e2k6MDtpOjEwNDt9aToxMjAyMzI7YToxOntpOjA7aToxMDU7fWk6MTIwMjMzO2E6MTp7aTowO2k6MTA2O31pOjEyMDIzNDthOjE6e2k6MDtpOjEwNzt9aToxMjAyMzU7YToxOntpOjA7aToxMDg7fWk6MTIwMjM2O2E6MTp7aTowO2k6MTA5O31pOjEyMDIzNzthOjE6e2k6MDtpOjExMDt9aToxMjAyMzg7YToxOntpOjA7aToxMTE7fWk6MTIwMjM5O2E6MTp7aTowO2k6MTEyO31pOjEyMDI0MDthOjE6e2k6MDtpOjExMzt9aToxMjAyNDE7YToxOntpOjA7aToxMTQ7fWk6MTIwMjQyO2E6MTp7aTowO2k6MTE1O31pOjEyMDI0MzthOjE6e2k6MDtpOjExNjt9aToxMjAyNDQ7YToxOntpOjA7aToxMTc7fWk6MTIwMjQ1O2E6MTp7aTowO2k6MTE4O31pOjEyMDI0NjthOjE6e2k6MDtpOjExOTt9aToxMjAyNDc7YToxOntpOjA7aToxMjA7fWk6MTIwMjQ4O2E6MTp7aTowO2k6MTIxO31pOjEyMDI0OTthOjE6e2k6MDtpOjEyMjt9aToxMjAyNzY7YToxOntpOjA7aTo5Nzt9aToxMjAyNzc7YToxOntpOjA7aTo5ODt9aToxMjAyNzg7YToxOntpOjA7aTo5OTt9aToxMjAyNzk7YToxOntpOjA7aToxMDA7fWk6MTIwMjgwO2E6MTp7aTowO2k6MTAxO31pOjEyMDI4MTthOjE6e2k6MDtpOjEwMjt9aToxMjAyODI7YToxOntpOjA7aToxMDM7fWk6MTIwMjgzO2E6MTp7aTowO2k6MTA0O31pOjEyMDI4NDthOjE6e2k6MDtpOjEwNTt9aToxMjAyODU7YToxOntpOjA7aToxMDY7fWk6MTIwMjg2O2E6MTp7aTowO2k6MTA3O31pOjEyMDI4NzthOjE6e2k6MDtpOjEwODt9aToxMjAyODg7YToxOntpOjA7aToxMDk7fWk6MTIwMjg5O2E6MTp7aTowO2k6MTEwO31pOjEyMDI5MDthOjE6e2k6MDtpOjExMTt9aToxMjAyOTE7YToxOntpOjA7aToxMTI7fWk6MTIwMjkyO2E6MTp7aTowO2k6MTEzO31pOjEyMDI5MzthOjE6e2k6MDtpOjExNDt9aToxMjAyOTQ7YToxOntpOjA7aToxMTU7fWk6MTIwMjk1O2E6MTp7aTowO2k6MTE2O31pOjEyMDI5NjthOjE6e2k6MDtpOjExNzt9aToxMjAyOTc7YToxOntpOjA7aToxMTg7fWk6MTIwMjk4O2E6MTp7aTowO2k6MTE5O31pOjEyMDI5OTthOjE6e2k6MDtpOjEyMDt9aToxMjAzMDA7YToxOntpOjA7aToxMjE7fWk6MTIwMzAxO2E6MTp7aTowO2k6MTIyO31pOjEyMDMyODthOjE6e2k6MDtpOjk3O31pOjEyMDMyOTthOjE6e2k6MDtpOjk4O31pOjEyMDMzMDthOjE6e2k6MDtpOjk5O31pOjEyMDMzMTthOjE6e2k6MDtpOjEwMDt9aToxMjAzMzI7YToxOntpOjA7aToxMDE7fWk6MTIwMzMzO2E6MTp7aTowO2k6MTAyO31pOjEyMDMzNDthOjE6e2k6MDtpOjEwMzt9aToxMjAzMzU7YToxOntpOjA7aToxMDQ7fWk6MTIwMzM2O2E6MTp7aTowO2k6MTA1O31pOjEyMDMzNzthOjE6e2k6MDtpOjEwNjt9aToxMjAzMzg7YToxOntpOjA7aToxMDc7fWk6MTIwMzM5O2E6MTp7aTowO2k6MTA4O31pOjEyMDM0MDthOjE6e2k6MDtpOjEwOTt9aToxMjAzNDE7YToxOntpOjA7aToxMTA7fWk6MTIwMzQyO2E6MTp7aTowO2k6MTExO31pOjEyMDM0MzthOjE6e2k6MDtpOjExMjt9aToxMjAzNDQ7YToxOntpOjA7aToxMTM7fWk6MTIwMzQ1O2E6MTp7aTowO2k6MTE0O31pOjEyMDM0NjthOjE6e2k6MDtpOjExNTt9aToxMjAzNDc7YToxOntpOjA7aToxMTY7fWk6MTIwMzQ4O2E6MTp7aTowO2k6MTE3O31pOjEyMDM0OTthOjE6e2k6MDtpOjExODt9aToxMjAzNTA7YToxOntpOjA7aToxMTk7fWk6MTIwMzUxO2E6MTp7aTowO2k6MTIwO31pOjEyMDM1MjthOjE6e2k6MDtpOjEyMTt9aToxMjAzNTM7YToxOntpOjA7aToxMjI7fWk6MTIwMzgwO2E6MTp7aTowO2k6OTc7fWk6MTIwMzgxO2E6MTp7aTowO2k6OTg7fWk6MTIwMzgyO2E6MTp7aTowO2k6OTk7fWk6MTIwMzgzO2E6MTp7aTowO2k6MTAwO31pOjEyMDM4NDthOjE6e2k6MDtpOjEwMTt9aToxMjAzODU7YToxOntpOjA7aToxMDI7fWk6MTIwMzg2O2E6MTp7aTowO2k6MTAzO31pOjEyMDM4NzthOjE6e2k6MDtpOjEwNDt9aToxMjAzODg7YToxOntpOjA7aToxMDU7fWk6MTIwMzg5O2E6MTp7aTowO2k6MTA2O31pOjEyMDM5MDthOjE6e2k6MDtpOjEwNzt9aToxMjAzOTE7YToxOntpOjA7aToxMDg7fWk6MTIwMzkyO2E6MTp7aTowO2k6MTA5O31pOjEyMDM5MzthOjE6e2k6MDtpOjExMDt9aToxMjAzOTQ7YToxOntpOjA7aToxMTE7fWk6MTIwMzk1O2E6MTp7aTowO2k6MTEyO31pOjEyMDM5NjthOjE6e2k6MDtpOjExMzt9aToxMjAzOTc7YToxOntpOjA7aToxMTQ7fWk6MTIwMzk4O2E6MTp7aTowO2k6MTE1O31pOjEyMDM5OTthOjE6e2k6MDtpOjExNjt9aToxMjA0MDA7YToxOntpOjA7aToxMTc7fWk6MTIwNDAxO2E6MTp7aTowO2k6MTE4O31pOjEyMDQwMjthOjE6e2k6MDtpOjExOTt9aToxMjA0MDM7YToxOntpOjA7aToxMjA7fWk6MTIwNDA0O2E6MTp7aTowO2k6MTIxO31pOjEyMDQwNTthOjE6e2k6MDtpOjEyMjt9aToxMjA0MzI7YToxOntpOjA7aTo5Nzt9aToxMjA0MzM7YToxOntpOjA7aTo5ODt9aToxMjA0MzQ7YToxOntpOjA7aTo5OTt9aToxMjA0MzU7YToxOntpOjA7aToxMDA7fWk6MTIwNDM2O2E6MTp7aTowO2k6MTAxO31pOjEyMDQzNzthOjE6e2k6MDtpOjEwMjt9aToxMjA0Mzg7YToxOntpOjA7aToxMDM7fWk6MTIwNDM5O2E6MTp7aTowO2k6MTA0O31pOjEyMDQ0MDthOjE6e2k6MDtpOjEwNTt9aToxMjA0NDE7YToxOntpOjA7aToxMDY7fWk6MTIwNDQyO2E6MTp7aTowO2k6MTA3O31pOjEyMDQ0MzthOjE6e2k6MDtpOjEwODt9aToxMjA0NDQ7YToxOntpOjA7aToxMDk7fWk6MTIwNDQ1O2E6MTp7aTowO2k6MTEwO31pOjEyMDQ0NjthOjE6e2k6MDtpOjExMTt9aToxMjA0NDc7YToxOntpOjA7aToxMTI7fWk6MTIwNDQ4O2E6MTp7aTowO2k6MTEzO31pOjEyMDQ0OTthOjE6e2k6MDtpOjExNDt9aToxMjA0NTA7YToxOntpOjA7aToxMTU7fWk6MTIwNDUxO2E6MTp7aTowO2k6MTE2O31pOjEyMDQ1MjthOjE6e2k6MDtpOjExNzt9aToxMjA0NTM7YToxOntpOjA7aToxMTg7fWk6MTIwNDU0O2E6MTp7aTowO2k6MTE5O31pOjEyMDQ1NTthOjE6e2k6MDtpOjEyMDt9aToxMjA0NTY7YToxOntpOjA7aToxMjE7fWk6MTIwNDU3O2E6MTp7aTowO2k6MTIyO31pOjEyMDQ4ODthOjE6e2k6MDtpOjk0NTt9aToxMjA0ODk7YToxOntpOjA7aTo5NDY7fWk6MTIwNDkwO2E6MTp7aTowO2k6OTQ3O31pOjEyMDQ5MTthOjE6e2k6MDtpOjk0ODt9aToxMjA0OTI7YToxOntpOjA7aTo5NDk7fWk6MTIwNDkzO2E6MTp7aTowO2k6OTUwO31pOjEyMDQ5NDthOjE6e2k6MDtpOjk1MTt9aToxMjA0OTU7YToxOntpOjA7aTo5NTI7fWk6MTIwNDk2O2E6MTp7aTowO2k6OTUzO31pOjEyMDQ5NzthOjE6e2k6MDtpOjk1NDt9aToxMjA0OTg7YToxOntpOjA7aTo5NTU7fWk6MTIwNDk5O2E6MTp7aTowO2k6OTU2O31pOjEyMDUwMDthOjE6e2k6MDtpOjk1Nzt9aToxMjA1MDE7YToxOntpOjA7aTo5NTg7fWk6MTIwNTAyO2E6MTp7aTowO2k6OTU5O31pOjEyMDUwMzthOjE6e2k6MDtpOjk2MDt9aToxMjA1MDQ7YToxOntpOjA7aTo5NjE7fWk6MTIwNTA1O2E6MTp7aTowO2k6OTUyO31pOjEyMDUwNjthOjE6e2k6MDtpOjk2Mzt9aToxMjA1MDc7YToxOntpOjA7aTo5NjQ7fWk6MTIwNTA4O2E6MTp7aTowO2k6OTY1O31pOjEyMDUwOTthOjE6e2k6MDtpOjk2Njt9aToxMjA1MTA7YToxOntpOjA7aTo5Njc7fWk6MTIwNTExO2E6MTp7aTowO2k6OTY4O31pOjEyMDUxMjthOjE6e2k6MDtpOjk2OTt9aToxMjA1MzE7YToxOntpOjA7aTo5NjM7fWk6MTIwNTQ2O2E6MTp7aTowO2k6OTQ1O31pOjEyMDU0NzthOjE6e2k6MDtpOjk0Njt9aToxMjA1NDg7YToxOntpOjA7aTo5NDc7fWk6MTIwNTQ5O2E6MTp7aTowO2k6OTQ4O31pOjEyMDU1MDthOjE6e2k6MDtpOjk0OTt9aToxMjA1NTE7YToxOntpOjA7aTo5NTA7fWk6MTIwNTUyO2E6MTp7aTowO2k6OTUxO31pOjEyMDU1MzthOjE6e2k6MDtpOjk1Mjt9aToxMjA1NTQ7YToxOntpOjA7aTo5NTM7fWk6MTIwNTU1O2E6MTp7aTowO2k6OTU0O31pOjEyMDU1NjthOjE6e2k6MDtpOjk1NTt9aToxMjA1NTc7YToxOntpOjA7aTo5NTY7fWk6MTIwNTU4O2E6MTp7aTowO2k6OTU3O31pOjEyMDU1OTthOjE6e2k6MDtpOjk1ODt9aToxMjA1NjA7YToxOntpOjA7aTo5NTk7fWk6MTIwNTYxO2E6MTp7aTowO2k6OTYwO31pOjEyMDU2MjthOjE6e2k6MDtpOjk2MTt9aToxMjA1NjM7YToxOntpOjA7aTo5NTI7fWk6MTIwNTY0O2E6MTp7aTowO2k6OTYzO31pOjEyMDU2NTthOjE6e2k6MDtpOjk2NDt9aToxMjA1NjY7YToxOntpOjA7aTo5NjU7fWk6MTIwNTY3O2E6MTp7aTowO2k6OTY2O31pOjEyMDU2ODthOjE6e2k6MDtpOjk2Nzt9aToxMjA1Njk7YToxOntpOjA7aTo5Njg7fWk6MTIwNTcwO2E6MTp7aTowO2k6OTY5O31pOjEyMDU4OTthOjE6e2k6MDtpOjk2Mzt9aToxMjA2MDQ7YToxOntpOjA7aTo5NDU7fWk6MTIwNjA1O2E6MTp7aTowO2k6OTQ2O31pOjEyMDYwNjthOjE6e2k6MDtpOjk0Nzt9aToxMjA2MDc7YToxOntpOjA7aTo5NDg7fWk6MTIwNjA4O2E6MTp7aTowO2k6OTQ5O31pOjEyMDYwOTthOjE6e2k6MDtpOjk1MDt9aToxMjA2MTA7YToxOntpOjA7aTo5NTE7fWk6MTIwNjExO2E6MTp7aTowO2k6OTUyO31pOjEyMDYxMjthOjE6e2k6MDtpOjk1Mzt9aToxMjA2MTM7YToxOntpOjA7aTo5NTQ7fWk6MTIwNjE0O2E6MTp7aTowO2k6OTU1O31pOjEyMDYxNTthOjE6e2k6MDtpOjk1Njt9aToxMjA2MTY7YToxOntpOjA7aTo5NTc7fWk6MTIwNjE3O2E6MTp7aTowO2k6OTU4O31pOjEyMDYxODthOjE6e2k6MDtpOjk1OTt9aToxMjA2MTk7YToxOntpOjA7aTo5NjA7fWk6MTIwNjIwO2E6MTp7aTowO2k6OTYxO31pOjEyMDYyMTthOjE6e2k6MDtpOjk1Mjt9aToxMjA2MjI7YToxOntpOjA7aTo5NjM7fWk6MTIwNjIzO2E6MTp7aTowO2k6OTY0O31pOjEyMDYyNDthOjE6e2k6MDtpOjk2NTt9aToxMjA2MjU7YToxOntpOjA7aTo5NjY7fWk6MTIwNjI2O2E6MTp7aTowO2k6OTY3O31pOjEyMDYyNzthOjE6e2k6MDtpOjk2ODt9aToxMjA2Mjg7YToxOntpOjA7aTo5Njk7fWk6MTIwNjQ3O2E6MTp7aTowO2k6OTYzO31pOjEyMDY2MjthOjE6e2k6MDtpOjk0NTt9aToxMjA2NjM7YToxOntpOjA7aTo5NDY7fWk6MTIwNjY0O2E6MTp7aTowO2k6OTQ3O31pOjEyMDY2NTthOjE6e2k6MDtpOjk0ODt9aToxMjA2NjY7YToxOntpOjA7aTo5NDk7fWk6MTIwNjY3O2E6MTp7aTowO2k6OTUwO31pOjEyMDY2ODthOjE6e2k6MDtpOjk1MTt9aToxMjA2Njk7YToxOntpOjA7aTo5NTI7fWk6MTIwNjcwO2E6MTp7aTowO2k6OTUzO31pOjEyMDY3MTthOjE6e2k6MDtpOjk1NDt9aToxMjA2NzI7YToxOntpOjA7aTo5NTU7fWk6MTIwNjczO2E6MTp7aTowO2k6OTU2O31pOjEyMDY3NDthOjE6e2k6MDtpOjk1Nzt9aToxMjA2NzU7YToxOntpOjA7aTo5NTg7fWk6MTIwNjc2O2E6MTp7aTowO2k6OTU5O31pOjEyMDY3NzthOjE6e2k6MDtpOjk2MDt9aToxMjA2Nzg7YToxOntpOjA7aTo5NjE7fWk6MTIwNjc5O2E6MTp7aTowO2k6OTUyO31pOjEyMDY4MDthOjE6e2k6MDtpOjk2Mzt9aToxMjA2ODE7YToxOntpOjA7aTo5NjQ7fWk6MTIwNjgyO2E6MTp7aTowO2k6OTY1O31pOjEyMDY4MzthOjE6e2k6MDtpOjk2Njt9aToxMjA2ODQ7YToxOntpOjA7aTo5Njc7fWk6MTIwNjg1O2E6MTp7aTowO2k6OTY4O31pOjEyMDY4NjthOjE6e2k6MDtpOjk2OTt9aToxMjA3MDU7YToxOntpOjA7aTo5NjM7fWk6MTIwNzIwO2E6MTp7aTowO2k6OTQ1O31pOjEyMDcyMTthOjE6e2k6MDtpOjk0Njt9aToxMjA3MjI7YToxOntpOjA7aTo5NDc7fWk6MTIwNzIzO2E6MTp7aTowO2k6OTQ4O31pOjEyMDcyNDthOjE6e2k6MDtpOjk0OTt9aToxMjA3MjU7YToxOntpOjA7aTo5NTA7fWk6MTIwNzI2O2E6MTp7aTowO2k6OTUxO31pOjEyMDcyNzthOjE6e2k6MDtpOjk1Mjt9aToxMjA3Mjg7YToxOntpOjA7aTo5NTM7fWk6MTIwNzI5O2E6MTp7aTowO2k6OTU0O31pOjEyMDczMDthOjE6e2k6MDtpOjk1NTt9aToxMjA3MzE7YToxOntpOjA7aTo5NTY7fWk6MTIwNzMyO2E6MTp7aTowO2k6OTU3O31pOjEyMDczMzthOjE6e2k6MDtpOjk1ODt9aToxMjA3MzQ7YToxOntpOjA7aTo5NTk7fWk6MTIwNzM1O2E6MTp7aTowO2k6OTYwO31pOjEyMDczNjthOjE6e2k6MDtpOjk2MTt9aToxMjA3Mzc7YToxOntpOjA7aTo5NTI7fWk6MTIwNzM4O2E6MTp7aTowO2k6OTYzO31pOjEyMDczOTthOjE6e2k6MDtpOjk2NDt9aToxMjA3NDA7YToxOntpOjA7aTo5NjU7fWk6MTIwNzQxO2E6MTp7aTowO2k6OTY2O31pOjEyMDc0MjthOjE6e2k6MDtpOjk2Nzt9aToxMjA3NDM7YToxOntpOjA7aTo5Njg7fWk6MTIwNzQ0O2E6MTp7aTowO2k6OTY5O31pOjEyMDc2MzthOjE6e2k6MDtpOjk2Mzt9aToxMDE3O2E6MTp7aTowO2k6OTYzO31pOjc0Njg7YToxOntpOjA7aTo5Nzt9aTo3NDY5O2E6MTp7aTowO2k6MjMwO31pOjc0NzA7YToxOntpOjA7aTo5ODt9aTo3NDcyO2E6MTp7aTowO2k6MTAwO31pOjc0NzM7YToxOntpOjA7aToxMDE7fWk6NzQ3NDthOjE6e2k6MDtpOjQ3Nzt9aTo3NDc1O2E6MTp7aTowO2k6MTAzO31pOjc0NzY7YToxOntpOjA7aToxMDQ7fWk6NzQ3NzthOjE6e2k6MDtpOjEwNTt9aTo3NDc4O2E6MTp7aTowO2k6MTA2O31pOjc0Nzk7YToxOntpOjA7aToxMDc7fWk6NzQ4MDthOjE6e2k6MDtpOjEwODt9aTo3NDgxO2E6MTp7aTowO2k6MTA5O31pOjc0ODI7YToxOntpOjA7aToxMTA7fWk6NzQ4NDthOjE6e2k6MDtpOjExMTt9aTo3NDg1O2E6MTp7aTowO2k6NTQ3O31pOjc0ODY7YToxOntpOjA7aToxMTI7fWk6NzQ4NzthOjE6e2k6MDtpOjExNDt9aTo3NDg4O2E6MTp7aTowO2k6MTE2O31pOjc0ODk7YToxOntpOjA7aToxMTc7fWk6NzQ5MDthOjE6e2k6MDtpOjExOTt9aTo4NTA3O2E6Mzp7aTowO2k6MTAyO2k6MTtpOjk3O2k6MjtpOjEyMDt9aToxMjg4MDthOjM6e2k6MDtpOjExMjtpOjE7aToxMTY7aToyO2k6MTAxO31pOjEzMDA0O2E6Mjp7aTowO2k6MTA0O2k6MTtpOjEwMzt9aToxMzAwNjthOjI6e2k6MDtpOjEwMTtpOjE7aToxMTg7fWk6MTMwMDc7YTozOntpOjA7aToxMDg7aToxO2k6MTE2O2k6MjtpOjEwMDt9aToxMzE3ODthOjI6e2k6MDtpOjEwNTtpOjE7aToxMTc7fWk6MTMyNzg7YTozOntpOjA7aToxMTg7aToxO2k6ODcyNTtpOjI7aToxMDk7fWk6MTMyNzk7YTozOntpOjA7aTo5NztpOjE7aTo4NzI1O2k6MjtpOjEwOTt9fXM6MTI6Im5vcm1fY29tYmNscyI7YTozNDE6e2k6ODIwO2k6MTtpOjgyMTtpOjE7aTo4MjI7aToxO2k6ODIzO2k6MTtpOjgyNDtpOjE7aToyMzY0O2k6NztpOjI0OTI7aTo3O2k6MjYyMDtpOjc7aToyNzQ4O2k6NztpOjI4NzY7aTo3O2k6MzI2MDtpOjc7aTo0MTUxO2k6NztpOjEyNDQxO2k6ODtpOjEyNDQyO2k6ODtpOjIzODE7aTo5O2k6MjUwOTtpOjk7aToyNjM3O2k6OTtpOjI3NjU7aTo5O2k6Mjg5MztpOjk7aTozMDIxO2k6OTtpOjMxNDk7aTo5O2k6MzI3NztpOjk7aTozNDA1O2k6OTtpOjM1MzA7aTo5O2k6MzY0MjtpOjk7aTozOTcyO2k6OTtpOjQxNTM7aTo5O2k6NTkwODtpOjk7aTo1OTQwO2k6OTtpOjYwOTg7aTo5O2k6MTQ1NjtpOjEwO2k6MTQ1NztpOjExO2k6MTQ1ODtpOjEyO2k6MTQ1OTtpOjEzO2k6MTQ2MDtpOjE0O2k6MTQ2MTtpOjE1O2k6MTQ2MjtpOjE2O2k6MTQ2MztpOjE3O2k6MTQ2NDtpOjE4O2k6MTQ2NTtpOjE5O2k6MTQ2NztpOjIwO2k6MTQ2ODtpOjIxO2k6MTQ2OTtpOjIyO2k6MTQ3MTtpOjIzO2k6MTQ3MztpOjI0O2k6MTQ3NDtpOjI1O2k6NjQyODY7aToyNjtpOjE2MTE7aToyNztpOjE2MTI7aToyODtpOjE2MTM7aToyOTtpOjE2MTQ7aTozMDtpOjE2MTU7aTozMTtpOjE2MTY7aTozMjtpOjE2MTc7aTozMztpOjE2MTg7aTozNDtpOjE2NDg7aTozNTtpOjE4MDk7aTozNjtpOjMxNTc7aTo4NDtpOjMxNTg7aTo5MTtpOjM2NDA7aToxMDM7aTozNjQxO2k6MTAzO2k6MzY1NjtpOjEwNztpOjM2NTc7aToxMDc7aTozNjU4O2k6MTA3O2k6MzY1OTtpOjEwNztpOjM3Njg7aToxMTg7aTozNzY5O2k6MTE4O2k6Mzc4NDtpOjEyMjtpOjM3ODU7aToxMjI7aTozNzg2O2k6MTIyO2k6Mzc4NztpOjEyMjtpOjM5NTM7aToxMjk7aTozOTU0O2k6MTMwO2k6Mzk2MjtpOjEzMDtpOjM5NjM7aToxMzA7aTozOTY0O2k6MTMwO2k6Mzk2NTtpOjEzMDtpOjM5Njg7aToxMzA7aTozOTU2O2k6MTMyO2k6ODAxO2k6MjAyO2k6ODAyO2k6MjAyO2k6ODA3O2k6MjAyO2k6ODA4O2k6MjAyO2k6Nzk1O2k6MjE2O2k6Mzg5NztpOjIxNjtpOjExOTE0MTtpOjIxNjtpOjExOTE0MjtpOjIxNjtpOjExOTE1MDtpOjIxNjtpOjExOTE1MTtpOjIxNjtpOjExOTE1MjtpOjIxNjtpOjExOTE1MztpOjIxNjtpOjExOTE1NDtpOjIxNjtpOjEyMzMwO2k6MjE4O2k6NzkwO2k6MjIwO2k6NzkxO2k6MjIwO2k6NzkyO2k6MjIwO2k6NzkzO2k6MjIwO2k6Nzk2O2k6MjIwO2k6Nzk3O2k6MjIwO2k6Nzk4O2k6MjIwO2k6Nzk5O2k6MjIwO2k6ODAwO2k6MjIwO2k6ODAzO2k6MjIwO2k6ODA0O2k6MjIwO2k6ODA1O2k6MjIwO2k6ODA2O2k6MjIwO2k6ODA5O2k6MjIwO2k6ODEwO2k6MjIwO2k6ODExO2k6MjIwO2k6ODEyO2k6MjIwO2k6ODEzO2k6MjIwO2k6ODE0O2k6MjIwO2k6ODE1O2k6MjIwO2k6ODE2O2k6MjIwO2k6ODE3O2k6MjIwO2k6ODE4O2k6MjIwO2k6ODE5O2k6MjIwO2k6ODI1O2k6MjIwO2k6ODI2O2k6MjIwO2k6ODI3O2k6MjIwO2k6ODI4O2k6MjIwO2k6ODM5O2k6MjIwO2k6ODQwO2k6MjIwO2k6ODQxO2k6MjIwO2k6ODQ1O2k6MjIwO2k6ODQ2O2k6MjIwO2k6ODUxO2k6MjIwO2k6ODUyO2k6MjIwO2k6ODUzO2k6MjIwO2k6ODU0O2k6MjIwO2k6MTQyNTtpOjIyMDtpOjE0MzA7aToyMjA7aToxNDM1O2k6MjIwO2k6MTQ0MztpOjIyMDtpOjE0NDQ7aToyMjA7aToxNDQ1O2k6MjIwO2k6MTQ0NjtpOjIyMDtpOjE0NDc7aToyMjA7aToxNDUwO2k6MjIwO2k6MTYyMTtpOjIyMDtpOjE2MjI7aToyMjA7aToxNzYzO2k6MjIwO2k6MTc3MDtpOjIyMDtpOjE3NzM7aToyMjA7aToxODQxO2k6MjIwO2k6MTg0NDtpOjIyMDtpOjE4NDc7aToyMjA7aToxODQ4O2k6MjIwO2k6MTg0OTtpOjIyMDtpOjE4NTE7aToyMjA7aToxODUyO2k6MjIwO2k6MTg1NDtpOjIyMDtpOjE4NTg7aToyMjA7aToxODYwO2k6MjIwO2k6MTg2MjtpOjIyMDtpOjE4NjQ7aToyMjA7aToyMzg2O2k6MjIwO2k6Mzg2NDtpOjIyMDtpOjM4NjU7aToyMjA7aTozODkzO2k6MjIwO2k6Mzg5NTtpOjIyMDtpOjQwMzg7aToyMjA7aTo2NDU5O2k6MjIwO2k6ODQyNDtpOjIyMDtpOjExOTE2MztpOjIyMDtpOjExOTE2NDtpOjIyMDtpOjExOTE2NTtpOjIyMDtpOjExOTE2NjtpOjIyMDtpOjExOTE2NztpOjIyMDtpOjExOTE2ODtpOjIyMDtpOjExOTE2OTtpOjIyMDtpOjExOTE3MDtpOjIyMDtpOjExOTE3ODtpOjIyMDtpOjExOTE3OTtpOjIyMDtpOjE0MzQ7aToyMjI7aToxNDUzO2k6MjIyO2k6NjQ0MTtpOjIyMjtpOjEyMzMzO2k6MjIyO2k6MTIzMzQ7aToyMjQ7aToxMjMzNTtpOjIyNDtpOjExOTE0OTtpOjIyNjtpOjE0NTQ7aToyMjg7aTo2MzEzO2k6MjI4O2k6MTIzMzE7aToyMjg7aTo3Njg7aToyMzA7aTo3Njk7aToyMzA7aTo3NzA7aToyMzA7aTo3NzE7aToyMzA7aTo3NzI7aToyMzA7aTo3NzM7aToyMzA7aTo3NzQ7aToyMzA7aTo3NzU7aToyMzA7aTo3NzY7aToyMzA7aTo3Nzc7aToyMzA7aTo3Nzg7aToyMzA7aTo3Nzk7aToyMzA7aTo3ODA7aToyMzA7aTo3ODE7aToyMzA7aTo3ODI7aToyMzA7aTo3ODM7aToyMzA7aTo3ODQ7aToyMzA7aTo3ODU7aToyMzA7aTo3ODY7aToyMzA7aTo3ODc7aToyMzA7aTo3ODg7aToyMzA7aTo4Mjk7aToyMzA7aTo4MzA7aToyMzA7aTo4MzE7aToyMzA7aTo4MzI7aToyMzA7aTo4MzM7aToyMzA7aTo4MzQ7aToyMzA7aTo4MzU7aToyMzA7aTo4MzY7aToyMzA7aTo4Mzg7aToyMzA7aTo4NDI7aToyMzA7aTo4NDM7aToyMzA7aTo4NDQ7aToyMzA7aTo4NDg7aToyMzA7aTo4NDk7aToyMzA7aTo4NTA7aToyMzA7aTo4NTU7aToyMzA7aTo4Njc7aToyMzA7aTo4Njg7aToyMzA7aTo4Njk7aToyMzA7aTo4NzA7aToyMzA7aTo4NzE7aToyMzA7aTo4NzI7aToyMzA7aTo4NzM7aToyMzA7aTo4NzQ7aToyMzA7aTo4NzU7aToyMzA7aTo4NzY7aToyMzA7aTo4Nzc7aToyMzA7aTo4Nzg7aToyMzA7aTo4Nzk7aToyMzA7aToxMTU1O2k6MjMwO2k6MTE1NjtpOjIzMDtpOjExNTc7aToyMzA7aToxMTU4O2k6MjMwO2k6MTQyNjtpOjIzMDtpOjE0Mjc7aToyMzA7aToxNDI4O2k6MjMwO2k6MTQyOTtpOjIzMDtpOjE0MzE7aToyMzA7aToxNDMyO2k6MjMwO2k6MTQzMztpOjIzMDtpOjE0MzY7aToyMzA7aToxNDM3O2k6MjMwO2k6MTQzODtpOjIzMDtpOjE0Mzk7aToyMzA7aToxNDQwO2k6MjMwO2k6MTQ0MTtpOjIzMDtpOjE0NDg7aToyMzA7aToxNDQ5O2k6MjMwO2k6MTQ1MTtpOjIzMDtpOjE0NTI7aToyMzA7aToxNDU1O2k6MjMwO2k6MTQ3NjtpOjIzMDtpOjE1NTI7aToyMzA7aToxNTUzO2k6MjMwO2k6MTU1NDtpOjIzMDtpOjE1NTU7aToyMzA7aToxNTU2O2k6MjMwO2k6MTU1NztpOjIzMDtpOjE2MTk7aToyMzA7aToxNjIwO2k6MjMwO2k6MTYyMztpOjIzMDtpOjE2MjQ7aToyMzA7aToxNzUwO2k6MjMwO2k6MTc1MTtpOjIzMDtpOjE3NTI7aToyMzA7aToxNzUzO2k6MjMwO2k6MTc1NDtpOjIzMDtpOjE3NTU7aToyMzA7aToxNzU2O2k6MjMwO2k6MTc1OTtpOjIzMDtpOjE3NjA7aToyMzA7aToxNzYxO2k6MjMwO2k6MTc2MjtpOjIzMDtpOjE3NjQ7aToyMzA7aToxNzY3O2k6MjMwO2k6MTc2ODtpOjIzMDtpOjE3NzE7aToyMzA7aToxNzcyO2k6MjMwO2k6MTg0MDtpOjIzMDtpOjE4NDI7aToyMzA7aToxODQzO2k6MjMwO2k6MTg0NTtpOjIzMDtpOjE4NDY7aToyMzA7aToxODUwO2k6MjMwO2k6MTg1MztpOjIzMDtpOjE4NTU7aToyMzA7aToxODU2O2k6MjMwO2k6MTg1NztpOjIzMDtpOjE4NTk7aToyMzA7aToxODYxO2k6MjMwO2k6MTg2MztpOjIzMDtpOjE4NjU7aToyMzA7aToxODY2O2k6MjMwO2k6MjM4NTtpOjIzMDtpOjIzODc7aToyMzA7aToyMzg4O2k6MjMwO2k6Mzk3MDtpOjIzMDtpOjM5NzE7aToyMzA7aTozOTc0O2k6MjMwO2k6Mzk3NTtpOjIzMDtpOjU5MDE7aToyMzA7aTo2NDU4O2k6MjMwO2k6ODQwMDtpOjIzMDtpOjg0MDE7aToyMzA7aTo4NDA0O2k6MjMwO2k6ODQwNTtpOjIzMDtpOjg0MDY7aToyMzA7aTo4NDA3O2k6MjMwO2k6ODQxMTtpOjIzMDtpOjg0MTI7aToyMzA7aTo4NDE3O2k6MjMwO2k6ODQyMztpOjIzMDtpOjg0MjU7aToyMzA7aTo2NTA1NjtpOjIzMDtpOjY1MDU3O2k6MjMwO2k6NjUwNTg7aToyMzA7aTo2NTA1OTtpOjIzMDtpOjExOTE3MztpOjIzMDtpOjExOTE3NDtpOjIzMDtpOjExOTE3NTtpOjIzMDtpOjExOTE3NztpOjIzMDtpOjExOTE3NjtpOjIzMDtpOjExOTIxMDtpOjIzMDtpOjExOTIxMTtpOjIzMDtpOjExOTIxMjtpOjIzMDtpOjExOTIxMztpOjIzMDtpOjc4OTtpOjIzMjtpOjc5NDtpOjIzMjtpOjEyMzMyO2k6MjMyO2k6ODYzO2k6MjMzO2k6ODY2O2k6MjMzO2k6ODYxO2k6MjM0O2k6ODYyO2k6MjM0O2k6ODY0O2k6MjM0O2k6ODY1O2k6MjM0O2k6ODM3O2k6MjQwO319]]></data>
	</file>
	<file>
	  <filename>/libs/DEV/1.1.3/idn/ReadMe.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiogICAgICAgICAgICAgICAgICAgIElETkEgQ29udmVydCAoaWRuYV9jb252ZXJ0LmNsYXNzLnBocCkgICAgICAgICAgICAgICAgICAgICoKKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgoqIGh0dHA6Ly9pZG5hY29udi5waGx5bWFpbC5kZSAgICAgICAgICAgICAgICAgICAgIG1haWx0bzpwaGx5bWFpbEBwaGx5bGFicy5kZSAqCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKiAoYykgMjAwNC0yMDA3IHBobHlMYWJzLCBCZXJsaW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgoqIFRoaXMgZmlsZSBpcyBlbmNvZGVkIGluIFVURi04ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCkludHJvZHVjdGlvbgotLS0tLS0tLS0tLS0KClRoZSBjbGFzcyBpZG5hX2NvbnZlcnQgYWxsb3dzIHRvIGNvbnZlcnQgaW50ZXJuYXRpb25hbGl6ZWQgZG9tYWluIG5hbWVzCihzZWUgUkZDIDM0OTAsIDM0OTEsIDM0OTIgYW5kIDM0NTQgZm9yIGRldGlhbHMpIGFzIHRoZXkgY2FuIGJlIHVzZWQgd2l0aCB2YXJpb3VzCnJlZ2lzdHJpZXMgd29ybGR3aWRlIHRvIGJlIHRyYW5zbGF0ZWQgYmV0d2VlbiB0aGVpciBvcmlnaW5hbCAobG9jYWxpemVkKSBmb3JtCmFuZCB0aGVpciBlbmNvZGVkIGZvcm0gYXMgaXQgd2lsbCBiZSB1c2VkIGluIHRoZSBETlMgKERvbWFpbiBOYW1lIFN5c3RlbSkuCgpUaGUgY2xhc3MgcHJvdmlkZXMgdHdvIHB1YmxpYyBtZXRob2RzLCBlbmNvZGUoKSBhbmQgZGVjb2RlKCksIHdoaWNoIGRvIGV4YWN0bHkKd2hhdCB5b3Ugd291bGQgZXhwZWN0IHRoZW0gdG8gZG8uIFlvdSBhcmUgYWxsb3dlZCB0byB1c2UgY29tcGxldGUgZG9tYWluIG5hbWVzLApzaW1wbGUgc3RyaW5ncyBhbmQgY29tcGxldGUgZW1haWwgYWRkcmVzc2VzIGFzIHdlbGwuIFRoYXQgbWVhbnMsIHRoYXQgeW91IG1pZ2h0CnVzZSBhbnkgb2YgdGhlIGZvbGxvd2luZyBub3RhdGlvbnM6CgotIHd3dy5uw7ZyZ2xlci5jb20KLSB4bi0tbnJnbGVyLXd4YQotIHhuLS1icnNlLTVxYS54bi0ta25yei0xcmEuaW5mbwoKRXJyb3JzLCBpbmNvcnJlY3RseSBlbmNvZGVkIG9yIGludmFsaWQgc3RyaW5ncyB3aWxsIGxlYWQgdG8gZWl0aGVyIGEgRkFMU0UKcmVzcG9uc2UgKHdoZW4gaW4gc3RyaWN0IG1vZGUpIG9yIHRvIG9ubHkgcGFydGlhbGx5IGNvbnZlcnRlZCBzdHJpbmdzLgpZb3UgY2FuIHF1ZXJ5IHRoZSBvY2N1cmVkIGVycm9yIGJ5IGNhbGxpbmcgdGhlIG1ldGhvZCBnZXRfbGFzdF9lcnJvcigpLgoKVW5pY29kZSBzdHJpbmdzIGFyZSBleHBlY3RlZCB0byBiZSBlaXRoZXIgVVRGLTggc3RyaW5ncywgVUNTLTQgc3RyaW5ncyBvciBVQ1MtNAphcnJheXMuIFRoZSBkZWZhdWx0IGZvcm1hdCBpcyBVVEYtOC4gRm9yIHNldHRpbmcgZGlmZmVyZW50IGVuY29kaW5ncywgeW91IGNhbgpjYWxsIHRoZSBtZXRob2Qgc2V0UGFyYW1zKCkgLSBwbGVhc2Ugc2VlIHRoZSBpbmxpbmUgZG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlscy4KQUNFIHN0cmluZ3MgKHRoZSBQdW55Y29kZSBmb3JtKSBhcmUgYWx3YXlzIDdiaXQgQVNDSUkgc3RyaW5ncy4KCkFUVEVOVElPTjogV2Ugbm8gbG9uZ2VyIHN1cHBseSB0aGUgUEhQNSB2ZXJzaW9uIG9mIHRoZSBjbGFzcy4gSXQgaXMgbm90Cm5lY2Vzc2FyeSBmb3IgYWNoaWV2aW5nIGEgc3VjY2Vzc2Z1bGwgY29udmVyc2lvbiwgc2luY2UgdGhlIHN1cHBsaWVkIFBIUCBjb2RlIGlzCmNvbXBhdGlibGUgd2l0aCBib3RoIFBIUDQgYW5kIFBIUDUuIFdlIGV4cGVjdCB0byBzZWUgbm8gY29tcGF0aWJpbGl0eSBpc3N1ZXMKd2l0aCB0aGUgdXBjb21pbmcgUEhQNiwgdG9vLgoKCkZpbGVzCi0tLS0tCgppZG5hX2NvbnZlcnQuY2xhc3MucGhwICAgICAgICAgLSBUaGUgYWN0dWFsIGNsYXNzCmlkbmFfY29udmVydC5jcmVhdGUubnBkYXRhLnBocCAtIFVzZWZ1bCBmb3IgKHJlKWNyZWF0aW5nIHRoZSBOUERhdGEgZmlsZQpucGRhdGEuc2VyICAgICAgICAgICAgICAgICAgICAgLSBTZXJpYWxpemVkIGRhdGEgZm9yIE5hbWVQcmVwCmV4YW1wbGUucGhwICAgICAgICAgICAgICAgICAgICAtIEFuIGV4YW1wbGUgd2ViIHBhZ2UgZm9yIGNvbnZlcnRpbmcKUmVhZE1lLnR4dCAgICAgICAgICAgICAgICAgICAgIC0gVGhpcyBmaWxlCkxJQ0VOQ0UgICAgICAgICAgICAgICAgICAgICAgICAtIFRoZSBMR1BMIGxpY2VuY2UgZmlsZQoKVGhlIGNsYXNzIGlzIGNvbnRhaW5lZCBpbiBpZG5hX2NvbnZlcnQuY2xhc3MucGhwLgpNQUtFIFNVUkUgdG8gY29weSB0aGUgbnBkYXRhLnNlciBmaWxlIGludG8gdGhlIHNhbWUgZm9sZGVyIGFzIHRoZSBjbGFzcyBmaWxlCml0c2VsZiEKCgpFeGFtcGxlcwotLS0tLS0tLQoKMS4gU2F5IHdlIHdpc2ggdG8gZW5jb2RlIHRoZSBkb21haW4gbmFtZSBuw7ZyZ2xlci5jb206CgovLyBJbmNsdWRlIHRoZSBjbGFzcwppbmNsdWRlX29uY2UoJ2lkbmFfY29udmVydC5jbGFzcy5waHAnKTsKLy8gSW5zdGFudGlhdGUgaXQgKgokSUROID0gbmV3IGlkbmFfY29udmVydCgpOwovLyBUaGUgaW5wdXQgc3RyaW5nLCBpZiBpbnB1dCBpcyBub3QgVVRGLTggb3IgVUNTLTQsIGl0IG11c3QgYmUgY29udmVydGVkIGJlZm9yZQokaW5wdXQgPSB1dGY4X2VuY29kZSgnbsO2cmdsZXIuY29tJyk7Ci8vIEVuY29kZSBpdCB0byBpdHMgcHVueWNvZGUgcHJlc2VudGF0aW9uCiRvdXRwdXQgPSAkSUROLT5lbmNvZGUoJGlucHV0KTsKLy8gT3V0cHV0LCB3aGF0IHdlIGdvdCBub3cKZWNobyAkb3V0cHV0OyAvLyBUaGlzIHdpbGwgcmVhZDogeG4tLW5yZ2xlci13eGEuY29tCgoKMi4gV2UgcmVjZWl2ZWQgYW4gZW1haWwgZnJvbSBhIHB1bnljb2RlZCBkb21haW4gYW5kIGFyZSB3aWxsaW5nIHRvIGxlYXJuLCBob3cKICAgdGhlIGRvbWFpbiBuYW1lIHJlYWRzIG9yaWdpbmFsbHkKCi8vIEluY2x1ZGUgdGhlIGNsYXNzCmluY2x1ZGVfb25jZSgnaWRuYV9jb252ZXJ0LmNsYXNzLnBocCcpOwovLyBJbnN0YW50aWF0ZSBpdCAoZGVwZW5kaW5nIG9uIHRoZSB2ZXJzaW9uIHlvdSBhcmUgdXNpbmcpIHdpdGgKJElETiA9IG5ldyBpZG5hX2NvbnZlcnQoKTsKLy8gVGhlIGlucHV0IHN0cmluZwokaW5wdXQgPSAnYW5kcmVAeG4tLWJyc2UtNXFhLnhuLS1rbnJ6LTFyYS5pbmZvJzsKLy8gRW5jb2RlIGl0IHRvIGl0cyBwdW55Y29kZSBwcmVzZW50YXRpb24KJG91dHB1dCA9ICRJRE4tPmRlY29kZSgkaW5wdXQpOwovLyBPdXRwdXQsIHdoYXQgd2UgZ290IG5vdywgaWYgb3V0cHV0IHNob3VsZCBiZSBpbiBhIGZvcm1hdCBkaWZmZXJlbnQgdG8gVVRGLTgKLy8gb3IgVUNTLTQsIHlvdSB3aWxsIGhhdmUgdG8gY29udmVydCBpdCBiZWZvcmUgb3V0cHV0dGluZyBpdAplY2hvIHV0ZjhfZGVjb2RlKCRvdXRwdXQpOyAvLyBUaGlzIHdpbGwgcmVhZDogYW5kcmVAYsO2cnNlLmtuw7Zyei5pbmZvCgoKMy4gVGhlIGlucHV0IGlzIHJlYWQgZnJvbSBhIFVDUy00IGNvZGVkIGZpbGUgYW5kIGVuY29kZWQgbGluZSBieSBsaW5lLiBCeQogICBhcHBlbmRpbmcgdGhlIG9wdGlvbmFsIHNlY29uZCBwYXJhbWV0ZXIgd2UgdGVsbCBlbm9kZSgpIGFib3V0IHRoZSBpbnB1dAogICBmb3JtYXQgdG8gYmUgdXNlZAoKLy8gSW5jbHVkZSB0aGUgY2xhc3MKaW5jbHVkZV9vbmNlKCdpZG5hX2NvbnZlcnQuY2xhc3MucGhwJyk7Ci8vIEluc3RhbnRpYXRlIGl0CiRJRE4gPSBuZXcgZGluY2FfY29udmVydCgpOwovLyBJdGVyYXRlIHRocm91Z2ggdGhlIGlucHV0IGZpbGUgbGluZSBieSBsaW5lCmZvcmVhY2ggKGZpbGUoJ3VjczQtZG9tYWlucy50eHQnKSBhcyAkbGluZSkgewogICAgZWNobyAkSUROLT5lbmNvZGUodHJpbSgkbGluZSksICd1Y3M0X3N0cmluZycpOwogICAgZWNobyAiXG4iOwp9CgoKTlBEYXRhCi0tLS0tLQoKU2hvdWxkIHlvdSBuZWVkIHRvIHJlY3JlYXRlIHRoZSBucGRhdGEuc2VyIGZpbGUsIHdoaWNoIGhvbGRzIGFsbCBuZWNlc3NhcnkgdHJhbnNsYXRpb24KdGFibGVzIGluIGEgc2VyaWFsaXplZCBmb3JtYXQsIHlvdSBjYW4gcnVuIHRoZSBmaWxlIGlkbmFfY29udmVydC5jcmVhdGUubnBkYXRhLnBocCwgd2hpY2gKY3JlYXRlcyB0aGUgZmlsZSBmb3IgeW91IGFuZCBzdG9yZXMgaXQgaW4gdGhlIHNhbWUgZm9sZGVyLCB3aGVyZSBpdCBpcyBwbGFjZWQuClNob3VsZCB5b3UgbmVlZCB0byBkbyBjaGFuZ2VzIHRvIHRoZSB0YWJsZXMgeW91IGNhbiBkbyBzbywgYnV0IGJld2FyZSBvZiB0aGUgY29uc2VxdWVuY2VzLgoKCkNvbnRhY3QgdXMKLS0tLS0tLS0tLQoKSW4gY2FzZSBvZiBlcnJvcnMsIGJ1Z3MsIHF1ZXN0aW9ucywgd2lzaGVzLCBwbGVhc2UgZG9uJ3QgaGVzaXRhdGUgdG8gY29udGFjdCB1cwp1bmRlciB0aGUgZW1haWwgYWRkcmVzcyBhYm92ZS4KClRoZSB0ZWFtIG9mIHBobHlMYWJzCmh0dHA6Ly9waGx5bGFicy5kZQptYWlsdG86cGhseW1haWxAcGhseWxhYnMuZGU=]]></data>
	</file>
	<file>
	  <filename>/libs/DEV/1.1.3/LICENSE.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Q29weXJpZ2h0IChjKSAyMDA0LTIwMDcsIFJ5YW4gUGFybWFuIGFuZCBHZW9mZnJleSBTbmVkZG9uLgpBbGwgcmlnaHRzIHJlc2VydmVkLgoKUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwgYXJlIApwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKCgkqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIAoJICBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCgoJKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCAKCSAgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgCgkgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KCgkqIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIFNpbXBsZVBpZSBUZWFtIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCAKCSAgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3IgCgkgIHdyaXR0ZW4gcGVybWlzc2lvbi4KClRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgCk9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIApBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSUyAKQU5EIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIApDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIApTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSAKVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgCk9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgClBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLg==]]></data>
	</file>
	<file>
	  <filename>/libs/DEV/1.1.3/README.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[U0lNUExFUElFCmh0dHA6Ly9zaW1wbGVwaWUub3JnCkJ5IFJ5YW4gUGFybWFuIGFuZCBHZW9mZnJleSBTbmVkZG9uCgpCU0QtTElDRU5TRUQKaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHAKCldIQVQgQ09NRVMgSU4gVEhFIFBBQ0tBR0U/CjEpIHNpbXBsZXBpZS5pbmMgLSBUaGUgU2ltcGxlUGllIGxpYnJhcnkuICBUaGlzIGlzIGFsbCB0aGF0J3MgcmVxdWlyZWQgZm9yIHlvdXIgcGFnZXMuCjIpIFJFQURNRS50eHQgLSBUaGlzIGRvY3VtZW50LgozKSBMSUNFTlNFLnR4dCAtIEEgY29weSBvZiB0aGUgQlNEIGxpY2Vuc2UuCjQpIGNvbXBhdGliaWxpdHlfdGVzdCAtIFRoZSBTaW1wbGVQaWUgY29tcGF0aWJpbGl0eSB0ZXN0IHRoYXQgY2hlY2tzIHlvdXIgc2VydmVyIGZvciByZXF1aXJlZCBzZXR0aW5ncy4KNSkgZGVtbyAtIEEgYmFzaWMgZmVlZCByZWFkZXIgZGVtbyB0aGF0IHNob3dzIG9mZiBzb21lIG9mIFNpbXBsZVBpZSdzIG1vcmUgbm90aWNhYmxlIGZlYXR1cmVzLgo2KSBpZG4gLSBBIHRoaXJkLXBhcnR5IGxpYnJhcnkgdGhhdCBTaW1wbGVQaWUgY2FuIG9wdGlvbmFsbHkgdXNlIHRvIHVuZGVyc3RhbmQgSW50ZXJuYXRpb25hbGl6ZWQgRG9tYWluIE5hbWVzIChJRE5zKS4KNykgdGVzdCAtIFNpbXBsZVBpZSdzIHVuaXQgdGVzdCBzdWl0ZS4gVGhpcyBpcyBvbmx5IGF2YWlsYWJsZSBpbiBTVk4gYnVpbGRzLgoKVE8gU1RBUlQgVEhFIERFTU86CjEpIFVwbG9hZCB0aGlzIHBhY2thZ2UgdG8geW91ciB3ZWJzZXJ2ZXIuCjIpIE1ha2Ugc3VyZSB0aGF0IHRoZSBjYWNoZSBmb2xkZXIgaW5zaWRlIG9mIHRoZSBkZW1vIGZvbGRlciBpcyBzZXJ2ZXItd3JpdGFibGUuCjMpIE5hdmlnYXRlIHlvdXIgYnJvd3NlciB0byB0aGUgZGVtbyBmb2xkZXIuCgpTVVBQT1JUOgpGb3IgZnVydGhlciBzZXR1cCBhbmQgaW5zdGFsbCBkb2N1bWVudGF0aW9uLCBmdW5jdGlvbiByZWZlcmVuY2VzLCBldGMuLCB2aXNpdDoKaHR0cDovL3NpbXBsZXBpZS5vcmcvd2lraS8KCkZvciBidWcgcmVwb3J0cywgZmVhdHVyZSByZXF1ZXN0cyBhbmQgb3RoZXIgc3VwcG9ydCwgdmlzaXQ6Cmh0dHA6Ly9zaW1wbGVwaWUub3JnL3N1cHBvcnQvCgpGb3IgbW9yZSBpbnNpZ2h0IG9uIFNpbXBsZVBpZSBkZXZlbG9wbWVudCwgdmlzaXQ6Cmh0dHA6Ly9zaW1wbGVwaWUub3JnL2RldmVsb3BtZW50Lw==]]></data>
	</file>
	<file>
	  <filename>/libs/DEV/1.1.3/simplepie.inc</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIFNpbXBsZVBpZQogKgogKiBBIFBIUC1CYXNlZCBSU1MgYW5kIEF0b20gRmVlZCBGcmFtZXdvcmsuCiAqIFRha2VzIHRoZSBoYXJkIHdvcmsgb3V0IG9mIG1hbmFnaW5nIGEgY29tcGxldGUgUlNTL0F0b20gc29sdXRpb24uCiAqCiAqIENvcHlyaWdodCAoYykgMjAwNC0yMDA4LCBSeWFuIFBhcm1hbiBhbmQgR2VvZmZyZXkgU25lZGRvbgogKiBBbGwgcmlnaHRzIHJlc2VydmVkLgogKgogKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLCBhcmUKICogcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CiAqCiAqIAkqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mCiAqIAkgIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KICoKICogCSogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3QKICogCSAgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMKICogCSAgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgogKgogKiAJKiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBTaW1wbGVQaWUgVGVhbSBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQKICogCSAgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3IKICogCSAgd3JpdHRlbiBwZXJtaXNzaW9uLgogKgogKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTCiAqIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZCiAqIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVJTCiAqIEFORCBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgogKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCiAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCiAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SCiAqIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAqCiAqIEBwYWNrYWdlIFNpbXBsZVBpZQogKiBAdmVyc2lvbiAxLjEuMwogKiBAY29weXJpZ2h0IDIwMDQtMjAwOCBSeWFuIFBhcm1hbiwgR2VvZmZyZXkgU25lZGRvbgogKiBAYXV0aG9yIFJ5YW4gUGFybWFuCiAqIEBhdXRob3IgR2VvZmZyZXkgU25lZGRvbgogKiBAbGluayBodHRwOi8vc2ltcGxlcGllLm9yZy8gU2ltcGxlUGllCiAqIEBsaW5rIGh0dHA6Ly9zaW1wbGVwaWUub3JnL3N1cHBvcnQvIFBsZWFzZSBzdWJtaXQgYWxsIGJ1ZyByZXBvcnRzIGFuZCBmZWF0dXJlIHJlcXVlc3RzIHRvIHRoZSBTaW1wbGVQaWUgZm9ydW1zCiAqIEBsaWNlbnNlIGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwIEJTRCBMaWNlbnNlCiAqIEB0b2RvIHBocERvYyBjb21tZW50cwogKi8KCi8qKgogKiBTaW1wbGVQaWUgTmFtZQogKi8KZGVmaW5lKCdTSU1QTEVQSUVfTkFNRScsICdTaW1wbGVQaWUnKTsKCi8qKgogKiBTaW1wbGVQaWUgVmVyc2lvbgogKi8KZGVmaW5lKCdTSU1QTEVQSUVfVkVSU0lPTicsICcxLjEuMycpOwoKLyoqCiAqIFNpbXBsZVBpZSBCdWlsZAogKi8KZGVmaW5lKCdTSU1QTEVQSUVfQlVJTEQnLCAyMDA4MTIxOSk7CgovKioKICogU2ltcGxlUGllIFdlYnNpdGUgVVJMCiAqLwpkZWZpbmUoJ1NJTVBMRVBJRV9VUkwnLCAnaHR0cDovL3NpbXBsZXBpZS5vcmcnKTsKCi8qKgogKiBTaW1wbGVQaWUgVXNlcmFnZW50CiAqIEBzZWUgU2ltcGxlUGllOjpzZXRfdXNlcmFnZW50KCkKICovCmRlZmluZSgnU0lNUExFUElFX1VTRVJBR0VOVCcsIFNJTVBMRVBJRV9OQU1FIC4gJy8nIC4gU0lNUExFUElFX1ZFUlNJT04gLiAnIChGZWVkIFBhcnNlcjsgJyAuIFNJTVBMRVBJRV9VUkwgLiAnOyBBbGxvdyBsaWtlIEdlY2tvKSBCdWlsZC8nIC4gU0lNUExFUElFX0JVSUxEKTsKCi8qKgogKiBTaW1wbGVQaWUgTGlua2JhY2sKICovCmRlZmluZSgnU0lNUExFUElFX0xJTktCQUNLJywgJzxhIGhyZWY9IicgLiBTSU1QTEVQSUVfVVJMIC4gJyIgdGl0bGU9IicgLiBTSU1QTEVQSUVfTkFNRSAuICcgJyAuIFNJTVBMRVBJRV9WRVJTSU9OIC4gJyI+JyAuIFNJTVBMRVBJRV9OQU1FIC4gJzwvYT4nKTsKCi8qKgogKiBObyBBdXRvZGlzY292ZXJ5CiAqIEBzZWUgU2ltcGxlUGllOjpzZXRfYXV0b2Rpc2NvdmVyeV9sZXZlbCgpCiAqLwpkZWZpbmUoJ1NJTVBMRVBJRV9MT0NBVE9SX05PTkUnLCAwKTsKCi8qKgogKiBGZWVkIExpbmsgRWxlbWVudCBBdXRvZGlzY292ZXJ5CiAqIEBzZWUgU2ltcGxlUGllOjpzZXRfYXV0b2Rpc2NvdmVyeV9sZXZlbCgpCiAqLwpkZWZpbmUoJ1NJTVBMRVBJRV9MT0NBVE9SX0FVVE9ESVNDT1ZFUlknLCAxKTsKCi8qKgogKiBMb2NhbCBGZWVkIEV4dGVuc2lvbiBBdXRvZGlzY292ZXJ5CiAqIEBzZWUgU2ltcGxlUGllOjpzZXRfYXV0b2Rpc2NvdmVyeV9sZXZlbCgpCiAqLwpkZWZpbmUoJ1NJTVBMRVBJRV9MT0NBVE9SX0xPQ0FMX0VYVEVOU0lPTicsIDIpOwoKLyoqCiAqIExvY2FsIEZlZWQgQm9keSBBdXRvZGlzY292ZXJ5CiAqIEBzZWUgU2ltcGxlUGllOjpzZXRfYXV0b2Rpc2NvdmVyeV9sZXZlbCgpCiAqLwpkZWZpbmUoJ1NJTVBMRVBJRV9MT0NBVE9SX0xPQ0FMX0JPRFknLCA0KTsKCi8qKgogKiBSZW1vdGUgRmVlZCBFeHRlbnNpb24gQXV0b2Rpc2NvdmVyeQogKiBAc2VlIFNpbXBsZVBpZTo6c2V0X2F1dG9kaXNjb3ZlcnlfbGV2ZWwoKQogKi8KZGVmaW5lKCdTSU1QTEVQSUVfTE9DQVRPUl9SRU1PVEVfRVhURU5TSU9OJywgOCk7CgovKioKICogUmVtb3RlIEZlZWQgQm9keSBBdXRvZGlzY292ZXJ5CiAqIEBzZWUgU2ltcGxlUGllOjpzZXRfYXV0b2Rpc2NvdmVyeV9sZXZlbCgpCiAqLwpkZWZpbmUoJ1NJTVBMRVBJRV9MT0NBVE9SX1JFTU9URV9CT0RZJywgMTYpOwoKLyoqCiAqIEFsbCBGZWVkIEF1dG9kaXNjb3ZlcnkKICogQHNlZSBTaW1wbGVQaWU6OnNldF9hdXRvZGlzY292ZXJ5X2xldmVsKCkKICovCmRlZmluZSgnU0lNUExFUElFX0xPQ0FUT1JfQUxMJywgMzEpOwoKLyoqCiAqIE5vIGtub3duIGZlZWQgdHlwZQogKi8KZGVmaW5lKCdTSU1QTEVQSUVfVFlQRV9OT05FJywgMCk7CgovKioKICogUlNTIDAuOTAKICovCmRlZmluZSgnU0lNUExFUElFX1RZUEVfUlNTXzA5MCcsIDEpOwoKLyoqCiAqIFJTUyAwLjkxIChOZXRzY2FwZSkKICovCmRlZmluZSgnU0lNUExFUElFX1RZUEVfUlNTXzA5MV9ORVRTQ0FQRScsIDIpOwoKLyoqCiAqIFJTUyAwLjkxIChVc2VybGFuZCkKICovCmRlZmluZSgnU0lNUExFUElFX1RZUEVfUlNTXzA5MV9VU0VSTEFORCcsIDQpOwoKLyoqCiAqIFJTUyAwLjkxIChib3RoIE5ldHNjYXBlIGFuZCBVc2VybGFuZCkKICovCmRlZmluZSgnU0lNUExFUElFX1RZUEVfUlNTXzA5MScsIDYpOwoKLyoqCiAqIFJTUyAwLjkyCiAqLwpkZWZpbmUoJ1NJTVBMRVBJRV9UWVBFX1JTU18wOTInLCA4KTsKCi8qKgogKiBSU1MgMC45MwogKi8KZGVmaW5lKCdTSU1QTEVQSUVfVFlQRV9SU1NfMDkzJywgMTYpOwoKLyoqCiAqIFJTUyAwLjk0CiAqLwpkZWZpbmUoJ1NJTVBMRVBJRV9UWVBFX1JTU18wOTQnLCAzMik7CgovKioKICogUlNTIDEuMAogKi8KZGVmaW5lKCdTSU1QTEVQSUVfVFlQRV9SU1NfMTAnLCA2NCk7CgovKioKICogUlNTIDIuMAogKi8KZGVmaW5lKCdTSU1QTEVQSUVfVFlQRV9SU1NfMjAnLCAxMjgpOwoKLyoqCiAqIFJERi1iYXNlZCBSU1MKICovCmRlZmluZSgnU0lNUExFUElFX1RZUEVfUlNTX1JERicsIDY1KTsKCi8qKgogKiBOb24tUkRGLWJhc2VkIFJTUyAodHJ1bHkgaW50ZW5kZWQgYXMgc3luZGljYXRpb24gZm9ybWF0KQogKi8KZGVmaW5lKCdTSU1QTEVQSUVfVFlQRV9SU1NfU1lORElDQVRJT04nLCAxOTApOwoKLyoqCiAqIEFsbCBSU1MKICovCmRlZmluZSgnU0lNUExFUElFX1RZUEVfUlNTX0FMTCcsIDI1NSk7CgovKioKICogQXRvbSAwLjMKICovCmRlZmluZSgnU0lNUExFUElFX1RZUEVfQVRPTV8wMycsIDI1Nik7CgovKioKICogQXRvbSAxLjAKICovCmRlZmluZSgnU0lNUExFUElFX1RZUEVfQVRPTV8xMCcsIDUxMik7CgovKioKICogQWxsIEF0b20KICovCmRlZmluZSgnU0lNUExFUElFX1RZUEVfQVRPTV9BTEwnLCA3NjgpOwoKLyoqCiAqIEFsbCBmZWVkIHR5cGVzCiAqLwpkZWZpbmUoJ1NJTVBMRVBJRV9UWVBFX0FMTCcsIDEwMjMpOwoKLyoqCiAqIE5vIGNvbnN0cnVjdAogKi8KZGVmaW5lKCdTSU1QTEVQSUVfQ09OU1RSVUNUX05PTkUnLCAwKTsKCi8qKgogKiBUZXh0IGNvbnN0cnVjdAogKi8KZGVmaW5lKCdTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQnLCAxKTsKCi8qKgogKiBIVE1MIGNvbnN0cnVjdAogKi8KZGVmaW5lKCdTSU1QTEVQSUVfQ09OU1RSVUNUX0hUTUwnLCAyKTsKCi8qKgogKiBYSFRNTCBjb25zdHJ1Y3QKICovCmRlZmluZSgnU0lNUExFUElFX0NPTlNUUlVDVF9YSFRNTCcsIDQpOwoKLyoqCiAqIGJhc2U2NC1lbmNvZGVkIGNvbnN0cnVjdAogKi8KZGVmaW5lKCdTSU1QTEVQSUVfQ09OU1RSVUNUX0JBU0U2NCcsIDgpOwoKLyoqCiAqIElSSSBjb25zdHJ1Y3QKICovCmRlZmluZSgnU0lNUExFUElFX0NPTlNUUlVDVF9JUkknLCAxNik7CgovKioKICogQSBjb25zdHJ1Y3QgdGhhdCBtaWdodCBiZSBIVE1MCiAqLwpkZWZpbmUoJ1NJTVBMRVBJRV9DT05TVFJVQ1RfTUFZQkVfSFRNTCcsIDMyKTsKCi8qKgogKiBBbGwgY29uc3RydWN0cwogKi8KZGVmaW5lKCdTSU1QTEVQSUVfQ09OU1RSVUNUX0FMTCcsIDYzKTsKCi8qKgogKiBQQ1JFIGZvciBIVE1MIGF0dHJpYnV0ZXMKICovCmRlZmluZSgnU0lNUExFUElFX1BDUkVfSFRNTF9BVFRSSUJVVEUnLCAnKCg/OltceDA5XHgwQVx4MEJceDBDXHgwRFx4MjBdK1teXHgwOVx4MEFceDBCXHgwQ1x4MERceDIwXHgyRlx4M0VdW15ceDA5XHgwQVx4MEJceDBDXHgwRFx4MjBceDJGXHgzRFx4M0VdKig/OltceDA5XHgwQVx4MEJceDBDXHgwRFx4MjBdKj1bXHgwOVx4MEFceDBCXHgwQ1x4MERceDIwXSooPzoiKD86W14iXSopInxcJyg/OlteXCddKilcJ3woPzpbXlx4MDlceDBBXHgwQlx4MENceDBEXHgyMFx4MjJceDI3XHgzRV1bXlx4MDlceDBBXHgwQlx4MENceDBEXHgyMFx4M0VdKik/KSk/KSopW1x4MDlceDBBXHgwQlx4MENceDBEXHgyMF0qJyk7CgovKioKICogUENSRSBmb3IgWE1MIGF0dHJpYnV0ZXMKICovCmRlZmluZSgnU0lNUExFUElFX1BDUkVfWE1MX0FUVFJJQlVURScsICcoKD86XHMrKD86KD86W15cczpdKzopP1teXHM6XSspXHMqPVxzKig/OiIoPzpbXiJdKikifFwnKD86W15cJ10qKVwnKSkqKVxzKicpOwoKLyoqCiAqIFhNTCBOYW1lc3BhY2UKICovCmRlZmluZSgnU0lNUExFUElFX05BTUVTUEFDRV9YTUwnLCAnaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlJyk7CgovKioKICogQXRvbSAxLjAgTmFtZXNwYWNlCiAqLwpkZWZpbmUoJ1NJTVBMRVBJRV9OQU1FU1BBQ0VfQVRPTV8xMCcsICdodHRwOi8vd3d3LnczLm9yZy8yMDA1L0F0b20nKTsKCi8qKgogKiBBdG9tIDAuMyBOYW1lc3BhY2UKICovCmRlZmluZSgnU0lNUExFUElFX05BTUVTUEFDRV9BVE9NXzAzJywgJ2h0dHA6Ly9wdXJsLm9yZy9hdG9tL25zIycpOwoKLyoqCiAqIFJERiBOYW1lc3BhY2UKICovCmRlZmluZSgnU0lNUExFUElFX05BTUVTUEFDRV9SREYnLCAnaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIycpOwoKLyoqCiAqIFJTUyAwLjkwIE5hbWVzcGFjZQogKi8KZGVmaW5lKCdTSU1QTEVQSUVfTkFNRVNQQUNFX1JTU18wOTAnLCAnaHR0cDovL215Lm5ldHNjYXBlLmNvbS9yZGYvc2ltcGxlLzAuOS8nKTsKCi8qKgogKiBSU1MgMS4wIE5hbWVzcGFjZQogKi8KZGVmaW5lKCdTSU1QTEVQSUVfTkFNRVNQQUNFX1JTU18xMCcsICdodHRwOi8vcHVybC5vcmcvcnNzLzEuMC8nKTsKCi8qKgogKiBSU1MgMS4wIENvbnRlbnQgTW9kdWxlIE5hbWVzcGFjZQogKi8KZGVmaW5lKCdTSU1QTEVQSUVfTkFNRVNQQUNFX1JTU18xMF9NT0RVTEVTX0NPTlRFTlQnLCAnaHR0cDovL3B1cmwub3JnL3Jzcy8xLjAvbW9kdWxlcy9jb250ZW50LycpOwoKLyoqCiAqIFJTUyAyLjAgTmFtZXNwYWNlCiAqIChTdHVwaWQsIEkga25vdywgYnV0IEknbSBjZXJ0YWluIGl0IHdpbGwgY29uZnVzZSBwZW9wbGUgbGVzcyB3aXRoIHN1cHBvcnQuKQogKi8KZGVmaW5lKCdTSU1QTEVQSUVfTkFNRVNQQUNFX1JTU18yMCcsICcnKTsKCi8qKgogKiBEQyAxLjAgTmFtZXNwYWNlCiAqLwpkZWZpbmUoJ1NJTVBMRVBJRV9OQU1FU1BBQ0VfRENfMTAnLCAnaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMC8nKTsKCi8qKgogKiBEQyAxLjEgTmFtZXNwYWNlCiAqLwpkZWZpbmUoJ1NJTVBMRVBJRV9OQU1FU1BBQ0VfRENfMTEnLCAnaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8nKTsKCi8qKgogKiBXM0MgQmFzaWMgR2VvIChXR1M4NCBsYXQvbG9uZykgVm9jYWJ1bGFyeSBOYW1lc3BhY2UKICovCmRlZmluZSgnU0lNUExFUElFX05BTUVTUEFDRV9XM0NfQkFTSUNfR0VPJywgJ2h0dHA6Ly93d3cudzMub3JnLzIwMDMvMDEvZ2VvL3dnczg0X3BvcyMnKTsKCi8qKgogKiBHZW9SU1MgTmFtZXNwYWNlCiAqLwpkZWZpbmUoJ1NJTVBMRVBJRV9OQU1FU1BBQ0VfR0VPUlNTJywgJ2h0dHA6Ly93d3cuZ2VvcnNzLm9yZy9nZW9yc3MnKTsKCi8qKgogKiBNZWRpYSBSU1MgTmFtZXNwYWNlCiAqLwpkZWZpbmUoJ1NJTVBMRVBJRV9OQU1FU1BBQ0VfTUVESUFSU1MnLCAnaHR0cDovL3NlYXJjaC55YWhvby5jb20vbXJzcy8nKTsKCi8qKgogKiBXcm9uZyBNZWRpYSBSU1MgTmFtZXNwYWNlCiAqLwpkZWZpbmUoJ1NJTVBMRVBJRV9OQU1FU1BBQ0VfTUVESUFSU1NfV1JPTkcnLCAnaHR0cDovL3NlYXJjaC55YWhvby5jb20vbXJzcycpOwoKLyoqCiAqIGlUdW5lcyBSU1MgTmFtZXNwYWNlCiAqLwpkZWZpbmUoJ1NJTVBMRVBJRV9OQU1FU1BBQ0VfSVRVTkVTJywgJ2h0dHA6Ly93d3cuaXR1bmVzLmNvbS9kdGRzL3BvZGNhc3QtMS4wLmR0ZCcpOwoKLyoqCiAqIFhIVE1MIE5hbWVzcGFjZQogKi8KZGVmaW5lKCdTSU1QTEVQSUVfTkFNRVNQQUNFX1hIVE1MJywgJ2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwnKTsKCi8qKgogKiBJQU5BIExpbmsgUmVsYXRpb25zIFJlZ2lzdHJ5CiAqLwpkZWZpbmUoJ1NJTVBMRVBJRV9JQU5BX0xJTktfUkVMQVRJT05TX1JFR0lTVFJZJywgJ2h0dHA6Ly93d3cuaWFuYS5vcmcvYXNzaWdubWVudHMvcmVsYXRpb24vJyk7CgovKioKICogV2hldGhlciB3ZSdyZSBydW5uaW5nIG9uIFBIUDUKICovCmRlZmluZSgnU0lNUExFUElFX1BIUDUnLCB2ZXJzaW9uX2NvbXBhcmUoUEhQX1ZFUlNJT04sICc1LjAuMCcsICc+PScpKTsKCi8qKgogKiBObyBmaWxlIHNvdXJjZQogKi8KZGVmaW5lKCdTSU1QTEVQSUVfRklMRV9TT1VSQ0VfTk9ORScsIDApOwoKLyoqCiAqIFJlbW90ZSBmaWxlIHNvdXJjZQogKi8KZGVmaW5lKCdTSU1QTEVQSUVfRklMRV9TT1VSQ0VfUkVNT1RFJywgMSk7CgovKioKICogTG9jYWwgZmlsZSBzb3VyY2UKICovCmRlZmluZSgnU0lNUExFUElFX0ZJTEVfU09VUkNFX0xPQ0FMJywgMik7CgovKioKICogZnNvY2tvcGVuKCkgZmlsZSBzb3VyY2UKICovCmRlZmluZSgnU0lNUExFUElFX0ZJTEVfU09VUkNFX0ZTT0NLT1BFTicsIDQpOwoKLyoqCiAqIGNVUkwgZmlsZSBzb3VyY2UKICovCmRlZmluZSgnU0lNUExFUElFX0ZJTEVfU09VUkNFX0NVUkwnLCA4KTsKCi8qKgogKiBmaWxlX2dldF9jb250ZW50cygpIGZpbGUgc291cmNlCiAqLwpkZWZpbmUoJ1NJTVBMRVBJRV9GSUxFX1NPVVJDRV9GSUxFX0dFVF9DT05URU5UUycsIDE2KTsKCi8qKgogKiBTaW1wbGVQaWUKICoKICogQHBhY2thZ2UgU2ltcGxlUGllCiAqIEB2ZXJzaW9uICJSYXp6bGViZXJyeSIKICogQGNvcHlyaWdodCAyMDA0LTIwMDcgUnlhbiBQYXJtYW4sIEdlb2ZmcmV5IFNuZWRkb24KICogQGF1dGhvciBSeWFuIFBhcm1hbgogKiBAYXV0aG9yIEdlb2ZmcmV5IFNuZWRkb24KICogQHRvZG8gT3B0aW9uIGZvciB0eXBlIG9mIGZldGNoaW5nIChjYWNoZSwgbm90IG1vZGlmaWVkIGhlYWRlciwgZmV0Y2gsIGV0Yy4pCiAqLwpjbGFzcyBTaW1wbGVQaWUKewoJLyoqCgkgKiBAdmFyIGFycmF5IFJhdyBkYXRhCgkgKiBAYWNjZXNzIHByaXZhdGUKCSAqLwoJdmFyICRkYXRhID0gYXJyYXkoKTsKCgkvKioKCSAqIEB2YXIgbWl4ZWQgRXJyb3Igc3RyaW5nCgkgKiBAYWNjZXNzIHByaXZhdGUKCSAqLwoJdmFyICRlcnJvcjsKCgkvKioKCSAqIEB2YXIgb2JqZWN0IEluc3RhbmNlIG9mIFNpbXBsZVBpZV9TYW5pdGl6ZSAob3Igb3RoZXIgY2xhc3MpCgkgKiBAc2VlIFNpbXBsZVBpZTo6c2V0X3Nhbml0aXplX2NsYXNzKCkKCSAqIEBhY2Nlc3MgcHJpdmF0ZQoJICovCgl2YXIgJHNhbml0aXplOwoKCS8qKgoJICogQHZhciBzdHJpbmcgU2ltcGxlUGllIFVzZXJhZ2VudAoJICogQHNlZSBTaW1wbGVQaWU6OnNldF91c2VyYWdlbnQoKQoJICogQGFjY2VzcyBwcml2YXRlCgkgKi8KCXZhciAkdXNlcmFnZW50ID0gU0lNUExFUElFX1VTRVJBR0VOVDsKCgkvKioKCSAqIEB2YXIgc3RyaW5nIEZlZWQgVVJMCgkgKiBAc2VlIFNpbXBsZVBpZTo6c2V0X2ZlZWRfdXJsKCkKCSAqIEBhY2Nlc3MgcHJpdmF0ZQoJICovCgl2YXIgJGZlZWRfdXJsOwoKCS8qKgoJICogQHZhciBvYmplY3QgSW5zdGFuY2Ugb2YgU2ltcGxlUGllX0ZpbGUgdG8gdXNlIGFzIGEgZmVlZAoJICogQHNlZSBTaW1wbGVQaWU6OnNldF9maWxlKCkKCSAqIEBhY2Nlc3MgcHJpdmF0ZQoJICovCgl2YXIgJGZpbGU7CgoJLyoqCgkgKiBAdmFyIHN0cmluZyBSYXcgZmVlZCBkYXRhCgkgKiBAc2VlIFNpbXBsZVBpZTo6c2V0X3Jhd19kYXRhKCkKCSAqIEBhY2Nlc3MgcHJpdmF0ZQoJICovCgl2YXIgJHJhd19kYXRhOwoKCS8qKgoJICogQHZhciBpbnQgVGltZW91dCBmb3IgZmV0Y2hpbmcgcmVtb3RlIGZpbGVzCgkgKiBAc2VlIFNpbXBsZVBpZTo6c2V0X3RpbWVvdXQoKQoJICogQGFjY2VzcyBwcml2YXRlCgkgKi8KCXZhciAkdGltZW91dCA9IDEwOwoKCS8qKgoJICogQHZhciBib29sIEZvcmNlcyBmc29ja29wZW4oKSB0byBiZSB1c2VkIGZvciByZW1vdGUgZmlsZXMgaW5zdGVhZAoJICogb2YgY1VSTCwgZXZlbiBpZiBhIG5ldyBlbm91Z2ggdmVyc2lvbiBpcyBpbnN0YWxsZWQKCSAqIEBzZWUgU2ltcGxlUGllOjpmb3JjZV9mc29ja29wZW4oKQoJICogQGFjY2VzcyBwcml2YXRlCgkgKi8KCXZhciAkZm9yY2VfZnNvY2tvcGVuID0gZmFsc2U7CgoJLyoqCgkgKiBAdmFyIGJvb2wgRm9yY2UgdGhlIGdpdmVuIGRhdGEvVVJMIHRvIGJlIHRyZWF0ZWQgYXMgYSBmZWVkIG5vIG1hdHRlciB3aGF0CgkgKiBpdCBhcHBlYXJzIGxpa2UKCSAqIEBzZWUgU2ltcGxlUGllOjpmb3JjZV9mZWVkKCkKCSAqIEBhY2Nlc3MgcHJpdmF0ZQoJICovCgl2YXIgJGZvcmNlX2ZlZWQgPSBmYWxzZTsKCgkvKioKCSAqIEB2YXIgYm9vbCBFbmFibGUvRGlzYWJsZSBYTUwgZHVtcAoJICogQHNlZSBTaW1wbGVQaWU6OmVuYWJsZV94bWxfZHVtcCgpCgkgKiBAYWNjZXNzIHByaXZhdGUKCSAqLwoJdmFyICR4bWxfZHVtcCA9IGZhbHNlOwoKCS8qKgoJICogQHZhciBib29sIEVuYWJsZS9EaXNhYmxlIENhY2hpbmcKCSAqIEBzZWUgU2ltcGxlUGllOjplbmFibGVfY2FjaGUoKQoJICogQGFjY2VzcyBwcml2YXRlCgkgKi8KCXZhciAkY2FjaGUgPSB0cnVlOwoKCS8qKgoJICogQHZhciBpbnQgQ2FjaGUgZHVyYXRpb24gKGluIHNlY29uZHMpCgkgKiBAc2VlIFNpbXBsZVBpZTo6c2V0X2NhY2hlX2R1cmF0aW9uKCkKCSAqIEBhY2Nlc3MgcHJpdmF0ZQoJICovCgl2YXIgJGNhY2hlX2R1cmF0aW9uID0gMzYwMDsKCgkvKioKCSAqIEB2YXIgaW50IEF1dG8tZGlzY292ZXJ5IGNhY2hlIGR1cmF0aW9uIChpbiBzZWNvbmRzKQoJICogQHNlZSBTaW1wbGVQaWU6OnNldF9hdXRvZGlzY292ZXJ5X2NhY2hlX2R1cmF0aW9uKCkKCSAqIEBhY2Nlc3MgcHJpdmF0ZQoJICovCgl2YXIgJGF1dG9kaXNjb3ZlcnlfY2FjaGVfZHVyYXRpb24gPSA2MDQ4MDA7IC8vIDcgRGF5cy4KCgkvKioKCSAqIEB2YXIgc3RyaW5nIENhY2hlIGxvY2F0aW9uIChyZWxhdGl2ZSB0byBleGVjdXRpbmcgc2NyaXB0KQoJICogQHNlZSBTaW1wbGVQaWU6OnNldF9jYWNoZV9sb2NhdGlvbigpCgkgKiBAYWNjZXNzIHByaXZhdGUKCSAqLwoJdmFyICRjYWNoZV9sb2NhdGlvbiA9ICcuL2NhY2hlJzsKCgkvKioKCSAqIEB2YXIgc3RyaW5nIEZ1bmN0aW9uIHRoYXQgY3JlYXRlcyB0aGUgY2FjaGUgZmlsZW5hbWUKCSAqIEBzZWUgU2ltcGxlUGllOjpzZXRfY2FjaGVfbmFtZV9mdW5jdGlvbigpCgkgKiBAYWNjZXNzIHByaXZhdGUKCSAqLwoJdmFyICRjYWNoZV9uYW1lX2Z1bmN0aW9uID0gJ21kNSc7CgoJLyoqCgkgKiBAdmFyIGJvb2wgUmVvcmRlciBmZWVkIGJ5IGRhdGUgZGVzY2VuZGluZwoJICogQHNlZSBTaW1wbGVQaWU6OmVuYWJsZV9vcmRlcl9ieV9kYXRlKCkKCSAqIEBhY2Nlc3MgcHJpdmF0ZQoJICovCgl2YXIgJG9yZGVyX2J5X2RhdGUgPSB0cnVlOwoKCS8qKgoJICogQHZhciBtaXhlZCBGb3JjZSBpbnB1dCBlbmNvZGluZyB0byBiZSBzZXQgdG8gdGhlIGZvbGxvdyB2YWx1ZQoJICogKGZhbHNlLCBvciBhbnl0aGluZyB0eXBlLWNhc3QgdG8gZmFsc2UsIGRpc2FibGVzIHRoaXMgZmVhdHVyZSkKCSAqIEBzZWUgU2ltcGxlUGllOjpzZXRfaW5wdXRfZW5jb2RpbmcoKQoJICogQGFjY2VzcyBwcml2YXRlCgkgKi8KCXZhciAkaW5wdXRfZW5jb2RpbmcgPSBmYWxzZTsKCgkvKioKCSAqIEB2YXIgaW50IEZlZWQgQXV0b2Rpc2NvdmVyeSBMZXZlbAoJICogQHNlZSBTaW1wbGVQaWU6OnNldF9hdXRvZGlzY292ZXJ5X2xldmVsKCkKCSAqIEBhY2Nlc3MgcHJpdmF0ZQoJICovCgl2YXIgJGF1dG9kaXNjb3ZlcnkgPSBTSU1QTEVQSUVfTE9DQVRPUl9BTEw7CgoJLyoqCgkgKiBAdmFyIHN0cmluZyBDbGFzcyB1c2VkIGZvciBjYWNoaW5nIGZlZWRzCgkgKiBAc2VlIFNpbXBsZVBpZTo6c2V0X2NhY2hlX2NsYXNzKCkKCSAqIEBhY2Nlc3MgcHJpdmF0ZQoJICovCgl2YXIgJGNhY2hlX2NsYXNzID0gJ1NpbXBsZVBpZV9DYWNoZSc7CgoJLyoqCgkgKiBAdmFyIHN0cmluZyBDbGFzcyB1c2VkIGZvciBsb2NhdGluZyBmZWVkcwoJICogQHNlZSBTaW1wbGVQaWU6OnNldF9sb2NhdG9yX2NsYXNzKCkKCSAqIEBhY2Nlc3MgcHJpdmF0ZQoJICovCgl2YXIgJGxvY2F0b3JfY2xhc3MgPSAnU2ltcGxlUGllX0xvY2F0b3InOwoKCS8qKgoJICogQHZhciBzdHJpbmcgQ2xhc3MgdXNlZCBmb3IgcGFyc2luZyBmZWVkcwoJICogQHNlZSBTaW1wbGVQaWU6OnNldF9wYXJzZXJfY2xhc3MoKQoJICogQGFjY2VzcyBwcml2YXRlCgkgKi8KCXZhciAkcGFyc2VyX2NsYXNzID0gJ1NpbXBsZVBpZV9QYXJzZXInOwoKCS8qKgoJICogQHZhciBzdHJpbmcgQ2xhc3MgdXNlZCBmb3IgZmV0Y2hpbmcgZmVlZHMKCSAqIEBzZWUgU2ltcGxlUGllOjpzZXRfZmlsZV9jbGFzcygpCgkgKiBAYWNjZXNzIHByaXZhdGUKCSAqLwoJdmFyICRmaWxlX2NsYXNzID0gJ1NpbXBsZVBpZV9GaWxlJzsKCgkvKioKCSAqIEB2YXIgc3RyaW5nIENsYXNzIHVzZWQgZm9yIGl0ZW1zCgkgKiBAc2VlIFNpbXBsZVBpZTo6c2V0X2l0ZW1fY2xhc3MoKQoJICogQGFjY2VzcyBwcml2YXRlCgkgKi8KCXZhciAkaXRlbV9jbGFzcyA9ICdTaW1wbGVQaWVfSXRlbSc7CgoJLyoqCgkgKiBAdmFyIHN0cmluZyBDbGFzcyB1c2VkIGZvciBhdXRob3JzCgkgKiBAc2VlIFNpbXBsZVBpZTo6c2V0X2F1dGhvcl9jbGFzcygpCgkgKiBAYWNjZXNzIHByaXZhdGUKCSAqLwoJdmFyICRhdXRob3JfY2xhc3MgPSAnU2ltcGxlUGllX0F1dGhvcic7CgoJLyoqCgkgKiBAdmFyIHN0cmluZyBDbGFzcyB1c2VkIGZvciBjYXRlZ29yaWVzCgkgKiBAc2VlIFNpbXBsZVBpZTo6c2V0X2NhdGVnb3J5X2NsYXNzKCkKCSAqIEBhY2Nlc3MgcHJpdmF0ZQoJICovCgl2YXIgJGNhdGVnb3J5X2NsYXNzID0gJ1NpbXBsZVBpZV9DYXRlZ29yeSc7CgoJLyoqCgkgKiBAdmFyIHN0cmluZyBDbGFzcyB1c2VkIGZvciBlbmNsb3N1cmVzCgkgKiBAc2VlIFNpbXBsZVBpZTo6c2V0X2VuY2xvc3VyZXNfY2xhc3MoKQoJICogQGFjY2VzcyBwcml2YXRlCgkgKi8KCXZhciAkZW5jbG9zdXJlX2NsYXNzID0gJ1NpbXBsZVBpZV9FbmNsb3N1cmUnOwoKCS8qKgoJICogQHZhciBzdHJpbmcgQ2xhc3MgdXNlZCBmb3IgTWVkaWEgUlNTIDxtZWRpYTp0ZXh0PiBjYXB0aW9ucwoJICogQHNlZSBTaW1wbGVQaWU6OnNldF9jYXB0aW9uX2NsYXNzKCkKCSAqIEBhY2Nlc3MgcHJpdmF0ZQoJICovCgl2YXIgJGNhcHRpb25fY2xhc3MgPSAnU2ltcGxlUGllX0NhcHRpb24nOwoKCS8qKgoJICogQHZhciBzdHJpbmcgQ2xhc3MgdXNlZCBmb3IgTWVkaWEgUlNTIDxtZWRpYTpjb3B5cmlnaHQ+CgkgKiBAc2VlIFNpbXBsZVBpZTo6c2V0X2NvcHlyaWdodF9jbGFzcygpCgkgKiBAYWNjZXNzIHByaXZhdGUKCSAqLwoJdmFyICRjb3B5cmlnaHRfY2xhc3MgPSAnU2ltcGxlUGllX0NvcHlyaWdodCc7CgoJLyoqCgkgKiBAdmFyIHN0cmluZyBDbGFzcyB1c2VkIGZvciBNZWRpYSBSU1MgPG1lZGlhOmNyZWRpdD4KCSAqIEBzZWUgU2ltcGxlUGllOjpzZXRfY3JlZGl0X2NsYXNzKCkKCSAqIEBhY2Nlc3MgcHJpdmF0ZQoJICovCgl2YXIgJGNyZWRpdF9jbGFzcyA9ICdTaW1wbGVQaWVfQ3JlZGl0JzsKCgkvKioKCSAqIEB2YXIgc3RyaW5nIENsYXNzIHVzZWQgZm9yIE1lZGlhIFJTUyA8bWVkaWE6cmF0aW5nPgoJICogQHNlZSBTaW1wbGVQaWU6OnNldF9yYXRpbmdfY2xhc3MoKQoJICogQGFjY2VzcyBwcml2YXRlCgkgKi8KCXZhciAkcmF0aW5nX2NsYXNzID0gJ1NpbXBsZVBpZV9SYXRpbmcnOwoKCS8qKgoJICogQHZhciBzdHJpbmcgQ2xhc3MgdXNlZCBmb3IgTWVkaWEgUlNTIDxtZWRpYTpyZXN0cmljdGlvbj4KCSAqIEBzZWUgU2ltcGxlUGllOjpzZXRfcmVzdHJpY3Rpb25fY2xhc3MoKQoJICogQGFjY2VzcyBwcml2YXRlCgkgKi8KCXZhciAkcmVzdHJpY3Rpb25fY2xhc3MgPSAnU2ltcGxlUGllX1Jlc3RyaWN0aW9uJzsKCgkvKioKCSAqIEB2YXIgc3RyaW5nIENsYXNzIHVzZWQgZm9yIGNvbnRlbnQtdHlwZSBzbmlmZmluZwoJICogQHNlZSBTaW1wbGVQaWU6OnNldF9jb250ZW50X3R5cGVfc25pZmZlcl9jbGFzcygpCgkgKiBAYWNjZXNzIHByaXZhdGUKCSAqLwoJdmFyICRjb250ZW50X3R5cGVfc25pZmZlcl9jbGFzcyA9ICdTaW1wbGVQaWVfQ29udGVudF9UeXBlX1NuaWZmZXInOwoKCS8qKgoJICogQHZhciBzdHJpbmcgQ2xhc3MgdXNlZCBmb3IgaXRlbSBzb3VyY2VzLgoJICogQHNlZSBTaW1wbGVQaWU6OnNldF9zb3VyY2VfY2xhc3MoKQoJICogQGFjY2VzcyBwcml2YXRlCgkgKi8KCXZhciAkc291cmNlX2NsYXNzID0gJ1NpbXBsZVBpZV9Tb3VyY2UnOwoKCS8qKgoJICogQHZhciBtaXhlZCBTZXQgamF2YXNjcmlwdCBxdWVyeSBzdHJpbmcgcGFyYW1ldGVyIChmYWxzZSwgb3IKCSAqIGFueXRoaW5nIHR5cGUtY2FzdCB0byBmYWxzZSwgZGlzYWJsZXMgdGhpcyBmZWF0dXJlKQoJICogQHNlZSBTaW1wbGVQaWU6OnNldF9qYXZhc2NyaXB0KCkKCSAqIEBhY2Nlc3MgcHJpdmF0ZQoJICovCgl2YXIgJGphdmFzY3JpcHQgPSAnanMnOwoKCS8qKgoJICogQHZhciBpbnQgTWF4aW11bSBudW1iZXIgb2YgZmVlZHMgdG8gY2hlY2sgd2l0aCBhdXRvZGlzY292ZXJ5CgkgKiBAc2VlIFNpbXBsZVBpZTo6c2V0X21heF9jaGVja2VkX2ZlZWRzKCkKCSAqIEBhY2Nlc3MgcHJpdmF0ZQoJICovCgl2YXIgJG1heF9jaGVja2VkX2ZlZWRzID0gMTA7CgoJLyoqCgkgKiBAdmFyIHN0cmluZyBXZWItYWNjZXNzaWJsZSBwYXRoIHRvIHRoZSBoYW5kbGVyX2Zhdmljb24ucGhwIGZpbGUuCgkgKiBAc2VlIFNpbXBsZVBpZTo6c2V0X2Zhdmljb25faGFuZGxlcigpCgkgKiBAYWNjZXNzIHByaXZhdGUKCSAqLwoJdmFyICRmYXZpY29uX2hhbmRsZXIgPSAnJzsKCgkvKioKCSAqIEB2YXIgc3RyaW5nIFdlYi1hY2Nlc3NpYmxlIHBhdGggdG8gdGhlIGhhbmRsZXJfaW1hZ2UucGhwIGZpbGUuCgkgKiBAc2VlIFNpbXBsZVBpZTo6c2V0X2ltYWdlX2hhbmRsZXIoKQoJICogQGFjY2VzcyBwcml2YXRlCgkgKi8KCXZhciAkaW1hZ2VfaGFuZGxlciA9ICcnOwoKCS8qKgoJICogQHZhciBhcnJheSBTdG9yZXMgdGhlIFVSTHMgd2hlbiBtdWx0aXBsZSBmZWVkcyBhcmUgYmVpbmcgaW5pdGlhbGl6ZWQuCgkgKiBAc2VlIFNpbXBsZVBpZTo6c2V0X2ZlZWRfdXJsKCkKCSAqIEBhY2Nlc3MgcHJpdmF0ZQoJICovCgl2YXIgJG11bHRpZmVlZF91cmwgPSBhcnJheSgpOwoKCS8qKgoJICogQHZhciBhcnJheSBTdG9yZXMgU2ltcGxlUGllIG9iamVjdHMgd2hlbiBtdWx0aXBsZSBmZWVkcyBpbml0aWFsaXplZC4KCSAqIEBhY2Nlc3MgcHJpdmF0ZQoJICovCgl2YXIgJG11bHRpZmVlZF9vYmplY3RzID0gYXJyYXkoKTsKCgkvKioKCSAqIEB2YXIgYXJyYXkgU3RvcmVzIHRoZSBnZXRfb2JqZWN0X3ZhcnMoKSBhcnJheSBmb3IgdXNlIHdpdGggbXVsdGlmZWVkcy4KCSAqIEBzZWUgU2ltcGxlUGllOjpzZXRfZmVlZF91cmwoKQoJICogQGFjY2VzcyBwcml2YXRlCgkgKi8KCXZhciAkY29uZmlnX3NldHRpbmdzID0gbnVsbDsKCgkvKioKCSAqIEB2YXIgaW50ZWdlciBTdG9yZXMgdGhlIG51bWJlciBvZiBpdGVtcyB0byByZXR1cm4gcGVyLWZlZWQgd2l0aCBtdWx0aWZlZWRzLgoJICogQHNlZSBTaW1wbGVQaWU6OnNldF9pdGVtX2xpbWl0KCkKCSAqIEBhY2Nlc3MgcHJpdmF0ZQoJICovCgl2YXIgJGl0ZW1fbGltaXQgPSAwOwoKCS8qKgoJICogQHZhciBhcnJheSBTdG9yZXMgdGhlIGRlZmF1bHQgYXR0cmlidXRlcyB0byBiZSBzdHJpcHBlZCBieSBzdHJpcF9hdHRyaWJ1dGVzKCkuCgkgKiBAc2VlIFNpbXBsZVBpZTo6c3RyaXBfYXR0cmlidXRlcygpCgkgKiBAYWNjZXNzIHByaXZhdGUKCSAqLwoJdmFyICRzdHJpcF9hdHRyaWJ1dGVzID0gYXJyYXkoJ2Jnc291bmQnLCAnY2xhc3MnLCAnZXhwcicsICdpZCcsICdzdHlsZScsICdvbmNsaWNrJywgJ29uZXJyb3InLCAnb25maW5pc2gnLCAnb25tb3VzZW92ZXInLCAnb25tb3VzZW91dCcsICdvbmZvY3VzJywgJ29uYmx1cicsICdsb3dzcmMnLCAnZHluc3JjJyk7CgoJLyoqCgkgKiBAdmFyIGFycmF5IFN0b3JlcyB0aGUgZGVmYXVsdCB0YWdzIHRvIGJlIHN0cmlwcGVkIGJ5IHN0cmlwX2h0bWx0YWdzKCkuCgkgKiBAc2VlIFNpbXBsZVBpZTo6c3RyaXBfaHRtbHRhZ3MoKQoJICogQGFjY2VzcyBwcml2YXRlCgkgKi8KCXZhciAkc3RyaXBfaHRtbHRhZ3MgPSBhcnJheSgnYmFzZScsICdibGluaycsICdib2R5JywgJ2RvY3R5cGUnLCAnZW1iZWQnLCAnZm9udCcsICdmb3JtJywgJ2ZyYW1lJywgJ2ZyYW1lc2V0JywgJ2h0bWwnLCAnaWZyYW1lJywgJ2lucHV0JywgJ21hcnF1ZWUnLCAnbWV0YScsICdub3NjcmlwdCcsICdvYmplY3QnLCAncGFyYW0nLCAnc2NyaXB0JywgJ3N0eWxlJyk7CgoJLyoqCgkgKiBUaGUgU2ltcGxlUGllIGNsYXNzIGNvbnRhaW5zIGZlZWQgbGV2ZWwgZGF0YSBhbmQgb3B0aW9ucwoJICoKCSAqIFRoZXJlIGFyZSB0d28gd2F5cyB0aGF0IHlvdSBjYW4gY3JlYXRlIGEgbmV3IFNpbXBsZVBpZSBvYmplY3QuIFRoZSBmaXJzdAoJICogaXMgYnkgcGFzc2luZyBhIGZlZWQgVVJMIGFzIGEgcGFyYW1ldGVyIHRvIHRoZSBTaW1wbGVQaWUgY29uc3RydWN0b3IKCSAqIChhcyB3ZWxsIGFzIG9wdGlvbmFsbHkgc2V0dGluZyB0aGUgY2FjaGUgbG9jYXRpb24gYW5kIGNhY2hlIGV4cGlyeSkuIFRoaXMKCSAqIHdpbGwgaW5pdGlhbGlzZSB0aGUgd2hvbGUgZmVlZCB3aXRoIGFsbCBvZiB0aGUgZGVmYXVsdCBzZXR0aW5ncywgYW5kIHlvdQoJICogY2FuIGJlZ2luIGFjY2Vzc2luZyBtZXRob2RzIGFuZCBwcm9wZXJ0aWVzIGltbWVkaWF0ZWx5LgoJICoKCSAqIFRoZSBzZWNvbmQgd2F5IGlzIHRvIGNyZWF0ZSB0aGUgU2ltcGxlUGllIG9iamVjdCB3aXRoIG5vIHBhcmFtZXRlcnMKCSAqIGF0IGFsbC4gVGhpcyB3aWxsIGVuYWJsZSB5b3UgdG8gc2V0IGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gQWZ0ZXIgc2V0dGluZwoJICogdGhlbSwgeW91IG11c3QgaW5pdGlhbGlzZSB0aGUgZmVlZCB1c2luZyAkZmVlZC0+aW5pdCgpLiBBdCB0aGF0IHBvaW50IHRoZQoJICogb2JqZWN0J3MgbWV0aG9kcyBhbmQgcHJvcGVydGllcyB3aWxsIGJlIGF2YWlsYWJsZSB0byB5b3UuIFRoaXMgZm9ybWF0IGlzCgkgKiB3aGF0IGlzIHVzZWQgdGhyb3VnaG91dCB0aGlzIGRvY3VtZW50YXRpb24uCgkgKgoJICogQGFjY2VzcyBwdWJsaWMKCSAqIEBzaW5jZSAxLjAgUHJldmlldyBSZWxlYXNlCgkgKiBAcGFyYW0gc3RyaW5nICRmZWVkX3VybCBUaGlzIGlzIHRoZSBVUkwgeW91IHdhbnQgdG8gcGFyc2UuCgkgKiBAcGFyYW0gc3RyaW5nICRjYWNoZV9sb2NhdGlvbiBUaGlzIGlzIHdoZXJlIHlvdSB3YW50IHRoZSBjYWNoZSB0byBiZSBzdG9yZWQuCgkgKiBAcGFyYW0gaW50ICRjYWNoZV9kdXJhdGlvbiBUaGlzIGlzIHRoZSBudW1iZXIgb2Ygc2Vjb25kcyB0aGF0IHlvdSB3YW50IHRvIHN0b3JlIHRoZSBjYWNoZSBmaWxlIGZvci4KCSAqLwoJZnVuY3Rpb24gU2ltcGxlUGllKCRmZWVkX3VybCA9IG51bGwsICRjYWNoZV9sb2NhdGlvbiA9IG51bGwsICRjYWNoZV9kdXJhdGlvbiA9IG51bGwpCgl7CgkJLy8gT3RoZXIgb2JqZWN0cywgaW5zdGFuY2VzIGNyZWF0ZWQgaGVyZSBzbyB3ZSBjYW4gc2V0IG9wdGlvbnMgb24gdGhlbQoJCSR0aGlzLT5zYW5pdGl6ZSA9JiBuZXcgU2ltcGxlUGllX1Nhbml0aXplOwoKCQkvLyBTZXQgb3B0aW9ucyBpZiB0aGV5J3JlIHBhc3NlZCB0byB0aGUgY29uc3RydWN0b3IKCQlpZiAoJGNhY2hlX2xvY2F0aW9uICE9PSBudWxsKQoJCXsKCQkJJHRoaXMtPnNldF9jYWNoZV9sb2NhdGlvbigkY2FjaGVfbG9jYXRpb24pOwoJCX0KCgkJaWYgKCRjYWNoZV9kdXJhdGlvbiAhPT0gbnVsbCkKCQl7CgkJCSR0aGlzLT5zZXRfY2FjaGVfZHVyYXRpb24oJGNhY2hlX2R1cmF0aW9uKTsKCQl9CgoJCS8vIE9ubHkgaW5pdCB0aGUgc2NyaXB0IGlmIHdlJ3JlIHBhc3NlZCBhIGZlZWQgVVJMCgkJaWYgKCRmZWVkX3VybCAhPT0gbnVsbCkKCQl7CgkJCSR0aGlzLT5zZXRfZmVlZF91cmwoJGZlZWRfdXJsKTsKCQkJJHRoaXMtPmluaXQoKTsKCQl9Cgl9CgoJLyoqCgkgKiBVc2VkIGZvciBjb252ZXJ0aW5nIG9iamVjdCB0byBhIHN0cmluZwoJICovCglmdW5jdGlvbiBfX3RvU3RyaW5nKCkKCXsKCQlyZXR1cm4gbWQ1KHNlcmlhbGl6ZSgkdGhpcy0+ZGF0YSkpOwoJfQoKCS8qKgoJICogUmVtb3ZlIGl0ZW1zIHRoYXQgbGluayBiYWNrIHRvIHRoaXMgYmVmb3JlIGRlc3Ryb3lpbmcgdGhpcyBvYmplY3QKCSAqLwoJZnVuY3Rpb24gX19kZXN0cnVjdCgpCgl7CgkJaWYgKCFlbXB0eSgkdGhpcy0+ZGF0YVsnaXRlbXMnXSkpCgkJewoJCQlmb3JlYWNoICgkdGhpcy0+ZGF0YVsnaXRlbXMnXSBhcyAkaXRlbSkKCQkJewoJCQkJJGl0ZW0tPl9fZGVzdHJ1Y3QoKTsKCQkJfQoJCQl1bnNldCgkdGhpcy0+ZGF0YVsnaXRlbXMnXSk7CgkJfQoJCWlmICghZW1wdHkoJHRoaXMtPmRhdGFbJ29yZGVyZWRfaXRlbXMnXSkpCgkJewoJCQlmb3JlYWNoICgkdGhpcy0+ZGF0YVsnb3JkZXJlZF9pdGVtcyddIGFzICRpdGVtKQoJCQl7CgkJCQkkaXRlbS0+X19kZXN0cnVjdCgpOwoJCQl9CgkJCXVuc2V0KCR0aGlzLT5kYXRhWydvcmRlcmVkX2l0ZW1zJ10pOwoJCX0KCX0KCgkvKioKCSAqIEZvcmNlIHRoZSBnaXZlbiBkYXRhL1VSTCB0byBiZSB0cmVhdGVkIGFzIGEgZmVlZCBubyBtYXR0ZXIgd2hhdCBpdAoJICogYXBwZWFycyBsaWtlCgkgKgoJICogQGFjY2VzcyBwdWJsaWMKCSAqIEBzaW5jZSAxLjEKCSAqIEBwYXJhbSBib29sICRlbmFibGUgRm9yY2UgdGhlIGdpdmVuIGRhdGEvVVJMIHRvIGJlIHRyZWF0ZWQgYXMgYSBmZWVkCgkgKi8KCWZ1bmN0aW9uIGZvcmNlX2ZlZWQoJGVuYWJsZSA9IGZhbHNlKQoJewoJCSR0aGlzLT5mb3JjZV9mZWVkID0gKGJvb2wpICRlbmFibGU7Cgl9CgoJLyoqCgkgKiBUaGlzIGlzIHRoZSBVUkwgb2YgdGhlIGZlZWQgeW91IHdhbnQgdG8gcGFyc2UuCgkgKgoJICogVGhpcyBhbGxvd3MgeW91IHRvIGVudGVyIHRoZSBVUkwgb2YgdGhlIGZlZWQgeW91IHdhbnQgdG8gcGFyc2UsIG9yIHRoZQoJICogd2Vic2l0ZSB5b3Ugd2FudCB0byB0cnkgdG8gdXNlIGF1dG8tZGlzY292ZXJ5IG9uLiBUaGlzIHRha2VzIHByaW9yaXR5CgkgKiBvdmVyIGFueSBzZXQgcmF3IGRhdGEuCgkgKgoJICogWW91IGNhbiBzZXQgbXVsdGlwbGUgZmVlZHMgdG8gbWFzaCB0b2dldGhlciBieSBwYXNzaW5nIGFuIGFycmF5IGluc3RlYWQKCSAqIG9mIGEgc3RyaW5nIGZvciB0aGUgJHVybC4gUmVtZW1iZXIgdGhhdCB3aXRoIGVhY2ggYWRkaXRpb25hbCBmZWVkIGNvbWVzCgkgKiBhZGRpdGlvbmFsIHByb2Nlc3NpbmcgYW5kIHJlc291cmNlcy4KCSAqCgkgKiBAYWNjZXNzIHB1YmxpYwoJICogQHNpbmNlIDEuMCBQcmV2aWV3IFJlbGVhc2UKCSAqIEBwYXJhbSBtaXhlZCAkdXJsIFRoaXMgaXMgdGhlIFVSTCAob3IgYXJyYXkgb2YgVVJMcykgdGhhdCB5b3Ugd2FudCB0byBwYXJzZS4KCSAqIEBzZWUgU2ltcGxlUGllOjpzZXRfcmF3X2RhdGEoKQoJICovCglmdW5jdGlvbiBzZXRfZmVlZF91cmwoJHVybCkKCXsKCQlpZiAoaXNfYXJyYXkoJHVybCkpCgkJewoJCQkkdGhpcy0+bXVsdGlmZWVkX3VybCA9IGFycmF5KCk7CgkJCWZvcmVhY2ggKCR1cmwgYXMgJHZhbHVlKQoJCQl7CgkJCQkkdGhpcy0+bXVsdGlmZWVkX3VybFtdID0gU2ltcGxlUGllX01pc2M6OmZpeF9wcm90b2NvbCgkdmFsdWUsIDEpOwoJCQl9CgkJfQoJCWVsc2UKCQl7CgkJCSR0aGlzLT5mZWVkX3VybCA9IFNpbXBsZVBpZV9NaXNjOjpmaXhfcHJvdG9jb2woJHVybCwgMSk7CgkJfQoJfQoKCS8qKgoJICogUHJvdmlkZXMgYW4gaW5zdGFuY2Ugb2YgU2ltcGxlUGllX0ZpbGUgdG8gdXNlIGFzIGEgZmVlZAoJICoKCSAqIEBhY2Nlc3MgcHVibGljCgkgKiBAcGFyYW0gb2JqZWN0ICYkZmlsZSBJbnN0YW5jZSBvZiBTaW1wbGVQaWVfRmlsZSAob3Igc3ViY2xhc3MpCgkgKiBAcmV0dXJuIGJvb2wgVHJ1ZSBvbiBzdWNjZXNzLCBmYWxzZSBvbiBmYWlsdXJlCgkgKi8KCWZ1bmN0aW9uIHNldF9maWxlKCYkZmlsZSkKCXsKCQlpZiAoaXNfYSgkZmlsZSwgJ1NpbXBsZVBpZV9GaWxlJykpCgkJewoJCQkkdGhpcy0+ZmVlZF91cmwgPSAkZmlsZS0+dXJsOwoJCQkkdGhpcy0+ZmlsZSA9JiAkZmlsZTsKCQkJcmV0dXJuIHRydWU7CgkJfQoJCXJldHVybiBmYWxzZTsKCX0KCgkvKioKCSAqIEFsbG93cyB5b3UgdG8gdXNlIGEgc3RyaW5nIG9mIFJTUy9BdG9tIGRhdGEgaW5zdGVhZCBvZiBhIHJlbW90ZSBmZWVkLgoJICoKCSAqIElmIHlvdSBoYXZlIGEgZmVlZCBhdmFpbGFibGUgYXMgYSBzdHJpbmcgaW4gUEhQLCB5b3UgY2FuIHRlbGwgU2ltcGxlUGllCgkgKiB0byBwYXJzZSB0aGF0IGRhdGEgc3RyaW5nIGluc3RlYWQgb2YgYSByZW1vdGUgZmVlZC4gQW55IHNldCBmZWVkIFVSTAoJICogdGFrZXMgcHJlY2VkZW5jZS4KCSAqCgkgKiBAYWNjZXNzIHB1YmxpYwoJICogQHNpbmNlIDEuMCBCZXRhIDMKCSAqIEBwYXJhbSBzdHJpbmcgJGRhdGEgUlNTIG9yIEF0b20gZGF0YSBhcyBhIHN0cmluZy4KCSAqIEBzZWUgU2ltcGxlUGllOjpzZXRfZmVlZF91cmwoKQoJICovCglmdW5jdGlvbiBzZXRfcmF3X2RhdGEoJGRhdGEpCgl7CgkJJHRoaXMtPnJhd19kYXRhID0gJGRhdGE7Cgl9CgoJLyoqCgkgKiBBbGxvd3MgeW91IHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IHRpbWVvdXQgZm9yIGZldGNoaW5nIHJlbW90ZSBmZWVkcy4KCSAqCgkgKiBUaGlzIGFsbG93cyB5b3UgdG8gY2hhbmdlIHRoZSBtYXhpbXVtIHRpbWUgdGhlIGZlZWQncyBzZXJ2ZXIgdG8gcmVzcG9uZAoJICogYW5kIHNlbmQgdGhlIGZlZWQgYmFjay4KCSAqCgkgKiBAYWNjZXNzIHB1YmxpYwoJICogQHNpbmNlIDEuMCBCZXRhIDMKCSAqIEBwYXJhbSBpbnQgJHRpbWVvdXQgVGhlIG1heGltdW0gbnVtYmVyIG9mIHNlY29uZHMgdG8gc3BlbmQgd2FpdGluZyB0byByZXRyaWV2ZSBhIGZlZWQuCgkgKi8KCWZ1bmN0aW9uIHNldF90aW1lb3V0KCR0aW1lb3V0ID0gMTApCgl7CgkJJHRoaXMtPnRpbWVvdXQgPSAoaW50KSAkdGltZW91dDsKCX0KCgkvKioKCSAqIEZvcmNlcyBTaW1wbGVQaWUgdG8gdXNlIGZzb2Nrb3BlbigpIGluc3RlYWQgb2YgdGhlIHByZWZlcnJlZCBjVVJMCgkgKiBmdW5jdGlvbnMuCgkgKgoJICogQGFjY2VzcyBwdWJsaWMKCSAqIEBzaW5jZSAxLjAgQmV0YSAzCgkgKiBAcGFyYW0gYm9vbCAkZW5hYmxlIEZvcmNlIGZzb2Nrb3BlbigpIHRvIGJlIHVzZWQKCSAqLwoJZnVuY3Rpb24gZm9yY2VfZnNvY2tvcGVuKCRlbmFibGUgPSBmYWxzZSkKCXsKCQkkdGhpcy0+Zm9yY2VfZnNvY2tvcGVuID0gKGJvb2wpICRlbmFibGU7Cgl9CgoJLyoqCgkgKiBPdXRwdXRzIHRoZSByYXcgWE1MIGNvbnRlbnQgb2YgdGhlIGZlZWQsIGFmdGVyIGl0IGhhcyBnb25lIHRocm91Z2gKCSAqIFNpbXBsZVBpZSdzIGZpbHRlcnMuCgkgKgoJICogVXNlZCBvbmx5IGZvciBkZWJ1Z2dpbmcsIHRoaXMgZnVuY3Rpb24gd2lsbCBvdXRwdXQgdGhlIFhNTCBjb250ZW50IGFzCgkgKiB0ZXh0L3htbC4gV2hlbiBTaW1wbGVQaWUgcmVhZHMgaW4gYSBmZWVkLCBpdCBkb2VzIGEgYml0IG9mIGNsZWFuaW5nIHVwCgkgKiBiZWZvcmUgdHJ5aW5nIHRvIHBhcnNlIGl0LiBNYW55IHBhcnRzIG9mIHRoZSBmZWVkIGFyZSByZS13cml0dGVuIGluCgkgKiBtZW1vcnksIGFuZCBpbiB0aGUgZW5kLCB5b3UgaGF2ZSBhIHBhcnNhYmxlIGZlZWQuIFhNTCBkdW1wIHNob3dzIHlvdSB0aGUKCSAqIGFjdHVhbCBYTUwgdGhhdCBTaW1wbGVQaWUgdHJpZXMgdG8gcGFyc2UsIHdoaWNoIG1heSBvciBtYXkgbm90IGJlIHZlcnkKCSAqIGRpZmZlcmVudCBmcm9tIHRoZSBvcmlnaW5hbCBmZWVkLgoJICoKCSAqIEBhY2Nlc3MgcHVibGljCgkgKiBAc2luY2UgMS4wIFByZXZpZXcgUmVsZWFzZQoJICogQHBhcmFtIGJvb2wgJGVuYWJsZSBFbmFibGUgWE1MIGR1bXAKCSAqLwoJZnVuY3Rpb24gZW5hYmxlX3htbF9kdW1wKCRlbmFibGUgPSBmYWxzZSkKCXsKCQkkdGhpcy0+eG1sX2R1bXAgPSAoYm9vbCkgJGVuYWJsZTsKCX0KCgkvKioKCSAqIEVuYWJsZXMvZGlzYWJsZXMgY2FjaGluZyBpbiBTaW1wbGVQaWUuCgkgKgoJICogVGhpcyBvcHRpb24gYWxsb3dzIHlvdSB0byBkaXNhYmxlIGNhY2hpbmcgYWxsLXRvZ2V0aGVyIGluIFNpbXBsZVBpZS4KCSAqIEhvd2V2ZXIsIGRpc2FibGluZyB0aGUgY2FjaGUgY2FuIGxlYWQgdG8gbG9uZ2VyIGxvYWQgdGltZXMuCgkgKgoJICogQGFjY2VzcyBwdWJsaWMKCSAqIEBzaW5jZSAxLjAgUHJldmlldyBSZWxlYXNlCgkgKiBAcGFyYW0gYm9vbCAkZW5hYmxlIEVuYWJsZSBjYWNoaW5nCgkgKi8KCWZ1bmN0aW9uIGVuYWJsZV9jYWNoZSgkZW5hYmxlID0gdHJ1ZSkKCXsKCQkkdGhpcy0+Y2FjaGUgPSAoYm9vbCkgJGVuYWJsZTsKCX0KCgkvKioKCSAqIFNldCB0aGUgbGVuZ3RoIG9mIHRpbWUgKGluIHNlY29uZHMpIHRoYXQgdGhlIGNvbnRlbnRzIG9mIGEgZmVlZAoJICogd2lsbCBiZSBjYWNoZWQuCgkgKgoJICogQGFjY2VzcyBwdWJsaWMKCSAqIEBwYXJhbSBpbnQgJHNlY29uZHMgVGhlIGZlZWQgY29udGVudCBjYWNoZSBkdXJhdGlvbi4KCSAqLwoJZnVuY3Rpb24gc2V0X2NhY2hlX2R1cmF0aW9uKCRzZWNvbmRzID0gMzYwMCkKCXsKCQkkdGhpcy0+Y2FjaGVfZHVyYXRpb24gPSAoaW50KSAkc2Vjb25kczsKCX0KCgkvKioKCSAqIFNldCB0aGUgbGVuZ3RoIG9mIHRpbWUgKGluIHNlY29uZHMpIHRoYXQgdGhlIGF1dG9kaXNjb3ZlcmVkIGZlZWQKCSAqIFVSTCB3aWxsIGJlIGNhY2hlZC4KCSAqCgkgKiBAYWNjZXNzIHB1YmxpYwoJICogQHBhcmFtIGludCAkc2Vjb25kcyBUaGUgYXV0b2Rpc2NvdmVyZWQgZmVlZCBVUkwgY2FjaGUgZHVyYXRpb24uCgkgKi8KCWZ1bmN0aW9uIHNldF9hdXRvZGlzY292ZXJ5X2NhY2hlX2R1cmF0aW9uKCRzZWNvbmRzID0gNjA0ODAwKQoJewoJCSR0aGlzLT5hdXRvZGlzY292ZXJ5X2NhY2hlX2R1cmF0aW9uID0gKGludCkgJHNlY29uZHM7Cgl9CgoJLyoqCgkgKiBTZXQgdGhlIGZpbGUgc3lzdGVtIGxvY2F0aW9uIHdoZXJlIHRoZSBjYWNoZWQgZmlsZXMgc2hvdWxkIGJlIHN0b3JlZC4KCSAqCgkgKiBAYWNjZXNzIHB1YmxpYwoJICogQHBhcmFtIHN0cmluZyAkbG9jYXRpb24gVGhlIGZpbGUgc3lzdGVtIGxvY2F0aW9uLgoJICovCglmdW5jdGlvbiBzZXRfY2FjaGVfbG9jYXRpb24oJGxvY2F0aW9uID0gJy4vY2FjaGUnKQoJewoJCSR0aGlzLT5jYWNoZV9sb2NhdGlvbiA9IChzdHJpbmcpICRsb2NhdGlvbjsKCX0KCgkvKioKCSAqIERldGVybWluZXMgd2hldGhlciBmZWVkIGl0ZW1zIHNob3VsZCBiZSBzb3J0ZWQgaW50byByZXZlcnNlIGNocm9ub2xvZ2ljYWwgb3JkZXIuCgkgKgoJICogQGFjY2VzcyBwdWJsaWMKCSAqIEBwYXJhbSBib29sICRlbmFibGUgU29ydCBhcyByZXZlcnNlIGNocm9ub2xvZ2ljYWwgb3JkZXIuCgkgKi8KCWZ1bmN0aW9uIGVuYWJsZV9vcmRlcl9ieV9kYXRlKCRlbmFibGUgPSB0cnVlKQoJewoJCSR0aGlzLT5vcmRlcl9ieV9kYXRlID0gKGJvb2wpICRlbmFibGU7Cgl9CgoJLyoqCgkgKiBBbGxvd3MgeW91IHRvIG92ZXJyaWRlIHRoZSBjaGFyYWN0ZXIgZW5jb2RpbmcgcmVwb3J0ZWQgYnkgdGhlIGZlZWQuCgkgKgoJICogQGFjY2VzcyBwdWJsaWMKCSAqIEBwYXJhbSBzdHJpbmcgJGVuY29kaW5nIENoYXJhY3RlciBlbmNvZGluZy4KCSAqLwoJZnVuY3Rpb24gc2V0X2lucHV0X2VuY29kaW5nKCRlbmNvZGluZyA9IGZhbHNlKQoJewoJCWlmICgkZW5jb2RpbmcpCgkJewoJCQkkdGhpcy0+aW5wdXRfZW5jb2RpbmcgPSAoc3RyaW5nKSAkZW5jb2Rpbmc7CgkJfQoJCWVsc2UKCQl7CgkJCSR0aGlzLT5pbnB1dF9lbmNvZGluZyA9IGZhbHNlOwoJCX0KCX0KCgkvKioKCSAqIFNldCBob3cgbXVjaCBmZWVkIGF1dG9kaXNjb3ZlcnkgdG8gZG8KCSAqCgkgKiBAYWNjZXNzIHB1YmxpYwoJICogQHNlZSBTSU1QTEVQSUVfTE9DQVRPUl9OT05FCgkgKiBAc2VlIFNJTVBMRVBJRV9MT0NBVE9SX0FVVE9ESVNDT1ZFUlkKCSAqIEBzZWUgU0lNUExFUElFX0xPQ0FUT1JfTE9DQUxfRVhURU5TSU9OCgkgKiBAc2VlIFNJTVBMRVBJRV9MT0NBVE9SX0xPQ0FMX0JPRFkKCSAqIEBzZWUgU0lNUExFUElFX0xPQ0FUT1JfUkVNT1RFX0VYVEVOU0lPTgoJICogQHNlZSBTSU1QTEVQSUVfTE9DQVRPUl9SRU1PVEVfQk9EWQoJICogQHNlZSBTSU1QTEVQSUVfTE9DQVRPUl9BTEwKCSAqIEBwYXJhbSBpbnQgJGxldmVsIEZlZWQgQXV0b2Rpc2NvdmVyeSBMZXZlbCAobGV2ZWwgY2FuIGJlIGEKCSAqIGNvbWJpbmF0aW9uIG9mIHRoZSBhYm92ZSBjb25zdGFudHMsIHNlZSBiaXR3aXNlIE9SIG9wZXJhdG9yKQoJICovCglmdW5jdGlvbiBzZXRfYXV0b2Rpc2NvdmVyeV9sZXZlbCgkbGV2ZWwgPSBTSU1QTEVQSUVfTE9DQVRPUl9BTEwpCgl7CgkJJHRoaXMtPmF1dG9kaXNjb3ZlcnkgPSAoaW50KSAkbGV2ZWw7Cgl9CgoJLyoqCgkgKiBBbGxvd3MgeW91IHRvIGNoYW5nZSB3aGljaCBjbGFzcyBTaW1wbGVQaWUgdXNlcyBmb3IgY2FjaGluZy4KCSAqIFVzZWZ1bCB3aGVuIHlvdSBhcmUgb3ZlcmxvYWRpbmcgb3IgZXh0ZW5kaW5nIFNpbXBsZVBpZSdzIGRlZmF1bHQgY2xhc3Nlcy4KCSAqCgkgKiBAYWNjZXNzIHB1YmxpYwoJICogQHBhcmFtIHN0cmluZyAkY2xhc3MgTmFtZSBvZiBjdXN0b20gY2xhc3MuCgkgKiBAbGluayBodHRwOi8vcGhwLm5ldC9tYW51YWwvZW4va2V5d29yZC5leHRlbmRzLnBocCBQSFA0IGV4dGVuZHMgZG9jdW1lbnRhdGlvbgoJICogQGxpbmsgaHR0cDovL3BocC5uZXQvbWFudWFsL2VuL2xhbmd1YWdlLm9vcDUuYmFzaWMucGhwI2xhbmd1YWdlLm9vcDUuYmFzaWMuZXh0ZW5kcyBQSFA1IGV4dGVuZHMgZG9jdW1lbnRhdGlvbgoJICovCglmdW5jdGlvbiBzZXRfY2FjaGVfY2xhc3MoJGNsYXNzID0gJ1NpbXBsZVBpZV9DYWNoZScpCgl7CgkJaWYgKFNpbXBsZVBpZV9NaXNjOjppc19zdWJjbGFzc19vZigkY2xhc3MsICdTaW1wbGVQaWVfQ2FjaGUnKSkKCQl7CgkJCSR0aGlzLT5jYWNoZV9jbGFzcyA9ICRjbGFzczsKCQkJcmV0dXJuIHRydWU7CgkJfQoJCXJldHVybiBmYWxzZTsKCX0KCgkvKioKCSAqIEFsbG93cyB5b3UgdG8gY2hhbmdlIHdoaWNoIGNsYXNzIFNpbXBsZVBpZSB1c2VzIGZvciBhdXRvLWRpc2NvdmVyeS4KCSAqIFVzZWZ1bCB3aGVuIHlvdSBhcmUgb3ZlcmxvYWRpbmcgb3IgZXh0ZW5kaW5nIFNpbXBsZVBpZSdzIGRlZmF1bHQgY2xhc3Nlcy4KCSAqCgkgKiBAYWNjZXNzIHB1YmxpYwoJICogQHBhcmFtIHN0cmluZyAkY2xhc3MgTmFtZSBvZiBjdXN0b20gY2xhc3MuCgkgKiBAbGluayBodHRwOi8vcGhwLm5ldC9tYW51YWwvZW4va2V5d29yZC5leHRlbmRzLnBocCBQSFA0IGV4dGVuZHMgZG9jdW1lbnRhdGlvbgoJICogQGxpbmsgaHR0cDovL3BocC5uZXQvbWFudWFsL2VuL2xhbmd1YWdlLm9vcDUuYmFzaWMucGhwI2xhbmd1YWdlLm9vcDUuYmFzaWMuZXh0ZW5kcyBQSFA1IGV4dGVuZHMgZG9jdW1lbnRhdGlvbgoJICovCglmdW5jdGlvbiBzZXRfbG9jYXRvcl9jbGFzcygkY2xhc3MgPSAnU2ltcGxlUGllX0xvY2F0b3InKQoJewoJCWlmIChTaW1wbGVQaWVfTWlzYzo6aXNfc3ViY2xhc3Nfb2YoJGNsYXNzLCAnU2ltcGxlUGllX0xvY2F0b3InKSkKCQl7CgkJCSR0aGlzLT5sb2NhdG9yX2NsYXNzID0gJGNsYXNzOwoJCQlyZXR1cm4gdHJ1ZTsKCQl9CgkJcmV0dXJuIGZhbHNlOwoJfQoKCS8qKgoJICogQWxsb3dzIHlvdSB0byBjaGFuZ2Ugd2hpY2ggY2xhc3MgU2ltcGxlUGllIHVzZXMgZm9yIFhNTCBwYXJzaW5nLgoJICogVXNlZnVsIHdoZW4geW91IGFyZSBvdmVybG9hZGluZyBvciBleHRlbmRpbmcgU2ltcGxlUGllJ3MgZGVmYXVsdCBjbGFzc2VzLgoJICoKCSAqIEBhY2Nlc3MgcHVibGljCgkgKiBAcGFyYW0gc3RyaW5nICRjbGFzcyBOYW1lIG9mIGN1c3RvbSBjbGFzcy4KCSAqIEBsaW5rIGh0dHA6Ly9waHAubmV0L21hbnVhbC9lbi9rZXl3b3JkLmV4dGVuZHMucGhwIFBIUDQgZXh0ZW5kcyBkb2N1bWVudGF0aW9uCgkgKiBAbGluayBodHRwOi8vcGhwLm5ldC9tYW51YWwvZW4vbGFuZ3VhZ2Uub29wNS5iYXNpYy5waHAjbGFuZ3VhZ2Uub29wNS5iYXNpYy5leHRlbmRzIFBIUDUgZXh0ZW5kcyBkb2N1bWVudGF0aW9uCgkgKi8KCWZ1bmN0aW9uIHNldF9wYXJzZXJfY2xhc3MoJGNsYXNzID0gJ1NpbXBsZVBpZV9QYXJzZXInKQoJewoJCWlmIChTaW1wbGVQaWVfTWlzYzo6aXNfc3ViY2xhc3Nfb2YoJGNsYXNzLCAnU2ltcGxlUGllX1BhcnNlcicpKQoJCXsKCQkJJHRoaXMtPnBhcnNlcl9jbGFzcyA9ICRjbGFzczsKCQkJcmV0dXJuIHRydWU7CgkJfQoJCXJldHVybiBmYWxzZTsKCX0KCgkvKioKCSAqIEFsbG93cyB5b3UgdG8gY2hhbmdlIHdoaWNoIGNsYXNzIFNpbXBsZVBpZSB1c2VzIGZvciByZW1vdGUgZmlsZSBmZXRjaGluZy4KCSAqIFVzZWZ1bCB3aGVuIHlvdSBhcmUgb3ZlcmxvYWRpbmcgb3IgZXh0ZW5kaW5nIFNpbXBsZVBpZSdzIGRlZmF1bHQgY2xhc3Nlcy4KCSAqCgkgKiBAYWNjZXNzIHB1YmxpYwoJICogQHBhcmFtIHN0cmluZyAkY2xhc3MgTmFtZSBvZiBjdXN0b20gY2xhc3MuCgkgKiBAbGluayBodHRwOi8vcGhwLm5ldC9tYW51YWwvZW4va2V5d29yZC5leHRlbmRzLnBocCBQSFA0IGV4dGVuZHMgZG9jdW1lbnRhdGlvbgoJICogQGxpbmsgaHR0cDovL3BocC5uZXQvbWFudWFsL2VuL2xhbmd1YWdlLm9vcDUuYmFzaWMucGhwI2xhbmd1YWdlLm9vcDUuYmFzaWMuZXh0ZW5kcyBQSFA1IGV4dGVuZHMgZG9jdW1lbnRhdGlvbgoJICovCglmdW5jdGlvbiBzZXRfZmlsZV9jbGFzcygkY2xhc3MgPSAnU2ltcGxlUGllX0ZpbGUnKQoJewoJCWlmIChTaW1wbGVQaWVfTWlzYzo6aXNfc3ViY2xhc3Nfb2YoJGNsYXNzLCAnU2ltcGxlUGllX0ZpbGUnKSkKCQl7CgkJCSR0aGlzLT5maWxlX2NsYXNzID0gJGNsYXNzOwoJCQlyZXR1cm4gdHJ1ZTsKCQl9CgkJcmV0dXJuIGZhbHNlOwoJfQoKCS8qKgoJICogQWxsb3dzIHlvdSB0byBjaGFuZ2Ugd2hpY2ggY2xhc3MgU2ltcGxlUGllIHVzZXMgZm9yIGRhdGEgc2FuaXRpemF0aW9uLgoJICogVXNlZnVsIHdoZW4geW91IGFyZSBvdmVybG9hZGluZyBvciBleHRlbmRpbmcgU2ltcGxlUGllJ3MgZGVmYXVsdCBjbGFzc2VzLgoJICoKCSAqIEBhY2Nlc3MgcHVibGljCgkgKiBAcGFyYW0gc3RyaW5nICRjbGFzcyBOYW1lIG9mIGN1c3RvbSBjbGFzcy4KCSAqIEBsaW5rIGh0dHA6Ly9waHAubmV0L21hbnVhbC9lbi9rZXl3b3JkLmV4dGVuZHMucGhwIFBIUDQgZXh0ZW5kcyBkb2N1bWVudGF0aW9uCgkgKiBAbGluayBodHRwOi8vcGhwLm5ldC9tYW51YWwvZW4vbGFuZ3VhZ2Uub29wNS5iYXNpYy5waHAjbGFuZ3VhZ2Uub29wNS5iYXNpYy5leHRlbmRzIFBIUDUgZXh0ZW5kcyBkb2N1bWVudGF0aW9uCgkgKi8KCWZ1bmN0aW9uIHNldF9zYW5pdGl6ZV9jbGFzcygkY2xhc3MgPSAnU2ltcGxlUGllX1Nhbml0aXplJykKCXsKCQlpZiAoU2ltcGxlUGllX01pc2M6OmlzX3N1YmNsYXNzX29mKCRjbGFzcywgJ1NpbXBsZVBpZV9TYW5pdGl6ZScpKQoJCXsKCQkJJHRoaXMtPnNhbml0aXplID0mIG5ldyAkY2xhc3M7CgkJCXJldHVybiB0cnVlOwoJCX0KCQlyZXR1cm4gZmFsc2U7Cgl9CgoJLyoqCgkgKiBBbGxvd3MgeW91IHRvIGNoYW5nZSB3aGljaCBjbGFzcyBTaW1wbGVQaWUgdXNlcyBmb3IgaGFuZGxpbmcgZmVlZCBpdGVtcy4KCSAqIFVzZWZ1bCB3aGVuIHlvdSBhcmUgb3ZlcmxvYWRpbmcgb3IgZXh0ZW5kaW5nIFNpbXBsZVBpZSdzIGRlZmF1bHQgY2xhc3Nlcy4KCSAqCgkgKiBAYWNjZXNzIHB1YmxpYwoJICogQHBhcmFtIHN0cmluZyAkY2xhc3MgTmFtZSBvZiBjdXN0b20gY2xhc3MuCgkgKiBAbGluayBodHRwOi8vcGhwLm5ldC9tYW51YWwvZW4va2V5d29yZC5leHRlbmRzLnBocCBQSFA0IGV4dGVuZHMgZG9jdW1lbnRhdGlvbgoJICogQGxpbmsgaHR0cDovL3BocC5uZXQvbWFudWFsL2VuL2xhbmd1YWdlLm9vcDUuYmFzaWMucGhwI2xhbmd1YWdlLm9vcDUuYmFzaWMuZXh0ZW5kcyBQSFA1IGV4dGVuZHMgZG9jdW1lbnRhdGlvbgoJICovCglmdW5jdGlvbiBzZXRfaXRlbV9jbGFzcygkY2xhc3MgPSAnU2ltcGxlUGllX0l0ZW0nKQoJewoJCWlmIChTaW1wbGVQaWVfTWlzYzo6aXNfc3ViY2xhc3Nfb2YoJGNsYXNzLCAnU2ltcGxlUGllX0l0ZW0nKSkKCQl7CgkJCSR0aGlzLT5pdGVtX2NsYXNzID0gJGNsYXNzOwoJCQlyZXR1cm4gdHJ1ZTsKCQl9CgkJcmV0dXJuIGZhbHNlOwoJfQoKCS8qKgoJICogQWxsb3dzIHlvdSB0byBjaGFuZ2Ugd2hpY2ggY2xhc3MgU2ltcGxlUGllIHVzZXMgZm9yIGhhbmRsaW5nIGF1dGhvciBkYXRhLgoJICogVXNlZnVsIHdoZW4geW91IGFyZSBvdmVybG9hZGluZyBvciBleHRlbmRpbmcgU2ltcGxlUGllJ3MgZGVmYXVsdCBjbGFzc2VzLgoJICoKCSAqIEBhY2Nlc3MgcHVibGljCgkgKiBAcGFyYW0gc3RyaW5nICRjbGFzcyBOYW1lIG9mIGN1c3RvbSBjbGFzcy4KCSAqIEBsaW5rIGh0dHA6Ly9waHAubmV0L21hbnVhbC9lbi9rZXl3b3JkLmV4dGVuZHMucGhwIFBIUDQgZXh0ZW5kcyBkb2N1bWVudGF0aW9uCgkgKiBAbGluayBodHRwOi8vcGhwLm5ldC9tYW51YWwvZW4vbGFuZ3VhZ2Uub29wNS5iYXNpYy5waHAjbGFuZ3VhZ2Uub29wNS5iYXNpYy5leHRlbmRzIFBIUDUgZXh0ZW5kcyBkb2N1bWVudGF0aW9uCgkgKi8KCWZ1bmN0aW9uIHNldF9hdXRob3JfY2xhc3MoJGNsYXNzID0gJ1NpbXBsZVBpZV9BdXRob3InKQoJewoJCWlmIChTaW1wbGVQaWVfTWlzYzo6aXNfc3ViY2xhc3Nfb2YoJGNsYXNzLCAnU2ltcGxlUGllX0F1dGhvcicpKQoJCXsKCQkJJHRoaXMtPmF1dGhvcl9jbGFzcyA9ICRjbGFzczsKCQkJcmV0dXJuIHRydWU7CgkJfQoJCXJldHVybiBmYWxzZTsKCX0KCgkvKioKCSAqIEFsbG93cyB5b3UgdG8gY2hhbmdlIHdoaWNoIGNsYXNzIFNpbXBsZVBpZSB1c2VzIGZvciBoYW5kbGluZyBjYXRlZ29yeSBkYXRhLgoJICogVXNlZnVsIHdoZW4geW91IGFyZSBvdmVybG9hZGluZyBvciBleHRlbmRpbmcgU2ltcGxlUGllJ3MgZGVmYXVsdCBjbGFzc2VzLgoJICoKCSAqIEBhY2Nlc3MgcHVibGljCgkgKiBAcGFyYW0gc3RyaW5nICRjbGFzcyBOYW1lIG9mIGN1c3RvbSBjbGFzcy4KCSAqIEBsaW5rIGh0dHA6Ly9waHAubmV0L21hbnVhbC9lbi9rZXl3b3JkLmV4dGVuZHMucGhwIFBIUDQgZXh0ZW5kcyBkb2N1bWVudGF0aW9uCgkgKiBAbGluayBodHRwOi8vcGhwLm5ldC9tYW51YWwvZW4vbGFuZ3VhZ2Uub29wNS5iYXNpYy5waHAjbGFuZ3VhZ2Uub29wNS5iYXNpYy5leHRlbmRzIFBIUDUgZXh0ZW5kcyBkb2N1bWVudGF0aW9uCgkgKi8KCWZ1bmN0aW9uIHNldF9jYXRlZ29yeV9jbGFzcygkY2xhc3MgPSAnU2ltcGxlUGllX0NhdGVnb3J5JykKCXsKCQlpZiAoU2ltcGxlUGllX01pc2M6OmlzX3N1YmNsYXNzX29mKCRjbGFzcywgJ1NpbXBsZVBpZV9DYXRlZ29yeScpKQoJCXsKCQkJJHRoaXMtPmNhdGVnb3J5X2NsYXNzID0gJGNsYXNzOwoJCQlyZXR1cm4gdHJ1ZTsKCQl9CgkJcmV0dXJuIGZhbHNlOwoJfQoKCS8qKgoJICogQWxsb3dzIHlvdSB0byBjaGFuZ2Ugd2hpY2ggY2xhc3MgU2ltcGxlUGllIHVzZXMgZm9yIGZlZWQgZW5jbG9zdXJlcy4KCSAqIFVzZWZ1bCB3aGVuIHlvdSBhcmUgb3ZlcmxvYWRpbmcgb3IgZXh0ZW5kaW5nIFNpbXBsZVBpZSdzIGRlZmF1bHQgY2xhc3Nlcy4KCSAqCgkgKiBAYWNjZXNzIHB1YmxpYwoJICogQHBhcmFtIHN0cmluZyAkY2xhc3MgTmFtZSBvZiBjdXN0b20gY2xhc3MuCgkgKiBAbGluayBodHRwOi8vcGhwLm5ldC9tYW51YWwvZW4va2V5d29yZC5leHRlbmRzLnBocCBQSFA0IGV4dGVuZHMgZG9jdW1lbnRhdGlvbgoJICogQGxpbmsgaHR0cDovL3BocC5uZXQvbWFudWFsL2VuL2xhbmd1YWdlLm9vcDUuYmFzaWMucGhwI2xhbmd1YWdlLm9vcDUuYmFzaWMuZXh0ZW5kcyBQSFA1IGV4dGVuZHMgZG9jdW1lbnRhdGlvbgoJICovCglmdW5jdGlvbiBzZXRfZW5jbG9zdXJlX2NsYXNzKCRjbGFzcyA9ICdTaW1wbGVQaWVfRW5jbG9zdXJlJykKCXsKCQlpZiAoU2ltcGxlUGllX01pc2M6OmlzX3N1YmNsYXNzX29mKCRjbGFzcywgJ1NpbXBsZVBpZV9FbmNsb3N1cmUnKSkKCQl7CgkJCSR0aGlzLT5lbmNsb3N1cmVfY2xhc3MgPSAkY2xhc3M7CgkJCXJldHVybiB0cnVlOwoJCX0KCQlyZXR1cm4gZmFsc2U7Cgl9CgoJLyoqCgkgKiBBbGxvd3MgeW91IHRvIGNoYW5nZSB3aGljaCBjbGFzcyBTaW1wbGVQaWUgdXNlcyBmb3IgPG1lZGlhOnRleHQ+IGNhcHRpb25zCgkgKiBVc2VmdWwgd2hlbiB5b3UgYXJlIG92ZXJsb2FkaW5nIG9yIGV4dGVuZGluZyBTaW1wbGVQaWUncyBkZWZhdWx0IGNsYXNzZXMuCgkgKgoJICogQGFjY2VzcyBwdWJsaWMKCSAqIEBwYXJhbSBzdHJpbmcgJGNsYXNzIE5hbWUgb2YgY3VzdG9tIGNsYXNzLgoJICogQGxpbmsgaHR0cDovL3BocC5uZXQvbWFudWFsL2VuL2tleXdvcmQuZXh0ZW5kcy5waHAgUEhQNCBleHRlbmRzIGRvY3VtZW50YXRpb24KCSAqIEBsaW5rIGh0dHA6Ly9waHAubmV0L21hbnVhbC9lbi9sYW5ndWFnZS5vb3A1LmJhc2ljLnBocCNsYW5ndWFnZS5vb3A1LmJhc2ljLmV4dGVuZHMgUEhQNSBleHRlbmRzIGRvY3VtZW50YXRpb24KCSAqLwoJZnVuY3Rpb24gc2V0X2NhcHRpb25fY2xhc3MoJGNsYXNzID0gJ1NpbXBsZVBpZV9DYXB0aW9uJykKCXsKCQlpZiAoU2ltcGxlUGllX01pc2M6OmlzX3N1YmNsYXNzX29mKCRjbGFzcywgJ1NpbXBsZVBpZV9DYXB0aW9uJykpCgkJewoJCQkkdGhpcy0+Y2FwdGlvbl9jbGFzcyA9ICRjbGFzczsKCQkJcmV0dXJuIHRydWU7CgkJfQoJCXJldHVybiBmYWxzZTsKCX0KCgkvKioKCSAqIEFsbG93cyB5b3UgdG8gY2hhbmdlIHdoaWNoIGNsYXNzIFNpbXBsZVBpZSB1c2VzIGZvciA8bWVkaWE6Y29weXJpZ2h0PgoJICogVXNlZnVsIHdoZW4geW91IGFyZSBvdmVybG9hZGluZyBvciBleHRlbmRpbmcgU2ltcGxlUGllJ3MgZGVmYXVsdCBjbGFzc2VzLgoJICoKCSAqIEBhY2Nlc3MgcHVibGljCgkgKiBAcGFyYW0gc3RyaW5nICRjbGFzcyBOYW1lIG9mIGN1c3RvbSBjbGFzcy4KCSAqIEBsaW5rIGh0dHA6Ly9waHAubmV0L21hbnVhbC9lbi9rZXl3b3JkLmV4dGVuZHMucGhwIFBIUDQgZXh0ZW5kcyBkb2N1bWVudGF0aW9uCgkgKiBAbGluayBodHRwOi8vcGhwLm5ldC9tYW51YWwvZW4vbGFuZ3VhZ2Uub29wNS5iYXNpYy5waHAjbGFuZ3VhZ2Uub29wNS5iYXNpYy5leHRlbmRzIFBIUDUgZXh0ZW5kcyBkb2N1bWVudGF0aW9uCgkgKi8KCWZ1bmN0aW9uIHNldF9jb3B5cmlnaHRfY2xhc3MoJGNsYXNzID0gJ1NpbXBsZVBpZV9Db3B5cmlnaHQnKQoJewoJCWlmIChTaW1wbGVQaWVfTWlzYzo6aXNfc3ViY2xhc3Nfb2YoJGNsYXNzLCAnU2ltcGxlUGllX0NvcHlyaWdodCcpKQoJCXsKCQkJJHRoaXMtPmNvcHlyaWdodF9jbGFzcyA9ICRjbGFzczsKCQkJcmV0dXJuIHRydWU7CgkJfQoJCXJldHVybiBmYWxzZTsKCX0KCgkvKioKCSAqIEFsbG93cyB5b3UgdG8gY2hhbmdlIHdoaWNoIGNsYXNzIFNpbXBsZVBpZSB1c2VzIGZvciA8bWVkaWE6Y3JlZGl0PgoJICogVXNlZnVsIHdoZW4geW91IGFyZSBvdmVybG9hZGluZyBvciBleHRlbmRpbmcgU2ltcGxlUGllJ3MgZGVmYXVsdCBjbGFzc2VzLgoJICoKCSAqIEBhY2Nlc3MgcHVibGljCgkgKiBAcGFyYW0gc3RyaW5nICRjbGFzcyBOYW1lIG9mIGN1c3RvbSBjbGFzcy4KCSAqIEBsaW5rIGh0dHA6Ly9waHAubmV0L21hbnVhbC9lbi9rZXl3b3JkLmV4dGVuZHMucGhwIFBIUDQgZXh0ZW5kcyBkb2N1bWVudGF0aW9uCgkgKiBAbGluayBodHRwOi8vcGhwLm5ldC9tYW51YWwvZW4vbGFuZ3VhZ2Uub29wNS5iYXNpYy5waHAjbGFuZ3VhZ2Uub29wNS5iYXNpYy5leHRlbmRzIFBIUDUgZXh0ZW5kcyBkb2N1bWVudGF0aW9uCgkgKi8KCWZ1bmN0aW9uIHNldF9jcmVkaXRfY2xhc3MoJGNsYXNzID0gJ1NpbXBsZVBpZV9DcmVkaXQnKQoJewoJCWlmIChTaW1wbGVQaWVfTWlzYzo6aXNfc3ViY2xhc3Nfb2YoJGNsYXNzLCAnU2ltcGxlUGllX0NyZWRpdCcpKQoJCXsKCQkJJHRoaXMtPmNyZWRpdF9jbGFzcyA9ICRjbGFzczsKCQkJcmV0dXJuIHRydWU7CgkJfQoJCXJldHVybiBmYWxzZTsKCX0KCgkvKioKCSAqIEFsbG93cyB5b3UgdG8gY2hhbmdlIHdoaWNoIGNsYXNzIFNpbXBsZVBpZSB1c2VzIGZvciA8bWVkaWE6cmF0aW5nPgoJICogVXNlZnVsIHdoZW4geW91IGFyZSBvdmVybG9hZGluZyBvciBleHRlbmRpbmcgU2ltcGxlUGllJ3MgZGVmYXVsdCBjbGFzc2VzLgoJICoKCSAqIEBhY2Nlc3MgcHVibGljCgkgKiBAcGFyYW0gc3RyaW5nICRjbGFzcyBOYW1lIG9mIGN1c3RvbSBjbGFzcy4KCSAqIEBsaW5rIGh0dHA6Ly9waHAubmV0L21hbnVhbC9lbi9rZXl3b3JkLmV4dGVuZHMucGhwIFBIUDQgZXh0ZW5kcyBkb2N1bWVudGF0aW9uCgkgKiBAbGluayBodHRwOi8vcGhwLm5ldC9tYW51YWwvZW4vbGFuZ3VhZ2Uub29wNS5iYXNpYy5waHAjbGFuZ3VhZ2Uub29wNS5iYXNpYy5leHRlbmRzIFBIUDUgZXh0ZW5kcyBkb2N1bWVudGF0aW9uCgkgKi8KCWZ1bmN0aW9uIHNldF9yYXRpbmdfY2xhc3MoJGNsYXNzID0gJ1NpbXBsZVBpZV9SYXRpbmcnKQoJewoJCWlmIChTaW1wbGVQaWVfTWlzYzo6aXNfc3ViY2xhc3Nfb2YoJGNsYXNzLCAnU2ltcGxlUGllX1JhdGluZycpKQoJCXsKCQkJJHRoaXMtPnJhdGluZ19jbGFzcyA9ICRjbGFzczsKCQkJcmV0dXJuIHRydWU7CgkJfQoJCXJldHVybiBmYWxzZTsKCX0KCgkvKioKCSAqIEFsbG93cyB5b3UgdG8gY2hhbmdlIHdoaWNoIGNsYXNzIFNpbXBsZVBpZSB1c2VzIGZvciA8bWVkaWE6cmVzdHJpY3Rpb24+CgkgKiBVc2VmdWwgd2hlbiB5b3UgYXJlIG92ZXJsb2FkaW5nIG9yIGV4dGVuZGluZyBTaW1wbGVQaWUncyBkZWZhdWx0IGNsYXNzZXMuCgkgKgoJICogQGFjY2VzcyBwdWJsaWMKCSAqIEBwYXJhbSBzdHJpbmcgJGNsYXNzIE5hbWUgb2YgY3VzdG9tIGNsYXNzLgoJICogQGxpbmsgaHR0cDovL3BocC5uZXQvbWFudWFsL2VuL2tleXdvcmQuZXh0ZW5kcy5waHAgUEhQNCBleHRlbmRzIGRvY3VtZW50YXRpb24KCSAqIEBsaW5rIGh0dHA6Ly9waHAubmV0L21hbnVhbC9lbi9sYW5ndWFnZS5vb3A1LmJhc2ljLnBocCNsYW5ndWFnZS5vb3A1LmJhc2ljLmV4dGVuZHMgUEhQNSBleHRlbmRzIGRvY3VtZW50YXRpb24KCSAqLwoJZnVuY3Rpb24gc2V0X3Jlc3RyaWN0aW9uX2NsYXNzKCRjbGFzcyA9ICdTaW1wbGVQaWVfUmVzdHJpY3Rpb24nKQoJewoJCWlmIChTaW1wbGVQaWVfTWlzYzo6aXNfc3ViY2xhc3Nfb2YoJGNsYXNzLCAnU2ltcGxlUGllX1Jlc3RyaWN0aW9uJykpCgkJewoJCQkkdGhpcy0+cmVzdHJpY3Rpb25fY2xhc3MgPSAkY2xhc3M7CgkJCXJldHVybiB0cnVlOwoJCX0KCQlyZXR1cm4gZmFsc2U7Cgl9CgoJLyoqCgkgKiBBbGxvd3MgeW91IHRvIGNoYW5nZSB3aGljaCBjbGFzcyBTaW1wbGVQaWUgdXNlcyBmb3IgY29udGVudC10eXBlIHNuaWZmaW5nLgoJICogVXNlZnVsIHdoZW4geW91IGFyZSBvdmVybG9hZGluZyBvciBleHRlbmRpbmcgU2ltcGxlUGllJ3MgZGVmYXVsdCBjbGFzc2VzLgoJICoKCSAqIEBhY2Nlc3MgcHVibGljCgkgKiBAcGFyYW0gc3RyaW5nICRjbGFzcyBOYW1lIG9mIGN1c3RvbSBjbGFzcy4KCSAqIEBsaW5rIGh0dHA6Ly9waHAubmV0L21hbnVhbC9lbi9rZXl3b3JkLmV4dGVuZHMucGhwIFBIUDQgZXh0ZW5kcyBkb2N1bWVudGF0aW9uCgkgKiBAbGluayBodHRwOi8vcGhwLm5ldC9tYW51YWwvZW4vbGFuZ3VhZ2Uub29wNS5iYXNpYy5waHAjbGFuZ3VhZ2Uub29wNS5iYXNpYy5leHRlbmRzIFBIUDUgZXh0ZW5kcyBkb2N1bWVudGF0aW9uCgkgKi8KCWZ1bmN0aW9uIHNldF9jb250ZW50X3R5cGVfc25pZmZlcl9jbGFzcygkY2xhc3MgPSAnU2ltcGxlUGllX0NvbnRlbnRfVHlwZV9TbmlmZmVyJykKCXsKCQlpZiAoU2ltcGxlUGllX01pc2M6OmlzX3N1YmNsYXNzX29mKCRjbGFzcywgJ1NpbXBsZVBpZV9Db250ZW50X1R5cGVfU25pZmZlcicpKQoJCXsKCQkJJHRoaXMtPmNvbnRlbnRfdHlwZV9zbmlmZmVyX2NsYXNzID0gJGNsYXNzOwoJCQlyZXR1cm4gdHJ1ZTsKCQl9CgkJcmV0dXJuIGZhbHNlOwoJfQoKCS8qKgoJICogQWxsb3dzIHlvdSB0byBjaGFuZ2Ugd2hpY2ggY2xhc3MgU2ltcGxlUGllIHVzZXMgaXRlbSBzb3VyY2VzLgoJICogVXNlZnVsIHdoZW4geW91IGFyZSBvdmVybG9hZGluZyBvciBleHRlbmRpbmcgU2ltcGxlUGllJ3MgZGVmYXVsdCBjbGFzc2VzLgoJICoKCSAqIEBhY2Nlc3MgcHVibGljCgkgKiBAcGFyYW0gc3RyaW5nICRjbGFzcyBOYW1lIG9mIGN1c3RvbSBjbGFzcy4KCSAqIEBsaW5rIGh0dHA6Ly9waHAubmV0L21hbnVhbC9lbi9rZXl3b3JkLmV4dGVuZHMucGhwIFBIUDQgZXh0ZW5kcyBkb2N1bWVudGF0aW9uCgkgKiBAbGluayBodHRwOi8vcGhwLm5ldC9tYW51YWwvZW4vbGFuZ3VhZ2Uub29wNS5iYXNpYy5waHAjbGFuZ3VhZ2Uub29wNS5iYXNpYy5leHRlbmRzIFBIUDUgZXh0ZW5kcyBkb2N1bWVudGF0aW9uCgkgKi8KCWZ1bmN0aW9uIHNldF9zb3VyY2VfY2xhc3MoJGNsYXNzID0gJ1NpbXBsZVBpZV9Tb3VyY2UnKQoJewoJCWlmIChTaW1wbGVQaWVfTWlzYzo6aXNfc3ViY2xhc3Nfb2YoJGNsYXNzLCAnU2ltcGxlUGllX1NvdXJjZScpKQoJCXsKCQkJJHRoaXMtPnNvdXJjZV9jbGFzcyA9ICRjbGFzczsKCQkJcmV0dXJuIHRydWU7CgkJfQoJCXJldHVybiBmYWxzZTsKCX0KCgkvKioKCSAqIEFsbG93cyB5b3UgdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgdXNlciBhZ2VudCBzdHJpbmcuCgkgKgoJICogQGFjY2VzcyBwdWJsaWMKCSAqIEBwYXJhbSBzdHJpbmcgJHVhIE5ldyB1c2VyIGFnZW50IHN0cmluZy4KCSAqLwoJZnVuY3Rpb24gc2V0X3VzZXJhZ2VudCgkdWEgPSBTSU1QTEVQSUVfVVNFUkFHRU5UKQoJewoJCSR0aGlzLT51c2VyYWdlbnQgPSAoc3RyaW5nKSAkdWE7Cgl9CgoJLyoqCgkgKiBTZXQgY2FsbGJhY2sgZnVuY3Rpb24gdG8gY3JlYXRlIGNhY2hlIGZpbGVuYW1lIHdpdGgKCSAqCgkgKiBAYWNjZXNzIHB1YmxpYwoJICogQHBhcmFtIG1peGVkICRmdW5jdGlvbiBDYWxsYmFjayBmdW5jdGlvbgoJICovCglmdW5jdGlvbiBzZXRfY2FjaGVfbmFtZV9mdW5jdGlvbigkZnVuY3Rpb24gPSAnbWQ1JykKCXsKCQlpZiAoaXNfY2FsbGFibGUoJGZ1bmN0aW9uKSkKCQl7CgkJCSR0aGlzLT5jYWNoZV9uYW1lX2Z1bmN0aW9uID0gJGZ1bmN0aW9uOwoJCX0KCX0KCgkvKioKCSAqIFNldCBqYXZhc2NyaXB0IHF1ZXJ5IHN0cmluZyBwYXJhbWV0ZXIKCSAqCgkgKiBAYWNjZXNzIHB1YmxpYwoJICogQHBhcmFtIG1peGVkICRnZXQgSmF2YXNjcmlwdCBxdWVyeSBzdHJpbmcgcGFyYW1ldGVyCgkgKi8KCWZ1bmN0aW9uIHNldF9qYXZhc2NyaXB0KCRnZXQgPSAnanMnKQoJewoJCWlmICgkZ2V0KQoJCXsKCQkJJHRoaXMtPmphdmFzY3JpcHQgPSAoc3RyaW5nKSAkZ2V0OwoJCX0KCQllbHNlCgkJewoJCQkkdGhpcy0+amF2YXNjcmlwdCA9IGZhbHNlOwoJCX0KCX0KCgkvKioKCSAqIFNldCBvcHRpb25zIHRvIG1ha2UgU1AgYXMgZmFzdCBhcyBwb3NzaWJsZS4gIEZvcmdvZXMgYQoJICogc3Vic3RhbnRpYWwgYW1vdW50IG9mIGRhdGEgc2FuaXRpemF0aW9uIGluIGZhdm9yIG9mIHNwZWVkLgoJICoKCSAqIEBhY2Nlc3MgcHVibGljCgkgKiBAcGFyYW0gYm9vbCAkc2V0IFdoZXRoZXIgdG8gc2V0IHRoZW0gb3Igbm90CgkgKi8KCWZ1bmN0aW9uIHNldF9zdHVwaWRseV9mYXN0KCRzZXQgPSBmYWxzZSkKCXsKCQlpZiAoJHNldCkKCQl7CgkJCSR0aGlzLT5lbmFibGVfb3JkZXJfYnlfZGF0ZShmYWxzZSk7CgkJCSR0aGlzLT5yZW1vdmVfZGl2KGZhbHNlKTsKCQkJJHRoaXMtPnN0cmlwX2NvbW1lbnRzKGZhbHNlKTsKCQkJJHRoaXMtPnN0cmlwX2h0bWx0YWdzKGZhbHNlKTsKCQkJJHRoaXMtPnN0cmlwX2F0dHJpYnV0ZXMoZmFsc2UpOwoJCQkkdGhpcy0+c2V0X2ltYWdlX2hhbmRsZXIoZmFsc2UpOwoJCX0KCX0KCgkvKioKCSAqIFNldCBtYXhpbXVtIG51bWJlciBvZiBmZWVkcyB0byBjaGVjayB3aXRoIGF1dG9kaXNjb3ZlcnkKCSAqCgkgKiBAYWNjZXNzIHB1YmxpYwoJICogQHBhcmFtIGludCAkbWF4IE1heGltdW0gbnVtYmVyIG9mIGZlZWRzIHRvIGNoZWNrCgkgKi8KCWZ1bmN0aW9uIHNldF9tYXhfY2hlY2tlZF9mZWVkcygkbWF4ID0gMTApCgl7CgkJJHRoaXMtPm1heF9jaGVja2VkX2ZlZWRzID0gKGludCkgJG1heDsKCX0KCglmdW5jdGlvbiByZW1vdmVfZGl2KCRlbmFibGUgPSB0cnVlKQoJewoJCSR0aGlzLT5zYW5pdGl6ZS0+cmVtb3ZlX2RpdigkZW5hYmxlKTsKCX0KCglmdW5jdGlvbiBzdHJpcF9odG1sdGFncygkdGFncyA9ICcnLCAkZW5jb2RlID0gbnVsbCkKCXsKCQlpZiAoJHRhZ3MgPT09ICcnKQoJCXsKCQkJJHRhZ3MgPSAkdGhpcy0+c3RyaXBfaHRtbHRhZ3M7CgkJfQoJCSR0aGlzLT5zYW5pdGl6ZS0+c3RyaXBfaHRtbHRhZ3MoJHRhZ3MpOwoJCWlmICgkZW5jb2RlICE9PSBudWxsKQoJCXsKCQkJJHRoaXMtPnNhbml0aXplLT5lbmNvZGVfaW5zdGVhZF9vZl9zdHJpcCgkdGFncyk7CgkJfQoJfQoKCWZ1bmN0aW9uIGVuY29kZV9pbnN0ZWFkX29mX3N0cmlwKCRlbmFibGUgPSB0cnVlKQoJewoJCSR0aGlzLT5zYW5pdGl6ZS0+ZW5jb2RlX2luc3RlYWRfb2Zfc3RyaXAoJGVuYWJsZSk7Cgl9CgoJZnVuY3Rpb24gc3RyaXBfYXR0cmlidXRlcygkYXR0cmlicyA9ICcnKQoJewoJCWlmICgkYXR0cmlicyA9PT0gJycpCgkJewoJCQkkYXR0cmlicyA9ICR0aGlzLT5zdHJpcF9hdHRyaWJ1dGVzOwoJCX0KCQkkdGhpcy0+c2FuaXRpemUtPnN0cmlwX2F0dHJpYnV0ZXMoJGF0dHJpYnMpOwoJfQoKCWZ1bmN0aW9uIHNldF9vdXRwdXRfZW5jb2RpbmcoJGVuY29kaW5nID0gJ1VURi04JykKCXsKCQkkdGhpcy0+c2FuaXRpemUtPnNldF9vdXRwdXRfZW5jb2RpbmcoJGVuY29kaW5nKTsKCX0KCglmdW5jdGlvbiBzdHJpcF9jb21tZW50cygkc3RyaXAgPSBmYWxzZSkKCXsKCQkkdGhpcy0+c2FuaXRpemUtPnN0cmlwX2NvbW1lbnRzKCRzdHJpcCk7Cgl9CgoJLyoqCgkgKiBTZXQgZWxlbWVudC9hdHRyaWJ1dGUga2V5L3ZhbHVlIHBhaXJzIG9mIEhUTUwgYXR0cmlidXRlcwoJICogY29udGFpbmluZyBVUkxzIHRoYXQgbmVlZCB0byBiZSByZXNvbHZlZCByZWxhdGl2ZSB0byB0aGUgZmVlZAoJICoKCSAqIEBhY2Nlc3MgcHVibGljCgkgKiBAc2luY2UgMS4wCgkgKiBAcGFyYW0gYXJyYXkgJGVsZW1lbnRfYXR0cmlidXRlIEVsZW1lbnQvYXR0cmlidXRlIGtleS92YWx1ZSBwYWlycwoJICovCglmdW5jdGlvbiBzZXRfdXJsX3JlcGxhY2VtZW50cygkZWxlbWVudF9hdHRyaWJ1dGUgPSBhcnJheSgnYScgPT4gJ2hyZWYnLCAnYXJlYScgPT4gJ2hyZWYnLCAnYmxvY2txdW90ZScgPT4gJ2NpdGUnLCAnZGVsJyA9PiAnY2l0ZScsICdmb3JtJyA9PiAnYWN0aW9uJywgJ2ltZycgPT4gYXJyYXkoJ2xvbmdkZXNjJywgJ3NyYycpLCAnaW5wdXQnID0+ICdzcmMnLCAnaW5zJyA9PiAnY2l0ZScsICdxJyA9PiAnY2l0ZScpKQoJewoJCSR0aGlzLT5zYW5pdGl6ZS0+c2V0X3VybF9yZXBsYWNlbWVudHMoJGVsZW1lbnRfYXR0cmlidXRlKTsKCX0KCgkvKioKCSAqIFNldCB0aGUgaGFuZGxlciB0byBlbmFibGUgdGhlIGRpc3BsYXkgb2YgY2FjaGVkIGZhdmljb25zLgoJICoKCSAqIEBhY2Nlc3MgcHVibGljCgkgKiBAcGFyYW0gc3RyICRwYWdlIFdlYi1hY2Nlc3NpYmxlIHBhdGggdG8gdGhlIGhhbmRsZXJfZmF2aWNvbi5waHAgZmlsZS4KCSAqIEBwYXJhbSBzdHIgJHFzIFRoZSBxdWVyeSBzdHJpbmcgdGhhdCB0aGUgdmFsdWUgc2hvdWxkIGJlIHBhc3NlZCB0by4KCSAqLwoJZnVuY3Rpb24gc2V0X2Zhdmljb25faGFuZGxlcigkcGFnZSA9IGZhbHNlLCAkcXMgPSAnaScpCgl7CgkJaWYgKCRwYWdlICE9IGZhbHNlKQoJCXsKCQkJJHRoaXMtPmZhdmljb25faGFuZGxlciA9ICRwYWdlIC4gJz8nIC4gJHFzIC4gJz0nOwoJCX0KCQllbHNlCgkJewoJCQkkdGhpcy0+ZmF2aWNvbl9oYW5kbGVyID0gJyc7CgkJfQoJfQoKCS8qKgoJICogU2V0IHRoZSBoYW5kbGVyIHRvIGVuYWJsZSB0aGUgZGlzcGxheSBvZiBjYWNoZWQgaW1hZ2VzLgoJICoKCSAqIEBhY2Nlc3MgcHVibGljCgkgKiBAcGFyYW0gc3RyICRwYWdlIFdlYi1hY2Nlc3NpYmxlIHBhdGggdG8gdGhlIGhhbmRsZXJfaW1hZ2UucGhwIGZpbGUuCgkgKiBAcGFyYW0gc3RyICRxcyBUaGUgcXVlcnkgc3RyaW5nIHRoYXQgdGhlIHZhbHVlIHNob3VsZCBiZSBwYXNzZWQgdG8uCgkgKi8KCWZ1bmN0aW9uIHNldF9pbWFnZV9oYW5kbGVyKCRwYWdlID0gZmFsc2UsICRxcyA9ICdpJykKCXsKCQlpZiAoJHBhZ2UgIT0gZmFsc2UpCgkJewoJCQkkdGhpcy0+c2FuaXRpemUtPnNldF9pbWFnZV9oYW5kbGVyKCRwYWdlIC4gJz8nIC4gJHFzIC4gJz0nKTsKCQl9CgkJZWxzZQoJCXsKCQkJJHRoaXMtPmltYWdlX2hhbmRsZXIgPSAnJzsKCQl9Cgl9CgoJLyoqCgkgKiBTZXQgdGhlIGxpbWl0IGZvciBpdGVtcyByZXR1cm5lZCBwZXItZmVlZCB3aXRoIG11bHRpZmVlZHMuCgkgKgoJICogQGFjY2VzcyBwdWJsaWMKCSAqIEBwYXJhbSBpbnRlZ2VyICRsaW1pdCBUaGUgbWF4aW11bSBudW1iZXIgb2YgaXRlbXMgdG8gcmV0dXJuLgoJICovCglmdW5jdGlvbiBzZXRfaXRlbV9saW1pdCgkbGltaXQgPSAwKQoJewoJCSR0aGlzLT5pdGVtX2xpbWl0ID0gKGludCkgJGxpbWl0OwoJfQoKCWZ1bmN0aW9uIGluaXQoKQoJewoJCWlmICgoZnVuY3Rpb25fZXhpc3RzKCd2ZXJzaW9uX2NvbXBhcmUnKSAmJiB2ZXJzaW9uX2NvbXBhcmUoUEhQX1ZFUlNJT04sICc0LjMuMCcsICc8JykpIHx8ICFleHRlbnNpb25fbG9hZGVkKCd4bWwnKSB8fCAhZXh0ZW5zaW9uX2xvYWRlZCgncGNyZScpKQoJCXsKCQkJcmV0dXJuIGZhbHNlOwoJCX0KCQlpZiAoaXNzZXQoJF9HRVRbJHRoaXMtPmphdmFzY3JpcHRdKSkKCQl7CgkJCWlmIChmdW5jdGlvbl9leGlzdHMoJ29iX2d6aGFuZGxlcicpKQoJCQl7CgkJCQlvYl9zdGFydCgnb2JfZ3poYW5kbGVyJyk7CgkJCX0KCQkJaGVhZGVyKCdDb250ZW50LXR5cGU6IHRleHQvamF2YXNjcmlwdDsgY2hhcnNldDogVVRGLTgnKTsKCQkJaGVhZGVyKCdDYWNoZS1Db250cm9sOiBtdXN0LXJldmFsaWRhdGUnKTsKCQkJaGVhZGVyKCdFeHBpcmVzOiAnIC4gZ21kYXRlKCdELCBkIE0gWSBIOmk6cycsIHRpbWUoKSArIDYwNDgwMCkgLiAnIEdNVCcpOyAvLyA3IGRheXMKCQkJPz4KZnVuY3Rpb24gZW1iZWRfb2RlbyhsaW5rKSB7Cglkb2N1bWVudC53cml0ZWxuKCc8ZW1iZWQgc3JjPSJodHRwOi8vb2Rlby5jb20vZmxhc2gvYXVkaW9fcGxheWVyX2Z1bGxzaXplLnN3ZiIgcGx1Z2luc3BhZ2U9Imh0dHA6Ly93d3cubWFjcm9tZWRpYS5jb20vZ28vZ2V0Zmxhc2hwbGF5ZXIiIHR5cGU9ImFwcGxpY2F0aW9uL3gtc2hvY2t3YXZlLWZsYXNoIiBxdWFsaXR5PSJoaWdoIiB3aWR0aD0iNDQwIiBoZWlnaHQ9IjgwIiB3bW9kZT0idHJhbnNwYXJlbnQiIGFsbG93U2NyaXB0QWNjZXNzPSJhbnkiIGZsYXNodmFycz0idmFsaWRfc2FtcGxlX3JhdGU9dHJ1ZSZleHRlcm5hbF91cmw9JytsaW5rKyciPjwvZW1iZWQ+Jyk7Cn0KCmZ1bmN0aW9uIGVtYmVkX3F1aWNrdGltZSh0eXBlLCBiZ2NvbG9yLCB3aWR0aCwgaGVpZ2h0LCBsaW5rLCBwbGFjZWhvbGRlciwgbG9vcCkgewoJaWYgKHBsYWNlaG9sZGVyICE9ICcnKSB7CgkJZG9jdW1lbnQud3JpdGVsbignPGVtYmVkIHR5cGU9IicrdHlwZSsnIiBzdHlsZT0iY3Vyc29yOmhhbmQ7IGN1cnNvcjpwb2ludGVyOyIgaHJlZj0iJytsaW5rKyciIHNyYz0iJytwbGFjZWhvbGRlcisnIiB3aWR0aD0iJyt3aWR0aCsnIiBoZWlnaHQ9IicraGVpZ2h0KyciIGF1dG9wbGF5PSJmYWxzZSIgdGFyZ2V0PSJteXNlbGYiIGNvbnRyb2xsZXI9ImZhbHNlIiBsb29wPSInK2xvb3ArJyIgc2NhbGU9ImFzcGVjdCIgYmdjb2xvcj0iJytiZ2NvbG9yKyciIHBsdWdpbnNwYWdlPSJodHRwOi8vd3d3LmFwcGxlLmNvbS9xdWlja3RpbWUvZG93bmxvYWQvIj48L2VtYmVkPicpOwoJfQoJZWxzZSB7CgkJZG9jdW1lbnQud3JpdGVsbignPGVtYmVkIHR5cGU9IicrdHlwZSsnIiBzdHlsZT0iY3Vyc29yOmhhbmQ7IGN1cnNvcjpwb2ludGVyOyIgc3JjPSInK2xpbmsrJyIgd2lkdGg9Iicrd2lkdGgrJyIgaGVpZ2h0PSInK2hlaWdodCsnIiBhdXRvcGxheT0iZmFsc2UiIHRhcmdldD0ibXlzZWxmIiBjb250cm9sbGVyPSJ0cnVlIiBsb29wPSInK2xvb3ArJyIgc2NhbGU9ImFzcGVjdCIgYmdjb2xvcj0iJytiZ2NvbG9yKyciIHBsdWdpbnNwYWdlPSJodHRwOi8vd3d3LmFwcGxlLmNvbS9xdWlja3RpbWUvZG93bmxvYWQvIj48L2VtYmVkPicpOwoJfQp9CgpmdW5jdGlvbiBlbWJlZF9mbGFzaChiZ2NvbG9yLCB3aWR0aCwgaGVpZ2h0LCBsaW5rLCBsb29wLCB0eXBlKSB7Cglkb2N1bWVudC53cml0ZWxuKCc8ZW1iZWQgc3JjPSInK2xpbmsrJyIgcGx1Z2luc3BhZ2U9Imh0dHA6Ly93d3cubWFjcm9tZWRpYS5jb20vZ28vZ2V0Zmxhc2hwbGF5ZXIiIHR5cGU9IicrdHlwZSsnIiBxdWFsaXR5PSJoaWdoIiB3aWR0aD0iJyt3aWR0aCsnIiBoZWlnaHQ9IicraGVpZ2h0KyciIGJnY29sb3I9IicrYmdjb2xvcisnIiBsb29wPSInK2xvb3ArJyI+PC9lbWJlZD4nKTsKfQoKZnVuY3Rpb24gZW1iZWRfZmx2KHdpZHRoLCBoZWlnaHQsIGxpbmssIHBsYWNlaG9sZGVyLCBsb29wLCBwbGF5ZXIpIHsKCWRvY3VtZW50LndyaXRlbG4oJzxlbWJlZCBzcmM9IicrcGxheWVyKyciIHBsdWdpbnNwYWdlPSJodHRwOi8vd3d3Lm1hY3JvbWVkaWEuY29tL2dvL2dldGZsYXNocGxheWVyIiB0eXBlPSJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCIgcXVhbGl0eT0iaGlnaCIgd2lkdGg9Iicrd2lkdGgrJyIgaGVpZ2h0PSInK2hlaWdodCsnIiB3bW9kZT0idHJhbnNwYXJlbnQiIGZsYXNodmFycz0iZmlsZT0nK2xpbmsrJyZhdXRvc3RhcnQ9ZmFsc2UmcmVwZWF0PScrbG9vcCsnJnNob3dkaWdpdHM9dHJ1ZSZzaG93ZnNidXR0b249ZmFsc2UiPjwvZW1iZWQ+Jyk7Cn0KCmZ1bmN0aW9uIGVtYmVkX3dtZWRpYSh3aWR0aCwgaGVpZ2h0LCBsaW5rKSB7Cglkb2N1bWVudC53cml0ZWxuKCc8ZW1iZWQgdHlwZT0iYXBwbGljYXRpb24veC1tcGxheWVyMiIgc3JjPSInK2xpbmsrJyIgYXV0b3NpemU9IjEiIHdpZHRoPSInK3dpZHRoKyciIGhlaWdodD0iJytoZWlnaHQrJyIgc2hvd2NvbnRyb2xzPSIxIiBzaG93c3RhdHVzYmFyPSIwIiBzaG93ZGlzcGxheT0iMCIgYXV0b3N0YXJ0PSIwIj48L2VtYmVkPicpOwp9CgkJCTw/cGhwCgkJCWV4aXQ7CgkJfQoKCQkvLyBQYXNzIHdoYXRldmVyIHdhcyBzZXQgd2l0aCBjb25maWcgb3B0aW9ucyBvdmVyIHRvIHRoZSBzYW5pdGl6ZXIuCgkJJHRoaXMtPnNhbml0aXplLT5wYXNzX2NhY2hlX2RhdGEoJHRoaXMtPmNhY2hlLCAkdGhpcy0+Y2FjaGVfbG9jYXRpb24sICR0aGlzLT5jYWNoZV9uYW1lX2Z1bmN0aW9uLCAkdGhpcy0+Y2FjaGVfY2xhc3MpOwoJCSR0aGlzLT5zYW5pdGl6ZS0+cGFzc19maWxlX2RhdGEoJHRoaXMtPmZpbGVfY2xhc3MsICR0aGlzLT50aW1lb3V0LCAkdGhpcy0+dXNlcmFnZW50LCAkdGhpcy0+Zm9yY2VfZnNvY2tvcGVuKTsKCgkJaWYgKCR0aGlzLT5mZWVkX3VybCAhPT0gbnVsbCB8fCAkdGhpcy0+cmF3X2RhdGEgIT09IG51bGwpCgkJewoJCQkkdGhpcy0+ZGF0YSA9IGFycmF5KCk7CgkJCSR0aGlzLT5tdWx0aWZlZWRfb2JqZWN0cyA9IGFycmF5KCk7CgkJCSRjYWNoZSA9IGZhbHNlOwoKCQkJaWYgKCR0aGlzLT5mZWVkX3VybCAhPT0gbnVsbCkKCQkJewoJCQkJJHBhcnNlZF9mZWVkX3VybCA9IFNpbXBsZVBpZV9NaXNjOjpwYXJzZV91cmwoJHRoaXMtPmZlZWRfdXJsKTsKCQkJCS8vIERlY2lkZSB3aGV0aGVyIHRvIGVuYWJsZSBjYWNoaW5nCgkJCQlpZiAoJHRoaXMtPmNhY2hlICYmICRwYXJzZWRfZmVlZF91cmxbJ3NjaGVtZSddICE9PSAnJykKCQkJCXsKCQkJCQkkY2FjaGUgPSBjYWxsX3VzZXJfZnVuYyhhcnJheSgkdGhpcy0+Y2FjaGVfY2xhc3MsICdjcmVhdGUnKSwgJHRoaXMtPmNhY2hlX2xvY2F0aW9uLCBjYWxsX3VzZXJfZnVuYygkdGhpcy0+Y2FjaGVfbmFtZV9mdW5jdGlvbiwgJHRoaXMtPmZlZWRfdXJsKSwgJ3NwYycpOwoJCQkJfQoJCQkJLy8gSWYgaXQncyBlbmFibGVkIGFuZCB3ZSBkb24ndCB3YW50IGFuIFhNTCBkdW1wLCB1c2UgdGhlIGNhY2hlCgkJCQlpZiAoJGNhY2hlICYmICEkdGhpcy0+eG1sX2R1bXApCgkJCQl7CgkJCQkJLy8gTG9hZCB0aGUgQ2FjaGUKCQkJCQkkdGhpcy0+ZGF0YSA9ICRjYWNoZS0+bG9hZCgpOwoJCQkJCWlmICghZW1wdHkoJHRoaXMtPmRhdGEpKQoJCQkJCXsKCQkJCQkJLy8gSWYgdGhlIGNhY2hlIGlzIGZvciBhbiBvdXRkYXRlZCBidWlsZCBvZiBTaW1wbGVQaWUKCQkJCQkJaWYgKCFpc3NldCgkdGhpcy0+ZGF0YVsnYnVpbGQnXSkgfHwgJHRoaXMtPmRhdGFbJ2J1aWxkJ10gIT0gU0lNUExFUElFX0JVSUxEKQoJCQkJCQl7CgkJCQkJCQkkY2FjaGUtPnVubGluaygpOwoJCQkJCQkJJHRoaXMtPmRhdGEgPSBhcnJheSgpOwoJCQkJCQl9CgkJCQkJCS8vIElmIHdlJ3ZlIGhpdCBhIGNvbGxpc2lvbiBqdXN0IHJlcnVuIGl0IHdpdGggY2FjaGluZyBkaXNhYmxlZAoJCQkJCQllbHNlaWYgKGlzc2V0KCR0aGlzLT5kYXRhWyd1cmwnXSkgJiYgJHRoaXMtPmRhdGFbJ3VybCddICE9ICR0aGlzLT5mZWVkX3VybCkKCQkJCQkJewoJCQkJCQkJJGNhY2hlID0gZmFsc2U7CgkJCQkJCQkkdGhpcy0+ZGF0YSA9IGFycmF5KCk7CgkJCQkJCX0KCQkJCQkJLy8gSWYgd2UndmUgZ290IGEgbm9uIGZlZWRfdXJsIHN0b3JlZCAoaWYgdGhlIHBhZ2UgaXNuJ3QgYWN0dWFsbHkgYSBmZWVkLCBvciBpcyBhIHJlZGlyZWN0KSB1c2UgdGhhdCBVUkwuCgkJCQkJCWVsc2VpZiAoaXNzZXQoJHRoaXMtPmRhdGFbJ2ZlZWRfdXJsJ10pKQoJCQkJCQl7CgkJCQkJCQkvLyBJZiB0aGUgYXV0b2Rpc2NvdmVyeSBjYWNoZSBpcyBzdGlsbCB2YWxpZCB1c2UgaXQuCgkJCQkJCQlpZiAoJGNhY2hlLT5tdGltZSgpICsgJHRoaXMtPmF1dG9kaXNjb3ZlcnlfY2FjaGVfZHVyYXRpb24gPiB0aW1lKCkpCgkJCQkJCQl7CgkJCQkJCQkJLy8gRG8gbm90IG5lZWQgdG8gZG8gZmVlZCBhdXRvZGlzY292ZXJ5IHlldC4KCQkJCQkJCQlpZiAoJHRoaXMtPmRhdGFbJ2ZlZWRfdXJsJ10gPT0gJHRoaXMtPmRhdGFbJ3VybCddKQoJCQkJCQkJCXsKCQkJCQkJCQkJJGNhY2hlLT51bmxpbmsoKTsKCQkJCQkJCQkJJHRoaXMtPmRhdGEgPSBhcnJheSgpOwoJCQkJCQkJCX0KCQkJCQkJCQllbHNlCgkJCQkJCQkJewoJCQkJCQkJCQkkdGhpcy0+c2V0X2ZlZWRfdXJsKCR0aGlzLT5kYXRhWydmZWVkX3VybCddKTsKCQkJCQkJCQkJcmV0dXJuICR0aGlzLT5pbml0KCk7CgkJCQkJCQkJfQoJCQkJCQkJfQoJCQkJCQl9CgkJCQkJCS8vIENoZWNrIGlmIHRoZSBjYWNoZSBoYXMgYmVlbiB1cGRhdGVkCgkJCQkJCWVsc2VpZiAoJGNhY2hlLT5tdGltZSgpICsgJHRoaXMtPmNhY2hlX2R1cmF0aW9uIDwgdGltZSgpKQoJCQkJCQl7CgkJCQkJCQkvLyBJZiB3ZSBoYXZlIGxhc3QtbW9kaWZpZWQgYW5kL29yIGV0YWcgc2V0CgkJCQkJCQlpZiAoaXNzZXQoJHRoaXMtPmRhdGFbJ2hlYWRlcnMnXVsnbGFzdC1tb2RpZmllZCddKSB8fCBpc3NldCgkdGhpcy0+ZGF0YVsnaGVhZGVycyddWydldGFnJ10pKQoJCQkJCQkJewoJCQkJCQkJCSRoZWFkZXJzID0gYXJyYXkoKTsKCQkJCQkJCQlpZiAoaXNzZXQoJHRoaXMtPmRhdGFbJ2hlYWRlcnMnXVsnbGFzdC1tb2RpZmllZCddKSkKCQkJCQkJCQl7CgkJCQkJCQkJCSRoZWFkZXJzWydpZi1tb2RpZmllZC1zaW5jZSddID0gJHRoaXMtPmRhdGFbJ2hlYWRlcnMnXVsnbGFzdC1tb2RpZmllZCddOwoJCQkJCQkJCX0KCQkJCQkJCQlpZiAoaXNzZXQoJHRoaXMtPmRhdGFbJ2hlYWRlcnMnXVsnZXRhZyddKSkKCQkJCQkJCQl7CgkJCQkJCQkJCSRoZWFkZXJzWydpZi1ub25lLW1hdGNoJ10gPSAnIicgLiAkdGhpcy0+ZGF0YVsnaGVhZGVycyddWydldGFnJ10gLiAnIic7CgkJCQkJCQkJfQoJCQkJCQkJCSRmaWxlID0mIG5ldyAkdGhpcy0+ZmlsZV9jbGFzcygkdGhpcy0+ZmVlZF91cmwsICR0aGlzLT50aW1lb3V0LzEwLCA1LCAkaGVhZGVycywgJHRoaXMtPnVzZXJhZ2VudCwgJHRoaXMtPmZvcmNlX2Zzb2Nrb3Blbik7CgkJCQkJCQkJaWYgKCRmaWxlLT5zdWNjZXNzKQoJCQkJCQkJCXsKCQkJCQkJCQkJaWYgKCRmaWxlLT5zdGF0dXNfY29kZSA9PSAzMDQpCgkJCQkJCQkJCXsKCQkJCQkJCQkJCSRjYWNoZS0+dG91Y2goKTsKCQkJCQkJCQkJCXJldHVybiB0cnVlOwoJCQkJCQkJCQl9CgkJCQkJCQkJCWVsc2UKCQkJCQkJCQkJewoJCQkJCQkJCQkJJGhlYWRlcnMgPSAkZmlsZS0+aGVhZGVyczsKCQkJCQkJCQkJfQoJCQkJCQkJCX0KCQkJCQkJCQllbHNlCgkJCQkJCQkJewoJCQkJCQkJCQl1bnNldCgkZmlsZSk7CgkJCQkJCQkJfQoJCQkJCQkJfQoJCQkJCQl9CgkJCQkJCS8vIElmIHRoZSBjYWNoZSBpcyBzdGlsbCB2YWxpZCwganVzdCByZXR1cm4gdHJ1ZQoJCQkJCQllbHNlCgkJCQkJCXsKCQkJCQkJCXJldHVybiB0cnVlOwoJCQkJCQl9CgkJCQkJfQoJCQkJCS8vIElmIHRoZSBjYWNoZSBpcyBlbXB0eSwgZGVsZXRlIGl0CgkJCQkJZWxzZQoJCQkJCXsKCQkJCQkJJGNhY2hlLT51bmxpbmsoKTsKCQkJCQkJJHRoaXMtPmRhdGEgPSBhcnJheSgpOwoJCQkJCX0KCQkJCX0KCQkJCS8vIElmIHdlIGRvbid0IGFscmVhZHkgaGF2ZSB0aGUgZmlsZSAoaXQnbGwgb25seSBleGlzdCBpZiB3ZSd2ZSBvcGVuZWQgaXQgdG8gY2hlY2sgaWYgdGhlIGNhY2hlIGhhcyBiZWVuIG1vZGlmaWVkKSwgb3BlbiBpdC4KCQkJCWlmICghaXNzZXQoJGZpbGUpKQoJCQkJewoJCQkJCWlmIChpc19hKCR0aGlzLT5maWxlLCAnU2ltcGxlUGllX0ZpbGUnKSAmJiAkdGhpcy0+ZmlsZS0+dXJsID09ICR0aGlzLT5mZWVkX3VybCkKCQkJCQl7CgkJCQkJCSRmaWxlID0mICR0aGlzLT5maWxlOwoJCQkJCX0KCQkJCQllbHNlCgkJCQkJewoJCQkJCQkkZmlsZSA9JiBuZXcgJHRoaXMtPmZpbGVfY2xhc3MoJHRoaXMtPmZlZWRfdXJsLCAkdGhpcy0+dGltZW91dCwgNSwgbnVsbCwgJHRoaXMtPnVzZXJhZ2VudCwgJHRoaXMtPmZvcmNlX2Zzb2Nrb3Blbik7CgkJCQkJfQoJCQkJfQoJCQkJLy8gSWYgdGhlIGZpbGUgY29ubmVjdGlvbiBoYXMgYW4gZXJyb3IsIHNldCBTaW1wbGVQaWU6OmVycm9yIHRvIHRoYXQgYW5kIHF1aXQKCQkJCWlmICghJGZpbGUtPnN1Y2Nlc3MpCgkJCQl7CgkJCQkJJHRoaXMtPmVycm9yID0gJGZpbGUtPmVycm9yOwoJCQkJCWlmICghZW1wdHkoJHRoaXMtPmRhdGEpKQoJCQkJCXsKCQkJCQkJcmV0dXJuIHRydWU7CgkJCQkJfQoJCQkJCWVsc2UKCQkJCQl7CgkJCQkJCXJldHVybiBmYWxzZTsKCQkJCQl9CgkJCQl9CgoJCQkJaWYgKCEkdGhpcy0+Zm9yY2VfZmVlZCkKCQkJCXsKCQkJCQkvLyBDaGVjayBpZiB0aGUgc3VwcGxpZWQgVVJMIGlzIGEgZmVlZCwgaWYgaXQgaXNuJ3QsIGxvb2sgZm9yIGl0LgoJCQkJCSRsb2NhdGUgPSYgbmV3ICR0aGlzLT5sb2NhdG9yX2NsYXNzKCRmaWxlLCAkdGhpcy0+dGltZW91dCwgJHRoaXMtPnVzZXJhZ2VudCwgJHRoaXMtPmZpbGVfY2xhc3MsICR0aGlzLT5tYXhfY2hlY2tlZF9mZWVkcywgJHRoaXMtPmNvbnRlbnRfdHlwZV9zbmlmZmVyX2NsYXNzKTsKCQkJCQlpZiAoISRsb2NhdGUtPmlzX2ZlZWQoJGZpbGUpKQoJCQkJCXsKCQkJCQkJLy8gV2UgbmVlZCB0byB1bnNldCB0aGlzIHNvIHRoYXQgaWYgU2ltcGxlUGllOjpzZXRfZmlsZSgpIGhhcyBiZWVuIGNhbGxlZCB0aGF0IG9iamVjdCBpcyB1bnRvdWNoZWQKCQkJCQkJdW5zZXQoJGZpbGUpOwoJCQkJCQlpZiAoJGZpbGUgPSAkbG9jYXRlLT5maW5kKCR0aGlzLT5hdXRvZGlzY292ZXJ5KSkKCQkJCQkJewoJCQkJCQkJaWYgKCRjYWNoZSkKCQkJCQkJCXsKCQkJCQkJCQkkdGhpcy0+ZGF0YSA9IGFycmF5KCd1cmwnID0+ICR0aGlzLT5mZWVkX3VybCwgJ2ZlZWRfdXJsJyA9PiAkZmlsZS0+dXJsLCAnYnVpbGQnID0+IFNJTVBMRVBJRV9CVUlMRCk7CgkJCQkJCQkJaWYgKCEkY2FjaGUtPnNhdmUoJHRoaXMpKQoJCQkJCQkJCXsKCQkJCQkJCQkJdHJpZ2dlcl9lcnJvcigiJGNhY2hlLT5uYW1lIGlzIG5vdCB3cml0ZWFibGUiLCBFX1VTRVJfV0FSTklORyk7CgkJCQkJCQkJfQoJCQkJCQkJCSRjYWNoZSA9IGNhbGxfdXNlcl9mdW5jKGFycmF5KCR0aGlzLT5jYWNoZV9jbGFzcywgJ2NyZWF0ZScpLCAkdGhpcy0+Y2FjaGVfbG9jYXRpb24sIGNhbGxfdXNlcl9mdW5jKCR0aGlzLT5jYWNoZV9uYW1lX2Z1bmN0aW9uLCAkZmlsZS0+dXJsKSwgJ3NwYycpOwoJCQkJCQkJfQoJCQkJCQkJJHRoaXMtPmZlZWRfdXJsID0gJGZpbGUtPnVybDsKCQkJCQkJfQoJCQkJCQllbHNlCgkJCQkJCXsKCQkJCQkJCSR0aGlzLT5lcnJvciA9ICJBIGZlZWQgY291bGQgbm90IGJlIGZvdW5kIGF0ICR0aGlzLT5mZWVkX3VybCI7CgkJCQkJCQlTaW1wbGVQaWVfTWlzYzo6ZXJyb3IoJHRoaXMtPmVycm9yLCBFX1VTRVJfTk9USUNFLCBfX0ZJTEVfXywgX19MSU5FX18pOwoJCQkJCQkJcmV0dXJuIGZhbHNlOwoJCQkJCQl9CgkJCQkJfQoJCQkJCSRsb2NhdGUgPSBudWxsOwoJCQkJfQoKCQkJCSRoZWFkZXJzID0gJGZpbGUtPmhlYWRlcnM7CgkJCQkkZGF0YSA9ICRmaWxlLT5ib2R5OwoJCQkJJHNuaWZmZXIgPSBuZXcgJHRoaXMtPmNvbnRlbnRfdHlwZV9zbmlmZmVyX2NsYXNzKCRmaWxlKTsKCQkJCSRzbmlmZmVkID0gJHNuaWZmZXItPmdldF90eXBlKCk7CgkJCX0KCQkJZWxzZQoJCQl7CgkJCQkkZGF0YSA9ICR0aGlzLT5yYXdfZGF0YTsKCQkJfQoKCQkJLy8gU2V0IHVwIGFycmF5IG9mIHBvc3NpYmxlIGVuY29kaW5ncwoJCQkkZW5jb2RpbmdzID0gYXJyYXkoKTsKCgkJCS8vIEZpcnN0IGNoZWNrIHRvIHNlZSBpZiBpbnB1dCBoYXMgYmVlbiBvdmVycmlkZGVuLgoJCQlpZiAoJHRoaXMtPmlucHV0X2VuY29kaW5nICE9PSBmYWxzZSkKCQkJewoJCQkJJGVuY29kaW5nc1tdID0gJHRoaXMtPmlucHV0X2VuY29kaW5nOwoJCQl9CgoJCQkkYXBwbGljYXRpb25fdHlwZXMgPSBhcnJheSgnYXBwbGljYXRpb24veG1sJywgJ2FwcGxpY2F0aW9uL3htbC1kdGQnLCAnYXBwbGljYXRpb24veG1sLWV4dGVybmFsLXBhcnNlZC1lbnRpdHknKTsKCQkJJHRleHRfdHlwZXMgPSBhcnJheSgndGV4dC94bWwnLCAndGV4dC94bWwtZXh0ZXJuYWwtcGFyc2VkLWVudGl0eScpOwoKCQkJLy8gUkZDIDMwMjMgKG9ubHkgYXBwbGllcyB0byBzbmlmZmVkIGNvbnRlbnQpCgkJCWlmIChpc3NldCgkc25pZmZlZCkpCgkJCXsKCQkJCWlmIChpbl9hcnJheSgkc25pZmZlZCwgJGFwcGxpY2F0aW9uX3R5cGVzKSB8fCBzdWJzdHIoJHNuaWZmZWQsIDAsIDEyKSA9PT0gJ2FwcGxpY2F0aW9uLycgJiYgc3Vic3RyKCRzbmlmZmVkLCAtNCkgPT09ICcreG1sJykKCQkJCXsKCQkJCQlpZiAoaXNzZXQoJGhlYWRlcnNbJ2NvbnRlbnQtdHlwZSddKSAmJiBwcmVnX21hdGNoKCcvO1x4MjA/Y2hhcnNldD0oW147XSopL2knLCAkaGVhZGVyc1snY29udGVudC10eXBlJ10sICRjaGFyc2V0KSkKCQkJCQl7CgkJCQkJCSRlbmNvZGluZ3NbXSA9IHN0cnRvdXBwZXIoJGNoYXJzZXRbMV0pOwoJCQkJCX0KCQkJCQkkZW5jb2RpbmdzID0gYXJyYXlfbWVyZ2UoJGVuY29kaW5ncywgU2ltcGxlUGllX01pc2M6OnhtbF9lbmNvZGluZygkZGF0YSkpOwoJCQkJCSRlbmNvZGluZ3NbXSA9ICdVVEYtOCc7CgkJCQl9CgkJCQllbHNlaWYgKGluX2FycmF5KCRzbmlmZmVkLCAkdGV4dF90eXBlcykgfHwgc3Vic3RyKCRzbmlmZmVkLCAwLCA1KSA9PT0gJ3RleHQvJyAmJiBzdWJzdHIoJHNuaWZmZWQsIC00KSA9PT0gJyt4bWwnKQoJCQkJewoJCQkJCWlmIChpc3NldCgkaGVhZGVyc1snY29udGVudC10eXBlJ10pICYmIHByZWdfbWF0Y2goJy87XHgyMD9jaGFyc2V0PShbXjtdKikvaScsICRoZWFkZXJzWydjb250ZW50LXR5cGUnXSwgJGNoYXJzZXQpKQoJCQkJCXsKCQkJCQkJJGVuY29kaW5nc1tdID0gJGNoYXJzZXRbMV07CgkJCQkJfQoJCQkJCSRlbmNvZGluZ3NbXSA9ICdVUy1BU0NJSSc7CgkJCQl9CgkJCQkvLyBUZXh0IE1JTUUtdHlwZSBkZWZhdWx0CgkJCQllbHNlaWYgKHN1YnN0cigkc25pZmZlZCwgMCwgNSkgPT09ICd0ZXh0LycpCgkJCQl7CgkJCQkJJGVuY29kaW5nc1tdID0gJ1VTLUFTQ0lJJzsKCQkJCX0KCQkJfQoKCQkJLy8gRmFsbGJhY2sgdG8gWE1MIDEuMCBBcHBlbmRpeCBGLjEvVVRGLTgvSVNPLTg4NTktMQoJCQkkZW5jb2RpbmdzID0gYXJyYXlfbWVyZ2UoJGVuY29kaW5ncywgU2ltcGxlUGllX01pc2M6OnhtbF9lbmNvZGluZygkZGF0YSkpOwoJCQkkZW5jb2RpbmdzW10gPSAnVVRGLTgnOwoJCQkkZW5jb2RpbmdzW10gPSAnSVNPLTg4NTktMSc7CgoJCQkvLyBUaGVyZSdzIG5vIHBvaW50IGluIHRyeWluZyBhbiBlbmNvZGluZyB0d2ljZQoJCQkkZW5jb2RpbmdzID0gYXJyYXlfdW5pcXVlKCRlbmNvZGluZ3MpOwoKCQkJLy8gSWYgd2Ugd2FudCB0aGUgWE1MLCBqdXN0IG91dHB1dCB0aGF0IHdpdGggdGhlIG1vc3QgbGlrZWx5IGVuY29kaW5nIGFuZCBxdWl0CgkJCWlmICgkdGhpcy0+eG1sX2R1bXApCgkJCXsKCQkJCWhlYWRlcignQ29udGVudC10eXBlOiB0ZXh0L3htbDsgY2hhcnNldD0nIC4gJGVuY29kaW5nc1swXSk7CgkJCQllY2hvICRkYXRhOwoJCQkJZXhpdDsKCQkJfQoKCQkJLy8gTG9vcCB0aHJvdWdoIGVhY2ggcG9zc2libGUgZW5jb2RpbmcsIHRpbGwgd2UgcmV0dXJuIHNvbWV0aGluZywgb3IgcnVuIG91dCBvZiBwb3NzaWJpbGl0aWVzCgkJCWZvcmVhY2ggKCRlbmNvZGluZ3MgYXMgJGVuY29kaW5nKQoJCQl7CgkJCQkvLyBDaGFuZ2UgdGhlIGVuY29kaW5nIHRvIFVURi04IChhcyB3ZSBhbHdheXMgdXNlIFVURi04IGludGVybmFsbHkpCgkJCQlpZiAoJHV0ZjhfZGF0YSA9IFNpbXBsZVBpZV9NaXNjOjpjaGFuZ2VfZW5jb2RpbmcoJGRhdGEsICRlbmNvZGluZywgJ1VURi04JykpCgkJCQl7CgkJCQkJLy8gQ3JlYXRlIG5ldyBwYXJzZXIKCQkJCQkkcGFyc2VyID0mIG5ldyAkdGhpcy0+cGFyc2VyX2NsYXNzKCk7CgoJCQkJCS8vIElmIGl0J3MgcGFyc2VkIGZpbmUKCQkJCQlpZiAoJHBhcnNlci0+cGFyc2UoJHV0ZjhfZGF0YSwgJ1VURi04JykpCgkJCQkJewoJCQkJCQkkdGhpcy0+ZGF0YSA9ICRwYXJzZXItPmdldF9kYXRhKCk7CgkJCQkJCWlmICgkdGhpcy0+Z2V0X3R5cGUoKSAmIH5TSU1QTEVQSUVfVFlQRV9OT05FKQoJCQkJCQl7CgkJCQkJCQlpZiAoaXNzZXQoJGhlYWRlcnMpKQoJCQkJCQkJewoJCQkJCQkJCSR0aGlzLT5kYXRhWydoZWFkZXJzJ10gPSAkaGVhZGVyczsKCQkJCQkJCX0KCQkJCQkJCSR0aGlzLT5kYXRhWydidWlsZCddID0gU0lNUExFUElFX0JVSUxEOwoKCQkJCQkJCS8vIENhY2hlIHRoZSBmaWxlIGlmIGNhY2hpbmcgaXMgZW5hYmxlZAoJCQkJCQkJaWYgKCRjYWNoZSAmJiAhJGNhY2hlLT5zYXZlKCR0aGlzKSkKCQkJCQkJCXsKCQkJCQkJCQl0cmlnZ2VyX2Vycm9yKCIkY2FjaGUtPm5hbWUgaXMgbm90IHdyaXRlYWJsZSIsIEVfVVNFUl9XQVJOSU5HKTsKCQkJCQkJCX0KCQkJCQkJCXJldHVybiB0cnVlOwoJCQkJCQl9CgkJCQkJCWVsc2UKCQkJCQkJewoJCQkJCQkJJHRoaXMtPmVycm9yID0gIkEgZmVlZCBjb3VsZCBub3QgYmUgZm91bmQgYXQgJHRoaXMtPmZlZWRfdXJsIjsKCQkJCQkJCVNpbXBsZVBpZV9NaXNjOjplcnJvcigkdGhpcy0+ZXJyb3IsIEVfVVNFUl9OT1RJQ0UsIF9fRklMRV9fLCBfX0xJTkVfXyk7CgkJCQkJCQlyZXR1cm4gZmFsc2U7CgkJCQkJCX0KCQkJCQl9CgkJCQl9CgkJCX0KCQkJLy8gV2UgaGF2ZSBhbiBlcnJvciwganVzdCBzZXQgU2ltcGxlUGllOjplcnJvciB0byBpdCBhbmQgcXVpdAoJCQkkdGhpcy0+ZXJyb3IgPSBzcHJpbnRmKCdYTUwgZXJyb3I6ICVzIGF0IGxpbmUgJWQsIGNvbHVtbiAlZCcsICRwYXJzZXItPmdldF9lcnJvcl9zdHJpbmcoKSwgJHBhcnNlci0+Z2V0X2N1cnJlbnRfbGluZSgpLCAkcGFyc2VyLT5nZXRfY3VycmVudF9jb2x1bW4oKSk7CgkJCVNpbXBsZVBpZV9NaXNjOjplcnJvcigkdGhpcy0+ZXJyb3IsIEVfVVNFUl9OT1RJQ0UsIF9fRklMRV9fLCBfX0xJTkVfXyk7CgkJCXJldHVybiBmYWxzZTsKCQl9CgkJZWxzZWlmICghZW1wdHkoJHRoaXMtPm11bHRpZmVlZF91cmwpKQoJCXsKCQkJJGkgPSAwOwoJCQkkc3VjY2VzcyA9IDA7CgkJCSR0aGlzLT5tdWx0aWZlZWRfb2JqZWN0cyA9IGFycmF5KCk7CgkJCWZvcmVhY2ggKCR0aGlzLT5tdWx0aWZlZWRfdXJsIGFzICR1cmwpCgkJCXsKCQkJCWlmIChTSU1QTEVQSUVfUEhQNSkKCQkJCXsKCQkJCQkvLyBUaGlzIGtleXdvcmQgbmVlZHMgdG8gZGVmeSBjb2Rpbmcgc3RhbmRhcmRzIGZvciBQSFA0IGNvbXBhdGliaWxpdHkKCQkJCQkkdGhpcy0+bXVsdGlmZWVkX29iamVjdHNbJGldID0gY2xvbmUoJHRoaXMpOwoJCQkJfQoJCQkJZWxzZQoJCQkJewoJCQkJCSR0aGlzLT5tdWx0aWZlZWRfb2JqZWN0c1skaV0gPSAkdGhpczsKCQkJCX0KCQkJCSR0aGlzLT5tdWx0aWZlZWRfb2JqZWN0c1skaV0tPnNldF9mZWVkX3VybCgkdXJsKTsKCQkJCSRzdWNjZXNzIHw9ICR0aGlzLT5tdWx0aWZlZWRfb2JqZWN0c1skaV0tPmluaXQoKTsKCQkJCSRpKys7CgkJCX0KCQkJcmV0dXJuIChib29sKSAkc3VjY2VzczsKCQl9CgkJZWxzZQoJCXsKCQkJcmV0dXJuIGZhbHNlOwoJCX0KCX0KCgkvKioKCSAqIFJldHVybiB0aGUgZXJyb3IgbWVzc2FnZSBmb3IgdGhlIG9jY3VyZWQgZXJyb3IKCSAqCgkgKiBAYWNjZXNzIHB1YmxpYwoJICogQHJldHVybiBzdHJpbmcgRXJyb3IgbWVzc2FnZQoJICovCglmdW5jdGlvbiBlcnJvcigpCgl7CgkJcmV0dXJuICR0aGlzLT5lcnJvcjsKCX0KCglmdW5jdGlvbiBnZXRfZW5jb2RpbmcoKQoJewoJCXJldHVybiAkdGhpcy0+c2FuaXRpemUtPm91dHB1dF9lbmNvZGluZzsKCX0KCglmdW5jdGlvbiBoYW5kbGVfY29udGVudF90eXBlKCRtaW1lID0gJ3RleHQvaHRtbCcpCgl7CgkJaWYgKCFoZWFkZXJzX3NlbnQoKSkKCQl7CgkJCSRoZWFkZXIgPSAiQ29udGVudC10eXBlOiAkbWltZTsiOwoJCQlpZiAoJHRoaXMtPmdldF9lbmNvZGluZygpKQoJCQl7CgkJCQkkaGVhZGVyIC49ICcgY2hhcnNldD0nIC4gJHRoaXMtPmdldF9lbmNvZGluZygpOwoJCQl9CgkJCWVsc2UKCQkJewoJCQkJJGhlYWRlciAuPSAnIGNoYXJzZXQ9VVRGLTgnOwoJCQl9CgkJCWhlYWRlcigkaGVhZGVyKTsKCQl9Cgl9CgoJZnVuY3Rpb24gZ2V0X3R5cGUoKQoJewoJCWlmICghaXNzZXQoJHRoaXMtPmRhdGFbJ3R5cGUnXSkpCgkJewoJCQkkdGhpcy0+ZGF0YVsndHlwZSddID0gU0lNUExFUElFX1RZUEVfQUxMOwoJCQlpZiAoaXNzZXQoJHRoaXMtPmRhdGFbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9BVE9NXzEwXVsnZmVlZCddKSkKCQkJewoJCQkJJHRoaXMtPmRhdGFbJ3R5cGUnXSAmPSBTSU1QTEVQSUVfVFlQRV9BVE9NXzEwOwoJCQl9CgkJCWVsc2VpZiAoaXNzZXQoJHRoaXMtPmRhdGFbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9BVE9NXzAzXVsnZmVlZCddKSkKCQkJewoJCQkJJHRoaXMtPmRhdGFbJ3R5cGUnXSAmPSBTSU1QTEVQSUVfVFlQRV9BVE9NXzAzOwoJCQl9CgkJCWVsc2VpZiAoaXNzZXQoJHRoaXMtPmRhdGFbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9SREZdWydSREYnXSkpCgkJCXsKCQkJCWlmIChpc3NldCgkdGhpcy0+ZGF0YVsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX1JERl1bJ1JERiddWzBdWydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfUlNTXzEwXVsnY2hhbm5lbCddKQoJCQkJfHwgaXNzZXQoJHRoaXMtPmRhdGFbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9SREZdWydSREYnXVswXVsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX1JTU18xMF1bJ2ltYWdlJ10pCgkJCQl8fCBpc3NldCgkdGhpcy0+ZGF0YVsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX1JERl1bJ1JERiddWzBdWydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfUlNTXzEwXVsnaXRlbSddKQoJCQkJfHwgaXNzZXQoJHRoaXMtPmRhdGFbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9SREZdWydSREYnXVswXVsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX1JTU18xMF1bJ3RleHRpbnB1dCddKSkKCQkJCXsKCQkJCQkkdGhpcy0+ZGF0YVsndHlwZSddICY9IFNJTVBMRVBJRV9UWVBFX1JTU18xMDsKCQkJCX0KCQkJCWlmIChpc3NldCgkdGhpcy0+ZGF0YVsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX1JERl1bJ1JERiddWzBdWydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfUlNTXzA5MF1bJ2NoYW5uZWwnXSkKCQkJCXx8IGlzc2V0KCR0aGlzLT5kYXRhWydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfUkRGXVsnUkRGJ11bMF1bJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9SU1NfMDkwXVsnaW1hZ2UnXSkKCQkJCXx8IGlzc2V0KCR0aGlzLT5kYXRhWydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfUkRGXVsnUkRGJ11bMF1bJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9SU1NfMDkwXVsnaXRlbSddKQoJCQkJfHwgaXNzZXQoJHRoaXMtPmRhdGFbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9SREZdWydSREYnXVswXVsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX1JTU18wOTBdWyd0ZXh0aW5wdXQnXSkpCgkJCQl7CgkJCQkJJHRoaXMtPmRhdGFbJ3R5cGUnXSAmPSBTSU1QTEVQSUVfVFlQRV9SU1NfMDkwOwoJCQkJfQoJCQl9CgkJCWVsc2VpZiAoaXNzZXQoJHRoaXMtPmRhdGFbJ2NoaWxkJ11bJyddWydyc3MnXSkpCgkJCXsKCQkJCSR0aGlzLT5kYXRhWyd0eXBlJ10gJj0gU0lNUExFUElFX1RZUEVfUlNTX0FMTDsKCQkJCWlmIChpc3NldCgkdGhpcy0+ZGF0YVsnY2hpbGQnXVsnJ11bJ3JzcyddWzBdWydhdHRyaWJzJ11bJyddWyd2ZXJzaW9uJ10pKQoJCQkJewoJCQkJCXN3aXRjaCAodHJpbSgkdGhpcy0+ZGF0YVsnY2hpbGQnXVsnJ11bJ3JzcyddWzBdWydhdHRyaWJzJ11bJyddWyd2ZXJzaW9uJ10pKQoJCQkJCXsKCQkJCQkJY2FzZSAnMC45MSc6CgkJCQkJCQkkdGhpcy0+ZGF0YVsndHlwZSddICY9IFNJTVBMRVBJRV9UWVBFX1JTU18wOTE7CgkJCQkJCQlpZiAoaXNzZXQoJHRoaXMtPmRhdGFbJ2NoaWxkJ11bJyddWydyc3MnXVswXVsnY2hpbGQnXVsnJ11bJ3NraXBob3VycyddWydob3VyJ11bMF1bJ2RhdGEnXSkpCgkJCQkJCQl7CgkJCQkJCQkJc3dpdGNoICh0cmltKCR0aGlzLT5kYXRhWydjaGlsZCddWycnXVsncnNzJ11bMF1bJ2NoaWxkJ11bJyddWydza2lwaG91cnMnXVsnaG91ciddWzBdWydkYXRhJ10pKQoJCQkJCQkJCXsKCQkJCQkJCQkJY2FzZSAnMCc6CgkJCQkJCQkJCQkkdGhpcy0+ZGF0YVsndHlwZSddICY9IFNJTVBMRVBJRV9UWVBFX1JTU18wOTFfTkVUU0NBUEU7CgkJCQkJCQkJCQlicmVhazsKCgkJCQkJCQkJCWNhc2UgJzI0JzoKCQkJCQkJCQkJCSR0aGlzLT5kYXRhWyd0eXBlJ10gJj0gU0lNUExFUElFX1RZUEVfUlNTXzA5MV9VU0VSTEFORDsKCQkJCQkJCQkJCWJyZWFrOwoJCQkJCQkJCX0KCQkJCQkJCX0KCQkJCQkJCWJyZWFrOwoKCQkJCQkJY2FzZSAnMC45Mic6CgkJCQkJCQkkdGhpcy0+ZGF0YVsndHlwZSddICY9IFNJTVBMRVBJRV9UWVBFX1JTU18wOTI7CgkJCQkJCQlicmVhazsKCgkJCQkJCWNhc2UgJzAuOTMnOgoJCQkJCQkJJHRoaXMtPmRhdGFbJ3R5cGUnXSAmPSBTSU1QTEVQSUVfVFlQRV9SU1NfMDkzOwoJCQkJCQkJYnJlYWs7CgoJCQkJCQljYXNlICcwLjk0JzoKCQkJCQkJCSR0aGlzLT5kYXRhWyd0eXBlJ10gJj0gU0lNUExFUElFX1RZUEVfUlNTXzA5NDsKCQkJCQkJCWJyZWFrOwoKCQkJCQkJY2FzZSAnMi4wJzoKCQkJCQkJCSR0aGlzLT5kYXRhWyd0eXBlJ10gJj0gU0lNUExFUElFX1RZUEVfUlNTXzIwOwoJCQkJCQkJYnJlYWs7CgkJCQkJfQoJCQkJfQoJCQl9CgkJCWVsc2UKCQkJewoJCQkJJHRoaXMtPmRhdGFbJ3R5cGUnXSA9IFNJTVBMRVBJRV9UWVBFX05PTkU7CgkJCX0KCQl9CgkJcmV0dXJuICR0aGlzLT5kYXRhWyd0eXBlJ107Cgl9CgoJLyoqCgkgKiBSZXR1cm5zIHRoZSBVUkwgZm9yIHRoZSBmYXZpY29uIG9mIHRoZSBmZWVkJ3Mgd2Vic2l0ZS4KCSAqCgkgKiBAdG9kbyBDYWNoZSBhdG9tOmljb24KCSAqIEBhY2Nlc3MgcHVibGljCgkgKiBAc2luY2UgMS4wCgkgKi8KCWZ1bmN0aW9uIGdldF9mYXZpY29uKCkKCXsKCQlpZiAoJHJldHVybiA9ICR0aGlzLT5nZXRfY2hhbm5lbF90YWdzKFNJTVBMRVBJRV9OQU1FU1BBQ0VfQVRPTV8xMCwgJ2ljb24nKSkKCQl7CgkJCXJldHVybiAkdGhpcy0+c2FuaXRpemUoJHJldHVyblswXVsnZGF0YSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX0lSSSwgJHRoaXMtPmdldF9iYXNlKCRyZXR1cm5bMF0pKTsKCQl9CgkJZWxzZWlmICgoJHVybCA9ICR0aGlzLT5nZXRfbGluaygpKSAhPT0gbnVsbCAmJiBwcmVnX21hdGNoKCcvXmh0dHAocyk/OlwvXC8vaScsICR1cmwpKQoJCXsKCQkJJGZhdmljb24gPSBTaW1wbGVQaWVfTWlzYzo6YWJzb2x1dGl6ZV91cmwoJy9mYXZpY29uLmljbycsICR1cmwpOwoKCQkJaWYgKCR0aGlzLT5jYWNoZSAmJiAkdGhpcy0+ZmF2aWNvbl9oYW5kbGVyKQoJCQl7CgkJCQkkZmF2aWNvbl9maWxlbmFtZSA9IGNhbGxfdXNlcl9mdW5jKCR0aGlzLT5jYWNoZV9uYW1lX2Z1bmN0aW9uLCAkZmF2aWNvbik7CgkJCQkkY2FjaGUgPSBjYWxsX3VzZXJfZnVuYyhhcnJheSgkdGhpcy0+Y2FjaGVfY2xhc3MsICdjcmVhdGUnKSwgJHRoaXMtPmNhY2hlX2xvY2F0aW9uLCAkZmF2aWNvbl9maWxlbmFtZSwgJ3NwaScpOwoKCQkJCWlmICgkY2FjaGUtPmxvYWQoKSkKCQkJCXsKCQkJCQlyZXR1cm4gJHRoaXMtPnNhbml0aXplKCR0aGlzLT5mYXZpY29uX2hhbmRsZXIgLiAkZmF2aWNvbl9maWxlbmFtZSwgU0lNUExFUElFX0NPTlNUUlVDVF9JUkkpOwoJCQkJfQoJCQkJZWxzZQoJCQkJewoJCQkJCSRmaWxlID0mIG5ldyAkdGhpcy0+ZmlsZV9jbGFzcygkZmF2aWNvbiwgJHRoaXMtPnRpbWVvdXQgLyAxMCwgNSwgYXJyYXkoJ1gtRk9SV0FSREVELUZPUicgPT4gJF9TRVJWRVJbJ1JFTU9URV9BRERSJ10pLCAkdGhpcy0+dXNlcmFnZW50LCAkdGhpcy0+Zm9yY2VfZnNvY2tvcGVuKTsKCgkJCQkJaWYgKCRmaWxlLT5zdWNjZXNzICYmICgkZmlsZS0+c3RhdHVzX2NvZGUgPT0gMjAwIHx8ICgkZmlsZS0+c3RhdHVzX2NvZGUgPiAyMDYgJiYgJGZpbGUtPnN0YXR1c19jb2RlIDwgMzAwKSkgJiYgc3RybGVuKCRmaWxlLT5ib2R5KSA+IDApCgkJCQkJewoJCQkJCQkkc25pZmZlciA9IG5ldyAkdGhpcy0+Y29udGVudF90eXBlX3NuaWZmZXJfY2xhc3MoJGZpbGUpOwoJCQkJCQlpZiAoc3Vic3RyKCRzbmlmZmVyLT5nZXRfdHlwZSgpLCAwLCA2KSA9PT0gJ2ltYWdlLycpCgkJCQkJCXsKCQkJCQkJCWlmICgkY2FjaGUtPnNhdmUoYXJyYXkoJ2hlYWRlcnMnID0+ICRmaWxlLT5oZWFkZXJzLCAnYm9keScgPT4gJGZpbGUtPmJvZHkpKSkKCQkJCQkJCXsKCQkJCQkJCQlyZXR1cm4gJHRoaXMtPnNhbml0aXplKCR0aGlzLT5mYXZpY29uX2hhbmRsZXIgLiAkZmF2aWNvbl9maWxlbmFtZSwgU0lNUExFUElFX0NPTlNUUlVDVF9JUkkpOwoJCQkJCQkJfQoJCQkJCQkJZWxzZQoJCQkJCQkJewoJCQkJCQkJCXRyaWdnZXJfZXJyb3IoIiRjYWNoZS0+bmFtZSBpcyBub3Qgd3JpdGVhYmxlIiwgRV9VU0VSX1dBUk5JTkcpOwoJCQkJCQkJCXJldHVybiAkdGhpcy0+c2FuaXRpemUoJGZhdmljb24sIFNJTVBMRVBJRV9DT05TVFJVQ1RfSVJJKTsKCQkJCQkJCX0KCQkJCQkJfQoJCQkJCX0KCQkJCX0KCQkJfQoJCQllbHNlCgkJCXsKCQkJCXJldHVybiAkdGhpcy0+c2FuaXRpemUoJGZhdmljb24sIFNJTVBMRVBJRV9DT05TVFJVQ1RfSVJJKTsKCQkJfQoJCX0KCQlyZXR1cm4gZmFsc2U7Cgl9CgoJLyoqCgkgKiBAdG9kbyBJZiB3ZSBoYXZlIGEgcGVybSByZWRpcmVjdCB3ZSBzaG91bGQgcmV0dXJuIHRoZSBuZXcgVVJMCgkgKiBAdG9kbyBXaGVuIHdlIG1ha2UgdGhlIGFib3ZlIGNoYW5nZSwgbGV0J3Mgc3VwcG9ydCA8aXR1bmVzOm5ldy1mZWVkLXVybD4gYXMgd2VsbAoJICogQHRvZG8gQWxzbywgfGF0b206bGlua3xAcmVsPXNlbGYKCSAqLwoJZnVuY3Rpb24gc3Vic2NyaWJlX3VybCgpCgl7CgkJaWYgKCR0aGlzLT5mZWVkX3VybCAhPT0gbnVsbCkKCQl7CgkJCXJldHVybiAkdGhpcy0+c2FuaXRpemUoJHRoaXMtPmZlZWRfdXJsLCBTSU1QTEVQSUVfQ09OU1RSVUNUX0lSSSk7CgkJfQoJCWVsc2UKCQl7CgkJCXJldHVybiBudWxsOwoJCX0KCX0KCglmdW5jdGlvbiBzdWJzY3JpYmVfZmVlZCgpCgl7CgkJaWYgKCR0aGlzLT5mZWVkX3VybCAhPT0gbnVsbCkKCQl7CgkJCXJldHVybiAkdGhpcy0+c2FuaXRpemUoU2ltcGxlUGllX01pc2M6OmZpeF9wcm90b2NvbCgkdGhpcy0+ZmVlZF91cmwsIDIpLCBTSU1QTEVQSUVfQ09OU1RSVUNUX0lSSSk7CgkJfQoJCWVsc2UKCQl7CgkJCXJldHVybiBudWxsOwoJCX0KCX0KCglmdW5jdGlvbiBzdWJzY3JpYmVfb3V0bG9vaygpCgl7CgkJaWYgKCR0aGlzLT5mZWVkX3VybCAhPT0gbnVsbCkKCQl7CgkJCXJldHVybiAnb3V0bG9vaycgLiAkdGhpcy0+c2FuaXRpemUoU2ltcGxlUGllX01pc2M6OmZpeF9wcm90b2NvbCgkdGhpcy0+ZmVlZF91cmwsIDIpLCBTSU1QTEVQSUVfQ09OU1RSVUNUX0lSSSk7CgkJfQoJCWVsc2UKCQl7CgkJCXJldHVybiBudWxsOwoJCX0KCX0KCglmdW5jdGlvbiBzdWJzY3JpYmVfcG9kY2FzdCgpCgl7CgkJaWYgKCR0aGlzLT5mZWVkX3VybCAhPT0gbnVsbCkKCQl7CgkJCXJldHVybiAkdGhpcy0+c2FuaXRpemUoU2ltcGxlUGllX01pc2M6OmZpeF9wcm90b2NvbCgkdGhpcy0+ZmVlZF91cmwsIDMpLCBTSU1QTEVQSUVfQ09OU1RSVUNUX0lSSSk7CgkJfQoJCWVsc2UKCQl7CgkJCXJldHVybiBudWxsOwoJCX0KCX0KCglmdW5jdGlvbiBzdWJzY3JpYmVfaXR1bmVzKCkKCXsKCQlpZiAoJHRoaXMtPmZlZWRfdXJsICE9PSBudWxsKQoJCXsKCQkJcmV0dXJuICR0aGlzLT5zYW5pdGl6ZShTaW1wbGVQaWVfTWlzYzo6Zml4X3Byb3RvY29sKCR0aGlzLT5mZWVkX3VybCwgNCksIFNJTVBMRVBJRV9DT05TVFJVQ1RfSVJJKTsKCQl9CgkJZWxzZQoJCXsKCQkJcmV0dXJuIG51bGw7CgkJfQoJfQoKCS8qKgoJICogQ3JlYXRlcyB0aGUgc3Vic2NyaWJlXyogbWV0aG9kcycgcmV0dXJuIGRhdGEKCSAqCgkgKiBAYWNjZXNzIHByaXZhdGUKCSAqIEBwYXJhbSBzdHJpbmcgJGZlZWRfdXJsIFN0cmluZyB0byBwcmVmaXggdG8gdGhlIGZlZWQgVVJMCgkgKiBAcGFyYW0gc3RyaW5nICRzaXRlX3VybCBTdHJpbmcgdG8gcHJlZml4IHRvIHRoZSBzaXRlIFVSTCAoYW5kCgkgKiBzdWZmaXggdG8gdGhlIGZlZWQgVVJMKQoJICogQHJldHVybiBtaXhlZCBVUkwgaWYgZmVlZCBleGlzdHMsIGZhbHNlIG90aGVyd2lzZQoJICovCglmdW5jdGlvbiBzdWJzY3JpYmVfc2VydmljZSgkZmVlZF91cmwsICRzaXRlX3VybCA9IG51bGwpCgl7CgkJaWYgKCR0aGlzLT5zdWJzY3JpYmVfdXJsKCkpCgkJewoJCQkkcmV0dXJuID0gJHRoaXMtPnNhbml0aXplKCRmZWVkX3VybCwgU0lNUExFUElFX0NPTlNUUlVDVF9JUkkpIC4gcmF3dXJsZW5jb2RlKCR0aGlzLT5mZWVkX3VybCk7CgkJCWlmICgkc2l0ZV91cmwgIT09IG51bGwgJiYgJHRoaXMtPmdldF9saW5rKCkgIT09IG51bGwpCgkJCXsKCQkJCSRyZXR1cm4gLj0gJHRoaXMtPnNhbml0aXplKCRzaXRlX3VybCwgU0lNUExFUElFX0NPTlNUUlVDVF9JUkkpIC4gcmF3dXJsZW5jb2RlKCR0aGlzLT5nZXRfbGluaygpKTsKCQkJfQoJCQlyZXR1cm4gJHJldHVybjsKCQl9CgkJZWxzZQoJCXsKCQkJcmV0dXJuIG51bGw7CgkJfQoJfQoKCWZ1bmN0aW9uIHN1YnNjcmliZV9hb2woKQoJewoJCXJldHVybiAkdGhpcy0+c3Vic2NyaWJlX3NlcnZpY2UoJ2h0dHA6Ly9mZWVkcy5teS5hb2wuY29tL2FkZC5qc3A/dXJsPScpOwoJfQoKCWZ1bmN0aW9uIHN1YnNjcmliZV9ibG9nbGluZXMoKQoJewoJCXJldHVybiB1cmxkZWNvZGUoJHRoaXMtPnN1YnNjcmliZV9zZXJ2aWNlKCdodHRwOi8vd3d3LmJsb2dsaW5lcy5jb20vc3ViLycpKTsKCX0KCglmdW5jdGlvbiBzdWJzY3JpYmVfZXNrb2JvKCkKCXsKCQlyZXR1cm4gJHRoaXMtPnN1YnNjcmliZV9zZXJ2aWNlKCdodHRwOi8vd3d3LmVza29iby5jb20vP0FkZFRvTXlQYWdlPScpOwoJfQoKCWZ1bmN0aW9uIHN1YnNjcmliZV9mZWVkZmVlZHMoKQoJewoJCXJldHVybiAkdGhpcy0+c3Vic2NyaWJlX3NlcnZpY2UoJ2h0dHA6Ly93d3cuZmVlZGZlZWRzLmNvbS9hZGQ/ZmVlZD0nKTsKCX0KCglmdW5jdGlvbiBzdWJzY3JpYmVfZmVlZHN0ZXIoKQoJewoJCXJldHVybiAkdGhpcy0+c3Vic2NyaWJlX3NlcnZpY2UoJ2h0dHA6Ly93d3cuZmVlZHN0ZXIuY29tL215ZmVlZHN0ZXIucGhwP2FjdGlvbj1hZGRyc3MmY29uZmlybT1ubyZyc3N1cmw9Jyk7Cgl9CgoJZnVuY3Rpb24gc3Vic2NyaWJlX2dvb2dsZSgpCgl7CgkJcmV0dXJuICR0aGlzLT5zdWJzY3JpYmVfc2VydmljZSgnaHR0cDovL2Z1c2lvbi5nb29nbGUuY29tL2FkZD9mZWVkdXJsPScpOwoJfQoKCWZ1bmN0aW9uIHN1YnNjcmliZV9ncml0d2lyZSgpCgl7CgkJcmV0dXJuICR0aGlzLT5zdWJzY3JpYmVfc2VydmljZSgnaHR0cDovL215LmdyaXR3aXJlLmNvbS9mZWVkcy9hZGRFeHRlcm5hbEZlZWQuYXNweD9GZWVkVXJsPScpOwoJfQoKCWZ1bmN0aW9uIHN1YnNjcmliZV9tc24oKQoJewoJCXJldHVybiAkdGhpcy0+c3Vic2NyaWJlX3NlcnZpY2UoJ2h0dHA6Ly9teS5tc24uY29tL2FkZHRvbXltc24uYXJteD9pZD1yc3MmdXQ9JywgJyZydT0nKTsKCX0KCglmdW5jdGlvbiBzdWJzY3JpYmVfbmV0dmliZXMoKQoJewoJCXJldHVybiAkdGhpcy0+c3Vic2NyaWJlX3NlcnZpY2UoJ2h0dHA6Ly93d3cubmV0dmliZXMuY29tL3N1YnNjcmliZS5waHA/dXJsPScpOwoJfQoKCWZ1bmN0aW9uIHN1YnNjcmliZV9uZXdzYnVyc3QoKQoJewoJCXJldHVybiAkdGhpcy0+c3Vic2NyaWJlX3NlcnZpY2UoJ2h0dHA6Ly93d3cubmV3c2J1cnN0LmNvbS9Tb3VyY2UvP2FkZD0nKTsKCX0KCglmdW5jdGlvbiBzdWJzY3JpYmVfbmV3c2dhdG9yKCkKCXsKCQlyZXR1cm4gJHRoaXMtPnN1YnNjcmliZV9zZXJ2aWNlKCdodHRwOi8vd3d3Lm5ld3NnYXRvci5jb20vbmdzL3N1YnNjcmliZXIvc3ViZXh0LmFzcHg/dXJsPScpOwoJfQoKCWZ1bmN0aW9uIHN1YnNjcmliZV9vZGVvKCkKCXsKCQlyZXR1cm4gJHRoaXMtPnN1YnNjcmliZV9zZXJ2aWNlKCdodHRwOi8vd3d3Lm9kZW8uY29tL2xpc3Rlbi9zdWJzY3JpYmU/ZmVlZD0nKTsKCX0KCglmdW5jdGlvbiBzdWJzY3JpYmVfcG9kbm92YSgpCgl7CgkJcmV0dXJuICR0aGlzLT5zdWJzY3JpYmVfc2VydmljZSgnaHR0cDovL3d3dy5wb2Rub3ZhLmNvbS9pbmRleF95b3VyX3BvZGNhc3RzLnNyZj9hY3Rpb249YWRkJnVybD0nKTsKCX0KCglmdW5jdGlvbiBzdWJzY3JpYmVfcm9qbygpCgl7CgkJcmV0dXJuICR0aGlzLT5zdWJzY3JpYmVfc2VydmljZSgnaHR0cDovL3d3dy5yb2pvLmNvbS9hZGQtc3Vic2NyaXB0aW9uP3Jlc291cmNlPScpOwoJfQoKCWZ1bmN0aW9uIHN1YnNjcmliZV95YWhvbygpCgl7CgkJcmV0dXJuICR0aGlzLT5zdWJzY3JpYmVfc2VydmljZSgnaHR0cDovL2FkZC5teS55YWhvby5jb20vcnNzP3VybD0nKTsKCX0KCglmdW5jdGlvbiBnZXRfZmVlZF90YWdzKCRuYW1lc3BhY2UsICR0YWcpCgl7CgkJJHR5cGUgPSAkdGhpcy0+Z2V0X3R5cGUoKTsKCQlpZiAoJHR5cGUgJiBTSU1QTEVQSUVfVFlQRV9BVE9NXzEwKQoJCXsKCQkJaWYgKGlzc2V0KCR0aGlzLT5kYXRhWydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfQVRPTV8xMF1bJ2ZlZWQnXVswXVsnY2hpbGQnXVskbmFtZXNwYWNlXVskdGFnXSkpCgkJCXsKCQkJCXJldHVybiAkdGhpcy0+ZGF0YVsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMTBdWydmZWVkJ11bMF1bJ2NoaWxkJ11bJG5hbWVzcGFjZV1bJHRhZ107CgkJCX0KCQl9CgkJaWYgKCR0eXBlICYgU0lNUExFUElFX1RZUEVfQVRPTV8wMykKCQl7CgkJCWlmIChpc3NldCgkdGhpcy0+ZGF0YVsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMDNdWydmZWVkJ11bMF1bJ2NoaWxkJ11bJG5hbWVzcGFjZV1bJHRhZ10pKQoJCQl7CgkJCQlyZXR1cm4gJHRoaXMtPmRhdGFbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9BVE9NXzAzXVsnZmVlZCddWzBdWydjaGlsZCddWyRuYW1lc3BhY2VdWyR0YWddOwoJCQl9CgkJfQoJCWlmICgkdHlwZSAmIFNJTVBMRVBJRV9UWVBFX1JTU19SREYpCgkJewoJCQlpZiAoaXNzZXQoJHRoaXMtPmRhdGFbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9SREZdWydSREYnXVswXVsnY2hpbGQnXVskbmFtZXNwYWNlXVskdGFnXSkpCgkJCXsKCQkJCXJldHVybiAkdGhpcy0+ZGF0YVsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX1JERl1bJ1JERiddWzBdWydjaGlsZCddWyRuYW1lc3BhY2VdWyR0YWddOwoJCQl9CgkJfQoJCWlmICgkdHlwZSAmIFNJTVBMRVBJRV9UWVBFX1JTU19TWU5ESUNBVElPTikKCQl7CgkJCWlmIChpc3NldCgkdGhpcy0+ZGF0YVsnY2hpbGQnXVsnJ11bJ3JzcyddWzBdWydjaGlsZCddWyRuYW1lc3BhY2VdWyR0YWddKSkKCQkJewoJCQkJcmV0dXJuICR0aGlzLT5kYXRhWydjaGlsZCddWycnXVsncnNzJ11bMF1bJ2NoaWxkJ11bJG5hbWVzcGFjZV1bJHRhZ107CgkJCX0KCQl9CgkJcmV0dXJuIG51bGw7Cgl9CgoJZnVuY3Rpb24gZ2V0X2NoYW5uZWxfdGFncygkbmFtZXNwYWNlLCAkdGFnKQoJewoJCSR0eXBlID0gJHRoaXMtPmdldF90eXBlKCk7CgkJaWYgKCR0eXBlICYgU0lNUExFUElFX1RZUEVfQVRPTV9BTEwpCgkJewoJCQlpZiAoJHJldHVybiA9ICR0aGlzLT5nZXRfZmVlZF90YWdzKCRuYW1lc3BhY2UsICR0YWcpKQoJCQl7CgkJCQlyZXR1cm4gJHJldHVybjsKCQkJfQoJCX0KCQlpZiAoJHR5cGUgJiBTSU1QTEVQSUVfVFlQRV9SU1NfMTApCgkJewoJCQlpZiAoJGNoYW5uZWwgPSAkdGhpcy0+Z2V0X2ZlZWRfdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX1JTU18xMCwgJ2NoYW5uZWwnKSkKCQkJewoJCQkJaWYgKGlzc2V0KCRjaGFubmVsWzBdWydjaGlsZCddWyRuYW1lc3BhY2VdWyR0YWddKSkKCQkJCXsKCQkJCQlyZXR1cm4gJGNoYW5uZWxbMF1bJ2NoaWxkJ11bJG5hbWVzcGFjZV1bJHRhZ107CgkJCQl9CgkJCX0KCQl9CgkJaWYgKCR0eXBlICYgU0lNUExFUElFX1RZUEVfUlNTXzA5MCkKCQl7CgkJCWlmICgkY2hhbm5lbCA9ICR0aGlzLT5nZXRfZmVlZF90YWdzKFNJTVBMRVBJRV9OQU1FU1BBQ0VfUlNTXzA5MCwgJ2NoYW5uZWwnKSkKCQkJewoJCQkJaWYgKGlzc2V0KCRjaGFubmVsWzBdWydjaGlsZCddWyRuYW1lc3BhY2VdWyR0YWddKSkKCQkJCXsKCQkJCQlyZXR1cm4gJGNoYW5uZWxbMF1bJ2NoaWxkJ11bJG5hbWVzcGFjZV1bJHRhZ107CgkJCQl9CgkJCX0KCQl9CgkJaWYgKCR0eXBlICYgU0lNUExFUElFX1RZUEVfUlNTX1NZTkRJQ0FUSU9OKQoJCXsKCQkJaWYgKCRjaGFubmVsID0gJHRoaXMtPmdldF9mZWVkX3RhZ3MoJycsICdjaGFubmVsJykpCgkJCXsKCQkJCWlmIChpc3NldCgkY2hhbm5lbFswXVsnY2hpbGQnXVskbmFtZXNwYWNlXVskdGFnXSkpCgkJCQl7CgkJCQkJcmV0dXJuICRjaGFubmVsWzBdWydjaGlsZCddWyRuYW1lc3BhY2VdWyR0YWddOwoJCQkJfQoJCQl9CgkJfQoJCXJldHVybiBudWxsOwoJfQoKCWZ1bmN0aW9uIGdldF9pbWFnZV90YWdzKCRuYW1lc3BhY2UsICR0YWcpCgl7CgkJJHR5cGUgPSAkdGhpcy0+Z2V0X3R5cGUoKTsKCQlpZiAoJHR5cGUgJiBTSU1QTEVQSUVfVFlQRV9SU1NfMTApCgkJewoJCQlpZiAoJGltYWdlID0gJHRoaXMtPmdldF9mZWVkX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9SU1NfMTAsICdpbWFnZScpKQoJCQl7CgkJCQlpZiAoaXNzZXQoJGltYWdlWzBdWydjaGlsZCddWyRuYW1lc3BhY2VdWyR0YWddKSkKCQkJCXsKCQkJCQlyZXR1cm4gJGltYWdlWzBdWydjaGlsZCddWyRuYW1lc3BhY2VdWyR0YWddOwoJCQkJfQoJCQl9CgkJfQoJCWlmICgkdHlwZSAmIFNJTVBMRVBJRV9UWVBFX1JTU18wOTApCgkJewoJCQlpZiAoJGltYWdlID0gJHRoaXMtPmdldF9mZWVkX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9SU1NfMDkwLCAnaW1hZ2UnKSkKCQkJewoJCQkJaWYgKGlzc2V0KCRpbWFnZVswXVsnY2hpbGQnXVskbmFtZXNwYWNlXVskdGFnXSkpCgkJCQl7CgkJCQkJcmV0dXJuICRpbWFnZVswXVsnY2hpbGQnXVskbmFtZXNwYWNlXVskdGFnXTsKCQkJCX0KCQkJfQoJCX0KCQlpZiAoJHR5cGUgJiBTSU1QTEVQSUVfVFlQRV9SU1NfU1lORElDQVRJT04pCgkJewoJCQlpZiAoJGltYWdlID0gJHRoaXMtPmdldF9jaGFubmVsX3RhZ3MoJycsICdpbWFnZScpKQoJCQl7CgkJCQlpZiAoaXNzZXQoJGltYWdlWzBdWydjaGlsZCddWyRuYW1lc3BhY2VdWyR0YWddKSkKCQkJCXsKCQkJCQlyZXR1cm4gJGltYWdlWzBdWydjaGlsZCddWyRuYW1lc3BhY2VdWyR0YWddOwoJCQkJfQoJCQl9CgkJfQoJCXJldHVybiBudWxsOwoJfQoKCWZ1bmN0aW9uIGdldF9iYXNlKCRlbGVtZW50ID0gYXJyYXkoKSkKCXsKCQlpZiAoISgkdGhpcy0+Z2V0X3R5cGUoKSAmIFNJTVBMRVBJRV9UWVBFX1JTU19TWU5ESUNBVElPTikgJiYgIWVtcHR5KCRlbGVtZW50Wyd4bWxfYmFzZV9leHBsaWNpdCddKSAmJiBpc3NldCgkZWxlbWVudFsneG1sX2Jhc2UnXSkpCgkJewoJCQlyZXR1cm4gJGVsZW1lbnRbJ3htbF9iYXNlJ107CgkJfQoJCWVsc2VpZiAoJHRoaXMtPmdldF9saW5rKCkgIT09IG51bGwpCgkJewoJCQlyZXR1cm4gJHRoaXMtPmdldF9saW5rKCk7CgkJfQoJCWVsc2UKCQl7CgkJCXJldHVybiAkdGhpcy0+c3Vic2NyaWJlX3VybCgpOwoJCX0KCX0KCglmdW5jdGlvbiBzYW5pdGl6ZSgkZGF0YSwgJHR5cGUsICRiYXNlID0gJycpCgl7CgkJcmV0dXJuICR0aGlzLT5zYW5pdGl6ZS0+c2FuaXRpemUoJGRhdGEsICR0eXBlLCAkYmFzZSk7Cgl9CgoJZnVuY3Rpb24gZ2V0X3RpdGxlKCkKCXsKCQlpZiAoJHJldHVybiA9ICR0aGlzLT5nZXRfY2hhbm5lbF90YWdzKFNJTVBMRVBJRV9OQU1FU1BBQ0VfQVRPTV8xMCwgJ3RpdGxlJykpCgkJewoJCQlyZXR1cm4gJHRoaXMtPnNhbml0aXplKCRyZXR1cm5bMF1bJ2RhdGEnXSwgU2ltcGxlUGllX01pc2M6OmF0b21fMTBfY29uc3RydWN0X3R5cGUoJHJldHVyblswXVsnYXR0cmlicyddKSwgJHRoaXMtPmdldF9iYXNlKCRyZXR1cm5bMF0pKTsKCQl9CgkJZWxzZWlmICgkcmV0dXJuID0gJHRoaXMtPmdldF9jaGFubmVsX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9BVE9NXzAzLCAndGl0bGUnKSkKCQl7CgkJCXJldHVybiAkdGhpcy0+c2FuaXRpemUoJHJldHVyblswXVsnZGF0YSddLCBTaW1wbGVQaWVfTWlzYzo6YXRvbV8wM19jb25zdHJ1Y3RfdHlwZSgkcmV0dXJuWzBdWydhdHRyaWJzJ10pLCAkdGhpcy0+Z2V0X2Jhc2UoJHJldHVyblswXSkpOwoJCX0KCQllbHNlaWYgKCRyZXR1cm4gPSAkdGhpcy0+Z2V0X2NoYW5uZWxfdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX1JTU18xMCwgJ3RpdGxlJykpCgkJewoJCQlyZXR1cm4gJHRoaXMtPnNhbml0aXplKCRyZXR1cm5bMF1bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9NQVlCRV9IVE1MLCAkdGhpcy0+Z2V0X2Jhc2UoJHJldHVyblswXSkpOwoJCX0KCQllbHNlaWYgKCRyZXR1cm4gPSAkdGhpcy0+Z2V0X2NoYW5uZWxfdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX1JTU18wOTAsICd0aXRsZScpKQoJCXsKCQkJcmV0dXJuICR0aGlzLT5zYW5pdGl6ZSgkcmV0dXJuWzBdWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfTUFZQkVfSFRNTCwgJHRoaXMtPmdldF9iYXNlKCRyZXR1cm5bMF0pKTsKCQl9CgkJZWxzZWlmICgkcmV0dXJuID0gJHRoaXMtPmdldF9jaGFubmVsX3RhZ3MoJycsICd0aXRsZScpKQoJCXsKCQkJcmV0dXJuICR0aGlzLT5zYW5pdGl6ZSgkcmV0dXJuWzBdWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfTUFZQkVfSFRNTCwgJHRoaXMtPmdldF9iYXNlKCRyZXR1cm5bMF0pKTsKCQl9CgkJZWxzZWlmICgkcmV0dXJuID0gJHRoaXMtPmdldF9jaGFubmVsX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9EQ18xMSwgJ3RpdGxlJykpCgkJewoJCQlyZXR1cm4gJHRoaXMtPnNhbml0aXplKCRyZXR1cm5bMF1bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQl9CgkJZWxzZWlmICgkcmV0dXJuID0gJHRoaXMtPmdldF9jaGFubmVsX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9EQ18xMCwgJ3RpdGxlJykpCgkJewoJCQlyZXR1cm4gJHRoaXMtPnNhbml0aXplKCRyZXR1cm5bMF1bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQl9CgkJZWxzZQoJCXsKCQkJcmV0dXJuIG51bGw7CgkJfQoJfQoKCWZ1bmN0aW9uIGdldF9jYXRlZ29yeSgka2V5ID0gMCkKCXsKCQkkY2F0ZWdvcmllcyA9ICR0aGlzLT5nZXRfY2F0ZWdvcmllcygpOwoJCWlmIChpc3NldCgkY2F0ZWdvcmllc1ska2V5XSkpCgkJewoJCQlyZXR1cm4gJGNhdGVnb3JpZXNbJGtleV07CgkJfQoJCWVsc2UKCQl7CgkJCXJldHVybiBudWxsOwoJCX0KCX0KCglmdW5jdGlvbiBnZXRfY2F0ZWdvcmllcygpCgl7CgkJJGNhdGVnb3JpZXMgPSBhcnJheSgpOwoKCQlmb3JlYWNoICgoYXJyYXkpICR0aGlzLT5nZXRfY2hhbm5lbF90YWdzKFNJTVBMRVBJRV9OQU1FU1BBQ0VfQVRPTV8xMCwgJ2NhdGVnb3J5JykgYXMgJGNhdGVnb3J5KQoJCXsKCQkJJHRlcm0gPSBudWxsOwoJCQkkc2NoZW1lID0gbnVsbDsKCQkJJGxhYmVsID0gbnVsbDsKCQkJaWYgKGlzc2V0KCRjYXRlZ29yeVsnYXR0cmlicyddWycnXVsndGVybSddKSkKCQkJewoJCQkJJHRlcm0gPSAkdGhpcy0+c2FuaXRpemUoJGNhdGVnb3J5WydhdHRyaWJzJ11bJyddWyd0ZXJtJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCX0KCQkJaWYgKGlzc2V0KCRjYXRlZ29yeVsnYXR0cmlicyddWycnXVsnc2NoZW1lJ10pKQoJCQl7CgkJCQkkc2NoZW1lID0gJHRoaXMtPnNhbml0aXplKCRjYXRlZ29yeVsnYXR0cmlicyddWycnXVsnc2NoZW1lJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCX0KCQkJaWYgKGlzc2V0KCRjYXRlZ29yeVsnYXR0cmlicyddWycnXVsnbGFiZWwnXSkpCgkJCXsKCQkJCSRsYWJlbCA9ICR0aGlzLT5zYW5pdGl6ZSgkY2F0ZWdvcnlbJ2F0dHJpYnMnXVsnJ11bJ2xhYmVsJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCX0KCQkJJGNhdGVnb3JpZXNbXSA9JiBuZXcgJHRoaXMtPmNhdGVnb3J5X2NsYXNzKCR0ZXJtLCAkc2NoZW1lLCAkbGFiZWwpOwoJCX0KCQlmb3JlYWNoICgoYXJyYXkpICR0aGlzLT5nZXRfY2hhbm5lbF90YWdzKCcnLCAnY2F0ZWdvcnknKSBhcyAkY2F0ZWdvcnkpCgkJewoJCQkkY2F0ZWdvcmllc1tdID0mIG5ldyAkdGhpcy0+Y2F0ZWdvcnlfY2xhc3MoJHRoaXMtPnNhbml0aXplKCRjYXRlZ29yeVsnZGF0YSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpLCBudWxsLCBudWxsKTsKCQl9CgkJZm9yZWFjaCAoKGFycmF5KSAkdGhpcy0+Z2V0X2NoYW5uZWxfdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX0RDXzExLCAnc3ViamVjdCcpIGFzICRjYXRlZ29yeSkKCQl7CgkJCSRjYXRlZ29yaWVzW10gPSYgbmV3ICR0aGlzLT5jYXRlZ29yeV9jbGFzcygkdGhpcy0+c2FuaXRpemUoJGNhdGVnb3J5WydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCksIG51bGwsIG51bGwpOwoJCX0KCQlmb3JlYWNoICgoYXJyYXkpICR0aGlzLT5nZXRfY2hhbm5lbF90YWdzKFNJTVBMRVBJRV9OQU1FU1BBQ0VfRENfMTAsICdzdWJqZWN0JykgYXMgJGNhdGVnb3J5KQoJCXsKCQkJJGNhdGVnb3JpZXNbXSA9JiBuZXcgJHRoaXMtPmNhdGVnb3J5X2NsYXNzKCR0aGlzLT5zYW5pdGl6ZSgkY2F0ZWdvcnlbJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKSwgbnVsbCwgbnVsbCk7CgkJfQoKCQlpZiAoIWVtcHR5KCRjYXRlZ29yaWVzKSkKCQl7CgkJCXJldHVybiBTaW1wbGVQaWVfTWlzYzo6YXJyYXlfdW5pcXVlKCRjYXRlZ29yaWVzKTsKCQl9CgkJZWxzZQoJCXsKCQkJcmV0dXJuIG51bGw7CgkJfQoJfQoKCWZ1bmN0aW9uIGdldF9hdXRob3IoJGtleSA9IDApCgl7CgkJJGF1dGhvcnMgPSAkdGhpcy0+Z2V0X2F1dGhvcnMoKTsKCQlpZiAoaXNzZXQoJGF1dGhvcnNbJGtleV0pKQoJCXsKCQkJcmV0dXJuICRhdXRob3JzWyRrZXldOwoJCX0KCQllbHNlCgkJewoJCQlyZXR1cm4gbnVsbDsKCQl9Cgl9CgoJZnVuY3Rpb24gZ2V0X2F1dGhvcnMoKQoJewoJCSRhdXRob3JzID0gYXJyYXkoKTsKCQlmb3JlYWNoICgoYXJyYXkpICR0aGlzLT5nZXRfY2hhbm5lbF90YWdzKFNJTVBMRVBJRV9OQU1FU1BBQ0VfQVRPTV8xMCwgJ2F1dGhvcicpIGFzICRhdXRob3IpCgkJewoJCQkkbmFtZSA9IG51bGw7CgkJCSR1cmkgPSBudWxsOwoJCQkkZW1haWwgPSBudWxsOwoJCQlpZiAoaXNzZXQoJGF1dGhvclsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMTBdWyduYW1lJ11bMF1bJ2RhdGEnXSkpCgkJCXsKCQkJCSRuYW1lID0gJHRoaXMtPnNhbml0aXplKCRhdXRob3JbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9BVE9NXzEwXVsnbmFtZSddWzBdWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCX0KCQkJaWYgKGlzc2V0KCRhdXRob3JbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9BVE9NXzEwXVsndXJpJ11bMF1bJ2RhdGEnXSkpCgkJCXsKCQkJCSR1cmkgPSAkdGhpcy0+c2FuaXRpemUoJGF1dGhvclsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMTBdWyd1cmknXVswXVsnZGF0YSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX0lSSSwgJHRoaXMtPmdldF9iYXNlKCRhdXRob3JbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9BVE9NXzEwXVsndXJpJ11bMF0pKTsKCQkJfQoJCQlpZiAoaXNzZXQoJGF1dGhvclsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMTBdWydlbWFpbCddWzBdWydkYXRhJ10pKQoJCQl7CgkJCQkkZW1haWwgPSAkdGhpcy0+c2FuaXRpemUoJGF1dGhvclsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMTBdWydlbWFpbCddWzBdWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCX0KCQkJaWYgKCRuYW1lICE9PSBudWxsIHx8ICRlbWFpbCAhPT0gbnVsbCB8fCAkdXJpICE9PSBudWxsKQoJCQl7CgkJCQkkYXV0aG9yc1tdID0mIG5ldyAkdGhpcy0+YXV0aG9yX2NsYXNzKCRuYW1lLCAkdXJpLCAkZW1haWwpOwoJCQl9CgkJfQoJCWlmICgkYXV0aG9yID0gJHRoaXMtPmdldF9jaGFubmVsX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9BVE9NXzAzLCAnYXV0aG9yJykpCgkJewoJCQkkbmFtZSA9IG51bGw7CgkJCSR1cmwgPSBudWxsOwoJCQkkZW1haWwgPSBudWxsOwoJCQlpZiAoaXNzZXQoJGF1dGhvclswXVsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMDNdWyduYW1lJ11bMF1bJ2RhdGEnXSkpCgkJCXsKCQkJCSRuYW1lID0gJHRoaXMtPnNhbml0aXplKCRhdXRob3JbMF1bJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9BVE9NXzAzXVsnbmFtZSddWzBdWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCX0KCQkJaWYgKGlzc2V0KCRhdXRob3JbMF1bJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9BVE9NXzAzXVsndXJsJ11bMF1bJ2RhdGEnXSkpCgkJCXsKCQkJCSR1cmwgPSAkdGhpcy0+c2FuaXRpemUoJGF1dGhvclswXVsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMDNdWyd1cmwnXVswXVsnZGF0YSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX0lSSSwgJHRoaXMtPmdldF9iYXNlKCRhdXRob3JbMF1bJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9BVE9NXzAzXVsndXJsJ11bMF0pKTsKCQkJfQoJCQlpZiAoaXNzZXQoJGF1dGhvclswXVsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMDNdWydlbWFpbCddWzBdWydkYXRhJ10pKQoJCQl7CgkJCQkkZW1haWwgPSAkdGhpcy0+c2FuaXRpemUoJGF1dGhvclswXVsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMDNdWydlbWFpbCddWzBdWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCX0KCQkJaWYgKCRuYW1lICE9PSBudWxsIHx8ICRlbWFpbCAhPT0gbnVsbCB8fCAkdXJsICE9PSBudWxsKQoJCQl7CgkJCQkkYXV0aG9yc1tdID0mIG5ldyAkdGhpcy0+YXV0aG9yX2NsYXNzKCRuYW1lLCAkdXJsLCAkZW1haWwpOwoJCQl9CgkJfQoJCWZvcmVhY2ggKChhcnJheSkgJHRoaXMtPmdldF9jaGFubmVsX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9EQ18xMSwgJ2NyZWF0b3InKSBhcyAkYXV0aG9yKQoJCXsKCQkJJGF1dGhvcnNbXSA9JiBuZXcgJHRoaXMtPmF1dGhvcl9jbGFzcygkdGhpcy0+c2FuaXRpemUoJGF1dGhvclsnZGF0YSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpLCBudWxsLCBudWxsKTsKCQl9CgkJZm9yZWFjaCAoKGFycmF5KSAkdGhpcy0+Z2V0X2NoYW5uZWxfdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX0RDXzEwLCAnY3JlYXRvcicpIGFzICRhdXRob3IpCgkJewoJCQkkYXV0aG9yc1tdID0mIG5ldyAkdGhpcy0+YXV0aG9yX2NsYXNzKCR0aGlzLT5zYW5pdGl6ZSgkYXV0aG9yWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCksIG51bGwsIG51bGwpOwoJCX0KCQlmb3JlYWNoICgoYXJyYXkpICR0aGlzLT5nZXRfY2hhbm5lbF90YWdzKFNJTVBMRVBJRV9OQU1FU1BBQ0VfSVRVTkVTLCAnYXV0aG9yJykgYXMgJGF1dGhvcikKCQl7CgkJCSRhdXRob3JzW10gPSYgbmV3ICR0aGlzLT5hdXRob3JfY2xhc3MoJHRoaXMtPnNhbml0aXplKCRhdXRob3JbJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKSwgbnVsbCwgbnVsbCk7CgkJfQoKCQlpZiAoIWVtcHR5KCRhdXRob3JzKSkKCQl7CgkJCXJldHVybiBTaW1wbGVQaWVfTWlzYzo6YXJyYXlfdW5pcXVlKCRhdXRob3JzKTsKCQl9CgkJZWxzZQoJCXsKCQkJcmV0dXJuIG51bGw7CgkJfQoJfQoKCWZ1bmN0aW9uIGdldF9jb250cmlidXRvcigka2V5ID0gMCkKCXsKCQkkY29udHJpYnV0b3JzID0gJHRoaXMtPmdldF9jb250cmlidXRvcnMoKTsKCQlpZiAoaXNzZXQoJGNvbnRyaWJ1dG9yc1ska2V5XSkpCgkJewoJCQlyZXR1cm4gJGNvbnRyaWJ1dG9yc1ska2V5XTsKCQl9CgkJZWxzZQoJCXsKCQkJcmV0dXJuIG51bGw7CgkJfQoJfQoKCWZ1bmN0aW9uIGdldF9jb250cmlidXRvcnMoKQoJewoJCSRjb250cmlidXRvcnMgPSBhcnJheSgpOwoJCWZvcmVhY2ggKChhcnJheSkgJHRoaXMtPmdldF9jaGFubmVsX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9BVE9NXzEwLCAnY29udHJpYnV0b3InKSBhcyAkY29udHJpYnV0b3IpCgkJewoJCQkkbmFtZSA9IG51bGw7CgkJCSR1cmkgPSBudWxsOwoJCQkkZW1haWwgPSBudWxsOwoJCQlpZiAoaXNzZXQoJGNvbnRyaWJ1dG9yWydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfQVRPTV8xMF1bJ25hbWUnXVswXVsnZGF0YSddKSkKCQkJewoJCQkJJG5hbWUgPSAkdGhpcy0+c2FuaXRpemUoJGNvbnRyaWJ1dG9yWydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfQVRPTV8xMF1bJ25hbWUnXVswXVsnZGF0YSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCQl9CgkJCWlmIChpc3NldCgkY29udHJpYnV0b3JbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9BVE9NXzEwXVsndXJpJ11bMF1bJ2RhdGEnXSkpCgkJCXsKCQkJCSR1cmkgPSAkdGhpcy0+c2FuaXRpemUoJGNvbnRyaWJ1dG9yWydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfQVRPTV8xMF1bJ3VyaSddWzBdWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfSVJJLCAkdGhpcy0+Z2V0X2Jhc2UoJGNvbnRyaWJ1dG9yWydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfQVRPTV8xMF1bJ3VyaSddWzBdKSk7CgkJCX0KCQkJaWYgKGlzc2V0KCRjb250cmlidXRvclsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMTBdWydlbWFpbCddWzBdWydkYXRhJ10pKQoJCQl7CgkJCQkkZW1haWwgPSAkdGhpcy0+c2FuaXRpemUoJGNvbnRyaWJ1dG9yWydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfQVRPTV8xMF1bJ2VtYWlsJ11bMF1bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJfQoJCQlpZiAoJG5hbWUgIT09IG51bGwgfHwgJGVtYWlsICE9PSBudWxsIHx8ICR1cmkgIT09IG51bGwpCgkJCXsKCQkJCSRjb250cmlidXRvcnNbXSA9JiBuZXcgJHRoaXMtPmF1dGhvcl9jbGFzcygkbmFtZSwgJHVyaSwgJGVtYWlsKTsKCQkJfQoJCX0KCQlmb3JlYWNoICgoYXJyYXkpICR0aGlzLT5nZXRfY2hhbm5lbF90YWdzKFNJTVBMRVBJRV9OQU1FU1BBQ0VfQVRPTV8wMywgJ2NvbnRyaWJ1dG9yJykgYXMgJGNvbnRyaWJ1dG9yKQoJCXsKCQkJJG5hbWUgPSBudWxsOwoJCQkkdXJsID0gbnVsbDsKCQkJJGVtYWlsID0gbnVsbDsKCQkJaWYgKGlzc2V0KCRjb250cmlidXRvclsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMDNdWyduYW1lJ11bMF1bJ2RhdGEnXSkpCgkJCXsKCQkJCSRuYW1lID0gJHRoaXMtPnNhbml0aXplKCRjb250cmlidXRvclsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMDNdWyduYW1lJ11bMF1bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJfQoJCQlpZiAoaXNzZXQoJGNvbnRyaWJ1dG9yWydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfQVRPTV8wM11bJ3VybCddWzBdWydkYXRhJ10pKQoJCQl7CgkJCQkkdXJsID0gJHRoaXMtPnNhbml0aXplKCRjb250cmlidXRvclsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMDNdWyd1cmwnXVswXVsnZGF0YSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX0lSSSwgJHRoaXMtPmdldF9iYXNlKCRjb250cmlidXRvclsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMDNdWyd1cmwnXVswXSkpOwoJCQl9CgkJCWlmIChpc3NldCgkY29udHJpYnV0b3JbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9BVE9NXzAzXVsnZW1haWwnXVswXVsnZGF0YSddKSkKCQkJewoJCQkJJGVtYWlsID0gJHRoaXMtPnNhbml0aXplKCRjb250cmlidXRvclsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMDNdWydlbWFpbCddWzBdWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCX0KCQkJaWYgKCRuYW1lICE9PSBudWxsIHx8ICRlbWFpbCAhPT0gbnVsbCB8fCAkdXJsICE9PSBudWxsKQoJCQl7CgkJCQkkY29udHJpYnV0b3JzW10gPSYgbmV3ICR0aGlzLT5hdXRob3JfY2xhc3MoJG5hbWUsICR1cmwsICRlbWFpbCk7CgkJCX0KCQl9CgoJCWlmICghZW1wdHkoJGNvbnRyaWJ1dG9ycykpCgkJewoJCQlyZXR1cm4gU2ltcGxlUGllX01pc2M6OmFycmF5X3VuaXF1ZSgkY29udHJpYnV0b3JzKTsKCQl9CgkJZWxzZQoJCXsKCQkJcmV0dXJuIG51bGw7CgkJfQoJfQoKCWZ1bmN0aW9uIGdldF9saW5rKCRrZXkgPSAwLCAkcmVsID0gJ2FsdGVybmF0ZScpCgl7CgkJJGxpbmtzID0gJHRoaXMtPmdldF9saW5rcygkcmVsKTsKCQlpZiAoaXNzZXQoJGxpbmtzWyRrZXldKSkKCQl7CgkJCXJldHVybiAkbGlua3NbJGtleV07CgkJfQoJCWVsc2UKCQl7CgkJCXJldHVybiBudWxsOwoJCX0KCX0KCgkvKioKCSAqIEFkZGVkIGZvciBwYXJpdHkgYmV0d2VlbiB0aGUgcGFyZW50LWxldmVsIGFuZCB0aGUgaXRlbS9lbnRyeS1sZXZlbC4KCSAqLwoJZnVuY3Rpb24gZ2V0X3Blcm1hbGluaygpCgl7CgkJcmV0dXJuICR0aGlzLT5nZXRfbGluaygwKTsKCX0KCglmdW5jdGlvbiBnZXRfbGlua3MoJHJlbCA9ICdhbHRlcm5hdGUnKQoJewoJCWlmICghaXNzZXQoJHRoaXMtPmRhdGFbJ2xpbmtzJ10pKQoJCXsKCQkJJHRoaXMtPmRhdGFbJ2xpbmtzJ10gPSBhcnJheSgpOwoJCQlpZiAoJGxpbmtzID0gJHRoaXMtPmdldF9jaGFubmVsX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9BVE9NXzEwLCAnbGluaycpKQoJCQl7CgkJCQlmb3JlYWNoICgkbGlua3MgYXMgJGxpbmspCgkJCQl7CgkJCQkJaWYgKGlzc2V0KCRsaW5rWydhdHRyaWJzJ11bJyddWydocmVmJ10pKQoJCQkJCXsKCQkJCQkJJGxpbmtfcmVsID0gKGlzc2V0KCRsaW5rWydhdHRyaWJzJ11bJyddWydyZWwnXSkpID8gJGxpbmtbJ2F0dHJpYnMnXVsnJ11bJ3JlbCddIDogJ2FsdGVybmF0ZSc7CgkJCQkJCSR0aGlzLT5kYXRhWydsaW5rcyddWyRsaW5rX3JlbF1bXSA9ICR0aGlzLT5zYW5pdGl6ZSgkbGlua1snYXR0cmlicyddWycnXVsnaHJlZiddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX0lSSSwgJHRoaXMtPmdldF9iYXNlKCRsaW5rKSk7CgkJCQkJfQoJCQkJfQoJCQl9CgkJCWlmICgkbGlua3MgPSAkdGhpcy0+Z2V0X2NoYW5uZWxfdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMDMsICdsaW5rJykpCgkJCXsKCQkJCWZvcmVhY2ggKCRsaW5rcyBhcyAkbGluaykKCQkJCXsKCQkJCQlpZiAoaXNzZXQoJGxpbmtbJ2F0dHJpYnMnXVsnJ11bJ2hyZWYnXSkpCgkJCQkJewoJCQkJCQkkbGlua19yZWwgPSAoaXNzZXQoJGxpbmtbJ2F0dHJpYnMnXVsnJ11bJ3JlbCddKSkgPyAkbGlua1snYXR0cmlicyddWycnXVsncmVsJ10gOiAnYWx0ZXJuYXRlJzsKCQkJCQkJJHRoaXMtPmRhdGFbJ2xpbmtzJ11bJGxpbmtfcmVsXVtdID0gJHRoaXMtPnNhbml0aXplKCRsaW5rWydhdHRyaWJzJ11bJyddWydocmVmJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfSVJJLCAkdGhpcy0+Z2V0X2Jhc2UoJGxpbmspKTsKCgkJCQkJfQoJCQkJfQoJCQl9CgkJCWlmICgkbGlua3MgPSAkdGhpcy0+Z2V0X2NoYW5uZWxfdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX1JTU18xMCwgJ2xpbmsnKSkKCQkJewoJCQkJJHRoaXMtPmRhdGFbJ2xpbmtzJ11bJ2FsdGVybmF0ZSddW10gPSAkdGhpcy0+c2FuaXRpemUoJGxpbmtzWzBdWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfSVJJLCAkdGhpcy0+Z2V0X2Jhc2UoJGxpbmtzWzBdKSk7CgkJCX0KCQkJaWYgKCRsaW5rcyA9ICR0aGlzLT5nZXRfY2hhbm5lbF90YWdzKFNJTVBMRVBJRV9OQU1FU1BBQ0VfUlNTXzA5MCwgJ2xpbmsnKSkKCQkJewoJCQkJJHRoaXMtPmRhdGFbJ2xpbmtzJ11bJ2FsdGVybmF0ZSddW10gPSAkdGhpcy0+c2FuaXRpemUoJGxpbmtzWzBdWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfSVJJLCAkdGhpcy0+Z2V0X2Jhc2UoJGxpbmtzWzBdKSk7CgkJCX0KCQkJaWYgKCRsaW5rcyA9ICR0aGlzLT5nZXRfY2hhbm5lbF90YWdzKCcnLCAnbGluaycpKQoJCQl7CgkJCQkkdGhpcy0+ZGF0YVsnbGlua3MnXVsnYWx0ZXJuYXRlJ11bXSA9ICR0aGlzLT5zYW5pdGl6ZSgkbGlua3NbMF1bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9JUkksICR0aGlzLT5nZXRfYmFzZSgkbGlua3NbMF0pKTsKCQkJfQoKCQkJJGtleXMgPSBhcnJheV9rZXlzKCR0aGlzLT5kYXRhWydsaW5rcyddKTsKCQkJZm9yZWFjaCAoJGtleXMgYXMgJGtleSkKCQkJewoJCQkJaWYgKFNpbXBsZVBpZV9NaXNjOjppc19pc2VnbWVudF9uel9uYygka2V5KSkKCQkJCXsKCQkJCQlpZiAoaXNzZXQoJHRoaXMtPmRhdGFbJ2xpbmtzJ11bU0lNUExFUElFX0lBTkFfTElOS19SRUxBVElPTlNfUkVHSVNUUlkgLiAka2V5XSkpCgkJCQkJewoJCQkJCQkkdGhpcy0+ZGF0YVsnbGlua3MnXVtTSU1QTEVQSUVfSUFOQV9MSU5LX1JFTEFUSU9OU19SRUdJU1RSWSAuICRrZXldID0gYXJyYXlfbWVyZ2UoJHRoaXMtPmRhdGFbJ2xpbmtzJ11bJGtleV0sICR0aGlzLT5kYXRhWydsaW5rcyddW1NJTVBMRVBJRV9JQU5BX0xJTktfUkVMQVRJT05TX1JFR0lTVFJZIC4gJGtleV0pOwoJCQkJCQkkdGhpcy0+ZGF0YVsnbGlua3MnXVska2V5XSA9JiAkdGhpcy0+ZGF0YVsnbGlua3MnXVtTSU1QTEVQSUVfSUFOQV9MSU5LX1JFTEFUSU9OU19SRUdJU1RSWSAuICRrZXldOwoJCQkJCX0KCQkJCQllbHNlCgkJCQkJewoJCQkJCQkkdGhpcy0+ZGF0YVsnbGlua3MnXVtTSU1QTEVQSUVfSUFOQV9MSU5LX1JFTEFUSU9OU19SRUdJU1RSWSAuICRrZXldID0mICR0aGlzLT5kYXRhWydsaW5rcyddWyRrZXldOwoJCQkJCX0KCQkJCX0KCQkJCWVsc2VpZiAoc3Vic3RyKCRrZXksIDAsIDQxKSA9PSBTSU1QTEVQSUVfSUFOQV9MSU5LX1JFTEFUSU9OU19SRUdJU1RSWSkKCQkJCXsKCQkJCQkkdGhpcy0+ZGF0YVsnbGlua3MnXVtzdWJzdHIoJGtleSwgNDEpXSA9JiAkdGhpcy0+ZGF0YVsnbGlua3MnXVska2V5XTsKCQkJCX0KCQkJCSR0aGlzLT5kYXRhWydsaW5rcyddWyRrZXldID0gYXJyYXlfdW5pcXVlKCR0aGlzLT5kYXRhWydsaW5rcyddWyRrZXldKTsKCQkJfQoJCX0KCgkJaWYgKGlzc2V0KCR0aGlzLT5kYXRhWydsaW5rcyddWyRyZWxdKSkKCQl7CgkJCXJldHVybiAkdGhpcy0+ZGF0YVsnbGlua3MnXVskcmVsXTsKCQl9CgkJZWxzZQoJCXsKCQkJcmV0dXJuIG51bGw7CgkJfQoJfQoKCWZ1bmN0aW9uIGdldF9kZXNjcmlwdGlvbigpCgl7CgkJaWYgKCRyZXR1cm4gPSAkdGhpcy0+Z2V0X2NoYW5uZWxfdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMTAsICdzdWJ0aXRsZScpKQoJCXsKCQkJcmV0dXJuICR0aGlzLT5zYW5pdGl6ZSgkcmV0dXJuWzBdWydkYXRhJ10sIFNpbXBsZVBpZV9NaXNjOjphdG9tXzEwX2NvbnN0cnVjdF90eXBlKCRyZXR1cm5bMF1bJ2F0dHJpYnMnXSksICR0aGlzLT5nZXRfYmFzZSgkcmV0dXJuWzBdKSk7CgkJfQoJCWVsc2VpZiAoJHJldHVybiA9ICR0aGlzLT5nZXRfY2hhbm5lbF90YWdzKFNJTVBMRVBJRV9OQU1FU1BBQ0VfQVRPTV8wMywgJ3RhZ2xpbmUnKSkKCQl7CgkJCXJldHVybiAkdGhpcy0+c2FuaXRpemUoJHJldHVyblswXVsnZGF0YSddLCBTaW1wbGVQaWVfTWlzYzo6YXRvbV8wM19jb25zdHJ1Y3RfdHlwZSgkcmV0dXJuWzBdWydhdHRyaWJzJ10pLCAkdGhpcy0+Z2V0X2Jhc2UoJHJldHVyblswXSkpOwoJCX0KCQllbHNlaWYgKCRyZXR1cm4gPSAkdGhpcy0+Z2V0X2NoYW5uZWxfdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX1JTU18xMCwgJ2Rlc2NyaXB0aW9uJykpCgkJewoJCQlyZXR1cm4gJHRoaXMtPnNhbml0aXplKCRyZXR1cm5bMF1bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9NQVlCRV9IVE1MLCAkdGhpcy0+Z2V0X2Jhc2UoJHJldHVyblswXSkpOwoJCX0KCQllbHNlaWYgKCRyZXR1cm4gPSAkdGhpcy0+Z2V0X2NoYW5uZWxfdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX1JTU18wOTAsICdkZXNjcmlwdGlvbicpKQoJCXsKCQkJcmV0dXJuICR0aGlzLT5zYW5pdGl6ZSgkcmV0dXJuWzBdWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfTUFZQkVfSFRNTCwgJHRoaXMtPmdldF9iYXNlKCRyZXR1cm5bMF0pKTsKCQl9CgkJZWxzZWlmICgkcmV0dXJuID0gJHRoaXMtPmdldF9jaGFubmVsX3RhZ3MoJycsICdkZXNjcmlwdGlvbicpKQoJCXsKCQkJcmV0dXJuICR0aGlzLT5zYW5pdGl6ZSgkcmV0dXJuWzBdWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfTUFZQkVfSFRNTCwgJHRoaXMtPmdldF9iYXNlKCRyZXR1cm5bMF0pKTsKCQl9CgkJZWxzZWlmICgkcmV0dXJuID0gJHRoaXMtPmdldF9jaGFubmVsX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9EQ18xMSwgJ2Rlc2NyaXB0aW9uJykpCgkJewoJCQlyZXR1cm4gJHRoaXMtPnNhbml0aXplKCRyZXR1cm5bMF1bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQl9CgkJZWxzZWlmICgkcmV0dXJuID0gJHRoaXMtPmdldF9jaGFubmVsX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9EQ18xMCwgJ2Rlc2NyaXB0aW9uJykpCgkJewoJCQlyZXR1cm4gJHRoaXMtPnNhbml0aXplKCRyZXR1cm5bMF1bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQl9CgkJZWxzZWlmICgkcmV0dXJuID0gJHRoaXMtPmdldF9jaGFubmVsX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9JVFVORVMsICdzdW1tYXJ5JykpCgkJewoJCQlyZXR1cm4gJHRoaXMtPnNhbml0aXplKCRyZXR1cm5bMF1bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9IVE1MLCAkdGhpcy0+Z2V0X2Jhc2UoJHJldHVyblswXSkpOwoJCX0KCQllbHNlaWYgKCRyZXR1cm4gPSAkdGhpcy0+Z2V0X2NoYW5uZWxfdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX0lUVU5FUywgJ3N1YnRpdGxlJykpCgkJewoJCQlyZXR1cm4gJHRoaXMtPnNhbml0aXplKCRyZXR1cm5bMF1bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9IVE1MLCAkdGhpcy0+Z2V0X2Jhc2UoJHJldHVyblswXSkpOwoJCX0KCQllbHNlCgkJewoJCQlyZXR1cm4gbnVsbDsKCQl9Cgl9CgoJZnVuY3Rpb24gZ2V0X2NvcHlyaWdodCgpCgl7CgkJaWYgKCRyZXR1cm4gPSAkdGhpcy0+Z2V0X2NoYW5uZWxfdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMTAsICdyaWdodHMnKSkKCQl7CgkJCXJldHVybiAkdGhpcy0+c2FuaXRpemUoJHJldHVyblswXVsnZGF0YSddLCBTaW1wbGVQaWVfTWlzYzo6YXRvbV8xMF9jb25zdHJ1Y3RfdHlwZSgkcmV0dXJuWzBdWydhdHRyaWJzJ10pLCAkdGhpcy0+Z2V0X2Jhc2UoJHJldHVyblswXSkpOwoJCX0KCQllbHNlaWYgKCRyZXR1cm4gPSAkdGhpcy0+Z2V0X2NoYW5uZWxfdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMDMsICdjb3B5cmlnaHQnKSkKCQl7CgkJCXJldHVybiAkdGhpcy0+c2FuaXRpemUoJHJldHVyblswXVsnZGF0YSddLCBTaW1wbGVQaWVfTWlzYzo6YXRvbV8wM19jb25zdHJ1Y3RfdHlwZSgkcmV0dXJuWzBdWydhdHRyaWJzJ10pLCAkdGhpcy0+Z2V0X2Jhc2UoJHJldHVyblswXSkpOwoJCX0KCQllbHNlaWYgKCRyZXR1cm4gPSAkdGhpcy0+Z2V0X2NoYW5uZWxfdGFncygnJywgJ2NvcHlyaWdodCcpKQoJCXsKCQkJcmV0dXJuICR0aGlzLT5zYW5pdGl6ZSgkcmV0dXJuWzBdWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJfQoJCWVsc2VpZiAoJHJldHVybiA9ICR0aGlzLT5nZXRfY2hhbm5lbF90YWdzKFNJTVBMRVBJRV9OQU1FU1BBQ0VfRENfMTEsICdyaWdodHMnKSkKCQl7CgkJCXJldHVybiAkdGhpcy0+c2FuaXRpemUoJHJldHVyblswXVsnZGF0YSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCX0KCQllbHNlaWYgKCRyZXR1cm4gPSAkdGhpcy0+Z2V0X2NoYW5uZWxfdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX0RDXzEwLCAncmlnaHRzJykpCgkJewoJCQlyZXR1cm4gJHRoaXMtPnNhbml0aXplKCRyZXR1cm5bMF1bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQl9CgkJZWxzZQoJCXsKCQkJcmV0dXJuIG51bGw7CgkJfQoJfQoKCWZ1bmN0aW9uIGdldF9sYW5ndWFnZSgpCgl7CgkJaWYgKCRyZXR1cm4gPSAkdGhpcy0+Z2V0X2NoYW5uZWxfdGFncygnJywgJ2xhbmd1YWdlJykpCgkJewoJCQlyZXR1cm4gJHRoaXMtPnNhbml0aXplKCRyZXR1cm5bMF1bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQl9CgkJZWxzZWlmICgkcmV0dXJuID0gJHRoaXMtPmdldF9jaGFubmVsX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9EQ18xMSwgJ2xhbmd1YWdlJykpCgkJewoJCQlyZXR1cm4gJHRoaXMtPnNhbml0aXplKCRyZXR1cm5bMF1bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQl9CgkJZWxzZWlmICgkcmV0dXJuID0gJHRoaXMtPmdldF9jaGFubmVsX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9EQ18xMCwgJ2xhbmd1YWdlJykpCgkJewoJCQlyZXR1cm4gJHRoaXMtPnNhbml0aXplKCRyZXR1cm5bMF1bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQl9CgkJZWxzZWlmIChpc3NldCgkdGhpcy0+ZGF0YVsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMTBdWydmZWVkJ11bMF1bJ3htbF9sYW5nJ10pKQoJCXsKCQkJcmV0dXJuICR0aGlzLT5zYW5pdGl6ZSgkdGhpcy0+ZGF0YVsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMTBdWydmZWVkJ11bMF1bJ3htbF9sYW5nJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJfQoJCWVsc2VpZiAoaXNzZXQoJHRoaXMtPmRhdGFbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9BVE9NXzAzXVsnZmVlZCddWzBdWyd4bWxfbGFuZyddKSkKCQl7CgkJCXJldHVybiAkdGhpcy0+c2FuaXRpemUoJHRoaXMtPmRhdGFbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9BVE9NXzAzXVsnZmVlZCddWzBdWyd4bWxfbGFuZyddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCX0KCQllbHNlaWYgKGlzc2V0KCR0aGlzLT5kYXRhWydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfUkRGXVsnUkRGJ11bMF1bJ3htbF9sYW5nJ10pKQoJCXsKCQkJcmV0dXJuICR0aGlzLT5zYW5pdGl6ZSgkdGhpcy0+ZGF0YVsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX1JERl1bJ1JERiddWzBdWyd4bWxfbGFuZyddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCX0KCQllbHNlaWYgKGlzc2V0KCR0aGlzLT5kYXRhWydoZWFkZXJzJ11bJ2NvbnRlbnQtbGFuZ3VhZ2UnXSkpCgkJewoJCQlyZXR1cm4gJHRoaXMtPnNhbml0aXplKCR0aGlzLT5kYXRhWydoZWFkZXJzJ11bJ2NvbnRlbnQtbGFuZ3VhZ2UnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQl9CgkJZWxzZQoJCXsKCQkJcmV0dXJuIG51bGw7CgkJfQoJfQoKCWZ1bmN0aW9uIGdldF9sYXRpdHVkZSgpCgl7CgkJaWYgKCRyZXR1cm4gPSAkdGhpcy0+Z2V0X2NoYW5uZWxfdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX1czQ19CQVNJQ19HRU8sICdsYXQnKSkKCQl7CgkJCXJldHVybiAoZmxvYXQpICRyZXR1cm5bMF1bJ2RhdGEnXTsKCQl9CgkJZWxzZWlmICgoJHJldHVybiA9ICR0aGlzLT5nZXRfY2hhbm5lbF90YWdzKFNJTVBMRVBJRV9OQU1FU1BBQ0VfR0VPUlNTLCAncG9pbnQnKSkgJiYgcHJlZ19tYXRjaCgnL14oKD86LSk/WzAtOV0rKD86XC5bMC05XSspKSAoKD86LSk/WzAtOV0rKD86XC5bMC05XSspKSQvJywgJHJldHVyblswXVsnZGF0YSddLCAkbWF0Y2gpKQoJCXsKCQkJcmV0dXJuIChmbG9hdCkgJG1hdGNoWzFdOwoJCX0KCQllbHNlCgkJewoJCQlyZXR1cm4gbnVsbDsKCQl9Cgl9CgoJZnVuY3Rpb24gZ2V0X2xvbmdpdHVkZSgpCgl7CgkJaWYgKCRyZXR1cm4gPSAkdGhpcy0+Z2V0X2NoYW5uZWxfdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX1czQ19CQVNJQ19HRU8sICdsb25nJykpCgkJewoJCQlyZXR1cm4gKGZsb2F0KSAkcmV0dXJuWzBdWydkYXRhJ107CgkJfQoJCWVsc2VpZiAoJHJldHVybiA9ICR0aGlzLT5nZXRfY2hhbm5lbF90YWdzKFNJTVBMRVBJRV9OQU1FU1BBQ0VfVzNDX0JBU0lDX0dFTywgJ2xvbicpKQoJCXsKCQkJcmV0dXJuIChmbG9hdCkgJHJldHVyblswXVsnZGF0YSddOwoJCX0KCQllbHNlaWYgKCgkcmV0dXJuID0gJHRoaXMtPmdldF9jaGFubmVsX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9HRU9SU1MsICdwb2ludCcpKSAmJiBwcmVnX21hdGNoKCcvXigoPzotKT9bMC05XSsoPzpcLlswLTldKykpICgoPzotKT9bMC05XSsoPzpcLlswLTldKykpJC8nLCAkcmV0dXJuWzBdWydkYXRhJ10sICRtYXRjaCkpCgkJewoJCQlyZXR1cm4gKGZsb2F0KSAkbWF0Y2hbMl07CgkJfQoJCWVsc2UKCQl7CgkJCXJldHVybiBudWxsOwoJCX0KCX0KCglmdW5jdGlvbiBnZXRfaW1hZ2VfdGl0bGUoKQoJewoJCWlmICgkcmV0dXJuID0gJHRoaXMtPmdldF9pbWFnZV90YWdzKFNJTVBMRVBJRV9OQU1FU1BBQ0VfUlNTXzEwLCAndGl0bGUnKSkKCQl7CgkJCXJldHVybiAkdGhpcy0+c2FuaXRpemUoJHJldHVyblswXVsnZGF0YSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCX0KCQllbHNlaWYgKCRyZXR1cm4gPSAkdGhpcy0+Z2V0X2ltYWdlX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9SU1NfMDkwLCAndGl0bGUnKSkKCQl7CgkJCXJldHVybiAkdGhpcy0+c2FuaXRpemUoJHJldHVyblswXVsnZGF0YSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCX0KCQllbHNlaWYgKCRyZXR1cm4gPSAkdGhpcy0+Z2V0X2ltYWdlX3RhZ3MoJycsICd0aXRsZScpKQoJCXsKCQkJcmV0dXJuICR0aGlzLT5zYW5pdGl6ZSgkcmV0dXJuWzBdWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJfQoJCWVsc2VpZiAoJHJldHVybiA9ICR0aGlzLT5nZXRfaW1hZ2VfdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX0RDXzExLCAndGl0bGUnKSkKCQl7CgkJCXJldHVybiAkdGhpcy0+c2FuaXRpemUoJHJldHVyblswXVsnZGF0YSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCX0KCQllbHNlaWYgKCRyZXR1cm4gPSAkdGhpcy0+Z2V0X2ltYWdlX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9EQ18xMCwgJ3RpdGxlJykpCgkJewoJCQlyZXR1cm4gJHRoaXMtPnNhbml0aXplKCRyZXR1cm5bMF1bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQl9CgkJZWxzZQoJCXsKCQkJcmV0dXJuIG51bGw7CgkJfQoJfQoKCWZ1bmN0aW9uIGdldF9pbWFnZV91cmwoKQoJewoJCWlmICgkcmV0dXJuID0gJHRoaXMtPmdldF9jaGFubmVsX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9JVFVORVMsICdpbWFnZScpKQoJCXsKCQkJcmV0dXJuICR0aGlzLT5zYW5pdGl6ZSgkcmV0dXJuWzBdWydhdHRyaWJzJ11bJyddWydocmVmJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfSVJJKTsKCQl9CgkJZWxzZWlmICgkcmV0dXJuID0gJHRoaXMtPmdldF9jaGFubmVsX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9BVE9NXzEwLCAnbG9nbycpKQoJCXsKCQkJcmV0dXJuICR0aGlzLT5zYW5pdGl6ZSgkcmV0dXJuWzBdWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfSVJJLCAkdGhpcy0+Z2V0X2Jhc2UoJHJldHVyblswXSkpOwoJCX0KCQllbHNlaWYgKCRyZXR1cm4gPSAkdGhpcy0+Z2V0X2NoYW5uZWxfdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMTAsICdpY29uJykpCgkJewoJCQlyZXR1cm4gJHRoaXMtPnNhbml0aXplKCRyZXR1cm5bMF1bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9JUkksICR0aGlzLT5nZXRfYmFzZSgkcmV0dXJuWzBdKSk7CgkJfQoJCWVsc2VpZiAoJHJldHVybiA9ICR0aGlzLT5nZXRfaW1hZ2VfdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX1JTU18xMCwgJ3VybCcpKQoJCXsKCQkJcmV0dXJuICR0aGlzLT5zYW5pdGl6ZSgkcmV0dXJuWzBdWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfSVJJLCAkdGhpcy0+Z2V0X2Jhc2UoJHJldHVyblswXSkpOwoJCX0KCQllbHNlaWYgKCRyZXR1cm4gPSAkdGhpcy0+Z2V0X2ltYWdlX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9SU1NfMDkwLCAndXJsJykpCgkJewoJCQlyZXR1cm4gJHRoaXMtPnNhbml0aXplKCRyZXR1cm5bMF1bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9JUkksICR0aGlzLT5nZXRfYmFzZSgkcmV0dXJuWzBdKSk7CgkJfQoJCWVsc2VpZiAoJHJldHVybiA9ICR0aGlzLT5nZXRfaW1hZ2VfdGFncygnJywgJ3VybCcpKQoJCXsKCQkJcmV0dXJuICR0aGlzLT5zYW5pdGl6ZSgkcmV0dXJuWzBdWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfSVJJLCAkdGhpcy0+Z2V0X2Jhc2UoJHJldHVyblswXSkpOwoJCX0KCQllbHNlCgkJewoJCQlyZXR1cm4gbnVsbDsKCQl9Cgl9CgoJZnVuY3Rpb24gZ2V0X2ltYWdlX2xpbmsoKQoJewoJCWlmICgkcmV0dXJuID0gJHRoaXMtPmdldF9pbWFnZV90YWdzKFNJTVBMRVBJRV9OQU1FU1BBQ0VfUlNTXzEwLCAnbGluaycpKQoJCXsKCQkJcmV0dXJuICR0aGlzLT5zYW5pdGl6ZSgkcmV0dXJuWzBdWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfSVJJLCAkdGhpcy0+Z2V0X2Jhc2UoJHJldHVyblswXSkpOwoJCX0KCQllbHNlaWYgKCRyZXR1cm4gPSAkdGhpcy0+Z2V0X2ltYWdlX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9SU1NfMDkwLCAnbGluaycpKQoJCXsKCQkJcmV0dXJuICR0aGlzLT5zYW5pdGl6ZSgkcmV0dXJuWzBdWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfSVJJLCAkdGhpcy0+Z2V0X2Jhc2UoJHJldHVyblswXSkpOwoJCX0KCQllbHNlaWYgKCRyZXR1cm4gPSAkdGhpcy0+Z2V0X2ltYWdlX3RhZ3MoJycsICdsaW5rJykpCgkJewoJCQlyZXR1cm4gJHRoaXMtPnNhbml0aXplKCRyZXR1cm5bMF1bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9JUkksICR0aGlzLT5nZXRfYmFzZSgkcmV0dXJuWzBdKSk7CgkJfQoJCWVsc2UKCQl7CgkJCXJldHVybiBudWxsOwoJCX0KCX0KCglmdW5jdGlvbiBnZXRfaW1hZ2Vfd2lkdGgoKQoJewoJCWlmICgkcmV0dXJuID0gJHRoaXMtPmdldF9pbWFnZV90YWdzKCcnLCAnd2lkdGgnKSkKCQl7CgkJCXJldHVybiByb3VuZCgkcmV0dXJuWzBdWydkYXRhJ10pOwoJCX0KCQllbHNlaWYgKCR0aGlzLT5nZXRfdHlwZSgpICYgU0lNUExFUElFX1RZUEVfUlNTX1NZTkRJQ0FUSU9OICYmICR0aGlzLT5nZXRfaW1hZ2VfdGFncygnJywgJ3VybCcpKQoJCXsKCQkJcmV0dXJuIDg4LjA7CgkJfQoJCWVsc2UKCQl7CgkJCXJldHVybiBudWxsOwoJCX0KCX0KCglmdW5jdGlvbiBnZXRfaW1hZ2VfaGVpZ2h0KCkKCXsKCQlpZiAoJHJldHVybiA9ICR0aGlzLT5nZXRfaW1hZ2VfdGFncygnJywgJ2hlaWdodCcpKQoJCXsKCQkJcmV0dXJuIHJvdW5kKCRyZXR1cm5bMF1bJ2RhdGEnXSk7CgkJfQoJCWVsc2VpZiAoJHRoaXMtPmdldF90eXBlKCkgJiBTSU1QTEVQSUVfVFlQRV9SU1NfU1lORElDQVRJT04gJiYgJHRoaXMtPmdldF9pbWFnZV90YWdzKCcnLCAndXJsJykpCgkJewoJCQlyZXR1cm4gMzEuMDsKCQl9CgkJZWxzZQoJCXsKCQkJcmV0dXJuIG51bGw7CgkJfQoJfQoKCWZ1bmN0aW9uIGdldF9pdGVtX3F1YW50aXR5KCRtYXggPSAwKQoJewoJCSRxdHkgPSBjb3VudCgkdGhpcy0+Z2V0X2l0ZW1zKCkpOwoJCWlmICgkbWF4ID09IDApCgkJewoJCQlyZXR1cm4gJHF0eTsKCQl9CgkJZWxzZQoJCXsKCQkJcmV0dXJuICgkcXR5ID4gJG1heCkgPyAkbWF4IDogJHF0eTsKCQl9Cgl9CgoJZnVuY3Rpb24gZ2V0X2l0ZW0oJGtleSA9IDApCgl7CgkJJGl0ZW1zID0gJHRoaXMtPmdldF9pdGVtcygpOwoJCWlmIChpc3NldCgkaXRlbXNbJGtleV0pKQoJCXsKCQkJcmV0dXJuICRpdGVtc1ska2V5XTsKCQl9CgkJZWxzZQoJCXsKCQkJcmV0dXJuIG51bGw7CgkJfQoJfQoKCWZ1bmN0aW9uIGdldF9pdGVtcygkc3RhcnQgPSAwLCAkZW5kID0gMCkKCXsKCQlpZiAoIWVtcHR5KCR0aGlzLT5tdWx0aWZlZWRfb2JqZWN0cykpCgkJewoJCQlyZXR1cm4gU2ltcGxlUGllOjptZXJnZV9pdGVtcygkdGhpcy0+bXVsdGlmZWVkX29iamVjdHMsICRzdGFydCwgJGVuZCwgJHRoaXMtPml0ZW1fbGltaXQpOwoJCX0KCQllbHNlaWYgKCFpc3NldCgkdGhpcy0+ZGF0YVsnaXRlbXMnXSkpCgkJewoJCQlpZiAoJGl0ZW1zID0gJHRoaXMtPmdldF9mZWVkX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9BVE9NXzEwLCAnZW50cnknKSkKCQkJewoJCQkJJGtleXMgPSBhcnJheV9rZXlzKCRpdGVtcyk7CgkJCQlmb3JlYWNoICgka2V5cyBhcyAka2V5KQoJCQkJewoJCQkJCSR0aGlzLT5kYXRhWydpdGVtcyddW10gPSYgbmV3ICR0aGlzLT5pdGVtX2NsYXNzKCR0aGlzLCAkaXRlbXNbJGtleV0pOwoJCQkJfQoJCQl9CgkJCWlmICgkaXRlbXMgPSAkdGhpcy0+Z2V0X2ZlZWRfdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMDMsICdlbnRyeScpKQoJCQl7CgkJCQkka2V5cyA9IGFycmF5X2tleXMoJGl0ZW1zKTsKCQkJCWZvcmVhY2ggKCRrZXlzIGFzICRrZXkpCgkJCQl7CgkJCQkJJHRoaXMtPmRhdGFbJ2l0ZW1zJ11bXSA9JiBuZXcgJHRoaXMtPml0ZW1fY2xhc3MoJHRoaXMsICRpdGVtc1ska2V5XSk7CgkJCQl9CgkJCX0KCQkJaWYgKCRpdGVtcyA9ICR0aGlzLT5nZXRfZmVlZF90YWdzKFNJTVBMRVBJRV9OQU1FU1BBQ0VfUlNTXzEwLCAnaXRlbScpKQoJCQl7CgkJCQkka2V5cyA9IGFycmF5X2tleXMoJGl0ZW1zKTsKCQkJCWZvcmVhY2ggKCRrZXlzIGFzICRrZXkpCgkJCQl7CgkJCQkJJHRoaXMtPmRhdGFbJ2l0ZW1zJ11bXSA9JiBuZXcgJHRoaXMtPml0ZW1fY2xhc3MoJHRoaXMsICRpdGVtc1ska2V5XSk7CgkJCQl9CgkJCX0KCQkJaWYgKCRpdGVtcyA9ICR0aGlzLT5nZXRfZmVlZF90YWdzKFNJTVBMRVBJRV9OQU1FU1BBQ0VfUlNTXzA5MCwgJ2l0ZW0nKSkKCQkJewoJCQkJJGtleXMgPSBhcnJheV9rZXlzKCRpdGVtcyk7CgkJCQlmb3JlYWNoICgka2V5cyBhcyAka2V5KQoJCQkJewoJCQkJCSR0aGlzLT5kYXRhWydpdGVtcyddW10gPSYgbmV3ICR0aGlzLT5pdGVtX2NsYXNzKCR0aGlzLCAkaXRlbXNbJGtleV0pOwoJCQkJfQoJCQl9CgkJCWlmICgkaXRlbXMgPSAkdGhpcy0+Z2V0X2NoYW5uZWxfdGFncygnJywgJ2l0ZW0nKSkKCQkJewoJCQkJJGtleXMgPSBhcnJheV9rZXlzKCRpdGVtcyk7CgkJCQlmb3JlYWNoICgka2V5cyBhcyAka2V5KQoJCQkJewoJCQkJCSR0aGlzLT5kYXRhWydpdGVtcyddW10gPSYgbmV3ICR0aGlzLT5pdGVtX2NsYXNzKCR0aGlzLCAkaXRlbXNbJGtleV0pOwoJCQkJfQoJCQl9CgkJfQoKCQlpZiAoIWVtcHR5KCR0aGlzLT5kYXRhWydpdGVtcyddKSkKCQl7CgkJCS8vIElmIHdlIHdhbnQgdG8gb3JkZXIgaXQgYnkgZGF0ZSwgY2hlY2sgaWYgYWxsIGl0ZW1zIGhhdmUgYSBkYXRlLCBhbmQgdGhlbiBzb3J0IGl0CgkJCWlmICgkdGhpcy0+b3JkZXJfYnlfZGF0ZSkKCQkJewoJCQkJaWYgKCFpc3NldCgkdGhpcy0+ZGF0YVsnb3JkZXJlZF9pdGVtcyddKSkKCQkJCXsKCQkJCQkkZG9fc29ydCA9IHRydWU7CgkJCQkJZm9yZWFjaCAoJHRoaXMtPmRhdGFbJ2l0ZW1zJ10gYXMgJGl0ZW0pCgkJCQkJewoJCQkJCQlpZiAoISRpdGVtLT5nZXRfZGF0ZSgnVScpKQoJCQkJCQl7CgkJCQkJCQkkZG9fc29ydCA9IGZhbHNlOwoJCQkJCQkJYnJlYWs7CgkJCQkJCX0KCQkJCQl9CgkJCQkJJGl0ZW0gPSBudWxsOwoJCQkJCSR0aGlzLT5kYXRhWydvcmRlcmVkX2l0ZW1zJ10gPSAkdGhpcy0+ZGF0YVsnaXRlbXMnXTsKCQkJCQlpZiAoJGRvX3NvcnQpCgkJCQkJewoJCQkJCQl1c29ydCgkdGhpcy0+ZGF0YVsnb3JkZXJlZF9pdGVtcyddLCBhcnJheSgmJHRoaXMsICdzb3J0X2l0ZW1zJykpOwoJCQkJCX0KCQkJCX0KCQkJCSRpdGVtcyA9ICR0aGlzLT5kYXRhWydvcmRlcmVkX2l0ZW1zJ107CgkJCX0KCQkJZWxzZQoJCQl7CgkJCQkkaXRlbXMgPSAkdGhpcy0+ZGF0YVsnaXRlbXMnXTsKCQkJfQoKCQkJLy8gU2xpY2UgdGhlIGRhdGEgYXMgZGVzaXJlZAoJCQlpZiAoJGVuZCA9PSAwKQoJCQl7CgkJCQlyZXR1cm4gYXJyYXlfc2xpY2UoJGl0ZW1zLCAkc3RhcnQpOwoJCQl9CgkJCWVsc2UKCQkJewoJCQkJcmV0dXJuIGFycmF5X3NsaWNlKCRpdGVtcywgJHN0YXJ0LCAkZW5kKTsKCQkJfQoJCX0KCQllbHNlCgkJewoJCQlyZXR1cm4gYXJyYXkoKTsKCQl9Cgl9CgoJZnVuY3Rpb24gc29ydF9pdGVtcygkYSwgJGIpCgl7CgkJcmV0dXJuICRhLT5nZXRfZGF0ZSgnVScpIDw9ICRiLT5nZXRfZGF0ZSgnVScpOwoJfQoKCWZ1bmN0aW9uIG1lcmdlX2l0ZW1zKCR1cmxzLCAkc3RhcnQgPSAwLCAkZW5kID0gMCwgJGxpbWl0ID0gMCkKCXsKCQlpZiAoaXNfYXJyYXkoJHVybHMpICYmIHNpemVvZigkdXJscykgPiAwKQoJCXsKCQkJJGl0ZW1zID0gYXJyYXkoKTsKCQkJZm9yZWFjaCAoJHVybHMgYXMgJGFyZykKCQkJewoJCQkJaWYgKGlzX2EoJGFyZywgJ1NpbXBsZVBpZScpKQoJCQkJewoJCQkJCSRpdGVtcyA9IGFycmF5X21lcmdlKCRpdGVtcywgJGFyZy0+Z2V0X2l0ZW1zKDAsICRsaW1pdCkpOwoJCQkJfQoJCQkJZWxzZQoJCQkJewoJCQkJCXRyaWdnZXJfZXJyb3IoJ0FyZ3VtZW50cyBtdXN0IGJlIFNpbXBsZVBpZSBvYmplY3RzJywgRV9VU0VSX1dBUk5JTkcpOwoJCQkJfQoJCQl9CgoJCQkkZG9fc29ydCA9IHRydWU7CgkJCWZvcmVhY2ggKCRpdGVtcyBhcyAkaXRlbSkKCQkJewoJCQkJaWYgKCEkaXRlbS0+Z2V0X2RhdGUoJ1UnKSkKCQkJCXsKCQkJCQkkZG9fc29ydCA9IGZhbHNlOwoJCQkJCWJyZWFrOwoJCQkJfQoJCQl9CgkJCSRpdGVtID0gbnVsbDsKCQkJaWYgKCRkb19zb3J0KQoJCQl7CgkJCQl1c29ydCgkaXRlbXMsIGFycmF5KCdTaW1wbGVQaWUnLCAnc29ydF9pdGVtcycpKTsKCQkJfQoKCQkJaWYgKCRlbmQgPT0gMCkKCQkJewoJCQkJcmV0dXJuIGFycmF5X3NsaWNlKCRpdGVtcywgJHN0YXJ0KTsKCQkJfQoJCQllbHNlCgkJCXsKCQkJCXJldHVybiBhcnJheV9zbGljZSgkaXRlbXMsICRzdGFydCwgJGVuZCk7CgkJCX0KCQl9CgkJZWxzZQoJCXsKCQkJdHJpZ2dlcl9lcnJvcignQ2Fubm90IG1lcmdlIHplcm8gU2ltcGxlUGllIG9iamVjdHMnLCBFX1VTRVJfV0FSTklORyk7CgkJCXJldHVybiBhcnJheSgpOwoJCX0KCX0KfQoKY2xhc3MgU2ltcGxlUGllX0l0ZW0KewoJdmFyICRmZWVkOwoJdmFyICRkYXRhID0gYXJyYXkoKTsKCglmdW5jdGlvbiBTaW1wbGVQaWVfSXRlbSgkZmVlZCwgJGRhdGEpCgl7CgkJJHRoaXMtPmZlZWQgPSAkZmVlZDsKCQkkdGhpcy0+ZGF0YSA9ICRkYXRhOwoJfQoKCWZ1bmN0aW9uIF9fdG9TdHJpbmcoKQoJewoJCXJldHVybiBtZDUoc2VyaWFsaXplKCR0aGlzLT5kYXRhKSk7Cgl9CgoJLyoqCgkgKiBSZW1vdmUgaXRlbXMgdGhhdCBsaW5rIGJhY2sgdG8gdGhpcyBiZWZvcmUgZGVzdHJveWluZyB0aGlzIG9iamVjdAoJICovCglmdW5jdGlvbiBfX2Rlc3RydWN0KCkKCXsKCQl1bnNldCgkdGhpcy0+ZmVlZCk7Cgl9CgoJZnVuY3Rpb24gZ2V0X2l0ZW1fdGFncygkbmFtZXNwYWNlLCAkdGFnKQoJewoJCWlmIChpc3NldCgkdGhpcy0+ZGF0YVsnY2hpbGQnXVskbmFtZXNwYWNlXVskdGFnXSkpCgkJewoJCQlyZXR1cm4gJHRoaXMtPmRhdGFbJ2NoaWxkJ11bJG5hbWVzcGFjZV1bJHRhZ107CgkJfQoJCWVsc2UKCQl7CgkJCXJldHVybiBudWxsOwoJCX0KCX0KCglmdW5jdGlvbiBnZXRfYmFzZSgkZWxlbWVudCA9IGFycmF5KCkpCgl7CgkJcmV0dXJuICR0aGlzLT5mZWVkLT5nZXRfYmFzZSgkZWxlbWVudCk7Cgl9CgoJZnVuY3Rpb24gc2FuaXRpemUoJGRhdGEsICR0eXBlLCAkYmFzZSA9ICcnKQoJewoJCXJldHVybiAkdGhpcy0+ZmVlZC0+c2FuaXRpemUoJGRhdGEsICR0eXBlLCAkYmFzZSk7Cgl9CgoJZnVuY3Rpb24gZ2V0X2ZlZWQoKQoJewoJCXJldHVybiAkdGhpcy0+ZmVlZDsKCX0KCglmdW5jdGlvbiBnZXRfaWQoJGhhc2ggPSBmYWxzZSkKCXsKCQlpZiAoISRoYXNoKQoJCXsKCQkJaWYgKCRyZXR1cm4gPSAkdGhpcy0+Z2V0X2l0ZW1fdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMTAsICdpZCcpKQoJCQl7CgkJCQlyZXR1cm4gJHRoaXMtPnNhbml0aXplKCRyZXR1cm5bMF1bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJfQoJCQllbHNlaWYgKCRyZXR1cm4gPSAkdGhpcy0+Z2V0X2l0ZW1fdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMDMsICdpZCcpKQoJCQl7CgkJCQlyZXR1cm4gJHRoaXMtPnNhbml0aXplKCRyZXR1cm5bMF1bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJfQoJCQllbHNlaWYgKCRyZXR1cm4gPSAkdGhpcy0+Z2V0X2l0ZW1fdGFncygnJywgJ2d1aWQnKSkKCQkJewoJCQkJcmV0dXJuICR0aGlzLT5zYW5pdGl6ZSgkcmV0dXJuWzBdWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCX0KCQkJZWxzZWlmICgkcmV0dXJuID0gJHRoaXMtPmdldF9pdGVtX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9EQ18xMSwgJ2lkZW50aWZpZXInKSkKCQkJewoJCQkJcmV0dXJuICR0aGlzLT5zYW5pdGl6ZSgkcmV0dXJuWzBdWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCX0KCQkJZWxzZWlmICgkcmV0dXJuID0gJHRoaXMtPmdldF9pdGVtX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9EQ18xMCwgJ2lkZW50aWZpZXInKSkKCQkJewoJCQkJcmV0dXJuICR0aGlzLT5zYW5pdGl6ZSgkcmV0dXJuWzBdWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCX0KCQkJZWxzZWlmICgoJHJldHVybiA9ICR0aGlzLT5nZXRfcGVybWFsaW5rKCkpICE9PSBudWxsKQoJCQl7CgkJCQlyZXR1cm4gJHJldHVybjsKCQkJfQoJCQllbHNlaWYgKCgkcmV0dXJuID0gJHRoaXMtPmdldF90aXRsZSgpKSAhPT0gbnVsbCkKCQkJewoJCQkJcmV0dXJuICRyZXR1cm47CgkJCX0KCQl9CgkJaWYgKCR0aGlzLT5nZXRfcGVybWFsaW5rKCkgIT09IG51bGwgfHwgJHRoaXMtPmdldF90aXRsZSgpICE9PSBudWxsKQoJCXsKCQkJcmV0dXJuIG1kNSgkdGhpcy0+Z2V0X3Blcm1hbGluaygpIC4gJHRoaXMtPmdldF90aXRsZSgpKTsKCQl9CgkJZWxzZQoJCXsKCQkJcmV0dXJuIG1kNShzZXJpYWxpemUoJHRoaXMtPmRhdGEpKTsKCQl9Cgl9CgoJZnVuY3Rpb24gZ2V0X3RpdGxlKCkKCXsKCQlpZiAoIWlzc2V0KCR0aGlzLT5kYXRhWyd0aXRsZSddKSkKCQl7CgkJCWlmICgkcmV0dXJuID0gJHRoaXMtPmdldF9pdGVtX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9BVE9NXzEwLCAndGl0bGUnKSkKCQkJewoJCQkJJHRoaXMtPmRhdGFbJ3RpdGxlJ10gPSAkdGhpcy0+c2FuaXRpemUoJHJldHVyblswXVsnZGF0YSddLCBTaW1wbGVQaWVfTWlzYzo6YXRvbV8xMF9jb25zdHJ1Y3RfdHlwZSgkcmV0dXJuWzBdWydhdHRyaWJzJ10pLCAkdGhpcy0+Z2V0X2Jhc2UoJHJldHVyblswXSkpOwoJCQl9CgkJCWVsc2VpZiAoJHJldHVybiA9ICR0aGlzLT5nZXRfaXRlbV90YWdzKFNJTVBMRVBJRV9OQU1FU1BBQ0VfQVRPTV8wMywgJ3RpdGxlJykpCgkJCXsKCQkJCSR0aGlzLT5kYXRhWyd0aXRsZSddID0gJHRoaXMtPnNhbml0aXplKCRyZXR1cm5bMF1bJ2RhdGEnXSwgU2ltcGxlUGllX01pc2M6OmF0b21fMDNfY29uc3RydWN0X3R5cGUoJHJldHVyblswXVsnYXR0cmlicyddKSwgJHRoaXMtPmdldF9iYXNlKCRyZXR1cm5bMF0pKTsKCQkJfQoJCQllbHNlaWYgKCRyZXR1cm4gPSAkdGhpcy0+Z2V0X2l0ZW1fdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX1JTU18xMCwgJ3RpdGxlJykpCgkJCXsKCQkJCSR0aGlzLT5kYXRhWyd0aXRsZSddID0gJHRoaXMtPnNhbml0aXplKCRyZXR1cm5bMF1bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9NQVlCRV9IVE1MLCAkdGhpcy0+Z2V0X2Jhc2UoJHJldHVyblswXSkpOwoJCQl9CgkJCWVsc2VpZiAoJHJldHVybiA9ICR0aGlzLT5nZXRfaXRlbV90YWdzKFNJTVBMRVBJRV9OQU1FU1BBQ0VfUlNTXzA5MCwgJ3RpdGxlJykpCgkJCXsKCQkJCSR0aGlzLT5kYXRhWyd0aXRsZSddID0gJHRoaXMtPnNhbml0aXplKCRyZXR1cm5bMF1bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9NQVlCRV9IVE1MLCAkdGhpcy0+Z2V0X2Jhc2UoJHJldHVyblswXSkpOwoJCQl9CgkJCWVsc2VpZiAoJHJldHVybiA9ICR0aGlzLT5nZXRfaXRlbV90YWdzKCcnLCAndGl0bGUnKSkKCQkJewoJCQkJJHRoaXMtPmRhdGFbJ3RpdGxlJ10gPSAkdGhpcy0+c2FuaXRpemUoJHJldHVyblswXVsnZGF0YSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX01BWUJFX0hUTUwsICR0aGlzLT5nZXRfYmFzZSgkcmV0dXJuWzBdKSk7CgkJCX0KCQkJZWxzZWlmICgkcmV0dXJuID0gJHRoaXMtPmdldF9pdGVtX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9EQ18xMSwgJ3RpdGxlJykpCgkJCXsKCQkJCSR0aGlzLT5kYXRhWyd0aXRsZSddID0gJHRoaXMtPnNhbml0aXplKCRyZXR1cm5bMF1bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJfQoJCQllbHNlaWYgKCRyZXR1cm4gPSAkdGhpcy0+Z2V0X2l0ZW1fdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX0RDXzEwLCAndGl0bGUnKSkKCQkJewoJCQkJJHRoaXMtPmRhdGFbJ3RpdGxlJ10gPSAkdGhpcy0+c2FuaXRpemUoJHJldHVyblswXVsnZGF0YSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCQl9CgkJCWVsc2UKCQkJewoJCQkJJHRoaXMtPmRhdGFbJ3RpdGxlJ10gPSBudWxsOwoJCQl9CgkJfQoJCXJldHVybiAkdGhpcy0+ZGF0YVsndGl0bGUnXTsKCX0KCglmdW5jdGlvbiBnZXRfZGVzY3JpcHRpb24oJGRlc2NyaXB0aW9uX29ubHkgPSBmYWxzZSkKCXsKCQlpZiAoJHJldHVybiA9ICR0aGlzLT5nZXRfaXRlbV90YWdzKFNJTVBMRVBJRV9OQU1FU1BBQ0VfQVRPTV8xMCwgJ3N1bW1hcnknKSkKCQl7CgkJCXJldHVybiAkdGhpcy0+c2FuaXRpemUoJHJldHVyblswXVsnZGF0YSddLCBTaW1wbGVQaWVfTWlzYzo6YXRvbV8xMF9jb25zdHJ1Y3RfdHlwZSgkcmV0dXJuWzBdWydhdHRyaWJzJ10pLCAkdGhpcy0+Z2V0X2Jhc2UoJHJldHVyblswXSkpOwoJCX0KCQllbHNlaWYgKCRyZXR1cm4gPSAkdGhpcy0+Z2V0X2l0ZW1fdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMDMsICdzdW1tYXJ5JykpCgkJewoJCQlyZXR1cm4gJHRoaXMtPnNhbml0aXplKCRyZXR1cm5bMF1bJ2RhdGEnXSwgU2ltcGxlUGllX01pc2M6OmF0b21fMDNfY29uc3RydWN0X3R5cGUoJHJldHVyblswXVsnYXR0cmlicyddKSwgJHRoaXMtPmdldF9iYXNlKCRyZXR1cm5bMF0pKTsKCQl9CgkJZWxzZWlmICgkcmV0dXJuID0gJHRoaXMtPmdldF9pdGVtX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9SU1NfMTAsICdkZXNjcmlwdGlvbicpKQoJCXsKCQkJcmV0dXJuICR0aGlzLT5zYW5pdGl6ZSgkcmV0dXJuWzBdWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfTUFZQkVfSFRNTCwgJHRoaXMtPmdldF9iYXNlKCRyZXR1cm5bMF0pKTsKCQl9CgkJZWxzZWlmICgkcmV0dXJuID0gJHRoaXMtPmdldF9pdGVtX3RhZ3MoJycsICdkZXNjcmlwdGlvbicpKQoJCXsKCQkJcmV0dXJuICR0aGlzLT5zYW5pdGl6ZSgkcmV0dXJuWzBdWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfSFRNTCwgJHRoaXMtPmdldF9iYXNlKCRyZXR1cm5bMF0pKTsKCQl9CgkJZWxzZWlmICgkcmV0dXJuID0gJHRoaXMtPmdldF9pdGVtX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9EQ18xMSwgJ2Rlc2NyaXB0aW9uJykpCgkJewoJCQlyZXR1cm4gJHRoaXMtPnNhbml0aXplKCRyZXR1cm5bMF1bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQl9CgkJZWxzZWlmICgkcmV0dXJuID0gJHRoaXMtPmdldF9pdGVtX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9EQ18xMCwgJ2Rlc2NyaXB0aW9uJykpCgkJewoJCQlyZXR1cm4gJHRoaXMtPnNhbml0aXplKCRyZXR1cm5bMF1bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQl9CgkJZWxzZWlmICgkcmV0dXJuID0gJHRoaXMtPmdldF9pdGVtX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9JVFVORVMsICdzdW1tYXJ5JykpCgkJewoJCQlyZXR1cm4gJHRoaXMtPnNhbml0aXplKCRyZXR1cm5bMF1bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9IVE1MLCAkdGhpcy0+Z2V0X2Jhc2UoJHJldHVyblswXSkpOwoJCX0KCQllbHNlaWYgKCRyZXR1cm4gPSAkdGhpcy0+Z2V0X2l0ZW1fdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX0lUVU5FUywgJ3N1YnRpdGxlJykpCgkJewoJCQlyZXR1cm4gJHRoaXMtPnNhbml0aXplKCRyZXR1cm5bMF1bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQl9CgkJZWxzZWlmICghJGRlc2NyaXB0aW9uX29ubHkpCgkJewoJCQlyZXR1cm4gJHRoaXMtPmdldF9jb250ZW50KHRydWUpOwoJCX0KCQllbHNlCgkJewoJCQlyZXR1cm4gbnVsbDsKCQl9Cgl9CgoJZnVuY3Rpb24gZ2V0X2NvbnRlbnQoJGNvbnRlbnRfb25seSA9IGZhbHNlKQoJewoJCWlmICgkcmV0dXJuID0gJHRoaXMtPmdldF9pdGVtX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9BVE9NXzEwLCAnY29udGVudCcpKQoJCXsKCQkJcmV0dXJuICR0aGlzLT5zYW5pdGl6ZSgkcmV0dXJuWzBdWydkYXRhJ10sIFNpbXBsZVBpZV9NaXNjOjphdG9tXzEwX2NvbnRlbnRfY29uc3RydWN0X3R5cGUoJHJldHVyblswXVsnYXR0cmlicyddKSwgJHRoaXMtPmdldF9iYXNlKCRyZXR1cm5bMF0pKTsKCQl9CgkJZWxzZWlmICgkcmV0dXJuID0gJHRoaXMtPmdldF9pdGVtX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9BVE9NXzAzLCAnY29udGVudCcpKQoJCXsKCQkJcmV0dXJuICR0aGlzLT5zYW5pdGl6ZSgkcmV0dXJuWzBdWydkYXRhJ10sIFNpbXBsZVBpZV9NaXNjOjphdG9tXzAzX2NvbnN0cnVjdF90eXBlKCRyZXR1cm5bMF1bJ2F0dHJpYnMnXSksICR0aGlzLT5nZXRfYmFzZSgkcmV0dXJuWzBdKSk7CgkJfQoJCWVsc2VpZiAoJHJldHVybiA9ICR0aGlzLT5nZXRfaXRlbV90YWdzKFNJTVBMRVBJRV9OQU1FU1BBQ0VfUlNTXzEwX01PRFVMRVNfQ09OVEVOVCwgJ2VuY29kZWQnKSkKCQl7CgkJCXJldHVybiAkdGhpcy0+c2FuaXRpemUoJHJldHVyblswXVsnZGF0YSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX0hUTUwsICR0aGlzLT5nZXRfYmFzZSgkcmV0dXJuWzBdKSk7CgkJfQoJCWVsc2VpZiAoISRjb250ZW50X29ubHkpCgkJewoJCQlyZXR1cm4gJHRoaXMtPmdldF9kZXNjcmlwdGlvbih0cnVlKTsKCQl9CgkJZWxzZQoJCXsKCQkJcmV0dXJuIG51bGw7CgkJfQoJfQoKCWZ1bmN0aW9uIGdldF9jYXRlZ29yeSgka2V5ID0gMCkKCXsKCQkkY2F0ZWdvcmllcyA9ICR0aGlzLT5nZXRfY2F0ZWdvcmllcygpOwoJCWlmIChpc3NldCgkY2F0ZWdvcmllc1ska2V5XSkpCgkJewoJCQlyZXR1cm4gJGNhdGVnb3JpZXNbJGtleV07CgkJfQoJCWVsc2UKCQl7CgkJCXJldHVybiBudWxsOwoJCX0KCX0KCglmdW5jdGlvbiBnZXRfY2F0ZWdvcmllcygpCgl7CgkJJGNhdGVnb3JpZXMgPSBhcnJheSgpOwoKCQlmb3JlYWNoICgoYXJyYXkpICR0aGlzLT5nZXRfaXRlbV90YWdzKFNJTVBMRVBJRV9OQU1FU1BBQ0VfQVRPTV8xMCwgJ2NhdGVnb3J5JykgYXMgJGNhdGVnb3J5KQoJCXsKCQkJJHRlcm0gPSBudWxsOwoJCQkkc2NoZW1lID0gbnVsbDsKCQkJJGxhYmVsID0gbnVsbDsKCQkJaWYgKGlzc2V0KCRjYXRlZ29yeVsnYXR0cmlicyddWycnXVsndGVybSddKSkKCQkJewoJCQkJJHRlcm0gPSAkdGhpcy0+c2FuaXRpemUoJGNhdGVnb3J5WydhdHRyaWJzJ11bJyddWyd0ZXJtJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCX0KCQkJaWYgKGlzc2V0KCRjYXRlZ29yeVsnYXR0cmlicyddWycnXVsnc2NoZW1lJ10pKQoJCQl7CgkJCQkkc2NoZW1lID0gJHRoaXMtPnNhbml0aXplKCRjYXRlZ29yeVsnYXR0cmlicyddWycnXVsnc2NoZW1lJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCX0KCQkJaWYgKGlzc2V0KCRjYXRlZ29yeVsnYXR0cmlicyddWycnXVsnbGFiZWwnXSkpCgkJCXsKCQkJCSRsYWJlbCA9ICR0aGlzLT5zYW5pdGl6ZSgkY2F0ZWdvcnlbJ2F0dHJpYnMnXVsnJ11bJ2xhYmVsJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCX0KCQkJJGNhdGVnb3JpZXNbXSA9JiBuZXcgJHRoaXMtPmZlZWQtPmNhdGVnb3J5X2NsYXNzKCR0ZXJtLCAkc2NoZW1lLCAkbGFiZWwpOwoJCX0KCQlmb3JlYWNoICgoYXJyYXkpICR0aGlzLT5nZXRfaXRlbV90YWdzKCcnLCAnY2F0ZWdvcnknKSBhcyAkY2F0ZWdvcnkpCgkJewoJCQkkY2F0ZWdvcmllc1tdID0mIG5ldyAkdGhpcy0+ZmVlZC0+Y2F0ZWdvcnlfY2xhc3MoJHRoaXMtPnNhbml0aXplKCRjYXRlZ29yeVsnZGF0YSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpLCBudWxsLCBudWxsKTsKCQl9CgkJZm9yZWFjaCAoKGFycmF5KSAkdGhpcy0+Z2V0X2l0ZW1fdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX0RDXzExLCAnc3ViamVjdCcpIGFzICRjYXRlZ29yeSkKCQl7CgkJCSRjYXRlZ29yaWVzW10gPSYgbmV3ICR0aGlzLT5mZWVkLT5jYXRlZ29yeV9jbGFzcygkdGhpcy0+c2FuaXRpemUoJGNhdGVnb3J5WydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCksIG51bGwsIG51bGwpOwoJCX0KCQlmb3JlYWNoICgoYXJyYXkpICR0aGlzLT5nZXRfaXRlbV90YWdzKFNJTVBMRVBJRV9OQU1FU1BBQ0VfRENfMTAsICdzdWJqZWN0JykgYXMgJGNhdGVnb3J5KQoJCXsKCQkJJGNhdGVnb3JpZXNbXSA9JiBuZXcgJHRoaXMtPmZlZWQtPmNhdGVnb3J5X2NsYXNzKCR0aGlzLT5zYW5pdGl6ZSgkY2F0ZWdvcnlbJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKSwgbnVsbCwgbnVsbCk7CgkJfQoKCQlpZiAoIWVtcHR5KCRjYXRlZ29yaWVzKSkKCQl7CgkJCXJldHVybiBTaW1wbGVQaWVfTWlzYzo6YXJyYXlfdW5pcXVlKCRjYXRlZ29yaWVzKTsKCQl9CgkJZWxzZQoJCXsKCQkJcmV0dXJuIG51bGw7CgkJfQoJfQoKCWZ1bmN0aW9uIGdldF9hdXRob3IoJGtleSA9IDApCgl7CgkJJGF1dGhvcnMgPSAkdGhpcy0+Z2V0X2F1dGhvcnMoKTsKCQlpZiAoaXNzZXQoJGF1dGhvcnNbJGtleV0pKQoJCXsKCQkJcmV0dXJuICRhdXRob3JzWyRrZXldOwoJCX0KCQllbHNlCgkJewoJCQlyZXR1cm4gbnVsbDsKCQl9Cgl9CgoJZnVuY3Rpb24gZ2V0X2NvbnRyaWJ1dG9yKCRrZXkgPSAwKQoJewoJCSRjb250cmlidXRvcnMgPSAkdGhpcy0+Z2V0X2NvbnRyaWJ1dG9ycygpOwoJCWlmIChpc3NldCgkY29udHJpYnV0b3JzWyRrZXldKSkKCQl7CgkJCXJldHVybiAkY29udHJpYnV0b3JzWyRrZXldOwoJCX0KCQllbHNlCgkJewoJCQlyZXR1cm4gbnVsbDsKCQl9Cgl9CgoJZnVuY3Rpb24gZ2V0X2NvbnRyaWJ1dG9ycygpCgl7CgkJJGNvbnRyaWJ1dG9ycyA9IGFycmF5KCk7CgkJZm9yZWFjaCAoKGFycmF5KSAkdGhpcy0+Z2V0X2l0ZW1fdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMTAsICdjb250cmlidXRvcicpIGFzICRjb250cmlidXRvcikKCQl7CgkJCSRuYW1lID0gbnVsbDsKCQkJJHVyaSA9IG51bGw7CgkJCSRlbWFpbCA9IG51bGw7CgkJCWlmIChpc3NldCgkY29udHJpYnV0b3JbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9BVE9NXzEwXVsnbmFtZSddWzBdWydkYXRhJ10pKQoJCQl7CgkJCQkkbmFtZSA9ICR0aGlzLT5zYW5pdGl6ZSgkY29udHJpYnV0b3JbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9BVE9NXzEwXVsnbmFtZSddWzBdWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCX0KCQkJaWYgKGlzc2V0KCRjb250cmlidXRvclsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMTBdWyd1cmknXVswXVsnZGF0YSddKSkKCQkJewoJCQkJJHVyaSA9ICR0aGlzLT5zYW5pdGl6ZSgkY29udHJpYnV0b3JbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9BVE9NXzEwXVsndXJpJ11bMF1bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9JUkksICR0aGlzLT5nZXRfYmFzZSgkY29udHJpYnV0b3JbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9BVE9NXzEwXVsndXJpJ11bMF0pKTsKCQkJfQoJCQlpZiAoaXNzZXQoJGNvbnRyaWJ1dG9yWydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfQVRPTV8xMF1bJ2VtYWlsJ11bMF1bJ2RhdGEnXSkpCgkJCXsKCQkJCSRlbWFpbCA9ICR0aGlzLT5zYW5pdGl6ZSgkY29udHJpYnV0b3JbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9BVE9NXzEwXVsnZW1haWwnXVswXVsnZGF0YSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCQl9CgkJCWlmICgkbmFtZSAhPT0gbnVsbCB8fCAkZW1haWwgIT09IG51bGwgfHwgJHVyaSAhPT0gbnVsbCkKCQkJewoJCQkJJGNvbnRyaWJ1dG9yc1tdID0mIG5ldyAkdGhpcy0+ZmVlZC0+YXV0aG9yX2NsYXNzKCRuYW1lLCAkdXJpLCAkZW1haWwpOwoJCQl9CgkJfQoJCWZvcmVhY2ggKChhcnJheSkgJHRoaXMtPmdldF9pdGVtX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9BVE9NXzAzLCAnY29udHJpYnV0b3InKSBhcyAkY29udHJpYnV0b3IpCgkJewoJCQkkbmFtZSA9IG51bGw7CgkJCSR1cmwgPSBudWxsOwoJCQkkZW1haWwgPSBudWxsOwoJCQlpZiAoaXNzZXQoJGNvbnRyaWJ1dG9yWydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfQVRPTV8wM11bJ25hbWUnXVswXVsnZGF0YSddKSkKCQkJewoJCQkJJG5hbWUgPSAkdGhpcy0+c2FuaXRpemUoJGNvbnRyaWJ1dG9yWydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfQVRPTV8wM11bJ25hbWUnXVswXVsnZGF0YSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCQl9CgkJCWlmIChpc3NldCgkY29udHJpYnV0b3JbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9BVE9NXzAzXVsndXJsJ11bMF1bJ2RhdGEnXSkpCgkJCXsKCQkJCSR1cmwgPSAkdGhpcy0+c2FuaXRpemUoJGNvbnRyaWJ1dG9yWydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfQVRPTV8wM11bJ3VybCddWzBdWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfSVJJLCAkdGhpcy0+Z2V0X2Jhc2UoJGNvbnRyaWJ1dG9yWydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfQVRPTV8wM11bJ3VybCddWzBdKSk7CgkJCX0KCQkJaWYgKGlzc2V0KCRjb250cmlidXRvclsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMDNdWydlbWFpbCddWzBdWydkYXRhJ10pKQoJCQl7CgkJCQkkZW1haWwgPSAkdGhpcy0+c2FuaXRpemUoJGNvbnRyaWJ1dG9yWydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfQVRPTV8wM11bJ2VtYWlsJ11bMF1bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJfQoJCQlpZiAoJG5hbWUgIT09IG51bGwgfHwgJGVtYWlsICE9PSBudWxsIHx8ICR1cmwgIT09IG51bGwpCgkJCXsKCQkJCSRjb250cmlidXRvcnNbXSA9JiBuZXcgJHRoaXMtPmZlZWQtPmF1dGhvcl9jbGFzcygkbmFtZSwgJHVybCwgJGVtYWlsKTsKCQkJfQoJCX0KCgkJaWYgKCFlbXB0eSgkY29udHJpYnV0b3JzKSkKCQl7CgkJCXJldHVybiBTaW1wbGVQaWVfTWlzYzo6YXJyYXlfdW5pcXVlKCRjb250cmlidXRvcnMpOwoJCX0KCQllbHNlCgkJewoJCQlyZXR1cm4gbnVsbDsKCQl9Cgl9CgoJLyoqCgkgKiBAdG9kbyBBdG9tIGluaGVyaXRhbmNlIChpdGVtIGF1dGhvciwgc291cmNlIGF1dGhvciwgZmVlZCBhdXRob3IpCgkgKi8KCWZ1bmN0aW9uIGdldF9hdXRob3JzKCkKCXsKCQkkYXV0aG9ycyA9IGFycmF5KCk7CgkJZm9yZWFjaCAoKGFycmF5KSAkdGhpcy0+Z2V0X2l0ZW1fdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMTAsICdhdXRob3InKSBhcyAkYXV0aG9yKQoJCXsKCQkJJG5hbWUgPSBudWxsOwoJCQkkdXJpID0gbnVsbDsKCQkJJGVtYWlsID0gbnVsbDsKCQkJaWYgKGlzc2V0KCRhdXRob3JbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9BVE9NXzEwXVsnbmFtZSddWzBdWydkYXRhJ10pKQoJCQl7CgkJCQkkbmFtZSA9ICR0aGlzLT5zYW5pdGl6ZSgkYXV0aG9yWydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfQVRPTV8xMF1bJ25hbWUnXVswXVsnZGF0YSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCQl9CgkJCWlmIChpc3NldCgkYXV0aG9yWydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfQVRPTV8xMF1bJ3VyaSddWzBdWydkYXRhJ10pKQoJCQl7CgkJCQkkdXJpID0gJHRoaXMtPnNhbml0aXplKCRhdXRob3JbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9BVE9NXzEwXVsndXJpJ11bMF1bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9JUkksICR0aGlzLT5nZXRfYmFzZSgkYXV0aG9yWydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfQVRPTV8xMF1bJ3VyaSddWzBdKSk7CgkJCX0KCQkJaWYgKGlzc2V0KCRhdXRob3JbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9BVE9NXzEwXVsnZW1haWwnXVswXVsnZGF0YSddKSkKCQkJewoJCQkJJGVtYWlsID0gJHRoaXMtPnNhbml0aXplKCRhdXRob3JbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9BVE9NXzEwXVsnZW1haWwnXVswXVsnZGF0YSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCQl9CgkJCWlmICgkbmFtZSAhPT0gbnVsbCB8fCAkZW1haWwgIT09IG51bGwgfHwgJHVyaSAhPT0gbnVsbCkKCQkJewoJCQkJJGF1dGhvcnNbXSA9JiBuZXcgJHRoaXMtPmZlZWQtPmF1dGhvcl9jbGFzcygkbmFtZSwgJHVyaSwgJGVtYWlsKTsKCQkJfQoJCX0KCQlpZiAoJGF1dGhvciA9ICR0aGlzLT5nZXRfaXRlbV90YWdzKFNJTVBMRVBJRV9OQU1FU1BBQ0VfQVRPTV8wMywgJ2F1dGhvcicpKQoJCXsKCQkJJG5hbWUgPSBudWxsOwoJCQkkdXJsID0gbnVsbDsKCQkJJGVtYWlsID0gbnVsbDsKCQkJaWYgKGlzc2V0KCRhdXRob3JbMF1bJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9BVE9NXzAzXVsnbmFtZSddWzBdWydkYXRhJ10pKQoJCQl7CgkJCQkkbmFtZSA9ICR0aGlzLT5zYW5pdGl6ZSgkYXV0aG9yWzBdWydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfQVRPTV8wM11bJ25hbWUnXVswXVsnZGF0YSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCQl9CgkJCWlmIChpc3NldCgkYXV0aG9yWzBdWydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfQVRPTV8wM11bJ3VybCddWzBdWydkYXRhJ10pKQoJCQl7CgkJCQkkdXJsID0gJHRoaXMtPnNhbml0aXplKCRhdXRob3JbMF1bJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9BVE9NXzAzXVsndXJsJ11bMF1bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9JUkksICR0aGlzLT5nZXRfYmFzZSgkYXV0aG9yWzBdWydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfQVRPTV8wM11bJ3VybCddWzBdKSk7CgkJCX0KCQkJaWYgKGlzc2V0KCRhdXRob3JbMF1bJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9BVE9NXzAzXVsnZW1haWwnXVswXVsnZGF0YSddKSkKCQkJewoJCQkJJGVtYWlsID0gJHRoaXMtPnNhbml0aXplKCRhdXRob3JbMF1bJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9BVE9NXzAzXVsnZW1haWwnXVswXVsnZGF0YSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCQl9CgkJCWlmICgkbmFtZSAhPT0gbnVsbCB8fCAkZW1haWwgIT09IG51bGwgfHwgJHVybCAhPT0gbnVsbCkKCQkJewoJCQkJJGF1dGhvcnNbXSA9JiBuZXcgJHRoaXMtPmZlZWQtPmF1dGhvcl9jbGFzcygkbmFtZSwgJHVybCwgJGVtYWlsKTsKCQkJfQoJCX0KCQlpZiAoJGF1dGhvciA9ICR0aGlzLT5nZXRfaXRlbV90YWdzKCcnLCAnYXV0aG9yJykpCgkJewoJCQkkYXV0aG9yc1tdID0mIG5ldyAkdGhpcy0+ZmVlZC0+YXV0aG9yX2NsYXNzKG51bGwsIG51bGwsICR0aGlzLT5zYW5pdGl6ZSgkYXV0aG9yWzBdWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCkpOwoJCX0KCQlmb3JlYWNoICgoYXJyYXkpICR0aGlzLT5nZXRfaXRlbV90YWdzKFNJTVBMRVBJRV9OQU1FU1BBQ0VfRENfMTEsICdjcmVhdG9yJykgYXMgJGF1dGhvcikKCQl7CgkJCSRhdXRob3JzW10gPSYgbmV3ICR0aGlzLT5mZWVkLT5hdXRob3JfY2xhc3MoJHRoaXMtPnNhbml0aXplKCRhdXRob3JbJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKSwgbnVsbCwgbnVsbCk7CgkJfQoJCWZvcmVhY2ggKChhcnJheSkgJHRoaXMtPmdldF9pdGVtX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9EQ18xMCwgJ2NyZWF0b3InKSBhcyAkYXV0aG9yKQoJCXsKCQkJJGF1dGhvcnNbXSA9JiBuZXcgJHRoaXMtPmZlZWQtPmF1dGhvcl9jbGFzcygkdGhpcy0+c2FuaXRpemUoJGF1dGhvclsnZGF0YSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpLCBudWxsLCBudWxsKTsKCQl9CgkJZm9yZWFjaCAoKGFycmF5KSAkdGhpcy0+Z2V0X2l0ZW1fdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX0lUVU5FUywgJ2F1dGhvcicpIGFzICRhdXRob3IpCgkJewoJCQkkYXV0aG9yc1tdID0mIG5ldyAkdGhpcy0+ZmVlZC0+YXV0aG9yX2NsYXNzKCR0aGlzLT5zYW5pdGl6ZSgkYXV0aG9yWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCksIG51bGwsIG51bGwpOwoJCX0KCgkJaWYgKCFlbXB0eSgkYXV0aG9ycykpCgkJewoJCQlyZXR1cm4gU2ltcGxlUGllX01pc2M6OmFycmF5X3VuaXF1ZSgkYXV0aG9ycyk7CgkJfQoJCWVsc2VpZiAoKCRzb3VyY2UgPSAkdGhpcy0+Z2V0X3NvdXJjZSgpKSAmJiAoJGF1dGhvcnMgPSAkc291cmNlLT5nZXRfYXV0aG9ycygpKSkKCQl7CgkJCXJldHVybiAkYXV0aG9yczsKCQl9CgkJZWxzZWlmICgkYXV0aG9ycyA9ICR0aGlzLT5mZWVkLT5nZXRfYXV0aG9ycygpKQoJCXsKCQkJcmV0dXJuICRhdXRob3JzOwoJCX0KCQllbHNlCgkJewoJCQlyZXR1cm4gbnVsbDsKCQl9Cgl9CgoJZnVuY3Rpb24gZ2V0X2NvcHlyaWdodCgpCgl7CgkJaWYgKCRyZXR1cm4gPSAkdGhpcy0+Z2V0X2l0ZW1fdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMTAsICdyaWdodHMnKSkKCQl7CgkJCXJldHVybiAkdGhpcy0+c2FuaXRpemUoJHJldHVyblswXVsnZGF0YSddLCBTaW1wbGVQaWVfTWlzYzo6YXRvbV8xMF9jb25zdHJ1Y3RfdHlwZSgkcmV0dXJuWzBdWydhdHRyaWJzJ10pLCAkdGhpcy0+Z2V0X2Jhc2UoJHJldHVyblswXSkpOwoJCX0KCQllbHNlaWYgKCRyZXR1cm4gPSAkdGhpcy0+Z2V0X2l0ZW1fdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX0RDXzExLCAncmlnaHRzJykpCgkJewoJCQlyZXR1cm4gJHRoaXMtPnNhbml0aXplKCRyZXR1cm5bMF1bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQl9CgkJZWxzZWlmICgkcmV0dXJuID0gJHRoaXMtPmdldF9pdGVtX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9EQ18xMCwgJ3JpZ2h0cycpKQoJCXsKCQkJcmV0dXJuICR0aGlzLT5zYW5pdGl6ZSgkcmV0dXJuWzBdWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJfQoJCWVsc2UKCQl7CgkJCXJldHVybiBudWxsOwoJCX0KCX0KCglmdW5jdGlvbiBnZXRfZGF0ZSgkZGF0ZV9mb3JtYXQgPSAnaiBGIFksIGc6aSBhJykKCXsKCQlpZiAoIWlzc2V0KCR0aGlzLT5kYXRhWydkYXRlJ10pKQoJCXsKCQkJaWYgKCRyZXR1cm4gPSAkdGhpcy0+Z2V0X2l0ZW1fdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMTAsICdwdWJsaXNoZWQnKSkKCQkJewoJCQkJJHRoaXMtPmRhdGFbJ2RhdGUnXVsncmF3J10gPSAkcmV0dXJuWzBdWydkYXRhJ107CgkJCX0KCQkJZWxzZWlmICgkcmV0dXJuID0gJHRoaXMtPmdldF9pdGVtX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9BVE9NXzEwLCAndXBkYXRlZCcpKQoJCQl7CgkJCQkkdGhpcy0+ZGF0YVsnZGF0ZSddWydyYXcnXSA9ICRyZXR1cm5bMF1bJ2RhdGEnXTsKCQkJfQoJCQllbHNlaWYgKCRyZXR1cm4gPSAkdGhpcy0+Z2V0X2l0ZW1fdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMDMsICdpc3N1ZWQnKSkKCQkJewoJCQkJJHRoaXMtPmRhdGFbJ2RhdGUnXVsncmF3J10gPSAkcmV0dXJuWzBdWydkYXRhJ107CgkJCX0KCQkJZWxzZWlmICgkcmV0dXJuID0gJHRoaXMtPmdldF9pdGVtX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9BVE9NXzAzLCAnY3JlYXRlZCcpKQoJCQl7CgkJCQkkdGhpcy0+ZGF0YVsnZGF0ZSddWydyYXcnXSA9ICRyZXR1cm5bMF1bJ2RhdGEnXTsKCQkJfQoJCQllbHNlaWYgKCRyZXR1cm4gPSAkdGhpcy0+Z2V0X2l0ZW1fdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMDMsICdtb2RpZmllZCcpKQoJCQl7CgkJCQkkdGhpcy0+ZGF0YVsnZGF0ZSddWydyYXcnXSA9ICRyZXR1cm5bMF1bJ2RhdGEnXTsKCQkJfQoJCQllbHNlaWYgKCRyZXR1cm4gPSAkdGhpcy0+Z2V0X2l0ZW1fdGFncygnJywgJ3B1YkRhdGUnKSkKCQkJewoJCQkJJHRoaXMtPmRhdGFbJ2RhdGUnXVsncmF3J10gPSAkcmV0dXJuWzBdWydkYXRhJ107CgkJCX0KCQkJZWxzZWlmICgkcmV0dXJuID0gJHRoaXMtPmdldF9pdGVtX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9EQ18xMSwgJ2RhdGUnKSkKCQkJewoJCQkJJHRoaXMtPmRhdGFbJ2RhdGUnXVsncmF3J10gPSAkcmV0dXJuWzBdWydkYXRhJ107CgkJCX0KCQkJZWxzZWlmICgkcmV0dXJuID0gJHRoaXMtPmdldF9pdGVtX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9EQ18xMCwgJ2RhdGUnKSkKCQkJewoJCQkJJHRoaXMtPmRhdGFbJ2RhdGUnXVsncmF3J10gPSAkcmV0dXJuWzBdWydkYXRhJ107CgkJCX0KCgkJCWlmICghZW1wdHkoJHRoaXMtPmRhdGFbJ2RhdGUnXVsncmF3J10pKQoJCQl7CgkJCQkkcGFyc2VyID0gU2ltcGxlUGllX1BhcnNlX0RhdGU6OmdldCgpOwoJCQkJJHRoaXMtPmRhdGFbJ2RhdGUnXVsncGFyc2VkJ10gPSAkcGFyc2VyLT5wYXJzZSgkdGhpcy0+ZGF0YVsnZGF0ZSddWydyYXcnXSk7CgkJCX0KCQkJZWxzZQoJCQl7CgkJCQkkdGhpcy0+ZGF0YVsnZGF0ZSddID0gbnVsbDsKCQkJfQoJCX0KCQlpZiAoJHRoaXMtPmRhdGFbJ2RhdGUnXSkKCQl7CgkJCSRkYXRlX2Zvcm1hdCA9IChzdHJpbmcpICRkYXRlX2Zvcm1hdDsKCQkJc3dpdGNoICgkZGF0ZV9mb3JtYXQpCgkJCXsKCQkJCWNhc2UgJyc6CgkJCQkJcmV0dXJuICR0aGlzLT5zYW5pdGl6ZSgkdGhpcy0+ZGF0YVsnZGF0ZSddWydyYXcnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCgkJCQljYXNlICdVJzoKCQkJCQlyZXR1cm4gJHRoaXMtPmRhdGFbJ2RhdGUnXVsncGFyc2VkJ107CgoJCQkJZGVmYXVsdDoKCQkJCQlyZXR1cm4gZGF0ZSgkZGF0ZV9mb3JtYXQsICR0aGlzLT5kYXRhWydkYXRlJ11bJ3BhcnNlZCddKTsKCQkJfQoJCX0KCQllbHNlCgkJewoJCQlyZXR1cm4gbnVsbDsKCQl9Cgl9CgoJZnVuY3Rpb24gZ2V0X2xvY2FsX2RhdGUoJGRhdGVfZm9ybWF0ID0gJyVjJykKCXsKCQlpZiAoISRkYXRlX2Zvcm1hdCkKCQl7CgkJCXJldHVybiAkdGhpcy0+c2FuaXRpemUoJHRoaXMtPmdldF9kYXRlKCcnKSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQl9CgkJZWxzZWlmICgoJGRhdGUgPSAkdGhpcy0+Z2V0X2RhdGUoJ1UnKSkgIT09IG51bGwpCgkJewoJCQlyZXR1cm4gc3RyZnRpbWUoJGRhdGVfZm9ybWF0LCAkZGF0ZSk7CgkJfQoJCWVsc2UKCQl7CgkJCXJldHVybiBudWxsOwoJCX0KCX0KCglmdW5jdGlvbiBnZXRfcGVybWFsaW5rKCkKCXsKCQkkbGluayA9ICR0aGlzLT5nZXRfbGluaygpOwoJCSRlbmNsb3N1cmUgPSAkdGhpcy0+Z2V0X2VuY2xvc3VyZSgwKTsKCQlpZiAoJGxpbmsgIT09IG51bGwpCgkJewoJCQlyZXR1cm4gJGxpbms7CgkJfQoJCWVsc2VpZiAoJGVuY2xvc3VyZSAhPT0gbnVsbCkKCQl7CgkJCXJldHVybiAkZW5jbG9zdXJlLT5nZXRfbGluaygpOwoJCX0KCQllbHNlCgkJewoJCQlyZXR1cm4gbnVsbDsKCQl9Cgl9CgoJZnVuY3Rpb24gZ2V0X2xpbmsoJGtleSA9IDAsICRyZWwgPSAnYWx0ZXJuYXRlJykKCXsKCQkkbGlua3MgPSAkdGhpcy0+Z2V0X2xpbmtzKCRyZWwpOwoJCWlmICgkbGlua3NbJGtleV0gIT09IG51bGwpCgkJewoJCQlyZXR1cm4gJGxpbmtzWyRrZXldOwoJCX0KCQllbHNlCgkJewoJCQlyZXR1cm4gbnVsbDsKCQl9Cgl9CgoJZnVuY3Rpb24gZ2V0X2xpbmtzKCRyZWwgPSAnYWx0ZXJuYXRlJykKCXsKCQlpZiAoIWlzc2V0KCR0aGlzLT5kYXRhWydsaW5rcyddKSkKCQl7CgkJCSR0aGlzLT5kYXRhWydsaW5rcyddID0gYXJyYXkoKTsKCQkJZm9yZWFjaCAoKGFycmF5KSAkdGhpcy0+Z2V0X2l0ZW1fdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMTAsICdsaW5rJykgYXMgJGxpbmspCgkJCXsKCQkJCWlmIChpc3NldCgkbGlua1snYXR0cmlicyddWycnXVsnaHJlZiddKSkKCQkJCXsKCQkJCQkkbGlua19yZWwgPSAoaXNzZXQoJGxpbmtbJ2F0dHJpYnMnXVsnJ11bJ3JlbCddKSkgPyAkbGlua1snYXR0cmlicyddWycnXVsncmVsJ10gOiAnYWx0ZXJuYXRlJzsKCQkJCQkkdGhpcy0+ZGF0YVsnbGlua3MnXVskbGlua19yZWxdW10gPSAkdGhpcy0+c2FuaXRpemUoJGxpbmtbJ2F0dHJpYnMnXVsnJ11bJ2hyZWYnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9JUkksICR0aGlzLT5nZXRfYmFzZSgkbGluaykpOwoKCQkJCX0KCQkJfQoJCQlmb3JlYWNoICgoYXJyYXkpICR0aGlzLT5nZXRfaXRlbV90YWdzKFNJTVBMRVBJRV9OQU1FU1BBQ0VfQVRPTV8wMywgJ2xpbmsnKSBhcyAkbGluaykKCQkJewoJCQkJaWYgKGlzc2V0KCRsaW5rWydhdHRyaWJzJ11bJyddWydocmVmJ10pKQoJCQkJewoJCQkJCSRsaW5rX3JlbCA9IChpc3NldCgkbGlua1snYXR0cmlicyddWycnXVsncmVsJ10pKSA/ICRsaW5rWydhdHRyaWJzJ11bJyddWydyZWwnXSA6ICdhbHRlcm5hdGUnOwoJCQkJCSR0aGlzLT5kYXRhWydsaW5rcyddWyRsaW5rX3JlbF1bXSA9ICR0aGlzLT5zYW5pdGl6ZSgkbGlua1snYXR0cmlicyddWycnXVsnaHJlZiddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX0lSSSwgJHRoaXMtPmdldF9iYXNlKCRsaW5rKSk7CgkJCQl9CgkJCX0KCQkJaWYgKCRsaW5rcyA9ICR0aGlzLT5nZXRfaXRlbV90YWdzKFNJTVBMRVBJRV9OQU1FU1BBQ0VfUlNTXzEwLCAnbGluaycpKQoJCQl7CgkJCQkkdGhpcy0+ZGF0YVsnbGlua3MnXVsnYWx0ZXJuYXRlJ11bXSA9ICR0aGlzLT5zYW5pdGl6ZSgkbGlua3NbMF1bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9JUkksICR0aGlzLT5nZXRfYmFzZSgkbGlua3NbMF0pKTsKCQkJfQoJCQlpZiAoJGxpbmtzID0gJHRoaXMtPmdldF9pdGVtX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9SU1NfMDkwLCAnbGluaycpKQoJCQl7CgkJCQkkdGhpcy0+ZGF0YVsnbGlua3MnXVsnYWx0ZXJuYXRlJ11bXSA9ICR0aGlzLT5zYW5pdGl6ZSgkbGlua3NbMF1bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9JUkksICR0aGlzLT5nZXRfYmFzZSgkbGlua3NbMF0pKTsKCQkJfQoJCQlpZiAoJGxpbmtzID0gJHRoaXMtPmdldF9pdGVtX3RhZ3MoJycsICdsaW5rJykpCgkJCXsKCQkJCSR0aGlzLT5kYXRhWydsaW5rcyddWydhbHRlcm5hdGUnXVtdID0gJHRoaXMtPnNhbml0aXplKCRsaW5rc1swXVsnZGF0YSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX0lSSSwgJHRoaXMtPmdldF9iYXNlKCRsaW5rc1swXSkpOwoJCQl9CgkJCWlmICgkbGlua3MgPSAkdGhpcy0+Z2V0X2l0ZW1fdGFncygnJywgJ2d1aWQnKSkKCQkJewoJCQkJaWYgKCFpc3NldCgkbGlua3NbMF1bJ2F0dHJpYnMnXVsnJ11bJ2lzUGVybWFMaW5rJ10pIHx8IHN0cnRvbG93ZXIodHJpbSgkbGlua3NbMF1bJ2F0dHJpYnMnXVsnJ11bJ2lzUGVybWFMaW5rJ10pKSA9PSAndHJ1ZScpCgkJCQl7CgkJCQkJJHRoaXMtPmRhdGFbJ2xpbmtzJ11bJ2FsdGVybmF0ZSddW10gPSAkdGhpcy0+c2FuaXRpemUoJGxpbmtzWzBdWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfSVJJLCAkdGhpcy0+Z2V0X2Jhc2UoJGxpbmtzWzBdKSk7CgkJCQl9CgkJCX0KCgkJCSRrZXlzID0gYXJyYXlfa2V5cygkdGhpcy0+ZGF0YVsnbGlua3MnXSk7CgkJCWZvcmVhY2ggKCRrZXlzIGFzICRrZXkpCgkJCXsKCQkJCWlmIChTaW1wbGVQaWVfTWlzYzo6aXNfaXNlZ21lbnRfbnpfbmMoJGtleSkpCgkJCQl7CgkJCQkJaWYgKGlzc2V0KCR0aGlzLT5kYXRhWydsaW5rcyddW1NJTVBMRVBJRV9JQU5BX0xJTktfUkVMQVRJT05TX1JFR0lTVFJZIC4gJGtleV0pKQoJCQkJCXsKCQkJCQkJJHRoaXMtPmRhdGFbJ2xpbmtzJ11bU0lNUExFUElFX0lBTkFfTElOS19SRUxBVElPTlNfUkVHSVNUUlkgLiAka2V5XSA9IGFycmF5X21lcmdlKCR0aGlzLT5kYXRhWydsaW5rcyddWyRrZXldLCAkdGhpcy0+ZGF0YVsnbGlua3MnXVtTSU1QTEVQSUVfSUFOQV9MSU5LX1JFTEFUSU9OU19SRUdJU1RSWSAuICRrZXldKTsKCQkJCQkJJHRoaXMtPmRhdGFbJ2xpbmtzJ11bJGtleV0gPSYgJHRoaXMtPmRhdGFbJ2xpbmtzJ11bU0lNUExFUElFX0lBTkFfTElOS19SRUxBVElPTlNfUkVHSVNUUlkgLiAka2V5XTsKCQkJCQl9CgkJCQkJZWxzZQoJCQkJCXsKCQkJCQkJJHRoaXMtPmRhdGFbJ2xpbmtzJ11bU0lNUExFUElFX0lBTkFfTElOS19SRUxBVElPTlNfUkVHSVNUUlkgLiAka2V5XSA9JiAkdGhpcy0+ZGF0YVsnbGlua3MnXVska2V5XTsKCQkJCQl9CgkJCQl9CgkJCQllbHNlaWYgKHN1YnN0cigka2V5LCAwLCA0MSkgPT0gU0lNUExFUElFX0lBTkFfTElOS19SRUxBVElPTlNfUkVHSVNUUlkpCgkJCQl7CgkJCQkJJHRoaXMtPmRhdGFbJ2xpbmtzJ11bc3Vic3RyKCRrZXksIDQxKV0gPSYgJHRoaXMtPmRhdGFbJ2xpbmtzJ11bJGtleV07CgkJCQl9CgkJCQkkdGhpcy0+ZGF0YVsnbGlua3MnXVska2V5XSA9IGFycmF5X3VuaXF1ZSgkdGhpcy0+ZGF0YVsnbGlua3MnXVska2V5XSk7CgkJCX0KCQl9CgkJaWYgKGlzc2V0KCR0aGlzLT5kYXRhWydsaW5rcyddWyRyZWxdKSkKCQl7CgkJCXJldHVybiAkdGhpcy0+ZGF0YVsnbGlua3MnXVskcmVsXTsKCQl9CgkJZWxzZQoJCXsKCQkJcmV0dXJuIG51bGw7CgkJfQoJfQoKCS8qKgoJICogQHRvZG8gQWRkIGFiaWxpdHkgdG8gcHJlZmVyIG9uZSB0eXBlIG9mIGNvbnRlbnQgb3ZlciBhbm90aGVyIChpbiBhIG1lZGlhIGdyb3VwKS4KCSAqLwoJZnVuY3Rpb24gZ2V0X2VuY2xvc3VyZSgka2V5ID0gMCwgJHByZWZlciA9IG51bGwpCgl7CgkJJGVuY2xvc3VyZXMgPSAkdGhpcy0+Z2V0X2VuY2xvc3VyZXMoKTsKCQlpZiAoaXNzZXQoJGVuY2xvc3VyZXNbJGtleV0pKQoJCXsKCQkJcmV0dXJuICRlbmNsb3N1cmVzWyRrZXldOwoJCX0KCQllbHNlCgkJewoJCQlyZXR1cm4gbnVsbDsKCQl9Cgl9CgoJLyoqCgkgKiBHcmFicyBhbGwgYXZhaWxhYmxlIGVuY2xvc3VyZXMgKHBvZGNhc3RzLCBldGMuKQoJICoKCSAqIFN1cHBvcnRzIHRoZSA8ZW5jbG9zdXJlPiBSU1MgdGFnLCBhcyB3ZWxsIGFzIE1lZGlhIFJTUyBhbmQgaVR1bmVzIFJTUy4KCSAqCgkgKiBBdCB0aGlzIHBvaW50LCB3ZSdyZSBwcmV0dHkgbXVjaCBhc3N1bWluZyB0aGF0IGFsbCBlbmNsb3N1cmVzIGZvciBhbiBpdGVtIGFyZSB0aGUgc2FtZSBjb250ZW50LiAgQW55dGhpbmcgZWxzZSBpcyB0b28gY29tcGxpY2F0ZWQgdG8gcHJvcGVybHkgc3VwcG9ydC4KCSAqCgkgKiBAdG9kbyBBZGQgc3VwcG9ydCBmb3IgZW5kLXVzZXIgZGVmaW5lZCBzb3J0aW5nIG9mIGVuY2xvc3VyZXMgYnkgdHlwZS9oYW5kbGVyIChzbyB3ZSBjYW4gcHJlZmVyIHRoZSBmYXN0ZXItbG9hZGluZyBGTFYgb3ZlciBNUDQpLgoJICogQHRvZG8gSWYgYW4gZWxlbWVudCBleGlzdHMgYXQgYSBsZXZlbCwgYnV0IGl0J3MgdmFsdWUgaXMgZW1wdHksIHdlIHNob3VsZCBmYWxsIGJhY2sgdG8gdGhlIHZhbHVlIGZyb20gdGhlIHBhcmVudCAoaWYgaXQgZXhpc3RzKS4KCSAqLwoJZnVuY3Rpb24gZ2V0X2VuY2xvc3VyZXMoKQoJewoJCWlmICghaXNzZXQoJHRoaXMtPmRhdGFbJ2VuY2xvc3VyZXMnXSkpCgkJewoJCQkkdGhpcy0+ZGF0YVsnZW5jbG9zdXJlcyddID0gYXJyYXkoKTsKCgkJCS8vIEVsZW1lbnRzCgkJCSRjYXB0aW9uc19wYXJlbnQgPSBudWxsOwoJCQkkY2F0ZWdvcmllc19wYXJlbnQgPSBudWxsOwoJCQkkY29weXJpZ2h0c19wYXJlbnQgPSBudWxsOwoJCQkkY3JlZGl0c19wYXJlbnQgPSBudWxsOwoJCQkkZGVzY3JpcHRpb25fcGFyZW50ID0gbnVsbDsKCQkJJGR1cmF0aW9uX3BhcmVudCA9IG51bGw7CgkJCSRoYXNoZXNfcGFyZW50ID0gbnVsbDsKCQkJJGtleXdvcmRzX3BhcmVudCA9IG51bGw7CgkJCSRwbGF5ZXJfcGFyZW50ID0gbnVsbDsKCQkJJHJhdGluZ3NfcGFyZW50ID0gbnVsbDsKCQkJJHJlc3RyaWN0aW9uc19wYXJlbnQgPSBudWxsOwoJCQkkdGh1bWJuYWlsc19wYXJlbnQgPSBudWxsOwoJCQkkdGl0bGVfcGFyZW50ID0gbnVsbDsKCgkJCS8vIExldCdzIGRvIHRoZSBjaGFubmVsIGFuZCBpdGVtLWxldmVsIG9uZXMgZmlyc3QsIGFuZCBqdXN0IHJlLXVzZSB0aGVtIGlmIHdlIG5lZWQgdG8uCgkJCSRwYXJlbnQgPSAkdGhpcy0+Z2V0X2ZlZWQoKTsKCgkJCS8vIENBUFRJT05TCgkJCWlmICgkY2FwdGlvbnMgPSAkdGhpcy0+Z2V0X2l0ZW1fdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX01FRElBUlNTLCAndGV4dCcpKQoJCQl7CgkJCQlmb3JlYWNoICgkY2FwdGlvbnMgYXMgJGNhcHRpb24pCgkJCQl7CgkJCQkJJGNhcHRpb25fdHlwZSA9IG51bGw7CgkJCQkJJGNhcHRpb25fbGFuZyA9IG51bGw7CgkJCQkJJGNhcHRpb25fc3RhcnRUaW1lID0gbnVsbDsKCQkJCQkkY2FwdGlvbl9lbmRUaW1lID0gbnVsbDsKCQkJCQkkY2FwdGlvbl90ZXh0ID0gbnVsbDsKCQkJCQlpZiAoaXNzZXQoJGNhcHRpb25bJ2F0dHJpYnMnXVsnJ11bJ3R5cGUnXSkpCgkJCQkJewoJCQkJCQkkY2FwdGlvbl90eXBlID0gJHRoaXMtPnNhbml0aXplKCRjYXB0aW9uWydhdHRyaWJzJ11bJyddWyd0eXBlJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCQkJfQoJCQkJCWlmIChpc3NldCgkY2FwdGlvblsnYXR0cmlicyddWycnXVsnbGFuZyddKSkKCQkJCQl7CgkJCQkJCSRjYXB0aW9uX2xhbmcgPSAkdGhpcy0+c2FuaXRpemUoJGNhcHRpb25bJ2F0dHJpYnMnXVsnJ11bJ2xhbmcnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJCQl9CgkJCQkJaWYgKGlzc2V0KCRjYXB0aW9uWydhdHRyaWJzJ11bJyddWydzdGFydCddKSkKCQkJCQl7CgkJCQkJCSRjYXB0aW9uX3N0YXJ0VGltZSA9ICR0aGlzLT5zYW5pdGl6ZSgkY2FwdGlvblsnYXR0cmlicyddWycnXVsnc3RhcnQnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJCQl9CgkJCQkJaWYgKGlzc2V0KCRjYXB0aW9uWydhdHRyaWJzJ11bJyddWydlbmQnXSkpCgkJCQkJewoJCQkJCQkkY2FwdGlvbl9lbmRUaW1lID0gJHRoaXMtPnNhbml0aXplKCRjYXB0aW9uWydhdHRyaWJzJ11bJyddWydlbmQnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJCQl9CgkJCQkJaWYgKGlzc2V0KCRjYXB0aW9uWydkYXRhJ10pKQoJCQkJCXsKCQkJCQkJJGNhcHRpb25fdGV4dCA9ICR0aGlzLT5zYW5pdGl6ZSgkY2FwdGlvblsnZGF0YSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCQkJCX0KCQkJCQkkY2FwdGlvbnNfcGFyZW50W10gPSYgbmV3ICR0aGlzLT5mZWVkLT5jYXB0aW9uX2NsYXNzKCRjYXB0aW9uX3R5cGUsICRjYXB0aW9uX2xhbmcsICRjYXB0aW9uX3N0YXJ0VGltZSwgJGNhcHRpb25fZW5kVGltZSwgJGNhcHRpb25fdGV4dCk7CgkJCQl9CgkJCX0KCQkJZWxzZWlmICgkY2FwdGlvbnMgPSAkcGFyZW50LT5nZXRfY2hhbm5lbF90YWdzKFNJTVBMRVBJRV9OQU1FU1BBQ0VfTUVESUFSU1MsICd0ZXh0JykpCgkJCXsKCQkJCWZvcmVhY2ggKCRjYXB0aW9ucyBhcyAkY2FwdGlvbikKCQkJCXsKCQkJCQkkY2FwdGlvbl90eXBlID0gbnVsbDsKCQkJCQkkY2FwdGlvbl9sYW5nID0gbnVsbDsKCQkJCQkkY2FwdGlvbl9zdGFydFRpbWUgPSBudWxsOwoJCQkJCSRjYXB0aW9uX2VuZFRpbWUgPSBudWxsOwoJCQkJCSRjYXB0aW9uX3RleHQgPSBudWxsOwoJCQkJCWlmIChpc3NldCgkY2FwdGlvblsnYXR0cmlicyddWycnXVsndHlwZSddKSkKCQkJCQl7CgkJCQkJCSRjYXB0aW9uX3R5cGUgPSAkdGhpcy0+c2FuaXRpemUoJGNhcHRpb25bJ2F0dHJpYnMnXVsnJ11bJ3R5cGUnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJCQl9CgkJCQkJaWYgKGlzc2V0KCRjYXB0aW9uWydhdHRyaWJzJ11bJyddWydsYW5nJ10pKQoJCQkJCXsKCQkJCQkJJGNhcHRpb25fbGFuZyA9ICR0aGlzLT5zYW5pdGl6ZSgkY2FwdGlvblsnYXR0cmlicyddWycnXVsnbGFuZyddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCQkJCX0KCQkJCQlpZiAoaXNzZXQoJGNhcHRpb25bJ2F0dHJpYnMnXVsnJ11bJ3N0YXJ0J10pKQoJCQkJCXsKCQkJCQkJJGNhcHRpb25fc3RhcnRUaW1lID0gJHRoaXMtPnNhbml0aXplKCRjYXB0aW9uWydhdHRyaWJzJ11bJyddWydzdGFydCddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCQkJCX0KCQkJCQlpZiAoaXNzZXQoJGNhcHRpb25bJ2F0dHJpYnMnXVsnJ11bJ2VuZCddKSkKCQkJCQl7CgkJCQkJCSRjYXB0aW9uX2VuZFRpbWUgPSAkdGhpcy0+c2FuaXRpemUoJGNhcHRpb25bJ2F0dHJpYnMnXVsnJ11bJ2VuZCddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCQkJCX0KCQkJCQlpZiAoaXNzZXQoJGNhcHRpb25bJ2RhdGEnXSkpCgkJCQkJewoJCQkJCQkkY2FwdGlvbl90ZXh0ID0gJHRoaXMtPnNhbml0aXplKCRjYXB0aW9uWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCQkJfQoJCQkJCSRjYXB0aW9uc19wYXJlbnRbXSA9JiBuZXcgJHRoaXMtPmZlZWQtPmNhcHRpb25fY2xhc3MoJGNhcHRpb25fdHlwZSwgJGNhcHRpb25fbGFuZywgJGNhcHRpb25fc3RhcnRUaW1lLCAkY2FwdGlvbl9lbmRUaW1lLCAkY2FwdGlvbl90ZXh0KTsKCQkJCX0KCQkJfQoJCQlpZiAoaXNfYXJyYXkoJGNhcHRpb25zX3BhcmVudCkpCgkJCXsKCQkJCSRjYXB0aW9uc19wYXJlbnQgPSBhcnJheV92YWx1ZXMoU2ltcGxlUGllX01pc2M6OmFycmF5X3VuaXF1ZSgkY2FwdGlvbnNfcGFyZW50KSk7CgkJCX0KCgkJCS8vIENBVEVHT1JJRVMKCQkJZm9yZWFjaCAoKGFycmF5KSAkdGhpcy0+Z2V0X2l0ZW1fdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX01FRElBUlNTLCAnY2F0ZWdvcnknKSBhcyAkY2F0ZWdvcnkpCgkJCXsKCQkJCSR0ZXJtID0gbnVsbDsKCQkJCSRzY2hlbWUgPSBudWxsOwoJCQkJJGxhYmVsID0gbnVsbDsKCQkJCWlmIChpc3NldCgkY2F0ZWdvcnlbJ2RhdGEnXSkpCgkJCQl7CgkJCQkJJHRlcm0gPSAkdGhpcy0+c2FuaXRpemUoJGNhdGVnb3J5WydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCQl9CgkJCQlpZiAoaXNzZXQoJGNhdGVnb3J5WydhdHRyaWJzJ11bJyddWydzY2hlbWUnXSkpCgkJCQl7CgkJCQkJJHNjaGVtZSA9ICR0aGlzLT5zYW5pdGl6ZSgkY2F0ZWdvcnlbJ2F0dHJpYnMnXVsnJ11bJ3NjaGVtZSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCQkJfQoJCQkJZWxzZQoJCQkJewoJCQkJCSRzY2hlbWUgPSAnaHR0cDovL3NlYXJjaC55YWhvby5jb20vbXJzcy9jYXRlZ29yeV9zY2hlbWEnOwoJCQkJfQoJCQkJaWYgKGlzc2V0KCRjYXRlZ29yeVsnYXR0cmlicyddWycnXVsnbGFiZWwnXSkpCgkJCQl7CgkJCQkJJGxhYmVsID0gJHRoaXMtPnNhbml0aXplKCRjYXRlZ29yeVsnYXR0cmlicyddWycnXVsnbGFiZWwnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJCX0KCQkJCSRjYXRlZ29yaWVzX3BhcmVudFtdID0mIG5ldyAkdGhpcy0+ZmVlZC0+Y2F0ZWdvcnlfY2xhc3MoJHRlcm0sICRzY2hlbWUsICRsYWJlbCk7CgkJCX0KCQkJZm9yZWFjaCAoKGFycmF5KSAkcGFyZW50LT5nZXRfY2hhbm5lbF90YWdzKFNJTVBMRVBJRV9OQU1FU1BBQ0VfTUVESUFSU1MsICdjYXRlZ29yeScpIGFzICRjYXRlZ29yeSkKCQkJewoJCQkJJHRlcm0gPSBudWxsOwoJCQkJJHNjaGVtZSA9IG51bGw7CgkJCQkkbGFiZWwgPSBudWxsOwoJCQkJaWYgKGlzc2V0KCRjYXRlZ29yeVsnZGF0YSddKSkKCQkJCXsKCQkJCQkkdGVybSA9ICR0aGlzLT5zYW5pdGl6ZSgkY2F0ZWdvcnlbJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJCX0KCQkJCWlmIChpc3NldCgkY2F0ZWdvcnlbJ2F0dHJpYnMnXVsnJ11bJ3NjaGVtZSddKSkKCQkJCXsKCQkJCQkkc2NoZW1lID0gJHRoaXMtPnNhbml0aXplKCRjYXRlZ29yeVsnYXR0cmlicyddWycnXVsnc2NoZW1lJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCQl9CgkJCQllbHNlCgkJCQl7CgkJCQkJJHNjaGVtZSA9ICdodHRwOi8vc2VhcmNoLnlhaG9vLmNvbS9tcnNzL2NhdGVnb3J5X3NjaGVtYSc7CgkJCQl9CgkJCQlpZiAoaXNzZXQoJGNhdGVnb3J5WydhdHRyaWJzJ11bJyddWydsYWJlbCddKSkKCQkJCXsKCQkJCQkkbGFiZWwgPSAkdGhpcy0+c2FuaXRpemUoJGNhdGVnb3J5WydhdHRyaWJzJ11bJyddWydsYWJlbCddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCQkJfQoJCQkJJGNhdGVnb3JpZXNfcGFyZW50W10gPSYgbmV3ICR0aGlzLT5mZWVkLT5jYXRlZ29yeV9jbGFzcygkdGVybSwgJHNjaGVtZSwgJGxhYmVsKTsKCQkJfQoJCQlmb3JlYWNoICgoYXJyYXkpICRwYXJlbnQtPmdldF9jaGFubmVsX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9JVFVORVMsICdjYXRlZ29yeScpIGFzICRjYXRlZ29yeSkKCQkJewoJCQkJJHRlcm0gPSBudWxsOwoJCQkJJHNjaGVtZSA9ICdodHRwOi8vd3d3Lml0dW5lcy5jb20vZHRkcy9wb2RjYXN0LTEuMC5kdGQnOwoJCQkJJGxhYmVsID0gbnVsbDsKCQkJCWlmIChpc3NldCgkY2F0ZWdvcnlbJ2F0dHJpYnMnXVsnJ11bJ3RleHQnXSkpCgkJCQl7CgkJCQkJJGxhYmVsID0gJHRoaXMtPnNhbml0aXplKCRjYXRlZ29yeVsnYXR0cmlicyddWycnXVsndGV4dCddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCQkJfQoJCQkJJGNhdGVnb3JpZXNfcGFyZW50W10gPSYgbmV3ICR0aGlzLT5mZWVkLT5jYXRlZ29yeV9jbGFzcygkdGVybSwgJHNjaGVtZSwgJGxhYmVsKTsKCgkJCQlpZiAoaXNzZXQoJGNhdGVnb3J5WydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfSVRVTkVTXVsnY2F0ZWdvcnknXSkpCgkJCQl7CgkJCQkJZm9yZWFjaCAoKGFycmF5KSAkY2F0ZWdvcnlbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9JVFVORVNdWydjYXRlZ29yeSddIGFzICRzdWJjYXRlZ29yeSkKCQkJCQl7CgkJCQkJCWlmIChpc3NldCgkc3ViY2F0ZWdvcnlbJ2F0dHJpYnMnXVsnJ11bJ3RleHQnXSkpCgkJCQkJCXsKCQkJCQkJCSRsYWJlbCA9ICR0aGlzLT5zYW5pdGl6ZSgkc3ViY2F0ZWdvcnlbJ2F0dHJpYnMnXVsnJ11bJ3RleHQnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJCQkJfQoJCQkJCQkkY2F0ZWdvcmllc19wYXJlbnRbXSA9JiBuZXcgJHRoaXMtPmZlZWQtPmNhdGVnb3J5X2NsYXNzKCR0ZXJtLCAkc2NoZW1lLCAkbGFiZWwpOwoJCQkJCX0KCQkJCX0KCQkJfQoJCQlpZiAoaXNfYXJyYXkoJGNhdGVnb3JpZXNfcGFyZW50KSkKCQkJewoJCQkJJGNhdGVnb3JpZXNfcGFyZW50ID0gYXJyYXlfdmFsdWVzKFNpbXBsZVBpZV9NaXNjOjphcnJheV91bmlxdWUoJGNhdGVnb3JpZXNfcGFyZW50KSk7CgkJCX0KCgkJCS8vIENPUFlSSUdIVAoJCQlpZiAoJGNvcHlyaWdodCA9ICR0aGlzLT5nZXRfaXRlbV90YWdzKFNJTVBMRVBJRV9OQU1FU1BBQ0VfTUVESUFSU1MsICdjb3B5cmlnaHQnKSkKCQkJewoJCQkJJGNvcHlyaWdodF91cmwgPSBudWxsOwoJCQkJJGNvcHlyaWdodF9sYWJlbCA9IG51bGw7CgkJCQlpZiAoaXNzZXQoJGNvcHlyaWdodFswXVsnYXR0cmlicyddWycnXVsndXJsJ10pKQoJCQkJewoJCQkJCSRjb3B5cmlnaHRfdXJsID0gJHRoaXMtPnNhbml0aXplKCRjb3B5cmlnaHRbMF1bJ2F0dHJpYnMnXVsnJ11bJ3VybCddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCQkJfQoJCQkJaWYgKGlzc2V0KCRjb3B5cmlnaHRbMF1bJ2RhdGEnXSkpCgkJCQl7CgkJCQkJJGNvcHlyaWdodF9sYWJlbCA9ICR0aGlzLT5zYW5pdGl6ZSgkY29weXJpZ2h0WzBdWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCQl9CgkJCQkkY29weXJpZ2h0c19wYXJlbnQgPSYgbmV3ICR0aGlzLT5mZWVkLT5jb3B5cmlnaHRfY2xhc3MoJGNvcHlyaWdodF91cmwsICRjb3B5cmlnaHRfbGFiZWwpOwoJCQl9CgkJCWVsc2VpZiAoJGNvcHlyaWdodCA9ICRwYXJlbnQtPmdldF9jaGFubmVsX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9NRURJQVJTUywgJ2NvcHlyaWdodCcpKQoJCQl7CgkJCQkkY29weXJpZ2h0X3VybCA9IG51bGw7CgkJCQkkY29weXJpZ2h0X2xhYmVsID0gbnVsbDsKCQkJCWlmIChpc3NldCgkY29weXJpZ2h0WzBdWydhdHRyaWJzJ11bJyddWyd1cmwnXSkpCgkJCQl7CgkJCQkJJGNvcHlyaWdodF91cmwgPSAkdGhpcy0+c2FuaXRpemUoJGNvcHlyaWdodFswXVsnYXR0cmlicyddWycnXVsndXJsJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCQl9CgkJCQlpZiAoaXNzZXQoJGNvcHlyaWdodFswXVsnZGF0YSddKSkKCQkJCXsKCQkJCQkkY29weXJpZ2h0X2xhYmVsID0gJHRoaXMtPnNhbml0aXplKCRjb3B5cmlnaHRbMF1bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJCX0KCQkJCSRjb3B5cmlnaHRzX3BhcmVudCA9JiBuZXcgJHRoaXMtPmZlZWQtPmNvcHlyaWdodF9jbGFzcygkY29weXJpZ2h0X3VybCwgJGNvcHlyaWdodF9sYWJlbCk7CgkJCX0KCgkJCS8vIENSRURJVFMKCQkJaWYgKCRjcmVkaXRzID0gJHRoaXMtPmdldF9pdGVtX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9NRURJQVJTUywgJ2NyZWRpdCcpKQoJCQl7CgkJCQlmb3JlYWNoICgkY3JlZGl0cyBhcyAkY3JlZGl0KQoJCQkJewoJCQkJCSRjcmVkaXRfcm9sZSA9IG51bGw7CgkJCQkJJGNyZWRpdF9zY2hlbWUgPSBudWxsOwoJCQkJCSRjcmVkaXRfbmFtZSA9IG51bGw7CgkJCQkJaWYgKGlzc2V0KCRjcmVkaXRbJ2F0dHJpYnMnXVsnJ11bJ3JvbGUnXSkpCgkJCQkJewoJCQkJCQkkY3JlZGl0X3JvbGUgPSAkdGhpcy0+c2FuaXRpemUoJGNyZWRpdFsnYXR0cmlicyddWycnXVsncm9sZSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCQkJCX0KCQkJCQlpZiAoaXNzZXQoJGNyZWRpdFsnYXR0cmlicyddWycnXVsnc2NoZW1lJ10pKQoJCQkJCXsKCQkJCQkJJGNyZWRpdF9zY2hlbWUgPSAkdGhpcy0+c2FuaXRpemUoJGNyZWRpdFsnYXR0cmlicyddWycnXVsnc2NoZW1lJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCQkJfQoJCQkJCWVsc2UKCQkJCQl7CgkJCQkJCSRjcmVkaXRfc2NoZW1lID0gJ3VybjplYnUnOwoJCQkJCX0KCQkJCQlpZiAoaXNzZXQoJGNyZWRpdFsnZGF0YSddKSkKCQkJCQl7CgkJCQkJCSRjcmVkaXRfbmFtZSA9ICR0aGlzLT5zYW5pdGl6ZSgkY3JlZGl0WydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCQkJfQoJCQkJCSRjcmVkaXRzX3BhcmVudFtdID0mIG5ldyAkdGhpcy0+ZmVlZC0+Y3JlZGl0X2NsYXNzKCRjcmVkaXRfcm9sZSwgJGNyZWRpdF9zY2hlbWUsICRjcmVkaXRfbmFtZSk7CgkJCQl9CgkJCX0KCQkJZWxzZWlmICgkY3JlZGl0cyA9ICRwYXJlbnQtPmdldF9jaGFubmVsX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9NRURJQVJTUywgJ2NyZWRpdCcpKQoJCQl7CgkJCQlmb3JlYWNoICgkY3JlZGl0cyBhcyAkY3JlZGl0KQoJCQkJewoJCQkJCSRjcmVkaXRfcm9sZSA9IG51bGw7CgkJCQkJJGNyZWRpdF9zY2hlbWUgPSBudWxsOwoJCQkJCSRjcmVkaXRfbmFtZSA9IG51bGw7CgkJCQkJaWYgKGlzc2V0KCRjcmVkaXRbJ2F0dHJpYnMnXVsnJ11bJ3JvbGUnXSkpCgkJCQkJewoJCQkJCQkkY3JlZGl0X3JvbGUgPSAkdGhpcy0+c2FuaXRpemUoJGNyZWRpdFsnYXR0cmlicyddWycnXVsncm9sZSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCQkJCX0KCQkJCQlpZiAoaXNzZXQoJGNyZWRpdFsnYXR0cmlicyddWycnXVsnc2NoZW1lJ10pKQoJCQkJCXsKCQkJCQkJJGNyZWRpdF9zY2hlbWUgPSAkdGhpcy0+c2FuaXRpemUoJGNyZWRpdFsnYXR0cmlicyddWycnXVsnc2NoZW1lJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCQkJfQoJCQkJCWVsc2UKCQkJCQl7CgkJCQkJCSRjcmVkaXRfc2NoZW1lID0gJ3VybjplYnUnOwoJCQkJCX0KCQkJCQlpZiAoaXNzZXQoJGNyZWRpdFsnZGF0YSddKSkKCQkJCQl7CgkJCQkJCSRjcmVkaXRfbmFtZSA9ICR0aGlzLT5zYW5pdGl6ZSgkY3JlZGl0WydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCQkJfQoJCQkJCSRjcmVkaXRzX3BhcmVudFtdID0mIG5ldyAkdGhpcy0+ZmVlZC0+Y3JlZGl0X2NsYXNzKCRjcmVkaXRfcm9sZSwgJGNyZWRpdF9zY2hlbWUsICRjcmVkaXRfbmFtZSk7CgkJCQl9CgkJCX0KCQkJaWYgKGlzX2FycmF5KCRjcmVkaXRzX3BhcmVudCkpCgkJCXsKCQkJCSRjcmVkaXRzX3BhcmVudCA9IGFycmF5X3ZhbHVlcyhTaW1wbGVQaWVfTWlzYzo6YXJyYXlfdW5pcXVlKCRjcmVkaXRzX3BhcmVudCkpOwoJCQl9CgoJCQkvLyBERVNDUklQVElPTgoJCQlpZiAoJGRlc2NyaXB0aW9uX3BhcmVudCA9ICR0aGlzLT5nZXRfaXRlbV90YWdzKFNJTVBMRVBJRV9OQU1FU1BBQ0VfTUVESUFSU1MsICdkZXNjcmlwdGlvbicpKQoJCQl7CgkJCQlpZiAoaXNzZXQoJGRlc2NyaXB0aW9uX3BhcmVudFswXVsnZGF0YSddKSkKCQkJCXsKCQkJCQkkZGVzY3JpcHRpb25fcGFyZW50ID0gJHRoaXMtPnNhbml0aXplKCRkZXNjcmlwdGlvbl9wYXJlbnRbMF1bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJCX0KCQkJfQoJCQllbHNlaWYgKCRkZXNjcmlwdGlvbl9wYXJlbnQgPSAkcGFyZW50LT5nZXRfY2hhbm5lbF90YWdzKFNJTVBMRVBJRV9OQU1FU1BBQ0VfTUVESUFSU1MsICdkZXNjcmlwdGlvbicpKQoJCQl7CgkJCQlpZiAoaXNzZXQoJGRlc2NyaXB0aW9uX3BhcmVudFswXVsnZGF0YSddKSkKCQkJCXsKCQkJCQkkZGVzY3JpcHRpb25fcGFyZW50ID0gJHRoaXMtPnNhbml0aXplKCRkZXNjcmlwdGlvbl9wYXJlbnRbMF1bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJCX0KCQkJfQoKCQkJLy8gRFVSQVRJT04KCQkJaWYgKCRkdXJhdGlvbl9wYXJlbnQgPSAkdGhpcy0+Z2V0X2l0ZW1fdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX0lUVU5FUywgJ2R1cmF0aW9uJykpCgkJCXsKCQkJCSRzZWNvbmRzID0gbnVsbDsKCQkJCSRtaW51dGVzID0gbnVsbDsKCQkJCSRob3VycyA9IG51bGw7CgkJCQlpZiAoaXNzZXQoJGR1cmF0aW9uX3BhcmVudFswXVsnZGF0YSddKSkKCQkJCXsKCQkJCQkkdGVtcCA9IGV4cGxvZGUoJzonLCAkdGhpcy0+c2FuaXRpemUoJGR1cmF0aW9uX3BhcmVudFswXVsnZGF0YSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpKTsKCQkJCQlpZiAoc2l6ZW9mKCR0ZW1wKSA+IDApCgkJCQkJewoJCQkJCQkoaW50KSAkc2Vjb25kcyA9IGFycmF5X3BvcCgkdGVtcCk7CgkJCQkJfQoJCQkJCWlmIChzaXplb2YoJHRlbXApID4gMCkKCQkJCQl7CgkJCQkJCShpbnQpICRtaW51dGVzID0gYXJyYXlfcG9wKCR0ZW1wKTsKCQkJCQkJJHNlY29uZHMgKz0gJG1pbnV0ZXMgKiA2MDsKCQkJCQl9CgkJCQkJaWYgKHNpemVvZigkdGVtcCkgPiAwKQoJCQkJCXsKCQkJCQkJKGludCkgJGhvdXJzID0gYXJyYXlfcG9wKCR0ZW1wKTsKCQkJCQkJJHNlY29uZHMgKz0gJGhvdXJzICogMzYwMDsKCQkJCQl9CgkJCQkJdW5zZXQoJHRlbXApOwoJCQkJCSRkdXJhdGlvbl9wYXJlbnQgPSAkc2Vjb25kczsKCQkJCX0KCQkJfQoKCQkJLy8gSEFTSEVTCgkJCWlmICgkaGFzaGVzX2l0ZXJhdG9yID0gJHRoaXMtPmdldF9pdGVtX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9NRURJQVJTUywgJ2hhc2gnKSkKCQkJewoJCQkJZm9yZWFjaCAoJGhhc2hlc19pdGVyYXRvciBhcyAkaGFzaCkKCQkJCXsKCQkJCQkkdmFsdWUgPSBudWxsOwoJCQkJCSRhbGdvID0gbnVsbDsKCQkJCQlpZiAoaXNzZXQoJGhhc2hbJ2RhdGEnXSkpCgkJCQkJewoJCQkJCQkkdmFsdWUgPSAkdGhpcy0+c2FuaXRpemUoJGhhc2hbJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJCQl9CgkJCQkJaWYgKGlzc2V0KCRoYXNoWydhdHRyaWJzJ11bJyddWydhbGdvJ10pKQoJCQkJCXsKCQkJCQkJJGFsZ28gPSAkdGhpcy0+c2FuaXRpemUoJGhhc2hbJ2F0dHJpYnMnXVsnJ11bJ2FsZ28nXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJCQl9CgkJCQkJZWxzZQoJCQkJCXsKCQkJCQkJJGFsZ28gPSAnbWQ1JzsKCQkJCQl9CgkJCQkJJGhhc2hlc19wYXJlbnRbXSA9ICRhbGdvLic6Jy4kdmFsdWU7CgkJCQl9CgkJCX0KCQkJZWxzZWlmICgkaGFzaGVzX2l0ZXJhdG9yID0gJHBhcmVudC0+Z2V0X2NoYW5uZWxfdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX01FRElBUlNTLCAnaGFzaCcpKQoJCQl7CgkJCQlmb3JlYWNoICgkaGFzaGVzX2l0ZXJhdG9yIGFzICRoYXNoKQoJCQkJewoJCQkJCSR2YWx1ZSA9IG51bGw7CgkJCQkJJGFsZ28gPSBudWxsOwoJCQkJCWlmIChpc3NldCgkaGFzaFsnZGF0YSddKSkKCQkJCQl7CgkJCQkJCSR2YWx1ZSA9ICR0aGlzLT5zYW5pdGl6ZSgkaGFzaFsnZGF0YSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCQkJCX0KCQkJCQlpZiAoaXNzZXQoJGhhc2hbJ2F0dHJpYnMnXVsnJ11bJ2FsZ28nXSkpCgkJCQkJewoJCQkJCQkkYWxnbyA9ICR0aGlzLT5zYW5pdGl6ZSgkaGFzaFsnYXR0cmlicyddWycnXVsnYWxnbyddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCQkJCX0KCQkJCQllbHNlCgkJCQkJewoJCQkJCQkkYWxnbyA9ICdtZDUnOwoJCQkJCX0KCQkJCQkkaGFzaGVzX3BhcmVudFtdID0gJGFsZ28uJzonLiR2YWx1ZTsKCQkJCX0KCQkJfQoJCQlpZiAoaXNfYXJyYXkoJGhhc2hlc19wYXJlbnQpKQoJCQl7CgkJCQkkaGFzaGVzX3BhcmVudCA9IGFycmF5X3ZhbHVlcyhTaW1wbGVQaWVfTWlzYzo6YXJyYXlfdW5pcXVlKCRoYXNoZXNfcGFyZW50KSk7CgkJCX0KCgkJCS8vIEtFWVdPUkRTCgkJCWlmICgka2V5d29yZHMgPSAkdGhpcy0+Z2V0X2l0ZW1fdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX01FRElBUlNTLCAna2V5d29yZHMnKSkKCQkJewoJCQkJaWYgKGlzc2V0KCRrZXl3b3Jkc1swXVsnZGF0YSddKSkKCQkJCXsKCQkJCQkkdGVtcCA9IGV4cGxvZGUoJywnLCAkdGhpcy0+c2FuaXRpemUoJGtleXdvcmRzWzBdWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCkpOwoJCQkJCWZvcmVhY2ggKCR0ZW1wIGFzICR3b3JkKQoJCQkJCXsKCQkJCQkJJGtleXdvcmRzX3BhcmVudFtdID0gdHJpbSgkd29yZCk7CgkJCQkJfQoJCQkJfQoJCQkJdW5zZXQoJHRlbXApOwoJCQl9CgkJCWVsc2VpZiAoJGtleXdvcmRzID0gJHRoaXMtPmdldF9pdGVtX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9JVFVORVMsICdrZXl3b3JkcycpKQoJCQl7CgkJCQlpZiAoaXNzZXQoJGtleXdvcmRzWzBdWydkYXRhJ10pKQoJCQkJewoJCQkJCSR0ZW1wID0gZXhwbG9kZSgnLCcsICR0aGlzLT5zYW5pdGl6ZSgka2V5d29yZHNbMF1bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKSk7CgkJCQkJZm9yZWFjaCAoJHRlbXAgYXMgJHdvcmQpCgkJCQkJewoJCQkJCQkka2V5d29yZHNfcGFyZW50W10gPSB0cmltKCR3b3JkKTsKCQkJCQl9CgkJCQl9CgkJCQl1bnNldCgkdGVtcCk7CgkJCX0KCQkJZWxzZWlmICgka2V5d29yZHMgPSAkcGFyZW50LT5nZXRfY2hhbm5lbF90YWdzKFNJTVBMRVBJRV9OQU1FU1BBQ0VfTUVESUFSU1MsICdrZXl3b3JkcycpKQoJCQl7CgkJCQlpZiAoaXNzZXQoJGtleXdvcmRzWzBdWydkYXRhJ10pKQoJCQkJewoJCQkJCSR0ZW1wID0gZXhwbG9kZSgnLCcsICR0aGlzLT5zYW5pdGl6ZSgka2V5d29yZHNbMF1bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKSk7CgkJCQkJZm9yZWFjaCAoJHRlbXAgYXMgJHdvcmQpCgkJCQkJewoJCQkJCQkka2V5d29yZHNfcGFyZW50W10gPSB0cmltKCR3b3JkKTsKCQkJCQl9CgkJCQl9CgkJCQl1bnNldCgkdGVtcCk7CgkJCX0KCQkJZWxzZWlmICgka2V5d29yZHMgPSAkcGFyZW50LT5nZXRfY2hhbm5lbF90YWdzKFNJTVBMRVBJRV9OQU1FU1BBQ0VfSVRVTkVTLCAna2V5d29yZHMnKSkKCQkJewoJCQkJaWYgKGlzc2V0KCRrZXl3b3Jkc1swXVsnZGF0YSddKSkKCQkJCXsKCQkJCQkkdGVtcCA9IGV4cGxvZGUoJywnLCAkdGhpcy0+c2FuaXRpemUoJGtleXdvcmRzWzBdWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCkpOwoJCQkJCWZvcmVhY2ggKCR0ZW1wIGFzICR3b3JkKQoJCQkJCXsKCQkJCQkJJGtleXdvcmRzX3BhcmVudFtdID0gdHJpbSgkd29yZCk7CgkJCQkJfQoJCQkJfQoJCQkJdW5zZXQoJHRlbXApOwoJCQl9CgkJCWlmIChpc19hcnJheSgka2V5d29yZHNfcGFyZW50KSkKCQkJewoJCQkJJGtleXdvcmRzX3BhcmVudCA9IGFycmF5X3ZhbHVlcyhTaW1wbGVQaWVfTWlzYzo6YXJyYXlfdW5pcXVlKCRrZXl3b3Jkc19wYXJlbnQpKTsKCQkJfQoKCQkJLy8gUExBWUVSCgkJCWlmICgkcGxheWVyX3BhcmVudCA9ICR0aGlzLT5nZXRfaXRlbV90YWdzKFNJTVBMRVBJRV9OQU1FU1BBQ0VfTUVESUFSU1MsICdwbGF5ZXInKSkKCQkJewoJCQkJaWYgKGlzc2V0KCRwbGF5ZXJfcGFyZW50WzBdWydhdHRyaWJzJ11bJyddWyd1cmwnXSkpCgkJCQl7CgkJCQkJJHBsYXllcl9wYXJlbnQgPSAkdGhpcy0+c2FuaXRpemUoJHBsYXllcl9wYXJlbnRbMF1bJ2F0dHJpYnMnXVsnJ11bJ3VybCddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX0lSSSk7CgkJCQl9CgkJCX0KCQkJZWxzZWlmICgkcGxheWVyX3BhcmVudCA9ICRwYXJlbnQtPmdldF9jaGFubmVsX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9NRURJQVJTUywgJ3BsYXllcicpKQoJCQl7CgkJCQlpZiAoaXNzZXQoJHBsYXllcl9wYXJlbnRbMF1bJ2F0dHJpYnMnXVsnJ11bJ3VybCddKSkKCQkJCXsKCQkJCQkkcGxheWVyX3BhcmVudCA9ICR0aGlzLT5zYW5pdGl6ZSgkcGxheWVyX3BhcmVudFswXVsnYXR0cmlicyddWycnXVsndXJsJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfSVJJKTsKCQkJCX0KCQkJfQoKCQkJLy8gUkFUSU5HUwoJCQlpZiAoJHJhdGluZ3MgPSAkdGhpcy0+Z2V0X2l0ZW1fdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX01FRElBUlNTLCAncmF0aW5nJykpCgkJCXsKCQkJCWZvcmVhY2ggKCRyYXRpbmdzIGFzICRyYXRpbmcpCgkJCQl7CgkJCQkJJHJhdGluZ19zY2hlbWUgPSBudWxsOwoJCQkJCSRyYXRpbmdfdmFsdWUgPSBudWxsOwoJCQkJCWlmIChpc3NldCgkcmF0aW5nWydhdHRyaWJzJ11bJyddWydzY2hlbWUnXSkpCgkJCQkJewoJCQkJCQkkcmF0aW5nX3NjaGVtZSA9ICR0aGlzLT5zYW5pdGl6ZSgkcmF0aW5nWydhdHRyaWJzJ11bJyddWydzY2hlbWUnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJCQl9CgkJCQkJZWxzZQoJCQkJCXsKCQkJCQkJJHJhdGluZ19zY2hlbWUgPSAndXJuOnNpbXBsZSc7CgkJCQkJfQoJCQkJCWlmIChpc3NldCgkcmF0aW5nWydkYXRhJ10pKQoJCQkJCXsKCQkJCQkJJHJhdGluZ192YWx1ZSA9ICR0aGlzLT5zYW5pdGl6ZSgkcmF0aW5nWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCQkJfQoJCQkJCSRyYXRpbmdzX3BhcmVudFtdID0mIG5ldyAkdGhpcy0+ZmVlZC0+cmF0aW5nX2NsYXNzKCRyYXRpbmdfc2NoZW1lLCAkcmF0aW5nX3ZhbHVlKTsKCQkJCX0KCQkJfQoJCQllbHNlaWYgKCRyYXRpbmdzID0gJHRoaXMtPmdldF9pdGVtX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9JVFVORVMsICdleHBsaWNpdCcpKQoJCQl7CgkJCQlmb3JlYWNoICgkcmF0aW5ncyBhcyAkcmF0aW5nKQoJCQkJewoJCQkJCSRyYXRpbmdfc2NoZW1lID0gJ3VybjppdHVuZXMnOwoJCQkJCSRyYXRpbmdfdmFsdWUgPSBudWxsOwoJCQkJCWlmIChpc3NldCgkcmF0aW5nWydkYXRhJ10pKQoJCQkJCXsKCQkJCQkJJHJhdGluZ192YWx1ZSA9ICR0aGlzLT5zYW5pdGl6ZSgkcmF0aW5nWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCQkJfQoJCQkJCSRyYXRpbmdzX3BhcmVudFtdID0mIG5ldyAkdGhpcy0+ZmVlZC0+cmF0aW5nX2NsYXNzKCRyYXRpbmdfc2NoZW1lLCAkcmF0aW5nX3ZhbHVlKTsKCQkJCX0KCQkJfQoJCQllbHNlaWYgKCRyYXRpbmdzID0gJHBhcmVudC0+Z2V0X2NoYW5uZWxfdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX01FRElBUlNTLCAncmF0aW5nJykpCgkJCXsKCQkJCWZvcmVhY2ggKCRyYXRpbmdzIGFzICRyYXRpbmcpCgkJCQl7CgkJCQkJJHJhdGluZ19zY2hlbWUgPSBudWxsOwoJCQkJCSRyYXRpbmdfdmFsdWUgPSBudWxsOwoJCQkJCWlmIChpc3NldCgkcmF0aW5nWydhdHRyaWJzJ11bJyddWydzY2hlbWUnXSkpCgkJCQkJewoJCQkJCQkkcmF0aW5nX3NjaGVtZSA9ICR0aGlzLT5zYW5pdGl6ZSgkcmF0aW5nWydhdHRyaWJzJ11bJyddWydzY2hlbWUnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJCQl9CgkJCQkJZWxzZQoJCQkJCXsKCQkJCQkJJHJhdGluZ19zY2hlbWUgPSAndXJuOnNpbXBsZSc7CgkJCQkJfQoJCQkJCWlmIChpc3NldCgkcmF0aW5nWydkYXRhJ10pKQoJCQkJCXsKCQkJCQkJJHJhdGluZ192YWx1ZSA9ICR0aGlzLT5zYW5pdGl6ZSgkcmF0aW5nWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCQkJfQoJCQkJCSRyYXRpbmdzX3BhcmVudFtdID0mIG5ldyAkdGhpcy0+ZmVlZC0+cmF0aW5nX2NsYXNzKCRyYXRpbmdfc2NoZW1lLCAkcmF0aW5nX3ZhbHVlKTsKCQkJCX0KCQkJfQoJCQllbHNlaWYgKCRyYXRpbmdzID0gJHBhcmVudC0+Z2V0X2NoYW5uZWxfdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX0lUVU5FUywgJ2V4cGxpY2l0JykpCgkJCXsKCQkJCWZvcmVhY2ggKCRyYXRpbmdzIGFzICRyYXRpbmcpCgkJCQl7CgkJCQkJJHJhdGluZ19zY2hlbWUgPSAndXJuOml0dW5lcyc7CgkJCQkJJHJhdGluZ192YWx1ZSA9IG51bGw7CgkJCQkJaWYgKGlzc2V0KCRyYXRpbmdbJ2RhdGEnXSkpCgkJCQkJewoJCQkJCQkkcmF0aW5nX3ZhbHVlID0gJHRoaXMtPnNhbml0aXplKCRyYXRpbmdbJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJCQl9CgkJCQkJJHJhdGluZ3NfcGFyZW50W10gPSYgbmV3ICR0aGlzLT5mZWVkLT5yYXRpbmdfY2xhc3MoJHJhdGluZ19zY2hlbWUsICRyYXRpbmdfdmFsdWUpOwoJCQkJfQoJCQl9CgkJCWlmIChpc19hcnJheSgkcmF0aW5nc19wYXJlbnQpKQoJCQl7CgkJCQkkcmF0aW5nc19wYXJlbnQgPSBhcnJheV92YWx1ZXMoU2ltcGxlUGllX01pc2M6OmFycmF5X3VuaXF1ZSgkcmF0aW5nc19wYXJlbnQpKTsKCQkJfQoKCQkJLy8gUkVTVFJJQ1RJT05TCgkJCWlmICgkcmVzdHJpY3Rpb25zID0gJHRoaXMtPmdldF9pdGVtX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9NRURJQVJTUywgJ3Jlc3RyaWN0aW9uJykpCgkJCXsKCQkJCWZvcmVhY2ggKCRyZXN0cmljdGlvbnMgYXMgJHJlc3RyaWN0aW9uKQoJCQkJewoJCQkJCSRyZXN0cmljdGlvbl9yZWxhdGlvbnNoaXAgPSBudWxsOwoJCQkJCSRyZXN0cmljdGlvbl90eXBlID0gbnVsbDsKCQkJCQkkcmVzdHJpY3Rpb25fdmFsdWUgPSBudWxsOwoJCQkJCWlmIChpc3NldCgkcmVzdHJpY3Rpb25bJ2F0dHJpYnMnXVsnJ11bJ3JlbGF0aW9uc2hpcCddKSkKCQkJCQl7CgkJCQkJCSRyZXN0cmljdGlvbl9yZWxhdGlvbnNoaXAgPSAkdGhpcy0+c2FuaXRpemUoJHJlc3RyaWN0aW9uWydhdHRyaWJzJ11bJyddWydyZWxhdGlvbnNoaXAnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJCQl9CgkJCQkJaWYgKGlzc2V0KCRyZXN0cmljdGlvblsnYXR0cmlicyddWycnXVsndHlwZSddKSkKCQkJCQl7CgkJCQkJCSRyZXN0cmljdGlvbl90eXBlID0gJHRoaXMtPnNhbml0aXplKCRyZXN0cmljdGlvblsnYXR0cmlicyddWycnXVsndHlwZSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCQkJCX0KCQkJCQlpZiAoaXNzZXQoJHJlc3RyaWN0aW9uWydkYXRhJ10pKQoJCQkJCXsKCQkJCQkJJHJlc3RyaWN0aW9uX3ZhbHVlID0gJHRoaXMtPnNhbml0aXplKCRyZXN0cmljdGlvblsnZGF0YSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCQkJCX0KCQkJCQkkcmVzdHJpY3Rpb25zX3BhcmVudFtdID0mIG5ldyAkdGhpcy0+ZmVlZC0+cmVzdHJpY3Rpb25fY2xhc3MoJHJlc3RyaWN0aW9uX3JlbGF0aW9uc2hpcCwgJHJlc3RyaWN0aW9uX3R5cGUsICRyZXN0cmljdGlvbl92YWx1ZSk7CgkJCQl9CgkJCX0KCQkJZWxzZWlmICgkcmVzdHJpY3Rpb25zID0gJHRoaXMtPmdldF9pdGVtX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9JVFVORVMsICdibG9jaycpKQoJCQl7CgkJCQlmb3JlYWNoICgkcmVzdHJpY3Rpb25zIGFzICRyZXN0cmljdGlvbikKCQkJCXsKCQkJCQkkcmVzdHJpY3Rpb25fcmVsYXRpb25zaGlwID0gJ2FsbG93JzsKCQkJCQkkcmVzdHJpY3Rpb25fdHlwZSA9IG51bGw7CgkJCQkJJHJlc3RyaWN0aW9uX3ZhbHVlID0gJ2l0dW5lcyc7CgkJCQkJaWYgKGlzc2V0KCRyZXN0cmljdGlvblsnZGF0YSddKSAmJiBzdHJ0b2xvd2VyKCRyZXN0cmljdGlvblsnZGF0YSddKSA9PSAneWVzJykKCQkJCQl7CgkJCQkJCSRyZXN0cmljdGlvbl9yZWxhdGlvbnNoaXAgPSAnZGVueSc7CgkJCQkJfQoJCQkJCSRyZXN0cmljdGlvbnNfcGFyZW50W10gPSYgbmV3ICR0aGlzLT5mZWVkLT5yZXN0cmljdGlvbl9jbGFzcygkcmVzdHJpY3Rpb25fcmVsYXRpb25zaGlwLCAkcmVzdHJpY3Rpb25fdHlwZSwgJHJlc3RyaWN0aW9uX3ZhbHVlKTsKCQkJCX0KCQkJfQoJCQllbHNlaWYgKCRyZXN0cmljdGlvbnMgPSAkcGFyZW50LT5nZXRfY2hhbm5lbF90YWdzKFNJTVBMRVBJRV9OQU1FU1BBQ0VfTUVESUFSU1MsICdyZXN0cmljdGlvbicpKQoJCQl7CgkJCQlmb3JlYWNoICgkcmVzdHJpY3Rpb25zIGFzICRyZXN0cmljdGlvbikKCQkJCXsKCQkJCQkkcmVzdHJpY3Rpb25fcmVsYXRpb25zaGlwID0gbnVsbDsKCQkJCQkkcmVzdHJpY3Rpb25fdHlwZSA9IG51bGw7CgkJCQkJJHJlc3RyaWN0aW9uX3ZhbHVlID0gbnVsbDsKCQkJCQlpZiAoaXNzZXQoJHJlc3RyaWN0aW9uWydhdHRyaWJzJ11bJyddWydyZWxhdGlvbnNoaXAnXSkpCgkJCQkJewoJCQkJCQkkcmVzdHJpY3Rpb25fcmVsYXRpb25zaGlwID0gJHRoaXMtPnNhbml0aXplKCRyZXN0cmljdGlvblsnYXR0cmlicyddWycnXVsncmVsYXRpb25zaGlwJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCQkJfQoJCQkJCWlmIChpc3NldCgkcmVzdHJpY3Rpb25bJ2F0dHJpYnMnXVsnJ11bJ3R5cGUnXSkpCgkJCQkJewoJCQkJCQkkcmVzdHJpY3Rpb25fdHlwZSA9ICR0aGlzLT5zYW5pdGl6ZSgkcmVzdHJpY3Rpb25bJ2F0dHJpYnMnXVsnJ11bJ3R5cGUnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJCQl9CgkJCQkJaWYgKGlzc2V0KCRyZXN0cmljdGlvblsnZGF0YSddKSkKCQkJCQl7CgkJCQkJCSRyZXN0cmljdGlvbl92YWx1ZSA9ICR0aGlzLT5zYW5pdGl6ZSgkcmVzdHJpY3Rpb25bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJCQl9CgkJCQkJJHJlc3RyaWN0aW9uc19wYXJlbnRbXSA9JiBuZXcgJHRoaXMtPmZlZWQtPnJlc3RyaWN0aW9uX2NsYXNzKCRyZXN0cmljdGlvbl9yZWxhdGlvbnNoaXAsICRyZXN0cmljdGlvbl90eXBlLCAkcmVzdHJpY3Rpb25fdmFsdWUpOwoJCQkJfQoJCQl9CgkJCWVsc2VpZiAoJHJlc3RyaWN0aW9ucyA9ICRwYXJlbnQtPmdldF9jaGFubmVsX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9JVFVORVMsICdibG9jaycpKQoJCQl7CgkJCQlmb3JlYWNoICgkcmVzdHJpY3Rpb25zIGFzICRyZXN0cmljdGlvbikKCQkJCXsKCQkJCQkkcmVzdHJpY3Rpb25fcmVsYXRpb25zaGlwID0gJ2FsbG93JzsKCQkJCQkkcmVzdHJpY3Rpb25fdHlwZSA9IG51bGw7CgkJCQkJJHJlc3RyaWN0aW9uX3ZhbHVlID0gJ2l0dW5lcyc7CgkJCQkJaWYgKGlzc2V0KCRyZXN0cmljdGlvblsnZGF0YSddKSAmJiBzdHJ0b2xvd2VyKCRyZXN0cmljdGlvblsnZGF0YSddKSA9PSAneWVzJykKCQkJCQl7CgkJCQkJCSRyZXN0cmljdGlvbl9yZWxhdGlvbnNoaXAgPSAnZGVueSc7CgkJCQkJfQoJCQkJCSRyZXN0cmljdGlvbnNfcGFyZW50W10gPSYgbmV3ICR0aGlzLT5mZWVkLT5yZXN0cmljdGlvbl9jbGFzcygkcmVzdHJpY3Rpb25fcmVsYXRpb25zaGlwLCAkcmVzdHJpY3Rpb25fdHlwZSwgJHJlc3RyaWN0aW9uX3ZhbHVlKTsKCQkJCX0KCQkJfQoJCQlpZiAoaXNfYXJyYXkoJHJlc3RyaWN0aW9uc19wYXJlbnQpKQoJCQl7CgkJCQkkcmVzdHJpY3Rpb25zX3BhcmVudCA9IGFycmF5X3ZhbHVlcyhTaW1wbGVQaWVfTWlzYzo6YXJyYXlfdW5pcXVlKCRyZXN0cmljdGlvbnNfcGFyZW50KSk7CgkJCX0KCgkJCS8vIFRIVU1CTkFJTFMKCQkJaWYgKCR0aHVtYm5haWxzID0gJHRoaXMtPmdldF9pdGVtX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9NRURJQVJTUywgJ3RodW1ibmFpbCcpKQoJCQl7CgkJCQlmb3JlYWNoICgkdGh1bWJuYWlscyBhcyAkdGh1bWJuYWlsKQoJCQkJewoJCQkJCWlmIChpc3NldCgkdGh1bWJuYWlsWydhdHRyaWJzJ11bJyddWyd1cmwnXSkpCgkJCQkJewoJCQkJCQkkdGh1bWJuYWlsc19wYXJlbnRbXSA9ICR0aGlzLT5zYW5pdGl6ZSgkdGh1bWJuYWlsWydhdHRyaWJzJ11bJyddWyd1cmwnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9JUkkpOwoJCQkJCX0KCQkJCX0KCQkJfQoJCQllbHNlaWYgKCR0aHVtYm5haWxzID0gJHBhcmVudC0+Z2V0X2NoYW5uZWxfdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX01FRElBUlNTLCAndGh1bWJuYWlsJykpCgkJCXsKCQkJCWZvcmVhY2ggKCR0aHVtYm5haWxzIGFzICR0aHVtYm5haWwpCgkJCQl7CgkJCQkJaWYgKGlzc2V0KCR0aHVtYm5haWxbJ2F0dHJpYnMnXVsnJ11bJ3VybCddKSkKCQkJCQl7CgkJCQkJCSR0aHVtYm5haWxzX3BhcmVudFtdID0gJHRoaXMtPnNhbml0aXplKCR0aHVtYm5haWxbJ2F0dHJpYnMnXVsnJ11bJ3VybCddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX0lSSSk7CgkJCQkJfQoJCQkJfQoJCQl9CgoJCQkvLyBUSVRMRVMKCQkJaWYgKCR0aXRsZV9wYXJlbnQgPSAkdGhpcy0+Z2V0X2l0ZW1fdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX01FRElBUlNTLCAndGl0bGUnKSkKCQkJewoJCQkJaWYgKGlzc2V0KCR0aXRsZV9wYXJlbnRbMF1bJ2RhdGEnXSkpCgkJCQl7CgkJCQkJJHRpdGxlX3BhcmVudCA9ICR0aGlzLT5zYW5pdGl6ZSgkdGl0bGVfcGFyZW50WzBdWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCQl9CgkJCX0KCQkJZWxzZWlmICgkdGl0bGVfcGFyZW50ID0gJHBhcmVudC0+Z2V0X2NoYW5uZWxfdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX01FRElBUlNTLCAndGl0bGUnKSkKCQkJewoJCQkJaWYgKGlzc2V0KCR0aXRsZV9wYXJlbnRbMF1bJ2RhdGEnXSkpCgkJCQl7CgkJCQkJJHRpdGxlX3BhcmVudCA9ICR0aGlzLT5zYW5pdGl6ZSgkdGl0bGVfcGFyZW50WzBdWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCQl9CgkJCX0KCgkJCS8vIENsZWFyIHRoZSBtZW1vcnkKCQkJdW5zZXQoJHBhcmVudCk7CgoJCQkvLyBBdHRyaWJ1dGVzCgkJCSRiaXRyYXRlID0gbnVsbDsKCQkJJGNoYW5uZWxzID0gbnVsbDsKCQkJJGR1cmF0aW9uID0gbnVsbDsKCQkJJGV4cHJlc3Npb24gPSBudWxsOwoJCQkkZnJhbWVyYXRlID0gbnVsbDsKCQkJJGhlaWdodCA9IG51bGw7CgkJCSRqYXZhc2NyaXB0ID0gbnVsbDsKCQkJJGxhbmcgPSBudWxsOwoJCQkkbGVuZ3RoID0gbnVsbDsKCQkJJG1lZGl1bSA9IG51bGw7CgkJCSRzYW1wbGluZ3JhdGUgPSBudWxsOwoJCQkkdHlwZSA9IG51bGw7CgkJCSR1cmwgPSBudWxsOwoJCQkkd2lkdGggPSBudWxsOwoKCQkJLy8gRWxlbWVudHMKCQkJJGNhcHRpb25zID0gbnVsbDsKCQkJJGNhdGVnb3JpZXMgPSBudWxsOwoJCQkkY29weXJpZ2h0cyA9IG51bGw7CgkJCSRjcmVkaXRzID0gbnVsbDsKCQkJJGRlc2NyaXB0aW9uID0gbnVsbDsKCQkJJGhhc2hlcyA9IG51bGw7CgkJCSRrZXl3b3JkcyA9IG51bGw7CgkJCSRwbGF5ZXIgPSBudWxsOwoJCQkkcmF0aW5ncyA9IG51bGw7CgkJCSRyZXN0cmljdGlvbnMgPSBudWxsOwoJCQkkdGh1bWJuYWlscyA9IG51bGw7CgkJCSR0aXRsZSA9IG51bGw7CgoJCQkvLyBJZiB3ZSBoYXZlIG1lZGlhOmdyb3VwIHRhZ3MsIGxvb3AgdGhyb3VnaCB0aGVtLgoJCQlmb3JlYWNoICgoYXJyYXkpICR0aGlzLT5nZXRfaXRlbV90YWdzKFNJTVBMRVBJRV9OQU1FU1BBQ0VfTUVESUFSU1MsICdncm91cCcpIGFzICRncm91cCkKCQkJewoJCQkJLy8gSWYgd2UgaGF2ZSBtZWRpYTpjb250ZW50IHRhZ3MsIGxvb3AgdGhyb3VnaCB0aGVtLgoJCQkJZm9yZWFjaCAoKGFycmF5KSAkZ3JvdXBbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9NRURJQVJTU11bJ2NvbnRlbnQnXSBhcyAkY29udGVudCkKCQkJCXsKCQkJCQlpZiAoaXNzZXQoJGNvbnRlbnRbJ2F0dHJpYnMnXVsnJ11bJ3VybCddKSkKCQkJCQl7CgkJCQkJCS8vIEF0dHJpYnV0ZXMKCQkJCQkJJGJpdHJhdGUgPSBudWxsOwoJCQkJCQkkY2hhbm5lbHMgPSBudWxsOwoJCQkJCQkkZHVyYXRpb24gPSBudWxsOwoJCQkJCQkkZXhwcmVzc2lvbiA9IG51bGw7CgkJCQkJCSRmcmFtZXJhdGUgPSBudWxsOwoJCQkJCQkkaGVpZ2h0ID0gbnVsbDsKCQkJCQkJJGphdmFzY3JpcHQgPSBudWxsOwoJCQkJCQkkbGFuZyA9IG51bGw7CgkJCQkJCSRsZW5ndGggPSBudWxsOwoJCQkJCQkkbWVkaXVtID0gbnVsbDsKCQkJCQkJJHNhbXBsaW5ncmF0ZSA9IG51bGw7CgkJCQkJCSR0eXBlID0gbnVsbDsKCQkJCQkJJHVybCA9IG51bGw7CgkJCQkJCSR3aWR0aCA9IG51bGw7CgoJCQkJCQkvLyBFbGVtZW50cwoJCQkJCQkkY2FwdGlvbnMgPSBudWxsOwoJCQkJCQkkY2F0ZWdvcmllcyA9IG51bGw7CgkJCQkJCSRjb3B5cmlnaHRzID0gbnVsbDsKCQkJCQkJJGNyZWRpdHMgPSBudWxsOwoJCQkJCQkkZGVzY3JpcHRpb24gPSBudWxsOwoJCQkJCQkkaGFzaGVzID0gbnVsbDsKCQkJCQkJJGtleXdvcmRzID0gbnVsbDsKCQkJCQkJJHBsYXllciA9IG51bGw7CgkJCQkJCSRyYXRpbmdzID0gbnVsbDsKCQkJCQkJJHJlc3RyaWN0aW9ucyA9IG51bGw7CgkJCQkJCSR0aHVtYm5haWxzID0gbnVsbDsKCQkJCQkJJHRpdGxlID0gbnVsbDsKCgkJCQkJCS8vIFN0YXJ0IGNoZWNraW5nIHRoZSBhdHRyaWJ1dGVzIG9mIG1lZGlhOmNvbnRlbnQKCQkJCQkJaWYgKGlzc2V0KCRjb250ZW50WydhdHRyaWJzJ11bJyddWydiaXRyYXRlJ10pKQoJCQkJCQl7CgkJCQkJCQkkYml0cmF0ZSA9ICR0aGlzLT5zYW5pdGl6ZSgkY29udGVudFsnYXR0cmlicyddWycnXVsnYml0cmF0ZSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCQkJCQl9CgkJCQkJCWlmIChpc3NldCgkY29udGVudFsnYXR0cmlicyddWycnXVsnY2hhbm5lbHMnXSkpCgkJCQkJCXsKCQkJCQkJCSRjaGFubmVscyA9ICR0aGlzLT5zYW5pdGl6ZSgkY29udGVudFsnYXR0cmlicyddWycnXVsnY2hhbm5lbHMnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJCQkJfQoJCQkJCQlpZiAoaXNzZXQoJGNvbnRlbnRbJ2F0dHJpYnMnXVsnJ11bJ2R1cmF0aW9uJ10pKQoJCQkJCQl7CgkJCQkJCQkkZHVyYXRpb24gPSAkdGhpcy0+c2FuaXRpemUoJGNvbnRlbnRbJ2F0dHJpYnMnXVsnJ11bJ2R1cmF0aW9uJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCQkJCX0KCQkJCQkJZWxzZQoJCQkJCQl7CgkJCQkJCQkkZHVyYXRpb24gPSAkZHVyYXRpb25fcGFyZW50OwoJCQkJCQl9CgkJCQkJCWlmIChpc3NldCgkY29udGVudFsnYXR0cmlicyddWycnXVsnZXhwcmVzc2lvbiddKSkKCQkJCQkJewoJCQkJCQkJJGV4cHJlc3Npb24gPSAkdGhpcy0+c2FuaXRpemUoJGNvbnRlbnRbJ2F0dHJpYnMnXVsnJ11bJ2V4cHJlc3Npb24nXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJCQkJfQoJCQkJCQlpZiAoaXNzZXQoJGNvbnRlbnRbJ2F0dHJpYnMnXVsnJ11bJ2ZyYW1lcmF0ZSddKSkKCQkJCQkJewoJCQkJCQkJJGZyYW1lcmF0ZSA9ICR0aGlzLT5zYW5pdGl6ZSgkY29udGVudFsnYXR0cmlicyddWycnXVsnZnJhbWVyYXRlJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCQkJCX0KCQkJCQkJaWYgKGlzc2V0KCRjb250ZW50WydhdHRyaWJzJ11bJyddWydoZWlnaHQnXSkpCgkJCQkJCXsKCQkJCQkJCSRoZWlnaHQgPSAkdGhpcy0+c2FuaXRpemUoJGNvbnRlbnRbJ2F0dHJpYnMnXVsnJ11bJ2hlaWdodCddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCQkJCQl9CgkJCQkJCWlmIChpc3NldCgkY29udGVudFsnYXR0cmlicyddWycnXVsnbGFuZyddKSkKCQkJCQkJewoJCQkJCQkJJGxhbmcgPSAkdGhpcy0+c2FuaXRpemUoJGNvbnRlbnRbJ2F0dHJpYnMnXVsnJ11bJ2xhbmcnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJCQkJfQoJCQkJCQlpZiAoaXNzZXQoJGNvbnRlbnRbJ2F0dHJpYnMnXVsnJ11bJ2ZpbGVTaXplJ10pKQoJCQkJCQl7CgkJCQkJCQkkbGVuZ3RoID0gY2VpbCgkY29udGVudFsnYXR0cmlicyddWycnXVsnZmlsZVNpemUnXSk7CgkJCQkJCX0KCQkJCQkJaWYgKGlzc2V0KCRjb250ZW50WydhdHRyaWJzJ11bJyddWydtZWRpdW0nXSkpCgkJCQkJCXsKCQkJCQkJCSRtZWRpdW0gPSAkdGhpcy0+c2FuaXRpemUoJGNvbnRlbnRbJ2F0dHJpYnMnXVsnJ11bJ21lZGl1bSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCQkJCQl9CgkJCQkJCWlmIChpc3NldCgkY29udGVudFsnYXR0cmlicyddWycnXVsnc2FtcGxpbmdyYXRlJ10pKQoJCQkJCQl7CgkJCQkJCQkkc2FtcGxpbmdyYXRlID0gJHRoaXMtPnNhbml0aXplKCRjb250ZW50WydhdHRyaWJzJ11bJyddWydzYW1wbGluZ3JhdGUnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJCQkJfQoJCQkJCQlpZiAoaXNzZXQoJGNvbnRlbnRbJ2F0dHJpYnMnXVsnJ11bJ3R5cGUnXSkpCgkJCQkJCXsKCQkJCQkJCSR0eXBlID0gJHRoaXMtPnNhbml0aXplKCRjb250ZW50WydhdHRyaWJzJ11bJyddWyd0eXBlJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCQkJCX0KCQkJCQkJaWYgKGlzc2V0KCRjb250ZW50WydhdHRyaWJzJ11bJyddWyd3aWR0aCddKSkKCQkJCQkJewoJCQkJCQkJJHdpZHRoID0gJHRoaXMtPnNhbml0aXplKCRjb250ZW50WydhdHRyaWJzJ11bJyddWyd3aWR0aCddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCQkJCQl9CgkJCQkJCSR1cmwgPSAkdGhpcy0+c2FuaXRpemUoJGNvbnRlbnRbJ2F0dHJpYnMnXVsnJ11bJ3VybCddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX0lSSSk7CgoJCQkJCQkvLyBDaGVja2luZyB0aGUgb3RoZXIgb3B0aW9uYWwgbWVkaWE6IGVsZW1lbnRzLiBQcmlvcml0eTogbWVkaWE6Y29udGVudCwgbWVkaWE6Z3JvdXAsIGl0ZW0sIGNoYW5uZWwKCgkJCQkJCS8vIENBUFRJT05TCgkJCQkJCWlmIChpc3NldCgkY29udGVudFsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX01FRElBUlNTXVsndGV4dCddKSkKCQkJCQkJewoJCQkJCQkJZm9yZWFjaCAoJGNvbnRlbnRbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9NRURJQVJTU11bJ3RleHQnXSBhcyAkY2FwdGlvbikKCQkJCQkJCXsKCQkJCQkJCQkkY2FwdGlvbl90eXBlID0gbnVsbDsKCQkJCQkJCQkkY2FwdGlvbl9sYW5nID0gbnVsbDsKCQkJCQkJCQkkY2FwdGlvbl9zdGFydFRpbWUgPSBudWxsOwoJCQkJCQkJCSRjYXB0aW9uX2VuZFRpbWUgPSBudWxsOwoJCQkJCQkJCSRjYXB0aW9uX3RleHQgPSBudWxsOwoJCQkJCQkJCWlmIChpc3NldCgkY2FwdGlvblsnYXR0cmlicyddWycnXVsndHlwZSddKSkKCQkJCQkJCQl7CgkJCQkJCQkJCSRjYXB0aW9uX3R5cGUgPSAkdGhpcy0+c2FuaXRpemUoJGNhcHRpb25bJ2F0dHJpYnMnXVsnJ11bJ3R5cGUnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJCQkJCQl9CgkJCQkJCQkJaWYgKGlzc2V0KCRjYXB0aW9uWydhdHRyaWJzJ11bJyddWydsYW5nJ10pKQoJCQkJCQkJCXsKCQkJCQkJCQkJJGNhcHRpb25fbGFuZyA9ICR0aGlzLT5zYW5pdGl6ZSgkY2FwdGlvblsnYXR0cmlicyddWycnXVsnbGFuZyddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCQkJCQkJCX0KCQkJCQkJCQlpZiAoaXNzZXQoJGNhcHRpb25bJ2F0dHJpYnMnXVsnJ11bJ3N0YXJ0J10pKQoJCQkJCQkJCXsKCQkJCQkJCQkJJGNhcHRpb25fc3RhcnRUaW1lID0gJHRoaXMtPnNhbml0aXplKCRjYXB0aW9uWydhdHRyaWJzJ11bJyddWydzdGFydCddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCQkJCQkJCX0KCQkJCQkJCQlpZiAoaXNzZXQoJGNhcHRpb25bJ2F0dHJpYnMnXVsnJ11bJ2VuZCddKSkKCQkJCQkJCQl7CgkJCQkJCQkJCSRjYXB0aW9uX2VuZFRpbWUgPSAkdGhpcy0+c2FuaXRpemUoJGNhcHRpb25bJ2F0dHJpYnMnXVsnJ11bJ2VuZCddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCQkJCQkJCX0KCQkJCQkJCQlpZiAoaXNzZXQoJGNhcHRpb25bJ2RhdGEnXSkpCgkJCQkJCQkJewoJCQkJCQkJCQkkY2FwdGlvbl90ZXh0ID0gJHRoaXMtPnNhbml0aXplKCRjYXB0aW9uWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCQkJCQkJfQoJCQkJCQkJCSRjYXB0aW9uc1tdID0mIG5ldyAkdGhpcy0+ZmVlZC0+Y2FwdGlvbl9jbGFzcygkY2FwdGlvbl90eXBlLCAkY2FwdGlvbl9sYW5nLCAkY2FwdGlvbl9zdGFydFRpbWUsICRjYXB0aW9uX2VuZFRpbWUsICRjYXB0aW9uX3RleHQpOwoJCQkJCQkJfQoJCQkJCQkJaWYgKGlzX2FycmF5KCRjYXB0aW9ucykpCgkJCQkJCQl7CgkJCQkJCQkJJGNhcHRpb25zID0gYXJyYXlfdmFsdWVzKFNpbXBsZVBpZV9NaXNjOjphcnJheV91bmlxdWUoJGNhcHRpb25zKSk7CgkJCQkJCQl9CgkJCQkJCX0KCQkJCQkJZWxzZWlmIChpc3NldCgkZ3JvdXBbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9NRURJQVJTU11bJ3RleHQnXSkpCgkJCQkJCXsKCQkJCQkJCWZvcmVhY2ggKCRncm91cFsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX01FRElBUlNTXVsndGV4dCddIGFzICRjYXB0aW9uKQoJCQkJCQkJewoJCQkJCQkJCSRjYXB0aW9uX3R5cGUgPSBudWxsOwoJCQkJCQkJCSRjYXB0aW9uX2xhbmcgPSBudWxsOwoJCQkJCQkJCSRjYXB0aW9uX3N0YXJ0VGltZSA9IG51bGw7CgkJCQkJCQkJJGNhcHRpb25fZW5kVGltZSA9IG51bGw7CgkJCQkJCQkJJGNhcHRpb25fdGV4dCA9IG51bGw7CgkJCQkJCQkJaWYgKGlzc2V0KCRjYXB0aW9uWydhdHRyaWJzJ11bJyddWyd0eXBlJ10pKQoJCQkJCQkJCXsKCQkJCQkJCQkJJGNhcHRpb25fdHlwZSA9ICR0aGlzLT5zYW5pdGl6ZSgkY2FwdGlvblsnYXR0cmlicyddWycnXVsndHlwZSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCQkJCQkJCX0KCQkJCQkJCQlpZiAoaXNzZXQoJGNhcHRpb25bJ2F0dHJpYnMnXVsnJ11bJ2xhbmcnXSkpCgkJCQkJCQkJewoJCQkJCQkJCQkkY2FwdGlvbl9sYW5nID0gJHRoaXMtPnNhbml0aXplKCRjYXB0aW9uWydhdHRyaWJzJ11bJyddWydsYW5nJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCQkJCQkJfQoJCQkJCQkJCWlmIChpc3NldCgkY2FwdGlvblsnYXR0cmlicyddWycnXVsnc3RhcnQnXSkpCgkJCQkJCQkJewoJCQkJCQkJCQkkY2FwdGlvbl9zdGFydFRpbWUgPSAkdGhpcy0+c2FuaXRpemUoJGNhcHRpb25bJ2F0dHJpYnMnXVsnJ11bJ3N0YXJ0J10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCQkJCQkJfQoJCQkJCQkJCWlmIChpc3NldCgkY2FwdGlvblsnYXR0cmlicyddWycnXVsnZW5kJ10pKQoJCQkJCQkJCXsKCQkJCQkJCQkJJGNhcHRpb25fZW5kVGltZSA9ICR0aGlzLT5zYW5pdGl6ZSgkY2FwdGlvblsnYXR0cmlicyddWycnXVsnZW5kJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCQkJCQkJfQoJCQkJCQkJCWlmIChpc3NldCgkY2FwdGlvblsnZGF0YSddKSkKCQkJCQkJCQl7CgkJCQkJCQkJCSRjYXB0aW9uX3RleHQgPSAkdGhpcy0+c2FuaXRpemUoJGNhcHRpb25bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJCQkJCQl9CgkJCQkJCQkJJGNhcHRpb25zW10gPSYgbmV3ICR0aGlzLT5mZWVkLT5jYXB0aW9uX2NsYXNzKCRjYXB0aW9uX3R5cGUsICRjYXB0aW9uX2xhbmcsICRjYXB0aW9uX3N0YXJ0VGltZSwgJGNhcHRpb25fZW5kVGltZSwgJGNhcHRpb25fdGV4dCk7CgkJCQkJCQl9CgkJCQkJCQlpZiAoaXNfYXJyYXkoJGNhcHRpb25zKSkKCQkJCQkJCXsKCQkJCQkJCQkkY2FwdGlvbnMgPSBhcnJheV92YWx1ZXMoU2ltcGxlUGllX01pc2M6OmFycmF5X3VuaXF1ZSgkY2FwdGlvbnMpKTsKCQkJCQkJCX0KCQkJCQkJfQoJCQkJCQllbHNlCgkJCQkJCXsKCQkJCQkJCSRjYXB0aW9ucyA9ICRjYXB0aW9uc19wYXJlbnQ7CgkJCQkJCX0KCgkJCQkJCS8vIENBVEVHT1JJRVMKCQkJCQkJaWYgKGlzc2V0KCRjb250ZW50WydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfTUVESUFSU1NdWydjYXRlZ29yeSddKSkKCQkJCQkJewoJCQkJCQkJZm9yZWFjaCAoKGFycmF5KSAkY29udGVudFsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX01FRElBUlNTXVsnY2F0ZWdvcnknXSBhcyAkY2F0ZWdvcnkpCgkJCQkJCQl7CgkJCQkJCQkJJHRlcm0gPSBudWxsOwoJCQkJCQkJCSRzY2hlbWUgPSBudWxsOwoJCQkJCQkJCSRsYWJlbCA9IG51bGw7CgkJCQkJCQkJaWYgKGlzc2V0KCRjYXRlZ29yeVsnZGF0YSddKSkKCQkJCQkJCQl7CgkJCQkJCQkJCSR0ZXJtID0gJHRoaXMtPnNhbml0aXplKCRjYXRlZ29yeVsnZGF0YSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCQkJCQkJCX0KCQkJCQkJCQlpZiAoaXNzZXQoJGNhdGVnb3J5WydhdHRyaWJzJ11bJyddWydzY2hlbWUnXSkpCgkJCQkJCQkJewoJCQkJCQkJCQkkc2NoZW1lID0gJHRoaXMtPnNhbml0aXplKCRjYXRlZ29yeVsnYXR0cmlicyddWycnXVsnc2NoZW1lJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCQkJCQkJfQoJCQkJCQkJCWVsc2UKCQkJCQkJCQl7CgkJCQkJCQkJCSRzY2hlbWUgPSAnaHR0cDovL3NlYXJjaC55YWhvby5jb20vbXJzcy9jYXRlZ29yeV9zY2hlbWEnOwoJCQkJCQkJCX0KCQkJCQkJCQlpZiAoaXNzZXQoJGNhdGVnb3J5WydhdHRyaWJzJ11bJyddWydsYWJlbCddKSkKCQkJCQkJCQl7CgkJCQkJCQkJCSRsYWJlbCA9ICR0aGlzLT5zYW5pdGl6ZSgkY2F0ZWdvcnlbJ2F0dHJpYnMnXVsnJ11bJ2xhYmVsJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCQkJCQkJfQoJCQkJCQkJCSRjYXRlZ29yaWVzW10gPSYgbmV3ICR0aGlzLT5mZWVkLT5jYXRlZ29yeV9jbGFzcygkdGVybSwgJHNjaGVtZSwgJGxhYmVsKTsKCQkJCQkJCX0KCQkJCQkJfQoJCQkJCQlpZiAoaXNzZXQoJGdyb3VwWydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfTUVESUFSU1NdWydjYXRlZ29yeSddKSkKCQkJCQkJewoJCQkJCQkJZm9yZWFjaCAoKGFycmF5KSAkZ3JvdXBbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9NRURJQVJTU11bJ2NhdGVnb3J5J10gYXMgJGNhdGVnb3J5KQoJCQkJCQkJewoJCQkJCQkJCSR0ZXJtID0gbnVsbDsKCQkJCQkJCQkkc2NoZW1lID0gbnVsbDsKCQkJCQkJCQkkbGFiZWwgPSBudWxsOwoJCQkJCQkJCWlmIChpc3NldCgkY2F0ZWdvcnlbJ2RhdGEnXSkpCgkJCQkJCQkJewoJCQkJCQkJCQkkdGVybSA9ICR0aGlzLT5zYW5pdGl6ZSgkY2F0ZWdvcnlbJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJCQkJCQl9CgkJCQkJCQkJaWYgKGlzc2V0KCRjYXRlZ29yeVsnYXR0cmlicyddWycnXVsnc2NoZW1lJ10pKQoJCQkJCQkJCXsKCQkJCQkJCQkJJHNjaGVtZSA9ICR0aGlzLT5zYW5pdGl6ZSgkY2F0ZWdvcnlbJ2F0dHJpYnMnXVsnJ11bJ3NjaGVtZSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCQkJCQkJCX0KCQkJCQkJCQllbHNlCgkJCQkJCQkJewoJCQkJCQkJCQkkc2NoZW1lID0gJ2h0dHA6Ly9zZWFyY2gueWFob28uY29tL21yc3MvY2F0ZWdvcnlfc2NoZW1hJzsKCQkJCQkJCQl9CgkJCQkJCQkJaWYgKGlzc2V0KCRjYXRlZ29yeVsnYXR0cmlicyddWycnXVsnbGFiZWwnXSkpCgkJCQkJCQkJewoJCQkJCQkJCQkkbGFiZWwgPSAkdGhpcy0+c2FuaXRpemUoJGNhdGVnb3J5WydhdHRyaWJzJ11bJyddWydsYWJlbCddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCQkJCQkJCX0KCQkJCQkJCQkkY2F0ZWdvcmllc1tdID0mIG5ldyAkdGhpcy0+ZmVlZC0+Y2F0ZWdvcnlfY2xhc3MoJHRlcm0sICRzY2hlbWUsICRsYWJlbCk7CgkJCQkJCQl9CgkJCQkJCX0KCQkJCQkJaWYgKGlzX2FycmF5KCRjYXRlZ29yaWVzKSAmJiBpc19hcnJheSgkY2F0ZWdvcmllc19wYXJlbnQpKQoJCQkJCQl7CgkJCQkJCQkkY2F0ZWdvcmllcyA9IGFycmF5X3ZhbHVlcyhTaW1wbGVQaWVfTWlzYzo6YXJyYXlfdW5pcXVlKGFycmF5X21lcmdlKCRjYXRlZ29yaWVzLCAkY2F0ZWdvcmllc19wYXJlbnQpKSk7CgkJCQkJCX0KCQkJCQkJZWxzZWlmIChpc19hcnJheSgkY2F0ZWdvcmllcykpCgkJCQkJCXsKCQkJCQkJCSRjYXRlZ29yaWVzID0gYXJyYXlfdmFsdWVzKFNpbXBsZVBpZV9NaXNjOjphcnJheV91bmlxdWUoJGNhdGVnb3JpZXMpKTsKCQkJCQkJfQoJCQkJCQllbHNlaWYgKGlzX2FycmF5KCRjYXRlZ29yaWVzX3BhcmVudCkpCgkJCQkJCXsKCQkJCQkJCSRjYXRlZ29yaWVzID0gYXJyYXlfdmFsdWVzKFNpbXBsZVBpZV9NaXNjOjphcnJheV91bmlxdWUoJGNhdGVnb3JpZXNfcGFyZW50KSk7CgkJCQkJCX0KCgkJCQkJCS8vIENPUFlSSUdIVFMKCQkJCQkJaWYgKGlzc2V0KCRjb250ZW50WydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfTUVESUFSU1NdWydjb3B5cmlnaHQnXSkpCgkJCQkJCXsKCQkJCQkJCSRjb3B5cmlnaHRfdXJsID0gbnVsbDsKCQkJCQkJCSRjb3B5cmlnaHRfbGFiZWwgPSBudWxsOwoJCQkJCQkJaWYgKGlzc2V0KCRjb250ZW50WydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfTUVESUFSU1NdWydjb3B5cmlnaHQnXVswXVsnYXR0cmlicyddWycnXVsndXJsJ10pKQoJCQkJCQkJewoJCQkJCQkJCSRjb3B5cmlnaHRfdXJsID0gJHRoaXMtPnNhbml0aXplKCRjb250ZW50WydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfTUVESUFSU1NdWydjb3B5cmlnaHQnXVswXVsnYXR0cmlicyddWycnXVsndXJsJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCQkJCQl9CgkJCQkJCQlpZiAoaXNzZXQoJGNvbnRlbnRbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9NRURJQVJTU11bJ2NvcHlyaWdodCddWzBdWydkYXRhJ10pKQoJCQkJCQkJewoJCQkJCQkJCSRjb3B5cmlnaHRfbGFiZWwgPSAkdGhpcy0+c2FuaXRpemUoJGNvbnRlbnRbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9NRURJQVJTU11bJ2NvcHlyaWdodCddWzBdWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCQkJCQl9CgkJCQkJCQkkY29weXJpZ2h0cyA9JiBuZXcgJHRoaXMtPmZlZWQtPmNvcHlyaWdodF9jbGFzcygkY29weXJpZ2h0X3VybCwgJGNvcHlyaWdodF9sYWJlbCk7CgkJCQkJCX0KCQkJCQkJZWxzZWlmIChpc3NldCgkZ3JvdXBbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9NRURJQVJTU11bJ2NvcHlyaWdodCddKSkKCQkJCQkJewoJCQkJCQkJJGNvcHlyaWdodF91cmwgPSBudWxsOwoJCQkJCQkJJGNvcHlyaWdodF9sYWJlbCA9IG51bGw7CgkJCQkJCQlpZiAoaXNzZXQoJGdyb3VwWydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfTUVESUFSU1NdWydjb3B5cmlnaHQnXVswXVsnYXR0cmlicyddWycnXVsndXJsJ10pKQoJCQkJCQkJewoJCQkJCQkJCSRjb3B5cmlnaHRfdXJsID0gJHRoaXMtPnNhbml0aXplKCRncm91cFsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX01FRElBUlNTXVsnY29weXJpZ2h0J11bMF1bJ2F0dHJpYnMnXVsnJ11bJ3VybCddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCQkJCQkJfQoJCQkJCQkJaWYgKGlzc2V0KCRncm91cFsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX01FRElBUlNTXVsnY29weXJpZ2h0J11bMF1bJ2RhdGEnXSkpCgkJCQkJCQl7CgkJCQkJCQkJJGNvcHlyaWdodF9sYWJlbCA9ICR0aGlzLT5zYW5pdGl6ZSgkZ3JvdXBbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9NRURJQVJTU11bJ2NvcHlyaWdodCddWzBdWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCQkJCQl9CgkJCQkJCQkkY29weXJpZ2h0cyA9JiBuZXcgJHRoaXMtPmZlZWQtPmNvcHlyaWdodF9jbGFzcygkY29weXJpZ2h0X3VybCwgJGNvcHlyaWdodF9sYWJlbCk7CgkJCQkJCX0KCQkJCQkJZWxzZQoJCQkJCQl7CgkJCQkJCQkkY29weXJpZ2h0cyA9ICRjb3B5cmlnaHRzX3BhcmVudDsKCQkJCQkJfQoKCQkJCQkJLy8gQ1JFRElUUwoJCQkJCQlpZiAoaXNzZXQoJGNvbnRlbnRbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9NRURJQVJTU11bJ2NyZWRpdCddKSkKCQkJCQkJewoJCQkJCQkJZm9yZWFjaCAoJGNvbnRlbnRbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9NRURJQVJTU11bJ2NyZWRpdCddIGFzICRjcmVkaXQpCgkJCQkJCQl7CgkJCQkJCQkJJGNyZWRpdF9yb2xlID0gbnVsbDsKCQkJCQkJCQkkY3JlZGl0X3NjaGVtZSA9IG51bGw7CgkJCQkJCQkJJGNyZWRpdF9uYW1lID0gbnVsbDsKCQkJCQkJCQlpZiAoaXNzZXQoJGNyZWRpdFsnYXR0cmlicyddWycnXVsncm9sZSddKSkKCQkJCQkJCQl7CgkJCQkJCQkJCSRjcmVkaXRfcm9sZSA9ICR0aGlzLT5zYW5pdGl6ZSgkY3JlZGl0WydhdHRyaWJzJ11bJyddWydyb2xlJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCQkJCQkJfQoJCQkJCQkJCWlmIChpc3NldCgkY3JlZGl0WydhdHRyaWJzJ11bJyddWydzY2hlbWUnXSkpCgkJCQkJCQkJewoJCQkJCQkJCQkkY3JlZGl0X3NjaGVtZSA9ICR0aGlzLT5zYW5pdGl6ZSgkY3JlZGl0WydhdHRyaWJzJ11bJyddWydzY2hlbWUnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJCQkJCQl9CgkJCQkJCQkJZWxzZQoJCQkJCQkJCXsKCQkJCQkJCQkJJGNyZWRpdF9zY2hlbWUgPSAndXJuOmVidSc7CgkJCQkJCQkJfQoJCQkJCQkJCWlmIChpc3NldCgkY3JlZGl0WydkYXRhJ10pKQoJCQkJCQkJCXsKCQkJCQkJCQkJJGNyZWRpdF9uYW1lID0gJHRoaXMtPnNhbml0aXplKCRjcmVkaXRbJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJCQkJCQl9CgkJCQkJCQkJJGNyZWRpdHNbXSA9JiBuZXcgJHRoaXMtPmZlZWQtPmNyZWRpdF9jbGFzcygkY3JlZGl0X3JvbGUsICRjcmVkaXRfc2NoZW1lLCAkY3JlZGl0X25hbWUpOwoJCQkJCQkJfQoJCQkJCQkJaWYgKGlzX2FycmF5KCRjcmVkaXRzKSkKCQkJCQkJCXsKCQkJCQkJCQkkY3JlZGl0cyA9IGFycmF5X3ZhbHVlcyhTaW1wbGVQaWVfTWlzYzo6YXJyYXlfdW5pcXVlKCRjcmVkaXRzKSk7CgkJCQkJCQl9CgkJCQkJCX0KCQkJCQkJZWxzZWlmIChpc3NldCgkZ3JvdXBbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9NRURJQVJTU11bJ2NyZWRpdCddKSkKCQkJCQkJewoJCQkJCQkJZm9yZWFjaCAoJGdyb3VwWydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfTUVESUFSU1NdWydjcmVkaXQnXSBhcyAkY3JlZGl0KQoJCQkJCQkJewoJCQkJCQkJCSRjcmVkaXRfcm9sZSA9IG51bGw7CgkJCQkJCQkJJGNyZWRpdF9zY2hlbWUgPSBudWxsOwoJCQkJCQkJCSRjcmVkaXRfbmFtZSA9IG51bGw7CgkJCQkJCQkJaWYgKGlzc2V0KCRjcmVkaXRbJ2F0dHJpYnMnXVsnJ11bJ3JvbGUnXSkpCgkJCQkJCQkJewoJCQkJCQkJCQkkY3JlZGl0X3JvbGUgPSAkdGhpcy0+c2FuaXRpemUoJGNyZWRpdFsnYXR0cmlicyddWycnXVsncm9sZSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCQkJCQkJCX0KCQkJCQkJCQlpZiAoaXNzZXQoJGNyZWRpdFsnYXR0cmlicyddWycnXVsnc2NoZW1lJ10pKQoJCQkJCQkJCXsKCQkJCQkJCQkJJGNyZWRpdF9zY2hlbWUgPSAkdGhpcy0+c2FuaXRpemUoJGNyZWRpdFsnYXR0cmlicyddWycnXVsnc2NoZW1lJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCQkJCQkJfQoJCQkJCQkJCWVsc2UKCQkJCQkJCQl7CgkJCQkJCQkJCSRjcmVkaXRfc2NoZW1lID0gJ3VybjplYnUnOwoJCQkJCQkJCX0KCQkJCQkJCQlpZiAoaXNzZXQoJGNyZWRpdFsnZGF0YSddKSkKCQkJCQkJCQl7CgkJCQkJCQkJCSRjcmVkaXRfbmFtZSA9ICR0aGlzLT5zYW5pdGl6ZSgkY3JlZGl0WydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCQkJCQkJfQoJCQkJCQkJCSRjcmVkaXRzW10gPSYgbmV3ICR0aGlzLT5mZWVkLT5jcmVkaXRfY2xhc3MoJGNyZWRpdF9yb2xlLCAkY3JlZGl0X3NjaGVtZSwgJGNyZWRpdF9uYW1lKTsKCQkJCQkJCX0KCQkJCQkJCWlmIChpc19hcnJheSgkY3JlZGl0cykpCgkJCQkJCQl7CgkJCQkJCQkJJGNyZWRpdHMgPSBhcnJheV92YWx1ZXMoU2ltcGxlUGllX01pc2M6OmFycmF5X3VuaXF1ZSgkY3JlZGl0cykpOwoJCQkJCQkJfQoJCQkJCQl9CgkJCQkJCWVsc2UKCQkJCQkJewoJCQkJCQkJJGNyZWRpdHMgPSAkY3JlZGl0c19wYXJlbnQ7CgkJCQkJCX0KCgkJCQkJCS8vIERFU0NSSVBUSU9OCgkJCQkJCWlmIChpc3NldCgkY29udGVudFsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX01FRElBUlNTXVsnZGVzY3JpcHRpb24nXSkpCgkJCQkJCXsKCQkJCQkJCSRkZXNjcmlwdGlvbiA9ICR0aGlzLT5zYW5pdGl6ZSgkY29udGVudFsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX01FRElBUlNTXVsnZGVzY3JpcHRpb24nXVswXVsnZGF0YSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCQkJCQl9CgkJCQkJCWVsc2VpZiAoaXNzZXQoJGdyb3VwWydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfTUVESUFSU1NdWydkZXNjcmlwdGlvbiddKSkKCQkJCQkJewoJCQkJCQkJJGRlc2NyaXB0aW9uID0gJHRoaXMtPnNhbml0aXplKCRncm91cFsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX01FRElBUlNTXVsnZGVzY3JpcHRpb24nXVswXVsnZGF0YSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCQkJCQl9CgkJCQkJCWVsc2UKCQkJCQkJewoJCQkJCQkJJGRlc2NyaXB0aW9uID0gJGRlc2NyaXB0aW9uX3BhcmVudDsKCQkJCQkJfQoKCQkJCQkJLy8gSEFTSEVTCgkJCQkJCWlmIChpc3NldCgkY29udGVudFsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX01FRElBUlNTXVsnaGFzaCddKSkKCQkJCQkJewoJCQkJCQkJZm9yZWFjaCAoJGNvbnRlbnRbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9NRURJQVJTU11bJ2hhc2gnXSBhcyAkaGFzaCkKCQkJCQkJCXsKCQkJCQkJCQkkdmFsdWUgPSBudWxsOwoJCQkJCQkJCSRhbGdvID0gbnVsbDsKCQkJCQkJCQlpZiAoaXNzZXQoJGhhc2hbJ2RhdGEnXSkpCgkJCQkJCQkJewoJCQkJCQkJCQkkdmFsdWUgPSAkdGhpcy0+c2FuaXRpemUoJGhhc2hbJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJCQkJCQl9CgkJCQkJCQkJaWYgKGlzc2V0KCRoYXNoWydhdHRyaWJzJ11bJyddWydhbGdvJ10pKQoJCQkJCQkJCXsKCQkJCQkJCQkJJGFsZ28gPSAkdGhpcy0+c2FuaXRpemUoJGhhc2hbJ2F0dHJpYnMnXVsnJ11bJ2FsZ28nXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJCQkJCQl9CgkJCQkJCQkJZWxzZQoJCQkJCQkJCXsKCQkJCQkJCQkJJGFsZ28gPSAnbWQ1JzsKCQkJCQkJCQl9CgkJCQkJCQkJJGhhc2hlc1tdID0gJGFsZ28uJzonLiR2YWx1ZTsKCQkJCQkJCX0KCQkJCQkJCWlmIChpc19hcnJheSgkaGFzaGVzKSkKCQkJCQkJCXsKCQkJCQkJCQkkaGFzaGVzID0gYXJyYXlfdmFsdWVzKFNpbXBsZVBpZV9NaXNjOjphcnJheV91bmlxdWUoJGhhc2hlcykpOwoJCQkJCQkJfQoJCQkJCQl9CgkJCQkJCWVsc2VpZiAoaXNzZXQoJGdyb3VwWydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfTUVESUFSU1NdWydoYXNoJ10pKQoJCQkJCQl7CgkJCQkJCQlmb3JlYWNoICgkZ3JvdXBbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9NRURJQVJTU11bJ2hhc2gnXSBhcyAkaGFzaCkKCQkJCQkJCXsKCQkJCQkJCQkkdmFsdWUgPSBudWxsOwoJCQkJCQkJCSRhbGdvID0gbnVsbDsKCQkJCQkJCQlpZiAoaXNzZXQoJGhhc2hbJ2RhdGEnXSkpCgkJCQkJCQkJewoJCQkJCQkJCQkkdmFsdWUgPSAkdGhpcy0+c2FuaXRpemUoJGhhc2hbJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJCQkJCQl9CgkJCQkJCQkJaWYgKGlzc2V0KCRoYXNoWydhdHRyaWJzJ11bJyddWydhbGdvJ10pKQoJCQkJCQkJCXsKCQkJCQkJCQkJJGFsZ28gPSAkdGhpcy0+c2FuaXRpemUoJGhhc2hbJ2F0dHJpYnMnXVsnJ11bJ2FsZ28nXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJCQkJCQl9CgkJCQkJCQkJZWxzZQoJCQkJCQkJCXsKCQkJCQkJCQkJJGFsZ28gPSAnbWQ1JzsKCQkJCQkJCQl9CgkJCQkJCQkJJGhhc2hlc1tdID0gJGFsZ28uJzonLiR2YWx1ZTsKCQkJCQkJCX0KCQkJCQkJCWlmIChpc19hcnJheSgkaGFzaGVzKSkKCQkJCQkJCXsKCQkJCQkJCQkkaGFzaGVzID0gYXJyYXlfdmFsdWVzKFNpbXBsZVBpZV9NaXNjOjphcnJheV91bmlxdWUoJGhhc2hlcykpOwoJCQkJCQkJfQoJCQkJCQl9CgkJCQkJCWVsc2UKCQkJCQkJewoJCQkJCQkJJGhhc2hlcyA9ICRoYXNoZXNfcGFyZW50OwoJCQkJCQl9CgoJCQkJCQkvLyBLRVlXT1JEUwoJCQkJCQlpZiAoaXNzZXQoJGNvbnRlbnRbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9NRURJQVJTU11bJ2tleXdvcmRzJ10pKQoJCQkJCQl7CgkJCQkJCQlpZiAoaXNzZXQoJGNvbnRlbnRbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9NRURJQVJTU11bJ2tleXdvcmRzJ11bMF1bJ2RhdGEnXSkpCgkJCQkJCQl7CgkJCQkJCQkJJHRlbXAgPSBleHBsb2RlKCcsJywgJHRoaXMtPnNhbml0aXplKCRjb250ZW50WydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfTUVESUFSU1NdWydrZXl3b3JkcyddWzBdWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCkpOwoJCQkJCQkJCWZvcmVhY2ggKCR0ZW1wIGFzICR3b3JkKQoJCQkJCQkJCXsKCQkJCQkJCQkJJGtleXdvcmRzW10gPSB0cmltKCR3b3JkKTsKCQkJCQkJCQl9CgkJCQkJCQkJdW5zZXQoJHRlbXApOwoJCQkJCQkJfQoJCQkJCQkJaWYgKGlzX2FycmF5KCRrZXl3b3JkcykpCgkJCQkJCQl7CgkJCQkJCQkJJGtleXdvcmRzID0gYXJyYXlfdmFsdWVzKFNpbXBsZVBpZV9NaXNjOjphcnJheV91bmlxdWUoJGtleXdvcmRzKSk7CgkJCQkJCQl9CgkJCQkJCX0KCQkJCQkJZWxzZWlmIChpc3NldCgkZ3JvdXBbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9NRURJQVJTU11bJ2tleXdvcmRzJ10pKQoJCQkJCQl7CgkJCQkJCQlpZiAoaXNzZXQoJGdyb3VwWydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfTUVESUFSU1NdWydrZXl3b3JkcyddWzBdWydkYXRhJ10pKQoJCQkJCQkJewoJCQkJCQkJCSR0ZW1wID0gZXhwbG9kZSgnLCcsICR0aGlzLT5zYW5pdGl6ZSgkZ3JvdXBbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9NRURJQVJTU11bJ2tleXdvcmRzJ11bMF1bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKSk7CgkJCQkJCQkJZm9yZWFjaCAoJHRlbXAgYXMgJHdvcmQpCgkJCQkJCQkJewoJCQkJCQkJCQkka2V5d29yZHNbXSA9IHRyaW0oJHdvcmQpOwoJCQkJCQkJCX0KCQkJCQkJCQl1bnNldCgkdGVtcCk7CgkJCQkJCQl9CgkJCQkJCQlpZiAoaXNfYXJyYXkoJGtleXdvcmRzKSkKCQkJCQkJCXsKCQkJCQkJCQkka2V5d29yZHMgPSBhcnJheV92YWx1ZXMoU2ltcGxlUGllX01pc2M6OmFycmF5X3VuaXF1ZSgka2V5d29yZHMpKTsKCQkJCQkJCX0KCQkJCQkJfQoJCQkJCQllbHNlCgkJCQkJCXsKCQkJCQkJCSRrZXl3b3JkcyA9ICRrZXl3b3Jkc19wYXJlbnQ7CgkJCQkJCX0KCgkJCQkJCS8vIFBMQVlFUgoJCQkJCQlpZiAoaXNzZXQoJGNvbnRlbnRbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9NRURJQVJTU11bJ3BsYXllciddKSkKCQkJCQkJewoJCQkJCQkJJHBsYXllciA9ICR0aGlzLT5zYW5pdGl6ZSgkY29udGVudFsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX01FRElBUlNTXVsncGxheWVyJ11bMF1bJ2F0dHJpYnMnXVsnJ11bJ3VybCddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX0lSSSk7CgkJCQkJCX0KCQkJCQkJZWxzZWlmIChpc3NldCgkZ3JvdXBbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9NRURJQVJTU11bJ3BsYXllciddKSkKCQkJCQkJewoJCQkJCQkJJHBsYXllciA9ICR0aGlzLT5zYW5pdGl6ZSgkZ3JvdXBbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9NRURJQVJTU11bJ3BsYXllciddWzBdWydhdHRyaWJzJ11bJyddWyd1cmwnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9JUkkpOwoJCQkJCQl9CgkJCQkJCWVsc2UKCQkJCQkJewoJCQkJCQkJJHBsYXllciA9ICRwbGF5ZXJfcGFyZW50OwoJCQkJCQl9CgoJCQkJCQkvLyBSQVRJTkdTCgkJCQkJCWlmIChpc3NldCgkY29udGVudFsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX01FRElBUlNTXVsncmF0aW5nJ10pKQoJCQkJCQl7CgkJCQkJCQlmb3JlYWNoICgkY29udGVudFsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX01FRElBUlNTXVsncmF0aW5nJ10gYXMgJHJhdGluZykKCQkJCQkJCXsKCQkJCQkJCQkkcmF0aW5nX3NjaGVtZSA9IG51bGw7CgkJCQkJCQkJJHJhdGluZ192YWx1ZSA9IG51bGw7CgkJCQkJCQkJaWYgKGlzc2V0KCRyYXRpbmdbJ2F0dHJpYnMnXVsnJ11bJ3NjaGVtZSddKSkKCQkJCQkJCQl7CgkJCQkJCQkJCSRyYXRpbmdfc2NoZW1lID0gJHRoaXMtPnNhbml0aXplKCRyYXRpbmdbJ2F0dHJpYnMnXVsnJ11bJ3NjaGVtZSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCQkJCQkJCX0KCQkJCQkJCQllbHNlCgkJCQkJCQkJewoJCQkJCQkJCQkkcmF0aW5nX3NjaGVtZSA9ICd1cm46c2ltcGxlJzsKCQkJCQkJCQl9CgkJCQkJCQkJaWYgKGlzc2V0KCRyYXRpbmdbJ2RhdGEnXSkpCgkJCQkJCQkJewoJCQkJCQkJCQkkcmF0aW5nX3ZhbHVlID0gJHRoaXMtPnNhbml0aXplKCRyYXRpbmdbJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJCQkJCQl9CgkJCQkJCQkJJHJhdGluZ3NbXSA9JiBuZXcgJHRoaXMtPmZlZWQtPnJhdGluZ19jbGFzcygkcmF0aW5nX3NjaGVtZSwgJHJhdGluZ192YWx1ZSk7CgkJCQkJCQl9CgkJCQkJCQlpZiAoaXNfYXJyYXkoJHJhdGluZ3MpKQoJCQkJCQkJewoJCQkJCQkJCSRyYXRpbmdzID0gYXJyYXlfdmFsdWVzKFNpbXBsZVBpZV9NaXNjOjphcnJheV91bmlxdWUoJHJhdGluZ3MpKTsKCQkJCQkJCX0KCQkJCQkJfQoJCQkJCQllbHNlaWYgKGlzc2V0KCRncm91cFsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX01FRElBUlNTXVsncmF0aW5nJ10pKQoJCQkJCQl7CgkJCQkJCQlmb3JlYWNoICgkZ3JvdXBbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9NRURJQVJTU11bJ3JhdGluZyddIGFzICRyYXRpbmcpCgkJCQkJCQl7CgkJCQkJCQkJJHJhdGluZ19zY2hlbWUgPSBudWxsOwoJCQkJCQkJCSRyYXRpbmdfdmFsdWUgPSBudWxsOwoJCQkJCQkJCWlmIChpc3NldCgkcmF0aW5nWydhdHRyaWJzJ11bJyddWydzY2hlbWUnXSkpCgkJCQkJCQkJewoJCQkJCQkJCQkkcmF0aW5nX3NjaGVtZSA9ICR0aGlzLT5zYW5pdGl6ZSgkcmF0aW5nWydhdHRyaWJzJ11bJyddWydzY2hlbWUnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJCQkJCQl9CgkJCQkJCQkJZWxzZQoJCQkJCQkJCXsKCQkJCQkJCQkJJHJhdGluZ19zY2hlbWUgPSAndXJuOnNpbXBsZSc7CgkJCQkJCQkJfQoJCQkJCQkJCWlmIChpc3NldCgkcmF0aW5nWydkYXRhJ10pKQoJCQkJCQkJCXsKCQkJCQkJCQkJJHJhdGluZ192YWx1ZSA9ICR0aGlzLT5zYW5pdGl6ZSgkcmF0aW5nWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCQkJCQkJfQoJCQkJCQkJCSRyYXRpbmdzW10gPSYgbmV3ICR0aGlzLT5mZWVkLT5yYXRpbmdfY2xhc3MoJHJhdGluZ19zY2hlbWUsICRyYXRpbmdfdmFsdWUpOwoJCQkJCQkJfQoJCQkJCQkJaWYgKGlzX2FycmF5KCRyYXRpbmdzKSkKCQkJCQkJCXsKCQkJCQkJCQkkcmF0aW5ncyA9IGFycmF5X3ZhbHVlcyhTaW1wbGVQaWVfTWlzYzo6YXJyYXlfdW5pcXVlKCRyYXRpbmdzKSk7CgkJCQkJCQl9CgkJCQkJCX0KCQkJCQkJZWxzZQoJCQkJCQl7CgkJCQkJCQkkcmF0aW5ncyA9ICRyYXRpbmdzX3BhcmVudDsKCQkJCQkJfQoKCQkJCQkJLy8gUkVTVFJJQ1RJT05TCgkJCQkJCWlmIChpc3NldCgkY29udGVudFsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX01FRElBUlNTXVsncmVzdHJpY3Rpb24nXSkpCgkJCQkJCXsKCQkJCQkJCWZvcmVhY2ggKCRjb250ZW50WydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfTUVESUFSU1NdWydyZXN0cmljdGlvbiddIGFzICRyZXN0cmljdGlvbikKCQkJCQkJCXsKCQkJCQkJCQkkcmVzdHJpY3Rpb25fcmVsYXRpb25zaGlwID0gbnVsbDsKCQkJCQkJCQkkcmVzdHJpY3Rpb25fdHlwZSA9IG51bGw7CgkJCQkJCQkJJHJlc3RyaWN0aW9uX3ZhbHVlID0gbnVsbDsKCQkJCQkJCQlpZiAoaXNzZXQoJHJlc3RyaWN0aW9uWydhdHRyaWJzJ11bJyddWydyZWxhdGlvbnNoaXAnXSkpCgkJCQkJCQkJewoJCQkJCQkJCQkkcmVzdHJpY3Rpb25fcmVsYXRpb25zaGlwID0gJHRoaXMtPnNhbml0aXplKCRyZXN0cmljdGlvblsnYXR0cmlicyddWycnXVsncmVsYXRpb25zaGlwJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCQkJCQkJfQoJCQkJCQkJCWlmIChpc3NldCgkcmVzdHJpY3Rpb25bJ2F0dHJpYnMnXVsnJ11bJ3R5cGUnXSkpCgkJCQkJCQkJewoJCQkJCQkJCQkkcmVzdHJpY3Rpb25fdHlwZSA9ICR0aGlzLT5zYW5pdGl6ZSgkcmVzdHJpY3Rpb25bJ2F0dHJpYnMnXVsnJ11bJ3R5cGUnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJCQkJCQl9CgkJCQkJCQkJaWYgKGlzc2V0KCRyZXN0cmljdGlvblsnZGF0YSddKSkKCQkJCQkJCQl7CgkJCQkJCQkJCSRyZXN0cmljdGlvbl92YWx1ZSA9ICR0aGlzLT5zYW5pdGl6ZSgkcmVzdHJpY3Rpb25bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJCQkJCQl9CgkJCQkJCQkJJHJlc3RyaWN0aW9uc1tdID0mIG5ldyAkdGhpcy0+ZmVlZC0+cmVzdHJpY3Rpb25fY2xhc3MoJHJlc3RyaWN0aW9uX3JlbGF0aW9uc2hpcCwgJHJlc3RyaWN0aW9uX3R5cGUsICRyZXN0cmljdGlvbl92YWx1ZSk7CgkJCQkJCQl9CgkJCQkJCQlpZiAoaXNfYXJyYXkoJHJlc3RyaWN0aW9ucykpCgkJCQkJCQl7CgkJCQkJCQkJJHJlc3RyaWN0aW9ucyA9IGFycmF5X3ZhbHVlcyhTaW1wbGVQaWVfTWlzYzo6YXJyYXlfdW5pcXVlKCRyZXN0cmljdGlvbnMpKTsKCQkJCQkJCX0KCQkJCQkJfQoJCQkJCQllbHNlaWYgKGlzc2V0KCRncm91cFsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX01FRElBUlNTXVsncmVzdHJpY3Rpb24nXSkpCgkJCQkJCXsKCQkJCQkJCWZvcmVhY2ggKCRncm91cFsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX01FRElBUlNTXVsncmVzdHJpY3Rpb24nXSBhcyAkcmVzdHJpY3Rpb24pCgkJCQkJCQl7CgkJCQkJCQkJJHJlc3RyaWN0aW9uX3JlbGF0aW9uc2hpcCA9IG51bGw7CgkJCQkJCQkJJHJlc3RyaWN0aW9uX3R5cGUgPSBudWxsOwoJCQkJCQkJCSRyZXN0cmljdGlvbl92YWx1ZSA9IG51bGw7CgkJCQkJCQkJaWYgKGlzc2V0KCRyZXN0cmljdGlvblsnYXR0cmlicyddWycnXVsncmVsYXRpb25zaGlwJ10pKQoJCQkJCQkJCXsKCQkJCQkJCQkJJHJlc3RyaWN0aW9uX3JlbGF0aW9uc2hpcCA9ICR0aGlzLT5zYW5pdGl6ZSgkcmVzdHJpY3Rpb25bJ2F0dHJpYnMnXVsnJ11bJ3JlbGF0aW9uc2hpcCddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCQkJCQkJCX0KCQkJCQkJCQlpZiAoaXNzZXQoJHJlc3RyaWN0aW9uWydhdHRyaWJzJ11bJyddWyd0eXBlJ10pKQoJCQkJCQkJCXsKCQkJCQkJCQkJJHJlc3RyaWN0aW9uX3R5cGUgPSAkdGhpcy0+c2FuaXRpemUoJHJlc3RyaWN0aW9uWydhdHRyaWJzJ11bJyddWyd0eXBlJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCQkJCQkJfQoJCQkJCQkJCWlmIChpc3NldCgkcmVzdHJpY3Rpb25bJ2RhdGEnXSkpCgkJCQkJCQkJewoJCQkJCQkJCQkkcmVzdHJpY3Rpb25fdmFsdWUgPSAkdGhpcy0+c2FuaXRpemUoJHJlc3RyaWN0aW9uWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCQkJCQkJfQoJCQkJCQkJCSRyZXN0cmljdGlvbnNbXSA9JiBuZXcgJHRoaXMtPmZlZWQtPnJlc3RyaWN0aW9uX2NsYXNzKCRyZXN0cmljdGlvbl9yZWxhdGlvbnNoaXAsICRyZXN0cmljdGlvbl90eXBlLCAkcmVzdHJpY3Rpb25fdmFsdWUpOwoJCQkJCQkJfQoJCQkJCQkJaWYgKGlzX2FycmF5KCRyZXN0cmljdGlvbnMpKQoJCQkJCQkJewoJCQkJCQkJCSRyZXN0cmljdGlvbnMgPSBhcnJheV92YWx1ZXMoU2ltcGxlUGllX01pc2M6OmFycmF5X3VuaXF1ZSgkcmVzdHJpY3Rpb25zKSk7CgkJCQkJCQl9CgkJCQkJCX0KCQkJCQkJZWxzZQoJCQkJCQl7CgkJCQkJCQkkcmVzdHJpY3Rpb25zID0gJHJlc3RyaWN0aW9uc19wYXJlbnQ7CgkJCQkJCX0KCgkJCQkJCS8vIFRIVU1CTkFJTFMKCQkJCQkJaWYgKGlzc2V0KCRjb250ZW50WydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfTUVESUFSU1NdWyd0aHVtYm5haWwnXSkpCgkJCQkJCXsKCQkJCQkJCWZvcmVhY2ggKCRjb250ZW50WydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfTUVESUFSU1NdWyd0aHVtYm5haWwnXSBhcyAkdGh1bWJuYWlsKQoJCQkJCQkJewoJCQkJCQkJCSR0aHVtYm5haWxzW10gPSAkdGhpcy0+c2FuaXRpemUoJHRodW1ibmFpbFsnYXR0cmlicyddWycnXVsndXJsJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfSVJJKTsKCQkJCQkJCX0KCQkJCQkJCWlmIChpc19hcnJheSgkdGh1bWJuYWlscykpCgkJCQkJCQl7CgkJCQkJCQkJJHRodW1ibmFpbHMgPSBhcnJheV92YWx1ZXMoU2ltcGxlUGllX01pc2M6OmFycmF5X3VuaXF1ZSgkdGh1bWJuYWlscykpOwoJCQkJCQkJfQoJCQkJCQl9CgkJCQkJCWVsc2VpZiAoaXNzZXQoJGdyb3VwWydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfTUVESUFSU1NdWyd0aHVtYm5haWwnXSkpCgkJCQkJCXsKCQkJCQkJCWZvcmVhY2ggKCRncm91cFsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX01FRElBUlNTXVsndGh1bWJuYWlsJ10gYXMgJHRodW1ibmFpbCkKCQkJCQkJCXsKCQkJCQkJCQkkdGh1bWJuYWlsc1tdID0gJHRoaXMtPnNhbml0aXplKCR0aHVtYm5haWxbJ2F0dHJpYnMnXVsnJ11bJ3VybCddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX0lSSSk7CgkJCQkJCQl9CgkJCQkJCQlpZiAoaXNfYXJyYXkoJHRodW1ibmFpbHMpKQoJCQkJCQkJewoJCQkJCQkJCSR0aHVtYm5haWxzID0gYXJyYXlfdmFsdWVzKFNpbXBsZVBpZV9NaXNjOjphcnJheV91bmlxdWUoJHRodW1ibmFpbHMpKTsKCQkJCQkJCX0KCQkJCQkJfQoJCQkJCQllbHNlCgkJCQkJCXsKCQkJCQkJCSR0aHVtYm5haWxzID0gJHRodW1ibmFpbHNfcGFyZW50OwoJCQkJCQl9CgoJCQkJCQkvLyBUSVRMRVMKCQkJCQkJaWYgKGlzc2V0KCRjb250ZW50WydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfTUVESUFSU1NdWyd0aXRsZSddKSkKCQkJCQkJewoJCQkJCQkJJHRpdGxlID0gJHRoaXMtPnNhbml0aXplKCRjb250ZW50WydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfTUVESUFSU1NdWyd0aXRsZSddWzBdWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCQkJCX0KCQkJCQkJZWxzZWlmIChpc3NldCgkZ3JvdXBbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9NRURJQVJTU11bJ3RpdGxlJ10pKQoJCQkJCQl7CgkJCQkJCQkkdGl0bGUgPSAkdGhpcy0+c2FuaXRpemUoJGdyb3VwWydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfTUVESUFSU1NdWyd0aXRsZSddWzBdWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCQkJCX0KCQkJCQkJZWxzZQoJCQkJCQl7CgkJCQkJCQkkdGl0bGUgPSAkdGl0bGVfcGFyZW50OwoJCQkJCQl9CgoJCQkJCQkkdGhpcy0+ZGF0YVsnZW5jbG9zdXJlcyddW10gPSYgbmV3ICR0aGlzLT5mZWVkLT5lbmNsb3N1cmVfY2xhc3MoJHVybCwgJHR5cGUsICRsZW5ndGgsICR0aGlzLT5mZWVkLT5qYXZhc2NyaXB0LCAkYml0cmF0ZSwgJGNhcHRpb25zLCAkY2F0ZWdvcmllcywgJGNoYW5uZWxzLCAkY29weXJpZ2h0cywgJGNyZWRpdHMsICRkZXNjcmlwdGlvbiwgJGR1cmF0aW9uLCAkZXhwcmVzc2lvbiwgJGZyYW1lcmF0ZSwgJGhhc2hlcywgJGhlaWdodCwgJGtleXdvcmRzLCAkbGFuZywgJG1lZGl1bSwgJHBsYXllciwgJHJhdGluZ3MsICRyZXN0cmljdGlvbnMsICRzYW1wbGluZ3JhdGUsICR0aHVtYm5haWxzLCAkdGl0bGUsICR3aWR0aCk7CgkJCQkJfQoJCQkJfQoJCQl9CgoJCQkvLyBJZiB3ZSBoYXZlIHN0YW5kYWxvbmUgbWVkaWE6Y29udGVudCB0YWdzLCBsb29wIHRocm91Z2ggdGhlbS4KCQkJaWYgKGlzc2V0KCR0aGlzLT5kYXRhWydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfTUVESUFSU1NdWydjb250ZW50J10pKQoJCQl7CgkJCQlmb3JlYWNoICgoYXJyYXkpICR0aGlzLT5kYXRhWydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfTUVESUFSU1NdWydjb250ZW50J10gYXMgJGNvbnRlbnQpCgkJCQl7CgkJCQkJaWYgKGlzc2V0KCRjb250ZW50WydhdHRyaWJzJ11bJyddWyd1cmwnXSkpCgkJCQkJewoJCQkJCQkvLyBBdHRyaWJ1dGVzCgkJCQkJCSRiaXRyYXRlID0gbnVsbDsKCQkJCQkJJGNoYW5uZWxzID0gbnVsbDsKCQkJCQkJJGR1cmF0aW9uID0gbnVsbDsKCQkJCQkJJGV4cHJlc3Npb24gPSBudWxsOwoJCQkJCQkkZnJhbWVyYXRlID0gbnVsbDsKCQkJCQkJJGhlaWdodCA9IG51bGw7CgkJCQkJCSRqYXZhc2NyaXB0ID0gbnVsbDsKCQkJCQkJJGxhbmcgPSBudWxsOwoJCQkJCQkkbGVuZ3RoID0gbnVsbDsKCQkJCQkJJG1lZGl1bSA9IG51bGw7CgkJCQkJCSRzYW1wbGluZ3JhdGUgPSBudWxsOwoJCQkJCQkkdHlwZSA9IG51bGw7CgkJCQkJCSR1cmwgPSBudWxsOwoJCQkJCQkkd2lkdGggPSBudWxsOwoKCQkJCQkJLy8gRWxlbWVudHMKCQkJCQkJJGNhcHRpb25zID0gbnVsbDsKCQkJCQkJJGNhdGVnb3JpZXMgPSBudWxsOwoJCQkJCQkkY29weXJpZ2h0cyA9IG51bGw7CgkJCQkJCSRjcmVkaXRzID0gbnVsbDsKCQkJCQkJJGRlc2NyaXB0aW9uID0gbnVsbDsKCQkJCQkJJGhhc2hlcyA9IG51bGw7CgkJCQkJCSRrZXl3b3JkcyA9IG51bGw7CgkJCQkJCSRwbGF5ZXIgPSBudWxsOwoJCQkJCQkkcmF0aW5ncyA9IG51bGw7CgkJCQkJCSRyZXN0cmljdGlvbnMgPSBudWxsOwoJCQkJCQkkdGh1bWJuYWlscyA9IG51bGw7CgkJCQkJCSR0aXRsZSA9IG51bGw7CgoJCQkJCQkvLyBTdGFydCBjaGVja2luZyB0aGUgYXR0cmlidXRlcyBvZiBtZWRpYTpjb250ZW50CgkJCQkJCWlmIChpc3NldCgkY29udGVudFsnYXR0cmlicyddWycnXVsnYml0cmF0ZSddKSkKCQkJCQkJewoJCQkJCQkJJGJpdHJhdGUgPSAkdGhpcy0+c2FuaXRpemUoJGNvbnRlbnRbJ2F0dHJpYnMnXVsnJ11bJ2JpdHJhdGUnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJCQkJfQoJCQkJCQlpZiAoaXNzZXQoJGNvbnRlbnRbJ2F0dHJpYnMnXVsnJ11bJ2NoYW5uZWxzJ10pKQoJCQkJCQl7CgkJCQkJCQkkY2hhbm5lbHMgPSAkdGhpcy0+c2FuaXRpemUoJGNvbnRlbnRbJ2F0dHJpYnMnXVsnJ11bJ2NoYW5uZWxzJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCQkJCX0KCQkJCQkJaWYgKGlzc2V0KCRjb250ZW50WydhdHRyaWJzJ11bJyddWydkdXJhdGlvbiddKSkKCQkJCQkJewoJCQkJCQkJJGR1cmF0aW9uID0gJHRoaXMtPnNhbml0aXplKCRjb250ZW50WydhdHRyaWJzJ11bJyddWydkdXJhdGlvbiddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCQkJCQl9CgkJCQkJCWVsc2UKCQkJCQkJewoJCQkJCQkJJGR1cmF0aW9uID0gJGR1cmF0aW9uX3BhcmVudDsKCQkJCQkJfQoJCQkJCQlpZiAoaXNzZXQoJGNvbnRlbnRbJ2F0dHJpYnMnXVsnJ11bJ2V4cHJlc3Npb24nXSkpCgkJCQkJCXsKCQkJCQkJCSRleHByZXNzaW9uID0gJHRoaXMtPnNhbml0aXplKCRjb250ZW50WydhdHRyaWJzJ11bJyddWydleHByZXNzaW9uJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCQkJCX0KCQkJCQkJaWYgKGlzc2V0KCRjb250ZW50WydhdHRyaWJzJ11bJyddWydmcmFtZXJhdGUnXSkpCgkJCQkJCXsKCQkJCQkJCSRmcmFtZXJhdGUgPSAkdGhpcy0+c2FuaXRpemUoJGNvbnRlbnRbJ2F0dHJpYnMnXVsnJ11bJ2ZyYW1lcmF0ZSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCQkJCQl9CgkJCQkJCWlmIChpc3NldCgkY29udGVudFsnYXR0cmlicyddWycnXVsnaGVpZ2h0J10pKQoJCQkJCQl7CgkJCQkJCQkkaGVpZ2h0ID0gJHRoaXMtPnNhbml0aXplKCRjb250ZW50WydhdHRyaWJzJ11bJyddWydoZWlnaHQnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJCQkJfQoJCQkJCQlpZiAoaXNzZXQoJGNvbnRlbnRbJ2F0dHJpYnMnXVsnJ11bJ2xhbmcnXSkpCgkJCQkJCXsKCQkJCQkJCSRsYW5nID0gJHRoaXMtPnNhbml0aXplKCRjb250ZW50WydhdHRyaWJzJ11bJyddWydsYW5nJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCQkJCX0KCQkJCQkJaWYgKGlzc2V0KCRjb250ZW50WydhdHRyaWJzJ11bJyddWydmaWxlU2l6ZSddKSkKCQkJCQkJewoJCQkJCQkJJGxlbmd0aCA9IGNlaWwoJGNvbnRlbnRbJ2F0dHJpYnMnXVsnJ11bJ2ZpbGVTaXplJ10pOwoJCQkJCQl9CgkJCQkJCWlmIChpc3NldCgkY29udGVudFsnYXR0cmlicyddWycnXVsnbWVkaXVtJ10pKQoJCQkJCQl7CgkJCQkJCQkkbWVkaXVtID0gJHRoaXMtPnNhbml0aXplKCRjb250ZW50WydhdHRyaWJzJ11bJyddWydtZWRpdW0nXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJCQkJfQoJCQkJCQlpZiAoaXNzZXQoJGNvbnRlbnRbJ2F0dHJpYnMnXVsnJ11bJ3NhbXBsaW5ncmF0ZSddKSkKCQkJCQkJewoJCQkJCQkJJHNhbXBsaW5ncmF0ZSA9ICR0aGlzLT5zYW5pdGl6ZSgkY29udGVudFsnYXR0cmlicyddWycnXVsnc2FtcGxpbmdyYXRlJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCQkJCX0KCQkJCQkJaWYgKGlzc2V0KCRjb250ZW50WydhdHRyaWJzJ11bJyddWyd0eXBlJ10pKQoJCQkJCQl7CgkJCQkJCQkkdHlwZSA9ICR0aGlzLT5zYW5pdGl6ZSgkY29udGVudFsnYXR0cmlicyddWycnXVsndHlwZSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCQkJCQl9CgkJCQkJCWlmIChpc3NldCgkY29udGVudFsnYXR0cmlicyddWycnXVsnd2lkdGgnXSkpCgkJCQkJCXsKCQkJCQkJCSR3aWR0aCA9ICR0aGlzLT5zYW5pdGl6ZSgkY29udGVudFsnYXR0cmlicyddWycnXVsnd2lkdGgnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJCQkJfQoJCQkJCQkkdXJsID0gJHRoaXMtPnNhbml0aXplKCRjb250ZW50WydhdHRyaWJzJ11bJyddWyd1cmwnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9JUkkpOwoKCQkJCQkJLy8gQ2hlY2tpbmcgdGhlIG90aGVyIG9wdGlvbmFsIG1lZGlhOiBlbGVtZW50cy4gUHJpb3JpdHk6IG1lZGlhOmNvbnRlbnQsIG1lZGlhOmdyb3VwLCBpdGVtLCBjaGFubmVsCgoJCQkJCQkvLyBDQVBUSU9OUwoJCQkJCQlpZiAoaXNzZXQoJGNvbnRlbnRbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9NRURJQVJTU11bJ3RleHQnXSkpCgkJCQkJCXsKCQkJCQkJCWZvcmVhY2ggKCRjb250ZW50WydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfTUVESUFSU1NdWyd0ZXh0J10gYXMgJGNhcHRpb24pCgkJCQkJCQl7CgkJCQkJCQkJJGNhcHRpb25fdHlwZSA9IG51bGw7CgkJCQkJCQkJJGNhcHRpb25fbGFuZyA9IG51bGw7CgkJCQkJCQkJJGNhcHRpb25fc3RhcnRUaW1lID0gbnVsbDsKCQkJCQkJCQkkY2FwdGlvbl9lbmRUaW1lID0gbnVsbDsKCQkJCQkJCQkkY2FwdGlvbl90ZXh0ID0gbnVsbDsKCQkJCQkJCQlpZiAoaXNzZXQoJGNhcHRpb25bJ2F0dHJpYnMnXVsnJ11bJ3R5cGUnXSkpCgkJCQkJCQkJewoJCQkJCQkJCQkkY2FwdGlvbl90eXBlID0gJHRoaXMtPnNhbml0aXplKCRjYXB0aW9uWydhdHRyaWJzJ11bJyddWyd0eXBlJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCQkJCQkJfQoJCQkJCQkJCWlmIChpc3NldCgkY2FwdGlvblsnYXR0cmlicyddWycnXVsnbGFuZyddKSkKCQkJCQkJCQl7CgkJCQkJCQkJCSRjYXB0aW9uX2xhbmcgPSAkdGhpcy0+c2FuaXRpemUoJGNhcHRpb25bJ2F0dHJpYnMnXVsnJ11bJ2xhbmcnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJCQkJCQl9CgkJCQkJCQkJaWYgKGlzc2V0KCRjYXB0aW9uWydhdHRyaWJzJ11bJyddWydzdGFydCddKSkKCQkJCQkJCQl7CgkJCQkJCQkJCSRjYXB0aW9uX3N0YXJ0VGltZSA9ICR0aGlzLT5zYW5pdGl6ZSgkY2FwdGlvblsnYXR0cmlicyddWycnXVsnc3RhcnQnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJCQkJCQl9CgkJCQkJCQkJaWYgKGlzc2V0KCRjYXB0aW9uWydhdHRyaWJzJ11bJyddWydlbmQnXSkpCgkJCQkJCQkJewoJCQkJCQkJCQkkY2FwdGlvbl9lbmRUaW1lID0gJHRoaXMtPnNhbml0aXplKCRjYXB0aW9uWydhdHRyaWJzJ11bJyddWydlbmQnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJCQkJCQl9CgkJCQkJCQkJaWYgKGlzc2V0KCRjYXB0aW9uWydkYXRhJ10pKQoJCQkJCQkJCXsKCQkJCQkJCQkJJGNhcHRpb25fdGV4dCA9ICR0aGlzLT5zYW5pdGl6ZSgkY2FwdGlvblsnZGF0YSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCQkJCQkJCX0KCQkJCQkJCQkkY2FwdGlvbnNbXSA9JiBuZXcgJHRoaXMtPmZlZWQtPmNhcHRpb25fY2xhc3MoJGNhcHRpb25fdHlwZSwgJGNhcHRpb25fbGFuZywgJGNhcHRpb25fc3RhcnRUaW1lLCAkY2FwdGlvbl9lbmRUaW1lLCAkY2FwdGlvbl90ZXh0KTsKCQkJCQkJCX0KCQkJCQkJCWlmIChpc19hcnJheSgkY2FwdGlvbnMpKQoJCQkJCQkJewoJCQkJCQkJCSRjYXB0aW9ucyA9IGFycmF5X3ZhbHVlcyhTaW1wbGVQaWVfTWlzYzo6YXJyYXlfdW5pcXVlKCRjYXB0aW9ucykpOwoJCQkJCQkJfQoJCQkJCQl9CgkJCQkJCWVsc2UKCQkJCQkJewoJCQkJCQkJJGNhcHRpb25zID0gJGNhcHRpb25zX3BhcmVudDsKCQkJCQkJfQoKCQkJCQkJLy8gQ0FURUdPUklFUwoJCQkJCQlpZiAoaXNzZXQoJGNvbnRlbnRbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9NRURJQVJTU11bJ2NhdGVnb3J5J10pKQoJCQkJCQl7CgkJCQkJCQlmb3JlYWNoICgoYXJyYXkpICRjb250ZW50WydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfTUVESUFSU1NdWydjYXRlZ29yeSddIGFzICRjYXRlZ29yeSkKCQkJCQkJCXsKCQkJCQkJCQkkdGVybSA9IG51bGw7CgkJCQkJCQkJJHNjaGVtZSA9IG51bGw7CgkJCQkJCQkJJGxhYmVsID0gbnVsbDsKCQkJCQkJCQlpZiAoaXNzZXQoJGNhdGVnb3J5WydkYXRhJ10pKQoJCQkJCQkJCXsKCQkJCQkJCQkJJHRlcm0gPSAkdGhpcy0+c2FuaXRpemUoJGNhdGVnb3J5WydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCQkJCQkJfQoJCQkJCQkJCWlmIChpc3NldCgkY2F0ZWdvcnlbJ2F0dHJpYnMnXVsnJ11bJ3NjaGVtZSddKSkKCQkJCQkJCQl7CgkJCQkJCQkJCSRzY2hlbWUgPSAkdGhpcy0+c2FuaXRpemUoJGNhdGVnb3J5WydhdHRyaWJzJ11bJyddWydzY2hlbWUnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJCQkJCQl9CgkJCQkJCQkJZWxzZQoJCQkJCQkJCXsKCQkJCQkJCQkJJHNjaGVtZSA9ICdodHRwOi8vc2VhcmNoLnlhaG9vLmNvbS9tcnNzL2NhdGVnb3J5X3NjaGVtYSc7CgkJCQkJCQkJfQoJCQkJCQkJCWlmIChpc3NldCgkY2F0ZWdvcnlbJ2F0dHJpYnMnXVsnJ11bJ2xhYmVsJ10pKQoJCQkJCQkJCXsKCQkJCQkJCQkJJGxhYmVsID0gJHRoaXMtPnNhbml0aXplKCRjYXRlZ29yeVsnYXR0cmlicyddWycnXVsnbGFiZWwnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJCQkJCQl9CgkJCQkJCQkJJGNhdGVnb3JpZXNbXSA9JiBuZXcgJHRoaXMtPmZlZWQtPmNhdGVnb3J5X2NsYXNzKCR0ZXJtLCAkc2NoZW1lLCAkbGFiZWwpOwoJCQkJCQkJfQoJCQkJCQl9CgkJCQkJCWlmIChpc19hcnJheSgkY2F0ZWdvcmllcykgJiYgaXNfYXJyYXkoJGNhdGVnb3JpZXNfcGFyZW50KSkKCQkJCQkJewoJCQkJCQkJJGNhdGVnb3JpZXMgPSBhcnJheV92YWx1ZXMoU2ltcGxlUGllX01pc2M6OmFycmF5X3VuaXF1ZShhcnJheV9tZXJnZSgkY2F0ZWdvcmllcywgJGNhdGVnb3JpZXNfcGFyZW50KSkpOwoJCQkJCQl9CgkJCQkJCWVsc2VpZiAoaXNfYXJyYXkoJGNhdGVnb3JpZXMpKQoJCQkJCQl7CgkJCQkJCQkkY2F0ZWdvcmllcyA9IGFycmF5X3ZhbHVlcyhTaW1wbGVQaWVfTWlzYzo6YXJyYXlfdW5pcXVlKCRjYXRlZ29yaWVzKSk7CgkJCQkJCX0KCQkJCQkJZWxzZWlmIChpc19hcnJheSgkY2F0ZWdvcmllc19wYXJlbnQpKQoJCQkJCQl7CgkJCQkJCQkkY2F0ZWdvcmllcyA9IGFycmF5X3ZhbHVlcyhTaW1wbGVQaWVfTWlzYzo6YXJyYXlfdW5pcXVlKCRjYXRlZ29yaWVzX3BhcmVudCkpOwoJCQkJCQl9CgkJCQkJCWVsc2UKCQkJCQkJewoJCQkJCQkJJGNhdGVnb3JpZXMgPSBudWxsOwoJCQkJCQl9CgoJCQkJCQkvLyBDT1BZUklHSFRTCgkJCQkJCWlmIChpc3NldCgkY29udGVudFsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX01FRElBUlNTXVsnY29weXJpZ2h0J10pKQoJCQkJCQl7CgkJCQkJCQkkY29weXJpZ2h0X3VybCA9IG51bGw7CgkJCQkJCQkkY29weXJpZ2h0X2xhYmVsID0gbnVsbDsKCQkJCQkJCWlmIChpc3NldCgkY29udGVudFsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX01FRElBUlNTXVsnY29weXJpZ2h0J11bMF1bJ2F0dHJpYnMnXVsnJ11bJ3VybCddKSkKCQkJCQkJCXsKCQkJCQkJCQkkY29weXJpZ2h0X3VybCA9ICR0aGlzLT5zYW5pdGl6ZSgkY29udGVudFsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX01FRElBUlNTXVsnY29weXJpZ2h0J11bMF1bJ2F0dHJpYnMnXVsnJ11bJ3VybCddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCQkJCQkJfQoJCQkJCQkJaWYgKGlzc2V0KCRjb250ZW50WydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfTUVESUFSU1NdWydjb3B5cmlnaHQnXVswXVsnZGF0YSddKSkKCQkJCQkJCXsKCQkJCQkJCQkkY29weXJpZ2h0X2xhYmVsID0gJHRoaXMtPnNhbml0aXplKCRjb250ZW50WydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfTUVESUFSU1NdWydjb3B5cmlnaHQnXVswXVsnZGF0YSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCQkJCQkJfQoJCQkJCQkJJGNvcHlyaWdodHMgPSYgbmV3ICR0aGlzLT5mZWVkLT5jb3B5cmlnaHRfY2xhc3MoJGNvcHlyaWdodF91cmwsICRjb3B5cmlnaHRfbGFiZWwpOwoJCQkJCQl9CgkJCQkJCWVsc2UKCQkJCQkJewoJCQkJCQkJJGNvcHlyaWdodHMgPSAkY29weXJpZ2h0c19wYXJlbnQ7CgkJCQkJCX0KCgkJCQkJCS8vIENSRURJVFMKCQkJCQkJaWYgKGlzc2V0KCRjb250ZW50WydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfTUVESUFSU1NdWydjcmVkaXQnXSkpCgkJCQkJCXsKCQkJCQkJCWZvcmVhY2ggKCRjb250ZW50WydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfTUVESUFSU1NdWydjcmVkaXQnXSBhcyAkY3JlZGl0KQoJCQkJCQkJewoJCQkJCQkJCSRjcmVkaXRfcm9sZSA9IG51bGw7CgkJCQkJCQkJJGNyZWRpdF9zY2hlbWUgPSBudWxsOwoJCQkJCQkJCSRjcmVkaXRfbmFtZSA9IG51bGw7CgkJCQkJCQkJaWYgKGlzc2V0KCRjcmVkaXRbJ2F0dHJpYnMnXVsnJ11bJ3JvbGUnXSkpCgkJCQkJCQkJewoJCQkJCQkJCQkkY3JlZGl0X3JvbGUgPSAkdGhpcy0+c2FuaXRpemUoJGNyZWRpdFsnYXR0cmlicyddWycnXVsncm9sZSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCQkJCQkJCX0KCQkJCQkJCQlpZiAoaXNzZXQoJGNyZWRpdFsnYXR0cmlicyddWycnXVsnc2NoZW1lJ10pKQoJCQkJCQkJCXsKCQkJCQkJCQkJJGNyZWRpdF9zY2hlbWUgPSAkdGhpcy0+c2FuaXRpemUoJGNyZWRpdFsnYXR0cmlicyddWycnXVsnc2NoZW1lJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCQkJCQkJfQoJCQkJCQkJCWVsc2UKCQkJCQkJCQl7CgkJCQkJCQkJCSRjcmVkaXRfc2NoZW1lID0gJ3VybjplYnUnOwoJCQkJCQkJCX0KCQkJCQkJCQlpZiAoaXNzZXQoJGNyZWRpdFsnZGF0YSddKSkKCQkJCQkJCQl7CgkJCQkJCQkJCSRjcmVkaXRfbmFtZSA9ICR0aGlzLT5zYW5pdGl6ZSgkY3JlZGl0WydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCQkJCQkJfQoJCQkJCQkJCSRjcmVkaXRzW10gPSYgbmV3ICR0aGlzLT5mZWVkLT5jcmVkaXRfY2xhc3MoJGNyZWRpdF9yb2xlLCAkY3JlZGl0X3NjaGVtZSwgJGNyZWRpdF9uYW1lKTsKCQkJCQkJCX0KCQkJCQkJCWlmIChpc19hcnJheSgkY3JlZGl0cykpCgkJCQkJCQl7CgkJCQkJCQkJJGNyZWRpdHMgPSBhcnJheV92YWx1ZXMoU2ltcGxlUGllX01pc2M6OmFycmF5X3VuaXF1ZSgkY3JlZGl0cykpOwoJCQkJCQkJfQoJCQkJCQl9CgkJCQkJCWVsc2UKCQkJCQkJewoJCQkJCQkJJGNyZWRpdHMgPSAkY3JlZGl0c19wYXJlbnQ7CgkJCQkJCX0KCgkJCQkJCS8vIERFU0NSSVBUSU9OCgkJCQkJCWlmIChpc3NldCgkY29udGVudFsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX01FRElBUlNTXVsnZGVzY3JpcHRpb24nXSkpCgkJCQkJCXsKCQkJCQkJCSRkZXNjcmlwdGlvbiA9ICR0aGlzLT5zYW5pdGl6ZSgkY29udGVudFsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX01FRElBUlNTXVsnZGVzY3JpcHRpb24nXVswXVsnZGF0YSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCQkJCQl9CgkJCQkJCWVsc2UKCQkJCQkJewoJCQkJCQkJJGRlc2NyaXB0aW9uID0gJGRlc2NyaXB0aW9uX3BhcmVudDsKCQkJCQkJfQoKCQkJCQkJLy8gSEFTSEVTCgkJCQkJCWlmIChpc3NldCgkY29udGVudFsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX01FRElBUlNTXVsnaGFzaCddKSkKCQkJCQkJewoJCQkJCQkJZm9yZWFjaCAoJGNvbnRlbnRbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9NRURJQVJTU11bJ2hhc2gnXSBhcyAkaGFzaCkKCQkJCQkJCXsKCQkJCQkJCQkkdmFsdWUgPSBudWxsOwoJCQkJCQkJCSRhbGdvID0gbnVsbDsKCQkJCQkJCQlpZiAoaXNzZXQoJGhhc2hbJ2RhdGEnXSkpCgkJCQkJCQkJewoJCQkJCQkJCQkkdmFsdWUgPSAkdGhpcy0+c2FuaXRpemUoJGhhc2hbJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJCQkJCQl9CgkJCQkJCQkJaWYgKGlzc2V0KCRoYXNoWydhdHRyaWJzJ11bJyddWydhbGdvJ10pKQoJCQkJCQkJCXsKCQkJCQkJCQkJJGFsZ28gPSAkdGhpcy0+c2FuaXRpemUoJGhhc2hbJ2F0dHJpYnMnXVsnJ11bJ2FsZ28nXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJCQkJCQl9CgkJCQkJCQkJZWxzZQoJCQkJCQkJCXsKCQkJCQkJCQkJJGFsZ28gPSAnbWQ1JzsKCQkJCQkJCQl9CgkJCQkJCQkJJGhhc2hlc1tdID0gJGFsZ28uJzonLiR2YWx1ZTsKCQkJCQkJCX0KCQkJCQkJCWlmIChpc19hcnJheSgkaGFzaGVzKSkKCQkJCQkJCXsKCQkJCQkJCQkkaGFzaGVzID0gYXJyYXlfdmFsdWVzKFNpbXBsZVBpZV9NaXNjOjphcnJheV91bmlxdWUoJGhhc2hlcykpOwoJCQkJCQkJfQoJCQkJCQl9CgkJCQkJCWVsc2UKCQkJCQkJewoJCQkJCQkJJGhhc2hlcyA9ICRoYXNoZXNfcGFyZW50OwoJCQkJCQl9CgoJCQkJCQkvLyBLRVlXT1JEUwoJCQkJCQlpZiAoaXNzZXQoJGNvbnRlbnRbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9NRURJQVJTU11bJ2tleXdvcmRzJ10pKQoJCQkJCQl7CgkJCQkJCQlpZiAoaXNzZXQoJGNvbnRlbnRbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9NRURJQVJTU11bJ2tleXdvcmRzJ11bMF1bJ2RhdGEnXSkpCgkJCQkJCQl7CgkJCQkJCQkJJHRlbXAgPSBleHBsb2RlKCcsJywgJHRoaXMtPnNhbml0aXplKCRjb250ZW50WydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfTUVESUFSU1NdWydrZXl3b3JkcyddWzBdWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCkpOwoJCQkJCQkJCWZvcmVhY2ggKCR0ZW1wIGFzICR3b3JkKQoJCQkJCQkJCXsKCQkJCQkJCQkJJGtleXdvcmRzW10gPSB0cmltKCR3b3JkKTsKCQkJCQkJCQl9CgkJCQkJCQkJdW5zZXQoJHRlbXApOwoJCQkJCQkJfQoJCQkJCQkJaWYgKGlzX2FycmF5KCRrZXl3b3JkcykpCgkJCQkJCQl7CgkJCQkJCQkJJGtleXdvcmRzID0gYXJyYXlfdmFsdWVzKFNpbXBsZVBpZV9NaXNjOjphcnJheV91bmlxdWUoJGtleXdvcmRzKSk7CgkJCQkJCQl9CgkJCQkJCX0KCQkJCQkJZWxzZQoJCQkJCQl7CgkJCQkJCQkka2V5d29yZHMgPSAka2V5d29yZHNfcGFyZW50OwoJCQkJCQl9CgoJCQkJCQkvLyBQTEFZRVIKCQkJCQkJaWYgKGlzc2V0KCRjb250ZW50WydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfTUVESUFSU1NdWydwbGF5ZXInXSkpCgkJCQkJCXsKCQkJCQkJCSRwbGF5ZXIgPSAkdGhpcy0+c2FuaXRpemUoJGNvbnRlbnRbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9NRURJQVJTU11bJ3BsYXllciddWzBdWydhdHRyaWJzJ11bJyddWyd1cmwnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9JUkkpOwoJCQkJCQl9CgkJCQkJCWVsc2UKCQkJCQkJewoJCQkJCQkJJHBsYXllciA9ICRwbGF5ZXJfcGFyZW50OwoJCQkJCQl9CgoJCQkJCQkvLyBSQVRJTkdTCgkJCQkJCWlmIChpc3NldCgkY29udGVudFsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX01FRElBUlNTXVsncmF0aW5nJ10pKQoJCQkJCQl7CgkJCQkJCQlmb3JlYWNoICgkY29udGVudFsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX01FRElBUlNTXVsncmF0aW5nJ10gYXMgJHJhdGluZykKCQkJCQkJCXsKCQkJCQkJCQkkcmF0aW5nX3NjaGVtZSA9IG51bGw7CgkJCQkJCQkJJHJhdGluZ192YWx1ZSA9IG51bGw7CgkJCQkJCQkJaWYgKGlzc2V0KCRyYXRpbmdbJ2F0dHJpYnMnXVsnJ11bJ3NjaGVtZSddKSkKCQkJCQkJCQl7CgkJCQkJCQkJCSRyYXRpbmdfc2NoZW1lID0gJHRoaXMtPnNhbml0aXplKCRyYXRpbmdbJ2F0dHJpYnMnXVsnJ11bJ3NjaGVtZSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCQkJCQkJCX0KCQkJCQkJCQllbHNlCgkJCQkJCQkJewoJCQkJCQkJCQkkcmF0aW5nX3NjaGVtZSA9ICd1cm46c2ltcGxlJzsKCQkJCQkJCQl9CgkJCQkJCQkJaWYgKGlzc2V0KCRyYXRpbmdbJ2RhdGEnXSkpCgkJCQkJCQkJewoJCQkJCQkJCQkkcmF0aW5nX3ZhbHVlID0gJHRoaXMtPnNhbml0aXplKCRyYXRpbmdbJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJCQkJCQl9CgkJCQkJCQkJJHJhdGluZ3NbXSA9JiBuZXcgJHRoaXMtPmZlZWQtPnJhdGluZ19jbGFzcygkcmF0aW5nX3NjaGVtZSwgJHJhdGluZ192YWx1ZSk7CgkJCQkJCQl9CgkJCQkJCQlpZiAoaXNfYXJyYXkoJHJhdGluZ3MpKQoJCQkJCQkJewoJCQkJCQkJCSRyYXRpbmdzID0gYXJyYXlfdmFsdWVzKFNpbXBsZVBpZV9NaXNjOjphcnJheV91bmlxdWUoJHJhdGluZ3MpKTsKCQkJCQkJCX0KCQkJCQkJfQoJCQkJCQllbHNlCgkJCQkJCXsKCQkJCQkJCSRyYXRpbmdzID0gJHJhdGluZ3NfcGFyZW50OwoJCQkJCQl9CgoJCQkJCQkvLyBSRVNUUklDVElPTlMKCQkJCQkJaWYgKGlzc2V0KCRjb250ZW50WydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfTUVESUFSU1NdWydyZXN0cmljdGlvbiddKSkKCQkJCQkJewoJCQkJCQkJZm9yZWFjaCAoJGNvbnRlbnRbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9NRURJQVJTU11bJ3Jlc3RyaWN0aW9uJ10gYXMgJHJlc3RyaWN0aW9uKQoJCQkJCQkJewoJCQkJCQkJCSRyZXN0cmljdGlvbl9yZWxhdGlvbnNoaXAgPSBudWxsOwoJCQkJCQkJCSRyZXN0cmljdGlvbl90eXBlID0gbnVsbDsKCQkJCQkJCQkkcmVzdHJpY3Rpb25fdmFsdWUgPSBudWxsOwoJCQkJCQkJCWlmIChpc3NldCgkcmVzdHJpY3Rpb25bJ2F0dHJpYnMnXVsnJ11bJ3JlbGF0aW9uc2hpcCddKSkKCQkJCQkJCQl7CgkJCQkJCQkJCSRyZXN0cmljdGlvbl9yZWxhdGlvbnNoaXAgPSAkdGhpcy0+c2FuaXRpemUoJHJlc3RyaWN0aW9uWydhdHRyaWJzJ11bJyddWydyZWxhdGlvbnNoaXAnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJCQkJCQl9CgkJCQkJCQkJaWYgKGlzc2V0KCRyZXN0cmljdGlvblsnYXR0cmlicyddWycnXVsndHlwZSddKSkKCQkJCQkJCQl7CgkJCQkJCQkJCSRyZXN0cmljdGlvbl90eXBlID0gJHRoaXMtPnNhbml0aXplKCRyZXN0cmljdGlvblsnYXR0cmlicyddWycnXVsndHlwZSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCQkJCQkJCX0KCQkJCQkJCQlpZiAoaXNzZXQoJHJlc3RyaWN0aW9uWydkYXRhJ10pKQoJCQkJCQkJCXsKCQkJCQkJCQkJJHJlc3RyaWN0aW9uX3ZhbHVlID0gJHRoaXMtPnNhbml0aXplKCRyZXN0cmljdGlvblsnZGF0YSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCQkJCQkJCX0KCQkJCQkJCQkkcmVzdHJpY3Rpb25zW10gPSYgbmV3ICR0aGlzLT5mZWVkLT5yZXN0cmljdGlvbl9jbGFzcygkcmVzdHJpY3Rpb25fcmVsYXRpb25zaGlwLCAkcmVzdHJpY3Rpb25fdHlwZSwgJHJlc3RyaWN0aW9uX3ZhbHVlKTsKCQkJCQkJCX0KCQkJCQkJCWlmIChpc19hcnJheSgkcmVzdHJpY3Rpb25zKSkKCQkJCQkJCXsKCQkJCQkJCQkkcmVzdHJpY3Rpb25zID0gYXJyYXlfdmFsdWVzKFNpbXBsZVBpZV9NaXNjOjphcnJheV91bmlxdWUoJHJlc3RyaWN0aW9ucykpOwoJCQkJCQkJfQoJCQkJCQl9CgkJCQkJCWVsc2UKCQkJCQkJewoJCQkJCQkJJHJlc3RyaWN0aW9ucyA9ICRyZXN0cmljdGlvbnNfcGFyZW50OwoJCQkJCQl9CgoJCQkJCQkvLyBUSFVNQk5BSUxTCgkJCQkJCWlmIChpc3NldCgkY29udGVudFsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX01FRElBUlNTXVsndGh1bWJuYWlsJ10pKQoJCQkJCQl7CgkJCQkJCQlmb3JlYWNoICgkY29udGVudFsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX01FRElBUlNTXVsndGh1bWJuYWlsJ10gYXMgJHRodW1ibmFpbCkKCQkJCQkJCXsKCQkJCQkJCQkkdGh1bWJuYWlsc1tdID0gJHRoaXMtPnNhbml0aXplKCR0aHVtYm5haWxbJ2F0dHJpYnMnXVsnJ11bJ3VybCddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX0lSSSk7CgkJCQkJCQl9CgkJCQkJCQlpZiAoaXNfYXJyYXkoJHRodW1ibmFpbHMpKQoJCQkJCQkJewoJCQkJCQkJCSR0aHVtYm5haWxzID0gYXJyYXlfdmFsdWVzKFNpbXBsZVBpZV9NaXNjOjphcnJheV91bmlxdWUoJHRodW1ibmFpbHMpKTsKCQkJCQkJCX0KCQkJCQkJfQoJCQkJCQllbHNlCgkJCQkJCXsKCQkJCQkJCSR0aHVtYm5haWxzID0gJHRodW1ibmFpbHNfcGFyZW50OwoJCQkJCQl9CgoJCQkJCQkvLyBUSVRMRVMKCQkJCQkJaWYgKGlzc2V0KCRjb250ZW50WydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfTUVESUFSU1NdWyd0aXRsZSddKSkKCQkJCQkJewoJCQkJCQkJJHRpdGxlID0gJHRoaXMtPnNhbml0aXplKCRjb250ZW50WydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfTUVESUFSU1NdWyd0aXRsZSddWzBdWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCQkJCX0KCQkJCQkJZWxzZQoJCQkJCQl7CgkJCQkJCQkkdGl0bGUgPSAkdGl0bGVfcGFyZW50OwoJCQkJCQl9CgoJCQkJCQkkdGhpcy0+ZGF0YVsnZW5jbG9zdXJlcyddW10gPSYgbmV3ICR0aGlzLT5mZWVkLT5lbmNsb3N1cmVfY2xhc3MoJHVybCwgJHR5cGUsICRsZW5ndGgsICR0aGlzLT5mZWVkLT5qYXZhc2NyaXB0LCAkYml0cmF0ZSwgJGNhcHRpb25zLCAkY2F0ZWdvcmllcywgJGNoYW5uZWxzLCAkY29weXJpZ2h0cywgJGNyZWRpdHMsICRkZXNjcmlwdGlvbiwgJGR1cmF0aW9uLCAkZXhwcmVzc2lvbiwgJGZyYW1lcmF0ZSwgJGhhc2hlcywgJGhlaWdodCwgJGtleXdvcmRzLCAkbGFuZywgJG1lZGl1bSwgJHBsYXllciwgJHJhdGluZ3MsICRyZXN0cmljdGlvbnMsICRzYW1wbGluZ3JhdGUsICR0aHVtYm5haWxzLCAkdGl0bGUsICR3aWR0aCk7CgkJCQkJfQoJCQkJfQoJCQl9CgoJCQlmb3JlYWNoICgoYXJyYXkpICR0aGlzLT5nZXRfaXRlbV90YWdzKFNJTVBMRVBJRV9OQU1FU1BBQ0VfQVRPTV8xMCwgJ2xpbmsnKSBhcyAkbGluaykKCQkJewoJCQkJaWYgKGlzc2V0KCRsaW5rWydhdHRyaWJzJ11bJyddWydocmVmJ10pICYmICFlbXB0eSgkbGlua1snYXR0cmlicyddWycnXVsncmVsJ10pICYmICRsaW5rWydhdHRyaWJzJ11bJyddWydyZWwnXSA9PSAnZW5jbG9zdXJlJykKCQkJCXsKCQkJCQkvLyBBdHRyaWJ1dGVzCgkJCQkJJGJpdHJhdGUgPSBudWxsOwoJCQkJCSRjaGFubmVscyA9IG51bGw7CgkJCQkJJGR1cmF0aW9uID0gbnVsbDsKCQkJCQkkZXhwcmVzc2lvbiA9IG51bGw7CgkJCQkJJGZyYW1lcmF0ZSA9IG51bGw7CgkJCQkJJGhlaWdodCA9IG51bGw7CgkJCQkJJGphdmFzY3JpcHQgPSBudWxsOwoJCQkJCSRsYW5nID0gbnVsbDsKCQkJCQkkbGVuZ3RoID0gbnVsbDsKCQkJCQkkbWVkaXVtID0gbnVsbDsKCQkJCQkkc2FtcGxpbmdyYXRlID0gbnVsbDsKCQkJCQkkdHlwZSA9IG51bGw7CgkJCQkJJHVybCA9IG51bGw7CgkJCQkJJHdpZHRoID0gbnVsbDsKCgkJCQkJJHVybCA9ICR0aGlzLT5zYW5pdGl6ZSgkbGlua1snYXR0cmlicyddWycnXVsnaHJlZiddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX0lSSSwgJHRoaXMtPmdldF9iYXNlKCRsaW5rKSk7CgkJCQkJaWYgKGlzc2V0KCRsaW5rWydhdHRyaWJzJ11bJyddWyd0eXBlJ10pKQoJCQkJCXsKCQkJCQkJJHR5cGUgPSAkdGhpcy0+c2FuaXRpemUoJGxpbmtbJ2F0dHJpYnMnXVsnJ11bJ3R5cGUnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJCQl9CgkJCQkJaWYgKGlzc2V0KCRsaW5rWydhdHRyaWJzJ11bJyddWydsZW5ndGgnXSkpCgkJCQkJewoJCQkJCQkkbGVuZ3RoID0gY2VpbCgkbGlua1snYXR0cmlicyddWycnXVsnbGVuZ3RoJ10pOwoJCQkJCX0KCgkJCQkJLy8gU2luY2Ugd2UgZG9uJ3QgaGF2ZSBncm91cCBvciBjb250ZW50IGZvciB0aGVzZSwgd2UnbGwganVzdCBwYXNzIHRoZSAnKl9wYXJlbnQnIHZhcmlhYmxlcyBkaXJlY3RseSB0byB0aGUgY29uc3RydWN0b3IKCQkJCQkkdGhpcy0+ZGF0YVsnZW5jbG9zdXJlcyddW10gPSYgbmV3ICR0aGlzLT5mZWVkLT5lbmNsb3N1cmVfY2xhc3MoJHVybCwgJHR5cGUsICRsZW5ndGgsICR0aGlzLT5mZWVkLT5qYXZhc2NyaXB0LCAkYml0cmF0ZSwgJGNhcHRpb25zX3BhcmVudCwgJGNhdGVnb3JpZXNfcGFyZW50LCAkY2hhbm5lbHMsICRjb3B5cmlnaHRzX3BhcmVudCwgJGNyZWRpdHNfcGFyZW50LCAkZGVzY3JpcHRpb25fcGFyZW50LCAkZHVyYXRpb25fcGFyZW50LCAkZXhwcmVzc2lvbiwgJGZyYW1lcmF0ZSwgJGhhc2hlc19wYXJlbnQsICRoZWlnaHQsICRrZXl3b3Jkc19wYXJlbnQsICRsYW5nLCAkbWVkaXVtLCAkcGxheWVyX3BhcmVudCwgJHJhdGluZ3NfcGFyZW50LCAkcmVzdHJpY3Rpb25zX3BhcmVudCwgJHNhbXBsaW5ncmF0ZSwgJHRodW1ibmFpbHNfcGFyZW50LCAkdGl0bGVfcGFyZW50LCAkd2lkdGgpOwoJCQkJfQoJCQl9CgoJCQlmb3JlYWNoICgoYXJyYXkpICR0aGlzLT5nZXRfaXRlbV90YWdzKFNJTVBMRVBJRV9OQU1FU1BBQ0VfQVRPTV8wMywgJ2xpbmsnKSBhcyAkbGluaykKCQkJewoJCQkJaWYgKGlzc2V0KCRsaW5rWydhdHRyaWJzJ11bJyddWydocmVmJ10pICYmICFlbXB0eSgkbGlua1snYXR0cmlicyddWycnXVsncmVsJ10pICYmICRsaW5rWydhdHRyaWJzJ11bJyddWydyZWwnXSA9PSAnZW5jbG9zdXJlJykKCQkJCXsKCQkJCQkvLyBBdHRyaWJ1dGVzCgkJCQkJJGJpdHJhdGUgPSBudWxsOwoJCQkJCSRjaGFubmVscyA9IG51bGw7CgkJCQkJJGR1cmF0aW9uID0gbnVsbDsKCQkJCQkkZXhwcmVzc2lvbiA9IG51bGw7CgkJCQkJJGZyYW1lcmF0ZSA9IG51bGw7CgkJCQkJJGhlaWdodCA9IG51bGw7CgkJCQkJJGphdmFzY3JpcHQgPSBudWxsOwoJCQkJCSRsYW5nID0gbnVsbDsKCQkJCQkkbGVuZ3RoID0gbnVsbDsKCQkJCQkkbWVkaXVtID0gbnVsbDsKCQkJCQkkc2FtcGxpbmdyYXRlID0gbnVsbDsKCQkJCQkkdHlwZSA9IG51bGw7CgkJCQkJJHVybCA9IG51bGw7CgkJCQkJJHdpZHRoID0gbnVsbDsKCgkJCQkJJHVybCA9ICR0aGlzLT5zYW5pdGl6ZSgkbGlua1snYXR0cmlicyddWycnXVsnaHJlZiddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX0lSSSwgJHRoaXMtPmdldF9iYXNlKCRsaW5rKSk7CgkJCQkJaWYgKGlzc2V0KCRsaW5rWydhdHRyaWJzJ11bJyddWyd0eXBlJ10pKQoJCQkJCXsKCQkJCQkJJHR5cGUgPSAkdGhpcy0+c2FuaXRpemUoJGxpbmtbJ2F0dHJpYnMnXVsnJ11bJ3R5cGUnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJCQl9CgkJCQkJaWYgKGlzc2V0KCRsaW5rWydhdHRyaWJzJ11bJyddWydsZW5ndGgnXSkpCgkJCQkJewoJCQkJCQkkbGVuZ3RoID0gY2VpbCgkbGlua1snYXR0cmlicyddWycnXVsnbGVuZ3RoJ10pOwoJCQkJCX0KCgkJCQkJLy8gU2luY2Ugd2UgZG9uJ3QgaGF2ZSBncm91cCBvciBjb250ZW50IGZvciB0aGVzZSwgd2UnbGwganVzdCBwYXNzIHRoZSAnKl9wYXJlbnQnIHZhcmlhYmxlcyBkaXJlY3RseSB0byB0aGUgY29uc3RydWN0b3IKCQkJCQkkdGhpcy0+ZGF0YVsnZW5jbG9zdXJlcyddW10gPSYgbmV3ICR0aGlzLT5mZWVkLT5lbmNsb3N1cmVfY2xhc3MoJHVybCwgJHR5cGUsICRsZW5ndGgsICR0aGlzLT5mZWVkLT5qYXZhc2NyaXB0LCAkYml0cmF0ZSwgJGNhcHRpb25zX3BhcmVudCwgJGNhdGVnb3JpZXNfcGFyZW50LCAkY2hhbm5lbHMsICRjb3B5cmlnaHRzX3BhcmVudCwgJGNyZWRpdHNfcGFyZW50LCAkZGVzY3JpcHRpb25fcGFyZW50LCAkZHVyYXRpb25fcGFyZW50LCAkZXhwcmVzc2lvbiwgJGZyYW1lcmF0ZSwgJGhhc2hlc19wYXJlbnQsICRoZWlnaHQsICRrZXl3b3Jkc19wYXJlbnQsICRsYW5nLCAkbWVkaXVtLCAkcGxheWVyX3BhcmVudCwgJHJhdGluZ3NfcGFyZW50LCAkcmVzdHJpY3Rpb25zX3BhcmVudCwgJHNhbXBsaW5ncmF0ZSwgJHRodW1ibmFpbHNfcGFyZW50LCAkdGl0bGVfcGFyZW50LCAkd2lkdGgpOwoJCQkJfQoJCQl9CgoJCQlpZiAoJGVuY2xvc3VyZSA9ICR0aGlzLT5nZXRfaXRlbV90YWdzKCcnLCAnZW5jbG9zdXJlJykpCgkJCXsKCQkJCWlmIChpc3NldCgkZW5jbG9zdXJlWzBdWydhdHRyaWJzJ11bJyddWyd1cmwnXSkpCgkJCQl7CgkJCQkJLy8gQXR0cmlidXRlcwoJCQkJCSRiaXRyYXRlID0gbnVsbDsKCQkJCQkkY2hhbm5lbHMgPSBudWxsOwoJCQkJCSRkdXJhdGlvbiA9IG51bGw7CgkJCQkJJGV4cHJlc3Npb24gPSBudWxsOwoJCQkJCSRmcmFtZXJhdGUgPSBudWxsOwoJCQkJCSRoZWlnaHQgPSBudWxsOwoJCQkJCSRqYXZhc2NyaXB0ID0gbnVsbDsKCQkJCQkkbGFuZyA9IG51bGw7CgkJCQkJJGxlbmd0aCA9IG51bGw7CgkJCQkJJG1lZGl1bSA9IG51bGw7CgkJCQkJJHNhbXBsaW5ncmF0ZSA9IG51bGw7CgkJCQkJJHR5cGUgPSBudWxsOwoJCQkJCSR1cmwgPSBudWxsOwoJCQkJCSR3aWR0aCA9IG51bGw7CgoJCQkJCSR1cmwgPSAkdGhpcy0+c2FuaXRpemUoJGVuY2xvc3VyZVswXVsnYXR0cmlicyddWycnXVsndXJsJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfSVJJLCAkdGhpcy0+Z2V0X2Jhc2UoJGVuY2xvc3VyZVswXSkpOwoJCQkJCWlmIChpc3NldCgkZW5jbG9zdXJlWzBdWydhdHRyaWJzJ11bJyddWyd0eXBlJ10pKQoJCQkJCXsKCQkJCQkJJHR5cGUgPSAkdGhpcy0+c2FuaXRpemUoJGVuY2xvc3VyZVswXVsnYXR0cmlicyddWycnXVsndHlwZSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCQkJCX0KCQkJCQlpZiAoaXNzZXQoJGVuY2xvc3VyZVswXVsnYXR0cmlicyddWycnXVsnbGVuZ3RoJ10pKQoJCQkJCXsKCQkJCQkJJGxlbmd0aCA9IGNlaWwoJGVuY2xvc3VyZVswXVsnYXR0cmlicyddWycnXVsnbGVuZ3RoJ10pOwoJCQkJCX0KCgkJCQkJLy8gU2luY2Ugd2UgZG9uJ3QgaGF2ZSBncm91cCBvciBjb250ZW50IGZvciB0aGVzZSwgd2UnbGwganVzdCBwYXNzIHRoZSAnKl9wYXJlbnQnIHZhcmlhYmxlcyBkaXJlY3RseSB0byB0aGUgY29uc3RydWN0b3IKCQkJCQkkdGhpcy0+ZGF0YVsnZW5jbG9zdXJlcyddW10gPSYgbmV3ICR0aGlzLT5mZWVkLT5lbmNsb3N1cmVfY2xhc3MoJHVybCwgJHR5cGUsICRsZW5ndGgsICR0aGlzLT5mZWVkLT5qYXZhc2NyaXB0LCAkYml0cmF0ZSwgJGNhcHRpb25zX3BhcmVudCwgJGNhdGVnb3JpZXNfcGFyZW50LCAkY2hhbm5lbHMsICRjb3B5cmlnaHRzX3BhcmVudCwgJGNyZWRpdHNfcGFyZW50LCAkZGVzY3JpcHRpb25fcGFyZW50LCAkZHVyYXRpb25fcGFyZW50LCAkZXhwcmVzc2lvbiwgJGZyYW1lcmF0ZSwgJGhhc2hlc19wYXJlbnQsICRoZWlnaHQsICRrZXl3b3Jkc19wYXJlbnQsICRsYW5nLCAkbWVkaXVtLCAkcGxheWVyX3BhcmVudCwgJHJhdGluZ3NfcGFyZW50LCAkcmVzdHJpY3Rpb25zX3BhcmVudCwgJHNhbXBsaW5ncmF0ZSwgJHRodW1ibmFpbHNfcGFyZW50LCAkdGl0bGVfcGFyZW50LCAkd2lkdGgpOwoJCQkJfQoJCQl9CgoJCQlpZiAoc2l6ZW9mKCR0aGlzLT5kYXRhWydlbmNsb3N1cmVzJ10pID09IDAgJiYgKCR1cmwgfHwgJHR5cGUgfHwgJGxlbmd0aCB8fCAkYml0cmF0ZSB8fCAkY2FwdGlvbnNfcGFyZW50IHx8ICRjYXRlZ29yaWVzX3BhcmVudCB8fCAkY2hhbm5lbHMgfHwgJGNvcHlyaWdodHNfcGFyZW50IHx8ICRjcmVkaXRzX3BhcmVudCB8fCAkZGVzY3JpcHRpb25fcGFyZW50IHx8ICRkdXJhdGlvbl9wYXJlbnQgfHwgJGV4cHJlc3Npb24gfHwgJGZyYW1lcmF0ZSB8fCAkaGFzaGVzX3BhcmVudCB8fCAkaGVpZ2h0IHx8ICRrZXl3b3Jkc19wYXJlbnQgfHwgJGxhbmcgfHwgJG1lZGl1bSB8fCAkcGxheWVyX3BhcmVudCB8fCAkcmF0aW5nc19wYXJlbnQgfHwgJHJlc3RyaWN0aW9uc19wYXJlbnQgfHwgJHNhbXBsaW5ncmF0ZSB8fCAkdGh1bWJuYWlsc19wYXJlbnQgfHwgJHRpdGxlX3BhcmVudCB8fCAkd2lkdGgpKQoJCQl7CgkJCQkvLyBTaW5jZSB3ZSBkb24ndCBoYXZlIGdyb3VwIG9yIGNvbnRlbnQgZm9yIHRoZXNlLCB3ZSdsbCBqdXN0IHBhc3MgdGhlICcqX3BhcmVudCcgdmFyaWFibGVzIGRpcmVjdGx5IHRvIHRoZSBjb25zdHJ1Y3RvcgoJCQkJJHRoaXMtPmRhdGFbJ2VuY2xvc3VyZXMnXVtdID0mIG5ldyAkdGhpcy0+ZmVlZC0+ZW5jbG9zdXJlX2NsYXNzKCR1cmwsICR0eXBlLCAkbGVuZ3RoLCAkdGhpcy0+ZmVlZC0+amF2YXNjcmlwdCwgJGJpdHJhdGUsICRjYXB0aW9uc19wYXJlbnQsICRjYXRlZ29yaWVzX3BhcmVudCwgJGNoYW5uZWxzLCAkY29weXJpZ2h0c19wYXJlbnQsICRjcmVkaXRzX3BhcmVudCwgJGRlc2NyaXB0aW9uX3BhcmVudCwgJGR1cmF0aW9uX3BhcmVudCwgJGV4cHJlc3Npb24sICRmcmFtZXJhdGUsICRoYXNoZXNfcGFyZW50LCAkaGVpZ2h0LCAka2V5d29yZHNfcGFyZW50LCAkbGFuZywgJG1lZGl1bSwgJHBsYXllcl9wYXJlbnQsICRyYXRpbmdzX3BhcmVudCwgJHJlc3RyaWN0aW9uc19wYXJlbnQsICRzYW1wbGluZ3JhdGUsICR0aHVtYm5haWxzX3BhcmVudCwgJHRpdGxlX3BhcmVudCwgJHdpZHRoKTsKCQkJfQoKCQkJJHRoaXMtPmRhdGFbJ2VuY2xvc3VyZXMnXSA9IGFycmF5X3ZhbHVlcyhTaW1wbGVQaWVfTWlzYzo6YXJyYXlfdW5pcXVlKCR0aGlzLT5kYXRhWydlbmNsb3N1cmVzJ10pKTsKCQl9CgkJaWYgKCFlbXB0eSgkdGhpcy0+ZGF0YVsnZW5jbG9zdXJlcyddKSkKCQl7CgkJCXJldHVybiAkdGhpcy0+ZGF0YVsnZW5jbG9zdXJlcyddOwoJCX0KCQllbHNlCgkJewoJCQlyZXR1cm4gbnVsbDsKCQl9Cgl9CgoJZnVuY3Rpb24gZ2V0X2xhdGl0dWRlKCkKCXsKCQlpZiAoJHJldHVybiA9ICR0aGlzLT5nZXRfaXRlbV90YWdzKFNJTVBMRVBJRV9OQU1FU1BBQ0VfVzNDX0JBU0lDX0dFTywgJ2xhdCcpKQoJCXsKCQkJcmV0dXJuIChmbG9hdCkgJHJldHVyblswXVsnZGF0YSddOwoJCX0KCQllbHNlaWYgKCgkcmV0dXJuID0gJHRoaXMtPmdldF9pdGVtX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9HRU9SU1MsICdwb2ludCcpKSAmJiBwcmVnX21hdGNoKCcvXigoPzotKT9bMC05XSsoPzpcLlswLTldKykpICgoPzotKT9bMC05XSsoPzpcLlswLTldKykpJC8nLCAkcmV0dXJuWzBdWydkYXRhJ10sICRtYXRjaCkpCgkJewoJCQlyZXR1cm4gKGZsb2F0KSAkbWF0Y2hbMV07CgkJfQoJCWVsc2UKCQl7CgkJCXJldHVybiBudWxsOwoJCX0KCX0KCglmdW5jdGlvbiBnZXRfbG9uZ2l0dWRlKCkKCXsKCQlpZiAoJHJldHVybiA9ICR0aGlzLT5nZXRfaXRlbV90YWdzKFNJTVBMRVBJRV9OQU1FU1BBQ0VfVzNDX0JBU0lDX0dFTywgJ2xvbmcnKSkKCQl7CgkJCXJldHVybiAoZmxvYXQpICRyZXR1cm5bMF1bJ2RhdGEnXTsKCQl9CgkJZWxzZWlmICgkcmV0dXJuID0gJHRoaXMtPmdldF9pdGVtX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9XM0NfQkFTSUNfR0VPLCAnbG9uJykpCgkJewoJCQlyZXR1cm4gKGZsb2F0KSAkcmV0dXJuWzBdWydkYXRhJ107CgkJfQoJCWVsc2VpZiAoKCRyZXR1cm4gPSAkdGhpcy0+Z2V0X2l0ZW1fdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX0dFT1JTUywgJ3BvaW50JykpICYmIHByZWdfbWF0Y2goJy9eKCg/Oi0pP1swLTldKyg/OlwuWzAtOV0rKSkgKCg/Oi0pP1swLTldKyg/OlwuWzAtOV0rKSkkLycsICRyZXR1cm5bMF1bJ2RhdGEnXSwgJG1hdGNoKSkKCQl7CgkJCXJldHVybiAoZmxvYXQpICRtYXRjaFsyXTsKCQl9CgkJZWxzZQoJCXsKCQkJcmV0dXJuIG51bGw7CgkJfQoJfQoKCWZ1bmN0aW9uIGdldF9zb3VyY2UoKQoJewoJCWlmICgkcmV0dXJuID0gJHRoaXMtPmdldF9pdGVtX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9BVE9NXzEwLCAnc291cmNlJykpCgkJewoJCQlyZXR1cm4gbmV3ICR0aGlzLT5mZWVkLT5zb3VyY2VfY2xhc3MoJHRoaXMsICRyZXR1cm5bMF0pOwoJCX0KCQllbHNlCgkJewoJCQlyZXR1cm4gbnVsbDsKCQl9Cgl9CgoJLyoqCgkgKiBDcmVhdGVzIHRoZSBhZGRfdG9fKiBtZXRob2RzJyByZXR1cm4gZGF0YQoJICoKCSAqIEBhY2Nlc3MgcHJpdmF0ZQoJICogQHBhcmFtIHN0cmluZyAkaXRlbV91cmwgU3RyaW5nIHRvIHByZWZpeCB0byB0aGUgaXRlbSBwZXJtYWxpbmsKCSAqIEBwYXJhbSBzdHJpbmcgJHRpdGxlX3VybCBTdHJpbmcgdG8gcHJlZml4IHRvIHRoZSBpdGVtIHRpdGxlCgkgKiAoYW5kIHN1ZmZpeCB0byB0aGUgaXRlbSBwZXJtYWxpbmspCgkgKiBAcmV0dXJuIG1peGVkIFVSTCBpZiBmZWVkIGV4aXN0cywgZmFsc2Ugb3RoZXJ3aXNlCgkgKi8KCWZ1bmN0aW9uIGFkZF90b19zZXJ2aWNlKCRpdGVtX3VybCwgJHRpdGxlX3VybCA9IG51bGwsICRzdW1tYXJ5X3VybCA9IG51bGwpCgl7CgkJaWYgKCR0aGlzLT5nZXRfcGVybWFsaW5rKCkgIT09IG51bGwpCgkJewoJCQkkcmV0dXJuID0gJHRoaXMtPnNhbml0aXplKCRpdGVtX3VybCwgU0lNUExFUElFX0NPTlNUUlVDVF9JUkkpIC4gcmF3dXJsZW5jb2RlKCR0aGlzLT5nZXRfcGVybWFsaW5rKCkpOwoJCQlpZiAoJHRpdGxlX3VybCAhPT0gbnVsbCAmJiAkdGhpcy0+Z2V0X3RpdGxlKCkgIT09IG51bGwpCgkJCXsKCQkJCSRyZXR1cm4gLj0gJHRoaXMtPnNhbml0aXplKCR0aXRsZV91cmwsIFNJTVBMRVBJRV9DT05TVFJVQ1RfSVJJKSAuIHJhd3VybGVuY29kZSgkdGhpcy0+Z2V0X3RpdGxlKCkpOwoJCQl9CgkJCWlmICgkc3VtbWFyeV91cmwgIT09IG51bGwgJiYgJHRoaXMtPmdldF9kZXNjcmlwdGlvbigpICE9PSBudWxsKQoJCQl7CgkJCQkkcmV0dXJuIC49ICR0aGlzLT5zYW5pdGl6ZSgkc3VtbWFyeV91cmwsIFNJTVBMRVBJRV9DT05TVFJVQ1RfSVJJKSAuIHJhd3VybGVuY29kZSgkdGhpcy0+Z2V0X2Rlc2NyaXB0aW9uKCkpOwoJCQl9CgkJCXJldHVybiAkcmV0dXJuOwoJCX0KCQllbHNlCgkJewoJCQlyZXR1cm4gbnVsbDsKCQl9Cgl9CgoJZnVuY3Rpb24gYWRkX3RvX2JsaW5rbGlzdCgpCgl7CgkJcmV0dXJuICR0aGlzLT5hZGRfdG9fc2VydmljZSgnaHR0cDovL3d3dy5ibGlua2xpc3QuY29tL2luZGV4LnBocD9BY3Rpb249QmxpbmsvYWRkYmxpbmsucGhwJkRlc2NyaXB0aW9uPSZVcmw9JywgJyZUaXRsZT0nKTsKCX0KCglmdW5jdGlvbiBhZGRfdG9fYmxvZ21hcmtzKCkKCXsKCQlyZXR1cm4gJHRoaXMtPmFkZF90b19zZXJ2aWNlKCdodHRwOi8vYmxvZ21hcmtzLm5ldC9teS9uZXcucGhwP21pbmk9MSZzaW1wbGU9MSZ1cmw9JywgJyZ0aXRsZT0nKTsKCX0KCglmdW5jdGlvbiBhZGRfdG9fZGVsaWNpb3VzKCkKCXsKCQlyZXR1cm4gJHRoaXMtPmFkZF90b19zZXJ2aWNlKCdodHRwOi8vZGVsLmljaW8udXMvcG9zdC8/dj00JnVybD0nLCAnJnRpdGxlPScpOwoJfQoKCWZ1bmN0aW9uIGFkZF90b19kaWdnKCkKCXsKCQlyZXR1cm4gJHRoaXMtPmFkZF90b19zZXJ2aWNlKCdodHRwOi8vZGlnZy5jb20vc3VibWl0P3VybD0nLCAnJnRpdGxlPScsICcmYm9keXRleHQ9Jyk7Cgl9CgoJZnVuY3Rpb24gYWRkX3RvX2Z1cmwoKQoJewoJCXJldHVybiAkdGhpcy0+YWRkX3RvX3NlcnZpY2UoJ2h0dHA6Ly93d3cuZnVybC5uZXQvc3RvcmVJdC5qc3A/dT0nLCAnJnQ9Jyk7Cgl9CgoJZnVuY3Rpb24gYWRkX3RvX21hZ25vbGlhKCkKCXsKCQlyZXR1cm4gJHRoaXMtPmFkZF90b19zZXJ2aWNlKCdodHRwOi8vbWEuZ25vbGlhLmNvbS9ib29rbWFya2xldC9hZGQ/dXJsPScsICcmdGl0bGU9Jyk7Cgl9CgoJZnVuY3Rpb24gYWRkX3RvX215d2ViMjAoKQoJewoJCXJldHVybiAkdGhpcy0+YWRkX3RvX3NlcnZpY2UoJ2h0dHA6Ly9teXdlYjIuc2VhcmNoLnlhaG9vLmNvbS9teXJlc3VsdHMvYm9va21hcmtsZXQ/dT0nLCAnJnQ9Jyk7Cgl9CgoJZnVuY3Rpb24gYWRkX3RvX25ld3N2aW5lKCkKCXsKCQlyZXR1cm4gJHRoaXMtPmFkZF90b19zZXJ2aWNlKCdodHRwOi8vd3d3Lm5ld3N2aW5lLmNvbS9fd2luZS9zYXZlP3U9JywgJyZoPScpOwoJfQoKCWZ1bmN0aW9uIGFkZF90b19yZWRkaXQoKQoJewoJCXJldHVybiAkdGhpcy0+YWRkX3RvX3NlcnZpY2UoJ2h0dHA6Ly9yZWRkaXQuY29tL3N1Ym1pdD91cmw9JywgJyZ0aXRsZT0nKTsKCX0KCglmdW5jdGlvbiBhZGRfdG9fc2VnbmFsbygpCgl7CgkJcmV0dXJuICR0aGlzLT5hZGRfdG9fc2VydmljZSgnaHR0cDovL3NlZ25hbG8uY29tL3Bvc3QuaHRtbC5waHA/dXJsPScsICcmdGl0bGU9Jyk7Cgl9CgoJZnVuY3Rpb24gYWRkX3RvX3NpbXB5KCkKCXsKCQlyZXR1cm4gJHRoaXMtPmFkZF90b19zZXJ2aWNlKCdodHRwOi8vd3d3LnNpbXB5LmNvbS9zaW1weS9MaW5rQWRkLmRvP2hyZWY9JywgJyZ0aXRsZT0nKTsKCX0KCglmdW5jdGlvbiBhZGRfdG9fc3B1cmwoKQoJewoJCXJldHVybiAkdGhpcy0+YWRkX3RvX3NlcnZpY2UoJ2h0dHA6Ly93d3cuc3B1cmwubmV0L3NwdXJsLnBocD92PTMmdXJsPScsICcmdGl0bGU9Jyk7Cgl9CgoJZnVuY3Rpb24gYWRkX3RvX3dpc3RzKCkKCXsKCQlyZXR1cm4gJHRoaXMtPmFkZF90b19zZXJ2aWNlKCdodHRwOi8vd2lzdHMuY29tL3IucGhwP2M9JnI9JywgJyZ0aXRsZT0nKTsKCX0KCglmdW5jdGlvbiBzZWFyY2hfdGVjaG5vcmF0aSgpCgl7CgkJcmV0dXJuICR0aGlzLT5hZGRfdG9fc2VydmljZSgnaHR0cDovL3d3dy50ZWNobm9yYXRpLmNvbS9zZWFyY2gvJyk7Cgl9Cn0KCmNsYXNzIFNpbXBsZVBpZV9Tb3VyY2UKewoJdmFyICRpdGVtOwoJdmFyICRkYXRhID0gYXJyYXkoKTsKCglmdW5jdGlvbiBTaW1wbGVQaWVfU291cmNlKCRpdGVtLCAkZGF0YSkKCXsKCQkkdGhpcy0+aXRlbSA9ICRpdGVtOwoJCSR0aGlzLT5kYXRhID0gJGRhdGE7Cgl9CgoJZnVuY3Rpb24gX190b1N0cmluZygpCgl7CgkJcmV0dXJuIG1kNShzZXJpYWxpemUoJHRoaXMtPmRhdGEpKTsKCX0KCgkvKioKCSAqIFJlbW92ZSBpdGVtcyB0aGF0IGxpbmsgYmFjayB0byB0aGlzIGJlZm9yZSBkZXN0cm95aW5nIHRoaXMgb2JqZWN0CgkgKi8KCWZ1bmN0aW9uIF9fZGVzdHJ1Y3QoKQoJewoJCXVuc2V0KCR0aGlzLT5pdGVtKTsKCX0KCglmdW5jdGlvbiBnZXRfc291cmNlX3RhZ3MoJG5hbWVzcGFjZSwgJHRhZykKCXsKCQlpZiAoaXNzZXQoJHRoaXMtPmRhdGFbJ2NoaWxkJ11bJG5hbWVzcGFjZV1bJHRhZ10pKQoJCXsKCQkJcmV0dXJuICR0aGlzLT5kYXRhWydjaGlsZCddWyRuYW1lc3BhY2VdWyR0YWddOwoJCX0KCQllbHNlCgkJewoJCQlyZXR1cm4gbnVsbDsKCQl9Cgl9CgoJZnVuY3Rpb24gZ2V0X2Jhc2UoJGVsZW1lbnQgPSBhcnJheSgpKQoJewoJCXJldHVybiAkdGhpcy0+aXRlbS0+Z2V0X2Jhc2UoJGVsZW1lbnQpOwoJfQoKCWZ1bmN0aW9uIHNhbml0aXplKCRkYXRhLCAkdHlwZSwgJGJhc2UgPSAnJykKCXsKCQlyZXR1cm4gJHRoaXMtPml0ZW0tPnNhbml0aXplKCRkYXRhLCAkdHlwZSwgJGJhc2UpOwoJfQoKCWZ1bmN0aW9uIGdldF9pdGVtKCkKCXsKCQlyZXR1cm4gJHRoaXMtPml0ZW07Cgl9CgoJZnVuY3Rpb24gZ2V0X3RpdGxlKCkKCXsKCQlpZiAoJHJldHVybiA9ICR0aGlzLT5nZXRfc291cmNlX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9BVE9NXzEwLCAndGl0bGUnKSkKCQl7CgkJCXJldHVybiAkdGhpcy0+c2FuaXRpemUoJHJldHVyblswXVsnZGF0YSddLCBTaW1wbGVQaWVfTWlzYzo6YXRvbV8xMF9jb25zdHJ1Y3RfdHlwZSgkcmV0dXJuWzBdWydhdHRyaWJzJ10pLCAkdGhpcy0+Z2V0X2Jhc2UoJHJldHVyblswXSkpOwoJCX0KCQllbHNlaWYgKCRyZXR1cm4gPSAkdGhpcy0+Z2V0X3NvdXJjZV90YWdzKFNJTVBMRVBJRV9OQU1FU1BBQ0VfQVRPTV8wMywgJ3RpdGxlJykpCgkJewoJCQlyZXR1cm4gJHRoaXMtPnNhbml0aXplKCRyZXR1cm5bMF1bJ2RhdGEnXSwgU2ltcGxlUGllX01pc2M6OmF0b21fMDNfY29uc3RydWN0X3R5cGUoJHJldHVyblswXVsnYXR0cmlicyddKSwgJHRoaXMtPmdldF9iYXNlKCRyZXR1cm5bMF0pKTsKCQl9CgkJZWxzZWlmICgkcmV0dXJuID0gJHRoaXMtPmdldF9zb3VyY2VfdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX1JTU18xMCwgJ3RpdGxlJykpCgkJewoJCQlyZXR1cm4gJHRoaXMtPnNhbml0aXplKCRyZXR1cm5bMF1bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9NQVlCRV9IVE1MLCAkdGhpcy0+Z2V0X2Jhc2UoJHJldHVyblswXSkpOwoJCX0KCQllbHNlaWYgKCRyZXR1cm4gPSAkdGhpcy0+Z2V0X3NvdXJjZV90YWdzKFNJTVBMRVBJRV9OQU1FU1BBQ0VfUlNTXzA5MCwgJ3RpdGxlJykpCgkJewoJCQlyZXR1cm4gJHRoaXMtPnNhbml0aXplKCRyZXR1cm5bMF1bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9NQVlCRV9IVE1MLCAkdGhpcy0+Z2V0X2Jhc2UoJHJldHVyblswXSkpOwoJCX0KCQllbHNlaWYgKCRyZXR1cm4gPSAkdGhpcy0+Z2V0X3NvdXJjZV90YWdzKCcnLCAndGl0bGUnKSkKCQl7CgkJCXJldHVybiAkdGhpcy0+c2FuaXRpemUoJHJldHVyblswXVsnZGF0YSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX01BWUJFX0hUTUwsICR0aGlzLT5nZXRfYmFzZSgkcmV0dXJuWzBdKSk7CgkJfQoJCWVsc2VpZiAoJHJldHVybiA9ICR0aGlzLT5nZXRfc291cmNlX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9EQ18xMSwgJ3RpdGxlJykpCgkJewoJCQlyZXR1cm4gJHRoaXMtPnNhbml0aXplKCRyZXR1cm5bMF1bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQl9CgkJZWxzZWlmICgkcmV0dXJuID0gJHRoaXMtPmdldF9zb3VyY2VfdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX0RDXzEwLCAndGl0bGUnKSkKCQl7CgkJCXJldHVybiAkdGhpcy0+c2FuaXRpemUoJHJldHVyblswXVsnZGF0YSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCX0KCQllbHNlCgkJewoJCQlyZXR1cm4gbnVsbDsKCQl9Cgl9CgoJZnVuY3Rpb24gZ2V0X2NhdGVnb3J5KCRrZXkgPSAwKQoJewoJCSRjYXRlZ29yaWVzID0gJHRoaXMtPmdldF9jYXRlZ29yaWVzKCk7CgkJaWYgKGlzc2V0KCRjYXRlZ29yaWVzWyRrZXldKSkKCQl7CgkJCXJldHVybiAkY2F0ZWdvcmllc1ska2V5XTsKCQl9CgkJZWxzZQoJCXsKCQkJcmV0dXJuIG51bGw7CgkJfQoJfQoKCWZ1bmN0aW9uIGdldF9jYXRlZ29yaWVzKCkKCXsKCQkkY2F0ZWdvcmllcyA9IGFycmF5KCk7CgoJCWZvcmVhY2ggKChhcnJheSkgJHRoaXMtPmdldF9zb3VyY2VfdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMTAsICdjYXRlZ29yeScpIGFzICRjYXRlZ29yeSkKCQl7CgkJCSR0ZXJtID0gbnVsbDsKCQkJJHNjaGVtZSA9IG51bGw7CgkJCSRsYWJlbCA9IG51bGw7CgkJCWlmIChpc3NldCgkY2F0ZWdvcnlbJ2F0dHJpYnMnXVsnJ11bJ3Rlcm0nXSkpCgkJCXsKCQkJCSR0ZXJtID0gJHRoaXMtPnNhbml0aXplKCRjYXRlZ29yeVsnYXR0cmlicyddWycnXVsndGVybSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCQl9CgkJCWlmIChpc3NldCgkY2F0ZWdvcnlbJ2F0dHJpYnMnXVsnJ11bJ3NjaGVtZSddKSkKCQkJewoJCQkJJHNjaGVtZSA9ICR0aGlzLT5zYW5pdGl6ZSgkY2F0ZWdvcnlbJ2F0dHJpYnMnXVsnJ11bJ3NjaGVtZSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCQl9CgkJCWlmIChpc3NldCgkY2F0ZWdvcnlbJ2F0dHJpYnMnXVsnJ11bJ2xhYmVsJ10pKQoJCQl7CgkJCQkkbGFiZWwgPSAkdGhpcy0+c2FuaXRpemUoJGNhdGVnb3J5WydhdHRyaWJzJ11bJyddWydsYWJlbCddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCQl9CgkJCSRjYXRlZ29yaWVzW10gPSYgbmV3ICR0aGlzLT5pdGVtLT5mZWVkLT5jYXRlZ29yeV9jbGFzcygkdGVybSwgJHNjaGVtZSwgJGxhYmVsKTsKCQl9CgkJZm9yZWFjaCAoKGFycmF5KSAkdGhpcy0+Z2V0X3NvdXJjZV90YWdzKCcnLCAnY2F0ZWdvcnknKSBhcyAkY2F0ZWdvcnkpCgkJewoJCQkkY2F0ZWdvcmllc1tdID0mIG5ldyAkdGhpcy0+aXRlbS0+ZmVlZC0+Y2F0ZWdvcnlfY2xhc3MoJHRoaXMtPnNhbml0aXplKCRjYXRlZ29yeVsnZGF0YSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpLCBudWxsLCBudWxsKTsKCQl9CgkJZm9yZWFjaCAoKGFycmF5KSAkdGhpcy0+Z2V0X3NvdXJjZV90YWdzKFNJTVBMRVBJRV9OQU1FU1BBQ0VfRENfMTEsICdzdWJqZWN0JykgYXMgJGNhdGVnb3J5KQoJCXsKCQkJJGNhdGVnb3JpZXNbXSA9JiBuZXcgJHRoaXMtPml0ZW0tPmZlZWQtPmNhdGVnb3J5X2NsYXNzKCR0aGlzLT5zYW5pdGl6ZSgkY2F0ZWdvcnlbJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKSwgbnVsbCwgbnVsbCk7CgkJfQoJCWZvcmVhY2ggKChhcnJheSkgJHRoaXMtPmdldF9zb3VyY2VfdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX0RDXzEwLCAnc3ViamVjdCcpIGFzICRjYXRlZ29yeSkKCQl7CgkJCSRjYXRlZ29yaWVzW10gPSYgbmV3ICR0aGlzLT5pdGVtLT5mZWVkLT5jYXRlZ29yeV9jbGFzcygkdGhpcy0+c2FuaXRpemUoJGNhdGVnb3J5WydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCksIG51bGwsIG51bGwpOwoJCX0KCgkJaWYgKCFlbXB0eSgkY2F0ZWdvcmllcykpCgkJewoJCQlyZXR1cm4gU2ltcGxlUGllX01pc2M6OmFycmF5X3VuaXF1ZSgkY2F0ZWdvcmllcyk7CgkJfQoJCWVsc2UKCQl7CgkJCXJldHVybiBudWxsOwoJCX0KCX0KCglmdW5jdGlvbiBnZXRfYXV0aG9yKCRrZXkgPSAwKQoJewoJCSRhdXRob3JzID0gJHRoaXMtPmdldF9hdXRob3JzKCk7CgkJaWYgKGlzc2V0KCRhdXRob3JzWyRrZXldKSkKCQl7CgkJCXJldHVybiAkYXV0aG9yc1ska2V5XTsKCQl9CgkJZWxzZQoJCXsKCQkJcmV0dXJuIG51bGw7CgkJfQoJfQoKCWZ1bmN0aW9uIGdldF9hdXRob3JzKCkKCXsKCQkkYXV0aG9ycyA9IGFycmF5KCk7CgkJZm9yZWFjaCAoKGFycmF5KSAkdGhpcy0+Z2V0X3NvdXJjZV90YWdzKFNJTVBMRVBJRV9OQU1FU1BBQ0VfQVRPTV8xMCwgJ2F1dGhvcicpIGFzICRhdXRob3IpCgkJewoJCQkkbmFtZSA9IG51bGw7CgkJCSR1cmkgPSBudWxsOwoJCQkkZW1haWwgPSBudWxsOwoJCQlpZiAoaXNzZXQoJGF1dGhvclsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMTBdWyduYW1lJ11bMF1bJ2RhdGEnXSkpCgkJCXsKCQkJCSRuYW1lID0gJHRoaXMtPnNhbml0aXplKCRhdXRob3JbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9BVE9NXzEwXVsnbmFtZSddWzBdWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCX0KCQkJaWYgKGlzc2V0KCRhdXRob3JbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9BVE9NXzEwXVsndXJpJ11bMF1bJ2RhdGEnXSkpCgkJCXsKCQkJCSR1cmkgPSAkdGhpcy0+c2FuaXRpemUoJGF1dGhvclsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMTBdWyd1cmknXVswXVsnZGF0YSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX0lSSSwgJHRoaXMtPmdldF9iYXNlKCRhdXRob3JbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9BVE9NXzEwXVsndXJpJ11bMF0pKTsKCQkJfQoJCQlpZiAoaXNzZXQoJGF1dGhvclsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMTBdWydlbWFpbCddWzBdWydkYXRhJ10pKQoJCQl7CgkJCQkkZW1haWwgPSAkdGhpcy0+c2FuaXRpemUoJGF1dGhvclsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMTBdWydlbWFpbCddWzBdWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCX0KCQkJaWYgKCRuYW1lICE9PSBudWxsIHx8ICRlbWFpbCAhPT0gbnVsbCB8fCAkdXJpICE9PSBudWxsKQoJCQl7CgkJCQkkYXV0aG9yc1tdID0mIG5ldyAkdGhpcy0+aXRlbS0+ZmVlZC0+YXV0aG9yX2NsYXNzKCRuYW1lLCAkdXJpLCAkZW1haWwpOwoJCQl9CgkJfQoJCWlmICgkYXV0aG9yID0gJHRoaXMtPmdldF9zb3VyY2VfdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMDMsICdhdXRob3InKSkKCQl7CgkJCSRuYW1lID0gbnVsbDsKCQkJJHVybCA9IG51bGw7CgkJCSRlbWFpbCA9IG51bGw7CgkJCWlmIChpc3NldCgkYXV0aG9yWzBdWydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfQVRPTV8wM11bJ25hbWUnXVswXVsnZGF0YSddKSkKCQkJewoJCQkJJG5hbWUgPSAkdGhpcy0+c2FuaXRpemUoJGF1dGhvclswXVsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMDNdWyduYW1lJ11bMF1bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJfQoJCQlpZiAoaXNzZXQoJGF1dGhvclswXVsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMDNdWyd1cmwnXVswXVsnZGF0YSddKSkKCQkJewoJCQkJJHVybCA9ICR0aGlzLT5zYW5pdGl6ZSgkYXV0aG9yWzBdWydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfQVRPTV8wM11bJ3VybCddWzBdWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfSVJJLCAkdGhpcy0+Z2V0X2Jhc2UoJGF1dGhvclswXVsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMDNdWyd1cmwnXVswXSkpOwoJCQl9CgkJCWlmIChpc3NldCgkYXV0aG9yWzBdWydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfQVRPTV8wM11bJ2VtYWlsJ11bMF1bJ2RhdGEnXSkpCgkJCXsKCQkJCSRlbWFpbCA9ICR0aGlzLT5zYW5pdGl6ZSgkYXV0aG9yWzBdWydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfQVRPTV8wM11bJ2VtYWlsJ11bMF1bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJfQoJCQlpZiAoJG5hbWUgIT09IG51bGwgfHwgJGVtYWlsICE9PSBudWxsIHx8ICR1cmwgIT09IG51bGwpCgkJCXsKCQkJCSRhdXRob3JzW10gPSYgbmV3ICR0aGlzLT5pdGVtLT5mZWVkLT5hdXRob3JfY2xhc3MoJG5hbWUsICR1cmwsICRlbWFpbCk7CgkJCX0KCQl9CgkJZm9yZWFjaCAoKGFycmF5KSAkdGhpcy0+Z2V0X3NvdXJjZV90YWdzKFNJTVBMRVBJRV9OQU1FU1BBQ0VfRENfMTEsICdjcmVhdG9yJykgYXMgJGF1dGhvcikKCQl7CgkJCSRhdXRob3JzW10gPSYgbmV3ICR0aGlzLT5pdGVtLT5mZWVkLT5hdXRob3JfY2xhc3MoJHRoaXMtPnNhbml0aXplKCRhdXRob3JbJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKSwgbnVsbCwgbnVsbCk7CgkJfQoJCWZvcmVhY2ggKChhcnJheSkgJHRoaXMtPmdldF9zb3VyY2VfdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX0RDXzEwLCAnY3JlYXRvcicpIGFzICRhdXRob3IpCgkJewoJCQkkYXV0aG9yc1tdID0mIG5ldyAkdGhpcy0+aXRlbS0+ZmVlZC0+YXV0aG9yX2NsYXNzKCR0aGlzLT5zYW5pdGl6ZSgkYXV0aG9yWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCksIG51bGwsIG51bGwpOwoJCX0KCQlmb3JlYWNoICgoYXJyYXkpICR0aGlzLT5nZXRfc291cmNlX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9JVFVORVMsICdhdXRob3InKSBhcyAkYXV0aG9yKQoJCXsKCQkJJGF1dGhvcnNbXSA9JiBuZXcgJHRoaXMtPml0ZW0tPmZlZWQtPmF1dGhvcl9jbGFzcygkdGhpcy0+c2FuaXRpemUoJGF1dGhvclsnZGF0YSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpLCBudWxsLCBudWxsKTsKCQl9CgoJCWlmICghZW1wdHkoJGF1dGhvcnMpKQoJCXsKCQkJcmV0dXJuIFNpbXBsZVBpZV9NaXNjOjphcnJheV91bmlxdWUoJGF1dGhvcnMpOwoJCX0KCQllbHNlCgkJewoJCQlyZXR1cm4gbnVsbDsKCQl9Cgl9CgoJZnVuY3Rpb24gZ2V0X2NvbnRyaWJ1dG9yKCRrZXkgPSAwKQoJewoJCSRjb250cmlidXRvcnMgPSAkdGhpcy0+Z2V0X2NvbnRyaWJ1dG9ycygpOwoJCWlmIChpc3NldCgkY29udHJpYnV0b3JzWyRrZXldKSkKCQl7CgkJCXJldHVybiAkY29udHJpYnV0b3JzWyRrZXldOwoJCX0KCQllbHNlCgkJewoJCQlyZXR1cm4gbnVsbDsKCQl9Cgl9CgoJZnVuY3Rpb24gZ2V0X2NvbnRyaWJ1dG9ycygpCgl7CgkJJGNvbnRyaWJ1dG9ycyA9IGFycmF5KCk7CgkJZm9yZWFjaCAoKGFycmF5KSAkdGhpcy0+Z2V0X3NvdXJjZV90YWdzKFNJTVBMRVBJRV9OQU1FU1BBQ0VfQVRPTV8xMCwgJ2NvbnRyaWJ1dG9yJykgYXMgJGNvbnRyaWJ1dG9yKQoJCXsKCQkJJG5hbWUgPSBudWxsOwoJCQkkdXJpID0gbnVsbDsKCQkJJGVtYWlsID0gbnVsbDsKCQkJaWYgKGlzc2V0KCRjb250cmlidXRvclsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMTBdWyduYW1lJ11bMF1bJ2RhdGEnXSkpCgkJCXsKCQkJCSRuYW1lID0gJHRoaXMtPnNhbml0aXplKCRjb250cmlidXRvclsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMTBdWyduYW1lJ11bMF1bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJfQoJCQlpZiAoaXNzZXQoJGNvbnRyaWJ1dG9yWydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfQVRPTV8xMF1bJ3VyaSddWzBdWydkYXRhJ10pKQoJCQl7CgkJCQkkdXJpID0gJHRoaXMtPnNhbml0aXplKCRjb250cmlidXRvclsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMTBdWyd1cmknXVswXVsnZGF0YSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX0lSSSwgJHRoaXMtPmdldF9iYXNlKCRjb250cmlidXRvclsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMTBdWyd1cmknXVswXSkpOwoJCQl9CgkJCWlmIChpc3NldCgkY29udHJpYnV0b3JbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9BVE9NXzEwXVsnZW1haWwnXVswXVsnZGF0YSddKSkKCQkJewoJCQkJJGVtYWlsID0gJHRoaXMtPnNhbml0aXplKCRjb250cmlidXRvclsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMTBdWydlbWFpbCddWzBdWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCX0KCQkJaWYgKCRuYW1lICE9PSBudWxsIHx8ICRlbWFpbCAhPT0gbnVsbCB8fCAkdXJpICE9PSBudWxsKQoJCQl7CgkJCQkkY29udHJpYnV0b3JzW10gPSYgbmV3ICR0aGlzLT5pdGVtLT5mZWVkLT5hdXRob3JfY2xhc3MoJG5hbWUsICR1cmksICRlbWFpbCk7CgkJCX0KCQl9CgkJZm9yZWFjaCAoKGFycmF5KSAkdGhpcy0+Z2V0X3NvdXJjZV90YWdzKFNJTVBMRVBJRV9OQU1FU1BBQ0VfQVRPTV8wMywgJ2NvbnRyaWJ1dG9yJykgYXMgJGNvbnRyaWJ1dG9yKQoJCXsKCQkJJG5hbWUgPSBudWxsOwoJCQkkdXJsID0gbnVsbDsKCQkJJGVtYWlsID0gbnVsbDsKCQkJaWYgKGlzc2V0KCRjb250cmlidXRvclsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMDNdWyduYW1lJ11bMF1bJ2RhdGEnXSkpCgkJCXsKCQkJCSRuYW1lID0gJHRoaXMtPnNhbml0aXplKCRjb250cmlidXRvclsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMDNdWyduYW1lJ11bMF1bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJfQoJCQlpZiAoaXNzZXQoJGNvbnRyaWJ1dG9yWydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfQVRPTV8wM11bJ3VybCddWzBdWydkYXRhJ10pKQoJCQl7CgkJCQkkdXJsID0gJHRoaXMtPnNhbml0aXplKCRjb250cmlidXRvclsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMDNdWyd1cmwnXVswXVsnZGF0YSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX0lSSSwgJHRoaXMtPmdldF9iYXNlKCRjb250cmlidXRvclsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMDNdWyd1cmwnXVswXSkpOwoJCQl9CgkJCWlmIChpc3NldCgkY29udHJpYnV0b3JbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9BVE9NXzAzXVsnZW1haWwnXVswXVsnZGF0YSddKSkKCQkJewoJCQkJJGVtYWlsID0gJHRoaXMtPnNhbml0aXplKCRjb250cmlidXRvclsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMDNdWydlbWFpbCddWzBdWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCX0KCQkJaWYgKCRuYW1lICE9PSBudWxsIHx8ICRlbWFpbCAhPT0gbnVsbCB8fCAkdXJsICE9PSBudWxsKQoJCQl7CgkJCQkkY29udHJpYnV0b3JzW10gPSYgbmV3ICR0aGlzLT5pdGVtLT5mZWVkLT5hdXRob3JfY2xhc3MoJG5hbWUsICR1cmwsICRlbWFpbCk7CgkJCX0KCQl9CgoJCWlmICghZW1wdHkoJGNvbnRyaWJ1dG9ycykpCgkJewoJCQlyZXR1cm4gU2ltcGxlUGllX01pc2M6OmFycmF5X3VuaXF1ZSgkY29udHJpYnV0b3JzKTsKCQl9CgkJZWxzZQoJCXsKCQkJcmV0dXJuIG51bGw7CgkJfQoJfQoKCWZ1bmN0aW9uIGdldF9saW5rKCRrZXkgPSAwLCAkcmVsID0gJ2FsdGVybmF0ZScpCgl7CgkJJGxpbmtzID0gJHRoaXMtPmdldF9saW5rcygkcmVsKTsKCQlpZiAoaXNzZXQoJGxpbmtzWyRrZXldKSkKCQl7CgkJCXJldHVybiAkbGlua3NbJGtleV07CgkJfQoJCWVsc2UKCQl7CgkJCXJldHVybiBudWxsOwoJCX0KCX0KCgkvKioKCSAqIEFkZGVkIGZvciBwYXJpdHkgYmV0d2VlbiB0aGUgcGFyZW50LWxldmVsIGFuZCB0aGUgaXRlbS9lbnRyeS1sZXZlbC4KCSAqLwoJZnVuY3Rpb24gZ2V0X3Blcm1hbGluaygpCgl7CgkJcmV0dXJuICR0aGlzLT5nZXRfbGluaygwKTsKCX0KCglmdW5jdGlvbiBnZXRfbGlua3MoJHJlbCA9ICdhbHRlcm5hdGUnKQoJewoJCWlmICghaXNzZXQoJHRoaXMtPmRhdGFbJ2xpbmtzJ10pKQoJCXsKCQkJJHRoaXMtPmRhdGFbJ2xpbmtzJ10gPSBhcnJheSgpOwoJCQlpZiAoJGxpbmtzID0gJHRoaXMtPmdldF9zb3VyY2VfdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMTAsICdsaW5rJykpCgkJCXsKCQkJCWZvcmVhY2ggKCRsaW5rcyBhcyAkbGluaykKCQkJCXsKCQkJCQlpZiAoaXNzZXQoJGxpbmtbJ2F0dHJpYnMnXVsnJ11bJ2hyZWYnXSkpCgkJCQkJewoJCQkJCQkkbGlua19yZWwgPSAoaXNzZXQoJGxpbmtbJ2F0dHJpYnMnXVsnJ11bJ3JlbCddKSkgPyAkbGlua1snYXR0cmlicyddWycnXVsncmVsJ10gOiAnYWx0ZXJuYXRlJzsKCQkJCQkJJHRoaXMtPmRhdGFbJ2xpbmtzJ11bJGxpbmtfcmVsXVtdID0gJHRoaXMtPnNhbml0aXplKCRsaW5rWydhdHRyaWJzJ11bJyddWydocmVmJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfSVJJLCAkdGhpcy0+Z2V0X2Jhc2UoJGxpbmspKTsKCQkJCQl9CgkJCQl9CgkJCX0KCQkJaWYgKCRsaW5rcyA9ICR0aGlzLT5nZXRfc291cmNlX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9BVE9NXzAzLCAnbGluaycpKQoJCQl7CgkJCQlmb3JlYWNoICgkbGlua3MgYXMgJGxpbmspCgkJCQl7CgkJCQkJaWYgKGlzc2V0KCRsaW5rWydhdHRyaWJzJ11bJyddWydocmVmJ10pKQoJCQkJCXsKCQkJCQkJJGxpbmtfcmVsID0gKGlzc2V0KCRsaW5rWydhdHRyaWJzJ11bJyddWydyZWwnXSkpID8gJGxpbmtbJ2F0dHJpYnMnXVsnJ11bJ3JlbCddIDogJ2FsdGVybmF0ZSc7CgkJCQkJCSR0aGlzLT5kYXRhWydsaW5rcyddWyRsaW5rX3JlbF1bXSA9ICR0aGlzLT5zYW5pdGl6ZSgkbGlua1snYXR0cmlicyddWycnXVsnaHJlZiddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX0lSSSwgJHRoaXMtPmdldF9iYXNlKCRsaW5rKSk7CgoJCQkJCX0KCQkJCX0KCQkJfQoJCQlpZiAoJGxpbmtzID0gJHRoaXMtPmdldF9zb3VyY2VfdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX1JTU18xMCwgJ2xpbmsnKSkKCQkJewoJCQkJJHRoaXMtPmRhdGFbJ2xpbmtzJ11bJ2FsdGVybmF0ZSddW10gPSAkdGhpcy0+c2FuaXRpemUoJGxpbmtzWzBdWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfSVJJLCAkdGhpcy0+Z2V0X2Jhc2UoJGxpbmtzWzBdKSk7CgkJCX0KCQkJaWYgKCRsaW5rcyA9ICR0aGlzLT5nZXRfc291cmNlX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9SU1NfMDkwLCAnbGluaycpKQoJCQl7CgkJCQkkdGhpcy0+ZGF0YVsnbGlua3MnXVsnYWx0ZXJuYXRlJ11bXSA9ICR0aGlzLT5zYW5pdGl6ZSgkbGlua3NbMF1bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9JUkksICR0aGlzLT5nZXRfYmFzZSgkbGlua3NbMF0pKTsKCQkJfQoJCQlpZiAoJGxpbmtzID0gJHRoaXMtPmdldF9zb3VyY2VfdGFncygnJywgJ2xpbmsnKSkKCQkJewoJCQkJJHRoaXMtPmRhdGFbJ2xpbmtzJ11bJ2FsdGVybmF0ZSddW10gPSAkdGhpcy0+c2FuaXRpemUoJGxpbmtzWzBdWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfSVJJLCAkdGhpcy0+Z2V0X2Jhc2UoJGxpbmtzWzBdKSk7CgkJCX0KCgkJCSRrZXlzID0gYXJyYXlfa2V5cygkdGhpcy0+ZGF0YVsnbGlua3MnXSk7CgkJCWZvcmVhY2ggKCRrZXlzIGFzICRrZXkpCgkJCXsKCQkJCWlmIChTaW1wbGVQaWVfTWlzYzo6aXNfaXNlZ21lbnRfbnpfbmMoJGtleSkpCgkJCQl7CgkJCQkJaWYgKGlzc2V0KCR0aGlzLT5kYXRhWydsaW5rcyddW1NJTVBMRVBJRV9JQU5BX0xJTktfUkVMQVRJT05TX1JFR0lTVFJZIC4gJGtleV0pKQoJCQkJCXsKCQkJCQkJJHRoaXMtPmRhdGFbJ2xpbmtzJ11bU0lNUExFUElFX0lBTkFfTElOS19SRUxBVElPTlNfUkVHSVNUUlkgLiAka2V5XSA9IGFycmF5X21lcmdlKCR0aGlzLT5kYXRhWydsaW5rcyddWyRrZXldLCAkdGhpcy0+ZGF0YVsnbGlua3MnXVtTSU1QTEVQSUVfSUFOQV9MSU5LX1JFTEFUSU9OU19SRUdJU1RSWSAuICRrZXldKTsKCQkJCQkJJHRoaXMtPmRhdGFbJ2xpbmtzJ11bJGtleV0gPSYgJHRoaXMtPmRhdGFbJ2xpbmtzJ11bU0lNUExFUElFX0lBTkFfTElOS19SRUxBVElPTlNfUkVHSVNUUlkgLiAka2V5XTsKCQkJCQl9CgkJCQkJZWxzZQoJCQkJCXsKCQkJCQkJJHRoaXMtPmRhdGFbJ2xpbmtzJ11bU0lNUExFUElFX0lBTkFfTElOS19SRUxBVElPTlNfUkVHSVNUUlkgLiAka2V5XSA9JiAkdGhpcy0+ZGF0YVsnbGlua3MnXVska2V5XTsKCQkJCQl9CgkJCQl9CgkJCQllbHNlaWYgKHN1YnN0cigka2V5LCAwLCA0MSkgPT0gU0lNUExFUElFX0lBTkFfTElOS19SRUxBVElPTlNfUkVHSVNUUlkpCgkJCQl7CgkJCQkJJHRoaXMtPmRhdGFbJ2xpbmtzJ11bc3Vic3RyKCRrZXksIDQxKV0gPSYgJHRoaXMtPmRhdGFbJ2xpbmtzJ11bJGtleV07CgkJCQl9CgkJCQkkdGhpcy0+ZGF0YVsnbGlua3MnXVska2V5XSA9IGFycmF5X3VuaXF1ZSgkdGhpcy0+ZGF0YVsnbGlua3MnXVska2V5XSk7CgkJCX0KCQl9CgoJCWlmIChpc3NldCgkdGhpcy0+ZGF0YVsnbGlua3MnXVskcmVsXSkpCgkJewoJCQlyZXR1cm4gJHRoaXMtPmRhdGFbJ2xpbmtzJ11bJHJlbF07CgkJfQoJCWVsc2UKCQl7CgkJCXJldHVybiBudWxsOwoJCX0KCX0KCglmdW5jdGlvbiBnZXRfZGVzY3JpcHRpb24oKQoJewoJCWlmICgkcmV0dXJuID0gJHRoaXMtPmdldF9zb3VyY2VfdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMTAsICdzdWJ0aXRsZScpKQoJCXsKCQkJcmV0dXJuICR0aGlzLT5zYW5pdGl6ZSgkcmV0dXJuWzBdWydkYXRhJ10sIFNpbXBsZVBpZV9NaXNjOjphdG9tXzEwX2NvbnN0cnVjdF90eXBlKCRyZXR1cm5bMF1bJ2F0dHJpYnMnXSksICR0aGlzLT5nZXRfYmFzZSgkcmV0dXJuWzBdKSk7CgkJfQoJCWVsc2VpZiAoJHJldHVybiA9ICR0aGlzLT5nZXRfc291cmNlX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9BVE9NXzAzLCAndGFnbGluZScpKQoJCXsKCQkJcmV0dXJuICR0aGlzLT5zYW5pdGl6ZSgkcmV0dXJuWzBdWydkYXRhJ10sIFNpbXBsZVBpZV9NaXNjOjphdG9tXzAzX2NvbnN0cnVjdF90eXBlKCRyZXR1cm5bMF1bJ2F0dHJpYnMnXSksICR0aGlzLT5nZXRfYmFzZSgkcmV0dXJuWzBdKSk7CgkJfQoJCWVsc2VpZiAoJHJldHVybiA9ICR0aGlzLT5nZXRfc291cmNlX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9SU1NfMTAsICdkZXNjcmlwdGlvbicpKQoJCXsKCQkJcmV0dXJuICR0aGlzLT5zYW5pdGl6ZSgkcmV0dXJuWzBdWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfTUFZQkVfSFRNTCwgJHRoaXMtPmdldF9iYXNlKCRyZXR1cm5bMF0pKTsKCQl9CgkJZWxzZWlmICgkcmV0dXJuID0gJHRoaXMtPmdldF9zb3VyY2VfdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX1JTU18wOTAsICdkZXNjcmlwdGlvbicpKQoJCXsKCQkJcmV0dXJuICR0aGlzLT5zYW5pdGl6ZSgkcmV0dXJuWzBdWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfTUFZQkVfSFRNTCwgJHRoaXMtPmdldF9iYXNlKCRyZXR1cm5bMF0pKTsKCQl9CgkJZWxzZWlmICgkcmV0dXJuID0gJHRoaXMtPmdldF9zb3VyY2VfdGFncygnJywgJ2Rlc2NyaXB0aW9uJykpCgkJewoJCQlyZXR1cm4gJHRoaXMtPnNhbml0aXplKCRyZXR1cm5bMF1bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9NQVlCRV9IVE1MLCAkdGhpcy0+Z2V0X2Jhc2UoJHJldHVyblswXSkpOwoJCX0KCQllbHNlaWYgKCRyZXR1cm4gPSAkdGhpcy0+Z2V0X3NvdXJjZV90YWdzKFNJTVBMRVBJRV9OQU1FU1BBQ0VfRENfMTEsICdkZXNjcmlwdGlvbicpKQoJCXsKCQkJcmV0dXJuICR0aGlzLT5zYW5pdGl6ZSgkcmV0dXJuWzBdWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJfQoJCWVsc2VpZiAoJHJldHVybiA9ICR0aGlzLT5nZXRfc291cmNlX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9EQ18xMCwgJ2Rlc2NyaXB0aW9uJykpCgkJewoJCQlyZXR1cm4gJHRoaXMtPnNhbml0aXplKCRyZXR1cm5bMF1bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQl9CgkJZWxzZWlmICgkcmV0dXJuID0gJHRoaXMtPmdldF9zb3VyY2VfdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX0lUVU5FUywgJ3N1bW1hcnknKSkKCQl7CgkJCXJldHVybiAkdGhpcy0+c2FuaXRpemUoJHJldHVyblswXVsnZGF0YSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX0hUTUwsICR0aGlzLT5nZXRfYmFzZSgkcmV0dXJuWzBdKSk7CgkJfQoJCWVsc2VpZiAoJHJldHVybiA9ICR0aGlzLT5nZXRfc291cmNlX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9JVFVORVMsICdzdWJ0aXRsZScpKQoJCXsKCQkJcmV0dXJuICR0aGlzLT5zYW5pdGl6ZSgkcmV0dXJuWzBdWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfSFRNTCwgJHRoaXMtPmdldF9iYXNlKCRyZXR1cm5bMF0pKTsKCQl9CgkJZWxzZQoJCXsKCQkJcmV0dXJuIG51bGw7CgkJfQoJfQoKCWZ1bmN0aW9uIGdldF9jb3B5cmlnaHQoKQoJewoJCWlmICgkcmV0dXJuID0gJHRoaXMtPmdldF9zb3VyY2VfdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMTAsICdyaWdodHMnKSkKCQl7CgkJCXJldHVybiAkdGhpcy0+c2FuaXRpemUoJHJldHVyblswXVsnZGF0YSddLCBTaW1wbGVQaWVfTWlzYzo6YXRvbV8xMF9jb25zdHJ1Y3RfdHlwZSgkcmV0dXJuWzBdWydhdHRyaWJzJ10pLCAkdGhpcy0+Z2V0X2Jhc2UoJHJldHVyblswXSkpOwoJCX0KCQllbHNlaWYgKCRyZXR1cm4gPSAkdGhpcy0+Z2V0X3NvdXJjZV90YWdzKFNJTVBMRVBJRV9OQU1FU1BBQ0VfQVRPTV8wMywgJ2NvcHlyaWdodCcpKQoJCXsKCQkJcmV0dXJuICR0aGlzLT5zYW5pdGl6ZSgkcmV0dXJuWzBdWydkYXRhJ10sIFNpbXBsZVBpZV9NaXNjOjphdG9tXzAzX2NvbnN0cnVjdF90eXBlKCRyZXR1cm5bMF1bJ2F0dHJpYnMnXSksICR0aGlzLT5nZXRfYmFzZSgkcmV0dXJuWzBdKSk7CgkJfQoJCWVsc2VpZiAoJHJldHVybiA9ICR0aGlzLT5nZXRfc291cmNlX3RhZ3MoJycsICdjb3B5cmlnaHQnKSkKCQl7CgkJCXJldHVybiAkdGhpcy0+c2FuaXRpemUoJHJldHVyblswXVsnZGF0YSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCX0KCQllbHNlaWYgKCRyZXR1cm4gPSAkdGhpcy0+Z2V0X3NvdXJjZV90YWdzKFNJTVBMRVBJRV9OQU1FU1BBQ0VfRENfMTEsICdyaWdodHMnKSkKCQl7CgkJCXJldHVybiAkdGhpcy0+c2FuaXRpemUoJHJldHVyblswXVsnZGF0YSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCX0KCQllbHNlaWYgKCRyZXR1cm4gPSAkdGhpcy0+Z2V0X3NvdXJjZV90YWdzKFNJTVBMRVBJRV9OQU1FU1BBQ0VfRENfMTAsICdyaWdodHMnKSkKCQl7CgkJCXJldHVybiAkdGhpcy0+c2FuaXRpemUoJHJldHVyblswXVsnZGF0YSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCX0KCQllbHNlCgkJewoJCQlyZXR1cm4gbnVsbDsKCQl9Cgl9CgoJZnVuY3Rpb24gZ2V0X2xhbmd1YWdlKCkKCXsKCQlpZiAoJHJldHVybiA9ICR0aGlzLT5nZXRfc291cmNlX3RhZ3MoJycsICdsYW5ndWFnZScpKQoJCXsKCQkJcmV0dXJuICR0aGlzLT5zYW5pdGl6ZSgkcmV0dXJuWzBdWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJfQoJCWVsc2VpZiAoJHJldHVybiA9ICR0aGlzLT5nZXRfc291cmNlX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9EQ18xMSwgJ2xhbmd1YWdlJykpCgkJewoJCQlyZXR1cm4gJHRoaXMtPnNhbml0aXplKCRyZXR1cm5bMF1bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQl9CgkJZWxzZWlmICgkcmV0dXJuID0gJHRoaXMtPmdldF9zb3VyY2VfdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX0RDXzEwLCAnbGFuZ3VhZ2UnKSkKCQl7CgkJCXJldHVybiAkdGhpcy0+c2FuaXRpemUoJHJldHVyblswXVsnZGF0YSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCX0KCQllbHNlaWYgKGlzc2V0KCR0aGlzLT5kYXRhWyd4bWxfbGFuZyddKSkKCQl7CgkJCXJldHVybiAkdGhpcy0+c2FuaXRpemUoJHRoaXMtPmRhdGFbJ3htbF9sYW5nJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJfQoJCWVsc2UKCQl7CgkJCXJldHVybiBudWxsOwoJCX0KCX0KCglmdW5jdGlvbiBnZXRfbGF0aXR1ZGUoKQoJewoJCWlmICgkcmV0dXJuID0gJHRoaXMtPmdldF9zb3VyY2VfdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX1czQ19CQVNJQ19HRU8sICdsYXQnKSkKCQl7CgkJCXJldHVybiAoZmxvYXQpICRyZXR1cm5bMF1bJ2RhdGEnXTsKCQl9CgkJZWxzZWlmICgoJHJldHVybiA9ICR0aGlzLT5nZXRfc291cmNlX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9HRU9SU1MsICdwb2ludCcpKSAmJiBwcmVnX21hdGNoKCcvXigoPzotKT9bMC05XSsoPzpcLlswLTldKykpICgoPzotKT9bMC05XSsoPzpcLlswLTldKykpJC8nLCAkcmV0dXJuWzBdWydkYXRhJ10sICRtYXRjaCkpCgkJewoJCQlyZXR1cm4gKGZsb2F0KSAkbWF0Y2hbMV07CgkJfQoJCWVsc2UKCQl7CgkJCXJldHVybiBudWxsOwoJCX0KCX0KCglmdW5jdGlvbiBnZXRfbG9uZ2l0dWRlKCkKCXsKCQlpZiAoJHJldHVybiA9ICR0aGlzLT5nZXRfc291cmNlX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9XM0NfQkFTSUNfR0VPLCAnbG9uZycpKQoJCXsKCQkJcmV0dXJuIChmbG9hdCkgJHJldHVyblswXVsnZGF0YSddOwoJCX0KCQllbHNlaWYgKCRyZXR1cm4gPSAkdGhpcy0+Z2V0X3NvdXJjZV90YWdzKFNJTVBMRVBJRV9OQU1FU1BBQ0VfVzNDX0JBU0lDX0dFTywgJ2xvbicpKQoJCXsKCQkJcmV0dXJuIChmbG9hdCkgJHJldHVyblswXVsnZGF0YSddOwoJCX0KCQllbHNlaWYgKCgkcmV0dXJuID0gJHRoaXMtPmdldF9zb3VyY2VfdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX0dFT1JTUywgJ3BvaW50JykpICYmIHByZWdfbWF0Y2goJy9eKCg/Oi0pP1swLTldKyg/OlwuWzAtOV0rKSkgKCg/Oi0pP1swLTldKyg/OlwuWzAtOV0rKSkkLycsICRyZXR1cm5bMF1bJ2RhdGEnXSwgJG1hdGNoKSkKCQl7CgkJCXJldHVybiAoZmxvYXQpICRtYXRjaFsyXTsKCQl9CgkJZWxzZQoJCXsKCQkJcmV0dXJuIG51bGw7CgkJfQoJfQoKCWZ1bmN0aW9uIGdldF9pbWFnZV91cmwoKQoJewoJCWlmICgkcmV0dXJuID0gJHRoaXMtPmdldF9zb3VyY2VfdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX0lUVU5FUywgJ2ltYWdlJykpCgkJewoJCQlyZXR1cm4gJHRoaXMtPnNhbml0aXplKCRyZXR1cm5bMF1bJ2F0dHJpYnMnXVsnJ11bJ2hyZWYnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9JUkkpOwoJCX0KCQllbHNlaWYgKCRyZXR1cm4gPSAkdGhpcy0+Z2V0X3NvdXJjZV90YWdzKFNJTVBMRVBJRV9OQU1FU1BBQ0VfQVRPTV8xMCwgJ2xvZ28nKSkKCQl7CgkJCXJldHVybiAkdGhpcy0+c2FuaXRpemUoJHJldHVyblswXVsnZGF0YSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX0lSSSwgJHRoaXMtPmdldF9iYXNlKCRyZXR1cm5bMF0pKTsKCQl9CgkJZWxzZWlmICgkcmV0dXJuID0gJHRoaXMtPmdldF9zb3VyY2VfdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMTAsICdpY29uJykpCgkJewoJCQlyZXR1cm4gJHRoaXMtPnNhbml0aXplKCRyZXR1cm5bMF1bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9JUkksICR0aGlzLT5nZXRfYmFzZSgkcmV0dXJuWzBdKSk7CgkJfQoJCWVsc2UKCQl7CgkJCXJldHVybiBudWxsOwoJCX0KCX0KfQoKY2xhc3MgU2ltcGxlUGllX0F1dGhvcgp7Cgl2YXIgJG5hbWU7Cgl2YXIgJGxpbms7Cgl2YXIgJGVtYWlsOwoKCS8vIENvbnN0cnVjdG9yLCB1c2VkIHRvIGlucHV0IHRoZSBkYXRhCglmdW5jdGlvbiBTaW1wbGVQaWVfQXV0aG9yKCRuYW1lID0gbnVsbCwgJGxpbmsgPSBudWxsLCAkZW1haWwgPSBudWxsKQoJewoJCSR0aGlzLT5uYW1lID0gJG5hbWU7CgkJJHRoaXMtPmxpbmsgPSAkbGluazsKCQkkdGhpcy0+ZW1haWwgPSAkZW1haWw7Cgl9CgoJZnVuY3Rpb24gX190b1N0cmluZygpCgl7CgkJLy8gVGhlcmUgaXMgbm8gJHRoaXMtPmRhdGEgaGVyZQoJCXJldHVybiBtZDUoc2VyaWFsaXplKCR0aGlzKSk7Cgl9CgoJZnVuY3Rpb24gZ2V0X25hbWUoKQoJewoJCWlmICgkdGhpcy0+bmFtZSAhPT0gbnVsbCkKCQl7CgkJCXJldHVybiAkdGhpcy0+bmFtZTsKCQl9CgkJZWxzZQoJCXsKCQkJcmV0dXJuIG51bGw7CgkJfQoJfQoKCWZ1bmN0aW9uIGdldF9saW5rKCkKCXsKCQlpZiAoJHRoaXMtPmxpbmsgIT09IG51bGwpCgkJewoJCQlyZXR1cm4gJHRoaXMtPmxpbms7CgkJfQoJCWVsc2UKCQl7CgkJCXJldHVybiBudWxsOwoJCX0KCX0KCglmdW5jdGlvbiBnZXRfZW1haWwoKQoJewoJCWlmICgkdGhpcy0+ZW1haWwgIT09IG51bGwpCgkJewoJCQlyZXR1cm4gJHRoaXMtPmVtYWlsOwoJCX0KCQllbHNlCgkJewoJCQlyZXR1cm4gbnVsbDsKCQl9Cgl9Cn0KCmNsYXNzIFNpbXBsZVBpZV9DYXRlZ29yeQp7Cgl2YXIgJHRlcm07Cgl2YXIgJHNjaGVtZTsKCXZhciAkbGFiZWw7CgoJLy8gQ29uc3RydWN0b3IsIHVzZWQgdG8gaW5wdXQgdGhlIGRhdGEKCWZ1bmN0aW9uIFNpbXBsZVBpZV9DYXRlZ29yeSgkdGVybSA9IG51bGwsICRzY2hlbWUgPSBudWxsLCAkbGFiZWwgPSBudWxsKQoJewoJCSR0aGlzLT50ZXJtID0gJHRlcm07CgkJJHRoaXMtPnNjaGVtZSA9ICRzY2hlbWU7CgkJJHRoaXMtPmxhYmVsID0gJGxhYmVsOwoJfQoKCWZ1bmN0aW9uIF9fdG9TdHJpbmcoKQoJewoJCS8vIFRoZXJlIGlzIG5vICR0aGlzLT5kYXRhIGhlcmUKCQlyZXR1cm4gbWQ1KHNlcmlhbGl6ZSgkdGhpcykpOwoJfQoKCWZ1bmN0aW9uIGdldF90ZXJtKCkKCXsKCQlpZiAoJHRoaXMtPnRlcm0gIT09IG51bGwpCgkJewoJCQlyZXR1cm4gJHRoaXMtPnRlcm07CgkJfQoJCWVsc2UKCQl7CgkJCXJldHVybiBudWxsOwoJCX0KCX0KCglmdW5jdGlvbiBnZXRfc2NoZW1lKCkKCXsKCQlpZiAoJHRoaXMtPnNjaGVtZSAhPT0gbnVsbCkKCQl7CgkJCXJldHVybiAkdGhpcy0+c2NoZW1lOwoJCX0KCQllbHNlCgkJewoJCQlyZXR1cm4gbnVsbDsKCQl9Cgl9CgoJZnVuY3Rpb24gZ2V0X2xhYmVsKCkKCXsKCQlpZiAoJHRoaXMtPmxhYmVsICE9PSBudWxsKQoJCXsKCQkJcmV0dXJuICR0aGlzLT5sYWJlbDsKCQl9CgkJZWxzZQoJCXsKCQkJcmV0dXJuICR0aGlzLT5nZXRfdGVybSgpOwoJCX0KCX0KfQoKY2xhc3MgU2ltcGxlUGllX0VuY2xvc3VyZQp7Cgl2YXIgJGJpdHJhdGU7Cgl2YXIgJGNhcHRpb25zOwoJdmFyICRjYXRlZ29yaWVzOwoJdmFyICRjaGFubmVsczsKCXZhciAkY29weXJpZ2h0OwoJdmFyICRjcmVkaXRzOwoJdmFyICRkZXNjcmlwdGlvbjsKCXZhciAkZHVyYXRpb247Cgl2YXIgJGV4cHJlc3Npb247Cgl2YXIgJGZyYW1lcmF0ZTsKCXZhciAkaGFuZGxlcjsKCXZhciAkaGFzaGVzOwoJdmFyICRoZWlnaHQ7Cgl2YXIgJGphdmFzY3JpcHQ7Cgl2YXIgJGtleXdvcmRzOwoJdmFyICRsYW5nOwoJdmFyICRsZW5ndGg7Cgl2YXIgJGxpbms7Cgl2YXIgJG1lZGl1bTsKCXZhciAkcGxheWVyOwoJdmFyICRyYXRpbmdzOwoJdmFyICRyZXN0cmljdGlvbnM7Cgl2YXIgJHNhbXBsaW5ncmF0ZTsKCXZhciAkdGh1bWJuYWlsczsKCXZhciAkdGl0bGU7Cgl2YXIgJHR5cGU7Cgl2YXIgJHdpZHRoOwoKCS8vIENvbnN0cnVjdG9yLCB1c2VkIHRvIGlucHV0IHRoZSBkYXRhCglmdW5jdGlvbiBTaW1wbGVQaWVfRW5jbG9zdXJlKCRsaW5rID0gbnVsbCwgJHR5cGUgPSBudWxsLCAkbGVuZ3RoID0gbnVsbCwgJGphdmFzY3JpcHQgPSBudWxsLCAkYml0cmF0ZSA9IG51bGwsICRjYXB0aW9ucyA9IG51bGwsICRjYXRlZ29yaWVzID0gbnVsbCwgJGNoYW5uZWxzID0gbnVsbCwgJGNvcHlyaWdodCA9IG51bGwsICRjcmVkaXRzID0gbnVsbCwgJGRlc2NyaXB0aW9uID0gbnVsbCwgJGR1cmF0aW9uID0gbnVsbCwgJGV4cHJlc3Npb24gPSBudWxsLCAkZnJhbWVyYXRlID0gbnVsbCwgJGhhc2hlcyA9IG51bGwsICRoZWlnaHQgPSBudWxsLCAka2V5d29yZHMgPSBudWxsLCAkbGFuZyA9IG51bGwsICRtZWRpdW0gPSBudWxsLCAkcGxheWVyID0gbnVsbCwgJHJhdGluZ3MgPSBudWxsLCAkcmVzdHJpY3Rpb25zID0gbnVsbCwgJHNhbXBsaW5ncmF0ZSA9IG51bGwsICR0aHVtYm5haWxzID0gbnVsbCwgJHRpdGxlID0gbnVsbCwgJHdpZHRoID0gbnVsbCkKCXsKCQkkdGhpcy0+Yml0cmF0ZSA9ICRiaXRyYXRlOwoJCSR0aGlzLT5jYXB0aW9ucyA9ICRjYXB0aW9uczsKCQkkdGhpcy0+Y2F0ZWdvcmllcyA9ICRjYXRlZ29yaWVzOwoJCSR0aGlzLT5jaGFubmVscyA9ICRjaGFubmVsczsKCQkkdGhpcy0+Y29weXJpZ2h0ID0gJGNvcHlyaWdodDsKCQkkdGhpcy0+Y3JlZGl0cyA9ICRjcmVkaXRzOwoJCSR0aGlzLT5kZXNjcmlwdGlvbiA9ICRkZXNjcmlwdGlvbjsKCQkkdGhpcy0+ZHVyYXRpb24gPSAkZHVyYXRpb247CgkJJHRoaXMtPmV4cHJlc3Npb24gPSAkZXhwcmVzc2lvbjsKCQkkdGhpcy0+ZnJhbWVyYXRlID0gJGZyYW1lcmF0ZTsKCQkkdGhpcy0+aGFzaGVzID0gJGhhc2hlczsKCQkkdGhpcy0+aGVpZ2h0ID0gJGhlaWdodDsKCQkkdGhpcy0+amF2YXNjcmlwdCA9ICRqYXZhc2NyaXB0OwoJCSR0aGlzLT5rZXl3b3JkcyA9ICRrZXl3b3JkczsKCQkkdGhpcy0+bGFuZyA9ICRsYW5nOwoJCSR0aGlzLT5sZW5ndGggPSAkbGVuZ3RoOwoJCSR0aGlzLT5saW5rID0gJGxpbms7CgkJJHRoaXMtPm1lZGl1bSA9ICRtZWRpdW07CgkJJHRoaXMtPnBsYXllciA9ICRwbGF5ZXI7CgkJJHRoaXMtPnJhdGluZ3MgPSAkcmF0aW5nczsKCQkkdGhpcy0+cmVzdHJpY3Rpb25zID0gJHJlc3RyaWN0aW9uczsKCQkkdGhpcy0+c2FtcGxpbmdyYXRlID0gJHNhbXBsaW5ncmF0ZTsKCQkkdGhpcy0+dGh1bWJuYWlscyA9ICR0aHVtYm5haWxzOwoJCSR0aGlzLT50aXRsZSA9ICR0aXRsZTsKCQkkdGhpcy0+dHlwZSA9ICR0eXBlOwoJCSR0aGlzLT53aWR0aCA9ICR3aWR0aDsKCQlpZiAoY2xhc3NfZXhpc3RzKCdpZG5hX2NvbnZlcnQnKSkKCQl7CgkJCSRpZG4gPSYgbmV3IGlkbmFfY29udmVydDsKCQkJJHBhcnNlZCA9IFNpbXBsZVBpZV9NaXNjOjpwYXJzZV91cmwoJGxpbmspOwoJCQkkdGhpcy0+bGluayA9IFNpbXBsZVBpZV9NaXNjOjpjb21wcmVzc19wYXJzZV91cmwoJHBhcnNlZFsnc2NoZW1lJ10sICRpZG4tPmVuY29kZSgkcGFyc2VkWydhdXRob3JpdHknXSksICRwYXJzZWRbJ3BhdGgnXSwgJHBhcnNlZFsncXVlcnknXSwgJHBhcnNlZFsnZnJhZ21lbnQnXSk7CgkJfQoJCSR0aGlzLT5oYW5kbGVyID0gJHRoaXMtPmdldF9oYW5kbGVyKCk7IC8vIE5lZWRzIHRvIGxvYWQgbGFzdAoJfQoKCWZ1bmN0aW9uIF9fdG9TdHJpbmcoKQoJewoJCS8vIFRoZXJlIGlzIG5vICR0aGlzLT5kYXRhIGhlcmUKCQlyZXR1cm4gbWQ1KHNlcmlhbGl6ZSgkdGhpcykpOwoJfQoKCWZ1bmN0aW9uIGdldF9iaXRyYXRlKCkKCXsKCQlpZiAoJHRoaXMtPmJpdHJhdGUgIT09IG51bGwpCgkJewoJCQlyZXR1cm4gJHRoaXMtPmJpdHJhdGU7CgkJfQoJCWVsc2UKCQl7CgkJCXJldHVybiBudWxsOwoJCX0KCX0KCglmdW5jdGlvbiBnZXRfY2FwdGlvbigka2V5ID0gMCkKCXsKCQkkY2FwdGlvbnMgPSAkdGhpcy0+Z2V0X2NhcHRpb25zKCk7CgkJaWYgKGlzc2V0KCRjYXB0aW9uc1ska2V5XSkpCgkJewoJCQlyZXR1cm4gJGNhcHRpb25zWyRrZXldOwoJCX0KCQllbHNlCgkJewoJCQlyZXR1cm4gbnVsbDsKCQl9Cgl9CgoJZnVuY3Rpb24gZ2V0X2NhcHRpb25zKCkKCXsKCQlpZiAoJHRoaXMtPmNhcHRpb25zICE9PSBudWxsKQoJCXsKCQkJcmV0dXJuICR0aGlzLT5jYXB0aW9uczsKCQl9CgkJZWxzZQoJCXsKCQkJcmV0dXJuIG51bGw7CgkJfQoJfQoKCWZ1bmN0aW9uIGdldF9jYXRlZ29yeSgka2V5ID0gMCkKCXsKCQkkY2F0ZWdvcmllcyA9ICR0aGlzLT5nZXRfY2F0ZWdvcmllcygpOwoJCWlmIChpc3NldCgkY2F0ZWdvcmllc1ska2V5XSkpCgkJewoJCQlyZXR1cm4gJGNhdGVnb3JpZXNbJGtleV07CgkJfQoJCWVsc2UKCQl7CgkJCXJldHVybiBudWxsOwoJCX0KCX0KCglmdW5jdGlvbiBnZXRfY2F0ZWdvcmllcygpCgl7CgkJaWYgKCR0aGlzLT5jYXRlZ29yaWVzICE9PSBudWxsKQoJCXsKCQkJcmV0dXJuICR0aGlzLT5jYXRlZ29yaWVzOwoJCX0KCQllbHNlCgkJewoJCQlyZXR1cm4gbnVsbDsKCQl9Cgl9CgoJZnVuY3Rpb24gZ2V0X2NoYW5uZWxzKCkKCXsKCQlpZiAoJHRoaXMtPmNoYW5uZWxzICE9PSBudWxsKQoJCXsKCQkJcmV0dXJuICR0aGlzLT5jaGFubmVsczsKCQl9CgkJZWxzZQoJCXsKCQkJcmV0dXJuIG51bGw7CgkJfQoJfQoKCWZ1bmN0aW9uIGdldF9jb3B5cmlnaHQoKQoJewoJCWlmICgkdGhpcy0+Y29weXJpZ2h0ICE9PSBudWxsKQoJCXsKCQkJcmV0dXJuICR0aGlzLT5jb3B5cmlnaHQ7CgkJfQoJCWVsc2UKCQl7CgkJCXJldHVybiBudWxsOwoJCX0KCX0KCglmdW5jdGlvbiBnZXRfY3JlZGl0KCRrZXkgPSAwKQoJewoJCSRjcmVkaXRzID0gJHRoaXMtPmdldF9jcmVkaXRzKCk7CgkJaWYgKGlzc2V0KCRjcmVkaXRzWyRrZXldKSkKCQl7CgkJCXJldHVybiAkY3JlZGl0c1ska2V5XTsKCQl9CgkJZWxzZQoJCXsKCQkJcmV0dXJuIG51bGw7CgkJfQoJfQoKCWZ1bmN0aW9uIGdldF9jcmVkaXRzKCkKCXsKCQlpZiAoJHRoaXMtPmNyZWRpdHMgIT09IG51bGwpCgkJewoJCQlyZXR1cm4gJHRoaXMtPmNyZWRpdHM7CgkJfQoJCWVsc2UKCQl7CgkJCXJldHVybiBudWxsOwoJCX0KCX0KCglmdW5jdGlvbiBnZXRfZGVzY3JpcHRpb24oKQoJewoJCWlmICgkdGhpcy0+ZGVzY3JpcHRpb24gIT09IG51bGwpCgkJewoJCQlyZXR1cm4gJHRoaXMtPmRlc2NyaXB0aW9uOwoJCX0KCQllbHNlCgkJewoJCQlyZXR1cm4gbnVsbDsKCQl9Cgl9CgoJZnVuY3Rpb24gZ2V0X2R1cmF0aW9uKCRjb252ZXJ0ID0gZmFsc2UpCgl7CgkJaWYgKCR0aGlzLT5kdXJhdGlvbiAhPT0gbnVsbCkKCQl7CgkJCWlmICgkY29udmVydCkKCQkJewoJCQkJJHRpbWUgPSBTaW1wbGVQaWVfTWlzYzo6dGltZV9obXMoJHRoaXMtPmR1cmF0aW9uKTsKCQkJCXJldHVybiAkdGltZTsKCQkJfQoJCQllbHNlCgkJCXsKCQkJCXJldHVybiAkdGhpcy0+ZHVyYXRpb247CgkJCX0KCQl9CgkJZWxzZQoJCXsKCQkJcmV0dXJuIG51bGw7CgkJfQoJfQoKCWZ1bmN0aW9uIGdldF9leHByZXNzaW9uKCkKCXsKCQlpZiAoJHRoaXMtPmV4cHJlc3Npb24gIT09IG51bGwpCgkJewoJCQlyZXR1cm4gJHRoaXMtPmV4cHJlc3Npb247CgkJfQoJCWVsc2UKCQl7CgkJCXJldHVybiAnZnVsbCc7CgkJfQoJfQoKCWZ1bmN0aW9uIGdldF9leHRlbnNpb24oKQoJewoJCWlmICgkdGhpcy0+bGluayAhPT0gbnVsbCkKCQl7CgkJCSR1cmwgPSBTaW1wbGVQaWVfTWlzYzo6cGFyc2VfdXJsKCR0aGlzLT5saW5rKTsKCQkJaWYgKCR1cmxbJ3BhdGgnXSAhPT0gJycpCgkJCXsKCQkJCXJldHVybiBwYXRoaW5mbygkdXJsWydwYXRoJ10sIFBBVEhJTkZPX0VYVEVOU0lPTik7CgkJCX0KCQl9CgkJcmV0dXJuIG51bGw7Cgl9CgoJZnVuY3Rpb24gZ2V0X2ZyYW1lcmF0ZSgpCgl7CgkJaWYgKCR0aGlzLT5mcmFtZXJhdGUgIT09IG51bGwpCgkJewoJCQlyZXR1cm4gJHRoaXMtPmZyYW1lcmF0ZTsKCQl9CgkJZWxzZQoJCXsKCQkJcmV0dXJuIG51bGw7CgkJfQoJfQoKCWZ1bmN0aW9uIGdldF9oYW5kbGVyKCkKCXsKCQlyZXR1cm4gJHRoaXMtPmdldF9yZWFsX3R5cGUodHJ1ZSk7Cgl9CgoJZnVuY3Rpb24gZ2V0X2hhc2goJGtleSA9IDApCgl7CgkJJGhhc2hlcyA9ICR0aGlzLT5nZXRfaGFzaGVzKCk7CgkJaWYgKGlzc2V0KCRoYXNoZXNbJGtleV0pKQoJCXsKCQkJcmV0dXJuICRoYXNoZXNbJGtleV07CgkJfQoJCWVsc2UKCQl7CgkJCXJldHVybiBudWxsOwoJCX0KCX0KCglmdW5jdGlvbiBnZXRfaGFzaGVzKCkKCXsKCQlpZiAoJHRoaXMtPmhhc2hlcyAhPT0gbnVsbCkKCQl7CgkJCXJldHVybiAkdGhpcy0+aGFzaGVzOwoJCX0KCQllbHNlCgkJewoJCQlyZXR1cm4gbnVsbDsKCQl9Cgl9CgoJZnVuY3Rpb24gZ2V0X2hlaWdodCgpCgl7CgkJaWYgKCR0aGlzLT5oZWlnaHQgIT09IG51bGwpCgkJewoJCQlyZXR1cm4gJHRoaXMtPmhlaWdodDsKCQl9CgkJZWxzZQoJCXsKCQkJcmV0dXJuIG51bGw7CgkJfQoJfQoKCWZ1bmN0aW9uIGdldF9sYW5ndWFnZSgpCgl7CgkJaWYgKCR0aGlzLT5sYW5nICE9PSBudWxsKQoJCXsKCQkJcmV0dXJuICR0aGlzLT5sYW5nOwoJCX0KCQllbHNlCgkJewoJCQlyZXR1cm4gbnVsbDsKCQl9Cgl9CgoJZnVuY3Rpb24gZ2V0X2tleXdvcmQoJGtleSA9IDApCgl7CgkJJGtleXdvcmRzID0gJHRoaXMtPmdldF9rZXl3b3JkcygpOwoJCWlmIChpc3NldCgka2V5d29yZHNbJGtleV0pKQoJCXsKCQkJcmV0dXJuICRrZXl3b3Jkc1ska2V5XTsKCQl9CgkJZWxzZQoJCXsKCQkJcmV0dXJuIG51bGw7CgkJfQoJfQoKCWZ1bmN0aW9uIGdldF9rZXl3b3JkcygpCgl7CgkJaWYgKCR0aGlzLT5rZXl3b3JkcyAhPT0gbnVsbCkKCQl7CgkJCXJldHVybiAkdGhpcy0+a2V5d29yZHM7CgkJfQoJCWVsc2UKCQl7CgkJCXJldHVybiBudWxsOwoJCX0KCX0KCglmdW5jdGlvbiBnZXRfbGVuZ3RoKCkKCXsKCQlpZiAoJHRoaXMtPmxlbmd0aCAhPT0gbnVsbCkKCQl7CgkJCXJldHVybiAkdGhpcy0+bGVuZ3RoOwoJCX0KCQllbHNlCgkJewoJCQlyZXR1cm4gbnVsbDsKCQl9Cgl9CgoJZnVuY3Rpb24gZ2V0X2xpbmsoKQoJewoJCWlmICgkdGhpcy0+bGluayAhPT0gbnVsbCkKCQl7CgkJCXJldHVybiB1cmxkZWNvZGUoJHRoaXMtPmxpbmspOwoJCX0KCQllbHNlCgkJewoJCQlyZXR1cm4gbnVsbDsKCQl9Cgl9CgoJZnVuY3Rpb24gZ2V0X21lZGl1bSgpCgl7CgkJaWYgKCR0aGlzLT5tZWRpdW0gIT09IG51bGwpCgkJewoJCQlyZXR1cm4gJHRoaXMtPm1lZGl1bTsKCQl9CgkJZWxzZQoJCXsKCQkJcmV0dXJuIG51bGw7CgkJfQoJfQoKCWZ1bmN0aW9uIGdldF9wbGF5ZXIoKQoJewoJCWlmICgkdGhpcy0+cGxheWVyICE9PSBudWxsKQoJCXsKCQkJcmV0dXJuICR0aGlzLT5wbGF5ZXI7CgkJfQoJCWVsc2UKCQl7CgkJCXJldHVybiBudWxsOwoJCX0KCX0KCglmdW5jdGlvbiBnZXRfcmF0aW5nKCRrZXkgPSAwKQoJewoJCSRyYXRpbmdzID0gJHRoaXMtPmdldF9yYXRpbmdzKCk7CgkJaWYgKGlzc2V0KCRyYXRpbmdzWyRrZXldKSkKCQl7CgkJCXJldHVybiAkcmF0aW5nc1ska2V5XTsKCQl9CgkJZWxzZQoJCXsKCQkJcmV0dXJuIG51bGw7CgkJfQoJfQoKCWZ1bmN0aW9uIGdldF9yYXRpbmdzKCkKCXsKCQlpZiAoJHRoaXMtPnJhdGluZ3MgIT09IG51bGwpCgkJewoJCQlyZXR1cm4gJHRoaXMtPnJhdGluZ3M7CgkJfQoJCWVsc2UKCQl7CgkJCXJldHVybiBudWxsOwoJCX0KCX0KCglmdW5jdGlvbiBnZXRfcmVzdHJpY3Rpb24oJGtleSA9IDApCgl7CgkJJHJlc3RyaWN0aW9ucyA9ICR0aGlzLT5nZXRfcmVzdHJpY3Rpb25zKCk7CgkJaWYgKGlzc2V0KCRyZXN0cmljdGlvbnNbJGtleV0pKQoJCXsKCQkJcmV0dXJuICRyZXN0cmljdGlvbnNbJGtleV07CgkJfQoJCWVsc2UKCQl7CgkJCXJldHVybiBudWxsOwoJCX0KCX0KCglmdW5jdGlvbiBnZXRfcmVzdHJpY3Rpb25zKCkKCXsKCQlpZiAoJHRoaXMtPnJlc3RyaWN0aW9ucyAhPT0gbnVsbCkKCQl7CgkJCXJldHVybiAkdGhpcy0+cmVzdHJpY3Rpb25zOwoJCX0KCQllbHNlCgkJewoJCQlyZXR1cm4gbnVsbDsKCQl9Cgl9CgoJZnVuY3Rpb24gZ2V0X3NhbXBsaW5nX3JhdGUoKQoJewoJCWlmICgkdGhpcy0+c2FtcGxpbmdyYXRlICE9PSBudWxsKQoJCXsKCQkJcmV0dXJuICR0aGlzLT5zYW1wbGluZ3JhdGU7CgkJfQoJCWVsc2UKCQl7CgkJCXJldHVybiBudWxsOwoJCX0KCX0KCglmdW5jdGlvbiBnZXRfc2l6ZSgpCgl7CgkJJGxlbmd0aCA9ICR0aGlzLT5nZXRfbGVuZ3RoKCk7CgkJaWYgKCRsZW5ndGggIT09IG51bGwpCgkJewoJCQlyZXR1cm4gcm91bmQoJGxlbmd0aC8xMDQ4NTc2LCAyKTsKCQl9CgkJZWxzZQoJCXsKCQkJcmV0dXJuIG51bGw7CgkJfQoJfQoKCWZ1bmN0aW9uIGdldF90aHVtYm5haWwoJGtleSA9IDApCgl7CgkJJHRodW1ibmFpbHMgPSAkdGhpcy0+Z2V0X3RodW1ibmFpbHMoKTsKCQlpZiAoaXNzZXQoJHRodW1ibmFpbHNbJGtleV0pKQoJCXsKCQkJcmV0dXJuICR0aHVtYm5haWxzWyRrZXldOwoJCX0KCQllbHNlCgkJewoJCQlyZXR1cm4gbnVsbDsKCQl9Cgl9CgoJZnVuY3Rpb24gZ2V0X3RodW1ibmFpbHMoKQoJewoJCWlmICgkdGhpcy0+dGh1bWJuYWlscyAhPT0gbnVsbCkKCQl7CgkJCXJldHVybiAkdGhpcy0+dGh1bWJuYWlsczsKCQl9CgkJZWxzZQoJCXsKCQkJcmV0dXJuIG51bGw7CgkJfQoJfQoKCWZ1bmN0aW9uIGdldF90aXRsZSgpCgl7CgkJaWYgKCR0aGlzLT50aXRsZSAhPT0gbnVsbCkKCQl7CgkJCXJldHVybiAkdGhpcy0+dGl0bGU7CgkJfQoJCWVsc2UKCQl7CgkJCXJldHVybiBudWxsOwoJCX0KCX0KCglmdW5jdGlvbiBnZXRfdHlwZSgpCgl7CgkJaWYgKCR0aGlzLT50eXBlICE9PSBudWxsKQoJCXsKCQkJcmV0dXJuICR0aGlzLT50eXBlOwoJCX0KCQllbHNlCgkJewoJCQlyZXR1cm4gbnVsbDsKCQl9Cgl9CgoJZnVuY3Rpb24gZ2V0X3dpZHRoKCkKCXsKCQlpZiAoJHRoaXMtPndpZHRoICE9PSBudWxsKQoJCXsKCQkJcmV0dXJuICR0aGlzLT53aWR0aDsKCQl9CgkJZWxzZQoJCXsKCQkJcmV0dXJuIG51bGw7CgkJfQoJfQoKCWZ1bmN0aW9uIG5hdGl2ZV9lbWJlZCgkb3B0aW9ucz0nJykKCXsKCQlyZXR1cm4gJHRoaXMtPmVtYmVkKCRvcHRpb25zLCB0cnVlKTsKCX0KCgkvKioKCSAqIEB0b2RvIElmIHRoZSBkaW1lbnNpb25zIGZvciBtZWRpYTpjb250ZW50IGFyZSBkZWZpbmVkLCB1c2UgdGhlbSB3aGVuIHdpZHRoL2hlaWdodCBhcmUgc2V0IHRvICdhdXRvJy4KCSAqLwoJZnVuY3Rpb24gZW1iZWQoJG9wdGlvbnMgPSAnJywgJG5hdGl2ZSA9IGZhbHNlKQoJewoJCS8vIFNldCB1cCBkZWZhdWx0cwoJCSRhdWRpbyA9ICcnOwoJCSR2aWRlbyA9ICcnOwoJCSRhbHQgPSAnJzsKCQkkYWx0Y2xhc3MgPSAnJzsKCQkkbG9vcCA9ICdmYWxzZSc7CgkJJHdpZHRoID0gJ2F1dG8nOwoJCSRoZWlnaHQgPSAnYXV0byc7CgkJJGJnY29sb3IgPSAnI2ZmZmZmZic7CgkJJG1lZGlhcGxheWVyID0gJyc7CgkJJHdpZGVzY3JlZW4gPSBmYWxzZTsKCQkkaGFuZGxlciA9ICR0aGlzLT5nZXRfaGFuZGxlcigpOwoJCSR0eXBlID0gJHRoaXMtPmdldF9yZWFsX3R5cGUoKTsKCgkJLy8gUHJvY2VzcyBvcHRpb25zIGFuZCByZWFzc2lnbiB2YWx1ZXMgYXMgbmVjZXNzYXJ5CgkJaWYgKGlzX2FycmF5KCRvcHRpb25zKSkKCQl7CgkJCWV4dHJhY3QoJG9wdGlvbnMpOwoJCX0KCQllbHNlCgkJewoJCQkkb3B0aW9ucyA9IGV4cGxvZGUoJywnLCAkb3B0aW9ucyk7CgkJCWZvcmVhY2goJG9wdGlvbnMgYXMgJG9wdGlvbikKCQkJewoJCQkJJG9wdCA9IGV4cGxvZGUoJzonLCAkb3B0aW9uLCAyKTsKCQkJCWlmIChpc3NldCgkb3B0WzBdLCAkb3B0WzFdKSkKCQkJCXsKCQkJCQkkb3B0WzBdID0gdHJpbSgkb3B0WzBdKTsKCQkJCQkkb3B0WzFdID0gdHJpbSgkb3B0WzFdKTsKCQkJCQlzd2l0Y2ggKCRvcHRbMF0pCgkJCQkJewoJCQkJCQljYXNlICdhdWRpbyc6CgkJCQkJCQkkYXVkaW8gPSAkb3B0WzFdOwoJCQkJCQkJYnJlYWs7CgoJCQkJCQljYXNlICd2aWRlbyc6CgkJCQkJCQkkdmlkZW8gPSAkb3B0WzFdOwoJCQkJCQkJYnJlYWs7CgoJCQkJCQljYXNlICdhbHQnOgoJCQkJCQkJJGFsdCA9ICRvcHRbMV07CgkJCQkJCQlicmVhazsKCgkJCQkJCWNhc2UgJ2FsdGNsYXNzJzoKCQkJCQkJCSRhbHRjbGFzcyA9ICRvcHRbMV07CgkJCQkJCQlicmVhazsKCgkJCQkJCWNhc2UgJ2xvb3AnOgoJCQkJCQkJJGxvb3AgPSAkb3B0WzFdOwoJCQkJCQkJYnJlYWs7CgoJCQkJCQljYXNlICd3aWR0aCc6CgkJCQkJCQkkd2lkdGggPSAkb3B0WzFdOwoJCQkJCQkJYnJlYWs7CgoJCQkJCQljYXNlICdoZWlnaHQnOgoJCQkJCQkJJGhlaWdodCA9ICRvcHRbMV07CgkJCQkJCQlicmVhazsKCgkJCQkJCWNhc2UgJ2JnY29sb3InOgoJCQkJCQkJJGJnY29sb3IgPSAkb3B0WzFdOwoJCQkJCQkJYnJlYWs7CgoJCQkJCQljYXNlICdtZWRpYXBsYXllcic6CgkJCQkJCQkkbWVkaWFwbGF5ZXIgPSAkb3B0WzFdOwoJCQkJCQkJYnJlYWs7CgoJCQkJCQljYXNlICd3aWRlc2NyZWVuJzoKCQkJCQkJCSR3aWRlc2NyZWVuID0gJG9wdFsxXTsKCQkJCQkJCWJyZWFrOwoJCQkJCX0KCQkJCX0KCQkJfQoJCX0KCgkJJG1pbWUgPSBleHBsb2RlKCcvJywgJHR5cGUsIDIpOwoJCSRtaW1lID0gJG1pbWVbMF07CgoJCS8vIFByb2Nlc3MgdmFsdWVzIGZvciAnYXV0bycKCQlpZiAoJHdpZHRoID09ICdhdXRvJykKCQl7CgkJCWlmICgkbWltZSA9PSAndmlkZW8nKQoJCQl7CgkJCQlpZiAoJGhlaWdodCA9PSAnYXV0bycpCgkJCQl7CgkJCQkJJHdpZHRoID0gNDgwOwoJCQkJfQoJCQkJZWxzZWlmICgkd2lkZXNjcmVlbikKCQkJCXsKCQkJCQkkd2lkdGggPSByb3VuZCgoaW50dmFsKCRoZWlnaHQpLzkpKjE2KTsKCQkJCX0KCQkJCWVsc2UKCQkJCXsKCQkJCQkkd2lkdGggPSByb3VuZCgoaW50dmFsKCRoZWlnaHQpLzMpKjQpOwoJCQkJfQoJCQl9CgkJCWVsc2UKCQkJewoJCQkJJHdpZHRoID0gJzEwMCUnOwoJCQl9CgkJfQoKCQlpZiAoJGhlaWdodCA9PSAnYXV0bycpCgkJewoJCQlpZiAoJG1pbWUgPT0gJ2F1ZGlvJykKCQkJewoJCQkJJGhlaWdodCA9IDA7CgkJCX0KCQkJZWxzZWlmICgkbWltZSA9PSAndmlkZW8nKQoJCQl7CgkJCQlpZiAoJHdpZHRoID09ICdhdXRvJykKCQkJCXsKCQkJCQlpZiAoJHdpZGVzY3JlZW4pCgkJCQkJewoJCQkJCQkkaGVpZ2h0ID0gMjcwOwoJCQkJCX0KCQkJCQllbHNlCgkJCQkJewoJCQkJCQkkaGVpZ2h0ID0gMzYwOwoJCQkJCX0KCQkJCX0KCQkJCWVsc2VpZiAoJHdpZGVzY3JlZW4pCgkJCQl7CgkJCQkJJGhlaWdodCA9IHJvdW5kKChpbnR2YWwoJHdpZHRoKS8xNikqOSk7CgkJCQl9CgkJCQllbHNlCgkJCQl7CgkJCQkJJGhlaWdodCA9IHJvdW5kKChpbnR2YWwoJHdpZHRoKS80KSozKTsKCQkJCX0KCQkJfQoJCQllbHNlCgkJCXsKCQkJCSRoZWlnaHQgPSAzNzY7CgkJCX0KCQl9CgkJZWxzZWlmICgkbWltZSA9PSAnYXVkaW8nKQoJCXsKCQkJJGhlaWdodCA9IDA7CgkJfQoKCQkvLyBTZXQgcHJvcGVyIHBsYWNlaG9sZGVyIHZhbHVlCgkJaWYgKCRtaW1lID09ICdhdWRpbycpCgkJewoJCQkkcGxhY2Vob2xkZXIgPSAkYXVkaW87CgkJfQoJCWVsc2VpZiAoJG1pbWUgPT0gJ3ZpZGVvJykKCQl7CgkJCSRwbGFjZWhvbGRlciA9ICR2aWRlbzsKCQl9CgoJCSRlbWJlZCA9ICcnOwoKCQkvLyBNYWtlIHN1cmUgdGhlIEpTIGxpYnJhcnkgaXMgaW5jbHVkZWQKCQlpZiAoISRuYXRpdmUpCgkJewoJCQlzdGF0aWMgJGphdmFzY3JpcHRfb3V0cHV0dGVkID0gbnVsbDsKCQkJaWYgKCEkamF2YXNjcmlwdF9vdXRwdXR0ZWQgJiYgJHRoaXMtPmphdmFzY3JpcHQpCgkJCXsKCQkJCSRlbWJlZCAuPSAnPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iPycgLiBodG1sc3BlY2lhbGNoYXJzKCR0aGlzLT5qYXZhc2NyaXB0KSAuICciPjwvc2NyaXB0Pic7CgkJCQkkamF2YXNjcmlwdF9vdXRwdXR0ZWQgPSB0cnVlOwoJCQl9CgkJfQoKCQkvLyBPZGVvIEZlZWQgTVAzJ3MKCQlpZiAoJGhhbmRsZXIgPT0gJ29kZW8nKQoJCXsKCQkJaWYgKCRuYXRpdmUpCgkJCXsKCQkJCSRlbWJlZCAuPSAnPGVtYmVkIHNyYz0iaHR0cDovL29kZW8uY29tL2ZsYXNoL2F1ZGlvX3BsYXllcl9mdWxsc2l6ZS5zd2YiIHBsdWdpbnNwYWdlPSJodHRwOi8vYWRvYmUuY29tL2dvL2dldGZsYXNocGxheWVyIiB0eXBlPSJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCIgcXVhbGl0eT0iaGlnaCIgd2lkdGg9IjQ0MCIgaGVpZ2h0PSI4MCIgd21vZGU9InRyYW5zcGFyZW50IiBhbGxvd1NjcmlwdEFjY2Vzcz0iYW55IiBmbGFzaHZhcnM9InZhbGlkX3NhbXBsZV9yYXRlPXRydWUmZXh0ZXJuYWxfdXJsPScgLiAkdGhpcy0+Z2V0X2xpbmsoKSAuICciPjwvZW1iZWQ+JzsKCQkJfQoJCQllbHNlCgkJCXsKCQkJCSRlbWJlZCAuPSAnPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPmVtYmVkX29kZW8oIicgLiAkdGhpcy0+Z2V0X2xpbmsoKSAuICciKTs8L3NjcmlwdD4nOwoJCQl9CgkJfQoKCQkvLyBGbGFzaAoJCWVsc2VpZiAoJGhhbmRsZXIgPT0gJ2ZsYXNoJykKCQl7CgkJCWlmICgkbmF0aXZlKQoJCQl7CgkJCQkkZW1iZWQgLj0gIjxlbWJlZCBzcmM9XCIiIC4gJHRoaXMtPmdldF9saW5rKCkgLiAiXCIgcGx1Z2luc3BhZ2U9XCJodHRwOi8vYWRvYmUuY29tL2dvL2dldGZsYXNocGxheWVyXCIgdHlwZT1cIiR0eXBlXCIgcXVhbGl0eT1cImhpZ2hcIiB3aWR0aD1cIiR3aWR0aFwiIGhlaWdodD1cIiRoZWlnaHRcIiBiZ2NvbG9yPVwiJGJnY29sb3JcIiBsb29wPVwiJGxvb3BcIj48L2VtYmVkPiI7CgkJCX0KCQkJZWxzZQoJCQl7CgkJCQkkZW1iZWQgLj0gIjxzY3JpcHQgdHlwZT0ndGV4dC9qYXZhc2NyaXB0Jz5lbWJlZF9mbGFzaCgnJGJnY29sb3InLCAnJHdpZHRoJywgJyRoZWlnaHQnLCAnIiAuICR0aGlzLT5nZXRfbGluaygpIC4gIicsICckbG9vcCcsICckdHlwZScpOzwvc2NyaXB0PiI7CgkJCX0KCQl9CgoJCS8vIEZsYXNoIE1lZGlhIFBsYXllciBmaWxlIHR5cGVzLgoJCS8vIFByZWZlcnJlZCBoYW5kbGVyIGZvciBNUDMgZmlsZSB0eXBlcy4KCQllbHNlaWYgKCRoYW5kbGVyID09ICdmbWVkaWEnIHx8ICgkaGFuZGxlciA9PSAnbXAzJyAmJiAkbWVkaWFwbGF5ZXIgIT0gJycpKQoJCXsKCQkJJGhlaWdodCArPSAyMDsKCQkJaWYgKCRuYXRpdmUpCgkJCXsKCQkJCSRlbWJlZCAuPSAiPGVtYmVkIHNyYz1cIiRtZWRpYXBsYXllclwiIHBsdWdpbnNwYWdlPVwiaHR0cDovL2Fkb2JlLmNvbS9nby9nZXRmbGFzaHBsYXllclwiIHR5cGU9XCJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaFwiIHF1YWxpdHk9XCJoaWdoXCIgd2lkdGg9XCIkd2lkdGhcIiBoZWlnaHQ9XCIkaGVpZ2h0XCIgd21vZGU9XCJ0cmFuc3BhcmVudFwiIGZsYXNodmFycz1cImZpbGU9IiAuIHJhd3VybGVuY29kZSgkdGhpcy0+Z2V0X2xpbmsoKS4nP2ZpbGVfZXh0ZW5zaW9uPS4nLiR0aGlzLT5nZXRfZXh0ZW5zaW9uKCkpIC4gIiZhdXRvc3RhcnQ9ZmFsc2UmcmVwZWF0PSRsb29wJnNob3dkaWdpdHM9dHJ1ZSZzaG93ZnNidXR0b249ZmFsc2VcIj48L2VtYmVkPiI7CgkJCX0KCQkJZWxzZQoJCQl7CgkJCQkkZW1iZWQgLj0gIjxzY3JpcHQgdHlwZT0ndGV4dC9qYXZhc2NyaXB0Jz5lbWJlZF9mbHYoJyR3aWR0aCcsICckaGVpZ2h0JywgJyIgLiByYXd1cmxlbmNvZGUoJHRoaXMtPmdldF9saW5rKCkuJz9maWxlX2V4dGVuc2lvbj0uJy4kdGhpcy0+Z2V0X2V4dGVuc2lvbigpKSAuICInLCAnJHBsYWNlaG9sZGVyJywgJyRsb29wJywgJyRtZWRpYXBsYXllcicpOzwvc2NyaXB0PiI7CgkJCX0KCQl9CgoJCS8vIFF1aWNrVGltZSA3IGZpbGUgdHlwZXMuICBOZWVkIHRvIHRlc3Qgd2l0aCBRdWlja1RpbWUgNi4KCQkvLyBPbmx5IGhhbmRsZSBNUDMncyBpZiB0aGUgRmxhc2ggTWVkaWEgUGxheWVyIGlzIG5vdCBwcmVzZW50LgoJCWVsc2VpZiAoJGhhbmRsZXIgPT0gJ3F1aWNrdGltZScgfHwgKCRoYW5kbGVyID09ICdtcDMnICYmICRtZWRpYXBsYXllciA9PSAnJykpCgkJewoJCQkkaGVpZ2h0ICs9IDE2OwoJCQlpZiAoJG5hdGl2ZSkKCQkJewoJCQkJaWYgKCRwbGFjZWhvbGRlciAhPSAiIil7CgkJCQkJJGVtYmVkIC49ICI8ZW1iZWQgdHlwZT1cIiR0eXBlXCIgc3R5bGU9XCJjdXJzb3I6aGFuZDsgY3Vyc29yOnBvaW50ZXI7XCIgaHJlZj1cIiIgLiAkdGhpcy0+Z2V0X2xpbmsoKSAuICJcIiBzcmM9XCIkcGxhY2Vob2xkZXJcIiB3aWR0aD1cIiR3aWR0aFwiIGhlaWdodD1cIiRoZWlnaHRcIiBhdXRvcGxheT1cImZhbHNlXCIgdGFyZ2V0PVwibXlzZWxmXCIgY29udHJvbGxlcj1cImZhbHNlXCIgbG9vcD1cIiRsb29wXCIgc2NhbGU9XCJhc3BlY3RcIiBiZ2NvbG9yPVwiJGJnY29sb3JcIiBwbHVnaW5zcGFnZT1cImh0dHA6Ly9hcHBsZS5jb20vcXVpY2t0aW1lL2Rvd25sb2FkL1wiPjwvZW1iZWQ+IjsKCQkJCX0KCQkJCWVsc2UgewoJCQkJCSRlbWJlZCAuPSAiPGVtYmVkIHR5cGU9XCIkdHlwZVwiIHN0eWxlPVwiY3Vyc29yOmhhbmQ7IGN1cnNvcjpwb2ludGVyO1wiIHNyYz1cIiIgLiAkdGhpcy0+Z2V0X2xpbmsoKSAuICJcIiB3aWR0aD1cIiR3aWR0aFwiIGhlaWdodD1cIiRoZWlnaHRcIiBhdXRvcGxheT1cImZhbHNlXCIgdGFyZ2V0PVwibXlzZWxmXCIgY29udHJvbGxlcj1cInRydWVcIiBsb29wPVwiJGxvb3BcIiBzY2FsZT1cImFzcGVjdFwiIGJnY29sb3I9XCIkYmdjb2xvclwiIHBsdWdpbnNwYWdlPVwiaHR0cDovL2FwcGxlLmNvbS9xdWlja3RpbWUvZG93bmxvYWQvXCI+PC9lbWJlZD4iOwoJCQkJfQoJCQl9CgkJCWVsc2UKCQkJewoJCQkJJGVtYmVkIC49ICI8c2NyaXB0IHR5cGU9J3RleHQvamF2YXNjcmlwdCc+ZW1iZWRfcXVpY2t0aW1lKCckdHlwZScsICckYmdjb2xvcicsICckd2lkdGgnLCAnJGhlaWdodCcsICciIC4gJHRoaXMtPmdldF9saW5rKCkgLiAiJywgJyRwbGFjZWhvbGRlcicsICckbG9vcCcpOzwvc2NyaXB0PiI7CgkJCX0KCQl9CgoJCS8vIFdpbmRvd3MgTWVkaWEKCQllbHNlaWYgKCRoYW5kbGVyID09ICd3bWVkaWEnKQoJCXsKCQkJJGhlaWdodCArPSA0NTsKCQkJaWYgKCRuYXRpdmUpCgkJCXsKCQkJCSRlbWJlZCAuPSAiPGVtYmVkIHR5cGU9XCJhcHBsaWNhdGlvbi94LW1wbGF5ZXIyXCIgc3JjPVwiIiAuICR0aGlzLT5nZXRfbGluaygpIC4gIlwiIGF1dG9zaXplPVwiMVwiIHdpZHRoPVwiJHdpZHRoXCIgaGVpZ2h0PVwiJGhlaWdodFwiIHNob3djb250cm9scz1cIjFcIiBzaG93c3RhdHVzYmFyPVwiMFwiIHNob3dkaXNwbGF5PVwiMFwiIGF1dG9zdGFydD1cIjBcIj48L2VtYmVkPiI7CgkJCX0KCQkJZWxzZQoJCQl7CgkJCQkkZW1iZWQgLj0gIjxzY3JpcHQgdHlwZT0ndGV4dC9qYXZhc2NyaXB0Jz5lbWJlZF93bWVkaWEoJyR3aWR0aCcsICckaGVpZ2h0JywgJyIgLiAkdGhpcy0+Z2V0X2xpbmsoKSAuICInKTs8L3NjcmlwdD4iOwoJCQl9CgkJfQoKCQkvLyBFdmVyeXRoaW5nIGVsc2UKCQllbHNlICRlbWJlZCAuPSAnPGEgaHJlZj0iJyAuICR0aGlzLT5nZXRfbGluaygpIC4gJyIgY2xhc3M9IicgLiAkYWx0Y2xhc3MgLiAnIj4nIC4gJGFsdCAuICc8L2E+JzsKCgkJcmV0dXJuICRlbWJlZDsKCX0KCglmdW5jdGlvbiBnZXRfcmVhbF90eXBlKCRmaW5kX2hhbmRsZXIgPSBmYWxzZSkKCXsKCQkvLyBJZiBpdCdzIE9kZW8sIGxldCdzIGdldCBpdCBvdXQgb2YgdGhlIHdheS4KCQlpZiAoc3Vic3RyKHN0cnRvbG93ZXIoJHRoaXMtPmdldF9saW5rKCkpLCAwLCAxNSkgPT0gJ2h0dHA6Ly9vZGVvLmNvbScpCgkJewoJCQlyZXR1cm4gJ29kZW8nOwoJCX0KCgkJLy8gTWltZS10eXBlcyBieSBoYW5kbGVyLgoJCSR0eXBlc19mbGFzaCA9IGFycmF5KCdhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCcsICdhcHBsaWNhdGlvbi9mdXR1cmVzcGxhc2gnKTsgLy8gRmxhc2gKCQkkdHlwZXNfZm1lZGlhID0gYXJyYXkoJ3ZpZGVvL2ZsdicsICd2aWRlby94LWZsdicsJ2Zsdi1hcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nKTsgLy8gRmxhc2ggTWVkaWEgUGxheWVyCgkJJHR5cGVzX3F1aWNrdGltZSA9IGFycmF5KCdhdWRpby8zZ3BwJywgJ2F1ZGlvLzNncHAyJywgJ2F1ZGlvL2FhYycsICdhdWRpby94LWFhYycsICdhdWRpby9haWZmJywgJ2F1ZGlvL3gtYWlmZicsICdhdWRpby9taWQnLCAnYXVkaW8vbWlkaScsICdhdWRpby94LW1pZGknLCAnYXVkaW8vbXA0JywgJ2F1ZGlvL200YScsICdhdWRpby94LW00YScsICdhdWRpby93YXYnLCAnYXVkaW8veC13YXYnLCAndmlkZW8vM2dwcCcsICd2aWRlby8zZ3BwMicsICd2aWRlby9tNHYnLCAndmlkZW8veC1tNHYnLCAndmlkZW8vbXA0JywgJ3ZpZGVvL21wZWcnLCAndmlkZW8veC1tcGVnJywgJ3ZpZGVvL3F1aWNrdGltZScsICd2aWRlby9zZC12aWRlbycpOyAvLyBRdWlja1RpbWUKCQkkdHlwZXNfd21lZGlhID0gYXJyYXkoJ2FwcGxpY2F0aW9uL2FzeCcsICdhcHBsaWNhdGlvbi94LW1wbGF5ZXIyJywgJ2F1ZGlvL3gtbXMtd21hJywgJ2F1ZGlvL3gtbXMtd2F4JywgJ3ZpZGVvL3gtbXMtYXNmLXBsdWdpbicsICd2aWRlby94LW1zLWFzZicsICd2aWRlby94LW1zLXdtJywgJ3ZpZGVvL3gtbXMtd212JywgJ3ZpZGVvL3gtbXMtd3Z4Jyk7IC8vIFdpbmRvd3MgTWVkaWEKCQkkdHlwZXNfbXAzID0gYXJyYXkoJ2F1ZGlvL21wMycsICdhdWRpby94LW1wMycsICdhdWRpby9tcGVnJywgJ2F1ZGlvL3gtbXBlZycpOyAvLyBNUDMKCgkJaWYgKCR0aGlzLT5nZXRfdHlwZSgpICE9PSBudWxsKQoJCXsKCQkJJHR5cGUgPSBzdHJ0b2xvd2VyKCR0aGlzLT50eXBlKTsKCQl9CgkJZWxzZQoJCXsKCQkJJHR5cGUgPSBudWxsOwoJCX0KCgkJLy8gSWYgd2UgZW5jb3VudGVyIGFuIHVuc3VwcG9ydGVkIG1pbWUtdHlwZSwgY2hlY2sgdGhlIGZpbGUgZXh0ZW5zaW9uIGFuZCBndWVzcyBpbnRlbGxpZ2VudGx5LgoJCWlmICghaW5fYXJyYXkoJHR5cGUsIGFycmF5X21lcmdlKCR0eXBlc19mbGFzaCwgJHR5cGVzX2ZtZWRpYSwgJHR5cGVzX3F1aWNrdGltZSwgJHR5cGVzX3dtZWRpYSwgJHR5cGVzX21wMykpKQoJCXsKCQkJc3dpdGNoIChzdHJ0b2xvd2VyKCR0aGlzLT5nZXRfZXh0ZW5zaW9uKCkpKQoJCQl7CgkJCQkvLyBBdWRpbyBtaW1lLXR5cGVzCgkJCQljYXNlICdhYWMnOgoJCQkJY2FzZSAnYWR0cyc6CgkJCQkJJHR5cGUgPSAnYXVkaW8vYWNjJzsKCQkJCQlicmVhazsKCgkJCQljYXNlICdhaWYnOgoJCQkJY2FzZSAnYWlmYyc6CgkJCQljYXNlICdhaWZmJzoKCQkJCWNhc2UgJ2NkZGEnOgoJCQkJCSR0eXBlID0gJ2F1ZGlvL2FpZmYnOwoJCQkJCWJyZWFrOwoKCQkJCWNhc2UgJ2J3Zic6CgkJCQkJJHR5cGUgPSAnYXVkaW8vd2F2JzsKCQkJCQlicmVhazsKCgkJCQljYXNlICdrYXInOgoJCQkJY2FzZSAnbWlkJzoKCQkJCWNhc2UgJ21pZGknOgoJCQkJY2FzZSAnc21mJzoKCQkJCQkkdHlwZSA9ICdhdWRpby9taWRpJzsKCQkJCQlicmVhazsKCgkJCQljYXNlICdtNGEnOgoJCQkJCSR0eXBlID0gJ2F1ZGlvL3gtbTRhJzsKCQkJCQlicmVhazsKCgkJCQljYXNlICdtcDMnOgoJCQkJY2FzZSAnc3dhJzoKCQkJCQkkdHlwZSA9ICdhdWRpby9tcDMnOwoJCQkJCWJyZWFrOwoKCQkJCWNhc2UgJ3dhdic6CgkJCQkJJHR5cGUgPSAnYXVkaW8vd2F2JzsKCQkJCQlicmVhazsKCgkJCQljYXNlICd3YXgnOgoJCQkJCSR0eXBlID0gJ2F1ZGlvL3gtbXMtd2F4JzsKCQkJCQlicmVhazsKCgkJCQljYXNlICd3bWEnOgoJCQkJCSR0eXBlID0gJ2F1ZGlvL3gtbXMtd21hJzsKCQkJCQlicmVhazsKCgkJCQkvLyBWaWRlbyBtaW1lLXR5cGVzCgkJCQljYXNlICczZ3AnOgoJCQkJY2FzZSAnM2dwcCc6CgkJCQkJJHR5cGUgPSAndmlkZW8vM2dwcCc7CgkJCQkJYnJlYWs7CgoJCQkJY2FzZSAnM2cyJzoKCQkJCWNhc2UgJzNncDInOgoJCQkJCSR0eXBlID0gJ3ZpZGVvLzNncHAyJzsKCQkJCQlicmVhazsKCgkJCQljYXNlICdhc2YnOgoJCQkJCSR0eXBlID0gJ3ZpZGVvL3gtbXMtYXNmJzsKCQkJCQlicmVhazsKCgkJCQljYXNlICdmbHYnOgoJCQkJCSR0eXBlID0gJ3ZpZGVvL3gtZmx2JzsKCQkJCQlicmVhazsKCgkJCQljYXNlICdtMWEnOgoJCQkJY2FzZSAnbTFzJzoKCQkJCWNhc2UgJ20xdic6CgkJCQljYXNlICdtMTUnOgoJCQkJY2FzZSAnbTc1JzoKCQkJCWNhc2UgJ21wMic6CgkJCQljYXNlICdtcGEnOgoJCQkJY2FzZSAnbXBlZyc6CgkJCQljYXNlICdtcGcnOgoJCQkJY2FzZSAnbXBtJzoKCQkJCWNhc2UgJ21wdic6CgkJCQkJJHR5cGUgPSAndmlkZW8vbXBlZyc7CgkJCQkJYnJlYWs7CgoJCQkJY2FzZSAnbTR2JzoKCQkJCQkkdHlwZSA9ICd2aWRlby94LW00dic7CgkJCQkJYnJlYWs7CgoJCQkJY2FzZSAnbW92JzoKCQkJCWNhc2UgJ3F0JzoKCQkJCQkkdHlwZSA9ICd2aWRlby9xdWlja3RpbWUnOwoJCQkJCWJyZWFrOwoKCQkJCWNhc2UgJ21wNCc6CgkJCQljYXNlICdtcGc0JzoKCQkJCQkkdHlwZSA9ICd2aWRlby9tcDQnOwoJCQkJCWJyZWFrOwoKCQkJCWNhc2UgJ3Nkdic6CgkJCQkJJHR5cGUgPSAndmlkZW8vc2QtdmlkZW8nOwoJCQkJCWJyZWFrOwoKCQkJCWNhc2UgJ3dtJzoKCQkJCQkkdHlwZSA9ICd2aWRlby94LW1zLXdtJzsKCQkJCQlicmVhazsKCgkJCQljYXNlICd3bXYnOgoJCQkJCSR0eXBlID0gJ3ZpZGVvL3gtbXMtd212JzsKCQkJCQlicmVhazsKCgkJCQljYXNlICd3dngnOgoJCQkJCSR0eXBlID0gJ3ZpZGVvL3gtbXMtd3Z4JzsKCQkJCQlicmVhazsKCgkJCQkvLyBGbGFzaCBtaW1lLXR5cGVzCgkJCQljYXNlICdzcGwnOgoJCQkJCSR0eXBlID0gJ2FwcGxpY2F0aW9uL2Z1dHVyZXNwbGFzaCc7CgkJCQkJYnJlYWs7CgoJCQkJY2FzZSAnc3dmJzoKCQkJCQkkdHlwZSA9ICdhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCc7CgkJCQkJYnJlYWs7CgkJCX0KCQl9CgoJCWlmICgkZmluZF9oYW5kbGVyKQoJCXsKCQkJaWYgKGluX2FycmF5KCR0eXBlLCAkdHlwZXNfZmxhc2gpKQoJCQl7CgkJCQlyZXR1cm4gJ2ZsYXNoJzsKCQkJfQoJCQllbHNlaWYgKGluX2FycmF5KCR0eXBlLCAkdHlwZXNfZm1lZGlhKSkKCQkJewoJCQkJcmV0dXJuICdmbWVkaWEnOwoJCQl9CgkJCWVsc2VpZiAoaW5fYXJyYXkoJHR5cGUsICR0eXBlc19xdWlja3RpbWUpKQoJCQl7CgkJCQlyZXR1cm4gJ3F1aWNrdGltZSc7CgkJCX0KCQkJZWxzZWlmIChpbl9hcnJheSgkdHlwZSwgJHR5cGVzX3dtZWRpYSkpCgkJCXsKCQkJCXJldHVybiAnd21lZGlhJzsKCQkJfQoJCQllbHNlaWYgKGluX2FycmF5KCR0eXBlLCAkdHlwZXNfbXAzKSkKCQkJewoJCQkJcmV0dXJuICdtcDMnOwoJCQl9CgkJCWVsc2UKCQkJewoJCQkJcmV0dXJuIG51bGw7CgkJCX0KCQl9CgkJZWxzZQoJCXsKCQkJcmV0dXJuICR0eXBlOwoJCX0KCX0KfQoKY2xhc3MgU2ltcGxlUGllX0NhcHRpb24KewoJdmFyICR0eXBlOwoJdmFyICRsYW5nOwoJdmFyICRzdGFydFRpbWU7Cgl2YXIgJGVuZFRpbWU7Cgl2YXIgJHRleHQ7CgoJLy8gQ29uc3RydWN0b3IsIHVzZWQgdG8gaW5wdXQgdGhlIGRhdGEKCWZ1bmN0aW9uIFNpbXBsZVBpZV9DYXB0aW9uKCR0eXBlID0gbnVsbCwgJGxhbmcgPSBudWxsLCAkc3RhcnRUaW1lID0gbnVsbCwgJGVuZFRpbWUgPSBudWxsLCAkdGV4dCA9IG51bGwpCgl7CgkJJHRoaXMtPnR5cGUgPSAkdHlwZTsKCQkkdGhpcy0+bGFuZyA9ICRsYW5nOwoJCSR0aGlzLT5zdGFydFRpbWUgPSAkc3RhcnRUaW1lOwoJCSR0aGlzLT5lbmRUaW1lID0gJGVuZFRpbWU7CgkJJHRoaXMtPnRleHQgPSAkdGV4dDsKCX0KCglmdW5jdGlvbiBfX3RvU3RyaW5nKCkKCXsKCQkvLyBUaGVyZSBpcyBubyAkdGhpcy0+ZGF0YSBoZXJlCgkJcmV0dXJuIG1kNShzZXJpYWxpemUoJHRoaXMpKTsKCX0KCglmdW5jdGlvbiBnZXRfZW5kdGltZSgpCgl7CgkJaWYgKCR0aGlzLT5lbmRUaW1lICE9PSBudWxsKQoJCXsKCQkJcmV0dXJuICR0aGlzLT5lbmRUaW1lOwoJCX0KCQllbHNlCgkJewoJCQlyZXR1cm4gbnVsbDsKCQl9Cgl9CgoJZnVuY3Rpb24gZ2V0X2xhbmd1YWdlKCkKCXsKCQlpZiAoJHRoaXMtPmxhbmcgIT09IG51bGwpCgkJewoJCQlyZXR1cm4gJHRoaXMtPmxhbmc7CgkJfQoJCWVsc2UKCQl7CgkJCXJldHVybiBudWxsOwoJCX0KCX0KCglmdW5jdGlvbiBnZXRfc3RhcnR0aW1lKCkKCXsKCQlpZiAoJHRoaXMtPnN0YXJ0VGltZSAhPT0gbnVsbCkKCQl7CgkJCXJldHVybiAkdGhpcy0+c3RhcnRUaW1lOwoJCX0KCQllbHNlCgkJewoJCQlyZXR1cm4gbnVsbDsKCQl9Cgl9CgoJZnVuY3Rpb24gZ2V0X3RleHQoKQoJewoJCWlmICgkdGhpcy0+dGV4dCAhPT0gbnVsbCkKCQl7CgkJCXJldHVybiAkdGhpcy0+dGV4dDsKCQl9CgkJZWxzZQoJCXsKCQkJcmV0dXJuIG51bGw7CgkJfQoJfQoKCWZ1bmN0aW9uIGdldF90eXBlKCkKCXsKCQlpZiAoJHRoaXMtPnR5cGUgIT09IG51bGwpCgkJewoJCQlyZXR1cm4gJHRoaXMtPnR5cGU7CgkJfQoJCWVsc2UKCQl7CgkJCXJldHVybiBudWxsOwoJCX0KCX0KfQoKY2xhc3MgU2ltcGxlUGllX0NyZWRpdAp7Cgl2YXIgJHJvbGU7Cgl2YXIgJHNjaGVtZTsKCXZhciAkbmFtZTsKCgkvLyBDb25zdHJ1Y3RvciwgdXNlZCB0byBpbnB1dCB0aGUgZGF0YQoJZnVuY3Rpb24gU2ltcGxlUGllX0NyZWRpdCgkcm9sZSA9IG51bGwsICRzY2hlbWUgPSBudWxsLCAkbmFtZSA9IG51bGwpCgl7CgkJJHRoaXMtPnJvbGUgPSAkcm9sZTsKCQkkdGhpcy0+c2NoZW1lID0gJHNjaGVtZTsKCQkkdGhpcy0+bmFtZSA9ICRuYW1lOwoJfQoKCWZ1bmN0aW9uIF9fdG9TdHJpbmcoKQoJewoJCS8vIFRoZXJlIGlzIG5vICR0aGlzLT5kYXRhIGhlcmUKCQlyZXR1cm4gbWQ1KHNlcmlhbGl6ZSgkdGhpcykpOwoJfQoKCWZ1bmN0aW9uIGdldF9yb2xlKCkKCXsKCQlpZiAoJHRoaXMtPnJvbGUgIT09IG51bGwpCgkJewoJCQlyZXR1cm4gJHRoaXMtPnJvbGU7CgkJfQoJCWVsc2UKCQl7CgkJCXJldHVybiBudWxsOwoJCX0KCX0KCglmdW5jdGlvbiBnZXRfc2NoZW1lKCkKCXsKCQlpZiAoJHRoaXMtPnNjaGVtZSAhPT0gbnVsbCkKCQl7CgkJCXJldHVybiAkdGhpcy0+c2NoZW1lOwoJCX0KCQllbHNlCgkJewoJCQlyZXR1cm4gbnVsbDsKCQl9Cgl9CgoJZnVuY3Rpb24gZ2V0X25hbWUoKQoJewoJCWlmICgkdGhpcy0+bmFtZSAhPT0gbnVsbCkKCQl7CgkJCXJldHVybiAkdGhpcy0+bmFtZTsKCQl9CgkJZWxzZQoJCXsKCQkJcmV0dXJuIG51bGw7CgkJfQoJfQp9CgpjbGFzcyBTaW1wbGVQaWVfQ29weXJpZ2h0CnsKCXZhciAkdXJsOwoJdmFyICRsYWJlbDsKCgkvLyBDb25zdHJ1Y3RvciwgdXNlZCB0byBpbnB1dCB0aGUgZGF0YQoJZnVuY3Rpb24gU2ltcGxlUGllX0NvcHlyaWdodCgkdXJsID0gbnVsbCwgJGxhYmVsID0gbnVsbCkKCXsKCQkkdGhpcy0+dXJsID0gJHVybDsKCQkkdGhpcy0+bGFiZWwgPSAkbGFiZWw7Cgl9CgoJZnVuY3Rpb24gX190b1N0cmluZygpCgl7CgkJLy8gVGhlcmUgaXMgbm8gJHRoaXMtPmRhdGEgaGVyZQoJCXJldHVybiBtZDUoc2VyaWFsaXplKCR0aGlzKSk7Cgl9CgoJZnVuY3Rpb24gZ2V0X3VybCgpCgl7CgkJaWYgKCR0aGlzLT51cmwgIT09IG51bGwpCgkJewoJCQlyZXR1cm4gJHRoaXMtPnVybDsKCQl9CgkJZWxzZQoJCXsKCQkJcmV0dXJuIG51bGw7CgkJfQoJfQoKCWZ1bmN0aW9uIGdldF9hdHRyaWJ1dGlvbigpCgl7CgkJaWYgKCR0aGlzLT5sYWJlbCAhPT0gbnVsbCkKCQl7CgkJCXJldHVybiAkdGhpcy0+bGFiZWw7CgkJfQoJCWVsc2UKCQl7CgkJCXJldHVybiBudWxsOwoJCX0KCX0KfQoKY2xhc3MgU2ltcGxlUGllX1JhdGluZwp7Cgl2YXIgJHNjaGVtZTsKCXZhciAkdmFsdWU7CgoJLy8gQ29uc3RydWN0b3IsIHVzZWQgdG8gaW5wdXQgdGhlIGRhdGEKCWZ1bmN0aW9uIFNpbXBsZVBpZV9SYXRpbmcoJHNjaGVtZSA9IG51bGwsICR2YWx1ZSA9IG51bGwpCgl7CgkJJHRoaXMtPnNjaGVtZSA9ICRzY2hlbWU7CgkJJHRoaXMtPnZhbHVlID0gJHZhbHVlOwoJfQoKCWZ1bmN0aW9uIF9fdG9TdHJpbmcoKQoJewoJCS8vIFRoZXJlIGlzIG5vICR0aGlzLT5kYXRhIGhlcmUKCQlyZXR1cm4gbWQ1KHNlcmlhbGl6ZSgkdGhpcykpOwoJfQoKCWZ1bmN0aW9uIGdldF9zY2hlbWUoKQoJewoJCWlmICgkdGhpcy0+c2NoZW1lICE9PSBudWxsKQoJCXsKCQkJcmV0dXJuICR0aGlzLT5zY2hlbWU7CgkJfQoJCWVsc2UKCQl7CgkJCXJldHVybiBudWxsOwoJCX0KCX0KCglmdW5jdGlvbiBnZXRfdmFsdWUoKQoJewoJCWlmICgkdGhpcy0+dmFsdWUgIT09IG51bGwpCgkJewoJCQlyZXR1cm4gJHRoaXMtPnZhbHVlOwoJCX0KCQllbHNlCgkJewoJCQlyZXR1cm4gbnVsbDsKCQl9Cgl9Cn0KCmNsYXNzIFNpbXBsZVBpZV9SZXN0cmljdGlvbgp7Cgl2YXIgJHJlbGF0aW9uc2hpcDsKCXZhciAkdHlwZTsKCXZhciAkdmFsdWU7CgoJLy8gQ29uc3RydWN0b3IsIHVzZWQgdG8gaW5wdXQgdGhlIGRhdGEKCWZ1bmN0aW9uIFNpbXBsZVBpZV9SZXN0cmljdGlvbigkcmVsYXRpb25zaGlwID0gbnVsbCwgJHR5cGUgPSBudWxsLCAkdmFsdWUgPSBudWxsKQoJewoJCSR0aGlzLT5yZWxhdGlvbnNoaXAgPSAkcmVsYXRpb25zaGlwOwoJCSR0aGlzLT50eXBlID0gJHR5cGU7CgkJJHRoaXMtPnZhbHVlID0gJHZhbHVlOwoJfQoKCWZ1bmN0aW9uIF9fdG9TdHJpbmcoKQoJewoJCS8vIFRoZXJlIGlzIG5vICR0aGlzLT5kYXRhIGhlcmUKCQlyZXR1cm4gbWQ1KHNlcmlhbGl6ZSgkdGhpcykpOwoJfQoKCWZ1bmN0aW9uIGdldF9yZWxhdGlvbnNoaXAoKQoJewoJCWlmICgkdGhpcy0+cmVsYXRpb25zaGlwICE9PSBudWxsKQoJCXsKCQkJcmV0dXJuICR0aGlzLT5yZWxhdGlvbnNoaXA7CgkJfQoJCWVsc2UKCQl7CgkJCXJldHVybiBudWxsOwoJCX0KCX0KCglmdW5jdGlvbiBnZXRfdHlwZSgpCgl7CgkJaWYgKCR0aGlzLT50eXBlICE9PSBudWxsKQoJCXsKCQkJcmV0dXJuICR0aGlzLT50eXBlOwoJCX0KCQllbHNlCgkJewoJCQlyZXR1cm4gbnVsbDsKCQl9Cgl9CgoJZnVuY3Rpb24gZ2V0X3ZhbHVlKCkKCXsKCQlpZiAoJHRoaXMtPnZhbHVlICE9PSBudWxsKQoJCXsKCQkJcmV0dXJuICR0aGlzLT52YWx1ZTsKCQl9CgkJZWxzZQoJCXsKCQkJcmV0dXJuIG51bGw7CgkJfQoJfQp9CgovKioKICogQHRvZG8gTW92ZSB0byBwcm9wZXJseSBzdXBwb3J0aW5nIFJGQzI2MTYgKEhUVFAvMS4xKQogKi8KY2xhc3MgU2ltcGxlUGllX0ZpbGUKewoJdmFyICR1cmw7Cgl2YXIgJHVzZXJhZ2VudDsKCXZhciAkc3VjY2VzcyA9IHRydWU7Cgl2YXIgJGhlYWRlcnMgPSBhcnJheSgpOwoJdmFyICRib2R5OwoJdmFyICRzdGF0dXNfY29kZTsKCXZhciAkcmVkaXJlY3RzID0gMDsKCXZhciAkZXJyb3I7Cgl2YXIgJG1ldGhvZCA9IFNJTVBMRVBJRV9GSUxFX1NPVVJDRV9OT05FOwoKCWZ1bmN0aW9uIFNpbXBsZVBpZV9GaWxlKCR1cmwsICR0aW1lb3V0ID0gMTAsICRyZWRpcmVjdHMgPSA1LCAkaGVhZGVycyA9IG51bGwsICR1c2VyYWdlbnQgPSBudWxsLCAkZm9yY2VfZnNvY2tvcGVuID0gZmFsc2UpCgl7CgkJaWYgKGNsYXNzX2V4aXN0cygnaWRuYV9jb252ZXJ0JykpCgkJewoJCQkkaWRuID0mIG5ldyBpZG5hX2NvbnZlcnQ7CgkJCSRwYXJzZWQgPSBTaW1wbGVQaWVfTWlzYzo6cGFyc2VfdXJsKCR1cmwpOwoJCQkkdXJsID0gU2ltcGxlUGllX01pc2M6OmNvbXByZXNzX3BhcnNlX3VybCgkcGFyc2VkWydzY2hlbWUnXSwgJGlkbi0+ZW5jb2RlKCRwYXJzZWRbJ2F1dGhvcml0eSddKSwgJHBhcnNlZFsncGF0aCddLCAkcGFyc2VkWydxdWVyeSddLCAkcGFyc2VkWydmcmFnbWVudCddKTsKCQl9CgkJJHRoaXMtPnVybCA9ICR1cmw7CgkJJHRoaXMtPnVzZXJhZ2VudCA9ICR1c2VyYWdlbnQ7CgkJaWYgKHByZWdfbWF0Y2goJy9eaHR0cChzKT86XC9cLy9pJywgJHVybCkpCgkJewoJCQlpZiAoJHVzZXJhZ2VudCA9PT0gbnVsbCkKCQkJewoJCQkJJHVzZXJhZ2VudCA9IGluaV9nZXQoJ3VzZXJfYWdlbnQnKTsKCQkJCSR0aGlzLT51c2VyYWdlbnQgPSAkdXNlcmFnZW50OwoJCQl9CgkJCWlmICghaXNfYXJyYXkoJGhlYWRlcnMpKQoJCQl7CgkJCQkkaGVhZGVycyA9IGFycmF5KCk7CgkJCX0KCQkJaWYgKCEkZm9yY2VfZnNvY2tvcGVuICYmIGZ1bmN0aW9uX2V4aXN0cygnY3VybF9leGVjJykpCgkJCXsKCQkJCSR0aGlzLT5tZXRob2QgPSBTSU1QTEVQSUVfRklMRV9TT1VSQ0VfUkVNT1RFIHwgU0lNUExFUElFX0ZJTEVfU09VUkNFX0NVUkw7CgkJCQkkZnAgPSBjdXJsX2luaXQoKTsKCQkJCSRoZWFkZXJzMiA9IGFycmF5KCk7CgkJCQlmb3JlYWNoICgkaGVhZGVycyBhcyAka2V5ID0+ICR2YWx1ZSkKCQkJCXsKCQkJCQkkaGVhZGVyczJbXSA9ICIka2V5OiAkdmFsdWUiOwoJCQkJfQoJCQkJaWYgKHZlcnNpb25fY29tcGFyZShTaW1wbGVQaWVfTWlzYzo6Z2V0X2N1cmxfdmVyc2lvbigpLCAnNy4xMC41JywgJz49JykpCgkJCQl7CgkJCQkJY3VybF9zZXRvcHQoJGZwLCBDVVJMT1BUX0VOQ09ESU5HLCAnJyk7CgkJCQl9CgkJCQljdXJsX3NldG9wdCgkZnAsIENVUkxPUFRfVVJMLCAkdXJsKTsKCQkJCWN1cmxfc2V0b3B0KCRmcCwgQ1VSTE9QVF9IRUFERVIsIDEpOwoJCQkJY3VybF9zZXRvcHQoJGZwLCBDVVJMT1BUX1JFVFVSTlRSQU5TRkVSLCAxKTsKCQkJCWN1cmxfc2V0b3B0KCRmcCwgQ1VSTE9QVF9USU1FT1VULCAkdGltZW91dCk7CgkJCQljdXJsX3NldG9wdCgkZnAsIENVUkxPUFRfQ09OTkVDVFRJTUVPVVQsICR0aW1lb3V0KTsKCQkJCWN1cmxfc2V0b3B0KCRmcCwgQ1VSTE9QVF9SRUZFUkVSLCAkdXJsKTsKCQkJCWN1cmxfc2V0b3B0KCRmcCwgQ1VSTE9QVF9VU0VSQUdFTlQsICR1c2VyYWdlbnQpOwoJCQkJY3VybF9zZXRvcHQoJGZwLCBDVVJMT1BUX0hUVFBIRUFERVIsICRoZWFkZXJzMik7CgkJCQlpZiAoIWluaV9nZXQoJ29wZW5fYmFzZWRpcicpICYmICFpbmlfZ2V0KCdzYWZlX21vZGUnKSAmJiB2ZXJzaW9uX2NvbXBhcmUoU2ltcGxlUGllX01pc2M6OmdldF9jdXJsX3ZlcnNpb24oKSwgJzcuMTUuMicsICc+PScpKQoJCQkJewoJCQkJCWN1cmxfc2V0b3B0KCRmcCwgQ1VSTE9QVF9GT0xMT1dMT0NBVElPTiwgMSk7CgkJCQkJY3VybF9zZXRvcHQoJGZwLCBDVVJMT1BUX01BWFJFRElSUywgJHJlZGlyZWN0cyk7CgkJCQl9CgoJCQkJJHRoaXMtPmhlYWRlcnMgPSBjdXJsX2V4ZWMoJGZwKTsKCQkJCWlmIChjdXJsX2Vycm5vKCRmcCkgPT0gMjMgfHwgY3VybF9lcnJubygkZnApID09IDYxKQoJCQkJewoJCQkJCWN1cmxfc2V0b3B0KCRmcCwgQ1VSTE9QVF9FTkNPRElORywgJ25vbmUnKTsKCQkJCQkkdGhpcy0+aGVhZGVycyA9IGN1cmxfZXhlYygkZnApOwoJCQkJfQoJCQkJaWYgKGN1cmxfZXJybm8oJGZwKSkKCQkJCXsKCQkJCQkkdGhpcy0+ZXJyb3IgPSAnY1VSTCBlcnJvciAnIC4gY3VybF9lcnJubygkZnApIC4gJzogJyAuIGN1cmxfZXJyb3IoJGZwKTsKCQkJCQkkdGhpcy0+c3VjY2VzcyA9IGZhbHNlOwoJCQkJfQoJCQkJZWxzZQoJCQkJewoJCQkJCSRpbmZvID0gY3VybF9nZXRpbmZvKCRmcCk7CgkJCQkJY3VybF9jbG9zZSgkZnApOwoJCQkJCSR0aGlzLT5oZWFkZXJzID0gZXhwbG9kZSgiXHJcblxyXG4iLCAkdGhpcy0+aGVhZGVycywgJGluZm9bJ3JlZGlyZWN0X2NvdW50J10gKyAxKTsKCQkJCQkkdGhpcy0+aGVhZGVycyA9IGFycmF5X3BvcCgkdGhpcy0+aGVhZGVycyk7CgkJCQkJJHBhcnNlciA9JiBuZXcgU2ltcGxlUGllX0hUVFBfUGFyc2VyKCR0aGlzLT5oZWFkZXJzKTsKCQkJCQlpZiAoJHBhcnNlci0+cGFyc2UoKSkKCQkJCQl7CgkJCQkJCSR0aGlzLT5oZWFkZXJzID0gJHBhcnNlci0+aGVhZGVyczsKCQkJCQkJJHRoaXMtPmJvZHkgPSAkcGFyc2VyLT5ib2R5OwoJCQkJCQkkdGhpcy0+c3RhdHVzX2NvZGUgPSAkcGFyc2VyLT5zdGF0dXNfY29kZTsKCQkJCQkJaWYgKCgkdGhpcy0+c3RhdHVzX2NvZGUgPT0gMzAwIHx8ICR0aGlzLT5zdGF0dXNfY29kZSA9PSAzMDEgfHwgJHRoaXMtPnN0YXR1c19jb2RlID09IDMwMiB8fCAkdGhpcy0+c3RhdHVzX2NvZGUgPT0gMzAzIHx8ICR0aGlzLT5zdGF0dXNfY29kZSA9PSAzMDcgfHwgJHRoaXMtPnN0YXR1c19jb2RlID4gMzA3ICYmICR0aGlzLT5zdGF0dXNfY29kZSA8IDQwMCkgJiYgaXNzZXQoJHRoaXMtPmhlYWRlcnNbJ2xvY2F0aW9uJ10pICYmICR0aGlzLT5yZWRpcmVjdHMgPCAkcmVkaXJlY3RzKQoJCQkJCQl7CgkJCQkJCQkkdGhpcy0+cmVkaXJlY3RzKys7CgkJCQkJCQkkbG9jYXRpb24gPSBTaW1wbGVQaWVfTWlzYzo6YWJzb2x1dGl6ZV91cmwoJHRoaXMtPmhlYWRlcnNbJ2xvY2F0aW9uJ10sICR1cmwpOwoJCQkJCQkJcmV0dXJuICR0aGlzLT5TaW1wbGVQaWVfRmlsZSgkbG9jYXRpb24sICR0aW1lb3V0LCAkcmVkaXJlY3RzLCAkaGVhZGVycywgJHVzZXJhZ2VudCwgJGZvcmNlX2Zzb2Nrb3Blbik7CgkJCQkJCX0KCQkJCQl9CgkJCQl9CgkJCX0KCQkJZWxzZQoJCQl7CgkJCQkkdGhpcy0+bWV0aG9kID0gU0lNUExFUElFX0ZJTEVfU09VUkNFX1JFTU9URSB8IFNJTVBMRVBJRV9GSUxFX1NPVVJDRV9GU09DS09QRU47CgkJCQkkdXJsX3BhcnRzID0gcGFyc2VfdXJsKCR1cmwpOwoJCQkJaWYgKGlzc2V0KCR1cmxfcGFydHNbJ3NjaGVtZSddKSAmJiBzdHJ0b2xvd2VyKCR1cmxfcGFydHNbJ3NjaGVtZSddKSA9PSAnaHR0cHMnKQoJCQkJewoJCQkJCSR1cmxfcGFydHNbJ2hvc3QnXSA9ICJzc2w6Ly8kdXJsX3BhcnRzW2hvc3RdIjsKCQkJCQkkdXJsX3BhcnRzWydwb3J0J10gPSA0NDM7CgkJCQl9CgkJCQlpZiAoIWlzc2V0KCR1cmxfcGFydHNbJ3BvcnQnXSkpCgkJCQl7CgkJCQkJJHVybF9wYXJ0c1sncG9ydCddID0gODA7CgkJCQl9CgkJCQkkZnAgPSBAZnNvY2tvcGVuKCR1cmxfcGFydHNbJ2hvc3QnXSwgJHVybF9wYXJ0c1sncG9ydCddLCAkZXJybm8sICRlcnJzdHIsICR0aW1lb3V0KTsKCQkJCWlmICghJGZwKQoJCQkJewoJCQkJCSR0aGlzLT5lcnJvciA9ICdmc29ja29wZW4gZXJyb3I6ICcgLiAkZXJyc3RyOwoJCQkJCSR0aGlzLT5zdWNjZXNzID0gZmFsc2U7CgkJCQl9CgkJCQllbHNlCgkJCQl7CgkJCQkJc3RyZWFtX3NldF90aW1lb3V0KCRmcCwgJHRpbWVvdXQpOwoJCQkJCWlmIChpc3NldCgkdXJsX3BhcnRzWydwYXRoJ10pKQoJCQkJCXsKCQkJCQkJaWYgKGlzc2V0KCR1cmxfcGFydHNbJ3F1ZXJ5J10pKQoJCQkJCQl7CgkJCQkJCQkkZ2V0ID0gIiR1cmxfcGFydHNbcGF0aF0/JHVybF9wYXJ0c1txdWVyeV0iOwoJCQkJCQl9CgkJCQkJCWVsc2UKCQkJCQkJewoJCQkJCQkJJGdldCA9ICR1cmxfcGFydHNbJ3BhdGgnXTsKCQkJCQkJfQoJCQkJCX0KCQkJCQllbHNlCgkJCQkJewoJCQkJCQkkZ2V0ID0gJy8nOwoJCQkJCX0KCQkJCQkkb3V0ID0gIkdFVCAkZ2V0IEhUVFAvMS4wXHJcbiI7CgkJCQkJJG91dCAuPSAiSG9zdDogJHVybF9wYXJ0c1tob3N0XVxyXG4iOwoJCQkJCSRvdXQgLj0gIlVzZXItQWdlbnQ6ICR1c2VyYWdlbnRcclxuIjsKCQkJCQlpZiAoZXh0ZW5zaW9uX2xvYWRlZCgnemxpYicpKQoJCQkJCXsKCQkJCQkJJG91dCAuPSAiQWNjZXB0LUVuY29kaW5nOiB4LWd6aXAsZ3ppcCxkZWZsYXRlXHJcbiI7CgkJCQkJfQoKCQkJCQlpZiAoaXNzZXQoJHVybF9wYXJ0c1sndXNlciddKSAmJiBpc3NldCgkdXJsX3BhcnRzWydwYXNzJ10pKQoJCQkJCXsKCQkJCQkJJG91dCAuPSAiQXV0aG9yaXphdGlvbjogQmFzaWMgIiAuIGJhc2U2NF9lbmNvZGUoIiR1cmxfcGFydHNbdXNlcl06JHVybF9wYXJ0c1twYXNzXSIpIC4gIlxyXG4iOwoJCQkJCX0KCQkJCQlmb3JlYWNoICgkaGVhZGVycyBhcyAka2V5ID0+ICR2YWx1ZSkKCQkJCQl7CgkJCQkJCSRvdXQgLj0gIiRrZXk6ICR2YWx1ZVxyXG4iOwoJCQkJCX0KCQkJCQkkb3V0IC49ICJDb25uZWN0aW9uOiBDbG9zZVxyXG5cclxuIjsKCQkJCQlmd3JpdGUoJGZwLCAkb3V0KTsKCgkJCQkJJGluZm8gPSBzdHJlYW1fZ2V0X21ldGFfZGF0YSgkZnApOwoKCQkJCQkkdGhpcy0+aGVhZGVycyA9ICcnOwoJCQkJCXdoaWxlICghJGluZm9bJ2VvZiddICYmICEkaW5mb1sndGltZWRfb3V0J10pCgkJCQkJewoJCQkJCQkkdGhpcy0+aGVhZGVycyAuPSBmcmVhZCgkZnAsIDExNjApOwoJCQkJCQkkaW5mbyA9IHN0cmVhbV9nZXRfbWV0YV9kYXRhKCRmcCk7CgkJCQkJfQoJCQkJCWlmICghJGluZm9bJ3RpbWVkX291dCddKQoJCQkJCXsKCQkJCQkJJHBhcnNlciA9JiBuZXcgU2ltcGxlUGllX0hUVFBfUGFyc2VyKCR0aGlzLT5oZWFkZXJzKTsKCQkJCQkJaWYgKCRwYXJzZXItPnBhcnNlKCkpCgkJCQkJCXsKCQkJCQkJCSR0aGlzLT5oZWFkZXJzID0gJHBhcnNlci0+aGVhZGVyczsKCQkJCQkJCSR0aGlzLT5ib2R5ID0gJHBhcnNlci0+Ym9keTsKCQkJCQkJCSR0aGlzLT5zdGF0dXNfY29kZSA9ICRwYXJzZXItPnN0YXR1c19jb2RlOwoJCQkJCQkJaWYgKCgkdGhpcy0+c3RhdHVzX2NvZGUgPT0gMzAwIHx8ICR0aGlzLT5zdGF0dXNfY29kZSA9PSAzMDEgfHwgJHRoaXMtPnN0YXR1c19jb2RlID09IDMwMiB8fCAkdGhpcy0+c3RhdHVzX2NvZGUgPT0gMzAzIHx8ICR0aGlzLT5zdGF0dXNfY29kZSA9PSAzMDcgfHwgJHRoaXMtPnN0YXR1c19jb2RlID4gMzA3ICYmICR0aGlzLT5zdGF0dXNfY29kZSA8IDQwMCkgJiYgaXNzZXQoJHRoaXMtPmhlYWRlcnNbJ2xvY2F0aW9uJ10pICYmICR0aGlzLT5yZWRpcmVjdHMgPCAkcmVkaXJlY3RzKQoJCQkJCQkJewoJCQkJCQkJCSR0aGlzLT5yZWRpcmVjdHMrKzsKCQkJCQkJCQkkbG9jYXRpb24gPSBTaW1wbGVQaWVfTWlzYzo6YWJzb2x1dGl6ZV91cmwoJHRoaXMtPmhlYWRlcnNbJ2xvY2F0aW9uJ10sICR1cmwpOwoJCQkJCQkJCXJldHVybiAkdGhpcy0+U2ltcGxlUGllX0ZpbGUoJGxvY2F0aW9uLCAkdGltZW91dCwgJHJlZGlyZWN0cywgJGhlYWRlcnMsICR1c2VyYWdlbnQsICRmb3JjZV9mc29ja29wZW4pOwoJCQkJCQkJfQoJCQkJCQkJaWYgKGlzc2V0KCR0aGlzLT5oZWFkZXJzWydjb250ZW50LWVuY29kaW5nJ10pKQoJCQkJCQkJewoJCQkJCQkJCS8vIEhleSwgd2UgYWN0IGR1bWIgZWxzZXdoZXJlLCBzbyBsZXQncyBkbyB0aGF0IGhlcmUgdG9vCgkJCQkJCQkJc3dpdGNoIChzdHJ0b2xvd2VyKHRyaW0oJHRoaXMtPmhlYWRlcnNbJ2NvbnRlbnQtZW5jb2RpbmcnXSwgIlx4MDlceDBBXHgwRFx4MjAiKSkpCgkJCQkJCQkJewoJCQkJCQkJCQljYXNlICdnemlwJzoKCQkJCQkJCQkJY2FzZSAneC1nemlwJzoKCQkJCQkJCQkJCSRkZWNvZGVyID0gbmV3IFNpbXBsZVBpZV9nemRlY29kZSgkdGhpcy0+Ym9keSk7CgkJCQkJCQkJCQlpZiAoISRkZWNvZGVyLT5wYXJzZSgpKQoJCQkJCQkJCQkJewoJCQkJCQkJCQkJCSR0aGlzLT5lcnJvciA9ICdVbmFibGUgdG8gZGVjb2RlIEhUVFAgImd6aXAiIHN0cmVhbSc7CgkJCQkJCQkJCQkJJHRoaXMtPnN1Y2Nlc3MgPSBmYWxzZTsKCQkJCQkJCQkJCX0KCQkJCQkJCQkJCWVsc2UKCQkJCQkJCQkJCXsKCQkJCQkJCQkJCQkkdGhpcy0+Ym9keSA9ICRkZWNvZGVyLT5kYXRhOwoJCQkJCQkJCQkJfQoJCQkJCQkJCQkJYnJlYWs7CgoJCQkJCQkJCQljYXNlICdkZWZsYXRlJzoKCQkJCQkJCQkJCWlmICgoJGJvZHkgPSBnenVuY29tcHJlc3MoJHRoaXMtPmJvZHkpKSA9PT0gZmFsc2UpCgkJCQkJCQkJCQl7CgkJCQkJCQkJCQkJaWYgKCgkYm9keSA9IGd6aW5mbGF0ZSgkdGhpcy0+Ym9keSkpID09PSBmYWxzZSkKCQkJCQkJCQkJCQl7CgkJCQkJCQkJCQkJCSR0aGlzLT5lcnJvciA9ICdVbmFibGUgdG8gZGVjb2RlIEhUVFAgImRlZmxhdGUiIHN0cmVhbSc7CgkJCQkJCQkJCQkJCSR0aGlzLT5zdWNjZXNzID0gZmFsc2U7CgkJCQkJCQkJCQkJfQoJCQkJCQkJCQkJfQoJCQkJCQkJCQkJJHRoaXMtPmJvZHkgPSAkYm9keTsKCQkJCQkJCQkJCWJyZWFrOwoKCQkJCQkJCQkJZGVmYXVsdDoKCQkJCQkJCQkJCSR0aGlzLT5lcnJvciA9ICdVbmtub3duIGNvbnRlbnQgY29kaW5nJzsKCQkJCQkJCQkJCSR0aGlzLT5zdWNjZXNzID0gZmFsc2U7CgkJCQkJCQkJfQoJCQkJCQkJfQoJCQkJCQl9CgkJCQkJfQoJCQkJCWVsc2UKCQkJCQl7CgkJCQkJCSR0aGlzLT5lcnJvciA9ICdmc29ja2V0IHRpbWVkIG91dCc7CgkJCQkJCSR0aGlzLT5zdWNjZXNzID0gZmFsc2U7CgkJCQkJfQoJCQkJCWZjbG9zZSgkZnApOwoJCQkJfQoJCQl9CgkJfQoJCWVsc2UKCQl7CgkJCSR0aGlzLT5tZXRob2QgPSBTSU1QTEVQSUVfRklMRV9TT1VSQ0VfTE9DQUwgfCBTSU1QTEVQSUVfRklMRV9TT1VSQ0VfRklMRV9HRVRfQ09OVEVOVFM7CgkJCWlmICghJHRoaXMtPmJvZHkgPSBmaWxlX2dldF9jb250ZW50cygkdXJsKSkKCQkJewoJCQkJJHRoaXMtPmVycm9yID0gJ2ZpbGVfZ2V0X2NvbnRlbnRzIGNvdWxkIG5vdCByZWFkIHRoZSBmaWxlJzsKCQkJCSR0aGlzLT5zdWNjZXNzID0gZmFsc2U7CgkJCX0KCQl9Cgl9Cn0KCi8qKgogKiBIVFRQIFJlc3BvbnNlIFBhcnNlcgogKgogKiBAcGFja2FnZSBTaW1wbGVQaWUKICovCmNsYXNzIFNpbXBsZVBpZV9IVFRQX1BhcnNlcgp7CgkvKioKCSAqIEhUVFAgVmVyc2lvbgoJICoKCSAqIEBhY2Nlc3MgcHVibGljCgkgKiBAdmFyIGZsb2F0CgkgKi8KCXZhciAkaHR0cF92ZXJzaW9uID0gMC4wOwoKCS8qKgoJICogU3RhdHVzIGNvZGUKCSAqCgkgKiBAYWNjZXNzIHB1YmxpYwoJICogQHZhciBpbnQKCSAqLwoJdmFyICRzdGF0dXNfY29kZSA9IDA7CgoJLyoqCgkgKiBSZWFzb24gcGhyYXNlCgkgKgoJICogQGFjY2VzcyBwdWJsaWMKCSAqIEB2YXIgc3RyaW5nCgkgKi8KCXZhciAkcmVhc29uID0gJyc7CgoJLyoqCgkgKiBLZXkvdmFsdWUgcGFpcnMgb2YgdGhlIGhlYWRlcnMKCSAqCgkgKiBAYWNjZXNzIHB1YmxpYwoJICogQHZhciBhcnJheQoJICovCgl2YXIgJGhlYWRlcnMgPSBhcnJheSgpOwoKCS8qKgoJICogQm9keSBvZiB0aGUgcmVzcG9uc2UKCSAqCgkgKiBAYWNjZXNzIHB1YmxpYwoJICogQHZhciBzdHJpbmcKCSAqLwoJdmFyICRib2R5ID0gJyc7CgoJLyoqCgkgKiBDdXJyZW50IHN0YXRlIG9mIHRoZSBzdGF0ZSBtYWNoaW5lCgkgKgoJICogQGFjY2VzcyBwcml2YXRlCgkgKiBAdmFyIHN0cmluZwoJICovCgl2YXIgJHN0YXRlID0gJ2h0dHBfdmVyc2lvbic7CgoJLyoqCgkgKiBJbnB1dCBkYXRhCgkgKgoJICogQGFjY2VzcyBwcml2YXRlCgkgKiBAdmFyIHN0cmluZwoJICovCgl2YXIgJGRhdGEgPSAnJzsKCgkvKioKCSAqIElucHV0IGRhdGEgbGVuZ3RoICh0byBhdm9pZCBjYWxsaW5nIHN0cmxlbigpIGV2ZXJ5dGltZSB0aGlzIGlzIG5lZWRlZCkKCSAqCgkgKiBAYWNjZXNzIHByaXZhdGUKCSAqIEB2YXIgaW50CgkgKi8KCXZhciAkZGF0YV9sZW5ndGggPSAwOwoKCS8qKgoJICogQ3VycmVudCBwb3NpdGlvbiBvZiB0aGUgcG9pbnRlcgoJICoKCSAqIEB2YXIgaW50CgkgKiBAYWNjZXNzIHByaXZhdGUKCSAqLwoJdmFyICRwb3NpdGlvbiA9IDA7CgoJLyoqCgkgKiBOYW1lIG9mIHRoZSBoZWRhZXIgY3VycmVudGx5IGJlaW5nIHBhcnNlZAoJICoKCSAqIEBhY2Nlc3MgcHJpdmF0ZQoJICogQHZhciBzdHJpbmcKCSAqLwoJdmFyICRuYW1lID0gJyc7CgoJLyoqCgkgKiBWYWx1ZSBvZiB0aGUgaGVkYWVyIGN1cnJlbnRseSBiZWluZyBwYXJzZWQKCSAqCgkgKiBAYWNjZXNzIHByaXZhdGUKCSAqIEB2YXIgc3RyaW5nCgkgKi8KCXZhciAkdmFsdWUgPSAnJzsKCgkvKioKCSAqIENyZWF0ZSBhbiBpbnN0YW5jZSBvZiB0aGUgY2xhc3Mgd2l0aCB0aGUgaW5wdXQgZGF0YQoJICoKCSAqIEBhY2Nlc3MgcHVibGljCgkgKiBAcGFyYW0gc3RyaW5nICRkYXRhIElucHV0IGRhdGEKCSAqLwoJZnVuY3Rpb24gU2ltcGxlUGllX0hUVFBfUGFyc2VyKCRkYXRhKQoJewoJCSR0aGlzLT5kYXRhID0gJGRhdGE7CgkJJHRoaXMtPmRhdGFfbGVuZ3RoID0gc3RybGVuKCR0aGlzLT5kYXRhKTsKCX0KCgkvKioKCSAqIFBhcnNlIHRoZSBpbnB1dCBkYXRhCgkgKgoJICogQGFjY2VzcyBwdWJsaWMKCSAqIEByZXR1cm4gYm9vbCB0cnVlIG9uIHN1Y2Nlc3MsIGZhbHNlIG9uIGZhaWx1cmUKCSAqLwoJZnVuY3Rpb24gcGFyc2UoKQoJewoJCXdoaWxlICgkdGhpcy0+c3RhdGUgJiYgJHRoaXMtPnN0YXRlICE9PSAnZW1pdCcgJiYgJHRoaXMtPmhhc19kYXRhKCkpCgkJewoJCQkkc3RhdGUgPSAkdGhpcy0+c3RhdGU7CgkJCSR0aGlzLT4kc3RhdGUoKTsKCQl9CgkJJHRoaXMtPmRhdGEgPSAnJzsKCQlpZiAoJHRoaXMtPnN0YXRlID09PSAnZW1pdCcgfHwgJHRoaXMtPnN0YXRlID09PSAnYm9keScpCgkJewoJCQlyZXR1cm4gdHJ1ZTsKCQl9CgkJZWxzZQoJCXsKCQkJJHRoaXMtPmh0dHBfdmVyc2lvbiA9ICcnOwoJCQkkdGhpcy0+c3RhdHVzX2NvZGUgPSAnJzsKCQkJJHRoaXMtPnJlYXNvbiA9ICcnOwoJCQkkdGhpcy0+aGVhZGVycyA9IGFycmF5KCk7CgkJCSR0aGlzLT5ib2R5ID0gJyc7CgkJCXJldHVybiBmYWxzZTsKCQl9Cgl9CgoJLyoqCgkgKiBDaGVjayB3aGV0aGVyIHRoZXJlIGlzIGRhdGEgYmV5b25kIHRoZSBwb2ludGVyCgkgKgoJICogQGFjY2VzcyBwcml2YXRlCgkgKiBAcmV0dXJuIGJvb2wgdHJ1ZSBpZiB0aGVyZSBpcyBmdXJ0aGVyIGRhdGEsIGZhbHNlIGlmIG5vdAoJICovCglmdW5jdGlvbiBoYXNfZGF0YSgpCgl7CgkJcmV0dXJuIChib29sKSAoJHRoaXMtPnBvc2l0aW9uIDwgJHRoaXMtPmRhdGFfbGVuZ3RoKTsKCX0KCgkvKioKCSAqIFNlZSBpZiB0aGUgbmV4dCBjaGFyYWN0ZXIgaXMgTFdTCgkgKgoJICogQGFjY2VzcyBwcml2YXRlCgkgKiBAcmV0dXJuIGJvb2wgdHJ1ZSBpZiB0aGUgbmV4dCBjaGFyYWN0ZXIgaXMgTFdTLCBmYWxzZSBpZiBub3QKCSAqLwoJZnVuY3Rpb24gaXNfbGluZWFyX3doaXRlc3BhY2UoKQoJewoJCXJldHVybiAoYm9vbCkgKCR0aGlzLT5kYXRhWyR0aGlzLT5wb3NpdGlvbl0gPT09ICJceDA5IgoJCQl8fCAkdGhpcy0+ZGF0YVskdGhpcy0+cG9zaXRpb25dID09PSAiXHgyMCIKCQkJfHwgKCR0aGlzLT5kYXRhWyR0aGlzLT5wb3NpdGlvbl0gPT09ICJceDBBIgoJCQkJJiYgaXNzZXQoJHRoaXMtPmRhdGFbJHRoaXMtPnBvc2l0aW9uICsgMV0pCgkJCQkmJiAoJHRoaXMtPmRhdGFbJHRoaXMtPnBvc2l0aW9uICsgMV0gPT09ICJceDA5IiB8fCAkdGhpcy0+ZGF0YVskdGhpcy0+cG9zaXRpb24gKyAxXSA9PT0gIlx4MjAiKSkpOwoJfQoKCS8qKgoJICogUGFyc2UgdGhlIEhUVFAgdmVyc2lvbgoJICoKCSAqIEBhY2Nlc3MgcHJpdmF0ZQoJICovCglmdW5jdGlvbiBodHRwX3ZlcnNpb24oKQoJewoJCWlmIChzdHJwb3MoJHRoaXMtPmRhdGEsICJceDBBIikgIT09IGZhbHNlICYmIHN0cnRvdXBwZXIoc3Vic3RyKCR0aGlzLT5kYXRhLCAwLCA1KSkgPT09ICdIVFRQLycpCgkJewoJCQkkbGVuID0gc3Ryc3BuKCR0aGlzLT5kYXRhLCAnMDEyMzQ1Njc4OS4nLCA1KTsKCQkJJHRoaXMtPmh0dHBfdmVyc2lvbiA9IHN1YnN0cigkdGhpcy0+ZGF0YSwgNSwgJGxlbik7CgkJCSR0aGlzLT5wb3NpdGlvbiArPSA1ICsgJGxlbjsKCQkJaWYgKHN1YnN0cl9jb3VudCgkdGhpcy0+aHR0cF92ZXJzaW9uLCAnLicpIDw9IDEpCgkJCXsKCQkJCSR0aGlzLT5odHRwX3ZlcnNpb24gPSAoZmxvYXQpICR0aGlzLT5odHRwX3ZlcnNpb247CgkJCQkkdGhpcy0+cG9zaXRpb24gKz0gc3Ryc3BuKCR0aGlzLT5kYXRhLCAiXHgwOVx4MjAiLCAkdGhpcy0+cG9zaXRpb24pOwoJCQkJJHRoaXMtPnN0YXRlID0gJ3N0YXR1cyc7CgkJCX0KCQkJZWxzZQoJCQl7CgkJCQkkdGhpcy0+c3RhdGUgPSBmYWxzZTsKCQkJfQoJCX0KCQllbHNlCgkJewoJCQkkdGhpcy0+c3RhdGUgPSBmYWxzZTsKCQl9Cgl9CgoJLyoqCgkgKiBQYXJzZSB0aGUgc3RhdHVzIGNvZGUKCSAqCgkgKiBAYWNjZXNzIHByaXZhdGUKCSAqLwoJZnVuY3Rpb24gc3RhdHVzKCkKCXsKCQlpZiAoJGxlbiA9IHN0cnNwbigkdGhpcy0+ZGF0YSwgJzAxMjM0NTY3ODknLCAkdGhpcy0+cG9zaXRpb24pKQoJCXsKCQkJJHRoaXMtPnN0YXR1c19jb2RlID0gKGludCkgc3Vic3RyKCR0aGlzLT5kYXRhLCAkdGhpcy0+cG9zaXRpb24sICRsZW4pOwoJCQkkdGhpcy0+cG9zaXRpb24gKz0gJGxlbjsKCQkJJHRoaXMtPnN0YXRlID0gJ3JlYXNvbic7CgkJfQoJCWVsc2UKCQl7CgkJCSR0aGlzLT5zdGF0ZSA9IGZhbHNlOwoJCX0KCX0KCgkvKioKCSAqIFBhcnNlIHRoZSByZWFzb24gcGhyYXNlCgkgKgoJICogQGFjY2VzcyBwcml2YXRlCgkgKi8KCWZ1bmN0aW9uIHJlYXNvbigpCgl7CgkJJGxlbiA9IHN0cmNzcG4oJHRoaXMtPmRhdGEsICJceDBBIiwgJHRoaXMtPnBvc2l0aW9uKTsKCQkkdGhpcy0+cmVhc29uID0gdHJpbShzdWJzdHIoJHRoaXMtPmRhdGEsICR0aGlzLT5wb3NpdGlvbiwgJGxlbiksICJceDA5XHgwRFx4MjAiKTsKCQkkdGhpcy0+cG9zaXRpb24gKz0gJGxlbiArIDE7CgkJJHRoaXMtPnN0YXRlID0gJ25ld19saW5lJzsKCX0KCgkvKioKCSAqIERlYWwgd2l0aCBhIG5ldyBsaW5lLCBzaGlmdGluZyBkYXRhIGFyb3VuZCBhcyBuZWVkZWQKCSAqCgkgKiBAYWNjZXNzIHByaXZhdGUKCSAqLwoJZnVuY3Rpb24gbmV3X2xpbmUoKQoJewoJCSR0aGlzLT52YWx1ZSA9IHRyaW0oJHRoaXMtPnZhbHVlLCAiXHgwRFx4MjAiKTsKCQlpZiAoJHRoaXMtPm5hbWUgIT09ICcnICYmICR0aGlzLT52YWx1ZSAhPT0gJycpCgkJewoJCQkkdGhpcy0+bmFtZSA9IHN0cnRvbG93ZXIoJHRoaXMtPm5hbWUpOwoJCQlpZiAoaXNzZXQoJHRoaXMtPmhlYWRlcnNbJHRoaXMtPm5hbWVdKSkKCQkJewoJCQkJJHRoaXMtPmhlYWRlcnNbJHRoaXMtPm5hbWVdIC49ICcsICcgLiAkdGhpcy0+dmFsdWU7CgkJCX0KCQkJZWxzZQoJCQl7CgkJCQkkdGhpcy0+aGVhZGVyc1skdGhpcy0+bmFtZV0gPSAkdGhpcy0+dmFsdWU7CgkJCX0KCQl9CgkJJHRoaXMtPm5hbWUgPSAnJzsKCQkkdGhpcy0+dmFsdWUgPSAnJzsKCQlpZiAoc3Vic3RyKCR0aGlzLT5kYXRhWyR0aGlzLT5wb3NpdGlvbl0sIDAsIDIpID09PSAiXHgwRFx4MEEiKQoJCXsKCQkJJHRoaXMtPnBvc2l0aW9uICs9IDI7CgkJCSR0aGlzLT5zdGF0ZSA9ICdib2R5JzsKCQl9CgkJZWxzZWlmICgkdGhpcy0+ZGF0YVskdGhpcy0+cG9zaXRpb25dID09PSAiXHgwQSIpCgkJewoJCQkkdGhpcy0+cG9zaXRpb24rKzsKCQkJJHRoaXMtPnN0YXRlID0gJ2JvZHknOwoJCX0KCQllbHNlCgkJewoJCQkkdGhpcy0+c3RhdGUgPSAnbmFtZSc7CgkJfQoJfQoKCS8qKgoJICogUGFyc2UgYSBoZWFkZXIgbmFtZQoJICoKCSAqIEBhY2Nlc3MgcHJpdmF0ZQoJICovCglmdW5jdGlvbiBuYW1lKCkKCXsKCQkkbGVuID0gc3RyY3NwbigkdGhpcy0+ZGF0YSwgIlx4MEE6IiwgJHRoaXMtPnBvc2l0aW9uKTsKCQlpZiAoaXNzZXQoJHRoaXMtPmRhdGFbJHRoaXMtPnBvc2l0aW9uICsgJGxlbl0pKQoJCXsKCQkJaWYgKCR0aGlzLT5kYXRhWyR0aGlzLT5wb3NpdGlvbiArICRsZW5dID09PSAiXHgwQSIpCgkJCXsKCQkJCSR0aGlzLT5wb3NpdGlvbiArPSAkbGVuOwoJCQkJJHRoaXMtPnN0YXRlID0gJ25ld19saW5lJzsKCQkJfQoJCQllbHNlCgkJCXsKCQkJCSR0aGlzLT5uYW1lID0gc3Vic3RyKCR0aGlzLT5kYXRhLCAkdGhpcy0+cG9zaXRpb24sICRsZW4pOwoJCQkJJHRoaXMtPnBvc2l0aW9uICs9ICRsZW4gKyAxOwoJCQkJJHRoaXMtPnN0YXRlID0gJ3ZhbHVlJzsKCQkJfQoJCX0KCQllbHNlCgkJewoJCQkkdGhpcy0+c3RhdGUgPSBmYWxzZTsKCQl9Cgl9CgoJLyoqCgkgKiBQYXJzZSBMV1MsIHJlcGxhY2luZyBjb25zZWN1dGl2ZSBMV1MgY2hhcmFjdGVycyB3aXRoIGEgc2luZ2xlIHNwYWNlCgkgKgoJICogQGFjY2VzcyBwcml2YXRlCgkgKi8KCWZ1bmN0aW9uIGxpbmVhcl93aGl0ZXNwYWNlKCkKCXsKCQlkbwoJCXsKCQkJaWYgKHN1YnN0cigkdGhpcy0+ZGF0YSwgJHRoaXMtPnBvc2l0aW9uLCAyKSA9PT0gIlx4MERceDBBIikKCQkJewoJCQkJJHRoaXMtPnBvc2l0aW9uICs9IDI7CgkJCX0KCQkJZWxzZWlmICgkdGhpcy0+ZGF0YVskdGhpcy0+cG9zaXRpb25dID09PSAiXHgwQSIpCgkJCXsKCQkJCSR0aGlzLT5wb3NpdGlvbisrOwoJCQl9CgkJCSR0aGlzLT5wb3NpdGlvbiArPSBzdHJzcG4oJHRoaXMtPmRhdGEsICJceDA5XHgyMCIsICR0aGlzLT5wb3NpdGlvbik7CgkJfSB3aGlsZSAoJHRoaXMtPmhhc19kYXRhKCkgJiYgJHRoaXMtPmlzX2xpbmVhcl93aGl0ZXNwYWNlKCkpOwoJCSR0aGlzLT52YWx1ZSAuPSAiXHgyMCI7Cgl9CgoJLyoqCgkgKiBTZWUgd2hhdCBzdGF0ZSB0byBtb3ZlIHRvIHdoaWxlIHdpdGhpbiBub24tcXVvdGVkIGhlYWRlciB2YWx1ZXMKCSAqCgkgKiBAYWNjZXNzIHByaXZhdGUKCSAqLwoJZnVuY3Rpb24gdmFsdWUoKQoJewoJCWlmICgkdGhpcy0+aXNfbGluZWFyX3doaXRlc3BhY2UoKSkKCQl7CgkJCSR0aGlzLT5saW5lYXJfd2hpdGVzcGFjZSgpOwoJCX0KCQllbHNlCgkJewoJCQlzd2l0Y2ggKCR0aGlzLT5kYXRhWyR0aGlzLT5wb3NpdGlvbl0pCgkJCXsKCQkJCWNhc2UgJyInOgoJCQkJCSR0aGlzLT5wb3NpdGlvbisrOwoJCQkJCSR0aGlzLT5zdGF0ZSA9ICdxdW90ZSc7CgkJCQkJYnJlYWs7CgoJCQkJY2FzZSAiXHgwQSI6CgkJCQkJJHRoaXMtPnBvc2l0aW9uKys7CgkJCQkJJHRoaXMtPnN0YXRlID0gJ25ld19saW5lJzsKCQkJCQlicmVhazsKCgkJCQlkZWZhdWx0OgoJCQkJCSR0aGlzLT5zdGF0ZSA9ICd2YWx1ZV9jaGFyJzsKCQkJCQlicmVhazsKCQkJfQoJCX0KCX0KCgkvKioKCSAqIFBhcnNlIGEgaGVhZGVyIHZhbHVlIHdoaWxlIG91dHNpZGUgcXVvdGVzCgkgKgoJICogQGFjY2VzcyBwcml2YXRlCgkgKi8KCWZ1bmN0aW9uIHZhbHVlX2NoYXIoKQoJewoJCSRsZW4gPSBzdHJjc3BuKCR0aGlzLT5kYXRhLCAiXHgwOVx4MjBceDBBXCIiLCAkdGhpcy0+cG9zaXRpb24pOwoJCSR0aGlzLT52YWx1ZSAuPSBzdWJzdHIoJHRoaXMtPmRhdGEsICR0aGlzLT5wb3NpdGlvbiwgJGxlbik7CgkJJHRoaXMtPnBvc2l0aW9uICs9ICRsZW47CgkJJHRoaXMtPnN0YXRlID0gJ3ZhbHVlJzsKCX0KCgkvKioKCSAqIFNlZSB3aGF0IHN0YXRlIHRvIG1vdmUgdG8gd2hpbGUgd2l0aGluIHF1b3RlZCBoZWFkZXIgdmFsdWVzCgkgKgoJICogQGFjY2VzcyBwcml2YXRlCgkgKi8KCWZ1bmN0aW9uIHF1b3RlKCkKCXsKCQlpZiAoJHRoaXMtPmlzX2xpbmVhcl93aGl0ZXNwYWNlKCkpCgkJewoJCQkkdGhpcy0+bGluZWFyX3doaXRlc3BhY2UoKTsKCQl9CgkJZWxzZQoJCXsKCQkJc3dpdGNoICgkdGhpcy0+ZGF0YVskdGhpcy0+cG9zaXRpb25dKQoJCQl7CgkJCQljYXNlICciJzoKCQkJCQkkdGhpcy0+cG9zaXRpb24rKzsKCQkJCQkkdGhpcy0+c3RhdGUgPSAndmFsdWUnOwoJCQkJCWJyZWFrOwoKCQkJCWNhc2UgIlx4MEEiOgoJCQkJCSR0aGlzLT5wb3NpdGlvbisrOwoJCQkJCSR0aGlzLT5zdGF0ZSA9ICduZXdfbGluZSc7CgkJCQkJYnJlYWs7CgoJCQkJY2FzZSAnXFwnOgoJCQkJCSR0aGlzLT5wb3NpdGlvbisrOwoJCQkJCSR0aGlzLT5zdGF0ZSA9ICdxdW90ZV9lc2NhcGVkJzsKCQkJCQlicmVhazsKCgkJCQlkZWZhdWx0OgoJCQkJCSR0aGlzLT5zdGF0ZSA9ICdxdW90ZV9jaGFyJzsKCQkJCQlicmVhazsKCQkJfQoJCX0KCX0KCgkvKioKCSAqIFBhcnNlIGEgaGVhZGVyIHZhbHVlIHdoaWxlIHdpdGhpbiBxdW90ZXMKCSAqCgkgKiBAYWNjZXNzIHByaXZhdGUKCSAqLwoJZnVuY3Rpb24gcXVvdGVfY2hhcigpCgl7CgkJJGxlbiA9IHN0cmNzcG4oJHRoaXMtPmRhdGEsICJceDA5XHgyMFx4MEFcIlxcIiwgJHRoaXMtPnBvc2l0aW9uKTsKCQkkdGhpcy0+dmFsdWUgLj0gc3Vic3RyKCR0aGlzLT5kYXRhLCAkdGhpcy0+cG9zaXRpb24sICRsZW4pOwoJCSR0aGlzLT5wb3NpdGlvbiArPSAkbGVuOwoJCSR0aGlzLT5zdGF0ZSA9ICd2YWx1ZSc7Cgl9CgoJLyoqCgkgKiBQYXJzZSBhbiBlc2NhcGVkIGNoYXJhY3RlciB3aXRoaW4gcXVvdGVzCgkgKgoJICogQGFjY2VzcyBwcml2YXRlCgkgKi8KCWZ1bmN0aW9uIHF1b3RlX2VzY2FwZWQoKQoJewoJCSR0aGlzLT52YWx1ZSAuPSAkdGhpcy0+ZGF0YVskdGhpcy0+cG9zaXRpb25dOwoJCSR0aGlzLT5wb3NpdGlvbisrOwoJCSR0aGlzLT5zdGF0ZSA9ICdxdW90ZSc7Cgl9CgoJLyoqCgkgKiBQYXJzZSB0aGUgYm9keQoJICoKCSAqIEBhY2Nlc3MgcHJpdmF0ZQoJICovCglmdW5jdGlvbiBib2R5KCkKCXsKCQkkdGhpcy0+Ym9keSA9IHN1YnN0cigkdGhpcy0+ZGF0YSwgJHRoaXMtPnBvc2l0aW9uKTsKCQkkdGhpcy0+c3RhdGUgPSAnZW1pdCc7Cgl9Cn0KCi8qKgogKiBnemRlY29kZQogKgogKiBAcGFja2FnZSBTaW1wbGVQaWUKICovCmNsYXNzIFNpbXBsZVBpZV9nemRlY29kZQp7CgkvKioKCSAqIENvbXByZXNzZWQgZGF0YQoJICoKCSAqIEBhY2Nlc3MgcHJpdmF0ZQoJICogQHNlZSBnemRlY29kZTo6JGRhdGEKCSAqLwoJdmFyICRjb21wcmVzc2VkX2RhdGE7CgoJLyoqCgkgKiBTaXplIG9mIGNvbXByZXNzZWQgZGF0YQoJICoKCSAqIEBhY2Nlc3MgcHJpdmF0ZQoJICovCgl2YXIgJGNvbXByZXNzZWRfc2l6ZTsKCgkvKioKCSAqIE1pbmltdW0gc2l6ZSBvZiBhIHZhbGlkIGd6aXAgc3RyaW5nCgkgKgoJICogQGFjY2VzcyBwcml2YXRlCgkgKi8KCXZhciAkbWluX2NvbXByZXNzZWRfc2l6ZSA9IDE4OwoKCS8qKgoJICogQ3VycmVudCBwb3NpdGlvbiBvZiBwb2ludGVyCgkgKgoJICogQGFjY2VzcyBwcml2YXRlCgkgKi8KCXZhciAkcG9zaXRpb24gPSAwOwoKCS8qKgoJICogRmxhZ3MgKEZMRykKCSAqCgkgKiBAYWNjZXNzIHByaXZhdGUKCSAqLwoJdmFyICRmbGFnczsKCgkvKioKCSAqIFVuY29tcHJlc3NlZCBkYXRhCgkgKgoJICogQGFjY2VzcyBwdWJsaWMKCSAqIEBzZWUgZ3pkZWNvZGU6OiRjb21wcmVzc2VkX2RhdGEKCSAqLwoJdmFyICRkYXRhOwoKCS8qKgoJICogTW9kaWZpZWQgdGltZQoJICoKCSAqIEBhY2Nlc3MgcHVibGljCgkgKi8KCXZhciAkTVRJTUU7CgoJLyoqCgkgKiBFeHRyYSBGbGFncwoJICoKCSAqIEBhY2Nlc3MgcHVibGljCgkgKi8KCXZhciAkWEZMOwoKCS8qKgoJICogT3BlcmF0aW5nIFN5c3RlbQoJICoKCSAqIEBhY2Nlc3MgcHVibGljCgkgKi8KCXZhciAkT1M7CgoJLyoqCgkgKiBTdWJmaWVsZCBJRCAxCgkgKgoJICogQGFjY2VzcyBwdWJsaWMKCSAqIEBzZWUgZ3pkZWNvZGU6OiRleHRyYV9maWVsZAoJICogQHNlZSBnemRlY29kZTo6JFNJMgoJICovCgl2YXIgJFNJMTsKCgkvKioKCSAqIFN1YmZpZWxkIElEIDIKCSAqCgkgKiBAYWNjZXNzIHB1YmxpYwoJICogQHNlZSBnemRlY29kZTo6JGV4dHJhX2ZpZWxkCgkgKiBAc2VlIGd6ZGVjb2RlOjokU0kxCgkgKi8KCXZhciAkU0kyOwoKCS8qKgoJICogRXh0cmEgZmllbGQgY29udGVudAoJICoKCSAqIEBhY2Nlc3MgcHVibGljCgkgKiBAc2VlIGd6ZGVjb2RlOjokU0kxCgkgKiBAc2VlIGd6ZGVjb2RlOjokU0kyCgkgKi8KCXZhciAkZXh0cmFfZmllbGQ7CgoJLyoqCgkgKiBPcmlnaW5hbCBmaWxlbmFtZQoJICoKCSAqIEBhY2Nlc3MgcHVibGljCgkgKi8KCXZhciAkZmlsZW5hbWU7CgoJLyoqCgkgKiBIdW1hbiByZWFkYWJsZSBjb21tZW50CgkgKgoJICogQGFjY2VzcyBwdWJsaWMKCSAqLwoJdmFyICRjb21tZW50OwoKCS8qKgoJICogRG9uJ3QgYWxsb3cgYW55dGhpbmcgdG8gYmUgc2V0CgkgKgoJICogQGFjY2VzcyBwdWJsaWMKCSAqLwoJZnVuY3Rpb24gX19zZXQoJG5hbWUsICR2YWx1ZSkKCXsKCQl0cmlnZ2VyX2Vycm9yKCJDYW5ub3Qgd3JpdGUgcHJvcGVydHkgJG5hbWUiLCBFX1VTRVJfRVJST1IpOwoJfQoKCS8qKgoJICogU2V0IHRoZSBjb21wcmVzc2VkIHN0cmluZyBhbmQgcmVsYXRlZCBwcm9wZXJ0aWVzCgkgKgoJICogQGFjY2VzcyBwdWJsaWMKCSAqLwoJZnVuY3Rpb24gU2ltcGxlUGllX2d6ZGVjb2RlKCRkYXRhKQoJewoJCSR0aGlzLT5jb21wcmVzc2VkX2RhdGEgPSAkZGF0YTsKCQkkdGhpcy0+Y29tcHJlc3NlZF9zaXplID0gc3RybGVuKCRkYXRhKTsKCX0KCgkvKioKCSAqIERlY29kZSB0aGUgR1pJUCBzdHJlYW0KCSAqCgkgKiBAYWNjZXNzIHB1YmxpYwoJICovCglmdW5jdGlvbiBwYXJzZSgpCgl7CgkJaWYgKCR0aGlzLT5jb21wcmVzc2VkX3NpemUgPj0gJHRoaXMtPm1pbl9jb21wcmVzc2VkX3NpemUpCgkJewoJCQkvLyBDaGVjayBJRDEsIElEMiwgYW5kIENNCgkJCWlmIChzdWJzdHIoJHRoaXMtPmNvbXByZXNzZWRfZGF0YSwgMCwgMykgIT09ICJceDFGXHg4Qlx4MDgiKQoJCQl7CgkJCQlyZXR1cm4gZmFsc2U7CgkJCX0KCgkJCS8vIEdldCB0aGUgRkxHIChGTGFHcykKCQkJJHRoaXMtPmZsYWdzID0gb3JkKCR0aGlzLT5jb21wcmVzc2VkX2RhdGFbM10pOwoKCQkJLy8gRkxHIGJpdHMgYWJvdmUgKDEgPDwgNCkgYXJlIHJlc2VydmVkCgkJCWlmICgkdGhpcy0+ZmxhZ3MgPiAweDFGKQoJCQl7CgkJCQlyZXR1cm4gZmFsc2U7CgkJCX0KCgkJCS8vIEFkdmFuY2UgdGhlIHBvaW50ZXIgYWZ0ZXIgdGhlIGFib3ZlCgkJCSR0aGlzLT5wb3NpdGlvbiArPSA0OwoKCQkJLy8gTVRJTUUKCQkJJG10aW1lID0gc3Vic3RyKCR0aGlzLT5jb21wcmVzc2VkX2RhdGEsICR0aGlzLT5wb3NpdGlvbiwgNCk7CgkJCS8vIFJldmVyc2UgdGhlIHN0cmluZyBpZiB3ZSdyZSBvbiBhIGJpZy1lbmRpYW4gYXJjaCBiZWNhdXNlIGwgaXMgdGhlIG9ubHkgc2lnbmVkIGxvbmcgYW5kIGlzIG1hY2hpbmUgZW5kaWFubmVzcwoJCQlpZiAoY3VycmVudCh1bnBhY2soJ1MnLCAiXHgwMFx4MDEiKSkgPT09IDEpCgkJCXsKCQkJCSRtdGltZSA9IHN0cnJldigkbXRpbWUpOwoJCQl9CgkJCSR0aGlzLT5NVElNRSA9IGN1cnJlbnQodW5wYWNrKCdsJywgJG10aW1lKSk7CgkJCSR0aGlzLT5wb3NpdGlvbiArPSA0OwoKCQkJLy8gR2V0IHRoZSBYRkwgKGVYdHJhIEZMYWdzKQoJCQkkdGhpcy0+WEZMID0gb3JkKCR0aGlzLT5jb21wcmVzc2VkX2RhdGFbJHRoaXMtPnBvc2l0aW9uKytdKTsKCgkJCS8vIEdldCB0aGUgT1MgKE9wZXJhdGluZyBTeXN0ZW0pCgkJCSR0aGlzLT5PUyA9IG9yZCgkdGhpcy0+Y29tcHJlc3NlZF9kYXRhWyR0aGlzLT5wb3NpdGlvbisrXSk7CgoJCQkvLyBQYXJzZSB0aGUgRkVYVFJBCgkJCWlmICgkdGhpcy0+ZmxhZ3MgJiA0KQoJCQl7CgkJCQkvLyBSZWFkIHN1YmZpZWxkIElEcwoJCQkJJHRoaXMtPlNJMSA9ICR0aGlzLT5jb21wcmVzc2VkX2RhdGFbJHRoaXMtPnBvc2l0aW9uKytdOwoJCQkJJHRoaXMtPlNJMiA9ICR0aGlzLT5jb21wcmVzc2VkX2RhdGFbJHRoaXMtPnBvc2l0aW9uKytdOwoKCQkJCS8vIFNJMiBzZXQgdG8gemVybyBpcyByZXNlcnZlZCBmb3IgZnV0dXJlIHVzZQoJCQkJaWYgKCR0aGlzLT5TSTIgPT09ICJceDAwIikKCQkJCXsKCQkJCQlyZXR1cm4gZmFsc2U7CgkJCQl9CgoJCQkJLy8gR2V0IHRoZSBsZW5ndGggb2YgdGhlIGV4dHJhIGZpZWxkCgkJCQkkbGVuID0gY3VycmVudCh1bnBhY2soJ3YnLCBzdWJzdHIoJHRoaXMtPmNvbXByZXNzZWRfZGF0YSwgJHRoaXMtPnBvc2l0aW9uLCAyKSkpOwoJCQkJJHBvc2l0aW9uICs9IDI7CgoJCQkJLy8gQ2hlY2sgdGhlIGxlbmd0aCBvZiB0aGUgc3RyaW5nIGlzIHN0aWxsIHZhbGlkCgkJCQkkdGhpcy0+bWluX2NvbXByZXNzZWRfc2l6ZSArPSAkbGVuICsgNDsKCQkJCWlmICgkdGhpcy0+Y29tcHJlc3NlZF9zaXplID49ICR0aGlzLT5taW5fY29tcHJlc3NlZF9zaXplKQoJCQkJewoJCQkJCS8vIFNldCB0aGUgZXh0cmEgZmllbGQgdG8gdGhlIGdpdmVuIGRhdGEKCQkJCQkkdGhpcy0+ZXh0cmFfZmllbGQgPSBzdWJzdHIoJHRoaXMtPmNvbXByZXNzZWRfZGF0YSwgJHRoaXMtPnBvc2l0aW9uLCAkbGVuKTsKCQkJCQkkdGhpcy0+cG9zaXRpb24gKz0gJGxlbjsKCQkJCX0KCQkJCWVsc2UKCQkJCXsKCQkJCQlyZXR1cm4gZmFsc2U7CgkJCQl9CgkJCX0KCgkJCS8vIFBhcnNlIHRoZSBGTkFNRQoJCQlpZiAoJHRoaXMtPmZsYWdzICYgOCkKCQkJewoJCQkJLy8gR2V0IHRoZSBsZW5ndGggb2YgdGhlIGZpbGVuYW1lCgkJCQkkbGVuID0gc3Ryc3BuKCR0aGlzLT5jb21wcmVzc2VkX2RhdGEsICJceDAwIiwgJHRoaXMtPnBvc2l0aW9uKTsKCgkJCQkvLyBDaGVjayB0aGUgbGVuZ3RoIG9mIHRoZSBzdHJpbmcgaXMgc3RpbGwgdmFsaWQKCQkJCSR0aGlzLT5taW5fY29tcHJlc3NlZF9zaXplICs9ICRsZW4gKyAxOwoJCQkJaWYgKCR0aGlzLT5jb21wcmVzc2VkX3NpemUgPj0gJHRoaXMtPm1pbl9jb21wcmVzc2VkX3NpemUpCgkJCQl7CgkJCQkJLy8gU2V0IHRoZSBvcmlnaW5hbCBmaWxlbmFtZSB0byB0aGUgZ2l2ZW4gc3RyaW5nCgkJCQkJJHRoaXMtPmZpbGVuYW1lID0gc3Vic3RyKCR0aGlzLT5jb21wcmVzc2VkX2RhdGEsICR0aGlzLT5wb3NpdGlvbiwgJGxlbik7CgkJCQkJJHRoaXMtPnBvc2l0aW9uICs9ICRsZW4gKyAxOwoJCQkJfQoJCQkJZWxzZQoJCQkJewoJCQkJCXJldHVybiBmYWxzZTsKCQkJCX0KCQkJfQoKCQkJLy8gUGFyc2UgdGhlIEZDT01NRU5UCgkJCWlmICgkdGhpcy0+ZmxhZ3MgJiAxNikKCQkJewoJCQkJLy8gR2V0IHRoZSBsZW5ndGggb2YgdGhlIGNvbW1lbnQKCQkJCSRsZW4gPSBzdHJzcG4oJHRoaXMtPmNvbXByZXNzZWRfZGF0YSwgIlx4MDAiLCAkdGhpcy0+cG9zaXRpb24pOwoKCQkJCS8vIENoZWNrIHRoZSBsZW5ndGggb2YgdGhlIHN0cmluZyBpcyBzdGlsbCB2YWxpZAoJCQkJJHRoaXMtPm1pbl9jb21wcmVzc2VkX3NpemUgKz0gJGxlbiArIDE7CgkJCQlpZiAoJHRoaXMtPmNvbXByZXNzZWRfc2l6ZSA+PSAkdGhpcy0+bWluX2NvbXByZXNzZWRfc2l6ZSkKCQkJCXsKCQkJCQkvLyBTZXQgdGhlIG9yaWdpbmFsIGNvbW1lbnQgdG8gdGhlIGdpdmVuIHN0cmluZwoJCQkJCSR0aGlzLT5jb21tZW50ID0gc3Vic3RyKCR0aGlzLT5jb21wcmVzc2VkX2RhdGEsICR0aGlzLT5wb3NpdGlvbiwgJGxlbik7CgkJCQkJJHRoaXMtPnBvc2l0aW9uICs9ICRsZW4gKyAxOwoJCQkJfQoJCQkJZWxzZQoJCQkJewoJCQkJCXJldHVybiBmYWxzZTsKCQkJCX0KCQkJfQoKCQkJLy8gUGFyc2UgdGhlIEZIQ1JDCgkJCWlmICgkdGhpcy0+ZmxhZ3MgJiAyKQoJCQl7CgkJCQkvLyBDaGVjayB0aGUgbGVuZ3RoIG9mIHRoZSBzdHJpbmcgaXMgc3RpbGwgdmFsaWQKCQkJCSR0aGlzLT5taW5fY29tcHJlc3NlZF9zaXplICs9ICRsZW4gKyAyOwoJCQkJaWYgKCR0aGlzLT5jb21wcmVzc2VkX3NpemUgPj0gJHRoaXMtPm1pbl9jb21wcmVzc2VkX3NpemUpCgkJCQl7CgkJCQkJLy8gUmVhZCB0aGUgQ1JDCgkJCQkJJGNyYyA9IGN1cnJlbnQodW5wYWNrKCd2Jywgc3Vic3RyKCR0aGlzLT5jb21wcmVzc2VkX2RhdGEsICR0aGlzLT5wb3NpdGlvbiwgMikpKTsKCgkJCQkJLy8gQ2hlY2sgdGhlIENSQyBtYXRjaGVzCgkJCQkJaWYgKChjcmMzMihzdWJzdHIoJHRoaXMtPmNvbXByZXNzZWRfZGF0YSwgMCwgJHRoaXMtPnBvc2l0aW9uKSkgJiAweEZGRkYpID09PSAkY3JjKQoJCQkJCXsKCQkJCQkJJHRoaXMtPnBvc2l0aW9uICs9IDI7CgkJCQkJfQoJCQkJCWVsc2UKCQkJCQl7CgkJCQkJCXJldHVybiBmYWxzZTsKCQkJCQl9CgkJCQl9CgkJCQllbHNlCgkJCQl7CgkJCQkJcmV0dXJuIGZhbHNlOwoJCQkJfQoJCQl9CgoJCQkvLyBEZWNvbXByZXNzIHRoZSBhY3R1YWwgZGF0YQoJCQlpZiAoKCR0aGlzLT5kYXRhID0gZ3ppbmZsYXRlKHN1YnN0cigkdGhpcy0+Y29tcHJlc3NlZF9kYXRhLCAkdGhpcy0+cG9zaXRpb24sIC04KSkpID09PSBmYWxzZSkKCQkJewoJCQkJcmV0dXJuIGZhbHNlOwoJCQl9CgkJCWVsc2UKCQkJewoJCQkJJHRoaXMtPnBvc2l0aW9uID0gJHRoaXMtPmNvbXByZXNzZWRfc2l6ZSAtIDg7CgkJCX0KCgkJCS8vIENoZWNrIENSQyBvZiBkYXRhCgkJCSRjcmMgPSBjdXJyZW50KHVucGFjaygnVicsIHN1YnN0cigkdGhpcy0+Y29tcHJlc3NlZF9kYXRhLCAkdGhpcy0+cG9zaXRpb24sIDQpKSk7CgkJCSR0aGlzLT5wb3NpdGlvbiArPSA0OwoJCQkvKmlmIChleHRlbnNpb25fbG9hZGVkKCdoYXNoJykgJiYgc3ByaW50ZignJXUnLCBjdXJyZW50KHVucGFjaygnVicsIGhhc2goJ2NyYzMyYicsICR0aGlzLT5kYXRhKSkpKSAhPT0gc3ByaW50ZignJXUnLCAkY3JjKSkKCQkJewoJCQkJcmV0dXJuIGZhbHNlOwoJCQl9Ki8KCgkJCS8vIENoZWNrIElTSVpFIG9mIGRhdGEKCQkJJGlzaXplID0gY3VycmVudCh1bnBhY2soJ1YnLCBzdWJzdHIoJHRoaXMtPmNvbXByZXNzZWRfZGF0YSwgJHRoaXMtPnBvc2l0aW9uLCA0KSkpOwoJCQkkdGhpcy0+cG9zaXRpb24gKz0gNDsKCQkJaWYgKHNwcmludGYoJyV1Jywgc3RybGVuKCR0aGlzLT5kYXRhKSAmIDB4RkZGRkZGRkYpICE9PSBzcHJpbnRmKCcldScsICRpc2l6ZSkpCgkJCXsKCQkJCXJldHVybiBmYWxzZTsKCQkJfQoKCQkJLy8gV293LCBhZ2FpbnN0IGFsbCBvZGRzLCB3ZSd2ZSBhY3R1YWxseSBnb3QgYSB2YWxpZCBnemlwIHN0cmluZwoJCQlyZXR1cm4gdHJ1ZTsKCQl9CgkJZWxzZQoJCXsKCQkJcmV0dXJuIGZhbHNlOwoJCX0KCX0KfQoKY2xhc3MgU2ltcGxlUGllX0NhY2hlCnsKCS8qKgoJICogRG9uJ3QgY2FsbCB0aGUgY29uc3RydWN0b3IuIFBsZWFzZS4KCSAqCgkgKiBAYWNjZXNzIHByaXZhdGUKCSAqLwoJZnVuY3Rpb24gU2ltcGxlUGllX0NhY2hlKCkKCXsKCQl0cmlnZ2VyX2Vycm9yKCdQbGVhc2UgY2FsbCBTaW1wbGVQaWVfQ2FjaGU6OmNyZWF0ZSgpIGluc3RlYWQgb2YgdGhlIGNvbnN0cnVjdG9yJywgRV9VU0VSX0VSUk9SKTsKCX0KCgkvKioKCSAqIENyZWF0ZSBhIG5ldyBTaW1wbGVQaWVfQ2FjaGUgb2JqZWN0CgkgKgoJICogQHN0YXRpYwoJICogQGFjY2VzcyBwdWJsaWMKCSAqLwoJZnVuY3Rpb24gY3JlYXRlKCRsb2NhdGlvbiwgJGZpbGVuYW1lLCAkZXh0ZW5zaW9uKQoJewoJCXJldHVybiBuZXcgU2ltcGxlUGllX0NhY2hlX0ZpbGUoJGxvY2F0aW9uLCAkZmlsZW5hbWUsICRleHRlbnNpb24pOwoJfQp9CgpjbGFzcyBTaW1wbGVQaWVfQ2FjaGVfRmlsZQp7Cgl2YXIgJGxvY2F0aW9uOwoJdmFyICRmaWxlbmFtZTsKCXZhciAkZXh0ZW5zaW9uOwoJdmFyICRuYW1lOwoKCWZ1bmN0aW9uIFNpbXBsZVBpZV9DYWNoZV9GaWxlKCRsb2NhdGlvbiwgJGZpbGVuYW1lLCAkZXh0ZW5zaW9uKQoJewoJCSR0aGlzLT5sb2NhdGlvbiA9ICRsb2NhdGlvbjsKCQkkdGhpcy0+ZmlsZW5hbWUgPSByYXd1cmxlbmNvZGUoJGZpbGVuYW1lKTsKCQkkdGhpcy0+ZXh0ZW5zaW9uID0gcmF3dXJsZW5jb2RlKCRleHRlbnNpb24pOwoJCSR0aGlzLT5uYW1lID0gIiRsb2NhdGlvbi8kdGhpcy0+ZmlsZW5hbWUuJHRoaXMtPmV4dGVuc2lvbiI7Cgl9CgoJZnVuY3Rpb24gc2F2ZSgkZGF0YSkKCXsKCQlpZiAoZmlsZV9leGlzdHMoJHRoaXMtPm5hbWUpICYmIGlzX3dyaXRlYWJsZSgkdGhpcy0+bmFtZSkgfHwgZmlsZV9leGlzdHMoJHRoaXMtPmxvY2F0aW9uKSAmJiBpc193cml0ZWFibGUoJHRoaXMtPmxvY2F0aW9uKSkKCQl7CgkJCWlmIChpc19hKCRkYXRhLCAnU2ltcGxlUGllJykpCgkJCXsKCQkJCSRkYXRhID0gJGRhdGEtPmRhdGE7CgkJCX0KCgkJCSRkYXRhID0gc2VyaWFsaXplKCRkYXRhKTsKCgkJCWlmIChmdW5jdGlvbl9leGlzdHMoJ2ZpbGVfcHV0X2NvbnRlbnRzJykpCgkJCXsKCQkJCXJldHVybiAoYm9vbCkgZmlsZV9wdXRfY29udGVudHMoJHRoaXMtPm5hbWUsICRkYXRhKTsKCQkJfQoJCQllbHNlCgkJCXsKCQkJCSRmcCA9IGZvcGVuKCR0aGlzLT5uYW1lLCAnd2InKTsKCQkJCWlmICgkZnApCgkJCQl7CgkJCQkJZndyaXRlKCRmcCwgJGRhdGEpOwoJCQkJCWZjbG9zZSgkZnApOwoJCQkJCXJldHVybiB0cnVlOwoJCQkJfQoJCQl9CgkJfQoJCXJldHVybiBmYWxzZTsKCX0KCglmdW5jdGlvbiBsb2FkKCkKCXsKCQlpZiAoZmlsZV9leGlzdHMoJHRoaXMtPm5hbWUpICYmIGlzX3JlYWRhYmxlKCR0aGlzLT5uYW1lKSkKCQl7CgkJCXJldHVybiB1bnNlcmlhbGl6ZShmaWxlX2dldF9jb250ZW50cygkdGhpcy0+bmFtZSkpOwoJCX0KCQlyZXR1cm4gZmFsc2U7Cgl9CgoJZnVuY3Rpb24gbXRpbWUoKQoJewoJCWlmIChmaWxlX2V4aXN0cygkdGhpcy0+bmFtZSkpCgkJewoJCQlyZXR1cm4gZmlsZW10aW1lKCR0aGlzLT5uYW1lKTsKCQl9CgkJcmV0dXJuIGZhbHNlOwoJfQoKCWZ1bmN0aW9uIHRvdWNoKCkKCXsKCQlpZiAoZmlsZV9leGlzdHMoJHRoaXMtPm5hbWUpKQoJCXsKCQkJcmV0dXJuIHRvdWNoKCR0aGlzLT5uYW1lKTsKCQl9CgkJcmV0dXJuIGZhbHNlOwoJfQoKCWZ1bmN0aW9uIHVubGluaygpCgl7CgkJaWYgKGZpbGVfZXhpc3RzKCR0aGlzLT5uYW1lKSkKCQl7CgkJCXJldHVybiB1bmxpbmsoJHRoaXMtPm5hbWUpOwoJCX0KCQlyZXR1cm4gZmFsc2U7Cgl9Cn0KCmNsYXNzIFNpbXBsZVBpZV9NaXNjCnsKCWZ1bmN0aW9uIHRpbWVfaG1zKCRzZWNvbmRzKQoJewoJCSR0aW1lID0gJyc7CgoJCSRob3VycyA9IGZsb29yKCRzZWNvbmRzIC8gMzYwMCk7CgkJJHJlbWFpbmRlciA9ICRzZWNvbmRzICUgMzYwMDsKCQlpZiAoJGhvdXJzID4gMCkKCQl7CgkJCSR0aW1lIC49ICRob3Vycy4nOic7CgkJfQoKCQkkbWludXRlcyA9IGZsb29yKCRyZW1haW5kZXIgLyA2MCk7CgkJJHNlY29uZHMgPSAkcmVtYWluZGVyICUgNjA7CgkJaWYgKCRtaW51dGVzIDwgMTAgJiYgJGhvdXJzID4gMCkKCQl7CgkJCSRtaW51dGVzID0gJzAnIC4gJG1pbnV0ZXM7CgkJfQoJCWlmICgkc2Vjb25kcyA8IDEwKQoJCXsKCQkJJHNlY29uZHMgPSAnMCcgLiAkc2Vjb25kczsKCQl9CgoJCSR0aW1lIC49ICRtaW51dGVzLic6JzsKCQkkdGltZSAuPSAkc2Vjb25kczsKCgkJcmV0dXJuICR0aW1lOwoJfQoKCWZ1bmN0aW9uIGFic29sdXRpemVfdXJsKCRyZWxhdGl2ZSwgJGJhc2UpCgl7CgkJaWYgKCRyZWxhdGl2ZSAhPT0gJycpCgkJewoJCQkkcmVsYXRpdmUgPSBTaW1wbGVQaWVfTWlzYzo6cGFyc2VfdXJsKCRyZWxhdGl2ZSk7CgkJCWlmICgkcmVsYXRpdmVbJ3NjaGVtZSddICE9PSAnJykKCQkJewoJCQkJJHRhcmdldCA9ICRyZWxhdGl2ZTsKCQkJfQoJCQllbHNlaWYgKCRiYXNlICE9PSAnJykKCQkJewoJCQkJJGJhc2UgPSBTaW1wbGVQaWVfTWlzYzo6cGFyc2VfdXJsKCRiYXNlKTsKCQkJCSR0YXJnZXQgPSBTaW1wbGVQaWVfTWlzYzo6cGFyc2VfdXJsKCcnKTsKCQkJCWlmICgkcmVsYXRpdmVbJ2F1dGhvcml0eSddICE9PSAnJykKCQkJCXsKCQkJCQkkdGFyZ2V0ID0gJHJlbGF0aXZlOwoJCQkJCSR0YXJnZXRbJ3NjaGVtZSddID0gJGJhc2VbJ3NjaGVtZSddOwoJCQkJfQoJCQkJZWxzZQoJCQkJewoJCQkJCSR0YXJnZXRbJ3NjaGVtZSddID0gJGJhc2VbJ3NjaGVtZSddOwoJCQkJCSR0YXJnZXRbJ2F1dGhvcml0eSddID0gJGJhc2VbJ2F1dGhvcml0eSddOwoJCQkJCWlmICgkcmVsYXRpdmVbJ3BhdGgnXSAhPT0gJycpCgkJCQkJewoJCQkJCQlpZiAoc3RycG9zKCRyZWxhdGl2ZVsncGF0aCddLCAnLycpID09PSAwKQoJCQkJCQl7CgkJCQkJCQkkdGFyZ2V0WydwYXRoJ10gPSAkcmVsYXRpdmVbJ3BhdGgnXTsKCQkJCQkJfQoJCQkJCQllbHNlaWYgKCRiYXNlWydhdXRob3JpdHknXSAhPT0gJycgJiYgJGJhc2VbJ3BhdGgnXSA9PT0gJycpCgkJCQkJCXsKCQkJCQkJCSR0YXJnZXRbJ3BhdGgnXSA9ICcvJyAuICRyZWxhdGl2ZVsncGF0aCddOwoJCQkJCQl9CgkJCQkJCWVsc2VpZiAoKCRsYXN0X3NlZ21lbnQgPSBzdHJycG9zKCRiYXNlWydwYXRoJ10sICcvJykpICE9PSBmYWxzZSkKCQkJCQkJewoJCQkJCQkJJHRhcmdldFsncGF0aCddID0gc3Vic3RyKCRiYXNlWydwYXRoJ10sIDAsICRsYXN0X3NlZ21lbnQgKyAxKSAuICRyZWxhdGl2ZVsncGF0aCddOwoJCQkJCQl9CgkJCQkJCWVsc2UKCQkJCQkJewoJCQkJCQkJJHRhcmdldFsncGF0aCddID0gJHJlbGF0aXZlWydwYXRoJ107CgkJCQkJCX0KCQkJCQkJJHRhcmdldFsncXVlcnknXSA9ICRyZWxhdGl2ZVsncXVlcnknXTsKCQkJCQl9CgkJCQkJZWxzZQoJCQkJCXsKCQkJCQkJJHRhcmdldFsncGF0aCddID0gJGJhc2VbJ3BhdGgnXTsKCQkJCQkJaWYgKCRyZWxhdGl2ZVsncXVlcnknXSAhPT0gJycpCgkJCQkJCXsKCQkJCQkJCSR0YXJnZXRbJ3F1ZXJ5J10gPSAkcmVsYXRpdmVbJ3F1ZXJ5J107CgkJCQkJCX0KCQkJCQkJZWxzZWlmICgkYmFzZVsncXVlcnknXSAhPT0gJycpCgkJCQkJCXsKCQkJCQkJCSR0YXJnZXRbJ3F1ZXJ5J10gPSAkYmFzZVsncXVlcnknXTsKCQkJCQkJfQoJCQkJCX0KCQkJCX0KCQkJCSR0YXJnZXRbJ2ZyYWdtZW50J10gPSAkcmVsYXRpdmVbJ2ZyYWdtZW50J107CgkJCX0KCQkJZWxzZQoJCQl7CgkJCQkvLyBObyBiYXNlIFVSTCwganVzdCByZXR1cm4gdGhlIHJlbGF0aXZlIFVSTAoJCQkJJHRhcmdldCA9ICRyZWxhdGl2ZTsKCQkJfQoJCQkkcmV0dXJuID0gU2ltcGxlUGllX01pc2M6OmNvbXByZXNzX3BhcnNlX3VybCgkdGFyZ2V0WydzY2hlbWUnXSwgJHRhcmdldFsnYXV0aG9yaXR5J10sICR0YXJnZXRbJ3BhdGgnXSwgJHRhcmdldFsncXVlcnknXSwgJHRhcmdldFsnZnJhZ21lbnQnXSk7CgkJfQoJCWVsc2UKCQl7CgkJCSRyZXR1cm4gPSAkYmFzZTsKCQl9CgkJJHJldHVybiA9IFNpbXBsZVBpZV9NaXNjOjpub3JtYWxpemVfdXJsKCRyZXR1cm4pOwoJCXJldHVybiAkcmV0dXJuOwoJfQoKCWZ1bmN0aW9uIHJlbW92ZV9kb3Rfc2VnbWVudHMoJGlucHV0KQoJewoJCSRvdXRwdXQgPSAnJzsKCQl3aGlsZSAoc3RycG9zKCRpbnB1dCwgJy4vJykgIT09IGZhbHNlIHx8IHN0cnBvcygkaW5wdXQsICcvLicpICE9PSBmYWxzZSB8fCAkaW5wdXQgPT0gJy4nIHx8ICRpbnB1dCA9PSAnLi4nKQoJCXsKCQkJLy8gQTogSWYgdGhlIGlucHV0IGJ1ZmZlciBiZWdpbnMgd2l0aCBhIHByZWZpeCBvZiAiLi4vIiBvciAiLi8iLCB0aGVuIHJlbW92ZSB0aGF0IHByZWZpeCBmcm9tIHRoZSBpbnB1dCBidWZmZXI7IG90aGVyd2lzZSwKCQkJaWYgKHN0cnBvcygkaW5wdXQsICcuLi8nKSA9PT0gMCkKCQkJewoJCQkJJGlucHV0ID0gc3Vic3RyKCRpbnB1dCwgMyk7CgkJCX0KCQkJZWxzZWlmIChzdHJwb3MoJGlucHV0LCAnLi8nKSA9PT0gMCkKCQkJewoJCQkJJGlucHV0ID0gc3Vic3RyKCRpbnB1dCwgMik7CgkJCX0KCQkJLy8gQjogaWYgdGhlIGlucHV0IGJ1ZmZlciBiZWdpbnMgd2l0aCBhIHByZWZpeCBvZiAiLy4vIiBvciAiLy4iLCB3aGVyZSAiLiIgaXMgYSBjb21wbGV0ZSBwYXRoIHNlZ21lbnQsIHRoZW4gcmVwbGFjZSB0aGF0IHByZWZpeCB3aXRoICIvIiBpbiB0aGUgaW5wdXQgYnVmZmVyOyBvdGhlcndpc2UsCgkJCWVsc2VpZiAoc3RycG9zKCRpbnB1dCwgJy8uLycpID09PSAwKQoJCQl7CgkJCQkkaW5wdXQgPSBzdWJzdHJfcmVwbGFjZSgkaW5wdXQsICcvJywgMCwgMyk7CgkJCX0KCQkJZWxzZWlmICgkaW5wdXQgPT0gJy8uJykKCQkJewoJCQkJJGlucHV0ID0gJy8nOwoJCQl9CgkJCS8vIEM6IGlmIHRoZSBpbnB1dCBidWZmZXIgYmVnaW5zIHdpdGggYSBwcmVmaXggb2YgIi8uLi8iIG9yICIvLi4iLCB3aGVyZSAiLi4iIGlzIGEgY29tcGxldGUgcGF0aCBzZWdtZW50LCB0aGVuIHJlcGxhY2UgdGhhdCBwcmVmaXggd2l0aCAiLyIgaW4gdGhlIGlucHV0IGJ1ZmZlciBhbmQgcmVtb3ZlIHRoZSBsYXN0IHNlZ21lbnQgYW5kIGl0cyBwcmVjZWRpbmcgIi8iIChpZiBhbnkpIGZyb20gdGhlIG91dHB1dCBidWZmZXI7IG90aGVyd2lzZSwKCQkJZWxzZWlmIChzdHJwb3MoJGlucHV0LCAnLy4uLycpID09PSAwKQoJCQl7CgkJCQkkaW5wdXQgPSBzdWJzdHJfcmVwbGFjZSgkaW5wdXQsICcvJywgMCwgNCk7CgkJCQkkb3V0cHV0ID0gc3Vic3RyX3JlcGxhY2UoJG91dHB1dCwgJycsIHN0cnJwb3MoJG91dHB1dCwgJy8nKSk7CgkJCX0KCQkJZWxzZWlmICgkaW5wdXQgPT0gJy8uLicpCgkJCXsKCQkJCSRpbnB1dCA9ICcvJzsKCQkJCSRvdXRwdXQgPSBzdWJzdHJfcmVwbGFjZSgkb3V0cHV0LCAnJywgc3RycnBvcygkb3V0cHV0LCAnLycpKTsKCQkJfQoJCQkvLyBEOiBpZiB0aGUgaW5wdXQgYnVmZmVyIGNvbnNpc3RzIG9ubHkgb2YgIi4iIG9yICIuLiIsIHRoZW4gcmVtb3ZlIHRoYXQgZnJvbSB0aGUgaW5wdXQgYnVmZmVyOyBvdGhlcndpc2UsCgkJCWVsc2VpZiAoJGlucHV0ID09ICcuJyB8fCAkaW5wdXQgPT0gJy4uJykKCQkJewoJCQkJJGlucHV0ID0gJyc7CgkJCX0KCQkJLy8gRTogbW92ZSB0aGUgZmlyc3QgcGF0aCBzZWdtZW50IGluIHRoZSBpbnB1dCBidWZmZXIgdG8gdGhlIGVuZCBvZiB0aGUgb3V0cHV0IGJ1ZmZlciwgaW5jbHVkaW5nIHRoZSBpbml0aWFsICIvIiBjaGFyYWN0ZXIgKGlmIGFueSkgYW5kIGFueSBzdWJzZXF1ZW50IGNoYXJhY3RlcnMgdXAgdG8sIGJ1dCBub3QgaW5jbHVkaW5nLCB0aGUgbmV4dCAiLyIgY2hhcmFjdGVyIG9yIHRoZSBlbmQgb2YgdGhlIGlucHV0IGJ1ZmZlcgoJCQllbHNlaWYgKCgkcG9zID0gc3RycG9zKCRpbnB1dCwgJy8nLCAxKSkgIT09IGZhbHNlKQoJCQl7CgkJCQkkb3V0cHV0IC49IHN1YnN0cigkaW5wdXQsIDAsICRwb3MpOwoJCQkJJGlucHV0ID0gc3Vic3RyX3JlcGxhY2UoJGlucHV0LCAnJywgMCwgJHBvcyk7CgkJCX0KCQkJZWxzZQoJCQl7CgkJCQkkb3V0cHV0IC49ICRpbnB1dDsKCQkJCSRpbnB1dCA9ICcnOwoJCQl9CgkJfQoJCXJldHVybiAkb3V0cHV0IC4gJGlucHV0OwoJfQoKCWZ1bmN0aW9uIGdldF9lbGVtZW50KCRyZWFsbmFtZSwgJHN0cmluZykKCXsKCQkkcmV0dXJuID0gYXJyYXkoKTsKCQkkbmFtZSA9IHByZWdfcXVvdGUoJHJlYWxuYW1lLCAnLycpOwoJCWlmIChwcmVnX21hdGNoX2FsbCgiLzwoJG5hbWUpIiAuIFNJTVBMRVBJRV9QQ1JFX0hUTUxfQVRUUklCVVRFIC4gIig+KC4qKTxcLyRuYW1lPnwoXC8pPz4pL3NpVSIsICRzdHJpbmcsICRtYXRjaGVzLCBQUkVHX1NFVF9PUkRFUiB8IFBSRUdfT0ZGU0VUX0NBUFRVUkUpKQoJCXsKCQkJZm9yICgkaSA9IDAsICR0b3RhbF9tYXRjaGVzID0gY291bnQoJG1hdGNoZXMpOyAkaSA8ICR0b3RhbF9tYXRjaGVzOyAkaSsrKQoJCQl7CgkJCQkkcmV0dXJuWyRpXVsndGFnJ10gPSAkcmVhbG5hbWU7CgkJCQkkcmV0dXJuWyRpXVsnZnVsbCddID0gJG1hdGNoZXNbJGldWzBdWzBdOwoJCQkJJHJldHVyblskaV1bJ29mZnNldCddID0gJG1hdGNoZXNbJGldWzBdWzFdOwoJCQkJaWYgKHN0cmxlbigkbWF0Y2hlc1skaV1bM11bMF0pIDw9IDIpCgkJCQl7CgkJCQkJJHJldHVyblskaV1bJ3NlbGZfY2xvc2luZyddID0gdHJ1ZTsKCQkJCX0KCQkJCWVsc2UKCQkJCXsKCQkJCQkkcmV0dXJuWyRpXVsnc2VsZl9jbG9zaW5nJ10gPSBmYWxzZTsKCQkJCQkkcmV0dXJuWyRpXVsnY29udGVudCddID0gJG1hdGNoZXNbJGldWzRdWzBdOwoJCQkJfQoJCQkJJHJldHVyblskaV1bJ2F0dHJpYnMnXSA9IGFycmF5KCk7CgkJCQlpZiAoaXNzZXQoJG1hdGNoZXNbJGldWzJdWzBdKSAmJiBwcmVnX21hdGNoX2FsbCgnL1tceDA5XHgwQVx4MEJceDBDXHgwRFx4MjBdKyhbXlx4MDlceDBBXHgwQlx4MENceDBEXHgyMFx4MkZceDNFXVteXHgwOVx4MEFceDBCXHgwQ1x4MERceDIwXHgyRlx4M0RceDNFXSopKD86W1x4MDlceDBBXHgwQlx4MENceDBEXHgyMF0qPVtceDA5XHgwQVx4MEJceDBDXHgwRFx4MjBdKig/OiIoW14iXSopInxcJyhbXlwnXSopXCd8KFteXHgwOVx4MEFceDBCXHgwQ1x4MERceDIwXHgyMlx4MjdceDNFXVteXHgwOVx4MEFceDBCXHgwQ1x4MERceDIwXHgzRV0qKT8pKT8vJywgJyAnIC4gJG1hdGNoZXNbJGldWzJdWzBdIC4gJyAnLCAkYXR0cmlicywgUFJFR19TRVRfT1JERVIpKQoJCQkJewoJCQkJCWZvciAoJGogPSAwLCAkdG90YWxfYXR0cmlicyA9IGNvdW50KCRhdHRyaWJzKTsgJGogPCAkdG90YWxfYXR0cmliczsgJGorKykKCQkJCQl7CgkJCQkJCWlmIChjb3VudCgkYXR0cmlic1skal0pID09IDIpCgkJCQkJCXsKCQkJCQkJCSRhdHRyaWJzWyRqXVsyXSA9ICRhdHRyaWJzWyRqXVsxXTsKCQkJCQkJfQoJCQkJCQkkcmV0dXJuWyRpXVsnYXR0cmlicyddW3N0cnRvbG93ZXIoJGF0dHJpYnNbJGpdWzFdKV1bJ2RhdGEnXSA9IFNpbXBsZVBpZV9NaXNjOjplbnRpdGllc19kZWNvZGUoZW5kKCRhdHRyaWJzWyRqXSksICdVVEYtOCcpOwoJCQkJCX0KCQkJCX0KCQkJfQoJCX0KCQlyZXR1cm4gJHJldHVybjsKCX0KCglmdW5jdGlvbiBlbGVtZW50X2ltcGxvZGUoJGVsZW1lbnQpCgl7CgkJJGZ1bGwgPSAiPCRlbGVtZW50W3RhZ10iOwoJCWZvcmVhY2ggKCRlbGVtZW50WydhdHRyaWJzJ10gYXMgJGtleSA9PiAkdmFsdWUpCgkJewoJCQkka2V5ID0gc3RydG9sb3dlcigka2V5KTsKCQkJJGZ1bGwgLj0gIiAka2V5PVwiIiAuIGh0bWxzcGVjaWFsY2hhcnMoJHZhbHVlWydkYXRhJ10pIC4gJyInOwoJCX0KCQlpZiAoJGVsZW1lbnRbJ3NlbGZfY2xvc2luZyddKQoJCXsKCQkJJGZ1bGwgLj0gJyAvPic7CgkJfQoJCWVsc2UKCQl7CgkJCSRmdWxsIC49ICI+JGVsZW1lbnRbY29udGVudF08LyRlbGVtZW50W3RhZ10+IjsKCQl9CgkJcmV0dXJuICRmdWxsOwoJfQoKCWZ1bmN0aW9uIGVycm9yKCRtZXNzYWdlLCAkbGV2ZWwsICRmaWxlLCAkbGluZSkKCXsKCQlzd2l0Y2ggKCRsZXZlbCkKCQl7CgkJCWNhc2UgRV9VU0VSX0VSUk9SOgoJCQkJJG5vdGUgPSAnUEhQIEVycm9yJzsKCQkJCWJyZWFrOwoJCQljYXNlIEVfVVNFUl9XQVJOSU5HOgoJCQkJJG5vdGUgPSAnUEhQIFdhcm5pbmcnOwoJCQkJYnJlYWs7CgkJCWNhc2UgRV9VU0VSX05PVElDRToKCQkJCSRub3RlID0gJ1BIUCBOb3RpY2UnOwoJCQkJYnJlYWs7CgkJCWRlZmF1bHQ6CgkJCQkkbm90ZSA9ICdVbmtub3duIEVycm9yJzsKCQkJCWJyZWFrOwoJCX0KCQllcnJvcl9sb2coIiRub3RlOiAkbWVzc2FnZSBpbiAkZmlsZSBvbiBsaW5lICRsaW5lIiwgMCk7CgkJcmV0dXJuICRtZXNzYWdlOwoJfQoKCS8qKgoJICogSWYgYSBmaWxlIGhhcyBiZWVuIGNhY2hlZCwgcmV0cmlldmUgYW5kIGRpc3BsYXkgaXQuCgkgKgoJICogVGhpcyBpcyBtb3N0IHVzZWZ1bCBmb3IgY2FjaGluZyBpbWFnZXMgKGdldF9mYXZpY29uKCksIGV0Yy4pLAoJICogaG93ZXZlciBpdCB3b3JrcyBmb3IgYWxsIGNhY2hlZCBmaWxlcy4gIFRoaXMgV0lMTCBOT1QgZGlzcGxheSBBTlkKCSAqIGZpbGUvaW1hZ2UvcGFnZS93aGF0ZXZlciwgYnV0IHJhdGhlciBvbmx5IGRpc3BsYXkgd2hhdCBoYXMgYWxyZWFkeQoJICogYmVlbiBjYWNoZWQgYnkgU2ltcGxlUGllLgoJICoKCSAqIEBhY2Nlc3MgcHVibGljCgkgKiBAc2VlIFNpbXBsZVBpZTo6Z2V0X2Zhdmljb24oKQoJICogQHBhcmFtIHN0ciAkaWRlbnRpZmllcl91cmwgVVJMIHRoYXQgaXMgdXNlZCB0byBpZGVudGlmeSB0aGUgY29udGVudC4KCSAqIFRoaXMgbWF5IG9yIG1heSBub3QgYmUgdGhlIGFjdHVhbCBVUkwgb2YgdGhlIGxpdmUgY29udGVudC4KCSAqIEBwYXJhbSBzdHIgJGNhY2hlX2xvY2F0aW9uIExvY2F0aW9uIG9mIFNpbXBsZVBpZSdzIGNhY2hlLiAgRGVmYXVsdHMKCSAqIHRvICcuL2NhY2hlJy4KCSAqIEBwYXJhbSBzdHIgJGNhY2hlX2V4dGVuc2lvbiBUaGUgZmlsZSBleHRlbnNpb24gdGhhdCB0aGUgZmlsZSB3YXMKCSAqIGNhY2hlZCB3aXRoLiAgRGVmYXVsdHMgdG8gJ3NwYycuCgkgKiBAcGFyYW0gc3RyICRjYWNoZV9jbGFzcyBOYW1lIG9mIHRoZSBjYWNoZS1oYW5kbGluZyBjbGFzcyBiZWluZyB1c2VkCgkgKiBpbiBTaW1wbGVQaWUuICBEZWZhdWx0cyB0byAnU2ltcGxlUGllX0NhY2hlJywgYW5kIHNob3VsZCBiZSBsZWZ0CgkgKiBhcy1pcyB1bmxlc3MgeW91J3ZlIG92ZXJsb2FkZWQgdGhlIGNsYXNzLgoJICogQHBhcmFtIHN0ciAkY2FjaGVfbmFtZV9mdW5jdGlvbiBPYnNvbGV0ZS4gRXhpc3RzIGZvciBiYWNrd2FyZHMKCSAqIGNvbXBhdGliaWxpdHkgcmVhc29ucyBvbmx5LgoJICovCglmdW5jdGlvbiBkaXNwbGF5X2NhY2hlZF9maWxlKCRpZGVudGlmaWVyX3VybCwgJGNhY2hlX2xvY2F0aW9uID0gJy4vY2FjaGUnLCAkY2FjaGVfZXh0ZW5zaW9uID0gJ3NwYycsICRjYWNoZV9jbGFzcyA9ICdTaW1wbGVQaWVfQ2FjaGUnLCAkY2FjaGVfbmFtZV9mdW5jdGlvbiA9ICdtZDUnKQoJewoJCSRjYWNoZSA9IGNhbGxfdXNlcl9mdW5jKGFycmF5KCRjYWNoZV9jbGFzcywgJ2NyZWF0ZScpLCAkY2FjaGVfbG9jYXRpb24sICRpZGVudGlmaWVyX3VybCwgJGNhY2hlX2V4dGVuc2lvbik7CgoJCWlmICgkZmlsZSA9ICRjYWNoZS0+bG9hZCgpKQoJCXsKCQkJaWYgKGlzc2V0KCRmaWxlWydoZWFkZXJzJ11bJ2NvbnRlbnQtdHlwZSddKSkKCQkJewoJCQkJaGVhZGVyKCdDb250ZW50LXR5cGU6JyAuICRmaWxlWydoZWFkZXJzJ11bJ2NvbnRlbnQtdHlwZSddKTsKCQkJfQoJCQllbHNlCgkJCXsKCQkJCWhlYWRlcignQ29udGVudC10eXBlOiBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nKTsKCQkJfQoJCQloZWFkZXIoJ0V4cGlyZXM6ICcgLiBnbWRhdGUoJ0QsIGQgTSBZIEg6aTpzJywgdGltZSgpICsgNjA0ODAwKSAuICcgR01UJyk7IC8vIDcgZGF5cwoJCQllY2hvICRmaWxlWydib2R5J107CgkJCWV4aXQ7CgkJfQoKCQlkaWUoJ0NhY2hlZCBmaWxlIGZvciAnIC4gJGlkZW50aWZpZXJfdXJsIC4gJyBjYW5ub3QgYmUgZm91bmQuJyk7Cgl9CgoJZnVuY3Rpb24gZml4X3Byb3RvY29sKCR1cmwsICRodHRwID0gMSkKCXsKCQkkdXJsID0gU2ltcGxlUGllX01pc2M6Om5vcm1hbGl6ZV91cmwoJHVybCk7CgkJJHBhcnNlZCA9IFNpbXBsZVBpZV9NaXNjOjpwYXJzZV91cmwoJHVybCk7CgkJaWYgKCRwYXJzZWRbJ3NjaGVtZSddICE9PSAnJyAmJiAkcGFyc2VkWydzY2hlbWUnXSAhPSAnaHR0cCcgJiYgJHBhcnNlZFsnc2NoZW1lJ10gIT0gJ2h0dHBzJykKCQl7CgkJCXJldHVybiBTaW1wbGVQaWVfTWlzYzo6Zml4X3Byb3RvY29sKFNpbXBsZVBpZV9NaXNjOjpjb21wcmVzc19wYXJzZV91cmwoJ2h0dHAnLCAkcGFyc2VkWydhdXRob3JpdHknXSwgJHBhcnNlZFsncGF0aCddLCAkcGFyc2VkWydxdWVyeSddLCAkcGFyc2VkWydmcmFnbWVudCddKSwgJGh0dHApOwoJCX0KCgkJaWYgKCRwYXJzZWRbJ3NjaGVtZSddID09PSAnJyAmJiAkcGFyc2VkWydhdXRob3JpdHknXSA9PT0gJycgJiYgIWZpbGVfZXhpc3RzKCR1cmwpKQoJCXsKCQkJcmV0dXJuIFNpbXBsZVBpZV9NaXNjOjpmaXhfcHJvdG9jb2woU2ltcGxlUGllX01pc2M6OmNvbXByZXNzX3BhcnNlX3VybCgnaHR0cCcsICRwYXJzZWRbJ3BhdGgnXSwgJycsICRwYXJzZWRbJ3F1ZXJ5J10sICRwYXJzZWRbJ2ZyYWdtZW50J10pLCAkaHR0cCk7CgkJfQoKCQlpZiAoJGh0dHAgPT0gMiAmJiAkcGFyc2VkWydzY2hlbWUnXSAhPT0gJycpCgkJewoJCQlyZXR1cm4gImZlZWQ6JHVybCI7CgkJfQoJCWVsc2VpZiAoJGh0dHAgPT0gMyAmJiBzdHJ0b2xvd2VyKCRwYXJzZWRbJ3NjaGVtZSddKSA9PSAnaHR0cCcpCgkJewoJCQlyZXR1cm4gc3Vic3RyX3JlcGxhY2UoJHVybCwgJ3BvZGNhc3QnLCAwLCA0KTsKCQl9CgkJZWxzZWlmICgkaHR0cCA9PSA0ICYmIHN0cnRvbG93ZXIoJHBhcnNlZFsnc2NoZW1lJ10pID09ICdodHRwJykKCQl7CgkJCXJldHVybiBzdWJzdHJfcmVwbGFjZSgkdXJsLCAnaXRwYycsIDAsIDQpOwoJCX0KCQllbHNlCgkJewoJCQlyZXR1cm4gJHVybDsKCQl9Cgl9CgoJZnVuY3Rpb24gcGFyc2VfdXJsKCR1cmwpCgl7CgkJc3RhdGljICRjYWNoZSA9IGFycmF5KCk7CgkJaWYgKGlzc2V0KCRjYWNoZVskdXJsXSkpCgkJewoJCQlyZXR1cm4gJGNhY2hlWyR1cmxdOwoJCX0KCQllbHNlaWYgKHByZWdfbWF0Y2goJy9eKChbXjpcLz8jXSspOik/KFwvXC8oW15cLz8jXSopKT8oW14/I10qKShcPyhbXiNdKikpPygjKC4qKSk/JC8nLCAkdXJsLCAkbWF0Y2gpKQoJCXsKCQkJZm9yICgkaSA9IGNvdW50KCRtYXRjaCk7ICRpIDw9IDk7ICRpKyspCgkJCXsKCQkJCSRtYXRjaFskaV0gPSAnJzsKCQkJfQoJCQlyZXR1cm4gJGNhY2hlWyR1cmxdID0gYXJyYXkoJ3NjaGVtZScgPT4gJG1hdGNoWzJdLCAnYXV0aG9yaXR5JyA9PiAkbWF0Y2hbNF0sICdwYXRoJyA9PiAkbWF0Y2hbNV0sICdxdWVyeScgPT4gJG1hdGNoWzddLCAnZnJhZ21lbnQnID0+ICRtYXRjaFs5XSk7CgkJfQoJCWVsc2UKCQl7CgkJCXJldHVybiAkY2FjaGVbJHVybF0gPSBhcnJheSgnc2NoZW1lJyA9PiAnJywgJ2F1dGhvcml0eScgPT4gJycsICdwYXRoJyA9PiAnJywgJ3F1ZXJ5JyA9PiAnJywgJ2ZyYWdtZW50JyA9PiAnJyk7CgkJfQoJfQoKCWZ1bmN0aW9uIGNvbXByZXNzX3BhcnNlX3VybCgkc2NoZW1lID0gJycsICRhdXRob3JpdHkgPSAnJywgJHBhdGggPSAnJywgJHF1ZXJ5ID0gJycsICRmcmFnbWVudCA9ICcnKQoJewoJCSRyZXR1cm4gPSAnJzsKCQlpZiAoJHNjaGVtZSAhPT0gJycpCgkJewoJCQkkcmV0dXJuIC49ICIkc2NoZW1lOiI7CgkJfQoJCWlmICgkYXV0aG9yaXR5ICE9PSAnJykKCQl7CgkJCSRyZXR1cm4gLj0gIi8vJGF1dGhvcml0eSI7CgkJfQoJCWlmICgkcGF0aCAhPT0gJycpCgkJewoJCQkkcmV0dXJuIC49ICRwYXRoOwoJCX0KCQlpZiAoJHF1ZXJ5ICE9PSAnJykKCQl7CgkJCSRyZXR1cm4gLj0gIj8kcXVlcnkiOwoJCX0KCQlpZiAoJGZyYWdtZW50ICE9PSAnJykKCQl7CgkJCSRyZXR1cm4gLj0gIiMkZnJhZ21lbnQiOwoJCX0KCQlyZXR1cm4gJHJldHVybjsKCX0KCglmdW5jdGlvbiBub3JtYWxpemVfdXJsKCR1cmwpCgl7CgkJJHVybCA9IHByZWdfcmVwbGFjZV9jYWxsYmFjaygnLyUoWzAtOUEtRmEtZl17Mn0pLycsIGFycmF5KCdTaW1wbGVQaWVfTWlzYycsICdwZXJjZW50X2VuY29kaW5nX25vcm1hbGl6YXRpb24nKSwgJHVybCk7CgkJJHVybCA9IFNpbXBsZVBpZV9NaXNjOjpwYXJzZV91cmwoJHVybCk7CgkJJHVybFsnc2NoZW1lJ10gPSBzdHJ0b2xvd2VyKCR1cmxbJ3NjaGVtZSddKTsKCQlpZiAoJHVybFsnYXV0aG9yaXR5J10gIT09ICcnKQoJCXsKCQkJJHVybFsnYXV0aG9yaXR5J10gPSBzdHJ0b2xvd2VyKCR1cmxbJ2F1dGhvcml0eSddKTsKCQkJJHVybFsncGF0aCddID0gU2ltcGxlUGllX01pc2M6OnJlbW92ZV9kb3Rfc2VnbWVudHMoJHVybFsncGF0aCddKTsKCQl9CgkJcmV0dXJuIFNpbXBsZVBpZV9NaXNjOjpjb21wcmVzc19wYXJzZV91cmwoJHVybFsnc2NoZW1lJ10sICR1cmxbJ2F1dGhvcml0eSddLCAkdXJsWydwYXRoJ10sICR1cmxbJ3F1ZXJ5J10sICR1cmxbJ2ZyYWdtZW50J10pOwoJfQoKCWZ1bmN0aW9uIHBlcmNlbnRfZW5jb2Rpbmdfbm9ybWFsaXphdGlvbigkbWF0Y2gpCgl7CgkJJGludGVnZXIgPSBoZXhkZWMoJG1hdGNoWzFdKTsKCQlpZiAoJGludGVnZXIgPj0gMHg0MSAmJiAkaW50ZWdlciA8PSAweDVBIHx8ICRpbnRlZ2VyID49IDB4NjEgJiYgJGludGVnZXIgPD0gMHg3QSB8fCAkaW50ZWdlciA+PSAweDMwICYmICRpbnRlZ2VyIDw9IDB4MzkgfHwgJGludGVnZXIgPT0gMHgyRCB8fCAkaW50ZWdlciA9PSAweDJFIHx8ICRpbnRlZ2VyID09IDB4NUYgfHwgJGludGVnZXIgPT0gMHg3RSkKCQl7CgkJCXJldHVybiBjaHIoJGludGVnZXIpOwoJCX0KCQllbHNlCgkJewoJCQlyZXR1cm4gc3RydG91cHBlcigkbWF0Y2hbMF0pOwoJCX0KCX0KCgkvKioKCSAqIFJlbW92ZSBiYWQgVVRGLTggYnl0ZXMKCSAqCgkgKiBQQ1JFIFBhdHRlcm4gdG8gbG9jYXRlIGJhZCBieXRlcyBpbiBhIFVURi04IHN0cmluZyBjb21lcyBmcm9tIFczQwoJICogRkFROiBNdWx0aWxpbmd1YWwgRm9ybXMgKG1vZGlmaWVkIHRvIGluY2x1ZGUgZnVsbCBBU0NJSSByYW5nZSkKCSAqCgkgKiBAYXV0aG9yIEdlb2ZmcmV5IFNuZWRkb24KCSAqIEBzZWUgaHR0cDovL3d3dy53My5vcmcvSW50ZXJuYXRpb25hbC9xdWVzdGlvbnMvcWEtZm9ybXMtdXRmLTgKCSAqIEBwYXJhbSBzdHJpbmcgJHN0ciBTdHJpbmcgdG8gcmVtb3ZlIGJhZCBVVEYtOCBieXRlcyBmcm9tCgkgKiBAcmV0dXJuIHN0cmluZyBVVEYtOCBzdHJpbmcKCSAqLwoJZnVuY3Rpb24gdXRmOF9iYWRfcmVwbGFjZSgkc3RyKQoJewoJCWlmIChmdW5jdGlvbl9leGlzdHMoJ2ljb252JykgJiYgKCRyZXR1cm4gPSBAaWNvbnYoJ1VURi04JywgJ1VURi04Ly9JR05PUkUnLCAkc3RyKSkpCgkJewoJCQlyZXR1cm4gJHJldHVybjsKCQl9CgkJZWxzZWlmIChmdW5jdGlvbl9leGlzdHMoJ21iX2NvbnZlcnRfZW5jb2RpbmcnKSAmJiAoJHJldHVybiA9IEBtYl9jb252ZXJ0X2VuY29kaW5nKCRzdHIsICdVVEYtOCcsICdVVEYtOCcpKSkKCQl7CgkJCXJldHVybiAkcmV0dXJuOwoJCX0KCQllbHNlaWYgKHByZWdfbWF0Y2hfYWxsKCcvKD86W1x4MDAtXHg3Rl18W1x4QzItXHhERl1bXHg4MC1ceEJGXXxceEUwW1x4QTAtXHhCRl1bXHg4MC1ceEJGXXxbXHhFMS1ceEVDXHhFRVx4RUZdW1x4ODAtXHhCRl17Mn18XHhFRFtceDgwLVx4OUZdW1x4ODAtXHhCRl18XHhGMFtceDkwLVx4QkZdW1x4ODAtXHhCRl17Mn18W1x4RjEtXHhGM11bXHg4MC1ceEJGXXszfXxceEY0W1x4ODAtXHg4Rl1bXHg4MC1ceEJGXXsyfSkrLycsICRzdHIsICRtYXRjaGVzKSkKCQl7CgkJCXJldHVybiBpbXBsb2RlKCJceEVGXHhCRlx4QkQiLCAkbWF0Y2hlc1swXSk7CgkJfQoJCWVsc2VpZiAoJHN0ciAhPT0gJycpCgkJewoJCQlyZXR1cm4gIlx4RUZceEJGXHhCRCI7CgkJfQoJCWVsc2UKCQl7CgkJCXJldHVybiAnJzsKCQl9Cgl9CgoJLyoqCgkgKiBDb252ZXJ0cyBhIFdpbmRvd3MtMTI1MiBlbmNvZGVkIHN0cmluZyB0byBhIFVURi04IGVuY29kZWQgc3RyaW5nCgkgKgoJICogQHN0YXRpYwoJICogQGFjY2VzcyBwdWJsaWMKCSAqIEBwYXJhbSBzdHJpbmcgJHN0cmluZyBXaW5kb3dzLTEyNTIgZW5jb2RlZCBzdHJpbmcKCSAqIEByZXR1cm4gc3RyaW5nIFVURi04IGVuY29kZWQgc3RyaW5nCgkgKi8KCWZ1bmN0aW9uIHdpbmRvd3NfMTI1Ml90b191dGY4KCRzdHJpbmcpCgl7CgkJc3RhdGljICRjb252ZXJ0X3RhYmxlID0gYXJyYXkoIlx4ODAiID0+ICJceEUyXHg4Mlx4QUMiLCAiXHg4MSIgPT4gIlx4RUZceEJGXHhCRCIsICJceDgyIiA9PiAiXHhFMlx4ODBceDlBIiwgIlx4ODMiID0+ICJceEM2XHg5MiIsICJceDg0IiA9PiAiXHhFMlx4ODBceDlFIiwgIlx4ODUiID0+ICJceEUyXHg4MFx4QTYiLCAiXHg4NiIgPT4gIlx4RTJceDgwXHhBMCIsICJceDg3IiA9PiAiXHhFMlx4ODBceEExIiwgIlx4ODgiID0+ICJceENCXHg4NiIsICJceDg5IiA9PiAiXHhFMlx4ODBceEIwIiwgIlx4OEEiID0+ICJceEM1XHhBMCIsICJceDhCIiA9PiAiXHhFMlx4ODBceEI5IiwgIlx4OEMiID0+ICJceEM1XHg5MiIsICJceDhEIiA9PiAiXHhFRlx4QkZceEJEIiwgIlx4OEUiID0+ICJceEM1XHhCRCIsICJceDhGIiA9PiAiXHhFRlx4QkZceEJEIiwgIlx4OTAiID0+ICJceEVGXHhCRlx4QkQiLCAiXHg5MSIgPT4gIlx4RTJceDgwXHg5OCIsICJceDkyIiA9PiAiXHhFMlx4ODBceDk5IiwgIlx4OTMiID0+ICJceEUyXHg4MFx4OUMiLCAiXHg5NCIgPT4gIlx4RTJceDgwXHg5RCIsICJceDk1IiA9PiAiXHhFMlx4ODBceEEyIiwgIlx4OTYiID0+ICJceEUyXHg4MFx4OTMiLCAiXHg5NyIgPT4gIlx4RTJceDgwXHg5NCIsICJceDk4IiA9PiAiXHhDQlx4OUMiLCAiXHg5OSIgPT4gIlx4RTJceDg0XHhBMiIsICJceDlBIiA9PiAiXHhDNVx4QTEiLCAiXHg5QiIgPT4gIlx4RTJceDgwXHhCQSIsICJceDlDIiA9PiAiXHhDNVx4OTMiLCAiXHg5RCIgPT4gIlx4RUZceEJGXHhCRCIsICJceDlFIiA9PiAiXHhDNVx4QkUiLCAiXHg5RiIgPT4gIlx4QzVceEI4IiwgIlx4QTAiID0+ICJceEMyXHhBMCIsICJceEExIiA9PiAiXHhDMlx4QTEiLCAiXHhBMiIgPT4gIlx4QzJceEEyIiwgIlx4QTMiID0+ICJceEMyXHhBMyIsICJceEE0IiA9PiAiXHhDMlx4QTQiLCAiXHhBNSIgPT4gIlx4QzJceEE1IiwgIlx4QTYiID0+ICJceEMyXHhBNiIsICJceEE3IiA9PiAiXHhDMlx4QTciLCAiXHhBOCIgPT4gIlx4QzJceEE4IiwgIlx4QTkiID0+ICJceEMyXHhBOSIsICJceEFBIiA9PiAiXHhDMlx4QUEiLCAiXHhBQiIgPT4gIlx4QzJceEFCIiwgIlx4QUMiID0+ICJceEMyXHhBQyIsICJceEFEIiA9PiAiXHhDMlx4QUQiLCAiXHhBRSIgPT4gIlx4QzJceEFFIiwgIlx4QUYiID0+ICJceEMyXHhBRiIsICJceEIwIiA9PiAiXHhDMlx4QjAiLCAiXHhCMSIgPT4gIlx4QzJceEIxIiwgIlx4QjIiID0+ICJceEMyXHhCMiIsICJceEIzIiA9PiAiXHhDMlx4QjMiLCAiXHhCNCIgPT4gIlx4QzJceEI0IiwgIlx4QjUiID0+ICJceEMyXHhCNSIsICJceEI2IiA9PiAiXHhDMlx4QjYiLCAiXHhCNyIgPT4gIlx4QzJceEI3IiwgIlx4QjgiID0+ICJceEMyXHhCOCIsICJceEI5IiA9PiAiXHhDMlx4QjkiLCAiXHhCQSIgPT4gIlx4QzJceEJBIiwgIlx4QkIiID0+ICJceEMyXHhCQiIsICJceEJDIiA9PiAiXHhDMlx4QkMiLCAiXHhCRCIgPT4gIlx4QzJceEJEIiwgIlx4QkUiID0+ICJceEMyXHhCRSIsICJceEJGIiA9PiAiXHhDMlx4QkYiLCAiXHhDMCIgPT4gIlx4QzNceDgwIiwgIlx4QzEiID0+ICJceEMzXHg4MSIsICJceEMyIiA9PiAiXHhDM1x4ODIiLCAiXHhDMyIgPT4gIlx4QzNceDgzIiwgIlx4QzQiID0+ICJceEMzXHg4NCIsICJceEM1IiA9PiAiXHhDM1x4ODUiLCAiXHhDNiIgPT4gIlx4QzNceDg2IiwgIlx4QzciID0+ICJceEMzXHg4NyIsICJceEM4IiA9PiAiXHhDM1x4ODgiLCAiXHhDOSIgPT4gIlx4QzNceDg5IiwgIlx4Q0EiID0+ICJceEMzXHg4QSIsICJceENCIiA9PiAiXHhDM1x4OEIiLCAiXHhDQyIgPT4gIlx4QzNceDhDIiwgIlx4Q0QiID0+ICJceEMzXHg4RCIsICJceENFIiA9PiAiXHhDM1x4OEUiLCAiXHhDRiIgPT4gIlx4QzNceDhGIiwgIlx4RDAiID0+ICJceEMzXHg5MCIsICJceEQxIiA9PiAiXHhDM1x4OTEiLCAiXHhEMiIgPT4gIlx4QzNceDkyIiwgIlx4RDMiID0+ICJceEMzXHg5MyIsICJceEQ0IiA9PiAiXHhDM1x4OTQiLCAiXHhENSIgPT4gIlx4QzNceDk1IiwgIlx4RDYiID0+ICJceEMzXHg5NiIsICJceEQ3IiA9PiAiXHhDM1x4OTciLCAiXHhEOCIgPT4gIlx4QzNceDk4IiwgIlx4RDkiID0+ICJceEMzXHg5OSIsICJceERBIiA9PiAiXHhDM1x4OUEiLCAiXHhEQiIgPT4gIlx4QzNceDlCIiwgIlx4REMiID0+ICJceEMzXHg5QyIsICJceEREIiA9PiAiXHhDM1x4OUQiLCAiXHhERSIgPT4gIlx4QzNceDlFIiwgIlx4REYiID0+ICJceEMzXHg5RiIsICJceEUwIiA9PiAiXHhDM1x4QTAiLCAiXHhFMSIgPT4gIlx4QzNceEExIiwgIlx4RTIiID0+ICJceEMzXHhBMiIsICJceEUzIiA9PiAiXHhDM1x4QTMiLCAiXHhFNCIgPT4gIlx4QzNceEE0IiwgIlx4RTUiID0+ICJceEMzXHhBNSIsICJceEU2IiA9PiAiXHhDM1x4QTYiLCAiXHhFNyIgPT4gIlx4QzNceEE3IiwgIlx4RTgiID0+ICJceEMzXHhBOCIsICJceEU5IiA9PiAiXHhDM1x4QTkiLCAiXHhFQSIgPT4gIlx4QzNceEFBIiwgIlx4RUIiID0+ICJceEMzXHhBQiIsICJceEVDIiA9PiAiXHhDM1x4QUMiLCAiXHhFRCIgPT4gIlx4QzNceEFEIiwgIlx4RUUiID0+ICJceEMzXHhBRSIsICJceEVGIiA9PiAiXHhDM1x4QUYiLCAiXHhGMCIgPT4gIlx4QzNceEIwIiwgIlx4RjEiID0+ICJceEMzXHhCMSIsICJceEYyIiA9PiAiXHhDM1x4QjIiLCAiXHhGMyIgPT4gIlx4QzNceEIzIiwgIlx4RjQiID0+ICJceEMzXHhCNCIsICJceEY1IiA9PiAiXHhDM1x4QjUiLCAiXHhGNiIgPT4gIlx4QzNceEI2IiwgIlx4RjciID0+ICJceEMzXHhCNyIsICJceEY4IiA9PiAiXHhDM1x4QjgiLCAiXHhGOSIgPT4gIlx4QzNceEI5IiwgIlx4RkEiID0+ICJceEMzXHhCQSIsICJceEZCIiA9PiAiXHhDM1x4QkIiLCAiXHhGQyIgPT4gIlx4QzNceEJDIiwgIlx4RkQiID0+ICJceEMzXHhCRCIsICJceEZFIiA9PiAiXHhDM1x4QkUiLCAiXHhGRiIgPT4gIlx4QzNceEJGIik7CgoJCXJldHVybiBzdHJ0cigkc3RyaW5nLCAkY29udmVydF90YWJsZSk7Cgl9CgoJZnVuY3Rpb24gY2hhbmdlX2VuY29kaW5nKCRkYXRhLCAkaW5wdXQsICRvdXRwdXQpCgl7CgkJJGlucHV0ID0gU2ltcGxlUGllX01pc2M6OmVuY29kaW5nKCRpbnB1dCk7CgkJJG91dHB1dCA9IFNpbXBsZVBpZV9NaXNjOjplbmNvZGluZygkb3V0cHV0KTsKCgkJLy8gV2UgZmFpbCB0byBmYWlsIG9uIG5vbiBVUy1BU0NJSSBieXRlcwoJCWlmICgkaW5wdXQgPT09ICdVUy1BU0NJSScpCgkJewoJCQlzdGF0aWMgJG5vbl9hc2NpaV9vY3RlY3RzID0gJyc7CgkJCWlmICghJG5vbl9hc2NpaV9vY3RlY3RzKQoJCQl7CgkJCQlmb3IgKCRpID0gMHg4MDsgJGkgPD0gMHhGRjsgJGkrKykKCQkJCXsKCQkJCQkkbm9uX2FzY2lpX29jdGVjdHMgLj0gY2hyKCRpKTsKCQkJCX0KCQkJfQoJCQkkZGF0YSA9IHN1YnN0cigkZGF0YSwgMCwgc3RyY3NwbigkZGF0YSwgJG5vbl9hc2NpaV9vY3RlY3RzKSk7CgkJfQoKCQkvLyBUaGlzIGlzIGZpcnN0LCBhcyBiZWhhdmlvdXIgb2YgdGhpcyBpcyBjb21wbGV0ZWx5IHByZWRpY3RhYmxlCgkJaWYgKCRpbnB1dCA9PT0gJ1dpbmRvd3MtMTI1MicgJiYgJG91dHB1dCA9PT0gJ1VURi04JykKCQl7CgkJCXJldHVybiBTaW1wbGVQaWVfTWlzYzo6d2luZG93c18xMjUyX3RvX3V0ZjgoJGRhdGEpOwoJCX0KCQkvLyBUaGlzIGlzIHNlY29uZCwgYXMgYmVoYXZpb3VyIG9mIHRoaXMgdmFyaWVzIG9ubHkgd2l0aCBQSFAgdmVyc2lvbgoJCWVsc2VpZiAoZnVuY3Rpb25fZXhpc3RzKCdtYl9jb252ZXJ0X2VuY29kaW5nJykgJiYgKCRyZXR1cm4gPSBAbWJfY29udmVydF9lbmNvZGluZygkZGF0YSwgJG91dHB1dCwgJGlucHV0KSkpCgkJewoJCQlyZXR1cm4gJHJldHVybjsKCQl9CgkJLy8gVGhpcyBpcyBsYXN0LCBhcyBiZWhhdmlvdXIgb2YgdGhpcyB2YXJpZXMgd2l0aCBPUyB1c2VybGFuZCBhbmQgUEhQIHZlcnNpb24KCQllbHNlaWYgKGZ1bmN0aW9uX2V4aXN0cygnaWNvbnYnKSAmJiAoJHJldHVybiA9IEBpY29udigkaW5wdXQsICRvdXRwdXQsICRkYXRhKSkpCgkJewoJCQlyZXR1cm4gJHJldHVybjsKCQl9CgkJLy8gSWYgd2UgY2FuJ3QgZG8gYW55dGhpbmcsIGp1c3QgZmFpbAoJCWVsc2UKCQl7CgkJCXJldHVybiBmYWxzZTsKCQl9Cgl9CgoJZnVuY3Rpb24gZW5jb2RpbmcoJGNoYXJzZXQpCgl7CgkJLyogQ2hhcmFjdGVyIHNldHMgYXJlIGNhc2UtaW5zZW5zaXRpdmUsIGFuZCBhbHNvIG5lZWQgc29tZSBmdXJ0aGVyCgkJbm9ybWFsaXphdGlvbiBpbiB0aGUgcmVhbCB3b3JsZCAodGhvdWdoIHdlJ2xsIHJldHVybiB0aGVtIGluIHRoZSBmb3JtIGdpdmVuCgkJaW4gdGhlaXIgcmVnaXN0cmF0aW9uKS4gKi8KCQlzd2l0Y2ggKHN0cnRvbG93ZXIocHJlZ19yZXBsYWNlKCcvW1x4MDktXHgwRFx4MjAtXHgyRlx4M0EtXHg0MFx4NUItXHg2MFx4N0ItXHg3RV0vJywgJycsICRjaGFyc2V0KSkpCgkJewoJCQljYXNlICdhZG9iZXN0YW5kYXJkZW5jb2RpbmcnOgoJCQljYXNlICdjc2Fkb2Jlc3RhbmRhcmRlbmNvZGluZyc6CgkJCQlyZXR1cm4gJ0Fkb2JlLVN0YW5kYXJkLUVuY29kaW5nJzsKCgkJCWNhc2UgJ2Fkb2Jlc3ltYm9sZW5jb2RpbmcnOgoJCQljYXNlICdjc2hwcHNtYXRoJzoKCQkJCXJldHVybiAnQWRvYmUtU3ltYm9sLUVuY29kaW5nJzsKCgkJCWNhc2UgJ2FtaTEyNTEnOgoJCQljYXNlICdhbWkxMjUxJzoKCQkJY2FzZSAnYW1pZ2ExMjUxJzoKCQkJY2FzZSAnYW1pZ2ExMjUxJzoKCQkJCXJldHVybiAnQW1pZ2EtMTI1MSc7CgoJCQljYXNlICdhbnNpeDMxMTAxOTgzJzoKCQkJY2FzZSAnY3NhdDUwMDE5ODMnOgoJCQljYXNlICdjc2lzbzk5bmFwbHBzJzoKCQkJY2FzZSAnaXNvaXI5OSc6CgkJCWNhc2UgJ25hcGxwcyc6CgkJCQlyZXR1cm4gJ0FOU0lfWDMuMTEwLTE5ODMnOwoKCQkJY2FzZSAnYXJhYmljNyc6CgkJCWNhc2UgJ2FzbW80NDknOgoJCQljYXNlICdjc2lzbzg5YXNtbzQ0OSc6CgkJCWNhc2UgJ2lzb2lyODknOgoJCQljYXNlICdpc285MDM2JzoKCQkJCXJldHVybiAnQVNNT180NDknOwoKCQkJY2FzZSAnYmlnNSc6CgkJCWNhc2UgJ2NzYmlnNSc6CgkJCWNhc2UgJ3h4YmlnNSc6CgkJCQlyZXR1cm4gJ0JpZzUnOwoKCQkJY2FzZSAnYmlnNWhrc2NzJzoKCQkJCXJldHVybiAnQmlnNS1IS1NDUyc7CgoJCQljYXNlICdib2N1MSc6CgkJCWNhc2UgJ2NzYm9jdTEnOgoJCQkJcmV0dXJuICdCT0NVLTEnOwoKCQkJY2FzZSAnYnJmJzoKCQkJY2FzZSAnY3NicmYnOgoJCQkJcmV0dXJuICdCUkYnOwoKCQkJY2FzZSAnYnM0NzMwJzoKCQkJY2FzZSAnY3Npc280dW5pdGVka2luZ2RvbSc6CgkJCWNhc2UgJ2diJzoKCQkJY2FzZSAnaXNvaXI0JzoKCQkJY2FzZSAnaXNvNjQ2Z2InOgoJCQljYXNlICd1ayc6CgkJCQlyZXR1cm4gJ0JTXzQ3MzAnOwoKCQkJY2FzZSAnYnN2aWV3ZGF0YSc6CgkJCWNhc2UgJ2NzaXNvNDdic3ZpZXdkYXRhJzoKCQkJY2FzZSAnaXNvaXI0Nyc6CgkJCQlyZXR1cm4gJ0JTX3ZpZXdkYXRhJzsKCgkJCWNhc2UgJ2Nlc3U4JzoKCQkJY2FzZSAnY3NjZXN1OCc6CgkJCQlyZXR1cm4gJ0NFU1UtOCc7CgoJCQljYXNlICdjYSc6CgkJCWNhc2UgJ2NzYTcxJzoKCQkJY2FzZSAnY3NhejI0MzQxOTg1MSc6CgkJCWNhc2UgJ2NzaXNvMTIxY2FuYWRpYW4xJzoKCQkJY2FzZSAnaXNvaXIxMjEnOgoJCQljYXNlICdpc282NDZjYSc6CgkJCQlyZXR1cm4gJ0NTQV9aMjQzLjQtMTk4NS0xJzsKCgkJCWNhc2UgJ2NzYTcyJzoKCQkJY2FzZSAnY3NhejI0MzQxOTg1Mic6CgkJCWNhc2UgJ2NzaXNvMTIyY2FuYWRpYW4yJzoKCQkJY2FzZSAnaXNvaXIxMjInOgoJCQljYXNlICdpc282NDZjYTInOgoJCQkJcmV0dXJuICdDU0FfWjI0My40LTE5ODUtMic7CgoJCQljYXNlICdjc2F6MjQzNDE5ODVncic6CgkJCWNhc2UgJ2NzaXNvMTIzY3NhejI0MzQxOTg1Z3InOgoJCQljYXNlICdpc29pcjEyMyc6CgkJCQlyZXR1cm4gJ0NTQV9aMjQzLjQtMTk4NS1ncic7CgoJCQljYXNlICdjc2lzbzEzOWNzbjM2OTEwMyc6CgkJCWNhc2UgJ2NzbjM2OTEwMyc6CgkJCWNhc2UgJ2lzb2lyMTM5JzoKCQkJCXJldHVybiAnQ1NOXzM2OTEwMyc7CgoJCQljYXNlICdjc2RlY21jcyc6CgkJCWNhc2UgJ2RlYyc6CgkJCWNhc2UgJ2RlY21jcyc6CgkJCQlyZXR1cm4gJ0RFQy1NQ1MnOwoKCQkJY2FzZSAnY3Npc28yMWdlcm1hbic6CgkJCWNhc2UgJ2RlJzoKCQkJY2FzZSAnZGluNjYwMDMnOgoJCQljYXNlICdpc29pcjIxJzoKCQkJY2FzZSAnaXNvNjQ2ZGUnOgoJCQkJcmV0dXJuICdESU5fNjYwMDMnOwoKCQkJY2FzZSAnY3Nka3VzJzoKCQkJY2FzZSAnZGt1cyc6CgkJCQlyZXR1cm4gJ2RrLXVzJzsKCgkJCWNhc2UgJ2NzaXNvNjQ2ZGFuaXNoJzoKCQkJY2FzZSAnZGsnOgoJCQljYXNlICdkczIwODknOgoJCQljYXNlICdkczIwODknOgoJCQljYXNlICdpc282NDZkayc6CgkJCQlyZXR1cm4gJ0RTXzIwODknOwoKCQkJY2FzZSAnY3NpYm1lYmNkaWNhdGRlJzoKCQkJY2FzZSAnZWJjZGljYXRkZSc6CgkJCQlyZXR1cm4gJ0VCQ0RJQy1BVC1ERSc7CgoJCQljYXNlICdjc2ViY2RpY2F0ZGVhJzoKCQkJY2FzZSAnZWJjZGljYXRkZWEnOgoJCQkJcmV0dXJuICdFQkNESUMtQVQtREUtQSc7CgoJCQljYXNlICdjc2ViY2RpY2NhZnInOgoJCQljYXNlICdlYmNkaWNjYWZyJzoKCQkJCXJldHVybiAnRUJDRElDLUNBLUZSJzsKCgkJCWNhc2UgJ2NzZWJjZGljZGtubyc6CgkJCWNhc2UgJ2ViY2RpY2Rrbm8nOgoJCQkJcmV0dXJuICdFQkNESUMtREstTk8nOwoKCQkJY2FzZSAnY3NlYmNkaWNka25vYSc6CgkJCWNhc2UgJ2ViY2RpY2Rrbm9hJzoKCQkJCXJldHVybiAnRUJDRElDLURLLU5PLUEnOwoKCQkJY2FzZSAnY3NlYmNkaWNlcyc6CgkJCWNhc2UgJ2ViY2RpY2VzJzoKCQkJCXJldHVybiAnRUJDRElDLUVTJzsKCgkJCWNhc2UgJ2NzZWJjZGljZXNhJzoKCQkJY2FzZSAnZWJjZGljZXNhJzoKCQkJCXJldHVybiAnRUJDRElDLUVTLUEnOwoKCQkJY2FzZSAnY3NlYmNkaWNlc3MnOgoJCQljYXNlICdlYmNkaWNlc3MnOgoJCQkJcmV0dXJuICdFQkNESUMtRVMtUyc7CgoJCQljYXNlICdjc2ViY2RpY2Zpc2UnOgoJCQljYXNlICdlYmNkaWNmaXNlJzoKCQkJCXJldHVybiAnRUJDRElDLUZJLVNFJzsKCgkJCWNhc2UgJ2NzZWJjZGljZmlzZWEnOgoJCQljYXNlICdlYmNkaWNmaXNlYSc6CgkJCQlyZXR1cm4gJ0VCQ0RJQy1GSS1TRS1BJzsKCgkJCWNhc2UgJ2NzZWJjZGljZnInOgoJCQljYXNlICdlYmNkaWNmcic6CgkJCQlyZXR1cm4gJ0VCQ0RJQy1GUic7CgoJCQljYXNlICdjc2ViY2RpY2l0JzoKCQkJY2FzZSAnZWJjZGljaXQnOgoJCQkJcmV0dXJuICdFQkNESUMtSVQnOwoKCQkJY2FzZSAnY3NlYmNkaWNwdCc6CgkJCWNhc2UgJ2ViY2RpY3B0JzoKCQkJCXJldHVybiAnRUJDRElDLVBUJzsKCgkJCWNhc2UgJ2NzZWJjZGljdWsnOgoJCQljYXNlICdlYmNkaWN1ayc6CgkJCQlyZXR1cm4gJ0VCQ0RJQy1VSyc7CgoJCQljYXNlICdjc2ViY2RpY3VzJzoKCQkJY2FzZSAnZWJjZGljdXMnOgoJCQkJcmV0dXJuICdFQkNESUMtVVMnOwoKCQkJY2FzZSAnY3Npc28xMTFlY21hY3lyaWxsaWMnOgoJCQljYXNlICdlY21hY3lyaWxsaWMnOgoJCQljYXNlICdpc29pcjExMSc6CgkJCWNhc2UgJ2tvaThlJzoKCQkJCXJldHVybiAnRUNNQS1jeXJpbGxpYyc7CgoJCQljYXNlICdjc2lzbzE3c3BhbmlzaCc6CgkJCWNhc2UgJ2VzJzoKCQkJY2FzZSAnaXNvaXIxNyc6CgkJCWNhc2UgJ2lzbzY0NmVzJzoKCQkJCXJldHVybiAnRVMnOwoKCQkJY2FzZSAnY3Npc284NXNwYW5pc2gyJzoKCQkJY2FzZSAnZXMyJzoKCQkJY2FzZSAnaXNvaXI4NSc6CgkJCWNhc2UgJ2lzbzY0NmVzMic6CgkJCQlyZXR1cm4gJ0VTMic7CgoJCQljYXNlICdjc2V1Y2ZpeHdpZGphcGFuZXNlJzoKCQkJY2FzZSAnZXh0ZW5kZWR1bml4Y29kZWZpeGVkd2lkdGhmb3JqYXBhbmVzZSc6CgkJCQlyZXR1cm4gJ0V4dGVuZGVkX1VOSVhfQ29kZV9GaXhlZF9XaWR0aF9mb3JfSmFwYW5lc2UnOwoKCQkJY2FzZSAnY3NldWNwa2RmbXRqYXBhbmVzZSc6CgkJCWNhc2UgJ2V1Y2pwJzoKCQkJY2FzZSAnZXh0ZW5kZWR1bml4Y29kZXBhY2tlZGZvcm1hdGZvcmphcGFuZXNlJzoKCQkJCXJldHVybiAnRXh0ZW5kZWRfVU5JWF9Db2RlX1BhY2tlZF9Gb3JtYXRfZm9yX0phcGFuZXNlJzsKCgkJCWNhc2UgJ2diMTgwMzAnOgoJCQkJcmV0dXJuICdHQjE4MDMwJzsKCgkJCWNhc2UgJ2NwOTM2JzoKCQkJY2FzZSAnZ2JrJzoKCQkJY2FzZSAnbXM5MzYnOgoJCQljYXNlICd3aW5kb3dzOTM2JzoKCQkJY2FzZSAnY3NnYjIzMTInOgoJCQljYXNlICdnYjIzMTInOgoJCQljYXNlICdjaGluZXNlJzoKCQkJY2FzZSAnY3Npc281OGdiMjMxMjgwJzoKCQkJY2FzZSAnZ2IyMzEyODAnOgoJCQljYXNlICdpc29pcjU4JzoKCQkJCXJldHVybiAnR0JLJzsKCgkJCWNhc2UgJ2NuJzoKCQkJY2FzZSAnY3Npc281N2diMTk4OCc6CgkJCWNhc2UgJ2diMTk4ODgwJzoKCQkJY2FzZSAnaXNvaXI1Nyc6CgkJCWNhc2UgJ2lzbzY0NmNuJzoKCQkJCXJldHVybiAnR0JfMTk4OC04MCc7CgoJCQljYXNlICdjc2lzbzE1M2dvc3QxOTc2ODc0JzoKCQkJY2FzZSAnZ29zdDE5NzY4NzQnOgoJCQljYXNlICdpc29pcjE1Myc6CgkJCWNhc2UgJ3N0c2V2MzU4ODgnOgoJCQkJcmV0dXJuICdHT1NUXzE5NzY4LTc0JzsKCgkJCWNhc2UgJ2NzaXNvMTUwJzoKCQkJY2FzZSAnY3Npc28xNTBncmVla2NjaXR0JzoKCQkJY2FzZSAnZ3JlZWtjY2l0dCc6CgkJCWNhc2UgJ2lzb2lyMTUwJzoKCQkJCXJldHVybiAnZ3JlZWstY2NpdHQnOwoKCQkJY2FzZSAnY3Npc284OGdyZWVrNyc6CgkJCWNhc2UgJ2dyZWVrNyc6CgkJCWNhc2UgJ2lzb2lyODgnOgoJCQkJcmV0dXJuICdncmVlazcnOwoKCQkJY2FzZSAnY3Npc28xOGdyZWVrN29sZCc6CgkJCWNhc2UgJ2dyZWVrN29sZCc6CgkJCWNhc2UgJ2lzb2lyMTgnOgoJCQkJcmV0dXJuICdncmVlazctb2xkJzsKCgkJCWNhc2UgJ2NzaHBkZXNrdG9wJzoKCQkJY2FzZSAnaHBkZXNrdG9wJzoKCQkJCXJldHVybiAnSFAtRGVza1RvcCc7CgoJCQljYXNlICdjc2hwbGVnYWwnOgoJCQljYXNlICdocGxlZ2FsJzoKCQkJCXJldHVybiAnSFAtTGVnYWwnOwoKCQkJY2FzZSAnY3NocG1hdGg4JzoKCQkJY2FzZSAnaHBtYXRoOCc6CgkJCQlyZXR1cm4gJ0hQLU1hdGg4JzsKCgkJCWNhc2UgJ2NzaHBwaWZvbnQnOgoJCQljYXNlICdocHBpZm9udCc6CgkJCQlyZXR1cm4gJ0hQLVBpLWZvbnQnOwoKCQkJY2FzZSAnY3NocHJvbWFuOCc6CgkJCWNhc2UgJ2hwcm9tYW44JzoKCQkJY2FzZSAncjgnOgoJCQljYXNlICdyb21hbjgnOgoJCQkJcmV0dXJuICdocC1yb21hbjgnOwoKCQkJY2FzZSAnaHpnYjIzMTInOgoJCQkJcmV0dXJuICdIWi1HQi0yMzEyJzsKCgkJCWNhc2UgJ2NzaWJtc3ltYm9scyc6CgkJCWNhc2UgJ2libXN5bWJvbHMnOgoJCQkJcmV0dXJuICdJQk0tU3ltYm9scyc7CgoJCQljYXNlICdjc2libXRoYWknOgoJCQljYXNlICdpYm10aGFpJzoKCQkJCXJldHVybiAnSUJNLVRoYWknOwoKCQkJY2FzZSAnY2NzaWQwMDg1OCc6CgkJCWNhc2UgJ2NwMDA4NTgnOgoJCQljYXNlICdpYm0wMDg1OCc6CgkJCWNhc2UgJ3BjbXVsdGlsaW5ndWFsODUwZXVybyc6CgkJCQlyZXR1cm4gJ0lCTTAwODU4JzsKCgkJCWNhc2UgJ2Njc2lkMDA5MjQnOgoJCQljYXNlICdjcDAwOTI0JzoKCQkJY2FzZSAnZWJjZGljbGF0aW45ZXVybyc6CgkJCWNhc2UgJ2libTAwOTI0JzoKCQkJCXJldHVybiAnSUJNMDA5MjQnOwoKCQkJY2FzZSAnY2NzaWQwMTE0MCc6CgkJCWNhc2UgJ2NwMDExNDAnOgoJCQljYXNlICdlYmNkaWN1czM3ZXVybyc6CgkJCWNhc2UgJ2libTAxMTQwJzoKCQkJCXJldHVybiAnSUJNMDExNDAnOwoKCQkJY2FzZSAnY2NzaWQwMTE0MSc6CgkJCWNhc2UgJ2NwMDExNDEnOgoJCQljYXNlICdlYmNkaWNkZTI3M2V1cm8nOgoJCQljYXNlICdpYm0wMTE0MSc6CgkJCQlyZXR1cm4gJ0lCTTAxMTQxJzsKCgkJCWNhc2UgJ2Njc2lkMDExNDInOgoJCQljYXNlICdjcDAxMTQyJzoKCQkJY2FzZSAnZWJjZGljZGsyNzdldXJvJzoKCQkJY2FzZSAnZWJjZGljbm8yNzdldXJvJzoKCQkJY2FzZSAnaWJtMDExNDInOgoJCQkJcmV0dXJuICdJQk0wMTE0Mic7CgoJCQljYXNlICdjY3NpZDAxMTQzJzoKCQkJY2FzZSAnY3AwMTE0Myc6CgkJCWNhc2UgJ2ViY2RpY2ZpMjc4ZXVybyc6CgkJCWNhc2UgJ2ViY2RpY3NlMjc4ZXVybyc6CgkJCWNhc2UgJ2libTAxMTQzJzoKCQkJCXJldHVybiAnSUJNMDExNDMnOwoKCQkJY2FzZSAnY2NzaWQwMTE0NCc6CgkJCWNhc2UgJ2NwMDExNDQnOgoJCQljYXNlICdlYmNkaWNpdDI4MGV1cm8nOgoJCQljYXNlICdpYm0wMTE0NCc6CgkJCQlyZXR1cm4gJ0lCTTAxMTQ0JzsKCgkJCWNhc2UgJ2Njc2lkMDExNDUnOgoJCQljYXNlICdjcDAxMTQ1JzoKCQkJY2FzZSAnZWJjZGljZXMyODRldXJvJzoKCQkJY2FzZSAnaWJtMDExNDUnOgoJCQkJcmV0dXJuICdJQk0wMTE0NSc7CgoJCQljYXNlICdjY3NpZDAxMTQ2JzoKCQkJY2FzZSAnY3AwMTE0Nic6CgkJCWNhc2UgJ2ViY2RpY2diMjg1ZXVybyc6CgkJCWNhc2UgJ2libTAxMTQ2JzoKCQkJCXJldHVybiAnSUJNMDExNDYnOwoKCQkJY2FzZSAnY2NzaWQwMTE0Nyc6CgkJCWNhc2UgJ2NwMDExNDcnOgoJCQljYXNlICdlYmNkaWNmcjI5N2V1cm8nOgoJCQljYXNlICdpYm0wMTE0Nyc6CgkJCQlyZXR1cm4gJ0lCTTAxMTQ3JzsKCgkJCWNhc2UgJ2Njc2lkMDExNDgnOgoJCQljYXNlICdjcDAxMTQ4JzoKCQkJY2FzZSAnZWJjZGljaW50ZXJuYXRpb25hbDUwMGV1cm8nOgoJCQljYXNlICdpYm0wMTE0OCc6CgkJCQlyZXR1cm4gJ0lCTTAxMTQ4JzsKCgkJCWNhc2UgJ2Njc2lkMDExNDknOgoJCQljYXNlICdjcDAxMTQ5JzoKCQkJY2FzZSAnZWJjZGljaXM4NzFldXJvJzoKCQkJY2FzZSAnaWJtMDExNDknOgoJCQkJcmV0dXJuICdJQk0wMTE0OSc7CgoJCQljYXNlICdjcDAzNyc6CgkJCWNhc2UgJ2NzaWJtMDM3JzoKCQkJY2FzZSAnZWJjZGljY3BjYSc6CgkJCWNhc2UgJ2ViY2RpY2NwbmwnOgoJCQljYXNlICdlYmNkaWNjcHVzJzoKCQkJY2FzZSAnZWJjZGljY3B3dCc6CgkJCWNhc2UgJ2libTAzNyc6CgkJCQlyZXR1cm4gJ0lCTTAzNyc7CgoJCQljYXNlICdjcDAzOCc6CgkJCWNhc2UgJ2NzaWJtMDM4JzoKCQkJY2FzZSAnZWJjZGljaW50JzoKCQkJY2FzZSAnaWJtMDM4JzoKCQkJCXJldHVybiAnSUJNMDM4JzsKCgkJCWNhc2UgJ2NwMjczJzoKCQkJY2FzZSAnY3NpYm0yNzMnOgoJCQljYXNlICdpYm0yNzMnOgoJCQkJcmV0dXJuICdJQk0yNzMnOwoKCQkJY2FzZSAnY3AyNzQnOgoJCQljYXNlICdjc2libTI3NCc6CgkJCWNhc2UgJ2ViY2RpY2JlJzoKCQkJY2FzZSAnaWJtMjc0JzoKCQkJCXJldHVybiAnSUJNMjc0JzsKCgkJCWNhc2UgJ2NwMjc1JzoKCQkJY2FzZSAnY3NpYm0yNzUnOgoJCQljYXNlICdlYmNkaWNicic6CgkJCWNhc2UgJ2libTI3NSc6CgkJCQlyZXR1cm4gJ0lCTTI3NSc7CgoJCQljYXNlICdjc2libTI3Nyc6CgkJCWNhc2UgJ2ViY2RpY2NwZGsnOgoJCQljYXNlICdlYmNkaWNjcG5vJzoKCQkJY2FzZSAnaWJtMjc3JzoKCQkJCXJldHVybiAnSUJNMjc3JzsKCgkJCWNhc2UgJ2NwMjc4JzoKCQkJY2FzZSAnY3NpYm0yNzgnOgoJCQljYXNlICdlYmNkaWNjcGZpJzoKCQkJY2FzZSAnZWJjZGljY3BzZSc6CgkJCWNhc2UgJ2libTI3OCc6CgkJCQlyZXR1cm4gJ0lCTTI3OCc7CgoJCQljYXNlICdjcDI4MCc6CgkJCWNhc2UgJ2NzaWJtMjgwJzoKCQkJY2FzZSAnZWJjZGljY3BpdCc6CgkJCWNhc2UgJ2libTI4MCc6CgkJCQlyZXR1cm4gJ0lCTTI4MCc7CgoJCQljYXNlICdjcDI4MSc6CgkJCWNhc2UgJ2NzaWJtMjgxJzoKCQkJY2FzZSAnZWJjZGljanBlJzoKCQkJY2FzZSAnaWJtMjgxJzoKCQkJCXJldHVybiAnSUJNMjgxJzsKCgkJCWNhc2UgJ2NwMjg0JzoKCQkJY2FzZSAnY3NpYm0yODQnOgoJCQljYXNlICdlYmNkaWNjcGVzJzoKCQkJY2FzZSAnaWJtMjg0JzoKCQkJCXJldHVybiAnSUJNMjg0JzsKCgkJCWNhc2UgJ2NwMjg1JzoKCQkJY2FzZSAnY3NpYm0yODUnOgoJCQljYXNlICdlYmNkaWNjcGdiJzoKCQkJY2FzZSAnaWJtMjg1JzoKCQkJCXJldHVybiAnSUJNMjg1JzsKCgkJCWNhc2UgJ2NwMjkwJzoKCQkJY2FzZSAnY3NpYm0yOTAnOgoJCQljYXNlICdlYmNkaWNqcGthbmEnOgoJCQljYXNlICdpYm0yOTAnOgoJCQkJcmV0dXJuICdJQk0yOTAnOwoKCQkJY2FzZSAnY3AyOTcnOgoJCQljYXNlICdjc2libTI5Nyc6CgkJCWNhc2UgJ2ViY2RpY2NwZnInOgoJCQljYXNlICdpYm0yOTcnOgoJCQkJcmV0dXJuICdJQk0yOTcnOwoKCQkJY2FzZSAnY3A0MjAnOgoJCQljYXNlICdjc2libTQyMCc6CgkJCWNhc2UgJ2ViY2RpY2NwYXIxJzoKCQkJY2FzZSAnaWJtNDIwJzoKCQkJCXJldHVybiAnSUJNNDIwJzsKCgkJCWNhc2UgJ2NwNDIzJzoKCQkJY2FzZSAnY3NpYm00MjMnOgoJCQljYXNlICdlYmNkaWNjcGdyJzoKCQkJY2FzZSAnaWJtNDIzJzoKCQkJCXJldHVybiAnSUJNNDIzJzsKCgkJCWNhc2UgJ2NwNDI0JzoKCQkJY2FzZSAnY3NpYm00MjQnOgoJCQljYXNlICdlYmNkaWNjcGhlJzoKCQkJY2FzZSAnaWJtNDI0JzoKCQkJCXJldHVybiAnSUJNNDI0JzsKCgkJCWNhc2UgJzQzNyc6CgkJCWNhc2UgJ2NwNDM3JzoKCQkJY2FzZSAnY3NwYzhjb2RlcGFnZTQzNyc6CgkJCWNhc2UgJ2libTQzNyc6CgkJCQlyZXR1cm4gJ0lCTTQzNyc7CgoJCQljYXNlICdjcDUwMCc6CgkJCWNhc2UgJ2NzaWJtNTAwJzoKCQkJY2FzZSAnZWJjZGljY3BiZSc6CgkJCWNhc2UgJ2ViY2RpY2NwY2gnOgoJCQljYXNlICdpYm01MDAnOgoJCQkJcmV0dXJuICdJQk01MDAnOwoKCQkJY2FzZSAnY3A3NzUnOgoJCQljYXNlICdjc3BjNzc1YmFsdGljJzoKCQkJY2FzZSAnaWJtNzc1JzoKCQkJCXJldHVybiAnSUJNNzc1JzsKCgkJCWNhc2UgJzg1MCc6CgkJCWNhc2UgJ2NwODUwJzoKCQkJY2FzZSAnY3NwYzg1MG11bHRpbGluZ3VhbCc6CgkJCWNhc2UgJ2libTg1MCc6CgkJCQlyZXR1cm4gJ0lCTTg1MCc7CgoJCQljYXNlICc4NTEnOgoJCQljYXNlICdjcDg1MSc6CgkJCWNhc2UgJ2NzaWJtODUxJzoKCQkJY2FzZSAnaWJtODUxJzoKCQkJCXJldHVybiAnSUJNODUxJzsKCgkJCWNhc2UgJzg1Mic6CgkJCWNhc2UgJ2NwODUyJzoKCQkJY2FzZSAnY3NwY3A4NTInOgoJCQljYXNlICdpYm04NTInOgoJCQkJcmV0dXJuICdJQk04NTInOwoKCQkJY2FzZSAnODU1JzoKCQkJY2FzZSAnY3A4NTUnOgoJCQljYXNlICdjc2libTg1NSc6CgkJCWNhc2UgJ2libTg1NSc6CgkJCQlyZXR1cm4gJ0lCTTg1NSc7CgoJCQljYXNlICc4NTcnOgoJCQljYXNlICdjcDg1Nyc6CgkJCWNhc2UgJ2NzaWJtODU3JzoKCQkJY2FzZSAnaWJtODU3JzoKCQkJCXJldHVybiAnSUJNODU3JzsKCgkJCWNhc2UgJzg2MCc6CgkJCWNhc2UgJ2NwODYwJzoKCQkJY2FzZSAnY3NpYm04NjAnOgoJCQljYXNlICdpYm04NjAnOgoJCQkJcmV0dXJuICdJQk04NjAnOwoKCQkJY2FzZSAnODYxJzoKCQkJY2FzZSAnY3Bpcyc6CgkJCWNhc2UgJ2NwODYxJzoKCQkJY2FzZSAnY3NpYm04NjEnOgoJCQljYXNlICdpYm04NjEnOgoJCQkJcmV0dXJuICdJQk04NjEnOwoKCQkJY2FzZSAnODYyJzoKCQkJY2FzZSAnY3A4NjInOgoJCQljYXNlICdjc3BjODYybGF0aW5oZWJyZXcnOgoJCQljYXNlICdpYm04NjInOgoJCQkJcmV0dXJuICdJQk04NjInOwoKCQkJY2FzZSAnODYzJzoKCQkJY2FzZSAnY3A4NjMnOgoJCQljYXNlICdjc2libTg2Myc6CgkJCWNhc2UgJ2libTg2Myc6CgkJCQlyZXR1cm4gJ0lCTTg2Myc7CgoJCQljYXNlICdjcDg2NCc6CgkJCWNhc2UgJ2NzaWJtODY0JzoKCQkJY2FzZSAnaWJtODY0JzoKCQkJCXJldHVybiAnSUJNODY0JzsKCgkJCWNhc2UgJzg2NSc6CgkJCWNhc2UgJ2NwODY1JzoKCQkJY2FzZSAnY3NpYm04NjUnOgoJCQljYXNlICdpYm04NjUnOgoJCQkJcmV0dXJuICdJQk04NjUnOwoKCQkJY2FzZSAnODY2JzoKCQkJY2FzZSAnY3A4NjYnOgoJCQljYXNlICdjc2libTg2Nic6CgkJCWNhc2UgJ2libTg2Nic6CgkJCQlyZXR1cm4gJ0lCTTg2Nic7CgoJCQljYXNlICdjcGFyJzoKCQkJY2FzZSAnY3A4NjgnOgoJCQljYXNlICdjc2libTg2OCc6CgkJCWNhc2UgJ2libTg2OCc6CgkJCQlyZXR1cm4gJ0lCTTg2OCc7CgoJCQljYXNlICc4NjknOgoJCQljYXNlICdjcGdyJzoKCQkJY2FzZSAnY3A4NjknOgoJCQljYXNlICdjc2libTg2OSc6CgkJCWNhc2UgJ2libTg2OSc6CgkJCQlyZXR1cm4gJ0lCTTg2OSc7CgoJCQljYXNlICdjcDg3MCc6CgkJCWNhc2UgJ2NzaWJtODcwJzoKCQkJY2FzZSAnZWJjZGljY3Byb2VjZSc6CgkJCWNhc2UgJ2ViY2RpY2NweXUnOgoJCQljYXNlICdpYm04NzAnOgoJCQkJcmV0dXJuICdJQk04NzAnOwoKCQkJY2FzZSAnY3A4NzEnOgoJCQljYXNlICdjc2libTg3MSc6CgkJCWNhc2UgJ2ViY2RpY2NwaXMnOgoJCQljYXNlICdpYm04NzEnOgoJCQkJcmV0dXJuICdJQk04NzEnOwoKCQkJY2FzZSAnY3A4ODAnOgoJCQljYXNlICdjc2libTg4MCc6CgkJCWNhc2UgJ2ViY2RpY2N5cmlsbGljJzoKCQkJY2FzZSAnaWJtODgwJzoKCQkJCXJldHVybiAnSUJNODgwJzsKCgkJCWNhc2UgJ2NwODkxJzoKCQkJY2FzZSAnY3NpYm04OTEnOgoJCQljYXNlICdpYm04OTEnOgoJCQkJcmV0dXJuICdJQk04OTEnOwoKCQkJY2FzZSAnY3A5MDMnOgoJCQljYXNlICdjc2libTkwMyc6CgkJCWNhc2UgJ2libTkwMyc6CgkJCQlyZXR1cm4gJ0lCTTkwMyc7CgoJCQljYXNlICc5MDQnOgoJCQljYXNlICdjcDkwNCc6CgkJCWNhc2UgJ2NzaWJibTkwNCc6CgkJCWNhc2UgJ2libTkwNCc6CgkJCQlyZXR1cm4gJ0lCTTkwNCc7CgoJCQljYXNlICdjcDkwNSc6CgkJCWNhc2UgJ2NzaWJtOTA1JzoKCQkJY2FzZSAnZWJjZGljY3B0cic6CgkJCWNhc2UgJ2libTkwNSc6CgkJCQlyZXR1cm4gJ0lCTTkwNSc7CgoJCQljYXNlICdjcDkxOCc6CgkJCWNhc2UgJ2NzaWJtOTE4JzoKCQkJY2FzZSAnZWJjZGljY3BhcjInOgoJCQljYXNlICdpYm05MTgnOgoJCQkJcmV0dXJuICdJQk05MTgnOwoKCQkJY2FzZSAnY3AxMDI2JzoKCQkJY2FzZSAnY3NpYm0xMDI2JzoKCQkJY2FzZSAnaWJtMTAyNic6CgkJCQlyZXR1cm4gJ0lCTTEwMjYnOwoKCQkJY2FzZSAnaWJtMTA0Nyc6CgkJCWNhc2UgJ2libTEwNDcnOgoJCQkJcmV0dXJuICdJQk0xMDQ3JzsKCgkJCWNhc2UgJ2NzaXNvMTQzaWVjcDI3MSc6CgkJCWNhc2UgJ2llY3AyNzEnOgoJCQljYXNlICdpc29pcjE0Myc6CgkJCQlyZXR1cm4gJ0lFQ19QMjctMSc7CgoJCQljYXNlICdjc2lzbzQ5aW5pcyc6CgkJCWNhc2UgJ2luaXMnOgoJCQljYXNlICdpc29pcjQ5JzoKCQkJCXJldHVybiAnSU5JUyc7CgoJCQljYXNlICdjc2lzbzUwaW5pczgnOgoJCQljYXNlICdpbmlzOCc6CgkJCWNhc2UgJ2lzb2lyNTAnOgoJCQkJcmV0dXJuICdJTklTLTgnOwoKCQkJY2FzZSAnY3Npc281MWluaXNjeXJpbGxpYyc6CgkJCWNhc2UgJ2luaXNjeXJpbGxpYyc6CgkJCWNhc2UgJ2lzb2lyNTEnOgoJCQkJcmV0dXJuICdJTklTLWN5cmlsbGljJzsKCgkJCWNhc2UgJ2NzaW52YXJpYW50JzoKCQkJY2FzZSAnaW52YXJpYW50JzoKCQkJCXJldHVybiAnSU5WQVJJQU5UJzsKCgkJCWNhc2UgJ2lzbzIwMjJjbic6CgkJCQlyZXR1cm4gJ0lTTy0yMDIyLUNOJzsKCgkJCWNhc2UgJ2lzbzIwMjJjbmV4dCc6CgkJCQlyZXR1cm4gJ0lTTy0yMDIyLUNOLUVYVCc7CgoJCQljYXNlICdjc2lzbzIwMjJqcCc6CgkJCWNhc2UgJ2lzbzIwMjJqcCc6CgkJCQlyZXR1cm4gJ0lTTy0yMDIyLUpQJzsKCgkJCWNhc2UgJ2NzaXNvMjAyMmpwMic6CgkJCWNhc2UgJ2lzbzIwMjJqcDInOgoJCQkJcmV0dXJuICdJU08tMjAyMi1KUC0yJzsKCgkJCWNhc2UgJ2NzaXNvMjAyMmtyJzoKCQkJY2FzZSAnaXNvMjAyMmtyJzoKCQkJCXJldHVybiAnSVNPLTIwMjItS1InOwoKCQkJY2FzZSAnY3N3aW5kb3dzMzBsYXRpbjEnOgoJCQljYXNlICdpc284ODU5MXdpbmRvd3MzMGxhdGluMSc6CgkJCQlyZXR1cm4gJ0lTTy04ODU5LTEtV2luZG93cy0zLjAtTGF0aW4tMSc7CgoJCQljYXNlICdjc3dpbmRvd3MzMWxhdGluMSc6CgkJCWNhc2UgJ2lzbzg4NTkxd2luZG93czMxbGF0aW4xJzoKCQkJCXJldHVybiAnSVNPLTg4NTktMS1XaW5kb3dzLTMuMS1MYXRpbi0xJzsKCgkJCWNhc2UgJ2NzaXNvbGF0aW4yJzoKCQkJY2FzZSAnaXNvODg1OTInOgoJCQljYXNlICdpc29pcjEwMSc6CgkJCWNhc2UgJ2lzbzg4NTkyJzoKCQkJY2FzZSAnaXNvODg1OTIxOTg3JzoKCQkJY2FzZSAnbDInOgoJCQljYXNlICdsYXRpbjInOgoJCQkJcmV0dXJuICdJU08tODg1OS0yJzsKCgkJCWNhc2UgJ2Nzd2luZG93czMxbGF0aW4yJzoKCQkJY2FzZSAnaXNvODg1OTJ3aW5kb3dzbGF0aW4yJzoKCQkJCXJldHVybiAnSVNPLTg4NTktMi1XaW5kb3dzLUxhdGluLTInOwoKCQkJY2FzZSAnY3Npc29sYXRpbjMnOgoJCQljYXNlICdpc284ODU5Myc6CgkJCWNhc2UgJ2lzb2lyMTA5JzoKCQkJY2FzZSAnaXNvODg1OTMnOgoJCQljYXNlICdpc284ODU5MzE5ODgnOgoJCQljYXNlICdsMyc6CgkJCWNhc2UgJ2xhdGluMyc6CgkJCQlyZXR1cm4gJ0lTTy04ODU5LTMnOwoKCQkJY2FzZSAnY3Npc29sYXRpbjQnOgoJCQljYXNlICdpc284ODU5NCc6CgkJCWNhc2UgJ2lzb2lyMTEwJzoKCQkJY2FzZSAnaXNvODg1OTQnOgoJCQljYXNlICdpc284ODU5NDE5ODgnOgoJCQljYXNlICdsNCc6CgkJCWNhc2UgJ2xhdGluNCc6CgkJCQlyZXR1cm4gJ0lTTy04ODU5LTQnOwoKCQkJY2FzZSAnY3Npc29sYXRpbmN5cmlsbGljJzoKCQkJY2FzZSAnY3lyaWxsaWMnOgoJCQljYXNlICdpc284ODU5NSc6CgkJCWNhc2UgJ2lzb2lyMTQ0JzoKCQkJY2FzZSAnaXNvODg1OTUnOgoJCQljYXNlICdpc284ODU5NTE5ODgnOgoJCQkJcmV0dXJuICdJU08tODg1OS01JzsKCgkJCWNhc2UgJ2FyYWJpYyc6CgkJCWNhc2UgJ2FzbW83MDgnOgoJCQljYXNlICdjc2lzb2xhdGluYXJhYmljJzoKCQkJY2FzZSAnZWNtYTExNCc6CgkJCWNhc2UgJ2lzbzg4NTk2JzoKCQkJY2FzZSAnaXNvaXIxMjcnOgoJCQljYXNlICdpc284ODU5Nic6CgkJCWNhc2UgJ2lzbzg4NTk2MTk4Nyc6CgkJCQlyZXR1cm4gJ0lTTy04ODU5LTYnOwoKCQkJY2FzZSAnY3Npc284ODU5NmUnOgoJCQljYXNlICdpc284ODU5NmUnOgoJCQljYXNlICdpc284ODU5NmUnOgoJCQkJcmV0dXJuICdJU08tODg1OS02LUUnOwoKCQkJY2FzZSAnY3Npc284ODU5NmknOgoJCQljYXNlICdpc284ODU5NmknOgoJCQljYXNlICdpc284ODU5NmknOgoJCQkJcmV0dXJuICdJU08tODg1OS02LUknOwoKCQkJY2FzZSAnY3Npc29sYXRpbmdyZWVrJzoKCQkJY2FzZSAnZWNtYTExOCc6CgkJCWNhc2UgJ2Vsb3Q5MjgnOgoJCQljYXNlICdncmVlayc6CgkJCWNhc2UgJ2dyZWVrOCc6CgkJCWNhc2UgJ2lzbzg4NTk3JzoKCQkJY2FzZSAnaXNvaXIxMjYnOgoJCQljYXNlICdpc284ODU5Nyc6CgkJCWNhc2UgJ2lzbzg4NTk3MTk4Nyc6CgkJCQlyZXR1cm4gJ0lTTy04ODU5LTcnOwoKCQkJY2FzZSAnY3Npc29sYXRpbmhlYnJldyc6CgkJCWNhc2UgJ2hlYnJldyc6CgkJCWNhc2UgJ2lzbzg4NTk4JzoKCQkJY2FzZSAnaXNvaXIxMzgnOgoJCQljYXNlICdpc284ODU5OCc6CgkJCWNhc2UgJ2lzbzg4NTk4MTk4OCc6CgkJCQlyZXR1cm4gJ0lTTy04ODU5LTgnOwoKCQkJY2FzZSAnY3Npc284ODU5OGUnOgoJCQljYXNlICdpc284ODU5OGUnOgoJCQljYXNlICdpc284ODU5OGUnOgoJCQkJcmV0dXJuICdJU08tODg1OS04LUUnOwoKCQkJY2FzZSAnY3Npc284ODU5OGknOgoJCQljYXNlICdpc284ODU5OGknOgoJCQljYXNlICdpc284ODU5OGknOgoJCQkJcmV0dXJuICdJU08tODg1OS04LUknOwoKCQkJY2FzZSAnY3N3aW5kb3dzMzFsYXRpbjUnOgoJCQljYXNlICdpc284ODU5OXdpbmRvd3NsYXRpbjUnOgoJCQkJcmV0dXJuICdJU08tODg1OS05LVdpbmRvd3MtTGF0aW4tNSc7CgoJCQljYXNlICdjc2lzb2xhdGluNic6CgkJCWNhc2UgJ2lzbzg4NTkxMCc6CgkJCWNhc2UgJ2lzb2lyMTU3JzoKCQkJY2FzZSAnaXNvODg1OTEwMTk5Mic6CgkJCWNhc2UgJ2w2JzoKCQkJY2FzZSAnbGF0aW42JzoKCQkJCXJldHVybiAnSVNPLTg4NTktMTAnOwoKCQkJY2FzZSAnaXNvODg1OTEzJzoKCQkJCXJldHVybiAnSVNPLTg4NTktMTMnOwoKCQkJY2FzZSAnaXNvODg1OTE0JzoKCQkJY2FzZSAnaXNvY2VsdGljJzoKCQkJY2FzZSAnaXNvaXIxOTknOgoJCQljYXNlICdpc284ODU5MTQnOgoJCQljYXNlICdpc284ODU5MTQxOTk4JzoKCQkJY2FzZSAnbDgnOgoJCQljYXNlICdsYXRpbjgnOgoJCQkJcmV0dXJuICdJU08tODg1OS0xNCc7CgoJCQljYXNlICdpc284ODU5MTUnOgoJCQljYXNlICdpc284ODU5MTUnOgoJCQljYXNlICdsYXRpbjknOgoJCQkJcmV0dXJuICdJU08tODg1OS0xNSc7CgoJCQljYXNlICdpc284ODU5MTYnOgoJCQljYXNlICdpc29pcjIyNic6CgkJCWNhc2UgJ2lzbzg4NTkxNic6CgkJCWNhc2UgJ2lzbzg4NTkxNjIwMDEnOgoJCQljYXNlICdsMTAnOgoJCQljYXNlICdsYXRpbjEwJzoKCQkJCXJldHVybiAnSVNPLTg4NTktMTYnOwoKCQkJY2FzZSAnaXNvMTA2NDZqMSc6CgkJCQlyZXR1cm4gJ0lTTy0xMDY0Ni1KLTEnOwoKCQkJY2FzZSAnY3N1bmljb2RlJzoKCQkJY2FzZSAnaXNvMTA2NDZ1Y3MyJzoKCQkJCXJldHVybiAnSVNPLTEwNjQ2LVVDUy0yJzsKCgkJCWNhc2UgJ2NzdWNzNCc6CgkJCWNhc2UgJ2lzbzEwNjQ2dWNzNCc6CgkJCQlyZXR1cm4gJ0lTTy0xMDY0Ni1VQ1MtNCc7CgoJCQljYXNlICdjc3VuaWNvZGVhc2NpaSc6CgkJCWNhc2UgJ2lzbzEwNjQ2dWNzYmFzaWMnOgoJCQkJcmV0dXJuICdJU08tMTA2NDYtVUNTLUJhc2ljJzsKCgkJCWNhc2UgJ2NzdW5pY29kZWxhdGluMSc6CgkJCWNhc2UgJ2lzbzEwNjQ2JzoKCQkJY2FzZSAnaXNvMTA2NDZ1bmljb2RlbGF0aW4xJzoKCQkJCXJldHVybiAnSVNPLTEwNjQ2LVVuaWNvZGUtTGF0aW4xJzsKCgkJCWNhc2UgJ2NzaXNvMTA2NDZ1dGYxJzoKCQkJY2FzZSAnaXNvMTA2NDZ1dGYxJzoKCQkJCXJldHVybiAnSVNPLTEwNjQ2LVVURi0xJzsKCgkJCWNhc2UgJ2NzaXNvMTE1NDgxJzoKCQkJY2FzZSAnaXNvMTE1NDgxJzoKCQkJY2FzZSAnaXNvMTE1NDgxJzoKCQkJY2FzZSAnaXNvdHIxMTU0ODEnOgoJCQkJcmV0dXJuICdJU08tMTE1NDgtMSc7CgoJCQljYXNlICdjc2lzbzkwJzoKCQkJY2FzZSAnaXNvaXI5MCc6CgkJCQlyZXR1cm4gJ2lzby1pci05MCc7CgoJCQljYXNlICdjc3VuaWNvZGVpYm0xMjYxJzoKCQkJY2FzZSAnaXNvdW5pY29kZWlibTEyNjEnOgoJCQkJcmV0dXJuICdJU08tVW5pY29kZS1JQk0tMTI2MSc7CgoJCQljYXNlICdjc3VuaWNvZGVpYm0xMjY0JzoKCQkJY2FzZSAnaXNvdW5pY29kZWlibTEyNjQnOgoJCQkJcmV0dXJuICdJU08tVW5pY29kZS1JQk0tMTI2NCc7CgoJCQljYXNlICdjc3VuaWNvZGVpYm0xMjY1JzoKCQkJY2FzZSAnaXNvdW5pY29kZWlibTEyNjUnOgoJCQkJcmV0dXJuICdJU08tVW5pY29kZS1JQk0tMTI2NSc7CgoJCQljYXNlICdjc3VuaWNvZGVpYm0xMjY4JzoKCQkJY2FzZSAnaXNvdW5pY29kZWlibTEyNjgnOgoJCQkJcmV0dXJuICdJU08tVW5pY29kZS1JQk0tMTI2OCc7CgoJCQljYXNlICdjc3VuaWNvZGVpYm0xMjc2JzoKCQkJY2FzZSAnaXNvdW5pY29kZWlibTEyNzYnOgoJCQkJcmV0dXJuICdJU08tVW5pY29kZS1JQk0tMTI3Nic7CgoJCQljYXNlICdjc2lzbzY0NmJhc2ljMTk4Myc6CgkJCWNhc2UgJ2lzbzY0NmJhc2ljMTk4Myc6CgkJCWNhc2UgJ3JlZic6CgkJCQlyZXR1cm4gJ0lTT182NDYuYmFzaWM6MTk4Myc7CgoJCQljYXNlICdjc2lzbzJpbnRscmVmdmVyc2lvbic6CgkJCWNhc2UgJ2lydic6CgkJCWNhc2UgJ2lzb2lyMic6CgkJCWNhc2UgJ2lzbzY0NmlydjE5ODMnOgoJCQkJcmV0dXJuICdJU09fNjQ2LmlydjoxOTgzJzsKCgkJCWNhc2UgJ2NzaXNvMjAzMyc6CgkJCWNhc2UgJ2UxM2InOgoJCQljYXNlICdpc29pcjk4JzoKCQkJY2FzZSAnaXNvMjAzMzE5ODMnOgoJCQkJcmV0dXJuICdJU09fMjAzMy0xOTgzJzsKCgkJCWNhc2UgJ2NzaXNvNTQyN2N5cmlsbGljJzoKCQkJY2FzZSAnaXNvaXIzNyc6CgkJCWNhc2UgJ2lzbzU0MjcnOgoJCQkJcmV0dXJuICdJU09fNTQyNyc7CgoJCQljYXNlICdpc29pcjU0JzoKCQkJY2FzZSAnaXNvNTQyN2N5cmlsbGljMTk4MSc6CgkJCWNhc2UgJ2lzbzU0MjcxOTgxJzoKCQkJCXJldHVybiAnSVNPXzU0Mjc6MTk4MSc7CgoJCQljYXNlICdjc2lzbzU0MjhncmVlayc6CgkJCWNhc2UgJ2lzb2lyNTUnOgoJCQljYXNlICdpc281NDI4MTk4MCc6CgkJCQlyZXR1cm4gJ0lTT181NDI4OjE5ODAnOwoKCQkJY2FzZSAnY3Npc282OTM3YWRkJzoKCQkJY2FzZSAnaXNvaXIxNTInOgoJCQljYXNlICdpc282OTM3MjI1JzoKCQkJCXJldHVybiAnSVNPXzY5MzctMi0yNSc7CgoJCQljYXNlICdjc2lzb3RleHRjb21tJzoKCQkJY2FzZSAnaXNvaXIxNDInOgoJCQljYXNlICdpc282OTM3MmFkZCc6CgkJCQlyZXR1cm4gJ0lTT182OTM3LTItYWRkJzsKCgkJCWNhc2UgJ2NzaXNvODg1OXN1cHAnOgoJCQljYXNlICdpc29pcjE1NCc6CgkJCWNhc2UgJ2lzbzg4NTlzdXBwJzoKCQkJY2FzZSAnbGF0aW4xMjUnOgoJCQkJcmV0dXJuICdJU09fODg1OS1zdXBwJzsKCgkJCWNhc2UgJ2NzaXNvMTAzNjdib3gnOgoJCQljYXNlICdpc29pcjE1NSc6CgkJCWNhc2UgJ2lzbzEwMzY3Ym94JzoKCQkJCXJldHVybiAnSVNPXzEwMzY3LWJveCc7CgoJCQljYXNlICdjc2lzbzE1aXRhbGlhbic6CgkJCWNhc2UgJ2lzb2lyMTUnOgoJCQljYXNlICdpc282NDZpdCc6CgkJCWNhc2UgJ2l0JzoKCQkJCXJldHVybiAnSVQnOwoKCQkJY2FzZSAnY3Npc28xM2ppc2M2MjIwanAnOgoJCQljYXNlICdpc29pcjEzJzoKCQkJY2FzZSAnamlzYzYyMjAxOTY5JzoKCQkJY2FzZSAnamlzYzYyMjAxOTY5anAnOgoJCQljYXNlICdrYXRha2FuYSc6CgkJCWNhc2UgJ3gwMjAxNyc6CgkJCQlyZXR1cm4gJ0pJU19DNjIyMC0xOTY5LWpwJzsKCgkJCWNhc2UgJ2NzaXNvMTRqaXNjNjIyMHJvJzoKCQkJY2FzZSAnaXNvaXIxNCc6CgkJCWNhc2UgJ2lzbzY0NmpwJzoKCQkJY2FzZSAnamlzYzYyMjAxOTY5cm8nOgoJCQljYXNlICdqcCc6CgkJCQlyZXR1cm4gJ0pJU19DNjIyMC0xOTY5LXJvJzsKCgkJCWNhc2UgJ2NzaXNvNDJqaXNjNjIyNjE5NzgnOgoJCQljYXNlICdpc29pcjQyJzoKCQkJY2FzZSAnamlzYzYyMjYxOTc4JzoKCQkJCXJldHVybiAnSklTX0M2MjI2LTE5NzgnOwoKCQkJY2FzZSAnY3Npc284N2ppc3gwMjA4JzoKCQkJY2FzZSAnaXNvaXI4Nyc6CgkJCWNhc2UgJ2ppc2M2MjI2MTk4Myc6CgkJCWNhc2UgJ2ppc3gwMjA4MTk4Myc6CgkJCWNhc2UgJ3gwMjA4JzoKCQkJCXJldHVybiAnSklTX0M2MjI2LTE5ODMnOwoKCQkJY2FzZSAnY3Npc285MWppc2M2MjI5MTk4NGEnOgoJCQljYXNlICdpc29pcjkxJzoKCQkJY2FzZSAnamlzYzYyMjkxOTg0YSc6CgkJCWNhc2UgJ2pwb2NyYSc6CgkJCQlyZXR1cm4gJ0pJU19DNjIyOS0xOTg0LWEnOwoKCQkJY2FzZSAnY3Npc285Mmppc2M2Mjk5MTk4NGInOgoJCQljYXNlICdpc29pcjkyJzoKCQkJY2FzZSAnaXNvNjQ2anBvY3JiJzoKCQkJY2FzZSAnamlzYzYyMjkxOTg0Yic6CgkJCWNhc2UgJ2pwb2NyYic6CgkJCQlyZXR1cm4gJ0pJU19DNjIyOS0xOTg0LWInOwoKCQkJY2FzZSAnY3Npc285M2ppczYyMjkxOTg0YmFkZCc6CgkJCWNhc2UgJ2lzb2lyOTMnOgoJCQljYXNlICdqaXNjNjIyOTE5ODRiYWRkJzoKCQkJY2FzZSAnanBvY3JiYWRkJzoKCQkJCXJldHVybiAnSklTX0M2MjI5LTE5ODQtYi1hZGQnOwoKCQkJY2FzZSAnY3Npc285NGppczYyMjkxOTg0aGFuZCc6CgkJCWNhc2UgJ2lzb2lyOTQnOgoJCQljYXNlICdqaXNjNjIyOTE5ODRoYW5kJzoKCQkJY2FzZSAnanBvY3JoYW5kJzoKCQkJCXJldHVybiAnSklTX0M2MjI5LTE5ODQtaGFuZCc7CgoJCQljYXNlICdjc2lzbzk1amlzNjIyOTE5ODRoYW5kYWRkJzoKCQkJY2FzZSAnaXNvaXI5NSc6CgkJCWNhc2UgJ2ppc2M2MjI5MTk4NGhhbmRhZGQnOgoJCQljYXNlICdqcG9jcmhhbmRhZGQnOgoJCQkJcmV0dXJuICdKSVNfQzYyMjktMTk4NC1oYW5kLWFkZCc7CgoJCQljYXNlICdjc2lzbzk2amlzYzYyMjkxOTg0a2FuYSc6CgkJCWNhc2UgJ2lzb2lyOTYnOgoJCQljYXNlICdqaXNjNjIyOTE5ODRrYW5hJzoKCQkJCXJldHVybiAnSklTX0M2MjI5LTE5ODQta2FuYSc7CgoJCQljYXNlICdjc2ppc2VuY29kaW5nJzoKCQkJY2FzZSAnamlzZW5jb2RpbmcnOgoJCQkJcmV0dXJuICdKSVNfRW5jb2RpbmcnOwoKCQkJY2FzZSAnY3NoYWxmd2lkdGhrYXRha2FuYSc6CgkJCWNhc2UgJ2ppc3gwMjAxJzoKCQkJY2FzZSAneDAyMDEnOgoJCQkJcmV0dXJuICdKSVNfWDAyMDEnOwoKCQkJY2FzZSAnY3Npc28xNTlqaXN4MDIxMjE5OTAnOgoJCQljYXNlICdpc29pcjE1OSc6CgkJCWNhc2UgJ2ppc3gwMjEyMTk5MCc6CgkJCWNhc2UgJ3gwMjEyJzoKCQkJCXJldHVybiAnSklTX1gwMjEyLTE5OTAnOwoKCQkJY2FzZSAnY3Npc28xNDFqdXNpYjEwMDInOgoJCQljYXNlICdpc29pcjE0MSc6CgkJCWNhc2UgJ2lzbzY0Nnl1JzoKCQkJY2FzZSAnanMnOgoJCQljYXNlICdqdXNpYjEwMDInOgoJCQljYXNlICd5dSc6CgkJCQlyZXR1cm4gJ0pVU19JLkIxLjAwMic7CgoJCQljYXNlICdjc2lzbzE0N21hY2Vkb25pYW4nOgoJCQljYXNlICdpc29pcjE0Nyc6CgkJCWNhc2UgJ2p1c2liMTAwM21hYyc6CgkJCWNhc2UgJ21hY2Vkb25pYW4nOgoJCQkJcmV0dXJuICdKVVNfSS5CMS4wMDMtbWFjJzsKCgkJCWNhc2UgJ2NzaXNvMTQ2c2VyYmlhbic6CgkJCWNhc2UgJ2lzb2lyMTQ2JzoKCQkJY2FzZSAnanVzaWIxMDAzc2VyYic6CgkJCWNhc2UgJ3NlcmJpYW4nOgoJCQkJcmV0dXJuICdKVVNfSS5CMS4wMDMtc2VyYic7CgoJCQljYXNlICdrb2k3c3dpdGNoZWQnOgoJCQkJcmV0dXJuICdLT0k3LXN3aXRjaGVkJzsKCgkJCWNhc2UgJ2Nza29pOHInOgoJCQljYXNlICdrb2k4cic6CgkJCQlyZXR1cm4gJ0tPSTgtUic7CgoJCQljYXNlICdrb2k4dSc6CgkJCQlyZXR1cm4gJ0tPSTgtVSc7CgoJCQljYXNlICdjc2tzYzU2MzYnOgoJCQljYXNlICdpc282NDZrcic6CgkJCWNhc2UgJ2tzYzU2MzYnOgoJCQkJcmV0dXJuICdLU0M1NjM2JzsKCgkJCWNhc2UgJ2Nza3oxMDQ4JzoKCQkJY2FzZSAna3oxMDQ4JzoKCQkJY2FzZSAncmsxMDQ4JzoKCQkJY2FzZSAnc3RyazEwNDgyMDAyJzoKCQkJCXJldHVybiAnS1otMTA0OCc7CgoJCQljYXNlICdjc2lzbzE5bGF0aW5ncmVlayc6CgkJCWNhc2UgJ2lzb2lyMTknOgoJCQljYXNlICdsYXRpbmdyZWVrJzoKCQkJCXJldHVybiAnbGF0aW4tZ3JlZWsnOwoKCQkJY2FzZSAnY3Npc28yN2xhdGluZ3JlZWsxJzoKCQkJY2FzZSAnaXNvaXIyNyc6CgkJCWNhc2UgJ2xhdGluZ3JlZWsxJzoKCQkJCXJldHVybiAnTGF0aW4tZ3JlZWstMSc7CgoJCQljYXNlICdjc2lzbzE1OGxhcCc6CgkJCWNhc2UgJ2lzb2lyMTU4JzoKCQkJY2FzZSAnbGFwJzoKCQkJY2FzZSAnbGF0aW5sYXAnOgoJCQkJcmV0dXJuICdsYXRpbi1sYXAnOwoKCQkJY2FzZSAnY3NtYWNpbnRvc2gnOgoJCQljYXNlICdtYWMnOgoJCQljYXNlICdtYWNpbnRvc2gnOgoJCQkJcmV0dXJuICdtYWNpbnRvc2gnOwoKCQkJY2FzZSAnY3NtaWNyb3NvZnRwdWJsaXNoaW5nJzoKCQkJY2FzZSAnbWljcm9zb2Z0cHVibGlzaGluZyc6CgkJCQlyZXR1cm4gJ01pY3Jvc29mdC1QdWJsaXNoaW5nJzsKCgkJCWNhc2UgJ2NzbW5lbSc6CgkJCWNhc2UgJ21uZW0nOgoJCQkJcmV0dXJuICdNTkVNJzsKCgkJCWNhc2UgJ2NzbW5lbW9uaWMnOgoJCQljYXNlICdtbmVtb25pYyc6CgkJCQlyZXR1cm4gJ01ORU1PTklDJzsKCgkJCWNhc2UgJ2NzaXNvODZodW5nYXJpYW4nOgoJCQljYXNlICdodSc6CgkJCWNhc2UgJ2lzb2lyODYnOgoJCQljYXNlICdpc282NDZodSc6CgkJCWNhc2UgJ21zejc3OTUzJzoKCQkJCXJldHVybiAnTVNaXzc3OTUuMyc7CgoJCQljYXNlICdjc25hdHNkYW5vJzoKCQkJY2FzZSAnaXNvaXI5MSc6CgkJCWNhc2UgJ25hdHNkYW5vJzoKCQkJCXJldHVybiAnTkFUUy1EQU5PJzsKCgkJCWNhc2UgJ2NzbmF0c2Rhbm9hZGQnOgoJCQljYXNlICdpc29pcjkyJzoKCQkJY2FzZSAnbmF0c2Rhbm9hZGQnOgoJCQkJcmV0dXJuICdOQVRTLURBTk8tQUREJzsKCgkJCWNhc2UgJ2NzbmF0c3NlZmknOgoJCQljYXNlICdpc29pcjgxJzoKCQkJY2FzZSAnbmF0c3NlZmknOgoJCQkJcmV0dXJuICdOQVRTLVNFRkknOwoKCQkJY2FzZSAnY3NuYXRzc2VmaWFkZCc6CgkJCWNhc2UgJ2lzb2lyODInOgoJCQljYXNlICduYXRzc2VmaWFkZCc6CgkJCQlyZXR1cm4gJ05BVFMtU0VGSS1BREQnOwoKCQkJY2FzZSAnY3Npc28xNTFjdWJhJzoKCQkJY2FzZSAnY3ViYSc6CgkJCWNhc2UgJ2lzb2lyMTUxJzoKCQkJY2FzZSAnaXNvNjQ2Y3UnOgoJCQljYXNlICduY25jMDAxMDgxJzoKCQkJCXJldHVybiAnTkNfTkMwMC0xMDo4MSc7CgoJCQljYXNlICdjc2lzbzY5ZnJlbmNoJzoKCQkJY2FzZSAnZnInOgoJCQljYXNlICdpc29pcjY5JzoKCQkJY2FzZSAnaXNvNjQ2ZnInOgoJCQljYXNlICduZno2MjAxMCc6CgkJCQlyZXR1cm4gJ05GX1pfNjItMDEwJzsKCgkJCWNhc2UgJ2NzaXNvMjVmcmVuY2gnOgoJCQljYXNlICdpc29pcjI1JzoKCQkJY2FzZSAnaXNvNjQ2ZnIxJzoKCQkJY2FzZSAnbmZ6NjIwMTAxOTczJzoKCQkJCXJldHVybiAnTkZfWl82Mi0wMTBfKDE5NzMpJzsKCgkJCWNhc2UgJ2NzaXNvNjBkYW5pc2hub3J3ZWdpYW4nOgoJCQljYXNlICdjc2lzbzYwbm9yd2VnaWFuMSc6CgkJCWNhc2UgJ2lzb2lyNjAnOgoJCQljYXNlICdpc282NDZubyc6CgkJCWNhc2UgJ25vJzoKCQkJY2FzZSAnbnM0NTUxMSc6CgkJCQlyZXR1cm4gJ05TXzQ1NTEtMSc7CgoJCQljYXNlICdjc2lzbzYxbm9yd2VnaWFuMic6CgkJCWNhc2UgJ2lzb2lyNjEnOgoJCQljYXNlICdpc282NDZubzInOgoJCQljYXNlICdubzInOgoJCQljYXNlICduczQ1NTEyJzoKCQkJCXJldHVybiAnTlNfNDU1MS0yJzsKCgkJCWNhc2UgJ29zZGViY2RpY2RmMDNpcnYnOgoJCQkJcmV0dXJuICdPU0RfRUJDRElDX0RGMDNfSVJWJzsKCgkJCWNhc2UgJ29zZGViY2RpY2RmMDQxJzoKCQkJCXJldHVybiAnT1NEX0VCQ0RJQ19ERjA0XzEnOwoKCQkJY2FzZSAnb3NkZWJjZGljZGYwNDE1JzoKCQkJCXJldHVybiAnT1NEX0VCQ0RJQ19ERjA0XzE1JzsKCgkJCWNhc2UgJ2NzcGM4ZGFuaXNobm9yd2VnaWFuJzoKCQkJY2FzZSAncGM4ZGFuaXNobm9yd2VnaWFuJzoKCQkJCXJldHVybiAnUEM4LURhbmlzaC1Ob3J3ZWdpYW4nOwoKCQkJY2FzZSAnY3NwYzh0dXJraXNoJzoKCQkJY2FzZSAncGM4dHVya2lzaCc6CgkJCQlyZXR1cm4gJ1BDOC1UdXJraXNoJzsKCgkJCWNhc2UgJ2NzaXNvMTZwb3J0dWd1ZXNlJzoKCQkJY2FzZSAnaXNvaXIxNic6CgkJCWNhc2UgJ2lzbzY0NnB0JzoKCQkJY2FzZSAncHQnOgoJCQkJcmV0dXJuICdQVCc7CgoJCQljYXNlICdjc2lzbzg0cG9ydHVndWVzZTInOgoJCQljYXNlICdpc29pcjg0JzoKCQkJY2FzZSAnaXNvNjQ2cHQyJzoKCQkJY2FzZSAncHQyJzoKCQkJCXJldHVybiAnUFQyJzsKCgkJCWNhc2UgJ2NwMTU0JzoKCQkJY2FzZSAnY3NwdGNwMTU0JzoKCQkJY2FzZSAnY3lyaWxsaWNhc2lhbic6CgkJCWNhc2UgJ3B0MTU0JzoKCQkJY2FzZSAncHRjcDE1NCc6CgkJCQlyZXR1cm4gJ1BUQ1AxNTQnOwoKCQkJY2FzZSAnc2NzdSc6CgkJCQlyZXR1cm4gJ1NDU1UnOwoKCQkJY2FzZSAnY3Npc28xMHN3ZWRpc2gnOgoJCQljYXNlICdmaSc6CgkJCWNhc2UgJ2lzb2lyMTAnOgoJCQljYXNlICdpc282NDZmaSc6CgkJCWNhc2UgJ2lzbzY0NnNlJzoKCQkJY2FzZSAnc2UnOgoJCQljYXNlICdzZW44NTAyMDBiJzoKCQkJCXJldHVybiAnU0VOXzg1MDIwMF9CJzsKCgkJCWNhc2UgJ2NzaXNvMTFzd2VkaXNoZm9ybmFtZXMnOgoJCQljYXNlICdpc29pcjExJzoKCQkJY2FzZSAnaXNvNjQ2c2UyJzoKCQkJY2FzZSAnc2UyJzoKCQkJY2FzZSAnc2VuODUwMjAwYyc6CgkJCQlyZXR1cm4gJ1NFTl84NTAyMDBfQyc7CgoJCQljYXNlICdjc3NoaWZ0amlzJzoKCQkJY2FzZSAnbXNrYW5qaSc6CgkJCWNhc2UgJ3NoaWZ0amlzJzoKCQkJCXJldHVybiAnU2hpZnRfSklTJzsKCgkJCWNhc2UgJ2NzaXNvMTAydDYxN2JpdCc6CgkJCWNhc2UgJ2lzb2lyMTAyJzoKCQkJY2FzZSAndDYxN2JpdCc6CgkJCQlyZXR1cm4gJ1QuNjEtN2JpdCc7CgoJCQljYXNlICdjc2lzbzEwM3Q2MThiaXQnOgoJCQljYXNlICdpc29pcjEwMyc6CgkJCWNhc2UgJ3Q2MSc6CgkJCWNhc2UgJ3Q2MThiaXQnOgoJCQkJcmV0dXJuICdULjYxLThiaXQnOwoKCQkJY2FzZSAnY3Npc28xMjh0MTAxZzInOgoJCQljYXNlICdpc29pcjEyOCc6CgkJCWNhc2UgJ3QxMDFnMic6CgkJCQlyZXR1cm4gJ1QuMTAxLUcyJzsKCgkJCWNhc2UgJ2NzdHNjaWknOgoJCQljYXNlICd0c2NpaSc6CgkJCQlyZXR1cm4gJ1RTQ0lJJzsKCgkJCWNhc2UgJ2NzdW5pY29kZTExJzoKCQkJY2FzZSAndW5pY29kZTExJzoKCQkJCXJldHVybiAnVU5JQ09ERS0xLTEnOwoKCQkJY2FzZSAnY3N1bmljb2RlMTF1dGY3JzoKCQkJY2FzZSAndW5pY29kZTExdXRmNyc6CgkJCQlyZXR1cm4gJ1VOSUNPREUtMS0xLVVURi03JzsKCgkJCWNhc2UgJ2NzdW5rbm93bjhiaXQnOgoJCQljYXNlICd1bmtub3duOGJpdCc6CgkJCQlyZXR1cm4gJ1VOS05PV04tOEJJVCc7CgoJCQljYXNlICdhbnNpeDM0MTk2OCc6CgkJCWNhc2UgJ2Fuc2l4MzQxOTg2JzoKCQkJY2FzZSAnYXNjaWknOgoJCQljYXNlICdjcDM2Nyc6CgkJCWNhc2UgJ2NzYXNjaWknOgoJCQljYXNlICdpYm0zNjcnOgoJCQljYXNlICdpc29pcjYnOgoJCQljYXNlICdpc282NDZ1cyc6CgkJCWNhc2UgJ2lzbzY0NmlydjE5OTEnOgoJCQljYXNlICd1cyc6CgkJCWNhc2UgJ3VzYXNjaWknOgoJCQkJcmV0dXJuICdVUy1BU0NJSSc7CgoJCQljYXNlICdjc3VzZGsnOgoJCQljYXNlICd1c2RrJzoKCQkJCXJldHVybiAndXMtZGsnOwoKCQkJY2FzZSAndXRmNyc6CgkJCQlyZXR1cm4gJ1VURi03JzsKCgkJCWNhc2UgJ3V0ZjgnOgoJCQkJcmV0dXJuICdVVEYtOCc7CgoJCQljYXNlICd1dGYxNic6CgkJCQlyZXR1cm4gJ1VURi0xNic7CgoJCQljYXNlICd1dGYxNmJlJzoKCQkJCXJldHVybiAnVVRGLTE2QkUnOwoKCQkJY2FzZSAndXRmMTZsZSc6CgkJCQlyZXR1cm4gJ1VURi0xNkxFJzsKCgkJCWNhc2UgJ3V0ZjMyJzoKCQkJCXJldHVybiAnVVRGLTMyJzsKCgkJCWNhc2UgJ3V0ZjMyYmUnOgoJCQkJcmV0dXJuICdVVEYtMzJCRSc7CgoJCQljYXNlICd1dGYzMmxlJzoKCQkJCXJldHVybiAnVVRGLTMyTEUnOwoKCQkJY2FzZSAnY3N2ZW50dXJhaW50ZXJuYXRpb25hbCc6CgkJCWNhc2UgJ3ZlbnR1cmFpbnRlcm5hdGlvbmFsJzoKCQkJCXJldHVybiAnVmVudHVyYS1JbnRlcm5hdGlvbmFsJzsKCgkJCWNhc2UgJ2NzdmVudHVyYW1hdGgnOgoJCQljYXNlICd2ZW50dXJhbWF0aCc6CgkJCQlyZXR1cm4gJ1ZlbnR1cmEtTWF0aCc7CgoJCQljYXNlICdjc3ZlbnR1cmF1cyc6CgkJCWNhc2UgJ3ZlbnR1cmF1cyc6CgkJCQlyZXR1cm4gJ1ZlbnR1cmEtVVMnOwoKCQkJY2FzZSAnY3Npc283MHZpZGVvdGV4c3VwcDEnOgoJCQljYXNlICdpc29pcjcwJzoKCQkJY2FzZSAndmlkZW90ZXhzdXBwbCc6CgkJCQlyZXR1cm4gJ3ZpZGVvdGV4LXN1cHBsJzsKCgkJCWNhc2UgJ2Nzdmlxcic6CgkJCWNhc2UgJ3ZpcXInOgoJCQkJcmV0dXJuICdWSVFSJzsKCgkJCWNhc2UgJ2NzdmlzY2lpJzoKCQkJY2FzZSAndmlzY2lpJzoKCQkJCXJldHVybiAnVklTQ0lJJzsKCgkJCWNhc2UgJ2Nzd2luZG93czMxaic6CgkJCWNhc2UgJ3dpbmRvd3MzMWonOgoJCQkJcmV0dXJuICdXaW5kb3dzLTMxSic7CgoJCQljYXNlICdpc284ODU5MTEnOgoJCQljYXNlICd0aXM2MjAnOgoJCQkJcmV0dXJuICdXaW5kb3dzLTg3NCc7CgoJCQljYXNlICdjc2V1Y2tyJzoKCQkJY2FzZSAnZXVja3InOgoJCQljYXNlICd3aW5kb3dzOTQ5JzoKCQkJY2FzZSAnY3Nrc2M1NjAxMTk4Nyc6CgkJCWNhc2UgJ2lzb2lyMTQ5JzoKCQkJY2FzZSAna29yZWFuJzoKCQkJY2FzZSAna3NjNTYwMSc6CgkJCWNhc2UgJ2tzYzU2MDExOTg3JzoKCQkJY2FzZSAna3NjNTYwMTE5ODknOgoJCQkJcmV0dXJuICdXaW5kb3dzLTk0OSc7CgoJCQljYXNlICd3aW5kb3dzMTI1MCc6CgkJCQlyZXR1cm4gJ3dpbmRvd3MtMTI1MCc7CgoJCQljYXNlICd3aW5kb3dzMTI1MSc6CgkJCQlyZXR1cm4gJ3dpbmRvd3MtMTI1MSc7CgoJCQljYXNlICdjcDgxOSc6CgkJCWNhc2UgJ2NzaXNvbGF0aW4xJzoKCQkJY2FzZSAnaWJtODE5JzoKCQkJY2FzZSAnaXNvODg1OTEnOgoJCQljYXNlICdpc29pcjEwMCc6CgkJCWNhc2UgJ2lzbzg4NTkxMTk4Nyc6CgkJCWNhc2UgJ2wxJzoKCQkJY2FzZSAnbGF0aW4xJzoKCQkJY2FzZSAnd2luZG93czEyNTInOgoJCQkJcmV0dXJuICdXaW5kb3dzLTEyNTInOwoKCQkJY2FzZSAnd2luZG93czEyNTInOgoJCQkJcmV0dXJuICd3aW5kb3dzLTEyNTInOwoKCQkJY2FzZSAnd2luZG93czEyNTMnOgoJCQkJcmV0dXJuICd3aW5kb3dzLTEyNTMnOwoKCQkJY2FzZSAnY3Npc29sYXRpbjUnOgoJCQljYXNlICdpc284ODU5OSc6CgkJCWNhc2UgJ2lzb2lyMTQ4JzoKCQkJY2FzZSAnaXNvODg1OTkxOTg5JzoKCQkJY2FzZSAnbDUnOgoJCQljYXNlICdsYXRpbjUnOgoJCQljYXNlICd3aW5kb3dzMTI1NCc6CgkJCQlyZXR1cm4gJ1dpbmRvd3MtMTI1NCc7CgoJCQljYXNlICd3aW5kb3dzMTI1NCc6CgkJCQlyZXR1cm4gJ3dpbmRvd3MtMTI1NCc7CgoJCQljYXNlICd3aW5kb3dzMTI1NSc6CgkJCQlyZXR1cm4gJ3dpbmRvd3MtMTI1NSc7CgoJCQljYXNlICd3aW5kb3dzMTI1Nic6CgkJCQlyZXR1cm4gJ3dpbmRvd3MtMTI1Nic7CgoJCQljYXNlICd3aW5kb3dzMTI1Nyc6CgkJCQlyZXR1cm4gJ3dpbmRvd3MtMTI1Nyc7CgoJCQljYXNlICd3aW5kb3dzMTI1OCc6CgkJCQlyZXR1cm4gJ3dpbmRvd3MtMTI1OCc7CgoJCQlkZWZhdWx0OgoJCQkJcmV0dXJuICRjaGFyc2V0OwoJCX0KCX0KCglmdW5jdGlvbiBnZXRfY3VybF92ZXJzaW9uKCkKCXsKCQlpZiAoaXNfYXJyYXkoJGN1cmwgPSBjdXJsX3ZlcnNpb24oKSkpCgkJewoJCQkkY3VybCA9ICRjdXJsWyd2ZXJzaW9uJ107CgkJfQoJCWVsc2VpZiAoc3Vic3RyKCRjdXJsLCAwLCA1KSA9PSAnY3VybC8nKQoJCXsKCQkJJGN1cmwgPSBzdWJzdHIoJGN1cmwsIDUsIHN0cmNzcG4oJGN1cmwsICJceDA5XHgwQVx4MEJceDBDXHgwRCIsIDUpKTsKCQl9CgkJZWxzZWlmIChzdWJzdHIoJGN1cmwsIDAsIDgpID09ICdsaWJjdXJsLycpCgkJewoJCQkkY3VybCA9IHN1YnN0cigkY3VybCwgOCwgc3RyY3NwbigkY3VybCwgIlx4MDlceDBBXHgwQlx4MENceDBEIiwgOCkpOwoJCX0KCQllbHNlCgkJewoJCQkkY3VybCA9IDA7CgkJfQoJCXJldHVybiAkY3VybDsKCX0KCglmdW5jdGlvbiBpc19zdWJjbGFzc19vZigkY2xhc3MxLCAkY2xhc3MyKQoJewoJCWlmIChmdW5jX251bV9hcmdzKCkgIT0gMikKCQl7CgkJCXRyaWdnZXJfZXJyb3IoJ1dyb25nIHBhcmFtZXRlciBjb3VudCBmb3IgU2ltcGxlUGllX01pc2M6OmlzX3N1YmNsYXNzX29mKCknLCBFX1VTRVJfV0FSTklORyk7CgkJfQoJCWVsc2VpZiAodmVyc2lvbl9jb21wYXJlKFBIUF9WRVJTSU9OLCAnNS4wLjMnLCAnPj0nKSB8fCBpc19vYmplY3QoJGNsYXNzMSkpCgkJewoJCQlyZXR1cm4gaXNfc3ViY2xhc3Nfb2YoJGNsYXNzMSwgJGNsYXNzMik7CgkJfQoJCWVsc2VpZiAoaXNfc3RyaW5nKCRjbGFzczEpICYmIGlzX3N0cmluZygkY2xhc3MyKSkKCQl7CgkJCWlmIChjbGFzc19leGlzdHMoJGNsYXNzMSkpCgkJCXsKCQkJCWlmIChjbGFzc19leGlzdHMoJGNsYXNzMikpCgkJCQl7CgkJCQkJJGNsYXNzMiA9IHN0cnRvbG93ZXIoJGNsYXNzMik7CgkJCQkJd2hpbGUgKCRjbGFzczEgPSBzdHJ0b2xvd2VyKGdldF9wYXJlbnRfY2xhc3MoJGNsYXNzMSkpKQoJCQkJCXsKCQkJCQkJaWYgKCRjbGFzczEgPT0gJGNsYXNzMikKCQkJCQkJewoJCQkJCQkJcmV0dXJuIHRydWU7CgkJCQkJCX0KCQkJCQl9CgkJCQl9CgkJCX0KCQkJZWxzZQoJCQl7CgkJCQl0cmlnZ2VyX2Vycm9yKCdVbmtub3duIGNsYXNzIHBhc3NlZCBhcyBwYXJhbWV0ZXInLCBFX1VTRVJfV0FSTk5HKTsKCQkJfQoJCX0KCQlyZXR1cm4gZmFsc2U7Cgl9CgoJLyoqCgkgKiBTdHJpcCBIVE1MIGNvbW1lbnRzCgkgKgoJICogQGFjY2VzcyBwdWJsaWMKCSAqIEBwYXJhbSBzdHJpbmcgJGRhdGEgRGF0YSB0byBzdHJpcCBjb21tZW50cyBmcm9tCgkgKiBAcmV0dXJuIHN0cmluZyBDb21tZW50IHN0cmlwcGVkIHN0cmluZwoJICovCglmdW5jdGlvbiBzdHJpcF9jb21tZW50cygkZGF0YSkKCXsKCQkkb3V0cHV0ID0gJyc7CgkJd2hpbGUgKCgkc3RhcnQgPSBzdHJwb3MoJGRhdGEsICc8IS0tJykpICE9PSBmYWxzZSkKCQl7CgkJCSRvdXRwdXQgLj0gc3Vic3RyKCRkYXRhLCAwLCAkc3RhcnQpOwoJCQlpZiAoKCRlbmQgPSBzdHJwb3MoJGRhdGEsICctLT4nLCAkc3RhcnQpKSAhPT0gZmFsc2UpCgkJCXsKCQkJCSRkYXRhID0gc3Vic3RyX3JlcGxhY2UoJGRhdGEsICcnLCAwLCAkZW5kICsgMyk7CgkJCX0KCQkJZWxzZQoJCQl7CgkJCQkkZGF0YSA9ICcnOwoJCQl9CgkJfQoJCXJldHVybiAkb3V0cHV0IC4gJGRhdGE7Cgl9CgoJZnVuY3Rpb24gcGFyc2VfZGF0ZSgkZHQpCgl7CgkJJHBhcnNlciA9IFNpbXBsZVBpZV9QYXJzZV9EYXRlOjpnZXQoKTsKCQlyZXR1cm4gJHBhcnNlci0+cGFyc2UoJGR0KTsKCX0KCgkvKioKCSAqIERlY29kZSBIVE1MIGVudGl0aWVzCgkgKgoJICogQHN0YXRpYwoJICogQGFjY2VzcyBwdWJsaWMKCSAqIEBwYXJhbSBzdHJpbmcgJGRhdGEgSW5wdXQgZGF0YQoJICogQHJldHVybiBzdHJpbmcgT3V0cHV0IGRhdGEKCSAqLwoJZnVuY3Rpb24gZW50aXRpZXNfZGVjb2RlKCRkYXRhKQoJewoJCSRkZWNvZGVyID0gbmV3IFNpbXBsZVBpZV9EZWNvZGVfSFRNTF9FbnRpdGllcygkZGF0YSk7CgkJcmV0dXJuICRkZWNvZGVyLT5wYXJzZSgpOwoJfQoKCS8qKgoJICogUmVtb3ZlIFJGQzgyMiBjb21tZW50cwoJICoKCSAqIEBhY2Nlc3MgcHVibGljCgkgKiBAcGFyYW0gc3RyaW5nICRkYXRhIERhdGEgdG8gc3RyaXAgY29tbWVudHMgZnJvbQoJICogQHJldHVybiBzdHJpbmcgQ29tbWVudCBzdHJpcHBlZCBzdHJpbmcKCSAqLwoJZnVuY3Rpb24gdW5jb21tZW50X3JmYzgyMigkc3RyaW5nKQoJewoJCSRzdHJpbmcgPSAoc3RyaW5nKSAkc3RyaW5nOwoJCSRwb3NpdGlvbiA9IDA7CgkJJGxlbmd0aCA9IHN0cmxlbigkc3RyaW5nKTsKCQkkZGVwdGggPSAwOwoKCQkkb3V0cHV0ID0gJyc7CgoJCXdoaWxlICgkcG9zaXRpb24gPCAkbGVuZ3RoICYmICgkcG9zID0gc3RycG9zKCRzdHJpbmcsICcoJywgJHBvc2l0aW9uKSkgIT09IGZhbHNlKQoJCXsKCQkJJG91dHB1dCAuPSBzdWJzdHIoJHN0cmluZywgJHBvc2l0aW9uLCAkcG9zIC0gJHBvc2l0aW9uKTsKCQkJJHBvc2l0aW9uID0gJHBvcyArIDE7CgkJCWlmICgkc3RyaW5nWyRwb3MgLSAxXSAhPT0gJ1xcJykKCQkJewoJCQkJJGRlcHRoKys7CgkJCQl3aGlsZSAoJGRlcHRoICYmICRwb3NpdGlvbiA8ICRsZW5ndGgpCgkJCQl7CgkJCQkJJHBvc2l0aW9uICs9IHN0cmNzcG4oJHN0cmluZywgJygpJywgJHBvc2l0aW9uKTsKCQkJCQlpZiAoJHN0cmluZ1skcG9zaXRpb24gLSAxXSA9PT0gJ1xcJykKCQkJCQl7CgkJCQkJCSRwb3NpdGlvbisrOwoJCQkJCQljb250aW51ZTsKCQkJCQl9CgkJCQkJZWxzZWlmIChpc3NldCgkc3RyaW5nWyRwb3NpdGlvbl0pKQoJCQkJCXsKCQkJCQkJc3dpdGNoICgkc3RyaW5nWyRwb3NpdGlvbl0pCgkJCQkJCXsKCQkJCQkJCWNhc2UgJygnOgoJCQkJCQkJCSRkZXB0aCsrOwoJCQkJCQkJCWJyZWFrOwoKCQkJCQkJCWNhc2UgJyknOgoJCQkJCQkJCSRkZXB0aC0tOwoJCQkJCQkJCWJyZWFrOwoJCQkJCQl9CgkJCQkJCSRwb3NpdGlvbisrOwoJCQkJCX0KCQkJCQllbHNlCgkJCQkJewoJCQkJCQlicmVhazsKCQkJCQl9CgkJCQl9CgkJCX0KCQkJZWxzZQoJCQl7CgkJCQkkb3V0cHV0IC49ICcoJzsKCQkJfQoJCX0KCQkkb3V0cHV0IC49IHN1YnN0cigkc3RyaW5nLCAkcG9zaXRpb24pOwoKCQlyZXR1cm4gJG91dHB1dDsKCX0KCglmdW5jdGlvbiBwYXJzZV9taW1lKCRtaW1lKQoJewoJCWlmICgoJHBvcyA9IHN0cnBvcygkbWltZSwgJzsnKSkgPT09IGZhbHNlKQoJCXsKCQkJcmV0dXJuIHRyaW0oJG1pbWUpOwoJCX0KCQllbHNlCgkJewoJCQlyZXR1cm4gdHJpbShzdWJzdHIoJG1pbWUsIDAsICRwb3MpKTsKCQl9Cgl9CgoJZnVuY3Rpb24gaHRtbHNwZWNpYWxjaGFyc19kZWNvZGUoJHN0cmluZywgJHF1b3RlX3N0eWxlKQoJewoJCWlmIChmdW5jdGlvbl9leGlzdHMoJ2h0bWxzcGVjaWFsY2hhcnNfZGVjb2RlJykpCgkJewoJCQlyZXR1cm4gaHRtbHNwZWNpYWxjaGFyc19kZWNvZGUoJHN0cmluZywgJHF1b3RlX3N0eWxlKTsKCQl9CgkJZWxzZQoJCXsKCQkJcmV0dXJuIHN0cnRyKCRzdHJpbmcsIGFycmF5X2ZsaXAoZ2V0X2h0bWxfdHJhbnNsYXRpb25fdGFibGUoSFRNTF9TUEVDSUFMQ0hBUlMsICRxdW90ZV9zdHlsZSkpKTsKCQl9Cgl9CgoJZnVuY3Rpb24gYXRvbV8wM19jb25zdHJ1Y3RfdHlwZSgkYXR0cmlicykKCXsKCQlpZiAoaXNzZXQoJGF0dHJpYnNbJyddWydtb2RlJ10pICYmIHN0cnRvbG93ZXIodHJpbSgkYXR0cmlic1snJ11bJ21vZGUnXSkgPT0gJ2Jhc2U2NCcpKQoJCXsKCQkJJG1vZGUgPSBTSU1QTEVQSUVfQ09OU1RSVUNUX0JBU0U2NDsKCQl9CgkJZWxzZQoJCXsKCQkJJG1vZGUgPSBTSU1QTEVQSUVfQ09OU1RSVUNUX05PTkU7CgkJfQoJCWlmIChpc3NldCgkYXR0cmlic1snJ11bJ3R5cGUnXSkpCgkJewoJCQlzd2l0Y2ggKHN0cnRvbG93ZXIodHJpbSgkYXR0cmlic1snJ11bJ3R5cGUnXSkpKQoJCQl7CgkJCQljYXNlICd0ZXh0JzoKCQkJCWNhc2UgJ3RleHQvcGxhaW4nOgoJCQkJCXJldHVybiBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQgfCAkbW9kZTsKCgkJCQljYXNlICdodG1sJzoKCQkJCWNhc2UgJ3RleHQvaHRtbCc6CgkJCQkJcmV0dXJuIFNJTVBMRVBJRV9DT05TVFJVQ1RfSFRNTCB8ICRtb2RlOwoKCQkJCWNhc2UgJ3hodG1sJzoKCQkJCWNhc2UgJ2FwcGxpY2F0aW9uL3hodG1sK3htbCc6CgkJCQkJcmV0dXJuIFNJTVBMRVBJRV9DT05TVFJVQ1RfWEhUTUwgfCAkbW9kZTsKCgkJCQlkZWZhdWx0OgoJCQkJCXJldHVybiBTSU1QTEVQSUVfQ09OU1RSVUNUX05PTkUgfCAkbW9kZTsKCQkJfQoJCX0KCQllbHNlCgkJewoJCQlyZXR1cm4gU0lNUExFUElFX0NPTlNUUlVDVF9URVhUIHwgJG1vZGU7CgkJfQoJfQoKCWZ1bmN0aW9uIGF0b21fMTBfY29uc3RydWN0X3R5cGUoJGF0dHJpYnMpCgl7CgkJaWYgKGlzc2V0KCRhdHRyaWJzWycnXVsndHlwZSddKSkKCQl7CgkJCXN3aXRjaCAoc3RydG9sb3dlcih0cmltKCRhdHRyaWJzWycnXVsndHlwZSddKSkpCgkJCXsKCQkJCWNhc2UgJ3RleHQnOgoJCQkJCXJldHVybiBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQ7CgoJCQkJY2FzZSAnaHRtbCc6CgkJCQkJcmV0dXJuIFNJTVBMRVBJRV9DT05TVFJVQ1RfSFRNTDsKCgkJCQljYXNlICd4aHRtbCc6CgkJCQkJcmV0dXJuIFNJTVBMRVBJRV9DT05TVFJVQ1RfWEhUTUw7CgoJCQkJZGVmYXVsdDoKCQkJCQlyZXR1cm4gU0lNUExFUElFX0NPTlNUUlVDVF9OT05FOwoJCQl9CgkJfQoJCXJldHVybiBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQ7Cgl9CgoJZnVuY3Rpb24gYXRvbV8xMF9jb250ZW50X2NvbnN0cnVjdF90eXBlKCRhdHRyaWJzKQoJewoJCWlmIChpc3NldCgkYXR0cmlic1snJ11bJ3R5cGUnXSkpCgkJewoJCQkkdHlwZSA9IHN0cnRvbG93ZXIodHJpbSgkYXR0cmlic1snJ11bJ3R5cGUnXSkpOwoJCQlzd2l0Y2ggKCR0eXBlKQoJCQl7CgkJCQljYXNlICd0ZXh0JzoKCQkJCQlyZXR1cm4gU0lNUExFUElFX0NPTlNUUlVDVF9URVhUOwoKCQkJCWNhc2UgJ2h0bWwnOgoJCQkJCXJldHVybiBTSU1QTEVQSUVfQ09OU1RSVUNUX0hUTUw7CgoJCQkJY2FzZSAneGh0bWwnOgoJCQkJCXJldHVybiBTSU1QTEVQSUVfQ09OU1RSVUNUX1hIVE1MOwoJCQl9CgkJCWlmIChpbl9hcnJheShzdWJzdHIoJHR5cGUsIC00KSwgYXJyYXkoJyt4bWwnLCAnL3htbCcpKSB8fCBzdWJzdHIoJHR5cGUsIDAsIDUpID09ICd0ZXh0LycpCgkJCXsKCQkJCXJldHVybiBTSU1QTEVQSUVfQ09OU1RSVUNUX05PTkU7CgkJCX0KCQkJZWxzZQoJCQl7CgkJCQlyZXR1cm4gU0lNUExFUElFX0NPTlNUUlVDVF9CQVNFNjQ7CgkJCX0KCQl9CgkJZWxzZQoJCXsKCQkJcmV0dXJuIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVDsKCQl9Cgl9CgoJZnVuY3Rpb24gaXNfaXNlZ21lbnRfbnpfbmMoJHN0cmluZykKCXsKCQlyZXR1cm4gKGJvb2wpIHByZWdfbWF0Y2goJy9eKFtBLVphLXowLTlcLS5fflx4e0EwfS1ceHtEN0ZGfVx4e0Y5MDB9LVx4e0ZEQ0Z9XHh7RkRGMH0tXHh7RkZFRn1ceHsxMDAwMH0tXHh7MUZGRkR9XHh7MjAwMDB9LVx4ezJGRkZEfVx4ezMwMDAwfS1ceHszRkZGRH1ceHs0MDAwMH0tXHh7NEZGRkR9XHh7NTAwMDB9LVx4ezVGRkZEfVx4ezYwMDAwfS1ceHs2RkZGRH1ceHs3MDAwMH0tXHh7N0ZGRkR9XHh7ODAwMDB9LVx4ezhGRkZEfVx4ezkwMDAwfS1ceHs5RkZGRH1ceHtBMDAwMH0tXHh7QUZGRkR9XHh7QjAwMDB9LVx4e0JGRkZEfVx4e0MwMDAwfS1ceHtDRkZGRH1ceHtEMDAwMH0tXHh7REZGRkR9XHh7RTEwMDB9LVx4e0VGRkZEfSEkJlwnKCkqKyw7PUBdfCglWzAtOUFCQ0RFRl17Mn0pKSskL3UnLCAkc3RyaW5nKTsKCX0KCglmdW5jdGlvbiBzcGFjZV9zZXBlcmF0ZWRfdG9rZW5zKCRzdHJpbmcpCgl7CgkJJHNwYWNlX2NoYXJhY3RlcnMgPSAiXHgyMFx4MDlceDBBXHgwQlx4MENceDBEIjsKCQkkc3RyaW5nX2xlbmd0aCA9IHN0cmxlbigkc3RyaW5nKTsKCgkJJHBvc2l0aW9uID0gc3Ryc3BuKCRzdHJpbmcsICRzcGFjZV9jaGFyYWN0ZXJzKTsKCQkkdG9rZW5zID0gYXJyYXkoKTsKCgkJd2hpbGUgKCRwb3NpdGlvbiA8ICRzdHJpbmdfbGVuZ3RoKQoJCXsKCQkJJGxlbiA9IHN0cmNzcG4oJHN0cmluZywgJHNwYWNlX2NoYXJhY3RlcnMsICRwb3NpdGlvbik7CgkJCSR0b2tlbnNbXSA9IHN1YnN0cigkc3RyaW5nLCAkcG9zaXRpb24sICRsZW4pOwoJCQkkcG9zaXRpb24gKz0gJGxlbjsKCQkJJHBvc2l0aW9uICs9IHN0cnNwbigkc3RyaW5nLCAkc3BhY2VfY2hhcmFjdGVycywgJHBvc2l0aW9uKTsKCQl9CgoJCXJldHVybiAkdG9rZW5zOwoJfQoKCWZ1bmN0aW9uIGFycmF5X3VuaXF1ZSgkYXJyYXkpCgl7CgkJaWYgKHZlcnNpb25fY29tcGFyZShQSFBfVkVSU0lPTiwgJzUuMicsICc+PScpKQoJCXsKCQkJcmV0dXJuIGFycmF5X3VuaXF1ZSgkYXJyYXkpOwoJCX0KCQllbHNlCgkJewoJCQkkYXJyYXkgPSAoYXJyYXkpICRhcnJheTsKCQkJJG5ld19hcnJheSA9IGFycmF5KCk7CgkJCSRuZXdfYXJyYXlfc3RyaW5ncyA9IGFycmF5KCk7CgkJCWZvcmVhY2ggKCRhcnJheSBhcyAka2V5ID0+ICR2YWx1ZSkKCQkJewoJCQkJaWYgKGlzX29iamVjdCgkdmFsdWUpKQoJCQkJewoJCQkJCWlmIChtZXRob2RfZXhpc3RzKCR2YWx1ZSwgJ19fdG9TdHJpbmcnKSkKCQkJCQl7CgkJCQkJCSRjbXAgPSAkdmFsdWUtPl9fdG9TdHJpbmcoKTsKCQkJCQl9CgkJCQkJZWxzZQoJCQkJCXsKCQkJCQkJdHJpZ2dlcl9lcnJvcignT2JqZWN0IG9mIGNsYXNzICcgLiBnZXRfY2xhc3MoJHZhbHVlKSAuICcgY291bGQgbm90IGJlIGNvbnZlcnRlZCB0byBzdHJpbmcnLCBFX1VTRVJfRVJST1IpOwoJCQkJCX0KCQkJCX0KCQkJCWVsc2VpZiAoaXNfYXJyYXkoJHZhbHVlKSkKCQkJCXsKCQkJCQkkY21wID0gKHN0cmluZykgcmVzZXQoJHZhbHVlKTsKCQkJCX0KCQkJCWVsc2UKCQkJCXsKCQkJCQkkY21wID0gKHN0cmluZykgJHZhbHVlOwoJCQkJfQoJCQkJaWYgKCFpbl9hcnJheSgkY21wLCAkbmV3X2FycmF5X3N0cmluZ3MpKQoJCQkJewoJCQkJCSRuZXdfYXJyYXlbJGtleV0gPSAkdmFsdWU7CgkJCQkJJG5ld19hcnJheV9zdHJpbmdzW10gPSAkY21wOwoJCQkJfQoJCQl9CgkJCXJldHVybiAkbmV3X2FycmF5OwoJCX0KCX0KCgkvKioKCSAqIENvbnZlcnRzIGEgdW5pY29kZSBjb2RlcG9pbnQgdG8gYSBVVEYtOCBjaGFyYWN0ZXIKCSAqCgkgKiBAc3RhdGljCgkgKiBAYWNjZXNzIHB1YmxpYwoJICogQHBhcmFtIGludCAkY29kZXBvaW50IFVuaWNvZGUgY29kZXBvaW50CgkgKiBAcmV0dXJuIHN0cmluZyBVVEYtOCBjaGFyYWN0ZXIKCSAqLwoJZnVuY3Rpb24gY29kZXBvaW50X3RvX3V0ZjgoJGNvZGVwb2ludCkKCXsKCQlzdGF0aWMgJGNhY2hlID0gYXJyYXkoKTsKCQkkY29kZXBvaW50ID0gKGludCkgJGNvZGVwb2ludDsKCQlpZiAoaXNzZXQoJGNhY2hlWyRjb2RlcG9pbnRdKSkKCQl7CgkJCXJldHVybiAkY2FjaGVbJGNvZGVwb2ludF07CgkJfQoJCWVsc2VpZiAoJGNvZGVwb2ludCA8IDApCgkJewoJCQlyZXR1cm4gJGNhY2hlWyRjb2RlcG9pbnRdID0gZmFsc2U7CgkJfQoJCWVsc2UgaWYgKCRjb2RlcG9pbnQgPD0gMHg3ZikKCQl7CgkJCXJldHVybiAkY2FjaGVbJGNvZGVwb2ludF0gPSBjaHIoJGNvZGVwb2ludCk7CgkJfQoJCWVsc2UgaWYgKCRjb2RlcG9pbnQgPD0gMHg3ZmYpCgkJewoJCQlyZXR1cm4gJGNhY2hlWyRjb2RlcG9pbnRdID0gY2hyKDB4YzAgfCAoJGNvZGVwb2ludCA+PiA2KSkgLiBjaHIoMHg4MCB8ICgkY29kZXBvaW50ICYgMHgzZikpOwoJCX0KCQllbHNlIGlmICgkY29kZXBvaW50IDw9IDB4ZmZmZikKCQl7CgkJCXJldHVybiAkY2FjaGVbJGNvZGVwb2ludF0gPSBjaHIoMHhlMCB8ICgkY29kZXBvaW50ID4+IDEyKSkgLiBjaHIoMHg4MCB8ICgoJGNvZGVwb2ludCA+PiA2KSAmIDB4M2YpKSAuIGNocigweDgwIHwgKCRjb2RlcG9pbnQgJiAweDNmKSk7CgkJfQoJCWVsc2UgaWYgKCRjb2RlcG9pbnQgPD0gMHgxMGZmZmYpCgkJewoJCQlyZXR1cm4gJGNhY2hlWyRjb2RlcG9pbnRdID0gY2hyKDB4ZjAgfCAoJGNvZGVwb2ludCA+PiAxOCkpIC4gY2hyKDB4ODAgfCAoKCRjb2RlcG9pbnQgPj4gMTIpICYgMHgzZikpIC4gY2hyKDB4ODAgfCAoKCRjb2RlcG9pbnQgPj4gNikgJiAweDNmKSkgLiBjaHIoMHg4MCB8ICgkY29kZXBvaW50ICYgMHgzZikpOwoJCX0KCQllbHNlCgkJewoJCQkvLyBVK0ZGRkQgUkVQTEFDRU1FTlQgQ0hBUkFDVEVSCgkJCXJldHVybiAkY2FjaGVbJGNvZGVwb2ludF0gPSAiXHhFRlx4QkZceEJEIjsKCQl9Cgl9CgoJLyoqCgkgKiBSZS1pbXBsZW1lbnRhdGlvbiBvZiBQSFAgNSdzIHN0cmlwb3MoKQoJICoKCSAqIFJldHVybnMgdGhlIG51bWVyaWMgcG9zaXRpb24gb2YgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgbmVlZGxlIGluIHRoZQoJICogaGF5c3RhY2sgc3RyaW5nLgoJICoKCSAqIEBzdGF0aWMKCSAqIEBhY2Nlc3Mgc3RyaW5nCgkgKiBAcGFyYW0gb2JqZWN0ICRoYXlzdGFjawoJICogQHBhcmFtIHN0cmluZyAkbmVlZGxlIE5vdGUgdGhhdCB0aGUgbmVlZGxlIG1heSBiZSBhIHN0cmluZyBvZiBvbmUgb3IgbW9yZQoJICogICAgIGNoYXJhY3RlcnMuIElmIG5lZWRsZSBpcyBub3QgYSBzdHJpbmcsIGl0IGlzIGNvbnZlcnRlZCB0byBhbiBpbnRlZ2VyCgkgKiAgICAgYW5kIGFwcGxpZWQgYXMgdGhlIG9yZGluYWwgdmFsdWUgb2YgYSBjaGFyYWN0ZXIuCgkgKiBAcGFyYW0gaW50ICRvZmZzZXQgVGhlIG9wdGlvbmFsIG9mZnNldCBwYXJhbWV0ZXIgYWxsb3dzIHlvdSB0byBzcGVjaWZ5IHdoaWNoCgkgKiAgICAgY2hhcmFjdGVyIGluIGhheXN0YWNrIHRvIHN0YXJ0IHNlYXJjaGluZy4gVGhlIHBvc2l0aW9uIHJldHVybmVkIGlzIHN0aWxsCgkgKiAgICAgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZyBvZiBoYXlzdGFjay4KCSAqIEByZXR1cm4gYm9vbCBJZiBuZWVkbGUgaXMgbm90IGZvdW5kLCBzdHJpcG9zKCkgd2lsbCByZXR1cm4gYm9vbGVhbiBmYWxzZS4KCSAqLwoJZnVuY3Rpb24gc3RyaXBvcygkaGF5c3RhY2ssICRuZWVkbGUsICRvZmZzZXQgPSAwKQoJewoJCWlmIChmdW5jdGlvbl9leGlzdHMoJ3N0cmlwb3MnKSkKCQl7CgkJCXJldHVybiBzdHJpcG9zKCRoYXlzdGFjaywgJG5lZWRsZSwgJG9mZnNldCk7CgkJfQoJCWVsc2UKCQl7CgkJCWlmIChpc19zdHJpbmcoJG5lZWRsZSkpCgkJCXsKCQkJCSRuZWVkbGUgPSBzdHJ0b2xvd2VyKCRuZWVkbGUpOwoJCQl9CgkJCWVsc2VpZiAoaXNfaW50KCRuZWVkbGUpIHx8IGlzX2Jvb2woJG5lZWRsZSkgfHwgaXNfZG91YmxlKCRuZWVkbGUpKQoJCQl7CgkJCQkkbmVlZGxlID0gc3RydG9sb3dlcihjaHIoJG5lZWRsZSkpOwoJCQl9CgkJCWVsc2UKCQkJewoJCQkJdHJpZ2dlcl9lcnJvcignbmVlZGxlIGlzIG5vdCBhIHN0cmluZyBvciBhbiBpbnRlZ2VyJywgRV9VU0VSX1dBUk5JTkcpOwoJCQkJcmV0dXJuIGZhbHNlOwoJCQl9CgoJCQlyZXR1cm4gc3RycG9zKHN0cnRvbG93ZXIoJGhheXN0YWNrKSwgJG5lZWRsZSwgJG9mZnNldCk7CgkJfQoJfQoKCS8qKgoJICogU2ltaWxhciB0byBwYXJzZV9zdHIoKQoJICoKCSAqIFJldHVybnMgYW4gYXNzb2NpYXRpdmUgYXJyYXkgb2YgbmFtZS92YWx1ZSBwYWlycywgd2hlcmUgdGhlIHZhbHVlIGlzIGFuCgkgKiBhcnJheSBvZiB2YWx1ZXMgdGhhdCBoYXZlIHVzZWQgdGhlIHNhbWUgbmFtZQoJICoKCSAqIEBzdGF0aWMKCSAqIEBhY2Nlc3Mgc3RyaW5nCgkgKiBAcGFyYW0gc3RyaW5nICRzdHIgVGhlIGlucHV0IHN0cmluZy4KCSAqIEByZXR1cm4gYXJyYXkKCSAqLwoJZnVuY3Rpb24gcGFyc2Vfc3RyKCRzdHIpCgl7CgkJJHJldHVybiA9IGFycmF5KCk7CgkJJHN0ciA9IGV4cGxvZGUoJyYnLCAkc3RyKTsKCgkJZm9yZWFjaCAoJHN0ciBhcyAkc2VjdGlvbikKCQl7CgkJCWlmIChzdHJwb3MoJHNlY3Rpb24sICc9JykgIT09IGZhbHNlKQoJCQl7CgkJCQlsaXN0KCRuYW1lLCAkdmFsdWUpID0gZXhwbG9kZSgnPScsICRzZWN0aW9uLCAyKTsKCQkJCSRyZXR1cm5bdXJsZGVjb2RlKCRuYW1lKV1bXSA9IHVybGRlY29kZSgkdmFsdWUpOwoJCQl9CgkJCWVsc2UKCQkJewoJCQkJJHJldHVyblt1cmxkZWNvZGUoJHNlY3Rpb24pXVtdID0gbnVsbDsKCQkJfQoJCX0KCgkJcmV0dXJuICRyZXR1cm47Cgl9CgoJLyoqCgkgKiBEZXRlY3QgWE1MIGVuY29kaW5nLCBhcyBwZXIgWE1MIDEuMCBBcHBlbmRpeCBGLjEKCSAqCgkgKiBAdG9kbyBBZGQgc3VwcG9ydCBmb3IgRUJDRElDCgkgKiBAcGFyYW0gc3RyaW5nICRkYXRhIFhNTCBkYXRhCgkgKiBAcmV0dXJuIGFycmF5IFBvc3NpYmxlIGVuY29kaW5ncwoJICovCglmdW5jdGlvbiB4bWxfZW5jb2RpbmcoJGRhdGEpCgl7CgkJLy8gVVRGLTMyIEJpZyBFbmRpYW4gQk9NCgkJaWYgKHN1YnN0cigkZGF0YSwgMCwgNCkgPT09ICJceDAwXHgwMFx4RkVceEZGIikKCQl7CgkJCSRlbmNvZGluZ1tdID0gJ1VURi0zMkJFJzsKCQl9CgkJLy8gVVRGLTMyIExpdHRsZSBFbmRpYW4gQk9NCgkJZWxzZWlmIChzdWJzdHIoJGRhdGEsIDAsIDQpID09PSAiXHhGRlx4RkVceDAwXHgwMCIpCgkJewoJCQkkZW5jb2RpbmdbXSA9ICdVVEYtMzJMRSc7CgkJfQoJCS8vIFVURi0xNiBCaWcgRW5kaWFuIEJPTQoJCWVsc2VpZiAoc3Vic3RyKCRkYXRhLCAwLCAyKSA9PT0gIlx4RkVceEZGIikKCQl7CgkJCSRlbmNvZGluZ1tdID0gJ1VURi0xNkJFJzsKCQl9CgkJLy8gVVRGLTE2IExpdHRsZSBFbmRpYW4gQk9NCgkJZWxzZWlmIChzdWJzdHIoJGRhdGEsIDAsIDIpID09PSAiXHhGRlx4RkUiKQoJCXsKCQkJJGVuY29kaW5nW10gPSAnVVRGLTE2TEUnOwoJCX0KCQkvLyBVVEYtOCBCT00KCQllbHNlaWYgKHN1YnN0cigkZGF0YSwgMCwgMykgPT09ICJceEVGXHhCQlx4QkYiKQoJCXsKCQkJJGVuY29kaW5nW10gPSAnVVRGLTgnOwoJCX0KCQkvLyBVVEYtMzIgQmlnIEVuZGlhbiBXaXRob3V0IEJPTQoJCWVsc2VpZiAoc3Vic3RyKCRkYXRhLCAwLCAyMCkgPT09ICJceDAwXHgwMFx4MDBceDNDXHgwMFx4MDBceDAwXHgzRlx4MDBceDAwXHgwMFx4NzhceDAwXHgwMFx4MDBceDZEXHgwMFx4MDBceDAwXHg2QyIpCgkJewoJCQlpZiAoJHBvcyA9IHN0cnBvcygkZGF0YSwgIlx4MDBceDAwXHgwMFx4M0ZceDAwXHgwMFx4MDBceDNFIikpCgkJCXsKCQkJCSRwYXJzZXIgPSBuZXcgU2ltcGxlUGllX1hNTF9EZWNsYXJhdGlvbl9QYXJzZXIoU2ltcGxlUGllX01pc2M6OmNoYW5nZV9lbmNvZGluZyhzdWJzdHIoJGRhdGEsIDIwLCAkcG9zIC0gMjApLCAnVVRGLTMyQkUnLCAnVVRGLTgnKSk7CgkJCQlpZiAoJHBhcnNlci0+cGFyc2UoKSkKCQkJCXsKCQkJCQkkZW5jb2RpbmdbXSA9ICRwYXJzZXItPmVuY29kaW5nOwoJCQkJfQoJCQl9CgkJCSRlbmNvZGluZ1tdID0gJ1VURi0zMkJFJzsKCQl9CgkJLy8gVVRGLTMyIExpdHRsZSBFbmRpYW4gV2l0aG91dCBCT00KCQllbHNlaWYgKHN1YnN0cigkZGF0YSwgMCwgMjApID09PSAiXHgzQ1x4MDBceDAwXHgwMFx4M0ZceDAwXHgwMFx4MDBceDc4XHgwMFx4MDBceDAwXHg2RFx4MDBceDAwXHgwMFx4NkNceDAwXHgwMFx4MDAiKQoJCXsKCQkJaWYgKCRwb3MgPSBzdHJwb3MoJGRhdGEsICJceDNGXHgwMFx4MDBceDAwXHgzRVx4MDBceDAwXHgwMCIpKQoJCQl7CgkJCQkkcGFyc2VyID0gbmV3IFNpbXBsZVBpZV9YTUxfRGVjbGFyYXRpb25fUGFyc2VyKFNpbXBsZVBpZV9NaXNjOjpjaGFuZ2VfZW5jb2Rpbmcoc3Vic3RyKCRkYXRhLCAyMCwgJHBvcyAtIDIwKSwgJ1VURi0zMkxFJywgJ1VURi04JykpOwoJCQkJaWYgKCRwYXJzZXItPnBhcnNlKCkpCgkJCQl7CgkJCQkJJGVuY29kaW5nW10gPSAkcGFyc2VyLT5lbmNvZGluZzsKCQkJCX0KCQkJfQoJCQkkZW5jb2RpbmdbXSA9ICdVVEYtMzJMRSc7CgkJfQoJCS8vIFVURi0xNiBCaWcgRW5kaWFuIFdpdGhvdXQgQk9NCgkJZWxzZWlmIChzdWJzdHIoJGRhdGEsIDAsIDEwKSA9PT0gIlx4MDBceDNDXHgwMFx4M0ZceDAwXHg3OFx4MDBceDZEXHgwMFx4NkMiKQoJCXsKCQkJaWYgKCRwb3MgPSBzdHJwb3MoJGRhdGEsICJceDAwXHgzRlx4MDBceDNFIikpCgkJCXsKCQkJCSRwYXJzZXIgPSBuZXcgU2ltcGxlUGllX1hNTF9EZWNsYXJhdGlvbl9QYXJzZXIoU2ltcGxlUGllX01pc2M6OmNoYW5nZV9lbmNvZGluZyhzdWJzdHIoJGRhdGEsIDIwLCAkcG9zIC0gMTApLCAnVVRGLTE2QkUnLCAnVVRGLTgnKSk7CgkJCQlpZiAoJHBhcnNlci0+cGFyc2UoKSkKCQkJCXsKCQkJCQkkZW5jb2RpbmdbXSA9ICRwYXJzZXItPmVuY29kaW5nOwoJCQkJfQoJCQl9CgkJCSRlbmNvZGluZ1tdID0gJ1VURi0xNkJFJzsKCQl9CgkJLy8gVVRGLTE2IExpdHRsZSBFbmRpYW4gV2l0aG91dCBCT00KCQllbHNlaWYgKHN1YnN0cigkZGF0YSwgMCwgMTApID09PSAiXHgzQ1x4MDBceDNGXHgwMFx4NzhceDAwXHg2RFx4MDBceDZDXHgwMCIpCgkJewoJCQlpZiAoJHBvcyA9IHN0cnBvcygkZGF0YSwgIlx4M0ZceDAwXHgzRVx4MDAiKSkKCQkJewoJCQkJJHBhcnNlciA9IG5ldyBTaW1wbGVQaWVfWE1MX0RlY2xhcmF0aW9uX1BhcnNlcihTaW1wbGVQaWVfTWlzYzo6Y2hhbmdlX2VuY29kaW5nKHN1YnN0cigkZGF0YSwgMjAsICRwb3MgLSAxMCksICdVVEYtMTZMRScsICdVVEYtOCcpKTsKCQkJCWlmICgkcGFyc2VyLT5wYXJzZSgpKQoJCQkJewoJCQkJCSRlbmNvZGluZ1tdID0gJHBhcnNlci0+ZW5jb2Rpbmc7CgkJCQl9CgkJCX0KCQkJJGVuY29kaW5nW10gPSAnVVRGLTE2TEUnOwoJCX0KCQkvLyBVUy1BU0NJSSAob3Igc3VwZXJzZXQpCgkJZWxzZWlmIChzdWJzdHIoJGRhdGEsIDAsIDUpID09PSAiXHgzQ1x4M0ZceDc4XHg2RFx4NkMiKQoJCXsKCQkJaWYgKCRwb3MgPSBzdHJwb3MoJGRhdGEsICJceDNGXHgzRSIpKQoJCQl7CgkJCQkkcGFyc2VyID0gbmV3IFNpbXBsZVBpZV9YTUxfRGVjbGFyYXRpb25fUGFyc2VyKHN1YnN0cigkZGF0YSwgNSwgJHBvcyAtIDUpKTsKCQkJCWlmICgkcGFyc2VyLT5wYXJzZSgpKQoJCQkJewoJCQkJCSRlbmNvZGluZ1tdID0gJHBhcnNlci0+ZW5jb2Rpbmc7CgkJCQl9CgkJCX0KCQkJJGVuY29kaW5nW10gPSAnVVRGLTgnOwoJCX0KCQkvLyBGYWxsYmFjayB0byBVVEYtOAoJCWVsc2UKCQl7CgkJCSRlbmNvZGluZ1tdID0gJ1VURi04JzsKCQl9CgkJcmV0dXJuICRlbmNvZGluZzsKCX0KfQoKLyoqCiAqIERlY29kZSBIVE1MIEVudGl0aWVzCiAqCiAqIFRoaXMgaW1wbGVtZW50cyBIVE1MNSBhcyBvZiByZXZpc2lvbiA5NjcgKDIwMDctMDYtMjgpCiAqCiAqIEBwYWNrYWdlIFNpbXBsZVBpZQogKi8KY2xhc3MgU2ltcGxlUGllX0RlY29kZV9IVE1MX0VudGl0aWVzCnsKCS8qKgoJICogRGF0YSB0byBiZSBwYXJzZWQKCSAqCgkgKiBAYWNjZXNzIHByaXZhdGUKCSAqIEB2YXIgc3RyaW5nCgkgKi8KCXZhciAkZGF0YSA9ICcnOwoKCS8qKgoJICogQ3VycmVudGx5IGNvbnN1bWVkIGJ5dGVzCgkgKgoJICogQGFjY2VzcyBwcml2YXRlCgkgKiBAdmFyIHN0cmluZwoJICovCgl2YXIgJGNvbnN1bWVkID0gJyc7CgoJLyoqCgkgKiBQb3NpdGlvbiBvZiB0aGUgY3VycmVudCBieXRlIGJlaW5nIHBhcnNlZAoJICoKCSAqIEBhY2Nlc3MgcHJpdmF0ZQoJICogQHZhciBpbnQKCSAqLwoJdmFyICRwb3NpdGlvbiA9IDA7CgoJLyoqCgkgKiBDcmVhdGUgYW4gaW5zdGFuY2Ugb2YgdGhlIGNsYXNzIHdpdGggdGhlIGlucHV0IGRhdGEKCSAqCgkgKiBAYWNjZXNzIHB1YmxpYwoJICogQHBhcmFtIHN0cmluZyAkZGF0YSBJbnB1dCBkYXRhCgkgKi8KCWZ1bmN0aW9uIFNpbXBsZVBpZV9EZWNvZGVfSFRNTF9FbnRpdGllcygkZGF0YSkKCXsKCQkkdGhpcy0+ZGF0YSA9ICRkYXRhOwoJfQoKCS8qKgoJICogUGFyc2UgdGhlIGlucHV0IGRhdGEKCSAqCgkgKiBAYWNjZXNzIHB1YmxpYwoJICogQHJldHVybiBzdHJpbmcgT3V0cHV0IGRhdGEKCSAqLwoJZnVuY3Rpb24gcGFyc2UoKQoJewoJCXdoaWxlICgoJHRoaXMtPnBvc2l0aW9uID0gc3RycG9zKCR0aGlzLT5kYXRhLCAnJicsICR0aGlzLT5wb3NpdGlvbikpICE9PSBmYWxzZSkKCQl7CgkJCSR0aGlzLT5jb25zdW1lKCk7CgkJCSR0aGlzLT5lbnRpdHkoKTsKCQkJJHRoaXMtPmNvbnN1bWVkID0gJyc7CgkJfQoJCXJldHVybiAkdGhpcy0+ZGF0YTsKCX0KCgkvKioKCSAqIENvbnN1bWUgdGhlIG5leHQgYnl0ZQoJICoKCSAqIEBhY2Nlc3MgcHJpdmF0ZQoJICogQHJldHVybiBtaXhlZCBUaGUgbmV4dCBieXRlLCBvciBmYWxzZSwgaWYgdGhlcmUgaXMgbm8gbW9yZSBkYXRhCgkgKi8KCWZ1bmN0aW9uIGNvbnN1bWUoKQoJewoJCWlmIChpc3NldCgkdGhpcy0+ZGF0YVskdGhpcy0+cG9zaXRpb25dKSkKCQl7CgkJCSR0aGlzLT5jb25zdW1lZCAuPSAkdGhpcy0+ZGF0YVskdGhpcy0+cG9zaXRpb25dOwoJCQlyZXR1cm4gJHRoaXMtPmRhdGFbJHRoaXMtPnBvc2l0aW9uKytdOwoJCX0KCQllbHNlCgkJewoJCQkkdGhpcy0+Y29uc3VtZWQgPSBmYWxzZTsKCQkJcmV0dXJuIGZhbHNlOwoJCX0KCX0KCgkvKioKCSAqIENvbnN1bWUgYSByYW5nZSBvZiBjaGFyYWN0ZXJzCgkgKgoJICogQGFjY2VzcyBwcml2YXRlCgkgKiBAcGFyYW0gc3RyaW5nICRjaGFycyBDaGFyYWN0ZXJzIHRvIGNvbnN1bWUKCSAqIEByZXR1cm4gbWl4ZWQgQSBzZXJpZXMgb2YgY2hhcmFjdGVycyB0aGF0IG1hdGNoIHRoZSByYW5nZSwgb3IgZmFsc2UKCSAqLwoJZnVuY3Rpb24gY29uc3VtZV9yYW5nZSgkY2hhcnMpCgl7CgkJaWYgKCRsZW4gPSBzdHJzcG4oJHRoaXMtPmRhdGEsICRjaGFycywgJHRoaXMtPnBvc2l0aW9uKSkKCQl7CgkJCSRkYXRhID0gc3Vic3RyKCR0aGlzLT5kYXRhLCAkdGhpcy0+cG9zaXRpb24sICRsZW4pOwoJCQkkdGhpcy0+Y29uc3VtZWQgLj0gJGRhdGE7CgkJCSR0aGlzLT5wb3NpdGlvbiArPSAkbGVuOwoJCQlyZXR1cm4gJGRhdGE7CgkJfQoJCWVsc2UKCQl7CgkJCSR0aGlzLT5jb25zdW1lZCA9IGZhbHNlOwoJCQlyZXR1cm4gZmFsc2U7CgkJfQoJfQoKCS8qKgoJICogVW5jb25zdW1lIG9uZSBieXRlCgkgKgoJICogQGFjY2VzcyBwcml2YXRlCgkgKi8KCWZ1bmN0aW9uIHVuY29uc3VtZSgpCgl7CgkJJHRoaXMtPmNvbnN1bWVkID0gc3Vic3RyKCR0aGlzLT5jb25zdW1lZCwgMCwgLTEpOwoJCSR0aGlzLT5wb3NpdGlvbi0tOwoJfQoKCS8qKgoJICogRGVjb2RlIGFuIGVudGl0eQoJICoKCSAqIEBhY2Nlc3MgcHJpdmF0ZQoJICovCglmdW5jdGlvbiBlbnRpdHkoKQoJewoJCXN3aXRjaCAoJHRoaXMtPmNvbnN1bWUoKSkKCQl7CgkJCWNhc2UgIlx4MDkiOgoJCQljYXNlICJceDBBIjoKCQkJY2FzZSAiXHgwQiI6CgkJCWNhc2UgIlx4MEIiOgoJCQljYXNlICJceDBDIjoKCQkJY2FzZSAiXHgyMCI6CgkJCWNhc2UgIlx4M0MiOgoJCQljYXNlICJceDI2IjoKCQkJY2FzZSBmYWxzZToKCQkJCWJyZWFrOwoKCQkJY2FzZSAiXHgyMyI6CgkJCQlzd2l0Y2ggKCR0aGlzLT5jb25zdW1lKCkpCgkJCQl7CgkJCQkJY2FzZSAiXHg3OCI6CgkJCQkJY2FzZSAiXHg1OCI6CgkJCQkJCSRyYW5nZSA9ICcwMTIzNDU2Nzg5QUJDREVGYWJjZGVmJzsKCQkJCQkJJGhleCA9IHRydWU7CgkJCQkJCWJyZWFrOwoKCQkJCQlkZWZhdWx0OgoJCQkJCQkkcmFuZ2UgPSAnMDEyMzQ1Njc4OSc7CgkJCQkJCSRoZXggPSBmYWxzZTsKCQkJCQkJJHRoaXMtPnVuY29uc3VtZSgpOwoJCQkJCQlicmVhazsKCQkJCX0KCgkJCQlpZiAoJGNvZGVwb2ludCA9ICR0aGlzLT5jb25zdW1lX3JhbmdlKCRyYW5nZSkpCgkJCQl7CgkJCQkJc3RhdGljICR3aW5kb3dzXzEyNTJfc3BlY2lhbHMgPSBhcnJheSgweDBEID0+ICJceDBBIiwgMHg4MCA9PiAiXHhFMlx4ODJceEFDIiwgMHg4MSA9PiAiXHhFRlx4QkZceEJEIiwgMHg4MiA9PiAiXHhFMlx4ODBceDlBIiwgMHg4MyA9PiAiXHhDNlx4OTIiLCAweDg0ID0+ICJceEUyXHg4MFx4OUUiLCAweDg1ID0+ICJceEUyXHg4MFx4QTYiLCAweDg2ID0+ICJceEUyXHg4MFx4QTAiLCAweDg3ID0+ICJceEUyXHg4MFx4QTEiLCAweDg4ID0+ICJceENCXHg4NiIsIDB4ODkgPT4gIlx4RTJceDgwXHhCMCIsIDB4OEEgPT4gIlx4QzVceEEwIiwgMHg4QiA9PiAiXHhFMlx4ODBceEI5IiwgMHg4QyA9PiAiXHhDNVx4OTIiLCAweDhEID0+ICJceEVGXHhCRlx4QkQiLCAweDhFID0+ICJceEM1XHhCRCIsIDB4OEYgPT4gIlx4RUZceEJGXHhCRCIsIDB4OTAgPT4gIlx4RUZceEJGXHhCRCIsIDB4OTEgPT4gIlx4RTJceDgwXHg5OCIsIDB4OTIgPT4gIlx4RTJceDgwXHg5OSIsIDB4OTMgPT4gIlx4RTJceDgwXHg5QyIsIDB4OTQgPT4gIlx4RTJceDgwXHg5RCIsIDB4OTUgPT4gIlx4RTJceDgwXHhBMiIsIDB4OTYgPT4gIlx4RTJceDgwXHg5MyIsIDB4OTcgPT4gIlx4RTJceDgwXHg5NCIsIDB4OTggPT4gIlx4Q0JceDlDIiwgMHg5OSA9PiAiXHhFMlx4ODRceEEyIiwgMHg5QSA9PiAiXHhDNVx4QTEiLCAweDlCID0+ICJceEUyXHg4MFx4QkEiLCAweDlDID0+ICJceEM1XHg5MyIsIDB4OUQgPT4gIlx4RUZceEJGXHhCRCIsIDB4OUUgPT4gIlx4QzVceEJFIiwgMHg5RiA9PiAiXHhDNVx4QjgiKTsKCgkJCQkJaWYgKCRoZXgpCgkJCQkJewoJCQkJCQkkY29kZXBvaW50ID0gaGV4ZGVjKCRjb2RlcG9pbnQpOwoJCQkJCX0KCQkJCQllbHNlCgkJCQkJewoJCQkJCQkkY29kZXBvaW50ID0gaW50dmFsKCRjb2RlcG9pbnQpOwoJCQkJCX0KCgkJCQkJaWYgKGlzc2V0KCR3aW5kb3dzXzEyNTJfc3BlY2lhbHNbJGNvZGVwb2ludF0pKQoJCQkJCXsKCQkJCQkJJHJlcGxhY2VtZW50ID0gJHdpbmRvd3NfMTI1Ml9zcGVjaWFsc1skY29kZXBvaW50XTsKCQkJCQl9CgkJCQkJZWxzZQoJCQkJCXsKCQkJCQkJJHJlcGxhY2VtZW50ID0gU2ltcGxlUGllX01pc2M6OmNvZGVwb2ludF90b191dGY4KCRjb2RlcG9pbnQpOwoJCQkJCX0KCgkJCQkJaWYgKCR0aGlzLT5jb25zdW1lKCkgIT0gJzsnKQoJCQkJCXsKCQkJCQkJJHRoaXMtPnVuY29uc3VtZSgpOwoJCQkJCX0KCgkJCQkJJGNvbnN1bWVkX2xlbmd0aCA9IHN0cmxlbigkdGhpcy0+Y29uc3VtZWQpOwoJCQkJCSR0aGlzLT5kYXRhID0gc3Vic3RyX3JlcGxhY2UoJHRoaXMtPmRhdGEsICRyZXBsYWNlbWVudCwgJHRoaXMtPnBvc2l0aW9uIC0gJGNvbnN1bWVkX2xlbmd0aCwgJGNvbnN1bWVkX2xlbmd0aCk7CgkJCQkJJHRoaXMtPnBvc2l0aW9uICs9IHN0cmxlbigkcmVwbGFjZW1lbnQpIC0gJGNvbnN1bWVkX2xlbmd0aDsKCQkJCX0KCQkJCWJyZWFrOwoKCQkJZGVmYXVsdDoKCQkJCXN0YXRpYyAkZW50aXRpZXMgPSBhcnJheSgnQWFjdXRlJyA9PiAiXHhDM1x4ODEiLCAnYWFjdXRlJyA9PiAiXHhDM1x4QTEiLCAnQWFjdXRlOycgPT4gIlx4QzNceDgxIiwgJ2FhY3V0ZTsnID0+ICJceEMzXHhBMSIsICdBY2lyYycgPT4gIlx4QzNceDgyIiwgJ2FjaXJjJyA9PiAiXHhDM1x4QTIiLCAnQWNpcmM7JyA9PiAiXHhDM1x4ODIiLCAnYWNpcmM7JyA9PiAiXHhDM1x4QTIiLCAnYWN1dGUnID0+ICJceEMyXHhCNCIsICdhY3V0ZTsnID0+ICJceEMyXHhCNCIsICdBRWxpZycgPT4gIlx4QzNceDg2IiwgJ2FlbGlnJyA9PiAiXHhDM1x4QTYiLCAnQUVsaWc7JyA9PiAiXHhDM1x4ODYiLCAnYWVsaWc7JyA9PiAiXHhDM1x4QTYiLCAnQWdyYXZlJyA9PiAiXHhDM1x4ODAiLCAnYWdyYXZlJyA9PiAiXHhDM1x4QTAiLCAnQWdyYXZlOycgPT4gIlx4QzNceDgwIiwgJ2FncmF2ZTsnID0+ICJceEMzXHhBMCIsICdhbGVmc3ltOycgPT4gIlx4RTJceDg0XHhCNSIsICdBbHBoYTsnID0+ICJceENFXHg5MSIsICdhbHBoYTsnID0+ICJceENFXHhCMSIsICdBTVAnID0+ICJceDI2IiwgJ2FtcCcgPT4gIlx4MjYiLCAnQU1QOycgPT4gIlx4MjYiLCAnYW1wOycgPT4gIlx4MjYiLCAnYW5kOycgPT4gIlx4RTJceDg4XHhBNyIsICdhbmc7JyA9PiAiXHhFMlx4ODhceEEwIiwgJ2Fwb3M7JyA9PiAiXHgyNyIsICdBcmluZycgPT4gIlx4QzNceDg1IiwgJ2FyaW5nJyA9PiAiXHhDM1x4QTUiLCAnQXJpbmc7JyA9PiAiXHhDM1x4ODUiLCAnYXJpbmc7JyA9PiAiXHhDM1x4QTUiLCAnYXN5bXA7JyA9PiAiXHhFMlx4ODlceDg4IiwgJ0F0aWxkZScgPT4gIlx4QzNceDgzIiwgJ2F0aWxkZScgPT4gIlx4QzNceEEzIiwgJ0F0aWxkZTsnID0+ICJceEMzXHg4MyIsICdhdGlsZGU7JyA9PiAiXHhDM1x4QTMiLCAnQXVtbCcgPT4gIlx4QzNceDg0IiwgJ2F1bWwnID0+ICJceEMzXHhBNCIsICdBdW1sOycgPT4gIlx4QzNceDg0IiwgJ2F1bWw7JyA9PiAiXHhDM1x4QTQiLCAnYmRxdW87JyA9PiAiXHhFMlx4ODBceDlFIiwgJ0JldGE7JyA9PiAiXHhDRVx4OTIiLCAnYmV0YTsnID0+ICJceENFXHhCMiIsICdicnZiYXInID0+ICJceEMyXHhBNiIsICdicnZiYXI7JyA9PiAiXHhDMlx4QTYiLCAnYnVsbDsnID0+ICJceEUyXHg4MFx4QTIiLCAnY2FwOycgPT4gIlx4RTJceDg4XHhBOSIsICdDY2VkaWwnID0+ICJceEMzXHg4NyIsICdjY2VkaWwnID0+ICJceEMzXHhBNyIsICdDY2VkaWw7JyA9PiAiXHhDM1x4ODciLCAnY2NlZGlsOycgPT4gIlx4QzNceEE3IiwgJ2NlZGlsJyA9PiAiXHhDMlx4QjgiLCAnY2VkaWw7JyA9PiAiXHhDMlx4QjgiLCAnY2VudCcgPT4gIlx4QzJceEEyIiwgJ2NlbnQ7JyA9PiAiXHhDMlx4QTIiLCAnQ2hpOycgPT4gIlx4Q0VceEE3IiwgJ2NoaTsnID0+ICJceENGXHg4NyIsICdjaXJjOycgPT4gIlx4Q0JceDg2IiwgJ2NsdWJzOycgPT4gIlx4RTJceDk5XHhBMyIsICdjb25nOycgPT4gIlx4RTJceDg5XHg4NSIsICdDT1BZJyA9PiAiXHhDMlx4QTkiLCAnY29weScgPT4gIlx4QzJceEE5IiwgJ0NPUFk7JyA9PiAiXHhDMlx4QTkiLCAnY29weTsnID0+ICJceEMyXHhBOSIsICdjcmFycjsnID0+ICJceEUyXHg4Nlx4QjUiLCAnY3VwOycgPT4gIlx4RTJceDg4XHhBQSIsICdjdXJyZW4nID0+ICJceEMyXHhBNCIsICdjdXJyZW47JyA9PiAiXHhDMlx4QTQiLCAnRGFnZ2VyOycgPT4gIlx4RTJceDgwXHhBMSIsICdkYWdnZXI7JyA9PiAiXHhFMlx4ODBceEEwIiwgJ2RBcnI7JyA9PiAiXHhFMlx4ODdceDkzIiwgJ2RhcnI7JyA9PiAiXHhFMlx4ODZceDkzIiwgJ2RlZycgPT4gIlx4QzJceEIwIiwgJ2RlZzsnID0+ICJceEMyXHhCMCIsICdEZWx0YTsnID0+ICJceENFXHg5NCIsICdkZWx0YTsnID0+ICJceENFXHhCNCIsICdkaWFtczsnID0+ICJceEUyXHg5OVx4QTYiLCAnZGl2aWRlJyA9PiAiXHhDM1x4QjciLCAnZGl2aWRlOycgPT4gIlx4QzNceEI3IiwgJ0VhY3V0ZScgPT4gIlx4QzNceDg5IiwgJ2VhY3V0ZScgPT4gIlx4QzNceEE5IiwgJ0VhY3V0ZTsnID0+ICJceEMzXHg4OSIsICdlYWN1dGU7JyA9PiAiXHhDM1x4QTkiLCAnRWNpcmMnID0+ICJceEMzXHg4QSIsICdlY2lyYycgPT4gIlx4QzNceEFBIiwgJ0VjaXJjOycgPT4gIlx4QzNceDhBIiwgJ2VjaXJjOycgPT4gIlx4QzNceEFBIiwgJ0VncmF2ZScgPT4gIlx4QzNceDg4IiwgJ2VncmF2ZScgPT4gIlx4QzNceEE4IiwgJ0VncmF2ZTsnID0+ICJceEMzXHg4OCIsICdlZ3JhdmU7JyA9PiAiXHhDM1x4QTgiLCAnZW1wdHk7JyA9PiAiXHhFMlx4ODhceDg1IiwgJ2Vtc3A7JyA9PiAiXHhFMlx4ODBceDgzIiwgJ2Vuc3A7JyA9PiAiXHhFMlx4ODBceDgyIiwgJ0Vwc2lsb247JyA9PiAiXHhDRVx4OTUiLCAnZXBzaWxvbjsnID0+ICJceENFXHhCNSIsICdlcXVpdjsnID0+ICJceEUyXHg4OVx4QTEiLCAnRXRhOycgPT4gIlx4Q0VceDk3IiwgJ2V0YTsnID0+ICJceENFXHhCNyIsICdFVEgnID0+ICJceEMzXHg5MCIsICdldGgnID0+ICJceEMzXHhCMCIsICdFVEg7JyA9PiAiXHhDM1x4OTAiLCAnZXRoOycgPT4gIlx4QzNceEIwIiwgJ0V1bWwnID0+ICJceEMzXHg4QiIsICdldW1sJyA9PiAiXHhDM1x4QUIiLCAnRXVtbDsnID0+ICJceEMzXHg4QiIsICdldW1sOycgPT4gIlx4QzNceEFCIiwgJ2V1cm87JyA9PiAiXHhFMlx4ODJceEFDIiwgJ2V4aXN0OycgPT4gIlx4RTJceDg4XHg4MyIsICdmbm9mOycgPT4gIlx4QzZceDkyIiwgJ2ZvcmFsbDsnID0+ICJceEUyXHg4OFx4ODAiLCAnZnJhYzEyJyA9PiAiXHhDMlx4QkQiLCAnZnJhYzEyOycgPT4gIlx4QzJceEJEIiwgJ2ZyYWMxNCcgPT4gIlx4QzJceEJDIiwgJ2ZyYWMxNDsnID0+ICJceEMyXHhCQyIsICdmcmFjMzQnID0+ICJceEMyXHhCRSIsICdmcmFjMzQ7JyA9PiAiXHhDMlx4QkUiLCAnZnJhc2w7JyA9PiAiXHhFMlx4ODFceDg0IiwgJ0dhbW1hOycgPT4gIlx4Q0VceDkzIiwgJ2dhbW1hOycgPT4gIlx4Q0VceEIzIiwgJ2dlOycgPT4gIlx4RTJceDg5XHhBNSIsICdHVCcgPT4gIlx4M0UiLCAnZ3QnID0+ICJceDNFIiwgJ0dUOycgPT4gIlx4M0UiLCAnZ3Q7JyA9PiAiXHgzRSIsICdoQXJyOycgPT4gIlx4RTJceDg3XHg5NCIsICdoYXJyOycgPT4gIlx4RTJceDg2XHg5NCIsICdoZWFydHM7JyA9PiAiXHhFMlx4OTlceEE1IiwgJ2hlbGxpcDsnID0+ICJceEUyXHg4MFx4QTYiLCAnSWFjdXRlJyA9PiAiXHhDM1x4OEQiLCAnaWFjdXRlJyA9PiAiXHhDM1x4QUQiLCAnSWFjdXRlOycgPT4gIlx4QzNceDhEIiwgJ2lhY3V0ZTsnID0+ICJceEMzXHhBRCIsICdJY2lyYycgPT4gIlx4QzNceDhFIiwgJ2ljaXJjJyA9PiAiXHhDM1x4QUUiLCAnSWNpcmM7JyA9PiAiXHhDM1x4OEUiLCAnaWNpcmM7JyA9PiAiXHhDM1x4QUUiLCAnaWV4Y2wnID0+ICJceEMyXHhBMSIsICdpZXhjbDsnID0+ICJceEMyXHhBMSIsICdJZ3JhdmUnID0+ICJceEMzXHg4QyIsICdpZ3JhdmUnID0+ICJceEMzXHhBQyIsICdJZ3JhdmU7JyA9PiAiXHhDM1x4OEMiLCAnaWdyYXZlOycgPT4gIlx4QzNceEFDIiwgJ2ltYWdlOycgPT4gIlx4RTJceDg0XHg5MSIsICdpbmZpbjsnID0+ICJceEUyXHg4OFx4OUUiLCAnaW50OycgPT4gIlx4RTJceDg4XHhBQiIsICdJb3RhOycgPT4gIlx4Q0VceDk5IiwgJ2lvdGE7JyA9PiAiXHhDRVx4QjkiLCAnaXF1ZXN0JyA9PiAiXHhDMlx4QkYiLCAnaXF1ZXN0OycgPT4gIlx4QzJceEJGIiwgJ2lzaW47JyA9PiAiXHhFMlx4ODhceDg4IiwgJ0l1bWwnID0+ICJceEMzXHg4RiIsICdpdW1sJyA9PiAiXHhDM1x4QUYiLCAnSXVtbDsnID0+ICJceEMzXHg4RiIsICdpdW1sOycgPT4gIlx4QzNceEFGIiwgJ0thcHBhOycgPT4gIlx4Q0VceDlBIiwgJ2thcHBhOycgPT4gIlx4Q0VceEJBIiwgJ0xhbWJkYTsnID0+ICJceENFXHg5QiIsICdsYW1iZGE7JyA9PiAiXHhDRVx4QkIiLCAnbGFuZzsnID0+ICJceEUzXHg4MFx4ODgiLCAnbGFxdW8nID0+ICJceEMyXHhBQiIsICdsYXF1bzsnID0+ICJceEMyXHhBQiIsICdsQXJyOycgPT4gIlx4RTJceDg3XHg5MCIsICdsYXJyOycgPT4gIlx4RTJceDg2XHg5MCIsICdsY2VpbDsnID0+ICJceEUyXHg4Q1x4ODgiLCAnbGRxdW87JyA9PiAiXHhFMlx4ODBceDlDIiwgJ2xlOycgPT4gIlx4RTJceDg5XHhBNCIsICdsZmxvb3I7JyA9PiAiXHhFMlx4OENceDhBIiwgJ2xvd2FzdDsnID0+ICJceEUyXHg4OFx4OTciLCAnbG96OycgPT4gIlx4RTJceDk3XHg4QSIsICdscm07JyA9PiAiXHhFMlx4ODBceDhFIiwgJ2xzYXF1bzsnID0+ICJceEUyXHg4MFx4QjkiLCAnbHNxdW87JyA9PiAiXHhFMlx4ODBceDk4IiwgJ0xUJyA9PiAiXHgzQyIsICdsdCcgPT4gIlx4M0MiLCAnTFQ7JyA9PiAiXHgzQyIsICdsdDsnID0+ICJceDNDIiwgJ21hY3InID0+ICJceEMyXHhBRiIsICdtYWNyOycgPT4gIlx4QzJceEFGIiwgJ21kYXNoOycgPT4gIlx4RTJceDgwXHg5NCIsICdtaWNybycgPT4gIlx4QzJceEI1IiwgJ21pY3JvOycgPT4gIlx4QzJceEI1IiwgJ21pZGRvdCcgPT4gIlx4QzJceEI3IiwgJ21pZGRvdDsnID0+ICJceEMyXHhCNyIsICdtaW51czsnID0+ICJceEUyXHg4OFx4OTIiLCAnTXU7JyA9PiAiXHhDRVx4OUMiLCAnbXU7JyA9PiAiXHhDRVx4QkMiLCAnbmFibGE7JyA9PiAiXHhFMlx4ODhceDg3IiwgJ25ic3AnID0+ICJceEMyXHhBMCIsICduYnNwOycgPT4gIlx4QzJceEEwIiwgJ25kYXNoOycgPT4gIlx4RTJceDgwXHg5MyIsICduZTsnID0+ICJceEUyXHg4OVx4QTAiLCAnbmk7JyA9PiAiXHhFMlx4ODhceDhCIiwgJ25vdCcgPT4gIlx4QzJceEFDIiwgJ25vdDsnID0+ICJceEMyXHhBQyIsICdub3RpbjsnID0+ICJceEUyXHg4OFx4ODkiLCAnbnN1YjsnID0+ICJceEUyXHg4QVx4ODQiLCAnTnRpbGRlJyA9PiAiXHhDM1x4OTEiLCAnbnRpbGRlJyA9PiAiXHhDM1x4QjEiLCAnTnRpbGRlOycgPT4gIlx4QzNceDkxIiwgJ250aWxkZTsnID0+ICJceEMzXHhCMSIsICdOdTsnID0+ICJceENFXHg5RCIsICdudTsnID0+ICJceENFXHhCRCIsICdPYWN1dGUnID0+ICJceEMzXHg5MyIsICdvYWN1dGUnID0+ICJceEMzXHhCMyIsICdPYWN1dGU7JyA9PiAiXHhDM1x4OTMiLCAnb2FjdXRlOycgPT4gIlx4QzNceEIzIiwgJ09jaXJjJyA9PiAiXHhDM1x4OTQiLCAnb2NpcmMnID0+ICJceEMzXHhCNCIsICdPY2lyYzsnID0+ICJceEMzXHg5NCIsICdvY2lyYzsnID0+ICJceEMzXHhCNCIsICdPRWxpZzsnID0+ICJceEM1XHg5MiIsICdvZWxpZzsnID0+ICJceEM1XHg5MyIsICdPZ3JhdmUnID0+ICJceEMzXHg5MiIsICdvZ3JhdmUnID0+ICJceEMzXHhCMiIsICdPZ3JhdmU7JyA9PiAiXHhDM1x4OTIiLCAnb2dyYXZlOycgPT4gIlx4QzNceEIyIiwgJ29saW5lOycgPT4gIlx4RTJceDgwXHhCRSIsICdPbWVnYTsnID0+ICJceENFXHhBOSIsICdvbWVnYTsnID0+ICJceENGXHg4OSIsICdPbWljcm9uOycgPT4gIlx4Q0VceDlGIiwgJ29taWNyb247JyA9PiAiXHhDRVx4QkYiLCAnb3BsdXM7JyA9PiAiXHhFMlx4OEFceDk1IiwgJ29yOycgPT4gIlx4RTJceDg4XHhBOCIsICdvcmRmJyA9PiAiXHhDMlx4QUEiLCAnb3JkZjsnID0+ICJceEMyXHhBQSIsICdvcmRtJyA9PiAiXHhDMlx4QkEiLCAnb3JkbTsnID0+ICJceEMyXHhCQSIsICdPc2xhc2gnID0+ICJceEMzXHg5OCIsICdvc2xhc2gnID0+ICJceEMzXHhCOCIsICdPc2xhc2g7JyA9PiAiXHhDM1x4OTgiLCAnb3NsYXNoOycgPT4gIlx4QzNceEI4IiwgJ090aWxkZScgPT4gIlx4QzNceDk1IiwgJ290aWxkZScgPT4gIlx4QzNceEI1IiwgJ090aWxkZTsnID0+ICJceEMzXHg5NSIsICdvdGlsZGU7JyA9PiAiXHhDM1x4QjUiLCAnb3RpbWVzOycgPT4gIlx4RTJceDhBXHg5NyIsICdPdW1sJyA9PiAiXHhDM1x4OTYiLCAnb3VtbCcgPT4gIlx4QzNceEI2IiwgJ091bWw7JyA9PiAiXHhDM1x4OTYiLCAnb3VtbDsnID0+ICJceEMzXHhCNiIsICdwYXJhJyA9PiAiXHhDMlx4QjYiLCAncGFyYTsnID0+ICJceEMyXHhCNiIsICdwYXJ0OycgPT4gIlx4RTJceDg4XHg4MiIsICdwZXJtaWw7JyA9PiAiXHhFMlx4ODBceEIwIiwgJ3BlcnA7JyA9PiAiXHhFMlx4OEFceEE1IiwgJ1BoaTsnID0+ICJceENFXHhBNiIsICdwaGk7JyA9PiAiXHhDRlx4ODYiLCAnUGk7JyA9PiAiXHhDRVx4QTAiLCAncGk7JyA9PiAiXHhDRlx4ODAiLCAncGl2OycgPT4gIlx4Q0ZceDk2IiwgJ3BsdXNtbicgPT4gIlx4QzJceEIxIiwgJ3BsdXNtbjsnID0+ICJceEMyXHhCMSIsICdwb3VuZCcgPT4gIlx4QzJceEEzIiwgJ3BvdW5kOycgPT4gIlx4QzJceEEzIiwgJ1ByaW1lOycgPT4gIlx4RTJceDgwXHhCMyIsICdwcmltZTsnID0+ICJceEUyXHg4MFx4QjIiLCAncHJvZDsnID0+ICJceEUyXHg4OFx4OEYiLCAncHJvcDsnID0+ICJceEUyXHg4OFx4OUQiLCAnUHNpOycgPT4gIlx4Q0VceEE4IiwgJ3BzaTsnID0+ICJceENGXHg4OCIsICdRVU9UJyA9PiAiXHgyMiIsICdxdW90JyA9PiAiXHgyMiIsICdRVU9UOycgPT4gIlx4MjIiLCAncXVvdDsnID0+ICJceDIyIiwgJ3JhZGljOycgPT4gIlx4RTJceDg4XHg5QSIsICdyYW5nOycgPT4gIlx4RTNceDgwXHg4OSIsICdyYXF1bycgPT4gIlx4QzJceEJCIiwgJ3JhcXVvOycgPT4gIlx4QzJceEJCIiwgJ3JBcnI7JyA9PiAiXHhFMlx4ODdceDkyIiwgJ3JhcnI7JyA9PiAiXHhFMlx4ODZceDkyIiwgJ3JjZWlsOycgPT4gIlx4RTJceDhDXHg4OSIsICdyZHF1bzsnID0+ICJceEUyXHg4MFx4OUQiLCAncmVhbDsnID0+ICJceEUyXHg4NFx4OUMiLCAnUkVHJyA9PiAiXHhDMlx4QUUiLCAncmVnJyA9PiAiXHhDMlx4QUUiLCAnUkVHOycgPT4gIlx4QzJceEFFIiwgJ3JlZzsnID0+ICJceEMyXHhBRSIsICdyZmxvb3I7JyA9PiAiXHhFMlx4OENceDhCIiwgJ1JobzsnID0+ICJceENFXHhBMSIsICdyaG87JyA9PiAiXHhDRlx4ODEiLCAncmxtOycgPT4gIlx4RTJceDgwXHg4RiIsICdyc2FxdW87JyA9PiAiXHhFMlx4ODBceEJBIiwgJ3JzcXVvOycgPT4gIlx4RTJceDgwXHg5OSIsICdzYnF1bzsnID0+ICJceEUyXHg4MFx4OUEiLCAnU2Nhcm9uOycgPT4gIlx4QzVceEEwIiwgJ3NjYXJvbjsnID0+ICJceEM1XHhBMSIsICdzZG90OycgPT4gIlx4RTJceDhCXHg4NSIsICdzZWN0JyA9PiAiXHhDMlx4QTciLCAnc2VjdDsnID0+ICJceEMyXHhBNyIsICdzaHknID0+ICJceEMyXHhBRCIsICdzaHk7JyA9PiAiXHhDMlx4QUQiLCAnU2lnbWE7JyA9PiAiXHhDRVx4QTMiLCAnc2lnbWE7JyA9PiAiXHhDRlx4ODMiLCAnc2lnbWFmOycgPT4gIlx4Q0ZceDgyIiwgJ3NpbTsnID0+ICJceEUyXHg4OFx4QkMiLCAnc3BhZGVzOycgPT4gIlx4RTJceDk5XHhBMCIsICdzdWI7JyA9PiAiXHhFMlx4OEFceDgyIiwgJ3N1YmU7JyA9PiAiXHhFMlx4OEFceDg2IiwgJ3N1bTsnID0+ICJceEUyXHg4OFx4OTEiLCAnc3VwOycgPT4gIlx4RTJceDhBXHg4MyIsICdzdXAxJyA9PiAiXHhDMlx4QjkiLCAnc3VwMTsnID0+ICJceEMyXHhCOSIsICdzdXAyJyA9PiAiXHhDMlx4QjIiLCAnc3VwMjsnID0+ICJceEMyXHhCMiIsICdzdXAzJyA9PiAiXHhDMlx4QjMiLCAnc3VwMzsnID0+ICJceEMyXHhCMyIsICdzdXBlOycgPT4gIlx4RTJceDhBXHg4NyIsICdzemxpZycgPT4gIlx4QzNceDlGIiwgJ3N6bGlnOycgPT4gIlx4QzNceDlGIiwgJ1RhdTsnID0+ICJceENFXHhBNCIsICd0YXU7JyA9PiAiXHhDRlx4ODQiLCAndGhlcmU0OycgPT4gIlx4RTJceDg4XHhCNCIsICdUaGV0YTsnID0+ICJceENFXHg5OCIsICd0aGV0YTsnID0+ICJceENFXHhCOCIsICd0aGV0YXN5bTsnID0+ICJceENGXHg5MSIsICd0aGluc3A7JyA9PiAiXHhFMlx4ODBceDg5IiwgJ1RIT1JOJyA9PiAiXHhDM1x4OUUiLCAndGhvcm4nID0+ICJceEMzXHhCRSIsICdUSE9STjsnID0+ICJceEMzXHg5RSIsICd0aG9ybjsnID0+ICJceEMzXHhCRSIsICd0aWxkZTsnID0+ICJceENCXHg5QyIsICd0aW1lcycgPT4gIlx4QzNceDk3IiwgJ3RpbWVzOycgPT4gIlx4QzNceDk3IiwgJ1RSQURFOycgPT4gIlx4RTJceDg0XHhBMiIsICd0cmFkZTsnID0+ICJceEUyXHg4NFx4QTIiLCAnVWFjdXRlJyA9PiAiXHhDM1x4OUEiLCAndWFjdXRlJyA9PiAiXHhDM1x4QkEiLCAnVWFjdXRlOycgPT4gIlx4QzNceDlBIiwgJ3VhY3V0ZTsnID0+ICJceEMzXHhCQSIsICd1QXJyOycgPT4gIlx4RTJceDg3XHg5MSIsICd1YXJyOycgPT4gIlx4RTJceDg2XHg5MSIsICdVY2lyYycgPT4gIlx4QzNceDlCIiwgJ3VjaXJjJyA9PiAiXHhDM1x4QkIiLCAnVWNpcmM7JyA9PiAiXHhDM1x4OUIiLCAndWNpcmM7JyA9PiAiXHhDM1x4QkIiLCAnVWdyYXZlJyA9PiAiXHhDM1x4OTkiLCAndWdyYXZlJyA9PiAiXHhDM1x4QjkiLCAnVWdyYXZlOycgPT4gIlx4QzNceDk5IiwgJ3VncmF2ZTsnID0+ICJceEMzXHhCOSIsICd1bWwnID0+ICJceEMyXHhBOCIsICd1bWw7JyA9PiAiXHhDMlx4QTgiLCAndXBzaWg7JyA9PiAiXHhDRlx4OTIiLCAnVXBzaWxvbjsnID0+ICJceENFXHhBNSIsICd1cHNpbG9uOycgPT4gIlx4Q0ZceDg1IiwgJ1V1bWwnID0+ICJceEMzXHg5QyIsICd1dW1sJyA9PiAiXHhDM1x4QkMiLCAnVXVtbDsnID0+ICJceEMzXHg5QyIsICd1dW1sOycgPT4gIlx4QzNceEJDIiwgJ3dlaWVycDsnID0+ICJceEUyXHg4NFx4OTgiLCAnWGk7JyA9PiAiXHhDRVx4OUUiLCAneGk7JyA9PiAiXHhDRVx4QkUiLCAnWWFjdXRlJyA9PiAiXHhDM1x4OUQiLCAneWFjdXRlJyA9PiAiXHhDM1x4QkQiLCAnWWFjdXRlOycgPT4gIlx4QzNceDlEIiwgJ3lhY3V0ZTsnID0+ICJceEMzXHhCRCIsICd5ZW4nID0+ICJceEMyXHhBNSIsICd5ZW47JyA9PiAiXHhDMlx4QTUiLCAneXVtbCcgPT4gIlx4QzNceEJGIiwgJ1l1bWw7JyA9PiAiXHhDNVx4QjgiLCAneXVtbDsnID0+ICJceEMzXHhCRiIsICdaZXRhOycgPT4gIlx4Q0VceDk2IiwgJ3pldGE7JyA9PiAiXHhDRVx4QjYiLCAnendqOycgPT4gIlx4RTJceDgwXHg4RCIsICd6d25qOycgPT4gIlx4RTJceDgwXHg4QyIpOwoKCQkJCWZvciAoJGkgPSAwLCAkbWF0Y2ggPSBudWxsOyAkaSA8IDkgJiYgJHRoaXMtPmNvbnN1bWUoKSAhPT0gZmFsc2U7ICRpKyspCgkJCQl7CgkJCQkJJGNvbnN1bWVkID0gc3Vic3RyKCR0aGlzLT5jb25zdW1lZCwgMSk7CgkJCQkJaWYgKGlzc2V0KCRlbnRpdGllc1skY29uc3VtZWRdKSkKCQkJCQl7CgkJCQkJCSRtYXRjaCA9ICRjb25zdW1lZDsKCQkJCQl9CgkJCQl9CgoJCQkJaWYgKCRtYXRjaCAhPT0gbnVsbCkKCQkJCXsKIAkJCQkJJHRoaXMtPmRhdGEgPSBzdWJzdHJfcmVwbGFjZSgkdGhpcy0+ZGF0YSwgJGVudGl0aWVzWyRtYXRjaF0sICR0aGlzLT5wb3NpdGlvbiAtIHN0cmxlbigkY29uc3VtZWQpIC0gMSwgc3RybGVuKCRtYXRjaCkgKyAxKTsKCQkJCQkkdGhpcy0+cG9zaXRpb24gKz0gc3RybGVuKCRlbnRpdGllc1skbWF0Y2hdKSAtIHN0cmxlbigkY29uc3VtZWQpIC0gMTsKCQkJCX0KCQkJCWJyZWFrOwoJCX0KCX0KfQoKLyoqCiAqIERhdGUgUGFyc2VyCiAqCiAqIEBwYWNrYWdlIFNpbXBsZVBpZQogKi8KY2xhc3MgU2ltcGxlUGllX1BhcnNlX0RhdGUKewoJLyoqCgkgKiBJbnB1dCBkYXRhCgkgKgoJICogQGFjY2VzcyBwcm90ZWN0ZWQKCSAqIEB2YXIgc3RyaW5nCgkgKi8KCXZhciAkZGF0ZTsKCgkvKioKCSAqIExpc3Qgb2YgZGF5cywgY2FsZW5kYXIgZGF5IG5hbWUgPT4gb3JkaW5hbCBkYXkgbnVtYmVyIGluIHRoZSB3ZWVrCgkgKgoJICogQGFjY2VzcyBwcm90ZWN0ZWQKCSAqIEB2YXIgYXJyYXkKCSAqLwoJdmFyICRkYXkgPSBhcnJheSgKCQkvLyBFbmdsaXNoCgkJJ21vbicgPT4gMSwKCQknbW9uZGF5JyA9PiAxLAoJCSd0dWUnID0+IDIsCgkJJ3R1ZXNkYXknID0+IDIsCgkJJ3dlZCcgPT4gMywKCQknd2VkbmVzZGF5JyA9PiAzLAoJCSd0aHUnID0+IDQsCgkJJ3RodXJzZGF5JyA9PiA0LAoJCSdmcmknID0+IDUsCgkJJ2ZyaWRheScgPT4gNSwKCQknc2F0JyA9PiA2LAoJCSdzYXR1cmRheScgPT4gNiwKCQknc3VuJyA9PiA3LAoJCSdzdW5kYXknID0+IDcsCgkJLy8gRHV0Y2gKCQknbWFhbmRhZycgPT4gMSwKCQknZGluc2RhZycgPT4gMiwKCQknd29lbnNkYWcnID0+IDMsCgkJJ2RvbmRlcmRhZycgPT4gNCwKCQkndnJpamRhZycgPT4gNSwKCQknemF0ZXJkYWcnID0+IDYsCgkJJ3pvbmRhZycgPT4gNywKCQkvLyBGcmVuY2gKCQknbHVuZGknID0+IDEsCgkJJ21hcmRpJyA9PiAyLAoJCSdtZXJjcmVkaScgPT4gMywKCQknamV1ZGknID0+IDQsCgkJJ3ZlbmRyZWRpJyA9PiA1LAoJCSdzYW1lZGknID0+IDYsCgkJJ2RpbWFuY2hlJyA9PiA3LAoJCS8vIEdlcm1hbgoJCSdtb250YWcnID0+IDEsCgkJJ2RpZW5zdGFnJyA9PiAyLAoJCSdtaXR0d29jaCcgPT4gMywKCQknZG9ubmVyc3RhZycgPT4gNCwKCQknZnJlaXRhZycgPT4gNSwKCQknc2Ftc3RhZycgPT4gNiwKCQknc29ubmFiZW5kJyA9PiA2LAoJCSdzb25udGFnJyA9PiA3LAoJCS8vIEl0YWxpYW4KCQknbHVuZWTDrCcgPT4gMSwKCQknbWFydGVkw6wnID0+IDIsCgkJJ21lcmNvbGVkw6wnID0+IDMsCgkJJ2dpb3ZlZMOsJyA9PiA0LAoJCSd2ZW5lcmTDrCcgPT4gNSwKCQknc2FiYXRvJyA9PiA2LAoJCSdkb21lbmljYScgPT4gNywKCQkvLyBTcGFuaXNoCgkJJ2x1bmVzJyA9PiAxLAoJCSdtYXJ0ZXMnID0+IDIsCgkJJ21pw6lyY29sZXMnID0+IDMsCgkJJ2p1ZXZlcycgPT4gNCwKCQkndmllcm5lcycgPT4gNSwKCQknc8OhYmFkbycgPT4gNiwKCQknZG9taW5nbycgPT4gNywKCQkvLyBGaW5uaXNoCgkJJ21hYW5hbnRhaScgPT4gMSwKCQkndGlpc3RhaScgPT4gMiwKCQkna2Vza2l2aWlra28nID0+IDMsCgkJJ3RvcnN0YWknID0+IDQsCgkJJ3BlcmphbnRhaScgPT4gNSwKCQknbGF1YW50YWknID0+IDYsCgkJJ3N1bm51bnRhaScgPT4gNywKCQkvLyBIdW5nYXJpYW4KCQknaMOpdGbFkScgPT4gMSwKCQkna2VkZCcgPT4gMiwKCQknc3plcmRhJyA9PiAzLAoJCSdjc8O8dMO2cnRvaycgPT4gNCwKCQkncMOpbnRlaycgPT4gNSwKCQknc3pvbWJhdCcgPT4gNiwKCQkndmFzw6FybmFwJyA9PiA3LAoJCS8vIEdyZWVrCgkJJ86UzrXPhScgPT4gMSwKCQknzqTPgc65JyA9PiAyLAoJCSfOpM61z4QnID0+IDMsCgkJJ86gzrXOvCcgPT4gNCwKCQknzqDOsc+BJyA9PiA1LAoJCSfOo86xzrInID0+IDYsCgkJJ86az4XPgScgPT4gNywKCSk7CgoJLyoqCgkgKiBMaXN0IG9mIG1vbnRocywgY2FsZW5kYXIgbW9udGggbmFtZSA9PiBjYWxlbmRhciBtb250aCBudW1iZXIKCSAqCgkgKiBAYWNjZXNzIHByb3RlY3RlZAoJICogQHZhciBhcnJheQoJICovCgl2YXIgJG1vbnRoID0gYXJyYXkoCgkJLy8gRW5nbGlzaAoJCSdqYW4nID0+IDEsCgkJJ2phbnVhcnknID0+IDEsCgkJJ2ZlYicgPT4gMiwKCQknZmVicnVhcnknID0+IDIsCgkJJ21hcicgPT4gMywKCQknbWFyY2gnID0+IDMsCgkJJ2FwcicgPT4gNCwKCQknYXByaWwnID0+IDQsCgkJJ21heScgPT4gNSwKCQkvLyBObyBsb25nIGZvcm0gb2YgTWF5CgkJJ2p1bicgPT4gNiwKCQknanVuZScgPT4gNiwKCQknanVsJyA9PiA3LAoJCSdqdWx5JyA9PiA3LAoJCSdhdWcnID0+IDgsCgkJJ2F1Z3VzdCcgPT4gOCwKCQknc2VwJyA9PiA5LAoJCSdzZXB0ZW1iZXInID0+IDgsCgkJJ29jdCcgPT4gMTAsCgkJJ29jdG9iZXInID0+IDEwLAoJCSdub3YnID0+IDExLAoJCSdub3ZlbWJlcicgPT4gMTEsCgkJJ2RlYycgPT4gMTIsCgkJJ2RlY2VtYmVyJyA9PiAxMiwKCQkvLyBEdXRjaAoJCSdqYW51YXJpJyA9PiAxLAoJCSdmZWJydWFyaScgPT4gMiwKCQknbWFhcnQnID0+IDMsCgkJJ2FwcmlsJyA9PiA0LAoJCSdtZWknID0+IDUsCgkJJ2p1bmknID0+IDYsCgkJJ2p1bGknID0+IDcsCgkJJ2F1Z3VzdHVzJyA9PiA4LAoJCSdzZXB0ZW1iZXInID0+IDksCgkJJ29rdG9iZXInID0+IDEwLAoJCSdub3ZlbWJlcicgPT4gMTEsCgkJJ2RlY2VtYmVyJyA9PiAxMiwKCQkvLyBGcmVuY2gKCQknamFudmllcicgPT4gMSwKCQknZsOpdnJpZXInID0+IDIsCgkJJ21hcnMnID0+IDMsCgkJJ2F2cmlsJyA9PiA0LAoJCSdtYWknID0+IDUsCgkJJ2p1aW4nID0+IDYsCgkJJ2p1aWxsZXQnID0+IDcsCgkJJ2Fvw7t0JyA9PiA4LAoJCSdzZXB0ZW1icmUnID0+IDksCgkJJ29jdG9icmUnID0+IDEwLAoJCSdub3ZlbWJyZScgPT4gMTEsCgkJJ2TDqWNlbWJyZScgPT4gMTIsCgkJLy8gR2VybWFuCgkJJ2phbnVhcicgPT4gMSwKCQknZmVicnVhcicgPT4gMiwKCQknbcOkcnonID0+IDMsCgkJJ2FwcmlsJyA9PiA0LAoJCSdtYWknID0+IDUsCgkJJ2p1bmknID0+IDYsCgkJJ2p1bGknID0+IDcsCgkJJ2F1Z3VzdCcgPT4gOCwKCQknc2VwdGVtYmVyJyA9PiA5LAoJCSdva3RvYmVyJyA9PiAxMCwKCQknbm92ZW1iZXInID0+IDExLAoJCSdkZXplbWJlcicgPT4gMTIsCgkJLy8gSXRhbGlhbgoJCSdnZW5uYWlvJyA9PiAxLAoJCSdmZWJicmFpbycgPT4gMiwKCQknbWFyem8nID0+IDMsCgkJJ2FwcmlsZScgPT4gNCwKCQknbWFnZ2lvJyA9PiA1LAoJCSdnaXVnbm8nID0+IDYsCgkJJ2x1Z2xpbycgPT4gNywKCQknYWdvc3RvJyA9PiA4LAoJCSdzZXR0ZW1icmUnID0+IDksCgkJJ290dG9icmUnID0+IDEwLAoJCSdub3ZlbWJyZScgPT4gMTEsCgkJJ2RpY2VtYnJlJyA9PiAxMiwKCQkvLyBTcGFuaXNoCgkJJ2VuZXJvJyA9PiAxLAoJCSdmZWJyZXJvJyA9PiAyLAoJCSdtYXJ6bycgPT4gMywKCQknYWJyaWwnID0+IDQsCgkJJ21heW8nID0+IDUsCgkJJ2p1bmlvJyA9PiA2LAoJCSdqdWxpbycgPT4gNywKCQknYWdvc3RvJyA9PiA4LAoJCSdzZXB0aWVtYnJlJyA9PiA5LAoJCSdzZXRpZW1icmUnID0+IDksCgkJJ29jdHVicmUnID0+IDEwLAoJCSdub3ZpZW1icmUnID0+IDExLAoJCSdkaWNpZW1icmUnID0+IDEyLAoJCS8vIEZpbm5pc2gKCQkndGFtbWlrdXUnID0+IDEsCgkJJ2hlbG1pa3V1JyA9PiAyLAoJCSdtYWFsaXNrdXUnID0+IDMsCgkJJ2h1aHRpa3V1JyA9PiA0LAoJCSd0b3Vrb2t1dScgPT4gNSwKCQkna2Vzw6RrdXUnID0+IDYsCgkJJ2hlaW7DpGt1dScgPT4gNywKCQknZWxva3V1JyA9PiA4LAoJCSdzdXVza3V1JyA9PiA5LAoJCSdsb2tha3V1JyA9PiAxMCwKCQknbWFycmFzJyA9PiAxMSwKCQknam91bHVrdXUnID0+IDEyLAoJCS8vIEh1bmdhcmlhbgoJCSdqYW51w6FyJyA9PiAxLAoJCSdmZWJydcOhcicgPT4gMiwKCQknbcOhcmNpdXMnID0+IDMsCgkJJ8OhcHJpbGlzJyA9PiA0LAoJCSdtw6FqdXMnID0+IDUsCgkJJ2rDum5pdXMnID0+IDYsCgkJJ2rDumxpdXMnID0+IDcsCgkJJ2F1Z3VzenR1cycgPT4gOCwKCQknc3plcHRlbWJlcicgPT4gOSwKCQknb2t0w7NiZXInID0+IDEwLAoJCSdub3ZlbWJlcicgPT4gMTEsCgkJJ2RlY2VtYmVyJyA9PiAxMiwKCQkvLyBHcmVlawoJCSfOmc6xzr0nID0+IDEsCgkJJ86mzrXOsicgPT4gMiwKCQknzpzOrM+OJyA9PiAzLAoJCSfOnM6xz44nID0+IDMsCgkJJ86Rz4DPgScgPT4gNCwKCQknzpzOrM65JyA9PiA1LAoJCSfOnM6xz4onID0+IDUsCgkJJ86czrHOuScgPT4gNSwKCQknzpnOv8+Nzr0nID0+IDYsCgkJJ86Zzr/OvScgPT4gNiwKCQknzpnOv8+NzrsnID0+IDcsCgkJJ86Zzr/OuycgPT4gNywKCQknzpHPjc6zJyA9PiA4LAoJCSfOkc+FzrMnID0+IDgsCgkJJ86jzrXPgCcgPT4gOSwKCQknzp/Ous+EJyA9PiAxMCwKCQknzp3Ov86tJyA9PiAxMSwKCQknzpTOtc66JyA9PiAxMiwKCSk7CgoJLyoqCgkgKiBMaXN0IG9mIHRpbWV6b25lcywgYWJicmV2aWF0aW9uID0+IG9mZnNldCBmcm9tIFVUQwoJICoKCSAqIEBhY2Nlc3MgcHJvdGVjdGVkCgkgKiBAdmFyIGFycmF5CgkgKi8KCXZhciAkdGltZXpvbmUgPSBhcnJheSgKCQknQUNEVCcgPT4gMzc4MDAsCgkJJ0FDSVQnID0+IDI4ODAwLAoJCSdBQ1NUJyA9PiAzNDIwMCwKCQknQUNUJyA9PiAtMTgwMDAsCgkJJ0FDV0RUJyA9PiAzNTEwMCwKCQknQUNXU1QnID0+IDMxNTAwLAoJCSdBRURUJyA9PiAzOTYwMCwKCQknQUVTVCcgPT4gMzYwMDAsCgkJJ0FGVCcgPT4gMTYyMDAsCgkJJ0FLRFQnID0+IC0yODgwMCwKCQknQUtTVCcgPT4gLTMyNDAwLAoJCSdBTURUJyA9PiAxODAwMCwKCQknQU1UJyA9PiAtMTQ0MDAsCgkJJ0FOQVNUJyA9PiA0NjgwMCwKCQknQU5BVCcgPT4gNDMyMDAsCgkJJ0FSVCcgPT4gLTEwODAwLAoJCSdBWk9TVCcgPT4gLTM2MDAsCgkJJ0FaU1QnID0+IDE4MDAwLAoJCSdBWlQnID0+IDE0NDAwLAoJCSdCSU9UJyA9PiAyMTYwMCwKCQknQklUJyA9PiAtNDMyMDAsCgkJJ0JPVCcgPT4gLTE0NDAwLAoJCSdCUlNUJyA9PiAtNzIwMCwKCQknQlJUJyA9PiAtMTA4MDAsCgkJJ0JTVCcgPT4gMzYwMCwKCQknQlRUJyA9PiAyMTYwMCwKCQknQ0FTVCcgPT4gMTgwMDAsCgkJJ0NBVCcgPT4gNzIwMCwKCQknQ0NUJyA9PiAyMzQwMCwKCQknQ0RUJyA9PiAtMTgwMDAsCgkJJ0NFRFQnID0+IDcyMDAsCgkJJ0NFVCcgPT4gMzYwMCwKCQknQ0dTVCcgPT4gLTcyMDAsCgkJJ0NHVCcgPT4gLTEwODAwLAoJCSdDSEFEVCcgPT4gNDk1MDAsCgkJJ0NIQVNUJyA9PiA0NTkwMCwKCQknQ0lTVCcgPT4gLTI4ODAwLAoJCSdDS1QnID0+IC0zNjAwMCwKCQknQ0xEVCcgPT4gLTEwODAwLAoJCSdDTFNUJyA9PiAtMTQ0MDAsCgkJJ0NPVCcgPT4gLTE4MDAwLAoJCSdDU1QnID0+IC0yMTYwMCwKCQknQ1ZUJyA9PiAtMzYwMCwKCQknQ1hUJyA9PiAyNTIwMCwKCQknREFWVCcgPT4gMjUyMDAsCgkJJ0RUQVQnID0+IDM2MDAwLAoJCSdFQURUJyA9PiAtMTgwMDAsCgkJJ0VBU1QnID0+IC0yMTYwMCwKCQknRUFUJyA9PiAxMDgwMCwKCQknRUNUJyA9PiAtMTgwMDAsCgkJJ0VEVCcgPT4gLTE0NDAwLAoJCSdFRVNUJyA9PiAxMDgwMCwKCQknRUVUJyA9PiA3MjAwLAoJCSdFR1QnID0+IC0zNjAwLAoJCSdFS1NUJyA9PiAyMTYwMCwKCQknRVNUJyA9PiAtMTgwMDAsCgkJJ0ZKVCcgPT4gNDMyMDAsCgkJJ0ZLRFQnID0+IC0xMDgwMCwKCQknRktTVCcgPT4gLTE0NDAwLAoJCSdGTlQnID0+IC03MjAwLAoJCSdHQUxUJyA9PiAtMjE2MDAsCgkJJ0dFRFQnID0+IDE0NDAwLAoJCSdHRVNUJyA9PiAxMDgwMCwKCQknR0ZUJyA9PiAtMTA4MDAsCgkJJ0dJTFQnID0+IDQzMjAwLAoJCSdHSVQnID0+IC0zMjQwMCwKCQknR1NUJyA9PiAxNDQwMCwKCQknR1NUJyA9PiAtNzIwMCwKCQknR1lUJyA9PiAtMTQ0MDAsCgkJJ0hBQScgPT4gLTEwODAwLAoJCSdIQUMnID0+IC0xODAwMCwKCQknSEFEVCcgPT4gLTMyNDAwLAoJCSdIQUUnID0+IC0xNDQwMCwKCQknSEFQJyA9PiAtMjUyMDAsCgkJJ0hBUicgPT4gLTIxNjAwLAoJCSdIQVNUJyA9PiAtMzYwMDAsCgkJJ0hBVCcgPT4gLTkwMDAsCgkJJ0hBWScgPT4gLTI4ODAwLAoJCSdIS1NUJyA9PiAyODgwMCwKCQknSE1UJyA9PiAxODAwMCwKCQknSE5BJyA9PiAtMTQ0MDAsCgkJJ0hOQycgPT4gLTIxNjAwLAoJCSdITkUnID0+IC0xODAwMCwKCQknSE5QJyA9PiAtMjg4MDAsCgkJJ0hOUicgPT4gLTI1MjAwLAoJCSdITlQnID0+IC0xMjYwMCwKCQknSE5ZJyA9PiAtMzI0MDAsCgkJJ0lSRFQnID0+IDE2MjAwLAoJCSdJUktTVCcgPT4gMzI0MDAsCgkJJ0lSS1QnID0+IDI4ODAwLAoJCSdJUlNUJyA9PiAxMjYwMCwKCQknSkZEVCcgPT4gLTEwODAwLAoJCSdKRlNUJyA9PiAtMTQ0MDAsCgkJJ0pTVCcgPT4gMzI0MDAsCgkJJ0tHU1QnID0+IDIxNjAwLAoJCSdLR1QnID0+IDE4MDAwLAoJCSdLT1NUJyA9PiAzOTYwMCwKCQknS09WU1QnID0+IDI4ODAwLAoJCSdLT1ZUJyA9PiAyNTIwMCwKCQknS1JBU1QnID0+IDI4ODAwLAoJCSdLUkFUJyA9PiAyNTIwMCwKCQknS1NUJyA9PiAzMjQwMCwKCQknTEhEVCcgPT4gMzk2MDAsCgkJJ0xIU1QnID0+IDM3ODAwLAoJCSdMSU5UJyA9PiA1MDQwMCwKCQknTEtUJyA9PiAyMTYwMCwKCQknTUFHU1QnID0+IDQzMjAwLAoJCSdNQUdUJyA9PiAzOTYwMCwKCQknTUFXVCcgPT4gMjE2MDAsCgkJJ01EVCcgPT4gLTIxNjAwLAoJCSdNRVNaJyA9PiA3MjAwLAoJCSdNRVonID0+IDM2MDAsCgkJJ01IVCcgPT4gNDMyMDAsCgkJJ01JVCcgPT4gLTM0MjAwLAoJCSdNTlNUJyA9PiAzMjQwMCwKCQknTVNEVCcgPT4gMTQ0MDAsCgkJJ01TU1QnID0+IDEwODAwLAoJCSdNU1QnID0+IC0yNTIwMCwKCQknTVVUJyA9PiAxNDQwMCwKCQknTVZUJyA9PiAxODAwMCwKCQknTVlUJyA9PiAyODgwMCwKCQknTkNUJyA9PiAzOTYwMCwKCQknTkRUJyA9PiAtOTAwMCwKCQknTkZUJyA9PiA0MTQwMCwKCQknTk1JVCcgPT4gMzYwMDAsCgkJJ05PVlNUJyA9PiAyNTIwMCwKCQknTk9WVCcgPT4gMjE2MDAsCgkJJ05QVCcgPT4gMjA3MDAsCgkJJ05SVCcgPT4gNDMyMDAsCgkJJ05TVCcgPT4gLTEyNjAwLAoJCSdOVVQnID0+IC0zOTYwMCwKCQknTlpEVCcgPT4gNDY4MDAsCgkJJ05aU1QnID0+IDQzMjAwLAoJCSdPTVNTVCcgPT4gMjUyMDAsCgkJJ09NU1QnID0+IDIxNjAwLAoJCSdQRFQnID0+IC0yNTIwMCwKCQknUEVUJyA9PiAtMTgwMDAsCgkJJ1BFVFNUJyA9PiA0NjgwMCwKCQknUEVUVCcgPT4gNDMyMDAsCgkJJ1BHVCcgPT4gMzYwMDAsCgkJJ1BIT1QnID0+IDQ2ODAwLAoJCSdQSFQnID0+IDI4ODAwLAoJCSdQS1QnID0+IDE4MDAwLAoJCSdQTURUJyA9PiAtNzIwMCwKCQknUE1TVCcgPT4gLTEwODAwLAoJCSdQT05UJyA9PiAzOTYwMCwKCQknUFNUJyA9PiAtMjg4MDAsCgkJJ1BXVCcgPT4gMzI0MDAsCgkJJ1BZU1QnID0+IC0xMDgwMCwKCQknUFlUJyA9PiAtMTQ0MDAsCgkJJ1JFVCcgPT4gMTQ0MDAsCgkJJ1JPVFQnID0+IC0xMDgwMCwKCQknU0FNU1QnID0+IDE4MDAwLAoJCSdTQU1UJyA9PiAxNDQwMCwKCQknU0FTVCcgPT4gNzIwMCwKCQknU0JUJyA9PiAzOTYwMCwKCQknU0NEVCcgPT4gNDY4MDAsCgkJJ1NDU1QnID0+IDQzMjAwLAoJCSdTQ1QnID0+IDE0NDAwLAoJCSdTRVNUJyA9PiAzNjAwLAoJCSdTR1QnID0+IDI4ODAwLAoJCSdTSVQnID0+IDI4ODAwLAoJCSdTUlQnID0+IC0xMDgwMCwKCQknU1NUJyA9PiAtMzk2MDAsCgkJJ1NZU1QnID0+IDEwODAwLAoJCSdTWVQnID0+IDcyMDAsCgkJJ1RGVCcgPT4gMTgwMDAsCgkJJ1RIQVQnID0+IC0zNjAwMCwKCQknVEpUJyA9PiAxODAwMCwKCQknVEtUJyA9PiAtMzYwMDAsCgkJJ1RNVCcgPT4gMTgwMDAsCgkJJ1RPVCcgPT4gNDY4MDAsCgkJJ1RQVCcgPT4gMzI0MDAsCgkJJ1RSVVQnID0+IDM2MDAwLAoJCSdUVlQnID0+IDQzMjAwLAoJCSdUV1QnID0+IDI4ODAwLAoJCSdVWVNUJyA9PiAtNzIwMCwKCQknVVlUJyA9PiAtMTA4MDAsCgkJJ1VaVCcgPT4gMTgwMDAsCgkJJ1ZFVCcgPT4gLTE0NDAwLAoJCSdWTEFTVCcgPT4gMzk2MDAsCgkJJ1ZMQVQnID0+IDM2MDAwLAoJCSdWT1NUJyA9PiAyMTYwMCwKCQknVlVUJyA9PiAzOTYwMCwKCQknV0FTVCcgPT4gNzIwMCwKCQknV0FUJyA9PiAzNjAwLAoJCSdXRFQnID0+IDMyNDAwLAoJCSdXRVNUJyA9PiAzNjAwLAoJCSdXRlQnID0+IDQzMjAwLAoJCSdXSUInID0+IDI1MjAwLAoJCSdXSVQnID0+IDMyNDAwLAoJCSdXSVRBJyA9PiAyODgwMCwKCQknV0tTVCcgPT4gMTgwMDAsCgkJJ1dTVCcgPT4gMjg4MDAsCgkJJ1lBS1NUJyA9PiAzNjAwMCwKCQknWUFLVCcgPT4gMzI0MDAsCgkJJ1lBUFQnID0+IDM2MDAwLAoJCSdZRUtTVCcgPT4gMjE2MDAsCgkJJ1lFS1QnID0+IDE4MDAwLAoJKTsKCgkvKioKCSAqIENhY2hlZCBQQ1JFIGZvciBTaW1wbGVQaWVfUGFyc2VfRGF0ZTo6JGRheQoJICoKCSAqIEBhY2Nlc3MgcHJvdGVjdGVkCgkgKiBAdmFyIHN0cmluZwoJICovCgl2YXIgJGRheV9wY3JlOwoKCS8qKgoJICogQ2FjaGVkIFBDUkUgZm9yIFNpbXBsZVBpZV9QYXJzZV9EYXRlOjokbW9udGgKCSAqCgkgKiBAYWNjZXNzIHByb3RlY3RlZAoJICogQHZhciBzdHJpbmcKCSAqLwoJdmFyICRtb250aF9wY3JlOwoKCS8qKgoJICogQXJyYXkgb2YgdXNlci1hZGRlZCBjYWxsYmFjayBtZXRob2RzCgkgKgoJICogQGFjY2VzcyBwcml2YXRlCgkgKiBAdmFyIGFycmF5CgkgKi8KCXZhciAkYnVpbHRfaW4gPSBhcnJheSgpOwoKCS8qKgoJICogQXJyYXkgb2YgdXNlci1hZGRlZCBjYWxsYmFjayBtZXRob2RzCgkgKgoJICogQGFjY2VzcyBwcml2YXRlCgkgKiBAdmFyIGFycmF5CgkgKi8KCXZhciAkdXNlciA9IGFycmF5KCk7CgoJLyoqCgkgKiBDcmVhdGUgbmV3IFNpbXBsZVBpZV9QYXJzZV9EYXRlIG9iamVjdCwgYW5kIHNldCBzZWxmOjpkYXlfcGNyZSwKCSAqIHNlbGY6Om1vbnRoX3BjcmUsIGFuZCBzZWxmOjpidWlsdF9pbgoJICoKCSAqIEBhY2Nlc3MgcHJpdmF0ZQoJICovCglmdW5jdGlvbiBTaW1wbGVQaWVfUGFyc2VfRGF0ZSgpCgl7CgkJJHRoaXMtPmRheV9wY3JlID0gJygnIC4gaW1wbG9kZShhcnJheV9rZXlzKCR0aGlzLT5kYXkpLCAnfCcpIC4gJyknOwoJCSR0aGlzLT5tb250aF9wY3JlID0gJygnIC4gaW1wbG9kZShhcnJheV9rZXlzKCR0aGlzLT5tb250aCksICd8JykgLiAnKSc7CgoJCXN0YXRpYyAkY2FjaGU7CgkJaWYgKCFpc3NldCgkY2FjaGVbZ2V0X2NsYXNzKCR0aGlzKV0pKQoJCXsKCQkJaWYgKGV4dGVuc2lvbl9sb2FkZWQoJ1JlZmxlY3Rpb24nKSkKCQkJewoJCQkJJGNsYXNzID0gbmV3IFJlZmxlY3Rpb25DbGFzcyhnZXRfY2xhc3MoJHRoaXMpKTsKCQkJCSRtZXRob2RzID0gJGNsYXNzLT5nZXRNZXRob2RzKCk7CgkJCQkkYWxsX21ldGhvZHMgPSBhcnJheSgpOwoJCQkJZm9yZWFjaCAoJG1ldGhvZHMgYXMgJG1ldGhvZCkKCQkJCXsKCQkJCQkkYWxsX21ldGhvZHNbXSA9ICRtZXRob2QtPmdldE5hbWUoKTsKCQkJCX0KCQkJfQoJCQllbHNlCgkJCXsKCQkJCSRhbGxfbWV0aG9kcyA9IGdldF9jbGFzc19tZXRob2RzKCR0aGlzKTsKCQkJfQoKCQkJZm9yZWFjaCAoJGFsbF9tZXRob2RzIGFzICRtZXRob2QpCgkJCXsKCQkJCWlmIChzdHJ0b2xvd2VyKHN1YnN0cigkbWV0aG9kLCAwLCA1KSkgPT09ICdkYXRlXycpCgkJCQl7CgkJCQkJJGNhY2hlW2dldF9jbGFzcygkdGhpcyldW10gPSAkbWV0aG9kOwoJCQkJfQoJCQl9CgkJfQoKCQlmb3JlYWNoICgkY2FjaGVbZ2V0X2NsYXNzKCR0aGlzKV0gYXMgJG1ldGhvZCkKCQl7CgkJCSR0aGlzLT5idWlsdF9pbltdID0gJG1ldGhvZDsKCQl9Cgl9CgoJLyoqCgkgKiBHZXQgdGhlIG9iamVjdAoJICoKCSAqIEBhY2Nlc3MgcHVibGljCgkgKi8KCWZ1bmN0aW9uIGdldCgpCgl7CgkJc3RhdGljICRvYmplY3Q7CgkJaWYgKCEkb2JqZWN0KQoJCXsKCQkJJG9iamVjdCA9IG5ldyBTaW1wbGVQaWVfUGFyc2VfRGF0ZTsKCQl9CgkJcmV0dXJuICRvYmplY3Q7Cgl9CgoJLyoqCgkgKiBQYXJzZSBhIGRhdGUKCSAqCgkgKiBAZmluYWwKCSAqIEBhY2Nlc3MgcHVibGljCgkgKiBAcGFyYW0gc3RyaW5nICRkYXRlIERhdGUgdG8gcGFyc2UKCSAqIEByZXR1cm4gaW50IFRpbWVzdGFtcCBjb3JyZXNwb25kaW5nIHRvIGRhdGUgc3RyaW5nLCBvciBmYWxzZSBvbiBmYWlsdXJlCgkgKi8KCWZ1bmN0aW9uIHBhcnNlKCRkYXRlKQoJewoJCWZvcmVhY2ggKCR0aGlzLT51c2VyIGFzICRtZXRob2QpCgkJewoJCQlpZiAoKCRyZXR1cm5lZCA9IGNhbGxfdXNlcl9mdW5jKCRtZXRob2QsICRkYXRlKSkgIT09IGZhbHNlKQoJCQl7CgkJCQlyZXR1cm4gJHJldHVybmVkOwoJCQl9CgkJfQoKCQlmb3JlYWNoICgkdGhpcy0+YnVpbHRfaW4gYXMgJG1ldGhvZCkKCQl7CgkJCWlmICgoJHJldHVybmVkID0gY2FsbF91c2VyX2Z1bmMoYXJyYXkoJiR0aGlzLCAkbWV0aG9kKSwgJGRhdGUpKSAhPT0gZmFsc2UpCgkJCXsKCQkJCXJldHVybiAkcmV0dXJuZWQ7CgkJCX0KCQl9CgoJCXJldHVybiBmYWxzZTsKCX0KCgkvKioKCSAqIEFkZCBhIGNhbGxiYWNrIG1ldGhvZCB0byBwYXJzZSBhIGRhdGUKCSAqCgkgKiBAZmluYWwKCSAqIEBhY2Nlc3MgcHVibGljCgkgKiBAcGFyYW0gY2FsbGJhY2sgJGNhbGxiYWNrCgkgKi8KCWZ1bmN0aW9uIGFkZF9jYWxsYmFjaygkY2FsbGJhY2spCgl7CgkJaWYgKGlzX2NhbGxhYmxlKCRjYWxsYmFjaykpCgkJewoJCQkkdGhpcy0+dXNlcltdID0gJGNhbGxiYWNrOwoJCX0KCQllbHNlCgkJewoJCQl0cmlnZ2VyX2Vycm9yKCdVc2VyLXN1cHBsaWVkIGZ1bmN0aW9uIG11c3QgYmUgYSB2YWxpZCBjYWxsYmFjaycsIEVfVVNFUl9XQVJOSU5HKTsKCQl9Cgl9CgoJLyoqCgkgKiBQYXJzZSBhIHN1cGVyc2V0IG9mIFczQy1EVEYgKGFsbG93cyBoeXBoZW5zIGFuZCBjb2xvbnMgdG8gYmUgb21pdHRlZCwgYXMKCSAqIHdlbGwgYXMgYWxsb3dpbmcgYW55IG9mIHVwcGVyIG9yIGxvd2VyIGNhc2UgIlQiLCBob3Jpem9udGFsIHRhYnMsIG9yCgkgKiBzcGFjZXMgdG8gYmUgdXNlZCBhcyB0aGUgdGltZSBzZXBlcmF0b3IgKGluY2x1ZGluZyBtb3JlIHRoYW4gb25lKSkKCSAqCgkgKiBAYWNjZXNzIHByb3RlY3RlZAoJICogQHJldHVybiBpbnQgVGltZXN0YW1wCgkgKi8KCWZ1bmN0aW9uIGRhdGVfdzNjZHRmKCRkYXRlKQoJewoJCXN0YXRpYyAkcGNyZTsKCQlpZiAoISRwY3JlKQoJCXsKCQkJJHllYXIgPSAnKFswLTldezR9KSc7CgkJCSRtb250aCA9ICRkYXkgPSAkaG91ciA9ICRtaW51dGUgPSAkc2Vjb25kID0gJyhbMC05XXsyfSknOwoJCQkkZGVjaW1hbCA9ICcoWzAtOV0qKSc7CgkJCSR6b25lID0gJyg/OihaKXwoWytcLV0pKFswLTldezEsMn0pOj8oWzAtOV17MSwyfSkpJzsKCQkJJHBjcmUgPSAnL14nIC4gJHllYXIgLiAnKD86LT8nIC4gJG1vbnRoIC4gJyg/Oi0/JyAuICRkYXkgLiAnKD86W1R0XHgwOVx4MjBdKycgLiAkaG91ciAuICcoPzo6PycgLiAkbWludXRlIC4gJyg/Ojo/JyAuICRzZWNvbmQgLiAnKD86LicgLiAkZGVjaW1hbCAuICcpPyk/KT8nIC4gJHpvbmUgLiAnKT8pPyk/JC8nOwoJCX0KCQlpZiAocHJlZ19tYXRjaCgkcGNyZSwgJGRhdGUsICRtYXRjaCkpCgkJewoJCQkvKgoJCQlDYXB0dXJpbmcgc3VicGF0dGVybnM6CgkJCTE6IFllYXIKCQkJMjogTW9udGgKCQkJMzogRGF5CgkJCTQ6IEhvdXIKCQkJNTogTWludXRlCgkJCTY6IFNlY29uZAoJCQk3OiBEZWNpbWFsIGZyYWN0aW9uIG9mIGEgc2Vjb25kCgkJCTg6IFp1bHUKCQkJOTogVGltZXpvbmUgwrEKCQkJMTA6IFRpbWV6b25lIGhvdXJzCgkJCTExOiBUaW1lem9uZSBtaW51dGVzCgkJCSovCgoJCQkvLyBGaWxsIGluIGVtcHR5IG1hdGNoZXMKCQkJZm9yICgkaSA9IGNvdW50KCRtYXRjaCk7ICRpIDw9IDM7ICRpKyspCgkJCXsKCQkJCSRtYXRjaFskaV0gPSAnMSc7CgkJCX0KCgkJCWZvciAoJGkgPSBjb3VudCgkbWF0Y2gpOyAkaSA8PSA3OyAkaSsrKQoJCQl7CgkJCQkkbWF0Y2hbJGldID0gJzAnOwoJCQl9CgoJCQkvLyBOdW1lcmljIHRpbWV6b25lCgkJCWlmIChpc3NldCgkbWF0Y2hbOV0pICYmICRtYXRjaFs5XSAhPT0gJycpCgkJCXsKCQkJCSR0aW1lem9uZSA9ICRtYXRjaFsxMF0gKiAzNjAwOwoJCQkJJHRpbWV6b25lICs9ICRtYXRjaFsxMV0gKiA2MDsKCQkJCWlmICgkbWF0Y2hbOV0gPT09ICctJykKCQkJCXsKCQkJCQkkdGltZXpvbmUgPSAwIC0gJHRpbWV6b25lOwoJCQkJfQoJCQl9CgkJCWVsc2UKCQkJewoJCQkJJHRpbWV6b25lID0gMDsKCQkJfQoKCQkJLy8gQ29udmVydCB0aGUgbnVtYmVyIG9mIHNlY29uZHMgdG8gYW4gaW50ZWdlciwgdGFraW5nIGRlY2ltYWxzIGludG8gYWNjb3VudAoJCQkkc2Vjb25kID0gcm91bmQoJG1hdGNoWzZdICsgJG1hdGNoWzddIC8gcG93KDEwLCBzdHJsZW4oJG1hdGNoWzddKSkpOwoKCQkJcmV0dXJuIGdtbWt0aW1lKCRtYXRjaFs0XSwgJG1hdGNoWzVdLCAkc2Vjb25kLCAkbWF0Y2hbMl0sICRtYXRjaFszXSwgJG1hdGNoWzFdKSAtICR0aW1lem9uZTsKCQl9CgkJZWxzZQoJCXsKCQkJcmV0dXJuIGZhbHNlOwoJCX0KCX0KCgkvKioKCSAqIFJlbW92ZSBSRkM4MjIgY29tbWVudHMKCSAqCgkgKiBAYWNjZXNzIHByb3RlY3RlZAoJICogQHBhcmFtIHN0cmluZyAkZGF0YSBEYXRhIHRvIHN0cmlwIGNvbW1lbnRzIGZyb20KCSAqIEByZXR1cm4gc3RyaW5nIENvbW1lbnQgc3RyaXBwZWQgc3RyaW5nCgkgKi8KCWZ1bmN0aW9uIHJlbW92ZV9yZmMyODIyX2NvbW1lbnRzKCRzdHJpbmcpCgl7CgkJJHN0cmluZyA9IChzdHJpbmcpICRzdHJpbmc7CgkJJHBvc2l0aW9uID0gMDsKCQkkbGVuZ3RoID0gc3RybGVuKCRzdHJpbmcpOwoJCSRkZXB0aCA9IDA7CgoJCSRvdXRwdXQgPSAnJzsKCgkJd2hpbGUgKCRwb3NpdGlvbiA8ICRsZW5ndGggJiYgKCRwb3MgPSBzdHJwb3MoJHN0cmluZywgJygnLCAkcG9zaXRpb24pKSAhPT0gZmFsc2UpCgkJewoJCQkkb3V0cHV0IC49IHN1YnN0cigkc3RyaW5nLCAkcG9zaXRpb24sICRwb3MgLSAkcG9zaXRpb24pOwoJCQkkcG9zaXRpb24gPSAkcG9zICsgMTsKCQkJaWYgKCRzdHJpbmdbJHBvcyAtIDFdICE9PSAnXFwnKQoJCQl7CgkJCQkkZGVwdGgrKzsKCQkJCXdoaWxlICgkZGVwdGggJiYgJHBvc2l0aW9uIDwgJGxlbmd0aCkKCQkJCXsKCQkJCQkkcG9zaXRpb24gKz0gc3RyY3Nwbigkc3RyaW5nLCAnKCknLCAkcG9zaXRpb24pOwoJCQkJCWlmICgkc3RyaW5nWyRwb3NpdGlvbiAtIDFdID09PSAnXFwnKQoJCQkJCXsKCQkJCQkJJHBvc2l0aW9uKys7CgkJCQkJCWNvbnRpbnVlOwoJCQkJCX0KCQkJCQllbHNlaWYgKGlzc2V0KCRzdHJpbmdbJHBvc2l0aW9uXSkpCgkJCQkJewoJCQkJCQlzd2l0Y2ggKCRzdHJpbmdbJHBvc2l0aW9uXSkKCQkJCQkJewoJCQkJCQkJY2FzZSAnKCc6CgkJCQkJCQkJJGRlcHRoKys7CgkJCQkJCQkJYnJlYWs7CgoJCQkJCQkJY2FzZSAnKSc6CgkJCQkJCQkJJGRlcHRoLS07CgkJCQkJCQkJYnJlYWs7CgkJCQkJCX0KCQkJCQkJJHBvc2l0aW9uKys7CgkJCQkJfQoJCQkJCWVsc2UKCQkJCQl7CgkJCQkJCWJyZWFrOwoJCQkJCX0KCQkJCX0KCQkJfQoJCQllbHNlCgkJCXsKCQkJCSRvdXRwdXQgLj0gJygnOwoJCQl9CgkJfQoJCSRvdXRwdXQgLj0gc3Vic3RyKCRzdHJpbmcsICRwb3NpdGlvbik7CgoJCXJldHVybiAkb3V0cHV0OwoJfQoKCS8qKgoJICogUGFyc2UgUkZDMjgyMidzIGRhdGUgZm9ybWF0CgkgKgoJICogQGFjY2VzcyBwcm90ZWN0ZWQKCSAqIEByZXR1cm4gaW50IFRpbWVzdGFtcAoJICovCglmdW5jdGlvbiBkYXRlX3JmYzI4MjIoJGRhdGUpCgl7CgkJc3RhdGljICRwY3JlOwoJCWlmICghJHBjcmUpCgkJewoJCQkkd3NwID0gJ1tceDA5XHgyMF0nOwoJCQkkZndzID0gJyg/OicgLiAkd3NwIC4gJyt8JyAuICR3c3AgLiAnKig/Olx4MERceDBBJyAuICR3c3AgLiAnKykrKSc7CgkJCSRvcHRpb25hbF9md3MgPSAkZndzIC4gJz8nOwoJCQkkZGF5X25hbWUgPSAkdGhpcy0+ZGF5X3BjcmU7CgkJCSRtb250aCA9ICR0aGlzLT5tb250aF9wY3JlOwoJCQkkZGF5ID0gJyhbMC05XXsxLDJ9KSc7CgkJCSRob3VyID0gJG1pbnV0ZSA9ICRzZWNvbmQgPSAnKFswLTldezJ9KSc7CgkJCSR5ZWFyID0gJyhbMC05XXsyLDR9KSc7CgkJCSRudW1fem9uZSA9ICcoWytcLV0pKFswLTldezJ9KShbMC05XXsyfSknOwoJCQkkY2hhcmFjdGVyX3pvbmUgPSAnKFtBLVpdezEsNX0pJzsKCQkJJHpvbmUgPSAnKD86JyAuICRudW1fem9uZSAuICd8JyAuICRjaGFyYWN0ZXJfem9uZSAuICcpJzsKCQkJJHBjcmUgPSAnLyg/OicgLiAkb3B0aW9uYWxfZndzIC4gJGRheV9uYW1lIC4gJG9wdGlvbmFsX2Z3cyAuICcsKT8nIC4gJG9wdGlvbmFsX2Z3cyAuICRkYXkgLiAkZndzIC4gJG1vbnRoIC4gJGZ3cyAuICR5ZWFyIC4gJGZ3cyAuICRob3VyIC4gJG9wdGlvbmFsX2Z3cyAuICc6JyAuICRvcHRpb25hbF9md3MgLiAkbWludXRlIC4gJyg/OicgLiAkb3B0aW9uYWxfZndzIC4gJzonIC4gJG9wdGlvbmFsX2Z3cyAuICRzZWNvbmQgLiAnKT8nIC4gJGZ3cyAuICR6b25lIC4gJy9pJzsKCQl9CgkJaWYgKHByZWdfbWF0Y2goJHBjcmUsICR0aGlzLT5yZW1vdmVfcmZjMjgyMl9jb21tZW50cygkZGF0ZSksICRtYXRjaCkpCgkJewoJCQkvKgoJCQlDYXB0dXJpbmcgc3VicGF0dGVybnM6CgkJCTE6IERheSBuYW1lCgkJCTI6IERheQoJCQkzOiBNb250aAoJCQk0OiBZZWFyCgkJCTU6IEhvdXIKCQkJNjogTWludXRlCgkJCTc6IFNlY29uZAoJCQk4OiBUaW1lem9uZSDCsQoJCQk5OiBUaW1lem9uZSBob3VycwoJCQkxMDogVGltZXpvbmUgbWludXRlcwoJCQkxMTogQWxwaGFiZXRpYyB0aW1lem9uZQoJCQkqLwoKCQkJLy8gRmluZCB0aGUgbW9udGggbnVtYmVyCgkJCSRtb250aCA9ICR0aGlzLT5tb250aFtzdHJ0b2xvd2VyKCRtYXRjaFszXSldOwoKCQkJLy8gTnVtZXJpYyB0aW1lem9uZQoJCQlpZiAoJG1hdGNoWzhdICE9PSAnJykKCQkJewoJCQkJJHRpbWV6b25lID0gJG1hdGNoWzldICogMzYwMDsKCQkJCSR0aW1lem9uZSArPSAkbWF0Y2hbMTBdICogNjA7CgkJCQlpZiAoJG1hdGNoWzhdID09PSAnLScpCgkJCQl7CgkJCQkJJHRpbWV6b25lID0gMCAtICR0aW1lem9uZTsKCQkJCX0KCQkJfQoJCQkvLyBDaGFyYWN0ZXIgdGltZXpvbmUKCQkJZWxzZWlmIChpc3NldCgkdGhpcy0+dGltZXpvbmVbc3RydG91cHBlcigkbWF0Y2hbMTFdKV0pKQoJCQl7CgkJCQkkdGltZXpvbmUgPSAkdGhpcy0+dGltZXpvbmVbc3RydG91cHBlcigkbWF0Y2hbMTFdKV07CgkJCX0KCQkJLy8gQXNzdW1lIGV2ZXJ5dGhpbmcgZWxzZSB0byBiZSAtMDAwMAoJCQllbHNlCgkJCXsKCQkJCSR0aW1lem9uZSA9IDA7CgkJCX0KCgkJCS8vIERlYWwgd2l0aCAyLzMgZGlnaXQgeWVhcnMKCQkJaWYgKCRtYXRjaFs0XSA8IDUwKQoJCQl7CgkJCQkkbWF0Y2hbNF0gKz0gMjAwMDsKCQkJfQoJCQllbHNlaWYgKCRtYXRjaFs0XSA8IDEwMDApCgkJCXsKCQkJCSRtYXRjaFs0XSArPSAxOTAwOwoJCQl9CgoJCQkvLyBTZWNvbmQgaXMgb3B0aW9uYWwsIGlmIGl0IGlzIGVtcHR5IHNldCBpdCB0byB6ZXJvCgkJCWlmICgkbWF0Y2hbN10gIT09ICcnKQoJCQl7CgkJCQkkc2Vjb25kID0gJG1hdGNoWzddOwoJCQl9CgkJCWVsc2UKCQkJewoJCQkJJHNlY29uZCA9IDA7CgkJCX0KCgkJCXJldHVybiBnbW1rdGltZSgkbWF0Y2hbNV0sICRtYXRjaFs2XSwgJHNlY29uZCwgJG1vbnRoLCAkbWF0Y2hbMl0sICRtYXRjaFs0XSkgLSAkdGltZXpvbmU7CgkJfQoJCWVsc2UKCQl7CgkJCXJldHVybiBmYWxzZTsKCQl9Cgl9CgoJLyoqCgkgKiBQYXJzZSBSRkM4NTAncyBkYXRlIGZvcm1hdAoJICoKCSAqIEBhY2Nlc3MgcHJvdGVjdGVkCgkgKiBAcmV0dXJuIGludCBUaW1lc3RhbXAKCSAqLwoJZnVuY3Rpb24gZGF0ZV9yZmM4NTAoJGRhdGUpCgl7CgkJc3RhdGljICRwY3JlOwoJCWlmICghJHBjcmUpCgkJewoJCQkkc3BhY2UgPSAnW1x4MDlceDIwXSsnOwoJCQkkZGF5X25hbWUgPSAkdGhpcy0+ZGF5X3BjcmU7CgkJCSRtb250aCA9ICR0aGlzLT5tb250aF9wY3JlOwoJCQkkZGF5ID0gJyhbMC05XXsxLDJ9KSc7CgkJCSR5ZWFyID0gJGhvdXIgPSAkbWludXRlID0gJHNlY29uZCA9ICcoWzAtOV17Mn0pJzsKCQkJJHpvbmUgPSAnKFtBLVpdezEsNX0pJzsKCQkJJHBjcmUgPSAnL14nIC4gJGRheV9uYW1lIC4gJywnIC4gJHNwYWNlIC4gJGRheSAuICctJyAuICRtb250aCAuICctJyAuICR5ZWFyIC4gJHNwYWNlIC4gJGhvdXIgLiAnOicgLiAkbWludXRlIC4gJzonIC4gJHNlY29uZCAuICRzcGFjZSAuICR6b25lIC4gJyQvaSc7CgkJfQoJCWlmIChwcmVnX21hdGNoKCRwY3JlLCAkZGF0ZSwgJG1hdGNoKSkKCQl7CgkJCS8qCgkJCUNhcHR1cmluZyBzdWJwYXR0ZXJuczoKCQkJMTogRGF5IG5hbWUKCQkJMjogRGF5CgkJCTM6IE1vbnRoCgkJCTQ6IFllYXIKCQkJNTogSG91cgoJCQk2OiBNaW51dGUKCQkJNzogU2Vjb25kCgkJCTg6IFRpbWV6b25lCgkJCSovCgoJCQkvLyBNb250aAoJCQkkbW9udGggPSAkdGhpcy0+bW9udGhbc3RydG9sb3dlcigkbWF0Y2hbM10pXTsKCgkJCS8vIENoYXJhY3RlciB0aW1lem9uZQoJCQlpZiAoaXNzZXQoJHRoaXMtPnRpbWV6b25lW3N0cnRvdXBwZXIoJG1hdGNoWzhdKV0pKQoJCQl7CgkJCQkkdGltZXpvbmUgPSAkdGhpcy0+dGltZXpvbmVbc3RydG91cHBlcigkbWF0Y2hbOF0pXTsKCQkJfQoJCQkvLyBBc3N1bWUgZXZlcnl0aGluZyBlbHNlIHRvIGJlIC0wMDAwCgkJCWVsc2UKCQkJewoJCQkJJHRpbWV6b25lID0gMDsKCQkJfQoKCQkJLy8gRGVhbCB3aXRoIDIgZGlnaXQgeWVhcgoJCQlpZiAoJG1hdGNoWzRdIDwgNTApCgkJCXsKCQkJCSRtYXRjaFs0XSArPSAyMDAwOwoJCQl9CgkJCWVsc2UKCQkJewoJCQkJJG1hdGNoWzRdICs9IDE5MDA7CgkJCX0KCgkJCXJldHVybiBnbW1rdGltZSgkbWF0Y2hbNV0sICRtYXRjaFs2XSwgJG1hdGNoWzddLCAkbW9udGgsICRtYXRjaFsyXSwgJG1hdGNoWzRdKSAtICR0aW1lem9uZTsKCQl9CgkJZWxzZQoJCXsKCQkJcmV0dXJuIGZhbHNlOwoJCX0KCX0KCgkvKioKCSAqIFBhcnNlIEM5OSdzIGFzY3RpbWUoKSdzIGRhdGUgZm9ybWF0CgkgKgoJICogQGFjY2VzcyBwcm90ZWN0ZWQKCSAqIEByZXR1cm4gaW50IFRpbWVzdGFtcAoJICovCglmdW5jdGlvbiBkYXRlX2FzY3RpbWUoJGRhdGUpCgl7CgkJc3RhdGljICRwY3JlOwoJCWlmICghJHBjcmUpCgkJewoJCQkkc3BhY2UgPSAnW1x4MDlceDIwXSsnOwoJCQkkd2RheV9uYW1lID0gJHRoaXMtPmRheV9wY3JlOwoJCQkkbW9uX25hbWUgPSAkdGhpcy0+bW9udGhfcGNyZTsKCQkJJGRheSA9ICcoWzAtOV17MSwyfSknOwoJCQkkaG91ciA9ICRzZWMgPSAkbWluID0gJyhbMC05XXsyfSknOwoJCQkkeWVhciA9ICcoWzAtOV17NH0pJzsKCQkJJHRlcm1pbmF0b3IgPSAnXHgwQT9ceDAwPyc7CgkJCSRwY3JlID0gJy9eJyAuICR3ZGF5X25hbWUgLiAkc3BhY2UgLiAkbW9uX25hbWUgLiAkc3BhY2UgLiAkZGF5IC4gJHNwYWNlIC4gJGhvdXIgLiAnOicgLiAkbWluIC4gJzonIC4gJHNlYyAuICRzcGFjZSAuICR5ZWFyIC4gJHRlcm1pbmF0b3IgLiAnJC9pJzsKCQl9CgkJaWYgKHByZWdfbWF0Y2goJHBjcmUsICRkYXRlLCAkbWF0Y2gpKQoJCXsKCQkJLyoKCQkJQ2FwdHVyaW5nIHN1YnBhdHRlcm5zOgoJCQkxOiBEYXkgbmFtZQoJCQkyOiBNb250aAoJCQkzOiBEYXkKCQkJNDogSG91cgoJCQk1OiBNaW51dGUKCQkJNjogU2Vjb25kCgkJCTc6IFllYXIKCQkJKi8KCgkJCSRtb250aCA9ICR0aGlzLT5tb250aFtzdHJ0b2xvd2VyKCRtYXRjaFsyXSldOwoJCQlyZXR1cm4gZ21ta3RpbWUoJG1hdGNoWzRdLCAkbWF0Y2hbNV0sICRtYXRjaFs2XSwgJG1vbnRoLCAkbWF0Y2hbM10sICRtYXRjaFs3XSk7CgkJfQoJCWVsc2UKCQl7CgkJCXJldHVybiBmYWxzZTsKCQl9Cgl9CgoJLyoqCgkgKiBQYXJzZSBkYXRlcyB1c2luZyBzdHJ0b3RpbWUoKQoJICoKCSAqIEBhY2Nlc3MgcHJvdGVjdGVkCgkgKiBAcmV0dXJuIGludCBUaW1lc3RhbXAKCSAqLwoJZnVuY3Rpb24gZGF0ZV9zdHJ0b3RpbWUoJGRhdGUpCgl7CgkJJHN0cnRvdGltZSA9IHN0cnRvdGltZSgkZGF0ZSk7CgkJaWYgKCRzdHJ0b3RpbWUgPT09IC0xIHx8ICRzdHJ0b3RpbWUgPT09IGZhbHNlKQoJCXsKCQkJcmV0dXJuIGZhbHNlOwoJCX0KCQllbHNlCgkJewoJCQlyZXR1cm4gJHN0cnRvdGltZTsKCQl9Cgl9Cn0KCi8qKgogKiBDb250ZW50LXR5cGUgc25pZmZpbmcKICoKICogQHBhY2thZ2UgU2ltcGxlUGllCiAqLwpjbGFzcyBTaW1wbGVQaWVfQ29udGVudF9UeXBlX1NuaWZmZXIKewoJLyoqCgkgKiBGaWxlIG9iamVjdAoJICoKCSAqIEB2YXIgU2ltcGxlUGllX0ZpbGUKCSAqIEBhY2Nlc3MgcHJpdmF0ZQoJICovCgl2YXIgJGZpbGU7CgoJLyoqCgkgKiBDcmVhdGUgYW4gaW5zdGFuY2Ugb2YgdGhlIGNsYXNzIHdpdGggdGhlIGlucHV0IGZpbGUKCSAqCgkgKiBAYWNjZXNzIHB1YmxpYwoJICogQHBhcmFtIFNpbXBsZVBpZV9Db250ZW50X1R5cGVfU25pZmZlciAkZmlsZSBJbnB1dCBmaWxlCgkgKi8KCWZ1bmN0aW9uIFNpbXBsZVBpZV9Db250ZW50X1R5cGVfU25pZmZlcigkZmlsZSkKCXsKCQkkdGhpcy0+ZmlsZSA9ICRmaWxlOwoJfQoKCS8qKgoJICogR2V0IHRoZSBDb250ZW50LVR5cGUgb2YgdGhlIHNwZWNpZmllZCBmaWxlCgkgKgoJICogQGFjY2VzcyBwdWJsaWMKCSAqIEByZXR1cm4gc3RyaW5nIEFjdHVhbCBDb250ZW50LVR5cGUKCSAqLwoJZnVuY3Rpb24gZ2V0X3R5cGUoKQoJewoJCWlmIChpc3NldCgkdGhpcy0+ZmlsZS0+aGVhZGVyc1snY29udGVudC10eXBlJ10pKQoJCXsKCQkJaWYgKCFpc3NldCgkdGhpcy0+ZmlsZS0+aGVhZGVyc1snY29udGVudC1lbmNvZGluZyddKQoJCQkJJiYgKCR0aGlzLT5maWxlLT5oZWFkZXJzWydjb250ZW50LXR5cGUnXSA9PT0gJ3RleHQvcGxhaW4nCgkJCQkJfHwgJHRoaXMtPmZpbGUtPmhlYWRlcnNbJ2NvbnRlbnQtdHlwZSddID09PSAndGV4dC9wbGFpbjsgY2hhcnNldD1JU08tODg1OS0xJwoJCQkJCXx8ICR0aGlzLT5maWxlLT5oZWFkZXJzWydjb250ZW50LXR5cGUnXSA9PT0gJ3RleHQvcGxhaW47IGNoYXJzZXQ9aXNvLTg4NTktMScpKQoJCQl7CgkJCQlyZXR1cm4gJHRoaXMtPnRleHRfb3JfYmluYXJ5KCk7CgkJCX0KCgkJCWlmICgoJHBvcyA9IHN0cnBvcygkdGhpcy0+ZmlsZS0+aGVhZGVyc1snY29udGVudC10eXBlJ10sICc7JykpICE9PSBmYWxzZSkKCQkJewoJCQkJJG9mZmljaWFsID0gc3Vic3RyKCR0aGlzLT5maWxlLT5oZWFkZXJzWydjb250ZW50LXR5cGUnXSwgMCwgJHBvcyk7CgkJCX0KCQkJZWxzZQoJCQl7CgkJCQkkb2ZmaWNpYWwgPSAkdGhpcy0+ZmlsZS0+aGVhZGVyc1snY29udGVudC10eXBlJ107CgkJCX0KCQkJJG9mZmljaWFsID0gc3RydG9sb3dlcigkb2ZmaWNpYWwpOwoKCQkJaWYgKCRvZmZpY2lhbCA9PT0gJ3Vua25vd24vdW5rbm93bicKCQkJCXx8ICRvZmZpY2lhbCA9PT0gJ2FwcGxpY2F0aW9uL3Vua25vd24nKQoJCQl7CgkJCQlyZXR1cm4gJHRoaXMtPnVua25vd24oKTsKCQkJfQoJCQllbHNlaWYgKHN1YnN0cigkb2ZmaWNpYWwsIC00KSA9PT0gJyt4bWwnCgkJCQl8fCAkb2ZmaWNpYWwgPT09ICd0ZXh0L3htbCcKCQkJCXx8ICRvZmZpY2lhbCA9PT0gJ2FwcGxpY2F0aW9uL3htbCcpCgkJCXsKCQkJCXJldHVybiAkb2ZmaWNpYWw7CgkJCX0KCQkJZWxzZWlmIChzdWJzdHIoJG9mZmljaWFsLCAwLCA2KSA9PT0gJ2ltYWdlLycpCgkJCXsKCQkJCWlmICgkcmV0dXJuID0gJHRoaXMtPmltYWdlKCkpCgkJCQl7CgkJCQkJcmV0dXJuICRyZXR1cm47CgkJCQl9CgkJCQllbHNlCgkJCQl7CgkJCQkJcmV0dXJuICRvZmZpY2lhbDsKCQkJCX0KCQkJfQoJCQllbHNlaWYgKCRvZmZpY2lhbCA9PT0gJ3RleHQvaHRtbCcpCgkJCXsKCQkJCXJldHVybiAkdGhpcy0+ZmVlZF9vcl9odG1sKCk7CgkJCX0KCQkJZWxzZQoJCQl7CgkJCQlyZXR1cm4gJG9mZmljaWFsOwoJCQl9CgkJfQoJCWVsc2UKCQl7CgkJCXJldHVybiAkdGhpcy0+dW5rbm93bigpOwoJCX0KCX0KCgkvKioKCSAqIFNuaWZmIHRleHQgb3IgYmluYXJ5CgkgKgoJICogQGFjY2VzcyBwcml2YXRlCgkgKiBAcmV0dXJuIHN0cmluZyBBY3R1YWwgQ29udGVudC1UeXBlCgkgKi8KCWZ1bmN0aW9uIHRleHRfb3JfYmluYXJ5KCkKCXsKCQlpZiAoc3Vic3RyKCR0aGlzLT5maWxlLT5ib2R5LCAwLCAyKSA9PT0gIlx4RkVceEZGIgoJCQl8fCBzdWJzdHIoJHRoaXMtPmZpbGUtPmJvZHksIDAsIDIpID09PSAiXHhGRlx4RkUiCgkJCXx8IHN1YnN0cigkdGhpcy0+ZmlsZS0+Ym9keSwgMCwgNCkgPT09ICJceDAwXHgwMFx4RkVceEZGIgoJCQl8fCBzdWJzdHIoJHRoaXMtPmZpbGUtPmJvZHksIDAsIDMpID09PSAiXHhFRlx4QkJceEJGIikKCQl7CgkJCXJldHVybiAndGV4dC9wbGFpbic7CgkJfQoJCWVsc2VpZiAocHJlZ19tYXRjaCgnL1tceDAwLVx4MDhceDBFLVx4MUFceDFDLVx4MUZdLycsICR0aGlzLT5maWxlLT5ib2R5KSkKCQl7CgkJCXJldHVybiAnYXBwbGljYXRpb24vb2N0ZWN0LXN0cmVhbSc7CgkJfQoJCWVsc2UKCQl7CgkJCXJldHVybiAndGV4dC9wbGFpbic7CgkJfQoJfQoKCS8qKgoJICogU25pZmYgdW5rbm93bgoJICoKCSAqIEBhY2Nlc3MgcHJpdmF0ZQoJICogQHJldHVybiBzdHJpbmcgQWN0dWFsIENvbnRlbnQtVHlwZQoJICovCglmdW5jdGlvbiB1bmtub3duKCkKCXsKCQkkd3MgPSBzdHJzcG4oJHRoaXMtPmZpbGUtPmJvZHksICJceDA5XHgwQVx4MEJceDBDXHgwRFx4MjAiKTsKCQlpZiAoc3RydG9sb3dlcihzdWJzdHIoJHRoaXMtPmZpbGUtPmJvZHksICR3cywgMTQpKSA9PT0gJzwhZG9jdHlwZSBodG1sJwoJCQl8fCBzdHJ0b2xvd2VyKHN1YnN0cigkdGhpcy0+ZmlsZS0+Ym9keSwgJHdzLCA1KSkgPT09ICc8aHRtbCcKCQkJfHwgc3RydG9sb3dlcihzdWJzdHIoJHRoaXMtPmZpbGUtPmJvZHksICR3cywgNykpID09PSAnPHNjcmlwdCcpCgkJewoJCQlyZXR1cm4gJ3RleHQvaHRtbCc7CgkJfQoJCWVsc2VpZiAoc3Vic3RyKCR0aGlzLT5maWxlLT5ib2R5LCAwLCA1KSA9PT0gJyVQREYtJykKCQl7CgkJCXJldHVybiAnYXBwbGljYXRpb24vcGRmJzsKCQl9CgkJZWxzZWlmIChzdWJzdHIoJHRoaXMtPmZpbGUtPmJvZHksIDAsIDExKSA9PT0gJyUhUFMtQWRvYmUtJykKCQl7CgkJCXJldHVybiAnYXBwbGljYXRpb24vcG9zdHNjcmlwdCc7CgkJfQoJCWVsc2VpZiAoc3Vic3RyKCR0aGlzLT5maWxlLT5ib2R5LCAwLCA2KSA9PT0gJ0dJRjg3YScKCQkJfHwgc3Vic3RyKCR0aGlzLT5maWxlLT5ib2R5LCAwLCA2KSA9PT0gJ0dJRjg5YScpCgkJewoJCQlyZXR1cm4gJ2ltYWdlL2dpZic7CgkJfQoJCWVsc2VpZiAoc3Vic3RyKCR0aGlzLT5maWxlLT5ib2R5LCAwLCA4KSA9PT0gIlx4ODlceDUwXHg0RVx4NDdceDBEXHgwQVx4MUFceDBBIikKCQl7CgkJCXJldHVybiAnaW1hZ2UvcG5nJzsKCQl9CgkJZWxzZWlmIChzdWJzdHIoJHRoaXMtPmZpbGUtPmJvZHksIDAsIDMpID09PSAiXHhGRlx4RDhceEZGIikKCQl7CgkJCXJldHVybiAnaW1hZ2UvanBlZyc7CgkJfQoJCWVsc2VpZiAoc3Vic3RyKCR0aGlzLT5maWxlLT5ib2R5LCAwLCAyKSA9PT0gIlx4NDJceDREIikKCQl7CgkJCXJldHVybiAnaW1hZ2UvYm1wJzsKCQl9CgkJZWxzZQoJCXsKCQkJcmV0dXJuICR0aGlzLT50ZXh0X29yX2JpbmFyeSgpOwoJCX0KCX0KCgkvKioKCSAqIFNuaWZmIGltYWdlcwoJICoKCSAqIEBhY2Nlc3MgcHJpdmF0ZQoJICogQHJldHVybiBzdHJpbmcgQWN0dWFsIENvbnRlbnQtVHlwZQoJICovCglmdW5jdGlvbiBpbWFnZSgpCgl7CgkJaWYgKHN1YnN0cigkdGhpcy0+ZmlsZS0+Ym9keSwgMCwgNikgPT09ICdHSUY4N2EnCgkJCXx8IHN1YnN0cigkdGhpcy0+ZmlsZS0+Ym9keSwgMCwgNikgPT09ICdHSUY4OWEnKQoJCXsKCQkJcmV0dXJuICdpbWFnZS9naWYnOwoJCX0KCQllbHNlaWYgKHN1YnN0cigkdGhpcy0+ZmlsZS0+Ym9keSwgMCwgOCkgPT09ICJceDg5XHg1MFx4NEVceDQ3XHgwRFx4MEFceDFBXHgwQSIpCgkJewoJCQlyZXR1cm4gJ2ltYWdlL3BuZyc7CgkJfQoJCWVsc2VpZiAoc3Vic3RyKCR0aGlzLT5maWxlLT5ib2R5LCAwLCAzKSA9PT0gIlx4RkZceEQ4XHhGRiIpCgkJewoJCQlyZXR1cm4gJ2ltYWdlL2pwZWcnOwoJCX0KCQllbHNlaWYgKHN1YnN0cigkdGhpcy0+ZmlsZS0+Ym9keSwgMCwgMikgPT09ICJceDQyXHg0RCIpCgkJewoJCQlyZXR1cm4gJ2ltYWdlL2JtcCc7CgkJfQoJCWVsc2UKCQl7CgkJCXJldHVybiBmYWxzZTsKCQl9Cgl9CgoJLyoqCgkgKiBTbmlmZiBIVE1MCgkgKgoJICogQGFjY2VzcyBwcml2YXRlCgkgKiBAcmV0dXJuIHN0cmluZyBBY3R1YWwgQ29udGVudC1UeXBlCgkgKi8KCWZ1bmN0aW9uIGZlZWRfb3JfaHRtbCgpCgl7CgkJJGxlbiA9IHN0cmxlbigkdGhpcy0+ZmlsZS0+Ym9keSk7CgkJJHBvcyA9IHN0cnNwbigkdGhpcy0+ZmlsZS0+Ym9keSwgIlx4MDlceDBBXHgwRFx4MjAiKTsKCgkJd2hpbGUgKCRwb3MgPCAkbGVuKQoJCXsKCQkJc3dpdGNoICgkdGhpcy0+ZmlsZS0+Ym9keVskcG9zXSkKCQkJewoJCQkJY2FzZSAiXHgwOSI6CgkJCQljYXNlICJceDBBIjoKCQkJCWNhc2UgIlx4MEQiOgoJCQkJY2FzZSAiXHgyMCI6CgkJCQkJJHBvcyArPSBzdHJzcG4oJHRoaXMtPmZpbGUtPmJvZHksICJceDA5XHgwQVx4MERceDIwIiwgJHBvcyk7CgkJCQkJY29udGludWUgMjsKCgkJCQljYXNlICc8JzoKCQkJCQkkcG9zKys7CgkJCQkJYnJlYWs7CgoJCQkJZGVmYXVsdDoKCQkJCQlyZXR1cm4gJ3RleHQvaHRtbCc7CgkJCX0KCgkJCWlmIChzdWJzdHIoJHRoaXMtPmZpbGUtPmJvZHksICRwb3MsIDMpID09PSAnIS0tJykKCQkJewoJCQkJJHBvcyArPSAzOwoJCQkJaWYgKCRwb3MgPCAkbGVuICYmICgkcG9zID0gc3RycG9zKCR0aGlzLT5maWxlLT5ib2R5LCAnLS0+JywgJHBvcykpICE9PSBmYWxzZSkKCQkJCXsKCQkJCQkkcG9zICs9IDM7CgkJCQl9CgkJCQllbHNlCgkJCQl7CgkJCQkJcmV0dXJuICd0ZXh0L2h0bWwnOwoJCQkJfQoJCQl9CgkJCWVsc2VpZiAoc3Vic3RyKCR0aGlzLT5maWxlLT5ib2R5LCAkcG9zLCAxKSA9PT0gJyEnKQoJCQl7CgkJCQlpZiAoJHBvcyA8ICRsZW4gJiYgKCRwb3MgPSBzdHJwb3MoJHRoaXMtPmZpbGUtPmJvZHksICc+JywgJHBvcykpICE9PSBmYWxzZSkKCQkJCXsKCQkJCQkkcG9zKys7CgkJCQl9CgkJCQllbHNlCgkJCQl7CgkJCQkJcmV0dXJuICd0ZXh0L2h0bWwnOwoJCQkJfQoJCQl9CgkJCWVsc2VpZiAoc3Vic3RyKCR0aGlzLT5maWxlLT5ib2R5LCAkcG9zLCAxKSA9PT0gJz8nKQoJCQl7CgkJCQlpZiAoJHBvcyA8ICRsZW4gJiYgKCRwb3MgPSBzdHJwb3MoJHRoaXMtPmZpbGUtPmJvZHksICc/PicsICRwb3MpKSAhPT0gZmFsc2UpCgkJCQl7CgkJCQkJJHBvcyArPSAyOwoJCQkJfQoJCQkJZWxzZQoJCQkJewoJCQkJCXJldHVybiAndGV4dC9odG1sJzsKCQkJCX0KCQkJfQoJCQllbHNlaWYgKHN1YnN0cigkdGhpcy0+ZmlsZS0+Ym9keSwgJHBvcywgMykgPT09ICdyc3MnCgkJCQl8fCBzdWJzdHIoJHRoaXMtPmZpbGUtPmJvZHksICRwb3MsIDcpID09PSAncmRmOlJERicpCgkJCXsKCQkJCXJldHVybiAnYXBwbGljYXRpb24vcnNzK3htbCc7CgkJCX0KCQkJZWxzZWlmIChzdWJzdHIoJHRoaXMtPmZpbGUtPmJvZHksICRwb3MsIDQpID09PSAnZmVlZCcpCgkJCXsKCQkJCXJldHVybiAnYXBwbGljYXRpb24vYXRvbSt4bWwnOwoJCQl9CgkJCWVsc2UKCQkJewoJCQkJcmV0dXJuICd0ZXh0L2h0bWwnOwoJCQl9CgkJfQoKCQlyZXR1cm4gJ3RleHQvaHRtbCc7Cgl9Cn0KCi8qKgogKiBQYXJzZXMgdGhlIFhNTCBEZWNsYXJhdGlvbgogKgogKiBAcGFja2FnZSBTaW1wbGVQaWUKICovCmNsYXNzIFNpbXBsZVBpZV9YTUxfRGVjbGFyYXRpb25fUGFyc2VyCnsKCS8qKgoJICogWE1MIFZlcnNpb24KCSAqCgkgKiBAYWNjZXNzIHB1YmxpYwoJICogQHZhciBzdHJpbmcKCSAqLwoJdmFyICR2ZXJzaW9uID0gJzEuMCc7CgoJLyoqCgkgKiBFbmNvZGluZwoJICoKCSAqIEBhY2Nlc3MgcHVibGljCgkgKiBAdmFyIHN0cmluZwoJICovCgl2YXIgJGVuY29kaW5nID0gJ1VURi04JzsKCgkvKioKCSAqIFN0YW5kYWxvbmUKCSAqCgkgKiBAYWNjZXNzIHB1YmxpYwoJICogQHZhciBib29sCgkgKi8KCXZhciAkc3RhbmRhbG9uZSA9IGZhbHNlOwoKCS8qKgoJICogQ3VycmVudCBzdGF0ZSBvZiB0aGUgc3RhdGUgbWFjaGluZQoJICoKCSAqIEBhY2Nlc3MgcHJpdmF0ZQoJICogQHZhciBzdHJpbmcKCSAqLwoJdmFyICRzdGF0ZSA9ICdiZWZvcmVfdmVyc2lvbl9uYW1lJzsKCgkvKioKCSAqIElucHV0IGRhdGEKCSAqCgkgKiBAYWNjZXNzIHByaXZhdGUKCSAqIEB2YXIgc3RyaW5nCgkgKi8KCXZhciAkZGF0YSA9ICcnOwoKCS8qKgoJICogSW5wdXQgZGF0YSBsZW5ndGggKHRvIGF2b2lkIGNhbGxpbmcgc3RybGVuKCkgZXZlcnl0aW1lIHRoaXMgaXMgbmVlZGVkKQoJICoKCSAqIEBhY2Nlc3MgcHJpdmF0ZQoJICogQHZhciBpbnQKCSAqLwoJdmFyICRkYXRhX2xlbmd0aCA9IDA7CgoJLyoqCgkgKiBDdXJyZW50IHBvc2l0aW9uIG9mIHRoZSBwb2ludGVyCgkgKgoJICogQHZhciBpbnQKCSAqIEBhY2Nlc3MgcHJpdmF0ZQoJICovCgl2YXIgJHBvc2l0aW9uID0gMDsKCgkvKioKCSAqIENyZWF0ZSBhbiBpbnN0YW5jZSBvZiB0aGUgY2xhc3Mgd2l0aCB0aGUgaW5wdXQgZGF0YQoJICoKCSAqIEBhY2Nlc3MgcHVibGljCgkgKiBAcGFyYW0gc3RyaW5nICRkYXRhIElucHV0IGRhdGEKCSAqLwoJZnVuY3Rpb24gU2ltcGxlUGllX1hNTF9EZWNsYXJhdGlvbl9QYXJzZXIoJGRhdGEpCgl7CgkJJHRoaXMtPmRhdGEgPSAkZGF0YTsKCQkkdGhpcy0+ZGF0YV9sZW5ndGggPSBzdHJsZW4oJHRoaXMtPmRhdGEpOwoJfQoKCS8qKgoJICogUGFyc2UgdGhlIGlucHV0IGRhdGEKCSAqCgkgKiBAYWNjZXNzIHB1YmxpYwoJICogQHJldHVybiBib29sIHRydWUgb24gc3VjY2VzcywgZmFsc2Ugb24gZmFpbHVyZQoJICovCglmdW5jdGlvbiBwYXJzZSgpCgl7CgkJd2hpbGUgKCR0aGlzLT5zdGF0ZSAmJiAkdGhpcy0+c3RhdGUgIT09ICdlbWl0JyAmJiAkdGhpcy0+aGFzX2RhdGEoKSkKCQl7CgkJCSRzdGF0ZSA9ICR0aGlzLT5zdGF0ZTsKCQkJJHRoaXMtPiRzdGF0ZSgpOwoJCX0KCQkkdGhpcy0+ZGF0YSA9ICcnOwoJCWlmICgkdGhpcy0+c3RhdGUgPT09ICdlbWl0JykKCQl7CgkJCXJldHVybiB0cnVlOwoJCX0KCQllbHNlCgkJewoJCQkkdGhpcy0+dmVyc2lvbiA9ICcnOwoJCQkkdGhpcy0+ZW5jb2RpbmcgPSAnJzsKCQkJJHRoaXMtPnN0YW5kYWxvbmUgPSAnJzsKCQkJcmV0dXJuIGZhbHNlOwoJCX0KCX0KCgkvKioKCSAqIENoZWNrIHdoZXRoZXIgdGhlcmUgaXMgZGF0YSBiZXlvbmQgdGhlIHBvaW50ZXIKCSAqCgkgKiBAYWNjZXNzIHByaXZhdGUKCSAqIEByZXR1cm4gYm9vbCB0cnVlIGlmIHRoZXJlIGlzIGZ1cnRoZXIgZGF0YSwgZmFsc2UgaWYgbm90CgkgKi8KCWZ1bmN0aW9uIGhhc19kYXRhKCkKCXsKCQlyZXR1cm4gKGJvb2wpICgkdGhpcy0+cG9zaXRpb24gPCAkdGhpcy0+ZGF0YV9sZW5ndGgpOwoJfQoKCS8qKgoJICogQWR2YW5jZSBwYXN0IGFueSB3aGl0ZXNwYWNlCgkgKgoJICogQHJldHVybiBpbnQgTnVtYmVyIG9mIHdoaXRlc3BhY2UgY2hhcmFjdGVycyBwYXNzZWQKCSAqLwoJZnVuY3Rpb24gc2tpcF93aGl0ZXNwYWNlKCkKCXsKCQkkd2hpdGVzcGFjZSA9IHN0cnNwbigkdGhpcy0+ZGF0YSwgIlx4MDlceDBBXHgwRFx4MjAiLCAkdGhpcy0+cG9zaXRpb24pOwoJCSR0aGlzLT5wb3NpdGlvbiArPSAkd2hpdGVzcGFjZTsKCQlyZXR1cm4gJHdoaXRlc3BhY2U7Cgl9CgoJLyoqCgkgKiBSZWFkIHZhbHVlCgkgKi8KCWZ1bmN0aW9uIGdldF92YWx1ZSgpCgl7CgkJJHF1b3RlID0gc3Vic3RyKCR0aGlzLT5kYXRhLCAkdGhpcy0+cG9zaXRpb24sIDEpOwoJCWlmICgkcXVvdGUgPT09ICciJyB8fCAkcXVvdGUgPT09ICInIikKCQl7CgkJCSR0aGlzLT5wb3NpdGlvbisrOwoJCQkkbGVuID0gc3RyY3NwbigkdGhpcy0+ZGF0YSwgJHF1b3RlLCAkdGhpcy0+cG9zaXRpb24pOwoJCQlpZiAoJHRoaXMtPmhhc19kYXRhKCkpCgkJCXsKCQkJCSR2YWx1ZSA9IHN1YnN0cigkdGhpcy0+ZGF0YSwgJHRoaXMtPnBvc2l0aW9uLCAkbGVuKTsKCQkJCSR0aGlzLT5wb3NpdGlvbiArPSAkbGVuICsgMTsKCQkJCXJldHVybiAkdmFsdWU7CgkJCX0KCQl9CgkJcmV0dXJuIGZhbHNlOwoJfQoKCWZ1bmN0aW9uIGJlZm9yZV92ZXJzaW9uX25hbWUoKQoJewoJCWlmICgkdGhpcy0+c2tpcF93aGl0ZXNwYWNlKCkpCgkJewoJCQkkdGhpcy0+c3RhdGUgPSAndmVyc2lvbl9uYW1lJzsKCQl9CgkJZWxzZQoJCXsKCQkJJHRoaXMtPnN0YXRlID0gZmFsc2U7CgkJfQoJfQoKCWZ1bmN0aW9uIHZlcnNpb25fbmFtZSgpCgl7CgkJaWYgKHN1YnN0cigkdGhpcy0+ZGF0YSwgJHRoaXMtPnBvc2l0aW9uLCA3KSA9PT0gJ3ZlcnNpb24nKQoJCXsKCQkJJHRoaXMtPnBvc2l0aW9uICs9IDc7CgkJCSR0aGlzLT5za2lwX3doaXRlc3BhY2UoKTsKCQkJJHRoaXMtPnN0YXRlID0gJ3ZlcnNpb25fZXF1YWxzJzsKCQl9CgkJZWxzZQoJCXsKCQkJJHRoaXMtPnN0YXRlID0gZmFsc2U7CgkJfQoJfQoKCWZ1bmN0aW9uIHZlcnNpb25fZXF1YWxzKCkKCXsKCQlpZiAoc3Vic3RyKCR0aGlzLT5kYXRhLCAkdGhpcy0+cG9zaXRpb24sIDEpID09PSAnPScpCgkJewoJCQkkdGhpcy0+cG9zaXRpb24rKzsKCQkJJHRoaXMtPnNraXBfd2hpdGVzcGFjZSgpOwoJCQkkdGhpcy0+c3RhdGUgPSAndmVyc2lvbl92YWx1ZSc7CgkJfQoJCWVsc2UKCQl7CgkJCSR0aGlzLT5zdGF0ZSA9IGZhbHNlOwoJCX0KCX0KCglmdW5jdGlvbiB2ZXJzaW9uX3ZhbHVlKCkKCXsKCQlpZiAoJHRoaXMtPnZlcnNpb24gPSAkdGhpcy0+Z2V0X3ZhbHVlKCkpCgkJewoJCQkkdGhpcy0+c2tpcF93aGl0ZXNwYWNlKCk7CgkJCWlmICgkdGhpcy0+aGFzX2RhdGEoKSkKCQkJewoJCQkJJHRoaXMtPnN0YXRlID0gJ2VuY29kaW5nX25hbWUnOwoJCQl9CgkJCWVsc2UKCQkJewoJCQkJJHRoaXMtPnN0YXRlID0gJ2VtaXQnOwoJCQl9CgkJfQoJCWVsc2UKCQl7CgkJCSR0aGlzLT5zdGF0ZSA9ICdzdGFuZGFsb25lX25hbWUnOwoJCX0KCX0KCglmdW5jdGlvbiBlbmNvZGluZ19uYW1lKCkKCXsKCQlpZiAoc3Vic3RyKCR0aGlzLT5kYXRhLCAkdGhpcy0+cG9zaXRpb24sIDgpID09PSAnZW5jb2RpbmcnKQoJCXsKCQkJJHRoaXMtPnBvc2l0aW9uICs9IDg7CgkJCSR0aGlzLT5za2lwX3doaXRlc3BhY2UoKTsKCQkJJHRoaXMtPnN0YXRlID0gJ2VuY29kaW5nX2VxdWFscyc7CgkJfQoJCWVsc2UKCQl7CgkJCSR0aGlzLT5zdGF0ZSA9IGZhbHNlOwoJCX0KCX0KCglmdW5jdGlvbiBlbmNvZGluZ19lcXVhbHMoKQoJewoJCWlmIChzdWJzdHIoJHRoaXMtPmRhdGEsICR0aGlzLT5wb3NpdGlvbiwgMSkgPT09ICc9JykKCQl7CgkJCSR0aGlzLT5wb3NpdGlvbisrOwoJCQkkdGhpcy0+c2tpcF93aGl0ZXNwYWNlKCk7CgkJCSR0aGlzLT5zdGF0ZSA9ICdlbmNvZGluZ192YWx1ZSc7CgkJfQoJCWVsc2UKCQl7CgkJCSR0aGlzLT5zdGF0ZSA9IGZhbHNlOwoJCX0KCX0KCglmdW5jdGlvbiBlbmNvZGluZ192YWx1ZSgpCgl7CgkJaWYgKCR0aGlzLT5lbmNvZGluZyA9ICR0aGlzLT5nZXRfdmFsdWUoKSkKCQl7CgkJCSR0aGlzLT5za2lwX3doaXRlc3BhY2UoKTsKCQkJaWYgKCR0aGlzLT5oYXNfZGF0YSgpKQoJCQl7CgkJCQkkdGhpcy0+c3RhdGUgPSAnc3RhbmRhbG9uZV9uYW1lJzsKCQkJfQoJCQllbHNlCgkJCXsKCQkJCSR0aGlzLT5zdGF0ZSA9ICdlbWl0JzsKCQkJfQoJCX0KCQllbHNlCgkJewoJCQkkdGhpcy0+c3RhdGUgPSBmYWxzZTsKCQl9Cgl9CgoJZnVuY3Rpb24gc3RhbmRhbG9uZV9uYW1lKCkKCXsKCQlpZiAoc3Vic3RyKCR0aGlzLT5kYXRhLCAkdGhpcy0+cG9zaXRpb24sIDEwKSA9PT0gJ3N0YW5kYWxvbmUnKQoJCXsKCQkJJHRoaXMtPnBvc2l0aW9uICs9IDEwOwoJCQkkdGhpcy0+c2tpcF93aGl0ZXNwYWNlKCk7CgkJCSR0aGlzLT5zdGF0ZSA9ICdzdGFuZGFsb25lX2VxdWFscyc7CgkJfQoJCWVsc2UKCQl7CgkJCSR0aGlzLT5zdGF0ZSA9IGZhbHNlOwoJCX0KCX0KCglmdW5jdGlvbiBzdGFuZGFsb25lX2VxdWFscygpCgl7CgkJaWYgKHN1YnN0cigkdGhpcy0+ZGF0YSwgJHRoaXMtPnBvc2l0aW9uLCAxKSA9PT0gJz0nKQoJCXsKCQkJJHRoaXMtPnBvc2l0aW9uKys7CgkJCSR0aGlzLT5za2lwX3doaXRlc3BhY2UoKTsKCQkJJHRoaXMtPnN0YXRlID0gJ3N0YW5kYWxvbmVfdmFsdWUnOwoJCX0KCQllbHNlCgkJewoJCQkkdGhpcy0+c3RhdGUgPSBmYWxzZTsKCQl9Cgl9CgoJZnVuY3Rpb24gc3RhbmRhbG9uZV92YWx1ZSgpCgl7CgkJaWYgKCRzdGFuZGFsb25lID0gJHRoaXMtPmdldF92YWx1ZSgpKQoJCXsKCQkJc3dpdGNoICgkc3RhbmRhbG9uZSkKCQkJewoJCQkJY2FzZSAneWVzJzoKCQkJCQkkdGhpcy0+c3RhbmRhbG9uZSA9IHRydWU7CgkJCQkJYnJlYWs7CgoJCQkJY2FzZSAnbm8nOgoJCQkJCSR0aGlzLT5zdGFuZGFsb25lID0gZmFsc2U7CgkJCQkJYnJlYWs7CgoJCQkJZGVmYXVsdDoKCQkJCQkkdGhpcy0+c3RhdGUgPSBmYWxzZTsKCQkJCQlyZXR1cm47CgkJCX0KCgkJCSR0aGlzLT5za2lwX3doaXRlc3BhY2UoKTsKCQkJaWYgKCR0aGlzLT5oYXNfZGF0YSgpKQoJCQl7CgkJCQkkdGhpcy0+c3RhdGUgPSBmYWxzZTsKCQkJfQoJCQllbHNlCgkJCXsKCQkJCSR0aGlzLT5zdGF0ZSA9ICdlbWl0JzsKCQkJfQoJCX0KCQllbHNlCgkJewoJCQkkdGhpcy0+c3RhdGUgPSBmYWxzZTsKCQl9Cgl9Cn0KCmNsYXNzIFNpbXBsZVBpZV9Mb2NhdG9yCnsKCXZhciAkdXNlcmFnZW50OwoJdmFyICR0aW1lb3V0OwoJdmFyICRmaWxlOwoJdmFyICRsb2NhbCA9IGFycmF5KCk7Cgl2YXIgJGVsc2V3aGVyZSA9IGFycmF5KCk7Cgl2YXIgJGZpbGVfY2xhc3MgPSAnU2ltcGxlUGllX0ZpbGUnOwoJdmFyICRjYWNoZWRfZW50aXRpZXMgPSBhcnJheSgpOwoJdmFyICRodHRwX2Jhc2U7Cgl2YXIgJGJhc2U7Cgl2YXIgJGJhc2VfbG9jYXRpb24gPSAwOwoJdmFyICRjaGVja2VkX2ZlZWRzID0gMDsKCXZhciAkbWF4X2NoZWNrZWRfZmVlZHMgPSAxMDsKCXZhciAkY29udGVudF90eXBlX3NuaWZmZXJfY2xhc3MgPSAnU2ltcGxlUGllX0NvbnRlbnRfVHlwZV9TbmlmZmVyJzsKCglmdW5jdGlvbiBTaW1wbGVQaWVfTG9jYXRvcigmJGZpbGUsICR0aW1lb3V0ID0gMTAsICR1c2VyYWdlbnQgPSBudWxsLCAkZmlsZV9jbGFzcyA9ICdTaW1wbGVQaWVfRmlsZScsICRtYXhfY2hlY2tlZF9mZWVkcyA9IDEwLCAkY29udGVudF90eXBlX3NuaWZmZXJfY2xhc3MgPSAnU2ltcGxlUGllX0NvbnRlbnRfVHlwZV9TbmlmZmVyJykKCXsKCQkkdGhpcy0+ZmlsZSA9JiAkZmlsZTsKCQkkdGhpcy0+ZmlsZV9jbGFzcyA9ICRmaWxlX2NsYXNzOwoJCSR0aGlzLT51c2VyYWdlbnQgPSAkdXNlcmFnZW50OwoJCSR0aGlzLT50aW1lb3V0ID0gJHRpbWVvdXQ7CgkJJHRoaXMtPm1heF9jaGVja2VkX2ZlZWRzID0gJG1heF9jaGVja2VkX2ZlZWRzOwoJCSR0aGlzLT5jb250ZW50X3R5cGVfc25pZmZlcl9jbGFzcyA9ICRjb250ZW50X3R5cGVfc25pZmZlcl9jbGFzczsKCX0KCglmdW5jdGlvbiBmaW5kKCR0eXBlID0gU0lNUExFUElFX0xPQ0FUT1JfQUxMKQoJewoJCWlmICgkdGhpcy0+aXNfZmVlZCgkdGhpcy0+ZmlsZSkpCgkJewoJCQlyZXR1cm4gJHRoaXMtPmZpbGU7CgkJfQoKCQlpZiAoJHRoaXMtPmZpbGUtPm1ldGhvZCAmIFNJTVBMRVBJRV9GSUxFX1NPVVJDRV9SRU1PVEUpCgkJewoJCQkkc25pZmZlciA9IG5ldyAkdGhpcy0+Y29udGVudF90eXBlX3NuaWZmZXJfY2xhc3MoJHRoaXMtPmZpbGUpOwoJCQlpZiAoJHNuaWZmZXItPmdldF90eXBlKCkgIT09ICd0ZXh0L2h0bWwnKQoJCQl7CgkJCQlyZXR1cm4gbnVsbDsKCQkJfQoJCX0KCgkJaWYgKCR0eXBlICYgflNJTVBMRVBJRV9MT0NBVE9SX05PTkUpCgkJewoJCQkkdGhpcy0+Z2V0X2Jhc2UoKTsKCQl9CgoJCWlmICgkdHlwZSAmIFNJTVBMRVBJRV9MT0NBVE9SX0FVVE9ESVNDT1ZFUlkgJiYgJHdvcmtpbmcgPSAkdGhpcy0+YXV0b2Rpc2NvdmVyeSgpKQoJCXsKCQkJcmV0dXJuICR3b3JraW5nOwoJCX0KCgkJaWYgKCR0eXBlICYgKFNJTVBMRVBJRV9MT0NBVE9SX0xPQ0FMX0VYVEVOU0lPTiB8IFNJTVBMRVBJRV9MT0NBVE9SX0xPQ0FMX0JPRFkgfCBTSU1QTEVQSUVfTE9DQVRPUl9SRU1PVEVfRVhURU5TSU9OIHwgU0lNUExFUElFX0xPQ0FUT1JfUkVNT1RFX0JPRFkpICYmICR0aGlzLT5nZXRfbGlua3MoKSkKCQl7CgkJCWlmICgkdHlwZSAmIFNJTVBMRVBJRV9MT0NBVE9SX0xPQ0FMX0VYVEVOU0lPTiAmJiAkd29ya2luZyA9ICR0aGlzLT5leHRlbnNpb24oJHRoaXMtPmxvY2FsKSkKCQkJewoJCQkJcmV0dXJuICR3b3JraW5nOwoJCQl9CgoJCQlpZiAoJHR5cGUgJiBTSU1QTEVQSUVfTE9DQVRPUl9MT0NBTF9CT0RZICYmICR3b3JraW5nID0gJHRoaXMtPmJvZHkoJHRoaXMtPmxvY2FsKSkKCQkJewoJCQkJcmV0dXJuICR3b3JraW5nOwoJCQl9CgoJCQlpZiAoJHR5cGUgJiBTSU1QTEVQSUVfTE9DQVRPUl9SRU1PVEVfRVhURU5TSU9OICYmICR3b3JraW5nID0gJHRoaXMtPmV4dGVuc2lvbigkdGhpcy0+ZWxzZXdoZXJlKSkKCQkJewoJCQkJcmV0dXJuICR3b3JraW5nOwoJCQl9CgoJCQlpZiAoJHR5cGUgJiBTSU1QTEVQSUVfTE9DQVRPUl9SRU1PVEVfQk9EWSAmJiAkd29ya2luZyA9ICR0aGlzLT5ib2R5KCR0aGlzLT5lbHNld2hlcmUpKQoJCQl7CgkJCQlyZXR1cm4gJHdvcmtpbmc7CgkJCX0KCQl9CgkJcmV0dXJuIG51bGw7Cgl9CgoJZnVuY3Rpb24gaXNfZmVlZCgmJGZpbGUpCgl7CgkJaWYgKCRmaWxlLT5tZXRob2QgJiBTSU1QTEVQSUVfRklMRV9TT1VSQ0VfUkVNT1RFKQoJCXsKCQkJJHNuaWZmZXIgPSBuZXcgJHRoaXMtPmNvbnRlbnRfdHlwZV9zbmlmZmVyX2NsYXNzKCRmaWxlKTsKCQkJJHNuaWZmZWQgPSAkc25pZmZlci0+Z2V0X3R5cGUoKTsKCQkJaWYgKGluX2FycmF5KCRzbmlmZmVkLCBhcnJheSgnYXBwbGljYXRpb24vcnNzK3htbCcsICdhcHBsaWNhdGlvbi9yZGYreG1sJywgJ3RleHQvcmRmJywgJ2FwcGxpY2F0aW9uL2F0b20reG1sJywgJ3RleHQveG1sJywgJ2FwcGxpY2F0aW9uL3htbCcpKSkKCQkJewoJCQkJcmV0dXJuIHRydWU7CgkJCX0KCQkJZWxzZQoJCQl7CgkJCQlyZXR1cm4gZmFsc2U7CgkJCX0KCQl9CgkJZWxzZWlmICgkZmlsZS0+bWV0aG9kICYgU0lNUExFUElFX0ZJTEVfU09VUkNFX0xPQ0FMKQoJCXsKCQkJcmV0dXJuIHRydWU7CgkJfQoJCWVsc2UKCQl7CgkJCXJldHVybiBmYWxzZTsKCQl9Cgl9CgoJZnVuY3Rpb24gZ2V0X2Jhc2UoKQoJewoJCSR0aGlzLT5odHRwX2Jhc2UgPSAkdGhpcy0+ZmlsZS0+dXJsOwoJCSR0aGlzLT5iYXNlID0gJHRoaXMtPmh0dHBfYmFzZTsKCQkkZWxlbWVudHMgPSBTaW1wbGVQaWVfTWlzYzo6Z2V0X2VsZW1lbnQoJ2Jhc2UnLCAkdGhpcy0+ZmlsZS0+Ym9keSk7CgkJZm9yZWFjaCAoJGVsZW1lbnRzIGFzICRlbGVtZW50KQoJCXsKCQkJaWYgKCRlbGVtZW50WydhdHRyaWJzJ11bJ2hyZWYnXVsnZGF0YSddICE9PSAnJykKCQkJewoJCQkJJHRoaXMtPmJhc2UgPSBTaW1wbGVQaWVfTWlzYzo6YWJzb2x1dGl6ZV91cmwodHJpbSgkZWxlbWVudFsnYXR0cmlicyddWydocmVmJ11bJ2RhdGEnXSksICR0aGlzLT5odHRwX2Jhc2UpOwoJCQkJJHRoaXMtPmJhc2VfbG9jYXRpb24gPSAkZWxlbWVudFsnb2Zmc2V0J107CgkJCQlicmVhazsKCQkJfQoJCX0KCX0KCglmdW5jdGlvbiBhdXRvZGlzY292ZXJ5KCkKCXsKCQkkbGlua3MgPSBhcnJheV9tZXJnZShTaW1wbGVQaWVfTWlzYzo6Z2V0X2VsZW1lbnQoJ2xpbmsnLCAkdGhpcy0+ZmlsZS0+Ym9keSksIFNpbXBsZVBpZV9NaXNjOjpnZXRfZWxlbWVudCgnYScsICR0aGlzLT5maWxlLT5ib2R5KSwgU2ltcGxlUGllX01pc2M6OmdldF9lbGVtZW50KCdhcmVhJywgJHRoaXMtPmZpbGUtPmJvZHkpKTsKCQkkZG9uZSA9IGFycmF5KCk7CgkJZm9yZWFjaCAoJGxpbmtzIGFzICRsaW5rKQoJCXsKCQkJaWYgKCR0aGlzLT5jaGVja2VkX2ZlZWRzID09ICR0aGlzLT5tYXhfY2hlY2tlZF9mZWVkcykKCQkJewoJCQkJYnJlYWs7CgkJCX0KCQkJaWYgKGlzc2V0KCRsaW5rWydhdHRyaWJzJ11bJ2hyZWYnXVsnZGF0YSddKSAmJiBpc3NldCgkbGlua1snYXR0cmlicyddWydyZWwnXVsnZGF0YSddKSkKCQkJewoJCQkJJHJlbCA9IGFycmF5X3VuaXF1ZShTaW1wbGVQaWVfTWlzYzo6c3BhY2Vfc2VwZXJhdGVkX3Rva2VucyhzdHJ0b2xvd2VyKCRsaW5rWydhdHRyaWJzJ11bJ3JlbCddWydkYXRhJ10pKSk7CgoJCQkJaWYgKCR0aGlzLT5iYXNlX2xvY2F0aW9uIDwgJGxpbmtbJ29mZnNldCddKQoJCQkJewoJCQkJCSRocmVmID0gU2ltcGxlUGllX01pc2M6OmFic29sdXRpemVfdXJsKHRyaW0oJGxpbmtbJ2F0dHJpYnMnXVsnaHJlZiddWydkYXRhJ10pLCAkdGhpcy0+YmFzZSk7CgkJCQl9CgkJCQllbHNlCgkJCQl7CgkJCQkJJGhyZWYgPSBTaW1wbGVQaWVfTWlzYzo6YWJzb2x1dGl6ZV91cmwodHJpbSgkbGlua1snYXR0cmlicyddWydocmVmJ11bJ2RhdGEnXSksICR0aGlzLT5odHRwX2Jhc2UpOwoJCQkJfQoKCQkJCWlmICghaW5fYXJyYXkoJGhyZWYsICRkb25lKSAmJiBpbl9hcnJheSgnZmVlZCcsICRyZWwpIHx8IChpbl9hcnJheSgnYWx0ZXJuYXRlJywgJHJlbCkgJiYgIWVtcHR5KCRsaW5rWydhdHRyaWJzJ11bJ3R5cGUnXVsnZGF0YSddKSAmJiBpbl9hcnJheShzdHJ0b2xvd2VyKFNpbXBsZVBpZV9NaXNjOjpwYXJzZV9taW1lKCRsaW5rWydhdHRyaWJzJ11bJ3R5cGUnXVsnZGF0YSddKSksIGFycmF5KCdhcHBsaWNhdGlvbi9yc3MreG1sJywgJ2FwcGxpY2F0aW9uL2F0b20reG1sJykpKSkKCQkJCXsKCQkJCQkkdGhpcy0+Y2hlY2tlZF9mZWVkcysrOwoJCQkJCSRmZWVkID0mIG5ldyAkdGhpcy0+ZmlsZV9jbGFzcygkaHJlZiwgJHRoaXMtPnRpbWVvdXQsIDUsIG51bGwsICR0aGlzLT51c2VyYWdlbnQpOwoJCQkJCWlmICgkdGhpcy0+aXNfZmVlZCgkZmVlZCkpCgkJCQkJewoJCQkJCQlyZXR1cm4gJGZlZWQ7CgkJCQkJfQoJCQkJfQoJCQkJJGRvbmVbXSA9ICRocmVmOwoJCQl9CgkJfQoJCXJldHVybiBudWxsOwoJfQoKCWZ1bmN0aW9uIGdldF9saW5rcygpCgl7CgkJJGxpbmtzID0gU2ltcGxlUGllX01pc2M6OmdldF9lbGVtZW50KCdhJywgJHRoaXMtPmZpbGUtPmJvZHkpOwoJCWZvcmVhY2ggKCRsaW5rcyBhcyAkbGluaykKCQl7CgkJCWlmIChpc3NldCgkbGlua1snYXR0cmlicyddWydocmVmJ11bJ2RhdGEnXSkpCgkJCXsKCQkJCSRocmVmID0gdHJpbSgkbGlua1snYXR0cmlicyddWydocmVmJ11bJ2RhdGEnXSk7CgkJCQkkcGFyc2VkID0gU2ltcGxlUGllX01pc2M6OnBhcnNlX3VybCgkaHJlZik7CgkJCQlpZiAoJHBhcnNlZFsnc2NoZW1lJ10gPT09ICcnIHx8IHByZWdfbWF0Y2goJy9eKGh0dHAocyl8ZmVlZCk/JC9pJywgJHBhcnNlZFsnc2NoZW1lJ10pKQoJCQkJewoJCQkJCWlmICgkdGhpcy0+YmFzZV9sb2NhdGlvbiA8ICRsaW5rWydvZmZzZXQnXSkKCQkJCQl7CgkJCQkJCSRocmVmID0gU2ltcGxlUGllX01pc2M6OmFic29sdXRpemVfdXJsKHRyaW0oJGxpbmtbJ2F0dHJpYnMnXVsnaHJlZiddWydkYXRhJ10pLCAkdGhpcy0+YmFzZSk7CgkJCQkJfQoJCQkJCWVsc2UKCQkJCQl7CgkJCQkJCSRocmVmID0gU2ltcGxlUGllX01pc2M6OmFic29sdXRpemVfdXJsKHRyaW0oJGxpbmtbJ2F0dHJpYnMnXVsnaHJlZiddWydkYXRhJ10pLCAkdGhpcy0+aHR0cF9iYXNlKTsKCQkJCQl9CgoJCQkJCSRjdXJyZW50ID0gU2ltcGxlUGllX01pc2M6OnBhcnNlX3VybCgkdGhpcy0+ZmlsZS0+dXJsKTsKCgkJCQkJaWYgKCRwYXJzZWRbJ2F1dGhvcml0eSddID09PSAnJyB8fCAkcGFyc2VkWydhdXRob3JpdHknXSA9PSAkY3VycmVudFsnYXV0aG9yaXR5J10pCgkJCQkJewoJCQkJCQkkdGhpcy0+bG9jYWxbXSA9ICRocmVmOwoJCQkJCX0KCQkJCQllbHNlCgkJCQkJewoJCQkJCQkkdGhpcy0+ZWxzZXdoZXJlW10gPSAkaHJlZjsKCQkJCQl9CgkJCQl9CgkJCX0KCQl9CgkJJHRoaXMtPmxvY2FsID0gYXJyYXlfdW5pcXVlKCR0aGlzLT5sb2NhbCk7CgkJJHRoaXMtPmVsc2V3aGVyZSA9IGFycmF5X3VuaXF1ZSgkdGhpcy0+ZWxzZXdoZXJlKTsKCQlpZiAoIWVtcHR5KCR0aGlzLT5sb2NhbCkgfHwgIWVtcHR5KCR0aGlzLT5lbHNld2hlcmUpKQoJCXsKCQkJcmV0dXJuIHRydWU7CgkJfQoJCXJldHVybiBudWxsOwoJfQoKCWZ1bmN0aW9uIGV4dGVuc2lvbigmJGFycmF5KQoJewoJCWZvcmVhY2ggKCRhcnJheSBhcyAka2V5ID0+ICR2YWx1ZSkKCQl7CgkJCWlmICgkdGhpcy0+Y2hlY2tlZF9mZWVkcyA9PSAkdGhpcy0+bWF4X2NoZWNrZWRfZmVlZHMpCgkJCXsKCQkJCWJyZWFrOwoJCQl9CgkJCWlmIChpbl9hcnJheShzdHJ0b2xvd2VyKHN0cnJjaHIoJHZhbHVlLCAnLicpKSwgYXJyYXkoJy5yc3MnLCAnLnJkZicsICcuYXRvbScsICcueG1sJykpKQoJCQl7CgkJCQkkdGhpcy0+Y2hlY2tlZF9mZWVkcysrOwoJCQkJJGZlZWQgPSYgbmV3ICR0aGlzLT5maWxlX2NsYXNzKCR2YWx1ZSwgJHRoaXMtPnRpbWVvdXQsIDUsIG51bGwsICR0aGlzLT51c2VyYWdlbnQpOwoJCQkJaWYgKCR0aGlzLT5pc19mZWVkKCRmZWVkKSkKCQkJCXsKCQkJCQlyZXR1cm4gJGZlZWQ7CgkJCQl9CgkJCQllbHNlCgkJCQl7CgkJCQkJdW5zZXQoJGFycmF5WyRrZXldKTsKCQkJCX0KCQkJfQoJCX0KCQlyZXR1cm4gbnVsbDsKCX0KCglmdW5jdGlvbiBib2R5KCYkYXJyYXkpCgl7CgkJZm9yZWFjaCAoJGFycmF5IGFzICRrZXkgPT4gJHZhbHVlKQoJCXsKCQkJaWYgKCR0aGlzLT5jaGVja2VkX2ZlZWRzID09ICR0aGlzLT5tYXhfY2hlY2tlZF9mZWVkcykKCQkJewoJCQkJYnJlYWs7CgkJCX0KCQkJaWYgKHByZWdfbWF0Y2goJy8ocnNzfHJkZnxhdG9tfHhtbCkvaScsICR2YWx1ZSkpCgkJCXsKCQkJCSR0aGlzLT5jaGVja2VkX2ZlZWRzKys7CgkJCQkkZmVlZCA9JiBuZXcgJHRoaXMtPmZpbGVfY2xhc3MoJHZhbHVlLCAkdGhpcy0+dGltZW91dCwgNSwgbnVsbCwgJHRoaXMtPnVzZXJhZ2VudCk7CgkJCQlpZiAoJHRoaXMtPmlzX2ZlZWQoJGZlZWQpKQoJCQkJewoJCQkJCXJldHVybiAkZmVlZDsKCQkJCX0KCQkJCWVsc2UKCQkJCXsKCQkJCQl1bnNldCgkYXJyYXlbJGtleV0pOwoJCQkJfQoJCQl9CgkJfQoJCXJldHVybiBudWxsOwoJfQp9CgpjbGFzcyBTaW1wbGVQaWVfUGFyc2VyCnsKCXZhciAkZXJyb3JfY29kZTsKCXZhciAkZXJyb3Jfc3RyaW5nOwoJdmFyICRjdXJyZW50X2xpbmU7Cgl2YXIgJGN1cnJlbnRfY29sdW1uOwoJdmFyICRjdXJyZW50X2J5dGU7Cgl2YXIgJHNlcGFyYXRvciA9ICcgJzsKCXZhciAkZmVlZCA9IGZhbHNlOwoJdmFyICRuYW1lc3BhY2UgPSBhcnJheSgnJyk7Cgl2YXIgJGVsZW1lbnQgPSBhcnJheSgnJyk7Cgl2YXIgJHhtbF9iYXNlID0gYXJyYXkoJycpOwoJdmFyICR4bWxfYmFzZV9leHBsaWNpdCA9IGFycmF5KGZhbHNlKTsKCXZhciAkeG1sX2xhbmcgPSBhcnJheSgnJyk7Cgl2YXIgJGRhdGEgPSBhcnJheSgpOwoJdmFyICRkYXRhcyA9IGFycmF5KGFycmF5KCkpOwoJdmFyICRjdXJyZW50X3hodG1sX2NvbnN0cnVjdCA9IC0xOwoJdmFyICRlbmNvZGluZzsKCglmdW5jdGlvbiBwYXJzZSgmJGRhdGEsICRlbmNvZGluZykKCXsKCQkvLyBVc2UgVVRGLTggaWYgd2UgZ2V0IHBhc3NlZCBVUy1BU0NJSSwgYXMgZXZlcnkgVVMtQVNDSUkgY2hhcmFjdGVyIGlzIGEgVVRGLTggY2hhcmFjdGVyCgkJaWYgKHN0cnRvdXBwZXIoJGVuY29kaW5nKSA9PSAnVVMtQVNDSUknKQoJCXsKCQkJJHRoaXMtPmVuY29kaW5nID0gJ1VURi04JzsKCQl9CgkJZWxzZQoJCXsKCQkJJHRoaXMtPmVuY29kaW5nID0gJGVuY29kaW5nOwoJCX0KCgkJLy8gU3RyaXAgQk9NOgoJCS8vIFVURi0zMiBCaWcgRW5kaWFuIEJPTQoJCWlmIChzdWJzdHIoJGRhdGEsIDAsIDQpID09PSAiXHgwMFx4MDBceEZFXHhGRiIpCgkJewoJCQkkZGF0YSA9IHN1YnN0cigkZGF0YSwgNCk7CgkJfQoJCS8vIFVURi0zMiBMaXR0bGUgRW5kaWFuIEJPTQoJCWVsc2VpZiAoc3Vic3RyKCRkYXRhLCAwLCA0KSA9PT0gIlx4RkZceEZFXHgwMFx4MDAiKQoJCXsKCQkJJGRhdGEgPSBzdWJzdHIoJGRhdGEsIDQpOwoJCX0KCQkvLyBVVEYtMTYgQmlnIEVuZGlhbiBCT00KCQllbHNlaWYgKHN1YnN0cigkZGF0YSwgMCwgMikgPT09ICJceEZFXHhGRiIpCgkJewoJCQkkZGF0YSA9IHN1YnN0cigkZGF0YSwgMik7CgkJfQoJCS8vIFVURi0xNiBMaXR0bGUgRW5kaWFuIEJPTQoJCWVsc2VpZiAoc3Vic3RyKCRkYXRhLCAwLCAyKSA9PT0gIlx4RkZceEZFIikKCQl7CgkJCSRkYXRhID0gc3Vic3RyKCRkYXRhLCAyKTsKCQl9CgkJLy8gVVRGLTggQk9NCgkJZWxzZWlmIChzdWJzdHIoJGRhdGEsIDAsIDMpID09PSAiXHhFRlx4QkJceEJGIikKCQl7CgkJCSRkYXRhID0gc3Vic3RyKCRkYXRhLCAzKTsKCQl9CgoJCWlmIChzdWJzdHIoJGRhdGEsIDAsIDUpID09PSAnPD94bWwnICYmIHN0cnNwbihzdWJzdHIoJGRhdGEsIDUsIDEpLCAiXHgwOVx4MEFceDBEXHgyMCIpICYmICgkcG9zID0gc3RycG9zKCRkYXRhLCAnPz4nKSkgIT09IGZhbHNlKQoJCXsKCQkJJGRlY2xhcmF0aW9uID0gbmV3IFNpbXBsZVBpZV9YTUxfRGVjbGFyYXRpb25fUGFyc2VyKHN1YnN0cigkZGF0YSwgNSwgJHBvcyAtIDUpKTsKCQkJaWYgKCRkZWNsYXJhdGlvbi0+cGFyc2UoKSkKCQkJewoJCQkJJGRhdGEgPSBzdWJzdHIoJGRhdGEsICRwb3MgKyAyKTsKCQkJCSRkYXRhID0gJzw/eG1sIHZlcnNpb249IicgLiAkZGVjbGFyYXRpb24tPnZlcnNpb24gLiAnIiBlbmNvZGluZz0iJyAuICRlbmNvZGluZyAuICciIHN0YW5kYWxvbmU9IicgLiAoKCRkZWNsYXJhdGlvbi0+c3RhbmRhbG9uZSkgPyAneWVzJyA6ICdubycpIC4gJyI/PicgLiAkZGF0YTsKCQkJfQoJCQllbHNlCgkJCXsKCQkJCSR0aGlzLT5lcnJvcl9zdHJpbmcgPSAnU2ltcGxlUGllIGJ1ZyEgUGxlYXNlIHJlcG9ydCB0aGlzISc7CgkJCQlyZXR1cm4gZmFsc2U7CgkJCX0KCQl9CgoJCS8vIFdvcmsgYXJvdW5kIGxpYnhtbCBidWcKCQkkZGF0YSA9IHN0cl9yZXBsYWNlKCcmbHQ7JywgJyYjNjA7JywgJGRhdGEpOwoJCSRkYXRhID0gc3RyX3JlcGxhY2UoJyZndDsnLCAnJiM2MjsnLCAkZGF0YSk7CgkJJGRhdGEgPSBzdHJfcmVwbGFjZSgnJmFtcDsnLCAnJiMzODsnLCAkZGF0YSk7CgkJJGRhdGEgPSBzdHJfcmVwbGFjZSgnJmFwb3M7JywgJyYjMzk7JywgJGRhdGEpOwoJCSRkYXRhID0gc3RyX3JlcGxhY2UoJyZxdW90OycsICcmIzM0OycsICRkYXRhKTsKCgkJJHJldHVybiA9IHRydWU7CgoJCS8vIENyZWF0ZSB0aGUgcGFyc2VyCgkJJHhtbCA9IHhtbF9wYXJzZXJfY3JlYXRlX25zKCR0aGlzLT5lbmNvZGluZywgJHRoaXMtPnNlcGFyYXRvcik7CgkJeG1sX3BhcnNlcl9zZXRfb3B0aW9uKCR4bWwsIFhNTF9PUFRJT05fU0tJUF9XSElURSwgMSk7CgkJeG1sX3BhcnNlcl9zZXRfb3B0aW9uKCR4bWwsIFhNTF9PUFRJT05fQ0FTRV9GT0xESU5HLCAwKTsKCQl4bWxfc2V0X29iamVjdCgkeG1sLCAkdGhpcyk7CgkJeG1sX3NldF9jaGFyYWN0ZXJfZGF0YV9oYW5kbGVyKCR4bWwsICdjZGF0YScpOwoJCXhtbF9zZXRfZWxlbWVudF9oYW5kbGVyKCR4bWwsICd0YWdfb3BlbicsICd0YWdfY2xvc2UnKTsKCgkJLy8gUGFyc2UhCgkJaWYgKCF4bWxfcGFyc2UoJHhtbCwgJGRhdGEsIHRydWUpKQoJCXsKCQkJJHRoaXMtPmVycm9yX2NvZGUgPSB4bWxfZ2V0X2Vycm9yX2NvZGUoJHhtbCk7CgkJCSR0aGlzLT5lcnJvcl9zdHJpbmcgPSB4bWxfZXJyb3Jfc3RyaW5nKCR0aGlzLT5lcnJvcl9jb2RlKTsKCQkJJHJldHVybiA9IGZhbHNlOwoJCX0KCQkkdGhpcy0+Y3VycmVudF9saW5lID0geG1sX2dldF9jdXJyZW50X2xpbmVfbnVtYmVyKCR4bWwpOwoJCSR0aGlzLT5jdXJyZW50X2NvbHVtbiA9IHhtbF9nZXRfY3VycmVudF9jb2x1bW5fbnVtYmVyKCR4bWwpOwoJCSR0aGlzLT5jdXJyZW50X2J5dGUgPSB4bWxfZ2V0X2N1cnJlbnRfYnl0ZV9pbmRleCgkeG1sKTsKCQl4bWxfcGFyc2VyX2ZyZWUoJHhtbCk7CgkJcmV0dXJuICRyZXR1cm47Cgl9CgoJZnVuY3Rpb24gZ2V0X2Vycm9yX2NvZGUoKQoJewoJCXJldHVybiAkdGhpcy0+ZXJyb3JfY29kZTsKCX0KCglmdW5jdGlvbiBnZXRfZXJyb3Jfc3RyaW5nKCkKCXsKCQlyZXR1cm4gJHRoaXMtPmVycm9yX3N0cmluZzsKCX0KCglmdW5jdGlvbiBnZXRfY3VycmVudF9saW5lKCkKCXsKCQlyZXR1cm4gJHRoaXMtPmN1cnJlbnRfbGluZTsKCX0KCglmdW5jdGlvbiBnZXRfY3VycmVudF9jb2x1bW4oKQoJewoJCXJldHVybiAkdGhpcy0+Y3VycmVudF9jb2x1bW47Cgl9CgoJZnVuY3Rpb24gZ2V0X2N1cnJlbnRfYnl0ZSgpCgl7CgkJcmV0dXJuICR0aGlzLT5jdXJyZW50X2J5dGU7Cgl9CgoJZnVuY3Rpb24gZ2V0X2RhdGEoKQoJewoJCXJldHVybiAkdGhpcy0+ZGF0YTsKCX0KCglmdW5jdGlvbiB0YWdfb3BlbigkcGFyc2VyLCAkdGFnLCAkYXR0cmlidXRlcykKCXsKCQlpZiAoJHRoaXMtPmZlZWQgPT09IDApCgkJewoJCQlyZXR1cm47CgkJfQoJCWVsc2VpZiAoJHRoaXMtPmZlZWQgPT0gZmFsc2UpCgkJewoJCQlpZiAoaW5fYXJyYXkoJHRhZywgYXJyYXkoCgkJCQlTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMTAgLiAkdGhpcy0+c2VwYXJhdG9yIC4gJ2ZlZWQnLAoJCQkJU0lNUExFUElFX05BTUVTUEFDRV9BVE9NXzAzIC4gJHRoaXMtPnNlcGFyYXRvciAuICdmZWVkJywKCQkJCSdyc3MnLAoJCQkJU0lNUExFUElFX05BTUVTUEFDRV9SREYgLiAkdGhpcy0+c2VwYXJhdG9yIC4gJ1JERicKCQkJKSkpCgkJCXsKCQkJCQkkdGhpcy0+ZmVlZCA9IDE7CgkJCX0KCQl9CgkJZWxzZQoJCXsKCQkJJHRoaXMtPmZlZWQrKzsKCQl9CgoJCWxpc3QoJHRoaXMtPm5hbWVzcGFjZVtdLCAkdGhpcy0+ZWxlbWVudFtdKSA9ICR0aGlzLT5zcGxpdF9ucygkdGFnKTsKCgkJJGF0dHJpYnMgPSBhcnJheSgpOwoJCWZvcmVhY2ggKCRhdHRyaWJ1dGVzIGFzICRuYW1lID0+ICR2YWx1ZSkKCQl7CgkJCWxpc3QoJGF0dHJpYl9uYW1lc3BhY2UsICRhdHRyaWJ1dGUpID0gJHRoaXMtPnNwbGl0X25zKCRuYW1lKTsKCQkJJGF0dHJpYnNbJGF0dHJpYl9uYW1lc3BhY2VdWyRhdHRyaWJ1dGVdID0gJHZhbHVlOwoJCX0KCgkJaWYgKGlzc2V0KCRhdHRyaWJzW1NJTVBMRVBJRV9OQU1FU1BBQ0VfWE1MXVsnYmFzZSddKSkKCQl7CgkJCSR0aGlzLT54bWxfYmFzZVtdID0gU2ltcGxlUGllX01pc2M6OmFic29sdXRpemVfdXJsKCRhdHRyaWJzW1NJTVBMRVBJRV9OQU1FU1BBQ0VfWE1MXVsnYmFzZSddLCBlbmQoJHRoaXMtPnhtbF9iYXNlKSk7CgkJCSR0aGlzLT54bWxfYmFzZV9leHBsaWNpdFtdID0gdHJ1ZTsKCQl9CgkJZWxzZQoJCXsKCQkJJHRoaXMtPnhtbF9iYXNlW10gPSBlbmQoJHRoaXMtPnhtbF9iYXNlKTsKCQkJJHRoaXMtPnhtbF9iYXNlX2V4cGxpY2l0W10gPSBlbmQoJHRoaXMtPnhtbF9iYXNlX2V4cGxpY2l0KTsKCQl9CgoJCWlmIChpc3NldCgkYXR0cmlic1tTSU1QTEVQSUVfTkFNRVNQQUNFX1hNTF1bJ2xhbmcnXSkpCgkJewoJCQkkdGhpcy0+eG1sX2xhbmdbXSA9ICRhdHRyaWJzW1NJTVBMRVBJRV9OQU1FU1BBQ0VfWE1MXVsnbGFuZyddOwoJCX0KCQllbHNlCgkJewoJCQkkdGhpcy0+eG1sX2xhbmdbXSA9IGVuZCgkdGhpcy0+eG1sX2xhbmcpOwoJCX0KCgkJaWYgKCR0aGlzLT5jdXJyZW50X3hodG1sX2NvbnN0cnVjdCA+PSAwKQoJCXsKCQkJJHRoaXMtPmN1cnJlbnRfeGh0bWxfY29uc3RydWN0Kys7CgkJCWlmIChlbmQoJHRoaXMtPm5hbWVzcGFjZSkgPT0gU0lNUExFUElFX05BTUVTUEFDRV9YSFRNTCkKCQkJewoJCQkJJHRoaXMtPmRhdGFbJ2RhdGEnXSAuPSAnPCcgLiBlbmQoJHRoaXMtPmVsZW1lbnQpOwoJCQkJaWYgKGlzc2V0KCRhdHRyaWJzWycnXSkpCgkJCQl7CgkJCQkJZm9yZWFjaCAoJGF0dHJpYnNbJyddIGFzICRuYW1lID0+ICR2YWx1ZSkKCQkJCQl7CgkJCQkJCSR0aGlzLT5kYXRhWydkYXRhJ10gLj0gJyAnIC4gJG5hbWUgLiAnPSInIC4gaHRtbHNwZWNpYWxjaGFycygkdmFsdWUsIEVOVF9DT01QQVQsICR0aGlzLT5lbmNvZGluZykgLiAnIic7CgkJCQkJfQoJCQkJfQoJCQkJJHRoaXMtPmRhdGFbJ2RhdGEnXSAuPSAnPic7CgkJCX0KCQl9CgkJZWxzZQoJCXsKCQkJJHRoaXMtPmRhdGFzW10gPSYgJHRoaXMtPmRhdGE7CgkJCSR0aGlzLT5kYXRhID0mICR0aGlzLT5kYXRhWydjaGlsZCddW2VuZCgkdGhpcy0+bmFtZXNwYWNlKV1bZW5kKCR0aGlzLT5lbGVtZW50KV1bXTsKCQkJJHRoaXMtPmRhdGEgPSBhcnJheSgnZGF0YScgPT4gJycsICdhdHRyaWJzJyA9PiAkYXR0cmlicywgJ3htbF9iYXNlJyA9PiBlbmQoJHRoaXMtPnhtbF9iYXNlKSwgJ3htbF9iYXNlX2V4cGxpY2l0JyA9PiBlbmQoJHRoaXMtPnhtbF9iYXNlX2V4cGxpY2l0KSwgJ3htbF9sYW5nJyA9PiBlbmQoJHRoaXMtPnhtbF9sYW5nKSk7CgkJCWlmICgoZW5kKCR0aGlzLT5uYW1lc3BhY2UpID09IFNJTVBMRVBJRV9OQU1FU1BBQ0VfQVRPTV8wMyAmJiBpbl9hcnJheShlbmQoJHRoaXMtPmVsZW1lbnQpLCBhcnJheSgndGl0bGUnLCAndGFnbGluZScsICdjb3B5cmlnaHQnLCAnaW5mbycsICdzdW1tYXJ5JywgJ2NvbnRlbnQnKSkgJiYgaXNzZXQoJGF0dHJpYnNbJyddWydtb2RlJ10pICYmICRhdHRyaWJzWycnXVsnbW9kZSddID09ICd4bWwnKQoJCQl8fCAoZW5kKCR0aGlzLT5uYW1lc3BhY2UpID09IFNJTVBMRVBJRV9OQU1FU1BBQ0VfQVRPTV8xMCAmJiBpbl9hcnJheShlbmQoJHRoaXMtPmVsZW1lbnQpLCBhcnJheSgncmlnaHRzJywgJ3N1YnRpdGxlJywgJ3N1bW1hcnknLCAnaW5mbycsICd0aXRsZScsICdjb250ZW50JykpICYmIGlzc2V0KCRhdHRyaWJzWycnXVsndHlwZSddKSAmJiAkYXR0cmlic1snJ11bJ3R5cGUnXSA9PSAneGh0bWwnKSkKCQkJewoJCQkJJHRoaXMtPmN1cnJlbnRfeGh0bWxfY29uc3RydWN0ID0gMDsKCQkJfQoJCX0KCX0KCglmdW5jdGlvbiBjZGF0YSgkcGFyc2VyLCAkY2RhdGEpCgl7CgkJaWYgKCR0aGlzLT5jdXJyZW50X3hodG1sX2NvbnN0cnVjdCA+PSAwKQoJCXsKCQkJJHRoaXMtPmRhdGFbJ2RhdGEnXSAuPSBodG1sc3BlY2lhbGNoYXJzKCRjZGF0YSwgRU5UX1FVT1RFUywgJHRoaXMtPmVuY29kaW5nKTsKCQl9CgkJZWxzZWlmICgkdGhpcy0+ZmVlZCA+IDEpCgkJewoJCQkkdGhpcy0+ZGF0YVsnZGF0YSddIC49ICRjZGF0YTsKCQl9Cgl9CgoJZnVuY3Rpb24gdGFnX2Nsb3NlKCRwYXJzZXIsICR0YWcpCgl7CgkJaWYgKCEkdGhpcy0+ZmVlZCkKCQl7CgkJCXJldHVybjsKCQl9CgoJCWlmICgkdGhpcy0+Y3VycmVudF94aHRtbF9jb25zdHJ1Y3QgPj0gMCkKCQl7CgkJCSR0aGlzLT5jdXJyZW50X3hodG1sX2NvbnN0cnVjdC0tOwoJCQlpZiAoZW5kKCR0aGlzLT5uYW1lc3BhY2UpID09IFNJTVBMRVBJRV9OQU1FU1BBQ0VfWEhUTUwgJiYgIWluX2FycmF5KGVuZCgkdGhpcy0+ZWxlbWVudCksIGFycmF5KCdhcmVhJywgJ2Jhc2UnLCAnYmFzZWZvbnQnLCAnYnInLCAnY29sJywgJ2ZyYW1lJywgJ2hyJywgJ2ltZycsICdpbnB1dCcsICdpc2luZGV4JywgJ2xpbmsnLCAnbWV0YScsICdwYXJhbScpKSkKCQkJewoJCQkJJHRoaXMtPmRhdGFbJ2RhdGEnXSAuPSAnPC8nIC4gZW5kKCR0aGlzLT5lbGVtZW50KSAuICc+JzsKCQkJfQoJCX0KCQlpZiAoJHRoaXMtPmN1cnJlbnRfeGh0bWxfY29uc3RydWN0ID09IC0xKQoJCXsKCQkJJHRoaXMtPmRhdGEgPSYgJHRoaXMtPmRhdGFzWyR0aGlzLT5mZWVkXTsKCQkJYXJyYXlfcG9wKCR0aGlzLT5kYXRhcyk7CgkJfQoKCQlhcnJheV9wb3AoJHRoaXMtPmVsZW1lbnQpOwoJCWFycmF5X3BvcCgkdGhpcy0+bmFtZXNwYWNlKTsKCQlhcnJheV9wb3AoJHRoaXMtPnhtbF9iYXNlKTsKCQlhcnJheV9wb3AoJHRoaXMtPnhtbF9iYXNlX2V4cGxpY2l0KTsKCQlhcnJheV9wb3AoJHRoaXMtPnhtbF9sYW5nKTsKCQkkdGhpcy0+ZmVlZC0tOwoJfQoKCWZ1bmN0aW9uIHNwbGl0X25zKCRzdHJpbmcpCgl7CgkJc3RhdGljICRjYWNoZSA9IGFycmF5KCk7CgkJaWYgKCFpc3NldCgkY2FjaGVbJHN0cmluZ10pKQoJCXsKCQkJaWYgKCRwb3MgPSBzdHJwb3MoJHN0cmluZywgJHRoaXMtPnNlcGFyYXRvcikpCgkJCXsKCQkJCXN0YXRpYyAkc2VwYXJhdG9yX2xlbmd0aDsKCQkJCWlmICghJHNlcGFyYXRvcl9sZW5ndGgpCgkJCQl7CgkJCQkJJHNlcGFyYXRvcl9sZW5ndGggPSBzdHJsZW4oJHRoaXMtPnNlcGFyYXRvcik7CgkJCQl9CgkJCQkkbmFtZXNwYWNlID0gc3Vic3RyKCRzdHJpbmcsIDAsICRwb3MpOwoJCQkJJGxvY2FsX25hbWUgPSBzdWJzdHIoJHN0cmluZywgJHBvcyArICRzZXBhcmF0b3JfbGVuZ3RoKTsKCQkJCWlmIChzdHJ0b2xvd2VyKCRuYW1lc3BhY2UpID09PSBTSU1QTEVQSUVfTkFNRVNQQUNFX0lUVU5FUykKCQkJCXsKCQkJCQkkbmFtZXNwYWNlID0gU0lNUExFUElFX05BTUVTUEFDRV9JVFVORVM7CgkJCQl9CgoJCQkJLy8gTm9ybWFsaXplIHRoZSBNZWRpYSBSU1MgbmFtZXNwYWNlcwoJCQkJaWYgKCRuYW1lc3BhY2UgPT09IFNJTVBMRVBJRV9OQU1FU1BBQ0VfTUVESUFSU1NfV1JPTkcpCgkJCQl7CgkJCQkJJG5hbWVzcGFjZSA9IFNJTVBMRVBJRV9OQU1FU1BBQ0VfTUVESUFSU1M7CgkJCQl9CgkJCQkkY2FjaGVbJHN0cmluZ10gPSBhcnJheSgkbmFtZXNwYWNlLCAkbG9jYWxfbmFtZSk7CgkJCX0KCQkJZWxzZQoJCQl7CgkJCQkkY2FjaGVbJHN0cmluZ10gPSBhcnJheSgnJywgJHN0cmluZyk7CgkJCX0KCQl9CgkJcmV0dXJuICRjYWNoZVskc3RyaW5nXTsKCX0KfQoKLyoqCiAqIEB0b2RvIE1vdmUgdG8gdXNpbmcgYW4gYWN0dWFsIEhUTUwgcGFyc2VyICh0aGlzIHdpbGwgYWxsb3cgdGFncyB0byBiZSBwcm9wZXJseSBzdHJpcHBlZCwgYW5kIHRvIHN3aXRjaCBiZXR3ZWVuIEhUTUwgYW5kIFhIVE1MKSwgdGhpcyB3aWxsIGFsc28gbWFrZSBpdCBlYXNpZXIgdG8gc2hvcnRlbiBhIHN0cmluZyB3aGlsZSBwcmVzZXJ2aW5nIEhUTUwgdGFncwogKi8KY2xhc3MgU2ltcGxlUGllX1Nhbml0aXplCnsKCS8vIFByaXZhdGUgdmFycwoJdmFyICRiYXNlOwoKCS8vIE9wdGlvbnMKCXZhciAkcmVtb3ZlX2RpdiA9IHRydWU7Cgl2YXIgJGltYWdlX2hhbmRsZXIgPSAnJzsKCXZhciAkc3RyaXBfaHRtbHRhZ3MgPSBhcnJheSgnYmFzZScsICdibGluaycsICdib2R5JywgJ2RvY3R5cGUnLCAnZW1iZWQnLCAnZm9udCcsICdmb3JtJywgJ2ZyYW1lJywgJ2ZyYW1lc2V0JywgJ2h0bWwnLCAnaWZyYW1lJywgJ2lucHV0JywgJ21hcnF1ZWUnLCAnbWV0YScsICdub3NjcmlwdCcsICdvYmplY3QnLCAncGFyYW0nLCAnc2NyaXB0JywgJ3N0eWxlJyk7Cgl2YXIgJGVuY29kZV9pbnN0ZWFkX29mX3N0cmlwID0gZmFsc2U7Cgl2YXIgJHN0cmlwX2F0dHJpYnV0ZXMgPSBhcnJheSgnYmdzb3VuZCcsICdjbGFzcycsICdleHByJywgJ2lkJywgJ3N0eWxlJywgJ29uY2xpY2snLCAnb25lcnJvcicsICdvbmZpbmlzaCcsICdvbm1vdXNlb3ZlcicsICdvbm1vdXNlb3V0JywgJ29uZm9jdXMnLCAnb25ibHVyJywgJ2xvd3NyYycsICdkeW5zcmMnKTsKCXZhciAkc3RyaXBfY29tbWVudHMgPSBmYWxzZTsKCXZhciAkb3V0cHV0X2VuY29kaW5nID0gJ1VURi04JzsKCXZhciAkZW5hYmxlX2NhY2hlID0gdHJ1ZTsKCXZhciAkY2FjaGVfbG9jYXRpb24gPSAnLi9jYWNoZSc7Cgl2YXIgJGNhY2hlX25hbWVfZnVuY3Rpb24gPSAnbWQ1JzsKCXZhciAkY2FjaGVfY2xhc3MgPSAnU2ltcGxlUGllX0NhY2hlJzsKCXZhciAkZmlsZV9jbGFzcyA9ICdTaW1wbGVQaWVfRmlsZSc7Cgl2YXIgJHRpbWVvdXQgPSAxMDsKCXZhciAkdXNlcmFnZW50ID0gJyc7Cgl2YXIgJGZvcmNlX2Zzb2Nrb3BlbiA9IGZhbHNlOwoKCXZhciAkcmVwbGFjZV91cmxfYXR0cmlidXRlcyA9IGFycmF5KAoJCSdhJyA9PiAnaHJlZicsCgkJJ2FyZWEnID0+ICdocmVmJywKCQknYmxvY2txdW90ZScgPT4gJ2NpdGUnLAoJCSdkZWwnID0+ICdjaXRlJywKCQknZm9ybScgPT4gJ2FjdGlvbicsCgkJJ2ltZycgPT4gYXJyYXkoJ2xvbmdkZXNjJywgJ3NyYycpLAoJCSdpbnB1dCcgPT4gJ3NyYycsCgkJJ2lucycgPT4gJ2NpdGUnLAoJCSdxJyA9PiAnY2l0ZScKCSk7CgoJZnVuY3Rpb24gcmVtb3ZlX2RpdigkZW5hYmxlID0gdHJ1ZSkKCXsKCQkkdGhpcy0+cmVtb3ZlX2RpdiA9IChib29sKSAkZW5hYmxlOwoJfQoKCWZ1bmN0aW9uIHNldF9pbWFnZV9oYW5kbGVyKCRwYWdlID0gZmFsc2UpCgl7CgkJaWYgKCRwYWdlKQoJCXsKCQkJJHRoaXMtPmltYWdlX2hhbmRsZXIgPSAoc3RyaW5nKSAkcGFnZTsKCQl9CgkJZWxzZQoJCXsKCQkJJHRoaXMtPmltYWdlX2hhbmRsZXIgPSBmYWxzZTsKCQl9Cgl9CgoJZnVuY3Rpb24gcGFzc19jYWNoZV9kYXRhKCRlbmFibGVfY2FjaGUgPSB0cnVlLCAkY2FjaGVfbG9jYXRpb24gPSAnLi9jYWNoZScsICRjYWNoZV9uYW1lX2Z1bmN0aW9uID0gJ21kNScsICRjYWNoZV9jbGFzcyA9ICdTaW1wbGVQaWVfQ2FjaGUnKQoJewoJCWlmIChpc3NldCgkZW5hYmxlX2NhY2hlKSkKCQl7CgkJCSR0aGlzLT5lbmFibGVfY2FjaGUgPSAoYm9vbCkgJGVuYWJsZV9jYWNoZTsKCQl9CgoJCWlmICgkY2FjaGVfbG9jYXRpb24pCgkJewoJCQkkdGhpcy0+Y2FjaGVfbG9jYXRpb24gPSAoc3RyaW5nKSAkY2FjaGVfbG9jYXRpb247CgkJfQoKCQlpZiAoJGNhY2hlX25hbWVfZnVuY3Rpb24pCgkJewoJCQkkdGhpcy0+Y2FjaGVfbmFtZV9mdW5jdGlvbiA9IChzdHJpbmcpICRjYWNoZV9uYW1lX2Z1bmN0aW9uOwoJCX0KCgkJaWYgKCRjYWNoZV9jbGFzcykKCQl7CgkJCSR0aGlzLT5jYWNoZV9jbGFzcyA9IChzdHJpbmcpICRjYWNoZV9jbGFzczsKCQl9Cgl9CgoJZnVuY3Rpb24gcGFzc19maWxlX2RhdGEoJGZpbGVfY2xhc3MgPSAnU2ltcGxlUGllX0ZpbGUnLCAkdGltZW91dCA9IDEwLCAkdXNlcmFnZW50ID0gJycsICRmb3JjZV9mc29ja29wZW4gPSBmYWxzZSkKCXsKCQlpZiAoJGZpbGVfY2xhc3MpCgkJewoJCQkkdGhpcy0+ZmlsZV9jbGFzcyA9IChzdHJpbmcpICRmaWxlX2NsYXNzOwoJCX0KCgkJaWYgKCR0aW1lb3V0KQoJCXsKCQkJJHRoaXMtPnRpbWVvdXQgPSAoc3RyaW5nKSAkdGltZW91dDsKCQl9CgoJCWlmICgkdXNlcmFnZW50KQoJCXsKCQkJJHRoaXMtPnVzZXJhZ2VudCA9IChzdHJpbmcpICR1c2VyYWdlbnQ7CgkJfQoKCQlpZiAoJGZvcmNlX2Zzb2Nrb3BlbikKCQl7CgkJCSR0aGlzLT5mb3JjZV9mc29ja29wZW4gPSAoc3RyaW5nKSAkZm9yY2VfZnNvY2tvcGVuOwoJCX0KCX0KCglmdW5jdGlvbiBzdHJpcF9odG1sdGFncygkdGFncyA9IGFycmF5KCdiYXNlJywgJ2JsaW5rJywgJ2JvZHknLCAnZG9jdHlwZScsICdlbWJlZCcsICdmb250JywgJ2Zvcm0nLCAnZnJhbWUnLCAnZnJhbWVzZXQnLCAnaHRtbCcsICdpZnJhbWUnLCAnaW5wdXQnLCAnbWFycXVlZScsICdtZXRhJywgJ25vc2NyaXB0JywgJ29iamVjdCcsICdwYXJhbScsICdzY3JpcHQnLCAnc3R5bGUnKSkKCXsKCQlpZiAoJHRhZ3MpCgkJewoJCQlpZiAoaXNfYXJyYXkoJHRhZ3MpKQoJCQl7CgkJCQkkdGhpcy0+c3RyaXBfaHRtbHRhZ3MgPSAkdGFnczsKCQkJfQoJCQllbHNlCgkJCXsKCQkJCSR0aGlzLT5zdHJpcF9odG1sdGFncyA9IGV4cGxvZGUoJywnLCAkdGFncyk7CgkJCX0KCQl9CgkJZWxzZQoJCXsKCQkJJHRoaXMtPnN0cmlwX2h0bWx0YWdzID0gZmFsc2U7CgkJfQoJfQoKCWZ1bmN0aW9uIGVuY29kZV9pbnN0ZWFkX29mX3N0cmlwKCRlbmNvZGUgPSBmYWxzZSkKCXsKCQkkdGhpcy0+ZW5jb2RlX2luc3RlYWRfb2Zfc3RyaXAgPSAoYm9vbCkgJGVuY29kZTsKCX0KCglmdW5jdGlvbiBzdHJpcF9hdHRyaWJ1dGVzKCRhdHRyaWJzID0gYXJyYXkoJ2Jnc291bmQnLCAnY2xhc3MnLCAnZXhwcicsICdpZCcsICdzdHlsZScsICdvbmNsaWNrJywgJ29uZXJyb3InLCAnb25maW5pc2gnLCAnb25tb3VzZW92ZXInLCAnb25tb3VzZW91dCcsICdvbmZvY3VzJywgJ29uYmx1cicsICdsb3dzcmMnLCAnZHluc3JjJykpCgl7CgkJaWYgKCRhdHRyaWJzKQoJCXsKCQkJaWYgKGlzX2FycmF5KCRhdHRyaWJzKSkKCQkJewoJCQkJJHRoaXMtPnN0cmlwX2F0dHJpYnV0ZXMgPSAkYXR0cmliczsKCQkJfQoJCQllbHNlCgkJCXsKCQkJCSR0aGlzLT5zdHJpcF9hdHRyaWJ1dGVzID0gZXhwbG9kZSgnLCcsICRhdHRyaWJzKTsKCQkJfQoJCX0KCQllbHNlCgkJewoJCQkkdGhpcy0+c3RyaXBfYXR0cmlidXRlcyA9IGZhbHNlOwoJCX0KCX0KCglmdW5jdGlvbiBzdHJpcF9jb21tZW50cygkc3RyaXAgPSBmYWxzZSkKCXsKCQkkdGhpcy0+c3RyaXBfY29tbWVudHMgPSAoYm9vbCkgJHN0cmlwOwoJfQoKCWZ1bmN0aW9uIHNldF9vdXRwdXRfZW5jb2RpbmcoJGVuY29kaW5nID0gJ1VURi04JykKCXsKCQkkdGhpcy0+b3V0cHV0X2VuY29kaW5nID0gKHN0cmluZykgJGVuY29kaW5nOwoJfQoKCS8qKgoJICogU2V0IGVsZW1lbnQvYXR0cmlidXRlIGtleS92YWx1ZSBwYWlycyBvZiBIVE1MIGF0dHJpYnV0ZXMKCSAqIGNvbnRhaW5pbmcgVVJMcyB0aGF0IG5lZWQgdG8gYmUgcmVzb2x2ZWQgcmVsYXRpdmUgdG8gdGhlIGZlZWQKCSAqCgkgKiBAYWNjZXNzIHB1YmxpYwoJICogQHNpbmNlIDEuMAoJICogQHBhcmFtIGFycmF5ICRlbGVtZW50X2F0dHJpYnV0ZSBFbGVtZW50L2F0dHJpYnV0ZSBrZXkvdmFsdWUgcGFpcnMKCSAqLwoJZnVuY3Rpb24gc2V0X3VybF9yZXBsYWNlbWVudHMoJGVsZW1lbnRfYXR0cmlidXRlID0gYXJyYXkoJ2EnID0+ICdocmVmJywgJ2FyZWEnID0+ICdocmVmJywgJ2Jsb2NrcXVvdGUnID0+ICdjaXRlJywgJ2RlbCcgPT4gJ2NpdGUnLCAnZm9ybScgPT4gJ2FjdGlvbicsICdpbWcnID0+IGFycmF5KCdsb25nZGVzYycsICdzcmMnKSwgJ2lucHV0JyA9PiAnc3JjJywgJ2lucycgPT4gJ2NpdGUnLCAncScgPT4gJ2NpdGUnKSkKCXsKCQkkdGhpcy0+cmVwbGFjZV91cmxfYXR0cmlidXRlcyA9IChhcnJheSkgJGVsZW1lbnRfYXR0cmlidXRlOwoJfQoKCWZ1bmN0aW9uIHNhbml0aXplKCRkYXRhLCAkdHlwZSwgJGJhc2UgPSAnJykKCXsKCQkkZGF0YSA9IHRyaW0oJGRhdGEpOwoJCWlmICgkZGF0YSAhPT0gJycgfHwgJHR5cGUgJiBTSU1QTEVQSUVfQ09OU1RSVUNUX0lSSSkKCQl7CgkJCWlmICgkdHlwZSAmIFNJTVBMRVBJRV9DT05TVFJVQ1RfTUFZQkVfSFRNTCkKCQkJewoJCQkJaWYgKHByZWdfbWF0Y2goJy8oJigjKHhbMC05YS1mQS1GXSt8WzAtOV0rKXxbYS16QS1aMC05XSspfDxcL1tBLVphLXpdW15ceDA5XHgwQVx4MEJceDBDXHgwRFx4MjBceDJGXHgzRV0qJyAuIFNJTVBMRVBJRV9QQ1JFX0hUTUxfQVRUUklCVVRFIC4gJz4pLycsICRkYXRhKSkKCQkJCXsKCQkJCQkkdHlwZSB8PSBTSU1QTEVQSUVfQ09OU1RSVUNUX0hUTUw7CgkJCQl9CgkJCQllbHNlCgkJCQl7CgkJCQkJJHR5cGUgfD0gU0lNUExFUElFX0NPTlNUUlVDVF9URVhUOwoJCQkJfQoJCQl9CgoJCQlpZiAoJHR5cGUgJiBTSU1QTEVQSUVfQ09OU1RSVUNUX0JBU0U2NCkKCQkJewoJCQkJJGRhdGEgPSBiYXNlNjRfZGVjb2RlKCRkYXRhKTsKCQkJfQoKCQkJaWYgKCR0eXBlICYgU0lNUExFUElFX0NPTlNUUlVDVF9YSFRNTCkKCQkJewoJCQkJaWYgKCR0aGlzLT5yZW1vdmVfZGl2KQoJCQkJewoJCQkJCSRkYXRhID0gcHJlZ19yZXBsYWNlKCcvXjxkaXYnIC4gU0lNUExFUElFX1BDUkVfWE1MX0FUVFJJQlVURSAuICc+LycsICcnLCAkZGF0YSk7CgkJCQkJJGRhdGEgPSBwcmVnX3JlcGxhY2UoJy88XC9kaXY+JC8nLCAnJywgJGRhdGEpOwoJCQkJfQoJCQkJZWxzZQoJCQkJewoJCQkJCSRkYXRhID0gcHJlZ19yZXBsYWNlKCcvXjxkaXYnIC4gU0lNUExFUElFX1BDUkVfWE1MX0FUVFJJQlVURSAuICc+LycsICc8ZGl2PicsICRkYXRhKTsKCQkJCX0KCQkJfQoKCQkJaWYgKCR0eXBlICYgKFNJTVBMRVBJRV9DT05TVFJVQ1RfSFRNTCB8IFNJTVBMRVBJRV9DT05TVFJVQ1RfWEhUTUwpKQoJCQl7CgkJCQkvLyBTdHJpcCBjb21tZW50cwoJCQkJaWYgKCR0aGlzLT5zdHJpcF9jb21tZW50cykKCQkJCXsKCQkJCQkkZGF0YSA9IFNpbXBsZVBpZV9NaXNjOjpzdHJpcF9jb21tZW50cygkZGF0YSk7CgkJCQl9CgoJCQkJLy8gU3RyaXAgb3V0IEhUTUwgdGFncyBhbmQgYXR0cmlidXRlcyB0aGF0IG1pZ2h0IGNhdXNlIHZhcmlvdXMgc2VjdXJpdHkgcHJvYmxlbXMuCgkJCQkvLyBCYXNlZCBvbiByZWNvbW1lbmRhdGlvbnMgYnkgTWFyayBQaWxncmltIGF0OgoJCQkJLy8gaHR0cDovL2RpdmVpbnRvbWFyay5vcmcvYXJjaGl2ZXMvMjAwMy8wNi8xMi9ob3dfdG9fY29uc3VtZV9yc3Nfc2FmZWx5CgkJCQlpZiAoJHRoaXMtPnN0cmlwX2h0bWx0YWdzKQoJCQkJewoJCQkJCWZvcmVhY2ggKCR0aGlzLT5zdHJpcF9odG1sdGFncyBhcyAkdGFnKQoJCQkJCXsKCQkJCQkJJHBjcmUgPSAiLzwoJHRhZykiIC4gU0lNUExFUElFX1BDUkVfSFRNTF9BVFRSSUJVVEUgLiAiKD4oLiopPFwvJHRhZyIgLiBTSU1QTEVQSUVfUENSRV9IVE1MX0FUVFJJQlVURSAuICc+fChcLyk/Pikvc2lVJzsKCQkJCQkJd2hpbGUgKHByZWdfbWF0Y2goJHBjcmUsICRkYXRhKSkKCQkJCQkJewoJCQkJCQkJJGRhdGEgPSBwcmVnX3JlcGxhY2VfY2FsbGJhY2soJHBjcmUsIGFycmF5KCYkdGhpcywgJ2RvX3N0cmlwX2h0bWx0YWdzJyksICRkYXRhKTsKCQkJCQkJfQoJCQkJCX0KCQkJCX0KCgkJCQlpZiAoJHRoaXMtPnN0cmlwX2F0dHJpYnV0ZXMpCgkJCQl7CgkJCQkJZm9yZWFjaCAoJHRoaXMtPnN0cmlwX2F0dHJpYnV0ZXMgYXMgJGF0dHJpYikKCQkJCQl7CgkJCQkJCSRkYXRhID0gcHJlZ19yZXBsYWNlKCcvKDxbQS1aYS16XVteXHgwOVx4MEFceDBCXHgwQ1x4MERceDIwXHgyRlx4M0VdKiknIC4gU0lNUExFUElFX1BDUkVfSFRNTF9BVFRSSUJVVEUgLiB0cmltKCRhdHRyaWIpIC4gJyg/OlxzKj1ccyooPzoiKD86W14iXSopInxcJyg/OlteXCddKilcJ3woPzpbXlx4MDlceDBBXHgwQlx4MENceDBEXHgyMFx4MjJceDI3XHgzRV1bXlx4MDlceDBBXHgwQlx4MENceDBEXHgyMFx4M0VdKik/KSk/JyAuIFNJTVBMRVBJRV9QQ1JFX0hUTUxfQVRUUklCVVRFIC4gJz4vJywgJ1wxXDJcMz4nLCAkZGF0YSk7CgkJCQkJfQoJCQkJfQoKCQkJCS8vIFJlcGxhY2UgcmVsYXRpdmUgVVJMcwoJCQkJJHRoaXMtPmJhc2UgPSAkYmFzZTsKCQkJCWZvcmVhY2ggKCR0aGlzLT5yZXBsYWNlX3VybF9hdHRyaWJ1dGVzIGFzICRlbGVtZW50ID0+ICRhdHRyaWJ1dGVzKQoJCQkJewoJCQkJCSRkYXRhID0gJHRoaXMtPnJlcGxhY2VfdXJscygkZGF0YSwgJGVsZW1lbnQsICRhdHRyaWJ1dGVzKTsKCQkJCX0KCgkJCQkvLyBJZiBpbWFnZSBoYW5kbGluZyAoY2FjaGluZywgZXRjLikgaXMgZW5hYmxlZCwgY2FjaGUgYW5kIHJld3JpdGUgYWxsIHRoZSBpbWFnZSB0YWdzLgoJCQkJaWYgKGlzc2V0KCR0aGlzLT5pbWFnZV9oYW5kbGVyKSAmJiAoKHN0cmluZykgJHRoaXMtPmltYWdlX2hhbmRsZXIpICE9PSAnJyAmJiAkdGhpcy0+ZW5hYmxlX2NhY2hlKQoJCQkJewoJCQkJCSRpbWFnZXMgPSBTaW1wbGVQaWVfTWlzYzo6Z2V0X2VsZW1lbnQoJ2ltZycsICRkYXRhKTsKCQkJCQlmb3JlYWNoICgkaW1hZ2VzIGFzICRpbWcpCgkJCQkJewoJCQkJCQlpZiAoaXNzZXQoJGltZ1snYXR0cmlicyddWydzcmMnXVsnZGF0YSddKSkKCQkJCQkJewoJCQkJCQkJJGltYWdlX3VybCA9IGNhbGxfdXNlcl9mdW5jKCR0aGlzLT5jYWNoZV9uYW1lX2Z1bmN0aW9uLCAkaW1nWydhdHRyaWJzJ11bJ3NyYyddWydkYXRhJ10pOwoJCQkJCQkJJGNhY2hlID0gY2FsbF91c2VyX2Z1bmMoYXJyYXkoJHRoaXMtPmNhY2hlX2NsYXNzLCAnY3JlYXRlJyksICR0aGlzLT5jYWNoZV9sb2NhdGlvbiwgJGltYWdlX3VybCwgJ3NwaScpOwoKCQkJCQkJCWlmICgkY2FjaGUtPmxvYWQoKSkKCQkJCQkJCXsKCQkJCQkJCQkkaW1nWydhdHRyaWJzJ11bJ3NyYyddWydkYXRhJ10gPSAkdGhpcy0+aW1hZ2VfaGFuZGxlciAuICRpbWFnZV91cmw7CgkJCQkJCQkJJGRhdGEgPSBzdHJfcmVwbGFjZSgkaW1nWydmdWxsJ10sIFNpbXBsZVBpZV9NaXNjOjplbGVtZW50X2ltcGxvZGUoJGltZyksICRkYXRhKTsKCQkJCQkJCX0KCQkJCQkJCWVsc2UKCQkJCQkJCXsKCQkJCQkJCQkkZmlsZSA9JiBuZXcgJHRoaXMtPmZpbGVfY2xhc3MoJGltZ1snYXR0cmlicyddWydzcmMnXVsnZGF0YSddLCAkdGhpcy0+dGltZW91dCwgNSwgYXJyYXkoJ1gtRk9SV0FSREVELUZPUicgPT4gJF9TRVJWRVJbJ1JFTU9URV9BRERSJ10pLCAkdGhpcy0+dXNlcmFnZW50LCAkdGhpcy0+Zm9yY2VfZnNvY2tvcGVuKTsKCQkJCQkJCQkkaGVhZGVycyA9ICRmaWxlLT5oZWFkZXJzOwoKCQkJCQkJCQlpZiAoJGZpbGUtPnN1Y2Nlc3MgJiYgKCRmaWxlLT5zdGF0dXNfY29kZSA9PSAyMDAgfHwgKCRmaWxlLT5zdGF0dXNfY29kZSA+IDIwNiAmJiAkZmlsZS0+c3RhdHVzX2NvZGUgPCAzMDApKSkKCQkJCQkJCQl7CgkJCQkJCQkJCWlmICgkY2FjaGUtPnNhdmUoYXJyYXkoJ2hlYWRlcnMnID0+ICRmaWxlLT5oZWFkZXJzLCAnYm9keScgPT4gJGZpbGUtPmJvZHkpKSkKCQkJCQkJCQkJewoJCQkJCQkJCQkJJGltZ1snYXR0cmlicyddWydzcmMnXVsnZGF0YSddID0gJHRoaXMtPmltYWdlX2hhbmRsZXIgLiAkaW1hZ2VfdXJsOwoJCQkJCQkJCQkJJGRhdGEgPSBzdHJfcmVwbGFjZSgkaW1nWydmdWxsJ10sIFNpbXBsZVBpZV9NaXNjOjplbGVtZW50X2ltcGxvZGUoJGltZyksICRkYXRhKTsKCQkJCQkJCQkJfQoJCQkJCQkJCQllbHNlCgkJCQkJCQkJCXsKCQkJCQkJCQkJCXRyaWdnZXJfZXJyb3IoIiRjYWNoZS0+bmFtZSBpcyBub3Qgd3JpdGVhYmxlIiwgRV9VU0VSX1dBUk5JTkcpOwoJCQkJCQkJCQl9CgkJCQkJCQkJfQoJCQkJCQkJfQoJCQkJCQl9CgkJCQkJfQoJCQkJfQoKCQkJCS8vIEhhdmluZyAocG9zc2libHkpIHRha2VuIHN0dWZmIG91dCwgdGhlcmUgbWF5IG5vdyBiZSB3aGl0ZXNwYWNlIGF0IHRoZSBiZWdpbm5pbmcvZW5kIG9mIHRoZSBkYXRhCgkJCQkkZGF0YSA9IHRyaW0oJGRhdGEpOwoJCQl9CgoJCQlpZiAoJHR5cGUgJiBTSU1QTEVQSUVfQ09OU1RSVUNUX0lSSSkKCQkJewoJCQkJJGRhdGEgPSBTaW1wbGVQaWVfTWlzYzo6YWJzb2x1dGl6ZV91cmwoJGRhdGEsICRiYXNlKTsKCQkJfQoKCQkJaWYgKCR0eXBlICYgKFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCB8IFNJTVBMRVBJRV9DT05TVFJVQ1RfSVJJKSkKCQkJewoJCQkJJGRhdGEgPSBodG1sc3BlY2lhbGNoYXJzKCRkYXRhLCBFTlRfQ09NUEFULCAnVVRGLTgnKTsKCQkJfQoKCQkJaWYgKCR0aGlzLT5vdXRwdXRfZW5jb2RpbmcgIT0gJ1VURi04JykKCQkJewoJCQkJJGRhdGEgPSBTaW1wbGVQaWVfTWlzYzo6Y2hhbmdlX2VuY29kaW5nKCRkYXRhLCAnVVRGLTgnLCAkdGhpcy0+b3V0cHV0X2VuY29kaW5nKTsKCQkJfQoJCX0KCQlyZXR1cm4gJGRhdGE7Cgl9CgoJZnVuY3Rpb24gcmVwbGFjZV91cmxzKCRkYXRhLCAkdGFnLCAkYXR0cmlidXRlcykKCXsKCQlpZiAoIWlzX2FycmF5KCR0aGlzLT5zdHJpcF9odG1sdGFncykgfHwgIWluX2FycmF5KCR0YWcsICR0aGlzLT5zdHJpcF9odG1sdGFncykpCgkJewoJCQkkZWxlbWVudHMgPSBTaW1wbGVQaWVfTWlzYzo6Z2V0X2VsZW1lbnQoJHRhZywgJGRhdGEpOwoJCQlmb3JlYWNoICgkZWxlbWVudHMgYXMgJGVsZW1lbnQpCgkJCXsKCQkJCWlmIChpc19hcnJheSgkYXR0cmlidXRlcykpCgkJCQl7CgkJCQkJZm9yZWFjaCAoJGF0dHJpYnV0ZXMgYXMgJGF0dHJpYnV0ZSkKCQkJCQl7CgkJCQkJCWlmIChpc3NldCgkZWxlbWVudFsnYXR0cmlicyddWyRhdHRyaWJ1dGVdWydkYXRhJ10pKQoJCQkJCQl7CgkJCQkJCQkkZWxlbWVudFsnYXR0cmlicyddWyRhdHRyaWJ1dGVdWydkYXRhJ10gPSBTaW1wbGVQaWVfTWlzYzo6YWJzb2x1dGl6ZV91cmwoJGVsZW1lbnRbJ2F0dHJpYnMnXVskYXR0cmlidXRlXVsnZGF0YSddLCAkdGhpcy0+YmFzZSk7CgkJCQkJCQkkbmV3X2VsZW1lbnQgPSBTaW1wbGVQaWVfTWlzYzo6ZWxlbWVudF9pbXBsb2RlKCRlbGVtZW50KTsKCQkJCQkJCSRkYXRhID0gc3RyX3JlcGxhY2UoJGVsZW1lbnRbJ2Z1bGwnXSwgJG5ld19lbGVtZW50LCAkZGF0YSk7CgkJCQkJCQkkZWxlbWVudFsnZnVsbCddID0gJG5ld19lbGVtZW50OwoJCQkJCQl9CgkJCQkJfQoJCQkJfQoJCQkJZWxzZWlmIChpc3NldCgkZWxlbWVudFsnYXR0cmlicyddWyRhdHRyaWJ1dGVzXVsnZGF0YSddKSkKCQkJCXsKCQkJCQkkZWxlbWVudFsnYXR0cmlicyddWyRhdHRyaWJ1dGVzXVsnZGF0YSddID0gU2ltcGxlUGllX01pc2M6OmFic29sdXRpemVfdXJsKCRlbGVtZW50WydhdHRyaWJzJ11bJGF0dHJpYnV0ZXNdWydkYXRhJ10sICR0aGlzLT5iYXNlKTsKCQkJCQkkZGF0YSA9IHN0cl9yZXBsYWNlKCRlbGVtZW50WydmdWxsJ10sIFNpbXBsZVBpZV9NaXNjOjplbGVtZW50X2ltcGxvZGUoJGVsZW1lbnQpLCAkZGF0YSk7CgkJCQl9CgkJCX0KCQl9CgkJcmV0dXJuICRkYXRhOwoJfQoKCWZ1bmN0aW9uIGRvX3N0cmlwX2h0bWx0YWdzKCRtYXRjaCkKCXsKCQlpZiAoJHRoaXMtPmVuY29kZV9pbnN0ZWFkX29mX3N0cmlwKQoJCXsKCQkJaWYgKGlzc2V0KCRtYXRjaFs0XSkgJiYgIWluX2FycmF5KHN0cnRvbG93ZXIoJG1hdGNoWzFdKSwgYXJyYXkoJ3NjcmlwdCcsICdzdHlsZScpKSkKCQkJewoJCQkJJG1hdGNoWzFdID0gaHRtbHNwZWNpYWxjaGFycygkbWF0Y2hbMV0sIEVOVF9DT01QQVQsICdVVEYtOCcpOwoJCQkJJG1hdGNoWzJdID0gaHRtbHNwZWNpYWxjaGFycygkbWF0Y2hbMl0sIEVOVF9DT01QQVQsICdVVEYtOCcpOwoJCQkJcmV0dXJuICImbHQ7JG1hdGNoWzFdJG1hdGNoWzJdJmd0OyRtYXRjaFszXSZsdDsvJG1hdGNoWzFdJmd0OyI7CgkJCX0KCQkJZWxzZQoJCQl7CgkJCQlyZXR1cm4gaHRtbHNwZWNpYWxjaGFycygkbWF0Y2hbMF0sIEVOVF9DT01QQVQsICdVVEYtOCcpOwoJCQl9CgkJfQoJCWVsc2VpZiAoaXNzZXQoJG1hdGNoWzRdKSAmJiAhaW5fYXJyYXkoc3RydG9sb3dlcigkbWF0Y2hbMV0pLCBhcnJheSgnc2NyaXB0JywgJ3N0eWxlJykpKQoJCXsKCQkJcmV0dXJuICRtYXRjaFs0XTsKCQl9CgkJZWxzZQoJCXsKCQkJcmV0dXJuICcnOwoJCX0KCX0KfQoKPz4=]]></data>
	</file>
	<file>
	  <filename>/libs/LICENSE.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Q29weXJpZ2h0IChjKSAyMDA0LTIwMDcsIFJ5YW4gUGFybWFuIGFuZCBHZW9mZnJleSBTbmVkZG9uLgpBbGwgcmlnaHRzIHJlc2VydmVkLgoKUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwgYXJlIApwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKCgkqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIAoJICBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCgoJKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCAKCSAgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgCgkgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KCgkqIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIFNpbXBsZVBpZSBUZWFtIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCAKCSAgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3IgCgkgIHdyaXR0ZW4gcGVybWlzc2lvbi4KClRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgCk9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIApBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSUyAKQU5EIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIApDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIApTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSAKVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgCk9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgClBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLg==]]></data>
	</file>
	<file>
	  <filename>/libs/README.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[U0lNUExFUElFCmh0dHA6Ly9zaW1wbGVwaWUub3JnCkJ5IFJ5YW4gUGFybWFuIGFuZCBHZW9mZnJleSBTbmVkZG9uCgpCU0QtTElDRU5TRUQKaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHAKCldIQVQgQ09NRVMgSU4gVEhFIFBBQ0tBR0U/CjEpIHNpbXBsZXBpZS5pbmMgLSBUaGUgU2ltcGxlUGllIGxpYnJhcnkuICBUaGlzIGlzIGFsbCB0aGF0J3MgcmVxdWlyZWQgZm9yIHlvdXIgcGFnZXMuCjIpIFJFQURNRS50eHQgLSBUaGlzIGRvY3VtZW50LgozKSBMSUNFTlNFLnR4dCAtIEEgY29weSBvZiB0aGUgQlNEIGxpY2Vuc2UuCjQpIGNvbXBhdGliaWxpdHlfdGVzdCAtIFRoZSBTaW1wbGVQaWUgY29tcGF0aWJpbGl0eSB0ZXN0IHRoYXQgY2hlY2tzIHlvdXIgc2VydmVyIGZvciByZXF1aXJlZCBzZXR0aW5ncy4KNSkgZGVtbyAtIEEgYmFzaWMgZmVlZCByZWFkZXIgZGVtbyB0aGF0IHNob3dzIG9mZiBzb21lIG9mIFNpbXBsZVBpZSdzIG1vcmUgbm90aWNhYmxlIGZlYXR1cmVzLgo2KSBpZG4gLSBBIHRoaXJkLXBhcnR5IGxpYnJhcnkgdGhhdCBTaW1wbGVQaWUgY2FuIG9wdGlvbmFsbHkgdXNlIHRvIHVuZGVyc3RhbmQgSW50ZXJuYXRpb25hbGl6ZWQgRG9tYWluIE5hbWVzIChJRE5zKS4KNykgdGVzdCAtIFNpbXBsZVBpZSdzIHVuaXQgdGVzdCBzdWl0ZS4gVGhpcyBpcyBvbmx5IGF2YWlsYWJsZSBpbiBTVk4gYnVpbGRzLgoKVE8gU1RBUlQgVEhFIERFTU86CjEpIFVwbG9hZCB0aGlzIHBhY2thZ2UgdG8geW91ciB3ZWJzZXJ2ZXIuCjIpIE1ha2Ugc3VyZSB0aGF0IHRoZSBjYWNoZSBmb2xkZXIgaW5zaWRlIG9mIHRoZSBkZW1vIGZvbGRlciBpcyBzZXJ2ZXItd3JpdGFibGUuCjMpIE5hdmlnYXRlIHlvdXIgYnJvd3NlciB0byB0aGUgZGVtbyBmb2xkZXIuCgpTVVBQT1JUOgpGb3IgZnVydGhlciBzZXR1cCBhbmQgaW5zdGFsbCBkb2N1bWVudGF0aW9uLCBmdW5jdGlvbiByZWZlcmVuY2VzLCBldGMuLCB2aXNpdDoKaHR0cDovL3NpbXBsZXBpZS5vcmcvd2lraS8KCkZvciBidWcgcmVwb3J0cywgZmVhdHVyZSByZXF1ZXN0cyBhbmQgb3RoZXIgc3VwcG9ydCwgdmlzaXQ6Cmh0dHA6Ly9zaW1wbGVwaWUub3JnL3N1cHBvcnQvCgpGb3IgbW9yZSBpbnNpZ2h0IG9uIFNpbXBsZVBpZSBkZXZlbG9wbWVudCwgdmlzaXQ6Cmh0dHA6Ly9zaW1wbGVwaWUub3JnL2RldmVsb3BtZW50Lw==]]></data>
	</file>
	<file>
	  <filename>/libs/simplepie.inc</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIFNpbXBsZVBpZQogKgogKiBBIFBIUC1CYXNlZCBSU1MgYW5kIEF0b20gRmVlZCBGcmFtZXdvcmsuCiAqIFRha2VzIHRoZSBoYXJkIHdvcmsgb3V0IG9mIG1hbmFnaW5nIGEgY29tcGxldGUgUlNTL0F0b20gc29sdXRpb24uCiAqCiAqIENvcHlyaWdodCAoYykgMjAwNC0yMDA4LCBSeWFuIFBhcm1hbiBhbmQgR2VvZmZyZXkgU25lZGRvbgogKiBBbGwgcmlnaHRzIHJlc2VydmVkLgogKgogKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLCBhcmUKICogcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CiAqCiAqIAkqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mCiAqIAkgIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KICoKICogCSogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3QKICogCSAgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMKICogCSAgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgogKgogKiAJKiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBTaW1wbGVQaWUgVGVhbSBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQKICogCSAgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3IKICogCSAgd3JpdHRlbiBwZXJtaXNzaW9uLgogKgogKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTCiAqIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZCiAqIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVJTCiAqIEFORCBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgogKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCiAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCiAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SCiAqIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAqCiAqIEBwYWNrYWdlIFNpbXBsZVBpZQogKiBAdmVyc2lvbiAxLjEuMwogKiBAY29weXJpZ2h0IDIwMDQtMjAwOCBSeWFuIFBhcm1hbiwgR2VvZmZyZXkgU25lZGRvbgogKiBAYXV0aG9yIFJ5YW4gUGFybWFuCiAqIEBhdXRob3IgR2VvZmZyZXkgU25lZGRvbgogKiBAbGluayBodHRwOi8vc2ltcGxlcGllLm9yZy8gU2ltcGxlUGllCiAqIEBsaW5rIGh0dHA6Ly9zaW1wbGVwaWUub3JnL3N1cHBvcnQvIFBsZWFzZSBzdWJtaXQgYWxsIGJ1ZyByZXBvcnRzIGFuZCBmZWF0dXJlIHJlcXVlc3RzIHRvIHRoZSBTaW1wbGVQaWUgZm9ydW1zCiAqIEBsaWNlbnNlIGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwIEJTRCBMaWNlbnNlCiAqIEB0b2RvIHBocERvYyBjb21tZW50cwogKi8KCi8qKgogKiBTaW1wbGVQaWUgTmFtZQogKi8KZGVmaW5lKCdTSU1QTEVQSUVfTkFNRScsICdTaW1wbGVQaWUnKTsKCi8qKgogKiBTaW1wbGVQaWUgVmVyc2lvbgogKi8KZGVmaW5lKCdTSU1QTEVQSUVfVkVSU0lPTicsICcxLjEuMycpOwoKLyoqCiAqIFNpbXBsZVBpZSBCdWlsZAogKi8KZGVmaW5lKCdTSU1QTEVQSUVfQlVJTEQnLCAyMDA4MTIxOSk7CgovKioKICogU2ltcGxlUGllIFdlYnNpdGUgVVJMCiAqLwpkZWZpbmUoJ1NJTVBMRVBJRV9VUkwnLCAnaHR0cDovL3NpbXBsZXBpZS5vcmcnKTsKCi8qKgogKiBTaW1wbGVQaWUgVXNlcmFnZW50CiAqIEBzZWUgU2ltcGxlUGllOjpzZXRfdXNlcmFnZW50KCkKICovCmRlZmluZSgnU0lNUExFUElFX1VTRVJBR0VOVCcsIFNJTVBMRVBJRV9OQU1FIC4gJy8nIC4gU0lNUExFUElFX1ZFUlNJT04gLiAnIChGZWVkIFBhcnNlcjsgJyAuIFNJTVBMRVBJRV9VUkwgLiAnOyBBbGxvdyBsaWtlIEdlY2tvKSBCdWlsZC8nIC4gU0lNUExFUElFX0JVSUxEKTsKCi8qKgogKiBTaW1wbGVQaWUgTGlua2JhY2sKICovCmRlZmluZSgnU0lNUExFUElFX0xJTktCQUNLJywgJzxhIGhyZWY9IicgLiBTSU1QTEVQSUVfVVJMIC4gJyIgdGl0bGU9IicgLiBTSU1QTEVQSUVfTkFNRSAuICcgJyAuIFNJTVBMRVBJRV9WRVJTSU9OIC4gJyI+JyAuIFNJTVBMRVBJRV9OQU1FIC4gJzwvYT4nKTsKCi8qKgogKiBObyBBdXRvZGlzY292ZXJ5CiAqIEBzZWUgU2ltcGxlUGllOjpzZXRfYXV0b2Rpc2NvdmVyeV9sZXZlbCgpCiAqLwpkZWZpbmUoJ1NJTVBMRVBJRV9MT0NBVE9SX05PTkUnLCAwKTsKCi8qKgogKiBGZWVkIExpbmsgRWxlbWVudCBBdXRvZGlzY292ZXJ5CiAqIEBzZWUgU2ltcGxlUGllOjpzZXRfYXV0b2Rpc2NvdmVyeV9sZXZlbCgpCiAqLwpkZWZpbmUoJ1NJTVBMRVBJRV9MT0NBVE9SX0FVVE9ESVNDT1ZFUlknLCAxKTsKCi8qKgogKiBMb2NhbCBGZWVkIEV4dGVuc2lvbiBBdXRvZGlzY292ZXJ5CiAqIEBzZWUgU2ltcGxlUGllOjpzZXRfYXV0b2Rpc2NvdmVyeV9sZXZlbCgpCiAqLwpkZWZpbmUoJ1NJTVBMRVBJRV9MT0NBVE9SX0xPQ0FMX0VYVEVOU0lPTicsIDIpOwoKLyoqCiAqIExvY2FsIEZlZWQgQm9keSBBdXRvZGlzY292ZXJ5CiAqIEBzZWUgU2ltcGxlUGllOjpzZXRfYXV0b2Rpc2NvdmVyeV9sZXZlbCgpCiAqLwpkZWZpbmUoJ1NJTVBMRVBJRV9MT0NBVE9SX0xPQ0FMX0JPRFknLCA0KTsKCi8qKgogKiBSZW1vdGUgRmVlZCBFeHRlbnNpb24gQXV0b2Rpc2NvdmVyeQogKiBAc2VlIFNpbXBsZVBpZTo6c2V0X2F1dG9kaXNjb3ZlcnlfbGV2ZWwoKQogKi8KZGVmaW5lKCdTSU1QTEVQSUVfTE9DQVRPUl9SRU1PVEVfRVhURU5TSU9OJywgOCk7CgovKioKICogUmVtb3RlIEZlZWQgQm9keSBBdXRvZGlzY292ZXJ5CiAqIEBzZWUgU2ltcGxlUGllOjpzZXRfYXV0b2Rpc2NvdmVyeV9sZXZlbCgpCiAqLwpkZWZpbmUoJ1NJTVBMRVBJRV9MT0NBVE9SX1JFTU9URV9CT0RZJywgMTYpOwoKLyoqCiAqIEFsbCBGZWVkIEF1dG9kaXNjb3ZlcnkKICogQHNlZSBTaW1wbGVQaWU6OnNldF9hdXRvZGlzY292ZXJ5X2xldmVsKCkKICovCmRlZmluZSgnU0lNUExFUElFX0xPQ0FUT1JfQUxMJywgMzEpOwoKLyoqCiAqIE5vIGtub3duIGZlZWQgdHlwZQogKi8KZGVmaW5lKCdTSU1QTEVQSUVfVFlQRV9OT05FJywgMCk7CgovKioKICogUlNTIDAuOTAKICovCmRlZmluZSgnU0lNUExFUElFX1RZUEVfUlNTXzA5MCcsIDEpOwoKLyoqCiAqIFJTUyAwLjkxIChOZXRzY2FwZSkKICovCmRlZmluZSgnU0lNUExFUElFX1RZUEVfUlNTXzA5MV9ORVRTQ0FQRScsIDIpOwoKLyoqCiAqIFJTUyAwLjkxIChVc2VybGFuZCkKICovCmRlZmluZSgnU0lNUExFUElFX1RZUEVfUlNTXzA5MV9VU0VSTEFORCcsIDQpOwoKLyoqCiAqIFJTUyAwLjkxIChib3RoIE5ldHNjYXBlIGFuZCBVc2VybGFuZCkKICovCmRlZmluZSgnU0lNUExFUElFX1RZUEVfUlNTXzA5MScsIDYpOwoKLyoqCiAqIFJTUyAwLjkyCiAqLwpkZWZpbmUoJ1NJTVBMRVBJRV9UWVBFX1JTU18wOTInLCA4KTsKCi8qKgogKiBSU1MgMC45MwogKi8KZGVmaW5lKCdTSU1QTEVQSUVfVFlQRV9SU1NfMDkzJywgMTYpOwoKLyoqCiAqIFJTUyAwLjk0CiAqLwpkZWZpbmUoJ1NJTVBMRVBJRV9UWVBFX1JTU18wOTQnLCAzMik7CgovKioKICogUlNTIDEuMAogKi8KZGVmaW5lKCdTSU1QTEVQSUVfVFlQRV9SU1NfMTAnLCA2NCk7CgovKioKICogUlNTIDIuMAogKi8KZGVmaW5lKCdTSU1QTEVQSUVfVFlQRV9SU1NfMjAnLCAxMjgpOwoKLyoqCiAqIFJERi1iYXNlZCBSU1MKICovCmRlZmluZSgnU0lNUExFUElFX1RZUEVfUlNTX1JERicsIDY1KTsKCi8qKgogKiBOb24tUkRGLWJhc2VkIFJTUyAodHJ1bHkgaW50ZW5kZWQgYXMgc3luZGljYXRpb24gZm9ybWF0KQogKi8KZGVmaW5lKCdTSU1QTEVQSUVfVFlQRV9SU1NfU1lORElDQVRJT04nLCAxOTApOwoKLyoqCiAqIEFsbCBSU1MKICovCmRlZmluZSgnU0lNUExFUElFX1RZUEVfUlNTX0FMTCcsIDI1NSk7CgovKioKICogQXRvbSAwLjMKICovCmRlZmluZSgnU0lNUExFUElFX1RZUEVfQVRPTV8wMycsIDI1Nik7CgovKioKICogQXRvbSAxLjAKICovCmRlZmluZSgnU0lNUExFUElFX1RZUEVfQVRPTV8xMCcsIDUxMik7CgovKioKICogQWxsIEF0b20KICovCmRlZmluZSgnU0lNUExFUElFX1RZUEVfQVRPTV9BTEwnLCA3NjgpOwoKLyoqCiAqIEFsbCBmZWVkIHR5cGVzCiAqLwpkZWZpbmUoJ1NJTVBMRVBJRV9UWVBFX0FMTCcsIDEwMjMpOwoKLyoqCiAqIE5vIGNvbnN0cnVjdAogKi8KZGVmaW5lKCdTSU1QTEVQSUVfQ09OU1RSVUNUX05PTkUnLCAwKTsKCi8qKgogKiBUZXh0IGNvbnN0cnVjdAogKi8KZGVmaW5lKCdTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQnLCAxKTsKCi8qKgogKiBIVE1MIGNvbnN0cnVjdAogKi8KZGVmaW5lKCdTSU1QTEVQSUVfQ09OU1RSVUNUX0hUTUwnLCAyKTsKCi8qKgogKiBYSFRNTCBjb25zdHJ1Y3QKICovCmRlZmluZSgnU0lNUExFUElFX0NPTlNUUlVDVF9YSFRNTCcsIDQpOwoKLyoqCiAqIGJhc2U2NC1lbmNvZGVkIGNvbnN0cnVjdAogKi8KZGVmaW5lKCdTSU1QTEVQSUVfQ09OU1RSVUNUX0JBU0U2NCcsIDgpOwoKLyoqCiAqIElSSSBjb25zdHJ1Y3QKICovCmRlZmluZSgnU0lNUExFUElFX0NPTlNUUlVDVF9JUkknLCAxNik7CgovKioKICogQSBjb25zdHJ1Y3QgdGhhdCBtaWdodCBiZSBIVE1MCiAqLwpkZWZpbmUoJ1NJTVBMRVBJRV9DT05TVFJVQ1RfTUFZQkVfSFRNTCcsIDMyKTsKCi8qKgogKiBBbGwgY29uc3RydWN0cwogKi8KZGVmaW5lKCdTSU1QTEVQSUVfQ09OU1RSVUNUX0FMTCcsIDYzKTsKCi8qKgogKiBQQ1JFIGZvciBIVE1MIGF0dHJpYnV0ZXMKICovCmRlZmluZSgnU0lNUExFUElFX1BDUkVfSFRNTF9BVFRSSUJVVEUnLCAnKCg/OltceDA5XHgwQVx4MEJceDBDXHgwRFx4MjBdK1teXHgwOVx4MEFceDBCXHgwQ1x4MERceDIwXHgyRlx4M0VdW15ceDA5XHgwQVx4MEJceDBDXHgwRFx4MjBceDJGXHgzRFx4M0VdKig/OltceDA5XHgwQVx4MEJceDBDXHgwRFx4MjBdKj1bXHgwOVx4MEFceDBCXHgwQ1x4MERceDIwXSooPzoiKD86W14iXSopInxcJyg/OlteXCddKilcJ3woPzpbXlx4MDlceDBBXHgwQlx4MENceDBEXHgyMFx4MjJceDI3XHgzRV1bXlx4MDlceDBBXHgwQlx4MENceDBEXHgyMFx4M0VdKik/KSk/KSopW1x4MDlceDBBXHgwQlx4MENceDBEXHgyMF0qJyk7CgovKioKICogUENSRSBmb3IgWE1MIGF0dHJpYnV0ZXMKICovCmRlZmluZSgnU0lNUExFUElFX1BDUkVfWE1MX0FUVFJJQlVURScsICcoKD86XHMrKD86KD86W15cczpdKzopP1teXHM6XSspXHMqPVxzKig/OiIoPzpbXiJdKikifFwnKD86W15cJ10qKVwnKSkqKVxzKicpOwoKLyoqCiAqIFhNTCBOYW1lc3BhY2UKICovCmRlZmluZSgnU0lNUExFUElFX05BTUVTUEFDRV9YTUwnLCAnaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlJyk7CgovKioKICogQXRvbSAxLjAgTmFtZXNwYWNlCiAqLwpkZWZpbmUoJ1NJTVBMRVBJRV9OQU1FU1BBQ0VfQVRPTV8xMCcsICdodHRwOi8vd3d3LnczLm9yZy8yMDA1L0F0b20nKTsKCi8qKgogKiBBdG9tIDAuMyBOYW1lc3BhY2UKICovCmRlZmluZSgnU0lNUExFUElFX05BTUVTUEFDRV9BVE9NXzAzJywgJ2h0dHA6Ly9wdXJsLm9yZy9hdG9tL25zIycpOwoKLyoqCiAqIFJERiBOYW1lc3BhY2UKICovCmRlZmluZSgnU0lNUExFUElFX05BTUVTUEFDRV9SREYnLCAnaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIycpOwoKLyoqCiAqIFJTUyAwLjkwIE5hbWVzcGFjZQogKi8KZGVmaW5lKCdTSU1QTEVQSUVfTkFNRVNQQUNFX1JTU18wOTAnLCAnaHR0cDovL215Lm5ldHNjYXBlLmNvbS9yZGYvc2ltcGxlLzAuOS8nKTsKCi8qKgogKiBSU1MgMS4wIE5hbWVzcGFjZQogKi8KZGVmaW5lKCdTSU1QTEVQSUVfTkFNRVNQQUNFX1JTU18xMCcsICdodHRwOi8vcHVybC5vcmcvcnNzLzEuMC8nKTsKCi8qKgogKiBSU1MgMS4wIENvbnRlbnQgTW9kdWxlIE5hbWVzcGFjZQogKi8KZGVmaW5lKCdTSU1QTEVQSUVfTkFNRVNQQUNFX1JTU18xMF9NT0RVTEVTX0NPTlRFTlQnLCAnaHR0cDovL3B1cmwub3JnL3Jzcy8xLjAvbW9kdWxlcy9jb250ZW50LycpOwoKLyoqCiAqIFJTUyAyLjAgTmFtZXNwYWNlCiAqIChTdHVwaWQsIEkga25vdywgYnV0IEknbSBjZXJ0YWluIGl0IHdpbGwgY29uZnVzZSBwZW9wbGUgbGVzcyB3aXRoIHN1cHBvcnQuKQogKi8KZGVmaW5lKCdTSU1QTEVQSUVfTkFNRVNQQUNFX1JTU18yMCcsICcnKTsKCi8qKgogKiBEQyAxLjAgTmFtZXNwYWNlCiAqLwpkZWZpbmUoJ1NJTVBMRVBJRV9OQU1FU1BBQ0VfRENfMTAnLCAnaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMC8nKTsKCi8qKgogKiBEQyAxLjEgTmFtZXNwYWNlCiAqLwpkZWZpbmUoJ1NJTVBMRVBJRV9OQU1FU1BBQ0VfRENfMTEnLCAnaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8nKTsKCi8qKgogKiBXM0MgQmFzaWMgR2VvIChXR1M4NCBsYXQvbG9uZykgVm9jYWJ1bGFyeSBOYW1lc3BhY2UKICovCmRlZmluZSgnU0lNUExFUElFX05BTUVTUEFDRV9XM0NfQkFTSUNfR0VPJywgJ2h0dHA6Ly93d3cudzMub3JnLzIwMDMvMDEvZ2VvL3dnczg0X3BvcyMnKTsKCi8qKgogKiBHZW9SU1MgTmFtZXNwYWNlCiAqLwpkZWZpbmUoJ1NJTVBMRVBJRV9OQU1FU1BBQ0VfR0VPUlNTJywgJ2h0dHA6Ly93d3cuZ2VvcnNzLm9yZy9nZW9yc3MnKTsKCi8qKgogKiBNZWRpYSBSU1MgTmFtZXNwYWNlCiAqLwpkZWZpbmUoJ1NJTVBMRVBJRV9OQU1FU1BBQ0VfTUVESUFSU1MnLCAnaHR0cDovL3NlYXJjaC55YWhvby5jb20vbXJzcy8nKTsKCi8qKgogKiBXcm9uZyBNZWRpYSBSU1MgTmFtZXNwYWNlCiAqLwpkZWZpbmUoJ1NJTVBMRVBJRV9OQU1FU1BBQ0VfTUVESUFSU1NfV1JPTkcnLCAnaHR0cDovL3NlYXJjaC55YWhvby5jb20vbXJzcycpOwoKLyoqCiAqIGlUdW5lcyBSU1MgTmFtZXNwYWNlCiAqLwpkZWZpbmUoJ1NJTVBMRVBJRV9OQU1FU1BBQ0VfSVRVTkVTJywgJ2h0dHA6Ly93d3cuaXR1bmVzLmNvbS9kdGRzL3BvZGNhc3QtMS4wLmR0ZCcpOwoKLyoqCiAqIFhIVE1MIE5hbWVzcGFjZQogKi8KZGVmaW5lKCdTSU1QTEVQSUVfTkFNRVNQQUNFX1hIVE1MJywgJ2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwnKTsKCi8qKgogKiBJQU5BIExpbmsgUmVsYXRpb25zIFJlZ2lzdHJ5CiAqLwpkZWZpbmUoJ1NJTVBMRVBJRV9JQU5BX0xJTktfUkVMQVRJT05TX1JFR0lTVFJZJywgJ2h0dHA6Ly93d3cuaWFuYS5vcmcvYXNzaWdubWVudHMvcmVsYXRpb24vJyk7CgovKioKICogV2hldGhlciB3ZSdyZSBydW5uaW5nIG9uIFBIUDUKICovCmRlZmluZSgnU0lNUExFUElFX1BIUDUnLCB2ZXJzaW9uX2NvbXBhcmUoUEhQX1ZFUlNJT04sICc1LjAuMCcsICc+PScpKTsKCi8qKgogKiBObyBmaWxlIHNvdXJjZQogKi8KZGVmaW5lKCdTSU1QTEVQSUVfRklMRV9TT1VSQ0VfTk9ORScsIDApOwoKLyoqCiAqIFJlbW90ZSBmaWxlIHNvdXJjZQogKi8KZGVmaW5lKCdTSU1QTEVQSUVfRklMRV9TT1VSQ0VfUkVNT1RFJywgMSk7CgovKioKICogTG9jYWwgZmlsZSBzb3VyY2UKICovCmRlZmluZSgnU0lNUExFUElFX0ZJTEVfU09VUkNFX0xPQ0FMJywgMik7CgovKioKICogZnNvY2tvcGVuKCkgZmlsZSBzb3VyY2UKICovCmRlZmluZSgnU0lNUExFUElFX0ZJTEVfU09VUkNFX0ZTT0NLT1BFTicsIDQpOwoKLyoqCiAqIGNVUkwgZmlsZSBzb3VyY2UKICovCmRlZmluZSgnU0lNUExFUElFX0ZJTEVfU09VUkNFX0NVUkwnLCA4KTsKCi8qKgogKiBmaWxlX2dldF9jb250ZW50cygpIGZpbGUgc291cmNlCiAqLwpkZWZpbmUoJ1NJTVBMRVBJRV9GSUxFX1NPVVJDRV9GSUxFX0dFVF9DT05URU5UUycsIDE2KTsKCi8qKgogKiBTaW1wbGVQaWUKICoKICogQHBhY2thZ2UgU2ltcGxlUGllCiAqIEB2ZXJzaW9uICJSYXp6bGViZXJyeSIKICogQGNvcHlyaWdodCAyMDA0LTIwMDcgUnlhbiBQYXJtYW4sIEdlb2ZmcmV5IFNuZWRkb24KICogQGF1dGhvciBSeWFuIFBhcm1hbgogKiBAYXV0aG9yIEdlb2ZmcmV5IFNuZWRkb24KICogQHRvZG8gT3B0aW9uIGZvciB0eXBlIG9mIGZldGNoaW5nIChjYWNoZSwgbm90IG1vZGlmaWVkIGhlYWRlciwgZmV0Y2gsIGV0Yy4pCiAqLwpjbGFzcyBTaW1wbGVQaWUKewoJLyoqCgkgKiBAdmFyIGFycmF5IFJhdyBkYXRhCgkgKiBAYWNjZXNzIHByaXZhdGUKCSAqLwoJdmFyICRkYXRhID0gYXJyYXkoKTsKCgkvKioKCSAqIEB2YXIgbWl4ZWQgRXJyb3Igc3RyaW5nCgkgKiBAYWNjZXNzIHByaXZhdGUKCSAqLwoJdmFyICRlcnJvcjsKCgkvKioKCSAqIEB2YXIgb2JqZWN0IEluc3RhbmNlIG9mIFNpbXBsZVBpZV9TYW5pdGl6ZSAob3Igb3RoZXIgY2xhc3MpCgkgKiBAc2VlIFNpbXBsZVBpZTo6c2V0X3Nhbml0aXplX2NsYXNzKCkKCSAqIEBhY2Nlc3MgcHJpdmF0ZQoJICovCgl2YXIgJHNhbml0aXplOwoKCS8qKgoJICogQHZhciBzdHJpbmcgU2ltcGxlUGllIFVzZXJhZ2VudAoJICogQHNlZSBTaW1wbGVQaWU6OnNldF91c2VyYWdlbnQoKQoJICogQGFjY2VzcyBwcml2YXRlCgkgKi8KCXZhciAkdXNlcmFnZW50ID0gU0lNUExFUElFX1VTRVJBR0VOVDsKCgkvKioKCSAqIEB2YXIgc3RyaW5nIEZlZWQgVVJMCgkgKiBAc2VlIFNpbXBsZVBpZTo6c2V0X2ZlZWRfdXJsKCkKCSAqIEBhY2Nlc3MgcHJpdmF0ZQoJICovCgl2YXIgJGZlZWRfdXJsOwoKCS8qKgoJICogQHZhciBvYmplY3QgSW5zdGFuY2Ugb2YgU2ltcGxlUGllX0ZpbGUgdG8gdXNlIGFzIGEgZmVlZAoJICogQHNlZSBTaW1wbGVQaWU6OnNldF9maWxlKCkKCSAqIEBhY2Nlc3MgcHJpdmF0ZQoJICovCgl2YXIgJGZpbGU7CgoJLyoqCgkgKiBAdmFyIHN0cmluZyBSYXcgZmVlZCBkYXRhCgkgKiBAc2VlIFNpbXBsZVBpZTo6c2V0X3Jhd19kYXRhKCkKCSAqIEBhY2Nlc3MgcHJpdmF0ZQoJICovCgl2YXIgJHJhd19kYXRhOwoKCS8qKgoJICogQHZhciBpbnQgVGltZW91dCBmb3IgZmV0Y2hpbmcgcmVtb3RlIGZpbGVzCgkgKiBAc2VlIFNpbXBsZVBpZTo6c2V0X3RpbWVvdXQoKQoJICogQGFjY2VzcyBwcml2YXRlCgkgKi8KCXZhciAkdGltZW91dCA9IDEwOwoKCS8qKgoJICogQHZhciBib29sIEZvcmNlcyBmc29ja29wZW4oKSB0byBiZSB1c2VkIGZvciByZW1vdGUgZmlsZXMgaW5zdGVhZAoJICogb2YgY1VSTCwgZXZlbiBpZiBhIG5ldyBlbm91Z2ggdmVyc2lvbiBpcyBpbnN0YWxsZWQKCSAqIEBzZWUgU2ltcGxlUGllOjpmb3JjZV9mc29ja29wZW4oKQoJICogQGFjY2VzcyBwcml2YXRlCgkgKi8KCXZhciAkZm9yY2VfZnNvY2tvcGVuID0gZmFsc2U7CgoJLyoqCgkgKiBAdmFyIGJvb2wgRm9yY2UgdGhlIGdpdmVuIGRhdGEvVVJMIHRvIGJlIHRyZWF0ZWQgYXMgYSBmZWVkIG5vIG1hdHRlciB3aGF0CgkgKiBpdCBhcHBlYXJzIGxpa2UKCSAqIEBzZWUgU2ltcGxlUGllOjpmb3JjZV9mZWVkKCkKCSAqIEBhY2Nlc3MgcHJpdmF0ZQoJICovCgl2YXIgJGZvcmNlX2ZlZWQgPSBmYWxzZTsKCgkvKioKCSAqIEB2YXIgYm9vbCBFbmFibGUvRGlzYWJsZSBYTUwgZHVtcAoJICogQHNlZSBTaW1wbGVQaWU6OmVuYWJsZV94bWxfZHVtcCgpCgkgKiBAYWNjZXNzIHByaXZhdGUKCSAqLwoJdmFyICR4bWxfZHVtcCA9IGZhbHNlOwoKCS8qKgoJICogQHZhciBib29sIEVuYWJsZS9EaXNhYmxlIENhY2hpbmcKCSAqIEBzZWUgU2ltcGxlUGllOjplbmFibGVfY2FjaGUoKQoJICogQGFjY2VzcyBwcml2YXRlCgkgKi8KCXZhciAkY2FjaGUgPSB0cnVlOwoKCS8qKgoJICogQHZhciBpbnQgQ2FjaGUgZHVyYXRpb24gKGluIHNlY29uZHMpCgkgKiBAc2VlIFNpbXBsZVBpZTo6c2V0X2NhY2hlX2R1cmF0aW9uKCkKCSAqIEBhY2Nlc3MgcHJpdmF0ZQoJICovCgl2YXIgJGNhY2hlX2R1cmF0aW9uID0gMzYwMDsKCgkvKioKCSAqIEB2YXIgaW50IEF1dG8tZGlzY292ZXJ5IGNhY2hlIGR1cmF0aW9uIChpbiBzZWNvbmRzKQoJICogQHNlZSBTaW1wbGVQaWU6OnNldF9hdXRvZGlzY292ZXJ5X2NhY2hlX2R1cmF0aW9uKCkKCSAqIEBhY2Nlc3MgcHJpdmF0ZQoJICovCgl2YXIgJGF1dG9kaXNjb3ZlcnlfY2FjaGVfZHVyYXRpb24gPSA2MDQ4MDA7IC8vIDcgRGF5cy4KCgkvKioKCSAqIEB2YXIgc3RyaW5nIENhY2hlIGxvY2F0aW9uIChyZWxhdGl2ZSB0byBleGVjdXRpbmcgc2NyaXB0KQoJICogQHNlZSBTaW1wbGVQaWU6OnNldF9jYWNoZV9sb2NhdGlvbigpCgkgKiBAYWNjZXNzIHByaXZhdGUKCSAqLwoJdmFyICRjYWNoZV9sb2NhdGlvbiA9ICcuL2NhY2hlJzsKCgkvKioKCSAqIEB2YXIgc3RyaW5nIEZ1bmN0aW9uIHRoYXQgY3JlYXRlcyB0aGUgY2FjaGUgZmlsZW5hbWUKCSAqIEBzZWUgU2ltcGxlUGllOjpzZXRfY2FjaGVfbmFtZV9mdW5jdGlvbigpCgkgKiBAYWNjZXNzIHByaXZhdGUKCSAqLwoJdmFyICRjYWNoZV9uYW1lX2Z1bmN0aW9uID0gJ21kNSc7CgoJLyoqCgkgKiBAdmFyIGJvb2wgUmVvcmRlciBmZWVkIGJ5IGRhdGUgZGVzY2VuZGluZwoJICogQHNlZSBTaW1wbGVQaWU6OmVuYWJsZV9vcmRlcl9ieV9kYXRlKCkKCSAqIEBhY2Nlc3MgcHJpdmF0ZQoJICovCgl2YXIgJG9yZGVyX2J5X2RhdGUgPSB0cnVlOwoKCS8qKgoJICogQHZhciBtaXhlZCBGb3JjZSBpbnB1dCBlbmNvZGluZyB0byBiZSBzZXQgdG8gdGhlIGZvbGxvdyB2YWx1ZQoJICogKGZhbHNlLCBvciBhbnl0aGluZyB0eXBlLWNhc3QgdG8gZmFsc2UsIGRpc2FibGVzIHRoaXMgZmVhdHVyZSkKCSAqIEBzZWUgU2ltcGxlUGllOjpzZXRfaW5wdXRfZW5jb2RpbmcoKQoJICogQGFjY2VzcyBwcml2YXRlCgkgKi8KCXZhciAkaW5wdXRfZW5jb2RpbmcgPSBmYWxzZTsKCgkvKioKCSAqIEB2YXIgaW50IEZlZWQgQXV0b2Rpc2NvdmVyeSBMZXZlbAoJICogQHNlZSBTaW1wbGVQaWU6OnNldF9hdXRvZGlzY292ZXJ5X2xldmVsKCkKCSAqIEBhY2Nlc3MgcHJpdmF0ZQoJICovCgl2YXIgJGF1dG9kaXNjb3ZlcnkgPSBTSU1QTEVQSUVfTE9DQVRPUl9BTEw7CgoJLyoqCgkgKiBAdmFyIHN0cmluZyBDbGFzcyB1c2VkIGZvciBjYWNoaW5nIGZlZWRzCgkgKiBAc2VlIFNpbXBsZVBpZTo6c2V0X2NhY2hlX2NsYXNzKCkKCSAqIEBhY2Nlc3MgcHJpdmF0ZQoJICovCgl2YXIgJGNhY2hlX2NsYXNzID0gJ1NpbXBsZVBpZV9DYWNoZSc7CgoJLyoqCgkgKiBAdmFyIHN0cmluZyBDbGFzcyB1c2VkIGZvciBsb2NhdGluZyBmZWVkcwoJICogQHNlZSBTaW1wbGVQaWU6OnNldF9sb2NhdG9yX2NsYXNzKCkKCSAqIEBhY2Nlc3MgcHJpdmF0ZQoJICovCgl2YXIgJGxvY2F0b3JfY2xhc3MgPSAnU2ltcGxlUGllX0xvY2F0b3InOwoKCS8qKgoJICogQHZhciBzdHJpbmcgQ2xhc3MgdXNlZCBmb3IgcGFyc2luZyBmZWVkcwoJICogQHNlZSBTaW1wbGVQaWU6OnNldF9wYXJzZXJfY2xhc3MoKQoJICogQGFjY2VzcyBwcml2YXRlCgkgKi8KCXZhciAkcGFyc2VyX2NsYXNzID0gJ1NpbXBsZVBpZV9QYXJzZXInOwoKCS8qKgoJICogQHZhciBzdHJpbmcgQ2xhc3MgdXNlZCBmb3IgZmV0Y2hpbmcgZmVlZHMKCSAqIEBzZWUgU2ltcGxlUGllOjpzZXRfZmlsZV9jbGFzcygpCgkgKiBAYWNjZXNzIHByaXZhdGUKCSAqLwoJdmFyICRmaWxlX2NsYXNzID0gJ1NpbXBsZVBpZV9GaWxlJzsKCgkvKioKCSAqIEB2YXIgc3RyaW5nIENsYXNzIHVzZWQgZm9yIGl0ZW1zCgkgKiBAc2VlIFNpbXBsZVBpZTo6c2V0X2l0ZW1fY2xhc3MoKQoJICogQGFjY2VzcyBwcml2YXRlCgkgKi8KCXZhciAkaXRlbV9jbGFzcyA9ICdTaW1wbGVQaWVfSXRlbSc7CgoJLyoqCgkgKiBAdmFyIHN0cmluZyBDbGFzcyB1c2VkIGZvciBhdXRob3JzCgkgKiBAc2VlIFNpbXBsZVBpZTo6c2V0X2F1dGhvcl9jbGFzcygpCgkgKiBAYWNjZXNzIHByaXZhdGUKCSAqLwoJdmFyICRhdXRob3JfY2xhc3MgPSAnU2ltcGxlUGllX0F1dGhvcic7CgoJLyoqCgkgKiBAdmFyIHN0cmluZyBDbGFzcyB1c2VkIGZvciBjYXRlZ29yaWVzCgkgKiBAc2VlIFNpbXBsZVBpZTo6c2V0X2NhdGVnb3J5X2NsYXNzKCkKCSAqIEBhY2Nlc3MgcHJpdmF0ZQoJICovCgl2YXIgJGNhdGVnb3J5X2NsYXNzID0gJ1NpbXBsZVBpZV9DYXRlZ29yeSc7CgoJLyoqCgkgKiBAdmFyIHN0cmluZyBDbGFzcyB1c2VkIGZvciBlbmNsb3N1cmVzCgkgKiBAc2VlIFNpbXBsZVBpZTo6c2V0X2VuY2xvc3VyZXNfY2xhc3MoKQoJICogQGFjY2VzcyBwcml2YXRlCgkgKi8KCXZhciAkZW5jbG9zdXJlX2NsYXNzID0gJ1NpbXBsZVBpZV9FbmNsb3N1cmUnOwoKCS8qKgoJICogQHZhciBzdHJpbmcgQ2xhc3MgdXNlZCBmb3IgTWVkaWEgUlNTIDxtZWRpYTp0ZXh0PiBjYXB0aW9ucwoJICogQHNlZSBTaW1wbGVQaWU6OnNldF9jYXB0aW9uX2NsYXNzKCkKCSAqIEBhY2Nlc3MgcHJpdmF0ZQoJICovCgl2YXIgJGNhcHRpb25fY2xhc3MgPSAnU2ltcGxlUGllX0NhcHRpb24nOwoKCS8qKgoJICogQHZhciBzdHJpbmcgQ2xhc3MgdXNlZCBmb3IgTWVkaWEgUlNTIDxtZWRpYTpjb3B5cmlnaHQ+CgkgKiBAc2VlIFNpbXBsZVBpZTo6c2V0X2NvcHlyaWdodF9jbGFzcygpCgkgKiBAYWNjZXNzIHByaXZhdGUKCSAqLwoJdmFyICRjb3B5cmlnaHRfY2xhc3MgPSAnU2ltcGxlUGllX0NvcHlyaWdodCc7CgoJLyoqCgkgKiBAdmFyIHN0cmluZyBDbGFzcyB1c2VkIGZvciBNZWRpYSBSU1MgPG1lZGlhOmNyZWRpdD4KCSAqIEBzZWUgU2ltcGxlUGllOjpzZXRfY3JlZGl0X2NsYXNzKCkKCSAqIEBhY2Nlc3MgcHJpdmF0ZQoJICovCgl2YXIgJGNyZWRpdF9jbGFzcyA9ICdTaW1wbGVQaWVfQ3JlZGl0JzsKCgkvKioKCSAqIEB2YXIgc3RyaW5nIENsYXNzIHVzZWQgZm9yIE1lZGlhIFJTUyA8bWVkaWE6cmF0aW5nPgoJICogQHNlZSBTaW1wbGVQaWU6OnNldF9yYXRpbmdfY2xhc3MoKQoJICogQGFjY2VzcyBwcml2YXRlCgkgKi8KCXZhciAkcmF0aW5nX2NsYXNzID0gJ1NpbXBsZVBpZV9SYXRpbmcnOwoKCS8qKgoJICogQHZhciBzdHJpbmcgQ2xhc3MgdXNlZCBmb3IgTWVkaWEgUlNTIDxtZWRpYTpyZXN0cmljdGlvbj4KCSAqIEBzZWUgU2ltcGxlUGllOjpzZXRfcmVzdHJpY3Rpb25fY2xhc3MoKQoJICogQGFjY2VzcyBwcml2YXRlCgkgKi8KCXZhciAkcmVzdHJpY3Rpb25fY2xhc3MgPSAnU2ltcGxlUGllX1Jlc3RyaWN0aW9uJzsKCgkvKioKCSAqIEB2YXIgc3RyaW5nIENsYXNzIHVzZWQgZm9yIGNvbnRlbnQtdHlwZSBzbmlmZmluZwoJICogQHNlZSBTaW1wbGVQaWU6OnNldF9jb250ZW50X3R5cGVfc25pZmZlcl9jbGFzcygpCgkgKiBAYWNjZXNzIHByaXZhdGUKCSAqLwoJdmFyICRjb250ZW50X3R5cGVfc25pZmZlcl9jbGFzcyA9ICdTaW1wbGVQaWVfQ29udGVudF9UeXBlX1NuaWZmZXInOwoKCS8qKgoJICogQHZhciBzdHJpbmcgQ2xhc3MgdXNlZCBmb3IgaXRlbSBzb3VyY2VzLgoJICogQHNlZSBTaW1wbGVQaWU6OnNldF9zb3VyY2VfY2xhc3MoKQoJICogQGFjY2VzcyBwcml2YXRlCgkgKi8KCXZhciAkc291cmNlX2NsYXNzID0gJ1NpbXBsZVBpZV9Tb3VyY2UnOwoKCS8qKgoJICogQHZhciBtaXhlZCBTZXQgamF2YXNjcmlwdCBxdWVyeSBzdHJpbmcgcGFyYW1ldGVyIChmYWxzZSwgb3IKCSAqIGFueXRoaW5nIHR5cGUtY2FzdCB0byBmYWxzZSwgZGlzYWJsZXMgdGhpcyBmZWF0dXJlKQoJICogQHNlZSBTaW1wbGVQaWU6OnNldF9qYXZhc2NyaXB0KCkKCSAqIEBhY2Nlc3MgcHJpdmF0ZQoJICovCgl2YXIgJGphdmFzY3JpcHQgPSAnanMnOwoKCS8qKgoJICogQHZhciBpbnQgTWF4aW11bSBudW1iZXIgb2YgZmVlZHMgdG8gY2hlY2sgd2l0aCBhdXRvZGlzY292ZXJ5CgkgKiBAc2VlIFNpbXBsZVBpZTo6c2V0X21heF9jaGVja2VkX2ZlZWRzKCkKCSAqIEBhY2Nlc3MgcHJpdmF0ZQoJICovCgl2YXIgJG1heF9jaGVja2VkX2ZlZWRzID0gMTA7CgoJLyoqCgkgKiBAdmFyIHN0cmluZyBXZWItYWNjZXNzaWJsZSBwYXRoIHRvIHRoZSBoYW5kbGVyX2Zhdmljb24ucGhwIGZpbGUuCgkgKiBAc2VlIFNpbXBsZVBpZTo6c2V0X2Zhdmljb25faGFuZGxlcigpCgkgKiBAYWNjZXNzIHByaXZhdGUKCSAqLwoJdmFyICRmYXZpY29uX2hhbmRsZXIgPSAnJzsKCgkvKioKCSAqIEB2YXIgc3RyaW5nIFdlYi1hY2Nlc3NpYmxlIHBhdGggdG8gdGhlIGhhbmRsZXJfaW1hZ2UucGhwIGZpbGUuCgkgKiBAc2VlIFNpbXBsZVBpZTo6c2V0X2ltYWdlX2hhbmRsZXIoKQoJICogQGFjY2VzcyBwcml2YXRlCgkgKi8KCXZhciAkaW1hZ2VfaGFuZGxlciA9ICcnOwoKCS8qKgoJICogQHZhciBhcnJheSBTdG9yZXMgdGhlIFVSTHMgd2hlbiBtdWx0aXBsZSBmZWVkcyBhcmUgYmVpbmcgaW5pdGlhbGl6ZWQuCgkgKiBAc2VlIFNpbXBsZVBpZTo6c2V0X2ZlZWRfdXJsKCkKCSAqIEBhY2Nlc3MgcHJpdmF0ZQoJICovCgl2YXIgJG11bHRpZmVlZF91cmwgPSBhcnJheSgpOwoKCS8qKgoJICogQHZhciBhcnJheSBTdG9yZXMgU2ltcGxlUGllIG9iamVjdHMgd2hlbiBtdWx0aXBsZSBmZWVkcyBpbml0aWFsaXplZC4KCSAqIEBhY2Nlc3MgcHJpdmF0ZQoJICovCgl2YXIgJG11bHRpZmVlZF9vYmplY3RzID0gYXJyYXkoKTsKCgkvKioKCSAqIEB2YXIgYXJyYXkgU3RvcmVzIHRoZSBnZXRfb2JqZWN0X3ZhcnMoKSBhcnJheSBmb3IgdXNlIHdpdGggbXVsdGlmZWVkcy4KCSAqIEBzZWUgU2ltcGxlUGllOjpzZXRfZmVlZF91cmwoKQoJICogQGFjY2VzcyBwcml2YXRlCgkgKi8KCXZhciAkY29uZmlnX3NldHRpbmdzID0gbnVsbDsKCgkvKioKCSAqIEB2YXIgaW50ZWdlciBTdG9yZXMgdGhlIG51bWJlciBvZiBpdGVtcyB0byByZXR1cm4gcGVyLWZlZWQgd2l0aCBtdWx0aWZlZWRzLgoJICogQHNlZSBTaW1wbGVQaWU6OnNldF9pdGVtX2xpbWl0KCkKCSAqIEBhY2Nlc3MgcHJpdmF0ZQoJICovCgl2YXIgJGl0ZW1fbGltaXQgPSAwOwoKCS8qKgoJICogQHZhciBhcnJheSBTdG9yZXMgdGhlIGRlZmF1bHQgYXR0cmlidXRlcyB0byBiZSBzdHJpcHBlZCBieSBzdHJpcF9hdHRyaWJ1dGVzKCkuCgkgKiBAc2VlIFNpbXBsZVBpZTo6c3RyaXBfYXR0cmlidXRlcygpCgkgKiBAYWNjZXNzIHByaXZhdGUKCSAqLwoJdmFyICRzdHJpcF9hdHRyaWJ1dGVzID0gYXJyYXkoJ2Jnc291bmQnLCAnY2xhc3MnLCAnZXhwcicsICdpZCcsICdzdHlsZScsICdvbmNsaWNrJywgJ29uZXJyb3InLCAnb25maW5pc2gnLCAnb25tb3VzZW92ZXInLCAnb25tb3VzZW91dCcsICdvbmZvY3VzJywgJ29uYmx1cicsICdsb3dzcmMnLCAnZHluc3JjJyk7CgoJLyoqCgkgKiBAdmFyIGFycmF5IFN0b3JlcyB0aGUgZGVmYXVsdCB0YWdzIHRvIGJlIHN0cmlwcGVkIGJ5IHN0cmlwX2h0bWx0YWdzKCkuCgkgKiBAc2VlIFNpbXBsZVBpZTo6c3RyaXBfaHRtbHRhZ3MoKQoJICogQGFjY2VzcyBwcml2YXRlCgkgKi8KCXZhciAkc3RyaXBfaHRtbHRhZ3MgPSBhcnJheSgnYmFzZScsICdibGluaycsICdib2R5JywgJ2RvY3R5cGUnLCAnZW1iZWQnLCAnZm9udCcsICdmb3JtJywgJ2ZyYW1lJywgJ2ZyYW1lc2V0JywgJ2h0bWwnLCAnaWZyYW1lJywgJ2lucHV0JywgJ21hcnF1ZWUnLCAnbWV0YScsICdub3NjcmlwdCcsICdvYmplY3QnLCAncGFyYW0nLCAnc2NyaXB0JywgJ3N0eWxlJyk7CgoJLyoqCgkgKiBUaGUgU2ltcGxlUGllIGNsYXNzIGNvbnRhaW5zIGZlZWQgbGV2ZWwgZGF0YSBhbmQgb3B0aW9ucwoJICoKCSAqIFRoZXJlIGFyZSB0d28gd2F5cyB0aGF0IHlvdSBjYW4gY3JlYXRlIGEgbmV3IFNpbXBsZVBpZSBvYmplY3QuIFRoZSBmaXJzdAoJICogaXMgYnkgcGFzc2luZyBhIGZlZWQgVVJMIGFzIGEgcGFyYW1ldGVyIHRvIHRoZSBTaW1wbGVQaWUgY29uc3RydWN0b3IKCSAqIChhcyB3ZWxsIGFzIG9wdGlvbmFsbHkgc2V0dGluZyB0aGUgY2FjaGUgbG9jYXRpb24gYW5kIGNhY2hlIGV4cGlyeSkuIFRoaXMKCSAqIHdpbGwgaW5pdGlhbGlzZSB0aGUgd2hvbGUgZmVlZCB3aXRoIGFsbCBvZiB0aGUgZGVmYXVsdCBzZXR0aW5ncywgYW5kIHlvdQoJICogY2FuIGJlZ2luIGFjY2Vzc2luZyBtZXRob2RzIGFuZCBwcm9wZXJ0aWVzIGltbWVkaWF0ZWx5LgoJICoKCSAqIFRoZSBzZWNvbmQgd2F5IGlzIHRvIGNyZWF0ZSB0aGUgU2ltcGxlUGllIG9iamVjdCB3aXRoIG5vIHBhcmFtZXRlcnMKCSAqIGF0IGFsbC4gVGhpcyB3aWxsIGVuYWJsZSB5b3UgdG8gc2V0IGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gQWZ0ZXIgc2V0dGluZwoJICogdGhlbSwgeW91IG11c3QgaW5pdGlhbGlzZSB0aGUgZmVlZCB1c2luZyAkZmVlZC0+aW5pdCgpLiBBdCB0aGF0IHBvaW50IHRoZQoJICogb2JqZWN0J3MgbWV0aG9kcyBhbmQgcHJvcGVydGllcyB3aWxsIGJlIGF2YWlsYWJsZSB0byB5b3UuIFRoaXMgZm9ybWF0IGlzCgkgKiB3aGF0IGlzIHVzZWQgdGhyb3VnaG91dCB0aGlzIGRvY3VtZW50YXRpb24uCgkgKgoJICogQGFjY2VzcyBwdWJsaWMKCSAqIEBzaW5jZSAxLjAgUHJldmlldyBSZWxlYXNlCgkgKiBAcGFyYW0gc3RyaW5nICRmZWVkX3VybCBUaGlzIGlzIHRoZSBVUkwgeW91IHdhbnQgdG8gcGFyc2UuCgkgKiBAcGFyYW0gc3RyaW5nICRjYWNoZV9sb2NhdGlvbiBUaGlzIGlzIHdoZXJlIHlvdSB3YW50IHRoZSBjYWNoZSB0byBiZSBzdG9yZWQuCgkgKiBAcGFyYW0gaW50ICRjYWNoZV9kdXJhdGlvbiBUaGlzIGlzIHRoZSBudW1iZXIgb2Ygc2Vjb25kcyB0aGF0IHlvdSB3YW50IHRvIHN0b3JlIHRoZSBjYWNoZSBmaWxlIGZvci4KCSAqLwoJZnVuY3Rpb24gU2ltcGxlUGllKCRmZWVkX3VybCA9IG51bGwsICRjYWNoZV9sb2NhdGlvbiA9IG51bGwsICRjYWNoZV9kdXJhdGlvbiA9IG51bGwpCgl7CgkJLy8gT3RoZXIgb2JqZWN0cywgaW5zdGFuY2VzIGNyZWF0ZWQgaGVyZSBzbyB3ZSBjYW4gc2V0IG9wdGlvbnMgb24gdGhlbQoJCSR0aGlzLT5zYW5pdGl6ZSA9JiBuZXcgU2ltcGxlUGllX1Nhbml0aXplOwoKCQkvLyBTZXQgb3B0aW9ucyBpZiB0aGV5J3JlIHBhc3NlZCB0byB0aGUgY29uc3RydWN0b3IKCQlpZiAoJGNhY2hlX2xvY2F0aW9uICE9PSBudWxsKQoJCXsKCQkJJHRoaXMtPnNldF9jYWNoZV9sb2NhdGlvbigkY2FjaGVfbG9jYXRpb24pOwoJCX0KCgkJaWYgKCRjYWNoZV9kdXJhdGlvbiAhPT0gbnVsbCkKCQl7CgkJCSR0aGlzLT5zZXRfY2FjaGVfZHVyYXRpb24oJGNhY2hlX2R1cmF0aW9uKTsKCQl9CgoJCS8vIE9ubHkgaW5pdCB0aGUgc2NyaXB0IGlmIHdlJ3JlIHBhc3NlZCBhIGZlZWQgVVJMCgkJaWYgKCRmZWVkX3VybCAhPT0gbnVsbCkKCQl7CgkJCSR0aGlzLT5zZXRfZmVlZF91cmwoJGZlZWRfdXJsKTsKCQkJJHRoaXMtPmluaXQoKTsKCQl9Cgl9CgoJLyoqCgkgKiBVc2VkIGZvciBjb252ZXJ0aW5nIG9iamVjdCB0byBhIHN0cmluZwoJICovCglmdW5jdGlvbiBfX3RvU3RyaW5nKCkKCXsKCQlyZXR1cm4gbWQ1KHNlcmlhbGl6ZSgkdGhpcy0+ZGF0YSkpOwoJfQoKCS8qKgoJICogUmVtb3ZlIGl0ZW1zIHRoYXQgbGluayBiYWNrIHRvIHRoaXMgYmVmb3JlIGRlc3Ryb3lpbmcgdGhpcyBvYmplY3QKCSAqLwoJZnVuY3Rpb24gX19kZXN0cnVjdCgpCgl7CgkJaWYgKCFlbXB0eSgkdGhpcy0+ZGF0YVsnaXRlbXMnXSkpCgkJewoJCQlmb3JlYWNoICgkdGhpcy0+ZGF0YVsnaXRlbXMnXSBhcyAkaXRlbSkKCQkJewoJCQkJJGl0ZW0tPl9fZGVzdHJ1Y3QoKTsKCQkJfQoJCQl1bnNldCgkdGhpcy0+ZGF0YVsnaXRlbXMnXSk7CgkJfQoJCWlmICghZW1wdHkoJHRoaXMtPmRhdGFbJ29yZGVyZWRfaXRlbXMnXSkpCgkJewoJCQlmb3JlYWNoICgkdGhpcy0+ZGF0YVsnb3JkZXJlZF9pdGVtcyddIGFzICRpdGVtKQoJCQl7CgkJCQkkaXRlbS0+X19kZXN0cnVjdCgpOwoJCQl9CgkJCXVuc2V0KCR0aGlzLT5kYXRhWydvcmRlcmVkX2l0ZW1zJ10pOwoJCX0KCX0KCgkvKioKCSAqIEZvcmNlIHRoZSBnaXZlbiBkYXRhL1VSTCB0byBiZSB0cmVhdGVkIGFzIGEgZmVlZCBubyBtYXR0ZXIgd2hhdCBpdAoJICogYXBwZWFycyBsaWtlCgkgKgoJICogQGFjY2VzcyBwdWJsaWMKCSAqIEBzaW5jZSAxLjEKCSAqIEBwYXJhbSBib29sICRlbmFibGUgRm9yY2UgdGhlIGdpdmVuIGRhdGEvVVJMIHRvIGJlIHRyZWF0ZWQgYXMgYSBmZWVkCgkgKi8KCWZ1bmN0aW9uIGZvcmNlX2ZlZWQoJGVuYWJsZSA9IGZhbHNlKQoJewoJCSR0aGlzLT5mb3JjZV9mZWVkID0gKGJvb2wpICRlbmFibGU7Cgl9CgoJLyoqCgkgKiBUaGlzIGlzIHRoZSBVUkwgb2YgdGhlIGZlZWQgeW91IHdhbnQgdG8gcGFyc2UuCgkgKgoJICogVGhpcyBhbGxvd3MgeW91IHRvIGVudGVyIHRoZSBVUkwgb2YgdGhlIGZlZWQgeW91IHdhbnQgdG8gcGFyc2UsIG9yIHRoZQoJICogd2Vic2l0ZSB5b3Ugd2FudCB0byB0cnkgdG8gdXNlIGF1dG8tZGlzY292ZXJ5IG9uLiBUaGlzIHRha2VzIHByaW9yaXR5CgkgKiBvdmVyIGFueSBzZXQgcmF3IGRhdGEuCgkgKgoJICogWW91IGNhbiBzZXQgbXVsdGlwbGUgZmVlZHMgdG8gbWFzaCB0b2dldGhlciBieSBwYXNzaW5nIGFuIGFycmF5IGluc3RlYWQKCSAqIG9mIGEgc3RyaW5nIGZvciB0aGUgJHVybC4gUmVtZW1iZXIgdGhhdCB3aXRoIGVhY2ggYWRkaXRpb25hbCBmZWVkIGNvbWVzCgkgKiBhZGRpdGlvbmFsIHByb2Nlc3NpbmcgYW5kIHJlc291cmNlcy4KCSAqCgkgKiBAYWNjZXNzIHB1YmxpYwoJICogQHNpbmNlIDEuMCBQcmV2aWV3IFJlbGVhc2UKCSAqIEBwYXJhbSBtaXhlZCAkdXJsIFRoaXMgaXMgdGhlIFVSTCAob3IgYXJyYXkgb2YgVVJMcykgdGhhdCB5b3Ugd2FudCB0byBwYXJzZS4KCSAqIEBzZWUgU2ltcGxlUGllOjpzZXRfcmF3X2RhdGEoKQoJICovCglmdW5jdGlvbiBzZXRfZmVlZF91cmwoJHVybCkKCXsKCQlpZiAoaXNfYXJyYXkoJHVybCkpCgkJewoJCQkkdGhpcy0+bXVsdGlmZWVkX3VybCA9IGFycmF5KCk7CgkJCWZvcmVhY2ggKCR1cmwgYXMgJHZhbHVlKQoJCQl7CgkJCQkkdGhpcy0+bXVsdGlmZWVkX3VybFtdID0gU2ltcGxlUGllX01pc2M6OmZpeF9wcm90b2NvbCgkdmFsdWUsIDEpOwoJCQl9CgkJfQoJCWVsc2UKCQl7CgkJCSR0aGlzLT5mZWVkX3VybCA9IFNpbXBsZVBpZV9NaXNjOjpmaXhfcHJvdG9jb2woJHVybCwgMSk7CgkJfQoJfQoKCS8qKgoJICogUHJvdmlkZXMgYW4gaW5zdGFuY2Ugb2YgU2ltcGxlUGllX0ZpbGUgdG8gdXNlIGFzIGEgZmVlZAoJICoKCSAqIEBhY2Nlc3MgcHVibGljCgkgKiBAcGFyYW0gb2JqZWN0ICYkZmlsZSBJbnN0YW5jZSBvZiBTaW1wbGVQaWVfRmlsZSAob3Igc3ViY2xhc3MpCgkgKiBAcmV0dXJuIGJvb2wgVHJ1ZSBvbiBzdWNjZXNzLCBmYWxzZSBvbiBmYWlsdXJlCgkgKi8KCWZ1bmN0aW9uIHNldF9maWxlKCYkZmlsZSkKCXsKCQlpZiAoaXNfYSgkZmlsZSwgJ1NpbXBsZVBpZV9GaWxlJykpCgkJewoJCQkkdGhpcy0+ZmVlZF91cmwgPSAkZmlsZS0+dXJsOwoJCQkkdGhpcy0+ZmlsZSA9JiAkZmlsZTsKCQkJcmV0dXJuIHRydWU7CgkJfQoJCXJldHVybiBmYWxzZTsKCX0KCgkvKioKCSAqIEFsbG93cyB5b3UgdG8gdXNlIGEgc3RyaW5nIG9mIFJTUy9BdG9tIGRhdGEgaW5zdGVhZCBvZiBhIHJlbW90ZSBmZWVkLgoJICoKCSAqIElmIHlvdSBoYXZlIGEgZmVlZCBhdmFpbGFibGUgYXMgYSBzdHJpbmcgaW4gUEhQLCB5b3UgY2FuIHRlbGwgU2ltcGxlUGllCgkgKiB0byBwYXJzZSB0aGF0IGRhdGEgc3RyaW5nIGluc3RlYWQgb2YgYSByZW1vdGUgZmVlZC4gQW55IHNldCBmZWVkIFVSTAoJICogdGFrZXMgcHJlY2VkZW5jZS4KCSAqCgkgKiBAYWNjZXNzIHB1YmxpYwoJICogQHNpbmNlIDEuMCBCZXRhIDMKCSAqIEBwYXJhbSBzdHJpbmcgJGRhdGEgUlNTIG9yIEF0b20gZGF0YSBhcyBhIHN0cmluZy4KCSAqIEBzZWUgU2ltcGxlUGllOjpzZXRfZmVlZF91cmwoKQoJICovCglmdW5jdGlvbiBzZXRfcmF3X2RhdGEoJGRhdGEpCgl7CgkJJHRoaXMtPnJhd19kYXRhID0gJGRhdGE7Cgl9CgoJLyoqCgkgKiBBbGxvd3MgeW91IHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IHRpbWVvdXQgZm9yIGZldGNoaW5nIHJlbW90ZSBmZWVkcy4KCSAqCgkgKiBUaGlzIGFsbG93cyB5b3UgdG8gY2hhbmdlIHRoZSBtYXhpbXVtIHRpbWUgdGhlIGZlZWQncyBzZXJ2ZXIgdG8gcmVzcG9uZAoJICogYW5kIHNlbmQgdGhlIGZlZWQgYmFjay4KCSAqCgkgKiBAYWNjZXNzIHB1YmxpYwoJICogQHNpbmNlIDEuMCBCZXRhIDMKCSAqIEBwYXJhbSBpbnQgJHRpbWVvdXQgVGhlIG1heGltdW0gbnVtYmVyIG9mIHNlY29uZHMgdG8gc3BlbmQgd2FpdGluZyB0byByZXRyaWV2ZSBhIGZlZWQuCgkgKi8KCWZ1bmN0aW9uIHNldF90aW1lb3V0KCR0aW1lb3V0ID0gMTApCgl7CgkJJHRoaXMtPnRpbWVvdXQgPSAoaW50KSAkdGltZW91dDsKCX0KCgkvKioKCSAqIEZvcmNlcyBTaW1wbGVQaWUgdG8gdXNlIGZzb2Nrb3BlbigpIGluc3RlYWQgb2YgdGhlIHByZWZlcnJlZCBjVVJMCgkgKiBmdW5jdGlvbnMuCgkgKgoJICogQGFjY2VzcyBwdWJsaWMKCSAqIEBzaW5jZSAxLjAgQmV0YSAzCgkgKiBAcGFyYW0gYm9vbCAkZW5hYmxlIEZvcmNlIGZzb2Nrb3BlbigpIHRvIGJlIHVzZWQKCSAqLwoJZnVuY3Rpb24gZm9yY2VfZnNvY2tvcGVuKCRlbmFibGUgPSBmYWxzZSkKCXsKCQkkdGhpcy0+Zm9yY2VfZnNvY2tvcGVuID0gKGJvb2wpICRlbmFibGU7Cgl9CgoJLyoqCgkgKiBPdXRwdXRzIHRoZSByYXcgWE1MIGNvbnRlbnQgb2YgdGhlIGZlZWQsIGFmdGVyIGl0IGhhcyBnb25lIHRocm91Z2gKCSAqIFNpbXBsZVBpZSdzIGZpbHRlcnMuCgkgKgoJICogVXNlZCBvbmx5IGZvciBkZWJ1Z2dpbmcsIHRoaXMgZnVuY3Rpb24gd2lsbCBvdXRwdXQgdGhlIFhNTCBjb250ZW50IGFzCgkgKiB0ZXh0L3htbC4gV2hlbiBTaW1wbGVQaWUgcmVhZHMgaW4gYSBmZWVkLCBpdCBkb2VzIGEgYml0IG9mIGNsZWFuaW5nIHVwCgkgKiBiZWZvcmUgdHJ5aW5nIHRvIHBhcnNlIGl0LiBNYW55IHBhcnRzIG9mIHRoZSBmZWVkIGFyZSByZS13cml0dGVuIGluCgkgKiBtZW1vcnksIGFuZCBpbiB0aGUgZW5kLCB5b3UgaGF2ZSBhIHBhcnNhYmxlIGZlZWQuIFhNTCBkdW1wIHNob3dzIHlvdSB0aGUKCSAqIGFjdHVhbCBYTUwgdGhhdCBTaW1wbGVQaWUgdHJpZXMgdG8gcGFyc2UsIHdoaWNoIG1heSBvciBtYXkgbm90IGJlIHZlcnkKCSAqIGRpZmZlcmVudCBmcm9tIHRoZSBvcmlnaW5hbCBmZWVkLgoJICoKCSAqIEBhY2Nlc3MgcHVibGljCgkgKiBAc2luY2UgMS4wIFByZXZpZXcgUmVsZWFzZQoJICogQHBhcmFtIGJvb2wgJGVuYWJsZSBFbmFibGUgWE1MIGR1bXAKCSAqLwoJZnVuY3Rpb24gZW5hYmxlX3htbF9kdW1wKCRlbmFibGUgPSBmYWxzZSkKCXsKCQkkdGhpcy0+eG1sX2R1bXAgPSAoYm9vbCkgJGVuYWJsZTsKCX0KCgkvKioKCSAqIEVuYWJsZXMvZGlzYWJsZXMgY2FjaGluZyBpbiBTaW1wbGVQaWUuCgkgKgoJICogVGhpcyBvcHRpb24gYWxsb3dzIHlvdSB0byBkaXNhYmxlIGNhY2hpbmcgYWxsLXRvZ2V0aGVyIGluIFNpbXBsZVBpZS4KCSAqIEhvd2V2ZXIsIGRpc2FibGluZyB0aGUgY2FjaGUgY2FuIGxlYWQgdG8gbG9uZ2VyIGxvYWQgdGltZXMuCgkgKgoJICogQGFjY2VzcyBwdWJsaWMKCSAqIEBzaW5jZSAxLjAgUHJldmlldyBSZWxlYXNlCgkgKiBAcGFyYW0gYm9vbCAkZW5hYmxlIEVuYWJsZSBjYWNoaW5nCgkgKi8KCWZ1bmN0aW9uIGVuYWJsZV9jYWNoZSgkZW5hYmxlID0gdHJ1ZSkKCXsKCQkkdGhpcy0+Y2FjaGUgPSAoYm9vbCkgJGVuYWJsZTsKCX0KCgkvKioKCSAqIFNldCB0aGUgbGVuZ3RoIG9mIHRpbWUgKGluIHNlY29uZHMpIHRoYXQgdGhlIGNvbnRlbnRzIG9mIGEgZmVlZAoJICogd2lsbCBiZSBjYWNoZWQuCgkgKgoJICogQGFjY2VzcyBwdWJsaWMKCSAqIEBwYXJhbSBpbnQgJHNlY29uZHMgVGhlIGZlZWQgY29udGVudCBjYWNoZSBkdXJhdGlvbi4KCSAqLwoJZnVuY3Rpb24gc2V0X2NhY2hlX2R1cmF0aW9uKCRzZWNvbmRzID0gMzYwMCkKCXsKCQkkdGhpcy0+Y2FjaGVfZHVyYXRpb24gPSAoaW50KSAkc2Vjb25kczsKCX0KCgkvKioKCSAqIFNldCB0aGUgbGVuZ3RoIG9mIHRpbWUgKGluIHNlY29uZHMpIHRoYXQgdGhlIGF1dG9kaXNjb3ZlcmVkIGZlZWQKCSAqIFVSTCB3aWxsIGJlIGNhY2hlZC4KCSAqCgkgKiBAYWNjZXNzIHB1YmxpYwoJICogQHBhcmFtIGludCAkc2Vjb25kcyBUaGUgYXV0b2Rpc2NvdmVyZWQgZmVlZCBVUkwgY2FjaGUgZHVyYXRpb24uCgkgKi8KCWZ1bmN0aW9uIHNldF9hdXRvZGlzY292ZXJ5X2NhY2hlX2R1cmF0aW9uKCRzZWNvbmRzID0gNjA0ODAwKQoJewoJCSR0aGlzLT5hdXRvZGlzY292ZXJ5X2NhY2hlX2R1cmF0aW9uID0gKGludCkgJHNlY29uZHM7Cgl9CgoJLyoqCgkgKiBTZXQgdGhlIGZpbGUgc3lzdGVtIGxvY2F0aW9uIHdoZXJlIHRoZSBjYWNoZWQgZmlsZXMgc2hvdWxkIGJlIHN0b3JlZC4KCSAqCgkgKiBAYWNjZXNzIHB1YmxpYwoJICogQHBhcmFtIHN0cmluZyAkbG9jYXRpb24gVGhlIGZpbGUgc3lzdGVtIGxvY2F0aW9uLgoJICovCglmdW5jdGlvbiBzZXRfY2FjaGVfbG9jYXRpb24oJGxvY2F0aW9uID0gJy4vY2FjaGUnKQoJewoJCSR0aGlzLT5jYWNoZV9sb2NhdGlvbiA9IChzdHJpbmcpICRsb2NhdGlvbjsKCX0KCgkvKioKCSAqIERldGVybWluZXMgd2hldGhlciBmZWVkIGl0ZW1zIHNob3VsZCBiZSBzb3J0ZWQgaW50byByZXZlcnNlIGNocm9ub2xvZ2ljYWwgb3JkZXIuCgkgKgoJICogQGFjY2VzcyBwdWJsaWMKCSAqIEBwYXJhbSBib29sICRlbmFibGUgU29ydCBhcyByZXZlcnNlIGNocm9ub2xvZ2ljYWwgb3JkZXIuCgkgKi8KCWZ1bmN0aW9uIGVuYWJsZV9vcmRlcl9ieV9kYXRlKCRlbmFibGUgPSB0cnVlKQoJewoJCSR0aGlzLT5vcmRlcl9ieV9kYXRlID0gKGJvb2wpICRlbmFibGU7Cgl9CgoJLyoqCgkgKiBBbGxvd3MgeW91IHRvIG92ZXJyaWRlIHRoZSBjaGFyYWN0ZXIgZW5jb2RpbmcgcmVwb3J0ZWQgYnkgdGhlIGZlZWQuCgkgKgoJICogQGFjY2VzcyBwdWJsaWMKCSAqIEBwYXJhbSBzdHJpbmcgJGVuY29kaW5nIENoYXJhY3RlciBlbmNvZGluZy4KCSAqLwoJZnVuY3Rpb24gc2V0X2lucHV0X2VuY29kaW5nKCRlbmNvZGluZyA9IGZhbHNlKQoJewoJCWlmICgkZW5jb2RpbmcpCgkJewoJCQkkdGhpcy0+aW5wdXRfZW5jb2RpbmcgPSAoc3RyaW5nKSAkZW5jb2Rpbmc7CgkJfQoJCWVsc2UKCQl7CgkJCSR0aGlzLT5pbnB1dF9lbmNvZGluZyA9IGZhbHNlOwoJCX0KCX0KCgkvKioKCSAqIFNldCBob3cgbXVjaCBmZWVkIGF1dG9kaXNjb3ZlcnkgdG8gZG8KCSAqCgkgKiBAYWNjZXNzIHB1YmxpYwoJICogQHNlZSBTSU1QTEVQSUVfTE9DQVRPUl9OT05FCgkgKiBAc2VlIFNJTVBMRVBJRV9MT0NBVE9SX0FVVE9ESVNDT1ZFUlkKCSAqIEBzZWUgU0lNUExFUElFX0xPQ0FUT1JfTE9DQUxfRVhURU5TSU9OCgkgKiBAc2VlIFNJTVBMRVBJRV9MT0NBVE9SX0xPQ0FMX0JPRFkKCSAqIEBzZWUgU0lNUExFUElFX0xPQ0FUT1JfUkVNT1RFX0VYVEVOU0lPTgoJICogQHNlZSBTSU1QTEVQSUVfTE9DQVRPUl9SRU1PVEVfQk9EWQoJICogQHNlZSBTSU1QTEVQSUVfTE9DQVRPUl9BTEwKCSAqIEBwYXJhbSBpbnQgJGxldmVsIEZlZWQgQXV0b2Rpc2NvdmVyeSBMZXZlbCAobGV2ZWwgY2FuIGJlIGEKCSAqIGNvbWJpbmF0aW9uIG9mIHRoZSBhYm92ZSBjb25zdGFudHMsIHNlZSBiaXR3aXNlIE9SIG9wZXJhdG9yKQoJICovCglmdW5jdGlvbiBzZXRfYXV0b2Rpc2NvdmVyeV9sZXZlbCgkbGV2ZWwgPSBTSU1QTEVQSUVfTE9DQVRPUl9BTEwpCgl7CgkJJHRoaXMtPmF1dG9kaXNjb3ZlcnkgPSAoaW50KSAkbGV2ZWw7Cgl9CgoJLyoqCgkgKiBBbGxvd3MgeW91IHRvIGNoYW5nZSB3aGljaCBjbGFzcyBTaW1wbGVQaWUgdXNlcyBmb3IgY2FjaGluZy4KCSAqIFVzZWZ1bCB3aGVuIHlvdSBhcmUgb3ZlcmxvYWRpbmcgb3IgZXh0ZW5kaW5nIFNpbXBsZVBpZSdzIGRlZmF1bHQgY2xhc3Nlcy4KCSAqCgkgKiBAYWNjZXNzIHB1YmxpYwoJICogQHBhcmFtIHN0cmluZyAkY2xhc3MgTmFtZSBvZiBjdXN0b20gY2xhc3MuCgkgKiBAbGluayBodHRwOi8vcGhwLm5ldC9tYW51YWwvZW4va2V5d29yZC5leHRlbmRzLnBocCBQSFA0IGV4dGVuZHMgZG9jdW1lbnRhdGlvbgoJICogQGxpbmsgaHR0cDovL3BocC5uZXQvbWFudWFsL2VuL2xhbmd1YWdlLm9vcDUuYmFzaWMucGhwI2xhbmd1YWdlLm9vcDUuYmFzaWMuZXh0ZW5kcyBQSFA1IGV4dGVuZHMgZG9jdW1lbnRhdGlvbgoJICovCglmdW5jdGlvbiBzZXRfY2FjaGVfY2xhc3MoJGNsYXNzID0gJ1NpbXBsZVBpZV9DYWNoZScpCgl7CgkJaWYgKFNpbXBsZVBpZV9NaXNjOjppc19zdWJjbGFzc19vZigkY2xhc3MsICdTaW1wbGVQaWVfQ2FjaGUnKSkKCQl7CgkJCSR0aGlzLT5jYWNoZV9jbGFzcyA9ICRjbGFzczsKCQkJcmV0dXJuIHRydWU7CgkJfQoJCXJldHVybiBmYWxzZTsKCX0KCgkvKioKCSAqIEFsbG93cyB5b3UgdG8gY2hhbmdlIHdoaWNoIGNsYXNzIFNpbXBsZVBpZSB1c2VzIGZvciBhdXRvLWRpc2NvdmVyeS4KCSAqIFVzZWZ1bCB3aGVuIHlvdSBhcmUgb3ZlcmxvYWRpbmcgb3IgZXh0ZW5kaW5nIFNpbXBsZVBpZSdzIGRlZmF1bHQgY2xhc3Nlcy4KCSAqCgkgKiBAYWNjZXNzIHB1YmxpYwoJICogQHBhcmFtIHN0cmluZyAkY2xhc3MgTmFtZSBvZiBjdXN0b20gY2xhc3MuCgkgKiBAbGluayBodHRwOi8vcGhwLm5ldC9tYW51YWwvZW4va2V5d29yZC5leHRlbmRzLnBocCBQSFA0IGV4dGVuZHMgZG9jdW1lbnRhdGlvbgoJICogQGxpbmsgaHR0cDovL3BocC5uZXQvbWFudWFsL2VuL2xhbmd1YWdlLm9vcDUuYmFzaWMucGhwI2xhbmd1YWdlLm9vcDUuYmFzaWMuZXh0ZW5kcyBQSFA1IGV4dGVuZHMgZG9jdW1lbnRhdGlvbgoJICovCglmdW5jdGlvbiBzZXRfbG9jYXRvcl9jbGFzcygkY2xhc3MgPSAnU2ltcGxlUGllX0xvY2F0b3InKQoJewoJCWlmIChTaW1wbGVQaWVfTWlzYzo6aXNfc3ViY2xhc3Nfb2YoJGNsYXNzLCAnU2ltcGxlUGllX0xvY2F0b3InKSkKCQl7CgkJCSR0aGlzLT5sb2NhdG9yX2NsYXNzID0gJGNsYXNzOwoJCQlyZXR1cm4gdHJ1ZTsKCQl9CgkJcmV0dXJuIGZhbHNlOwoJfQoKCS8qKgoJICogQWxsb3dzIHlvdSB0byBjaGFuZ2Ugd2hpY2ggY2xhc3MgU2ltcGxlUGllIHVzZXMgZm9yIFhNTCBwYXJzaW5nLgoJICogVXNlZnVsIHdoZW4geW91IGFyZSBvdmVybG9hZGluZyBvciBleHRlbmRpbmcgU2ltcGxlUGllJ3MgZGVmYXVsdCBjbGFzc2VzLgoJICoKCSAqIEBhY2Nlc3MgcHVibGljCgkgKiBAcGFyYW0gc3RyaW5nICRjbGFzcyBOYW1lIG9mIGN1c3RvbSBjbGFzcy4KCSAqIEBsaW5rIGh0dHA6Ly9waHAubmV0L21hbnVhbC9lbi9rZXl3b3JkLmV4dGVuZHMucGhwIFBIUDQgZXh0ZW5kcyBkb2N1bWVudGF0aW9uCgkgKiBAbGluayBodHRwOi8vcGhwLm5ldC9tYW51YWwvZW4vbGFuZ3VhZ2Uub29wNS5iYXNpYy5waHAjbGFuZ3VhZ2Uub29wNS5iYXNpYy5leHRlbmRzIFBIUDUgZXh0ZW5kcyBkb2N1bWVudGF0aW9uCgkgKi8KCWZ1bmN0aW9uIHNldF9wYXJzZXJfY2xhc3MoJGNsYXNzID0gJ1NpbXBsZVBpZV9QYXJzZXInKQoJewoJCWlmIChTaW1wbGVQaWVfTWlzYzo6aXNfc3ViY2xhc3Nfb2YoJGNsYXNzLCAnU2ltcGxlUGllX1BhcnNlcicpKQoJCXsKCQkJJHRoaXMtPnBhcnNlcl9jbGFzcyA9ICRjbGFzczsKCQkJcmV0dXJuIHRydWU7CgkJfQoJCXJldHVybiBmYWxzZTsKCX0KCgkvKioKCSAqIEFsbG93cyB5b3UgdG8gY2hhbmdlIHdoaWNoIGNsYXNzIFNpbXBsZVBpZSB1c2VzIGZvciByZW1vdGUgZmlsZSBmZXRjaGluZy4KCSAqIFVzZWZ1bCB3aGVuIHlvdSBhcmUgb3ZlcmxvYWRpbmcgb3IgZXh0ZW5kaW5nIFNpbXBsZVBpZSdzIGRlZmF1bHQgY2xhc3Nlcy4KCSAqCgkgKiBAYWNjZXNzIHB1YmxpYwoJICogQHBhcmFtIHN0cmluZyAkY2xhc3MgTmFtZSBvZiBjdXN0b20gY2xhc3MuCgkgKiBAbGluayBodHRwOi8vcGhwLm5ldC9tYW51YWwvZW4va2V5d29yZC5leHRlbmRzLnBocCBQSFA0IGV4dGVuZHMgZG9jdW1lbnRhdGlvbgoJICogQGxpbmsgaHR0cDovL3BocC5uZXQvbWFudWFsL2VuL2xhbmd1YWdlLm9vcDUuYmFzaWMucGhwI2xhbmd1YWdlLm9vcDUuYmFzaWMuZXh0ZW5kcyBQSFA1IGV4dGVuZHMgZG9jdW1lbnRhdGlvbgoJICovCglmdW5jdGlvbiBzZXRfZmlsZV9jbGFzcygkY2xhc3MgPSAnU2ltcGxlUGllX0ZpbGUnKQoJewoJCWlmIChTaW1wbGVQaWVfTWlzYzo6aXNfc3ViY2xhc3Nfb2YoJGNsYXNzLCAnU2ltcGxlUGllX0ZpbGUnKSkKCQl7CgkJCSR0aGlzLT5maWxlX2NsYXNzID0gJGNsYXNzOwoJCQlyZXR1cm4gdHJ1ZTsKCQl9CgkJcmV0dXJuIGZhbHNlOwoJfQoKCS8qKgoJICogQWxsb3dzIHlvdSB0byBjaGFuZ2Ugd2hpY2ggY2xhc3MgU2ltcGxlUGllIHVzZXMgZm9yIGRhdGEgc2FuaXRpemF0aW9uLgoJICogVXNlZnVsIHdoZW4geW91IGFyZSBvdmVybG9hZGluZyBvciBleHRlbmRpbmcgU2ltcGxlUGllJ3MgZGVmYXVsdCBjbGFzc2VzLgoJICoKCSAqIEBhY2Nlc3MgcHVibGljCgkgKiBAcGFyYW0gc3RyaW5nICRjbGFzcyBOYW1lIG9mIGN1c3RvbSBjbGFzcy4KCSAqIEBsaW5rIGh0dHA6Ly9waHAubmV0L21hbnVhbC9lbi9rZXl3b3JkLmV4dGVuZHMucGhwIFBIUDQgZXh0ZW5kcyBkb2N1bWVudGF0aW9uCgkgKiBAbGluayBodHRwOi8vcGhwLm5ldC9tYW51YWwvZW4vbGFuZ3VhZ2Uub29wNS5iYXNpYy5waHAjbGFuZ3VhZ2Uub29wNS5iYXNpYy5leHRlbmRzIFBIUDUgZXh0ZW5kcyBkb2N1bWVudGF0aW9uCgkgKi8KCWZ1bmN0aW9uIHNldF9zYW5pdGl6ZV9jbGFzcygkY2xhc3MgPSAnU2ltcGxlUGllX1Nhbml0aXplJykKCXsKCQlpZiAoU2ltcGxlUGllX01pc2M6OmlzX3N1YmNsYXNzX29mKCRjbGFzcywgJ1NpbXBsZVBpZV9TYW5pdGl6ZScpKQoJCXsKCQkJJHRoaXMtPnNhbml0aXplID0mIG5ldyAkY2xhc3M7CgkJCXJldHVybiB0cnVlOwoJCX0KCQlyZXR1cm4gZmFsc2U7Cgl9CgoJLyoqCgkgKiBBbGxvd3MgeW91IHRvIGNoYW5nZSB3aGljaCBjbGFzcyBTaW1wbGVQaWUgdXNlcyBmb3IgaGFuZGxpbmcgZmVlZCBpdGVtcy4KCSAqIFVzZWZ1bCB3aGVuIHlvdSBhcmUgb3ZlcmxvYWRpbmcgb3IgZXh0ZW5kaW5nIFNpbXBsZVBpZSdzIGRlZmF1bHQgY2xhc3Nlcy4KCSAqCgkgKiBAYWNjZXNzIHB1YmxpYwoJICogQHBhcmFtIHN0cmluZyAkY2xhc3MgTmFtZSBvZiBjdXN0b20gY2xhc3MuCgkgKiBAbGluayBodHRwOi8vcGhwLm5ldC9tYW51YWwvZW4va2V5d29yZC5leHRlbmRzLnBocCBQSFA0IGV4dGVuZHMgZG9jdW1lbnRhdGlvbgoJICogQGxpbmsgaHR0cDovL3BocC5uZXQvbWFudWFsL2VuL2xhbmd1YWdlLm9vcDUuYmFzaWMucGhwI2xhbmd1YWdlLm9vcDUuYmFzaWMuZXh0ZW5kcyBQSFA1IGV4dGVuZHMgZG9jdW1lbnRhdGlvbgoJICovCglmdW5jdGlvbiBzZXRfaXRlbV9jbGFzcygkY2xhc3MgPSAnU2ltcGxlUGllX0l0ZW0nKQoJewoJCWlmIChTaW1wbGVQaWVfTWlzYzo6aXNfc3ViY2xhc3Nfb2YoJGNsYXNzLCAnU2ltcGxlUGllX0l0ZW0nKSkKCQl7CgkJCSR0aGlzLT5pdGVtX2NsYXNzID0gJGNsYXNzOwoJCQlyZXR1cm4gdHJ1ZTsKCQl9CgkJcmV0dXJuIGZhbHNlOwoJfQoKCS8qKgoJICogQWxsb3dzIHlvdSB0byBjaGFuZ2Ugd2hpY2ggY2xhc3MgU2ltcGxlUGllIHVzZXMgZm9yIGhhbmRsaW5nIGF1dGhvciBkYXRhLgoJICogVXNlZnVsIHdoZW4geW91IGFyZSBvdmVybG9hZGluZyBvciBleHRlbmRpbmcgU2ltcGxlUGllJ3MgZGVmYXVsdCBjbGFzc2VzLgoJICoKCSAqIEBhY2Nlc3MgcHVibGljCgkgKiBAcGFyYW0gc3RyaW5nICRjbGFzcyBOYW1lIG9mIGN1c3RvbSBjbGFzcy4KCSAqIEBsaW5rIGh0dHA6Ly9waHAubmV0L21hbnVhbC9lbi9rZXl3b3JkLmV4dGVuZHMucGhwIFBIUDQgZXh0ZW5kcyBkb2N1bWVudGF0aW9uCgkgKiBAbGluayBodHRwOi8vcGhwLm5ldC9tYW51YWwvZW4vbGFuZ3VhZ2Uub29wNS5iYXNpYy5waHAjbGFuZ3VhZ2Uub29wNS5iYXNpYy5leHRlbmRzIFBIUDUgZXh0ZW5kcyBkb2N1bWVudGF0aW9uCgkgKi8KCWZ1bmN0aW9uIHNldF9hdXRob3JfY2xhc3MoJGNsYXNzID0gJ1NpbXBsZVBpZV9BdXRob3InKQoJewoJCWlmIChTaW1wbGVQaWVfTWlzYzo6aXNfc3ViY2xhc3Nfb2YoJGNsYXNzLCAnU2ltcGxlUGllX0F1dGhvcicpKQoJCXsKCQkJJHRoaXMtPmF1dGhvcl9jbGFzcyA9ICRjbGFzczsKCQkJcmV0dXJuIHRydWU7CgkJfQoJCXJldHVybiBmYWxzZTsKCX0KCgkvKioKCSAqIEFsbG93cyB5b3UgdG8gY2hhbmdlIHdoaWNoIGNsYXNzIFNpbXBsZVBpZSB1c2VzIGZvciBoYW5kbGluZyBjYXRlZ29yeSBkYXRhLgoJICogVXNlZnVsIHdoZW4geW91IGFyZSBvdmVybG9hZGluZyBvciBleHRlbmRpbmcgU2ltcGxlUGllJ3MgZGVmYXVsdCBjbGFzc2VzLgoJICoKCSAqIEBhY2Nlc3MgcHVibGljCgkgKiBAcGFyYW0gc3RyaW5nICRjbGFzcyBOYW1lIG9mIGN1c3RvbSBjbGFzcy4KCSAqIEBsaW5rIGh0dHA6Ly9waHAubmV0L21hbnVhbC9lbi9rZXl3b3JkLmV4dGVuZHMucGhwIFBIUDQgZXh0ZW5kcyBkb2N1bWVudGF0aW9uCgkgKiBAbGluayBodHRwOi8vcGhwLm5ldC9tYW51YWwvZW4vbGFuZ3VhZ2Uub29wNS5iYXNpYy5waHAjbGFuZ3VhZ2Uub29wNS5iYXNpYy5leHRlbmRzIFBIUDUgZXh0ZW5kcyBkb2N1bWVudGF0aW9uCgkgKi8KCWZ1bmN0aW9uIHNldF9jYXRlZ29yeV9jbGFzcygkY2xhc3MgPSAnU2ltcGxlUGllX0NhdGVnb3J5JykKCXsKCQlpZiAoU2ltcGxlUGllX01pc2M6OmlzX3N1YmNsYXNzX29mKCRjbGFzcywgJ1NpbXBsZVBpZV9DYXRlZ29yeScpKQoJCXsKCQkJJHRoaXMtPmNhdGVnb3J5X2NsYXNzID0gJGNsYXNzOwoJCQlyZXR1cm4gdHJ1ZTsKCQl9CgkJcmV0dXJuIGZhbHNlOwoJfQoKCS8qKgoJICogQWxsb3dzIHlvdSB0byBjaGFuZ2Ugd2hpY2ggY2xhc3MgU2ltcGxlUGllIHVzZXMgZm9yIGZlZWQgZW5jbG9zdXJlcy4KCSAqIFVzZWZ1bCB3aGVuIHlvdSBhcmUgb3ZlcmxvYWRpbmcgb3IgZXh0ZW5kaW5nIFNpbXBsZVBpZSdzIGRlZmF1bHQgY2xhc3Nlcy4KCSAqCgkgKiBAYWNjZXNzIHB1YmxpYwoJICogQHBhcmFtIHN0cmluZyAkY2xhc3MgTmFtZSBvZiBjdXN0b20gY2xhc3MuCgkgKiBAbGluayBodHRwOi8vcGhwLm5ldC9tYW51YWwvZW4va2V5d29yZC5leHRlbmRzLnBocCBQSFA0IGV4dGVuZHMgZG9jdW1lbnRhdGlvbgoJICogQGxpbmsgaHR0cDovL3BocC5uZXQvbWFudWFsL2VuL2xhbmd1YWdlLm9vcDUuYmFzaWMucGhwI2xhbmd1YWdlLm9vcDUuYmFzaWMuZXh0ZW5kcyBQSFA1IGV4dGVuZHMgZG9jdW1lbnRhdGlvbgoJICovCglmdW5jdGlvbiBzZXRfZW5jbG9zdXJlX2NsYXNzKCRjbGFzcyA9ICdTaW1wbGVQaWVfRW5jbG9zdXJlJykKCXsKCQlpZiAoU2ltcGxlUGllX01pc2M6OmlzX3N1YmNsYXNzX29mKCRjbGFzcywgJ1NpbXBsZVBpZV9FbmNsb3N1cmUnKSkKCQl7CgkJCSR0aGlzLT5lbmNsb3N1cmVfY2xhc3MgPSAkY2xhc3M7CgkJCXJldHVybiB0cnVlOwoJCX0KCQlyZXR1cm4gZmFsc2U7Cgl9CgoJLyoqCgkgKiBBbGxvd3MgeW91IHRvIGNoYW5nZSB3aGljaCBjbGFzcyBTaW1wbGVQaWUgdXNlcyBmb3IgPG1lZGlhOnRleHQ+IGNhcHRpb25zCgkgKiBVc2VmdWwgd2hlbiB5b3UgYXJlIG92ZXJsb2FkaW5nIG9yIGV4dGVuZGluZyBTaW1wbGVQaWUncyBkZWZhdWx0IGNsYXNzZXMuCgkgKgoJICogQGFjY2VzcyBwdWJsaWMKCSAqIEBwYXJhbSBzdHJpbmcgJGNsYXNzIE5hbWUgb2YgY3VzdG9tIGNsYXNzLgoJICogQGxpbmsgaHR0cDovL3BocC5uZXQvbWFudWFsL2VuL2tleXdvcmQuZXh0ZW5kcy5waHAgUEhQNCBleHRlbmRzIGRvY3VtZW50YXRpb24KCSAqIEBsaW5rIGh0dHA6Ly9waHAubmV0L21hbnVhbC9lbi9sYW5ndWFnZS5vb3A1LmJhc2ljLnBocCNsYW5ndWFnZS5vb3A1LmJhc2ljLmV4dGVuZHMgUEhQNSBleHRlbmRzIGRvY3VtZW50YXRpb24KCSAqLwoJZnVuY3Rpb24gc2V0X2NhcHRpb25fY2xhc3MoJGNsYXNzID0gJ1NpbXBsZVBpZV9DYXB0aW9uJykKCXsKCQlpZiAoU2ltcGxlUGllX01pc2M6OmlzX3N1YmNsYXNzX29mKCRjbGFzcywgJ1NpbXBsZVBpZV9DYXB0aW9uJykpCgkJewoJCQkkdGhpcy0+Y2FwdGlvbl9jbGFzcyA9ICRjbGFzczsKCQkJcmV0dXJuIHRydWU7CgkJfQoJCXJldHVybiBmYWxzZTsKCX0KCgkvKioKCSAqIEFsbG93cyB5b3UgdG8gY2hhbmdlIHdoaWNoIGNsYXNzIFNpbXBsZVBpZSB1c2VzIGZvciA8bWVkaWE6Y29weXJpZ2h0PgoJICogVXNlZnVsIHdoZW4geW91IGFyZSBvdmVybG9hZGluZyBvciBleHRlbmRpbmcgU2ltcGxlUGllJ3MgZGVmYXVsdCBjbGFzc2VzLgoJICoKCSAqIEBhY2Nlc3MgcHVibGljCgkgKiBAcGFyYW0gc3RyaW5nICRjbGFzcyBOYW1lIG9mIGN1c3RvbSBjbGFzcy4KCSAqIEBsaW5rIGh0dHA6Ly9waHAubmV0L21hbnVhbC9lbi9rZXl3b3JkLmV4dGVuZHMucGhwIFBIUDQgZXh0ZW5kcyBkb2N1bWVudGF0aW9uCgkgKiBAbGluayBodHRwOi8vcGhwLm5ldC9tYW51YWwvZW4vbGFuZ3VhZ2Uub29wNS5iYXNpYy5waHAjbGFuZ3VhZ2Uub29wNS5iYXNpYy5leHRlbmRzIFBIUDUgZXh0ZW5kcyBkb2N1bWVudGF0aW9uCgkgKi8KCWZ1bmN0aW9uIHNldF9jb3B5cmlnaHRfY2xhc3MoJGNsYXNzID0gJ1NpbXBsZVBpZV9Db3B5cmlnaHQnKQoJewoJCWlmIChTaW1wbGVQaWVfTWlzYzo6aXNfc3ViY2xhc3Nfb2YoJGNsYXNzLCAnU2ltcGxlUGllX0NvcHlyaWdodCcpKQoJCXsKCQkJJHRoaXMtPmNvcHlyaWdodF9jbGFzcyA9ICRjbGFzczsKCQkJcmV0dXJuIHRydWU7CgkJfQoJCXJldHVybiBmYWxzZTsKCX0KCgkvKioKCSAqIEFsbG93cyB5b3UgdG8gY2hhbmdlIHdoaWNoIGNsYXNzIFNpbXBsZVBpZSB1c2VzIGZvciA8bWVkaWE6Y3JlZGl0PgoJICogVXNlZnVsIHdoZW4geW91IGFyZSBvdmVybG9hZGluZyBvciBleHRlbmRpbmcgU2ltcGxlUGllJ3MgZGVmYXVsdCBjbGFzc2VzLgoJICoKCSAqIEBhY2Nlc3MgcHVibGljCgkgKiBAcGFyYW0gc3RyaW5nICRjbGFzcyBOYW1lIG9mIGN1c3RvbSBjbGFzcy4KCSAqIEBsaW5rIGh0dHA6Ly9waHAubmV0L21hbnVhbC9lbi9rZXl3b3JkLmV4dGVuZHMucGhwIFBIUDQgZXh0ZW5kcyBkb2N1bWVudGF0aW9uCgkgKiBAbGluayBodHRwOi8vcGhwLm5ldC9tYW51YWwvZW4vbGFuZ3VhZ2Uub29wNS5iYXNpYy5waHAjbGFuZ3VhZ2Uub29wNS5iYXNpYy5leHRlbmRzIFBIUDUgZXh0ZW5kcyBkb2N1bWVudGF0aW9uCgkgKi8KCWZ1bmN0aW9uIHNldF9jcmVkaXRfY2xhc3MoJGNsYXNzID0gJ1NpbXBsZVBpZV9DcmVkaXQnKQoJewoJCWlmIChTaW1wbGVQaWVfTWlzYzo6aXNfc3ViY2xhc3Nfb2YoJGNsYXNzLCAnU2ltcGxlUGllX0NyZWRpdCcpKQoJCXsKCQkJJHRoaXMtPmNyZWRpdF9jbGFzcyA9ICRjbGFzczsKCQkJcmV0dXJuIHRydWU7CgkJfQoJCXJldHVybiBmYWxzZTsKCX0KCgkvKioKCSAqIEFsbG93cyB5b3UgdG8gY2hhbmdlIHdoaWNoIGNsYXNzIFNpbXBsZVBpZSB1c2VzIGZvciA8bWVkaWE6cmF0aW5nPgoJICogVXNlZnVsIHdoZW4geW91IGFyZSBvdmVybG9hZGluZyBvciBleHRlbmRpbmcgU2ltcGxlUGllJ3MgZGVmYXVsdCBjbGFzc2VzLgoJICoKCSAqIEBhY2Nlc3MgcHVibGljCgkgKiBAcGFyYW0gc3RyaW5nICRjbGFzcyBOYW1lIG9mIGN1c3RvbSBjbGFzcy4KCSAqIEBsaW5rIGh0dHA6Ly9waHAubmV0L21hbnVhbC9lbi9rZXl3b3JkLmV4dGVuZHMucGhwIFBIUDQgZXh0ZW5kcyBkb2N1bWVudGF0aW9uCgkgKiBAbGluayBodHRwOi8vcGhwLm5ldC9tYW51YWwvZW4vbGFuZ3VhZ2Uub29wNS5iYXNpYy5waHAjbGFuZ3VhZ2Uub29wNS5iYXNpYy5leHRlbmRzIFBIUDUgZXh0ZW5kcyBkb2N1bWVudGF0aW9uCgkgKi8KCWZ1bmN0aW9uIHNldF9yYXRpbmdfY2xhc3MoJGNsYXNzID0gJ1NpbXBsZVBpZV9SYXRpbmcnKQoJewoJCWlmIChTaW1wbGVQaWVfTWlzYzo6aXNfc3ViY2xhc3Nfb2YoJGNsYXNzLCAnU2ltcGxlUGllX1JhdGluZycpKQoJCXsKCQkJJHRoaXMtPnJhdGluZ19jbGFzcyA9ICRjbGFzczsKCQkJcmV0dXJuIHRydWU7CgkJfQoJCXJldHVybiBmYWxzZTsKCX0KCgkvKioKCSAqIEFsbG93cyB5b3UgdG8gY2hhbmdlIHdoaWNoIGNsYXNzIFNpbXBsZVBpZSB1c2VzIGZvciA8bWVkaWE6cmVzdHJpY3Rpb24+CgkgKiBVc2VmdWwgd2hlbiB5b3UgYXJlIG92ZXJsb2FkaW5nIG9yIGV4dGVuZGluZyBTaW1wbGVQaWUncyBkZWZhdWx0IGNsYXNzZXMuCgkgKgoJICogQGFjY2VzcyBwdWJsaWMKCSAqIEBwYXJhbSBzdHJpbmcgJGNsYXNzIE5hbWUgb2YgY3VzdG9tIGNsYXNzLgoJICogQGxpbmsgaHR0cDovL3BocC5uZXQvbWFudWFsL2VuL2tleXdvcmQuZXh0ZW5kcy5waHAgUEhQNCBleHRlbmRzIGRvY3VtZW50YXRpb24KCSAqIEBsaW5rIGh0dHA6Ly9waHAubmV0L21hbnVhbC9lbi9sYW5ndWFnZS5vb3A1LmJhc2ljLnBocCNsYW5ndWFnZS5vb3A1LmJhc2ljLmV4dGVuZHMgUEhQNSBleHRlbmRzIGRvY3VtZW50YXRpb24KCSAqLwoJZnVuY3Rpb24gc2V0X3Jlc3RyaWN0aW9uX2NsYXNzKCRjbGFzcyA9ICdTaW1wbGVQaWVfUmVzdHJpY3Rpb24nKQoJewoJCWlmIChTaW1wbGVQaWVfTWlzYzo6aXNfc3ViY2xhc3Nfb2YoJGNsYXNzLCAnU2ltcGxlUGllX1Jlc3RyaWN0aW9uJykpCgkJewoJCQkkdGhpcy0+cmVzdHJpY3Rpb25fY2xhc3MgPSAkY2xhc3M7CgkJCXJldHVybiB0cnVlOwoJCX0KCQlyZXR1cm4gZmFsc2U7Cgl9CgoJLyoqCgkgKiBBbGxvd3MgeW91IHRvIGNoYW5nZSB3aGljaCBjbGFzcyBTaW1wbGVQaWUgdXNlcyBmb3IgY29udGVudC10eXBlIHNuaWZmaW5nLgoJICogVXNlZnVsIHdoZW4geW91IGFyZSBvdmVybG9hZGluZyBvciBleHRlbmRpbmcgU2ltcGxlUGllJ3MgZGVmYXVsdCBjbGFzc2VzLgoJICoKCSAqIEBhY2Nlc3MgcHVibGljCgkgKiBAcGFyYW0gc3RyaW5nICRjbGFzcyBOYW1lIG9mIGN1c3RvbSBjbGFzcy4KCSAqIEBsaW5rIGh0dHA6Ly9waHAubmV0L21hbnVhbC9lbi9rZXl3b3JkLmV4dGVuZHMucGhwIFBIUDQgZXh0ZW5kcyBkb2N1bWVudGF0aW9uCgkgKiBAbGluayBodHRwOi8vcGhwLm5ldC9tYW51YWwvZW4vbGFuZ3VhZ2Uub29wNS5iYXNpYy5waHAjbGFuZ3VhZ2Uub29wNS5iYXNpYy5leHRlbmRzIFBIUDUgZXh0ZW5kcyBkb2N1bWVudGF0aW9uCgkgKi8KCWZ1bmN0aW9uIHNldF9jb250ZW50X3R5cGVfc25pZmZlcl9jbGFzcygkY2xhc3MgPSAnU2ltcGxlUGllX0NvbnRlbnRfVHlwZV9TbmlmZmVyJykKCXsKCQlpZiAoU2ltcGxlUGllX01pc2M6OmlzX3N1YmNsYXNzX29mKCRjbGFzcywgJ1NpbXBsZVBpZV9Db250ZW50X1R5cGVfU25pZmZlcicpKQoJCXsKCQkJJHRoaXMtPmNvbnRlbnRfdHlwZV9zbmlmZmVyX2NsYXNzID0gJGNsYXNzOwoJCQlyZXR1cm4gdHJ1ZTsKCQl9CgkJcmV0dXJuIGZhbHNlOwoJfQoKCS8qKgoJICogQWxsb3dzIHlvdSB0byBjaGFuZ2Ugd2hpY2ggY2xhc3MgU2ltcGxlUGllIHVzZXMgaXRlbSBzb3VyY2VzLgoJICogVXNlZnVsIHdoZW4geW91IGFyZSBvdmVybG9hZGluZyBvciBleHRlbmRpbmcgU2ltcGxlUGllJ3MgZGVmYXVsdCBjbGFzc2VzLgoJICoKCSAqIEBhY2Nlc3MgcHVibGljCgkgKiBAcGFyYW0gc3RyaW5nICRjbGFzcyBOYW1lIG9mIGN1c3RvbSBjbGFzcy4KCSAqIEBsaW5rIGh0dHA6Ly9waHAubmV0L21hbnVhbC9lbi9rZXl3b3JkLmV4dGVuZHMucGhwIFBIUDQgZXh0ZW5kcyBkb2N1bWVudGF0aW9uCgkgKiBAbGluayBodHRwOi8vcGhwLm5ldC9tYW51YWwvZW4vbGFuZ3VhZ2Uub29wNS5iYXNpYy5waHAjbGFuZ3VhZ2Uub29wNS5iYXNpYy5leHRlbmRzIFBIUDUgZXh0ZW5kcyBkb2N1bWVudGF0aW9uCgkgKi8KCWZ1bmN0aW9uIHNldF9zb3VyY2VfY2xhc3MoJGNsYXNzID0gJ1NpbXBsZVBpZV9Tb3VyY2UnKQoJewoJCWlmIChTaW1wbGVQaWVfTWlzYzo6aXNfc3ViY2xhc3Nfb2YoJGNsYXNzLCAnU2ltcGxlUGllX1NvdXJjZScpKQoJCXsKCQkJJHRoaXMtPnNvdXJjZV9jbGFzcyA9ICRjbGFzczsKCQkJcmV0dXJuIHRydWU7CgkJfQoJCXJldHVybiBmYWxzZTsKCX0KCgkvKioKCSAqIEFsbG93cyB5b3UgdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgdXNlciBhZ2VudCBzdHJpbmcuCgkgKgoJICogQGFjY2VzcyBwdWJsaWMKCSAqIEBwYXJhbSBzdHJpbmcgJHVhIE5ldyB1c2VyIGFnZW50IHN0cmluZy4KCSAqLwoJZnVuY3Rpb24gc2V0X3VzZXJhZ2VudCgkdWEgPSBTSU1QTEVQSUVfVVNFUkFHRU5UKQoJewoJCSR0aGlzLT51c2VyYWdlbnQgPSAoc3RyaW5nKSAkdWE7Cgl9CgoJLyoqCgkgKiBTZXQgY2FsbGJhY2sgZnVuY3Rpb24gdG8gY3JlYXRlIGNhY2hlIGZpbGVuYW1lIHdpdGgKCSAqCgkgKiBAYWNjZXNzIHB1YmxpYwoJICogQHBhcmFtIG1peGVkICRmdW5jdGlvbiBDYWxsYmFjayBmdW5jdGlvbgoJICovCglmdW5jdGlvbiBzZXRfY2FjaGVfbmFtZV9mdW5jdGlvbigkZnVuY3Rpb24gPSAnbWQ1JykKCXsKCQlpZiAoaXNfY2FsbGFibGUoJGZ1bmN0aW9uKSkKCQl7CgkJCSR0aGlzLT5jYWNoZV9uYW1lX2Z1bmN0aW9uID0gJGZ1bmN0aW9uOwoJCX0KCX0KCgkvKioKCSAqIFNldCBqYXZhc2NyaXB0IHF1ZXJ5IHN0cmluZyBwYXJhbWV0ZXIKCSAqCgkgKiBAYWNjZXNzIHB1YmxpYwoJICogQHBhcmFtIG1peGVkICRnZXQgSmF2YXNjcmlwdCBxdWVyeSBzdHJpbmcgcGFyYW1ldGVyCgkgKi8KCWZ1bmN0aW9uIHNldF9qYXZhc2NyaXB0KCRnZXQgPSAnanMnKQoJewoJCWlmICgkZ2V0KQoJCXsKCQkJJHRoaXMtPmphdmFzY3JpcHQgPSAoc3RyaW5nKSAkZ2V0OwoJCX0KCQllbHNlCgkJewoJCQkkdGhpcy0+amF2YXNjcmlwdCA9IGZhbHNlOwoJCX0KCX0KCgkvKioKCSAqIFNldCBvcHRpb25zIHRvIG1ha2UgU1AgYXMgZmFzdCBhcyBwb3NzaWJsZS4gIEZvcmdvZXMgYQoJICogc3Vic3RhbnRpYWwgYW1vdW50IG9mIGRhdGEgc2FuaXRpemF0aW9uIGluIGZhdm9yIG9mIHNwZWVkLgoJICoKCSAqIEBhY2Nlc3MgcHVibGljCgkgKiBAcGFyYW0gYm9vbCAkc2V0IFdoZXRoZXIgdG8gc2V0IHRoZW0gb3Igbm90CgkgKi8KCWZ1bmN0aW9uIHNldF9zdHVwaWRseV9mYXN0KCRzZXQgPSBmYWxzZSkKCXsKCQlpZiAoJHNldCkKCQl7CgkJCSR0aGlzLT5lbmFibGVfb3JkZXJfYnlfZGF0ZShmYWxzZSk7CgkJCSR0aGlzLT5yZW1vdmVfZGl2KGZhbHNlKTsKCQkJJHRoaXMtPnN0cmlwX2NvbW1lbnRzKGZhbHNlKTsKCQkJJHRoaXMtPnN0cmlwX2h0bWx0YWdzKGZhbHNlKTsKCQkJJHRoaXMtPnN0cmlwX2F0dHJpYnV0ZXMoZmFsc2UpOwoJCQkkdGhpcy0+c2V0X2ltYWdlX2hhbmRsZXIoZmFsc2UpOwoJCX0KCX0KCgkvKioKCSAqIFNldCBtYXhpbXVtIG51bWJlciBvZiBmZWVkcyB0byBjaGVjayB3aXRoIGF1dG9kaXNjb3ZlcnkKCSAqCgkgKiBAYWNjZXNzIHB1YmxpYwoJICogQHBhcmFtIGludCAkbWF4IE1heGltdW0gbnVtYmVyIG9mIGZlZWRzIHRvIGNoZWNrCgkgKi8KCWZ1bmN0aW9uIHNldF9tYXhfY2hlY2tlZF9mZWVkcygkbWF4ID0gMTApCgl7CgkJJHRoaXMtPm1heF9jaGVja2VkX2ZlZWRzID0gKGludCkgJG1heDsKCX0KCglmdW5jdGlvbiByZW1vdmVfZGl2KCRlbmFibGUgPSB0cnVlKQoJewoJCSR0aGlzLT5zYW5pdGl6ZS0+cmVtb3ZlX2RpdigkZW5hYmxlKTsKCX0KCglmdW5jdGlvbiBzdHJpcF9odG1sdGFncygkdGFncyA9ICcnLCAkZW5jb2RlID0gbnVsbCkKCXsKCQlpZiAoJHRhZ3MgPT09ICcnKQoJCXsKCQkJJHRhZ3MgPSAkdGhpcy0+c3RyaXBfaHRtbHRhZ3M7CgkJfQoJCSR0aGlzLT5zYW5pdGl6ZS0+c3RyaXBfaHRtbHRhZ3MoJHRhZ3MpOwoJCWlmICgkZW5jb2RlICE9PSBudWxsKQoJCXsKCQkJJHRoaXMtPnNhbml0aXplLT5lbmNvZGVfaW5zdGVhZF9vZl9zdHJpcCgkdGFncyk7CgkJfQoJfQoKCWZ1bmN0aW9uIGVuY29kZV9pbnN0ZWFkX29mX3N0cmlwKCRlbmFibGUgPSB0cnVlKQoJewoJCSR0aGlzLT5zYW5pdGl6ZS0+ZW5jb2RlX2luc3RlYWRfb2Zfc3RyaXAoJGVuYWJsZSk7Cgl9CgoJZnVuY3Rpb24gc3RyaXBfYXR0cmlidXRlcygkYXR0cmlicyA9ICcnKQoJewoJCWlmICgkYXR0cmlicyA9PT0gJycpCgkJewoJCQkkYXR0cmlicyA9ICR0aGlzLT5zdHJpcF9hdHRyaWJ1dGVzOwoJCX0KCQkkdGhpcy0+c2FuaXRpemUtPnN0cmlwX2F0dHJpYnV0ZXMoJGF0dHJpYnMpOwoJfQoKCWZ1bmN0aW9uIHNldF9vdXRwdXRfZW5jb2RpbmcoJGVuY29kaW5nID0gJ1VURi04JykKCXsKCQkkdGhpcy0+c2FuaXRpemUtPnNldF9vdXRwdXRfZW5jb2RpbmcoJGVuY29kaW5nKTsKCX0KCglmdW5jdGlvbiBzdHJpcF9jb21tZW50cygkc3RyaXAgPSBmYWxzZSkKCXsKCQkkdGhpcy0+c2FuaXRpemUtPnN0cmlwX2NvbW1lbnRzKCRzdHJpcCk7Cgl9CgoJLyoqCgkgKiBTZXQgZWxlbWVudC9hdHRyaWJ1dGUga2V5L3ZhbHVlIHBhaXJzIG9mIEhUTUwgYXR0cmlidXRlcwoJICogY29udGFpbmluZyBVUkxzIHRoYXQgbmVlZCB0byBiZSByZXNvbHZlZCByZWxhdGl2ZSB0byB0aGUgZmVlZAoJICoKCSAqIEBhY2Nlc3MgcHVibGljCgkgKiBAc2luY2UgMS4wCgkgKiBAcGFyYW0gYXJyYXkgJGVsZW1lbnRfYXR0cmlidXRlIEVsZW1lbnQvYXR0cmlidXRlIGtleS92YWx1ZSBwYWlycwoJICovCglmdW5jdGlvbiBzZXRfdXJsX3JlcGxhY2VtZW50cygkZWxlbWVudF9hdHRyaWJ1dGUgPSBhcnJheSgnYScgPT4gJ2hyZWYnLCAnYXJlYScgPT4gJ2hyZWYnLCAnYmxvY2txdW90ZScgPT4gJ2NpdGUnLCAnZGVsJyA9PiAnY2l0ZScsICdmb3JtJyA9PiAnYWN0aW9uJywgJ2ltZycgPT4gYXJyYXkoJ2xvbmdkZXNjJywgJ3NyYycpLCAnaW5wdXQnID0+ICdzcmMnLCAnaW5zJyA9PiAnY2l0ZScsICdxJyA9PiAnY2l0ZScpKQoJewoJCSR0aGlzLT5zYW5pdGl6ZS0+c2V0X3VybF9yZXBsYWNlbWVudHMoJGVsZW1lbnRfYXR0cmlidXRlKTsKCX0KCgkvKioKCSAqIFNldCB0aGUgaGFuZGxlciB0byBlbmFibGUgdGhlIGRpc3BsYXkgb2YgY2FjaGVkIGZhdmljb25zLgoJICoKCSAqIEBhY2Nlc3MgcHVibGljCgkgKiBAcGFyYW0gc3RyICRwYWdlIFdlYi1hY2Nlc3NpYmxlIHBhdGggdG8gdGhlIGhhbmRsZXJfZmF2aWNvbi5waHAgZmlsZS4KCSAqIEBwYXJhbSBzdHIgJHFzIFRoZSBxdWVyeSBzdHJpbmcgdGhhdCB0aGUgdmFsdWUgc2hvdWxkIGJlIHBhc3NlZCB0by4KCSAqLwoJZnVuY3Rpb24gc2V0X2Zhdmljb25faGFuZGxlcigkcGFnZSA9IGZhbHNlLCAkcXMgPSAnaScpCgl7CgkJaWYgKCRwYWdlICE9IGZhbHNlKQoJCXsKCQkJJHRoaXMtPmZhdmljb25faGFuZGxlciA9ICRwYWdlIC4gJz8nIC4gJHFzIC4gJz0nOwoJCX0KCQllbHNlCgkJewoJCQkkdGhpcy0+ZmF2aWNvbl9oYW5kbGVyID0gJyc7CgkJfQoJfQoKCS8qKgoJICogU2V0IHRoZSBoYW5kbGVyIHRvIGVuYWJsZSB0aGUgZGlzcGxheSBvZiBjYWNoZWQgaW1hZ2VzLgoJICoKCSAqIEBhY2Nlc3MgcHVibGljCgkgKiBAcGFyYW0gc3RyICRwYWdlIFdlYi1hY2Nlc3NpYmxlIHBhdGggdG8gdGhlIGhhbmRsZXJfaW1hZ2UucGhwIGZpbGUuCgkgKiBAcGFyYW0gc3RyICRxcyBUaGUgcXVlcnkgc3RyaW5nIHRoYXQgdGhlIHZhbHVlIHNob3VsZCBiZSBwYXNzZWQgdG8uCgkgKi8KCWZ1bmN0aW9uIHNldF9pbWFnZV9oYW5kbGVyKCRwYWdlID0gZmFsc2UsICRxcyA9ICdpJykKCXsKCQlpZiAoJHBhZ2UgIT0gZmFsc2UpCgkJewoJCQkkdGhpcy0+c2FuaXRpemUtPnNldF9pbWFnZV9oYW5kbGVyKCRwYWdlIC4gJz8nIC4gJHFzIC4gJz0nKTsKCQl9CgkJZWxzZQoJCXsKCQkJJHRoaXMtPmltYWdlX2hhbmRsZXIgPSAnJzsKCQl9Cgl9CgoJLyoqCgkgKiBTZXQgdGhlIGxpbWl0IGZvciBpdGVtcyByZXR1cm5lZCBwZXItZmVlZCB3aXRoIG11bHRpZmVlZHMuCgkgKgoJICogQGFjY2VzcyBwdWJsaWMKCSAqIEBwYXJhbSBpbnRlZ2VyICRsaW1pdCBUaGUgbWF4aW11bSBudW1iZXIgb2YgaXRlbXMgdG8gcmV0dXJuLgoJICovCglmdW5jdGlvbiBzZXRfaXRlbV9saW1pdCgkbGltaXQgPSAwKQoJewoJCSR0aGlzLT5pdGVtX2xpbWl0ID0gKGludCkgJGxpbWl0OwoJfQoKCWZ1bmN0aW9uIGluaXQoKQoJewoJCWlmICgoZnVuY3Rpb25fZXhpc3RzKCd2ZXJzaW9uX2NvbXBhcmUnKSAmJiB2ZXJzaW9uX2NvbXBhcmUoUEhQX1ZFUlNJT04sICc0LjMuMCcsICc8JykpIHx8ICFleHRlbnNpb25fbG9hZGVkKCd4bWwnKSB8fCAhZXh0ZW5zaW9uX2xvYWRlZCgncGNyZScpKQoJCXsKCQkJcmV0dXJuIGZhbHNlOwoJCX0KCQlpZiAoaXNzZXQoJF9HRVRbJHRoaXMtPmphdmFzY3JpcHRdKSkKCQl7CgkJCWlmIChmdW5jdGlvbl9leGlzdHMoJ29iX2d6aGFuZGxlcicpKQoJCQl7CgkJCQlvYl9zdGFydCgnb2JfZ3poYW5kbGVyJyk7CgkJCX0KCQkJaGVhZGVyKCdDb250ZW50LXR5cGU6IHRleHQvamF2YXNjcmlwdDsgY2hhcnNldDogVVRGLTgnKTsKCQkJaGVhZGVyKCdDYWNoZS1Db250cm9sOiBtdXN0LXJldmFsaWRhdGUnKTsKCQkJaGVhZGVyKCdFeHBpcmVzOiAnIC4gZ21kYXRlKCdELCBkIE0gWSBIOmk6cycsIHRpbWUoKSArIDYwNDgwMCkgLiAnIEdNVCcpOyAvLyA3IGRheXMKCQkJPz4KZnVuY3Rpb24gZW1iZWRfb2RlbyhsaW5rKSB7Cglkb2N1bWVudC53cml0ZWxuKCc8ZW1iZWQgc3JjPSJodHRwOi8vb2Rlby5jb20vZmxhc2gvYXVkaW9fcGxheWVyX2Z1bGxzaXplLnN3ZiIgcGx1Z2luc3BhZ2U9Imh0dHA6Ly93d3cubWFjcm9tZWRpYS5jb20vZ28vZ2V0Zmxhc2hwbGF5ZXIiIHR5cGU9ImFwcGxpY2F0aW9uL3gtc2hvY2t3YXZlLWZsYXNoIiBxdWFsaXR5PSJoaWdoIiB3aWR0aD0iNDQwIiBoZWlnaHQ9IjgwIiB3bW9kZT0idHJhbnNwYXJlbnQiIGFsbG93U2NyaXB0QWNjZXNzPSJhbnkiIGZsYXNodmFycz0idmFsaWRfc2FtcGxlX3JhdGU9dHJ1ZSZleHRlcm5hbF91cmw9JytsaW5rKyciPjwvZW1iZWQ+Jyk7Cn0KCmZ1bmN0aW9uIGVtYmVkX3F1aWNrdGltZSh0eXBlLCBiZ2NvbG9yLCB3aWR0aCwgaGVpZ2h0LCBsaW5rLCBwbGFjZWhvbGRlciwgbG9vcCkgewoJaWYgKHBsYWNlaG9sZGVyICE9ICcnKSB7CgkJZG9jdW1lbnQud3JpdGVsbignPGVtYmVkIHR5cGU9IicrdHlwZSsnIiBzdHlsZT0iY3Vyc29yOmhhbmQ7IGN1cnNvcjpwb2ludGVyOyIgaHJlZj0iJytsaW5rKyciIHNyYz0iJytwbGFjZWhvbGRlcisnIiB3aWR0aD0iJyt3aWR0aCsnIiBoZWlnaHQ9IicraGVpZ2h0KyciIGF1dG9wbGF5PSJmYWxzZSIgdGFyZ2V0PSJteXNlbGYiIGNvbnRyb2xsZXI9ImZhbHNlIiBsb29wPSInK2xvb3ArJyIgc2NhbGU9ImFzcGVjdCIgYmdjb2xvcj0iJytiZ2NvbG9yKyciIHBsdWdpbnNwYWdlPSJodHRwOi8vd3d3LmFwcGxlLmNvbS9xdWlja3RpbWUvZG93bmxvYWQvIj48L2VtYmVkPicpOwoJfQoJZWxzZSB7CgkJZG9jdW1lbnQud3JpdGVsbignPGVtYmVkIHR5cGU9IicrdHlwZSsnIiBzdHlsZT0iY3Vyc29yOmhhbmQ7IGN1cnNvcjpwb2ludGVyOyIgc3JjPSInK2xpbmsrJyIgd2lkdGg9Iicrd2lkdGgrJyIgaGVpZ2h0PSInK2hlaWdodCsnIiBhdXRvcGxheT0iZmFsc2UiIHRhcmdldD0ibXlzZWxmIiBjb250cm9sbGVyPSJ0cnVlIiBsb29wPSInK2xvb3ArJyIgc2NhbGU9ImFzcGVjdCIgYmdjb2xvcj0iJytiZ2NvbG9yKyciIHBsdWdpbnNwYWdlPSJodHRwOi8vd3d3LmFwcGxlLmNvbS9xdWlja3RpbWUvZG93bmxvYWQvIj48L2VtYmVkPicpOwoJfQp9CgpmdW5jdGlvbiBlbWJlZF9mbGFzaChiZ2NvbG9yLCB3aWR0aCwgaGVpZ2h0LCBsaW5rLCBsb29wLCB0eXBlKSB7Cglkb2N1bWVudC53cml0ZWxuKCc8ZW1iZWQgc3JjPSInK2xpbmsrJyIgcGx1Z2luc3BhZ2U9Imh0dHA6Ly93d3cubWFjcm9tZWRpYS5jb20vZ28vZ2V0Zmxhc2hwbGF5ZXIiIHR5cGU9IicrdHlwZSsnIiBxdWFsaXR5PSJoaWdoIiB3aWR0aD0iJyt3aWR0aCsnIiBoZWlnaHQ9IicraGVpZ2h0KyciIGJnY29sb3I9IicrYmdjb2xvcisnIiBsb29wPSInK2xvb3ArJyI+PC9lbWJlZD4nKTsKfQoKZnVuY3Rpb24gZW1iZWRfZmx2KHdpZHRoLCBoZWlnaHQsIGxpbmssIHBsYWNlaG9sZGVyLCBsb29wLCBwbGF5ZXIpIHsKCWRvY3VtZW50LndyaXRlbG4oJzxlbWJlZCBzcmM9IicrcGxheWVyKyciIHBsdWdpbnNwYWdlPSJodHRwOi8vd3d3Lm1hY3JvbWVkaWEuY29tL2dvL2dldGZsYXNocGxheWVyIiB0eXBlPSJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCIgcXVhbGl0eT0iaGlnaCIgd2lkdGg9Iicrd2lkdGgrJyIgaGVpZ2h0PSInK2hlaWdodCsnIiB3bW9kZT0idHJhbnNwYXJlbnQiIGZsYXNodmFycz0iZmlsZT0nK2xpbmsrJyZhdXRvc3RhcnQ9ZmFsc2UmcmVwZWF0PScrbG9vcCsnJnNob3dkaWdpdHM9dHJ1ZSZzaG93ZnNidXR0b249ZmFsc2UiPjwvZW1iZWQ+Jyk7Cn0KCmZ1bmN0aW9uIGVtYmVkX3dtZWRpYSh3aWR0aCwgaGVpZ2h0LCBsaW5rKSB7Cglkb2N1bWVudC53cml0ZWxuKCc8ZW1iZWQgdHlwZT0iYXBwbGljYXRpb24veC1tcGxheWVyMiIgc3JjPSInK2xpbmsrJyIgYXV0b3NpemU9IjEiIHdpZHRoPSInK3dpZHRoKyciIGhlaWdodD0iJytoZWlnaHQrJyIgc2hvd2NvbnRyb2xzPSIxIiBzaG93c3RhdHVzYmFyPSIwIiBzaG93ZGlzcGxheT0iMCIgYXV0b3N0YXJ0PSIwIj48L2VtYmVkPicpOwp9CgkJCTw/cGhwCgkJCWV4aXQ7CgkJfQoKCQkvLyBQYXNzIHdoYXRldmVyIHdhcyBzZXQgd2l0aCBjb25maWcgb3B0aW9ucyBvdmVyIHRvIHRoZSBzYW5pdGl6ZXIuCgkJJHRoaXMtPnNhbml0aXplLT5wYXNzX2NhY2hlX2RhdGEoJHRoaXMtPmNhY2hlLCAkdGhpcy0+Y2FjaGVfbG9jYXRpb24sICR0aGlzLT5jYWNoZV9uYW1lX2Z1bmN0aW9uLCAkdGhpcy0+Y2FjaGVfY2xhc3MpOwoJCSR0aGlzLT5zYW5pdGl6ZS0+cGFzc19maWxlX2RhdGEoJHRoaXMtPmZpbGVfY2xhc3MsICR0aGlzLT50aW1lb3V0LCAkdGhpcy0+dXNlcmFnZW50LCAkdGhpcy0+Zm9yY2VfZnNvY2tvcGVuKTsKCgkJaWYgKCR0aGlzLT5mZWVkX3VybCAhPT0gbnVsbCB8fCAkdGhpcy0+cmF3X2RhdGEgIT09IG51bGwpCgkJewoJCQkkdGhpcy0+ZGF0YSA9IGFycmF5KCk7CgkJCSR0aGlzLT5tdWx0aWZlZWRfb2JqZWN0cyA9IGFycmF5KCk7CgkJCSRjYWNoZSA9IGZhbHNlOwoKCQkJaWYgKCR0aGlzLT5mZWVkX3VybCAhPT0gbnVsbCkKCQkJewoJCQkJJHBhcnNlZF9mZWVkX3VybCA9IFNpbXBsZVBpZV9NaXNjOjpwYXJzZV91cmwoJHRoaXMtPmZlZWRfdXJsKTsKCQkJCS8vIERlY2lkZSB3aGV0aGVyIHRvIGVuYWJsZSBjYWNoaW5nCgkJCQlpZiAoJHRoaXMtPmNhY2hlICYmICRwYXJzZWRfZmVlZF91cmxbJ3NjaGVtZSddICE9PSAnJykKCQkJCXsKCQkJCQkkY2FjaGUgPSBjYWxsX3VzZXJfZnVuYyhhcnJheSgkdGhpcy0+Y2FjaGVfY2xhc3MsICdjcmVhdGUnKSwgJHRoaXMtPmNhY2hlX2xvY2F0aW9uLCBjYWxsX3VzZXJfZnVuYygkdGhpcy0+Y2FjaGVfbmFtZV9mdW5jdGlvbiwgJHRoaXMtPmZlZWRfdXJsKSwgJ3NwYycpOwoJCQkJfQoJCQkJLy8gSWYgaXQncyBlbmFibGVkIGFuZCB3ZSBkb24ndCB3YW50IGFuIFhNTCBkdW1wLCB1c2UgdGhlIGNhY2hlCgkJCQlpZiAoJGNhY2hlICYmICEkdGhpcy0+eG1sX2R1bXApCgkJCQl7CgkJCQkJLy8gTG9hZCB0aGUgQ2FjaGUKCQkJCQkkdGhpcy0+ZGF0YSA9ICRjYWNoZS0+bG9hZCgpOwoJCQkJCWlmICghZW1wdHkoJHRoaXMtPmRhdGEpKQoJCQkJCXsKCQkJCQkJLy8gSWYgdGhlIGNhY2hlIGlzIGZvciBhbiBvdXRkYXRlZCBidWlsZCBvZiBTaW1wbGVQaWUKCQkJCQkJaWYgKCFpc3NldCgkdGhpcy0+ZGF0YVsnYnVpbGQnXSkgfHwgJHRoaXMtPmRhdGFbJ2J1aWxkJ10gIT0gU0lNUExFUElFX0JVSUxEKQoJCQkJCQl7CgkJCQkJCQkkY2FjaGUtPnVubGluaygpOwoJCQkJCQkJJHRoaXMtPmRhdGEgPSBhcnJheSgpOwoJCQkJCQl9CgkJCQkJCS8vIElmIHdlJ3ZlIGhpdCBhIGNvbGxpc2lvbiBqdXN0IHJlcnVuIGl0IHdpdGggY2FjaGluZyBkaXNhYmxlZAoJCQkJCQllbHNlaWYgKGlzc2V0KCR0aGlzLT5kYXRhWyd1cmwnXSkgJiYgJHRoaXMtPmRhdGFbJ3VybCddICE9ICR0aGlzLT5mZWVkX3VybCkKCQkJCQkJewoJCQkJCQkJJGNhY2hlID0gZmFsc2U7CgkJCQkJCQkkdGhpcy0+ZGF0YSA9IGFycmF5KCk7CgkJCQkJCX0KCQkJCQkJLy8gSWYgd2UndmUgZ290IGEgbm9uIGZlZWRfdXJsIHN0b3JlZCAoaWYgdGhlIHBhZ2UgaXNuJ3QgYWN0dWFsbHkgYSBmZWVkLCBvciBpcyBhIHJlZGlyZWN0KSB1c2UgdGhhdCBVUkwuCgkJCQkJCWVsc2VpZiAoaXNzZXQoJHRoaXMtPmRhdGFbJ2ZlZWRfdXJsJ10pKQoJCQkJCQl7CgkJCQkJCQkvLyBJZiB0aGUgYXV0b2Rpc2NvdmVyeSBjYWNoZSBpcyBzdGlsbCB2YWxpZCB1c2UgaXQuCgkJCQkJCQlpZiAoJGNhY2hlLT5tdGltZSgpICsgJHRoaXMtPmF1dG9kaXNjb3ZlcnlfY2FjaGVfZHVyYXRpb24gPiB0aW1lKCkpCgkJCQkJCQl7CgkJCQkJCQkJLy8gRG8gbm90IG5lZWQgdG8gZG8gZmVlZCBhdXRvZGlzY292ZXJ5IHlldC4KCQkJCQkJCQlpZiAoJHRoaXMtPmRhdGFbJ2ZlZWRfdXJsJ10gPT0gJHRoaXMtPmRhdGFbJ3VybCddKQoJCQkJCQkJCXsKCQkJCQkJCQkJJGNhY2hlLT51bmxpbmsoKTsKCQkJCQkJCQkJJHRoaXMtPmRhdGEgPSBhcnJheSgpOwoJCQkJCQkJCX0KCQkJCQkJCQllbHNlCgkJCQkJCQkJewoJCQkJCQkJCQkkdGhpcy0+c2V0X2ZlZWRfdXJsKCR0aGlzLT5kYXRhWydmZWVkX3VybCddKTsKCQkJCQkJCQkJcmV0dXJuICR0aGlzLT5pbml0KCk7CgkJCQkJCQkJfQoJCQkJCQkJfQoJCQkJCQl9CgkJCQkJCS8vIENoZWNrIGlmIHRoZSBjYWNoZSBoYXMgYmVlbiB1cGRhdGVkCgkJCQkJCWVsc2VpZiAoJGNhY2hlLT5tdGltZSgpICsgJHRoaXMtPmNhY2hlX2R1cmF0aW9uIDwgdGltZSgpKQoJCQkJCQl7CgkJCQkJCQkvLyBJZiB3ZSBoYXZlIGxhc3QtbW9kaWZpZWQgYW5kL29yIGV0YWcgc2V0CgkJCQkJCQlpZiAoaXNzZXQoJHRoaXMtPmRhdGFbJ2hlYWRlcnMnXVsnbGFzdC1tb2RpZmllZCddKSB8fCBpc3NldCgkdGhpcy0+ZGF0YVsnaGVhZGVycyddWydldGFnJ10pKQoJCQkJCQkJewoJCQkJCQkJCSRoZWFkZXJzID0gYXJyYXkoKTsKCQkJCQkJCQlpZiAoaXNzZXQoJHRoaXMtPmRhdGFbJ2hlYWRlcnMnXVsnbGFzdC1tb2RpZmllZCddKSkKCQkJCQkJCQl7CgkJCQkJCQkJCSRoZWFkZXJzWydpZi1tb2RpZmllZC1zaW5jZSddID0gJHRoaXMtPmRhdGFbJ2hlYWRlcnMnXVsnbGFzdC1tb2RpZmllZCddOwoJCQkJCQkJCX0KCQkJCQkJCQlpZiAoaXNzZXQoJHRoaXMtPmRhdGFbJ2hlYWRlcnMnXVsnZXRhZyddKSkKCQkJCQkJCQl7CgkJCQkJCQkJCSRoZWFkZXJzWydpZi1ub25lLW1hdGNoJ10gPSAnIicgLiAkdGhpcy0+ZGF0YVsnaGVhZGVycyddWydldGFnJ10gLiAnIic7CgkJCQkJCQkJfQoJCQkJCQkJCSRmaWxlID0mIG5ldyAkdGhpcy0+ZmlsZV9jbGFzcygkdGhpcy0+ZmVlZF91cmwsICR0aGlzLT50aW1lb3V0LzEwLCA1LCAkaGVhZGVycywgJHRoaXMtPnVzZXJhZ2VudCwgJHRoaXMtPmZvcmNlX2Zzb2Nrb3Blbik7CgkJCQkJCQkJaWYgKCRmaWxlLT5zdWNjZXNzKQoJCQkJCQkJCXsKCQkJCQkJCQkJaWYgKCRmaWxlLT5zdGF0dXNfY29kZSA9PSAzMDQpCgkJCQkJCQkJCXsKCQkJCQkJCQkJCSRjYWNoZS0+dG91Y2goKTsKCQkJCQkJCQkJCXJldHVybiB0cnVlOwoJCQkJCQkJCQl9CgkJCQkJCQkJCWVsc2UKCQkJCQkJCQkJewoJCQkJCQkJCQkJJGhlYWRlcnMgPSAkZmlsZS0+aGVhZGVyczsKCQkJCQkJCQkJfQoJCQkJCQkJCX0KCQkJCQkJCQllbHNlCgkJCQkJCQkJewoJCQkJCQkJCQl1bnNldCgkZmlsZSk7CgkJCQkJCQkJfQoJCQkJCQkJfQoJCQkJCQl9CgkJCQkJCS8vIElmIHRoZSBjYWNoZSBpcyBzdGlsbCB2YWxpZCwganVzdCByZXR1cm4gdHJ1ZQoJCQkJCQllbHNlCgkJCQkJCXsKCQkJCQkJCXJldHVybiB0cnVlOwoJCQkJCQl9CgkJCQkJfQoJCQkJCS8vIElmIHRoZSBjYWNoZSBpcyBlbXB0eSwgZGVsZXRlIGl0CgkJCQkJZWxzZQoJCQkJCXsKCQkJCQkJJGNhY2hlLT51bmxpbmsoKTsKCQkJCQkJJHRoaXMtPmRhdGEgPSBhcnJheSgpOwoJCQkJCX0KCQkJCX0KCQkJCS8vIElmIHdlIGRvbid0IGFscmVhZHkgaGF2ZSB0aGUgZmlsZSAoaXQnbGwgb25seSBleGlzdCBpZiB3ZSd2ZSBvcGVuZWQgaXQgdG8gY2hlY2sgaWYgdGhlIGNhY2hlIGhhcyBiZWVuIG1vZGlmaWVkKSwgb3BlbiBpdC4KCQkJCWlmICghaXNzZXQoJGZpbGUpKQoJCQkJewoJCQkJCWlmIChpc19hKCR0aGlzLT5maWxlLCAnU2ltcGxlUGllX0ZpbGUnKSAmJiAkdGhpcy0+ZmlsZS0+dXJsID09ICR0aGlzLT5mZWVkX3VybCkKCQkJCQl7CgkJCQkJCSRmaWxlID0mICR0aGlzLT5maWxlOwoJCQkJCX0KCQkJCQllbHNlCgkJCQkJewoJCQkJCQkkZmlsZSA9JiBuZXcgJHRoaXMtPmZpbGVfY2xhc3MoJHRoaXMtPmZlZWRfdXJsLCAkdGhpcy0+dGltZW91dCwgNSwgbnVsbCwgJHRoaXMtPnVzZXJhZ2VudCwgJHRoaXMtPmZvcmNlX2Zzb2Nrb3Blbik7CgkJCQkJfQoJCQkJfQoJCQkJLy8gSWYgdGhlIGZpbGUgY29ubmVjdGlvbiBoYXMgYW4gZXJyb3IsIHNldCBTaW1wbGVQaWU6OmVycm9yIHRvIHRoYXQgYW5kIHF1aXQKCQkJCWlmICghJGZpbGUtPnN1Y2Nlc3MpCgkJCQl7CgkJCQkJJHRoaXMtPmVycm9yID0gJGZpbGUtPmVycm9yOwoJCQkJCWlmICghZW1wdHkoJHRoaXMtPmRhdGEpKQoJCQkJCXsKCQkJCQkJcmV0dXJuIHRydWU7CgkJCQkJfQoJCQkJCWVsc2UKCQkJCQl7CgkJCQkJCXJldHVybiBmYWxzZTsKCQkJCQl9CgkJCQl9CgoJCQkJaWYgKCEkdGhpcy0+Zm9yY2VfZmVlZCkKCQkJCXsKCQkJCQkvLyBDaGVjayBpZiB0aGUgc3VwcGxpZWQgVVJMIGlzIGEgZmVlZCwgaWYgaXQgaXNuJ3QsIGxvb2sgZm9yIGl0LgoJCQkJCSRsb2NhdGUgPSYgbmV3ICR0aGlzLT5sb2NhdG9yX2NsYXNzKCRmaWxlLCAkdGhpcy0+dGltZW91dCwgJHRoaXMtPnVzZXJhZ2VudCwgJHRoaXMtPmZpbGVfY2xhc3MsICR0aGlzLT5tYXhfY2hlY2tlZF9mZWVkcywgJHRoaXMtPmNvbnRlbnRfdHlwZV9zbmlmZmVyX2NsYXNzKTsKCQkJCQlpZiAoISRsb2NhdGUtPmlzX2ZlZWQoJGZpbGUpKQoJCQkJCXsKCQkJCQkJLy8gV2UgbmVlZCB0byB1bnNldCB0aGlzIHNvIHRoYXQgaWYgU2ltcGxlUGllOjpzZXRfZmlsZSgpIGhhcyBiZWVuIGNhbGxlZCB0aGF0IG9iamVjdCBpcyB1bnRvdWNoZWQKCQkJCQkJdW5zZXQoJGZpbGUpOwoJCQkJCQlpZiAoJGZpbGUgPSAkbG9jYXRlLT5maW5kKCR0aGlzLT5hdXRvZGlzY292ZXJ5KSkKCQkJCQkJewoJCQkJCQkJaWYgKCRjYWNoZSkKCQkJCQkJCXsKCQkJCQkJCQkkdGhpcy0+ZGF0YSA9IGFycmF5KCd1cmwnID0+ICR0aGlzLT5mZWVkX3VybCwgJ2ZlZWRfdXJsJyA9PiAkZmlsZS0+dXJsLCAnYnVpbGQnID0+IFNJTVBMRVBJRV9CVUlMRCk7CgkJCQkJCQkJaWYgKCEkY2FjaGUtPnNhdmUoJHRoaXMpKQoJCQkJCQkJCXsKCQkJCQkJCQkJdHJpZ2dlcl9lcnJvcigiJGNhY2hlLT5uYW1lIGlzIG5vdCB3cml0ZWFibGUiLCBFX1VTRVJfV0FSTklORyk7CgkJCQkJCQkJfQoJCQkJCQkJCSRjYWNoZSA9IGNhbGxfdXNlcl9mdW5jKGFycmF5KCR0aGlzLT5jYWNoZV9jbGFzcywgJ2NyZWF0ZScpLCAkdGhpcy0+Y2FjaGVfbG9jYXRpb24sIGNhbGxfdXNlcl9mdW5jKCR0aGlzLT5jYWNoZV9uYW1lX2Z1bmN0aW9uLCAkZmlsZS0+dXJsKSwgJ3NwYycpOwoJCQkJCQkJfQoJCQkJCQkJJHRoaXMtPmZlZWRfdXJsID0gJGZpbGUtPnVybDsKCQkJCQkJfQoJCQkJCQllbHNlCgkJCQkJCXsKCQkJCQkJCSR0aGlzLT5lcnJvciA9ICJBIGZlZWQgY291bGQgbm90IGJlIGZvdW5kIGF0ICR0aGlzLT5mZWVkX3VybCI7CgkJCQkJCQlTaW1wbGVQaWVfTWlzYzo6ZXJyb3IoJHRoaXMtPmVycm9yLCBFX1VTRVJfTk9USUNFLCBfX0ZJTEVfXywgX19MSU5FX18pOwoJCQkJCQkJcmV0dXJuIGZhbHNlOwoJCQkJCQl9CgkJCQkJfQoJCQkJCSRsb2NhdGUgPSBudWxsOwoJCQkJfQoKCQkJCSRoZWFkZXJzID0gJGZpbGUtPmhlYWRlcnM7CgkJCQkkZGF0YSA9ICRmaWxlLT5ib2R5OwoJCQkJJHNuaWZmZXIgPSBuZXcgJHRoaXMtPmNvbnRlbnRfdHlwZV9zbmlmZmVyX2NsYXNzKCRmaWxlKTsKCQkJCSRzbmlmZmVkID0gJHNuaWZmZXItPmdldF90eXBlKCk7CgkJCX0KCQkJZWxzZQoJCQl7CgkJCQkkZGF0YSA9ICR0aGlzLT5yYXdfZGF0YTsKCQkJfQoKCQkJLy8gU2V0IHVwIGFycmF5IG9mIHBvc3NpYmxlIGVuY29kaW5ncwoJCQkkZW5jb2RpbmdzID0gYXJyYXkoKTsKCgkJCS8vIEZpcnN0IGNoZWNrIHRvIHNlZSBpZiBpbnB1dCBoYXMgYmVlbiBvdmVycmlkZGVuLgoJCQlpZiAoJHRoaXMtPmlucHV0X2VuY29kaW5nICE9PSBmYWxzZSkKCQkJewoJCQkJJGVuY29kaW5nc1tdID0gJHRoaXMtPmlucHV0X2VuY29kaW5nOwoJCQl9CgoJCQkkYXBwbGljYXRpb25fdHlwZXMgPSBhcnJheSgnYXBwbGljYXRpb24veG1sJywgJ2FwcGxpY2F0aW9uL3htbC1kdGQnLCAnYXBwbGljYXRpb24veG1sLWV4dGVybmFsLXBhcnNlZC1lbnRpdHknKTsKCQkJJHRleHRfdHlwZXMgPSBhcnJheSgndGV4dC94bWwnLCAndGV4dC94bWwtZXh0ZXJuYWwtcGFyc2VkLWVudGl0eScpOwoKCQkJLy8gUkZDIDMwMjMgKG9ubHkgYXBwbGllcyB0byBzbmlmZmVkIGNvbnRlbnQpCgkJCWlmIChpc3NldCgkc25pZmZlZCkpCgkJCXsKCQkJCWlmIChpbl9hcnJheSgkc25pZmZlZCwgJGFwcGxpY2F0aW9uX3R5cGVzKSB8fCBzdWJzdHIoJHNuaWZmZWQsIDAsIDEyKSA9PT0gJ2FwcGxpY2F0aW9uLycgJiYgc3Vic3RyKCRzbmlmZmVkLCAtNCkgPT09ICcreG1sJykKCQkJCXsKCQkJCQlpZiAoaXNzZXQoJGhlYWRlcnNbJ2NvbnRlbnQtdHlwZSddKSAmJiBwcmVnX21hdGNoKCcvO1x4MjA/Y2hhcnNldD0oW147XSopL2knLCAkaGVhZGVyc1snY29udGVudC10eXBlJ10sICRjaGFyc2V0KSkKCQkJCQl7CgkJCQkJCSRlbmNvZGluZ3NbXSA9IHN0cnRvdXBwZXIoJGNoYXJzZXRbMV0pOwoJCQkJCX0KCQkJCQkkZW5jb2RpbmdzID0gYXJyYXlfbWVyZ2UoJGVuY29kaW5ncywgU2ltcGxlUGllX01pc2M6OnhtbF9lbmNvZGluZygkZGF0YSkpOwoJCQkJCSRlbmNvZGluZ3NbXSA9ICdVVEYtOCc7CgkJCQl9CgkJCQllbHNlaWYgKGluX2FycmF5KCRzbmlmZmVkLCAkdGV4dF90eXBlcykgfHwgc3Vic3RyKCRzbmlmZmVkLCAwLCA1KSA9PT0gJ3RleHQvJyAmJiBzdWJzdHIoJHNuaWZmZWQsIC00KSA9PT0gJyt4bWwnKQoJCQkJewoJCQkJCWlmIChpc3NldCgkaGVhZGVyc1snY29udGVudC10eXBlJ10pICYmIHByZWdfbWF0Y2goJy87XHgyMD9jaGFyc2V0PShbXjtdKikvaScsICRoZWFkZXJzWydjb250ZW50LXR5cGUnXSwgJGNoYXJzZXQpKQoJCQkJCXsKCQkJCQkJJGVuY29kaW5nc1tdID0gJGNoYXJzZXRbMV07CgkJCQkJfQoJCQkJCSRlbmNvZGluZ3NbXSA9ICdVUy1BU0NJSSc7CgkJCQl9CgkJCQkvLyBUZXh0IE1JTUUtdHlwZSBkZWZhdWx0CgkJCQllbHNlaWYgKHN1YnN0cigkc25pZmZlZCwgMCwgNSkgPT09ICd0ZXh0LycpCgkJCQl7CgkJCQkJJGVuY29kaW5nc1tdID0gJ1VTLUFTQ0lJJzsKCQkJCX0KCQkJfQoKCQkJLy8gRmFsbGJhY2sgdG8gWE1MIDEuMCBBcHBlbmRpeCBGLjEvVVRGLTgvSVNPLTg4NTktMQoJCQkkZW5jb2RpbmdzID0gYXJyYXlfbWVyZ2UoJGVuY29kaW5ncywgU2ltcGxlUGllX01pc2M6OnhtbF9lbmNvZGluZygkZGF0YSkpOwoJCQkkZW5jb2RpbmdzW10gPSAnVVRGLTgnOwoJCQkkZW5jb2RpbmdzW10gPSAnSVNPLTg4NTktMSc7CgoJCQkvLyBUaGVyZSdzIG5vIHBvaW50IGluIHRyeWluZyBhbiBlbmNvZGluZyB0d2ljZQoJCQkkZW5jb2RpbmdzID0gYXJyYXlfdW5pcXVlKCRlbmNvZGluZ3MpOwoKCQkJLy8gSWYgd2Ugd2FudCB0aGUgWE1MLCBqdXN0IG91dHB1dCB0aGF0IHdpdGggdGhlIG1vc3QgbGlrZWx5IGVuY29kaW5nIGFuZCBxdWl0CgkJCWlmICgkdGhpcy0+eG1sX2R1bXApCgkJCXsKCQkJCWhlYWRlcignQ29udGVudC10eXBlOiB0ZXh0L3htbDsgY2hhcnNldD0nIC4gJGVuY29kaW5nc1swXSk7CgkJCQllY2hvICRkYXRhOwoJCQkJZXhpdDsKCQkJfQoKCQkJLy8gTG9vcCB0aHJvdWdoIGVhY2ggcG9zc2libGUgZW5jb2RpbmcsIHRpbGwgd2UgcmV0dXJuIHNvbWV0aGluZywgb3IgcnVuIG91dCBvZiBwb3NzaWJpbGl0aWVzCgkJCWZvcmVhY2ggKCRlbmNvZGluZ3MgYXMgJGVuY29kaW5nKQoJCQl7CgkJCQkvLyBDaGFuZ2UgdGhlIGVuY29kaW5nIHRvIFVURi04IChhcyB3ZSBhbHdheXMgdXNlIFVURi04IGludGVybmFsbHkpCgkJCQlpZiAoJHV0ZjhfZGF0YSA9IFNpbXBsZVBpZV9NaXNjOjpjaGFuZ2VfZW5jb2RpbmcoJGRhdGEsICRlbmNvZGluZywgJ1VURi04JykpCgkJCQl7CgkJCQkJLy8gQ3JlYXRlIG5ldyBwYXJzZXIKCQkJCQkkcGFyc2VyID0mIG5ldyAkdGhpcy0+cGFyc2VyX2NsYXNzKCk7CgoJCQkJCS8vIElmIGl0J3MgcGFyc2VkIGZpbmUKCQkJCQlpZiAoJHBhcnNlci0+cGFyc2UoJHV0ZjhfZGF0YSwgJ1VURi04JykpCgkJCQkJewoJCQkJCQkkdGhpcy0+ZGF0YSA9ICRwYXJzZXItPmdldF9kYXRhKCk7CgkJCQkJCWlmICgkdGhpcy0+Z2V0X3R5cGUoKSAmIH5TSU1QTEVQSUVfVFlQRV9OT05FKQoJCQkJCQl7CgkJCQkJCQlpZiAoaXNzZXQoJGhlYWRlcnMpKQoJCQkJCQkJewoJCQkJCQkJCSR0aGlzLT5kYXRhWydoZWFkZXJzJ10gPSAkaGVhZGVyczsKCQkJCQkJCX0KCQkJCQkJCSR0aGlzLT5kYXRhWydidWlsZCddID0gU0lNUExFUElFX0JVSUxEOwoKCQkJCQkJCS8vIENhY2hlIHRoZSBmaWxlIGlmIGNhY2hpbmcgaXMgZW5hYmxlZAoJCQkJCQkJaWYgKCRjYWNoZSAmJiAhJGNhY2hlLT5zYXZlKCR0aGlzKSkKCQkJCQkJCXsKCQkJCQkJCQl0cmlnZ2VyX2Vycm9yKCIkY2FjaGUtPm5hbWUgaXMgbm90IHdyaXRlYWJsZSIsIEVfVVNFUl9XQVJOSU5HKTsKCQkJCQkJCX0KCQkJCQkJCXJldHVybiB0cnVlOwoJCQkJCQl9CgkJCQkJCWVsc2UKCQkJCQkJewoJCQkJCQkJJHRoaXMtPmVycm9yID0gIkEgZmVlZCBjb3VsZCBub3QgYmUgZm91bmQgYXQgJHRoaXMtPmZlZWRfdXJsIjsKCQkJCQkJCVNpbXBsZVBpZV9NaXNjOjplcnJvcigkdGhpcy0+ZXJyb3IsIEVfVVNFUl9OT1RJQ0UsIF9fRklMRV9fLCBfX0xJTkVfXyk7CgkJCQkJCQlyZXR1cm4gZmFsc2U7CgkJCQkJCX0KCQkJCQl9CgkJCQl9CgkJCX0KCQkJLy8gV2UgaGF2ZSBhbiBlcnJvciwganVzdCBzZXQgU2ltcGxlUGllOjplcnJvciB0byBpdCBhbmQgcXVpdAoJCQkkdGhpcy0+ZXJyb3IgPSBzcHJpbnRmKCdYTUwgZXJyb3I6ICVzIGF0IGxpbmUgJWQsIGNvbHVtbiAlZCcsICRwYXJzZXItPmdldF9lcnJvcl9zdHJpbmcoKSwgJHBhcnNlci0+Z2V0X2N1cnJlbnRfbGluZSgpLCAkcGFyc2VyLT5nZXRfY3VycmVudF9jb2x1bW4oKSk7CgkJCVNpbXBsZVBpZV9NaXNjOjplcnJvcigkdGhpcy0+ZXJyb3IsIEVfVVNFUl9OT1RJQ0UsIF9fRklMRV9fLCBfX0xJTkVfXyk7CgkJCXJldHVybiBmYWxzZTsKCQl9CgkJZWxzZWlmICghZW1wdHkoJHRoaXMtPm11bHRpZmVlZF91cmwpKQoJCXsKCQkJJGkgPSAwOwoJCQkkc3VjY2VzcyA9IDA7CgkJCSR0aGlzLT5tdWx0aWZlZWRfb2JqZWN0cyA9IGFycmF5KCk7CgkJCWZvcmVhY2ggKCR0aGlzLT5tdWx0aWZlZWRfdXJsIGFzICR1cmwpCgkJCXsKCQkJCWlmIChTSU1QTEVQSUVfUEhQNSkKCQkJCXsKCQkJCQkvLyBUaGlzIGtleXdvcmQgbmVlZHMgdG8gZGVmeSBjb2Rpbmcgc3RhbmRhcmRzIGZvciBQSFA0IGNvbXBhdGliaWxpdHkKCQkJCQkkdGhpcy0+bXVsdGlmZWVkX29iamVjdHNbJGldID0gY2xvbmUoJHRoaXMpOwoJCQkJfQoJCQkJZWxzZQoJCQkJewoJCQkJCSR0aGlzLT5tdWx0aWZlZWRfb2JqZWN0c1skaV0gPSAkdGhpczsKCQkJCX0KCQkJCSR0aGlzLT5tdWx0aWZlZWRfb2JqZWN0c1skaV0tPnNldF9mZWVkX3VybCgkdXJsKTsKCQkJCSRzdWNjZXNzIHw9ICR0aGlzLT5tdWx0aWZlZWRfb2JqZWN0c1skaV0tPmluaXQoKTsKCQkJCSRpKys7CgkJCX0KCQkJcmV0dXJuIChib29sKSAkc3VjY2VzczsKCQl9CgkJZWxzZQoJCXsKCQkJcmV0dXJuIGZhbHNlOwoJCX0KCX0KCgkvKioKCSAqIFJldHVybiB0aGUgZXJyb3IgbWVzc2FnZSBmb3IgdGhlIG9jY3VyZWQgZXJyb3IKCSAqCgkgKiBAYWNjZXNzIHB1YmxpYwoJICogQHJldHVybiBzdHJpbmcgRXJyb3IgbWVzc2FnZQoJICovCglmdW5jdGlvbiBlcnJvcigpCgl7CgkJcmV0dXJuICR0aGlzLT5lcnJvcjsKCX0KCglmdW5jdGlvbiBnZXRfZW5jb2RpbmcoKQoJewoJCXJldHVybiAkdGhpcy0+c2FuaXRpemUtPm91dHB1dF9lbmNvZGluZzsKCX0KCglmdW5jdGlvbiBoYW5kbGVfY29udGVudF90eXBlKCRtaW1lID0gJ3RleHQvaHRtbCcpCgl7CgkJaWYgKCFoZWFkZXJzX3NlbnQoKSkKCQl7CgkJCSRoZWFkZXIgPSAiQ29udGVudC10eXBlOiAkbWltZTsiOwoJCQlpZiAoJHRoaXMtPmdldF9lbmNvZGluZygpKQoJCQl7CgkJCQkkaGVhZGVyIC49ICcgY2hhcnNldD0nIC4gJHRoaXMtPmdldF9lbmNvZGluZygpOwoJCQl9CgkJCWVsc2UKCQkJewoJCQkJJGhlYWRlciAuPSAnIGNoYXJzZXQ9VVRGLTgnOwoJCQl9CgkJCWhlYWRlcigkaGVhZGVyKTsKCQl9Cgl9CgoJZnVuY3Rpb24gZ2V0X3R5cGUoKQoJewoJCWlmICghaXNzZXQoJHRoaXMtPmRhdGFbJ3R5cGUnXSkpCgkJewoJCQkkdGhpcy0+ZGF0YVsndHlwZSddID0gU0lNUExFUElFX1RZUEVfQUxMOwoJCQlpZiAoaXNzZXQoJHRoaXMtPmRhdGFbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9BVE9NXzEwXVsnZmVlZCddKSkKCQkJewoJCQkJJHRoaXMtPmRhdGFbJ3R5cGUnXSAmPSBTSU1QTEVQSUVfVFlQRV9BVE9NXzEwOwoJCQl9CgkJCWVsc2VpZiAoaXNzZXQoJHRoaXMtPmRhdGFbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9BVE9NXzAzXVsnZmVlZCddKSkKCQkJewoJCQkJJHRoaXMtPmRhdGFbJ3R5cGUnXSAmPSBTSU1QTEVQSUVfVFlQRV9BVE9NXzAzOwoJCQl9CgkJCWVsc2VpZiAoaXNzZXQoJHRoaXMtPmRhdGFbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9SREZdWydSREYnXSkpCgkJCXsKCQkJCWlmIChpc3NldCgkdGhpcy0+ZGF0YVsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX1JERl1bJ1JERiddWzBdWydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfUlNTXzEwXVsnY2hhbm5lbCddKQoJCQkJfHwgaXNzZXQoJHRoaXMtPmRhdGFbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9SREZdWydSREYnXVswXVsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX1JTU18xMF1bJ2ltYWdlJ10pCgkJCQl8fCBpc3NldCgkdGhpcy0+ZGF0YVsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX1JERl1bJ1JERiddWzBdWydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfUlNTXzEwXVsnaXRlbSddKQoJCQkJfHwgaXNzZXQoJHRoaXMtPmRhdGFbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9SREZdWydSREYnXVswXVsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX1JTU18xMF1bJ3RleHRpbnB1dCddKSkKCQkJCXsKCQkJCQkkdGhpcy0+ZGF0YVsndHlwZSddICY9IFNJTVBMRVBJRV9UWVBFX1JTU18xMDsKCQkJCX0KCQkJCWlmIChpc3NldCgkdGhpcy0+ZGF0YVsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX1JERl1bJ1JERiddWzBdWydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfUlNTXzA5MF1bJ2NoYW5uZWwnXSkKCQkJCXx8IGlzc2V0KCR0aGlzLT5kYXRhWydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfUkRGXVsnUkRGJ11bMF1bJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9SU1NfMDkwXVsnaW1hZ2UnXSkKCQkJCXx8IGlzc2V0KCR0aGlzLT5kYXRhWydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfUkRGXVsnUkRGJ11bMF1bJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9SU1NfMDkwXVsnaXRlbSddKQoJCQkJfHwgaXNzZXQoJHRoaXMtPmRhdGFbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9SREZdWydSREYnXVswXVsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX1JTU18wOTBdWyd0ZXh0aW5wdXQnXSkpCgkJCQl7CgkJCQkJJHRoaXMtPmRhdGFbJ3R5cGUnXSAmPSBTSU1QTEVQSUVfVFlQRV9SU1NfMDkwOwoJCQkJfQoJCQl9CgkJCWVsc2VpZiAoaXNzZXQoJHRoaXMtPmRhdGFbJ2NoaWxkJ11bJyddWydyc3MnXSkpCgkJCXsKCQkJCSR0aGlzLT5kYXRhWyd0eXBlJ10gJj0gU0lNUExFUElFX1RZUEVfUlNTX0FMTDsKCQkJCWlmIChpc3NldCgkdGhpcy0+ZGF0YVsnY2hpbGQnXVsnJ11bJ3JzcyddWzBdWydhdHRyaWJzJ11bJyddWyd2ZXJzaW9uJ10pKQoJCQkJewoJCQkJCXN3aXRjaCAodHJpbSgkdGhpcy0+ZGF0YVsnY2hpbGQnXVsnJ11bJ3JzcyddWzBdWydhdHRyaWJzJ11bJyddWyd2ZXJzaW9uJ10pKQoJCQkJCXsKCQkJCQkJY2FzZSAnMC45MSc6CgkJCQkJCQkkdGhpcy0+ZGF0YVsndHlwZSddICY9IFNJTVBMRVBJRV9UWVBFX1JTU18wOTE7CgkJCQkJCQlpZiAoaXNzZXQoJHRoaXMtPmRhdGFbJ2NoaWxkJ11bJyddWydyc3MnXVswXVsnY2hpbGQnXVsnJ11bJ3NraXBob3VycyddWydob3VyJ11bMF1bJ2RhdGEnXSkpCgkJCQkJCQl7CgkJCQkJCQkJc3dpdGNoICh0cmltKCR0aGlzLT5kYXRhWydjaGlsZCddWycnXVsncnNzJ11bMF1bJ2NoaWxkJ11bJyddWydza2lwaG91cnMnXVsnaG91ciddWzBdWydkYXRhJ10pKQoJCQkJCQkJCXsKCQkJCQkJCQkJY2FzZSAnMCc6CgkJCQkJCQkJCQkkdGhpcy0+ZGF0YVsndHlwZSddICY9IFNJTVBMRVBJRV9UWVBFX1JTU18wOTFfTkVUU0NBUEU7CgkJCQkJCQkJCQlicmVhazsKCgkJCQkJCQkJCWNhc2UgJzI0JzoKCQkJCQkJCQkJCSR0aGlzLT5kYXRhWyd0eXBlJ10gJj0gU0lNUExFUElFX1RZUEVfUlNTXzA5MV9VU0VSTEFORDsKCQkJCQkJCQkJCWJyZWFrOwoJCQkJCQkJCX0KCQkJCQkJCX0KCQkJCQkJCWJyZWFrOwoKCQkJCQkJY2FzZSAnMC45Mic6CgkJCQkJCQkkdGhpcy0+ZGF0YVsndHlwZSddICY9IFNJTVBMRVBJRV9UWVBFX1JTU18wOTI7CgkJCQkJCQlicmVhazsKCgkJCQkJCWNhc2UgJzAuOTMnOgoJCQkJCQkJJHRoaXMtPmRhdGFbJ3R5cGUnXSAmPSBTSU1QTEVQSUVfVFlQRV9SU1NfMDkzOwoJCQkJCQkJYnJlYWs7CgoJCQkJCQljYXNlICcwLjk0JzoKCQkJCQkJCSR0aGlzLT5kYXRhWyd0eXBlJ10gJj0gU0lNUExFUElFX1RZUEVfUlNTXzA5NDsKCQkJCQkJCWJyZWFrOwoKCQkJCQkJY2FzZSAnMi4wJzoKCQkJCQkJCSR0aGlzLT5kYXRhWyd0eXBlJ10gJj0gU0lNUExFUElFX1RZUEVfUlNTXzIwOwoJCQkJCQkJYnJlYWs7CgkJCQkJfQoJCQkJfQoJCQl9CgkJCWVsc2UKCQkJewoJCQkJJHRoaXMtPmRhdGFbJ3R5cGUnXSA9IFNJTVBMRVBJRV9UWVBFX05PTkU7CgkJCX0KCQl9CgkJcmV0dXJuICR0aGlzLT5kYXRhWyd0eXBlJ107Cgl9CgoJLyoqCgkgKiBSZXR1cm5zIHRoZSBVUkwgZm9yIHRoZSBmYXZpY29uIG9mIHRoZSBmZWVkJ3Mgd2Vic2l0ZS4KCSAqCgkgKiBAdG9kbyBDYWNoZSBhdG9tOmljb24KCSAqIEBhY2Nlc3MgcHVibGljCgkgKiBAc2luY2UgMS4wCgkgKi8KCWZ1bmN0aW9uIGdldF9mYXZpY29uKCkKCXsKCQlpZiAoJHJldHVybiA9ICR0aGlzLT5nZXRfY2hhbm5lbF90YWdzKFNJTVBMRVBJRV9OQU1FU1BBQ0VfQVRPTV8xMCwgJ2ljb24nKSkKCQl7CgkJCXJldHVybiAkdGhpcy0+c2FuaXRpemUoJHJldHVyblswXVsnZGF0YSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX0lSSSwgJHRoaXMtPmdldF9iYXNlKCRyZXR1cm5bMF0pKTsKCQl9CgkJZWxzZWlmICgoJHVybCA9ICR0aGlzLT5nZXRfbGluaygpKSAhPT0gbnVsbCAmJiBwcmVnX21hdGNoKCcvXmh0dHAocyk/OlwvXC8vaScsICR1cmwpKQoJCXsKCQkJJGZhdmljb24gPSBTaW1wbGVQaWVfTWlzYzo6YWJzb2x1dGl6ZV91cmwoJy9mYXZpY29uLmljbycsICR1cmwpOwoKCQkJaWYgKCR0aGlzLT5jYWNoZSAmJiAkdGhpcy0+ZmF2aWNvbl9oYW5kbGVyKQoJCQl7CgkJCQkkZmF2aWNvbl9maWxlbmFtZSA9IGNhbGxfdXNlcl9mdW5jKCR0aGlzLT5jYWNoZV9uYW1lX2Z1bmN0aW9uLCAkZmF2aWNvbik7CgkJCQkkY2FjaGUgPSBjYWxsX3VzZXJfZnVuYyhhcnJheSgkdGhpcy0+Y2FjaGVfY2xhc3MsICdjcmVhdGUnKSwgJHRoaXMtPmNhY2hlX2xvY2F0aW9uLCAkZmF2aWNvbl9maWxlbmFtZSwgJ3NwaScpOwoKCQkJCWlmICgkY2FjaGUtPmxvYWQoKSkKCQkJCXsKCQkJCQlyZXR1cm4gJHRoaXMtPnNhbml0aXplKCR0aGlzLT5mYXZpY29uX2hhbmRsZXIgLiAkZmF2aWNvbl9maWxlbmFtZSwgU0lNUExFUElFX0NPTlNUUlVDVF9JUkkpOwoJCQkJfQoJCQkJZWxzZQoJCQkJewoJCQkJCSRmaWxlID0mIG5ldyAkdGhpcy0+ZmlsZV9jbGFzcygkZmF2aWNvbiwgJHRoaXMtPnRpbWVvdXQgLyAxMCwgNSwgYXJyYXkoJ1gtRk9SV0FSREVELUZPUicgPT4gJF9TRVJWRVJbJ1JFTU9URV9BRERSJ10pLCAkdGhpcy0+dXNlcmFnZW50LCAkdGhpcy0+Zm9yY2VfZnNvY2tvcGVuKTsKCgkJCQkJaWYgKCRmaWxlLT5zdWNjZXNzICYmICgkZmlsZS0+c3RhdHVzX2NvZGUgPT0gMjAwIHx8ICgkZmlsZS0+c3RhdHVzX2NvZGUgPiAyMDYgJiYgJGZpbGUtPnN0YXR1c19jb2RlIDwgMzAwKSkgJiYgc3RybGVuKCRmaWxlLT5ib2R5KSA+IDApCgkJCQkJewoJCQkJCQkkc25pZmZlciA9IG5ldyAkdGhpcy0+Y29udGVudF90eXBlX3NuaWZmZXJfY2xhc3MoJGZpbGUpOwoJCQkJCQlpZiAoc3Vic3RyKCRzbmlmZmVyLT5nZXRfdHlwZSgpLCAwLCA2KSA9PT0gJ2ltYWdlLycpCgkJCQkJCXsKCQkJCQkJCWlmICgkY2FjaGUtPnNhdmUoYXJyYXkoJ2hlYWRlcnMnID0+ICRmaWxlLT5oZWFkZXJzLCAnYm9keScgPT4gJGZpbGUtPmJvZHkpKSkKCQkJCQkJCXsKCQkJCQkJCQlyZXR1cm4gJHRoaXMtPnNhbml0aXplKCR0aGlzLT5mYXZpY29uX2hhbmRsZXIgLiAkZmF2aWNvbl9maWxlbmFtZSwgU0lNUExFUElFX0NPTlNUUlVDVF9JUkkpOwoJCQkJCQkJfQoJCQkJCQkJZWxzZQoJCQkJCQkJewoJCQkJCQkJCXRyaWdnZXJfZXJyb3IoIiRjYWNoZS0+bmFtZSBpcyBub3Qgd3JpdGVhYmxlIiwgRV9VU0VSX1dBUk5JTkcpOwoJCQkJCQkJCXJldHVybiAkdGhpcy0+c2FuaXRpemUoJGZhdmljb24sIFNJTVBMRVBJRV9DT05TVFJVQ1RfSVJJKTsKCQkJCQkJCX0KCQkJCQkJfQoJCQkJCX0KCQkJCX0KCQkJfQoJCQllbHNlCgkJCXsKCQkJCXJldHVybiAkdGhpcy0+c2FuaXRpemUoJGZhdmljb24sIFNJTVBMRVBJRV9DT05TVFJVQ1RfSVJJKTsKCQkJfQoJCX0KCQlyZXR1cm4gZmFsc2U7Cgl9CgoJLyoqCgkgKiBAdG9kbyBJZiB3ZSBoYXZlIGEgcGVybSByZWRpcmVjdCB3ZSBzaG91bGQgcmV0dXJuIHRoZSBuZXcgVVJMCgkgKiBAdG9kbyBXaGVuIHdlIG1ha2UgdGhlIGFib3ZlIGNoYW5nZSwgbGV0J3Mgc3VwcG9ydCA8aXR1bmVzOm5ldy1mZWVkLXVybD4gYXMgd2VsbAoJICogQHRvZG8gQWxzbywgfGF0b206bGlua3xAcmVsPXNlbGYKCSAqLwoJZnVuY3Rpb24gc3Vic2NyaWJlX3VybCgpCgl7CgkJaWYgKCR0aGlzLT5mZWVkX3VybCAhPT0gbnVsbCkKCQl7CgkJCXJldHVybiAkdGhpcy0+c2FuaXRpemUoJHRoaXMtPmZlZWRfdXJsLCBTSU1QTEVQSUVfQ09OU1RSVUNUX0lSSSk7CgkJfQoJCWVsc2UKCQl7CgkJCXJldHVybiBudWxsOwoJCX0KCX0KCglmdW5jdGlvbiBzdWJzY3JpYmVfZmVlZCgpCgl7CgkJaWYgKCR0aGlzLT5mZWVkX3VybCAhPT0gbnVsbCkKCQl7CgkJCXJldHVybiAkdGhpcy0+c2FuaXRpemUoU2ltcGxlUGllX01pc2M6OmZpeF9wcm90b2NvbCgkdGhpcy0+ZmVlZF91cmwsIDIpLCBTSU1QTEVQSUVfQ09OU1RSVUNUX0lSSSk7CgkJfQoJCWVsc2UKCQl7CgkJCXJldHVybiBudWxsOwoJCX0KCX0KCglmdW5jdGlvbiBzdWJzY3JpYmVfb3V0bG9vaygpCgl7CgkJaWYgKCR0aGlzLT5mZWVkX3VybCAhPT0gbnVsbCkKCQl7CgkJCXJldHVybiAnb3V0bG9vaycgLiAkdGhpcy0+c2FuaXRpemUoU2ltcGxlUGllX01pc2M6OmZpeF9wcm90b2NvbCgkdGhpcy0+ZmVlZF91cmwsIDIpLCBTSU1QTEVQSUVfQ09OU1RSVUNUX0lSSSk7CgkJfQoJCWVsc2UKCQl7CgkJCXJldHVybiBudWxsOwoJCX0KCX0KCglmdW5jdGlvbiBzdWJzY3JpYmVfcG9kY2FzdCgpCgl7CgkJaWYgKCR0aGlzLT5mZWVkX3VybCAhPT0gbnVsbCkKCQl7CgkJCXJldHVybiAkdGhpcy0+c2FuaXRpemUoU2ltcGxlUGllX01pc2M6OmZpeF9wcm90b2NvbCgkdGhpcy0+ZmVlZF91cmwsIDMpLCBTSU1QTEVQSUVfQ09OU1RSVUNUX0lSSSk7CgkJfQoJCWVsc2UKCQl7CgkJCXJldHVybiBudWxsOwoJCX0KCX0KCglmdW5jdGlvbiBzdWJzY3JpYmVfaXR1bmVzKCkKCXsKCQlpZiAoJHRoaXMtPmZlZWRfdXJsICE9PSBudWxsKQoJCXsKCQkJcmV0dXJuICR0aGlzLT5zYW5pdGl6ZShTaW1wbGVQaWVfTWlzYzo6Zml4X3Byb3RvY29sKCR0aGlzLT5mZWVkX3VybCwgNCksIFNJTVBMRVBJRV9DT05TVFJVQ1RfSVJJKTsKCQl9CgkJZWxzZQoJCXsKCQkJcmV0dXJuIG51bGw7CgkJfQoJfQoKCS8qKgoJICogQ3JlYXRlcyB0aGUgc3Vic2NyaWJlXyogbWV0aG9kcycgcmV0dXJuIGRhdGEKCSAqCgkgKiBAYWNjZXNzIHByaXZhdGUKCSAqIEBwYXJhbSBzdHJpbmcgJGZlZWRfdXJsIFN0cmluZyB0byBwcmVmaXggdG8gdGhlIGZlZWQgVVJMCgkgKiBAcGFyYW0gc3RyaW5nICRzaXRlX3VybCBTdHJpbmcgdG8gcHJlZml4IHRvIHRoZSBzaXRlIFVSTCAoYW5kCgkgKiBzdWZmaXggdG8gdGhlIGZlZWQgVVJMKQoJICogQHJldHVybiBtaXhlZCBVUkwgaWYgZmVlZCBleGlzdHMsIGZhbHNlIG90aGVyd2lzZQoJICovCglmdW5jdGlvbiBzdWJzY3JpYmVfc2VydmljZSgkZmVlZF91cmwsICRzaXRlX3VybCA9IG51bGwpCgl7CgkJaWYgKCR0aGlzLT5zdWJzY3JpYmVfdXJsKCkpCgkJewoJCQkkcmV0dXJuID0gJHRoaXMtPnNhbml0aXplKCRmZWVkX3VybCwgU0lNUExFUElFX0NPTlNUUlVDVF9JUkkpIC4gcmF3dXJsZW5jb2RlKCR0aGlzLT5mZWVkX3VybCk7CgkJCWlmICgkc2l0ZV91cmwgIT09IG51bGwgJiYgJHRoaXMtPmdldF9saW5rKCkgIT09IG51bGwpCgkJCXsKCQkJCSRyZXR1cm4gLj0gJHRoaXMtPnNhbml0aXplKCRzaXRlX3VybCwgU0lNUExFUElFX0NPTlNUUlVDVF9JUkkpIC4gcmF3dXJsZW5jb2RlKCR0aGlzLT5nZXRfbGluaygpKTsKCQkJfQoJCQlyZXR1cm4gJHJldHVybjsKCQl9CgkJZWxzZQoJCXsKCQkJcmV0dXJuIG51bGw7CgkJfQoJfQoKCWZ1bmN0aW9uIHN1YnNjcmliZV9hb2woKQoJewoJCXJldHVybiAkdGhpcy0+c3Vic2NyaWJlX3NlcnZpY2UoJ2h0dHA6Ly9mZWVkcy5teS5hb2wuY29tL2FkZC5qc3A/dXJsPScpOwoJfQoKCWZ1bmN0aW9uIHN1YnNjcmliZV9ibG9nbGluZXMoKQoJewoJCXJldHVybiB1cmxkZWNvZGUoJHRoaXMtPnN1YnNjcmliZV9zZXJ2aWNlKCdodHRwOi8vd3d3LmJsb2dsaW5lcy5jb20vc3ViLycpKTsKCX0KCglmdW5jdGlvbiBzdWJzY3JpYmVfZXNrb2JvKCkKCXsKCQlyZXR1cm4gJHRoaXMtPnN1YnNjcmliZV9zZXJ2aWNlKCdodHRwOi8vd3d3LmVza29iby5jb20vP0FkZFRvTXlQYWdlPScpOwoJfQoKCWZ1bmN0aW9uIHN1YnNjcmliZV9mZWVkZmVlZHMoKQoJewoJCXJldHVybiAkdGhpcy0+c3Vic2NyaWJlX3NlcnZpY2UoJ2h0dHA6Ly93d3cuZmVlZGZlZWRzLmNvbS9hZGQ/ZmVlZD0nKTsKCX0KCglmdW5jdGlvbiBzdWJzY3JpYmVfZmVlZHN0ZXIoKQoJewoJCXJldHVybiAkdGhpcy0+c3Vic2NyaWJlX3NlcnZpY2UoJ2h0dHA6Ly93d3cuZmVlZHN0ZXIuY29tL215ZmVlZHN0ZXIucGhwP2FjdGlvbj1hZGRyc3MmY29uZmlybT1ubyZyc3N1cmw9Jyk7Cgl9CgoJZnVuY3Rpb24gc3Vic2NyaWJlX2dvb2dsZSgpCgl7CgkJcmV0dXJuICR0aGlzLT5zdWJzY3JpYmVfc2VydmljZSgnaHR0cDovL2Z1c2lvbi5nb29nbGUuY29tL2FkZD9mZWVkdXJsPScpOwoJfQoKCWZ1bmN0aW9uIHN1YnNjcmliZV9ncml0d2lyZSgpCgl7CgkJcmV0dXJuICR0aGlzLT5zdWJzY3JpYmVfc2VydmljZSgnaHR0cDovL215LmdyaXR3aXJlLmNvbS9mZWVkcy9hZGRFeHRlcm5hbEZlZWQuYXNweD9GZWVkVXJsPScpOwoJfQoKCWZ1bmN0aW9uIHN1YnNjcmliZV9tc24oKQoJewoJCXJldHVybiAkdGhpcy0+c3Vic2NyaWJlX3NlcnZpY2UoJ2h0dHA6Ly9teS5tc24uY29tL2FkZHRvbXltc24uYXJteD9pZD1yc3MmdXQ9JywgJyZydT0nKTsKCX0KCglmdW5jdGlvbiBzdWJzY3JpYmVfbmV0dmliZXMoKQoJewoJCXJldHVybiAkdGhpcy0+c3Vic2NyaWJlX3NlcnZpY2UoJ2h0dHA6Ly93d3cubmV0dmliZXMuY29tL3N1YnNjcmliZS5waHA/dXJsPScpOwoJfQoKCWZ1bmN0aW9uIHN1YnNjcmliZV9uZXdzYnVyc3QoKQoJewoJCXJldHVybiAkdGhpcy0+c3Vic2NyaWJlX3NlcnZpY2UoJ2h0dHA6Ly93d3cubmV3c2J1cnN0LmNvbS9Tb3VyY2UvP2FkZD0nKTsKCX0KCglmdW5jdGlvbiBzdWJzY3JpYmVfbmV3c2dhdG9yKCkKCXsKCQlyZXR1cm4gJHRoaXMtPnN1YnNjcmliZV9zZXJ2aWNlKCdodHRwOi8vd3d3Lm5ld3NnYXRvci5jb20vbmdzL3N1YnNjcmliZXIvc3ViZXh0LmFzcHg/dXJsPScpOwoJfQoKCWZ1bmN0aW9uIHN1YnNjcmliZV9vZGVvKCkKCXsKCQlyZXR1cm4gJHRoaXMtPnN1YnNjcmliZV9zZXJ2aWNlKCdodHRwOi8vd3d3Lm9kZW8uY29tL2xpc3Rlbi9zdWJzY3JpYmU/ZmVlZD0nKTsKCX0KCglmdW5jdGlvbiBzdWJzY3JpYmVfcG9kbm92YSgpCgl7CgkJcmV0dXJuICR0aGlzLT5zdWJzY3JpYmVfc2VydmljZSgnaHR0cDovL3d3dy5wb2Rub3ZhLmNvbS9pbmRleF95b3VyX3BvZGNhc3RzLnNyZj9hY3Rpb249YWRkJnVybD0nKTsKCX0KCglmdW5jdGlvbiBzdWJzY3JpYmVfcm9qbygpCgl7CgkJcmV0dXJuICR0aGlzLT5zdWJzY3JpYmVfc2VydmljZSgnaHR0cDovL3d3dy5yb2pvLmNvbS9hZGQtc3Vic2NyaXB0aW9uP3Jlc291cmNlPScpOwoJfQoKCWZ1bmN0aW9uIHN1YnNjcmliZV95YWhvbygpCgl7CgkJcmV0dXJuICR0aGlzLT5zdWJzY3JpYmVfc2VydmljZSgnaHR0cDovL2FkZC5teS55YWhvby5jb20vcnNzP3VybD0nKTsKCX0KCglmdW5jdGlvbiBnZXRfZmVlZF90YWdzKCRuYW1lc3BhY2UsICR0YWcpCgl7CgkJJHR5cGUgPSAkdGhpcy0+Z2V0X3R5cGUoKTsKCQlpZiAoJHR5cGUgJiBTSU1QTEVQSUVfVFlQRV9BVE9NXzEwKQoJCXsKCQkJaWYgKGlzc2V0KCR0aGlzLT5kYXRhWydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfQVRPTV8xMF1bJ2ZlZWQnXVswXVsnY2hpbGQnXVskbmFtZXNwYWNlXVskdGFnXSkpCgkJCXsKCQkJCXJldHVybiAkdGhpcy0+ZGF0YVsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMTBdWydmZWVkJ11bMF1bJ2NoaWxkJ11bJG5hbWVzcGFjZV1bJHRhZ107CgkJCX0KCQl9CgkJaWYgKCR0eXBlICYgU0lNUExFUElFX1RZUEVfQVRPTV8wMykKCQl7CgkJCWlmIChpc3NldCgkdGhpcy0+ZGF0YVsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMDNdWydmZWVkJ11bMF1bJ2NoaWxkJ11bJG5hbWVzcGFjZV1bJHRhZ10pKQoJCQl7CgkJCQlyZXR1cm4gJHRoaXMtPmRhdGFbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9BVE9NXzAzXVsnZmVlZCddWzBdWydjaGlsZCddWyRuYW1lc3BhY2VdWyR0YWddOwoJCQl9CgkJfQoJCWlmICgkdHlwZSAmIFNJTVBMRVBJRV9UWVBFX1JTU19SREYpCgkJewoJCQlpZiAoaXNzZXQoJHRoaXMtPmRhdGFbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9SREZdWydSREYnXVswXVsnY2hpbGQnXVskbmFtZXNwYWNlXVskdGFnXSkpCgkJCXsKCQkJCXJldHVybiAkdGhpcy0+ZGF0YVsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX1JERl1bJ1JERiddWzBdWydjaGlsZCddWyRuYW1lc3BhY2VdWyR0YWddOwoJCQl9CgkJfQoJCWlmICgkdHlwZSAmIFNJTVBMRVBJRV9UWVBFX1JTU19TWU5ESUNBVElPTikKCQl7CgkJCWlmIChpc3NldCgkdGhpcy0+ZGF0YVsnY2hpbGQnXVsnJ11bJ3JzcyddWzBdWydjaGlsZCddWyRuYW1lc3BhY2VdWyR0YWddKSkKCQkJewoJCQkJcmV0dXJuICR0aGlzLT5kYXRhWydjaGlsZCddWycnXVsncnNzJ11bMF1bJ2NoaWxkJ11bJG5hbWVzcGFjZV1bJHRhZ107CgkJCX0KCQl9CgkJcmV0dXJuIG51bGw7Cgl9CgoJZnVuY3Rpb24gZ2V0X2NoYW5uZWxfdGFncygkbmFtZXNwYWNlLCAkdGFnKQoJewoJCSR0eXBlID0gJHRoaXMtPmdldF90eXBlKCk7CgkJaWYgKCR0eXBlICYgU0lNUExFUElFX1RZUEVfQVRPTV9BTEwpCgkJewoJCQlpZiAoJHJldHVybiA9ICR0aGlzLT5nZXRfZmVlZF90YWdzKCRuYW1lc3BhY2UsICR0YWcpKQoJCQl7CgkJCQlyZXR1cm4gJHJldHVybjsKCQkJfQoJCX0KCQlpZiAoJHR5cGUgJiBTSU1QTEVQSUVfVFlQRV9SU1NfMTApCgkJewoJCQlpZiAoJGNoYW5uZWwgPSAkdGhpcy0+Z2V0X2ZlZWRfdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX1JTU18xMCwgJ2NoYW5uZWwnKSkKCQkJewoJCQkJaWYgKGlzc2V0KCRjaGFubmVsWzBdWydjaGlsZCddWyRuYW1lc3BhY2VdWyR0YWddKSkKCQkJCXsKCQkJCQlyZXR1cm4gJGNoYW5uZWxbMF1bJ2NoaWxkJ11bJG5hbWVzcGFjZV1bJHRhZ107CgkJCQl9CgkJCX0KCQl9CgkJaWYgKCR0eXBlICYgU0lNUExFUElFX1RZUEVfUlNTXzA5MCkKCQl7CgkJCWlmICgkY2hhbm5lbCA9ICR0aGlzLT5nZXRfZmVlZF90YWdzKFNJTVBMRVBJRV9OQU1FU1BBQ0VfUlNTXzA5MCwgJ2NoYW5uZWwnKSkKCQkJewoJCQkJaWYgKGlzc2V0KCRjaGFubmVsWzBdWydjaGlsZCddWyRuYW1lc3BhY2VdWyR0YWddKSkKCQkJCXsKCQkJCQlyZXR1cm4gJGNoYW5uZWxbMF1bJ2NoaWxkJ11bJG5hbWVzcGFjZV1bJHRhZ107CgkJCQl9CgkJCX0KCQl9CgkJaWYgKCR0eXBlICYgU0lNUExFUElFX1RZUEVfUlNTX1NZTkRJQ0FUSU9OKQoJCXsKCQkJaWYgKCRjaGFubmVsID0gJHRoaXMtPmdldF9mZWVkX3RhZ3MoJycsICdjaGFubmVsJykpCgkJCXsKCQkJCWlmIChpc3NldCgkY2hhbm5lbFswXVsnY2hpbGQnXVskbmFtZXNwYWNlXVskdGFnXSkpCgkJCQl7CgkJCQkJcmV0dXJuICRjaGFubmVsWzBdWydjaGlsZCddWyRuYW1lc3BhY2VdWyR0YWddOwoJCQkJfQoJCQl9CgkJfQoJCXJldHVybiBudWxsOwoJfQoKCWZ1bmN0aW9uIGdldF9pbWFnZV90YWdzKCRuYW1lc3BhY2UsICR0YWcpCgl7CgkJJHR5cGUgPSAkdGhpcy0+Z2V0X3R5cGUoKTsKCQlpZiAoJHR5cGUgJiBTSU1QTEVQSUVfVFlQRV9SU1NfMTApCgkJewoJCQlpZiAoJGltYWdlID0gJHRoaXMtPmdldF9mZWVkX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9SU1NfMTAsICdpbWFnZScpKQoJCQl7CgkJCQlpZiAoaXNzZXQoJGltYWdlWzBdWydjaGlsZCddWyRuYW1lc3BhY2VdWyR0YWddKSkKCQkJCXsKCQkJCQlyZXR1cm4gJGltYWdlWzBdWydjaGlsZCddWyRuYW1lc3BhY2VdWyR0YWddOwoJCQkJfQoJCQl9CgkJfQoJCWlmICgkdHlwZSAmIFNJTVBMRVBJRV9UWVBFX1JTU18wOTApCgkJewoJCQlpZiAoJGltYWdlID0gJHRoaXMtPmdldF9mZWVkX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9SU1NfMDkwLCAnaW1hZ2UnKSkKCQkJewoJCQkJaWYgKGlzc2V0KCRpbWFnZVswXVsnY2hpbGQnXVskbmFtZXNwYWNlXVskdGFnXSkpCgkJCQl7CgkJCQkJcmV0dXJuICRpbWFnZVswXVsnY2hpbGQnXVskbmFtZXNwYWNlXVskdGFnXTsKCQkJCX0KCQkJfQoJCX0KCQlpZiAoJHR5cGUgJiBTSU1QTEVQSUVfVFlQRV9SU1NfU1lORElDQVRJT04pCgkJewoJCQlpZiAoJGltYWdlID0gJHRoaXMtPmdldF9jaGFubmVsX3RhZ3MoJycsICdpbWFnZScpKQoJCQl7CgkJCQlpZiAoaXNzZXQoJGltYWdlWzBdWydjaGlsZCddWyRuYW1lc3BhY2VdWyR0YWddKSkKCQkJCXsKCQkJCQlyZXR1cm4gJGltYWdlWzBdWydjaGlsZCddWyRuYW1lc3BhY2VdWyR0YWddOwoJCQkJfQoJCQl9CgkJfQoJCXJldHVybiBudWxsOwoJfQoKCWZ1bmN0aW9uIGdldF9iYXNlKCRlbGVtZW50ID0gYXJyYXkoKSkKCXsKCQlpZiAoISgkdGhpcy0+Z2V0X3R5cGUoKSAmIFNJTVBMRVBJRV9UWVBFX1JTU19TWU5ESUNBVElPTikgJiYgIWVtcHR5KCRlbGVtZW50Wyd4bWxfYmFzZV9leHBsaWNpdCddKSAmJiBpc3NldCgkZWxlbWVudFsneG1sX2Jhc2UnXSkpCgkJewoJCQlyZXR1cm4gJGVsZW1lbnRbJ3htbF9iYXNlJ107CgkJfQoJCWVsc2VpZiAoJHRoaXMtPmdldF9saW5rKCkgIT09IG51bGwpCgkJewoJCQlyZXR1cm4gJHRoaXMtPmdldF9saW5rKCk7CgkJfQoJCWVsc2UKCQl7CgkJCXJldHVybiAkdGhpcy0+c3Vic2NyaWJlX3VybCgpOwoJCX0KCX0KCglmdW5jdGlvbiBzYW5pdGl6ZSgkZGF0YSwgJHR5cGUsICRiYXNlID0gJycpCgl7CgkJcmV0dXJuICR0aGlzLT5zYW5pdGl6ZS0+c2FuaXRpemUoJGRhdGEsICR0eXBlLCAkYmFzZSk7Cgl9CgoJZnVuY3Rpb24gZ2V0X3RpdGxlKCkKCXsKCQlpZiAoJHJldHVybiA9ICR0aGlzLT5nZXRfY2hhbm5lbF90YWdzKFNJTVBMRVBJRV9OQU1FU1BBQ0VfQVRPTV8xMCwgJ3RpdGxlJykpCgkJewoJCQlyZXR1cm4gJHRoaXMtPnNhbml0aXplKCRyZXR1cm5bMF1bJ2RhdGEnXSwgU2ltcGxlUGllX01pc2M6OmF0b21fMTBfY29uc3RydWN0X3R5cGUoJHJldHVyblswXVsnYXR0cmlicyddKSwgJHRoaXMtPmdldF9iYXNlKCRyZXR1cm5bMF0pKTsKCQl9CgkJZWxzZWlmICgkcmV0dXJuID0gJHRoaXMtPmdldF9jaGFubmVsX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9BVE9NXzAzLCAndGl0bGUnKSkKCQl7CgkJCXJldHVybiAkdGhpcy0+c2FuaXRpemUoJHJldHVyblswXVsnZGF0YSddLCBTaW1wbGVQaWVfTWlzYzo6YXRvbV8wM19jb25zdHJ1Y3RfdHlwZSgkcmV0dXJuWzBdWydhdHRyaWJzJ10pLCAkdGhpcy0+Z2V0X2Jhc2UoJHJldHVyblswXSkpOwoJCX0KCQllbHNlaWYgKCRyZXR1cm4gPSAkdGhpcy0+Z2V0X2NoYW5uZWxfdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX1JTU18xMCwgJ3RpdGxlJykpCgkJewoJCQlyZXR1cm4gJHRoaXMtPnNhbml0aXplKCRyZXR1cm5bMF1bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9NQVlCRV9IVE1MLCAkdGhpcy0+Z2V0X2Jhc2UoJHJldHVyblswXSkpOwoJCX0KCQllbHNlaWYgKCRyZXR1cm4gPSAkdGhpcy0+Z2V0X2NoYW5uZWxfdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX1JTU18wOTAsICd0aXRsZScpKQoJCXsKCQkJcmV0dXJuICR0aGlzLT5zYW5pdGl6ZSgkcmV0dXJuWzBdWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfTUFZQkVfSFRNTCwgJHRoaXMtPmdldF9iYXNlKCRyZXR1cm5bMF0pKTsKCQl9CgkJZWxzZWlmICgkcmV0dXJuID0gJHRoaXMtPmdldF9jaGFubmVsX3RhZ3MoJycsICd0aXRsZScpKQoJCXsKCQkJcmV0dXJuICR0aGlzLT5zYW5pdGl6ZSgkcmV0dXJuWzBdWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfTUFZQkVfSFRNTCwgJHRoaXMtPmdldF9iYXNlKCRyZXR1cm5bMF0pKTsKCQl9CgkJZWxzZWlmICgkcmV0dXJuID0gJHRoaXMtPmdldF9jaGFubmVsX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9EQ18xMSwgJ3RpdGxlJykpCgkJewoJCQlyZXR1cm4gJHRoaXMtPnNhbml0aXplKCRyZXR1cm5bMF1bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQl9CgkJZWxzZWlmICgkcmV0dXJuID0gJHRoaXMtPmdldF9jaGFubmVsX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9EQ18xMCwgJ3RpdGxlJykpCgkJewoJCQlyZXR1cm4gJHRoaXMtPnNhbml0aXplKCRyZXR1cm5bMF1bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQl9CgkJZWxzZQoJCXsKCQkJcmV0dXJuIG51bGw7CgkJfQoJfQoKCWZ1bmN0aW9uIGdldF9jYXRlZ29yeSgka2V5ID0gMCkKCXsKCQkkY2F0ZWdvcmllcyA9ICR0aGlzLT5nZXRfY2F0ZWdvcmllcygpOwoJCWlmIChpc3NldCgkY2F0ZWdvcmllc1ska2V5XSkpCgkJewoJCQlyZXR1cm4gJGNhdGVnb3JpZXNbJGtleV07CgkJfQoJCWVsc2UKCQl7CgkJCXJldHVybiBudWxsOwoJCX0KCX0KCglmdW5jdGlvbiBnZXRfY2F0ZWdvcmllcygpCgl7CgkJJGNhdGVnb3JpZXMgPSBhcnJheSgpOwoKCQlmb3JlYWNoICgoYXJyYXkpICR0aGlzLT5nZXRfY2hhbm5lbF90YWdzKFNJTVBMRVBJRV9OQU1FU1BBQ0VfQVRPTV8xMCwgJ2NhdGVnb3J5JykgYXMgJGNhdGVnb3J5KQoJCXsKCQkJJHRlcm0gPSBudWxsOwoJCQkkc2NoZW1lID0gbnVsbDsKCQkJJGxhYmVsID0gbnVsbDsKCQkJaWYgKGlzc2V0KCRjYXRlZ29yeVsnYXR0cmlicyddWycnXVsndGVybSddKSkKCQkJewoJCQkJJHRlcm0gPSAkdGhpcy0+c2FuaXRpemUoJGNhdGVnb3J5WydhdHRyaWJzJ11bJyddWyd0ZXJtJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCX0KCQkJaWYgKGlzc2V0KCRjYXRlZ29yeVsnYXR0cmlicyddWycnXVsnc2NoZW1lJ10pKQoJCQl7CgkJCQkkc2NoZW1lID0gJHRoaXMtPnNhbml0aXplKCRjYXRlZ29yeVsnYXR0cmlicyddWycnXVsnc2NoZW1lJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCX0KCQkJaWYgKGlzc2V0KCRjYXRlZ29yeVsnYXR0cmlicyddWycnXVsnbGFiZWwnXSkpCgkJCXsKCQkJCSRsYWJlbCA9ICR0aGlzLT5zYW5pdGl6ZSgkY2F0ZWdvcnlbJ2F0dHJpYnMnXVsnJ11bJ2xhYmVsJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCX0KCQkJJGNhdGVnb3JpZXNbXSA9JiBuZXcgJHRoaXMtPmNhdGVnb3J5X2NsYXNzKCR0ZXJtLCAkc2NoZW1lLCAkbGFiZWwpOwoJCX0KCQlmb3JlYWNoICgoYXJyYXkpICR0aGlzLT5nZXRfY2hhbm5lbF90YWdzKCcnLCAnY2F0ZWdvcnknKSBhcyAkY2F0ZWdvcnkpCgkJewoJCQkkY2F0ZWdvcmllc1tdID0mIG5ldyAkdGhpcy0+Y2F0ZWdvcnlfY2xhc3MoJHRoaXMtPnNhbml0aXplKCRjYXRlZ29yeVsnZGF0YSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpLCBudWxsLCBudWxsKTsKCQl9CgkJZm9yZWFjaCAoKGFycmF5KSAkdGhpcy0+Z2V0X2NoYW5uZWxfdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX0RDXzExLCAnc3ViamVjdCcpIGFzICRjYXRlZ29yeSkKCQl7CgkJCSRjYXRlZ29yaWVzW10gPSYgbmV3ICR0aGlzLT5jYXRlZ29yeV9jbGFzcygkdGhpcy0+c2FuaXRpemUoJGNhdGVnb3J5WydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCksIG51bGwsIG51bGwpOwoJCX0KCQlmb3JlYWNoICgoYXJyYXkpICR0aGlzLT5nZXRfY2hhbm5lbF90YWdzKFNJTVBMRVBJRV9OQU1FU1BBQ0VfRENfMTAsICdzdWJqZWN0JykgYXMgJGNhdGVnb3J5KQoJCXsKCQkJJGNhdGVnb3JpZXNbXSA9JiBuZXcgJHRoaXMtPmNhdGVnb3J5X2NsYXNzKCR0aGlzLT5zYW5pdGl6ZSgkY2F0ZWdvcnlbJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKSwgbnVsbCwgbnVsbCk7CgkJfQoKCQlpZiAoIWVtcHR5KCRjYXRlZ29yaWVzKSkKCQl7CgkJCXJldHVybiBTaW1wbGVQaWVfTWlzYzo6YXJyYXlfdW5pcXVlKCRjYXRlZ29yaWVzKTsKCQl9CgkJZWxzZQoJCXsKCQkJcmV0dXJuIG51bGw7CgkJfQoJfQoKCWZ1bmN0aW9uIGdldF9hdXRob3IoJGtleSA9IDApCgl7CgkJJGF1dGhvcnMgPSAkdGhpcy0+Z2V0X2F1dGhvcnMoKTsKCQlpZiAoaXNzZXQoJGF1dGhvcnNbJGtleV0pKQoJCXsKCQkJcmV0dXJuICRhdXRob3JzWyRrZXldOwoJCX0KCQllbHNlCgkJewoJCQlyZXR1cm4gbnVsbDsKCQl9Cgl9CgoJZnVuY3Rpb24gZ2V0X2F1dGhvcnMoKQoJewoJCSRhdXRob3JzID0gYXJyYXkoKTsKCQlmb3JlYWNoICgoYXJyYXkpICR0aGlzLT5nZXRfY2hhbm5lbF90YWdzKFNJTVBMRVBJRV9OQU1FU1BBQ0VfQVRPTV8xMCwgJ2F1dGhvcicpIGFzICRhdXRob3IpCgkJewoJCQkkbmFtZSA9IG51bGw7CgkJCSR1cmkgPSBudWxsOwoJCQkkZW1haWwgPSBudWxsOwoJCQlpZiAoaXNzZXQoJGF1dGhvclsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMTBdWyduYW1lJ11bMF1bJ2RhdGEnXSkpCgkJCXsKCQkJCSRuYW1lID0gJHRoaXMtPnNhbml0aXplKCRhdXRob3JbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9BVE9NXzEwXVsnbmFtZSddWzBdWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCX0KCQkJaWYgKGlzc2V0KCRhdXRob3JbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9BVE9NXzEwXVsndXJpJ11bMF1bJ2RhdGEnXSkpCgkJCXsKCQkJCSR1cmkgPSAkdGhpcy0+c2FuaXRpemUoJGF1dGhvclsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMTBdWyd1cmknXVswXVsnZGF0YSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX0lSSSwgJHRoaXMtPmdldF9iYXNlKCRhdXRob3JbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9BVE9NXzEwXVsndXJpJ11bMF0pKTsKCQkJfQoJCQlpZiAoaXNzZXQoJGF1dGhvclsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMTBdWydlbWFpbCddWzBdWydkYXRhJ10pKQoJCQl7CgkJCQkkZW1haWwgPSAkdGhpcy0+c2FuaXRpemUoJGF1dGhvclsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMTBdWydlbWFpbCddWzBdWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCX0KCQkJaWYgKCRuYW1lICE9PSBudWxsIHx8ICRlbWFpbCAhPT0gbnVsbCB8fCAkdXJpICE9PSBudWxsKQoJCQl7CgkJCQkkYXV0aG9yc1tdID0mIG5ldyAkdGhpcy0+YXV0aG9yX2NsYXNzKCRuYW1lLCAkdXJpLCAkZW1haWwpOwoJCQl9CgkJfQoJCWlmICgkYXV0aG9yID0gJHRoaXMtPmdldF9jaGFubmVsX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9BVE9NXzAzLCAnYXV0aG9yJykpCgkJewoJCQkkbmFtZSA9IG51bGw7CgkJCSR1cmwgPSBudWxsOwoJCQkkZW1haWwgPSBudWxsOwoJCQlpZiAoaXNzZXQoJGF1dGhvclswXVsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMDNdWyduYW1lJ11bMF1bJ2RhdGEnXSkpCgkJCXsKCQkJCSRuYW1lID0gJHRoaXMtPnNhbml0aXplKCRhdXRob3JbMF1bJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9BVE9NXzAzXVsnbmFtZSddWzBdWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCX0KCQkJaWYgKGlzc2V0KCRhdXRob3JbMF1bJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9BVE9NXzAzXVsndXJsJ11bMF1bJ2RhdGEnXSkpCgkJCXsKCQkJCSR1cmwgPSAkdGhpcy0+c2FuaXRpemUoJGF1dGhvclswXVsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMDNdWyd1cmwnXVswXVsnZGF0YSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX0lSSSwgJHRoaXMtPmdldF9iYXNlKCRhdXRob3JbMF1bJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9BVE9NXzAzXVsndXJsJ11bMF0pKTsKCQkJfQoJCQlpZiAoaXNzZXQoJGF1dGhvclswXVsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMDNdWydlbWFpbCddWzBdWydkYXRhJ10pKQoJCQl7CgkJCQkkZW1haWwgPSAkdGhpcy0+c2FuaXRpemUoJGF1dGhvclswXVsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMDNdWydlbWFpbCddWzBdWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCX0KCQkJaWYgKCRuYW1lICE9PSBudWxsIHx8ICRlbWFpbCAhPT0gbnVsbCB8fCAkdXJsICE9PSBudWxsKQoJCQl7CgkJCQkkYXV0aG9yc1tdID0mIG5ldyAkdGhpcy0+YXV0aG9yX2NsYXNzKCRuYW1lLCAkdXJsLCAkZW1haWwpOwoJCQl9CgkJfQoJCWZvcmVhY2ggKChhcnJheSkgJHRoaXMtPmdldF9jaGFubmVsX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9EQ18xMSwgJ2NyZWF0b3InKSBhcyAkYXV0aG9yKQoJCXsKCQkJJGF1dGhvcnNbXSA9JiBuZXcgJHRoaXMtPmF1dGhvcl9jbGFzcygkdGhpcy0+c2FuaXRpemUoJGF1dGhvclsnZGF0YSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpLCBudWxsLCBudWxsKTsKCQl9CgkJZm9yZWFjaCAoKGFycmF5KSAkdGhpcy0+Z2V0X2NoYW5uZWxfdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX0RDXzEwLCAnY3JlYXRvcicpIGFzICRhdXRob3IpCgkJewoJCQkkYXV0aG9yc1tdID0mIG5ldyAkdGhpcy0+YXV0aG9yX2NsYXNzKCR0aGlzLT5zYW5pdGl6ZSgkYXV0aG9yWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCksIG51bGwsIG51bGwpOwoJCX0KCQlmb3JlYWNoICgoYXJyYXkpICR0aGlzLT5nZXRfY2hhbm5lbF90YWdzKFNJTVBMRVBJRV9OQU1FU1BBQ0VfSVRVTkVTLCAnYXV0aG9yJykgYXMgJGF1dGhvcikKCQl7CgkJCSRhdXRob3JzW10gPSYgbmV3ICR0aGlzLT5hdXRob3JfY2xhc3MoJHRoaXMtPnNhbml0aXplKCRhdXRob3JbJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKSwgbnVsbCwgbnVsbCk7CgkJfQoKCQlpZiAoIWVtcHR5KCRhdXRob3JzKSkKCQl7CgkJCXJldHVybiBTaW1wbGVQaWVfTWlzYzo6YXJyYXlfdW5pcXVlKCRhdXRob3JzKTsKCQl9CgkJZWxzZQoJCXsKCQkJcmV0dXJuIG51bGw7CgkJfQoJfQoKCWZ1bmN0aW9uIGdldF9jb250cmlidXRvcigka2V5ID0gMCkKCXsKCQkkY29udHJpYnV0b3JzID0gJHRoaXMtPmdldF9jb250cmlidXRvcnMoKTsKCQlpZiAoaXNzZXQoJGNvbnRyaWJ1dG9yc1ska2V5XSkpCgkJewoJCQlyZXR1cm4gJGNvbnRyaWJ1dG9yc1ska2V5XTsKCQl9CgkJZWxzZQoJCXsKCQkJcmV0dXJuIG51bGw7CgkJfQoJfQoKCWZ1bmN0aW9uIGdldF9jb250cmlidXRvcnMoKQoJewoJCSRjb250cmlidXRvcnMgPSBhcnJheSgpOwoJCWZvcmVhY2ggKChhcnJheSkgJHRoaXMtPmdldF9jaGFubmVsX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9BVE9NXzEwLCAnY29udHJpYnV0b3InKSBhcyAkY29udHJpYnV0b3IpCgkJewoJCQkkbmFtZSA9IG51bGw7CgkJCSR1cmkgPSBudWxsOwoJCQkkZW1haWwgPSBudWxsOwoJCQlpZiAoaXNzZXQoJGNvbnRyaWJ1dG9yWydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfQVRPTV8xMF1bJ25hbWUnXVswXVsnZGF0YSddKSkKCQkJewoJCQkJJG5hbWUgPSAkdGhpcy0+c2FuaXRpemUoJGNvbnRyaWJ1dG9yWydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfQVRPTV8xMF1bJ25hbWUnXVswXVsnZGF0YSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCQl9CgkJCWlmIChpc3NldCgkY29udHJpYnV0b3JbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9BVE9NXzEwXVsndXJpJ11bMF1bJ2RhdGEnXSkpCgkJCXsKCQkJCSR1cmkgPSAkdGhpcy0+c2FuaXRpemUoJGNvbnRyaWJ1dG9yWydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfQVRPTV8xMF1bJ3VyaSddWzBdWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfSVJJLCAkdGhpcy0+Z2V0X2Jhc2UoJGNvbnRyaWJ1dG9yWydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfQVRPTV8xMF1bJ3VyaSddWzBdKSk7CgkJCX0KCQkJaWYgKGlzc2V0KCRjb250cmlidXRvclsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMTBdWydlbWFpbCddWzBdWydkYXRhJ10pKQoJCQl7CgkJCQkkZW1haWwgPSAkdGhpcy0+c2FuaXRpemUoJGNvbnRyaWJ1dG9yWydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfQVRPTV8xMF1bJ2VtYWlsJ11bMF1bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJfQoJCQlpZiAoJG5hbWUgIT09IG51bGwgfHwgJGVtYWlsICE9PSBudWxsIHx8ICR1cmkgIT09IG51bGwpCgkJCXsKCQkJCSRjb250cmlidXRvcnNbXSA9JiBuZXcgJHRoaXMtPmF1dGhvcl9jbGFzcygkbmFtZSwgJHVyaSwgJGVtYWlsKTsKCQkJfQoJCX0KCQlmb3JlYWNoICgoYXJyYXkpICR0aGlzLT5nZXRfY2hhbm5lbF90YWdzKFNJTVBMRVBJRV9OQU1FU1BBQ0VfQVRPTV8wMywgJ2NvbnRyaWJ1dG9yJykgYXMgJGNvbnRyaWJ1dG9yKQoJCXsKCQkJJG5hbWUgPSBudWxsOwoJCQkkdXJsID0gbnVsbDsKCQkJJGVtYWlsID0gbnVsbDsKCQkJaWYgKGlzc2V0KCRjb250cmlidXRvclsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMDNdWyduYW1lJ11bMF1bJ2RhdGEnXSkpCgkJCXsKCQkJCSRuYW1lID0gJHRoaXMtPnNhbml0aXplKCRjb250cmlidXRvclsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMDNdWyduYW1lJ11bMF1bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJfQoJCQlpZiAoaXNzZXQoJGNvbnRyaWJ1dG9yWydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfQVRPTV8wM11bJ3VybCddWzBdWydkYXRhJ10pKQoJCQl7CgkJCQkkdXJsID0gJHRoaXMtPnNhbml0aXplKCRjb250cmlidXRvclsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMDNdWyd1cmwnXVswXVsnZGF0YSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX0lSSSwgJHRoaXMtPmdldF9iYXNlKCRjb250cmlidXRvclsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMDNdWyd1cmwnXVswXSkpOwoJCQl9CgkJCWlmIChpc3NldCgkY29udHJpYnV0b3JbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9BVE9NXzAzXVsnZW1haWwnXVswXVsnZGF0YSddKSkKCQkJewoJCQkJJGVtYWlsID0gJHRoaXMtPnNhbml0aXplKCRjb250cmlidXRvclsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMDNdWydlbWFpbCddWzBdWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCX0KCQkJaWYgKCRuYW1lICE9PSBudWxsIHx8ICRlbWFpbCAhPT0gbnVsbCB8fCAkdXJsICE9PSBudWxsKQoJCQl7CgkJCQkkY29udHJpYnV0b3JzW10gPSYgbmV3ICR0aGlzLT5hdXRob3JfY2xhc3MoJG5hbWUsICR1cmwsICRlbWFpbCk7CgkJCX0KCQl9CgoJCWlmICghZW1wdHkoJGNvbnRyaWJ1dG9ycykpCgkJewoJCQlyZXR1cm4gU2ltcGxlUGllX01pc2M6OmFycmF5X3VuaXF1ZSgkY29udHJpYnV0b3JzKTsKCQl9CgkJZWxzZQoJCXsKCQkJcmV0dXJuIG51bGw7CgkJfQoJfQoKCWZ1bmN0aW9uIGdldF9saW5rKCRrZXkgPSAwLCAkcmVsID0gJ2FsdGVybmF0ZScpCgl7CgkJJGxpbmtzID0gJHRoaXMtPmdldF9saW5rcygkcmVsKTsKCQlpZiAoaXNzZXQoJGxpbmtzWyRrZXldKSkKCQl7CgkJCXJldHVybiAkbGlua3NbJGtleV07CgkJfQoJCWVsc2UKCQl7CgkJCXJldHVybiBudWxsOwoJCX0KCX0KCgkvKioKCSAqIEFkZGVkIGZvciBwYXJpdHkgYmV0d2VlbiB0aGUgcGFyZW50LWxldmVsIGFuZCB0aGUgaXRlbS9lbnRyeS1sZXZlbC4KCSAqLwoJZnVuY3Rpb24gZ2V0X3Blcm1hbGluaygpCgl7CgkJcmV0dXJuICR0aGlzLT5nZXRfbGluaygwKTsKCX0KCglmdW5jdGlvbiBnZXRfbGlua3MoJHJlbCA9ICdhbHRlcm5hdGUnKQoJewoJCWlmICghaXNzZXQoJHRoaXMtPmRhdGFbJ2xpbmtzJ10pKQoJCXsKCQkJJHRoaXMtPmRhdGFbJ2xpbmtzJ10gPSBhcnJheSgpOwoJCQlpZiAoJGxpbmtzID0gJHRoaXMtPmdldF9jaGFubmVsX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9BVE9NXzEwLCAnbGluaycpKQoJCQl7CgkJCQlmb3JlYWNoICgkbGlua3MgYXMgJGxpbmspCgkJCQl7CgkJCQkJaWYgKGlzc2V0KCRsaW5rWydhdHRyaWJzJ11bJyddWydocmVmJ10pKQoJCQkJCXsKCQkJCQkJJGxpbmtfcmVsID0gKGlzc2V0KCRsaW5rWydhdHRyaWJzJ11bJyddWydyZWwnXSkpID8gJGxpbmtbJ2F0dHJpYnMnXVsnJ11bJ3JlbCddIDogJ2FsdGVybmF0ZSc7CgkJCQkJCSR0aGlzLT5kYXRhWydsaW5rcyddWyRsaW5rX3JlbF1bXSA9ICR0aGlzLT5zYW5pdGl6ZSgkbGlua1snYXR0cmlicyddWycnXVsnaHJlZiddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX0lSSSwgJHRoaXMtPmdldF9iYXNlKCRsaW5rKSk7CgkJCQkJfQoJCQkJfQoJCQl9CgkJCWlmICgkbGlua3MgPSAkdGhpcy0+Z2V0X2NoYW5uZWxfdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMDMsICdsaW5rJykpCgkJCXsKCQkJCWZvcmVhY2ggKCRsaW5rcyBhcyAkbGluaykKCQkJCXsKCQkJCQlpZiAoaXNzZXQoJGxpbmtbJ2F0dHJpYnMnXVsnJ11bJ2hyZWYnXSkpCgkJCQkJewoJCQkJCQkkbGlua19yZWwgPSAoaXNzZXQoJGxpbmtbJ2F0dHJpYnMnXVsnJ11bJ3JlbCddKSkgPyAkbGlua1snYXR0cmlicyddWycnXVsncmVsJ10gOiAnYWx0ZXJuYXRlJzsKCQkJCQkJJHRoaXMtPmRhdGFbJ2xpbmtzJ11bJGxpbmtfcmVsXVtdID0gJHRoaXMtPnNhbml0aXplKCRsaW5rWydhdHRyaWJzJ11bJyddWydocmVmJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfSVJJLCAkdGhpcy0+Z2V0X2Jhc2UoJGxpbmspKTsKCgkJCQkJfQoJCQkJfQoJCQl9CgkJCWlmICgkbGlua3MgPSAkdGhpcy0+Z2V0X2NoYW5uZWxfdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX1JTU18xMCwgJ2xpbmsnKSkKCQkJewoJCQkJJHRoaXMtPmRhdGFbJ2xpbmtzJ11bJ2FsdGVybmF0ZSddW10gPSAkdGhpcy0+c2FuaXRpemUoJGxpbmtzWzBdWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfSVJJLCAkdGhpcy0+Z2V0X2Jhc2UoJGxpbmtzWzBdKSk7CgkJCX0KCQkJaWYgKCRsaW5rcyA9ICR0aGlzLT5nZXRfY2hhbm5lbF90YWdzKFNJTVBMRVBJRV9OQU1FU1BBQ0VfUlNTXzA5MCwgJ2xpbmsnKSkKCQkJewoJCQkJJHRoaXMtPmRhdGFbJ2xpbmtzJ11bJ2FsdGVybmF0ZSddW10gPSAkdGhpcy0+c2FuaXRpemUoJGxpbmtzWzBdWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfSVJJLCAkdGhpcy0+Z2V0X2Jhc2UoJGxpbmtzWzBdKSk7CgkJCX0KCQkJaWYgKCRsaW5rcyA9ICR0aGlzLT5nZXRfY2hhbm5lbF90YWdzKCcnLCAnbGluaycpKQoJCQl7CgkJCQkkdGhpcy0+ZGF0YVsnbGlua3MnXVsnYWx0ZXJuYXRlJ11bXSA9ICR0aGlzLT5zYW5pdGl6ZSgkbGlua3NbMF1bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9JUkksICR0aGlzLT5nZXRfYmFzZSgkbGlua3NbMF0pKTsKCQkJfQoKCQkJJGtleXMgPSBhcnJheV9rZXlzKCR0aGlzLT5kYXRhWydsaW5rcyddKTsKCQkJZm9yZWFjaCAoJGtleXMgYXMgJGtleSkKCQkJewoJCQkJaWYgKFNpbXBsZVBpZV9NaXNjOjppc19pc2VnbWVudF9uel9uYygka2V5KSkKCQkJCXsKCQkJCQlpZiAoaXNzZXQoJHRoaXMtPmRhdGFbJ2xpbmtzJ11bU0lNUExFUElFX0lBTkFfTElOS19SRUxBVElPTlNfUkVHSVNUUlkgLiAka2V5XSkpCgkJCQkJewoJCQkJCQkkdGhpcy0+ZGF0YVsnbGlua3MnXVtTSU1QTEVQSUVfSUFOQV9MSU5LX1JFTEFUSU9OU19SRUdJU1RSWSAuICRrZXldID0gYXJyYXlfbWVyZ2UoJHRoaXMtPmRhdGFbJ2xpbmtzJ11bJGtleV0sICR0aGlzLT5kYXRhWydsaW5rcyddW1NJTVBMRVBJRV9JQU5BX0xJTktfUkVMQVRJT05TX1JFR0lTVFJZIC4gJGtleV0pOwoJCQkJCQkkdGhpcy0+ZGF0YVsnbGlua3MnXVska2V5XSA9JiAkdGhpcy0+ZGF0YVsnbGlua3MnXVtTSU1QTEVQSUVfSUFOQV9MSU5LX1JFTEFUSU9OU19SRUdJU1RSWSAuICRrZXldOwoJCQkJCX0KCQkJCQllbHNlCgkJCQkJewoJCQkJCQkkdGhpcy0+ZGF0YVsnbGlua3MnXVtTSU1QTEVQSUVfSUFOQV9MSU5LX1JFTEFUSU9OU19SRUdJU1RSWSAuICRrZXldID0mICR0aGlzLT5kYXRhWydsaW5rcyddWyRrZXldOwoJCQkJCX0KCQkJCX0KCQkJCWVsc2VpZiAoc3Vic3RyKCRrZXksIDAsIDQxKSA9PSBTSU1QTEVQSUVfSUFOQV9MSU5LX1JFTEFUSU9OU19SRUdJU1RSWSkKCQkJCXsKCQkJCQkkdGhpcy0+ZGF0YVsnbGlua3MnXVtzdWJzdHIoJGtleSwgNDEpXSA9JiAkdGhpcy0+ZGF0YVsnbGlua3MnXVska2V5XTsKCQkJCX0KCQkJCSR0aGlzLT5kYXRhWydsaW5rcyddWyRrZXldID0gYXJyYXlfdW5pcXVlKCR0aGlzLT5kYXRhWydsaW5rcyddWyRrZXldKTsKCQkJfQoJCX0KCgkJaWYgKGlzc2V0KCR0aGlzLT5kYXRhWydsaW5rcyddWyRyZWxdKSkKCQl7CgkJCXJldHVybiAkdGhpcy0+ZGF0YVsnbGlua3MnXVskcmVsXTsKCQl9CgkJZWxzZQoJCXsKCQkJcmV0dXJuIG51bGw7CgkJfQoJfQoKCWZ1bmN0aW9uIGdldF9kZXNjcmlwdGlvbigpCgl7CgkJaWYgKCRyZXR1cm4gPSAkdGhpcy0+Z2V0X2NoYW5uZWxfdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMTAsICdzdWJ0aXRsZScpKQoJCXsKCQkJcmV0dXJuICR0aGlzLT5zYW5pdGl6ZSgkcmV0dXJuWzBdWydkYXRhJ10sIFNpbXBsZVBpZV9NaXNjOjphdG9tXzEwX2NvbnN0cnVjdF90eXBlKCRyZXR1cm5bMF1bJ2F0dHJpYnMnXSksICR0aGlzLT5nZXRfYmFzZSgkcmV0dXJuWzBdKSk7CgkJfQoJCWVsc2VpZiAoJHJldHVybiA9ICR0aGlzLT5nZXRfY2hhbm5lbF90YWdzKFNJTVBMRVBJRV9OQU1FU1BBQ0VfQVRPTV8wMywgJ3RhZ2xpbmUnKSkKCQl7CgkJCXJldHVybiAkdGhpcy0+c2FuaXRpemUoJHJldHVyblswXVsnZGF0YSddLCBTaW1wbGVQaWVfTWlzYzo6YXRvbV8wM19jb25zdHJ1Y3RfdHlwZSgkcmV0dXJuWzBdWydhdHRyaWJzJ10pLCAkdGhpcy0+Z2V0X2Jhc2UoJHJldHVyblswXSkpOwoJCX0KCQllbHNlaWYgKCRyZXR1cm4gPSAkdGhpcy0+Z2V0X2NoYW5uZWxfdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX1JTU18xMCwgJ2Rlc2NyaXB0aW9uJykpCgkJewoJCQlyZXR1cm4gJHRoaXMtPnNhbml0aXplKCRyZXR1cm5bMF1bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9NQVlCRV9IVE1MLCAkdGhpcy0+Z2V0X2Jhc2UoJHJldHVyblswXSkpOwoJCX0KCQllbHNlaWYgKCRyZXR1cm4gPSAkdGhpcy0+Z2V0X2NoYW5uZWxfdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX1JTU18wOTAsICdkZXNjcmlwdGlvbicpKQoJCXsKCQkJcmV0dXJuICR0aGlzLT5zYW5pdGl6ZSgkcmV0dXJuWzBdWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfTUFZQkVfSFRNTCwgJHRoaXMtPmdldF9iYXNlKCRyZXR1cm5bMF0pKTsKCQl9CgkJZWxzZWlmICgkcmV0dXJuID0gJHRoaXMtPmdldF9jaGFubmVsX3RhZ3MoJycsICdkZXNjcmlwdGlvbicpKQoJCXsKCQkJcmV0dXJuICR0aGlzLT5zYW5pdGl6ZSgkcmV0dXJuWzBdWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfTUFZQkVfSFRNTCwgJHRoaXMtPmdldF9iYXNlKCRyZXR1cm5bMF0pKTsKCQl9CgkJZWxzZWlmICgkcmV0dXJuID0gJHRoaXMtPmdldF9jaGFubmVsX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9EQ18xMSwgJ2Rlc2NyaXB0aW9uJykpCgkJewoJCQlyZXR1cm4gJHRoaXMtPnNhbml0aXplKCRyZXR1cm5bMF1bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQl9CgkJZWxzZWlmICgkcmV0dXJuID0gJHRoaXMtPmdldF9jaGFubmVsX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9EQ18xMCwgJ2Rlc2NyaXB0aW9uJykpCgkJewoJCQlyZXR1cm4gJHRoaXMtPnNhbml0aXplKCRyZXR1cm5bMF1bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQl9CgkJZWxzZWlmICgkcmV0dXJuID0gJHRoaXMtPmdldF9jaGFubmVsX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9JVFVORVMsICdzdW1tYXJ5JykpCgkJewoJCQlyZXR1cm4gJHRoaXMtPnNhbml0aXplKCRyZXR1cm5bMF1bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9IVE1MLCAkdGhpcy0+Z2V0X2Jhc2UoJHJldHVyblswXSkpOwoJCX0KCQllbHNlaWYgKCRyZXR1cm4gPSAkdGhpcy0+Z2V0X2NoYW5uZWxfdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX0lUVU5FUywgJ3N1YnRpdGxlJykpCgkJewoJCQlyZXR1cm4gJHRoaXMtPnNhbml0aXplKCRyZXR1cm5bMF1bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9IVE1MLCAkdGhpcy0+Z2V0X2Jhc2UoJHJldHVyblswXSkpOwoJCX0KCQllbHNlCgkJewoJCQlyZXR1cm4gbnVsbDsKCQl9Cgl9CgoJZnVuY3Rpb24gZ2V0X2NvcHlyaWdodCgpCgl7CgkJaWYgKCRyZXR1cm4gPSAkdGhpcy0+Z2V0X2NoYW5uZWxfdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMTAsICdyaWdodHMnKSkKCQl7CgkJCXJldHVybiAkdGhpcy0+c2FuaXRpemUoJHJldHVyblswXVsnZGF0YSddLCBTaW1wbGVQaWVfTWlzYzo6YXRvbV8xMF9jb25zdHJ1Y3RfdHlwZSgkcmV0dXJuWzBdWydhdHRyaWJzJ10pLCAkdGhpcy0+Z2V0X2Jhc2UoJHJldHVyblswXSkpOwoJCX0KCQllbHNlaWYgKCRyZXR1cm4gPSAkdGhpcy0+Z2V0X2NoYW5uZWxfdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMDMsICdjb3B5cmlnaHQnKSkKCQl7CgkJCXJldHVybiAkdGhpcy0+c2FuaXRpemUoJHJldHVyblswXVsnZGF0YSddLCBTaW1wbGVQaWVfTWlzYzo6YXRvbV8wM19jb25zdHJ1Y3RfdHlwZSgkcmV0dXJuWzBdWydhdHRyaWJzJ10pLCAkdGhpcy0+Z2V0X2Jhc2UoJHJldHVyblswXSkpOwoJCX0KCQllbHNlaWYgKCRyZXR1cm4gPSAkdGhpcy0+Z2V0X2NoYW5uZWxfdGFncygnJywgJ2NvcHlyaWdodCcpKQoJCXsKCQkJcmV0dXJuICR0aGlzLT5zYW5pdGl6ZSgkcmV0dXJuWzBdWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJfQoJCWVsc2VpZiAoJHJldHVybiA9ICR0aGlzLT5nZXRfY2hhbm5lbF90YWdzKFNJTVBMRVBJRV9OQU1FU1BBQ0VfRENfMTEsICdyaWdodHMnKSkKCQl7CgkJCXJldHVybiAkdGhpcy0+c2FuaXRpemUoJHJldHVyblswXVsnZGF0YSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCX0KCQllbHNlaWYgKCRyZXR1cm4gPSAkdGhpcy0+Z2V0X2NoYW5uZWxfdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX0RDXzEwLCAncmlnaHRzJykpCgkJewoJCQlyZXR1cm4gJHRoaXMtPnNhbml0aXplKCRyZXR1cm5bMF1bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQl9CgkJZWxzZQoJCXsKCQkJcmV0dXJuIG51bGw7CgkJfQoJfQoKCWZ1bmN0aW9uIGdldF9sYW5ndWFnZSgpCgl7CgkJaWYgKCRyZXR1cm4gPSAkdGhpcy0+Z2V0X2NoYW5uZWxfdGFncygnJywgJ2xhbmd1YWdlJykpCgkJewoJCQlyZXR1cm4gJHRoaXMtPnNhbml0aXplKCRyZXR1cm5bMF1bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQl9CgkJZWxzZWlmICgkcmV0dXJuID0gJHRoaXMtPmdldF9jaGFubmVsX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9EQ18xMSwgJ2xhbmd1YWdlJykpCgkJewoJCQlyZXR1cm4gJHRoaXMtPnNhbml0aXplKCRyZXR1cm5bMF1bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQl9CgkJZWxzZWlmICgkcmV0dXJuID0gJHRoaXMtPmdldF9jaGFubmVsX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9EQ18xMCwgJ2xhbmd1YWdlJykpCgkJewoJCQlyZXR1cm4gJHRoaXMtPnNhbml0aXplKCRyZXR1cm5bMF1bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQl9CgkJZWxzZWlmIChpc3NldCgkdGhpcy0+ZGF0YVsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMTBdWydmZWVkJ11bMF1bJ3htbF9sYW5nJ10pKQoJCXsKCQkJcmV0dXJuICR0aGlzLT5zYW5pdGl6ZSgkdGhpcy0+ZGF0YVsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMTBdWydmZWVkJ11bMF1bJ3htbF9sYW5nJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJfQoJCWVsc2VpZiAoaXNzZXQoJHRoaXMtPmRhdGFbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9BVE9NXzAzXVsnZmVlZCddWzBdWyd4bWxfbGFuZyddKSkKCQl7CgkJCXJldHVybiAkdGhpcy0+c2FuaXRpemUoJHRoaXMtPmRhdGFbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9BVE9NXzAzXVsnZmVlZCddWzBdWyd4bWxfbGFuZyddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCX0KCQllbHNlaWYgKGlzc2V0KCR0aGlzLT5kYXRhWydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfUkRGXVsnUkRGJ11bMF1bJ3htbF9sYW5nJ10pKQoJCXsKCQkJcmV0dXJuICR0aGlzLT5zYW5pdGl6ZSgkdGhpcy0+ZGF0YVsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX1JERl1bJ1JERiddWzBdWyd4bWxfbGFuZyddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCX0KCQllbHNlaWYgKGlzc2V0KCR0aGlzLT5kYXRhWydoZWFkZXJzJ11bJ2NvbnRlbnQtbGFuZ3VhZ2UnXSkpCgkJewoJCQlyZXR1cm4gJHRoaXMtPnNhbml0aXplKCR0aGlzLT5kYXRhWydoZWFkZXJzJ11bJ2NvbnRlbnQtbGFuZ3VhZ2UnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQl9CgkJZWxzZQoJCXsKCQkJcmV0dXJuIG51bGw7CgkJfQoJfQoKCWZ1bmN0aW9uIGdldF9sYXRpdHVkZSgpCgl7CgkJaWYgKCRyZXR1cm4gPSAkdGhpcy0+Z2V0X2NoYW5uZWxfdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX1czQ19CQVNJQ19HRU8sICdsYXQnKSkKCQl7CgkJCXJldHVybiAoZmxvYXQpICRyZXR1cm5bMF1bJ2RhdGEnXTsKCQl9CgkJZWxzZWlmICgoJHJldHVybiA9ICR0aGlzLT5nZXRfY2hhbm5lbF90YWdzKFNJTVBMRVBJRV9OQU1FU1BBQ0VfR0VPUlNTLCAncG9pbnQnKSkgJiYgcHJlZ19tYXRjaCgnL14oKD86LSk/WzAtOV0rKD86XC5bMC05XSspKSAoKD86LSk/WzAtOV0rKD86XC5bMC05XSspKSQvJywgJHJldHVyblswXVsnZGF0YSddLCAkbWF0Y2gpKQoJCXsKCQkJcmV0dXJuIChmbG9hdCkgJG1hdGNoWzFdOwoJCX0KCQllbHNlCgkJewoJCQlyZXR1cm4gbnVsbDsKCQl9Cgl9CgoJZnVuY3Rpb24gZ2V0X2xvbmdpdHVkZSgpCgl7CgkJaWYgKCRyZXR1cm4gPSAkdGhpcy0+Z2V0X2NoYW5uZWxfdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX1czQ19CQVNJQ19HRU8sICdsb25nJykpCgkJewoJCQlyZXR1cm4gKGZsb2F0KSAkcmV0dXJuWzBdWydkYXRhJ107CgkJfQoJCWVsc2VpZiAoJHJldHVybiA9ICR0aGlzLT5nZXRfY2hhbm5lbF90YWdzKFNJTVBMRVBJRV9OQU1FU1BBQ0VfVzNDX0JBU0lDX0dFTywgJ2xvbicpKQoJCXsKCQkJcmV0dXJuIChmbG9hdCkgJHJldHVyblswXVsnZGF0YSddOwoJCX0KCQllbHNlaWYgKCgkcmV0dXJuID0gJHRoaXMtPmdldF9jaGFubmVsX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9HRU9SU1MsICdwb2ludCcpKSAmJiBwcmVnX21hdGNoKCcvXigoPzotKT9bMC05XSsoPzpcLlswLTldKykpICgoPzotKT9bMC05XSsoPzpcLlswLTldKykpJC8nLCAkcmV0dXJuWzBdWydkYXRhJ10sICRtYXRjaCkpCgkJewoJCQlyZXR1cm4gKGZsb2F0KSAkbWF0Y2hbMl07CgkJfQoJCWVsc2UKCQl7CgkJCXJldHVybiBudWxsOwoJCX0KCX0KCglmdW5jdGlvbiBnZXRfaW1hZ2VfdGl0bGUoKQoJewoJCWlmICgkcmV0dXJuID0gJHRoaXMtPmdldF9pbWFnZV90YWdzKFNJTVBMRVBJRV9OQU1FU1BBQ0VfUlNTXzEwLCAndGl0bGUnKSkKCQl7CgkJCXJldHVybiAkdGhpcy0+c2FuaXRpemUoJHJldHVyblswXVsnZGF0YSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCX0KCQllbHNlaWYgKCRyZXR1cm4gPSAkdGhpcy0+Z2V0X2ltYWdlX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9SU1NfMDkwLCAndGl0bGUnKSkKCQl7CgkJCXJldHVybiAkdGhpcy0+c2FuaXRpemUoJHJldHVyblswXVsnZGF0YSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCX0KCQllbHNlaWYgKCRyZXR1cm4gPSAkdGhpcy0+Z2V0X2ltYWdlX3RhZ3MoJycsICd0aXRsZScpKQoJCXsKCQkJcmV0dXJuICR0aGlzLT5zYW5pdGl6ZSgkcmV0dXJuWzBdWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJfQoJCWVsc2VpZiAoJHJldHVybiA9ICR0aGlzLT5nZXRfaW1hZ2VfdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX0RDXzExLCAndGl0bGUnKSkKCQl7CgkJCXJldHVybiAkdGhpcy0+c2FuaXRpemUoJHJldHVyblswXVsnZGF0YSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCX0KCQllbHNlaWYgKCRyZXR1cm4gPSAkdGhpcy0+Z2V0X2ltYWdlX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9EQ18xMCwgJ3RpdGxlJykpCgkJewoJCQlyZXR1cm4gJHRoaXMtPnNhbml0aXplKCRyZXR1cm5bMF1bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQl9CgkJZWxzZQoJCXsKCQkJcmV0dXJuIG51bGw7CgkJfQoJfQoKCWZ1bmN0aW9uIGdldF9pbWFnZV91cmwoKQoJewoJCWlmICgkcmV0dXJuID0gJHRoaXMtPmdldF9jaGFubmVsX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9JVFVORVMsICdpbWFnZScpKQoJCXsKCQkJcmV0dXJuICR0aGlzLT5zYW5pdGl6ZSgkcmV0dXJuWzBdWydhdHRyaWJzJ11bJyddWydocmVmJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfSVJJKTsKCQl9CgkJZWxzZWlmICgkcmV0dXJuID0gJHRoaXMtPmdldF9jaGFubmVsX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9BVE9NXzEwLCAnbG9nbycpKQoJCXsKCQkJcmV0dXJuICR0aGlzLT5zYW5pdGl6ZSgkcmV0dXJuWzBdWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfSVJJLCAkdGhpcy0+Z2V0X2Jhc2UoJHJldHVyblswXSkpOwoJCX0KCQllbHNlaWYgKCRyZXR1cm4gPSAkdGhpcy0+Z2V0X2NoYW5uZWxfdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMTAsICdpY29uJykpCgkJewoJCQlyZXR1cm4gJHRoaXMtPnNhbml0aXplKCRyZXR1cm5bMF1bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9JUkksICR0aGlzLT5nZXRfYmFzZSgkcmV0dXJuWzBdKSk7CgkJfQoJCWVsc2VpZiAoJHJldHVybiA9ICR0aGlzLT5nZXRfaW1hZ2VfdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX1JTU18xMCwgJ3VybCcpKQoJCXsKCQkJcmV0dXJuICR0aGlzLT5zYW5pdGl6ZSgkcmV0dXJuWzBdWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfSVJJLCAkdGhpcy0+Z2V0X2Jhc2UoJHJldHVyblswXSkpOwoJCX0KCQllbHNlaWYgKCRyZXR1cm4gPSAkdGhpcy0+Z2V0X2ltYWdlX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9SU1NfMDkwLCAndXJsJykpCgkJewoJCQlyZXR1cm4gJHRoaXMtPnNhbml0aXplKCRyZXR1cm5bMF1bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9JUkksICR0aGlzLT5nZXRfYmFzZSgkcmV0dXJuWzBdKSk7CgkJfQoJCWVsc2VpZiAoJHJldHVybiA9ICR0aGlzLT5nZXRfaW1hZ2VfdGFncygnJywgJ3VybCcpKQoJCXsKCQkJcmV0dXJuICR0aGlzLT5zYW5pdGl6ZSgkcmV0dXJuWzBdWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfSVJJLCAkdGhpcy0+Z2V0X2Jhc2UoJHJldHVyblswXSkpOwoJCX0KCQllbHNlCgkJewoJCQlyZXR1cm4gbnVsbDsKCQl9Cgl9CgoJZnVuY3Rpb24gZ2V0X2ltYWdlX2xpbmsoKQoJewoJCWlmICgkcmV0dXJuID0gJHRoaXMtPmdldF9pbWFnZV90YWdzKFNJTVBMRVBJRV9OQU1FU1BBQ0VfUlNTXzEwLCAnbGluaycpKQoJCXsKCQkJcmV0dXJuICR0aGlzLT5zYW5pdGl6ZSgkcmV0dXJuWzBdWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfSVJJLCAkdGhpcy0+Z2V0X2Jhc2UoJHJldHVyblswXSkpOwoJCX0KCQllbHNlaWYgKCRyZXR1cm4gPSAkdGhpcy0+Z2V0X2ltYWdlX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9SU1NfMDkwLCAnbGluaycpKQoJCXsKCQkJcmV0dXJuICR0aGlzLT5zYW5pdGl6ZSgkcmV0dXJuWzBdWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfSVJJLCAkdGhpcy0+Z2V0X2Jhc2UoJHJldHVyblswXSkpOwoJCX0KCQllbHNlaWYgKCRyZXR1cm4gPSAkdGhpcy0+Z2V0X2ltYWdlX3RhZ3MoJycsICdsaW5rJykpCgkJewoJCQlyZXR1cm4gJHRoaXMtPnNhbml0aXplKCRyZXR1cm5bMF1bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9JUkksICR0aGlzLT5nZXRfYmFzZSgkcmV0dXJuWzBdKSk7CgkJfQoJCWVsc2UKCQl7CgkJCXJldHVybiBudWxsOwoJCX0KCX0KCglmdW5jdGlvbiBnZXRfaW1hZ2Vfd2lkdGgoKQoJewoJCWlmICgkcmV0dXJuID0gJHRoaXMtPmdldF9pbWFnZV90YWdzKCcnLCAnd2lkdGgnKSkKCQl7CgkJCXJldHVybiByb3VuZCgkcmV0dXJuWzBdWydkYXRhJ10pOwoJCX0KCQllbHNlaWYgKCR0aGlzLT5nZXRfdHlwZSgpICYgU0lNUExFUElFX1RZUEVfUlNTX1NZTkRJQ0FUSU9OICYmICR0aGlzLT5nZXRfaW1hZ2VfdGFncygnJywgJ3VybCcpKQoJCXsKCQkJcmV0dXJuIDg4LjA7CgkJfQoJCWVsc2UKCQl7CgkJCXJldHVybiBudWxsOwoJCX0KCX0KCglmdW5jdGlvbiBnZXRfaW1hZ2VfaGVpZ2h0KCkKCXsKCQlpZiAoJHJldHVybiA9ICR0aGlzLT5nZXRfaW1hZ2VfdGFncygnJywgJ2hlaWdodCcpKQoJCXsKCQkJcmV0dXJuIHJvdW5kKCRyZXR1cm5bMF1bJ2RhdGEnXSk7CgkJfQoJCWVsc2VpZiAoJHRoaXMtPmdldF90eXBlKCkgJiBTSU1QTEVQSUVfVFlQRV9SU1NfU1lORElDQVRJT04gJiYgJHRoaXMtPmdldF9pbWFnZV90YWdzKCcnLCAndXJsJykpCgkJewoJCQlyZXR1cm4gMzEuMDsKCQl9CgkJZWxzZQoJCXsKCQkJcmV0dXJuIG51bGw7CgkJfQoJfQoKCWZ1bmN0aW9uIGdldF9pdGVtX3F1YW50aXR5KCRtYXggPSAwKQoJewoJCSRxdHkgPSBjb3VudCgkdGhpcy0+Z2V0X2l0ZW1zKCkpOwoJCWlmICgkbWF4ID09IDApCgkJewoJCQlyZXR1cm4gJHF0eTsKCQl9CgkJZWxzZQoJCXsKCQkJcmV0dXJuICgkcXR5ID4gJG1heCkgPyAkbWF4IDogJHF0eTsKCQl9Cgl9CgoJZnVuY3Rpb24gZ2V0X2l0ZW0oJGtleSA9IDApCgl7CgkJJGl0ZW1zID0gJHRoaXMtPmdldF9pdGVtcygpOwoJCWlmIChpc3NldCgkaXRlbXNbJGtleV0pKQoJCXsKCQkJcmV0dXJuICRpdGVtc1ska2V5XTsKCQl9CgkJZWxzZQoJCXsKCQkJcmV0dXJuIG51bGw7CgkJfQoJfQoKCWZ1bmN0aW9uIGdldF9pdGVtcygkc3RhcnQgPSAwLCAkZW5kID0gMCkKCXsKCQlpZiAoIWVtcHR5KCR0aGlzLT5tdWx0aWZlZWRfb2JqZWN0cykpCgkJewoJCQlyZXR1cm4gU2ltcGxlUGllOjptZXJnZV9pdGVtcygkdGhpcy0+bXVsdGlmZWVkX29iamVjdHMsICRzdGFydCwgJGVuZCwgJHRoaXMtPml0ZW1fbGltaXQpOwoJCX0KCQllbHNlaWYgKCFpc3NldCgkdGhpcy0+ZGF0YVsnaXRlbXMnXSkpCgkJewoJCQlpZiAoJGl0ZW1zID0gJHRoaXMtPmdldF9mZWVkX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9BVE9NXzEwLCAnZW50cnknKSkKCQkJewoJCQkJJGtleXMgPSBhcnJheV9rZXlzKCRpdGVtcyk7CgkJCQlmb3JlYWNoICgka2V5cyBhcyAka2V5KQoJCQkJewoJCQkJCSR0aGlzLT5kYXRhWydpdGVtcyddW10gPSYgbmV3ICR0aGlzLT5pdGVtX2NsYXNzKCR0aGlzLCAkaXRlbXNbJGtleV0pOwoJCQkJfQoJCQl9CgkJCWlmICgkaXRlbXMgPSAkdGhpcy0+Z2V0X2ZlZWRfdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMDMsICdlbnRyeScpKQoJCQl7CgkJCQkka2V5cyA9IGFycmF5X2tleXMoJGl0ZW1zKTsKCQkJCWZvcmVhY2ggKCRrZXlzIGFzICRrZXkpCgkJCQl7CgkJCQkJJHRoaXMtPmRhdGFbJ2l0ZW1zJ11bXSA9JiBuZXcgJHRoaXMtPml0ZW1fY2xhc3MoJHRoaXMsICRpdGVtc1ska2V5XSk7CgkJCQl9CgkJCX0KCQkJaWYgKCRpdGVtcyA9ICR0aGlzLT5nZXRfZmVlZF90YWdzKFNJTVBMRVBJRV9OQU1FU1BBQ0VfUlNTXzEwLCAnaXRlbScpKQoJCQl7CgkJCQkka2V5cyA9IGFycmF5X2tleXMoJGl0ZW1zKTsKCQkJCWZvcmVhY2ggKCRrZXlzIGFzICRrZXkpCgkJCQl7CgkJCQkJJHRoaXMtPmRhdGFbJ2l0ZW1zJ11bXSA9JiBuZXcgJHRoaXMtPml0ZW1fY2xhc3MoJHRoaXMsICRpdGVtc1ska2V5XSk7CgkJCQl9CgkJCX0KCQkJaWYgKCRpdGVtcyA9ICR0aGlzLT5nZXRfZmVlZF90YWdzKFNJTVBMRVBJRV9OQU1FU1BBQ0VfUlNTXzA5MCwgJ2l0ZW0nKSkKCQkJewoJCQkJJGtleXMgPSBhcnJheV9rZXlzKCRpdGVtcyk7CgkJCQlmb3JlYWNoICgka2V5cyBhcyAka2V5KQoJCQkJewoJCQkJCSR0aGlzLT5kYXRhWydpdGVtcyddW10gPSYgbmV3ICR0aGlzLT5pdGVtX2NsYXNzKCR0aGlzLCAkaXRlbXNbJGtleV0pOwoJCQkJfQoJCQl9CgkJCWlmICgkaXRlbXMgPSAkdGhpcy0+Z2V0X2NoYW5uZWxfdGFncygnJywgJ2l0ZW0nKSkKCQkJewoJCQkJJGtleXMgPSBhcnJheV9rZXlzKCRpdGVtcyk7CgkJCQlmb3JlYWNoICgka2V5cyBhcyAka2V5KQoJCQkJewoJCQkJCSR0aGlzLT5kYXRhWydpdGVtcyddW10gPSYgbmV3ICR0aGlzLT5pdGVtX2NsYXNzKCR0aGlzLCAkaXRlbXNbJGtleV0pOwoJCQkJfQoJCQl9CgkJfQoKCQlpZiAoIWVtcHR5KCR0aGlzLT5kYXRhWydpdGVtcyddKSkKCQl7CgkJCS8vIElmIHdlIHdhbnQgdG8gb3JkZXIgaXQgYnkgZGF0ZSwgY2hlY2sgaWYgYWxsIGl0ZW1zIGhhdmUgYSBkYXRlLCBhbmQgdGhlbiBzb3J0IGl0CgkJCWlmICgkdGhpcy0+b3JkZXJfYnlfZGF0ZSkKCQkJewoJCQkJaWYgKCFpc3NldCgkdGhpcy0+ZGF0YVsnb3JkZXJlZF9pdGVtcyddKSkKCQkJCXsKCQkJCQkkZG9fc29ydCA9IHRydWU7CgkJCQkJZm9yZWFjaCAoJHRoaXMtPmRhdGFbJ2l0ZW1zJ10gYXMgJGl0ZW0pCgkJCQkJewoJCQkJCQlpZiAoISRpdGVtLT5nZXRfZGF0ZSgnVScpKQoJCQkJCQl7CgkJCQkJCQkkZG9fc29ydCA9IGZhbHNlOwoJCQkJCQkJYnJlYWs7CgkJCQkJCX0KCQkJCQl9CgkJCQkJJGl0ZW0gPSBudWxsOwoJCQkJCSR0aGlzLT5kYXRhWydvcmRlcmVkX2l0ZW1zJ10gPSAkdGhpcy0+ZGF0YVsnaXRlbXMnXTsKCQkJCQlpZiAoJGRvX3NvcnQpCgkJCQkJewoJCQkJCQl1c29ydCgkdGhpcy0+ZGF0YVsnb3JkZXJlZF9pdGVtcyddLCBhcnJheSgmJHRoaXMsICdzb3J0X2l0ZW1zJykpOwoJCQkJCX0KCQkJCX0KCQkJCSRpdGVtcyA9ICR0aGlzLT5kYXRhWydvcmRlcmVkX2l0ZW1zJ107CgkJCX0KCQkJZWxzZQoJCQl7CgkJCQkkaXRlbXMgPSAkdGhpcy0+ZGF0YVsnaXRlbXMnXTsKCQkJfQoKCQkJLy8gU2xpY2UgdGhlIGRhdGEgYXMgZGVzaXJlZAoJCQlpZiAoJGVuZCA9PSAwKQoJCQl7CgkJCQlyZXR1cm4gYXJyYXlfc2xpY2UoJGl0ZW1zLCAkc3RhcnQpOwoJCQl9CgkJCWVsc2UKCQkJewoJCQkJcmV0dXJuIGFycmF5X3NsaWNlKCRpdGVtcywgJHN0YXJ0LCAkZW5kKTsKCQkJfQoJCX0KCQllbHNlCgkJewoJCQlyZXR1cm4gYXJyYXkoKTsKCQl9Cgl9CgoJZnVuY3Rpb24gc29ydF9pdGVtcygkYSwgJGIpCgl7CgkJcmV0dXJuICRhLT5nZXRfZGF0ZSgnVScpIDw9ICRiLT5nZXRfZGF0ZSgnVScpOwoJfQoKCWZ1bmN0aW9uIG1lcmdlX2l0ZW1zKCR1cmxzLCAkc3RhcnQgPSAwLCAkZW5kID0gMCwgJGxpbWl0ID0gMCkKCXsKCQlpZiAoaXNfYXJyYXkoJHVybHMpICYmIHNpemVvZigkdXJscykgPiAwKQoJCXsKCQkJJGl0ZW1zID0gYXJyYXkoKTsKCQkJZm9yZWFjaCAoJHVybHMgYXMgJGFyZykKCQkJewoJCQkJaWYgKGlzX2EoJGFyZywgJ1NpbXBsZVBpZScpKQoJCQkJewoJCQkJCSRpdGVtcyA9IGFycmF5X21lcmdlKCRpdGVtcywgJGFyZy0+Z2V0X2l0ZW1zKDAsICRsaW1pdCkpOwoJCQkJfQoJCQkJZWxzZQoJCQkJewoJCQkJCXRyaWdnZXJfZXJyb3IoJ0FyZ3VtZW50cyBtdXN0IGJlIFNpbXBsZVBpZSBvYmplY3RzJywgRV9VU0VSX1dBUk5JTkcpOwoJCQkJfQoJCQl9CgoJCQkkZG9fc29ydCA9IHRydWU7CgkJCWZvcmVhY2ggKCRpdGVtcyBhcyAkaXRlbSkKCQkJewoJCQkJaWYgKCEkaXRlbS0+Z2V0X2RhdGUoJ1UnKSkKCQkJCXsKCQkJCQkkZG9fc29ydCA9IGZhbHNlOwoJCQkJCWJyZWFrOwoJCQkJfQoJCQl9CgkJCSRpdGVtID0gbnVsbDsKCQkJaWYgKCRkb19zb3J0KQoJCQl7CgkJCQl1c29ydCgkaXRlbXMsIGFycmF5KCdTaW1wbGVQaWUnLCAnc29ydF9pdGVtcycpKTsKCQkJfQoKCQkJaWYgKCRlbmQgPT0gMCkKCQkJewoJCQkJcmV0dXJuIGFycmF5X3NsaWNlKCRpdGVtcywgJHN0YXJ0KTsKCQkJfQoJCQllbHNlCgkJCXsKCQkJCXJldHVybiBhcnJheV9zbGljZSgkaXRlbXMsICRzdGFydCwgJGVuZCk7CgkJCX0KCQl9CgkJZWxzZQoJCXsKCQkJdHJpZ2dlcl9lcnJvcignQ2Fubm90IG1lcmdlIHplcm8gU2ltcGxlUGllIG9iamVjdHMnLCBFX1VTRVJfV0FSTklORyk7CgkJCXJldHVybiBhcnJheSgpOwoJCX0KCX0KfQoKY2xhc3MgU2ltcGxlUGllX0l0ZW0KewoJdmFyICRmZWVkOwoJdmFyICRkYXRhID0gYXJyYXkoKTsKCglmdW5jdGlvbiBTaW1wbGVQaWVfSXRlbSgkZmVlZCwgJGRhdGEpCgl7CgkJJHRoaXMtPmZlZWQgPSAkZmVlZDsKCQkkdGhpcy0+ZGF0YSA9ICRkYXRhOwoJfQoKCWZ1bmN0aW9uIF9fdG9TdHJpbmcoKQoJewoJCXJldHVybiBtZDUoc2VyaWFsaXplKCR0aGlzLT5kYXRhKSk7Cgl9CgoJLyoqCgkgKiBSZW1vdmUgaXRlbXMgdGhhdCBsaW5rIGJhY2sgdG8gdGhpcyBiZWZvcmUgZGVzdHJveWluZyB0aGlzIG9iamVjdAoJICovCglmdW5jdGlvbiBfX2Rlc3RydWN0KCkKCXsKCQl1bnNldCgkdGhpcy0+ZmVlZCk7Cgl9CgoJZnVuY3Rpb24gZ2V0X2l0ZW1fdGFncygkbmFtZXNwYWNlLCAkdGFnKQoJewoJCWlmIChpc3NldCgkdGhpcy0+ZGF0YVsnY2hpbGQnXVskbmFtZXNwYWNlXVskdGFnXSkpCgkJewoJCQlyZXR1cm4gJHRoaXMtPmRhdGFbJ2NoaWxkJ11bJG5hbWVzcGFjZV1bJHRhZ107CgkJfQoJCWVsc2UKCQl7CgkJCXJldHVybiBudWxsOwoJCX0KCX0KCglmdW5jdGlvbiBnZXRfYmFzZSgkZWxlbWVudCA9IGFycmF5KCkpCgl7CgkJcmV0dXJuICR0aGlzLT5mZWVkLT5nZXRfYmFzZSgkZWxlbWVudCk7Cgl9CgoJZnVuY3Rpb24gc2FuaXRpemUoJGRhdGEsICR0eXBlLCAkYmFzZSA9ICcnKQoJewoJCXJldHVybiAkdGhpcy0+ZmVlZC0+c2FuaXRpemUoJGRhdGEsICR0eXBlLCAkYmFzZSk7Cgl9CgoJZnVuY3Rpb24gZ2V0X2ZlZWQoKQoJewoJCXJldHVybiAkdGhpcy0+ZmVlZDsKCX0KCglmdW5jdGlvbiBnZXRfaWQoJGhhc2ggPSBmYWxzZSkKCXsKCQlpZiAoISRoYXNoKQoJCXsKCQkJaWYgKCRyZXR1cm4gPSAkdGhpcy0+Z2V0X2l0ZW1fdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMTAsICdpZCcpKQoJCQl7CgkJCQlyZXR1cm4gJHRoaXMtPnNhbml0aXplKCRyZXR1cm5bMF1bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJfQoJCQllbHNlaWYgKCRyZXR1cm4gPSAkdGhpcy0+Z2V0X2l0ZW1fdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMDMsICdpZCcpKQoJCQl7CgkJCQlyZXR1cm4gJHRoaXMtPnNhbml0aXplKCRyZXR1cm5bMF1bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJfQoJCQllbHNlaWYgKCRyZXR1cm4gPSAkdGhpcy0+Z2V0X2l0ZW1fdGFncygnJywgJ2d1aWQnKSkKCQkJewoJCQkJcmV0dXJuICR0aGlzLT5zYW5pdGl6ZSgkcmV0dXJuWzBdWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCX0KCQkJZWxzZWlmICgkcmV0dXJuID0gJHRoaXMtPmdldF9pdGVtX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9EQ18xMSwgJ2lkZW50aWZpZXInKSkKCQkJewoJCQkJcmV0dXJuICR0aGlzLT5zYW5pdGl6ZSgkcmV0dXJuWzBdWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCX0KCQkJZWxzZWlmICgkcmV0dXJuID0gJHRoaXMtPmdldF9pdGVtX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9EQ18xMCwgJ2lkZW50aWZpZXInKSkKCQkJewoJCQkJcmV0dXJuICR0aGlzLT5zYW5pdGl6ZSgkcmV0dXJuWzBdWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCX0KCQkJZWxzZWlmICgoJHJldHVybiA9ICR0aGlzLT5nZXRfcGVybWFsaW5rKCkpICE9PSBudWxsKQoJCQl7CgkJCQlyZXR1cm4gJHJldHVybjsKCQkJfQoJCQllbHNlaWYgKCgkcmV0dXJuID0gJHRoaXMtPmdldF90aXRsZSgpKSAhPT0gbnVsbCkKCQkJewoJCQkJcmV0dXJuICRyZXR1cm47CgkJCX0KCQl9CgkJaWYgKCR0aGlzLT5nZXRfcGVybWFsaW5rKCkgIT09IG51bGwgfHwgJHRoaXMtPmdldF90aXRsZSgpICE9PSBudWxsKQoJCXsKCQkJcmV0dXJuIG1kNSgkdGhpcy0+Z2V0X3Blcm1hbGluaygpIC4gJHRoaXMtPmdldF90aXRsZSgpKTsKCQl9CgkJZWxzZQoJCXsKCQkJcmV0dXJuIG1kNShzZXJpYWxpemUoJHRoaXMtPmRhdGEpKTsKCQl9Cgl9CgoJZnVuY3Rpb24gZ2V0X3RpdGxlKCkKCXsKCQlpZiAoIWlzc2V0KCR0aGlzLT5kYXRhWyd0aXRsZSddKSkKCQl7CgkJCWlmICgkcmV0dXJuID0gJHRoaXMtPmdldF9pdGVtX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9BVE9NXzEwLCAndGl0bGUnKSkKCQkJewoJCQkJJHRoaXMtPmRhdGFbJ3RpdGxlJ10gPSAkdGhpcy0+c2FuaXRpemUoJHJldHVyblswXVsnZGF0YSddLCBTaW1wbGVQaWVfTWlzYzo6YXRvbV8xMF9jb25zdHJ1Y3RfdHlwZSgkcmV0dXJuWzBdWydhdHRyaWJzJ10pLCAkdGhpcy0+Z2V0X2Jhc2UoJHJldHVyblswXSkpOwoJCQl9CgkJCWVsc2VpZiAoJHJldHVybiA9ICR0aGlzLT5nZXRfaXRlbV90YWdzKFNJTVBMRVBJRV9OQU1FU1BBQ0VfQVRPTV8wMywgJ3RpdGxlJykpCgkJCXsKCQkJCSR0aGlzLT5kYXRhWyd0aXRsZSddID0gJHRoaXMtPnNhbml0aXplKCRyZXR1cm5bMF1bJ2RhdGEnXSwgU2ltcGxlUGllX01pc2M6OmF0b21fMDNfY29uc3RydWN0X3R5cGUoJHJldHVyblswXVsnYXR0cmlicyddKSwgJHRoaXMtPmdldF9iYXNlKCRyZXR1cm5bMF0pKTsKCQkJfQoJCQllbHNlaWYgKCRyZXR1cm4gPSAkdGhpcy0+Z2V0X2l0ZW1fdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX1JTU18xMCwgJ3RpdGxlJykpCgkJCXsKCQkJCSR0aGlzLT5kYXRhWyd0aXRsZSddID0gJHRoaXMtPnNhbml0aXplKCRyZXR1cm5bMF1bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9NQVlCRV9IVE1MLCAkdGhpcy0+Z2V0X2Jhc2UoJHJldHVyblswXSkpOwoJCQl9CgkJCWVsc2VpZiAoJHJldHVybiA9ICR0aGlzLT5nZXRfaXRlbV90YWdzKFNJTVBMRVBJRV9OQU1FU1BBQ0VfUlNTXzA5MCwgJ3RpdGxlJykpCgkJCXsKCQkJCSR0aGlzLT5kYXRhWyd0aXRsZSddID0gJHRoaXMtPnNhbml0aXplKCRyZXR1cm5bMF1bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9NQVlCRV9IVE1MLCAkdGhpcy0+Z2V0X2Jhc2UoJHJldHVyblswXSkpOwoJCQl9CgkJCWVsc2VpZiAoJHJldHVybiA9ICR0aGlzLT5nZXRfaXRlbV90YWdzKCcnLCAndGl0bGUnKSkKCQkJewoJCQkJJHRoaXMtPmRhdGFbJ3RpdGxlJ10gPSAkdGhpcy0+c2FuaXRpemUoJHJldHVyblswXVsnZGF0YSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX01BWUJFX0hUTUwsICR0aGlzLT5nZXRfYmFzZSgkcmV0dXJuWzBdKSk7CgkJCX0KCQkJZWxzZWlmICgkcmV0dXJuID0gJHRoaXMtPmdldF9pdGVtX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9EQ18xMSwgJ3RpdGxlJykpCgkJCXsKCQkJCSR0aGlzLT5kYXRhWyd0aXRsZSddID0gJHRoaXMtPnNhbml0aXplKCRyZXR1cm5bMF1bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJfQoJCQllbHNlaWYgKCRyZXR1cm4gPSAkdGhpcy0+Z2V0X2l0ZW1fdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX0RDXzEwLCAndGl0bGUnKSkKCQkJewoJCQkJJHRoaXMtPmRhdGFbJ3RpdGxlJ10gPSAkdGhpcy0+c2FuaXRpemUoJHJldHVyblswXVsnZGF0YSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCQl9CgkJCWVsc2UKCQkJewoJCQkJJHRoaXMtPmRhdGFbJ3RpdGxlJ10gPSBudWxsOwoJCQl9CgkJfQoJCXJldHVybiAkdGhpcy0+ZGF0YVsndGl0bGUnXTsKCX0KCglmdW5jdGlvbiBnZXRfZGVzY3JpcHRpb24oJGRlc2NyaXB0aW9uX29ubHkgPSBmYWxzZSkKCXsKCQlpZiAoJHJldHVybiA9ICR0aGlzLT5nZXRfaXRlbV90YWdzKFNJTVBMRVBJRV9OQU1FU1BBQ0VfQVRPTV8xMCwgJ3N1bW1hcnknKSkKCQl7CgkJCXJldHVybiAkdGhpcy0+c2FuaXRpemUoJHJldHVyblswXVsnZGF0YSddLCBTaW1wbGVQaWVfTWlzYzo6YXRvbV8xMF9jb25zdHJ1Y3RfdHlwZSgkcmV0dXJuWzBdWydhdHRyaWJzJ10pLCAkdGhpcy0+Z2V0X2Jhc2UoJHJldHVyblswXSkpOwoJCX0KCQllbHNlaWYgKCRyZXR1cm4gPSAkdGhpcy0+Z2V0X2l0ZW1fdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMDMsICdzdW1tYXJ5JykpCgkJewoJCQlyZXR1cm4gJHRoaXMtPnNhbml0aXplKCRyZXR1cm5bMF1bJ2RhdGEnXSwgU2ltcGxlUGllX01pc2M6OmF0b21fMDNfY29uc3RydWN0X3R5cGUoJHJldHVyblswXVsnYXR0cmlicyddKSwgJHRoaXMtPmdldF9iYXNlKCRyZXR1cm5bMF0pKTsKCQl9CgkJZWxzZWlmICgkcmV0dXJuID0gJHRoaXMtPmdldF9pdGVtX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9SU1NfMTAsICdkZXNjcmlwdGlvbicpKQoJCXsKCQkJcmV0dXJuICR0aGlzLT5zYW5pdGl6ZSgkcmV0dXJuWzBdWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfTUFZQkVfSFRNTCwgJHRoaXMtPmdldF9iYXNlKCRyZXR1cm5bMF0pKTsKCQl9CgkJZWxzZWlmICgkcmV0dXJuID0gJHRoaXMtPmdldF9pdGVtX3RhZ3MoJycsICdkZXNjcmlwdGlvbicpKQoJCXsKCQkJcmV0dXJuICR0aGlzLT5zYW5pdGl6ZSgkcmV0dXJuWzBdWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfSFRNTCwgJHRoaXMtPmdldF9iYXNlKCRyZXR1cm5bMF0pKTsKCQl9CgkJZWxzZWlmICgkcmV0dXJuID0gJHRoaXMtPmdldF9pdGVtX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9EQ18xMSwgJ2Rlc2NyaXB0aW9uJykpCgkJewoJCQlyZXR1cm4gJHRoaXMtPnNhbml0aXplKCRyZXR1cm5bMF1bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQl9CgkJZWxzZWlmICgkcmV0dXJuID0gJHRoaXMtPmdldF9pdGVtX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9EQ18xMCwgJ2Rlc2NyaXB0aW9uJykpCgkJewoJCQlyZXR1cm4gJHRoaXMtPnNhbml0aXplKCRyZXR1cm5bMF1bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQl9CgkJZWxzZWlmICgkcmV0dXJuID0gJHRoaXMtPmdldF9pdGVtX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9JVFVORVMsICdzdW1tYXJ5JykpCgkJewoJCQlyZXR1cm4gJHRoaXMtPnNhbml0aXplKCRyZXR1cm5bMF1bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9IVE1MLCAkdGhpcy0+Z2V0X2Jhc2UoJHJldHVyblswXSkpOwoJCX0KCQllbHNlaWYgKCRyZXR1cm4gPSAkdGhpcy0+Z2V0X2l0ZW1fdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX0lUVU5FUywgJ3N1YnRpdGxlJykpCgkJewoJCQlyZXR1cm4gJHRoaXMtPnNhbml0aXplKCRyZXR1cm5bMF1bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQl9CgkJZWxzZWlmICghJGRlc2NyaXB0aW9uX29ubHkpCgkJewoJCQlyZXR1cm4gJHRoaXMtPmdldF9jb250ZW50KHRydWUpOwoJCX0KCQllbHNlCgkJewoJCQlyZXR1cm4gbnVsbDsKCQl9Cgl9CgoJZnVuY3Rpb24gZ2V0X2NvbnRlbnQoJGNvbnRlbnRfb25seSA9IGZhbHNlKQoJewoJCWlmICgkcmV0dXJuID0gJHRoaXMtPmdldF9pdGVtX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9BVE9NXzEwLCAnY29udGVudCcpKQoJCXsKCQkJcmV0dXJuICR0aGlzLT5zYW5pdGl6ZSgkcmV0dXJuWzBdWydkYXRhJ10sIFNpbXBsZVBpZV9NaXNjOjphdG9tXzEwX2NvbnRlbnRfY29uc3RydWN0X3R5cGUoJHJldHVyblswXVsnYXR0cmlicyddKSwgJHRoaXMtPmdldF9iYXNlKCRyZXR1cm5bMF0pKTsKCQl9CgkJZWxzZWlmICgkcmV0dXJuID0gJHRoaXMtPmdldF9pdGVtX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9BVE9NXzAzLCAnY29udGVudCcpKQoJCXsKCQkJcmV0dXJuICR0aGlzLT5zYW5pdGl6ZSgkcmV0dXJuWzBdWydkYXRhJ10sIFNpbXBsZVBpZV9NaXNjOjphdG9tXzAzX2NvbnN0cnVjdF90eXBlKCRyZXR1cm5bMF1bJ2F0dHJpYnMnXSksICR0aGlzLT5nZXRfYmFzZSgkcmV0dXJuWzBdKSk7CgkJfQoJCWVsc2VpZiAoJHJldHVybiA9ICR0aGlzLT5nZXRfaXRlbV90YWdzKFNJTVBMRVBJRV9OQU1FU1BBQ0VfUlNTXzEwX01PRFVMRVNfQ09OVEVOVCwgJ2VuY29kZWQnKSkKCQl7CgkJCXJldHVybiAkdGhpcy0+c2FuaXRpemUoJHJldHVyblswXVsnZGF0YSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX0hUTUwsICR0aGlzLT5nZXRfYmFzZSgkcmV0dXJuWzBdKSk7CgkJfQoJCWVsc2VpZiAoISRjb250ZW50X29ubHkpCgkJewoJCQlyZXR1cm4gJHRoaXMtPmdldF9kZXNjcmlwdGlvbih0cnVlKTsKCQl9CgkJZWxzZQoJCXsKCQkJcmV0dXJuIG51bGw7CgkJfQoJfQoKCWZ1bmN0aW9uIGdldF9jYXRlZ29yeSgka2V5ID0gMCkKCXsKCQkkY2F0ZWdvcmllcyA9ICR0aGlzLT5nZXRfY2F0ZWdvcmllcygpOwoJCWlmIChpc3NldCgkY2F0ZWdvcmllc1ska2V5XSkpCgkJewoJCQlyZXR1cm4gJGNhdGVnb3JpZXNbJGtleV07CgkJfQoJCWVsc2UKCQl7CgkJCXJldHVybiBudWxsOwoJCX0KCX0KCglmdW5jdGlvbiBnZXRfY2F0ZWdvcmllcygpCgl7CgkJJGNhdGVnb3JpZXMgPSBhcnJheSgpOwoKCQlmb3JlYWNoICgoYXJyYXkpICR0aGlzLT5nZXRfaXRlbV90YWdzKFNJTVBMRVBJRV9OQU1FU1BBQ0VfQVRPTV8xMCwgJ2NhdGVnb3J5JykgYXMgJGNhdGVnb3J5KQoJCXsKCQkJJHRlcm0gPSBudWxsOwoJCQkkc2NoZW1lID0gbnVsbDsKCQkJJGxhYmVsID0gbnVsbDsKCQkJaWYgKGlzc2V0KCRjYXRlZ29yeVsnYXR0cmlicyddWycnXVsndGVybSddKSkKCQkJewoJCQkJJHRlcm0gPSAkdGhpcy0+c2FuaXRpemUoJGNhdGVnb3J5WydhdHRyaWJzJ11bJyddWyd0ZXJtJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCX0KCQkJaWYgKGlzc2V0KCRjYXRlZ29yeVsnYXR0cmlicyddWycnXVsnc2NoZW1lJ10pKQoJCQl7CgkJCQkkc2NoZW1lID0gJHRoaXMtPnNhbml0aXplKCRjYXRlZ29yeVsnYXR0cmlicyddWycnXVsnc2NoZW1lJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCX0KCQkJaWYgKGlzc2V0KCRjYXRlZ29yeVsnYXR0cmlicyddWycnXVsnbGFiZWwnXSkpCgkJCXsKCQkJCSRsYWJlbCA9ICR0aGlzLT5zYW5pdGl6ZSgkY2F0ZWdvcnlbJ2F0dHJpYnMnXVsnJ11bJ2xhYmVsJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCX0KCQkJJGNhdGVnb3JpZXNbXSA9JiBuZXcgJHRoaXMtPmZlZWQtPmNhdGVnb3J5X2NsYXNzKCR0ZXJtLCAkc2NoZW1lLCAkbGFiZWwpOwoJCX0KCQlmb3JlYWNoICgoYXJyYXkpICR0aGlzLT5nZXRfaXRlbV90YWdzKCcnLCAnY2F0ZWdvcnknKSBhcyAkY2F0ZWdvcnkpCgkJewoJCQkkY2F0ZWdvcmllc1tdID0mIG5ldyAkdGhpcy0+ZmVlZC0+Y2F0ZWdvcnlfY2xhc3MoJHRoaXMtPnNhbml0aXplKCRjYXRlZ29yeVsnZGF0YSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpLCBudWxsLCBudWxsKTsKCQl9CgkJZm9yZWFjaCAoKGFycmF5KSAkdGhpcy0+Z2V0X2l0ZW1fdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX0RDXzExLCAnc3ViamVjdCcpIGFzICRjYXRlZ29yeSkKCQl7CgkJCSRjYXRlZ29yaWVzW10gPSYgbmV3ICR0aGlzLT5mZWVkLT5jYXRlZ29yeV9jbGFzcygkdGhpcy0+c2FuaXRpemUoJGNhdGVnb3J5WydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCksIG51bGwsIG51bGwpOwoJCX0KCQlmb3JlYWNoICgoYXJyYXkpICR0aGlzLT5nZXRfaXRlbV90YWdzKFNJTVBMRVBJRV9OQU1FU1BBQ0VfRENfMTAsICdzdWJqZWN0JykgYXMgJGNhdGVnb3J5KQoJCXsKCQkJJGNhdGVnb3JpZXNbXSA9JiBuZXcgJHRoaXMtPmZlZWQtPmNhdGVnb3J5X2NsYXNzKCR0aGlzLT5zYW5pdGl6ZSgkY2F0ZWdvcnlbJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKSwgbnVsbCwgbnVsbCk7CgkJfQoKCQlpZiAoIWVtcHR5KCRjYXRlZ29yaWVzKSkKCQl7CgkJCXJldHVybiBTaW1wbGVQaWVfTWlzYzo6YXJyYXlfdW5pcXVlKCRjYXRlZ29yaWVzKTsKCQl9CgkJZWxzZQoJCXsKCQkJcmV0dXJuIG51bGw7CgkJfQoJfQoKCWZ1bmN0aW9uIGdldF9hdXRob3IoJGtleSA9IDApCgl7CgkJJGF1dGhvcnMgPSAkdGhpcy0+Z2V0X2F1dGhvcnMoKTsKCQlpZiAoaXNzZXQoJGF1dGhvcnNbJGtleV0pKQoJCXsKCQkJcmV0dXJuICRhdXRob3JzWyRrZXldOwoJCX0KCQllbHNlCgkJewoJCQlyZXR1cm4gbnVsbDsKCQl9Cgl9CgoJZnVuY3Rpb24gZ2V0X2NvbnRyaWJ1dG9yKCRrZXkgPSAwKQoJewoJCSRjb250cmlidXRvcnMgPSAkdGhpcy0+Z2V0X2NvbnRyaWJ1dG9ycygpOwoJCWlmIChpc3NldCgkY29udHJpYnV0b3JzWyRrZXldKSkKCQl7CgkJCXJldHVybiAkY29udHJpYnV0b3JzWyRrZXldOwoJCX0KCQllbHNlCgkJewoJCQlyZXR1cm4gbnVsbDsKCQl9Cgl9CgoJZnVuY3Rpb24gZ2V0X2NvbnRyaWJ1dG9ycygpCgl7CgkJJGNvbnRyaWJ1dG9ycyA9IGFycmF5KCk7CgkJZm9yZWFjaCAoKGFycmF5KSAkdGhpcy0+Z2V0X2l0ZW1fdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMTAsICdjb250cmlidXRvcicpIGFzICRjb250cmlidXRvcikKCQl7CgkJCSRuYW1lID0gbnVsbDsKCQkJJHVyaSA9IG51bGw7CgkJCSRlbWFpbCA9IG51bGw7CgkJCWlmIChpc3NldCgkY29udHJpYnV0b3JbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9BVE9NXzEwXVsnbmFtZSddWzBdWydkYXRhJ10pKQoJCQl7CgkJCQkkbmFtZSA9ICR0aGlzLT5zYW5pdGl6ZSgkY29udHJpYnV0b3JbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9BVE9NXzEwXVsnbmFtZSddWzBdWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCX0KCQkJaWYgKGlzc2V0KCRjb250cmlidXRvclsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMTBdWyd1cmknXVswXVsnZGF0YSddKSkKCQkJewoJCQkJJHVyaSA9ICR0aGlzLT5zYW5pdGl6ZSgkY29udHJpYnV0b3JbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9BVE9NXzEwXVsndXJpJ11bMF1bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9JUkksICR0aGlzLT5nZXRfYmFzZSgkY29udHJpYnV0b3JbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9BVE9NXzEwXVsndXJpJ11bMF0pKTsKCQkJfQoJCQlpZiAoaXNzZXQoJGNvbnRyaWJ1dG9yWydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfQVRPTV8xMF1bJ2VtYWlsJ11bMF1bJ2RhdGEnXSkpCgkJCXsKCQkJCSRlbWFpbCA9ICR0aGlzLT5zYW5pdGl6ZSgkY29udHJpYnV0b3JbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9BVE9NXzEwXVsnZW1haWwnXVswXVsnZGF0YSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCQl9CgkJCWlmICgkbmFtZSAhPT0gbnVsbCB8fCAkZW1haWwgIT09IG51bGwgfHwgJHVyaSAhPT0gbnVsbCkKCQkJewoJCQkJJGNvbnRyaWJ1dG9yc1tdID0mIG5ldyAkdGhpcy0+ZmVlZC0+YXV0aG9yX2NsYXNzKCRuYW1lLCAkdXJpLCAkZW1haWwpOwoJCQl9CgkJfQoJCWZvcmVhY2ggKChhcnJheSkgJHRoaXMtPmdldF9pdGVtX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9BVE9NXzAzLCAnY29udHJpYnV0b3InKSBhcyAkY29udHJpYnV0b3IpCgkJewoJCQkkbmFtZSA9IG51bGw7CgkJCSR1cmwgPSBudWxsOwoJCQkkZW1haWwgPSBudWxsOwoJCQlpZiAoaXNzZXQoJGNvbnRyaWJ1dG9yWydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfQVRPTV8wM11bJ25hbWUnXVswXVsnZGF0YSddKSkKCQkJewoJCQkJJG5hbWUgPSAkdGhpcy0+c2FuaXRpemUoJGNvbnRyaWJ1dG9yWydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfQVRPTV8wM11bJ25hbWUnXVswXVsnZGF0YSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCQl9CgkJCWlmIChpc3NldCgkY29udHJpYnV0b3JbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9BVE9NXzAzXVsndXJsJ11bMF1bJ2RhdGEnXSkpCgkJCXsKCQkJCSR1cmwgPSAkdGhpcy0+c2FuaXRpemUoJGNvbnRyaWJ1dG9yWydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfQVRPTV8wM11bJ3VybCddWzBdWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfSVJJLCAkdGhpcy0+Z2V0X2Jhc2UoJGNvbnRyaWJ1dG9yWydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfQVRPTV8wM11bJ3VybCddWzBdKSk7CgkJCX0KCQkJaWYgKGlzc2V0KCRjb250cmlidXRvclsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMDNdWydlbWFpbCddWzBdWydkYXRhJ10pKQoJCQl7CgkJCQkkZW1haWwgPSAkdGhpcy0+c2FuaXRpemUoJGNvbnRyaWJ1dG9yWydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfQVRPTV8wM11bJ2VtYWlsJ11bMF1bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJfQoJCQlpZiAoJG5hbWUgIT09IG51bGwgfHwgJGVtYWlsICE9PSBudWxsIHx8ICR1cmwgIT09IG51bGwpCgkJCXsKCQkJCSRjb250cmlidXRvcnNbXSA9JiBuZXcgJHRoaXMtPmZlZWQtPmF1dGhvcl9jbGFzcygkbmFtZSwgJHVybCwgJGVtYWlsKTsKCQkJfQoJCX0KCgkJaWYgKCFlbXB0eSgkY29udHJpYnV0b3JzKSkKCQl7CgkJCXJldHVybiBTaW1wbGVQaWVfTWlzYzo6YXJyYXlfdW5pcXVlKCRjb250cmlidXRvcnMpOwoJCX0KCQllbHNlCgkJewoJCQlyZXR1cm4gbnVsbDsKCQl9Cgl9CgoJLyoqCgkgKiBAdG9kbyBBdG9tIGluaGVyaXRhbmNlIChpdGVtIGF1dGhvciwgc291cmNlIGF1dGhvciwgZmVlZCBhdXRob3IpCgkgKi8KCWZ1bmN0aW9uIGdldF9hdXRob3JzKCkKCXsKCQkkYXV0aG9ycyA9IGFycmF5KCk7CgkJZm9yZWFjaCAoKGFycmF5KSAkdGhpcy0+Z2V0X2l0ZW1fdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMTAsICdhdXRob3InKSBhcyAkYXV0aG9yKQoJCXsKCQkJJG5hbWUgPSBudWxsOwoJCQkkdXJpID0gbnVsbDsKCQkJJGVtYWlsID0gbnVsbDsKCQkJaWYgKGlzc2V0KCRhdXRob3JbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9BVE9NXzEwXVsnbmFtZSddWzBdWydkYXRhJ10pKQoJCQl7CgkJCQkkbmFtZSA9ICR0aGlzLT5zYW5pdGl6ZSgkYXV0aG9yWydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfQVRPTV8xMF1bJ25hbWUnXVswXVsnZGF0YSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCQl9CgkJCWlmIChpc3NldCgkYXV0aG9yWydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfQVRPTV8xMF1bJ3VyaSddWzBdWydkYXRhJ10pKQoJCQl7CgkJCQkkdXJpID0gJHRoaXMtPnNhbml0aXplKCRhdXRob3JbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9BVE9NXzEwXVsndXJpJ11bMF1bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9JUkksICR0aGlzLT5nZXRfYmFzZSgkYXV0aG9yWydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfQVRPTV8xMF1bJ3VyaSddWzBdKSk7CgkJCX0KCQkJaWYgKGlzc2V0KCRhdXRob3JbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9BVE9NXzEwXVsnZW1haWwnXVswXVsnZGF0YSddKSkKCQkJewoJCQkJJGVtYWlsID0gJHRoaXMtPnNhbml0aXplKCRhdXRob3JbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9BVE9NXzEwXVsnZW1haWwnXVswXVsnZGF0YSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCQl9CgkJCWlmICgkbmFtZSAhPT0gbnVsbCB8fCAkZW1haWwgIT09IG51bGwgfHwgJHVyaSAhPT0gbnVsbCkKCQkJewoJCQkJJGF1dGhvcnNbXSA9JiBuZXcgJHRoaXMtPmZlZWQtPmF1dGhvcl9jbGFzcygkbmFtZSwgJHVyaSwgJGVtYWlsKTsKCQkJfQoJCX0KCQlpZiAoJGF1dGhvciA9ICR0aGlzLT5nZXRfaXRlbV90YWdzKFNJTVBMRVBJRV9OQU1FU1BBQ0VfQVRPTV8wMywgJ2F1dGhvcicpKQoJCXsKCQkJJG5hbWUgPSBudWxsOwoJCQkkdXJsID0gbnVsbDsKCQkJJGVtYWlsID0gbnVsbDsKCQkJaWYgKGlzc2V0KCRhdXRob3JbMF1bJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9BVE9NXzAzXVsnbmFtZSddWzBdWydkYXRhJ10pKQoJCQl7CgkJCQkkbmFtZSA9ICR0aGlzLT5zYW5pdGl6ZSgkYXV0aG9yWzBdWydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfQVRPTV8wM11bJ25hbWUnXVswXVsnZGF0YSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCQl9CgkJCWlmIChpc3NldCgkYXV0aG9yWzBdWydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfQVRPTV8wM11bJ3VybCddWzBdWydkYXRhJ10pKQoJCQl7CgkJCQkkdXJsID0gJHRoaXMtPnNhbml0aXplKCRhdXRob3JbMF1bJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9BVE9NXzAzXVsndXJsJ11bMF1bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9JUkksICR0aGlzLT5nZXRfYmFzZSgkYXV0aG9yWzBdWydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfQVRPTV8wM11bJ3VybCddWzBdKSk7CgkJCX0KCQkJaWYgKGlzc2V0KCRhdXRob3JbMF1bJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9BVE9NXzAzXVsnZW1haWwnXVswXVsnZGF0YSddKSkKCQkJewoJCQkJJGVtYWlsID0gJHRoaXMtPnNhbml0aXplKCRhdXRob3JbMF1bJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9BVE9NXzAzXVsnZW1haWwnXVswXVsnZGF0YSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCQl9CgkJCWlmICgkbmFtZSAhPT0gbnVsbCB8fCAkZW1haWwgIT09IG51bGwgfHwgJHVybCAhPT0gbnVsbCkKCQkJewoJCQkJJGF1dGhvcnNbXSA9JiBuZXcgJHRoaXMtPmZlZWQtPmF1dGhvcl9jbGFzcygkbmFtZSwgJHVybCwgJGVtYWlsKTsKCQkJfQoJCX0KCQlpZiAoJGF1dGhvciA9ICR0aGlzLT5nZXRfaXRlbV90YWdzKCcnLCAnYXV0aG9yJykpCgkJewoJCQkkYXV0aG9yc1tdID0mIG5ldyAkdGhpcy0+ZmVlZC0+YXV0aG9yX2NsYXNzKG51bGwsIG51bGwsICR0aGlzLT5zYW5pdGl6ZSgkYXV0aG9yWzBdWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCkpOwoJCX0KCQlmb3JlYWNoICgoYXJyYXkpICR0aGlzLT5nZXRfaXRlbV90YWdzKFNJTVBMRVBJRV9OQU1FU1BBQ0VfRENfMTEsICdjcmVhdG9yJykgYXMgJGF1dGhvcikKCQl7CgkJCSRhdXRob3JzW10gPSYgbmV3ICR0aGlzLT5mZWVkLT5hdXRob3JfY2xhc3MoJHRoaXMtPnNhbml0aXplKCRhdXRob3JbJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKSwgbnVsbCwgbnVsbCk7CgkJfQoJCWZvcmVhY2ggKChhcnJheSkgJHRoaXMtPmdldF9pdGVtX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9EQ18xMCwgJ2NyZWF0b3InKSBhcyAkYXV0aG9yKQoJCXsKCQkJJGF1dGhvcnNbXSA9JiBuZXcgJHRoaXMtPmZlZWQtPmF1dGhvcl9jbGFzcygkdGhpcy0+c2FuaXRpemUoJGF1dGhvclsnZGF0YSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpLCBudWxsLCBudWxsKTsKCQl9CgkJZm9yZWFjaCAoKGFycmF5KSAkdGhpcy0+Z2V0X2l0ZW1fdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX0lUVU5FUywgJ2F1dGhvcicpIGFzICRhdXRob3IpCgkJewoJCQkkYXV0aG9yc1tdID0mIG5ldyAkdGhpcy0+ZmVlZC0+YXV0aG9yX2NsYXNzKCR0aGlzLT5zYW5pdGl6ZSgkYXV0aG9yWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCksIG51bGwsIG51bGwpOwoJCX0KCgkJaWYgKCFlbXB0eSgkYXV0aG9ycykpCgkJewoJCQlyZXR1cm4gU2ltcGxlUGllX01pc2M6OmFycmF5X3VuaXF1ZSgkYXV0aG9ycyk7CgkJfQoJCWVsc2VpZiAoKCRzb3VyY2UgPSAkdGhpcy0+Z2V0X3NvdXJjZSgpKSAmJiAoJGF1dGhvcnMgPSAkc291cmNlLT5nZXRfYXV0aG9ycygpKSkKCQl7CgkJCXJldHVybiAkYXV0aG9yczsKCQl9CgkJZWxzZWlmICgkYXV0aG9ycyA9ICR0aGlzLT5mZWVkLT5nZXRfYXV0aG9ycygpKQoJCXsKCQkJcmV0dXJuICRhdXRob3JzOwoJCX0KCQllbHNlCgkJewoJCQlyZXR1cm4gbnVsbDsKCQl9Cgl9CgoJZnVuY3Rpb24gZ2V0X2NvcHlyaWdodCgpCgl7CgkJaWYgKCRyZXR1cm4gPSAkdGhpcy0+Z2V0X2l0ZW1fdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMTAsICdyaWdodHMnKSkKCQl7CgkJCXJldHVybiAkdGhpcy0+c2FuaXRpemUoJHJldHVyblswXVsnZGF0YSddLCBTaW1wbGVQaWVfTWlzYzo6YXRvbV8xMF9jb25zdHJ1Y3RfdHlwZSgkcmV0dXJuWzBdWydhdHRyaWJzJ10pLCAkdGhpcy0+Z2V0X2Jhc2UoJHJldHVyblswXSkpOwoJCX0KCQllbHNlaWYgKCRyZXR1cm4gPSAkdGhpcy0+Z2V0X2l0ZW1fdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX0RDXzExLCAncmlnaHRzJykpCgkJewoJCQlyZXR1cm4gJHRoaXMtPnNhbml0aXplKCRyZXR1cm5bMF1bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQl9CgkJZWxzZWlmICgkcmV0dXJuID0gJHRoaXMtPmdldF9pdGVtX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9EQ18xMCwgJ3JpZ2h0cycpKQoJCXsKCQkJcmV0dXJuICR0aGlzLT5zYW5pdGl6ZSgkcmV0dXJuWzBdWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJfQoJCWVsc2UKCQl7CgkJCXJldHVybiBudWxsOwoJCX0KCX0KCglmdW5jdGlvbiBnZXRfZGF0ZSgkZGF0ZV9mb3JtYXQgPSAnaiBGIFksIGc6aSBhJykKCXsKCQlpZiAoIWlzc2V0KCR0aGlzLT5kYXRhWydkYXRlJ10pKQoJCXsKCQkJaWYgKCRyZXR1cm4gPSAkdGhpcy0+Z2V0X2l0ZW1fdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMTAsICdwdWJsaXNoZWQnKSkKCQkJewoJCQkJJHRoaXMtPmRhdGFbJ2RhdGUnXVsncmF3J10gPSAkcmV0dXJuWzBdWydkYXRhJ107CgkJCX0KCQkJZWxzZWlmICgkcmV0dXJuID0gJHRoaXMtPmdldF9pdGVtX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9BVE9NXzEwLCAndXBkYXRlZCcpKQoJCQl7CgkJCQkkdGhpcy0+ZGF0YVsnZGF0ZSddWydyYXcnXSA9ICRyZXR1cm5bMF1bJ2RhdGEnXTsKCQkJfQoJCQllbHNlaWYgKCRyZXR1cm4gPSAkdGhpcy0+Z2V0X2l0ZW1fdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMDMsICdpc3N1ZWQnKSkKCQkJewoJCQkJJHRoaXMtPmRhdGFbJ2RhdGUnXVsncmF3J10gPSAkcmV0dXJuWzBdWydkYXRhJ107CgkJCX0KCQkJZWxzZWlmICgkcmV0dXJuID0gJHRoaXMtPmdldF9pdGVtX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9BVE9NXzAzLCAnY3JlYXRlZCcpKQoJCQl7CgkJCQkkdGhpcy0+ZGF0YVsnZGF0ZSddWydyYXcnXSA9ICRyZXR1cm5bMF1bJ2RhdGEnXTsKCQkJfQoJCQllbHNlaWYgKCRyZXR1cm4gPSAkdGhpcy0+Z2V0X2l0ZW1fdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMDMsICdtb2RpZmllZCcpKQoJCQl7CgkJCQkkdGhpcy0+ZGF0YVsnZGF0ZSddWydyYXcnXSA9ICRyZXR1cm5bMF1bJ2RhdGEnXTsKCQkJfQoJCQllbHNlaWYgKCRyZXR1cm4gPSAkdGhpcy0+Z2V0X2l0ZW1fdGFncygnJywgJ3B1YkRhdGUnKSkKCQkJewoJCQkJJHRoaXMtPmRhdGFbJ2RhdGUnXVsncmF3J10gPSAkcmV0dXJuWzBdWydkYXRhJ107CgkJCX0KCQkJZWxzZWlmICgkcmV0dXJuID0gJHRoaXMtPmdldF9pdGVtX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9EQ18xMSwgJ2RhdGUnKSkKCQkJewoJCQkJJHRoaXMtPmRhdGFbJ2RhdGUnXVsncmF3J10gPSAkcmV0dXJuWzBdWydkYXRhJ107CgkJCX0KCQkJZWxzZWlmICgkcmV0dXJuID0gJHRoaXMtPmdldF9pdGVtX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9EQ18xMCwgJ2RhdGUnKSkKCQkJewoJCQkJJHRoaXMtPmRhdGFbJ2RhdGUnXVsncmF3J10gPSAkcmV0dXJuWzBdWydkYXRhJ107CgkJCX0KCgkJCWlmICghZW1wdHkoJHRoaXMtPmRhdGFbJ2RhdGUnXVsncmF3J10pKQoJCQl7CgkJCQkkcGFyc2VyID0gU2ltcGxlUGllX1BhcnNlX0RhdGU6OmdldCgpOwoJCQkJJHRoaXMtPmRhdGFbJ2RhdGUnXVsncGFyc2VkJ10gPSAkcGFyc2VyLT5wYXJzZSgkdGhpcy0+ZGF0YVsnZGF0ZSddWydyYXcnXSk7CgkJCX0KCQkJZWxzZQoJCQl7CgkJCQkkdGhpcy0+ZGF0YVsnZGF0ZSddID0gbnVsbDsKCQkJfQoJCX0KCQlpZiAoJHRoaXMtPmRhdGFbJ2RhdGUnXSkKCQl7CgkJCSRkYXRlX2Zvcm1hdCA9IChzdHJpbmcpICRkYXRlX2Zvcm1hdDsKCQkJc3dpdGNoICgkZGF0ZV9mb3JtYXQpCgkJCXsKCQkJCWNhc2UgJyc6CgkJCQkJcmV0dXJuICR0aGlzLT5zYW5pdGl6ZSgkdGhpcy0+ZGF0YVsnZGF0ZSddWydyYXcnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCgkJCQljYXNlICdVJzoKCQkJCQlyZXR1cm4gJHRoaXMtPmRhdGFbJ2RhdGUnXVsncGFyc2VkJ107CgoJCQkJZGVmYXVsdDoKCQkJCQlyZXR1cm4gZGF0ZSgkZGF0ZV9mb3JtYXQsICR0aGlzLT5kYXRhWydkYXRlJ11bJ3BhcnNlZCddKTsKCQkJfQoJCX0KCQllbHNlCgkJewoJCQlyZXR1cm4gbnVsbDsKCQl9Cgl9CgoJZnVuY3Rpb24gZ2V0X2xvY2FsX2RhdGUoJGRhdGVfZm9ybWF0ID0gJyVjJykKCXsKCQlpZiAoISRkYXRlX2Zvcm1hdCkKCQl7CgkJCXJldHVybiAkdGhpcy0+c2FuaXRpemUoJHRoaXMtPmdldF9kYXRlKCcnKSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQl9CgkJZWxzZWlmICgoJGRhdGUgPSAkdGhpcy0+Z2V0X2RhdGUoJ1UnKSkgIT09IG51bGwpCgkJewoJCQlyZXR1cm4gc3RyZnRpbWUoJGRhdGVfZm9ybWF0LCAkZGF0ZSk7CgkJfQoJCWVsc2UKCQl7CgkJCXJldHVybiBudWxsOwoJCX0KCX0KCglmdW5jdGlvbiBnZXRfcGVybWFsaW5rKCkKCXsKCQkkbGluayA9ICR0aGlzLT5nZXRfbGluaygpOwoJCSRlbmNsb3N1cmUgPSAkdGhpcy0+Z2V0X2VuY2xvc3VyZSgwKTsKCQlpZiAoJGxpbmsgIT09IG51bGwpCgkJewoJCQlyZXR1cm4gJGxpbms7CgkJfQoJCWVsc2VpZiAoJGVuY2xvc3VyZSAhPT0gbnVsbCkKCQl7CgkJCXJldHVybiAkZW5jbG9zdXJlLT5nZXRfbGluaygpOwoJCX0KCQllbHNlCgkJewoJCQlyZXR1cm4gbnVsbDsKCQl9Cgl9CgoJZnVuY3Rpb24gZ2V0X2xpbmsoJGtleSA9IDAsICRyZWwgPSAnYWx0ZXJuYXRlJykKCXsKCQkkbGlua3MgPSAkdGhpcy0+Z2V0X2xpbmtzKCRyZWwpOwoJCWlmICgkbGlua3NbJGtleV0gIT09IG51bGwpCgkJewoJCQlyZXR1cm4gJGxpbmtzWyRrZXldOwoJCX0KCQllbHNlCgkJewoJCQlyZXR1cm4gbnVsbDsKCQl9Cgl9CgoJZnVuY3Rpb24gZ2V0X2xpbmtzKCRyZWwgPSAnYWx0ZXJuYXRlJykKCXsKCQlpZiAoIWlzc2V0KCR0aGlzLT5kYXRhWydsaW5rcyddKSkKCQl7CgkJCSR0aGlzLT5kYXRhWydsaW5rcyddID0gYXJyYXkoKTsKCQkJZm9yZWFjaCAoKGFycmF5KSAkdGhpcy0+Z2V0X2l0ZW1fdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMTAsICdsaW5rJykgYXMgJGxpbmspCgkJCXsKCQkJCWlmIChpc3NldCgkbGlua1snYXR0cmlicyddWycnXVsnaHJlZiddKSkKCQkJCXsKCQkJCQkkbGlua19yZWwgPSAoaXNzZXQoJGxpbmtbJ2F0dHJpYnMnXVsnJ11bJ3JlbCddKSkgPyAkbGlua1snYXR0cmlicyddWycnXVsncmVsJ10gOiAnYWx0ZXJuYXRlJzsKCQkJCQkkdGhpcy0+ZGF0YVsnbGlua3MnXVskbGlua19yZWxdW10gPSAkdGhpcy0+c2FuaXRpemUoJGxpbmtbJ2F0dHJpYnMnXVsnJ11bJ2hyZWYnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9JUkksICR0aGlzLT5nZXRfYmFzZSgkbGluaykpOwoKCQkJCX0KCQkJfQoJCQlmb3JlYWNoICgoYXJyYXkpICR0aGlzLT5nZXRfaXRlbV90YWdzKFNJTVBMRVBJRV9OQU1FU1BBQ0VfQVRPTV8wMywgJ2xpbmsnKSBhcyAkbGluaykKCQkJewoJCQkJaWYgKGlzc2V0KCRsaW5rWydhdHRyaWJzJ11bJyddWydocmVmJ10pKQoJCQkJewoJCQkJCSRsaW5rX3JlbCA9IChpc3NldCgkbGlua1snYXR0cmlicyddWycnXVsncmVsJ10pKSA/ICRsaW5rWydhdHRyaWJzJ11bJyddWydyZWwnXSA6ICdhbHRlcm5hdGUnOwoJCQkJCSR0aGlzLT5kYXRhWydsaW5rcyddWyRsaW5rX3JlbF1bXSA9ICR0aGlzLT5zYW5pdGl6ZSgkbGlua1snYXR0cmlicyddWycnXVsnaHJlZiddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX0lSSSwgJHRoaXMtPmdldF9iYXNlKCRsaW5rKSk7CgkJCQl9CgkJCX0KCQkJaWYgKCRsaW5rcyA9ICR0aGlzLT5nZXRfaXRlbV90YWdzKFNJTVBMRVBJRV9OQU1FU1BBQ0VfUlNTXzEwLCAnbGluaycpKQoJCQl7CgkJCQkkdGhpcy0+ZGF0YVsnbGlua3MnXVsnYWx0ZXJuYXRlJ11bXSA9ICR0aGlzLT5zYW5pdGl6ZSgkbGlua3NbMF1bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9JUkksICR0aGlzLT5nZXRfYmFzZSgkbGlua3NbMF0pKTsKCQkJfQoJCQlpZiAoJGxpbmtzID0gJHRoaXMtPmdldF9pdGVtX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9SU1NfMDkwLCAnbGluaycpKQoJCQl7CgkJCQkkdGhpcy0+ZGF0YVsnbGlua3MnXVsnYWx0ZXJuYXRlJ11bXSA9ICR0aGlzLT5zYW5pdGl6ZSgkbGlua3NbMF1bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9JUkksICR0aGlzLT5nZXRfYmFzZSgkbGlua3NbMF0pKTsKCQkJfQoJCQlpZiAoJGxpbmtzID0gJHRoaXMtPmdldF9pdGVtX3RhZ3MoJycsICdsaW5rJykpCgkJCXsKCQkJCSR0aGlzLT5kYXRhWydsaW5rcyddWydhbHRlcm5hdGUnXVtdID0gJHRoaXMtPnNhbml0aXplKCRsaW5rc1swXVsnZGF0YSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX0lSSSwgJHRoaXMtPmdldF9iYXNlKCRsaW5rc1swXSkpOwoJCQl9CgkJCWlmICgkbGlua3MgPSAkdGhpcy0+Z2V0X2l0ZW1fdGFncygnJywgJ2d1aWQnKSkKCQkJewoJCQkJaWYgKCFpc3NldCgkbGlua3NbMF1bJ2F0dHJpYnMnXVsnJ11bJ2lzUGVybWFMaW5rJ10pIHx8IHN0cnRvbG93ZXIodHJpbSgkbGlua3NbMF1bJ2F0dHJpYnMnXVsnJ11bJ2lzUGVybWFMaW5rJ10pKSA9PSAndHJ1ZScpCgkJCQl7CgkJCQkJJHRoaXMtPmRhdGFbJ2xpbmtzJ11bJ2FsdGVybmF0ZSddW10gPSAkdGhpcy0+c2FuaXRpemUoJGxpbmtzWzBdWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfSVJJLCAkdGhpcy0+Z2V0X2Jhc2UoJGxpbmtzWzBdKSk7CgkJCQl9CgkJCX0KCgkJCSRrZXlzID0gYXJyYXlfa2V5cygkdGhpcy0+ZGF0YVsnbGlua3MnXSk7CgkJCWZvcmVhY2ggKCRrZXlzIGFzICRrZXkpCgkJCXsKCQkJCWlmIChTaW1wbGVQaWVfTWlzYzo6aXNfaXNlZ21lbnRfbnpfbmMoJGtleSkpCgkJCQl7CgkJCQkJaWYgKGlzc2V0KCR0aGlzLT5kYXRhWydsaW5rcyddW1NJTVBMRVBJRV9JQU5BX0xJTktfUkVMQVRJT05TX1JFR0lTVFJZIC4gJGtleV0pKQoJCQkJCXsKCQkJCQkJJHRoaXMtPmRhdGFbJ2xpbmtzJ11bU0lNUExFUElFX0lBTkFfTElOS19SRUxBVElPTlNfUkVHSVNUUlkgLiAka2V5XSA9IGFycmF5X21lcmdlKCR0aGlzLT5kYXRhWydsaW5rcyddWyRrZXldLCAkdGhpcy0+ZGF0YVsnbGlua3MnXVtTSU1QTEVQSUVfSUFOQV9MSU5LX1JFTEFUSU9OU19SRUdJU1RSWSAuICRrZXldKTsKCQkJCQkJJHRoaXMtPmRhdGFbJ2xpbmtzJ11bJGtleV0gPSYgJHRoaXMtPmRhdGFbJ2xpbmtzJ11bU0lNUExFUElFX0lBTkFfTElOS19SRUxBVElPTlNfUkVHSVNUUlkgLiAka2V5XTsKCQkJCQl9CgkJCQkJZWxzZQoJCQkJCXsKCQkJCQkJJHRoaXMtPmRhdGFbJ2xpbmtzJ11bU0lNUExFUElFX0lBTkFfTElOS19SRUxBVElPTlNfUkVHSVNUUlkgLiAka2V5XSA9JiAkdGhpcy0+ZGF0YVsnbGlua3MnXVska2V5XTsKCQkJCQl9CgkJCQl9CgkJCQllbHNlaWYgKHN1YnN0cigka2V5LCAwLCA0MSkgPT0gU0lNUExFUElFX0lBTkFfTElOS19SRUxBVElPTlNfUkVHSVNUUlkpCgkJCQl7CgkJCQkJJHRoaXMtPmRhdGFbJ2xpbmtzJ11bc3Vic3RyKCRrZXksIDQxKV0gPSYgJHRoaXMtPmRhdGFbJ2xpbmtzJ11bJGtleV07CgkJCQl9CgkJCQkkdGhpcy0+ZGF0YVsnbGlua3MnXVska2V5XSA9IGFycmF5X3VuaXF1ZSgkdGhpcy0+ZGF0YVsnbGlua3MnXVska2V5XSk7CgkJCX0KCQl9CgkJaWYgKGlzc2V0KCR0aGlzLT5kYXRhWydsaW5rcyddWyRyZWxdKSkKCQl7CgkJCXJldHVybiAkdGhpcy0+ZGF0YVsnbGlua3MnXVskcmVsXTsKCQl9CgkJZWxzZQoJCXsKCQkJcmV0dXJuIG51bGw7CgkJfQoJfQoKCS8qKgoJICogQHRvZG8gQWRkIGFiaWxpdHkgdG8gcHJlZmVyIG9uZSB0eXBlIG9mIGNvbnRlbnQgb3ZlciBhbm90aGVyIChpbiBhIG1lZGlhIGdyb3VwKS4KCSAqLwoJZnVuY3Rpb24gZ2V0X2VuY2xvc3VyZSgka2V5ID0gMCwgJHByZWZlciA9IG51bGwpCgl7CgkJJGVuY2xvc3VyZXMgPSAkdGhpcy0+Z2V0X2VuY2xvc3VyZXMoKTsKCQlpZiAoaXNzZXQoJGVuY2xvc3VyZXNbJGtleV0pKQoJCXsKCQkJcmV0dXJuICRlbmNsb3N1cmVzWyRrZXldOwoJCX0KCQllbHNlCgkJewoJCQlyZXR1cm4gbnVsbDsKCQl9Cgl9CgoJLyoqCgkgKiBHcmFicyBhbGwgYXZhaWxhYmxlIGVuY2xvc3VyZXMgKHBvZGNhc3RzLCBldGMuKQoJICoKCSAqIFN1cHBvcnRzIHRoZSA8ZW5jbG9zdXJlPiBSU1MgdGFnLCBhcyB3ZWxsIGFzIE1lZGlhIFJTUyBhbmQgaVR1bmVzIFJTUy4KCSAqCgkgKiBBdCB0aGlzIHBvaW50LCB3ZSdyZSBwcmV0dHkgbXVjaCBhc3N1bWluZyB0aGF0IGFsbCBlbmNsb3N1cmVzIGZvciBhbiBpdGVtIGFyZSB0aGUgc2FtZSBjb250ZW50LiAgQW55dGhpbmcgZWxzZSBpcyB0b28gY29tcGxpY2F0ZWQgdG8gcHJvcGVybHkgc3VwcG9ydC4KCSAqCgkgKiBAdG9kbyBBZGQgc3VwcG9ydCBmb3IgZW5kLXVzZXIgZGVmaW5lZCBzb3J0aW5nIG9mIGVuY2xvc3VyZXMgYnkgdHlwZS9oYW5kbGVyIChzbyB3ZSBjYW4gcHJlZmVyIHRoZSBmYXN0ZXItbG9hZGluZyBGTFYgb3ZlciBNUDQpLgoJICogQHRvZG8gSWYgYW4gZWxlbWVudCBleGlzdHMgYXQgYSBsZXZlbCwgYnV0IGl0J3MgdmFsdWUgaXMgZW1wdHksIHdlIHNob3VsZCBmYWxsIGJhY2sgdG8gdGhlIHZhbHVlIGZyb20gdGhlIHBhcmVudCAoaWYgaXQgZXhpc3RzKS4KCSAqLwoJZnVuY3Rpb24gZ2V0X2VuY2xvc3VyZXMoKQoJewoJCWlmICghaXNzZXQoJHRoaXMtPmRhdGFbJ2VuY2xvc3VyZXMnXSkpCgkJewoJCQkkdGhpcy0+ZGF0YVsnZW5jbG9zdXJlcyddID0gYXJyYXkoKTsKCgkJCS8vIEVsZW1lbnRzCgkJCSRjYXB0aW9uc19wYXJlbnQgPSBudWxsOwoJCQkkY2F0ZWdvcmllc19wYXJlbnQgPSBudWxsOwoJCQkkY29weXJpZ2h0c19wYXJlbnQgPSBudWxsOwoJCQkkY3JlZGl0c19wYXJlbnQgPSBudWxsOwoJCQkkZGVzY3JpcHRpb25fcGFyZW50ID0gbnVsbDsKCQkJJGR1cmF0aW9uX3BhcmVudCA9IG51bGw7CgkJCSRoYXNoZXNfcGFyZW50ID0gbnVsbDsKCQkJJGtleXdvcmRzX3BhcmVudCA9IG51bGw7CgkJCSRwbGF5ZXJfcGFyZW50ID0gbnVsbDsKCQkJJHJhdGluZ3NfcGFyZW50ID0gbnVsbDsKCQkJJHJlc3RyaWN0aW9uc19wYXJlbnQgPSBudWxsOwoJCQkkdGh1bWJuYWlsc19wYXJlbnQgPSBudWxsOwoJCQkkdGl0bGVfcGFyZW50ID0gbnVsbDsKCgkJCS8vIExldCdzIGRvIHRoZSBjaGFubmVsIGFuZCBpdGVtLWxldmVsIG9uZXMgZmlyc3QsIGFuZCBqdXN0IHJlLXVzZSB0aGVtIGlmIHdlIG5lZWQgdG8uCgkJCSRwYXJlbnQgPSAkdGhpcy0+Z2V0X2ZlZWQoKTsKCgkJCS8vIENBUFRJT05TCgkJCWlmICgkY2FwdGlvbnMgPSAkdGhpcy0+Z2V0X2l0ZW1fdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX01FRElBUlNTLCAndGV4dCcpKQoJCQl7CgkJCQlmb3JlYWNoICgkY2FwdGlvbnMgYXMgJGNhcHRpb24pCgkJCQl7CgkJCQkJJGNhcHRpb25fdHlwZSA9IG51bGw7CgkJCQkJJGNhcHRpb25fbGFuZyA9IG51bGw7CgkJCQkJJGNhcHRpb25fc3RhcnRUaW1lID0gbnVsbDsKCQkJCQkkY2FwdGlvbl9lbmRUaW1lID0gbnVsbDsKCQkJCQkkY2FwdGlvbl90ZXh0ID0gbnVsbDsKCQkJCQlpZiAoaXNzZXQoJGNhcHRpb25bJ2F0dHJpYnMnXVsnJ11bJ3R5cGUnXSkpCgkJCQkJewoJCQkJCQkkY2FwdGlvbl90eXBlID0gJHRoaXMtPnNhbml0aXplKCRjYXB0aW9uWydhdHRyaWJzJ11bJyddWyd0eXBlJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCQkJfQoJCQkJCWlmIChpc3NldCgkY2FwdGlvblsnYXR0cmlicyddWycnXVsnbGFuZyddKSkKCQkJCQl7CgkJCQkJCSRjYXB0aW9uX2xhbmcgPSAkdGhpcy0+c2FuaXRpemUoJGNhcHRpb25bJ2F0dHJpYnMnXVsnJ11bJ2xhbmcnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJCQl9CgkJCQkJaWYgKGlzc2V0KCRjYXB0aW9uWydhdHRyaWJzJ11bJyddWydzdGFydCddKSkKCQkJCQl7CgkJCQkJCSRjYXB0aW9uX3N0YXJ0VGltZSA9ICR0aGlzLT5zYW5pdGl6ZSgkY2FwdGlvblsnYXR0cmlicyddWycnXVsnc3RhcnQnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJCQl9CgkJCQkJaWYgKGlzc2V0KCRjYXB0aW9uWydhdHRyaWJzJ11bJyddWydlbmQnXSkpCgkJCQkJewoJCQkJCQkkY2FwdGlvbl9lbmRUaW1lID0gJHRoaXMtPnNhbml0aXplKCRjYXB0aW9uWydhdHRyaWJzJ11bJyddWydlbmQnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJCQl9CgkJCQkJaWYgKGlzc2V0KCRjYXB0aW9uWydkYXRhJ10pKQoJCQkJCXsKCQkJCQkJJGNhcHRpb25fdGV4dCA9ICR0aGlzLT5zYW5pdGl6ZSgkY2FwdGlvblsnZGF0YSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCQkJCX0KCQkJCQkkY2FwdGlvbnNfcGFyZW50W10gPSYgbmV3ICR0aGlzLT5mZWVkLT5jYXB0aW9uX2NsYXNzKCRjYXB0aW9uX3R5cGUsICRjYXB0aW9uX2xhbmcsICRjYXB0aW9uX3N0YXJ0VGltZSwgJGNhcHRpb25fZW5kVGltZSwgJGNhcHRpb25fdGV4dCk7CgkJCQl9CgkJCX0KCQkJZWxzZWlmICgkY2FwdGlvbnMgPSAkcGFyZW50LT5nZXRfY2hhbm5lbF90YWdzKFNJTVBMRVBJRV9OQU1FU1BBQ0VfTUVESUFSU1MsICd0ZXh0JykpCgkJCXsKCQkJCWZvcmVhY2ggKCRjYXB0aW9ucyBhcyAkY2FwdGlvbikKCQkJCXsKCQkJCQkkY2FwdGlvbl90eXBlID0gbnVsbDsKCQkJCQkkY2FwdGlvbl9sYW5nID0gbnVsbDsKCQkJCQkkY2FwdGlvbl9zdGFydFRpbWUgPSBudWxsOwoJCQkJCSRjYXB0aW9uX2VuZFRpbWUgPSBudWxsOwoJCQkJCSRjYXB0aW9uX3RleHQgPSBudWxsOwoJCQkJCWlmIChpc3NldCgkY2FwdGlvblsnYXR0cmlicyddWycnXVsndHlwZSddKSkKCQkJCQl7CgkJCQkJCSRjYXB0aW9uX3R5cGUgPSAkdGhpcy0+c2FuaXRpemUoJGNhcHRpb25bJ2F0dHJpYnMnXVsnJ11bJ3R5cGUnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJCQl9CgkJCQkJaWYgKGlzc2V0KCRjYXB0aW9uWydhdHRyaWJzJ11bJyddWydsYW5nJ10pKQoJCQkJCXsKCQkJCQkJJGNhcHRpb25fbGFuZyA9ICR0aGlzLT5zYW5pdGl6ZSgkY2FwdGlvblsnYXR0cmlicyddWycnXVsnbGFuZyddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCQkJCX0KCQkJCQlpZiAoaXNzZXQoJGNhcHRpb25bJ2F0dHJpYnMnXVsnJ11bJ3N0YXJ0J10pKQoJCQkJCXsKCQkJCQkJJGNhcHRpb25fc3RhcnRUaW1lID0gJHRoaXMtPnNhbml0aXplKCRjYXB0aW9uWydhdHRyaWJzJ11bJyddWydzdGFydCddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCQkJCX0KCQkJCQlpZiAoaXNzZXQoJGNhcHRpb25bJ2F0dHJpYnMnXVsnJ11bJ2VuZCddKSkKCQkJCQl7CgkJCQkJCSRjYXB0aW9uX2VuZFRpbWUgPSAkdGhpcy0+c2FuaXRpemUoJGNhcHRpb25bJ2F0dHJpYnMnXVsnJ11bJ2VuZCddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCQkJCX0KCQkJCQlpZiAoaXNzZXQoJGNhcHRpb25bJ2RhdGEnXSkpCgkJCQkJewoJCQkJCQkkY2FwdGlvbl90ZXh0ID0gJHRoaXMtPnNhbml0aXplKCRjYXB0aW9uWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCQkJfQoJCQkJCSRjYXB0aW9uc19wYXJlbnRbXSA9JiBuZXcgJHRoaXMtPmZlZWQtPmNhcHRpb25fY2xhc3MoJGNhcHRpb25fdHlwZSwgJGNhcHRpb25fbGFuZywgJGNhcHRpb25fc3RhcnRUaW1lLCAkY2FwdGlvbl9lbmRUaW1lLCAkY2FwdGlvbl90ZXh0KTsKCQkJCX0KCQkJfQoJCQlpZiAoaXNfYXJyYXkoJGNhcHRpb25zX3BhcmVudCkpCgkJCXsKCQkJCSRjYXB0aW9uc19wYXJlbnQgPSBhcnJheV92YWx1ZXMoU2ltcGxlUGllX01pc2M6OmFycmF5X3VuaXF1ZSgkY2FwdGlvbnNfcGFyZW50KSk7CgkJCX0KCgkJCS8vIENBVEVHT1JJRVMKCQkJZm9yZWFjaCAoKGFycmF5KSAkdGhpcy0+Z2V0X2l0ZW1fdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX01FRElBUlNTLCAnY2F0ZWdvcnknKSBhcyAkY2F0ZWdvcnkpCgkJCXsKCQkJCSR0ZXJtID0gbnVsbDsKCQkJCSRzY2hlbWUgPSBudWxsOwoJCQkJJGxhYmVsID0gbnVsbDsKCQkJCWlmIChpc3NldCgkY2F0ZWdvcnlbJ2RhdGEnXSkpCgkJCQl7CgkJCQkJJHRlcm0gPSAkdGhpcy0+c2FuaXRpemUoJGNhdGVnb3J5WydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCQl9CgkJCQlpZiAoaXNzZXQoJGNhdGVnb3J5WydhdHRyaWJzJ11bJyddWydzY2hlbWUnXSkpCgkJCQl7CgkJCQkJJHNjaGVtZSA9ICR0aGlzLT5zYW5pdGl6ZSgkY2F0ZWdvcnlbJ2F0dHJpYnMnXVsnJ11bJ3NjaGVtZSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCQkJfQoJCQkJZWxzZQoJCQkJewoJCQkJCSRzY2hlbWUgPSAnaHR0cDovL3NlYXJjaC55YWhvby5jb20vbXJzcy9jYXRlZ29yeV9zY2hlbWEnOwoJCQkJfQoJCQkJaWYgKGlzc2V0KCRjYXRlZ29yeVsnYXR0cmlicyddWycnXVsnbGFiZWwnXSkpCgkJCQl7CgkJCQkJJGxhYmVsID0gJHRoaXMtPnNhbml0aXplKCRjYXRlZ29yeVsnYXR0cmlicyddWycnXVsnbGFiZWwnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJCX0KCQkJCSRjYXRlZ29yaWVzX3BhcmVudFtdID0mIG5ldyAkdGhpcy0+ZmVlZC0+Y2F0ZWdvcnlfY2xhc3MoJHRlcm0sICRzY2hlbWUsICRsYWJlbCk7CgkJCX0KCQkJZm9yZWFjaCAoKGFycmF5KSAkcGFyZW50LT5nZXRfY2hhbm5lbF90YWdzKFNJTVBMRVBJRV9OQU1FU1BBQ0VfTUVESUFSU1MsICdjYXRlZ29yeScpIGFzICRjYXRlZ29yeSkKCQkJewoJCQkJJHRlcm0gPSBudWxsOwoJCQkJJHNjaGVtZSA9IG51bGw7CgkJCQkkbGFiZWwgPSBudWxsOwoJCQkJaWYgKGlzc2V0KCRjYXRlZ29yeVsnZGF0YSddKSkKCQkJCXsKCQkJCQkkdGVybSA9ICR0aGlzLT5zYW5pdGl6ZSgkY2F0ZWdvcnlbJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJCX0KCQkJCWlmIChpc3NldCgkY2F0ZWdvcnlbJ2F0dHJpYnMnXVsnJ11bJ3NjaGVtZSddKSkKCQkJCXsKCQkJCQkkc2NoZW1lID0gJHRoaXMtPnNhbml0aXplKCRjYXRlZ29yeVsnYXR0cmlicyddWycnXVsnc2NoZW1lJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCQl9CgkJCQllbHNlCgkJCQl7CgkJCQkJJHNjaGVtZSA9ICdodHRwOi8vc2VhcmNoLnlhaG9vLmNvbS9tcnNzL2NhdGVnb3J5X3NjaGVtYSc7CgkJCQl9CgkJCQlpZiAoaXNzZXQoJGNhdGVnb3J5WydhdHRyaWJzJ11bJyddWydsYWJlbCddKSkKCQkJCXsKCQkJCQkkbGFiZWwgPSAkdGhpcy0+c2FuaXRpemUoJGNhdGVnb3J5WydhdHRyaWJzJ11bJyddWydsYWJlbCddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCQkJfQoJCQkJJGNhdGVnb3JpZXNfcGFyZW50W10gPSYgbmV3ICR0aGlzLT5mZWVkLT5jYXRlZ29yeV9jbGFzcygkdGVybSwgJHNjaGVtZSwgJGxhYmVsKTsKCQkJfQoJCQlmb3JlYWNoICgoYXJyYXkpICRwYXJlbnQtPmdldF9jaGFubmVsX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9JVFVORVMsICdjYXRlZ29yeScpIGFzICRjYXRlZ29yeSkKCQkJewoJCQkJJHRlcm0gPSBudWxsOwoJCQkJJHNjaGVtZSA9ICdodHRwOi8vd3d3Lml0dW5lcy5jb20vZHRkcy9wb2RjYXN0LTEuMC5kdGQnOwoJCQkJJGxhYmVsID0gbnVsbDsKCQkJCWlmIChpc3NldCgkY2F0ZWdvcnlbJ2F0dHJpYnMnXVsnJ11bJ3RleHQnXSkpCgkJCQl7CgkJCQkJJGxhYmVsID0gJHRoaXMtPnNhbml0aXplKCRjYXRlZ29yeVsnYXR0cmlicyddWycnXVsndGV4dCddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCQkJfQoJCQkJJGNhdGVnb3JpZXNfcGFyZW50W10gPSYgbmV3ICR0aGlzLT5mZWVkLT5jYXRlZ29yeV9jbGFzcygkdGVybSwgJHNjaGVtZSwgJGxhYmVsKTsKCgkJCQlpZiAoaXNzZXQoJGNhdGVnb3J5WydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfSVRVTkVTXVsnY2F0ZWdvcnknXSkpCgkJCQl7CgkJCQkJZm9yZWFjaCAoKGFycmF5KSAkY2F0ZWdvcnlbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9JVFVORVNdWydjYXRlZ29yeSddIGFzICRzdWJjYXRlZ29yeSkKCQkJCQl7CgkJCQkJCWlmIChpc3NldCgkc3ViY2F0ZWdvcnlbJ2F0dHJpYnMnXVsnJ11bJ3RleHQnXSkpCgkJCQkJCXsKCQkJCQkJCSRsYWJlbCA9ICR0aGlzLT5zYW5pdGl6ZSgkc3ViY2F0ZWdvcnlbJ2F0dHJpYnMnXVsnJ11bJ3RleHQnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJCQkJfQoJCQkJCQkkY2F0ZWdvcmllc19wYXJlbnRbXSA9JiBuZXcgJHRoaXMtPmZlZWQtPmNhdGVnb3J5X2NsYXNzKCR0ZXJtLCAkc2NoZW1lLCAkbGFiZWwpOwoJCQkJCX0KCQkJCX0KCQkJfQoJCQlpZiAoaXNfYXJyYXkoJGNhdGVnb3JpZXNfcGFyZW50KSkKCQkJewoJCQkJJGNhdGVnb3JpZXNfcGFyZW50ID0gYXJyYXlfdmFsdWVzKFNpbXBsZVBpZV9NaXNjOjphcnJheV91bmlxdWUoJGNhdGVnb3JpZXNfcGFyZW50KSk7CgkJCX0KCgkJCS8vIENPUFlSSUdIVAoJCQlpZiAoJGNvcHlyaWdodCA9ICR0aGlzLT5nZXRfaXRlbV90YWdzKFNJTVBMRVBJRV9OQU1FU1BBQ0VfTUVESUFSU1MsICdjb3B5cmlnaHQnKSkKCQkJewoJCQkJJGNvcHlyaWdodF91cmwgPSBudWxsOwoJCQkJJGNvcHlyaWdodF9sYWJlbCA9IG51bGw7CgkJCQlpZiAoaXNzZXQoJGNvcHlyaWdodFswXVsnYXR0cmlicyddWycnXVsndXJsJ10pKQoJCQkJewoJCQkJCSRjb3B5cmlnaHRfdXJsID0gJHRoaXMtPnNhbml0aXplKCRjb3B5cmlnaHRbMF1bJ2F0dHJpYnMnXVsnJ11bJ3VybCddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCQkJfQoJCQkJaWYgKGlzc2V0KCRjb3B5cmlnaHRbMF1bJ2RhdGEnXSkpCgkJCQl7CgkJCQkJJGNvcHlyaWdodF9sYWJlbCA9ICR0aGlzLT5zYW5pdGl6ZSgkY29weXJpZ2h0WzBdWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCQl9CgkJCQkkY29weXJpZ2h0c19wYXJlbnQgPSYgbmV3ICR0aGlzLT5mZWVkLT5jb3B5cmlnaHRfY2xhc3MoJGNvcHlyaWdodF91cmwsICRjb3B5cmlnaHRfbGFiZWwpOwoJCQl9CgkJCWVsc2VpZiAoJGNvcHlyaWdodCA9ICRwYXJlbnQtPmdldF9jaGFubmVsX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9NRURJQVJTUywgJ2NvcHlyaWdodCcpKQoJCQl7CgkJCQkkY29weXJpZ2h0X3VybCA9IG51bGw7CgkJCQkkY29weXJpZ2h0X2xhYmVsID0gbnVsbDsKCQkJCWlmIChpc3NldCgkY29weXJpZ2h0WzBdWydhdHRyaWJzJ11bJyddWyd1cmwnXSkpCgkJCQl7CgkJCQkJJGNvcHlyaWdodF91cmwgPSAkdGhpcy0+c2FuaXRpemUoJGNvcHlyaWdodFswXVsnYXR0cmlicyddWycnXVsndXJsJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCQl9CgkJCQlpZiAoaXNzZXQoJGNvcHlyaWdodFswXVsnZGF0YSddKSkKCQkJCXsKCQkJCQkkY29weXJpZ2h0X2xhYmVsID0gJHRoaXMtPnNhbml0aXplKCRjb3B5cmlnaHRbMF1bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJCX0KCQkJCSRjb3B5cmlnaHRzX3BhcmVudCA9JiBuZXcgJHRoaXMtPmZlZWQtPmNvcHlyaWdodF9jbGFzcygkY29weXJpZ2h0X3VybCwgJGNvcHlyaWdodF9sYWJlbCk7CgkJCX0KCgkJCS8vIENSRURJVFMKCQkJaWYgKCRjcmVkaXRzID0gJHRoaXMtPmdldF9pdGVtX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9NRURJQVJTUywgJ2NyZWRpdCcpKQoJCQl7CgkJCQlmb3JlYWNoICgkY3JlZGl0cyBhcyAkY3JlZGl0KQoJCQkJewoJCQkJCSRjcmVkaXRfcm9sZSA9IG51bGw7CgkJCQkJJGNyZWRpdF9zY2hlbWUgPSBudWxsOwoJCQkJCSRjcmVkaXRfbmFtZSA9IG51bGw7CgkJCQkJaWYgKGlzc2V0KCRjcmVkaXRbJ2F0dHJpYnMnXVsnJ11bJ3JvbGUnXSkpCgkJCQkJewoJCQkJCQkkY3JlZGl0X3JvbGUgPSAkdGhpcy0+c2FuaXRpemUoJGNyZWRpdFsnYXR0cmlicyddWycnXVsncm9sZSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCQkJCX0KCQkJCQlpZiAoaXNzZXQoJGNyZWRpdFsnYXR0cmlicyddWycnXVsnc2NoZW1lJ10pKQoJCQkJCXsKCQkJCQkJJGNyZWRpdF9zY2hlbWUgPSAkdGhpcy0+c2FuaXRpemUoJGNyZWRpdFsnYXR0cmlicyddWycnXVsnc2NoZW1lJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCQkJfQoJCQkJCWVsc2UKCQkJCQl7CgkJCQkJCSRjcmVkaXRfc2NoZW1lID0gJ3VybjplYnUnOwoJCQkJCX0KCQkJCQlpZiAoaXNzZXQoJGNyZWRpdFsnZGF0YSddKSkKCQkJCQl7CgkJCQkJCSRjcmVkaXRfbmFtZSA9ICR0aGlzLT5zYW5pdGl6ZSgkY3JlZGl0WydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCQkJfQoJCQkJCSRjcmVkaXRzX3BhcmVudFtdID0mIG5ldyAkdGhpcy0+ZmVlZC0+Y3JlZGl0X2NsYXNzKCRjcmVkaXRfcm9sZSwgJGNyZWRpdF9zY2hlbWUsICRjcmVkaXRfbmFtZSk7CgkJCQl9CgkJCX0KCQkJZWxzZWlmICgkY3JlZGl0cyA9ICRwYXJlbnQtPmdldF9jaGFubmVsX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9NRURJQVJTUywgJ2NyZWRpdCcpKQoJCQl7CgkJCQlmb3JlYWNoICgkY3JlZGl0cyBhcyAkY3JlZGl0KQoJCQkJewoJCQkJCSRjcmVkaXRfcm9sZSA9IG51bGw7CgkJCQkJJGNyZWRpdF9zY2hlbWUgPSBudWxsOwoJCQkJCSRjcmVkaXRfbmFtZSA9IG51bGw7CgkJCQkJaWYgKGlzc2V0KCRjcmVkaXRbJ2F0dHJpYnMnXVsnJ11bJ3JvbGUnXSkpCgkJCQkJewoJCQkJCQkkY3JlZGl0X3JvbGUgPSAkdGhpcy0+c2FuaXRpemUoJGNyZWRpdFsnYXR0cmlicyddWycnXVsncm9sZSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCQkJCX0KCQkJCQlpZiAoaXNzZXQoJGNyZWRpdFsnYXR0cmlicyddWycnXVsnc2NoZW1lJ10pKQoJCQkJCXsKCQkJCQkJJGNyZWRpdF9zY2hlbWUgPSAkdGhpcy0+c2FuaXRpemUoJGNyZWRpdFsnYXR0cmlicyddWycnXVsnc2NoZW1lJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCQkJfQoJCQkJCWVsc2UKCQkJCQl7CgkJCQkJCSRjcmVkaXRfc2NoZW1lID0gJ3VybjplYnUnOwoJCQkJCX0KCQkJCQlpZiAoaXNzZXQoJGNyZWRpdFsnZGF0YSddKSkKCQkJCQl7CgkJCQkJCSRjcmVkaXRfbmFtZSA9ICR0aGlzLT5zYW5pdGl6ZSgkY3JlZGl0WydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCQkJfQoJCQkJCSRjcmVkaXRzX3BhcmVudFtdID0mIG5ldyAkdGhpcy0+ZmVlZC0+Y3JlZGl0X2NsYXNzKCRjcmVkaXRfcm9sZSwgJGNyZWRpdF9zY2hlbWUsICRjcmVkaXRfbmFtZSk7CgkJCQl9CgkJCX0KCQkJaWYgKGlzX2FycmF5KCRjcmVkaXRzX3BhcmVudCkpCgkJCXsKCQkJCSRjcmVkaXRzX3BhcmVudCA9IGFycmF5X3ZhbHVlcyhTaW1wbGVQaWVfTWlzYzo6YXJyYXlfdW5pcXVlKCRjcmVkaXRzX3BhcmVudCkpOwoJCQl9CgoJCQkvLyBERVNDUklQVElPTgoJCQlpZiAoJGRlc2NyaXB0aW9uX3BhcmVudCA9ICR0aGlzLT5nZXRfaXRlbV90YWdzKFNJTVBMRVBJRV9OQU1FU1BBQ0VfTUVESUFSU1MsICdkZXNjcmlwdGlvbicpKQoJCQl7CgkJCQlpZiAoaXNzZXQoJGRlc2NyaXB0aW9uX3BhcmVudFswXVsnZGF0YSddKSkKCQkJCXsKCQkJCQkkZGVzY3JpcHRpb25fcGFyZW50ID0gJHRoaXMtPnNhbml0aXplKCRkZXNjcmlwdGlvbl9wYXJlbnRbMF1bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJCX0KCQkJfQoJCQllbHNlaWYgKCRkZXNjcmlwdGlvbl9wYXJlbnQgPSAkcGFyZW50LT5nZXRfY2hhbm5lbF90YWdzKFNJTVBMRVBJRV9OQU1FU1BBQ0VfTUVESUFSU1MsICdkZXNjcmlwdGlvbicpKQoJCQl7CgkJCQlpZiAoaXNzZXQoJGRlc2NyaXB0aW9uX3BhcmVudFswXVsnZGF0YSddKSkKCQkJCXsKCQkJCQkkZGVzY3JpcHRpb25fcGFyZW50ID0gJHRoaXMtPnNhbml0aXplKCRkZXNjcmlwdGlvbl9wYXJlbnRbMF1bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJCX0KCQkJfQoKCQkJLy8gRFVSQVRJT04KCQkJaWYgKCRkdXJhdGlvbl9wYXJlbnQgPSAkdGhpcy0+Z2V0X2l0ZW1fdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX0lUVU5FUywgJ2R1cmF0aW9uJykpCgkJCXsKCQkJCSRzZWNvbmRzID0gbnVsbDsKCQkJCSRtaW51dGVzID0gbnVsbDsKCQkJCSRob3VycyA9IG51bGw7CgkJCQlpZiAoaXNzZXQoJGR1cmF0aW9uX3BhcmVudFswXVsnZGF0YSddKSkKCQkJCXsKCQkJCQkkdGVtcCA9IGV4cGxvZGUoJzonLCAkdGhpcy0+c2FuaXRpemUoJGR1cmF0aW9uX3BhcmVudFswXVsnZGF0YSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpKTsKCQkJCQlpZiAoc2l6ZW9mKCR0ZW1wKSA+IDApCgkJCQkJewoJCQkJCQkoaW50KSAkc2Vjb25kcyA9IGFycmF5X3BvcCgkdGVtcCk7CgkJCQkJfQoJCQkJCWlmIChzaXplb2YoJHRlbXApID4gMCkKCQkJCQl7CgkJCQkJCShpbnQpICRtaW51dGVzID0gYXJyYXlfcG9wKCR0ZW1wKTsKCQkJCQkJJHNlY29uZHMgKz0gJG1pbnV0ZXMgKiA2MDsKCQkJCQl9CgkJCQkJaWYgKHNpemVvZigkdGVtcCkgPiAwKQoJCQkJCXsKCQkJCQkJKGludCkgJGhvdXJzID0gYXJyYXlfcG9wKCR0ZW1wKTsKCQkJCQkJJHNlY29uZHMgKz0gJGhvdXJzICogMzYwMDsKCQkJCQl9CgkJCQkJdW5zZXQoJHRlbXApOwoJCQkJCSRkdXJhdGlvbl9wYXJlbnQgPSAkc2Vjb25kczsKCQkJCX0KCQkJfQoKCQkJLy8gSEFTSEVTCgkJCWlmICgkaGFzaGVzX2l0ZXJhdG9yID0gJHRoaXMtPmdldF9pdGVtX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9NRURJQVJTUywgJ2hhc2gnKSkKCQkJewoJCQkJZm9yZWFjaCAoJGhhc2hlc19pdGVyYXRvciBhcyAkaGFzaCkKCQkJCXsKCQkJCQkkdmFsdWUgPSBudWxsOwoJCQkJCSRhbGdvID0gbnVsbDsKCQkJCQlpZiAoaXNzZXQoJGhhc2hbJ2RhdGEnXSkpCgkJCQkJewoJCQkJCQkkdmFsdWUgPSAkdGhpcy0+c2FuaXRpemUoJGhhc2hbJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJCQl9CgkJCQkJaWYgKGlzc2V0KCRoYXNoWydhdHRyaWJzJ11bJyddWydhbGdvJ10pKQoJCQkJCXsKCQkJCQkJJGFsZ28gPSAkdGhpcy0+c2FuaXRpemUoJGhhc2hbJ2F0dHJpYnMnXVsnJ11bJ2FsZ28nXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJCQl9CgkJCQkJZWxzZQoJCQkJCXsKCQkJCQkJJGFsZ28gPSAnbWQ1JzsKCQkJCQl9CgkJCQkJJGhhc2hlc19wYXJlbnRbXSA9ICRhbGdvLic6Jy4kdmFsdWU7CgkJCQl9CgkJCX0KCQkJZWxzZWlmICgkaGFzaGVzX2l0ZXJhdG9yID0gJHBhcmVudC0+Z2V0X2NoYW5uZWxfdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX01FRElBUlNTLCAnaGFzaCcpKQoJCQl7CgkJCQlmb3JlYWNoICgkaGFzaGVzX2l0ZXJhdG9yIGFzICRoYXNoKQoJCQkJewoJCQkJCSR2YWx1ZSA9IG51bGw7CgkJCQkJJGFsZ28gPSBudWxsOwoJCQkJCWlmIChpc3NldCgkaGFzaFsnZGF0YSddKSkKCQkJCQl7CgkJCQkJCSR2YWx1ZSA9ICR0aGlzLT5zYW5pdGl6ZSgkaGFzaFsnZGF0YSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCQkJCX0KCQkJCQlpZiAoaXNzZXQoJGhhc2hbJ2F0dHJpYnMnXVsnJ11bJ2FsZ28nXSkpCgkJCQkJewoJCQkJCQkkYWxnbyA9ICR0aGlzLT5zYW5pdGl6ZSgkaGFzaFsnYXR0cmlicyddWycnXVsnYWxnbyddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCQkJCX0KCQkJCQllbHNlCgkJCQkJewoJCQkJCQkkYWxnbyA9ICdtZDUnOwoJCQkJCX0KCQkJCQkkaGFzaGVzX3BhcmVudFtdID0gJGFsZ28uJzonLiR2YWx1ZTsKCQkJCX0KCQkJfQoJCQlpZiAoaXNfYXJyYXkoJGhhc2hlc19wYXJlbnQpKQoJCQl7CgkJCQkkaGFzaGVzX3BhcmVudCA9IGFycmF5X3ZhbHVlcyhTaW1wbGVQaWVfTWlzYzo6YXJyYXlfdW5pcXVlKCRoYXNoZXNfcGFyZW50KSk7CgkJCX0KCgkJCS8vIEtFWVdPUkRTCgkJCWlmICgka2V5d29yZHMgPSAkdGhpcy0+Z2V0X2l0ZW1fdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX01FRElBUlNTLCAna2V5d29yZHMnKSkKCQkJewoJCQkJaWYgKGlzc2V0KCRrZXl3b3Jkc1swXVsnZGF0YSddKSkKCQkJCXsKCQkJCQkkdGVtcCA9IGV4cGxvZGUoJywnLCAkdGhpcy0+c2FuaXRpemUoJGtleXdvcmRzWzBdWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCkpOwoJCQkJCWZvcmVhY2ggKCR0ZW1wIGFzICR3b3JkKQoJCQkJCXsKCQkJCQkJJGtleXdvcmRzX3BhcmVudFtdID0gdHJpbSgkd29yZCk7CgkJCQkJfQoJCQkJfQoJCQkJdW5zZXQoJHRlbXApOwoJCQl9CgkJCWVsc2VpZiAoJGtleXdvcmRzID0gJHRoaXMtPmdldF9pdGVtX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9JVFVORVMsICdrZXl3b3JkcycpKQoJCQl7CgkJCQlpZiAoaXNzZXQoJGtleXdvcmRzWzBdWydkYXRhJ10pKQoJCQkJewoJCQkJCSR0ZW1wID0gZXhwbG9kZSgnLCcsICR0aGlzLT5zYW5pdGl6ZSgka2V5d29yZHNbMF1bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKSk7CgkJCQkJZm9yZWFjaCAoJHRlbXAgYXMgJHdvcmQpCgkJCQkJewoJCQkJCQkka2V5d29yZHNfcGFyZW50W10gPSB0cmltKCR3b3JkKTsKCQkJCQl9CgkJCQl9CgkJCQl1bnNldCgkdGVtcCk7CgkJCX0KCQkJZWxzZWlmICgka2V5d29yZHMgPSAkcGFyZW50LT5nZXRfY2hhbm5lbF90YWdzKFNJTVBMRVBJRV9OQU1FU1BBQ0VfTUVESUFSU1MsICdrZXl3b3JkcycpKQoJCQl7CgkJCQlpZiAoaXNzZXQoJGtleXdvcmRzWzBdWydkYXRhJ10pKQoJCQkJewoJCQkJCSR0ZW1wID0gZXhwbG9kZSgnLCcsICR0aGlzLT5zYW5pdGl6ZSgka2V5d29yZHNbMF1bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKSk7CgkJCQkJZm9yZWFjaCAoJHRlbXAgYXMgJHdvcmQpCgkJCQkJewoJCQkJCQkka2V5d29yZHNfcGFyZW50W10gPSB0cmltKCR3b3JkKTsKCQkJCQl9CgkJCQl9CgkJCQl1bnNldCgkdGVtcCk7CgkJCX0KCQkJZWxzZWlmICgka2V5d29yZHMgPSAkcGFyZW50LT5nZXRfY2hhbm5lbF90YWdzKFNJTVBMRVBJRV9OQU1FU1BBQ0VfSVRVTkVTLCAna2V5d29yZHMnKSkKCQkJewoJCQkJaWYgKGlzc2V0KCRrZXl3b3Jkc1swXVsnZGF0YSddKSkKCQkJCXsKCQkJCQkkdGVtcCA9IGV4cGxvZGUoJywnLCAkdGhpcy0+c2FuaXRpemUoJGtleXdvcmRzWzBdWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCkpOwoJCQkJCWZvcmVhY2ggKCR0ZW1wIGFzICR3b3JkKQoJCQkJCXsKCQkJCQkJJGtleXdvcmRzX3BhcmVudFtdID0gdHJpbSgkd29yZCk7CgkJCQkJfQoJCQkJfQoJCQkJdW5zZXQoJHRlbXApOwoJCQl9CgkJCWlmIChpc19hcnJheSgka2V5d29yZHNfcGFyZW50KSkKCQkJewoJCQkJJGtleXdvcmRzX3BhcmVudCA9IGFycmF5X3ZhbHVlcyhTaW1wbGVQaWVfTWlzYzo6YXJyYXlfdW5pcXVlKCRrZXl3b3Jkc19wYXJlbnQpKTsKCQkJfQoKCQkJLy8gUExBWUVSCgkJCWlmICgkcGxheWVyX3BhcmVudCA9ICR0aGlzLT5nZXRfaXRlbV90YWdzKFNJTVBMRVBJRV9OQU1FU1BBQ0VfTUVESUFSU1MsICdwbGF5ZXInKSkKCQkJewoJCQkJaWYgKGlzc2V0KCRwbGF5ZXJfcGFyZW50WzBdWydhdHRyaWJzJ11bJyddWyd1cmwnXSkpCgkJCQl7CgkJCQkJJHBsYXllcl9wYXJlbnQgPSAkdGhpcy0+c2FuaXRpemUoJHBsYXllcl9wYXJlbnRbMF1bJ2F0dHJpYnMnXVsnJ11bJ3VybCddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX0lSSSk7CgkJCQl9CgkJCX0KCQkJZWxzZWlmICgkcGxheWVyX3BhcmVudCA9ICRwYXJlbnQtPmdldF9jaGFubmVsX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9NRURJQVJTUywgJ3BsYXllcicpKQoJCQl7CgkJCQlpZiAoaXNzZXQoJHBsYXllcl9wYXJlbnRbMF1bJ2F0dHJpYnMnXVsnJ11bJ3VybCddKSkKCQkJCXsKCQkJCQkkcGxheWVyX3BhcmVudCA9ICR0aGlzLT5zYW5pdGl6ZSgkcGxheWVyX3BhcmVudFswXVsnYXR0cmlicyddWycnXVsndXJsJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfSVJJKTsKCQkJCX0KCQkJfQoKCQkJLy8gUkFUSU5HUwoJCQlpZiAoJHJhdGluZ3MgPSAkdGhpcy0+Z2V0X2l0ZW1fdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX01FRElBUlNTLCAncmF0aW5nJykpCgkJCXsKCQkJCWZvcmVhY2ggKCRyYXRpbmdzIGFzICRyYXRpbmcpCgkJCQl7CgkJCQkJJHJhdGluZ19zY2hlbWUgPSBudWxsOwoJCQkJCSRyYXRpbmdfdmFsdWUgPSBudWxsOwoJCQkJCWlmIChpc3NldCgkcmF0aW5nWydhdHRyaWJzJ11bJyddWydzY2hlbWUnXSkpCgkJCQkJewoJCQkJCQkkcmF0aW5nX3NjaGVtZSA9ICR0aGlzLT5zYW5pdGl6ZSgkcmF0aW5nWydhdHRyaWJzJ11bJyddWydzY2hlbWUnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJCQl9CgkJCQkJZWxzZQoJCQkJCXsKCQkJCQkJJHJhdGluZ19zY2hlbWUgPSAndXJuOnNpbXBsZSc7CgkJCQkJfQoJCQkJCWlmIChpc3NldCgkcmF0aW5nWydkYXRhJ10pKQoJCQkJCXsKCQkJCQkJJHJhdGluZ192YWx1ZSA9ICR0aGlzLT5zYW5pdGl6ZSgkcmF0aW5nWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCQkJfQoJCQkJCSRyYXRpbmdzX3BhcmVudFtdID0mIG5ldyAkdGhpcy0+ZmVlZC0+cmF0aW5nX2NsYXNzKCRyYXRpbmdfc2NoZW1lLCAkcmF0aW5nX3ZhbHVlKTsKCQkJCX0KCQkJfQoJCQllbHNlaWYgKCRyYXRpbmdzID0gJHRoaXMtPmdldF9pdGVtX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9JVFVORVMsICdleHBsaWNpdCcpKQoJCQl7CgkJCQlmb3JlYWNoICgkcmF0aW5ncyBhcyAkcmF0aW5nKQoJCQkJewoJCQkJCSRyYXRpbmdfc2NoZW1lID0gJ3VybjppdHVuZXMnOwoJCQkJCSRyYXRpbmdfdmFsdWUgPSBudWxsOwoJCQkJCWlmIChpc3NldCgkcmF0aW5nWydkYXRhJ10pKQoJCQkJCXsKCQkJCQkJJHJhdGluZ192YWx1ZSA9ICR0aGlzLT5zYW5pdGl6ZSgkcmF0aW5nWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCQkJfQoJCQkJCSRyYXRpbmdzX3BhcmVudFtdID0mIG5ldyAkdGhpcy0+ZmVlZC0+cmF0aW5nX2NsYXNzKCRyYXRpbmdfc2NoZW1lLCAkcmF0aW5nX3ZhbHVlKTsKCQkJCX0KCQkJfQoJCQllbHNlaWYgKCRyYXRpbmdzID0gJHBhcmVudC0+Z2V0X2NoYW5uZWxfdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX01FRElBUlNTLCAncmF0aW5nJykpCgkJCXsKCQkJCWZvcmVhY2ggKCRyYXRpbmdzIGFzICRyYXRpbmcpCgkJCQl7CgkJCQkJJHJhdGluZ19zY2hlbWUgPSBudWxsOwoJCQkJCSRyYXRpbmdfdmFsdWUgPSBudWxsOwoJCQkJCWlmIChpc3NldCgkcmF0aW5nWydhdHRyaWJzJ11bJyddWydzY2hlbWUnXSkpCgkJCQkJewoJCQkJCQkkcmF0aW5nX3NjaGVtZSA9ICR0aGlzLT5zYW5pdGl6ZSgkcmF0aW5nWydhdHRyaWJzJ11bJyddWydzY2hlbWUnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJCQl9CgkJCQkJZWxzZQoJCQkJCXsKCQkJCQkJJHJhdGluZ19zY2hlbWUgPSAndXJuOnNpbXBsZSc7CgkJCQkJfQoJCQkJCWlmIChpc3NldCgkcmF0aW5nWydkYXRhJ10pKQoJCQkJCXsKCQkJCQkJJHJhdGluZ192YWx1ZSA9ICR0aGlzLT5zYW5pdGl6ZSgkcmF0aW5nWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCQkJfQoJCQkJCSRyYXRpbmdzX3BhcmVudFtdID0mIG5ldyAkdGhpcy0+ZmVlZC0+cmF0aW5nX2NsYXNzKCRyYXRpbmdfc2NoZW1lLCAkcmF0aW5nX3ZhbHVlKTsKCQkJCX0KCQkJfQoJCQllbHNlaWYgKCRyYXRpbmdzID0gJHBhcmVudC0+Z2V0X2NoYW5uZWxfdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX0lUVU5FUywgJ2V4cGxpY2l0JykpCgkJCXsKCQkJCWZvcmVhY2ggKCRyYXRpbmdzIGFzICRyYXRpbmcpCgkJCQl7CgkJCQkJJHJhdGluZ19zY2hlbWUgPSAndXJuOml0dW5lcyc7CgkJCQkJJHJhdGluZ192YWx1ZSA9IG51bGw7CgkJCQkJaWYgKGlzc2V0KCRyYXRpbmdbJ2RhdGEnXSkpCgkJCQkJewoJCQkJCQkkcmF0aW5nX3ZhbHVlID0gJHRoaXMtPnNhbml0aXplKCRyYXRpbmdbJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJCQl9CgkJCQkJJHJhdGluZ3NfcGFyZW50W10gPSYgbmV3ICR0aGlzLT5mZWVkLT5yYXRpbmdfY2xhc3MoJHJhdGluZ19zY2hlbWUsICRyYXRpbmdfdmFsdWUpOwoJCQkJfQoJCQl9CgkJCWlmIChpc19hcnJheSgkcmF0aW5nc19wYXJlbnQpKQoJCQl7CgkJCQkkcmF0aW5nc19wYXJlbnQgPSBhcnJheV92YWx1ZXMoU2ltcGxlUGllX01pc2M6OmFycmF5X3VuaXF1ZSgkcmF0aW5nc19wYXJlbnQpKTsKCQkJfQoKCQkJLy8gUkVTVFJJQ1RJT05TCgkJCWlmICgkcmVzdHJpY3Rpb25zID0gJHRoaXMtPmdldF9pdGVtX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9NRURJQVJTUywgJ3Jlc3RyaWN0aW9uJykpCgkJCXsKCQkJCWZvcmVhY2ggKCRyZXN0cmljdGlvbnMgYXMgJHJlc3RyaWN0aW9uKQoJCQkJewoJCQkJCSRyZXN0cmljdGlvbl9yZWxhdGlvbnNoaXAgPSBudWxsOwoJCQkJCSRyZXN0cmljdGlvbl90eXBlID0gbnVsbDsKCQkJCQkkcmVzdHJpY3Rpb25fdmFsdWUgPSBudWxsOwoJCQkJCWlmIChpc3NldCgkcmVzdHJpY3Rpb25bJ2F0dHJpYnMnXVsnJ11bJ3JlbGF0aW9uc2hpcCddKSkKCQkJCQl7CgkJCQkJCSRyZXN0cmljdGlvbl9yZWxhdGlvbnNoaXAgPSAkdGhpcy0+c2FuaXRpemUoJHJlc3RyaWN0aW9uWydhdHRyaWJzJ11bJyddWydyZWxhdGlvbnNoaXAnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJCQl9CgkJCQkJaWYgKGlzc2V0KCRyZXN0cmljdGlvblsnYXR0cmlicyddWycnXVsndHlwZSddKSkKCQkJCQl7CgkJCQkJCSRyZXN0cmljdGlvbl90eXBlID0gJHRoaXMtPnNhbml0aXplKCRyZXN0cmljdGlvblsnYXR0cmlicyddWycnXVsndHlwZSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCQkJCX0KCQkJCQlpZiAoaXNzZXQoJHJlc3RyaWN0aW9uWydkYXRhJ10pKQoJCQkJCXsKCQkJCQkJJHJlc3RyaWN0aW9uX3ZhbHVlID0gJHRoaXMtPnNhbml0aXplKCRyZXN0cmljdGlvblsnZGF0YSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCQkJCX0KCQkJCQkkcmVzdHJpY3Rpb25zX3BhcmVudFtdID0mIG5ldyAkdGhpcy0+ZmVlZC0+cmVzdHJpY3Rpb25fY2xhc3MoJHJlc3RyaWN0aW9uX3JlbGF0aW9uc2hpcCwgJHJlc3RyaWN0aW9uX3R5cGUsICRyZXN0cmljdGlvbl92YWx1ZSk7CgkJCQl9CgkJCX0KCQkJZWxzZWlmICgkcmVzdHJpY3Rpb25zID0gJHRoaXMtPmdldF9pdGVtX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9JVFVORVMsICdibG9jaycpKQoJCQl7CgkJCQlmb3JlYWNoICgkcmVzdHJpY3Rpb25zIGFzICRyZXN0cmljdGlvbikKCQkJCXsKCQkJCQkkcmVzdHJpY3Rpb25fcmVsYXRpb25zaGlwID0gJ2FsbG93JzsKCQkJCQkkcmVzdHJpY3Rpb25fdHlwZSA9IG51bGw7CgkJCQkJJHJlc3RyaWN0aW9uX3ZhbHVlID0gJ2l0dW5lcyc7CgkJCQkJaWYgKGlzc2V0KCRyZXN0cmljdGlvblsnZGF0YSddKSAmJiBzdHJ0b2xvd2VyKCRyZXN0cmljdGlvblsnZGF0YSddKSA9PSAneWVzJykKCQkJCQl7CgkJCQkJCSRyZXN0cmljdGlvbl9yZWxhdGlvbnNoaXAgPSAnZGVueSc7CgkJCQkJfQoJCQkJCSRyZXN0cmljdGlvbnNfcGFyZW50W10gPSYgbmV3ICR0aGlzLT5mZWVkLT5yZXN0cmljdGlvbl9jbGFzcygkcmVzdHJpY3Rpb25fcmVsYXRpb25zaGlwLCAkcmVzdHJpY3Rpb25fdHlwZSwgJHJlc3RyaWN0aW9uX3ZhbHVlKTsKCQkJCX0KCQkJfQoJCQllbHNlaWYgKCRyZXN0cmljdGlvbnMgPSAkcGFyZW50LT5nZXRfY2hhbm5lbF90YWdzKFNJTVBMRVBJRV9OQU1FU1BBQ0VfTUVESUFSU1MsICdyZXN0cmljdGlvbicpKQoJCQl7CgkJCQlmb3JlYWNoICgkcmVzdHJpY3Rpb25zIGFzICRyZXN0cmljdGlvbikKCQkJCXsKCQkJCQkkcmVzdHJpY3Rpb25fcmVsYXRpb25zaGlwID0gbnVsbDsKCQkJCQkkcmVzdHJpY3Rpb25fdHlwZSA9IG51bGw7CgkJCQkJJHJlc3RyaWN0aW9uX3ZhbHVlID0gbnVsbDsKCQkJCQlpZiAoaXNzZXQoJHJlc3RyaWN0aW9uWydhdHRyaWJzJ11bJyddWydyZWxhdGlvbnNoaXAnXSkpCgkJCQkJewoJCQkJCQkkcmVzdHJpY3Rpb25fcmVsYXRpb25zaGlwID0gJHRoaXMtPnNhbml0aXplKCRyZXN0cmljdGlvblsnYXR0cmlicyddWycnXVsncmVsYXRpb25zaGlwJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCQkJfQoJCQkJCWlmIChpc3NldCgkcmVzdHJpY3Rpb25bJ2F0dHJpYnMnXVsnJ11bJ3R5cGUnXSkpCgkJCQkJewoJCQkJCQkkcmVzdHJpY3Rpb25fdHlwZSA9ICR0aGlzLT5zYW5pdGl6ZSgkcmVzdHJpY3Rpb25bJ2F0dHJpYnMnXVsnJ11bJ3R5cGUnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJCQl9CgkJCQkJaWYgKGlzc2V0KCRyZXN0cmljdGlvblsnZGF0YSddKSkKCQkJCQl7CgkJCQkJCSRyZXN0cmljdGlvbl92YWx1ZSA9ICR0aGlzLT5zYW5pdGl6ZSgkcmVzdHJpY3Rpb25bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJCQl9CgkJCQkJJHJlc3RyaWN0aW9uc19wYXJlbnRbXSA9JiBuZXcgJHRoaXMtPmZlZWQtPnJlc3RyaWN0aW9uX2NsYXNzKCRyZXN0cmljdGlvbl9yZWxhdGlvbnNoaXAsICRyZXN0cmljdGlvbl90eXBlLCAkcmVzdHJpY3Rpb25fdmFsdWUpOwoJCQkJfQoJCQl9CgkJCWVsc2VpZiAoJHJlc3RyaWN0aW9ucyA9ICRwYXJlbnQtPmdldF9jaGFubmVsX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9JVFVORVMsICdibG9jaycpKQoJCQl7CgkJCQlmb3JlYWNoICgkcmVzdHJpY3Rpb25zIGFzICRyZXN0cmljdGlvbikKCQkJCXsKCQkJCQkkcmVzdHJpY3Rpb25fcmVsYXRpb25zaGlwID0gJ2FsbG93JzsKCQkJCQkkcmVzdHJpY3Rpb25fdHlwZSA9IG51bGw7CgkJCQkJJHJlc3RyaWN0aW9uX3ZhbHVlID0gJ2l0dW5lcyc7CgkJCQkJaWYgKGlzc2V0KCRyZXN0cmljdGlvblsnZGF0YSddKSAmJiBzdHJ0b2xvd2VyKCRyZXN0cmljdGlvblsnZGF0YSddKSA9PSAneWVzJykKCQkJCQl7CgkJCQkJCSRyZXN0cmljdGlvbl9yZWxhdGlvbnNoaXAgPSAnZGVueSc7CgkJCQkJfQoJCQkJCSRyZXN0cmljdGlvbnNfcGFyZW50W10gPSYgbmV3ICR0aGlzLT5mZWVkLT5yZXN0cmljdGlvbl9jbGFzcygkcmVzdHJpY3Rpb25fcmVsYXRpb25zaGlwLCAkcmVzdHJpY3Rpb25fdHlwZSwgJHJlc3RyaWN0aW9uX3ZhbHVlKTsKCQkJCX0KCQkJfQoJCQlpZiAoaXNfYXJyYXkoJHJlc3RyaWN0aW9uc19wYXJlbnQpKQoJCQl7CgkJCQkkcmVzdHJpY3Rpb25zX3BhcmVudCA9IGFycmF5X3ZhbHVlcyhTaW1wbGVQaWVfTWlzYzo6YXJyYXlfdW5pcXVlKCRyZXN0cmljdGlvbnNfcGFyZW50KSk7CgkJCX0KCgkJCS8vIFRIVU1CTkFJTFMKCQkJaWYgKCR0aHVtYm5haWxzID0gJHRoaXMtPmdldF9pdGVtX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9NRURJQVJTUywgJ3RodW1ibmFpbCcpKQoJCQl7CgkJCQlmb3JlYWNoICgkdGh1bWJuYWlscyBhcyAkdGh1bWJuYWlsKQoJCQkJewoJCQkJCWlmIChpc3NldCgkdGh1bWJuYWlsWydhdHRyaWJzJ11bJyddWyd1cmwnXSkpCgkJCQkJewoJCQkJCQkkdGh1bWJuYWlsc19wYXJlbnRbXSA9ICR0aGlzLT5zYW5pdGl6ZSgkdGh1bWJuYWlsWydhdHRyaWJzJ11bJyddWyd1cmwnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9JUkkpOwoJCQkJCX0KCQkJCX0KCQkJfQoJCQllbHNlaWYgKCR0aHVtYm5haWxzID0gJHBhcmVudC0+Z2V0X2NoYW5uZWxfdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX01FRElBUlNTLCAndGh1bWJuYWlsJykpCgkJCXsKCQkJCWZvcmVhY2ggKCR0aHVtYm5haWxzIGFzICR0aHVtYm5haWwpCgkJCQl7CgkJCQkJaWYgKGlzc2V0KCR0aHVtYm5haWxbJ2F0dHJpYnMnXVsnJ11bJ3VybCddKSkKCQkJCQl7CgkJCQkJCSR0aHVtYm5haWxzX3BhcmVudFtdID0gJHRoaXMtPnNhbml0aXplKCR0aHVtYm5haWxbJ2F0dHJpYnMnXVsnJ11bJ3VybCddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX0lSSSk7CgkJCQkJfQoJCQkJfQoJCQl9CgoJCQkvLyBUSVRMRVMKCQkJaWYgKCR0aXRsZV9wYXJlbnQgPSAkdGhpcy0+Z2V0X2l0ZW1fdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX01FRElBUlNTLCAndGl0bGUnKSkKCQkJewoJCQkJaWYgKGlzc2V0KCR0aXRsZV9wYXJlbnRbMF1bJ2RhdGEnXSkpCgkJCQl7CgkJCQkJJHRpdGxlX3BhcmVudCA9ICR0aGlzLT5zYW5pdGl6ZSgkdGl0bGVfcGFyZW50WzBdWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCQl9CgkJCX0KCQkJZWxzZWlmICgkdGl0bGVfcGFyZW50ID0gJHBhcmVudC0+Z2V0X2NoYW5uZWxfdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX01FRElBUlNTLCAndGl0bGUnKSkKCQkJewoJCQkJaWYgKGlzc2V0KCR0aXRsZV9wYXJlbnRbMF1bJ2RhdGEnXSkpCgkJCQl7CgkJCQkJJHRpdGxlX3BhcmVudCA9ICR0aGlzLT5zYW5pdGl6ZSgkdGl0bGVfcGFyZW50WzBdWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCQl9CgkJCX0KCgkJCS8vIENsZWFyIHRoZSBtZW1vcnkKCQkJdW5zZXQoJHBhcmVudCk7CgoJCQkvLyBBdHRyaWJ1dGVzCgkJCSRiaXRyYXRlID0gbnVsbDsKCQkJJGNoYW5uZWxzID0gbnVsbDsKCQkJJGR1cmF0aW9uID0gbnVsbDsKCQkJJGV4cHJlc3Npb24gPSBudWxsOwoJCQkkZnJhbWVyYXRlID0gbnVsbDsKCQkJJGhlaWdodCA9IG51bGw7CgkJCSRqYXZhc2NyaXB0ID0gbnVsbDsKCQkJJGxhbmcgPSBudWxsOwoJCQkkbGVuZ3RoID0gbnVsbDsKCQkJJG1lZGl1bSA9IG51bGw7CgkJCSRzYW1wbGluZ3JhdGUgPSBudWxsOwoJCQkkdHlwZSA9IG51bGw7CgkJCSR1cmwgPSBudWxsOwoJCQkkd2lkdGggPSBudWxsOwoKCQkJLy8gRWxlbWVudHMKCQkJJGNhcHRpb25zID0gbnVsbDsKCQkJJGNhdGVnb3JpZXMgPSBudWxsOwoJCQkkY29weXJpZ2h0cyA9IG51bGw7CgkJCSRjcmVkaXRzID0gbnVsbDsKCQkJJGRlc2NyaXB0aW9uID0gbnVsbDsKCQkJJGhhc2hlcyA9IG51bGw7CgkJCSRrZXl3b3JkcyA9IG51bGw7CgkJCSRwbGF5ZXIgPSBudWxsOwoJCQkkcmF0aW5ncyA9IG51bGw7CgkJCSRyZXN0cmljdGlvbnMgPSBudWxsOwoJCQkkdGh1bWJuYWlscyA9IG51bGw7CgkJCSR0aXRsZSA9IG51bGw7CgoJCQkvLyBJZiB3ZSBoYXZlIG1lZGlhOmdyb3VwIHRhZ3MsIGxvb3AgdGhyb3VnaCB0aGVtLgoJCQlmb3JlYWNoICgoYXJyYXkpICR0aGlzLT5nZXRfaXRlbV90YWdzKFNJTVBMRVBJRV9OQU1FU1BBQ0VfTUVESUFSU1MsICdncm91cCcpIGFzICRncm91cCkKCQkJewoJCQkJLy8gSWYgd2UgaGF2ZSBtZWRpYTpjb250ZW50IHRhZ3MsIGxvb3AgdGhyb3VnaCB0aGVtLgoJCQkJZm9yZWFjaCAoKGFycmF5KSAkZ3JvdXBbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9NRURJQVJTU11bJ2NvbnRlbnQnXSBhcyAkY29udGVudCkKCQkJCXsKCQkJCQlpZiAoaXNzZXQoJGNvbnRlbnRbJ2F0dHJpYnMnXVsnJ11bJ3VybCddKSkKCQkJCQl7CgkJCQkJCS8vIEF0dHJpYnV0ZXMKCQkJCQkJJGJpdHJhdGUgPSBudWxsOwoJCQkJCQkkY2hhbm5lbHMgPSBudWxsOwoJCQkJCQkkZHVyYXRpb24gPSBudWxsOwoJCQkJCQkkZXhwcmVzc2lvbiA9IG51bGw7CgkJCQkJCSRmcmFtZXJhdGUgPSBudWxsOwoJCQkJCQkkaGVpZ2h0ID0gbnVsbDsKCQkJCQkJJGphdmFzY3JpcHQgPSBudWxsOwoJCQkJCQkkbGFuZyA9IG51bGw7CgkJCQkJCSRsZW5ndGggPSBudWxsOwoJCQkJCQkkbWVkaXVtID0gbnVsbDsKCQkJCQkJJHNhbXBsaW5ncmF0ZSA9IG51bGw7CgkJCQkJCSR0eXBlID0gbnVsbDsKCQkJCQkJJHVybCA9IG51bGw7CgkJCQkJCSR3aWR0aCA9IG51bGw7CgoJCQkJCQkvLyBFbGVtZW50cwoJCQkJCQkkY2FwdGlvbnMgPSBudWxsOwoJCQkJCQkkY2F0ZWdvcmllcyA9IG51bGw7CgkJCQkJCSRjb3B5cmlnaHRzID0gbnVsbDsKCQkJCQkJJGNyZWRpdHMgPSBudWxsOwoJCQkJCQkkZGVzY3JpcHRpb24gPSBudWxsOwoJCQkJCQkkaGFzaGVzID0gbnVsbDsKCQkJCQkJJGtleXdvcmRzID0gbnVsbDsKCQkJCQkJJHBsYXllciA9IG51bGw7CgkJCQkJCSRyYXRpbmdzID0gbnVsbDsKCQkJCQkJJHJlc3RyaWN0aW9ucyA9IG51bGw7CgkJCQkJCSR0aHVtYm5haWxzID0gbnVsbDsKCQkJCQkJJHRpdGxlID0gbnVsbDsKCgkJCQkJCS8vIFN0YXJ0IGNoZWNraW5nIHRoZSBhdHRyaWJ1dGVzIG9mIG1lZGlhOmNvbnRlbnQKCQkJCQkJaWYgKGlzc2V0KCRjb250ZW50WydhdHRyaWJzJ11bJyddWydiaXRyYXRlJ10pKQoJCQkJCQl7CgkJCQkJCQkkYml0cmF0ZSA9ICR0aGlzLT5zYW5pdGl6ZSgkY29udGVudFsnYXR0cmlicyddWycnXVsnYml0cmF0ZSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCQkJCQl9CgkJCQkJCWlmIChpc3NldCgkY29udGVudFsnYXR0cmlicyddWycnXVsnY2hhbm5lbHMnXSkpCgkJCQkJCXsKCQkJCQkJCSRjaGFubmVscyA9ICR0aGlzLT5zYW5pdGl6ZSgkY29udGVudFsnYXR0cmlicyddWycnXVsnY2hhbm5lbHMnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJCQkJfQoJCQkJCQlpZiAoaXNzZXQoJGNvbnRlbnRbJ2F0dHJpYnMnXVsnJ11bJ2R1cmF0aW9uJ10pKQoJCQkJCQl7CgkJCQkJCQkkZHVyYXRpb24gPSAkdGhpcy0+c2FuaXRpemUoJGNvbnRlbnRbJ2F0dHJpYnMnXVsnJ11bJ2R1cmF0aW9uJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCQkJCX0KCQkJCQkJZWxzZQoJCQkJCQl7CgkJCQkJCQkkZHVyYXRpb24gPSAkZHVyYXRpb25fcGFyZW50OwoJCQkJCQl9CgkJCQkJCWlmIChpc3NldCgkY29udGVudFsnYXR0cmlicyddWycnXVsnZXhwcmVzc2lvbiddKSkKCQkJCQkJewoJCQkJCQkJJGV4cHJlc3Npb24gPSAkdGhpcy0+c2FuaXRpemUoJGNvbnRlbnRbJ2F0dHJpYnMnXVsnJ11bJ2V4cHJlc3Npb24nXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJCQkJfQoJCQkJCQlpZiAoaXNzZXQoJGNvbnRlbnRbJ2F0dHJpYnMnXVsnJ11bJ2ZyYW1lcmF0ZSddKSkKCQkJCQkJewoJCQkJCQkJJGZyYW1lcmF0ZSA9ICR0aGlzLT5zYW5pdGl6ZSgkY29udGVudFsnYXR0cmlicyddWycnXVsnZnJhbWVyYXRlJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCQkJCX0KCQkJCQkJaWYgKGlzc2V0KCRjb250ZW50WydhdHRyaWJzJ11bJyddWydoZWlnaHQnXSkpCgkJCQkJCXsKCQkJCQkJCSRoZWlnaHQgPSAkdGhpcy0+c2FuaXRpemUoJGNvbnRlbnRbJ2F0dHJpYnMnXVsnJ11bJ2hlaWdodCddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCQkJCQl9CgkJCQkJCWlmIChpc3NldCgkY29udGVudFsnYXR0cmlicyddWycnXVsnbGFuZyddKSkKCQkJCQkJewoJCQkJCQkJJGxhbmcgPSAkdGhpcy0+c2FuaXRpemUoJGNvbnRlbnRbJ2F0dHJpYnMnXVsnJ11bJ2xhbmcnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJCQkJfQoJCQkJCQlpZiAoaXNzZXQoJGNvbnRlbnRbJ2F0dHJpYnMnXVsnJ11bJ2ZpbGVTaXplJ10pKQoJCQkJCQl7CgkJCQkJCQkkbGVuZ3RoID0gY2VpbCgkY29udGVudFsnYXR0cmlicyddWycnXVsnZmlsZVNpemUnXSk7CgkJCQkJCX0KCQkJCQkJaWYgKGlzc2V0KCRjb250ZW50WydhdHRyaWJzJ11bJyddWydtZWRpdW0nXSkpCgkJCQkJCXsKCQkJCQkJCSRtZWRpdW0gPSAkdGhpcy0+c2FuaXRpemUoJGNvbnRlbnRbJ2F0dHJpYnMnXVsnJ11bJ21lZGl1bSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCQkJCQl9CgkJCQkJCWlmIChpc3NldCgkY29udGVudFsnYXR0cmlicyddWycnXVsnc2FtcGxpbmdyYXRlJ10pKQoJCQkJCQl7CgkJCQkJCQkkc2FtcGxpbmdyYXRlID0gJHRoaXMtPnNhbml0aXplKCRjb250ZW50WydhdHRyaWJzJ11bJyddWydzYW1wbGluZ3JhdGUnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJCQkJfQoJCQkJCQlpZiAoaXNzZXQoJGNvbnRlbnRbJ2F0dHJpYnMnXVsnJ11bJ3R5cGUnXSkpCgkJCQkJCXsKCQkJCQkJCSR0eXBlID0gJHRoaXMtPnNhbml0aXplKCRjb250ZW50WydhdHRyaWJzJ11bJyddWyd0eXBlJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCQkJCX0KCQkJCQkJaWYgKGlzc2V0KCRjb250ZW50WydhdHRyaWJzJ11bJyddWyd3aWR0aCddKSkKCQkJCQkJewoJCQkJCQkJJHdpZHRoID0gJHRoaXMtPnNhbml0aXplKCRjb250ZW50WydhdHRyaWJzJ11bJyddWyd3aWR0aCddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCQkJCQl9CgkJCQkJCSR1cmwgPSAkdGhpcy0+c2FuaXRpemUoJGNvbnRlbnRbJ2F0dHJpYnMnXVsnJ11bJ3VybCddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX0lSSSk7CgoJCQkJCQkvLyBDaGVja2luZyB0aGUgb3RoZXIgb3B0aW9uYWwgbWVkaWE6IGVsZW1lbnRzLiBQcmlvcml0eTogbWVkaWE6Y29udGVudCwgbWVkaWE6Z3JvdXAsIGl0ZW0sIGNoYW5uZWwKCgkJCQkJCS8vIENBUFRJT05TCgkJCQkJCWlmIChpc3NldCgkY29udGVudFsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX01FRElBUlNTXVsndGV4dCddKSkKCQkJCQkJewoJCQkJCQkJZm9yZWFjaCAoJGNvbnRlbnRbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9NRURJQVJTU11bJ3RleHQnXSBhcyAkY2FwdGlvbikKCQkJCQkJCXsKCQkJCQkJCQkkY2FwdGlvbl90eXBlID0gbnVsbDsKCQkJCQkJCQkkY2FwdGlvbl9sYW5nID0gbnVsbDsKCQkJCQkJCQkkY2FwdGlvbl9zdGFydFRpbWUgPSBudWxsOwoJCQkJCQkJCSRjYXB0aW9uX2VuZFRpbWUgPSBudWxsOwoJCQkJCQkJCSRjYXB0aW9uX3RleHQgPSBudWxsOwoJCQkJCQkJCWlmIChpc3NldCgkY2FwdGlvblsnYXR0cmlicyddWycnXVsndHlwZSddKSkKCQkJCQkJCQl7CgkJCQkJCQkJCSRjYXB0aW9uX3R5cGUgPSAkdGhpcy0+c2FuaXRpemUoJGNhcHRpb25bJ2F0dHJpYnMnXVsnJ11bJ3R5cGUnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJCQkJCQl9CgkJCQkJCQkJaWYgKGlzc2V0KCRjYXB0aW9uWydhdHRyaWJzJ11bJyddWydsYW5nJ10pKQoJCQkJCQkJCXsKCQkJCQkJCQkJJGNhcHRpb25fbGFuZyA9ICR0aGlzLT5zYW5pdGl6ZSgkY2FwdGlvblsnYXR0cmlicyddWycnXVsnbGFuZyddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCQkJCQkJCX0KCQkJCQkJCQlpZiAoaXNzZXQoJGNhcHRpb25bJ2F0dHJpYnMnXVsnJ11bJ3N0YXJ0J10pKQoJCQkJCQkJCXsKCQkJCQkJCQkJJGNhcHRpb25fc3RhcnRUaW1lID0gJHRoaXMtPnNhbml0aXplKCRjYXB0aW9uWydhdHRyaWJzJ11bJyddWydzdGFydCddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCQkJCQkJCX0KCQkJCQkJCQlpZiAoaXNzZXQoJGNhcHRpb25bJ2F0dHJpYnMnXVsnJ11bJ2VuZCddKSkKCQkJCQkJCQl7CgkJCQkJCQkJCSRjYXB0aW9uX2VuZFRpbWUgPSAkdGhpcy0+c2FuaXRpemUoJGNhcHRpb25bJ2F0dHJpYnMnXVsnJ11bJ2VuZCddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCQkJCQkJCX0KCQkJCQkJCQlpZiAoaXNzZXQoJGNhcHRpb25bJ2RhdGEnXSkpCgkJCQkJCQkJewoJCQkJCQkJCQkkY2FwdGlvbl90ZXh0ID0gJHRoaXMtPnNhbml0aXplKCRjYXB0aW9uWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCQkJCQkJfQoJCQkJCQkJCSRjYXB0aW9uc1tdID0mIG5ldyAkdGhpcy0+ZmVlZC0+Y2FwdGlvbl9jbGFzcygkY2FwdGlvbl90eXBlLCAkY2FwdGlvbl9sYW5nLCAkY2FwdGlvbl9zdGFydFRpbWUsICRjYXB0aW9uX2VuZFRpbWUsICRjYXB0aW9uX3RleHQpOwoJCQkJCQkJfQoJCQkJCQkJaWYgKGlzX2FycmF5KCRjYXB0aW9ucykpCgkJCQkJCQl7CgkJCQkJCQkJJGNhcHRpb25zID0gYXJyYXlfdmFsdWVzKFNpbXBsZVBpZV9NaXNjOjphcnJheV91bmlxdWUoJGNhcHRpb25zKSk7CgkJCQkJCQl9CgkJCQkJCX0KCQkJCQkJZWxzZWlmIChpc3NldCgkZ3JvdXBbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9NRURJQVJTU11bJ3RleHQnXSkpCgkJCQkJCXsKCQkJCQkJCWZvcmVhY2ggKCRncm91cFsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX01FRElBUlNTXVsndGV4dCddIGFzICRjYXB0aW9uKQoJCQkJCQkJewoJCQkJCQkJCSRjYXB0aW9uX3R5cGUgPSBudWxsOwoJCQkJCQkJCSRjYXB0aW9uX2xhbmcgPSBudWxsOwoJCQkJCQkJCSRjYXB0aW9uX3N0YXJ0VGltZSA9IG51bGw7CgkJCQkJCQkJJGNhcHRpb25fZW5kVGltZSA9IG51bGw7CgkJCQkJCQkJJGNhcHRpb25fdGV4dCA9IG51bGw7CgkJCQkJCQkJaWYgKGlzc2V0KCRjYXB0aW9uWydhdHRyaWJzJ11bJyddWyd0eXBlJ10pKQoJCQkJCQkJCXsKCQkJCQkJCQkJJGNhcHRpb25fdHlwZSA9ICR0aGlzLT5zYW5pdGl6ZSgkY2FwdGlvblsnYXR0cmlicyddWycnXVsndHlwZSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCQkJCQkJCX0KCQkJCQkJCQlpZiAoaXNzZXQoJGNhcHRpb25bJ2F0dHJpYnMnXVsnJ11bJ2xhbmcnXSkpCgkJCQkJCQkJewoJCQkJCQkJCQkkY2FwdGlvbl9sYW5nID0gJHRoaXMtPnNhbml0aXplKCRjYXB0aW9uWydhdHRyaWJzJ11bJyddWydsYW5nJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCQkJCQkJfQoJCQkJCQkJCWlmIChpc3NldCgkY2FwdGlvblsnYXR0cmlicyddWycnXVsnc3RhcnQnXSkpCgkJCQkJCQkJewoJCQkJCQkJCQkkY2FwdGlvbl9zdGFydFRpbWUgPSAkdGhpcy0+c2FuaXRpemUoJGNhcHRpb25bJ2F0dHJpYnMnXVsnJ11bJ3N0YXJ0J10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCQkJCQkJfQoJCQkJCQkJCWlmIChpc3NldCgkY2FwdGlvblsnYXR0cmlicyddWycnXVsnZW5kJ10pKQoJCQkJCQkJCXsKCQkJCQkJCQkJJGNhcHRpb25fZW5kVGltZSA9ICR0aGlzLT5zYW5pdGl6ZSgkY2FwdGlvblsnYXR0cmlicyddWycnXVsnZW5kJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCQkJCQkJfQoJCQkJCQkJCWlmIChpc3NldCgkY2FwdGlvblsnZGF0YSddKSkKCQkJCQkJCQl7CgkJCQkJCQkJCSRjYXB0aW9uX3RleHQgPSAkdGhpcy0+c2FuaXRpemUoJGNhcHRpb25bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJCQkJCQl9CgkJCQkJCQkJJGNhcHRpb25zW10gPSYgbmV3ICR0aGlzLT5mZWVkLT5jYXB0aW9uX2NsYXNzKCRjYXB0aW9uX3R5cGUsICRjYXB0aW9uX2xhbmcsICRjYXB0aW9uX3N0YXJ0VGltZSwgJGNhcHRpb25fZW5kVGltZSwgJGNhcHRpb25fdGV4dCk7CgkJCQkJCQl9CgkJCQkJCQlpZiAoaXNfYXJyYXkoJGNhcHRpb25zKSkKCQkJCQkJCXsKCQkJCQkJCQkkY2FwdGlvbnMgPSBhcnJheV92YWx1ZXMoU2ltcGxlUGllX01pc2M6OmFycmF5X3VuaXF1ZSgkY2FwdGlvbnMpKTsKCQkJCQkJCX0KCQkJCQkJfQoJCQkJCQllbHNlCgkJCQkJCXsKCQkJCQkJCSRjYXB0aW9ucyA9ICRjYXB0aW9uc19wYXJlbnQ7CgkJCQkJCX0KCgkJCQkJCS8vIENBVEVHT1JJRVMKCQkJCQkJaWYgKGlzc2V0KCRjb250ZW50WydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfTUVESUFSU1NdWydjYXRlZ29yeSddKSkKCQkJCQkJewoJCQkJCQkJZm9yZWFjaCAoKGFycmF5KSAkY29udGVudFsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX01FRElBUlNTXVsnY2F0ZWdvcnknXSBhcyAkY2F0ZWdvcnkpCgkJCQkJCQl7CgkJCQkJCQkJJHRlcm0gPSBudWxsOwoJCQkJCQkJCSRzY2hlbWUgPSBudWxsOwoJCQkJCQkJCSRsYWJlbCA9IG51bGw7CgkJCQkJCQkJaWYgKGlzc2V0KCRjYXRlZ29yeVsnZGF0YSddKSkKCQkJCQkJCQl7CgkJCQkJCQkJCSR0ZXJtID0gJHRoaXMtPnNhbml0aXplKCRjYXRlZ29yeVsnZGF0YSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCQkJCQkJCX0KCQkJCQkJCQlpZiAoaXNzZXQoJGNhdGVnb3J5WydhdHRyaWJzJ11bJyddWydzY2hlbWUnXSkpCgkJCQkJCQkJewoJCQkJCQkJCQkkc2NoZW1lID0gJHRoaXMtPnNhbml0aXplKCRjYXRlZ29yeVsnYXR0cmlicyddWycnXVsnc2NoZW1lJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCQkJCQkJfQoJCQkJCQkJCWVsc2UKCQkJCQkJCQl7CgkJCQkJCQkJCSRzY2hlbWUgPSAnaHR0cDovL3NlYXJjaC55YWhvby5jb20vbXJzcy9jYXRlZ29yeV9zY2hlbWEnOwoJCQkJCQkJCX0KCQkJCQkJCQlpZiAoaXNzZXQoJGNhdGVnb3J5WydhdHRyaWJzJ11bJyddWydsYWJlbCddKSkKCQkJCQkJCQl7CgkJCQkJCQkJCSRsYWJlbCA9ICR0aGlzLT5zYW5pdGl6ZSgkY2F0ZWdvcnlbJ2F0dHJpYnMnXVsnJ11bJ2xhYmVsJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCQkJCQkJfQoJCQkJCQkJCSRjYXRlZ29yaWVzW10gPSYgbmV3ICR0aGlzLT5mZWVkLT5jYXRlZ29yeV9jbGFzcygkdGVybSwgJHNjaGVtZSwgJGxhYmVsKTsKCQkJCQkJCX0KCQkJCQkJfQoJCQkJCQlpZiAoaXNzZXQoJGdyb3VwWydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfTUVESUFSU1NdWydjYXRlZ29yeSddKSkKCQkJCQkJewoJCQkJCQkJZm9yZWFjaCAoKGFycmF5KSAkZ3JvdXBbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9NRURJQVJTU11bJ2NhdGVnb3J5J10gYXMgJGNhdGVnb3J5KQoJCQkJCQkJewoJCQkJCQkJCSR0ZXJtID0gbnVsbDsKCQkJCQkJCQkkc2NoZW1lID0gbnVsbDsKCQkJCQkJCQkkbGFiZWwgPSBudWxsOwoJCQkJCQkJCWlmIChpc3NldCgkY2F0ZWdvcnlbJ2RhdGEnXSkpCgkJCQkJCQkJewoJCQkJCQkJCQkkdGVybSA9ICR0aGlzLT5zYW5pdGl6ZSgkY2F0ZWdvcnlbJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJCQkJCQl9CgkJCQkJCQkJaWYgKGlzc2V0KCRjYXRlZ29yeVsnYXR0cmlicyddWycnXVsnc2NoZW1lJ10pKQoJCQkJCQkJCXsKCQkJCQkJCQkJJHNjaGVtZSA9ICR0aGlzLT5zYW5pdGl6ZSgkY2F0ZWdvcnlbJ2F0dHJpYnMnXVsnJ11bJ3NjaGVtZSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCQkJCQkJCX0KCQkJCQkJCQllbHNlCgkJCQkJCQkJewoJCQkJCQkJCQkkc2NoZW1lID0gJ2h0dHA6Ly9zZWFyY2gueWFob28uY29tL21yc3MvY2F0ZWdvcnlfc2NoZW1hJzsKCQkJCQkJCQl9CgkJCQkJCQkJaWYgKGlzc2V0KCRjYXRlZ29yeVsnYXR0cmlicyddWycnXVsnbGFiZWwnXSkpCgkJCQkJCQkJewoJCQkJCQkJCQkkbGFiZWwgPSAkdGhpcy0+c2FuaXRpemUoJGNhdGVnb3J5WydhdHRyaWJzJ11bJyddWydsYWJlbCddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCQkJCQkJCX0KCQkJCQkJCQkkY2F0ZWdvcmllc1tdID0mIG5ldyAkdGhpcy0+ZmVlZC0+Y2F0ZWdvcnlfY2xhc3MoJHRlcm0sICRzY2hlbWUsICRsYWJlbCk7CgkJCQkJCQl9CgkJCQkJCX0KCQkJCQkJaWYgKGlzX2FycmF5KCRjYXRlZ29yaWVzKSAmJiBpc19hcnJheSgkY2F0ZWdvcmllc19wYXJlbnQpKQoJCQkJCQl7CgkJCQkJCQkkY2F0ZWdvcmllcyA9IGFycmF5X3ZhbHVlcyhTaW1wbGVQaWVfTWlzYzo6YXJyYXlfdW5pcXVlKGFycmF5X21lcmdlKCRjYXRlZ29yaWVzLCAkY2F0ZWdvcmllc19wYXJlbnQpKSk7CgkJCQkJCX0KCQkJCQkJZWxzZWlmIChpc19hcnJheSgkY2F0ZWdvcmllcykpCgkJCQkJCXsKCQkJCQkJCSRjYXRlZ29yaWVzID0gYXJyYXlfdmFsdWVzKFNpbXBsZVBpZV9NaXNjOjphcnJheV91bmlxdWUoJGNhdGVnb3JpZXMpKTsKCQkJCQkJfQoJCQkJCQllbHNlaWYgKGlzX2FycmF5KCRjYXRlZ29yaWVzX3BhcmVudCkpCgkJCQkJCXsKCQkJCQkJCSRjYXRlZ29yaWVzID0gYXJyYXlfdmFsdWVzKFNpbXBsZVBpZV9NaXNjOjphcnJheV91bmlxdWUoJGNhdGVnb3JpZXNfcGFyZW50KSk7CgkJCQkJCX0KCgkJCQkJCS8vIENPUFlSSUdIVFMKCQkJCQkJaWYgKGlzc2V0KCRjb250ZW50WydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfTUVESUFSU1NdWydjb3B5cmlnaHQnXSkpCgkJCQkJCXsKCQkJCQkJCSRjb3B5cmlnaHRfdXJsID0gbnVsbDsKCQkJCQkJCSRjb3B5cmlnaHRfbGFiZWwgPSBudWxsOwoJCQkJCQkJaWYgKGlzc2V0KCRjb250ZW50WydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfTUVESUFSU1NdWydjb3B5cmlnaHQnXVswXVsnYXR0cmlicyddWycnXVsndXJsJ10pKQoJCQkJCQkJewoJCQkJCQkJCSRjb3B5cmlnaHRfdXJsID0gJHRoaXMtPnNhbml0aXplKCRjb250ZW50WydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfTUVESUFSU1NdWydjb3B5cmlnaHQnXVswXVsnYXR0cmlicyddWycnXVsndXJsJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCQkJCQl9CgkJCQkJCQlpZiAoaXNzZXQoJGNvbnRlbnRbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9NRURJQVJTU11bJ2NvcHlyaWdodCddWzBdWydkYXRhJ10pKQoJCQkJCQkJewoJCQkJCQkJCSRjb3B5cmlnaHRfbGFiZWwgPSAkdGhpcy0+c2FuaXRpemUoJGNvbnRlbnRbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9NRURJQVJTU11bJ2NvcHlyaWdodCddWzBdWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCQkJCQl9CgkJCQkJCQkkY29weXJpZ2h0cyA9JiBuZXcgJHRoaXMtPmZlZWQtPmNvcHlyaWdodF9jbGFzcygkY29weXJpZ2h0X3VybCwgJGNvcHlyaWdodF9sYWJlbCk7CgkJCQkJCX0KCQkJCQkJZWxzZWlmIChpc3NldCgkZ3JvdXBbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9NRURJQVJTU11bJ2NvcHlyaWdodCddKSkKCQkJCQkJewoJCQkJCQkJJGNvcHlyaWdodF91cmwgPSBudWxsOwoJCQkJCQkJJGNvcHlyaWdodF9sYWJlbCA9IG51bGw7CgkJCQkJCQlpZiAoaXNzZXQoJGdyb3VwWydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfTUVESUFSU1NdWydjb3B5cmlnaHQnXVswXVsnYXR0cmlicyddWycnXVsndXJsJ10pKQoJCQkJCQkJewoJCQkJCQkJCSRjb3B5cmlnaHRfdXJsID0gJHRoaXMtPnNhbml0aXplKCRncm91cFsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX01FRElBUlNTXVsnY29weXJpZ2h0J11bMF1bJ2F0dHJpYnMnXVsnJ11bJ3VybCddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCQkJCQkJfQoJCQkJCQkJaWYgKGlzc2V0KCRncm91cFsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX01FRElBUlNTXVsnY29weXJpZ2h0J11bMF1bJ2RhdGEnXSkpCgkJCQkJCQl7CgkJCQkJCQkJJGNvcHlyaWdodF9sYWJlbCA9ICR0aGlzLT5zYW5pdGl6ZSgkZ3JvdXBbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9NRURJQVJTU11bJ2NvcHlyaWdodCddWzBdWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCQkJCQl9CgkJCQkJCQkkY29weXJpZ2h0cyA9JiBuZXcgJHRoaXMtPmZlZWQtPmNvcHlyaWdodF9jbGFzcygkY29weXJpZ2h0X3VybCwgJGNvcHlyaWdodF9sYWJlbCk7CgkJCQkJCX0KCQkJCQkJZWxzZQoJCQkJCQl7CgkJCQkJCQkkY29weXJpZ2h0cyA9ICRjb3B5cmlnaHRzX3BhcmVudDsKCQkJCQkJfQoKCQkJCQkJLy8gQ1JFRElUUwoJCQkJCQlpZiAoaXNzZXQoJGNvbnRlbnRbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9NRURJQVJTU11bJ2NyZWRpdCddKSkKCQkJCQkJewoJCQkJCQkJZm9yZWFjaCAoJGNvbnRlbnRbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9NRURJQVJTU11bJ2NyZWRpdCddIGFzICRjcmVkaXQpCgkJCQkJCQl7CgkJCQkJCQkJJGNyZWRpdF9yb2xlID0gbnVsbDsKCQkJCQkJCQkkY3JlZGl0X3NjaGVtZSA9IG51bGw7CgkJCQkJCQkJJGNyZWRpdF9uYW1lID0gbnVsbDsKCQkJCQkJCQlpZiAoaXNzZXQoJGNyZWRpdFsnYXR0cmlicyddWycnXVsncm9sZSddKSkKCQkJCQkJCQl7CgkJCQkJCQkJCSRjcmVkaXRfcm9sZSA9ICR0aGlzLT5zYW5pdGl6ZSgkY3JlZGl0WydhdHRyaWJzJ11bJyddWydyb2xlJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCQkJCQkJfQoJCQkJCQkJCWlmIChpc3NldCgkY3JlZGl0WydhdHRyaWJzJ11bJyddWydzY2hlbWUnXSkpCgkJCQkJCQkJewoJCQkJCQkJCQkkY3JlZGl0X3NjaGVtZSA9ICR0aGlzLT5zYW5pdGl6ZSgkY3JlZGl0WydhdHRyaWJzJ11bJyddWydzY2hlbWUnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJCQkJCQl9CgkJCQkJCQkJZWxzZQoJCQkJCQkJCXsKCQkJCQkJCQkJJGNyZWRpdF9zY2hlbWUgPSAndXJuOmVidSc7CgkJCQkJCQkJfQoJCQkJCQkJCWlmIChpc3NldCgkY3JlZGl0WydkYXRhJ10pKQoJCQkJCQkJCXsKCQkJCQkJCQkJJGNyZWRpdF9uYW1lID0gJHRoaXMtPnNhbml0aXplKCRjcmVkaXRbJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJCQkJCQl9CgkJCQkJCQkJJGNyZWRpdHNbXSA9JiBuZXcgJHRoaXMtPmZlZWQtPmNyZWRpdF9jbGFzcygkY3JlZGl0X3JvbGUsICRjcmVkaXRfc2NoZW1lLCAkY3JlZGl0X25hbWUpOwoJCQkJCQkJfQoJCQkJCQkJaWYgKGlzX2FycmF5KCRjcmVkaXRzKSkKCQkJCQkJCXsKCQkJCQkJCQkkY3JlZGl0cyA9IGFycmF5X3ZhbHVlcyhTaW1wbGVQaWVfTWlzYzo6YXJyYXlfdW5pcXVlKCRjcmVkaXRzKSk7CgkJCQkJCQl9CgkJCQkJCX0KCQkJCQkJZWxzZWlmIChpc3NldCgkZ3JvdXBbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9NRURJQVJTU11bJ2NyZWRpdCddKSkKCQkJCQkJewoJCQkJCQkJZm9yZWFjaCAoJGdyb3VwWydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfTUVESUFSU1NdWydjcmVkaXQnXSBhcyAkY3JlZGl0KQoJCQkJCQkJewoJCQkJCQkJCSRjcmVkaXRfcm9sZSA9IG51bGw7CgkJCQkJCQkJJGNyZWRpdF9zY2hlbWUgPSBudWxsOwoJCQkJCQkJCSRjcmVkaXRfbmFtZSA9IG51bGw7CgkJCQkJCQkJaWYgKGlzc2V0KCRjcmVkaXRbJ2F0dHJpYnMnXVsnJ11bJ3JvbGUnXSkpCgkJCQkJCQkJewoJCQkJCQkJCQkkY3JlZGl0X3JvbGUgPSAkdGhpcy0+c2FuaXRpemUoJGNyZWRpdFsnYXR0cmlicyddWycnXVsncm9sZSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCQkJCQkJCX0KCQkJCQkJCQlpZiAoaXNzZXQoJGNyZWRpdFsnYXR0cmlicyddWycnXVsnc2NoZW1lJ10pKQoJCQkJCQkJCXsKCQkJCQkJCQkJJGNyZWRpdF9zY2hlbWUgPSAkdGhpcy0+c2FuaXRpemUoJGNyZWRpdFsnYXR0cmlicyddWycnXVsnc2NoZW1lJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCQkJCQkJfQoJCQkJCQkJCWVsc2UKCQkJCQkJCQl7CgkJCQkJCQkJCSRjcmVkaXRfc2NoZW1lID0gJ3VybjplYnUnOwoJCQkJCQkJCX0KCQkJCQkJCQlpZiAoaXNzZXQoJGNyZWRpdFsnZGF0YSddKSkKCQkJCQkJCQl7CgkJCQkJCQkJCSRjcmVkaXRfbmFtZSA9ICR0aGlzLT5zYW5pdGl6ZSgkY3JlZGl0WydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCQkJCQkJfQoJCQkJCQkJCSRjcmVkaXRzW10gPSYgbmV3ICR0aGlzLT5mZWVkLT5jcmVkaXRfY2xhc3MoJGNyZWRpdF9yb2xlLCAkY3JlZGl0X3NjaGVtZSwgJGNyZWRpdF9uYW1lKTsKCQkJCQkJCX0KCQkJCQkJCWlmIChpc19hcnJheSgkY3JlZGl0cykpCgkJCQkJCQl7CgkJCQkJCQkJJGNyZWRpdHMgPSBhcnJheV92YWx1ZXMoU2ltcGxlUGllX01pc2M6OmFycmF5X3VuaXF1ZSgkY3JlZGl0cykpOwoJCQkJCQkJfQoJCQkJCQl9CgkJCQkJCWVsc2UKCQkJCQkJewoJCQkJCQkJJGNyZWRpdHMgPSAkY3JlZGl0c19wYXJlbnQ7CgkJCQkJCX0KCgkJCQkJCS8vIERFU0NSSVBUSU9OCgkJCQkJCWlmIChpc3NldCgkY29udGVudFsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX01FRElBUlNTXVsnZGVzY3JpcHRpb24nXSkpCgkJCQkJCXsKCQkJCQkJCSRkZXNjcmlwdGlvbiA9ICR0aGlzLT5zYW5pdGl6ZSgkY29udGVudFsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX01FRElBUlNTXVsnZGVzY3JpcHRpb24nXVswXVsnZGF0YSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCQkJCQl9CgkJCQkJCWVsc2VpZiAoaXNzZXQoJGdyb3VwWydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfTUVESUFSU1NdWydkZXNjcmlwdGlvbiddKSkKCQkJCQkJewoJCQkJCQkJJGRlc2NyaXB0aW9uID0gJHRoaXMtPnNhbml0aXplKCRncm91cFsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX01FRElBUlNTXVsnZGVzY3JpcHRpb24nXVswXVsnZGF0YSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCQkJCQl9CgkJCQkJCWVsc2UKCQkJCQkJewoJCQkJCQkJJGRlc2NyaXB0aW9uID0gJGRlc2NyaXB0aW9uX3BhcmVudDsKCQkJCQkJfQoKCQkJCQkJLy8gSEFTSEVTCgkJCQkJCWlmIChpc3NldCgkY29udGVudFsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX01FRElBUlNTXVsnaGFzaCddKSkKCQkJCQkJewoJCQkJCQkJZm9yZWFjaCAoJGNvbnRlbnRbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9NRURJQVJTU11bJ2hhc2gnXSBhcyAkaGFzaCkKCQkJCQkJCXsKCQkJCQkJCQkkdmFsdWUgPSBudWxsOwoJCQkJCQkJCSRhbGdvID0gbnVsbDsKCQkJCQkJCQlpZiAoaXNzZXQoJGhhc2hbJ2RhdGEnXSkpCgkJCQkJCQkJewoJCQkJCQkJCQkkdmFsdWUgPSAkdGhpcy0+c2FuaXRpemUoJGhhc2hbJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJCQkJCQl9CgkJCQkJCQkJaWYgKGlzc2V0KCRoYXNoWydhdHRyaWJzJ11bJyddWydhbGdvJ10pKQoJCQkJCQkJCXsKCQkJCQkJCQkJJGFsZ28gPSAkdGhpcy0+c2FuaXRpemUoJGhhc2hbJ2F0dHJpYnMnXVsnJ11bJ2FsZ28nXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJCQkJCQl9CgkJCQkJCQkJZWxzZQoJCQkJCQkJCXsKCQkJCQkJCQkJJGFsZ28gPSAnbWQ1JzsKCQkJCQkJCQl9CgkJCQkJCQkJJGhhc2hlc1tdID0gJGFsZ28uJzonLiR2YWx1ZTsKCQkJCQkJCX0KCQkJCQkJCWlmIChpc19hcnJheSgkaGFzaGVzKSkKCQkJCQkJCXsKCQkJCQkJCQkkaGFzaGVzID0gYXJyYXlfdmFsdWVzKFNpbXBsZVBpZV9NaXNjOjphcnJheV91bmlxdWUoJGhhc2hlcykpOwoJCQkJCQkJfQoJCQkJCQl9CgkJCQkJCWVsc2VpZiAoaXNzZXQoJGdyb3VwWydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfTUVESUFSU1NdWydoYXNoJ10pKQoJCQkJCQl7CgkJCQkJCQlmb3JlYWNoICgkZ3JvdXBbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9NRURJQVJTU11bJ2hhc2gnXSBhcyAkaGFzaCkKCQkJCQkJCXsKCQkJCQkJCQkkdmFsdWUgPSBudWxsOwoJCQkJCQkJCSRhbGdvID0gbnVsbDsKCQkJCQkJCQlpZiAoaXNzZXQoJGhhc2hbJ2RhdGEnXSkpCgkJCQkJCQkJewoJCQkJCQkJCQkkdmFsdWUgPSAkdGhpcy0+c2FuaXRpemUoJGhhc2hbJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJCQkJCQl9CgkJCQkJCQkJaWYgKGlzc2V0KCRoYXNoWydhdHRyaWJzJ11bJyddWydhbGdvJ10pKQoJCQkJCQkJCXsKCQkJCQkJCQkJJGFsZ28gPSAkdGhpcy0+c2FuaXRpemUoJGhhc2hbJ2F0dHJpYnMnXVsnJ11bJ2FsZ28nXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJCQkJCQl9CgkJCQkJCQkJZWxzZQoJCQkJCQkJCXsKCQkJCQkJCQkJJGFsZ28gPSAnbWQ1JzsKCQkJCQkJCQl9CgkJCQkJCQkJJGhhc2hlc1tdID0gJGFsZ28uJzonLiR2YWx1ZTsKCQkJCQkJCX0KCQkJCQkJCWlmIChpc19hcnJheSgkaGFzaGVzKSkKCQkJCQkJCXsKCQkJCQkJCQkkaGFzaGVzID0gYXJyYXlfdmFsdWVzKFNpbXBsZVBpZV9NaXNjOjphcnJheV91bmlxdWUoJGhhc2hlcykpOwoJCQkJCQkJfQoJCQkJCQl9CgkJCQkJCWVsc2UKCQkJCQkJewoJCQkJCQkJJGhhc2hlcyA9ICRoYXNoZXNfcGFyZW50OwoJCQkJCQl9CgoJCQkJCQkvLyBLRVlXT1JEUwoJCQkJCQlpZiAoaXNzZXQoJGNvbnRlbnRbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9NRURJQVJTU11bJ2tleXdvcmRzJ10pKQoJCQkJCQl7CgkJCQkJCQlpZiAoaXNzZXQoJGNvbnRlbnRbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9NRURJQVJTU11bJ2tleXdvcmRzJ11bMF1bJ2RhdGEnXSkpCgkJCQkJCQl7CgkJCQkJCQkJJHRlbXAgPSBleHBsb2RlKCcsJywgJHRoaXMtPnNhbml0aXplKCRjb250ZW50WydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfTUVESUFSU1NdWydrZXl3b3JkcyddWzBdWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCkpOwoJCQkJCQkJCWZvcmVhY2ggKCR0ZW1wIGFzICR3b3JkKQoJCQkJCQkJCXsKCQkJCQkJCQkJJGtleXdvcmRzW10gPSB0cmltKCR3b3JkKTsKCQkJCQkJCQl9CgkJCQkJCQkJdW5zZXQoJHRlbXApOwoJCQkJCQkJfQoJCQkJCQkJaWYgKGlzX2FycmF5KCRrZXl3b3JkcykpCgkJCQkJCQl7CgkJCQkJCQkJJGtleXdvcmRzID0gYXJyYXlfdmFsdWVzKFNpbXBsZVBpZV9NaXNjOjphcnJheV91bmlxdWUoJGtleXdvcmRzKSk7CgkJCQkJCQl9CgkJCQkJCX0KCQkJCQkJZWxzZWlmIChpc3NldCgkZ3JvdXBbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9NRURJQVJTU11bJ2tleXdvcmRzJ10pKQoJCQkJCQl7CgkJCQkJCQlpZiAoaXNzZXQoJGdyb3VwWydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfTUVESUFSU1NdWydrZXl3b3JkcyddWzBdWydkYXRhJ10pKQoJCQkJCQkJewoJCQkJCQkJCSR0ZW1wID0gZXhwbG9kZSgnLCcsICR0aGlzLT5zYW5pdGl6ZSgkZ3JvdXBbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9NRURJQVJTU11bJ2tleXdvcmRzJ11bMF1bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKSk7CgkJCQkJCQkJZm9yZWFjaCAoJHRlbXAgYXMgJHdvcmQpCgkJCQkJCQkJewoJCQkJCQkJCQkka2V5d29yZHNbXSA9IHRyaW0oJHdvcmQpOwoJCQkJCQkJCX0KCQkJCQkJCQl1bnNldCgkdGVtcCk7CgkJCQkJCQl9CgkJCQkJCQlpZiAoaXNfYXJyYXkoJGtleXdvcmRzKSkKCQkJCQkJCXsKCQkJCQkJCQkka2V5d29yZHMgPSBhcnJheV92YWx1ZXMoU2ltcGxlUGllX01pc2M6OmFycmF5X3VuaXF1ZSgka2V5d29yZHMpKTsKCQkJCQkJCX0KCQkJCQkJfQoJCQkJCQllbHNlCgkJCQkJCXsKCQkJCQkJCSRrZXl3b3JkcyA9ICRrZXl3b3Jkc19wYXJlbnQ7CgkJCQkJCX0KCgkJCQkJCS8vIFBMQVlFUgoJCQkJCQlpZiAoaXNzZXQoJGNvbnRlbnRbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9NRURJQVJTU11bJ3BsYXllciddKSkKCQkJCQkJewoJCQkJCQkJJHBsYXllciA9ICR0aGlzLT5zYW5pdGl6ZSgkY29udGVudFsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX01FRElBUlNTXVsncGxheWVyJ11bMF1bJ2F0dHJpYnMnXVsnJ11bJ3VybCddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX0lSSSk7CgkJCQkJCX0KCQkJCQkJZWxzZWlmIChpc3NldCgkZ3JvdXBbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9NRURJQVJTU11bJ3BsYXllciddKSkKCQkJCQkJewoJCQkJCQkJJHBsYXllciA9ICR0aGlzLT5zYW5pdGl6ZSgkZ3JvdXBbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9NRURJQVJTU11bJ3BsYXllciddWzBdWydhdHRyaWJzJ11bJyddWyd1cmwnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9JUkkpOwoJCQkJCQl9CgkJCQkJCWVsc2UKCQkJCQkJewoJCQkJCQkJJHBsYXllciA9ICRwbGF5ZXJfcGFyZW50OwoJCQkJCQl9CgoJCQkJCQkvLyBSQVRJTkdTCgkJCQkJCWlmIChpc3NldCgkY29udGVudFsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX01FRElBUlNTXVsncmF0aW5nJ10pKQoJCQkJCQl7CgkJCQkJCQlmb3JlYWNoICgkY29udGVudFsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX01FRElBUlNTXVsncmF0aW5nJ10gYXMgJHJhdGluZykKCQkJCQkJCXsKCQkJCQkJCQkkcmF0aW5nX3NjaGVtZSA9IG51bGw7CgkJCQkJCQkJJHJhdGluZ192YWx1ZSA9IG51bGw7CgkJCQkJCQkJaWYgKGlzc2V0KCRyYXRpbmdbJ2F0dHJpYnMnXVsnJ11bJ3NjaGVtZSddKSkKCQkJCQkJCQl7CgkJCQkJCQkJCSRyYXRpbmdfc2NoZW1lID0gJHRoaXMtPnNhbml0aXplKCRyYXRpbmdbJ2F0dHJpYnMnXVsnJ11bJ3NjaGVtZSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCQkJCQkJCX0KCQkJCQkJCQllbHNlCgkJCQkJCQkJewoJCQkJCQkJCQkkcmF0aW5nX3NjaGVtZSA9ICd1cm46c2ltcGxlJzsKCQkJCQkJCQl9CgkJCQkJCQkJaWYgKGlzc2V0KCRyYXRpbmdbJ2RhdGEnXSkpCgkJCQkJCQkJewoJCQkJCQkJCQkkcmF0aW5nX3ZhbHVlID0gJHRoaXMtPnNhbml0aXplKCRyYXRpbmdbJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJCQkJCQl9CgkJCQkJCQkJJHJhdGluZ3NbXSA9JiBuZXcgJHRoaXMtPmZlZWQtPnJhdGluZ19jbGFzcygkcmF0aW5nX3NjaGVtZSwgJHJhdGluZ192YWx1ZSk7CgkJCQkJCQl9CgkJCQkJCQlpZiAoaXNfYXJyYXkoJHJhdGluZ3MpKQoJCQkJCQkJewoJCQkJCQkJCSRyYXRpbmdzID0gYXJyYXlfdmFsdWVzKFNpbXBsZVBpZV9NaXNjOjphcnJheV91bmlxdWUoJHJhdGluZ3MpKTsKCQkJCQkJCX0KCQkJCQkJfQoJCQkJCQllbHNlaWYgKGlzc2V0KCRncm91cFsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX01FRElBUlNTXVsncmF0aW5nJ10pKQoJCQkJCQl7CgkJCQkJCQlmb3JlYWNoICgkZ3JvdXBbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9NRURJQVJTU11bJ3JhdGluZyddIGFzICRyYXRpbmcpCgkJCQkJCQl7CgkJCQkJCQkJJHJhdGluZ19zY2hlbWUgPSBudWxsOwoJCQkJCQkJCSRyYXRpbmdfdmFsdWUgPSBudWxsOwoJCQkJCQkJCWlmIChpc3NldCgkcmF0aW5nWydhdHRyaWJzJ11bJyddWydzY2hlbWUnXSkpCgkJCQkJCQkJewoJCQkJCQkJCQkkcmF0aW5nX3NjaGVtZSA9ICR0aGlzLT5zYW5pdGl6ZSgkcmF0aW5nWydhdHRyaWJzJ11bJyddWydzY2hlbWUnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJCQkJCQl9CgkJCQkJCQkJZWxzZQoJCQkJCQkJCXsKCQkJCQkJCQkJJHJhdGluZ19zY2hlbWUgPSAndXJuOnNpbXBsZSc7CgkJCQkJCQkJfQoJCQkJCQkJCWlmIChpc3NldCgkcmF0aW5nWydkYXRhJ10pKQoJCQkJCQkJCXsKCQkJCQkJCQkJJHJhdGluZ192YWx1ZSA9ICR0aGlzLT5zYW5pdGl6ZSgkcmF0aW5nWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCQkJCQkJfQoJCQkJCQkJCSRyYXRpbmdzW10gPSYgbmV3ICR0aGlzLT5mZWVkLT5yYXRpbmdfY2xhc3MoJHJhdGluZ19zY2hlbWUsICRyYXRpbmdfdmFsdWUpOwoJCQkJCQkJfQoJCQkJCQkJaWYgKGlzX2FycmF5KCRyYXRpbmdzKSkKCQkJCQkJCXsKCQkJCQkJCQkkcmF0aW5ncyA9IGFycmF5X3ZhbHVlcyhTaW1wbGVQaWVfTWlzYzo6YXJyYXlfdW5pcXVlKCRyYXRpbmdzKSk7CgkJCQkJCQl9CgkJCQkJCX0KCQkJCQkJZWxzZQoJCQkJCQl7CgkJCQkJCQkkcmF0aW5ncyA9ICRyYXRpbmdzX3BhcmVudDsKCQkJCQkJfQoKCQkJCQkJLy8gUkVTVFJJQ1RJT05TCgkJCQkJCWlmIChpc3NldCgkY29udGVudFsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX01FRElBUlNTXVsncmVzdHJpY3Rpb24nXSkpCgkJCQkJCXsKCQkJCQkJCWZvcmVhY2ggKCRjb250ZW50WydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfTUVESUFSU1NdWydyZXN0cmljdGlvbiddIGFzICRyZXN0cmljdGlvbikKCQkJCQkJCXsKCQkJCQkJCQkkcmVzdHJpY3Rpb25fcmVsYXRpb25zaGlwID0gbnVsbDsKCQkJCQkJCQkkcmVzdHJpY3Rpb25fdHlwZSA9IG51bGw7CgkJCQkJCQkJJHJlc3RyaWN0aW9uX3ZhbHVlID0gbnVsbDsKCQkJCQkJCQlpZiAoaXNzZXQoJHJlc3RyaWN0aW9uWydhdHRyaWJzJ11bJyddWydyZWxhdGlvbnNoaXAnXSkpCgkJCQkJCQkJewoJCQkJCQkJCQkkcmVzdHJpY3Rpb25fcmVsYXRpb25zaGlwID0gJHRoaXMtPnNhbml0aXplKCRyZXN0cmljdGlvblsnYXR0cmlicyddWycnXVsncmVsYXRpb25zaGlwJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCQkJCQkJfQoJCQkJCQkJCWlmIChpc3NldCgkcmVzdHJpY3Rpb25bJ2F0dHJpYnMnXVsnJ11bJ3R5cGUnXSkpCgkJCQkJCQkJewoJCQkJCQkJCQkkcmVzdHJpY3Rpb25fdHlwZSA9ICR0aGlzLT5zYW5pdGl6ZSgkcmVzdHJpY3Rpb25bJ2F0dHJpYnMnXVsnJ11bJ3R5cGUnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJCQkJCQl9CgkJCQkJCQkJaWYgKGlzc2V0KCRyZXN0cmljdGlvblsnZGF0YSddKSkKCQkJCQkJCQl7CgkJCQkJCQkJCSRyZXN0cmljdGlvbl92YWx1ZSA9ICR0aGlzLT5zYW5pdGl6ZSgkcmVzdHJpY3Rpb25bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJCQkJCQl9CgkJCQkJCQkJJHJlc3RyaWN0aW9uc1tdID0mIG5ldyAkdGhpcy0+ZmVlZC0+cmVzdHJpY3Rpb25fY2xhc3MoJHJlc3RyaWN0aW9uX3JlbGF0aW9uc2hpcCwgJHJlc3RyaWN0aW9uX3R5cGUsICRyZXN0cmljdGlvbl92YWx1ZSk7CgkJCQkJCQl9CgkJCQkJCQlpZiAoaXNfYXJyYXkoJHJlc3RyaWN0aW9ucykpCgkJCQkJCQl7CgkJCQkJCQkJJHJlc3RyaWN0aW9ucyA9IGFycmF5X3ZhbHVlcyhTaW1wbGVQaWVfTWlzYzo6YXJyYXlfdW5pcXVlKCRyZXN0cmljdGlvbnMpKTsKCQkJCQkJCX0KCQkJCQkJfQoJCQkJCQllbHNlaWYgKGlzc2V0KCRncm91cFsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX01FRElBUlNTXVsncmVzdHJpY3Rpb24nXSkpCgkJCQkJCXsKCQkJCQkJCWZvcmVhY2ggKCRncm91cFsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX01FRElBUlNTXVsncmVzdHJpY3Rpb24nXSBhcyAkcmVzdHJpY3Rpb24pCgkJCQkJCQl7CgkJCQkJCQkJJHJlc3RyaWN0aW9uX3JlbGF0aW9uc2hpcCA9IG51bGw7CgkJCQkJCQkJJHJlc3RyaWN0aW9uX3R5cGUgPSBudWxsOwoJCQkJCQkJCSRyZXN0cmljdGlvbl92YWx1ZSA9IG51bGw7CgkJCQkJCQkJaWYgKGlzc2V0KCRyZXN0cmljdGlvblsnYXR0cmlicyddWycnXVsncmVsYXRpb25zaGlwJ10pKQoJCQkJCQkJCXsKCQkJCQkJCQkJJHJlc3RyaWN0aW9uX3JlbGF0aW9uc2hpcCA9ICR0aGlzLT5zYW5pdGl6ZSgkcmVzdHJpY3Rpb25bJ2F0dHJpYnMnXVsnJ11bJ3JlbGF0aW9uc2hpcCddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCQkJCQkJCX0KCQkJCQkJCQlpZiAoaXNzZXQoJHJlc3RyaWN0aW9uWydhdHRyaWJzJ11bJyddWyd0eXBlJ10pKQoJCQkJCQkJCXsKCQkJCQkJCQkJJHJlc3RyaWN0aW9uX3R5cGUgPSAkdGhpcy0+c2FuaXRpemUoJHJlc3RyaWN0aW9uWydhdHRyaWJzJ11bJyddWyd0eXBlJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCQkJCQkJfQoJCQkJCQkJCWlmIChpc3NldCgkcmVzdHJpY3Rpb25bJ2RhdGEnXSkpCgkJCQkJCQkJewoJCQkJCQkJCQkkcmVzdHJpY3Rpb25fdmFsdWUgPSAkdGhpcy0+c2FuaXRpemUoJHJlc3RyaWN0aW9uWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCQkJCQkJfQoJCQkJCQkJCSRyZXN0cmljdGlvbnNbXSA9JiBuZXcgJHRoaXMtPmZlZWQtPnJlc3RyaWN0aW9uX2NsYXNzKCRyZXN0cmljdGlvbl9yZWxhdGlvbnNoaXAsICRyZXN0cmljdGlvbl90eXBlLCAkcmVzdHJpY3Rpb25fdmFsdWUpOwoJCQkJCQkJfQoJCQkJCQkJaWYgKGlzX2FycmF5KCRyZXN0cmljdGlvbnMpKQoJCQkJCQkJewoJCQkJCQkJCSRyZXN0cmljdGlvbnMgPSBhcnJheV92YWx1ZXMoU2ltcGxlUGllX01pc2M6OmFycmF5X3VuaXF1ZSgkcmVzdHJpY3Rpb25zKSk7CgkJCQkJCQl9CgkJCQkJCX0KCQkJCQkJZWxzZQoJCQkJCQl7CgkJCQkJCQkkcmVzdHJpY3Rpb25zID0gJHJlc3RyaWN0aW9uc19wYXJlbnQ7CgkJCQkJCX0KCgkJCQkJCS8vIFRIVU1CTkFJTFMKCQkJCQkJaWYgKGlzc2V0KCRjb250ZW50WydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfTUVESUFSU1NdWyd0aHVtYm5haWwnXSkpCgkJCQkJCXsKCQkJCQkJCWZvcmVhY2ggKCRjb250ZW50WydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfTUVESUFSU1NdWyd0aHVtYm5haWwnXSBhcyAkdGh1bWJuYWlsKQoJCQkJCQkJewoJCQkJCQkJCSR0aHVtYm5haWxzW10gPSAkdGhpcy0+c2FuaXRpemUoJHRodW1ibmFpbFsnYXR0cmlicyddWycnXVsndXJsJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfSVJJKTsKCQkJCQkJCX0KCQkJCQkJCWlmIChpc19hcnJheSgkdGh1bWJuYWlscykpCgkJCQkJCQl7CgkJCQkJCQkJJHRodW1ibmFpbHMgPSBhcnJheV92YWx1ZXMoU2ltcGxlUGllX01pc2M6OmFycmF5X3VuaXF1ZSgkdGh1bWJuYWlscykpOwoJCQkJCQkJfQoJCQkJCQl9CgkJCQkJCWVsc2VpZiAoaXNzZXQoJGdyb3VwWydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfTUVESUFSU1NdWyd0aHVtYm5haWwnXSkpCgkJCQkJCXsKCQkJCQkJCWZvcmVhY2ggKCRncm91cFsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX01FRElBUlNTXVsndGh1bWJuYWlsJ10gYXMgJHRodW1ibmFpbCkKCQkJCQkJCXsKCQkJCQkJCQkkdGh1bWJuYWlsc1tdID0gJHRoaXMtPnNhbml0aXplKCR0aHVtYm5haWxbJ2F0dHJpYnMnXVsnJ11bJ3VybCddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX0lSSSk7CgkJCQkJCQl9CgkJCQkJCQlpZiAoaXNfYXJyYXkoJHRodW1ibmFpbHMpKQoJCQkJCQkJewoJCQkJCQkJCSR0aHVtYm5haWxzID0gYXJyYXlfdmFsdWVzKFNpbXBsZVBpZV9NaXNjOjphcnJheV91bmlxdWUoJHRodW1ibmFpbHMpKTsKCQkJCQkJCX0KCQkJCQkJfQoJCQkJCQllbHNlCgkJCQkJCXsKCQkJCQkJCSR0aHVtYm5haWxzID0gJHRodW1ibmFpbHNfcGFyZW50OwoJCQkJCQl9CgoJCQkJCQkvLyBUSVRMRVMKCQkJCQkJaWYgKGlzc2V0KCRjb250ZW50WydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfTUVESUFSU1NdWyd0aXRsZSddKSkKCQkJCQkJewoJCQkJCQkJJHRpdGxlID0gJHRoaXMtPnNhbml0aXplKCRjb250ZW50WydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfTUVESUFSU1NdWyd0aXRsZSddWzBdWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCQkJCX0KCQkJCQkJZWxzZWlmIChpc3NldCgkZ3JvdXBbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9NRURJQVJTU11bJ3RpdGxlJ10pKQoJCQkJCQl7CgkJCQkJCQkkdGl0bGUgPSAkdGhpcy0+c2FuaXRpemUoJGdyb3VwWydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfTUVESUFSU1NdWyd0aXRsZSddWzBdWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCQkJCX0KCQkJCQkJZWxzZQoJCQkJCQl7CgkJCQkJCQkkdGl0bGUgPSAkdGl0bGVfcGFyZW50OwoJCQkJCQl9CgoJCQkJCQkkdGhpcy0+ZGF0YVsnZW5jbG9zdXJlcyddW10gPSYgbmV3ICR0aGlzLT5mZWVkLT5lbmNsb3N1cmVfY2xhc3MoJHVybCwgJHR5cGUsICRsZW5ndGgsICR0aGlzLT5mZWVkLT5qYXZhc2NyaXB0LCAkYml0cmF0ZSwgJGNhcHRpb25zLCAkY2F0ZWdvcmllcywgJGNoYW5uZWxzLCAkY29weXJpZ2h0cywgJGNyZWRpdHMsICRkZXNjcmlwdGlvbiwgJGR1cmF0aW9uLCAkZXhwcmVzc2lvbiwgJGZyYW1lcmF0ZSwgJGhhc2hlcywgJGhlaWdodCwgJGtleXdvcmRzLCAkbGFuZywgJG1lZGl1bSwgJHBsYXllciwgJHJhdGluZ3MsICRyZXN0cmljdGlvbnMsICRzYW1wbGluZ3JhdGUsICR0aHVtYm5haWxzLCAkdGl0bGUsICR3aWR0aCk7CgkJCQkJfQoJCQkJfQoJCQl9CgoJCQkvLyBJZiB3ZSBoYXZlIHN0YW5kYWxvbmUgbWVkaWE6Y29udGVudCB0YWdzLCBsb29wIHRocm91Z2ggdGhlbS4KCQkJaWYgKGlzc2V0KCR0aGlzLT5kYXRhWydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfTUVESUFSU1NdWydjb250ZW50J10pKQoJCQl7CgkJCQlmb3JlYWNoICgoYXJyYXkpICR0aGlzLT5kYXRhWydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfTUVESUFSU1NdWydjb250ZW50J10gYXMgJGNvbnRlbnQpCgkJCQl7CgkJCQkJaWYgKGlzc2V0KCRjb250ZW50WydhdHRyaWJzJ11bJyddWyd1cmwnXSkpCgkJCQkJewoJCQkJCQkvLyBBdHRyaWJ1dGVzCgkJCQkJCSRiaXRyYXRlID0gbnVsbDsKCQkJCQkJJGNoYW5uZWxzID0gbnVsbDsKCQkJCQkJJGR1cmF0aW9uID0gbnVsbDsKCQkJCQkJJGV4cHJlc3Npb24gPSBudWxsOwoJCQkJCQkkZnJhbWVyYXRlID0gbnVsbDsKCQkJCQkJJGhlaWdodCA9IG51bGw7CgkJCQkJCSRqYXZhc2NyaXB0ID0gbnVsbDsKCQkJCQkJJGxhbmcgPSBudWxsOwoJCQkJCQkkbGVuZ3RoID0gbnVsbDsKCQkJCQkJJG1lZGl1bSA9IG51bGw7CgkJCQkJCSRzYW1wbGluZ3JhdGUgPSBudWxsOwoJCQkJCQkkdHlwZSA9IG51bGw7CgkJCQkJCSR1cmwgPSBudWxsOwoJCQkJCQkkd2lkdGggPSBudWxsOwoKCQkJCQkJLy8gRWxlbWVudHMKCQkJCQkJJGNhcHRpb25zID0gbnVsbDsKCQkJCQkJJGNhdGVnb3JpZXMgPSBudWxsOwoJCQkJCQkkY29weXJpZ2h0cyA9IG51bGw7CgkJCQkJCSRjcmVkaXRzID0gbnVsbDsKCQkJCQkJJGRlc2NyaXB0aW9uID0gbnVsbDsKCQkJCQkJJGhhc2hlcyA9IG51bGw7CgkJCQkJCSRrZXl3b3JkcyA9IG51bGw7CgkJCQkJCSRwbGF5ZXIgPSBudWxsOwoJCQkJCQkkcmF0aW5ncyA9IG51bGw7CgkJCQkJCSRyZXN0cmljdGlvbnMgPSBudWxsOwoJCQkJCQkkdGh1bWJuYWlscyA9IG51bGw7CgkJCQkJCSR0aXRsZSA9IG51bGw7CgoJCQkJCQkvLyBTdGFydCBjaGVja2luZyB0aGUgYXR0cmlidXRlcyBvZiBtZWRpYTpjb250ZW50CgkJCQkJCWlmIChpc3NldCgkY29udGVudFsnYXR0cmlicyddWycnXVsnYml0cmF0ZSddKSkKCQkJCQkJewoJCQkJCQkJJGJpdHJhdGUgPSAkdGhpcy0+c2FuaXRpemUoJGNvbnRlbnRbJ2F0dHJpYnMnXVsnJ11bJ2JpdHJhdGUnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJCQkJfQoJCQkJCQlpZiAoaXNzZXQoJGNvbnRlbnRbJ2F0dHJpYnMnXVsnJ11bJ2NoYW5uZWxzJ10pKQoJCQkJCQl7CgkJCQkJCQkkY2hhbm5lbHMgPSAkdGhpcy0+c2FuaXRpemUoJGNvbnRlbnRbJ2F0dHJpYnMnXVsnJ11bJ2NoYW5uZWxzJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCQkJCX0KCQkJCQkJaWYgKGlzc2V0KCRjb250ZW50WydhdHRyaWJzJ11bJyddWydkdXJhdGlvbiddKSkKCQkJCQkJewoJCQkJCQkJJGR1cmF0aW9uID0gJHRoaXMtPnNhbml0aXplKCRjb250ZW50WydhdHRyaWJzJ11bJyddWydkdXJhdGlvbiddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCQkJCQl9CgkJCQkJCWVsc2UKCQkJCQkJewoJCQkJCQkJJGR1cmF0aW9uID0gJGR1cmF0aW9uX3BhcmVudDsKCQkJCQkJfQoJCQkJCQlpZiAoaXNzZXQoJGNvbnRlbnRbJ2F0dHJpYnMnXVsnJ11bJ2V4cHJlc3Npb24nXSkpCgkJCQkJCXsKCQkJCQkJCSRleHByZXNzaW9uID0gJHRoaXMtPnNhbml0aXplKCRjb250ZW50WydhdHRyaWJzJ11bJyddWydleHByZXNzaW9uJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCQkJCX0KCQkJCQkJaWYgKGlzc2V0KCRjb250ZW50WydhdHRyaWJzJ11bJyddWydmcmFtZXJhdGUnXSkpCgkJCQkJCXsKCQkJCQkJCSRmcmFtZXJhdGUgPSAkdGhpcy0+c2FuaXRpemUoJGNvbnRlbnRbJ2F0dHJpYnMnXVsnJ11bJ2ZyYW1lcmF0ZSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCQkJCQl9CgkJCQkJCWlmIChpc3NldCgkY29udGVudFsnYXR0cmlicyddWycnXVsnaGVpZ2h0J10pKQoJCQkJCQl7CgkJCQkJCQkkaGVpZ2h0ID0gJHRoaXMtPnNhbml0aXplKCRjb250ZW50WydhdHRyaWJzJ11bJyddWydoZWlnaHQnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJCQkJfQoJCQkJCQlpZiAoaXNzZXQoJGNvbnRlbnRbJ2F0dHJpYnMnXVsnJ11bJ2xhbmcnXSkpCgkJCQkJCXsKCQkJCQkJCSRsYW5nID0gJHRoaXMtPnNhbml0aXplKCRjb250ZW50WydhdHRyaWJzJ11bJyddWydsYW5nJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCQkJCX0KCQkJCQkJaWYgKGlzc2V0KCRjb250ZW50WydhdHRyaWJzJ11bJyddWydmaWxlU2l6ZSddKSkKCQkJCQkJewoJCQkJCQkJJGxlbmd0aCA9IGNlaWwoJGNvbnRlbnRbJ2F0dHJpYnMnXVsnJ11bJ2ZpbGVTaXplJ10pOwoJCQkJCQl9CgkJCQkJCWlmIChpc3NldCgkY29udGVudFsnYXR0cmlicyddWycnXVsnbWVkaXVtJ10pKQoJCQkJCQl7CgkJCQkJCQkkbWVkaXVtID0gJHRoaXMtPnNhbml0aXplKCRjb250ZW50WydhdHRyaWJzJ11bJyddWydtZWRpdW0nXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJCQkJfQoJCQkJCQlpZiAoaXNzZXQoJGNvbnRlbnRbJ2F0dHJpYnMnXVsnJ11bJ3NhbXBsaW5ncmF0ZSddKSkKCQkJCQkJewoJCQkJCQkJJHNhbXBsaW5ncmF0ZSA9ICR0aGlzLT5zYW5pdGl6ZSgkY29udGVudFsnYXR0cmlicyddWycnXVsnc2FtcGxpbmdyYXRlJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCQkJCX0KCQkJCQkJaWYgKGlzc2V0KCRjb250ZW50WydhdHRyaWJzJ11bJyddWyd0eXBlJ10pKQoJCQkJCQl7CgkJCQkJCQkkdHlwZSA9ICR0aGlzLT5zYW5pdGl6ZSgkY29udGVudFsnYXR0cmlicyddWycnXVsndHlwZSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCQkJCQl9CgkJCQkJCWlmIChpc3NldCgkY29udGVudFsnYXR0cmlicyddWycnXVsnd2lkdGgnXSkpCgkJCQkJCXsKCQkJCQkJCSR3aWR0aCA9ICR0aGlzLT5zYW5pdGl6ZSgkY29udGVudFsnYXR0cmlicyddWycnXVsnd2lkdGgnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJCQkJfQoJCQkJCQkkdXJsID0gJHRoaXMtPnNhbml0aXplKCRjb250ZW50WydhdHRyaWJzJ11bJyddWyd1cmwnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9JUkkpOwoKCQkJCQkJLy8gQ2hlY2tpbmcgdGhlIG90aGVyIG9wdGlvbmFsIG1lZGlhOiBlbGVtZW50cy4gUHJpb3JpdHk6IG1lZGlhOmNvbnRlbnQsIG1lZGlhOmdyb3VwLCBpdGVtLCBjaGFubmVsCgoJCQkJCQkvLyBDQVBUSU9OUwoJCQkJCQlpZiAoaXNzZXQoJGNvbnRlbnRbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9NRURJQVJTU11bJ3RleHQnXSkpCgkJCQkJCXsKCQkJCQkJCWZvcmVhY2ggKCRjb250ZW50WydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfTUVESUFSU1NdWyd0ZXh0J10gYXMgJGNhcHRpb24pCgkJCQkJCQl7CgkJCQkJCQkJJGNhcHRpb25fdHlwZSA9IG51bGw7CgkJCQkJCQkJJGNhcHRpb25fbGFuZyA9IG51bGw7CgkJCQkJCQkJJGNhcHRpb25fc3RhcnRUaW1lID0gbnVsbDsKCQkJCQkJCQkkY2FwdGlvbl9lbmRUaW1lID0gbnVsbDsKCQkJCQkJCQkkY2FwdGlvbl90ZXh0ID0gbnVsbDsKCQkJCQkJCQlpZiAoaXNzZXQoJGNhcHRpb25bJ2F0dHJpYnMnXVsnJ11bJ3R5cGUnXSkpCgkJCQkJCQkJewoJCQkJCQkJCQkkY2FwdGlvbl90eXBlID0gJHRoaXMtPnNhbml0aXplKCRjYXB0aW9uWydhdHRyaWJzJ11bJyddWyd0eXBlJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCQkJCQkJfQoJCQkJCQkJCWlmIChpc3NldCgkY2FwdGlvblsnYXR0cmlicyddWycnXVsnbGFuZyddKSkKCQkJCQkJCQl7CgkJCQkJCQkJCSRjYXB0aW9uX2xhbmcgPSAkdGhpcy0+c2FuaXRpemUoJGNhcHRpb25bJ2F0dHJpYnMnXVsnJ11bJ2xhbmcnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJCQkJCQl9CgkJCQkJCQkJaWYgKGlzc2V0KCRjYXB0aW9uWydhdHRyaWJzJ11bJyddWydzdGFydCddKSkKCQkJCQkJCQl7CgkJCQkJCQkJCSRjYXB0aW9uX3N0YXJ0VGltZSA9ICR0aGlzLT5zYW5pdGl6ZSgkY2FwdGlvblsnYXR0cmlicyddWycnXVsnc3RhcnQnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJCQkJCQl9CgkJCQkJCQkJaWYgKGlzc2V0KCRjYXB0aW9uWydhdHRyaWJzJ11bJyddWydlbmQnXSkpCgkJCQkJCQkJewoJCQkJCQkJCQkkY2FwdGlvbl9lbmRUaW1lID0gJHRoaXMtPnNhbml0aXplKCRjYXB0aW9uWydhdHRyaWJzJ11bJyddWydlbmQnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJCQkJCQl9CgkJCQkJCQkJaWYgKGlzc2V0KCRjYXB0aW9uWydkYXRhJ10pKQoJCQkJCQkJCXsKCQkJCQkJCQkJJGNhcHRpb25fdGV4dCA9ICR0aGlzLT5zYW5pdGl6ZSgkY2FwdGlvblsnZGF0YSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCQkJCQkJCX0KCQkJCQkJCQkkY2FwdGlvbnNbXSA9JiBuZXcgJHRoaXMtPmZlZWQtPmNhcHRpb25fY2xhc3MoJGNhcHRpb25fdHlwZSwgJGNhcHRpb25fbGFuZywgJGNhcHRpb25fc3RhcnRUaW1lLCAkY2FwdGlvbl9lbmRUaW1lLCAkY2FwdGlvbl90ZXh0KTsKCQkJCQkJCX0KCQkJCQkJCWlmIChpc19hcnJheSgkY2FwdGlvbnMpKQoJCQkJCQkJewoJCQkJCQkJCSRjYXB0aW9ucyA9IGFycmF5X3ZhbHVlcyhTaW1wbGVQaWVfTWlzYzo6YXJyYXlfdW5pcXVlKCRjYXB0aW9ucykpOwoJCQkJCQkJfQoJCQkJCQl9CgkJCQkJCWVsc2UKCQkJCQkJewoJCQkJCQkJJGNhcHRpb25zID0gJGNhcHRpb25zX3BhcmVudDsKCQkJCQkJfQoKCQkJCQkJLy8gQ0FURUdPUklFUwoJCQkJCQlpZiAoaXNzZXQoJGNvbnRlbnRbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9NRURJQVJTU11bJ2NhdGVnb3J5J10pKQoJCQkJCQl7CgkJCQkJCQlmb3JlYWNoICgoYXJyYXkpICRjb250ZW50WydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfTUVESUFSU1NdWydjYXRlZ29yeSddIGFzICRjYXRlZ29yeSkKCQkJCQkJCXsKCQkJCQkJCQkkdGVybSA9IG51bGw7CgkJCQkJCQkJJHNjaGVtZSA9IG51bGw7CgkJCQkJCQkJJGxhYmVsID0gbnVsbDsKCQkJCQkJCQlpZiAoaXNzZXQoJGNhdGVnb3J5WydkYXRhJ10pKQoJCQkJCQkJCXsKCQkJCQkJCQkJJHRlcm0gPSAkdGhpcy0+c2FuaXRpemUoJGNhdGVnb3J5WydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCQkJCQkJfQoJCQkJCQkJCWlmIChpc3NldCgkY2F0ZWdvcnlbJ2F0dHJpYnMnXVsnJ11bJ3NjaGVtZSddKSkKCQkJCQkJCQl7CgkJCQkJCQkJCSRzY2hlbWUgPSAkdGhpcy0+c2FuaXRpemUoJGNhdGVnb3J5WydhdHRyaWJzJ11bJyddWydzY2hlbWUnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJCQkJCQl9CgkJCQkJCQkJZWxzZQoJCQkJCQkJCXsKCQkJCQkJCQkJJHNjaGVtZSA9ICdodHRwOi8vc2VhcmNoLnlhaG9vLmNvbS9tcnNzL2NhdGVnb3J5X3NjaGVtYSc7CgkJCQkJCQkJfQoJCQkJCQkJCWlmIChpc3NldCgkY2F0ZWdvcnlbJ2F0dHJpYnMnXVsnJ11bJ2xhYmVsJ10pKQoJCQkJCQkJCXsKCQkJCQkJCQkJJGxhYmVsID0gJHRoaXMtPnNhbml0aXplKCRjYXRlZ29yeVsnYXR0cmlicyddWycnXVsnbGFiZWwnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJCQkJCQl9CgkJCQkJCQkJJGNhdGVnb3JpZXNbXSA9JiBuZXcgJHRoaXMtPmZlZWQtPmNhdGVnb3J5X2NsYXNzKCR0ZXJtLCAkc2NoZW1lLCAkbGFiZWwpOwoJCQkJCQkJfQoJCQkJCQl9CgkJCQkJCWlmIChpc19hcnJheSgkY2F0ZWdvcmllcykgJiYgaXNfYXJyYXkoJGNhdGVnb3JpZXNfcGFyZW50KSkKCQkJCQkJewoJCQkJCQkJJGNhdGVnb3JpZXMgPSBhcnJheV92YWx1ZXMoU2ltcGxlUGllX01pc2M6OmFycmF5X3VuaXF1ZShhcnJheV9tZXJnZSgkY2F0ZWdvcmllcywgJGNhdGVnb3JpZXNfcGFyZW50KSkpOwoJCQkJCQl9CgkJCQkJCWVsc2VpZiAoaXNfYXJyYXkoJGNhdGVnb3JpZXMpKQoJCQkJCQl7CgkJCQkJCQkkY2F0ZWdvcmllcyA9IGFycmF5X3ZhbHVlcyhTaW1wbGVQaWVfTWlzYzo6YXJyYXlfdW5pcXVlKCRjYXRlZ29yaWVzKSk7CgkJCQkJCX0KCQkJCQkJZWxzZWlmIChpc19hcnJheSgkY2F0ZWdvcmllc19wYXJlbnQpKQoJCQkJCQl7CgkJCQkJCQkkY2F0ZWdvcmllcyA9IGFycmF5X3ZhbHVlcyhTaW1wbGVQaWVfTWlzYzo6YXJyYXlfdW5pcXVlKCRjYXRlZ29yaWVzX3BhcmVudCkpOwoJCQkJCQl9CgkJCQkJCWVsc2UKCQkJCQkJewoJCQkJCQkJJGNhdGVnb3JpZXMgPSBudWxsOwoJCQkJCQl9CgoJCQkJCQkvLyBDT1BZUklHSFRTCgkJCQkJCWlmIChpc3NldCgkY29udGVudFsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX01FRElBUlNTXVsnY29weXJpZ2h0J10pKQoJCQkJCQl7CgkJCQkJCQkkY29weXJpZ2h0X3VybCA9IG51bGw7CgkJCQkJCQkkY29weXJpZ2h0X2xhYmVsID0gbnVsbDsKCQkJCQkJCWlmIChpc3NldCgkY29udGVudFsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX01FRElBUlNTXVsnY29weXJpZ2h0J11bMF1bJ2F0dHJpYnMnXVsnJ11bJ3VybCddKSkKCQkJCQkJCXsKCQkJCQkJCQkkY29weXJpZ2h0X3VybCA9ICR0aGlzLT5zYW5pdGl6ZSgkY29udGVudFsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX01FRElBUlNTXVsnY29weXJpZ2h0J11bMF1bJ2F0dHJpYnMnXVsnJ11bJ3VybCddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCQkJCQkJfQoJCQkJCQkJaWYgKGlzc2V0KCRjb250ZW50WydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfTUVESUFSU1NdWydjb3B5cmlnaHQnXVswXVsnZGF0YSddKSkKCQkJCQkJCXsKCQkJCQkJCQkkY29weXJpZ2h0X2xhYmVsID0gJHRoaXMtPnNhbml0aXplKCRjb250ZW50WydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfTUVESUFSU1NdWydjb3B5cmlnaHQnXVswXVsnZGF0YSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCQkJCQkJfQoJCQkJCQkJJGNvcHlyaWdodHMgPSYgbmV3ICR0aGlzLT5mZWVkLT5jb3B5cmlnaHRfY2xhc3MoJGNvcHlyaWdodF91cmwsICRjb3B5cmlnaHRfbGFiZWwpOwoJCQkJCQl9CgkJCQkJCWVsc2UKCQkJCQkJewoJCQkJCQkJJGNvcHlyaWdodHMgPSAkY29weXJpZ2h0c19wYXJlbnQ7CgkJCQkJCX0KCgkJCQkJCS8vIENSRURJVFMKCQkJCQkJaWYgKGlzc2V0KCRjb250ZW50WydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfTUVESUFSU1NdWydjcmVkaXQnXSkpCgkJCQkJCXsKCQkJCQkJCWZvcmVhY2ggKCRjb250ZW50WydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfTUVESUFSU1NdWydjcmVkaXQnXSBhcyAkY3JlZGl0KQoJCQkJCQkJewoJCQkJCQkJCSRjcmVkaXRfcm9sZSA9IG51bGw7CgkJCQkJCQkJJGNyZWRpdF9zY2hlbWUgPSBudWxsOwoJCQkJCQkJCSRjcmVkaXRfbmFtZSA9IG51bGw7CgkJCQkJCQkJaWYgKGlzc2V0KCRjcmVkaXRbJ2F0dHJpYnMnXVsnJ11bJ3JvbGUnXSkpCgkJCQkJCQkJewoJCQkJCQkJCQkkY3JlZGl0X3JvbGUgPSAkdGhpcy0+c2FuaXRpemUoJGNyZWRpdFsnYXR0cmlicyddWycnXVsncm9sZSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCQkJCQkJCX0KCQkJCQkJCQlpZiAoaXNzZXQoJGNyZWRpdFsnYXR0cmlicyddWycnXVsnc2NoZW1lJ10pKQoJCQkJCQkJCXsKCQkJCQkJCQkJJGNyZWRpdF9zY2hlbWUgPSAkdGhpcy0+c2FuaXRpemUoJGNyZWRpdFsnYXR0cmlicyddWycnXVsnc2NoZW1lJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCQkJCQkJfQoJCQkJCQkJCWVsc2UKCQkJCQkJCQl7CgkJCQkJCQkJCSRjcmVkaXRfc2NoZW1lID0gJ3VybjplYnUnOwoJCQkJCQkJCX0KCQkJCQkJCQlpZiAoaXNzZXQoJGNyZWRpdFsnZGF0YSddKSkKCQkJCQkJCQl7CgkJCQkJCQkJCSRjcmVkaXRfbmFtZSA9ICR0aGlzLT5zYW5pdGl6ZSgkY3JlZGl0WydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCQkJCQkJfQoJCQkJCQkJCSRjcmVkaXRzW10gPSYgbmV3ICR0aGlzLT5mZWVkLT5jcmVkaXRfY2xhc3MoJGNyZWRpdF9yb2xlLCAkY3JlZGl0X3NjaGVtZSwgJGNyZWRpdF9uYW1lKTsKCQkJCQkJCX0KCQkJCQkJCWlmIChpc19hcnJheSgkY3JlZGl0cykpCgkJCQkJCQl7CgkJCQkJCQkJJGNyZWRpdHMgPSBhcnJheV92YWx1ZXMoU2ltcGxlUGllX01pc2M6OmFycmF5X3VuaXF1ZSgkY3JlZGl0cykpOwoJCQkJCQkJfQoJCQkJCQl9CgkJCQkJCWVsc2UKCQkJCQkJewoJCQkJCQkJJGNyZWRpdHMgPSAkY3JlZGl0c19wYXJlbnQ7CgkJCQkJCX0KCgkJCQkJCS8vIERFU0NSSVBUSU9OCgkJCQkJCWlmIChpc3NldCgkY29udGVudFsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX01FRElBUlNTXVsnZGVzY3JpcHRpb24nXSkpCgkJCQkJCXsKCQkJCQkJCSRkZXNjcmlwdGlvbiA9ICR0aGlzLT5zYW5pdGl6ZSgkY29udGVudFsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX01FRElBUlNTXVsnZGVzY3JpcHRpb24nXVswXVsnZGF0YSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCQkJCQl9CgkJCQkJCWVsc2UKCQkJCQkJewoJCQkJCQkJJGRlc2NyaXB0aW9uID0gJGRlc2NyaXB0aW9uX3BhcmVudDsKCQkJCQkJfQoKCQkJCQkJLy8gSEFTSEVTCgkJCQkJCWlmIChpc3NldCgkY29udGVudFsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX01FRElBUlNTXVsnaGFzaCddKSkKCQkJCQkJewoJCQkJCQkJZm9yZWFjaCAoJGNvbnRlbnRbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9NRURJQVJTU11bJ2hhc2gnXSBhcyAkaGFzaCkKCQkJCQkJCXsKCQkJCQkJCQkkdmFsdWUgPSBudWxsOwoJCQkJCQkJCSRhbGdvID0gbnVsbDsKCQkJCQkJCQlpZiAoaXNzZXQoJGhhc2hbJ2RhdGEnXSkpCgkJCQkJCQkJewoJCQkJCQkJCQkkdmFsdWUgPSAkdGhpcy0+c2FuaXRpemUoJGhhc2hbJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJCQkJCQl9CgkJCQkJCQkJaWYgKGlzc2V0KCRoYXNoWydhdHRyaWJzJ11bJyddWydhbGdvJ10pKQoJCQkJCQkJCXsKCQkJCQkJCQkJJGFsZ28gPSAkdGhpcy0+c2FuaXRpemUoJGhhc2hbJ2F0dHJpYnMnXVsnJ11bJ2FsZ28nXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJCQkJCQl9CgkJCQkJCQkJZWxzZQoJCQkJCQkJCXsKCQkJCQkJCQkJJGFsZ28gPSAnbWQ1JzsKCQkJCQkJCQl9CgkJCQkJCQkJJGhhc2hlc1tdID0gJGFsZ28uJzonLiR2YWx1ZTsKCQkJCQkJCX0KCQkJCQkJCWlmIChpc19hcnJheSgkaGFzaGVzKSkKCQkJCQkJCXsKCQkJCQkJCQkkaGFzaGVzID0gYXJyYXlfdmFsdWVzKFNpbXBsZVBpZV9NaXNjOjphcnJheV91bmlxdWUoJGhhc2hlcykpOwoJCQkJCQkJfQoJCQkJCQl9CgkJCQkJCWVsc2UKCQkJCQkJewoJCQkJCQkJJGhhc2hlcyA9ICRoYXNoZXNfcGFyZW50OwoJCQkJCQl9CgoJCQkJCQkvLyBLRVlXT1JEUwoJCQkJCQlpZiAoaXNzZXQoJGNvbnRlbnRbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9NRURJQVJTU11bJ2tleXdvcmRzJ10pKQoJCQkJCQl7CgkJCQkJCQlpZiAoaXNzZXQoJGNvbnRlbnRbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9NRURJQVJTU11bJ2tleXdvcmRzJ11bMF1bJ2RhdGEnXSkpCgkJCQkJCQl7CgkJCQkJCQkJJHRlbXAgPSBleHBsb2RlKCcsJywgJHRoaXMtPnNhbml0aXplKCRjb250ZW50WydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfTUVESUFSU1NdWydrZXl3b3JkcyddWzBdWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCkpOwoJCQkJCQkJCWZvcmVhY2ggKCR0ZW1wIGFzICR3b3JkKQoJCQkJCQkJCXsKCQkJCQkJCQkJJGtleXdvcmRzW10gPSB0cmltKCR3b3JkKTsKCQkJCQkJCQl9CgkJCQkJCQkJdW5zZXQoJHRlbXApOwoJCQkJCQkJfQoJCQkJCQkJaWYgKGlzX2FycmF5KCRrZXl3b3JkcykpCgkJCQkJCQl7CgkJCQkJCQkJJGtleXdvcmRzID0gYXJyYXlfdmFsdWVzKFNpbXBsZVBpZV9NaXNjOjphcnJheV91bmlxdWUoJGtleXdvcmRzKSk7CgkJCQkJCQl9CgkJCQkJCX0KCQkJCQkJZWxzZQoJCQkJCQl7CgkJCQkJCQkka2V5d29yZHMgPSAka2V5d29yZHNfcGFyZW50OwoJCQkJCQl9CgoJCQkJCQkvLyBQTEFZRVIKCQkJCQkJaWYgKGlzc2V0KCRjb250ZW50WydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfTUVESUFSU1NdWydwbGF5ZXInXSkpCgkJCQkJCXsKCQkJCQkJCSRwbGF5ZXIgPSAkdGhpcy0+c2FuaXRpemUoJGNvbnRlbnRbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9NRURJQVJTU11bJ3BsYXllciddWzBdWydhdHRyaWJzJ11bJyddWyd1cmwnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9JUkkpOwoJCQkJCQl9CgkJCQkJCWVsc2UKCQkJCQkJewoJCQkJCQkJJHBsYXllciA9ICRwbGF5ZXJfcGFyZW50OwoJCQkJCQl9CgoJCQkJCQkvLyBSQVRJTkdTCgkJCQkJCWlmIChpc3NldCgkY29udGVudFsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX01FRElBUlNTXVsncmF0aW5nJ10pKQoJCQkJCQl7CgkJCQkJCQlmb3JlYWNoICgkY29udGVudFsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX01FRElBUlNTXVsncmF0aW5nJ10gYXMgJHJhdGluZykKCQkJCQkJCXsKCQkJCQkJCQkkcmF0aW5nX3NjaGVtZSA9IG51bGw7CgkJCQkJCQkJJHJhdGluZ192YWx1ZSA9IG51bGw7CgkJCQkJCQkJaWYgKGlzc2V0KCRyYXRpbmdbJ2F0dHJpYnMnXVsnJ11bJ3NjaGVtZSddKSkKCQkJCQkJCQl7CgkJCQkJCQkJCSRyYXRpbmdfc2NoZW1lID0gJHRoaXMtPnNhbml0aXplKCRyYXRpbmdbJ2F0dHJpYnMnXVsnJ11bJ3NjaGVtZSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCQkJCQkJCX0KCQkJCQkJCQllbHNlCgkJCQkJCQkJewoJCQkJCQkJCQkkcmF0aW5nX3NjaGVtZSA9ICd1cm46c2ltcGxlJzsKCQkJCQkJCQl9CgkJCQkJCQkJaWYgKGlzc2V0KCRyYXRpbmdbJ2RhdGEnXSkpCgkJCQkJCQkJewoJCQkJCQkJCQkkcmF0aW5nX3ZhbHVlID0gJHRoaXMtPnNhbml0aXplKCRyYXRpbmdbJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJCQkJCQl9CgkJCQkJCQkJJHJhdGluZ3NbXSA9JiBuZXcgJHRoaXMtPmZlZWQtPnJhdGluZ19jbGFzcygkcmF0aW5nX3NjaGVtZSwgJHJhdGluZ192YWx1ZSk7CgkJCQkJCQl9CgkJCQkJCQlpZiAoaXNfYXJyYXkoJHJhdGluZ3MpKQoJCQkJCQkJewoJCQkJCQkJCSRyYXRpbmdzID0gYXJyYXlfdmFsdWVzKFNpbXBsZVBpZV9NaXNjOjphcnJheV91bmlxdWUoJHJhdGluZ3MpKTsKCQkJCQkJCX0KCQkJCQkJfQoJCQkJCQllbHNlCgkJCQkJCXsKCQkJCQkJCSRyYXRpbmdzID0gJHJhdGluZ3NfcGFyZW50OwoJCQkJCQl9CgoJCQkJCQkvLyBSRVNUUklDVElPTlMKCQkJCQkJaWYgKGlzc2V0KCRjb250ZW50WydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfTUVESUFSU1NdWydyZXN0cmljdGlvbiddKSkKCQkJCQkJewoJCQkJCQkJZm9yZWFjaCAoJGNvbnRlbnRbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9NRURJQVJTU11bJ3Jlc3RyaWN0aW9uJ10gYXMgJHJlc3RyaWN0aW9uKQoJCQkJCQkJewoJCQkJCQkJCSRyZXN0cmljdGlvbl9yZWxhdGlvbnNoaXAgPSBudWxsOwoJCQkJCQkJCSRyZXN0cmljdGlvbl90eXBlID0gbnVsbDsKCQkJCQkJCQkkcmVzdHJpY3Rpb25fdmFsdWUgPSBudWxsOwoJCQkJCQkJCWlmIChpc3NldCgkcmVzdHJpY3Rpb25bJ2F0dHJpYnMnXVsnJ11bJ3JlbGF0aW9uc2hpcCddKSkKCQkJCQkJCQl7CgkJCQkJCQkJCSRyZXN0cmljdGlvbl9yZWxhdGlvbnNoaXAgPSAkdGhpcy0+c2FuaXRpemUoJHJlc3RyaWN0aW9uWydhdHRyaWJzJ11bJyddWydyZWxhdGlvbnNoaXAnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJCQkJCQl9CgkJCQkJCQkJaWYgKGlzc2V0KCRyZXN0cmljdGlvblsnYXR0cmlicyddWycnXVsndHlwZSddKSkKCQkJCQkJCQl7CgkJCQkJCQkJCSRyZXN0cmljdGlvbl90eXBlID0gJHRoaXMtPnNhbml0aXplKCRyZXN0cmljdGlvblsnYXR0cmlicyddWycnXVsndHlwZSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCQkJCQkJCX0KCQkJCQkJCQlpZiAoaXNzZXQoJHJlc3RyaWN0aW9uWydkYXRhJ10pKQoJCQkJCQkJCXsKCQkJCQkJCQkJJHJlc3RyaWN0aW9uX3ZhbHVlID0gJHRoaXMtPnNhbml0aXplKCRyZXN0cmljdGlvblsnZGF0YSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCQkJCQkJCX0KCQkJCQkJCQkkcmVzdHJpY3Rpb25zW10gPSYgbmV3ICR0aGlzLT5mZWVkLT5yZXN0cmljdGlvbl9jbGFzcygkcmVzdHJpY3Rpb25fcmVsYXRpb25zaGlwLCAkcmVzdHJpY3Rpb25fdHlwZSwgJHJlc3RyaWN0aW9uX3ZhbHVlKTsKCQkJCQkJCX0KCQkJCQkJCWlmIChpc19hcnJheSgkcmVzdHJpY3Rpb25zKSkKCQkJCQkJCXsKCQkJCQkJCQkkcmVzdHJpY3Rpb25zID0gYXJyYXlfdmFsdWVzKFNpbXBsZVBpZV9NaXNjOjphcnJheV91bmlxdWUoJHJlc3RyaWN0aW9ucykpOwoJCQkJCQkJfQoJCQkJCQl9CgkJCQkJCWVsc2UKCQkJCQkJewoJCQkJCQkJJHJlc3RyaWN0aW9ucyA9ICRyZXN0cmljdGlvbnNfcGFyZW50OwoJCQkJCQl9CgoJCQkJCQkvLyBUSFVNQk5BSUxTCgkJCQkJCWlmIChpc3NldCgkY29udGVudFsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX01FRElBUlNTXVsndGh1bWJuYWlsJ10pKQoJCQkJCQl7CgkJCQkJCQlmb3JlYWNoICgkY29udGVudFsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX01FRElBUlNTXVsndGh1bWJuYWlsJ10gYXMgJHRodW1ibmFpbCkKCQkJCQkJCXsKCQkJCQkJCQkkdGh1bWJuYWlsc1tdID0gJHRoaXMtPnNhbml0aXplKCR0aHVtYm5haWxbJ2F0dHJpYnMnXVsnJ11bJ3VybCddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX0lSSSk7CgkJCQkJCQl9CgkJCQkJCQlpZiAoaXNfYXJyYXkoJHRodW1ibmFpbHMpKQoJCQkJCQkJewoJCQkJCQkJCSR0aHVtYm5haWxzID0gYXJyYXlfdmFsdWVzKFNpbXBsZVBpZV9NaXNjOjphcnJheV91bmlxdWUoJHRodW1ibmFpbHMpKTsKCQkJCQkJCX0KCQkJCQkJfQoJCQkJCQllbHNlCgkJCQkJCXsKCQkJCQkJCSR0aHVtYm5haWxzID0gJHRodW1ibmFpbHNfcGFyZW50OwoJCQkJCQl9CgoJCQkJCQkvLyBUSVRMRVMKCQkJCQkJaWYgKGlzc2V0KCRjb250ZW50WydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfTUVESUFSU1NdWyd0aXRsZSddKSkKCQkJCQkJewoJCQkJCQkJJHRpdGxlID0gJHRoaXMtPnNhbml0aXplKCRjb250ZW50WydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfTUVESUFSU1NdWyd0aXRsZSddWzBdWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCQkJCX0KCQkJCQkJZWxzZQoJCQkJCQl7CgkJCQkJCQkkdGl0bGUgPSAkdGl0bGVfcGFyZW50OwoJCQkJCQl9CgoJCQkJCQkkdGhpcy0+ZGF0YVsnZW5jbG9zdXJlcyddW10gPSYgbmV3ICR0aGlzLT5mZWVkLT5lbmNsb3N1cmVfY2xhc3MoJHVybCwgJHR5cGUsICRsZW5ndGgsICR0aGlzLT5mZWVkLT5qYXZhc2NyaXB0LCAkYml0cmF0ZSwgJGNhcHRpb25zLCAkY2F0ZWdvcmllcywgJGNoYW5uZWxzLCAkY29weXJpZ2h0cywgJGNyZWRpdHMsICRkZXNjcmlwdGlvbiwgJGR1cmF0aW9uLCAkZXhwcmVzc2lvbiwgJGZyYW1lcmF0ZSwgJGhhc2hlcywgJGhlaWdodCwgJGtleXdvcmRzLCAkbGFuZywgJG1lZGl1bSwgJHBsYXllciwgJHJhdGluZ3MsICRyZXN0cmljdGlvbnMsICRzYW1wbGluZ3JhdGUsICR0aHVtYm5haWxzLCAkdGl0bGUsICR3aWR0aCk7CgkJCQkJfQoJCQkJfQoJCQl9CgoJCQlmb3JlYWNoICgoYXJyYXkpICR0aGlzLT5nZXRfaXRlbV90YWdzKFNJTVBMRVBJRV9OQU1FU1BBQ0VfQVRPTV8xMCwgJ2xpbmsnKSBhcyAkbGluaykKCQkJewoJCQkJaWYgKGlzc2V0KCRsaW5rWydhdHRyaWJzJ11bJyddWydocmVmJ10pICYmICFlbXB0eSgkbGlua1snYXR0cmlicyddWycnXVsncmVsJ10pICYmICRsaW5rWydhdHRyaWJzJ11bJyddWydyZWwnXSA9PSAnZW5jbG9zdXJlJykKCQkJCXsKCQkJCQkvLyBBdHRyaWJ1dGVzCgkJCQkJJGJpdHJhdGUgPSBudWxsOwoJCQkJCSRjaGFubmVscyA9IG51bGw7CgkJCQkJJGR1cmF0aW9uID0gbnVsbDsKCQkJCQkkZXhwcmVzc2lvbiA9IG51bGw7CgkJCQkJJGZyYW1lcmF0ZSA9IG51bGw7CgkJCQkJJGhlaWdodCA9IG51bGw7CgkJCQkJJGphdmFzY3JpcHQgPSBudWxsOwoJCQkJCSRsYW5nID0gbnVsbDsKCQkJCQkkbGVuZ3RoID0gbnVsbDsKCQkJCQkkbWVkaXVtID0gbnVsbDsKCQkJCQkkc2FtcGxpbmdyYXRlID0gbnVsbDsKCQkJCQkkdHlwZSA9IG51bGw7CgkJCQkJJHVybCA9IG51bGw7CgkJCQkJJHdpZHRoID0gbnVsbDsKCgkJCQkJJHVybCA9ICR0aGlzLT5zYW5pdGl6ZSgkbGlua1snYXR0cmlicyddWycnXVsnaHJlZiddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX0lSSSwgJHRoaXMtPmdldF9iYXNlKCRsaW5rKSk7CgkJCQkJaWYgKGlzc2V0KCRsaW5rWydhdHRyaWJzJ11bJyddWyd0eXBlJ10pKQoJCQkJCXsKCQkJCQkJJHR5cGUgPSAkdGhpcy0+c2FuaXRpemUoJGxpbmtbJ2F0dHJpYnMnXVsnJ11bJ3R5cGUnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJCQl9CgkJCQkJaWYgKGlzc2V0KCRsaW5rWydhdHRyaWJzJ11bJyddWydsZW5ndGgnXSkpCgkJCQkJewoJCQkJCQkkbGVuZ3RoID0gY2VpbCgkbGlua1snYXR0cmlicyddWycnXVsnbGVuZ3RoJ10pOwoJCQkJCX0KCgkJCQkJLy8gU2luY2Ugd2UgZG9uJ3QgaGF2ZSBncm91cCBvciBjb250ZW50IGZvciB0aGVzZSwgd2UnbGwganVzdCBwYXNzIHRoZSAnKl9wYXJlbnQnIHZhcmlhYmxlcyBkaXJlY3RseSB0byB0aGUgY29uc3RydWN0b3IKCQkJCQkkdGhpcy0+ZGF0YVsnZW5jbG9zdXJlcyddW10gPSYgbmV3ICR0aGlzLT5mZWVkLT5lbmNsb3N1cmVfY2xhc3MoJHVybCwgJHR5cGUsICRsZW5ndGgsICR0aGlzLT5mZWVkLT5qYXZhc2NyaXB0LCAkYml0cmF0ZSwgJGNhcHRpb25zX3BhcmVudCwgJGNhdGVnb3JpZXNfcGFyZW50LCAkY2hhbm5lbHMsICRjb3B5cmlnaHRzX3BhcmVudCwgJGNyZWRpdHNfcGFyZW50LCAkZGVzY3JpcHRpb25fcGFyZW50LCAkZHVyYXRpb25fcGFyZW50LCAkZXhwcmVzc2lvbiwgJGZyYW1lcmF0ZSwgJGhhc2hlc19wYXJlbnQsICRoZWlnaHQsICRrZXl3b3Jkc19wYXJlbnQsICRsYW5nLCAkbWVkaXVtLCAkcGxheWVyX3BhcmVudCwgJHJhdGluZ3NfcGFyZW50LCAkcmVzdHJpY3Rpb25zX3BhcmVudCwgJHNhbXBsaW5ncmF0ZSwgJHRodW1ibmFpbHNfcGFyZW50LCAkdGl0bGVfcGFyZW50LCAkd2lkdGgpOwoJCQkJfQoJCQl9CgoJCQlmb3JlYWNoICgoYXJyYXkpICR0aGlzLT5nZXRfaXRlbV90YWdzKFNJTVBMRVBJRV9OQU1FU1BBQ0VfQVRPTV8wMywgJ2xpbmsnKSBhcyAkbGluaykKCQkJewoJCQkJaWYgKGlzc2V0KCRsaW5rWydhdHRyaWJzJ11bJyddWydocmVmJ10pICYmICFlbXB0eSgkbGlua1snYXR0cmlicyddWycnXVsncmVsJ10pICYmICRsaW5rWydhdHRyaWJzJ11bJyddWydyZWwnXSA9PSAnZW5jbG9zdXJlJykKCQkJCXsKCQkJCQkvLyBBdHRyaWJ1dGVzCgkJCQkJJGJpdHJhdGUgPSBudWxsOwoJCQkJCSRjaGFubmVscyA9IG51bGw7CgkJCQkJJGR1cmF0aW9uID0gbnVsbDsKCQkJCQkkZXhwcmVzc2lvbiA9IG51bGw7CgkJCQkJJGZyYW1lcmF0ZSA9IG51bGw7CgkJCQkJJGhlaWdodCA9IG51bGw7CgkJCQkJJGphdmFzY3JpcHQgPSBudWxsOwoJCQkJCSRsYW5nID0gbnVsbDsKCQkJCQkkbGVuZ3RoID0gbnVsbDsKCQkJCQkkbWVkaXVtID0gbnVsbDsKCQkJCQkkc2FtcGxpbmdyYXRlID0gbnVsbDsKCQkJCQkkdHlwZSA9IG51bGw7CgkJCQkJJHVybCA9IG51bGw7CgkJCQkJJHdpZHRoID0gbnVsbDsKCgkJCQkJJHVybCA9ICR0aGlzLT5zYW5pdGl6ZSgkbGlua1snYXR0cmlicyddWycnXVsnaHJlZiddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX0lSSSwgJHRoaXMtPmdldF9iYXNlKCRsaW5rKSk7CgkJCQkJaWYgKGlzc2V0KCRsaW5rWydhdHRyaWJzJ11bJyddWyd0eXBlJ10pKQoJCQkJCXsKCQkJCQkJJHR5cGUgPSAkdGhpcy0+c2FuaXRpemUoJGxpbmtbJ2F0dHJpYnMnXVsnJ11bJ3R5cGUnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJCQl9CgkJCQkJaWYgKGlzc2V0KCRsaW5rWydhdHRyaWJzJ11bJyddWydsZW5ndGgnXSkpCgkJCQkJewoJCQkJCQkkbGVuZ3RoID0gY2VpbCgkbGlua1snYXR0cmlicyddWycnXVsnbGVuZ3RoJ10pOwoJCQkJCX0KCgkJCQkJLy8gU2luY2Ugd2UgZG9uJ3QgaGF2ZSBncm91cCBvciBjb250ZW50IGZvciB0aGVzZSwgd2UnbGwganVzdCBwYXNzIHRoZSAnKl9wYXJlbnQnIHZhcmlhYmxlcyBkaXJlY3RseSB0byB0aGUgY29uc3RydWN0b3IKCQkJCQkkdGhpcy0+ZGF0YVsnZW5jbG9zdXJlcyddW10gPSYgbmV3ICR0aGlzLT5mZWVkLT5lbmNsb3N1cmVfY2xhc3MoJHVybCwgJHR5cGUsICRsZW5ndGgsICR0aGlzLT5mZWVkLT5qYXZhc2NyaXB0LCAkYml0cmF0ZSwgJGNhcHRpb25zX3BhcmVudCwgJGNhdGVnb3JpZXNfcGFyZW50LCAkY2hhbm5lbHMsICRjb3B5cmlnaHRzX3BhcmVudCwgJGNyZWRpdHNfcGFyZW50LCAkZGVzY3JpcHRpb25fcGFyZW50LCAkZHVyYXRpb25fcGFyZW50LCAkZXhwcmVzc2lvbiwgJGZyYW1lcmF0ZSwgJGhhc2hlc19wYXJlbnQsICRoZWlnaHQsICRrZXl3b3Jkc19wYXJlbnQsICRsYW5nLCAkbWVkaXVtLCAkcGxheWVyX3BhcmVudCwgJHJhdGluZ3NfcGFyZW50LCAkcmVzdHJpY3Rpb25zX3BhcmVudCwgJHNhbXBsaW5ncmF0ZSwgJHRodW1ibmFpbHNfcGFyZW50LCAkdGl0bGVfcGFyZW50LCAkd2lkdGgpOwoJCQkJfQoJCQl9CgoJCQlpZiAoJGVuY2xvc3VyZSA9ICR0aGlzLT5nZXRfaXRlbV90YWdzKCcnLCAnZW5jbG9zdXJlJykpCgkJCXsKCQkJCWlmIChpc3NldCgkZW5jbG9zdXJlWzBdWydhdHRyaWJzJ11bJyddWyd1cmwnXSkpCgkJCQl7CgkJCQkJLy8gQXR0cmlidXRlcwoJCQkJCSRiaXRyYXRlID0gbnVsbDsKCQkJCQkkY2hhbm5lbHMgPSBudWxsOwoJCQkJCSRkdXJhdGlvbiA9IG51bGw7CgkJCQkJJGV4cHJlc3Npb24gPSBudWxsOwoJCQkJCSRmcmFtZXJhdGUgPSBudWxsOwoJCQkJCSRoZWlnaHQgPSBudWxsOwoJCQkJCSRqYXZhc2NyaXB0ID0gbnVsbDsKCQkJCQkkbGFuZyA9IG51bGw7CgkJCQkJJGxlbmd0aCA9IG51bGw7CgkJCQkJJG1lZGl1bSA9IG51bGw7CgkJCQkJJHNhbXBsaW5ncmF0ZSA9IG51bGw7CgkJCQkJJHR5cGUgPSBudWxsOwoJCQkJCSR1cmwgPSBudWxsOwoJCQkJCSR3aWR0aCA9IG51bGw7CgoJCQkJCSR1cmwgPSAkdGhpcy0+c2FuaXRpemUoJGVuY2xvc3VyZVswXVsnYXR0cmlicyddWycnXVsndXJsJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfSVJJLCAkdGhpcy0+Z2V0X2Jhc2UoJGVuY2xvc3VyZVswXSkpOwoJCQkJCWlmIChpc3NldCgkZW5jbG9zdXJlWzBdWydhdHRyaWJzJ11bJyddWyd0eXBlJ10pKQoJCQkJCXsKCQkJCQkJJHR5cGUgPSAkdGhpcy0+c2FuaXRpemUoJGVuY2xvc3VyZVswXVsnYXR0cmlicyddWycnXVsndHlwZSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCQkJCX0KCQkJCQlpZiAoaXNzZXQoJGVuY2xvc3VyZVswXVsnYXR0cmlicyddWycnXVsnbGVuZ3RoJ10pKQoJCQkJCXsKCQkJCQkJJGxlbmd0aCA9IGNlaWwoJGVuY2xvc3VyZVswXVsnYXR0cmlicyddWycnXVsnbGVuZ3RoJ10pOwoJCQkJCX0KCgkJCQkJLy8gU2luY2Ugd2UgZG9uJ3QgaGF2ZSBncm91cCBvciBjb250ZW50IGZvciB0aGVzZSwgd2UnbGwganVzdCBwYXNzIHRoZSAnKl9wYXJlbnQnIHZhcmlhYmxlcyBkaXJlY3RseSB0byB0aGUgY29uc3RydWN0b3IKCQkJCQkkdGhpcy0+ZGF0YVsnZW5jbG9zdXJlcyddW10gPSYgbmV3ICR0aGlzLT5mZWVkLT5lbmNsb3N1cmVfY2xhc3MoJHVybCwgJHR5cGUsICRsZW5ndGgsICR0aGlzLT5mZWVkLT5qYXZhc2NyaXB0LCAkYml0cmF0ZSwgJGNhcHRpb25zX3BhcmVudCwgJGNhdGVnb3JpZXNfcGFyZW50LCAkY2hhbm5lbHMsICRjb3B5cmlnaHRzX3BhcmVudCwgJGNyZWRpdHNfcGFyZW50LCAkZGVzY3JpcHRpb25fcGFyZW50LCAkZHVyYXRpb25fcGFyZW50LCAkZXhwcmVzc2lvbiwgJGZyYW1lcmF0ZSwgJGhhc2hlc19wYXJlbnQsICRoZWlnaHQsICRrZXl3b3Jkc19wYXJlbnQsICRsYW5nLCAkbWVkaXVtLCAkcGxheWVyX3BhcmVudCwgJHJhdGluZ3NfcGFyZW50LCAkcmVzdHJpY3Rpb25zX3BhcmVudCwgJHNhbXBsaW5ncmF0ZSwgJHRodW1ibmFpbHNfcGFyZW50LCAkdGl0bGVfcGFyZW50LCAkd2lkdGgpOwoJCQkJfQoJCQl9CgoJCQlpZiAoc2l6ZW9mKCR0aGlzLT5kYXRhWydlbmNsb3N1cmVzJ10pID09IDAgJiYgKCR1cmwgfHwgJHR5cGUgfHwgJGxlbmd0aCB8fCAkYml0cmF0ZSB8fCAkY2FwdGlvbnNfcGFyZW50IHx8ICRjYXRlZ29yaWVzX3BhcmVudCB8fCAkY2hhbm5lbHMgfHwgJGNvcHlyaWdodHNfcGFyZW50IHx8ICRjcmVkaXRzX3BhcmVudCB8fCAkZGVzY3JpcHRpb25fcGFyZW50IHx8ICRkdXJhdGlvbl9wYXJlbnQgfHwgJGV4cHJlc3Npb24gfHwgJGZyYW1lcmF0ZSB8fCAkaGFzaGVzX3BhcmVudCB8fCAkaGVpZ2h0IHx8ICRrZXl3b3Jkc19wYXJlbnQgfHwgJGxhbmcgfHwgJG1lZGl1bSB8fCAkcGxheWVyX3BhcmVudCB8fCAkcmF0aW5nc19wYXJlbnQgfHwgJHJlc3RyaWN0aW9uc19wYXJlbnQgfHwgJHNhbXBsaW5ncmF0ZSB8fCAkdGh1bWJuYWlsc19wYXJlbnQgfHwgJHRpdGxlX3BhcmVudCB8fCAkd2lkdGgpKQoJCQl7CgkJCQkvLyBTaW5jZSB3ZSBkb24ndCBoYXZlIGdyb3VwIG9yIGNvbnRlbnQgZm9yIHRoZXNlLCB3ZSdsbCBqdXN0IHBhc3MgdGhlICcqX3BhcmVudCcgdmFyaWFibGVzIGRpcmVjdGx5IHRvIHRoZSBjb25zdHJ1Y3RvcgoJCQkJJHRoaXMtPmRhdGFbJ2VuY2xvc3VyZXMnXVtdID0mIG5ldyAkdGhpcy0+ZmVlZC0+ZW5jbG9zdXJlX2NsYXNzKCR1cmwsICR0eXBlLCAkbGVuZ3RoLCAkdGhpcy0+ZmVlZC0+amF2YXNjcmlwdCwgJGJpdHJhdGUsICRjYXB0aW9uc19wYXJlbnQsICRjYXRlZ29yaWVzX3BhcmVudCwgJGNoYW5uZWxzLCAkY29weXJpZ2h0c19wYXJlbnQsICRjcmVkaXRzX3BhcmVudCwgJGRlc2NyaXB0aW9uX3BhcmVudCwgJGR1cmF0aW9uX3BhcmVudCwgJGV4cHJlc3Npb24sICRmcmFtZXJhdGUsICRoYXNoZXNfcGFyZW50LCAkaGVpZ2h0LCAka2V5d29yZHNfcGFyZW50LCAkbGFuZywgJG1lZGl1bSwgJHBsYXllcl9wYXJlbnQsICRyYXRpbmdzX3BhcmVudCwgJHJlc3RyaWN0aW9uc19wYXJlbnQsICRzYW1wbGluZ3JhdGUsICR0aHVtYm5haWxzX3BhcmVudCwgJHRpdGxlX3BhcmVudCwgJHdpZHRoKTsKCQkJfQoKCQkJJHRoaXMtPmRhdGFbJ2VuY2xvc3VyZXMnXSA9IGFycmF5X3ZhbHVlcyhTaW1wbGVQaWVfTWlzYzo6YXJyYXlfdW5pcXVlKCR0aGlzLT5kYXRhWydlbmNsb3N1cmVzJ10pKTsKCQl9CgkJaWYgKCFlbXB0eSgkdGhpcy0+ZGF0YVsnZW5jbG9zdXJlcyddKSkKCQl7CgkJCXJldHVybiAkdGhpcy0+ZGF0YVsnZW5jbG9zdXJlcyddOwoJCX0KCQllbHNlCgkJewoJCQlyZXR1cm4gbnVsbDsKCQl9Cgl9CgoJZnVuY3Rpb24gZ2V0X2xhdGl0dWRlKCkKCXsKCQlpZiAoJHJldHVybiA9ICR0aGlzLT5nZXRfaXRlbV90YWdzKFNJTVBMRVBJRV9OQU1FU1BBQ0VfVzNDX0JBU0lDX0dFTywgJ2xhdCcpKQoJCXsKCQkJcmV0dXJuIChmbG9hdCkgJHJldHVyblswXVsnZGF0YSddOwoJCX0KCQllbHNlaWYgKCgkcmV0dXJuID0gJHRoaXMtPmdldF9pdGVtX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9HRU9SU1MsICdwb2ludCcpKSAmJiBwcmVnX21hdGNoKCcvXigoPzotKT9bMC05XSsoPzpcLlswLTldKykpICgoPzotKT9bMC05XSsoPzpcLlswLTldKykpJC8nLCAkcmV0dXJuWzBdWydkYXRhJ10sICRtYXRjaCkpCgkJewoJCQlyZXR1cm4gKGZsb2F0KSAkbWF0Y2hbMV07CgkJfQoJCWVsc2UKCQl7CgkJCXJldHVybiBudWxsOwoJCX0KCX0KCglmdW5jdGlvbiBnZXRfbG9uZ2l0dWRlKCkKCXsKCQlpZiAoJHJldHVybiA9ICR0aGlzLT5nZXRfaXRlbV90YWdzKFNJTVBMRVBJRV9OQU1FU1BBQ0VfVzNDX0JBU0lDX0dFTywgJ2xvbmcnKSkKCQl7CgkJCXJldHVybiAoZmxvYXQpICRyZXR1cm5bMF1bJ2RhdGEnXTsKCQl9CgkJZWxzZWlmICgkcmV0dXJuID0gJHRoaXMtPmdldF9pdGVtX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9XM0NfQkFTSUNfR0VPLCAnbG9uJykpCgkJewoJCQlyZXR1cm4gKGZsb2F0KSAkcmV0dXJuWzBdWydkYXRhJ107CgkJfQoJCWVsc2VpZiAoKCRyZXR1cm4gPSAkdGhpcy0+Z2V0X2l0ZW1fdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX0dFT1JTUywgJ3BvaW50JykpICYmIHByZWdfbWF0Y2goJy9eKCg/Oi0pP1swLTldKyg/OlwuWzAtOV0rKSkgKCg/Oi0pP1swLTldKyg/OlwuWzAtOV0rKSkkLycsICRyZXR1cm5bMF1bJ2RhdGEnXSwgJG1hdGNoKSkKCQl7CgkJCXJldHVybiAoZmxvYXQpICRtYXRjaFsyXTsKCQl9CgkJZWxzZQoJCXsKCQkJcmV0dXJuIG51bGw7CgkJfQoJfQoKCWZ1bmN0aW9uIGdldF9zb3VyY2UoKQoJewoJCWlmICgkcmV0dXJuID0gJHRoaXMtPmdldF9pdGVtX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9BVE9NXzEwLCAnc291cmNlJykpCgkJewoJCQlyZXR1cm4gbmV3ICR0aGlzLT5mZWVkLT5zb3VyY2VfY2xhc3MoJHRoaXMsICRyZXR1cm5bMF0pOwoJCX0KCQllbHNlCgkJewoJCQlyZXR1cm4gbnVsbDsKCQl9Cgl9CgoJLyoqCgkgKiBDcmVhdGVzIHRoZSBhZGRfdG9fKiBtZXRob2RzJyByZXR1cm4gZGF0YQoJICoKCSAqIEBhY2Nlc3MgcHJpdmF0ZQoJICogQHBhcmFtIHN0cmluZyAkaXRlbV91cmwgU3RyaW5nIHRvIHByZWZpeCB0byB0aGUgaXRlbSBwZXJtYWxpbmsKCSAqIEBwYXJhbSBzdHJpbmcgJHRpdGxlX3VybCBTdHJpbmcgdG8gcHJlZml4IHRvIHRoZSBpdGVtIHRpdGxlCgkgKiAoYW5kIHN1ZmZpeCB0byB0aGUgaXRlbSBwZXJtYWxpbmspCgkgKiBAcmV0dXJuIG1peGVkIFVSTCBpZiBmZWVkIGV4aXN0cywgZmFsc2Ugb3RoZXJ3aXNlCgkgKi8KCWZ1bmN0aW9uIGFkZF90b19zZXJ2aWNlKCRpdGVtX3VybCwgJHRpdGxlX3VybCA9IG51bGwsICRzdW1tYXJ5X3VybCA9IG51bGwpCgl7CgkJaWYgKCR0aGlzLT5nZXRfcGVybWFsaW5rKCkgIT09IG51bGwpCgkJewoJCQkkcmV0dXJuID0gJHRoaXMtPnNhbml0aXplKCRpdGVtX3VybCwgU0lNUExFUElFX0NPTlNUUlVDVF9JUkkpIC4gcmF3dXJsZW5jb2RlKCR0aGlzLT5nZXRfcGVybWFsaW5rKCkpOwoJCQlpZiAoJHRpdGxlX3VybCAhPT0gbnVsbCAmJiAkdGhpcy0+Z2V0X3RpdGxlKCkgIT09IG51bGwpCgkJCXsKCQkJCSRyZXR1cm4gLj0gJHRoaXMtPnNhbml0aXplKCR0aXRsZV91cmwsIFNJTVBMRVBJRV9DT05TVFJVQ1RfSVJJKSAuIHJhd3VybGVuY29kZSgkdGhpcy0+Z2V0X3RpdGxlKCkpOwoJCQl9CgkJCWlmICgkc3VtbWFyeV91cmwgIT09IG51bGwgJiYgJHRoaXMtPmdldF9kZXNjcmlwdGlvbigpICE9PSBudWxsKQoJCQl7CgkJCQkkcmV0dXJuIC49ICR0aGlzLT5zYW5pdGl6ZSgkc3VtbWFyeV91cmwsIFNJTVBMRVBJRV9DT05TVFJVQ1RfSVJJKSAuIHJhd3VybGVuY29kZSgkdGhpcy0+Z2V0X2Rlc2NyaXB0aW9uKCkpOwoJCQl9CgkJCXJldHVybiAkcmV0dXJuOwoJCX0KCQllbHNlCgkJewoJCQlyZXR1cm4gbnVsbDsKCQl9Cgl9CgoJZnVuY3Rpb24gYWRkX3RvX2JsaW5rbGlzdCgpCgl7CgkJcmV0dXJuICR0aGlzLT5hZGRfdG9fc2VydmljZSgnaHR0cDovL3d3dy5ibGlua2xpc3QuY29tL2luZGV4LnBocD9BY3Rpb249QmxpbmsvYWRkYmxpbmsucGhwJkRlc2NyaXB0aW9uPSZVcmw9JywgJyZUaXRsZT0nKTsKCX0KCglmdW5jdGlvbiBhZGRfdG9fYmxvZ21hcmtzKCkKCXsKCQlyZXR1cm4gJHRoaXMtPmFkZF90b19zZXJ2aWNlKCdodHRwOi8vYmxvZ21hcmtzLm5ldC9teS9uZXcucGhwP21pbmk9MSZzaW1wbGU9MSZ1cmw9JywgJyZ0aXRsZT0nKTsKCX0KCglmdW5jdGlvbiBhZGRfdG9fZGVsaWNpb3VzKCkKCXsKCQlyZXR1cm4gJHRoaXMtPmFkZF90b19zZXJ2aWNlKCdodHRwOi8vZGVsLmljaW8udXMvcG9zdC8/dj00JnVybD0nLCAnJnRpdGxlPScpOwoJfQoKCWZ1bmN0aW9uIGFkZF90b19kaWdnKCkKCXsKCQlyZXR1cm4gJHRoaXMtPmFkZF90b19zZXJ2aWNlKCdodHRwOi8vZGlnZy5jb20vc3VibWl0P3VybD0nLCAnJnRpdGxlPScsICcmYm9keXRleHQ9Jyk7Cgl9CgoJZnVuY3Rpb24gYWRkX3RvX2Z1cmwoKQoJewoJCXJldHVybiAkdGhpcy0+YWRkX3RvX3NlcnZpY2UoJ2h0dHA6Ly93d3cuZnVybC5uZXQvc3RvcmVJdC5qc3A/dT0nLCAnJnQ9Jyk7Cgl9CgoJZnVuY3Rpb24gYWRkX3RvX21hZ25vbGlhKCkKCXsKCQlyZXR1cm4gJHRoaXMtPmFkZF90b19zZXJ2aWNlKCdodHRwOi8vbWEuZ25vbGlhLmNvbS9ib29rbWFya2xldC9hZGQ/dXJsPScsICcmdGl0bGU9Jyk7Cgl9CgoJZnVuY3Rpb24gYWRkX3RvX215d2ViMjAoKQoJewoJCXJldHVybiAkdGhpcy0+YWRkX3RvX3NlcnZpY2UoJ2h0dHA6Ly9teXdlYjIuc2VhcmNoLnlhaG9vLmNvbS9teXJlc3VsdHMvYm9va21hcmtsZXQ/dT0nLCAnJnQ9Jyk7Cgl9CgoJZnVuY3Rpb24gYWRkX3RvX25ld3N2aW5lKCkKCXsKCQlyZXR1cm4gJHRoaXMtPmFkZF90b19zZXJ2aWNlKCdodHRwOi8vd3d3Lm5ld3N2aW5lLmNvbS9fd2luZS9zYXZlP3U9JywgJyZoPScpOwoJfQoKCWZ1bmN0aW9uIGFkZF90b19yZWRkaXQoKQoJewoJCXJldHVybiAkdGhpcy0+YWRkX3RvX3NlcnZpY2UoJ2h0dHA6Ly9yZWRkaXQuY29tL3N1Ym1pdD91cmw9JywgJyZ0aXRsZT0nKTsKCX0KCglmdW5jdGlvbiBhZGRfdG9fc2VnbmFsbygpCgl7CgkJcmV0dXJuICR0aGlzLT5hZGRfdG9fc2VydmljZSgnaHR0cDovL3NlZ25hbG8uY29tL3Bvc3QuaHRtbC5waHA/dXJsPScsICcmdGl0bGU9Jyk7Cgl9CgoJZnVuY3Rpb24gYWRkX3RvX3NpbXB5KCkKCXsKCQlyZXR1cm4gJHRoaXMtPmFkZF90b19zZXJ2aWNlKCdodHRwOi8vd3d3LnNpbXB5LmNvbS9zaW1weS9MaW5rQWRkLmRvP2hyZWY9JywgJyZ0aXRsZT0nKTsKCX0KCglmdW5jdGlvbiBhZGRfdG9fc3B1cmwoKQoJewoJCXJldHVybiAkdGhpcy0+YWRkX3RvX3NlcnZpY2UoJ2h0dHA6Ly93d3cuc3B1cmwubmV0L3NwdXJsLnBocD92PTMmdXJsPScsICcmdGl0bGU9Jyk7Cgl9CgoJZnVuY3Rpb24gYWRkX3RvX3dpc3RzKCkKCXsKCQlyZXR1cm4gJHRoaXMtPmFkZF90b19zZXJ2aWNlKCdodHRwOi8vd2lzdHMuY29tL3IucGhwP2M9JnI9JywgJyZ0aXRsZT0nKTsKCX0KCglmdW5jdGlvbiBzZWFyY2hfdGVjaG5vcmF0aSgpCgl7CgkJcmV0dXJuICR0aGlzLT5hZGRfdG9fc2VydmljZSgnaHR0cDovL3d3dy50ZWNobm9yYXRpLmNvbS9zZWFyY2gvJyk7Cgl9Cn0KCmNsYXNzIFNpbXBsZVBpZV9Tb3VyY2UKewoJdmFyICRpdGVtOwoJdmFyICRkYXRhID0gYXJyYXkoKTsKCglmdW5jdGlvbiBTaW1wbGVQaWVfU291cmNlKCRpdGVtLCAkZGF0YSkKCXsKCQkkdGhpcy0+aXRlbSA9ICRpdGVtOwoJCSR0aGlzLT5kYXRhID0gJGRhdGE7Cgl9CgoJZnVuY3Rpb24gX190b1N0cmluZygpCgl7CgkJcmV0dXJuIG1kNShzZXJpYWxpemUoJHRoaXMtPmRhdGEpKTsKCX0KCgkvKioKCSAqIFJlbW92ZSBpdGVtcyB0aGF0IGxpbmsgYmFjayB0byB0aGlzIGJlZm9yZSBkZXN0cm95aW5nIHRoaXMgb2JqZWN0CgkgKi8KCWZ1bmN0aW9uIF9fZGVzdHJ1Y3QoKQoJewoJCXVuc2V0KCR0aGlzLT5pdGVtKTsKCX0KCglmdW5jdGlvbiBnZXRfc291cmNlX3RhZ3MoJG5hbWVzcGFjZSwgJHRhZykKCXsKCQlpZiAoaXNzZXQoJHRoaXMtPmRhdGFbJ2NoaWxkJ11bJG5hbWVzcGFjZV1bJHRhZ10pKQoJCXsKCQkJcmV0dXJuICR0aGlzLT5kYXRhWydjaGlsZCddWyRuYW1lc3BhY2VdWyR0YWddOwoJCX0KCQllbHNlCgkJewoJCQlyZXR1cm4gbnVsbDsKCQl9Cgl9CgoJZnVuY3Rpb24gZ2V0X2Jhc2UoJGVsZW1lbnQgPSBhcnJheSgpKQoJewoJCXJldHVybiAkdGhpcy0+aXRlbS0+Z2V0X2Jhc2UoJGVsZW1lbnQpOwoJfQoKCWZ1bmN0aW9uIHNhbml0aXplKCRkYXRhLCAkdHlwZSwgJGJhc2UgPSAnJykKCXsKCQlyZXR1cm4gJHRoaXMtPml0ZW0tPnNhbml0aXplKCRkYXRhLCAkdHlwZSwgJGJhc2UpOwoJfQoKCWZ1bmN0aW9uIGdldF9pdGVtKCkKCXsKCQlyZXR1cm4gJHRoaXMtPml0ZW07Cgl9CgoJZnVuY3Rpb24gZ2V0X3RpdGxlKCkKCXsKCQlpZiAoJHJldHVybiA9ICR0aGlzLT5nZXRfc291cmNlX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9BVE9NXzEwLCAndGl0bGUnKSkKCQl7CgkJCXJldHVybiAkdGhpcy0+c2FuaXRpemUoJHJldHVyblswXVsnZGF0YSddLCBTaW1wbGVQaWVfTWlzYzo6YXRvbV8xMF9jb25zdHJ1Y3RfdHlwZSgkcmV0dXJuWzBdWydhdHRyaWJzJ10pLCAkdGhpcy0+Z2V0X2Jhc2UoJHJldHVyblswXSkpOwoJCX0KCQllbHNlaWYgKCRyZXR1cm4gPSAkdGhpcy0+Z2V0X3NvdXJjZV90YWdzKFNJTVBMRVBJRV9OQU1FU1BBQ0VfQVRPTV8wMywgJ3RpdGxlJykpCgkJewoJCQlyZXR1cm4gJHRoaXMtPnNhbml0aXplKCRyZXR1cm5bMF1bJ2RhdGEnXSwgU2ltcGxlUGllX01pc2M6OmF0b21fMDNfY29uc3RydWN0X3R5cGUoJHJldHVyblswXVsnYXR0cmlicyddKSwgJHRoaXMtPmdldF9iYXNlKCRyZXR1cm5bMF0pKTsKCQl9CgkJZWxzZWlmICgkcmV0dXJuID0gJHRoaXMtPmdldF9zb3VyY2VfdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX1JTU18xMCwgJ3RpdGxlJykpCgkJewoJCQlyZXR1cm4gJHRoaXMtPnNhbml0aXplKCRyZXR1cm5bMF1bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9NQVlCRV9IVE1MLCAkdGhpcy0+Z2V0X2Jhc2UoJHJldHVyblswXSkpOwoJCX0KCQllbHNlaWYgKCRyZXR1cm4gPSAkdGhpcy0+Z2V0X3NvdXJjZV90YWdzKFNJTVBMRVBJRV9OQU1FU1BBQ0VfUlNTXzA5MCwgJ3RpdGxlJykpCgkJewoJCQlyZXR1cm4gJHRoaXMtPnNhbml0aXplKCRyZXR1cm5bMF1bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9NQVlCRV9IVE1MLCAkdGhpcy0+Z2V0X2Jhc2UoJHJldHVyblswXSkpOwoJCX0KCQllbHNlaWYgKCRyZXR1cm4gPSAkdGhpcy0+Z2V0X3NvdXJjZV90YWdzKCcnLCAndGl0bGUnKSkKCQl7CgkJCXJldHVybiAkdGhpcy0+c2FuaXRpemUoJHJldHVyblswXVsnZGF0YSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX01BWUJFX0hUTUwsICR0aGlzLT5nZXRfYmFzZSgkcmV0dXJuWzBdKSk7CgkJfQoJCWVsc2VpZiAoJHJldHVybiA9ICR0aGlzLT5nZXRfc291cmNlX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9EQ18xMSwgJ3RpdGxlJykpCgkJewoJCQlyZXR1cm4gJHRoaXMtPnNhbml0aXplKCRyZXR1cm5bMF1bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQl9CgkJZWxzZWlmICgkcmV0dXJuID0gJHRoaXMtPmdldF9zb3VyY2VfdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX0RDXzEwLCAndGl0bGUnKSkKCQl7CgkJCXJldHVybiAkdGhpcy0+c2FuaXRpemUoJHJldHVyblswXVsnZGF0YSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCX0KCQllbHNlCgkJewoJCQlyZXR1cm4gbnVsbDsKCQl9Cgl9CgoJZnVuY3Rpb24gZ2V0X2NhdGVnb3J5KCRrZXkgPSAwKQoJewoJCSRjYXRlZ29yaWVzID0gJHRoaXMtPmdldF9jYXRlZ29yaWVzKCk7CgkJaWYgKGlzc2V0KCRjYXRlZ29yaWVzWyRrZXldKSkKCQl7CgkJCXJldHVybiAkY2F0ZWdvcmllc1ska2V5XTsKCQl9CgkJZWxzZQoJCXsKCQkJcmV0dXJuIG51bGw7CgkJfQoJfQoKCWZ1bmN0aW9uIGdldF9jYXRlZ29yaWVzKCkKCXsKCQkkY2F0ZWdvcmllcyA9IGFycmF5KCk7CgoJCWZvcmVhY2ggKChhcnJheSkgJHRoaXMtPmdldF9zb3VyY2VfdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMTAsICdjYXRlZ29yeScpIGFzICRjYXRlZ29yeSkKCQl7CgkJCSR0ZXJtID0gbnVsbDsKCQkJJHNjaGVtZSA9IG51bGw7CgkJCSRsYWJlbCA9IG51bGw7CgkJCWlmIChpc3NldCgkY2F0ZWdvcnlbJ2F0dHJpYnMnXVsnJ11bJ3Rlcm0nXSkpCgkJCXsKCQkJCSR0ZXJtID0gJHRoaXMtPnNhbml0aXplKCRjYXRlZ29yeVsnYXR0cmlicyddWycnXVsndGVybSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCQl9CgkJCWlmIChpc3NldCgkY2F0ZWdvcnlbJ2F0dHJpYnMnXVsnJ11bJ3NjaGVtZSddKSkKCQkJewoJCQkJJHNjaGVtZSA9ICR0aGlzLT5zYW5pdGl6ZSgkY2F0ZWdvcnlbJ2F0dHJpYnMnXVsnJ11bJ3NjaGVtZSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCQl9CgkJCWlmIChpc3NldCgkY2F0ZWdvcnlbJ2F0dHJpYnMnXVsnJ11bJ2xhYmVsJ10pKQoJCQl7CgkJCQkkbGFiZWwgPSAkdGhpcy0+c2FuaXRpemUoJGNhdGVnb3J5WydhdHRyaWJzJ11bJyddWydsYWJlbCddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCQl9CgkJCSRjYXRlZ29yaWVzW10gPSYgbmV3ICR0aGlzLT5pdGVtLT5mZWVkLT5jYXRlZ29yeV9jbGFzcygkdGVybSwgJHNjaGVtZSwgJGxhYmVsKTsKCQl9CgkJZm9yZWFjaCAoKGFycmF5KSAkdGhpcy0+Z2V0X3NvdXJjZV90YWdzKCcnLCAnY2F0ZWdvcnknKSBhcyAkY2F0ZWdvcnkpCgkJewoJCQkkY2F0ZWdvcmllc1tdID0mIG5ldyAkdGhpcy0+aXRlbS0+ZmVlZC0+Y2F0ZWdvcnlfY2xhc3MoJHRoaXMtPnNhbml0aXplKCRjYXRlZ29yeVsnZGF0YSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpLCBudWxsLCBudWxsKTsKCQl9CgkJZm9yZWFjaCAoKGFycmF5KSAkdGhpcy0+Z2V0X3NvdXJjZV90YWdzKFNJTVBMRVBJRV9OQU1FU1BBQ0VfRENfMTEsICdzdWJqZWN0JykgYXMgJGNhdGVnb3J5KQoJCXsKCQkJJGNhdGVnb3JpZXNbXSA9JiBuZXcgJHRoaXMtPml0ZW0tPmZlZWQtPmNhdGVnb3J5X2NsYXNzKCR0aGlzLT5zYW5pdGl6ZSgkY2F0ZWdvcnlbJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKSwgbnVsbCwgbnVsbCk7CgkJfQoJCWZvcmVhY2ggKChhcnJheSkgJHRoaXMtPmdldF9zb3VyY2VfdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX0RDXzEwLCAnc3ViamVjdCcpIGFzICRjYXRlZ29yeSkKCQl7CgkJCSRjYXRlZ29yaWVzW10gPSYgbmV3ICR0aGlzLT5pdGVtLT5mZWVkLT5jYXRlZ29yeV9jbGFzcygkdGhpcy0+c2FuaXRpemUoJGNhdGVnb3J5WydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCksIG51bGwsIG51bGwpOwoJCX0KCgkJaWYgKCFlbXB0eSgkY2F0ZWdvcmllcykpCgkJewoJCQlyZXR1cm4gU2ltcGxlUGllX01pc2M6OmFycmF5X3VuaXF1ZSgkY2F0ZWdvcmllcyk7CgkJfQoJCWVsc2UKCQl7CgkJCXJldHVybiBudWxsOwoJCX0KCX0KCglmdW5jdGlvbiBnZXRfYXV0aG9yKCRrZXkgPSAwKQoJewoJCSRhdXRob3JzID0gJHRoaXMtPmdldF9hdXRob3JzKCk7CgkJaWYgKGlzc2V0KCRhdXRob3JzWyRrZXldKSkKCQl7CgkJCXJldHVybiAkYXV0aG9yc1ska2V5XTsKCQl9CgkJZWxzZQoJCXsKCQkJcmV0dXJuIG51bGw7CgkJfQoJfQoKCWZ1bmN0aW9uIGdldF9hdXRob3JzKCkKCXsKCQkkYXV0aG9ycyA9IGFycmF5KCk7CgkJZm9yZWFjaCAoKGFycmF5KSAkdGhpcy0+Z2V0X3NvdXJjZV90YWdzKFNJTVBMRVBJRV9OQU1FU1BBQ0VfQVRPTV8xMCwgJ2F1dGhvcicpIGFzICRhdXRob3IpCgkJewoJCQkkbmFtZSA9IG51bGw7CgkJCSR1cmkgPSBudWxsOwoJCQkkZW1haWwgPSBudWxsOwoJCQlpZiAoaXNzZXQoJGF1dGhvclsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMTBdWyduYW1lJ11bMF1bJ2RhdGEnXSkpCgkJCXsKCQkJCSRuYW1lID0gJHRoaXMtPnNhbml0aXplKCRhdXRob3JbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9BVE9NXzEwXVsnbmFtZSddWzBdWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCX0KCQkJaWYgKGlzc2V0KCRhdXRob3JbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9BVE9NXzEwXVsndXJpJ11bMF1bJ2RhdGEnXSkpCgkJCXsKCQkJCSR1cmkgPSAkdGhpcy0+c2FuaXRpemUoJGF1dGhvclsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMTBdWyd1cmknXVswXVsnZGF0YSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX0lSSSwgJHRoaXMtPmdldF9iYXNlKCRhdXRob3JbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9BVE9NXzEwXVsndXJpJ11bMF0pKTsKCQkJfQoJCQlpZiAoaXNzZXQoJGF1dGhvclsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMTBdWydlbWFpbCddWzBdWydkYXRhJ10pKQoJCQl7CgkJCQkkZW1haWwgPSAkdGhpcy0+c2FuaXRpemUoJGF1dGhvclsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMTBdWydlbWFpbCddWzBdWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCX0KCQkJaWYgKCRuYW1lICE9PSBudWxsIHx8ICRlbWFpbCAhPT0gbnVsbCB8fCAkdXJpICE9PSBudWxsKQoJCQl7CgkJCQkkYXV0aG9yc1tdID0mIG5ldyAkdGhpcy0+aXRlbS0+ZmVlZC0+YXV0aG9yX2NsYXNzKCRuYW1lLCAkdXJpLCAkZW1haWwpOwoJCQl9CgkJfQoJCWlmICgkYXV0aG9yID0gJHRoaXMtPmdldF9zb3VyY2VfdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMDMsICdhdXRob3InKSkKCQl7CgkJCSRuYW1lID0gbnVsbDsKCQkJJHVybCA9IG51bGw7CgkJCSRlbWFpbCA9IG51bGw7CgkJCWlmIChpc3NldCgkYXV0aG9yWzBdWydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfQVRPTV8wM11bJ25hbWUnXVswXVsnZGF0YSddKSkKCQkJewoJCQkJJG5hbWUgPSAkdGhpcy0+c2FuaXRpemUoJGF1dGhvclswXVsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMDNdWyduYW1lJ11bMF1bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJfQoJCQlpZiAoaXNzZXQoJGF1dGhvclswXVsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMDNdWyd1cmwnXVswXVsnZGF0YSddKSkKCQkJewoJCQkJJHVybCA9ICR0aGlzLT5zYW5pdGl6ZSgkYXV0aG9yWzBdWydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfQVRPTV8wM11bJ3VybCddWzBdWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfSVJJLCAkdGhpcy0+Z2V0X2Jhc2UoJGF1dGhvclswXVsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMDNdWyd1cmwnXVswXSkpOwoJCQl9CgkJCWlmIChpc3NldCgkYXV0aG9yWzBdWydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfQVRPTV8wM11bJ2VtYWlsJ11bMF1bJ2RhdGEnXSkpCgkJCXsKCQkJCSRlbWFpbCA9ICR0aGlzLT5zYW5pdGl6ZSgkYXV0aG9yWzBdWydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfQVRPTV8wM11bJ2VtYWlsJ11bMF1bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJfQoJCQlpZiAoJG5hbWUgIT09IG51bGwgfHwgJGVtYWlsICE9PSBudWxsIHx8ICR1cmwgIT09IG51bGwpCgkJCXsKCQkJCSRhdXRob3JzW10gPSYgbmV3ICR0aGlzLT5pdGVtLT5mZWVkLT5hdXRob3JfY2xhc3MoJG5hbWUsICR1cmwsICRlbWFpbCk7CgkJCX0KCQl9CgkJZm9yZWFjaCAoKGFycmF5KSAkdGhpcy0+Z2V0X3NvdXJjZV90YWdzKFNJTVBMRVBJRV9OQU1FU1BBQ0VfRENfMTEsICdjcmVhdG9yJykgYXMgJGF1dGhvcikKCQl7CgkJCSRhdXRob3JzW10gPSYgbmV3ICR0aGlzLT5pdGVtLT5mZWVkLT5hdXRob3JfY2xhc3MoJHRoaXMtPnNhbml0aXplKCRhdXRob3JbJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKSwgbnVsbCwgbnVsbCk7CgkJfQoJCWZvcmVhY2ggKChhcnJheSkgJHRoaXMtPmdldF9zb3VyY2VfdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX0RDXzEwLCAnY3JlYXRvcicpIGFzICRhdXRob3IpCgkJewoJCQkkYXV0aG9yc1tdID0mIG5ldyAkdGhpcy0+aXRlbS0+ZmVlZC0+YXV0aG9yX2NsYXNzKCR0aGlzLT5zYW5pdGl6ZSgkYXV0aG9yWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCksIG51bGwsIG51bGwpOwoJCX0KCQlmb3JlYWNoICgoYXJyYXkpICR0aGlzLT5nZXRfc291cmNlX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9JVFVORVMsICdhdXRob3InKSBhcyAkYXV0aG9yKQoJCXsKCQkJJGF1dGhvcnNbXSA9JiBuZXcgJHRoaXMtPml0ZW0tPmZlZWQtPmF1dGhvcl9jbGFzcygkdGhpcy0+c2FuaXRpemUoJGF1dGhvclsnZGF0YSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpLCBudWxsLCBudWxsKTsKCQl9CgoJCWlmICghZW1wdHkoJGF1dGhvcnMpKQoJCXsKCQkJcmV0dXJuIFNpbXBsZVBpZV9NaXNjOjphcnJheV91bmlxdWUoJGF1dGhvcnMpOwoJCX0KCQllbHNlCgkJewoJCQlyZXR1cm4gbnVsbDsKCQl9Cgl9CgoJZnVuY3Rpb24gZ2V0X2NvbnRyaWJ1dG9yKCRrZXkgPSAwKQoJewoJCSRjb250cmlidXRvcnMgPSAkdGhpcy0+Z2V0X2NvbnRyaWJ1dG9ycygpOwoJCWlmIChpc3NldCgkY29udHJpYnV0b3JzWyRrZXldKSkKCQl7CgkJCXJldHVybiAkY29udHJpYnV0b3JzWyRrZXldOwoJCX0KCQllbHNlCgkJewoJCQlyZXR1cm4gbnVsbDsKCQl9Cgl9CgoJZnVuY3Rpb24gZ2V0X2NvbnRyaWJ1dG9ycygpCgl7CgkJJGNvbnRyaWJ1dG9ycyA9IGFycmF5KCk7CgkJZm9yZWFjaCAoKGFycmF5KSAkdGhpcy0+Z2V0X3NvdXJjZV90YWdzKFNJTVBMRVBJRV9OQU1FU1BBQ0VfQVRPTV8xMCwgJ2NvbnRyaWJ1dG9yJykgYXMgJGNvbnRyaWJ1dG9yKQoJCXsKCQkJJG5hbWUgPSBudWxsOwoJCQkkdXJpID0gbnVsbDsKCQkJJGVtYWlsID0gbnVsbDsKCQkJaWYgKGlzc2V0KCRjb250cmlidXRvclsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMTBdWyduYW1lJ11bMF1bJ2RhdGEnXSkpCgkJCXsKCQkJCSRuYW1lID0gJHRoaXMtPnNhbml0aXplKCRjb250cmlidXRvclsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMTBdWyduYW1lJ11bMF1bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJfQoJCQlpZiAoaXNzZXQoJGNvbnRyaWJ1dG9yWydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfQVRPTV8xMF1bJ3VyaSddWzBdWydkYXRhJ10pKQoJCQl7CgkJCQkkdXJpID0gJHRoaXMtPnNhbml0aXplKCRjb250cmlidXRvclsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMTBdWyd1cmknXVswXVsnZGF0YSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX0lSSSwgJHRoaXMtPmdldF9iYXNlKCRjb250cmlidXRvclsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMTBdWyd1cmknXVswXSkpOwoJCQl9CgkJCWlmIChpc3NldCgkY29udHJpYnV0b3JbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9BVE9NXzEwXVsnZW1haWwnXVswXVsnZGF0YSddKSkKCQkJewoJCQkJJGVtYWlsID0gJHRoaXMtPnNhbml0aXplKCRjb250cmlidXRvclsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMTBdWydlbWFpbCddWzBdWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCX0KCQkJaWYgKCRuYW1lICE9PSBudWxsIHx8ICRlbWFpbCAhPT0gbnVsbCB8fCAkdXJpICE9PSBudWxsKQoJCQl7CgkJCQkkY29udHJpYnV0b3JzW10gPSYgbmV3ICR0aGlzLT5pdGVtLT5mZWVkLT5hdXRob3JfY2xhc3MoJG5hbWUsICR1cmksICRlbWFpbCk7CgkJCX0KCQl9CgkJZm9yZWFjaCAoKGFycmF5KSAkdGhpcy0+Z2V0X3NvdXJjZV90YWdzKFNJTVBMRVBJRV9OQU1FU1BBQ0VfQVRPTV8wMywgJ2NvbnRyaWJ1dG9yJykgYXMgJGNvbnRyaWJ1dG9yKQoJCXsKCQkJJG5hbWUgPSBudWxsOwoJCQkkdXJsID0gbnVsbDsKCQkJJGVtYWlsID0gbnVsbDsKCQkJaWYgKGlzc2V0KCRjb250cmlidXRvclsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMDNdWyduYW1lJ11bMF1bJ2RhdGEnXSkpCgkJCXsKCQkJCSRuYW1lID0gJHRoaXMtPnNhbml0aXplKCRjb250cmlidXRvclsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMDNdWyduYW1lJ11bMF1bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQkJfQoJCQlpZiAoaXNzZXQoJGNvbnRyaWJ1dG9yWydjaGlsZCddW1NJTVBMRVBJRV9OQU1FU1BBQ0VfQVRPTV8wM11bJ3VybCddWzBdWydkYXRhJ10pKQoJCQl7CgkJCQkkdXJsID0gJHRoaXMtPnNhbml0aXplKCRjb250cmlidXRvclsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMDNdWyd1cmwnXVswXVsnZGF0YSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX0lSSSwgJHRoaXMtPmdldF9iYXNlKCRjb250cmlidXRvclsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMDNdWyd1cmwnXVswXSkpOwoJCQl9CgkJCWlmIChpc3NldCgkY29udHJpYnV0b3JbJ2NoaWxkJ11bU0lNUExFUElFX05BTUVTUEFDRV9BVE9NXzAzXVsnZW1haWwnXVswXVsnZGF0YSddKSkKCQkJewoJCQkJJGVtYWlsID0gJHRoaXMtPnNhbml0aXplKCRjb250cmlidXRvclsnY2hpbGQnXVtTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMDNdWydlbWFpbCddWzBdWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJCX0KCQkJaWYgKCRuYW1lICE9PSBudWxsIHx8ICRlbWFpbCAhPT0gbnVsbCB8fCAkdXJsICE9PSBudWxsKQoJCQl7CgkJCQkkY29udHJpYnV0b3JzW10gPSYgbmV3ICR0aGlzLT5pdGVtLT5mZWVkLT5hdXRob3JfY2xhc3MoJG5hbWUsICR1cmwsICRlbWFpbCk7CgkJCX0KCQl9CgoJCWlmICghZW1wdHkoJGNvbnRyaWJ1dG9ycykpCgkJewoJCQlyZXR1cm4gU2ltcGxlUGllX01pc2M6OmFycmF5X3VuaXF1ZSgkY29udHJpYnV0b3JzKTsKCQl9CgkJZWxzZQoJCXsKCQkJcmV0dXJuIG51bGw7CgkJfQoJfQoKCWZ1bmN0aW9uIGdldF9saW5rKCRrZXkgPSAwLCAkcmVsID0gJ2FsdGVybmF0ZScpCgl7CgkJJGxpbmtzID0gJHRoaXMtPmdldF9saW5rcygkcmVsKTsKCQlpZiAoaXNzZXQoJGxpbmtzWyRrZXldKSkKCQl7CgkJCXJldHVybiAkbGlua3NbJGtleV07CgkJfQoJCWVsc2UKCQl7CgkJCXJldHVybiBudWxsOwoJCX0KCX0KCgkvKioKCSAqIEFkZGVkIGZvciBwYXJpdHkgYmV0d2VlbiB0aGUgcGFyZW50LWxldmVsIGFuZCB0aGUgaXRlbS9lbnRyeS1sZXZlbC4KCSAqLwoJZnVuY3Rpb24gZ2V0X3Blcm1hbGluaygpCgl7CgkJcmV0dXJuICR0aGlzLT5nZXRfbGluaygwKTsKCX0KCglmdW5jdGlvbiBnZXRfbGlua3MoJHJlbCA9ICdhbHRlcm5hdGUnKQoJewoJCWlmICghaXNzZXQoJHRoaXMtPmRhdGFbJ2xpbmtzJ10pKQoJCXsKCQkJJHRoaXMtPmRhdGFbJ2xpbmtzJ10gPSBhcnJheSgpOwoJCQlpZiAoJGxpbmtzID0gJHRoaXMtPmdldF9zb3VyY2VfdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMTAsICdsaW5rJykpCgkJCXsKCQkJCWZvcmVhY2ggKCRsaW5rcyBhcyAkbGluaykKCQkJCXsKCQkJCQlpZiAoaXNzZXQoJGxpbmtbJ2F0dHJpYnMnXVsnJ11bJ2hyZWYnXSkpCgkJCQkJewoJCQkJCQkkbGlua19yZWwgPSAoaXNzZXQoJGxpbmtbJ2F0dHJpYnMnXVsnJ11bJ3JlbCddKSkgPyAkbGlua1snYXR0cmlicyddWycnXVsncmVsJ10gOiAnYWx0ZXJuYXRlJzsKCQkJCQkJJHRoaXMtPmRhdGFbJ2xpbmtzJ11bJGxpbmtfcmVsXVtdID0gJHRoaXMtPnNhbml0aXplKCRsaW5rWydhdHRyaWJzJ11bJyddWydocmVmJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfSVJJLCAkdGhpcy0+Z2V0X2Jhc2UoJGxpbmspKTsKCQkJCQl9CgkJCQl9CgkJCX0KCQkJaWYgKCRsaW5rcyA9ICR0aGlzLT5nZXRfc291cmNlX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9BVE9NXzAzLCAnbGluaycpKQoJCQl7CgkJCQlmb3JlYWNoICgkbGlua3MgYXMgJGxpbmspCgkJCQl7CgkJCQkJaWYgKGlzc2V0KCRsaW5rWydhdHRyaWJzJ11bJyddWydocmVmJ10pKQoJCQkJCXsKCQkJCQkJJGxpbmtfcmVsID0gKGlzc2V0KCRsaW5rWydhdHRyaWJzJ11bJyddWydyZWwnXSkpID8gJGxpbmtbJ2F0dHJpYnMnXVsnJ11bJ3JlbCddIDogJ2FsdGVybmF0ZSc7CgkJCQkJCSR0aGlzLT5kYXRhWydsaW5rcyddWyRsaW5rX3JlbF1bXSA9ICR0aGlzLT5zYW5pdGl6ZSgkbGlua1snYXR0cmlicyddWycnXVsnaHJlZiddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX0lSSSwgJHRoaXMtPmdldF9iYXNlKCRsaW5rKSk7CgoJCQkJCX0KCQkJCX0KCQkJfQoJCQlpZiAoJGxpbmtzID0gJHRoaXMtPmdldF9zb3VyY2VfdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX1JTU18xMCwgJ2xpbmsnKSkKCQkJewoJCQkJJHRoaXMtPmRhdGFbJ2xpbmtzJ11bJ2FsdGVybmF0ZSddW10gPSAkdGhpcy0+c2FuaXRpemUoJGxpbmtzWzBdWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfSVJJLCAkdGhpcy0+Z2V0X2Jhc2UoJGxpbmtzWzBdKSk7CgkJCX0KCQkJaWYgKCRsaW5rcyA9ICR0aGlzLT5nZXRfc291cmNlX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9SU1NfMDkwLCAnbGluaycpKQoJCQl7CgkJCQkkdGhpcy0+ZGF0YVsnbGlua3MnXVsnYWx0ZXJuYXRlJ11bXSA9ICR0aGlzLT5zYW5pdGl6ZSgkbGlua3NbMF1bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9JUkksICR0aGlzLT5nZXRfYmFzZSgkbGlua3NbMF0pKTsKCQkJfQoJCQlpZiAoJGxpbmtzID0gJHRoaXMtPmdldF9zb3VyY2VfdGFncygnJywgJ2xpbmsnKSkKCQkJewoJCQkJJHRoaXMtPmRhdGFbJ2xpbmtzJ11bJ2FsdGVybmF0ZSddW10gPSAkdGhpcy0+c2FuaXRpemUoJGxpbmtzWzBdWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfSVJJLCAkdGhpcy0+Z2V0X2Jhc2UoJGxpbmtzWzBdKSk7CgkJCX0KCgkJCSRrZXlzID0gYXJyYXlfa2V5cygkdGhpcy0+ZGF0YVsnbGlua3MnXSk7CgkJCWZvcmVhY2ggKCRrZXlzIGFzICRrZXkpCgkJCXsKCQkJCWlmIChTaW1wbGVQaWVfTWlzYzo6aXNfaXNlZ21lbnRfbnpfbmMoJGtleSkpCgkJCQl7CgkJCQkJaWYgKGlzc2V0KCR0aGlzLT5kYXRhWydsaW5rcyddW1NJTVBMRVBJRV9JQU5BX0xJTktfUkVMQVRJT05TX1JFR0lTVFJZIC4gJGtleV0pKQoJCQkJCXsKCQkJCQkJJHRoaXMtPmRhdGFbJ2xpbmtzJ11bU0lNUExFUElFX0lBTkFfTElOS19SRUxBVElPTlNfUkVHSVNUUlkgLiAka2V5XSA9IGFycmF5X21lcmdlKCR0aGlzLT5kYXRhWydsaW5rcyddWyRrZXldLCAkdGhpcy0+ZGF0YVsnbGlua3MnXVtTSU1QTEVQSUVfSUFOQV9MSU5LX1JFTEFUSU9OU19SRUdJU1RSWSAuICRrZXldKTsKCQkJCQkJJHRoaXMtPmRhdGFbJ2xpbmtzJ11bJGtleV0gPSYgJHRoaXMtPmRhdGFbJ2xpbmtzJ11bU0lNUExFUElFX0lBTkFfTElOS19SRUxBVElPTlNfUkVHSVNUUlkgLiAka2V5XTsKCQkJCQl9CgkJCQkJZWxzZQoJCQkJCXsKCQkJCQkJJHRoaXMtPmRhdGFbJ2xpbmtzJ11bU0lNUExFUElFX0lBTkFfTElOS19SRUxBVElPTlNfUkVHSVNUUlkgLiAka2V5XSA9JiAkdGhpcy0+ZGF0YVsnbGlua3MnXVska2V5XTsKCQkJCQl9CgkJCQl9CgkJCQllbHNlaWYgKHN1YnN0cigka2V5LCAwLCA0MSkgPT0gU0lNUExFUElFX0lBTkFfTElOS19SRUxBVElPTlNfUkVHSVNUUlkpCgkJCQl7CgkJCQkJJHRoaXMtPmRhdGFbJ2xpbmtzJ11bc3Vic3RyKCRrZXksIDQxKV0gPSYgJHRoaXMtPmRhdGFbJ2xpbmtzJ11bJGtleV07CgkJCQl9CgkJCQkkdGhpcy0+ZGF0YVsnbGlua3MnXVska2V5XSA9IGFycmF5X3VuaXF1ZSgkdGhpcy0+ZGF0YVsnbGlua3MnXVska2V5XSk7CgkJCX0KCQl9CgoJCWlmIChpc3NldCgkdGhpcy0+ZGF0YVsnbGlua3MnXVskcmVsXSkpCgkJewoJCQlyZXR1cm4gJHRoaXMtPmRhdGFbJ2xpbmtzJ11bJHJlbF07CgkJfQoJCWVsc2UKCQl7CgkJCXJldHVybiBudWxsOwoJCX0KCX0KCglmdW5jdGlvbiBnZXRfZGVzY3JpcHRpb24oKQoJewoJCWlmICgkcmV0dXJuID0gJHRoaXMtPmdldF9zb3VyY2VfdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMTAsICdzdWJ0aXRsZScpKQoJCXsKCQkJcmV0dXJuICR0aGlzLT5zYW5pdGl6ZSgkcmV0dXJuWzBdWydkYXRhJ10sIFNpbXBsZVBpZV9NaXNjOjphdG9tXzEwX2NvbnN0cnVjdF90eXBlKCRyZXR1cm5bMF1bJ2F0dHJpYnMnXSksICR0aGlzLT5nZXRfYmFzZSgkcmV0dXJuWzBdKSk7CgkJfQoJCWVsc2VpZiAoJHJldHVybiA9ICR0aGlzLT5nZXRfc291cmNlX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9BVE9NXzAzLCAndGFnbGluZScpKQoJCXsKCQkJcmV0dXJuICR0aGlzLT5zYW5pdGl6ZSgkcmV0dXJuWzBdWydkYXRhJ10sIFNpbXBsZVBpZV9NaXNjOjphdG9tXzAzX2NvbnN0cnVjdF90eXBlKCRyZXR1cm5bMF1bJ2F0dHJpYnMnXSksICR0aGlzLT5nZXRfYmFzZSgkcmV0dXJuWzBdKSk7CgkJfQoJCWVsc2VpZiAoJHJldHVybiA9ICR0aGlzLT5nZXRfc291cmNlX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9SU1NfMTAsICdkZXNjcmlwdGlvbicpKQoJCXsKCQkJcmV0dXJuICR0aGlzLT5zYW5pdGl6ZSgkcmV0dXJuWzBdWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfTUFZQkVfSFRNTCwgJHRoaXMtPmdldF9iYXNlKCRyZXR1cm5bMF0pKTsKCQl9CgkJZWxzZWlmICgkcmV0dXJuID0gJHRoaXMtPmdldF9zb3VyY2VfdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX1JTU18wOTAsICdkZXNjcmlwdGlvbicpKQoJCXsKCQkJcmV0dXJuICR0aGlzLT5zYW5pdGl6ZSgkcmV0dXJuWzBdWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfTUFZQkVfSFRNTCwgJHRoaXMtPmdldF9iYXNlKCRyZXR1cm5bMF0pKTsKCQl9CgkJZWxzZWlmICgkcmV0dXJuID0gJHRoaXMtPmdldF9zb3VyY2VfdGFncygnJywgJ2Rlc2NyaXB0aW9uJykpCgkJewoJCQlyZXR1cm4gJHRoaXMtPnNhbml0aXplKCRyZXR1cm5bMF1bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9NQVlCRV9IVE1MLCAkdGhpcy0+Z2V0X2Jhc2UoJHJldHVyblswXSkpOwoJCX0KCQllbHNlaWYgKCRyZXR1cm4gPSAkdGhpcy0+Z2V0X3NvdXJjZV90YWdzKFNJTVBMRVBJRV9OQU1FU1BBQ0VfRENfMTEsICdkZXNjcmlwdGlvbicpKQoJCXsKCQkJcmV0dXJuICR0aGlzLT5zYW5pdGl6ZSgkcmV0dXJuWzBdWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJfQoJCWVsc2VpZiAoJHJldHVybiA9ICR0aGlzLT5nZXRfc291cmNlX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9EQ18xMCwgJ2Rlc2NyaXB0aW9uJykpCgkJewoJCQlyZXR1cm4gJHRoaXMtPnNhbml0aXplKCRyZXR1cm5bMF1bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQl9CgkJZWxzZWlmICgkcmV0dXJuID0gJHRoaXMtPmdldF9zb3VyY2VfdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX0lUVU5FUywgJ3N1bW1hcnknKSkKCQl7CgkJCXJldHVybiAkdGhpcy0+c2FuaXRpemUoJHJldHVyblswXVsnZGF0YSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX0hUTUwsICR0aGlzLT5nZXRfYmFzZSgkcmV0dXJuWzBdKSk7CgkJfQoJCWVsc2VpZiAoJHJldHVybiA9ICR0aGlzLT5nZXRfc291cmNlX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9JVFVORVMsICdzdWJ0aXRsZScpKQoJCXsKCQkJcmV0dXJuICR0aGlzLT5zYW5pdGl6ZSgkcmV0dXJuWzBdWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfSFRNTCwgJHRoaXMtPmdldF9iYXNlKCRyZXR1cm5bMF0pKTsKCQl9CgkJZWxzZQoJCXsKCQkJcmV0dXJuIG51bGw7CgkJfQoJfQoKCWZ1bmN0aW9uIGdldF9jb3B5cmlnaHQoKQoJewoJCWlmICgkcmV0dXJuID0gJHRoaXMtPmdldF9zb3VyY2VfdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMTAsICdyaWdodHMnKSkKCQl7CgkJCXJldHVybiAkdGhpcy0+c2FuaXRpemUoJHJldHVyblswXVsnZGF0YSddLCBTaW1wbGVQaWVfTWlzYzo6YXRvbV8xMF9jb25zdHJ1Y3RfdHlwZSgkcmV0dXJuWzBdWydhdHRyaWJzJ10pLCAkdGhpcy0+Z2V0X2Jhc2UoJHJldHVyblswXSkpOwoJCX0KCQllbHNlaWYgKCRyZXR1cm4gPSAkdGhpcy0+Z2V0X3NvdXJjZV90YWdzKFNJTVBMRVBJRV9OQU1FU1BBQ0VfQVRPTV8wMywgJ2NvcHlyaWdodCcpKQoJCXsKCQkJcmV0dXJuICR0aGlzLT5zYW5pdGl6ZSgkcmV0dXJuWzBdWydkYXRhJ10sIFNpbXBsZVBpZV9NaXNjOjphdG9tXzAzX2NvbnN0cnVjdF90eXBlKCRyZXR1cm5bMF1bJ2F0dHJpYnMnXSksICR0aGlzLT5nZXRfYmFzZSgkcmV0dXJuWzBdKSk7CgkJfQoJCWVsc2VpZiAoJHJldHVybiA9ICR0aGlzLT5nZXRfc291cmNlX3RhZ3MoJycsICdjb3B5cmlnaHQnKSkKCQl7CgkJCXJldHVybiAkdGhpcy0+c2FuaXRpemUoJHJldHVyblswXVsnZGF0YSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCX0KCQllbHNlaWYgKCRyZXR1cm4gPSAkdGhpcy0+Z2V0X3NvdXJjZV90YWdzKFNJTVBMRVBJRV9OQU1FU1BBQ0VfRENfMTEsICdyaWdodHMnKSkKCQl7CgkJCXJldHVybiAkdGhpcy0+c2FuaXRpemUoJHJldHVyblswXVsnZGF0YSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCX0KCQllbHNlaWYgKCRyZXR1cm4gPSAkdGhpcy0+Z2V0X3NvdXJjZV90YWdzKFNJTVBMRVBJRV9OQU1FU1BBQ0VfRENfMTAsICdyaWdodHMnKSkKCQl7CgkJCXJldHVybiAkdGhpcy0+c2FuaXRpemUoJHJldHVyblswXVsnZGF0YSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCX0KCQllbHNlCgkJewoJCQlyZXR1cm4gbnVsbDsKCQl9Cgl9CgoJZnVuY3Rpb24gZ2V0X2xhbmd1YWdlKCkKCXsKCQlpZiAoJHJldHVybiA9ICR0aGlzLT5nZXRfc291cmNlX3RhZ3MoJycsICdsYW5ndWFnZScpKQoJCXsKCQkJcmV0dXJuICR0aGlzLT5zYW5pdGl6ZSgkcmV0dXJuWzBdWydkYXRhJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJfQoJCWVsc2VpZiAoJHJldHVybiA9ICR0aGlzLT5nZXRfc291cmNlX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9EQ18xMSwgJ2xhbmd1YWdlJykpCgkJewoJCQlyZXR1cm4gJHRoaXMtPnNhbml0aXplKCRyZXR1cm5bMF1bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9URVhUKTsKCQl9CgkJZWxzZWlmICgkcmV0dXJuID0gJHRoaXMtPmdldF9zb3VyY2VfdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX0RDXzEwLCAnbGFuZ3VhZ2UnKSkKCQl7CgkJCXJldHVybiAkdGhpcy0+c2FuaXRpemUoJHJldHVyblswXVsnZGF0YSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQpOwoJCX0KCQllbHNlaWYgKGlzc2V0KCR0aGlzLT5kYXRhWyd4bWxfbGFuZyddKSkKCQl7CgkJCXJldHVybiAkdGhpcy0+c2FuaXRpemUoJHRoaXMtPmRhdGFbJ3htbF9sYW5nJ10sIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCk7CgkJfQoJCWVsc2UKCQl7CgkJCXJldHVybiBudWxsOwoJCX0KCX0KCglmdW5jdGlvbiBnZXRfbGF0aXR1ZGUoKQoJewoJCWlmICgkcmV0dXJuID0gJHRoaXMtPmdldF9zb3VyY2VfdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX1czQ19CQVNJQ19HRU8sICdsYXQnKSkKCQl7CgkJCXJldHVybiAoZmxvYXQpICRyZXR1cm5bMF1bJ2RhdGEnXTsKCQl9CgkJZWxzZWlmICgoJHJldHVybiA9ICR0aGlzLT5nZXRfc291cmNlX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9HRU9SU1MsICdwb2ludCcpKSAmJiBwcmVnX21hdGNoKCcvXigoPzotKT9bMC05XSsoPzpcLlswLTldKykpICgoPzotKT9bMC05XSsoPzpcLlswLTldKykpJC8nLCAkcmV0dXJuWzBdWydkYXRhJ10sICRtYXRjaCkpCgkJewoJCQlyZXR1cm4gKGZsb2F0KSAkbWF0Y2hbMV07CgkJfQoJCWVsc2UKCQl7CgkJCXJldHVybiBudWxsOwoJCX0KCX0KCglmdW5jdGlvbiBnZXRfbG9uZ2l0dWRlKCkKCXsKCQlpZiAoJHJldHVybiA9ICR0aGlzLT5nZXRfc291cmNlX3RhZ3MoU0lNUExFUElFX05BTUVTUEFDRV9XM0NfQkFTSUNfR0VPLCAnbG9uZycpKQoJCXsKCQkJcmV0dXJuIChmbG9hdCkgJHJldHVyblswXVsnZGF0YSddOwoJCX0KCQllbHNlaWYgKCRyZXR1cm4gPSAkdGhpcy0+Z2V0X3NvdXJjZV90YWdzKFNJTVBMRVBJRV9OQU1FU1BBQ0VfVzNDX0JBU0lDX0dFTywgJ2xvbicpKQoJCXsKCQkJcmV0dXJuIChmbG9hdCkgJHJldHVyblswXVsnZGF0YSddOwoJCX0KCQllbHNlaWYgKCgkcmV0dXJuID0gJHRoaXMtPmdldF9zb3VyY2VfdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX0dFT1JTUywgJ3BvaW50JykpICYmIHByZWdfbWF0Y2goJy9eKCg/Oi0pP1swLTldKyg/OlwuWzAtOV0rKSkgKCg/Oi0pP1swLTldKyg/OlwuWzAtOV0rKSkkLycsICRyZXR1cm5bMF1bJ2RhdGEnXSwgJG1hdGNoKSkKCQl7CgkJCXJldHVybiAoZmxvYXQpICRtYXRjaFsyXTsKCQl9CgkJZWxzZQoJCXsKCQkJcmV0dXJuIG51bGw7CgkJfQoJfQoKCWZ1bmN0aW9uIGdldF9pbWFnZV91cmwoKQoJewoJCWlmICgkcmV0dXJuID0gJHRoaXMtPmdldF9zb3VyY2VfdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX0lUVU5FUywgJ2ltYWdlJykpCgkJewoJCQlyZXR1cm4gJHRoaXMtPnNhbml0aXplKCRyZXR1cm5bMF1bJ2F0dHJpYnMnXVsnJ11bJ2hyZWYnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9JUkkpOwoJCX0KCQllbHNlaWYgKCRyZXR1cm4gPSAkdGhpcy0+Z2V0X3NvdXJjZV90YWdzKFNJTVBMRVBJRV9OQU1FU1BBQ0VfQVRPTV8xMCwgJ2xvZ28nKSkKCQl7CgkJCXJldHVybiAkdGhpcy0+c2FuaXRpemUoJHJldHVyblswXVsnZGF0YSddLCBTSU1QTEVQSUVfQ09OU1RSVUNUX0lSSSwgJHRoaXMtPmdldF9iYXNlKCRyZXR1cm5bMF0pKTsKCQl9CgkJZWxzZWlmICgkcmV0dXJuID0gJHRoaXMtPmdldF9zb3VyY2VfdGFncyhTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMTAsICdpY29uJykpCgkJewoJCQlyZXR1cm4gJHRoaXMtPnNhbml0aXplKCRyZXR1cm5bMF1bJ2RhdGEnXSwgU0lNUExFUElFX0NPTlNUUlVDVF9JUkksICR0aGlzLT5nZXRfYmFzZSgkcmV0dXJuWzBdKSk7CgkJfQoJCWVsc2UKCQl7CgkJCXJldHVybiBudWxsOwoJCX0KCX0KfQoKY2xhc3MgU2ltcGxlUGllX0F1dGhvcgp7Cgl2YXIgJG5hbWU7Cgl2YXIgJGxpbms7Cgl2YXIgJGVtYWlsOwoKCS8vIENvbnN0cnVjdG9yLCB1c2VkIHRvIGlucHV0IHRoZSBkYXRhCglmdW5jdGlvbiBTaW1wbGVQaWVfQXV0aG9yKCRuYW1lID0gbnVsbCwgJGxpbmsgPSBudWxsLCAkZW1haWwgPSBudWxsKQoJewoJCSR0aGlzLT5uYW1lID0gJG5hbWU7CgkJJHRoaXMtPmxpbmsgPSAkbGluazsKCQkkdGhpcy0+ZW1haWwgPSAkZW1haWw7Cgl9CgoJZnVuY3Rpb24gX190b1N0cmluZygpCgl7CgkJLy8gVGhlcmUgaXMgbm8gJHRoaXMtPmRhdGEgaGVyZQoJCXJldHVybiBtZDUoc2VyaWFsaXplKCR0aGlzKSk7Cgl9CgoJZnVuY3Rpb24gZ2V0X25hbWUoKQoJewoJCWlmICgkdGhpcy0+bmFtZSAhPT0gbnVsbCkKCQl7CgkJCXJldHVybiAkdGhpcy0+bmFtZTsKCQl9CgkJZWxzZQoJCXsKCQkJcmV0dXJuIG51bGw7CgkJfQoJfQoKCWZ1bmN0aW9uIGdldF9saW5rKCkKCXsKCQlpZiAoJHRoaXMtPmxpbmsgIT09IG51bGwpCgkJewoJCQlyZXR1cm4gJHRoaXMtPmxpbms7CgkJfQoJCWVsc2UKCQl7CgkJCXJldHVybiBudWxsOwoJCX0KCX0KCglmdW5jdGlvbiBnZXRfZW1haWwoKQoJewoJCWlmICgkdGhpcy0+ZW1haWwgIT09IG51bGwpCgkJewoJCQlyZXR1cm4gJHRoaXMtPmVtYWlsOwoJCX0KCQllbHNlCgkJewoJCQlyZXR1cm4gbnVsbDsKCQl9Cgl9Cn0KCmNsYXNzIFNpbXBsZVBpZV9DYXRlZ29yeQp7Cgl2YXIgJHRlcm07Cgl2YXIgJHNjaGVtZTsKCXZhciAkbGFiZWw7CgoJLy8gQ29uc3RydWN0b3IsIHVzZWQgdG8gaW5wdXQgdGhlIGRhdGEKCWZ1bmN0aW9uIFNpbXBsZVBpZV9DYXRlZ29yeSgkdGVybSA9IG51bGwsICRzY2hlbWUgPSBudWxsLCAkbGFiZWwgPSBudWxsKQoJewoJCSR0aGlzLT50ZXJtID0gJHRlcm07CgkJJHRoaXMtPnNjaGVtZSA9ICRzY2hlbWU7CgkJJHRoaXMtPmxhYmVsID0gJGxhYmVsOwoJfQoKCWZ1bmN0aW9uIF9fdG9TdHJpbmcoKQoJewoJCS8vIFRoZXJlIGlzIG5vICR0aGlzLT5kYXRhIGhlcmUKCQlyZXR1cm4gbWQ1KHNlcmlhbGl6ZSgkdGhpcykpOwoJfQoKCWZ1bmN0aW9uIGdldF90ZXJtKCkKCXsKCQlpZiAoJHRoaXMtPnRlcm0gIT09IG51bGwpCgkJewoJCQlyZXR1cm4gJHRoaXMtPnRlcm07CgkJfQoJCWVsc2UKCQl7CgkJCXJldHVybiBudWxsOwoJCX0KCX0KCglmdW5jdGlvbiBnZXRfc2NoZW1lKCkKCXsKCQlpZiAoJHRoaXMtPnNjaGVtZSAhPT0gbnVsbCkKCQl7CgkJCXJldHVybiAkdGhpcy0+c2NoZW1lOwoJCX0KCQllbHNlCgkJewoJCQlyZXR1cm4gbnVsbDsKCQl9Cgl9CgoJZnVuY3Rpb24gZ2V0X2xhYmVsKCkKCXsKCQlpZiAoJHRoaXMtPmxhYmVsICE9PSBudWxsKQoJCXsKCQkJcmV0dXJuICR0aGlzLT5sYWJlbDsKCQl9CgkJZWxzZQoJCXsKCQkJcmV0dXJuICR0aGlzLT5nZXRfdGVybSgpOwoJCX0KCX0KfQoKY2xhc3MgU2ltcGxlUGllX0VuY2xvc3VyZQp7Cgl2YXIgJGJpdHJhdGU7Cgl2YXIgJGNhcHRpb25zOwoJdmFyICRjYXRlZ29yaWVzOwoJdmFyICRjaGFubmVsczsKCXZhciAkY29weXJpZ2h0OwoJdmFyICRjcmVkaXRzOwoJdmFyICRkZXNjcmlwdGlvbjsKCXZhciAkZHVyYXRpb247Cgl2YXIgJGV4cHJlc3Npb247Cgl2YXIgJGZyYW1lcmF0ZTsKCXZhciAkaGFuZGxlcjsKCXZhciAkaGFzaGVzOwoJdmFyICRoZWlnaHQ7Cgl2YXIgJGphdmFzY3JpcHQ7Cgl2YXIgJGtleXdvcmRzOwoJdmFyICRsYW5nOwoJdmFyICRsZW5ndGg7Cgl2YXIgJGxpbms7Cgl2YXIgJG1lZGl1bTsKCXZhciAkcGxheWVyOwoJdmFyICRyYXRpbmdzOwoJdmFyICRyZXN0cmljdGlvbnM7Cgl2YXIgJHNhbXBsaW5ncmF0ZTsKCXZhciAkdGh1bWJuYWlsczsKCXZhciAkdGl0bGU7Cgl2YXIgJHR5cGU7Cgl2YXIgJHdpZHRoOwoKCS8vIENvbnN0cnVjdG9yLCB1c2VkIHRvIGlucHV0IHRoZSBkYXRhCglmdW5jdGlvbiBTaW1wbGVQaWVfRW5jbG9zdXJlKCRsaW5rID0gbnVsbCwgJHR5cGUgPSBudWxsLCAkbGVuZ3RoID0gbnVsbCwgJGphdmFzY3JpcHQgPSBudWxsLCAkYml0cmF0ZSA9IG51bGwsICRjYXB0aW9ucyA9IG51bGwsICRjYXRlZ29yaWVzID0gbnVsbCwgJGNoYW5uZWxzID0gbnVsbCwgJGNvcHlyaWdodCA9IG51bGwsICRjcmVkaXRzID0gbnVsbCwgJGRlc2NyaXB0aW9uID0gbnVsbCwgJGR1cmF0aW9uID0gbnVsbCwgJGV4cHJlc3Npb24gPSBudWxsLCAkZnJhbWVyYXRlID0gbnVsbCwgJGhhc2hlcyA9IG51bGwsICRoZWlnaHQgPSBudWxsLCAka2V5d29yZHMgPSBudWxsLCAkbGFuZyA9IG51bGwsICRtZWRpdW0gPSBudWxsLCAkcGxheWVyID0gbnVsbCwgJHJhdGluZ3MgPSBudWxsLCAkcmVzdHJpY3Rpb25zID0gbnVsbCwgJHNhbXBsaW5ncmF0ZSA9IG51bGwsICR0aHVtYm5haWxzID0gbnVsbCwgJHRpdGxlID0gbnVsbCwgJHdpZHRoID0gbnVsbCkKCXsKCQkkdGhpcy0+Yml0cmF0ZSA9ICRiaXRyYXRlOwoJCSR0aGlzLT5jYXB0aW9ucyA9ICRjYXB0aW9uczsKCQkkdGhpcy0+Y2F0ZWdvcmllcyA9ICRjYXRlZ29yaWVzOwoJCSR0aGlzLT5jaGFubmVscyA9ICRjaGFubmVsczsKCQkkdGhpcy0+Y29weXJpZ2h0ID0gJGNvcHlyaWdodDsKCQkkdGhpcy0+Y3JlZGl0cyA9ICRjcmVkaXRzOwoJCSR0aGlzLT5kZXNjcmlwdGlvbiA9ICRkZXNjcmlwdGlvbjsKCQkkdGhpcy0+ZHVyYXRpb24gPSAkZHVyYXRpb247CgkJJHRoaXMtPmV4cHJlc3Npb24gPSAkZXhwcmVzc2lvbjsKCQkkdGhpcy0+ZnJhbWVyYXRlID0gJGZyYW1lcmF0ZTsKCQkkdGhpcy0+aGFzaGVzID0gJGhhc2hlczsKCQkkdGhpcy0+aGVpZ2h0ID0gJGhlaWdodDsKCQkkdGhpcy0+amF2YXNjcmlwdCA9ICRqYXZhc2NyaXB0OwoJCSR0aGlzLT5rZXl3b3JkcyA9ICRrZXl3b3JkczsKCQkkdGhpcy0+bGFuZyA9ICRsYW5nOwoJCSR0aGlzLT5sZW5ndGggPSAkbGVuZ3RoOwoJCSR0aGlzLT5saW5rID0gJGxpbms7CgkJJHRoaXMtPm1lZGl1bSA9ICRtZWRpdW07CgkJJHRoaXMtPnBsYXllciA9ICRwbGF5ZXI7CgkJJHRoaXMtPnJhdGluZ3MgPSAkcmF0aW5nczsKCQkkdGhpcy0+cmVzdHJpY3Rpb25zID0gJHJlc3RyaWN0aW9uczsKCQkkdGhpcy0+c2FtcGxpbmdyYXRlID0gJHNhbXBsaW5ncmF0ZTsKCQkkdGhpcy0+dGh1bWJuYWlscyA9ICR0aHVtYm5haWxzOwoJCSR0aGlzLT50aXRsZSA9ICR0aXRsZTsKCQkkdGhpcy0+dHlwZSA9ICR0eXBlOwoJCSR0aGlzLT53aWR0aCA9ICR3aWR0aDsKCQlpZiAoY2xhc3NfZXhpc3RzKCdpZG5hX2NvbnZlcnQnKSkKCQl7CgkJCSRpZG4gPSYgbmV3IGlkbmFfY29udmVydDsKCQkJJHBhcnNlZCA9IFNpbXBsZVBpZV9NaXNjOjpwYXJzZV91cmwoJGxpbmspOwoJCQkkdGhpcy0+bGluayA9IFNpbXBsZVBpZV9NaXNjOjpjb21wcmVzc19wYXJzZV91cmwoJHBhcnNlZFsnc2NoZW1lJ10sICRpZG4tPmVuY29kZSgkcGFyc2VkWydhdXRob3JpdHknXSksICRwYXJzZWRbJ3BhdGgnXSwgJHBhcnNlZFsncXVlcnknXSwgJHBhcnNlZFsnZnJhZ21lbnQnXSk7CgkJfQoJCSR0aGlzLT5oYW5kbGVyID0gJHRoaXMtPmdldF9oYW5kbGVyKCk7IC8vIE5lZWRzIHRvIGxvYWQgbGFzdAoJfQoKCWZ1bmN0aW9uIF9fdG9TdHJpbmcoKQoJewoJCS8vIFRoZXJlIGlzIG5vICR0aGlzLT5kYXRhIGhlcmUKCQlyZXR1cm4gbWQ1KHNlcmlhbGl6ZSgkdGhpcykpOwoJfQoKCWZ1bmN0aW9uIGdldF9iaXRyYXRlKCkKCXsKCQlpZiAoJHRoaXMtPmJpdHJhdGUgIT09IG51bGwpCgkJewoJCQlyZXR1cm4gJHRoaXMtPmJpdHJhdGU7CgkJfQoJCWVsc2UKCQl7CgkJCXJldHVybiBudWxsOwoJCX0KCX0KCglmdW5jdGlvbiBnZXRfY2FwdGlvbigka2V5ID0gMCkKCXsKCQkkY2FwdGlvbnMgPSAkdGhpcy0+Z2V0X2NhcHRpb25zKCk7CgkJaWYgKGlzc2V0KCRjYXB0aW9uc1ska2V5XSkpCgkJewoJCQlyZXR1cm4gJGNhcHRpb25zWyRrZXldOwoJCX0KCQllbHNlCgkJewoJCQlyZXR1cm4gbnVsbDsKCQl9Cgl9CgoJZnVuY3Rpb24gZ2V0X2NhcHRpb25zKCkKCXsKCQlpZiAoJHRoaXMtPmNhcHRpb25zICE9PSBudWxsKQoJCXsKCQkJcmV0dXJuICR0aGlzLT5jYXB0aW9uczsKCQl9CgkJZWxzZQoJCXsKCQkJcmV0dXJuIG51bGw7CgkJfQoJfQoKCWZ1bmN0aW9uIGdldF9jYXRlZ29yeSgka2V5ID0gMCkKCXsKCQkkY2F0ZWdvcmllcyA9ICR0aGlzLT5nZXRfY2F0ZWdvcmllcygpOwoJCWlmIChpc3NldCgkY2F0ZWdvcmllc1ska2V5XSkpCgkJewoJCQlyZXR1cm4gJGNhdGVnb3JpZXNbJGtleV07CgkJfQoJCWVsc2UKCQl7CgkJCXJldHVybiBudWxsOwoJCX0KCX0KCglmdW5jdGlvbiBnZXRfY2F0ZWdvcmllcygpCgl7CgkJaWYgKCR0aGlzLT5jYXRlZ29yaWVzICE9PSBudWxsKQoJCXsKCQkJcmV0dXJuICR0aGlzLT5jYXRlZ29yaWVzOwoJCX0KCQllbHNlCgkJewoJCQlyZXR1cm4gbnVsbDsKCQl9Cgl9CgoJZnVuY3Rpb24gZ2V0X2NoYW5uZWxzKCkKCXsKCQlpZiAoJHRoaXMtPmNoYW5uZWxzICE9PSBudWxsKQoJCXsKCQkJcmV0dXJuICR0aGlzLT5jaGFubmVsczsKCQl9CgkJZWxzZQoJCXsKCQkJcmV0dXJuIG51bGw7CgkJfQoJfQoKCWZ1bmN0aW9uIGdldF9jb3B5cmlnaHQoKQoJewoJCWlmICgkdGhpcy0+Y29weXJpZ2h0ICE9PSBudWxsKQoJCXsKCQkJcmV0dXJuICR0aGlzLT5jb3B5cmlnaHQ7CgkJfQoJCWVsc2UKCQl7CgkJCXJldHVybiBudWxsOwoJCX0KCX0KCglmdW5jdGlvbiBnZXRfY3JlZGl0KCRrZXkgPSAwKQoJewoJCSRjcmVkaXRzID0gJHRoaXMtPmdldF9jcmVkaXRzKCk7CgkJaWYgKGlzc2V0KCRjcmVkaXRzWyRrZXldKSkKCQl7CgkJCXJldHVybiAkY3JlZGl0c1ska2V5XTsKCQl9CgkJZWxzZQoJCXsKCQkJcmV0dXJuIG51bGw7CgkJfQoJfQoKCWZ1bmN0aW9uIGdldF9jcmVkaXRzKCkKCXsKCQlpZiAoJHRoaXMtPmNyZWRpdHMgIT09IG51bGwpCgkJewoJCQlyZXR1cm4gJHRoaXMtPmNyZWRpdHM7CgkJfQoJCWVsc2UKCQl7CgkJCXJldHVybiBudWxsOwoJCX0KCX0KCglmdW5jdGlvbiBnZXRfZGVzY3JpcHRpb24oKQoJewoJCWlmICgkdGhpcy0+ZGVzY3JpcHRpb24gIT09IG51bGwpCgkJewoJCQlyZXR1cm4gJHRoaXMtPmRlc2NyaXB0aW9uOwoJCX0KCQllbHNlCgkJewoJCQlyZXR1cm4gbnVsbDsKCQl9Cgl9CgoJZnVuY3Rpb24gZ2V0X2R1cmF0aW9uKCRjb252ZXJ0ID0gZmFsc2UpCgl7CgkJaWYgKCR0aGlzLT5kdXJhdGlvbiAhPT0gbnVsbCkKCQl7CgkJCWlmICgkY29udmVydCkKCQkJewoJCQkJJHRpbWUgPSBTaW1wbGVQaWVfTWlzYzo6dGltZV9obXMoJHRoaXMtPmR1cmF0aW9uKTsKCQkJCXJldHVybiAkdGltZTsKCQkJfQoJCQllbHNlCgkJCXsKCQkJCXJldHVybiAkdGhpcy0+ZHVyYXRpb247CgkJCX0KCQl9CgkJZWxzZQoJCXsKCQkJcmV0dXJuIG51bGw7CgkJfQoJfQoKCWZ1bmN0aW9uIGdldF9leHByZXNzaW9uKCkKCXsKCQlpZiAoJHRoaXMtPmV4cHJlc3Npb24gIT09IG51bGwpCgkJewoJCQlyZXR1cm4gJHRoaXMtPmV4cHJlc3Npb247CgkJfQoJCWVsc2UKCQl7CgkJCXJldHVybiAnZnVsbCc7CgkJfQoJfQoKCWZ1bmN0aW9uIGdldF9leHRlbnNpb24oKQoJewoJCWlmICgkdGhpcy0+bGluayAhPT0gbnVsbCkKCQl7CgkJCSR1cmwgPSBTaW1wbGVQaWVfTWlzYzo6cGFyc2VfdXJsKCR0aGlzLT5saW5rKTsKCQkJaWYgKCR1cmxbJ3BhdGgnXSAhPT0gJycpCgkJCXsKCQkJCXJldHVybiBwYXRoaW5mbygkdXJsWydwYXRoJ10sIFBBVEhJTkZPX0VYVEVOU0lPTik7CgkJCX0KCQl9CgkJcmV0dXJuIG51bGw7Cgl9CgoJZnVuY3Rpb24gZ2V0X2ZyYW1lcmF0ZSgpCgl7CgkJaWYgKCR0aGlzLT5mcmFtZXJhdGUgIT09IG51bGwpCgkJewoJCQlyZXR1cm4gJHRoaXMtPmZyYW1lcmF0ZTsKCQl9CgkJZWxzZQoJCXsKCQkJcmV0dXJuIG51bGw7CgkJfQoJfQoKCWZ1bmN0aW9uIGdldF9oYW5kbGVyKCkKCXsKCQlyZXR1cm4gJHRoaXMtPmdldF9yZWFsX3R5cGUodHJ1ZSk7Cgl9CgoJZnVuY3Rpb24gZ2V0X2hhc2goJGtleSA9IDApCgl7CgkJJGhhc2hlcyA9ICR0aGlzLT5nZXRfaGFzaGVzKCk7CgkJaWYgKGlzc2V0KCRoYXNoZXNbJGtleV0pKQoJCXsKCQkJcmV0dXJuICRoYXNoZXNbJGtleV07CgkJfQoJCWVsc2UKCQl7CgkJCXJldHVybiBudWxsOwoJCX0KCX0KCglmdW5jdGlvbiBnZXRfaGFzaGVzKCkKCXsKCQlpZiAoJHRoaXMtPmhhc2hlcyAhPT0gbnVsbCkKCQl7CgkJCXJldHVybiAkdGhpcy0+aGFzaGVzOwoJCX0KCQllbHNlCgkJewoJCQlyZXR1cm4gbnVsbDsKCQl9Cgl9CgoJZnVuY3Rpb24gZ2V0X2hlaWdodCgpCgl7CgkJaWYgKCR0aGlzLT5oZWlnaHQgIT09IG51bGwpCgkJewoJCQlyZXR1cm4gJHRoaXMtPmhlaWdodDsKCQl9CgkJZWxzZQoJCXsKCQkJcmV0dXJuIG51bGw7CgkJfQoJfQoKCWZ1bmN0aW9uIGdldF9sYW5ndWFnZSgpCgl7CgkJaWYgKCR0aGlzLT5sYW5nICE9PSBudWxsKQoJCXsKCQkJcmV0dXJuICR0aGlzLT5sYW5nOwoJCX0KCQllbHNlCgkJewoJCQlyZXR1cm4gbnVsbDsKCQl9Cgl9CgoJZnVuY3Rpb24gZ2V0X2tleXdvcmQoJGtleSA9IDApCgl7CgkJJGtleXdvcmRzID0gJHRoaXMtPmdldF9rZXl3b3JkcygpOwoJCWlmIChpc3NldCgka2V5d29yZHNbJGtleV0pKQoJCXsKCQkJcmV0dXJuICRrZXl3b3Jkc1ska2V5XTsKCQl9CgkJZWxzZQoJCXsKCQkJcmV0dXJuIG51bGw7CgkJfQoJfQoKCWZ1bmN0aW9uIGdldF9rZXl3b3JkcygpCgl7CgkJaWYgKCR0aGlzLT5rZXl3b3JkcyAhPT0gbnVsbCkKCQl7CgkJCXJldHVybiAkdGhpcy0+a2V5d29yZHM7CgkJfQoJCWVsc2UKCQl7CgkJCXJldHVybiBudWxsOwoJCX0KCX0KCglmdW5jdGlvbiBnZXRfbGVuZ3RoKCkKCXsKCQlpZiAoJHRoaXMtPmxlbmd0aCAhPT0gbnVsbCkKCQl7CgkJCXJldHVybiAkdGhpcy0+bGVuZ3RoOwoJCX0KCQllbHNlCgkJewoJCQlyZXR1cm4gbnVsbDsKCQl9Cgl9CgoJZnVuY3Rpb24gZ2V0X2xpbmsoKQoJewoJCWlmICgkdGhpcy0+bGluayAhPT0gbnVsbCkKCQl7CgkJCXJldHVybiB1cmxkZWNvZGUoJHRoaXMtPmxpbmspOwoJCX0KCQllbHNlCgkJewoJCQlyZXR1cm4gbnVsbDsKCQl9Cgl9CgoJZnVuY3Rpb24gZ2V0X21lZGl1bSgpCgl7CgkJaWYgKCR0aGlzLT5tZWRpdW0gIT09IG51bGwpCgkJewoJCQlyZXR1cm4gJHRoaXMtPm1lZGl1bTsKCQl9CgkJZWxzZQoJCXsKCQkJcmV0dXJuIG51bGw7CgkJfQoJfQoKCWZ1bmN0aW9uIGdldF9wbGF5ZXIoKQoJewoJCWlmICgkdGhpcy0+cGxheWVyICE9PSBudWxsKQoJCXsKCQkJcmV0dXJuICR0aGlzLT5wbGF5ZXI7CgkJfQoJCWVsc2UKCQl7CgkJCXJldHVybiBudWxsOwoJCX0KCX0KCglmdW5jdGlvbiBnZXRfcmF0aW5nKCRrZXkgPSAwKQoJewoJCSRyYXRpbmdzID0gJHRoaXMtPmdldF9yYXRpbmdzKCk7CgkJaWYgKGlzc2V0KCRyYXRpbmdzWyRrZXldKSkKCQl7CgkJCXJldHVybiAkcmF0aW5nc1ska2V5XTsKCQl9CgkJZWxzZQoJCXsKCQkJcmV0dXJuIG51bGw7CgkJfQoJfQoKCWZ1bmN0aW9uIGdldF9yYXRpbmdzKCkKCXsKCQlpZiAoJHRoaXMtPnJhdGluZ3MgIT09IG51bGwpCgkJewoJCQlyZXR1cm4gJHRoaXMtPnJhdGluZ3M7CgkJfQoJCWVsc2UKCQl7CgkJCXJldHVybiBudWxsOwoJCX0KCX0KCglmdW5jdGlvbiBnZXRfcmVzdHJpY3Rpb24oJGtleSA9IDApCgl7CgkJJHJlc3RyaWN0aW9ucyA9ICR0aGlzLT5nZXRfcmVzdHJpY3Rpb25zKCk7CgkJaWYgKGlzc2V0KCRyZXN0cmljdGlvbnNbJGtleV0pKQoJCXsKCQkJcmV0dXJuICRyZXN0cmljdGlvbnNbJGtleV07CgkJfQoJCWVsc2UKCQl7CgkJCXJldHVybiBudWxsOwoJCX0KCX0KCglmdW5jdGlvbiBnZXRfcmVzdHJpY3Rpb25zKCkKCXsKCQlpZiAoJHRoaXMtPnJlc3RyaWN0aW9ucyAhPT0gbnVsbCkKCQl7CgkJCXJldHVybiAkdGhpcy0+cmVzdHJpY3Rpb25zOwoJCX0KCQllbHNlCgkJewoJCQlyZXR1cm4gbnVsbDsKCQl9Cgl9CgoJZnVuY3Rpb24gZ2V0X3NhbXBsaW5nX3JhdGUoKQoJewoJCWlmICgkdGhpcy0+c2FtcGxpbmdyYXRlICE9PSBudWxsKQoJCXsKCQkJcmV0dXJuICR0aGlzLT5zYW1wbGluZ3JhdGU7CgkJfQoJCWVsc2UKCQl7CgkJCXJldHVybiBudWxsOwoJCX0KCX0KCglmdW5jdGlvbiBnZXRfc2l6ZSgpCgl7CgkJJGxlbmd0aCA9ICR0aGlzLT5nZXRfbGVuZ3RoKCk7CgkJaWYgKCRsZW5ndGggIT09IG51bGwpCgkJewoJCQlyZXR1cm4gcm91bmQoJGxlbmd0aC8xMDQ4NTc2LCAyKTsKCQl9CgkJZWxzZQoJCXsKCQkJcmV0dXJuIG51bGw7CgkJfQoJfQoKCWZ1bmN0aW9uIGdldF90aHVtYm5haWwoJGtleSA9IDApCgl7CgkJJHRodW1ibmFpbHMgPSAkdGhpcy0+Z2V0X3RodW1ibmFpbHMoKTsKCQlpZiAoaXNzZXQoJHRodW1ibmFpbHNbJGtleV0pKQoJCXsKCQkJcmV0dXJuICR0aHVtYm5haWxzWyRrZXldOwoJCX0KCQllbHNlCgkJewoJCQlyZXR1cm4gbnVsbDsKCQl9Cgl9CgoJZnVuY3Rpb24gZ2V0X3RodW1ibmFpbHMoKQoJewoJCWlmICgkdGhpcy0+dGh1bWJuYWlscyAhPT0gbnVsbCkKCQl7CgkJCXJldHVybiAkdGhpcy0+dGh1bWJuYWlsczsKCQl9CgkJZWxzZQoJCXsKCQkJcmV0dXJuIG51bGw7CgkJfQoJfQoKCWZ1bmN0aW9uIGdldF90aXRsZSgpCgl7CgkJaWYgKCR0aGlzLT50aXRsZSAhPT0gbnVsbCkKCQl7CgkJCXJldHVybiAkdGhpcy0+dGl0bGU7CgkJfQoJCWVsc2UKCQl7CgkJCXJldHVybiBudWxsOwoJCX0KCX0KCglmdW5jdGlvbiBnZXRfdHlwZSgpCgl7CgkJaWYgKCR0aGlzLT50eXBlICE9PSBudWxsKQoJCXsKCQkJcmV0dXJuICR0aGlzLT50eXBlOwoJCX0KCQllbHNlCgkJewoJCQlyZXR1cm4gbnVsbDsKCQl9Cgl9CgoJZnVuY3Rpb24gZ2V0X3dpZHRoKCkKCXsKCQlpZiAoJHRoaXMtPndpZHRoICE9PSBudWxsKQoJCXsKCQkJcmV0dXJuICR0aGlzLT53aWR0aDsKCQl9CgkJZWxzZQoJCXsKCQkJcmV0dXJuIG51bGw7CgkJfQoJfQoKCWZ1bmN0aW9uIG5hdGl2ZV9lbWJlZCgkb3B0aW9ucz0nJykKCXsKCQlyZXR1cm4gJHRoaXMtPmVtYmVkKCRvcHRpb25zLCB0cnVlKTsKCX0KCgkvKioKCSAqIEB0b2RvIElmIHRoZSBkaW1lbnNpb25zIGZvciBtZWRpYTpjb250ZW50IGFyZSBkZWZpbmVkLCB1c2UgdGhlbSB3aGVuIHdpZHRoL2hlaWdodCBhcmUgc2V0IHRvICdhdXRvJy4KCSAqLwoJZnVuY3Rpb24gZW1iZWQoJG9wdGlvbnMgPSAnJywgJG5hdGl2ZSA9IGZhbHNlKQoJewoJCS8vIFNldCB1cCBkZWZhdWx0cwoJCSRhdWRpbyA9ICcnOwoJCSR2aWRlbyA9ICcnOwoJCSRhbHQgPSAnJzsKCQkkYWx0Y2xhc3MgPSAnJzsKCQkkbG9vcCA9ICdmYWxzZSc7CgkJJHdpZHRoID0gJ2F1dG8nOwoJCSRoZWlnaHQgPSAnYXV0byc7CgkJJGJnY29sb3IgPSAnI2ZmZmZmZic7CgkJJG1lZGlhcGxheWVyID0gJyc7CgkJJHdpZGVzY3JlZW4gPSBmYWxzZTsKCQkkaGFuZGxlciA9ICR0aGlzLT5nZXRfaGFuZGxlcigpOwoJCSR0eXBlID0gJHRoaXMtPmdldF9yZWFsX3R5cGUoKTsKCgkJLy8gUHJvY2VzcyBvcHRpb25zIGFuZCByZWFzc2lnbiB2YWx1ZXMgYXMgbmVjZXNzYXJ5CgkJaWYgKGlzX2FycmF5KCRvcHRpb25zKSkKCQl7CgkJCWV4dHJhY3QoJG9wdGlvbnMpOwoJCX0KCQllbHNlCgkJewoJCQkkb3B0aW9ucyA9IGV4cGxvZGUoJywnLCAkb3B0aW9ucyk7CgkJCWZvcmVhY2goJG9wdGlvbnMgYXMgJG9wdGlvbikKCQkJewoJCQkJJG9wdCA9IGV4cGxvZGUoJzonLCAkb3B0aW9uLCAyKTsKCQkJCWlmIChpc3NldCgkb3B0WzBdLCAkb3B0WzFdKSkKCQkJCXsKCQkJCQkkb3B0WzBdID0gdHJpbSgkb3B0WzBdKTsKCQkJCQkkb3B0WzFdID0gdHJpbSgkb3B0WzFdKTsKCQkJCQlzd2l0Y2ggKCRvcHRbMF0pCgkJCQkJewoJCQkJCQljYXNlICdhdWRpbyc6CgkJCQkJCQkkYXVkaW8gPSAkb3B0WzFdOwoJCQkJCQkJYnJlYWs7CgoJCQkJCQljYXNlICd2aWRlbyc6CgkJCQkJCQkkdmlkZW8gPSAkb3B0WzFdOwoJCQkJCQkJYnJlYWs7CgoJCQkJCQljYXNlICdhbHQnOgoJCQkJCQkJJGFsdCA9ICRvcHRbMV07CgkJCQkJCQlicmVhazsKCgkJCQkJCWNhc2UgJ2FsdGNsYXNzJzoKCQkJCQkJCSRhbHRjbGFzcyA9ICRvcHRbMV07CgkJCQkJCQlicmVhazsKCgkJCQkJCWNhc2UgJ2xvb3AnOgoJCQkJCQkJJGxvb3AgPSAkb3B0WzFdOwoJCQkJCQkJYnJlYWs7CgoJCQkJCQljYXNlICd3aWR0aCc6CgkJCQkJCQkkd2lkdGggPSAkb3B0WzFdOwoJCQkJCQkJYnJlYWs7CgoJCQkJCQljYXNlICdoZWlnaHQnOgoJCQkJCQkJJGhlaWdodCA9ICRvcHRbMV07CgkJCQkJCQlicmVhazsKCgkJCQkJCWNhc2UgJ2JnY29sb3InOgoJCQkJCQkJJGJnY29sb3IgPSAkb3B0WzFdOwoJCQkJCQkJYnJlYWs7CgoJCQkJCQljYXNlICdtZWRpYXBsYXllcic6CgkJCQkJCQkkbWVkaWFwbGF5ZXIgPSAkb3B0WzFdOwoJCQkJCQkJYnJlYWs7CgoJCQkJCQljYXNlICd3aWRlc2NyZWVuJzoKCQkJCQkJCSR3aWRlc2NyZWVuID0gJG9wdFsxXTsKCQkJCQkJCWJyZWFrOwoJCQkJCX0KCQkJCX0KCQkJfQoJCX0KCgkJJG1pbWUgPSBleHBsb2RlKCcvJywgJHR5cGUsIDIpOwoJCSRtaW1lID0gJG1pbWVbMF07CgoJCS8vIFByb2Nlc3MgdmFsdWVzIGZvciAnYXV0bycKCQlpZiAoJHdpZHRoID09ICdhdXRvJykKCQl7CgkJCWlmICgkbWltZSA9PSAndmlkZW8nKQoJCQl7CgkJCQlpZiAoJGhlaWdodCA9PSAnYXV0bycpCgkJCQl7CgkJCQkJJHdpZHRoID0gNDgwOwoJCQkJfQoJCQkJZWxzZWlmICgkd2lkZXNjcmVlbikKCQkJCXsKCQkJCQkkd2lkdGggPSByb3VuZCgoaW50dmFsKCRoZWlnaHQpLzkpKjE2KTsKCQkJCX0KCQkJCWVsc2UKCQkJCXsKCQkJCQkkd2lkdGggPSByb3VuZCgoaW50dmFsKCRoZWlnaHQpLzMpKjQpOwoJCQkJfQoJCQl9CgkJCWVsc2UKCQkJewoJCQkJJHdpZHRoID0gJzEwMCUnOwoJCQl9CgkJfQoKCQlpZiAoJGhlaWdodCA9PSAnYXV0bycpCgkJewoJCQlpZiAoJG1pbWUgPT0gJ2F1ZGlvJykKCQkJewoJCQkJJGhlaWdodCA9IDA7CgkJCX0KCQkJZWxzZWlmICgkbWltZSA9PSAndmlkZW8nKQoJCQl7CgkJCQlpZiAoJHdpZHRoID09ICdhdXRvJykKCQkJCXsKCQkJCQlpZiAoJHdpZGVzY3JlZW4pCgkJCQkJewoJCQkJCQkkaGVpZ2h0ID0gMjcwOwoJCQkJCX0KCQkJCQllbHNlCgkJCQkJewoJCQkJCQkkaGVpZ2h0ID0gMzYwOwoJCQkJCX0KCQkJCX0KCQkJCWVsc2VpZiAoJHdpZGVzY3JlZW4pCgkJCQl7CgkJCQkJJGhlaWdodCA9IHJvdW5kKChpbnR2YWwoJHdpZHRoKS8xNikqOSk7CgkJCQl9CgkJCQllbHNlCgkJCQl7CgkJCQkJJGhlaWdodCA9IHJvdW5kKChpbnR2YWwoJHdpZHRoKS80KSozKTsKCQkJCX0KCQkJfQoJCQllbHNlCgkJCXsKCQkJCSRoZWlnaHQgPSAzNzY7CgkJCX0KCQl9CgkJZWxzZWlmICgkbWltZSA9PSAnYXVkaW8nKQoJCXsKCQkJJGhlaWdodCA9IDA7CgkJfQoKCQkvLyBTZXQgcHJvcGVyIHBsYWNlaG9sZGVyIHZhbHVlCgkJaWYgKCRtaW1lID09ICdhdWRpbycpCgkJewoJCQkkcGxhY2Vob2xkZXIgPSAkYXVkaW87CgkJfQoJCWVsc2VpZiAoJG1pbWUgPT0gJ3ZpZGVvJykKCQl7CgkJCSRwbGFjZWhvbGRlciA9ICR2aWRlbzsKCQl9CgoJCSRlbWJlZCA9ICcnOwoKCQkvLyBNYWtlIHN1cmUgdGhlIEpTIGxpYnJhcnkgaXMgaW5jbHVkZWQKCQlpZiAoISRuYXRpdmUpCgkJewoJCQlzdGF0aWMgJGphdmFzY3JpcHRfb3V0cHV0dGVkID0gbnVsbDsKCQkJaWYgKCEkamF2YXNjcmlwdF9vdXRwdXR0ZWQgJiYgJHRoaXMtPmphdmFzY3JpcHQpCgkJCXsKCQkJCSRlbWJlZCAuPSAnPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iPycgLiBodG1sc3BlY2lhbGNoYXJzKCR0aGlzLT5qYXZhc2NyaXB0KSAuICciPjwvc2NyaXB0Pic7CgkJCQkkamF2YXNjcmlwdF9vdXRwdXR0ZWQgPSB0cnVlOwoJCQl9CgkJfQoKCQkvLyBPZGVvIEZlZWQgTVAzJ3MKCQlpZiAoJGhhbmRsZXIgPT0gJ29kZW8nKQoJCXsKCQkJaWYgKCRuYXRpdmUpCgkJCXsKCQkJCSRlbWJlZCAuPSAnPGVtYmVkIHNyYz0iaHR0cDovL29kZW8uY29tL2ZsYXNoL2F1ZGlvX3BsYXllcl9mdWxsc2l6ZS5zd2YiIHBsdWdpbnNwYWdlPSJodHRwOi8vYWRvYmUuY29tL2dvL2dldGZsYXNocGxheWVyIiB0eXBlPSJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCIgcXVhbGl0eT0iaGlnaCIgd2lkdGg9IjQ0MCIgaGVpZ2h0PSI4MCIgd21vZGU9InRyYW5zcGFyZW50IiBhbGxvd1NjcmlwdEFjY2Vzcz0iYW55IiBmbGFzaHZhcnM9InZhbGlkX3NhbXBsZV9yYXRlPXRydWUmZXh0ZXJuYWxfdXJsPScgLiAkdGhpcy0+Z2V0X2xpbmsoKSAuICciPjwvZW1iZWQ+JzsKCQkJfQoJCQllbHNlCgkJCXsKCQkJCSRlbWJlZCAuPSAnPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPmVtYmVkX29kZW8oIicgLiAkdGhpcy0+Z2V0X2xpbmsoKSAuICciKTs8L3NjcmlwdD4nOwoJCQl9CgkJfQoKCQkvLyBGbGFzaAoJCWVsc2VpZiAoJGhhbmRsZXIgPT0gJ2ZsYXNoJykKCQl7CgkJCWlmICgkbmF0aXZlKQoJCQl7CgkJCQkkZW1iZWQgLj0gIjxlbWJlZCBzcmM9XCIiIC4gJHRoaXMtPmdldF9saW5rKCkgLiAiXCIgcGx1Z2luc3BhZ2U9XCJodHRwOi8vYWRvYmUuY29tL2dvL2dldGZsYXNocGxheWVyXCIgdHlwZT1cIiR0eXBlXCIgcXVhbGl0eT1cImhpZ2hcIiB3aWR0aD1cIiR3aWR0aFwiIGhlaWdodD1cIiRoZWlnaHRcIiBiZ2NvbG9yPVwiJGJnY29sb3JcIiBsb29wPVwiJGxvb3BcIj48L2VtYmVkPiI7CgkJCX0KCQkJZWxzZQoJCQl7CgkJCQkkZW1iZWQgLj0gIjxzY3JpcHQgdHlwZT0ndGV4dC9qYXZhc2NyaXB0Jz5lbWJlZF9mbGFzaCgnJGJnY29sb3InLCAnJHdpZHRoJywgJyRoZWlnaHQnLCAnIiAuICR0aGlzLT5nZXRfbGluaygpIC4gIicsICckbG9vcCcsICckdHlwZScpOzwvc2NyaXB0PiI7CgkJCX0KCQl9CgoJCS8vIEZsYXNoIE1lZGlhIFBsYXllciBmaWxlIHR5cGVzLgoJCS8vIFByZWZlcnJlZCBoYW5kbGVyIGZvciBNUDMgZmlsZSB0eXBlcy4KCQllbHNlaWYgKCRoYW5kbGVyID09ICdmbWVkaWEnIHx8ICgkaGFuZGxlciA9PSAnbXAzJyAmJiAkbWVkaWFwbGF5ZXIgIT0gJycpKQoJCXsKCQkJJGhlaWdodCArPSAyMDsKCQkJaWYgKCRuYXRpdmUpCgkJCXsKCQkJCSRlbWJlZCAuPSAiPGVtYmVkIHNyYz1cIiRtZWRpYXBsYXllclwiIHBsdWdpbnNwYWdlPVwiaHR0cDovL2Fkb2JlLmNvbS9nby9nZXRmbGFzaHBsYXllclwiIHR5cGU9XCJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaFwiIHF1YWxpdHk9XCJoaWdoXCIgd2lkdGg9XCIkd2lkdGhcIiBoZWlnaHQ9XCIkaGVpZ2h0XCIgd21vZGU9XCJ0cmFuc3BhcmVudFwiIGZsYXNodmFycz1cImZpbGU9IiAuIHJhd3VybGVuY29kZSgkdGhpcy0+Z2V0X2xpbmsoKS4nP2ZpbGVfZXh0ZW5zaW9uPS4nLiR0aGlzLT5nZXRfZXh0ZW5zaW9uKCkpIC4gIiZhdXRvc3RhcnQ9ZmFsc2UmcmVwZWF0PSRsb29wJnNob3dkaWdpdHM9dHJ1ZSZzaG93ZnNidXR0b249ZmFsc2VcIj48L2VtYmVkPiI7CgkJCX0KCQkJZWxzZQoJCQl7CgkJCQkkZW1iZWQgLj0gIjxzY3JpcHQgdHlwZT0ndGV4dC9qYXZhc2NyaXB0Jz5lbWJlZF9mbHYoJyR3aWR0aCcsICckaGVpZ2h0JywgJyIgLiByYXd1cmxlbmNvZGUoJHRoaXMtPmdldF9saW5rKCkuJz9maWxlX2V4dGVuc2lvbj0uJy4kdGhpcy0+Z2V0X2V4dGVuc2lvbigpKSAuICInLCAnJHBsYWNlaG9sZGVyJywgJyRsb29wJywgJyRtZWRpYXBsYXllcicpOzwvc2NyaXB0PiI7CgkJCX0KCQl9CgoJCS8vIFF1aWNrVGltZSA3IGZpbGUgdHlwZXMuICBOZWVkIHRvIHRlc3Qgd2l0aCBRdWlja1RpbWUgNi4KCQkvLyBPbmx5IGhhbmRsZSBNUDMncyBpZiB0aGUgRmxhc2ggTWVkaWEgUGxheWVyIGlzIG5vdCBwcmVzZW50LgoJCWVsc2VpZiAoJGhhbmRsZXIgPT0gJ3F1aWNrdGltZScgfHwgKCRoYW5kbGVyID09ICdtcDMnICYmICRtZWRpYXBsYXllciA9PSAnJykpCgkJewoJCQkkaGVpZ2h0ICs9IDE2OwoJCQlpZiAoJG5hdGl2ZSkKCQkJewoJCQkJaWYgKCRwbGFjZWhvbGRlciAhPSAiIil7CgkJCQkJJGVtYmVkIC49ICI8ZW1iZWQgdHlwZT1cIiR0eXBlXCIgc3R5bGU9XCJjdXJzb3I6aGFuZDsgY3Vyc29yOnBvaW50ZXI7XCIgaHJlZj1cIiIgLiAkdGhpcy0+Z2V0X2xpbmsoKSAuICJcIiBzcmM9XCIkcGxhY2Vob2xkZXJcIiB3aWR0aD1cIiR3aWR0aFwiIGhlaWdodD1cIiRoZWlnaHRcIiBhdXRvcGxheT1cImZhbHNlXCIgdGFyZ2V0PVwibXlzZWxmXCIgY29udHJvbGxlcj1cImZhbHNlXCIgbG9vcD1cIiRsb29wXCIgc2NhbGU9XCJhc3BlY3RcIiBiZ2NvbG9yPVwiJGJnY29sb3JcIiBwbHVnaW5zcGFnZT1cImh0dHA6Ly9hcHBsZS5jb20vcXVpY2t0aW1lL2Rvd25sb2FkL1wiPjwvZW1iZWQ+IjsKCQkJCX0KCQkJCWVsc2UgewoJCQkJCSRlbWJlZCAuPSAiPGVtYmVkIHR5cGU9XCIkdHlwZVwiIHN0eWxlPVwiY3Vyc29yOmhhbmQ7IGN1cnNvcjpwb2ludGVyO1wiIHNyYz1cIiIgLiAkdGhpcy0+Z2V0X2xpbmsoKSAuICJcIiB3aWR0aD1cIiR3aWR0aFwiIGhlaWdodD1cIiRoZWlnaHRcIiBhdXRvcGxheT1cImZhbHNlXCIgdGFyZ2V0PVwibXlzZWxmXCIgY29udHJvbGxlcj1cInRydWVcIiBsb29wPVwiJGxvb3BcIiBzY2FsZT1cImFzcGVjdFwiIGJnY29sb3I9XCIkYmdjb2xvclwiIHBsdWdpbnNwYWdlPVwiaHR0cDovL2FwcGxlLmNvbS9xdWlja3RpbWUvZG93bmxvYWQvXCI+PC9lbWJlZD4iOwoJCQkJfQoJCQl9CgkJCWVsc2UKCQkJewoJCQkJJGVtYmVkIC49ICI8c2NyaXB0IHR5cGU9J3RleHQvamF2YXNjcmlwdCc+ZW1iZWRfcXVpY2t0aW1lKCckdHlwZScsICckYmdjb2xvcicsICckd2lkdGgnLCAnJGhlaWdodCcsICciIC4gJHRoaXMtPmdldF9saW5rKCkgLiAiJywgJyRwbGFjZWhvbGRlcicsICckbG9vcCcpOzwvc2NyaXB0PiI7CgkJCX0KCQl9CgoJCS8vIFdpbmRvd3MgTWVkaWEKCQllbHNlaWYgKCRoYW5kbGVyID09ICd3bWVkaWEnKQoJCXsKCQkJJGhlaWdodCArPSA0NTsKCQkJaWYgKCRuYXRpdmUpCgkJCXsKCQkJCSRlbWJlZCAuPSAiPGVtYmVkIHR5cGU9XCJhcHBsaWNhdGlvbi94LW1wbGF5ZXIyXCIgc3JjPVwiIiAuICR0aGlzLT5nZXRfbGluaygpIC4gIlwiIGF1dG9zaXplPVwiMVwiIHdpZHRoPVwiJHdpZHRoXCIgaGVpZ2h0PVwiJGhlaWdodFwiIHNob3djb250cm9scz1cIjFcIiBzaG93c3RhdHVzYmFyPVwiMFwiIHNob3dkaXNwbGF5PVwiMFwiIGF1dG9zdGFydD1cIjBcIj48L2VtYmVkPiI7CgkJCX0KCQkJZWxzZQoJCQl7CgkJCQkkZW1iZWQgLj0gIjxzY3JpcHQgdHlwZT0ndGV4dC9qYXZhc2NyaXB0Jz5lbWJlZF93bWVkaWEoJyR3aWR0aCcsICckaGVpZ2h0JywgJyIgLiAkdGhpcy0+Z2V0X2xpbmsoKSAuICInKTs8L3NjcmlwdD4iOwoJCQl9CgkJfQoKCQkvLyBFdmVyeXRoaW5nIGVsc2UKCQllbHNlICRlbWJlZCAuPSAnPGEgaHJlZj0iJyAuICR0aGlzLT5nZXRfbGluaygpIC4gJyIgY2xhc3M9IicgLiAkYWx0Y2xhc3MgLiAnIj4nIC4gJGFsdCAuICc8L2E+JzsKCgkJcmV0dXJuICRlbWJlZDsKCX0KCglmdW5jdGlvbiBnZXRfcmVhbF90eXBlKCRmaW5kX2hhbmRsZXIgPSBmYWxzZSkKCXsKCQkvLyBJZiBpdCdzIE9kZW8sIGxldCdzIGdldCBpdCBvdXQgb2YgdGhlIHdheS4KCQlpZiAoc3Vic3RyKHN0cnRvbG93ZXIoJHRoaXMtPmdldF9saW5rKCkpLCAwLCAxNSkgPT0gJ2h0dHA6Ly9vZGVvLmNvbScpCgkJewoJCQlyZXR1cm4gJ29kZW8nOwoJCX0KCgkJLy8gTWltZS10eXBlcyBieSBoYW5kbGVyLgoJCSR0eXBlc19mbGFzaCA9IGFycmF5KCdhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCcsICdhcHBsaWNhdGlvbi9mdXR1cmVzcGxhc2gnKTsgLy8gRmxhc2gKCQkkdHlwZXNfZm1lZGlhID0gYXJyYXkoJ3ZpZGVvL2ZsdicsICd2aWRlby94LWZsdicsJ2Zsdi1hcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nKTsgLy8gRmxhc2ggTWVkaWEgUGxheWVyCgkJJHR5cGVzX3F1aWNrdGltZSA9IGFycmF5KCdhdWRpby8zZ3BwJywgJ2F1ZGlvLzNncHAyJywgJ2F1ZGlvL2FhYycsICdhdWRpby94LWFhYycsICdhdWRpby9haWZmJywgJ2F1ZGlvL3gtYWlmZicsICdhdWRpby9taWQnLCAnYXVkaW8vbWlkaScsICdhdWRpby94LW1pZGknLCAnYXVkaW8vbXA0JywgJ2F1ZGlvL200YScsICdhdWRpby94LW00YScsICdhdWRpby93YXYnLCAnYXVkaW8veC13YXYnLCAndmlkZW8vM2dwcCcsICd2aWRlby8zZ3BwMicsICd2aWRlby9tNHYnLCAndmlkZW8veC1tNHYnLCAndmlkZW8vbXA0JywgJ3ZpZGVvL21wZWcnLCAndmlkZW8veC1tcGVnJywgJ3ZpZGVvL3F1aWNrdGltZScsICd2aWRlby9zZC12aWRlbycpOyAvLyBRdWlja1RpbWUKCQkkdHlwZXNfd21lZGlhID0gYXJyYXkoJ2FwcGxpY2F0aW9uL2FzeCcsICdhcHBsaWNhdGlvbi94LW1wbGF5ZXIyJywgJ2F1ZGlvL3gtbXMtd21hJywgJ2F1ZGlvL3gtbXMtd2F4JywgJ3ZpZGVvL3gtbXMtYXNmLXBsdWdpbicsICd2aWRlby94LW1zLWFzZicsICd2aWRlby94LW1zLXdtJywgJ3ZpZGVvL3gtbXMtd212JywgJ3ZpZGVvL3gtbXMtd3Z4Jyk7IC8vIFdpbmRvd3MgTWVkaWEKCQkkdHlwZXNfbXAzID0gYXJyYXkoJ2F1ZGlvL21wMycsICdhdWRpby94LW1wMycsICdhdWRpby9tcGVnJywgJ2F1ZGlvL3gtbXBlZycpOyAvLyBNUDMKCgkJaWYgKCR0aGlzLT5nZXRfdHlwZSgpICE9PSBudWxsKQoJCXsKCQkJJHR5cGUgPSBzdHJ0b2xvd2VyKCR0aGlzLT50eXBlKTsKCQl9CgkJZWxzZQoJCXsKCQkJJHR5cGUgPSBudWxsOwoJCX0KCgkJLy8gSWYgd2UgZW5jb3VudGVyIGFuIHVuc3VwcG9ydGVkIG1pbWUtdHlwZSwgY2hlY2sgdGhlIGZpbGUgZXh0ZW5zaW9uIGFuZCBndWVzcyBpbnRlbGxpZ2VudGx5LgoJCWlmICghaW5fYXJyYXkoJHR5cGUsIGFycmF5X21lcmdlKCR0eXBlc19mbGFzaCwgJHR5cGVzX2ZtZWRpYSwgJHR5cGVzX3F1aWNrdGltZSwgJHR5cGVzX3dtZWRpYSwgJHR5cGVzX21wMykpKQoJCXsKCQkJc3dpdGNoIChzdHJ0b2xvd2VyKCR0aGlzLT5nZXRfZXh0ZW5zaW9uKCkpKQoJCQl7CgkJCQkvLyBBdWRpbyBtaW1lLXR5cGVzCgkJCQljYXNlICdhYWMnOgoJCQkJY2FzZSAnYWR0cyc6CgkJCQkJJHR5cGUgPSAnYXVkaW8vYWNjJzsKCQkJCQlicmVhazsKCgkJCQljYXNlICdhaWYnOgoJCQkJY2FzZSAnYWlmYyc6CgkJCQljYXNlICdhaWZmJzoKCQkJCWNhc2UgJ2NkZGEnOgoJCQkJCSR0eXBlID0gJ2F1ZGlvL2FpZmYnOwoJCQkJCWJyZWFrOwoKCQkJCWNhc2UgJ2J3Zic6CgkJCQkJJHR5cGUgPSAnYXVkaW8vd2F2JzsKCQkJCQlicmVhazsKCgkJCQljYXNlICdrYXInOgoJCQkJY2FzZSAnbWlkJzoKCQkJCWNhc2UgJ21pZGknOgoJCQkJY2FzZSAnc21mJzoKCQkJCQkkdHlwZSA9ICdhdWRpby9taWRpJzsKCQkJCQlicmVhazsKCgkJCQljYXNlICdtNGEnOgoJCQkJCSR0eXBlID0gJ2F1ZGlvL3gtbTRhJzsKCQkJCQlicmVhazsKCgkJCQljYXNlICdtcDMnOgoJCQkJY2FzZSAnc3dhJzoKCQkJCQkkdHlwZSA9ICdhdWRpby9tcDMnOwoJCQkJCWJyZWFrOwoKCQkJCWNhc2UgJ3dhdic6CgkJCQkJJHR5cGUgPSAnYXVkaW8vd2F2JzsKCQkJCQlicmVhazsKCgkJCQljYXNlICd3YXgnOgoJCQkJCSR0eXBlID0gJ2F1ZGlvL3gtbXMtd2F4JzsKCQkJCQlicmVhazsKCgkJCQljYXNlICd3bWEnOgoJCQkJCSR0eXBlID0gJ2F1ZGlvL3gtbXMtd21hJzsKCQkJCQlicmVhazsKCgkJCQkvLyBWaWRlbyBtaW1lLXR5cGVzCgkJCQljYXNlICczZ3AnOgoJCQkJY2FzZSAnM2dwcCc6CgkJCQkJJHR5cGUgPSAndmlkZW8vM2dwcCc7CgkJCQkJYnJlYWs7CgoJCQkJY2FzZSAnM2cyJzoKCQkJCWNhc2UgJzNncDInOgoJCQkJCSR0eXBlID0gJ3ZpZGVvLzNncHAyJzsKCQkJCQlicmVhazsKCgkJCQljYXNlICdhc2YnOgoJCQkJCSR0eXBlID0gJ3ZpZGVvL3gtbXMtYXNmJzsKCQkJCQlicmVhazsKCgkJCQljYXNlICdmbHYnOgoJCQkJCSR0eXBlID0gJ3ZpZGVvL3gtZmx2JzsKCQkJCQlicmVhazsKCgkJCQljYXNlICdtMWEnOgoJCQkJY2FzZSAnbTFzJzoKCQkJCWNhc2UgJ20xdic6CgkJCQljYXNlICdtMTUnOgoJCQkJY2FzZSAnbTc1JzoKCQkJCWNhc2UgJ21wMic6CgkJCQljYXNlICdtcGEnOgoJCQkJY2FzZSAnbXBlZyc6CgkJCQljYXNlICdtcGcnOgoJCQkJY2FzZSAnbXBtJzoKCQkJCWNhc2UgJ21wdic6CgkJCQkJJHR5cGUgPSAndmlkZW8vbXBlZyc7CgkJCQkJYnJlYWs7CgoJCQkJY2FzZSAnbTR2JzoKCQkJCQkkdHlwZSA9ICd2aWRlby94LW00dic7CgkJCQkJYnJlYWs7CgoJCQkJY2FzZSAnbW92JzoKCQkJCWNhc2UgJ3F0JzoKCQkJCQkkdHlwZSA9ICd2aWRlby9xdWlja3RpbWUnOwoJCQkJCWJyZWFrOwoKCQkJCWNhc2UgJ21wNCc6CgkJCQljYXNlICdtcGc0JzoKCQkJCQkkdHlwZSA9ICd2aWRlby9tcDQnOwoJCQkJCWJyZWFrOwoKCQkJCWNhc2UgJ3Nkdic6CgkJCQkJJHR5cGUgPSAndmlkZW8vc2QtdmlkZW8nOwoJCQkJCWJyZWFrOwoKCQkJCWNhc2UgJ3dtJzoKCQkJCQkkdHlwZSA9ICd2aWRlby94LW1zLXdtJzsKCQkJCQlicmVhazsKCgkJCQljYXNlICd3bXYnOgoJCQkJCSR0eXBlID0gJ3ZpZGVvL3gtbXMtd212JzsKCQkJCQlicmVhazsKCgkJCQljYXNlICd3dngnOgoJCQkJCSR0eXBlID0gJ3ZpZGVvL3gtbXMtd3Z4JzsKCQkJCQlicmVhazsKCgkJCQkvLyBGbGFzaCBtaW1lLXR5cGVzCgkJCQljYXNlICdzcGwnOgoJCQkJCSR0eXBlID0gJ2FwcGxpY2F0aW9uL2Z1dHVyZXNwbGFzaCc7CgkJCQkJYnJlYWs7CgoJCQkJY2FzZSAnc3dmJzoKCQkJCQkkdHlwZSA9ICdhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCc7CgkJCQkJYnJlYWs7CgkJCX0KCQl9CgoJCWlmICgkZmluZF9oYW5kbGVyKQoJCXsKCQkJaWYgKGluX2FycmF5KCR0eXBlLCAkdHlwZXNfZmxhc2gpKQoJCQl7CgkJCQlyZXR1cm4gJ2ZsYXNoJzsKCQkJfQoJCQllbHNlaWYgKGluX2FycmF5KCR0eXBlLCAkdHlwZXNfZm1lZGlhKSkKCQkJewoJCQkJcmV0dXJuICdmbWVkaWEnOwoJCQl9CgkJCWVsc2VpZiAoaW5fYXJyYXkoJHR5cGUsICR0eXBlc19xdWlja3RpbWUpKQoJCQl7CgkJCQlyZXR1cm4gJ3F1aWNrdGltZSc7CgkJCX0KCQkJZWxzZWlmIChpbl9hcnJheSgkdHlwZSwgJHR5cGVzX3dtZWRpYSkpCgkJCXsKCQkJCXJldHVybiAnd21lZGlhJzsKCQkJfQoJCQllbHNlaWYgKGluX2FycmF5KCR0eXBlLCAkdHlwZXNfbXAzKSkKCQkJewoJCQkJcmV0dXJuICdtcDMnOwoJCQl9CgkJCWVsc2UKCQkJewoJCQkJcmV0dXJuIG51bGw7CgkJCX0KCQl9CgkJZWxzZQoJCXsKCQkJcmV0dXJuICR0eXBlOwoJCX0KCX0KfQoKY2xhc3MgU2ltcGxlUGllX0NhcHRpb24KewoJdmFyICR0eXBlOwoJdmFyICRsYW5nOwoJdmFyICRzdGFydFRpbWU7Cgl2YXIgJGVuZFRpbWU7Cgl2YXIgJHRleHQ7CgoJLy8gQ29uc3RydWN0b3IsIHVzZWQgdG8gaW5wdXQgdGhlIGRhdGEKCWZ1bmN0aW9uIFNpbXBsZVBpZV9DYXB0aW9uKCR0eXBlID0gbnVsbCwgJGxhbmcgPSBudWxsLCAkc3RhcnRUaW1lID0gbnVsbCwgJGVuZFRpbWUgPSBudWxsLCAkdGV4dCA9IG51bGwpCgl7CgkJJHRoaXMtPnR5cGUgPSAkdHlwZTsKCQkkdGhpcy0+bGFuZyA9ICRsYW5nOwoJCSR0aGlzLT5zdGFydFRpbWUgPSAkc3RhcnRUaW1lOwoJCSR0aGlzLT5lbmRUaW1lID0gJGVuZFRpbWU7CgkJJHRoaXMtPnRleHQgPSAkdGV4dDsKCX0KCglmdW5jdGlvbiBfX3RvU3RyaW5nKCkKCXsKCQkvLyBUaGVyZSBpcyBubyAkdGhpcy0+ZGF0YSBoZXJlCgkJcmV0dXJuIG1kNShzZXJpYWxpemUoJHRoaXMpKTsKCX0KCglmdW5jdGlvbiBnZXRfZW5kdGltZSgpCgl7CgkJaWYgKCR0aGlzLT5lbmRUaW1lICE9PSBudWxsKQoJCXsKCQkJcmV0dXJuICR0aGlzLT5lbmRUaW1lOwoJCX0KCQllbHNlCgkJewoJCQlyZXR1cm4gbnVsbDsKCQl9Cgl9CgoJZnVuY3Rpb24gZ2V0X2xhbmd1YWdlKCkKCXsKCQlpZiAoJHRoaXMtPmxhbmcgIT09IG51bGwpCgkJewoJCQlyZXR1cm4gJHRoaXMtPmxhbmc7CgkJfQoJCWVsc2UKCQl7CgkJCXJldHVybiBudWxsOwoJCX0KCX0KCglmdW5jdGlvbiBnZXRfc3RhcnR0aW1lKCkKCXsKCQlpZiAoJHRoaXMtPnN0YXJ0VGltZSAhPT0gbnVsbCkKCQl7CgkJCXJldHVybiAkdGhpcy0+c3RhcnRUaW1lOwoJCX0KCQllbHNlCgkJewoJCQlyZXR1cm4gbnVsbDsKCQl9Cgl9CgoJZnVuY3Rpb24gZ2V0X3RleHQoKQoJewoJCWlmICgkdGhpcy0+dGV4dCAhPT0gbnVsbCkKCQl7CgkJCXJldHVybiAkdGhpcy0+dGV4dDsKCQl9CgkJZWxzZQoJCXsKCQkJcmV0dXJuIG51bGw7CgkJfQoJfQoKCWZ1bmN0aW9uIGdldF90eXBlKCkKCXsKCQlpZiAoJHRoaXMtPnR5cGUgIT09IG51bGwpCgkJewoJCQlyZXR1cm4gJHRoaXMtPnR5cGU7CgkJfQoJCWVsc2UKCQl7CgkJCXJldHVybiBudWxsOwoJCX0KCX0KfQoKY2xhc3MgU2ltcGxlUGllX0NyZWRpdAp7Cgl2YXIgJHJvbGU7Cgl2YXIgJHNjaGVtZTsKCXZhciAkbmFtZTsKCgkvLyBDb25zdHJ1Y3RvciwgdXNlZCB0byBpbnB1dCB0aGUgZGF0YQoJZnVuY3Rpb24gU2ltcGxlUGllX0NyZWRpdCgkcm9sZSA9IG51bGwsICRzY2hlbWUgPSBudWxsLCAkbmFtZSA9IG51bGwpCgl7CgkJJHRoaXMtPnJvbGUgPSAkcm9sZTsKCQkkdGhpcy0+c2NoZW1lID0gJHNjaGVtZTsKCQkkdGhpcy0+bmFtZSA9ICRuYW1lOwoJfQoKCWZ1bmN0aW9uIF9fdG9TdHJpbmcoKQoJewoJCS8vIFRoZXJlIGlzIG5vICR0aGlzLT5kYXRhIGhlcmUKCQlyZXR1cm4gbWQ1KHNlcmlhbGl6ZSgkdGhpcykpOwoJfQoKCWZ1bmN0aW9uIGdldF9yb2xlKCkKCXsKCQlpZiAoJHRoaXMtPnJvbGUgIT09IG51bGwpCgkJewoJCQlyZXR1cm4gJHRoaXMtPnJvbGU7CgkJfQoJCWVsc2UKCQl7CgkJCXJldHVybiBudWxsOwoJCX0KCX0KCglmdW5jdGlvbiBnZXRfc2NoZW1lKCkKCXsKCQlpZiAoJHRoaXMtPnNjaGVtZSAhPT0gbnVsbCkKCQl7CgkJCXJldHVybiAkdGhpcy0+c2NoZW1lOwoJCX0KCQllbHNlCgkJewoJCQlyZXR1cm4gbnVsbDsKCQl9Cgl9CgoJZnVuY3Rpb24gZ2V0X25hbWUoKQoJewoJCWlmICgkdGhpcy0+bmFtZSAhPT0gbnVsbCkKCQl7CgkJCXJldHVybiAkdGhpcy0+bmFtZTsKCQl9CgkJZWxzZQoJCXsKCQkJcmV0dXJuIG51bGw7CgkJfQoJfQp9CgpjbGFzcyBTaW1wbGVQaWVfQ29weXJpZ2h0CnsKCXZhciAkdXJsOwoJdmFyICRsYWJlbDsKCgkvLyBDb25zdHJ1Y3RvciwgdXNlZCB0byBpbnB1dCB0aGUgZGF0YQoJZnVuY3Rpb24gU2ltcGxlUGllX0NvcHlyaWdodCgkdXJsID0gbnVsbCwgJGxhYmVsID0gbnVsbCkKCXsKCQkkdGhpcy0+dXJsID0gJHVybDsKCQkkdGhpcy0+bGFiZWwgPSAkbGFiZWw7Cgl9CgoJZnVuY3Rpb24gX190b1N0cmluZygpCgl7CgkJLy8gVGhlcmUgaXMgbm8gJHRoaXMtPmRhdGEgaGVyZQoJCXJldHVybiBtZDUoc2VyaWFsaXplKCR0aGlzKSk7Cgl9CgoJZnVuY3Rpb24gZ2V0X3VybCgpCgl7CgkJaWYgKCR0aGlzLT51cmwgIT09IG51bGwpCgkJewoJCQlyZXR1cm4gJHRoaXMtPnVybDsKCQl9CgkJZWxzZQoJCXsKCQkJcmV0dXJuIG51bGw7CgkJfQoJfQoKCWZ1bmN0aW9uIGdldF9hdHRyaWJ1dGlvbigpCgl7CgkJaWYgKCR0aGlzLT5sYWJlbCAhPT0gbnVsbCkKCQl7CgkJCXJldHVybiAkdGhpcy0+bGFiZWw7CgkJfQoJCWVsc2UKCQl7CgkJCXJldHVybiBudWxsOwoJCX0KCX0KfQoKY2xhc3MgU2ltcGxlUGllX1JhdGluZwp7Cgl2YXIgJHNjaGVtZTsKCXZhciAkdmFsdWU7CgoJLy8gQ29uc3RydWN0b3IsIHVzZWQgdG8gaW5wdXQgdGhlIGRhdGEKCWZ1bmN0aW9uIFNpbXBsZVBpZV9SYXRpbmcoJHNjaGVtZSA9IG51bGwsICR2YWx1ZSA9IG51bGwpCgl7CgkJJHRoaXMtPnNjaGVtZSA9ICRzY2hlbWU7CgkJJHRoaXMtPnZhbHVlID0gJHZhbHVlOwoJfQoKCWZ1bmN0aW9uIF9fdG9TdHJpbmcoKQoJewoJCS8vIFRoZXJlIGlzIG5vICR0aGlzLT5kYXRhIGhlcmUKCQlyZXR1cm4gbWQ1KHNlcmlhbGl6ZSgkdGhpcykpOwoJfQoKCWZ1bmN0aW9uIGdldF9zY2hlbWUoKQoJewoJCWlmICgkdGhpcy0+c2NoZW1lICE9PSBudWxsKQoJCXsKCQkJcmV0dXJuICR0aGlzLT5zY2hlbWU7CgkJfQoJCWVsc2UKCQl7CgkJCXJldHVybiBudWxsOwoJCX0KCX0KCglmdW5jdGlvbiBnZXRfdmFsdWUoKQoJewoJCWlmICgkdGhpcy0+dmFsdWUgIT09IG51bGwpCgkJewoJCQlyZXR1cm4gJHRoaXMtPnZhbHVlOwoJCX0KCQllbHNlCgkJewoJCQlyZXR1cm4gbnVsbDsKCQl9Cgl9Cn0KCmNsYXNzIFNpbXBsZVBpZV9SZXN0cmljdGlvbgp7Cgl2YXIgJHJlbGF0aW9uc2hpcDsKCXZhciAkdHlwZTsKCXZhciAkdmFsdWU7CgoJLy8gQ29uc3RydWN0b3IsIHVzZWQgdG8gaW5wdXQgdGhlIGRhdGEKCWZ1bmN0aW9uIFNpbXBsZVBpZV9SZXN0cmljdGlvbigkcmVsYXRpb25zaGlwID0gbnVsbCwgJHR5cGUgPSBudWxsLCAkdmFsdWUgPSBudWxsKQoJewoJCSR0aGlzLT5yZWxhdGlvbnNoaXAgPSAkcmVsYXRpb25zaGlwOwoJCSR0aGlzLT50eXBlID0gJHR5cGU7CgkJJHRoaXMtPnZhbHVlID0gJHZhbHVlOwoJfQoKCWZ1bmN0aW9uIF9fdG9TdHJpbmcoKQoJewoJCS8vIFRoZXJlIGlzIG5vICR0aGlzLT5kYXRhIGhlcmUKCQlyZXR1cm4gbWQ1KHNlcmlhbGl6ZSgkdGhpcykpOwoJfQoKCWZ1bmN0aW9uIGdldF9yZWxhdGlvbnNoaXAoKQoJewoJCWlmICgkdGhpcy0+cmVsYXRpb25zaGlwICE9PSBudWxsKQoJCXsKCQkJcmV0dXJuICR0aGlzLT5yZWxhdGlvbnNoaXA7CgkJfQoJCWVsc2UKCQl7CgkJCXJldHVybiBudWxsOwoJCX0KCX0KCglmdW5jdGlvbiBnZXRfdHlwZSgpCgl7CgkJaWYgKCR0aGlzLT50eXBlICE9PSBudWxsKQoJCXsKCQkJcmV0dXJuICR0aGlzLT50eXBlOwoJCX0KCQllbHNlCgkJewoJCQlyZXR1cm4gbnVsbDsKCQl9Cgl9CgoJZnVuY3Rpb24gZ2V0X3ZhbHVlKCkKCXsKCQlpZiAoJHRoaXMtPnZhbHVlICE9PSBudWxsKQoJCXsKCQkJcmV0dXJuICR0aGlzLT52YWx1ZTsKCQl9CgkJZWxzZQoJCXsKCQkJcmV0dXJuIG51bGw7CgkJfQoJfQp9CgovKioKICogQHRvZG8gTW92ZSB0byBwcm9wZXJseSBzdXBwb3J0aW5nIFJGQzI2MTYgKEhUVFAvMS4xKQogKi8KY2xhc3MgU2ltcGxlUGllX0ZpbGUKewoJdmFyICR1cmw7Cgl2YXIgJHVzZXJhZ2VudDsKCXZhciAkc3VjY2VzcyA9IHRydWU7Cgl2YXIgJGhlYWRlcnMgPSBhcnJheSgpOwoJdmFyICRib2R5OwoJdmFyICRzdGF0dXNfY29kZTsKCXZhciAkcmVkaXJlY3RzID0gMDsKCXZhciAkZXJyb3I7Cgl2YXIgJG1ldGhvZCA9IFNJTVBMRVBJRV9GSUxFX1NPVVJDRV9OT05FOwoKCWZ1bmN0aW9uIFNpbXBsZVBpZV9GaWxlKCR1cmwsICR0aW1lb3V0ID0gMTAsICRyZWRpcmVjdHMgPSA1LCAkaGVhZGVycyA9IG51bGwsICR1c2VyYWdlbnQgPSBudWxsLCAkZm9yY2VfZnNvY2tvcGVuID0gZmFsc2UpCgl7CgkJaWYgKGNsYXNzX2V4aXN0cygnaWRuYV9jb252ZXJ0JykpCgkJewoJCQkkaWRuID0mIG5ldyBpZG5hX2NvbnZlcnQ7CgkJCSRwYXJzZWQgPSBTaW1wbGVQaWVfTWlzYzo6cGFyc2VfdXJsKCR1cmwpOwoJCQkkdXJsID0gU2ltcGxlUGllX01pc2M6OmNvbXByZXNzX3BhcnNlX3VybCgkcGFyc2VkWydzY2hlbWUnXSwgJGlkbi0+ZW5jb2RlKCRwYXJzZWRbJ2F1dGhvcml0eSddKSwgJHBhcnNlZFsncGF0aCddLCAkcGFyc2VkWydxdWVyeSddLCAkcGFyc2VkWydmcmFnbWVudCddKTsKCQl9CgkJJHRoaXMtPnVybCA9ICR1cmw7CgkJJHRoaXMtPnVzZXJhZ2VudCA9ICR1c2VyYWdlbnQ7CgkJaWYgKHByZWdfbWF0Y2goJy9eaHR0cChzKT86XC9cLy9pJywgJHVybCkpCgkJewoJCQlpZiAoJHVzZXJhZ2VudCA9PT0gbnVsbCkKCQkJewoJCQkJJHVzZXJhZ2VudCA9IGluaV9nZXQoJ3VzZXJfYWdlbnQnKTsKCQkJCSR0aGlzLT51c2VyYWdlbnQgPSAkdXNlcmFnZW50OwoJCQl9CgkJCWlmICghaXNfYXJyYXkoJGhlYWRlcnMpKQoJCQl7CgkJCQkkaGVhZGVycyA9IGFycmF5KCk7CgkJCX0KCQkJaWYgKCEkZm9yY2VfZnNvY2tvcGVuICYmIGZ1bmN0aW9uX2V4aXN0cygnY3VybF9leGVjJykpCgkJCXsKCQkJCSR0aGlzLT5tZXRob2QgPSBTSU1QTEVQSUVfRklMRV9TT1VSQ0VfUkVNT1RFIHwgU0lNUExFUElFX0ZJTEVfU09VUkNFX0NVUkw7CgkJCQkkZnAgPSBjdXJsX2luaXQoKTsKCQkJCSRoZWFkZXJzMiA9IGFycmF5KCk7CgkJCQlmb3JlYWNoICgkaGVhZGVycyBhcyAka2V5ID0+ICR2YWx1ZSkKCQkJCXsKCQkJCQkkaGVhZGVyczJbXSA9ICIka2V5OiAkdmFsdWUiOwoJCQkJfQoJCQkJaWYgKHZlcnNpb25fY29tcGFyZShTaW1wbGVQaWVfTWlzYzo6Z2V0X2N1cmxfdmVyc2lvbigpLCAnNy4xMC41JywgJz49JykpCgkJCQl7CgkJCQkJY3VybF9zZXRvcHQoJGZwLCBDVVJMT1BUX0VOQ09ESU5HLCAnJyk7CgkJCQl9CgkJCQljdXJsX3NldG9wdCgkZnAsIENVUkxPUFRfVVJMLCAkdXJsKTsKCQkJCWN1cmxfc2V0b3B0KCRmcCwgQ1VSTE9QVF9IRUFERVIsIDEpOwoJCQkJY3VybF9zZXRvcHQoJGZwLCBDVVJMT1BUX1JFVFVSTlRSQU5TRkVSLCAxKTsKCQkJCWN1cmxfc2V0b3B0KCRmcCwgQ1VSTE9QVF9USU1FT1VULCAkdGltZW91dCk7CgkJCQljdXJsX3NldG9wdCgkZnAsIENVUkxPUFRfQ09OTkVDVFRJTUVPVVQsICR0aW1lb3V0KTsKCQkJCWN1cmxfc2V0b3B0KCRmcCwgQ1VSTE9QVF9SRUZFUkVSLCAkdXJsKTsKCQkJCWN1cmxfc2V0b3B0KCRmcCwgQ1VSTE9QVF9VU0VSQUdFTlQsICR1c2VyYWdlbnQpOwoJCQkJY3VybF9zZXRvcHQoJGZwLCBDVVJMT1BUX0hUVFBIRUFERVIsICRoZWFkZXJzMik7CgkJCQlpZiAoIWluaV9nZXQoJ29wZW5fYmFzZWRpcicpICYmICFpbmlfZ2V0KCdzYWZlX21vZGUnKSAmJiB2ZXJzaW9uX2NvbXBhcmUoU2ltcGxlUGllX01pc2M6OmdldF9jdXJsX3ZlcnNpb24oKSwgJzcuMTUuMicsICc+PScpKQoJCQkJewoJCQkJCWN1cmxfc2V0b3B0KCRmcCwgQ1VSTE9QVF9GT0xMT1dMT0NBVElPTiwgMSk7CgkJCQkJY3VybF9zZXRvcHQoJGZwLCBDVVJMT1BUX01BWFJFRElSUywgJHJlZGlyZWN0cyk7CgkJCQl9CgoJCQkJJHRoaXMtPmhlYWRlcnMgPSBjdXJsX2V4ZWMoJGZwKTsKCQkJCWlmIChjdXJsX2Vycm5vKCRmcCkgPT0gMjMgfHwgY3VybF9lcnJubygkZnApID09IDYxKQoJCQkJewoJCQkJCWN1cmxfc2V0b3B0KCRmcCwgQ1VSTE9QVF9FTkNPRElORywgJ25vbmUnKTsKCQkJCQkkdGhpcy0+aGVhZGVycyA9IGN1cmxfZXhlYygkZnApOwoJCQkJfQoJCQkJaWYgKGN1cmxfZXJybm8oJGZwKSkKCQkJCXsKCQkJCQkkdGhpcy0+ZXJyb3IgPSAnY1VSTCBlcnJvciAnIC4gY3VybF9lcnJubygkZnApIC4gJzogJyAuIGN1cmxfZXJyb3IoJGZwKTsKCQkJCQkkdGhpcy0+c3VjY2VzcyA9IGZhbHNlOwoJCQkJfQoJCQkJZWxzZQoJCQkJewoJCQkJCSRpbmZvID0gY3VybF9nZXRpbmZvKCRmcCk7CgkJCQkJY3VybF9jbG9zZSgkZnApOwoJCQkJCSR0aGlzLT5oZWFkZXJzID0gZXhwbG9kZSgiXHJcblxyXG4iLCAkdGhpcy0+aGVhZGVycywgJGluZm9bJ3JlZGlyZWN0X2NvdW50J10gKyAxKTsKCQkJCQkkdGhpcy0+aGVhZGVycyA9IGFycmF5X3BvcCgkdGhpcy0+aGVhZGVycyk7CgkJCQkJJHBhcnNlciA9JiBuZXcgU2ltcGxlUGllX0hUVFBfUGFyc2VyKCR0aGlzLT5oZWFkZXJzKTsKCQkJCQlpZiAoJHBhcnNlci0+cGFyc2UoKSkKCQkJCQl7CgkJCQkJCSR0aGlzLT5oZWFkZXJzID0gJHBhcnNlci0+aGVhZGVyczsKCQkJCQkJJHRoaXMtPmJvZHkgPSAkcGFyc2VyLT5ib2R5OwoJCQkJCQkkdGhpcy0+c3RhdHVzX2NvZGUgPSAkcGFyc2VyLT5zdGF0dXNfY29kZTsKCQkJCQkJaWYgKCgkdGhpcy0+c3RhdHVzX2NvZGUgPT0gMzAwIHx8ICR0aGlzLT5zdGF0dXNfY29kZSA9PSAzMDEgfHwgJHRoaXMtPnN0YXR1c19jb2RlID09IDMwMiB8fCAkdGhpcy0+c3RhdHVzX2NvZGUgPT0gMzAzIHx8ICR0aGlzLT5zdGF0dXNfY29kZSA9PSAzMDcgfHwgJHRoaXMtPnN0YXR1c19jb2RlID4gMzA3ICYmICR0aGlzLT5zdGF0dXNfY29kZSA8IDQwMCkgJiYgaXNzZXQoJHRoaXMtPmhlYWRlcnNbJ2xvY2F0aW9uJ10pICYmICR0aGlzLT5yZWRpcmVjdHMgPCAkcmVkaXJlY3RzKQoJCQkJCQl7CgkJCQkJCQkkdGhpcy0+cmVkaXJlY3RzKys7CgkJCQkJCQkkbG9jYXRpb24gPSBTaW1wbGVQaWVfTWlzYzo6YWJzb2x1dGl6ZV91cmwoJHRoaXMtPmhlYWRlcnNbJ2xvY2F0aW9uJ10sICR1cmwpOwoJCQkJCQkJcmV0dXJuICR0aGlzLT5TaW1wbGVQaWVfRmlsZSgkbG9jYXRpb24sICR0aW1lb3V0LCAkcmVkaXJlY3RzLCAkaGVhZGVycywgJHVzZXJhZ2VudCwgJGZvcmNlX2Zzb2Nrb3Blbik7CgkJCQkJCX0KCQkJCQl9CgkJCQl9CgkJCX0KCQkJZWxzZQoJCQl7CgkJCQkkdGhpcy0+bWV0aG9kID0gU0lNUExFUElFX0ZJTEVfU09VUkNFX1JFTU9URSB8IFNJTVBMRVBJRV9GSUxFX1NPVVJDRV9GU09DS09QRU47CgkJCQkkdXJsX3BhcnRzID0gcGFyc2VfdXJsKCR1cmwpOwoJCQkJaWYgKGlzc2V0KCR1cmxfcGFydHNbJ3NjaGVtZSddKSAmJiBzdHJ0b2xvd2VyKCR1cmxfcGFydHNbJ3NjaGVtZSddKSA9PSAnaHR0cHMnKQoJCQkJewoJCQkJCSR1cmxfcGFydHNbJ2hvc3QnXSA9ICJzc2w6Ly8kdXJsX3BhcnRzW2hvc3RdIjsKCQkJCQkkdXJsX3BhcnRzWydwb3J0J10gPSA0NDM7CgkJCQl9CgkJCQlpZiAoIWlzc2V0KCR1cmxfcGFydHNbJ3BvcnQnXSkpCgkJCQl7CgkJCQkJJHVybF9wYXJ0c1sncG9ydCddID0gODA7CgkJCQl9CgkJCQkkZnAgPSBAZnNvY2tvcGVuKCR1cmxfcGFydHNbJ2hvc3QnXSwgJHVybF9wYXJ0c1sncG9ydCddLCAkZXJybm8sICRlcnJzdHIsICR0aW1lb3V0KTsKCQkJCWlmICghJGZwKQoJCQkJewoJCQkJCSR0aGlzLT5lcnJvciA9ICdmc29ja29wZW4gZXJyb3I6ICcgLiAkZXJyc3RyOwoJCQkJCSR0aGlzLT5zdWNjZXNzID0gZmFsc2U7CgkJCQl9CgkJCQllbHNlCgkJCQl7CgkJCQkJc3RyZWFtX3NldF90aW1lb3V0KCRmcCwgJHRpbWVvdXQpOwoJCQkJCWlmIChpc3NldCgkdXJsX3BhcnRzWydwYXRoJ10pKQoJCQkJCXsKCQkJCQkJaWYgKGlzc2V0KCR1cmxfcGFydHNbJ3F1ZXJ5J10pKQoJCQkJCQl7CgkJCQkJCQkkZ2V0ID0gIiR1cmxfcGFydHNbcGF0aF0/JHVybF9wYXJ0c1txdWVyeV0iOwoJCQkJCQl9CgkJCQkJCWVsc2UKCQkJCQkJewoJCQkJCQkJJGdldCA9ICR1cmxfcGFydHNbJ3BhdGgnXTsKCQkJCQkJfQoJCQkJCX0KCQkJCQllbHNlCgkJCQkJewoJCQkJCQkkZ2V0ID0gJy8nOwoJCQkJCX0KCQkJCQkkb3V0ID0gIkdFVCAkZ2V0IEhUVFAvMS4wXHJcbiI7CgkJCQkJJG91dCAuPSAiSG9zdDogJHVybF9wYXJ0c1tob3N0XVxyXG4iOwoJCQkJCSRvdXQgLj0gIlVzZXItQWdlbnQ6ICR1c2VyYWdlbnRcclxuIjsKCQkJCQlpZiAoZXh0ZW5zaW9uX2xvYWRlZCgnemxpYicpKQoJCQkJCXsKCQkJCQkJJG91dCAuPSAiQWNjZXB0LUVuY29kaW5nOiB4LWd6aXAsZ3ppcCxkZWZsYXRlXHJcbiI7CgkJCQkJfQoKCQkJCQlpZiAoaXNzZXQoJHVybF9wYXJ0c1sndXNlciddKSAmJiBpc3NldCgkdXJsX3BhcnRzWydwYXNzJ10pKQoJCQkJCXsKCQkJCQkJJG91dCAuPSAiQXV0aG9yaXphdGlvbjogQmFzaWMgIiAuIGJhc2U2NF9lbmNvZGUoIiR1cmxfcGFydHNbdXNlcl06JHVybF9wYXJ0c1twYXNzXSIpIC4gIlxyXG4iOwoJCQkJCX0KCQkJCQlmb3JlYWNoICgkaGVhZGVycyBhcyAka2V5ID0+ICR2YWx1ZSkKCQkJCQl7CgkJCQkJCSRvdXQgLj0gIiRrZXk6ICR2YWx1ZVxyXG4iOwoJCQkJCX0KCQkJCQkkb3V0IC49ICJDb25uZWN0aW9uOiBDbG9zZVxyXG5cclxuIjsKCQkJCQlmd3JpdGUoJGZwLCAkb3V0KTsKCgkJCQkJJGluZm8gPSBzdHJlYW1fZ2V0X21ldGFfZGF0YSgkZnApOwoKCQkJCQkkdGhpcy0+aGVhZGVycyA9ICcnOwoJCQkJCXdoaWxlICghJGluZm9bJ2VvZiddICYmICEkaW5mb1sndGltZWRfb3V0J10pCgkJCQkJewoJCQkJCQkkdGhpcy0+aGVhZGVycyAuPSBmcmVhZCgkZnAsIDExNjApOwoJCQkJCQkkaW5mbyA9IHN0cmVhbV9nZXRfbWV0YV9kYXRhKCRmcCk7CgkJCQkJfQoJCQkJCWlmICghJGluZm9bJ3RpbWVkX291dCddKQoJCQkJCXsKCQkJCQkJJHBhcnNlciA9JiBuZXcgU2ltcGxlUGllX0hUVFBfUGFyc2VyKCR0aGlzLT5oZWFkZXJzKTsKCQkJCQkJaWYgKCRwYXJzZXItPnBhcnNlKCkpCgkJCQkJCXsKCQkJCQkJCSR0aGlzLT5oZWFkZXJzID0gJHBhcnNlci0+aGVhZGVyczsKCQkJCQkJCSR0aGlzLT5ib2R5ID0gJHBhcnNlci0+Ym9keTsKCQkJCQkJCSR0aGlzLT5zdGF0dXNfY29kZSA9ICRwYXJzZXItPnN0YXR1c19jb2RlOwoJCQkJCQkJaWYgKCgkdGhpcy0+c3RhdHVzX2NvZGUgPT0gMzAwIHx8ICR0aGlzLT5zdGF0dXNfY29kZSA9PSAzMDEgfHwgJHRoaXMtPnN0YXR1c19jb2RlID09IDMwMiB8fCAkdGhpcy0+c3RhdHVzX2NvZGUgPT0gMzAzIHx8ICR0aGlzLT5zdGF0dXNfY29kZSA9PSAzMDcgfHwgJHRoaXMtPnN0YXR1c19jb2RlID4gMzA3ICYmICR0aGlzLT5zdGF0dXNfY29kZSA8IDQwMCkgJiYgaXNzZXQoJHRoaXMtPmhlYWRlcnNbJ2xvY2F0aW9uJ10pICYmICR0aGlzLT5yZWRpcmVjdHMgPCAkcmVkaXJlY3RzKQoJCQkJCQkJewoJCQkJCQkJCSR0aGlzLT5yZWRpcmVjdHMrKzsKCQkJCQkJCQkkbG9jYXRpb24gPSBTaW1wbGVQaWVfTWlzYzo6YWJzb2x1dGl6ZV91cmwoJHRoaXMtPmhlYWRlcnNbJ2xvY2F0aW9uJ10sICR1cmwpOwoJCQkJCQkJCXJldHVybiAkdGhpcy0+U2ltcGxlUGllX0ZpbGUoJGxvY2F0aW9uLCAkdGltZW91dCwgJHJlZGlyZWN0cywgJGhlYWRlcnMsICR1c2VyYWdlbnQsICRmb3JjZV9mc29ja29wZW4pOwoJCQkJCQkJfQoJCQkJCQkJaWYgKGlzc2V0KCR0aGlzLT5oZWFkZXJzWydjb250ZW50LWVuY29kaW5nJ10pKQoJCQkJCQkJewoJCQkJCQkJCS8vIEhleSwgd2UgYWN0IGR1bWIgZWxzZXdoZXJlLCBzbyBsZXQncyBkbyB0aGF0IGhlcmUgdG9vCgkJCQkJCQkJc3dpdGNoIChzdHJ0b2xvd2VyKHRyaW0oJHRoaXMtPmhlYWRlcnNbJ2NvbnRlbnQtZW5jb2RpbmcnXSwgIlx4MDlceDBBXHgwRFx4MjAiKSkpCgkJCQkJCQkJewoJCQkJCQkJCQljYXNlICdnemlwJzoKCQkJCQkJCQkJY2FzZSAneC1nemlwJzoKCQkJCQkJCQkJCSRkZWNvZGVyID0gbmV3IFNpbXBsZVBpZV9nemRlY29kZSgkdGhpcy0+Ym9keSk7CgkJCQkJCQkJCQlpZiAoISRkZWNvZGVyLT5wYXJzZSgpKQoJCQkJCQkJCQkJewoJCQkJCQkJCQkJCSR0aGlzLT5lcnJvciA9ICdVbmFibGUgdG8gZGVjb2RlIEhUVFAgImd6aXAiIHN0cmVhbSc7CgkJCQkJCQkJCQkJJHRoaXMtPnN1Y2Nlc3MgPSBmYWxzZTsKCQkJCQkJCQkJCX0KCQkJCQkJCQkJCWVsc2UKCQkJCQkJCQkJCXsKCQkJCQkJCQkJCQkkdGhpcy0+Ym9keSA9ICRkZWNvZGVyLT5kYXRhOwoJCQkJCQkJCQkJfQoJCQkJCQkJCQkJYnJlYWs7CgoJCQkJCQkJCQljYXNlICdkZWZsYXRlJzoKCQkJCQkJCQkJCWlmICgoJGJvZHkgPSBnenVuY29tcHJlc3MoJHRoaXMtPmJvZHkpKSA9PT0gZmFsc2UpCgkJCQkJCQkJCQl7CgkJCQkJCQkJCQkJaWYgKCgkYm9keSA9IGd6aW5mbGF0ZSgkdGhpcy0+Ym9keSkpID09PSBmYWxzZSkKCQkJCQkJCQkJCQl7CgkJCQkJCQkJCQkJCSR0aGlzLT5lcnJvciA9ICdVbmFibGUgdG8gZGVjb2RlIEhUVFAgImRlZmxhdGUiIHN0cmVhbSc7CgkJCQkJCQkJCQkJCSR0aGlzLT5zdWNjZXNzID0gZmFsc2U7CgkJCQkJCQkJCQkJfQoJCQkJCQkJCQkJfQoJCQkJCQkJCQkJJHRoaXMtPmJvZHkgPSAkYm9keTsKCQkJCQkJCQkJCWJyZWFrOwoKCQkJCQkJCQkJZGVmYXVsdDoKCQkJCQkJCQkJCSR0aGlzLT5lcnJvciA9ICdVbmtub3duIGNvbnRlbnQgY29kaW5nJzsKCQkJCQkJCQkJCSR0aGlzLT5zdWNjZXNzID0gZmFsc2U7CgkJCQkJCQkJfQoJCQkJCQkJfQoJCQkJCQl9CgkJCQkJfQoJCQkJCWVsc2UKCQkJCQl7CgkJCQkJCSR0aGlzLT5lcnJvciA9ICdmc29ja2V0IHRpbWVkIG91dCc7CgkJCQkJCSR0aGlzLT5zdWNjZXNzID0gZmFsc2U7CgkJCQkJfQoJCQkJCWZjbG9zZSgkZnApOwoJCQkJfQoJCQl9CgkJfQoJCWVsc2UKCQl7CgkJCSR0aGlzLT5tZXRob2QgPSBTSU1QTEVQSUVfRklMRV9TT1VSQ0VfTE9DQUwgfCBTSU1QTEVQSUVfRklMRV9TT1VSQ0VfRklMRV9HRVRfQ09OVEVOVFM7CgkJCWlmICghJHRoaXMtPmJvZHkgPSBmaWxlX2dldF9jb250ZW50cygkdXJsKSkKCQkJewoJCQkJJHRoaXMtPmVycm9yID0gJ2ZpbGVfZ2V0X2NvbnRlbnRzIGNvdWxkIG5vdCByZWFkIHRoZSBmaWxlJzsKCQkJCSR0aGlzLT5zdWNjZXNzID0gZmFsc2U7CgkJCX0KCQl9Cgl9Cn0KCi8qKgogKiBIVFRQIFJlc3BvbnNlIFBhcnNlcgogKgogKiBAcGFja2FnZSBTaW1wbGVQaWUKICovCmNsYXNzIFNpbXBsZVBpZV9IVFRQX1BhcnNlcgp7CgkvKioKCSAqIEhUVFAgVmVyc2lvbgoJICoKCSAqIEBhY2Nlc3MgcHVibGljCgkgKiBAdmFyIGZsb2F0CgkgKi8KCXZhciAkaHR0cF92ZXJzaW9uID0gMC4wOwoKCS8qKgoJICogU3RhdHVzIGNvZGUKCSAqCgkgKiBAYWNjZXNzIHB1YmxpYwoJICogQHZhciBpbnQKCSAqLwoJdmFyICRzdGF0dXNfY29kZSA9IDA7CgoJLyoqCgkgKiBSZWFzb24gcGhyYXNlCgkgKgoJICogQGFjY2VzcyBwdWJsaWMKCSAqIEB2YXIgc3RyaW5nCgkgKi8KCXZhciAkcmVhc29uID0gJyc7CgoJLyoqCgkgKiBLZXkvdmFsdWUgcGFpcnMgb2YgdGhlIGhlYWRlcnMKCSAqCgkgKiBAYWNjZXNzIHB1YmxpYwoJICogQHZhciBhcnJheQoJICovCgl2YXIgJGhlYWRlcnMgPSBhcnJheSgpOwoKCS8qKgoJICogQm9keSBvZiB0aGUgcmVzcG9uc2UKCSAqCgkgKiBAYWNjZXNzIHB1YmxpYwoJICogQHZhciBzdHJpbmcKCSAqLwoJdmFyICRib2R5ID0gJyc7CgoJLyoqCgkgKiBDdXJyZW50IHN0YXRlIG9mIHRoZSBzdGF0ZSBtYWNoaW5lCgkgKgoJICogQGFjY2VzcyBwcml2YXRlCgkgKiBAdmFyIHN0cmluZwoJICovCgl2YXIgJHN0YXRlID0gJ2h0dHBfdmVyc2lvbic7CgoJLyoqCgkgKiBJbnB1dCBkYXRhCgkgKgoJICogQGFjY2VzcyBwcml2YXRlCgkgKiBAdmFyIHN0cmluZwoJICovCgl2YXIgJGRhdGEgPSAnJzsKCgkvKioKCSAqIElucHV0IGRhdGEgbGVuZ3RoICh0byBhdm9pZCBjYWxsaW5nIHN0cmxlbigpIGV2ZXJ5dGltZSB0aGlzIGlzIG5lZWRlZCkKCSAqCgkgKiBAYWNjZXNzIHByaXZhdGUKCSAqIEB2YXIgaW50CgkgKi8KCXZhciAkZGF0YV9sZW5ndGggPSAwOwoKCS8qKgoJICogQ3VycmVudCBwb3NpdGlvbiBvZiB0aGUgcG9pbnRlcgoJICoKCSAqIEB2YXIgaW50CgkgKiBAYWNjZXNzIHByaXZhdGUKCSAqLwoJdmFyICRwb3NpdGlvbiA9IDA7CgoJLyoqCgkgKiBOYW1lIG9mIHRoZSBoZWRhZXIgY3VycmVudGx5IGJlaW5nIHBhcnNlZAoJICoKCSAqIEBhY2Nlc3MgcHJpdmF0ZQoJICogQHZhciBzdHJpbmcKCSAqLwoJdmFyICRuYW1lID0gJyc7CgoJLyoqCgkgKiBWYWx1ZSBvZiB0aGUgaGVkYWVyIGN1cnJlbnRseSBiZWluZyBwYXJzZWQKCSAqCgkgKiBAYWNjZXNzIHByaXZhdGUKCSAqIEB2YXIgc3RyaW5nCgkgKi8KCXZhciAkdmFsdWUgPSAnJzsKCgkvKioKCSAqIENyZWF0ZSBhbiBpbnN0YW5jZSBvZiB0aGUgY2xhc3Mgd2l0aCB0aGUgaW5wdXQgZGF0YQoJICoKCSAqIEBhY2Nlc3MgcHVibGljCgkgKiBAcGFyYW0gc3RyaW5nICRkYXRhIElucHV0IGRhdGEKCSAqLwoJZnVuY3Rpb24gU2ltcGxlUGllX0hUVFBfUGFyc2VyKCRkYXRhKQoJewoJCSR0aGlzLT5kYXRhID0gJGRhdGE7CgkJJHRoaXMtPmRhdGFfbGVuZ3RoID0gc3RybGVuKCR0aGlzLT5kYXRhKTsKCX0KCgkvKioKCSAqIFBhcnNlIHRoZSBpbnB1dCBkYXRhCgkgKgoJICogQGFjY2VzcyBwdWJsaWMKCSAqIEByZXR1cm4gYm9vbCB0cnVlIG9uIHN1Y2Nlc3MsIGZhbHNlIG9uIGZhaWx1cmUKCSAqLwoJZnVuY3Rpb24gcGFyc2UoKQoJewoJCXdoaWxlICgkdGhpcy0+c3RhdGUgJiYgJHRoaXMtPnN0YXRlICE9PSAnZW1pdCcgJiYgJHRoaXMtPmhhc19kYXRhKCkpCgkJewoJCQkkc3RhdGUgPSAkdGhpcy0+c3RhdGU7CgkJCSR0aGlzLT4kc3RhdGUoKTsKCQl9CgkJJHRoaXMtPmRhdGEgPSAnJzsKCQlpZiAoJHRoaXMtPnN0YXRlID09PSAnZW1pdCcgfHwgJHRoaXMtPnN0YXRlID09PSAnYm9keScpCgkJewoJCQlyZXR1cm4gdHJ1ZTsKCQl9CgkJZWxzZQoJCXsKCQkJJHRoaXMtPmh0dHBfdmVyc2lvbiA9ICcnOwoJCQkkdGhpcy0+c3RhdHVzX2NvZGUgPSAnJzsKCQkJJHRoaXMtPnJlYXNvbiA9ICcnOwoJCQkkdGhpcy0+aGVhZGVycyA9IGFycmF5KCk7CgkJCSR0aGlzLT5ib2R5ID0gJyc7CgkJCXJldHVybiBmYWxzZTsKCQl9Cgl9CgoJLyoqCgkgKiBDaGVjayB3aGV0aGVyIHRoZXJlIGlzIGRhdGEgYmV5b25kIHRoZSBwb2ludGVyCgkgKgoJICogQGFjY2VzcyBwcml2YXRlCgkgKiBAcmV0dXJuIGJvb2wgdHJ1ZSBpZiB0aGVyZSBpcyBmdXJ0aGVyIGRhdGEsIGZhbHNlIGlmIG5vdAoJICovCglmdW5jdGlvbiBoYXNfZGF0YSgpCgl7CgkJcmV0dXJuIChib29sKSAoJHRoaXMtPnBvc2l0aW9uIDwgJHRoaXMtPmRhdGFfbGVuZ3RoKTsKCX0KCgkvKioKCSAqIFNlZSBpZiB0aGUgbmV4dCBjaGFyYWN0ZXIgaXMgTFdTCgkgKgoJICogQGFjY2VzcyBwcml2YXRlCgkgKiBAcmV0dXJuIGJvb2wgdHJ1ZSBpZiB0aGUgbmV4dCBjaGFyYWN0ZXIgaXMgTFdTLCBmYWxzZSBpZiBub3QKCSAqLwoJZnVuY3Rpb24gaXNfbGluZWFyX3doaXRlc3BhY2UoKQoJewoJCXJldHVybiAoYm9vbCkgKCR0aGlzLT5kYXRhWyR0aGlzLT5wb3NpdGlvbl0gPT09ICJceDA5IgoJCQl8fCAkdGhpcy0+ZGF0YVskdGhpcy0+cG9zaXRpb25dID09PSAiXHgyMCIKCQkJfHwgKCR0aGlzLT5kYXRhWyR0aGlzLT5wb3NpdGlvbl0gPT09ICJceDBBIgoJCQkJJiYgaXNzZXQoJHRoaXMtPmRhdGFbJHRoaXMtPnBvc2l0aW9uICsgMV0pCgkJCQkmJiAoJHRoaXMtPmRhdGFbJHRoaXMtPnBvc2l0aW9uICsgMV0gPT09ICJceDA5IiB8fCAkdGhpcy0+ZGF0YVskdGhpcy0+cG9zaXRpb24gKyAxXSA9PT0gIlx4MjAiKSkpOwoJfQoKCS8qKgoJICogUGFyc2UgdGhlIEhUVFAgdmVyc2lvbgoJICoKCSAqIEBhY2Nlc3MgcHJpdmF0ZQoJICovCglmdW5jdGlvbiBodHRwX3ZlcnNpb24oKQoJewoJCWlmIChzdHJwb3MoJHRoaXMtPmRhdGEsICJceDBBIikgIT09IGZhbHNlICYmIHN0cnRvdXBwZXIoc3Vic3RyKCR0aGlzLT5kYXRhLCAwLCA1KSkgPT09ICdIVFRQLycpCgkJewoJCQkkbGVuID0gc3Ryc3BuKCR0aGlzLT5kYXRhLCAnMDEyMzQ1Njc4OS4nLCA1KTsKCQkJJHRoaXMtPmh0dHBfdmVyc2lvbiA9IHN1YnN0cigkdGhpcy0+ZGF0YSwgNSwgJGxlbik7CgkJCSR0aGlzLT5wb3NpdGlvbiArPSA1ICsgJGxlbjsKCQkJaWYgKHN1YnN0cl9jb3VudCgkdGhpcy0+aHR0cF92ZXJzaW9uLCAnLicpIDw9IDEpCgkJCXsKCQkJCSR0aGlzLT5odHRwX3ZlcnNpb24gPSAoZmxvYXQpICR0aGlzLT5odHRwX3ZlcnNpb247CgkJCQkkdGhpcy0+cG9zaXRpb24gKz0gc3Ryc3BuKCR0aGlzLT5kYXRhLCAiXHgwOVx4MjAiLCAkdGhpcy0+cG9zaXRpb24pOwoJCQkJJHRoaXMtPnN0YXRlID0gJ3N0YXR1cyc7CgkJCX0KCQkJZWxzZQoJCQl7CgkJCQkkdGhpcy0+c3RhdGUgPSBmYWxzZTsKCQkJfQoJCX0KCQllbHNlCgkJewoJCQkkdGhpcy0+c3RhdGUgPSBmYWxzZTsKCQl9Cgl9CgoJLyoqCgkgKiBQYXJzZSB0aGUgc3RhdHVzIGNvZGUKCSAqCgkgKiBAYWNjZXNzIHByaXZhdGUKCSAqLwoJZnVuY3Rpb24gc3RhdHVzKCkKCXsKCQlpZiAoJGxlbiA9IHN0cnNwbigkdGhpcy0+ZGF0YSwgJzAxMjM0NTY3ODknLCAkdGhpcy0+cG9zaXRpb24pKQoJCXsKCQkJJHRoaXMtPnN0YXR1c19jb2RlID0gKGludCkgc3Vic3RyKCR0aGlzLT5kYXRhLCAkdGhpcy0+cG9zaXRpb24sICRsZW4pOwoJCQkkdGhpcy0+cG9zaXRpb24gKz0gJGxlbjsKCQkJJHRoaXMtPnN0YXRlID0gJ3JlYXNvbic7CgkJfQoJCWVsc2UKCQl7CgkJCSR0aGlzLT5zdGF0ZSA9IGZhbHNlOwoJCX0KCX0KCgkvKioKCSAqIFBhcnNlIHRoZSByZWFzb24gcGhyYXNlCgkgKgoJICogQGFjY2VzcyBwcml2YXRlCgkgKi8KCWZ1bmN0aW9uIHJlYXNvbigpCgl7CgkJJGxlbiA9IHN0cmNzcG4oJHRoaXMtPmRhdGEsICJceDBBIiwgJHRoaXMtPnBvc2l0aW9uKTsKCQkkdGhpcy0+cmVhc29uID0gdHJpbShzdWJzdHIoJHRoaXMtPmRhdGEsICR0aGlzLT5wb3NpdGlvbiwgJGxlbiksICJceDA5XHgwRFx4MjAiKTsKCQkkdGhpcy0+cG9zaXRpb24gKz0gJGxlbiArIDE7CgkJJHRoaXMtPnN0YXRlID0gJ25ld19saW5lJzsKCX0KCgkvKioKCSAqIERlYWwgd2l0aCBhIG5ldyBsaW5lLCBzaGlmdGluZyBkYXRhIGFyb3VuZCBhcyBuZWVkZWQKCSAqCgkgKiBAYWNjZXNzIHByaXZhdGUKCSAqLwoJZnVuY3Rpb24gbmV3X2xpbmUoKQoJewoJCSR0aGlzLT52YWx1ZSA9IHRyaW0oJHRoaXMtPnZhbHVlLCAiXHgwRFx4MjAiKTsKCQlpZiAoJHRoaXMtPm5hbWUgIT09ICcnICYmICR0aGlzLT52YWx1ZSAhPT0gJycpCgkJewoJCQkkdGhpcy0+bmFtZSA9IHN0cnRvbG93ZXIoJHRoaXMtPm5hbWUpOwoJCQlpZiAoaXNzZXQoJHRoaXMtPmhlYWRlcnNbJHRoaXMtPm5hbWVdKSkKCQkJewoJCQkJJHRoaXMtPmhlYWRlcnNbJHRoaXMtPm5hbWVdIC49ICcsICcgLiAkdGhpcy0+dmFsdWU7CgkJCX0KCQkJZWxzZQoJCQl7CgkJCQkkdGhpcy0+aGVhZGVyc1skdGhpcy0+bmFtZV0gPSAkdGhpcy0+dmFsdWU7CgkJCX0KCQl9CgkJJHRoaXMtPm5hbWUgPSAnJzsKCQkkdGhpcy0+dmFsdWUgPSAnJzsKCQlpZiAoc3Vic3RyKCR0aGlzLT5kYXRhWyR0aGlzLT5wb3NpdGlvbl0sIDAsIDIpID09PSAiXHgwRFx4MEEiKQoJCXsKCQkJJHRoaXMtPnBvc2l0aW9uICs9IDI7CgkJCSR0aGlzLT5zdGF0ZSA9ICdib2R5JzsKCQl9CgkJZWxzZWlmICgkdGhpcy0+ZGF0YVskdGhpcy0+cG9zaXRpb25dID09PSAiXHgwQSIpCgkJewoJCQkkdGhpcy0+cG9zaXRpb24rKzsKCQkJJHRoaXMtPnN0YXRlID0gJ2JvZHknOwoJCX0KCQllbHNlCgkJewoJCQkkdGhpcy0+c3RhdGUgPSAnbmFtZSc7CgkJfQoJfQoKCS8qKgoJICogUGFyc2UgYSBoZWFkZXIgbmFtZQoJICoKCSAqIEBhY2Nlc3MgcHJpdmF0ZQoJICovCglmdW5jdGlvbiBuYW1lKCkKCXsKCQkkbGVuID0gc3RyY3NwbigkdGhpcy0+ZGF0YSwgIlx4MEE6IiwgJHRoaXMtPnBvc2l0aW9uKTsKCQlpZiAoaXNzZXQoJHRoaXMtPmRhdGFbJHRoaXMtPnBvc2l0aW9uICsgJGxlbl0pKQoJCXsKCQkJaWYgKCR0aGlzLT5kYXRhWyR0aGlzLT5wb3NpdGlvbiArICRsZW5dID09PSAiXHgwQSIpCgkJCXsKCQkJCSR0aGlzLT5wb3NpdGlvbiArPSAkbGVuOwoJCQkJJHRoaXMtPnN0YXRlID0gJ25ld19saW5lJzsKCQkJfQoJCQllbHNlCgkJCXsKCQkJCSR0aGlzLT5uYW1lID0gc3Vic3RyKCR0aGlzLT5kYXRhLCAkdGhpcy0+cG9zaXRpb24sICRsZW4pOwoJCQkJJHRoaXMtPnBvc2l0aW9uICs9ICRsZW4gKyAxOwoJCQkJJHRoaXMtPnN0YXRlID0gJ3ZhbHVlJzsKCQkJfQoJCX0KCQllbHNlCgkJewoJCQkkdGhpcy0+c3RhdGUgPSBmYWxzZTsKCQl9Cgl9CgoJLyoqCgkgKiBQYXJzZSBMV1MsIHJlcGxhY2luZyBjb25zZWN1dGl2ZSBMV1MgY2hhcmFjdGVycyB3aXRoIGEgc2luZ2xlIHNwYWNlCgkgKgoJICogQGFjY2VzcyBwcml2YXRlCgkgKi8KCWZ1bmN0aW9uIGxpbmVhcl93aGl0ZXNwYWNlKCkKCXsKCQlkbwoJCXsKCQkJaWYgKHN1YnN0cigkdGhpcy0+ZGF0YSwgJHRoaXMtPnBvc2l0aW9uLCAyKSA9PT0gIlx4MERceDBBIikKCQkJewoJCQkJJHRoaXMtPnBvc2l0aW9uICs9IDI7CgkJCX0KCQkJZWxzZWlmICgkdGhpcy0+ZGF0YVskdGhpcy0+cG9zaXRpb25dID09PSAiXHgwQSIpCgkJCXsKCQkJCSR0aGlzLT5wb3NpdGlvbisrOwoJCQl9CgkJCSR0aGlzLT5wb3NpdGlvbiArPSBzdHJzcG4oJHRoaXMtPmRhdGEsICJceDA5XHgyMCIsICR0aGlzLT5wb3NpdGlvbik7CgkJfSB3aGlsZSAoJHRoaXMtPmhhc19kYXRhKCkgJiYgJHRoaXMtPmlzX2xpbmVhcl93aGl0ZXNwYWNlKCkpOwoJCSR0aGlzLT52YWx1ZSAuPSAiXHgyMCI7Cgl9CgoJLyoqCgkgKiBTZWUgd2hhdCBzdGF0ZSB0byBtb3ZlIHRvIHdoaWxlIHdpdGhpbiBub24tcXVvdGVkIGhlYWRlciB2YWx1ZXMKCSAqCgkgKiBAYWNjZXNzIHByaXZhdGUKCSAqLwoJZnVuY3Rpb24gdmFsdWUoKQoJewoJCWlmICgkdGhpcy0+aXNfbGluZWFyX3doaXRlc3BhY2UoKSkKCQl7CgkJCSR0aGlzLT5saW5lYXJfd2hpdGVzcGFjZSgpOwoJCX0KCQllbHNlCgkJewoJCQlzd2l0Y2ggKCR0aGlzLT5kYXRhWyR0aGlzLT5wb3NpdGlvbl0pCgkJCXsKCQkJCWNhc2UgJyInOgoJCQkJCSR0aGlzLT5wb3NpdGlvbisrOwoJCQkJCSR0aGlzLT5zdGF0ZSA9ICdxdW90ZSc7CgkJCQkJYnJlYWs7CgoJCQkJY2FzZSAiXHgwQSI6CgkJCQkJJHRoaXMtPnBvc2l0aW9uKys7CgkJCQkJJHRoaXMtPnN0YXRlID0gJ25ld19saW5lJzsKCQkJCQlicmVhazsKCgkJCQlkZWZhdWx0OgoJCQkJCSR0aGlzLT5zdGF0ZSA9ICd2YWx1ZV9jaGFyJzsKCQkJCQlicmVhazsKCQkJfQoJCX0KCX0KCgkvKioKCSAqIFBhcnNlIGEgaGVhZGVyIHZhbHVlIHdoaWxlIG91dHNpZGUgcXVvdGVzCgkgKgoJICogQGFjY2VzcyBwcml2YXRlCgkgKi8KCWZ1bmN0aW9uIHZhbHVlX2NoYXIoKQoJewoJCSRsZW4gPSBzdHJjc3BuKCR0aGlzLT5kYXRhLCAiXHgwOVx4MjBceDBBXCIiLCAkdGhpcy0+cG9zaXRpb24pOwoJCSR0aGlzLT52YWx1ZSAuPSBzdWJzdHIoJHRoaXMtPmRhdGEsICR0aGlzLT5wb3NpdGlvbiwgJGxlbik7CgkJJHRoaXMtPnBvc2l0aW9uICs9ICRsZW47CgkJJHRoaXMtPnN0YXRlID0gJ3ZhbHVlJzsKCX0KCgkvKioKCSAqIFNlZSB3aGF0IHN0YXRlIHRvIG1vdmUgdG8gd2hpbGUgd2l0aGluIHF1b3RlZCBoZWFkZXIgdmFsdWVzCgkgKgoJICogQGFjY2VzcyBwcml2YXRlCgkgKi8KCWZ1bmN0aW9uIHF1b3RlKCkKCXsKCQlpZiAoJHRoaXMtPmlzX2xpbmVhcl93aGl0ZXNwYWNlKCkpCgkJewoJCQkkdGhpcy0+bGluZWFyX3doaXRlc3BhY2UoKTsKCQl9CgkJZWxzZQoJCXsKCQkJc3dpdGNoICgkdGhpcy0+ZGF0YVskdGhpcy0+cG9zaXRpb25dKQoJCQl7CgkJCQljYXNlICciJzoKCQkJCQkkdGhpcy0+cG9zaXRpb24rKzsKCQkJCQkkdGhpcy0+c3RhdGUgPSAndmFsdWUnOwoJCQkJCWJyZWFrOwoKCQkJCWNhc2UgIlx4MEEiOgoJCQkJCSR0aGlzLT5wb3NpdGlvbisrOwoJCQkJCSR0aGlzLT5zdGF0ZSA9ICduZXdfbGluZSc7CgkJCQkJYnJlYWs7CgoJCQkJY2FzZSAnXFwnOgoJCQkJCSR0aGlzLT5wb3NpdGlvbisrOwoJCQkJCSR0aGlzLT5zdGF0ZSA9ICdxdW90ZV9lc2NhcGVkJzsKCQkJCQlicmVhazsKCgkJCQlkZWZhdWx0OgoJCQkJCSR0aGlzLT5zdGF0ZSA9ICdxdW90ZV9jaGFyJzsKCQkJCQlicmVhazsKCQkJfQoJCX0KCX0KCgkvKioKCSAqIFBhcnNlIGEgaGVhZGVyIHZhbHVlIHdoaWxlIHdpdGhpbiBxdW90ZXMKCSAqCgkgKiBAYWNjZXNzIHByaXZhdGUKCSAqLwoJZnVuY3Rpb24gcXVvdGVfY2hhcigpCgl7CgkJJGxlbiA9IHN0cmNzcG4oJHRoaXMtPmRhdGEsICJceDA5XHgyMFx4MEFcIlxcIiwgJHRoaXMtPnBvc2l0aW9uKTsKCQkkdGhpcy0+dmFsdWUgLj0gc3Vic3RyKCR0aGlzLT5kYXRhLCAkdGhpcy0+cG9zaXRpb24sICRsZW4pOwoJCSR0aGlzLT5wb3NpdGlvbiArPSAkbGVuOwoJCSR0aGlzLT5zdGF0ZSA9ICd2YWx1ZSc7Cgl9CgoJLyoqCgkgKiBQYXJzZSBhbiBlc2NhcGVkIGNoYXJhY3RlciB3aXRoaW4gcXVvdGVzCgkgKgoJICogQGFjY2VzcyBwcml2YXRlCgkgKi8KCWZ1bmN0aW9uIHF1b3RlX2VzY2FwZWQoKQoJewoJCSR0aGlzLT52YWx1ZSAuPSAkdGhpcy0+ZGF0YVskdGhpcy0+cG9zaXRpb25dOwoJCSR0aGlzLT5wb3NpdGlvbisrOwoJCSR0aGlzLT5zdGF0ZSA9ICdxdW90ZSc7Cgl9CgoJLyoqCgkgKiBQYXJzZSB0aGUgYm9keQoJICoKCSAqIEBhY2Nlc3MgcHJpdmF0ZQoJICovCglmdW5jdGlvbiBib2R5KCkKCXsKCQkkdGhpcy0+Ym9keSA9IHN1YnN0cigkdGhpcy0+ZGF0YSwgJHRoaXMtPnBvc2l0aW9uKTsKCQkkdGhpcy0+c3RhdGUgPSAnZW1pdCc7Cgl9Cn0KCi8qKgogKiBnemRlY29kZQogKgogKiBAcGFja2FnZSBTaW1wbGVQaWUKICovCmNsYXNzIFNpbXBsZVBpZV9nemRlY29kZQp7CgkvKioKCSAqIENvbXByZXNzZWQgZGF0YQoJICoKCSAqIEBhY2Nlc3MgcHJpdmF0ZQoJICogQHNlZSBnemRlY29kZTo6JGRhdGEKCSAqLwoJdmFyICRjb21wcmVzc2VkX2RhdGE7CgoJLyoqCgkgKiBTaXplIG9mIGNvbXByZXNzZWQgZGF0YQoJICoKCSAqIEBhY2Nlc3MgcHJpdmF0ZQoJICovCgl2YXIgJGNvbXByZXNzZWRfc2l6ZTsKCgkvKioKCSAqIE1pbmltdW0gc2l6ZSBvZiBhIHZhbGlkIGd6aXAgc3RyaW5nCgkgKgoJICogQGFjY2VzcyBwcml2YXRlCgkgKi8KCXZhciAkbWluX2NvbXByZXNzZWRfc2l6ZSA9IDE4OwoKCS8qKgoJICogQ3VycmVudCBwb3NpdGlvbiBvZiBwb2ludGVyCgkgKgoJICogQGFjY2VzcyBwcml2YXRlCgkgKi8KCXZhciAkcG9zaXRpb24gPSAwOwoKCS8qKgoJICogRmxhZ3MgKEZMRykKCSAqCgkgKiBAYWNjZXNzIHByaXZhdGUKCSAqLwoJdmFyICRmbGFnczsKCgkvKioKCSAqIFVuY29tcHJlc3NlZCBkYXRhCgkgKgoJICogQGFjY2VzcyBwdWJsaWMKCSAqIEBzZWUgZ3pkZWNvZGU6OiRjb21wcmVzc2VkX2RhdGEKCSAqLwoJdmFyICRkYXRhOwoKCS8qKgoJICogTW9kaWZpZWQgdGltZQoJICoKCSAqIEBhY2Nlc3MgcHVibGljCgkgKi8KCXZhciAkTVRJTUU7CgoJLyoqCgkgKiBFeHRyYSBGbGFncwoJICoKCSAqIEBhY2Nlc3MgcHVibGljCgkgKi8KCXZhciAkWEZMOwoKCS8qKgoJICogT3BlcmF0aW5nIFN5c3RlbQoJICoKCSAqIEBhY2Nlc3MgcHVibGljCgkgKi8KCXZhciAkT1M7CgoJLyoqCgkgKiBTdWJmaWVsZCBJRCAxCgkgKgoJICogQGFjY2VzcyBwdWJsaWMKCSAqIEBzZWUgZ3pkZWNvZGU6OiRleHRyYV9maWVsZAoJICogQHNlZSBnemRlY29kZTo6JFNJMgoJICovCgl2YXIgJFNJMTsKCgkvKioKCSAqIFN1YmZpZWxkIElEIDIKCSAqCgkgKiBAYWNjZXNzIHB1YmxpYwoJICogQHNlZSBnemRlY29kZTo6JGV4dHJhX2ZpZWxkCgkgKiBAc2VlIGd6ZGVjb2RlOjokU0kxCgkgKi8KCXZhciAkU0kyOwoKCS8qKgoJICogRXh0cmEgZmllbGQgY29udGVudAoJICoKCSAqIEBhY2Nlc3MgcHVibGljCgkgKiBAc2VlIGd6ZGVjb2RlOjokU0kxCgkgKiBAc2VlIGd6ZGVjb2RlOjokU0kyCgkgKi8KCXZhciAkZXh0cmFfZmllbGQ7CgoJLyoqCgkgKiBPcmlnaW5hbCBmaWxlbmFtZQoJICoKCSAqIEBhY2Nlc3MgcHVibGljCgkgKi8KCXZhciAkZmlsZW5hbWU7CgoJLyoqCgkgKiBIdW1hbiByZWFkYWJsZSBjb21tZW50CgkgKgoJICogQGFjY2VzcyBwdWJsaWMKCSAqLwoJdmFyICRjb21tZW50OwoKCS8qKgoJICogRG9uJ3QgYWxsb3cgYW55dGhpbmcgdG8gYmUgc2V0CgkgKgoJICogQGFjY2VzcyBwdWJsaWMKCSAqLwoJZnVuY3Rpb24gX19zZXQoJG5hbWUsICR2YWx1ZSkKCXsKCQl0cmlnZ2VyX2Vycm9yKCJDYW5ub3Qgd3JpdGUgcHJvcGVydHkgJG5hbWUiLCBFX1VTRVJfRVJST1IpOwoJfQoKCS8qKgoJICogU2V0IHRoZSBjb21wcmVzc2VkIHN0cmluZyBhbmQgcmVsYXRlZCBwcm9wZXJ0aWVzCgkgKgoJICogQGFjY2VzcyBwdWJsaWMKCSAqLwoJZnVuY3Rpb24gU2ltcGxlUGllX2d6ZGVjb2RlKCRkYXRhKQoJewoJCSR0aGlzLT5jb21wcmVzc2VkX2RhdGEgPSAkZGF0YTsKCQkkdGhpcy0+Y29tcHJlc3NlZF9zaXplID0gc3RybGVuKCRkYXRhKTsKCX0KCgkvKioKCSAqIERlY29kZSB0aGUgR1pJUCBzdHJlYW0KCSAqCgkgKiBAYWNjZXNzIHB1YmxpYwoJICovCglmdW5jdGlvbiBwYXJzZSgpCgl7CgkJaWYgKCR0aGlzLT5jb21wcmVzc2VkX3NpemUgPj0gJHRoaXMtPm1pbl9jb21wcmVzc2VkX3NpemUpCgkJewoJCQkvLyBDaGVjayBJRDEsIElEMiwgYW5kIENNCgkJCWlmIChzdWJzdHIoJHRoaXMtPmNvbXByZXNzZWRfZGF0YSwgMCwgMykgIT09ICJceDFGXHg4Qlx4MDgiKQoJCQl7CgkJCQlyZXR1cm4gZmFsc2U7CgkJCX0KCgkJCS8vIEdldCB0aGUgRkxHIChGTGFHcykKCQkJJHRoaXMtPmZsYWdzID0gb3JkKCR0aGlzLT5jb21wcmVzc2VkX2RhdGFbM10pOwoKCQkJLy8gRkxHIGJpdHMgYWJvdmUgKDEgPDwgNCkgYXJlIHJlc2VydmVkCgkJCWlmICgkdGhpcy0+ZmxhZ3MgPiAweDFGKQoJCQl7CgkJCQlyZXR1cm4gZmFsc2U7CgkJCX0KCgkJCS8vIEFkdmFuY2UgdGhlIHBvaW50ZXIgYWZ0ZXIgdGhlIGFib3ZlCgkJCSR0aGlzLT5wb3NpdGlvbiArPSA0OwoKCQkJLy8gTVRJTUUKCQkJJG10aW1lID0gc3Vic3RyKCR0aGlzLT5jb21wcmVzc2VkX2RhdGEsICR0aGlzLT5wb3NpdGlvbiwgNCk7CgkJCS8vIFJldmVyc2UgdGhlIHN0cmluZyBpZiB3ZSdyZSBvbiBhIGJpZy1lbmRpYW4gYXJjaCBiZWNhdXNlIGwgaXMgdGhlIG9ubHkgc2lnbmVkIGxvbmcgYW5kIGlzIG1hY2hpbmUgZW5kaWFubmVzcwoJCQlpZiAoY3VycmVudCh1bnBhY2soJ1MnLCAiXHgwMFx4MDEiKSkgPT09IDEpCgkJCXsKCQkJCSRtdGltZSA9IHN0cnJldigkbXRpbWUpOwoJCQl9CgkJCSR0aGlzLT5NVElNRSA9IGN1cnJlbnQodW5wYWNrKCdsJywgJG10aW1lKSk7CgkJCSR0aGlzLT5wb3NpdGlvbiArPSA0OwoKCQkJLy8gR2V0IHRoZSBYRkwgKGVYdHJhIEZMYWdzKQoJCQkkdGhpcy0+WEZMID0gb3JkKCR0aGlzLT5jb21wcmVzc2VkX2RhdGFbJHRoaXMtPnBvc2l0aW9uKytdKTsKCgkJCS8vIEdldCB0aGUgT1MgKE9wZXJhdGluZyBTeXN0ZW0pCgkJCSR0aGlzLT5PUyA9IG9yZCgkdGhpcy0+Y29tcHJlc3NlZF9kYXRhWyR0aGlzLT5wb3NpdGlvbisrXSk7CgoJCQkvLyBQYXJzZSB0aGUgRkVYVFJBCgkJCWlmICgkdGhpcy0+ZmxhZ3MgJiA0KQoJCQl7CgkJCQkvLyBSZWFkIHN1YmZpZWxkIElEcwoJCQkJJHRoaXMtPlNJMSA9ICR0aGlzLT5jb21wcmVzc2VkX2RhdGFbJHRoaXMtPnBvc2l0aW9uKytdOwoJCQkJJHRoaXMtPlNJMiA9ICR0aGlzLT5jb21wcmVzc2VkX2RhdGFbJHRoaXMtPnBvc2l0aW9uKytdOwoKCQkJCS8vIFNJMiBzZXQgdG8gemVybyBpcyByZXNlcnZlZCBmb3IgZnV0dXJlIHVzZQoJCQkJaWYgKCR0aGlzLT5TSTIgPT09ICJceDAwIikKCQkJCXsKCQkJCQlyZXR1cm4gZmFsc2U7CgkJCQl9CgoJCQkJLy8gR2V0IHRoZSBsZW5ndGggb2YgdGhlIGV4dHJhIGZpZWxkCgkJCQkkbGVuID0gY3VycmVudCh1bnBhY2soJ3YnLCBzdWJzdHIoJHRoaXMtPmNvbXByZXNzZWRfZGF0YSwgJHRoaXMtPnBvc2l0aW9uLCAyKSkpOwoJCQkJJHBvc2l0aW9uICs9IDI7CgoJCQkJLy8gQ2hlY2sgdGhlIGxlbmd0aCBvZiB0aGUgc3RyaW5nIGlzIHN0aWxsIHZhbGlkCgkJCQkkdGhpcy0+bWluX2NvbXByZXNzZWRfc2l6ZSArPSAkbGVuICsgNDsKCQkJCWlmICgkdGhpcy0+Y29tcHJlc3NlZF9zaXplID49ICR0aGlzLT5taW5fY29tcHJlc3NlZF9zaXplKQoJCQkJewoJCQkJCS8vIFNldCB0aGUgZXh0cmEgZmllbGQgdG8gdGhlIGdpdmVuIGRhdGEKCQkJCQkkdGhpcy0+ZXh0cmFfZmllbGQgPSBzdWJzdHIoJHRoaXMtPmNvbXByZXNzZWRfZGF0YSwgJHRoaXMtPnBvc2l0aW9uLCAkbGVuKTsKCQkJCQkkdGhpcy0+cG9zaXRpb24gKz0gJGxlbjsKCQkJCX0KCQkJCWVsc2UKCQkJCXsKCQkJCQlyZXR1cm4gZmFsc2U7CgkJCQl9CgkJCX0KCgkJCS8vIFBhcnNlIHRoZSBGTkFNRQoJCQlpZiAoJHRoaXMtPmZsYWdzICYgOCkKCQkJewoJCQkJLy8gR2V0IHRoZSBsZW5ndGggb2YgdGhlIGZpbGVuYW1lCgkJCQkkbGVuID0gc3Ryc3BuKCR0aGlzLT5jb21wcmVzc2VkX2RhdGEsICJceDAwIiwgJHRoaXMtPnBvc2l0aW9uKTsKCgkJCQkvLyBDaGVjayB0aGUgbGVuZ3RoIG9mIHRoZSBzdHJpbmcgaXMgc3RpbGwgdmFsaWQKCQkJCSR0aGlzLT5taW5fY29tcHJlc3NlZF9zaXplICs9ICRsZW4gKyAxOwoJCQkJaWYgKCR0aGlzLT5jb21wcmVzc2VkX3NpemUgPj0gJHRoaXMtPm1pbl9jb21wcmVzc2VkX3NpemUpCgkJCQl7CgkJCQkJLy8gU2V0IHRoZSBvcmlnaW5hbCBmaWxlbmFtZSB0byB0aGUgZ2l2ZW4gc3RyaW5nCgkJCQkJJHRoaXMtPmZpbGVuYW1lID0gc3Vic3RyKCR0aGlzLT5jb21wcmVzc2VkX2RhdGEsICR0aGlzLT5wb3NpdGlvbiwgJGxlbik7CgkJCQkJJHRoaXMtPnBvc2l0aW9uICs9ICRsZW4gKyAxOwoJCQkJfQoJCQkJZWxzZQoJCQkJewoJCQkJCXJldHVybiBmYWxzZTsKCQkJCX0KCQkJfQoKCQkJLy8gUGFyc2UgdGhlIEZDT01NRU5UCgkJCWlmICgkdGhpcy0+ZmxhZ3MgJiAxNikKCQkJewoJCQkJLy8gR2V0IHRoZSBsZW5ndGggb2YgdGhlIGNvbW1lbnQKCQkJCSRsZW4gPSBzdHJzcG4oJHRoaXMtPmNvbXByZXNzZWRfZGF0YSwgIlx4MDAiLCAkdGhpcy0+cG9zaXRpb24pOwoKCQkJCS8vIENoZWNrIHRoZSBsZW5ndGggb2YgdGhlIHN0cmluZyBpcyBzdGlsbCB2YWxpZAoJCQkJJHRoaXMtPm1pbl9jb21wcmVzc2VkX3NpemUgKz0gJGxlbiArIDE7CgkJCQlpZiAoJHRoaXMtPmNvbXByZXNzZWRfc2l6ZSA+PSAkdGhpcy0+bWluX2NvbXByZXNzZWRfc2l6ZSkKCQkJCXsKCQkJCQkvLyBTZXQgdGhlIG9yaWdpbmFsIGNvbW1lbnQgdG8gdGhlIGdpdmVuIHN0cmluZwoJCQkJCSR0aGlzLT5jb21tZW50ID0gc3Vic3RyKCR0aGlzLT5jb21wcmVzc2VkX2RhdGEsICR0aGlzLT5wb3NpdGlvbiwgJGxlbik7CgkJCQkJJHRoaXMtPnBvc2l0aW9uICs9ICRsZW4gKyAxOwoJCQkJfQoJCQkJZWxzZQoJCQkJewoJCQkJCXJldHVybiBmYWxzZTsKCQkJCX0KCQkJfQoKCQkJLy8gUGFyc2UgdGhlIEZIQ1JDCgkJCWlmICgkdGhpcy0+ZmxhZ3MgJiAyKQoJCQl7CgkJCQkvLyBDaGVjayB0aGUgbGVuZ3RoIG9mIHRoZSBzdHJpbmcgaXMgc3RpbGwgdmFsaWQKCQkJCSR0aGlzLT5taW5fY29tcHJlc3NlZF9zaXplICs9ICRsZW4gKyAyOwoJCQkJaWYgKCR0aGlzLT5jb21wcmVzc2VkX3NpemUgPj0gJHRoaXMtPm1pbl9jb21wcmVzc2VkX3NpemUpCgkJCQl7CgkJCQkJLy8gUmVhZCB0aGUgQ1JDCgkJCQkJJGNyYyA9IGN1cnJlbnQodW5wYWNrKCd2Jywgc3Vic3RyKCR0aGlzLT5jb21wcmVzc2VkX2RhdGEsICR0aGlzLT5wb3NpdGlvbiwgMikpKTsKCgkJCQkJLy8gQ2hlY2sgdGhlIENSQyBtYXRjaGVzCgkJCQkJaWYgKChjcmMzMihzdWJzdHIoJHRoaXMtPmNvbXByZXNzZWRfZGF0YSwgMCwgJHRoaXMtPnBvc2l0aW9uKSkgJiAweEZGRkYpID09PSAkY3JjKQoJCQkJCXsKCQkJCQkJJHRoaXMtPnBvc2l0aW9uICs9IDI7CgkJCQkJfQoJCQkJCWVsc2UKCQkJCQl7CgkJCQkJCXJldHVybiBmYWxzZTsKCQkJCQl9CgkJCQl9CgkJCQllbHNlCgkJCQl7CgkJCQkJcmV0dXJuIGZhbHNlOwoJCQkJfQoJCQl9CgoJCQkvLyBEZWNvbXByZXNzIHRoZSBhY3R1YWwgZGF0YQoJCQlpZiAoKCR0aGlzLT5kYXRhID0gZ3ppbmZsYXRlKHN1YnN0cigkdGhpcy0+Y29tcHJlc3NlZF9kYXRhLCAkdGhpcy0+cG9zaXRpb24sIC04KSkpID09PSBmYWxzZSkKCQkJewoJCQkJcmV0dXJuIGZhbHNlOwoJCQl9CgkJCWVsc2UKCQkJewoJCQkJJHRoaXMtPnBvc2l0aW9uID0gJHRoaXMtPmNvbXByZXNzZWRfc2l6ZSAtIDg7CgkJCX0KCgkJCS8vIENoZWNrIENSQyBvZiBkYXRhCgkJCSRjcmMgPSBjdXJyZW50KHVucGFjaygnVicsIHN1YnN0cigkdGhpcy0+Y29tcHJlc3NlZF9kYXRhLCAkdGhpcy0+cG9zaXRpb24sIDQpKSk7CgkJCSR0aGlzLT5wb3NpdGlvbiArPSA0OwoJCQkvKmlmIChleHRlbnNpb25fbG9hZGVkKCdoYXNoJykgJiYgc3ByaW50ZignJXUnLCBjdXJyZW50KHVucGFjaygnVicsIGhhc2goJ2NyYzMyYicsICR0aGlzLT5kYXRhKSkpKSAhPT0gc3ByaW50ZignJXUnLCAkY3JjKSkKCQkJewoJCQkJcmV0dXJuIGZhbHNlOwoJCQl9Ki8KCgkJCS8vIENoZWNrIElTSVpFIG9mIGRhdGEKCQkJJGlzaXplID0gY3VycmVudCh1bnBhY2soJ1YnLCBzdWJzdHIoJHRoaXMtPmNvbXByZXNzZWRfZGF0YSwgJHRoaXMtPnBvc2l0aW9uLCA0KSkpOwoJCQkkdGhpcy0+cG9zaXRpb24gKz0gNDsKCQkJaWYgKHNwcmludGYoJyV1Jywgc3RybGVuKCR0aGlzLT5kYXRhKSAmIDB4RkZGRkZGRkYpICE9PSBzcHJpbnRmKCcldScsICRpc2l6ZSkpCgkJCXsKCQkJCXJldHVybiBmYWxzZTsKCQkJfQoKCQkJLy8gV293LCBhZ2FpbnN0IGFsbCBvZGRzLCB3ZSd2ZSBhY3R1YWxseSBnb3QgYSB2YWxpZCBnemlwIHN0cmluZwoJCQlyZXR1cm4gdHJ1ZTsKCQl9CgkJZWxzZQoJCXsKCQkJcmV0dXJuIGZhbHNlOwoJCX0KCX0KfQoKY2xhc3MgU2ltcGxlUGllX0NhY2hlCnsKCS8qKgoJICogRG9uJ3QgY2FsbCB0aGUgY29uc3RydWN0b3IuIFBsZWFzZS4KCSAqCgkgKiBAYWNjZXNzIHByaXZhdGUKCSAqLwoJZnVuY3Rpb24gU2ltcGxlUGllX0NhY2hlKCkKCXsKCQl0cmlnZ2VyX2Vycm9yKCdQbGVhc2UgY2FsbCBTaW1wbGVQaWVfQ2FjaGU6OmNyZWF0ZSgpIGluc3RlYWQgb2YgdGhlIGNvbnN0cnVjdG9yJywgRV9VU0VSX0VSUk9SKTsKCX0KCgkvKioKCSAqIENyZWF0ZSBhIG5ldyBTaW1wbGVQaWVfQ2FjaGUgb2JqZWN0CgkgKgoJICogQHN0YXRpYwoJICogQGFjY2VzcyBwdWJsaWMKCSAqLwoJZnVuY3Rpb24gY3JlYXRlKCRsb2NhdGlvbiwgJGZpbGVuYW1lLCAkZXh0ZW5zaW9uKQoJewoJCXJldHVybiBuZXcgU2ltcGxlUGllX0NhY2hlX0ZpbGUoJGxvY2F0aW9uLCAkZmlsZW5hbWUsICRleHRlbnNpb24pOwoJfQp9CgpjbGFzcyBTaW1wbGVQaWVfQ2FjaGVfRmlsZQp7Cgl2YXIgJGxvY2F0aW9uOwoJdmFyICRmaWxlbmFtZTsKCXZhciAkZXh0ZW5zaW9uOwoJdmFyICRuYW1lOwoKCWZ1bmN0aW9uIFNpbXBsZVBpZV9DYWNoZV9GaWxlKCRsb2NhdGlvbiwgJGZpbGVuYW1lLCAkZXh0ZW5zaW9uKQoJewoJCSR0aGlzLT5sb2NhdGlvbiA9ICRsb2NhdGlvbjsKCQkkdGhpcy0+ZmlsZW5hbWUgPSByYXd1cmxlbmNvZGUoJGZpbGVuYW1lKTsKCQkkdGhpcy0+ZXh0ZW5zaW9uID0gcmF3dXJsZW5jb2RlKCRleHRlbnNpb24pOwoJCSR0aGlzLT5uYW1lID0gIiRsb2NhdGlvbi8kdGhpcy0+ZmlsZW5hbWUuJHRoaXMtPmV4dGVuc2lvbiI7Cgl9CgoJZnVuY3Rpb24gc2F2ZSgkZGF0YSkKCXsKCQlpZiAoZmlsZV9leGlzdHMoJHRoaXMtPm5hbWUpICYmIGlzX3dyaXRlYWJsZSgkdGhpcy0+bmFtZSkgfHwgZmlsZV9leGlzdHMoJHRoaXMtPmxvY2F0aW9uKSAmJiBpc193cml0ZWFibGUoJHRoaXMtPmxvY2F0aW9uKSkKCQl7CgkJCWlmIChpc19hKCRkYXRhLCAnU2ltcGxlUGllJykpCgkJCXsKCQkJCSRkYXRhID0gJGRhdGEtPmRhdGE7CgkJCX0KCgkJCSRkYXRhID0gc2VyaWFsaXplKCRkYXRhKTsKCgkJCWlmIChmdW5jdGlvbl9leGlzdHMoJ2ZpbGVfcHV0X2NvbnRlbnRzJykpCgkJCXsKCQkJCXJldHVybiAoYm9vbCkgZmlsZV9wdXRfY29udGVudHMoJHRoaXMtPm5hbWUsICRkYXRhKTsKCQkJfQoJCQllbHNlCgkJCXsKCQkJCSRmcCA9IGZvcGVuKCR0aGlzLT5uYW1lLCAnd2InKTsKCQkJCWlmICgkZnApCgkJCQl7CgkJCQkJZndyaXRlKCRmcCwgJGRhdGEpOwoJCQkJCWZjbG9zZSgkZnApOwoJCQkJCXJldHVybiB0cnVlOwoJCQkJfQoJCQl9CgkJfQoJCXJldHVybiBmYWxzZTsKCX0KCglmdW5jdGlvbiBsb2FkKCkKCXsKCQlpZiAoZmlsZV9leGlzdHMoJHRoaXMtPm5hbWUpICYmIGlzX3JlYWRhYmxlKCR0aGlzLT5uYW1lKSkKCQl7CgkJCXJldHVybiB1bnNlcmlhbGl6ZShmaWxlX2dldF9jb250ZW50cygkdGhpcy0+bmFtZSkpOwoJCX0KCQlyZXR1cm4gZmFsc2U7Cgl9CgoJZnVuY3Rpb24gbXRpbWUoKQoJewoJCWlmIChmaWxlX2V4aXN0cygkdGhpcy0+bmFtZSkpCgkJewoJCQlyZXR1cm4gZmlsZW10aW1lKCR0aGlzLT5uYW1lKTsKCQl9CgkJcmV0dXJuIGZhbHNlOwoJfQoKCWZ1bmN0aW9uIHRvdWNoKCkKCXsKCQlpZiAoZmlsZV9leGlzdHMoJHRoaXMtPm5hbWUpKQoJCXsKCQkJcmV0dXJuIHRvdWNoKCR0aGlzLT5uYW1lKTsKCQl9CgkJcmV0dXJuIGZhbHNlOwoJfQoKCWZ1bmN0aW9uIHVubGluaygpCgl7CgkJaWYgKGZpbGVfZXhpc3RzKCR0aGlzLT5uYW1lKSkKCQl7CgkJCXJldHVybiB1bmxpbmsoJHRoaXMtPm5hbWUpOwoJCX0KCQlyZXR1cm4gZmFsc2U7Cgl9Cn0KCmNsYXNzIFNpbXBsZVBpZV9NaXNjCnsKCWZ1bmN0aW9uIHRpbWVfaG1zKCRzZWNvbmRzKQoJewoJCSR0aW1lID0gJyc7CgoJCSRob3VycyA9IGZsb29yKCRzZWNvbmRzIC8gMzYwMCk7CgkJJHJlbWFpbmRlciA9ICRzZWNvbmRzICUgMzYwMDsKCQlpZiAoJGhvdXJzID4gMCkKCQl7CgkJCSR0aW1lIC49ICRob3Vycy4nOic7CgkJfQoKCQkkbWludXRlcyA9IGZsb29yKCRyZW1haW5kZXIgLyA2MCk7CgkJJHNlY29uZHMgPSAkcmVtYWluZGVyICUgNjA7CgkJaWYgKCRtaW51dGVzIDwgMTAgJiYgJGhvdXJzID4gMCkKCQl7CgkJCSRtaW51dGVzID0gJzAnIC4gJG1pbnV0ZXM7CgkJfQoJCWlmICgkc2Vjb25kcyA8IDEwKQoJCXsKCQkJJHNlY29uZHMgPSAnMCcgLiAkc2Vjb25kczsKCQl9CgoJCSR0aW1lIC49ICRtaW51dGVzLic6JzsKCQkkdGltZSAuPSAkc2Vjb25kczsKCgkJcmV0dXJuICR0aW1lOwoJfQoKCWZ1bmN0aW9uIGFic29sdXRpemVfdXJsKCRyZWxhdGl2ZSwgJGJhc2UpCgl7CgkJaWYgKCRyZWxhdGl2ZSAhPT0gJycpCgkJewoJCQkkcmVsYXRpdmUgPSBTaW1wbGVQaWVfTWlzYzo6cGFyc2VfdXJsKCRyZWxhdGl2ZSk7CgkJCWlmICgkcmVsYXRpdmVbJ3NjaGVtZSddICE9PSAnJykKCQkJewoJCQkJJHRhcmdldCA9ICRyZWxhdGl2ZTsKCQkJfQoJCQllbHNlaWYgKCRiYXNlICE9PSAnJykKCQkJewoJCQkJJGJhc2UgPSBTaW1wbGVQaWVfTWlzYzo6cGFyc2VfdXJsKCRiYXNlKTsKCQkJCSR0YXJnZXQgPSBTaW1wbGVQaWVfTWlzYzo6cGFyc2VfdXJsKCcnKTsKCQkJCWlmICgkcmVsYXRpdmVbJ2F1dGhvcml0eSddICE9PSAnJykKCQkJCXsKCQkJCQkkdGFyZ2V0ID0gJHJlbGF0aXZlOwoJCQkJCSR0YXJnZXRbJ3NjaGVtZSddID0gJGJhc2VbJ3NjaGVtZSddOwoJCQkJfQoJCQkJZWxzZQoJCQkJewoJCQkJCSR0YXJnZXRbJ3NjaGVtZSddID0gJGJhc2VbJ3NjaGVtZSddOwoJCQkJCSR0YXJnZXRbJ2F1dGhvcml0eSddID0gJGJhc2VbJ2F1dGhvcml0eSddOwoJCQkJCWlmICgkcmVsYXRpdmVbJ3BhdGgnXSAhPT0gJycpCgkJCQkJewoJCQkJCQlpZiAoc3RycG9zKCRyZWxhdGl2ZVsncGF0aCddLCAnLycpID09PSAwKQoJCQkJCQl7CgkJCQkJCQkkdGFyZ2V0WydwYXRoJ10gPSAkcmVsYXRpdmVbJ3BhdGgnXTsKCQkJCQkJfQoJCQkJCQllbHNlaWYgKCRiYXNlWydhdXRob3JpdHknXSAhPT0gJycgJiYgJGJhc2VbJ3BhdGgnXSA9PT0gJycpCgkJCQkJCXsKCQkJCQkJCSR0YXJnZXRbJ3BhdGgnXSA9ICcvJyAuICRyZWxhdGl2ZVsncGF0aCddOwoJCQkJCQl9CgkJCQkJCWVsc2VpZiAoKCRsYXN0X3NlZ21lbnQgPSBzdHJycG9zKCRiYXNlWydwYXRoJ10sICcvJykpICE9PSBmYWxzZSkKCQkJCQkJewoJCQkJCQkJJHRhcmdldFsncGF0aCddID0gc3Vic3RyKCRiYXNlWydwYXRoJ10sIDAsICRsYXN0X3NlZ21lbnQgKyAxKSAuICRyZWxhdGl2ZVsncGF0aCddOwoJCQkJCQl9CgkJCQkJCWVsc2UKCQkJCQkJewoJCQkJCQkJJHRhcmdldFsncGF0aCddID0gJHJlbGF0aXZlWydwYXRoJ107CgkJCQkJCX0KCQkJCQkJJHRhcmdldFsncXVlcnknXSA9ICRyZWxhdGl2ZVsncXVlcnknXTsKCQkJCQl9CgkJCQkJZWxzZQoJCQkJCXsKCQkJCQkJJHRhcmdldFsncGF0aCddID0gJGJhc2VbJ3BhdGgnXTsKCQkJCQkJaWYgKCRyZWxhdGl2ZVsncXVlcnknXSAhPT0gJycpCgkJCQkJCXsKCQkJCQkJCSR0YXJnZXRbJ3F1ZXJ5J10gPSAkcmVsYXRpdmVbJ3F1ZXJ5J107CgkJCQkJCX0KCQkJCQkJZWxzZWlmICgkYmFzZVsncXVlcnknXSAhPT0gJycpCgkJCQkJCXsKCQkJCQkJCSR0YXJnZXRbJ3F1ZXJ5J10gPSAkYmFzZVsncXVlcnknXTsKCQkJCQkJfQoJCQkJCX0KCQkJCX0KCQkJCSR0YXJnZXRbJ2ZyYWdtZW50J10gPSAkcmVsYXRpdmVbJ2ZyYWdtZW50J107CgkJCX0KCQkJZWxzZQoJCQl7CgkJCQkvLyBObyBiYXNlIFVSTCwganVzdCByZXR1cm4gdGhlIHJlbGF0aXZlIFVSTAoJCQkJJHRhcmdldCA9ICRyZWxhdGl2ZTsKCQkJfQoJCQkkcmV0dXJuID0gU2ltcGxlUGllX01pc2M6OmNvbXByZXNzX3BhcnNlX3VybCgkdGFyZ2V0WydzY2hlbWUnXSwgJHRhcmdldFsnYXV0aG9yaXR5J10sICR0YXJnZXRbJ3BhdGgnXSwgJHRhcmdldFsncXVlcnknXSwgJHRhcmdldFsnZnJhZ21lbnQnXSk7CgkJfQoJCWVsc2UKCQl7CgkJCSRyZXR1cm4gPSAkYmFzZTsKCQl9CgkJJHJldHVybiA9IFNpbXBsZVBpZV9NaXNjOjpub3JtYWxpemVfdXJsKCRyZXR1cm4pOwoJCXJldHVybiAkcmV0dXJuOwoJfQoKCWZ1bmN0aW9uIHJlbW92ZV9kb3Rfc2VnbWVudHMoJGlucHV0KQoJewoJCSRvdXRwdXQgPSAnJzsKCQl3aGlsZSAoc3RycG9zKCRpbnB1dCwgJy4vJykgIT09IGZhbHNlIHx8IHN0cnBvcygkaW5wdXQsICcvLicpICE9PSBmYWxzZSB8fCAkaW5wdXQgPT0gJy4nIHx8ICRpbnB1dCA9PSAnLi4nKQoJCXsKCQkJLy8gQTogSWYgdGhlIGlucHV0IGJ1ZmZlciBiZWdpbnMgd2l0aCBhIHByZWZpeCBvZiAiLi4vIiBvciAiLi8iLCB0aGVuIHJlbW92ZSB0aGF0IHByZWZpeCBmcm9tIHRoZSBpbnB1dCBidWZmZXI7IG90aGVyd2lzZSwKCQkJaWYgKHN0cnBvcygkaW5wdXQsICcuLi8nKSA9PT0gMCkKCQkJewoJCQkJJGlucHV0ID0gc3Vic3RyKCRpbnB1dCwgMyk7CgkJCX0KCQkJZWxzZWlmIChzdHJwb3MoJGlucHV0LCAnLi8nKSA9PT0gMCkKCQkJewoJCQkJJGlucHV0ID0gc3Vic3RyKCRpbnB1dCwgMik7CgkJCX0KCQkJLy8gQjogaWYgdGhlIGlucHV0IGJ1ZmZlciBiZWdpbnMgd2l0aCBhIHByZWZpeCBvZiAiLy4vIiBvciAiLy4iLCB3aGVyZSAiLiIgaXMgYSBjb21wbGV0ZSBwYXRoIHNlZ21lbnQsIHRoZW4gcmVwbGFjZSB0aGF0IHByZWZpeCB3aXRoICIvIiBpbiB0aGUgaW5wdXQgYnVmZmVyOyBvdGhlcndpc2UsCgkJCWVsc2VpZiAoc3RycG9zKCRpbnB1dCwgJy8uLycpID09PSAwKQoJCQl7CgkJCQkkaW5wdXQgPSBzdWJzdHJfcmVwbGFjZSgkaW5wdXQsICcvJywgMCwgMyk7CgkJCX0KCQkJZWxzZWlmICgkaW5wdXQgPT0gJy8uJykKCQkJewoJCQkJJGlucHV0ID0gJy8nOwoJCQl9CgkJCS8vIEM6IGlmIHRoZSBpbnB1dCBidWZmZXIgYmVnaW5zIHdpdGggYSBwcmVmaXggb2YgIi8uLi8iIG9yICIvLi4iLCB3aGVyZSAiLi4iIGlzIGEgY29tcGxldGUgcGF0aCBzZWdtZW50LCB0aGVuIHJlcGxhY2UgdGhhdCBwcmVmaXggd2l0aCAiLyIgaW4gdGhlIGlucHV0IGJ1ZmZlciBhbmQgcmVtb3ZlIHRoZSBsYXN0IHNlZ21lbnQgYW5kIGl0cyBwcmVjZWRpbmcgIi8iIChpZiBhbnkpIGZyb20gdGhlIG91dHB1dCBidWZmZXI7IG90aGVyd2lzZSwKCQkJZWxzZWlmIChzdHJwb3MoJGlucHV0LCAnLy4uLycpID09PSAwKQoJCQl7CgkJCQkkaW5wdXQgPSBzdWJzdHJfcmVwbGFjZSgkaW5wdXQsICcvJywgMCwgNCk7CgkJCQkkb3V0cHV0ID0gc3Vic3RyX3JlcGxhY2UoJG91dHB1dCwgJycsIHN0cnJwb3MoJG91dHB1dCwgJy8nKSk7CgkJCX0KCQkJZWxzZWlmICgkaW5wdXQgPT0gJy8uLicpCgkJCXsKCQkJCSRpbnB1dCA9ICcvJzsKCQkJCSRvdXRwdXQgPSBzdWJzdHJfcmVwbGFjZSgkb3V0cHV0LCAnJywgc3RycnBvcygkb3V0cHV0LCAnLycpKTsKCQkJfQoJCQkvLyBEOiBpZiB0aGUgaW5wdXQgYnVmZmVyIGNvbnNpc3RzIG9ubHkgb2YgIi4iIG9yICIuLiIsIHRoZW4gcmVtb3ZlIHRoYXQgZnJvbSB0aGUgaW5wdXQgYnVmZmVyOyBvdGhlcndpc2UsCgkJCWVsc2VpZiAoJGlucHV0ID09ICcuJyB8fCAkaW5wdXQgPT0gJy4uJykKCQkJewoJCQkJJGlucHV0ID0gJyc7CgkJCX0KCQkJLy8gRTogbW92ZSB0aGUgZmlyc3QgcGF0aCBzZWdtZW50IGluIHRoZSBpbnB1dCBidWZmZXIgdG8gdGhlIGVuZCBvZiB0aGUgb3V0cHV0IGJ1ZmZlciwgaW5jbHVkaW5nIHRoZSBpbml0aWFsICIvIiBjaGFyYWN0ZXIgKGlmIGFueSkgYW5kIGFueSBzdWJzZXF1ZW50IGNoYXJhY3RlcnMgdXAgdG8sIGJ1dCBub3QgaW5jbHVkaW5nLCB0aGUgbmV4dCAiLyIgY2hhcmFjdGVyIG9yIHRoZSBlbmQgb2YgdGhlIGlucHV0IGJ1ZmZlcgoJCQllbHNlaWYgKCgkcG9zID0gc3RycG9zKCRpbnB1dCwgJy8nLCAxKSkgIT09IGZhbHNlKQoJCQl7CgkJCQkkb3V0cHV0IC49IHN1YnN0cigkaW5wdXQsIDAsICRwb3MpOwoJCQkJJGlucHV0ID0gc3Vic3RyX3JlcGxhY2UoJGlucHV0LCAnJywgMCwgJHBvcyk7CgkJCX0KCQkJZWxzZQoJCQl7CgkJCQkkb3V0cHV0IC49ICRpbnB1dDsKCQkJCSRpbnB1dCA9ICcnOwoJCQl9CgkJfQoJCXJldHVybiAkb3V0cHV0IC4gJGlucHV0OwoJfQoKCWZ1bmN0aW9uIGdldF9lbGVtZW50KCRyZWFsbmFtZSwgJHN0cmluZykKCXsKCQkkcmV0dXJuID0gYXJyYXkoKTsKCQkkbmFtZSA9IHByZWdfcXVvdGUoJHJlYWxuYW1lLCAnLycpOwoJCWlmIChwcmVnX21hdGNoX2FsbCgiLzwoJG5hbWUpIiAuIFNJTVBMRVBJRV9QQ1JFX0hUTUxfQVRUUklCVVRFIC4gIig+KC4qKTxcLyRuYW1lPnwoXC8pPz4pL3NpVSIsICRzdHJpbmcsICRtYXRjaGVzLCBQUkVHX1NFVF9PUkRFUiB8IFBSRUdfT0ZGU0VUX0NBUFRVUkUpKQoJCXsKCQkJZm9yICgkaSA9IDAsICR0b3RhbF9tYXRjaGVzID0gY291bnQoJG1hdGNoZXMpOyAkaSA8ICR0b3RhbF9tYXRjaGVzOyAkaSsrKQoJCQl7CgkJCQkkcmV0dXJuWyRpXVsndGFnJ10gPSAkcmVhbG5hbWU7CgkJCQkkcmV0dXJuWyRpXVsnZnVsbCddID0gJG1hdGNoZXNbJGldWzBdWzBdOwoJCQkJJHJldHVyblskaV1bJ29mZnNldCddID0gJG1hdGNoZXNbJGldWzBdWzFdOwoJCQkJaWYgKHN0cmxlbigkbWF0Y2hlc1skaV1bM11bMF0pIDw9IDIpCgkJCQl7CgkJCQkJJHJldHVyblskaV1bJ3NlbGZfY2xvc2luZyddID0gdHJ1ZTsKCQkJCX0KCQkJCWVsc2UKCQkJCXsKCQkJCQkkcmV0dXJuWyRpXVsnc2VsZl9jbG9zaW5nJ10gPSBmYWxzZTsKCQkJCQkkcmV0dXJuWyRpXVsnY29udGVudCddID0gJG1hdGNoZXNbJGldWzRdWzBdOwoJCQkJfQoJCQkJJHJldHVyblskaV1bJ2F0dHJpYnMnXSA9IGFycmF5KCk7CgkJCQlpZiAoaXNzZXQoJG1hdGNoZXNbJGldWzJdWzBdKSAmJiBwcmVnX21hdGNoX2FsbCgnL1tceDA5XHgwQVx4MEJceDBDXHgwRFx4MjBdKyhbXlx4MDlceDBBXHgwQlx4MENceDBEXHgyMFx4MkZceDNFXVteXHgwOVx4MEFceDBCXHgwQ1x4MERceDIwXHgyRlx4M0RceDNFXSopKD86W1x4MDlceDBBXHgwQlx4MENceDBEXHgyMF0qPVtceDA5XHgwQVx4MEJceDBDXHgwRFx4MjBdKig/OiIoW14iXSopInxcJyhbXlwnXSopXCd8KFteXHgwOVx4MEFceDBCXHgwQ1x4MERceDIwXHgyMlx4MjdceDNFXVteXHgwOVx4MEFceDBCXHgwQ1x4MERceDIwXHgzRV0qKT8pKT8vJywgJyAnIC4gJG1hdGNoZXNbJGldWzJdWzBdIC4gJyAnLCAkYXR0cmlicywgUFJFR19TRVRfT1JERVIpKQoJCQkJewoJCQkJCWZvciAoJGogPSAwLCAkdG90YWxfYXR0cmlicyA9IGNvdW50KCRhdHRyaWJzKTsgJGogPCAkdG90YWxfYXR0cmliczsgJGorKykKCQkJCQl7CgkJCQkJCWlmIChjb3VudCgkYXR0cmlic1skal0pID09IDIpCgkJCQkJCXsKCQkJCQkJCSRhdHRyaWJzWyRqXVsyXSA9ICRhdHRyaWJzWyRqXVsxXTsKCQkJCQkJfQoJCQkJCQkkcmV0dXJuWyRpXVsnYXR0cmlicyddW3N0cnRvbG93ZXIoJGF0dHJpYnNbJGpdWzFdKV1bJ2RhdGEnXSA9IFNpbXBsZVBpZV9NaXNjOjplbnRpdGllc19kZWNvZGUoZW5kKCRhdHRyaWJzWyRqXSksICdVVEYtOCcpOwoJCQkJCX0KCQkJCX0KCQkJfQoJCX0KCQlyZXR1cm4gJHJldHVybjsKCX0KCglmdW5jdGlvbiBlbGVtZW50X2ltcGxvZGUoJGVsZW1lbnQpCgl7CgkJJGZ1bGwgPSAiPCRlbGVtZW50W3RhZ10iOwoJCWZvcmVhY2ggKCRlbGVtZW50WydhdHRyaWJzJ10gYXMgJGtleSA9PiAkdmFsdWUpCgkJewoJCQkka2V5ID0gc3RydG9sb3dlcigka2V5KTsKCQkJJGZ1bGwgLj0gIiAka2V5PVwiIiAuIGh0bWxzcGVjaWFsY2hhcnMoJHZhbHVlWydkYXRhJ10pIC4gJyInOwoJCX0KCQlpZiAoJGVsZW1lbnRbJ3NlbGZfY2xvc2luZyddKQoJCXsKCQkJJGZ1bGwgLj0gJyAvPic7CgkJfQoJCWVsc2UKCQl7CgkJCSRmdWxsIC49ICI+JGVsZW1lbnRbY29udGVudF08LyRlbGVtZW50W3RhZ10+IjsKCQl9CgkJcmV0dXJuICRmdWxsOwoJfQoKCWZ1bmN0aW9uIGVycm9yKCRtZXNzYWdlLCAkbGV2ZWwsICRmaWxlLCAkbGluZSkKCXsKCQlzd2l0Y2ggKCRsZXZlbCkKCQl7CgkJCWNhc2UgRV9VU0VSX0VSUk9SOgoJCQkJJG5vdGUgPSAnUEhQIEVycm9yJzsKCQkJCWJyZWFrOwoJCQljYXNlIEVfVVNFUl9XQVJOSU5HOgoJCQkJJG5vdGUgPSAnUEhQIFdhcm5pbmcnOwoJCQkJYnJlYWs7CgkJCWNhc2UgRV9VU0VSX05PVElDRToKCQkJCSRub3RlID0gJ1BIUCBOb3RpY2UnOwoJCQkJYnJlYWs7CgkJCWRlZmF1bHQ6CgkJCQkkbm90ZSA9ICdVbmtub3duIEVycm9yJzsKCQkJCWJyZWFrOwoJCX0KCQllcnJvcl9sb2coIiRub3RlOiAkbWVzc2FnZSBpbiAkZmlsZSBvbiBsaW5lICRsaW5lIiwgMCk7CgkJcmV0dXJuICRtZXNzYWdlOwoJfQoKCS8qKgoJICogSWYgYSBmaWxlIGhhcyBiZWVuIGNhY2hlZCwgcmV0cmlldmUgYW5kIGRpc3BsYXkgaXQuCgkgKgoJICogVGhpcyBpcyBtb3N0IHVzZWZ1bCBmb3IgY2FjaGluZyBpbWFnZXMgKGdldF9mYXZpY29uKCksIGV0Yy4pLAoJICogaG93ZXZlciBpdCB3b3JrcyBmb3IgYWxsIGNhY2hlZCBmaWxlcy4gIFRoaXMgV0lMTCBOT1QgZGlzcGxheSBBTlkKCSAqIGZpbGUvaW1hZ2UvcGFnZS93aGF0ZXZlciwgYnV0IHJhdGhlciBvbmx5IGRpc3BsYXkgd2hhdCBoYXMgYWxyZWFkeQoJICogYmVlbiBjYWNoZWQgYnkgU2ltcGxlUGllLgoJICoKCSAqIEBhY2Nlc3MgcHVibGljCgkgKiBAc2VlIFNpbXBsZVBpZTo6Z2V0X2Zhdmljb24oKQoJICogQHBhcmFtIHN0ciAkaWRlbnRpZmllcl91cmwgVVJMIHRoYXQgaXMgdXNlZCB0byBpZGVudGlmeSB0aGUgY29udGVudC4KCSAqIFRoaXMgbWF5IG9yIG1heSBub3QgYmUgdGhlIGFjdHVhbCBVUkwgb2YgdGhlIGxpdmUgY29udGVudC4KCSAqIEBwYXJhbSBzdHIgJGNhY2hlX2xvY2F0aW9uIExvY2F0aW9uIG9mIFNpbXBsZVBpZSdzIGNhY2hlLiAgRGVmYXVsdHMKCSAqIHRvICcuL2NhY2hlJy4KCSAqIEBwYXJhbSBzdHIgJGNhY2hlX2V4dGVuc2lvbiBUaGUgZmlsZSBleHRlbnNpb24gdGhhdCB0aGUgZmlsZSB3YXMKCSAqIGNhY2hlZCB3aXRoLiAgRGVmYXVsdHMgdG8gJ3NwYycuCgkgKiBAcGFyYW0gc3RyICRjYWNoZV9jbGFzcyBOYW1lIG9mIHRoZSBjYWNoZS1oYW5kbGluZyBjbGFzcyBiZWluZyB1c2VkCgkgKiBpbiBTaW1wbGVQaWUuICBEZWZhdWx0cyB0byAnU2ltcGxlUGllX0NhY2hlJywgYW5kIHNob3VsZCBiZSBsZWZ0CgkgKiBhcy1pcyB1bmxlc3MgeW91J3ZlIG92ZXJsb2FkZWQgdGhlIGNsYXNzLgoJICogQHBhcmFtIHN0ciAkY2FjaGVfbmFtZV9mdW5jdGlvbiBPYnNvbGV0ZS4gRXhpc3RzIGZvciBiYWNrd2FyZHMKCSAqIGNvbXBhdGliaWxpdHkgcmVhc29ucyBvbmx5LgoJICovCglmdW5jdGlvbiBkaXNwbGF5X2NhY2hlZF9maWxlKCRpZGVudGlmaWVyX3VybCwgJGNhY2hlX2xvY2F0aW9uID0gJy4vY2FjaGUnLCAkY2FjaGVfZXh0ZW5zaW9uID0gJ3NwYycsICRjYWNoZV9jbGFzcyA9ICdTaW1wbGVQaWVfQ2FjaGUnLCAkY2FjaGVfbmFtZV9mdW5jdGlvbiA9ICdtZDUnKQoJewoJCSRjYWNoZSA9IGNhbGxfdXNlcl9mdW5jKGFycmF5KCRjYWNoZV9jbGFzcywgJ2NyZWF0ZScpLCAkY2FjaGVfbG9jYXRpb24sICRpZGVudGlmaWVyX3VybCwgJGNhY2hlX2V4dGVuc2lvbik7CgoJCWlmICgkZmlsZSA9ICRjYWNoZS0+bG9hZCgpKQoJCXsKCQkJaWYgKGlzc2V0KCRmaWxlWydoZWFkZXJzJ11bJ2NvbnRlbnQtdHlwZSddKSkKCQkJewoJCQkJaGVhZGVyKCdDb250ZW50LXR5cGU6JyAuICRmaWxlWydoZWFkZXJzJ11bJ2NvbnRlbnQtdHlwZSddKTsKCQkJfQoJCQllbHNlCgkJCXsKCQkJCWhlYWRlcignQ29udGVudC10eXBlOiBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nKTsKCQkJfQoJCQloZWFkZXIoJ0V4cGlyZXM6ICcgLiBnbWRhdGUoJ0QsIGQgTSBZIEg6aTpzJywgdGltZSgpICsgNjA0ODAwKSAuICcgR01UJyk7IC8vIDcgZGF5cwoJCQllY2hvICRmaWxlWydib2R5J107CgkJCWV4aXQ7CgkJfQoKCQlkaWUoJ0NhY2hlZCBmaWxlIGZvciAnIC4gJGlkZW50aWZpZXJfdXJsIC4gJyBjYW5ub3QgYmUgZm91bmQuJyk7Cgl9CgoJZnVuY3Rpb24gZml4X3Byb3RvY29sKCR1cmwsICRodHRwID0gMSkKCXsKCQkkdXJsID0gU2ltcGxlUGllX01pc2M6Om5vcm1hbGl6ZV91cmwoJHVybCk7CgkJJHBhcnNlZCA9IFNpbXBsZVBpZV9NaXNjOjpwYXJzZV91cmwoJHVybCk7CgkJaWYgKCRwYXJzZWRbJ3NjaGVtZSddICE9PSAnJyAmJiAkcGFyc2VkWydzY2hlbWUnXSAhPSAnaHR0cCcgJiYgJHBhcnNlZFsnc2NoZW1lJ10gIT0gJ2h0dHBzJykKCQl7CgkJCXJldHVybiBTaW1wbGVQaWVfTWlzYzo6Zml4X3Byb3RvY29sKFNpbXBsZVBpZV9NaXNjOjpjb21wcmVzc19wYXJzZV91cmwoJ2h0dHAnLCAkcGFyc2VkWydhdXRob3JpdHknXSwgJHBhcnNlZFsncGF0aCddLCAkcGFyc2VkWydxdWVyeSddLCAkcGFyc2VkWydmcmFnbWVudCddKSwgJGh0dHApOwoJCX0KCgkJaWYgKCRwYXJzZWRbJ3NjaGVtZSddID09PSAnJyAmJiAkcGFyc2VkWydhdXRob3JpdHknXSA9PT0gJycgJiYgIWZpbGVfZXhpc3RzKCR1cmwpKQoJCXsKCQkJcmV0dXJuIFNpbXBsZVBpZV9NaXNjOjpmaXhfcHJvdG9jb2woU2ltcGxlUGllX01pc2M6OmNvbXByZXNzX3BhcnNlX3VybCgnaHR0cCcsICRwYXJzZWRbJ3BhdGgnXSwgJycsICRwYXJzZWRbJ3F1ZXJ5J10sICRwYXJzZWRbJ2ZyYWdtZW50J10pLCAkaHR0cCk7CgkJfQoKCQlpZiAoJGh0dHAgPT0gMiAmJiAkcGFyc2VkWydzY2hlbWUnXSAhPT0gJycpCgkJewoJCQlyZXR1cm4gImZlZWQ6JHVybCI7CgkJfQoJCWVsc2VpZiAoJGh0dHAgPT0gMyAmJiBzdHJ0b2xvd2VyKCRwYXJzZWRbJ3NjaGVtZSddKSA9PSAnaHR0cCcpCgkJewoJCQlyZXR1cm4gc3Vic3RyX3JlcGxhY2UoJHVybCwgJ3BvZGNhc3QnLCAwLCA0KTsKCQl9CgkJZWxzZWlmICgkaHR0cCA9PSA0ICYmIHN0cnRvbG93ZXIoJHBhcnNlZFsnc2NoZW1lJ10pID09ICdodHRwJykKCQl7CgkJCXJldHVybiBzdWJzdHJfcmVwbGFjZSgkdXJsLCAnaXRwYycsIDAsIDQpOwoJCX0KCQllbHNlCgkJewoJCQlyZXR1cm4gJHVybDsKCQl9Cgl9CgoJZnVuY3Rpb24gcGFyc2VfdXJsKCR1cmwpCgl7CgkJc3RhdGljICRjYWNoZSA9IGFycmF5KCk7CgkJaWYgKGlzc2V0KCRjYWNoZVskdXJsXSkpCgkJewoJCQlyZXR1cm4gJGNhY2hlWyR1cmxdOwoJCX0KCQllbHNlaWYgKHByZWdfbWF0Y2goJy9eKChbXjpcLz8jXSspOik/KFwvXC8oW15cLz8jXSopKT8oW14/I10qKShcPyhbXiNdKikpPygjKC4qKSk/JC8nLCAkdXJsLCAkbWF0Y2gpKQoJCXsKCQkJZm9yICgkaSA9IGNvdW50KCRtYXRjaCk7ICRpIDw9IDk7ICRpKyspCgkJCXsKCQkJCSRtYXRjaFskaV0gPSAnJzsKCQkJfQoJCQlyZXR1cm4gJGNhY2hlWyR1cmxdID0gYXJyYXkoJ3NjaGVtZScgPT4gJG1hdGNoWzJdLCAnYXV0aG9yaXR5JyA9PiAkbWF0Y2hbNF0sICdwYXRoJyA9PiAkbWF0Y2hbNV0sICdxdWVyeScgPT4gJG1hdGNoWzddLCAnZnJhZ21lbnQnID0+ICRtYXRjaFs5XSk7CgkJfQoJCWVsc2UKCQl7CgkJCXJldHVybiAkY2FjaGVbJHVybF0gPSBhcnJheSgnc2NoZW1lJyA9PiAnJywgJ2F1dGhvcml0eScgPT4gJycsICdwYXRoJyA9PiAnJywgJ3F1ZXJ5JyA9PiAnJywgJ2ZyYWdtZW50JyA9PiAnJyk7CgkJfQoJfQoKCWZ1bmN0aW9uIGNvbXByZXNzX3BhcnNlX3VybCgkc2NoZW1lID0gJycsICRhdXRob3JpdHkgPSAnJywgJHBhdGggPSAnJywgJHF1ZXJ5ID0gJycsICRmcmFnbWVudCA9ICcnKQoJewoJCSRyZXR1cm4gPSAnJzsKCQlpZiAoJHNjaGVtZSAhPT0gJycpCgkJewoJCQkkcmV0dXJuIC49ICIkc2NoZW1lOiI7CgkJfQoJCWlmICgkYXV0aG9yaXR5ICE9PSAnJykKCQl7CgkJCSRyZXR1cm4gLj0gIi8vJGF1dGhvcml0eSI7CgkJfQoJCWlmICgkcGF0aCAhPT0gJycpCgkJewoJCQkkcmV0dXJuIC49ICRwYXRoOwoJCX0KCQlpZiAoJHF1ZXJ5ICE9PSAnJykKCQl7CgkJCSRyZXR1cm4gLj0gIj8kcXVlcnkiOwoJCX0KCQlpZiAoJGZyYWdtZW50ICE9PSAnJykKCQl7CgkJCSRyZXR1cm4gLj0gIiMkZnJhZ21lbnQiOwoJCX0KCQlyZXR1cm4gJHJldHVybjsKCX0KCglmdW5jdGlvbiBub3JtYWxpemVfdXJsKCR1cmwpCgl7CgkJJHVybCA9IHByZWdfcmVwbGFjZV9jYWxsYmFjaygnLyUoWzAtOUEtRmEtZl17Mn0pLycsIGFycmF5KCdTaW1wbGVQaWVfTWlzYycsICdwZXJjZW50X2VuY29kaW5nX25vcm1hbGl6YXRpb24nKSwgJHVybCk7CgkJJHVybCA9IFNpbXBsZVBpZV9NaXNjOjpwYXJzZV91cmwoJHVybCk7CgkJJHVybFsnc2NoZW1lJ10gPSBzdHJ0b2xvd2VyKCR1cmxbJ3NjaGVtZSddKTsKCQlpZiAoJHVybFsnYXV0aG9yaXR5J10gIT09ICcnKQoJCXsKCQkJJHVybFsnYXV0aG9yaXR5J10gPSBzdHJ0b2xvd2VyKCR1cmxbJ2F1dGhvcml0eSddKTsKCQkJJHVybFsncGF0aCddID0gU2ltcGxlUGllX01pc2M6OnJlbW92ZV9kb3Rfc2VnbWVudHMoJHVybFsncGF0aCddKTsKCQl9CgkJcmV0dXJuIFNpbXBsZVBpZV9NaXNjOjpjb21wcmVzc19wYXJzZV91cmwoJHVybFsnc2NoZW1lJ10sICR1cmxbJ2F1dGhvcml0eSddLCAkdXJsWydwYXRoJ10sICR1cmxbJ3F1ZXJ5J10sICR1cmxbJ2ZyYWdtZW50J10pOwoJfQoKCWZ1bmN0aW9uIHBlcmNlbnRfZW5jb2Rpbmdfbm9ybWFsaXphdGlvbigkbWF0Y2gpCgl7CgkJJGludGVnZXIgPSBoZXhkZWMoJG1hdGNoWzFdKTsKCQlpZiAoJGludGVnZXIgPj0gMHg0MSAmJiAkaW50ZWdlciA8PSAweDVBIHx8ICRpbnRlZ2VyID49IDB4NjEgJiYgJGludGVnZXIgPD0gMHg3QSB8fCAkaW50ZWdlciA+PSAweDMwICYmICRpbnRlZ2VyIDw9IDB4MzkgfHwgJGludGVnZXIgPT0gMHgyRCB8fCAkaW50ZWdlciA9PSAweDJFIHx8ICRpbnRlZ2VyID09IDB4NUYgfHwgJGludGVnZXIgPT0gMHg3RSkKCQl7CgkJCXJldHVybiBjaHIoJGludGVnZXIpOwoJCX0KCQllbHNlCgkJewoJCQlyZXR1cm4gc3RydG91cHBlcigkbWF0Y2hbMF0pOwoJCX0KCX0KCgkvKioKCSAqIFJlbW92ZSBiYWQgVVRGLTggYnl0ZXMKCSAqCgkgKiBQQ1JFIFBhdHRlcm4gdG8gbG9jYXRlIGJhZCBieXRlcyBpbiBhIFVURi04IHN0cmluZyBjb21lcyBmcm9tIFczQwoJICogRkFROiBNdWx0aWxpbmd1YWwgRm9ybXMgKG1vZGlmaWVkIHRvIGluY2x1ZGUgZnVsbCBBU0NJSSByYW5nZSkKCSAqCgkgKiBAYXV0aG9yIEdlb2ZmcmV5IFNuZWRkb24KCSAqIEBzZWUgaHR0cDovL3d3dy53My5vcmcvSW50ZXJuYXRpb25hbC9xdWVzdGlvbnMvcWEtZm9ybXMtdXRmLTgKCSAqIEBwYXJhbSBzdHJpbmcgJHN0ciBTdHJpbmcgdG8gcmVtb3ZlIGJhZCBVVEYtOCBieXRlcyBmcm9tCgkgKiBAcmV0dXJuIHN0cmluZyBVVEYtOCBzdHJpbmcKCSAqLwoJZnVuY3Rpb24gdXRmOF9iYWRfcmVwbGFjZSgkc3RyKQoJewoJCWlmIChmdW5jdGlvbl9leGlzdHMoJ2ljb252JykgJiYgKCRyZXR1cm4gPSBAaWNvbnYoJ1VURi04JywgJ1VURi04Ly9JR05PUkUnLCAkc3RyKSkpCgkJewoJCQlyZXR1cm4gJHJldHVybjsKCQl9CgkJZWxzZWlmIChmdW5jdGlvbl9leGlzdHMoJ21iX2NvbnZlcnRfZW5jb2RpbmcnKSAmJiAoJHJldHVybiA9IEBtYl9jb252ZXJ0X2VuY29kaW5nKCRzdHIsICdVVEYtOCcsICdVVEYtOCcpKSkKCQl7CgkJCXJldHVybiAkcmV0dXJuOwoJCX0KCQllbHNlaWYgKHByZWdfbWF0Y2hfYWxsKCcvKD86W1x4MDAtXHg3Rl18W1x4QzItXHhERl1bXHg4MC1ceEJGXXxceEUwW1x4QTAtXHhCRl1bXHg4MC1ceEJGXXxbXHhFMS1ceEVDXHhFRVx4RUZdW1x4ODAtXHhCRl17Mn18XHhFRFtceDgwLVx4OUZdW1x4ODAtXHhCRl18XHhGMFtceDkwLVx4QkZdW1x4ODAtXHhCRl17Mn18W1x4RjEtXHhGM11bXHg4MC1ceEJGXXszfXxceEY0W1x4ODAtXHg4Rl1bXHg4MC1ceEJGXXsyfSkrLycsICRzdHIsICRtYXRjaGVzKSkKCQl7CgkJCXJldHVybiBpbXBsb2RlKCJceEVGXHhCRlx4QkQiLCAkbWF0Y2hlc1swXSk7CgkJfQoJCWVsc2VpZiAoJHN0ciAhPT0gJycpCgkJewoJCQlyZXR1cm4gIlx4RUZceEJGXHhCRCI7CgkJfQoJCWVsc2UKCQl7CgkJCXJldHVybiAnJzsKCQl9Cgl9CgoJLyoqCgkgKiBDb252ZXJ0cyBhIFdpbmRvd3MtMTI1MiBlbmNvZGVkIHN0cmluZyB0byBhIFVURi04IGVuY29kZWQgc3RyaW5nCgkgKgoJICogQHN0YXRpYwoJICogQGFjY2VzcyBwdWJsaWMKCSAqIEBwYXJhbSBzdHJpbmcgJHN0cmluZyBXaW5kb3dzLTEyNTIgZW5jb2RlZCBzdHJpbmcKCSAqIEByZXR1cm4gc3RyaW5nIFVURi04IGVuY29kZWQgc3RyaW5nCgkgKi8KCWZ1bmN0aW9uIHdpbmRvd3NfMTI1Ml90b191dGY4KCRzdHJpbmcpCgl7CgkJc3RhdGljICRjb252ZXJ0X3RhYmxlID0gYXJyYXkoIlx4ODAiID0+ICJceEUyXHg4Mlx4QUMiLCAiXHg4MSIgPT4gIlx4RUZceEJGXHhCRCIsICJceDgyIiA9PiAiXHhFMlx4ODBceDlBIiwgIlx4ODMiID0+ICJceEM2XHg5MiIsICJceDg0IiA9PiAiXHhFMlx4ODBceDlFIiwgIlx4ODUiID0+ICJceEUyXHg4MFx4QTYiLCAiXHg4NiIgPT4gIlx4RTJceDgwXHhBMCIsICJceDg3IiA9PiAiXHhFMlx4ODBceEExIiwgIlx4ODgiID0+ICJceENCXHg4NiIsICJceDg5IiA9PiAiXHhFMlx4ODBceEIwIiwgIlx4OEEiID0+ICJceEM1XHhBMCIsICJceDhCIiA9PiAiXHhFMlx4ODBceEI5IiwgIlx4OEMiID0+ICJceEM1XHg5MiIsICJceDhEIiA9PiAiXHhFRlx4QkZceEJEIiwgIlx4OEUiID0+ICJceEM1XHhCRCIsICJceDhGIiA9PiAiXHhFRlx4QkZceEJEIiwgIlx4OTAiID0+ICJceEVGXHhCRlx4QkQiLCAiXHg5MSIgPT4gIlx4RTJceDgwXHg5OCIsICJceDkyIiA9PiAiXHhFMlx4ODBceDk5IiwgIlx4OTMiID0+ICJceEUyXHg4MFx4OUMiLCAiXHg5NCIgPT4gIlx4RTJceDgwXHg5RCIsICJceDk1IiA9PiAiXHhFMlx4ODBceEEyIiwgIlx4OTYiID0+ICJceEUyXHg4MFx4OTMiLCAiXHg5NyIgPT4gIlx4RTJceDgwXHg5NCIsICJceDk4IiA9PiAiXHhDQlx4OUMiLCAiXHg5OSIgPT4gIlx4RTJceDg0XHhBMiIsICJceDlBIiA9PiAiXHhDNVx4QTEiLCAiXHg5QiIgPT4gIlx4RTJceDgwXHhCQSIsICJceDlDIiA9PiAiXHhDNVx4OTMiLCAiXHg5RCIgPT4gIlx4RUZceEJGXHhCRCIsICJceDlFIiA9PiAiXHhDNVx4QkUiLCAiXHg5RiIgPT4gIlx4QzVceEI4IiwgIlx4QTAiID0+ICJceEMyXHhBMCIsICJceEExIiA9PiAiXHhDMlx4QTEiLCAiXHhBMiIgPT4gIlx4QzJceEEyIiwgIlx4QTMiID0+ICJceEMyXHhBMyIsICJceEE0IiA9PiAiXHhDMlx4QTQiLCAiXHhBNSIgPT4gIlx4QzJceEE1IiwgIlx4QTYiID0+ICJceEMyXHhBNiIsICJceEE3IiA9PiAiXHhDMlx4QTciLCAiXHhBOCIgPT4gIlx4QzJceEE4IiwgIlx4QTkiID0+ICJceEMyXHhBOSIsICJceEFBIiA9PiAiXHhDMlx4QUEiLCAiXHhBQiIgPT4gIlx4QzJceEFCIiwgIlx4QUMiID0+ICJceEMyXHhBQyIsICJceEFEIiA9PiAiXHhDMlx4QUQiLCAiXHhBRSIgPT4gIlx4QzJceEFFIiwgIlx4QUYiID0+ICJceEMyXHhBRiIsICJceEIwIiA9PiAiXHhDMlx4QjAiLCAiXHhCMSIgPT4gIlx4QzJceEIxIiwgIlx4QjIiID0+ICJceEMyXHhCMiIsICJceEIzIiA9PiAiXHhDMlx4QjMiLCAiXHhCNCIgPT4gIlx4QzJceEI0IiwgIlx4QjUiID0+ICJceEMyXHhCNSIsICJceEI2IiA9PiAiXHhDMlx4QjYiLCAiXHhCNyIgPT4gIlx4QzJceEI3IiwgIlx4QjgiID0+ICJceEMyXHhCOCIsICJceEI5IiA9PiAiXHhDMlx4QjkiLCAiXHhCQSIgPT4gIlx4QzJceEJBIiwgIlx4QkIiID0+ICJceEMyXHhCQiIsICJceEJDIiA9PiAiXHhDMlx4QkMiLCAiXHhCRCIgPT4gIlx4QzJceEJEIiwgIlx4QkUiID0+ICJceEMyXHhCRSIsICJceEJGIiA9PiAiXHhDMlx4QkYiLCAiXHhDMCIgPT4gIlx4QzNceDgwIiwgIlx4QzEiID0+ICJceEMzXHg4MSIsICJceEMyIiA9PiAiXHhDM1x4ODIiLCAiXHhDMyIgPT4gIlx4QzNceDgzIiwgIlx4QzQiID0+ICJceEMzXHg4NCIsICJceEM1IiA9PiAiXHhDM1x4ODUiLCAiXHhDNiIgPT4gIlx4QzNceDg2IiwgIlx4QzciID0+ICJceEMzXHg4NyIsICJceEM4IiA9PiAiXHhDM1x4ODgiLCAiXHhDOSIgPT4gIlx4QzNceDg5IiwgIlx4Q0EiID0+ICJceEMzXHg4QSIsICJceENCIiA9PiAiXHhDM1x4OEIiLCAiXHhDQyIgPT4gIlx4QzNceDhDIiwgIlx4Q0QiID0+ICJceEMzXHg4RCIsICJceENFIiA9PiAiXHhDM1x4OEUiLCAiXHhDRiIgPT4gIlx4QzNceDhGIiwgIlx4RDAiID0+ICJceEMzXHg5MCIsICJceEQxIiA9PiAiXHhDM1x4OTEiLCAiXHhEMiIgPT4gIlx4QzNceDkyIiwgIlx4RDMiID0+ICJceEMzXHg5MyIsICJceEQ0IiA9PiAiXHhDM1x4OTQiLCAiXHhENSIgPT4gIlx4QzNceDk1IiwgIlx4RDYiID0+ICJceEMzXHg5NiIsICJceEQ3IiA9PiAiXHhDM1x4OTciLCAiXHhEOCIgPT4gIlx4QzNceDk4IiwgIlx4RDkiID0+ICJceEMzXHg5OSIsICJceERBIiA9PiAiXHhDM1x4OUEiLCAiXHhEQiIgPT4gIlx4QzNceDlCIiwgIlx4REMiID0+ICJceEMzXHg5QyIsICJceEREIiA9PiAiXHhDM1x4OUQiLCAiXHhERSIgPT4gIlx4QzNceDlFIiwgIlx4REYiID0+ICJceEMzXHg5RiIsICJceEUwIiA9PiAiXHhDM1x4QTAiLCAiXHhFMSIgPT4gIlx4QzNceEExIiwgIlx4RTIiID0+ICJceEMzXHhBMiIsICJceEUzIiA9PiAiXHhDM1x4QTMiLCAiXHhFNCIgPT4gIlx4QzNceEE0IiwgIlx4RTUiID0+ICJceEMzXHhBNSIsICJceEU2IiA9PiAiXHhDM1x4QTYiLCAiXHhFNyIgPT4gIlx4QzNceEE3IiwgIlx4RTgiID0+ICJceEMzXHhBOCIsICJceEU5IiA9PiAiXHhDM1x4QTkiLCAiXHhFQSIgPT4gIlx4QzNceEFBIiwgIlx4RUIiID0+ICJceEMzXHhBQiIsICJceEVDIiA9PiAiXHhDM1x4QUMiLCAiXHhFRCIgPT4gIlx4QzNceEFEIiwgIlx4RUUiID0+ICJceEMzXHhBRSIsICJceEVGIiA9PiAiXHhDM1x4QUYiLCAiXHhGMCIgPT4gIlx4QzNceEIwIiwgIlx4RjEiID0+ICJceEMzXHhCMSIsICJceEYyIiA9PiAiXHhDM1x4QjIiLCAiXHhGMyIgPT4gIlx4QzNceEIzIiwgIlx4RjQiID0+ICJceEMzXHhCNCIsICJceEY1IiA9PiAiXHhDM1x4QjUiLCAiXHhGNiIgPT4gIlx4QzNceEI2IiwgIlx4RjciID0+ICJceEMzXHhCNyIsICJceEY4IiA9PiAiXHhDM1x4QjgiLCAiXHhGOSIgPT4gIlx4QzNceEI5IiwgIlx4RkEiID0+ICJceEMzXHhCQSIsICJceEZCIiA9PiAiXHhDM1x4QkIiLCAiXHhGQyIgPT4gIlx4QzNceEJDIiwgIlx4RkQiID0+ICJceEMzXHhCRCIsICJceEZFIiA9PiAiXHhDM1x4QkUiLCAiXHhGRiIgPT4gIlx4QzNceEJGIik7CgoJCXJldHVybiBzdHJ0cigkc3RyaW5nLCAkY29udmVydF90YWJsZSk7Cgl9CgoJZnVuY3Rpb24gY2hhbmdlX2VuY29kaW5nKCRkYXRhLCAkaW5wdXQsICRvdXRwdXQpCgl7CgkJJGlucHV0ID0gU2ltcGxlUGllX01pc2M6OmVuY29kaW5nKCRpbnB1dCk7CgkJJG91dHB1dCA9IFNpbXBsZVBpZV9NaXNjOjplbmNvZGluZygkb3V0cHV0KTsKCgkJLy8gV2UgZmFpbCB0byBmYWlsIG9uIG5vbiBVUy1BU0NJSSBieXRlcwoJCWlmICgkaW5wdXQgPT09ICdVUy1BU0NJSScpCgkJewoJCQlzdGF0aWMgJG5vbl9hc2NpaV9vY3RlY3RzID0gJyc7CgkJCWlmICghJG5vbl9hc2NpaV9vY3RlY3RzKQoJCQl7CgkJCQlmb3IgKCRpID0gMHg4MDsgJGkgPD0gMHhGRjsgJGkrKykKCQkJCXsKCQkJCQkkbm9uX2FzY2lpX29jdGVjdHMgLj0gY2hyKCRpKTsKCQkJCX0KCQkJfQoJCQkkZGF0YSA9IHN1YnN0cigkZGF0YSwgMCwgc3RyY3NwbigkZGF0YSwgJG5vbl9hc2NpaV9vY3RlY3RzKSk7CgkJfQoKCQkvLyBUaGlzIGlzIGZpcnN0LCBhcyBiZWhhdmlvdXIgb2YgdGhpcyBpcyBjb21wbGV0ZWx5IHByZWRpY3RhYmxlCgkJaWYgKCRpbnB1dCA9PT0gJ1dpbmRvd3MtMTI1MicgJiYgJG91dHB1dCA9PT0gJ1VURi04JykKCQl7CgkJCXJldHVybiBTaW1wbGVQaWVfTWlzYzo6d2luZG93c18xMjUyX3RvX3V0ZjgoJGRhdGEpOwoJCX0KCQkvLyBUaGlzIGlzIHNlY29uZCwgYXMgYmVoYXZpb3VyIG9mIHRoaXMgdmFyaWVzIG9ubHkgd2l0aCBQSFAgdmVyc2lvbgoJCWVsc2VpZiAoZnVuY3Rpb25fZXhpc3RzKCdtYl9jb252ZXJ0X2VuY29kaW5nJykgJiYgKCRyZXR1cm4gPSBAbWJfY29udmVydF9lbmNvZGluZygkZGF0YSwgJG91dHB1dCwgJGlucHV0KSkpCgkJewoJCQlyZXR1cm4gJHJldHVybjsKCQl9CgkJLy8gVGhpcyBpcyBsYXN0LCBhcyBiZWhhdmlvdXIgb2YgdGhpcyB2YXJpZXMgd2l0aCBPUyB1c2VybGFuZCBhbmQgUEhQIHZlcnNpb24KCQllbHNlaWYgKGZ1bmN0aW9uX2V4aXN0cygnaWNvbnYnKSAmJiAoJHJldHVybiA9IEBpY29udigkaW5wdXQsICRvdXRwdXQsICRkYXRhKSkpCgkJewoJCQlyZXR1cm4gJHJldHVybjsKCQl9CgkJLy8gSWYgd2UgY2FuJ3QgZG8gYW55dGhpbmcsIGp1c3QgZmFpbAoJCWVsc2UKCQl7CgkJCXJldHVybiBmYWxzZTsKCQl9Cgl9CgoJZnVuY3Rpb24gZW5jb2RpbmcoJGNoYXJzZXQpCgl7CgkJLyogQ2hhcmFjdGVyIHNldHMgYXJlIGNhc2UtaW5zZW5zaXRpdmUsIGFuZCBhbHNvIG5lZWQgc29tZSBmdXJ0aGVyCgkJbm9ybWFsaXphdGlvbiBpbiB0aGUgcmVhbCB3b3JsZCAodGhvdWdoIHdlJ2xsIHJldHVybiB0aGVtIGluIHRoZSBmb3JtIGdpdmVuCgkJaW4gdGhlaXIgcmVnaXN0cmF0aW9uKS4gKi8KCQlzd2l0Y2ggKHN0cnRvbG93ZXIocHJlZ19yZXBsYWNlKCcvW1x4MDktXHgwRFx4MjAtXHgyRlx4M0EtXHg0MFx4NUItXHg2MFx4N0ItXHg3RV0vJywgJycsICRjaGFyc2V0KSkpCgkJewoJCQljYXNlICdhZG9iZXN0YW5kYXJkZW5jb2RpbmcnOgoJCQljYXNlICdjc2Fkb2Jlc3RhbmRhcmRlbmNvZGluZyc6CgkJCQlyZXR1cm4gJ0Fkb2JlLVN0YW5kYXJkLUVuY29kaW5nJzsKCgkJCWNhc2UgJ2Fkb2Jlc3ltYm9sZW5jb2RpbmcnOgoJCQljYXNlICdjc2hwcHNtYXRoJzoKCQkJCXJldHVybiAnQWRvYmUtU3ltYm9sLUVuY29kaW5nJzsKCgkJCWNhc2UgJ2FtaTEyNTEnOgoJCQljYXNlICdhbWkxMjUxJzoKCQkJY2FzZSAnYW1pZ2ExMjUxJzoKCQkJY2FzZSAnYW1pZ2ExMjUxJzoKCQkJCXJldHVybiAnQW1pZ2EtMTI1MSc7CgoJCQljYXNlICdhbnNpeDMxMTAxOTgzJzoKCQkJY2FzZSAnY3NhdDUwMDE5ODMnOgoJCQljYXNlICdjc2lzbzk5bmFwbHBzJzoKCQkJY2FzZSAnaXNvaXI5OSc6CgkJCWNhc2UgJ25hcGxwcyc6CgkJCQlyZXR1cm4gJ0FOU0lfWDMuMTEwLTE5ODMnOwoKCQkJY2FzZSAnYXJhYmljNyc6CgkJCWNhc2UgJ2FzbW80NDknOgoJCQljYXNlICdjc2lzbzg5YXNtbzQ0OSc6CgkJCWNhc2UgJ2lzb2lyODknOgoJCQljYXNlICdpc285MDM2JzoKCQkJCXJldHVybiAnQVNNT180NDknOwoKCQkJY2FzZSAnYmlnNSc6CgkJCWNhc2UgJ2NzYmlnNSc6CgkJCWNhc2UgJ3h4YmlnNSc6CgkJCQlyZXR1cm4gJ0JpZzUnOwoKCQkJY2FzZSAnYmlnNWhrc2NzJzoKCQkJCXJldHVybiAnQmlnNS1IS1NDUyc7CgoJCQljYXNlICdib2N1MSc6CgkJCWNhc2UgJ2NzYm9jdTEnOgoJCQkJcmV0dXJuICdCT0NVLTEnOwoKCQkJY2FzZSAnYnJmJzoKCQkJY2FzZSAnY3NicmYnOgoJCQkJcmV0dXJuICdCUkYnOwoKCQkJY2FzZSAnYnM0NzMwJzoKCQkJY2FzZSAnY3Npc280dW5pdGVka2luZ2RvbSc6CgkJCWNhc2UgJ2diJzoKCQkJY2FzZSAnaXNvaXI0JzoKCQkJY2FzZSAnaXNvNjQ2Z2InOgoJCQljYXNlICd1ayc6CgkJCQlyZXR1cm4gJ0JTXzQ3MzAnOwoKCQkJY2FzZSAnYnN2aWV3ZGF0YSc6CgkJCWNhc2UgJ2NzaXNvNDdic3ZpZXdkYXRhJzoKCQkJY2FzZSAnaXNvaXI0Nyc6CgkJCQlyZXR1cm4gJ0JTX3ZpZXdkYXRhJzsKCgkJCWNhc2UgJ2Nlc3U4JzoKCQkJY2FzZSAnY3NjZXN1OCc6CgkJCQlyZXR1cm4gJ0NFU1UtOCc7CgoJCQljYXNlICdjYSc6CgkJCWNhc2UgJ2NzYTcxJzoKCQkJY2FzZSAnY3NhejI0MzQxOTg1MSc6CgkJCWNhc2UgJ2NzaXNvMTIxY2FuYWRpYW4xJzoKCQkJY2FzZSAnaXNvaXIxMjEnOgoJCQljYXNlICdpc282NDZjYSc6CgkJCQlyZXR1cm4gJ0NTQV9aMjQzLjQtMTk4NS0xJzsKCgkJCWNhc2UgJ2NzYTcyJzoKCQkJY2FzZSAnY3NhejI0MzQxOTg1Mic6CgkJCWNhc2UgJ2NzaXNvMTIyY2FuYWRpYW4yJzoKCQkJY2FzZSAnaXNvaXIxMjInOgoJCQljYXNlICdpc282NDZjYTInOgoJCQkJcmV0dXJuICdDU0FfWjI0My40LTE5ODUtMic7CgoJCQljYXNlICdjc2F6MjQzNDE5ODVncic6CgkJCWNhc2UgJ2NzaXNvMTIzY3NhejI0MzQxOTg1Z3InOgoJCQljYXNlICdpc29pcjEyMyc6CgkJCQlyZXR1cm4gJ0NTQV9aMjQzLjQtMTk4NS1ncic7CgoJCQljYXNlICdjc2lzbzEzOWNzbjM2OTEwMyc6CgkJCWNhc2UgJ2NzbjM2OTEwMyc6CgkJCWNhc2UgJ2lzb2lyMTM5JzoKCQkJCXJldHVybiAnQ1NOXzM2OTEwMyc7CgoJCQljYXNlICdjc2RlY21jcyc6CgkJCWNhc2UgJ2RlYyc6CgkJCWNhc2UgJ2RlY21jcyc6CgkJCQlyZXR1cm4gJ0RFQy1NQ1MnOwoKCQkJY2FzZSAnY3Npc28yMWdlcm1hbic6CgkJCWNhc2UgJ2RlJzoKCQkJY2FzZSAnZGluNjYwMDMnOgoJCQljYXNlICdpc29pcjIxJzoKCQkJY2FzZSAnaXNvNjQ2ZGUnOgoJCQkJcmV0dXJuICdESU5fNjYwMDMnOwoKCQkJY2FzZSAnY3Nka3VzJzoKCQkJY2FzZSAnZGt1cyc6CgkJCQlyZXR1cm4gJ2RrLXVzJzsKCgkJCWNhc2UgJ2NzaXNvNjQ2ZGFuaXNoJzoKCQkJY2FzZSAnZGsnOgoJCQljYXNlICdkczIwODknOgoJCQljYXNlICdkczIwODknOgoJCQljYXNlICdpc282NDZkayc6CgkJCQlyZXR1cm4gJ0RTXzIwODknOwoKCQkJY2FzZSAnY3NpYm1lYmNkaWNhdGRlJzoKCQkJY2FzZSAnZWJjZGljYXRkZSc6CgkJCQlyZXR1cm4gJ0VCQ0RJQy1BVC1ERSc7CgoJCQljYXNlICdjc2ViY2RpY2F0ZGVhJzoKCQkJY2FzZSAnZWJjZGljYXRkZWEnOgoJCQkJcmV0dXJuICdFQkNESUMtQVQtREUtQSc7CgoJCQljYXNlICdjc2ViY2RpY2NhZnInOgoJCQljYXNlICdlYmNkaWNjYWZyJzoKCQkJCXJldHVybiAnRUJDRElDLUNBLUZSJzsKCgkJCWNhc2UgJ2NzZWJjZGljZGtubyc6CgkJCWNhc2UgJ2ViY2RpY2Rrbm8nOgoJCQkJcmV0dXJuICdFQkNESUMtREstTk8nOwoKCQkJY2FzZSAnY3NlYmNkaWNka25vYSc6CgkJCWNhc2UgJ2ViY2RpY2Rrbm9hJzoKCQkJCXJldHVybiAnRUJDRElDLURLLU5PLUEnOwoKCQkJY2FzZSAnY3NlYmNkaWNlcyc6CgkJCWNhc2UgJ2ViY2RpY2VzJzoKCQkJCXJldHVybiAnRUJDRElDLUVTJzsKCgkJCWNhc2UgJ2NzZWJjZGljZXNhJzoKCQkJY2FzZSAnZWJjZGljZXNhJzoKCQkJCXJldHVybiAnRUJDRElDLUVTLUEnOwoKCQkJY2FzZSAnY3NlYmNkaWNlc3MnOgoJCQljYXNlICdlYmNkaWNlc3MnOgoJCQkJcmV0dXJuICdFQkNESUMtRVMtUyc7CgoJCQljYXNlICdjc2ViY2RpY2Zpc2UnOgoJCQljYXNlICdlYmNkaWNmaXNlJzoKCQkJCXJldHVybiAnRUJDRElDLUZJLVNFJzsKCgkJCWNhc2UgJ2NzZWJjZGljZmlzZWEnOgoJCQljYXNlICdlYmNkaWNmaXNlYSc6CgkJCQlyZXR1cm4gJ0VCQ0RJQy1GSS1TRS1BJzsKCgkJCWNhc2UgJ2NzZWJjZGljZnInOgoJCQljYXNlICdlYmNkaWNmcic6CgkJCQlyZXR1cm4gJ0VCQ0RJQy1GUic7CgoJCQljYXNlICdjc2ViY2RpY2l0JzoKCQkJY2FzZSAnZWJjZGljaXQnOgoJCQkJcmV0dXJuICdFQkNESUMtSVQnOwoKCQkJY2FzZSAnY3NlYmNkaWNwdCc6CgkJCWNhc2UgJ2ViY2RpY3B0JzoKCQkJCXJldHVybiAnRUJDRElDLVBUJzsKCgkJCWNhc2UgJ2NzZWJjZGljdWsnOgoJCQljYXNlICdlYmNkaWN1ayc6CgkJCQlyZXR1cm4gJ0VCQ0RJQy1VSyc7CgoJCQljYXNlICdjc2ViY2RpY3VzJzoKCQkJY2FzZSAnZWJjZGljdXMnOgoJCQkJcmV0dXJuICdFQkNESUMtVVMnOwoKCQkJY2FzZSAnY3Npc28xMTFlY21hY3lyaWxsaWMnOgoJCQljYXNlICdlY21hY3lyaWxsaWMnOgoJCQljYXNlICdpc29pcjExMSc6CgkJCWNhc2UgJ2tvaThlJzoKCQkJCXJldHVybiAnRUNNQS1jeXJpbGxpYyc7CgoJCQljYXNlICdjc2lzbzE3c3BhbmlzaCc6CgkJCWNhc2UgJ2VzJzoKCQkJY2FzZSAnaXNvaXIxNyc6CgkJCWNhc2UgJ2lzbzY0NmVzJzoKCQkJCXJldHVybiAnRVMnOwoKCQkJY2FzZSAnY3Npc284NXNwYW5pc2gyJzoKCQkJY2FzZSAnZXMyJzoKCQkJY2FzZSAnaXNvaXI4NSc6CgkJCWNhc2UgJ2lzbzY0NmVzMic6CgkJCQlyZXR1cm4gJ0VTMic7CgoJCQljYXNlICdjc2V1Y2ZpeHdpZGphcGFuZXNlJzoKCQkJY2FzZSAnZXh0ZW5kZWR1bml4Y29kZWZpeGVkd2lkdGhmb3JqYXBhbmVzZSc6CgkJCQlyZXR1cm4gJ0V4dGVuZGVkX1VOSVhfQ29kZV9GaXhlZF9XaWR0aF9mb3JfSmFwYW5lc2UnOwoKCQkJY2FzZSAnY3NldWNwa2RmbXRqYXBhbmVzZSc6CgkJCWNhc2UgJ2V1Y2pwJzoKCQkJY2FzZSAnZXh0ZW5kZWR1bml4Y29kZXBhY2tlZGZvcm1hdGZvcmphcGFuZXNlJzoKCQkJCXJldHVybiAnRXh0ZW5kZWRfVU5JWF9Db2RlX1BhY2tlZF9Gb3JtYXRfZm9yX0phcGFuZXNlJzsKCgkJCWNhc2UgJ2diMTgwMzAnOgoJCQkJcmV0dXJuICdHQjE4MDMwJzsKCgkJCWNhc2UgJ2NwOTM2JzoKCQkJY2FzZSAnZ2JrJzoKCQkJY2FzZSAnbXM5MzYnOgoJCQljYXNlICd3aW5kb3dzOTM2JzoKCQkJY2FzZSAnY3NnYjIzMTInOgoJCQljYXNlICdnYjIzMTInOgoJCQljYXNlICdjaGluZXNlJzoKCQkJY2FzZSAnY3Npc281OGdiMjMxMjgwJzoKCQkJY2FzZSAnZ2IyMzEyODAnOgoJCQljYXNlICdpc29pcjU4JzoKCQkJCXJldHVybiAnR0JLJzsKCgkJCWNhc2UgJ2NuJzoKCQkJY2FzZSAnY3Npc281N2diMTk4OCc6CgkJCWNhc2UgJ2diMTk4ODgwJzoKCQkJY2FzZSAnaXNvaXI1Nyc6CgkJCWNhc2UgJ2lzbzY0NmNuJzoKCQkJCXJldHVybiAnR0JfMTk4OC04MCc7CgoJCQljYXNlICdjc2lzbzE1M2dvc3QxOTc2ODc0JzoKCQkJY2FzZSAnZ29zdDE5NzY4NzQnOgoJCQljYXNlICdpc29pcjE1Myc6CgkJCWNhc2UgJ3N0c2V2MzU4ODgnOgoJCQkJcmV0dXJuICdHT1NUXzE5NzY4LTc0JzsKCgkJCWNhc2UgJ2NzaXNvMTUwJzoKCQkJY2FzZSAnY3Npc28xNTBncmVla2NjaXR0JzoKCQkJY2FzZSAnZ3JlZWtjY2l0dCc6CgkJCWNhc2UgJ2lzb2lyMTUwJzoKCQkJCXJldHVybiAnZ3JlZWstY2NpdHQnOwoKCQkJY2FzZSAnY3Npc284OGdyZWVrNyc6CgkJCWNhc2UgJ2dyZWVrNyc6CgkJCWNhc2UgJ2lzb2lyODgnOgoJCQkJcmV0dXJuICdncmVlazcnOwoKCQkJY2FzZSAnY3Npc28xOGdyZWVrN29sZCc6CgkJCWNhc2UgJ2dyZWVrN29sZCc6CgkJCWNhc2UgJ2lzb2lyMTgnOgoJCQkJcmV0dXJuICdncmVlazctb2xkJzsKCgkJCWNhc2UgJ2NzaHBkZXNrdG9wJzoKCQkJY2FzZSAnaHBkZXNrdG9wJzoKCQkJCXJldHVybiAnSFAtRGVza1RvcCc7CgoJCQljYXNlICdjc2hwbGVnYWwnOgoJCQljYXNlICdocGxlZ2FsJzoKCQkJCXJldHVybiAnSFAtTGVnYWwnOwoKCQkJY2FzZSAnY3NocG1hdGg4JzoKCQkJY2FzZSAnaHBtYXRoOCc6CgkJCQlyZXR1cm4gJ0hQLU1hdGg4JzsKCgkJCWNhc2UgJ2NzaHBwaWZvbnQnOgoJCQljYXNlICdocHBpZm9udCc6CgkJCQlyZXR1cm4gJ0hQLVBpLWZvbnQnOwoKCQkJY2FzZSAnY3NocHJvbWFuOCc6CgkJCWNhc2UgJ2hwcm9tYW44JzoKCQkJY2FzZSAncjgnOgoJCQljYXNlICdyb21hbjgnOgoJCQkJcmV0dXJuICdocC1yb21hbjgnOwoKCQkJY2FzZSAnaHpnYjIzMTInOgoJCQkJcmV0dXJuICdIWi1HQi0yMzEyJzsKCgkJCWNhc2UgJ2NzaWJtc3ltYm9scyc6CgkJCWNhc2UgJ2libXN5bWJvbHMnOgoJCQkJcmV0dXJuICdJQk0tU3ltYm9scyc7CgoJCQljYXNlICdjc2libXRoYWknOgoJCQljYXNlICdpYm10aGFpJzoKCQkJCXJldHVybiAnSUJNLVRoYWknOwoKCQkJY2FzZSAnY2NzaWQwMDg1OCc6CgkJCWNhc2UgJ2NwMDA4NTgnOgoJCQljYXNlICdpYm0wMDg1OCc6CgkJCWNhc2UgJ3BjbXVsdGlsaW5ndWFsODUwZXVybyc6CgkJCQlyZXR1cm4gJ0lCTTAwODU4JzsKCgkJCWNhc2UgJ2Njc2lkMDA5MjQnOgoJCQljYXNlICdjcDAwOTI0JzoKCQkJY2FzZSAnZWJjZGljbGF0aW45ZXVybyc6CgkJCWNhc2UgJ2libTAwOTI0JzoKCQkJCXJldHVybiAnSUJNMDA5MjQnOwoKCQkJY2FzZSAnY2NzaWQwMTE0MCc6CgkJCWNhc2UgJ2NwMDExNDAnOgoJCQljYXNlICdlYmNkaWN1czM3ZXVybyc6CgkJCWNhc2UgJ2libTAxMTQwJzoKCQkJCXJldHVybiAnSUJNMDExNDAnOwoKCQkJY2FzZSAnY2NzaWQwMTE0MSc6CgkJCWNhc2UgJ2NwMDExNDEnOgoJCQljYXNlICdlYmNkaWNkZTI3M2V1cm8nOgoJCQljYXNlICdpYm0wMTE0MSc6CgkJCQlyZXR1cm4gJ0lCTTAxMTQxJzsKCgkJCWNhc2UgJ2Njc2lkMDExNDInOgoJCQljYXNlICdjcDAxMTQyJzoKCQkJY2FzZSAnZWJjZGljZGsyNzdldXJvJzoKCQkJY2FzZSAnZWJjZGljbm8yNzdldXJvJzoKCQkJY2FzZSAnaWJtMDExNDInOgoJCQkJcmV0dXJuICdJQk0wMTE0Mic7CgoJCQljYXNlICdjY3NpZDAxMTQzJzoKCQkJY2FzZSAnY3AwMTE0Myc6CgkJCWNhc2UgJ2ViY2RpY2ZpMjc4ZXVybyc6CgkJCWNhc2UgJ2ViY2RpY3NlMjc4ZXVybyc6CgkJCWNhc2UgJ2libTAxMTQzJzoKCQkJCXJldHVybiAnSUJNMDExNDMnOwoKCQkJY2FzZSAnY2NzaWQwMTE0NCc6CgkJCWNhc2UgJ2NwMDExNDQnOgoJCQljYXNlICdlYmNkaWNpdDI4MGV1cm8nOgoJCQljYXNlICdpYm0wMTE0NCc6CgkJCQlyZXR1cm4gJ0lCTTAxMTQ0JzsKCgkJCWNhc2UgJ2Njc2lkMDExNDUnOgoJCQljYXNlICdjcDAxMTQ1JzoKCQkJY2FzZSAnZWJjZGljZXMyODRldXJvJzoKCQkJY2FzZSAnaWJtMDExNDUnOgoJCQkJcmV0dXJuICdJQk0wMTE0NSc7CgoJCQljYXNlICdjY3NpZDAxMTQ2JzoKCQkJY2FzZSAnY3AwMTE0Nic6CgkJCWNhc2UgJ2ViY2RpY2diMjg1ZXVybyc6CgkJCWNhc2UgJ2libTAxMTQ2JzoKCQkJCXJldHVybiAnSUJNMDExNDYnOwoKCQkJY2FzZSAnY2NzaWQwMTE0Nyc6CgkJCWNhc2UgJ2NwMDExNDcnOgoJCQljYXNlICdlYmNkaWNmcjI5N2V1cm8nOgoJCQljYXNlICdpYm0wMTE0Nyc6CgkJCQlyZXR1cm4gJ0lCTTAxMTQ3JzsKCgkJCWNhc2UgJ2Njc2lkMDExNDgnOgoJCQljYXNlICdjcDAxMTQ4JzoKCQkJY2FzZSAnZWJjZGljaW50ZXJuYXRpb25hbDUwMGV1cm8nOgoJCQljYXNlICdpYm0wMTE0OCc6CgkJCQlyZXR1cm4gJ0lCTTAxMTQ4JzsKCgkJCWNhc2UgJ2Njc2lkMDExNDknOgoJCQljYXNlICdjcDAxMTQ5JzoKCQkJY2FzZSAnZWJjZGljaXM4NzFldXJvJzoKCQkJY2FzZSAnaWJtMDExNDknOgoJCQkJcmV0dXJuICdJQk0wMTE0OSc7CgoJCQljYXNlICdjcDAzNyc6CgkJCWNhc2UgJ2NzaWJtMDM3JzoKCQkJY2FzZSAnZWJjZGljY3BjYSc6CgkJCWNhc2UgJ2ViY2RpY2NwbmwnOgoJCQljYXNlICdlYmNkaWNjcHVzJzoKCQkJY2FzZSAnZWJjZGljY3B3dCc6CgkJCWNhc2UgJ2libTAzNyc6CgkJCQlyZXR1cm4gJ0lCTTAzNyc7CgoJCQljYXNlICdjcDAzOCc6CgkJCWNhc2UgJ2NzaWJtMDM4JzoKCQkJY2FzZSAnZWJjZGljaW50JzoKCQkJY2FzZSAnaWJtMDM4JzoKCQkJCXJldHVybiAnSUJNMDM4JzsKCgkJCWNhc2UgJ2NwMjczJzoKCQkJY2FzZSAnY3NpYm0yNzMnOgoJCQljYXNlICdpYm0yNzMnOgoJCQkJcmV0dXJuICdJQk0yNzMnOwoKCQkJY2FzZSAnY3AyNzQnOgoJCQljYXNlICdjc2libTI3NCc6CgkJCWNhc2UgJ2ViY2RpY2JlJzoKCQkJY2FzZSAnaWJtMjc0JzoKCQkJCXJldHVybiAnSUJNMjc0JzsKCgkJCWNhc2UgJ2NwMjc1JzoKCQkJY2FzZSAnY3NpYm0yNzUnOgoJCQljYXNlICdlYmNkaWNicic6CgkJCWNhc2UgJ2libTI3NSc6CgkJCQlyZXR1cm4gJ0lCTTI3NSc7CgoJCQljYXNlICdjc2libTI3Nyc6CgkJCWNhc2UgJ2ViY2RpY2NwZGsnOgoJCQljYXNlICdlYmNkaWNjcG5vJzoKCQkJY2FzZSAnaWJtMjc3JzoKCQkJCXJldHVybiAnSUJNMjc3JzsKCgkJCWNhc2UgJ2NwMjc4JzoKCQkJY2FzZSAnY3NpYm0yNzgnOgoJCQljYXNlICdlYmNkaWNjcGZpJzoKCQkJY2FzZSAnZWJjZGljY3BzZSc6CgkJCWNhc2UgJ2libTI3OCc6CgkJCQlyZXR1cm4gJ0lCTTI3OCc7CgoJCQljYXNlICdjcDI4MCc6CgkJCWNhc2UgJ2NzaWJtMjgwJzoKCQkJY2FzZSAnZWJjZGljY3BpdCc6CgkJCWNhc2UgJ2libTI4MCc6CgkJCQlyZXR1cm4gJ0lCTTI4MCc7CgoJCQljYXNlICdjcDI4MSc6CgkJCWNhc2UgJ2NzaWJtMjgxJzoKCQkJY2FzZSAnZWJjZGljanBlJzoKCQkJY2FzZSAnaWJtMjgxJzoKCQkJCXJldHVybiAnSUJNMjgxJzsKCgkJCWNhc2UgJ2NwMjg0JzoKCQkJY2FzZSAnY3NpYm0yODQnOgoJCQljYXNlICdlYmNkaWNjcGVzJzoKCQkJY2FzZSAnaWJtMjg0JzoKCQkJCXJldHVybiAnSUJNMjg0JzsKCgkJCWNhc2UgJ2NwMjg1JzoKCQkJY2FzZSAnY3NpYm0yODUnOgoJCQljYXNlICdlYmNkaWNjcGdiJzoKCQkJY2FzZSAnaWJtMjg1JzoKCQkJCXJldHVybiAnSUJNMjg1JzsKCgkJCWNhc2UgJ2NwMjkwJzoKCQkJY2FzZSAnY3NpYm0yOTAnOgoJCQljYXNlICdlYmNkaWNqcGthbmEnOgoJCQljYXNlICdpYm0yOTAnOgoJCQkJcmV0dXJuICdJQk0yOTAnOwoKCQkJY2FzZSAnY3AyOTcnOgoJCQljYXNlICdjc2libTI5Nyc6CgkJCWNhc2UgJ2ViY2RpY2NwZnInOgoJCQljYXNlICdpYm0yOTcnOgoJCQkJcmV0dXJuICdJQk0yOTcnOwoKCQkJY2FzZSAnY3A0MjAnOgoJCQljYXNlICdjc2libTQyMCc6CgkJCWNhc2UgJ2ViY2RpY2NwYXIxJzoKCQkJY2FzZSAnaWJtNDIwJzoKCQkJCXJldHVybiAnSUJNNDIwJzsKCgkJCWNhc2UgJ2NwNDIzJzoKCQkJY2FzZSAnY3NpYm00MjMnOgoJCQljYXNlICdlYmNkaWNjcGdyJzoKCQkJY2FzZSAnaWJtNDIzJzoKCQkJCXJldHVybiAnSUJNNDIzJzsKCgkJCWNhc2UgJ2NwNDI0JzoKCQkJY2FzZSAnY3NpYm00MjQnOgoJCQljYXNlICdlYmNkaWNjcGhlJzoKCQkJY2FzZSAnaWJtNDI0JzoKCQkJCXJldHVybiAnSUJNNDI0JzsKCgkJCWNhc2UgJzQzNyc6CgkJCWNhc2UgJ2NwNDM3JzoKCQkJY2FzZSAnY3NwYzhjb2RlcGFnZTQzNyc6CgkJCWNhc2UgJ2libTQzNyc6CgkJCQlyZXR1cm4gJ0lCTTQzNyc7CgoJCQljYXNlICdjcDUwMCc6CgkJCWNhc2UgJ2NzaWJtNTAwJzoKCQkJY2FzZSAnZWJjZGljY3BiZSc6CgkJCWNhc2UgJ2ViY2RpY2NwY2gnOgoJCQljYXNlICdpYm01MDAnOgoJCQkJcmV0dXJuICdJQk01MDAnOwoKCQkJY2FzZSAnY3A3NzUnOgoJCQljYXNlICdjc3BjNzc1YmFsdGljJzoKCQkJY2FzZSAnaWJtNzc1JzoKCQkJCXJldHVybiAnSUJNNzc1JzsKCgkJCWNhc2UgJzg1MCc6CgkJCWNhc2UgJ2NwODUwJzoKCQkJY2FzZSAnY3NwYzg1MG11bHRpbGluZ3VhbCc6CgkJCWNhc2UgJ2libTg1MCc6CgkJCQlyZXR1cm4gJ0lCTTg1MCc7CgoJCQljYXNlICc4NTEnOgoJCQljYXNlICdjcDg1MSc6CgkJCWNhc2UgJ2NzaWJtODUxJzoKCQkJY2FzZSAnaWJtODUxJzoKCQkJCXJldHVybiAnSUJNODUxJzsKCgkJCWNhc2UgJzg1Mic6CgkJCWNhc2UgJ2NwODUyJzoKCQkJY2FzZSAnY3NwY3A4NTInOgoJCQljYXNlICdpYm04NTInOgoJCQkJcmV0dXJuICdJQk04NTInOwoKCQkJY2FzZSAnODU1JzoKCQkJY2FzZSAnY3A4NTUnOgoJCQljYXNlICdjc2libTg1NSc6CgkJCWNhc2UgJ2libTg1NSc6CgkJCQlyZXR1cm4gJ0lCTTg1NSc7CgoJCQljYXNlICc4NTcnOgoJCQljYXNlICdjcDg1Nyc6CgkJCWNhc2UgJ2NzaWJtODU3JzoKCQkJY2FzZSAnaWJtODU3JzoKCQkJCXJldHVybiAnSUJNODU3JzsKCgkJCWNhc2UgJzg2MCc6CgkJCWNhc2UgJ2NwODYwJzoKCQkJY2FzZSAnY3NpYm04NjAnOgoJCQljYXNlICdpYm04NjAnOgoJCQkJcmV0dXJuICdJQk04NjAnOwoKCQkJY2FzZSAnODYxJzoKCQkJY2FzZSAnY3Bpcyc6CgkJCWNhc2UgJ2NwODYxJzoKCQkJY2FzZSAnY3NpYm04NjEnOgoJCQljYXNlICdpYm04NjEnOgoJCQkJcmV0dXJuICdJQk04NjEnOwoKCQkJY2FzZSAnODYyJzoKCQkJY2FzZSAnY3A4NjInOgoJCQljYXNlICdjc3BjODYybGF0aW5oZWJyZXcnOgoJCQljYXNlICdpYm04NjInOgoJCQkJcmV0dXJuICdJQk04NjInOwoKCQkJY2FzZSAnODYzJzoKCQkJY2FzZSAnY3A4NjMnOgoJCQljYXNlICdjc2libTg2Myc6CgkJCWNhc2UgJ2libTg2Myc6CgkJCQlyZXR1cm4gJ0lCTTg2Myc7CgoJCQljYXNlICdjcDg2NCc6CgkJCWNhc2UgJ2NzaWJtODY0JzoKCQkJY2FzZSAnaWJtODY0JzoKCQkJCXJldHVybiAnSUJNODY0JzsKCgkJCWNhc2UgJzg2NSc6CgkJCWNhc2UgJ2NwODY1JzoKCQkJY2FzZSAnY3NpYm04NjUnOgoJCQljYXNlICdpYm04NjUnOgoJCQkJcmV0dXJuICdJQk04NjUnOwoKCQkJY2FzZSAnODY2JzoKCQkJY2FzZSAnY3A4NjYnOgoJCQljYXNlICdjc2libTg2Nic6CgkJCWNhc2UgJ2libTg2Nic6CgkJCQlyZXR1cm4gJ0lCTTg2Nic7CgoJCQljYXNlICdjcGFyJzoKCQkJY2FzZSAnY3A4NjgnOgoJCQljYXNlICdjc2libTg2OCc6CgkJCWNhc2UgJ2libTg2OCc6CgkJCQlyZXR1cm4gJ0lCTTg2OCc7CgoJCQljYXNlICc4NjknOgoJCQljYXNlICdjcGdyJzoKCQkJY2FzZSAnY3A4NjknOgoJCQljYXNlICdjc2libTg2OSc6CgkJCWNhc2UgJ2libTg2OSc6CgkJCQlyZXR1cm4gJ0lCTTg2OSc7CgoJCQljYXNlICdjcDg3MCc6CgkJCWNhc2UgJ2NzaWJtODcwJzoKCQkJY2FzZSAnZWJjZGljY3Byb2VjZSc6CgkJCWNhc2UgJ2ViY2RpY2NweXUnOgoJCQljYXNlICdpYm04NzAnOgoJCQkJcmV0dXJuICdJQk04NzAnOwoKCQkJY2FzZSAnY3A4NzEnOgoJCQljYXNlICdjc2libTg3MSc6CgkJCWNhc2UgJ2ViY2RpY2NwaXMnOgoJCQljYXNlICdpYm04NzEnOgoJCQkJcmV0dXJuICdJQk04NzEnOwoKCQkJY2FzZSAnY3A4ODAnOgoJCQljYXNlICdjc2libTg4MCc6CgkJCWNhc2UgJ2ViY2RpY2N5cmlsbGljJzoKCQkJY2FzZSAnaWJtODgwJzoKCQkJCXJldHVybiAnSUJNODgwJzsKCgkJCWNhc2UgJ2NwODkxJzoKCQkJY2FzZSAnY3NpYm04OTEnOgoJCQljYXNlICdpYm04OTEnOgoJCQkJcmV0dXJuICdJQk04OTEnOwoKCQkJY2FzZSAnY3A5MDMnOgoJCQljYXNlICdjc2libTkwMyc6CgkJCWNhc2UgJ2libTkwMyc6CgkJCQlyZXR1cm4gJ0lCTTkwMyc7CgoJCQljYXNlICc5MDQnOgoJCQljYXNlICdjcDkwNCc6CgkJCWNhc2UgJ2NzaWJibTkwNCc6CgkJCWNhc2UgJ2libTkwNCc6CgkJCQlyZXR1cm4gJ0lCTTkwNCc7CgoJCQljYXNlICdjcDkwNSc6CgkJCWNhc2UgJ2NzaWJtOTA1JzoKCQkJY2FzZSAnZWJjZGljY3B0cic6CgkJCWNhc2UgJ2libTkwNSc6CgkJCQlyZXR1cm4gJ0lCTTkwNSc7CgoJCQljYXNlICdjcDkxOCc6CgkJCWNhc2UgJ2NzaWJtOTE4JzoKCQkJY2FzZSAnZWJjZGljY3BhcjInOgoJCQljYXNlICdpYm05MTgnOgoJCQkJcmV0dXJuICdJQk05MTgnOwoKCQkJY2FzZSAnY3AxMDI2JzoKCQkJY2FzZSAnY3NpYm0xMDI2JzoKCQkJY2FzZSAnaWJtMTAyNic6CgkJCQlyZXR1cm4gJ0lCTTEwMjYnOwoKCQkJY2FzZSAnaWJtMTA0Nyc6CgkJCWNhc2UgJ2libTEwNDcnOgoJCQkJcmV0dXJuICdJQk0xMDQ3JzsKCgkJCWNhc2UgJ2NzaXNvMTQzaWVjcDI3MSc6CgkJCWNhc2UgJ2llY3AyNzEnOgoJCQljYXNlICdpc29pcjE0Myc6CgkJCQlyZXR1cm4gJ0lFQ19QMjctMSc7CgoJCQljYXNlICdjc2lzbzQ5aW5pcyc6CgkJCWNhc2UgJ2luaXMnOgoJCQljYXNlICdpc29pcjQ5JzoKCQkJCXJldHVybiAnSU5JUyc7CgoJCQljYXNlICdjc2lzbzUwaW5pczgnOgoJCQljYXNlICdpbmlzOCc6CgkJCWNhc2UgJ2lzb2lyNTAnOgoJCQkJcmV0dXJuICdJTklTLTgnOwoKCQkJY2FzZSAnY3Npc281MWluaXNjeXJpbGxpYyc6CgkJCWNhc2UgJ2luaXNjeXJpbGxpYyc6CgkJCWNhc2UgJ2lzb2lyNTEnOgoJCQkJcmV0dXJuICdJTklTLWN5cmlsbGljJzsKCgkJCWNhc2UgJ2NzaW52YXJpYW50JzoKCQkJY2FzZSAnaW52YXJpYW50JzoKCQkJCXJldHVybiAnSU5WQVJJQU5UJzsKCgkJCWNhc2UgJ2lzbzIwMjJjbic6CgkJCQlyZXR1cm4gJ0lTTy0yMDIyLUNOJzsKCgkJCWNhc2UgJ2lzbzIwMjJjbmV4dCc6CgkJCQlyZXR1cm4gJ0lTTy0yMDIyLUNOLUVYVCc7CgoJCQljYXNlICdjc2lzbzIwMjJqcCc6CgkJCWNhc2UgJ2lzbzIwMjJqcCc6CgkJCQlyZXR1cm4gJ0lTTy0yMDIyLUpQJzsKCgkJCWNhc2UgJ2NzaXNvMjAyMmpwMic6CgkJCWNhc2UgJ2lzbzIwMjJqcDInOgoJCQkJcmV0dXJuICdJU08tMjAyMi1KUC0yJzsKCgkJCWNhc2UgJ2NzaXNvMjAyMmtyJzoKCQkJY2FzZSAnaXNvMjAyMmtyJzoKCQkJCXJldHVybiAnSVNPLTIwMjItS1InOwoKCQkJY2FzZSAnY3N3aW5kb3dzMzBsYXRpbjEnOgoJCQljYXNlICdpc284ODU5MXdpbmRvd3MzMGxhdGluMSc6CgkJCQlyZXR1cm4gJ0lTTy04ODU5LTEtV2luZG93cy0zLjAtTGF0aW4tMSc7CgoJCQljYXNlICdjc3dpbmRvd3MzMWxhdGluMSc6CgkJCWNhc2UgJ2lzbzg4NTkxd2luZG93czMxbGF0aW4xJzoKCQkJCXJldHVybiAnSVNPLTg4NTktMS1XaW5kb3dzLTMuMS1MYXRpbi0xJzsKCgkJCWNhc2UgJ2NzaXNvbGF0aW4yJzoKCQkJY2FzZSAnaXNvODg1OTInOgoJCQljYXNlICdpc29pcjEwMSc6CgkJCWNhc2UgJ2lzbzg4NTkyJzoKCQkJY2FzZSAnaXNvODg1OTIxOTg3JzoKCQkJY2FzZSAnbDInOgoJCQljYXNlICdsYXRpbjInOgoJCQkJcmV0dXJuICdJU08tODg1OS0yJzsKCgkJCWNhc2UgJ2Nzd2luZG93czMxbGF0aW4yJzoKCQkJY2FzZSAnaXNvODg1OTJ3aW5kb3dzbGF0aW4yJzoKCQkJCXJldHVybiAnSVNPLTg4NTktMi1XaW5kb3dzLUxhdGluLTInOwoKCQkJY2FzZSAnY3Npc29sYXRpbjMnOgoJCQljYXNlICdpc284ODU5Myc6CgkJCWNhc2UgJ2lzb2lyMTA5JzoKCQkJY2FzZSAnaXNvODg1OTMnOgoJCQljYXNlICdpc284ODU5MzE5ODgnOgoJCQljYXNlICdsMyc6CgkJCWNhc2UgJ2xhdGluMyc6CgkJCQlyZXR1cm4gJ0lTTy04ODU5LTMnOwoKCQkJY2FzZSAnY3Npc29sYXRpbjQnOgoJCQljYXNlICdpc284ODU5NCc6CgkJCWNhc2UgJ2lzb2lyMTEwJzoKCQkJY2FzZSAnaXNvODg1OTQnOgoJCQljYXNlICdpc284ODU5NDE5ODgnOgoJCQljYXNlICdsNCc6CgkJCWNhc2UgJ2xhdGluNCc6CgkJCQlyZXR1cm4gJ0lTTy04ODU5LTQnOwoKCQkJY2FzZSAnY3Npc29sYXRpbmN5cmlsbGljJzoKCQkJY2FzZSAnY3lyaWxsaWMnOgoJCQljYXNlICdpc284ODU5NSc6CgkJCWNhc2UgJ2lzb2lyMTQ0JzoKCQkJY2FzZSAnaXNvODg1OTUnOgoJCQljYXNlICdpc284ODU5NTE5ODgnOgoJCQkJcmV0dXJuICdJU08tODg1OS01JzsKCgkJCWNhc2UgJ2FyYWJpYyc6CgkJCWNhc2UgJ2FzbW83MDgnOgoJCQljYXNlICdjc2lzb2xhdGluYXJhYmljJzoKCQkJY2FzZSAnZWNtYTExNCc6CgkJCWNhc2UgJ2lzbzg4NTk2JzoKCQkJY2FzZSAnaXNvaXIxMjcnOgoJCQljYXNlICdpc284ODU5Nic6CgkJCWNhc2UgJ2lzbzg4NTk2MTk4Nyc6CgkJCQlyZXR1cm4gJ0lTTy04ODU5LTYnOwoKCQkJY2FzZSAnY3Npc284ODU5NmUnOgoJCQljYXNlICdpc284ODU5NmUnOgoJCQljYXNlICdpc284ODU5NmUnOgoJCQkJcmV0dXJuICdJU08tODg1OS02LUUnOwoKCQkJY2FzZSAnY3Npc284ODU5NmknOgoJCQljYXNlICdpc284ODU5NmknOgoJCQljYXNlICdpc284ODU5NmknOgoJCQkJcmV0dXJuICdJU08tODg1OS02LUknOwoKCQkJY2FzZSAnY3Npc29sYXRpbmdyZWVrJzoKCQkJY2FzZSAnZWNtYTExOCc6CgkJCWNhc2UgJ2Vsb3Q5MjgnOgoJCQljYXNlICdncmVlayc6CgkJCWNhc2UgJ2dyZWVrOCc6CgkJCWNhc2UgJ2lzbzg4NTk3JzoKCQkJY2FzZSAnaXNvaXIxMjYnOgoJCQljYXNlICdpc284ODU5Nyc6CgkJCWNhc2UgJ2lzbzg4NTk3MTk4Nyc6CgkJCQlyZXR1cm4gJ0lTTy04ODU5LTcnOwoKCQkJY2FzZSAnY3Npc29sYXRpbmhlYnJldyc6CgkJCWNhc2UgJ2hlYnJldyc6CgkJCWNhc2UgJ2lzbzg4NTk4JzoKCQkJY2FzZSAnaXNvaXIxMzgnOgoJCQljYXNlICdpc284ODU5OCc6CgkJCWNhc2UgJ2lzbzg4NTk4MTk4OCc6CgkJCQlyZXR1cm4gJ0lTTy04ODU5LTgnOwoKCQkJY2FzZSAnY3Npc284ODU5OGUnOgoJCQljYXNlICdpc284ODU5OGUnOgoJCQljYXNlICdpc284ODU5OGUnOgoJCQkJcmV0dXJuICdJU08tODg1OS04LUUnOwoKCQkJY2FzZSAnY3Npc284ODU5OGknOgoJCQljYXNlICdpc284ODU5OGknOgoJCQljYXNlICdpc284ODU5OGknOgoJCQkJcmV0dXJuICdJU08tODg1OS04LUknOwoKCQkJY2FzZSAnY3N3aW5kb3dzMzFsYXRpbjUnOgoJCQljYXNlICdpc284ODU5OXdpbmRvd3NsYXRpbjUnOgoJCQkJcmV0dXJuICdJU08tODg1OS05LVdpbmRvd3MtTGF0aW4tNSc7CgoJCQljYXNlICdjc2lzb2xhdGluNic6CgkJCWNhc2UgJ2lzbzg4NTkxMCc6CgkJCWNhc2UgJ2lzb2lyMTU3JzoKCQkJY2FzZSAnaXNvODg1OTEwMTk5Mic6CgkJCWNhc2UgJ2w2JzoKCQkJY2FzZSAnbGF0aW42JzoKCQkJCXJldHVybiAnSVNPLTg4NTktMTAnOwoKCQkJY2FzZSAnaXNvODg1OTEzJzoKCQkJCXJldHVybiAnSVNPLTg4NTktMTMnOwoKCQkJY2FzZSAnaXNvODg1OTE0JzoKCQkJY2FzZSAnaXNvY2VsdGljJzoKCQkJY2FzZSAnaXNvaXIxOTknOgoJCQljYXNlICdpc284ODU5MTQnOgoJCQljYXNlICdpc284ODU5MTQxOTk4JzoKCQkJY2FzZSAnbDgnOgoJCQljYXNlICdsYXRpbjgnOgoJCQkJcmV0dXJuICdJU08tODg1OS0xNCc7CgoJCQljYXNlICdpc284ODU5MTUnOgoJCQljYXNlICdpc284ODU5MTUnOgoJCQljYXNlICdsYXRpbjknOgoJCQkJcmV0dXJuICdJU08tODg1OS0xNSc7CgoJCQljYXNlICdpc284ODU5MTYnOgoJCQljYXNlICdpc29pcjIyNic6CgkJCWNhc2UgJ2lzbzg4NTkxNic6CgkJCWNhc2UgJ2lzbzg4NTkxNjIwMDEnOgoJCQljYXNlICdsMTAnOgoJCQljYXNlICdsYXRpbjEwJzoKCQkJCXJldHVybiAnSVNPLTg4NTktMTYnOwoKCQkJY2FzZSAnaXNvMTA2NDZqMSc6CgkJCQlyZXR1cm4gJ0lTTy0xMDY0Ni1KLTEnOwoKCQkJY2FzZSAnY3N1bmljb2RlJzoKCQkJY2FzZSAnaXNvMTA2NDZ1Y3MyJzoKCQkJCXJldHVybiAnSVNPLTEwNjQ2LVVDUy0yJzsKCgkJCWNhc2UgJ2NzdWNzNCc6CgkJCWNhc2UgJ2lzbzEwNjQ2dWNzNCc6CgkJCQlyZXR1cm4gJ0lTTy0xMDY0Ni1VQ1MtNCc7CgoJCQljYXNlICdjc3VuaWNvZGVhc2NpaSc6CgkJCWNhc2UgJ2lzbzEwNjQ2dWNzYmFzaWMnOgoJCQkJcmV0dXJuICdJU08tMTA2NDYtVUNTLUJhc2ljJzsKCgkJCWNhc2UgJ2NzdW5pY29kZWxhdGluMSc6CgkJCWNhc2UgJ2lzbzEwNjQ2JzoKCQkJY2FzZSAnaXNvMTA2NDZ1bmljb2RlbGF0aW4xJzoKCQkJCXJldHVybiAnSVNPLTEwNjQ2LVVuaWNvZGUtTGF0aW4xJzsKCgkJCWNhc2UgJ2NzaXNvMTA2NDZ1dGYxJzoKCQkJY2FzZSAnaXNvMTA2NDZ1dGYxJzoKCQkJCXJldHVybiAnSVNPLTEwNjQ2LVVURi0xJzsKCgkJCWNhc2UgJ2NzaXNvMTE1NDgxJzoKCQkJY2FzZSAnaXNvMTE1NDgxJzoKCQkJY2FzZSAnaXNvMTE1NDgxJzoKCQkJY2FzZSAnaXNvdHIxMTU0ODEnOgoJCQkJcmV0dXJuICdJU08tMTE1NDgtMSc7CgoJCQljYXNlICdjc2lzbzkwJzoKCQkJY2FzZSAnaXNvaXI5MCc6CgkJCQlyZXR1cm4gJ2lzby1pci05MCc7CgoJCQljYXNlICdjc3VuaWNvZGVpYm0xMjYxJzoKCQkJY2FzZSAnaXNvdW5pY29kZWlibTEyNjEnOgoJCQkJcmV0dXJuICdJU08tVW5pY29kZS1JQk0tMTI2MSc7CgoJCQljYXNlICdjc3VuaWNvZGVpYm0xMjY0JzoKCQkJY2FzZSAnaXNvdW5pY29kZWlibTEyNjQnOgoJCQkJcmV0dXJuICdJU08tVW5pY29kZS1JQk0tMTI2NCc7CgoJCQljYXNlICdjc3VuaWNvZGVpYm0xMjY1JzoKCQkJY2FzZSAnaXNvdW5pY29kZWlibTEyNjUnOgoJCQkJcmV0dXJuICdJU08tVW5pY29kZS1JQk0tMTI2NSc7CgoJCQljYXNlICdjc3VuaWNvZGVpYm0xMjY4JzoKCQkJY2FzZSAnaXNvdW5pY29kZWlibTEyNjgnOgoJCQkJcmV0dXJuICdJU08tVW5pY29kZS1JQk0tMTI2OCc7CgoJCQljYXNlICdjc3VuaWNvZGVpYm0xMjc2JzoKCQkJY2FzZSAnaXNvdW5pY29kZWlibTEyNzYnOgoJCQkJcmV0dXJuICdJU08tVW5pY29kZS1JQk0tMTI3Nic7CgoJCQljYXNlICdjc2lzbzY0NmJhc2ljMTk4Myc6CgkJCWNhc2UgJ2lzbzY0NmJhc2ljMTk4Myc6CgkJCWNhc2UgJ3JlZic6CgkJCQlyZXR1cm4gJ0lTT182NDYuYmFzaWM6MTk4Myc7CgoJCQljYXNlICdjc2lzbzJpbnRscmVmdmVyc2lvbic6CgkJCWNhc2UgJ2lydic6CgkJCWNhc2UgJ2lzb2lyMic6CgkJCWNhc2UgJ2lzbzY0NmlydjE5ODMnOgoJCQkJcmV0dXJuICdJU09fNjQ2LmlydjoxOTgzJzsKCgkJCWNhc2UgJ2NzaXNvMjAzMyc6CgkJCWNhc2UgJ2UxM2InOgoJCQljYXNlICdpc29pcjk4JzoKCQkJY2FzZSAnaXNvMjAzMzE5ODMnOgoJCQkJcmV0dXJuICdJU09fMjAzMy0xOTgzJzsKCgkJCWNhc2UgJ2NzaXNvNTQyN2N5cmlsbGljJzoKCQkJY2FzZSAnaXNvaXIzNyc6CgkJCWNhc2UgJ2lzbzU0MjcnOgoJCQkJcmV0dXJuICdJU09fNTQyNyc7CgoJCQljYXNlICdpc29pcjU0JzoKCQkJY2FzZSAnaXNvNTQyN2N5cmlsbGljMTk4MSc6CgkJCWNhc2UgJ2lzbzU0MjcxOTgxJzoKCQkJCXJldHVybiAnSVNPXzU0Mjc6MTk4MSc7CgoJCQljYXNlICdjc2lzbzU0MjhncmVlayc6CgkJCWNhc2UgJ2lzb2lyNTUnOgoJCQljYXNlICdpc281NDI4MTk4MCc6CgkJCQlyZXR1cm4gJ0lTT181NDI4OjE5ODAnOwoKCQkJY2FzZSAnY3Npc282OTM3YWRkJzoKCQkJY2FzZSAnaXNvaXIxNTInOgoJCQljYXNlICdpc282OTM3MjI1JzoKCQkJCXJldHVybiAnSVNPXzY5MzctMi0yNSc7CgoJCQljYXNlICdjc2lzb3RleHRjb21tJzoKCQkJY2FzZSAnaXNvaXIxNDInOgoJCQljYXNlICdpc282OTM3MmFkZCc6CgkJCQlyZXR1cm4gJ0lTT182OTM3LTItYWRkJzsKCgkJCWNhc2UgJ2NzaXNvODg1OXN1cHAnOgoJCQljYXNlICdpc29pcjE1NCc6CgkJCWNhc2UgJ2lzbzg4NTlzdXBwJzoKCQkJY2FzZSAnbGF0aW4xMjUnOgoJCQkJcmV0dXJuICdJU09fODg1OS1zdXBwJzsKCgkJCWNhc2UgJ2NzaXNvMTAzNjdib3gnOgoJCQljYXNlICdpc29pcjE1NSc6CgkJCWNhc2UgJ2lzbzEwMzY3Ym94JzoKCQkJCXJldHVybiAnSVNPXzEwMzY3LWJveCc7CgoJCQljYXNlICdjc2lzbzE1aXRhbGlhbic6CgkJCWNhc2UgJ2lzb2lyMTUnOgoJCQljYXNlICdpc282NDZpdCc6CgkJCWNhc2UgJ2l0JzoKCQkJCXJldHVybiAnSVQnOwoKCQkJY2FzZSAnY3Npc28xM2ppc2M2MjIwanAnOgoJCQljYXNlICdpc29pcjEzJzoKCQkJY2FzZSAnamlzYzYyMjAxOTY5JzoKCQkJY2FzZSAnamlzYzYyMjAxOTY5anAnOgoJCQljYXNlICdrYXRha2FuYSc6CgkJCWNhc2UgJ3gwMjAxNyc6CgkJCQlyZXR1cm4gJ0pJU19DNjIyMC0xOTY5LWpwJzsKCgkJCWNhc2UgJ2NzaXNvMTRqaXNjNjIyMHJvJzoKCQkJY2FzZSAnaXNvaXIxNCc6CgkJCWNhc2UgJ2lzbzY0NmpwJzoKCQkJY2FzZSAnamlzYzYyMjAxOTY5cm8nOgoJCQljYXNlICdqcCc6CgkJCQlyZXR1cm4gJ0pJU19DNjIyMC0xOTY5LXJvJzsKCgkJCWNhc2UgJ2NzaXNvNDJqaXNjNjIyNjE5NzgnOgoJCQljYXNlICdpc29pcjQyJzoKCQkJY2FzZSAnamlzYzYyMjYxOTc4JzoKCQkJCXJldHVybiAnSklTX0M2MjI2LTE5NzgnOwoKCQkJY2FzZSAnY3Npc284N2ppc3gwMjA4JzoKCQkJY2FzZSAnaXNvaXI4Nyc6CgkJCWNhc2UgJ2ppc2M2MjI2MTk4Myc6CgkJCWNhc2UgJ2ppc3gwMjA4MTk4Myc6CgkJCWNhc2UgJ3gwMjA4JzoKCQkJCXJldHVybiAnSklTX0M2MjI2LTE5ODMnOwoKCQkJY2FzZSAnY3Npc285MWppc2M2MjI5MTk4NGEnOgoJCQljYXNlICdpc29pcjkxJzoKCQkJY2FzZSAnamlzYzYyMjkxOTg0YSc6CgkJCWNhc2UgJ2pwb2NyYSc6CgkJCQlyZXR1cm4gJ0pJU19DNjIyOS0xOTg0LWEnOwoKCQkJY2FzZSAnY3Npc285Mmppc2M2Mjk5MTk4NGInOgoJCQljYXNlICdpc29pcjkyJzoKCQkJY2FzZSAnaXNvNjQ2anBvY3JiJzoKCQkJY2FzZSAnamlzYzYyMjkxOTg0Yic6CgkJCWNhc2UgJ2pwb2NyYic6CgkJCQlyZXR1cm4gJ0pJU19DNjIyOS0xOTg0LWInOwoKCQkJY2FzZSAnY3Npc285M2ppczYyMjkxOTg0YmFkZCc6CgkJCWNhc2UgJ2lzb2lyOTMnOgoJCQljYXNlICdqaXNjNjIyOTE5ODRiYWRkJzoKCQkJY2FzZSAnanBvY3JiYWRkJzoKCQkJCXJldHVybiAnSklTX0M2MjI5LTE5ODQtYi1hZGQnOwoKCQkJY2FzZSAnY3Npc285NGppczYyMjkxOTg0aGFuZCc6CgkJCWNhc2UgJ2lzb2lyOTQnOgoJCQljYXNlICdqaXNjNjIyOTE5ODRoYW5kJzoKCQkJY2FzZSAnanBvY3JoYW5kJzoKCQkJCXJldHVybiAnSklTX0M2MjI5LTE5ODQtaGFuZCc7CgoJCQljYXNlICdjc2lzbzk1amlzNjIyOTE5ODRoYW5kYWRkJzoKCQkJY2FzZSAnaXNvaXI5NSc6CgkJCWNhc2UgJ2ppc2M2MjI5MTk4NGhhbmRhZGQnOgoJCQljYXNlICdqcG9jcmhhbmRhZGQnOgoJCQkJcmV0dXJuICdKSVNfQzYyMjktMTk4NC1oYW5kLWFkZCc7CgoJCQljYXNlICdjc2lzbzk2amlzYzYyMjkxOTg0a2FuYSc6CgkJCWNhc2UgJ2lzb2lyOTYnOgoJCQljYXNlICdqaXNjNjIyOTE5ODRrYW5hJzoKCQkJCXJldHVybiAnSklTX0M2MjI5LTE5ODQta2FuYSc7CgoJCQljYXNlICdjc2ppc2VuY29kaW5nJzoKCQkJY2FzZSAnamlzZW5jb2RpbmcnOgoJCQkJcmV0dXJuICdKSVNfRW5jb2RpbmcnOwoKCQkJY2FzZSAnY3NoYWxmd2lkdGhrYXRha2FuYSc6CgkJCWNhc2UgJ2ppc3gwMjAxJzoKCQkJY2FzZSAneDAyMDEnOgoJCQkJcmV0dXJuICdKSVNfWDAyMDEnOwoKCQkJY2FzZSAnY3Npc28xNTlqaXN4MDIxMjE5OTAnOgoJCQljYXNlICdpc29pcjE1OSc6CgkJCWNhc2UgJ2ppc3gwMjEyMTk5MCc6CgkJCWNhc2UgJ3gwMjEyJzoKCQkJCXJldHVybiAnSklTX1gwMjEyLTE5OTAnOwoKCQkJY2FzZSAnY3Npc28xNDFqdXNpYjEwMDInOgoJCQljYXNlICdpc29pcjE0MSc6CgkJCWNhc2UgJ2lzbzY0Nnl1JzoKCQkJY2FzZSAnanMnOgoJCQljYXNlICdqdXNpYjEwMDInOgoJCQljYXNlICd5dSc6CgkJCQlyZXR1cm4gJ0pVU19JLkIxLjAwMic7CgoJCQljYXNlICdjc2lzbzE0N21hY2Vkb25pYW4nOgoJCQljYXNlICdpc29pcjE0Nyc6CgkJCWNhc2UgJ2p1c2liMTAwM21hYyc6CgkJCWNhc2UgJ21hY2Vkb25pYW4nOgoJCQkJcmV0dXJuICdKVVNfSS5CMS4wMDMtbWFjJzsKCgkJCWNhc2UgJ2NzaXNvMTQ2c2VyYmlhbic6CgkJCWNhc2UgJ2lzb2lyMTQ2JzoKCQkJY2FzZSAnanVzaWIxMDAzc2VyYic6CgkJCWNhc2UgJ3NlcmJpYW4nOgoJCQkJcmV0dXJuICdKVVNfSS5CMS4wMDMtc2VyYic7CgoJCQljYXNlICdrb2k3c3dpdGNoZWQnOgoJCQkJcmV0dXJuICdLT0k3LXN3aXRjaGVkJzsKCgkJCWNhc2UgJ2Nza29pOHInOgoJCQljYXNlICdrb2k4cic6CgkJCQlyZXR1cm4gJ0tPSTgtUic7CgoJCQljYXNlICdrb2k4dSc6CgkJCQlyZXR1cm4gJ0tPSTgtVSc7CgoJCQljYXNlICdjc2tzYzU2MzYnOgoJCQljYXNlICdpc282NDZrcic6CgkJCWNhc2UgJ2tzYzU2MzYnOgoJCQkJcmV0dXJuICdLU0M1NjM2JzsKCgkJCWNhc2UgJ2Nza3oxMDQ4JzoKCQkJY2FzZSAna3oxMDQ4JzoKCQkJY2FzZSAncmsxMDQ4JzoKCQkJY2FzZSAnc3RyazEwNDgyMDAyJzoKCQkJCXJldHVybiAnS1otMTA0OCc7CgoJCQljYXNlICdjc2lzbzE5bGF0aW5ncmVlayc6CgkJCWNhc2UgJ2lzb2lyMTknOgoJCQljYXNlICdsYXRpbmdyZWVrJzoKCQkJCXJldHVybiAnbGF0aW4tZ3JlZWsnOwoKCQkJY2FzZSAnY3Npc28yN2xhdGluZ3JlZWsxJzoKCQkJY2FzZSAnaXNvaXIyNyc6CgkJCWNhc2UgJ2xhdGluZ3JlZWsxJzoKCQkJCXJldHVybiAnTGF0aW4tZ3JlZWstMSc7CgoJCQljYXNlICdjc2lzbzE1OGxhcCc6CgkJCWNhc2UgJ2lzb2lyMTU4JzoKCQkJY2FzZSAnbGFwJzoKCQkJY2FzZSAnbGF0aW5sYXAnOgoJCQkJcmV0dXJuICdsYXRpbi1sYXAnOwoKCQkJY2FzZSAnY3NtYWNpbnRvc2gnOgoJCQljYXNlICdtYWMnOgoJCQljYXNlICdtYWNpbnRvc2gnOgoJCQkJcmV0dXJuICdtYWNpbnRvc2gnOwoKCQkJY2FzZSAnY3NtaWNyb3NvZnRwdWJsaXNoaW5nJzoKCQkJY2FzZSAnbWljcm9zb2Z0cHVibGlzaGluZyc6CgkJCQlyZXR1cm4gJ01pY3Jvc29mdC1QdWJsaXNoaW5nJzsKCgkJCWNhc2UgJ2NzbW5lbSc6CgkJCWNhc2UgJ21uZW0nOgoJCQkJcmV0dXJuICdNTkVNJzsKCgkJCWNhc2UgJ2NzbW5lbW9uaWMnOgoJCQljYXNlICdtbmVtb25pYyc6CgkJCQlyZXR1cm4gJ01ORU1PTklDJzsKCgkJCWNhc2UgJ2NzaXNvODZodW5nYXJpYW4nOgoJCQljYXNlICdodSc6CgkJCWNhc2UgJ2lzb2lyODYnOgoJCQljYXNlICdpc282NDZodSc6CgkJCWNhc2UgJ21zejc3OTUzJzoKCQkJCXJldHVybiAnTVNaXzc3OTUuMyc7CgoJCQljYXNlICdjc25hdHNkYW5vJzoKCQkJY2FzZSAnaXNvaXI5MSc6CgkJCWNhc2UgJ25hdHNkYW5vJzoKCQkJCXJldHVybiAnTkFUUy1EQU5PJzsKCgkJCWNhc2UgJ2NzbmF0c2Rhbm9hZGQnOgoJCQljYXNlICdpc29pcjkyJzoKCQkJY2FzZSAnbmF0c2Rhbm9hZGQnOgoJCQkJcmV0dXJuICdOQVRTLURBTk8tQUREJzsKCgkJCWNhc2UgJ2NzbmF0c3NlZmknOgoJCQljYXNlICdpc29pcjgxJzoKCQkJY2FzZSAnbmF0c3NlZmknOgoJCQkJcmV0dXJuICdOQVRTLVNFRkknOwoKCQkJY2FzZSAnY3NuYXRzc2VmaWFkZCc6CgkJCWNhc2UgJ2lzb2lyODInOgoJCQljYXNlICduYXRzc2VmaWFkZCc6CgkJCQlyZXR1cm4gJ05BVFMtU0VGSS1BREQnOwoKCQkJY2FzZSAnY3Npc28xNTFjdWJhJzoKCQkJY2FzZSAnY3ViYSc6CgkJCWNhc2UgJ2lzb2lyMTUxJzoKCQkJY2FzZSAnaXNvNjQ2Y3UnOgoJCQljYXNlICduY25jMDAxMDgxJzoKCQkJCXJldHVybiAnTkNfTkMwMC0xMDo4MSc7CgoJCQljYXNlICdjc2lzbzY5ZnJlbmNoJzoKCQkJY2FzZSAnZnInOgoJCQljYXNlICdpc29pcjY5JzoKCQkJY2FzZSAnaXNvNjQ2ZnInOgoJCQljYXNlICduZno2MjAxMCc6CgkJCQlyZXR1cm4gJ05GX1pfNjItMDEwJzsKCgkJCWNhc2UgJ2NzaXNvMjVmcmVuY2gnOgoJCQljYXNlICdpc29pcjI1JzoKCQkJY2FzZSAnaXNvNjQ2ZnIxJzoKCQkJY2FzZSAnbmZ6NjIwMTAxOTczJzoKCQkJCXJldHVybiAnTkZfWl82Mi0wMTBfKDE5NzMpJzsKCgkJCWNhc2UgJ2NzaXNvNjBkYW5pc2hub3J3ZWdpYW4nOgoJCQljYXNlICdjc2lzbzYwbm9yd2VnaWFuMSc6CgkJCWNhc2UgJ2lzb2lyNjAnOgoJCQljYXNlICdpc282NDZubyc6CgkJCWNhc2UgJ25vJzoKCQkJY2FzZSAnbnM0NTUxMSc6CgkJCQlyZXR1cm4gJ05TXzQ1NTEtMSc7CgoJCQljYXNlICdjc2lzbzYxbm9yd2VnaWFuMic6CgkJCWNhc2UgJ2lzb2lyNjEnOgoJCQljYXNlICdpc282NDZubzInOgoJCQljYXNlICdubzInOgoJCQljYXNlICduczQ1NTEyJzoKCQkJCXJldHVybiAnTlNfNDU1MS0yJzsKCgkJCWNhc2UgJ29zZGViY2RpY2RmMDNpcnYnOgoJCQkJcmV0dXJuICdPU0RfRUJDRElDX0RGMDNfSVJWJzsKCgkJCWNhc2UgJ29zZGViY2RpY2RmMDQxJzoKCQkJCXJldHVybiAnT1NEX0VCQ0RJQ19ERjA0XzEnOwoKCQkJY2FzZSAnb3NkZWJjZGljZGYwNDE1JzoKCQkJCXJldHVybiAnT1NEX0VCQ0RJQ19ERjA0XzE1JzsKCgkJCWNhc2UgJ2NzcGM4ZGFuaXNobm9yd2VnaWFuJzoKCQkJY2FzZSAncGM4ZGFuaXNobm9yd2VnaWFuJzoKCQkJCXJldHVybiAnUEM4LURhbmlzaC1Ob3J3ZWdpYW4nOwoKCQkJY2FzZSAnY3NwYzh0dXJraXNoJzoKCQkJY2FzZSAncGM4dHVya2lzaCc6CgkJCQlyZXR1cm4gJ1BDOC1UdXJraXNoJzsKCgkJCWNhc2UgJ2NzaXNvMTZwb3J0dWd1ZXNlJzoKCQkJY2FzZSAnaXNvaXIxNic6CgkJCWNhc2UgJ2lzbzY0NnB0JzoKCQkJY2FzZSAncHQnOgoJCQkJcmV0dXJuICdQVCc7CgoJCQljYXNlICdjc2lzbzg0cG9ydHVndWVzZTInOgoJCQljYXNlICdpc29pcjg0JzoKCQkJY2FzZSAnaXNvNjQ2cHQyJzoKCQkJY2FzZSAncHQyJzoKCQkJCXJldHVybiAnUFQyJzsKCgkJCWNhc2UgJ2NwMTU0JzoKCQkJY2FzZSAnY3NwdGNwMTU0JzoKCQkJY2FzZSAnY3lyaWxsaWNhc2lhbic6CgkJCWNhc2UgJ3B0MTU0JzoKCQkJY2FzZSAncHRjcDE1NCc6CgkJCQlyZXR1cm4gJ1BUQ1AxNTQnOwoKCQkJY2FzZSAnc2NzdSc6CgkJCQlyZXR1cm4gJ1NDU1UnOwoKCQkJY2FzZSAnY3Npc28xMHN3ZWRpc2gnOgoJCQljYXNlICdmaSc6CgkJCWNhc2UgJ2lzb2lyMTAnOgoJCQljYXNlICdpc282NDZmaSc6CgkJCWNhc2UgJ2lzbzY0NnNlJzoKCQkJY2FzZSAnc2UnOgoJCQljYXNlICdzZW44NTAyMDBiJzoKCQkJCXJldHVybiAnU0VOXzg1MDIwMF9CJzsKCgkJCWNhc2UgJ2NzaXNvMTFzd2VkaXNoZm9ybmFtZXMnOgoJCQljYXNlICdpc29pcjExJzoKCQkJY2FzZSAnaXNvNjQ2c2UyJzoKCQkJY2FzZSAnc2UyJzoKCQkJY2FzZSAnc2VuODUwMjAwYyc6CgkJCQlyZXR1cm4gJ1NFTl84NTAyMDBfQyc7CgoJCQljYXNlICdjc3NoaWZ0amlzJzoKCQkJY2FzZSAnbXNrYW5qaSc6CgkJCWNhc2UgJ3NoaWZ0amlzJzoKCQkJCXJldHVybiAnU2hpZnRfSklTJzsKCgkJCWNhc2UgJ2NzaXNvMTAydDYxN2JpdCc6CgkJCWNhc2UgJ2lzb2lyMTAyJzoKCQkJY2FzZSAndDYxN2JpdCc6CgkJCQlyZXR1cm4gJ1QuNjEtN2JpdCc7CgoJCQljYXNlICdjc2lzbzEwM3Q2MThiaXQnOgoJCQljYXNlICdpc29pcjEwMyc6CgkJCWNhc2UgJ3Q2MSc6CgkJCWNhc2UgJ3Q2MThiaXQnOgoJCQkJcmV0dXJuICdULjYxLThiaXQnOwoKCQkJY2FzZSAnY3Npc28xMjh0MTAxZzInOgoJCQljYXNlICdpc29pcjEyOCc6CgkJCWNhc2UgJ3QxMDFnMic6CgkJCQlyZXR1cm4gJ1QuMTAxLUcyJzsKCgkJCWNhc2UgJ2NzdHNjaWknOgoJCQljYXNlICd0c2NpaSc6CgkJCQlyZXR1cm4gJ1RTQ0lJJzsKCgkJCWNhc2UgJ2NzdW5pY29kZTExJzoKCQkJY2FzZSAndW5pY29kZTExJzoKCQkJCXJldHVybiAnVU5JQ09ERS0xLTEnOwoKCQkJY2FzZSAnY3N1bmljb2RlMTF1dGY3JzoKCQkJY2FzZSAndW5pY29kZTExdXRmNyc6CgkJCQlyZXR1cm4gJ1VOSUNPREUtMS0xLVVURi03JzsKCgkJCWNhc2UgJ2NzdW5rbm93bjhiaXQnOgoJCQljYXNlICd1bmtub3duOGJpdCc6CgkJCQlyZXR1cm4gJ1VOS05PV04tOEJJVCc7CgoJCQljYXNlICdhbnNpeDM0MTk2OCc6CgkJCWNhc2UgJ2Fuc2l4MzQxOTg2JzoKCQkJY2FzZSAnYXNjaWknOgoJCQljYXNlICdjcDM2Nyc6CgkJCWNhc2UgJ2NzYXNjaWknOgoJCQljYXNlICdpYm0zNjcnOgoJCQljYXNlICdpc29pcjYnOgoJCQljYXNlICdpc282NDZ1cyc6CgkJCWNhc2UgJ2lzbzY0NmlydjE5OTEnOgoJCQljYXNlICd1cyc6CgkJCWNhc2UgJ3VzYXNjaWknOgoJCQkJcmV0dXJuICdVUy1BU0NJSSc7CgoJCQljYXNlICdjc3VzZGsnOgoJCQljYXNlICd1c2RrJzoKCQkJCXJldHVybiAndXMtZGsnOwoKCQkJY2FzZSAndXRmNyc6CgkJCQlyZXR1cm4gJ1VURi03JzsKCgkJCWNhc2UgJ3V0ZjgnOgoJCQkJcmV0dXJuICdVVEYtOCc7CgoJCQljYXNlICd1dGYxNic6CgkJCQlyZXR1cm4gJ1VURi0xNic7CgoJCQljYXNlICd1dGYxNmJlJzoKCQkJCXJldHVybiAnVVRGLTE2QkUnOwoKCQkJY2FzZSAndXRmMTZsZSc6CgkJCQlyZXR1cm4gJ1VURi0xNkxFJzsKCgkJCWNhc2UgJ3V0ZjMyJzoKCQkJCXJldHVybiAnVVRGLTMyJzsKCgkJCWNhc2UgJ3V0ZjMyYmUnOgoJCQkJcmV0dXJuICdVVEYtMzJCRSc7CgoJCQljYXNlICd1dGYzMmxlJzoKCQkJCXJldHVybiAnVVRGLTMyTEUnOwoKCQkJY2FzZSAnY3N2ZW50dXJhaW50ZXJuYXRpb25hbCc6CgkJCWNhc2UgJ3ZlbnR1cmFpbnRlcm5hdGlvbmFsJzoKCQkJCXJldHVybiAnVmVudHVyYS1JbnRlcm5hdGlvbmFsJzsKCgkJCWNhc2UgJ2NzdmVudHVyYW1hdGgnOgoJCQljYXNlICd2ZW50dXJhbWF0aCc6CgkJCQlyZXR1cm4gJ1ZlbnR1cmEtTWF0aCc7CgoJCQljYXNlICdjc3ZlbnR1cmF1cyc6CgkJCWNhc2UgJ3ZlbnR1cmF1cyc6CgkJCQlyZXR1cm4gJ1ZlbnR1cmEtVVMnOwoKCQkJY2FzZSAnY3Npc283MHZpZGVvdGV4c3VwcDEnOgoJCQljYXNlICdpc29pcjcwJzoKCQkJY2FzZSAndmlkZW90ZXhzdXBwbCc6CgkJCQlyZXR1cm4gJ3ZpZGVvdGV4LXN1cHBsJzsKCgkJCWNhc2UgJ2Nzdmlxcic6CgkJCWNhc2UgJ3ZpcXInOgoJCQkJcmV0dXJuICdWSVFSJzsKCgkJCWNhc2UgJ2NzdmlzY2lpJzoKCQkJY2FzZSAndmlzY2lpJzoKCQkJCXJldHVybiAnVklTQ0lJJzsKCgkJCWNhc2UgJ2Nzd2luZG93czMxaic6CgkJCWNhc2UgJ3dpbmRvd3MzMWonOgoJCQkJcmV0dXJuICdXaW5kb3dzLTMxSic7CgoJCQljYXNlICdpc284ODU5MTEnOgoJCQljYXNlICd0aXM2MjAnOgoJCQkJcmV0dXJuICdXaW5kb3dzLTg3NCc7CgoJCQljYXNlICdjc2V1Y2tyJzoKCQkJY2FzZSAnZXVja3InOgoJCQljYXNlICd3aW5kb3dzOTQ5JzoKCQkJY2FzZSAnY3Nrc2M1NjAxMTk4Nyc6CgkJCWNhc2UgJ2lzb2lyMTQ5JzoKCQkJY2FzZSAna29yZWFuJzoKCQkJY2FzZSAna3NjNTYwMSc6CgkJCWNhc2UgJ2tzYzU2MDExOTg3JzoKCQkJY2FzZSAna3NjNTYwMTE5ODknOgoJCQkJcmV0dXJuICdXaW5kb3dzLTk0OSc7CgoJCQljYXNlICd3aW5kb3dzMTI1MCc6CgkJCQlyZXR1cm4gJ3dpbmRvd3MtMTI1MCc7CgoJCQljYXNlICd3aW5kb3dzMTI1MSc6CgkJCQlyZXR1cm4gJ3dpbmRvd3MtMTI1MSc7CgoJCQljYXNlICdjcDgxOSc6CgkJCWNhc2UgJ2NzaXNvbGF0aW4xJzoKCQkJY2FzZSAnaWJtODE5JzoKCQkJY2FzZSAnaXNvODg1OTEnOgoJCQljYXNlICdpc29pcjEwMCc6CgkJCWNhc2UgJ2lzbzg4NTkxMTk4Nyc6CgkJCWNhc2UgJ2wxJzoKCQkJY2FzZSAnbGF0aW4xJzoKCQkJY2FzZSAnd2luZG93czEyNTInOgoJCQkJcmV0dXJuICdXaW5kb3dzLTEyNTInOwoKCQkJY2FzZSAnd2luZG93czEyNTInOgoJCQkJcmV0dXJuICd3aW5kb3dzLTEyNTInOwoKCQkJY2FzZSAnd2luZG93czEyNTMnOgoJCQkJcmV0dXJuICd3aW5kb3dzLTEyNTMnOwoKCQkJY2FzZSAnY3Npc29sYXRpbjUnOgoJCQljYXNlICdpc284ODU5OSc6CgkJCWNhc2UgJ2lzb2lyMTQ4JzoKCQkJY2FzZSAnaXNvODg1OTkxOTg5JzoKCQkJY2FzZSAnbDUnOgoJCQljYXNlICdsYXRpbjUnOgoJCQljYXNlICd3aW5kb3dzMTI1NCc6CgkJCQlyZXR1cm4gJ1dpbmRvd3MtMTI1NCc7CgoJCQljYXNlICd3aW5kb3dzMTI1NCc6CgkJCQlyZXR1cm4gJ3dpbmRvd3MtMTI1NCc7CgoJCQljYXNlICd3aW5kb3dzMTI1NSc6CgkJCQlyZXR1cm4gJ3dpbmRvd3MtMTI1NSc7CgoJCQljYXNlICd3aW5kb3dzMTI1Nic6CgkJCQlyZXR1cm4gJ3dpbmRvd3MtMTI1Nic7CgoJCQljYXNlICd3aW5kb3dzMTI1Nyc6CgkJCQlyZXR1cm4gJ3dpbmRvd3MtMTI1Nyc7CgoJCQljYXNlICd3aW5kb3dzMTI1OCc6CgkJCQlyZXR1cm4gJ3dpbmRvd3MtMTI1OCc7CgoJCQlkZWZhdWx0OgoJCQkJcmV0dXJuICRjaGFyc2V0OwoJCX0KCX0KCglmdW5jdGlvbiBnZXRfY3VybF92ZXJzaW9uKCkKCXsKCQlpZiAoaXNfYXJyYXkoJGN1cmwgPSBjdXJsX3ZlcnNpb24oKSkpCgkJewoJCQkkY3VybCA9ICRjdXJsWyd2ZXJzaW9uJ107CgkJfQoJCWVsc2VpZiAoc3Vic3RyKCRjdXJsLCAwLCA1KSA9PSAnY3VybC8nKQoJCXsKCQkJJGN1cmwgPSBzdWJzdHIoJGN1cmwsIDUsIHN0cmNzcG4oJGN1cmwsICJceDA5XHgwQVx4MEJceDBDXHgwRCIsIDUpKTsKCQl9CgkJZWxzZWlmIChzdWJzdHIoJGN1cmwsIDAsIDgpID09ICdsaWJjdXJsLycpCgkJewoJCQkkY3VybCA9IHN1YnN0cigkY3VybCwgOCwgc3RyY3NwbigkY3VybCwgIlx4MDlceDBBXHgwQlx4MENceDBEIiwgOCkpOwoJCX0KCQllbHNlCgkJewoJCQkkY3VybCA9IDA7CgkJfQoJCXJldHVybiAkY3VybDsKCX0KCglmdW5jdGlvbiBpc19zdWJjbGFzc19vZigkY2xhc3MxLCAkY2xhc3MyKQoJewoJCWlmIChmdW5jX251bV9hcmdzKCkgIT0gMikKCQl7CgkJCXRyaWdnZXJfZXJyb3IoJ1dyb25nIHBhcmFtZXRlciBjb3VudCBmb3IgU2ltcGxlUGllX01pc2M6OmlzX3N1YmNsYXNzX29mKCknLCBFX1VTRVJfV0FSTklORyk7CgkJfQoJCWVsc2VpZiAodmVyc2lvbl9jb21wYXJlKFBIUF9WRVJTSU9OLCAnNS4wLjMnLCAnPj0nKSB8fCBpc19vYmplY3QoJGNsYXNzMSkpCgkJewoJCQlyZXR1cm4gaXNfc3ViY2xhc3Nfb2YoJGNsYXNzMSwgJGNsYXNzMik7CgkJfQoJCWVsc2VpZiAoaXNfc3RyaW5nKCRjbGFzczEpICYmIGlzX3N0cmluZygkY2xhc3MyKSkKCQl7CgkJCWlmIChjbGFzc19leGlzdHMoJGNsYXNzMSkpCgkJCXsKCQkJCWlmIChjbGFzc19leGlzdHMoJGNsYXNzMikpCgkJCQl7CgkJCQkJJGNsYXNzMiA9IHN0cnRvbG93ZXIoJGNsYXNzMik7CgkJCQkJd2hpbGUgKCRjbGFzczEgPSBzdHJ0b2xvd2VyKGdldF9wYXJlbnRfY2xhc3MoJGNsYXNzMSkpKQoJCQkJCXsKCQkJCQkJaWYgKCRjbGFzczEgPT0gJGNsYXNzMikKCQkJCQkJewoJCQkJCQkJcmV0dXJuIHRydWU7CgkJCQkJCX0KCQkJCQl9CgkJCQl9CgkJCX0KCQkJZWxzZQoJCQl7CgkJCQl0cmlnZ2VyX2Vycm9yKCdVbmtub3duIGNsYXNzIHBhc3NlZCBhcyBwYXJhbWV0ZXInLCBFX1VTRVJfV0FSTk5HKTsKCQkJfQoJCX0KCQlyZXR1cm4gZmFsc2U7Cgl9CgoJLyoqCgkgKiBTdHJpcCBIVE1MIGNvbW1lbnRzCgkgKgoJICogQGFjY2VzcyBwdWJsaWMKCSAqIEBwYXJhbSBzdHJpbmcgJGRhdGEgRGF0YSB0byBzdHJpcCBjb21tZW50cyBmcm9tCgkgKiBAcmV0dXJuIHN0cmluZyBDb21tZW50IHN0cmlwcGVkIHN0cmluZwoJICovCglmdW5jdGlvbiBzdHJpcF9jb21tZW50cygkZGF0YSkKCXsKCQkkb3V0cHV0ID0gJyc7CgkJd2hpbGUgKCgkc3RhcnQgPSBzdHJwb3MoJGRhdGEsICc8IS0tJykpICE9PSBmYWxzZSkKCQl7CgkJCSRvdXRwdXQgLj0gc3Vic3RyKCRkYXRhLCAwLCAkc3RhcnQpOwoJCQlpZiAoKCRlbmQgPSBzdHJwb3MoJGRhdGEsICctLT4nLCAkc3RhcnQpKSAhPT0gZmFsc2UpCgkJCXsKCQkJCSRkYXRhID0gc3Vic3RyX3JlcGxhY2UoJGRhdGEsICcnLCAwLCAkZW5kICsgMyk7CgkJCX0KCQkJZWxzZQoJCQl7CgkJCQkkZGF0YSA9ICcnOwoJCQl9CgkJfQoJCXJldHVybiAkb3V0cHV0IC4gJGRhdGE7Cgl9CgoJZnVuY3Rpb24gcGFyc2VfZGF0ZSgkZHQpCgl7CgkJJHBhcnNlciA9IFNpbXBsZVBpZV9QYXJzZV9EYXRlOjpnZXQoKTsKCQlyZXR1cm4gJHBhcnNlci0+cGFyc2UoJGR0KTsKCX0KCgkvKioKCSAqIERlY29kZSBIVE1MIGVudGl0aWVzCgkgKgoJICogQHN0YXRpYwoJICogQGFjY2VzcyBwdWJsaWMKCSAqIEBwYXJhbSBzdHJpbmcgJGRhdGEgSW5wdXQgZGF0YQoJICogQHJldHVybiBzdHJpbmcgT3V0cHV0IGRhdGEKCSAqLwoJZnVuY3Rpb24gZW50aXRpZXNfZGVjb2RlKCRkYXRhKQoJewoJCSRkZWNvZGVyID0gbmV3IFNpbXBsZVBpZV9EZWNvZGVfSFRNTF9FbnRpdGllcygkZGF0YSk7CgkJcmV0dXJuICRkZWNvZGVyLT5wYXJzZSgpOwoJfQoKCS8qKgoJICogUmVtb3ZlIFJGQzgyMiBjb21tZW50cwoJICoKCSAqIEBhY2Nlc3MgcHVibGljCgkgKiBAcGFyYW0gc3RyaW5nICRkYXRhIERhdGEgdG8gc3RyaXAgY29tbWVudHMgZnJvbQoJICogQHJldHVybiBzdHJpbmcgQ29tbWVudCBzdHJpcHBlZCBzdHJpbmcKCSAqLwoJZnVuY3Rpb24gdW5jb21tZW50X3JmYzgyMigkc3RyaW5nKQoJewoJCSRzdHJpbmcgPSAoc3RyaW5nKSAkc3RyaW5nOwoJCSRwb3NpdGlvbiA9IDA7CgkJJGxlbmd0aCA9IHN0cmxlbigkc3RyaW5nKTsKCQkkZGVwdGggPSAwOwoKCQkkb3V0cHV0ID0gJyc7CgoJCXdoaWxlICgkcG9zaXRpb24gPCAkbGVuZ3RoICYmICgkcG9zID0gc3RycG9zKCRzdHJpbmcsICcoJywgJHBvc2l0aW9uKSkgIT09IGZhbHNlKQoJCXsKCQkJJG91dHB1dCAuPSBzdWJzdHIoJHN0cmluZywgJHBvc2l0aW9uLCAkcG9zIC0gJHBvc2l0aW9uKTsKCQkJJHBvc2l0aW9uID0gJHBvcyArIDE7CgkJCWlmICgkc3RyaW5nWyRwb3MgLSAxXSAhPT0gJ1xcJykKCQkJewoJCQkJJGRlcHRoKys7CgkJCQl3aGlsZSAoJGRlcHRoICYmICRwb3NpdGlvbiA8ICRsZW5ndGgpCgkJCQl7CgkJCQkJJHBvc2l0aW9uICs9IHN0cmNzcG4oJHN0cmluZywgJygpJywgJHBvc2l0aW9uKTsKCQkJCQlpZiAoJHN0cmluZ1skcG9zaXRpb24gLSAxXSA9PT0gJ1xcJykKCQkJCQl7CgkJCQkJCSRwb3NpdGlvbisrOwoJCQkJCQljb250aW51ZTsKCQkJCQl9CgkJCQkJZWxzZWlmIChpc3NldCgkc3RyaW5nWyRwb3NpdGlvbl0pKQoJCQkJCXsKCQkJCQkJc3dpdGNoICgkc3RyaW5nWyRwb3NpdGlvbl0pCgkJCQkJCXsKCQkJCQkJCWNhc2UgJygnOgoJCQkJCQkJCSRkZXB0aCsrOwoJCQkJCQkJCWJyZWFrOwoKCQkJCQkJCWNhc2UgJyknOgoJCQkJCQkJCSRkZXB0aC0tOwoJCQkJCQkJCWJyZWFrOwoJCQkJCQl9CgkJCQkJCSRwb3NpdGlvbisrOwoJCQkJCX0KCQkJCQllbHNlCgkJCQkJewoJCQkJCQlicmVhazsKCQkJCQl9CgkJCQl9CgkJCX0KCQkJZWxzZQoJCQl7CgkJCQkkb3V0cHV0IC49ICcoJzsKCQkJfQoJCX0KCQkkb3V0cHV0IC49IHN1YnN0cigkc3RyaW5nLCAkcG9zaXRpb24pOwoKCQlyZXR1cm4gJG91dHB1dDsKCX0KCglmdW5jdGlvbiBwYXJzZV9taW1lKCRtaW1lKQoJewoJCWlmICgoJHBvcyA9IHN0cnBvcygkbWltZSwgJzsnKSkgPT09IGZhbHNlKQoJCXsKCQkJcmV0dXJuIHRyaW0oJG1pbWUpOwoJCX0KCQllbHNlCgkJewoJCQlyZXR1cm4gdHJpbShzdWJzdHIoJG1pbWUsIDAsICRwb3MpKTsKCQl9Cgl9CgoJZnVuY3Rpb24gaHRtbHNwZWNpYWxjaGFyc19kZWNvZGUoJHN0cmluZywgJHF1b3RlX3N0eWxlKQoJewoJCWlmIChmdW5jdGlvbl9leGlzdHMoJ2h0bWxzcGVjaWFsY2hhcnNfZGVjb2RlJykpCgkJewoJCQlyZXR1cm4gaHRtbHNwZWNpYWxjaGFyc19kZWNvZGUoJHN0cmluZywgJHF1b3RlX3N0eWxlKTsKCQl9CgkJZWxzZQoJCXsKCQkJcmV0dXJuIHN0cnRyKCRzdHJpbmcsIGFycmF5X2ZsaXAoZ2V0X2h0bWxfdHJhbnNsYXRpb25fdGFibGUoSFRNTF9TUEVDSUFMQ0hBUlMsICRxdW90ZV9zdHlsZSkpKTsKCQl9Cgl9CgoJZnVuY3Rpb24gYXRvbV8wM19jb25zdHJ1Y3RfdHlwZSgkYXR0cmlicykKCXsKCQlpZiAoaXNzZXQoJGF0dHJpYnNbJyddWydtb2RlJ10pICYmIHN0cnRvbG93ZXIodHJpbSgkYXR0cmlic1snJ11bJ21vZGUnXSkgPT0gJ2Jhc2U2NCcpKQoJCXsKCQkJJG1vZGUgPSBTSU1QTEVQSUVfQ09OU1RSVUNUX0JBU0U2NDsKCQl9CgkJZWxzZQoJCXsKCQkJJG1vZGUgPSBTSU1QTEVQSUVfQ09OU1RSVUNUX05PTkU7CgkJfQoJCWlmIChpc3NldCgkYXR0cmlic1snJ11bJ3R5cGUnXSkpCgkJewoJCQlzd2l0Y2ggKHN0cnRvbG93ZXIodHJpbSgkYXR0cmlic1snJ11bJ3R5cGUnXSkpKQoJCQl7CgkJCQljYXNlICd0ZXh0JzoKCQkJCWNhc2UgJ3RleHQvcGxhaW4nOgoJCQkJCXJldHVybiBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQgfCAkbW9kZTsKCgkJCQljYXNlICdodG1sJzoKCQkJCWNhc2UgJ3RleHQvaHRtbCc6CgkJCQkJcmV0dXJuIFNJTVBMRVBJRV9DT05TVFJVQ1RfSFRNTCB8ICRtb2RlOwoKCQkJCWNhc2UgJ3hodG1sJzoKCQkJCWNhc2UgJ2FwcGxpY2F0aW9uL3hodG1sK3htbCc6CgkJCQkJcmV0dXJuIFNJTVBMRVBJRV9DT05TVFJVQ1RfWEhUTUwgfCAkbW9kZTsKCgkJCQlkZWZhdWx0OgoJCQkJCXJldHVybiBTSU1QTEVQSUVfQ09OU1RSVUNUX05PTkUgfCAkbW9kZTsKCQkJfQoJCX0KCQllbHNlCgkJewoJCQlyZXR1cm4gU0lNUExFUElFX0NPTlNUUlVDVF9URVhUIHwgJG1vZGU7CgkJfQoJfQoKCWZ1bmN0aW9uIGF0b21fMTBfY29uc3RydWN0X3R5cGUoJGF0dHJpYnMpCgl7CgkJaWYgKGlzc2V0KCRhdHRyaWJzWycnXVsndHlwZSddKSkKCQl7CgkJCXN3aXRjaCAoc3RydG9sb3dlcih0cmltKCRhdHRyaWJzWycnXVsndHlwZSddKSkpCgkJCXsKCQkJCWNhc2UgJ3RleHQnOgoJCQkJCXJldHVybiBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQ7CgoJCQkJY2FzZSAnaHRtbCc6CgkJCQkJcmV0dXJuIFNJTVBMRVBJRV9DT05TVFJVQ1RfSFRNTDsKCgkJCQljYXNlICd4aHRtbCc6CgkJCQkJcmV0dXJuIFNJTVBMRVBJRV9DT05TVFJVQ1RfWEhUTUw7CgoJCQkJZGVmYXVsdDoKCQkJCQlyZXR1cm4gU0lNUExFUElFX0NPTlNUUlVDVF9OT05FOwoJCQl9CgkJfQoJCXJldHVybiBTSU1QTEVQSUVfQ09OU1RSVUNUX1RFWFQ7Cgl9CgoJZnVuY3Rpb24gYXRvbV8xMF9jb250ZW50X2NvbnN0cnVjdF90eXBlKCRhdHRyaWJzKQoJewoJCWlmIChpc3NldCgkYXR0cmlic1snJ11bJ3R5cGUnXSkpCgkJewoJCQkkdHlwZSA9IHN0cnRvbG93ZXIodHJpbSgkYXR0cmlic1snJ11bJ3R5cGUnXSkpOwoJCQlzd2l0Y2ggKCR0eXBlKQoJCQl7CgkJCQljYXNlICd0ZXh0JzoKCQkJCQlyZXR1cm4gU0lNUExFUElFX0NPTlNUUlVDVF9URVhUOwoKCQkJCWNhc2UgJ2h0bWwnOgoJCQkJCXJldHVybiBTSU1QTEVQSUVfQ09OU1RSVUNUX0hUTUw7CgoJCQkJY2FzZSAneGh0bWwnOgoJCQkJCXJldHVybiBTSU1QTEVQSUVfQ09OU1RSVUNUX1hIVE1MOwoJCQl9CgkJCWlmIChpbl9hcnJheShzdWJzdHIoJHR5cGUsIC00KSwgYXJyYXkoJyt4bWwnLCAnL3htbCcpKSB8fCBzdWJzdHIoJHR5cGUsIDAsIDUpID09ICd0ZXh0LycpCgkJCXsKCQkJCXJldHVybiBTSU1QTEVQSUVfQ09OU1RSVUNUX05PTkU7CgkJCX0KCQkJZWxzZQoJCQl7CgkJCQlyZXR1cm4gU0lNUExFUElFX0NPTlNUUlVDVF9CQVNFNjQ7CgkJCX0KCQl9CgkJZWxzZQoJCXsKCQkJcmV0dXJuIFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVDsKCQl9Cgl9CgoJZnVuY3Rpb24gaXNfaXNlZ21lbnRfbnpfbmMoJHN0cmluZykKCXsKCQlyZXR1cm4gKGJvb2wpIHByZWdfbWF0Y2goJy9eKFtBLVphLXowLTlcLS5fflx4e0EwfS1ceHtEN0ZGfVx4e0Y5MDB9LVx4e0ZEQ0Z9XHh7RkRGMH0tXHh7RkZFRn1ceHsxMDAwMH0tXHh7MUZGRkR9XHh7MjAwMDB9LVx4ezJGRkZEfVx4ezMwMDAwfS1ceHszRkZGRH1ceHs0MDAwMH0tXHh7NEZGRkR9XHh7NTAwMDB9LVx4ezVGRkZEfVx4ezYwMDAwfS1ceHs2RkZGRH1ceHs3MDAwMH0tXHh7N0ZGRkR9XHh7ODAwMDB9LVx4ezhGRkZEfVx4ezkwMDAwfS1ceHs5RkZGRH1ceHtBMDAwMH0tXHh7QUZGRkR9XHh7QjAwMDB9LVx4e0JGRkZEfVx4e0MwMDAwfS1ceHtDRkZGRH1ceHtEMDAwMH0tXHh7REZGRkR9XHh7RTEwMDB9LVx4e0VGRkZEfSEkJlwnKCkqKyw7PUBdfCglWzAtOUFCQ0RFRl17Mn0pKSskL3UnLCAkc3RyaW5nKTsKCX0KCglmdW5jdGlvbiBzcGFjZV9zZXBlcmF0ZWRfdG9rZW5zKCRzdHJpbmcpCgl7CgkJJHNwYWNlX2NoYXJhY3RlcnMgPSAiXHgyMFx4MDlceDBBXHgwQlx4MENceDBEIjsKCQkkc3RyaW5nX2xlbmd0aCA9IHN0cmxlbigkc3RyaW5nKTsKCgkJJHBvc2l0aW9uID0gc3Ryc3BuKCRzdHJpbmcsICRzcGFjZV9jaGFyYWN0ZXJzKTsKCQkkdG9rZW5zID0gYXJyYXkoKTsKCgkJd2hpbGUgKCRwb3NpdGlvbiA8ICRzdHJpbmdfbGVuZ3RoKQoJCXsKCQkJJGxlbiA9IHN0cmNzcG4oJHN0cmluZywgJHNwYWNlX2NoYXJhY3RlcnMsICRwb3NpdGlvbik7CgkJCSR0b2tlbnNbXSA9IHN1YnN0cigkc3RyaW5nLCAkcG9zaXRpb24sICRsZW4pOwoJCQkkcG9zaXRpb24gKz0gJGxlbjsKCQkJJHBvc2l0aW9uICs9IHN0cnNwbigkc3RyaW5nLCAkc3BhY2VfY2hhcmFjdGVycywgJHBvc2l0aW9uKTsKCQl9CgoJCXJldHVybiAkdG9rZW5zOwoJfQoKCWZ1bmN0aW9uIGFycmF5X3VuaXF1ZSgkYXJyYXkpCgl7CgkJaWYgKHZlcnNpb25fY29tcGFyZShQSFBfVkVSU0lPTiwgJzUuMicsICc+PScpKQoJCXsKCQkJcmV0dXJuIGFycmF5X3VuaXF1ZSgkYXJyYXkpOwoJCX0KCQllbHNlCgkJewoJCQkkYXJyYXkgPSAoYXJyYXkpICRhcnJheTsKCQkJJG5ld19hcnJheSA9IGFycmF5KCk7CgkJCSRuZXdfYXJyYXlfc3RyaW5ncyA9IGFycmF5KCk7CgkJCWZvcmVhY2ggKCRhcnJheSBhcyAka2V5ID0+ICR2YWx1ZSkKCQkJewoJCQkJaWYgKGlzX29iamVjdCgkdmFsdWUpKQoJCQkJewoJCQkJCWlmIChtZXRob2RfZXhpc3RzKCR2YWx1ZSwgJ19fdG9TdHJpbmcnKSkKCQkJCQl7CgkJCQkJCSRjbXAgPSAkdmFsdWUtPl9fdG9TdHJpbmcoKTsKCQkJCQl9CgkJCQkJZWxzZQoJCQkJCXsKCQkJCQkJdHJpZ2dlcl9lcnJvcignT2JqZWN0IG9mIGNsYXNzICcgLiBnZXRfY2xhc3MoJHZhbHVlKSAuICcgY291bGQgbm90IGJlIGNvbnZlcnRlZCB0byBzdHJpbmcnLCBFX1VTRVJfRVJST1IpOwoJCQkJCX0KCQkJCX0KCQkJCWVsc2VpZiAoaXNfYXJyYXkoJHZhbHVlKSkKCQkJCXsKCQkJCQkkY21wID0gKHN0cmluZykgcmVzZXQoJHZhbHVlKTsKCQkJCX0KCQkJCWVsc2UKCQkJCXsKCQkJCQkkY21wID0gKHN0cmluZykgJHZhbHVlOwoJCQkJfQoJCQkJaWYgKCFpbl9hcnJheSgkY21wLCAkbmV3X2FycmF5X3N0cmluZ3MpKQoJCQkJewoJCQkJCSRuZXdfYXJyYXlbJGtleV0gPSAkdmFsdWU7CgkJCQkJJG5ld19hcnJheV9zdHJpbmdzW10gPSAkY21wOwoJCQkJfQoJCQl9CgkJCXJldHVybiAkbmV3X2FycmF5OwoJCX0KCX0KCgkvKioKCSAqIENvbnZlcnRzIGEgdW5pY29kZSBjb2RlcG9pbnQgdG8gYSBVVEYtOCBjaGFyYWN0ZXIKCSAqCgkgKiBAc3RhdGljCgkgKiBAYWNjZXNzIHB1YmxpYwoJICogQHBhcmFtIGludCAkY29kZXBvaW50IFVuaWNvZGUgY29kZXBvaW50CgkgKiBAcmV0dXJuIHN0cmluZyBVVEYtOCBjaGFyYWN0ZXIKCSAqLwoJZnVuY3Rpb24gY29kZXBvaW50X3RvX3V0ZjgoJGNvZGVwb2ludCkKCXsKCQlzdGF0aWMgJGNhY2hlID0gYXJyYXkoKTsKCQkkY29kZXBvaW50ID0gKGludCkgJGNvZGVwb2ludDsKCQlpZiAoaXNzZXQoJGNhY2hlWyRjb2RlcG9pbnRdKSkKCQl7CgkJCXJldHVybiAkY2FjaGVbJGNvZGVwb2ludF07CgkJfQoJCWVsc2VpZiAoJGNvZGVwb2ludCA8IDApCgkJewoJCQlyZXR1cm4gJGNhY2hlWyRjb2RlcG9pbnRdID0gZmFsc2U7CgkJfQoJCWVsc2UgaWYgKCRjb2RlcG9pbnQgPD0gMHg3ZikKCQl7CgkJCXJldHVybiAkY2FjaGVbJGNvZGVwb2ludF0gPSBjaHIoJGNvZGVwb2ludCk7CgkJfQoJCWVsc2UgaWYgKCRjb2RlcG9pbnQgPD0gMHg3ZmYpCgkJewoJCQlyZXR1cm4gJGNhY2hlWyRjb2RlcG9pbnRdID0gY2hyKDB4YzAgfCAoJGNvZGVwb2ludCA+PiA2KSkgLiBjaHIoMHg4MCB8ICgkY29kZXBvaW50ICYgMHgzZikpOwoJCX0KCQllbHNlIGlmICgkY29kZXBvaW50IDw9IDB4ZmZmZikKCQl7CgkJCXJldHVybiAkY2FjaGVbJGNvZGVwb2ludF0gPSBjaHIoMHhlMCB8ICgkY29kZXBvaW50ID4+IDEyKSkgLiBjaHIoMHg4MCB8ICgoJGNvZGVwb2ludCA+PiA2KSAmIDB4M2YpKSAuIGNocigweDgwIHwgKCRjb2RlcG9pbnQgJiAweDNmKSk7CgkJfQoJCWVsc2UgaWYgKCRjb2RlcG9pbnQgPD0gMHgxMGZmZmYpCgkJewoJCQlyZXR1cm4gJGNhY2hlWyRjb2RlcG9pbnRdID0gY2hyKDB4ZjAgfCAoJGNvZGVwb2ludCA+PiAxOCkpIC4gY2hyKDB4ODAgfCAoKCRjb2RlcG9pbnQgPj4gMTIpICYgMHgzZikpIC4gY2hyKDB4ODAgfCAoKCRjb2RlcG9pbnQgPj4gNikgJiAweDNmKSkgLiBjaHIoMHg4MCB8ICgkY29kZXBvaW50ICYgMHgzZikpOwoJCX0KCQllbHNlCgkJewoJCQkvLyBVK0ZGRkQgUkVQTEFDRU1FTlQgQ0hBUkFDVEVSCgkJCXJldHVybiAkY2FjaGVbJGNvZGVwb2ludF0gPSAiXHhFRlx4QkZceEJEIjsKCQl9Cgl9CgoJLyoqCgkgKiBSZS1pbXBsZW1lbnRhdGlvbiBvZiBQSFAgNSdzIHN0cmlwb3MoKQoJICoKCSAqIFJldHVybnMgdGhlIG51bWVyaWMgcG9zaXRpb24gb2YgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgbmVlZGxlIGluIHRoZQoJICogaGF5c3RhY2sgc3RyaW5nLgoJICoKCSAqIEBzdGF0aWMKCSAqIEBhY2Nlc3Mgc3RyaW5nCgkgKiBAcGFyYW0gb2JqZWN0ICRoYXlzdGFjawoJICogQHBhcmFtIHN0cmluZyAkbmVlZGxlIE5vdGUgdGhhdCB0aGUgbmVlZGxlIG1heSBiZSBhIHN0cmluZyBvZiBvbmUgb3IgbW9yZQoJICogICAgIGNoYXJhY3RlcnMuIElmIG5lZWRsZSBpcyBub3QgYSBzdHJpbmcsIGl0IGlzIGNvbnZlcnRlZCB0byBhbiBpbnRlZ2VyCgkgKiAgICAgYW5kIGFwcGxpZWQgYXMgdGhlIG9yZGluYWwgdmFsdWUgb2YgYSBjaGFyYWN0ZXIuCgkgKiBAcGFyYW0gaW50ICRvZmZzZXQgVGhlIG9wdGlvbmFsIG9mZnNldCBwYXJhbWV0ZXIgYWxsb3dzIHlvdSB0byBzcGVjaWZ5IHdoaWNoCgkgKiAgICAgY2hhcmFjdGVyIGluIGhheXN0YWNrIHRvIHN0YXJ0IHNlYXJjaGluZy4gVGhlIHBvc2l0aW9uIHJldHVybmVkIGlzIHN0aWxsCgkgKiAgICAgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZyBvZiBoYXlzdGFjay4KCSAqIEByZXR1cm4gYm9vbCBJZiBuZWVkbGUgaXMgbm90IGZvdW5kLCBzdHJpcG9zKCkgd2lsbCByZXR1cm4gYm9vbGVhbiBmYWxzZS4KCSAqLwoJZnVuY3Rpb24gc3RyaXBvcygkaGF5c3RhY2ssICRuZWVkbGUsICRvZmZzZXQgPSAwKQoJewoJCWlmIChmdW5jdGlvbl9leGlzdHMoJ3N0cmlwb3MnKSkKCQl7CgkJCXJldHVybiBzdHJpcG9zKCRoYXlzdGFjaywgJG5lZWRsZSwgJG9mZnNldCk7CgkJfQoJCWVsc2UKCQl7CgkJCWlmIChpc19zdHJpbmcoJG5lZWRsZSkpCgkJCXsKCQkJCSRuZWVkbGUgPSBzdHJ0b2xvd2VyKCRuZWVkbGUpOwoJCQl9CgkJCWVsc2VpZiAoaXNfaW50KCRuZWVkbGUpIHx8IGlzX2Jvb2woJG5lZWRsZSkgfHwgaXNfZG91YmxlKCRuZWVkbGUpKQoJCQl7CgkJCQkkbmVlZGxlID0gc3RydG9sb3dlcihjaHIoJG5lZWRsZSkpOwoJCQl9CgkJCWVsc2UKCQkJewoJCQkJdHJpZ2dlcl9lcnJvcignbmVlZGxlIGlzIG5vdCBhIHN0cmluZyBvciBhbiBpbnRlZ2VyJywgRV9VU0VSX1dBUk5JTkcpOwoJCQkJcmV0dXJuIGZhbHNlOwoJCQl9CgoJCQlyZXR1cm4gc3RycG9zKHN0cnRvbG93ZXIoJGhheXN0YWNrKSwgJG5lZWRsZSwgJG9mZnNldCk7CgkJfQoJfQoKCS8qKgoJICogU2ltaWxhciB0byBwYXJzZV9zdHIoKQoJICoKCSAqIFJldHVybnMgYW4gYXNzb2NpYXRpdmUgYXJyYXkgb2YgbmFtZS92YWx1ZSBwYWlycywgd2hlcmUgdGhlIHZhbHVlIGlzIGFuCgkgKiBhcnJheSBvZiB2YWx1ZXMgdGhhdCBoYXZlIHVzZWQgdGhlIHNhbWUgbmFtZQoJICoKCSAqIEBzdGF0aWMKCSAqIEBhY2Nlc3Mgc3RyaW5nCgkgKiBAcGFyYW0gc3RyaW5nICRzdHIgVGhlIGlucHV0IHN0cmluZy4KCSAqIEByZXR1cm4gYXJyYXkKCSAqLwoJZnVuY3Rpb24gcGFyc2Vfc3RyKCRzdHIpCgl7CgkJJHJldHVybiA9IGFycmF5KCk7CgkJJHN0ciA9IGV4cGxvZGUoJyYnLCAkc3RyKTsKCgkJZm9yZWFjaCAoJHN0ciBhcyAkc2VjdGlvbikKCQl7CgkJCWlmIChzdHJwb3MoJHNlY3Rpb24sICc9JykgIT09IGZhbHNlKQoJCQl7CgkJCQlsaXN0KCRuYW1lLCAkdmFsdWUpID0gZXhwbG9kZSgnPScsICRzZWN0aW9uLCAyKTsKCQkJCSRyZXR1cm5bdXJsZGVjb2RlKCRuYW1lKV1bXSA9IHVybGRlY29kZSgkdmFsdWUpOwoJCQl9CgkJCWVsc2UKCQkJewoJCQkJJHJldHVyblt1cmxkZWNvZGUoJHNlY3Rpb24pXVtdID0gbnVsbDsKCQkJfQoJCX0KCgkJcmV0dXJuICRyZXR1cm47Cgl9CgoJLyoqCgkgKiBEZXRlY3QgWE1MIGVuY29kaW5nLCBhcyBwZXIgWE1MIDEuMCBBcHBlbmRpeCBGLjEKCSAqCgkgKiBAdG9kbyBBZGQgc3VwcG9ydCBmb3IgRUJDRElDCgkgKiBAcGFyYW0gc3RyaW5nICRkYXRhIFhNTCBkYXRhCgkgKiBAcmV0dXJuIGFycmF5IFBvc3NpYmxlIGVuY29kaW5ncwoJICovCglmdW5jdGlvbiB4bWxfZW5jb2RpbmcoJGRhdGEpCgl7CgkJLy8gVVRGLTMyIEJpZyBFbmRpYW4gQk9NCgkJaWYgKHN1YnN0cigkZGF0YSwgMCwgNCkgPT09ICJceDAwXHgwMFx4RkVceEZGIikKCQl7CgkJCSRlbmNvZGluZ1tdID0gJ1VURi0zMkJFJzsKCQl9CgkJLy8gVVRGLTMyIExpdHRsZSBFbmRpYW4gQk9NCgkJZWxzZWlmIChzdWJzdHIoJGRhdGEsIDAsIDQpID09PSAiXHhGRlx4RkVceDAwXHgwMCIpCgkJewoJCQkkZW5jb2RpbmdbXSA9ICdVVEYtMzJMRSc7CgkJfQoJCS8vIFVURi0xNiBCaWcgRW5kaWFuIEJPTQoJCWVsc2VpZiAoc3Vic3RyKCRkYXRhLCAwLCAyKSA9PT0gIlx4RkVceEZGIikKCQl7CgkJCSRlbmNvZGluZ1tdID0gJ1VURi0xNkJFJzsKCQl9CgkJLy8gVVRGLTE2IExpdHRsZSBFbmRpYW4gQk9NCgkJZWxzZWlmIChzdWJzdHIoJGRhdGEsIDAsIDIpID09PSAiXHhGRlx4RkUiKQoJCXsKCQkJJGVuY29kaW5nW10gPSAnVVRGLTE2TEUnOwoJCX0KCQkvLyBVVEYtOCBCT00KCQllbHNlaWYgKHN1YnN0cigkZGF0YSwgMCwgMykgPT09ICJceEVGXHhCQlx4QkYiKQoJCXsKCQkJJGVuY29kaW5nW10gPSAnVVRGLTgnOwoJCX0KCQkvLyBVVEYtMzIgQmlnIEVuZGlhbiBXaXRob3V0IEJPTQoJCWVsc2VpZiAoc3Vic3RyKCRkYXRhLCAwLCAyMCkgPT09ICJceDAwXHgwMFx4MDBceDNDXHgwMFx4MDBceDAwXHgzRlx4MDBceDAwXHgwMFx4NzhceDAwXHgwMFx4MDBceDZEXHgwMFx4MDBceDAwXHg2QyIpCgkJewoJCQlpZiAoJHBvcyA9IHN0cnBvcygkZGF0YSwgIlx4MDBceDAwXHgwMFx4M0ZceDAwXHgwMFx4MDBceDNFIikpCgkJCXsKCQkJCSRwYXJzZXIgPSBuZXcgU2ltcGxlUGllX1hNTF9EZWNsYXJhdGlvbl9QYXJzZXIoU2ltcGxlUGllX01pc2M6OmNoYW5nZV9lbmNvZGluZyhzdWJzdHIoJGRhdGEsIDIwLCAkcG9zIC0gMjApLCAnVVRGLTMyQkUnLCAnVVRGLTgnKSk7CgkJCQlpZiAoJHBhcnNlci0+cGFyc2UoKSkKCQkJCXsKCQkJCQkkZW5jb2RpbmdbXSA9ICRwYXJzZXItPmVuY29kaW5nOwoJCQkJfQoJCQl9CgkJCSRlbmNvZGluZ1tdID0gJ1VURi0zMkJFJzsKCQl9CgkJLy8gVVRGLTMyIExpdHRsZSBFbmRpYW4gV2l0aG91dCBCT00KCQllbHNlaWYgKHN1YnN0cigkZGF0YSwgMCwgMjApID09PSAiXHgzQ1x4MDBceDAwXHgwMFx4M0ZceDAwXHgwMFx4MDBceDc4XHgwMFx4MDBceDAwXHg2RFx4MDBceDAwXHgwMFx4NkNceDAwXHgwMFx4MDAiKQoJCXsKCQkJaWYgKCRwb3MgPSBzdHJwb3MoJGRhdGEsICJceDNGXHgwMFx4MDBceDAwXHgzRVx4MDBceDAwXHgwMCIpKQoJCQl7CgkJCQkkcGFyc2VyID0gbmV3IFNpbXBsZVBpZV9YTUxfRGVjbGFyYXRpb25fUGFyc2VyKFNpbXBsZVBpZV9NaXNjOjpjaGFuZ2VfZW5jb2Rpbmcoc3Vic3RyKCRkYXRhLCAyMCwgJHBvcyAtIDIwKSwgJ1VURi0zMkxFJywgJ1VURi04JykpOwoJCQkJaWYgKCRwYXJzZXItPnBhcnNlKCkpCgkJCQl7CgkJCQkJJGVuY29kaW5nW10gPSAkcGFyc2VyLT5lbmNvZGluZzsKCQkJCX0KCQkJfQoJCQkkZW5jb2RpbmdbXSA9ICdVVEYtMzJMRSc7CgkJfQoJCS8vIFVURi0xNiBCaWcgRW5kaWFuIFdpdGhvdXQgQk9NCgkJZWxzZWlmIChzdWJzdHIoJGRhdGEsIDAsIDEwKSA9PT0gIlx4MDBceDNDXHgwMFx4M0ZceDAwXHg3OFx4MDBceDZEXHgwMFx4NkMiKQoJCXsKCQkJaWYgKCRwb3MgPSBzdHJwb3MoJGRhdGEsICJceDAwXHgzRlx4MDBceDNFIikpCgkJCXsKCQkJCSRwYXJzZXIgPSBuZXcgU2ltcGxlUGllX1hNTF9EZWNsYXJhdGlvbl9QYXJzZXIoU2ltcGxlUGllX01pc2M6OmNoYW5nZV9lbmNvZGluZyhzdWJzdHIoJGRhdGEsIDIwLCAkcG9zIC0gMTApLCAnVVRGLTE2QkUnLCAnVVRGLTgnKSk7CgkJCQlpZiAoJHBhcnNlci0+cGFyc2UoKSkKCQkJCXsKCQkJCQkkZW5jb2RpbmdbXSA9ICRwYXJzZXItPmVuY29kaW5nOwoJCQkJfQoJCQl9CgkJCSRlbmNvZGluZ1tdID0gJ1VURi0xNkJFJzsKCQl9CgkJLy8gVVRGLTE2IExpdHRsZSBFbmRpYW4gV2l0aG91dCBCT00KCQllbHNlaWYgKHN1YnN0cigkZGF0YSwgMCwgMTApID09PSAiXHgzQ1x4MDBceDNGXHgwMFx4NzhceDAwXHg2RFx4MDBceDZDXHgwMCIpCgkJewoJCQlpZiAoJHBvcyA9IHN0cnBvcygkZGF0YSwgIlx4M0ZceDAwXHgzRVx4MDAiKSkKCQkJewoJCQkJJHBhcnNlciA9IG5ldyBTaW1wbGVQaWVfWE1MX0RlY2xhcmF0aW9uX1BhcnNlcihTaW1wbGVQaWVfTWlzYzo6Y2hhbmdlX2VuY29kaW5nKHN1YnN0cigkZGF0YSwgMjAsICRwb3MgLSAxMCksICdVVEYtMTZMRScsICdVVEYtOCcpKTsKCQkJCWlmICgkcGFyc2VyLT5wYXJzZSgpKQoJCQkJewoJCQkJCSRlbmNvZGluZ1tdID0gJHBhcnNlci0+ZW5jb2Rpbmc7CgkJCQl9CgkJCX0KCQkJJGVuY29kaW5nW10gPSAnVVRGLTE2TEUnOwoJCX0KCQkvLyBVUy1BU0NJSSAob3Igc3VwZXJzZXQpCgkJZWxzZWlmIChzdWJzdHIoJGRhdGEsIDAsIDUpID09PSAiXHgzQ1x4M0ZceDc4XHg2RFx4NkMiKQoJCXsKCQkJaWYgKCRwb3MgPSBzdHJwb3MoJGRhdGEsICJceDNGXHgzRSIpKQoJCQl7CgkJCQkkcGFyc2VyID0gbmV3IFNpbXBsZVBpZV9YTUxfRGVjbGFyYXRpb25fUGFyc2VyKHN1YnN0cigkZGF0YSwgNSwgJHBvcyAtIDUpKTsKCQkJCWlmICgkcGFyc2VyLT5wYXJzZSgpKQoJCQkJewoJCQkJCSRlbmNvZGluZ1tdID0gJHBhcnNlci0+ZW5jb2Rpbmc7CgkJCQl9CgkJCX0KCQkJJGVuY29kaW5nW10gPSAnVVRGLTgnOwoJCX0KCQkvLyBGYWxsYmFjayB0byBVVEYtOAoJCWVsc2UKCQl7CgkJCSRlbmNvZGluZ1tdID0gJ1VURi04JzsKCQl9CgkJcmV0dXJuICRlbmNvZGluZzsKCX0KfQoKLyoqCiAqIERlY29kZSBIVE1MIEVudGl0aWVzCiAqCiAqIFRoaXMgaW1wbGVtZW50cyBIVE1MNSBhcyBvZiByZXZpc2lvbiA5NjcgKDIwMDctMDYtMjgpCiAqCiAqIEBwYWNrYWdlIFNpbXBsZVBpZQogKi8KY2xhc3MgU2ltcGxlUGllX0RlY29kZV9IVE1MX0VudGl0aWVzCnsKCS8qKgoJICogRGF0YSB0byBiZSBwYXJzZWQKCSAqCgkgKiBAYWNjZXNzIHByaXZhdGUKCSAqIEB2YXIgc3RyaW5nCgkgKi8KCXZhciAkZGF0YSA9ICcnOwoKCS8qKgoJICogQ3VycmVudGx5IGNvbnN1bWVkIGJ5dGVzCgkgKgoJICogQGFjY2VzcyBwcml2YXRlCgkgKiBAdmFyIHN0cmluZwoJICovCgl2YXIgJGNvbnN1bWVkID0gJyc7CgoJLyoqCgkgKiBQb3NpdGlvbiBvZiB0aGUgY3VycmVudCBieXRlIGJlaW5nIHBhcnNlZAoJICoKCSAqIEBhY2Nlc3MgcHJpdmF0ZQoJICogQHZhciBpbnQKCSAqLwoJdmFyICRwb3NpdGlvbiA9IDA7CgoJLyoqCgkgKiBDcmVhdGUgYW4gaW5zdGFuY2Ugb2YgdGhlIGNsYXNzIHdpdGggdGhlIGlucHV0IGRhdGEKCSAqCgkgKiBAYWNjZXNzIHB1YmxpYwoJICogQHBhcmFtIHN0cmluZyAkZGF0YSBJbnB1dCBkYXRhCgkgKi8KCWZ1bmN0aW9uIFNpbXBsZVBpZV9EZWNvZGVfSFRNTF9FbnRpdGllcygkZGF0YSkKCXsKCQkkdGhpcy0+ZGF0YSA9ICRkYXRhOwoJfQoKCS8qKgoJICogUGFyc2UgdGhlIGlucHV0IGRhdGEKCSAqCgkgKiBAYWNjZXNzIHB1YmxpYwoJICogQHJldHVybiBzdHJpbmcgT3V0cHV0IGRhdGEKCSAqLwoJZnVuY3Rpb24gcGFyc2UoKQoJewoJCXdoaWxlICgoJHRoaXMtPnBvc2l0aW9uID0gc3RycG9zKCR0aGlzLT5kYXRhLCAnJicsICR0aGlzLT5wb3NpdGlvbikpICE9PSBmYWxzZSkKCQl7CgkJCSR0aGlzLT5jb25zdW1lKCk7CgkJCSR0aGlzLT5lbnRpdHkoKTsKCQkJJHRoaXMtPmNvbnN1bWVkID0gJyc7CgkJfQoJCXJldHVybiAkdGhpcy0+ZGF0YTsKCX0KCgkvKioKCSAqIENvbnN1bWUgdGhlIG5leHQgYnl0ZQoJICoKCSAqIEBhY2Nlc3MgcHJpdmF0ZQoJICogQHJldHVybiBtaXhlZCBUaGUgbmV4dCBieXRlLCBvciBmYWxzZSwgaWYgdGhlcmUgaXMgbm8gbW9yZSBkYXRhCgkgKi8KCWZ1bmN0aW9uIGNvbnN1bWUoKQoJewoJCWlmIChpc3NldCgkdGhpcy0+ZGF0YVskdGhpcy0+cG9zaXRpb25dKSkKCQl7CgkJCSR0aGlzLT5jb25zdW1lZCAuPSAkdGhpcy0+ZGF0YVskdGhpcy0+cG9zaXRpb25dOwoJCQlyZXR1cm4gJHRoaXMtPmRhdGFbJHRoaXMtPnBvc2l0aW9uKytdOwoJCX0KCQllbHNlCgkJewoJCQkkdGhpcy0+Y29uc3VtZWQgPSBmYWxzZTsKCQkJcmV0dXJuIGZhbHNlOwoJCX0KCX0KCgkvKioKCSAqIENvbnN1bWUgYSByYW5nZSBvZiBjaGFyYWN0ZXJzCgkgKgoJICogQGFjY2VzcyBwcml2YXRlCgkgKiBAcGFyYW0gc3RyaW5nICRjaGFycyBDaGFyYWN0ZXJzIHRvIGNvbnN1bWUKCSAqIEByZXR1cm4gbWl4ZWQgQSBzZXJpZXMgb2YgY2hhcmFjdGVycyB0aGF0IG1hdGNoIHRoZSByYW5nZSwgb3IgZmFsc2UKCSAqLwoJZnVuY3Rpb24gY29uc3VtZV9yYW5nZSgkY2hhcnMpCgl7CgkJaWYgKCRsZW4gPSBzdHJzcG4oJHRoaXMtPmRhdGEsICRjaGFycywgJHRoaXMtPnBvc2l0aW9uKSkKCQl7CgkJCSRkYXRhID0gc3Vic3RyKCR0aGlzLT5kYXRhLCAkdGhpcy0+cG9zaXRpb24sICRsZW4pOwoJCQkkdGhpcy0+Y29uc3VtZWQgLj0gJGRhdGE7CgkJCSR0aGlzLT5wb3NpdGlvbiArPSAkbGVuOwoJCQlyZXR1cm4gJGRhdGE7CgkJfQoJCWVsc2UKCQl7CgkJCSR0aGlzLT5jb25zdW1lZCA9IGZhbHNlOwoJCQlyZXR1cm4gZmFsc2U7CgkJfQoJfQoKCS8qKgoJICogVW5jb25zdW1lIG9uZSBieXRlCgkgKgoJICogQGFjY2VzcyBwcml2YXRlCgkgKi8KCWZ1bmN0aW9uIHVuY29uc3VtZSgpCgl7CgkJJHRoaXMtPmNvbnN1bWVkID0gc3Vic3RyKCR0aGlzLT5jb25zdW1lZCwgMCwgLTEpOwoJCSR0aGlzLT5wb3NpdGlvbi0tOwoJfQoKCS8qKgoJICogRGVjb2RlIGFuIGVudGl0eQoJICoKCSAqIEBhY2Nlc3MgcHJpdmF0ZQoJICovCglmdW5jdGlvbiBlbnRpdHkoKQoJewoJCXN3aXRjaCAoJHRoaXMtPmNvbnN1bWUoKSkKCQl7CgkJCWNhc2UgIlx4MDkiOgoJCQljYXNlICJceDBBIjoKCQkJY2FzZSAiXHgwQiI6CgkJCWNhc2UgIlx4MEIiOgoJCQljYXNlICJceDBDIjoKCQkJY2FzZSAiXHgyMCI6CgkJCWNhc2UgIlx4M0MiOgoJCQljYXNlICJceDI2IjoKCQkJY2FzZSBmYWxzZToKCQkJCWJyZWFrOwoKCQkJY2FzZSAiXHgyMyI6CgkJCQlzd2l0Y2ggKCR0aGlzLT5jb25zdW1lKCkpCgkJCQl7CgkJCQkJY2FzZSAiXHg3OCI6CgkJCQkJY2FzZSAiXHg1OCI6CgkJCQkJCSRyYW5nZSA9ICcwMTIzNDU2Nzg5QUJDREVGYWJjZGVmJzsKCQkJCQkJJGhleCA9IHRydWU7CgkJCQkJCWJyZWFrOwoKCQkJCQlkZWZhdWx0OgoJCQkJCQkkcmFuZ2UgPSAnMDEyMzQ1Njc4OSc7CgkJCQkJCSRoZXggPSBmYWxzZTsKCQkJCQkJJHRoaXMtPnVuY29uc3VtZSgpOwoJCQkJCQlicmVhazsKCQkJCX0KCgkJCQlpZiAoJGNvZGVwb2ludCA9ICR0aGlzLT5jb25zdW1lX3JhbmdlKCRyYW5nZSkpCgkJCQl7CgkJCQkJc3RhdGljICR3aW5kb3dzXzEyNTJfc3BlY2lhbHMgPSBhcnJheSgweDBEID0+ICJceDBBIiwgMHg4MCA9PiAiXHhFMlx4ODJceEFDIiwgMHg4MSA9PiAiXHhFRlx4QkZceEJEIiwgMHg4MiA9PiAiXHhFMlx4ODBceDlBIiwgMHg4MyA9PiAiXHhDNlx4OTIiLCAweDg0ID0+ICJceEUyXHg4MFx4OUUiLCAweDg1ID0+ICJceEUyXHg4MFx4QTYiLCAweDg2ID0+ICJceEUyXHg4MFx4QTAiLCAweDg3ID0+ICJceEUyXHg4MFx4QTEiLCAweDg4ID0+ICJceENCXHg4NiIsIDB4ODkgPT4gIlx4RTJceDgwXHhCMCIsIDB4OEEgPT4gIlx4QzVceEEwIiwgMHg4QiA9PiAiXHhFMlx4ODBceEI5IiwgMHg4QyA9PiAiXHhDNVx4OTIiLCAweDhEID0+ICJceEVGXHhCRlx4QkQiLCAweDhFID0+ICJceEM1XHhCRCIsIDB4OEYgPT4gIlx4RUZceEJGXHhCRCIsIDB4OTAgPT4gIlx4RUZceEJGXHhCRCIsIDB4OTEgPT4gIlx4RTJceDgwXHg5OCIsIDB4OTIgPT4gIlx4RTJceDgwXHg5OSIsIDB4OTMgPT4gIlx4RTJceDgwXHg5QyIsIDB4OTQgPT4gIlx4RTJceDgwXHg5RCIsIDB4OTUgPT4gIlx4RTJceDgwXHhBMiIsIDB4OTYgPT4gIlx4RTJceDgwXHg5MyIsIDB4OTcgPT4gIlx4RTJceDgwXHg5NCIsIDB4OTggPT4gIlx4Q0JceDlDIiwgMHg5OSA9PiAiXHhFMlx4ODRceEEyIiwgMHg5QSA9PiAiXHhDNVx4QTEiLCAweDlCID0+ICJceEUyXHg4MFx4QkEiLCAweDlDID0+ICJceEM1XHg5MyIsIDB4OUQgPT4gIlx4RUZceEJGXHhCRCIsIDB4OUUgPT4gIlx4QzVceEJFIiwgMHg5RiA9PiAiXHhDNVx4QjgiKTsKCgkJCQkJaWYgKCRoZXgpCgkJCQkJewoJCQkJCQkkY29kZXBvaW50ID0gaGV4ZGVjKCRjb2RlcG9pbnQpOwoJCQkJCX0KCQkJCQllbHNlCgkJCQkJewoJCQkJCQkkY29kZXBvaW50ID0gaW50dmFsKCRjb2RlcG9pbnQpOwoJCQkJCX0KCgkJCQkJaWYgKGlzc2V0KCR3aW5kb3dzXzEyNTJfc3BlY2lhbHNbJGNvZGVwb2ludF0pKQoJCQkJCXsKCQkJCQkJJHJlcGxhY2VtZW50ID0gJHdpbmRvd3NfMTI1Ml9zcGVjaWFsc1skY29kZXBvaW50XTsKCQkJCQl9CgkJCQkJZWxzZQoJCQkJCXsKCQkJCQkJJHJlcGxhY2VtZW50ID0gU2ltcGxlUGllX01pc2M6OmNvZGVwb2ludF90b191dGY4KCRjb2RlcG9pbnQpOwoJCQkJCX0KCgkJCQkJaWYgKCR0aGlzLT5jb25zdW1lKCkgIT0gJzsnKQoJCQkJCXsKCQkJCQkJJHRoaXMtPnVuY29uc3VtZSgpOwoJCQkJCX0KCgkJCQkJJGNvbnN1bWVkX2xlbmd0aCA9IHN0cmxlbigkdGhpcy0+Y29uc3VtZWQpOwoJCQkJCSR0aGlzLT5kYXRhID0gc3Vic3RyX3JlcGxhY2UoJHRoaXMtPmRhdGEsICRyZXBsYWNlbWVudCwgJHRoaXMtPnBvc2l0aW9uIC0gJGNvbnN1bWVkX2xlbmd0aCwgJGNvbnN1bWVkX2xlbmd0aCk7CgkJCQkJJHRoaXMtPnBvc2l0aW9uICs9IHN0cmxlbigkcmVwbGFjZW1lbnQpIC0gJGNvbnN1bWVkX2xlbmd0aDsKCQkJCX0KCQkJCWJyZWFrOwoKCQkJZGVmYXVsdDoKCQkJCXN0YXRpYyAkZW50aXRpZXMgPSBhcnJheSgnQWFjdXRlJyA9PiAiXHhDM1x4ODEiLCAnYWFjdXRlJyA9PiAiXHhDM1x4QTEiLCAnQWFjdXRlOycgPT4gIlx4QzNceDgxIiwgJ2FhY3V0ZTsnID0+ICJceEMzXHhBMSIsICdBY2lyYycgPT4gIlx4QzNceDgyIiwgJ2FjaXJjJyA9PiAiXHhDM1x4QTIiLCAnQWNpcmM7JyA9PiAiXHhDM1x4ODIiLCAnYWNpcmM7JyA9PiAiXHhDM1x4QTIiLCAnYWN1dGUnID0+ICJceEMyXHhCNCIsICdhY3V0ZTsnID0+ICJceEMyXHhCNCIsICdBRWxpZycgPT4gIlx4QzNceDg2IiwgJ2FlbGlnJyA9PiAiXHhDM1x4QTYiLCAnQUVsaWc7JyA9PiAiXHhDM1x4ODYiLCAnYWVsaWc7JyA9PiAiXHhDM1x4QTYiLCAnQWdyYXZlJyA9PiAiXHhDM1x4ODAiLCAnYWdyYXZlJyA9PiAiXHhDM1x4QTAiLCAnQWdyYXZlOycgPT4gIlx4QzNceDgwIiwgJ2FncmF2ZTsnID0+ICJceEMzXHhBMCIsICdhbGVmc3ltOycgPT4gIlx4RTJceDg0XHhCNSIsICdBbHBoYTsnID0+ICJceENFXHg5MSIsICdhbHBoYTsnID0+ICJceENFXHhCMSIsICdBTVAnID0+ICJceDI2IiwgJ2FtcCcgPT4gIlx4MjYiLCAnQU1QOycgPT4gIlx4MjYiLCAnYW1wOycgPT4gIlx4MjYiLCAnYW5kOycgPT4gIlx4RTJceDg4XHhBNyIsICdhbmc7JyA9PiAiXHhFMlx4ODhceEEwIiwgJ2Fwb3M7JyA9PiAiXHgyNyIsICdBcmluZycgPT4gIlx4QzNceDg1IiwgJ2FyaW5nJyA9PiAiXHhDM1x4QTUiLCAnQXJpbmc7JyA9PiAiXHhDM1x4ODUiLCAnYXJpbmc7JyA9PiAiXHhDM1x4QTUiLCAnYXN5bXA7JyA9PiAiXHhFMlx4ODlceDg4IiwgJ0F0aWxkZScgPT4gIlx4QzNceDgzIiwgJ2F0aWxkZScgPT4gIlx4QzNceEEzIiwgJ0F0aWxkZTsnID0+ICJceEMzXHg4MyIsICdhdGlsZGU7JyA9PiAiXHhDM1x4QTMiLCAnQXVtbCcgPT4gIlx4QzNceDg0IiwgJ2F1bWwnID0+ICJceEMzXHhBNCIsICdBdW1sOycgPT4gIlx4QzNceDg0IiwgJ2F1bWw7JyA9PiAiXHhDM1x4QTQiLCAnYmRxdW87JyA9PiAiXHhFMlx4ODBceDlFIiwgJ0JldGE7JyA9PiAiXHhDRVx4OTIiLCAnYmV0YTsnID0+ICJceENFXHhCMiIsICdicnZiYXInID0+ICJceEMyXHhBNiIsICdicnZiYXI7JyA9PiAiXHhDMlx4QTYiLCAnYnVsbDsnID0+ICJceEUyXHg4MFx4QTIiLCAnY2FwOycgPT4gIlx4RTJceDg4XHhBOSIsICdDY2VkaWwnID0+ICJceEMzXHg4NyIsICdjY2VkaWwnID0+ICJceEMzXHhBNyIsICdDY2VkaWw7JyA9PiAiXHhDM1x4ODciLCAnY2NlZGlsOycgPT4gIlx4QzNceEE3IiwgJ2NlZGlsJyA9PiAiXHhDMlx4QjgiLCAnY2VkaWw7JyA9PiAiXHhDMlx4QjgiLCAnY2VudCcgPT4gIlx4QzJceEEyIiwgJ2NlbnQ7JyA9PiAiXHhDMlx4QTIiLCAnQ2hpOycgPT4gIlx4Q0VceEE3IiwgJ2NoaTsnID0+ICJceENGXHg4NyIsICdjaXJjOycgPT4gIlx4Q0JceDg2IiwgJ2NsdWJzOycgPT4gIlx4RTJceDk5XHhBMyIsICdjb25nOycgPT4gIlx4RTJceDg5XHg4NSIsICdDT1BZJyA9PiAiXHhDMlx4QTkiLCAnY29weScgPT4gIlx4QzJceEE5IiwgJ0NPUFk7JyA9PiAiXHhDMlx4QTkiLCAnY29weTsnID0+ICJceEMyXHhBOSIsICdjcmFycjsnID0+ICJceEUyXHg4Nlx4QjUiLCAnY3VwOycgPT4gIlx4RTJceDg4XHhBQSIsICdjdXJyZW4nID0+ICJceEMyXHhBNCIsICdjdXJyZW47JyA9PiAiXHhDMlx4QTQiLCAnRGFnZ2VyOycgPT4gIlx4RTJceDgwXHhBMSIsICdkYWdnZXI7JyA9PiAiXHhFMlx4ODBceEEwIiwgJ2RBcnI7JyA9PiAiXHhFMlx4ODdceDkzIiwgJ2RhcnI7JyA9PiAiXHhFMlx4ODZceDkzIiwgJ2RlZycgPT4gIlx4QzJceEIwIiwgJ2RlZzsnID0+ICJceEMyXHhCMCIsICdEZWx0YTsnID0+ICJceENFXHg5NCIsICdkZWx0YTsnID0+ICJceENFXHhCNCIsICdkaWFtczsnID0+ICJceEUyXHg5OVx4QTYiLCAnZGl2aWRlJyA9PiAiXHhDM1x4QjciLCAnZGl2aWRlOycgPT4gIlx4QzNceEI3IiwgJ0VhY3V0ZScgPT4gIlx4QzNceDg5IiwgJ2VhY3V0ZScgPT4gIlx4QzNceEE5IiwgJ0VhY3V0ZTsnID0+ICJceEMzXHg4OSIsICdlYWN1dGU7JyA9PiAiXHhDM1x4QTkiLCAnRWNpcmMnID0+ICJceEMzXHg4QSIsICdlY2lyYycgPT4gIlx4QzNceEFBIiwgJ0VjaXJjOycgPT4gIlx4QzNceDhBIiwgJ2VjaXJjOycgPT4gIlx4QzNceEFBIiwgJ0VncmF2ZScgPT4gIlx4QzNceDg4IiwgJ2VncmF2ZScgPT4gIlx4QzNceEE4IiwgJ0VncmF2ZTsnID0+ICJceEMzXHg4OCIsICdlZ3JhdmU7JyA9PiAiXHhDM1x4QTgiLCAnZW1wdHk7JyA9PiAiXHhFMlx4ODhceDg1IiwgJ2Vtc3A7JyA9PiAiXHhFMlx4ODBceDgzIiwgJ2Vuc3A7JyA9PiAiXHhFMlx4ODBceDgyIiwgJ0Vwc2lsb247JyA9PiAiXHhDRVx4OTUiLCAnZXBzaWxvbjsnID0+ICJceENFXHhCNSIsICdlcXVpdjsnID0+ICJceEUyXHg4OVx4QTEiLCAnRXRhOycgPT4gIlx4Q0VceDk3IiwgJ2V0YTsnID0+ICJceENFXHhCNyIsICdFVEgnID0+ICJceEMzXHg5MCIsICdldGgnID0+ICJceEMzXHhCMCIsICdFVEg7JyA9PiAiXHhDM1x4OTAiLCAnZXRoOycgPT4gIlx4QzNceEIwIiwgJ0V1bWwnID0+ICJceEMzXHg4QiIsICdldW1sJyA9PiAiXHhDM1x4QUIiLCAnRXVtbDsnID0+ICJceEMzXHg4QiIsICdldW1sOycgPT4gIlx4QzNceEFCIiwgJ2V1cm87JyA9PiAiXHhFMlx4ODJceEFDIiwgJ2V4aXN0OycgPT4gIlx4RTJceDg4XHg4MyIsICdmbm9mOycgPT4gIlx4QzZceDkyIiwgJ2ZvcmFsbDsnID0+ICJceEUyXHg4OFx4ODAiLCAnZnJhYzEyJyA9PiAiXHhDMlx4QkQiLCAnZnJhYzEyOycgPT4gIlx4QzJceEJEIiwgJ2ZyYWMxNCcgPT4gIlx4QzJceEJDIiwgJ2ZyYWMxNDsnID0+ICJceEMyXHhCQyIsICdmcmFjMzQnID0+ICJceEMyXHhCRSIsICdmcmFjMzQ7JyA9PiAiXHhDMlx4QkUiLCAnZnJhc2w7JyA9PiAiXHhFMlx4ODFceDg0IiwgJ0dhbW1hOycgPT4gIlx4Q0VceDkzIiwgJ2dhbW1hOycgPT4gIlx4Q0VceEIzIiwgJ2dlOycgPT4gIlx4RTJceDg5XHhBNSIsICdHVCcgPT4gIlx4M0UiLCAnZ3QnID0+ICJceDNFIiwgJ0dUOycgPT4gIlx4M0UiLCAnZ3Q7JyA9PiAiXHgzRSIsICdoQXJyOycgPT4gIlx4RTJceDg3XHg5NCIsICdoYXJyOycgPT4gIlx4RTJceDg2XHg5NCIsICdoZWFydHM7JyA9PiAiXHhFMlx4OTlceEE1IiwgJ2hlbGxpcDsnID0+ICJceEUyXHg4MFx4QTYiLCAnSWFjdXRlJyA9PiAiXHhDM1x4OEQiLCAnaWFjdXRlJyA9PiAiXHhDM1x4QUQiLCAnSWFjdXRlOycgPT4gIlx4QzNceDhEIiwgJ2lhY3V0ZTsnID0+ICJceEMzXHhBRCIsICdJY2lyYycgPT4gIlx4QzNceDhFIiwgJ2ljaXJjJyA9PiAiXHhDM1x4QUUiLCAnSWNpcmM7JyA9PiAiXHhDM1x4OEUiLCAnaWNpcmM7JyA9PiAiXHhDM1x4QUUiLCAnaWV4Y2wnID0+ICJceEMyXHhBMSIsICdpZXhjbDsnID0+ICJceEMyXHhBMSIsICdJZ3JhdmUnID0+ICJceEMzXHg4QyIsICdpZ3JhdmUnID0+ICJceEMzXHhBQyIsICdJZ3JhdmU7JyA9PiAiXHhDM1x4OEMiLCAnaWdyYXZlOycgPT4gIlx4QzNceEFDIiwgJ2ltYWdlOycgPT4gIlx4RTJceDg0XHg5MSIsICdpbmZpbjsnID0+ICJceEUyXHg4OFx4OUUiLCAnaW50OycgPT4gIlx4RTJceDg4XHhBQiIsICdJb3RhOycgPT4gIlx4Q0VceDk5IiwgJ2lvdGE7JyA9PiAiXHhDRVx4QjkiLCAnaXF1ZXN0JyA9PiAiXHhDMlx4QkYiLCAnaXF1ZXN0OycgPT4gIlx4QzJceEJGIiwgJ2lzaW47JyA9PiAiXHhFMlx4ODhceDg4IiwgJ0l1bWwnID0+ICJceEMzXHg4RiIsICdpdW1sJyA9PiAiXHhDM1x4QUYiLCAnSXVtbDsnID0+ICJceEMzXHg4RiIsICdpdW1sOycgPT4gIlx4QzNceEFGIiwgJ0thcHBhOycgPT4gIlx4Q0VceDlBIiwgJ2thcHBhOycgPT4gIlx4Q0VceEJBIiwgJ0xhbWJkYTsnID0+ICJceENFXHg5QiIsICdsYW1iZGE7JyA9PiAiXHhDRVx4QkIiLCAnbGFuZzsnID0+ICJceEUzXHg4MFx4ODgiLCAnbGFxdW8nID0+ICJceEMyXHhBQiIsICdsYXF1bzsnID0+ICJceEMyXHhBQiIsICdsQXJyOycgPT4gIlx4RTJceDg3XHg5MCIsICdsYXJyOycgPT4gIlx4RTJceDg2XHg5MCIsICdsY2VpbDsnID0+ICJceEUyXHg4Q1x4ODgiLCAnbGRxdW87JyA9PiAiXHhFMlx4ODBceDlDIiwgJ2xlOycgPT4gIlx4RTJceDg5XHhBNCIsICdsZmxvb3I7JyA9PiAiXHhFMlx4OENceDhBIiwgJ2xvd2FzdDsnID0+ICJceEUyXHg4OFx4OTciLCAnbG96OycgPT4gIlx4RTJceDk3XHg4QSIsICdscm07JyA9PiAiXHhFMlx4ODBceDhFIiwgJ2xzYXF1bzsnID0+ICJceEUyXHg4MFx4QjkiLCAnbHNxdW87JyA9PiAiXHhFMlx4ODBceDk4IiwgJ0xUJyA9PiAiXHgzQyIsICdsdCcgPT4gIlx4M0MiLCAnTFQ7JyA9PiAiXHgzQyIsICdsdDsnID0+ICJceDNDIiwgJ21hY3InID0+ICJceEMyXHhBRiIsICdtYWNyOycgPT4gIlx4QzJceEFGIiwgJ21kYXNoOycgPT4gIlx4RTJceDgwXHg5NCIsICdtaWNybycgPT4gIlx4QzJceEI1IiwgJ21pY3JvOycgPT4gIlx4QzJceEI1IiwgJ21pZGRvdCcgPT4gIlx4QzJceEI3IiwgJ21pZGRvdDsnID0+ICJceEMyXHhCNyIsICdtaW51czsnID0+ICJceEUyXHg4OFx4OTIiLCAnTXU7JyA9PiAiXHhDRVx4OUMiLCAnbXU7JyA9PiAiXHhDRVx4QkMiLCAnbmFibGE7JyA9PiAiXHhFMlx4ODhceDg3IiwgJ25ic3AnID0+ICJceEMyXHhBMCIsICduYnNwOycgPT4gIlx4QzJceEEwIiwgJ25kYXNoOycgPT4gIlx4RTJceDgwXHg5MyIsICduZTsnID0+ICJceEUyXHg4OVx4QTAiLCAnbmk7JyA9PiAiXHhFMlx4ODhceDhCIiwgJ25vdCcgPT4gIlx4QzJceEFDIiwgJ25vdDsnID0+ICJceEMyXHhBQyIsICdub3RpbjsnID0+ICJceEUyXHg4OFx4ODkiLCAnbnN1YjsnID0+ICJceEUyXHg4QVx4ODQiLCAnTnRpbGRlJyA9PiAiXHhDM1x4OTEiLCAnbnRpbGRlJyA9PiAiXHhDM1x4QjEiLCAnTnRpbGRlOycgPT4gIlx4QzNceDkxIiwgJ250aWxkZTsnID0+ICJceEMzXHhCMSIsICdOdTsnID0+ICJceENFXHg5RCIsICdudTsnID0+ICJceENFXHhCRCIsICdPYWN1dGUnID0+ICJceEMzXHg5MyIsICdvYWN1dGUnID0+ICJceEMzXHhCMyIsICdPYWN1dGU7JyA9PiAiXHhDM1x4OTMiLCAnb2FjdXRlOycgPT4gIlx4QzNceEIzIiwgJ09jaXJjJyA9PiAiXHhDM1x4OTQiLCAnb2NpcmMnID0+ICJceEMzXHhCNCIsICdPY2lyYzsnID0+ICJceEMzXHg5NCIsICdvY2lyYzsnID0+ICJceEMzXHhCNCIsICdPRWxpZzsnID0+ICJceEM1XHg5MiIsICdvZWxpZzsnID0+ICJceEM1XHg5MyIsICdPZ3JhdmUnID0+ICJceEMzXHg5MiIsICdvZ3JhdmUnID0+ICJceEMzXHhCMiIsICdPZ3JhdmU7JyA9PiAiXHhDM1x4OTIiLCAnb2dyYXZlOycgPT4gIlx4QzNceEIyIiwgJ29saW5lOycgPT4gIlx4RTJceDgwXHhCRSIsICdPbWVnYTsnID0+ICJceENFXHhBOSIsICdvbWVnYTsnID0+ICJceENGXHg4OSIsICdPbWljcm9uOycgPT4gIlx4Q0VceDlGIiwgJ29taWNyb247JyA9PiAiXHhDRVx4QkYiLCAnb3BsdXM7JyA9PiAiXHhFMlx4OEFceDk1IiwgJ29yOycgPT4gIlx4RTJceDg4XHhBOCIsICdvcmRmJyA9PiAiXHhDMlx4QUEiLCAnb3JkZjsnID0+ICJceEMyXHhBQSIsICdvcmRtJyA9PiAiXHhDMlx4QkEiLCAnb3JkbTsnID0+ICJceEMyXHhCQSIsICdPc2xhc2gnID0+ICJceEMzXHg5OCIsICdvc2xhc2gnID0+ICJceEMzXHhCOCIsICdPc2xhc2g7JyA9PiAiXHhDM1x4OTgiLCAnb3NsYXNoOycgPT4gIlx4QzNceEI4IiwgJ090aWxkZScgPT4gIlx4QzNceDk1IiwgJ290aWxkZScgPT4gIlx4QzNceEI1IiwgJ090aWxkZTsnID0+ICJceEMzXHg5NSIsICdvdGlsZGU7JyA9PiAiXHhDM1x4QjUiLCAnb3RpbWVzOycgPT4gIlx4RTJceDhBXHg5NyIsICdPdW1sJyA9PiAiXHhDM1x4OTYiLCAnb3VtbCcgPT4gIlx4QzNceEI2IiwgJ091bWw7JyA9PiAiXHhDM1x4OTYiLCAnb3VtbDsnID0+ICJceEMzXHhCNiIsICdwYXJhJyA9PiAiXHhDMlx4QjYiLCAncGFyYTsnID0+ICJceEMyXHhCNiIsICdwYXJ0OycgPT4gIlx4RTJceDg4XHg4MiIsICdwZXJtaWw7JyA9PiAiXHhFMlx4ODBceEIwIiwgJ3BlcnA7JyA9PiAiXHhFMlx4OEFceEE1IiwgJ1BoaTsnID0+ICJceENFXHhBNiIsICdwaGk7JyA9PiAiXHhDRlx4ODYiLCAnUGk7JyA9PiAiXHhDRVx4QTAiLCAncGk7JyA9PiAiXHhDRlx4ODAiLCAncGl2OycgPT4gIlx4Q0ZceDk2IiwgJ3BsdXNtbicgPT4gIlx4QzJceEIxIiwgJ3BsdXNtbjsnID0+ICJceEMyXHhCMSIsICdwb3VuZCcgPT4gIlx4QzJceEEzIiwgJ3BvdW5kOycgPT4gIlx4QzJceEEzIiwgJ1ByaW1lOycgPT4gIlx4RTJceDgwXHhCMyIsICdwcmltZTsnID0+ICJceEUyXHg4MFx4QjIiLCAncHJvZDsnID0+ICJceEUyXHg4OFx4OEYiLCAncHJvcDsnID0+ICJceEUyXHg4OFx4OUQiLCAnUHNpOycgPT4gIlx4Q0VceEE4IiwgJ3BzaTsnID0+ICJceENGXHg4OCIsICdRVU9UJyA9PiAiXHgyMiIsICdxdW90JyA9PiAiXHgyMiIsICdRVU9UOycgPT4gIlx4MjIiLCAncXVvdDsnID0+ICJceDIyIiwgJ3JhZGljOycgPT4gIlx4RTJceDg4XHg5QSIsICdyYW5nOycgPT4gIlx4RTNceDgwXHg4OSIsICdyYXF1bycgPT4gIlx4QzJceEJCIiwgJ3JhcXVvOycgPT4gIlx4QzJceEJCIiwgJ3JBcnI7JyA9PiAiXHhFMlx4ODdceDkyIiwgJ3JhcnI7JyA9PiAiXHhFMlx4ODZceDkyIiwgJ3JjZWlsOycgPT4gIlx4RTJceDhDXHg4OSIsICdyZHF1bzsnID0+ICJceEUyXHg4MFx4OUQiLCAncmVhbDsnID0+ICJceEUyXHg4NFx4OUMiLCAnUkVHJyA9PiAiXHhDMlx4QUUiLCAncmVnJyA9PiAiXHhDMlx4QUUiLCAnUkVHOycgPT4gIlx4QzJceEFFIiwgJ3JlZzsnID0+ICJceEMyXHhBRSIsICdyZmxvb3I7JyA9PiAiXHhFMlx4OENceDhCIiwgJ1JobzsnID0+ICJceENFXHhBMSIsICdyaG87JyA9PiAiXHhDRlx4ODEiLCAncmxtOycgPT4gIlx4RTJceDgwXHg4RiIsICdyc2FxdW87JyA9PiAiXHhFMlx4ODBceEJBIiwgJ3JzcXVvOycgPT4gIlx4RTJceDgwXHg5OSIsICdzYnF1bzsnID0+ICJceEUyXHg4MFx4OUEiLCAnU2Nhcm9uOycgPT4gIlx4QzVceEEwIiwgJ3NjYXJvbjsnID0+ICJceEM1XHhBMSIsICdzZG90OycgPT4gIlx4RTJceDhCXHg4NSIsICdzZWN0JyA9PiAiXHhDMlx4QTciLCAnc2VjdDsnID0+ICJceEMyXHhBNyIsICdzaHknID0+ICJceEMyXHhBRCIsICdzaHk7JyA9PiAiXHhDMlx4QUQiLCAnU2lnbWE7JyA9PiAiXHhDRVx4QTMiLCAnc2lnbWE7JyA9PiAiXHhDRlx4ODMiLCAnc2lnbWFmOycgPT4gIlx4Q0ZceDgyIiwgJ3NpbTsnID0+ICJceEUyXHg4OFx4QkMiLCAnc3BhZGVzOycgPT4gIlx4RTJceDk5XHhBMCIsICdzdWI7JyA9PiAiXHhFMlx4OEFceDgyIiwgJ3N1YmU7JyA9PiAiXHhFMlx4OEFceDg2IiwgJ3N1bTsnID0+ICJceEUyXHg4OFx4OTEiLCAnc3VwOycgPT4gIlx4RTJceDhBXHg4MyIsICdzdXAxJyA9PiAiXHhDMlx4QjkiLCAnc3VwMTsnID0+ICJceEMyXHhCOSIsICdzdXAyJyA9PiAiXHhDMlx4QjIiLCAnc3VwMjsnID0+ICJceEMyXHhCMiIsICdzdXAzJyA9PiAiXHhDMlx4QjMiLCAnc3VwMzsnID0+ICJceEMyXHhCMyIsICdzdXBlOycgPT4gIlx4RTJceDhBXHg4NyIsICdzemxpZycgPT4gIlx4QzNceDlGIiwgJ3N6bGlnOycgPT4gIlx4QzNceDlGIiwgJ1RhdTsnID0+ICJceENFXHhBNCIsICd0YXU7JyA9PiAiXHhDRlx4ODQiLCAndGhlcmU0OycgPT4gIlx4RTJceDg4XHhCNCIsICdUaGV0YTsnID0+ICJceENFXHg5OCIsICd0aGV0YTsnID0+ICJceENFXHhCOCIsICd0aGV0YXN5bTsnID0+ICJceENGXHg5MSIsICd0aGluc3A7JyA9PiAiXHhFMlx4ODBceDg5IiwgJ1RIT1JOJyA9PiAiXHhDM1x4OUUiLCAndGhvcm4nID0+ICJceEMzXHhCRSIsICdUSE9STjsnID0+ICJceEMzXHg5RSIsICd0aG9ybjsnID0+ICJceEMzXHhCRSIsICd0aWxkZTsnID0+ICJceENCXHg5QyIsICd0aW1lcycgPT4gIlx4QzNceDk3IiwgJ3RpbWVzOycgPT4gIlx4QzNceDk3IiwgJ1RSQURFOycgPT4gIlx4RTJceDg0XHhBMiIsICd0cmFkZTsnID0+ICJceEUyXHg4NFx4QTIiLCAnVWFjdXRlJyA9PiAiXHhDM1x4OUEiLCAndWFjdXRlJyA9PiAiXHhDM1x4QkEiLCAnVWFjdXRlOycgPT4gIlx4QzNceDlBIiwgJ3VhY3V0ZTsnID0+ICJceEMzXHhCQSIsICd1QXJyOycgPT4gIlx4RTJceDg3XHg5MSIsICd1YXJyOycgPT4gIlx4RTJceDg2XHg5MSIsICdVY2lyYycgPT4gIlx4QzNceDlCIiwgJ3VjaXJjJyA9PiAiXHhDM1x4QkIiLCAnVWNpcmM7JyA9PiAiXHhDM1x4OUIiLCAndWNpcmM7JyA9PiAiXHhDM1x4QkIiLCAnVWdyYXZlJyA9PiAiXHhDM1x4OTkiLCAndWdyYXZlJyA9PiAiXHhDM1x4QjkiLCAnVWdyYXZlOycgPT4gIlx4QzNceDk5IiwgJ3VncmF2ZTsnID0+ICJceEMzXHhCOSIsICd1bWwnID0+ICJceEMyXHhBOCIsICd1bWw7JyA9PiAiXHhDMlx4QTgiLCAndXBzaWg7JyA9PiAiXHhDRlx4OTIiLCAnVXBzaWxvbjsnID0+ICJceENFXHhBNSIsICd1cHNpbG9uOycgPT4gIlx4Q0ZceDg1IiwgJ1V1bWwnID0+ICJceEMzXHg5QyIsICd1dW1sJyA9PiAiXHhDM1x4QkMiLCAnVXVtbDsnID0+ICJceEMzXHg5QyIsICd1dW1sOycgPT4gIlx4QzNceEJDIiwgJ3dlaWVycDsnID0+ICJceEUyXHg4NFx4OTgiLCAnWGk7JyA9PiAiXHhDRVx4OUUiLCAneGk7JyA9PiAiXHhDRVx4QkUiLCAnWWFjdXRlJyA9PiAiXHhDM1x4OUQiLCAneWFjdXRlJyA9PiAiXHhDM1x4QkQiLCAnWWFjdXRlOycgPT4gIlx4QzNceDlEIiwgJ3lhY3V0ZTsnID0+ICJceEMzXHhCRCIsICd5ZW4nID0+ICJceEMyXHhBNSIsICd5ZW47JyA9PiAiXHhDMlx4QTUiLCAneXVtbCcgPT4gIlx4QzNceEJGIiwgJ1l1bWw7JyA9PiAiXHhDNVx4QjgiLCAneXVtbDsnID0+ICJceEMzXHhCRiIsICdaZXRhOycgPT4gIlx4Q0VceDk2IiwgJ3pldGE7JyA9PiAiXHhDRVx4QjYiLCAnendqOycgPT4gIlx4RTJceDgwXHg4RCIsICd6d25qOycgPT4gIlx4RTJceDgwXHg4QyIpOwoKCQkJCWZvciAoJGkgPSAwLCAkbWF0Y2ggPSBudWxsOyAkaSA8IDkgJiYgJHRoaXMtPmNvbnN1bWUoKSAhPT0gZmFsc2U7ICRpKyspCgkJCQl7CgkJCQkJJGNvbnN1bWVkID0gc3Vic3RyKCR0aGlzLT5jb25zdW1lZCwgMSk7CgkJCQkJaWYgKGlzc2V0KCRlbnRpdGllc1skY29uc3VtZWRdKSkKCQkJCQl7CgkJCQkJCSRtYXRjaCA9ICRjb25zdW1lZDsKCQkJCQl9CgkJCQl9CgoJCQkJaWYgKCRtYXRjaCAhPT0gbnVsbCkKCQkJCXsKIAkJCQkJJHRoaXMtPmRhdGEgPSBzdWJzdHJfcmVwbGFjZSgkdGhpcy0+ZGF0YSwgJGVudGl0aWVzWyRtYXRjaF0sICR0aGlzLT5wb3NpdGlvbiAtIHN0cmxlbigkY29uc3VtZWQpIC0gMSwgc3RybGVuKCRtYXRjaCkgKyAxKTsKCQkJCQkkdGhpcy0+cG9zaXRpb24gKz0gc3RybGVuKCRlbnRpdGllc1skbWF0Y2hdKSAtIHN0cmxlbigkY29uc3VtZWQpIC0gMTsKCQkJCX0KCQkJCWJyZWFrOwoJCX0KCX0KfQoKLyoqCiAqIERhdGUgUGFyc2VyCiAqCiAqIEBwYWNrYWdlIFNpbXBsZVBpZQogKi8KY2xhc3MgU2ltcGxlUGllX1BhcnNlX0RhdGUKewoJLyoqCgkgKiBJbnB1dCBkYXRhCgkgKgoJICogQGFjY2VzcyBwcm90ZWN0ZWQKCSAqIEB2YXIgc3RyaW5nCgkgKi8KCXZhciAkZGF0ZTsKCgkvKioKCSAqIExpc3Qgb2YgZGF5cywgY2FsZW5kYXIgZGF5IG5hbWUgPT4gb3JkaW5hbCBkYXkgbnVtYmVyIGluIHRoZSB3ZWVrCgkgKgoJICogQGFjY2VzcyBwcm90ZWN0ZWQKCSAqIEB2YXIgYXJyYXkKCSAqLwoJdmFyICRkYXkgPSBhcnJheSgKCQkvLyBFbmdsaXNoCgkJJ21vbicgPT4gMSwKCQknbW9uZGF5JyA9PiAxLAoJCSd0dWUnID0+IDIsCgkJJ3R1ZXNkYXknID0+IDIsCgkJJ3dlZCcgPT4gMywKCQknd2VkbmVzZGF5JyA9PiAzLAoJCSd0aHUnID0+IDQsCgkJJ3RodXJzZGF5JyA9PiA0LAoJCSdmcmknID0+IDUsCgkJJ2ZyaWRheScgPT4gNSwKCQknc2F0JyA9PiA2LAoJCSdzYXR1cmRheScgPT4gNiwKCQknc3VuJyA9PiA3LAoJCSdzdW5kYXknID0+IDcsCgkJLy8gRHV0Y2gKCQknbWFhbmRhZycgPT4gMSwKCQknZGluc2RhZycgPT4gMiwKCQknd29lbnNkYWcnID0+IDMsCgkJJ2RvbmRlcmRhZycgPT4gNCwKCQkndnJpamRhZycgPT4gNSwKCQknemF0ZXJkYWcnID0+IDYsCgkJJ3pvbmRhZycgPT4gNywKCQkvLyBGcmVuY2gKCQknbHVuZGknID0+IDEsCgkJJ21hcmRpJyA9PiAyLAoJCSdtZXJjcmVkaScgPT4gMywKCQknamV1ZGknID0+IDQsCgkJJ3ZlbmRyZWRpJyA9PiA1LAoJCSdzYW1lZGknID0+IDYsCgkJJ2RpbWFuY2hlJyA9PiA3LAoJCS8vIEdlcm1hbgoJCSdtb250YWcnID0+IDEsCgkJJ2RpZW5zdGFnJyA9PiAyLAoJCSdtaXR0d29jaCcgPT4gMywKCQknZG9ubmVyc3RhZycgPT4gNCwKCQknZnJlaXRhZycgPT4gNSwKCQknc2Ftc3RhZycgPT4gNiwKCQknc29ubmFiZW5kJyA9PiA2LAoJCSdzb25udGFnJyA9PiA3LAoJCS8vIEl0YWxpYW4KCQknbHVuZWTDrCcgPT4gMSwKCQknbWFydGVkw6wnID0+IDIsCgkJJ21lcmNvbGVkw6wnID0+IDMsCgkJJ2dpb3ZlZMOsJyA9PiA0LAoJCSd2ZW5lcmTDrCcgPT4gNSwKCQknc2FiYXRvJyA9PiA2LAoJCSdkb21lbmljYScgPT4gNywKCQkvLyBTcGFuaXNoCgkJJ2x1bmVzJyA9PiAxLAoJCSdtYXJ0ZXMnID0+IDIsCgkJJ21pw6lyY29sZXMnID0+IDMsCgkJJ2p1ZXZlcycgPT4gNCwKCQkndmllcm5lcycgPT4gNSwKCQknc8OhYmFkbycgPT4gNiwKCQknZG9taW5nbycgPT4gNywKCQkvLyBGaW5uaXNoCgkJJ21hYW5hbnRhaScgPT4gMSwKCQkndGlpc3RhaScgPT4gMiwKCQkna2Vza2l2aWlra28nID0+IDMsCgkJJ3RvcnN0YWknID0+IDQsCgkJJ3BlcmphbnRhaScgPT4gNSwKCQknbGF1YW50YWknID0+IDYsCgkJJ3N1bm51bnRhaScgPT4gNywKCQkvLyBIdW5nYXJpYW4KCQknaMOpdGbFkScgPT4gMSwKCQkna2VkZCcgPT4gMiwKCQknc3plcmRhJyA9PiAzLAoJCSdjc8O8dMO2cnRvaycgPT4gNCwKCQkncMOpbnRlaycgPT4gNSwKCQknc3pvbWJhdCcgPT4gNiwKCQkndmFzw6FybmFwJyA9PiA3LAoJCS8vIEdyZWVrCgkJJ86UzrXPhScgPT4gMSwKCQknzqTPgc65JyA9PiAyLAoJCSfOpM61z4QnID0+IDMsCgkJJ86gzrXOvCcgPT4gNCwKCQknzqDOsc+BJyA9PiA1LAoJCSfOo86xzrInID0+IDYsCgkJJ86az4XPgScgPT4gNywKCSk7CgoJLyoqCgkgKiBMaXN0IG9mIG1vbnRocywgY2FsZW5kYXIgbW9udGggbmFtZSA9PiBjYWxlbmRhciBtb250aCBudW1iZXIKCSAqCgkgKiBAYWNjZXNzIHByb3RlY3RlZAoJICogQHZhciBhcnJheQoJICovCgl2YXIgJG1vbnRoID0gYXJyYXkoCgkJLy8gRW5nbGlzaAoJCSdqYW4nID0+IDEsCgkJJ2phbnVhcnknID0+IDEsCgkJJ2ZlYicgPT4gMiwKCQknZmVicnVhcnknID0+IDIsCgkJJ21hcicgPT4gMywKCQknbWFyY2gnID0+IDMsCgkJJ2FwcicgPT4gNCwKCQknYXByaWwnID0+IDQsCgkJJ21heScgPT4gNSwKCQkvLyBObyBsb25nIGZvcm0gb2YgTWF5CgkJJ2p1bicgPT4gNiwKCQknanVuZScgPT4gNiwKCQknanVsJyA9PiA3LAoJCSdqdWx5JyA9PiA3LAoJCSdhdWcnID0+IDgsCgkJJ2F1Z3VzdCcgPT4gOCwKCQknc2VwJyA9PiA5LAoJCSdzZXB0ZW1iZXInID0+IDgsCgkJJ29jdCcgPT4gMTAsCgkJJ29jdG9iZXInID0+IDEwLAoJCSdub3YnID0+IDExLAoJCSdub3ZlbWJlcicgPT4gMTEsCgkJJ2RlYycgPT4gMTIsCgkJJ2RlY2VtYmVyJyA9PiAxMiwKCQkvLyBEdXRjaAoJCSdqYW51YXJpJyA9PiAxLAoJCSdmZWJydWFyaScgPT4gMiwKCQknbWFhcnQnID0+IDMsCgkJJ2FwcmlsJyA9PiA0LAoJCSdtZWknID0+IDUsCgkJJ2p1bmknID0+IDYsCgkJJ2p1bGknID0+IDcsCgkJJ2F1Z3VzdHVzJyA9PiA4LAoJCSdzZXB0ZW1iZXInID0+IDksCgkJJ29rdG9iZXInID0+IDEwLAoJCSdub3ZlbWJlcicgPT4gMTEsCgkJJ2RlY2VtYmVyJyA9PiAxMiwKCQkvLyBGcmVuY2gKCQknamFudmllcicgPT4gMSwKCQknZsOpdnJpZXInID0+IDIsCgkJJ21hcnMnID0+IDMsCgkJJ2F2cmlsJyA9PiA0LAoJCSdtYWknID0+IDUsCgkJJ2p1aW4nID0+IDYsCgkJJ2p1aWxsZXQnID0+IDcsCgkJJ2Fvw7t0JyA9PiA4LAoJCSdzZXB0ZW1icmUnID0+IDksCgkJJ29jdG9icmUnID0+IDEwLAoJCSdub3ZlbWJyZScgPT4gMTEsCgkJJ2TDqWNlbWJyZScgPT4gMTIsCgkJLy8gR2VybWFuCgkJJ2phbnVhcicgPT4gMSwKCQknZmVicnVhcicgPT4gMiwKCQknbcOkcnonID0+IDMsCgkJJ2FwcmlsJyA9PiA0LAoJCSdtYWknID0+IDUsCgkJJ2p1bmknID0+IDYsCgkJJ2p1bGknID0+IDcsCgkJJ2F1Z3VzdCcgPT4gOCwKCQknc2VwdGVtYmVyJyA9PiA5LAoJCSdva3RvYmVyJyA9PiAxMCwKCQknbm92ZW1iZXInID0+IDExLAoJCSdkZXplbWJlcicgPT4gMTIsCgkJLy8gSXRhbGlhbgoJCSdnZW5uYWlvJyA9PiAxLAoJCSdmZWJicmFpbycgPT4gMiwKCQknbWFyem8nID0+IDMsCgkJJ2FwcmlsZScgPT4gNCwKCQknbWFnZ2lvJyA9PiA1LAoJCSdnaXVnbm8nID0+IDYsCgkJJ2x1Z2xpbycgPT4gNywKCQknYWdvc3RvJyA9PiA4LAoJCSdzZXR0ZW1icmUnID0+IDksCgkJJ290dG9icmUnID0+IDEwLAoJCSdub3ZlbWJyZScgPT4gMTEsCgkJJ2RpY2VtYnJlJyA9PiAxMiwKCQkvLyBTcGFuaXNoCgkJJ2VuZXJvJyA9PiAxLAoJCSdmZWJyZXJvJyA9PiAyLAoJCSdtYXJ6bycgPT4gMywKCQknYWJyaWwnID0+IDQsCgkJJ21heW8nID0+IDUsCgkJJ2p1bmlvJyA9PiA2LAoJCSdqdWxpbycgPT4gNywKCQknYWdvc3RvJyA9PiA4LAoJCSdzZXB0aWVtYnJlJyA9PiA5LAoJCSdzZXRpZW1icmUnID0+IDksCgkJJ29jdHVicmUnID0+IDEwLAoJCSdub3ZpZW1icmUnID0+IDExLAoJCSdkaWNpZW1icmUnID0+IDEyLAoJCS8vIEZpbm5pc2gKCQkndGFtbWlrdXUnID0+IDEsCgkJJ2hlbG1pa3V1JyA9PiAyLAoJCSdtYWFsaXNrdXUnID0+IDMsCgkJJ2h1aHRpa3V1JyA9PiA0LAoJCSd0b3Vrb2t1dScgPT4gNSwKCQkna2Vzw6RrdXUnID0+IDYsCgkJJ2hlaW7DpGt1dScgPT4gNywKCQknZWxva3V1JyA9PiA4LAoJCSdzdXVza3V1JyA9PiA5LAoJCSdsb2tha3V1JyA9PiAxMCwKCQknbWFycmFzJyA9PiAxMSwKCQknam91bHVrdXUnID0+IDEyLAoJCS8vIEh1bmdhcmlhbgoJCSdqYW51w6FyJyA9PiAxLAoJCSdmZWJydcOhcicgPT4gMiwKCQknbcOhcmNpdXMnID0+IDMsCgkJJ8OhcHJpbGlzJyA9PiA0LAoJCSdtw6FqdXMnID0+IDUsCgkJJ2rDum5pdXMnID0+IDYsCgkJJ2rDumxpdXMnID0+IDcsCgkJJ2F1Z3VzenR1cycgPT4gOCwKCQknc3plcHRlbWJlcicgPT4gOSwKCQknb2t0w7NiZXInID0+IDEwLAoJCSdub3ZlbWJlcicgPT4gMTEsCgkJJ2RlY2VtYmVyJyA9PiAxMiwKCQkvLyBHcmVlawoJCSfOmc6xzr0nID0+IDEsCgkJJ86mzrXOsicgPT4gMiwKCQknzpzOrM+OJyA9PiAzLAoJCSfOnM6xz44nID0+IDMsCgkJJ86Rz4DPgScgPT4gNCwKCQknzpzOrM65JyA9PiA1LAoJCSfOnM6xz4onID0+IDUsCgkJJ86czrHOuScgPT4gNSwKCQknzpnOv8+Nzr0nID0+IDYsCgkJJ86Zzr/OvScgPT4gNiwKCQknzpnOv8+NzrsnID0+IDcsCgkJJ86Zzr/OuycgPT4gNywKCQknzpHPjc6zJyA9PiA4LAoJCSfOkc+FzrMnID0+IDgsCgkJJ86jzrXPgCcgPT4gOSwKCQknzp/Ous+EJyA9PiAxMCwKCQknzp3Ov86tJyA9PiAxMSwKCQknzpTOtc66JyA9PiAxMiwKCSk7CgoJLyoqCgkgKiBMaXN0IG9mIHRpbWV6b25lcywgYWJicmV2aWF0aW9uID0+IG9mZnNldCBmcm9tIFVUQwoJICoKCSAqIEBhY2Nlc3MgcHJvdGVjdGVkCgkgKiBAdmFyIGFycmF5CgkgKi8KCXZhciAkdGltZXpvbmUgPSBhcnJheSgKCQknQUNEVCcgPT4gMzc4MDAsCgkJJ0FDSVQnID0+IDI4ODAwLAoJCSdBQ1NUJyA9PiAzNDIwMCwKCQknQUNUJyA9PiAtMTgwMDAsCgkJJ0FDV0RUJyA9PiAzNTEwMCwKCQknQUNXU1QnID0+IDMxNTAwLAoJCSdBRURUJyA9PiAzOTYwMCwKCQknQUVTVCcgPT4gMzYwMDAsCgkJJ0FGVCcgPT4gMTYyMDAsCgkJJ0FLRFQnID0+IC0yODgwMCwKCQknQUtTVCcgPT4gLTMyNDAwLAoJCSdBTURUJyA9PiAxODAwMCwKCQknQU1UJyA9PiAtMTQ0MDAsCgkJJ0FOQVNUJyA9PiA0NjgwMCwKCQknQU5BVCcgPT4gNDMyMDAsCgkJJ0FSVCcgPT4gLTEwODAwLAoJCSdBWk9TVCcgPT4gLTM2MDAsCgkJJ0FaU1QnID0+IDE4MDAwLAoJCSdBWlQnID0+IDE0NDAwLAoJCSdCSU9UJyA9PiAyMTYwMCwKCQknQklUJyA9PiAtNDMyMDAsCgkJJ0JPVCcgPT4gLTE0NDAwLAoJCSdCUlNUJyA9PiAtNzIwMCwKCQknQlJUJyA9PiAtMTA4MDAsCgkJJ0JTVCcgPT4gMzYwMCwKCQknQlRUJyA9PiAyMTYwMCwKCQknQ0FTVCcgPT4gMTgwMDAsCgkJJ0NBVCcgPT4gNzIwMCwKCQknQ0NUJyA9PiAyMzQwMCwKCQknQ0RUJyA9PiAtMTgwMDAsCgkJJ0NFRFQnID0+IDcyMDAsCgkJJ0NFVCcgPT4gMzYwMCwKCQknQ0dTVCcgPT4gLTcyMDAsCgkJJ0NHVCcgPT4gLTEwODAwLAoJCSdDSEFEVCcgPT4gNDk1MDAsCgkJJ0NIQVNUJyA9PiA0NTkwMCwKCQknQ0lTVCcgPT4gLTI4ODAwLAoJCSdDS1QnID0+IC0zNjAwMCwKCQknQ0xEVCcgPT4gLTEwODAwLAoJCSdDTFNUJyA9PiAtMTQ0MDAsCgkJJ0NPVCcgPT4gLTE4MDAwLAoJCSdDU1QnID0+IC0yMTYwMCwKCQknQ1ZUJyA9PiAtMzYwMCwKCQknQ1hUJyA9PiAyNTIwMCwKCQknREFWVCcgPT4gMjUyMDAsCgkJJ0RUQVQnID0+IDM2MDAwLAoJCSdFQURUJyA9PiAtMTgwMDAsCgkJJ0VBU1QnID0+IC0yMTYwMCwKCQknRUFUJyA9PiAxMDgwMCwKCQknRUNUJyA9PiAtMTgwMDAsCgkJJ0VEVCcgPT4gLTE0NDAwLAoJCSdFRVNUJyA9PiAxMDgwMCwKCQknRUVUJyA9PiA3MjAwLAoJCSdFR1QnID0+IC0zNjAwLAoJCSdFS1NUJyA9PiAyMTYwMCwKCQknRVNUJyA9PiAtMTgwMDAsCgkJJ0ZKVCcgPT4gNDMyMDAsCgkJJ0ZLRFQnID0+IC0xMDgwMCwKCQknRktTVCcgPT4gLTE0NDAwLAoJCSdGTlQnID0+IC03MjAwLAoJCSdHQUxUJyA9PiAtMjE2MDAsCgkJJ0dFRFQnID0+IDE0NDAwLAoJCSdHRVNUJyA9PiAxMDgwMCwKCQknR0ZUJyA9PiAtMTA4MDAsCgkJJ0dJTFQnID0+IDQzMjAwLAoJCSdHSVQnID0+IC0zMjQwMCwKCQknR1NUJyA9PiAxNDQwMCwKCQknR1NUJyA9PiAtNzIwMCwKCQknR1lUJyA9PiAtMTQ0MDAsCgkJJ0hBQScgPT4gLTEwODAwLAoJCSdIQUMnID0+IC0xODAwMCwKCQknSEFEVCcgPT4gLTMyNDAwLAoJCSdIQUUnID0+IC0xNDQwMCwKCQknSEFQJyA9PiAtMjUyMDAsCgkJJ0hBUicgPT4gLTIxNjAwLAoJCSdIQVNUJyA9PiAtMzYwMDAsCgkJJ0hBVCcgPT4gLTkwMDAsCgkJJ0hBWScgPT4gLTI4ODAwLAoJCSdIS1NUJyA9PiAyODgwMCwKCQknSE1UJyA9PiAxODAwMCwKCQknSE5BJyA9PiAtMTQ0MDAsCgkJJ0hOQycgPT4gLTIxNjAwLAoJCSdITkUnID0+IC0xODAwMCwKCQknSE5QJyA9PiAtMjg4MDAsCgkJJ0hOUicgPT4gLTI1MjAwLAoJCSdITlQnID0+IC0xMjYwMCwKCQknSE5ZJyA9PiAtMzI0MDAsCgkJJ0lSRFQnID0+IDE2MjAwLAoJCSdJUktTVCcgPT4gMzI0MDAsCgkJJ0lSS1QnID0+IDI4ODAwLAoJCSdJUlNUJyA9PiAxMjYwMCwKCQknSkZEVCcgPT4gLTEwODAwLAoJCSdKRlNUJyA9PiAtMTQ0MDAsCgkJJ0pTVCcgPT4gMzI0MDAsCgkJJ0tHU1QnID0+IDIxNjAwLAoJCSdLR1QnID0+IDE4MDAwLAoJCSdLT1NUJyA9PiAzOTYwMCwKCQknS09WU1QnID0+IDI4ODAwLAoJCSdLT1ZUJyA9PiAyNTIwMCwKCQknS1JBU1QnID0+IDI4ODAwLAoJCSdLUkFUJyA9PiAyNTIwMCwKCQknS1NUJyA9PiAzMjQwMCwKCQknTEhEVCcgPT4gMzk2MDAsCgkJJ0xIU1QnID0+IDM3ODAwLAoJCSdMSU5UJyA9PiA1MDQwMCwKCQknTEtUJyA9PiAyMTYwMCwKCQknTUFHU1QnID0+IDQzMjAwLAoJCSdNQUdUJyA9PiAzOTYwMCwKCQknTUFXVCcgPT4gMjE2MDAsCgkJJ01EVCcgPT4gLTIxNjAwLAoJCSdNRVNaJyA9PiA3MjAwLAoJCSdNRVonID0+IDM2MDAsCgkJJ01IVCcgPT4gNDMyMDAsCgkJJ01JVCcgPT4gLTM0MjAwLAoJCSdNTlNUJyA9PiAzMjQwMCwKCQknTVNEVCcgPT4gMTQ0MDAsCgkJJ01TU1QnID0+IDEwODAwLAoJCSdNU1QnID0+IC0yNTIwMCwKCQknTVVUJyA9PiAxNDQwMCwKCQknTVZUJyA9PiAxODAwMCwKCQknTVlUJyA9PiAyODgwMCwKCQknTkNUJyA9PiAzOTYwMCwKCQknTkRUJyA9PiAtOTAwMCwKCQknTkZUJyA9PiA0MTQwMCwKCQknTk1JVCcgPT4gMzYwMDAsCgkJJ05PVlNUJyA9PiAyNTIwMCwKCQknTk9WVCcgPT4gMjE2MDAsCgkJJ05QVCcgPT4gMjA3MDAsCgkJJ05SVCcgPT4gNDMyMDAsCgkJJ05TVCcgPT4gLTEyNjAwLAoJCSdOVVQnID0+IC0zOTYwMCwKCQknTlpEVCcgPT4gNDY4MDAsCgkJJ05aU1QnID0+IDQzMjAwLAoJCSdPTVNTVCcgPT4gMjUyMDAsCgkJJ09NU1QnID0+IDIxNjAwLAoJCSdQRFQnID0+IC0yNTIwMCwKCQknUEVUJyA9PiAtMTgwMDAsCgkJJ1BFVFNUJyA9PiA0NjgwMCwKCQknUEVUVCcgPT4gNDMyMDAsCgkJJ1BHVCcgPT4gMzYwMDAsCgkJJ1BIT1QnID0+IDQ2ODAwLAoJCSdQSFQnID0+IDI4ODAwLAoJCSdQS1QnID0+IDE4MDAwLAoJCSdQTURUJyA9PiAtNzIwMCwKCQknUE1TVCcgPT4gLTEwODAwLAoJCSdQT05UJyA9PiAzOTYwMCwKCQknUFNUJyA9PiAtMjg4MDAsCgkJJ1BXVCcgPT4gMzI0MDAsCgkJJ1BZU1QnID0+IC0xMDgwMCwKCQknUFlUJyA9PiAtMTQ0MDAsCgkJJ1JFVCcgPT4gMTQ0MDAsCgkJJ1JPVFQnID0+IC0xMDgwMCwKCQknU0FNU1QnID0+IDE4MDAwLAoJCSdTQU1UJyA9PiAxNDQwMCwKCQknU0FTVCcgPT4gNzIwMCwKCQknU0JUJyA9PiAzOTYwMCwKCQknU0NEVCcgPT4gNDY4MDAsCgkJJ1NDU1QnID0+IDQzMjAwLAoJCSdTQ1QnID0+IDE0NDAwLAoJCSdTRVNUJyA9PiAzNjAwLAoJCSdTR1QnID0+IDI4ODAwLAoJCSdTSVQnID0+IDI4ODAwLAoJCSdTUlQnID0+IC0xMDgwMCwKCQknU1NUJyA9PiAtMzk2MDAsCgkJJ1NZU1QnID0+IDEwODAwLAoJCSdTWVQnID0+IDcyMDAsCgkJJ1RGVCcgPT4gMTgwMDAsCgkJJ1RIQVQnID0+IC0zNjAwMCwKCQknVEpUJyA9PiAxODAwMCwKCQknVEtUJyA9PiAtMzYwMDAsCgkJJ1RNVCcgPT4gMTgwMDAsCgkJJ1RPVCcgPT4gNDY4MDAsCgkJJ1RQVCcgPT4gMzI0MDAsCgkJJ1RSVVQnID0+IDM2MDAwLAoJCSdUVlQnID0+IDQzMjAwLAoJCSdUV1QnID0+IDI4ODAwLAoJCSdVWVNUJyA9PiAtNzIwMCwKCQknVVlUJyA9PiAtMTA4MDAsCgkJJ1VaVCcgPT4gMTgwMDAsCgkJJ1ZFVCcgPT4gLTE0NDAwLAoJCSdWTEFTVCcgPT4gMzk2MDAsCgkJJ1ZMQVQnID0+IDM2MDAwLAoJCSdWT1NUJyA9PiAyMTYwMCwKCQknVlVUJyA9PiAzOTYwMCwKCQknV0FTVCcgPT4gNzIwMCwKCQknV0FUJyA9PiAzNjAwLAoJCSdXRFQnID0+IDMyNDAwLAoJCSdXRVNUJyA9PiAzNjAwLAoJCSdXRlQnID0+IDQzMjAwLAoJCSdXSUInID0+IDI1MjAwLAoJCSdXSVQnID0+IDMyNDAwLAoJCSdXSVRBJyA9PiAyODgwMCwKCQknV0tTVCcgPT4gMTgwMDAsCgkJJ1dTVCcgPT4gMjg4MDAsCgkJJ1lBS1NUJyA9PiAzNjAwMCwKCQknWUFLVCcgPT4gMzI0MDAsCgkJJ1lBUFQnID0+IDM2MDAwLAoJCSdZRUtTVCcgPT4gMjE2MDAsCgkJJ1lFS1QnID0+IDE4MDAwLAoJKTsKCgkvKioKCSAqIENhY2hlZCBQQ1JFIGZvciBTaW1wbGVQaWVfUGFyc2VfRGF0ZTo6JGRheQoJICoKCSAqIEBhY2Nlc3MgcHJvdGVjdGVkCgkgKiBAdmFyIHN0cmluZwoJICovCgl2YXIgJGRheV9wY3JlOwoKCS8qKgoJICogQ2FjaGVkIFBDUkUgZm9yIFNpbXBsZVBpZV9QYXJzZV9EYXRlOjokbW9udGgKCSAqCgkgKiBAYWNjZXNzIHByb3RlY3RlZAoJICogQHZhciBzdHJpbmcKCSAqLwoJdmFyICRtb250aF9wY3JlOwoKCS8qKgoJICogQXJyYXkgb2YgdXNlci1hZGRlZCBjYWxsYmFjayBtZXRob2RzCgkgKgoJICogQGFjY2VzcyBwcml2YXRlCgkgKiBAdmFyIGFycmF5CgkgKi8KCXZhciAkYnVpbHRfaW4gPSBhcnJheSgpOwoKCS8qKgoJICogQXJyYXkgb2YgdXNlci1hZGRlZCBjYWxsYmFjayBtZXRob2RzCgkgKgoJICogQGFjY2VzcyBwcml2YXRlCgkgKiBAdmFyIGFycmF5CgkgKi8KCXZhciAkdXNlciA9IGFycmF5KCk7CgoJLyoqCgkgKiBDcmVhdGUgbmV3IFNpbXBsZVBpZV9QYXJzZV9EYXRlIG9iamVjdCwgYW5kIHNldCBzZWxmOjpkYXlfcGNyZSwKCSAqIHNlbGY6Om1vbnRoX3BjcmUsIGFuZCBzZWxmOjpidWlsdF9pbgoJICoKCSAqIEBhY2Nlc3MgcHJpdmF0ZQoJICovCglmdW5jdGlvbiBTaW1wbGVQaWVfUGFyc2VfRGF0ZSgpCgl7CgkJJHRoaXMtPmRheV9wY3JlID0gJygnIC4gaW1wbG9kZShhcnJheV9rZXlzKCR0aGlzLT5kYXkpLCAnfCcpIC4gJyknOwoJCSR0aGlzLT5tb250aF9wY3JlID0gJygnIC4gaW1wbG9kZShhcnJheV9rZXlzKCR0aGlzLT5tb250aCksICd8JykgLiAnKSc7CgoJCXN0YXRpYyAkY2FjaGU7CgkJaWYgKCFpc3NldCgkY2FjaGVbZ2V0X2NsYXNzKCR0aGlzKV0pKQoJCXsKCQkJaWYgKGV4dGVuc2lvbl9sb2FkZWQoJ1JlZmxlY3Rpb24nKSkKCQkJewoJCQkJJGNsYXNzID0gbmV3IFJlZmxlY3Rpb25DbGFzcyhnZXRfY2xhc3MoJHRoaXMpKTsKCQkJCSRtZXRob2RzID0gJGNsYXNzLT5nZXRNZXRob2RzKCk7CgkJCQkkYWxsX21ldGhvZHMgPSBhcnJheSgpOwoJCQkJZm9yZWFjaCAoJG1ldGhvZHMgYXMgJG1ldGhvZCkKCQkJCXsKCQkJCQkkYWxsX21ldGhvZHNbXSA9ICRtZXRob2QtPmdldE5hbWUoKTsKCQkJCX0KCQkJfQoJCQllbHNlCgkJCXsKCQkJCSRhbGxfbWV0aG9kcyA9IGdldF9jbGFzc19tZXRob2RzKCR0aGlzKTsKCQkJfQoKCQkJZm9yZWFjaCAoJGFsbF9tZXRob2RzIGFzICRtZXRob2QpCgkJCXsKCQkJCWlmIChzdHJ0b2xvd2VyKHN1YnN0cigkbWV0aG9kLCAwLCA1KSkgPT09ICdkYXRlXycpCgkJCQl7CgkJCQkJJGNhY2hlW2dldF9jbGFzcygkdGhpcyldW10gPSAkbWV0aG9kOwoJCQkJfQoJCQl9CgkJfQoKCQlmb3JlYWNoICgkY2FjaGVbZ2V0X2NsYXNzKCR0aGlzKV0gYXMgJG1ldGhvZCkKCQl7CgkJCSR0aGlzLT5idWlsdF9pbltdID0gJG1ldGhvZDsKCQl9Cgl9CgoJLyoqCgkgKiBHZXQgdGhlIG9iamVjdAoJICoKCSAqIEBhY2Nlc3MgcHVibGljCgkgKi8KCWZ1bmN0aW9uIGdldCgpCgl7CgkJc3RhdGljICRvYmplY3Q7CgkJaWYgKCEkb2JqZWN0KQoJCXsKCQkJJG9iamVjdCA9IG5ldyBTaW1wbGVQaWVfUGFyc2VfRGF0ZTsKCQl9CgkJcmV0dXJuICRvYmplY3Q7Cgl9CgoJLyoqCgkgKiBQYXJzZSBhIGRhdGUKCSAqCgkgKiBAZmluYWwKCSAqIEBhY2Nlc3MgcHVibGljCgkgKiBAcGFyYW0gc3RyaW5nICRkYXRlIERhdGUgdG8gcGFyc2UKCSAqIEByZXR1cm4gaW50IFRpbWVzdGFtcCBjb3JyZXNwb25kaW5nIHRvIGRhdGUgc3RyaW5nLCBvciBmYWxzZSBvbiBmYWlsdXJlCgkgKi8KCWZ1bmN0aW9uIHBhcnNlKCRkYXRlKQoJewoJCWZvcmVhY2ggKCR0aGlzLT51c2VyIGFzICRtZXRob2QpCgkJewoJCQlpZiAoKCRyZXR1cm5lZCA9IGNhbGxfdXNlcl9mdW5jKCRtZXRob2QsICRkYXRlKSkgIT09IGZhbHNlKQoJCQl7CgkJCQlyZXR1cm4gJHJldHVybmVkOwoJCQl9CgkJfQoKCQlmb3JlYWNoICgkdGhpcy0+YnVpbHRfaW4gYXMgJG1ldGhvZCkKCQl7CgkJCWlmICgoJHJldHVybmVkID0gY2FsbF91c2VyX2Z1bmMoYXJyYXkoJiR0aGlzLCAkbWV0aG9kKSwgJGRhdGUpKSAhPT0gZmFsc2UpCgkJCXsKCQkJCXJldHVybiAkcmV0dXJuZWQ7CgkJCX0KCQl9CgoJCXJldHVybiBmYWxzZTsKCX0KCgkvKioKCSAqIEFkZCBhIGNhbGxiYWNrIG1ldGhvZCB0byBwYXJzZSBhIGRhdGUKCSAqCgkgKiBAZmluYWwKCSAqIEBhY2Nlc3MgcHVibGljCgkgKiBAcGFyYW0gY2FsbGJhY2sgJGNhbGxiYWNrCgkgKi8KCWZ1bmN0aW9uIGFkZF9jYWxsYmFjaygkY2FsbGJhY2spCgl7CgkJaWYgKGlzX2NhbGxhYmxlKCRjYWxsYmFjaykpCgkJewoJCQkkdGhpcy0+dXNlcltdID0gJGNhbGxiYWNrOwoJCX0KCQllbHNlCgkJewoJCQl0cmlnZ2VyX2Vycm9yKCdVc2VyLXN1cHBsaWVkIGZ1bmN0aW9uIG11c3QgYmUgYSB2YWxpZCBjYWxsYmFjaycsIEVfVVNFUl9XQVJOSU5HKTsKCQl9Cgl9CgoJLyoqCgkgKiBQYXJzZSBhIHN1cGVyc2V0IG9mIFczQy1EVEYgKGFsbG93cyBoeXBoZW5zIGFuZCBjb2xvbnMgdG8gYmUgb21pdHRlZCwgYXMKCSAqIHdlbGwgYXMgYWxsb3dpbmcgYW55IG9mIHVwcGVyIG9yIGxvd2VyIGNhc2UgIlQiLCBob3Jpem9udGFsIHRhYnMsIG9yCgkgKiBzcGFjZXMgdG8gYmUgdXNlZCBhcyB0aGUgdGltZSBzZXBlcmF0b3IgKGluY2x1ZGluZyBtb3JlIHRoYW4gb25lKSkKCSAqCgkgKiBAYWNjZXNzIHByb3RlY3RlZAoJICogQHJldHVybiBpbnQgVGltZXN0YW1wCgkgKi8KCWZ1bmN0aW9uIGRhdGVfdzNjZHRmKCRkYXRlKQoJewoJCXN0YXRpYyAkcGNyZTsKCQlpZiAoISRwY3JlKQoJCXsKCQkJJHllYXIgPSAnKFswLTldezR9KSc7CgkJCSRtb250aCA9ICRkYXkgPSAkaG91ciA9ICRtaW51dGUgPSAkc2Vjb25kID0gJyhbMC05XXsyfSknOwoJCQkkZGVjaW1hbCA9ICcoWzAtOV0qKSc7CgkJCSR6b25lID0gJyg/OihaKXwoWytcLV0pKFswLTldezEsMn0pOj8oWzAtOV17MSwyfSkpJzsKCQkJJHBjcmUgPSAnL14nIC4gJHllYXIgLiAnKD86LT8nIC4gJG1vbnRoIC4gJyg/Oi0/JyAuICRkYXkgLiAnKD86W1R0XHgwOVx4MjBdKycgLiAkaG91ciAuICcoPzo6PycgLiAkbWludXRlIC4gJyg/Ojo/JyAuICRzZWNvbmQgLiAnKD86LicgLiAkZGVjaW1hbCAuICcpPyk/KT8nIC4gJHpvbmUgLiAnKT8pPyk/JC8nOwoJCX0KCQlpZiAocHJlZ19tYXRjaCgkcGNyZSwgJGRhdGUsICRtYXRjaCkpCgkJewoJCQkvKgoJCQlDYXB0dXJpbmcgc3VicGF0dGVybnM6CgkJCTE6IFllYXIKCQkJMjogTW9udGgKCQkJMzogRGF5CgkJCTQ6IEhvdXIKCQkJNTogTWludXRlCgkJCTY6IFNlY29uZAoJCQk3OiBEZWNpbWFsIGZyYWN0aW9uIG9mIGEgc2Vjb25kCgkJCTg6IFp1bHUKCQkJOTogVGltZXpvbmUgwrEKCQkJMTA6IFRpbWV6b25lIGhvdXJzCgkJCTExOiBUaW1lem9uZSBtaW51dGVzCgkJCSovCgoJCQkvLyBGaWxsIGluIGVtcHR5IG1hdGNoZXMKCQkJZm9yICgkaSA9IGNvdW50KCRtYXRjaCk7ICRpIDw9IDM7ICRpKyspCgkJCXsKCQkJCSRtYXRjaFskaV0gPSAnMSc7CgkJCX0KCgkJCWZvciAoJGkgPSBjb3VudCgkbWF0Y2gpOyAkaSA8PSA3OyAkaSsrKQoJCQl7CgkJCQkkbWF0Y2hbJGldID0gJzAnOwoJCQl9CgoJCQkvLyBOdW1lcmljIHRpbWV6b25lCgkJCWlmIChpc3NldCgkbWF0Y2hbOV0pICYmICRtYXRjaFs5XSAhPT0gJycpCgkJCXsKCQkJCSR0aW1lem9uZSA9ICRtYXRjaFsxMF0gKiAzNjAwOwoJCQkJJHRpbWV6b25lICs9ICRtYXRjaFsxMV0gKiA2MDsKCQkJCWlmICgkbWF0Y2hbOV0gPT09ICctJykKCQkJCXsKCQkJCQkkdGltZXpvbmUgPSAwIC0gJHRpbWV6b25lOwoJCQkJfQoJCQl9CgkJCWVsc2UKCQkJewoJCQkJJHRpbWV6b25lID0gMDsKCQkJfQoKCQkJLy8gQ29udmVydCB0aGUgbnVtYmVyIG9mIHNlY29uZHMgdG8gYW4gaW50ZWdlciwgdGFraW5nIGRlY2ltYWxzIGludG8gYWNjb3VudAoJCQkkc2Vjb25kID0gcm91bmQoJG1hdGNoWzZdICsgJG1hdGNoWzddIC8gcG93KDEwLCBzdHJsZW4oJG1hdGNoWzddKSkpOwoKCQkJcmV0dXJuIGdtbWt0aW1lKCRtYXRjaFs0XSwgJG1hdGNoWzVdLCAkc2Vjb25kLCAkbWF0Y2hbMl0sICRtYXRjaFszXSwgJG1hdGNoWzFdKSAtICR0aW1lem9uZTsKCQl9CgkJZWxzZQoJCXsKCQkJcmV0dXJuIGZhbHNlOwoJCX0KCX0KCgkvKioKCSAqIFJlbW92ZSBSRkM4MjIgY29tbWVudHMKCSAqCgkgKiBAYWNjZXNzIHByb3RlY3RlZAoJICogQHBhcmFtIHN0cmluZyAkZGF0YSBEYXRhIHRvIHN0cmlwIGNvbW1lbnRzIGZyb20KCSAqIEByZXR1cm4gc3RyaW5nIENvbW1lbnQgc3RyaXBwZWQgc3RyaW5nCgkgKi8KCWZ1bmN0aW9uIHJlbW92ZV9yZmMyODIyX2NvbW1lbnRzKCRzdHJpbmcpCgl7CgkJJHN0cmluZyA9IChzdHJpbmcpICRzdHJpbmc7CgkJJHBvc2l0aW9uID0gMDsKCQkkbGVuZ3RoID0gc3RybGVuKCRzdHJpbmcpOwoJCSRkZXB0aCA9IDA7CgoJCSRvdXRwdXQgPSAnJzsKCgkJd2hpbGUgKCRwb3NpdGlvbiA8ICRsZW5ndGggJiYgKCRwb3MgPSBzdHJwb3MoJHN0cmluZywgJygnLCAkcG9zaXRpb24pKSAhPT0gZmFsc2UpCgkJewoJCQkkb3V0cHV0IC49IHN1YnN0cigkc3RyaW5nLCAkcG9zaXRpb24sICRwb3MgLSAkcG9zaXRpb24pOwoJCQkkcG9zaXRpb24gPSAkcG9zICsgMTsKCQkJaWYgKCRzdHJpbmdbJHBvcyAtIDFdICE9PSAnXFwnKQoJCQl7CgkJCQkkZGVwdGgrKzsKCQkJCXdoaWxlICgkZGVwdGggJiYgJHBvc2l0aW9uIDwgJGxlbmd0aCkKCQkJCXsKCQkJCQkkcG9zaXRpb24gKz0gc3RyY3Nwbigkc3RyaW5nLCAnKCknLCAkcG9zaXRpb24pOwoJCQkJCWlmICgkc3RyaW5nWyRwb3NpdGlvbiAtIDFdID09PSAnXFwnKQoJCQkJCXsKCQkJCQkJJHBvc2l0aW9uKys7CgkJCQkJCWNvbnRpbnVlOwoJCQkJCX0KCQkJCQllbHNlaWYgKGlzc2V0KCRzdHJpbmdbJHBvc2l0aW9uXSkpCgkJCQkJewoJCQkJCQlzd2l0Y2ggKCRzdHJpbmdbJHBvc2l0aW9uXSkKCQkJCQkJewoJCQkJCQkJY2FzZSAnKCc6CgkJCQkJCQkJJGRlcHRoKys7CgkJCQkJCQkJYnJlYWs7CgoJCQkJCQkJY2FzZSAnKSc6CgkJCQkJCQkJJGRlcHRoLS07CgkJCQkJCQkJYnJlYWs7CgkJCQkJCX0KCQkJCQkJJHBvc2l0aW9uKys7CgkJCQkJfQoJCQkJCWVsc2UKCQkJCQl7CgkJCQkJCWJyZWFrOwoJCQkJCX0KCQkJCX0KCQkJfQoJCQllbHNlCgkJCXsKCQkJCSRvdXRwdXQgLj0gJygnOwoJCQl9CgkJfQoJCSRvdXRwdXQgLj0gc3Vic3RyKCRzdHJpbmcsICRwb3NpdGlvbik7CgoJCXJldHVybiAkb3V0cHV0OwoJfQoKCS8qKgoJICogUGFyc2UgUkZDMjgyMidzIGRhdGUgZm9ybWF0CgkgKgoJICogQGFjY2VzcyBwcm90ZWN0ZWQKCSAqIEByZXR1cm4gaW50IFRpbWVzdGFtcAoJICovCglmdW5jdGlvbiBkYXRlX3JmYzI4MjIoJGRhdGUpCgl7CgkJc3RhdGljICRwY3JlOwoJCWlmICghJHBjcmUpCgkJewoJCQkkd3NwID0gJ1tceDA5XHgyMF0nOwoJCQkkZndzID0gJyg/OicgLiAkd3NwIC4gJyt8JyAuICR3c3AgLiAnKig/Olx4MERceDBBJyAuICR3c3AgLiAnKykrKSc7CgkJCSRvcHRpb25hbF9md3MgPSAkZndzIC4gJz8nOwoJCQkkZGF5X25hbWUgPSAkdGhpcy0+ZGF5X3BjcmU7CgkJCSRtb250aCA9ICR0aGlzLT5tb250aF9wY3JlOwoJCQkkZGF5ID0gJyhbMC05XXsxLDJ9KSc7CgkJCSRob3VyID0gJG1pbnV0ZSA9ICRzZWNvbmQgPSAnKFswLTldezJ9KSc7CgkJCSR5ZWFyID0gJyhbMC05XXsyLDR9KSc7CgkJCSRudW1fem9uZSA9ICcoWytcLV0pKFswLTldezJ9KShbMC05XXsyfSknOwoJCQkkY2hhcmFjdGVyX3pvbmUgPSAnKFtBLVpdezEsNX0pJzsKCQkJJHpvbmUgPSAnKD86JyAuICRudW1fem9uZSAuICd8JyAuICRjaGFyYWN0ZXJfem9uZSAuICcpJzsKCQkJJHBjcmUgPSAnLyg/OicgLiAkb3B0aW9uYWxfZndzIC4gJGRheV9uYW1lIC4gJG9wdGlvbmFsX2Z3cyAuICcsKT8nIC4gJG9wdGlvbmFsX2Z3cyAuICRkYXkgLiAkZndzIC4gJG1vbnRoIC4gJGZ3cyAuICR5ZWFyIC4gJGZ3cyAuICRob3VyIC4gJG9wdGlvbmFsX2Z3cyAuICc6JyAuICRvcHRpb25hbF9md3MgLiAkbWludXRlIC4gJyg/OicgLiAkb3B0aW9uYWxfZndzIC4gJzonIC4gJG9wdGlvbmFsX2Z3cyAuICRzZWNvbmQgLiAnKT8nIC4gJGZ3cyAuICR6b25lIC4gJy9pJzsKCQl9CgkJaWYgKHByZWdfbWF0Y2goJHBjcmUsICR0aGlzLT5yZW1vdmVfcmZjMjgyMl9jb21tZW50cygkZGF0ZSksICRtYXRjaCkpCgkJewoJCQkvKgoJCQlDYXB0dXJpbmcgc3VicGF0dGVybnM6CgkJCTE6IERheSBuYW1lCgkJCTI6IERheQoJCQkzOiBNb250aAoJCQk0OiBZZWFyCgkJCTU6IEhvdXIKCQkJNjogTWludXRlCgkJCTc6IFNlY29uZAoJCQk4OiBUaW1lem9uZSDCsQoJCQk5OiBUaW1lem9uZSBob3VycwoJCQkxMDogVGltZXpvbmUgbWludXRlcwoJCQkxMTogQWxwaGFiZXRpYyB0aW1lem9uZQoJCQkqLwoKCQkJLy8gRmluZCB0aGUgbW9udGggbnVtYmVyCgkJCSRtb250aCA9ICR0aGlzLT5tb250aFtzdHJ0b2xvd2VyKCRtYXRjaFszXSldOwoKCQkJLy8gTnVtZXJpYyB0aW1lem9uZQoJCQlpZiAoJG1hdGNoWzhdICE9PSAnJykKCQkJewoJCQkJJHRpbWV6b25lID0gJG1hdGNoWzldICogMzYwMDsKCQkJCSR0aW1lem9uZSArPSAkbWF0Y2hbMTBdICogNjA7CgkJCQlpZiAoJG1hdGNoWzhdID09PSAnLScpCgkJCQl7CgkJCQkJJHRpbWV6b25lID0gMCAtICR0aW1lem9uZTsKCQkJCX0KCQkJfQoJCQkvLyBDaGFyYWN0ZXIgdGltZXpvbmUKCQkJZWxzZWlmIChpc3NldCgkdGhpcy0+dGltZXpvbmVbc3RydG91cHBlcigkbWF0Y2hbMTFdKV0pKQoJCQl7CgkJCQkkdGltZXpvbmUgPSAkdGhpcy0+dGltZXpvbmVbc3RydG91cHBlcigkbWF0Y2hbMTFdKV07CgkJCX0KCQkJLy8gQXNzdW1lIGV2ZXJ5dGhpbmcgZWxzZSB0byBiZSAtMDAwMAoJCQllbHNlCgkJCXsKCQkJCSR0aW1lem9uZSA9IDA7CgkJCX0KCgkJCS8vIERlYWwgd2l0aCAyLzMgZGlnaXQgeWVhcnMKCQkJaWYgKCRtYXRjaFs0XSA8IDUwKQoJCQl7CgkJCQkkbWF0Y2hbNF0gKz0gMjAwMDsKCQkJfQoJCQllbHNlaWYgKCRtYXRjaFs0XSA8IDEwMDApCgkJCXsKCQkJCSRtYXRjaFs0XSArPSAxOTAwOwoJCQl9CgoJCQkvLyBTZWNvbmQgaXMgb3B0aW9uYWwsIGlmIGl0IGlzIGVtcHR5IHNldCBpdCB0byB6ZXJvCgkJCWlmICgkbWF0Y2hbN10gIT09ICcnKQoJCQl7CgkJCQkkc2Vjb25kID0gJG1hdGNoWzddOwoJCQl9CgkJCWVsc2UKCQkJewoJCQkJJHNlY29uZCA9IDA7CgkJCX0KCgkJCXJldHVybiBnbW1rdGltZSgkbWF0Y2hbNV0sICRtYXRjaFs2XSwgJHNlY29uZCwgJG1vbnRoLCAkbWF0Y2hbMl0sICRtYXRjaFs0XSkgLSAkdGltZXpvbmU7CgkJfQoJCWVsc2UKCQl7CgkJCXJldHVybiBmYWxzZTsKCQl9Cgl9CgoJLyoqCgkgKiBQYXJzZSBSRkM4NTAncyBkYXRlIGZvcm1hdAoJICoKCSAqIEBhY2Nlc3MgcHJvdGVjdGVkCgkgKiBAcmV0dXJuIGludCBUaW1lc3RhbXAKCSAqLwoJZnVuY3Rpb24gZGF0ZV9yZmM4NTAoJGRhdGUpCgl7CgkJc3RhdGljICRwY3JlOwoJCWlmICghJHBjcmUpCgkJewoJCQkkc3BhY2UgPSAnW1x4MDlceDIwXSsnOwoJCQkkZGF5X25hbWUgPSAkdGhpcy0+ZGF5X3BjcmU7CgkJCSRtb250aCA9ICR0aGlzLT5tb250aF9wY3JlOwoJCQkkZGF5ID0gJyhbMC05XXsxLDJ9KSc7CgkJCSR5ZWFyID0gJGhvdXIgPSAkbWludXRlID0gJHNlY29uZCA9ICcoWzAtOV17Mn0pJzsKCQkJJHpvbmUgPSAnKFtBLVpdezEsNX0pJzsKCQkJJHBjcmUgPSAnL14nIC4gJGRheV9uYW1lIC4gJywnIC4gJHNwYWNlIC4gJGRheSAuICctJyAuICRtb250aCAuICctJyAuICR5ZWFyIC4gJHNwYWNlIC4gJGhvdXIgLiAnOicgLiAkbWludXRlIC4gJzonIC4gJHNlY29uZCAuICRzcGFjZSAuICR6b25lIC4gJyQvaSc7CgkJfQoJCWlmIChwcmVnX21hdGNoKCRwY3JlLCAkZGF0ZSwgJG1hdGNoKSkKCQl7CgkJCS8qCgkJCUNhcHR1cmluZyBzdWJwYXR0ZXJuczoKCQkJMTogRGF5IG5hbWUKCQkJMjogRGF5CgkJCTM6IE1vbnRoCgkJCTQ6IFllYXIKCQkJNTogSG91cgoJCQk2OiBNaW51dGUKCQkJNzogU2Vjb25kCgkJCTg6IFRpbWV6b25lCgkJCSovCgoJCQkvLyBNb250aAoJCQkkbW9udGggPSAkdGhpcy0+bW9udGhbc3RydG9sb3dlcigkbWF0Y2hbM10pXTsKCgkJCS8vIENoYXJhY3RlciB0aW1lem9uZQoJCQlpZiAoaXNzZXQoJHRoaXMtPnRpbWV6b25lW3N0cnRvdXBwZXIoJG1hdGNoWzhdKV0pKQoJCQl7CgkJCQkkdGltZXpvbmUgPSAkdGhpcy0+dGltZXpvbmVbc3RydG91cHBlcigkbWF0Y2hbOF0pXTsKCQkJfQoJCQkvLyBBc3N1bWUgZXZlcnl0aGluZyBlbHNlIHRvIGJlIC0wMDAwCgkJCWVsc2UKCQkJewoJCQkJJHRpbWV6b25lID0gMDsKCQkJfQoKCQkJLy8gRGVhbCB3aXRoIDIgZGlnaXQgeWVhcgoJCQlpZiAoJG1hdGNoWzRdIDwgNTApCgkJCXsKCQkJCSRtYXRjaFs0XSArPSAyMDAwOwoJCQl9CgkJCWVsc2UKCQkJewoJCQkJJG1hdGNoWzRdICs9IDE5MDA7CgkJCX0KCgkJCXJldHVybiBnbW1rdGltZSgkbWF0Y2hbNV0sICRtYXRjaFs2XSwgJG1hdGNoWzddLCAkbW9udGgsICRtYXRjaFsyXSwgJG1hdGNoWzRdKSAtICR0aW1lem9uZTsKCQl9CgkJZWxzZQoJCXsKCQkJcmV0dXJuIGZhbHNlOwoJCX0KCX0KCgkvKioKCSAqIFBhcnNlIEM5OSdzIGFzY3RpbWUoKSdzIGRhdGUgZm9ybWF0CgkgKgoJICogQGFjY2VzcyBwcm90ZWN0ZWQKCSAqIEByZXR1cm4gaW50IFRpbWVzdGFtcAoJICovCglmdW5jdGlvbiBkYXRlX2FzY3RpbWUoJGRhdGUpCgl7CgkJc3RhdGljICRwY3JlOwoJCWlmICghJHBjcmUpCgkJewoJCQkkc3BhY2UgPSAnW1x4MDlceDIwXSsnOwoJCQkkd2RheV9uYW1lID0gJHRoaXMtPmRheV9wY3JlOwoJCQkkbW9uX25hbWUgPSAkdGhpcy0+bW9udGhfcGNyZTsKCQkJJGRheSA9ICcoWzAtOV17MSwyfSknOwoJCQkkaG91ciA9ICRzZWMgPSAkbWluID0gJyhbMC05XXsyfSknOwoJCQkkeWVhciA9ICcoWzAtOV17NH0pJzsKCQkJJHRlcm1pbmF0b3IgPSAnXHgwQT9ceDAwPyc7CgkJCSRwY3JlID0gJy9eJyAuICR3ZGF5X25hbWUgLiAkc3BhY2UgLiAkbW9uX25hbWUgLiAkc3BhY2UgLiAkZGF5IC4gJHNwYWNlIC4gJGhvdXIgLiAnOicgLiAkbWluIC4gJzonIC4gJHNlYyAuICRzcGFjZSAuICR5ZWFyIC4gJHRlcm1pbmF0b3IgLiAnJC9pJzsKCQl9CgkJaWYgKHByZWdfbWF0Y2goJHBjcmUsICRkYXRlLCAkbWF0Y2gpKQoJCXsKCQkJLyoKCQkJQ2FwdHVyaW5nIHN1YnBhdHRlcm5zOgoJCQkxOiBEYXkgbmFtZQoJCQkyOiBNb250aAoJCQkzOiBEYXkKCQkJNDogSG91cgoJCQk1OiBNaW51dGUKCQkJNjogU2Vjb25kCgkJCTc6IFllYXIKCQkJKi8KCgkJCSRtb250aCA9ICR0aGlzLT5tb250aFtzdHJ0b2xvd2VyKCRtYXRjaFsyXSldOwoJCQlyZXR1cm4gZ21ta3RpbWUoJG1hdGNoWzRdLCAkbWF0Y2hbNV0sICRtYXRjaFs2XSwgJG1vbnRoLCAkbWF0Y2hbM10sICRtYXRjaFs3XSk7CgkJfQoJCWVsc2UKCQl7CgkJCXJldHVybiBmYWxzZTsKCQl9Cgl9CgoJLyoqCgkgKiBQYXJzZSBkYXRlcyB1c2luZyBzdHJ0b3RpbWUoKQoJICoKCSAqIEBhY2Nlc3MgcHJvdGVjdGVkCgkgKiBAcmV0dXJuIGludCBUaW1lc3RhbXAKCSAqLwoJZnVuY3Rpb24gZGF0ZV9zdHJ0b3RpbWUoJGRhdGUpCgl7CgkJJHN0cnRvdGltZSA9IHN0cnRvdGltZSgkZGF0ZSk7CgkJaWYgKCRzdHJ0b3RpbWUgPT09IC0xIHx8ICRzdHJ0b3RpbWUgPT09IGZhbHNlKQoJCXsKCQkJcmV0dXJuIGZhbHNlOwoJCX0KCQllbHNlCgkJewoJCQlyZXR1cm4gJHN0cnRvdGltZTsKCQl9Cgl9Cn0KCi8qKgogKiBDb250ZW50LXR5cGUgc25pZmZpbmcKICoKICogQHBhY2thZ2UgU2ltcGxlUGllCiAqLwpjbGFzcyBTaW1wbGVQaWVfQ29udGVudF9UeXBlX1NuaWZmZXIKewoJLyoqCgkgKiBGaWxlIG9iamVjdAoJICoKCSAqIEB2YXIgU2ltcGxlUGllX0ZpbGUKCSAqIEBhY2Nlc3MgcHJpdmF0ZQoJICovCgl2YXIgJGZpbGU7CgoJLyoqCgkgKiBDcmVhdGUgYW4gaW5zdGFuY2Ugb2YgdGhlIGNsYXNzIHdpdGggdGhlIGlucHV0IGZpbGUKCSAqCgkgKiBAYWNjZXNzIHB1YmxpYwoJICogQHBhcmFtIFNpbXBsZVBpZV9Db250ZW50X1R5cGVfU25pZmZlciAkZmlsZSBJbnB1dCBmaWxlCgkgKi8KCWZ1bmN0aW9uIFNpbXBsZVBpZV9Db250ZW50X1R5cGVfU25pZmZlcigkZmlsZSkKCXsKCQkkdGhpcy0+ZmlsZSA9ICRmaWxlOwoJfQoKCS8qKgoJICogR2V0IHRoZSBDb250ZW50LVR5cGUgb2YgdGhlIHNwZWNpZmllZCBmaWxlCgkgKgoJICogQGFjY2VzcyBwdWJsaWMKCSAqIEByZXR1cm4gc3RyaW5nIEFjdHVhbCBDb250ZW50LVR5cGUKCSAqLwoJZnVuY3Rpb24gZ2V0X3R5cGUoKQoJewoJCWlmIChpc3NldCgkdGhpcy0+ZmlsZS0+aGVhZGVyc1snY29udGVudC10eXBlJ10pKQoJCXsKCQkJaWYgKCFpc3NldCgkdGhpcy0+ZmlsZS0+aGVhZGVyc1snY29udGVudC1lbmNvZGluZyddKQoJCQkJJiYgKCR0aGlzLT5maWxlLT5oZWFkZXJzWydjb250ZW50LXR5cGUnXSA9PT0gJ3RleHQvcGxhaW4nCgkJCQkJfHwgJHRoaXMtPmZpbGUtPmhlYWRlcnNbJ2NvbnRlbnQtdHlwZSddID09PSAndGV4dC9wbGFpbjsgY2hhcnNldD1JU08tODg1OS0xJwoJCQkJCXx8ICR0aGlzLT5maWxlLT5oZWFkZXJzWydjb250ZW50LXR5cGUnXSA9PT0gJ3RleHQvcGxhaW47IGNoYXJzZXQ9aXNvLTg4NTktMScpKQoJCQl7CgkJCQlyZXR1cm4gJHRoaXMtPnRleHRfb3JfYmluYXJ5KCk7CgkJCX0KCgkJCWlmICgoJHBvcyA9IHN0cnBvcygkdGhpcy0+ZmlsZS0+aGVhZGVyc1snY29udGVudC10eXBlJ10sICc7JykpICE9PSBmYWxzZSkKCQkJewoJCQkJJG9mZmljaWFsID0gc3Vic3RyKCR0aGlzLT5maWxlLT5oZWFkZXJzWydjb250ZW50LXR5cGUnXSwgMCwgJHBvcyk7CgkJCX0KCQkJZWxzZQoJCQl7CgkJCQkkb2ZmaWNpYWwgPSAkdGhpcy0+ZmlsZS0+aGVhZGVyc1snY29udGVudC10eXBlJ107CgkJCX0KCQkJJG9mZmljaWFsID0gc3RydG9sb3dlcigkb2ZmaWNpYWwpOwoKCQkJaWYgKCRvZmZpY2lhbCA9PT0gJ3Vua25vd24vdW5rbm93bicKCQkJCXx8ICRvZmZpY2lhbCA9PT0gJ2FwcGxpY2F0aW9uL3Vua25vd24nKQoJCQl7CgkJCQlyZXR1cm4gJHRoaXMtPnVua25vd24oKTsKCQkJfQoJCQllbHNlaWYgKHN1YnN0cigkb2ZmaWNpYWwsIC00KSA9PT0gJyt4bWwnCgkJCQl8fCAkb2ZmaWNpYWwgPT09ICd0ZXh0L3htbCcKCQkJCXx8ICRvZmZpY2lhbCA9PT0gJ2FwcGxpY2F0aW9uL3htbCcpCgkJCXsKCQkJCXJldHVybiAkb2ZmaWNpYWw7CgkJCX0KCQkJZWxzZWlmIChzdWJzdHIoJG9mZmljaWFsLCAwLCA2KSA9PT0gJ2ltYWdlLycpCgkJCXsKCQkJCWlmICgkcmV0dXJuID0gJHRoaXMtPmltYWdlKCkpCgkJCQl7CgkJCQkJcmV0dXJuICRyZXR1cm47CgkJCQl9CgkJCQllbHNlCgkJCQl7CgkJCQkJcmV0dXJuICRvZmZpY2lhbDsKCQkJCX0KCQkJfQoJCQllbHNlaWYgKCRvZmZpY2lhbCA9PT0gJ3RleHQvaHRtbCcpCgkJCXsKCQkJCXJldHVybiAkdGhpcy0+ZmVlZF9vcl9odG1sKCk7CgkJCX0KCQkJZWxzZQoJCQl7CgkJCQlyZXR1cm4gJG9mZmljaWFsOwoJCQl9CgkJfQoJCWVsc2UKCQl7CgkJCXJldHVybiAkdGhpcy0+dW5rbm93bigpOwoJCX0KCX0KCgkvKioKCSAqIFNuaWZmIHRleHQgb3IgYmluYXJ5CgkgKgoJICogQGFjY2VzcyBwcml2YXRlCgkgKiBAcmV0dXJuIHN0cmluZyBBY3R1YWwgQ29udGVudC1UeXBlCgkgKi8KCWZ1bmN0aW9uIHRleHRfb3JfYmluYXJ5KCkKCXsKCQlpZiAoc3Vic3RyKCR0aGlzLT5maWxlLT5ib2R5LCAwLCAyKSA9PT0gIlx4RkVceEZGIgoJCQl8fCBzdWJzdHIoJHRoaXMtPmZpbGUtPmJvZHksIDAsIDIpID09PSAiXHhGRlx4RkUiCgkJCXx8IHN1YnN0cigkdGhpcy0+ZmlsZS0+Ym9keSwgMCwgNCkgPT09ICJceDAwXHgwMFx4RkVceEZGIgoJCQl8fCBzdWJzdHIoJHRoaXMtPmZpbGUtPmJvZHksIDAsIDMpID09PSAiXHhFRlx4QkJceEJGIikKCQl7CgkJCXJldHVybiAndGV4dC9wbGFpbic7CgkJfQoJCWVsc2VpZiAocHJlZ19tYXRjaCgnL1tceDAwLVx4MDhceDBFLVx4MUFceDFDLVx4MUZdLycsICR0aGlzLT5maWxlLT5ib2R5KSkKCQl7CgkJCXJldHVybiAnYXBwbGljYXRpb24vb2N0ZWN0LXN0cmVhbSc7CgkJfQoJCWVsc2UKCQl7CgkJCXJldHVybiAndGV4dC9wbGFpbic7CgkJfQoJfQoKCS8qKgoJICogU25pZmYgdW5rbm93bgoJICoKCSAqIEBhY2Nlc3MgcHJpdmF0ZQoJICogQHJldHVybiBzdHJpbmcgQWN0dWFsIENvbnRlbnQtVHlwZQoJICovCglmdW5jdGlvbiB1bmtub3duKCkKCXsKCQkkd3MgPSBzdHJzcG4oJHRoaXMtPmZpbGUtPmJvZHksICJceDA5XHgwQVx4MEJceDBDXHgwRFx4MjAiKTsKCQlpZiAoc3RydG9sb3dlcihzdWJzdHIoJHRoaXMtPmZpbGUtPmJvZHksICR3cywgMTQpKSA9PT0gJzwhZG9jdHlwZSBodG1sJwoJCQl8fCBzdHJ0b2xvd2VyKHN1YnN0cigkdGhpcy0+ZmlsZS0+Ym9keSwgJHdzLCA1KSkgPT09ICc8aHRtbCcKCQkJfHwgc3RydG9sb3dlcihzdWJzdHIoJHRoaXMtPmZpbGUtPmJvZHksICR3cywgNykpID09PSAnPHNjcmlwdCcpCgkJewoJCQlyZXR1cm4gJ3RleHQvaHRtbCc7CgkJfQoJCWVsc2VpZiAoc3Vic3RyKCR0aGlzLT5maWxlLT5ib2R5LCAwLCA1KSA9PT0gJyVQREYtJykKCQl7CgkJCXJldHVybiAnYXBwbGljYXRpb24vcGRmJzsKCQl9CgkJZWxzZWlmIChzdWJzdHIoJHRoaXMtPmZpbGUtPmJvZHksIDAsIDExKSA9PT0gJyUhUFMtQWRvYmUtJykKCQl7CgkJCXJldHVybiAnYXBwbGljYXRpb24vcG9zdHNjcmlwdCc7CgkJfQoJCWVsc2VpZiAoc3Vic3RyKCR0aGlzLT5maWxlLT5ib2R5LCAwLCA2KSA9PT0gJ0dJRjg3YScKCQkJfHwgc3Vic3RyKCR0aGlzLT5maWxlLT5ib2R5LCAwLCA2KSA9PT0gJ0dJRjg5YScpCgkJewoJCQlyZXR1cm4gJ2ltYWdlL2dpZic7CgkJfQoJCWVsc2VpZiAoc3Vic3RyKCR0aGlzLT5maWxlLT5ib2R5LCAwLCA4KSA9PT0gIlx4ODlceDUwXHg0RVx4NDdceDBEXHgwQVx4MUFceDBBIikKCQl7CgkJCXJldHVybiAnaW1hZ2UvcG5nJzsKCQl9CgkJZWxzZWlmIChzdWJzdHIoJHRoaXMtPmZpbGUtPmJvZHksIDAsIDMpID09PSAiXHhGRlx4RDhceEZGIikKCQl7CgkJCXJldHVybiAnaW1hZ2UvanBlZyc7CgkJfQoJCWVsc2VpZiAoc3Vic3RyKCR0aGlzLT5maWxlLT5ib2R5LCAwLCAyKSA9PT0gIlx4NDJceDREIikKCQl7CgkJCXJldHVybiAnaW1hZ2UvYm1wJzsKCQl9CgkJZWxzZQoJCXsKCQkJcmV0dXJuICR0aGlzLT50ZXh0X29yX2JpbmFyeSgpOwoJCX0KCX0KCgkvKioKCSAqIFNuaWZmIGltYWdlcwoJICoKCSAqIEBhY2Nlc3MgcHJpdmF0ZQoJICogQHJldHVybiBzdHJpbmcgQWN0dWFsIENvbnRlbnQtVHlwZQoJICovCglmdW5jdGlvbiBpbWFnZSgpCgl7CgkJaWYgKHN1YnN0cigkdGhpcy0+ZmlsZS0+Ym9keSwgMCwgNikgPT09ICdHSUY4N2EnCgkJCXx8IHN1YnN0cigkdGhpcy0+ZmlsZS0+Ym9keSwgMCwgNikgPT09ICdHSUY4OWEnKQoJCXsKCQkJcmV0dXJuICdpbWFnZS9naWYnOwoJCX0KCQllbHNlaWYgKHN1YnN0cigkdGhpcy0+ZmlsZS0+Ym9keSwgMCwgOCkgPT09ICJceDg5XHg1MFx4NEVceDQ3XHgwRFx4MEFceDFBXHgwQSIpCgkJewoJCQlyZXR1cm4gJ2ltYWdlL3BuZyc7CgkJfQoJCWVsc2VpZiAoc3Vic3RyKCR0aGlzLT5maWxlLT5ib2R5LCAwLCAzKSA9PT0gIlx4RkZceEQ4XHhGRiIpCgkJewoJCQlyZXR1cm4gJ2ltYWdlL2pwZWcnOwoJCX0KCQllbHNlaWYgKHN1YnN0cigkdGhpcy0+ZmlsZS0+Ym9keSwgMCwgMikgPT09ICJceDQyXHg0RCIpCgkJewoJCQlyZXR1cm4gJ2ltYWdlL2JtcCc7CgkJfQoJCWVsc2UKCQl7CgkJCXJldHVybiBmYWxzZTsKCQl9Cgl9CgoJLyoqCgkgKiBTbmlmZiBIVE1MCgkgKgoJICogQGFjY2VzcyBwcml2YXRlCgkgKiBAcmV0dXJuIHN0cmluZyBBY3R1YWwgQ29udGVudC1UeXBlCgkgKi8KCWZ1bmN0aW9uIGZlZWRfb3JfaHRtbCgpCgl7CgkJJGxlbiA9IHN0cmxlbigkdGhpcy0+ZmlsZS0+Ym9keSk7CgkJJHBvcyA9IHN0cnNwbigkdGhpcy0+ZmlsZS0+Ym9keSwgIlx4MDlceDBBXHgwRFx4MjAiKTsKCgkJd2hpbGUgKCRwb3MgPCAkbGVuKQoJCXsKCQkJc3dpdGNoICgkdGhpcy0+ZmlsZS0+Ym9keVskcG9zXSkKCQkJewoJCQkJY2FzZSAiXHgwOSI6CgkJCQljYXNlICJceDBBIjoKCQkJCWNhc2UgIlx4MEQiOgoJCQkJY2FzZSAiXHgyMCI6CgkJCQkJJHBvcyArPSBzdHJzcG4oJHRoaXMtPmZpbGUtPmJvZHksICJceDA5XHgwQVx4MERceDIwIiwgJHBvcyk7CgkJCQkJY29udGludWUgMjsKCgkJCQljYXNlICc8JzoKCQkJCQkkcG9zKys7CgkJCQkJYnJlYWs7CgoJCQkJZGVmYXVsdDoKCQkJCQlyZXR1cm4gJ3RleHQvaHRtbCc7CgkJCX0KCgkJCWlmIChzdWJzdHIoJHRoaXMtPmZpbGUtPmJvZHksICRwb3MsIDMpID09PSAnIS0tJykKCQkJewoJCQkJJHBvcyArPSAzOwoJCQkJaWYgKCRwb3MgPCAkbGVuICYmICgkcG9zID0gc3RycG9zKCR0aGlzLT5maWxlLT5ib2R5LCAnLS0+JywgJHBvcykpICE9PSBmYWxzZSkKCQkJCXsKCQkJCQkkcG9zICs9IDM7CgkJCQl9CgkJCQllbHNlCgkJCQl7CgkJCQkJcmV0dXJuICd0ZXh0L2h0bWwnOwoJCQkJfQoJCQl9CgkJCWVsc2VpZiAoc3Vic3RyKCR0aGlzLT5maWxlLT5ib2R5LCAkcG9zLCAxKSA9PT0gJyEnKQoJCQl7CgkJCQlpZiAoJHBvcyA8ICRsZW4gJiYgKCRwb3MgPSBzdHJwb3MoJHRoaXMtPmZpbGUtPmJvZHksICc+JywgJHBvcykpICE9PSBmYWxzZSkKCQkJCXsKCQkJCQkkcG9zKys7CgkJCQl9CgkJCQllbHNlCgkJCQl7CgkJCQkJcmV0dXJuICd0ZXh0L2h0bWwnOwoJCQkJfQoJCQl9CgkJCWVsc2VpZiAoc3Vic3RyKCR0aGlzLT5maWxlLT5ib2R5LCAkcG9zLCAxKSA9PT0gJz8nKQoJCQl7CgkJCQlpZiAoJHBvcyA8ICRsZW4gJiYgKCRwb3MgPSBzdHJwb3MoJHRoaXMtPmZpbGUtPmJvZHksICc/PicsICRwb3MpKSAhPT0gZmFsc2UpCgkJCQl7CgkJCQkJJHBvcyArPSAyOwoJCQkJfQoJCQkJZWxzZQoJCQkJewoJCQkJCXJldHVybiAndGV4dC9odG1sJzsKCQkJCX0KCQkJfQoJCQllbHNlaWYgKHN1YnN0cigkdGhpcy0+ZmlsZS0+Ym9keSwgJHBvcywgMykgPT09ICdyc3MnCgkJCQl8fCBzdWJzdHIoJHRoaXMtPmZpbGUtPmJvZHksICRwb3MsIDcpID09PSAncmRmOlJERicpCgkJCXsKCQkJCXJldHVybiAnYXBwbGljYXRpb24vcnNzK3htbCc7CgkJCX0KCQkJZWxzZWlmIChzdWJzdHIoJHRoaXMtPmZpbGUtPmJvZHksICRwb3MsIDQpID09PSAnZmVlZCcpCgkJCXsKCQkJCXJldHVybiAnYXBwbGljYXRpb24vYXRvbSt4bWwnOwoJCQl9CgkJCWVsc2UKCQkJewoJCQkJcmV0dXJuICd0ZXh0L2h0bWwnOwoJCQl9CgkJfQoKCQlyZXR1cm4gJ3RleHQvaHRtbCc7Cgl9Cn0KCi8qKgogKiBQYXJzZXMgdGhlIFhNTCBEZWNsYXJhdGlvbgogKgogKiBAcGFja2FnZSBTaW1wbGVQaWUKICovCmNsYXNzIFNpbXBsZVBpZV9YTUxfRGVjbGFyYXRpb25fUGFyc2VyCnsKCS8qKgoJICogWE1MIFZlcnNpb24KCSAqCgkgKiBAYWNjZXNzIHB1YmxpYwoJICogQHZhciBzdHJpbmcKCSAqLwoJdmFyICR2ZXJzaW9uID0gJzEuMCc7CgoJLyoqCgkgKiBFbmNvZGluZwoJICoKCSAqIEBhY2Nlc3MgcHVibGljCgkgKiBAdmFyIHN0cmluZwoJICovCgl2YXIgJGVuY29kaW5nID0gJ1VURi04JzsKCgkvKioKCSAqIFN0YW5kYWxvbmUKCSAqCgkgKiBAYWNjZXNzIHB1YmxpYwoJICogQHZhciBib29sCgkgKi8KCXZhciAkc3RhbmRhbG9uZSA9IGZhbHNlOwoKCS8qKgoJICogQ3VycmVudCBzdGF0ZSBvZiB0aGUgc3RhdGUgbWFjaGluZQoJICoKCSAqIEBhY2Nlc3MgcHJpdmF0ZQoJICogQHZhciBzdHJpbmcKCSAqLwoJdmFyICRzdGF0ZSA9ICdiZWZvcmVfdmVyc2lvbl9uYW1lJzsKCgkvKioKCSAqIElucHV0IGRhdGEKCSAqCgkgKiBAYWNjZXNzIHByaXZhdGUKCSAqIEB2YXIgc3RyaW5nCgkgKi8KCXZhciAkZGF0YSA9ICcnOwoKCS8qKgoJICogSW5wdXQgZGF0YSBsZW5ndGggKHRvIGF2b2lkIGNhbGxpbmcgc3RybGVuKCkgZXZlcnl0aW1lIHRoaXMgaXMgbmVlZGVkKQoJICoKCSAqIEBhY2Nlc3MgcHJpdmF0ZQoJICogQHZhciBpbnQKCSAqLwoJdmFyICRkYXRhX2xlbmd0aCA9IDA7CgoJLyoqCgkgKiBDdXJyZW50IHBvc2l0aW9uIG9mIHRoZSBwb2ludGVyCgkgKgoJICogQHZhciBpbnQKCSAqIEBhY2Nlc3MgcHJpdmF0ZQoJICovCgl2YXIgJHBvc2l0aW9uID0gMDsKCgkvKioKCSAqIENyZWF0ZSBhbiBpbnN0YW5jZSBvZiB0aGUgY2xhc3Mgd2l0aCB0aGUgaW5wdXQgZGF0YQoJICoKCSAqIEBhY2Nlc3MgcHVibGljCgkgKiBAcGFyYW0gc3RyaW5nICRkYXRhIElucHV0IGRhdGEKCSAqLwoJZnVuY3Rpb24gU2ltcGxlUGllX1hNTF9EZWNsYXJhdGlvbl9QYXJzZXIoJGRhdGEpCgl7CgkJJHRoaXMtPmRhdGEgPSAkZGF0YTsKCQkkdGhpcy0+ZGF0YV9sZW5ndGggPSBzdHJsZW4oJHRoaXMtPmRhdGEpOwoJfQoKCS8qKgoJICogUGFyc2UgdGhlIGlucHV0IGRhdGEKCSAqCgkgKiBAYWNjZXNzIHB1YmxpYwoJICogQHJldHVybiBib29sIHRydWUgb24gc3VjY2VzcywgZmFsc2Ugb24gZmFpbHVyZQoJICovCglmdW5jdGlvbiBwYXJzZSgpCgl7CgkJd2hpbGUgKCR0aGlzLT5zdGF0ZSAmJiAkdGhpcy0+c3RhdGUgIT09ICdlbWl0JyAmJiAkdGhpcy0+aGFzX2RhdGEoKSkKCQl7CgkJCSRzdGF0ZSA9ICR0aGlzLT5zdGF0ZTsKCQkJJHRoaXMtPiRzdGF0ZSgpOwoJCX0KCQkkdGhpcy0+ZGF0YSA9ICcnOwoJCWlmICgkdGhpcy0+c3RhdGUgPT09ICdlbWl0JykKCQl7CgkJCXJldHVybiB0cnVlOwoJCX0KCQllbHNlCgkJewoJCQkkdGhpcy0+dmVyc2lvbiA9ICcnOwoJCQkkdGhpcy0+ZW5jb2RpbmcgPSAnJzsKCQkJJHRoaXMtPnN0YW5kYWxvbmUgPSAnJzsKCQkJcmV0dXJuIGZhbHNlOwoJCX0KCX0KCgkvKioKCSAqIENoZWNrIHdoZXRoZXIgdGhlcmUgaXMgZGF0YSBiZXlvbmQgdGhlIHBvaW50ZXIKCSAqCgkgKiBAYWNjZXNzIHByaXZhdGUKCSAqIEByZXR1cm4gYm9vbCB0cnVlIGlmIHRoZXJlIGlzIGZ1cnRoZXIgZGF0YSwgZmFsc2UgaWYgbm90CgkgKi8KCWZ1bmN0aW9uIGhhc19kYXRhKCkKCXsKCQlyZXR1cm4gKGJvb2wpICgkdGhpcy0+cG9zaXRpb24gPCAkdGhpcy0+ZGF0YV9sZW5ndGgpOwoJfQoKCS8qKgoJICogQWR2YW5jZSBwYXN0IGFueSB3aGl0ZXNwYWNlCgkgKgoJICogQHJldHVybiBpbnQgTnVtYmVyIG9mIHdoaXRlc3BhY2UgY2hhcmFjdGVycyBwYXNzZWQKCSAqLwoJZnVuY3Rpb24gc2tpcF93aGl0ZXNwYWNlKCkKCXsKCQkkd2hpdGVzcGFjZSA9IHN0cnNwbigkdGhpcy0+ZGF0YSwgIlx4MDlceDBBXHgwRFx4MjAiLCAkdGhpcy0+cG9zaXRpb24pOwoJCSR0aGlzLT5wb3NpdGlvbiArPSAkd2hpdGVzcGFjZTsKCQlyZXR1cm4gJHdoaXRlc3BhY2U7Cgl9CgoJLyoqCgkgKiBSZWFkIHZhbHVlCgkgKi8KCWZ1bmN0aW9uIGdldF92YWx1ZSgpCgl7CgkJJHF1b3RlID0gc3Vic3RyKCR0aGlzLT5kYXRhLCAkdGhpcy0+cG9zaXRpb24sIDEpOwoJCWlmICgkcXVvdGUgPT09ICciJyB8fCAkcXVvdGUgPT09ICInIikKCQl7CgkJCSR0aGlzLT5wb3NpdGlvbisrOwoJCQkkbGVuID0gc3RyY3NwbigkdGhpcy0+ZGF0YSwgJHF1b3RlLCAkdGhpcy0+cG9zaXRpb24pOwoJCQlpZiAoJHRoaXMtPmhhc19kYXRhKCkpCgkJCXsKCQkJCSR2YWx1ZSA9IHN1YnN0cigkdGhpcy0+ZGF0YSwgJHRoaXMtPnBvc2l0aW9uLCAkbGVuKTsKCQkJCSR0aGlzLT5wb3NpdGlvbiArPSAkbGVuICsgMTsKCQkJCXJldHVybiAkdmFsdWU7CgkJCX0KCQl9CgkJcmV0dXJuIGZhbHNlOwoJfQoKCWZ1bmN0aW9uIGJlZm9yZV92ZXJzaW9uX25hbWUoKQoJewoJCWlmICgkdGhpcy0+c2tpcF93aGl0ZXNwYWNlKCkpCgkJewoJCQkkdGhpcy0+c3RhdGUgPSAndmVyc2lvbl9uYW1lJzsKCQl9CgkJZWxzZQoJCXsKCQkJJHRoaXMtPnN0YXRlID0gZmFsc2U7CgkJfQoJfQoKCWZ1bmN0aW9uIHZlcnNpb25fbmFtZSgpCgl7CgkJaWYgKHN1YnN0cigkdGhpcy0+ZGF0YSwgJHRoaXMtPnBvc2l0aW9uLCA3KSA9PT0gJ3ZlcnNpb24nKQoJCXsKCQkJJHRoaXMtPnBvc2l0aW9uICs9IDc7CgkJCSR0aGlzLT5za2lwX3doaXRlc3BhY2UoKTsKCQkJJHRoaXMtPnN0YXRlID0gJ3ZlcnNpb25fZXF1YWxzJzsKCQl9CgkJZWxzZQoJCXsKCQkJJHRoaXMtPnN0YXRlID0gZmFsc2U7CgkJfQoJfQoKCWZ1bmN0aW9uIHZlcnNpb25fZXF1YWxzKCkKCXsKCQlpZiAoc3Vic3RyKCR0aGlzLT5kYXRhLCAkdGhpcy0+cG9zaXRpb24sIDEpID09PSAnPScpCgkJewoJCQkkdGhpcy0+cG9zaXRpb24rKzsKCQkJJHRoaXMtPnNraXBfd2hpdGVzcGFjZSgpOwoJCQkkdGhpcy0+c3RhdGUgPSAndmVyc2lvbl92YWx1ZSc7CgkJfQoJCWVsc2UKCQl7CgkJCSR0aGlzLT5zdGF0ZSA9IGZhbHNlOwoJCX0KCX0KCglmdW5jdGlvbiB2ZXJzaW9uX3ZhbHVlKCkKCXsKCQlpZiAoJHRoaXMtPnZlcnNpb24gPSAkdGhpcy0+Z2V0X3ZhbHVlKCkpCgkJewoJCQkkdGhpcy0+c2tpcF93aGl0ZXNwYWNlKCk7CgkJCWlmICgkdGhpcy0+aGFzX2RhdGEoKSkKCQkJewoJCQkJJHRoaXMtPnN0YXRlID0gJ2VuY29kaW5nX25hbWUnOwoJCQl9CgkJCWVsc2UKCQkJewoJCQkJJHRoaXMtPnN0YXRlID0gJ2VtaXQnOwoJCQl9CgkJfQoJCWVsc2UKCQl7CgkJCSR0aGlzLT5zdGF0ZSA9ICdzdGFuZGFsb25lX25hbWUnOwoJCX0KCX0KCglmdW5jdGlvbiBlbmNvZGluZ19uYW1lKCkKCXsKCQlpZiAoc3Vic3RyKCR0aGlzLT5kYXRhLCAkdGhpcy0+cG9zaXRpb24sIDgpID09PSAnZW5jb2RpbmcnKQoJCXsKCQkJJHRoaXMtPnBvc2l0aW9uICs9IDg7CgkJCSR0aGlzLT5za2lwX3doaXRlc3BhY2UoKTsKCQkJJHRoaXMtPnN0YXRlID0gJ2VuY29kaW5nX2VxdWFscyc7CgkJfQoJCWVsc2UKCQl7CgkJCSR0aGlzLT5zdGF0ZSA9IGZhbHNlOwoJCX0KCX0KCglmdW5jdGlvbiBlbmNvZGluZ19lcXVhbHMoKQoJewoJCWlmIChzdWJzdHIoJHRoaXMtPmRhdGEsICR0aGlzLT5wb3NpdGlvbiwgMSkgPT09ICc9JykKCQl7CgkJCSR0aGlzLT5wb3NpdGlvbisrOwoJCQkkdGhpcy0+c2tpcF93aGl0ZXNwYWNlKCk7CgkJCSR0aGlzLT5zdGF0ZSA9ICdlbmNvZGluZ192YWx1ZSc7CgkJfQoJCWVsc2UKCQl7CgkJCSR0aGlzLT5zdGF0ZSA9IGZhbHNlOwoJCX0KCX0KCglmdW5jdGlvbiBlbmNvZGluZ192YWx1ZSgpCgl7CgkJaWYgKCR0aGlzLT5lbmNvZGluZyA9ICR0aGlzLT5nZXRfdmFsdWUoKSkKCQl7CgkJCSR0aGlzLT5za2lwX3doaXRlc3BhY2UoKTsKCQkJaWYgKCR0aGlzLT5oYXNfZGF0YSgpKQoJCQl7CgkJCQkkdGhpcy0+c3RhdGUgPSAnc3RhbmRhbG9uZV9uYW1lJzsKCQkJfQoJCQllbHNlCgkJCXsKCQkJCSR0aGlzLT5zdGF0ZSA9ICdlbWl0JzsKCQkJfQoJCX0KCQllbHNlCgkJewoJCQkkdGhpcy0+c3RhdGUgPSBmYWxzZTsKCQl9Cgl9CgoJZnVuY3Rpb24gc3RhbmRhbG9uZV9uYW1lKCkKCXsKCQlpZiAoc3Vic3RyKCR0aGlzLT5kYXRhLCAkdGhpcy0+cG9zaXRpb24sIDEwKSA9PT0gJ3N0YW5kYWxvbmUnKQoJCXsKCQkJJHRoaXMtPnBvc2l0aW9uICs9IDEwOwoJCQkkdGhpcy0+c2tpcF93aGl0ZXNwYWNlKCk7CgkJCSR0aGlzLT5zdGF0ZSA9ICdzdGFuZGFsb25lX2VxdWFscyc7CgkJfQoJCWVsc2UKCQl7CgkJCSR0aGlzLT5zdGF0ZSA9IGZhbHNlOwoJCX0KCX0KCglmdW5jdGlvbiBzdGFuZGFsb25lX2VxdWFscygpCgl7CgkJaWYgKHN1YnN0cigkdGhpcy0+ZGF0YSwgJHRoaXMtPnBvc2l0aW9uLCAxKSA9PT0gJz0nKQoJCXsKCQkJJHRoaXMtPnBvc2l0aW9uKys7CgkJCSR0aGlzLT5za2lwX3doaXRlc3BhY2UoKTsKCQkJJHRoaXMtPnN0YXRlID0gJ3N0YW5kYWxvbmVfdmFsdWUnOwoJCX0KCQllbHNlCgkJewoJCQkkdGhpcy0+c3RhdGUgPSBmYWxzZTsKCQl9Cgl9CgoJZnVuY3Rpb24gc3RhbmRhbG9uZV92YWx1ZSgpCgl7CgkJaWYgKCRzdGFuZGFsb25lID0gJHRoaXMtPmdldF92YWx1ZSgpKQoJCXsKCQkJc3dpdGNoICgkc3RhbmRhbG9uZSkKCQkJewoJCQkJY2FzZSAneWVzJzoKCQkJCQkkdGhpcy0+c3RhbmRhbG9uZSA9IHRydWU7CgkJCQkJYnJlYWs7CgoJCQkJY2FzZSAnbm8nOgoJCQkJCSR0aGlzLT5zdGFuZGFsb25lID0gZmFsc2U7CgkJCQkJYnJlYWs7CgoJCQkJZGVmYXVsdDoKCQkJCQkkdGhpcy0+c3RhdGUgPSBmYWxzZTsKCQkJCQlyZXR1cm47CgkJCX0KCgkJCSR0aGlzLT5za2lwX3doaXRlc3BhY2UoKTsKCQkJaWYgKCR0aGlzLT5oYXNfZGF0YSgpKQoJCQl7CgkJCQkkdGhpcy0+c3RhdGUgPSBmYWxzZTsKCQkJfQoJCQllbHNlCgkJCXsKCQkJCSR0aGlzLT5zdGF0ZSA9ICdlbWl0JzsKCQkJfQoJCX0KCQllbHNlCgkJewoJCQkkdGhpcy0+c3RhdGUgPSBmYWxzZTsKCQl9Cgl9Cn0KCmNsYXNzIFNpbXBsZVBpZV9Mb2NhdG9yCnsKCXZhciAkdXNlcmFnZW50OwoJdmFyICR0aW1lb3V0OwoJdmFyICRmaWxlOwoJdmFyICRsb2NhbCA9IGFycmF5KCk7Cgl2YXIgJGVsc2V3aGVyZSA9IGFycmF5KCk7Cgl2YXIgJGZpbGVfY2xhc3MgPSAnU2ltcGxlUGllX0ZpbGUnOwoJdmFyICRjYWNoZWRfZW50aXRpZXMgPSBhcnJheSgpOwoJdmFyICRodHRwX2Jhc2U7Cgl2YXIgJGJhc2U7Cgl2YXIgJGJhc2VfbG9jYXRpb24gPSAwOwoJdmFyICRjaGVja2VkX2ZlZWRzID0gMDsKCXZhciAkbWF4X2NoZWNrZWRfZmVlZHMgPSAxMDsKCXZhciAkY29udGVudF90eXBlX3NuaWZmZXJfY2xhc3MgPSAnU2ltcGxlUGllX0NvbnRlbnRfVHlwZV9TbmlmZmVyJzsKCglmdW5jdGlvbiBTaW1wbGVQaWVfTG9jYXRvcigmJGZpbGUsICR0aW1lb3V0ID0gMTAsICR1c2VyYWdlbnQgPSBudWxsLCAkZmlsZV9jbGFzcyA9ICdTaW1wbGVQaWVfRmlsZScsICRtYXhfY2hlY2tlZF9mZWVkcyA9IDEwLCAkY29udGVudF90eXBlX3NuaWZmZXJfY2xhc3MgPSAnU2ltcGxlUGllX0NvbnRlbnRfVHlwZV9TbmlmZmVyJykKCXsKCQkkdGhpcy0+ZmlsZSA9JiAkZmlsZTsKCQkkdGhpcy0+ZmlsZV9jbGFzcyA9ICRmaWxlX2NsYXNzOwoJCSR0aGlzLT51c2VyYWdlbnQgPSAkdXNlcmFnZW50OwoJCSR0aGlzLT50aW1lb3V0ID0gJHRpbWVvdXQ7CgkJJHRoaXMtPm1heF9jaGVja2VkX2ZlZWRzID0gJG1heF9jaGVja2VkX2ZlZWRzOwoJCSR0aGlzLT5jb250ZW50X3R5cGVfc25pZmZlcl9jbGFzcyA9ICRjb250ZW50X3R5cGVfc25pZmZlcl9jbGFzczsKCX0KCglmdW5jdGlvbiBmaW5kKCR0eXBlID0gU0lNUExFUElFX0xPQ0FUT1JfQUxMKQoJewoJCWlmICgkdGhpcy0+aXNfZmVlZCgkdGhpcy0+ZmlsZSkpCgkJewoJCQlyZXR1cm4gJHRoaXMtPmZpbGU7CgkJfQoKCQlpZiAoJHRoaXMtPmZpbGUtPm1ldGhvZCAmIFNJTVBMRVBJRV9GSUxFX1NPVVJDRV9SRU1PVEUpCgkJewoJCQkkc25pZmZlciA9IG5ldyAkdGhpcy0+Y29udGVudF90eXBlX3NuaWZmZXJfY2xhc3MoJHRoaXMtPmZpbGUpOwoJCQlpZiAoJHNuaWZmZXItPmdldF90eXBlKCkgIT09ICd0ZXh0L2h0bWwnKQoJCQl7CgkJCQlyZXR1cm4gbnVsbDsKCQkJfQoJCX0KCgkJaWYgKCR0eXBlICYgflNJTVBMRVBJRV9MT0NBVE9SX05PTkUpCgkJewoJCQkkdGhpcy0+Z2V0X2Jhc2UoKTsKCQl9CgoJCWlmICgkdHlwZSAmIFNJTVBMRVBJRV9MT0NBVE9SX0FVVE9ESVNDT1ZFUlkgJiYgJHdvcmtpbmcgPSAkdGhpcy0+YXV0b2Rpc2NvdmVyeSgpKQoJCXsKCQkJcmV0dXJuICR3b3JraW5nOwoJCX0KCgkJaWYgKCR0eXBlICYgKFNJTVBMRVBJRV9MT0NBVE9SX0xPQ0FMX0VYVEVOU0lPTiB8IFNJTVBMRVBJRV9MT0NBVE9SX0xPQ0FMX0JPRFkgfCBTSU1QTEVQSUVfTE9DQVRPUl9SRU1PVEVfRVhURU5TSU9OIHwgU0lNUExFUElFX0xPQ0FUT1JfUkVNT1RFX0JPRFkpICYmICR0aGlzLT5nZXRfbGlua3MoKSkKCQl7CgkJCWlmICgkdHlwZSAmIFNJTVBMRVBJRV9MT0NBVE9SX0xPQ0FMX0VYVEVOU0lPTiAmJiAkd29ya2luZyA9ICR0aGlzLT5leHRlbnNpb24oJHRoaXMtPmxvY2FsKSkKCQkJewoJCQkJcmV0dXJuICR3b3JraW5nOwoJCQl9CgoJCQlpZiAoJHR5cGUgJiBTSU1QTEVQSUVfTE9DQVRPUl9MT0NBTF9CT0RZICYmICR3b3JraW5nID0gJHRoaXMtPmJvZHkoJHRoaXMtPmxvY2FsKSkKCQkJewoJCQkJcmV0dXJuICR3b3JraW5nOwoJCQl9CgoJCQlpZiAoJHR5cGUgJiBTSU1QTEVQSUVfTE9DQVRPUl9SRU1PVEVfRVhURU5TSU9OICYmICR3b3JraW5nID0gJHRoaXMtPmV4dGVuc2lvbigkdGhpcy0+ZWxzZXdoZXJlKSkKCQkJewoJCQkJcmV0dXJuICR3b3JraW5nOwoJCQl9CgoJCQlpZiAoJHR5cGUgJiBTSU1QTEVQSUVfTE9DQVRPUl9SRU1PVEVfQk9EWSAmJiAkd29ya2luZyA9ICR0aGlzLT5ib2R5KCR0aGlzLT5lbHNld2hlcmUpKQoJCQl7CgkJCQlyZXR1cm4gJHdvcmtpbmc7CgkJCX0KCQl9CgkJcmV0dXJuIG51bGw7Cgl9CgoJZnVuY3Rpb24gaXNfZmVlZCgmJGZpbGUpCgl7CgkJaWYgKCRmaWxlLT5tZXRob2QgJiBTSU1QTEVQSUVfRklMRV9TT1VSQ0VfUkVNT1RFKQoJCXsKCQkJJHNuaWZmZXIgPSBuZXcgJHRoaXMtPmNvbnRlbnRfdHlwZV9zbmlmZmVyX2NsYXNzKCRmaWxlKTsKCQkJJHNuaWZmZWQgPSAkc25pZmZlci0+Z2V0X3R5cGUoKTsKCQkJaWYgKGluX2FycmF5KCRzbmlmZmVkLCBhcnJheSgnYXBwbGljYXRpb24vcnNzK3htbCcsICdhcHBsaWNhdGlvbi9yZGYreG1sJywgJ3RleHQvcmRmJywgJ2FwcGxpY2F0aW9uL2F0b20reG1sJywgJ3RleHQveG1sJywgJ2FwcGxpY2F0aW9uL3htbCcpKSkKCQkJewoJCQkJcmV0dXJuIHRydWU7CgkJCX0KCQkJZWxzZQoJCQl7CgkJCQlyZXR1cm4gZmFsc2U7CgkJCX0KCQl9CgkJZWxzZWlmICgkZmlsZS0+bWV0aG9kICYgU0lNUExFUElFX0ZJTEVfU09VUkNFX0xPQ0FMKQoJCXsKCQkJcmV0dXJuIHRydWU7CgkJfQoJCWVsc2UKCQl7CgkJCXJldHVybiBmYWxzZTsKCQl9Cgl9CgoJZnVuY3Rpb24gZ2V0X2Jhc2UoKQoJewoJCSR0aGlzLT5odHRwX2Jhc2UgPSAkdGhpcy0+ZmlsZS0+dXJsOwoJCSR0aGlzLT5iYXNlID0gJHRoaXMtPmh0dHBfYmFzZTsKCQkkZWxlbWVudHMgPSBTaW1wbGVQaWVfTWlzYzo6Z2V0X2VsZW1lbnQoJ2Jhc2UnLCAkdGhpcy0+ZmlsZS0+Ym9keSk7CgkJZm9yZWFjaCAoJGVsZW1lbnRzIGFzICRlbGVtZW50KQoJCXsKCQkJaWYgKCRlbGVtZW50WydhdHRyaWJzJ11bJ2hyZWYnXVsnZGF0YSddICE9PSAnJykKCQkJewoJCQkJJHRoaXMtPmJhc2UgPSBTaW1wbGVQaWVfTWlzYzo6YWJzb2x1dGl6ZV91cmwodHJpbSgkZWxlbWVudFsnYXR0cmlicyddWydocmVmJ11bJ2RhdGEnXSksICR0aGlzLT5odHRwX2Jhc2UpOwoJCQkJJHRoaXMtPmJhc2VfbG9jYXRpb24gPSAkZWxlbWVudFsnb2Zmc2V0J107CgkJCQlicmVhazsKCQkJfQoJCX0KCX0KCglmdW5jdGlvbiBhdXRvZGlzY292ZXJ5KCkKCXsKCQkkbGlua3MgPSBhcnJheV9tZXJnZShTaW1wbGVQaWVfTWlzYzo6Z2V0X2VsZW1lbnQoJ2xpbmsnLCAkdGhpcy0+ZmlsZS0+Ym9keSksIFNpbXBsZVBpZV9NaXNjOjpnZXRfZWxlbWVudCgnYScsICR0aGlzLT5maWxlLT5ib2R5KSwgU2ltcGxlUGllX01pc2M6OmdldF9lbGVtZW50KCdhcmVhJywgJHRoaXMtPmZpbGUtPmJvZHkpKTsKCQkkZG9uZSA9IGFycmF5KCk7CgkJZm9yZWFjaCAoJGxpbmtzIGFzICRsaW5rKQoJCXsKCQkJaWYgKCR0aGlzLT5jaGVja2VkX2ZlZWRzID09ICR0aGlzLT5tYXhfY2hlY2tlZF9mZWVkcykKCQkJewoJCQkJYnJlYWs7CgkJCX0KCQkJaWYgKGlzc2V0KCRsaW5rWydhdHRyaWJzJ11bJ2hyZWYnXVsnZGF0YSddKSAmJiBpc3NldCgkbGlua1snYXR0cmlicyddWydyZWwnXVsnZGF0YSddKSkKCQkJewoJCQkJJHJlbCA9IGFycmF5X3VuaXF1ZShTaW1wbGVQaWVfTWlzYzo6c3BhY2Vfc2VwZXJhdGVkX3Rva2VucyhzdHJ0b2xvd2VyKCRsaW5rWydhdHRyaWJzJ11bJ3JlbCddWydkYXRhJ10pKSk7CgoJCQkJaWYgKCR0aGlzLT5iYXNlX2xvY2F0aW9uIDwgJGxpbmtbJ29mZnNldCddKQoJCQkJewoJCQkJCSRocmVmID0gU2ltcGxlUGllX01pc2M6OmFic29sdXRpemVfdXJsKHRyaW0oJGxpbmtbJ2F0dHJpYnMnXVsnaHJlZiddWydkYXRhJ10pLCAkdGhpcy0+YmFzZSk7CgkJCQl9CgkJCQllbHNlCgkJCQl7CgkJCQkJJGhyZWYgPSBTaW1wbGVQaWVfTWlzYzo6YWJzb2x1dGl6ZV91cmwodHJpbSgkbGlua1snYXR0cmlicyddWydocmVmJ11bJ2RhdGEnXSksICR0aGlzLT5odHRwX2Jhc2UpOwoJCQkJfQoKCQkJCWlmICghaW5fYXJyYXkoJGhyZWYsICRkb25lKSAmJiBpbl9hcnJheSgnZmVlZCcsICRyZWwpIHx8IChpbl9hcnJheSgnYWx0ZXJuYXRlJywgJHJlbCkgJiYgIWVtcHR5KCRsaW5rWydhdHRyaWJzJ11bJ3R5cGUnXVsnZGF0YSddKSAmJiBpbl9hcnJheShzdHJ0b2xvd2VyKFNpbXBsZVBpZV9NaXNjOjpwYXJzZV9taW1lKCRsaW5rWydhdHRyaWJzJ11bJ3R5cGUnXVsnZGF0YSddKSksIGFycmF5KCdhcHBsaWNhdGlvbi9yc3MreG1sJywgJ2FwcGxpY2F0aW9uL2F0b20reG1sJykpKSkKCQkJCXsKCQkJCQkkdGhpcy0+Y2hlY2tlZF9mZWVkcysrOwoJCQkJCSRmZWVkID0mIG5ldyAkdGhpcy0+ZmlsZV9jbGFzcygkaHJlZiwgJHRoaXMtPnRpbWVvdXQsIDUsIG51bGwsICR0aGlzLT51c2VyYWdlbnQpOwoJCQkJCWlmICgkdGhpcy0+aXNfZmVlZCgkZmVlZCkpCgkJCQkJewoJCQkJCQlyZXR1cm4gJGZlZWQ7CgkJCQkJfQoJCQkJfQoJCQkJJGRvbmVbXSA9ICRocmVmOwoJCQl9CgkJfQoJCXJldHVybiBudWxsOwoJfQoKCWZ1bmN0aW9uIGdldF9saW5rcygpCgl7CgkJJGxpbmtzID0gU2ltcGxlUGllX01pc2M6OmdldF9lbGVtZW50KCdhJywgJHRoaXMtPmZpbGUtPmJvZHkpOwoJCWZvcmVhY2ggKCRsaW5rcyBhcyAkbGluaykKCQl7CgkJCWlmIChpc3NldCgkbGlua1snYXR0cmlicyddWydocmVmJ11bJ2RhdGEnXSkpCgkJCXsKCQkJCSRocmVmID0gdHJpbSgkbGlua1snYXR0cmlicyddWydocmVmJ11bJ2RhdGEnXSk7CgkJCQkkcGFyc2VkID0gU2ltcGxlUGllX01pc2M6OnBhcnNlX3VybCgkaHJlZik7CgkJCQlpZiAoJHBhcnNlZFsnc2NoZW1lJ10gPT09ICcnIHx8IHByZWdfbWF0Y2goJy9eKGh0dHAocyl8ZmVlZCk/JC9pJywgJHBhcnNlZFsnc2NoZW1lJ10pKQoJCQkJewoJCQkJCWlmICgkdGhpcy0+YmFzZV9sb2NhdGlvbiA8ICRsaW5rWydvZmZzZXQnXSkKCQkJCQl7CgkJCQkJCSRocmVmID0gU2ltcGxlUGllX01pc2M6OmFic29sdXRpemVfdXJsKHRyaW0oJGxpbmtbJ2F0dHJpYnMnXVsnaHJlZiddWydkYXRhJ10pLCAkdGhpcy0+YmFzZSk7CgkJCQkJfQoJCQkJCWVsc2UKCQkJCQl7CgkJCQkJCSRocmVmID0gU2ltcGxlUGllX01pc2M6OmFic29sdXRpemVfdXJsKHRyaW0oJGxpbmtbJ2F0dHJpYnMnXVsnaHJlZiddWydkYXRhJ10pLCAkdGhpcy0+aHR0cF9iYXNlKTsKCQkJCQl9CgoJCQkJCSRjdXJyZW50ID0gU2ltcGxlUGllX01pc2M6OnBhcnNlX3VybCgkdGhpcy0+ZmlsZS0+dXJsKTsKCgkJCQkJaWYgKCRwYXJzZWRbJ2F1dGhvcml0eSddID09PSAnJyB8fCAkcGFyc2VkWydhdXRob3JpdHknXSA9PSAkY3VycmVudFsnYXV0aG9yaXR5J10pCgkJCQkJewoJCQkJCQkkdGhpcy0+bG9jYWxbXSA9ICRocmVmOwoJCQkJCX0KCQkJCQllbHNlCgkJCQkJewoJCQkJCQkkdGhpcy0+ZWxzZXdoZXJlW10gPSAkaHJlZjsKCQkJCQl9CgkJCQl9CgkJCX0KCQl9CgkJJHRoaXMtPmxvY2FsID0gYXJyYXlfdW5pcXVlKCR0aGlzLT5sb2NhbCk7CgkJJHRoaXMtPmVsc2V3aGVyZSA9IGFycmF5X3VuaXF1ZSgkdGhpcy0+ZWxzZXdoZXJlKTsKCQlpZiAoIWVtcHR5KCR0aGlzLT5sb2NhbCkgfHwgIWVtcHR5KCR0aGlzLT5lbHNld2hlcmUpKQoJCXsKCQkJcmV0dXJuIHRydWU7CgkJfQoJCXJldHVybiBudWxsOwoJfQoKCWZ1bmN0aW9uIGV4dGVuc2lvbigmJGFycmF5KQoJewoJCWZvcmVhY2ggKCRhcnJheSBhcyAka2V5ID0+ICR2YWx1ZSkKCQl7CgkJCWlmICgkdGhpcy0+Y2hlY2tlZF9mZWVkcyA9PSAkdGhpcy0+bWF4X2NoZWNrZWRfZmVlZHMpCgkJCXsKCQkJCWJyZWFrOwoJCQl9CgkJCWlmIChpbl9hcnJheShzdHJ0b2xvd2VyKHN0cnJjaHIoJHZhbHVlLCAnLicpKSwgYXJyYXkoJy5yc3MnLCAnLnJkZicsICcuYXRvbScsICcueG1sJykpKQoJCQl7CgkJCQkkdGhpcy0+Y2hlY2tlZF9mZWVkcysrOwoJCQkJJGZlZWQgPSYgbmV3ICR0aGlzLT5maWxlX2NsYXNzKCR2YWx1ZSwgJHRoaXMtPnRpbWVvdXQsIDUsIG51bGwsICR0aGlzLT51c2VyYWdlbnQpOwoJCQkJaWYgKCR0aGlzLT5pc19mZWVkKCRmZWVkKSkKCQkJCXsKCQkJCQlyZXR1cm4gJGZlZWQ7CgkJCQl9CgkJCQllbHNlCgkJCQl7CgkJCQkJdW5zZXQoJGFycmF5WyRrZXldKTsKCQkJCX0KCQkJfQoJCX0KCQlyZXR1cm4gbnVsbDsKCX0KCglmdW5jdGlvbiBib2R5KCYkYXJyYXkpCgl7CgkJZm9yZWFjaCAoJGFycmF5IGFzICRrZXkgPT4gJHZhbHVlKQoJCXsKCQkJaWYgKCR0aGlzLT5jaGVja2VkX2ZlZWRzID09ICR0aGlzLT5tYXhfY2hlY2tlZF9mZWVkcykKCQkJewoJCQkJYnJlYWs7CgkJCX0KCQkJaWYgKHByZWdfbWF0Y2goJy8ocnNzfHJkZnxhdG9tfHhtbCkvaScsICR2YWx1ZSkpCgkJCXsKCQkJCSR0aGlzLT5jaGVja2VkX2ZlZWRzKys7CgkJCQkkZmVlZCA9JiBuZXcgJHRoaXMtPmZpbGVfY2xhc3MoJHZhbHVlLCAkdGhpcy0+dGltZW91dCwgNSwgbnVsbCwgJHRoaXMtPnVzZXJhZ2VudCk7CgkJCQlpZiAoJHRoaXMtPmlzX2ZlZWQoJGZlZWQpKQoJCQkJewoJCQkJCXJldHVybiAkZmVlZDsKCQkJCX0KCQkJCWVsc2UKCQkJCXsKCQkJCQl1bnNldCgkYXJyYXlbJGtleV0pOwoJCQkJfQoJCQl9CgkJfQoJCXJldHVybiBudWxsOwoJfQp9CgpjbGFzcyBTaW1wbGVQaWVfUGFyc2VyCnsKCXZhciAkZXJyb3JfY29kZTsKCXZhciAkZXJyb3Jfc3RyaW5nOwoJdmFyICRjdXJyZW50X2xpbmU7Cgl2YXIgJGN1cnJlbnRfY29sdW1uOwoJdmFyICRjdXJyZW50X2J5dGU7Cgl2YXIgJHNlcGFyYXRvciA9ICcgJzsKCXZhciAkZmVlZCA9IGZhbHNlOwoJdmFyICRuYW1lc3BhY2UgPSBhcnJheSgnJyk7Cgl2YXIgJGVsZW1lbnQgPSBhcnJheSgnJyk7Cgl2YXIgJHhtbF9iYXNlID0gYXJyYXkoJycpOwoJdmFyICR4bWxfYmFzZV9leHBsaWNpdCA9IGFycmF5KGZhbHNlKTsKCXZhciAkeG1sX2xhbmcgPSBhcnJheSgnJyk7Cgl2YXIgJGRhdGEgPSBhcnJheSgpOwoJdmFyICRkYXRhcyA9IGFycmF5KGFycmF5KCkpOwoJdmFyICRjdXJyZW50X3hodG1sX2NvbnN0cnVjdCA9IC0xOwoJdmFyICRlbmNvZGluZzsKCglmdW5jdGlvbiBwYXJzZSgmJGRhdGEsICRlbmNvZGluZykKCXsKCQkvLyBVc2UgVVRGLTggaWYgd2UgZ2V0IHBhc3NlZCBVUy1BU0NJSSwgYXMgZXZlcnkgVVMtQVNDSUkgY2hhcmFjdGVyIGlzIGEgVVRGLTggY2hhcmFjdGVyCgkJaWYgKHN0cnRvdXBwZXIoJGVuY29kaW5nKSA9PSAnVVMtQVNDSUknKQoJCXsKCQkJJHRoaXMtPmVuY29kaW5nID0gJ1VURi04JzsKCQl9CgkJZWxzZQoJCXsKCQkJJHRoaXMtPmVuY29kaW5nID0gJGVuY29kaW5nOwoJCX0KCgkJLy8gU3RyaXAgQk9NOgoJCS8vIFVURi0zMiBCaWcgRW5kaWFuIEJPTQoJCWlmIChzdWJzdHIoJGRhdGEsIDAsIDQpID09PSAiXHgwMFx4MDBceEZFXHhGRiIpCgkJewoJCQkkZGF0YSA9IHN1YnN0cigkZGF0YSwgNCk7CgkJfQoJCS8vIFVURi0zMiBMaXR0bGUgRW5kaWFuIEJPTQoJCWVsc2VpZiAoc3Vic3RyKCRkYXRhLCAwLCA0KSA9PT0gIlx4RkZceEZFXHgwMFx4MDAiKQoJCXsKCQkJJGRhdGEgPSBzdWJzdHIoJGRhdGEsIDQpOwoJCX0KCQkvLyBVVEYtMTYgQmlnIEVuZGlhbiBCT00KCQllbHNlaWYgKHN1YnN0cigkZGF0YSwgMCwgMikgPT09ICJceEZFXHhGRiIpCgkJewoJCQkkZGF0YSA9IHN1YnN0cigkZGF0YSwgMik7CgkJfQoJCS8vIFVURi0xNiBMaXR0bGUgRW5kaWFuIEJPTQoJCWVsc2VpZiAoc3Vic3RyKCRkYXRhLCAwLCAyKSA9PT0gIlx4RkZceEZFIikKCQl7CgkJCSRkYXRhID0gc3Vic3RyKCRkYXRhLCAyKTsKCQl9CgkJLy8gVVRGLTggQk9NCgkJZWxzZWlmIChzdWJzdHIoJGRhdGEsIDAsIDMpID09PSAiXHhFRlx4QkJceEJGIikKCQl7CgkJCSRkYXRhID0gc3Vic3RyKCRkYXRhLCAzKTsKCQl9CgoJCWlmIChzdWJzdHIoJGRhdGEsIDAsIDUpID09PSAnPD94bWwnICYmIHN0cnNwbihzdWJzdHIoJGRhdGEsIDUsIDEpLCAiXHgwOVx4MEFceDBEXHgyMCIpICYmICgkcG9zID0gc3RycG9zKCRkYXRhLCAnPz4nKSkgIT09IGZhbHNlKQoJCXsKCQkJJGRlY2xhcmF0aW9uID0gbmV3IFNpbXBsZVBpZV9YTUxfRGVjbGFyYXRpb25fUGFyc2VyKHN1YnN0cigkZGF0YSwgNSwgJHBvcyAtIDUpKTsKCQkJaWYgKCRkZWNsYXJhdGlvbi0+cGFyc2UoKSkKCQkJewoJCQkJJGRhdGEgPSBzdWJzdHIoJGRhdGEsICRwb3MgKyAyKTsKCQkJCSRkYXRhID0gJzw/eG1sIHZlcnNpb249IicgLiAkZGVjbGFyYXRpb24tPnZlcnNpb24gLiAnIiBlbmNvZGluZz0iJyAuICRlbmNvZGluZyAuICciIHN0YW5kYWxvbmU9IicgLiAoKCRkZWNsYXJhdGlvbi0+c3RhbmRhbG9uZSkgPyAneWVzJyA6ICdubycpIC4gJyI/PicgLiAkZGF0YTsKCQkJfQoJCQllbHNlCgkJCXsKCQkJCSR0aGlzLT5lcnJvcl9zdHJpbmcgPSAnU2ltcGxlUGllIGJ1ZyEgUGxlYXNlIHJlcG9ydCB0aGlzISc7CgkJCQlyZXR1cm4gZmFsc2U7CgkJCX0KCQl9CgoJCS8vIFdvcmsgYXJvdW5kIGxpYnhtbCBidWcKCQkkZGF0YSA9IHN0cl9yZXBsYWNlKCcmbHQ7JywgJyYjNjA7JywgJGRhdGEpOwoJCSRkYXRhID0gc3RyX3JlcGxhY2UoJyZndDsnLCAnJiM2MjsnLCAkZGF0YSk7CgkJJGRhdGEgPSBzdHJfcmVwbGFjZSgnJmFtcDsnLCAnJiMzODsnLCAkZGF0YSk7CgkJJGRhdGEgPSBzdHJfcmVwbGFjZSgnJmFwb3M7JywgJyYjMzk7JywgJGRhdGEpOwoJCSRkYXRhID0gc3RyX3JlcGxhY2UoJyZxdW90OycsICcmIzM0OycsICRkYXRhKTsKCgkJJHJldHVybiA9IHRydWU7CgoJCS8vIENyZWF0ZSB0aGUgcGFyc2VyCgkJJHhtbCA9IHhtbF9wYXJzZXJfY3JlYXRlX25zKCR0aGlzLT5lbmNvZGluZywgJHRoaXMtPnNlcGFyYXRvcik7CgkJeG1sX3BhcnNlcl9zZXRfb3B0aW9uKCR4bWwsIFhNTF9PUFRJT05fU0tJUF9XSElURSwgMSk7CgkJeG1sX3BhcnNlcl9zZXRfb3B0aW9uKCR4bWwsIFhNTF9PUFRJT05fQ0FTRV9GT0xESU5HLCAwKTsKCQl4bWxfc2V0X29iamVjdCgkeG1sLCAkdGhpcyk7CgkJeG1sX3NldF9jaGFyYWN0ZXJfZGF0YV9oYW5kbGVyKCR4bWwsICdjZGF0YScpOwoJCXhtbF9zZXRfZWxlbWVudF9oYW5kbGVyKCR4bWwsICd0YWdfb3BlbicsICd0YWdfY2xvc2UnKTsKCgkJLy8gUGFyc2UhCgkJaWYgKCF4bWxfcGFyc2UoJHhtbCwgJGRhdGEsIHRydWUpKQoJCXsKCQkJJHRoaXMtPmVycm9yX2NvZGUgPSB4bWxfZ2V0X2Vycm9yX2NvZGUoJHhtbCk7CgkJCSR0aGlzLT5lcnJvcl9zdHJpbmcgPSB4bWxfZXJyb3Jfc3RyaW5nKCR0aGlzLT5lcnJvcl9jb2RlKTsKCQkJJHJldHVybiA9IGZhbHNlOwoJCX0KCQkkdGhpcy0+Y3VycmVudF9saW5lID0geG1sX2dldF9jdXJyZW50X2xpbmVfbnVtYmVyKCR4bWwpOwoJCSR0aGlzLT5jdXJyZW50X2NvbHVtbiA9IHhtbF9nZXRfY3VycmVudF9jb2x1bW5fbnVtYmVyKCR4bWwpOwoJCSR0aGlzLT5jdXJyZW50X2J5dGUgPSB4bWxfZ2V0X2N1cnJlbnRfYnl0ZV9pbmRleCgkeG1sKTsKCQl4bWxfcGFyc2VyX2ZyZWUoJHhtbCk7CgkJcmV0dXJuICRyZXR1cm47Cgl9CgoJZnVuY3Rpb24gZ2V0X2Vycm9yX2NvZGUoKQoJewoJCXJldHVybiAkdGhpcy0+ZXJyb3JfY29kZTsKCX0KCglmdW5jdGlvbiBnZXRfZXJyb3Jfc3RyaW5nKCkKCXsKCQlyZXR1cm4gJHRoaXMtPmVycm9yX3N0cmluZzsKCX0KCglmdW5jdGlvbiBnZXRfY3VycmVudF9saW5lKCkKCXsKCQlyZXR1cm4gJHRoaXMtPmN1cnJlbnRfbGluZTsKCX0KCglmdW5jdGlvbiBnZXRfY3VycmVudF9jb2x1bW4oKQoJewoJCXJldHVybiAkdGhpcy0+Y3VycmVudF9jb2x1bW47Cgl9CgoJZnVuY3Rpb24gZ2V0X2N1cnJlbnRfYnl0ZSgpCgl7CgkJcmV0dXJuICR0aGlzLT5jdXJyZW50X2J5dGU7Cgl9CgoJZnVuY3Rpb24gZ2V0X2RhdGEoKQoJewoJCXJldHVybiAkdGhpcy0+ZGF0YTsKCX0KCglmdW5jdGlvbiB0YWdfb3BlbigkcGFyc2VyLCAkdGFnLCAkYXR0cmlidXRlcykKCXsKCQlpZiAoJHRoaXMtPmZlZWQgPT09IDApCgkJewoJCQlyZXR1cm47CgkJfQoJCWVsc2VpZiAoJHRoaXMtPmZlZWQgPT0gZmFsc2UpCgkJewoJCQlpZiAoaW5fYXJyYXkoJHRhZywgYXJyYXkoCgkJCQlTSU1QTEVQSUVfTkFNRVNQQUNFX0FUT01fMTAgLiAkdGhpcy0+c2VwYXJhdG9yIC4gJ2ZlZWQnLAoJCQkJU0lNUExFUElFX05BTUVTUEFDRV9BVE9NXzAzIC4gJHRoaXMtPnNlcGFyYXRvciAuICdmZWVkJywKCQkJCSdyc3MnLAoJCQkJU0lNUExFUElFX05BTUVTUEFDRV9SREYgLiAkdGhpcy0+c2VwYXJhdG9yIC4gJ1JERicKCQkJKSkpCgkJCXsKCQkJCQkkdGhpcy0+ZmVlZCA9IDE7CgkJCX0KCQl9CgkJZWxzZQoJCXsKCQkJJHRoaXMtPmZlZWQrKzsKCQl9CgoJCWxpc3QoJHRoaXMtPm5hbWVzcGFjZVtdLCAkdGhpcy0+ZWxlbWVudFtdKSA9ICR0aGlzLT5zcGxpdF9ucygkdGFnKTsKCgkJJGF0dHJpYnMgPSBhcnJheSgpOwoJCWZvcmVhY2ggKCRhdHRyaWJ1dGVzIGFzICRuYW1lID0+ICR2YWx1ZSkKCQl7CgkJCWxpc3QoJGF0dHJpYl9uYW1lc3BhY2UsICRhdHRyaWJ1dGUpID0gJHRoaXMtPnNwbGl0X25zKCRuYW1lKTsKCQkJJGF0dHJpYnNbJGF0dHJpYl9uYW1lc3BhY2VdWyRhdHRyaWJ1dGVdID0gJHZhbHVlOwoJCX0KCgkJaWYgKGlzc2V0KCRhdHRyaWJzW1NJTVBMRVBJRV9OQU1FU1BBQ0VfWE1MXVsnYmFzZSddKSkKCQl7CgkJCSR0aGlzLT54bWxfYmFzZVtdID0gU2ltcGxlUGllX01pc2M6OmFic29sdXRpemVfdXJsKCRhdHRyaWJzW1NJTVBMRVBJRV9OQU1FU1BBQ0VfWE1MXVsnYmFzZSddLCBlbmQoJHRoaXMtPnhtbF9iYXNlKSk7CgkJCSR0aGlzLT54bWxfYmFzZV9leHBsaWNpdFtdID0gdHJ1ZTsKCQl9CgkJZWxzZQoJCXsKCQkJJHRoaXMtPnhtbF9iYXNlW10gPSBlbmQoJHRoaXMtPnhtbF9iYXNlKTsKCQkJJHRoaXMtPnhtbF9iYXNlX2V4cGxpY2l0W10gPSBlbmQoJHRoaXMtPnhtbF9iYXNlX2V4cGxpY2l0KTsKCQl9CgoJCWlmIChpc3NldCgkYXR0cmlic1tTSU1QTEVQSUVfTkFNRVNQQUNFX1hNTF1bJ2xhbmcnXSkpCgkJewoJCQkkdGhpcy0+eG1sX2xhbmdbXSA9ICRhdHRyaWJzW1NJTVBMRVBJRV9OQU1FU1BBQ0VfWE1MXVsnbGFuZyddOwoJCX0KCQllbHNlCgkJewoJCQkkdGhpcy0+eG1sX2xhbmdbXSA9IGVuZCgkdGhpcy0+eG1sX2xhbmcpOwoJCX0KCgkJaWYgKCR0aGlzLT5jdXJyZW50X3hodG1sX2NvbnN0cnVjdCA+PSAwKQoJCXsKCQkJJHRoaXMtPmN1cnJlbnRfeGh0bWxfY29uc3RydWN0Kys7CgkJCWlmIChlbmQoJHRoaXMtPm5hbWVzcGFjZSkgPT0gU0lNUExFUElFX05BTUVTUEFDRV9YSFRNTCkKCQkJewoJCQkJJHRoaXMtPmRhdGFbJ2RhdGEnXSAuPSAnPCcgLiBlbmQoJHRoaXMtPmVsZW1lbnQpOwoJCQkJaWYgKGlzc2V0KCRhdHRyaWJzWycnXSkpCgkJCQl7CgkJCQkJZm9yZWFjaCAoJGF0dHJpYnNbJyddIGFzICRuYW1lID0+ICR2YWx1ZSkKCQkJCQl7CgkJCQkJCSR0aGlzLT5kYXRhWydkYXRhJ10gLj0gJyAnIC4gJG5hbWUgLiAnPSInIC4gaHRtbHNwZWNpYWxjaGFycygkdmFsdWUsIEVOVF9DT01QQVQsICR0aGlzLT5lbmNvZGluZykgLiAnIic7CgkJCQkJfQoJCQkJfQoJCQkJJHRoaXMtPmRhdGFbJ2RhdGEnXSAuPSAnPic7CgkJCX0KCQl9CgkJZWxzZQoJCXsKCQkJJHRoaXMtPmRhdGFzW10gPSYgJHRoaXMtPmRhdGE7CgkJCSR0aGlzLT5kYXRhID0mICR0aGlzLT5kYXRhWydjaGlsZCddW2VuZCgkdGhpcy0+bmFtZXNwYWNlKV1bZW5kKCR0aGlzLT5lbGVtZW50KV1bXTsKCQkJJHRoaXMtPmRhdGEgPSBhcnJheSgnZGF0YScgPT4gJycsICdhdHRyaWJzJyA9PiAkYXR0cmlicywgJ3htbF9iYXNlJyA9PiBlbmQoJHRoaXMtPnhtbF9iYXNlKSwgJ3htbF9iYXNlX2V4cGxpY2l0JyA9PiBlbmQoJHRoaXMtPnhtbF9iYXNlX2V4cGxpY2l0KSwgJ3htbF9sYW5nJyA9PiBlbmQoJHRoaXMtPnhtbF9sYW5nKSk7CgkJCWlmICgoZW5kKCR0aGlzLT5uYW1lc3BhY2UpID09IFNJTVBMRVBJRV9OQU1FU1BBQ0VfQVRPTV8wMyAmJiBpbl9hcnJheShlbmQoJHRoaXMtPmVsZW1lbnQpLCBhcnJheSgndGl0bGUnLCAndGFnbGluZScsICdjb3B5cmlnaHQnLCAnaW5mbycsICdzdW1tYXJ5JywgJ2NvbnRlbnQnKSkgJiYgaXNzZXQoJGF0dHJpYnNbJyddWydtb2RlJ10pICYmICRhdHRyaWJzWycnXVsnbW9kZSddID09ICd4bWwnKQoJCQl8fCAoZW5kKCR0aGlzLT5uYW1lc3BhY2UpID09IFNJTVBMRVBJRV9OQU1FU1BBQ0VfQVRPTV8xMCAmJiBpbl9hcnJheShlbmQoJHRoaXMtPmVsZW1lbnQpLCBhcnJheSgncmlnaHRzJywgJ3N1YnRpdGxlJywgJ3N1bW1hcnknLCAnaW5mbycsICd0aXRsZScsICdjb250ZW50JykpICYmIGlzc2V0KCRhdHRyaWJzWycnXVsndHlwZSddKSAmJiAkYXR0cmlic1snJ11bJ3R5cGUnXSA9PSAneGh0bWwnKSkKCQkJewoJCQkJJHRoaXMtPmN1cnJlbnRfeGh0bWxfY29uc3RydWN0ID0gMDsKCQkJfQoJCX0KCX0KCglmdW5jdGlvbiBjZGF0YSgkcGFyc2VyLCAkY2RhdGEpCgl7CgkJaWYgKCR0aGlzLT5jdXJyZW50X3hodG1sX2NvbnN0cnVjdCA+PSAwKQoJCXsKCQkJJHRoaXMtPmRhdGFbJ2RhdGEnXSAuPSBodG1sc3BlY2lhbGNoYXJzKCRjZGF0YSwgRU5UX1FVT1RFUywgJHRoaXMtPmVuY29kaW5nKTsKCQl9CgkJZWxzZWlmICgkdGhpcy0+ZmVlZCA+IDEpCgkJewoJCQkkdGhpcy0+ZGF0YVsnZGF0YSddIC49ICRjZGF0YTsKCQl9Cgl9CgoJZnVuY3Rpb24gdGFnX2Nsb3NlKCRwYXJzZXIsICR0YWcpCgl7CgkJaWYgKCEkdGhpcy0+ZmVlZCkKCQl7CgkJCXJldHVybjsKCQl9CgoJCWlmICgkdGhpcy0+Y3VycmVudF94aHRtbF9jb25zdHJ1Y3QgPj0gMCkKCQl7CgkJCSR0aGlzLT5jdXJyZW50X3hodG1sX2NvbnN0cnVjdC0tOwoJCQlpZiAoZW5kKCR0aGlzLT5uYW1lc3BhY2UpID09IFNJTVBMRVBJRV9OQU1FU1BBQ0VfWEhUTUwgJiYgIWluX2FycmF5KGVuZCgkdGhpcy0+ZWxlbWVudCksIGFycmF5KCdhcmVhJywgJ2Jhc2UnLCAnYmFzZWZvbnQnLCAnYnInLCAnY29sJywgJ2ZyYW1lJywgJ2hyJywgJ2ltZycsICdpbnB1dCcsICdpc2luZGV4JywgJ2xpbmsnLCAnbWV0YScsICdwYXJhbScpKSkKCQkJewoJCQkJJHRoaXMtPmRhdGFbJ2RhdGEnXSAuPSAnPC8nIC4gZW5kKCR0aGlzLT5lbGVtZW50KSAuICc+JzsKCQkJfQoJCX0KCQlpZiAoJHRoaXMtPmN1cnJlbnRfeGh0bWxfY29uc3RydWN0ID09IC0xKQoJCXsKCQkJJHRoaXMtPmRhdGEgPSYgJHRoaXMtPmRhdGFzWyR0aGlzLT5mZWVkXTsKCQkJYXJyYXlfcG9wKCR0aGlzLT5kYXRhcyk7CgkJfQoKCQlhcnJheV9wb3AoJHRoaXMtPmVsZW1lbnQpOwoJCWFycmF5X3BvcCgkdGhpcy0+bmFtZXNwYWNlKTsKCQlhcnJheV9wb3AoJHRoaXMtPnhtbF9iYXNlKTsKCQlhcnJheV9wb3AoJHRoaXMtPnhtbF9iYXNlX2V4cGxpY2l0KTsKCQlhcnJheV9wb3AoJHRoaXMtPnhtbF9sYW5nKTsKCQkkdGhpcy0+ZmVlZC0tOwoJfQoKCWZ1bmN0aW9uIHNwbGl0X25zKCRzdHJpbmcpCgl7CgkJc3RhdGljICRjYWNoZSA9IGFycmF5KCk7CgkJaWYgKCFpc3NldCgkY2FjaGVbJHN0cmluZ10pKQoJCXsKCQkJaWYgKCRwb3MgPSBzdHJwb3MoJHN0cmluZywgJHRoaXMtPnNlcGFyYXRvcikpCgkJCXsKCQkJCXN0YXRpYyAkc2VwYXJhdG9yX2xlbmd0aDsKCQkJCWlmICghJHNlcGFyYXRvcl9sZW5ndGgpCgkJCQl7CgkJCQkJJHNlcGFyYXRvcl9sZW5ndGggPSBzdHJsZW4oJHRoaXMtPnNlcGFyYXRvcik7CgkJCQl9CgkJCQkkbmFtZXNwYWNlID0gc3Vic3RyKCRzdHJpbmcsIDAsICRwb3MpOwoJCQkJJGxvY2FsX25hbWUgPSBzdWJzdHIoJHN0cmluZywgJHBvcyArICRzZXBhcmF0b3JfbGVuZ3RoKTsKCQkJCWlmIChzdHJ0b2xvd2VyKCRuYW1lc3BhY2UpID09PSBTSU1QTEVQSUVfTkFNRVNQQUNFX0lUVU5FUykKCQkJCXsKCQkJCQkkbmFtZXNwYWNlID0gU0lNUExFUElFX05BTUVTUEFDRV9JVFVORVM7CgkJCQl9CgoJCQkJLy8gTm9ybWFsaXplIHRoZSBNZWRpYSBSU1MgbmFtZXNwYWNlcwoJCQkJaWYgKCRuYW1lc3BhY2UgPT09IFNJTVBMRVBJRV9OQU1FU1BBQ0VfTUVESUFSU1NfV1JPTkcpCgkJCQl7CgkJCQkJJG5hbWVzcGFjZSA9IFNJTVBMRVBJRV9OQU1FU1BBQ0VfTUVESUFSU1M7CgkJCQl9CgkJCQkkY2FjaGVbJHN0cmluZ10gPSBhcnJheSgkbmFtZXNwYWNlLCAkbG9jYWxfbmFtZSk7CgkJCX0KCQkJZWxzZQoJCQl7CgkJCQkkY2FjaGVbJHN0cmluZ10gPSBhcnJheSgnJywgJHN0cmluZyk7CgkJCX0KCQl9CgkJcmV0dXJuICRjYWNoZVskc3RyaW5nXTsKCX0KfQoKLyoqCiAqIEB0b2RvIE1vdmUgdG8gdXNpbmcgYW4gYWN0dWFsIEhUTUwgcGFyc2VyICh0aGlzIHdpbGwgYWxsb3cgdGFncyB0byBiZSBwcm9wZXJseSBzdHJpcHBlZCwgYW5kIHRvIHN3aXRjaCBiZXR3ZWVuIEhUTUwgYW5kIFhIVE1MKSwgdGhpcyB3aWxsIGFsc28gbWFrZSBpdCBlYXNpZXIgdG8gc2hvcnRlbiBhIHN0cmluZyB3aGlsZSBwcmVzZXJ2aW5nIEhUTUwgdGFncwogKi8KY2xhc3MgU2ltcGxlUGllX1Nhbml0aXplCnsKCS8vIFByaXZhdGUgdmFycwoJdmFyICRiYXNlOwoKCS8vIE9wdGlvbnMKCXZhciAkcmVtb3ZlX2RpdiA9IHRydWU7Cgl2YXIgJGltYWdlX2hhbmRsZXIgPSAnJzsKCXZhciAkc3RyaXBfaHRtbHRhZ3MgPSBhcnJheSgnYmFzZScsICdibGluaycsICdib2R5JywgJ2RvY3R5cGUnLCAnZW1iZWQnLCAnZm9udCcsICdmb3JtJywgJ2ZyYW1lJywgJ2ZyYW1lc2V0JywgJ2h0bWwnLCAnaWZyYW1lJywgJ2lucHV0JywgJ21hcnF1ZWUnLCAnbWV0YScsICdub3NjcmlwdCcsICdvYmplY3QnLCAncGFyYW0nLCAnc2NyaXB0JywgJ3N0eWxlJyk7Cgl2YXIgJGVuY29kZV9pbnN0ZWFkX29mX3N0cmlwID0gZmFsc2U7Cgl2YXIgJHN0cmlwX2F0dHJpYnV0ZXMgPSBhcnJheSgnYmdzb3VuZCcsICdjbGFzcycsICdleHByJywgJ2lkJywgJ3N0eWxlJywgJ29uY2xpY2snLCAnb25lcnJvcicsICdvbmZpbmlzaCcsICdvbm1vdXNlb3ZlcicsICdvbm1vdXNlb3V0JywgJ29uZm9jdXMnLCAnb25ibHVyJywgJ2xvd3NyYycsICdkeW5zcmMnKTsKCXZhciAkc3RyaXBfY29tbWVudHMgPSBmYWxzZTsKCXZhciAkb3V0cHV0X2VuY29kaW5nID0gJ1VURi04JzsKCXZhciAkZW5hYmxlX2NhY2hlID0gdHJ1ZTsKCXZhciAkY2FjaGVfbG9jYXRpb24gPSAnLi9jYWNoZSc7Cgl2YXIgJGNhY2hlX25hbWVfZnVuY3Rpb24gPSAnbWQ1JzsKCXZhciAkY2FjaGVfY2xhc3MgPSAnU2ltcGxlUGllX0NhY2hlJzsKCXZhciAkZmlsZV9jbGFzcyA9ICdTaW1wbGVQaWVfRmlsZSc7Cgl2YXIgJHRpbWVvdXQgPSAxMDsKCXZhciAkdXNlcmFnZW50ID0gJyc7Cgl2YXIgJGZvcmNlX2Zzb2Nrb3BlbiA9IGZhbHNlOwoKCXZhciAkcmVwbGFjZV91cmxfYXR0cmlidXRlcyA9IGFycmF5KAoJCSdhJyA9PiAnaHJlZicsCgkJJ2FyZWEnID0+ICdocmVmJywKCQknYmxvY2txdW90ZScgPT4gJ2NpdGUnLAoJCSdkZWwnID0+ICdjaXRlJywKCQknZm9ybScgPT4gJ2FjdGlvbicsCgkJJ2ltZycgPT4gYXJyYXkoJ2xvbmdkZXNjJywgJ3NyYycpLAoJCSdpbnB1dCcgPT4gJ3NyYycsCgkJJ2lucycgPT4gJ2NpdGUnLAoJCSdxJyA9PiAnY2l0ZScKCSk7CgoJZnVuY3Rpb24gcmVtb3ZlX2RpdigkZW5hYmxlID0gdHJ1ZSkKCXsKCQkkdGhpcy0+cmVtb3ZlX2RpdiA9IChib29sKSAkZW5hYmxlOwoJfQoKCWZ1bmN0aW9uIHNldF9pbWFnZV9oYW5kbGVyKCRwYWdlID0gZmFsc2UpCgl7CgkJaWYgKCRwYWdlKQoJCXsKCQkJJHRoaXMtPmltYWdlX2hhbmRsZXIgPSAoc3RyaW5nKSAkcGFnZTsKCQl9CgkJZWxzZQoJCXsKCQkJJHRoaXMtPmltYWdlX2hhbmRsZXIgPSBmYWxzZTsKCQl9Cgl9CgoJZnVuY3Rpb24gcGFzc19jYWNoZV9kYXRhKCRlbmFibGVfY2FjaGUgPSB0cnVlLCAkY2FjaGVfbG9jYXRpb24gPSAnLi9jYWNoZScsICRjYWNoZV9uYW1lX2Z1bmN0aW9uID0gJ21kNScsICRjYWNoZV9jbGFzcyA9ICdTaW1wbGVQaWVfQ2FjaGUnKQoJewoJCWlmIChpc3NldCgkZW5hYmxlX2NhY2hlKSkKCQl7CgkJCSR0aGlzLT5lbmFibGVfY2FjaGUgPSAoYm9vbCkgJGVuYWJsZV9jYWNoZTsKCQl9CgoJCWlmICgkY2FjaGVfbG9jYXRpb24pCgkJewoJCQkkdGhpcy0+Y2FjaGVfbG9jYXRpb24gPSAoc3RyaW5nKSAkY2FjaGVfbG9jYXRpb247CgkJfQoKCQlpZiAoJGNhY2hlX25hbWVfZnVuY3Rpb24pCgkJewoJCQkkdGhpcy0+Y2FjaGVfbmFtZV9mdW5jdGlvbiA9IChzdHJpbmcpICRjYWNoZV9uYW1lX2Z1bmN0aW9uOwoJCX0KCgkJaWYgKCRjYWNoZV9jbGFzcykKCQl7CgkJCSR0aGlzLT5jYWNoZV9jbGFzcyA9IChzdHJpbmcpICRjYWNoZV9jbGFzczsKCQl9Cgl9CgoJZnVuY3Rpb24gcGFzc19maWxlX2RhdGEoJGZpbGVfY2xhc3MgPSAnU2ltcGxlUGllX0ZpbGUnLCAkdGltZW91dCA9IDEwLCAkdXNlcmFnZW50ID0gJycsICRmb3JjZV9mc29ja29wZW4gPSBmYWxzZSkKCXsKCQlpZiAoJGZpbGVfY2xhc3MpCgkJewoJCQkkdGhpcy0+ZmlsZV9jbGFzcyA9IChzdHJpbmcpICRmaWxlX2NsYXNzOwoJCX0KCgkJaWYgKCR0aW1lb3V0KQoJCXsKCQkJJHRoaXMtPnRpbWVvdXQgPSAoc3RyaW5nKSAkdGltZW91dDsKCQl9CgoJCWlmICgkdXNlcmFnZW50KQoJCXsKCQkJJHRoaXMtPnVzZXJhZ2VudCA9IChzdHJpbmcpICR1c2VyYWdlbnQ7CgkJfQoKCQlpZiAoJGZvcmNlX2Zzb2Nrb3BlbikKCQl7CgkJCSR0aGlzLT5mb3JjZV9mc29ja29wZW4gPSAoc3RyaW5nKSAkZm9yY2VfZnNvY2tvcGVuOwoJCX0KCX0KCglmdW5jdGlvbiBzdHJpcF9odG1sdGFncygkdGFncyA9IGFycmF5KCdiYXNlJywgJ2JsaW5rJywgJ2JvZHknLCAnZG9jdHlwZScsICdlbWJlZCcsICdmb250JywgJ2Zvcm0nLCAnZnJhbWUnLCAnZnJhbWVzZXQnLCAnaHRtbCcsICdpZnJhbWUnLCAnaW5wdXQnLCAnbWFycXVlZScsICdtZXRhJywgJ25vc2NyaXB0JywgJ29iamVjdCcsICdwYXJhbScsICdzY3JpcHQnLCAnc3R5bGUnKSkKCXsKCQlpZiAoJHRhZ3MpCgkJewoJCQlpZiAoaXNfYXJyYXkoJHRhZ3MpKQoJCQl7CgkJCQkkdGhpcy0+c3RyaXBfaHRtbHRhZ3MgPSAkdGFnczsKCQkJfQoJCQllbHNlCgkJCXsKCQkJCSR0aGlzLT5zdHJpcF9odG1sdGFncyA9IGV4cGxvZGUoJywnLCAkdGFncyk7CgkJCX0KCQl9CgkJZWxzZQoJCXsKCQkJJHRoaXMtPnN0cmlwX2h0bWx0YWdzID0gZmFsc2U7CgkJfQoJfQoKCWZ1bmN0aW9uIGVuY29kZV9pbnN0ZWFkX29mX3N0cmlwKCRlbmNvZGUgPSBmYWxzZSkKCXsKCQkkdGhpcy0+ZW5jb2RlX2luc3RlYWRfb2Zfc3RyaXAgPSAoYm9vbCkgJGVuY29kZTsKCX0KCglmdW5jdGlvbiBzdHJpcF9hdHRyaWJ1dGVzKCRhdHRyaWJzID0gYXJyYXkoJ2Jnc291bmQnLCAnY2xhc3MnLCAnZXhwcicsICdpZCcsICdzdHlsZScsICdvbmNsaWNrJywgJ29uZXJyb3InLCAnb25maW5pc2gnLCAnb25tb3VzZW92ZXInLCAnb25tb3VzZW91dCcsICdvbmZvY3VzJywgJ29uYmx1cicsICdsb3dzcmMnLCAnZHluc3JjJykpCgl7CgkJaWYgKCRhdHRyaWJzKQoJCXsKCQkJaWYgKGlzX2FycmF5KCRhdHRyaWJzKSkKCQkJewoJCQkJJHRoaXMtPnN0cmlwX2F0dHJpYnV0ZXMgPSAkYXR0cmliczsKCQkJfQoJCQllbHNlCgkJCXsKCQkJCSR0aGlzLT5zdHJpcF9hdHRyaWJ1dGVzID0gZXhwbG9kZSgnLCcsICRhdHRyaWJzKTsKCQkJfQoJCX0KCQllbHNlCgkJewoJCQkkdGhpcy0+c3RyaXBfYXR0cmlidXRlcyA9IGZhbHNlOwoJCX0KCX0KCglmdW5jdGlvbiBzdHJpcF9jb21tZW50cygkc3RyaXAgPSBmYWxzZSkKCXsKCQkkdGhpcy0+c3RyaXBfY29tbWVudHMgPSAoYm9vbCkgJHN0cmlwOwoJfQoKCWZ1bmN0aW9uIHNldF9vdXRwdXRfZW5jb2RpbmcoJGVuY29kaW5nID0gJ1VURi04JykKCXsKCQkkdGhpcy0+b3V0cHV0X2VuY29kaW5nID0gKHN0cmluZykgJGVuY29kaW5nOwoJfQoKCS8qKgoJICogU2V0IGVsZW1lbnQvYXR0cmlidXRlIGtleS92YWx1ZSBwYWlycyBvZiBIVE1MIGF0dHJpYnV0ZXMKCSAqIGNvbnRhaW5pbmcgVVJMcyB0aGF0IG5lZWQgdG8gYmUgcmVzb2x2ZWQgcmVsYXRpdmUgdG8gdGhlIGZlZWQKCSAqCgkgKiBAYWNjZXNzIHB1YmxpYwoJICogQHNpbmNlIDEuMAoJICogQHBhcmFtIGFycmF5ICRlbGVtZW50X2F0dHJpYnV0ZSBFbGVtZW50L2F0dHJpYnV0ZSBrZXkvdmFsdWUgcGFpcnMKCSAqLwoJZnVuY3Rpb24gc2V0X3VybF9yZXBsYWNlbWVudHMoJGVsZW1lbnRfYXR0cmlidXRlID0gYXJyYXkoJ2EnID0+ICdocmVmJywgJ2FyZWEnID0+ICdocmVmJywgJ2Jsb2NrcXVvdGUnID0+ICdjaXRlJywgJ2RlbCcgPT4gJ2NpdGUnLCAnZm9ybScgPT4gJ2FjdGlvbicsICdpbWcnID0+IGFycmF5KCdsb25nZGVzYycsICdzcmMnKSwgJ2lucHV0JyA9PiAnc3JjJywgJ2lucycgPT4gJ2NpdGUnLCAncScgPT4gJ2NpdGUnKSkKCXsKCQkkdGhpcy0+cmVwbGFjZV91cmxfYXR0cmlidXRlcyA9IChhcnJheSkgJGVsZW1lbnRfYXR0cmlidXRlOwoJfQoKCWZ1bmN0aW9uIHNhbml0aXplKCRkYXRhLCAkdHlwZSwgJGJhc2UgPSAnJykKCXsKCQkkZGF0YSA9IHRyaW0oJGRhdGEpOwoJCWlmICgkZGF0YSAhPT0gJycgfHwgJHR5cGUgJiBTSU1QTEVQSUVfQ09OU1RSVUNUX0lSSSkKCQl7CgkJCWlmICgkdHlwZSAmIFNJTVBMRVBJRV9DT05TVFJVQ1RfTUFZQkVfSFRNTCkKCQkJewoJCQkJaWYgKHByZWdfbWF0Y2goJy8oJigjKHhbMC05YS1mQS1GXSt8WzAtOV0rKXxbYS16QS1aMC05XSspfDxcL1tBLVphLXpdW15ceDA5XHgwQVx4MEJceDBDXHgwRFx4MjBceDJGXHgzRV0qJyAuIFNJTVBMRVBJRV9QQ1JFX0hUTUxfQVRUUklCVVRFIC4gJz4pLycsICRkYXRhKSkKCQkJCXsKCQkJCQkkdHlwZSB8PSBTSU1QTEVQSUVfQ09OU1RSVUNUX0hUTUw7CgkJCQl9CgkJCQllbHNlCgkJCQl7CgkJCQkJJHR5cGUgfD0gU0lNUExFUElFX0NPTlNUUlVDVF9URVhUOwoJCQkJfQoJCQl9CgoJCQlpZiAoJHR5cGUgJiBTSU1QTEVQSUVfQ09OU1RSVUNUX0JBU0U2NCkKCQkJewoJCQkJJGRhdGEgPSBiYXNlNjRfZGVjb2RlKCRkYXRhKTsKCQkJfQoKCQkJaWYgKCR0eXBlICYgU0lNUExFUElFX0NPTlNUUlVDVF9YSFRNTCkKCQkJewoJCQkJaWYgKCR0aGlzLT5yZW1vdmVfZGl2KQoJCQkJewoJCQkJCSRkYXRhID0gcHJlZ19yZXBsYWNlKCcvXjxkaXYnIC4gU0lNUExFUElFX1BDUkVfWE1MX0FUVFJJQlVURSAuICc+LycsICcnLCAkZGF0YSk7CgkJCQkJJGRhdGEgPSBwcmVnX3JlcGxhY2UoJy88XC9kaXY+JC8nLCAnJywgJGRhdGEpOwoJCQkJfQoJCQkJZWxzZQoJCQkJewoJCQkJCSRkYXRhID0gcHJlZ19yZXBsYWNlKCcvXjxkaXYnIC4gU0lNUExFUElFX1BDUkVfWE1MX0FUVFJJQlVURSAuICc+LycsICc8ZGl2PicsICRkYXRhKTsKCQkJCX0KCQkJfQoKCQkJaWYgKCR0eXBlICYgKFNJTVBMRVBJRV9DT05TVFJVQ1RfSFRNTCB8IFNJTVBMRVBJRV9DT05TVFJVQ1RfWEhUTUwpKQoJCQl7CgkJCQkvLyBTdHJpcCBjb21tZW50cwoJCQkJaWYgKCR0aGlzLT5zdHJpcF9jb21tZW50cykKCQkJCXsKCQkJCQkkZGF0YSA9IFNpbXBsZVBpZV9NaXNjOjpzdHJpcF9jb21tZW50cygkZGF0YSk7CgkJCQl9CgoJCQkJLy8gU3RyaXAgb3V0IEhUTUwgdGFncyBhbmQgYXR0cmlidXRlcyB0aGF0IG1pZ2h0IGNhdXNlIHZhcmlvdXMgc2VjdXJpdHkgcHJvYmxlbXMuCgkJCQkvLyBCYXNlZCBvbiByZWNvbW1lbmRhdGlvbnMgYnkgTWFyayBQaWxncmltIGF0OgoJCQkJLy8gaHR0cDovL2RpdmVpbnRvbWFyay5vcmcvYXJjaGl2ZXMvMjAwMy8wNi8xMi9ob3dfdG9fY29uc3VtZV9yc3Nfc2FmZWx5CgkJCQlpZiAoJHRoaXMtPnN0cmlwX2h0bWx0YWdzKQoJCQkJewoJCQkJCWZvcmVhY2ggKCR0aGlzLT5zdHJpcF9odG1sdGFncyBhcyAkdGFnKQoJCQkJCXsKCQkJCQkJJHBjcmUgPSAiLzwoJHRhZykiIC4gU0lNUExFUElFX1BDUkVfSFRNTF9BVFRSSUJVVEUgLiAiKD4oLiopPFwvJHRhZyIgLiBTSU1QTEVQSUVfUENSRV9IVE1MX0FUVFJJQlVURSAuICc+fChcLyk/Pikvc2lVJzsKCQkJCQkJd2hpbGUgKHByZWdfbWF0Y2goJHBjcmUsICRkYXRhKSkKCQkJCQkJewoJCQkJCQkJJGRhdGEgPSBwcmVnX3JlcGxhY2VfY2FsbGJhY2soJHBjcmUsIGFycmF5KCYkdGhpcywgJ2RvX3N0cmlwX2h0bWx0YWdzJyksICRkYXRhKTsKCQkJCQkJfQoJCQkJCX0KCQkJCX0KCgkJCQlpZiAoJHRoaXMtPnN0cmlwX2F0dHJpYnV0ZXMpCgkJCQl7CgkJCQkJZm9yZWFjaCAoJHRoaXMtPnN0cmlwX2F0dHJpYnV0ZXMgYXMgJGF0dHJpYikKCQkJCQl7CgkJCQkJCSRkYXRhID0gcHJlZ19yZXBsYWNlKCcvKDxbQS1aYS16XVteXHgwOVx4MEFceDBCXHgwQ1x4MERceDIwXHgyRlx4M0VdKiknIC4gU0lNUExFUElFX1BDUkVfSFRNTF9BVFRSSUJVVEUgLiB0cmltKCRhdHRyaWIpIC4gJyg/OlxzKj1ccyooPzoiKD86W14iXSopInxcJyg/OlteXCddKilcJ3woPzpbXlx4MDlceDBBXHgwQlx4MENceDBEXHgyMFx4MjJceDI3XHgzRV1bXlx4MDlceDBBXHgwQlx4MENceDBEXHgyMFx4M0VdKik/KSk/JyAuIFNJTVBMRVBJRV9QQ1JFX0hUTUxfQVRUUklCVVRFIC4gJz4vJywgJ1wxXDJcMz4nLCAkZGF0YSk7CgkJCQkJfQoJCQkJfQoKCQkJCS8vIFJlcGxhY2UgcmVsYXRpdmUgVVJMcwoJCQkJJHRoaXMtPmJhc2UgPSAkYmFzZTsKCQkJCWZvcmVhY2ggKCR0aGlzLT5yZXBsYWNlX3VybF9hdHRyaWJ1dGVzIGFzICRlbGVtZW50ID0+ICRhdHRyaWJ1dGVzKQoJCQkJewoJCQkJCSRkYXRhID0gJHRoaXMtPnJlcGxhY2VfdXJscygkZGF0YSwgJGVsZW1lbnQsICRhdHRyaWJ1dGVzKTsKCQkJCX0KCgkJCQkvLyBJZiBpbWFnZSBoYW5kbGluZyAoY2FjaGluZywgZXRjLikgaXMgZW5hYmxlZCwgY2FjaGUgYW5kIHJld3JpdGUgYWxsIHRoZSBpbWFnZSB0YWdzLgoJCQkJaWYgKGlzc2V0KCR0aGlzLT5pbWFnZV9oYW5kbGVyKSAmJiAoKHN0cmluZykgJHRoaXMtPmltYWdlX2hhbmRsZXIpICE9PSAnJyAmJiAkdGhpcy0+ZW5hYmxlX2NhY2hlKQoJCQkJewoJCQkJCSRpbWFnZXMgPSBTaW1wbGVQaWVfTWlzYzo6Z2V0X2VsZW1lbnQoJ2ltZycsICRkYXRhKTsKCQkJCQlmb3JlYWNoICgkaW1hZ2VzIGFzICRpbWcpCgkJCQkJewoJCQkJCQlpZiAoaXNzZXQoJGltZ1snYXR0cmlicyddWydzcmMnXVsnZGF0YSddKSkKCQkJCQkJewoJCQkJCQkJJGltYWdlX3VybCA9IGNhbGxfdXNlcl9mdW5jKCR0aGlzLT5jYWNoZV9uYW1lX2Z1bmN0aW9uLCAkaW1nWydhdHRyaWJzJ11bJ3NyYyddWydkYXRhJ10pOwoJCQkJCQkJJGNhY2hlID0gY2FsbF91c2VyX2Z1bmMoYXJyYXkoJHRoaXMtPmNhY2hlX2NsYXNzLCAnY3JlYXRlJyksICR0aGlzLT5jYWNoZV9sb2NhdGlvbiwgJGltYWdlX3VybCwgJ3NwaScpOwoKCQkJCQkJCWlmICgkY2FjaGUtPmxvYWQoKSkKCQkJCQkJCXsKCQkJCQkJCQkkaW1nWydhdHRyaWJzJ11bJ3NyYyddWydkYXRhJ10gPSAkdGhpcy0+aW1hZ2VfaGFuZGxlciAuICRpbWFnZV91cmw7CgkJCQkJCQkJJGRhdGEgPSBzdHJfcmVwbGFjZSgkaW1nWydmdWxsJ10sIFNpbXBsZVBpZV9NaXNjOjplbGVtZW50X2ltcGxvZGUoJGltZyksICRkYXRhKTsKCQkJCQkJCX0KCQkJCQkJCWVsc2UKCQkJCQkJCXsKCQkJCQkJCQkkZmlsZSA9JiBuZXcgJHRoaXMtPmZpbGVfY2xhc3MoJGltZ1snYXR0cmlicyddWydzcmMnXVsnZGF0YSddLCAkdGhpcy0+dGltZW91dCwgNSwgYXJyYXkoJ1gtRk9SV0FSREVELUZPUicgPT4gJF9TRVJWRVJbJ1JFTU9URV9BRERSJ10pLCAkdGhpcy0+dXNlcmFnZW50LCAkdGhpcy0+Zm9yY2VfZnNvY2tvcGVuKTsKCQkJCQkJCQkkaGVhZGVycyA9ICRmaWxlLT5oZWFkZXJzOwoKCQkJCQkJCQlpZiAoJGZpbGUtPnN1Y2Nlc3MgJiYgKCRmaWxlLT5zdGF0dXNfY29kZSA9PSAyMDAgfHwgKCRmaWxlLT5zdGF0dXNfY29kZSA+IDIwNiAmJiAkZmlsZS0+c3RhdHVzX2NvZGUgPCAzMDApKSkKCQkJCQkJCQl7CgkJCQkJCQkJCWlmICgkY2FjaGUtPnNhdmUoYXJyYXkoJ2hlYWRlcnMnID0+ICRmaWxlLT5oZWFkZXJzLCAnYm9keScgPT4gJGZpbGUtPmJvZHkpKSkKCQkJCQkJCQkJewoJCQkJCQkJCQkJJGltZ1snYXR0cmlicyddWydzcmMnXVsnZGF0YSddID0gJHRoaXMtPmltYWdlX2hhbmRsZXIgLiAkaW1hZ2VfdXJsOwoJCQkJCQkJCQkJJGRhdGEgPSBzdHJfcmVwbGFjZSgkaW1nWydmdWxsJ10sIFNpbXBsZVBpZV9NaXNjOjplbGVtZW50X2ltcGxvZGUoJGltZyksICRkYXRhKTsKCQkJCQkJCQkJfQoJCQkJCQkJCQllbHNlCgkJCQkJCQkJCXsKCQkJCQkJCQkJCXRyaWdnZXJfZXJyb3IoIiRjYWNoZS0+bmFtZSBpcyBub3Qgd3JpdGVhYmxlIiwgRV9VU0VSX1dBUk5JTkcpOwoJCQkJCQkJCQl9CgkJCQkJCQkJfQoJCQkJCQkJfQoJCQkJCQl9CgkJCQkJfQoJCQkJfQoKCQkJCS8vIEhhdmluZyAocG9zc2libHkpIHRha2VuIHN0dWZmIG91dCwgdGhlcmUgbWF5IG5vdyBiZSB3aGl0ZXNwYWNlIGF0IHRoZSBiZWdpbm5pbmcvZW5kIG9mIHRoZSBkYXRhCgkJCQkkZGF0YSA9IHRyaW0oJGRhdGEpOwoJCQl9CgoJCQlpZiAoJHR5cGUgJiBTSU1QTEVQSUVfQ09OU1RSVUNUX0lSSSkKCQkJewoJCQkJJGRhdGEgPSBTaW1wbGVQaWVfTWlzYzo6YWJzb2x1dGl6ZV91cmwoJGRhdGEsICRiYXNlKTsKCQkJfQoKCQkJaWYgKCR0eXBlICYgKFNJTVBMRVBJRV9DT05TVFJVQ1RfVEVYVCB8IFNJTVBMRVBJRV9DT05TVFJVQ1RfSVJJKSkKCQkJewoJCQkJJGRhdGEgPSBodG1sc3BlY2lhbGNoYXJzKCRkYXRhLCBFTlRfQ09NUEFULCAnVVRGLTgnKTsKCQkJfQoKCQkJaWYgKCR0aGlzLT5vdXRwdXRfZW5jb2RpbmcgIT0gJ1VURi04JykKCQkJewoJCQkJJGRhdGEgPSBTaW1wbGVQaWVfTWlzYzo6Y2hhbmdlX2VuY29kaW5nKCRkYXRhLCAnVVRGLTgnLCAkdGhpcy0+b3V0cHV0X2VuY29kaW5nKTsKCQkJfQoJCX0KCQlyZXR1cm4gJGRhdGE7Cgl9CgoJZnVuY3Rpb24gcmVwbGFjZV91cmxzKCRkYXRhLCAkdGFnLCAkYXR0cmlidXRlcykKCXsKCQlpZiAoIWlzX2FycmF5KCR0aGlzLT5zdHJpcF9odG1sdGFncykgfHwgIWluX2FycmF5KCR0YWcsICR0aGlzLT5zdHJpcF9odG1sdGFncykpCgkJewoJCQkkZWxlbWVudHMgPSBTaW1wbGVQaWVfTWlzYzo6Z2V0X2VsZW1lbnQoJHRhZywgJGRhdGEpOwoJCQlmb3JlYWNoICgkZWxlbWVudHMgYXMgJGVsZW1lbnQpCgkJCXsKCQkJCWlmIChpc19hcnJheSgkYXR0cmlidXRlcykpCgkJCQl7CgkJCQkJZm9yZWFjaCAoJGF0dHJpYnV0ZXMgYXMgJGF0dHJpYnV0ZSkKCQkJCQl7CgkJCQkJCWlmIChpc3NldCgkZWxlbWVudFsnYXR0cmlicyddWyRhdHRyaWJ1dGVdWydkYXRhJ10pKQoJCQkJCQl7CgkJCQkJCQkkZWxlbWVudFsnYXR0cmlicyddWyRhdHRyaWJ1dGVdWydkYXRhJ10gPSBTaW1wbGVQaWVfTWlzYzo6YWJzb2x1dGl6ZV91cmwoJGVsZW1lbnRbJ2F0dHJpYnMnXVskYXR0cmlidXRlXVsnZGF0YSddLCAkdGhpcy0+YmFzZSk7CgkJCQkJCQkkbmV3X2VsZW1lbnQgPSBTaW1wbGVQaWVfTWlzYzo6ZWxlbWVudF9pbXBsb2RlKCRlbGVtZW50KTsKCQkJCQkJCSRkYXRhID0gc3RyX3JlcGxhY2UoJGVsZW1lbnRbJ2Z1bGwnXSwgJG5ld19lbGVtZW50LCAkZGF0YSk7CgkJCQkJCQkkZWxlbWVudFsnZnVsbCddID0gJG5ld19lbGVtZW50OwoJCQkJCQl9CgkJCQkJfQoJCQkJfQoJCQkJZWxzZWlmIChpc3NldCgkZWxlbWVudFsnYXR0cmlicyddWyRhdHRyaWJ1dGVzXVsnZGF0YSddKSkKCQkJCXsKCQkJCQkkZWxlbWVudFsnYXR0cmlicyddWyRhdHRyaWJ1dGVzXVsnZGF0YSddID0gU2ltcGxlUGllX01pc2M6OmFic29sdXRpemVfdXJsKCRlbGVtZW50WydhdHRyaWJzJ11bJGF0dHJpYnV0ZXNdWydkYXRhJ10sICR0aGlzLT5iYXNlKTsKCQkJCQkkZGF0YSA9IHN0cl9yZXBsYWNlKCRlbGVtZW50WydmdWxsJ10sIFNpbXBsZVBpZV9NaXNjOjplbGVtZW50X2ltcGxvZGUoJGVsZW1lbnQpLCAkZGF0YSk7CgkJCQl9CgkJCX0KCQl9CgkJcmV0dXJuICRkYXRhOwoJfQoKCWZ1bmN0aW9uIGRvX3N0cmlwX2h0bWx0YWdzKCRtYXRjaCkKCXsKCQlpZiAoJHRoaXMtPmVuY29kZV9pbnN0ZWFkX29mX3N0cmlwKQoJCXsKCQkJaWYgKGlzc2V0KCRtYXRjaFs0XSkgJiYgIWluX2FycmF5KHN0cnRvbG93ZXIoJG1hdGNoWzFdKSwgYXJyYXkoJ3NjcmlwdCcsICdzdHlsZScpKSkKCQkJewoJCQkJJG1hdGNoWzFdID0gaHRtbHNwZWNpYWxjaGFycygkbWF0Y2hbMV0sIEVOVF9DT01QQVQsICdVVEYtOCcpOwoJCQkJJG1hdGNoWzJdID0gaHRtbHNwZWNpYWxjaGFycygkbWF0Y2hbMl0sIEVOVF9DT01QQVQsICdVVEYtOCcpOwoJCQkJcmV0dXJuICImbHQ7JG1hdGNoWzFdJG1hdGNoWzJdJmd0OyRtYXRjaFszXSZsdDsvJG1hdGNoWzFdJmd0OyI7CgkJCX0KCQkJZWxzZQoJCQl7CgkJCQlyZXR1cm4gaHRtbHNwZWNpYWxjaGFycygkbWF0Y2hbMF0sIEVOVF9DT01QQVQsICdVVEYtOCcpOwoJCQl9CgkJfQoJCWVsc2VpZiAoaXNzZXQoJG1hdGNoWzRdKSAmJiAhaW5fYXJyYXkoc3RydG9sb3dlcigkbWF0Y2hbMV0pLCBhcnJheSgnc2NyaXB0JywgJ3N0eWxlJykpKQoJCXsKCQkJcmV0dXJuICRtYXRjaFs0XTsKCQl9CgkJZWxzZQoJCXsKCQkJcmV0dXJuICcnOwoJCX0KCX0KfQoKPz4=]]></data>
	</file>
	<file>
	  <filename>/libs/simplepie_tools.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCgkvKioKCSAqIEBhdXRob3IgTnVubyBDb3N0YQoJICogQGNvcHlyaWdodCAyMDA5CgkgKi8KCgkvKioKCSAqIEBjb3B5cmlnaHQgaHR0cDovL3NpbXBsZXBpZS5vcmcvd2lraS8KCSAqLwoKCWNsYXNzIHNpbXBsZXBpZV90b29scwoJewoJCQkvKioKCQkJICogRnVuY3Rpb24gdGhhdCByZW1vdmVzIGRvdWJsZS1xdW90ZXMgc28gdGhleSBkb24ndCBpbnRlcmZlcmUgd2l0aCB0aGUgSFRNTC4KCQkJICovCgkJCWZ1bmN0aW9uIGNsZWFudXAoJHMgPSBudWxsKQoJCQl7CgkJCQkJaWYgKCEkcykKCQkJCQkJCXJldHVybiBmYWxzZTsKCQkJCQllbHNlCgkJCQkJewoJCQkJCQkJcmV0dXJuIHN0cl9yZXBsYWNlKCciJywgJycsICRzKTsKCQkJCQl9CgkJCX0KCgkJCS8qKgoJCQkgKiBGdW5jdGlvbiB0aGF0IHJldHVybnMgdGhlIGNvcnJlY3RseSBzaXplZCBwaG90byBVUkwuCgkJCSAqLwoJCQlmdW5jdGlvbiBwaG90bygkdXJsLCAkc2l6ZSkKCQkJewoJCQkJCSR1cmwgPSBleHBsb2RlKCcvJywgJHVybCk7CgkJCQkJJHBob3RvID0gYXJyYXlfcG9wKCR1cmwpOwoKCQkJCQlzd2l0Y2ggKCRzaXplKQoJCQkJCXsKCQkJCQkJCWNhc2UgJ3NxdWFyZSc6CgkJCQkJCQkJCSRyID0gcHJlZ19yZXBsYWNlKCcvKF8oc3x0fG18YikpP1wuL2knLCAnX3MuJywgJHBob3RvKTsKCQkJCQkJCQkJYnJlYWs7CgkJCQkJCQljYXNlICd0aHVtYic6CgkJCQkJCQkJCSRyID0gcHJlZ19yZXBsYWNlKCcvKF8oc3x0fG18YikpP1wuL2knLCAnX3QuJywgJHBob3RvKTsKCQkJCQkJCQkJYnJlYWs7CgkJCQkJCQljYXNlICdzbWFsbCc6CgkJCQkJCQkJCSRyID0gcHJlZ19yZXBsYWNlKCcvKF8oc3x0fG18YikpP1wuL2knLCAnX20uJywgJHBob3RvKTsKCQkJCQkJCQkJYnJlYWs7CgkJCQkJCQljYXNlICdsYXJnZSc6CgkJCQkJCQkJCSRyID0gcHJlZ19yZXBsYWNlKCcvKF8oc3x0fG18YikpP1wuL2knLCAnX2IuJywgJHBob3RvKTsKCQkJCQkJCQkJYnJlYWs7CgkJCQkJCQlkZWZhdWx0OiAvLyBNZWRpdW0KCQkJCQkJCQkJJHIgPSBwcmVnX3JlcGxhY2UoJy8oXyhzfHR8bXxiKSk/XC4vaScsICcuJywgJHBob3RvKTsKCQkJCQkJCQkJYnJlYWs7CgkJCQkJfQoKCQkJCQkkdXJsW10gPSAkcjsKCQkJCQlyZXR1cm4gaW1wbG9kZSgnLycsICR1cmwpOwoJCQl9CgoJCQkvKioKCQkJICogRnVuY3Rpb24gdGhhdCBsb29rcyB0aHJvdWdoIHRoZSBkZXNjcmlwdGlvbiBhbmQgZmluZHMgdGhlIGZpcnN0IGltYWdlLgoJCQkgKi8KCQkJZnVuY3Rpb24gZmluZF9waG90bygkZGF0YSkKCQkJewoJCQkJCXByZWdfbWF0Y2hfYWxsKCcvPGltZyBzcmM9IihbXiJdKikiKFtePl0qKT4vaScsICRkYXRhLCAkbSk7CgkJCQkJcmV0dXJuICRtWzFdWzBdOwoJCQl9CgoKCQkJLyoqCgkJCSAqIEBjb3B5cmlnaHQgQFRPRE8KCQkJICovCgoJCQkvKioKCQkJICogZnVuY3Rpb24gbmV4dCgpCgkJCSAqIAkJCQl7CgkJCSAqIAkJCQkvL0BUT0RPCgkJCSAqIAkJCQl9CgkJCSAqLwoKCX0KCj8+]]></data>
	</file>
	<file>
	  <filename>/method.install.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmICghaXNzZXQoJGdDbXMpKSBleGl0OwoKCiRkYiA9JiAkZ0Ntcy0+R2V0RGIoKTsKCi8vIG15c3FsLXNwZWNpZmljLCBidXQgaWdub3JlZCBieSBvdGhlciBkYXRhYmFzZQokdGFib3B0YXJyYXkgPSBhcnJheSggJ215c3FsJyA9PiAnVFlQRT1NeUlTQU0nICk7CgokZGljdCA9IE5ld0RhdGFEaWN0aW9uYXJ5KCAkZGIgKTsKCi8vIHRhYmxlIHNjaGVtYSBkZXNjcmlwdGlvbgokZmxkcyA9ICIKICAgICAgICAgc3BfaWQgICAgSSBBVVRPIEtFWSwKCQkgc3BfbmFtZSAgQygyNTUpLAogICAgICAgICBzcF91cmwgICBYCiI7CgkJCQokc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlVGFibGVTUUwoIGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3NpbXBsZXBpZSIsCgkJCQkgICAkZmxkcywgCgkJCQkgICAkdGFib3B0YXJyYXkpOwokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CgovLyBjcmVhdGUgYSBzZXF1ZW5jZQokZGItPkNyZWF0ZVNlcXVlbmNlKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3NpbXBsZXBpZV9zZXEiKTsKCi8vIGNyZWF0ZSBhIHBlcm1pc3Npb24KJHRoaXMtPkNyZWF0ZVBlcm1pc3Npb24oU1BfUEVSTUlTU0lPTl9VU0UsICdVc2UgU2ltcGxlcGllJyk7CiAKICAKICAkZm4gPSBkaXJuYW1lKF9fRklMRV9fKS5ESVJFQ1RPUllfU0VQQVJBVE9SLgogICd0ZW1wbGF0ZXMnLkRJUkVDVE9SWV9TRVBBUkFUT1IuJ29yaWdfZnJvbnRfc2ltcGxlcGllX3RlbXBsYXRlLnRwbCc7CmlmKCBmaWxlX2V4aXN0cyggJGZuICkgKQogIHsKICAgICR0ZW1wbGF0ZSA9IEBmaWxlX2dldF9jb250ZW50cygkZm4pOwogICAgJHRoaXMtPlNldFByZWZlcmVuY2UoU1BfUFJFRl9GUk9OVF9TSU1QTEVQSUVfVEVNUExBVEUsJHRlbXBsYXRlKTsKICAgICR0aGlzLT5TZXRUZW1wbGF0ZSgnc3BfU2FtcGxlJywkdGVtcGxhdGUpOwogICAgJHRoaXMtPlNldFByZWZlcmVuY2UoU1BfUFJFRl9ERUZBVUxUX0ZST05UX1NJTVBMRVBJRV9URU1QTEFURSwnU2FtcGxlJyk7CiAgfQogCiAkZm4gPSBkaXJuYW1lKF9fRklMRV9fKS5ESVJFQ1RPUllfU0VQQVJBVE9SLgogICd0ZW1wbGF0ZXMnLkRJUkVDVE9SWV9TRVBBUkFUT1IuJ29yaWdfeW91dHViZS50cGwnOwppZiggZmlsZV9leGlzdHMoICRmbiApICkKICB7CiAgICAkdGVtcGxhdGUgPSBAZmlsZV9nZXRfY29udGVudHMoJGZuKTsKICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlKFNQX1BSRUZfRlJPTlRfU0lNUExFUElFX1RFTVBMQVRFLCR0ZW1wbGF0ZSk7CiAgICAkdGhpcy0+U2V0VGVtcGxhdGUoJ3NwX3lvdXR1YmUnLCR0ZW1wbGF0ZSk7CiAgICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgnb3JpZ195b3V0dWJlJywneW91dHViZScpOwogIH0KICAKICAgJGZuID0gZGlybmFtZShfX0ZJTEVfXykuRElSRUNUT1JZX1NFUEFSQVRPUi4KICAndGVtcGxhdGVzJy5ESVJFQ1RPUllfU0VQQVJBVE9SLidvcmlnX3BpY2FzYS50cGwnOwppZiggZmlsZV9leGlzdHMoICRmbiApICkKICB7CiAgICAkdGVtcGxhdGUgPSBAZmlsZV9nZXRfY29udGVudHMoJGZuKTsKICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlKFNQX1BSRUZfRlJPTlRfU0lNUExFUElFX1RFTVBMQVRFLCR0ZW1wbGF0ZSk7CiAgICAkdGhpcy0+U2V0VGVtcGxhdGUoJ3NwX3BpY2FzYScsJHRlbXBsYXRlKTsKICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlKCdvcmlnX3BpY2FzYScsJ3BpY2FzYScpOwogIH0KICAKICAkZm4gPSBkaXJuYW1lKF9fRklMRV9fKS5ESVJFQ1RPUllfU0VQQVJBVE9SLgogICd0ZW1wbGF0ZXMnLkRJUkVDVE9SWV9TRVBBUkFUT1IuJ29yaWdfZmxpY2tyLnRwbCc7CmlmKCBmaWxlX2V4aXN0cyggJGZuICkgKQogIHsKICAgICR0ZW1wbGF0ZSA9IEBmaWxlX2dldF9jb250ZW50cygkZm4pOwogICAgJHRoaXMtPlNldFByZWZlcmVuY2UoU1BfUFJFRl9GUk9OVF9TSU1QTEVQSUVfVEVNUExBVEUsJHRlbXBsYXRlKTsKICAgICR0aGlzLT5TZXRUZW1wbGF0ZSgnc3BfZmxpY2tyJywkdGVtcGxhdGUpOwogICAgJHRoaXMtPlNldFByZWZlcmVuY2UoJ29yaWdfZmxpY2tyJywnZmxpY2tyJyk7CiAgfQogIAokdGhpcy0+Q3JlYXRlRXZlbnQoICdPblNpbXBsZXBpZVByZWZlcmVuY2VDaGFuZ2UnICk7CiR0aGlzLT5BdWRpdCggMCwgCgkgICAgICAkdGhpcy0+TGFuZygnZnJpZW5kbHluYW1lJyksIAoJICAgICAgJHRoaXMtPkxhbmcoJ2luc3RhbGxlZCcsICR0aGlzLT5HZXRWZXJzaW9uKCkpICk7CgogICAgICAKPz4=]]></data>
	</file>
	<file>
	  <filename>/method.uninstall.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFNrZWxldG9uIC0gYSBwZWRhbnRpYyAic3RhcnRpbmcgcG9pbnQiIG1vZHVsZQojIFZlcnNpb246IDEuMywgU2pHCiMgTWV0aG9kOiBVbmluc3RhbGwKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMgVGhlIG1vZHVsZSdzIGhvbWVwYWdlIGlzOiBodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL3NrZWxldG9uLwojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgovKioKICogRm9yIHNlcGFyYXRlZCBtZXRob2RzLCB5b3UnbGwgYWx3YXlzIHdhbnQgdG8gc3RhcnQgd2l0aCB0aGUgZm9sbG93aW5nCiAqIGxpbmUgd2hpY2ggY2hlY2sgdG8gbWFrZSBzdXJlIHRoYXQgbWV0aG9kIHdhcyBjYWxsZWQgZnJvbSB0aGUgbW9kdWxlCiAqIEFQSSwgYW5kIHRoYXQgZXZlcnl0aGluZydzIHNhZmUgdG8gY29udGludWU6CiAqLyAKaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7CgoKLyoqIAogKiBBZnRlciB0aGlzLCB0aGUgY29kZSBpcyBpZGVudGljYWwgdG8gdGhlIGNvZGUgdGhhdCB3b3VsZCBvdGhlcndpc2UgYmUKICogd3JhcHBlZCBpbiB0aGUgVW5pbnN0YWxsKCkgbWV0aG9kIGluIHRoZSBtb2R1bGUgYm9keS4KICovCgokZGIgPSYgJGdDbXMtPkdldERiKCk7CgovLyByZW1vdmUgdGhlIGRhdGFiYXNlIHRhYmxlCiRkaWN0ID0gTmV3RGF0YURpY3Rpb25hcnkoICRkYiApOwokc3FsYXJyYXkgPSAkZGljdC0+RHJvcFRhYmxlU1FMKCBjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9zaW1wbGVwaWUiICk7CiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCi8vIHJlbW92ZSB0aGUgc2VxdWVuY2UKJGRiLT5Ecm9wU2VxdWVuY2UoIGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3NpbXBsZXBpZV9zZXEiICk7CgovLyByZW1vdmUgdGhlIHBlcm1pc3Npb25zCiR0aGlzLT5SZW1vdmVQZXJtaXNzaW9uKCdVc2UgU2ltcGxlcGllJyk7Ci8vJHRoaXMtPlJlbW92ZVBlcm1pc3Npb24oJ1NldCBTa2VsZXRvbiBQcmVmcycpOwoKIwojIFByZWZlcmVuY2VzCiMKJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoKTsKCgojCiMgVGVtcGxhdGVzCiMKJHRoaXMtPkRlbGV0ZVRlbXBsYXRlKCk7CgovLyByZW1vdmUgdGhlIGV2ZW50CiR0aGlzLT5SZW1vdmVFdmVudCggJ09uU2ltcGxlcGllUHJlZmVyZW5jZUNoYW5nZScgKTsKCi8vIHB1dCBtZW50aW9uIGludG8gdGhlIGFkbWluIGxvZwokdGhpcy0+QXVkaXQoIDAsICR0aGlzLT5MYW5nKCdmcmllbmRseW5hbWUnKSwgJHRoaXMtPkxhbmcoJ3VuaW5zdGFsbGVkJykpOwoKPz4=]]></data>
	</file>
	<file>
	  <filename>/method.upgrade.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFNrZWxldG9uIC0gYSBwZWRhbnRpYyAic3RhcnRpbmcgcG9pbnQiIG1vZHVsZQojIFZlcnNpb246IDEuNSwgU2pHCiMgTWV0aG9kOiBVcGdyYWRlCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQ01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA4IGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykKIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZwojIFRoZSBtb2R1bGUncyBob21lcGFnZSBpczogaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9wcm9qZWN0cy9za2VsZXRvbi8KIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKLyoqCiAqIEZvciBzZXBhcmF0ZWQgbWV0aG9kcywgeW91J2xsIGFsd2F5cyB3YW50IHRvIHN0YXJ0IHdpdGggdGhlIGZvbGxvd2luZwogKiBsaW5lIHdoaWNoIGNoZWNrIHRvIG1ha2Ugc3VyZSB0aGF0IG1ldGhvZCB3YXMgY2FsbGVkIGZyb20gdGhlIG1vZHVsZQogKiBBUEksIGFuZCB0aGF0IGV2ZXJ5dGhpbmcncyBzYWZlIHRvIGNvbnRpbnVlOgoqLyAKaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7CgoKLyoqCiAqIEFmdGVyIHRoaXMsIHRoZSBjb2RlIGlzIGlkZW50aWNhbCB0byB0aGUgY29kZSB0aGF0IHdvdWxkIG90aGVyd2lzZSBiZQogKiB3cmFwcGVkIGluIHRoZSBVcGdyYWRlKCkgbWV0aG9kIGluIHRoZSBtb2R1bGUgYm9keS4KICovCgokY3VycmVudF92ZXJzaW9uID0gJG9sZHZlcnNpb247CnN3aXRjaCgkY3VycmVudF92ZXJzaW9uKQp7CiAgLy8gd2UgYXJlIG5vdyAxLjAgYW5kIHdhbnQgdG8gdXBncmFkZSB0byBsYXRlc3QKIGNhc2UgIjEuMCI6CiAgIC8vZG8gbWFnaWMKIGNhc2UgIjEuMSI6CiAgIC8vYW5kIHRoaXMgaXMgaGVyZSBmb3IgdGhlIG5leHQgdmVyc2lvbgogY2FzZSAiMS4yIjoKIGNhc2UgIjEuMyI6CiBjYXNlICIxLjQiOgogY2FzZSAiMS41IjoKfQoKLy8gcHV0IG1lbnRpb24gaW50byB0aGUgYWRtaW4gbG9nCiR0aGlzLT5BdWRpdCggMCwgCgkgICAgICAkdGhpcy0+TGFuZygnZnJpZW5kbHluYW1lJyksIAoJICAgICAgJHRoaXMtPkxhbmcoJ3VwZ3JhZGVkJywgJHRoaXMtPkdldFZlcnNpb24oKSkpOwoKLy9ub3RlOiBtb2R1bGUgYXBpIGhhbmRsZXMgc2VuZGluZyBnZW5lcmljIGV2ZW50IG9mIG1vZHVsZSB1cGdyYWRlZCBoZXJlCj8+]]></data>
	</file>
	<file>
	  <filename>/templates/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/adminpanel.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyR0YWJzX3N0YXJ0fQogICB7JHN0YXJ0X2dlbmVyYWxfdGFifQogICAgICB7JHdlbGNvbWVfdGV4dH0KICAgeyR0YWJfZW5kfQogICB7JHN0YXJ0X3ByZWZzX3RhYn0KICAgICAge2lmICRzdGFydF9wcmVmc190YWIgIT0gJyd9CiAgICAgIHskc3RhcnRfZm9ybX0KICAgICAgCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICAgIAkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHRpdGxlX2FsbG93X2FkZH06PC9wPgogICAgICAJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfYWxsb3dfYWRkfTwvcD4KICAgICAgCTwvZGl2PgogICAgICAJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgICAgCQk8cCBjbGFzcz0icGFnZXRleHQiPiZuYnNwOzwvcD4KICAgICAgCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JHN1Ym1pdH08L3A+CiAgICAgIAk8L2Rpdj4KICAgICAgeyRlbmRfZm9ybX0KICAgICAgey9pZn0KICAgeyR0YWJfZW5kfQp7JHRhYnNfZW5kfQ==]]></data>
	</file>
	<file>
	  <filename>/templates/admin_add_edit.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyRzdGFydF9mb3JtfQ0KCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQogIAk8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdmZWVkX25hbWUnKX0gKjwvcD4NCiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij4NCgl7aWYgJGlzX3VwZGF0ZSBuZSAndHJ1ZSd9IDxiPnskbmFtZX08L2I+IHtlbHNlfSB7JGlucHV0X25hbWV9IHsvaWZ9IA0KCTwvcD4NCiAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdmZWVkX3VybCcpfSAqPC9wPg0KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfdXJsfTwvcD4NCjwvZGl2Pg0KPGJyIC8+DQo8cCBjbGFzcz0icGFnZWlucHV0Ij57JHN1Ym1pdH0geyRjYW5jZWx9PC9wPg0KeyRlbmRfZm9ybX0NCg==]]></data>
	</file>
	<file>
	  <filename>/templates/admin_general.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCg0KPGgzPnskdGl0bGVfbnVtX3JlY29yZHN9PC9oMz4NCg0KPC9kaXY+DQp7Kg0Ke2lmIGlzc2V0KCRtb2R1bGVfbWVzc2FnZSl9DQo8ZGl2IGNsYXNzPSJwYWdlbWNvbnRhaW5lciI+DQo8ZGl2IGNsYXNzPSJwYWdlbWVzc2FnZSI+eyRtb2R1bGVfbWVzc2FnZXxlc2NhcGV9PC9kaXY+DQo8L2Rpdj4NCnsvaWZ9DQoqfQ0KPGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiIHN0eWxlPSJmbG9hdDogbGVmdDsiPg0KCTxwIGNsYXNzPSJwYWdlb3B0aW9ucyI+eyRhZGR9PC9wPg0KCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskY2FuY2VsfTwvcD4NCjwvZGl2Pg0KPHRhYmxlIGNlbGxzcGFjaW5nPSIwIiBjbGFzcz0icGFnZXRhYmxlIj4NCgk8dGhlYWQ+DQoJCTx0cj4NCgkJCTx0aD57JG1vZC0+TGFuZygnZmVlZF9pZCcpfTwvdGg+DQoJCQk8dGg+eyRtb2QtPkxhbmcoJ2ZlZWRfbmFtZScpfTwvdGg+DQoJCQk8dGg+eyRtb2QtPkxhbmcoJ2ZlZWRfdXJsJyl9PC90aD4NCgkJICAgIDx0aCBjbGFzcz0icGFnZWljb24iPiZuYnNwOzwvdGg+DQoJCQk8dGggY2xhc3M9InBhZ2VpY29uIj4mbmJzcDs8L3RoPg0KCQk8L3RyPg0KCTwvdGhlYWQ+DQoJPHRib2R5Pg0Ke2lmIGVtcHR5KCRyZWNvcmRzKX08dGQ+Jm5ic3A7PC90ZD48dGQ+PHN0cm9uZz57JHRpdGxlX251bV9yZWNvcmRzfTwvc3Ryb25nPjwvdGQ+ey9pZn0NCgl7Zm9yZWFjaCBmcm9tPSRyZWNvcmRzIGl0ZW09ZW50cnl9DQoJCXtjeWNsZSB2YWx1ZXM9J3JvdzEscm93MicgYXNzaWduPSdjdXJyb3cnfQ0KICAgICAgICAgPHRyIGNsYXNzPSJ7JGN1cnJvd30iIG9ubW91c2VvdmVyPSJ0aGlzLmNsYXNzTmFtZT0neyRjdXJyb3d9aG92ZXInOyIgb25tb3VzZW91dD0idGhpcy5jbGFzc05hbWU9J3skY3Vycm93fSc7Ij4NCgkJCQ0KCQkJPHRkPnskZW50cnktPmlkfTwvdGQ+DQoJCQk8dGQ+eyRlbnRyeS0+bmFtZX08L3RkPg0KCQkJPHRkPnskZW50cnktPnVybH08L3RkPg0KCQkJPHRkPnskZW50cnktPmVkaXR9PC90ZD4NCgkJCTx0ZD57JGVudHJ5LT5kZWxldGV9PC90ZD4NCgkJCQ0KCQkJPC90cj4NCgl7L2ZvcmVhY2h9DQoNCgk8L3Rib2R5Pg0KPC90YWJsZT4NCjxkaXYgY2xhc3M9InBhZ2VvcHRpb25zIiBzdHlsZT0iZmxvYXQ6IGxlZnQ7Ij4NCgk8cCBjbGFzcz0icGFnZW9wdGlvbnMiPnskYWRkfTwvcD4NCgk8cCBjbGFzcz0icGFnZWlucHV0Ij57JGNhbmNlbH08L3A+DQo8L2Rpdj4JDQo8ZGl2IGNsYXNzPSJjbGVhcmIiPjwvZGl2Pg0K]]></data>
	</file>
	<file>
	  <filename>/templates/admin_prefs.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[DQogICAgICB7JHN0YXJ0X2Zvcm19DQogICAgICAJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCiAgICAgIAkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygndGl0bGVfbGltaXQnKX06PC9wPg0KICAgICAgCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X2xpbWl0fQ0KCQkJICA8YnIgLz57JG1vZC0+TGFuZygnbm90ZXNfbGltaXQnKX08L3A+DQogICAgICAJPC9kaXY+DQogICAgICAJCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQogICAgICAJCTxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ3RpdGxlX2lzX2NhY2hlJyl9OjwvcD4NCiAgICAgIAkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9pc19jYWNoZX08L3A+DQogICAgICAJPC9kaXY+DQogICAgICAJCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQogICAgICAJCTxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ3RpdGxlX2NhY2hlX2xpZmV0aW1lJyl9OjwvcD4NCiAgICAgIAkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9jYWNoZV9saWZldGltZX0NCgkJCSAgPGJyIC8+eyRtb2QtPkxhbmcoJ25vdGVzX2NhY2hlX2xpZmV0aW1lJyl9PC9wPg0KICAgICAgCTwvZGl2Pg0KICAgICAgCQ0KICAgICAgCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQogICAgICAJCTxwIGNsYXNzPSJwYWdldGV4dCI+Jm5ic3A7PC9wPg0KICAgICAgCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JHN1Ym1pdH08L3A+DQogICAgICAJCTwvZGl2Pg0KICAgICAgeyRlbmRfZm9ybX0NCiAgIA==]]></data>
	</file>
	<file>
	  <filename>/templates/orig_flickr.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBjbGFzcz0iaXRlbS1sZXZlciI+DQp7Zm9yZWFjaCBmcm9tPSRmZWVkLT5nZXRfaXRlbXMoJHN0YXJ0LCRsZW5ndGgpIGl0ZW09b25lZmVlZH0NCg0Ke2Fzc2lnbiB2YXI9J3RodW1iJyAgIHZhbHVlPSdzcXVhcmUnfQ0Ke2Fzc2lnbiB2YXI9J2Z1bGwnICAgdmFsdWU9J21lZGl1bSd9DQoNCnthc3NpZ24gdmFyPSd1cmwnICAgICAgICAgICAgICB2YWx1ZT0kdG9vbHMtPmZpbmRfcGhvdG8oJG9uZWZlZWQtPmdldF9kZXNjcmlwdGlvbigpKX0NCnthc3NpZ24gdmFyPSdmdWxsX3VybCcgICAgICAgIHZhbHVlPSR0b29scy0+cGhvdG8oJHVybCwkZnVsbCl9DQp7YXNzaWduIHZhcj0ndGh1bWJfdXJsJyAgIHZhbHVlPSR0b29scy0+cGhvdG8oJHVybCwgJHRodW1iKX0NCg0KPGRpdiBjbGFzcz0iY29yZS1mbG9hdC1sZWZ0IiBzdHlsZT0ibWFyZ2luOjAgNXB4IDVweCAwOyI+DQo8YSBjbGFzcz0iZmFuY3lib3giIGhyZWY9InskZnVsbF91cmx9IiB0aXRsZT0ieyRvbmVmZWVkLT5nZXRfdGl0bGUoKXxyZXBsYWNlOiciJzonJ30gIj4NCjxpbWcgc3JjPSJ7JHRodW1iX3VybH0iIGFsdD0ieyRvbmVmZWVkLT5nZXRfdGl0bGUoKXxyZXBsYWNlOiciJzonJ30iIC8+DQo8L2E+DQo8L2Rpdj4NCnsvZm9yZWFjaH0NCjwvZGl2Pg==]]></data>
	</file>
	<file>
	  <filename>/templates/orig_front_simplepie_template.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eypkdW1wIHlvdXIgdmFycyp9DQp7KjxwcmU+eyRmZWVkfHByaW50X3J9PC9wcmU+Kn0NCjxkaXYgY2xhc3M9ImZlZWQtbGV2ZXIiPg0KDQp7aWYgJGZlZWQtPmdldF9mYXZpY29uKCl9DQpGYXZpY29uOiA8aW1nIHNyYz0ieyRmZWVkLT5nZXRfZmF2aWNvbigpfSIgdGl0bGU9InskZmVlZC0+Z2V0X2Rlc2NyaXB0aW9uKCl9IiBhbHQ9InskZmVlZC0+Z2V0X2Rlc2NyaXB0aW9uKCl9IiAvPg0Key9pZn0NCg0KDQpTdWJzY3JpYmUgVVJMOiA8YSBocmVmPSJ7JGZlZWQtPnN1YnNjcmliZV91cmwoKX0iPnskZmVlZC0+c3Vic2NyaWJlX3VybCgpfTwvYT4NCg0KPHA+PGEgaHJlZj0ieyRmZWVkLT5nZXRfbGluaygpfSI+U2l0ZSBMaW5rIFVSTDogeyRmZWVkLT5nZXRfdGl0bGUoKX08L2E+PC9wPg0KDQo8cD5EZXNjcmlwdGlvbjogeyRmZWVkLT5nZXRfZGVzY3JpcHRpb24oKX08L3A+DQo8L2Rpdj4NCg0KPGRpdiBjbGFzcz0iaXRlbS1sZXZlciI+DQp7Zm9yZWFjaCBmcm9tPSRmZWVkLT5nZXRfaXRlbXMoJHN0YXJ0LCRsZW5ndGgpIGl0ZW09b25lZmVlZH0NCjxoND4NCjxhIGhyZWY9Inskb25lZmVlZC0+Z2V0X3Blcm1hbGluaygpfSIgdGl0bGU9Inskb25lZmVlZC0+Z2V0X3RpdGxlKCl9Ij57JG9uZWZlZWQtPmdldF90aXRsZSgpfTwvYT4NCjwvaDQ+DQo8ZGl2IGNsYXNzPSJmZWVkLWNvbnRlbnQiPg0KeyRvbmVmZWVkLT5nZXRfY29udGVudCgpfQ0KPC9kaXY+DQo8YnIvPg0KPHNtYWxsPg0KPGEgaHJlZj0ieyRvbmVmZWVkLT5nZXRfcGVybWFsaW5rKCl9IiB0aXRsZT0ieyRvbmVmZWVkLT5nZXRfdGl0bGUoKX0iPnskb25lZmVlZC0+Z2V0X3RpdGxlKCl9PC9hPg0KICAgICAgICB7JG9uZWZlZWQtPmdldF9kYXRlKCl8ZGF0ZV9mb3JtYXQ6IiVZLyVtLyVkICVIOiVNIn0gICAgICAgICAgICAgICAgDQo8L3NtYWxsPg0KPGJyIC8+DQp7L2ZvcmVhY2h9DQo8L2Rpdj4=]]></data>
	</file>
	<file>
	  <filename>/templates/orig_picasa.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBjbGFzcz0iaXRlbS1sZXZlciI+DQp7Zm9yZWFjaCBmcm9tPSRmZWVkLT5nZXRfaXRlbXMoJHN0YXJ0LCRsZW5ndGgpIGl0ZW09b25lZmVlZH0NCnsqVGh1bWIqfQ0Ke2Fzc2lnbiB2YXI9J3R1bWInICB2YWx1ZT0wfQ0KeypTbWFsbCp9DQp7YXNzaWduIHZhcj0nc21hbGwnIHZhbHVlPTF9DQp7Kk1lZGl1bSp9DQp7YXNzaWduIHZhcj0nbWVkaXVtJyB2YWx1ZT0yfQ0KDQoNCnthc3NpZ24gdmFyPSdlbmNsb3N1cmUnICB2YWx1ZT0kb25lZmVlZC0+Z2V0X2VuY2xvc3VyZSgpfQ0Ke2Fzc2lnbiB2YXI9J3R1bWJJdGVtJyAgdmFsdWU9JGVuY2xvc3VyZS0+Z2V0X3RodW1ibmFpbHMoKX0NCg0KDQo8ZGl2IGNsYXNzPSJjb3JlLWZsb2F0LWxlZnQiIHN0eWxlPSJtYXJnaW46MCA1cHggNXB4IDA7Ij4NCjxhIGhyZWY9Inskb25lZmVlZC0+Z2V0X3Blcm1hbGluaygpfSIgdGl0bGU9Inskb25lZmVlZC0+Z2V0X3RpdGxlKCl9Ij4NCjxpbWcgc3JjPSJ7JHR1bWJJdGVtWyRzbWFsbF19IiBhbHQ9IiIgIC8+DQo8L2E+DQo8L2Rpdj4NCnsvZm9yZWFjaH0NCjwvZGl2Pg==]]></data>
	</file>
	<file>
	  <filename>/templates/orig_youtube.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2ZvcmVhY2ggZnJvbT0kZmVlZC0+Z2V0X2l0ZW1zKCRzdGFydCwkbGVuZ3RoKSBpdGVtPW9uZWZlZWR9DQp7YXNzaWduIHZhcj0nZW5jbG9zdXJlJyAgdmFsdWU9JG9uZWZlZWQtPmdldF9lbmNsb3N1cmUoKX0NCjxkaXYgY2xhc3M9ImNvcmUtZmxvYXQtbGVmdCIgc3R5bGU9Im1hcmdpbjowIDVweCA1cHggMDsiPg0KPGEgaHJlZj0ieyRvbmVmZWVkLT5nZXRfcGVybWFsaW5rKCl9IiB0aXRsZT0ieyRvbmVmZWVkLT5nZXRfdGl0bGUoKX0iPg0KPGltZyBzcmM9InskZW5jbG9zdXJlLT5nZXRfdGh1bWJuYWlsKCl9IiB3aWR0aD0iMTEwIiBoZWlnaHQ9Ijg1IiAvPg0KPC9hPg0KPC9kaXY+DQp7L2ZvcmVhY2h9]]></data>
	</file>
	<file>
	  <filename>/templates/template_tab.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCg0KICANCnskbXNnfQ0KDQo8L2Rpdj4NCg0KeyR0ZW1wbGF0ZWxpc3R9]]></data>
	</file>
	<file>
	  <filename>/TODO.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[TG9jYWxpemF0aW9uczogDQogICAtICBmdW5jdGlvbi5hZG1pbl9mZWVkX3RlbXBsYXRlc190YWIucGhwICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0oRE9ORSkNCiAgIA0KICAgT24gaW5zdGFsbCBjaGVjayBkZWZhdWx0IFNpbXBsZSB0ZW1wbGF0ZSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIChET05FKQ0KICAgQ2hlY2sgZm9yIGR1cGxpY2F0ZSBGZWVkcyBOYW1lcyAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIChET05FKQ0KICAgQWRkIFByZWZzLiAsIENhY2hlIHllcy9ubywgY2FjaGUgbGlmZXRpbWUgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIChET05FKQ0KICAgQWRkIHRlbXBsYXRlIHBhcmFtIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIChET05FKQ0KICAgDQogIA0KICANCiAgIFV0aWxzDQogICAgIEZsaWNrciBHYWxsZXJ5IHdpdGggU2ltcGxlUGllICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKERPTkUpDQogICAgIA0KICANCiAgDQogIA0KX19fX19fX19fX19fX19fX19fX19fX19fQlVHUy9GSVhFUzpfX19fX19fX19fX19fX19fX19fX19fX18NCiAgDQogICAgIC0gVE9ETw0KICAgICANCiAgICAgDQogICAgIA0KX19fX19fX19fX19fX19fX19fX19fX19fRlI6X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18NCiAgDQogICAgIC0gPFNpbG1hcmlsbGlvbj4JYSBuaWNlIHRvdWNoIHdvdWxkIGJlIHNvbWUgaW5kaWNhdG9yIGluIHRoZSBhZG1pbi1saXN0IG9mIGZlZWRzIHNob3dpbmcgd2hldGhlciB0aGUgZmVlZCBpcyB2YWxpZC4uLmlmIHlvdSBwcm92aWRlIGEgbm9uLXdvcmtpbmcgdXJsIHNvbWUgaW5kaWNhdG9yIGNvdWxkIHNob3cgYSByZWQgY3Jvc3Mgb3Igc29tZXRoaW5nLi4uIGJ1dCB0aGF0IGNvdWxkIGJlIGluIHZlcnNpb24gMS4x]]></data>
	</file>
</module>
