# Name: smd_prefalizer v0.1 # 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 d3Nvbi5jb20vIjtzOjc6InZlcnNpb24iO3M6MzoiMC4xIjtzOjExOiJkZXNjcmlwdGlvbiI7 czo0MDoiQWRkLCByZW1vdmUsIG9yIGVkaXQgVFhQIHByZWZzIHdpdGggZWFzZSI7czo0OiJj b2RlIjtzOjE2MDU4OiJpZiAoQHR4cGludGVyZmFjZSA9PSAnYWRtaW4nKSB7DQoJZ2xvYmFs ICRzbWRfcHJlZmFsaXplcl9ldmVudCwgJHNtZF9wcmVmYWxpemVyX3ByaXZzLCAkc21kX3By ZWZhbGl6ZXJfdHlwZXM7DQoNCgkkc21kX3ByZWZhbGl6ZXJfZXZlbnQgPSAnc21kX3ByZWZh bGl6ZXInOw0KCSRzbWRfcHJlZmFsaXplcl9wcml2cyA9ICcxJzsNCgkkc21kX3ByZWZhbGl6 ZXJfdHlwZXMgPSBhcnJheSgwID0+ICdiYXNpYycsIDEgPT4gJ2FkdmFuY2VkJywgMiA9PiAn aGlkZGVuJyk7DQoNCglhZGRfcHJpdnMoJHNtZF9wcmVmYWxpemVyX2V2ZW50LCAkc21kX3By ZWZhbGl6ZXJfcHJpdnMpOw0KCXJlZ2lzdGVyX3RhYigiYWRtaW4iLCAkc21kX3ByZWZhbGl6 ZXJfZXZlbnQsIHNtZF9wcmVmYWxpemVyX2dUeHQoJ3RhYl9uYW1lJykpOw0KCXJlZ2lzdGVy X2NhbGxiYWNrKCdzbWRfcHJlZmFsaXplcicsICRzbWRfcHJlZmFsaXplcl9ldmVudCk7DQp9 DQoNCmZ1bmN0aW9uIHNtZF9wcmVmYWxpemVyKCRldmVudCwgJHN0ZXApIHsNCglpZighJHN0 ZXAgb3IgIWluX2FycmF5KCRzdGVwLCBhcnJheSgNCgkJCSdzbWRfcHJlZmFsaXplcl9hZGQn LA0KCQkJJ3NtZF9wcmVmYWxpemVyX3NhdmUnLA0KCQkJJ3NtZF9wcmVmYWxpemVyX2RlbGV0 ZScsDQoJCQknc21kX3ByZWZhbGl6ZXJfY2hhbmdlX3BhZ2VieScsDQoJCSkpKSB7DQoJCXNt ZF9wcmVmYWxpemVyX2xpc3QoJycpOw0KCX0gZWxzZSAkc3RlcCgpOw0KfQ0KDQovLyBMaXN0 IHRoZSBjaG9zZW4gcHJlZnMNCmZ1bmN0aW9uIHNtZF9wcmVmYWxpemVyX2xpc3QoJG1zZz0n Jykgew0KCWdsb2JhbCAkc21kX3ByZWZhbGl6ZXJfZXZlbnQsICRzbWRfcHJlZmFsaXplcl90 eXBlczsNCg0KCXBhZ2V0b3Aoc21kX3ByZWZhbGl6ZXJfZ1R4dCgndGFiX25hbWUnKSwgJG1z Zyk7DQoJZXh0cmFjdChncHNhKGFycmF5KCdzdGVwJywgJ3BhZ2UnLCAnc29ydCcsICdkaXIn LCAnY3JpdCcsICdzZWFyY2hfbWV0aG9kJywgJ25hbWUnLCAndmFsdWUnLCAndHlwZScsICdw cmVmX2V2ZW50JywgJ2h0bWwnLCAndXNlcl9uYW1lJywgJ3Bvc2l0aW9uJykpKTsNCgkkbXNn ID0gKCRtc2cpID8gJG1zZyA6IGdwcygnbXNnJyk7DQoNCgkvLyBIYW5kbGUgcGFnaW5nIC8g c29ydGluZw0KCSRwYWdlYnkgPSAoZ3BzKCdxdHknKSkgPyBncHMoJ3F0eScpIDogKChjcygn c21kX3ByZWZhbGl6ZXJfcGFnZWJ5JykpID8gY3MoJ3NtZF9wcmVmYWxpemVyX3BhZ2VieScp IDogMjUpOw0KCSRkaXIgPSAoJGRpciA9PSAnZGVzYycpID8gJ2Rlc2MnIDogJ2FzYyc7DQoJ c3dpdGNoICgkc29ydCkgew0KCQljYXNlICd2YWx1ZSc6DQoJCQkkc29ydF9zcWwgPSAndmFs ICcuJGRpci4nLCBuYW1lIGFzYyc7DQoJCQlicmVhazsNCgkJY2FzZSAndHlwZSc6DQoJCQkk c29ydF9zcWwgPSAndHlwZSAnLiRkaXIuJywgbmFtZSBhc2MnOw0KCQkJYnJlYWs7DQoJCWNh c2UgJ2V2ZW50JzoNCgkJCSRzb3J0X3NxbCA9ICdldmVudCAnLiRkaXIuJywgbmFtZSBhc2Mn Ow0KCQkJYnJlYWs7DQoJCWNhc2UgJ2h0bWwnOg0KCQkJJHNvcnRfc3FsID0gJ2h0bWwgJy4k ZGlyLicsIG5hbWUgYXNjJzsNCgkJCWJyZWFrOw0KCQljYXNlICd1c2VyJzoNCgkJCSRzb3J0 X3NxbCA9ICd1c2VyX25hbWUgJy4kZGlyLicsIG5hbWUgYXNjJzsNCgkJCWJyZWFrOw0KCQlj YXNlICdwb3NpdGlvbic6DQoJCQkkc29ydF9zcWwgPSAncG9zaXRpb24gJy4kZGlyLicsIG5h bWUgYXNjJzsNCgkJCWJyZWFrOw0KCQljYXNlICduYW1lJzoNCgkJZGVmYXVsdDoNCgkJCSRz b3J0ID0gJ25hbWUnOw0KCQkJJHNvcnRfc3FsID0gJ25hbWUgJy4kZGlyOw0KCQkJYnJlYWs7 DQoJfQ0KCSRzd2l0Y2hfZGlyID0gKCRkaXIgPT0gJ2Rlc2MnKSA/ICdhc2MnIDogJ2Rlc2Mn Ow0KCSRjcml0ZXJpYSA9IDE7DQoNCglpZiAoJHNlYXJjaF9tZXRob2QgJiYgJGNyaXQgIT09 IGZhbHNlKSB7DQoJCSRjcml0X2VzY2FwZWQgPSBkb1NsYXNoKCRjcml0KTsNCgkJJGNyaXRz cWwgPSBhcnJheSgNCgkJCSduYW1lJyA9PiAibmFtZSBsaWtlICclJGNyaXRfZXNjYXBlZCUn IiwNCgkJCSd2YWx1ZScgPT4gInZhbCBsaWtlICclJGNyaXRfZXNjYXBlZCUnIiwNCgkJCSd0 eXBlJyA9PiAidHlwZSA9ICIgLiAoKGlzX251bWVyaWMoJGNyaXRfZXNjYXBlZCkpID8gIiRj cml0X2VzY2FwZWQiIDogKCgoJGNyaXRfbnVtYmVyID0gYXJyYXlfc2VhcmNoKHN0cnRvbG93 ZXIoJGNyaXRfZXNjYXBlZCksICRzbWRfcHJlZmFsaXplcl90eXBlcykpICE9PSBmYWxzZSkg PyAkY3JpdF9udW1iZXIgOiAwKSksDQoJCQknZXZlbnQnID0+ICJldmVudCBsaWtlICclJGNy aXRfZXNjYXBlZCUnIiwNCgkJCSdodG1sJyA9PiAiaHRtbCBsaWtlICclJGNyaXRfZXNjYXBl ZCUnIiwNCgkJCSd1c2VyJyA9PiAidXNlcl9uYW1lIGxpa2UgJyUkY3JpdF9lc2NhcGVkJSci LA0KCQkJJ3Bvc2l0aW9uJyA9PiAicG9zaXRpb24gPSAnJGNyaXRfZXNjYXBlZCciLA0KCQkp Ow0KDQoJCWlmIChhcnJheV9rZXlfZXhpc3RzKCRzZWFyY2hfbWV0aG9kLCAkY3JpdHNxbCkp IHsNCgkJCSRjcml0ZXJpYSA9ICRjcml0c3FsWyRzZWFyY2hfbWV0aG9kXTsNCgkJCSRsaW1p dCA9IDEwMDA7DQoJCX0gZWxzZSB7DQoJCQkkc2VhcmNoX21ldGhvZCA9ICcnOw0KCQkJJGNy aXQgPSAnJzsNCgkJfQ0KCX0gZWxzZSB7DQoJCSRzZWFyY2hfbWV0aG9kID0gJyc7DQoJCSRj cml0ID0gJyc7DQoJfQ0KCSR0b3RhbCA9IHNhZmVfY291bnQoJ3R4cF9wcmVmcycsICIkY3Jp dGVyaWEiKTsNCgkkbGltaXQgPSBtYXgoQCRwYWdlYnksIDI1KTsNCglsaXN0KCRwYWdlLCAk b2Zmc2V0LCAkbnVtUGFnZXMpID0gcGFnZXIoJHRvdGFsLCAkbGltaXQsICRwYWdlKTsNCg0K CSRxcyA9IGFycmF5KA0KCQkiZXZlbnQiID0+ICRzbWRfcHJlZmFsaXplcl9ldmVudCwNCgkJ InBhZ2UiID0+ICRwYWdlLA0KCQkic29ydCIgPT4gJHNvcnQsDQoJCSJkaXIiID0+ICRkaXIs DQoJCSJjcml0IiA9PiAkY3JpdCwNCgkJInNlYXJjaF9tZXRob2QiID0+ICRzZWFyY2hfbWV0 aG9kLA0KCSk7DQoNCgkvLyBMaXN0IHRoZSBkZXNpcmVkIHByZWZzDQoJJHRoZVByZWZzID0g c2FmZV9yb3dzKCcqJywgJ3R4cF9wcmVmcycsICIkY3JpdGVyaWEgb3JkZXIgYnkgJHNvcnRf c3FsIGxpbWl0ICRvZmZzZXQsICRsaW1pdCIpOw0KCSRhdXRob3JfbGlzdCA9IHNhZmVfY29s dW1uKCduYW1lJywgJ3R4cF91c2VycycsICcxID0gMScpOw0KCWVjaG8gc21kX3ByZWZhbGl6 ZXJfc2VhcmNoX2Zvcm0oJGNyaXQsICRzZWFyY2hfbWV0aG9kKTsNCgkkZWRpdEZvY3VzID0g KCRzdGVwID09ICdlZGl0JykgPyAnalF1ZXJ5KGZ1bmN0aW9uKCkgeyBqUXVlcnkoIiNzbWRf cHJlZmFsaXplcl92YWx1ZSB0ZXh0YXJlYSIpLmZvY3VzKCk7IH0pOyc6ICcnOw0KDQoJLy8g QW55IGVkaXRzIHRvIGFuIGVudHJ5IGFyZSBjb3BpZWQgdG8gdGhpcyBoaWRkZW4gZm9ybSBh bmQgdGhlbiBzdWJtaXR0ZWQNCgllY2hvIDw8PEVPQw0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2ph dmFzY3JpcHQiPg0KZnVuY3Rpb24gc21kX3ByZWZhbGl6ZXJfc2F2ZSgpIHsNCgl2YXIgc3R5 cGUgPSBqUXVlcnkoIiNzbWRfcHJlZmFsaXplcl9lZGl0ZWQgI3NtZF9wcmVmYWxpemVyX3R5 cGUgb3B0aW9uOnNlbGVjdGVkIikudmFsKCk7DQoJdmFyIHV0eXBlID0galF1ZXJ5KCIjc21k X3ByZWZhbGl6ZXJfZWRpdGVkICNzbWRfcHJlZmFsaXplcl91c2VyX25hbWUgb3B0aW9uOnNl bGVjdGVkIikudmFsKCk7DQoJalF1ZXJ5KCIjc21kX3ByZWZhbGl6ZXJfaW5wdXQgaW5wdXRb bmFtZT0nbmV3bmFtZSddIikudmFsKGpRdWVyeSgiI3NtZF9wcmVmYWxpemVyX2VkaXRlZCAj c21kX3ByZWZhbGl6ZXJfbmFtZSBpbnB1dCIpLnZhbCgpKTsNCglqUXVlcnkoIiNzbWRfcHJl ZmFsaXplcl9pbnB1dCBpbnB1dFtuYW1lPSd2YWx1ZSddIikudmFsKGpRdWVyeSgiI3NtZF9w cmVmYWxpemVyX2VkaXRlZCAjc21kX3ByZWZhbGl6ZXJfdmFsdWUgdGV4dGFyZWEiKS52YWwo KSk7DQoJalF1ZXJ5KCIjc21kX3ByZWZhbGl6ZXJfaW5wdXQgI3NtZF9wcmVmYWxpemVyX25l d190eXBlIG9wdGlvbjplcSgiK3N0eXBlKyIpIikuYXR0cignc2VsZWN0ZWQnLCAnc2VsZWN0 ZWQnKTsNCglqUXVlcnkoIiNzbWRfcHJlZmFsaXplcl9pbnB1dCBpbnB1dFtuYW1lPSdwcmVm X2V2ZW50J10iKS52YWwoalF1ZXJ5KCIjc21kX3ByZWZhbGl6ZXJfZWRpdGVkICNzbWRfcHJl ZmFsaXplcl9ldmVudCBpbnB1dCIpLnZhbCgpKTsNCglqUXVlcnkoIiNzbWRfcHJlZmFsaXpl cl9pbnB1dCBpbnB1dFtuYW1lPSdodG1sJ10iKS52YWwoalF1ZXJ5KCIjc21kX3ByZWZhbGl6 ZXJfZWRpdGVkICNzbWRfcHJlZmFsaXplcl9odG1sIGlucHV0IikudmFsKCkpOw0KCWpRdWVy eSgiI3NtZF9wcmVmYWxpemVyX2lucHV0ICNzbWRfcHJlZmFsaXplcl9uZXd1c2VyIG9wdGlv blt2YWx1ZT0nIit1dHlwZSsiJ10iKS5hdHRyKCdzZWxlY3RlZCcsICdzZWxlY3RlZCcpOw0K CWpRdWVyeSgiI3NtZF9wcmVmYWxpemVyX2lucHV0IGlucHV0W25hbWU9J3Bvc2l0aW9uJ10i KS52YWwoalF1ZXJ5KCIjc21kX3ByZWZhbGl6ZXJfZWRpdGVkICNzbWRfcHJlZmFsaXplcl9w b3NpdGlvbiBpbnB1dCIpLnZhbCgpKTsNCglqUXVlcnkoImZvcm1bbmFtZT0nc21kX3ByZWZh bGl6ZXJfaW5wdXQnXSIpLnRyaWdnZXIoInN1Ym1pdCIpOw0KfQ0KZnVuY3Rpb24gc21kX3By ZWZhbGl6ZXJfdG9nZ2xlbmV3KCkgew0KCWJveCA9IGpRdWVyeSgiZm9ybVtuYW1lPSdzbWRf cHJlZmFsaXplcl9pbnB1dCddIik7DQoJaWYgKGJveC5jc3MoImRpc3BsYXkiKSA9PSAibm9u ZSIpIHsNCgkJYm94LnNsaWRlRG93bignZmFzdCcpOw0KCX0gZWxzZSB7DQoJCWJveC5zbGlk ZVVwKCdmYXN0Jyk7DQoJfQ0KCWpRdWVyeSgnI3NtZF9wcmVmYWxpemVyX25ldyAuc21kX2Zv Y3VzJykuZm9jdXMoKTsNCglyZXR1cm4gZmFsc2U7DQp9DQp7JGVkaXRGb2N1c30NCjwvc2Ny aXB0Pg0KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4NCi5zbWRfaGlkZGVuIHsNCglkaXNwbGF5 Om5vbmU7DQp9DQojc21kX3ByZWZhbGl6ZXJfbG9uZ2Zvcm0gI2xpc3QgdHIuZGF0YTpob3Zl ciB7DQoJYmFja2dyb3VuZDojZTdlN2U3Ow0KfQ0KPC9zdHlsZT4NCkVPQzsNCg0KCSRuZXdi dG4gPSAnPGEgY2xhc3M9Im5hdmxpbmsiIGhyZWY9IiMiIG9uY2xpY2s9InJldHVybiBzbWRf cHJlZmFsaXplcl90b2dnbGVuZXcoKTsiPicuc21kX3ByZWZhbGl6ZXJfZ1R4dCgnbmV3Jyku JzwvYT4nOw0KCWVjaG8gJzxmb3JtIG1ldGhvZD0icG9zdCIgbmFtZT0ic21kX3ByZWZhbGl6 ZXJfaW5wdXQiIGNsYXNzPSJzbWRfaGlkZGVuIiBhY3Rpb249Iicuam9pbl9xcygkcXMpLici Pic7DQoJZWNobyBzSW5wdXQoJ3NtZF9wcmVmYWxpemVyX3NhdmUnKTsNCgllY2hvIGhJbnB1 dCgnbmFtZScsKCgkc3RlcD09J2VkaXQnKSA/ICRuYW1lIDogJycpKTsNCgllY2hvIGhJbnB1 dCgndXNlcl9uYW1lJywoKCRzdGVwPT0nZWRpdCcpID8gJHVzZXJfbmFtZSA6ICcnKSk7DQoJ ZWNobyBzdGFydFRhYmxlKCdzbWRfcHJlZmFsaXplcl9uZXcnLCAnJywgJycsIDgpOw0KCWVj aG8gdHIoYXNzSGVhZCgnbmFtZScsJ3ZhbHVlJywgJ3R5cGUnLCBzbWRfcHJlZmFsaXplcl9n VHh0KCdldmVudCcpLCBzbWRfcHJlZmFsaXplcl9nVHh0KCdodG1sJyksIHNtZF9wcmVmYWxp emVyX2dUeHQoJ3VzZXInKSwgc21kX3ByZWZhbGl6ZXJfZ1R4dCgncG9zaXRpb24nKSwgc21k X3ByZWZhbGl6ZXJfZ1R4dCgnYWN0aW9ucycpKSk7DQoJZWNobyAnPHRyIGlkPSJzbWRfcHJl ZmFsaXplcl9pbnB1dCI+JzsNCgllY2hvIHRkKGZJbnB1dCgndGV4dCcsICduZXduYW1lJywg KCgkc3RlcD09J2VkaXQnKSA/ICRuYW1lIDogJycpLCAnc21kX2ZvY3VzJykpDQoJICAgIC50 ZChmSW5wdXQoJ3RleHQnLCAndmFsdWUnLCAoKCRzdGVwPT0nZWRpdCcpID8gJHZhbHVlIDog JycpKSkNCgkgICAgLnRkKHNlbGVjdElucHV0KCd0eXBlJywgJHNtZF9wcmVmYWxpemVyX3R5 cGVzLCAoKCRzdGVwPT0nZWRpdCcpID8gJHR5cGUgOiAyKSwgZmFsc2UsICcnLCAnc21kX3By ZWZhbGl6ZXJfbmV3X3R5cGUnKSkNCgkgICAgLnRkKGZJbnB1dCgndGV4dCcsICdwcmVmX2V2 ZW50JywgKCgkc3RlcD09J2VkaXQnKSA/ICRwcmVmX2V2ZW50IDogJycpKSkNCgkgICAgLnRk KGZJbnB1dCgndGV4dCcsICdodG1sJywgKCgkc3RlcD09J2VkaXQnKSA/ICRodG1sIDogJ3Rl eHRfaW5wdXQnKSkpDQoJICAgIC50ZChzZWxlY3RJbnB1dCgnbmV3dXNlcicsICRhdXRob3Jf bGlzdCwgKCgkc3RlcD09J2VkaXQnKSA/ICR1c2VyX25hbWUgOiAnJyksIHRydWUsICcnLCAn c21kX3ByZWZhbGl6ZXJfbmV3dXNlcicpKQ0KCSAgICAudGQoZklucHV0KCd0ZXh0JywgJ3Bv c2l0aW9uJywgKCgkc3RlcD09J2VkaXQnKSA/ICRwb3NpdGlvbiA6ICcwJykpKQ0KCSAgICAu dGQoZklucHV0KCdzdWJtaXQnLCAnJywgZ1R4dCgnYWRkJyksICdzbWFsbGVyYm94JykpOw0K CWVjaG8gJzwvdHI+JzsNCgllY2hvIGVuZFRhYmxlKCk7DQoJZWNobyAnPC9mb3JtPic7DQoN CgkvLyBUaGUgbWFpbiBsaXN0DQoJZWNobyAnPGZvcm0gbWV0aG9kPSJwb3N0IiBuYW1lPSJs b25nZm9ybSIgaWQ9InNtZF9wcmVmYWxpemVyX2xvbmdmb3JtIiBhY3Rpb249Iicuam9pbl9x cygkcXMpLiciPic7DQoJZWNobyBzdGFydFRhYmxlKCdsaXN0JywnJywnJyw4KTsNCgllY2hv IHRyKHRkYSgkbmV3YnRuLCAnIGNvbHNwYW49IjgiJykpOw0KCWVjaG8gdHIoDQoJCWNvbHVt bl9oZWFkKCduYW1lJywgJ25hbWUnLCAnc21kX3ByZWZhbGl6ZXInLCB0cnVlLCAkc3dpdGNo X2RpciwgJGNyaXQsICRzZWFyY2hfbWV0aG9kLCAoJ25hbWUnID09ICRzb3J0KSA/ICRkaXIg OiAnJykuDQoJCWNvbHVtbl9oZWFkKCd2YWx1ZScsICd2YWx1ZScsICdzbWRfcHJlZmFsaXpl cicsIHRydWUsICRzd2l0Y2hfZGlyLCAkY3JpdCwgJHNlYXJjaF9tZXRob2QsICgndmFsdWUn ID09ICRzb3J0KSA/ICRkaXIgOiAnJykuDQoJCWNvbHVtbl9oZWFkKCd0eXBlJywgJ3R5cGUn LCAnc21kX3ByZWZhbGl6ZXInLCB0cnVlLCAkc3dpdGNoX2RpciwgJGNyaXQsICRzZWFyY2hf bWV0aG9kLCAoJ3R5cGUnID09ICRzb3J0KSA/ICRkaXIgOiAnJykuDQoJCWNvbHVtbl9oZWFk KHNtZF9wcmVmYWxpemVyX2dUeHQoJ2V2ZW50JyksICdldmVudCcsICdzbWRfcHJlZmFsaXpl cicsIHRydWUsICRzd2l0Y2hfZGlyLCAkY3JpdCwgJHNlYXJjaF9tZXRob2QsICgnZXZlbnQn ID09ICRzb3J0KSA/ICRkaXIgOiAnJykuDQoJCWNvbHVtbl9oZWFkKHNtZF9wcmVmYWxpemVy X2dUeHQoJ2h0bWwnKSwgJ2h0bWwnLCAnc21kX3ByZWZhbGl6ZXInLCB0cnVlLCAkc3dpdGNo X2RpciwgJGNyaXQsICRzZWFyY2hfbWV0aG9kLCAoJ2h0bWwnID09ICRzb3J0KSA/ICRkaXIg OiAnJykuDQoJCWNvbHVtbl9oZWFkKHNtZF9wcmVmYWxpemVyX2dUeHQoJ3VzZXInKSwgJ3Vz ZXInLCAnc21kX3ByZWZhbGl6ZXInLCB0cnVlLCAkc3dpdGNoX2RpciwgJGNyaXQsICRzZWFy Y2hfbWV0aG9kLCAoJ3VzZXInID09ICRzb3J0KSA/ICRkaXIgOiAnJykuDQoJCWNvbHVtbl9o ZWFkKHNtZF9wcmVmYWxpemVyX2dUeHQoJ3Bvc2l0aW9uJyksICdwb3NpdGlvbicsICdzbWRf cHJlZmFsaXplcicsIHRydWUsICRzd2l0Y2hfZGlyLCAkY3JpdCwgJHNlYXJjaF9tZXRob2Qs ICgncG9zaXRpb24nID09ICRzb3J0KSA/ICRkaXIgOiAnJykuDQoJCWNvbHVtbl9oZWFkKHNt ZF9wcmVmYWxpemVyX2dUeHQoJ2FjdGlvbnMnKSwgJ2FjdGlvbnMnLCAnc21kX3ByZWZhbGl6 ZXInLCBmYWxzZSkNCgkpOw0KDQoJZm9yZWFjaCAoJHRoZVByZWZzIGFzICRwcmVmX3Jvdykg ew0KCQlpZiAoJHN0ZXAgPT0gJ2VkaXQnICYmICRwcmVmX3Jvd1snbmFtZSddID09ICRuYW1l ICYmICRwcmVmX3Jvd1sndXNlcl9uYW1lJ10gPT0gJHVzZXJfbmFtZSkgew0KCQkJJGJ0blNh dmUgPSBmSW5wdXQoJ2J1dHRvbicsICcnLCBnVHh0KCdTYXZlJyksICdwdWJsaXNoJywgJycs ICdzbWRfcHJlZmFsaXplcl9zYXZlKCknKTsNCgkJCWVjaG8gdHIoDQoJCQkJdGQoZklucHV0 KCd0ZXh0JywgJ25hbWUnLCAkcHJlZl9yb3dbJ25hbWUnXSksIDcwLCAnJywgJ3NtZF9wcmVm YWxpemVyX25hbWUnKQ0KCQkJCS50ZCh0ZXh0X2FyZWEoJ3ZhbHVlJywgJzgwJywgJzIyMCcs ICRwcmVmX3Jvd1sndmFsJ10pLCAyMjAsICcnLCAnc21kX3ByZWZhbGl6ZXJfdmFsdWUnKQ0K CQkJCS50ZChzZWxlY3RJbnB1dCgndHlwZScsICRzbWRfcHJlZmFsaXplcl90eXBlcywgJHBy ZWZfcm93Wyd0eXBlJ10pLCA2MCwgJycsICdzbWRfcHJlZmFsaXplcl90eXBlJykNCgkJCQku dGQoZklucHV0KCd0ZXh0JywgJ3ByZWZfZXZlbnQnLCAkcHJlZl9yb3dbJ2V2ZW50J10pLCA2 MCwgJycsICdzbWRfcHJlZmFsaXplcl9ldmVudCcpDQoJCQkJLnRkKGZJbnB1dCgndGV4dCcs ICdodG1sJywgJHByZWZfcm93WydodG1sJ10pLCA2MCwgJycsICdzbWRfcHJlZmFsaXplcl9o dG1sJykNCgkJCQkudGQoc2VsZWN0SW5wdXQoJ3VzZXJfbmFtZScsICRhdXRob3JfbGlzdCwg JHByZWZfcm93Wyd1c2VyX25hbWUnXSwgdHJ1ZSksIDgwLCAnJywgJ3NtZF9wcmVmYWxpemVy X3VzZXJfbmFtZScpDQoJCQkJLnRkKGZJbnB1dCgndGV4dCcsICdwb3NpdGlvbicsICRwcmVm X3Jvd1sncG9zaXRpb24nXSksIDIwLCAnJywgJ3NtZF9wcmVmYWxpemVyX3Bvc2l0aW9uJykN CgkJCQkudGQoJGJ0blNhdmUpDQoJCQksICcgaWQ9InNtZF9wcmVmYWxpemVyX2VkaXRlZCIn KTsNCgkJfSBlbHNlIHsNCgkJCSRidG5FZGl0ID0gJzxhIGhyZWY9Iicuam9pbl9xcygkcXMp LicmIzM4O3N0ZXA9ZWRpdCYjMzg7bmFtZT0nLiRwcmVmX3Jvd1snbmFtZSddLicmIzM4O3Vz ZXJfbmFtZT0nLiRwcmVmX3Jvd1sndXNlcl9uYW1lJ10uJyI+WycgLiBnVHh0KCdlZGl0Jykg LiAnXTwvYT4nOw0KCQkJJGJ0bkRlbCA9IHNtZF9wcmVmYWxpemVyX2Nhbl9kZWxldGUoJHBy ZWZfcm93WyduYW1lJ10pID8gJzxhIGhyZWY9Iicuam9pbl9xcygkcXMpLicmIzM4O3N0ZXA9 c21kX3ByZWZhbGl6ZXJfZGVsZXRlJiMzODtuYW1lPScuJHByZWZfcm93WyduYW1lJ10uJyYj Mzg7dXNlcl9uYW1lPScuJHByZWZfcm93Wyd1c2VyX25hbWUnXS4nIiBvbmNsaWNrPSJyZXR1 cm4gY29uZmlybShcJycuc21kX3ByZWZhbGl6ZXJfZ1R4dCgnZGVsZXRlX2NvbmZpcm0nLCBh cnJheSgie25hbWV9IiA9PiAkcHJlZl9yb3dbJ25hbWUnXSwgInt1c2VyX25hbWV9IiA9PiAo KCRwcmVmX3Jvd1sndXNlcl9uYW1lJ109PScnKSA/IHNtZF9wcmVmYWxpemVyX2dUeHQoJ2Fs bF91c2VycycpIDogJHByZWZfcm93Wyd1c2VyX25hbWUnXSApICkpLidcJyk7Ij5bJyAuIGdU eHQoJ2RlbGV0ZScpIC4gJ108L2E+JyA6ICcnOw0KCQkJZWNobyB0cigNCgkJCQl0ZCgkcHJl Zl9yb3dbJ25hbWUnXSw3MCkNCgkJCQkudGQoJHByZWZfcm93Wyd2YWwnXSwgMjIwKQ0KCQkJ CS50ZCh1Y2ZpcnN0KCRzbWRfcHJlZmFsaXplcl90eXBlc1skcHJlZl9yb3dbJ3R5cGUnXV0p KQ0KCQkJCS50ZCgkcHJlZl9yb3dbJ2V2ZW50J10pDQoJCQkJLnRkKCRwcmVmX3Jvd1snaHRt bCddKQ0KCQkJCS50ZCgkcHJlZl9yb3dbJ3VzZXJfbmFtZSddKQ0KCQkJCS50ZCgkcHJlZl9y b3dbJ3Bvc2l0aW9uJ10pDQoJCQkJLnRkKCRidG5FZGl0LicgJy4kYnRuRGVsLCAxMDApDQoJ CQksICcgY2xhc3M9ImRhdGEiJyk7DQoJCX0NCgl9DQoNCgllY2hvIGVuZFRhYmxlKCk7DQoJ ZWNobyAnPC9mb3JtPic7DQoJZWNobyBuLm5hdl9mb3JtKCRzbWRfcHJlZmFsaXplcl9ldmVu dCwgJHBhZ2UsICRudW1QYWdlcywgJHNvcnQsICRkaXIsICRjcml0LCAkc2VhcmNoX21ldGhv ZCk7DQoJZWNobyBuLnBhZ2VieV9mb3JtKCRzbWRfcHJlZmFsaXplcl9ldmVudCwgJHBhZ2Vi eSk7DQp9DQoNCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0NCmZ1bmN0aW9uIHNtZF9wcmVmYWxpemVyX3NlYXJjaF9m b3JtKCRjcml0LCAkbWV0aG9kKSB7DQoJJG1ldGhvZHMgPQlhcnJheSgNCgkJJ25hbWUnID0+ IGdUeHQoJ25hbWUnKSwNCgkJJ3ZhbHVlJyA9PiBnVHh0KCd2YWx1ZScpLA0KCQkndHlwZScg PT4gZ1R4dCgndHlwZScpLA0KCQknZXZlbnQnID0+IHNtZF9wcmVmYWxpemVyX2dUeHQoJ2V2 ZW50JyksDQoJCSdodG1sJyA9PiBzbWRfcHJlZmFsaXplcl9nVHh0KCdodG1sJyksDQoJCSd1 c2VyJyA9PiBzbWRfcHJlZmFsaXplcl9nVHh0KCd1c2VyJyksDQoJCSdwb3NpdGlvbicgPT4g c21kX3ByZWZhbGl6ZXJfZ1R4dCgncG9zaXRpb24nKSwNCgkpOw0KDQoJcmV0dXJuIHNlYXJj aF9mb3JtKCdzbWRfcHJlZmFsaXplcicsICdzbWRfcHJlZmFsaXplcl9saXN0JywgJGNyaXQs ICRtZXRob2RzLCAkbWV0aG9kLCAnbmFtZScpOw0KfQ0KDQovLyAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpmdW5jdGlv biBzbWRfcHJlZmFsaXplcl9jaGFuZ2VfcGFnZWJ5KCkgew0KCXNldGNvb2tpZSgnc21kX3By ZWZhbGl6ZXJfcGFnZWJ5JywgZ3BzKCdxdHknKSk7DQoJc21kX3ByZWZhbGl6ZXJfbGlzdCgn Jyk7DQp9DQoNCmZ1bmN0aW9uIHNtZF9wcmVmYWxpemVyX2Nhbl9kZWxldGUoJG5hbWUpIHsN CgkkcHJvdGVjdGVkX2V2ZW50cyA9IGFycmF5KCdhZG1pbicsICdjb21tZW50cycsICdjc3Mn LCAnY3VzdG9tJywgJ2Rpc2N1c3MnLCAnZmVlZHMnLCAncHVibGlzaCcpOw0KCSRyb3cgPSBz YWZlX3JvdygnKicsICd0eHBfcHJlZnMnLCAibmFtZT0nJG5hbWUnIik7DQoJcmV0dXJuIChp bl9hcnJheSgkcm93WydldmVudCddLCAkcHJvdGVjdGVkX2V2ZW50cykgJiYgZW1wdHkoJHJv d1sndXNlcl9uYW1lJ10pKSA/IGZhbHNlIDogdHJ1ZTsNCn0NCg0KZnVuY3Rpb24gc21kX3By ZWZhbGl6ZXJfYWRkKCRtc2c9JycpIHsNCglnbG9iYWwgJHNtZF9wcmVmYWxpemVyX2V2ZW50 Ow0KDQoJcGFnZXRvcChzbWRfcHJlZmFsaXplcl9nVHh0KCd0YWJfbmFtZScpLCAkbXNnKTsN CgllY2hvICdBREQnOw0KfQ0KDQpmdW5jdGlvbiBzbWRfcHJlZmFsaXplcl9zYXZlKCRtc2c9 JycpIHsNCglnbG9iYWwgJHNtZF9wcmVmYWxpemVyX2V2ZW50Ow0KDQoJZXh0cmFjdChkb1Ns YXNoKHBzYShhcnJheSgnbmFtZScsICduZXduYW1lJywgJ3ZhbHVlJywgJ3R5cGUnLCAncHJl Zl9ldmVudCcsICdodG1sJywgJ3VzZXJfbmFtZScsICduZXd1c2VyJywgJ3Bvc2l0aW9uJykp KSk7DQoJJHJldCA9IGZhbHNlOw0KCSRtc2cgPSAnJzsNCg0KCS8vIFN0YXRlIG1hY2hpbmUt ZXNxdWUgZGVjaXNpb24gdHJlZQ0KCSRleGlzdHMgPSBzYWZlX3JvdygnbmFtZSwgdXNlcl9u YW1lJywgJ3R4cF9wcmVmcycsICJuYW1lID0gJyRuZXduYW1lJyBBTkQgdXNlcl9uYW1lID0g JyRuZXd1c2VyJyIpOw0KCWlmIChlbXB0eSgkbmFtZSkpIHsNCgkJLy8gSW5zZXJ0IG5ldw0K CQlpZiAoJGV4aXN0cykgew0KCQkJJG1zZyA9IGFycmF5KHNtZF9wcmVmYWxpemVyX2dUeHQo J2V4aXN0X2FscmVhZHknLCBhcnJheSgie25hbWV9IiA9PiAkbmV3bmFtZSkpLCBFX1dBUk5J TkcpOw0KCQkJJF9QT1NUWydzdGVwJ10gPSAnZWRpdCc7DQoJCX0gZWxzZSB7DQoJCQkkcmV0 ID0gc2FmZV9pbnNlcnQoJ3R4cF9wcmVmcycsICJwcmVmc19pZD0xLCBuYW1lPSckbmV3bmFt ZScsIHZhbD0nJHZhbHVlJywgdHlwZT0nJHR5cGUnLCBldmVudD0nJHByZWZfZXZlbnQnLCBo dG1sPSckaHRtbCcsIHBvc2l0aW9uPSckcG9zaXRpb24nLCB1c2VyX25hbWU9JyRuZXd1c2Vy JyIpOw0KCQkJaWYgKCRyZXQgPT09IGZhbHNlKSB7DQoJCQkJJG1zZyA9IHNtZF9wcmVmYWxp emVyX2dUeHQoJ2NyZWF0ZV9mYWlsZWQnLCBhcnJheSgie25hbWV9IiA9PiAkbmV3bmFtZSkp Ow0KCQkJfSBlbHNlIHsNCgkJCQkkbXNnID0gc21kX3ByZWZhbGl6ZXJfZ1R4dCgnY3JlYXRl X29rJywgYXJyYXkoIntuYW1lfSIgPT4gJG5ld25hbWUpKTsNCgkJCX0NCgkJfQ0KDQoJfSBl bHNlIGlmICgkbmFtZSA9PSAkbmV3bmFtZSkgew0KCQkvLyBVcGRhdGUNCgkJaWYgKCR1c2Vy X25hbWUgPT0gJG5ld3VzZXIpIHsNCgkJCS8vIERpcmVjdCB1cGRhdGUNCgkJCWlmICgkZXhp c3RzKSB7DQoJCQkJJHJldCA9IHNhZmVfdXBkYXRlKCd0eHBfcHJlZnMnLCAibmFtZT0nJG5l d25hbWUnLCB2YWw9JyR2YWx1ZScsIHR5cGU9JyR0eXBlJywgZXZlbnQ9JyRwcmVmX2V2ZW50 JywgaHRtbD0nJGh0bWwnLCBwb3NpdGlvbj0nJHBvc2l0aW9uJyIsICJuYW1lPSckbmFtZScg QU5EIHVzZXJfbmFtZT0nJHVzZXJfbmFtZSciKTsNCgkJCQlpZiAoJHJldCA9PT0gZmFsc2Up IHsNCgkJCQkJJG1zZyA9IHNtZF9wcmVmYWxpemVyX2dUeHQoJ3NhdmVfZmFpbGVkJywgYXJy YXkoIntuYW1lfSIgPT4gJG5ld25hbWUpKTsNCgkJCQl9IGVsc2Ugew0KCQkJCQkkbXNnID0g c21kX3ByZWZhbGl6ZXJfZ1R4dCgnc2F2ZV9vaycsIGFycmF5KCJ7bmFtZX0iID0+ICRuZXdu YW1lKSk7DQoJCQkJfQ0KCQkJfSBlbHNlIHsNCgkJCQkkbXNnID0gc21kX3ByZWZhbGl6ZXJf Z1R4dCgnZXhpc3Rfbm90JywgYXJyYXkoIntuYW1lfSIgPT4gJG5hbWUpKTsNCgkJCX0NCgkJ fSBlbHNlIHsNCgkJCS8vIFJlbmFtZWQgdXNlcg0KCQkJaWYgKCRleGlzdHMpIHsNCgkJCQkk bXNnID0gYXJyYXkoc21kX3ByZWZhbGl6ZXJfZ1R4dCgnZXhpc3RfYWxyZWFkeScsIGFycmF5 KCJ7bmFtZX0iID0+ICRuZXduYW1lKSksIEVfV0FSTklORyk7DQoJCQkJJF9QT1NUWydzdGVw J10gPSAnZWRpdCc7DQoJCQkJJF9QT1NUWyduYW1lJ10gPSAkbmFtZTsNCgkJCQkkX1BPU1Rb J3VzZXJfbmFtZSddID0gJHVzZXJfbmFtZTsNCgkJCX0gZWxzZSB7DQoJCQkJJHJldCA9IHNh ZmVfdXBkYXRlKCd0eHBfcHJlZnMnLCAibmFtZT0nJG5ld25hbWUnLCB2YWw9JyR2YWx1ZScs IHR5cGU9JyR0eXBlJywgZXZlbnQ9JyRwcmVmX2V2ZW50JywgaHRtbD0nJGh0bWwnLCBwb3Np dGlvbj0nJHBvc2l0aW9uJywgdXNlcl9uYW1lPSckbmV3dXNlciciLCAibmFtZT0nJG5hbWUn IEFORCB1c2VyX25hbWU9JyR1c2VyX25hbWUnIik7DQoJCQkJaWYgKCRyZXQgPT09IGZhbHNl KSB7DQoJCQkJCSRtc2cgPSBzbWRfcHJlZmFsaXplcl9nVHh0KCdzYXZlX2ZhaWxlZCcsIGFy cmF5KCJ7bmFtZX0iID0+ICRuZXduYW1lKSk7DQoJCQkJfSBlbHNlIHsNCgkJCQkJJG1zZyA9 IHNtZF9wcmVmYWxpemVyX2dUeHQoJ3NhdmVfb2snLCBhcnJheSgie25hbWV9IiA9PiAkbmV3 bmFtZSkpOw0KCQkJCX0NCgkJCX0NCgkJfQ0KDQoJfSBlbHNlIHsNCgkJLy8gVXBkYXRlIGFu ZCByZW5hbWUNCgkJaWYgKCR1c2VyX25hbWUgPT0gJG5ld3VzZXIpIHsNCgkJCS8vIFJlbmFt ZWQgdXBkYXRlDQoJCQlpZiAoJGV4aXN0cykgew0KCQkJCSRtc2cgPSBzbWRfcHJlZmFsaXpl cl9nVHh0KCdleGlzdF9hbHJlYWR5JywgYXJyYXkoIntuYW1lfSIgPT4gJG5ld25hbWUpKTsN CgkJCX0gZWxzZSB7DQoJCQkJJHJldCA9IHNhZmVfdXBkYXRlKCd0eHBfcHJlZnMnLCAibmFt ZT0nJG5ld25hbWUnLCB2YWw9JyR2YWx1ZScsIHR5cGU9JyR0eXBlJywgZXZlbnQ9JyRwcmVm X2V2ZW50JywgaHRtbD0nJGh0bWwnLCBwb3NpdGlvbj0nJHBvc2l0aW9uJyIsICJuYW1lPSck bmFtZScgQU5EIHVzZXJfbmFtZT0nJHVzZXJfbmFtZSciKTsNCgkJCQlpZiAoJHJldCA9PT0g ZmFsc2UpIHsNCgkJCQkJJG1zZyA9IHNtZF9wcmVmYWxpemVyX2dUeHQoJ3NhdmVfZmFpbGVk JywgYXJyYXkoIntuYW1lfSIgPT4gJG5ld25hbWUpKTsNCgkJCQl9IGVsc2Ugew0KCQkJCQkk bXNnID0gc21kX3ByZWZhbGl6ZXJfZ1R4dCgnc2F2ZV9vaycsIGFycmF5KCJ7bmFtZX0iID0+ ICRuZXduYW1lKSk7DQoJCQkJfQ0KCQkJfQ0KCQl9IGVsc2Ugew0KCQkJLy8gUmVuYW1lZCB1 cGRhdGUgYW5kIHVzZXINCgkJCWlmICgkZXhpc3RzKSB7DQoJCQkJJG1zZyA9IGFycmF5KHNt ZF9wcmVmYWxpemVyX2dUeHQoJ2V4aXN0X2FscmVhZHknLCBhcnJheSgie25hbWV9IiA9PiAk bmV3bmFtZSkpLCBFX1dBUk5JTkcpOw0KCQkJCSRfUE9TVFsnc3RlcCddID0gJ2VkaXQnOw0K CQkJCSRfUE9TVFsnbmFtZSddID0gJG5hbWU7DQoJCQkJJF9QT1NUWyd1c2VyX25hbWUnXSA9 ICR1c2VyX25hbWU7DQoJCQl9IGVsc2Ugew0KCQkJCSRyZXQgPSBzYWZlX3VwZGF0ZSgndHhw X3ByZWZzJywgIm5hbWU9JyRuZXduYW1lJywgdmFsPSckdmFsdWUnLCB0eXBlPSckdHlwZScs IGV2ZW50PSckcHJlZl9ldmVudCcsIGh0bWw9JyRodG1sJywgcG9zaXRpb249JyRwb3NpdGlv bicsIHVzZXJfbmFtZT0nJG5ld3VzZXInIiwgIm5hbWU9JyRuYW1lJyBBTkQgdXNlcl9uYW1l PSckdXNlcl9uYW1lJyIpOw0KCQkJCWlmICgkcmV0ID09PSBmYWxzZSkgew0KCQkJCQkkbXNn ID0gc21kX3ByZWZhbGl6ZXJfZ1R4dCgnc2F2ZV9mYWlsZWQnLCBhcnJheSgie25hbWV9IiA9 PiAkbmV3bmFtZSkpOw0KCQkJCX0gZWxzZSB7DQoJCQkJCSRtc2cgPSBzbWRfcHJlZmFsaXpl cl9nVHh0KCdzYXZlX29rJywgYXJyYXkoIntuYW1lfSIgPT4gJG5ld25hbWUpKTsNCgkJCQl9 DQoJCQl9DQoJCX0NCiAgIH0NCg0KCXNtZF9wcmVmYWxpemVyX2xpc3QoJG1zZyk7DQp9DQoN CmZ1bmN0aW9uIHNtZF9wcmVmYWxpemVyX2RlbGV0ZSgkbXNnPScnKSB7DQoJZ2xvYmFsICRz bWRfcHJlZmFsaXplcl9ldmVudDsNCg0KCWV4dHJhY3QoZG9TbGFzaChncHNhKGFycmF5KCdu YW1lJywgJ3VzZXJfbmFtZScpKSkpOw0KCSRyZXQgPSBmYWxzZTsNCgkkcnMgPSBzYWZlX3Jv dygnKicsICd0eHBfcHJlZnMnLCAibmFtZSA9ICckbmFtZScgQU5EIHVzZXJfbmFtZSA9ICck dXNlcl9uYW1lJyIpOw0KCWlmICgkcnMgJiYgc21kX3ByZWZhbGl6ZXJfY2FuX2RlbGV0ZSgk bmFtZSkpIHsNCgkJZXh0cmFjdCgkcnMpOw0KCQkkcmV0ID0gc2FmZV9kZWxldGUoJ3R4cF9w cmVmcycsICJuYW1lID0gJyRuYW1lJyBBTkQgdXNlcl9uYW1lPSckdXNlcl9uYW1lJyIpOw0K CX0NCglpZiAoJHJldCA9PT0gZmFsc2UpIHsNCgkJc21kX3ByZWZhbGl6ZXJfbGlzdChzbWRf cHJlZmFsaXplcl9nVHh0KCdkZWxldGVfZmFpbGVkJywgYXJyYXkoIntuYW1lfSIgPT4gJG5h bWUpKSk7DQoJfSBlbHNlIHsNCgkJc21kX3ByZWZhbGl6ZXJfbGlzdChzbWRfcHJlZmFsaXpl cl9nVHh0KCdkZWxldGVfb2snLCBhcnJheSgie25hbWV9IiA9PiAkbmFtZSkpKTsNCgl9DQp9 DQoNCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLy8gUGx1Z2luLXNwZWNpZmljIHJl cGxhY2VtZW50IHN0cmluZ3MgLSBsb2NhbGlzZSBhcyByZXF1aXJlZA0KZnVuY3Rpb24gc21k X3ByZWZhbGl6ZXJfZ1R4dCgkd2hhdCwgJGF0dHMgPSBhcnJheSgpKSB7DQoJJGxhbmcgPSBh cnJheSgNCgkJJ2FjdGlvbnMnID0+ICdBY3Rpb25zJywNCgkJJ2FsbF91c2VycycgPT4gJ2Fs bCB1c2VycycsDQoJCSdjcmVhdGVfZmFpbGVkJyA9PiAnUHJlZiB7bmFtZX0gTk9UIGNyZWF0 ZWQnLA0KCQknY3JlYXRlX29rJyA9PiAnUHJlZiB7bmFtZX0gY3JlYXRlZCcsDQoJCSdkZWxl dGVfY29uZmlybScgPT4gJ1JlYWxseSBkZWxldGUgcHJlZiB7bmFtZX0gKHt1c2VyX25hbWV9 KT8nLA0KCQknZGVsZXRlX2ZhaWxlZCcgPT4gJ1ByZWYge25hbWV9IE5PVCBkZWxldGVkJywN CgkJJ2RlbGV0ZV9vaycgPT4gJ1ByZWYge25hbWV9IGRlbGV0ZWQnLA0KCQknZXhpc3RfYWxy ZWFkeScgPT4gJ1ByZWYge25hbWV9IGFscmVhZHkgZXhpc3RzLiBDaG9vc2UgYW5vdGhlciBu YW1lL3VzZXInLA0KCQknZXhpc3Rfbm90JyA9PiAnQ2Fubm90IHVwZGF0ZTogcHJlZiB7bmFt ZX0gZG9lcyBub3QgZXhpc3QnLA0KCQknZXZlbnQnID0+ICdFdmVudCcsDQoJCSdodG1sJyA9 PiAnSW5wdXQgY29udHJvbCcsDQoJCSduZXcnID0+ICdOZXcgcHJlZicsDQoJCSdwb3NpdGlv bicgPT4gJ1Bvc2l0aW9uJywNCgkJJ3NhdmVfZmFpbGVkJyA9PiAnUHJlZiB7bmFtZX0gTk9U IHNhdmVkJywNCgkJJ3NhdmVfb2snID0+ICdQcmVmIHtuYW1lfSBzYXZlZCcsDQoJCSd0YWJf bmFtZScgPT4gJ1ByZWZhbGl6ZXInLA0KCQkndXNlcicgPT4gJ1VzZXInLA0KCSk7DQoJcmV0 dXJuIHN0cnRyKCRsYW5nWyR3aGF0XSwgJGF0dHMpOw0KfSI7czo0OiJ0eXBlIjtzOjE6IjMi O3M6NToib3JkZXIiO3M6MToiNSI7czo1OiJmbGFncyI7czoxOiIwIjtzOjQ6ImhlbHAiO3M6 NTkwNjoiPGRpdiBpZD0ic21kX2hlbHAiPgoKCTxoMT5zbWRfcHJlZmFsaXplcjwvaDE+CgoJ PHA+V2l0aCB0aGUgYWR2ZW50IG9mIHBlci11c2VyIHByZWZlcmVuY2VzLCB5b3VyIHByZWZz IHRhYmxlIGNvdWxkIGJlY29tZSByYXRoZXIgbGFyZ2UuIEtlZXAgaXQgdW5kZXIgY29udHJv bCB3aXRoIHRoaXMgcGx1Z2luLiBBbHNvIHVzZWZ1bCBpZiB5b3UgaGF2ZSB1bmluc3RhbGxl ZCBwbHVnaW5zIHlvdSBubyBsb25nZXIgdXNlIHRoYXQgaGF2ZSBsZWZ0IHByZWZzIGJlaGlu ZC48L3A+CgoJPGgyPkZlYXR1cmVzPC9oMj4KCgk8dWw+CgkJPGxpPkFkZCwgZWRpdCBvciBy ZW1vdmUgPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gcHJlZmVyZW5jZXMgc2V0IGlu IHlvdXIgZGF0YWJhc2U8L2xpPgoJCTxsaT5GaWx0ZXIgcHJlZnMgYnkgbmFtZSAvIHZhbHVl IC8gdXNlciAvIHR5cGUgdG8gaGVscCBmaW5kIHRoZSBvbmVzIHlvdSB3YW50PC9saT4KCQk8 bGk+Q3JlYXRlIHJlZ3VsYXIgb3IgaGlkZGVuIHByZWZzLCBmb3IgYWxsIG9yIHNwZWNpZmlj IHVzZXJzPC9saT4KCTwvdWw+CgoJPGgyPkF1dGhvciAvIGNyZWRpdHM8L2gyPgoKCTxwPldy aXR0ZW4gYnkgPGEgaHJlZj0iaHR0cDovL3N0ZWZkYXdzb24uY29tL2NvbnRhY3QiPlN0ZWYg RGF3c29uPC9hPi48L3A+CgoJPGgyPkluc3RhbGxhdGlvbiAvIHVuaW5zdGFsbGF0aW9uPC9o Mj4KCgk8cD5Eb3dubG9hZCB0aGUgcGx1Z2luIGZyb20gZWl0aGVyIDxhIGhyZWY9Imh0dHA6 Ly90ZXh0cGF0dGVybi5vcmcvcGx1Z2lucy8xMTI5L3NtZF9wcmVmYWxpemVyIj50ZXh0cGF0 dGVybi5vcmc8L2E+LCBvciB0aGUgPGEgaHJlZj0iaHR0cDovL3N0ZWZkYXdzb24uY29tL3N3 Ij5zb2Z0d2FyZSBwYWdlPC9hPiwgcGFzdGUgdGhlIGNvZGUgaW50byB0aGUgPHNwYW4gY2xh c3M9ImNhcHMiPlRYUDwvc3Bhbj4gQWRtaW4gLSZndDsgUGx1Z2lucyBwYW5lLCBpbnN0YWxs IGFuZCBlbmFibGUgdGhlIHBsdWdpbi4gVmlzaXQgdGhlIDxhIGhyZWY9Imh0dHA6Ly9mb3J1 bS50ZXh0cGF0dGVybi5jb20vdmlld3RvcGljLnBocD9pZD0zMjI3MiI+Zm9ydW0gdGhyZWFk PC9hPiBmb3IgbW9yZSBpbmZvIG9yIHRvIHJlcG9ydCBvbiB0aGUgc3VjY2VzcyBvciBvdGhl cndpc2Ugb2YgdGhlIHBsdWdpbi48L3A+CgoJPHA+VG8gdW5pbnN0YWxsLCBkZWxldGUgZnJv bSB0aGUgQWRtaW4gLSZndDsgUGx1Z2lucyBwYWdlLjwvcD4KCgk8aDI+VXNhZ2U8L2gyPgoK CTxwPlZpc2l0IHRoZSBBZG1pbiA9Jmd0OyBQcmVmYWxpemVyIHBhZ2UgdG8gc2VlIGEgbGlz dCBvZiBhbGwgZGVmaW5lZCBwcmVmZXJlbmNlcyBpbiB5b3VyIDxzcGFuIGNsYXNzPSJjYXBz Ij5UWFA8L3NwYW4+IGRhdGFiYXNlLjwvcD4KCgk8cD5FYWNoIHJvdyBoYXMgYWN0aW9ucyBp biB0aGUgbGFzdCBjb2x1bW4gdGhhdCBhbGxvdyB5b3UgdG8gZWRpdCBvciBkZWxldGUgYW55 IHByZWZlcmVuY2UuIFNvbWUgKHN5c3RlbSkgcHJlZnMgY2Fubm90IGJlIGRlbGV0ZWQgYmVj YXVzZSB0aGF0IHdvdWxkIHBvdGVudGlhbGx5IGh1cnQgeW91ciBzaXRlOyB0aGUgcGx1Z2lu IHRyaWVzIHRvIGxpbWl0IHlvdSB0byBvbmx5IGJlaW5nIGFibGUgdG8gZGVsZXRlIHBlci11 c2VyIG9yIHBsdWdpbiBwcmVmcywgYnV0IHlvdSBzaG91bGQgc3RpbGwgZXhlcmNpc2UgY2F1 dGlvbi48L3A+CgoJPHA+VGhlIGNvbHVtbnMgYXJlIGFzIGZvbGxvd3M6PC9wPgoKCTx1bD4K CQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPk5hbWU8L3NwYW4+IDogVGhlIG5hbWUgb2YgdGhl IHByZWZlcmVuY2U8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+VmFsdWU8L3NwYW4+ IDogVGhlIHN0b3JlZCBjb250ZW50cyBvZiB0aGUgcHJlZmVyZW5jZTwvbGk+CgkJPGxpPjxz cGFuIGNsYXNzPSJhdG5tIj5UeXBlPC9zcGFuPiA6IFdoZXRoZXIgdGhlIHByZWZlcmVuY2Ug YXBwZWFycyBvbiB0aGUgPGVtPkJhc2ljIFByZWZzPC9lbT4gb3IgPGVtPkFkdmFuY2VkIFBy ZWZzPC9lbT4gc3VidGFiLiBJZiBpdCBkb2VzIG5vdCBhcHBlYXIgYW55d2hlcmUgYXQgYWxs LCBpdCBpcyA8ZW0+SGlkZGVuPC9lbT4gYW5kIGlzIHVzdWFsbHkgdXNlZCBieSA8c3BhbiBj bGFzcz0iY2FwcyI+VFhQPC9zcGFuPiBvciBhIHBsdWdpbiB0byBrZWVwIHRyYWNrIG9mIHRo aW5nczwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5FdmVudDwvc3Bhbj4gOiBUaGUg ZXZlbnQgKG9yIGFkbWluLXNpZGUgdGFiKSB0byB3aGljaCB0aGlzIHByZWYgaXMgYXNzb2Np YXRlZC4gVXNlZnVsIGZvciBncm91cGluZyBwcmVmIHZhbHVlcyB0b2dldGhlciBvbi1zY3Jl ZW48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+SW5wdXQgY29udHJvbDwvc3Bhbj4g OiBJZiB0aGUgcHJlZmVyZW5jZSBpcyByZW5kZXJlZCBvbi1zY3JlZW4gdGhlbiB0aGlzIGdv dmVybnMgd2hpY2ggVUkgd2lkZ2V0IGlzIGRyYXduIG9yIGhvdyB0aGUgY29udHJvbCB3aWxs IGJlaGF2ZS4gQ29tbW9uIGVudHJpZXMgaW4gdGhpcyBjb2x1bW4gYXJlOgoJPHVsPgoJCTxs aT48c3BhbiBjbGFzcz0iYXRubSI+dGV4dF9pbnB1dDwvc3Bhbj4gOiAoZGVmYXVsdCkgQSBz dGFuZGFyZCB0ZXh0IGJveDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5jdXN0b21f c2V0PC9zcGFuPiA6IEEgY3VzdG9tIGZpZWxkPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0 bm0iPmRhdGVmb3JtYXRzPC9zcGFuPiA6IFNvbWUga2luZCBvZiBkYXRlIGZvcm1hdHRpbmcg c3RyaW5nPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnllc25vcmFkaW88L3NwYW4+ IDogQSB5ZXMgb3Igbm8gcmFkaW8gYnV0dG9uIHNldDwvbGk+Cgk8L3VsPjwvbGk+CgkJPGxp PjxzcGFuIGNsYXNzPSJhdG5tIj5Vc2VyPC9zcGFuPiA6IExvZ2luIG5hbWUgdG8gd2hvbSB0 aGUgcHJlZmVyZW5jZSBiZWxvbmdzPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPlBv c2l0aW9uPC9zcGFuPiA6IFdoZW4gbGlzdGluZyBwcmVmZXJlbmNlcyBvbi1zY3JlZW4sIHRo ZSBwb3NpdGlvbiBkaWN0YXRlcyB0aGVpciBvcmRlci4gTG93ZXN0IG51bWJlcmVkIHZhbHVl cyBhcmUgZGlzcGxheWVkIGZpcnN0LiBJdCBpcyBjb21tb24gcHJhY3RpY2UgdG8gYXNzaWdu IHBvc2l0aW9ucyBpbiBpbmNyZW1lbnRzIG9mIDEwIG9yIDIwIHNvIHRoZXJlIGlzIHJvb20g dG8gZWFzaWx5IGluc2VydCB2YWx1ZXMgbGF0ZXI8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0i YXRubSI+QWN0aW9uczwvc3Bhbj4gOiBBY3Rpb25zIHRvIHBlcmZvcm0gb24gZWFjaCBwcmVm ZXJlbmNlOgoJPHVsPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+W0VkaXRdPC9zcGFuPiA6 IEVkaXQgdGhlIHZhcmlvdXMgZGV0YWlscyBvZiB0aGUgcHJlZmVyZW5jZS4gSW5wdXQgY29u dHJvbHMgYXBwZWFyIGlubGluZSBmb3IgeW91IHRvIGFsdGVyIHRoZSB2YWx1ZXMuIFdoZW4g eW91IGFyZSBkb25lLCBjbGljayA8ZW0+U2F2ZTwvZW0+PC9saT4KCQk8bGk+PHNwYW4gY2xh c3M9ImF0bm0iPltEZWxldGVdPC9zcGFuPiA6IFBlcm1hbmVudGx5IHJlbW92ZSB0aGUgcHJl ZmVyZW5jZSB2YWx1ZSBmcm9tIHlvdXIgZGF0YWJhc2UuIFlvdSB3aWxsIGhhdmUgYSBjaGFu Y2UgdG8gY29uZmlybSB5b3VyIGludGVudGlvbnMuIEJlIGNhcmVmdWwhPC9saT4KCTwvdWw+ PC9saT4KCTwvdWw+CgoJPHA+VXNlIHRoZSBzZWFyY2ggZmVhdHVyZSB0byBsaW1pdCB0aGUg bGlzdCB0byB0aGUgbWF0Y2hlZCBpdGVtcy4gV2hlbiBzZWFyY2hpbmcgYnkgPGNvZGU+VHlw ZTwvY29kZT4geW91IGNhbiBlaXRoZXIgdXNlIDxjb2RlPmJhc2ljPC9jb2RlPiwgPGNvZGU+ YWR2YW5jZWQ8L2NvZGU+IG9yIDxjb2RlPmhpZGRlbjwvY29kZT4sIG9yIHVzZSB0aGVpciBu dW1lcmljIGNvdW50ZXJwYXJ0cyAwLCAxIG9yIDIgcmVzcGVjdGl2ZWx5LjwvcD4KCgk8cD5D bGljayA8ZW0+TmV3IHByZWY8L2VtPiB0byBhZGQgYSBwcmVmZXJlbmNlIHZhbHVlIHRvIHRo ZSBkYXRhYmFzZS4gQSByb3cgb2YgaW5wdXQgY29udHJvbHMgd2lsbCBzbGlkZSBkb3duIGFs bG93aW5nIHlvdSB0byBlbnRlciB5b3VyIGRlc2lyZWQgdmFsdWVzLiBDbGljayA8ZW0+QWRk PC9lbT4gdG8gY29tbWl0IHRoZSBuZXcgcHJlZmVyZW5jZS48L3A+CgoJPGgzPk5vdGVzPC9o Mz4KCgk8dWw+CgkJPGxpPklmIHlvdSB0cnkgdG8gZWRpdCBhIHByZWZlcmVuY2UgYW5kIHJl bmFtZSBpdCB0byB0aGF0IG9mIGFuIGV4aXN0aW5nIHByZWZlcmVuY2Ugb3duZWQgYnkgc29t ZW9uZSBlbHNlLCB0aGUgcGx1Z2luIHdpbGwgd2FybiB5b3UgYW5kIHlvdXIgZWRpdCB3aWxs IGJlIHJldmVydGVkIHRvIGl0cyBvcmlnaW5hbCBzdGF0ZTwvbGk+CgkJPGxpPklmIHlvdSB0 cnkgdG8gY3JlYXRlIGEgcHJlZmVyZW5jZSB2YWx1ZSB0aGF0IHdvdWxkIGNsb2JiZXIgYW4g ZXhpc3Rpbmcgc2V0dGluZywgdGhlIHBsdWdpbiB3aWxsIHdhcm4geW91LiBJZiB5b3UgY2xp Y2sgPGVtPk5ldyBwcmVmPC9lbT4gYWdhaW4gdGhvdWdoLCB5b3VyIG1vc3QgcmVjZW50bHkg ZW50ZXJlZCB2YWx1ZXMgd2lsbCBzdGlsbCBiZSBhdmFpbGFibGUuIFRoZSBuYW1lIGFuZCB1 c2VyIHdpbGwgYmUgcmVzZXQsIGhvd2V2ZXI8L2xpPgoJPC91bD4KCjwvZGl2Pgo8IS0tICoq KiBCRUdJTiBQTFVHSU4gQ1NTICoqKiAtLT4KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KI3Nt ZF9oZWxwIHsgbGluZS1oZWlnaHQ6MS41IDt9CiNzbWRfaGVscCBjb2RlIHsgZm9udC13ZWln aHQ6Ym9sZDsgZm9udDogMTA1JS8xMzAlICJDb3VyaWVyIE5ldyIsIGNvdXJpZXIsIG1vbm9z cGFjZTsgYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZDQzt9CiNzbWRfaGVscCBjb2RlLmJsb2Nr IHsgZm9udC13ZWlnaHQ6bm9ybWFsOyBib3JkZXI6MXB4IGRvdHRlZCAjOTk5OyBiYWNrZ3Jv dW5kLWNvbG9yOiAjZjBlNjhjOyBkaXNwbGF5OmJsb2NrOyBtYXJnaW46MTBweCAxMHB4IDIw cHg7IHBhZGRpbmc6MTBweDsgfQojc21kX2hlbHAgaDEgeyBjb2xvcjogIzM2OTsgZm9udDog MjBweCBHZW9yZ2lhLCBzYW5zLXNlcmlmOyBtYXJnaW46IDA7IHRleHQtYWxpZ246IGNlbnRl cjsgfQojc21kX2hlbHAgaDIgeyBib3JkZXItYm90dG9tOiAxcHggc29saWQgYmxhY2s7IHBh ZGRpbmc6MTBweCAwIDA7IGNvbG9yOiAjMzY5OyBmb250OiAxN3B4IEdlb3JnaWEsIHNhbnMt c2VyaWY7IH0KI3NtZF9oZWxwIGgzIHsgY29sb3I6ICMyNzU2ODU7IGZvbnQ6IGJvbGQgMTJw eCBBcmlhbCwgc2Fucy1zZXJpZjsgbGV0dGVyLXNwYWNpbmc6IDFweDsgbWFyZ2luOiAxMHB4 IDAgMDt0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOyB0ZXh0LWRlY29yYXRpb246dW5kZXJs aW5lO30KI3NtZF9oZWxwIGg0IHsgZm9udDogYm9sZCAxMXB4IEFyaWFsLCBzYW5zLXNlcmlm OyBsZXR0ZXItc3BhY2luZzogMXB4OyBtYXJnaW46IDEwcHggMCAwIDt0ZXh0LXRyYW5zZm9y bTogdXBwZXJjYXNlOyB9CiNzbWRfaGVscCAuYXRubSB7IGZvbnQtd2VpZ2h0OmJvbGQ7IGNv bG9yOiMzM2Q7IH0KI3NtZF9oZWxwIC5tYW5kIHsgYmFja2dyb3VuZDojZWVlOyBib3JkZXI6 MXB4IGRvdHRlZCAjOTk5OyB9CiNzbWRfaGVscCB0YWJsZSB7d2lkdGg6OTAlOyB0ZXh0LWFs aWduOmNlbnRlcjsgcGFkZGluZy1ib3R0b206MWVtO30KI3NtZF9oZWxwIHRkLCAjc21kX2hl bHAgdGgge2JvcmRlcjoxcHggc29saWQgIzk5OTsgcGFkZGluZzouNWVtIDA7fQojc21kX2hl bHAgdWwgeyBsaXN0LXN0eWxlLXR5cGU6c3F1YXJlOyB9CiNzbWRfaGVscCAucmVxdWlyZWQg e2NvbG9yOnJlZDt9CiNzbWRfaGVscCBsaSB7IG1hcmdpbjo1cHggMjBweCA1cHggMzBweDsg fQojc21kX2hlbHAgLmJyZWFrIHsgbWFyZ2luLXRvcDo1cHg7IH0KPC9zdHlsZT4KPCEtLSAq KiogRU5EIFBMVUdJTiBDU1MgKioqIC0tPgoiO3M6MzoibWQ1IjtzOjMyOiJmZmYzYTk4YjQ2 Mzc1ZTA5Y2QwZTY5NjdkMDBiNmY5MSI7fQ==