# Name: smd_where_used v0.30 # Type: Admin/AJAX plugin # Find which forms/pages/articles/plugins/text have been used where in your design # Author: Stef Dawson # URL: http://stefdawson.com/ # Recommended load order: 5 # ..................................................................... # This is a plugin for Textpattern CMS - http://textpattern.com/ # To install: textpattern > admin > plugins # Paste the following text into the 'Install plugin' box: # ..................................................................... YToxMTp7czo0OiJuYW1lIjtzOjE0OiJzbWRfd2hlcmVfdXNlZCI7czo2OiJhdXRob3IiO3M6 MTE6IlN0ZWYgRGF3c29uIjtzOjEwOiJhdXRob3JfdXJpIjtzOjIyOiJodHRwOi8vc3RlZmRh d3Nvbi5jb20vIjtzOjc6InZlcnNpb24iO3M6NDoiMC4zMCI7czoxMToiZGVzY3JpcHRpb24i O3M6ODA6IkZpbmQgd2hpY2ggZm9ybXMvcGFnZXMvYXJ0aWNsZXMvcGx1Z2lucy90ZXh0IGhh dmUgYmVlbiB1c2VkIHdoZXJlIGluIHlvdXIgZGVzaWduIjtzOjQ6ImNvZGUiO3M6MTMzMjk6 Ii8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0NCmlmIChAdHhwaW50ZXJmYWNlID09ICdhZG1pbicpIHsNCglhZGRfcHJp dnMoJ3NtZF93dScsJzEsMicpOw0KDQoJLy8gRXh0ZW5zaW9ucyB0YWINCglyZWdpc3Rlcl90 YWIoJ2V4dGVuc2lvbnMnLCAnc21kX3d1Jywgc21kX3d1X2dUeHQoJ3NtZF93dScpKTsNCgly ZWdpc3Rlcl9jYWxsYmFjaygnc21kX3d1JywgJ3NtZF93dScpOw0KfQ0KDQovLyAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t DQpmdW5jdGlvbiBzbWRfd3UoJGV2ZW50LCAkc3RlcCkgew0KCWlmKCEkc3RlcCBvciAhaW5f YXJyYXkoJHN0ZXAsIGFycmF5KA0KCQkJJ3NtZF93dV9zZWFyY2gnLA0KCQkJJ3NtZF93dV9w cmVmc2F2ZScsDQoJCSkpKSB7DQoJCXNtZF93dV9zaG93Zm9ybSgnJyk7DQoJfSBlbHNlICRz dGVwKCk7DQp9DQoNCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCmZ1bmN0aW9uIHNtZF93dV9zaG93Zm9ybSgkbWVz c2FnZSwgJHRlcm09JycsICRzZWw9YXJyYXkoKSwgJGluY2w9MCwgJHdob2xlPTAsICRtb2Rl PTAsICRwbHVndHlwZT0wLCAkY2FzZT0wKSB7DQoJcGFnZXRvcChzbWRfd3VfZ1R4dCgnc21k X3d1JyksJG1lc3NhZ2UpOw0KCSRidG5TZWFyY2ggPSBmSW5wdXQoJ3N1Ym1pdCcsICdzbWRf d3Vfc2VhcmNoJywgZ1R4dCgnc2VhcmNoJyksICdzbWFsbGVyYm94Jykuc0lucHV0KCdzbWRf d3Vfc2VhcmNoJykuaElucHV0KCdwbHVndHlwZScsICgoJHBsdWd0eXBlPT0xKSA/IDAgOiAx KSk7DQoJJGJ0blN0eWxlID0gJyBzdHlsZT0iYm9yZGVyOjA7aGVpZ2h0OjI1cHgiJzsNCgkk cGxhY2UgPSBhcnJheSgnc2VjdGlvbnMnLCdwYWdlcycsJ2Zvcm1zJywnc3R5bGVzaGVldHMn LCdhcnRpY2xlcycpOw0KCSRzZWwgPSBlbXB0eSgkc2VsKSA/IHVuc2VyaWFsaXplKGdldF9w cmVmKCdzbWRfd3VfbG9va19pbicpKSA6ICRzZWw7DQoJJHNlbCA9IGVtcHR5KCRzZWwpID8g JHBsYWNlIDogJHNlbDsNCg0KCWVjaG8gJzxmb3JtIG1ldGhvZD0icG9zdCIgbmFtZT0ic21k X3d1X2Zvcm0iPic7DQoJZWNobyBzdGFydFRhYmxlKCdsaXN0Jyk7DQoJZWNobyB0cihmTGFi ZWxDZWxsKHNtZF93dV9nVHh0KCdzZWFyY2hfbGJsJykpIC4gdGRjcyhmSW5wdXQoJ3RleHQn LCAnc2VhcmNoX2ZvcicsIHN0cmlwc2xhc2hlcygkdGVybSksICcnLCAnJywgJycsIDMwLCAn JywgJ3NtZF9zZWFyY2hfZm9yJyksIDUpIC4gdGRhKCRidG5TZWFyY2gsICRidG5TdHlsZSkp Ow0KCWVjaG8gdHIoZkxhYmVsQ2VsbChzbWRfd3VfZ1R4dCgnZmlsdGVyJykpLnRkY3MocmFk aW8oJ21ldGgnLDAsKCgkaW5jbD09MCk/MTowKSkuc21kX3d1X2dUeHQoJ2luY2x1c2lvbicp LiIgIiAuIHJhZGlvKCdtZXRoJywxLCgoJGluY2w9PTEpPzE6MCkpLnNtZF93dV9nVHh0KCdl eGNsdXNpb24nKS4gIiB8ICIgLiBzbWRfd3VfZ1R4dCgnd2hvbGVfd29yZCcpLmNoZWNrYm94 KCd3aG9sZScsIDEsICgoJHdob2xlPT0xKT8xOjApKS4gIiB8ICIgLiBzbWRfd3VfZ1R4dCgn bWF0Y2hfY2FzZScpLmNoZWNrYm94KCdjYXNlJywgMSwgKCgkY2FzZT09MSk/MTowKSksIDUp KTsNCgkkb3V0ID0gJyc7DQoJZm9yZWFjaCAoJHBsYWNlIGFzICRoZXJlKSB7DQoJCSRvdXQg Lj0gZkxhYmVsQ2VsbCh1Y2ZpcnN0KGdUeHQoJGhlcmUpKSAuIGNoZWNrYm94KCdwbGFjZXNb XScsICRoZXJlLCBpbl9hcnJheSgkaGVyZSwkc2VsKSkpOw0KCX0NCgllY2hvIHRyKGZMYWJl bENlbGwoc21kX3d1X2dUeHQoJ3NlYXJjaF93aGVyZV9sYmwnKSkgLiAkb3V0KTsNCgllY2hv IGVuZFRhYmxlKCk7DQoJZWNobyAnPC9mb3JtPic7DQoNCgkvLyBSZW5kZXIgdGhlIHByZWZz IGNoZWNrYm94ZXMNCgkkY29scyA9IGdldFRoaW5ncygnZGVzY3JpYmUgYCcuUEZYLid0ZXh0 cGF0dGVybmAnKTsNCgkkZmxkcyA9IGRvX2xpc3QoZ2V0X3ByZWYoJ3NtZF93dV9hcnRpY2xl X2ZpZWxkcycpKTsNCgkkZmxkcyA9IGVtcHR5KCRmbGRzWzBdKSA/IGRvX2xpc3QoJ0JvZHks RXhjZXJwdCxvdmVycmlkZV9mb3JtLFNlY3Rpb24sVGl0bGUsS2V5d29yZHMnKSA6ICRmbGRz Ow0KDQoJZWNobyAnPGRpdiBpZD0ic21kX3d1X3ByZWZ3cmFwIj48YSBpZD0ic21kX3d1X3By ZWZ0b2ciIGhyZWY9IiMiPicuc21kX3d1X2dUeHQoJ3ByZWZzX2xpbmsnKS4nPC9hPic7DQoJ ZWNobyAnPGZvcm0gbWV0aG9kPSJwb3N0IiBpZD0ic21kX3d1X3ByZWZzIiBzdHlsZT0iZGlz cGxheTpub25lOyI+JzsNCglmb3JlYWNoICgkY29scyBhcyAkY29sKSB7DQoJCWVjaG8gYnIu Y2hlY2tib3goJ3NtZF93dV9hcnRpY2xlX2ZpZWxkc1tdJywgJGNvbCwgKGluX2FycmF5KCRj b2wsICRmbGRzKSA/IDEgOiAwKSkuc3AuJGNvbDsNCgl9DQoJZWNobyBmSW5wdXQoJ3N1Ym1p dCcsICdzbWRfd3VfcHJlZnNhdmUnLCBnVHh0KCdzYXZlJyksICdzbWFsbGVyYm94JywgJycs ICcnLCAnJywgJycsICdzbWRfd3VfcHJlZnNhdmUnKTsNCgllY2hvICc8L2Zvcm0+PC9kaXY+ JzsNCgllY2hvIDw8PEVPSlMNCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4NCmpR dWVyeShmdW5jdGlvbigpIHsNCglqUXVlcnkoIiNzbWRfc2VhcmNoX2ZvciIpLmZvY3VzKCk7 DQoJalF1ZXJ5KCIjc21kX3d1X3ByZWZzIikuaGlkZSgpOw0KCWpRdWVyeSgiI3NtZF93dV9w cmVmdG9nIikuY2xpY2soZnVuY3Rpb24oKSB7DQoJCWpRdWVyeSgiI3NtZF93dV9wcmVmcyIp LnRvZ2dsZSgnZmFzdCcpOw0KCQlyZXR1cm4gZmFsc2U7DQoJfSk7DQoJalF1ZXJ5KCIjc21k X3d1X3ByZWZzYXZlIikuY2xpY2soZnVuY3Rpb24oKSB7DQoJCXZhciBvdXQgPSBbXTsNCgkJ alF1ZXJ5KCIjc21kX3d1X3ByZWZzIGlucHV0OmNoZWNrZWQiKS5lYWNoKGZ1bmN0aW9uKCkg ew0KCQkJb3V0LnB1c2goalF1ZXJ5KHRoaXMpLnZhbCgpKTsNCgkJfSk7DQoNCgkJc2VuZEFz eW5jRXZlbnQoDQoJCQl7DQoJCQkJZXZlbnQ6IHRleHRwYXR0ZXJuLmV2ZW50LA0KCQkJCXN0 ZXA6ICdzbWRfd3VfcHJlZnNhdmUnLA0KCQkJCXNtZF93dV9hcnRpY2xlX2ZpZWxkczogb3V0 LmpvaW4oJywnKQ0KCQkJfQ0KCQkpOw0KCQlqUXVlcnkoIiNzbWRfd3VfcHJlZnMiKS50b2dn bGUoJ2Zhc3QnKTsNCgkJcmV0dXJuIGZhbHNlOw0KCX0pOw0KfSk7DQo8L3NjcmlwdD4NCjxz dHlsZSB0eXBlPSJ0ZXh0L2NzcyI+DQojc21kX3d1X3ByZWZ3cmFwIHsNCgl3aWR0aDoxNDBw eDsNCgltYXJnaW46MTBweCBhdXRvIDA7DQp9DQo8L3N0eWxlPg0KRU9KUzsNCn0NCg0KLy8g LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQ0KZnVuY3Rpb24gc21kX3d1X3ByZWZzYXZlKCkgew0KCSRjb2xzID0gZ2V0VGhp bmdzKCdkZXNjcmliZSBgJy5QRlguJ3RleHRwYXR0ZXJuYCcpOw0KCSRmaWVsZHMgPSBkb19s aXN0KGdwcygnc21kX3d1X2FydGljbGVfZmllbGRzJykpOw0KCSRvZmxkcyA9IGFycmF5KCk7 DQoJZm9yZWFjaCgkZmllbGRzIGFzICRmbGQpIHsNCgkJaWYgKGluX2FycmF5KCRmbGQsICRj b2xzKSkgew0KCQkJJG9mbGRzW10gPSAkZmxkOw0KCQl9DQoJfQ0KCXNldF9wcmVmKCdzbWRf d3VfYXJ0aWNsZV9maWVsZHMnLCBqb2luKCcsJywkb2ZsZHMpLCAnc21kX3d1JywgUFJFRl9I SURERU4sICd0ZXh0X2lucHV0Jyk7DQoJc2VuZF94bWxfcmVzcG9uc2UoKTsNCn0NCg0KLy8g LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQ0KZnVuY3Rpb24gc21kX3d1X3NlYXJjaCgpIHsNCglleHRyYWN0KGRvU2xhc2go Z3BzYShhcnJheSgnc2VhcmNoX2ZvcicpKSkpOw0KCSR3aG9sZSA9IGdwcygnd2hvbGUnKTsN CgkkY2FzZSA9IGdwcygnY2FzZScpOyAvLyAwID0gY2FzZSBpbnNlbnNpdGl2ZSwgMSA9IGNh c2Ugc2Vuc2l0aXZlDQoJJGNhc2VTZW5zZSA9ICgkY2FzZT09MSkgPyAnIEJJTkFSWSAnIDog Jyc7DQoJJG1ldGggPSBncHMoJ21ldGgnKTsgLy8gMCA9IGluY2x1ZGUsIDEgPSBleGNsdWRl DQoJJHBsdWd0eXBlID0gZ3BzKCdwbHVndHlwZScpOyAvLyAwID0gcHVibGljLCAxID0gMCth ZG1pbiwgMiA9IDErbGlicmFyeQ0KCSRwbHVndHlwZSA9IChpc19udW1lcmljKCRwbHVndHlw ZSkgJiYgJHBsdWd0eXBlIDwgMykgPyAkcGx1Z3R5cGUgOiAwOw0KCSRqb2lubWUgPSAoJG1l dGggPT0gMCkgPyAiIE9SICIgOiAiIEFORCAiOw0KCSRwbGFjZXMgPSBncHMoJ3BsYWNlcycp Ow0KCSRwbGFjZXMgPSBpc19hcnJheSgkcGxhY2VzKSA/ICRwbGFjZXMgOiBhcnJheSgpOw0K CXNldF9wcmVmKCdzbWRfd3VfbG9va19pbicsIHNlcmlhbGl6ZSgkcGxhY2VzKSwgJ3NtZF93 dScsIFBSRUZfSElEREVOLCAndGV4dF9pbnB1dCcpOw0KCSRtb2RlID0gKCRzZWFyY2hfZm9y KSA/IDAgOiAxOw0KCXNtZF93dV9zaG93Zm9ybSgnJywgJHNlYXJjaF9mb3IsICRwbGFjZXMs ICRtZXRoLCAkd2hvbGUsICRtb2RlLCAkcGx1Z3R5cGUsICRjYXNlKTsNCg0KCSRhcnRmbGRz ID0gZ2V0X3ByZWYoJ3NtZF93dV9hcnRpY2xlX2ZpZWxkcycpOw0KCSRhcnRmbGRzID0gZW1w dHkoJGFydGZsZHMpID8gJ0JvZHksRXhjZXJwdCxvdmVycmlkZV9mb3JtLFNlY3Rpb24sVGl0 bGUsS2V5d29yZHMnIDogJGFydGZsZHM7DQoNCgkvLyBFbnRyaWVzIGluIHRoZSBwbGFjZVRh YmxlIGFycmF5IGFyZToNCgkvLyAgMDogVGFibGUgdG8gc2VhcmNoDQoJLy8gIDE6IENvbHVt biB0byBzZWFyY2gNCgkvLyAgMjogQ29sdW1uIHRvIHJldHVybg0KCS8vICAzOiBIZWFkaW5n IHRvIGRpc3BsYXkgaWYgcmVzdWx0cyBmb3VuZA0KCS8vICA0OiBFdmVudCBvZiBkZXN0aW5h dGlvbiBVUkwNCgkvLyAgNTogU3RlcCBvZiBkZXN0aW5hdGlvbiBVUkwNCgkvLyAgNjogQWRk aXRpb25hbCBVUkwgdmFyDQoJLy8gIDc6IEFkZGl0aW9uYWwgVVJMIHZhciByZXBsYWNlbWVu dCAodXNlZCBpbiBzdHJ0cikNCgkkcGxhY2VUYWJsZSA9IGFycmF5KA0KCQkncGFnZXMnID0+ IGFycmF5KCd0eHBfcGFnZScsICd1c2VyX2h0bWwnLCAnbmFtZScsIGdUeHQoJ3BhZ2VzJyks ICdwYWdlJywgJycsICduYW1lJywgJ3tuYW1lfScsICcnKSwNCgkJJ2Zvcm1zJyA9PiBhcnJh eSgndHhwX2Zvcm0nLCAnZm9ybScsICduYW1lJywgZ1R4dCgnZm9ybXMnKSwgJ2Zvcm0nLCAn Zm9ybV9lZGl0JywgJ25hbWUnLCAne25hbWV9JywgJycpLA0KCQknYXJ0aWNsZXMnID0+IGFy cmF5KCd0ZXh0cGF0dGVybicsICRhcnRmbGRzLCAnSUQsdGl0bGUnLCBnVHh0KCdhcnRpY2xl cycpLCAnYXJ0aWNsZScsICdlZGl0JywgJ0lEJywgJ3tJRH0nLCAnJyksDQoJCSdzZWN0aW9u cycgPT4gYXJyYXkoJ3R4cF9zZWN0aW9uJywgJ3BhZ2UsY3NzJywgJ25hbWUnLCBnVHh0KCdz ZWN0aW9ucycpLCAnc2VjdGlvbicsICcnLCAnIycsICdzZWN0aW9uLXtuYW1lfScsICcnKSwN CgkJJ3N0eWxlc2hlZXRzJyA9PiBhcnJheSgndHhwX2NzcycsICdjc3MnLCAnbmFtZScsIHNt ZF93dV9nVHh0KCdzdHlsZXNoZWV0cycpLCAnY3NzJywgJycsICduYW1lJywgJ3tuYW1lfScs ICcnKSwNCgkpOw0KDQoJJHJzID0gYXJyYXkoKTsNCgllY2hvIG4uJzxociB3aWR0aD0iNTAl IiAvPic7DQoJZWNobyBzdGFydFRhYmxlKCdsaXN0Jyk7DQoJJGNvbEhlYWQgPSBhcnJheSgp Ow0KCSRjb2xCb2R5ID0gYXJyYXkoKTsNCg0KCWlmICgkc2VhcmNoX2Zvcikgew0KCQllY2hv IHRyKHRkY3ModGFnKGdUeHQoJ3NlYXJjaF9yZXN1bHRzJyksICdoMicpLCA1KSk7DQoJCWZv cmVhY2ggKCRwbGFjZXMgYXMgJHBsYWNlKSB7DQoJCQkkY3JvdyA9ICRwbGFjZVRhYmxlWyRw bGFjZV07DQoJCQkkd2hlcmUgPSBhcnJheSgpOw0KCQkJJHdpdGVtcyA9IGRvX2xpc3QoJGNy b3dbMV0pOw0KCQkJJGxpc3QgPSBkb19saXN0KCRjcm93WzJdKTsNCg0KCQkJZm9yZWFjaCAo JHdpdGVtcyBhcyAkaXRlbSkgew0KCQkJCSR3aGVyZVtdID0gJGNhc2VTZW5zZSAuICRpdGVt IC4gKCgkbWV0aD09MSkgPyAnIE5PVCcgOiAnJykgLiAoKCR3aG9sZT09MSkgPyAnIFJFR0VY UCBcJ1tbOjw6XV0nLiRzZWFyY2hfZm9yLidbWzo+Ol1dXCcnIDogIiBMSUtFICclJHNlYXJj aF9mb3IlJyIpOw0KCQkJfQ0KCQkJJHJzID0gc2FmZV9yb3dzKCRjcm93WzJdLCAkY3Jvd1sw XSwgJygnLmpvaW4oJGpvaW5tZSwgJHdoZXJlKS4nKSBPUkRFUiBCWSAnLiRsaXN0WzBdKTsN CgkJCSRjb2xIZWFkW10gPSB0ZChzdHJvbmcoJGNyb3dbM10pKTsNCgkJCWlmICgkcnMpIHsN CgkJCQkkb3V0ID0gJzx1bD4nOw0KCQkJCWZvcmVhY2ggKCRycyBhcyAkcm93KSB7DQoJCQkJ CSRobGluayA9ICcnOw0KCQkJCQkkdmFycyA9ICcnOw0KCQkJCQlmb3JlYWNoICgkbGlzdCBh cyAkY29sKSB7DQoJCQkJCQkkZnJvbSA9ICd7Jy4kY29sLid9JzsNCgkJCQkJCWlmIChzdHJw b3MoJGNyb3dbN10sICRmcm9tKSAhPT0gZmFsc2UpIHsNCgkJCQkJCQlpZiAoJGNyb3dbNl0g PT0gIiMiKSB7DQoJCQkJCQkJCSR2YXJzID0gam9pbl9xcyhhcnJheSgiZXZlbnQiID0+ICRj cm93WzRdLCAic3RlcCIgPT4gJGNyb3dbNV0pKS4kY3Jvd1s2XS5zdHJ0cigkY3Jvd1s3XSwg YXJyYXkoJGZyb20gPT4gJHJvd1skY29sXSkpOw0KCQkJCQkJCX0gZWxzZSB7DQoJCQkJCQkJ CSR2YXJzID0gam9pbl9xcyhhcnJheSgiZXZlbnQiID0+ICRjcm93WzRdLCAic3RlcCIgPT4g JGNyb3dbNV0sICRjcm93WzZdID0+IHN0cnRyKCRjcm93WzddLCBhcnJheSgkZnJvbSA9PiAk cm93WyRjb2xdKSkpKTsNCgkJCQkJCQl9DQoJCQkJCQl9DQoJCQkJCQkkaGxpbmsgLj0gJHJv d1skY29sXS4iICI7DQoJCQkJCX0NCgkJCQkJJG91dCAuPSAoJGhsaW5rKSA/ICc8bGk+JyAu ICgoJHZhcnMpID8gJzxhIGhyZWY9ImluZGV4LnBocCcuJHZhcnMuJyI+Jy4kaGxpbmsuJzwv YT4gJyA6ICRobGluaykgLiAnPC9saT4nOiAnJzsNCgkJCQl9DQoJCQkJJG91dCAuPSAnPC91 bD4nOw0KCQkJCSRjb2xCb2R5W10gPSB0ZCgkb3V0KTsNCgkJCX0gZWxzZSB7DQoJCQkJJGNv bEJvZHlbXSA9IHRkKGdUeHQoJ25vX3Jlc3VsdHNfZm91bmQnKSk7DQoJCQl9DQoJCX0NCgkJ ZWNobyB0cihqb2luKCIgIiwgJGNvbEhlYWQpKTsNCgkJZWNobyB0cihqb2luKCIgIiwgJGNv bEJvZHkpKTsNCgl9IGVsc2Ugew0KCQkvLyBObyBzZWFyY2ggY3JpdGVyaWEsIHNvIHNob3cg b3JwaGFucw0KCQllY2hvIHRyKHRkY3ModGFnKHNtZF93dV9nVHh0KCdvcnBoYW5fcmVzdWx0 cycpLCAnaDInKSwgNSkpOw0KDQoJCS8vIFJlcHJvZ3JhbSB0aGUgcGxhY2VzL3BsYWNlVGFi bGUNCgkJJGFydGtleSA9IGFycmF5X3NlYXJjaCgnYXJ0aWNsZXMnLCAkcGxhY2VzKTsNCgkJ aWYgKCRhcnRrZXkgIT09IGZhbHNlKSB7DQoJCQl1bnNldCgkcGxhY2VzWyRhcnRrZXldKTsN CgkJfQ0KDQoJCS8vIHBhZ2VzL2Zvcm1zL3NlY3Rpb25zIHRvIGlnbm9yZSBiZWNhdXNlIHRo ZXkgYXJlIHN0YXRpYyBhbmQgY2Fubm90IGJlIGRlbGV0ZWQNCgkJJGVzc2VudGlhbHMgPSBh cnJheSgNCgkJCSdzZWN0aW9ucycgPT4gYXJyYXkoJ2RlZmF1bHQnKSwNCgkJCSdwYWdlcycg PT4gYXJyYXkoJ2Vycm9yX2RlZmF1bHQnKSwNCgkJCSdmb3JtcycgPT4gYXJyYXkoJ2NvbW1l bnRzJywnY29tbWVudHNfZGlzcGxheScsJ2NvbW1lbnRfZm9ybScsJ2RlZmF1bHQnLCdMaW5r cycsJ2ZpbGVzJyksIC8vIGNvcGllZCBmcm9tIHR4cF9mb3Jtcw0KCQkpOw0KDQoJCSRwbGFj ZXNbXSA9ICdwbHVnaW5zJzsNCg0KCQkkcGxhY2VUYWJsZVsncGx1Z2lucyddID0gYXJyYXko J3R4cF9wbHVnaW4nLCAnbmFtZScsICduYW1lJywgZ1R4dCgncGx1Z2lucycpLCAncGx1Z2lu JywgJycsICcjJywgJ3tuYW1lfScpOw0KCQkkcGxhY2VUYWJsZVsnc3R5bGVzaGVldHMnXSA9 IGFycmF5KCd0eHBfY3NzJywgJ25hbWUnLCAnbmFtZScsIHNtZF93dV9nVHh0KCdzdHlsZXNo ZWV0cycpLCAnY3NzJywgJycsICduYW1lJywgJ3tuYW1lfScpOw0KDQoJCSRwbGFjZVRhYmxl Wydmb3JtcyddWzBdID0gIlNFTEVDVCB0Zi5uYW1lIEZST00gIiAuc2FmZV9wZngoJ3R4cF9m b3JtJykuICIgQVMgdGYgV0hFUkUgdGYubmFtZSBOT1QgSU4gKCIgLmRvUXVvdGUoaW1wbG9k ZSgiJywnIiwkZXNzZW50aWFsc1snZm9ybXMnXSkpLiAiKSBPUkRFUiBCWSB0Zi5uYW1lIjsg Ly8gV291bGQgYmUgbmljZSB0byBleGNsdWRlIGZvcm1zIHRoYXQgcmVmZXJlbmNlIGZvcm1z IGhlcmUgaW5zdGVhZCBvZiBpdGVyYXRpbmcgdGhyb3VnaCB0aGVtIGxhdGVyDQoJCSRwbGFj ZVRhYmxlWydwYWdlcyddWzBdID0gIlNFTEVDVCB0cC5uYW1lIEZST00gIiAuc2FmZV9wZngo J3R4cF9zZWN0aW9uJykuICIgQVMgdHMgUklHSFQgSk9JTiAiIC5zYWZlX3BmeCgndHhwX3Bh Z2UnKS4gIiBBUyB0cCBPTiB0cy5wYWdlID0gdHAubmFtZSBXSEVSRSB0cy5wYWdlIElTIE5V TEwgQU5EIHRwLm5hbWUgTk9UIElOICgiIC5kb1F1b3RlKGltcGxvZGUoIicsJyIsJGVzc2Vu dGlhbHNbJ3BhZ2VzJ10pKS4gIikgT1JERVIgQlkgdHAubmFtZSI7DQoJCSRwbGFjZVRhYmxl WydwbHVnaW5zJ11bMF0gPSAiU0VMRUNUIHRnLm5hbWUsIHRnLmNvZGUgRlJPTSAiIC5zYWZl X3BmeCgndHhwX3BsdWdpbicpLiAiIEFTIHRnIFdIRVJFIHR5cGUgPCAiIC4oJHBsdWd0eXBl KzEpLiAiIEFORCB0Zy5uYW1lICE9ICdzbWRfd2hlcmVfdXNlZCcgT1JERVIgQlkgdGcubmFt ZSI7DQoJCSRwbGFjZVRhYmxlWydzZWN0aW9ucyddWzBdID0gIlNFTEVDVCB0cy5uYW1lIEZS T00gIiAuc2FmZV9wZngoJ3R4cF9zZWN0aW9uJykuICIgQVMgdHMgTEVGVCBKT0lOICIgLnNh ZmVfcGZ4KCd0ZXh0cGF0dGVybicpLiAiIEFTIHR4cCBPTiB0cy5uYW1lID0gdHhwLnNlY3Rp b24gV0hFUkUgSUQgSVMgTlVMTCBBTkQgdHMubmFtZSBOT1QgSU4gKCIgLmRvUXVvdGUoaW1w bG9kZSgiJywnIiwkZXNzZW50aWFsc1snc2VjdGlvbnMnXSkpLiAiKSBPUkRFUiBCWSB0cy5u YW1lIjsNCgkJJHBsYWNlVGFibGVbJ3N0eWxlc2hlZXRzJ11bMF0gPSAiU0VMRUNUIHRjLm5h bWUgRlJPTSAiIC5zYWZlX3BmeCgndHhwX3NlY3Rpb24nKS4gIiBBUyB0cyBSSUdIVCBKT0lO ICIgLnNhZmVfcGZ4KCd0eHBfY3NzJykuICIgQVMgdGMgT04gdHMuY3NzID0gdGMubmFtZSBX SEVSRSB0cy5wYWdlIElTIE5VTEwgT1JERVIgQlkgdGMubmFtZSI7DQoNCgkJLy8gRm9yICJh d2t3YXJkIiBxdWVyaWVzIHRoYXQgY2FuJ3QgYmUgZG9uZSBpbiBvbmUgc2hvdCwgdGhlcmUg YXJlIHRocmVlIHRoaW5ncyByZXF1aXJlZCBwZXIgJHBsYWNlOg0KCQkvLyAgMTogdHhwIHRh YmxlIG5hbWUNCgkJLy8gIDI6IGxpc3Qgb2YgY29sdW1ucyB0byBjb21wYXJlDQoJCS8vICAz OiBtZXRob2Qgb2YgY29tcGFyaXNvbiBwZXIgY29sdW1uICgwID0gImRpcmVjdCBtYXRjaCIs IDEgPSAibGlrZSIpDQoJCSRjVGFibGUgPSBhcnJheSgNCgkJCSdwbHVnaW5zJyA9PiBhcnJh eSgNCgkJCQkndHhwX2Zvcm0nID0+IGFycmF5KCdmb3JtJyA9PiAxKSwNCgkJCQkndHhwX3Bh Z2UnID0+IGFycmF5KCd1c2VyX2h0bWwnID0+IDEpLA0KCQkJCSd0ZXh0cGF0dGVybicgPT4g YXJyYXkoJ0JvZHknID0+IDEsICdFeGNlcnB0JyA9PiAxKSwNCgkJCSksDQoJCQknZm9ybXMn ID0+IGFycmF5KA0KCQkJCSd0eHBfZm9ybScgPT4gYXJyYXkoJ2Zvcm0nID0+IDEpLA0KCQkJ CSd0eHBfcGFnZScgPT4gYXJyYXkoJ3VzZXJfaHRtbCcgPT4gMSksDQoJCQkJJ3RleHRwYXR0 ZXJuJyA9PiBhcnJheSgnQm9keScgPT4gMSwgJ0V4Y2VycHQnID0+IDEsICdvdmVycmlkZV9m b3JtJyA9PiAwKSwNCgkJCSksDQoJCSk7DQoNCgkJLy8gV29yayBvbiBhIGNvbHVtbiBhdCBh IHRpbWUNCgkJZm9yZWFjaCAoJHBsYWNlcyBhcyAkcGxhY2UpIHsNCgkJCSRjcm93ID0gJHBs YWNlVGFibGVbJHBsYWNlXTsNCgkJCSRjb2xSZWZzID0gZG9fbGlzdCgkY3Jvd1syXSk7DQoJ CQkkY29sSGVhZFtdID0gdGQoc3Ryb25nKCRjcm93WzNdIC4gKCgkcGxhY2UgPT0gJ3BsdWdp bnMnKSA/ICgoJHBsdWd0eXBlPT0wKSA/IHNtZF93dV9nVHh0KCdwdWJsaWNfcGx1Z2lucycp IDogc21kX3d1X2dUeHQoJ2FkbWluX3BsdWdpbnMnKSApIDogJycpICkpOw0KCQkJJHJzID0g c3RhcnRSb3dzKCRjcm93WzBdKTsNCgkJCWlmICgkcnMpIHsNCgkJCQkkb3V0ID0gJzx1bD4n Ow0KCQkJCXdoaWxlICgkcm93ID0gbmV4dFJvdygkcnMpKSB7DQoJCQkJCS8vIENvdW50IHRo ZSBubyBvZiByZWNvcmRzIG1hdGNoaW5nIHRoaXMgbmFtZSBpbiBlYWNoIHRhYmxlLg0KCQkJ CQkvLyBBbnkgdGltZSB0aGlzIGdvZXMgYWJvdmUgemVybywgdGhlIGl0ZW0gaXMgdXNlZCBh bmQgaXQgY2FuIGJlIGlnbm9yZWQNCgkJCQkJJGZuYWxpYXNlcyA9IGFycmF5KCk7DQoJCQkJ CWlmIChhcnJheV9rZXlfZXhpc3RzKCRwbGFjZSwgJGNUYWJsZSkpIHsNCgkJCQkJCS8vIFBs dWdpbiBmdW5jdGlvbnMgYXJlIG5vdCBuZWNlc3NhcmlseSB0aGUgbmFtZSBvZiB0aGUgcGx1 Z2luIGl0c2VsZi4NCgkJCQkJCS8vIEZpbmQgYWxsIGZ1bmN0aW9uIGRlZmluaXRpb25zIGFu ZCBidWlsZCBhIGxpc3Qgb2YgYWxpYXNlcw0KCQkJCQkJaWYgKCRwbGFjZSA9PSAncGx1Z2lu cycpIHsNCgkJCQkJCQkkcmUgPSAnL2Z1bmN0aW9uXHMrKFtBLVphLXowLTlfXSspXHMqXCgv JzsNCgkJCQkJCQkkbnVtID0gcHJlZ19tYXRjaF9hbGwoJHJlLCAkcm93Wydjb2RlJ10sICRm bmFsaWFzZXMpOw0KCQkJCQkJfQ0KDQoJCQkJCQkkcmVjcyA9IDA7DQoJCQkJCQlmb3JlYWNo ICgkY1RhYmxlWyRwbGFjZV0gYXMgJHRibCA9PiAkY29sSW5mbykgew0KCQkJCQkJCWlmICgk cmVjcyA9PSAwKSB7DQoJCQkJCQkJCSR3aGVyZSA9IGFycmF5KCk7DQoJCQkJCQkJCWZvcmVh Y2ggKCRjb2xJbmZvIGFzICRjb2xOYW1lID0+ICRxcnlUeXBlKSB7DQoJCQkJCQkJCQkkd2hl cmVbXSA9ICRjb2xOYW1lIC4gKCgkcXJ5VHlwZT09MCkgPyAiID0gJyIgLiRyb3dbJGNvbFJl ZnNbMF1dLiAiJyIgOiAiIExJS0UgJyUiIC4kcm93WyRjb2xSZWZzWzBdXS4gIiUnIik7DQoJ CQkJCQkJCQlpZiAoY291bnQoJGZuYWxpYXNlcykgPiAxKSB7DQoJCQkJCQkJCQkJZm9yZWFj aCAoJGZuYWxpYXNlc1sxXSBhcyAkZm5hbGlhcykgew0KCQkJCQkJCQkJCQkkd2hlcmVbXSA9 ICRjb2xOYW1lIC4gKCgkcXJ5VHlwZT09MCkgPyAiID0gJyIgLiRmbmFsaWFzLiAiJyIgOiAi IExJS0UgJyUiIC4kZm5hbGlhcy4gIiUnIik7DQoJCQkJCQkJCQkJfQ0KCQkJCQkJCQkJfQ0K CQkJCQkJCQl9DQoJCQkJCQkJCSR3aGVyZSA9IGpvaW4oIiBPUiAiLCAkd2hlcmUpOw0KCQkJ CQkJCQkkcmVjcyArPSBzYWZlX2NvdW50KCR0YmwsICR3aGVyZSk7DQoJCQkJCQkJfQ0KCQkJ CQkJfQ0KDQoJCQkJCQkvLyBJZiB0aGUgaXRlbSBoYXMgbm90IGJlZW4gZm91bmQsIGZsYWcg aXQNCgkJCQkJCWlmICgkcmVjcyA9PSAwKSB7DQoJCQkJCQkJJGNvbE5hbWVzID0gJGNvbFJl ZnM7DQoJCQkJCQl9IGVsc2Ugew0KCQkJCQkJCSRjb2xOYW1lcyA9IGFycmF5KCk7DQoJCQkJ CQl9DQoJCQkJCX0gZWxzZSB7DQoJCQkJCQkkY29sTmFtZXMgPSAkY29sUmVmczsNCgkJCQkJ fQ0KDQoJCQkJCS8vIE1ha2UgdXAgdGhlIHN0cmluZyB0byBkaXNwbGF5LCBhbmQgaHlwZXJs aW5rIGl0IGlmIGRpcmVjdGVkDQoJCQkJCSRobGluayA9ICcnOw0KCQkJCQkkdmFycyA9ICcn Ow0KCQkJCQlmb3JlYWNoICgkY29sTmFtZXMgYXMgJGNvbCkgew0KCQkJCQkJJGZyb20gPSAn eycuJGNvbC4nfSc7DQoJCQkJCQlpZiAoc3RycG9zKCRjcm93WzddLCAkZnJvbSkgIT09IGZh bHNlKSB7DQoJCQkJCQkJaWYgKCRjcm93WzZdID09ICIjIikgew0KCQkJCQkJCQkkdmFycyA9 IGpvaW5fcXMoYXJyYXkoImV2ZW50IiA9PiAkY3Jvd1s0XSwgInN0ZXAiID0+ICRjcm93WzVd KSkuJGNyb3dbNl0uc3RydHIoJGNyb3dbN10sIGFycmF5KCRmcm9tID0+ICRyb3dbJGNvbF0p KTsNCgkJCQkJCQl9IGVsc2Ugew0KCQkJCQkJCQkkdmFycyA9IGpvaW5fcXMoYXJyYXkoImV2 ZW50IiA9PiAkY3Jvd1s0XSwgInN0ZXAiID0+ICRjcm93WzVdLCAkY3Jvd1s2XSA9PiBzdHJ0 cigkY3Jvd1s3XSwgYXJyYXkoJGZyb20gPT4gJHJvd1skY29sXSkpKSk7DQoJCQkJCQkJfQ0K CQkJCQkJfQ0KCQkJCQkJJGhsaW5rIC49ICRyb3dbJGNvbF0uIiAiOw0KCQkJCQl9DQoJCQkJ CSRvdXQgLj0gKCRobGluaykgPyAnPGxpPicgLiAoKCR2YXJzKSA/ICc8YSBocmVmPSJpbmRl eC5waHAnLiR2YXJzLiciPicuJGhsaW5rLic8L2E+ICcgOiAkaGxpbmspIC4gJzwvbGk+Jzog Jyc7DQoJCQkJfQ0KCQkJCSRvdXQgLj0gJzwvdWw+JzsNCgkJCQkkY29sQm9keVtdID0gdGQo JG91dCk7DQoJCQl9IGVsc2Ugew0KCQkJCSRjb2xCb2R5W10gPSB0ZChzbWRfd3VfZ1R4dCgn bm9fb3JwaGFuc19mb3VuZCcpKTsNCgkJCX0NCgkJfQ0KCQllY2hvIHRyKGpvaW4oIiAiLCAk Y29sSGVhZCkpOw0KCQllY2hvIHRyKGpvaW4oIiAiLCAkY29sQm9keSkpOw0KCX0NCgllY2hv IGVuZFRhYmxlKCk7DQp9DQoNCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi8vIFBsdWdpbi1zcGVjaWZpYyByZXBs YWNlbWVudCBzdHJpbmdzIC0gbG9jYWxpc2UgYXMgcmVxdWlyZWQNCi8vIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCmZ1 bmN0aW9uIHNtZF93dV9nVHh0KCR3aGF0LCAkYXR0cyA9IGFycmF5KCkpIHsNCgkkbGFuZyA9 IGFycmF5KA0KCQknYWRtaW5fcGx1Z2lucycgPT4gJyBbIEErUCBdJywNCgkJJ3B1YmxpY19w bHVnaW5zJyA9PiAnIFsgUCBdJywNCgkJJ2V4Y2x1c2lvbicgPT4gJ0V4Y2x1ZGUnLA0KCQkn aW5jbHVzaW9uJyA9PiAnSW5jbHVkZScsDQoJCSdmaWx0ZXInID0+ICdGaWx0ZXI6JywNCgkJ J21hdGNoX2Nhc2UnID0+ICdNYXRjaCBjYXNlJywNCgkJJ25vX29ycGhhbnNfZm91bmQnID0+ ICdObyBvcnBoYW5zIGZvdW5kLicsDQoJCSdvcnBoYW5fcmVzdWx0cycgPT4gJ1Bvc3NpYmxl IG9ycGhhbnMnLA0KCQkncHJlZnNfbGluaycgPT4gJ0FydGljbGUgc2VhcmNoIGZpZWxkcycs DQoJCSdzZWFyY2hfbGJsJyA9PiAnRmluZDonLA0KCQknc2VhcmNoX3doZXJlX2xibCcgPT4g J0xvb2sgYXQ6JywNCgkJJ3N0eWxlc2hlZXRzJyA9PiAnU3R5bGVzaGVldHMnLA0KCQknc21k X3d1JyA9PiAnV2hlcmUgdXNlZCcsDQoJCSd3aG9sZV93b3JkJyA9PiAnV2hvbGUgd29yZHMn LA0KCSk7DQoJcmV0dXJuIHN0cnRyKCRsYW5nWyR3aGF0XSwgJGF0dHMpOw0KfSI7czo0OiJ0 eXBlIjtzOjE6IjQiO3M6NToib3JkZXIiO3M6MToiNSI7czo1OiJmbGFncyI7czoxOiIwIjtz OjQ6ImhlbHAiO3M6NzA3NzoiPGRpdiBpZD0ic21kX2hlbHAiPgoKCTxoMT5zbWRfd2hlcmVf dXNlZDwvaDE+CgoJPHA+UmVhbGx5IHNpbXBsZSBhZG1pbi1zaWRlIHBsdWdpbiB0byBoZWxw IGZpbmQgd2hhdCB5b3UgbmVlZCB0byBlZGl0L2RlbGV0ZS4gSWYgeW91IGhhdmUgYSB0b25u ZSBvZiBmb3JtcyBvciBwYWdlcyBhbmQgd2FudCB0byB0aWR5IHN0dWZmIHVwIGl0IGNhbiBi ZSBhIGJpdCBvZiBhIHBhaW4gdG8gZmluZCB3aGF0JiM4MjE3O3MgYWN0dWFsbHkgaW4gdXNl LjwvcD4KCgk8cD5TbyB1c2UgdGhpcyBwbHVnaW4gdG8gc2VhcmNoIHlvdXIgc2VjdGlvbnMs IHBhZ2VzLCBmb3JtcyBvciBhcnRpY2xlcyBmb3IgcmVmZXJlbmNlcyB0byBwbHVnaW5zLCBv ciBvdGhlciBwYWdlcy9mb3Jtcy9zdHlsZXNoZWV0cyBvciBldmVuIGp1c3QgcGxhaW4gdGV4 dCBpbiBhcnRpY2xlcyAvIHN0eWxlc2hlZXRzLjwvcD4KCgk8aDIgY2xhc3M9ImF1dGhvciI+ QXV0aG9yPC9oMj4KCgk8cD48YSBocmVmPSJodHRwOi8vc3RlZmRhd3Nvbi5jb20vY29tbWVu dEZvcm0iPlN0ZWYgRGF3c29uPC9hPjwvcD4KCgk8aDIgY2xhc3M9Imluc3RhbGwiPkluc3Rh bGxhdGlvbiAvIFVuaW5zdGFsbGF0aW9uPC9oMj4KCgk8cD5Eb3dubG9hZCB0aGUgcGx1Z2lu IGZyb20gZWl0aGVyIDxhIGhyZWY9Imh0dHA6Ly90ZXh0cGF0dGVybi5vcmcvcGx1Z2lucy85 ODQvc21kX3doZXJlX3VzZWQiPnRleHRwYXR0ZXJuLm9yZzwvYT4sIG9yIHRoZSA8YSBocmVm PSJodHRwOi8vc3RlZmRhd3Nvbi5jb20vc3ciPnNvZnR3YXJlIHBhZ2U8L2E+LCBwYXN0ZSB0 aGUgY29kZSBpbnRvIHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiBBZG1pbiAt Jmd0OyBQbHVnaW5zIHBhbmUsIGluc3RhbGwgYW5kIGVuYWJsZSB0aGUgcGx1Z2luLiBWaXNp dCB0aGUgPGEgaHJlZj0iaHR0cDovL2ZvcnVtLnRleHRwYXR0ZXJuLmNvbS92aWV3dG9waWMu cGhwP2lkPTI3NDkzIj5mb3J1bSB0aHJlYWQ8L2E+IGZvciBtb3JlIGluZm8gYW5kIHRvIHJl cG9ydCB0aGUgc3VjY2VzcyAob3Igb3RoZXJ3aXNlKSBvZiB0aGlzIHBsdWdpbi48L3A+CgoJ PHA+VW5pbnN0YWxsIGJ5IHNpbXBseSBkZWxldGluZyB0aGUgcGx1Z2luIGZyb20gdGhlIEFk bWluLSZndDtQbHVnaW5zIHBhbmUuPC9wPgoKCTxoMiBjbGFzcz0idXNhZ2UiPlVzYWdlPC9o Mj4KCgk8cD5WaXNpdCB0aGUgRXh0ZW5zaW9ucyB0YWIgYW5kIENsaWNrICYjODIxNjtXaGVy ZSB1c2VkJiM4MjE3OyB0byBhY2Nlc3MgdGhlIHNlYXJjaCBmb3JtLiBUeXBlIHNvbWUgc3R1 ZmYgdG8gZmluZCwgc2VsZWN0IHdoZXJlIHlvdSB3YW50IHRvIGxvb2sgYW5kIGhpdCAmIzgy MTY7U2VhcmNoJiM4MjE3OyBvciBwcmVzcyBFbnRlci4gWW91ciByZXF1ZXN0ZWQgbG9jYXRp b25zIHdpbGwgYmUgc2VhcmNoZWQgZm9yIHRoYXQgdGVybSBhbmQgdGhlIHJlc3VsdHMgdGFi dWxhdGVkLCB3aXRoIGh5cGVybGlua3MgdG8gdGhlIG9mZmVuZGluZyBpdGVtcyBzbyB5b3Ug Y2FuIHF1aWNrbHkgZWRpdCB0aGVtLjwvcD4KCgk8cD5Zb3UgY2FuIGRlY2lkZSB3aGV0aGVy IHRvIHNlYXJjaCBmb3IgdGhlIHRlcm0gKCYjODIyMDtJbmNsdWRlJiM4MjIxOykgb3IgdG8g c2VhcmNoIGZvciBzdHVmZiA8c3BhbiBjbGFzcz0iY2FwcyI+Tk9UPC9zcGFuPiBjb250YWlu aW5nIHRoYXQgdGVybSAoJiM4MjIwO0V4Y2x1ZGUmIzgyMjE7KS4gWW91IG1heSBhbHNvIGNo b29zZSB3aGV0aGVyIHlvdXIgc2VhcmNoIHRlcm0gbWF0Y2hlcy9kb2VzIG5vdCBtYXRjaCBh IHdob2xlIHdvcmQgb3IgaXMgY2FzZSBzZW5zaXRpdmUuPC9wPgoKCTxwPlRoaXMgaXMgd2hh dCB0aGUgcGx1Z2luIGxvb2tzIGF0IHdoZW4geW91IHNlbGVjdCBhIHBhcnRpY3VsYXIgY2hl Y2tib3ggZnJvbSB0aGUgJiM4MjIwO0xvb2sgYXQmIzgyMjE7IHJvdzo8L3A+CgoJPHVsPgoJ CTxsaT4mIzgyMTY7U2VjdGlvbnMmIzgyMTc7IHNlYXJjaGVzIGV2ZXJ5IFNlY3Rpb24gZm9y IHBhZ2VzIG9yIHN0eWxlc2hlZXRzIHdpdGggdGhlIG1hdGNoaW5nIG5hbWU8L2xpPgoJCTxs aT4mIzgyMTY7UGFnZXMmIzgyMTc7IHNlYXJjaGVzIGV2ZXJ5IFBhZ2UgZm9yIGZvcm1zIC8g cGx1Z2lucyAvIHRleHQgd2l0aCB0aGUgbWF0Y2hpbmcgbmFtZTwvbGk+CgkJPGxpPiYjODIx NjtGb3JtcyYjODIxNzsgc2VhcmNoZXMgZXZlcnkgRm9ybSBmb3IgcGx1Z2lucyAvIG90aGVy IGZvcm1zIC8gdGV4dCB3aXRoIHRoZSBtYXRjaGluZyBuYW1lPC9saT4KCQk8bGk+JiM4MjE2 O1N0eWxlc2hlZXRzJiM4MjE3OyBzZWFyY2hlcyBldmVyeSBTdHlsZXNoZWV0IGZvciB0ZXh0 IHdpdGggdGhlIG1hdGNoaW5nIG5hbWU8L2xpPgoJCTxsaT4mIzgyMTY7QXJ0aWNsZXMmIzgy MTc7IHNlYXJjaGVzIChieSBkZWZhdWx0KSBldmVyeSBBcnRpY2xlIHNlY3Rpb24sIGJvZHks IGV4Y2VycHQsIG92ZXJyaWRlX2Zvcm0sIHRpdGxlIGFuZCBrZXl3b3JkIGZvciBtZW50aW9u IG9mIHRoZSB0ZXh0IHlvdSBzcGVjaWZ5LiBDbGljayB0aGUgPGVtPkFydGljbGUgc2VhcmNo IGZpZWxkczwvZW0+IGJ1dHRvbiB0byBzZWUgYSBsaXN0IG9mIGRhdGFiYXNlIGNvbHVtbnMg dGhhdCB5b3UgbWF5IHNlYXJjaC4gQ2hlY2sgdGhlIG9uZXMgeW91IHdpc2ggdG8gY29uc2lk ZXIgYW5kIGNsaWNrIDxlbT5TYXZlPC9lbT48L2xpPgoJPC91bD4KCgk8cD5JZiwgaG93ZXZl ciwgeW91IGxlYXZlIHRoZSAmIzgyMTY7RmluZCYjODIxNzsgYm94IGVtcHR5IGFuZCBjbGlj ayAmIzgyMTY7U2VhcmNoJiM4MjE3OyB0aGUgcGx1Z2luIHdpbGwgc2VhcmNoIGZvciBvcnBo YW5zLiBPcnBoYW5zIGFyZSBkZWZpbmVkIGFzIGZvbGxvd3M6PC9wPgoKCTx1bD4KCQk8bGk+ QW55IFBhZ2UgdGhhdCBpcyBub3QgYXNzaWduZWQgdG8gYSBTZWN0aW9uPC9saT4KCQk8bGk+ QW55IFN0eWxlc2hlZXQgdGhhdCBpcyBub3QgYXNzaWduZWQgdG8gYSBTZWN0aW9uPC9saT4K CQk8bGk+QW55IFNlY3Rpb24gdGhhdCBoYXMgbm8gQXJ0aWNsZXMgaW4gaXQgKGV4Y2x1ZGlu ZyDigJhkZWZhdWx04oCZIHdoaWNoIGNhbm5vdCBoYXZlIGFuIGFydGljbGUgYW55d2F5KTwv bGk+CgkJPGxpPkFueSBQbHVnaW4gdGhhdCBpcyBub3QgcmVmZXJlbmNlZCBmcm9tIGFuIEFy dGljbGUgKGJvZHkvZXhjZXJwdCkgb3IgYW5vdGhlciBGb3JtIG9yIFBhZ2U8L2xpPgoJCTxs aT5BbnkgRm9ybSB0aGF0IGhhcyBubyByZWZlcmVuY2UgdG8gaXQgaW4gYW55IEFydGljbGUg KGJvZHkvZXhjZXJwdC9vdmVycmlkZV9mb3JtKSBvciBhbm90aGVyIEZvcm0gb3IgUGFnZTwv bGk+Cgk8L3VsPgoKCTxwPk5vdGVzOjwvcD4KCgk8dWw+CgkJPGxpPk9ycGhhbmVkIGFydGlj bGVzIGRvbiYjODIxNzt0IG1ha2Ugc2Vuc2Ugc28gdGhleSBhcmUgb21pdHRlZC4gVGhlIGNo ZWNrYm94IGlzIGlnbm9yZWQ8L2xpPgoJCTxsaT5Fc3NlbnRpYWwgc2VjdGlvbnMgLyBwYWdl cyAvIGZvcm1zIHRoYXQgY2Fubm90IGJlIGRlbGV0ZWQgYXJlIG5vdCBsaXN0ZWQ8L2xpPgoJ CTxsaT5QbHVnaW5zIGFyZSBhbHdheXMgZGlzcGxheWVkIGJlY2F1c2UgdGhlcmUmIzgyMTc7 cyBubyBjaGVjayBib3ggZm9yIGl0LiBUaGUgcmVhc29uIGlzIHRoYXQgc21kX3doZXJlX3Vz ZWQgZG9lcyBub3QgYWxsb3cgc2VhcmNoaW5nIHdpdGhpbiBhIHBsdWdpbiBmb3IgYSByZWZl cmVuY2UgdG8gYSB3b3JkLCBidXQgaXQgZG9lcyBjaGVjayBvdGhlciBwbGFjZXMgZm9yIHJl ZmVyZW5jZXMgPGVtPnRvPC9lbT4gcGx1Z2luczwvbGk+CgkJPGxpPlRoZSBQbHVnaW4gbGlz dCBjYW4gYmUgdG9nZ2xlZC4gSXQgYmVnaW5zIGJ5IHNob3dpbmcgYm90aCBhZG1pbiBhbmQg cHVibGljIChBK1ApIHBsdWdpbnMuIElmIHlvdSB3aXNoIHRvIHNlZSBwdWJsaWMtb25seSAo UCkgcGx1Z2lucywgY2xpY2sgJiM4MjE2O1NlYXJjaCYjODIxNzsgYWdhaW4gdG8gdG9nZ2xl IHRoZSBsaXN0PC9saT4KCQk8bGk+SnVzdCBiZWNhdXNlIGFuIGl0ZW0gaXMgbGlzdGVkIGFz IG9ycGhhbmVkIGRvZXMgPGVtPm5vdCBuZWNlc3NhcmlseSBtZWFuIGl0IGlzIG5vdCB1c2Vk PC9lbT4hIEZvciBleGFtcGxlLCBydm1fbWFpbnRlbmFuY2UgY2hlY2tzIGZvciB0aGUgZXhp c3RlbmNlIG9mIGFuIDxjb2RlPmVycm9yXzUwMzwvY29kZT4gUGFnZS4gU2luY2UgaXQgaXMg bmV2ZXIgYXNzaWduZWQgdG8gYSBTZWN0aW9uIGl0IHdpbGwgYmUgbGlzdGVkIGFzIG9ycGhh bmVkLiBJZiB5b3UgaGF2ZSBhIGRlZGljYXRlZCBzdHlsZXNoZWV0IGZvciBtYWludGVuYW5j ZSBtb2RlIHRoYXQsIHRvbywgd2lsbCBiZSBzaG93biBhcyBvcnBoYW5lZC4gSW4gc2hvcnQs IGJlIGNhcmVmdWwgYW5kIG1ha2UgYSBiYWNrdXAgOi0pPC9saT4KCQk8bGk+UGx1Z2lucyBz dWNoIGFzIHBhcF9jb250YWN0X2NsZWFuZXIgYW5kIHJ2bV9tYWludGVuYW5jZSBhcmUgbGlz dGVkIGFzIG9ycGhhbnMgZXZlbiB0aG91Z2ggdGhleSBhcmUgdXNlZCBieSBvdGhlciBwbHVn aW5zIC8gdXN1YWxseSBkaXNhYmxlZC4gSWYgeW91IGFyZSB1bnN1cmUgYWJvdXQgYSBwbHVn aW4sIGNoZWNrIGl0IGJ5IHR5cGluZyBhIHBhcnRpYWwgdGFnIG5hbWUgaW50byB0aGUgc2Vh cmNoIGJveDwvbGk+Cgk8L3VsPgoKCTxoMiBjbGFzcz0iY2hhbmdlbG9nIj5DaGFuZ2Vsb2c8 L2gyPgoKCTx1bD4KCQk8bGk+MTYgSnVuIDA4IHwgdjAuMSB8IEluaXRpYWwgcmVsZWFzZTwv bGk+CgkJPGxpPjE2IEp1biAwOCB8IHYwLjExIHwgQWRkZWQgc2VjdGlvbiBzZWFyY2ggYW5k IG92ZXJyaWRlX2Zvcm08L2xpPgoJCTxsaT4xNiBKdW4gMDggfCB2MC4xMiB8IEFkZGVkIGlu Y2x1ZGUvZXhjbHVkZSAodGhhbmtzIG1yZGFsZSk8L2xpPgoJCTxsaT4xNiBKdW4gMDggfCB2 MC4xMyB8IEFkZGVkIGFiaWxpdHkgdG8gbWF0Y2ggd2hvbGUgd29yZHMgKHRoYW5rcyB6YW56 YSk8L2xpPgoJCTxsaT4xNyBKdW4gMDggfCB2MC4xNCB8IEFkZGVkIG9ycGhhbiBzZWFyY2gg KHRoYW5rcyB1bGkvbmV0LWNhcnZlcik8L2xpPgoJCTxsaT4xOCBKdW4gMDggfCB2MC4xNSB8 IEZpeGVkIHBsdWdpbiBsaXN0IHNvIGl0IGRvZXMgYSBkZWVwIHNlYXJjaCBpbnNpZGUgdGhl IHNvdXJjZSBjb2RlIGZvciB0YWcgbmFtZXM8L2xpPgoJCTxsaT4xOCBKdW4gMDggfCB2MC4x NiB8IEFkZGVkIGFkbWluL2NsaWVudCBzaWRlIHBsdWdpbiB0b2dnbGUgOyBzZWFyY2hlcyBu b3cgZXh0ZW5kZWQgdG8gdGl0bGUgYW5kIGtleXdvcmRzIChib3RoIHRoYW5rcyB1bGkpPC9s aT4KCQk8bGk+MTggSnVuIDA4IHwgdjAuMTcgfCBBcnRpY2xlcyBhcmUgbGlua2VkIHdpdGgg SUQgYW5kIHRpdGxlICh0aGFua3MgdWxpKTwvbGk+CgkJPGxpPjE4IEp1biAwOCB8IHYwLjE4 IHwgQWRkZWQgY2FzZSBzZW5zaXRpdmUgc2VhcmNoZXMgKHRoYW5rcyBnZW9mZjc3Nyk8L2xp PgoJCTxsaT4xMSBNYXIgMDkgfCB2MC4xOSB8IEFkZGVkIGF1dG8tZm9jdXMgdG8gc2VhcmNo IGJveDwvbGk+CgkJPGxpPjEyIEF1ZyAwOSB8IHYwLjIgfCBSZXF1aXJlcyA8c3BhbiBjbGFz cz0iY2FwcyI+VFhQPC9zcGFuPiA0LjIuMCA7IGFkZGVkIGF1dG8tcHJlZnMgZm9yICYjODIx Njtsb29rIGluJiM4MjE3OyBhbmQgYXJ0aWNsZSBzZWFyY2ggZmllbGRzIHByZWYgKHRoYW5r cyB1bGkpPC9saT4KCQk8bGk+MTkgTWF5IDEwIHwgdjAuMyB8IFJlcXVpcmVzIDxzcGFuIGNs YXNzPSJjYXBzIj5UWFA8L3NwYW4+IDQuMy4wIDsgYWRkZWQgc2VhcmNoaW5nIGluc2lkZSBT dHlsZXNoZWV0czwvbGk+Cgk8L3VsPgoKPC9kaXY+CjwhLS0gKioqIEJFR0lOIFBMVUdJTiBD U1MgKioqIC0tPgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgojc21kX2hlbHAgeyBsaW5lLWhl aWdodDoxLjMgO30KI3NtZF9oZWxwIGNvZGUgeyBmb250LXdlaWdodDpib2xkOyBmb250OiAx MDUlLzEzMCUgIkNvdXJpZXIgTmV3IiwgY291cmllciwgbW9ub3NwYWNlOyBiYWNrZ3JvdW5k LWNvbG9yOiAjRkZGRkNDO30KI3NtZF9oZWxwIGNvZGUuYmxvY2sgeyBmb250LXdlaWdodDpu b3JtYWw7IGJvcmRlcjoxcHggZG90dGVkICM5OTk7IGJhY2tncm91bmQtY29sb3I6ICNmMGU2 OGM7IGRpc3BsYXk6YmxvY2s7IG1hcmdpbjoxMHB4IDEwcHggMjBweDsgcGFkZGluZzoxMHB4 OyB9CiNzbWRfaGVscCBhOmxpbmssICNzbWRfaGVscCBhOnZpc2l0ZWQgeyBjb2xvcjogYmx1 ZTsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyBib3JkZXItYm90dG9tOiAxcHggc29saWQgYmx1 ZTsgcGFkZGluZy1ib3R0b206MXB4O30KI3NtZF9oZWxwIGE6aG92ZXIsICNzbWRfaGVscCBh OmFjdGl2ZSB7IGNvbG9yOiBibHVlOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IGJvcmRlci1i b3R0b206IDJweCBzb2xpZCBibHVlOyBwYWRkaW5nLWJvdHRvbToxcHg7fQojc21kX2hlbHAg aDEgeyBjb2xvcjogIzM2OTsgZm9udDogMjBweCBHZW9yZ2lhLCBzYW5zLXNlcmlmOyBtYXJn aW46IDA7IHRleHQtYWxpZ246IGNlbnRlcjsgfQojc21kX2hlbHAgaDIgeyBib3JkZXItYm90 dG9tOiAxcHggc29saWQgYmxhY2s7IHBhZGRpbmc6MTBweCAwIDA7IGNvbG9yOiAjMzY5OyBm b250OiAxN3B4IEdlb3JnaWEsIHNhbnMtc2VyaWY7IH0KI3NtZF9oZWxwIGgzIHsgY29sb3I6 ICM2OTM7IGZvbnQ6IGJvbGQgMTJweCBBcmlhbCwgc2Fucy1zZXJpZjsgbGV0dGVyLXNwYWNp bmc6IDFweDsgbWFyZ2luOiAxMHB4IDAgMDt0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO30K I3NtZF9oZWxwIGg0IHsgZm9udDogYm9sZCAxMXB4IEFyaWFsLCBzYW5zLXNlcmlmOyBsZXR0 ZXItc3BhY2luZzogMXB4OyBtYXJnaW46IDEwcHggMCAwIDt0ZXh0LXRyYW5zZm9ybTogdXBw ZXJjYXNlOyB9CiNzbWRfaGVscCAuYXR0LW5hbWUgeyBmb250LXdlaWdodDpib2xkOyB9CiNz bWRfaGVscCAubWFuZCB7IGJhY2tncm91bmQ6I2VlZTsgYm9yZGVyOjFweCBkb3R0ZWQgIzk5 OTsgfQojc21kX2hlbHAgdGFibGUge3dpZHRoOjEwMCU7IHRleHQtYWxpZ246Y2VudGVyOyBw YWRkaW5nLWJvdHRvbToxZW07fQojc21kX2hlbHAgdGQsICNzbWRfaGVscCB0aCB7Ym9yZGVy OjFweCBzb2xpZCAjOTk5OyBwYWRkaW5nOi41ZW0gMDt9Cjwvc3R5bGU+CjwhLS0gKioqIEVO RCBQTFVHSU4gQ1NTICoqKiAtLT4KIjtzOjM6Im1kNSI7czozMjoiN2RlZWM2MjU5NmZkNDFj YzEyYTU1YjE4YzRhZTljYmYiO30=