# Name: smd_prefalizer v0.12 # Type: Admin side plugin # Add, remove, or edit TXP prefs with ease # Author: Stef Dawson # URL: http://stefdawson.com/ # Recommended load order: 5 # ..................................................................... # This is a plugin for Textpattern - http://textpattern.com/ # To install: textpattern > admin > plugins # Paste the following text into the 'Install plugin' box: # ..................................................................... YToxMTp7czo0OiJuYW1lIjtzOjE0OiJzbWRfcHJlZmFsaXplciI7czo2OiJhdXRob3IiO3M6 MTE6IlN0ZWYgRGF3c29uIjtzOjEwOiJhdXRob3JfdXJpIjtzOjIyOiJodHRwOi8vc3RlZmRh d3Nvbi5jb20vIjtzOjc6InZlcnNpb24iO3M6NDoiMC4xMiI7czoxMToiZGVzY3JpcHRpb24i O3M6NDA6IkFkZCwgcmVtb3ZlLCBvciBlZGl0IFRYUCBwcmVmcyB3aXRoIGVhc2UiO3M6NDoi Y29kZSI7czoxNjI3ODoiaWYgKEB0eHBpbnRlcmZhY2UgPT0gJ2FkbWluJykgew0KCWdsb2Jh bCAkc21kX3ByZWZhbGl6ZXJfZXZlbnQsICRzbWRfcHJlZmFsaXplcl9wcml2cywgJHNtZF9w cmVmYWxpemVyX3R5cGVzOw0KDQoJJHNtZF9wcmVmYWxpemVyX2V2ZW50ID0gJ3NtZF9wcmVm YWxpemVyJzsNCgkkc21kX3ByZWZhbGl6ZXJfcHJpdnMgPSAnMSc7DQoJJHNtZF9wcmVmYWxp emVyX3R5cGVzID0gYXJyYXkoMCA9PiAnYmFzaWMnLCAxID0+ICdhZHZhbmNlZCcsIDIgPT4g J2hpZGRlbicpOw0KDQoJYWRkX3ByaXZzKCRzbWRfcHJlZmFsaXplcl9ldmVudCwgJHNtZF9w cmVmYWxpemVyX3ByaXZzKTsNCglyZWdpc3Rlcl90YWIoImFkbWluIiwgJHNtZF9wcmVmYWxp emVyX2V2ZW50LCBzbWRfcHJlZmFsaXplcl9nVHh0KCd0YWJfbmFtZScpKTsNCglyZWdpc3Rl cl9jYWxsYmFjaygnc21kX3ByZWZhbGl6ZXInLCAkc21kX3ByZWZhbGl6ZXJfZXZlbnQpOw0K fQ0KDQpmdW5jdGlvbiBzbWRfcHJlZmFsaXplcigkZXZlbnQsICRzdGVwKSB7DQoJaWYoISRz dGVwIG9yICFpbl9hcnJheSgkc3RlcCwgYXJyYXkoDQoJCQknc21kX3ByZWZhbGl6ZXJfYWRk JywNCgkJCSdzbWRfcHJlZmFsaXplcl9zYXZlJywNCgkJCSdzbWRfcHJlZmFsaXplcl9kZWxl dGUnLA0KCQkJJ3NtZF9wcmVmYWxpemVyX2NoYW5nZV9wYWdlYnknLA0KCQkpKSkgew0KCQlz bWRfcHJlZmFsaXplcl9saXN0KCcnKTsNCgl9IGVsc2UgJHN0ZXAoKTsNCn0NCg0KLy8gTGlz dCB0aGUgY2hvc2VuIHByZWZzDQpmdW5jdGlvbiBzbWRfcHJlZmFsaXplcl9saXN0KCRtc2c9 JycpIHsNCglnbG9iYWwgJHNtZF9wcmVmYWxpemVyX2V2ZW50LCAkc21kX3ByZWZhbGl6ZXJf dHlwZXM7DQoNCglwYWdldG9wKHNtZF9wcmVmYWxpemVyX2dUeHQoJ3RhYl9uYW1lJyksICRt c2cpOw0KCWV4dHJhY3QoZ3BzYShhcnJheSgnc3RlcCcsICdwYWdlJywgJ3NvcnQnLCAnZGly JywgJ2NyaXQnLCAnc2VhcmNoX21ldGhvZCcsICduYW1lJywgJ3ZhbHVlJywgJ3R5cGUnLCAn cHJlZl9ldmVudCcsICdodG1sJywgJ3VzZXJfbmFtZScsICdwb3NpdGlvbicsICdleHBvc2Un KSkpOw0KCSRtc2cgPSAoJG1zZykgPyAkbXNnIDogZ3BzKCdtc2cnKTsNCg0KCS8vIEhhbmRs ZSBwYWdpbmcgLyBzb3J0aW5nDQoJJHBhZ2VieSA9IChncHMoJ3F0eScpKSA/IGdwcygncXR5 JykgOiAoKGNzKCdzbWRfcHJlZmFsaXplcl9wYWdlYnknKSkgPyBjcygnc21kX3ByZWZhbGl6 ZXJfcGFnZWJ5JykgOiAyNSk7DQoJJGRpciA9ICgkZGlyID09ICdkZXNjJykgPyAnZGVzYycg OiAnYXNjJzsNCglzd2l0Y2ggKCRzb3J0KSB7DQoJCWNhc2UgJ3ZhbHVlJzoNCgkJCSRzb3J0 X3NxbCA9ICd2YWwgJy4kZGlyLicsIG5hbWUgYXNjJzsNCgkJCWJyZWFrOw0KCQljYXNlICd0 eXBlJzoNCgkJCSRzb3J0X3NxbCA9ICd0eXBlICcuJGRpci4nLCBuYW1lIGFzYyc7DQoJCQli cmVhazsNCgkJY2FzZSAnZXZlbnQnOg0KCQkJJHNvcnRfc3FsID0gJ2V2ZW50ICcuJGRpci4n LCBuYW1lIGFzYyc7DQoJCQlicmVhazsNCgkJY2FzZSAnaHRtbCc6DQoJCQkkc29ydF9zcWwg PSAnaHRtbCAnLiRkaXIuJywgbmFtZSBhc2MnOw0KCQkJYnJlYWs7DQoJCWNhc2UgJ3VzZXIn Og0KCQkJJHNvcnRfc3FsID0gJ3VzZXJfbmFtZSAnLiRkaXIuJywgbmFtZSBhc2MnOw0KCQkJ YnJlYWs7DQoJCWNhc2UgJ3Bvc2l0aW9uJzoNCgkJCSRzb3J0X3NxbCA9ICdwb3NpdGlvbiAn LiRkaXIuJywgbmFtZSBhc2MnOw0KCQkJYnJlYWs7DQoJCWNhc2UgJ25hbWUnOg0KCQlkZWZh dWx0Og0KCQkJJHNvcnQgPSAnbmFtZSc7DQoJCQkkc29ydF9zcWwgPSAnbmFtZSAnLiRkaXI7 DQoJCQlicmVhazsNCgl9DQoJJHN3aXRjaF9kaXIgPSAoJGRpciA9PSAnZGVzYycpID8gJ2Fz YycgOiAnZGVzYyc7DQoJJGNyaXRlcmlhID0gMTsNCg0KCWlmICgkc2VhcmNoX21ldGhvZCAm JiAkY3JpdCAhPT0gZmFsc2UpIHsNCgkJJGNyaXRfZXNjYXBlZCA9IGRvU2xhc2goJGNyaXQp Ow0KCQkkY3JpdHNxbCA9IGFycmF5KA0KCQkJJ25hbWUnID0+ICJuYW1lIGxpa2UgJyUkY3Jp dF9lc2NhcGVkJSciLA0KCQkJJ3ZhbHVlJyA9PiAidmFsIGxpa2UgJyUkY3JpdF9lc2NhcGVk JSciLA0KCQkJJ3R5cGUnID0+ICJ0eXBlID0gIiAuICgoaXNfbnVtZXJpYygkY3JpdF9lc2Nh cGVkKSkgPyAiJGNyaXRfZXNjYXBlZCIgOiAoKCgkY3JpdF9udW1iZXIgPSBhcnJheV9zZWFy Y2goc3RydG9sb3dlcigkY3JpdF9lc2NhcGVkKSwgJHNtZF9wcmVmYWxpemVyX3R5cGVzKSkg IT09IGZhbHNlKSA/ICRjcml0X251bWJlciA6IDApKSwNCgkJCSdldmVudCcgPT4gImV2ZW50 IGxpa2UgJyUkY3JpdF9lc2NhcGVkJSciLA0KCQkJJ2h0bWwnID0+ICJodG1sIGxpa2UgJyUk Y3JpdF9lc2NhcGVkJSciLA0KCQkJJ3VzZXInID0+ICJ1c2VyX25hbWUgbGlrZSAnJSRjcml0 X2VzY2FwZWQlJyIsDQoJCQkncG9zaXRpb24nID0+ICJwb3NpdGlvbiA9ICckY3JpdF9lc2Nh cGVkJyIsDQoJCSk7DQoNCgkJaWYgKGFycmF5X2tleV9leGlzdHMoJHNlYXJjaF9tZXRob2Qs ICRjcml0c3FsKSkgew0KCQkJJGNyaXRlcmlhID0gJGNyaXRzcWxbJHNlYXJjaF9tZXRob2Rd Ow0KCQkJJGxpbWl0ID0gMTAwMDsNCgkJfSBlbHNlIHsNCgkJCSRzZWFyY2hfbWV0aG9kID0g Jyc7DQoJCQkkY3JpdCA9ICcnOw0KCQl9DQoJfSBlbHNlIHsNCgkJJHNlYXJjaF9tZXRob2Qg PSAnJzsNCgkJJGNyaXQgPSAnJzsNCgl9DQoJJHRvdGFsID0gc2FmZV9jb3VudCgndHhwX3By ZWZzJywgIiRjcml0ZXJpYSIpOw0KCSRsaW1pdCA9IG1heChAJHBhZ2VieSwgMjUpOw0KCWxp c3QoJHBhZ2UsICRvZmZzZXQsICRudW1QYWdlcykgPSBwYWdlcigkdG90YWwsICRsaW1pdCwg JHBhZ2UpOw0KDQoJJHFzID0gYXJyYXkoDQoJCSJldmVudCIgPT4gJHNtZF9wcmVmYWxpemVy X2V2ZW50LA0KCQkicGFnZSIgPT4gJHBhZ2UsDQoJCSJzb3J0IiA9PiAkc29ydCwNCgkJImRp ciIgPT4gJGRpciwNCgkJImNyaXQiID0+ICRjcml0LA0KCQkic2VhcmNoX21ldGhvZCIgPT4g JHNlYXJjaF9tZXRob2QsDQoJCSJleHBvc2UiID0+ICRleHBvc2UsDQoJKTsNCg0KCS8vIExp c3QgdGhlIGRlc2lyZWQgcHJlZnMNCgkkdGhlUHJlZnMgPSBzYWZlX3Jvd3MoJyonLCAndHhw X3ByZWZzJywgIiRjcml0ZXJpYSBvcmRlciBieSAkc29ydF9zcWwgbGltaXQgJG9mZnNldCwg JGxpbWl0Iik7DQoJJGF1dGhvcl9saXN0ID0gc2FmZV9jb2x1bW4oJ25hbWUnLCAndHhwX3Vz ZXJzJywgJzEgPSAxJyk7DQoJZWNobyBzbWRfcHJlZmFsaXplcl9zZWFyY2hfZm9ybSgkY3Jp dCwgJHNlYXJjaF9tZXRob2QpOw0KCSRlZGl0Rm9jdXMgPSAoJHN0ZXAgPT0gJ2VkaXQnKSA/ ICdqUXVlcnkoZnVuY3Rpb24oKSB7IGpRdWVyeSgiI3NtZF9wcmVmYWxpemVyX3ZhbHVlIHRl eHRhcmVhIikuZm9jdXMoKTsgfSk7JzogJyc7DQoNCgkvLyBBbnkgZWRpdHMgdG8gYW4gZW50 cnkgYXJlIGNvcGllZCB0byB0aGlzIGhpZGRlbiBmb3JtIGFuZCB0aGVuIHN1Ym1pdHRlZA0K CWVjaG8gPDw8RU9DDQo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+DQpmdW5jdGlv biBzbWRfcHJlZmFsaXplcl9zYXZlKCkgew0KCXZhciBzdHlwZSA9IGpRdWVyeSgiI3NtZF9w cmVmYWxpemVyX2VkaXRlZCAjc21kX3ByZWZhbGl6ZXJfdHlwZSBvcHRpb246c2VsZWN0ZWQi KS52YWwoKTsNCgl2YXIgdXR5cGUgPSBqUXVlcnkoIiNzbWRfcHJlZmFsaXplcl9lZGl0ZWQg I3NtZF9wcmVmYWxpemVyX3VzZXJfbmFtZSBvcHRpb246c2VsZWN0ZWQiKS52YWwoKTsNCglq UXVlcnkoIiNzbWRfcHJlZmFsaXplcl9pbnB1dCBpbnB1dFtuYW1lPSduZXduYW1lJ10iKS52 YWwoalF1ZXJ5KCIjc21kX3ByZWZhbGl6ZXJfZWRpdGVkICNzbWRfcHJlZmFsaXplcl9uYW1l IGlucHV0IikudmFsKCkpOw0KCWpRdWVyeSgiI3NtZF9wcmVmYWxpemVyX2lucHV0IGlucHV0 W25hbWU9J3ZhbHVlJ10iKS52YWwoalF1ZXJ5KCIjc21kX3ByZWZhbGl6ZXJfZWRpdGVkICNz bWRfcHJlZmFsaXplcl92YWx1ZSB0ZXh0YXJlYSIpLnZhbCgpKTsNCglqUXVlcnkoIiNzbWRf cHJlZmFsaXplcl9pbnB1dCAjc21kX3ByZWZhbGl6ZXJfbmV3X3R5cGUgb3B0aW9uOmVxKCIr c3R5cGUrIikiKS5hdHRyKCdzZWxlY3RlZCcsICdzZWxlY3RlZCcpOw0KCWpRdWVyeSgiI3Nt ZF9wcmVmYWxpemVyX2lucHV0IGlucHV0W25hbWU9J3ByZWZfZXZlbnQnXSIpLnZhbChqUXVl cnkoIiNzbWRfcHJlZmFsaXplcl9lZGl0ZWQgI3NtZF9wcmVmYWxpemVyX2V2ZW50IGlucHV0 IikudmFsKCkpOw0KCWpRdWVyeSgiI3NtZF9wcmVmYWxpemVyX2lucHV0IGlucHV0W25hbWU9 J2h0bWwnXSIpLnZhbChqUXVlcnkoIiNzbWRfcHJlZmFsaXplcl9lZGl0ZWQgI3NtZF9wcmVm YWxpemVyX2h0bWwgaW5wdXQiKS52YWwoKSk7DQoJalF1ZXJ5KCIjc21kX3ByZWZhbGl6ZXJf aW5wdXQgI3NtZF9wcmVmYWxpemVyX25ld3VzZXIgb3B0aW9uW3ZhbHVlPSciK3V0eXBlKyIn XSIpLmF0dHIoJ3NlbGVjdGVkJywgJ3NlbGVjdGVkJyk7DQoJalF1ZXJ5KCIjc21kX3ByZWZh bGl6ZXJfaW5wdXQgaW5wdXRbbmFtZT0ncG9zaXRpb24nXSIpLnZhbChqUXVlcnkoIiNzbWRf cHJlZmFsaXplcl9lZGl0ZWQgI3NtZF9wcmVmYWxpemVyX3Bvc2l0aW9uIGlucHV0IikudmFs KCkpOw0KCWpRdWVyeSgiZm9ybVtuYW1lPSdzbWRfcHJlZmFsaXplcl9pbnB1dCddIikudHJp Z2dlcigic3VibWl0Iik7DQp9DQpmdW5jdGlvbiBzbWRfcHJlZmFsaXplcl90b2dnbGVuZXco KSB7DQoJYm94ID0galF1ZXJ5KCJmb3JtW25hbWU9J3NtZF9wcmVmYWxpemVyX2lucHV0J10i KTsNCglpZiAoYm94LmNzcygiZGlzcGxheSIpID09ICJub25lIikgew0KCQlib3guc2xpZGVE b3duKCdmYXN0Jyk7DQoJfSBlbHNlIHsNCgkJYm94LnNsaWRlVXAoJ2Zhc3QnKTsNCgl9DQoJ alF1ZXJ5KCcjc21kX3ByZWZhbGl6ZXJfbmV3IC5zbWRfZm9jdXMnKS5mb2N1cygpOw0KCXJl dHVybiBmYWxzZTsNCn0NCnskZWRpdEZvY3VzfQ0KPC9zY3JpcHQ+DQo8c3R5bGUgdHlwZT0i dGV4dC9jc3MiPg0KLnNtZF9oaWRkZW4gew0KCWRpc3BsYXk6bm9uZTsNCn0NCiNzbWRfcHJl ZmFsaXplcl9sb25nZm9ybSAjbGlzdCB0ci5kYXRhOmhvdmVyIHsNCgliYWNrZ3JvdW5kOiNl N2U3ZTc7DQp9DQo8L3N0eWxlPg0KRU9DOw0KDQoJJG5ld2J0biA9ICc8YSBjbGFzcz0ibmF2 bGluayIgaHJlZj0iIyIgb25jbGljaz0icmV0dXJuIHNtZF9wcmVmYWxpemVyX3RvZ2dsZW5l dygpOyI+Jy5zbWRfcHJlZmFsaXplcl9nVHh0KCduZXcnKS4nPC9hPic7DQoJJGhlYWRpbmdz ID0gYXNzSGVhZCgnbmFtZScsJ3ZhbHVlJywgJ3R5cGUnLCBzbWRfcHJlZmFsaXplcl9nVHh0 KCdldmVudCcpLCBzbWRfcHJlZmFsaXplcl9nVHh0KCdodG1sJyksIHNtZF9wcmVmYWxpemVy X2dUeHQoJ3VzZXInKSwgc21kX3ByZWZhbGl6ZXJfZ1R4dCgncG9zaXRpb24nKSwgc21kX3By ZWZhbGl6ZXJfZ1R4dCgnYWN0aW9ucycpKTsNCgllY2hvICc8Zm9ybSBtZXRob2Q9InBvc3Qi IG5hbWU9InNtZF9wcmVmYWxpemVyX2lucHV0IiBjbGFzcz0ic21kX2hpZGRlbiIgYWN0aW9u PSInLmpvaW5fcXMoJHFzKS4nIj4nOw0KCWVjaG8gc0lucHV0KCdzbWRfcHJlZmFsaXplcl9z YXZlJyk7DQoJZWNobyBoSW5wdXQoJ25hbWUnLCgoJHN0ZXA9PSdlZGl0JykgPyAkbmFtZSA6 ICcnKSk7DQoJZWNobyBoSW5wdXQoJ3VzZXJfbmFtZScsKCgkc3RlcD09J2VkaXQnKSA/ICR1 c2VyX25hbWUgOiAnJykpOw0KCWVjaG8gc3RhcnRUYWJsZSgnc21kX3ByZWZhbGl6ZXJfbmV3 JywgJycsICcnLCA4KTsNCgllY2hvIHRyKCRoZWFkaW5ncyk7DQoJZWNobyAnPHRyIGlkPSJz bWRfcHJlZmFsaXplcl9pbnB1dCI+JzsNCgllY2hvIHRkKGZJbnB1dCgndGV4dCcsICduZXdu YW1lJywgKCgkc3RlcD09J2VkaXQnKSA/ICRuYW1lIDogJycpLCAnc21kX2ZvY3VzJykpDQoJ ICAgIC50ZChmSW5wdXQoJ3RleHQnLCAndmFsdWUnLCAoKCRzdGVwPT0nZWRpdCcpID8gJHZh bHVlIDogJycpKSkNCgkgICAgLnRkKHNlbGVjdElucHV0KCd0eXBlJywgJHNtZF9wcmVmYWxp emVyX3R5cGVzLCAoKCRzdGVwPT0nZWRpdCcpID8gJHR5cGUgOiAyKSwgZmFsc2UsICcnLCAn c21kX3ByZWZhbGl6ZXJfbmV3X3R5cGUnKSkNCgkgICAgLnRkKGZJbnB1dCgndGV4dCcsICdw cmVmX2V2ZW50JywgKCgkc3RlcD09J2VkaXQnKSA/ICRwcmVmX2V2ZW50IDogJycpKSkNCgkg ICAgLnRkKGZJbnB1dCgndGV4dCcsICdodG1sJywgKCgkc3RlcD09J2VkaXQnKSA/ICRodG1s IDogJ3RleHRfaW5wdXQnKSkpDQoJICAgIC50ZChzZWxlY3RJbnB1dCgnbmV3dXNlcicsICRh dXRob3JfbGlzdCwgKCgkc3RlcD09J2VkaXQnKSA/ICR1c2VyX25hbWUgOiAnJyksIHRydWUs ICcnLCAnc21kX3ByZWZhbGl6ZXJfbmV3dXNlcicpKQ0KCSAgICAudGQoZklucHV0KCd0ZXh0 JywgJ3Bvc2l0aW9uJywgKCgkc3RlcD09J2VkaXQnKSA/ICRwb3NpdGlvbiA6ICcwJykpKQ0K CSAgICAudGQoZklucHV0KCdzdWJtaXQnLCAnJywgZ1R4dCgnYWRkJyksICdzbWFsbGVyYm94 JykpOw0KCWVjaG8gJzwvdHI+JzsNCgllY2hvIGVuZFRhYmxlKCk7DQoJZWNobyAnPC9mb3Jt Pic7DQoNCgkvLyBUaGUgbWFpbiBsaXN0DQoJZWNobyAnPGZvcm0gbWV0aG9kPSJwb3N0IiBu YW1lPSJsb25nZm9ybSIgaWQ9InNtZF9wcmVmYWxpemVyX2xvbmdmb3JtIiBhY3Rpb249Iicu am9pbl9xcygkcXMpLiciPic7DQoJZWNobyBzdGFydFRhYmxlKCdsaXN0JywnJywnJyw4KTsN CgllY2hvIHRyKHRkYSgkbmV3YnRuLCAnIGNvbHNwYW49IjgiJykpOw0KCWVjaG8gdHIoDQoJ CWNvbHVtbl9oZWFkKCduYW1lJywgJ25hbWUnLCAnc21kX3ByZWZhbGl6ZXInLCB0cnVlLCAk c3dpdGNoX2RpciwgJGNyaXQsICRzZWFyY2hfbWV0aG9kLCAoJ25hbWUnID09ICRzb3J0KSA/ ICRkaXIgOiAnJykuDQoJCWNvbHVtbl9oZWFkKCd2YWx1ZScsICd2YWx1ZScsICdzbWRfcHJl ZmFsaXplcicsIHRydWUsICRzd2l0Y2hfZGlyLCAkY3JpdCwgJHNlYXJjaF9tZXRob2QsICgn dmFsdWUnID09ICRzb3J0KSA/ICRkaXIgOiAnJykuDQoJCWNvbHVtbl9oZWFkKCd0eXBlJywg J3R5cGUnLCAnc21kX3ByZWZhbGl6ZXInLCB0cnVlLCAkc3dpdGNoX2RpciwgJGNyaXQsICRz ZWFyY2hfbWV0aG9kLCAoJ3R5cGUnID09ICRzb3J0KSA/ICRkaXIgOiAnJykuDQoJCWNvbHVt bl9oZWFkKHNtZF9wcmVmYWxpemVyX2dUeHQoJ2V2ZW50JyksICdldmVudCcsICdzbWRfcHJl ZmFsaXplcicsIHRydWUsICRzd2l0Y2hfZGlyLCAkY3JpdCwgJHNlYXJjaF9tZXRob2QsICgn ZXZlbnQnID09ICRzb3J0KSA/ICRkaXIgOiAnJykuDQoJCWNvbHVtbl9oZWFkKHNtZF9wcmVm YWxpemVyX2dUeHQoJ2h0bWwnKSwgJ2h0bWwnLCAnc21kX3ByZWZhbGl6ZXInLCB0cnVlLCAk c3dpdGNoX2RpciwgJGNyaXQsICRzZWFyY2hfbWV0aG9kLCAoJ2h0bWwnID09ICRzb3J0KSA/ ICRkaXIgOiAnJykuDQoJCWNvbHVtbl9oZWFkKHNtZF9wcmVmYWxpemVyX2dUeHQoJ3VzZXIn KSwgJ3VzZXInLCAnc21kX3ByZWZhbGl6ZXInLCB0cnVlLCAkc3dpdGNoX2RpciwgJGNyaXQs ICRzZWFyY2hfbWV0aG9kLCAoJ3VzZXInID09ICRzb3J0KSA/ICRkaXIgOiAnJykuDQoJCWNv bHVtbl9oZWFkKHNtZF9wcmVmYWxpemVyX2dUeHQoJ3Bvc2l0aW9uJyksICdwb3NpdGlvbics ICdzbWRfcHJlZmFsaXplcicsIHRydWUsICRzd2l0Y2hfZGlyLCAkY3JpdCwgJHNlYXJjaF9t ZXRob2QsICgncG9zaXRpb24nID09ICRzb3J0KSA/ICRkaXIgOiAnJykuDQoJCWNvbHVtbl9o ZWFkKHNtZF9wcmVmYWxpemVyX2dUeHQoJ2FjdGlvbnMnKSwgJ2FjdGlvbnMnLCAnc21kX3By ZWZhbGl6ZXInLCBmYWxzZSkNCgkpOw0KDQoJZm9yZWFjaCAoJHRoZVByZWZzIGFzICRwcmVm X3Jvdykgew0KCQlpZiAoJHN0ZXAgPT0gJ2VkaXQnICYmICRwcmVmX3Jvd1snbmFtZSddID09 ICRuYW1lICYmICRwcmVmX3Jvd1sndXNlcl9uYW1lJ10gPT0gJHVzZXJfbmFtZSkgew0KCQkJ JGJ0blNhdmUgPSBmSW5wdXQoJ2J1dHRvbicsICcnLCBnVHh0KCdTYXZlJyksICdwdWJsaXNo JywgJycsICdzbWRfcHJlZmFsaXplcl9zYXZlKCknKTsNCgkJCWVjaG8gdHIoJGhlYWRpbmdz KTsNCgkJCWVjaG8gdHIoDQoJCQkJdGQoZklucHV0KCd0ZXh0JywgJ25hbWUnLCAkcHJlZl9y b3dbJ25hbWUnXSksIDcwLCAnJywgJ3NtZF9wcmVmYWxpemVyX25hbWUnKQ0KCQkJCS50ZCh0 ZXh0X2FyZWEoJ3ZhbHVlJywgJzgwJywgJzIyMCcsICRwcmVmX3Jvd1sndmFsJ10pLCAyMjAs ICcnLCAnc21kX3ByZWZhbGl6ZXJfdmFsdWUnKQ0KCQkJCS50ZChzZWxlY3RJbnB1dCgndHlw ZScsICRzbWRfcHJlZmFsaXplcl90eXBlcywgJHByZWZfcm93Wyd0eXBlJ10pLCA2MCwgJycs ICdzbWRfcHJlZmFsaXplcl90eXBlJykNCgkJCQkudGQoZklucHV0KCd0ZXh0JywgJ3ByZWZf ZXZlbnQnLCAkcHJlZl9yb3dbJ2V2ZW50J10pLCA2MCwgJycsICdzbWRfcHJlZmFsaXplcl9l dmVudCcpDQoJCQkJLnRkKGZJbnB1dCgndGV4dCcsICdodG1sJywgJHByZWZfcm93WydodG1s J10pLCA2MCwgJycsICdzbWRfcHJlZmFsaXplcl9odG1sJykNCgkJCQkudGQoc2VsZWN0SW5w dXQoJ3VzZXJfbmFtZScsICRhdXRob3JfbGlzdCwgJHByZWZfcm93Wyd1c2VyX25hbWUnXSwg dHJ1ZSksIDgwLCAnJywgJ3NtZF9wcmVmYWxpemVyX3VzZXJfbmFtZScpDQoJCQkJLnRkKGZJ bnB1dCgndGV4dCcsICdwb3NpdGlvbicsICRwcmVmX3Jvd1sncG9zaXRpb24nXSksIDIwLCAn JywgJ3NtZF9wcmVmYWxpemVyX3Bvc2l0aW9uJykNCgkJCQkudGQoJGJ0blNhdmUpDQoJCQks ICcgaWQ9InNtZF9wcmVmYWxpemVyX2VkaXRlZCInKTsNCgkJfSBlbHNlIHsNCgkJCSRidG5F ZGl0ID0gJzxhIGhyZWY9Iicuam9pbl9xcygkcXMpLicmIzM4O3N0ZXA9ZWRpdCYjMzg7bmFt ZT0nLiRwcmVmX3Jvd1snbmFtZSddLicmIzM4O3VzZXJfbmFtZT0nLiRwcmVmX3Jvd1sndXNl cl9uYW1lJ10uJyI+WycgLiBnVHh0KCdlZGl0JykgLiAnXTwvYT4nOw0KCQkJJGJ0bkRlbCA9 IHNtZF9wcmVmYWxpemVyX2Nhbl9kZWxldGUoJHByZWZfcm93WyduYW1lJ10pID8gJzxhIGhy ZWY9Iicuam9pbl9xcygkcXMpLicmIzM4O3N0ZXA9c21kX3ByZWZhbGl6ZXJfZGVsZXRlJiMz ODtuYW1lPScuJHByZWZfcm93WyduYW1lJ10uJyYjMzg7dXNlcl9uYW1lPScuJHByZWZfcm93 Wyd1c2VyX25hbWUnXS4nIiBvbmNsaWNrPSJyZXR1cm4gY29uZmlybShcJycuc21kX3ByZWZh bGl6ZXJfZ1R4dCgnZGVsZXRlX2NvbmZpcm0nLCBhcnJheSgie25hbWV9IiA9PiAkcHJlZl9y b3dbJ25hbWUnXSwgInt1c2VyX25hbWV9IiA9PiAoKCRwcmVmX3Jvd1sndXNlcl9uYW1lJ109 PScnKSA/IHNtZF9wcmVmYWxpemVyX2dUeHQoJ2FsbF91c2VycycpIDogJHByZWZfcm93Wyd1 c2VyX25hbWUnXSApICkpLidcJyk7Ij5bJyAuIGdUeHQoJ2RlbGV0ZScpIC4gJ108L2E+JyA6 ICcnOw0KCQkJZWNobyB0cigNCgkJCQl0ZCgkcHJlZl9yb3dbJ25hbWUnXSw3MCkNCgkJCQku dGQoJHByZWZfcm93Wyd2YWwnXSwgMjIwKQ0KCQkJCS50ZCh1Y2ZpcnN0KCRzbWRfcHJlZmFs aXplcl90eXBlc1skcHJlZl9yb3dbJ3R5cGUnXV0pKQ0KCQkJCS50ZCgkcHJlZl9yb3dbJ2V2 ZW50J10pDQoJCQkJLnRkKCRwcmVmX3Jvd1snaHRtbCddKQ0KCQkJCS50ZCgkcHJlZl9yb3db J3VzZXJfbmFtZSddKQ0KCQkJCS50ZCgkcHJlZl9yb3dbJ3Bvc2l0aW9uJ10pDQoJCQkJLnRk KCRidG5FZGl0LicgJy4kYnRuRGVsLCAxMDApDQoJCQksICcgY2xhc3M9ImRhdGEiJyk7DQoJ CX0NCgl9DQoNCgllY2hvIGVuZFRhYmxlKCk7DQoJZWNobyAnPC9mb3JtPic7DQoJZWNobyBu Lm5hdl9mb3JtKCRzbWRfcHJlZmFsaXplcl9ldmVudCwgJHBhZ2UsICRudW1QYWdlcywgJHNv cnQsICRkaXIsICRjcml0LCAkc2VhcmNoX21ldGhvZCk7DQoJZWNobyBuLnBhZ2VieV9mb3Jt KCRzbWRfcHJlZmFsaXplcl9ldmVudCwgJHBhZ2VieSk7DQp9DQoNCi8vIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCmZ1 bmN0aW9uIHNtZF9wcmVmYWxpemVyX3NlYXJjaF9mb3JtKCRjcml0LCAkbWV0aG9kKSB7DQoJ JG1ldGhvZHMgPQlhcnJheSgNCgkJJ25hbWUnID0+IGdUeHQoJ25hbWUnKSwNCgkJJ3ZhbHVl JyA9PiBnVHh0KCd2YWx1ZScpLA0KCQkndHlwZScgPT4gZ1R4dCgndHlwZScpLA0KCQknZXZl bnQnID0+IHNtZF9wcmVmYWxpemVyX2dUeHQoJ2V2ZW50JyksDQoJCSdodG1sJyA9PiBzbWRf cHJlZmFsaXplcl9nVHh0KCdodG1sJyksDQoJCSd1c2VyJyA9PiBzbWRfcHJlZmFsaXplcl9n VHh0KCd1c2VyJyksDQoJCSdwb3NpdGlvbicgPT4gc21kX3ByZWZhbGl6ZXJfZ1R4dCgncG9z aXRpb24nKSwNCgkpOw0KDQoJcmV0dXJuIHNlYXJjaF9mb3JtKCdzbWRfcHJlZmFsaXplcics ICdzbWRfcHJlZmFsaXplcl9saXN0JywgJGNyaXQsICRtZXRob2RzLCAkbWV0aG9kLCAnbmFt ZScpOw0KfQ0KDQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpmdW5jdGlvbiBzbWRfcHJlZmFsaXplcl9jaGFuZ2Vf cGFnZWJ5KCkgew0KCXNldGNvb2tpZSgnc21kX3ByZWZhbGl6ZXJfcGFnZWJ5JywgZ3BzKCdx dHknKSk7DQoJc21kX3ByZWZhbGl6ZXJfbGlzdCgnJyk7DQp9DQoNCmZ1bmN0aW9uIHNtZF9w cmVmYWxpemVyX2Nhbl9kZWxldGUoJG5hbWUsICRleHBvc2U9JycpIHsNCgkkb3ZlcnJpZGUg PSAoJGV4cG9zZT09J2FsbCcpID8gJGV4cG9zZSA6IGdwcygnZXhwb3NlJyk7DQoJaWYgKCRv dmVycmlkZSA9PSAnYWxsJykgew0KCQlyZXR1cm4gdHJ1ZTsNCgl9DQoJJHByb3RlY3RlZF9l dmVudHMgPSBhcnJheSgnYWRtaW4nLCAnY29tbWVudHMnLCAnY3NzJywgJ2N1c3RvbScsICdk aXNjdXNzJywgJ2ZlZWRzJywgJ3B1Ymxpc2gnKTsNCgkkcm93ID0gc2FmZV9yb3coJyonLCAn dHhwX3ByZWZzJywgIm5hbWU9JyRuYW1lJyIpOw0KCXJldHVybiAoaW5fYXJyYXkoJHJvd1sn ZXZlbnQnXSwgJHByb3RlY3RlZF9ldmVudHMpICYmIGVtcHR5KCRyb3dbJ3VzZXJfbmFtZSdd KSkgPyBmYWxzZSA6IHRydWU7DQp9DQoNCmZ1bmN0aW9uIHNtZF9wcmVmYWxpemVyX2FkZCgk bXNnPScnKSB7DQoJZ2xvYmFsICRzbWRfcHJlZmFsaXplcl9ldmVudDsNCg0KCXBhZ2V0b3Ao c21kX3ByZWZhbGl6ZXJfZ1R4dCgndGFiX25hbWUnKSwgJG1zZyk7DQoJZWNobyAnQUREJzsN Cn0NCg0KZnVuY3Rpb24gc21kX3ByZWZhbGl6ZXJfc2F2ZSgkbXNnPScnKSB7DQoJZ2xvYmFs ICRzbWRfcHJlZmFsaXplcl9ldmVudDsNCg0KCWV4dHJhY3QoZG9TbGFzaChwc2EoYXJyYXko J25hbWUnLCAnbmV3bmFtZScsICd2YWx1ZScsICd0eXBlJywgJ3ByZWZfZXZlbnQnLCAnaHRt bCcsICd1c2VyX25hbWUnLCAnbmV3dXNlcicsICdwb3NpdGlvbicpKSkpOw0KCSRyZXQgPSBm YWxzZTsNCgkkbXNnID0gJyc7DQoNCgkvLyBTdGF0ZSBtYWNoaW5lLWVzcXVlIGRlY2lzaW9u IHRyZWUNCgkkZXhpc3RzID0gc2FmZV9yb3coJ25hbWUsIHVzZXJfbmFtZScsICd0eHBfcHJl ZnMnLCAibmFtZSA9ICckbmV3bmFtZScgQU5EIHVzZXJfbmFtZSA9ICckbmV3dXNlciciKTsN CglpZiAoZW1wdHkoJG5hbWUpKSB7DQoJCS8vIEluc2VydCBuZXcNCgkJaWYgKCRleGlzdHMp IHsNCgkJCSRtc2cgPSBhcnJheShzbWRfcHJlZmFsaXplcl9nVHh0KCdleGlzdF9hbHJlYWR5 JywgYXJyYXkoIntuYW1lfSIgPT4gJG5ld25hbWUpKSwgRV9XQVJOSU5HKTsNCgkJCSRfUE9T VFsnc3RlcCddID0gJ2VkaXQnOw0KCQl9IGVsc2Ugew0KCQkJJHJldCA9IHNhZmVfaW5zZXJ0 KCd0eHBfcHJlZnMnLCAicHJlZnNfaWQ9MSwgbmFtZT0nJG5ld25hbWUnLCB2YWw9JyR2YWx1 ZScsIHR5cGU9JyR0eXBlJywgZXZlbnQ9JyRwcmVmX2V2ZW50JywgaHRtbD0nJGh0bWwnLCBw b3NpdGlvbj0nJHBvc2l0aW9uJywgdXNlcl9uYW1lPSckbmV3dXNlciciKTsNCgkJCWlmICgk cmV0ID09PSBmYWxzZSkgew0KCQkJCSRtc2cgPSBzbWRfcHJlZmFsaXplcl9nVHh0KCdjcmVh dGVfZmFpbGVkJywgYXJyYXkoIntuYW1lfSIgPT4gJG5ld25hbWUpKTsNCgkJCX0gZWxzZSB7 DQoJCQkJJG1zZyA9IHNtZF9wcmVmYWxpemVyX2dUeHQoJ2NyZWF0ZV9vaycsIGFycmF5KCJ7 bmFtZX0iID0+ICRuZXduYW1lKSk7DQoJCQl9DQoJCX0NCg0KCX0gZWxzZSBpZiAoJG5hbWUg PT0gJG5ld25hbWUpIHsNCgkJLy8gVXBkYXRlDQoJCWlmICgkdXNlcl9uYW1lID09ICRuZXd1 c2VyKSB7DQoJCQkvLyBEaXJlY3QgdXBkYXRlDQoJCQlpZiAoJGV4aXN0cykgew0KCQkJCSRy ZXQgPSBzYWZlX3VwZGF0ZSgndHhwX3ByZWZzJywgIm5hbWU9JyRuZXduYW1lJywgdmFsPSck dmFsdWUnLCB0eXBlPSckdHlwZScsIGV2ZW50PSckcHJlZl9ldmVudCcsIGh0bWw9JyRodG1s JywgcG9zaXRpb249JyRwb3NpdGlvbiciLCAibmFtZT0nJG5hbWUnIEFORCB1c2VyX25hbWU9 JyR1c2VyX25hbWUnIik7DQoJCQkJaWYgKCRyZXQgPT09IGZhbHNlKSB7DQoJCQkJCSRtc2cg PSBzbWRfcHJlZmFsaXplcl9nVHh0KCdzYXZlX2ZhaWxlZCcsIGFycmF5KCJ7bmFtZX0iID0+ ICRuZXduYW1lKSk7DQoJCQkJfSBlbHNlIHsNCgkJCQkJJG1zZyA9IHNtZF9wcmVmYWxpemVy X2dUeHQoJ3NhdmVfb2snLCBhcnJheSgie25hbWV9IiA9PiAkbmV3bmFtZSkpOw0KCQkJCX0N CgkJCX0gZWxzZSB7DQoJCQkJJG1zZyA9IHNtZF9wcmVmYWxpemVyX2dUeHQoJ2V4aXN0X25v dCcsIGFycmF5KCJ7bmFtZX0iID0+ICRuYW1lKSk7DQoJCQl9DQoJCX0gZWxzZSB7DQoJCQkv LyBSZW5hbWVkIHVzZXINCgkJCWlmICgkZXhpc3RzKSB7DQoJCQkJJG1zZyA9IGFycmF5KHNt ZF9wcmVmYWxpemVyX2dUeHQoJ2V4aXN0X2FscmVhZHknLCBhcnJheSgie25hbWV9IiA9PiAk bmV3bmFtZSkpLCBFX1dBUk5JTkcpOw0KCQkJCSRfUE9TVFsnc3RlcCddID0gJ2VkaXQnOw0K CQkJCSRfUE9TVFsnbmFtZSddID0gJG5hbWU7DQoJCQkJJF9QT1NUWyd1c2VyX25hbWUnXSA9 ICR1c2VyX25hbWU7DQoJCQl9IGVsc2Ugew0KCQkJCSRyZXQgPSBzYWZlX3VwZGF0ZSgndHhw X3ByZWZzJywgIm5hbWU9JyRuZXduYW1lJywgdmFsPSckdmFsdWUnLCB0eXBlPSckdHlwZScs IGV2ZW50PSckcHJlZl9ldmVudCcsIGh0bWw9JyRodG1sJywgcG9zaXRpb249JyRwb3NpdGlv bicsIHVzZXJfbmFtZT0nJG5ld3VzZXInIiwgIm5hbWU9JyRuYW1lJyBBTkQgdXNlcl9uYW1l PSckdXNlcl9uYW1lJyIpOw0KCQkJCWlmICgkcmV0ID09PSBmYWxzZSkgew0KCQkJCQkkbXNn ID0gc21kX3ByZWZhbGl6ZXJfZ1R4dCgnc2F2ZV9mYWlsZWQnLCBhcnJheSgie25hbWV9IiA9 PiAkbmV3bmFtZSkpOw0KCQkJCX0gZWxzZSB7DQoJCQkJCSRtc2cgPSBzbWRfcHJlZmFsaXpl cl9nVHh0KCdzYXZlX29rJywgYXJyYXkoIntuYW1lfSIgPT4gJG5ld25hbWUpKTsNCgkJCQl9 DQoJCQl9DQoJCX0NCg0KCX0gZWxzZSB7DQoJCS8vIFVwZGF0ZSBhbmQgcmVuYW1lDQoJCWlm ICgkdXNlcl9uYW1lID09ICRuZXd1c2VyKSB7DQoJCQkvLyBSZW5hbWVkIHVwZGF0ZQ0KCQkJ aWYgKCRleGlzdHMpIHsNCgkJCQkkbXNnID0gc21kX3ByZWZhbGl6ZXJfZ1R4dCgnZXhpc3Rf YWxyZWFkeScsIGFycmF5KCJ7bmFtZX0iID0+ICRuZXduYW1lKSk7DQoJCQl9IGVsc2Ugew0K CQkJCSRyZXQgPSBzYWZlX3VwZGF0ZSgndHhwX3ByZWZzJywgIm5hbWU9JyRuZXduYW1lJywg dmFsPSckdmFsdWUnLCB0eXBlPSckdHlwZScsIGV2ZW50PSckcHJlZl9ldmVudCcsIGh0bWw9 JyRodG1sJywgcG9zaXRpb249JyRwb3NpdGlvbiciLCAibmFtZT0nJG5hbWUnIEFORCB1c2Vy X25hbWU9JyR1c2VyX25hbWUnIik7DQoJCQkJaWYgKCRyZXQgPT09IGZhbHNlKSB7DQoJCQkJ CSRtc2cgPSBzbWRfcHJlZmFsaXplcl9nVHh0KCdzYXZlX2ZhaWxlZCcsIGFycmF5KCJ7bmFt ZX0iID0+ICRuZXduYW1lKSk7DQoJCQkJfSBlbHNlIHsNCgkJCQkJJG1zZyA9IHNtZF9wcmVm YWxpemVyX2dUeHQoJ3NhdmVfb2snLCBhcnJheSgie25hbWV9IiA9PiAkbmV3bmFtZSkpOw0K CQkJCX0NCgkJCX0NCgkJfSBlbHNlIHsNCgkJCS8vIFJlbmFtZWQgdXBkYXRlIGFuZCB1c2Vy DQoJCQlpZiAoJGV4aXN0cykgew0KCQkJCSRtc2cgPSBhcnJheShzbWRfcHJlZmFsaXplcl9n VHh0KCdleGlzdF9hbHJlYWR5JywgYXJyYXkoIntuYW1lfSIgPT4gJG5ld25hbWUpKSwgRV9X QVJOSU5HKTsNCgkJCQkkX1BPU1RbJ3N0ZXAnXSA9ICdlZGl0JzsNCgkJCQkkX1BPU1RbJ25h bWUnXSA9ICRuYW1lOw0KCQkJCSRfUE9TVFsndXNlcl9uYW1lJ10gPSAkdXNlcl9uYW1lOw0K CQkJfSBlbHNlIHsNCgkJCQkkcmV0ID0gc2FmZV91cGRhdGUoJ3R4cF9wcmVmcycsICJuYW1l PSckbmV3bmFtZScsIHZhbD0nJHZhbHVlJywgdHlwZT0nJHR5cGUnLCBldmVudD0nJHByZWZf ZXZlbnQnLCBodG1sPSckaHRtbCcsIHBvc2l0aW9uPSckcG9zaXRpb24nLCB1c2VyX25hbWU9 JyRuZXd1c2VyJyIsICJuYW1lPSckbmFtZScgQU5EIHVzZXJfbmFtZT0nJHVzZXJfbmFtZSci KTsNCgkJCQlpZiAoJHJldCA9PT0gZmFsc2UpIHsNCgkJCQkJJG1zZyA9IHNtZF9wcmVmYWxp emVyX2dUeHQoJ3NhdmVfZmFpbGVkJywgYXJyYXkoIntuYW1lfSIgPT4gJG5ld25hbWUpKTsN CgkJCQl9IGVsc2Ugew0KCQkJCQkkbXNnID0gc21kX3ByZWZhbGl6ZXJfZ1R4dCgnc2F2ZV9v aycsIGFycmF5KCJ7bmFtZX0iID0+ICRuZXduYW1lKSk7DQoJCQkJfQ0KCQkJfQ0KCQl9DQog ICB9DQoNCglzbWRfcHJlZmFsaXplcl9saXN0KCRtc2cpOw0KfQ0KDQpmdW5jdGlvbiBzbWRf cHJlZmFsaXplcl9kZWxldGUoJG1zZz0nJykgew0KCWdsb2JhbCAkc21kX3ByZWZhbGl6ZXJf ZXZlbnQ7DQoNCglleHRyYWN0KGRvU2xhc2goZ3BzYShhcnJheSgnbmFtZScsICd1c2VyX25h bWUnLCAnZXhwb3NlJykpKSk7DQoJJHJldCA9IGZhbHNlOw0KCSRycyA9IHNhZmVfcm93KCcq JywgJ3R4cF9wcmVmcycsICJuYW1lID0gJyRuYW1lJyBBTkQgdXNlcl9uYW1lID0gJyR1c2Vy X25hbWUnIik7DQoJaWYgKCRycyAmJiBzbWRfcHJlZmFsaXplcl9jYW5fZGVsZXRlKCRuYW1l LCAkZXhwb3NlKSkgew0KCQlleHRyYWN0KCRycyk7DQoJCSRyZXQgPSBzYWZlX2RlbGV0ZSgn dHhwX3ByZWZzJywgIm5hbWUgPSAnJG5hbWUnIEFORCB1c2VyX25hbWU9JyR1c2VyX25hbWUn Iik7DQoJfQ0KCWlmICgkcmV0ID09PSBmYWxzZSkgew0KCQlzbWRfcHJlZmFsaXplcl9saXN0 KHNtZF9wcmVmYWxpemVyX2dUeHQoJ2RlbGV0ZV9mYWlsZWQnLCBhcnJheSgie25hbWV9IiA9 PiAkbmFtZSkpKTsNCgl9IGVsc2Ugew0KCQlzbWRfcHJlZmFsaXplcl9saXN0KHNtZF9wcmVm YWxpemVyX2dUeHQoJ2RlbGV0ZV9vaycsIGFycmF5KCJ7bmFtZX0iID0+ICRuYW1lKSkpOw0K CX0NCn0NCg0KLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQovLyBQbHVnaW4tc3BlY2lm aWMgcmVwbGFjZW1lbnQgc3RyaW5ncyAtIGxvY2FsaXNlIGFzIHJlcXVpcmVkDQpmdW5jdGlv biBzbWRfcHJlZmFsaXplcl9nVHh0KCR3aGF0LCAkYXR0cyA9IGFycmF5KCkpIHsNCgkkbGFu ZyA9IGFycmF5KA0KCQknYWN0aW9ucycgPT4gJ0FjdGlvbnMnLA0KCQknYWxsX3VzZXJzJyA9 PiAnYWxsIHVzZXJzJywNCgkJJ2NyZWF0ZV9mYWlsZWQnID0+ICdQcmVmIHtuYW1lfSBOT1Qg Y3JlYXRlZCcsDQoJCSdjcmVhdGVfb2snID0+ICdQcmVmIHtuYW1lfSBjcmVhdGVkJywNCgkJ J2RlbGV0ZV9jb25maXJtJyA9PiAnUmVhbGx5IGRlbGV0ZSBwcmVmIHtuYW1lfSAoe3VzZXJf bmFtZX0pPycsDQoJCSdkZWxldGVfZmFpbGVkJyA9PiAnUHJlZiB7bmFtZX0gTk9UIGRlbGV0 ZWQnLA0KCQknZGVsZXRlX29rJyA9PiAnUHJlZiB7bmFtZX0gZGVsZXRlZCcsDQoJCSdleGlz dF9hbHJlYWR5JyA9PiAnUHJlZiB7bmFtZX0gYWxyZWFkeSBleGlzdHMuIENob29zZSBhbm90 aGVyIG5hbWUvdXNlcicsDQoJCSdleGlzdF9ub3QnID0+ICdDYW5ub3QgdXBkYXRlOiBwcmVm IHtuYW1lfSBkb2VzIG5vdCBleGlzdCcsDQoJCSdldmVudCcgPT4gJ0V2ZW50JywNCgkJJ2h0 bWwnID0+ICdJbnB1dCBjb250cm9sJywNCgkJJ25ldycgPT4gJ05ldyBwcmVmJywNCgkJJ3Bv c2l0aW9uJyA9PiAnUG9zaXRpb24nLA0KCQknc2F2ZV9mYWlsZWQnID0+ICdQcmVmIHtuYW1l fSBOT1Qgc2F2ZWQnLA0KCQknc2F2ZV9vaycgPT4gJ1ByZWYge25hbWV9IHNhdmVkJywNCgkJ J3RhYl9uYW1lJyA9PiAnUHJlZmFsaXplcicsDQoJCSd1c2VyJyA9PiAnVXNlcicsDQoJKTsN CglyZXR1cm4gc3RydHIoJGxhbmdbJHdoYXRdLCAkYXR0cyk7DQp9IjtzOjQ6InR5cGUiO3M6 MToiMyI7czo1OiJvcmRlciI7czoxOiI1IjtzOjU6ImZsYWdzIjtzOjE6IjAiO3M6NDoiaGVs cCI7czo2NzczOiI8ZGl2IGlkPSJzbWRfaGVscCI+CgoJPGgxPnNtZF9wcmVmYWxpemVyPC9o MT4KCgk8cD5XaXRoIHRoZSBhZHZlbnQgb2YgcGVyLXVzZXIgcHJlZmVyZW5jZXMsIHlvdXIg cHJlZnMgdGFibGUgY291bGQgYmVjb21lIHJhdGhlciBsYXJnZS4gS2VlcCBpdCB1bmRlciBj b250cm9sIHdpdGggdGhpcyBwbHVnaW4uIEFsc28gdXNlZnVsIGlmIHlvdSBoYXZlIHVuaW5z dGFsbGVkIHBsdWdpbnMgeW91IG5vIGxvbmdlciB1c2UgdGhhdCBoYXZlIGxlZnQgcHJlZnMg YmVoaW5kLjwvcD4KCgk8aDI+RmVhdHVyZXM8L2gyPgoKCTx1bD4KCQk8bGk+QWRkLCBlZGl0 IG9yIHJlbW92ZSA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiBwcmVmZXJlbmNlcyBz ZXQgaW4geW91ciBkYXRhYmFzZTwvbGk+CgkJPGxpPkZpbHRlciBwcmVmcyBieSBuYW1lIC8g dmFsdWUgLyB1c2VyIC8gdHlwZSB0byBoZWxwIGZpbmQgdGhlIG9uZXMgeW91IHdhbnQ8L2xp PgoJCTxsaT5DcmVhdGUgcmVndWxhciBvciBoaWRkZW4gcHJlZnMsIGZvciBhbGwgb3Igc3Bl Y2lmaWMgdXNlcnM8L2xpPgoJPC91bD4KCgk8aDI+QXV0aG9yIC8gY3JlZGl0czwvaDI+CgoJ PHA+V3JpdHRlbiBieSA8YSBocmVmPSJodHRwOi8vc3RlZmRhd3Nvbi5jb20vY29udGFjdCI+ U3RlZiBEYXdzb248L2E+LjwvcD4KCgk8aDI+SW5zdGFsbGF0aW9uIC8gdW5pbnN0YWxsYXRp b248L2gyPgoKCTxwPkRvd25sb2FkIHRoZSBwbHVnaW4gZnJvbSBlaXRoZXIgPGEgaHJlZj0i aHR0cDovL3RleHRwYXR0ZXJuLm9yZy9wbHVnaW5zLzExMjkvc21kX3ByZWZhbGl6ZXIiPnRl eHRwYXR0ZXJuLm9yZzwvYT4sIG9yIHRoZSA8YSBocmVmPSJodHRwOi8vc3RlZmRhd3Nvbi5j b20vc3ciPnNvZnR3YXJlIHBhZ2U8L2E+LCBwYXN0ZSB0aGUgY29kZSBpbnRvIHRoZSA8c3Bh biBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiBBZG1pbiAtJmd0OyBQbHVnaW5zIHBhbmUsIGlu c3RhbGwgYW5kIGVuYWJsZSB0aGUgcGx1Z2luLiBWaXNpdCB0aGUgPGEgaHJlZj0iaHR0cDov L2ZvcnVtLnRleHRwYXR0ZXJuLmNvbS92aWV3dG9waWMucGhwP2lkPTMyMjcyIj5mb3J1bSB0 aHJlYWQ8L2E+IGZvciBtb3JlIGluZm8gb3IgdG8gcmVwb3J0IG9uIHRoZSBzdWNjZXNzIG9y IG90aGVyd2lzZSBvZiB0aGUgcGx1Z2luLjwvcD4KCgk8cD5UbyB1bmluc3RhbGwsIGRlbGV0 ZSBmcm9tIHRoZSBBZG1pbiAtJmd0OyBQbHVnaW5zIHBhZ2UuPC9wPgoKCTxoMj5Vc2FnZTwv aDI+CgoJPHA+VmlzaXQgdGhlIEFkbWluID0mZ3Q7IFByZWZhbGl6ZXIgcGFnZSB0byBzZWUg YSBsaXN0IG9mIGFsbCBkZWZpbmVkIHByZWZlcmVuY2VzIGluIHlvdXIgPHNwYW4gY2xhc3M9 ImNhcHMiPlRYUDwvc3Bhbj4gZGF0YWJhc2UuPC9wPgoKCTxwPkVhY2ggcm93IGhhcyBhY3Rp b25zIGluIHRoZSBsYXN0IGNvbHVtbiB0aGF0IGFsbG93IHlvdSB0byBlZGl0IG9yIGRlbGV0 ZSBhbnkgcHJlZmVyZW5jZS4gU29tZSAoc3lzdGVtKSBwcmVmcyBjYW5ub3QgYmUgZGVsZXRl ZCBiZWNhdXNlIHRoYXQgd291bGQgcG90ZW50aWFsbHkgaHVydCB5b3VyIHNpdGU7IHRoZSBw bHVnaW4gdHJpZXMgdG8gbGltaXQgeW91IHRvIG9ubHkgYmVpbmcgYWJsZSB0byBkZWxldGUg cGVyLXVzZXIgb3IgcGx1Z2luIHByZWZzLCBidXQgeW91IHNob3VsZCBzdGlsbCBleGVyY2lz ZSBjYXV0aW9uLjwvcD4KCgk8cD5UaGUgY29sdW1ucyBhcmUgYXMgZm9sbG93czo8L3A+CgoJ PHVsPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+TmFtZTwvc3Bhbj4gOiBUaGUgbmFtZSBv ZiB0aGUgcHJlZmVyZW5jZTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5WYWx1ZTwv c3Bhbj4gOiBUaGUgc3RvcmVkIGNvbnRlbnRzIG9mIHRoZSBwcmVmZXJlbmNlPC9saT4KCQk8 bGk+PHNwYW4gY2xhc3M9ImF0bm0iPlR5cGU8L3NwYW4+IDogV2hldGhlciB0aGUgcHJlZmVy ZW5jZSBhcHBlYXJzIG9uIHRoZSA8ZW0+QmFzaWMgUHJlZnM8L2VtPiBvciA8ZW0+QWR2YW5j ZWQgUHJlZnM8L2VtPiBzdWJ0YWIuIElmIGl0IGRvZXMgbm90IGFwcGVhciBhbnl3aGVyZSBh dCBhbGwsIGl0IGlzIDxlbT5IaWRkZW48L2VtPiBhbmQgaXMgdXN1YWxseSB1c2VkIGJ5IDxz cGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IG9yIGEgcGx1Z2luIHRvIGtlZXAgdHJhY2sg b2YgdGhpbmdzPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPkV2ZW50PC9zcGFuPiA6 IFRoZSBldmVudCAob3IgYWRtaW4tc2lkZSB0YWIpIHRvIHdoaWNoIHRoaXMgcHJlZiBpcyBh c3NvY2lhdGVkLiBVc2VmdWwgZm9yIGdyb3VwaW5nIHByZWYgdmFsdWVzIHRvZ2V0aGVyIG9u LXNjcmVlbjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5JbnB1dCBjb250cm9sPC9z cGFuPiA6IElmIHRoZSBwcmVmZXJlbmNlIGlzIHJlbmRlcmVkIG9uLXNjcmVlbiB0aGVuIHRo aXMgZ292ZXJucyB3aGljaCBVSSB3aWRnZXQgaXMgZHJhd24gb3IgaG93IHRoZSBjb250cm9s IHdpbGwgYmVoYXZlLiBDb21tb24gZW50cmllcyBpbiB0aGlzIGNvbHVtbiBhcmU6Cgk8dWw+ CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj50ZXh0X2lucHV0PC9zcGFuPiA6IChkZWZhdWx0 KSBBIHN0YW5kYXJkIHRleHQgYm94PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmN1 c3RvbV9zZXQ8L3NwYW4+IDogQSBjdXN0b20gZmllbGQ8L2xpPgoJCTxsaT48c3BhbiBjbGFz cz0iYXRubSI+ZGF0ZWZvcm1hdHM8L3NwYW4+IDogU29tZSBraW5kIG9mIGRhdGUgZm9ybWF0 dGluZyBzdHJpbmc8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+eWVzbm9yYWRpbzwv c3Bhbj4gOiBBIHllcyBvciBubyByYWRpbyBidXR0b24gc2V0PC9saT4KCTwvdWw+PC9saT4K CQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPlVzZXI8L3NwYW4+IDogTG9naW4gbmFtZSB0byB3 aG9tIHRoZSBwcmVmZXJlbmNlIGJlbG9uZ3M8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRu bSI+UG9zaXRpb248L3NwYW4+IDogV2hlbiBsaXN0aW5nIHByZWZlcmVuY2VzIG9uLXNjcmVl biwgdGhlIHBvc2l0aW9uIGRpY3RhdGVzIHRoZWlyIG9yZGVyLiBMb3dlc3QgbnVtYmVyZWQg dmFsdWVzIGFyZSBkaXNwbGF5ZWQgZmlyc3QuIEl0IGlzIGNvbW1vbiBwcmFjdGljZSB0byBh c3NpZ24gcG9zaXRpb25zIGluIGluY3JlbWVudHMgb2YgMTAgb3IgMjAgc28gdGhlcmUgaXMg cm9vbSB0byBlYXNpbHkgaW5zZXJ0IHZhbHVlcyBsYXRlcjwvbGk+CgkJPGxpPjxzcGFuIGNs YXNzPSJhdG5tIj5BY3Rpb25zPC9zcGFuPiA6IEFjdGlvbnMgdG8gcGVyZm9ybSBvbiBlYWNo IHByZWZlcmVuY2U6Cgk8dWw+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5bRWRpdF08L3Nw YW4+IDogRWRpdCB0aGUgdmFyaW91cyBkZXRhaWxzIG9mIHRoZSBwcmVmZXJlbmNlLiBJbnB1 dCBjb250cm9scyBhcHBlYXIgaW5saW5lIGZvciB5b3UgdG8gYWx0ZXIgdGhlIHZhbHVlcy4g V2hlbiB5b3UgYXJlIGRvbmUsIGNsaWNrIDxlbT5TYXZlPC9lbT48L2xpPgoJCTxsaT48c3Bh biBjbGFzcz0iYXRubSI+W0RlbGV0ZV08L3NwYW4+IDogUGVybWFuZW50bHkgcmVtb3ZlIHRo ZSBwcmVmZXJlbmNlIHZhbHVlIGZyb20geW91ciBkYXRhYmFzZS4gWW91IHdpbGwgaGF2ZSBh IGNoYW5jZSB0byBjb25maXJtIHlvdXIgaW50ZW50aW9ucy4gQmUgY2FyZWZ1bCE8L2xpPgoJ PC91bD48L2xpPgoJPC91bD4KCgk8cD5Vc2UgdGhlIHNlYXJjaCBmZWF0dXJlIHRvIGxpbWl0 IHRoZSBsaXN0IHRvIHRoZSBtYXRjaGVkIGl0ZW1zLiBXaGVuIHNlYXJjaGluZyBieSA8Y29k ZT5UeXBlPC9jb2RlPiB5b3UgY2FuIGVpdGhlciB1c2UgPGNvZGU+YmFzaWM8L2NvZGU+LCA8 Y29kZT5hZHZhbmNlZDwvY29kZT4gb3IgPGNvZGU+aGlkZGVuPC9jb2RlPiwgb3IgdXNlIHRo ZWlyIG51bWVyaWMgY291bnRlcnBhcnRzIDAsIDEgb3IgMiByZXNwZWN0aXZlbHkuPC9wPgoK CTxwPkNsaWNrIDxlbT5OZXcgcHJlZjwvZW0+IHRvIGFkZCBhIHByZWZlcmVuY2UgdmFsdWUg dG8gdGhlIGRhdGFiYXNlLiBBIHJvdyBvZiBpbnB1dCBjb250cm9scyB3aWxsIHNsaWRlIGRv d24gYWxsb3dpbmcgeW91IHRvIGVudGVyIHlvdXIgZGVzaXJlZCB2YWx1ZXMuIENsaWNrIDxl bT5BZGQ8L2VtPiB0byBjb21taXQgdGhlIG5ldyBwcmVmZXJlbmNlLjwvcD4KCgk8aDM+Tm90 ZXM8L2gzPgoKCTx1bD4KCQk8bGk+SWYgeW91IHRyeSB0byBlZGl0IGEgcHJlZmVyZW5jZSBh bmQgcmVuYW1lIGl0IHRvIHRoYXQgb2YgYW4gZXhpc3RpbmcgcHJlZmVyZW5jZSBvd25lZCBi eSBzb21lb25lIGVsc2UsIHRoZSBwbHVnaW4gd2lsbCB3YXJuIHlvdSBhbmQgeW91ciBlZGl0 IHdpbGwgYmUgcmV2ZXJ0ZWQgdG8gaXRzIG9yaWdpbmFsIHN0YXRlPC9saT4KCQk8bGk+SWYg eW91IHRyeSB0byBjcmVhdGUgYSBwcmVmZXJlbmNlIHZhbHVlIHRoYXQgd291bGQgY2xvYmJl ciBhbiBleGlzdGluZyBzZXR0aW5nLCB0aGUgcGx1Z2luIHdpbGwgd2FybiB5b3UuIElmIHlv dSBjbGljayA8ZW0+TmV3IHByZWY8L2VtPiBhZ2FpbiB0aG91Z2gsIHlvdXIgbW9zdCByZWNl bnRseSBlbnRlcmVkIHZhbHVlcyB3aWxsIHN0aWxsIGJlIGF2YWlsYWJsZS4gVGhlIG5hbWUg YW5kIHVzZXIgd2lsbCBiZSByZXNldCwgaG93ZXZlcjwvbGk+CgkJPGxpPklmIHlvdSByZWFs bHksIHJlYWxseSwga25vdyB3aGF0IHlvdSBhcmUgZG9pbmcgYW5kIHdhbnQgdG8gZGVsZXRl IGEgJiM4MjE2O3Byb3RlY3RlZCYjODIxNzsgcHJlZiBzZXR0aW5nIChlLmcuIDxjb2RlPnJ2 bV9jc3NfZGlyPC9jb2RlPiBpcyBvbmUgc3VjaCBlbnRyeSkgdGhlbiBzaW1wbHkgYWRkIDxj b2RlPiZhbXA7ZXhwb3NlPWFsbDwvY29kZT4gdG8gdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5V Ukw8L3NwYW4+LiBUaGUgZGVsZXRlIGJ1dHRvbiB3aWxsIGJlY29tZSBhdmFpbGFibGUgZm9y IGFsbCBwcmVmIHNldHRpbmdzLiBCZSBjYXJlZnVsISBBcyBhIHByZWNhdXRpb24sIHdoZW4g eW91IGNoYW5nZSBwYWdlIG9yIGFsdGVyIHRoZSBzZWFyY2gvc29ydCBjcml0ZXJpYSB0aGUg cGx1Z2luIHdpbGwgcmV2ZXJ0IHRvICYjODIxNjtzYWZlJiM4MjE3OyBtb2RlIGFuZCB5b3Ug d2lsbCBoYXZlIHRvIGFkZCA8Y29kZT4mYW1wO2V4cG9zZT1hbGw8L2NvZGU+IHRvIHRoZSA8 c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPiBhZ2FpbiB0byBub3RpZnkgdGhlIHBsdWdp biBvZiB5b3VyIGludGVudGlvbnM8L2xpPgoJPC91bD4KCgk8aDIgaWQ9ImNoYW5nZWxvZyI+ Q2hhbmdlbG9nPC9oMj4KCgk8dWw+CgkJPGxpPjA2IE5vdiAwOSB8IDAuMSB8IEluaXRpYWwg cmVsZWFzZTwvbGk+CgkJPGxpPjA3IE5vdiAwOSB8IDAuMTEgfCBBZGRlZCBoZWFkaW5nIHJv dyBhYm92ZSByb3cgYmVpbmcgZWRpdGVkICh0aGFua3MgVWxpKTwvbGk+CgkJPGxpPjEzIE5v diAwOSB8IDAuMTIgfCBBZGRlZCA8Y29kZT5leHBvc2U8L2NvZGU+IDxzcGFuIGNsYXNzPSJj YXBzIj5VUkw8L3NwYW4+IG92ZXJyaWRlIHBhcmFtZXRlcjwvbGk+Cgk8L3VsPgoKPC9kaXY+ CjwhLS0gKioqIEJFR0lOIFBMVUdJTiBDU1MgKioqIC0tPgo8c3R5bGUgdHlwZT0idGV4dC9j c3MiPgojc21kX2hlbHAgeyBsaW5lLWhlaWdodDoxLjUgO30KI3NtZF9oZWxwIGNvZGUgeyBm b250LXdlaWdodDpib2xkOyBmb250OiAxMDUlLzEzMCUgIkNvdXJpZXIgTmV3IiwgY291cmll ciwgbW9ub3NwYWNlOyBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkNDO30KI3NtZF9oZWxwIGNv ZGUuYmxvY2sgeyBmb250LXdlaWdodDpub3JtYWw7IGJvcmRlcjoxcHggZG90dGVkICM5OTk7 IGJhY2tncm91bmQtY29sb3I6ICNmMGU2OGM7IGRpc3BsYXk6YmxvY2s7IG1hcmdpbjoxMHB4 IDEwcHggMjBweDsgcGFkZGluZzoxMHB4OyB9CiNzbWRfaGVscCBoMSB7IGNvbG9yOiAjMzY5 OyBmb250OiAyMHB4IEdlb3JnaWEsIHNhbnMtc2VyaWY7IG1hcmdpbjogMDsgdGV4dC1hbGln bjogY2VudGVyOyB9CiNzbWRfaGVscCBoMiB7IGJvcmRlci1ib3R0b206IDFweCBzb2xpZCBi bGFjazsgcGFkZGluZzoxMHB4IDAgMDsgY29sb3I6ICMzNjk7IGZvbnQ6IDE3cHggR2Vvcmdp YSwgc2Fucy1zZXJpZjsgfQojc21kX2hlbHAgaDMgeyBjb2xvcjogIzI3NTY4NTsgZm9udDog Ym9sZCAxMnB4IEFyaWFsLCBzYW5zLXNlcmlmOyBsZXR0ZXItc3BhY2luZzogMXB4OyBtYXJn aW46IDEwcHggMCAwO3RleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7IHRleHQtZGVjb3JhdGlv bjp1bmRlcmxpbmU7fQojc21kX2hlbHAgaDQgeyBmb250OiBib2xkIDExcHggQXJpYWwsIHNh bnMtc2VyaWY7IGxldHRlci1zcGFjaW5nOiAxcHg7IG1hcmdpbjogMTBweCAwIDAgO3RleHQt dHJhbnNmb3JtOiB1cHBlcmNhc2U7IH0KI3NtZF9oZWxwIC5hdG5tIHsgZm9udC13ZWlnaHQ6 Ym9sZDsgY29sb3I6IzMzZDsgfQojc21kX2hlbHAgLm1hbmQgeyBiYWNrZ3JvdW5kOiNlZWU7 IGJvcmRlcjoxcHggZG90dGVkICM5OTk7IH0KI3NtZF9oZWxwIHRhYmxlIHt3aWR0aDo5MCU7 IHRleHQtYWxpZ246Y2VudGVyOyBwYWRkaW5nLWJvdHRvbToxZW07fQojc21kX2hlbHAgdGQs ICNzbWRfaGVscCB0aCB7Ym9yZGVyOjFweCBzb2xpZCAjOTk5OyBwYWRkaW5nOi41ZW0gMDt9 CiNzbWRfaGVscCB1bCB7IGxpc3Qtc3R5bGUtdHlwZTpzcXVhcmU7IH0KI3NtZF9oZWxwIC5y ZXF1aXJlZCB7Y29sb3I6cmVkO30KI3NtZF9oZWxwIGxpIHsgbWFyZ2luOjVweCAyMHB4IDVw eCAzMHB4OyB9CiNzbWRfaGVscCAuYnJlYWsgeyBtYXJnaW4tdG9wOjVweDsgfQo8L3N0eWxl Pgo8IS0tICoqKiBFTkQgUExVR0lOIENTUyAqKiogLS0+CiI7czozOiJtZDUiO3M6MzI6IjVh YzZkMjY4NTY3MTk1YmUyYzYwZDdjM2Q0YmMyOTQxIjt9