# Name: glx_admin_image v2007.1 # Type: Admin/Client side plugin # Short description # Author: Patrick Kollitsch # URL: http://grauhirn.org/txp/ # 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: # ..................................................................... YToxMDp7czo0OiJuYW1lIjtzOjE1OiJnbHhfYWRtaW5faW1hZ2UiO3M6NjoiYXV0aG9yIjtz OjE3OiJQYXRyaWNrIEtvbGxpdHNjaCI7czoxMDoiYXV0aG9yX3VyaSI7czoyNDoiaHR0cDov L2dyYXVoaXJuLm9yZy90eHAvIjtzOjc6InZlcnNpb24iO3M6NjoiMjAwNy4xIjtzOjExOiJk ZXNjcmlwdGlvbiI7czoxNzoiU2hvcnQgZGVzY3JpcHRpb24iO3M6NDoiY29kZSI7czoyMzY1 NDoiaWYgKEAgdHhwaW50ZXJmYWNlID09ICdhZG1pbicpIHsKICAgIHJlZ2lzdGVyX2NhbGxi YWNrKCdnbHhfaW1hZ2Vfb3B0cycsICAgICAgICAgJ2ltYWdlJyk7CiAgICByZWdpc3Rlcl9j YWxsYmFjaygnZ2x4X2FkbWluX2ltYWdlJywgICAgICAgICdpbWFnZScpOwogICAgcmVnaXN0 ZXJfY2FsbGJhY2soJ2dseF9pbWFnZV9lZGl0X29wdHMnLCAgICAnaW1hZ2UnLCAndGh1bWJu YWlsX2luc2VydCcpOwogICAgcmVnaXN0ZXJfY2FsbGJhY2soJ2dseF9pbWFnZV9lZGl0X29w dHMnLCAgICAnaW1hZ2UnLCAnaW1hZ2VfcmVwbGFjZScpOwogICAgcmVnaXN0ZXJfY2FsbGJh Y2soJ2dseF9pbWFnZV9lZGl0X29wdHMnLCAgICAnaW1hZ2UnLCAnaW1hZ2VfZWRpdCcpOwp9 OwovLyBjb25maWd1cmF0aW9uCi8vIGNoYW5nZSB0aGUgdmFyaWFibGVzIGFzIHlvdSBsaWtl IGJ1dCByZW1lbWJlciB0byBub3RlIHlvdXIgY2hhbmdlcwovLyBiZWNhdXNlIHVwZGF0ZXMg b24gdGhlIHBsdWdpbiB3aWxsIGRlc3Ryb3kgeW91ciBzZXR0aW5ncwovLwovLyBlbmFibGUg d2hpY2ggZXh0ZW5zaW9ucyBhcmUgc3VwcG9ydGVkCmRlZmluZSgnSlBHJywgdHJ1ZSk7CmRl ZmluZSgnR0lGJywgdHJ1ZSk7Ci8vZGVmaW5lKCdQTkcnLCB0cnVlKTsgLy8gc29tZWhvdyBt eSBpbnN0YWxsYXRpb24gdGhyb3dzIGVycm9ycyBldmVuIHdpdGggZ2QtcG5nIGluc3RhbGxl ZCBhbmQgZW5hYmxlZAovLyBzZXQgdGhpcyB0byB0aGUgZGVmYXVsdC10aHVtYnNpemUKZGVm aW5lKCdUSFVNQlNJWkUnLCAxMDApOwovLyBzZXQgdGhpcyB0byB0aGUgZGVmYXVsdC1waWN0 dXJlc2l6ZQpkZWZpbmUoJ1BJQ1NJWkUnLCA1MDApOwovLyBzZXQgdGhpcyB0byB0aGUgZGVm YXVsdC10aHVtYnF1YWxpdHkKZGVmaW5lKCdUSFVNQlFVQUxJVFknLCA5MCk7Ci8vIHNldCB0 aGlzIHRvIHRoZSBkZWZhdWx0LXBpY3R1cmVxdWFsaXR5CmRlZmluZSgnUElDUVVBTElUWScs IDgwKTsKLy8gc2V0IHRoaXMgdG8gMCB0byBzaG93IHRoZSBvcmlnaW5hbCB0aHVtYm5haWwt IGFuZCBjdXR0aW5nLWZvcm1zIG9mIHR4cC4KZGVmaW5lKCdISURFVFhQJywgMSk7Ci8vIHNl dCB0aGlzIHRvIDEgdG8gZm9yY2Ugb2xkIG1ldGhvZCBvZiBzcXVhcmV0aHVtYnByb2R1Y3Rp b24gKGRlcHJlY2F0ZWQpCmRlZmluZSgnTUVUSE9EJywgMik7Ci8vIHNldCB0aGlzIHRvIGZh bHNlIGlmIHlvdSB3YW50IHRvIHByb2hpYml0IHRoZSBlbmxhcmdlbWVudCBvZiBpbWFnZXMg YnkgcmVzaXppbmcKZGVmaW5lKCdFTkFCTEVfRU5MQVJHSU5HJywgdHJ1ZSk7Ci8vIGZvciBk ZWJ1Z2dpbmcsIG5vIHJlZGlyZWN0aW9ucywgbm8gYWN0aW9ucywgb25seSBpbmZvcm1hdGlv bgpkZWZpbmUoJ0dERUJVRycsIGZhbHNlKTsKZGVmaW5lKCdHREVCVUcyJywgdHJ1ZSk7IC8v IGlmIEdERUJVRyBpcyB0cnVlIGNoZWNrIGdkPwovLyRfUE9TVFsncmVzaXplJ10gc3VibWl0 IHJlc2l6ZQovLyRfUE9TVFsncm90YXRlJ10gc3VibWl0IHJvdGF0ZQovLyRfUE9TVFsnYm90 aCddICAgc3VibWl0IGJvdGgKLy9vYmplY3QgPSAob3JpZ2luYWx8Ym90aHx0aHVtYm5haWwp IC8vIHJhZGlvIHdoYXQgaW1hZ2Ugc2hvdWxkIGJlIGNoYW5nZWQKLy9zcXVhcmUgPSAxICAg ICAgICAgICAgICAgICAgICAgICAgIC8vY2hlY2tib3ggaWYgdGh1bWIgc2hvdWxkIGJlIHNx dWFyZWQKLy9sYXJnZVNpemUgPSBpbnQKLy90aHVtYlNpemUgPSBpbnQKLy90aHVtYlZhbHVl ID0gaGVpZ2h0fHdpZHRofGxvbmdlc3QKLy9yb3RhdGVWYWx1ZSA9IGRlZ3JlZQpmdW5jdGlv biBnbHhfYWRtaW5faW1hZ2UoKXsKICAgICRpZCA9IGdwcygnaWQnKTsKICAgICRkb3Jlc2l6 ZSA9IGdwcygnZG9SZXNpemVMYXJnZScpOwogICAgJGFjdGlvbiA9IGdwcygnYWN0aW9uJyk7 CiAgICBpZiAoIWVtcHR5KCRhY3Rpb24pICYmICRhY3Rpb24gPT0gJ2dseCcpewogICAgICAg IGdseF9jaGVja0dkKCk7IC8vIGZpbmluZyBvdXQgaWYgZ2QgaXMgdXNhYmxlCiAgICAgICAg aWYgKCFlbXB0eSgkX1BPU1RbJ3Jlc2l6ZSddKSB8fCAhZW1wdHkoJF9QT1NUWydib3RoJ10p KXsKICAgICAgICAgICAgZ2x4X2ltYWdlX3Jlc2l6ZSgpOwogICAgICAgIH07CiAgICAgICAg aWYgKCFlbXB0eSgkX1BPU1RbJ3JvdGF0ZSddKSB8fCAhZW1wdHkoJF9QT1NUWydib3RoJ10p KXsKICAgICAgICAgICAgZ2x4X2ltYWdlX3JvdGF0ZSgpOwogICAgICAgIH07CgkJaGVhZGVy KCJMb2NhdGlvbjogaW5kZXgucGhwP2V2ZW50PWltYWdlJnN0ZXA9aW1hZ2VfZWRpdCZpZD0i LiRpZCk7CgkJZXhpdDsKICAgIH0gZWxzZWlmICghZW1wdHkoJGRvcmVzaXplKSl7CiAgICAg ICAgZ2x4X2ltYWdlX3Jlc2l6ZSgpOwoJCWhlYWRlcigiTG9jYXRpb246IGluZGV4LnBocD9l dmVudD1pbWFnZSZzdGVwPWltYWdlX2VkaXQmaWQ9Ii4kaWQpOwoJCWV4aXQ7CiAgICB9Owp9 CmZ1bmN0aW9uIGdseF9pbWFnZV9yZXNpemUoKSB7Ci8vb2JqZWN0ID0gKG9yaWdpbmFsfGJv dGh8dGh1bWJuYWlsKSAvLyByYWRpbyB3aGF0IGltYWdlIHNob3VsZCBiZSBjaGFuZ2VkCi8v c3F1YXJlID0gMSAgICAgICAgICAgICAgICAgICAgICAgICAvL2NoZWNrYm94IGlmIHRodW1i IHNob3VsZCBiZSBzcXVhcmVkCgovL3RodW1iVmFsdWUgPSBoZWlnaHR8d2lkdGh8bG9uZ2Vz dAogICAgJG9iamVjdCA9IGdwcygnb2JqZWN0Jyk7CiAgICAkZG9fcmVzaXplX2xhcmdlID0g KCRvYmplY3QgPT0gJ29yaWdpbmFsJyAgfHwgJG9iamVjdCA9PSAnYm90aCcpID8gMSAgICAg ICAgICAgICA6IDA7CiAgICAkZG9fcmVzaXplX3RodW1iID0gKCRvYmplY3QgPT0gJ3RodW1i bmFpbCcgfHwgJG9iamVjdCA9PSAnYm90aCcpID8gMSAgICAgICAgICAgICA6IDA7Cgkkc3F1 YXJlX2ltYWdlICAgID0gZ3BzKCdzcXVhcmUnKSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgID8gZ3BzKCdzcXVhcmUnKSA6IDA7CgkkbGFyZ2VWYWx1ZSA9IGNzKCdsYXJnZVNp emUnKSAgPyBjcygnbGFyZ2VTaXplJykgIDogUElDU0laRTsKCSR0aHVtYlZhbHVlID0gY3Mo J3RodW1iU2l6ZScpICA/IGNzKCd0aHVtYlNpemUnKSAgOiBUSFVNQlNJWkU7CgkkbGFyZ2VW YWx1ZSA9IGdwcygnbGFyZ2VTaXplJykgPyBncHMoJ2xhcmdlU2l6ZScpIDogJGxhcmdlVmFs dWU7CgkkdGh1bWJWYWx1ZSA9IGdwcygndGh1bWJTaXplJykgPyBncHMoJ3RodW1iU2l6ZScp IDogJHRodW1iVmFsdWU7CiAgICAkc2lkZV90aHVtYiA9IGdwcygnc2lkZScpID8gZ3BzKCdz aWRlJykgOiAnbG9uZ2VzdCc7CgkkaW1hZ2VfaWQgICA9IGdwcygnaWQnKSAgID8gZ3BzKCdp ZCcpICAgOiBteXNxbF9pbnNlcnRfaWQoKTsKCSRxdWFsaXR5X3RodW1iID0gemlxSXNQZXJj ZW50KGdwcygndGh1bWJRdWEnKSkgPyBpbnR2YWwoZ3BzKCd0aHVtYlF1YScpKSA6IFRIVU1C UVVBTElUWTsKCSRxdWFsaXR5X2xhcmdlID0gemlxSXNQZXJjZW50KGdwcygnbGFyZ2VRdWEn KSkgPyBpbnR2YWwoZ3BzKCdsYXJnZVF1YScpKSA6IFBJQ1FVQUxJVFk7CglzZXRjb29raWUo J2xhcmdlU2l6ZScsICRsYXJnZVZhbHVlLCB0aW1lKCkgKyA2MCAqIDYwICogMjQgKiAzNjUp OwogICAgc2V0Y29va2llKCd0aHVtYlNpemUnLCAkdGh1bWJWYWx1ZSwgdGltZSgpICsgNjAg KiA2MCAqIDI0ICogMzY1KTsKICAgIGxpc3QgKCRzdWZmaXgsICRzb3VyY2UpID0gZ2x4X2dl dF9zb3VyY2UoJGltYWdlX2lkKTsKCWlmIChmaWxlX2V4aXN0cygkc291cmNlKSAmJiAoJGRv X3Jlc2l6ZV90aHVtYiA9PSAxIHx8ICRkb19yZXNpemVfbGFyZ2UgPT0gMSkpewoJCSRnZCAg ID0gZ2x4X2dldF9nZF92ZXJzaW9uKCk7CgkJJHNpemUgPSBnZXRpbWFnZXNpemUoJHNvdXJj ZSk7CgkJJHggPSAkc2l6ZVswXTsKCQkkeSA9ICRzaXplWzFdOwogICAgICAgIGlmICgkc2lk ZV90aHVtYiA9PSAnbG9uZ2VzdCcpewogICAgICAgICAgICAkbWF4ID0gKCR4ID4gJHkpID8g JHggOiAkeTsKICAgICAgICAgICAgJG1pbiA9ICgkeCA+ICR5KSA/ICR5IDogJHg7CiAgICAg ICAgfSBlbHNlaWYgKCRzaWRlX3RodW1iID09ICdoZWlnaHQnKXsKICAgICAgICAgICAgJG1h eCA9ICR5OwogICAgICAgICAgICAkbWluID0gJHg7CiAgICAgICAgfSBlbHNlIHsKICAgICAg ICAgICAgJG1heCA9ICR4OwogICAgICAgICAgICAkbWluID0gJHk7CiAgICAgICAgfTsKCQlp ZiAoJGRvX3Jlc2l6ZV90aHVtYiA9PSAxKXsKCQkJJHJhdGVfdGh1bWIgICAgPSAkbWF4IC8g JHRodW1iVmFsdWU7CgkJCSRmaW5hbF94X3RodW1iID0gJHggLyAkcmF0ZV90aHVtYjsKCQkJ JGZpbmFsX3lfdGh1bWIgPSAkeSAvICRyYXRlX3RodW1iOwoJCQlpZiAoJHNxdWFyZV9pbWFn ZSA9PSAxKSB7CgkJCQkkcmVzaXplX3RodW1iID0gJGdkWydjcmVhdGUnXSgkdGh1bWJWYWx1 ZSwgJHRodW1iVmFsdWUpOwoJCQkJJGltX3RodW1iID0gJGdkWydpbWFnZWNyZWF0ZWZyb20n XVskc3VmZml4XSgkc291cmNlKTsKICAgICAgICAgICAgICAgIGlmIChNRVRIT0QgPT0gMil7 CiAgICAgICAgICAgICAgICAgICAgaWYgKCR4ID4gJHkpIHsKICAgICAgICAgICAgICAgICAg ICAgICAgJHgwID0gKCR4IC0gJHkpIC8gMjsKICAgICAgICAgICAgICAgICAgICAgICAgJHgx ID0gJHk7CiAgICAgICAgICAgICAgICAgICAgICAgICR5MCA9IDA7CiAgICAgICAgICAgICAg ICAgICAgICAgICR5MSA9ICR5OwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAg ICAgICAgICAgICAgICAgICAgICR4MCA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICR4 MSA9ICR4OwogICAgICAgICAgICAgICAgICAgICAgICAkeTAgPSAoJHkgLSAkeCkgLyAyOwog ICAgICAgICAgICAgICAgICAgICAgICAkeTEgPSAkeDsKICAgICAgICAgICAgICAgICAgICB9 OwogICAgICAgICAgICAgICAgICAgICRnZFsnY29weSddKCRyZXNpemVfdGh1bWIsICRpbV90 aHVtYiwgMCwgMCwkeDAsJHkwLCAkdGh1bWJWYWx1ZSwgJHRodW1iVmFsdWUsICR4MSwgJHkx KTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJGdkWydj b3B5J10oJHJlc2l6ZV90aHVtYiwgJGltX3RodW1iLCAwLCAwLCAwLCAwLCAkdGh1bWJWYWx1 ZSwgJHRodW1iVmFsdWUsICR0aHVtYlZhbHVlICogMS41LCAkdGh1bWJWYWx1ZSAqIDEuNSk7 CiAgICAgICAgICAgICAgICB9OwoJCQkJJHNvdXJjZV90aHVtYiA9IElNUEFUSC4kaW1hZ2Vf aWQuJ3QuJy4kc3VmZml4OwoJCQkJJGdkWydpbWFnZSddWyRzdWZmaXhdKCRyZXNpemVfdGh1 bWIsICRzb3VyY2VfdGh1bWIsICRxdWFsaXR5X3RodW1iKTsKCQkJCWltYWdlZGVzdHJveSgk cmVzaXplX3RodW1iKTsKCQkJfSBlbHNlIHsKCQkJCSRyZXNpemVfdGh1bWIgPSAkZ2RbJ2Ny ZWF0ZSddKCRmaW5hbF94X3RodW1iLCAkZmluYWxfeV90aHVtYik7CgkJCQkkaW1fdGh1bWIg PSAkZ2RbJ2ltYWdlY3JlYXRlZnJvbSddWyRzdWZmaXhdKCRzb3VyY2UpOwoJCQkJJGdkWydj b3B5J10oJHJlc2l6ZV90aHVtYiwgJGltX3RodW1iLCAwLCAwLCAwLCAwLCAkZmluYWxfeF90 aHVtYiwgJGZpbmFsX3lfdGh1bWIsICR4LCAkeSk7CgkJCQkkc291cmNlX3RodW1iID0gSU1Q QVRILiRpbWFnZV9pZC4ndC4nLiRzdWZmaXg7CgkJCQkkZ2RbJ2ltYWdlJ11bJHN1ZmZpeF0o JHJlc2l6ZV90aHVtYiwgJHNvdXJjZV90aHVtYiwgJHF1YWxpdHlfdGh1bWIpOwoJCQkJaW1h Z2VkZXN0cm95KCRyZXNpemVfdGh1bWIpOwoJCQl9CgkJCSR0aHVtYiA9IHRydWU7CgkJCXNh ZmVfdXBkYXRlKCd0eHBfaW1hZ2UnLCAidGh1bWJuYWlsPSckdGh1bWInIiwgImlkPSckaW1h Z2VfaWQnIik7CgkJfQoJCWlmICgkZG9fcmVzaXplX2xhcmdlID09IDEpewoJCQkkcmF0ZV9s YXJnZSA9ICRtYXggLyAkbGFyZ2VWYWx1ZTsKCQkJJGZpbmFsX3hfbGFyZ2UgPSAkeCAvICRy YXRlX2xhcmdlOwoJCQkkZmluYWxfeV9sYXJnZSA9ICR5IC8gJHJhdGVfbGFyZ2U7CgkJCWlm ICgoRU5BQkxFX0VOTEFSR0lORyA9PSBmYWxzZSAmJiAkeCA+ICRmaW5hbF94X2xhcmdlKSB8 fCBFTkFCTEVfRU5MQVJHSU5HID09IHRydWUpIHsKCQkJCSRyZXNpemVfbGFyZ2UgPSAkZ2Rb J2NyZWF0ZSddKCRmaW5hbF94X2xhcmdlLCAkZmluYWxfeV9sYXJnZSk7CgkJCQkkaW1fbGFy Z2UgPSAkZ2RbJ2ltYWdlY3JlYXRlZnJvbSddWyRzdWZmaXhdKCRzb3VyY2UpOwoJCQkJJGdk Wydjb3B5J10oJHJlc2l6ZV9sYXJnZSwgJGltX2xhcmdlLCAwLCAwLCAwLCAwLCAkZmluYWxf eF9sYXJnZSwgJGZpbmFsX3lfbGFyZ2UsICR4LCAkeSk7CgkJCQkkZ2RbJ2ltYWdlJ11bJHN1 ZmZpeF0oJHJlc2l6ZV9sYXJnZSwgJHNvdXJjZSwgJHF1YWxpdHlfbGFyZ2UpOwoJCQkJaW1h Z2VkZXN0cm95KCRyZXNpemVfbGFyZ2UpOwoJCQl9OwoJCQkkc2l6ZSA9IGdldGltYWdlc2l6 ZSgkc291cmNlKTsKCQkJc2FmZV91cGRhdGUoJ3R4cF9pbWFnZScsICJ3PSciLiRzaXplWzBd LiInLGg9JyIuJHNpemVbMV0uIiciLCAiaWQ9JyRpbWFnZV9pZCciKTsKCQl9OwoJfTsKfQpm dW5jdGlvbiBnbHhfaW1hZ2Vfcm90YXRlKCl7CiAgICAkZ2QgID0gZ2x4X2dldF9nZF92ZXJz aW9uKCk7CgkkZGVnID0gZ3BzKCdyb3RhdGVWYWx1ZScpOwoJJGlkICA9IGdwcygnaWQnKTsK CWlmIChlbXB0eSgkZGVnKSB8fCBlbXB0eSgkaWQpKXsKCSAgICByZXR1cm4gZmFsc2U7Cgl9 OwoJaWYgKCRfUE9TVFsnb2JqZWN0J10gPT0gJ2JvdGgnIHx8ICRfUE9TVFsnb2JqZWN0J10g PT0gJ29yaWdpbmFsJyl7CiAgICAgICAgbGlzdCgkc3VmZml4LCAkc291cmNlKSA9IGdseF9n ZXRfc291cmNlKCRpZCk7CiAgICAJJGltID0gJGdkWydpbWFnZWNyZWF0ZWZyb20nXVskc3Vm Zml4XSgkc291cmNlKTsKICAgIAkkaW0gPSAoZnVuY3Rpb25fZXhpc3RzKCdpbWFnZXJvdGF0 ZScpKSA/IGltYWdlcm90YXRlKCRpbSwgJGRlZywgMCkgOiBnbHhfb2xkX2ltYWdlX3JvdGF0 ZSgkaW0sICRkZWcpOwogICAgCSRnZFsnaW1hZ2UnXVskc3VmZml4XSgkaW0sICRzb3VyY2Us IDk1KTsKICAgIAlpbWFnZWRlc3Ryb3koJGltKTsKICAgIAkkc2l6ZSA9IGdldGltYWdlc2l6 ZSgkc291cmNlKTsKICAgIAlzYWZlX3VwZGF0ZSgndHhwX2ltYWdlJywgInc9JyIuJHNpemVb MF0uIicsaD0nIi4kc2l6ZVsxXS4iJyIsICJpZD0nJGlkJyIpOwoJfTsKCWlmICgkX1BPU1Rb J29iamVjdCddID09ICdib3RoJyB8fCAkX1BPU1RbJ29iamVjdCddID09ICd0aHVtYm5haWwn KXsKICAgICAgICBsaXN0KCRzdWZmaXgsICRzb3VyY2UpID0gZ2x4X2dldF9zb3VyY2UoJGlk LCB0cnVlKTsKICAgIAkkaW0gPSAkZ2RbJ2ltYWdlY3JlYXRlZnJvbSddWyRzdWZmaXhdKCRz b3VyY2UpOwogICAgCSRpbSA9IChmdW5jdGlvbl9leGlzdHMoJ2ltYWdlcm90YXRlJykpID8g aW1hZ2Vyb3RhdGUoJGltLCAkZGVnLCAwKSA6IGdseF9vbGRfaW1hZ2Vfcm90YXRlKCRpbSwg JGRlZyk7CiAgICAJJGdkWydpbWFnZSddWyRzdWZmaXhdKCRpbSwgJHNvdXJjZSwgOTUpOwog ICAgCWltYWdlZGVzdHJveSgkaW0pOwoJfTsKfQpmdW5jdGlvbiBnbHhfY2hlY2tHZCgpewog ICAgaWYgKGRlZmluZWQoJ0dERUJVRzInKSAmJiBHREVCVUcyID09IHRydWUpewogICAgICAg IGlmICghZXh0ZW5zaW9uX2xvYWRlZCgnZ2QnKSl7CiAgICAgICAgICAgIGVjaG8gIjxwPkV4 dGVuc2lvbiBHRCBpcyBub3QgbG9hZGVkIGJ5IGRlZmF1bHQiOwogICAgICAgICAgICBpZiAo IWRsKCdnZC5zbycpICYmICFkbCgnZ2QuZGxsJykpewogICAgICAgICAgICAgICAgIiBhbmQg Y2Fubm90IGJlIGxvYWRlZCBkeW5hbWljIjsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAg ICAgICAgICAgICIgYnV0IGl0IGNhbiBiZSBsb2FkZWQgZHluYW1pYyI7CiAgICAgICAgICAg IH07CiAgICAgICAgICAgIGVjaG8gIi48L3A+IjsKICAgICAgICB9IGVsc2UgewogICAgICAg ICAgICBlY2hvICI8cD5FeHRlbnNpb24gR0QgaXMgbG9hZGVkIGJ5IGRlZmF1bHQuIjsKICAg ICAgICB9OwogICAgfTsKfQpmdW5jdGlvbiBnbHhTdHlsZXNoZWV0KCl7CiAgICAkcnMgPSBz YWZlX3JvdygibmFtZSIsICJ0eHBfY3NzIiwgIm5hbWU9J2dseF9hZG1pbl9pbWFnZScgbGlt aXQgMSIpOwogICAgaWYgKCEkcnMpewogICAgICAgICRjc3MgPSAiSTJkc2VDQWpabk14TENB aloyeDRJQ05tY3pNZ2UzZHBaSFJvT2pFME1IQjRPMlpzYjJGME9teGxablE3YldGeVoybHVM WEpwWjJoME9qTndlRHQ5RFFvaloyeDRJQ05tY3pFc0lDTm5iSGdnSTJaek1udG9aV2xuYUhR Nk1UUXdjSGc3ZlEwS0kyZHNlQ0FqWm5NekxDQWpaMng0SUNObWN6UjdhR1ZwWjJoME9qRXhN SEI0TzMwTkNpTm5iSGdnYkdWblpXNWtJSHRtYjI1MExYZGxhV2RvZERwaWIyeGtPMzBOQ2lO bmJIZ2dJMlp6TWlBdVlteHZZMnNnZTJScGMzQnNZWGs2WW14dlkyczdmUTBLSTJkc2VDQWpa bk15SUdScGRudG1iRzloZERwc1pXWjBPMzBOQ2lObmJIZ2dJMlp6TkNCcGJXY2dlMlJwYzNC c1lYazZZbXh2WTJzN2ZRMEtJMmRzZUNBdWMyMWhiR3hsY21KdmVDQjdiV0Z5WjJsdUxYSnBa MmgwT2pGbGJUdDlEUW9qWjJ4NElHbHVjSFYwTENBaloyeDRJR3hoWW1Wc0lIdDJaWEowYVdO aGJDMWhiR2xuYmpwdGFXUmtiR1U3ZlE9PSI7CiAgICAgICAgc2FmZV9pbnNlcnQoInR4cF9j c3MiLCAibmFtZT0nZ2x4X2FkbWluX2ltYWdlJywgY3NzPSckY3NzJyIpOwogICAgfTsKfTsK LyoqCiAqIGZ1bmN0aW9uIGZyb20gbWRwIGF1dG9tYXRpYyByZXNpemUgYW5kIHRodW1ibmFp bCBmb3IgdGV4dHBhdHRlcm4KICogYnkgY2FnZWQ6IDxodHRwOi8vd3d3LnB1cmVwaG90b3No b3AuY29tPgogKi8KZnVuY3Rpb24gZ2x4X2dldF9nZF92ZXJzaW9uKCkgewogICAgaWYoIWZ1 bmN0aW9uX2V4aXN0cygnaW1hZ2VjcmVhdGV0cnVlY29sb3InKSl7CiAgICAgICAgJGZ1bmN0 aW9uX2NyZWF0ZSA9ICdpbWFnZWNyZWF0ZSc7CiAgICAgICAgJGZ1bmN0aW9uX2NvcHkgPSAn aW1hZ2Vjb3B5cmVzaXplZCc7CiAgICB9IGVsc2UgewogICAgICAgICRmdW5jdGlvbl9jcmVh dGUgPSAnaW1hZ2VjcmVhdGV0cnVlY29sb3InOwogICAgICAgICRmdW5jdGlvbl9jb3B5ID0g J2ltYWdlY29weXJlc2FtcGxlZCc7CiAgICB9OwogICAgLyoqCiAgICAgKiBAc2VlIGh0dHA6 Ly9mb3J1bS50ZXh0cGF0dGVybi5jb20vdmlld3RvcGljLnBocD9waWQ9NTk1MjAjcDU5NTIw CiAgICAgKi8KCXJldHVybiBhcnJheSgKICAgICAgICAnY29weScgPT4gJGZ1bmN0aW9uX2Nv cHksCiAgICAgICAgJ2NyZWF0ZScgPT4gJGZ1bmN0aW9uX2NyZWF0ZSwKICAgICAgICAnaW1h Z2UnID0+IGFycmF5KAogICAgICAgICAgICAnanBnJyA9PiAnaW1hZ2VqcGVnJywKICAgICAg ICAgICAgJ3BuZycgPT4gJ2ltYWdlcG5nJywKICAgICAgICAgICAgJ2dpZicgPT4gJ2ltYWdl Z2lmJwogICAgICAgICksCiAgICAgICAgJ2ltYWdlY3JlYXRlZnJvbScgPT4gYXJyYXkoCiAg ICAgICAgICAgICdqcGcnID0+ICdpbWFnZWNyZWF0ZWZyb21qcGVnJywKICAgICAgICAgICAg J3BuZycgPT4gJ2ltYWdlY3JlYXRlZnJvbXBuZycsCiAgICAgICAgICAgICdnaWYnID0+ICdp bWFnZWNyZWF0ZWZyb21naWYnCiAgICAgICAgKQogICAgKTsKfQovKiogUm90YXRlIGltYWdl IHBocCA0LjMuMCBvciBsb3dlciBieSBUb2JpYXMgRWluYXJzc29uICovCmZ1bmN0aW9uIGds eF9vbGRfaW1hZ2Vfcm90YXRlKCRzcmMsICRhbmdsZSl7CiAgICAvLyBjaGVjayBjdXJyZW50 IEdEIHZlcnNpb24KICAgICRnZCA9IGdseF9nZXRfZ2RfdmVyc2lvbigpOwogICAgJHdpZHRo ID0gaW1hZ2VzeCgkc3JjKTsKICAgICRoZWlnaHQgPSBpbWFnZXN5KCRzcmMpOwogICAgJGRz dCA9ICgkYW5nbGUgPT0gOTAgfHwgJGFuZ2xlID09IDI3MCkgPyAkZ2RbJ2NyZWF0ZSddKCRo ZWlnaHQsICR3aWR0aCkgOiAkZ2RbJ2NyZWF0ZSddKCR3aWR0aCwgJGhlaWdodCk7CiAgICBm b3IoJHk9MDsgJHk8JGhlaWdodDsgJHkrKyl7CiAgICAgICAgZm9yKCR4PTA7ICR4PCR3aWR0 aDsgJHgrKyl7CiAgICAgICAgICAgIHN3aXRjaCAoJGFuZ2xlKXsKICAgICAgICAgICAgICAg IGNhc2UgOTA6CiAgICAgICAgICAgICAgICAgICAgaW1hZ2Vjb3B5KCRkc3QsICRzcmMsICRo ZWlnaHQtJHktMSwgJHgsICR4LCAkeSwgMSwgMSk7CiAgICAgICAgICAgICAgICAgICAgYnJl YWs7CiAgICAgICAgICAgICAgICBjYXNlIDE4MDoKICAgICAgICAgICAgICAgICAgICBpbWFn ZWNvcHkoJGRzdCwgJHNyYywgJHgsICR5LCAkd2lkdGgtJHgtMSwgJGhlaWdodC0keS0xLCAx LCAxKTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2Ug MjcwOgogICAgICAgICAgICAgICAgICAgIGltYWdlY29weSgkZHN0LCAkc3JjLCAkeSwgJHdp ZHRoLSR4LTEsICR4LCAkeSwgMSwgMSk7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAg ICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgIGltYWdlY29weSgk ZHN0LCAkc3JjLCAkeCwgJHksICR4LCAkeSwgMSwgMSk7CiAgICAgICAgICAgIH07CiAgICAg ICAgfTsKICAgIH07CiAgICBpbWFnZWRlc3Ryb3koJHNyYyk7CiAgICByZXR1cm4oJGRzdCk7 Cn0KLyoqIENoZWNrIGlmIHZhbHVlIGlzIHByZWNlbnQgYnkgWmlRICovCmZ1bmN0aW9uIHpp cUlzUGVyY2VudCgkeCkgewogICAgaWYgKGlzX251bWVyaWMoJHgpKXsKICAgICAgICAkdG1w ID0gaW50dmFsKCR4KTsKICAgICAgICBpZiAoJHRtcCA+PSAxMCAmJiAkdG1wIDw9IDEwMCl7 CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH07CiAgICB9OwogICAgcmV0dXJu IGZhbHNlOwp9CmZ1bmN0aW9uIGdseF9pbWFnZV9vcHRzKCRldmVudCwgJHN0ZXApIHsKICAg IGVjaG88PDxFT0YKPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgo8IS0tCndpbmRv dy5vbmxvYWQgPSBmdW5jdGlvbigpIHsKCXZhciBpbnB1dERvUmVzaXplTGFyZ2UgPSBkb2N1 bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpOwoJaW5wdXREb1Jlc2l6ZUxhcmdlLnNldEF0 dHJpYnV0ZSgnbmFtZScsICdkb1Jlc2l6ZUxhcmdlJyk7CglpbnB1dERvUmVzaXplTGFyZ2Uu c2V0QXR0cmlidXRlKCdpZCcsICAgJ2RvUmVzaXplTGFyZ2UnKTsKCWlucHV0RG9SZXNpemVM YXJnZS5zZXRBdHRyaWJ1dGUoJ3R5cGUnLCAnY2hlY2tib3gnKTsKCWlucHV0RG9SZXNpemVM YXJnZS5zZXRBdHRyaWJ1dGUoJ3ZhbHVlJywgJzEnKTsKCWlucHV0RG9SZXNpemVMYXJnZS5j aGVja2VkID0gZmFsc2U7Cgl2YXIgbGFyZ2VWYWx1ZSA9IGdldENvb2tpZSgnZ2x4X2ltYWdl X2xhcmdlJykgPyAnLCBzdG9yZWQgdmFsdWUgJytnZXRDb29raWUoJ2dseF9pbWFnZV9sYXJn ZScpKydweCcgOiAnLCBzdG9yZWQgdmFsdWUgNTAwcHgnOwoJdmFyIGxhYmVsRG9SZXNpemVM YXJnZSA9IGNyZWF0ZUxhYmVsKCdkb1Jlc2l6ZUxhcmdlJywgJ1Jlc2l6ZSBsYXJnZSBpbWFn ZScrbGFyZ2VWYWx1ZSwgJ2lubGluZScpOwoJdmFyIHBEb1Jlc2l6ZUxhcmdlID0gZG9jdW1l bnQuY3JlYXRlRWxlbWVudCgncCcpOwoJcERvUmVzaXplTGFyZ2UuYXBwZW5kQ2hpbGQoaW5w dXREb1Jlc2l6ZUxhcmdlKTsKCXBEb1Jlc2l6ZUxhcmdlLmFwcGVuZENoaWxkKGxhYmVsRG9S ZXNpemVMYXJnZSk7Cgl2YXIgZm9ybVVwbG9hZCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU YWdOYW1lKCdmb3JtJykuaXRlbSgyKTsKCWZvcm1VcGxvYWQuYXBwZW5kQ2hpbGQocERvUmVz aXplTGFyZ2UpOwp9CmZ1bmN0aW9uIGNyZWF0ZUxhYmVsKGZvckVsZW1lbnQsIHRleHQsIGVs ZW1lbnRDbGFzcykgewoJdmFyIGxhYmVsRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l bnQoJ2xhYmVsJyk7CglsYWJlbEVsZW1lbnQuc2V0QXR0cmlidXRlKCdmb3InLCBmb3JFbGVt ZW50KTsKCWxhYmVsRWxlbWVudC5jbGFzc05hbWUgPSBlbGVtZW50Q2xhc3M7Cgl2YXIgbGFi ZWxUZXh0Tm9kZSA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHRleHQpOwoJbGFiZWxFbGVt ZW50LmFwcGVuZENoaWxkKGxhYmVsVGV4dE5vZGUpOwoJcmV0dXJuIGxhYmVsRWxlbWVudDsK fQpmdW5jdGlvbiBnZXRDb29raWUobmFtZSkgewoJdmFyIGRjID0gZG9jdW1lbnQuY29va2ll OwoJdmFyIHByZWZpeCA9IG5hbWUgKyAiPSI7Cgl2YXIgYmVnaW4gPSBkYy5pbmRleE9mKCI7 ICIgKyBwcmVmaXgpOwoJaWYgKGJlZ2luID09IC0xKSB7CgkJYmVnaW4gPSBkYy5pbmRleE9m KHByZWZpeCk7CgkJaWYgKGJlZ2luICE9IDApIHJldHVybiBudWxsOwoJfSBlbHNlIHsKICAg IAliZWdpbiArPSAyOwogICAgfQogIAl2YXIgZW5kID0gZG9jdW1lbnQuY29va2llLmluZGV4 T2YoIjsiLCBiZWdpbik7CglpZiAoZW5kID09IC0xKSB7CgkJZW5kID0gZGMubGVuZ3RoOwoJ fQogIAlyZXR1cm4gdW5lc2NhcGUoZGMuc3Vic3RyaW5nKGJlZ2luICsgcHJlZml4Lmxlbmd0 aCwgZW5kKSk7Cn0KLS0+Cjwvc2NyaXB0PgpFT0Y7Cn0KZnVuY3Rpb24gZ2x4X2ltYWdlX2Vk aXRfb3B0cygkZXZlbnQsICRzdGVwKSB7CgkkaWQgPSBncHMoJ2lkJyk7CglnbG9iYWwgJGlt Z19kaXI7CgkkcnMgPSBzYWZlX3JvdygiKiIsICJ0eHBfaW1hZ2UiLCAiaWQ9JyRpZCciKTsK CWlmICgkcnMpewoJCWV4dHJhY3QoJHJzKTsKCX0gZWxzZSB7CgkgICAgcmV0dXJuOwoJfTsK ICAgIGdseFN0eWxlc2hlZXQoKTsKICAgIGVjaG88PDxFT0YKPHNjcmlwdCBsYW5ndWFnZT0i SmF2YVNjcmlwdCIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KPCEtLQp3aW5kb3cub25sb2Fk ID0gZnVuY3Rpb24oKSB7CkVPRjsKICAgIGlmIChISURFVFhQID09IDEpewogICAgICAgIGVj aG8gIgogICAgICBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgndHInKVs2XS5zdHls ZS5kaXNwbGF5ID0gJ25vbmUnOwogICAgICBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt ZSgndHInKVs3XS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOyI7CiAgICB9OwogICAgZWNobyAi CiAgICAgICAgbG9hZENTUygnY3NzLnBocD9uPWdseF9hZG1pbl9pbWFnZScpOwogICAgLy8g Zm9ybWNvbnRhaW5lcgogICAgICAgIHZhciBmb3JtR0xYID0gZG9jdW1lbnQuY3JlYXRlRWxl bWVudCgnZm9ybScpOwogICAgICAgIGZvcm1HTFguc2V0QXR0cmlidXRlKCdhY3Rpb24nLCAn Jyk7CiAgICAgICAgZm9ybUdMWC5zZXRBdHRyaWJ1dGUoJ2lkJywgICAgICdnbHgnKTsKICAg ICAgICBmb3JtR0xYLnNldEF0dHJpYnV0ZSgnbWV0aG9kJywgJ3Bvc3QnKTsKICAgIC8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogICAgLy8gZmllbGRzZXQ6 IHdoZXJlIHRvIGFwcGx5IHRoZSBjaGFuZ2VzIC8vCiAgICAvLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KICAgICAgICB2YXIgZnMxID0gZG9jdW1lbnQuY3Jl YXRlRWxlbWVudCgnZmllbGRzZXQnKTsKICAgICAgICB2YXIgbDEgID0gZG9jdW1lbnQuY3Jl YXRlRWxlbWVudCgnbGVnZW5kJyk7CiAgICAgICAgbDEuaW5uZXJIVE1MID0gJ0FwcGx5IHRv JzsKICAgICAgICBmczEuYXBwZW5kQ2hpbGQobDEpOwoJICAgIGZzMS5zZXRBdHRyaWJ1dGUo J2lkJywgJ2ZzMScpOwogICAgLy8gcmFkaW8gcmVzaXplIG9yaWdpbmFsCiAgICAgICAgdmFy IGUxMSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3AnKTsKICAgICAgICBlMTEuYXBwZW5k Q2hpbGQoY3JlYXRlUmFkaW8oJ29iamVjdCcsICdyMTEnLCAnb3JpZ2luYWwnLCB0cnVlKSk7 CiAgICAgICAgZTExLmFwcGVuZENoaWxkKGNyZWF0ZUxhYmVsKCdyMTEnLCAnT3JpZ2luYWwn LCAnaW5saW5lJykpOwogICAgICAgIGZzMS5hcHBlbmRDaGlsZChlMTEpOwogICAgLy8gcmFk aW8gcmVzaXplIGJvdGgKICAgICAgICB2YXIgZTEyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu dCgncCcpOwogICAgICAgIGUxMi5hcHBlbmRDaGlsZChjcmVhdGVSYWRpbygnb2JqZWN0Jywg J3IxMicsICdib3RoJywgZmFsc2UpKTsKICAgICAgICBlMTIuYXBwZW5kQ2hpbGQoY3JlYXRl TGFiZWwoJ3IxMicsICdCb3RoJywgJ2lubGluZScpKTsKICAgICAgICBmczEuYXBwZW5kQ2hp bGQoZTEyKTsKICAgIC8vIHJhZGlvIHJlc2l6ZSB0aHVtYm5haWwKICAgICAgICB2YXIgZTEz ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgncCcpOwogICAgICAgIGUxMy5hcHBlbmRDaGls ZChjcmVhdGVSYWRpbygnb2JqZWN0JywgJ3IxMycsICd0aHVtYm5haWwnLCBmYWxzZSkpOwog ICAgICAgIGUxMy5hcHBlbmRDaGlsZChjcmVhdGVMYWJlbCgncjEzJywgJ1RodW1ibmFpbCcs ICdpbmxpbmUnKSk7CiAgICAgICAgZnMxLmFwcGVuZENoaWxkKGUxMyk7CiAgICAvLyBjaGVj a2JveCBzcXVhcmUgdGh1bWJuYWlsCiAgICAgICAgdmFyIGUxNCA9IGRvY3VtZW50LmNyZWF0 ZUVsZW1lbnQoJ3AnKTsKICAgICAgICBlMTQuYXBwZW5kQ2hpbGQoY3JlYXRlQ2hlY2tib3go J3NxdWFyZScsICdzJywgJzEnLCBmYWxzZSkpOwogICAgICAgIGUxNC5hcHBlbmRDaGlsZChj cmVhdGVMYWJlbCgncycsICdTcXVhcmUgdGh1bWJuYWlsJywgJ2lubGluZScpKTsKICAgICAg ICBmczEuYXBwZW5kQ2hpbGQoZTE0KTsKICAgIC8vIGFkZCBmaWVsZHNldCB0byBmb3JtCiAg ICAgICAgZm9ybUdMWC5hcHBlbmRDaGlsZChmczEpOwogICAgLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vCiAgICAvLyBmaWVsZHNldDogc2V0dGluZ3MgLy8KICAgIC8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLwogICAgICAgIHZhciBmczIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdm aWVsZHNldCcpOwogICAgICAgIHZhciBsMiAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCds ZWdlbmQnKTsKICAgICAgICBsMi5pbm5lckhUTUwgPSAnU2V0dGluZ3MnOwogICAgICAgIGZz Mi5hcHBlbmRDaGlsZChsMik7CgkgICAgZnMyLnNldEF0dHJpYnV0ZSgnaWQnLCAnZnMyJyk7 CiAgICAvLyBmczIgaXMgcGFydGVkIGluIHR3byBkaXZzIGZvciBsYXlvdXQKICAgICAgICBk aXYxID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICAgICAgZGl2MiA9IGRv Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgLy8gaW5wdXQgbGFyZ2VTaXplCiAg ICAgICAgdmFyIGUyMSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3AnKTsKICAgICAgICB2 YXIgbGFyZ2VWYWx1ZSA9IChnZXRDb29raWUoJ2dseF9pbWFnZV9sYXJnZScpKSA/IGdldENv b2tpZSgnZ2x4X2ltYWdlX2xhcmdlJykgOiA1MDA7CiAgICAgICAgZTIxLmFwcGVuZENoaWxk KGNyZWF0ZUxhYmVsKCdsYXJnZVNpemUnLCAnTGFyZ2VzaXplIChweCknLCAnYmxvY2snKSk7 CiAgICAgICAgZTIxLmFwcGVuZENoaWxkKGNyZWF0ZUlucHV0KCdsYXJnZVNpemUnLCAnbGFy Z2VTaXplJywgbGFyZ2VWYWx1ZSwgZmFsc2UpKTsKICAgICAgICBkaXYxLmFwcGVuZENoaWxk KGUyMSk7CiAgICAvLyBpbnB1dCB0aHVtYlNpemUKICAgICAgICB2YXIgZTIyID0gZG9jdW1l bnQuY3JlYXRlRWxlbWVudCgncCcpOwogICAgICAgIHZhciB0aHVtYlZhbHVlID0gKGdldENv b2tpZSgnZ2x4X2ltYWdlX3RodW1iJykpID8gZ2V0Q29va2llKCdnbHhfaW1hZ2VfdGh1bWIn KSA6IDEwMDsKICAgICAgICBlMjIuYXBwZW5kQ2hpbGQoY3JlYXRlTGFiZWwoJ3RodW1iU2l6 ZScsICdUaHVtYnNpemUgKHB4KScsICdibG9jaycpKTsKICAgICAgICBlMjIuYXBwZW5kQ2hp bGQoY3JlYXRlSW5wdXQoJ3RodW1iU2l6ZScsICd0aHVtYlNpemUnLCB0aHVtYlZhbHVlKSk7 CiAgICAgICAgZGl2MS5hcHBlbmRDaGlsZChlMjIpOwogICAgLy8gcmFkaW8gYnV0dG9uIHRo dW1ic2l6ZS1zaWRlaGVpZ2h0CiAgICAgICAgdmFyIGUyMyA9IGRvY3VtZW50LmNyZWF0ZUVs ZW1lbnQoJ3AnKTsKICAgICAgICBlMjMuYXBwZW5kQ2hpbGQoY3JlYXRlUmFkaW8oJ3NpZGUn LCAncjIxJywgJ2hlaWdodCcsIGZhbHNlKSk7CiAgICAgICAgZTIzLmFwcGVuZENoaWxkKGNy ZWF0ZUxhYmVsKCdyMjEnLCAnaGVpZ2h0JywgJ2lubGluZScpKTsKICAgICAgICBkaXYyLmFw cGVuZENoaWxkKGUyMyk7CiAgICAvLyByYWRpbyBidXR0b24gdGh1bWJzaXplLXNpZGV3aWR0 aAogICAgICAgIHZhciBlMjQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdwJyk7CiAgICAg ICAgZTI0LmFwcGVuZENoaWxkKGNyZWF0ZVJhZGlvKCdzaWRlJywgJ3IyMicsICd3aWR0aCcs IGZhbHNlKSk7CiAgICAgICAgZTI0LmFwcGVuZENoaWxkKGNyZWF0ZUxhYmVsKCdyMjInLCAn d2lkdGgnLCAnaW5saW5lJykpOwogICAgICAgIGRpdjIuYXBwZW5kQ2hpbGQoZTI0KTsKICAg IC8vIHJhZGlvIGJ1dHRvbiB0aHVtYnNpemUtc2lkZWxvbmdlc3QKICAgICAgICB2YXIgZTI1 ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgncCcpOwogICAgICAgIGUyNS5hcHBlbmRDaGls ZChjcmVhdGVSYWRpbygnc2lkZScsICdyMjMnLCAnbG9uZ2VzdCcsIHRydWUpKTsKICAgICAg ICBlMjUuYXBwZW5kQ2hpbGQoY3JlYXRlTGFiZWwoJ3IyMycsICdsb25nZXN0IHNpZGUnLCAn aW5saW5lJykpOwogICAgICAgIGRpdjIuYXBwZW5kQ2hpbGQoZTI1KTsKICAgIC8vIGFkZCBm aWVsZHNldCB0byBmb3JtCiAgICAgICAgZnMyLmFwcGVuZENoaWxkKGRpdjEpOwogICAgICAg IGZzMi5hcHBlbmRDaGlsZChkaXYyKTsKICAgICAgICBmb3JtR0xYLmFwcGVuZENoaWxkKGZz Mik7CiAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAgICAvLyBmaWVsZHNldDogcm90YXRl IC8vCiAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAgICAgICAgdmFyIGZzMyA9IGRvY3Vt ZW50LmNyZWF0ZUVsZW1lbnQoJ2ZpZWxkc2V0Jyk7CiAgICAgICAgdmFyIGwzICA9IGRvY3Vt ZW50LmNyZWF0ZUVsZW1lbnQoJ2xlZ2VuZCcpOwogICAgICAgIGwzLmlubmVySFRNTCA9ICdS b3RhdGlvbic7CiAgICAgICAgZnMzLmFwcGVuZENoaWxkKGwzKTsKCSAgICBmczMuc2V0QXR0 cmlidXRlKCdpZCcsICdmczMnKTsKICAgIC8vIHJhZGlvIGJ1dHRvbiByb3RhdGUgOTAgQ1cK ICAgICAgICB2YXIgZTMyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgncCcpOwogICAgICAg IGUzMi5hcHBlbmRDaGlsZChjcmVhdGVSYWRpbygncm90YXRlVmFsdWUnLCAncjMyJywgJzI3 MCcsIHRydWUpKTsKICAgICAgICBlMzIuYXBwZW5kQ2hpbGQoY3JlYXRlTGFiZWwoJ3IzMics ICc5MMKwIENXJywgJ2lubGluZScpKTsKICAgICAgICBmczMuYXBwZW5kQ2hpbGQoZTMyKTsK ICAgIC8vIHJhZGlvIGJ1dHRvbiByb3RhdGUgMTgwCiAgICAgICAgdmFyIGUzMSA9IGRvY3Vt ZW50LmNyZWF0ZUVsZW1lbnQoJ3AnKTsKICAgICAgICBlMzEuYXBwZW5kQ2hpbGQoY3JlYXRl UmFkaW8oJ3JvdGF0ZVZhbHVlJywgJ3IzMScsICcxODAnLCBmYWxzZSkpOwogICAgICAgIGUz MS5hcHBlbmRDaGlsZChjcmVhdGVMYWJlbCgncjMxJywgJzE4MMKwJywgJ2lubGluZScpKTsK ICAgICAgICBmczMuYXBwZW5kQ2hpbGQoZTMxKTsKICAgIC8vIHJhZGlvIGJ1dHRvbiByb3Rh dGUgOTAgQ0NXCiAgICAgICAgdmFyIGUzMyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3An KTsKICAgICAgICBlMzMuYXBwZW5kQ2hpbGQoY3JlYXRlUmFkaW8oJ3JvdGF0ZVZhbCcsICdy MzMnLCAnOTAnLCBmYWxzZSkpOwogICAgICAgIGUzMy5hcHBlbmRDaGlsZChjcmVhdGVMYWJl bCgncjMzJywgJzkwwrAgQ0NXJywgJ2lubGluZScpKTsKICAgICAgICBmczMuYXBwZW5kQ2hp bGQoZTMzKTsKICAgIC8vIGFkZCBmaWVsZHNldCB0byBmb3JtCiAgICAgICAgZm9ybUdMWC5h cHBlbmRDaGlsZChmczMpOwogICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLwogICAgLy8gZmluYWwgZmllbGRzZXQsIHRodW1ibmFpbCwg aGlkZGVucyBhbmQgc3VibWl0cyAvLwogICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogICAgICAgIHZhciBmczQgPSBkb2N1bWVudC5j cmVhdGVFbGVtZW50KCdmaWVsZHNldCcpOwogICAgICAgIHZhciBsNCAgPSBkb2N1bWVudC5j cmVhdGVFbGVtZW50KCdsZWdlbmQnKTsKICAgICAgICBsNC5pbm5lckhUTUwgPSAnRXhlY3V0 ZSc7CiAgICAgICAgZnM0LmFwcGVuZENoaWxkKGw0KTsKCSAgICBmczQuc2V0QXR0cmlidXRl KCdpZCcsICdmczQnKTsKICAgIC8vIGhpZGRlbiBmaWVsZHMKICAgICAgICBmczQuYXBwZW5k Q2hpbGQoY3JlYXRlSGlkZGVuKCdhY3Rpb24nLCAnZ2x4JykpOwogICAgICAgIGZzNC5hcHBl bmRDaGlsZChjcmVhdGVIaWRkZW4oJ3N0ZXAnLCAnaW1hZ2VfZWRpdCcpKTsKICAgICAgICBm czQuYXBwZW5kQ2hpbGQoY3JlYXRlSGlkZGVuKCdpZCcsIGRvY3VtZW50LmdldEVsZW1lbnRz QnlOYW1lKCdpZCcpLml0ZW0oMCkudmFsdWUpKTsKICAgICAgICBmczQuYXBwZW5kQ2hpbGQo Y3JlYXRlSGlkZGVuKCdldmVudCcsICdpbWFnZScpKTsKICAgICAgICBmczQuYXBwZW5kQ2hp bGQoY3JlYXRlSGlkZGVuKCdNQVhfRklMRV9TSVpFJywgZG9jdW1lbnQuZ2V0RWxlbWVudHNC eU5hbWUoJ01BWF9GSUxFX1NJWkUnKS5pdGVtKDApLnZhbHVlKSk7CiAgICAvL2FkZCBzdWJt aXQKICAgICAgICBmczQuYXBwZW5kQ2hpbGQoY3JlYXRlU3VibWl0KCdyZXNpemUnLCAnUmVz aXplJykpOwogICAgICAgIGZzNC5hcHBlbmRDaGlsZChjcmVhdGVTdWJtaXQoJ3JvdGF0ZScs ICdSb3RhdGUnKSk7CiAgICAgICAgZnM0LmFwcGVuZENoaWxkKGNyZWF0ZVN1Ym1pdCgnYm90 aCcsICAgJ0ZpcnN0IHJlc2l6ZSBhbmQgdGhlbiByb3RhdGUnKSk7CiAgICAvLyBvdXRwdXQg b2YgdGhlIHRodW1ibmFpbAogICAgICAgIHZhciBkaXYzID0gZG9jdW1lbnQuY3JlYXRlRWxl bWVudCgnZGl2Jyk7CiAgICAgICAgdmFyIGU0MSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo J2ltZycpOwogICAgICAgIGU0MS5zZXRBdHRyaWJ1dGUoJ2NsYXNzJywgJ3RodW1ibmFpbCcp OwogICAgICAgIGU0MS5zZXRBdHRyaWJ1dGUoJ3NyYycsICciLmh1LiRpbWdfZGlyLiIvIi4k aWQuInQiLiRleHQuIicpOwogICAgICAgIGU0MS5zZXRBdHRyaWJ1dGUoJ2FsdCcsICd0aHVt Ym5haWwgb2YgdGhlIHBpY3R1cmUnKTsKICAgICAgICBkaXYzLmFwcGVuZENoaWxkKGU0MSk7 CiAgICAgICAgZnM0LmFwcGVuZENoaWxkKGRpdjMpOwogICAgLy8gYWRkIGZpZWxkc2V0IHRv IGZvcm0KICAgICAgICBmb3JtR0xYLmFwcGVuZENoaWxkKGZzNCk7CiAgICAvLyBpbnNlcnQg dGhlIGZvcm0gYmVmb3JlIHRoZSBlZGl0Zm9ybQogICAgICAgIHZhciBkaXZHTFggPSBkb2N1 bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICAgICAgICBkaXZHTFguY2xhc3NOYW1lID0g J2dseCc7CiAgICAgICAgZGl2R0xYLmFwcGVuZENoaWxkKGZvcm1HTFgpOwogICAgICAgIHZh ciBockNsZWFyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaHInKTsKICAgICAgICBockNs ZWFyLmNsYXNzTmFtZSA9ICdjbGVhcic7CiAgICAgICAgdmFyIG9sZEZvcm0gPSBkb2N1bWVu dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnZm9ybScpLml0ZW0oMSk7CiAgICAgICAgb2xkRm9y bS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShkaXZHTFgsIG9sZEZvcm0pOwogICAgICAgIG9s ZEZvcm0ucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoaHJDbGVhciwgb2xkRm9ybSk7Ci8vIFRP RE86IElNQUdFUVVBTElUWQovLyBpbnB1dCBxdWFsaXR5Ci8vdmFyIGlucHV0UXVhVGh1bWIg PSBjcmVhdGVJbnB1dCgndGh1bWJRdWEnLCAndGh1bWJRdWEnLCAnOTAnKTsKLy92YXIgbGFi ZWxRdWFUaHVtYiA9IGNyZWF0ZUxhYmVsKCd0aHVtYlF1YScsICdRdWFsaXR5IFRodW1iICgx MC0xMDApJywgJ2Jsb2NrJyk7Ci8vdmFyIHBRdWFUaHVtYiA9IGRvY3VtZW50LmNyZWF0ZUVs ZW1lbnQoJ3AnKTsKLy9wUXVhVGh1bWIuYXBwZW5kQ2hpbGQobGFiZWxRdWFUaHVtYik7Ci8v cFF1YVRodW1iLmFwcGVuZENoaWxkKGlucHV0UXVhVGh1bWIpOwovLyBpbnB1dCBxdWFsaXR5 Ci8vdmFyIGlucHV0UXVhTGFyZ2UgPSBjcmVhdGVJbnB1dCgnbGFyZ2VRdWEnLCAnbGFyZ2VR dWEnLCAnODAnKTsKLy92YXIgbGFiZWxRdWFMYXJnZSA9IGNyZWF0ZUxhYmVsKCdsYXJnZVF1 YScsICdRdWFsaXR5IExhcmdlIEltYWdlICgxMC0xMDApJywgJ2Jsb2NrJyk7Ci8vdmFyIHBR dWFMYXJnZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3AnKTsKLy9wUXVhTGFyZ2UuYXBw ZW5kQ2hpbGQobGFiZWxRdWFMYXJnZSk7Ci8vcFF1YUxhcmdlLmFwcGVuZENoaWxkKGlucHV0 UXVhTGFyZ2UpOwp9CmZ1bmN0aW9uIGNyZWF0ZUhpZGRlbihuYW1lLCB2YWx1ZSl7CiAgICB2 YXIgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7CiAgICBlbGVt ZW50LnNldEF0dHJpYnV0ZSgnbmFtZScsIG5hbWUpOwogICAgZWxlbWVudC5zZXRBdHRyaWJ1 dGUoJ3R5cGUnLCAnaGlkZGVuJyk7CiAgICBlbGVtZW50LnNldEF0dHJpYnV0ZSgndmFsdWUn LCB2YWx1ZSk7CiAgICByZXR1cm4gZWxlbWVudDsKfQpmdW5jdGlvbiBjcmVhdGVTdWJtaXQo bmFtZSwgdmFsdWUpewogICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50 KCdpbnB1dCcpOwogICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2NsYXNzJywgJ3NtYWxsZXJi b3gnKTsKICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCd0eXBlJywgJ3N1Ym1pdCcpOwogICAg ZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ3ZhbHVlJywgdmFsdWUpOwogICAgZWxlbWVudC5zZXRB dHRyaWJ1dGUoJ25hbWUnLCBuYW1lKTsKICAgIHJldHVybiBlbGVtZW50Owp9CmZ1bmN0aW9u IGNyZWF0ZVJhZGlvKG5hbWUsIGlkLCB2YWx1ZSwgY2hlY2tlZCl7Cgl2YXIgZWxlbWVudCA9 IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7CgllbGVtZW50LnNldEF0dHJpYnV0 ZSgnbmFtZScsICBuYW1lKTsKCWVsZW1lbnQuc2V0QXR0cmlidXRlKCdpZCcsICAgIGlkKTsK ICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCd0eXBlJywgICdyYWRpbycpOwoJZWxlbWVudC5z ZXRBdHRyaWJ1dGUoJ3ZhbHVlJywgdmFsdWUpOwogICAgZWxlbWVudC5jaGVja2VkID0gKGNo ZWNrZWQgPT0gdHJ1ZSkgPyB0cnVlIDogZmFsc2U7CgllbGVtZW50LmNsYXNzTmFtZSA9ICdl ZGl0JzsKCXJldHVybiBlbGVtZW50Owp9CmZ1bmN0aW9uIGNyZWF0ZUNoZWNrYm94KG5hbWUs IGlkLCB2YWx1ZSwgY2hlY2tlZCl7Cgl2YXIgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVs ZW1lbnQoJ2lucHV0Jyk7CgllbGVtZW50LnNldEF0dHJpYnV0ZSgnbmFtZScsICBuYW1lKTsK CWVsZW1lbnQuc2V0QXR0cmlidXRlKCdpZCcsICAgIGlkKTsKICAgIGVsZW1lbnQuc2V0QXR0 cmlidXRlKCd0eXBlJywgICdjaGVja2JveCcpOwoJZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ3Zh bHVlJywgdmFsdWUpOwogICAgZWxlbWVudC5jaGVja2VkID0gKGNoZWNrZWQgPT0gdHJ1ZSkg PyB0cnVlIDogZmFsc2U7CgllbGVtZW50LmNsYXNzTmFtZSA9ICdlZGl0JzsKCXJldHVybiBl bGVtZW50Owp9CmZ1bmN0aW9uIGNyZWF0ZUlucHV0KG5hbWUsIGlkLCB2YWx1ZSl7Cgl2YXIg ZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7CgllbGVtZW50LnNl dEF0dHJpYnV0ZSgnbmFtZScsIG5hbWUpOwoJZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2lkJywg aWQpOwoJZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ3R5cGUnLCAndGV4dCcpOwoJZWxlbWVudC5z ZXRBdHRyaWJ1dGUoJ3ZhbHVlJywgdmFsdWUpOwoJZWxlbWVudC5jbGFzc05hbWUgPSAnZWRp dCc7CglyZXR1cm4gZWxlbWVudDsKfQpmdW5jdGlvbiBjcmVhdGVMYWJlbChmb3JFbGVtZW50 LCB0ZXh0LCBlbGVtZW50Q2xhc3MpewoJdmFyIGxhYmVsRWxlbWVudCA9IGRvY3VtZW50LmNy ZWF0ZUVsZW1lbnQoJ2xhYmVsJyk7CglsYWJlbEVsZW1lbnQuc2V0QXR0cmlidXRlKCdmb3In LCBmb3JFbGVtZW50KTsKCWxhYmVsRWxlbWVudC5jbGFzc05hbWUgPSBlbGVtZW50Q2xhc3M7 Cgl2YXIgbGFiZWxUZXh0Tm9kZSA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHRleHQpOwoJ bGFiZWxFbGVtZW50LmFwcGVuZENoaWxkKGxhYmVsVGV4dE5vZGUpOwoJcmV0dXJuIGxhYmVs RWxlbWVudDsKfQpmdW5jdGlvbiBsb2FkQ1NTKGZpbGVOYW1lKXsKCXZhciBzID0gZG9jdW1l bnQuY3JlYXRlRWxlbWVudCgnbGluaycpOwoJcy5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCBmaWxl TmFtZSk7CglzLnNldEF0dHJpYnV0ZSgncmVsJywgJ3N0eWxlc2hlZXQnKTsKCXMuc2V0QXR0 cmlidXRlKCd0eXBlJywgJ3RleHQvY3NzJyk7Cglkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn TmFtZSgnaGVhZCcpLml0ZW0oMCkuYXBwZW5kQ2hpbGQocyk7Cn0KLyoqCiAqIGh0dHA6Ly93 d3cud2VicmVmZXJlbmNlLmNvbS9qcy9jb2x1bW44L2luZGV4Lmh0bWwKICovCmZ1bmN0aW9u IGdldENvb2tpZShuYW1lKXsKCXZhciBkYyA9IGRvY3VtZW50LmNvb2tpZTsKCXZhciBwcmVm aXggPSBuYW1lICsgJz0nOwoJdmFyIGJlZ2luID0gZGMuaW5kZXhPZignOyAnICsgcHJlZml4 KTsKCWlmIChiZWdpbiA9PSAtMSl7YmVnaW4gPSBkYy5pbmRleE9mKHByZWZpeCk7aWYgKGJl Z2luICE9IDApIHJldHVybiBudWxsO30KICAgIGVsc2UgYmVnaW4gKz0gMjsKICAJdmFyIGVu ZCA9IGRvY3VtZW50LmNvb2tpZS5pbmRleE9mKCc7JywgYmVnaW4pOwoJaWYgKGVuZCA9PSAt MSkgZW5kID0gZGMubGVuZ3RoOwogIAlyZXR1cm4gdW5lc2NhcGUoZGMuc3Vic3RyaW5nKGJl Z2luICsgcHJlZml4Lmxlbmd0aCwgZW5kKSk7Cn0KLS0+Cjwvc2NyaXB0PgoiOwp9Ci8qKgog KiBHdWVzcyBhdCBmaWxlIHR5cGUgYnkgdGVzdGluZyBmb3IgZXhpc3RpbmcgZmlsZXMKICog QnkgZGxuOiA8aHR0cDovL3d3dy51bmVtcHR5LmNvbS8+CiAqIEBzZWUgaHR0cDovL2ZvcnVt LnRleHRwYXR0ZXJuLmNvbS92aWV3dG9waWMucGhwP3BpZD01OTUyMCNwNTk1MjAKICovCmZ1 bmN0aW9uIGdseF9nZXRfc291cmNlKCRpbWFnZV9pZCwgJHRodW1ibmFpbCA9IGZhbHNlKSB7 CiAgICAkc3VmZml4ZXNbXSA9IChkZWZpbmVkKCdKUEcnKSkgPyAnanBnJyAgOiAnJzsKICAg ICRzdWZmaXhlc1tdID0gKGRlZmluZWQoJ0pQRycpKSA/ICdKUEcnICA6ICcnOwogICAgJHN1 ZmZpeGVzW10gPSAoZGVmaW5lZCgnSlBHJykpID8gJ2pwZWcnIDogJyc7CiAgICAkc3VmZml4 ZXNbXSA9IChkZWZpbmVkKCdKUEcnKSkgPyAnSlBFRycgOiAnJzsKICAgICRzdWZmaXhlc1td ID0gKGRlZmluZWQoJ1BORycpKSA/ICdwbmcnICA6ICcnOwogICAgJHN1ZmZpeGVzW10gPSAo ZGVmaW5lZCgnUE5HJykpID8gJ1BORycgIDogJyc7CiAgICAkc3VmZml4ZXNbXSA9IChkZWZp bmVkKCdHSUYnKSkgPyAnZ2lmJyAgOiAnJzsKICAgICRzdWZmaXhlc1tdID0gKGRlZmluZWQo J0dJRicpKSA/ICdHSUYnICA6ICcnOwogICAgJHN1ZmZpeGVzID0gYXJyYXlfdmFsdWVzKGFy cmF5X2RpZmYoJHN1ZmZpeGVzLCBhcnJheSgnJykpKTsKICAgIGZvcmVhY2ggKCRzdWZmaXhl cyBhcyAkc3VmZml4KSB7CiAgICAgICAgJHNvdXJjZSA9ICgkdGh1bWJuYWlsID09PSBmYWxz ZSkKICAgICAgICAgICAgPyBJTVBBVEguJGltYWdlX2lkLicuJy4kc3VmZml4CiAgICAgICAg ICAgIDogSU1QQVRILiRpbWFnZV9pZC4ndC4nLiRzdWZmaXg7CiAgICAgICAgaWYgKGZpbGVf ZXhpc3RzKCRzb3VyY2UpKSB7CiAgICAgICAgICAgIHJldHVybiBhcnJheSgkc3VmZml4LCAk c291cmNlKTsKICAgICAgICB9OwogICAgfTsKICAgIHJldHVybiBhcnJheShOVUxMLCBOVUxM KTsKfQoiO3M6NDoidHlwZSI7czoxOiIxIjtzOjU6Im9yZGVyIjtzOjE6IjUiO3M6NDoiaGVs cCI7czoyNzc6IjxoMT5HTFhfQURNSU5fSU1BR0U8L2gxPgoKCTx1bD4KCQk8bGk+PGEgaHJl Zj0iaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL3RleHRwYXR0ZXJuLXBsdWdpbnMvd2lraS9H bHhBZG1pbkltYWdlIj5Eb2N1bWVudGF0aW9uIGF0IEdvb2dsZSBDb2RlPC9hPjwvbGk+CgkJ PGxpPjxhIGhyZWY9Imh0dHA6Ly90ZXh0cGF0dGVybi1wbHVnaW5zLmdvb2dsZWNvZGUuY29t L3N2bi90cnVuay9jdXJyZW50L2dseF9hZG1pbl9pbWFnZS50eHQiPkN1cnJlbnQgVmVyc2lv bjwvYT48L2xpPgoJPC91bD4iO3M6MzoibWQ1IjtzOjMyOiIwOTQ5MDUxZDA0MDI0NGIxYjNm ZWViODNhYzZiYWU0OCI7fQ==