# Name: smd_featured v0.22 # Type: Admin/Client side plugin # Quickly label and display featured articles for your site's home / landing pages # 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: # ..................................................................... YToxMTp7czo0OiJuYW1lIjtzOjEyOiJzbWRfZmVhdHVyZWQiO3M6NjoiYXV0aG9yIjtzOjEx OiJTdGVmIERhd3NvbiI7czoxMDoiYXV0aG9yX3VyaSI7czoyMjoiaHR0cDovL3N0ZWZkYXdz b24uY29tLyI7czo3OiJ2ZXJzaW9uIjtzOjQ6IjAuMjIiO3M6MTE6ImRlc2NyaXB0aW9uIjtz OjgwOiJRdWlja2x5IGxhYmVsIGFuZCBkaXNwbGF5IGZlYXR1cmVkIGFydGljbGVzIGZvciB5 b3VyIHNpdGUncyBob21lIC8gbGFuZGluZyBwYWdlcyI7czo0OiJjb2RlIjtzOjMwNjU5OiJp ZiAoQHR4cGludGVyZmFjZSA9PSAnYWRtaW4nKSB7DQoJZ2xvYmFsICRzbWRfZmVhdHVyZWRf ZXZlbnQsICRzbWRfZmVhdHVyZWRfdGV4dGlsZV9vcHRzOw0KDQoJJHNtZF9mZWF0dXJlZF9l dmVudCA9ICdzbWRfZmVhdHVyZWQnOw0KCSRzbWRfZmVhdHVyZWRfcHJpdnMgPSBnZXRfcHJl Zignc21kX2ZlYXR1cmVkX3ByaXZzJywgJzEsMicpOw0KCSRzbWRfZmVhdHVyZWRfcHJlZl9w cml2cyA9ICcxLDInOw0KCSRzbWRfZmVhdHVyZWRfdGV4dGlsZV9vcHRzID0gYXJyYXkoDQoJ CTAgPT4gJ3RpdGxlJywNCgkJMSA9PiAnZGVzYycsDQoJKTsNCg0KCWFkZF9wcml2cygkc21k X2ZlYXR1cmVkX2V2ZW50LCAkc21kX2ZlYXR1cmVkX3ByaXZzKTsNCglyZWdpc3Rlcl90YWIo ImNvbnRlbnQiLCAkc21kX2ZlYXR1cmVkX2V2ZW50LCBzbWRfZmVhdHVyZWRfZ1R4dCgndGFi X25hbWUnKSk7DQoJcmVnaXN0ZXJfY2FsbGJhY2soJ3NtZF9mZWF0dXJlZF9tYW5hZ2UnLCAk c21kX2ZlYXR1cmVkX2V2ZW50KTsNCglyZWdpc3Rlcl9jYWxsYmFjaygnc21kX2ZlYXR1cmVk X3dlbGNvbWUnLCAncGx1Z2luX2xpZmVjeWNsZS5zbWRfZmVhdHVyZWQnKTsNCn0NCg0KaWYg KCFkZWZpbmVkKCdTTURfRkVBVCcpKSB7DQoJZGVmaW5lKCJTTURfRkVBVCIsICdzbWRfZmVh dHVyZWQnKTsNCn0NCg0KLy8gKioqKioqKioqKg0KLy8gQURNSU4gU0lERQ0KLy8gKioqKioq KioqKg0KLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpmdW5jdGlvbiBzbWRfZmVhdHVy ZWRfbWFuYWdlKCRldnQsICRzdHApIHsNCglpZiAoJHN0cCA9PSAnc2F2ZV9wYW5lX3N0YXRl Jykgew0KCQlzbWRfZmVhdHVyZWRfc2F2ZV9wYW5lX3N0YXRlKCk7DQoJfSBlbHNlIHsNCgkJ aWYoISRzdHAgb3IgIWluX2FycmF5KCRzdHAsIGFycmF5KA0KCQkJCSdzbWRfZmVhdHVyZWRf dGFibGVfaW5zdGFsbCcsDQoJCQkJJ3NtZF9mZWF0dXJlZF90YWJsZV9yZW1vdmUnLA0KCQkJ CSdzbWRfZmVhdHVyZWRfcHJlZnNhdmUnLA0KCQkJCSdzbWRfZmVhdHVyZWRfc2F2ZScsDQoJ CQkJJ3NtZF9mZWF0dXJlZF90YWdpdCcsDQoJCQkJJ3NtZF9mZWF0dXJlZF9jaGFuZ2VfcGFn ZWJ5JywNCgkJCSkpKSB7DQoJCQlzbWRfZmVhdHVyZWRfbGlzdCgnJyk7DQoJCX0gZWxzZSAk c3RwKCk7DQoJfQ0KfQ0KDQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCmZ1bmN0aW9u IHNtZF9mZWF0dXJlZF93ZWxjb21lKCRldnQsICRzdHApIHsNCgkkbXNnID0gJyc7DQoJc3dp dGNoICgkc3RwKSB7DQoJCWNhc2UgJ2luc3RhbGxlZCc6DQoJCQlzbWRfZmVhdHVyZWRfdGFi bGVfaW5zdGFsbCgwKTsNCgkJCSRtc2cgPSAnVGhhbmtzIGZvciBpbnN0YWxsaW5nIHNtZF9m ZWF0dXJlZC4gUGxlYXNlIHJlYWQgdGhlIGRvY3MgOi0pJzsNCgkJCWJyZWFrOw0KCQljYXNl ICdkZWxldGVkJzoNCgkJCXNtZF9mZWF0dXJlZF90YWJsZV9yZW1vdmUoMCk7DQoJCQlicmVh azsNCgl9DQoJcmV0dXJuICRtc2c7DQp9DQoNCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQ0KZnVuY3Rpb24gc21kX2ZlYXR1cmVkX2xpc3QoJG1zZz0nJykgew0KCWdsb2JhbCAkc21k X2ZlYXR1cmVkX2V2ZW50LCAkc21kX2ZlYXR1cmVkX2xpc3RfcGFnZWJ5LCAkc21kX2ZlYXR1 cmVkX3RleHRpbGVfb3B0czsNCg0KCXBhZ2V0b3Aoc21kX2ZlYXR1cmVkX2dUeHQoJ3RhYl9u YW1lJyksICRtc2cpOw0KCWV4dHJhY3QoZ3BzYShhcnJheSgnc21kX2ZlYXRfaWQnLCAnc21k X2ZlYXRfbGFiZWwnLCAnc21kX2ZlYXRfc2VhcmNoa2VlcCcsICdzbWRfZmVhdF9maWx0a2Vl cCcsICdwYWdlJykpKTsNCg0KCWlmIChzbWRfZmVhdHVyZWRfdGFibGVfZXhpc3QoMSkpIHsN CgkJJGZlYXRsaXN0ID0gc2FmZV9yb3dzKCcqJywgU01EX0ZFQVQsICcxPTEnKTsNCgkJJGZl YXRsaXN0ID0gZW1wdHkoJGZlYXRsaXN0KSA/IGFycmF5KCkgOiAkZmVhdGxpc3Q7DQoJCSRl ZGl0bmFtZSA9ICRmZWF0X2xhYmVsID0gJGZlYXRfdGl0bGUgPSAkZmVhdF9kZXNjID0gJyc7 DQoNCgkJJGV0eXBlcyA9ICRmdHlwZXMgPSAkZmxpc3QgPSBhcnJheSgpOw0KCQkkZXR5cGVz WycnXSA9IHNtZF9mZWF0dXJlZF9nVHh0KCd1bmxhYmVsbGVkJyk7DQoJCSRmdHlwZXNbJ3Nt ZF91bmxhYmVsbGVkJ10gPSBzbWRfZmVhdHVyZWRfZ1R4dCgndW5sYWJlbGxlZCcpOw0KCQlm b3JlYWNoICgkZmVhdGxpc3QgYXMgJGl0ZW0pIHsNCgkJCWlmIChpc3NldCgkaXRlbVsnbGFi ZWwnXSkgJiYgIWVtcHR5KCRpdGVtWydsYWJlbCddKSkgew0KCQkJCSRmdHlwZXNbJGl0ZW1b J2xhYmVsJ11dID0gJGV0eXBlc1skaXRlbVsnbGFiZWwnXV0gPSAkaXRlbVsnbGFiZWwnXTsN CgkJCX0NCgkJCSRmbGlzdFskaXRlbVsnZmVhdF9pZCddXSA9IGFycmF5KCdsYWJlbCcgPT4g JGl0ZW1bJ2xhYmVsJ10sICd0aXRsZScgPT4gJGl0ZW1bJ2ZlYXRfdGl0bGUnXSwgJ3RpdGxl X2h0bWwnID0+ICRpdGVtWydmZWF0X3RpdGxlX2h0bWwnXSwgJ2Rlc2NyaXB0aW9uJyA9PiAk aXRlbVsnZGVzY3JpcHRpb24nXSwgJ2Rlc2NfaHRtbCcgPT4gJGl0ZW1bJ2Rlc2NfaHRtbCdd KTsNCgkJfQ0KDQoJCSRmZWF0bGlzdCA9ICRmbGlzdDsNCg0KCQkvLyBHZXQgYWRkaXRpb25h bCBmaWx0ZXJpbmcgZnJvbSBoaWRkZW4gcHJlZnMNCgkJJHdoZXJlID0gYXJyYXkoJzE9MScp Ow0KCQkkc2VjbGlzdCA9IGdldF9wcmVmKCdzbWRfZmVhdHVyZWRfc2VjdGlvbl9saXN0Jywg JycpOw0KCQlpZiAoJHNlY2xpc3QpIHsNCgkJCSR3aGVyZVtdID0gIlNlY3Rpb24gSU4gKCci LmpvaW4oIicsJyIsIGRvX2xpc3QoJHNlY2xpc3QpKS4iJykiOw0KCQl9DQoJCSR3aGVyZVtd ID0gIlN0YXR1cyBJTiAoNCw1KSI7DQoNCgkJJG9yZGVyYnkgPSBnZXRfcHJlZignc21kX2Zl YXR1cmVkX3NvcnQnLCAnUG9zdGVkIGRlc2MnLCAxKTsNCgkJJG9yZGVycXJ5ID0gKCRvcmRl cmJ5KSA/ICcgT1JERVIgQlkgJy5kb1NsYXNoKCRvcmRlcmJ5KSA6ICcnOw0KCQkkY3Vyck9y ZGVyID0gZXhwbG9kZSgnICcsICRvcmRlcmJ5KTsNCgkJJGN1cnJPcmRlclswXSA9IChpc3Nl dCgkY3Vyck9yZGVyWzBdKSkgPyAkY3Vyck9yZGVyWzBdIDogJ1Bvc3RlZCc7DQoJCSRjdXJy T3JkZXJbMV0gPSAoaXNzZXQoJGN1cnJPcmRlclsxXSkpID8gJGN1cnJPcmRlclsxXSA6ICdk ZXNjJzsNCgkJJGRpc3BsYXkgPSBnZXRfcHJlZignc21kX2ZlYXR1cmVkX2Rpc3BsYXknLCAn YWxsJywgMSk7DQoNCgkJLy8gR2VuZXJhdGUgdGhlIGV4dHJhIGNyaXRlcmlhIGlmIGluIGxp c3Qgdmlldw0KCQlpZiAoJGRpc3BsYXk9PSdwYWdpbmF0ZWQnKSB7DQoJCQlpZiAoJHNtZF9m ZWF0X3NlYXJjaGtlZXApIHsNCgkJCQkkaXRlbXMgPSBkb19saXN0KCRzbWRfZmVhdF9zZWFy Y2hrZWVwLCAnICcpOw0KCQkJCSRpdGxpc3QgPSBhcnJheSgpOw0KCQkJCWZvcmVhY2ggKCRp dGVtcyBhcyAkaXRlbSkgew0KCQkJCQlpZiAodHJpbSgkaXRlbSkgIT0gJycpIHsNCgkJCQkJ CSRpdGxpc3RbXSA9ICJUaXRsZSBsaWtlICclJGl0ZW0lJyI7DQoJCQkJCX0NCgkJCQl9DQoJ CQkJJHdoZXJlW10gPSAnKCcuam9pbignIE9SICcsICRpdGxpc3QpLicpJzsNCgkJCX0NCgkJ CWlmICgkc21kX2ZlYXRfZmlsdGtlZXApIHsNCgkJCQkkbGJsID0gKCRzbWRfZmVhdF9maWx0 a2VlcCA9PSAnc21kX3VubGFiZWxsZWQnKSA/ICcnIDogJHNtZF9mZWF0X2ZpbHRrZWVwOw0K CQkJCSRpZHMgPSBzYWZlX2NvbHVtbignZmVhdF9pZCcsIFNNRF9GRUFULCAiQklOQVJZIGxh YmVsID0gJyRsYmwnIik7DQoJCQkJJHdoZXJlW10gPSAiSUQgSU4gKCciLmpvaW4oIicsJyIs ICRpZHMpLiInKSI7DQoJCQl9DQoJCX0NCg0KCQkkd2hlcmUgPSBqb2luKCcgQU5EICcsICR3 aGVyZSk7DQoJCSR0b3RhbCA9IHNhZmVfY291bnQoJ3RleHRwYXR0ZXJuJywgJHdoZXJlKTsN CgkJJGRvX3BhZyA9ICEkc21kX2ZlYXRfZmlsdGtlZXAgJiYgISRzbWRfZmVhdF9zZWFyY2hr ZWVwOw0KDQoJCSRsaW1pdCA9ICgkZGlzcGxheT09J3BhZ2luYXRlZCcgJiYgJGRvX3BhZykg PyBtYXgoJHNtZF9mZWF0dXJlZF9saXN0X3BhZ2VieSwgMTUpIDogOTk5OTk7DQoJCWxpc3Qo JHBhZ2UsICRvZmZzZXQsICRudW1QYWdlcykgPSBwYWdlcigkdG90YWwsICRsaW1pdCwgJHBh Z2UpOw0KDQoJCSRycyA9IHNhZmVfcm93cygnKicsICd0ZXh0cGF0dGVybicsICR3aGVyZS4g JG9yZGVycXJ5IC4gIiBsaW1pdCAkb2Zmc2V0LCAkbGltaXQiKTsNCgkJJG91dCA9IGFycmF5 KCk7DQoJCWZvcmVhY2ggKCRycyBhcyAkcm93KSB7DQoJCQkkZnR5cGUgPSBpc3NldCgkZmVh dGxpc3RbJHJvd1snSUQnXV1bJ2xhYmVsJ10pID8gJGZlYXRsaXN0WyRyb3dbJ0lEJ11dWyds YWJlbCddIDogJyc7DQoJCQkkb3V0W10gPSBhcnJheSgkcm93WydJRCddLCAkcm93WydUaXRs ZSddLCAkZnR5cGUpOw0KCQkJaWYgKCRzbWRfZmVhdF9pZCAmJiAkcm93WydJRCddID09ICRz bWRfZmVhdF9pZCkgew0KCQkJCSRlZGl0bmFtZSA9ICRyb3dbJ1RpdGxlJ107DQoJCQkJJGZl YXRfbGFiZWwgPSAkZmVhdGxpc3RbJHNtZF9mZWF0X2lkXVsnbGFiZWwnXTsNCgkJCQkkZmVh dF90aXRsZSA9ICRmZWF0bGlzdFskc21kX2ZlYXRfaWRdWyd0aXRsZSddOw0KCQkJCSRmZWF0 X2Rlc2MgPSBkb1N0cmlwKHN0cl9yZXBsYWNlKCdcclxuJywnDQonLCAkZmVhdGxpc3RbJHNt ZF9mZWF0X2lkXVsnZGVzY3JpcHRpb24nXSkpOw0KCQkJfQ0KCQl9DQoNCgkJJHNvcnRvcHRz ID0gYXJyYXkoDQoJCQknUG9zdGVkJyA9PiAnUG9zdGVkJywNCgkJCSdFeHBpcmVzJyA9PiAn RXhwaXJ5JywNCgkJCSdMYXN0TW9kJyA9PiAnTW9kaWZpZWQnLA0KCQkJJ1RpdGxlJyA9PiAn VGl0bGUnLA0KCQkJJ1NlY3Rpb24nID0+ICdTZWN0aW9uJywNCgkJCSdDYXRlZ29yeTEnID0+ ICdDYXRlZ29yeTEnLA0KCQkJJ0NhdGVnb3J5MicgPT4gJ0NhdGVnb3J5MicsDQoJCSk7DQoJ CSRzb3J0ZGlycyA9IGFycmF5KA0KCQkJJ2FzYycgPT4gJ0FzY2VuZGluZycsDQoJCQknZGVz YycgPT4gJ0Rlc2NlbmRpbmcnLA0KCQkpOw0KCQkkZGlzcGxheW9wdHMgPSBhcnJheSgNCgkJ CSdhbGwnID0+ICdBbGwnLA0KCQkJJ3BhZ2luYXRlZCcgPT4gJ1BhZ2luYXRlZCcsDQoJCSk7 DQoJCSR0ZXh0aWxlb25vZmYgPSBzbWRfZmVhdHVyZWRfcHJlZl9leHBsb2RlKCRzbWRfZmVh dHVyZWRfdGV4dGlsZV9vcHRzLCBnZXRfcHJlZignc21kX2ZlYXR1cmVkX3RleHRpbGUnLCAn MTEnLCAxKSk7DQoNCgkJJHNpemVzID0gZG9fbGlzdChnZXRfcHJlZignc21kX2ZlYXR1cmVk X2JveF9zaXplJywgJzE1MHg0MCcsIDEpLCAneCcpOw0KCQkkc2l6ZXNbMF0gPSAoaXNzZXQo JHNpemVzWzBdKSAmJiBpc19udW1lcmljKCRzaXplc1swXSkpID8gJHNpemVzWzBdIDogJzE1 MCc7DQoJCSRzaXplc1sxXSA9IChpc3NldCgkc2l6ZXNbMV0pICYmIGlzX251bWVyaWMoJHNp emVzWzFdKSkgPyAkc2l6ZXNbMV0gOiAnNDAnOw0KCQkkZGlzcGxheV9qcyA9ICgkZGlzcGxh eT09J2FsbCcpID8gMSA6IDA7DQoNCgkJZWNobyAnPGRpdiBpZD0ic21kX2xvYWRpbmciIHN0 eWxlPSJjb2xvcjojOTYzOyB0ZXh0LWFsaWduOmNlbnRlcjsgZm9udC1zaXplOjIwMCU7IGZv bnQtc3R5bGU6aXRhbGljOyB3aWR0aDo1MDBweDsgaGVpZ2h0OjEwMHB4OyBtYXJnaW46MCBh dXRvOyBib3JkZXI6MXB4IHNvbGlkICM3Nzc7IGJhY2tncm91bmQ6I2ZmYztkaXNwbGF5OmJs b2NrIj48ZGl2IHN0eWxlPSJtYXJnaW4tdG9wOjMwcHg7Ij5Mb2FkaW5nLi4uPC9kaXY+PC9k aXY+JzsNCgkJZWNobyAnPGRpdiBpZD0ic21kX2NvbnRhaW5lciIgc3R5bGU9ImRpc3BsYXk6 bm9uZTsiPic7DQoJCWVjaG8gJzxmaWVsZHNldCBpZD0ic21kX2ZlYXR1cmVkX2NvbnRyb2xf cGFuZWwiIGNsYXNzPSJ0eHAtY29udHJvbC1wYW5lbCI+PGxlZ2VuZCBjbGFzcz0icGxhaW4g bGV2ZXInLihnZXRfcHJlZigncGFuZV9zbWRfZmVhdHVyZWRfY3BhbmVsX3Zpc2libGUnKSA/ ICcgZXhwYW5kZWQnIDogJycpLiciPjxhIGhyZWY9IiNzbWRfZmVhdHVyZWRfY3BhbmVsIj4n LnNtZF9mZWF0dXJlZF9nVHh0KCdjb250cm9sX3BhbmVsJykuJzwvYT48L2xlZ2VuZD4nOw0K CQllY2hvICc8ZGl2IGlkPSJzbWRfZmVhdHVyZWRfY3BhbmVsIiBjbGFzcz0idG9nZ2xlIiBz dHlsZT0iZGlzcGxheTonLihnZXRfcHJlZigncGFuZV9zbWRfZmVhdHVyZWRfY3BhbmVsX3Zp c2libGUnKSA/ICdibG9jaycgOiAnbm9uZScpLiciPic7DQoNCgkJZWNobyAnPGZvcm0gaWQ9 InNtZF9mZWF0X2ZpbHRmb3JtIiBhY3Rpb249ImluZGV4LnBocCIgbWV0aG9kPSJwb3N0IiBv bnN1Ym1pdD0ic21kX2ZlYXR1cmVkX2VkaXRrZWVwKDApO3JldHVybiBmYWxzZTsiPic7DQoJ CWVjaG8gJzxmaWVsZHNldCBpZD0ic21kX2ZlYXR1cmVkX2ZpbHQiIGNsYXNzPSJzbWRfZmVh dHVyZWRfc3VicGFuZWwiPjxsZWdlbmQ+Jy5zbWRfZmVhdHVyZWRfZ1R4dCgoKCRkaXNwbGF5 PT0nYWxsJykgPyAnc2VhcmNoX2xpdmUnIDogJ3NlYXJjaF9zdGFuZGFyZCcpKS4nPC9sZWdl bmQ+JzsNCgkJZWNobyAnPGxhYmVsIGZvcj0ic21kX2ZlYXRfc2VhcmNoIj4nLnNtZF9mZWF0 dXJlZF9nVHh0KCdieV9uYW1lJykuJzwvbGFiZWw+Jy5mSW5wdXQoJ3RleHQnLCAnc21kX2Zl YXRfc2VhcmNoJywgJHNtZF9mZWF0X3NlYXJjaGtlZXAsICcnLCAnJywgJycsICcnLCAnJywg J3NtZF9mZWF0X3NlYXJjaCcpLg0KCQkJKCgkZnR5cGVzKSA/ICc8ZGl2IGlkPSJzbWRfZmVh dHVyZWRfYnlsYWJlbCI+Jy5zbWRfZmVhdHVyZWRfZ1R4dCgnYnlfbGFiZWwnKS5zZWxlY3RJ bnB1dCgnc21kX2ZlYXRfZmlsdCcsICRmdHlwZXMsICRzbWRfZmVhdF9maWx0a2VlcCwgMSwg JycsICdzbWRfZmVhdF9maWx0JykuJzwvZGl2PicgOiAnJyk7DQoJCWVjaG8gKCRkaXNwbGF5 PT0ncGFnaW5hdGVkJykgPyBmSW5wdXQoJ3N1Ym1pdCcsICcnLCBnVHh0KCdnbycpLCAnc21h bGxlcmJveCBzbWRfZmVhdHVyZWRfc2F2ZScsICcnLCAncmV0dXJuIHNtZF9mZWF0dXJlZF9l ZGl0a2VlcCgwKTsnKSA6ICcnOw0KCQllY2hvIGVJbnB1dCgkc21kX2ZlYXR1cmVkX2V2ZW50 KS5zSW5wdXQoJ3NtZF9mZWF0dXJlZF9saXN0Jyk7DQoJCWVjaG8gJzwvZmllbGRzZXQ+JzsN CgkJZWNobyAnPC9mb3JtPic7DQoNCgkJZWNobyAnPGZvcm0gaWQ9InNtZF9mZWF0X3ByZWZz IiBhY3Rpb249ImluZGV4LnBocCIgbWV0aG9kPSJwb3N0Ij4nOw0KCQllY2hvICc8ZmllbGRz ZXQgaWQ9InNtZF9mZWF0dXJlZF9wcmVmcyIgY2xhc3M9InNtZF9mZWF0dXJlZF9zdWJwYW5l bCI+PGxlZ2VuZD4nLnNtZF9mZWF0dXJlZF9nVHh0KCdwcmVmcycpLic8L2xlZ2VuZD4nOw0K DQoJCWVjaG8gJzxkaXYgY2xhc3M9InNtZF9mZWF0dXJlZF9wcmVmIj4nOw0KCQllY2hvICc8 bGFiZWwgZm9yPSJzbWRfZmVhdF9kaXNwbGF5Ij4nLnNtZF9mZWF0dXJlZF9nVHh0KCdwcmVm X2Rpc3BsYXknKS4nPC9sYWJlbD4nLnNlbGVjdElucHV0KCdzbWRfZmVhdF9kaXNwbGF5Jywg JGRpc3BsYXlvcHRzLCAkZGlzcGxheSwgJycsICcnLCAnc21kX2ZlYXRfZGlzcGxheScpOw0K CQllY2hvICc8L2Rpdj4nOw0KDQoJCWVjaG8gJzxkaXYgY2xhc3M9InNtZF9mZWF0dXJlZF9w cmVmIj4nOw0KCQllY2hvICc8bGFiZWwgZm9yPSJzbWRfZmVhdF9zb3J0Ij4nLnNtZF9mZWF0 dXJlZF9nVHh0KCdwcmVmX3NvcnQnKS4nPC9sYWJlbD4nLnNlbGVjdElucHV0KCdzbWRfZmVh dF9zb3J0JywgJHNvcnRvcHRzLCAkY3Vyck9yZGVyWzBdLCAnJywgJycsICdzbWRfZmVhdF9z b3J0JykuDQoJCQlzZWxlY3RJbnB1dCgnc21kX2ZlYXRfc29ydGRpcicsICRzb3J0ZGlycywg JGN1cnJPcmRlclsxXSwgJycsICcnLCAnc21kX2ZlYXRfc29ydGRpcicpOw0KCQllY2hvICc8 L2Rpdj4nOw0KDQoJCWVjaG8gJzxkaXYgY2xhc3M9InNtZF9mZWF0dXJlZF9wcmVmIj4nOw0K CQllY2hvICc8ZGl2IGlkPSJzbWRfZmVhdF9kaXNwbGF5X2JveCI+JzsNCgkJZWNobyAnPGxh YmVsIGZvcj0ic21kX2ZlYXRfYm94c2l6ZSI+Jy5zbWRfZmVhdHVyZWRfZ1R4dCgncHJlZl9i b3hzaXplJykuJzwvbGFiZWw+Jy5mSW5wdXQoJ3RleHQnLCAnc21kX2ZlYXRfYm94X3gnLCAk c2l6ZXNbMF0sICcnLCAnJywgJycsICczJywgJycsICdzbWRfZmVhdF9ib3hzaXplJykuDQoJ CQlzbWRfZmVhdHVyZWRfZ1R4dCgncHJlZl9ib3hzaXplYnknKS5mSW5wdXQoJ3RleHQnLCAn c21kX2ZlYXRfYm94X3knLCAkc2l6ZXNbMV0sICcnLCAnJywgJycsICczJyk7DQoJCWVjaG8g JzwvZGl2Pic7DQoNCgkJZWNobyAnPGRpdiBjbGFzcz0ic21kX2ZlYXR1cmVkX3ByZWYgc21k X2ZlYXRfdGV4dGlsZSI+JzsNCgkJZWNobyAnPGxhYmVsIGZvcj0ic21kX2ZlYXRfdGV4dGls ZSI+Jy5zbWRfZmVhdHVyZWRfZ1R4dCgndGV4dGlsZScpLic8L2xhYmVsPic7DQoJCWZvcmVh Y2ggKCR0ZXh0aWxlb25vZmYgYXMgJGtleSA9PiAkdmFsKSB7DQoJCQllY2hvIGNoZWNrYm94 KCdzbWRfZmVhdF90ZXh0aWxlXycuJGtleSwgMSwgJHRleHRpbGVvbm9mZlska2V5XSwgJycs ICdzbWRfZmVhdF90ZXh0aWxlXycuJGtleSkuc3Auc21kX2ZlYXR1cmVkX2dUeHQoJ3RleHRp bGVfJy4ka2V5KTsNCgkJfQ0KCQllY2hvIGZJbnB1dCgnaGlkZGVuJywgJ3NtZF9mZWF0X3Rl eHRpbGUnLCBpbXBsb2RlKCR0ZXh0aWxlb25vZmYpLCcnLCcnLCcnLCcnLCcnLCdzbWRfZmVh dF90ZXh0aWxlJyk7DQoJCWVjaG8gJzwvZGl2Pic7DQoNCgkJZWNobyAnPC9kaXY+JzsNCg0K CQllY2hvIGVJbnB1dCgkc21kX2ZlYXR1cmVkX2V2ZW50KS5zSW5wdXQoJ3NtZF9mZWF0dXJl ZF9wcmVmc2F2ZScpOw0KCQllY2hvIGZJbnB1dCgnc3VibWl0JywgJycsIGdUeHQoJ3NhdmUn KSwgJ3NtYWxsZXJib3ggc21kX2ZlYXR1cmVkX3NhdmUnLCAnJywgJ3NtZF9mZWF0X3ByZXN1 YigpOycpOw0KCQllY2hvICc8L2ZpZWxkc2V0Pic7DQoJCWVjaG8gJzwvZm9ybT4nOw0KDQoJ CWVjaG8gJyZuYnNwOyc7IC8vIFdpdGhvdXQgdGhpcyAnY29udGVudCcgalF1ZXJ5IDEuMy4y IHdvbid0IC50b2dnbGUoKSBhbiBlbGVtZW50IHdpdGggZW50aXJlbHkgZmxvYXRlZCBpbm5l ciBlbGVtZW50cyA6LXMNCgkJZWNobyAnPC9kaXY+JzsNCgkJZWNobyAnPC9maWVsZHNldD4n Ow0KDQoJCWVjaG8gJzxmb3JtIGlkPSJzbWRfZmVhdF9lZGl0Zm9ybSIgYWN0aW9uPSJpbmRl eC5waHAiIG1ldGhvZD0icG9zdCI+JzsNCgkJZWNobyBoSW5wdXQoJ3NtZF9mZWF0X3NlYXJj aGtlZXAnLCAnJykuDQoJCQkJaElucHV0KCdzbWRfZmVhdF9maWx0a2VlcCcsICcnKS4NCgkJ CQloSW5wdXQoJ3NtZF9mZWF0X2lkJywgJycpLg0KCQkJCWVJbnB1dCgkc21kX2ZlYXR1cmVk X2V2ZW50KS4NCgkJCQlzSW5wdXQoJ3NtZF9mZWF0dXJlZF9saXN0Jyk7DQoJCWVjaG8gJzwv Zm9ybT4nOw0KDQoJCWVjaG8gJzxmb3JtIGlkPSJzbWRfZmVhdF9zYXZlZm9ybSIgYWN0aW9u PSJpbmRleC5waHAiIG1ldGhvZD0icG9zdCIgb25zdWJtaXQ9InJldHVybiBzbWRfZmVhdHVy ZWRfc2F2ZWtlZXAoKTsiPic7DQoJCWVjaG8gc3RhcnRUYWJsZSgnY29udHJvbCcsJycsJycs JzMnKTsNCgkJaWYgKCRzbWRfZmVhdF9pZCkgew0KCQkJZWNobyB0cigNCgkJCQl0ZCgnJm5i c3A7JykudGRjcyhnVHh0KCdlZGl0Jykuc3Auc3Ryb25nKCRlZGl0bmFtZSksIDIpDQoJCQkp Ow0KCQkJZWNobyB0cigNCgkJCQlmTGFiZWxDZWxsKGdUeHQoJ2xhYmVsJyksICcnLCAnc21k X2ZlYXRfbGFiZWwnKS4NCgkJCQl0ZCgNCgkJCQkJZklucHV0KCd0ZXh0JywgJ3NtZF9mZWF0 X2xhYmVsJywgJGZlYXRfbGFiZWwsICcnLCAnJywgJycsICcnLCAnJywgJ3NtZF9mZWF0X2xh YmVsJykuDQoJCQkJCXNlbGVjdElucHV0KCdzbWRfZmVhdF9sYWJlbGNob29zZScsICRldHlw ZXMsICRmZWF0X2xhYmVsLCAwLCAnJywgJ3NtZF9mZWF0X2xhYmVsY2hvb3NlJykNCgkJCQkp DQoJCQkpOw0KCQkJZWNobyB0cigNCgkJCQlmTGFiZWxDZWxsKGdUeHQoJ3RpdGxlJyksICcn LCAnc21kX2ZlYXRfdGl0bGUnKS4NCgkJCQl0ZCgNCgkJCQkJZklucHV0KCd0ZXh0JywgJ3Nt ZF9mZWF0X3RpdGxlJywgJGZlYXRfdGl0bGUsICcnLCAnJywgJycsICcnLCAnJywgJ3NtZF9m ZWF0X3RpdGxlJykNCgkJCQkpDQoJCQkpOw0KCQkJZWNobyB0cigNCgkJCQlmTGFiZWxDZWxs KGdUeHQoJ2Rlc2NyaXB0aW9uJyksICcnLCAnc21kX2ZlYXRfZGVzYycpLg0KCQkJCXRkKHRl eHRfYXJlYSgnc21kX2ZlYXRfZGVzYycsIDgwLCA0MDAsICRmZWF0X2Rlc2MsICdzbWRfZmVh dF9kZXNjJykpLg0KCQkJCXRkKGZJbnB1dCgnc3VibWl0JywgJycsIGdUeHQoJ3NhdmUnKSwg J3NtYWxsZXJib3gnKSkuDQoJCQkJaElucHV0KCdzbWRfZmVhdF9zZWFyY2hrZWVwJywgJycp Lg0KCQkJCWhJbnB1dCgnc21kX2ZlYXRfZmlsdGtlZXAnLCAnJykuDQoJCQkJaElucHV0KCdz bWRfZmVhdF9pZCcsICRzbWRfZmVhdF9pZCkuDQoJCQkJZUlucHV0KCRzbWRfZmVhdHVyZWRf ZXZlbnQpLg0KCQkJCXNJbnB1dCgnc21kX2ZlYXR1cmVkX3NhdmUnKQ0KCQkJKTsNCgkJfQ0K CQllY2hvIGVuZFRhYmxlKCk7DQoJCWVjaG8gJzwvZm9ybT4nOw0KDQoJCSRlZGJ0biA9IHNt YWxsKCdbJy5nVHh0KCdlZGl0JykuJ10nKTsNCg0KCQlpZiAoJG91dCkgew0KCQkJJHJvd3Mg PSBjb3VudCgkcnMpOw0KCQkJJHRibG91dCA9IGFycmF5KCk7DQoJCQkkYXR0cyA9ICcgY2xh c3M9InNtZF9mZWF0dXJlZF90YWJsZSBzbWRfY2xlYXIiIGlkPSJzbWRfJy4kZGlzcGxheS4n IiBhbGlnbj0iY2VudGVyIic7DQoNCgkJCSR0YmxvdXRbXSA9IGhlZChzbWRfZmVhdHVyZWRf Z1R4dCgnbWFuYWdlX2xibCcsIGFycmF5KCksICdyYXcnKSwgMywgJyBjbGFzcz0ic21kX2Ns ZWFyIicpOw0KCQkJZm9yICgkaWR4ID0gMDsgJGlkeCA8ICRyb3dzOyAkaWR4KyspIHsNCgkJ CQkkaXNmZWF0ID0gKGlzc2V0KCRvdXRbJGlkeF0pICYmIGFycmF5X2tleV9leGlzdHMoJG91 dFskaWR4XVswXSwgJGZlYXRsaXN0KSk7DQoJCQkJJGNlbGxjbGFzcyA9ICRpc2ZlYXQgPyAn IGNsYXNzPSJzbWRfZmVhdHVyZWQiJyA6ICcnOw0KCQkJCSRlZGxpbmsgPSAkaXNmZWF0ID8g JzxhIGNsYXNzPSJlZGxpbmsiIGhyZWY9IiMiIG9uY2xpY2s9InJldHVybiBzbWRfZmVhdHVy ZWRfZWRpdGtlZXAoXCcnLiRvdXRbJGlkeF1bMF0uJ1wnKTsiPicuJGVkYnRuLic8L2E+Jy5z cCA6ICcnOw0KCQkJCSRyb3dkYXRhID0gKGlzc2V0KCRvdXRbJGlkeF0pKSA/ICc8c3BhbiBu YW1lPSJzbWRfZmVhdF9uYW1lIiBjbGFzcz0ic21kX2hpZGRlbiI+Jy4kb3V0WyRpZHhdWzFd Lic8L3NwYW4+JyA6ICcnOw0KCQkJCSRyb3dkYXRhIC49ICRpc2ZlYXQgPyAnPHNwYW4gbmFt ZT0ic21kX2ZlYXRfbGFiZWwiIGNsYXNzPSJleHRyYSBzbWRfaGlkZGVuIj4nLiRvdXRbJGlk eF1bMl0uJzwvc3Bhbj4nIDogJyc7DQoJCQkJJHRibG91dFtdID0gKGlzc2V0KCRvdXRbJGlk eF0pKSA/ICc8ZGl2Jy4kY2VsbGNsYXNzLic+Jy4kZWRsaW5rLic8YSBocmVmPSIjIiBvbmNs aWNrPSJyZXR1cm4gc21kX2ZlYXR1cmVkX3NlbGVjdCh0aGlzLCBcJycuJG91dFskaWR4XVsw XS4nXCcpIj4nLiRvdXRbJGlkeF1bMV0uJzwvYT4nLiRyb3dkYXRhLic8L2Rpdj4nIDogJzxk aXY+PC9kaXY+JzsNCgkJCX0NCgkJCWVjaG8gdGFnKGpvaW4oIiIsJHRibG91dCksICdkaXYn LCAkYXR0cyk7DQoJCQllY2hvICc8ZGl2IGNsYXNzPSJzbWRfY2xlYXIiPjwvZGl2Pic7DQoJ CQlpZiAoJGRpc3BsYXk9PSdwYWdpbmF0ZWQnICYmICRkb19wYWcpIHsNCgkJCQllY2hvIG4u JzxkaXYgaWQ9IicuJHNtZF9mZWF0dXJlZF9ldmVudC4nX25hdmlnYXRpb24iIGNsYXNzPSJ0 eHAtbmF2aWdhdGlvbiI+Jy4NCgkJCQkJbi5uYXZfZm9ybSgkc21kX2ZlYXR1cmVkX2V2ZW50 LCAkcGFnZSwgJG51bVBhZ2VzLCAnJywgJycsICcnLCAnJywgJHRvdGFsLCAkbGltaXQpLg0K CQkJCQluLnBhZ2VieV9mb3JtKCRzbWRfZmVhdHVyZWRfZXZlbnQsICRzbWRfZmVhdHVyZWRf bGlzdF9wYWdlYnkpOw0KCQkJCQluLic8L2Rpdj4nOw0KCQkJfQ0KCQl9DQoNCgkJJHFzID0g YXJyYXkoDQoJCQkiZXZlbnQiID0+ICRzbWRfZmVhdHVyZWRfZXZlbnQsDQoJCSk7DQoNCgkJ JHFzVmFycyA9ICJpbmRleC5waHAiLmpvaW5fcXMoJHFzKTsNCgkJJHZlcmlmeVR4dCA9IHNt ZF9mZWF0dXJlZF9nVHh0KCd1bmZlYXR1cmVfY29uZmlybScpOw0KDQoJCWVjaG8gPDw8RU9T DQo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+DQovLyBDb25jYXRlbmF0ZSBjaGVj a2JveCBvcHRpb25zIGZvciBzdG9yYWdlDQpmdW5jdGlvbiBzbWRfZmVhdF9wcmVzdWIoKSB7 DQoJdmFyIHNtZF9vdXQgPSAiIjsNCglqUXVlcnkoIi5zbWRfZmVhdF90ZXh0aWxlIDpjaGVj a2JveCIpLmVhY2goZnVuY3Rpb24oKSB7DQoJCXNtZF9vdXQgKz0gKHRoaXMuY2hlY2tlZCkg PyAxIDogMDsNCgl9KTsNCglqUXVlcnkoIiNzbWRfZmVhdF90ZXh0aWxlIikudmFsKHNtZF9v dXQpOw0KCQlyZXR1cm4gdHJ1ZTsNCgl9DQoNCmZ1bmN0aW9uIHNtZF9mZWF0dXJlZF9zZWxl Y3Qob2JqLCBpZCkgew0KCW9iaiA9IGpRdWVyeShvYmopLnBhcmVudCgpOw0KDQoJLy8gTi5C LiBOZWdhdGl2ZSBsb2dpYyB1c2VkIGhlcmUgYmVjYXVzZSB3ZSdyZSBjaGVja2luZyB0aGUg Y2xhc3MgX2JlZm9yZV8gaXQncyBiZWVuIHRvZ2dsZWQNCgl2YXIgYWN0aW9uID0gKChvYmop Lmhhc0NsYXNzKCJzbWRfZmVhdHVyZWQiKSkgPyAncmVtb3ZlJyA6ICdhZGQnOw0KCWlmIChh Y3Rpb24gPT0gJ3JlbW92ZScpIHsNCgkJdmFyIHJldCA9IGNvbmZpcm0oJ3skdmVyaWZ5VHh0 fScpOw0KCQlpZiAocmV0ID09IGZhbHNlKSB7DQoJCQlyZXR1cm4gZmFsc2U7DQoJCX0NCgl9 DQoJalF1ZXJ5LnBvc3QoJ3skcXNWYXJzfScsIHsgc3RlcDogInNtZF9mZWF0dXJlZF90YWdp dCIsIHNtZF9mZWF0X2lkOiBpZCwgc21kX2ZlYXRfYWN0aW9uOiBhY3Rpb24gfSwNCgkJZnVu Y3Rpb24oZGF0YSkgew0KCQkJb2JqLnRvZ2dsZUNsYXNzKCdzbWRfZmVhdHVyZWQnKTsNCgkJ CWlmIChhY3Rpb24gPT0gJ2FkZCcpIHsNCgkJCQlvYmoucHJlcGVuZCgnPGEgY2xhc3M9ImVk bGluayIgaHJlZj0iIyIgb25jbGljaz0icmV0dXJuIHNtZF9mZWF0dXJlZF9lZGl0a2VlcChc JycraWQrJ1wnKSI+eyRlZGJ0bn08L2E+Jm5ic3A7Jyk7DQoJCQkJb2JqLmFwcGVuZCgnPHNw YW4gbmFtZT0ic21kX2ZlYXRfbGFiZWwiIGNsYXNzPSJleHRyYSBzbWRfaGlkZGVuIj48L3Nw YW4+Jyk7DQoJCQl9IGVsc2Ugew0KCQkJCW9iai5maW5kKCdhLmVkbGluaycpLnJlbW92ZSgp Ow0KCQkJCW9iai5maW5kKCdzcGFuLmV4dHJhJykucmVtb3ZlKCk7DQoJCQkJaWYgKGpRdWVy eSgiI3NtZF9mZWF0X3NlYXJjaCIpLnZhbCgpICE9ICcnKSBqUXVlcnkoIiNzbWRfZmVhdF9z ZWFyY2giKS5rZXl1cCgpOw0KCQkJCWlmIChqUXVlcnkoIiNzbWRfZmVhdF9maWx0IikudmFs KCkgIT0gJycpIGpRdWVyeSgiI3NtZF9mZWF0X2ZpbHQiKS5jaGFuZ2UoKTsNCgkJCX0NCgkJ fQ0KCSk7DQoJcmV0dXJuIGZhbHNlOw0KfQ0KDQpmdW5jdGlvbiBzbWRfZmVhdHVyZWRfZWRp dGtlZXAoaWQpIHsNCglqUXVlcnkoIiNzbWRfZmVhdF9lZGl0Zm9ybSBbbmFtZT0nc21kX2Zl YXRfc2VhcmNoa2VlcCddIikudmFsKGpRdWVyeSgiI3NtZF9mZWF0X3NlYXJjaCIpLnZhbCgp KTsNCglqUXVlcnkoIiNzbWRfZmVhdF9lZGl0Zm9ybSBbbmFtZT0nc21kX2ZlYXRfZmlsdGtl ZXAnXSIpLnZhbChqUXVlcnkoIiNzbWRfZmVhdHVyZWRfYnlsYWJlbCAjc21kX2ZlYXRfZmls dCBvcHRpb246c2VsZWN0ZWQiKS52YWwoKSk7DQoJalF1ZXJ5KCIjc21kX2ZlYXRfZWRpdGZv cm0gW25hbWU9J3NtZF9mZWF0X2lkJ10iKS52YWwoaWQpOw0KCWpRdWVyeSgiI3NtZF9mZWF0 X2VkaXRmb3JtIikuc3VibWl0KCk7DQp9DQoNCmZ1bmN0aW9uIHNtZF9mZWF0dXJlZF9zYXZl a2VlcCgpIHsNCglqUXVlcnkoIiNzbWRfZmVhdF9zYXZlZm9ybSBbbmFtZT0nc21kX2ZlYXRf c2VhcmNoa2VlcCddIikudmFsKGpRdWVyeSgiI3NtZF9mZWF0X3NlYXJjaCIpLnZhbCgpKTsN CglqUXVlcnkoIiNzbWRfZmVhdF9zYXZlZm9ybSBbbmFtZT0nc21kX2ZlYXRfZmlsdGtlZXAn XSIpLnZhbChqUXVlcnkoIiNzbWRfZmVhdHVyZWRfYnlsYWJlbCAjc21kX2ZlYXRfZmlsdCBv cHRpb246c2VsZWN0ZWQiKS52YWwoKSk7DQp9DQoNCmZ1bmN0aW9uIHNtZF9mZWF0X2ZpbHRl cihzZWxlY3RvciwgcXVlcnksIG5hbSwgY3NlbnNlLCBleGFjdCkgew0KCWlmICh7JGRpc3Bs YXlfanN9ID09IDEpIHsNCgkJdmFyIHF1ZXJ5ID0galF1ZXJ5LnRyaW0ocXVlcnkpOw0KCQlj c2Vuc2UgPSAoY3NlbnNlKSA/ICIiIDogImkiOw0KCQlxdWVyeSA9IHF1ZXJ5LnJlcGxhY2Uo LyAvZ2ksICd8Jyk7IC8vIGFkZCBPUiBmb3IgcmVnZXggcXVlcnkNCgkJaWYgKGV4YWN0KSB7 DQoJCQl0bXAgPSBxdWVyeS5zcGxpdCgnfCcpOw0KCQkJZm9yICh2YXIgaWR4ID0gMDsgaWR4 IDwgdG1wLmxlbmd0aDsgaWR4KyspIHsNCgkJCQl0bXBbaWR4XSA9ICdeJyt0bXBbaWR4XSsn JCc7DQoJCQl9DQoJCQlxdWVyeSA9IHRtcC5qb2luKCd8Jyk7DQoJCX0NCgkJdmFyIHJlID0g bmV3IFJlZ0V4cChxdWVyeSwgY3NlbnNlKTsNCgkJalF1ZXJ5KHNlbGVjdG9yKS5lYWNoKGZ1 bmN0aW9uKCkgew0KCQkJc2VsID0gKHR5cGVvZiBuYW09PSJ1bmRlZmluZWQiIHx8IG5hbT09 JycpID8galF1ZXJ5KHRoaXMpIDogalF1ZXJ5KHRoaXMpLmZpbmQoInNwYW5bbmFtZT0nIitu YW0rIiddIik7DQoJCQlpZiAocXVlcnkgPT0gJycpIHsNCgkJCQlpZiAoc2VsLmxlbmd0aCA9 PSAxICYmIHNlbC50ZXh0KCkgPT0gJycpIHsNCgkJCQkJalF1ZXJ5KHRoaXMpLnNob3coKTsN CgkJCQl9IGVsc2Ugew0KCQkJCQlqUXVlcnkodGhpcykuaGlkZSgpOw0KCQkJCX0NCgkJCX0g ZWxzZSB7DQoJCQkJaWYgKHNlbC50ZXh0KCkuc2VhcmNoKHJlKSA8IDApIHsNCgkJCQkJalF1 ZXJ5KHRoaXMpLmhpZGUoKTsNCgkJCQl9IGVsc2Ugew0KCQkJCQlqUXVlcnkodGhpcykuc2hv dygpOw0KCQkJCX0NCgkJCX0NCgkJfSk7DQoJfQ0KfQ0KDQpqUXVlcnkoZnVuY3Rpb24oKSB7 DQoJalF1ZXJ5KCIjc21kX2ZlYXRfc2VhcmNoIikua2V5dXAoZnVuY3Rpb24oZXZlbnQpIHsN CgkJalF1ZXJ5KCIjc21kX2ZlYXRfZmlsdCIpLnZhbCgnMCcpOyAvLyBDbGVhciB0aGUgZmls dGVyIGRyb3Bkb3duDQoJCS8vIGlmIGVzYyBpcyBwcmVzc2VkIG9yIG5vdGhpbmcgaXMgZW50 ZXJlZA0KCQlpZiAoZXZlbnQua2V5Q29kZSA9PSAyNyB8fCBqUXVlcnkodGhpcykudmFsKCkg PT0gJycpIHsNCgkJCWpRdWVyeSh0aGlzKS52YWwoJycpOw0KCQkJaWYgKHskZGlzcGxheV9q c30gPT0gMSkgew0KCQkJCWpRdWVyeSgiLnNtZF9mZWF0dXJlZF90YWJsZSBkaXY6bm90KC50 YmxoZWFkKSIpLnNob3coKTsNCgkJCX0NCgkJfSBlbHNlIHsNCgkJCXNtZF9mZWF0X2ZpbHRl cignLnNtZF9mZWF0dXJlZF90YWJsZSBkaXY6bm90KC50YmxoZWFkKScsIGpRdWVyeSh0aGlz KS52YWwoKSwgJ3NtZF9mZWF0X25hbWUnLCAwLCAwKTsNCgkJfQ0KCX0pOw0KCWlmICgneyRz bWRfZmVhdF9zZWFyY2hrZWVwfScgIT0gJycpIHsNCgkJalF1ZXJ5KCIjc21kX2ZlYXRfc2Vh cmNoIikua2V5dXAoKTsNCgl9DQoJalF1ZXJ5KCIjc21kX2ZlYXRfZmlsdCIpLmNoYW5nZShm dW5jdGlvbihldmVudCkgew0KCQlqUXVlcnkoIiNzbWRfZmVhdF9zZWFyY2giKS52YWwoJycp OyAvLyBFbXB0eSB0aGUgc2VhcmNoIGJveA0KCQlpZiAoalF1ZXJ5KHRoaXMpLnZhbCgpID09 ICcnKSB7DQoJCQlpZiAoeyRkaXNwbGF5X2pzfSA9PSAxKSB7DQoJCQkJalF1ZXJ5KCcuc21k X2ZlYXR1cmVkX3RhYmxlIGRpdjpub3QoLnRibGhlYWQpJykuc2hvdygpOw0KCQkJfQ0KCQl9 IGVsc2UgaWYgKGpRdWVyeSh0aGlzKS52YWwoKSA9PSAnc21kX3VubGFiZWxsZWQnKSB7DQoJ CQlzbWRfZmVhdF9maWx0ZXIoJy5zbWRfZmVhdHVyZWRfdGFibGUgZGl2Om5vdCgudGJsaGVh ZCknLCAnJywgJ3NtZF9mZWF0X2xhYmVsJywgMCwgMCk7DQoJCX0gZWxzZSB7DQoJCQlzbWRf ZmVhdF9maWx0ZXIoJy5zbWRfZmVhdHVyZWRfdGFibGUgZGl2Om5vdCgudGJsaGVhZCknLCBq UXVlcnkodGhpcykudmFsKCksICdzbWRfZmVhdF9sYWJlbCcsIDEsIDEpOw0KCQl9DQoJfSk7 DQoJaWYgKCd7JHNtZF9mZWF0X2ZpbHRrZWVwfScgIT0gJycpIHsNCgkJalF1ZXJ5KCIjc21k X2ZlYXRfZmlsdCIpLmNoYW5nZSgpOw0KCX0NCglpZiAoJ3skc21kX2ZlYXRfaWR9JyAhPSAn Jykgew0KCQlqUXVlcnkoIiNzbWRfZmVhdF9sYWJlbCIpLmZvY3VzKCk7DQoJCWpRdWVyeSgi I3NtZF9mZWF0X2xhYmVsY2hvb3NlIikuY2hhbmdlKGZ1bmN0aW9uKGV2ZW50KSB7DQoJCQlq UXVlcnkoIiNzbWRfZmVhdF9sYWJlbCIpLnZhbChqUXVlcnkodGhpcykudmFsKCkpOw0KCQl9 KTsNCgl9DQoJalF1ZXJ5KCIjc21kX2xvYWRpbmciKS5oaWRlKCk7DQoJalF1ZXJ5KCIjc21k X2NvbnRhaW5lciIpLnNob3coKTsNCn0pOw0KDQo8L3NjcmlwdD4NCjxzdHlsZSB0eXBlPSJ0 ZXh0L2NzcyI+DQouc21kX2hpZGRlbiB7DQoJZGlzcGxheTpub25lOw0KfQ0KLnNtZF9mZWF0 dXJlZCB7DQoJYmFja2dyb3VuZDojZmZjOw0KCWZvbnQtd2VpZ2h0OmJvbGQ7DQp9DQojc21k X2ZlYXR1cmVkX2NvbnRyb2xfcGFuZWwgew0KCWZvbnQtc2l6ZTo5MCU7DQoJbWFyZ2luOjAg YXV0byAyMHB4Ow0KCXBhZGRpbmc6N3B4IDhweDsNCgl3aWR0aDo0NTBweDsNCn0NCi5zbWRf ZmVhdHVyZWRfcHJlZiB7DQoJbWFyZ2luOjZweDsNCn0NCi5zbWRfZmVhdHVyZWRfc2F2ZSB7 DQoJZmxvYXQ6cmlnaHQ7DQp9DQouc21kX2ZlYXR1cmVkX3N1YnBhbmVsIHsNCglmbG9hdDps ZWZ0Ow0KCW1hcmdpbjowIDVweDsNCn0NCi5zbWRfZmVhdHVyZWRfdGFibGUgew0KCXdpZHRo OjgwMHB4Ow0KCW1hcmdpbjowIGF1dG8gODBweDsNCn0NCi5zbWRfY2xlYXIgew0KCWNsZWFy OmJvdGg7DQp9DQouc21kX2ZlYXR1cmVkX3RhYmxlIGRpdiB7DQoJZmxvYXQ6bGVmdDsNCgl3 aWR0aDp7JHNpemVzWzBdfXB4Ow0KCWhlaWdodDp7JHNpemVzWzFdfXB4Ow0KCWJvcmRlcjox cHggc29saWQgI2RkZDsNCglwYWRkaW5nOjRweDsNCglvdmVyZmxvdzpoaWRkZW47DQp9DQo8 L3N0eWxlPg0KRU9TOw0KCQllY2hvICc8L2Rpdj4nOw0KDQoJfSBlbHNlIHsNCgkJLy8gVGFi bGUgbm90IGluc3RhbGxlZA0KCQkkYnRuSW5zdGFsbCA9ICc8Zm9ybSBtZXRob2Q9InBvc3Qi IGFjdGlvbj0iP2V2ZW50PScuJHNtZF9mZWF0dXJlZF9ldmVudC5hLidzdGVwPXNtZF9mZWF0 dXJlZF90YWJsZV9pbnN0YWxsIiBzdHlsZT0iZGlzcGxheTppbmxpbmUiPicuZklucHV0KCdz dWJtaXQnLCAnc3VibWl0Jywgc21kX2ZlYXR1cmVkX2dUeHQoJ3RibF9pbnN0YWxsX2xibCcp LCAnc21hbGxlcmJveCcpLic8L2Zvcm0+JzsNCgkJJGJ0blN0eWxlID0gJyBzdHlsZT0iYm9y ZGVyOjA7aGVpZ2h0OjI1cHgiJzsNCgkJZWNobyBzdGFydFRhYmxlKCdsaXN0Jyk7DQoJCWVj aG8gdHIodGRhKHN0cm9uZyhzbWRfZmVhdHVyZWRfZ1R4dCgncHJlZnNfc29tZV90YmwnKSku YnIuYnINCgkJCQkuc21kX2ZlYXR1cmVkX2dUeHQoJ3ByZWZzX3NvbWVfZXhwbGFpbicpLmJy LmJyDQoJCQkJLnNtZF9mZWF0dXJlZF9nVHh0KCdwcmVmc19zb21lX29wdHMnKSwgJyBjb2xz cGFuPSIyIicpDQoJCSk7DQoJCWVjaG8gdHIodGRhKCRidG5JbnN0YWxsLCAkYnRuU3R5bGUp KTsNCgkJZWNobyBlbmRUYWJsZSgpOw0KCX0NCn0NCg0KLy8gLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KZnVuY3Rpb24g c21kX2ZlYXR1cmVkX2NoYW5nZV9wYWdlYnkoKSB7DQoJZ2xvYmFsICRzbWRfZmVhdHVyZWRf ZXZlbnQ7DQoJDQoJZXZlbnRfY2hhbmdlX3BhZ2VieSgkc21kX2ZlYXR1cmVkX2V2ZW50KTsN CglzbWRfZmVhdHVyZWRfbGlzdCgpOw0KfQ0KDQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0NCi8vIFVwZGF0ZSB0aGUgcGFzc2VkIHJlY29yZCBpbiB0aGUgZmVhdHVyZWQgdGFibGUN CmZ1bmN0aW9uIHNtZF9mZWF0dXJlZF9zYXZlKCkgew0KCWdsb2JhbCAkc21kX2ZlYXR1cmVk X2V2ZW50LCAkc21kX2ZlYXR1cmVkX3RleHRpbGVfb3B0czsNCg0KCWV4dHJhY3QoZ3BzYShh cnJheSgnc21kX2ZlYXRfaWQnLCAnc21kX2ZlYXRfbGFiZWwnLCAnc21kX2ZlYXRfdGl0bGUn LCAnc21kX2ZlYXRfZGVzYycpKSk7DQoJYXNzZXJ0X2ludCgkc21kX2ZlYXRfaWQpOw0KDQoJ JHNtZF9mZWF0X3RpdGxldGlsZSA9ICRzbWRfZmVhdF90aXRsZTsNCgkkc21kX2ZlYXRfZGVz Y3RpbGUgPSAkc21kX2ZlYXRfZGVzYzsNCgkkc21kX2ZlYXRfbGFiZWwgPSBkb1NsYXNoKCRz bWRfZmVhdF9sYWJlbCk7DQoNCglpZiAoc21kX2ZlYXR1cmVkX3RhYmxlX2V4aXN0KCkpIHsN CgkJQGluY2x1ZGVfb25jZSB0eHBhdGguJy9saWIvY2xhc3NUZXh0aWxlLnBocCc7DQoJCUBp bmNsdWRlX29uY2UgdHhwYXRoLicvcHVibGlzaC5waHAnOw0KDQoJCSR0ZXh0aWxlb25vZmYg PSBzbWRfZmVhdHVyZWRfcHJlZl9leHBsb2RlKCRzbWRfZmVhdHVyZWRfdGV4dGlsZV9vcHRz LCBnZXRfcHJlZignc21kX2ZlYXR1cmVkX3RleHRpbGUnLCAnMTEnKSk7DQoNCgkJaWYgKGNs YXNzX2V4aXN0cygnVGV4dGlsZScpKSB7DQoJCQkkdGV4dGlsZSA9IG5ldyBUZXh0aWxlKCk7 DQoJCQkkc21kX2ZlYXRfdGl0bGV0aWxlID0gZG9TbGFzaCgoKCR0ZXh0aWxlb25vZmZbJ3Rp dGxlJ10gPT0gJzEnKSA/ICR0ZXh0aWxlLT5UZXh0aWxlVGhpcyhwYXJzZSgkc21kX2ZlYXRf dGl0bGUpKSA6IHBhcnNlKCRzbWRfZmVhdF90aXRsZSkpKTsNCgkJCSRzbWRfZmVhdF9kZXNj dGlsZSA9IGRvU2xhc2goKCgkdGV4dGlsZW9ub2ZmWydkZXNjJ10gPT0gJzEnKSA/ICR0ZXh0 aWxlLT5UZXh0aWxlVGhpcyhwYXJzZSgkc21kX2ZlYXRfZGVzYykpIDogcGFyc2UoJHNtZF9m ZWF0X2Rlc2MpKSk7DQoJCX0NCg0KCQkkc21kX2ZlYXRfdGl0bGUgPSBkb1NsYXNoKCRzbWRf ZmVhdF90aXRsZSk7DQoJCSRzbWRfZmVhdF9kZXNjID0gZG9TbGFzaCgkc21kX2ZlYXRfZGVz Yyk7DQoJCSRyZXQgPSBzYWZlX3Vwc2VydChTTURfRkVBVCwgImxhYmVsPSckc21kX2ZlYXRf bGFiZWwnLCBmZWF0X3RpdGxlPSckc21kX2ZlYXRfdGl0bGUnLCBmZWF0X3RpdGxlX2h0bWw9 JyRzbWRfZmVhdF90aXRsZXRpbGUnLCBkZXNjcmlwdGlvbj0nJHNtZF9mZWF0X2Rlc2MnLCBk ZXNjX2h0bWw9JyRzbWRfZmVhdF9kZXNjdGlsZSciLCAiZmVhdF9pZD0nJHNtZF9mZWF0X2lk JyIpOw0KCQl1bnNldCgkX1BPU1RbJ3NtZF9mZWF0X2lkJ10pOw0KCX0NCg0KCXNtZF9mZWF0 dXJlZF9saXN0KHNtZF9mZWF0dXJlZF9nVHh0KCdzYXZlZCcpKTsNCn0NCg0KLy8gLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tDQovLyBDcmVhdGUgYW4gZW1wdHkgZW50cnkgaW4gdGhlIGZl YXR1cmVkIHRhYmxlIG9yIGRlc3Ryb3kgaXQNCmZ1bmN0aW9uIHNtZF9mZWF0dXJlZF90YWdp dCgpIHsNCglnbG9iYWwgJHNtZF9mZWF0dXJlZF9ldmVudDsNCglleHRyYWN0KGRvU2xhc2go Z3BzYShhcnJheSgnc21kX2ZlYXRfaWQnLCAnc21kX2ZlYXRfYWN0aW9uJykpKSk7DQoNCglh c3NlcnRfaW50KCRzbWRfZmVhdF9pZCk7DQoNCglpZiAoJHNtZF9mZWF0X2FjdGlvbiA9PSAn YWRkJykgew0KCQkkcmV0ID0gc2FmZV91cHNlcnQoU01EX0ZFQVQsICJsYWJlbD0nJyIsICJm ZWF0X2lkPSckc21kX2ZlYXRfaWQnIik7DQoJfSBlbHNlIGlmICgkc21kX2ZlYXRfYWN0aW9u ID09ICdyZW1vdmUnKSB7DQoJCSRyZXQgPSBzYWZlX2RlbGV0ZShTTURfRkVBVCwgImZlYXRf aWQ9JyRzbWRfZmVhdF9pZCciKTsNCgl9DQp9DQoNCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCmZ1bmN0aW9uIHNt ZF9mZWF0dXJlZF9wcmVmc2F2ZSgpIHsNCglleHRyYWN0KGdwc2EoYXJyYXkoJ3NtZF9mZWF0 X2Rpc3BsYXknLCAnc21kX2ZlYXRfc29ydCcsICdzbWRfZmVhdF9zb3J0ZGlyJywgJ3NtZF9m ZWF0X2JveF94JywgJ3NtZF9mZWF0X2JveF95JywgJ3NtZF9mZWF0X3RleHRpbGUnKSkpOw0K CSRtc2cgPSAnJzsNCg0KCWlmICgkc21kX2ZlYXRfZGlzcGxheSkgew0KCQlzZXRfcHJlZigi c21kX2ZlYXR1cmVkX2Rpc3BsYXkiLCAkc21kX2ZlYXRfZGlzcGxheSwgJ3NtZF9mZWF0dXJl ZCcsIFBSRUZfSElEREVOLCAndGV4dF9pbnB1dCcsIDAsIFBSRUZfUFJJVkFURSk7DQoJCSRt c2cgPSBnVHh0KCdwcmVmZXJlbmNlc19zYXZlZCcpOw0KCX0NCg0KCWlmICgkc21kX2ZlYXRf c29ydCAmJiAkc21kX2ZlYXRfc29ydGRpcikgew0KCQkkc29ydF9jcml0ID0gJHNtZF9mZWF0 X3NvcnQuJyAnLiAkc21kX2ZlYXRfc29ydGRpcjsNCgkJc2V0X3ByZWYoInNtZF9mZWF0dXJl ZF9zb3J0IiwgJHNvcnRfY3JpdCwgJ3NtZF9mZWF0dXJlZCcsIFBSRUZfSElEREVOLCAndGV4 dF9pbnB1dCcsIDAsIFBSRUZfUFJJVkFURSk7DQoJCSRtc2cgPSBnVHh0KCdwcmVmZXJlbmNl c19zYXZlZCcpOw0KCX0NCg0KCWlmICgkc21kX2ZlYXRfYm94X3ggJiYgJHNtZF9mZWF0X2Jv eF95KSB7DQoJCSRkaW1zID0gJHNtZF9mZWF0X2JveF94Lid4Jy4kc21kX2ZlYXRfYm94X3k7 DQoJCXNldF9wcmVmKCJzbWRfZmVhdHVyZWRfYm94X3NpemUiLCAkZGltcywgJ3NtZF9mZWF0 dXJlZCcsIFBSRUZfSElEREVOLCAndGV4dF9pbnB1dCcsIDAsIFBSRUZfUFJJVkFURSk7DQoJ CSRtc2cgPSBnVHh0KCdwcmVmZXJlbmNlc19zYXZlZCcpOw0KCX0NCg0KCWlmICgkc21kX2Zl YXRfdGV4dGlsZSkgew0KCQlzZXRfcHJlZigic21kX2ZlYXR1cmVkX3RleHRpbGUiLCAkc21k X2ZlYXRfdGV4dGlsZSwgJ3NtZF9mZWF0dXJlZCcsIFBSRUZfSElEREVOLCAndGV4dF9pbnB1 dCcsIDAsIFBSRUZfUFJJVkFURSk7DQoJCSRtc2cgPSBnVHh0KCdwcmVmZXJlbmNlc19zYXZl ZCcpOw0KCX0NCg0KCXNtZF9mZWF0dXJlZF9saXN0KCRtc2cpOw0KfQ0KDQovLyAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0NCi8vIFNwbGl0IGEgbXVsdGktY2hhciBwcmVmZXJlbmNlIHZh bHVlIGludG8gYW4gYXJyYXkgb2Yga2V5cy92YWx1ZXMuDQovLyBOb3RlOiB2YWx1ZSBpcyBw YXNzZWQgaW4gYW5kIG5vdCByZWFkIGRpcmVjdGx5IGZyb20gdGhlIHByZWZzIGFycmF5IGlu IHRoaXMgZnVuY3Rpb24gLSBpbnRlbnRpb25hbGx5DQpmdW5jdGlvbiBzbWRfZmVhdHVyZWRf cHJlZl9leHBsb2RlKCRpdGVtcywgJG9wdHZhbCkgew0KCSRvbm9mZiA9IGFycmF5X3ZhbHVl cyhwcmVnX3NwbGl0KCcvLycsICRvcHR2YWwsIC0xLCBQUkVHX1NQTElUX05PX0VNUFRZKSk7 DQoJJG91dCA9IGFycmF5KCk7DQoJZm9yZWFjaCgkaXRlbXMgYXMgJGtleSA9PiAkdmFsdWUp IHsNCgkJJG91dFsoc3RyaW5nKSR2YWx1ZV0gPSAkb25vZmZbJGtleV07DQoJfQ0KCXJldHVy biAkb3V0Ow0KfQ0KDQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpmdW5jdGlvbiBzbWRfZmVhdHVyZWRfc2F2ZV9w YW5lX3N0YXRlKCkgew0KCSRwYW5lcyA9IGFycmF5KCdzbWRfZmVhdHVyZWRfY3BhbmVsJyk7 DQoJJHBhbmUgPSBncHMoJ3BhbmUnKTsNCglpZiAoaW5fYXJyYXkoJHBhbmUsICRwYW5lcykp DQoJew0KCQlzZXRfcHJlZigicGFuZV97JHBhbmV9X3Zpc2libGUiLCAoZ3BzKCd2aXNpYmxl JykgPT0gJ3RydWUnID8gJzEnIDogJzAnKSwgJ3NtZF9mZWF0dXJlZCcsIFBSRUZfSElEREVO LCAneWVzbm9yYWRpbycsIDAsIFBSRUZfUFJJVkFURSk7DQoJCXNlbmRfeG1sX3Jlc3BvbnNl KCk7DQoJfSBlbHNlIHsNCgkJc2VuZF94bWxfcmVzcG9uc2UoYXJyYXkoJ2h0dHAtc3RhdHVz JyA9PiAnNDAwIEJhZCBSZXF1ZXN0JykpOw0KCX0NCn0NCg0KLy8gLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tDQovLyBBZGQgZmVhdHVyZWQgdGFibGUgaWYgbm90IGFscmVhZHkgaW5zdGFs bGVkDQpmdW5jdGlvbiBzbWRfZmVhdHVyZWRfdGFibGVfaW5zdGFsbCgkc2hvd3BhbmU9JzEn KSB7DQoJJEdMT0JBTFNbJ3R4cF9lcnJfY291bnQnXSA9IDA7DQoJJHJldCA9ICcnOw0KCSRz cWwgPSBhcnJheSgpOw0KCSRzcWxbXSA9ICJDUkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyBg Ii5QRlguU01EX0ZFQVQuImAgKA0KCQlgZmVhdF9pZGAgaW50KDgpIE5PVCBOVUxMIGRlZmF1 bHQgJzAnLA0KCQlgbGFiZWxgIHZhcmNoYXIoMzIpIE5VTEwgZGVmYXVsdCAnJywNCgkJYGZl YXRfdGl0bGVgIHZhcmNoYXIoMjU1KSBOVUxMIGRlZmF1bHQgJycsDQoJCWBmZWF0X3RpdGxl X2h0bWxgIHZhcmNoYXIoMjU1KSBOVUxMIGRlZmF1bHQgJycsDQoJCWBkZXNjcmlwdGlvbmAg dGV4dCBOVUxMIGRlZmF1bHQgJycsDQoJCWBkZXNjX2h0bWxgIHRleHQgTlVMTCBkZWZhdWx0 ICcnLA0KCQlQUklNQVJZIEtFWSAoYGZlYXRfaWRgKQ0KCSkgRU5HSU5FPU15SVNBTSI7DQoN CglpZihncHMoJ2RlYnVnJykpIHsNCgkJZG1wKCRzcWwpOw0KCX0NCglmb3JlYWNoICgkc3Fs IGFzICRxcnkpIHsNCgkJJHJldCA9IHNhZmVfcXVlcnkoJHFyeSk7DQoJCWlmICgkcmV0PT09 ZmFsc2UpIHsNCgkJCSRHTE9CQUxTWyd0eHBfZXJyX2NvdW50J10rKzsNCgkJCWVjaG8gIjxi PiIuJEdMT0JBTFNbJ3R4cF9lcnJfY291bnQnXS4iLjwvYj4gIi5teXNxbF9lcnJvcigpLiI8 YnIgLz5cbiI7DQoJCQllY2hvICI8IS0tXG4gJHFyeSBcbi0tPlxuIjsNCgkJfQ0KCX0NCg0K CS8vIEhhbmRsZSB1cGdyYWRlcyBmcm9tIHByZXZpb3VzIHZlcnNpb25zDQoJJGNvbHMgPSBn ZXRUaGluZ3MoJ2Rlc2NyaWJlIGAnLlBGWC5TTURfRkVBVC4nYCcpOw0KCWlmICghaW5fYXJy YXkoJ2ZlYXRfaWQnLCAkY29scykpIHsNCgkJc2FmZV9hbHRlcihTTURfRkVBVCwgIkNIQU5H RSBgaWRgIGBmZWF0X2lkYCBpbnQoIDggKSBOT1QgTlVMTCBERUZBVUxUICcwJyIpOw0KCX0N CglpZiAoIWluX2FycmF5KCdmZWF0X3RpdGxlJywgJGNvbHMpKSB7DQoJCXNhZmVfYWx0ZXIo U01EX0ZFQVQsICJBREQgYGZlYXRfdGl0bGVgIHZhcmNoYXIoIDI1NSApIE5VTEwgREVGQVVM VCAnJyBBRlRFUiBgbGFiZWxgIik7DQoJfQ0KCWlmICghaW5fYXJyYXkoJ2ZlYXRfdGl0bGVf aHRtbCcsICRjb2xzKSkgew0KCQlzYWZlX2FsdGVyKFNNRF9GRUFULCAiQUREIGBmZWF0X3Rp dGxlX2h0bWxgIHZhcmNoYXIoIDI1NSApIE5VTEwgREVGQVVMVCAnJyBBRlRFUiBgZmVhdF90 aXRsZWAiKTsNCgl9DQoNCgkvLyBTcGl0IG91dCByZXN1bHRzDQoJaWYgKCRHTE9CQUxTWyd0 eHBfZXJyX2NvdW50J10gPT0gMCkgew0KCQlpZiAoJHNob3dwYW5lKSB7DQoJCQkkbWVzc2Fn ZSA9IHNtZF9mZWF0dXJlZF9nVHh0KCd0YmxfaW5zdGFsbGVkJyk7DQoJCQlzbWRfZmVhdHVy ZWRfbGlzdCgkbWVzc2FnZSk7DQoJCX0NCgl9IGVsc2Ugew0KCQlpZiAoJHNob3dwYW5lKSB7 DQoJCQkkbWVzc2FnZSA9IHNtZF9mZWF0dXJlZF9nVHh0KCd0Ymxfbm90X2luc3RhbGxlZCcp Ow0KCQkJc21kX2ZlYXR1cmVkX2xpc3QoJG1lc3NhZ2UpOw0KCQl9DQoJfQ0KfQ0KDQovLyAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi8vIERyb3AgdGFibGUgaWYgaW4gZGF0YWJhc2UN CmZ1bmN0aW9uIHNtZF9mZWF0dXJlZF90YWJsZV9yZW1vdmUoKSB7DQoJJHJldCA9ICcnOw0K CSRzcWwgPSBhcnJheSgpOw0KCSRHTE9CQUxTWyd0eHBfZXJyX2NvdW50J10gPSAwOw0KCWlm IChzbWRfZmVhdHVyZWRfdGFibGVfZXhpc3QoKSkgew0KCQkkc3FsW10gPSAiRFJPUCBUQUJM RSBJRiBFWElTVFMgIiAuUEZYLlNNRF9GRUFULiAiOyAiOw0KCQlpZihncHMoJ2RlYnVnJykp IHsNCgkJCWRtcCgkc3FsKTsNCgkJfQ0KCQlmb3JlYWNoICgkc3FsIGFzICRxcnkpIHsNCgkJ CSRyZXQgPSBzYWZlX3F1ZXJ5KCRxcnkpOw0KCQkJaWYgKCRyZXQ9PT1mYWxzZSkgew0KCQkJ CSRHTE9CQUxTWyd0eHBfZXJyX2NvdW50J10rKzsNCgkJCQllY2hvICI8Yj4iLiRHTE9CQUxT Wyd0eHBfZXJyX2NvdW50J10uIi48L2I+ICIubXlzcWxfZXJyb3IoKS4iPGJyIC8+XG4iOw0K CQkJCWVjaG8gIjwhLS1cbiAkcXJ5IFxuLS0+XG4iOw0KCQkJfQ0KCQl9DQoJfQ0KCWlmICgk R0xPQkFMU1sndHhwX2Vycl9jb3VudCddID09IDApIHsNCgkJJG1lc3NhZ2UgPSBzbWRfZmVh dHVyZWRfZ1R4dCgndGJsX3JlbW92ZWQnKTsNCgl9IGVsc2Ugew0KCQkkbWVzc2FnZSA9IHNt ZF9mZWF0dXJlZF9nVHh0KCd0Ymxfbm90X3JlbW92ZWQnKTsNCgkJc21kX2ZlYXR1cmVkX2xp c3QoJG1lc3NhZ2UpOw0KCX0NCn0NCg0KLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpm dW5jdGlvbiBzbWRfZmVhdHVyZWRfdGFibGVfZXhpc3QoJGFsbD0nJykgew0KCWlmICgkYWxs KSB7DQoJCSR0YmxzID0gYXJyYXkoU01EX0ZFQVQgPT4gNik7DQoJCSRvdXQgPSBjb3VudCgk dGJscyk7DQoJCWZvcmVhY2ggKCR0YmxzIGFzICR0YmwgPT4gJGNvbHMpIHsNCgkJCWlmIChn cHMoJ2RlYnVnJykpIHsNCgkJCQllY2hvICIrKyBUQUJMRSAiLiR0YmwuIiBIQVMgIi5jb3Vu dChAc2FmZV9zaG93KCdjb2x1bW5zJywgJHRibCkpLiIgQ09MVU1OUzsgUkVRVUlSRVMgIi4k Y29scy4iICsrIi5icjsNCgkJCX0NCgkJCWlmIChjb3VudChAc2FmZV9zaG93KCdjb2x1bW5z JywgJHRibCkpID09ICRjb2xzKSB7DQoJCQkJJG91dC0tOw0KCQkJfQ0KCQl9DQoJCXJldHVy biAoJG91dD09PTApID8gMSA6IDA7DQoJfSBlbHNlIHsNCgkJaWYgKGdwcygnZGVidWcnKSkg ew0KCQkJZWNobyAiKysgVEFCTEUgIi5TTURfRkVBVC4iIEhBUyAiLmNvdW50KEBzYWZlX3No b3coJ2NvbHVtbnMnLCBTTURfRkVBVCkpLiIgQ09MVU1OUzsiOw0KCQl9DQoJCXJldHVybihA c2FmZV9zaG93KCdjb2x1bW5zJywgU01EX0ZFQVQpKTsNCgl9DQp9DQoNCi8vICoqKioqKioq KioqKioqKioNCi8vIFBVQkxJQyBTSURFIFRBR1MNCi8vICoqKioqKioqKioqKioqKioNCi8v IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KZnVuY3Rpb24gc21kX2ZlYXR1cmVkKCRhdHRz LCAkdGhpbmcpIHsNCglnbG9iYWwgJHNtZF9mZWF0dXJlZF9pbmZvLCAkc21kX3ByaW9yX2Zl YXR1cmVkLCAkcHJlZnM7DQoNCglleHRyYWN0KGxBdHRzKGFycmF5KA0KCQknbGFiZWwnICAg ID0+ICcnLA0KCQkndW5sYWJlbCcgID0+ICdGZWF0dXJlZCcsDQoJCSdsYWJlbHRhZycgPT4g JycsDQoJCSd0aW1lJyAgICAgPT4gJ3Bhc3QnLA0KCQknc3RhdHVzJyAgID0+ICc0LDUnLA0K CQknc2VjdGlvbicgID0+ICcnLA0KCQknbGltaXQnICAgID0+ICcnLA0KCQknc29ydCcgICAg ID0+ICcnLA0KCQknZm9ybScgICAgID0+ICcnLA0KCQknd3JhcHRhZycgID0+ICcnLA0KCQkn YnJlYWsnICAgID0+ICcnLA0KCQknY2xhc3MnICAgID0+ICcnLA0KCQknaHRtbF9pZCcgID0+ ICcnLA0KCSksJGF0dHMpKTsNCg0KCWlmIChpc3NldCgkYXR0c1snbGFiZWwnXSkpIHsNCgkJ aWYgKCRsYWJlbCkgew0KCQkJJHdoZXJlID0gIkJJTkFSWSBsYWJlbCBSRUdFWFAgJyIuJGF0 dHNbJ2xhYmVsJ10uIiciOw0KCQl9IGVsc2Ugew0KCQkJJHdoZXJlID0gImxhYmVsPScnIjsN CgkJfQ0KCQl1bnNldCgkYXR0c1snbGFiZWwnXSk7DQoJfSBlbHNlIHsNCgkJLy8gSWYgbm8g bGFiZWwgYXR0cmlidXRlIGhhcyBiZWVuIGdpdmVuLCB0cmVhdCB0aGlzIGFzICdhbGwgZmVh dHVyZWQgaXRlbXMnDQoJCSRpZHMgPSBzYWZlX2NvbHVtbignZmVhdF9pZCcsIFNNRF9GRUFU LCAnMT0xJyk7DQoJCSRpZHMgPSBqb2luKCInLCciLCBkb1NsYXNoKCRpZHMpKTsNCgkJJHdo ZXJlID0gInNtZGZlYXQuZmVhdF9pZCBJTiAoJyRpZHMnKSI7DQoJfQ0KDQoJLy8gRXhjbHVk ZSBwcmV2aW91c2x5IHNlZW4gYXJ0aWNsZXMNCglpZiAoIWVtcHR5KCRzbWRfcHJpb3JfZmVh dHVyZWQpKSB7DQoJCSR3aGVyZSAuPSAnIEFORCBzbWRmZWF0LmZlYXRfaWQgTk9UIElOKCcg LiBqb2luKCcsJywgJHNtZF9wcmlvcl9mZWF0dXJlZCkgLiAnKSc7DQoJfQ0KDQoJaWYgKCR0 aW1lKSB7DQoJCXN3aXRjaCAoJHRpbWUpIHsNCgkJCWNhc2UgJ2FueSc6DQoJCQkJYnJlYWs7 DQoJCQljYXNlICdmdXR1cmUnOg0KCQkJCSR3aGVyZSAuPSAiIEFORCBQb3N0ZWQgPiBub3co KSI7DQoJCQkJYnJlYWs7DQoJCQlkZWZhdWx0Og0KCQkJCSR3aGVyZSAuPSAiIEFORCBQb3N0 ZWQgPD0gbm93KCkiOw0KCQl9DQoJCWlmICghJHByZWZzWydwdWJsaXNoX2V4cGlyZWRfYXJ0 aWNsZXMnXSkgew0KCQkJJHdoZXJlIC49ICIgQU5EIChub3coKSA8PSBFeHBpcmVzIE9SIEV4 cGlyZXMgPSAiLk5VTExEQVRFVElNRS4iKSI7DQoJCX0NCgkJdW5zZXQoJGF0dHNbJ3RpbWUn XSk7DQoJfQ0KDQoJaWYgKCRzdGF0dXMpIHsNCgkJJHdoZXJlIC49ICcgQU5EIFN0YXR1cyBp biAoJy5qb2luKCcsJywgZG9fbGlzdCgkc3RhdHVzKSkuJyknOw0KCQl1bnNldCgkYXR0c1sn c3RhdHVzJ10pOw0KCX0NCg0KCWlmICgkc2VjdGlvbikgew0KCQkkd2hlcmUgLj0gIiBBTkQg U2VjdGlvbiBpbiAoJyIuam9pbigiJywnIiwgZG9fbGlzdCgkc2VjdGlvbikpLiInKSI7DQoJ CXVuc2V0KCRhdHRzWydzZWN0aW9uJ10pOw0KCX0NCg0KCWlmICgkc29ydCkgew0KCQkkd2hl cmUgLj0nIE9SREVSIEJZICcuJHNvcnQ7DQoJCXVuc2V0KCRhdHRzWydzb3J0J10pOw0KCX0N Cg0KCWlmICgkbGltaXQpIHsNCgkJJHdoZXJlIC49JyBMSU1JVCAnLiRsaW1pdDsNCgkJdW5z ZXQoJGF0dHNbJ2xpbWl0J10pOw0KCX0NCg0KCS8vIERvbid0IHBhc3MgdGhlIHJlbWFpbmlu ZyBhdHRyaWJ1dGVzIHdlJ3ZlIGFscmVhZHkgaGFuZGxlZCBvbnRvIHRoZSBhcnRpY2xlIHRh Zw0KCXVuc2V0KA0KCQkkYXR0c1snbGFiZWwnXSwNCgkJJGF0dHNbJ3VubGFiZWwnXSwNCgkJ JGF0dHNbJ2xhYmVsdGFnJ10sDQoJCSRhdHRzWyd3cmFwdGFnJ10sDQoJCSRhdHRzWydicmVh ayddLA0KCQkkYXR0c1snY2xhc3MnXSwNCgkJJGF0dHNbJ2h0bWxfaWQnXQ0KCSk7DQoNCgkk cnMgPSBnZXRSb3dzKCdTRUxFQ1QgKiwgdW5peF90aW1lc3RhbXAoUG9zdGVkKSBhcyB1UG9z dGVkLCB1bml4X3RpbWVzdGFtcChFeHBpcmVzKSBhcyB1RXhwaXJlcywgdW5peF90aW1lc3Rh bXAoTGFzdE1vZCkgYXMgdUxhc3RNb2QgRlJPTSAnLlBGWC4ndGV4dHBhdHRlcm4gQVMgdHhw IExFRlQgSk9JTiAnLlBGWC5TTURfRkVBVC4nIEFTIHNtZGZlYXQgT04gdHhwLklEPXNtZGZl YXQuZmVhdF9pZCBXSEVSRSAnLiR3aGVyZSk7DQoNCgkkb3V0ID0gYXJyYXkoKTsNCglpZiAo JHJzKSB7DQoJCWZvcmVhY2ggKCRycyBhcyAkcm93KSB7DQoJCQkkc21kX2ZlYXR1cmVkX2lu Zm9bJ2xhYmVsJ10gPSAkcm93WydsYWJlbCddOw0KCQkJJHNtZF9mZWF0dXJlZF9pbmZvWyd0 aXRsZSddID0gJHJvd1snZmVhdF90aXRsZV9odG1sJ107DQoJCQkkc21kX2ZlYXR1cmVkX2lu Zm9bJ2Rlc2NyaXB0aW9uJ10gPSAkcm93WydkZXNjX2h0bWwnXTsNCgkJCSRhdHRzWydpZCdd ID0gJHJvd1snSUQnXTsNCgkJCSRhcnRvdXQgPSBhcnRpY2xlKCRhdHRzLCAkdGhpbmcpOw0K DQoJCQlpZiAoJGFydG91dCkgew0KCQkJCSRzbWRfcHJpb3JfZmVhdHVyZWRbXSA9ICRyb3db J0lEJ107DQoJCQkJJG91dFtdID0gJGFydG91dDsNCgkJCX0NCgkJfQ0KCX0NCglpZiAoJG91 dCkgew0KCQlyZXR1cm4gKCgkbGFiZWx0YWcpID8gZG9MYWJlbCggKCAoJGxhYmVsID09ICcn KSA/ICR1bmxhYmVsIDogJGxhYmVsKSwgJGxhYmVsdGFnICkgOiAnJykNCgkJCS5kb1dyYXAo JG91dCwgJHdyYXB0YWcsICRicmVhaywgJGNsYXNzLCAnJywgJycsICcnLCAkaHRtbF9pZCk7 DQoJfQ0KCXJldHVybiAnJzsNCn0NCg0KLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpm dW5jdGlvbiBzbWRfdW5mZWF0dXJlZCgkYXR0cywgJHRoaW5nKSB7DQoJZ2xvYmFsICRzbWRf cHJpb3JfZmVhdHVyZWQ7DQoNCgkkd2hlcmUgPSAiMT0xIjsNCg0KCS8vIEV4Y2x1ZGUgcHJl dmlvdXNseSBzZWVuIGFydGljbGVzDQoJaWYgKCFlbXB0eSgkc21kX3ByaW9yX2ZlYXR1cmVk KSkgew0KCQkkd2hlcmUgLj0gJyBBTkQgaWQgTk9UIElOKCcgLiBqb2luKCcsJywgJHNtZF9w cmlvcl9mZWF0dXJlZCkgLiAnKSc7DQoJfQ0KDQoJJHJzID0gc2FmZV9jb2x1bW4oJ0lEJywg J3RleHRwYXR0ZXJuJywgJHdoZXJlKTsNCgkkYXR0c1snaWQnXSA9IGpvaW4oJywnLCAkcnMp Ow0KCSRvdXQgPSBhcnRpY2xlKCRhdHRzLCAkdGhpbmcpOw0KDQoJcmV0dXJuICRvdXQ7DQp9 DQoNCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KZnVuY3Rpb24gc21kX2ZlYXR1cmVk X2luZm8oJGF0dHMpIHsNCglnbG9iYWwgJHNtZF9mZWF0dXJlZF9pbmZvOw0KDQoJZXh0cmFj dChsQXR0cyhhcnJheSgNCgkJJ2l0ZW0nID0+ICcnLA0KCSksJGF0dHMpKTsNCg0KCXJldHVy biAoaXNzZXQoJHNtZF9mZWF0dXJlZF9pbmZvWyRpdGVtXSkgPyAkc21kX2ZlYXR1cmVkX2lu Zm9bJGl0ZW1dIDogJycpOw0KfQ0KDQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCmZ1 bmN0aW9uIHNtZF9pZl9mZWF0dXJlZCgkYXR0cywgJHRoaW5nKSB7DQoJZ2xvYmFsICRzbWRf ZmVhdHVyZWRfaW5mbywgJHRoaXNhcnRpY2xlOw0KDQoJZXh0cmFjdChsQXR0cyhhcnJheSgN CgkJJ2lkJyA9PiAnJywNCgkJJ2xhYmVsJyA9PiAnJywNCgkpLCRhdHRzKSk7DQoNCglpZiAo JGlkKSB7DQoJCSRpZCA9IGpvaW4oIicsJyIsIGRvX2xpc3QoZG9TbGFzaCgkaWQpKSk7DQoJ fQ0KDQoJaWYgKCEkaWQgJiYgJHRoaXNhcnRpY2xlKSB7DQoJCSRpZCA9ICR0aGlzYXJ0aWNs ZVsndGhpc2lkJ107DQoJfQ0KDQoJJHdoZXJlW10gPSAiZmVhdF9pZCBJTiAoJyIuJGlkLiIn KSI7DQoNCglpZiAoaXNzZXQoJGF0dHNbJ2xhYmVsJ10pKSB7DQoJCSRsYWJlbCA9IGV4cGxv ZGUoJywnLCBkb1NsYXNoKCRsYWJlbCkpOw0KCQkkbGJsd2hlcmUgPSBhcnJheSgpOw0KCQlm b3JlYWNoICgkbGFiZWwgYXMgJGxibCkgew0KCQkJJGxibHdoZXJlW10gPSAiJyIudHJpbSgk bGJsKS4iJyI7DQoJCX0NCgkJaWYgKCRsYmx3aGVyZSkgew0KCQkJJHdoZXJlW10gPSAnKCBC SU5BUlkgbGFiZWwgSU4gKCcgLiBqb2luKCcsJywgJGxibHdoZXJlKSAuICcpICknOw0KCQl9 DQoJfQ0KDQoJJHJldCA9IHNhZmVfcm93KCdmZWF0X2lkJywgU01EX0ZFQVQsIGpvaW4oJyBB TkQnLCAkd2hlcmUpKTsNCg0KCXJldHVybiBwYXJzZShFdmFsRWxzZSgkdGhpbmcsICRyZXQp KTsNCn0NCg0KLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQovLyBQbHVnaW4tc3BlY2lm aWMgcmVwbGFjZW1lbnQgc3RyaW5ncyAtIGxvY2FsaXNlIGFzIHJlcXVpcmVkDQovLyBUT0RP OiBtYWtlIHRoZXNlIGludG8gYSB0ZXh0cGFjayB3aGVuIHBsdWdpbiBjb21wb3NlciBzdXBw b3J0cyB0aGVtDQpmdW5jdGlvbiBzbWRfZmVhdHVyZWRfZ1R4dCgkd2hhdCwgJGF0dHMgPSBh cnJheSgpKSB7DQoJJGxhbmcgPSBhcnJheSgNCgkJJ2J5X2xhYmVsJyA9PiAnQnkgbGFiZWw6 ICcsDQoJCSdieV9uYW1lJyA9PiAnQnkgbmFtZTogJywNCgkJJ2NvbnRyb2xfcGFuZWwnID0+ ICdDb250cm9sIHBhbmVsJywNCgkJJ21hbmFnZV9sYmwnID0+ICdDbGljayB0byBzZWxlY3Qg ZmVhdHVyZWQgYXJ0aWNsZXMsIHdoaWNoIHdpbGwgYmUgc2hvd24gPHNwYW4gY2xhc3M9InNt ZF9mZWF0dXJlZCI+PGEgaHJlZj0iIyI+aGlnaGxpZ2h0ZWQ8L2E+PC9zcGFuPi4nLA0KCQkn cHJlZnMnID0+ICdQcmVmZXJlbmNlcycsDQoJCSdwcmVmX2JveHNpemUnID0+ICdCb3ggc2l6 ZTogJywNCgkJJ3ByZWZfYm94c2l6ZWJ5JyA9PiAneCcsDQoJCSdwcmVmX2Rpc3BsYXknID0+ ICdEaXNwbGF5OiAnLA0KCQkncHJlZl9zb3J0JyA9PiAnU29ydCBieTogJywNCgkJJ3ByZWZz X3NvbWVfZXhwbGFpbicgPT4gJ1RoaXMgaXMgZWl0aGVyIGEgbmV3IGluc3RhbGxhdGlvbiBv ciBhIGRpZmZlcmVudCB2ZXJzaW9uJy5ici4nb2YgdGhlIHBsdWdpbiB0byBvbmUgeW91IGhh ZCBiZWZvcmUuJywNCgkJJ3ByZWZzX3NvbWVfb3B0cycgPT4gJ0NsaWNrICJJbnN0YWxsIHRh YmxlIiB0byBhZGQgb3IgdXBkYXRlIHRoZSB0YWJsZScuYnIuJ2xlYXZpbmcgYWxsIGV4aXN0 aW5nIGRhdGEgdW50b3VjaGVkLicsDQoJCSdwcmVmc19zb21lX3RibCcgPT4gJ05vdCBhbGwg dGFibGUgaW5mbyBhdmFpbGFibGUuJywNCgkJJ3NhdmVkJyA9PiAnQXJ0aWNsZSBpbmZvIHVw ZGF0ZWQnLA0KCQknc2VhcmNoX2xpdmUnID0+ICdBcnRpY2xlIGxpdmUgc2VhcmNoJywNCgkJ J3NlYXJjaF9zdGFuZGFyZCcgPT4gJ0FydGljbGUgc2VhcmNoJywNCgkJJ3RhYl9uYW1lJyA9 PiAnRmVhdHVyZWQgYXJ0aWNsZXMnLA0KCQkndGJsX2luc3RhbGxfbGJsJyA9PiAnSW5zdGFs bCB0YWJsZScsDQoJCSd0YmxfaW5zdGFsbGVkJyA9PiAnVGFibGUgaW5zdGFsbGVkJywNCgkJ J3RibF9ub3RfaW5zdGFsbGVkJyA9PiAnVGFibGUgbm90IGluc3RhbGxlZCcsDQoJCSd0Ymxf cmVtb3ZlZCcgPT4gJ1RhYmxlIHJlbW92ZWQnLA0KCQkndGJsX25vdF9yZW1vdmVkJyA9PiAn VGFibGUgbm90IHJlbW92ZWQnLA0KCQkndGV4dGlsZScgPT4gJ1RleHRpbGU6ICcsDQoJCSd0 ZXh0aWxlX2Rlc2MnID0+ICdEZXNjcmlwdGlvbicsDQoJCSd0ZXh0aWxlX3RpdGxlJyA9PiAn VGl0bGUnLA0KCQkndW5mZWF0dXJlX2NvbmZpcm0nID0+ICdTdXJlIHRvIHVuZmVhdHVyZSB0 aGlzIGFydGljbGU/JywNCgkJJ3VubGFiZWxsZWQnID0+ICdbdW5sYWJlbGxlZF0nLA0KCSk7 DQoJcmV0dXJuIHN0cnRyKCRsYW5nWyR3aGF0XSwgJGF0dHMpOw0KfSI7czo0OiJ0eXBlIjtz OjE6IjEiO3M6NToib3JkZXIiO3M6MToiNSI7czo1OiJmbGFncyI7czoxOiIyIjtzOjQ6Imhl bHAiO3M6MTk2MzI6IjxkaXYgaWQ9InNtZF9oZWxwIj4KCgk8aDE+c21kX2ZlYXR1cmVkPC9o MT4KCgk8cD5QdWxsIG9uZSBvciBtb3JlIGFydGljbGVzIG91dCBvZiB0aGUgcmVndWxhciBh cnRpY2xlIGZsb3cgYW5kIHBpbXAgdGhlbSAmIzgyMTI7IHBlcmhhcHMgb24gYSBzZWN0aW9u IGxhbmRpbmcgcGFnZSBvciB5b3VyIGhvbWUgcGFnZS48L3A+CgoJPGgyPkZlYXR1cmVzPC9o Mj4KCgk8dWw+CgkJPGxpPk9uZS1jbGljayBzZWxlY3Rpb24gb2YgYXJ0aWNsZXMgdG8gZmVh dHVyZTwvbGk+CgkJPGxpPkxhYmVsIHlvdXIgZmVhdHVyZWQgYXJ0aWNsZXMsIGFsbG93aW5n IHlvdSB0byBncm91cCB0aGVtIGludG8gYXJlYXMgbGlrZSBGZWF0dXJlZCwgVGVhc2Vycywg ZXRjPC9saT4KCQk8bGk+QWRkIGFuIG9wdGlvbmFsIHRpdGxlL2Rlc2NyaXB0aW9uIHRvIGVh Y2ggYXJ0aWNsZSBzbyB5b3UgY2FuIHVzZSB0aGF0IGFzIGNvcHksIGluc3RlYWQgb2Ygc29t ZXRoaW5nIGZyb20gdGhlIGFydGljbGUgaXRzZWxmIChzdXBwb3J0cyBUZXh0aWxlIGFuZCBz b21lIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IHRhZ3MpPC9saT4KCQk8bGk+U2Vh cmNoIHlvdXIgZmVhdHVyZWQgYXJ0aWNsZXMgYnkgbmFtZSBvciBsYWJlbDsgZmlsdGVyaW5n IGluIHJlYWwtdGltZSBpZiB5b3Ugd2lzaDwvbGk+CgkJPGxpPkhpZGRlbiBwcmVmIGFsbG93 cyBwcmUtZmlsdGVyaW5nIGJ5IGFuIGFkbWluaXN0cmF0b3Igc28gb25seSBhcnRpY2xlcyBm cm9tIGNlcnRhaW4gc2VjdGlvbnMgYXJlIGF2YWlsYWJsZSBmb3IgcGltcGFnZTwvbGk+CgkJ PGxpPkRpc3BsYXkgaW5mb3JtYXRpb24gZnJvbSB0aGUgZmVhdHVyZWQgYXJ0aWNsZXMgdXNp bmcgcmVndWxhciA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiBhcnRpY2xlIHRhZ3M8 L2xpPgoJCTxsaT5LZWVwcyB0cmFjayBvZiB3aGljaCBhcnRpY2xlcyBoYXZlIGJlZW4gc2Vl biBhbHJlYWR5IG9uIHRoZSBwYWdlIHNvIGxhdGVyIGZlYXR1cmVkIChvciB1bmZlYXR1cmVk KSBhcnRpY2xlcyBhcmVuJiM4MjE3O3QgZHVwbGljYXRlZDwvbGk+Cgk8L3VsPgoKCTxoMj5B dXRob3IgLyBDcmVkaXRzPC9oMj4KCgk8cD48YSBocmVmPSJodHRwOi8vc3RlZmRhd3Nvbi5j b20vY29udGFjdCI+U3RlZiBEYXdzb248L2E+PC9wPgoKCTxoMj5JbnN0YWxsYXRpb24gLyBV bmluc3RhbGxhdGlvbjwvaDI+CgoJPHAgY2xhc3M9ImltcG9ydGFudCI+UmVxdWlyZXMgVGV4 dHBhdHRlcm4gNC4yLjArICg0LjMuMCsgcmVjb21tZW5kZWQpPC9wPgoKCTxwPkRvd25sb2Fk IHRoZSBwbHVnaW4gZnJvbSBlaXRoZXIgPGEgaHJlZj0iaHR0cDovL3RleHRwYXR0ZXJuLm9y Zy9wbHVnaW5zLzExNzQvc21kX2ZlYXR1cmVkIj50ZXh0cGF0dGVybi5vcmc8L2E+LCBvciB0 aGUgPGEgaHJlZj0iaHR0cDovL3N0ZWZkYXdzb24uY29tL3N3Ij5zb2Z0d2FyZSBwYWdlPC9h PiwgcGFzdGUgdGhlIGNvZGUgaW50byB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bh bj4gQWRtaW4gLSZndDsgUGx1Z2lucyBwYW5lLCBpbnN0YWxsIGFuZCBlbmFibGUgdGhlIHBs dWdpbi4gVmlzaXQgdGhlIDxhIGhyZWY9Imh0dHA6Ly9mb3J1bS50ZXh0cGF0dGVybi5jb20v dmlld3RvcGljLnBocD9pZD0zMzkzOCI+Zm9ydW0gdGhyZWFkPC9hPiBmb3IgbW9yZSBpbmZv IG9yIHRvIHJlcG9ydCBvbiB0aGUgc3VjY2VzcyBvciBvdGhlcndpc2Ugb2YgdGhlIHBsdWdp bi48L3A+CgoJPHA+V2hlbiB5b3UgaW5zdGFsbCB0aGUgcGx1Z2luLCB0aGUgbmVjZXNzYXJ5 IHRhYmxlIGlzIGF1dG9tYXRpY2FsbHkgaW5zdGFsbGVkIGZvciB5b3UuIFRoZXJlJiM4MjE3 O3MgY3VycmVudGx5IG5vIGZhY2lsaXR5IGZvciByZW1vdmluZyBpdCBkdXJpbmcgcGx1Z2lu IG9wZXJhdGlvbiwgYnV0IGl0IHdpbGwgYmUgZGVsZXRlZCBpZiB0aGUgcGx1Z2luIGlzIGRl bGV0ZWQgZnJvbSB5b3VyIHN5c3RlbS48L3A+CgoJPHA+VG8gdW5pbnN0YWxsLCBzaW1wbHkg ZGVsZXRlIHRoZSBwbHVnaW4gZnJvbSB0aGUgPGVtPkFkbWluLSZndDtQbHVnaW5zPC9lbT4g cGFnZS48L3A+CgoJPHAgY2xhc3M9ImltcG9ydGFudCI+VW5kZXIgPHNwYW4gY2xhc3M9ImNh cHMiPlRYUDwvc3Bhbj4gNC4yLjAsIGlmIHlvdSBjaGFuZ2UgYW55IG9mIHRoZSBwcmVmcyBh bmQgc2F2ZSB0aGVtLCB5b3UgbmVlZCB0byByZWxvYWQgdGhlIHBsdWdpbiB0YWIgKGp1c3Qg Y2xpY2sgaXQpIHRvIGFjdHVhbGx5IHNlZSB0aGVtIHRha2UgZWZmZWN0LiBUaGlzIHNpdHVh dGlvbiBpcyBmaXhlZCB1bmRlciA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiA0LjMu MC48L3A+CgoJPGgyPkNvbmZpZ3VyaW5nIGZlYXR1cmVkIGFydGljbGVzPC9oMj4KCgk8cD5W aXNpdCB0aGUgPGVtPkNvbnRlbnQtJmd0O0ZlYXR1cmVkIGFydGljbGVzPC9lbT4gdGFiLiBB IGxpc3Qgb2YgYWxsIGFydGljbGVzIChmcm9tIHRoZSBhZG1pbi1zZWxlY3RlZCBzZWN0aW9u cykgYXJlIHByZXNlbnRlZCBpbiBhIGdyaWQuPC9wPgoKCTxoMz5UbyBmZWF0dXJlIGFuIGFy dGljbGU8L2gzPgoKCTxwPkNsaWNrIGl0cyBuYW1lLiBJdCB3aWxsIGJlIGhpZ2hsaWdodGVk IGFuZCBhbiA8Y29kZT5bRWRpdF08L2NvZGU+IGJ1dHRvbiBhcHBlYXJzIGJlc2lkZSBpdC4g SWYgeW91IGNob29zZSBub3QgdG8gZWRpdCB0aGUgYXJ0aWNsZSBpbmZvcm1hdGlvbiwgaXQg d2lsbCBiZSBmZWF0dXJlZCBidXQgdW5sYWJlbGxlZC48L3A+CgoJPHA+Q2xpY2tpbmcgPGNv ZGU+W0VkaXRdPC9jb2RlPiB3aWxsIGRpc3BsYXkgdGhyZWUgaW5wdXQgYm94ZXM6PC9wPgoK CTx1bD4KCQk8bGk+PHN0cm9uZz5MYWJlbDwvc3Ryb25nPiA6IGFsbG93cyB5b3UgdG8gbGFi ZWwgKGdyb3VwKSB0aGUgYXJ0aWNsZSB3aXRoIG90aGVycyBvZiBhIHNpbWlsYXIgZmVhdHVy ZWQgc3RhdHVzLiBGb3IgZXhhbXBsZSwgeW91IGNvdWxkIGxhYmVsIHNvbWUgYXJ0aWNsZXMg dG8gZ28gaW4gYSAmIzgyMTY7dGVhc2VycyYjODIxNzsgYmxvY2sgb24geW91ciBob21lIHBh Z2UgYnkgbGFiZWxsaW5nIGVhY2ggcG90ZW50aWFsIGFydGljbGUgd2l0aCA8Y29kZT5UZWFz ZXI8L2NvZGU+LiBCZSBjYXJlZnVsOiA8c3Ryb25nPmxhYmVscyBhcmUgY2FzZSBzZW5zaXRp dmU8L3N0cm9uZz4uIFRvIGhlbHAsIHlvdSBtYXkgY2hvb3NlIGEgbGFiZWwgZnJvbSB0aGUg ZHJvcGRvd24gbGlzdCBvZiBhbGwgY3VycmVudGx5IGRlZmluZWQgbGFiZWxzPC9saT4KCQk8 bGk+PHN0cm9uZz5UaXRsZTwvc3Ryb25nPiA6IGFsbG93cyB5b3UgdG8gc3RvcmUgc29tZSBU ZXh0aWxlLWF3YXJlIHRpdGxlIHJlbGF0ZWQgdG8gdGhlIGFydGljbGUuIFRoaXMgaXMgZGlm ZmVyZW50IGZyb20gdGhlIGFydGljbGUmIzgyMTc7cyBhY3R1YWwgVGl0bGUgYW5kIGNhbiBi ZSB1c2VkIGZvciBhbnkgcHVycG9zZSB5b3Ugc2VlIGZpdDwvbGk+CgkJPGxpPjxzdHJvbmc+ RGVzY3JpcHRpb248L3N0cm9uZz4gOiBhbGxvd3MgeW91IHRvIHN0b3JlIHNvbWUgVGV4dGls ZS1hd2FyZSBzdXBwb3J0aW5nIGluZm9ybWF0aW9uIGFib3V0IHRoZSBhcnRpY2xlLiBUaGlz IGNvdWxkIHNpbXBseSBiZSBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGZvciB5b3VyIG93biB1 c2UsIG9yIHNvbWUgY29weSB0aGF0IHlvdSBtYXkgd2lzaCB0byBkaXNwbGF5IGluIHlvdXIg dGVhc2VycyBibG9jayB0byBlbnRpY2UgcGVvcGxlIHRvIHJlYWQgdGhlIGFydGljbGUuIEl0 IGNhbiBiZSBhcyBzaW1wbGUgb3IgYXMgY29tcGxleCBhcyB5b3UgbGlrZSBhbmQgY2FuIGNv bnRhaW4gPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gdGFncyAoaWYgdGhleSBtYWtl IHNlbnNlIHRvIHVzZSBhdCB0aGF0IHBvaW50ICYjODIxMjsgYXJ0aWNsZSB0YWdzIGNhbm5v dCBiZSB1c2VkLCBmb3IgZXhhbXBsZSwgYnV0IDxjb2RlPiZsdDt0eHA6c2l0ZV91cmwgLyZn dDs8L2NvZGU+IGNhbik8L2xpPgoJPC91bD4KCgk8cD5XaGVuIHlvdSYjODIxNztyZSBoYXBw eSB3aXRoIHlvdXIgY2F0ZWdvcmlzYXRpb24gYW5kL29yIGRlc2NyaXB0aW9uIHRleHQsIGhp dCBTYXZlIHRvIHN0b3JlIGl0LiBZb3UgY2FuIGVkaXQgdGhlIGluZm9ybWF0aW9uIGF0IGFu eSB0aW1lIGJ5IGNsaWNraW5nIHRoZSBhcHByb3ByaWF0ZSA8Y29kZT5bRWRpdF08L2NvZGU+ IGJ1dHRvbiBmcm9tIHRoZSBmZWF0dXJlZCBhcnRpY2xlIGxpc3QuPC9wPgoKCTxoMz5UbyB1 bmZlYXR1cmUgYW4gYXJ0aWNsZTwvaDM+CgoJPHA+Q2xpY2sgaXRzIG5hbWUgYWdhaW4uIFdo ZW4geW91IGNvbmZpcm0gdGhhdCB5b3UgYXJlIHN1cmUsIHRoZSBhcnRpY2xlJiM4MjE3O3Mg bGFiZWwgYW5kIGRlc2NyaXB0aW9uIGFyZSBkZWxldGVkLCBzbyBiZSBzdXJlIHlvdSByZWFs bHkgd2FudCB0byByZW1vdmUgdGhlbSwgb3IgaGF2ZSBiYWNrZWQgdGhlIGluZm9ybWF0aW9u IHVwIHNvbWV3aGVyZS48L3A+CgoJPGgzPkZpbmRpbmcgYXJ0aWNsZXMgdG8gZmVhdHVyZTwv aDM+CgoJPHA+V2l0aCBsYXJnZSBhcnRpY2xlIGxpc3RzIGl0IGNhbiBiZWNvbWUgZGlmZmlj dWx0IHRvIGZpbmQgdGhlIG9uZSB5b3Ugd2FudC4gQWJvdmUgdGhlIGdyaWQgaXMgYSBjb250 cm9sIHBhbmVsLiBDbGljayBpdCB0byByZXZlYWwgdGhlIHBsdWdpbiBvcHRpb25zLiAgT24g dGhlIGxlZnQgaXMgdGhlIEFydGljbGUgc2VhcmNoIGFyZWEgYW5kIG9uIHRoZSByaWdodCBh cmUgdGhlIHBsdWdpbiBwcmVmZXJlbmNlcy4gSWYgeW91IGFyZSBpbiA8ZW0+RGlzcGxheTog QWxsPC9lbT4gbW9kZSwgc2ltcGx5IHN0YXJ0IHR5cGluZyBpbiB0aGUgPGVtPkJ5IG5hbWU8 L2VtPiBib3ggYW5kIHlvdXIgYXJ0aWNsZSBsaXN0IHdpbGwgYmUgcmVkdWNlZCBhcyB5b3Ug dHlwZSB0byBvbmx5IHRob3NlIHRoYXQgbWF0Y2guIFR5cGUgbXVsdGlwbGUgd29yZHMgdG8g ZmluZCBhcnRpY2xlcyB0aGF0IGNvbnRhaW4gYW55IG9mIHRoZSBnaXZlbiB3b3Jkcy4gVG8g cXVpY2tseSBjbGVhciB0aGUgYm94LCBoaXQgdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5FU0M8 L3NwYW4+YXBlIGtleS48L3A+CgoJPHA+QWx0ZXJuYXRpdmVseSwgeW91IGNhbiB1c2UgdGhl IHNlbGVjdCBsaXN0IHRvIGNob29zZSBhbGwgYXJ0aWNsZXMgd2l0aCBhIHBhcnRpY3VsYXIg bGFiZWwuIFRoZSBlbXB0eSBlbnRyeSBhdCB0aGUgdG9wIG9mIHRoZSBsaXN0IG1lYW5zICYj ODIyMDthbGwgYXJ0aWNsZXMmIzgyMjE7LiBJZiB5b3UgaGF2ZSBmZWF0dXJlZCBhbiBhcnRp Y2xlIGJ1dCBkb24mIzgyMTc7dCBzdXBwbHkgYSBsYWJlbCB5b3UgY2FuIGZpbHRlciBpdCBi eSBjaG9vc2luZyB0aGUgPGNvZGU+W3VubGFiZWxsZWRdPC9jb2RlPiBpdGVtIGZyb20gdGhl IGxpc3QuIElmIHlvdSBoYXZlIGxhYmVsbGVkIGFueSBhcnRpY2xlcywgZWFjaCBsYWJlbCB5 b3UgaGF2ZSBzdXBwbGllZCB3aWxsIGFsc28gYmUgYW4gb3B0aW9uIGluIHRoZSBsaXN0LiBS ZW1lbWJlciB0aGF0IGxhYmVscyBhcmUgY2FzZSBzZW5zaXRpdmUuPC9wPgoKCTxwPk5vdGUg dGhhdCBmaWx0ZXJpbmcgYnkgbmFtZSBvciBieSBsYWJlbCBhcmUgbXV0dWFsbHkgZXhjbHVz aXZlIGFjdGlvbnM6IHNlbGVjdGluZyBzb21ldGhpbmcgZnJvbSB0aGUgZHJvcGRvd24gd2ls bCBjbGVhciB0aGUgdGV4dCBib3gsIGFuZCB0eXBpbmcgc29tZXRoaW5nIGluIHRoZSB0ZXh0 IGJveCB3aWxsIHJlc2V0IHRoZSBkcm9wZG93bi48L3A+CgoJPHA+WW91ciBzZWFyY2ggY3Jp dGVyaWEgYXJlIHJlbWVtYmVyZWQgYmV0d2VlbiBlZGl0L2xpc3Qgdmlld3Mgc28geW91IHdv biYjODIxNzt0IGxvc2UgeW91ciBwbGFjZS4gSWYgeW91IGFyZSBpbiA8ZW0+RGlzcGxheTog UGFnaW5hdGVkPC9lbT4gbW9kZSwgdGhlIHNlYXJjaCB3b3JrcyBpbiBleGFjdGx5IHRoZSBz YW1lIHdheSBidXQgeW91IGhhdmUgdG8gaGl0IEVudGVyIG9yIGNsaWNrIDxlbT5HbzwvZW0+ IHRvIHN1Ym1pdCB0aGUgc2VhcmNoIGNyaXRlcmlhLjwvcD4KCgk8aDM+UGx1Z2luIHByZWZl cmVuY2VzPC9oMz4KCgk8cD5Vc2VycyBvZiB0aGUgPGVtPkZlYXR1cmVkIGFydGljbGVzPC9l bT4gdGFiIGFsc28gaGF2ZSBhIGZldyBwcmVmZXJlbmNlcyBhdCB0aGVpciBkaXNwb3NhbCB3 aGljaCBjYW4gYmUgYWx0ZXJlZCBhdCB3aWxsOjwvcD4KCgk8b2w+CgkJPGxpPjxzdHJvbmc+ RGlzcGxheTwvc3Ryb25nPiA6IGNob29zZSB3aGV0aGVyIHlvdSB3aXNoIHRvIGRpc3BsYXkg YWxsIGFydGljbGVzIG9uIG9uZSBwYWdlIChhbmQgdXNlIHRoZSBsaXZlIHNlYXJjaCB0byBm aWx0ZXIgdGhlbSkgb3IgY2hvb3NlIGEgcGFnaW5hdGVkIHZpZXcgKGFuZCB1c2UgdGhlIHRy YWRpdGlvbmFsIHNlYXJjaCkuIFRoZSB0cmFkaXRpb25hbCBzZWFyY2ggbWlnaHQgYmUgdXNl ZnVsIGlmIHlvdSBoYXZlIGEgbG90IG9mIGFydGljbGVzIChvdmVyIDEwMDApIGJlY2F1c2Ug dGhlIGxpdmUgc2VhcmNoIG1pZ2h0IHNsb3cgZG93biBzaWduaWZpY2FudGx5LiBOb3RlIHRo YXQgd2hlbiB5b3Ugc2VhcmNoIGZvciBzb21ldGhpbmcgaW4gcGFnaW5hdGVkIG1vZGUsIHRo ZSByZXN1bHRzIHRoZW1zZWx2ZXMgYXJlbiYjODIxNzt0IHBhZ2luYXRlZDwvbGk+CgkJPGxp PjxzdHJvbmc+U29ydCBieTwvc3Ryb25nPiA6IGRlZmluZSB0aGUgc29ydCBvcmRlciBvZiB0 aGUgYXJ0aWNsZSBsaXN0PC9saT4KCQk8bGk+PHN0cm9uZz5Cb3ggc2l6ZTwvc3Ryb25nPiA6 IHNwZWNpZnkgdGhlIDxjb2RlPndpZHRoPC9jb2RlPiBhbmQgPGNvZGU+aGVpZ2h0PC9jb2Rl PiB2YWx1ZXMgaW4gcGl4ZWxzIG9mIGVhY2ggY2VsbCBpbiB0aGUgZ3JpZC4gRGVmYXVsdCBp cyA8Y29kZT4xNTB4NDA8L2NvZGU+PC9saT4KCQk8bGk+PHN0cm9uZz5UZXh0aWxlPC9zdHJv bmc+OiBjaG9vc2UgdGhlIGl0ZW1zIHRvIHdoaWNoIHlvdSB3aXNoIHRvIGFwcGx5IFRleHRp bGUgd2hlbiB5b3UgRWRpdCBhbmQgU2F2ZSBhIGZlYXR1cmVkIGFydGljbGUuIDxzdHJvbmc+ Tm90ZSB0aGlzIG9ubHkgYWZmZWN0cyBmZWF0dXJlZCBhcnRpY2xlcyBzYXZlZCBmcm9tIHRo aXMgcG9pbnQgZm9yd2FyZDwvc3Ryb25nPi4gVGh1cyBpZiB5b3Ugd2lzaCB0byBhcHBseSBh IG5ldyBUZXh0aWxlIHNldHRpbmcgdG8gZXhpc3RpbmcgYXJ0aWNsZXMgeW91IG5lZWQgdG8g dmlzaXQgZWFjaCBvbmUgaW4gdHVybiBieSBjbGlja2luZyA8Y29kZT5bRWRpdF08L2NvZGU+ IGFuZCB0aGVuIDxlbT5TYXZlPC9lbT4uPC9saT4KCTwvb2w+CgoJPHA+WW91IChhcyBhZG1p bmlzdHJhdG9yKSBjYW4gYWxzbyBhbHRlciB0aGUgYmVoYXZpb3VyIG9mIHRoZSBwbHVnaW4g YnkgY3JlYXRpbmcgc29tZSBoaWRkZW4gcHJlZmVyZW5jZXMgKHRoZSBzbWRfcHJlZmFsaXpl ciBwbHVnaW4gY2FuIGhlbHAgaGVyZSkuIFRoZXJlIGFyZSB0d28gcHJlZnMgeW91IG1heSBk ZWZpbmU6PC9wPgoKCTxvbD4KCQk8bGk+PHN0cm9uZz5zbWRfZmVhdHVyZWRfcHJpdnM8L3N0 cm9uZz4gOiBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIHByaXYgbGV2ZWwgbnVtYmVycyB0 aGF0IGNhbiBhY2Nlc3MgdGhlIDxlbT5GZWF0dXJlZCBhcnRpY2xlczwvZW0+IHRhYi4gRGVm YXVsdDogPGNvZGU+MSwyPC9jb2RlPjwvbGk+CgkJPGxpPjxzdHJvbmc+c21kX2ZlYXR1cmVk X3NlY3Rpb25fbGlzdDwvc3Ryb25nPjogZGVmaW5lIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qg b2Ygc2VjdGlvbiBuYW1lcy4gVGhlc2Ugd2lsbCBiZSB0aGUgb25seSBzZWN0aW9ucyBmcm9t IHdoaWNoIGFydGljbGVzIGFyZSBhbGxvd2VkIHRvIGJlIGZlYXR1cmVkPC9saT4KCTwvb2w+ CgoJPHA+SWYgdXNpbmcgc21kX3ByZWZhbGl6ZXIgdG8gY3JlYXRlIHRoZSBwcmVmcywgc2V0 IHRoZSBuYW1lIGFuZCB2YWx1ZSBhcyBhYm92ZSBhbmQgdGhlbiBzZXQgdGhlIGZvbGxvd2lu ZyBhZGRpdGlvbmFsIHBhcmFtZXRlcnM6PC9wPgoKCTx1bD4KCQk8bGk+PHN0cm9uZz50eXBl PC9zdHJvbmc+IDogaGlkZGVuPC9saT4KCQk8bGk+PHN0cm9uZz5ldmVudDwvc3Ryb25nPiA6 IHNtZF9mZWF0dXJlZDwvbGk+CgkJPGxpPjxzdHJvbmc+aW5wdXQgY29udHJvbDwvc3Ryb25n PiA6IHRleHRfaW5wdXQ8L2xpPgoJCTxsaT48c3Ryb25nPnVzZXI8L3N0cm9uZz4gOiAvIGVt cHR5IC88L2xpPgoJCTxsaT48c3Ryb25nPnBvc2l0aW9uPC9zdHJvbmc+OiAwPC9saT4KCTwv dWw+CgoJPGgyPkRpc3BsYXlpbmcgZmVhdHVyZWQgYXJ0aWNsZXM8L2gyPgoKCTxwPk9uY2Ug eW91IGhhdmUgY2hvc2VuIHlvdXIgZmVhdHVyZWQgYXJ0aWNsZXMsIHlvdSBuZWVkIGEgd2F5 IHRvIGRpc3BsYXkgdGhlbTo8L3A+CgoJPGgzPjxjb2RlPiZsdDt0eHA6c21kX2ZlYXR1cmVk IC8mZ3Q7PC9jb2RlPjwvaDM+CgoJPHA+QWN0cyBhIGJpdCBsaWtlIHRoZSBzdGFuZGFyZCA8 Y29kZT4mbHQ7dHhwOmFydGljbGUgLyZndDs8L2NvZGU+IHRhZyB0byBkaXNwbGF5IGZlYXR1 cmVkIGFydGljbGVzLiBBdHRyaWJ1dGVzOjwvcD4KCgk8dWw+CgkJPGxpPjxzcGFuIGNsYXNz PSJhdG5tIj5sYWJlbDwvc3Bhbj4gOiBkaXNwbGF5IGZlYXR1cmVkIGFydGljbGVzIHdpdGgg dGhpcyBsYWJlbC4gU3BlY2lmeSA8Y29kZT5sYWJlbD0mcXVvdDsmcXVvdDs8L2NvZGU+IHRv IGRpc3BsYXkgdW5sYWJlbGxlZCBhcnRpY2xlcyAod2hpY2ggYXJlIDxzdHJvbmc+bm90PC9z dHJvbmc+IHRoZSBzYW1lIGFzIHVuZmVhdHVyZWQgYXJ0aWNsZXMpLiBJZiB0aGlzIGF0dHJp YnV0ZSBpcyBvbWl0dGVkLCBhbGwgZmVhdHVyZWQgYXJ0aWNsZXMgJiM4MjEyOyBpcnJlc3Bl Y3RpdmUgb2YgbGFiZWwgJiM4MjEyOyB3aWxsIGJlIGRpc3BsYXllZDwvbGk+CgkJPGxpPjxz cGFuIGNsYXNzPSJhdG5tIj5sYWJlbHRhZzwvc3Bhbj4gOiB0aGUgKFgpSFRNTCB0YWcgJiM4 MjEyOyB3aXRob3V0IGJyYWNrZXRzICYjODIxMjsgdG8gYXBwbHkgdG8gdGhlIGxhYmVsIGF0 dHJpYnV0ZS4gSWYgdGhpcyBhdHRyaWJ1dGUgaXMgc3BlY2lmaWVkIHRoZSBsYWJlbCBpdHNl bGYgaXMgZGlzcGxheWVkIGF0IHRoZSBoZWFkIG9mIHlvdXIgZmVhdHVyZWQgYXJ0aWNsZSBs aXN0LiBJZiB5b3Ugd2lzaCB0byBkaXNwbGF5IHVubGFiZWxsZWQgYXJ0aWNsZXMgeW91IG5l ZWQgdG8gc3BlY2lmeSB0aGUgPGNvZGU+dW5sYWJlbDwvY29kZT4gYXR0cmlidXRlIG9yIHlv dSYjODIxNztsbCBzZWUgbm8gbGFiZWwuIE5vdGUgdGhhdCB0aGlzIHRhZyBkaWZmZXJzIGZy b20gdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IGNvbnZlbnRpb246IHlvdSB3 aWxsIDxlbT5vbmx5PC9lbT4gc2VlIHRoZSBsYWJlbCBpZiB5b3Ugc3BlY2lmeSB0aGUgPGNv ZGU+bGFiZWx0YWc8L2NvZGU+LiBZb3UgY2FuIGRpc3BsYXkgdGhlIGxhYmVsIGluc2lkZSB5 b3VyIGFydGljbGVzIHVzaW5nIHRoZSA8Y29kZT4mbHQ7dHhwOmZlYXR1cmVkX2luZm8gLyZn dDs8L2NvZGU+IHRhZzwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj51bmxhYmVsPC9z cGFuPiA6IHdoZW4gdXNpbmcgPGNvZGU+bGFiZWw9JnF1b3Q7JnF1b3Q7PC9jb2RlPiAodG8g c2hvdyB1bmxhYmVsbGVkIGFydGljbGVzKSB0aGlzIGF0dHJpYnV0ZSBzcGVjaWZpZXMgdGhl IGxhYmVsIHRvIHVzZSBpbnNpZGUgdGhlIDxjb2RlPmxhYmVsdGFnPC9jb2RlPi4gRGVmYXVs dDogJiM4MjIwO0ZlYXR1cmVkJiM4MjIxOzwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5t Ij50aW1lPC9zcGFuPiA6IGxpbWl0IHRoZSBhcnRpY2xlcyB0byB0aG9zZSBpbiB0aGUgPGNv ZGU+cGFzdDwvY29kZT4sIHRoZSA8Y29kZT5mdXR1cmU8L2NvZGU+IG9yIDxjb2RlPmFueTwv Y29kZT4uIERlZmF1bHQ6IDxjb2RlPnBhc3Q8L2NvZGU+PC9saT4KCQk8bGk+PHNwYW4gY2xh c3M9ImF0bm0iPnN0YXR1czwvc3Bhbj4gOiBvbmx5IGRpc3BsYXkgYXJ0aWNsZXMgb2YgdGhl IGdpdmVuIHN0YXR1cyBudW1iZXIocykuIERlZmF1bHQ6IDxjb2RlPjQsNTwvY29kZT4gKGEu ay5hLiBsaXZlIGFuZCBzdGlja3kpPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnNl Y3Rpb248L3NwYW4+IDogb25seSBkaXNwbGF5IGFydGljbGVzIGZyb20gdGhlIGdpdmVuIHNl Y3Rpb24ocykuIElmIHRoZSBzZWN0aW9uIGxpc3QgaXMgcmVzdHJpY3RlZCB1c2luZyB0aGUg cGx1Z2luIHByZWZlcmVuY2VzLCB0aGUgc2VjdGlvbnMgdXNlZCBoZXJlIG11c3QgYWxzbyBi ZSBpbiB0aGF0IGxpc3Q8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+Zm9ybTwvc3Bh bj4gOiB1c2UgdGhpcyA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiBmb3JtIHRvIGRp c3BsYXkgZWFjaCBhcnRpY2xlLCBpbnN0ZWFkIG9mIHVzaW5nIHRoZSBjb250YWluZXIgY29u dGVudHM8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+bGltaXQ8L3NwYW4+IDogbWF4 aW11bSBudW1iZXIgb2YgZmVhdHVyZWQgYXJ0aWNsZXMgdG8gZGlzcGxheTwvbGk+CgkJPGxp PjxzcGFuIGNsYXNzPSJhdG5tIj5zb3J0PC9zcGFuPiA6IG9yZGVyIHRoZSBmZWF0dXJlZCBh cnRpY2xlcyBieSA8Y29kZT5pZDwvY29kZT4sIDxjb2RlPmxhYmVsPC9jb2RlPiwgPGNvZGU+ VGl0bGU8L2NvZGU+LCA8Y29kZT5Qb3N0ZWQ8L2NvZGU+LCBhbmQgc28gb24uIFRoZSBzYW1l IGxpc3QgYXZhaWxhYmxlIGZvciB0aGUgPGNvZGU+Jmx0O3R4cDphcnRpY2xlIC8mZ3Q7PC9j b2RlPiB0YWcgYXJlIHVzYWJsZSBoZXJlLiBBZGQgPGNvZGU+YXNjPC9jb2RlPiBvciA8Y29k ZT5kZXNjPC9jb2RlPiB0byB0aGUgYXR0cmlidXRlIHRvIGFsdGVyIHRoZSBkaXJlY3Rpb24g b2YgdGhlIHNvcnQuIFlvdSBtYXkgYWxzbyB1c2UgPGNvZGU+cmFuZCgpPC9jb2RlPiB0byBz b3J0IHRoZSBhcnRpY2xlcyByYW5kb21seTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5t Ij53cmFwdGFnPC9zcGFuPiA6IHRoZSAoWClIVE1MIHRhZyAmIzgyMTI7IHdpdGhvdXQgYnJh Y2tldHMgJiM4MjEyOyB0byB3cmFwIGFyb3VuZCB0aGUgbGlzdCBvZiBmZWF0dXJlZCBhcnRp Y2xlczwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5icmVhazwvc3Bhbj4gOiB0aGUg KFgpSFRNTCB0YWcgJiM4MjEyOyB3aXRob3V0IGJyYWNrZXRzICYjODIxMjsgb3IgdGV4dCB0 byBwdXQgYmV0d2VlbiBlYWNoIGFydGljbGU8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRu bSI+Y2xhc3M8L3NwYW4+IDogdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5DU1M8L3NwYW4+IGNs YXNzIG5hbWUgdG8gYXBwbHkgdG8gdGhlIHdyYXB0YWc8L2xpPgoJCTxsaT48c3BhbiBjbGFz cz0iYXRubSI+aHRtbF9pZDwvc3Bhbj4gOiBhIDxzcGFuIGNsYXNzPSJjYXBzIj5ET008L3Nw YW4+IElEIHRvIGFwcGx5IHRvIHRoZSB3cmFwdGFnPC9saT4KCTwvdWw+CgoJPHA+WW91IG1h eSB1c2UgdGhlIHRhZyBhcyBhIGNvbnRhaW5lciBhbmQgYW55IHRhZ3MgeW91IHNwZWNpZnkg d2lsbCBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBmZWF0dXJlZCBhcnRpY2xlLiBZb3UgY2FuIHVz ZSBzdGFuZGFyZCBhcnRpY2xlIHRhZ3Mgc3VjaCBhcyA8Y29kZT4mbHQ7dHhwOnRpdGxlIC8m Z3Q7PC9jb2RlPiwgPGNvZGU+Jmx0O3R4cDpleGNlcnB0IC8mZ3Q7PC9jb2RlPiwgPGNvZGU+ Jmx0O3R4cDpwZXJtbGluayAvJmd0OzwvY29kZT4sIGV0YzwvcD4KCgk8cCBjbGFzcz0iaW1w b3J0YW50Ij5Ob3RlIHRoYXQgeW91IGNhbiYjODIxNzt0IHVzZSA8Y29kZT4mbHQ7dHhwOnNt ZF9mZWF0dXJlZCZndDs8L2NvZGU+IGluc2lkZSBhbiBhcnRpY2xlIG9yIGFuIEFydGljbGUg Rm9ybS4gRG9pbmcgc28gd2lsbCB0cmlnZ2VyIGEgd2FybmluZyBiZWNhdXNlIGl0JiM4MjE3 O3MgdGhlIHNhbWUgYXMgcHV0dGluZyBhbm90aGVyIGFydGljbGUgdGFnIGluc2lkZSBhbiBh cnRpY2xlLiBVc2UgdGhlIHRhZyBvbmx5IGluIFBhZ2VzLCBvciBpbiBhIEZvcm0gdGhhdCBp cyBuZXZlciBkaXJlY3RseSB1c2VkIHRvIGRpc3BsYXkgYXJ0aWNsZSBjb250ZW50LjwvcD4K Cgk8cD5FYWNoIHRpbWUgeW91IHVzZSA8Y29kZT4mbHQ7dHhwOnNtZF9mZWF0dXJlZCAvJmd0 OzwvY29kZT4gaXQgbWFrZXMgYSBub3RlIG9mIHRoZSBhcnRpY2xlcyBpdCBoYXMgZGlzcGxh eWVkIGFuZCB3aWxsIG5vdCBkdXBsaWNhdGUgYXJ0aWNsZXMgaW4gbGF0ZXIgdGFncy48L3A+ CgoJPGgzPjxjb2RlPiZsdDt0eHA6c21kX2ZlYXR1cmVkX2luZm8gLyZndDs8L2NvZGU+PC9o Mz4KCgk8cD5BbGxvd3MgeW91IHRvIGRpc3BsYXkgdGhlIGxhYmVsIG9yIHRoZSBkZXNjcmlw dGlvbiB3aXRoaW4geW91ciA8Y29kZT4mbHQ7dHhwOnNtZF9mZWF0dXJlZCAvJmd0OzwvY29k ZT4gIGZvcm0vY29udGFpbmVyLjwvcD4KCgk8cD5IYXMgb25lIGF0dHJpYnV0ZTo8L3A+CgoJ PHVsPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+aXRlbTwvc3Bhbj4gOiB0aGUgdGhpbmcg eW91IHdhbnQgdG8gZGlzcGxheS4gQ2hvb3NlIGZyb206Cgk8dWw+CgkJPGxpPjxzdHJvbmc+ bGFiZWw8L3N0cm9uZz46IHRoZSBsYWJlbDwvbGk+CgkJPGxpPjxzdHJvbmc+dGl0bGU8L3N0 cm9uZz46IHRoZSAocG9zc2libHkgVGV4dGlsZS1wcm9jZXNzZWQpIHRpdGxlPC9saT4KCQk8 bGk+PHN0cm9uZz5kZXNjcmlwdGlvbjwvc3Ryb25nPjogdGhlIChwb3NzaWJseSBUZXh0aWxl LXByb2Nlc3NlZCkgZGVzY3JpcHRpb248L2xpPgoJPC91bD48L2xpPgoJPC91bD4KCgk8aDM+ PGNvZGU+Jmx0O3R4cDpzbWRfdW5mZWF0dXJlZCAvJmd0OzwvY29kZT48L2gzPgoKCTxwPlVz ZSB0aGlzIHRhZyBpZiB5b3Ugd2lzaCB0byBzaG93IHRoZSAmIzgyMTY7cmVtYWluaW5nJiM4 MjE3OyBhcnRpY2xlcyAmIzgyMTI7IGkuZS4gb25lcyBub3QgYWxyZWFkeSBkaXNwbGF5ZWQg YnkgYW55IHByZWNlZGluZyA8Y29kZT4mbHQ7dHhwOnNtZF9mZWF0dXJlZCAvJmd0OzwvY29k ZT4gdGFncy4gSXQgYWN0cyB2ZXJ5IG11Y2ggbGlrZSB0aGUgYnVpbHQtaW4gYXJ0aWNsZSB0 YWcgJiM4MjEyOyBhbmQgdGFrZXMgYWxsIHRoZSBzYW1lIGF0dHJpYnV0ZXMgJiM4MjEyOyBi dXQgaXRzIGNvbnRleHQgaXMgJiM4MjIwO2FueSBhcnRpY2xlcyBmcm9tIGFueSBzZWN0aW9u IGRlZmluZWQgaW4gdGhlIHNtZF9mZWF0dXJlZCBwbHVnaW4gdGhhdCBoYXZlIG5vdCBiZWVu IGRpc3BsYXllZCBhbHJlYWR5JiM4MjIxOy48L3A+CgoJPGgzPjxjb2RlPiZsdDt0eHA6c21k X2lmX2ZlYXR1cmVkJmd0OzwvY29kZT48L2gzPgoKCTxwPlRoaXMgdGFnIGFsbG93cyB5b3Ug dG8gZGV0ZWN0IGlmIHRoZSBjdXJyZW50IChpbmRpdmlkdWFsKSBhcnRpY2xlIGlzIGZlYXR1 cmVkIGFuZC9vciBoYXMgYSBwYXJ0aWN1bGFyIGxhYmVsLiBZb3UgbWF5IGFsc28gdXNlIHRo aXMgb3V0c2lkZSBhbiBhcnRpY2xlIGNvbnRleHQgYnkgc3VwcGx5aW5nIGEgbGlzdCBvZiBh cnRpY2xlIElEcy48L3A+CgoJPHA+SGFzIHR3byBhdHRyaWJ1dGVzOjwvcD4KCgk8dWw+CgkJ PGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5pZDwvc3Bhbj4gOiBsaXN0IG9mIGFydGljbGUgSURz IG9mIHdoaWNoIHlvdSB3aXNoIHRvIGNoZWNrIHRoZSBmZWF0dXJlZCBzdGF0dXMuIElmIG9t aXR0ZWQsIGRlZmF1bHRzIHRvIHRoZSBjdXJyZW50IGFydGljbGUgKGlmIHVzZWQgaW5zaWRl IGEgPGNvZGU+Jmx0O3R4cDphcnRpY2xlIC8mZ3Q7PC9jb2RlPiBjb250YWluZXIvZm9ybSk8 L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+bGFiZWw8L3NwYW4+IDogbGlzdCBvZiBs YWJlbHMgdG8gY29tcGFyZSB0aGUgZ2l2ZW4gSUQocykgd2l0aC4gU3BlY2lmeSA8Y29kZT5s YWJlbD0mcXVvdDsmcXVvdDs8L2NvZGU+IHRvIGNoZWNrIGZvciB1bmxhYmVsbGVkIGFydGlj bGVzLCBvciB1c2UgYW4gZW1wdHkgaXRlbSBpZiBzcGVjaWZ5aW5nIGEgbGlzdCwgZS5nLiA8 Y29kZT5sYWJlbD0mcXVvdDssIEZlYXR1cmVkLCBUZWFzZXImcXVvdDs8L2NvZGU+LiBSZW1l bWJlciB0aGF0IGxhYmVscyBhcmUgY2FzZSBzZW5zaXRpdmU8L2xpPgoJPC91bD4KCgk8cD5J ZiB0aGUgYXJ0aWNsZSBtYXRjaGVzIG9uZSBvZiB0aGUgZ2l2ZW4gbGFiZWxzIHRoZSBjb250 YWluZWQgY29udGVudCB3aWxsIGJlIGV4ZWN1dGVkLiBJZiBubyBsYWJlbCBpcyBnaXZlbiB0 aGUgYXJ0aWNsZShzKSB3aWxsIGJlIGNoZWNrZWQgaWYgdGhleSBhcmUgZmVhdHVyZWQsIGly cmVzcGVjdGl2ZSBvZiBsYWJlbC48L3A+CgoJPGgyPkV4YW1wbGVzPC9oMj4KCgk8aDMgaWQ9 ImVnMSI+RXhhbXBsZSAxOiBDb21wbGV0ZSBkaXJlY3Rvcnkgb2YgZmVhdHVyZWQgYXJ0aWNs ZXM8L2gzPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4 cDpzbWRfZmVhdHVyZWQgbGFiZWx0YWc9JnF1b3Q7aDImcXVvdDsgbGltaXQ9JnF1b3Q7MjAm cXVvdDsKICAgICB3cmFwdGFnPSZxdW90O2RsJnF1b3Q7IHNvcnQ9JnF1b3Q7bGFiZWwmcXVv dDsmZ3Q7CiAgICZsdDt0eHA6aWZfZGlmZmVyZW50Jmd0OwogICAgICAmbHQ7aDImZ3Q7Jmx0 O3R4cDpzbWRfZmVhdHVyZWRfaW5mbyBpdGVtPSZxdW90O2xhYmVsJnF1b3Q7IC8mZ3Q7Jmx0 Oy9oMiZndDsKICAgJmx0Oy90eHA6aWZfZGlmZmVyZW50Jmd0OwogICAmbHQ7ZHQmZ3Q7CiAg ICAgICZsdDt0eHA6cGVybWxpbmsmZ3Q7Jmx0O3R4cDp0aXRsZSAvJmd0OyZsdDsvdHhwOnBl cm1saW5rJmd0OwogICAmbHQ7L2R0Jmd0OwogICAmbHQ7ZGQmZ3Q7CiAgICAgICZsdDt0eHA6 ZXhjZXJwdCAvJmd0OwogICAmbHQ7L2RkJmd0OwombHQ7L3R4cDpzbWRfZmVhdHVyZWQmZ3Q7 CjwvY29kZT48L3ByZT4KCgk8aDMgaWQ9ImVnMiI+RXhhbXBsZSAyOiBPbmUgZmVhdHVyZWQg YXJ0aWNsZSBhbmQgc2l4IHRlYXNlcnMgb24gdGhlIGhvbWUgcGFnZTwvaDM+CgoJPHA+U2Vs ZWN0IGFuIGFydGljbGUgYW5kIGxhYmVsIGl0IDxjb2RlPmZlYXR1cmU8L2NvZGU+LiBTZWxl Y3Qgc2l4IG90aGVycyBhbmQgbGFiZWwgdGhlbSA8Y29kZT50ZWFzZXJzPC9jb2RlPi4gQWRk IHNvbWUgZGVzY3JpcHRpb24gdGV4dCB0byB5b3VyIHRlYWFzZXIgYXJ0aWNsZXMuPC9wPgoK CTxwPkluIHlvdXIgZGVmYXVsdCBQYWdlLCBwdXQgdGhpczo8L3A+Cgo8cHJlIGNsYXNzPSJi bG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7dHhwOnNtZF9mZWF0dXJlZCBsYWJlbD0m cXVvdDtmZWF0dXJlJnF1b3Q7CiAgICAgd3JhcHRhZz0mcXVvdDtkaXYmcXVvdDsgaHRtbF9p ZD0mcXVvdDttYWluX2ZlYXR1cmUmcXVvdDsmZ3Q7CiAgICZsdDt0eHA6cGVybWxpbmsmZ3Q7 Jmx0O3R4cDp0aXRsZSAvJmd0OyZsdDsvdHhwOnBlcm1saW5rJmd0OwogICAmbHQ7dHhwOmFy dGljbGVfaW1hZ2UgY2xhc3M9JnF1b3Q7ZmVhdF9pbWFnZSZxdW90OyAvJmd0OwogICAmbHQ7 cCBjbGFzcz0mcXVvdDtsZWFkaW4mcXVvdDsmZ3Q7Jmx0O3R4cDpleGNlcnB0IC8mZ3Q7Jmx0 Oy9wJmd0OwombHQ7L3R4cDpzbWRfZmVhdHVyZWQmZ3Q7CjwvY29kZT48L3ByZT4KCjxwcmUg Y2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDt0eHA6c21kX2ZlYXR1cmVk IGxhYmVsPSZxdW90O3RlYXNlcnMmcXVvdDsKICAgICB3cmFwdGFnPSZxdW90O3VsJnF1b3Q7 IGJyZWFrPSZxdW90O2xpJnF1b3Q7IGh0bWxfaWQ9JnF1b3Q7dGVhc2VyX2Jsb2NrJnF1b3Q7 Jmd0OwogICAmbHQ7dHhwOnBlcm1saW5rJmd0OyZsdDt0eHA6dGl0bGUgLyZndDsmbHQ7L3R4 cDpwZXJtbGluayZndDsKICAgJmx0O3AgY2xhc3M9JnF1b3Q7bGVhZGluJnF1b3Q7Jmd0OyZs dDt0eHA6ZXhjZXJwdCAvJmd0OyZsdDsvcCZndDsKJmx0Oy90eHA6c21kX2ZlYXR1cmVkJmd0 Owo8L2NvZGU+PC9wcmU+CgoJPHA+SWYgeW91IHdhbnRlZCB0byBoYXZlIHNvbWUgb3RoZXIg YXJ0aWNsZXMgYmVuZWF0aCB0aG9zZSwgYnV0IGRpZG4mIzgyMTc7dCB3YW50IGFueSBkdXBs aWNhdGVzIHRvIGFwcGVhciB5b3UgY291bGQgdXNlOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2Nr Ij48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDt0eHA6c21kX3VuZmVhdHVyZWQgZm9ybT0mcXVv dDtteV9saXN0JnF1b3Q7IC8mZ3Q7CjwvY29kZT48L3ByZT4KCgk8aDMgaWQ9ImVnMyI+RXhh bXBsZSAzOiBQZXItc2VjdGlvbiBsYW5kaW5nIHBhZ2UgZmVhdHVyZWQgYXJ0aWNsZXM8L2gz PgoKCTxwPklmIHlvdSBoYWQgYSB6b28gc2l0ZSB3aXRoIGEgc2VjaXRvbiBmb3IgcHJpbWF0 ZXMsIGEgc2VjdGlvbiBmb3IgbWFtbWFscyBhbmQgYSBzZWN0aW9uIGZvciByZXB0aWxlcywg d2hlbiB5b3Ugc2V0IHVwIHlvdXIgZmVhdHVyZWQgYXJ0aWNsZSBsaXN0IGRlZmluZSB0aGVp ciBuYW1lcyBsaWtlIHRoaXM6PC9wPgoKCTx1bD4KCQk8bGk+RmVhdHVyZWQgcHJpbWF0ZXM8 L2xpPgoJCTxsaT5GZWF0dXJlZCBtYW1tYWxzPC9saT4KCQk8bGk+RmVhdHVyZWQgcmVwdGls ZXM8L2xpPgoJPC91bD4KCgk8cD5PbiB5b3VyIHNlY3Rpb24gbGFuZGluZyBwYWdlIHRlbXBs YXRlIHlvdSBjYW4gdGhlbiBkbyB0aGlzIHRvIGRpc3BsYXkgZm91ciBhcnRpY2xlcyBmcm9t IHRoZSByZWxldmFudCAoY3VycmVudCkgc2VjdGlvbjo8L3A+Cgo8cHJlIGNsYXNzPSJibG9j ayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7aDImZ3Q7TG9vayB3aG8mIzM5O3MgaGVyZTom bHQ7L2gyJmd0OwombHQ7dHhwOnNtZF9mZWF0dXJlZCBsYWJlbD0mIzM5O0ZlYXR1cmVkICZs dDt0eHA6c2VjdGlvbiAvJmd0OyYjMzk7CiAgICAgc2VjdGlvbj0mIzM5OyZsdDt0eHA6c2Vj dGlvbiAvJmd0OyYjMzk7IGxpbWl0PSZxdW90OzQmcXVvdDsKICAgICB3cmFwdGFnPSZxdW90 O2RpdiZxdW90OyBodG1sX2lkPSZxdW90O2ZlYXRfYmxvY2smcXVvdDsmZ3Q7CiAgICZsdDtk aXYgY2xhc3M9JnF1b3Q7cGltcGVkX2FydGljbGUmcXVvdDsmZ3Q7CiAgICAgICZsdDt0eHA6 cGVybWxpbmsmZ3Q7Jmx0O3R4cDp0aXRsZSAvJmd0OyZsdDsvdHhwOnBlcm1saW5rJmd0Owog ICAgICAmbHQ7dHhwOnNtZF9mZWF0dXJlZF9pbmZvIGl0ZW09JnF1b3Q7ZGVzY3JpcHRpb24m cXVvdDsgLyZndDsKICAgJmx0Oy9kaXYmZ3Q7CiZsdDsvdHhwOnNtZF9mZWF0dXJlZCZndDsK PC9jb2RlPjwvcHJlPgoKCTxoMyBpZD0iZWc0Ij5FeGFtcGxlIDQ6IENvbmRpdGlvbmFsIGNo ZWNrIGZvciBmZWF0dXJlZC1uZXNzPC9oMz4KCgk8cD5JZiBhIHNpdGUgdmlzaXRvciBoYXMg bmF2aWdhdGVkIGF3YXkgZnJvbSB5b3VyIGZyb250IHBhZ2UgYW5kIGlzIHZpZXdpbmcgYW4g YXJ0aWNsZSwgeW91IG1heSB3aXNoIHRvIGhpZ2hsaWdodCB0aGUgZmFjdCB0aGUgY3VycmVu dCBhcnRpY2xlIGlzIGEgZmVhdHVyZWQgcHJvZHVjdC4gU28sIHNvbWV3aGVyZSBpbnNpZGUg eW91IGFydGljbGUgZm9ybSBhZGQ6PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNs YXNzPSJibG9jayI+Jmx0O3R4cDpzbWRfaWZfZmVhdHVyZWQmZ3Q7CiAgICZsdDtwIGNsYXNz PSZxdW90O2hpbGlnaHQmcXVvdDsmZ3Q7RkVBVFVSRUQgUFJPRFVDVCZsdDsvcCZndDsKJmx0 Oy90eHA6c21kX2lmX2ZlYXR1cmVkJmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+T3IgaWYgeW91 IHdhbnRlZCB0byBvbmx5IGhpZ2hsaWdodCB0aGUgYXJ0aWNsZSBpZiBpdCB3YXMgYSBmZWF0 dXJlZCBvciBvbiBzcGVjaWFsIG9mZmVyOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29k ZSBjbGFzcz0iYmxvY2siPiZsdDt0eHA6c21kX2lmX2ZlYXR1cmVkIGxhYmVsPSZxdW90O0Zl YXR1cmVkLCBTcGVjaWFsJnF1b3Q7Jmd0OwogICAmbHQ7cCBjbGFzcz0mcXVvdDtoaWxpZ2h0 JnF1b3Q7Jmd0O0FzIGZlYXR1cmVkIG9uIHRoZSBmcm9udCBwYWdlISZsdDsvcCZndDsKJmx0 Oy90eHA6c21kX2lmX2ZlYXR1cmVkJmd0Owo8L2NvZGU+PC9wcmU+CgoJPGgyIGlkPSJjaGFu Z2Vsb2ciPkNoYW5nZWxvZzwvaDI+CgoJPHVsPgoJCTxsaT4xOCBKdW4gMTAgfCAwLjEwIHwg SW5pdGlhbCByZWxlYXNlPC9saT4KCQk8bGk+MDcgU2VwIDEwIHwgMC4yMCB8IFJlbmFtZWQg aWQgY29sdW1uIHRvIGZlYXRfaWQgOyBmaXhlZCA8Y29kZT5sYWJlbDwvY29kZT4gYXR0cmli dXRlIGJ1ZyAoYm90aCB0aGFua3MgcGllbWFuKSA7IGxhYmVsIHNlYXJjaGVzIGFyZSBub3cg ZXhhY3QgbWF0Y2hlcyA7IGFkZGVkIHByZWZzIGFuZCBwYWdpbmF0aW9uIHN1cHBvcnQgZm9y IGFkbWluIHNpZGUgOyBhZGRlZCA8Y29kZT4mbHQ7dHhwOnNtZF9pZl9mZWF0dXJlZCZndDs8 L2NvZGU+IDsgYWRkZWQgbGFiZWwgc2VsZWN0aW9uIGZyb20gZHJvcGRvd24gZHVyaW5nIGVk aXRpbmcgKHRoYW5rcyB0eWUpPC9saT4KCQk8bGk+MTMgU2VwIDEwIHwgMC4yMSB8IEFkZGVk ICYjODIxNjt0aXRsZSYjODIxNzsgYW5kIFRleHRpbGUgb3B0aW9ucyAoYm90aCB0aGFua3Mg YmcpPC9saT4KCQk8bGk+MTMgU2VwIDEwIHwgMC4yMiB8IEZpeGVkIG1pc3NpbmcgZG9TbGFz aCgpIG9uIHVudGV4dGlsZWQgaHRtbCBjb250ZW50ICh0aGFua3MgYmcpPC9saT4KCTwvdWw+ Cgo8L2Rpdj4KPCEtLSAqKiogQkVHSU4gUExVR0lOIENTUyAqKiogLS0+CjxzdHlsZSB0eXBl PSJ0ZXh0L2NzcyI+CiNzbWRfaGVscCB7IGxpbmUtaGVpZ2h0OjEuNSA7fQojc21kX2hlbHAg Y29kZSB7IGZvbnQtd2VpZ2h0OmJvbGQ7IGZvbnQ6IDEwNSUvMTMwJSAiQ291cmllciBOZXci LCBjb3VyaWVyLCBtb25vc3BhY2U7IGJhY2tncm91bmQtY29sb3I6ICNGRkZGQ0M7fQojc21k X2hlbHAgY29kZS5ibG9jayB7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgYm9yZGVyOjFweCBkb3R0 ZWQgIzk5OTsgYmFja2dyb3VuZC1jb2xvcjogI2YwZTY4YzsgZGlzcGxheTpibG9jazsgbWFy Z2luOjEwcHggMTBweCAyMHB4OyBwYWRkaW5nOjEwcHg7IH0KI3NtZF9oZWxwIGgxIHsgY29s b3I6ICMzNjk7IGZvbnQ6IDIwcHggR2VvcmdpYSwgc2Fucy1zZXJpZjsgbWFyZ2luOiAwOyB0 ZXh0LWFsaWduOiBjZW50ZXI7IH0KI3NtZF9oZWxwIGgyIHsgYm9yZGVyLWJvdHRvbTogMXB4 IHNvbGlkIGJsYWNrOyBwYWRkaW5nOjEwcHggMCAwOyBjb2xvcjogIzM2OTsgZm9udDogMTdw eCBHZW9yZ2lhLCBzYW5zLXNlcmlmOyB9CiNzbWRfaGVscCBoMyB7IGNvbG9yOiAjMjc1Njg1 OyBmb250OiBib2xkIDEycHggQXJpYWwsIHNhbnMtc2VyaWY7IGxldHRlci1zcGFjaW5nOiAx cHg7IG1hcmdpbjogMTBweCAwIDA7dGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsgdGV4dC1k ZWNvcmF0aW9uOnVuZGVybGluZTt9CiNzbWRfaGVscCBoNCB7IGZvbnQ6IGJvbGQgMTFweCBB cmlhbCwgc2Fucy1zZXJpZjsgbGV0dGVyLXNwYWNpbmc6IDFweDsgbWFyZ2luOiAxMHB4IDAg MCA7dGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsgfQojc21kX2hlbHAgLmF0bm0geyBmb250 LXdlaWdodDpib2xkOyBjb2xvcjojMzNkOyB9CiNzbWRfaGVscCAubWFuZCB7IGJhY2tncm91 bmQ6I2VlZTsgYm9yZGVyOjFweCBkb3R0ZWQgIzk5OTsgfQojc21kX2hlbHAgdGFibGUge3dp ZHRoOjkwJTsgdGV4dC1hbGlnbjpjZW50ZXI7IHBhZGRpbmctYm90dG9tOjFlbTt9CiNzbWRf aGVscCB0ZCwgI3NtZF9oZWxwIHRoIHtib3JkZXI6MXB4IHNvbGlkICM5OTk7IHBhZGRpbmc6 LjVlbSAwO30KI3NtZF9oZWxwIHVsIHsgbGlzdC1zdHlsZS10eXBlOnNxdWFyZTsgfQojc21k X2hlbHAgLmltcG9ydGFudCB7Y29sb3I6cmVkO30KI3NtZF9oZWxwIGxpIHsgbWFyZ2luOjVw eCAyMHB4IDVweCAzMHB4OyB9CiNzbWRfaGVscCAuYnJlYWsgeyBtYXJnaW4tdG9wOjVweDsg fQo8L3N0eWxlPgo8IS0tICoqKiBFTkQgUExVR0lOIENTUyAqKiogLS0+CiI7czozOiJtZDUi O3M6MzI6IjQxZGVmM2FiZmJjZDZhMDlhYjIwNmNkNzgyN2M0ZmU1Ijt9