# Name: zem_contact_reborn v4.0.3.17 # Type: Client side plugin # Form mailer for Textpattern # Author: TXP Community # URL: http://forum.textpattern.com/viewtopic.php?id=12956 # 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: # ..................................................................... YToxMDp7czo0OiJuYW1lIjtzOjE4OiJ6ZW1fY29udGFjdF9yZWJvcm4iO3M6NjoiYXV0aG9y IjtzOjEzOiJUWFAgQ29tbXVuaXR5IjtzOjEwOiJhdXRob3JfdXJpIjtzOjUxOiJodHRwOi8v Zm9ydW0udGV4dHBhdHRlcm4uY29tL3ZpZXd0b3BpYy5waHA/aWQ9MTI5NTYiO3M6NzoidmVy c2lvbiI7czo4OiI0LjAuMy4xNyI7czoxMToiZGVzY3JpcHRpb24iO3M6Mjc6IkZvcm0gbWFp bGVyIGZvciBUZXh0cGF0dGVybiI7czo0OiJjb2RlIjtzOjE1MzYxOiIKZnVuY3Rpb24gemVt X2NvbnRhY3QoJGF0dHMsICR0aGluZyA9ICcnKQp7CglnbG9iYWwgJHNpdGVuYW1lLCAkcHJl ZnMsICRwcm9kdWN0aW9uX3N0YXR1cywgJHplbV9jb250YWN0X2Zvcm0sICR6ZW1fY29udGFj dF9mcm9tLCAkemVtX2NvbnRhY3Rfbm9uY2UsICR6ZW1fY29udGFjdF9lcnJvcjsKCglleHRy YWN0KGxBdHRzKGFycmF5KAoJCSdiY2MnCQk9PiAnJywKCQknY29weXNlbmRlcicJPT4gJ25v JywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2NvcHlzZW5k ZXIgYXR0cmlidXRlIGFkZGVkCgkJJ2Zvcm0nCQk9PiAnJywKCQknZnJvbScJCT0+ICcnLAoJ CSdmcm9tX2Zvcm0nCT0+ICcnLAoJCSdpc0Vycm9yJwk9PiAnJywKCQknbGFiZWwnCQk9PiB6 ZW1fY29udGFjdF9nVHh0KCdjb250YWN0JyksCgkJJ3JlZGlyZWN0Jwk9PiAnJywKCQknc2hv d19lcnJvcicJPT4gJ3llcycsCgkJJ3Nob3dfaW5wdXQnCT0+ICd5ZXMnLAoJCSdzZW5kX2Fy dGljbGUnCT0+ICdubycsCgkJJ3N1YmplY3QnCT0+IHplbV9jb250YWN0X2dUeHQoJ2VtYWls X3N1YmplY3QnLCAkc2l0ZW5hbWUpLAoJCSd0bycJCT0+ICcnLAoJCSd0b19mb3JtJwk9PiAn JywKCQkndGhhbmtzJwk9PiBncmFmKHplbV9jb250YWN0X2dUeHQoJ2VtYWlsX3RoYW5rcycp KSwKCQkndGhhbmtzX2Zvcm0nCT0+ICcnCgkpLCAkYXR0cykpOwoKCWlmICghaXNfY2FsbGFi bGUoJ21haWwnKSkKCXsKCQlyZXR1cm4gKCRwcm9kdWN0aW9uX3N0YXR1cyA9PSAnbGl2ZScp ID8KCQkJemVtX2NvbnRhY3RfZ1R4dCgnbWFpbF9zb3JyeScpIDoKCQkJZ1R4dCgnd2Fybl9t YWlsX3VuYXZhaWxhYmxlJyk7Cgl9CgoJaWYgKCR0b19mb3JtKQoJewoJCSR0b19mb3JtID0g ZmV0Y2hfZm9ybSgkdG9fZm9ybSk7CgkJJHRvID0gcGFyc2UoJHRvX2Zvcm0pOwoJfQoKCWlm ICghJHRvIGFuZCAkc2VuZF9hcnRpY2xlID09ICdubycpCgl7CgkJcmV0dXJuIHplbV9jb250 YWN0X2dUeHQoJ3RvX21pc3NpbmcnKTsKCX0KCgkkemVtX2NvbnRhY3Rfbm9uY2UgPSBtZDUo dW5pcWlkKHJhbmQoKSwgdHJ1ZSkpOwoKCXNhZmVfaW5zZXJ0KCd0eHBfZGlzY3Vzc19ub25j ZScsICJpc3N1ZV90aW1lID0gbm93KCksIG5vbmNlID0gJyR6ZW1fY29udGFjdF9ub25jZSci KTsKCgkkZm9ybSA9ICgkZm9ybSkgPyBmZXRjaF9mb3JtKCRmb3JtKSA6ICR0aGluZzsKCglp ZiAoZW1wdHkoJGZvcm0pKQoJewoJCSRmb3JtID0gPDw8Zm9ybQo8dHhwOnplbV9jb250YWN0 X3RleHQgbGFiZWw9Ik5hbWUiIC8+PGJyIC8+Cjx0eHA6emVtX2NvbnRhY3RfZW1haWwgLz48 YnIgLz4KPHR4cDp6ZW1fY29udGFjdF90ZXh0YXJlYSAvPjxiciAvPgo8dHhwOnplbV9jb250 YWN0X3N1Ym1pdCAvPgpmb3JtOwoJfQoKCSRmb3JtID0gcGFyc2UoJGZvcm0pOwoKCWlmICgk dGhhbmtzX2Zvcm0pCgl7CgkJJHRoYW5rcyA9IGZldGNoX2Zvcm0oJHRoYW5rc19mb3JtKTsK CX0KCgkkb3V0ID0gJyc7CgoJaWYgKGlzX2FycmF5KCR6ZW1fY29udGFjdF9lcnJvcikgYW5k IGNvdW50KCR6ZW1fY29udGFjdF9lcnJvcikpCgl7CgkJaWYgKCRzaG93X2Vycm9yID09ICd5 ZXMnKQoJCXsKCQkJJG91dCAuPSBuLic8dWwgY2xhc3M9InplbUVycm9yIj4nOwoKCQkJZm9y ZWFjaCAoJHplbV9jb250YWN0X2Vycm9yIGFzICRlcnJvcikKCQkJewoJCQkJJG91dCAuPSBu LnQuJzxsaT4nLiRlcnJvci4nPC9saT4nOwoJCQl9CgoJCQkkb3V0IC49IG4uJzwvdWw+JzsK CQl9CgoJCSRzaG93X2lucHV0ID0gJ3llcyc7Cgl9CgoJZWxzZWlmIChpc19hcnJheSgkemVt X2NvbnRhY3RfZm9ybSkgYW5kIHBzKCd6ZW1fY29udGFjdF9zdWJtaXQnKSkKCXsKCQkvLy8g bG9hZCBhbmQgY2hlY2sgc3BhbSBwbHVnaW5zLwoJCWNhbGxiYWNrX2V2ZW50KCd6ZW1jb250 YWN0LnN1Ym1pdCcpOwoJCSRldmFsdWF0aW9uID0mIGdldF96ZW1jb250YWN0X2V2YWx1YXRv cigpOwoJCSRjbGVhbiA9ICRldmFsdWF0aW9uLT5nZXRfemVtY29udGFjdF9zdGF0dXMoKTsK CQlpZiAoJGNsZWFuICE9IDApIHsKCQkJcmV0dXJuIHplbV9jb250YWN0X2dUeHQoJ3NwYW0n KTsKCQl9CgoJCWlmICgkZnJvbV9mb3JtKQoJCXsKCQkJJGZyb20gPSBwYXJzZSgkZnJvbV9m b3JtKTsKCQl9CgoJCSRzZXAgPSAhaXNfd2luZG93cygpID8gIlxuIiA6ICJcclxuIjsKCgkJ JG1zZyA9IGFycmF5KCk7CgoJCWZvcmVhY2ggKCR6ZW1fY29udGFjdF9mb3JtIGFzICRrID0+ ICR2KQoJCXsKCQkJJG1zZ1tdID0gJGsuJzogJy5odG1sc3BlY2lhbGNoYXJzKCR2KTsKCQl9 CgoJaWYgKCRzZW5kX2FydGljbGUgPT0gJ3llcycpIHsKCQkJZ2xvYmFsICR0aGlzYXJ0aWNs ZTsKCQkJJHN1YmplY3QgPSAkdGhpc2FydGljbGVbJ3RpdGxlJ107CgkJCSRtc2dbXSA9ICR0 aGlzYXJ0aWNsZVsndGl0bGUnXS4nICgnLnBlcm1saW5rdXJsKCR0aGlzYXJ0aWNsZSkuJykn OyAvLyBhZGRlZCBwZXJtbGluawoJCWlmICgkdGhpc2FydGljbGVbJ2V4Y2VycHQnXSkgewoJ CQkkZXhjID0gc3RyaXBfdGFncygkdGhpc2FydGljbGVbJ2V4Y2VycHQnXSk7IC8vIGFkZGVk IHN0cmlwdGFncwoJCQkkZXhjID0gc3RyX3JlcGxhY2UoIlx0IiwgJycsICRleGMpOyAvLyBh ZGRlZCBzdHJyZXBsYWNlCgkJCSRtc2dbXSA9IHRyaW0oJGV4Yyk7IC8vIGFkZGVkIHRyaW0K CQl9CgkJJGJkeSA9IHN0cmlwX3RhZ3MoJHRoaXNhcnRpY2xlWydib2R5J10pOyAvLyBzYW1l IGZvciB0aGVzZSB0d28gbGluZXMKCQkkbXNnW10gPSBzdHJfcmVwbGFjZSgiXHQiLCAnJywg JGJkeSk7CgoJCWlmICghcHMoJ3JlY2VpdmVyJykpIHsKCQkJcmV0dXJuIHplbV9jb250YWN0 X2dUeHQoJ2ZpZWxkX21pc3NpbmcnLCB6ZW1fY29udGFjdF9nVHh0KCdyZWNlaXZlcicpKTsK CQkJJGlzRXJyb3IgPSAiZXJyb3JFbGVtZW50IjsKCQl9CgkJZWxzZQoJCXsKCQkJJHRvID0g cHMoJ3JlY2VpdmVyJyk7CgkJfQoJfQoKCQkkbXNnID0gam9pbigiXG5cbiIsICRtc2cpOwoJ CSRtc2cgPSBzdHJfcmVwbGFjZSgiXHJcbiIsICJcbiIsICRtc2cpOwoJCSRtc2cgPSBzdHJf cmVwbGFjZSgiXHIiLCAiXG4iLCAkbXNnKTsKCQkkbXNnID0gc3RyX3JlcGxhY2UoIlxuIiwg JHNlcCwgJG1zZyk7CgoJCWlmICgkZnJvbSkKCQl7CgkJCSRmcm9tICA9ICRmcm9tOwoJCQkk cmVwbHkgPSAkemVtX2NvbnRhY3RfZnJvbTsKCQl9CgoJCWVsc2UKCQl7CgkJCSRmcm9tID0g JHplbV9jb250YWN0X2Zyb207CgkJCSRyZXBseSA9ICcnOwoJCX0KCgkJaWYgKCRjb3B5c2Vu ZGVyID09ICd5ZXMnKSAvL2NvcHlzZW5kZXIgY29uZGl0aW9uYWwgdG8gaGlkZSAkdG8gYWRk cmVzcyBmcm9tIHRoZSBzZW5kZXIgYWRkZWQKCQl7CgkJCSRiY2MgPSAkdG87CgkJCSR0byA9 ICR6ZW1fY29udGFjdF9mcm9tOwoJCX0KCgkJJHRvICAgICAgPSBzdHJpcF9ybigkdG8pOwoJ CSRiY2MgICAgID0gc3RyaXBfcm4oJGJjYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIC8vYWRkZWQKCQkkc3ViamVjdCA9IHN0cmlwX3JuKCRzdWJqZWN0KTsK CQkkZnJvbSAgICA9IHN0cmlwX3JuKCRmcm9tKTsKCQkkcmVwbHkgICA9IHN0cmlwX3JuKCRy ZXBseSk7CgoJCWlmICgkcHJlZnNbJ292ZXJyaWRlX2VtYWlsY2hhcnNldCddKQoJCXsKCQkJ JGNoYXJzZXQgPSAnSVNPLTg1OTktMSc7CgoJCQlpZiAoaXNfY2FsbGFibGUoJ3V0ZjhfZGVj b2RlJykpCgkJCXsKCQkJCSR0byAgICAgID0gdXRmOF9kZWNvZGUoJHRvKTsKCQkJCSRiY2Mg ICAgICA9IHV0ZjhfZGVjb2RlKCRiY2MpOyAgICAgICAgICAgICAgICAgICAgLy9hZGRlZAoJ CQkJJHN1YmplY3QgPSB1dGY4X2RlY29kZSgkc3ViamVjdCk7CgkJCQkkbXNnICAgICA9IHV0 ZjhfZGVjb2RlKCRtc2cpOwoJCQkJJGZyb20gICAgPSB1dGY4X2RlY29kZSgkZnJvbSk7CgkJ CQkkcmVwbHkgICA9IHV0ZjhfZGVjb2RlKCRyZXBseSk7CgkJCX0KCQl9CgoJCWVsc2UKCQl7 CgkJCSRjaGFyc2V0ID0gJ1VURi04JzsKCQl9CgoJCSRoZWFkZXJzID0gJ0Zyb206ICcuJGZy b20uCgkJCSgkcmVwbHkgPyAoJHNlcC4nUmVwbHktVG86ICcuJHJlcGx5KSA6ICcnKS4KCQkJ KCRiY2MgPyAoJHNlcC4nQmNjOiAnLiRiY2MpIDogJycpLiAgICAgICAgICAgICAgICAgICAg ICAgIC8vYWRkZWQKCQkJJHNlcC4nWC1NYWlsZXI6IFRleHRwYXR0ZXJuICh6ZW1fY29udGFj dF9yZWJvcm4pJy4KCQkJJHNlcC4nQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdCcu CgkJCSRzZXAuJ0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD0iJy4kY2hhcnNl dC4nIic7CgoJCWlmIChtYWlsKCR0bywgJHN1YmplY3QsICRtc2csICRoZWFkZXJzKSkKCQl7 CgkJCWlmICgkcmVkaXJlY3QpCgkJCXsKCQkJCWhlYWRlcignSFRUUC8xLjEgMzAzIFNlZSBP dGhlcicpOwoJCQkJaGVhZGVyKCdTdGF0dXM6IDMwMycpOwoJCQkJaGVhZGVyKCdMb2NhdGlv bjogJy5odS4kcmVkaXJlY3QpOwoJCQkJaGVhZGVyKCdDb25uZWN0aW9uOiBjbG9zZScpOwoJ CQl9CgoJCQllbHNlCgkJCXsKCQkJCSRfUE9TVCA9IGFycmF5KCk7CgoJCQkJaWYgKCRzaG93 X2lucHV0ID09ICd5ZXMnKQoJCQkJewoJCQkJCWlmICgkdGhhbmtzKQoJCQkJCXsKCQkJCQkJ cmV0dXJuICR0aGFua3M7CgkJCQkJfQoJCQkJfQoJCQl9CgkJfQoKCQllbHNlCgkJewoJCQkk b3V0IC49IGdyYWYoemVtX2NvbnRhY3RfZ1R4dCgnbWFpbF9zb3JyeScpKTsKCQl9Cgl9CgoJ aWYgKCRzaG93X2lucHV0ID09ICd5ZXMnIGFuZCAkc2VuZF9hcnRpY2xlID09ICdubycgb3Ig Z3BzKCd6ZW1fY29udGFjdF9zZW5kX2FydGljbGUnKSkKCXsKCQlpZiAocHMoJ3plbV9jb250 YWN0X3N1Ym1pdCcpKQoJCXsKCQkJJG5vbmNlID0gcHMoJ3plbV9jb250YWN0X25vbmNlJyk7 CgoJCQlpZiAoZW1wdHkoJG5vbmNlKSkKCQkJewoJCQkJJHplbV9jb250YWN0X2Vycm9yW10g PSB6ZW1fY29udGFjdF9nVHh0KCdmaWVsZF9taXNzaW5nJyk7CgkJCQkkaXNFcnJvciA9ICJl cnJvckVsZW1lbnQiOwoJCQl9CgoJCQllbHNlCgkJCXsKCQkJCXNhZmVfZGVsZXRlKCd0eHBf ZGlzY3Vzc19ub25jZScsICdpc3N1ZV90aW1lIDwgZGF0ZV9zdWIobm93KCksIGludGVydmFs IDEwIG1pbnV0ZSknKTsKCgkJCQkkcnMgPSBzYWZlX3JvdygnKicsICd0eHBfZGlzY3Vzc19u b25jZScsICJub25jZSA9ICckbm9uY2UnIGFuZCB1c2VkID0gJzAnIik7CgoJCQkJaWYgKCRy cykKCQkJCXsKCQkJCQlzYWZlX3VwZGF0ZSgndHhwX2Rpc2N1c3Nfbm9uY2UnLCAidXNlZCA9 ICcxJyIsICJub25jZSA9ICckbm9uY2UnIik7CgkJCQl9CgoJCQkJZWxzZQoJCQkJewoJCQkJ CSR6ZW1fY29udGFjdF9lcnJvcltdID0gemVtX2NvbnRhY3RfZ1R4dCgnZm9ybV9leHBpcmVk Jyk7CgkJCQl9CgkJCX0KCQl9CgoJCXJldHVybiAnPGZvcm0gbWV0aG9kPSJwb3N0IiBpZD0i emVtQ29udGFjdEZvcm0iIGFjdGlvbj0iJy5zZXJ2ZXJTZXQoJ1JFUVVFU1RfVVJJJykuJyI+ Jy4KCQkJKCAkbGFiZWwgPyBuLic8ZmllbGRzZXQ+JyA6IG4uJzxkaXY+JyApLgoJCQkoICRs YWJlbCA/IG4uJzxsZWdlbmQ+Jy4kbGFiZWwuJzwvbGVnZW5kPicgOiAnJyApLgoJCQkkb3V0 LgoJCQluLic8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJ6ZW1fY29udGFjdF9ub25jZSIg dmFsdWU9IicuJHplbV9jb250YWN0X25vbmNlLiciIC8+Jy4KCQkJJGZvcm0uCgkJCSggJGxh YmVsID8gKG4uJzwvZmllbGRzZXQ+JykgOiAobi4nPC9kaXY+JykgKS4KCQkJY2FsbGJhY2tf ZXZlbnQoJ3plbWNvbnRhY3QuZm9ybScpLiAvLyBub3Qgc3VyZSwgaWYgaXQgc2hvdWxkIGJl IG91dHNpZGUgb3IgaW5zaWRlIHRoZSBmaWVsZHNldC4gV2hhdCBkbyB5b3UgdGhpbmssIFN0 dT8KCQkJbi4nPC9mb3JtPic7Cgl9CgoJcmV0dXJuICcnOwp9CgpmdW5jdGlvbiB6ZW1fY29u dGFjdF90ZXh0KCRhdHRzKQp7CglnbG9iYWwgJHplbV9jb250YWN0X2Zvcm0sICR6ZW1fY29u dGFjdF9lcnJvcjsKCglleHRyYWN0KGxBdHRzKGFycmF5KAoJCSdicmVhaycJCT0+IGJyLAoJ CSdkZWZhdWx0Jwk9PiAnJywKCQknaXNFcnJvcicJPT4gJycsCgkJJ2xhYmVsJwkJPT4gemVt X2NvbnRhY3RfZ1R4dCgndGV4dCcpLAoJCSdtYXgnCQk9PiAxMDAsCgkJJ21pbicJCT0+IDAs CgkJJ25hbWUnCQk9PiAnJywKCQkncmVxdWlyZWQnCT0+ICd5ZXMnLAoJCSdzaXplJwkJPT4g JycKCSksICRhdHRzKSk7CgoJaWYgKGVtcHR5KCRuYW1lKSkKCXsKCQkkbmFtZSA9IHN0cnRv bG93ZXIocHJlZ19yZXBsYWNlKCcvXFcvJywgJycsICRsYWJlbCkpOwoJfQoKCSR2YWx1ZSA9 IHBzKCRuYW1lKSA/IHBzKCRuYW1lKSA6ICRkZWZhdWx0OwoKCWlmICgkdmFsdWUgYW5kICRt YXgpCgl7CgkJJHZhbHVlID0gc3Vic3RyKCR2YWx1ZSwgMCwgJG1heCk7Cgl9CgoJaWYgKHBz KCd6ZW1fY29udGFjdF9zdWJtaXQnKSBhbmQgJHJlcXVpcmVkID09ICd5ZXMnIGFuZCBlbXB0 eSgkdmFsdWUpKQoJewoJCSR6ZW1fY29udGFjdF9lcnJvcltdID0gemVtX2NvbnRhY3RfZ1R4 dCgnZmllbGRfbWlzc2luZycsICRsYWJlbCk7CgkJJGlzRXJyb3IgPSAiZXJyb3JFbGVtZW50 IjsKCX0KCgllbHNlaWYgKHBzKCRuYW1lKSBhbmQgJG1pbiBhbmQgc3RybGVuKCR2YWx1ZSkg PCAkbWluKQoJewoJCSR6ZW1fY29udGFjdF9lcnJvcltdID0gemVtX2NvbnRhY3RfZ1R4dCgn bWluX3dhcm5pbmcnLCAkbGFiZWwsICRtaW4pOwoJCSRpc0Vycm9yID0gImVycm9yRWxlbWVu dCI7Cgl9CgoJZWxzZWlmIChwcygkbmFtZSkpCgl7CgkJJHplbV9jb250YWN0X2Zvcm1bJGxh YmVsXSA9ICR2YWx1ZTsKCX0KCgkkc2l6ZSA9ICgkc2l6ZSkgPyAnIHNpemU9IicuKGludCkk c2l6ZS4nIicgOiAnJzsKCSRtYXhsZW5ndGggPSAoJG1heCkgPyAnIG1heGxlbmd0aD0iJy4o aW50KSRtYXguJyInIDogJyc7CgoJJHplbVJlcXVpcmVkID0gKCRyZXF1aXJlZCA9PSAneWVz JykgPyAnemVtUmVxdWlyZWQnIDogJyc7CgogICAgICAgIHJldHVybiAnPGxhYmVsIGZvcj0i Jy4kbmFtZS4nIiBjbGFzcz0iJy4kemVtUmVxdWlyZWQuJGlzRXJyb3IuJyAnLiRuYW1lLici PicuJGxhYmVsLic8L2xhYmVsPicuJGJyZWFrLgoJCSc8aW5wdXQgdHlwZT0idGV4dCIgaWQ9 IicuJG5hbWUuJyIgY2xhc3M9IicuJHplbVJlcXVpcmVkLiRpc0Vycm9yLiciIG5hbWU9Iicu JG5hbWUuJyIgdmFsdWU9IicuaHRtbHNwZWNpYWxjaGFycygkdmFsdWUpLiciJy4kc2l6ZS4k bWF4bGVuZ3RoLicgLz4nOwoKfQoKZnVuY3Rpb24gemVtX2NvbnRhY3RfdGV4dGFyZWEoJGF0 dHMpCnsKCWdsb2JhbCAkemVtX2NvbnRhY3RfZm9ybSwgJHplbV9jb250YWN0X2Vycm9yOwoK CWV4dHJhY3QobEF0dHMoYXJyYXkoCgkJJ2JyZWFrJwkJPT4gYnIsCgkJJ2NvbHMnCQk9PiA1 OCwKCQknZGVmYXVsdCcJPT4gJycsCgkJJ2lzRXJyb3InCT0+ICcnLAoJCSdsYWJlbCcJCT0+ IHplbV9jb250YWN0X2dUeHQoJ21lc3NhZ2UnKSwKCQknbWF4JwkJPT4gMTAwMDAsCgkJJ21p bicJCT0+IDAsCgkJJ25hbWUnCQk9PiAnJywKCQkncmVxdWlyZWQnCT0+ICd5ZXMnLAoJCSdy b3dzJwkJPT4gOAoJKSwgJGF0dHMpKTsKCglpZiAoZW1wdHkoJG5hbWUpKQoJewoJCSRuYW1l ID0gc3RydG9sb3dlcihwcmVnX3JlcGxhY2UoJy9cVy8nLCAnJywgJGxhYmVsKSk7Cgl9CgoJ JHZhbHVlID0gcHMoJG5hbWUpID8gcHMoJG5hbWUpIDogJGRlZmF1bHQ7CgoJaWYgKCR2YWx1 ZSBhbmQgJG1heCkKCXsKCQkkdmFsdWUgPSBzdWJzdHIoJHZhbHVlLCAwLCAkbWF4KTsKCX0K CglpZiAocHMoJ3plbV9jb250YWN0X3N1Ym1pdCcpIGFuZCAkcmVxdWlyZWQgPT0gJ3llcycg YW5kIGVtcHR5KCR2YWx1ZSkpCgl7CgkJJHplbV9jb250YWN0X2Vycm9yW10gPSB6ZW1fY29u dGFjdF9nVHh0KCdmaWVsZF9taXNzaW5nJywgJGxhYmVsKTsKCQkkaXNFcnJvciA9ICJlcnJv ckVsZW1lbnQiOwoJfQoKCWVsc2VpZiAocHMoJG5hbWUpIGFuZCAkbWluIGFuZCBzdHJsZW4o JHZhbHVlKSA8ICRtaW4pCgl7CgkJJHplbV9jb250YWN0X2Vycm9yW10gPSB6ZW1fY29udGFj dF9nVHh0KCdtaW5fd2FybmluZycsICRsYWJlbCwgJG1pbik7CgkJJGlzRXJyb3IgPSAiZXJy b3JFbGVtZW50IjsKCX0KCgllbHNlaWYgKHBzKCRuYW1lKSkKCXsKCQkkemVtX2NvbnRhY3Rf Zm9ybVskbGFiZWxdID0gJHZhbHVlOwoJfQoKCSR6ZW1SZXF1aXJlZCA9ICgkcmVxdWlyZWQg PT0gJ3llcycpID8gJ3plbVJlcXVpcmVkJyA6ICcnOwoKCXJldHVybiAnPGxhYmVsIGZvcj0i Jy4kbmFtZS4nIiBjbGFzcz0iJy4kemVtUmVxdWlyZWQuJGlzRXJyb3IuJyAnLiRuYW1lLici PicuJGxhYmVsLic8L2xhYmVsPicuJGJyZWFrLgoJCSc8dGV4dGFyZWEgaWQ9IicuJG5hbWUu JyIgY2xhc3M9IicuJHplbVJlcXVpcmVkLiRpc0Vycm9yLiciIG5hbWU9IicuJG5hbWUuJyIg Y29scz0iJy4kY29scy4nIiByb3dzPSInLiRyb3dzLiciPicuaHRtbHNwZWNpYWxjaGFycygk dmFsdWUpLic8L3RleHRhcmVhPic7Cgp9CgpmdW5jdGlvbiB6ZW1fY29udGFjdF9lbWFpbCgk YXR0cykKewoJZ2xvYmFsICR6ZW1fY29udGFjdF9mb3JtLCAkemVtX2NvbnRhY3RfZnJvbSwg JHplbV9jb250YWN0X2Vycm9yOwoKCWV4dHJhY3QobEF0dHMoYXJyYXkoCgkJJ2RlZmF1bHQn CT0+ICcnLAoJCSdpc0Vycm9yJwk9PiAnJywKCQknbGFiZWwnCQk9PiB6ZW1fY29udGFjdF9n VHh0KCdlbWFpbCcpLAoJCSdtYXgnCQk9PiAxMDAsCgkJJ21pbicJCT0+IDAsCgkJJ25hbWUn CQk9PiAnJywKCQkncmVxdWlyZWQnCT0+ICd5ZXMnLAoJCSdicmVhaycJCT0+IGJyLAoJCSdz aXplJwkJPT4gJycKCSksICRhdHRzKSk7CgoJaWYgKGVtcHR5KCRuYW1lKSkKCXsKCQkkbmFt ZSA9IHN0cnRvbG93ZXIocHJlZ19yZXBsYWNlKCcvXFcvJywgJycsICRsYWJlbCkpOwoJfQoK CSRlbWFpbCA9IHBzKCRuYW1lKTsKCglpZiAocHMoJ3plbV9jb250YWN0X3N1Ym1pdCcpKQoJ ewogICAgICBpZiAoJHJlcXVpcmVkID09ICd5ZXMnIGFuZCAhZW1wdHkoJGVtYWlsKSkgewoK CQlpZiAoIXByZWdfbWF0Y2goJy9eW1x3Ll8tXStAKFtcdy1dK1wuKStbXHctXSskLycsICRl bWFpbCkpCgkJewoJCQkkemVtX2NvbnRhY3RfZXJyb3JbXSA9IHplbV9jb250YWN0X2dUeHQo J2ludmFsaWRfZW1haWwnLCAkZW1haWwpOwoJCQkkaXNFcnJvciA9ICJlcnJvckVsZW1lbnQi OwoJCX0KCgkJZWxzZWlmIChwcmVnX21hdGNoKCIvQCguKykkLyIsICRlbWFpbCwgJG1hdGNo KSkKCQl7CgkJCSRkb21haW4gPSAkbWF0Y2hbMV07CgkJCSRteCA9IDA7CgoJCQlpZiAoaXNf Y2FsbGFibGUoJ2dldG14cnInKSkKCQkJewoJCQkJJGR1bW15ID0gYXJyYXkoKTsKCQkJCSRt eCA9IEBnZXRteHJyKCRkb21haW4sICRteCk7CgkJCX0KCgkJCWlmICghJG14IGFuZCAoQGdl dGhvc3RieW5hbWUoJGRvbWFpbikgPT0gJGRvbWFpbikpCgkJCXsKCQkJCSR6ZW1fY29udGFj dF9lcnJvcltdID0gemVtX2NvbnRhY3RfZ1R4dCgnaW52YWxpZF9ob3N0JywgJGRvbWFpbik7 CgkJCQkkaXNFcnJvciA9ICJlcnJvckVsZW1lbnQiOwoJCQl9CgoJCQllbHNlCgkJCXsKCQkJ CSR6ZW1fY29udGFjdF9mcm9tID0gJGVtYWlsOwoJCQl9CgkJfQoKCQllbHNlCgkJewoJCQkk emVtX2NvbnRhY3RfZnJvbSA9ICRlbWFpbDsKCQl9CiAgICB9CiAgICB9CgoJcmV0dXJuIHpl bV9jb250YWN0X3RleHQoYXJyYXkoCgkJJ2RlZmF1bHQnCT0+ICRlbWFpbCwKCQknaXNFcnJv cicJPT4gJGlzRXJyb3IsCgkJJ2xhYmVsJwkJPT4gJGxhYmVsLAoJCSdtYXgnCQk9PiAkbWF4 LAoJCSdtaW4nCQk9PiAkbWluLAoJCSduYW1lJwkJPT4gJG5hbWUsCgkJJ3JlcXVpcmVkJwk9 PiAkcmVxdWlyZWQsCgkJJ2JyZWFrJwkJPT4gJGJyZWFrLAoJCSdzaXplJwkJPT4gJHNpemUg ICAgICAgCS8vIGNoYW5nZWQgJycgdG8gJHNpemUKCSkpOwp9CgpmdW5jdGlvbiB6ZW1fY29u dGFjdF9zZWxlY3QoJGF0dHMpCnsKCWdsb2JhbCAkemVtX2NvbnRhY3RfZm9ybSwgJHplbV9j b250YWN0X2Vycm9yOwoKCWV4dHJhY3QobEF0dHMoYXJyYXkoCgkJJ25hbWUnCQk9PiAnJywJ CS8vIGFkZGVkIG5hbWUKCQknYnJlYWsnCQk9PiAnICcsCgkJJ2RlbGltaXRlcicJPT4gJywn LAoJCSdpc0Vycm9yJwk9PiAnJywKCQknbGFiZWwnCQk9PiB6ZW1fY29udGFjdF9nVHh0KCdv cHRpb24nKSwKCQknbGlzdCcJCT0+IHplbV9jb250YWN0X2dUeHQoJ2dlbmVyYWxfaW5xdWly eScpLAoJCSdyZXF1aXJlZCcJPT4gJ3llcycsCgkJJ3NlbGVjdGVkJwk9PiAneWVzJwoJKSwg JGF0dHMpKTsKCglpZiAoZW1wdHkoJG5hbWUpKQoJewoJCSRuYW1lID0gc3RydG9sb3dlcihw cmVnX3JlcGxhY2UoJy9cVy8nLCAnJywgJGxhYmVsKSk7Cgl9CgoJJGxpc3QgPSBhcnJheV9t YXAoJ3RyaW0nLCBzcGxpdCgkZGVsaW1pdGVyLCAkbGlzdCkpOwoKCSR2YWx1ZSA9IHBzKCRu YW1lKSA/IHBzKCRuYW1lKSA6ICRzZWxlY3RlZDsKCglpZiAocHMoJ3plbV9jb250YWN0X3N1 Ym1pdCcpIGFuZCAkcmVxdWlyZWQgPT0gJ3llcycgYW5kICFwcygkbmFtZSkpICAgICAgIC8v JHZhbHVlIGlzIG5ldmVyIGVtcHR5IC0gY2hhbmdlZCB0byAkbmFtZQoJewoJCSR6ZW1fY29u dGFjdF9lcnJvcltdID0gemVtX2NvbnRhY3RfZ1R4dCgnZmllbGRfbWlzc2luZycsICRsYWJl bCk7CgkJJGlzRXJyb3IgPSAiZXJyb3JFbGVtZW50IjsKCX0KCgllbHNlaWYgKHBzKCRuYW1l KSBhbmQgIWluX2FycmF5KCR2YWx1ZSwgJGxpc3QpKQoJewoJCSR6ZW1fY29udGFjdF9lcnJv cltdID0gemVtX2NvbnRhY3RfZ1R4dCgnaW52YWxpZF92YWx1ZScsICRsYWJlbCwgJHZhbHVl KTsKCQkkaXNFcnJvciA9ICJlcnJvckVsZW1lbnQiOwoJfQoKCWVsc2VpZiAocHMoJG5hbWUp KQoJewoJCSR6ZW1fY29udGFjdF9mb3JtWyRsYWJlbF0gPSAkdmFsdWU7Cgl9CgoJJG91dCA9 ICcnOwoKCWZvcmVhY2ggKCRsaXN0IGFzICRpdGVtKQoJewoJCSRpdGVtID0gaHRtbHNwZWNp YWxjaGFycygkaXRlbSk7CgoJCWlmICgkaXRlbSA9PSAkdmFsdWUpCQkvLyBjaGFuZ2VkICRz ZWxlY3RlZCB0byAkdmFsdWUKCQl7CgkJCSRvdXQgLj0gbi50Lic8b3B0aW9uIHNlbGVjdGVk PSIxIj4nLiRpdGVtLic8L29wdGlvbj4nOwoJCX0KCgkJZWxzZQoJCXsKCQkJJG91dCAuPSBu LnQuJzxvcHRpb24+Jy4kaXRlbS4nPC9vcHRpb24+JzsKCQl9Cgl9CgoJJHplbVJlcXVpcmVk ID0gKCRyZXF1aXJlZCA9PSAneWVzJykgPyAnemVtUmVxdWlyZWQnIDogJyc7CgoJcmV0dXJu ICc8bGFiZWwgZm9yPSInLiRuYW1lLiciIGNsYXNzPSInLiR6ZW1SZXF1aXJlZC4kaXNFcnJv ci4nICcuJG5hbWUuJyI+Jy4kbGFiZWwuJzwvbGFiZWw+Jy4kYnJlYWsuCgkJbi4nPHNlbGVj dCBpZD0iJy4kbmFtZS4nIiBuYW1lPSInLiRuYW1lLiciIGNsYXNzPSInLiR6ZW1SZXF1aXJl ZC4kaXNFcnJvci4nIj4nLgoJCQkkb3V0LgoJCW4uJzwvc2VsZWN0Pic7Cgp9CgpmdW5jdGlv biB6ZW1fY29udGFjdF9jaGVja2JveCgkYXR0cykKewoJZ2xvYmFsICR6ZW1fY29udGFjdF9m b3JtLCAkemVtX2NvbnRhY3RfZXJyb3I7CgoJZXh0cmFjdChsQXR0cyhhcnJheSgKCQknYnJl YWsnCQk9PiAnICcsCgkJJ2NoZWNrZWQnCT0+ICdubycsCgkJJ2lzRXJyb3InCT0+ICcnLAoJ CSdsYWJlbCcJCT0+IHplbV9jb250YWN0X2dUeHQoJ2NoZWNrYm94JyksCgkJJ25hbWUnCQk9 PiAnJywKCQkncmVxdWlyZWQnCT0+ICd5ZXMnCgkpLCAkYXR0cykpOwoKCWlmIChlbXB0eSgk bmFtZSkpCgl7CgkJJG5hbWUgPSBzdHJ0b2xvd2VyKHByZWdfcmVwbGFjZSgnL1xXLycsICcn LCAkbGFiZWwpKTsKCX0KCgkkdmFsdWUgPSBwcygnemVtX2NvbnRhY3Rfc3VibWl0JykgPyAo Ym9vbCkgcHMoJG5hbWUpIDogJyc7CgoJaWYgKHBzKCd6ZW1fY29udGFjdF9zdWJtaXQnKSBh bmQgJHJlcXVpcmVkID09ICd5ZXMnIGFuZCBlbXB0eSgkdmFsdWUpKQoJewoJCSR6ZW1fY29u dGFjdF9lcnJvcltdID0gemVtX2NvbnRhY3RfZ1R4dCgnZmllbGRfbWlzc2luZycsICRsYWJl bCk7CgkJJGlzRXJyb3IgPSAiZXJyb3JFbGVtZW50IjsKCX0KCgllbHNlaWYgKHBzKCd6ZW1f Y29udGFjdF9zdWJtaXQnKSkKCXsKCQkkemVtX2NvbnRhY3RfZm9ybVskbGFiZWxdID0gKCR2 YWx1ZSkgPyBnVHh0KCd5ZXMnKSA6IGdUeHQoJ25vJyk7Cgl9CgoJJHplbVJlcXVpcmVkID0g KCRyZXF1aXJlZCA9PSAneWVzJykgPyAnemVtUmVxdWlyZWQnIDogJyc7CgoJcmV0dXJuICc8 aW5wdXQgdHlwZT0iY2hlY2tib3giIGlkPSInLiRuYW1lLiciIGNsYXNzPSInLiR6ZW1SZXF1 aXJlZC4kaXNFcnJvci4nIiBuYW1lPSInLiRuYW1lLiciJy4KCQkoICggKCRjaGVja2VkID09 ICd5ZXMnKSBhbmQgJHZhbHVlKSA/ICcgY2hlY2tlZD0iY2hlY2tlZCIgLz4nIDogJyAvPicp LiRicmVhay4KCQknPGxhYmVsIGZvcj0iJy4kbmFtZS4nIiBjbGFzcz0iJy4kemVtUmVxdWly ZWQuJGlzRXJyb3IuJyAnLiRuYW1lLiciPicuJGxhYmVsLic8L2xhYmVsPic7Cgp9CgpmdW5j dGlvbiB6ZW1fY29udGFjdF9zZXJ2ZXJpbmZvKCRhdHRzKQp7CglnbG9iYWwgJHplbV9jb250 YWN0X2Zvcm0sICR6ZW1fY29udGFjdF9lcnJvcjsKCglleHRyYWN0KGxBdHRzKGFycmF5KAoJ CSdsYWJlbCcJCT0+ICcnLAoJCSduYW1lJwkJPT4gJycKCSksICRhdHRzKSk7CgoJaWYgKGVt cHR5KCRuYW1lKSkKCXsKCQkkbmFtZSA9IHN0cnRvbG93ZXIocHJlZ19yZXBsYWNlKCcvXFcv JywgJycsICRsYWJlbCkpOwoJfQoKCWlmICgkbmFtZSBhbmQgcHMoJ3plbV9jb250YWN0X3N1 Ym1pdCcpKQoJewoJCSR6ZW1fY29udGFjdF9mb3JtWyRsYWJlbF0gPSBzZXJ2ZXJTZXQoJG5h bWUpOwoJfQp9CgpmdW5jdGlvbiB6ZW1fY29udGFjdF9zZWNyZXQoJGF0dHMsICR0aGluZyA9 ICcnKQp7CglnbG9iYWwgJHplbV9jb250YWN0X2Zvcm0sICR6ZW1fY29udGFjdF9lcnJvcjsK CglleHRyYWN0KGxBdHRzKGFycmF5KAoJCSduYW1lJwkJPT4gJycsCgkJJ3ZhbHVlJwkJPT4g JycKCSksICRhdHRzKSk7CgoJaWYgKCR2YWx1ZSkKCXsKCQkkdmFsdWUgPSBodG1sc3BlY2lh bGNoYXJzKCR2YWx1ZSk7Cgl9CgoJZWxzZWlmICgkdGhpbmcpCgl7CgkJJHZhbHVlID0gaHRt bHNwZWNpYWxjaGFycyh0cmltKHBhcnNlKCR0aGluZykpKTsKCX0KCglpZiAocHMoJG5hbWUp KQoJewoJCSR6ZW1fY29udGFjdF9mb3JtWyRsYWJlbF0gPSAkdmFsdWU7Cgl9CgoJcmV0dXJu ICc8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iJy4kbmFtZS4nIiBuYW1lPSInLiRuYW1lLici IHZhbHVlPSInLiR2YWx1ZS4nIiAvPic7Cn0KCmZ1bmN0aW9uIHplbV9jb250YWN0X3JhZGlv KCRhdHRzKQp7CglnbG9iYWwgJHplbV9jb250YWN0X2Zvcm0sICR6ZW1fY29udGFjdF9lcnJv cjsKCglleHRyYWN0KGxBdHRzKGFycmF5KAoJCSdicmVhaycJCT0+ICcgJywKCQknY2hlY2tl ZCcJPT4gJ25vJywKCQknaXNFcnJvcicJPT4gJycsCgkJJ2xhYmVsJwkJPT4gemVtX2NvbnRh Y3RfZ1R4dCgncmFkaW8nKSwKCQknbmFtZScJCT0+ICcnCgkpLCAkYXR0cykpOwoKCWlmIChl bXB0eSgkbmFtZSkpCgl7CgkJJG5hbWUgPSBzdHJ0b2xvd2VyKHByZWdfcmVwbGFjZSgnL1xX LycsICcnLCAkbGFiZWwpKTsKCX0KCgkkaWQgPSBzdHJ0b2xvd2VyKHByZWdfcmVwbGFjZSgn L1xXLycsICcnLCAkbGFiZWwpKTsKCgoJJHZhbHVlID0gcHMoJ3plbV9jb250YWN0X3N1Ym1p dCcpID8gKGJvb2wpIChwcygkbmFtZSkgPT0gJGlkKSA6ICgkY2hlY2tlZCA9PSAneWVzJyk7 CgoJaWYgKHBzKCd6ZW1fY29udGFjdF9zdWJtaXQnKSkKCXsKCQlpZiAoICR2YWx1ZSApICR6 ZW1fY29udGFjdF9mb3JtWyRuYW1lXSA9IHBzKCRuYW1lKTsKCX0KCglyZXR1cm4gJzxpbnB1 dCB2YWx1ZT0iJy4kaWQuJyIgdHlwZT0icmFkaW8iIGlkPSInLiRpZC4nIiBuYW1lPSInLiRu YW1lLiciJy4KCQkoICR2YWx1ZSA/ICcgY2hlY2tlZD0iY2hlY2tlZCIgLz4nIDogJyAvPicp LiRicmVhay4KCQknPGxhYmVsIGZvcj0iJy4kaWQuJyIgY2xhc3M9IicuJG5hbWUuJyI+Jy4k bGFiZWwuJzwvbGFiZWw+JzsKfQoKZnVuY3Rpb24gemVtX2NvbnRhY3Rfc2VuZF9hcnRpY2xl KCRhdHRzKSB7CgoJaWYgKCFpc3NldCgkX1JFUVVFU1RbJ3plbV9jb250YWN0X3NlbmRfYXJ0 aWNsZSddKSkgewoJCSRsaW5rdGV4dCA9IChlbXB0eSgkYXR0c1snbGlua3RleHQnXSkpID8g J3NlbmQgYXJ0aWNsZScgOiAkYXR0c1snbGlua3RleHQnXTsKCQkkam9pbiA9IChlbXB0eSgk X1NFUlZFUlsnUVVFUllfU1RSSU5HJ10pKSA/ICc/JyA6ICcmYW1wOyc7CgkJJGhyZWYgPSAk X1NFUlZFUlsnUkVRVUVTVF9VUkknXS4kam9pbi4nemVtX2NvbnRhY3Rfc2VuZF9hcnRpY2xl PXllcyc7CgkJcmV0dXJuICc8YSBocmVmPSInLiRocmVmLiciPicuJGxpbmt0ZXh0Lic8L2E+ JzsKCX0KCXJldHVybjsKCn0KCmZ1bmN0aW9uIHplbV9jb250YWN0X3N1Ym1pdCgkYXR0cykK ewoJZ2xvYmFsICR6ZW1fY29udGFjdF9ub25jZSwgJHplbV9jb250YWN0X2Vycm9yOwoKCWV4 dHJhY3QobEF0dHMoYXJyYXkoCgkJJ2J1dHRvbicJPT4gJ25vJywgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAvL2J1dHRvbiBhdHRyaWJ1dGUgYWRkZWQKCQkn bGFiZWwnCQk9PiB6ZW1fY29udGFjdF9nVHh0KCdzZW5kJykKCSksICRhdHRzKSk7CgoJaWYg KCRidXR0b24gPT0gJ3llcycpIC8vY29uZGl0aW9uYWwgdG8gYWRkIGEgImJ1dHRvbiIgZWxl bWVudCBhZGRlZAoJCXsKCQlyZXR1cm4gJzxidXR0b24gdHlwZT0ic3VibWl0IiBpZD0iemVt U3VibWl0IiBuYW1lPSJ6ZW1fY29udGFjdF9zdWJtaXQiIHZhbHVlPSInLiRsYWJlbC4nIj4n LiRsYWJlbC4nPC9idXR0b24+JzsgLy9idXR0b24gZWxlbWVudCBhZGRlZAoJCX0KCQllbHNl CgkJewoJCXJldHVybiAnPGlucHV0IHR5cGU9InN1Ym1pdCIgaWQ9InplbVN1Ym1pdCIgbmFt ZT0iemVtX2NvbnRhY3Rfc3VibWl0IiB2YWx1ZT0iJy4kbGFiZWwuJyIgLz4nOwoJCX0KfQoK Y2xhc3MgemVtY29udGFjdF9ldmFsdWF0aW9uIHsKCgl2YXIgJHN0YXR1czsKCglmdW5jdGlv biB6ZW1jb250YWN0X2V2YWx1YXRpb24oKSB7CgkJJHRoaXMtPnN0YXR1cyA9IDA7Cgl9CgoJ ZnVuY3Rpb24gYWRkX3plbWNvbnRhY3Rfc3RhdHVzKCRjaGVjaykgewoJCSR0aGlzLT5zdGF0 dXMgPSAkY2hlY2s7Cgl9CgoJZnVuY3Rpb24gZ2V0X3plbWNvbnRhY3Rfc3RhdHVzKCkgewoJ CXJldHVybiAkdGhpcy0+c3RhdHVzOwoJfQoKfQoKZnVuY3Rpb24gJmdldF96ZW1jb250YWN0 X2V2YWx1YXRvcigpIHsKCglzdGF0aWMgJGluc3RhbmNlOwoKCS8vIElmIHRoZSBpbnN0YW5j ZSBpcyBub3QgdGhlcmUsIGNyZWF0ZSBvbmUKCWlmKCFpc3NldCgkaW5zdGFuY2UpKSB7CgkJ JGluc3RhbmNlID0gbmV3IHplbWNvbnRhY3RfZXZhbHVhdGlvbigpOwoJfQoJcmV0dXJuICRp bnN0YW5jZTsKCn0KIjtzOjQ6InR5cGUiO3M6MToiMCI7czo1OiJvcmRlciI7czoxOiI1Ijtz OjQ6ImhlbHAiO3M6MjI0MDc6IjxkaXYgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyO2ZvbnQt d2VpZ2h0OmJvbGQ7Zm9udC1zaXplOjI0cHg7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTsi PlplbSBDb250YWN0IFJlYm9ybjwvZGl2PgoJPHA+SW5pdGlhbGx5IGJhc2VkIHVwb24gemVt X2NvbnRhY3QgMC42IGZyb20gemVtLiBDb2RlIGNvbXBsZXRlbHkgcmV2aXNlZCBieSBNYXJ5 LiBUdXJuZWQgaW50byBhIHBsdWctaW4gd2l0aCB0aGUgYWRkaXRpb24gb2YgcmV2aXNlZCBI ZWxwIHRleHQgYnkgU3R1YXJ0LiBBZGRpdGlvbmFsIGNvZGUgZnJvbSBTdHVhcnQsIFRyYW5x dWlsbG8sIGFzbHN3NjYsIGpkeWthc3QgYW5kIHdldC4gTWFpbnRhaW5lZCBieSBTdHVhcnQg YW5kIHRlc3RlZCB0byBkZXN0cnVjdGlvbiBieSB0aGUgVGV4dHBhdHRlcm4gY29tbXVuaXR5 LiBJZiB5b3UgaGF2ZSBhbnkgcHJvYmxlbXMgdXNpbmcgdGhpcyBwbHVnLWluIG9yIHNlZSBh bnkgYnVncyBhcm91bmQgcGxlYXNlIGdvIHRvIHRoZSA8c3Ryb25nPjxhIGhyZWY9Imh0dHA6 Ly9mb3J1bS50ZXh0cGF0dGVybi5jb20vdmlld3RvcGljLnBocD9pZD0xMzQxNiI+Zm9ydW0g dGhyZWFkPC9hPjwvc3Ryb25nPiBhbmQgdGVsbCB1cyBhYm91dCBpdC4gSWYgeW91IGRvbiYj ODIxNzt0LCB3ZSB3b24mIzgyMTc7dCBrbm93LjwvcD4KCTxwPjxzdHJvbmc+UGxlYXNlIG5v dGUgdGhhdCB0aGlzIHBsdWctaW4gbm93IHVzZXMgYSBzZXBhcmF0ZSBsYW5ndWFnZSBwbHVn LWluICYjODIxMTsgPGNvZGU+emVtX2NvbnRhY3RfbGFuZzwvY29kZT4gJiM4MjExOyBhbmQg Ym90aCBwbHVnLWlucyBhcmUgcmVxdWlyZWQgdG8gYmUgaW5zdGFsbGVkIGFuZCBhY3RpdmF0 ZWQgdG8gd29yayBwcm9wZXJseS48L3N0cm9uZz48L3A+Cgk8cD48c3Ryb25nPlRvIHRha2Ug YWR2YW50YWdlIG9mIHRoZSBuZXcgQVBJIHRoYXQgaGFzIGJlZW4gYWRkZWQgdG8gWmVtIENv bnRhY3QgUmVib3JuIHlvdSBuZWVkIHRvIGhhdmUgYSAzcmQtcGFydHkgcGx1Zy1pbiB0aGF0 IGhhcyBiZWVuIGRlc2lnbmVkIHRvICYjODIyMDtjb25uZWN0JiM4MjIxOyB0byBaZW0gQ29u dGFjdCBSZWJvcm4uPC9zdHJvbmc+PC9wPgoJPHA+PHN0cm9uZz5Gb3IgdGhvc2Ugb2YgeW91 IHJlcXVpcmluZyBzcGFtIHByZXZlbnRpb24ganVzdCBzdWNoIGEgcGx1Zy1pbiBleGlzdHMs IFRyYW5xdWlsbG8mIzgyMTc7cyA8Y29kZT5wYXBfY29udGFjdF9jbGVhbmVyPC9jb2RlPi48 L3N0cm9uZz48L3A+Cgk8cD48c3Ryb25nPkZvciBwbHVnLWluIGRldmVsb3BlcnMgd2hvIHdv dWxkIGxpa2UgdG8ga25vdyBtb3JlIGFib3V0IHRoaXMgcGx1Zy1pbiYjODIxNztzIEFQSSBw bGVhc2Ugc2VlIDxhIGhyZWY9IiNhcGkiPiYjODIyMDtaZW0gQ29udGFjdCBSZWJvcm4mIzgy MTc7cyBBUEkmIzgyMjE7PC9hPiBiZWxvdy48L3N0cm9uZz48L3A+Cgk8cD48YSBocmVmPSIj Y29udGFjdCI+PHN0cm9uZz4gJiM2MDt0eHA6emVtJiM5NTtjb250YWN0JiM2MjsgPC9zdHJv bmc+PC9hPiBwcm9kdWNlcyBhIGZsZXhpYmxlLCBjdXN0b21pc2FibGUgZW1haWwgY29udGFj dCBmb3JtLiBJdCBpcyBpbnRlbmRlZCBmb3IgdXNlIGFzIGFuIGVucXVpcnkgZm9ybSBmb3Ig Y29tbWVyY2lhbCBhbmQgcHJpdmF0ZSBzaXRlcywgYW5kIGluY2x1ZGVzIHNldmVyYWwgZmVh dHVyZXMgdG8gaGVscCByZWR1Y2UgY29tbW9uIHByb2JsZW1zIHdpdGggc3VjaCBmb3JtcyAo aW52YWxpZCBlbWFpbCBhZGRyZXNzZXMsIG1pc3NpbmcgaW5mb3JtYXRpb24pLjwvcD4KCTxw PjxhIGhyZWY9IiNhcnRpY2xlIj48c3Ryb25nPiAmIzYwO3R4cDp6ZW0mIzk1O2NvbnRhY3Qm Izk1O3NlbmQmIzk1O2FydGljbGUmIzYyOyA8L3N0cm9uZz48L2E+IGNhbiBiZSB1c2VkIHRv IGNyZWF0ZSBhICYjODIyMDtzZW5kIGFydGljbGUmIzgyMjE7IGxpbmsgd2l0aGluIGFuIGFy dGljbGUgZm9ybSwgY29ubmVjdGluZyBpdCB0byB0aGUgY29udGFjdCBmb3JtLjwvcD4KCTxw IHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlcjsiPjxzdHJvbmc+PGVtPkZlYXR1cmVzPC9lbT48 L3N0cm9uZz48L3A+Cgk8dWw+CgkJPGxpPkFyYml0cmFyeSB0ZXh0IGZpZWxkcyBjYW4gYmUg c3BlY2lmaWVkLCB3aXRoIG1pbi9tYXgvcmVxdWlyZWQgc2V0dGluZ3MgZm9yIHZhbGlkYXRp b24uPC9saT4KCQk8bGk+RW1haWwgYWRkcmVzcyB2YWxpZGF0aW9uLCBpbmNsdWRpbmcgYSBj aGVjayBmb3IgYSB2YWxpZCBNWCByZWNvcmQgKFVuaXggb25seSkuPC9saT4KCQk8bGk+U2Fm ZSBlc2NhcGluZyBvZiBpbnB1dCBkYXRhLjwvbGk+CgkJPGxpPkFjY2Vzc2libGUgZm9ybSBs YXlvdXQsIGluY2x1ZGluZyA8Y29kZT4mbHQ7bGFiZWwmZ3Q7PC9jb2RlPiwgPGNvZGU+Jmx0 O2xlZ2VuZCZndDs8L2NvZGU+IGFuZCA8Y29kZT4mbHQ7ZmllbGRzZXQmZ3Q7PC9jb2RlPiB0 YWdzLjwvbGk+CgkJPGxpPkFsbCBsYWJlbHMsIGlucHV0cyBhbmQgdGhlIHRleHRhcmVhIGhh dmUgdGhlaXIgb3duICYjODIyMDtpZCYjODIyMTsgYW5kICYjODIyMDtjbGFzcyYjODIyMTsu PC9saT4KCQk8bGk+U3BlY2lhbCBjbGFzc2VzIGZvciBsYWJlbHMsIGlucHV0cyBhbmQgdGhl IHRleHRhcmVhIGZvciB3aGVuIDxjb2RlPmVycm9yPC9jb2RlPiBtZXNzYWdlcyBhcmUgb3V0 cHV0LjwvbGk+CgkJPGxpPlNwZWNpYWwgY2xhc3NlcyBmb3IgbGFiZWxzLCBpbnB1dHMgYW5k IHRoZSB0ZXh0YXJlYSBpZiB0aGUgYXR0cmlidXRlIDxjb2RlPnJlcXVpcmVkPSJ5ZXMiPC9j b2RlPiBpcyB1c2VkLjwvbGk+CgkJPGxpPkEgc3BlY2lhbCBjbGFzcyBmb3IgdGhlIGVycm9y IG1lc3NhZ2VzIHRoZW1zZWx2ZXMuPC9saT4KCQk8bGk+QSBzZXBhcmF0ZSBsYW5ndWFnZSBw bHVnLWluIHRvIGVuYWJsZSBlYXN5IDxlbT5sb2NhbGlzYXRpb248L2VtPi48L2xpPgoJCTxs aT5TcGFtIHByZXZlbnRpb24uPC9saT4KCTwvdWw+Cgk8cD5Gb3IgYSBicmllZiBleHBsYW5h dGlvbiBvbiB0aGUgc3BlY2lhbCBjbGFzc2VzIHNlZSA8c3Ryb25nPjxhIGhyZWY9IiNzdHls aW5nIj5TdHlsaW5nPC9hPjwvc3Ryb25nPiBiZWxvdy48L3A+Cgk8cCBzdHlsZT0idGV4dC1h bGlnbjpjZW50ZXI7Ij48c3Ryb25nPjxlbT5FeGFtcGxlczwvZW0+PC9zdHJvbmc+PC9wPgoJ PHA+VGhlIHNpbXBsZXN0IGZvcm0gaXMgdGhpczotPC9wPgoJPHA+JiM2MDt0eHA6emVtJiM5 NTtjb250YWN0IHRvJiM2MTsmIzM0O2Rlc3RAZXhhbXBsZS5jb20mIzM0OyAvJiM2Mjsgd2hp Y2ggcHJvZHVjZXMgYSBkZWZhdWx0IGZvcm0gd2l0aCBOYW1lLCBFbWFpbCBhbmQgTWVzc2Fn ZSBmaWVsZHMuIEVtYWlsIHdpbGwgYmUgZGVsaXZlcmVkIHRvIGRlc3RAZXhhbXBsZS5jb20s IHdpdGggdGhlIHVzZXImIzgyMTc7cyBzdXBwbGllZCBlbWFpbCBhcyB0aGUgJiM4MjIwO0Zy b206JiM4MjIxOyBhZGRyZXNzLjwvcD4KCTxwPlRvIHNwZWNpZnkgZmllbGRzIGV4cGxpY2l0 bHksIHVzZSBzb21ldGhpbmcgbGlrZSB0aGlzOi08L3A+Cgk8cD4mIzYwO3R4cDp6ZW0mIzk1 O2NvbnRhY3QgdG8mIzYxOyYjMzQ7ZGVzdEBleGFtcGxlLmNvbSYjMzQ7JiM2Mjs8YnIgLz4K JiM2MDt0eHA6emVtJiM5NTtjb250YWN0JiM5NTtlbWFpbCAvJiM2Mjs8YnIgLz4KJiM2MDt0 eHA6emVtJiM5NTtjb250YWN0JiM5NTt0ZXh0IGxhYmVsJiM2MTsmIzM0O1Bob25lJiMzNDsg bWluJiM2MTs3IC8mIzYyOzxiciAvPgomIzYwO3R4cDp6ZW0mIzk1O2NvbnRhY3QmIzk1O3Rl eHRhcmVhIGxhYmVsJiM2MTsmIzM0O0VucXVpcnkmIzM0OyAvJiM2Mjs8YnIgLz4KJiM2MDt0 eHA6emVtJiM5NTtjb250YWN0JiM5NTtzdWJtaXQgbGFiZWwmIzYxOyYjMzQ7RW5xdWlyZSYj MzQ7IC8mIzYyOzxiciAvPgomIzYwOy90eHA6emVtJiM5NTtjb250YWN0JiM2Mjs8L3A+Cgk8 cD5BbHRlcm5hdGl2ZWx5LCBwbGFjZSB0aGUgZmllbGQgc3BlY2lmaWNhdGlvbnMgaW4gYSBU ZXh0cGF0dGVybiBmb3JtLCBhbmQgY2FsbCBpdCBsaWtlIHRoaXM6PC9wPgoJPHA+JiM2MDt0 eHA6emVtJiM5NTtjb250YWN0IHRvJiM2MTsmIzM0O2Rlc3RAZXhhbXBsZS5jb20mIzM0OyBm b3JtJiM2MTsmIzM0O215Y29udGFjdGZvcm0mIzM0OyAvJiM2Mjs8L3A+Cgk8cD5vciBpbmNs dWRlIHRoZSBhYm92ZSB0YWcgaW4geW91ciBmb3JtIGFzIHdlbGwgYW5kIGNhbGwgaXQgd2l0 aCB0aGUgJiM2MDt0eHA6b3V0cHV0JiM5NTtmb3JtJiM2MjsgdGFnLjwvcD4KIDxociAvPgoJ PHAgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyOyI+PHN0cm9uZz48ZW0+SW5kaXZpZHVhbCBU YWdzPC9lbT48L3N0cm9uZz48L3A+CiA8cCBpZD0iY29udGFjdCI+PHN0cm9uZz4gJiM2MDt0 eHA6emVtJiM5NTtjb250YWN0IC8mIzYyOyA8L3N0cm9uZz48L3A+Cgk8cD5NYXkgYmUgdXNl ZCBhcyBhIHNlbGYtY2xvc2luZyBvciBjb250YWluZXIgdGFnLiBQbGFjZSB0aGlzIHdoZXJl IHlvdSB3YW50IHRoZSBpbnB1dCBmb3JtIHRvIGdvLiBTdGF0dXMgYW5kIGVycm9yIG1lc3Nh Z2VzLCBpZiBhbnksIHdpbGwgYmUgZGlzcGxheWVkIGJlZm9yZSB0aGUgZm9ybS48L3A+Cgk8 cD5BdHRyaWJ1dGVzOi08L3A+Cgk8dWw+CgkJPGxpPjxzdHJvbmc+Y29weXNlbmRlcjwvc3Ry b25nPiAmIzgyMTE7IFVzaW5nIDxjb2RlPmNvcHlzZW5kZXI9InllcyI8L2NvZGU+IHdpbGwg c2VuZCBhIGNvcHkgb2YgdGhlIGVtYWlsIHRvIHRoZSBzZW5kZXImIzgyMTc7cyBhZGRyZXNz IGFzIHdlbGwgYXMgdGhlICYjODIyMDt0byYjODIyMTsgYWRkcmVzcyB0aGF0IHlvdSBoYXZl IHNldCBpbiB0aGUgdGFnIG9yICYjODIyMDt0b19mb3JtJiM4MjIxOy4gSW4gb3JkZXIgdG8g bm90IHNob3cgdGhlIHlvdXIgJiM4MjIwO3RvJiM4MjIxOyBhZGRyZXNzIG9uIHRoZSBzZW5k ZXImIzgyMTc7cyBjb3B5IGl0IGlzIHRyYW5zZmVycmVkIHRvIHRoZSAmIzgyMjA7QmNjJiM4 MjIxOyBmaWVsZCBhbmQgdGhlIHNlbmRlciYjODIxNztzIGFkZHJlc3MgYmVjb21lcyB0aGUg JiM4MjIwO3RvJiM4MjIxOyBhZGRyZXNzLiBUaGlzIG1lYW5zIHRoYXQgYXMgYm90aCBjb3Bp ZXMgYXJlIGlkZW50aWNhbCB5b3VyICYjODIyMDt0byYjODIyMTsgYWRkcmVzcyB3aWxsIG5v dCBiZSBzaG93biBvbiB5b3VyIGNvcHkgZWl0aGVyLiBEZWZhdWx0IGlzICYjODIyMDtubyYj ODIyMTsuIE9wdGlvbmFsLjwvbGk+CgkJPGxpPjxzdHJvbmc+Zm9ybTwvc3Ryb25nPiAmIzgy MTE7IFRoZSBuYW1lIG9mIHlvdXIgZm9ybSB0ZW1wbGF0ZSBjb250YWluaW5nIHRoZSBmaWVs ZCBsYXlvdXQuIE9wdGlvbmFsLjwvbGk+CgkJPGxpPjxzdHJvbmc+ZnJvbTwvc3Ryb25nPiAm IzgyMTE7IHVzZXMgdGhlIGFkZHJlc3Mgc3BlY2lmaWVkIGluIHRoaXMgYXR0cmlidXRlIGlu IHRoZSAmIzgyMjA7RnJvbTomIzgyMjE7IGZpZWxkIHdoZW4gc2VuZGluZyBlbWFpbC4gSWYg bm8gPGNvZGU+ZnJvbTwvY29kZT4gYXR0cmlidXRlIGlzIHNwZWNpZmllZCwgdGhlIHNlbmRl ciYjODIxNztzIGVtYWlsIGFkZHJlc3Mgd2lsbCBiZSB1c2VkIGZvciB0aGUgJiM4MjIwO0Zy b206JiM4MjIxOyBmaWVsZC4gV2hlbiA8Y29kZT5mcm9tPC9jb2RlPiBhdHRyaWJ1dGUgaXMg c3BlY2lmaWVkLCB0aGUgc2VuZGVyJiM4MjE3O3MgZW1haWwgYWRkcmVzcyB3aWxsIGJlIHBs YWNlZCBpbiB0aGUgJiM4MjIwO1JlcGx5LVRvOiYjODIyMTsgZmllbGQgaW5zdGVhZC4gT3B0 aW9uYWwuPC9saT4KCQk8bGk+PHN0cm9uZz5mcm9tX2Zvcm08L3N0cm9uZz4gJiM4MjExOyBU aGUgbmFtZSBvZiB5b3VyIGZvcm0gdGVtcGxhdGUgY29udGFpbmluZyAmIzgyMjA7c2VudCBm cm9tJiM4MjIxOyBhZGRyZXNzLiBPcHRpb25hbC48L2xpPgoJCTxsaT48c3Ryb25nPmxhYmVs PC9zdHJvbmc+ICYjODIxMTsgQ2FuIGJlIHVzZWQgdG8gZ2l2ZSB0aGUgZmllbGRzZXQgYSBs YWJlbCBhbmQgaXMgYWxzbyB1c2VkIGJ5IHRoZSA8Y29kZT4mbHQ7bGVnZW5kJmd0OzwvY29k ZT4gdGFnLiBEZWZhdWx0IGlzICYjODIyMDtDb250YWN0JiM4MjIxOy4gU2V0dGluZyB0aGlz IHRvIDxjb2RlPmxhYmVsPSIiPC9jb2RlPiBpcyBvbmUgd2F5IG9mIHN0b3BwaW5nIHRoZSA8 Y29kZT4mbHQ7bGVnZW5kJmd0OzwvY29kZT4gdGFnIGRpc3BsYXlpbmcgYW55dGhpbmcuIE9w dGlvbmFsLjwvbGk+CgkJPGxpPjxzdHJvbmc+cmVkaXJlY3Q8L3N0cm9uZz4gJiM4MjExOyBU aGlzIGNhbiBiZSB1c2VkIHRvIHJlcGxhY2UgdGhhbmtzKGEgYnVpbHQtaW4gZGVmYXVsdCkg b3IgdGhhbmtzX2Zvcm0gKG9wdGlvbmFsIGF0dHJpYnV0ZSkgYW5kIHdpbGwgc2VuZCBhIDMw MiAoJiM4MjIwO3NlZSBhbHNvJiM4MjIxOykgaGVhZGVyLCBhcyBvcHBvc2VkIHRvIGEgMzAx ICgmIzgyMjA7bW92ZWQgcGVybWFuZW50bHkmIzgyMjE7KS4gVGhlIHJlZGlyZWN0IGF0dHJp YnV0ZSB1c2VzIHlvdXIgVGV4dHBhdHRlcm4gc2l0ZSB1cmwgKGxpa2UgdGhlIHRhZyAmIzYw O3R4cDpzaXRlJiM5NTt1cmwgLyYjNjI7KSBhcyBpdCYjODIxNztzIGJhc2UuIEV4YW1wbGU6 IHJlZGlyZWN0PSYjODIyMTttb25rZXkmIzgyMjE7IHdvdWxkIHNlbmQgeW91IHRvIGh0dHA6 Ly95b3VyLWRvbWFpbi5jb20vbW9ua2V5LiBPcHRpb25hbC48L2xpPgoJCTxsaT48c3Ryb25n PnNlbmRfYXJ0aWNsZTwvc3Ryb25nPiAmIzgyMTE7IFVzaW5nIDxjb2RlPnNlbmRfYXJ0aWNs ZT0ieWVzIjwvY29kZT4gZW5hYmxlcyBleHRyYSBmdW5jdGlvbnMgZm9yIHVzZSB3aXRoIDxh IGhyZWY9IiNhcnRpY2xlIj48c3Ryb25nPiAmIzYwO3R4cDp6ZW0mIzk1O2NvbnRhY3QmIzk1 O3NlbmQmIzk1O2FydGljbGUmIzYyOyA8L3N0cm9uZz48L2E+IChzZWUgYmVsb3cpLiBEZWZh dWx0IGlzICYjODIyMDtubyYjODIyMTsuIE9wdGlvbmFsLjwvbGk+CgkJPGxpPjxzdHJvbmc+ c3ViamVjdDwvc3Ryb25nPiAmIzgyMTE7IENhbiBiZSB1c2VkIHdoZW4geW91IHVzZSB0aGUg Zm9ybSBpbiBhIHNwZWNpZmljIGFyZWEgb2YgYSBzaXRlIHRoYXQgcmVsYXRlcyB0byBhIHNw ZWNpZmljIHN1YmplY3QuIFRoZSBzaXRlIG5hbWUgaXMgaW5jbHVkZWQgYnkgZGVmYXVsdC4g T3B0aW9uYWwuPC9saT4KCQk8bGk+PHN0cm9uZz50aGFua3NfZm9ybTwvc3Ryb25nPiAmIzgy MTE7IFRoZSBuYW1lIG9mIHlvdXIgZm9ybSB0ZW1wbGF0ZSBjb250YWluaW5nIGEgdGhhbmsg eW91IG1lc3NhZ2UuIE9wdGlvbmFsLjwvbGk+CgkJPGxpPjxzdHJvbmc+dG88L3N0cm9uZz4g JiM4MjExOyBkZXN0aW5hdGlvbiBhZGRyZXNzLiA8c3Ryb25nPlJlcXVpcmVkPC9zdHJvbmc+ LjwvbGk+CgkJPGxpPjxzdHJvbmc+dG9fZm9ybTwvc3Ryb25nPiAmIzgyMTE7IFRoZSBuYW1l IG9mIHlvdXIgZm9ybSB0ZW1wbGF0ZSwgaWYgeW91IHVzZSBvbmUsIGNvbnRhaW5pbmcgdGhl ICYjODIyMDt0byYjODIyMTsgZW1haWwgYWRkcmVzcy4gT3B0aW9uYWwuPC9saT4KCQk8bGk+ PHN0cm9uZz5zaG93X2lucHV0PC9zdHJvbmc+ICYjODIxMTsgVXNlIDxjb2RlPnNob3dfaW5w dXQ9Im5vIjwvY29kZT4gdG8gZGlzYWJsZSBkaXNwbGF5IG9mIHRoZSBpbnB1dCBmb3JtLiBP cHRpb25hbC48L2xpPgoJCTxsaT48c3Ryb25nPnNob3dfZXJyb3I8L3N0cm9uZz4gJiM4MjEx OyBVc2UgPGNvZGU+c2hvd19lcnJvcj0ibm8iPC9jb2RlPiB0byBkaXNhYmxlIGRpc3BsYXkg b2YgZXJyb3IgYW5kIHN0YXR1cyBtZXNzYWdlcy4gT3B0aW9uYWwuPC9saT4KCTwvdWw+Cjxj b2RlPnNob3dfaW5wdXQ8L2NvZGU+IGFuZCA8Y29kZT5zaG93X2Vycm9yPC9jb2RlPiBjYW4g YmUgdXNlZCB0byBkaXNwbGF5IHRoZSBmb3JtIGFuZCBlcnJvci90aGFuayB5b3UgbWVzc2Fn ZXMgb24gZGlmZmVyZW50IHBhcnRzIG9mIGEgcGFnZS4gRm9yIGV4YW1wbGU6Cgk8cD4mIzYw O2RpdiBpZCYjNjE7JiMzNDtlcnJvciYjMzQ7JiM2MjsmIzYwO3R4cDp6ZW0mIzk1O2NvbnRh Y3QgZm9ybSYjNjE7JiMzNDtjb250YWN0JiM5NTtmb3JtJiMzNDsgc2hvdyYjOTU7aW5wdXQm IzYxOyYjMzQ7bm8mIzM0OyAvJiM2MjsmIzYwOy9kaXYmIzYyOzxiciAvPgomIzYwO2RpdiBp ZCYjNjE7JiMzNDtpbnB1dGZvcm0mIzM0OyYjNjI7JiM2MDt0eHA6emVtJiM5NTtjb250YWN0 IGZvcm0mIzYxOyYjMzQ7Y29udGFjdCYjOTU7Zm9ybSYjMzQ7IHNob3cmIzk1O2Vycm9yJiM2 MTsmIzM0O25vJiMzNDsgLyYjNjI7JiM2MDsvZGl2JiM2Mjs8L3A+CiA8aHIgLz4KCTxwIHN0 eWxlPSJ0ZXh0LWFsaWduOmNlbnRlcjsiPjxzdHJvbmc+VGhlIHJlbWFpbmluZyB0YWdzIG1h eSBvbmx5IGJlIHVzZWQgd2l0aGluIGEgJiM2MDt0eHA6emVtJiM5NTtjb250YWN0JiM2Mjsg Zm9ybSBvciBjb250YWluZXI8L3N0cm9uZz48L3A+CiA8aHIgLz4KCTxwPjxzdHJvbmc+ICYj NjA7dHhwOnplbSYjOTU7Y29udGFjdCYjOTU7dGV4dCAvJiM2MjsgPC9zdHJvbmc+PC9wPgoJ PHA+Q3JlYXRlcyBhIHRleHQgaW5wdXQgZmllbGQgYW5kIGNvcnJlc3BvbmRpbmcgPGNvZGU+ Jmx0O2xhYmVsJmd0OzwvY29kZT4gdGFnLiBUaGUgaW5wdXQgdmFsdWUgd2lsbCBiZSBpbmNs dWRlZCBpbiB0aGUgZW1haWwsIHByZWNlZGVkIGJ5IHRoZSBsYWJlbC48L3A+Cgk8cD5BdHRy aWJ1dGVzOi08L3A+Cgk8dWw+CgkJPGxpPjxzdHJvbmc+YnJlYWs8L3N0cm9uZz4gJiM4MjEx OyBCcmVhayB0YWcgYmV0d2VlbiB0aGUgbGFiZWwgYW5kIGZpZWxkLiBEZWZhdWx0IGlzIDxj b2RlPiZsdDticiAvJmd0OzwvY29kZT4uIFVzZSA8Y29kZT5icmVhaz0iIjwvY29kZT4gdG8g cHV0IHRoZSBsYWJlbCBhbmQgaW5wdXQgZmllbGQgb24gdGhlIHNhbWUgbGluZS4gT3B0aW9u YWwuPC9saT4KCQk8bGk+PHN0cm9uZz5kZWZhdWx0PC9zdHJvbmc+ICYjODIxMTsgRGVmYXVs dCB2YWx1ZSB3aGVuIG5vIGlucHV0IGlzIHByb3ZpZGVkLiBPcHRpb25hbC48L2xpPgoJCTxs aT48c3Ryb25nPmxhYmVsPC9zdHJvbmc+ICYjODIxMTsgVGV4dCBsYWJlbCBkaXNwbGF5ZWQg dG8gdGhlIHVzZXIuIERlZmF1bHQgaXMgJiM4MjIwO3RleHQmIzgyMjE7LiBPcHRpb25hbC48 L2xpPgoJCTxsaT48c3Ryb25nPm1pbjwvc3Ryb25nPiAmIzgyMTE7IE1pbmltdW0gaW5wdXQg bGVuZ3RoIGluIGNoYXJhY3RlcnMuIEFuIGVycm9yIG1lc3NhZ2Ugd2lsbCBiZSBkaXNwbGF5 ZWQgaWYgdGhlIGlucHV0IGlzIGxlc3MgdGhhbiBtaW4uIERlZmF1bHQgaXMgMC4gT3B0aW9u YWwuPC9saT4KCQk8bGk+PHN0cm9uZz5tYXg8L3N0cm9uZz4gJiM4MjExOyBNYXhpbXVtIGlu cHV0IGxlbmd0aCBpbiBjaGFyYWN0ZXJzLiBVc2VkIGZvciB0aGUgbWF4bGVuZ3RoIHBhcmFt ZXRlciBvZiB0aGUgaW5wdXQgZmllbGQuIE5vIGVycm9yIHdpbGwgYmUgZGlzcGxheWVkIGlm IHRoZSBsZW5ndGggaXMgZXhjZWVkZWQsIGJ1dCB0aGUgdmFsdWUgd2lsbCBiZSB0cnVuY2F0 ZWQgZm9yIHRoZSBlbWFpbC4gRGVmYXVsdCBpcyAxMDAuIE9wdGlvbmFsLjwvbGk+CgkJPGxp PjxzdHJvbmc+bmFtZTwvc3Ryb25nPiAmIzgyMTE7IEZpZWxkIG5hbWUsIGFzIHVzZWQgaW4g dGhlIEhUTUwgaW5wdXQgdGFnLiBEZWZhdWx0cyB0byB0aGUgbGFiZWwuIE9wdGlvbmFsLjwv bGk+CgkJPGxpPjxzdHJvbmc+c2l6ZTwvc3Ryb25nPiAmIzgyMTE7IFNpemUgb2YgdGhlIGlu cHV0IGZpZWxkIGFzIGRpc3BsYXllZCB0byB0aGUgdXNlci4gTGVhdmUgZW1wdHkgZm9yIHRo ZSBicm93c2VyIGRlZmF1bHQuIE9wdGlvbmFsLjwvbGk+CgkJPGxpPjxzdHJvbmc+cmVxdWly ZWQ8L3N0cm9uZz4gJiM4MjExOyA8Y29kZT5yZXF1aXJlZD0ieWVzIjwvY29kZT4gbWFrZXMg dGhlIGZpZWxkIG1hbmRhdG9yeS4gVGhlIGZvcm0gd2lsbCBkaXNwbGF5IGFuIGVycm9yIG1l c3NhZ2UgaWYgbm8gaW5wdXQgaXMgcHJvdmlkZWQuIERlZmF1bHQgaXMgJiM4MjIwO3llcyYj ODIyMTsuIE9wdGlvbmFsLjwvbGk+Cgk8L3VsPgogPGhyIC8+CiA8cCBpZD0iZW1haWwiPjxz dHJvbmc+ICYjNjA7dHhwOnplbSYjOTU7Y29udGFjdCYjOTU7ZW1haWwgLyYjNjI7IDwvc3Ry b25nPjwvcD4KCTxwPklucHV0IGZpZWxkIGZvciB1c2VyJiM4MjE3O3MgZW1haWwgYWRkcmVz cy4gVGhlIGlucHV0IHZhbHVlIHdpbGwgYXV0b21hdGljYWxseSBiZSB2YWxpZGF0ZWQgdG8g bWFrZSBzdXJlIGl0IGlzIG9mIHRoZSBmb3JtICYjODIyMDthYmNAeHh4Lnl5eVsuenp6XSYj ODIyMTsuIElmIHRoZSBVbml4LW9ubHkgZ2V0bXhycigpIGZ1bmN0aW9uIGlzIGF2YWlsYWJs ZSwgdGhlIGZvcm0gd2lsbCB2ZXJpZnkgdGhhdCBhbiBBIG9yIE1YIHJlY29yZCBleGlzdHMg Zm9yIHRoZSBkb21haW4uPC9wPgoJPHA+QXR0cmlidXRlcyBhcmUgdGhlIHNhbWUgYXMgZm9y ICYjNjA7dHhwOnplbSYjOTU7Y29udGFjdCYjOTU7dGV4dCAvJiM2MjssIGV4Y2VwdCB0aGF0 IHRoZSBkZWZhdWx0IGxhYmVsIGlzICYjODIyMDtFbWFpbCYjODIyMTsuPC9wPgogPGhyIC8+ Cgk8cD48c3Ryb25nPiAmIzYwO3R4cDp6ZW0mIzk1O2NvbnRhY3QmIzk1O3NlbGVjdCAvJiM2 MjsgPC9zdHJvbmc+PC9wPgoJPHA+Q3JlYXRlcyBhIGRyb3AtZG93biBzZWxlY3Rpb24gbGlz dC48L3A+Cgk8cD5BdHRyaWJ1dGVzIGFyZSBzaW1pbGFyIHRvICYjNjA7dHhwOnplbSYjOTU7 Y29udGFjdCYjOTU7dGV4dCAvJiM2MjssIHdpdGggdGhlIGZvbGxvd2luZyBhZGRpdGlvbnM6 LTwvcD4KCTx1bD4KCQk8bGk+PHN0cm9uZz5saXN0PC9zdHJvbmc+ICYjODIxMTsgQSBjb21t YSBzZXBhcmF0ZWQgbGlzdCBvZiBpdGVtcyB0byBzaG93IGluIHRoZSBkcm9wLWRvd24gYm94 OyBlLmcuICYjODIyMDtTYWxlcyxTdXBwb3J0LEFjY291bnRzJiM4MjIxOy48L2xpPgoJCTxs aT48c3Ryb25nPmRlbGltaXRlcjwvc3Ryb25nPiAmIzgyMTE7IFRoZSBzZXBhcmF0b3IgdXNl ZCBpbiBwYXJzaW5nIHRoZSBsaXN0IGF0dHJpYnV0ZS4gRGVmYXVsdCBpcyAmIzgyMjE7LCYj ODIyMTs8L2xpPgoJCTxsaT48c3Ryb25nPnNlbGVjdGVkPC9zdHJvbmc+ICYjODIxMTsgVGhl IGxpc3QgaXRlbSB0aGF0IGlzIHNlbGVjdGVkIGJ5IGRlZmF1bHQ7IGUuZy4gJiM4MjIwO1N1 cHBvcnQmIzgyMjE7LiBEZWZhdWx0IGlzICYjODIyMDt5ZXMmIzgyMjE7LjwvbGk+Cgk8L3Vs PgoJPHA+bWluIGFuZCBtYXggaGF2ZSBubyBlZmZlY3QuIElmIDxjb2RlPnJlcXVpcmVkPSJ5 ZXMiPC9jb2RlPiAoZGVmYXVsdCksIGFuIGVtcHR5IGl0ZW0gd2lsbCBub3QgYmUgYWNjZXB0 ZWQuIFVzZSAmIzYwO3R4cDp6ZW0mIzk1O2NvbnRhY3QmIzk1O3NlbGVjdCBsaXN0JiM2MTsm IzM0OyxTYWxlcyxTdXBwb3J0JiMzNDsgLyYjNjI7IHRvIG1ha2UgdGhlIGZpcnN0IGl0ZW0g YmxhbmssIGZvcmNpbmcgdGhlIHVzZXIgdG8gbWFrZSBhIHNlbGVjdGlvbi48L3A+CiA8aHIg Lz4KCTxwPjxzdHJvbmc+ICYjNjA7dHhwOnplbSYjOTU7Y29udGFjdCYjOTU7Y2hlY2tib3gg LyYjNjI7IDwvc3Ryb25nPjwvcD4KCTxwPkNyZWF0ZXMgYSBjaGVjayBib3guPC9wPgoJPHA+ QXR0cmlidXRlcyBhcmUgc2ltaWxhciB0byAmIzYwO3R4cDp6ZW0mIzk1O2NvbnRhY3QmIzk1 O3RleHQgLyYjNjI7LCBleGNlcHQgdGhhdCBtaW4gYW5kIG1heCBoYXZlIG5vIGVmZmVjdC4g QWRkaXRpb25hbCBhdHRyaWJ1dGVzOi08L3A+Cgk8dWw+CgkJPGxpPjxzdHJvbmc+Y2hlY2tl ZDwvc3Ryb25nPiAmIzgyMTE7IFVzZSA8Y29kZT5jaGVja2VkPSJ5ZXMiPC9jb2RlPiB0byBt YWtlIHRoZSBib3ggY2hlY2tlZCB3aGVuIHRoZSBmb3JtIGlzIGZpcnN0IGRpc3BsYXllZC4g RGVmYXVsdCBpcyAmIzgyMjA7bm8mIzgyMjE7LiBPcHRpb25hbC48L2xpPgoJPC91bD4KCTxw PklmIDxjb2RlPnJlcXVpcmVkPSJ5ZXMiPC9jb2RlPiAoZGVmYXVsdCksIHRoZSBmb3JtIHdv biYjODIxNzt0IGJlIGFjY2VwdGVkIHVubGVzcyB0aGUgYm94IGlzIGNoZWNrZWQuIFVzZSAm IzYwO3R4cDp6ZW0mIzk1O2NvbnRhY3QmIzk1O2NoZWNrYm94IGxhYmVsJiM2MTsmIzM0O0kg YWNjZXB0IHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyYjMzQ7IC8mIzYyOyB0byBtYWtlIGEg Y3J1ZGUgc2hyaW5rLXdyYXAgYWdyZWVtZW50IHdoaWNoIG11c3QgYmUgY2hlY2tlZCBieSB0 aGUgdXNlciBiZWZvcmUgdGhlIGVtYWlsIHdpbGwgYmUgc2VudC48L3A+CiA8aHIgLz4KCTxw PjxzdHJvbmc+ICYjNjA7dHhwOnplbSYjOTU7Y29udGFjdCYjOTU7dGV4dGFyZWEgLyYjNjI7 IDwvc3Ryb25nPjwvcD4KCTxwPlRleHRhcmVhIGlucHV0IGZpZWxkLjwvcD4KCTxwPlN1cHBv cnRzIHRoZSBzYW1lIGF0dHJpYnV0ZXMgYXMgJiM2MDt0eHA6emVtJiM5NTtjb250ZW50JiM5 NTt0ZXh0IC8mIzYyOywgd2l0aCB0aGUgZXhjZXB0aW9uIG9mIHNpemUuIFRoZSBkZWZhdWx0 IGxhYmVsIGlzICYjODIyMDtNZXNzYWdlJiM4MjIxOyBhbmQgdGhlIGRlZmF1bHQgbWF4IGlz IDEwMDAwLiBBZGRpdGlvbmFsIGF0dHJpYnV0ZXM6LTwvcD4KCTx1bD4KCQk8bGk+PHN0cm9u Zz5jb2xzPC9zdHJvbmc+ICYjODIxMTsgY29sdW1uIHdpZHRoLiBEZWZhdWx0IGlzIDUwLiBP cHRpb25hbC48L2xpPgoJCTxsaT48c3Ryb25nPnJvd3M8L3N0cm9uZz4gJiM4MjExOyByb3cg aGVpZ2h0LiBEZWZhdWx0IGlzIDYuIE9wdGlvbmFsLjwvbGk+Cgk8L3VsPgogPGhyIC8+Cgk8 cD48c3Ryb25nPiAmIzYwO3R4cDp6ZW0mIzk1O2NvbnRhY3QmIzk1O3JhZGlvIC8mIzYyOyA8 L3N0cm9uZz48L3A+Cgk8cD5DcmVhdGVzICYjODIyMDtyYWRpbyBidXR0b25zJiM4MjIxOyBz byB0aGF0IHlvdXIgdmlzaXRvcnMgY2FuIGNvbXBsZXRlIHN1cnZleXMvcXVlc3Rpb25haXJl cy4gQ29kZSBncmFjaW91c2x5IHByb3ZpZGVkIGJ5IFJvYmVydCBXZXR6bG1heXIgKHdldCku PC9wPgoJPHA+PHN0cm9uZz5Vc2FnZSBFeGFtcGxlPC9zdHJvbmc+PC9wPgoJPHA+JiM2MDt0 eHA6emVtJiM5NTtjb250YWN0JiM5NTtyYWRpbyBuYW1lJiM2MTsmIzM0O3N0ZWFrJiMzNDsg bGFiZWwmIzYxOyYjMzQ7V2VsbCBEb25lJiMzNDsgLyYjNjI7PGJyIC8+CiYjNjA7dHhwOnpl bSYjOTU7Y29udGFjdCYjOTU7cmFkaW8gbmFtZSYjNjE7JiMzNDtzdGVhayYjMzQ7IGxhYmVs JiM2MTsmIzM0O01lZGl1bSYjMzQ7IC8mIzYyOzxiciAvPgomIzYwO3R4cDp6ZW0mIzk1O2Nv bnRhY3QmIzk1O3JhZGlvIG5hbWUmIzYxOyYjMzQ7c3RlYWsmIzM0OyBsYWJlbCYjNjE7JiMz NDtSYXJlJiMzNDsgLyYjNjI7PC9wPgoJPHA+JiM2MDt0eHA6emVtJiM5NTtjb250YWN0JiM5 NTtyYWRpbyBuYW1lJiM2MTsmIzM0O2RyaW5rJiMzNDsgbGFiZWwmIzYxOyYjMzQ7V2luZSYj MzQ7IC8mIzYyOzxiciAvPgomIzYwO3R4cDp6ZW0mIzk1O2NvbnRhY3QmIzk1O3JhZGlvIG5h bWUmIzYxOyYjMzQ7ZHJpbmsmIzM0OyBsYWJlbCYjNjE7JiMzNDtXYXRlciYjMzQ7IC8mIzYy OzwvcD4KCTxwPkdyb3VwIG11dHVhbGx5IGV4Y2x1c2l2ZSByYWRpbyBidXR0b25zIGJ5IHVz aW5nIGlkZW50aWNhbCAmIzgyMjA7bmFtZXMmIzgyMjE7LiBPbmx5IHRoZSBjaG9zZW4gcmFk aW8gYnV0dG9uIGZyb20gZWFjaCBncm91cCB3aWxsIGJlIHBvc3RlZCB0byB0aGUgbWVzc2Fn ZS4gVGhlIG1lc3NhZ2Ugd2lsbCBiZSBvdXRwdXQgaW4gdGhlIGZvcm0gPGNvZGU+JG5hbWU6 ICRsYWJlbDwvY29kZT4gZm9yIGVhY2ggb2YgdGhlIGNob3NlbiByYWRpbyBidXR0b25zLjwv cD4KCTxwPkF0dHJpYnV0ZXM6LTwvcD4KCTx1bD4KCQk8bGk+PHN0cm9uZz5icmVhazwvc3Ry b25nPiAmIzgyMTE7IEJyZWFrIHRhZyBiZXR3ZWVuIHRoZSBsYWJlbCBhbmQgZmllbGQuIERl ZmF1bHQgaXMgYSBzcGFjZS4gT3B0aW9uYWwuPC9saT4KCQk8bGk+PHN0cm9uZz5jaGVja2Vk PC9zdHJvbmc+ICYjODIxMTsgVXNlIDxjb2RlPmNoZWNrZWQ9InllcyI8L2NvZGU+IHRvIG1h a2UgYSByYWRpbyBidXR0b24gY2hlY2tlZCB3aGVuIHRoZSBmb3JtIGlzIGZpcnN0IGRpc3Bs YXllZC4gRGVmYXVsdCBpcyAmIzgyMjA7bm8mIzgyMjE7LiBPcHRpb25hbC48L2xpPgoJCTxs aT48c3Ryb25nPmxhYmVsPC9zdHJvbmc+ICYjODIxMTsgVGV4dCBsYWJlbCBkaXNwbGF5ZWQg dG8gdGhlIHVzZXIuIERlZmF1bHQgaXMgJiM4MjIwO3JhZGlvJiM4MjIxOy4gT3B0aW9uYWwu PC9saT4KCQk8bGk+PHN0cm9uZz5uYW1lPC9zdHJvbmc+ICYjODIxMTsgRmllbGQgbmFtZSwg YXMgdXNlZCBpbiB0aGUgSFRNTCBpbnB1dCB0YWcuIERlZmF1bHRzIHRvIHRoZSBsYWJlbCB0 aG91Z2ggeW91IHNob3VsZCBiZSBzcGVjaWZ5aW5nIGJvdGggPGNvZGU+bmFtZTwvY29kZT4g YW5kIDxjb2RlPmxhYmVsPC9jb2RlPiBhdHRyaWJ1dGVzIGluIHRoZSB0YWcuIE9wdGlvbmFs LjwvbGk+Cgk8L3VsPgogPGhyIC8+Cgk8cD48c3Ryb25nPiAmIzYwO3R4cDp6ZW0mIzk1O2Nv bnRhY3QmIzk1O3N1Ym1pdCAvJiM2MjsgPC9zdHJvbmc+PC9wPgoJPHA+U3VibWl0IGJ1dHRv bi48L3A+Cgk8cD5BdHRyaWJ1dGVzOi08L3A+Cgk8dWw+CgkJPGxpPjxzdHJvbmc+YnV0dG9u PC9zdHJvbmc+ICYjODIxMTsgQWRkaW5nIHRoZSA8Y29kZT5idXR0b249InllcyI8L2NvZGU+ IGF0dHJpYnV0ZSB0byB0aGUgdGFnIHdpbGwgZ2l2ZSB5b3UgYSAmIzgyMjA7YnV0dG9uIGVs ZW1lbnQmIzgyMjE7IGluc3RlYWQgb2YgYW4gJiM4MjIwO2lucHV0IGVsZW1lbnQmIzgyMjE7 LiBEZWZhdWx0IGlzICYjODIyMDtubyYjODIyMTsuIE9wdGlvbmFsLjwvbGk+CgkJPGxpPjxz dHJvbmc+bGFiZWw8L3N0cm9uZz4gJiM4MjExOyBMYWJlbC9CdXR0b24gdGV4dC4gRGVmYXVs dCBpcyAmIzgyMjA7U2VuZCYjODIyMTsuIE9wdGlvbmFsLjwvbGk+Cgk8L3VsPgogPGhyIC8+ Cgk8cD48c3Ryb25nPiAmIzYwO3R4cDp6ZW0mIzk1O2NvbnRhY3QmIzk1O3NlcnZlcmluZm8g LyYjNjI7IDwvc3Ryb25nPjwvcD4KCTxwPlRoaXMgdGFnIGhhcyBubyBlZmZlY3Qgb24gdGhl IGZvcm0gb3IgSFRNTCBvdXRwdXQsIGJ1dCB3aWxsIGluY2x1ZGUgYWRkaXRpb25hbCBpbmZv cm1hdGlvbiBpbiB0aGUgZW1haWwgYmFzZWQgb24gdGhlIFBIUCAkX1NFUlZFUiB2YXJpYWJs ZS4gRm9yIGV4YW1wbGUsICYjNjA7dHhwOnplbSYjOTU7Y29udGFjdCYjOTU7c2VydmVyaW5m byBuYW1lJiM2MTsmIzM0O1JFTU9URSYjOTU7QUREUiYjMzQ7IGxhYmVsJiM2MTsmIzM0O0lQ JiMzNDsgLyYjNjI7IHdpbGwgcmVwb3J0IHRoZSB1c2VyJiM4MjE3O3MgSVAgYWRkcmVzcy48 L3A+Cgk8cD5BdHRyaWJ1dGVzOi08L3A+Cgk8dWw+CgkJPGxpPjxzdHJvbmc+bmFtZTwvc3Ry b25nPiAmIzgyMTE7IG5hbWUgb2YgdGhlIHNlcnZlciB2YXJpYWJsZSwgZS5nLiBSRVFVRVNU X1VSSSwgSFRUUF9VU0VSX0FHRU5ULiBTZWUgdGhlIFBIUCBtYW51YWwgZm9yIGEgZnVsbCBs aXN0LiA8c3Ryb25nPlJlcXVpcmVkPC9zdHJvbmc+LjwvbGk+CgkJPGxpPjxzdHJvbmc+bGFi ZWw8L3N0cm9uZz4gJiM4MjExOyBpZiBzdXBwbGllZCwgdGhpcyB3aWxsIGJlIHVzZWQgdG8g aWRlbnRpZnkgdGhlIGZpZWxkIGluIHRoZSBlbWFpbC4gT3B0aW9uYWwuPC9saT4KCTwvdWw+ CiA8aHIgLz4KPGRpdiBpZD0iYXJ0aWNsZSIgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyO2Zv bnQtd2VpZ2h0OmJvbGQ7Zm9udC1zaXplOjI0cHg7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGlu ZTsiPlplbSBDb250YWN0IFNlbmQgQXJ0aWNsZTwvZGl2PgoJPHA+RGV2ZWxvcGVkIGJ5IHRy YW5xdWlsbG8sIHRoaXMgYWxsb3dzIHlvdSB0byBhZGQgYSAmIzgyMjA7U2VuZCBBcnRpY2xl JiM4MjIxOyBsaW5rIHRvIGFuIGluZGl2aWR1YWwgYXJ0aWNsZSBmb3JtIHdoaWNoLCB3aGVu IGNsaWNrZWQgYnkgYSB2aXNpdG9yLCB3aWxsIGRpc3BsYXkgYSBmb3JtIGZvciB0aGVtIHRv IGVudGVyIHRoZWlyIG5hbWUsIHRoZWlyIGZyaWVuZCYjODIxNztzIGVtYWlsIGFkZHJlc3Mg YW5kIGFuIG9wdGlvbmFsIHBlcnNvbmFsIG1lc3NhZ2UuIFdoZW4gdGhlIGZvcm0gaXMgc3Vi bWl0dGVkIHRoZSBhcnRpY2xlIHRpdGxlLCBleGNlcnB0IGFuZCBib2R5IGFyZSBpbmNsdWRl ZCBpbiB0aGUgZW1haWwuPC9wPgoJPHA+PHN0cm9uZz4gJiM2MDt0eHA6emVtJiM5NTtjb250 YWN0IHNlbmQmIzk1O2FydGljbGUmIzYxOyYjMzQ7eWVzJiMzNDsgLyYjNjI7IDwvc3Ryb25n PjwvcD4KCTxwPlVzZSB0aGlzIHRhZyBpbiB5b3VyIGluZGl2aWR1YWwgYXJ0aWNsZSBmb3Jt LCB3aGVyZSB5b3Ugd2FudCB0aGUgY29udGFjdCBmb3JtIHRvIGJlIGRpc3BsYXllZC4gRW5z dXJlIHRoYXQgeW91IGluY2x1ZGUgdGhlIGF0dHJpYnV0ZSA8Y29kZT5zZW5kX2FydGljbGU9 InllcyI8L2NvZGU+LiBJdCBvcGVyYXRlcyBhcyBhIHBsYWNlLWhvbGRlci4gVGhlIGZvcm0g d2lsbCBub3QgYWN0dWFsbHkgYXBwZWFyIG9uLXNjcmVlbiB1bnRpbCB0aGUgbGluayBjb250 YWluZWQgaW4gbmV4dCB0YWcgaGFzIGJlZW4gYWN0aXZhdGVkLiBXaGVuIHRoZSBtZXNzYWdl IGhhcyBiZWVuIHNlbnQgdGhlIGZvcm0gd2lsbCBiZSByZXBsYWNlZCB3aXRoIHRoZSAmIzgy MjA7dGhhbmsgeW91JiM4MjIxOyBtZXNzYWdlIG9yIGZvcm0uPC9wPgoJPHA+QXR0cmlidXRl cyBhcmUgaWRlbnRpY2FsIHRvIDxhIGhyZWY9IiNjb250YWN0Ij48c3Ryb25nPiAmIzYwO3R4 cDp6ZW0mIzk1O2NvbnRhY3QgLyYjNjI7IDwvc3Ryb25nPjwvYT4gaG93ZXZlciAmIzgyMjA7 c3ViamVjdCYjODIyMTsgd2lsbCB1c2UgdGhlIGFydGljbGUmIzgyMTc7cyB0aXRsZSBmb3Ig aXQmIzgyMTc7cyBjb250ZW50cyBhbmQgdGhlcmUgaXMgbm8gbmVlZCB0byB1c2UgdGhlICYj ODIyMDt0byYjODIyMTsgYXR0cmlidXRlIHdoZW4gdXNpbmcgdGhlIHRhZyB0aGlzIHdheSAo c2VlIHRoZSAmIzYwO3R4cDp6ZW0mIzk1O2NvbnRhY3QmIzk1O2VtYWlsIG5hbWUmIzYxOyYj MzQ7cmVjZWl2ZXImIzM0OyAvJiM2MjsgdGFnIGJlbG93KS48L3A+CiA8aHIgLz4KCTxwPjxz dHJvbmc+ICYjNjA7dHhwOnplbSYjOTU7Y29udGFjdCYjOTU7c2VuZCYjOTU7YXJ0aWNsZSAv JiM2MjsgPC9zdHJvbmc+PC9wPgoJPHA+VXNlIHRoaXMgdGFnIGluIHlvdXIgaW5kaXZpZHVh bCBhcnRpY2xlIGZvcm0sIHdoZXJlIHlvdSB3YW50IHRoZSAmIzgyMjA7c2VuZCBhcnRpY2xl JiM4MjIxOyBsaW5rIHRvIGJlIGRpc3BsYXllZC48L3A+Cgk8cD5BdHRyaWJ1dGVzOi08L3A+ Cgk8dWw+CgkJPGxpPjxzdHJvbmc+bGlua3RleHQ8L3N0cm9uZz4gJiM4MjExOyBUaGUgdGV4 dCBkaXNwbGF5ZWQgZm9yIHRoZSBsaW5rLiBEZWZhdWx0IGlzICYjODIyMDtzZW5kIGFydGlj bGUmIzgyMjE7LiBPcHRpb25hbC48L2xpPgoJPC91bD4KIDxociAvPgoJPHA+PHN0cm9uZz4g JiM2MDt0eHA6emVtJiM5NTtjb250YWN0JiM5NTtlbWFpbCBuYW1lJiM2MTsmIzM0O3JlY2Vp dmVyJiMzNDsgLyYjNjI7IDwvc3Ryb25nPjwvcD4KCTxwPlVzZSB0aGlzIHRhZyBpbiB5b3Vy IGNvbnRhY3QgZm9ybSB0ZW1wbGF0ZSB0byBkaXNwbGF5IGFuIGlucHV0IGJveCBmb3IgdGhl IHJlY2VpdmVyJiM4MjE3O3MgZW1haWwgYWRkcmVzcyB0byBiZSBlbnRlcmVkLiBZb3UgbXVz dCBlbnN1cmUgdGhhdCB5b3UgaW5jbHVkZSB0aGUgYXR0cmlidXRlIDxjb2RlPm5hbWU9InJl Y2VpdmVyIjwvY29kZT4gc28gdGhhdCB0aGUgcGx1Zy1pbiByZWNvZ25pc2VzIHRoaXMgYXMg dGhlICYjODIyMDt0byYjODIyMTsgYWRkcmVzcy4gRm9yIHRoaXMgcmVhc29uIGl0IGlzIGFk dmlzYWJsZSB0aGF0IHlvdSBjcmVhdGUgYW5kIHVzZSBhIHNlcGFyYXRlIGZvcm0gdGVtcGxh dGUgZm9yIHRoZXNlICYjODIyMDtzZW5kX2FydGljbGUmIzgyMjE7IGZ1bmN0aW9ucy48L3A+ Cgk8cD5BdHRyaWJ1dGVzIGFyZSB0aGUgc2FtZSBhcyBmb3IgPGEgaHJlZj0iI2VtYWlsIj48 c3Ryb25nPiAmIzYwO3R4cDp6ZW0mIzk1O2NvbnRhY3QmIzk1O2VtYWlsIC8mIzYyOyA8L3N0 cm9uZz48L2E+LjwvcD4KIDxociAvPgo8ZGl2IGlkPSJzdHlsaW5nIiBzdHlsZT0idGV4dC1h bGlnbjpjZW50ZXI7Zm9udC13ZWlnaHQ6Ym9sZDtmb250LXNpemU6MjRweDt0ZXh0LWRlY29y YXRpb246dW5kZXJsaW5lOyI+U3R5bGluZzwvZGl2PgoJPHA+V2hlbiBlcnJvciBtZXNzYWdl cyByZWxhdGluZyB0byBpbmZvcm1hdGlvbiBlbnRlcmVkLCBvciBub3QgZW50ZXJlZCwgaW50 byB0aGUgZm9ybSBhcmUgb3V0cHV0IHRoZXkgYXJlIGNvbnRhaW5lZCB3aXRoaW4gYSAmIzgy MjA7dWwmIzgyMjE7LiBUaGF0ICYjODIyMDt1bCYjODIyMTsgaGFzIGJlZW4gYWxsb2NhdGVk IDxjb2RlPmNsYXNzPSJ6ZW1FcnJvciI8L2NvZGU+LjwvcD4KCTxwPkFsbCBsYWJlbHMsIGlu cHV0cyBhbmQgdGhlIHRleHRhcmVhIGhhdmUgdGhlaXIgb3duIGluZGl2aWR1YWwgJiM4MjIw O2lkJiM4MjIxOyBhbmQgJiM4MjIwO2NsYXNzJiM4MjIxOyB3aGljaCBhcmUgZXF1YWwgdG8g dGhlIHZhbHVlIG9mIDxjb2RlPiRuYW1lPC9jb2RlPi4gVGhpcyBtYXkgYmUgYSBkZWZhdWx0 IHZhbHVlIG9yIG9uZSB0aGF0IHlvdSBoYXZlIGVudGVyZWQgeW91cnNlbGYgdXNpbmcgdGhl IDxjb2RlPm5hbWU9IndoYXRldmVyIjwvY29kZT4gYXR0cmlidXRlLjwvcD4KCTxwPldoZW4g PGNvZGU+cmVxdWlyZWQ9InllcyI8L2NvZGU+LCB0aGUgcmVsZXZhbnQgbGFiZWxzIGFuZCBp bnB1dHMsIG9yIGxhYmVsIGFuZCB0aGUgdGV4dGFyZWEgYXJlIGdpdmVuIGEgc2Vjb25kIGNs YXNzIG9mICYjODIyMDt6ZW1SZXF1aXJlZCYjODIyMTsgYWxvbmdzaWRlIHRoZWlyIGluZGl2 aWR1YWwgY2xhc3NlcyBpbiB0aGUgZm9ybWF0IDxjb2RlPmNsYXNzPSJ6ZW1SZXF1aXJlZCAk bmFtZSI8L2NvZGU+LiBCb3RoIGNsYXNzZXMgY2FuIGJlIHVzZWQgaW5kaXZpZHVhbGx5IHNv IHRoYXQgeW91IGNhbiBzZXR1cCBhIGdsb2JhbCAmIzgyMjA7cmVxdWlyZWQmIzgyMjE7IHN0 eWxlIGFzIHdlbGwgYXMgaW5kaXZpZHVhbCBzdHlsaW5nLjwvcD4KCTxwPldoZW4gYW4gZXJy b3IgcmVsYXRpbmcgdG8gYW4gaW5wdXQgb3IgdGhlIHRleHRhcmVhIGlzIG91dHB1dCwgdGhl IHJlbGV2YW50IGxhYmVsIGFuZCBpbnB1dCwgb3IgbGFiZWwgYW5kIHRoZSB0ZXh0YXJlYSwg aGF2ZSB0aGUgY2xhc3MgJiM4MjIwO2Vycm9yRWxlbWVudCYjODIyMTsgYXBwZW5kZWQgdG8g JiM4MjIwO3plbVJlcXVpcmVkJiM4MjIxOyBpbiB0aGUgZm9ybWF0IDxjb2RlPmNsYXNzPSJ6 ZW1SZXF1aXJlZGVycm9yRWxlbWVudCAkbmFtZSI8L2NvZGU+LiBBZ2FpbiwgYm90aCBjbGFz c2VzIGNhbiBiZSB1c2VkIGluZGl2aWR1YWxseSBzbyB0aGF0IHlvdSBjYW4gc2V0dXAgYSBn bG9iYWwgJiM4MjIwO2Vycm9yJiM4MjIxOyBzdHlsZSBhbG9uZ3NpZGUgeW91ciBpbmRpdmlk dWFsIHN0eWxpbmcuPC9wPgogPGhyIC8+CjxkaXYgaWQ9ImFwaSIgc3R5bGU9InRleHQtYWxp Z246Y2VudGVyO2ZvbnQtd2VpZ2h0OmJvbGQ7Zm9udC1zaXplOjI0cHg7dGV4dC1kZWNvcmF0 aW9uOnVuZGVybGluZTsiPlplbSBDb250YWN0IFJlYm9ybiYjODIxNztzIEFQSTwvZGl2PgoJ PHA+VGhlIHBsdWdpbiBBUEkgb2YgemVtIGNvbnRhY3QsIGRldmVsb3BlZCBieSBUcmFucXVp bGxvLCBpcyBzaW1pbGFyIHRvIHRoZSBjb21tZW50cyBBUEkgb2YgVGV4dHBhdHRlcm4sIHdo aWNoIGlzIGV4cGxhaW5lZCBpbiB0aGUgVGV4dGJvb2s8YnIgLz4KPGEgaHJlZj0iaHR0cDov L3RleHRwYXR0ZXJuLm5ldC93aWtpL2luZGV4LnBocD90aXRsZT1QbHVnaW5fRGV2ZWxvcG1l bnRfVG9waWNzIj5QbHVnaW4gRGV2ZWxvcG1lbnQgVG9waWNzPC9hPiBhbmQgPGEgaHJlZj0i aHR0cDovL3RleHRwYXR0ZXJuLm5ldC93aWtpL2luZGV4LnBocD90aXRsZT1Db21iYXRfQ29t bWVudF9TcGFtIj5Db21iYXQgQ29tbWVudCBTcGFtPC9hPi48L3A+Cgk8cD5UaGUgdHdvIGV2 ZW50cyBmb3IgemVtX2NvbnRhY3QgYXJlICYjODIxNjs8Y29kZT56ZW1jb250YWN0LnN1Ym1p dDwvY29kZT4mIzgyMTc7IGFuZCAmIzgyMTY7PGNvZGU+emVtY29udGFjdC5mb3JtPC9jb2Rl PiYjODIxNzsuPGJyIC8+CiYjODIxNjs8Y29kZT56ZW1jb250YWN0LnN1Ym1pdDwvY29kZT4m IzgyMTc7IGlzIGNhbGxlZCBhZnRlciB0aGUgZm9ybSBpcyBzdWJtaXR0ZWQgYW5kIHRoZSB2 YWx1ZXMgYXJlIGNoZWNrZWQgaWYgZW1wdHkgb3IgdmFsaWQgZW1haWxhZGRyZXNzZXMsIGJ1 dCBiZWZvcmUgdGhlIG1haWwgaXMgc2VudC48YnIgLz4KJiM4MjE2Ozxjb2RlPnplbWNvbnRh Y3QuZm9ybTwvY29kZT4mIzgyMTc7IGxldCYjODIxNztzIHlvdSBpbnNlcnQgY29udGVudCBp biB0aGUgY29udGFjdCBmb3JtLjwvcD4KCTxwPkZvciByZWZlcmVuY2UgaGVyZSBhcmUgdGhl IGNvbW1hbmRzIHRoYXQgd2lsbCBiZSBpbnRlcmVzdGluZyB0byBwbHVnaW4gZGV2ZWxvcGVy czo8L3A+Cgk8cD4vLyBUaGlzIHdpbGwgY2FsbCB5b3VyIGZ1bmN0aW9uIGJlZm9yZSB0aGUg Zm9ybSBpcyBzdWJtaXR0ZWQ8YnIgLz4KLy8gU28geW91IGNhbiBhbmFseXNlIHRoZSBzdWJt aXR0ZWQgZGF0YTxiciAvPgo8Y29kZT5yZWdpc3Rlcl9jYWxsYmFjaygnYWJjX215ZnVuY3Rp b24nLCd6ZW1jb250YWN0LnN1Ym1pdCcpOzwvY29kZT48L3A+Cgk8cD4vLyBUaGlzIHdpbGwg Y2FsbCB5b3VyIGZ1bmN0aW9uIGFuZCBhZGQgdGhlIG91dHB1dCAodXNlIHJldHVybiAkbXlz dHVmZikgdG8gdGhlPGJyIC8+Ci8vIGNvbnRhY3QtZm9ybSwgcmlnaHQgYWZ0ZXIgJiM4MjMw Oy4gVGhpcyBpcyBvcHRpb25hbC48YnIgLz4KPGNvZGU+cmVnaXN0ZXJfY2FsbGJhY2soJ2Fi Y19teW90aGVyZnVuY3Rpb24yJywnemVtY29udGFjdC5mb3JtJyk7PC9jb2RlPjwvcD4KCTxw Pi8vIFRvIGdldCBob2xkIG9mIHRoZSBmb3JtLXZhcmlhYmxlcyB5b3UgY2FuIHVzZTxiciAv Pgo8Y29kZT5nbG9iYWwgemVtX2NvbnRhY3RfZm9ybTwvY29kZT48YnIgLz4KLy8gb3IgdGhl IGNvcnJlc3BvbmRpbmcgJFBPU1Qgb3IgJFJFUVVFU1QuPC9wPgoJPHA+Ly8gV2l0aCB0aGUg Zm9sbG93aW5nIHR3byBsaW5lcyB5b3UgY2FuIHRlbGwgemVtX2NvbnRhY3QgaWYgeW91cjxi ciAvPgovLyBwbHVnaW4gZm91bmQgc3BhbTxiciAvPgo8Y29kZT4kZXZhbHVhdG9yID0mIzM4 OyBnZXRfemVtY29udGFjdF9ldmFsdWF0b3IoKTs8YnIgLz4KJGV2YWx1YXRvciAtJmd0OyBh ZGRfemVtY29udGFjdF9zdGF0dXMoMSk7IC8vIHRoZSBwYXNzZWQgdmFsdWUgbXVzdCBiZSBh bnkgbnVtYmVyIGJ1dCB6ZXJvIHRvIG1hcmsgdGhlIGNvbnRlbnQgYXMgc3BhbTwvY29kZT4u PC9wPgoJPHA+TXVsdGlwbGUgcGx1Z2lucyBjYW4gYmUgYWN0aXZlIGF0IHRoZSBzYW1lIHRp bWUgYW5kIGVhY2ggb2YgdGhlbSBjYW4gbWFyayB0aGUgc3VibWl0dGVkIGNvbnRlbnQgYXMg c3BhbSBhbmQgcHJldmVudCB0aGUgZm9ybSBmcm9tIGJlaW5nIHN1Ym1pdHRlZC48L3A+Cgk8 cD48c3Ryb25nPkFuIGV4YW1wbGUgb2YgYSBwbHVnLWluIGNvbm5lY3RpbmcgdG8gWmVtIENv bnRhY3QgUmVib3JuJiM4MjE3O3MgQVBJOi08L3N0cm9uZz48L3A+Cjxjb2RlPnJlZ2lzdGVy X2NhbGxiYWNrKCdwYXBfemVtY29udGFjdF9mb3JtJywnemVtY29udGFjdC5mb3JtJyk7CnJl Z2lzdGVyX2NhbGxiYWNrKCdwYXBfemVtY29udGFjdF9zdWJtaXQnLCd6ZW1jb250YWN0LnN1 Ym1pdCcpOzwvY29kZT4KPGJyIC8+CjxiciAvPgoKPGNvZGU+ZnVuY3Rpb24gcGFwX3plbWNv bnRhY3RfZm9ybSgpIHs8L2NvZGU+CjxiciAvPgo8YnIgLz4KCjxjb2RlPiRmaWVsZCA9ICcm bHQ7ZGl2IHN0eWxlPSJ2aXNpYmlsaXR5OmhpZGRlbiImZ3Q7Jy5maW5wdXQoJ3RleHQnLCdw aG9uZScscHMoJ3Bob25lJyksJycsJycsJycsJycsJycsJ3Bob25lJykuJyZsdDticiAvJmd0 OycuZmlucHV0KCd0ZXh0JywnbWFpbCcscHMoJ21haWwnKSwnJywnJywnJywnJywnJywnbWFp bCcpLicmbHQ7L2RpdiZndDsnOwpyZXR1cm4gJGZpZWxkOzwvY29kZT4KPGJyIC8+CjxiciAv PgoKPGNvZGU+fTwvY29kZT4KPGJyIC8+CjxiciAvPgoKPGNvZGU+ZnVuY3Rpb24gcGFwX3pl bWNvbnRhY3Rfc3VibWl0KCkgezwvY29kZT4KPGJyIC8+CjxiciAvPgoKPGNvZGU+JGNoZWNr aW5nX21haWxfZmllbGQgPSB0cmltKHBzKCdtYWlsJykpOwokY2hlY2tpbmdfcGhvbmVfZmll bGQgPSB0cmltKHBzKCdwaG9uZScpKTs8L2NvZGU+CjxiciAvPgo8YnIgLz4KCjxjb2RlPiRl dmFsdWF0aW9uID0mIzM4OyBnZXRfemVtY29udGFjdF9ldmFsdWF0b3IoKTs8L2NvZGU+Cjxi ciAvPgo8YnIgLz4KCjxjb2RlPi8vIElmIHRoZSBoaWRkZW4gZmllbGRzIGFyZSBmaWxsZWQg b3V0LCB0aGUgY29udGFjdCBmb3JtIHdvbid0IGJlIHN1Ym1pdHRlZCE8L2NvZGU+CjxiciAv PgoKPGNvZGU+aWYgKCRjaGVja2luZ19tYWlsX2ZpZWxkICE9ICcnIHx8ICRjaGVja2luZ19w aG9uZV9maWVsZCAhPSAnJyl7CiRldmFsdWF0aW9uIC0mZ3Q7IGFkZF96ZW1jb250YWN0X3N0 YXR1cygxKTs8L2NvZGU+Cn0KcmV0dXJuOzwvY29kZT4KPGJyIC8+CjxiciAvPgoKPGNvZGU+ fTwvY29kZT4KIDxiciAvPgoKIDxwIHN0eWxlPSJmb250LXdlaWdodDpib2xkO2ZvbnQtc2l6 ZToxNnB4O3RleHQtYWxpZ246Y2VudGVyOyI+PGEgaHJlZj0iIyI+QmFjayB0byB0aGUgVG9w PC9hPjwvcD4KIDxiciAvPiI7czozOiJtZDUiO3M6MzI6ImQzYTk4OGIyOTk0NjcxN2EwNGM3 ZTY0ZTU3YWQ3NmQzIjt9