# Name: zem_contact_reborn v4.5.0.0 # Type: Public plugin # Form mailer for Textpattern # Author: TXP Community # URL: http://forum.textpattern.com/viewtopic.php?id=23728 # 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: # ..................................................................... YToxMjp7czo0OiJuYW1lIjtzOjE4OiJ6ZW1fY29udGFjdF9yZWJvcm4iO3M6NjoiYXV0aG9y IjtzOjEzOiJUWFAgQ29tbXVuaXR5IjtzOjEwOiJhdXRob3JfdXJpIjtzOjUxOiJodHRwOi8v Zm9ydW0udGV4dHBhdHRlcm4uY29tL3ZpZXd0b3BpYy5waHA/aWQ9MjM3MjgiO3M6NzoidmVy c2lvbiI7czo3OiI0LjUuMC4wIjtzOjExOiJkZXNjcmlwdGlvbiI7czoyNzoiRm9ybSBtYWls ZXIgZm9yIFRleHRwYXR0ZXJuIjtzOjQ6ImNvZGUiO3M6NTQ1NDE6Ii8vPD9waHAKLyoqCiAq IHplbV9jb250YWN0X3JlYm9ybjogQSBUZXh0cGF0dGVybiBDTVMgcGx1Z2luIGZvciBtYWls IGRlbGl2ZXJ5IG9mIGNvbnRhY3QgZm9ybXMuCiAqLwoKLy8gUmVnaXN0ZXIgdGFncyBpZiBu ZWNlc3NhcnkuCmlmIChjbGFzc19leGlzdHMoJ1xUZXh0cGF0dGVyblxUYWdcUmVnaXN0cnkn KSkgewogICAgVHhwOjpnZXQoJ1xUZXh0cGF0dGVyblxUYWdcUmVnaXN0cnknKQogICAgICAg IC0+cmVnaXN0ZXIoJ3plbV9jb250YWN0JykKICAgICAgICAtPnJlZ2lzdGVyKCd6ZW1fY29u dGFjdF90ZXh0JykKICAgICAgICAtPnJlZ2lzdGVyKCd6ZW1fY29udGFjdF9lbWFpbCcpCiAg ICAgICAgLT5yZWdpc3RlcignemVtX2NvbnRhY3RfdGV4dGFyZWEnKQogICAgICAgIC0+cmVn aXN0ZXIoJ3plbV9jb250YWN0X3NlbGVjdCcpCiAgICAgICAgLT5yZWdpc3RlcignemVtX2Nv bnRhY3Rfb3B0aW9uJykKICAgICAgICAtPnJlZ2lzdGVyKCd6ZW1fY29udGFjdF9jaGVja2Jv eCcpCiAgICAgICAgLT5yZWdpc3RlcignemVtX2NvbnRhY3RfcmFkaW8nKQogICAgICAgIC0+ cmVnaXN0ZXIoJ3plbV9jb250YWN0X3NlcnZlcmluZm8nKQogICAgICAgIC0+cmVnaXN0ZXIo J3plbV9jb250YWN0X3NlY3JldCcpCiAgICAgICAgLT5yZWdpc3RlcignemVtX2NvbnRhY3Rf c3VibWl0JykKICAgICAgICAtPnJlZ2lzdGVyKCd6ZW1fY29udGFjdF9zZW5kX2FydGljbGUn KQogICAgICAgIC0+cmVnaXN0ZXIoJ3plbV9jb250YWN0X3ZhbHVlJykKICAgICAgICAtPnJl Z2lzdGVyKCd6ZW1fY29udGFjdF9sYWJlbCcpCiAgICAgICAgLT5yZWdpc3RlcignemVtX2Nv bnRhY3RfaWYnKTsKfQoKLyoqCiAqIFRhZzogZW5jYXBzdWxhdGUgYSBjb250YWN0IGZvcm0u CiAqCiAqIFRyaWdnZXJzIHRoZSBmb2xsb3dpbmcgY2FsbGJhY2tzOgogKiAgLT4gJ3plbWNv bnRhY3QuZm9ybScgZHVyaW5nIGZvcm0gcmVuZGVyaW5nIHNvIGFkZGl0aW9uYWwgZmllbGRz IGNhbiBiZSBpbmplY3RlZC4KICogIC0+ICd6ZW1jb250YWN0LnN1Ym1pdCcgb24gc3VjY2Vz c2Z1bCBwb3N0aW5nIG9mIGZvcm0gZGF0YS4gUHJpbWFyaWx5IG9mIHVzZSBmb3Igc3BhbQog KiAgICAgcGx1Z2luczogdGhleSBjYW4gcmV0dXJuIGEgbm9uLXplcm8gdmFsdWUgdG8gc2ln bmFsIHRoYXQgdGhlIGZvcm0gc2hvdWxkIE5PVCBiZSBzZW50LgogKgogKiBAcGFyYW0gYXJy YXkgICRhdHRzICBUYWcgYXR0cmlidXRlcwogKiBAcGFyYW0gc3RyaW5nICR0aGluZyBUYWcn cyBjb250YWluZXIgY29udGVudAogKi8KZnVuY3Rpb24gemVtX2NvbnRhY3QoJGF0dHMsICR0 aGluZyA9IG51bGwpCnsKICAgIGdsb2JhbCAkc2l0ZW5hbWUsICR0ZXh0YXJyYXksICR6ZW1f Y29udGFjdF9mbGFncywgJHplbV9jb250YWN0X2Zyb20sCiAgICAgICAgJHplbV9jb250YWN0 X3JlY2lwaWVudCwgJHplbV9jb250YWN0X2Vycm9yLCAkemVtX2NvbnRhY3Rfc3VibWl0LAog ICAgICAgICR6ZW1fY29udGFjdF9mb3JtLCAkemVtX2NvbnRhY3RfbGFiZWxzLCAkemVtX2Nv bnRhY3RfdmFsdWVzOwoKICAgIGV4dHJhY3QoemVtX2NvbnRhY3RfbEF0dHMoYXJyYXkoCiAg ICAgICAgJ2JvZHlfZm9ybScgICAgICAgID0+ICcnLAogICAgICAgICdjbGFzcycgICAgICAg ICAgICA9PiAnemVtQ29udGFjdEZvcm0nLAogICAgICAgICdjbGFzc2VzJyAgICAgICAgICA9 PiAnJywKICAgICAgICAnY29weXNlbmRlcicgICAgICAgPT4gMCwKICAgICAgICAnZXhwaXJl JyAgICAgICAgICAgPT4gNjAwLAogICAgICAgICdmb3JtJyAgICAgICAgICAgICA9PiAnJywK ICAgICAgICAnZnJvbScgICAgICAgICAgICAgPT4gJycsCiAgICAgICAgJ2Zyb21fZm9ybScg ICAgICAgID0+ICcnLAogICAgICAgICdsYWJlbCcgICAgICAgICAgICA9PiBudWxsLAogICAg ICAgICdicm93c2VyX3ZhbGlkYXRlJyA9PiAxLAogICAgICAgICdyZWRpcmVjdCcgICAgICAg ICA9PiAnJywKICAgICAgICAncmVxdWlyZWQnICAgICAgICAgPT4gJzEnLAogICAgICAgICdz aG93X2Vycm9yJyAgICAgICA9PiAxLAogICAgICAgICdzaG93X2lucHV0JyAgICAgICA9PiAx LAogICAgICAgICdzZW5kX2FydGljbGUnICAgICA9PiAwLAogICAgICAgICdzdWJqZWN0JyAg ICAgICAgICA9PiBudWxsLAogICAgICAgICdzdWJqZWN0X2Zvcm0nICAgICA9PiAnJywKICAg ICAgICAndG8nICAgICAgICAgICAgICAgPT4gJycsCiAgICAgICAgJ3RvX2Zvcm0nICAgICAg ICAgID0+ICcnLAogICAgICAgICd0aGFua3MnICAgICAgICAgICA9PiBudWxsLAogICAgICAg ICd0aGFua3NfZm9ybScgICAgICA9PiAnJwogICAgKSwgJGF0dHMpKTsKCiAgICBpZiAoIWVt cHR5KCRsYW5nKSkgewogICAgICAgICRzdHJpbmdzID0gemVtX2NvbnRhY3RfbG9hZF9sYW5n KCRsYW5nKTsKICAgICAgICAkdGV4dGFycmF5ID0gYXJyYXlfbWVyZ2UoJHRleHRhcnJheSwg JHN0cmluZ3MpOwogICAgfQoKICAgIC8vIFNldCBkZWZhdWx0cywgaW4gdGhlIGxvY2FsIGxh bmd1YWdlIGlmIG5lY2Vzc2FyeS4KICAgIGlmICgkbGFiZWwgPT09IG51bGwpIHsKICAgICAg ICAkbGFiZWwgPSBnVHh0KCd6ZW1fY29udGFjdF9jb250YWN0Jyk7CiAgICB9CgogICAgaWYg KCRzdWJqZWN0ID09PSBudWxsKSB7CiAgICAgICAgJHN1YmplY3QgPSBnVHh0KCd6ZW1fY29u dGFjdF9lbWFpbF9zdWJqZWN0JywgYXJyYXkoJ3tzaXRlfScgPT4gaHRtbF9lbnRpdHlfZGVj b2RlKCRzaXRlbmFtZSxFTlRfUVVPVEVTKSkpOwogICAgfQoKICAgIGlmICgkdGhhbmtzID09 PSBudWxsKSB7CiAgICAgICAgJHRoYW5rcyA9IGdyYWYoZ1R4dCgnemVtX2NvbnRhY3RfZW1h aWxfdGhhbmtzJykpOwogICAgfQoKICAgIHVuc2V0KCRhdHRzWydzaG93X2Vycm9yJ10sICRh dHRzWydzaG93X2lucHV0J10pOwoKICAgICRkZWZhdWx0Q2xhc3NOYW1lcyA9IGFycmF5KAog ICAgICAgICdlbGVtZW50JyAgPT4gJ2Vycm9yRWxlbWVudCcsCiAgICAgICAgJ3dyYXBwZXIn ICA9PiAnemVtRXJyb3InLAogICAgICAgICdyZXF1aXJlZCcgPT4gJ3plbVJlcXVpcmVkJywK ICAgICAgICAndGhhbmtzJyAgID0+ICd6ZW1UaGFua3MnLAogICAgICAgICk7CgogICAgJHpl bV9jb250YWN0X2Zvcm1faWQgPSBtZDUoc2VyaWFsaXplKCRhdHRzKSAuIHByZWdfcmVwbGFj ZSgnL1tcdFxzXHJcbl0vJywgJycsICR0aGluZykpOwogICAgJHplbV9jb250YWN0X3N1Ym1p dCA9IChwcygnemVtX2NvbnRhY3RfZm9ybV9pZCcpID09ICR6ZW1fY29udGFjdF9mb3JtX2lk KTsKICAgICRvdmVycmlkZV9lbWFpbF9jaGFyc2V0ID0gKGdldF9wcmVmKCdvdmVycmlkZV9l bWFpbGNoYXJzZXQnKSAmJiBpc19jYWxsYWJsZSgndXRmOF9kZWNvZGUnKSk7CiAgICAkdXNl ckNsYXNzTmFtZXMgPSBkb19saXN0KCRjbGFzc2VzKTsKCiAgICBmb3JlYWNoIChhcnJheV9t ZXJnZSgkZGVmYXVsdENsYXNzTmFtZXMsICR1c2VyQ2xhc3NOYW1lcykgYXMgJGNsYXNzS2V5 ID0+ICRjbGFzc1ZhbHVlKSB7CiAgICAgICAgaWYgKHN0cnBvcygkY2xhc3NWYWx1ZSwgJzon KSAhPT0gZmFsc2UpIHsKICAgICAgICAgICAgJGNsYXNzUGFydHMgPSBkb19saXN0KCRjbGFz c1ZhbHVlLCAnOicpOwoKICAgICAgICAgICAgaWYgKGNvdW50KCRjbGFzc1BhcnRzKSA9PT0g MikgewogICAgICAgICAgICAgICAgJHplbV9jb250YWN0X2ZsYWdzWydjbHNfJyAuICRjbGFz c1BhcnRzWzBdXSA9ICRjbGFzc1BhcnRzWzFdOwogICAgICAgICAgICB9CiAgICAgICAgfSBl bHNlaWYgKCRjbGFzc0tleSAmJiAkY2xhc3NWYWx1ZSkgewogICAgICAgICAgICAkemVtX2Nv bnRhY3RfZmxhZ3NbJ2Nsc18nIC4gJGNsYXNzS2V5XSA9ICRjbGFzc1ZhbHVlOwogICAgICAg IH0KICAgIH0KCiAgICAvLyBUaGUgJHplbV9jb250YWN0X2ZsYWdzWyd0aGlzX2Zvcm0nXSBn bG9iYWwgaXMgc2V0IGlmIGFuIGlkIGlzIHN1cHBsaWVkIGZvciB0aGUgPGZvcm0+LgogICAg Ly8gVGhpcyB2YWx1ZSB0aGVuIGJlY29tZXMgdGhlIGRlZmF1bHQgdmFsdWUgZm9yIGFsbCBo dG1sX2Zvcm0gKGEuay5hLiBmb3JtPSkKICAgIC8vIGF0dHJpYnV0ZXMgZm9yIGFueSBpbnB1 dCB0YWdzIGluIHRoaXMgdGFnJ3MgY29udGFpbmVyLCBwcm92aWRpbmcgSFRNTDUgaXMgaW4g dXNlLgogICAgJHplbV9jb250YWN0X2ZsYWdzWyd0aGlzX2Zvcm0nXSA9ICd6Y3InIC4gJHpl bV9jb250YWN0X2Zvcm1faWQ7CgogICAgLy8gR2xvYmFsIHRvZ2dsZSBmb3IgcmVxdWlyZWQg YXR0cmlidXRlLgogICAgJHplbV9jb250YWN0X2ZsYWdzWydyZXF1aXJlZCddID0gJHJlcXVp cmVkOwoKICAgICRub3cgPSB0aW1lKCk7CiAgICAkbm93X2RhdGUgPSBkYXRlKCdZLW0tZCBI Omk6cycsICRub3cpOwoKICAgICRleHBpcmUgPSBhYnMoYXNzZXJ0X2ludCgkZXhwaXJlKSk7 CgogICAgc3RhdGljICRoZWFkZXJzX3NlbnQgPSBmYWxzZTsKICAgIGlmICghJGhlYWRlcnNf c2VudCkgewogICAgICAgIGhlYWRlcignTGFzdC1Nb2RpZmllZDogJyAuIGdtZGF0ZSgnRCwg ZCBNIFkgSDppOnMnLCAkbm93IC0gKDM2MDAgKiAyNCAqIDcpKSAuICcgR01UJyk7CiAgICAg ICAgaGVhZGVyKCdFeHBpcmVzOiAnIC4gZ21kYXRlKCdELCBkIE0gWSBIOmk6cycsICRub3cg KyAkZXhwaXJlKSAuICcgR01UJyk7CiAgICAgICAgaGVhZGVyKCdDYWNoZS1Db250cm9sOiBu by1jYWNoZSwgbXVzdC1yZXZhbGlkYXRlJyk7CiAgICAgICAgJGhlYWRlcnNfc2VudCA9IHRy dWU7CiAgICB9CgogICAgJG5vbmNlID0gZG9TbGFzaChwcygnemVtX2NvbnRhY3Rfbm9uY2Un KSk7CiAgICAkcmVub25jZSA9IGZhbHNlOwoKICAgIGlmICgkemVtX2NvbnRhY3Rfc3VibWl0 KSB7CiAgICAgICAgLy8gQ291bGQgdXNlICJpbnRlcnZhbCAkZXhwaXJlIHNlY29uZCIgYnV0 IG11bHRpcGxlIHplbV9jb250YWN0IGZvcm1zIGNvdWxkIGRlbGV0ZSBkYXRhCiAgICAgICAg Ly8gdGhhdCBtaWdodCBiZSBpbiB1c2UgYnkgb3RoZXIgZm9ybXMuCiAgICAgICAgLy8gVE9E TzogdXNlIG1heCg2MDAsICRleHBpcmUpPyBOb3QgcGVyZmVjdCwgYnV0IGVuc3VyZXMgYSBz YWZlIG1pbmltdW0gZGVsZXRpb24gcmF0ZS4KICAgICAgICBzYWZlX2RlbGV0ZSgndHhwX2Rp c2N1c3Nfbm9uY2UnLCAiaXNzdWVfdGltZSA8IGRhdGVfc3ViKCckbm93X2RhdGUnLCBpbnRl cnZhbCAxMCBtaW51dGUpIik7CiAgICAgICAgaWYgKCRycyA9IHNhZmVfcm93KCd1c2VkJywg J3R4cF9kaXNjdXNzX25vbmNlJywgIm5vbmNlID0gJyRub25jZSciKSkgewogICAgICAgICAg ICBpZiAoJHJzWyd1c2VkJ10pIHsKICAgICAgICAgICAgICAgIHVuc2V0KCR6ZW1fY29udGFj dF9lcnJvcik7CiAgICAgICAgICAgICAgICAkemVtX2NvbnRhY3RfZXJyb3JbXSA9IGdUeHQo J3plbV9jb250YWN0X2Zvcm1fdXNlZCcpOwogICAgICAgICAgICAgICAgJHJlbm9uY2UgPSB0 cnVlOwogICAgICAgICAgICAgICAgJF9QT1NUID0gYXJyYXkoKTsKICAgICAgICAgICAgICAg ICRfUE9TVFsnemVtX2NvbnRhY3Rfc3VibWl0J10gPSB0cnVlOwogICAgICAgICAgICAgICAg JF9QT1NUWyd6ZW1fY29udGFjdF9mb3JtX2lkJ10gPSAkemVtX2NvbnRhY3RfZm9ybV9pZDsK ICAgICAgICAgICAgICAgICRfUE9TVFsnemVtX2NvbnRhY3Rfbm9uY2UnXSA9ICRub25jZTsK ICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICR6ZW1fY29udGFj dF9lcnJvcltdID0gZ1R4dCgnemVtX2NvbnRhY3RfZm9ybV9leHBpcmVkJyk7CiAgICAgICAg ICAgICRyZW5vbmNlID0gdHJ1ZTsKICAgICAgICB9CiAgICB9CgogICAgaWYgKCR6ZW1fY29u dGFjdF9zdWJtaXQgJiYgJG5vbmNlICYmICEkcmVub25jZSkgewogICAgICAgICR6ZW1fY29u dGFjdF9ub25jZSA9ICRub25jZTsKICAgIH0gZWxzZWlmICghJHNob3dfZXJyb3IgfHwgJHNo b3dfaW5wdXQpIHsKICAgICAgICAkemVtX2NvbnRhY3Rfbm9uY2UgPSBtZDUodW5pcWlkKHJh bmQoKSwgdHJ1ZSkpOwogICAgICAgIHNhZmVfaW5zZXJ0KCd0eHBfZGlzY3Vzc19ub25jZScs ICJpc3N1ZV90aW1lID0gJyIgLiAkbm93X2RhdGUgLiAiJywgbm9uY2UgPSAnJHplbV9jb250 YWN0X25vbmNlJyIpOwogICAgfQoKICAgICRmb3JtID0gKCRmb3JtKSA/IGZldGNoX2Zvcm0o JGZvcm0pIDogJHRoaW5nOwoKICAgIGlmIChlbXB0eSgkZm9ybSkpIHsKICAgICAgICAkZm9y bSA9ICcKPHR4cDp6ZW1fY29udGFjdF90ZXh0IGxhYmVsPSInLmdUeHQoJ3plbV9jb250YWN0 X25hbWUnKS4nIiAvPjxiciAvPgo8dHhwOnplbV9jb250YWN0X2VtYWlsIC8+PGJyIC8+Jy4K KCRzZW5kX2FydGljbGUgPyAnPHR4cDp6ZW1fY29udGFjdF9lbWFpbCBzZW5kX2FydGljbGU9 IjEiIGxhYmVsPSInLmdUeHQoJ3plbV9jb250YWN0X3JlY2lwaWVudCcpLiciIC8+PGJyIC8+ JyA6ICcnKS4KJzx0eHA6emVtX2NvbnRhY3RfdGV4dGFyZWEgLz48YnIgLz4KPHR4cDp6ZW1f Y29udGFjdF9zdWJtaXQgLz4KJzsKICAgIH0KCiAgICAkZm9ybSA9IHBhcnNlKCRmb3JtKTsK CiAgICAvLyBQZXJmb3JtIGFnZ3JlZ2F0ZSBmdW5jdGlvbnMgZm9yIGNoZWNraW5nIHJhZGlv IHNldHMuCiAgICBpZiAoJHplbV9jb250YWN0X3N1Ym1pdCkgewogICAgICAgIHplbV9jb250 YWN0X2dyb3VwX3ZhbGlkYXRlKCk7CiAgICB9CgogICAgaWYgKCR0b19mb3JtKSB7CiAgICAg ICAgJHRvID0gcGFyc2VfZm9ybSgkdG9fZm9ybSk7CiAgICB9CgogICAgaWYgKCEkdG8gJiYg ISRzZW5kX2FydGljbGUpIHsKICAgICAgICByZXR1cm4gZ1R4dCgnemVtX2NvbnRhY3RfdG9f bWlzc2luZycpOwogICAgfQoKICAgICRvdXQgPSAnJzsKCiAgICBpZiAoISR6ZW1fY29udGFj dF9zdWJtaXQpIHsKICAgICAgICAvLyBEb24ndCBzaG93IGVycm9ycyBvciBzZW5kIG1haWwu CiAgICB9IGVsc2VpZiAoIWVtcHR5KCR6ZW1fY29udGFjdF9lcnJvcikpIHsKICAgICAgICBp ZiAoJHNob3dfZXJyb3IgfHwgISRzaG93X2lucHV0KSB7CiAgICAgICAgICAgICRvdXQgLj0g bi5kb1dyYXAoYXJyYXlfdW5pcXVlKCR6ZW1fY29udGFjdF9lcnJvciksICd1bCcsICdsaScs ICR6ZW1fY29udGFjdF9mbGFnc1snY2xzX3dyYXBwZXInXSkubjsKCiAgICAgICAgICAgIGlm ICghJHNob3dfaW5wdXQpIHsKICAgICAgICAgICAgICAgIHJldHVybiAkb3V0OwogICAgICAg ICAgICB9CiAgICAgICAgfQogICAgfSBlbHNlaWYgKCRzaG93X2lucHV0ICYmIGlzX2FycmF5 KCR6ZW1fY29udGFjdF9mb3JtKSkgewogICAgICAgIC8vIExvYWQgYW5kIGNoZWNrIHNwYW0g cGx1Z2lucy4KICAgICAgICBjYWxsYmFja19ldmVudCgnemVtY29udGFjdC5zdWJtaXQnKTsK ICAgICAgICAkZXZhbHVhdGlvbiA9JiBnZXRfemVtY29udGFjdF9ldmFsdWF0b3IoKTsKICAg ICAgICAkY2xlYW4gPSAkZXZhbHVhdGlvbi0+Z2V0X3plbWNvbnRhY3Rfc3RhdHVzKCk7Cgog ICAgICAgIGlmICgkY2xlYW4gIT0gMCkgewogICAgICAgICAgICByZXR1cm4gZ1R4dCgnemVt X2NvbnRhY3Rfc3BhbScpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRmcm9tX2Zvcm0pIHsK ICAgICAgICAgICAgJGZyb20gPSBwYXJzZV9mb3JtKCRmcm9tX2Zvcm0pOwogICAgICAgIH0K CiAgICAgICAgaWYgKCRzdWJqZWN0X2Zvcm0pIHsKICAgICAgICAgICAgJHN1YmplY3QgPSBw YXJzZV9mb3JtKCRzdWJqZWN0X2Zvcm0pOwogICAgICAgIH0KCiAgICAgICAgJHNlcCA9IGlz X3dpbmRvd3MoKSA/ICJcclxuIiA6ICJcbiI7CiAgICAgICAgJG1zZyA9IGFycmF5KCk7CiAg ICAgICAgJGZpZWxkcyA9IGFycmF5KCk7CgogICAgICAgIGZvcmVhY2ggKCR6ZW1fY29udGFj dF9sYWJlbHMgYXMgJG5hbWUgPT4gJGxhYmVsKSB7CiAgICAgICAgICAgIGlmICghaXNfYXJy YXkoJHplbV9jb250YWN0X3ZhbHVlc1skbmFtZV0pKSB7CiAgICAgICAgICAgICAgICBpZiAo dHJpbSgkemVtX2NvbnRhY3RfdmFsdWVzWyRuYW1lXSkgPT09IGZhbHNlKSB7CiAgICAgICAg ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAg ICAgJG1zZ1tdID0gJGxhYmVsIC4gJzogJyAuICR6ZW1fY29udGFjdF92YWx1ZXNbJG5hbWVd OwogICAgICAgICAgICB9CgogICAgICAgICAgICAkZmllbGRzWyRuYW1lXSA9ICR6ZW1fY29u dGFjdF92YWx1ZXNbJG5hbWVdOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRzZW5kX2FydGlj bGUpIHsKICAgICAgICAgICAgZ2xvYmFsICR0aGlzYXJ0aWNsZTsKCiAgICAgICAgICAgICRz dWJqZWN0ID0gc3RyX3JlcGxhY2UoJyYjMzg7JywgJyYnLCAkdGhpc2FydGljbGVbJ3RpdGxl J10pOwogICAgICAgICAgICAkbXNnW10gPSBwZXJtbGlua3VybCgkdGhpc2FydGljbGUpOwog ICAgICAgICAgICAkbXNnW10gPSAkc3ViamVjdDsKICAgICAgICAgICAgJHNfYXIgPSBhcnJh eSgnJiM4MjE2OycsICcmIzgyMTc7JywgJyYjODIyMDsnLCAnJiM4MjIxOycsICcmIzgyMTc7 JywgJyYjODI0MjsnLCAnJiM4MjQzOycsICcmIzgyMzA7JywgJyYjODIxMTsnLCAnJiM4MjEy OycsICcmIzIxNTsnLCAnJiM4NDgyOycsICcmIzE3NDsnLCAnJiMxNjk7JywgJyZsdDsnLCAn Jmd0OycsICcmcXVvdDsnLCAnJmFtcDsnLCAnJiMzODsnLCAiXHQiLCAnPHAnKTsKCiAgICAg ICAgICAgIGlmICgkb3ZlcnJpZGVfZW1haWxfY2hhcnNldCkgewogICAgICAgICAgICAgICAg JHJfYXIgPSBhcnJheSgiJyIsICInIiwgJyInLCAnIicsICInIiwgIiciLCAnIicsICcuLi4n LCAnLScsICctLScsICd4JywgJ1t0bV0nLCAnKHIpJywgJyhjKScsICc8JywgJz4nLCAnIics ICcmJywgJyYnLCAnICcsICJcbjxwIik7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg ICAgICAgICAkcl9hciA9IGFycmF5KCfigJgnLCAn4oCZJywgJ+KAnCcsICfigJ0nLCAn4oCZ JywgJz8nLCAnPycsICfigKYnLCAn4oCTJywgJ+KAlCcsICfDlycsICfihKInLCAnwq4nLCAn wqknLCAnPCcsICc+JywgJyInLCAnJicsICcmJywgJyAnLCAiXG48cCIpOwogICAgICAgICAg ICB9CgogICAgICAgICAgICAkbXNnW10gPSB0cmltKHN0cmlwX3RhZ3Moc3RyX3JlcGxhY2Uo JHNfYXIsICRyX2FyLCAodHJpbShzdHJpcF90YWdzKCR0aGlzYXJ0aWNsZVsnZXhjZXJwdCdd KSkgPyAkdGhpc2FydGljbGVbJ2V4Y2VycHQnXSA6ICR0aGlzYXJ0aWNsZVsnYm9keSddKSkp KTsKCiAgICAgICAgICAgIGlmIChlbXB0eSgkemVtX2NvbnRhY3RfcmVjaXBpZW50KSkgewog ICAgICAgICAgICAgICAgcmV0dXJuIGdUeHQoJ3plbV9jb250YWN0X2ZpZWxkX21pc3Npbmcn LCBhcnJheSgne2ZpZWxkfScgPT4gZ1R4dCgnemVtX2NvbnRhY3RfcmVjaXBpZW50JykpKTsK ICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICR0byA9ICR6ZW1fY29udGFj dF9yZWNpcGllbnQ7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICRtc2cgPSBp bXBsb2RlKCJcblxuIiwgJG1zZyk7CgogICAgICAgIGlmICgkYm9keV9mb3JtKSB7CiAgICAg ICAgICAgICRtc2cgPSBwYXJzZV9mb3JtKCRib2R5X2Zvcm0pOwogICAgICAgIH0KCiAgICAg ICAgJG1zZyA9IHN0cl9yZXBsYWNlKGFycmF5KCJcclxuIiwgIlxyIiwgIlxuIiksIGFycmF5 KCJcbiIsICJcbiIsICRzZXApLCAkbXNnKTsKCiAgICAgICAgJHJlcGx5ICAgPSB6ZW1fY29u dGFjdF9zdHJpcCgkZnJvbSA/ICR6ZW1fY29udGFjdF9mcm9tIDogJycpOwogICAgICAgICRm cm9tICAgID0gemVtX2NvbnRhY3Rfc3RyaXAoJGZyb20gPyAkZnJvbSA6ICR6ZW1fY29udGFj dF9mcm9tKTsKICAgICAgICAkdG8gICAgICA9IHplbV9jb250YWN0X3N0cmlwKCR0byk7CiAg ICAgICAgJHN1YmplY3QgPSB6ZW1fY29udGFjdF9zdHJpcCgkc3ViamVjdCk7CiAgICAgICAg JG1zZyAgICAgPSB6ZW1fY29udGFjdF9zdHJpcCgkbXNnLCBmYWxzZSk7CgogICAgICAgIGlm ICgkb3ZlcnJpZGVfZW1haWxfY2hhcnNldCkgewogICAgICAgICAgICAkY2hhcnNldCA9ICdJ U08tODg1OS0xJzsKICAgICAgICAgICAgJHN1YmplY3QgPSB1dGY4X2RlY29kZSgkc3ViamVj dCk7CiAgICAgICAgICAgICRtc2cgICAgID0gdXRmOF9kZWNvZGUoJG1zZyk7CiAgICAgICAg fSBlbHNlIHsKICAgICAgICAgICAgJGNoYXJzZXQgPSAnVVRGLTgnOwogICAgICAgIH0KCiAg ICAgICAgLy8gVE9ETzogZnVuY3Rpb24gZGVwcmVjYXRlZCBpbiA0LjYuMC4KICAgICAgICAk c3ViamVjdCA9IGVuY29kZV9tYWlsaGVhZGVyKCRzdWJqZWN0LCAndGV4dCcpOwoKICAgICAg ICAkaGVhZGVycyA9IGFycmF5KAogICAgICAgICAgICAnZnJvbScgICAgICAgICAgPT4gJGZy b20sCiAgICAgICAgICAgICdzZXBhcmF0b3InICAgICA9PiAkc2VwLAogICAgICAgICAgICAn cmVwbHknICAgICAgICAgPT4gJHJlcGx5LAogICAgICAgICAgICAnY2hhcnNldCcgICAgICAg PT4gJGNoYXJzZXQsCiAgICAgICAgICAgICdjb250ZW50X3R5cGUnICA9PiAndGV4dC9wbGFp bicsCiAgICAgICAgICAgICd4ZmVyX2VuY29kaW5nJyA9PiAnOGJpdCcsCiAgICAgICAgKTsK CiAgICAgICAgc2FmZV91cGRhdGUoJ3R4cF9kaXNjdXNzX25vbmNlJywgInVzZWQgPSAnMScs IGlzc3VlX3RpbWUgPSAnJG5vd19kYXRlJyIsICJub25jZSA9ICckbm9uY2UnIik7CgogICAg ICAgIGlmICh6ZW1fY29udGFjdF9kZWxpdmVyKCR0bywgJHN1YmplY3QsICRtc2csICRoZWFk ZXJzLCAkZmllbGRzLCBhcnJheSgnaXNDb3B5JyA9PiBmYWxzZSkpKSB7CiAgICAgICAgICAg ICRfUE9TVCA9IGFycmF5KCk7CgogICAgICAgICAgICBpZiAoJGNvcHlzZW5kZXIgJiYgJHpl bV9jb250YWN0X2Zyb20pIHsKICAgICAgICAgICAgICAgIHplbV9jb250YWN0X2RlbGl2ZXIo emVtX2NvbnRhY3Rfc3RyaXAoJHplbV9jb250YWN0X2Zyb20pLCAkc3ViamVjdCwgJG1zZywg JGhlYWRlcnMsICRmaWVsZHMsIGFycmF5KCdpc0NvcHknID0+IHRydWUpKTsKICAgICAgICAg ICAgfQoKICAgICAgICAgICAgaWYgKCRyZWRpcmVjdCkgewogICAgICAgICAgICAgICAgd2hp bGUgKEBvYl9lbmRfY2xlYW4oKSk7CiAgICAgICAgICAgICAgICAkdXJpID0gaHUubHRyaW0o JHJlZGlyZWN0LCcvJyk7CgogICAgICAgICAgICAgICAgaWYgKGVtcHR5KCRfU0VSVkVSWydG Q0dJX1JPTEUnXSkgJiYgZW1wdHkoJF9FTlZbJ0ZDR0lfUk9MRSddKSkgewogICAgICAgICAg ICAgICAgICAgIHR4cF9zdGF0dXNfaGVhZGVyKCczMDMgU2VlIE90aGVyJyk7CiAgICAgICAg ICAgICAgICAgICAgaGVhZGVyKCdMb2NhdGlvbjogJy4kdXJpKTsKICAgICAgICAgICAgICAg ICAgICBoZWFkZXIoJ0Nvbm5lY3Rpb246IGNsb3NlJyk7CiAgICAgICAgICAgICAgICAgICAg aGVhZGVyKCdDb250ZW50LUxlbmd0aDogMCcpOwogICAgICAgICAgICAgICAgfSBlbHNlIHsK ICAgICAgICAgICAgICAgICAgICAkdXJpID0gdHhwc3BlY2lhbGNoYXJzKCR1cmkpOwogICAg ICAgICAgICAgICAgICAgICRyZWZyZXNoID0gZ1R4dCgnemVtX2NvbnRhY3RfcmVmcmVzaCcp OwogICAgICAgICAgICAgICAgICAgIGVjaG8gPDw8RU5ECjwhRE9DVFlQRSBodG1sIFBVQkxJ QyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3 LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS10cmFuc2l0aW9uYWwuZHRkIj4KPGh0bWwg eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIHhtbDpsYW5nPSJlbiIgbGFu Zz0iZW4iPgo8aGVhZD4KICAgIDx0aXRsZT4kc2l0ZW5hbWU8L3RpdGxlPgogICAgPG1ldGEg aHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9 dXRmLTgiIC8+CiAgICA8bWV0YSBodHRwLWVxdWl2PSJyZWZyZXNoIiBjb250ZW50PSIwO3Vy bD0kdXJpIiAvPgo8L2hlYWQ+Cjxib2R5Pgo8YSBocmVmPSIkdXJpIj4kcmVmcmVzaDwvYT4K PC9ib2R5Pgo8L2h0bWw+CkVORDsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAg ICBleGl0OwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgcmV0dXJuICc8 ZGl2IGNsYXNzPSInIC4gJHplbV9jb250YWN0X2ZsYWdzWydjbHNfdGhhbmtzJ10gLiAnIiBp ZD0iemNyJy4kemVtX2NvbnRhY3RfZm9ybV9pZC4nIj4nIC4KICAgICAgICAgICAgICAgICAg ICAoJHRoYW5rc19mb3JtID8gcGFyc2VfZm9ybSgkdGhhbmtzX2Zvcm0pIDogJHRoYW5rcykg LgogICAgICAgICAgICAgICAgICAgICc8L2Rpdj4nOwogICAgICAgICAgICB9CiAgICAgICAg fSBlbHNlIHsKICAgICAgICAgICAgLy8gVE9ETzogY29uc2lkZXIgYWxsb3dpbmcgemVtX2Nv bnRhY3RfZXJyb3IgdG8gYmUgZGlzcGxheWVkIGhlcmUgaWYgdGhpcmQgcGFydHkgcGx1Z2lu CiAgICAgICAgICAgIC8vIHJldHVybmVkIGFueXRoaW5nIG1vcmUgc3BlY2lmaWMuCiAgICAg ICAgICAgICRvdXQgLj0gZ3JhZihnVHh0KCd6ZW1fY29udGFjdF9tYWlsX3NvcnJ5JykpOwog ICAgICAgIH0KICAgIH0KCiAgICBpZiAoJHNob3dfaW5wdXQgJiYgISRzZW5kX2FydGljbGUg fHwgZ3BzKCd6ZW1fY29udGFjdF9zZW5kX2FydGljbGUnKSkgewogICAgICAgICRvdXQgPSAn PGZvcm0gbWV0aG9kPSJwb3N0IicgLiAoKCEkc2hvd19lcnJvciAmJiAkemVtX2NvbnRhY3Rf ZXJyb3IpID8gJycgOiAnIGlkPSJ6Y3InIC4gJHplbV9jb250YWN0X2Zvcm1faWQgLiAnIicp IC4KICAgICAgICAgICAgKCRjbGFzcyA/ICcgY2xhc3M9IicgLiAkY2xhc3MgLiAnIicgOiAn JykgLgogICAgICAgICAgICAoJGJyb3dzZXJfdmFsaWRhdGUgPyAnJyA6ICcgbm92YWxpZGF0 ZScpIC4KICAgICAgICAgICAgJyBhY3Rpb249IicgLiB0eHBzcGVjaWFsY2hhcnMoc2VydmVy U2V0KCdSRVFVRVNUX1VSSScpKSAuICcjemNyJyAuICR6ZW1fY29udGFjdF9mb3JtX2lkIC4g JyI+JyAuCiAgICAgICAgICAgICgkbGFiZWwgPyBuIC4gJzxmaWVsZHNldD4nIDogbiAuICc8 ZGl2PicpIC4KICAgICAgICAgICAgKCRsYWJlbCA/IG4gLiAnPGxlZ2VuZD4nIC4gdHhwc3Bl Y2lhbGNoYXJzKCRsYWJlbCkgLiAnPC9sZWdlbmQ+JyA6ICcnKSAuCiAgICAgICAgICAgICRv dXQgLgogICAgICAgICAgICBuIC4gJzxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InplbV9j b250YWN0X25vbmNlIiB2YWx1ZT0iJyAuICR6ZW1fY29udGFjdF9ub25jZSAuICciIC8+JyAu CiAgICAgICAgICAgIG4gLiAnPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iemVtX2NvbnRh Y3RfZm9ybV9pZCIgdmFsdWU9IicgLiAkemVtX2NvbnRhY3RfZm9ybV9pZCAuICciIC8+JyAu CiAgICAgICAgICAgICRmb3JtIC4KICAgICAgICAgICAgY2FsbGJhY2tfZXZlbnQoJ3plbWNv bnRhY3QuZm9ybScpIC4KICAgICAgICAgICAgKCRsYWJlbCA/IChuIC4gJzwvZmllbGRzZXQ+ JykgOiAobiAuICc8L2Rpdj4nKSkgLgogICAgICAgICAgICBuIC4gJzwvZm9ybT4nOwoKICAg ICAgICBjYWxsYmFja19ldmVudF9yZWYoJ3plbWNvbnRhY3QucmVuZGVyJywgJycsIDAsICRv dXQsICRhdHRzKTsKCiAgICAgICAgcmV0dXJuICRvdXQ7CiAgICB9CgogICAgcmV0dXJuICcn Owp9CgovKioKICogVGFnOiBSZW5kZXIgYSB0ZXh0IGlucHV0IGZpZWxkLgogKgogKiBNYW55 IGRpZmZlcmVudCAkdHlwZXMgYXJlIGFsbG93ZWQuIEluIGZhY3QsIHRoZSAkdHlwZSBhdHRy aWJ1dGUgaXMgbm90CiAqIHJlc3RyaWN0ZWQgaW4gYW55IHdheSB0byBhbGxvdyBmb3IgYW55 IGZ1dHVyZSB0eXBlcy4gVGhpcyBkb2VzIGJyaW5nIHNvbWUKICogZGV2ZWxvcGVyIHJlc3Bv bnNpYmlsaXR5IGlmIHlvdSB3aXNoIHlvdXIgZG9jdW1lbnQgdG8gdmFsaWRhdGUgYmVjYXVz ZQogKiBub3QgYWxsIGF0dHJpYnV0ZXMgd2lsbCBiZSB2YWxpZCBmb3IgYWxsIGlucHV0IHR5 cGVzLCBkZXNwaXRlIHRoZSBwbHVnaW4KICogZmFpdGhmdWxseSByZW5kZXJpbmcgd2hhdGV2 ZXIgYXR0cmlidXRlcyBpdCBpcyBnaXZlbi4KICoKICogQSBsb3Qgb2YgaW52YWxpZCBzaXR1 YXRpb25zIGFyZSByZWNvZ25pc2VkIChlLmcuIG9ubHkgcGVybWl0dGluZyBtYXgvbWluL3N0 ZXAKICogdG8gb2NjdXIgb24gJ251bWVyaWMnIGlucHV0IHR5cGVzKSBidXQgc29tZSBhcmUg bm90IGVhc2lseSB0cmFwcGFibGUgc28gdGhleQogKiBhcmUgbGVmdCB0byB1c2VyIGRpc2Ny ZXRpb24uCiAqCiAqIEBwYXJhbSAgYXJyYXkgICRhdHRzIFRhZyBhdHRyaWJ1dGVzCiAqIEBy ZXR1cm4gc3RyaW5nIEhUTUwKICovCmZ1bmN0aW9uIHplbV9jb250YWN0X3RleHQoJGF0dHMp CnsKICAgIGdsb2JhbCAkemVtX2NvbnRhY3RfZXJyb3IsICR6ZW1fY29udGFjdF9zdWJtaXQs ICR6ZW1fY29udGFjdF9mbGFnczsKCiAgICBleHRyYWN0KHplbV9jb250YWN0X2xBdHRzKGFy cmF5KAogICAgICAgICdhdXRvY29tcGxldGUnICAgPT4gJycsCiAgICAgICAgJ2JyZWFrJyAg ICAgICAgICA9PiBiciwKICAgICAgICAnY2xhc3MnICAgICAgICAgID0+ICd6ZW1UZXh0JywK ICAgICAgICAnZGVmYXVsdCcgICAgICAgID0+ICcnLAogICAgICAgICdodG1sX2Zvcm0nICAg ICAgPT4gJHplbV9jb250YWN0X2ZsYWdzWyd0aGlzX2Zvcm0nXSwKICAgICAgICAnaXNFcnJv cicgICAgICAgID0+ICcnLAogICAgICAgICdpbnB1dG1vZGUnICAgICAgPT4gJycsCiAgICAg ICAgJ2xhYmVsJyAgICAgICAgICA9PiBnVHh0KCd6ZW1fY29udGFjdF90ZXh0JyksCiAgICAg ICAgJ2xhYmVsX3Bvc2l0aW9uJyA9PiAnYmVmb3JlJywKICAgICAgICAnbWF4JyAgICAgICAg ICAgID0+IG51bGwsCiAgICAgICAgJ21pbicgICAgICAgICAgICA9PiBudWxsLAogICAgICAg ICduYW1lJyAgICAgICAgICAgPT4gJycsCiAgICAgICAgJ3BhdHRlcm4nICAgICAgICA9PiAn JywKICAgICAgICAncGxhY2Vob2xkZXInICAgID0+ICcnLAogICAgICAgICdyZXF1aXJlZCcg ICAgICAgPT4gJHplbV9jb250YWN0X2ZsYWdzWydyZXF1aXJlZCddLAogICAgICAgICdzaXpl JyAgICAgICAgICAgPT4gJycsCiAgICAgICAgJ3N0ZXAnICAgICAgICAgICA9PiAnJywKICAg ICAgICAndHlwZScgICAgICAgICAgID0+ICd0ZXh0JywKICAgICksICRhdHRzKSk7CgogICAg JGRvY3R5cGUgPSBnZXRfcHJlZignZG9jdHlwZScsICd4aHRtbCcpOwoKICAgICRkYXRldGlt ZV90eXBlcyA9IGFycmF5KAogICAgICAgICdkYXRlJywKICAgICAgICAnZGF0ZXRpbWUnLAog ICAgICAgICdkYXRldGltZS1sb2NhbCcsCiAgICAgICAgJ21vbnRoJywKICAgICAgICAndGlt ZScsCiAgICAgICAgJ3dlZWsnLAogICAgKTsKCiAgICAkbnVtZXJpY190eXBlcyA9IGFycmF5 KAogICAgICAgICdudW1iZXInLAogICAgICAgICdyYW5nZScsCiAgICApOwoKICAgICRpc19k YXRldGltZSA9IChpbl9hcnJheSgkdHlwZSwgJGRhdGV0aW1lX3R5cGVzKSk7CiAgICAkaXNf bnVtZXJpYyA9IChpbl9hcnJheSgkdHlwZSwgJG51bWVyaWNfdHlwZXMpKTsKCiAgICAvLyBE YXRlcyAvIHRpbWVzIGdldCBzcGVjaWFsIHRyZWF0bWVudDogbm8gZGVmYXVsdCBtaW4vbWF4 IGlmIG5vdCBzZXQgYnkgdGFnLgogICAgaWYgKCEkaXNfZGF0ZXRpbWUgJiYgJG1pbiA9PT0g bnVsbCkgewogICAgICAgICRtaW4gPSAwOwogICAgfQoKICAgIGlmICghJGlzX2RhdGV0aW1l ICYmICRtYXggPT09IG51bGwpIHsKICAgICAgICAkbWF4ID0gMTAwOwogICAgfQoKICAgIGlm IChlbXB0eSgkbmFtZSkpIHsKICAgICAgICAkbmFtZSA9IHplbV9jb250YWN0X2xhYmVsMm5h bWUoJGxhYmVsKTsKICAgIH0KCiAgICBpZiAoJHplbV9jb250YWN0X3N1Ym1pdCkgewogICAg ICAgICR2YWx1ZSA9IHRyaW0ocHMoJG5hbWUpKTsKICAgICAgICAkdXRmOGxlbiA9IHByZWdf bWF0Y2hfYWxsKCIvLi9zdSIsICR2YWx1ZSwgJHV0Zjhhcik7CiAgICAgICAgJGhsYWJlbCA9 IHR4cHNwZWNpYWxjaGFycygkbGFiZWwpOwogICAgICAgICRkYXRldGltZV9vayA9IHRydWU7 CgogICAgICAgIGlmICgkaXNfZGF0ZXRpbWUpIHsKICAgICAgICAgICAgJG1pbnZhbCA9ICRt aW47CiAgICAgICAgICAgICRtYXh2YWwgPSAkbWF4OwogICAgICAgICAgICAkY21wdmFsID0g JHZhbHVlOwoKICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICRkdCA9IG5ldyBE YXRlVGltZSgkY21wdmFsKTsKICAgICAgICAgICAgICAgICRjbXB2YWwgPSAkZHQtPmZvcm1h dCgnVScpOwoKICAgICAgICAgICAgICAgIGlmICgkbWluKSB7CiAgICAgICAgICAgICAgICAg ICAgJGR0ID0gbmV3IERhdGVUaW1lKCRtaW4pOwogICAgICAgICAgICAgICAgICAgICRtaW52 YWwgPSAkZHQtPmZvcm1hdCgnVScpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAg ICAgIGlmICgkbWF4KSB7CiAgICAgICAgICAgICAgICAgICAgJGR0ID0gbmV3IERhdGVUaW1l KCRtYXgpOwogICAgICAgICAgICAgICAgICAgICRtYXh2YWwgPSAkZHQtPmZvcm1hdCgnVScp OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gJGUp IHsKICAgICAgICAgICAgICAgICRkYXRldGltZV9vayA9IGZhbHNlOwogICAgICAgICAgICB9 CiAgICAgICAgfQoKICAgICAgICBpZiAoc3RybGVuKCR2YWx1ZSkpIHsKICAgICAgICAgICAg aWYgKCEkdXRmOGxlbikgewogICAgICAgICAgICAgICAgJHplbV9jb250YWN0X2Vycm9yW10g PSBnVHh0KCd6ZW1fY29udGFjdF9pbnZhbGlkX3V0ZjgnLCBhcnJheSgne2ZpZWxkfScgPT4g JGhsYWJlbCkpOwogICAgICAgICAgICAgICAgJGlzRXJyb3IgPSAkemVtX2NvbnRhY3RfZmxh Z3NbJ2Nsc19lbGVtZW50J107CiAgICAgICAgICAgIH0gZWxzZWlmICgkaXNfZGF0ZXRpbWUg JiYgISRkYXRldGltZV9vaykgewogICAgICAgICAgICAgICAgJHplbV9jb250YWN0X2Vycm9y W10gPSBnVHh0KCd6ZW1fY29udGFjdF9mb3JtYXRfd2FybmluZycsIGFycmF5KCd7ZmllbGR9 JyA9PiAkaGxhYmVsLCAne3ZhbHVlfScgPT4gJHZhbHVlKSk7CiAgICAgICAgICAgICAgICAk aXNFcnJvciA9ICR6ZW1fY29udGFjdF9mbGFnc1snY2xzX2VsZW1lbnQnXTsKICAgICAgICAg ICAgfSBlbHNlaWYgKCRtaW4gJiYgISRpc19udW1lcmljICYmICEkaXNfZGF0ZXRpbWUgJiYg JHV0ZjhsZW4gPCAkbWluKSB7CiAgICAgICAgICAgICAgICAkemVtX2NvbnRhY3RfZXJyb3Jb XSA9IGdUeHQoJ3plbV9jb250YWN0X21pbl93YXJuaW5nJywgYXJyYXkoJ3tmaWVsZH0nID0+ ICRobGFiZWwsICd7dmFsdWV9JyA9PiAkbWluKSk7CiAgICAgICAgICAgICAgICAkaXNFcnJv ciA9ICR6ZW1fY29udGFjdF9mbGFnc1snY2xzX2VsZW1lbnQnXTsKICAgICAgICAgICAgfSBl bHNlaWYgKCRtYXggJiYgISRpc19udW1lcmljICYmICEkaXNfZGF0ZXRpbWUgJiYgJHV0Zjhs ZW4gPiAkbWF4KSB7CiAgICAgICAgICAgICAgICAkemVtX2NvbnRhY3RfZXJyb3JbXSA9IGdU eHQoJ3plbV9jb250YWN0X21heF93YXJuaW5nJywgYXJyYXkoJ3tmaWVsZH0nID0+ICRobGFi ZWwsICd7dmFsdWV9JyA9PiAkbWF4KSk7CiAgICAgICAgICAgICAgICAkaXNFcnJvciA9ICR6 ZW1fY29udGFjdF9mbGFnc1snY2xzX2VsZW1lbnQnXTsKICAgICAgICAgICAgfSBlbHNlaWYg KCRtaW4gJiYgJGlzX2RhdGV0aW1lICYmICRjbXB2YWwgPCAkbWludmFsKSB7CiAgICAgICAg ICAgICAgICAkemVtX2NvbnRhY3RfZXJyb3JbXSA9IGdUeHQoJ3plbV9jb250YWN0X21pbnZh bF93YXJuaW5nJywgYXJyYXkoJ3tmaWVsZH0nID0+ICRobGFiZWwsICd7dmFsdWV9JyA9PiAk bWluKSk7CiAgICAgICAgICAgICAgICAkaXNFcnJvciA9ICR6ZW1fY29udGFjdF9mbGFnc1sn Y2xzX2VsZW1lbnQnXTsKICAgICAgICAgICAgfSBlbHNlaWYgKCRtYXggJiYgJGlzX2RhdGV0 aW1lICYmICRjbXB2YWwgPiAkbWF4dmFsKSB7CiAgICAgICAgICAgICAgICAkemVtX2NvbnRh Y3RfZXJyb3JbXSA9IGdUeHQoJ3plbV9jb250YWN0X21heHZhbF93YXJuaW5nJywgYXJyYXko J3tmaWVsZH0nID0+ICRobGFiZWwsICd7dmFsdWV9JyA9PiAkbWF4KSk7CiAgICAgICAgICAg ICAgICAkaXNFcnJvciA9ICR6ZW1fY29udGFjdF9mbGFnc1snY2xzX2VsZW1lbnQnXTsKICAg ICAgICAgICAgfSBlbHNlaWYgKCRtaW4gJiYgJGlzX251bWVyaWMgJiYgJHZhbHVlIDwgJG1p bikgewogICAgICAgICAgICAgICAgJHplbV9jb250YWN0X2Vycm9yW10gPSBnVHh0KCd6ZW1f Y29udGFjdF9taW52YWxfd2FybmluZycsIGFycmF5KCd7ZmllbGR9JyA9PiAkaGxhYmVsLCAn e3ZhbHVlfScgPT4gJG1pbikpOwogICAgICAgICAgICAgICAgJGlzRXJyb3IgPSAkemVtX2Nv bnRhY3RfZmxhZ3NbJ2Nsc19lbGVtZW50J107CiAgICAgICAgICAgIH0gZWxzZWlmICgkbWF4 ICYmICRpc19udW1lcmljICYmICR2YWx1ZSA+ICRtYXgpIHsKICAgICAgICAgICAgICAgICR6 ZW1fY29udGFjdF9lcnJvcltdID0gZ1R4dCgnemVtX2NvbnRhY3RfbWF4dmFsX3dhcm5pbmcn LCBhcnJheSgne2ZpZWxkfScgPT4gJGhsYWJlbCwgJ3t2YWx1ZX0nID0+ICRtYXgpKTsKICAg ICAgICAgICAgICAgICRpc0Vycm9yID0gJHplbV9jb250YWN0X2ZsYWdzWydjbHNfZWxlbWVu dCddOwogICAgICAgICAgICB9IGVsc2VpZiAoJHBhdHRlcm4gYW5kICFwcmVnX21hdGNoKCcv XicuJHBhdHRlcm4uJyQvJywgJHZhbHVlKSkgewogICAgICAgICAgICAgICAgJHplbV9jb250 YWN0X2Vycm9yW10gPSBnVHh0KCd6ZW1fY29udGFjdF9wYXR0ZXJuX3dhcm5pbmcnLCBhcnJh eSgne2ZpZWxkfScgPT4gJGhsYWJlbCwgJ3t2YWx1ZX0nID0+ICRwYXR0ZXJuKSk7CiAgICAg ICAgICAgICAgICAkaXNFcnJvciA9ICR6ZW1fY29udGFjdF9mbGFnc1snY2xzX2VsZW1lbnQn XTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHplbV9jb250YWN0X3N0 b3JlKCRuYW1lLCAkbGFiZWwsICR2YWx1ZSk7CiAgICAgICAgICAgIH0KICAgICAgICB9IGVs c2VpZiAoJHJlcXVpcmVkKSB7CiAgICAgICAgICAgICR6ZW1fY29udGFjdF9lcnJvcltdID0g Z1R4dCgnemVtX2NvbnRhY3RfZmllbGRfbWlzc2luZycsIGFycmF5KCd7ZmllbGR9JyA9PiAk aGxhYmVsKSk7CiAgICAgICAgICAgICRpc0Vycm9yID0gJHplbV9jb250YWN0X2ZsYWdzWydj bHNfZWxlbWVudCddOwogICAgICAgIH0KICAgIH0gZWxzZSB7CiAgICAgICAgJHZhbHVlID0g JGRlZmF1bHQ7CiAgICB9CgogICAgLy8gQ29yZSBhdHRyaWJ1dGVzLgogICAgJGF0dHIgPSB6 ZW1fY29udGFjdF9idWlsZF9hdHRzKGFycmF5KAogICAgICAgICdpZCcgICAgPT4gKGlzc2V0 KCRpZCkgPyAkaWQgOiAkbmFtZSksCiAgICAgICAgJ25hbWUnICA9PiAkbmFtZSwKICAgICAg ICAndHlwZScgID0+ICR0eXBlLAogICAgICAgICd2YWx1ZScgPT4gJHZhbHVlLAogICAgKSk7 CgogICAgaWYgKCRzaXplICYmICEkaXNfbnVtZXJpYykgewogICAgICAgICRhdHRyWydzaXpl J10gPSAnc2l6ZT0iJyAuIGludHZhbCgkc2l6ZSkgLiAnIic7CiAgICB9CgogICAgaWYgKCRt aW4gJiYgISRpc19udW1lcmljKSB7CiAgICAgICAgJGF0dHJbJ21pbmxlbmd0aCddID0gJ21p bmxlbmd0aD0iJyAuIGludHZhbCgkbWluKSAuICciJzsKICAgIH0KCiAgICBpZiAoJG1heCAm JiAhJGlzX251bWVyaWMpIHsKICAgICAgICAkYXR0clsnbWF4bGVuZ3RoJ10gPSAnbWF4bGVu Z3RoPSInIC4gaW50dmFsKCRtYXgpIC4gJyInOwogICAgfQoKICAgIGlmICgkZG9jdHlwZSAh PT0gJ3hodG1sJyAmJiAoJGlzX251bWVyaWMgfHwgJGlzX2RhdGV0aW1lKSkgewogICAgICAg IC8vIE5vdCB1c2luZyBpbnR2YWwoKSBiZWNhdXNlIG1pbi9tYXgvc3RlcCBjYW4gYmUgZmxv YXRpbmcgcG9pbnQgdmFsdWVzLgogICAgICAgICRhdHRyICs9IHplbV9jb250YWN0X2J1aWxk X2F0dHMoYXJyYXkoCiAgICAgICAgICAgICdtaW4nICA9PiAkbWluLAogICAgICAgICAgICAn bWF4JyAgPT4gJG1heCwKICAgICAgICAgICAgJ3N0ZXAnID0+ICRzdGVwLAogICAgICAgICkp OwogICAgfQoKICAgIC8vIEhUTUw1IGF0dHJpYnV0ZXMuCiAgICAkcmVxdWlyZWQgPSAoJHJl cXVpcmVkKSA/ICdyZXF1aXJlZCcgOiAnJzsKICAgIGlmICgkZG9jdHlwZSAhPT0gJ3hodG1s JykgewogICAgICAgICRhdHRyICs9IHplbV9jb250YWN0X2J1aWxkX2F0dHMoYXJyYXkoCiAg ICAgICAgICAgICdhdXRvY29tcGxldGUnID0+ICRhdXRvY29tcGxldGUsCiAgICAgICAgICAg ICdmb3JtJyAgICAgICAgID0+ICRodG1sX2Zvcm0sCiAgICAgICAgICAgICdpbnB1dG1vZGUn ICAgID0+ICRpbnB1dG1vZGUsCiAgICAgICAgICAgICdwYXR0ZXJuJyAgICAgID0+ICRwYXR0 ZXJuLAogICAgICAgICAgICAncGxhY2Vob2xkZXInICA9PiAkcGxhY2Vob2xkZXIsCiAgICAg ICAgICAgICdyZXF1aXJlZCcgICAgID0+ICRyZXF1aXJlZCwKICAgICAgICApKTsKCiAgICAg ICAgaWYgKCRpc0Vycm9yKSB7CiAgICAgICAgICAgICRhdHRyICs9IHplbV9jb250YWN0X2J1 aWxkX2F0dHMoYXJyYXkoCiAgICAgICAgICAgICAgICAnYXJpYS1pbnZhbGlkJyA9PiAndHJ1 ZScsCiAgICAgICAgICAgICkpOwogICAgICAgIH0KICAgIH0KCiAgICAvLyBHbG9iYWwgYXR0 cmlidXRlcy4KICAgICRhdHRyICs9IHplbV9jb250YWN0X2J1aWxkX2F0dHMoJHplbV9jb250 YWN0X2dsb2JhbHMsICRhdHRzKTsKCiAgICAkY2xhc3NlcyA9IGFycmF5KCk7CgogICAgZm9y ZWFjaCAoYXJyYXkoJGNsYXNzLCAoJHJlcXVpcmVkID8gJHplbV9jb250YWN0X2ZsYWdzWydj bHNfcmVxdWlyZWQnXSA6ICcnKSwgJGlzRXJyb3IpIGFzICRjbHMpIHsKICAgICAgICBpZiAo JGNscykgewogICAgICAgICAgICAkY2xhc3Nlc1tdID0gJGNsczsKICAgICAgICB9CiAgICB9 CgogICAgJGNsYXNzU3RyID0gKCRjbGFzc2VzID8gJyBjbGFzcz0iJyAuIGltcGxvZGUoJyAn LCAkY2xhc3NlcykgLiAnIicgOiAnJyk7CiAgICAkbGFiZWxTdHIgPSAnPGxhYmVsIGZvcj0i JyAuICRuYW1lIC4gJyInIC4gJGNsYXNzU3RyIC4gJz4nIC4gdHhwc3BlY2lhbGNoYXJzKCRs YWJlbCkgLiAnPC9sYWJlbD4nOwoKICAgIHJldHVybiAoJGxhYmVsX3Bvc2l0aW9uID09PSAn YmVmb3JlJyA/ICRsYWJlbFN0ciAuICRicmVhayA6ICcnKSAuCiAgICAgICAgJzxpbnB1dCcg LiAkY2xhc3NTdHIgLiAoJGF0dHIgPyAnICcgLiBpbXBsb2RlKCcgJywgJGF0dHIpIDogJycp IC4gJyAvPicgLgogICAgICAgICgkbGFiZWxfcG9zaXRpb24gPT09ICdhZnRlcicgPyAkYnJl YWsgLiAkbGFiZWxTdHIgOiAnJyk7Cn0KCi8qKgogKiBUYWc6IFJlbmRlciBhbiBlbWFpbCBp bnB1dCBmaWVsZC4KICoKICogQHBhcmFtICBhcnJheSAgJGF0dHMgVGFnIGF0dHJpYnV0ZXMK ICogQHJldHVybiBzdHJpbmcgSFRNTAogKi8KZnVuY3Rpb24gemVtX2NvbnRhY3RfZW1haWwo JGF0dHMpCnsKICAgIGdsb2JhbCAkemVtX2NvbnRhY3RfZXJyb3IsICR6ZW1fY29udGFjdF9z dWJtaXQsICR6ZW1fY29udGFjdF9mcm9tLCAkemVtX2NvbnRhY3RfcmVjaXBpZW50LCAkemVt X2NvbnRhY3RfZmxhZ3M7CgogICAgLy8gVE9ETzogJ211bHRpcGxlJyBhdHRyaWJ1dGU/CiAg ICAkZGVmYXVsdHMgPSBhcnJheSgKICAgICAgICAnYXV0b2NvbXBsZXRlJyAgID0+ICcnLAog ICAgICAgICdicmVhaycgICAgICAgICAgPT4gYnIsCiAgICAgICAgJ2NsYXNzJyAgICAgICAg ICA9PiAnemVtRW1haWwnLAogICAgICAgICdkZWZhdWx0JyAgICAgICAgPT4gJycsCiAgICAg ICAgJ2h0bWxfZm9ybScgICAgICA9PiAkemVtX2NvbnRhY3RfZmxhZ3NbJ3RoaXNfZm9ybSdd LAogICAgICAgICdpc0Vycm9yJyAgICAgICAgPT4gJycsCiAgICAgICAgJ2xhYmVsJyAgICAg ICAgICA9PiBnVHh0KCd6ZW1fY29udGFjdF9lbWFpbCcpLAogICAgICAgICdsYWJlbF9wb3Np dGlvbicgPT4gJ2JlZm9yZScsCiAgICAgICAgJ21heCcgICAgICAgICAgICA9PiAxMDAsCiAg ICAgICAgJ21pbicgICAgICAgICAgICA9PiAwLAogICAgICAgICduYW1lJyAgICAgICAgICAg PT4gJycsCiAgICAgICAgJ3BhdHRlcm4nICAgICAgICA9PiAnJywKICAgICAgICAncGxhY2Vo b2xkZXInICAgID0+ICcnLAogICAgICAgICdyZXF1aXJlZCcgICAgICAgPT4gJHplbV9jb250 YWN0X2ZsYWdzWydyZXF1aXJlZCddLAogICAgICAgICdzZW5kX2FydGljbGUnICAgPT4gMCwK ICAgICAgICAnc2l6ZScgICAgICAgICAgID0+ICcnLAogICAgICAgICd0eXBlJyAgICAgICAg ICAgPT4gJ2VtYWlsJywKICAgICk7CgogICAgZXh0cmFjdCh6ZW1fY29udGFjdF9sQXR0cygk ZGVmYXVsdHMsICRhdHRzKSk7CgogICAgaWYgKGVtcHR5KCRuYW1lKSkgewogICAgICAgICRu YW1lID0gemVtX2NvbnRhY3RfbGFiZWwybmFtZSgkbGFiZWwpOwogICAgfQoKICAgICRlbWFp bCA9ICR6ZW1fY29udGFjdF9zdWJtaXQgPyB0cmltKHBzKCRuYW1lKSkgOiAkZGVmYXVsdDsK CiAgICBpZiAoJHplbV9jb250YWN0X3N1Ym1pdCAmJiBzdHJsZW4oJGVtYWlsKSkgewogICAg ICAgIGlmICghaXNfdmFsaWRfZW1haWwoJGVtYWlsKSkgewogICAgICAgICAgICAkemVtX2Nv bnRhY3RfZXJyb3JbXSA9IGdUeHQoJ3plbV9jb250YWN0X2ludmFsaWRfZW1haWwnLCBhcnJh eSgne2VtYWlsfScgPT4gdHhwc3BlY2lhbGNoYXJzKCRlbWFpbCkpKTsKICAgICAgICAgICAg JGlzRXJyb3IgPSAkemVtX2NvbnRhY3RfZmxhZ3NbJ2Nsc19lbGVtZW50J107CiAgICAgICAg fSBlbHNlIHsKICAgICAgICAgICAgcHJlZ19tYXRjaCgiL0AoLispJC8iLCAkZW1haWwsICRt YXRjaCk7CiAgICAgICAgICAgICRkb21haW4gPSAkbWF0Y2hbMV07CgogICAgICAgICAgICBp ZiAoaXNfY2FsbGFibGUoJ2NoZWNrZG5zcnInKSAmJiBjaGVja2Ruc3JyKCd0ZXh0cGF0dGVy bi5jb20uJywnQScpICYmICFjaGVja2Ruc3JyKCRkb21haW4uJy4nLCdNWCcpICYmICFjaGVj a2Ruc3JyKCRkb21haW4uJy4nLCdBJykpIHsKICAgICAgICAgICAgICAgICR6ZW1fY29udGFj dF9lcnJvcltdID0gZ1R4dCgnemVtX2NvbnRhY3RfaW52YWxpZF9ob3N0JywgYXJyYXkoJ3to b3N0fScgPT4gdHhwc3BlY2lhbGNoYXJzKCRkb21haW4pKSk7CiAgICAgICAgICAgICAgICAk aXNFcnJvciA9ICR6ZW1fY29udGFjdF9mbGFnc1snY2xzX2VsZW1lbnQnXTsKICAgICAgICAg ICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGlmICgkc2VuZF9hcnRpY2xlKSB7CiAgICAg ICAgICAgICAgICAgICAgJHplbV9jb250YWN0X3JlY2lwaWVudCA9ICRlbWFpbDsKICAgICAg ICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJHplbV9jb250YWN0X2Zy b20gPSAkZW1haWw7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9 CiAgICB9CgogICAgJHBhc3NlZF9hdHRzID0gYXJyYXkoKTsKCiAgICBmb3JlYWNoICgkZGVm YXVsdHMgYXMgJGtleSA9PiAkdmFsdWUpIHsKICAgICAgICAkcGFzc2VkX2F0dHNbJGtleV0g PSAkJGtleTsKICAgIH0KCiAgICAkcGFzc2VkX2F0dHNbJ2lzRXJyb3InXSA9ICRpc0Vycm9y OwogICAgdW5zZXQgKCRwYXNzZWRfYXR0c1snc2VuZF9hcnRpY2xlJ10pOwoKICAgIHJldHVy biB6ZW1fY29udGFjdF90ZXh0KCRwYXNzZWRfYXR0cyk7Cn0KCi8qKgogKiBUYWc6IFJlbmRl ciBhIHRleHRhcmVhIGlucHV0IGZpZWxkLgogKgogKiBAcGFyYW0gIGFycmF5ICAkYXR0cyBU YWcgYXR0cmlidXRlcwogKiBAcmV0dXJuIHN0cmluZyBIVE1MCiAqLwpmdW5jdGlvbiB6ZW1f Y29udGFjdF90ZXh0YXJlYSgkYXR0cykKewogICAgZ2xvYmFsICR6ZW1fY29udGFjdF9lcnJv ciwgJHplbV9jb250YWN0X3N1Ym1pdCwgJHplbV9jb250YWN0X2ZsYWdzOwoKICAgIGV4dHJh Y3QoemVtX2NvbnRhY3RfbEF0dHMoYXJyYXkoCiAgICAgICAgJ2F1dG9jb21wbGV0ZScgICA9 PiAnJywKICAgICAgICAnYnJlYWsnICAgICAgICAgID0+IGJyLAogICAgICAgICdjbGFzcycg ICAgICAgICAgPT4gJ3plbVRleHRhcmVhJywKICAgICAgICAnY29scycgICAgICAgICAgID0+ IDU4LAogICAgICAgICdkZWZhdWx0JyAgICAgICAgPT4gJycsCiAgICAgICAgJ2h0bWxfZm9y bScgICAgICA9PiAkemVtX2NvbnRhY3RfZmxhZ3NbJ3RoaXNfZm9ybSddLAogICAgICAgICdp c0Vycm9yJyAgICAgICAgPT4gJycsCiAgICAgICAgJ2xhYmVsJyAgICAgICAgICA9PiBnVHh0 KCd6ZW1fY29udGFjdF9tZXNzYWdlJyksCiAgICAgICAgJ2xhYmVsX3Bvc2l0aW9uJyA9PiAn YmVmb3JlJywKICAgICAgICAnbWF4JyAgICAgICAgICAgID0+IDEwMDAwLAogICAgICAgICdt aW4nICAgICAgICAgICAgPT4gMCwKICAgICAgICAnbmFtZScgICAgICAgICAgID0+ICcnLAog ICAgICAgICdwbGFjZWhvbGRlcicgICAgPT4gJycsCiAgICAgICAgJ3JlcXVpcmVkJyAgICAg ICA9PiAkemVtX2NvbnRhY3RfZmxhZ3NbJ3JlcXVpcmVkJ10sCiAgICAgICAgJ3Jvd3MnICAg ICAgICAgICA9PiA4LAogICAgICAgICd3cmFwJyAgICAgICAgICAgPT4gJycsCiAgICApLCAk YXR0cykpOwoKICAgICRtaW4gPSBpbnR2YWwoJG1pbik7CiAgICAkbWF4ID0gaW50dmFsKCRt YXgpOwoKICAgIGlmIChlbXB0eSgkbmFtZSkpIHsKICAgICAgICAkbmFtZSA9IHplbV9jb250 YWN0X2xhYmVsMm5hbWUoJGxhYmVsKTsKICAgIH0KCiAgICAkZG9jdHlwZSA9IGdldF9wcmVm KCdkb2N0eXBlJywgJ3hodG1sJyk7CgogICAgaWYgKCR6ZW1fY29udGFjdF9zdWJtaXQpIHsK ICAgICAgICAkdmFsdWUgPSBwcmVnX3JlcGxhY2UoJy9eXHMqW1xyXG5dLycsICcnLCBydHJp bShwcygkbmFtZSkpKTsKICAgICAgICAkdXRmOGxlbiA9IHByZWdfbWF0Y2hfYWxsKCIvLi9z dSIsIGx0cmltKCR2YWx1ZSksICR1dGY4YXIpOwogICAgICAgICRobGFiZWwgPSB0eHBzcGVj aWFsY2hhcnMoJGxhYmVsKTsKCiAgICAgICAgaWYgKHN0cmxlbihsdHJpbSgkdmFsdWUpKSkg ewogICAgICAgICAgICBpZiAoISR1dGY4bGVuKSB7CiAgICAgICAgICAgICAgICAkemVtX2Nv bnRhY3RfZXJyb3JbXSA9IGdUeHQoJ3plbV9jb250YWN0X2ludmFsaWRfdXRmOCcsIGFycmF5 KCd7ZmllbGR9JyA9PiAkaGxhYmVsKSk7CiAgICAgICAgICAgICAgICAkaXNFcnJvciA9ICR6 ZW1fY29udGFjdF9mbGFnc1snY2xzX2VsZW1lbnQnXTsKICAgICAgICAgICAgfSBlbHNlaWYg KCRtaW4gJiYgJHV0ZjhsZW4gPCAkbWluKSB7CiAgICAgICAgICAgICAgICAkemVtX2NvbnRh Y3RfZXJyb3JbXSA9IGdUeHQoJ3plbV9jb250YWN0X21pbl93YXJuaW5nJywgYXJyYXkoJ3tm aWVsZH0nID0+ICRobGFiZWwsICd7dmFsdWV9JyA9PiAkbWluKSk7CiAgICAgICAgICAgICAg ICAkaXNFcnJvciA9ICR6ZW1fY29udGFjdF9mbGFnc1snY2xzX2VsZW1lbnQnXTsKICAgICAg ICAgICAgfSBlbHNlaWYgKCRtYXggJiYgJHV0ZjhsZW4gPiAkbWF4KSB7CiAgICAgICAgICAg ICAgICAkemVtX2NvbnRhY3RfZXJyb3JbXSA9IGdUeHQoJ3plbV9jb250YWN0X21heF93YXJu aW5nJywgYXJyYXkoJ3tmaWVsZH0nID0+ICRobGFiZWwsICd7dmFsdWV9JyA9PiAkbWF4KSk7 CiAgICAgICAgICAgICAgICAkaXNFcnJvciA9ICR6ZW1fY29udGFjdF9mbGFnc1snY2xzX2Vs ZW1lbnQnXTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHplbV9jb250 YWN0X3N0b3JlKCRuYW1lLCAkbGFiZWwsICR2YWx1ZSk7CiAgICAgICAgICAgIH0KICAgICAg ICB9IGVsc2VpZiAoJHJlcXVpcmVkKSB7CiAgICAgICAgICAgICR6ZW1fY29udGFjdF9lcnJv cltdID0gZ1R4dCgnemVtX2NvbnRhY3RfZmllbGRfbWlzc2luZycsIGFycmF5KCd7ZmllbGR9 JyA9PiAkaGxhYmVsKSk7CiAgICAgICAgICAgICRpc0Vycm9yID0gJHplbV9jb250YWN0X2Zs YWdzWydjbHNfZWxlbWVudCddOwogICAgICAgIH0KICAgIH0gZWxzZSB7CiAgICAgICAgJHZh bHVlID0gJGRlZmF1bHQ7CiAgICB9CgogICAgLy8gQ29yZSBhdHRyaWJ1dGVzLgogICAgJGF0 dHIgPSB6ZW1fY29udGFjdF9idWlsZF9hdHRzKGFycmF5KAogICAgICAgICdpZCcgICAgICAg ID0+IChpc3NldCgkaWQpID8gJGlkIDogJG5hbWUpLAogICAgICAgICduYW1lJyAgICAgID0+ ICRuYW1lLAogICAgICAgICdjb2xzJyAgICAgID0+IGludHZhbCgkY29scyksCiAgICAgICAg J3Jvd3MnICAgICAgPT4gaW50dmFsKCRyb3dzKSwKICAgICAgICAnbWF4bGVuZ3RoJyA9PiAk bWF4LAogICAgKSk7CgogICAgLy8gSFRNTDUgYXR0cmlidXRlcy4KICAgICRyZXF1aXJlZCA9 ICgkcmVxdWlyZWQpID8gJ3JlcXVpcmVkJyA6ICcnOwogICAgaWYgKCRkb2N0eXBlICE9PSAn eGh0bWwnKSB7CiAgICAgICAgJGF0dHIgKz0gemVtX2NvbnRhY3RfYnVpbGRfYXR0cyhhcnJh eSgKICAgICAgICAgICAgJ2F1dG9jb21wbGV0ZScgPT4gJGF1dG9jb21wbGV0ZSwKICAgICAg ICAgICAgJ2Zvcm0nICAgICAgICAgPT4gJGh0bWxfZm9ybSwKICAgICAgICAgICAgJ3BsYWNl aG9sZGVyJyAgPT4gJHBsYWNlaG9sZGVyLAogICAgICAgICAgICAncmVxdWlyZWQnICAgICA9 PiAkcmVxdWlyZWQsCiAgICAgICAgKSk7CgogICAgICAgIGlmICgkaXNFcnJvcikgewogICAg ICAgICAgICAkYXR0ciArPSB6ZW1fY29udGFjdF9idWlsZF9hdHRzKGFycmF5KAogICAgICAg ICAgICAgICAgJ2FyaWEtaW52YWxpZCcgPT4gJ3RydWUnLAogICAgICAgICAgICApKTsKICAg ICAgICB9CiAgICB9CgogICAgLy8gR2xvYmFsIGF0dHJpYnV0ZXMuCiAgICAkYXR0ciArPSB6 ZW1fY29udGFjdF9idWlsZF9hdHRzKCR6ZW1fY29udGFjdF9nbG9iYWxzLCAkYXR0cyk7Cgog ICAgJGNsYXNzZXMgPSBhcnJheSgpOwoKICAgIGZvcmVhY2ggKGFycmF5KCRjbGFzcywgKCRy ZXF1aXJlZCA/ICR6ZW1fY29udGFjdF9mbGFnc1snY2xzX3JlcXVpcmVkJ10gOiAnJyksICRp c0Vycm9yKSBhcyAkY2xzKSB7CiAgICAgICAgaWYgKCRjbHMpIHsKICAgICAgICAgICAgJGNs YXNzZXNbXSA9ICRjbHM7CiAgICAgICAgfQogICAgfQoKICAgICRjbGFzc1N0ciA9ICgkY2xh c3NlcyA/ICcgY2xhc3M9IicgLiBpbXBsb2RlKCcgJywgJGNsYXNzZXMpIC4gJyInIDogJycp OwogICAgJGxhYmVsU3RyID0gJzxsYWJlbCBmb3I9IicgLiAkbmFtZSAuICciJyAuICRjbGFz c1N0ciAuICc+JyAuIHR4cHNwZWNpYWxjaGFycygkbGFiZWwpIC4gJzwvbGFiZWw+JzsKCiAg ICByZXR1cm4gKCRsYWJlbF9wb3NpdGlvbiA9PT0gJ2JlZm9yZScgPyAkbGFiZWxTdHIgLiAk YnJlYWsgOiAnJykgLgogICAgICAgICc8dGV4dGFyZWEnIC4gJGNsYXNzU3RyIC4gKCRhdHRy ID8gJyAnIC4gaW1wbG9kZSgnICcsICRhdHRyKSA6ICcnKSAuICc+JyAuIHR4cHNwZWNpYWxj aGFycygkdmFsdWUpIC4gJzwvdGV4dGFyZWE+JyAuCiAgICAgICAgKCRsYWJlbF9wb3NpdGlv biA9PT0gJ2FmdGVyJyA/ICRicmVhayAuICRsYWJlbFN0ciA6ICcnKTsKfQoKLyoqCiAqIFRh ZzogUmVuZGVyIGEgc2VsZWN0L29wdGlvbiBpbnB1dCBsaXN0LgogKgogKiBAcGFyYW0gIGFy cmF5ICAkYXR0cyBUYWcgYXR0cmlidXRlcwogKiBAcmV0dXJuIHN0cmluZyBIVE1MCiAqLwpm dW5jdGlvbiB6ZW1fY29udGFjdF9zZWxlY3QoJGF0dHMsICR0aGluZyA9IG51bGwpCnsKICAg IGdsb2JhbCAkemVtX2NvbnRhY3RfZXJyb3IsICR6ZW1fY29udGFjdF9zdWJtaXQsICR6ZW1f Y29udGFjdF9mbGFnczsKCiAgICAvLyBUT0RPOiBtdWx0aXBsZSBhdHRyaWJ1dGU/CiAgICBl eHRyYWN0KHplbV9jb250YWN0X2xBdHRzKGFycmF5KAogICAgICAgICdicmVhaycgICAgICAg ICAgPT4gYnIsCiAgICAgICAgJ2NsYXNzJyAgICAgICAgICA9PiAnemVtU2VsZWN0JywKICAg ICAgICAnZGVsaW1pdGVyJyAgICAgID0+ICcsJywKICAgICAgICAnaHRtbF9mb3JtJyAgICAg ID0+ICR6ZW1fY29udGFjdF9mbGFnc1sndGhpc19mb3JtJ10sCiAgICAgICAgJ2lzRXJyb3In ICAgICAgICA9PiAnJywKICAgICAgICAnbGFiZWwnICAgICAgICAgID0+IGdUeHQoJ3plbV9j b250YWN0X29wdGlvbicpLAogICAgICAgICdsYWJlbF9wb3NpdGlvbicgPT4gJ2JlZm9yZScs CiAgICAgICAgJ2xpc3QnICAgICAgICAgICA9PiAnJywgLy8gVE9ETzogcmVtb3ZlIGZyb20g aGVyZSBpbiBmYXZvdXIgb2YgdGhlIGdsb2JhbCBsaXN0IGF0dHJpYnV0ZS4KICAgICAgICAn b3B0aW9ucycgICAgICAgID0+IGdUeHQoJ3plbV9jb250YWN0X2dlbmVyYWxfaW5xdWlyeScp LAogICAgICAgICduYW1lJyAgICAgICAgICAgPT4gJycsCiAgICAgICAgJ3JlcXVpcmVkJyAg ICAgICA9PiAkemVtX2NvbnRhY3RfZmxhZ3NbJ3JlcXVpcmVkJ10sCiAgICAgICAgJ3NlbGVj dGVkJyAgICAgICA9PiAnJywKICAgICAgICAnc2l6ZScgICAgICAgICAgID0+ICcnLAogICAg KSwgJGF0dHMpKTsKCiAgICAvLyBEZXRlY3Qgb2xkLXNjaG9vbCB1c2Ugb2YgdGhlIGxpc3Qg YXR0cmlidXRlLiBOb3RlIHRoYXQgZGVwcmVjYXRlZF9mdW5jdGlvbl93aXRoCiAgICAvLyBp c24ndCBzdHJpY3RseSB0aGUgY29ycmVjdCBlcnJvciB0byB0aHJvdywgYnV0IGl0J3MgY2xv c2UgZW5vdWdoIHVudGlsIGNvcmUgaGFzCiAgICAvLyBhIGRlZGljYXRlZCBkZXByZWNhdGVk X2F0dHJpYnV0ZV93aXRoIHN0cmluZy4KICAgIGlmICghZW1wdHkoJGxpc3QpICYmIHN0cnBv cygkbGlzdCwgJGRlbGltaXRlcikgIT09IGZhbHNlKSB7CiAgICAgICAgJG9wdGlvbnMgPSAk bGlzdDsKICAgICAgICB0cmlnZ2VyX2Vycm9yKGdUeHQoJ2RlcHJlY2F0ZWRfZnVuY3Rpb25f d2l0aCcsIGFycmF5KCd7bmFtZX0nID0+ICdsaXN0JywgJ3t3aXRofScgPT4gJ29wdGlvbnMn KSksIEVfVVNFUl9OT1RJQ0UpOwogICAgICAgIHVuc2V0KCRsaXN0LCAkYXR0c1snbGlzdCdd KTsKICAgIH0KCiAgICBpZiAoZW1wdHkoJG5hbWUpKSB7CiAgICAgICAgJG5hbWUgPSB6ZW1f Y29udGFjdF9sYWJlbDJuYW1lKCRsYWJlbCk7CiAgICB9CgogICAgJHZhbHVlID0gKCR6ZW1f Y29udGFjdF9zdWJtaXQpID8gdHJpbShwcygkbmFtZSkpIDogJHNlbGVjdGVkOwogICAgJGRv Y3R5cGUgPSBnZXRfcHJlZignZG9jdHlwZScsICd4aHRtbCcpOwoKICAgIGlmICgkdGhpbmcp IHsKICAgICAgICB6ZW1fY29udGFjdF9vcHRpb24obnVsbCwgJHZhbHVlKTsKICAgICAgICAk b3V0ID0gcGFyc2UoJHRoaW5nKTsKICAgICAgICAkb3B0aW9ucyA9IHplbV9jb250YWN0X29w dGlvbihudWxsLCBudWxsKTsKICAgIH0gZWxzZSB7CiAgICAgICAgJG9wdGlvbnMgPSBhcnJh eV9tYXAoJ3RyaW0nLCBleHBsb2RlKCRkZWxpbWl0ZXIsIHByZWdfcmVwbGFjZSgnL1tcclxu XHRcc10rLycsICcgJywgJG9wdGlvbnMpKSk7CiAgICAgICAgJG91dCA9ICcnOwoKICAgICAg ICBmb3JlYWNoICgkb3B0aW9ucyBhcyAkaXRlbSkgewogICAgICAgICAgICAkb3V0IC49IG4u dC4nPG9wdGlvbicgLiAoJGl0ZW0gPT0gJHZhbHVlID8gJyBzZWxlY3RlZCcgLiAoKCRkb2N0 eXBlID09PSAneGh0bWwnKSA/ICc9InNlbGVjdGVkIicgOiAnJykgLiAnPicgOiAnPicpIC4g KHN0cmxlbigkaXRlbSkgPyB0eHBzcGVjaWFsY2hhcnMoJGl0ZW0pIDogJyAnKSAuICc8L29w dGlvbj4nOwogICAgICAgIH0KICAgIH0KCiAgICBpZiAoJHplbV9jb250YWN0X3N1Ym1pdCkg ewogICAgICAgIGlmIChzdHJsZW4oJHZhbHVlKSkgewogICAgICAgICAgICBpZiAoaW5fYXJy YXkoJHZhbHVlLCAkb3B0aW9ucykpIHsKICAgICAgICAgICAgICAgIHplbV9jb250YWN0X3N0 b3JlKCRuYW1lLCAkbGFiZWwsICR2YWx1ZSk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAg ICAgICAgICAgICAkemVtX2NvbnRhY3RfZXJyb3JbXSA9IGdUeHQoJ3plbV9jb250YWN0X2lu dmFsaWRfdmFsdWUnLCBhcnJheSgne2ZpZWxkfScgPT4gdHhwc3BlY2lhbGNoYXJzKCRsYWJl bCksICd7dmFsdWV9JyA9PiB0eHBzcGVjaWFsY2hhcnMoJHZhbHVlKSkpOwogICAgICAgICAg ICAgICAgJGlzRXJyb3IgPSAkemVtX2NvbnRhY3RfZmxhZ3NbJ2Nsc19lbGVtZW50J107CiAg ICAgICAgICAgIH0KICAgICAgICB9IGVsc2VpZiAoJHJlcXVpcmVkKSB7CiAgICAgICAgICAg ICR6ZW1fY29udGFjdF9lcnJvcltdID0gZ1R4dCgnemVtX2NvbnRhY3RfZmllbGRfbWlzc2lu ZycsIGFycmF5KCd7ZmllbGR9JyA9PiB0eHBzcGVjaWFsY2hhcnMoJGxhYmVsKSkpOwogICAg ICAgICAgICAkaXNFcnJvciA9ICR6ZW1fY29udGFjdF9mbGFnc1snY2xzX2VsZW1lbnQnXTsK ICAgICAgICB9CiAgICB9IGVsc2UgewogICAgICAgICR2YWx1ZSA9ICRzZWxlY3RlZDsKICAg IH0KCiAgICAvLyBDb3JlIGF0dHJpYnV0ZXMuCiAgICAkYXR0ciA9IHplbV9jb250YWN0X2J1 aWxkX2F0dHMoYXJyYXkoCiAgICAgICAgJ2lkJyAgID0+IChpc3NldCgkaWQpID8gJGlkIDog JG5hbWUpLAogICAgICAgICduYW1lJyA9PiAkbmFtZSwKICAgICkpOwoKICAgIGlmICgkc2l6 ZSAmJiBpc19udW1lcmljKCRzaXplKSkgewogICAgICAgICRhdHRyWydzaXplJ10gPSAnc2l6 ZT0iJyAuIGludHZhbCgkc2l6ZSkgLiAnIic7CiAgICB9CgogICAgLy8gSFRNTDUgYXR0cmli dXRlcy4KICAgICRyZXF1aXJlZCA9ICgkcmVxdWlyZWQpID8gJ3JlcXVpcmVkJyA6ICcnOwog ICAgaWYgKCRkb2N0eXBlICE9PSAneGh0bWwnKSB7CiAgICAgICAgJGF0dHIgKz0gemVtX2Nv bnRhY3RfYnVpbGRfYXR0cyhhcnJheSgKICAgICAgICAgICAgJ2Zvcm0nICAgICA9PiAkaHRt bF9mb3JtLAogICAgICAgICAgICAncmVxdWlyZWQnID0+ICRyZXF1aXJlZCwKICAgICAgICAp KTsKCiAgICAgICAgaWYgKCRpc0Vycm9yKSB7CiAgICAgICAgICAgICRhdHRyICs9IHplbV9j b250YWN0X2J1aWxkX2F0dHMoYXJyYXkoCiAgICAgICAgICAgICAgICAnYXJpYS1pbnZhbGlk JyA9PiAndHJ1ZScsCiAgICAgICAgICAgICkpOwogICAgICAgIH0KICAgIH0KCiAgICAvLyBH bG9iYWwgYXR0cmlidXRlcy4KICAgICRhdHRyICs9IHplbV9jb250YWN0X2J1aWxkX2F0dHMo JHplbV9jb250YWN0X2dsb2JhbHMsICRhdHRzKTsKCiAgICAkY2xhc3NlcyA9IGFycmF5KCk7 CgogICAgZm9yZWFjaCAoYXJyYXkoJGNsYXNzLCAoJHJlcXVpcmVkID8gJHplbV9jb250YWN0 X2ZsYWdzWydjbHNfcmVxdWlyZWQnXSA6ICcnKSwgJGlzRXJyb3IpIGFzICRjbHMpIHsKICAg ICAgICBpZiAoJGNscykgewogICAgICAgICAgICAkY2xhc3Nlc1tdID0gJGNsczsKICAgICAg ICB9CiAgICB9CgogICAgJGNsYXNzU3RyID0gKCRjbGFzc2VzID8gJyBjbGFzcz0iJyAuIGlt cGxvZGUoJyAnLCAkY2xhc3NlcykgLiAnIicgOiAnJyk7CiAgICAkbGFiZWxTdHIgPSAnPGxh YmVsIGZvcj0iJyAuICRuYW1lIC4gJyInIC4gJGNsYXNzU3RyIC4gJz4nIC4gdHhwc3BlY2lh bGNoYXJzKCRsYWJlbCkgLiAnPC9sYWJlbD4nOwoKICAgIHJldHVybiAoJGxhYmVsX3Bvc2l0 aW9uID09PSAnYmVmb3JlJyA/ICRsYWJlbFN0ciAuICRicmVhayA6ICcnKSAuCiAgICAgICAg biAuICc8c2VsZWN0JyAuICRjbGFzc1N0ciAuICgkYXR0ciA/ICcgJyAuIGltcGxvZGUoJyAn LCAkYXR0cikgOiAnJykgLiAnPicgLgogICAgICAgICAgICAkb3V0IC4KICAgICAgICBuIC4g Jzwvc2VsZWN0PicgLgogICAgICAgICgkbGFiZWxfcG9zaXRpb24gPT09ICdhZnRlcicgPyAk YnJlYWsgLiAkbGFiZWxTdHIgOiAnJyk7Cn0KCi8qKgogKiBUYWc6IFJlbmRlciBhIHNldCBv ZiBzZWxlY3Qgb3B0aW9ucy4KICoKICogQHBhcmFtICBhcnJheSAgJGF0dHMgIFRhZyBhdHRy aWJ1dGVzCiAqIEBwYXJhbSAgc3RyaW5nICR0aGluZyBUYWcncyBjb250YWluZXIKICogQHJl dHVybiBzdHJpbmcgSFRNTAogKi8KZnVuY3Rpb24gemVtX2NvbnRhY3Rfb3B0aW9uKCRhdHRz LCAkdGhpbmcgPSBudWxsKQp7CiAgICBzdGF0aWMgJG9wdGlvbnM7CiAgICBzdGF0aWMgJG1h dGNoOwoKICAgIGlmICgkYXR0cyA9PT0gbnVsbCkgewogICAgICAgIGlmICgkdGhpbmcgPT09 IG51bGwpIHsKICAgICAgICAgICAgcmV0dXJuICRvcHRpb25zOwogICAgICAgIH0gZWxzZSB7 CiAgICAgICAgICAgICRtYXRjaCA9ICR0aGluZzsKICAgICAgICAgICAgcmV0dXJuOwogICAg ICAgIH0KICAgIH0KCiAgICBnbG9iYWwgJHplbV9jb250YWN0X2Vycm9yLCAkemVtX2NvbnRh Y3Rfc3VibWl0OwoKICAgIGV4dHJhY3QoemVtX2NvbnRhY3RfbEF0dHMoYXJyYXkoCiAgICAg ICAgJ2NsYXNzJyAgICA9PiAnemVtT3B0aW9uJywKICAgICAgICAnbGFiZWwnICAgID0+IG51 bGwsCiAgICAgICAgJ3NlbGVjdGVkJyA9PiBudWxsLAogICAgICAgICd2YWx1ZScgICAgPT4g bnVsbCwKICAgICksICRhdHRzKSk7CgogICAgJHZhbCA9ICgkdmFsdWUgIT09IG51bGwpID8g JHZhbHVlIDogJHRoaW5nOwoKICAgIGlmIChlbXB0eSgkdmFsKSkgewogICAgICAgICR2YWwg PSAkbGFiZWw7CiAgICB9CgogICAgJGF0dHIgPSBhcnJheSgpOwogICAgJGRvY3R5cGUgPSBn ZXRfcHJlZignZG9jdHlwZScsICd4aHRtbCcpOwoKICAgIGlmICgkemVtX2NvbnRhY3Rfc3Vi bWl0KSB7CiAgICAgICAgJG9wdGlvbnNbXSA9ICR2YWw7CgogICAgICAgIGlmICgkdmFsICE9 PSBudWxsICYmICgoc3RyaW5nKSR2YWwgPT09IChzdHJpbmcpJG1hdGNoKSkgewogICAgICAg ICAgICAkYXR0cltdID0gJ3NlbGVjdGVkJyAuICgoJGRvY3R5cGUgPT09ICd4aHRtbCcpID8g Jz0ic2VsZWN0ZWQiJyA6ICcnKTsKICAgICAgICB9CiAgICB9IGVsc2VpZiAoJHNlbGVjdGVk IHx8ICgkdmFsICE9PSBudWxsICYmICgoc3RyaW5nKSR2YWwgPT09IChzdHJpbmcpJG1hdGNo KSkpIHsKICAgICAgICAkYXR0cltdID0gJ3NlbGVjdGVkJyAuICgoJGRvY3R5cGUgPT09ICd4 aHRtbCcpID8gJz0ic2VsZWN0ZWQiJyA6ICcnKTsKICAgIH0KCiAgICAvLyBDb3JlIGF0dHJp YnV0ZXMuCiAgICAkYXR0ciArPSB6ZW1fY29udGFjdF9idWlsZF9hdHRzKGFycmF5KAogICAg ICAgICd2YWx1ZScgPT4gJHZhbCwKICAgICkpOwoKICAgIC8vIEdsb2JhbCBhdHRyaWJ1dGVz LgogICAgJGF0dHIgKz0gemVtX2NvbnRhY3RfYnVpbGRfYXR0cygkemVtX2NvbnRhY3RfZ2xv YmFscywgJGF0dHMpOwoKICAgICRjbGFzc1N0ciA9ICgoJGNsYXNzKSA/ICcgY2xhc3M9Iicg LiAkY2xhc3MgLiAnIicgOiAnJyk7CgogICAgcmV0dXJuICc8b3B0aW9uJyAuICRjbGFzc1N0 ciAuICgkYXR0ciA/ICcgJyAuIGltcGxvZGUoJyAnLCAkYXR0cikgOiAnJykgLiAnPicgLiB0 eHBzcGVjaWFsY2hhcnMoJHZhbCkgLiAnPC9vcHRpb24+JzsKfQoKLyoqCiAqIFRhZzogUmVu ZGVyIGEgY2hlY2tib3guCiAqCiAqIEBwYXJhbSAgYXJyYXkgICRhdHRzICBUYWcgYXR0cmli dXRlcwogKiBAcmV0dXJuIHN0cmluZyBIVE1MCiAqIEB0b2RvIGNoZWNrYm94IGdyb3Vwcz8K ICovCmZ1bmN0aW9uIHplbV9jb250YWN0X2NoZWNrYm94KCRhdHRzKQp7CiAgICBnbG9iYWwg JHplbV9jb250YWN0X2Vycm9yLCAkemVtX2NvbnRhY3Rfc3VibWl0LCAkemVtX2NvbnRhY3Rf ZmxhZ3M7CgogICAgZXh0cmFjdCh6ZW1fY29udGFjdF9sQXR0cyhhcnJheSgKICAgICAgICAn YnJlYWsnICAgICAgICAgID0+ICcgJywKICAgICAgICAnY2hlY2tlZCcgICAgICAgID0+IDAs CiAgICAgICAgJ2NsYXNzJyAgICAgICAgICA9PiAnemVtQ2hlY2tib3gnLAogICAgICAgICdo dG1sX2Zvcm0nICAgICAgPT4gJHplbV9jb250YWN0X2ZsYWdzWyd0aGlzX2Zvcm0nXSwKICAg ICAgICAnaXNFcnJvcicgICAgICAgID0+ICcnLAogICAgICAgICdsYWJlbCcgICAgICAgICAg PT4gZ1R4dCgnemVtX2NvbnRhY3RfY2hlY2tib3gnKSwKICAgICAgICAnbGFiZWxfcG9zaXRp b24nID0+ICdhZnRlcicsCiAgICAgICAgJ25hbWUnICAgICAgICAgICA9PiAnJywKICAgICAg ICAncmVxdWlyZWQnICAgICAgID0+ICR6ZW1fY29udGFjdF9mbGFnc1sncmVxdWlyZWQnXSwK ICAgICAgICAndmFsdWUnICAgICAgICAgID0+IG51bGwsCiAgICApLCAkYXR0cykpOwoKICAg IGlmIChlbXB0eSgkbmFtZSkpIHsKICAgICAgICAkbmFtZSA9IHplbV9jb250YWN0X2xhYmVs Mm5hbWUoJGxhYmVsKTsKICAgIH0KCiAgICAkZG9jdHlwZSA9IGdldF9wcmVmKCdkb2N0eXBl JywgJ3hodG1sJyk7CgogICAgaWYgKCR6ZW1fY29udGFjdF9zdWJtaXQpIHsKICAgICAgICAk dGhlVmFsdWUgPSAoYm9vbCkgcHMoJG5hbWUpOwoKICAgICAgICBpZiAoJHJlcXVpcmVkICYm ICEkdGhlVmFsdWUpIHsKICAgICAgICAgICAgJHplbV9jb250YWN0X2Vycm9yW10gPSBnVHh0 KCd6ZW1fY29udGFjdF9maWVsZF9taXNzaW5nJywgYXJyYXkoJ3tmaWVsZH0nID0+IHR4cHNw ZWNpYWxjaGFycygkbGFiZWwpKSk7CiAgICAgICAgICAgICRpc0Vycm9yID0gJHplbV9jb250 YWN0X2ZsYWdzWydjbHNfZWxlbWVudCddOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg ICR0b1N0b3JlID0gKCgkdmFsdWUgIT09IG51bGwgJiYgJHRoZVZhbHVlKSA/ICR2YWx1ZSA6 ICgkdGhlVmFsdWUgPyBnVHh0KCd5ZXMnKSA6IGdUeHQoJ25vJykpKTsKICAgICAgICAgICAg emVtX2NvbnRhY3Rfc3RvcmUoJG5hbWUsICRsYWJlbCwgJHRvU3RvcmUpOwogICAgICAgIH0K ICAgIH0gZWxzZSB7CiAgICAgICAgJHRoZVZhbHVlID0gJGNoZWNrZWQ7CiAgICB9CgogICAg Ly8gQ29yZSBhdHRyaWJ1dGVzLgogICAgJGF0dHIgPSB6ZW1fY29udGFjdF9idWlsZF9hdHRz KGFycmF5KAogICAgICAgICdpZCcgICAgPT4gKGlzc2V0KCRpZCkgPyAkaWQgOiAkbmFtZSks CiAgICAgICAgJ25hbWUnICA9PiAkbmFtZSwKICAgICkpOwoKICAgIGlmICgkdmFsdWUgIT09 IG51bGwpIHsKICAgICAgICAkYXR0ciArPSB6ZW1fY29udGFjdF9idWlsZF9hdHRzKGFycmF5 KAogICAgICAgICAgICAndmFsdWUnID0+ICR2YWx1ZSwKICAgICAgICApKTsKICAgIH0KCiAg ICAvLyBIVE1MNSBhdHRyaWJ1dGVzLgogICAgJHJlcXVpcmVkID0gKCRyZXF1aXJlZCkgPyAn cmVxdWlyZWQnIDogJyc7CiAgICBpZiAoJGRvY3R5cGUgIT09ICd4aHRtbCcpIHsKICAgICAg ICAkYXR0ciArPSB6ZW1fY29udGFjdF9idWlsZF9hdHRzKGFycmF5KAogICAgICAgICAgICAn Zm9ybScgICAgID0+ICRodG1sX2Zvcm0sCiAgICAgICAgICAgICdyZXF1aXJlZCcgPT4gJHJl cXVpcmVkLAogICAgICAgICkpOwoKICAgICAgICBpZiAoJGlzRXJyb3IpIHsKICAgICAgICAg ICAgJGF0dHIgKz0gemVtX2NvbnRhY3RfYnVpbGRfYXR0cyhhcnJheSgKICAgICAgICAgICAg ICAgICdhcmlhLWludmFsaWQnID0+ICd0cnVlJywKICAgICAgICAgICAgKSk7CiAgICAgICAg fQogICAgfQoKICAgIC8vIEdsb2JhbCBhdHRyaWJ1dGVzLgogICAgJGF0dHIgKz0gemVtX2Nv bnRhY3RfYnVpbGRfYXR0cygkemVtX2NvbnRhY3RfZ2xvYmFscywgJGF0dHMpOwoKICAgICRj bGFzc2VzID0gYXJyYXkoKTsKCiAgICBmb3JlYWNoIChhcnJheSgkY2xhc3MsICgkcmVxdWly ZWQgPyAkemVtX2NvbnRhY3RfZmxhZ3NbJ2Nsc19yZXF1aXJlZCddIDogJycpLCAkaXNFcnJv cikgYXMgJGNscykgewogICAgICAgIGlmICgkY2xzKSB7CiAgICAgICAgICAgICRjbGFzc2Vz W10gPSAkY2xzOwogICAgICAgIH0KICAgIH0KCiAgICAkY2xhc3NTdHIgPSAoJGNsYXNzZXMg PyAnIGNsYXNzPSInIC4gaW1wbG9kZSgnICcsICRjbGFzc2VzKSAuICciJyA6ICcnKTsKICAg ICRsYWJlbFN0ciA9ICc8bGFiZWwgZm9yPSInIC4gJG5hbWUgLiAnIicgLiAkY2xhc3NTdHIg LiAnPicgLiB0eHBzcGVjaWFsY2hhcnMoJGxhYmVsKSAuICc8L2xhYmVsPic7CgogICAgcmV0 dXJuICgkbGFiZWxfcG9zaXRpb24gPT09ICdiZWZvcmUnID8gJGxhYmVsU3RyIC4gJGJyZWFr IDogJycpIC4KICAgICAgICAnPGlucHV0IHR5cGU9ImNoZWNrYm94IicgLiAkY2xhc3NTdHIg LgogICAgICAgICAgICAoJHRoZVZhbHVlID8gJyBjaGVja2VkJyAuICgoJGRvY3R5cGUgPT09 ICd4aHRtbCcpID8gJz0iY2hlY2tlZCInIDogJycpIDogJycpIC4gKCRhdHRyID8gJyAnIC4g aW1wbG9kZSgnICcsICRhdHRyKSA6ICcnKSAuICcgLz4nIC4KICAgICAgICAoJGxhYmVsX3Bv c2l0aW9uID09PSAnYWZ0ZXInID8gJGJyZWFrIC4gJGxhYmVsU3RyIDogJycpOwp9CgovKioK ICogVGFnOiBSZW5kZXIgYSByYWRpbyBidXR0b24uCiAqCiAqIEBwYXJhbSAgYXJyYXkgICRh dHRzICBUYWcgYXR0cmlidXRlcwogKiBAcmV0dXJuIHN0cmluZyBIVE1MCiAqLwpmdW5jdGlv biB6ZW1fY29udGFjdF9yYWRpbygkYXR0cykKewogICAgZ2xvYmFsICR6ZW1fY29udGFjdF9l cnJvciwgJHplbV9jb250YWN0X3N1Ym1pdCwgJHplbV9jb250YWN0X3ZhbHVlcywgJHplbV9j b250YWN0X2ZsYWdzLCAkemVtX2NvbnRhY3RfZ3JvdXA7CgogICAgZXh0cmFjdCh6ZW1fY29u dGFjdF9sQXR0cyhhcnJheSgKICAgICAgICAnYnJlYWsnICAgICAgICAgID0+ICcgJywKICAg ICAgICAnY2hlY2tlZCcgICAgICAgID0+IDAsCiAgICAgICAgJ2NsYXNzJyAgICAgICAgICA9 PiAnemVtUmFkaW8nLAogICAgICAgICdncm91cCcgICAgICAgICAgPT4gJycsCiAgICAgICAg J2h0bWxfZm9ybScgICAgICA9PiAkemVtX2NvbnRhY3RfZmxhZ3NbJ3RoaXNfZm9ybSddLAog ICAgICAgICdpc0Vycm9yJyAgICAgICAgPT4gJycsCiAgICAgICAgJ2xhYmVsJyAgICAgICAg ICA9PiBnVHh0KCd6ZW1fY29udGFjdF9vcHRpb24nKSwKICAgICAgICAnbGFiZWxfcG9zaXRp b24nID0+ICdhZnRlcicsCiAgICAgICAgJ25hbWUnICAgICAgICAgICA9PiAnJywKICAgICAg ICAncmVxdWlyZWQnICAgICAgID0+IG51bGwsCiAgICAgICAgJ3ZhbHVlJyAgICAgICAgICA9 PiBudWxsLAogICAgKSwgJGF0dHMpKTsKCiAgICBzdGF0aWMgJGN1cl9uYW1lID0gYXJyYXko KTsKICAgIHN0YXRpYyAkY3VyX3JlcSA9IGFycmF5KCk7CiAgICBzdGF0aWMgJGN1cl9ncm91 cCA9IG51bGw7CgogICAgaWYgKCEkZ3JvdXApIHsKICAgICAgICBpZiAoJGN1cl9ncm91cCA9 PT0gbnVsbCkgewogICAgICAgICAgICAkZ3JvdXAgPSBnVHh0KCd6ZW1fY29udGFjdF9yYWRp bycpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRncm91cCA9ICRjdXJfZ3JvdXA7 CiAgICAgICAgfQogICAgfSBlbHNlIHsKICAgICAgICBpZiAoISRuYW1lKSB7CiAgICAgICAg ICAgICRuYW1lID0gJGdyb3VwOwogICAgICAgIH0KICAgIH0KCiAgICBpZiAoaXNzZXQoJGN1 cl9uYW1lWyRncm91cF0pKSB7CiAgICAgICAgaWYgKCEkbmFtZSkgewogICAgICAgICAgICAk bmFtZSA9ICRjdXJfbmFtZVskZ3JvdXBdOwogICAgICAgIH0KICAgIH0gZWxzZSB7CiAgICAg ICAgaWYgKCRuYW1lKSB7CiAgICAgICAgICAgICRjdXJfbmFtZVskZ3JvdXBdID0gJG5hbWU7 CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJG5hbWUgPSAkY3VyX25hbWVbJGdyb3Vw XSA9IGdUeHQoJ3plbV9jb250YWN0X3JhZGlvJyk7CiAgICAgICAgfQogICAgfQoKICAgIGlm IChpc3NldCgkY3VyX3JlcVskZ3JvdXBdKSkgewogICAgICAgIGlmICgkcmVxdWlyZWQgPT09 IG51bGwpIHsKICAgICAgICAgICAgJHJlcXVpcmVkID0gJGN1cl9yZXFbJGdyb3VwXTsKICAg ICAgICB9CiAgICB9IGVsc2UgewogICAgICAgIGlmICgkcmVxdWlyZWQgPT09IG51bGwpIHsK ICAgICAgICAgICAgJHJlcXVpcmVkID0gJGN1cl9yZXFbJGdyb3VwXSA9ICR6ZW1fY29udGFj dF9mbGFnc1sncmVxdWlyZWQnXTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkY3Vy X3JlcVskZ3JvdXBdID0gJHJlcXVpcmVkOwogICAgICAgIH0KICAgIH0KCiAgICAkY3VyX2dy b3VwID0gJGdyb3VwOwoKICAgICRpZCA9ICdxJyAuIG1kNSgkbmFtZSAuICc9PicgLiAkbGFi ZWwpOwogICAgJG5hbWUgPSB6ZW1fY29udGFjdF9sYWJlbDJuYW1lKCRuYW1lKTsKICAgICRk b2N0eXBlID0gZ2V0X3ByZWYoJ2RvY3R5cGUnLCAneGh0bWwnKTsKICAgICR6ZW1fY29udGFj dF9ncm91cFskbmFtZV1bJGlkXVsncmVxJ10gPSAkcmVxdWlyZWQ7CiAgICAkemVtX2NvbnRh Y3RfZ3JvdXBbJG5hbWVdWyRpZF1bJ2xhYmVsJ10gPSAkZ3JvdXA7CgogICAgaWYgKCR6ZW1f Y29udGFjdF9zdWJtaXQpIHsKICAgICAgICAkdG9Db21wYXJlID0gKCR2YWx1ZSA9PT0gbnVs bCA/ICRpZCA6ICR2YWx1ZSk7CiAgICAgICAgJGlzX2NoZWNrZWQgPSAocHMoJG5hbWUpID09 ICR0b0NvbXBhcmUpOwogICAgICAgICR6ZW1fY29udGFjdF9ncm91cFskbmFtZV1bJGlkXVsn aXNTZXQnXSA9ICRpc19jaGVja2VkOwoKICAgICAgICBpZiAoJGlzX2NoZWNrZWQgfHwgJGNo ZWNrZWQgJiYgIWlzc2V0KCR6ZW1fY29udGFjdF92YWx1ZXNbJG5hbWVdKSkgewogICAgICAg ICAgICB6ZW1fY29udGFjdF9zdG9yZSgkbmFtZSwgJGdyb3VwLCAoJHZhbHVlICE9PSBudWxs ID8gJHZhbHVlIDogJGxhYmVsKSk7CiAgICAgICAgfQogICAgfSBlbHNlIHsKICAgICAgICAk aXNfY2hlY2tlZCA9ICRjaGVja2VkOwogICAgfQoKICAgIC8vIENvcmUgYXR0cmlidXRlcy4K ICAgICRhdHRyID0gemVtX2NvbnRhY3RfYnVpbGRfYXR0cyhhcnJheSgKICAgICAgICAnaWQn ICAgID0+ICRpZCwKICAgICAgICAnbmFtZScgID0+ICRuYW1lLAogICAgICAgICd2YWx1ZScg PT4gKCR2YWx1ZSAhPT0gbnVsbCA/ICR2YWx1ZSA6ICRpZCksCiAgICApKTsKCiAgICAvLyBI VE1MNSBhdHRyaWJ1dGVzLgogICAgJHJlcXVpcmVkID0gKCRyZXF1aXJlZCkgPyAncmVxdWly ZWQnIDogJyc7CiAgICBpZiAoJGRvY3R5cGUgIT09ICd4aHRtbCcpIHsKICAgICAgICAkYXR0 ciArPSB6ZW1fY29udGFjdF9idWlsZF9hdHRzKGFycmF5KAogICAgICAgICAgICAnZm9ybScg ICAgID0+ICRodG1sX2Zvcm0sCiAgICAgICAgICAgICdyZXF1aXJlZCcgPT4gJHJlcXVpcmVk LAogICAgICAgICkpOwogICAgfQoKICAgIC8vIEdsb2JhbCBhdHRyaWJ1dGVzLgogICAgJGF0 dHIgKz0gemVtX2NvbnRhY3RfYnVpbGRfYXR0cygkemVtX2NvbnRhY3RfZ2xvYmFscywgJGF0 dHMpOwoKICAgICRjbGFzc2VzID0gYXJyYXkoKTsKCiAgICBmb3JlYWNoIChhcnJheSgkY2xh c3MsICgkcmVxdWlyZWQgPyAkemVtX2NvbnRhY3RfZmxhZ3NbJ2Nsc19yZXF1aXJlZCddIDog JycpLCAkaXNFcnJvcikgYXMgJGNscykgewogICAgICAgIGlmICgkY2xzKSB7CiAgICAgICAg ICAgICRjbGFzc2VzW10gPSAkY2xzOwogICAgICAgIH0KICAgIH0KCiAgICAkY2xhc3NTdHIg PSAoJGNsYXNzZXMgPyAnIGNsYXNzPSInIC4gaW1wbG9kZSgnICcsICRjbGFzc2VzKSAuICci JyA6ICcnKTsKICAgICRsYWJlbFN0ciA9ICc8bGFiZWwgZm9yPSInIC4gJGlkIC4gJyInIC4g JGNsYXNzU3RyIC4gJz4nIC4gdHhwc3BlY2lhbGNoYXJzKCRsYWJlbCkgLiAnPC9sYWJlbD4n OwoKICAgIHJldHVybiAoJGxhYmVsX3Bvc2l0aW9uID09PSAnYmVmb3JlJyA/ICRsYWJlbFN0 ciAuICRicmVhayA6ICcnKSAuCiAgICAgICAgJzxpbnB1dCB0eXBlPSJyYWRpbyInLiAkY2xh c3NTdHIgLiAoJGF0dHIgPyAnICcgLiBpbXBsb2RlKCcgJywgJGF0dHIpIDogJycpIC4KICAg ICAgICAgICAgKCAkaXNfY2hlY2tlZCA/ICcgY2hlY2tlZCcgLiAoKCRkb2N0eXBlID09PSAn eGh0bWwnKSA/ICc9ImNoZWNrZWQiJyA6ICcnKS4gJyAvPicgOiAnIC8+JykgLgogICAgICAg ICgkbGFiZWxfcG9zaXRpb24gPT09ICdhZnRlcicgPyAkYnJlYWsgLiAkbGFiZWxTdHIgOiAn Jyk7Cn0KCi8qKgogKiBUYWc6IFN0b3JlIHNlcnZlciBpbmZvcm1hdGlvbiBpbiB0aGUgcGF5 bG9hZC4KICoKICogQHBhcmFtICBhcnJheSAgJGF0dHMgIFRhZyBhdHRyaWJ1dGVzCiAqLwpm dW5jdGlvbiB6ZW1fY29udGFjdF9zZXJ2ZXJpbmZvKCRhdHRzKQp7CiAgICBnbG9iYWwgJHpl bV9jb250YWN0X3N1Ym1pdDsKCiAgICBleHRyYWN0KHplbV9jb250YWN0X2xBdHRzKGFycmF5 KAogICAgICAgICdsYWJlbCcgPT4gJycsCiAgICAgICAgJ25hbWUnICA9PiAnJywKICAgICks ICRhdHRzKSk7CgogICAgaWYgKGVtcHR5KCRuYW1lKSkgewogICAgICAgICRuYW1lID0gemVt X2NvbnRhY3RfbGFiZWwybmFtZSgkbGFiZWwpOwogICAgfQoKICAgIGlmIChzdHJsZW4oJG5h bWUpICYmICR6ZW1fY29udGFjdF9zdWJtaXQpIHsKICAgICAgICBpZiAoISRsYWJlbCkgewog ICAgICAgICAgICAkbGFiZWwgPSAkbmFtZTsKICAgICAgICB9CgogICAgICAgIHplbV9jb250 YWN0X3N0b3JlKCRuYW1lLCAkbGFiZWwsIHNlcnZlclNldCgkbmFtZSkpOwogICAgfQp9Cgov KioKICogVGFnOiBTdG9yZSBhIHNlY3JldCB2YWx1ZSBpbiB0aGUgcGF5bG9hZC4KICoKICog QHBhcmFtICBhcnJheSAgJGF0dHMgIFRhZyBhdHRyaWJ1dGVzCiAqLwpmdW5jdGlvbiB6ZW1f Y29udGFjdF9zZWNyZXQoJGF0dHMsICR0aGluZyA9IG51bGwpCnsKICAgIGdsb2JhbCAkemVt X2NvbnRhY3Rfc3VibWl0OwoKICAgIGV4dHJhY3QoemVtX2NvbnRhY3RfbEF0dHMoYXJyYXko CiAgICAgICAgJ2xhYmVsJyA9PiBnVHh0KCd6ZW1fY29udGFjdF9zZWNyZXQnKSwKICAgICAg ICAnbmFtZScgID0+ICcnLAogICAgICAgICd2YWx1ZScgPT4gJycsCiAgICApLCAkYXR0cykp OwoKICAgICRuYW1lID0gemVtX2NvbnRhY3RfbGFiZWwybmFtZSgkbmFtZSA/ICRuYW1lIDog JGxhYmVsKTsKCiAgICBpZiAoJHplbV9jb250YWN0X3N1Ym1pdCkgewogICAgICAgIGlmICgk dGhpbmcpIHsKICAgICAgICAgICAgJHZhbHVlID0gdHJpbShwYXJzZSgkdGhpbmcpKTsKICAg ICAgICB9CgogICAgICAgIHplbV9jb250YWN0X3N0b3JlKCRuYW1lLCAkbGFiZWwsICR2YWx1 ZSk7CiAgICB9CgogICAgcmV0dXJuICcnOwp9CgovKioKICogVGFnOiBSZW5kZXIgYSBzdWJt aXQgYnV0dG9uLgogKgogKiBJZiB0aGUgY29udGFpbmVyIGlzIHVzZWQsIGEgYnV0dG9uIHRh ZyBpcyByZW5kZXJlZCwgb3RoZXJ3aXNlIGEKICogc3RhbmRhcmQgaW5wdXQgdHlwZT1zdWJt aXQgYnV0dG9uIGlzIHJlbmRlcmVkLgogKgogKiBAcGFyYW0gIGFycmF5ICAkYXR0cyAgVGFn IGF0dHJpYnV0ZXMKICogQHBhcmFtICBzdHJpbmcgJHRoaW5nIFRhZydzIGNvbnRhaW5lcgog KiBAcmV0dXJuIHN0cmluZyBIVE1MCiAqLwpmdW5jdGlvbiB6ZW1fY29udGFjdF9zdWJtaXQo JGF0dHMsICR0aGluZyA9IG51bGwpCnsKICAgIGdsb2JhbCAkemVtX2NvbnRhY3RfZmxhZ3M7 CgogICAgZXh0cmFjdCh6ZW1fY29udGFjdF9sQXR0cyhhcnJheSgKICAgICAgICAnY2xhc3Mn ICAgICA9PiAnemVtU3VibWl0JywKICAgICAgICAnaHRtbF9mb3JtJyA9PiAkemVtX2NvbnRh Y3RfZmxhZ3NbJ3RoaXNfZm9ybSddLAogICAgICAgICdsYWJlbCcgICAgID0+IGdUeHQoJ3pl bV9jb250YWN0X3NlbmQnKSwKICAgICksICRhdHRzKSk7CgogICAgJGxhYmVsID0gdHhwc3Bl Y2lhbGNoYXJzKCRsYWJlbCk7CiAgICAkZG9jdHlwZSA9IGdldF9wcmVmKCdkb2N0eXBlJywg J3hodG1sJyk7CgogICAgJGF0dHIgPSBhcnJheSgpOwoKICAgIC8vIEhUTUw1IGF0dHJpYnV0 ZXMuCiAgICBpZiAoJGRvY3R5cGUgIT09ICd4aHRtbCcpIHsKICAgICAgICAkYXR0ciArPSB6 ZW1fY29udGFjdF9idWlsZF9hdHRzKGFycmF5KAogICAgICAgICAgICAnZm9ybScgPT4gJGh0 bWxfZm9ybSwKICAgICAgICApKTsKICAgIH0KCiAgICAvLyBHbG9iYWwgYXR0cmlidXRlcy4K ICAgICRhdHRyICs9IHplbV9jb250YWN0X2J1aWxkX2F0dHMoJHplbV9jb250YWN0X2dsb2Jh bHMsICRhdHRzKTsKCiAgICAkY2xhc3NTdHIgPSAoJGNsYXNzID8gJyBjbGFzcz0iJyAuICRj bGFzcyAuICciJyA6ICcnKTsKCiAgICBpZiAoc3RybGVuKCR0aGluZykpIHsKICAgICAgICBy ZXR1cm4gJzxidXR0b24gdHlwZT0ic3VibWl0IicgLiAkY2xhc3NTdHIgLiAnIG5hbWU9Inpl bV9jb250YWN0X3N1Ym1pdCIgdmFsdWU9IicgLiAkbGFiZWwgLiAnIicgLiAoJGF0dHIgPyAn ICcgLiBpbXBsb2RlKCcgJywgJGF0dHIpIDogJycpIC4gJz4nIC4gKCR0aGluZyA/IHRyaW0o cGFyc2UoJHRoaW5nKSkgOiAkbGFiZWwpIC4gJzwvYnV0dG9uPic7CiAgICB9IGVsc2Ugewog ICAgICAgIHJldHVybiAnPGlucHV0IHR5cGU9InN1Ym1pdCInIC4gJGNsYXNzU3RyIC4gJyBu YW1lPSJ6ZW1fY29udGFjdF9zdWJtaXQiIHZhbHVlPSInIC4gJGxhYmVsIC4gJyInIC4gKCRh dHRyID8gJyAnIC4gaW1wbG9kZSgnICcsICRhdHRyKSA6ICcnKSAuICcgLz4nOwogICAgfQp9 CgovKioKICogVGFnOiBSZW5kZXIgYSBsaW5rIHRvIGFsbG93IHNvbWVvbmUgdG8gZm9yd2Fy ZCBhIHBhZ2UgdG8gYSBmcmllbmQuCiAqCiAqIEBwYXJhbSAgYXJyYXkgICRhdHRzICBUYWcg YXR0cmlidXRlcwogKiBAcmV0dXJuIHN0cmluZyBIVE1MCiAqLwpmdW5jdGlvbiB6ZW1fY29u dGFjdF9zZW5kX2FydGljbGUoJGF0dHMpCnsKICAgIGlmICghaXNzZXQoJF9SRVFVRVNUWyd6 ZW1fY29udGFjdF9zZW5kX2FydGljbGUnXSkpIHsKICAgICAgICAkbGlua3RleHQgPSAoZW1w dHkoJGF0dHNbJ2xpbmt0ZXh0J10pKSA/IGdUeHQoJ3plbV9jb250YWN0X3NlbmRfYXJ0aWNs ZScpIDogJGF0dHNbJ2xpbmt0ZXh0J107CiAgICAgICAgJGpvaW4gPSAoZW1wdHkoJF9TRVJW RVJbJ1FVRVJZX1NUUklORyddKSkgPyAnPycgOiAnJic7CiAgICAgICAgJGhyZWYgPSAkX1NF UlZFUlsnUkVRVUVTVF9VUkknXSAuICRqb2luIC4gJ3plbV9jb250YWN0X3NlbmRfYXJ0aWNs ZT15ZXMnOwoKICAgICAgICByZXR1cm4gJzxhIGhyZWY9IicgLiB0eHBzcGVjaWFsY2hhcnMo JGhyZWYpIC4gJyIgcmVsPSJub2ZvbGxvdyI+JyAuIHR4cHNwZWNpYWxjaGFycygkbGlua3Rl eHQpIC4gJzwvYT4nOwogICAgfQoKICAgIHJldHVybjsKfQoKLyoqCiAqIFBlcmZvcm0gcG9z dC1wcm9jZXNzaW5nIGZvciBhZ2dyZWdhdGUgKGdyb3VwKSBjb250cm9scyBsaWtlIHJhZGlv IHNldHMuCiAqCiAqIEB0b2RvIENhbiB0aGlzIGJlIGRvbmUgYW55IG5lYXRlcj8KICogQHRv ZG8gU2hvdWxkIHRoaXMgYmUgZXhwb3NlZCBhcyBhIGNhbGxiYWNrIHRvIGFsbG93IHBsdWdp bnMgdG8gZXh0ZW5kIHRoZSBmdW5jdGlvbmFsaXR5PwogKi8KZnVuY3Rpb24gemVtX2NvbnRh Y3RfZ3JvdXBfdmFsaWRhdGUoKQp7CiAgICBnbG9iYWwgJHplbV9jb250YWN0X2dyb3VwLCAk emVtX2NvbnRhY3RfZXJyb3I7CgogICAgJGZsYWdzID0gYXJyYXkoKTsKCiAgICBpZiAoJHpl bV9jb250YWN0X2dyb3VwKSB7CiAgICAgICAgZm9yZWFjaCAoJHplbV9jb250YWN0X2dyb3Vw IGFzICRrZXkgPT4gJGdycCkgewogICAgICAgICAgICBmb3JlYWNoICgkZ3JwIGFzICRpZCA9 PiAkYXR0cykgewogICAgICAgICAgICAgICAgJGZsYWdzWyRrZXldWydsYWJlbCddID0gJGF0 dHNbJ2xhYmVsJ107CgogICAgICAgICAgICAgICAgaWYgKCFlbXB0eSgkYXR0c1sncmVxJ10p ICYmICFpc3NldCgkZmxhZ3NbJGtleV1bJ3JlcSddKSkgewogICAgICAgICAgICAgICAgICAg ICRmbGFnc1ska2V5XVsncmVxJ10gPSAxOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAg ICAgICAgIGlmICghZW1wdHkoJGF0dHNbJ2lzU2V0J10pICYmICFpc3NldCgkZmxhZ3NbJGtl eV1bJ2lzU2V0J10pKSB7CiAgICAgICAgICAgICAgICAgICAgJGZsYWdzWyRrZXldWydpc1Nl dCddID0gMTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAg ICAgICAgZm9yZWFjaCAoJGZsYWdzIGFzICRrZXkgPT4gJGRhdGEpIHsKICAgICAgICAgICAg aWYgKCFlbXB0eSgkZGF0YVsncmVxJ10pICYmICFpc3NldCgkZGF0YVsnaXNTZXQnXSkpIHsK ICAgICAgICAgICAgICAgICR6ZW1fY29udGFjdF9lcnJvcltdID0gZ1R4dCgnemVtX2NvbnRh Y3RfZmllbGRfbWlzc2luZycsIGFycmF5KCd7ZmllbGR9JyA9PiB0eHBzcGVjaWFsY2hhcnMo JGRhdGFbJ2xhYmVsJ10pKSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9Cn0KCi8q KgogKiBQcm9jZXNzIHRhZyBhdHRyaWJ1dGVzIGFuZCBzZXQgZGVmYXVsdHMuCiAqCiAqIEhh bmRsZXMgSFRNTCAnZ2xvYmFsJyBhdHRyaWJ1dGVzIHRvbywgdGhvdWdoIHdoYXQgd2UgY29u c2lkZXIgZ2xvYmFsIGRpZmZlcnMgc2xpZ2h0bHkKICogZnJvbSB0aGUgVzNDOiBhbnkgYXR0 cmlidXRlcyB0aGF0IGFwcGx5IHRvIG1vc3Qgb2YgdGhlIDxpbnB1dD4gdGFncyBpcyBjb25z aWRlcmVkCiAqIGdsb2JhbC4gSnVzdCBzYXZlcyByZXBldGl0aXZlIGNvZGUgaW4gZWFjaCB0 YWcgaGFuZGxlci4KICoKICogTm90ZSB0aGF0ICdjbGFzcycgaXMgb21pdHRlZCwgYmVjYXVz ZSB0aGF0IGhhcyBkaWZmZXJlbnQgZGVmYXVsdCB2YWx1ZXMgcGVyIGlucHV0CiAqIHdpZGdl dCwgc28gaXQgaXMgZGVhbHQgd2l0aCBleHBsaWNpdGx5IGluIGVhY2ggdGFnIGhhbmRsZXIu CiAqCiAqIEBwYXJhbSAgYXJyYXkgJGFyciAgQWNjZXB0YWJsZSB0YWcgYXR0cmlidXRlcwog KiBAcGFyYW0gIGFycmF5ICRhdHRzIFVzZXItc3VibWl0dGVkIGF0dHJpYnV0ZSB2YWx1ZXMK ICogQHJldHVybiBhcnJheQogKi8KZnVuY3Rpb24gemVtX2NvbnRhY3RfbEF0dHMoJHBhaXJz LCAkYXR0cykKewogICAgZm9yZWFjaCAoYXJyYXkoJ2J1dHRvbicsICdjb3B5c2VuZGVyJywg J2NoZWNrZWQnLCAncmVxdWlyZWQnLCAnc2VuZF9hcnRpY2xlJywgJ3Nob3dfaW5wdXQnLCAn c2hvd19lcnJvcicpIGFzICRrZXkpIHsKICAgICAgICBpZiAoaXNzZXQoJGF0dHNbJGtleV0p KSB7CiAgICAgICAgICAgICRhdHRzWyRrZXldID0gKCRhdHRzWyRrZXldID09PSAneWVzJyB8 fCBpbnR2YWwoJGF0dHNbJGtleV0pKSA/IDEgOiAwOwogICAgICAgIH0KICAgIH0KCiAgICBp ZiAoaXNzZXQoJGF0dHNbJ2JyZWFrJ10pICYmICRhdHRzWydicmVhayddID09PSAnYnInKSB7 CiAgICAgICAgJGF0dHNbJ2JyZWFrJ10gPSAnPGJyIC8+JzsKICAgIH0KCiAgICAkemVtX2Nv bnRhY3RfZ2xvYmFscyA9IGFycmF5KAogICAgICAgICdhY2Nlc3NrZXknICA9PiAnJywKICAg ICAgICAnYXV0b2ZvY3VzJyAgPT4gJycsCiAgICAgICAgJ2RpcicgICAgICAgID0+ICcnLAog ICAgICAgICdkaXNhYmxlZCcgICA9PiAnJywKICAgICAgICAnaGlkZGVuJyAgICAgPT4gJycs CiAgICAgICAgJ2lkJyAgICAgICAgID0+ICcnLAogICAgICAgICdsYW5nJyAgICAgICA9PiAn JywKICAgICAgICAnbGlzdCcgICAgICAgPT4gJycsCiAgICAgICAgJ3JlYWRvbmx5JyAgID0+ ICcnLAogICAgICAgICdzcGVsbGNoZWNrJyA9PiAnJywKICAgICAgICAnc3R5bGUnICAgICAg PT4gJycsCiAgICAgICAgJ3RhYmluZGV4JyAgID0+ICcnLAogICAgICAgICd0aXRsZScgICAg ICA9PiAnJywKICAgICAgICAndHJhbnNsYXRlJyAgPT4gJycsCiAgICApOwoKICAgIGZvcmVh Y2ggKCRhdHRzIGFzICRuYW1lID0+ICR2YWx1ZSkgewogICAgICAgIGlmIChhcnJheV9rZXlf ZXhpc3RzKCRuYW1lLCAkcGFpcnMpIHx8IHN1YnN0cigkbmFtZSwgMCwgMikgPT09ICdvbicg fHwgYXJyYXlfa2V5X2V4aXN0cygkbmFtZSwgJHplbV9jb250YWN0X2dsb2JhbHMpKSB7CiAg ICAgICAgICAgICRwYWlyc1skbmFtZV0gPSAkdmFsdWU7CiAgICAgICAgfSBlbHNlaWYgKGdl dF9wcmVmKCdwcm9kdWN0aW9uX3N0YXR1cycpICE9ICdsaXZlJykgewogICAgICAgICAgICB0 cmlnZ2VyX2Vycm9yKGdUeHQoJ3Vua25vd25fYXR0cmlidXRlJywgYXJyYXkoJ3thdHR9JyA9 PiAkbmFtZSkpKTsKICAgICAgICB9CiAgICB9CgogICAgJHBhaXJzWyd6ZW1fY29udGFjdF9n bG9iYWxzJ10gPSAkemVtX2NvbnRhY3RfZ2xvYmFsczsKCiAgICByZXR1cm4gKCRwYWlycykg PyAkcGFpcnMgOiBmYWxzZTsKfQoKLyoqCiAqIEJ1aWxkIGEgc2FuaXRpemVkLCB1bmlxdWUg YXR0cmlidXRlIGFycmF5IGZyb20gdGhlIGdpdmVuIHBhaXJzLgogKgogKiBJZiBjYWxsZWQg bXVsdGlwbGUgdGltZXMsIGVhcmxpZXIgdmFsdWVzIHN1cGVyc2VkZSBsYXRlciB2YWx1ZXMK ICogaWYgdGhlIGtleXMgY2xhc2guCiAqCiAqIEBwYXJhbSAgYXJyYXkgJHBhaXJzICAgIEF0 dHJpYnV0ZSB0dXBsZXMgdG8gY29tcGlsZQogKiBAcGFyYW0gIGFycmF5ICRkZWZhdWx0cyBB dHRyaWJ1dGUgdmFsdWVzIHRvIHVzZSBpZiB0aGUgJHBhaXJzIHR1cGxlIHZhbHVlIGlzIGVt cHR5CiAqIEByZXR1cm4gYXJyYXkKICovCmZ1bmN0aW9uIHplbV9jb250YWN0X2J1aWxkX2F0 dHMoJHBhaXJzLCAkZGVmYXVsdHMgPSBhcnJheSgpKQp7CiAgICAkYXR0ciA9IGFycmF5KCk7 CgogICAgJGJvb2xlYW5zID0gYXJyYXkoCiAgICAgICAgJ2F1dG9mb2N1cycsCiAgICAgICAg J2NoZWNrZWQnLAogICAgICAgICdkaXNhYmxlZCcsCiAgICAgICAgJ2hpZGRlbicsCiAgICAg ICAgJ211bHRpcGxlJywKICAgICAgICAncmVhZG9ubHknLAogICAgICAgICdyZXF1aXJlZCcs CiAgICAgICAgJ3NlbGVjdGVkJywKICAgICAgICApOwoKICAgIGZvcmVhY2ggKCRwYWlycyBh cyAka2V5ID0+ICR2YWx1ZSkgewogICAgICAgIGlmICgkdmFsdWUgIT09ICcnICYmICR2YWx1 ZSAhPT0gbnVsbCkgewogICAgICAgICAgICAkYXR0clska2V5XSA9ICRrZXkgLiAoaW5fYXJy YXkoJGtleSwgJGJvb2xlYW5zKSA/ICcnIDogJz0iJyAuIHR4cHNwZWNpYWxjaGFycygkdmFs dWUpIC4gJyInKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBpZiAoaXNzZXQoJGRl ZmF1bHRzWyRrZXldKSkgewogICAgICAgICAgICAgICAgJGF0dHJbJGtleV0gPSAka2V5IC4g KGluX2FycmF5KCRrZXksICRib29sZWFucykgPyAnJyA6ICc9IicgLiB0eHBzcGVjaWFsY2hh cnMoJGRlZmF1bHRzWyRrZXldKSAuICciJyk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAg ICB9CgogICAgcmV0dXJuICRhdHRyOwp9CgovKioKICogUmVwbGFjZSBudWxscyBhbmQgbmV3 bGluZXMgaW4gY29udGVudCB3aXRoIHNwYWNlcy4KICoKICogQHBhcmFtIHN0cmluZyAkc3Ry ICAgIFN0cmluZyB0byBzYW5pdGl6ZQogKiBAcGFyYW0gYm9vbCAgICRoZWFkZXIgV2hldGhl ciB0aGUgc3RyaW5nIGlzIGEgaGVhZGVyIG9yIG5vdAogKi8KZnVuY3Rpb24gemVtX2NvbnRh Y3Rfc3RyaXAoJHN0ciwgJGhlYWRlciA9IHRydWUpCnsKICAgIGlmICgkaGVhZGVyKSB7CiAg ICAgICAgLy8gVE9ETzogc3RyaXBfcm4gd2lsbCBiZSBkZXByZWNhdGVkIGluIDQuNi4wLgog ICAgICAgICRzdHIgPSBzdHJpcF9ybigkc3RyKTsKICAgIH0KCiAgICByZXR1cm4gcHJlZ19y ZXBsYWNlKCcvW1x4MDBdLycsICcgJywgJHN0cik7Cn0KCi8qKgogKiBIYW5kbGUgY29udGVu dCBkZWxpdmVyeSBvZiBwYXlsb2FkLgogKgogKiBUcmlnZ2VycyBhICd6ZW1jb250YWN0LmRl bGl2ZXInIGNhbGxiYWNrIGV2ZW50IHRvIG92ZXJyaWRlIG9yIGF1Z21lbnQgdGhlCiAqIGRl bGl2ZXJ5IG1lY2hhbmlzbS4gVGhpcmQgcGFydHkgcGx1Z2lucyBjYW4gbWFrZSBhbHRlcmF0 aW9ucyB0byB0aGUgJHBheWxvYWQsCiAqIHRoZW4gcmV0dXJuIG9uZSBvZiB0aGUgc3RyaW5n czoKICogIC0+ICJ6ZW1jb250YWN0LnNlbmQiIChvciBubyByZXR1cm4gdmFsdWUpIHRvIGFs bG93IFpDUiB0byBjb250aW51ZSBtYWlsaW5nIGFmdGVyIHRoZSAzcmQgcGFydHkgcGx1Z2lu IGNvbXBsZXRlcwogKiAgLT4gInplbWNvbnRhY3Quc2tpcCIgdG8gc2tpcCB6ZW1fY29udGFj dCdzIG1haWxpbmcgKGkuZS4gdGhlIDNyZCBwYXJ0eSBoYW5kbGVzIG1haWxpbmcpIGFuZCBy ZXR1cm4gJ3N1Y2Nlc3MnCiAqICAtPiAiemVtY29udGFjdC5mYWlsIiB0byBza2lwIHplbV9j b250YWN0J3MgbWFpbGluZyBhbmQgcmV0dXJuICdmYWlsJwogKgogKiBCeSBob29raW5nIGlu dG8gdGhlIGNhbGxiYWNrJ3Mgc3RlcCB5b3UgY2FuIHRhcmdldCBlaXRoZXIgdGhlIG1haW4g J3NlbmQnCiAqIHByb2Nlc3Mgb3IgdGhlICdjb3B5c2VuZGVyJyBwcm9jZXNzLiBFeGFtcGxl cyBvZiB0aGluZ3MgeW91IGNvdWxkIGRvOgogKiAtPiBBZGQgTXVsdGktcGFydCBNSU1FIGhl YWRlcnMgZm9yIEhUTUwgZW1haWxzLgogKiAtPiBBZGQgQ0M6IG9yIEJDQzogZmllbGRzLgog KiAtPiBTdWJzY3JpYmUgcGVvcGxlIHRvIG1haWxpbmcgbGlzdHMuCiAqIC0+IEhhbmRsZSB0 aGUgbWFpbGluZyBwcm9jZXNzIGluZGVwZW5kZW50bHkgb2YgVGV4dHBhdHRlcm4uCiAqCiAq IEBwYXJhbSBzdHJpbmcgJHRvICAgICAgRGVsaXZlcnkgYWRkcmVzcwogKiBAcGFyYW0gc3Ry aW5nICRzdWJqZWN0IFN1YmplY3Qgb2YgbWVzc2FnZQogKiBAcGFyYW0gc3RyaW5nICRib2R5 ICAgIE1lc3NhZ2UgY29udGVudAogKiBAcGFyYW0gYXJyYXkgICRoZWFkZXJzIE1lc3NhZ2Ug aGVhZGVycyBhcyB0dXBsZXMKICogQHBhcmFtIGFycmF5ICAkZmllbGRzICBNZXNzYWdlIGZp ZWxkIG5hbWVzIGFuZCBjb250ZW50IGFzIHR1cGxlcwogKiBAcGFyYW0gYXJyYXkgICRmbGFn cyAgIFNpZ25hbHMgdG8gZ292ZXJuIGRlbGl2ZXJ5IC8gY2FsbGJhY2sgYmVoYXZpb3VyCiAq LwpmdW5jdGlvbiB6ZW1fY29udGFjdF9kZWxpdmVyKCR0bywgJHN1YmplY3QsICRib2R5LCAk aGVhZGVycywgJGZpZWxkcywgJGZsYWdzKQp7CiAgICAkcGF5bG9hZCA9IGFycmF5KAogICAg ICAgICd0bycgICAgICA9PiAkdG8sCiAgICAgICAgJ3N1YmplY3QnID0+ICRzdWJqZWN0LAog ICAgICAgICdoZWFkZXJzJyA9PiAkaGVhZGVycywKICAgICAgICAnYm9keScgICAgPT4gJGJv ZHksCiAgICAgICAgJ2ZpZWxkcycgID0+ICRmaWVsZHMsCiAgICApOwoKICAgICRmbGF2b3Vy ID0gKCRmbGFnc1snaXNDb3B5J10gPT09IHRydWUpID8gJ2NvcHlzZW5kZXInIDogJ3NlbmQn OwoKICAgIC8vIEFsbG93IHBsdWdpbnMgdG8gb3ZlcnJpZGUgb3IgYWx0ZXIgZGVmYXVsdCBh Y3Rpb24gKG1haWwpIGlmIHJlcXVpcmVkLgogICAgLy8gVE9ETzogdXNlIGhhc19oYW5kbGVy KCkgZnJvbSA0LjYuMCsuCiAgICAkcmV0ID0gY2FsbGJhY2tfZXZlbnRfcmVmKCd6ZW1jb250 YWN0LmRlbGl2ZXInLCAkZmxhdm91ciwgMCwgJHBheWxvYWQpOwoKICAgIGlmIChpbl9hcnJh eSgnemVtY29udGFjdC5mYWlsJywgJHJldCkpIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAg ICB9IGVsc2VpZiAoaW5fYXJyYXkoJ3plbWNvbnRhY3Quc2tpcCcsICRyZXQpKSB7CiAgICAg ICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgZXh0cmFjdCgkcGF5bG9hZCk7CgogICAgJHNt dHBfZnJvbSA9IGdldF9wcmVmKCdzbXRwX2Zyb20nKTsKCiAgICBpZiAoIWlzX2NhbGxhYmxl KCdtYWlsJykpIHsKICAgICAgICByZXR1cm4gKGdldF9wcmVmKCdwcm9kdWN0aW9uX3N0YXR1 cycpID09PSAnbGl2ZScpCiAgICAgICAgICAgID8gZ1R4dCgnemVtX2NvbnRhY3RfbWFpbF9z b3JyeScpCiAgICAgICAgICAgIDogZ1R4dCgnd2Fybl9tYWlsX3VuYXZhaWxhYmxlJyk7CiAg ICB9CgogICAgJHNlcCA9ICghZW1wdHkoJGhlYWRlcnNbJ3NlcGFyYXRvciddKSkgPyAkaGVh ZGVyc1snc2VwYXJhdG9yJ10gOiAoaXNfd2luZG93cygpID8gIlxyXG4iIDogIlxuIik7CiAg ICAkeGZlcl9lbmNvZGluZyA9ICghZW1wdHkoJGhlYWRlcnNbJ3hmZXJfZW5jb2RpbmcnXSkp ID8gJGhlYWRlcnNbJ3hmZXJfZW5jb2RpbmcnXSA6ICc4Yml0JzsKICAgICRjb250ZW50X3R5 cGUgPSAoIWVtcHR5KCRoZWFkZXJzWydjb250ZW50X3R5cGUnXSkpID8gJGhlYWRlcnNbJ2Nv bnRlbnRfdHlwZSddIDogJ3RleHQvcGxhaW4nOwogICAgJHJlcGx5ID0gKCFlbXB0eSgkaGVh ZGVyc1sncmVwbHknXSkpID8gJGhlYWRlcnNbJ3JlcGx5J10gOiAnJzsKICAgICRjaGFyc2V0 ID0gKCFlbXB0eSgkaGVhZGVyc1snY2hhcnNldCddKSkgPyAkaGVhZGVyc1snY2hhcnNldCdd IDogJ1VURi04JzsKICAgICR4X21haWxlciA9ICghZW1wdHkoJGhlYWRlcnNbJ3hfbWFpbGVy J10pKSA/ICRoZWFkZXJzWyd4X21haWxlciddIDogJ1RleHRwYXR0ZXJuICh6ZW1fY29udGFj dF9yZWJvcm4pJzsKCiAgICAkaGVhZGVyX3N0cmluZyA9ICdGcm9tOiAnIC4gJGhlYWRlcnNb J2Zyb20nXSAuCiAgICAgICAgKCRyZXBseSA/ICgkc2VwIC4gJ1JlcGx5LVRvOiAnIC4gJHJl cGx5KSA6ICcnKSAuCiAgICAgICAgJHNlcCAuICdYLU1haWxlcjogJyAuICR4X21haWxlciAu CiAgICAgICAgJHNlcCAuICdYLU9yaWdpbmF0aW5nLUlQOiAnIC4gemVtX2NvbnRhY3Rfc3Ry aXAoKCFlbXB0eSgkX1NFUlZFUlsnSFRUUF9YX0ZPUldBUkRFRF9GT1InXSkgPyAkX1NFUlZF UlsnSFRUUF9YX0ZPUldBUkRFRF9GT1InXSAuICcgdmlhICcgOiAnJykgLiAkX1NFUlZFUlsn UkVNT1RFX0FERFInXSkgLgogICAgICAgICRzZXAgLiAnQ29udGVudC1UcmFuc2Zlci1FbmNv ZGluZzogJyAuICR4ZmVyX2VuY29kaW5nIC4KICAgICAgICAkc2VwIC4gJ0NvbnRlbnQtVHlw ZTogJyAuICRjb250ZW50X3R5cGUgLiAnOyBjaGFyc2V0PSInIC4gJGNoYXJzZXQgLiAnIic7 CgogICAgLy8gUmVtb3ZlIGFsbCB0aGUgaGVhZGVyIGVudHJpZXMgdGhhdCBoYXZlIGFscmVh ZHkgYmVlbiBoYW5kbGVkLgogICAgdW5zZXQoCiAgICAgICAgJGhlYWRlcnNbJ3NlcGFyYXRv ciddLAogICAgICAgICRoZWFkZXJzWyd4ZmVyX2VuY29kaW5nJ10sCiAgICAgICAgJGhlYWRl cnNbJ2NvbnRlbnRfdHlwZSddLAogICAgICAgICRoZWFkZXJzWydyZXBseSddLAogICAgICAg ICRoZWFkZXJzWydjaGFyc2V0J10sCiAgICAgICAgJGhlYWRlcnNbJ3hfbWFpbGVyJ10sCiAg ICAgICAgJGhlYWRlcnNbJ2Zyb20nXQogICAgKTsKCiAgICAvLyBBbnkgcmVtYWluaW5nIGhl YWRlcnMgc2V0IGJ5IHBsdWdpbnMgYXJlIGFwcGVuZGVkIGFzLWlzLgogICAgZm9yZWFjaCAo JGhlYWRlcnMgYXMgJG5hbWUgPT4gJHZhbHVlKSB7CiAgICAgICAgJGhlYWRlcl9zdHJpbmcg Lj0gJHNlcCAuICRuYW1lIC4gJzogJyAuICR2YWx1ZTsKICAgIH0KCiAgICBpZiAoaXNfdmFs aWRfZW1haWwoJHNtdHBfZnJvbSkpIHsKICAgICAgICBpZiAoSVNfV0lOKSB7CiAgICAgICAg ICAgIGluaV9zZXQoJ3NlbmRtYWlsX2Zyb20nLCAkc210cF9mcm9tKTsKICAgICAgICB9IGVs c2VpZiAoIWluaV9nZXQoJ3NhZmVfbW9kZScpKSB7CiAgICAgICAgICAgIHJldHVybiBtYWls KCR0bywgJHN1YmplY3QsICRib2R5LCAkaGVhZGVyX3N0cmluZywgJy1mJy4kc210cF9mcm9t KTsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIG1haWwoJHRvLCAkc3ViamVjdCwgJGJv ZHksICRoZWFkZXJfc3RyaW5nKTsKfQoKLyoqCiAqIEV2YWx1YXRlIHJldHVybiB2YWx1ZXMg ZnJvbSBwbHVnaW5zLgogKi8KY2xhc3MgemVtY29udGFjdF9ldmFsdWF0aW9uCnsKICAgIHBy aXZhdGUgJHN0YXR1czsKCiAgICAvKioKICAgICAqIENvbnN0cnVjdG9yLgogICAgICovCiAg ICBmdW5jdGlvbiBfX2NvbnN0cnVjdCgpCiAgICB7CiAgICAgICAgJHRoaXMtPnN0YXR1cyA9 IDA7CiAgICB9CgogICAgLyoqCiAgICAgKiBBcHBlbmQgdGhlIGdpdmVuIHN0YXR1cyB0byB0 aGUgY291bnRlci4KICAgICAqLwogICAgZnVuY3Rpb24gYWRkX3plbWNvbnRhY3Rfc3RhdHVz KCRjaGVjaykKICAgIHsKICAgICAgICAkdGhpcy0+c3RhdHVzICs9ICRjaGVjazsKICAgIH0K CiAgICAvKioKICAgICAqIEZldGNoIHRoZSBjdXJyZW50IGV2YWx1YXRvciBzdGF0dXMuCiAg ICAgKi8KICAgIGZ1bmN0aW9uIGdldF96ZW1jb250YWN0X3N0YXR1cygpCiAgICB7CiAgICAg ICAgcmV0dXJuICR0aGlzLT5zdGF0dXM7CiAgICB9Cn0KCi8qKgogKiBFdmFsdWF0b3Igc2lu Z2xldG9uIGZvciBjaGVja2luZyByZXR1cm4gdmFsdWVzIGZyb20gcGx1Z2lucy4KICovCmZ1 bmN0aW9uICZnZXRfemVtY29udGFjdF9ldmFsdWF0b3IoKQp7CiAgICBzdGF0aWMgJGluc3Rh bmNlOwoKICAgIGlmICghaXNzZXQoJGluc3RhbmNlKSkgewogICAgICAgICRpbnN0YW5jZSA9 IG5ldyB6ZW1jb250YWN0X2V2YWx1YXRpb24oKTsKICAgIH0KCiAgICByZXR1cm4gJGluc3Rh bmNlOwp9CgovKioKICogQ29udmVydCB0aGUgZ2l2ZW4gbGFiZWwgdG8gYSBzdWl0YWJseSB1 bmlxdWUgbmFtZS4KICoKICogQHBhcmFtIHN0cmluZyAkbGFiZWwgTGFiZWwgdG8gY29udmVy dCB0byBuYW1lLgogKi8KZnVuY3Rpb24gemVtX2NvbnRhY3RfbGFiZWwybmFtZSgkbGFiZWwp CnsKICAgICRsYWJlbCA9IHRyaW0oJGxhYmVsKTsKCiAgICBpZiAoc3RybGVuKCRsYWJlbCkg PT0gMCkgewogICAgICAgIHJldHVybiAnaW52YWxpZCc7CiAgICB9CgogICAgaWYgKHN0cmxl bigkbGFiZWwpIDw9IDMyICYmIHByZWdfbWF0Y2goJy9eW2EtekEtWl1bQS1aYS16MC05Ol8t XSokLycsICRsYWJlbCkpIHsKICAgICAgICByZXR1cm4gJGxhYmVsOwogICAgfSBlbHNlIHsK ICAgICAgICByZXR1cm4gJ3EnIC4gbWQ1KCRsYWJlbCk7CiAgICB9Cn0KCi8qKgogKiBTdG9y ZSB0aGUgZ2l2ZW4gbmFtZXMvdmFsdWVzIGluIHRoZSBnbG9iYWwgYXJyYXlzLgogKgogKiBA cGFyYW0gIHN0cmluZyAkbmFtZSAgUGFyYW1ldGVyIG5hbWUKICogQHBhcmFtICBzdHJpbmcg JGxhYmVsIFBhcmFtZXRlciBsYWJlbAogKiBAcGFyYW0gIHN0cmluZyAkdmFsdWUgUGFyYW1l dGVyIHZhbHVlCiAqLwpmdW5jdGlvbiB6ZW1fY29udGFjdF9zdG9yZSgkbmFtZSwgJGxhYmVs LCAkdmFsdWUpCnsKICAgIGdsb2JhbCAkemVtX2NvbnRhY3RfZm9ybSwgJHplbV9jb250YWN0 X2xhYmVscywgJHplbV9jb250YWN0X3ZhbHVlczsKCiAgICAkemVtX2NvbnRhY3RfZm9ybVsk bGFiZWxdID0gJHZhbHVlOwogICAgJHplbV9jb250YWN0X2xhYmVsc1skbmFtZV0gPSAkbGFi ZWw7CiAgICAkemVtX2NvbnRhY3RfdmFsdWVzWyRuYW1lXSA9ICR2YWx1ZTsKfQoKLyoqCiAq IE92ZXJyaWRlIHRoZSBsYW5ndWFnZSBzdHJpbmdzIGlmIG5lY2Vzc2FyeS4KICoKICogQHBh cmFtICBzdHJpbmcgJGxhbmcgTGFuZ3VhZ2UgZGVzaWduYXRvciAoZS5nLiBmci1mcikKICog QHJldHVybiBhcnJheSAgICAgICAgUGFydGlhbCBsYW5ndWFnZSBhcnJheSB0byBtZXJnZSB3 aXRoICR0ZXh0YXJyYXkKICovCmZ1bmN0aW9uIHplbV9jb250YWN0X2xvYWRfbGFuZygkbGFu ZyA9IExBTkcpCnsKICAgICRvdXQgPSBhcnJheSgpOwoKICAgIGlmICgkbGFuZyAhPSBMQU5H KSB7CgogICAgICAgICRycyA9IHNhZmVfcm93cygibmFtZSwgZGF0YSIsICd0eHBfbGFuZycs ICJsYW5nID0gJyIgLiBkb1NsYXNoKCRsYW5nKSAuICInIEFORCBuYW1lIGxpa2UgJ3plbVxf Y29udGFjdFxfJSciKTsKCiAgICAgICAgaWYgKCFlbXB0eSgkcnMpKSB7CiAgICAgICAgICAg IGZvcmVhY2ggKCRycyBhcyAkYSkgewogICAgICAgICAgICAgICAgJG91dFskYVsnbmFtZSdd XSA9ICRhWydkYXRhJ107CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgcmV0 dXJuICRvdXQ7Cn0KCi8qKgogKiBSZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSBnaXZlbiBhdHRy aWJ1dGUsIGJ5IG5hbWUgb3IgaXRzIGxhYmVsLgogKgogKiBAcGFyYW0gIGFycmF5ICRhdHRz IEF0dHJpYnV0ZSB0byByZXR1cm4KICogQHJldHVybiBzdHJpbmcKICovCmZ1bmN0aW9uIHpl bV9jb250YWN0X3ZhbHVlKCRhdHRzKQp7CiAgICBnbG9iYWwgJHplbV9jb250YWN0X3ZhbHVl cywgJHplbV9jb250YWN0X2Zvcm07CgogICAgZXh0cmFjdChsQXR0cyhhcnJheSgKICAgICAg ICAnbGFiZWwnID0+ICcnLAogICAgICAgICduYW1lJyAgPT4gJycsCiAgICApLCAkYXR0cykp OwoKICAgICRzdHIgPSAnJzsKCiAgICBpZiAoJG5hbWUpIHsKICAgICAgICAkc3RyID0gaXNz ZXQoJHplbV9jb250YWN0X3ZhbHVlc1skbmFtZV0pID8gJHplbV9jb250YWN0X3ZhbHVlc1sk bmFtZV0gOiAnJzsKICAgIH0gZWxzZWlmICgkbGFiZWwpIHsKICAgICAgICAkc3RyID0gaXNz ZXQoJHplbV9jb250YWN0X2Zvcm1bJG5hbWVdKSA/ICR6ZW1fY29udGFjdF9mb3JtWyRuYW1l XSA6ICcnOwogICAgfQoKICAgIHJldHVybiB0cmltKCRzdHIpOwp9CgovKioKICogUmV0dXJu IHRoZSBsYWJlbCBmb3IgdGhlIGdpdmVuIGF0dHJpYnV0ZS4KICoKICogQHBhcmFtICBhcnJh eSAkYXR0cyBBdHRyaWJ1dGUgbmFtZSB0byByZXR1cm4KICogQHJldHVybiBzdHJpbmcKICov CmZ1bmN0aW9uIHplbV9jb250YWN0X2xhYmVsKCRhdHRzKQp7CiAgICBnbG9iYWwgJHplbV9j b250YWN0X2xhYmVsczsKCiAgICBleHRyYWN0KGxBdHRzKGFycmF5KAogICAgICAgICduYW1l JyA9PiAnJywKICAgICksICRhdHRzKSk7CgogICAgaWYgKCRuYW1lKSB7CiAgICAgICAgcmV0 dXJuIGlzc2V0KCR6ZW1fY29udGFjdF9sYWJlbHNbJG5hbWVdKSA/ICR6ZW1fY29udGFjdF9s YWJlbHNbJG5hbWVdIDogJyc7CiAgICB9CgogICAgcmV0dXJuICcnOwp9CgovKioKICogQ29u ZGl0aW9uYWwgdGFnIGZvciBjaGVja2luZyB2YXJpYWJsZSBjb25kaXRpb25zLgogKgogKiBA cGFyYW0gIGFycmF5ICAkYXR0cyAgQXR0cmlidXRlcyB0byBjaGVjawogKiBAcGFyYW0gIHN0 cmluZyAkdGhpbmcgVGFnJ3MgY29udGFpbmVyIGNvbnRlbnQKICogQHJldHVybiBzdHJpbmcK ICovCmZ1bmN0aW9uIHplbV9jb250YWN0X2lmKCRhdHRzLCAkdGhpbmcgPSBudWxsKQp7CiAg ICBleHRyYWN0KGxBdHRzKGFycmF5KAogICAgICAgICdsYWJlbCcgPT4gJycsCiAgICAgICAg J25hbWUnICA9PiAnJywKICAgICAgICAndmFsdWUnID0+IG51bGwsCiAgICApLCAkYXR0cykp OwoKICAgICR2YWwgPSB6ZW1fY29udGFjdF92YWx1ZShhcnJheSgKICAgICAgICAnbGFiZWwn ID0+ICRsYWJlbCwKICAgICAgICAnbmFtZScgID0+ICRuYW1lLAogICAgKSk7CgogICAgaWYg KCR2YWwpIHsKICAgICAgICAkY29uZCA9ICgkdmFsdWUgPT09IG51bGwgfHwgJHZhbCA9PSAk dmFsdWUpOwogICAgfSBlbHNlIHsKICAgICAgICAkY29uZCA9IGZhbHNlOwogICAgfQoKICAg IHJldHVybiBwYXJzZShFdmFsRWxzZSgkdGhpbmcsICRjb25kKSk7Cn0iO3M6NDoidHlwZSI7 czoxOiIwIjtzOjU6Im9yZGVyIjtzOjE6IjUiO3M6NToiZmxhZ3MiO3M6MToiMCI7czo0OiJo ZWxwIjtzOjY1NTM1OiI8aDE+WmVtIENvbnRhY3QgUmVib3JuPC9oMT4KCjxwPkEgVGV4dHBh dHRlcm4gPHNwYW4gY2xhc3M9ImNhcHMiPkNNUzwvc3Bhbj4gZm9ybSBtYWlsZXIgcGx1Z2lu LiA8Y29kZT4mbHQ7dHhwOnplbV9jb250YWN0IC8mZ3Q7PC9jb2RlPiBwcm9kdWNlcyBhIGZs ZXhpYmxlLCBjdXN0b21pc2FibGUgZW1haWwgY29udGFjdCBmb3JtLiBJdCBpcyBpbnRlbmRl ZCBmb3IgdXNlIGFzIGFuIGVucXVpcnkgZm9ybSBmb3IgY29tbWVyY2lhbCBhbmQgcHJpdmF0 ZSBzaXRlcywgYW5kIGluY2x1ZGVzIHNldmVyYWwgZmVhdHVyZXMgdG8gaGVscCByZWR1Y2Ug Y29tbW9uIHByb2JsZW1zIHdpdGggc3VjaCBmb3JtcyAoaW52YWxpZCBlbWFpbCBhZGRyZXNz ZXMsIG1pc3NpbmcgaW5mb3JtYXRpb24pLjwvcD4KCjxwPlBsZWFzZSByZXBvcnQgYnVncyBh bmQgcHJvYmxlbXMgd2l0aCB0aGlzIHBsdWdpbiBhdCA8YSBocmVmPSJodHRwczovL2dpdGh1 Yi5jb20vQmxva2UvemVtX2NvbnRhY3RfcmVib3JuL2lzc3VlcyI+dGhlIEdpdEh1YiBwcm9q ZWN0JiM4MjE3O3MgaXNzdWVzIHBhZ2U8L2E+LjwvcD4KCjxoMj5Db250ZW50czwvaDI+Cgo8 dWw+Cgk8bGk+PGEgaHJlZj0iI2ZlYXR1cmVzIj5GZWF0dXJlczwvYT48L2xpPgoJPGxpPjxh IGhyZWY9IiNpbnN0YWxsIj5JbnN0YWxsaW5nIGFuZCB1cGdyYWRpbmc8L2E+PC9saT4KCTxs aT48YSBocmVmPSIjZGlmZmVyZW5jZXMiPkRpZmZlcmVuY2VzIGZyb20gcHJldmlvdXMgdmVy c2lvbjwvYT48L2xpPgoJPGxpPjxhIGhyZWY9IiN1c2FnZSI+VXNhZ2U8L2E+PC9saT4KCTxs aT48YSBocmVmPSIjdGFncyI+VGFnczwvYT4KCTx1bD4KCQk8bGk+PGEgaHJlZj0iI3pjIj56 ZW1fY29udGFjdCB0YWc8L2E+PC9saT4KCQk8bGk+PGEgaHJlZj0iI3pjX3RleHQiPnplbV9j b250YWN0X3RleHQgdGFnPC9hPjwvbGk+CgkJPGxpPjxhIGhyZWY9IiN6Y19lbWFpbCI+emVt X2NvbnRhY3RfZW1haWwgdGFnPC9hPjwvbGk+CgkJPGxpPjxhIGhyZWY9IiN6Y190ZXh0YXJl YSI+emVtX2NvbnRhY3RfdGV4dGFyZWEgdGFnPC9hPjwvbGk+CgkJPGxpPjxhIGhyZWY9IiN6 Y19zdWJtaXQiPnplbV9jb250YWN0X3N1Ym1pdCB0YWc8L2E+PC9saT4KCQk8bGk+PGEgaHJl Zj0iI3pjX3NlbGVjdCI+emVtX2NvbnRhY3Rfc2VsZWN0IHRhZzwvYT48L2xpPgoJCTxsaT48 YSBocmVmPSIjemNfb3B0aW9uIj56ZW1fY29udGFjdF9vcHRpb24gdGFnPC9hPjwvbGk+CgkJ PGxpPjxhIGhyZWY9IiN6Y19jaGVja2JveCI+emVtX2NvbnRhY3RfY2hlY2tib3ggdGFnPC9h PjwvbGk+CgkJPGxpPjxhIGhyZWY9IiN6Y19yYWRpbyI+emVtX2NvbnRhY3RfcmFkaW8gdGFn PC9hPjwvbGk+CgkJPGxpPjxhIGhyZWY9IiN6Y19zZWNyZXQiPnplbV9jb250YWN0X3NlY3Jl dCB0YWc8L2E+PC9saT4KCQk8bGk+PGEgaHJlZj0iI3pjX3NlcnZlcmluZm8iPnplbV9jb250 YWN0X3NlcnZlcmluZm8gdGFnPC9hPjwvbGk+CgkJPGxpPjxhIGhyZWY9IiN6Y19zZW5kX2Fy dGljbGUiPnplbV9jb250YWN0X3NlbmRfYXJ0aWNsZSB0YWc8L2E+PC9saT4KCQk8bGk+PGEg aHJlZj0iI3pjX2xhYmVsIj56ZW1fY29udGFjdF9sYWJlbCB0YWc8L2E+PC9saT4KCQk8bGk+ PGEgaHJlZj0iI3pjX3ZhbHVlIj56ZW1fY29udGFjdF92YWx1ZSB0YWc8L2E+PC9saT4KCQk8 bGk+PGEgaHJlZj0iI3pjX2lmIj56ZW1fY29udGFjdF9pZiB0YWc8L2E+PC9saT4KCTwvdWw+ PC9saT4KCTxsaT48YSBocmVmPSIjYWR2YW5jZWQiPkFkdmFuY2VkIGV4YW1wbGVzPC9hPgoJ PHVsPgoJCTxsaT48YSBocmVmPSIjYWR2YW5jZWQxIj5TZXBhcmF0ZSBpbnB1dCBhbmQgZXJy b3IgZm9ybXM8L2E+PC9saT4KCQk8bGk+PGEgaHJlZj0iI2FkdmFuY2VkMiI+VXNlciBzZWxl Y3RhYmxlIHN1YmplY3QgZmllbGQ8L2E+PC9saT4KCQk8bGk+PGEgaHJlZj0iI2FkdmFuY2Vk MyI+VXNlciBzZWxlY3RhYmxlIHJlY2lwaWVudCwgd2l0aG91dCBzaG93aW5nIGVtYWlsIGFk ZHJlc3M8L2E+PC9saT4KCTwvdWw+PC9saT4KCTxsaT48YSBocmVmPSIjc3R5bGluZyI+U3R5 bGluZzwvYT48L2xpPgoJPGxpPjxhIGhyZWY9IiNhcGkiPlBsdWdpbiA8c3BhbiBjbGFzcz0i Y2FwcyI+QVBJPC9zcGFuPiBhbmQgY2FsbGJhY2sgZXZlbnRzPC9hPjwvbGk+Cgk8bGk+PGEg aHJlZj0iI2ZhcSI+RnJlcXVlbnRseSBhc2tlZCBxdWVzdGlvbnM8L2E+PC9saT4KCTxsaT48 YSBocmVmPSIjaGlzdG9yeSI+SGlzdG9yeTwvYT48L2xpPgoJPGxpPjxhIGhyZWY9IiNjcmVk aXRzIj5BdXRob3JzL2NyZWRpdHM8L2E+PC9saT4KPC91bD4KCjxoMiBpZD0iZmVhdHVyZXMi PkZlYXR1cmVzPC9oMj4KCjx1bD4KCTxsaT5BcmJpdHJhcnkgSFRNTDUgdGV4dCBmaWVsZHMg Y2FuIGJlIHNwZWNpZmllZCwgd2l0aCBtaW4vbWF4L3JlcXVpcmVkIHNldHRpbmdzIGZvciB2 YWxpZGF0aW9uLjwvbGk+Cgk8bGk+RW1haWwgYWRkcmVzcyB2YWxpZGF0aW9uLCBpbmNsdWRp bmcgYSBjaGVjayBmb3IgYSB2YWxpZCBNWCByZWNvcmQgKFVuaXggb25seSkuPC9saT4KCTxs aT5TYWZlIGVzY2FwaW5nIG9mIGlucHV0IGRhdGEuPC9saT4KCTxsaT48c3BhbiBjbGFzcz0i Y2FwcyI+VVRGPC9zcGFuPi04IHNhZmUuPC9saT4KCTxsaT5BY2Nlc3NpYmxlIGZvcm0gbGF5 b3V0LCBpbmNsdWRpbmcgPGNvZGU+Jmx0O2xhYmVsJmd0OzwvY29kZT4sIDxjb2RlPiZsdDts ZWdlbmQmZ3Q7PC9jb2RlPiBhbmQgPGNvZGU+Jmx0O2ZpZWxkc2V0Jmd0OzwvY29kZT4gdGFn cy48L2xpPgoJPGxpPlZhcmlvdXMgY2xhc3NlcyBhbmQgaWRzIHRvIGFsbG93IGVhc3kgc3R5 bGluZyBvZiBhbGwgcGFydHMgb2YgdGhlIGZvcm0uPC9saT4KCTxsaT5TcGFtIHByZXZlbnRp b24gPHNwYW4gY2xhc3M9ImNhcHMiPkFQSTwvc3Bhbj4gKHVzZWQgYnkgVHJhbnF1aWxsbyYj ODIxNztzIDxjb2RlPnBhcF9jb250YWN0X2NsZWFuZXI8L2NvZGU+IHBsdWdpbikgYW5kIGRl bGl2ZXJ5IDxzcGFuIGNsYXNzPSJjYXBzIj5BUEk8L3NwYW4+IGZvciBhbHRlcmluZyBvciBl eHRlbmRpbmcgdGhlIHBsdWdpbiYjODIxNztzIGNhcGFiaWxpdGllcy48L2xpPgo8L3VsPgoK PGgyIGlkPSJpbnN0YWxsIj5JbnN0YWxsaW5nIGFuZCB1cGdyYWRpbmc8L2gyPgoKPHA+PHN0 cm9uZz5SZXF1aXJlcyBUZXh0cGF0dGVybiA0LjUuMCs8L3N0cm9uZz48L3A+Cgo8cD5Eb3du bG9hZCB0aGUgbGF0ZXN0IHJlbGVhc2Ugb2YgdGhlIHBsdWdpbiBmcm9tIDxhIGhyZWY9Imh0 dHBzOi8vZ2l0aHViLmNvbS9CbG9rZS96ZW1fY29udGFjdF9yZWJvcm4vcmVsZWFzZXMiPnRo ZSBHaXRIdWIgcHJvamVjdCBwYWdlPC9hPiwgcGFzdGUgdGhlIGNvZGUgaW50byB0aGUgVGV4 dHBhdHRlcm4gQWRtaW4g4oaSIFBsdWdpbnMgcGFuZWwsIGluc3RhbGwgYW5kIGVuYWJsZSB0 aGUgcGx1Z2luLiBWaXNpdCB0aGUgPGEgaHJlZj0iaHR0cDovL2ZvcnVtLnRleHRwYXR0ZXJu LmNvbS92aWV3dG9waWMucGhwP2lkPTQ2Nzk4Ij5mb3J1bSB0aHJlYWQ8L2E+IGZvciBtb3Jl IGluZm8gb3IgdG8gcmVwb3J0IG9uIHRoZSBzdWNjZXNzIG9yIG90aGVyd2lzZSBvZiB0aGUg cGx1Z2luLjwvcD4KCjxwPlRvIHVuaW5zdGFsbCwgZGVsZXRlIGZyb20gdGhlIEFkbWluIOKG kiBQbHVnaW5zIHBhbmVsLjwvcD4KCjxoMiBpZD0iZGlmZmVyZW5jZXMiPkRpZmZlcmVuY2Vz IGZyb20gcHJldmlvdXMgdmVyc2lvbjwvaDI+Cgo8cD5JZiB1cGdyYWRpbmcgZnJvbSB2NC4w LjMuMjAsIHBsZWFzZSBub3RlIHRoZXNlIGRpZmZlcmVuY2VzOjwvcD4KCjx1bD4KCTxsaT5E aXNhYmxlIG9yIHJlbW92ZSB0aGUgemVtX2NvbnRhY3RfbGFuZyBwbHVnaW4uIExhbmd1YWdl IHN0cmluZ3MgYXJlIG5vdyBidW5kbGVkIGFzIHBhcnQgb2YgdGhlIHBsdWdpbiBpdHNlbGYu IElmIHlvdSBoYXZlIGEgdHJhbnNsYXRpb24gVGV4dHBhY2sgYXZhaWxhYmxlIHRoYXQgaXMg bm90IHlldCBidW5kbGVkLCBwbGVhc2Ugc3VibWl0IGl0IGZvciBpbmNsdXNpb24uPC9saT4K CTxsaT5DbGFzc2VzIGJhc2VkIG9uIHRoZSBpbnB1dCBlbGVtZW50IDxjb2RlPm5hbWU8L2Nv ZGU+IGFyZSBubyBsb25nZXIgYXV0b21hdGljYWxseSBhcHBsaWVkLiBPbmx5IGRlZmF1bHQg Y2xhc3MgbmFtZXMgYmVnaW5uaW5nIHdpdGggPGNvZGU+emVtPC9jb2RlPiBhcmUgc2V0LiBU byBlbXBsb3kgY3VzdG9tIGNsYXNzZXMsIHVzZSB0aGUgPGNvZGU+Y2xhc3M8L2NvZGU+IGF0 dHJpYnV0ZSBmb3IgZWFjaCB0YWcsIG9yIHRoZSBnbG9iYWwgPGNvZGU+Y2xhc3NlczwvY29k ZT4gYXR0cmlidXRlIHRvIHNldCBuYW1lcyBmb3IgZXJyb3IgYW5kIGluZm9ybWF0aW9uIG1l c3NhZ2VzLjwvbGk+Cgk8bGk+SWYgeW91ciBzaXRlJiM4MjE3O3MgRG9jdHlwZSBwcmVmZXJl bmNlIGlzIHNldCB0byA8Y29kZT5odG1sNTwvY29kZT4geW91IG1heSB1c2UgSFRNTDUgYXR0 cmlidXRlcyBpbiB5b3VyIHRhZ3MuIE90aGVyd2lzZSwgdGhleSB3aWxsIGJlIGlnbm9yZWQu PC9saT4KCTxsaT5WYWxpZGF0aW9uIG9mIHJlcXVpcmVkIGVsZW1lbnRzIGFuZCBtaW4vbWF4 IGNvbnN0cmFpbnRzIGlzIGRvbmUgYnkgdGhlIGJyb3dzZXIgZmlyc3QsIGFuZCB0aGUgcGx1 Z2luIHNlY29uZC4gU28gaWYgeW91IHNwZWNpZnkgYSBmaWVsZCBpcyByZXF1aXJlZCBhbmQg aXQgaXMgbGVmdCBlbXB0eSwgdGhlIGJyb3dzZXIgd2lsbCB1c3VhbGx5IHByZXZlbnQgdGhl IGZvcm0gYmVpbmcgc3VibWl0dGVkLiBUbyBieXBhc3MgKG1vc3Qgb2YpIHRoZSBicm93c2Vy IGNoZWNrcywgc3BlY2lmeSA8Y29kZT5icm93c2VyX3ZhbGlkYXRlPSZxdW90OzAmcXVvdDs8 L2NvZGU+IGluIHlvdXIgPGNvZGU+Jmx0O3R4cDp6ZW1fY29udGFjdCAvJmd0OzwvY29kZT4g dGFnLjwvbGk+CjwvdWw+Cgo8aDIgaWQ9InVzYWdlIj5Vc2FnZTwvaDI+Cgo8aDM+Q29udGFj dCBmb3JtPC9oMz4KCjxwPlRoZSBzaW1wbGVzdCBmb3JtIGlzIHNob3duIGJlbG93LCB3aGlj aCBwcm9kdWNlcyBhIGRlZmF1bHQgZm9ybSB3aXRoICYjODIxNjtOYW1lJiM4MjE3OywgJiM4 MjE2O0VtYWlsJiM4MjE3OyBhbmQgJiM4MjE2O01lc3NhZ2UmIzgyMTc7IGZpZWxkcy4gRW1h aWwgd2lsbCBiZSBkZWxpdmVyZWQgdG8gPGNvZGU+cmVjaXBpZW50QGV4YW1wbGUuY29tPC9j b2RlPiwgd2l0aCB0aGUgdXNlciYjODIxNztzIHN1cHBsaWVkIGVtYWlsIGFzIHRoZSA8Y29k ZT5Gcm9tOjwvY29kZT4gYWRkcmVzcy48L3A+Cgo8cHJlPjxjb2RlPiZsdDt0eHA6emVtX2Nv bnRhY3QgdG89JnF1b3Q7cmVjaXBpZW50QGV4YW1wbGUuY29tJnF1b3Q7IC8mZ3Q7PC9jb2Rl PjwvcHJlPgoKPHA+VG8gc3BlY2lmeSBmaWVsZHMgZXhwbGljaXRseSwgdXNlIHNvbWV0aGlu ZyBsaWtlIHRoaXM6PC9wPgoKPHByZT48Y29kZT4mbHQ7dHhwOnplbV9jb250YWN0IHRvPSZx dW90O3JlY2lwaWVudEBleGFtcGxlLmNvbSZxdW90OyZndDsKICAgICZsdDt0eHA6emVtX2Nv bnRhY3RfZW1haWwgLyZndDsKICAgICZsdDt0eHA6emVtX2NvbnRhY3RfdGV4dCBsYWJlbD0m cXVvdDtQaG9uZSZxdW90OyBtaW49JnF1b3Q7NyZxdW90OyBtYXg9JnF1b3Q7MTUmcXVvdDsg LyZndDsKICAgICZsdDt0eHA6emVtX2NvbnRhY3RfdGV4dGFyZWEgbGFiZWw9JnF1b3Q7WW91 ciBxdWVzdGlvbiZxdW90OyAvJmd0OwogICAgJmx0O3R4cDp6ZW1fY29udGFjdF9zdWJtaXQg bGFiZWw9JnF1b3Q7U2VuZCZxdW90OyAvJmd0OwombHQ7L3R4cDp6ZW1fY29udGFjdCZndDs8 L2NvZGU+PC9wcmU+Cgo8cD5BbHRlcm5hdGl2ZWx5LCBwbGFjZSB0aGUgZmllbGQgc3BlY2lm aWNhdGlvbnMgaW4gYSBUZXh0cGF0dGVybiBmb3JtLCBhbmQgY2FsbCBpdCBsaWtlIHRoaXM6 PC9wPgoKPHByZSBjbGFzcz0ibGFuZ3VhZ2UtbWFya3VwIj48Y29kZT4mbHQ7dHhwOnplbV9j b250YWN0IHRvPSZxdW90O3JlY2lwaWVudEBleGFtcGxlLmNvbSZxdW90OyBmb3JtPSZxdW90 O215LWNvbnRhY3QtZm9ybSZxdW90OyAvJmd0OzwvY29kZT48L3ByZT4KCjxoMz5TZW5kIGFy dGljbGU8L2gzPgoKPHA+V2l0aGluIHRoZSBjb250ZXh0IG9mIGFuIGluZGl2aWR1YWwgYXJ0 aWNsZSwgdGhpcyBwbHVnaW4gY2FuIGJlIHVzZWQgdG8gc2VuZCB0aGUgYXJ0aWNsZSAob3Ig ZXhjZXJwdCwgaWYgaXQgZXhpc3RzKSB0byBhbiBlbWFpbCBhZGRyZXNzIHNwZWNpZmllZCBi eSB0aGUgdmlzaXRvci4gVGhpcyByZXF1aXJlcyBhdCBsZWFzdCB0d28gdGFnczo8L3A+Cgo8 b2w+Cgk8bGk+PGNvZGU+emVtX2NvbnRhY3Q8L2NvZGU+LCB0byBjcmVhdGUgZm9ybSB0aGF0 IGlzIGluaXRpYWxseSBoaWRkZW4gYnkgc2V0dGluZyB0aGUgPGNvZGU+c2VuZF9hcnRpY2xl PC9jb2RlPiBhdHRyaWJ1dGUuPC9saT4KCTxsaT48Y29kZT56ZW1fY29udGFjdF9zZW5kX2Fy dGljbGU8L2NvZGU+LCB0byBjcmVhdGUgYSAmIzgyMTY7U2VuZCBhcnRpY2xlJiM4MjE3OyBs aW5rIHdoaWNoIHJldmVhbHMgdGhlIGFmb3JlbWVudGlvbmVkIGZvcm0gd2hlbiBjbGlja2Vk LjwvbGk+Cjwvb2w+Cgo8cHJlIGNsYXNzPSJsYW5ndWFnZS1tYXJrdXAiPjxjb2RlPiZsdDt0 eHA6emVtX2NvbnRhY3Qgc2VuZF9hcnRpY2xlPSZxdW90OzEmcXVvdDsgLyZndDsKJmx0O3R4 cDp6ZW1fY29udGFjdF9zZW5kX2FydGljbGUgLyZndDs8L2NvZGU+PC9wcmU+Cgo8cD5CeSBk ZWZhdWx0IHRoZSBmb3JtIGNvbnRhaW5zIGZpZWxkcyBmb3IgeW91ciBuYW1lIGFuZCBlbWFp bCBhZGRyZXNzLCB0aGUgcmVjaXBpZW50JiM4MjE3O3MgZW1haWwgYWRkcmVzcyBhbmQgYSBw ZXJzb25hbCBtZXNzYWdlLCBidXQgc2ltaWxhciB0byBjb250YWN0IGZvcm1zIHlvdSBjYW4g Y3JlYXRlIHlvdXIgb3duIGZvcm0gbGF5b3V0LiBTb21lIHRoaW5ncyB5b3UgbmVlZCB0byBr bm93OjwvcD4KCjxvbD4KCTxsaT5TZXQgdGhlIDxjb2RlPnNlbmRfYXJ0aWNsZTwvY29kZT4g YXR0cmlidXRlIHRvIDxjb2RlPjE8L2NvZGU+IGluIHRoZSA8Y29kZT56ZW1fY29udGFjdDwv Y29kZT4gdGFnLjwvbGk+Cgk8bGk+VXNlIGEgPGNvZGU+emVtX2NvbnRhY3RfZW1haWw8L2Nv ZGU+IHRhZyB3aXRoIHRoZSA8Y29kZT5zZW5kX2FydGljbGU8L2NvZGU+IGF0dHJpYnV0ZSBz ZXQgdG8gPGNvZGU+MTwvY29kZT4uIFRoaXMgZmllbGQgd2lsbCBiZSB1c2VkIGFzIHRoZSBy ZWNpcGllbnQgZW1haWwgYWRkcmVzcy48L2xpPgo8L29sPgoKPHByZSBjbGFzcz0ibGFuZ3Vh Z2UtbWFya3VwIj48Y29kZT4mbHQ7dHhwOnplbV9jb250YWN0IHRvPSZxdW90O3lvdUBleGFt cGxlLmNvbSZxdW90OyBzZW5kX2FydGljbGU9JnF1b3Q7MSZxdW90OyZndDsKICAgICZsdDt0 eHA6emVtX2NvbnRhY3RfZW1haWwgbGFiZWw9JnF1b3Q7UmVjaXBpZW50IEVtYWlsJnF1b3Q7 IHNlbmRfYXJ0aWNsZT0mcXVvdDsxJnF1b3Q7IC8mZ3Q7CiAgICAmbHQ7dHhwOnplbV9jb250 YWN0X2VtYWlsIGxhYmVsPSZxdW90O1lvdXIgRW1haWwmcXVvdDsgLyZndDsKICAgICZsdDt0 eHA6emVtX2NvbnRhY3Rfc3VibWl0IGxhYmVsPSZxdW90O1NlbmQgQXJ0aWNsZSZxdW90OyAv Jmd0OwombHQ7L3R4cDp6ZW1fY29udGFjdCZndDsKCiZsdDt0eHA6emVtX2NvbnRhY3Rfc2Vu ZF9hcnRpY2xlIC8mZ3Q7PC9jb2RlPjwvcHJlPgoKPGgyIGlkPSJ0YWdzIj5UYWdzPC9oMj4K CjxwPjxjb2RlPiZsdDt0eHA6emVtX2NvbnRhY3Rfc2VuZF9hcnRpY2xlIC8mZ3Q7PC9jb2Rl PiBjYW4gYmUgdXNlZCB0byBjcmVhdGUgYSAmIzgyMTY7U2VuZCBhcnRpY2xlJiM4MjE3OyBs aW5rIHdpdGhpbiBhbiBhcnRpY2xlIGZvcm0sIGNvbm5lY3RpbmcgaXQgdG8gdGhlIGNvbnRh Y3QgZm9ybS48L3A+Cgo8cD5BbGwgb3RoZXIgdGFncyBwcm92aWRlZCBieSB0aGlzIHBsdWdp biBjYW4gb25seSBiZSB1c2VkIGluc2lkZSBhIDxjb2RlPiZsdDt0eHA6emVtX2NvbnRhY3Qm Z3Q7PC9jb2RlPiAmIzgyMTE7IDxjb2RlPiZsdDsvdHhwOnplbV9jb250YWN0Jmd0OzwvY29k ZT4gY29udGFpbmVyIHRhZyBvciBpbiBhIFRleHRwYXR0ZXJuIGZvcm0gdXNlZCBhcyB0aGUg PGNvZGU+Zm9ybTwvY29kZT4gYXR0cmlidXRlIGluIHRoZSA8Y29kZT4mbHQ7dHhwOnplbV9j b250YWN0IC8mZ3Q7PC9jb2RlPiB0YWcuPC9wPgoKPHA+SW4gYWRkaXRpb24gdG8gdGhlIHRh Z3MgZGV0YWlsZWQgaW4gdGhlIGZvbGxvd2luZyBzZWN0aW9ucywgZXZlcnkgdGFnIGFjY2Vw dHMgYSBjb3JlIHNldCBvZiBjb21tb24gYXR0cmlidXRlcy4gVGhlc2UgYXJlOjwvcD4KCjx1 bD4KCTxsaT48Y29kZT5hY2Nlc3NrZXk9JnF1b3Q7Y2hhcmFjdGVyJnF1b3Q7PC9jb2RlPjxi ciAvPgpTaG9ydGN1dCBrZXkgdG8gc2V0IGZvY3VzIG9uIHRoZSBmaWVsZC48L2xpPgoJPGxp Pjxjb2RlPmF1dG9mb2N1cz0mcXVvdDtib29sZWFuJnF1b3Q7PC9jb2RlPjxiciAvPgpUbyBh dXRvbWF0aWNhbGx5IGZvY3VzIHRoZSBjdXJzb3IgaW4gdGhpcyBmaWVsZCBvbiBwYWdlIGxv YWQuIE9ubHkgb25lIGZpZWxkIG1heSBoYXZlIHRoaXMgcHJvcGVydHkuPC9saT4KCTxsaT48 Y29kZT5kaXI9JnF1b3Q7dmFsdWUmcXVvdDs8L2NvZGU+PGJyIC8+ClRleHQgZGlyZWN0aW9u ICg8Y29kZT5sdHI8L2NvZGU+LCA8Y29kZT5ydGw8L2NvZGU+IG9yIDxjb2RlPmF1dG88L2Nv ZGU+KS48L2xpPgoJPGxpPjxjb2RlPmRpc2FibGVkPSZxdW90O2Jvb2xlYW4mcXVvdDs8L2Nv ZGU+PGJyIC8+CldoZXRoZXIgdGhlIGlucHV0IGNvbnRyb2wgYWNjZXB0cyB1c2VyIGlucHV0 LiBJZiBzZXQsIHRoZSBlbGVtZW50IGRvZXMgbm90IGdldCBzdWJtaXR0ZWQgd2l0aCB0aGUg Zm9ybSwgbm9yIGlzIGl0IHN1YmplY3QgdG8gYW55IDxjb2RlPmNoZWNrVmFsaWRpdHkoKTwv Y29kZT4gSmF2YVNjcmlwdCBjYWxscy48L2xpPgoJPGxpPjxjb2RlPmhpZGRlbj0mcXVvdDti b29sZWFuJnF1b3Q7PC9jb2RlPjxiciAvPgpUaGUgdmlzaWJpbGl0eSBvZiB0aGUgaW5wdXQg Y29udHJvbC48L2xpPgoJPGxpPjxjb2RlPmlkPSZxdW90O2lkJnF1b3Q7PC9jb2RlPjxiciAv PgpUaGUgPHNwYW4gY2xhc3M9ImNhcHMiPkhUTUw8L3NwYW4+IGlkZW50aWZpZXIgZm9yIHRo ZSBjb250cm9sLjwvbGk+Cgk8bGk+PGNvZGU+bGFuZz0mcXVvdDt2YWx1ZSZxdW90OzwvY29k ZT48YnIgLz4KVGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5JU088L3NwYW4+IDYzOSBsYW5ndWFn ZSBzaG9ydCBjb2RlIChlLmcuIDxjb2RlPmVuLWdiPC9jb2RlPiwgPGNvZGU+ZGUtZGU8L2Nv ZGU+KSB0aGF0IGdvdmVybiB0aGUgZmllbGQuPC9saT4KCTxsaT48Y29kZT5saXN0PSZxdW90 O2lkJnF1b3Q7PC9jb2RlPjxiciAvPgpVc2VkIGluIGNvbmp1bmN0aW9uIHdpdGggdGhlIDxj b2RlPiZsdDtkYXRhbGlzdCZndDs8L2NvZGU+IHRhZyB0byBzcGVjaWZ5IGEgc2V0IG9mIG9w dGlvbnMuIFRoZSBpZCBpcyB0aGUgcmVmZXJlbmNlIHRvIHRoZSBkYXRhbGlzdCB0byB1c2Uu PC9saT4KCTxsaT48Y29kZT5yZWFkb25seT0mcXVvdDtib29sZWFuJnF1b3Q7PC9jb2RlPjxi ciAvPgpDb250cm9sIGRvZXMgbm90IGFjY2VwdCB1c2VyIGlucHV0LCBidXQgd2lsbCBiZSBw cm9jZXNzZWQgb24gZm9ybSBzdWJtaXNzaW9uIGFuZCBjYW4gYmUgdmFsaWRhdGVkLjwvbGk+ Cgk8bGk+PGNvZGU+c3BlbGxjaGVjaz0mcXVvdDt2YWx1ZSZxdW90OzwvY29kZT48YnIgLz4K V2hldGhlciB0aGUgZmllbGQgaXMgc3ViamVjdCB0byBzcGVsbCBjaGVja2luZyAoPGNvZGU+ dHJ1ZTwvY29kZT4gPSB5ZXMsIDxjb2RlPmRlZmF1bHQ8L2NvZGU+ID0gYnJvd3NlciBkZWNp ZGVzLCBvciA8Y29kZT5mYWxzZTwvY29kZT4gPSBubykuPC9saT4KCTxsaT48Y29kZT5zdHls ZT0mcXVvdDtzdHlsZSBydWxlcyZxdW90OzwvY29kZT48YnIgLz4KSW5saW5lIDxzcGFuIGNs YXNzPSJjYXBzIj5DU1M8L3NwYW4+IDxjb2RlPnN0eWxlPC9jb2RlPiBydWxlcyB0byBhcHBs eSB0byB0aGUgaW5wdXQgY29udHJvbC48L2xpPgoJPGxpPjxjb2RlPnRhYmluZGV4PSZxdW90 O251bWJlciZxdW90OzwvY29kZT48YnIgLz4KVGhlIG9yZGVyIGluIHdoaWNoIHRoZSBjdXJz b3IganVtcHMgYmV0d2VlbiBlbGVtZW50cyB3aGVuIHVzaW5nIHRoZSB0YWIga2V5LjwvbGk+ Cgk8bGk+PGNvZGU+dGl0bGU9JnF1b3Q7dmFsdWUmcXVvdDs8L2NvZGU+PGJyIC8+ClVzdWFs bHkgdXNlZCBmb3IgaG92ZXIgdG9vbHRpcCBkZXNjcmliaW5nIHRoZSBpbnB1dCBjb250cm9s JiM4MjE3O3MgdXNlIGluIHlvdXIgYXBwbGljYXRpb24uPC9saT4KCTxsaT48Y29kZT50cmFu c2xhdGU9JnF1b3Q7Ym9vbGVhbiZxdW90OzwvY29kZT48YnIgLz4KV2hldGhlciB0byBzdWJq ZWN0IHRoZSBhdHRyaWJ1dGUgY29udGVudCB0byBsYW5ndWFnZSB0cmFuc2xhdGlvbi48L2xp Pgo8L3VsPgoKPGgzIGlkPSJ6YyI+emVtX2NvbnRhY3QgdGFnPC9oMz4KCjxwcmUgY2xhc3M9 Imxhbmd1YWdlLW1hcmt1cCI+PGNvZGU+Jmx0O3R4cDp6ZW1fY29udGFjdCAvJmd0OzwvY29k ZT48L3ByZT4KCjxwPk1heSBiZSB1c2VkIGFzIGEgc2luZ2xlIChzZWxmLWNsb3NpbmcpIG9y IGNvbnRhaW5lciB0YWcuIFBsYWNlIHRoaXMgd2hlcmUgeW91IHdhbnQgdGhlIGlucHV0IGZv cm0gdG8gZ28uIFN0YXR1cyBhbmQgZXJyb3IgbWVzc2FnZXMsIGlmIGFueSwgd2lsbCBiZSBk aXNwbGF5ZWQgYmVmb3JlIHRoZSBmb3JtLjwvcD4KCjxoND5BdHRyaWJ1dGVzPC9oND4KCjx1 bD4KCTxsaT48Y29kZT5ib2R5X2Zvcm09JnF1b3Q7Zm9ybSBuYW1lJnF1b3Q7PC9jb2RlPjxi ciAvPgpVc2Ugc3BlY2lmaWVkIGZvcm0gZm9yIHRoZSBtZXNzYWdlIGJvZHkgdGV4dC48L2xp PgoJPGxpPjxjb2RlPmNsYXNzPSZxdW90O3NwYWNlLXNlcGFyYXRlZCB2YWx1ZXMmcXVvdDs8 L2NvZGU+PGJyIC8+ClNldCB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPkNTUzwvc3Bhbj4gPGNv ZGU+Y2xhc3M8L2NvZGU+IG5hbWUgb2YgdGhlIHRhZy4gRGVmYXVsdDogPGNvZGU+emVtQ29u dGFjdEZvcm08L2NvZGU+LiBUbyByZW1vdmUgPGNvZGU+Y2xhc3M8L2NvZGU+IGF0dHJpYnV0 ZSBmcm9tIHRoZSBlbGVtZW50IGVudGlyZWx5LCB1c2UgPGNvZGU+Y2xhc3M9JnF1b3Q7JnF1 b3Q7PC9jb2RlPi48L2xpPgoJPGxpPjxjb2RlPmNsYXNzZXM9JnF1b3Q7Y29tbWEtc2VwYXJh dGVkIGtleTp2YWx1ZSBwYWlycyZxdW90OzwvY29kZT48YnIgLz4KU2V0IHRoZSA8c3BhbiBj bGFzcz0iY2FwcyI+Q1NTPC9zcGFuPiBjbGFzc2VzIGZvciBlcnJvciAvIGluZm9ybWF0aW9u IGNvbmRpdGlvbnMuIFNwZWNpZnkgZWFjaCBhcyBhIHBhaXIgb2YgdmFsdWVzIHNlcGFyYXRl ZCBieSBhIGNvbG9uLCBlLmcuIDxjb2RlPmNsYXNzZXM9JnF1b3Q7cmVxdWlyZWQ6IHJlcV9m aWVsZCwgZWxlbWVudDogd2Fybl9maWVsZCZxdW90OzwvY29kZT4uIFRoZXJlIGFyZSB1cCB0 byBmb3VyIGF2YWlsYWJsZSB0byBjdXN0b21pc2U6Cgk8dWw+CgkJPGxpPjxjb2RlPmVsZW1l bnQ8L2NvZGU+OiBTZXQgZm9yIGVhY2ggZm9ybSBmaWVsZCB0aGF0IGZhaWxzIHZhbGlkYXRp b24gZm9yIGFueSByZWFzb24uIERlZmF1bHQ6IDxjb2RlPmVycm9yRWxlbWVudDwvY29kZT4u PC9saT4KCQk8bGk+PGNvZGU+d3JhcHBlcjwvY29kZT46IFRoZSBjbGFzcyB0byBzdXJyb3Vu ZCB0aGUgbGlzdCBvZiBlcnJvcnMgc2hvd24gYWJvdmUgdGhlIGZvcm0uIERlZmF1bHQ6IDxj b2RlPnplbUVycm9yPC9jb2RlPi48L2xpPgoJCTxsaT48Y29kZT5yZXF1aXJlZDwvY29kZT46 IENsYXNzIGFzc2lnbmVkIHdoZW4gYSByZXF1aXJlZCBlbGVtZW50IGlzIG5vdCBjb21wbGV0 ZWQuIERlZmF1bHQ6IDxjb2RlPnplbVJlcXVpcmVkPC9jb2RlPi48L2xpPgoJCTxsaT48Y29k ZT50aGFua3M8L2NvZGU+OiBDbGFzcyBhcHBsaWVkIHRvIHRoZSB3cmFwcGVyIGFyb3VuZCB0 aGUgPGNvZGU+dGhhbmtzX2Zvcm08L2NvZGU+LiBEZWZhdWx0OiA8Y29kZT56ZW1UaGFua3M8 L2NvZGU+LjwvbGk+Cgk8L3VsPjwvbGk+Cgk8bGk+PGNvZGU+Y29weXNlbmRlcj0mcXVvdDti b29sZWFuJnF1b3Q7PC9jb2RlPjxiciAvPgpXaGV0aGVyIHRvIHNlbmQgYSBjb3B5IG9mIHRo ZSBlbWFpbCB0byB0aGUgc2VuZGVyJiM4MjE3O3MgYWRkcmVzcy4gQXZhaWxhYmxlIHZhbHVl czogPGNvZGU+MTwvY29kZT4gKHllcykgb3IgPGNvZGU+MDwvY29kZT4gKG5vKS4gRGVmYXVs dCBpcyA8Y29kZT4wPC9jb2RlPi48L2xpPgoJPGxpPjxjb2RlPmV4cGlyZT0mcXVvdDtudW1i ZXImcXVvdDs8L2NvZGU+PGJyIC8+Ck51bWJlciBvZiBzZWNvbmRzIGFmdGVyIHdoaWNoIHRo ZSBmb3JtIHdpbGwgZXhwaXJlLCB0aHVzIHJlcXVpcmluZyBhIHBhZ2UgcmVmcmVzaCBiZWZv cmUgc2VuZGluZy4gRGVmYXVsdCBpcyA8Y29kZT42MDA8L2NvZGU+LjwvbGk+Cgk8bGk+PGNv ZGU+Zm9ybT0mcXVvdDtmb3JtIG5hbWUmcXVvdDs8L2NvZGU+PGJyIC8+ClVzZSBzcGVjaWZp ZWQgZm9ybSwgY29udGFpbmluZyB0aGUgbGF5b3V0IG9mIHRoZSBjb250YWN0IGZvcm0gZmll bGRzLjwvbGk+Cgk8bGk+PGNvZGU+ZnJvbT0mcXVvdDtlbWFpbCBhZGRyZXNzJnF1b3Q7PC9j b2RlPjxiciAvPgpFbWFpbCBhZGRyZXNzIHVzZWQgaW4gdGhlICYjODIyMDtGcm9tOiYjODIy MTsgZmllbGQgd2hlbiBzZW5kaW5nIGVtYWlsLiBEZWZhdWx0cyB0byB0aGUgc2VuZGVyJiM4 MjE3O3MgZW1haWwgYWRkcmVzcy4gSWYgc3BlY2lmaWVkLCB0aGUgc2VuZGVyJiM4MjE3O3Mg ZW1haWwgYWRkcmVzcyB3aWxsIGJlIHBsYWNlZCBpbiB0aGUgJiM4MjIwO1JlcGx5LVRvOiYj ODIyMTsgZmllbGQgaW5zdGVhZC48L2xpPgoJPGxpPjxjb2RlPmZyb21fZm9ybT0mcXVvdDtm b3JtIG5hbWUmcXVvdDs8L2NvZGU+PGJyIC8+ClVzZSBzcGVjaWZpZWQgZm9ybSAob3ZlcnJp ZGVzIDxjb2RlPmZyb208L2NvZGU+IGF0dHJpYnV0ZSkuPC9saT4KCTxsaT48Y29kZT5sYWJl bD0mcXVvdDt0ZXh0JnF1b3Q7PC9jb2RlPjxiciAvPgpMYWJlbCBmb3IgdGhlIGNvbnRhY3Qg Zm9ybS4gSWYgc2V0IHRvIGFuIGVtcHR5IHN0cmluZywgZGlzcGxheSBvZiB0aGUgZmllbGRz ZXQgYW5kIGxlZ2VuZCB0YWdzIHdpbGwgYmUgc3VwcHJlc3NlZC4gRGVmYXVsdCBpcyA8Y29k ZT5Db250YWN0PC9jb2RlPi48L2xpPgoJPGxpPjxjb2RlPmxhbmc9JnF1b3Q7bGFuZy1jb2Rl JnF1b3Q7PC9jb2RlPjxiciAvPgpPdmVycmlkZSB0aGUgbGFuZ3VhZ2Ugc3RyaW5ncyB0aGF0 IHdvdWxkIG5vcm1hbGx5IGJlIHVzZWQgZnJvbSB0aGUgY3VycmVudCBhZG1pbi1zaWRlIGxh bmd1YWdlIGluIGZvcmNlLiBlLmcuIDxjb2RlPmxhbmc9JnF1b3Q7ZnItZnImcXVvdDs8L2Nv ZGU+IHdvdWxkIGxvYWQgdGhlIEZyZW5jaCBsYW5ndWFnZSBzdHJpbmdzLiBBIFRleHRwYWNr IG11c3QgYWxyZWFkeSBleGlzdCBmb3IgdGhlIGNob3NlbiBsYW5ndWFnZS48L2xpPgoJPGxp Pjxjb2RlPmJyb3dzZXJfdmFsaWRhdGU9JnF1b3Q7Ym9vbGVhbiZxdW90OzwvY29kZT48YnIg Lz4KU2V0IHRvIDAgaWYgeW91IHdpc2ggdG8gc3RvcCB0aGUgYnJvd3NlciBmcm9tIHZhbGlk YXRpbmcgZm9ybSBmaWVsZCB2YWx1ZXMgYW5kICYjODIxNjtyZXF1aXJlZCYjODIxNzsgc3Rh dHVzIG9mIGlucHV0IGVsZW1lbnRzLiBUaGUgcGx1Z2luIGl0c2VsZiBpcyB0aGVuIHNvbGVs eSByZXNwb25zaWJsZSBmb3IgdmFsaWRhdGlvbiBhbmQgd2lsbCBpbmRpY2F0ZSBlcnJvciBj b25kaXRpb25zIGFmdGVyIHN1Ym1pc3Npb24uIERlZmF1bHQgaXMgPGNvZGU+MTwvY29kZT4u PC9saT4KCTxsaT48Y29kZT5yZWRpcmVjdD0mcXVvdDtVUkwmcXVvdDs8L2NvZGU+PGJyIC8+ ClJlZGlyZWN0IHRvIHNwZWNpZmllZCA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPiAo b3ZlcnJpZGVzIDxjb2RlPnRoYW5rczwvY29kZT4gYW5kIDxjb2RlPnRoYW5rc19mb3JtPC9j b2RlPiBhdHRyaWJ1dGVzKS4gPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4gbXVzdCBi ZSByZWxhdGl2ZSB0byB0aGUgVGV4dHBhdHRlcm4gc2l0ZSA8c3BhbiBjbGFzcz0iY2FwcyI+ VVJMPC9zcGFuPi4gRXhhbXBsZTogPGNvZGU+cmVkaXJlY3Q9JnF1b3Q7bW9ua2V5JnF1b3Q7 PC9jb2RlPiB3b3VsZCByZWRpcmVjdCB0byA8Y29kZT5odHRwOi8vZXhhbXBsZS5jb20vbW9u a2V5PC9jb2RlPi48L2xpPgoJPGxpPjxjb2RlPnJlcXVpcmVkPSZxdW90O2Jvb2xlYW4mcXVv dDs8L2NvZGU+PGJyIC8+CldoZXRoZXIgdG8gcmVxdWlyZSBhbGwgdGFncyBpbiB0aGlzIGNv bnRhY3QgZm9ybSB0byBiZSBjb21wbGV0ZWQgYmVmb3JlIHRoZSBmb3JtIGNhbiBiZSBzdWJt aXR0ZWQuIENhbiBiZSBvdmVycmlkZGVuIG9uIGEgZmllbGQtYnktZmllbGQgYmFzaXMgYnkg dXNpbmcgdGhlIDxjb2RlPnJlcXVpcmVkPC9jb2RlPiBhdHRyaWJ1dGUgaW4gdGhlIHJlbGV2 YW50IHRhZy4gQXZhaWxhYmxlIHZhbHVlczogPGNvZGU+MTwvY29kZT4gKHllcykgb3IgPGNv ZGU+MDwvY29kZT4gKG5vKS4gRGVmYXVsdCBpcyA8Y29kZT4xPC9jb2RlPi48L2xpPgoJPGxp Pjxjb2RlPnNlbmRfYXJ0aWNsZT0mcXVvdDtib29sZWFuJnF1b3Q7PC9jb2RlPjxiciAvPgpX aGV0aGVyIHRvIHVzZSB0aGlzIGZvcm0gdG8gc2VuZCBhbiBhcnRpY2xlLiBBdmFpbGFibGUg dmFsdWVzOiA8Y29kZT4xPC9jb2RlPiAoeWVzKSBvciA8Y29kZT4wPC9jb2RlPiAobm8pLiBE ZWZhdWx0IGlzIDxjb2RlPjA8L2NvZGU+LjwvbGk+Cgk8bGk+PGNvZGU+c2hvd19lcnJvcj0m cXVvdDtib29sZWFuJnF1b3Q7PC9jb2RlPjxiciAvPgpXaGV0aGVyIHRvIGRpc3BsYXkgZXJy b3IgYW5kIHN0YXR1cyBtZXNzYWdlcy4gQXZhaWxhYmxlIHZhbHVlczogPGNvZGU+MTwvY29k ZT4gKHllcykgb3IgPGNvZGU+MDwvY29kZT4gKG5vKS4gRGVmYXVsdCBpcyA8Y29kZT4xPC9j b2RlPi48L2xpPgoJPGxpPjxjb2RlPnNob3dfaW5wdXQ9JnF1b3Q7Ym9vbGVhbiZxdW90Ozwv Y29kZT48YnIgLz4KV2hldGhlciB0byBkaXNwbGF5IHRoZSBmb3JtIDxjb2RlPiZsdDtpbnB1 dCZndDs8L2NvZGU+IGZpZWxkcy4gQXZhaWxhYmxlIHZhbHVlczogPGNvZGU+MTwvY29kZT4g KHllcykgb3IgPGNvZGU+MDwvY29kZT4gKG5vKS4gRGVmYXVsdCBpcyA8Y29kZT4xPC9jb2Rl Pi48L2xpPgoJPGxpPjxjb2RlPnN1YmplY3Q9JnF1b3Q7c3ViamVjdCB0ZXh0JnF1b3Q7PC9j b2RlPjxiciAvPgpTdWJqZWN0IHVzZWQgd2hlbiBzZW5kaW5nIGFuIGVtYWlsLiBEZWZhdWx0 IGlzIHRoZSBzaXRlIG5hbWUuPC9saT4KCTxsaT48Y29kZT5zdWJqZWN0X2Zvcm09JnF1b3Q7 Zm9ybSBuYW1lJnF1b3Q7PC9jb2RlPjxiciAvPgpVc2Ugc3BlY2lmaWVkIGZvcm0gKG92ZXJy aWRlcyA8Y29kZT5zdWJqZWN0PC9jb2RlPiBhdHRyaWJ1dGUpLjwvbGk+Cgk8bGk+PGNvZGU+ dGhhbmtzPSZxdW90O3RleHQmcXVvdDs8L2NvZGU+PGJyIC8+Ck1lc3NhZ2Ugc2hvd24gYWZ0 ZXIgc3VjY2Vzc2Z1bGx5IHN1Ym1pdHRpbmcgYSBtZXNzYWdlLiBEZWZhdWx0IGlzIDxjb2Rl PlRoYW5rIHlvdSwgeW91ciBtZXNzYWdlIGhhcyBiZWVuIHNlbnQ8L2NvZGU+LjwvbGk+Cgk8 bGk+PGNvZGU+dGhhbmtzX2Zvcm09JnF1b3Q7Zm9ybSBuYW1lJnF1b3Q7PC9jb2RlPjxiciAv PgpVc2Ugc3BlY2lmaWVkIGZvcm0gKG92ZXJyaWRlcyA8Y29kZT50aGFua3M8L2NvZGU+IGF0 dHJpYnV0ZSkuPC9saT4KCTxsaT48Y29kZT50bz0mcXVvdDtlbWFpbCBhZGRyZXNzJnF1b3Q7 PC9jb2RlPiA8c3BhbiBjbGFzcz0id2FybmluZyI+cmVxdWlyZWQ8L3NwYW4+PGJyIC8+ClJl Y2lwaWVudCBlbWFpbCBhZGRyZXNzLiBNdWx0aXBsZSByZWNpcGllbnRzIGNhbiBiZSBzcGVj aWZpZWQsIHNlcGFyYXRlZCBieSBjb21tYXMuPC9saT4KCTxsaT48Y29kZT50b19mb3JtPSZx dW90O2Zvcm0gbmFtZSZxdW90OzwvY29kZT48YnIgLz4KVXNlIHNwZWNpZmllZCBmb3JtIChv dmVycmlkZXMgPGNvZGU+dG88L2NvZGU+IGF0dHJpYnV0ZSkuPC9saT4KPC91bD4KCjxoND5F eGFtcGxlczwvaDQ+Cgo8aDU+RXhhbXBsZSAxPC9oNT4KCjxwPldoZW4gdXNlZCBhcyBhIHNp bmdsZSB0YWcsIHByb2R1Y2VzIGEgZGVmYXVsdCBmb3JtIHdpdGggJiM4MjE2O05hbWUmIzgy MTc7LCAmIzgyMTY7RW1haWwmIzgyMTc7IGFuZCAmIzgyMTY7TWVzc2FnZSYjODIxNzsgZmll bGRzLiBFbWFpbCB3aWxsIGJlIGRlbGl2ZXJlZCB0byA8Y29kZT5yZWNpcGllbnRAZXhhbXBs ZS5jb208L2NvZGU+LCB3aXRoIHRoZSB1c2VyJiM4MjE3O3Mgc3VwcGxpZWQgZW1haWwgYXMg dGhlIDxjb2RlPkZyb206PC9jb2RlPiBhZGRyZXNzOjwvcD4KCjxwcmUgY2xhc3M9Imxhbmd1 YWdlLW1hcmt1cCI+PGNvZGU+Jmx0O3R4cDp6ZW1fY29udGFjdCB0bz0mcXVvdDtyZWNpcGll bnRAZXhhbXBsZS5jb20mcXVvdDsgLyZndDs8L2NvZGU+PC9wcmU+Cgo8aDU+RXhhbXBsZSAy PC9oNT4KCjxwPldoZW4gdXNlZCBhcyBhIGNvbnRhaW5lciB0YWcsIG11Y2ggbW9yZSBmbGV4 aWJpbGl0eSBpcyBhbGxvd2VkLCBmb3IgZXhhbXBsZTo8L3A+Cgo8cHJlIGNsYXNzPSJsYW5n dWFnZS1tYXJrdXAiPjxjb2RlPiZsdDt0eHA6emVtX2NvbnRhY3QgdG89JnF1b3Q7cmVjaXBp ZW50QGV4YW1wbGUuY29tJnF1b3Q7Jmd0OwogICAgJmx0O3R4cDp6ZW1fY29udGFjdF9lbWFp bCAvJmd0OwogICAgJmx0O3R4cDp6ZW1fY29udGFjdF90ZXh0IHR5cGU9JnF1b3Q7dGVsJnF1 b3Q7IGxhYmVsPSZxdW90O1Bob25lJnF1b3Q7IG1pbj0mcXVvdDs3JnF1b3Q7IG1heD0mcXVv dDsxNSZxdW90OyAvJmd0OwogICAgJmx0O3R4cDp6ZW1fY29udGFjdF90ZXh0YXJlYSBsYWJl bD0mcXVvdDtZb3VyIHF1ZXN0aW9uJnF1b3Q7IC8mZ3Q7CiAgICAmbHQ7dHhwOnplbV9jb250 YWN0X3N1Ym1pdCBsYWJlbD0mcXVvdDtTZW5kJnF1b3Q7IC8mZ3Q7CiZsdDsvdHhwOnplbV9j b250YWN0Jmd0OzwvY29kZT48L3ByZT4KCjxoNT5FeGFtcGxlIDM8L2g1PgoKPHA+RXhhbXBs ZSB3aXRoIGN1c3RvbSBlbWFpbCBtZXNzYWdlIGZvcm1hdHRpbmcsIGNhbGxlZCB2aWEgdGhl IDxjb2RlPmJvZHlfZm9ybTwvY29kZT4gYXR0cmlidXRlOjwvcD4KCjxwcmUgY2xhc3M9Imxh bmd1YWdlLW1hcmt1cCI+PGNvZGU+Jmx0O3R4cDp6ZW1fY29udGFjdCB0bz0mcXVvdDtyZWNp cGllbnRAZXhhbXBsZS5jb20mcXVvdDsgYm9keV9mb3JtPSZxdW90O21lc3NhZ2UtZm9ybWF0 dGluZyZxdW90OyAvJmd0OzwvY29kZT48L3ByZT4KCjxwPkFuZCB0aGUgPGNvZGU+Ym9keV9m b3JtPC9jb2RlPiBmb3JtIHRlbXBsYXRlIG5hbWVkIDxjb2RlPm1lc3NhZ2UtZm9ybWF0dGlu ZzwvY29kZT4gaXMgYXMgZm9sbG93czo8L3A+Cgo8cHJlPjxjb2RlPj09PT09PT09PT09PQpF bWFpbCByZWNlaXZlZC4KCiZsdDt0eHA6emVtX2NvbnRhY3RfaWYgbmFtZT0mcXVvdDtlbWFp bCZxdW90OyZndDsmbHQ7dHhwOnplbV9jb250YWN0X2xhYmVsIG5hbWU9JnF1b3Q7ZW1haWwm cXVvdDsgLyZndDs6ICZsdDt0eHA6emVtX2NvbnRhY3RfdmFsdWUgbmFtZT0mcXVvdDtlbWFp bCZxdW90OyAvJmd0OyZsdDt0eHA6ZWxzZSAvJmd0O01yLiBOb2JvZHkmbHQ7L3R4cDp6ZW1f Y29udGFjdF9pZiZndDsgd3JvdGU6CgombHQ7dHhwOnplbV9jb250YWN0X2lmIG5hbWU9JnF1 b3Q7bWVzc2FnZSZxdW90OyZndDsmbHQ7dHhwOnplbV9jb250YWN0X3ZhbHVlIG5hbWU9JnF1 b3Q7bWVzc2FnZSZxdW90OyAvJmd0OyZsdDt0eHA6ZWxzZSAvJmd0O05vdGhpbmcgbXVjaCA6 KCZsdDsvdHhwOnplbV9jb250YWN0X2lmJmd0OwoKPT09PT09PT09PT09PC9jb2RlPjwvcHJl PgoKPGgzIGlkPSJ6Y190ZXh0Ij56ZW1fY29udGFjdF90ZXh0IHRhZzwvaDM+Cgo8cHJlIGNs YXNzPSJsYW5ndWFnZS1tYXJrdXAiPjxjb2RlPiZsdDt0eHA6emVtX2NvbnRhY3RfdGV4dCAv Jmd0OzwvY29kZT48L3ByZT4KCjxwPkNyZWF0ZXMgYSB0ZXh0IDxjb2RlPiZsdDtpbnB1dCZn dDs8L2NvZGU+IGZpZWxkIGFuZCBjb3JyZXNwb25kaW5nIDxjb2RlPiZsdDtsYWJlbCZndDs8 L2NvZGU+IHRhZy4gVGhlIGlucHV0IHZhbHVlIHdpbGwgYmUgaW5jbHVkZWQgaW4gdGhlIGVt YWlsLCBwcmVjZWRlZCBieSB0aGUgbGFiZWwuPGJyIC8+CkNyZWF0ZXMgYSB0ZXh0IDxjb2Rl PiZsdDtpbnB1dCZndDs8L2NvZGU+IGZpZWxkLiBUaGUgaW5wdXQgdmFsdWUgd2lsbCBiZSBp bmNsdWRlZCBpbiB0aGUgZW1haWwsIHByZWNlZGVkIGJ5IHRoZSBsYWJlbC48L3A+Cgo8aDQ+ QXR0cmlidXRlczwvaDQ+Cgo8dWw+Cgk8bGk+PGNvZGU+YXV0b2NvbXBsZXRlPSZxdW90O3Zh bHVlJnF1b3Q7PC9jb2RlPjxiciAvPgpJbmRpY2F0ZXMgd2hldGhlciB0aGUgdmFsdWUgb2Yg dGhlIGNvbnRyb2wgY2FuIGJlIGF1dG9tYXRpY2FsbHkgY29tcGxldGVkIGJ5IHRoZSBicm93 c2VyLiBUaGlzIGF0dHJpYnV0ZSBpcyBpZ25vcmVkIGlmIHRoZSB2YWx1ZSBvZiB0aGUgdHlw ZSBhdHRyaWJ1dGUgaXMgPGNvZGU+cGFzc3dvcmQ8L2NvZGU+LiBQb3NzaWJsZSB2YWx1ZXMg YXJlOiA8Y29kZT5vZmY8L2NvZGU+ICh0aGUgYnJvd3NlciBkb2VzIG5vdCBhdXRvbWF0aWNh bGx5IGNvbXBsZXRlIHRoZSBlbnRyeSkgb3IgPGNvZGU+b248L2NvZGU+ICh0aGUgYnJvd3Nl ciBjYW4gYXV0b21hdGljYWxseSBjb21wbGV0ZSB0aGUgdmFsdWUgYmFzZWQgb24gdmFsdWVz IHRoYXQgdGhlIHVzZXIgaGFzIGVudGVyZWQgZHVyaW5nIHByZXZpb3VzIHVzZXMpLiBEZWZh dWx0IGlzIHVuc2V0LjwvbGk+Cgk8bGk+PGNvZGU+YnJlYWs9JnF1b3Q7dGFnJnF1b3Q7PC9j b2RlPjxiciAvPgpCcmVhayB0YWcgYmV0d2VlbiB0aGUgPGNvZGU+Jmx0O2xhYmVsJmd0Ozwv Y29kZT4gYW5kIDxjb2RlPiZsdDtpbnB1dCZndDs8L2NvZGU+IGZpZWxkLiBEZWZhdWx0IGlz IDxjb2RlPiZsdDticiAvJmd0OzwvY29kZT4uIFVzZSA8Y29kZT5icmVhaz0mcXVvdDsmcXVv dDs8L2NvZGU+IHRvIHB1dCB0aGUgbGFiZWwgYW5kIGlucHV0IGZpZWxkIG9uIHRoZSBzYW1l IGxpbmUuPC9saT4KCTxsaT48Y29kZT5jbGFzcz0mcXVvdDtzcGFjZS1zZXBhcmF0ZWQgdmFs dWVzJnF1b3Q7PC9jb2RlPjxiciAvPgogU2V0IHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+Q1NT PC9zcGFuPiA8Y29kZT5jbGFzczwvY29kZT4gbmFtZSBvZiB0aGUgdGFnLiBEZWZhdWx0OiA8 Y29kZT56ZW1UZXh0PC9jb2RlPi4gVG8gcmVtb3ZlIDxjb2RlPmNsYXNzPC9jb2RlPiBhdHRy aWJ1dGUgZnJvbSB0aGUgZWxlbWVudCBlbnRpcmVseSwgdXNlIDxjb2RlPmNsYXNzPSZxdW90 OyZxdW90OzwvY29kZT4uPC9saT4KCTxsaT48Y29kZT5kZWZhdWx0PSZxdW90O3ZhbHVlJnF1 b3Q7PC9jb2RlPjxiciAvPgpEZWZhdWx0IHZhbHVlIHdoZW4gbm8gaW5wdXQgaXMgcHJvdmlk ZWQuPC9saT4KCTxsaT48Y29kZT5odG1sX2Zvcm09JnF1b3Q7aWQmcXVvdDs8L2NvZGU+PGJy IC8+ClRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+SFRNTDwvc3Bhbj4gPGNvZGU+aWQ8L2NvZGU+ IG9mIHRoZSA8Y29kZT4mbHQ7Zm9ybSZndDs8L2NvZGU+IHRhZyB0byB3aGljaCB0aGUgZmll bGQgaXMgYXR0YWNoZWQuIEFzc29jaWF0ZWQgd2l0aCB0aGUgY29udGFpbmVkIGZvcm0gYnkg ZGVmYXVsdC48L2xpPgoJPGxpPjxjb2RlPmlucHV0bW9kZT0mcXVvdDt2YWx1ZSZxdW90Ozwv Y29kZT48YnIgLz4KQSBoaW50IHRvIHRoZSBicm93c2VyIGZvciB3aGljaCBrZXlib2FyZCB0 byBkaXNwbGF5LiBUaGlzIGF0dHJpYnV0ZSBhcHBsaWVzIHdoZW4gdGhlIHZhbHVlIG9mIHRo ZSB0eXBlIGF0dHJpYnV0ZSBpcyA8Y29kZT50ZXh0PC9jb2RlPiwgPGNvZGU+cGFzc3dvcmQ8 L2NvZGU+IG9yIDxjb2RlPnVybDwvY29kZT4uIFBvc3NpYmxlIHZhbHVlcyBhcmU6Cgk8dWw+ CgkJPGxpPjxjb2RlPnZlcmJhdGltPC9jb2RlPjogQWxwaGFudW1lcmljLCBub24tcHJvc2Ug Y29udGVudCBzdWNoIGFzIHVzZXJuYW1lcyBhbmQgcGFzc3dvcmRzLjwvbGk+CgkJPGxpPjxj b2RlPmxhdGluPC9jb2RlPjogTGF0aW4tc2NyaXB0IGlucHV0IGluIHRoZSB1c2VyJiM4MjE3 O3MgcHJlZmVycmVkIGxhbmd1YWdlIHdpdGggdHlwaW5nIGFpZHMgc3VjaCBhcyB0ZXh0IHBy ZWRpY3Rpb24gZW5hYmxlZC4gRm9yIGh1bWFuLXRvLWNvbXB1dGVyIGNvbW11bmljYXRpb24g c3VjaCBhcyBzZWFyY2ggYm94ZXMuPC9saT4KCQk8bGk+PGNvZGU+bGF0aW4tbmFtZTwvY29k ZT46IEFzIGxhdGluLCBidXQgZm9yIGh1bWFuIG5hbWVzLjwvbGk+CgkJPGxpPjxjb2RlPmxh dGluLXByb3NlPC9jb2RlPjogQXMgbGF0aW4sIGJ1dCB3aXRoIG1vcmUgYWdncmVzc2l2ZSB0 eXBpbmcgYWlkcy4gRm9yIGh1bWFuLXRvLWh1bWFuIGNvbW11bmljYXRpb24gc3VjaCBhcyBp bnN0YW50IG1lc3NhZ2luZyBmb3IgZW1haWwuPC9saT4KCQk8bGk+PGNvZGU+ZnVsbC13aWR0 aC1sYXRpbjwvY29kZT46IEFzIGxhdGluLXByb3NlLCBidXQgZm9yIHRoZSB1c2VyJiM4MjE3 O3Mgc2Vjb25kYXJ5IGxhbmd1YWdlcy48L2xpPgoJCTxsaT48Y29kZT5rYW5hPC9jb2RlPjog S2FuYSBvciByb21hamkgaW5wdXQsIHR5cGljYWxseSBoaXJhZ2FuYSBpbnB1dCwgdXNpbmcg ZnVsbC13aWR0aCBjaGFyYWN0ZXJzLCB3aXRoIHN1cHBvcnQgZm9yIGNvbnZlcnRpbmcgdG8g a2FuamkuIEludGVuZGVkIGZvciBKYXBhbmVzZSB0ZXh0IGlucHV0LjwvbGk+CgkJPGxpPjxj b2RlPmthdGFrYW5hPC9jb2RlPjogS2F0YWthbmEgaW5wdXQsIHVzaW5nIGZ1bGwtd2lkdGgg Y2hhcmFjdGVycywgd2l0aCBzdXBwb3J0IGZvciBjb252ZXJ0aW5nIHRvIGthbmppLiBJbnRl bmRlZCBmb3IgSmFwYW5lc2UgdGV4dCBpbnB1dC48L2xpPgoJCTxsaT48Y29kZT5udW1lcmlj PC9jb2RlPjogTnVtZXJpYyBpbnB1dCwgaW5jbHVkaW5nIGtleXMgZm9yIHRoZSBkaWdpdHMg MCB0byA5LCB0aGUgdXNlciYjODIxNztzIHByZWZlcnJlZCB0aG91c2FuZHMgc2VwYXJhdG9y IGNoYXJhY3RlciwgYW5kIHRoZSBjaGFyYWN0ZXIgZm9yIGluZGljYXRpbmcgbmVnYXRpdmUg bnVtYmVycy4gSW50ZW5kZWQgZm9yIG51bWVyaWMgY29kZXMsIGUuZy4gY3JlZGl0IGNhcmQg bnVtYmVycy4gRm9yIGFjdHVhbCBudW1iZXJzLCBwcmVmZXIgdXNpbmcgPGNvZGU+dHlwZT0m cXVvdDtudW1iZXImcXVvdDs8L2NvZGU+LjwvbGk+CgkJPGxpPjxjb2RlPnRlbDwvY29kZT46 IFRlbGVwaG9uZSBpbnB1dCwgaW5jbHVkaW5nIGFzdGVyaXNrIGFuZCBwb3VuZCBrZXkuIFVz ZSA8Y29kZT50eXBlPSZxdW90O3RlbCZxdW90OzwvY29kZT4gaWYgcG9zc2libGUgaW5zdGVh ZC48L2xpPgoJCTxsaT48Y29kZT5lbWFpbDwvY29kZT46IEVtYWlsIGlucHV0LiBVc2UgPGNv ZGU+Jmx0O3R4cDp6ZW1fY29udGFjdF9lbWFpbCAvJmd0OzwvY29kZT4gaWYgcG9zc2libGUg aW5zdGVhZC48L2xpPgoJCTxsaT48Y29kZT51cmw8L2NvZGU+OiA8c3BhbiBjbGFzcz0iY2Fw cyI+VVJMPC9zcGFuPiBpbnB1dC4gVXNlIDxjb2RlPnR5cGU9JnF1b3Q7dXJsJnF1b3Q7PC9j b2RlPiBpZiBwb3NzaWJsZSBpbnN0ZWFkLjwvbGk+Cgk8L3VsPjwvbGk+Cgk8bGk+PGNvZGU+ bGFiZWw9JnF1b3Q7dGV4dCZxdW90OzwvY29kZT48YnIgLz4KVGV4dCBsYWJlbCBkaXNwbGF5 ZWQgdG8gdGhlIHVzZXIuIERlZmF1bHQgaXMgPGNvZGU+VGV4dDwvY29kZT4uPC9saT4KCTxs aT48Y29kZT5sYWJlbF9wb3NpdGlvbj0mcXVvdDt0ZXh0JnF1b3Q7PC9jb2RlPjxiciAvPgpQ b3NpdGlvbiBvZiB0aGUgbGFiZWwgaW4gcmVsYXRpb24gdG8gdGhlIDxjb2RlPiZsdDtpbnB1 dCZndDs8L2NvZGU+IGZpZWxkLiBBdmFpbGFibGUgdmFsdWVzOiA8Y29kZT5iZWZvcmU8L2Nv ZGU+IG9yIDxjb2RlPmFmdGVyPC9jb2RlPi4gRGVmYXVsdCBpcyA8Y29kZT5iZWZvcmU8L2Nv ZGU+LjwvbGk+Cgk8bGk+PGNvZGU+bWF4PXZhbHVlJnF1b3Q7PC9jb2RlPjxiciAvPgpGb3Ig Y2hhcmFjdGVyLWJhc2VkIGlucHV0cywgdGhlIG1heGltdW0gaW5wdXQgdmFsdWUgbGVuZ3Ro IGluIGNoYXJhY3RlcnMsIHVzaW5nIHRoZSBIVE1MNSA8Y29kZT5tYXhsZW5ndGg8L2NvZGU+ IGF0dHJpYnV0ZS4gVG8gcmVtb3ZlIDxjb2RlPm1heGxlbmd0aDwvY29kZT4gYXR0cmlidXRl IGZyb20gdGhlIGVsZW1lbnQgZW50aXJlbHkgKG5vdCByZWNvbW1lbmRlZCksIHVzZSA8Y29k ZT5tYXg9JnF1b3Q7JnF1b3Q7PC9jb2RlPi4gRm9yIG51bWVyaWMtYmFzZWQgaW5wdXRzLCB0 aGUgbWF4aW11bSBpbnB1dCB2YWx1ZSB0aGUgZmllbGQgYWNjZXB0cywgdXNpbmcgdGhlIEhU TUw1IDxjb2RlPm1heDwvY29kZT4gYXR0cmlidXRlIChjYW4gYmUgYSBuZWdhdGl2ZSB2YWx1 ZSkuIERlZmF1bHQgaXMgPGNvZGU+MTAwPC9jb2RlPi4gVG8gcmVtb3ZlIDxjb2RlPm1heDwv Y29kZT4gYXR0cmlidXRlIGZyb20gdGhlIG51bWVyaWNhbCBpbnB1dCBlbGVtZW50IGVudGly ZWx5LCB1c2UgPGNvZGU+bWF4PSZxdW90OyZxdW90OzwvY29kZT4uPC9saT4KCTxsaT48Y29k ZT5taW49JnF1b3Q7dmFsdWUmcXVvdDs8L2NvZGU+PGJyIC8+CkZvciBjaGFyYWN0ZXItYmFz ZWQgaW5wdXRzLCB0aGUgbWluaW11bSBpbnB1dCB2YWx1ZSBsZW5ndGggaW4gY2hhcmFjdGVy cywgdXNpbmcgdGhlIEhUTUw1IDxjb2RlPm1pbmxlbmd0aDwvY29kZT4gYXR0cmlidXRlLiBE ZWZhdWx0IGlzIHVuc2V0LCBpLmUuLCBubyBtaW5pbXVtIGxpbWl0LiBGb3IgbnVtZXJpYy1i YXNlZCBpbnB1dHMsIHRoZSBtaW5pbXVtIGlucHV0IHZhbHVlIHRoZSBmaWVsZCBhY2NlcHRz LCB1c2luZyB0aGUgSFRNTDUgPGNvZGU+bWluPC9jb2RlPiBhdHRyaWJ1dGUgKGNhbiBiZSBh IG5lZ2F0aXZlIHZhbHVlKS4gRGVmYXVsdCBpcyA8Y29kZT4wPC9jb2RlPi4gVG8gcmVtb3Zl IDxjb2RlPm1pbjwvY29kZT4gYXR0cmlidXRlIGZyb20gdGhlIG51bWVyaWNhbCBpbnB1dCBl bGVtZW50IGVudGlyZWx5LCB1c2UgPGNvZGU+bWluPSZxdW90OyZxdW90OzwvY29kZT4uPC9s aT4KCTxsaT48Y29kZT5uYW1lPSZxdW90O3ZhbHVlJnF1b3Q7PC9jb2RlPjxiciAvPgpGaWVs ZCBuYW1lLCBhcyB1c2VkIGluIHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+SFRNTDwvc3Bhbj4g PGNvZGU+Jmx0O2lucHV0Jmd0OzwvY29kZT4gdGFnLjwvbGk+Cgk8bGk+PGNvZGU+cGF0dGVy bj0mcXVvdDtyZWdleCZxdW90OzwvY29kZT48YnIgLz4KUmVndWxhciBleHByZXNzaW9uIHRo YXQgZ292ZXJucyB0aGUgZm9ybWF0IGluIHdoaWNoIHRoZSBmaWVsZCBkYXRhIGlzIGV4cGVj dGVkLiBPbmx5IHVzZWQgZm9yIGNoYXJhY3Rlci1iYXNlZCBpbnB1dHMuPC9saT4KCTxsaT48 Y29kZT5wbGFjZWhvbGRlcj0mcXVvdDt0ZXh0JnF1b3Q7PC9jb2RlPjxiciAvPgpUZXh0IHRv IHNob3cgYXMgYSBndWlkZSwgd2hlbiB0aGUgPGNvZGU+Jmx0O2lucHV0Jmd0OzwvY29kZT4g ZmllbGQgaXMgZW1wdHkuPC9saT4KCTxsaT48Y29kZT5yZXF1aXJlZD0mcXVvdDtib29sZWFu JnF1b3Q7PC9jb2RlPjxiciAvPgpXaGV0aGVyIHRoaXMgZmllbGQgbXVzdCBiZSBmaWxsZWQg b3V0LiBBdmFpbGFibGUgdmFsdWVzOiA8Y29kZT4xPC9jb2RlPiAoeWVzKSBvciA8Y29kZT4w PC9jb2RlPiAobm8pLiBEZWZhdWx0IGlzIHdoYXRldmVyIGlzIHNldCBpbiB0aGUgPGNvZGU+ Jmx0O3R4cDp6ZW1fY29udGFjdCZndDs8L2NvZGU+IHRhZyYjODIxNztzIDxjb2RlPnJlcXVp cmVkPC9jb2RlPiBhdHRyaWJ1dGUgJiM4MjExOyBpZiBuZWl0aGVyIGF0dHJpYnV0ZSBpcyBz ZXQgdGhlbiBkZWZhdWx0IGlzIDxjb2RlPjE8L2NvZGU+LjwvbGk+Cgk8bGk+PGNvZGU+c2l6 ZT0mcXVvdDt2YWx1ZSZxdW90OzwvY29kZT48YnIvPlRoZSBzaXplLCBpbiBjaGFyYWN0ZXJz LCBvZiB0aGUgPGNvZGU+Jmx0O2lucHV0Jmd0OzwvY29kZT4gZmllbGQuPC9saT4KCTxsaT48 Y29kZT5zdGVwPSZxdW90O3ZhbHVlJnF1b3Q7PC9jb2RlPjxiciAvPgpGb3IgbnVtZXJpYy1i YXNlZCBpbnB1dHMsIHRoZSBpbnRlcnZhbCBiZXR3ZWVuIG1pbiBhbmQgbWF4LjwvbGk+Cgk8 bGk+PGNvZGU+dHlwZT0mcXVvdDt2YWx1ZSZxdW90OzwvY29kZT48YnIgLz4KVHlwZSBvZiB0 ZXh0IGlucHV0LiBEZWZhdWx0IGlzIDxjb2RlPnRleHQ8L2NvZGU+LiBDaG9vc2UgZnJvbToK CTx1bD4KCQk8bGk+PGNvZGU+Y29sb3I8L2NvZGU+PC9saT4KCQk8bGk+PGNvZGU+ZGF0ZTwv Y29kZT48L2xpPgoJCTxsaT48Y29kZT5kYXRldGltZTwvY29kZT48L2xpPgoJCTxsaT48Y29k ZT5kYXRldGltZS1sb2NhbDwvY29kZT48L2xpPgoJCTxsaT48Y29kZT5tb250aDwvY29kZT48 L2xpPgoJCTxsaT48Y29kZT5udW1iZXI8L2NvZGU+PC9saT4KCQk8bGk+PGNvZGU+cGFzc3dv cmQ8L2NvZGU+PC9saT4KCQk8bGk+PGNvZGU+cmFuZ2U8L2NvZGU+PC9saT4KCQk8bGk+PGNv ZGU+c2VhcmNoPC9jb2RlPjwvbGk+CgkJPGxpPjxjb2RlPnRlbDwvY29kZT48L2xpPgoJCTxs aT48Y29kZT50ZXh0PC9jb2RlPjwvbGk+CgkJPGxpPjxjb2RlPnRpbWU8L2NvZGU+PC9saT4K CQk8bGk+PGNvZGU+dXJsPC9jb2RlPjwvbGk+CgkJPGxpPjxjb2RlPndlZWs8L2NvZGU+PC9s aT4KCTwvdWw+PC9saT4KCTwvdWw+Cgo8aDQ+RXhhbXBsZXM8L2g0PgoKPGg1PkV4YW1wbGUg MTwvaDU+Cgo8cHJlIGNsYXNzPSJsYW5ndWFnZS1tYXJrdXAiPjxjb2RlPiZsdDt0eHA6emVt X2NvbnRhY3RfdGV4dCBsYWJlbD0mcXVvdDtZb3VyIG5hbWUmcXVvdDsgLyZndDs8L2NvZGU+ PC9wcmU+Cgo8aDU+RXhhbXBsZSAyPC9oNT4KCjxwcmUgY2xhc3M9Imxhbmd1YWdlLW1hcmt1 cCI+PGNvZGU+Jmx0O3R4cDp6ZW1fY29udGFjdF90ZXh0IHR5cGU9JnF1b3Q7cmFuZ2UmcXVv dDsgbGFiZWw9JnF1b3Q7VUsgc2hvZSBzaXplJnF1b3Q7IG1pbj0mcXVvdDsxJnF1b3Q7IG1h eD0mcXVvdDsxNSZxdW90OyAvJmd0OzwvY29kZT48L3ByZT4KCjxoNT5FeGFtcGxlIDM8L2g1 PgoKPHA+Q3JlYXRlIGEgdGVsZXBob25lIGZpZWxkIHdpdGggYSA8YSBocmVmPSJodHRwOi8v aHRtbDVwYXR0ZXJuLmNvbS9QaG9uZXMiPnZhbGlkYXRpb24gcGF0dGVybiBmb3IgVUsgdGVs ZXBob25lIG51bWJlcjwvYT4gZm9ybWF0OjwvcD4KCjxwcmUgY2xhc3M9Imxhbmd1YWdlLW1h cmt1cCI+PGNvZGU+Jmx0O3R4cDp6ZW1fY29udGFjdF90ZXh0IHR5cGU9JnF1b3Q7dGVsJnF1 b3Q7IGxhYmVsPSZxdW90O1RlbGVwaG9uZSZxdW90OyBwYXR0ZXJuPSZxdW90O15ccypcKD8o MDIwWzcsOF17MX1cKT9bIF0/WzEtOV17MX1bMC05ezJ9WyBdP1swLTldezR9KXwoMFsxLThd ezF9WzAtOV17M31cKT9bIF0/WzEtOV17MX1bMC05XXsyfVsgXT9bMC05XXszfSlccyokJnF1 b3Q7IHJlcXVpcmVkPSZxdW90OzEmcXVvdDsgLyZndDs8L2NvZGU+PC9wcmU+Cgo8aDMgaWQ9 InpjX2VtYWlsIj56ZW1fY29udGFjdF9lbWFpbCB0YWc8L2gzPgoKPHByZSBjbGFzcz0ibGFu Z3VhZ2UtbWFya3VwIj48Y29kZT4mbHQ7dHhwOnplbV9jb250YWN0X2VtYWlsIC8mZ3Q7PC9j b2RlPjwvcHJlPgoKPHA+PGNvZGU+Jmx0O2lucHV0Jmd0OzwvY29kZT4gZmllbGQgZm9yIHVz ZXImIzgyMTc7cyBlbWFpbCBhZGRyZXNzLjwvcD4KCjxwPlRoZSBlbnRlcmVkIGVtYWlsIGFk ZHJlc3Mgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIHZhbGlkYXRlZCB0byBtYWtlIHN1cmUgaXQg aXMgb2YgdGhlIGZvcm0gJiM4MjIwO2FiY0B4eHgueXl5Wy56enpdJiM4MjIxOy4gT24gbm9u LVdpbmRvd3Mgc2VydmVycywgYSB0ZXN0IHdpbGwgYmUgZG9uZSB0byB2ZXJpZnkgdGhhdCBh biBBIG9yIE1YIHJlY29yZCBleGlzdHMgZm9yIHRoZSBkb21haW4uIE5laXRoZXIgdGVzdCBw cmV2ZW50cyBzcGFtLCBidXQgaXQgZG9lcyBoZWxwIGRldGVjdCBhY2NpZGVudGFsIHR5cGlu ZyBlcnJvcnMuPC9wPgoKPGg0PkF0dHJpYnV0ZXM8L2g0PgoKPHVsPgoJPGxpPjxjb2RlPmF1 dG9jb21wbGV0ZT0mcXVvdDt2YWx1ZSZxdW90OzwvY29kZT48YnIgLz4KSW5kaWNhdGVzIHdo ZXRoZXIgdGhlIHZhbHVlIG9mIHRoZSBjb250cm9sIGNhbiBiZSBhdXRvbWF0aWNhbGx5IGNv bXBsZXRlZCBieSB0aGUgYnJvd3Nlci4gUG9zc2libGUgdmFsdWVzIGFyZTogPGNvZGU+b2Zm PC9jb2RlPiAodGhlIGJyb3dzZXIgZG9lcyBub3QgYXV0b21hdGljYWxseSBjb21wbGV0ZSB0 aGUgZW50cnkpIG9yIDxjb2RlPm9uPC9jb2RlPiAodGhlIGJyb3dzZXIgY2FuIGF1dG9tYXRp Y2FsbHkgY29tcGxldGUgdGhlIHZhbHVlIGJhc2VkIG9uIHZhbHVlcyB0aGF0IHRoZSB1c2Vy IGhhcyBlbnRlcmVkIGR1cmluZyBwcmV2aW91cyB1c2VzKS4gRGVmYXVsdCBpcyB1bnNldC48 L2xpPgoJPGxpPjxjb2RlPmJyZWFrPSZxdW90O3RhZyZxdW90OzwvY29kZT48YnIgLz4KQnJl YWsgdGFnIGJldHdlZW4gdGhlIDxjb2RlPiZsdDtsYWJlbCZndDs8L2NvZGU+IGFuZCA8Y29k ZT4mbHQ7aW5wdXQmZ3Q7PC9jb2RlPiBmaWVsZC4gRGVmYXVsdCBpcyA8Y29kZT4mbHQ7YnIg LyZndDs8L2NvZGU+LiBVc2UgPGNvZGU+YnJlYWs9JnF1b3Q7JnF1b3Q7PC9jb2RlPiB0byBw dXQgdGhlIGxhYmVsIGFuZCBpbnB1dCBmaWVsZCBvbiB0aGUgc2FtZSBsaW5lLjwvbGk+Cgk8 bGk+PGNvZGU+Y2xhc3M9JnF1b3Q7c3BhY2Utc2VwYXJhdGVkIHZhbHVlcyZxdW90OzwvY29k ZT48YnIgLz4KIFNldCB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPkNTUzwvc3Bhbj4gPGNvZGU+ Y2xhc3M8L2NvZGU+IG5hbWUgb2YgdGhlIHRhZy4gRGVmYXVsdDogPGNvZGU+emVtRW1haWw8 L2NvZGU+LiBUbyByZW1vdmUgPGNvZGU+Y2xhc3M8L2NvZGU+IGF0dHJpYnV0ZSBmcm9tIHRo ZSBlbGVtZW50IGVudGlyZWx5LCB1c2UgPGNvZGU+Y2xhc3M9JnF1b3Q7JnF1b3Q7PC9jb2Rl Pi48L2xpPgoJPGxpPjxjb2RlPmRlZmF1bHQ9JnF1b3Q7dmFsdWUmcXVvdDs8L2NvZGU+PGJy IC8+CkRlZmF1bHQgdmFsdWUgd2hlbiBubyBpbnB1dCBpcyBwcm92aWRlZC48L2xpPgoJPGxp Pjxjb2RlPmh0bWxfZm9ybT0mcXVvdDtpZCZxdW90OzwvY29kZT48YnIgLz4KVGhlIDxzcGFu IGNsYXNzPSJjYXBzIj5IVE1MPC9zcGFuPiA8Y29kZT5pZDwvY29kZT4gb2YgdGhlIDxjb2Rl PiZsdDtmb3JtJmd0OzwvY29kZT4gdGFnIHRvIHdoaWNoIHRoZSBmaWVsZCBpcyBhdHRhY2hl ZC4gQXNzb2NpYXRlZCB3aXRoIHRoZSBjb250YWluZWQgZm9ybSBieSBkZWZhdWx0LjwvbGk+ Cgk8bGk+PGNvZGU+bGFiZWw9JnF1b3Q7dGV4dCZxdW90OzwvY29kZT48YnIgLz4KVGV4dCBs YWJlbCBkaXNwbGF5ZWQgdG8gdGhlIHVzZXIuIERlZmF1bHQgaXMgPGNvZGU+RW1haWw8L2Nv ZGU+LjwvbGk+Cgk8bGk+PGNvZGU+bGFiZWxfcG9zaXRpb249JnF1b3Q7dGV4dCZxdW90Ozwv Y29kZT48YnIgLz4KUG9zaXRpb24gb2YgdGhlIGxhYmVsIGluIHJlbGF0aW9uIHRvIHRoZSA8 Y29kZT4mbHQ7aW5wdXQmZ3Q7PC9jb2RlPiBmaWVsZC4gQXZhaWxhYmxlIHZhbHVlczogPGNv ZGU+YmVmb3JlPC9jb2RlPiBvciA8Y29kZT5hZnRlcjwvY29kZT4uIERlZmF1bHQgaXMgPGNv ZGU+YmVmb3JlPC9jb2RlPi48L2xpPgoJPGxpPjxjb2RlPm1heD0mcXVvdDtpbnRlZ2VyJnF1 b3Q7PC9jb2RlPjxiciAvPgpNYXhpbXVtIGlucHV0IHZhbHVlIGxlbmd0aCBpbiBjaGFyYWN0 ZXJzLCB1c2luZyB0aGUgSFRNTDUgPGNvZGU+bWF4bGVuZ3RoPC9jb2RlPiBhdHRyaWJ1dGUu IERlZmF1bHQgaXMgPGNvZGU+MTAwPC9jb2RlPi4gVG8gcmVtb3ZlIDxjb2RlPm1heGxlbmd0 aDwvY29kZT4gYXR0cmlidXRlIGZyb20gdGhlIGVsZW1lbnQgZW50aXJlbHkgKG5vdCByZWNv bW1lbmRlZCksIHVzZSA8Y29kZT5tYXg9JnF1b3Q7JnF1b3Q7PC9jb2RlPi48L2xpPgoJPGxp Pjxjb2RlPm1pbj0mcXVvdDtpbnRlZ2VyJnF1b3Q7PC9jb2RlPjxiciAvPgpNaW5pbXVtIGlu cHV0IHZhbHVlIGxlbmd0aCBpbiBjaGFyYWN0ZXJzLCB1c2luZyB0aGUgSFRNTDUgPGNvZGU+ bWlubGVuZ3RoPC9jb2RlPiBhdHRyaWJ1dGUuIERlZmF1bHQgaXMgdW5zZXQsIGkuZS4sIG5v IG1pbmltdW0gbGltaXQuPC9saT4KCTxsaT48Y29kZT5uYW1lPSZxdW90O3ZhbHVlJnF1b3Q7 PC9jb2RlPjxiciAvPgpGaWVsZCBuYW1lLCBhcyB1c2VkIGluIHRoZSA8c3BhbiBjbGFzcz0i Y2FwcyI+SFRNTDwvc3Bhbj4gPGNvZGU+Jmx0O2lucHV0Jmd0OzwvY29kZT4gdGFnLjwvbGk+ Cgk8bGk+PGNvZGU+cGxhY2Vob2xkZXI9JnF1b3Q7dGV4dCZxdW90OzwvY29kZT48YnIgLz4K VGV4dCB0byBzaG93IGFzIGEgZ3VpZGUsIHdoZW4gdGhlIDxjb2RlPiZsdDtpbnB1dCZndDs8 L2NvZGU+IGZpZWxkIGlzIGVtcHR5LjwvbGk+Cgk8bGk+PGNvZGU+cmVxdWlyZWQ9JnF1b3Q7 Ym9vbGVhbiZxdW90OzwvY29kZT48YnIgLz4KV2hldGhlciB0aGlzIGZpZWxkIG11c3QgYmUg ZmlsbGVkIG91dC4gQXZhaWxhYmxlIHZhbHVlczogPGNvZGU+MTwvY29kZT4gKHllcykgb3Ig PGNvZGU+MDwvY29kZT4gKG5vKS4gRGVmYXVsdCBpcyB3aGF0ZXZlciBpcyBzZXQgaW4gdGhl IDxjb2RlPiZsdDt0eHA6emVtX2NvbnRhY3QmZ3Q7PC9jb2RlPiB0YWcmIzgyMTc7cyA8Y29k ZT5yZXF1aXJlZDwvY29kZT4gYXR0cmlidXRlICYjODIxMTsgaWYgbmVpdGhlciBhdHRyaWJ1 dGUgaXMgc2V0IHRoZW4gZGVmYXVsdCBpcyA8Y29kZT4xPC9jb2RlPi48L2xpPgoJPGxpPjxj b2RlPnNlbmRfYXJ0aWNsZT0mcXVvdDtib29sZWFuJnF1b3Q7PC9jb2RlPjxiciAvPgpXaGV0 aGVyIHRoaXMgZmllbGQgaXMgdXNlZCBhcyB0aGUgcmVjaXBpZW50IGVtYWlsIGFkZHJlc3Mg d2hlbiB1c2luZyB0aGUgc2VuZF9hcnRpY2xlIGZ1bmN0aW9uLiBBdmFpbGFibGUgdmFsdWVz OiA8Y29kZT4xPC9jb2RlPiAoeWVzKSBvciA8Y29kZT4wPC9jb2RlPiAobm8pLiBEZWZhdWx0 IGlzIDxjb2RlPjA8L2NvZGU+LjwvbGk+Cgk8bGk+PGNvZGU+c2l6ZT0mcXVvdDt2YWx1ZSZx dW90OzwvY29kZT48YnIvPlRoZSBzaXplLCBpbiBjaGFyYWN0ZXJzLCBvZiB0aGUgPGNvZGU+ Jmx0O2lucHV0Jmd0OzwvY29kZT4gZmllbGQuPC9saT4KPC91bD4KCjxoND5FeGFtcGxlczwv aDQ+Cgo8aDU+RXhhbXBsZSAxPC9oNT4KCjxwcmUgY2xhc3M9Imxhbmd1YWdlLW1hcmt1cCI+ PGNvZGU+Jmx0O3R4cDp6ZW1fY29udGFjdF9lbWFpbCBsYWJlbD0mcXVvdDtZb3VyIGVtYWls IGFkZHJlc3MmcXVvdDsgLyZndDs8L2NvZGU+PC9wcmU+Cgo8aDMgaWQ9InpjX3RleHRhcmVh Ij56ZW1fY29udGFjdF90ZXh0YXJlYSB0YWc8L2gzPgoKPHByZSBjbGFzcz0ibGFuZ3VhZ2Ut bWFya3VwIj48Y29kZT4mbHQ7dHhwOnplbV9jb250YWN0X3RleHRhcmVhIC8mZ3Q7PC9jb2Rl PjwvcHJlPgoKPHA+Q3JlYXRlcyBhIDxjb2RlPiZsdDt0ZXh0YXJlYSZndDs8L2NvZGU+Ljwv cD4KCjxoND5BdHRyaWJ1dGVzPC9oND4KCjx1bD4KCTxsaT48Y29kZT5hdXRvY29tcGxldGU9 JnF1b3Q7dmFsdWUmcXVvdDs8L2NvZGU+PGJyIC8+CkluZGljYXRlcyB3aGV0aGVyIHRoZSB2 YWx1ZSBvZiB0aGUgY29udHJvbCBjYW4gYmUgYXV0b21hdGljYWxseSBjb21wbGV0ZWQgYnkg dGhlIGJyb3dzZXIuIFBvc3NpYmxlIHZhbHVlcyBhcmU6IDxjb2RlPm9mZjwvY29kZT4gKHRo ZSBicm93c2VyIGRvZXMgbm90IGF1dG9tYXRpY2FsbHkgY29tcGxldGUgdGhlIGVudHJ5KSBv ciA8Y29kZT5vbjwvY29kZT4gKHRoZSBicm93c2VyIGNhbiBhdXRvbWF0aWNhbGx5IGNvbXBs ZXRlIHRoZSB2YWx1ZSBiYXNlZCBvbiB2YWx1ZXMgdGhhdCB0aGUgdXNlciBoYXMgZW50ZXJl ZCBkdXJpbmcgcHJldmlvdXMgdXNlcykuIERlZmF1bHQgaXMgdW5zZXQuPC9saT4KCTxsaT48 Y29kZT5icmVhaz0mcXVvdDt0YWcmcXVvdDs8L2NvZGU+PGJyIC8+CkJyZWFrIHRhZyBiZXR3 ZWVuIHRoZSA8Y29kZT4mbHQ7bGFiZWwmZ3Q7PC9jb2RlPiBhbmQgPGNvZGU+Jmx0O3RleHRh cmVhJmd0OzwvY29kZT4uIERlZmF1bHQgaXMgPGNvZGU+Jmx0O2JyIC8mZ3Q7PC9jb2RlPi4g VXNlIDxjb2RlPmJyZWFrPSZxdW90OyZxdW90OzwvY29kZT4gdG8gcHV0IHRoZSA8Y29kZT4m bHQ7bGFiZWwmZ3Q7PC9jb2RlPiBhbmQgPGNvZGU+Jmx0O2lucHV0Jmd0OzwvY29kZT4gZmll bGQgb24gdGhlIHNhbWUgbGluZS48L2xpPgoJPGxpPjxjb2RlPmNsYXNzPSZxdW90O3NwYWNl LXNlcGFyYXRlZCB2YWx1ZXMmcXVvdDs8L2NvZGU+PGJyIC8+CiBTZXQgdGhlIDxzcGFuIGNs YXNzPSJjYXBzIj5DU1M8L3NwYW4+IDxjb2RlPmNsYXNzPC9jb2RlPiBuYW1lIG9mIHRoZSAg PGNvZGU+Jmx0O3RleHRhcmVhJmd0OzwvY29kZT4uIERlZmF1bHQ6IDxjb2RlPnplbVRleHRh cmVhPC9jb2RlPi4gVG8gcmVtb3ZlIDxjb2RlPmNsYXNzPC9jb2RlPiBhdHRyaWJ1dGUgZnJv bSB0aGUgZWxlbWVudCBlbnRpcmVseSwgdXNlIDxjb2RlPmNsYXNzPSZxdW90OyZxdW90Ozwv Y29kZT4uPC9saT4KCTxsaT48Y29kZT5jb2xzPSZxdW90O2ludGVnZXImcXVvdDs8L2NvZGU+ PGJyLz5OdW1iZXIgb2YgY29sdW1ucywgaW4gY2hhcmFjdGVycywgb2YgdGhlIDxjb2RlPiZs dDt0ZXh0YXJlYSZndDs8L2NvZGU+LiBEZWZhdWx0IGlzIDxjb2RlPjU4PC9jb2RlPi48L2xp PgoJPGxpPjxjb2RlPmRlZmF1bHQ9JnF1b3Q7dmFsdWUmcXVvdDs8L2NvZGU+PGJyIC8+CkRl ZmF1bHQgdmFsdWUgd2hlbiBubyBpbnB1dCBpcyBwcm92aWRlZC48L2xpPgoJPGxpPjxjb2Rl Pmh0bWxfZm9ybT0mcXVvdDtpZCZxdW90OzwvY29kZT48YnIgLz4KVGhlIDxzcGFuIGNsYXNz PSJjYXBzIj5IVE1MPC9zcGFuPiA8Y29kZT5pZDwvY29kZT4gb2YgdGhlIDxjb2RlPiZsdDtm b3JtJmd0OzwvY29kZT4gdGFnIHRvIHdoaWNoIHRoZSA8Y29kZT4mbHQ7dGV4dGFyZWEmZ3Q7 PC9jb2RlPiBpcyBhdHRhY2hlZC4gQXNzb2NpYXRlZCB3aXRoIHRoZSBjb250YWluZWQgZm9y bSBieSBkZWZhdWx0LjwvbGk+Cgk8bGk+PGNvZGU+bGFiZWw9JnF1b3Q7dGV4dCZxdW90Ozwv Y29kZT48YnIgLz4KVGV4dCBsYWJlbCBkaXNwbGF5ZWQgdG8gdGhlIHVzZXIuIERlZmF1bHQg aXMgPGNvZGU+TWVzc2FnZTwvY29kZT4uPC9saT4KCTxsaT48Y29kZT5sYWJlbF9wb3NpdGlv bj0mcXVvdDt0ZXh0JnF1b3Q7PC9jb2RlPjxiciAvPgpQb3NpdGlvbiBvZiB0aGUgbGFiZWwg aW4gcmVsYXRpb24gdG8gdGhlIDxjb2RlPiZsdDt0ZXh0YXJlYSZndDs8L2NvZGU+IGZpZWxk LiBBdmFpbGFibGUgdmFsdWVzOiA8Y29kZT5iZWZvcmU8L2NvZGU+IG9yIDxjb2RlPmFmdGVy PC9jb2RlPi4gRGVmYXVsdCBpcyA8Y29kZT5iZWZvcmU8L2NvZGU+LjwvbGk+Cgk8bGk+PGNv ZGU+bWF4PSZxdW90O2ludGVnZXImcXVvdDs8L2NvZGU+PGJyIC8+Ck1heGltdW0gaW5wdXQg dmFsdWUgbGVuZ3RoIGluIGNoYXJhY3RlcnMsIHVzaW5nIHRoZSBIVE1MNSA8Y29kZT5tYXhs ZW5ndGg8L2NvZGU+IGF0dHJpYnV0ZS4gRGVmYXVsdCBpcyA8Y29kZT4xMDAwMDwvY29kZT4u IFRvIHJlbW92ZSA8Y29kZT5tYXhsZW5ndGg8L2NvZGU+IGF0dHJpYnV0ZSBmcm9tIHRoZSBl bGVtZW50IGVudGlyZWx5IChub3QgcmVjb21tZW5kZWQpLCB1c2UgPGNvZGU+bWF4PSZxdW90 OyZxdW90OzwvY29kZT4uPC9saT4KCTxsaT48Y29kZT5taW49JnF1b3Q7aW50ZWdlciZxdW90 OzwvY29kZT48YnIgLz4KTWluaW11bSBpbnB1dCB2YWx1ZSBsZW5ndGggaW4gY2hhcmFjdGVy cywgdXNpbmcgdGhlIEhUTUw1IDxjb2RlPm1pbmxlbmd0aDwvY29kZT4gYXR0cmlidXRlLiBE ZWZhdWx0IGlzIHVuc2V0LCBpLmUuLCBubyBtaW5pbXVtIGxpbWl0LjwvbGk+Cgk8bGk+PGNv ZGU+bmFtZT0mcXVvdDt2YWx1ZSZxdW90OzwvY29kZT48YnIgLz4KRmllbGQgbmFtZSwgYXMg dXNlZCBpbiB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPkhUTUw8L3NwYW4+IDxjb2RlPiZsdDtp bnB1dCZndDs8L2NvZGU+IHRhZy48L2xpPgoJPGxpPjxjb2RlPnBsYWNlaG9sZGVyPSZxdW90 O3RleHQmcXVvdDs8L2NvZGU+PGJyIC8+ClRleHQgdG8gc2hvdyBhcyBhIGd1aWRlIHRvIHVz ZXJzLCB3aGVuIHRoZSAgPGNvZGU+Jmx0O3RleHRhcmVhJmd0OzwvY29kZT4gaXMgZW1wdHku PC9saT4KCTxsaT48Y29kZT5yZXF1aXJlZD0mcXVvdDtib29sZWFuJnF1b3Q7PC9jb2RlPjxi ciAvPgpXaGV0aGVyIHRoaXMgZmllbGQgbXVzdCBiZSBmaWxsZWQgb3V0LiBBdmFpbGFibGUg dmFsdWVzOiA8Y29kZT4xPC9jb2RlPiAoeWVzKSBvciA8Y29kZT4wPC9jb2RlPiAobm8pLiBE ZWZhdWx0IGlzIHdoYXRldmVyIGlzIHNldCBpbiB0aGUgPGNvZGU+Jmx0O3R4cDp6ZW1fY29u dGFjdCZndDs8L2NvZGU+IHRhZyYjODIxNztzIDxjb2RlPnJlcXVpcmVkPC9jb2RlPiBhdHRy aWJ1dGUgJiM4MjExOyBpZiBuZWl0aGVyIGF0dHJpYnV0ZSBpcyBzZXQgdGhlbiBkZWZhdWx0 IGlzIDxjb2RlPjE8L2NvZGU+LjwvbGk+Cgk8bGk+PGNvZGU+cm93cz0mcXVvdDtpbnRlZ2Vy JnF1b3Q7PC9jb2RlPjxici8+TnVtYmVyIG9mIHJvd3MsIGluIGNoYXJhY3RlcnMsIG9mIHRo ZSA8Y29kZT4mbHQ7dGV4dGFyZWEmZ3Q7PC9jb2RlPi4gRGVmYXVsdCBpcyA8Y29kZT44PC9j b2RlPi48L2xpPgoJPGxpPjxjb2RlPndyYXA9JnF1b3Q7dmFsdWUmcXVvdDs8L2NvZGU+PGJy Lz5Hb3Zlcm5zIHdvcmQtd3JhcC4gQXZhaWxhYmxlIHZhbHVlczogPGNvZGU+aGFyZDwvY29k ZT4gb3IgPGNvZGU+c29mdDwvY29kZT4uIElmIHRoaXMgYXR0cmlidXRlIGlzIG5vdCBzcGVj aWZpZWQsIDxjb2RlPnNvZnQ8L2NvZGU+IGlzIGl0cyBkZWZhdWx0IHZhbHVlLjwvbGk+Cjwv dWw+Cgo8aDQ+RXhhbXBsZXM8L2g0PgoKPGg1PkV4YW1wbGUgMTwvaDU+Cgo8cD5DcmVhdGUg YSB0ZXh0IGFyZWEgdGhhdCBpcyA0MCBjaGFyYWN0ZXJzIHdpZGUsIDEwIGxpbmVzIGhpZ2gs IHdpdGggYSBjdXN0b21pc2VkIGxhYmVsOjwvcD4KCjxwcmUgY2xhc3M9Imxhbmd1YWdlLW1h cmt1cCI+PGNvZGU+Jmx0O3R4cDp6ZW1fY29udGFjdF90ZXh0YXJlYSBjb2xzPSZxdW90OzQw JnF1b3Q7IHJvd3M9JnF1b3Q7MTAmcXVvdDsgbGFiZWw9JnF1b3Q7WW91ciBxdWVzdGlvbiZx dW90OyAvJmd0OzwvY29kZT48L3ByZT4KCjxoMyBpZD0iemNfc3VibWl0Ij56ZW1fY29udGFj dF9zdWJtaXQgdGFnPC9oMz4KCjxwcmUgY2xhc3M9Imxhbmd1YWdlLW1hcmt1cCI+PGNvZGU+ Jmx0O3R4cDp6ZW1fY29udGFjdF9zdWJtaXQgLyZndDs8L2NvZGU+PC9wcmU+Cgo8cD5DcmVh dGVzIGEgc3VibWl0IGJ1dHRvbi4gV2hlbiB1c2VkIGFzIGEgY29udGFpbmVyIHRhZywgYSA8 Y29kZT4mbHQ7YnV0dG9uJmd0OzwvY29kZT4gZWxlbWVudCB3aWxsIGJlIHVzZWQgaW5zdGVh ZCBvZiBhbiA8Y29kZT4mbHQ7aW5wdXQmZ3Q7PC9jb2RlPiBlbGVtZW50LjwvcD4KCjxoND5B dHRyaWJ1dGVzOjwvaDQ+Cgo8dWw+Cgk8bGk+PGNvZGU+Y2xhc3M9JnF1b3Q7c3BhY2Utc2Vw YXJhdGVkIHZhbHVlcyZxdW90OzwvY29kZT48YnIgLz4KIFNldCB0aGUgPHNwYW4gY2xhc3M9 ImNhcHMiPkNTUzwvc3Bhbj4gPGNvZGU+Y2xhc3M8L2NvZGU+IG5hbWUgb2YgdGhlIHRhZy4g RGVmYXVsdDogPGNvZGU+emVtU3VibWl0PC9jb2RlPi4gVG8gcmVtb3ZlIDxjb2RlPmNsYXNz PC9jb2RlPiBhdHRyaWJ1dGUgZnJvbSB0aGUgZWxlbWVudCBlbnRpcmVseSwgdXNlIDxjb2Rl PmNsYXNzPSZxdW90OyZxdW90OzwvY29kZT4uPC9saT4KCTxsaT48Y29kZT5odG1sX2Zvcm09 JnF1b3Q7aWQmcXVvdDs8L2NvZGU+PGJyIC8+ClRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+SFRN TDwvc3Bhbj4gPGNvZGU+aWQ8L2NvZGU+IG9mIHRoZSA8Y29kZT4mbHQ7Zm9ybSZndDs8L2Nv ZGU+IHRhZyB0byB3aGljaCB0aGUgYnV0dG9uIGlzIGF0dGFjaGVkLiBBc3NvY2lhdGVkIHdp dGggdGhlIGNvbnRhaW5lZCBmb3JtIGJ5IGRlZmF1bHQuPC9saT4KCTxsaT48Y29kZT5sYWJl bD0mcXVvdDt0ZXh0JnF1b3Q7PC9jb2RlPjxiciAvPgpUZXh0IHNob3duIG9uIHRoZSBzdWJt aXQgYnV0dG9uLiBEZWZhdWx0IGlzIDxjb2RlPlNlbmQ8L2NvZGU+LjwvbGk+CjwvdWw+Cgo8 aDQ+RXhhbXBsZXM8L2g0PgoKPGg1PkV4YW1wbGUgMTwvaDU+Cgo8cD5TdGFuZGFyZCBzdWJt aXQgYnV0dG9uOjwvcD4KCjxwcmUgY2xhc3M9Imxhbmd1YWdlLW1hcmt1cCI+PGNvZGU+Jmx0 O3R4cDp6ZW1fY29udGFjdF9zdWJtaXQgLyZndDs8L2NvZGU+PC9wcmU+Cgo8aDU+RXhhbXBs ZSAyPC9oNT4KCjxwPlN1Ym1pdCBidXR0b24gd2l0aCB5b3VyIG93biB0ZXh0OjwvcD4KCjxw cmUgY2xhc3M9Imxhbmd1YWdlLW1hcmt1cCI+PGNvZGU+Jmx0O3R4cDp6ZW1fY29udGFjdF9z dWJtaXQgbGFiZWw9JnF1b3Q7VG8gdGhlIG1vb29vbiZxdW90OyAvJmd0OzwvY29kZT48L3By ZT4KCjxoNT5FeGFtcGxlIDM8L2g1PgoKPHA+VXNhZ2UgYXMgYSBjb250YWluZXIgdGFnLCB3 aGljaCBhbGxvd3MgeW91IHRvIHVzZSBUZXh0cGF0dGVybiB0YWdzIGFuZCA8c3BhbiBjbGFz cz0iY2FwcyI+SFRNTDwvc3Bhbj4gbWFya3VwIGluIHRoZSBzdWJtaXQgYnV0dG9uOjwvcD4K CjxwcmUgY2xhc3M9Imxhbmd1YWdlLW1hcmt1cCI+PGNvZGU+Jmx0O3R4cDp6ZW1fY29udGFj dF9zdWJtaXQmZ3Q7Jmx0O3N0cm9uZyZndDtTZW5kJmx0Oy9zdHJvbmcmZ3Q7IHF1ZXN0aW9u Jmx0Oy90eHA6emVtX2NvbnRhY3Rfc3VibWl0Jmd0OzwvY29kZT48L3ByZT4KCjxoNT5FeGFt cGxlIDQ8L2g1PgoKPHA+QXMgZXhhbXBsZSAzIGFib3ZlLCBidXQgdXNpbmcgYW4gaW1hZ2Ug YXMgdGhlIGJ1dHRvbjo8L3A+Cgo8cHJlIGNsYXNzPSJsYW5ndWFnZS1tYXJrdXAiPjxjb2Rl PiZsdDt0eHA6emVtX2NvbnRhY3Rfc3VibWl0Jmd0OwogICAgJmx0O2ltZyBzcmM9JnF1b3Q7 cGF0aC90by9pbWcucG5nJnF1b3Q7IGFsdD0mcXVvdDtzdWJtaXQmcXVvdDsmZ3Q7CiZsdDsv dHhwOnplbV9jb250YWN0X3N1Ym1pdCZndDs8L2NvZGU+PC9wcmU+Cgo8aDMgaWQ9InpjX3Nl bGVjdCI+emVtX2NvbnRhY3Rfc2VsZWN0IHRhZzwvaDM+Cgo8cHJlIGNsYXNzPSJsYW5ndWFn ZS1tYXJrdXAiPjxjb2RlPiZsdDt0eHA6emVtX2NvbnRhY3Rfc2VsZWN0IC8mZ3Q7PC9jb2Rl PjwvcHJlPgoKPHA+Q29udGFpbmVyIHRhZyB0aGF0IGNyZWF0ZXMgYSBkcm9wLWRvd24gc2Vs ZWN0aW9uIDxjb2RlPiZsdDtzZWxlY3QmZ3Q7PC9jb2RlPiBsaXN0LCBvciBzY3JvbGxlZCA8 Y29kZT4mbHQ7c2VsZWN0Jmd0OzwvY29kZT4gbGlzdCBib3ggKGJ5IHV0aWxpc2luZyB0aGUg PGNvZGU+c2l6ZTwvY29kZT4gYXR0cmlidXRlKS48L3A+Cgo8aDQ+QXR0cmlidXRlczwvaDQ+ Cgo8dWw+Cgk8bGk+PGNvZGU+YnJlYWs9JnF1b3Q7dGFnJnF1b3Q7PC9jb2RlPjxiciAvPgpC cmVhayB0YWcgYmV0d2VlbiB0aGUgbGFiZWwgYW5kIDxjb2RlPiZsdDtzZWxlY3QmZ3Q7PC9j b2RlPiBmaWVsZC4gRGVmYXVsdCBpcyA8Y29kZT4mbHQ7YnIgLyZndDs8L2NvZGU+LiBVc2Ug PGNvZGU+YnJlYWs9JnF1b3Q7JnF1b3Q7PC9jb2RlPiB0byBwdXQgdGhlIGxhYmVsIGFuZCBp bnB1dCBmaWVsZCBvbiB0aGUgc2FtZSBsaW5lLjwvbGk+Cgk8bGk+PGNvZGU+Y2xhc3M9JnF1 b3Q7c3BhY2Utc2VwYXJhdGVkIHZhbHVlcyZxdW90OzwvY29kZT48YnIgLz4KIFNldCB0aGUg PHNwYW4gY2xhc3M9ImNhcHMiPkNTUzwvc3Bhbj4gPGNvZGU+Y2xhc3M8L2NvZGU+IG5hbWUg b2YgdGhlIGxpc3QuIERlZmF1bHQ6IDxjb2RlPnplbVNlbGVjdDwvY29kZT4uIFRvIHJlbW92 ZSA8Y29kZT5jbGFzczwvY29kZT4gYXR0cmlidXRlIGZyb20gdGhlIGVsZW1lbnQgZW50aXJl bHksIHVzZSA8Y29kZT5jbGFzcz0mcXVvdDsmcXVvdDs8L2NvZGU+LjwvbGk+Cgk8bGk+PGNv ZGU+ZGVsaW1pdGVyPSZxdW90O2NoYXJhY3RlciZxdW90OzwvY29kZT48YnIgLz4KU2VwYXJh dG9yIGNoYXJhY3RlciBiZXR3ZWVuIGxpc3QgaXRlbXMgaWYgdXNpbmcgdGhlIDxjb2RlPm9w dGlvbnM8L2NvZGU+IGF0dHJpYnV0ZS4gRGVmYXVsdCBpcyA8Y29kZT4sPC9jb2RlPiAoY29t bWEpLiBJZ25vcmVkIGlmIHRoaXMgdGFnIGlzIHVzZWQgYXMgYSBjb250YWluZXIuPC9saT4K CTxsaT48Y29kZT5sYWJlbD0mcXVvdDt0ZXh0JnF1b3Q7PC9jb2RlPjxiciAvPgpUZXh0IGxh YmVsIGRpc3BsYXllZCB0byB0aGUgdXNlci4gRGVmYXVsdCBpcyA8Y29kZT5PcHRpb248L2Nv ZGU+LjwvbGk+Cgk8bGk+PGNvZGU+bGFiZWxfcG9zaXRpb249JnF1b3Q7dGV4dCZxdW90Ozwv Y29kZT48YnIgLz4KUG9zaXRpb24gb2YgdGhlIGxhYmVsIGluIHJlbGF0aW9uIHRvIHRoZSA8 Y29kZT4mbHQ7c2VsZWN0Jmd0OzwvY29kZT4gZmllbGQuIEF2YWlsYWJsZSB2YWx1ZXM6IDxj b2RlPmJlZm9yZTwvY29kZT4gb3IgPGNvZGU+YWZ0ZXI8L2NvZGU+LiBEZWZhdWx0IGlzIDxj b2RlPmJlZm9yZTwvY29kZT4uPC9saT4KCTxsaT48Y29kZT5odG1sX2Zvcm09JnF1b3Q7aWQm cXVvdDs8L2NvZGU+PGJyIC8+ClRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+SFRNTDwvc3Bhbj4g PGNvZGU+aWQ8L2NvZGU+IG9mIHRoZSA8Y29kZT4mbHQ7Zm9ybSZndDs8L2NvZGU+IHRhZyB0 byB3aGljaCB0aGUgPGNvZGU+Jmx0O3NlbGVjdCZndDs8L2NvZGU+IGlzIGF0dGFjaGVkLiBB c3NvY2lhdGVkIHdpdGggdGhlIGNvbnRhaW5lZCBmb3JtIGJ5IGRlZmF1bHQuPC9saT4KCTxs aT48Y29kZT5uYW1lPSZxdW90O3ZhbHVlJnF1b3Q7PC9jb2RlPjxiciAvPgpGaWVsZCBuYW1l LCBhcyB1c2VkIGluIHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+SFRNTDwvc3Bhbj4gPGNvZGU+ Jmx0O3NlbGVjdCZndDs8L2NvZGU+IHRhZy48L2xpPgoJPGxpPjxjb2RlPm9wdGlvbnM9JnF1 b3Q7Y29tbWEtc2VwYXJhdGVkIHZhbHVlcyZxdW90OzwvY29kZT48YnIgLz4KIExpc3Qgb2Yg aXRlbXMgKHByZXZpb3VzbHkgPGNvZGU+bGlzdDwvY29kZT4pIHRvIHNob3cgaW4gdGhlIHNl bGVjdCBib3guIE1heSBhbHNvIHVzZSB0aGUgPGNvZGU+Jmx0O3R4cDp6ZW1fY29udGFjdF9v cHRpb24gLyZndDs8L2NvZGU+IHRhZyBpbnNpZGUgdGhpcyB0YWcmIzgyMTc7cyBjb250YWlu ZXIuPC9saT4KCTxsaT48Y29kZT5yZXF1aXJlZD0mcXVvdDtib29sZWFuJnF1b3Q7PC9jb2Rl PjxiciAvPgpXaGV0aGVyIHRoaXMgZmllbGQgbXVzdCBiZSBmaWxsZWQgb3V0LiBBdmFpbGFi bGUgdmFsdWVzOiA8Y29kZT4xPC9jb2RlPiAoeWVzKSBvciA8Y29kZT4wPC9jb2RlPiAobm8p LiBEZWZhdWx0IGlzIHdoYXRldmVyIGlzIHNldCBpbiB0aGUgPGNvZGU+Jmx0O3R4cDp6ZW1f Y29udGFjdCZndDs8L2NvZGU+IHRhZyYjODIxNztzIDxjb2RlPnJlcXVpcmVkPC9jb2RlPiBh dHRyaWJ1dGUgJiM4MjExOyBpZiBuZWl0aGVyIGF0dHJpYnV0ZSBpcyBzZXQgdGhlbiBkZWZh dWx0IGlzIDxjb2RlPjE8L2NvZGU+LjwvbGk+Cgk8bGk+PGNvZGU+c2VsZWN0ZWQ9JnF1b3Q7 dmFsdWUmcXVvdDs8L2NvZGU+PGJyIC8+Ckxpc3QgaXRlbSB0aGF0IGlzIHNlbGVjdGVkIGJ5 IGRlZmF1bHQuPC9saT4KCTxsaT48Y29kZT5zaXplPSZxdW90O3ZhbHVlJnF1b3Q7PC9jb2Rl Pjxici8+SWYgdGhlIDxjb2RlPiZsdDtzZWxlY3QmZ3Q7PC9jb2RlPiBpcyB0byBiZSBwcmVz ZW50ZWQgYXMgYSBzY3JvbGxlZCBsaXN0IGJveCwgdGhpcyBhdHRyaWJ1dGUgcmVwcmVzZW50 cyB0aGUgbnVtYmVyIG9mIHJvd3MgaW4gdGhlIGxpc3QgdGhhdCBzaG91bGQgYmUgdmlzaWJs ZSBhdCBvbmUgdGltZS4gRGVmYXVsdCBpcyB1bnNldCAoaS5lLiwgYSBkcm9wLWRvd24gc2Vs ZWN0aW9uIDxjb2RlPiZsdDtzZWxlY3QmZ3Q7PC9jb2RlPiBsaXN0KS48L2xpPgo8L3VsPgoK PGg0PkV4YW1wbGVzPC9oND4KCjxoNT5FeGFtcGxlIDE8L2g1PgoKPHA+RHJvcC1kb3duIHNl bGVjdGlvbiBsaXN0IGxhYmVsZWQgJiM4MjE2O0RlcGFydG1lbnQmIzgyMTc7LCBjb250YWlu aW5nIHRocmVlIG9wdGlvbnMgYW5kIGEgYmxhbmsgb3B0aW9uIChkdWUgdG8gdGhlIGNvbW1h IGJlZm9yZSAmIzgyMTY7TWFya2V0aW5nJiM4MjE3Oykgc2hvd24gYnkgZGVmYXVsdCwgZm9y Y2luZyB0aGUgdXNlciB0byBtYWtlIGEgc2VsZWN0aW9uLjwvcD4KCjxwcmUgY2xhc3M9Imxh bmd1YWdlLW1hcmt1cCI+PGNvZGU+Jmx0O3R4cDp6ZW1fY29udGFjdF9zZWxlY3QgbGFiZWw9 JnF1b3Q7RGVwYXJ0bWVudCZxdW90OyBvcHRpb25zPSZxdW90OyxNYXJrZXRpbmcsU2FsZXMs U3VwcG9ydCZxdW90OyAvJmd0OzwvY29kZT48L3ByZT4KCjxoNT5FeGFtcGxlIDI8L2g1PgoK PHByZT48Y29kZT4mbHQ7dHhwOnplbV9jb250YWN0X3NlbGVjdCBsYWJlbD0mcXVvdDtEZXBh cnRtZW50JnF1b3Q7IHNlbGVjdGVkPSZxdW90O1NhbGVzJnF1b3Q7Jmd0OwogICAgJmx0O3R4 cDp6ZW1fY29udGFjdF9vcHRpb24gLyZndDsKICAgICZsdDt0eHA6emVtX2NvbnRhY3Rfb3B0 aW9uIGxhYmVsPSZxdW90O01hcmtldGluZyZxdW90OyAvJmd0OwogICAgJmx0O3R4cDp6ZW1f Y29udGFjdF9vcHRpb24gbGFiZWw9JnF1b3Q7U2FsZXMmcXVvdDsgLyZndDsKICAgICZsdDt0 eHA6emVtX2NvbnRhY3Rfb3B0aW9uIGxhYmVsPSZxdW90O1N1cHBvcnQmcXVvdDsgLyZndDsK Jmx0Oy90eHA6emVtX2NvbnRhY3Rfc2VsZWN0Jmd0OzwvY29kZT48L3ByZT4KCjxwPkRyb3At ZG93biBzZWxlY3Rpb24gbGlzdCBjb250YWluaW5nIHRocmVlIG9wdGlvbnMgcGx1cyBhIGJs YW5rIG9wdGlvbiAoYWxzbyBzZWUgPGNvZGU+emVtX2NvbnRhY3Rfb3B0aW9uPC9jb2RlPiB0 YWcgYmVsb3cpLCB3aXRoICYjODIxNjtTYWxlcyYjODIxNzsgc2VsZWN0ZWQgYnkgZGVmYXVs dC48L3A+Cgo8aDMgaWQ9InpjX29wdGlvbiI+emVtX2NvbnRhY3Rfb3B0aW9uIHRhZzwvaDM+ Cgo8cHJlIGNsYXNzPSJsYW5ndWFnZS1tYXJrdXAiPjxjb2RlPiZsdDt0eHA6emVtX2NvbnRh Y3Rfb3B0aW9uIC8mZ3Q7PC9jb2RlPjwvcHJlPgoKPHA+Q3JlYXRlcyBhIGRyb3AtZG93biBz ZWxlY3Rpb24gb3B0aW9uLiBNYXkgYmUgdXNlZCBhcyBhIHNpbmdsZSAoc2VsZi1jbG9zaW5n KSBvciBjb250YWluZXIgdGFnLiBBbHNvIHNlZSA8Y29kZT56ZW1fY29udGFjdF9zZWxlY3Q8 L2NvZGU+IHRhZyBhYm92ZS48L3A+Cgo8aDQ+QXR0cmlidXRlczwvaDQ+Cgo8dWw+Cgk8bGk+ PGNvZGU+Y2xhc3M9JnF1b3Q7c3BhY2Utc2VwYXJhdGVkIHZhbHVlcyZxdW90OzwvY29kZT48 YnIgLz4KIFNldCB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPkNTUzwvc3Bhbj4gPGNvZGU+Y2xh c3M8L2NvZGU+IG5hbWUgb2YgdGhlIG9wdGlvbi4gRGVmYXVsdDogPGNvZGU+emVtT3B0aW9u PC9jb2RlPi4gVG8gcmVtb3ZlIDxjb2RlPmNsYXNzPC9jb2RlPiBhdHRyaWJ1dGUgZnJvbSB0 aGUgZWxlbWVudCBlbnRpcmVseSwgdXNlIDxjb2RlPmNsYXNzPSZxdW90OyZxdW90OzwvY29k ZT4uPC9saT4KCTxsaT48Y29kZT5sYWJlbD0mcXVvdDt0ZXh0JnF1b3Q7PC9jb2RlPiA8c3Bh biBjbGFzcz0id2FybmluZyI+cmVxdWlyZWQ8L3NwYW4+PGJyIC8+ClRleHQgbGFiZWwgb2Yg dGhpcyBvcHRpb24gZGlzcGxheWVkIHRvIHRoZSB1c2VyLjwvbGk+Cgk8bGk+PGNvZGU+c2Vs ZWN0ZWQ9JnF1b3Q7Ym9vbGVhbiZxdW90OzwvY29kZT48YnIgLz4KV2hldGhlciB0aGlzIGl0 ZW0gaXMgc2VsZWN0ZWQsIE1heSBhbHNvIGJlIHNwZWNpZmllZCBpbiB0aGUgY29udGFpbmVy IHRhZyYjODIxNztzIDxjb2RlPnNlbGVjdGVkPC9jb2RlPiBhdHRyaWJ1dGUuIEF2YWlsYWJs ZSB2YWx1ZXM6IDxjb2RlPjE8L2NvZGU+ICh5ZXMpIG9yIDxjb2RlPjA8L2NvZGU+IChubyku PC9saT4KCTxsaT48Y29kZT52YWx1ZT0mcXVvdDt0ZXh0JnF1b3Q7PC9jb2RlPjxiciAvPgpU aGUgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgb3B0aW9uIHdoZW4gc3VibWl0dGVkLiBE ZWZhdWx0IGlzIHRoZSBsYWJlbC48L2xpPgo8L3VsPgoKPGg1PkV4YW1wbGUgMTwvaDU+Cgo8 cHJlIGNsYXNzPSJsYW5ndWFnZS1tYXJrdXAiPjxjb2RlPiZsdDt0eHA6emVtX2NvbnRhY3Rf c2VsZWN0IGxhYmVsPSZxdW90O0RlcGFydG1lbnQmcXVvdDsmZ3Q7CiAgICAmbHQ7dHhwOnpl bV9jb250YWN0X29wdGlvbiBsYWJlbD0mcXVvdDtNYXJrZXRpbmcmcXVvdDsgLyZndDsKICAg ICZsdDt0eHA6emVtX2NvbnRhY3Rfb3B0aW9uIGxhYmVsPSZxdW90O1NhbGVzJnF1b3Q7IC8m Z3Q7CiAgICAmbHQ7dHhwOnplbV9jb250YWN0X29wdGlvbiBsYWJlbD0mcXVvdDtTdXBwb3J0 JnF1b3Q7IC8mZ3Q7CiZsdDsvdHhwOnplbV9jb250YWN0X3NlbGVjdCZndDs8L2NvZGU+PC9w cmU+Cgo8cD5Ecm9wLWRvd24gc2VsZWN0aW9uIGxpc3QgY29udGFpbmluZyB0aHJlZSBvcHRp b25zIGFzIHNpbmdsZSB0YWdzLjwvcD4KCjxoNT5FeGFtcGxlIDI8L2g1PgoKPHByZSBjbGFz cz0ibGFuZ3VhZ2UtbWFya3VwIj48Y29kZT4mbHQ7dHhwOnplbV9jb250YWN0X3NlbGVjdCBs YWJlbD0mcXVvdDtEZXBhcnRtZW50JnF1b3Q7Jmd0OwogICAgJmx0O3R4cDp6ZW1fY29udGFj dF9vcHRpb24gdmFsdWU9JnF1b3Q7Y29udGFjdC1tYXJrZXRpbmcmcXVvdDsmZ3Q7TWFya2V0 aW5nJmx0Oy90eHA6emVtX2NvbnRhY3Rfb3B0aW9uJmd0OwogICAgJmx0O3R4cDp6ZW1fY29u dGFjdF9vcHRpb24gdmFsdWU9JnF1b3Q7Y29udGFjdC1zYWxlcyZxdW90OyBzZWxlY3RlZD0m cXVvdDsxJnF1b3Q7Jmd0O1NhbGVzJmx0Oy90eHA6emVtX2NvbnRhY3Rfb3B0aW9uJmd0Owog ICAgJmx0O3R4cDp6ZW1fY29udGFjdF9vcHRpb24gdmFsdWU9JnF1b3Q7Y29udGFjdC1zdXBw b3J0JnF1b3Q7Jmd0O1N1cHBvcnQmbHQ7L3R4cDp6ZW1fY29udGFjdF9vcHRpb24mZ3Q7CiZs dDsvdHhwOnplbV9jb250YWN0X3NlbGVjdCZndDs8L2NvZGU+PC9wcmU+Cgo8cD5Ecm9wLWRv d24gc2VsZWN0aW9uIGxpc3QgY29udGFpbmluZyB0aHJlZSBvcHRpb25zIGFzIGNvbnRhaW5l ciB0YWdzIHdpdGggJiM4MjE2O1NhbGVzJiM4MjE3OyBzZWxlY3RlZCBieSBkZWZhdWx0Ljwv cD4KCjxoMyBpZD0iemNfY2hlY2tib3giPnplbV9jb250YWN0X2NoZWNrYm94IHRhZzwvaDM+ Cgo8cHJlIGNsYXNzPSJsYW5ndWFnZS1tYXJrdXAiPjxjb2RlPiZsdDt0eHA6emVtX2NvbnRh Y3RfY2hlY2tib3ggLyZndDs8L2NvZGU+PC9wcmU+Cgo8cD5DcmVhdGVzIGEgY2hlY2tib3gu PC9wPgoKPGg0PkF0dHJpYnV0ZXM8L2g0PgoKPHVsPgoJPGxpPjxjb2RlPmJyZWFrPSZxdW90 O3RhZyZxdW90OzwvY29kZT48YnIgLz4KQnJlYWsgdGFnIGJldHdlZW4gdGhlIGNoZWNrYm94 IGJ1dHRvbiBhbmQgbGFiZWwuIERlZmF1bHQgaXMgb25lIHNwYWNlLiBVc2UgPGNvZGU+YnJl YWs9JnF1b3Q7YnImcXVvdDs8L2NvZGU+IHRvIHB1dCB0aGUgY2hlY2tib3ggYW5kIGxhYmVs IG9uIHNlcGFyYXRlIGxpbmVzLjwvbGk+Cgk8bGk+PGNvZGU+Y2hlY2tlZD0mcXVvdDtib29s ZWFuJnF1b3Q7PC9jb2RlPjxiciAvPgpXaGV0aGVyIHRoaXMgYm94IGlzIGNoZWNrZWQgd2hl biBmaXJzdCBkaXNwbGF5ZWQuIEF2YWlsYWJsZSB2YWx1ZXM6IDxjb2RlPjE8L2NvZGU+ICh5 ZXMpIG9yIDxjb2RlPjA8L2NvZGU+IChubykuIERlZmF1bHQgaXMgPGNvZGU+MDwvY29kZT4u PC9saT4KCTxsaT48Y29kZT5jbGFzcz0mcXVvdDtzcGFjZS1zZXBhcmF0ZWQgdmFsdWVzJnF1 b3Q7PC9jb2RlPjxiciAvPgogU2V0IHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+Q1NTPC9zcGFu PiA8Y29kZT5jbGFzczwvY29kZT4gbmFtZSBvZiB0aGUgb3B0aW9uLiBEZWZhdWx0OiA8Y29k ZT56ZW1DaGVja2JveDwvY29kZT4uIFRvIHJlbW92ZSA8Y29kZT5jbGFzczwvY29kZT4gYXR0 cmlidXRlIGZyb20gdGhlIGVsZW1lbnQgZW50aXJlbHksIHVzZSA8Y29kZT5jbGFzcz0mcXVv dDsmcXVvdDs8L2NvZGU+LjwvbGk+Cgk8bGk+PGNvZGU+aHRtbF9mb3JtPSZxdW90O2lkJnF1 b3Q7PC9jb2RlPjxiciAvPgpUaGUgPHNwYW4gY2xhc3M9ImNhcHMiPkhUTUw8L3NwYW4+IDxj b2RlPmlkPC9jb2RlPiBvZiB0aGUgPGNvZGU+Jmx0O2Zvcm0mZ3Q7PC9jb2RlPiB0YWcgdG8g d2hpY2ggdGhlIGNoZWNrYm94IGlzIGF0dGFjaGVkLiBBc3NvY2lhdGVkIHdpdGggdGhlIGNv bnRhaW5lZCBmb3JtIGJ5IGRlZmF1bHQuPC9saT4KCTxsaT48Y29kZT5sYWJlbD0mcXVvdDt0 ZXh0JnF1b3Q7PC9jb2RlPjxiciAvPgpUZXh0IGxhYmVsIGRpc3BsYXllZCB0byB0aGUgdXNl ci4gRGVmYXVsdCBpcyA8Y29kZT5DaGVja2JveDwvY29kZT4uPC9saT4KCTxsaT48Y29kZT5s YWJlbF9wb3NpdGlvbj0mcXVvdDt0ZXh0JnF1b3Q7PC9jb2RlPjxiciAvPgpQb3NpdGlvbiBv ZiB0aGUgbGFiZWwgaW4gcmVsYXRpb24gdG8gdGhlIDxjb2RlPiZsdDtpbnB1dCZndDs8L2Nv ZGU+IGZpZWxkLiBBdmFpbGFibGUgdmFsdWVzOiA8Y29kZT5iZWZvcmU8L2NvZGU+IG9yIDxj b2RlPmFmdGVyPC9jb2RlPi4gRGVmYXVsdCBpcyA8Y29kZT5hZnRlcjwvY29kZT4uPC9saT4K CTxsaT48Y29kZT5uYW1lPSZxdW90O3ZhbHVlJnF1b3Q7PC9jb2RlPjxiciAvPgpGaWVsZCBu YW1lLCBhcyB1c2VkIGluIHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+SFRNTDwvc3Bhbj4gPGNv ZGU+Jmx0O2lucHV0Jmd0OzwvY29kZT4gdGFnLjwvbGk+Cgk8bGk+PGNvZGU+cmVxdWlyZWQ9 JnF1b3Q7Ym9vbGVhbiZxdW90OzwvY29kZT48YnIgLz4KV2hldGhlciB0aGlzIGNoZWNrYm94 IG11c3QgYmUgZmlsbGVkIG91dC4gQXZhaWxhYmxlIHZhbHVlczogPGNvZGU+MTwvY29kZT4g KHllcykgb3IgPGNvZGU+MDwvY29kZT4gKG5vKS4gRGVmYXVsdCBpcyB3aGF0ZXZlciBpcyBz ZXQgaW4gdGhlIDxjb2RlPiZsdDt0eHA6emVtX2NvbnRhY3QmZ3Q7PC9jb2RlPiB0YWcmIzgy MTc7cyA8Y29kZT5yZXF1aXJlZDwvY29kZT4gYXR0cmlidXRlICYjODIxMTsgaWYgbmVpdGhl ciBhdHRyaWJ1dGUgaXMgc2V0IHRoZW4gZGVmYXVsdCBpcyA8Y29kZT4xPC9jb2RlPi48L2xp PgoJPGxpPjxjb2RlPnZhbHVlPSZxdW90O3RleHQmcXVvdDs8L2NvZGU+PGJyIC8+ClZhbHVl IHRvIHNlbmQgaW4gdGhlIGVtYWlsIGlmIHRoZSBvcHRpb24gaXMgY2hlY2tlZC4gVXNlcyB5 ZXMvbm8gaWYgbm90IHNldC48L2xpPgo8L3VsPgoKPGg0PkV4YW1wbGVzPC9oND4KCjxoNT5F eGFtcGxlIDE8L2g1PgoKPHA+U2hyaW5rLXdyYXAgYWdyZWVtZW50IHdoaWNoIG11c3QgYmUg Y2hlY2tlZCBieSB0aGUgdXNlciBiZWZvcmUgdGhlIGVtYWlsIHdpbGwgYmUgc2VudC48L3A+ Cgo8cHJlIGNsYXNzPSJsYW5ndWFnZS1tYXJrdXAiPjxjb2RlPiZsdDt0eHA6emVtX2NvbnRh Y3RfY2hlY2tib3ggbGFiZWw9JnF1b3Q7SSBhY2NlcHQgdGhlIHRlcm1zIGFuZCBjb25kaXRp b25zJnF1b3Q7IC8mZ3Q7PC9jb2RlPjwvcHJlPgoKPGg1PkV4YW1wbGUgMjwvaDU+Cgo8cD5P cHRpb25hbCBjaGVja2JveGVzOjwvcD4KCjxwcmUgY2xhc3M9Imxhbmd1YWdlLW1hcmt1cCI+ PGNvZGU+V2l0aCB3aGljaCBvcGVyYXRpbmcgc3lzdGVtcyBhcmUgeW91IGZhbWlsaWFyPyZs dDticiAvJmd0OwombHQ7dHhwOnplbV9jb250YWN0X2NoZWNrYm94IGxhYmVsPSZxdW90O1dp bmRvd3MmcXVvdDsgcmVxdWlyZWQ9JnF1b3Q7MCZxdW90OyAvJmd0OyZsdDticiAvJmd0Owom bHQ7dHhwOnplbV9jb250YWN0X2NoZWNrYm94IGxhYmVsPSZxdW90O1VuaXgvTGludXgvQlNE JnF1b3Q7IHJlcXVpcmVkPSZxdW90OzAmcXVvdDsgLyZndDsmbHQ7YnIgLyZndDsKJmx0O3R4 cDp6ZW1fY29udGFjdF9jaGVja2JveCBsYWJlbD0mcXVvdDtNYWNPUyZxdW90OyByZXF1aXJl ZD0mcXVvdDswJnF1b3Q7IC8mZ3Q7PC9jb2RlPjwvcHJlPgoKPGgzIGlkPSJ6Y19yYWRpbyI+ emVtX2NvbnRhY3RfcmFkaW8gdGFnPC9oMz4KCjxwcmUgY2xhc3M9Imxhbmd1YWdlLW1hcmt1 cCI+PGNvZGU+Jmx0O3R4cDp6ZW1fY29udGFjdF9yYWRpbyAvJmd0OzwvY29kZT48L3ByZT4K CjxwPkNyZWF0ZXMgYSByYWRpbyBidXR0b24uPC9wPgoKPGg0PkF0dHJpYnV0ZXM8L2g0PgoK PHVsPgoJPGxpPjxjb2RlPmJyZWFrPSZxdW90O3RhZyZxdW90OzwvY29kZT48YnIgLz4KQnJl YWsgdGFnIGJldHdlZW4gdGhlIHJhZGlvIGJ1dHRvbiBhbmQgbGFiZWwuIERlZmF1bHQgaXMg b25lIHNwYWNlLiBVc2UgPGNvZGU+YnJlYWs9JnF1b3Q7YnImcXVvdDs8L2NvZGU+IHRvIHB1 dCB0aGUgcmFkaW8gYnV0dG9uIGFuZCBsYWJlbCBvbiBzZXBhcmF0ZSBsaW5lcy48L2xpPgoJ PGxpPjxjb2RlPmNoZWNrZWQ9JnF1b3Q7Ym9vbGVhbiZxdW90OzwvY29kZT48YnIgLz4KV2hl dGhlciB0aGlzIHJhZGlvIG9wdGlvbiBpcyBjaGVja2VkIHdoZW4gdGhlIGZvcm0gaXMgZmly c3QgZGlzcGxheWVkLiBBdmFpbGFibGUgdmFsdWVzOiA8Y29kZT4xPC9jb2RlPiAoeWVzKSBv ciA8Y29kZT4wPC9jb2RlPiAobm8pLiBEZWZhdWx0IGlzIDxjb2RlPjA8L2NvZGU+LjwvbGk+ Cgk8bGk+PGNvZGU+Y2xhc3M9JnF1b3Q7c3BhY2Utc2VwYXJhdGVkIHZhbHVlcyZxdW90Ozwv Y29kZT48YnIgLz4KIFNldCB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPkNTUzwvc3Bhbj4gPGNv ZGU+Y2xhc3M8L2NvZGU+IG5hbWUgb2YgdGhlIHJhZGlvIGJ1dHRvbi4gRGVmYXVsdDogPGNv ZGU+emVtUmFkaW88L2NvZGU+LiBUbyByZW1vdmUgPGNvZGU+Y2xhc3M8L2NvZGU+IGF0dHJp YnV0ZSBmcm9tIHRoZSBlbGVtZW50IGVudGlyZWx5LCB1c2UgPGNvZGU+Y2xhc3M9JnF1b3Q7 JnF1b3Q7PC9jb2RlPi48L2xpPgoJPGxpPjxjb2RlPmdyb3VwPSZxdW90O3RleHQmcXVvdDs8 L2NvZGU+IDxzcGFuIGNsYXNzPSJ3YXJuaW5nIj5yZXF1aXJlZDwvc3Bhbj48YnIgLz4KVGV4 dCB1c2VkIGluIHRoZSBlbWFpbCB0byBkZXNjcmliZSB0aGlzIGdyb3VwIG9mIHJhZGlvIGJ1 dHRvbnMuIFRoaXMgYXR0cmlidXRlIHZhbHVlIGlzIHJlbWVtYmVyZWQgZm9yIHN1YnNlcXVl bnQgcmFkaW8gYnV0dG9ucywgc28geW91IG9ubHkgaGF2ZSB0byBzZXQgaXQgb24gdGhlIGZp cnN0IHJhZGlvIGJ1dHRvbiBvZiBhIGdyb3VwLiBEZWZhdWx0IGlzIDxjb2RlPlJhZGlvPC9j b2RlPi48L2xpPgoJPGxpPjxjb2RlPmh0bWxfZm9ybT0mcXVvdDtpZCZxdW90OzwvY29kZT48 YnIgLz4KVGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5IVE1MPC9zcGFuPiA8Y29kZT5pZDwvY29k ZT4gb2YgdGhlIDxjb2RlPiZsdDtmb3JtJmd0OzwvY29kZT4gdGFnIHRvIHdoaWNoIHRoZSBy YWRpbyBidXR0b24gaXMgYXR0YWNoZWQuIEFzc29jaWF0ZWQgd2l0aCB0aGUgY29udGFpbmVk IGZvcm0gYnkgZGVmYXVsdC48L2xpPgoJPGxpPjxjb2RlPmxhYmVsPSZxdW90O3RleHQmcXVv dDs8L2NvZGU+IDxzcGFuIGNsYXNzPSJ3YXJuaW5nIj5yZXF1aXJlZDwvc3Bhbj48YnIgLz4K VGV4dCBsYWJlbCBkaXNwbGF5ZWQgdG8gdGhlIHVzZXIgYXMgcmFkaW8gYnV0dG9uIG9wdGlv bi48L2xpPgoJPGxpPjxjb2RlPm5hbWU9JnF1b3Q7dmFsdWUmcXVvdDs8L2NvZGU+IDxzcGFu IGNsYXNzPSJ3YXJuaW5nIj5yZWNvbW1lbmRlZDwvc3Bhbj48YnIgLz4KRmllbGQgbmFtZSwg YXMgdXNlZCBpbiB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPkhUTUw8L3NwYW4+IDxjb2RlPiZs dDtpbnB1dCZndDs8L2NvZGU+IHRhZy4gVGhpcyBhdHRyaWJ1dGUgdmFsdWUgaXMgcmVtZW1i ZXJlZCBmb3Igc3Vic2VxdWVudCByYWRpbyBidXR0b25zLCBzbyB5b3Ugb25seSBoYXZlIHRv IHNldCBpdCBvbiB0aGUgZmlyc3QgcmFkaW8gYnV0dG9uIG9mIGEgZ3JvdXAuIElmIGl0IGhh c24mIzgyMTc7dCBiZWVuIHNldCBhdCBhbGwsIGl0IHdpbGwgYmUgZGVyaXZlZCBmcm9tIHRo ZSA8Y29kZT5ncm91cDwvY29kZT4gYXR0cmlidXRlLjwvbGk+Cgk8bGk+PGNvZGU+cmVxdWly ZWQ9JnF1b3Q7Ym9vbGVhbiZxdW90OzwvY29kZT48YnIgLz4KV2hldGhlciB0aGlzIHJhZGlv IHNldCBtdXN0IGJlIGZpbGxlZCBvdXQuIEF2YWlsYWJsZSB2YWx1ZXM6IDxjb2RlPjE8L2Nv ZGU+ICh5ZXMpIG9yIDxjb2RlPjA8L2NvZGU+IChubykuIERlZmF1bHQgaXMgd2hhdGV2ZXIg aXMgc2V0IGluIHRoZSA8Y29kZT4mbHQ7dHhwOnplbV9jb250YWN0Jmd0OzwvY29kZT4gdGFn JiM4MjE3O3MgPGNvZGU+cmVxdWlyZWQ8L2NvZGU+IGF0dHJpYnV0ZSAmIzgyMTE7IGlmIG5l aXRoZXIgYXR0cmlidXRlIGlzIHNldCB0aGVuIGRlZmF1bHQgaXMgPGNvZGU+MTwvY29kZT4u IDxzdHJvbmc+WW91IHNob3VsZCBzZXQgdGhlIDxjb2RlPnJlcXVpcmVkPC9jb2RlPiBhdHRy aWJ1dGUgb24gb25seSB0aGUgZmlyc3QgcmFkaW8gYnV0dG9uIG9mIHRoZSBncm91cCwgb3Ig c2V0IHRoZSBzYW1lIGlkZW50aWNhbCBhdHRyaWJ1dGUgdmFsdWUgb24gYWxsIHJhZGlvIGJ1 dHRvbnMgaW4gdGhlIGdyb3VwLjwvc3Ryb25nPjwvbGk+Cgk8bGk+PGNvZGU+dmFsdWU9JnF1 b3Q7dGV4dCZxdW90OzwvY29kZT48YnIgLz4KVmFsdWUgdG8gc2VuZCBpbiB0aGUgZW1haWwg aWYgdGhlIG9wdGlvbiBpcyBjaGVja2VkLiBVc2VzIGxhYmVsIGlmIG5vdCBzZXQuPC9saT4K PC91bD4KCjxoND5FeGFtcGxlczwvaDQ+Cgo8aDU+RXhhbXBsZSAxPC9oNT4KCjxwPkdyb3Vw IG11dHVhbGx5IGV4Y2x1c2l2ZSByYWRpbyBidXR0b25zIGJ5IHNldHRpbmcgdGhlIDxjb2Rl Pmdyb3VwPC9jb2RlPiBhdHRyaWJ1dGUgb24gdGhlIGZpcnN0IHJhZGlvIGJ1dHRvbiBpbiBh IGdyb3VwLiBPbmx5IHRoZSBjaG9zZW4gcmFkaW8gYnV0dG9uIGZyb20gZWFjaCBncm91cCB3 aWxsIGJlIHVzZWQgaW4gdGhlIGVtYWlsIG1lc3NhZ2UuIFRoZSBtZXNzYWdlIHdpbGwgYmUg b3V0cHV0IGluIHRoZSBmb3JtIDxjb2RlPmdyb3VwOiBsYWJlbDwvY29kZT4gZm9yIGVhY2gg b2YgdGhlIGNob3NlbiByYWRpbyBidXR0b25zLjwvcD4KCjxwcmUgY2xhc3M9Imxhbmd1YWdl LW1hcmt1cCI+PGNvZGU+Jmx0O3R4cDp6ZW1fY29udGFjdF9yYWRpbyBsYWJlbD0mcXVvdDtN ZWRpdW0mcXVvdDsgZ3JvdXA9JnF1b3Q7SSBsaWtlIG15IHN0ZWFrJnF1b3Q7IC8mZ3Q7CiZs dDt0eHA6emVtX2NvbnRhY3RfcmFkaW8gbGFiZWw9JnF1b3Q7UmFyZSZxdW90OyAvJmd0Owom bHQ7dHhwOnplbV9jb250YWN0X3JhZGlvIGxhYmVsPSZxdW90O1dlbGwgZG9uZSZxdW90OyAv Jmd0OwombHQ7dHhwOnplbV9jb250YWN0X3JhZGlvIGxhYmVsPSZxdW90O1dpbmUmcXVvdDsg Z3JvdXA9JnF1b3Q7V2l0aCBhIGdsYXNzIG9mJnF1b3Q7IC8mZ3Q7CiZsdDt0eHA6emVtX2Nv bnRhY3RfcmFkaW8gbGFiZWw9JnF1b3Q7QmVlciZxdW90OyAvJmd0OwombHQ7dHhwOnplbV9j b250YWN0X3JhZGlvIGxhYmVsPSZxdW90O1dhdGVyJnF1b3Q7IC8mZ3Q7PC9jb2RlPjwvcHJl PgoKPGgzIGlkPSJ6Y19zZWNyZXQiPnplbV9jb250YWN0X3NlY3JldCB0YWc8L2gzPgoKPHBy ZSBjbGFzcz0ibGFuZ3VhZ2UtbWFya3VwIj48Y29kZT4mbHQ7dHhwOnplbV9jb250YWN0X3Nl Y3JldCAvJmd0OzwvY29kZT48L3ByZT4KCjxwPlRoaXMgdGFnIGhhcyBubyBlZmZlY3Qgb24g dGhlIGZvcm0gb3IgPHNwYW4gY2xhc3M9ImNhcHMiPkhUTUw8L3NwYW4+IG91dHB1dCwgYnV0 IHdpbGwgaW5jbHVkZSBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGluIHRoZSBlbWFpbC4gSXQg Y2FuIGJlIHVzZWQgYXMgYSBzaW5nbGUgKHNlbGYtY2xvc2luZykgdGFnIG9yIGFzIGEgY29u dGFpbmVyIHRhZy48L3A+Cgo8aDQ+QXR0cmlidXRlczwvaDQ+Cgo8dWw+Cgk8bGk+PGNvZGU+ bGFiZWw9JnF1b3Q7dGV4dCZxdW90OzwvY29kZT48YnIgLz4KVXNlZCB0byBpZGVudGlmeSB0 aGUgZmllbGQgaW4gdGhlIGVtYWlsLiBEZWZhdWx0IGlzIDxjb2RlPlNlY3JldDwvY29kZT4u PC9saT4KCTxsaT48Y29kZT5uYW1lPSZxdW90O3RleHQmcXVvdDs8L2NvZGU+PGJyIC8+ClVz ZWQgaW50ZXJuYWxseS4gU2V0IHRoaXMgb25seSBpZiB5b3UgaGF2ZSBtdWx0aXBsZSAmIzgy MTY7c2VjcmV0JiM4MjE3OyBmb3JtIGVsZW1lbnRzIHdpdGggaWRlbnRpY2FsIGxhYmVscy48 L2xpPgoJPGxpPjxjb2RlPnZhbHVlPSZxdW90O3ZhbHVlJnF1b3Q7PC9jb2RlPjxiciAvPgpT b21lIHRleHQgeW91IHdhbnQgdG8gYWRkIHRvIHRoZSBlbWFpbC48L2xpPgo8L3VsPgoKPGg0 PkV4YW1wbGVzPC9oND4KCjxoNT5FeGFtcGxlIDE8L2g1PgoKPHA+VXNhZ2UgYXMgYSBzaW5n bGUgKHNlbGYtY2xvc2luZykgdGFnOjwvcD4KCjxwcmUgY2xhc3M9Imxhbmd1YWdlLW1hcmt1 cCI+PGNvZGU+Jmx0O3R4cDp6ZW1fY29udGFjdF9zZWNyZXQgdmFsdWU9JnF1b3Q7VGhlIGFu c3dlciBpcyA0MiZxdW90OyAvJmd0OzwvY29kZT48L3ByZT4KCjxoNT5FeGFtcGxlIDI8L2g1 PgoKPHA+VXNhZ2UgYXMgYSBjb250YWluZXIgdGFnOjwvcD4KCjxwcmU+PGNvZGU+Jmx0O3R4 cDp6ZW1fY29udGFjdF9zZWNyZXQgbGFiZWw9JnF1b3Q7RGVhciB1c2VyJnF1b3Q7Jmd0Owog ICAgUGxlYXNlIHByb3ZpZGUgYSB1c2VmdWwgZXhhbXBsZSBmb3IgdGhpcyB0YWchCiZsdDsv dHhwOnplbV9jb250YWN0X3NlY3JldCZndDs8L2NvZGU+PC9wcmU+Cgo8aDMgaWQ9InpjX3Nl cnZlcmluZm8iPnplbV9jb250YWN0X3NlcnZlcmluZm8gdGFnPC9oMz4KCjxwcmUgY2xhc3M9 Imxhbmd1YWdlLW1hcmt1cCI+PGNvZGU+Jmx0O3R4cDp6ZW1fY29udGFjdF9zZXJ2ZXJpbmZv IC8mZ3Q7PC9jb2RlPjwvcHJlPgoKPHA+VGhpcyB0YWcgaGFzIG5vIGVmZmVjdCBvbiB0aGUg Zm9ybSBvciA8c3BhbiBjbGFzcz0iY2FwcyI+SFRNTDwvc3Bhbj4gb3V0cHV0LCBidXQgd2ls bCBpbmNsdWRlIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gaW4gdGhlIGVtYWlsIGJhc2VkIG9u IHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+UEhQPC9zcGFuPiA8Y29kZT4kX1NFUlZFUjwvY29k ZT4gdmFyaWFibGUuPC9wPgoKPGg0PkF0dHJpYnV0ZXM8L2g0PgoKPHVsPgoJPGxpPjxjb2Rl PmxhYmVsPSZxdW90O3RleHQmcXVvdDs8L2NvZGU+PGJyIC8+ClVzZWQgdG8gaWRlbnRpZnkg dGhlIGZpZWxkIGluIHRoZSBlbWFpbC4gRGVmYXVsdHMgdG8gdGhlIHZhbHVlIG9mIHRoZSA8 Y29kZT5uYW1lPC9jb2RlPiBhdHRyaWJ1dGUuPC9saT4KCTxsaT48Y29kZT5uYW1lPSZxdW90 O3ZhbHVlJnF1b3Q7PC9jb2RlPiA8c3BhbiBjbGFzcz0id2FybmluZyI+cmVxdWlyZWQ8L3Nw YW4+PGJyIC8+Ck5hbWUgb2YgdGhlIHNlcnZlciB2YXJpYWJsZS4gU2VlIHRoZSA8YSBocmVm PSJodHRwOi8vcGhwLm5ldC9tYW51YWwvcmVzZXJ2ZWQudmFyaWFibGVzLnBocCNyZXNlcnZl ZC52YXJpYWJsZXMuc2VydmVyIj48c3BhbiBjbGFzcz0iY2FwcyI+UEhQPC9zcGFuPiBtYW51 YWw8L2E+IGZvciBhIGZ1bGwgbGlzdC48L2xpPgo8L3VsPgoKPGg0PkV4YW1wbGVzPC9oND4K CjxoNT5FeGFtcGxlIDE8L2g1PgoKPHA+QWRkIHRoZSBJUCBhZGRyZXNzIG9mIHRoZSB2aXNp dG9yIHRvIHRoZSBlbWFpbDo8L3A+Cgo8cHJlIGNsYXNzPSJsYW5ndWFnZS1tYXJrdXAiPjxj b2RlPiZsdDt0eHA6emVtX2NvbnRhY3Rfc2VydmVyaW5mbyBuYW1lPSZxdW90O1JFTU9URV9B RERSJnF1b3Q7IGxhYmVsPSZxdW90O0lQIG51bWJlciZxdW90OyAvJmd0OzwvY29kZT48L3By ZT4KCjxoNT5FeGFtcGxlIDI8L2g1PgoKPHA+QWRkIHRoZSBuYW1lIG9mIHRoZSB2aXNpdG9y JiM4MjE3O3MgYnJvd3NlciB0byB0aGUgZW1haWw6PC9wPgoKPHByZT48Y29kZT4mbHQ7dHhw OnplbV9jb250YWN0X3NlcnZlcmluZm8gbmFtZT0mcXVvdDtIVFRQX1VTRVJfQUdFTlQmcXVv dDsgbGFiZWw9JnF1b3Q7QnJvd3NlciZxdW90OyAvJmd0OzwvY29kZT48L3ByZT4KCjxoMyBp ZD0iemNfc2VuZF9hcnRpY2xlIj56ZW1fY29udGFjdF9zZW5kX2FydGljbGUgdGFnPC9oMz4K CjxwcmUgY2xhc3M9Imxhbmd1YWdlLW1hcmt1cCI+PGNvZGU+Jmx0O3R4cDp6ZW1fY29udGFj dF9zZW5kX2FydGljbGUgLyZndDs8L2NvZGU+PC9wcmU+Cgo8cD5Vc2UgdGhpcyB0YWcgaW4g eW91ciBpbmRpdmlkdWFsIGFydGljbGUgZm9ybSwgd2hlcmUgeW91IHdhbnQgdGhlICYjODIy MDtzZW5kIGFydGljbGUmIzgyMjE7IGxpbmsgdG8gYmUgZGlzcGxheWVkLjwvcD4KCjxoND5B dHRyaWJ1dGVzPC9oND4KCjx1bD4KCTxsaT48Y29kZT5saW5rdGV4dD0mcXVvdDt0ZXh0JnF1 b3Q7PC9jb2RlPjxiciAvPgpUZXh0IGRpc3BsYXllZCBmb3IgdGhlIGxpbmsuIERlZmF1bHQg aXMgPGNvZGU+c2VuZCBhcnRpY2xlPC9jb2RlPi48L2xpPgo8L3VsPgoKPGg0PkV4YW1wbGVz PC9oND4KCjxoNT5FeGFtcGxlIDE8L2g1PgoKPHA+T24gYW4gYXJ0aWNsZSBmb3JtOjwvcD4K CjxwcmUgY2xhc3M9Imxhbmd1YWdlLW1hcmt1cCI+PGNvZGU+Jmx0O3R4cDp6ZW1fY29udGFj dF9zZW5kX2FydGljbGUgbGlua3RleHQ9JnF1b3Q7U2VuZCB0aGlzIGFydGljbGUmcXVvdDsg LyZndDs8L2NvZGU+PC9wcmU+Cgo8aDMgaWQ9InpjX2xhYmVsIj56ZW1fY29udGFjdF9sYWJl bCB0YWc8L2gzPgoKPHByZSBjbGFzcz0ibGFuZ3VhZ2UtbWFya3VwIj48Y29kZT4mbHQ7dHhw OnplbV9jb250YWN0X2xhYmVsIC8mZ3Q7PC9jb2RlPjwvcHJlPgoKPHA+UmV0dXJuIHRoZSBs YWJlbCBmb3IgdGhlIGdpdmVuIGF0dHJpYnV0ZSBuYW1lLjwvcD4KCjxoND5BdHRyaWJ1dGVz PC9oND4KCjx1bD4KCTxsaT48Y29kZT5uYW1lPSZxdW90O3RleHQmcXVvdDs8L2NvZGU+PGJy IC8+ClRoZSBuYW1lIG9mIHRoZSBmaWVsZCBmb3Igd2hpY2ggeW91IHdpc2ggdG8gcmV0cmll dmUgdGhlIGxhYmVsLjwvbGk+CjwvdWw+Cgo8aDMgaWQ9InpjX3ZhbHVlIj56ZW1fY29udGFj dF92YWx1ZSB0YWc8L2gzPgoKPHByZSBjbGFzcz0ibGFuZ3VhZ2UtbWFya3VwIj48Y29kZT4m bHQ7dHhwOnplbV9jb250YWN0X3ZhbHVlIC8mZ3Q7PC9jb2RlPjwvcHJlPgoKPHA+UmV0dXJu IHRoZSB2YWx1ZSBvZiB0aGUgZ2l2ZW4gYXR0cmlidXRlLCBieSBuYW1lIG9yIGl0cyBsYWJl bC48L3A+Cgo8aDQ+QXR0cmlidXRlczwvaDQ+Cgo8dWw+Cgk8bGk+PGNvZGU+bGFiZWw9JnF1 b3Q7dGV4dCZxdW90OzwvY29kZT48YnIgLz4KVGhlIGxhYmVsIG9mIHRoZSBmaWVsZCBmb3Ig d2hpY2ggeW91IHdpc2ggdG8gcmV0cmlldmUgdGhlIHZhbHVlLjwvbGk+Cgk8bGk+PGNvZGU+ bmFtZT0mcXVvdDt0ZXh0JnF1b3Q7PC9jb2RlPjxiciAvPgpUaGUgbmFtZSBvZiB0aGUgZmll bGQgZm9yIHdoaWNoIHlvdSB3aXNoIHRvIHJldHJpZXZlIHRoZSB2YWx1ZS48L2xpPgo8L3Vs PgoKPGgzIGlkPSJ6Y19pZiI+emVtX2NvbnRhY3RfaWYgdGFnPC9oMz4KCjxwcmUgY2xhc3M9 Imxhbmd1YWdlLW1hcmt1cCI+PGNvZGU+Jmx0O3R4cDp6ZW1fY29udGFjdF9pZiAvJmd0Ozwv Y29kZT48L3ByZT4KCjxwPkNvbmRpdGlvbmFsIHRhZyBmb3IgY2hlY2tpbmcgdmFyaWFibGUg Y29uZGl0aW9ucywgZWl0aGVyIGJ5IG5hbWUgb3IgbGFiZWwuPC9wPgoKPGg0PkF0dHJpYnV0 ZXM8L2g0PgoKPHVsPgoJPGxpPjxjb2RlPmxhYmVsPSZxdW90O3RleHQmcXVvdDs8L2NvZGU+ PGJyIC8+ClRoZSBsYWJlbCBvZiB0aGUgZmllbGQgeW91IHdpc2ggdG8gY2hlY2suPC9saT4K CTxsaT48Y29kZT5uYW1lPSZxdW90O3RleHQmcXVvdDs8L2NvZGU+PGJyIC8+ClRoZSBuYW1l IG9mIHRoZSBmaWVsZCB5b3Ugd2lzaCB0byBjaGVjay48L2xpPgoJPGxpPjxjb2RlPnZhbHVl PSZxdW90O3RleHQmcXVvdDs8L2NvZGU+PGJyIC8+ClRoZSB2YWx1ZSBhZ2FpbnN0IHdoaWNo IHRvIHRlc3QgdGhlIGdpdmVuIGZpZWxkLiBMZWF2ZSBibGFuayB0byBqdXN0IHRlc3QgaWYg dGhlcmUgaXMgYW55IHZhbHVlIGFzc2lnbmVkIHRvIHRoZSBmaWVsZC48L2xpPgo8L3VsPgoK PGg0PkV4YW1wbGVzPC9oND4KCjxoNT5FeGFtcGxlIDE8L2g1PgoKPHA+VGFrZSBhY3Rpb24g aWYgdGhlIHZpc2l0b3IgaGFzIGVudGVyZWQgYSBwYXJ0aWN1bGFyIHZhbHVlLjwvcD4KCjxw cmUgY2xhc3M9Imxhbmd1YWdlLW1hcmt1cCI+PGNvZGU+Jmx0O3R4cDp6ZW1fY29udGFjdF9p ZiBuYW1lPSZxdW90O2RlbGl2ZXJ5JnF1b3Q7IHZhbHVlPSZxdW90O2NvdXJpZXImcXVvdDsm Z3Q7PC9jb2RlPjwvcHJlPgoKPHA+UGxlYXNlIG5vdGUsIHRoaXMgb3B0aW9uIGluY3VycyBh biBhZGRpdGlvbmFsIGNoYXJnZSwgPGNvZGU+Jmx0Oy90eHA6emVtX2NvbnRhY3RfaWYmZ3Q7 PC9jb2RlPi48L3A+Cgo8aDIgaWQ9ImFkdmFuY2VkIj5BZHZhbmNlZCBleGFtcGxlczwvaDI+ Cgo8aDMgaWQ9ImFkdmFuY2VkMSI+U2VwYXJhdGUgaW5wdXQgYW5kIGVycm9yIGZvcm1zPC9o Mz4KCjxwPlVzaW5nIDxjb2RlPnNob3dfaW5wdXQ8L2NvZGU+IGFuZCA8Y29kZT5zaG93X2Vy cm9yPC9jb2RlPiB0byBkaXNwbGF5IHRoZSBmb3JtIGFuZCBlcnJvciBtZXNzYWdlcyBvbiBk aWZmZXJlbnQgcGFydHMgb2YgYSBwYWdlLiBBIGZvcm0gaXMgdXNlZCB0byBtYWtlIHN1cmUg dGhlIGNvbnRlbnRzIG9mIGJvdGggZm9ybXMgYXJlIGlkZW50aWNhbCwgb3RoZXJ3aXNlIHRo ZXkgd291bGQgYmUgc2VlbiBhcyB0d28gaW5kZXBlbmRlbnQgZm9ybXMuIFRoZSBmaXJzdCBm b3JtIG9ubHkgc2hvd3MgZXJyb3JzIChubyBpbnB1dCksIHRoZSBzZWNvbmQgZm9ybSBvbmx5 IHNob3dzIHRoZSBpbnB1dCBmaWVsZHMgKG5vIGVycm9ycykuPC9wPgoKPHByZSBjbGFzcz0i bGFuZ3VhZ2UtbWFya3VwIj48Y29kZT4mbHQ7ZGl2IGlkPSZxdW90O2Vycm9yJnF1b3Q7Jmd0 OwogICAgJmx0O3R4cDp6ZW1fY29udGFjdCBmb3JtPSZxdW90O2NvbnRhY3RfZm9ybSZxdW90 OyBzaG93X2lucHV0PSZxdW90OzAmcXVvdDsgLyZndDsKJmx0Oy9kaXYmZ3Q7CiZsdDtkaXYg aWQ9JnF1b3Q7aW5wdXRmb3JtJnF1b3Q7Jmd0OwogICAgJmx0O3R4cDp6ZW1fY29udGFjdCBm b3JtPSZxdW90O2NvbnRhY3RfZm9ybSZxdW90OyBzaG93X2Vycm9yPSZxdW90OzAmcXVvdDsg LyZndDsKJmx0Oy9kaXYmZ3Q7PC9jb2RlPjwvcHJlPgoKPHA+QXBhcnQgZnJvbSB0aGUgPGNv ZGU+c2hvd19lcnJvcjwvY29kZT4gYW5kIDxjb2RlPnNob3dfaW5wdXQ8L2NvZGU+IGF0dHJp YnV0ZXMsIGFsbCBvdGhlciBhdHRyaWJ1dGVzIG11c3QgYmUgMTAwJSBpZGVudGljYWwgaW4g Ym90aCBmb3Jtcywgb3RoZXJ3aXNlIHRoZXkgd291bGQgYmUgc2VlbiBhcyB0d28gdW5yZWxh dGVkIGZvcm1zLjwvcD4KCjxoMyBpZD0iYWR2YW5jZWQyIj5Vc2VyIHNlbGVjdGFibGUgc3Vi amVjdCBmaWVsZDwvaDM+Cgo8cD5TcGVjaWZ5IHRoZSA8Y29kZT5zdWJqZWN0X2Zvcm08L2Nv ZGU+IGF0dHJpYnV0ZSBhbmQgY3JlYXRlIGEgZm9ybSB3aGljaCBpbmNsdWRlcyBhIDxjb2Rl PnplbV9jb250YWN0X3NlbGVjdDwvY29kZT4gdGFnOjwvcD4KCjxwcmUgY2xhc3M9Imxhbmd1 YWdlLW1hcmt1cCI+PGNvZGU+Jmx0O3R4cDp6ZW1fY29udGFjdCB0bz0mcXVvdDt5b3VAZXhh bXBsZS5jb20mcXVvdDsgc3ViamVjdF9mb3JtPSZxdW90O215X3N1YmplY3RfZm9ybSZxdW90 OyAvJmd0OwogICAgJmx0O3R4cDp6ZW1fY29udGFjdF90ZXh0IGxhYmVsPSZxdW90O05hbWUm cXVvdDsgLyZndDsmbHQ7YnIgLyZndDsKICAgICZsdDt0eHA6emVtX2NvbnRhY3RfZW1haWwg LyZndDsmbHQ7YnIgLyZndDsKICAgICZsdDt0eHA6emVtX2NvbnRhY3Rfc2VsZWN0IGxhYmVs PSZxdW90O0Nob29zZSBTdWJqZWN0JnF1b3Q7IG9wdGlvbnM9JnF1b3Q7LFF1ZXN0aW9uLEZl ZWRiYWNrJnF1b3Q7IC8mZ3Q7Jmx0O2JyIC8mZ3Q7CiAgICAmbHQ7dHhwOnplbV9jb250YWN0 X3RleHRhcmVhIGxhYmVsPSZxdW90O01lc3NhZ2UmcXVvdDsgLyZndDsmbHQ7YnIgLyZndDsK Jmx0Oy90eHA6emVtX2NvbnRhY3QmZ3Q7PC9jb2RlPjwvcHJlPgoKPHA+Q3JlYXRlIGEgVGV4 dHBhdHRlcm4gZm9ybSBjYWxsZWQgJiM4MjIwO215X3N1YmplY3RfZm9ybSYjODIyMTssIGNv bnRhaW5pbmc6PC9wPgoKPHByZSBjbGFzcz0ibGFuZ3VhZ2UtcGhwIj48Y29kZT4mbHQ7dHhw OnBocCZndDsKICAgIGdsb2JhbCAkemVtX2NvbnRhY3RfZm9ybTsKICAgIGVjaG8gJHplbV9j b250YWN0X2Zvcm1bJiMzOTtDaG9vc2UgU3ViamVjdCYjMzk7XTsKJmx0Oy90eHA6cGhwJmd0 OzwvY29kZT48L3ByZT4KCjxwPlRoZSA8Y29kZT5sYWJlbDwvY29kZT4gdXNlZCBpbiB0aGUg PGNvZGU+emVtX2NvbnRhY3Rfc2VsZWN0PC9jb2RlPiB0YWcgbXVzdCBiZSBpZGVudGljYWwg dG8gdGhlIGNvcnJlc3BvbmRpbmcgdmFyaWFibGUgaW4gdGhlIDxjb2RlPnN1YmplY3RfZm9y bTwvY29kZT4uIEhlcmUgd2UgdXNlZCA8Y29kZT5DaG9vc2Ugc3ViamVjdDwvY29kZT4uPC9w PgoKPHA+SWYgeW91JiM4MjE3O2QgcHJlZmVyIHRvIGFkZCBhIGNvbW1vbiBwcmVmaXggZm9y IGFsbCBzdWJqZWN0cywgdXNlIGEgPGNvZGU+c3ViamVjdF9mb3JtPC9jb2RlPiBjb250YWlu aW5nOjwvcD4KCjxwcmUgY2xhc3M9Imxhbmd1YWdlLXBocCI+PGNvZGU+Jmx0O3R4cDpwaHAm Z3Q7CiAgICBnbG9iYWwgJHplbV9jb250YWN0X2Zvcm07CiAgICBlY2hvICYjMzk7TXkgY29t bW9uIHByZWZpeCAtICYjMzk7IC4gJHplbV9jb250YWN0X2Zvcm1bJiMzOTtDaG9vc2UgU3Vi amVjdCYjMzk7XTsKJmx0Oy90eHA6cGhwJmd0OzwvY29kZT48L3ByZT4KCjxoMyBpZD0iYWR2 YW5jZWQzIj5Vc2VyIHNlbGVjdGFibGUgcmVjaXBpZW50LCB3aXRob3V0IHNob3dpbmcgZW1h aWwgYWRkcmVzczwvaDM+Cgo8cD5TcGVjaWZ5IHRoZSA8Y29kZT50b19mb3JtPC9jb2RlPiBh dHRyaWJ1dGUgYW5kIGNyZWF0ZSBhIGZvcm0gd2hpY2ggaW5jbHVkZXMgYSA8Y29kZT56ZW1f Y29udGFjdF9zZWxlY3Q8L2NvZGU+IHRhZzo8L3A+Cgo8cHJlIGNsYXNzPSJsYW5ndWFnZS1t YXJrdXAiPjxjb2RlPiZsdDt0eHA6emVtX2NvbnRhY3QgdG9fZm9ybT0mcXVvdDtteV96ZW1f Y29udGFjdF90b19mb3JtJnF1b3Q7Jmd0OwogICAgJmx0O3R4cDp6ZW1fY29udGFjdF90ZXh0 IGxhYmVsPSZxdW90O05hbWUmcXVvdDsgLyZndDsmbHQ7YnIgLyZndDsKICAgICZsdDt0eHA6 emVtX2NvbnRhY3RfZW1haWwgLyZndDsmbHQ7YnIgLyZndDsKICAgICZsdDt0eHA6emVtX2Nv bnRhY3Rfc2VsZWN0IGxhYmVsPSZxdW90O0RlcGFydG1lbnQmcXVvdDsgb3B0aW9ucz0mcXVv dDssU3VwcG9ydCxTYWxlcyZxdW90OyAvJmd0OyZsdDticiAvJmd0OwogICAgJmx0O3R4cDp6 ZW1fY29udGFjdF90ZXh0YXJlYSBsYWJlbD0mcXVvdDtNZXNzYWdlJnF1b3Q7IC8mZ3Q7Jmx0 O2JyIC8mZ3Q7CiZsdDsvdHhwOnplbV9jb250YWN0Jmd0OzwvY29kZT48L3ByZT4KCjxwPkNy ZWF0ZSBhIFRleHRwYXR0ZXJuIGZvcm0gY2FsbGVkICYjODIyMDtteV96ZW1fY29udGFjdF90 b19mb3JtJiM4MjIxOywgY29udGFpbmluZzo8L3A+Cgo8cHJlIGNsYXNzPSJsYW5ndWFnZS1w aHAiPjxjb2RlPiZsdDt0eHA6cGhwJmd0OwogICAgZ2xvYmFsICR6ZW1fY29udGFjdF9mb3Jt OwogICAgc3dpdGNoKCR6ZW1fY29udGFjdF9mb3JtWyYjMzk7RGVwYXJ0bWVudCYjMzk7XSkK ICAgIHsKICAgICAgICBjYXNlICYjMzk7U3VwcG9ydCYjMzk7OgogICAgICAgICAgICBlY2hv ICYjMzk7Y3Jld0BleGFtcGxlLmNvbSYjMzk7OwogICAgICAgICAgICBicmVhazsKICAgICAg ICBjYXNlICYjMzk7U2FsZXMmIzM5OzoKICAgICAgICAgICAgZWNobyAmIzM5O3Nob3dtZXRo ZW1vbmV5QGV4YW1wbGUuY29tJiMzOTs7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGRl ZmF1bHQ6CiAgICAgICAgICAgIGVjaG8gJiMzOTtzb21lb25lQGV4YW1wbGUuY29tJiMzOTs7 CiAgICB9CiZsdDsvdHhwOnBocCZndDs8L2NvZGU+PC9wcmU+Cgo8cD5UaGUgPGNvZGU+bGFi ZWw8L2NvZGU+IHVzZWQgaW4gdGhlIDxjb2RlPnplbV9jb250YWN0X3NlbGVjdDwvY29kZT4g dGFnIG11c3QgYmUgaWRlbnRpY2FsIHRvIHRoZSBjb3JyZXNwb25zaW5nIHZhcmlhYmxlIGlu IHRoZSA8Y29kZT50b19mb3JtPC9jb2RlPi4gSGVyZSB3ZSB1c2VkIDxjb2RlPkRlcGFydG1l bnQ8L2NvZGU+LjwvcD4KCjxwPkEgJiM4MjE2O2RlZmF1bHQmIzgyMTc7IGVtYWlsIGFkZHJl c3MgaW4gdGhlIDxjb2RlPnRvX2Zvcm08L2NvZGU+IGlzIHNwZWNpZmllZCB0byBlbnN1cmUg dGhhdCBhIHZhbGlkIGVtYWlsIGFkZHJlc3MgaXMgdXNlZCBpbiBjYXNlcyB3aGVyZSB5b3Ug YWRkIG9yIGNoYW5nZSBhIHNlbGVjdC9yYWRpbyBvcHRpb24gYW5kIGZvcmdldCB0byB1cGRh dGUgdGhlIDxjb2RlPnRvX2Zvcm08L2NvZGU+LjwvcD4KCjxwIGNsYXNzPSJhbGVydC1ibG9j ayB3YXJuaW5nIj48c3Ryb25nPldhcm5pbmc6PC9zdHJvbmc+IE5ldmVyIHVzZSB0YWdzIGxp a2UgPGNvZGU+emVtX2NvbnRhY3RfdGV4dDwvY29kZT4sIDxjb2RlPnplbV9jb250YWN0X2Vt YWlsPC9jb2RlPiBvciA8Y29kZT56ZW1fY29udGFjdF90ZXh0YXJlYTwvY29kZT4gZm9yIHNl dHRpbmcgdGhlIHJlY2lwaWVudCBhZGRyZXNzLCBvdGhlcndpc2UgeW91ciBmb3JtIGNhbiBi ZSBhYnVzZWQgdG8gc2VuZCBzcGFtIHRvIGFueSBlbWFpbCBhZGRyZXNzITwvcD4KCjxoMiBp ZD0ic3R5bGluZyI+U3R5bGluZzwvaDI+Cgo8cD5UaGUgZm9ybSBpdHNlbGYgaGFzIGEgPGNv ZGU+Y2xhc3M8L2NvZGU+IG9mIDxjb2RlPnplbUNvbnRhY3RGb3JtPC9jb2RlPiBzZXQgb24g dGhlIDxjb2RlPmZvcm08L2NvZGU+IDxzcGFuIGNsYXNzPSJjYXBzIj5IVE1MPC9zcGFuPiB0 YWcuPC9wPgoKPHA+VGhlIGxpc3Qgb2YgZXJyb3IgbWVzc2FnZXMgKGlmIGFueSkgaGFzIGEg PGNvZGU+Y2xhc3M8L2NvZGU+IG9mIDxjb2RlPnplbUVycm9yPC9jb2RlPiBzZXQgb24gdGhl IDxjb2RlPnVsPC9jb2RlPiA8c3BhbiBjbGFzcz0iY2FwcyI+SFRNTDwvc3Bhbj4gdGFnIHRo YXQgZW5jbG9zZXMgdGhlIGxpc3Qgb2YgZXJyb3JzLiBUaGlzIGNsYXNzIG5hbWUgbWF5IGJl IG92ZXJyaWRkZW4gdXNpbmcgdGhlIDxjb2RlPmNsYXNzZXM8L2NvZGU+IGF0dHJpYnV0ZSBv ZiB0aGUgPGNvZGU+emVtX2NvbnRhY3Q8L2NvZGU+IHRhZy48L3A+Cgo8cD5BbGwgZm9ybSBl bGVtZW50cyBhbmQgY29ycmVzcG9uZGluZyBsYWJlbHMgaGF2ZSB0aGUgZm9sbG93aW5nIGNs YXNzZXMgKG9yIGlkcyBzZXQgYnkgZGVmYXVsdCk6PC9wPgoKPG9sPgoJPGxpPk9uZSBvZiA8 Y29kZT56ZW1UZXh0PC9jb2RlPiwgPGNvZGU+emVtRW1haWw8L2NvZGU+LCA8Y29kZT56ZW1U ZXh0YXJlYTwvY29kZT4sIDxjb2RlPnplbVNlbGVjdDwvY29kZT4sIDxjb2RlPnplbU9wdGlv bjwvY29kZT4sIDxjb2RlPnplbVJhZGlvPC9jb2RlPiwgPGNvZGU+emVtQ2hlY2tib3g8L2Nv ZGU+IG9yIDxjb2RlPnplbVN1Ym1pdDwvY29kZT4uIEJ5IGRlZmF1bHQsIGl0IHNob3VsZCBi ZSBvYnZpb3VzIHdoaWNoIDxjb2RlPmNsYXNzPC9jb2RlPiBpcyB1c2VkIGZvciB3aGljaCBm b3JtIGVsZW1lbnQgKGFuZCBjb3JyZXNwb25kaW5nIGxhYmVsKS4gWW91IGNhbiBvdmVycmlk ZSB0aGVzZSBuYW1lcyBieSB1c2luZyB5b3VyIG93biA8Y29kZT5jbGFzczwvY29kZT4gYXR0 cmlidXRlLjwvbGk+Cgk8bGk+PGNvZGU+emVtUmVxdWlyZWQ8L2NvZGU+IGFuZC9vciA8Y29k ZT5lcnJvckVsZW1lbnQ8L2NvZGU+LCBkZXBlbmRpbmcgb24gd2hldGhlciB0aGUgZm9ybSBl bGVtZW50IGlzIHJlcXVpcmVkLCBhbiBlcnJvciB3YXMgZm91bmQgaW4gd2hhdGV2ZXIgdGhl IHZpc2l0b3IgZW50ZXJlZCwgb3IgYm90aC4gVGhlc2UgY2FuIGJlIG92ZXJyaWRlbiB1c2lu ZyB0aGUgPGNvZGU+Y2xhc3NlczwvY29kZT4gYXR0cmlidXRlIG9uIHRoZSA8Y29kZT56ZW1f Y29udGFjdDwvY29kZT4gdGFnLjwvbGk+Cgk8bGk+QW4gaW5kaXZpZHVhbCA8Y29kZT5pZDwv Y29kZT4gb3IgPGNvZGU+Y2xhc3M8L2NvZGU+IHNldCB0byB0aGUgdmFsdWUgb2YgdGhlIDxj b2RlPm5hbWU8L2NvZGU+IGF0dHJpYnV0ZSBvZiB0aGUgY29ycmVzcG9uZGluZyB0YWcuIFdo ZW4gc3R5bGluZyBmb3JtcyBiYXNlZCBvbiB0aGlzIDxjb2RlPmNsYXNzPC9jb2RlPiwgeW91 IHNob3VsZCBleHBsaWNpdGx5IHNldCB0aGUgPGNvZGU+bmFtZTwvY29kZT4gYXR0cmlidXRl IGJlY2F1c2UgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgbmFtZXMgbWF5IGNoYW5nZSBpbiBu ZXdlciB6ZW1fY29udGFjdF9yZWJvcm4gdmVyc2lvbnMuPC9saT4KPC9vbD4KCjxoMiBpZD0i YXBpIj5aZW0gQ29udGFjdCBSZWJvcm4mIzgyMTc7cyA8c3BhbiBjbGFzcz0iY2FwcyI+QVBJ PC9zcGFuPjwvaDI+Cgo8cD5UaGUgcGx1Z2luIDxzcGFuIGNsYXNzPSJjYXBzIj5BUEk8L3Nw YW4+IG9mIHplbV9jb250YWN0X3JlYm9ybiwgb3JpZ2luYWxseSBkZXZlbG9wZWQgYnkgVHJh bnF1aWxsbywgYWxsb3dzIG90aGVyIHBsdWdpbnMgdG8gaW50ZXJhY3Qgd2l0aCBjb250YWN0 IGZvcm1zLiBUaGlzIHBlcm1pdHMgZXh0cmEgZnVuY3Rpb25hbGl0eSBzdWNoIGFzIDxhIGhy ZWY9Imh0dHA6Ly90ZXh0cGF0dGVybi5uZXQvd2lraS9pbmRleC5waHA/dGl0bGU9Q29tYmF0 X0NvbW1lbnRfU3BhbSI+Q29tYmF0dGluZyBDb21tZW50IFNwYW08L2E+LCA8c3BhbiBjbGFz cz0iY2FwcyI+SFRNTDwvc3Bhbj4gZW1haWwsIG5ld3NsZXR0ZXIgZGVsaXZlcnkgYW5kIHNv IGZvcnRoIHRvIGJlIGJvbHRlZCBvbnRvIHRoZSBiYXNlIHBsdWdpbi48L3A+Cgo8cD5Gb3Vy IGNhbGxiYWNrIGV2ZW50cyBleGlzdCBpbiB6ZW1fY29udGFjdF9yZWJvcm46PC9wPgoKPHVs PgoJPGxpPjxjb2RlPnplbWNvbnRhY3Quc3VibWl0PC9jb2RlPiBpcyBjYWxsZWQgYWZ0ZXIg dGhlIGZvcm0gaXMgc3VibWl0dGVkIGFuZCB0aGUgdmFsdWVzIGFyZSBjaGVja2VkIGlmIGVt cHR5IG9yIHZhbGlkIGVtYWlsIGFkZHJlc3NlcywgYnV0IGJlZm9yZSB0aGUgbWFpbCBpcyBz ZW50LjwvbGk+Cgk8bGk+PGNvZGU+emVtY29udGFjdC5mb3JtPC9jb2RlPiBsZXRzIHlvdSBp bmplY3QgY29udGVudCAoZmllbGRzKSBpbiB0aGUgY29udGFjdCBmb3JtIGFzIGRpc3BsYXll ZCB0byB0aGUgdmlzaXRvci48L2xpPgoJPGxpPjxjb2RlPnplbWNvbnRhY3QucmVuZGVyPC9j b2RlPiBsZXRzIHlvdSBpbmplY3Qgb3IgYWx0ZXIgbWFya3VwIG9mIHRoZSBlbnRpcmUgPGNv ZGU+Jmx0O2Zvcm0mZ3Q7PC9jb2RlPi4gVXNlZnVsIGZvciBlZGl0aW5nIHRoaW5ncyBsaWtl IDxjb2RlPmVuY3R5cGU8L2NvZGU+IChlLmcuIGZvciBmaWxlIGF0dGFjaG1lbnQgbW9kdWxl cyB0aGF0IGxpbmsgaW50byB0aGlzIHBsdWdpbikuPC9saT4KCTxsaT48Y29kZT56ZW1jb250 YWN0LmRlbGl2ZXI8L2NvZGU+IGlzIGNhbGxlZCBpbW1lZGlhdGVseSBwcmlvciB0byBkZWxp dmVyeSBhbmQgYWR2ZXJ0aXNlcyB0aGUgaW50ZW5kZWQgcGF5bG9hZCBzbyB5b3UgbWF5IG1h bmlwdWxhdGUgaXQuIEZvciBleGFtcGxlLCB5b3UgY291bGQgZG8gc29tZXRoaW5nIGFzIHNp bXBsZSBhcyBhZGRpbmcgQ0M6IG9yIDxzcGFuIGNsYXNzPSJjYXBzIj5CQ0M8L3NwYW4+OiBm aWVsZHMuIE9yIGNoYW5nZSB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPk1JTUU8L3NwYW4+IHR5 cGUgaGVhZGVyIHRvIDxjb2RlPnRleHQvaHRtbDwvY29kZT4gYW5kIGFkZCBzb21lIDxzcGFu IGNsYXNzPSJjYXBzIj5IVE1MPC9zcGFuPiBjb250ZW50IGJhc2VkIG9uIHRoZSBnaXZlbiBi b2R5IGRhdGEsIHRoZW4gbGV0IHplbV9jb250YWN0X3JlYm9ybiBoYW5kbGUgdGhlIG1haWxp bmcuIE9yIHlvdSBjb3VsZCBpbnRlcmNlcHQgdGhlIGVudGlyZSBtYWlsIHByb2Nlc3MsIGhh bmRsZSBtYWlsaW5nIHlvdXJzZWxmIHdpdGggYSB0aGlyZCBwYXJ0eSBzeXN0ZW0sIGFuZCB0 ZWxsIHplbV9jb250YWN0X3JlYm9ybiB0byBza2lwIGl0cyBpbnRlcm5hbCBtYWlsaW5nIHBy b2Nlc3MuPC9saT4KPC91bD4KCjxwPkZvciByZWZlcmVuY2UgaGVyZSBhcmUgdGhlIGNvbW1h bmRzIHRoYXQgd2lsbCBiZSBpbnRlcmVzdGluZyB0byBwbHVnaW4gZGV2ZWxvcGVyczo8L3A+ Cgo8cHJlIGNsYXNzPSJsYW5ndWFnZS1waHAiPjxjb2RlPi8vIFRoaXMgd2lsbCBjYWxsIHlv dXIgZnVuY3Rpb24gYmVmb3JlIHRoZSBmb3JtIGlzIHN1Ym1pdHRlZCBzbyB5b3UgY2FuIGFu YWx5c2UgdGhlIHN1Ym1pdHRlZCBkYXRhCnJlZ2lzdGVyX2NhbGxiYWNrKCYjMzk7YWJjX215 ZnVuY3Rpb24mIzM5OywgJiMzOTt6ZW1jb250YWN0LnN1Ym1pdCYjMzk7KTsKCi8vIFRoaXMg d2lsbCBjYWxsIHlvdXIgZnVuY3Rpb24gYW5kIGFkZCB0aGUgb3V0cHV0ICh1c2UgQHJldHVy biAkbXlzdHVmZjtAKSB0byB0aGUgY29udGFjdC1mb3JtLgpyZWdpc3Rlcl9jYWxsYmFjaygm IzM5O2FiY19teW90aGVyZnVuY3Rpb24yJiMzOTssICYjMzk7emVtY29udGFjdC5mb3JtJiMz OTspOwoKLy8gVG8gZ2V0IGhvbGQgb2YgdGhlIGZvcm0tdmFyaWFibGVzIHlvdSBjYW4gdXNl IGdsb2JhbCB6ZW1fY29udGFjdF9mb3JtOwovLyBXaXRoIHRoZSBmb2xsb3dpbmcgdHdvIGxp bmVzIHlvdSBjYW4gdGVsbCB6ZW1fY29udGFjdCBpZiB5b3VyIHBsdWdpbiBmb3VuZCBzcGFt LgokZXZhbHVhdG9yID0mYW1wOyBnZXRfemVtY29udGFjdF9ldmFsdWF0b3IoKTsKCi8vIFRo ZSBwYXNzZWQgdmFsdWUgbXVzdCBiZSBub24temVybyB0byBtYXJrIHRoZSBjb250ZW50IGFz IHNwYW0uCi8vIFZhbHVlIG11c3QgYmUgYSBudW1iZXIgYmV0d2VlbiAwIGFuZCAxLgokZXZh bHVhdG9yIC0mZ3Q7IGFkZF96ZW1jb250YWN0X3N0YXR1cygxKTs8L2NvZGU+PC9wcmU+Cgo8 cD5NdWx0aXBsZSBwbHVnaW5zIGNhbiBiZSBhY3RpdmUgYXQgdGhlIHNhbWUgdGltZSBhbmQg ZWFjaCBvZiB0aGVtIGNhbiBtYXJrIHRoZSBzdWJtaXR0ZWQgY29udGVudCBhcyBzcGFtIGFu ZCBwcmV2ZW50IHRoZSBmb3JtIGZyb20gYmVpbmcgc3VibWl0dGVkLjwvcD4KCjxoND5FeGFt cGxlczwvaDQ+Cgo8cHJlIGNsYXNzPSJsYW5ndWFnZS1waHAiPjxjb2RlPnJlZ2lzdGVyX2Nh bGxiYWNrKCYjMzk7cGFwX3plbWNvbnRhY3RfZm9ybSYjMzk7LCYjMzk7emVtY29udGFjdC5m b3JtJiMzOTspOwpyZWdpc3Rlcl9jYWxsYmFjaygmIzM5O3BhcF96ZW1jb250YWN0X3N1Ym1p dCYjMzk7LCYjMzk7emVtY29udGFjdC5zdWJtaXQmIzM5Oyk7CgpmdW5jdGlvbiBwYXBfemVt Y29udGFjdF9mb3JtKCkKewogICAgJGZpZWxkID0gJiMzOTsmbHQ7ZGl2IHN0eWxlPSZxdW90 O2Rpc3BsYXk6bm9uZSZxdW90OyZndDsmIzM5Oy4KICAgICAgICBmaW5wdXQoJiMzOTt0ZXh0 JiMzOTssJiMzOTtwaG9uZSYjMzk7LHBzKCYjMzk7cGhvbmUmIzM5OyksJiMzOTsmIzM5Oywm IzM5OyYjMzk7LCYjMzk7JiMzOTssJiMzOTsmIzM5OywmIzM5OyYjMzk7LCYjMzk7cGhvbmUm IzM5OykuJiMzOTsmbHQ7YnIgLyZndDsmIzM5Oy4KICAgICAgICBmaW5wdXQoJiMzOTt0ZXh0 JiMzOTssJiMzOTttYWlsJiMzOTsscHMoJiMzOTttYWlsJiMzOTspLCYjMzk7JiMzOTssJiMz OTsmIzM5OywmIzM5OyYjMzk7LCYjMzk7JiMzOTssJiMzOTsmIzM5OywmIzM5O21haWwmIzM5 OykuJiMzOTsmbHQ7L2RpdiZndDsmIzM5OzsKICAgIHJldHVybiAkZmllbGQ7Jmx0Oy9jb2Rl Jmd0Owp9CgpmdW5jdGlvbiBwYXBfemVtY29udGFjdF9zdWJtaXQoKQp7CiAgICAkY2hlY2tp bmdfbWFpbF9maWVsZCA9IHRyaW0ocHMoJiMzOTttYWlsJiMzOTspKTsKICAgICRjaGVja2lu Z19waG9uZV9maWVsZCA9IHRyaW0ocHMoJiMzOTtwaG9uZSYjMzk7KSk7CiAgICAkZXZhbHVh dGlvbiA9JmFtcDsgZ2V0X3plbWNvbnRhY3RfZXZhbHVhdG9yKCk7CgogICAgLy8gSWYgdGhl IGhpZGRlbiBmaWVsZHMgYXJlIGZpbGxlZCBvdXQsIHRoZSBjb250YWN0IGZvcm0gd29uJiMz OTt0IGJlIHN1Ym1pdHRlZCEKICAgIGlmICgkY2hlY2tpbmdfbWFpbF9maWVsZCAhPSAmIzM5 OyYjMzk7IG9yICRjaGVja2luZ19waG9uZV9maWVsZCAhPSAmIzM5OyYjMzk7KSB7CiAgICAg ICAgJGV2YWx1YXRpb24gLSZndDsgYWRkX3plbWNvbnRhY3Rfc3RhdHVzKDEpOwogICAgfQoK ICAgIHJldHVybjsKfTwvY29kZT48L3ByZT4KCjxwPkZvciB0aGUgZGVsaXZlcnkgY2FsbGJh Y2ssIHlvdSBzaWduYWwgYmFjayB0byB0aGUgcGx1Z2luIHlvdXIgaW50ZW50aW9ucyBzbyB0 aGF0IFplbSBDb250YWN0IFJlYm9ybiBrbm93cyB3aGF0IHRvIGRvIGFmdGVyIHlvdXIgZGVs aXZlcnkgcGx1Z2luIGhhcyBleGVjdXRlZC4gUmV0dXJuIHRoZSBmb2xsb3dpbmcgc3RyaW5n czo8L3A+Cgo8dWw+Cgk8bGk+PGNvZGU+emVtY29udGFjdC5zZW5kPC9jb2RlPiAob3Igbm8g cmV0dXJuIHZhbHVlKSB0byBhbGxvdyBaZW0gQ29udGFjdCBSZWJvcm4gdG8gY29udGludWUg bWFpbGluZyB0aGUgY29udGVudC48L2xpPgoJPGxpPjxjb2RlPnplbWNvbnRhY3Quc2tpcDwv Y29kZT4gdG8gc2tpcCB6ZW1fY29udGFjdCYjODIxNztzIG1haWxpbmcgKGkuZS4sIHRoZSB0 aGlyZCBwYXJ0eSBoYW5kbGVzIHRoZSBtYWlsIHByb2Nlc3MpIGFuZCByZXR1cm4gJiM4MjE2 O3N1Y2Nlc3MmIzgyMTc7IHRvIHRoZSB2aXNpdG9yLjwvbGk+Cgk8bGk+PGNvZGU+emVtY29u dGFjdC5mYWlsPC9jb2RlPiB0byBza2lwIHplbV9jb250YWN0JiM4MjE3O3MgbWFpbGluZyBh bmQgcmV0dXJuICYjODIxNjtmYWlsJiM4MjE3OyB0byB0aGUgdmlzaXRvci48L2xpPgo8L3Vs PgoKPHA+T3Igc2ltcGx5IDxjb2RlPmV4aXQ8L2NvZGU+IHlvdXIgcGx1Z2luIHRvIGhhbHQg dGhlIGVudGlyZSBvcGVyYXRpb24gc28gbm8gWmVtIENvbnRhY3QgUmVib3JuIGZlZWRiYWNr IGlzIGdpdmVuLjwvcD4KCjxoMiBpZD0iZmFxIj5GcmVxdWVudGx5IGFza2VkIHF1ZXN0aW9u czwvaDI+Cgo8ZGw+Cgk8ZHQ+SG93IGRvIEkgcmVtb3ZlIHRoZSBsZWdlbmQgYW5kIGZpZWxk c2V0IHN1cnJvdW5kaW5nIHRoZSBjb250YWN0IGZvcm0/PC9kdD4KCTxkZD5TZXQgdGhlIDxj b2RlPmxhYmVsPC9jb2RlPiBhdHRyaWJ1dGUgdG8gYW4gZW1wdHkgdmFsdWUgKDxjb2RlPmxh YmVsPSZxdW90OyZxdW90OzwvY29kZT4pIGluIHRoZSA8Y29kZT56ZW1fY29udGFjdDwvY29k ZT4gdGFnLjwvZGQ+Cgk8ZHQ+Tm8gZW1haWwgaXMgc2VudC4gSG93IGRvIEkgZGlhZ25vc2Ug YW5kIGZpeCB0aGUgcHJvYmxlbT88L2R0PgoJPGRkPkZpcnN0IHRyeSBhIHNpbXBsZSBjb250 YWN0IGZvcm0sIHVzaW5nIG9ubHkgdGhlIDxjb2RlPnplbV9jb250YWN0PC9jb2RlPiB0YWcg d2l0aCB0aGUgPGNvZGU+dG88L2NvZGU+IGF0dHJpYnV0ZSBzZXQgdG8gYSB2YWxpZCBlbWFp bCBhZGRyZXNzLiBJZiB0aGF0IGRvZXNuJiM4MjE3O3Qgc2VuZCBlbWFpbCwgZmlsbCBvdXQg dGhlICYjODIxNjs8c3BhbiBjbGFzcz0iY2FwcyI+U01UUDwvc3Bhbj4gZW52ZWxvcGUgc2Vu ZGVyIGFkZHJlc3MmIzgyMTc7IGZpZWxkIGluIFRleHRwYXR0ZXJuJiM4MjE3O3MgQWRtaW4g 4oaSIFByZWZlcmVuY2VzIHBhbmVsLiBJZiB0aGF0IGRvZXNuJiM4MjE3O3QgaGVscCBlaXRo ZXIsIHRha2UgYSBsb29rIGF0IHlvdXIgbWFpbCBzZXJ2ZXIgbG9nIGZpbGVzIHRvIHNlZSB3 aGF0IHRoZSBwcm9ibGVtIGlzLjwvZGQ+Cgk8ZHQ+V2hpY2ggdGFnIGRvIEkgdXNlIHRvIGNy ZWF0ZSB0aGUgc3VibWl0IGJ1dHRvbj88L2R0PgoJPGRkPkp1c3QgdXNlIG5vcm1hbCA8c3Bh biBjbGFzcz0iY2FwcyI+SFRNTDwvc3Bhbj4gY29kZSB0byBjcmVhdGUgYSBzdWJtaXQgYnV0 dG9uLiBGb3IgaGlzdG9yaWNhbCByZWFzb25zIHRoaXMgcGx1Z2luIHN0aWxsIHByb3ZpZGVz IHRoZSA8Y29kZT56ZW1fY29udGFjdF9zdWJtaXQ8L2NvZGU+IHRhZywgYnV0IGl0IHByb3Zp ZGVzIGxpdHRsZSBleHRyYSBmdW5jdGlvbmFsaXR5LjwvZGQ+Cgk8ZHQ+SG93IGNhbiBJIGdl dCBhIHVuaXF1ZSAob3JkZXIpIG51bWJlciBpbiB0aGUgc3ViamVjdCBvZiBlYWNoIGVtYWls PzwvZHQ+Cgk8ZGQ+VHJ5IHVzaW5nIHRoZSA8YSBocmVmPSJodHRwOi8vdmFubWVsaWNrLmNv bS90eHAiPnJ2bV9jb3VudGVyPC9hPiB0YWcgaW4gdGhlIDxjb2RlPnN1YmplY3Q8L2NvZGU+ IGF0dHJpYnV0ZSBvZiB0aGUgPGNvZGU+emVtX2NvbnRhY3Q8L2NvZGU+IHRhZy48L2RkPgoJ PGR0Pkkgd2FudCB0byB1c2UgdGhlIGNvbnRhY3QgZm9ybSBpbiBhbiBhcnRpY2xlIGxpc3Qg KG9uZSBmb3JtIGZvciBlYWNoIGFydGljbGUpLCBidXQgaG93IGRvIEkgbWFrZSBlYWNoIGZv cm0gdW5pcXVlPzwvZHQ+Cgk8ZGQ+WW91IGNhbiBtYWtlIGVhY2ggZm9ybSB1bmlxdWUgYnkg bWFraW5nIG9uZSBvZiBpdHMgYXR0cmlidXRlIHZhbHVlcyB1bmlxdWUuIFNlZSBwcmV2aW91 cyBxdWVzdGlvbiBmb3IgYW4gZXhhbXBsZSBvZiBob3cgdG8gZG8gdGhpcyB3aXRoIHRoZSA8 Y29kZT5zdWJqZWN0PC9jb2RlPiBhdHRyaWJ1dGUuPC9kZD4KCTxkdD5TZW5kIGFydGljbGU6 IGNhbiBJIGxldCBwZW9wbGUgc3BlY2lmeSBtdWx0aXBsZSByZWNpcGllbnRzPzwvZHQ+Cgk8 ZGQ+Tm8uIFRoZSAmIzgyMTY7c2VuZCBhcnRpY2xlJiM4MjE3OyBmdW5jdGlvbmFsaXR5IGlz IHNwYW1teSBlbm91Z2ggYXMgaXQgaXMgcmlnaHQgbm93LjwvZGQ+Cgk8ZHQ+U2VuZCBhcnRp Y2xlOiBjYW4gSSBzaG93IHRoZSBjb250YWN0IGZvcm0gd2l0aG91dCBoYXZpbmcgdG8gY2xp Y2sgYSBsaW5rIGZpcnN0PzwvZHQ+Cgk8ZGQ+U3VyZSwgcHV0IHRoaXMganVzdCBhYm92ZSB0 aGUgPGNvZGU+emVtX2NvbnRhY3Q8L2NvZGU+IHRhZzogPGNvZGU+Jmx0O3R4cDpwaHAmZ3Q7 JF9HRVRbJiMzOTt6ZW1fY29udGFjdF9zZW5kX2FydGljbGUmIzM5O109JiMzOTt5ZXMmIzM5 OzsmbHQ7L3R4cDpwaHAmZ3Q7PC9jb2RlPjwvZGQ+Cgk8ZHQ+SG93IGNhbiBJIHVzZSB0aGlz IGZvcm0gdG8gdXBsb2FkIGZpbGVzPzwvZHQ+Cgk8ZGQ+WW91IGNhbiYjODIxNzt0LCBidXQg aGF2ZSBhIGxvb2sgYXQgdGhlIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9CbG9rZS96 Y3JfZmlsZV9hdHRhY2gvcmVsZWFzZXMvIj56Y3JfZmlsZV9hdHRhY2g8L2E+IG1vZHVsZSwg b3IgPGEgaHJlZj0iaHR0cHM6Ly9iaXRidWNrZXQub3JnL01hbmZyZS90eHAtcGx1Z2lucy9k b3dubG9hZHMvIj5tZW1fZm9ybTwvYT4gcGx1Z2lucy48L2RkPgoJPGR0PkNhbiBJIHVzZSB0 aGlzIHBsdWdpbiB0byBzZW5kIDxzcGFuIGNsYXNzPSJjYXBzIj5IVE1MPC9zcGFuPiBlbWFp bD88L2R0PgoJPGRkPk5vdCB3aXRob3V0IGEgcGx1Z2luIGxpa2UgPGEgaHJlZj0iaHR0cHM6 Ly9iaXRidWNrZXQub3JnL01hbmZyZS90eHAtcGx1Z2lucy9kb3dubG9hZHMiPm1lbV9mb3Jt PC9hPiBvciB1c2luZyB0aGUgZGVsaXZlcnkgY2FsbGJhY2suPC9kZD4KCTxkdD5DYW4gSSB1 c2UgdGhpcyBwbHVnaW4gdG8gc2VuZCBuZXdzbGV0dGVycz88L2R0PgoJPGRkPk5vdCB3aXRo b3V0IGEgcGx1Z2luLCBzdWNoIGFzIDxhIGhyZWY9Imh0dHBzOi8vYml0YnVja2V0Lm9yZy9N YW5mcmUvdHhwLXBsdWdpbnMvZG93bmxvYWRzLyI+bWVtX3Bvc3RtYXN0ZXI8L2E+LjwvZGQ+ Cgk8ZHQ+SSBoYXZlIGEgcXVlc3Rpb24gdGhhdCYjODIxNztzIG5vdCBsaXN0ZWQgaGVyZTwv ZHQ+Cgk8ZGQ+Rmlyc3QgcmVhZCB0aGUgcGx1Z2luIGRvY3VtZW50YXRpb24gKHRoZSBwYWdl IHlvdSYjODIxNztyZSBvbiByaWdodCBub3cpIG9uY2UgbW9yZS4gSWYgdGhhdCBkb2VzbiYj ODIxNzt0IGFuc3dlciB5b3VyIHF1ZXN0aW9uLCB2aXNpdCB0aGUgPGEgaHJlZj0iaHR0cDov L2ZvcnVtLnRleHRwYXR0ZXJuLmNvbSI+VGV4dHBhdHRlcm4gZm9ydW08L2E+LjwvZGQ+Cjwv ZGw+Cgo8aDIgaWQ9Imhpc3RvcnkiPkhpc3Rvcnk8L2gyPgoKPHA+UGxlYXNlIHNlZSB0aGUg PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL0Jsb2tlL3plbV9jb250YWN0X3JlYm9ybi9i bG9iL21hc3Rlci9DSEFOR0VMT0cudGV4dGlsZSI+Y2hhbmdlbG9nIG9uIEdpdEh1YjwvYT4u PC9wPgoKPGgyIGlkPSJjcmVkaXRzIj5BdXRob3JzL2NyZWRpdHM8L2gyPgoKPHVsPgoJPGxp PjxzdHJvbmc+emVtPC9zdHJvbmc+IHdyb3RlIHRoZSB6ZW1fY29udGFjdCAwLjYgcGx1Z2lu IG9uIHdoaWNoIHRoaXMgcGx1Z2luIHdhcyBpbml0aWFsbHkgYmFzZWQuPC9saT4KCTxsaT48 c3Ryb25nPk1hcnk8L3N0cm9uZz4gY29tcGxldGVseSByZXZpc2VkIHRoZSBwbHVnaW4gY29k ZS48L2xpPgoJPGxpPjxzdHJvbmc+U3R1YXJ0PC9zdHJvbmc+IHR1cm5lZCBpdCBpbnRvIGEg cGx1Z2luLCBhZGRlZCBhIHJldmlzZWQgaGVscCB0ZXh0IGFuZCBhZGRpdGlvbmFsIGNvZGUu IE1haW50YWluZWQgYWxsIHBsdWdpbiB2ZXJzaW9ucyB1bnRpbCA0LjAuMy4xNy4iO3M6Mzoi bWQ1IjtzOjMyOiJjY2Q5NTE1N2Y2YmM0NTE4OTg1ZDljNTI5OTI3YWM5NSI7czo4OiJ0ZXh0 cGFjayI7czo4ODIyOiIjQHB1YmxpYwp6ZW1fY29udGFjdF9jaGVja2JveCA9PiBDaGVja2Jv eAp6ZW1fY29udGFjdF9jb250YWN0ID0+IENvbnRhY3QKemVtX2NvbnRhY3RfZW1haWwgPT4g RW1haWwKemVtX2NvbnRhY3RfZW1haWxfc3ViamVjdCA9PiB7c2l0ZX0gPiBFbnF1aXJ5Cnpl bV9jb250YWN0X2VtYWlsX3RoYW5rcyA9PiBUaGFuayB5b3UsIHlvdXIgbWVzc2FnZSBoYXMg YmVlbiBzZW50Lgp6ZW1fY29udGFjdF9maWVsZF9taXNzaW5nID0+IFJlcXVpcmVkIGZpZWxk LCAmIzgyMjA7PHN0cm9uZz57ZmllbGR9PC9zdHJvbmc+JiM4MjIxOyBpcyBtaXNzaW5nLgp6 ZW1fY29udGFjdF9mb3JtYXRfd2FybmluZyA9PiBWYWx1ZSB7dmFsdWV9IGluICYjODIyMDs8 c3Ryb25nPntmaWVsZH08L3N0cm9uZz4mIzgyMjE7IGlzIG5vdCBvZiB0aGUgZXhwZWN0ZWQg Zm9ybWF0Lgp6ZW1fY29udGFjdF9mb3JtX2V4cGlyZWQgPT4gVGhlIGZvcm0gaGFzIGV4cGly ZWQsIHBsZWFzZSB0cnkgYWdhaW4uCnplbV9jb250YWN0X2Zvcm1fdXNlZCA9PiBUaGUgZm9y bSB3YXMgYWxyZWFkeSBzdWJtaXR0ZWQsIHBsZWFzZSBmaWxsIG91dCBhIG5ldyBmb3JtLgp6 ZW1fY29udGFjdF9nZW5lcmFsX2lucXVpcnkgPT4gR2VuZXJhbCBlbnF1aXJ5CnplbV9jb250 YWN0X2ludmFsaWRfZW1haWwgPT4gJiM4MjIwOzxzdHJvbmc+e2VtYWlsfTwvc3Ryb25nPiYj ODIyMTsgaXMgbm90IGEgdmFsaWQgZW1haWwgYWRkcmVzcy4KemVtX2NvbnRhY3RfaW52YWxp ZF9ob3N0ID0+ICYjODIyMDs8c3Ryb25nPntob3N0fTwvc3Ryb25nPiYjODIyMTsgaXMgbm90 IGEgdmFsaWQgZW1haWwgaG9zdC4KemVtX2NvbnRhY3RfaW52YWxpZF91dGY4ID0+ICYjODIy MDs8c3Ryb25nPntmaWVsZH08L3N0cm9uZz4mIzgyMjE7IGNvbnRhaW5zIGludmFsaWQgVVRG LTggY2hhcmFjdGVycy4KemVtX2NvbnRhY3RfaW52YWxpZF92YWx1ZSA9PiBJbnZhbGlkIHZh bHVlIGZvciAmIzgyMjA7PHN0cm9uZz57ZmllbGR9PC9zdHJvbmc+JiM4MjIxOywgJiM4MjIw OzxzdHJvbmc+e3ZhbHVlfTwvc3Ryb25nPiYjODIyMTsgaXMgbm90IG9uZSBvZiB0aGUgYXZh aWxhYmxlIG9wdGlvbnMuCnplbV9jb250YWN0X21haWxfc29ycnkgPT4gU29ycnksIHVuYWJs ZSB0byBzZW5kIGVtYWlsLgp6ZW1fY29udGFjdF9tYXh2YWxfd2FybmluZyA9PiAmIzgyMjA7 PHN0cm9uZz57ZmllbGR9PC9zdHJvbmc+JiM4MjIxOyBtdXN0IG5vdCBleGNlZWQge3ZhbHVl fS4KemVtX2NvbnRhY3RfbWF4X3dhcm5pbmcgPT4gJiM4MjIwOzxzdHJvbmc+e2ZpZWxkfTwv c3Ryb25nPiYjODIyMTsgbXVzdCBub3QgY29udGFpbiBtb3JlIHRoYW4ge3ZhbHVlfSBjaGFy YWN0ZXJzLgp6ZW1fY29udGFjdF9tZXNzYWdlID0+IE1lc3NhZ2UKemVtX2NvbnRhY3RfbWlu dmFsX3dhcm5pbmcgPT4gJiM4MjIwOzxzdHJvbmc+e2ZpZWxkfTwvc3Ryb25nPiYjODIyMTsg bXVzdCBiZSBhdCBsZWFzdCB7dmFsdWV9Lgp6ZW1fY29udGFjdF9taW5fd2FybmluZyA9PiAm IzgyMjA7PHN0cm9uZz57ZmllbGR9PC9zdHJvbmc+JiM4MjIxOyBtdXN0IGNvbnRhaW4gYXQg bGVhc3Qge3ZhbHVlfSBjaGFyYWN0ZXJzLgp6ZW1fY29udGFjdF9uYW1lID0+IE5hbWUKemVt X2NvbnRhY3Rfb3B0aW9uID0+IE9wdGlvbgp6ZW1fY29udGFjdF9wYXR0ZXJuX3dhcm5pbmcg PT4gJiM4MjIwOzxzdHJvbmc+e2ZpZWxkfTwvc3Ryb25nPiYjODIyMTsgZG9lcyBub3QgbWF0 Y2ggdGhlIHBhdHRlcm4ge3ZhbHVlfS4KemVtX2NvbnRhY3RfcmFkaW8gPT4gUmFkaW8KemVt X2NvbnRhY3RfcmVjaXBpZW50ID0+IFJlY2lwaWVudAp6ZW1fY29udGFjdF9yZWZyZXNoID0+ IEZvbGxvdyB0aGlzIGxpbmsgaWYgdGhlIHBhZ2UgZG9lcyBub3QgcmVmcmVzaCBhdXRvbWF0 aWNhbGx5Lgp6ZW1fY29udGFjdF9zZWNyZXQgPT4gU2VjcmV0CnplbV9jb250YWN0X3NlbmQg PT4gU2VuZAp6ZW1fY29udGFjdF9zZW5kX2FydGljbGUgPT4gU2VuZCBhcnRpY2xlCnplbV9j b250YWN0X3NwYW0gPT4gV2UgZG8gbm90IGFjY2VwdCBzcGFtLCB0aGFuayB5b3UhCnplbV9j b250YWN0X3RleHQgPT4gVGV4dAp6ZW1fY29udGFjdF90b19taXNzaW5nID0+ICYjODIyMDs8 c3Ryb25nPlRvPC9zdHJvbmc+JiM4MjIxOyBlbWFpbCBhZGRyZXNzIGlzIG1pc3NpbmcuCiNA cHVibGljCiNAbGFuZ3VhZ2UgZXMtZXMKemVtX2NvbnRhY3RfY2hlY2tib3ggPT4gQ2hlY2ti b3gKemVtX2NvbnRhY3RfY29udGFjdCA9PiBDb250YWN0bwp6ZW1fY29udGFjdF9lbWFpbCA9 PiBFbWFpbAp6ZW1fY29udGFjdF9lbWFpbF9zdWJqZWN0ID0+IHtzaXRlfSA+IENvbnN1bHRh CnplbV9jb250YWN0X2VtYWlsX3RoYW5rcyA9PiBHcmFjaWFzLCB0dSBtZW5zYWplIGhhIHNp ZG8gZW52aWFkby4KemVtX2NvbnRhY3RfZmllbGRfbWlzc2luZyA9PiBmYWx0YSBlbCBjYW1w byBvYmxpZ2F0b3JpbyAmIzgyMjA7PHN0cm9uZz57ZmllbGR9PC9zdHJvbmc+JiM4MjIxOy4K emVtX2NvbnRhY3RfZm9ybWF0X3dhcm5pbmcgPT4gRWwgdmFsb3Ige3ZhbHVlfSBlbiAmIzgy MjA7PHN0cm9uZz57ZmllbGR9PC9zdHJvbmc+JiM4MjIxOyBubyBlcyBlbCBmb3JtYXRvIGVz cGVyYWRvLgp6ZW1fY29udGFjdF9mb3JtX2V4cGlyZWQgPT4gRWwgZm9ybXVsYXJpbyBoYSBj YWR1Y2FkbywgcG9yIGZhdm9yIGludMOpbnRhbG8gZGUgbnVldm8uCnplbV9jb250YWN0X2Zv cm1fdXNlZCA9PiBFbCBmb3JtdWxhcmlvIHlhIGhhYsOtYSBzaWRvIGVudmlhZG8sIHBvciBm YXZvciByZWxsZW5hIGVsIGZvcm11bGFyaW8gZGUgbnVldm8uCnplbV9jb250YWN0X2dlbmVy YWxfaW5xdWlyeSA9PiBDb25zdWx0YSBnZW5lcmFsCnplbV9jb250YWN0X2ludmFsaWRfZW1h aWwgPT4gJiM4MjIwOzxzdHJvbmc+e2VtYWlsfTwvc3Ryb25nPiYjODIyMTsgbm8gZXMgdW4g ZW1haWwgdsOhbGlkby4KemVtX2NvbnRhY3RfaW52YWxpZF9ob3N0ID0+ICYjODIyMDs8c3Ry b25nPntob3N0fTwvc3Ryb25nPiYjODIyMTsgbm8gZXMgdW4gZG9taW5pbyBkZSBlbWFpbCB2 w6FsaWRvLgp6ZW1fY29udGFjdF9pbnZhbGlkX3V0ZjggPT4gJiM4MjIwOzxzdHJvbmc+e2Zp ZWxkfTwvc3Ryb25nPiYjODIyMTsgY29udGllbmUgY2FyYWN0ZXJlcyBVVEYtOCBubyB2w6Fs aWRvcy4KemVtX2NvbnRhY3RfaW52YWxpZF92YWx1ZSA9PiBWYWxvciBpbmNvcnJlY3RvIHBh cmEgJiM4MjIwOzxzdHJvbmc+e2ZpZWxkfTwvc3Ryb25nPiYjODIyMTssICYjODIyMDs8c3Ry b25nPnt2YWx1ZX08L3N0cm9uZz4mIzgyMjE7IE5vIGVzIHVuYSBkZSBsYXMgb3BjaW9uZXMg ZGlzcG9uaWJsZXMuCnplbV9jb250YWN0X21haWxfc29ycnkgPT4gTG8gc2llbnRvLCBubyBz ZSBwdWRvIGVudmlhciBlbCBlbWFpbC4KemVtX2NvbnRhY3RfbWF4dmFsX3dhcm5pbmcgPT4g JiM4MjIwOzxzdHJvbmc+e2ZpZWxkfTwvc3Ryb25nPiYjODIyMTsgbm8gZGViZSBleGNlZGVy IHt2YWx1ZX0uCnplbV9jb250YWN0X21heF93YXJuaW5nID0+ICYjODIyMDs8c3Ryb25nPntm aWVsZH08L3N0cm9uZz4mIzgyMjE7IG5vIGRlYmUgY29udGVuZXIgbcOhcyBkZSB7dmFsdWV9 IGNhcmFjdGVyZXMuCnplbV9jb250YWN0X21lc3NhZ2UgPT4gTWVzc2FnZQp6ZW1fY29udGFj dF9taW52YWxfd2FybmluZyA9PiAmIzgyMjA7PHN0cm9uZz57ZmllbGR9PC9zdHJvbmc+JiM4 MjIxOyBkZWJlIHRlbmVyIGFsIG1lbm9zIHt2YWx1ZX0uCnplbV9jb250YWN0X21pbl93YXJu aW5nID0+ICYjODIyMDs8c3Ryb25nPntmaWVsZH08L3N0cm9uZz4mIzgyMjE7IGRlYmUgY29u dGVuZXIgYWwgbWVub3Mge3ZhbHVlfSBjYXJhY3RlcmVzLgp6ZW1fY29udGFjdF9uYW1lID0+ IE5hbWUKemVtX2NvbnRhY3Rfb3B0aW9uID0+IE9wdGlvbgp6ZW1fY29udGFjdF9wYXR0ZXJu X3dhcm5pbmcgPT4gJiM4MjIwOzxzdHJvbmc+e2ZpZWxkfTwvc3Ryb25nPiYjODIyMTsgbm8g ZW5jYWphIGNvbiBlbCBwYXRyw7NuIHt2YWx1ZX0uCnplbV9jb250YWN0X3JhZGlvID0+IFJh ZGlvCnplbV9jb250YWN0X3JlY2lwaWVudCA9PiBSZWNpcGllbnQKemVtX2NvbnRhY3RfcmVm cmVzaCA9PiBQaW5jaGEgYXF1w60gc2kgbGEgcMOhZ2luYSBubyBzZSByZWNhcmdhIGF1dG9t w6F0aWNhbWVudGUuCnplbV9jb250YWN0X3NlY3JldCA9PiBTZWNyZXRvCnplbV9jb250YWN0 X3NlbmQgPT4gRW52aWFyCnplbV9jb250YWN0X3NlbmRfYXJ0aWNsZSA9PiBFbnZpYXIgYXJ0 w61jdWxvCnplbV9jb250YWN0X3NwYW0gPT4gR3JhY2lhcywgcGVybyBubyBhY2VwdGFtb3Mg Y29ycmVvIGJhc3VyYQp6ZW1fY29udGFjdF90ZXh0ID0+IFRleHRvCnplbV9jb250YWN0X3Rv X21pc3NpbmcgPT4gJiM4MjIwOzxzdHJvbmc+VG88L3N0cm9uZz4mIzgyMjE7IGZhbHRhIGxh IGRpcmVjY2nDs24gZGUgZW1haWwuCiNAcHVibGljCiNAbGFuZ3VhZ2UgZnItZnIKemVtX2Nv bnRhY3RfY2hlY2tib3ggPT4gQ2FzZSDDoCBjb2NoZXIKemVtX2NvbnRhY3RfY29udGFjdCA9 PiBDb250YWN0CnplbV9jb250YWN0X2VtYWlsID0+IEVtYWlsCnplbV9jb250YWN0X2VtYWls X3N1YmplY3QgPT4ge3NpdGV9ID4gRGVtYW5kZQp6ZW1fY29udGFjdF9lbWFpbF90aGFua3Mg PT4gTWVyY2ksIHZvdHJlIG1lc3NhZ2UgYSBiaWVuIMOpdMOpIGVudm95w6kuCnplbV9jb250 YWN0X2ZpZWxkX21pc3NpbmcgPT4gQ2hhbXAgb2JsaWdhdG9pcmUgJiM4MjIwOzxzdHJvbmc+ e2ZpZWxkfTwvc3Ryb25nPiYjODIyMTsgbWFucXVhbnQKemVtX2NvbnRhY3RfZm9ybV9leHBp cmVkID0+IExlIGTDqWxhaSBkdSBmb3JtdWxhaXJlIHZpZW50IGQnZXhwaXJlci4gVmV1aWxs ZXogcmVjb21tZW5jZXIuCnplbV9jb250YWN0X2Zvcm1fdXNlZCA9PiBMZSBmb3JtdWxhaXJl IGEgZMOpasOgIMOpdMOpIHNvdW1pcy4gVmV1aWxsZXogZW4gcmVtcGxpciB1biBub3V2ZWF1 Lgp6ZW1fY29udGFjdF9nZW5lcmFsX2lucXVpcnkgPT4gRGVtYW5kZSBkJ29yZHJlIGfDqW7D qXJhbAp6ZW1fY29udGFjdF9pbnZhbGlkX2VtYWlsID0+ICYjODIyMDs8c3Ryb25nPntlbWFp bH08L3N0cm9uZz4mIzgyMjE7IG4nZXN0IHBhcyB1bmUgYWRyZXNzZSBlbWFpbCB2YWxpZGUK emVtX2NvbnRhY3RfaW52YWxpZF9ob3N0ID0+ICYjODIyMDs8c3Ryb25nPntob3N0fTwvc3Ry b25nPiYjODIyMTsgbidlc3QgcGFzIGNvcnJlY3RlbWVudCByw6lkaWfDqQp6ZW1fY29udGFj dF9pbnZhbGlkX3V0ZjggPT4gJiM4MjIwOzxzdHJvbmc+e2ZpZWxkfTwvc3Ryb25nPiYjODIy MTsgY29udGllbnQgZGVzIGNhcmFjdMOocmVzIGludmFsaWRlcwp6ZW1fY29udGFjdF9pbnZh bGlkX3ZhbHVlID0+IGNldHRlIHZhbGV1ciA6ICYjODIyMDs8c3Ryb25nPnt2YWx1ZX08L3N0 cm9uZz4mIzgyMjE7IG4nZXN0IHBhcyBjb3JyZWN0ZSBwb3VyICYjODIyMDs8c3Ryb25nPntm aWVsZH08L3N0cm9uZz4mIzgyMjE7Lgp6ZW1fY29udGFjdF9tYWlsX3NvcnJ5ID0+IETDqXNv bMOpLCBpbXBvc3NpYmxlIGQnZW52b3llciB2b3RyZSBtZXNzYWdlIGRhbnMgbCdpbW3DqWRp YXQuCnplbV9jb250YWN0X21heHZhbF93YXJuaW5nID0+ICYjODIyMDs8c3Ryb25nPntmaWVs ZH08L3N0cm9uZz4mIzgyMjE7IG5lIHBldXggcGFzIMOqdHJlIHBsdXMgZ3JhbmQgcXVlIHt2 YWx1ZX0uCnplbV9jb250YWN0X21heF93YXJuaW5nID0+ICYjODIyMDs8c3Ryb25nPntmaWVs ZH08L3N0cm9uZz4mIzgyMjE7IGTDqXBhc3NlIHt2YWx1ZX0gY2FyYWN0w6hyZXMuCnplbV9j b250YWN0X21lc3NhZ2UgPT4gTWVzc2FnZQp6ZW1fY29udGFjdF9taW52YWxfd2FybmluZyA9 PiAmIzgyMjA7PHN0cm9uZz57ZmllbGR9PC9zdHJvbmc+JiM4MjIxOyBkb2l0IMOqdHJlIGF1 IG1vaW5zIHt2YWx1ZX0uCnplbV9jb250YWN0X21pbl93YXJuaW5nID0+ICYjODIyMDs8c3Ry b25nPntmaWVsZH08L3N0cm9uZz4mIzgyMjE7IGRvaXQgY29udGVuaXIgYXUgbW9pbnMge3Zh bHVlfSBjYXJhY3TDqHJlcy4KemVtX2NvbnRhY3RfbmFtZSA9PiBOb20KemVtX2NvbnRhY3Rf b3B0aW9uID0+IE9wdGlvbgp6ZW1fY29udGFjdF9wYXR0ZXJuX3dhcm5pbmcgPT4gJiM4MjIw OzxzdHJvbmc+e2ZpZWxkfTwvc3Ryb25nPiYjODIyMTsgZG9pdCBjb3JyZXNwb25kcmUgw6Ag Y2UgbW9kw6hsZSB7dmFsdWV9Lgp6ZW1fY29udGFjdF9yYWRpbyA9PiBCb3V0b24gcmFkaW8K emVtX2NvbnRhY3RfcmVjaXBpZW50ID0+IERlc3RpbmF0YWlyZQp6ZW1fY29udGFjdF9yZWZy ZXNoID0+IENsaXF1ZXogc3VyIGNlIGxpZW4gc2kgbGEgcGFnZSBuZSBzZSByYWZyYcOuY2hp c3NhaXQgcGFzIGF1dG9tYXRpcXVlbWVudC4KemVtX2NvbnRhY3Rfc2VjcmV0ID0+IFNlY3Jl dAp6ZW1fY29udGFjdF9zZW5kID0+IEVudm95ZXIKemVtX2NvbnRhY3Rfc2VuZF9hcnRpY2xl ID0+IEVudm95ZXIgbCdhcnRpY2xlCnplbV9jb250YWN0X3NwYW0gPT4gTm91cyByZWZ1c29u cyBjYXTDqWdvcmlxdWVtZW50IGxlcyBzcGFtLiBCaWVuIMOgIHZvdXMuCnplbV9jb250YWN0 X3RleHQgPT4gVGV4dGUKemVtX2NvbnRhY3RfdG9fbWlzc2luZyA9PiBsJ2FkcmVzc2UgbWFp bCAmIzgyMjA7PHN0cm9uZz5Ubzwvc3Ryb25nPiYjODIyMTsgZXN0IG1hbnF1YW50ZS4KI0Bw dWJsaWMKI0BsYW5ndWFnZSBwdC1icgp6ZW1fY29udGFjdF9jaGVja2JveCA9PiBDaGVja2Jv eAp6ZW1fY29udGFjdF9jb250YWN0ID0+IENvbnRhdG8KemVtX2NvbnRhY3RfZW1haWwgPT4g RW1haWwKemVtX2NvbnRhY3RfZW1haWxfc3ViamVjdCA9PiB7c2l0ZX0gPiBDb250YXRvCnpl bV9jb250YWN0X2VtYWlsX3RoYW5rcyA9PiBPYnJpZ2Fkbywgc3VhIG1lbnNhZ2VtIGZvaSBl bnZpYWRhLgp6ZW1fY29udGFjdF9maWVsZF9taXNzaW5nID0+IEZhbHRvdSBwcmVlbmNoZXIg byBjYW1wbyByZXF1ZXJpZG8gJiM4MjIwOzxzdHJvbmc+e2ZpZWxkfTwvc3Ryb25nPiYjODIy MTsuCnplbV9jb250YWN0X2Zvcm1hdF93YXJuaW5nID0+IE8gdmFsb3Ige3ZhbHVlfSBlbSAm IzgyMjA7PHN0cm9uZz57ZmllbGR9PC9zdHJvbmc+JiM4MjIxOyBuw6NvIGVzdMOhIGZvcm1h dG8gZXNwZXJhZG8uCnplbV9jb250YWN0X2Zvcm1fZXhwaXJlZCA9PiBPIGZvcm11bMOhcmlv IGV4cGlyb3UsIHBvciBmYXZvciB0ZW50ZSBub3ZhbWVudGUuCnplbV9jb250YWN0X2Zvcm1f dXNlZCA9PiBPIGZvcm11bMOhcmlvIGrDoSBmb2kgZW52aWFkbywgcG9yIGZhdm9yIHByZWVu Y2hhIG8gZm9ybXVsw6FyaW8gbm92YW1lbnRlLgp6ZW1fY29udGFjdF9nZW5lcmFsX2lucXVp cnkgPT4gQXNzdW50b3MgZ2VyYWlzCnplbV9jb250YWN0X2ludmFsaWRfZW1haWwgPT4gJiM4 MjIwOzxzdHJvbmc+e2VtYWlsfTwvc3Ryb25nPiYjODIyMTsgbsOjbyDDqSB1bSBlbmRlcmXD p28gZGUgZW1haWwgdsOhbGlkby4KemVtX2NvbnRhY3RfaW52YWxpZF9ob3N0ID0+ICYjODIy MDs8c3Ryb25nPntob3N0fTwvc3Ryb25nPiYjODIyMTsgbsOjbyDDqSB1bSBkb23DrW5pbyBk ZSBlbWFpbCB2w6FsaWRvLgp6ZW1fY29udGFjdF9pbnZhbGlkX3V0ZjggPT4gJiM4MjIwOzxz dHJvbmc+e2ZpZWxkfTwvc3Ryb25nPiYjODIyMTsgY29udMOpbSBjYXJhY3RlcmVzIFVURi04 IGludsOhbGlkb3MuCnplbV9jb250YWN0X2ludmFsaWRfdmFsdWUgPT4gVmFsb3IgaW5jb3Jy ZXRvIHBhcmEgJiM4MjIwOzxzdHJvbmc+e2ZpZWxkfTwvc3Ryb25nPiYjODIyMTssICYjODIy MDs8c3Ryb25nPnt2YWx1ZX08L3N0cm9uZz4mIzgyMjE7IE7Do28gw6kgdW1hIGRhcyBvcMOn w7VlcyBkaXNwb27DrXZlaXMuCnplbV9jb250YWN0X21haWxfc29ycnkgPT4gRGVzY3VscGUs IG7Do28gZm9pIHBvc3PDrXZlbCBlbnZpYXIgbyBlbWFpbC4KemVtX2NvbnRhY3RfbWF4dmFs X3dhcm5pbmcgPT4gJiM4MjIwOzxzdHJvbmc+e2ZpZWxkfTwvc3Ryb25nPiYjODIyMTsgbsOj byBwb2RlIGV4Y2VkZXIge3ZhbHVlfS4KemVtX2NvbnRhY3RfbWF4X3dhcm5pbmcgPT4gJiM4 MjIwOzxzdHJvbmc+e2ZpZWxkfTwvc3Ryb25nPiYjODIyMTsgbsOjbyBwb2RlIGNvbnRlciBt YWlzIHF1ZSB7dmFsdWV9IGNhcmFjdGVyZXMuCnplbV9jb250YWN0X21lc3NhZ2UgPT4gTWVu c2FnZW0KemVtX2NvbnRhY3RfbWludmFsX3dhcm5pbmcgPT4gJiM4MjIwOzxzdHJvbmc+e2Zp ZWxkfTwvc3Ryb25nPiYjODIyMTsgZGV2ZSB0ZXIgYW8gbWVub3Mge3ZhbHVlfS4KemVtX2Nv bnRhY3RfbWluX3dhcm5pbmcgPT4gJiM4MjIwOzxzdHJvbmc+e2ZpZWxkfTwvc3Ryb25nPiYj ODIyMTsgZGV2ZSBjb250ZXIgYW8gbWVub3Mge3ZhbHVlfSBjYXJhY3RlcmVzLgp6ZW1fY29u dGFjdF9uYW1lID0+IE5vbWUKemVtX2NvbnRhY3Rfb3B0aW9uID0+IE9ww6fDo28KemVtX2Nv bnRhY3RfcGF0dGVybl93YXJuaW5nID0+ICYjODIyMDs8c3Ryb25nPntmaWVsZH08L3N0cm9u Zz4mIzgyMjE7IG7Do28gc2UgZW5jYWl4YSBubyBmb3JtYXRvIHt2YWx1ZX0uCnplbV9jb250 YWN0X3JhZGlvID0+IFLDoWRpbwp6ZW1fY29udGFjdF9yZWNpcGllbnQgPT4gRGVzdGluYXTD oXJpbwp6ZW1fY29udGFjdF9yZWZyZXNoID0+IENsaXF1ZSBuZXN0ZSBsaW5rIGNhc28gYSBw w6FnaW5hIG7Do28gc2UgYXR1YWxpemUgYXV0b21hdGljYW1lbnRlLgp6ZW1fY29udGFjdF9z ZWNyZXQgPT4gU2VjcmV0bwp6ZW1fY29udGFjdF9zZW5kID0+IEVudmlhcgp6ZW1fY29udGFj dF9zZW5kX2FydGljbGUgPT4gRW52aWFyIGFydGlnbwp6ZW1fY29udGFjdF9zcGFtID0+IE7D o28gYWNlaXRhbW9zIFNQQU0sIG9icmlnYWRvIQp6ZW1fY29udGFjdF90ZXh0ID0+IFRleHRv CnplbV9jb250YWN0X3RvX21pc3NpbmcgPT4gJiM4MjIwOzxzdHJvbmc+VG88L3N0cm9uZz4m IzgyMjE7IGZhbHRhIG8gZW5kZXJlw6dvIGRlIGVtYWlsLiI7fQ==