{"id":"ssc-mainnet-hive","json":{"contractName":"contract","contractAction":"update","contractPayload":{"name":"nft","params":"","code":"Y29uc3QgQ09OVFJBQ1RfTkFNRT0ibmZ0IixVVElMSVRZX1RPS0VOX1NZTUJPTD0iQkVFIixNQVhfTlVNX0FVVEhPUklaRURfSVNTVUVSUz0xMCxNQVhfTlVNX0xPQ0tFRF9UT0tFTl9UWVBFUz0xMCxNQVhfU1lNQk9MX0xFTkdUSD0xMCxNQVhfREFUQV9QUk9QRVJUWV9MRU5HVEg9MTAwLE1BWF9OVU1fTkZUU19JU1NVQUJMRT0xMCxNQVhfTlVNX05GVFNfRURJVEFCTEU9NTAsTUFYX05VTV9ORlRTX09QRVJBQkxFPTUwLE1BWF9OVU1fQ09OVEFJTkVSX05GVFNfT1BFUkFCTEU9MSxSRVNFUlZFRF9TWU1CT0xTPXtDRUxMOiJiZWdnYXJzIixRVVNUOiJzaW1wbGVnYW1lIixURVNURVJBOiJhZ2dyb2VkIixTUVJMOiJzdHVmZmJ5c3BlbmNlciIsQ1JBRlQ6ImltbWFudWVsOTQiLENHVUxMOiJjZ3VsbCIsTkZUOiJjYWRhd2ciLFJBUkU6ImJlZ2dhcnMiLExJQzoibGljdG9rZW4iLE1FTUJFUjoibWVtYmVydG9rZW4iLENPRkZFRToiYzBmZjMzYSIsUk9DSzoiYmVnZ2FycyIsTU9OU1RFUlM6InNpbXBsZWdhbWUiLFNFVFM6Imxvb3RraXQuZ2FtZXMiLFBIT1RPRlQ6Ind3d2llYmUiLEJFRVI6ImRldGxldiIsU1BJUjoic3BpbnZlc3QiLElGRzoibGlvbjIwMCIsR1VJTERTOiJzaW1wbGVnYW1lIixGQ0FSRDoibGlvbjIwMCIsUFhMOiJwaXhlbG5mdCIsQ09XOiJzdHVmZmJ5c3BlbmNlciIsTE9PT1Q6InN0dWZmYnlzcGVuY2VyIixTUE9SVFNNT006InNwb3J0c3Rlc3RlciIsU1dUOiJzYXRyZW4ifTthY3Rpb25zLmNyZWF0ZVNTQz1hc3luYygpPT57aWYoITE9PT1hd2FpdCBhcGkuZGIudGFibGVFeGlzdHMoIm5mdHMiKSl7YXdhaXQgYXBpLmRiLmNyZWF0ZVRhYmxlKCJuZnRzIixbInN5bWJvbCJdKSxhd2FpdCBhcGkuZGIuY3JlYXRlVGFibGUoInBhcmFtcyIpLGF3YWl0IGFwaS5kYi5jcmVhdGVUYWJsZSgicGVuZGluZ1VuZGVsZWdhdGlvbnMiLFsic3ltYm9sIiwiY29tcGxldGVUaW1lc3RhbXAiXSk7Y29uc3QgcGFyYW1zPXtuZnRDcmVhdGlvbkZlZToiMTAwIixuZnRJc3N1YW5jZUZlZTp7IkJFRSI6IjAuMDAxIixQQUw6IjAuMDAxIn0sZGF0YVByb3BlcnR5Q3JlYXRpb25GZWU6IjEwMCIsZW5hYmxlRGVsZWdhdGlvbkZlZToiMTAwMCJ9O2F3YWl0IGFwaS5kYi5pbnNlcnQoInBhcmFtcyIscGFyYW1zKX19LGFjdGlvbnMudXBkYXRlUGFyYW1zPWFzeW5jIHBheWxvYWQ9PntpZihhcGkuc2VuZGVyIT09YXBpLm93bmVyKXJldHVybjtjb25zdHtuZnRDcmVhdGlvbkZlZTpuZnRDcmVhdGlvbkZlZSxuZnRJc3N1YW5jZUZlZTpuZnRJc3N1YW5jZUZlZSxkYXRhUHJvcGVydHlDcmVhdGlvbkZlZTpkYXRhUHJvcGVydHlDcmVhdGlvbkZlZSxlbmFibGVEZWxlZ2F0aW9uRmVlOmVuYWJsZURlbGVnYXRpb25GZWV9PXBheWxvYWQscGFyYW1zPWF3YWl0IGFwaS5kYi5maW5kT25lKCJwYXJhbXMiLHt9KTtuZnRDcmVhdGlvbkZlZSYmInN0cmluZyI9PXR5cGVvZiBuZnRDcmVhdGlvbkZlZSYmIWFwaS5CaWdOdW1iZXIobmZ0Q3JlYXRpb25GZWUpLmlzTmFOKCkmJmFwaS5CaWdOdW1iZXIobmZ0Q3JlYXRpb25GZWUpLmd0ZSgwKSYmKHBhcmFtcy5uZnRDcmVhdGlvbkZlZT1uZnRDcmVhdGlvbkZlZSksbmZ0SXNzdWFuY2VGZWUmJiJvYmplY3QiPT10eXBlb2YgbmZ0SXNzdWFuY2VGZWUmJihwYXJhbXMubmZ0SXNzdWFuY2VGZWU9bmZ0SXNzdWFuY2VGZWUpLGRhdGFQcm9wZXJ0eUNyZWF0aW9uRmVlJiYic3RyaW5nIj09dHlwZW9mIGRhdGFQcm9wZXJ0eUNyZWF0aW9uRmVlJiYhYXBpLkJpZ051bWJlcihkYXRhUHJvcGVydHlDcmVhdGlvbkZlZSkuaXNOYU4oKSYmYXBpLkJpZ051bWJlcihkYXRhUHJvcGVydHlDcmVhdGlvbkZlZSkuZ3RlKDApJiYocGFyYW1zLmRhdGFQcm9wZXJ0eUNyZWF0aW9uRmVlPWRhdGFQcm9wZXJ0eUNyZWF0aW9uRmVlKSxlbmFibGVEZWxlZ2F0aW9uRmVlJiYic3RyaW5nIj09dHlwZW9mIGVuYWJsZURlbGVnYXRpb25GZWUmJiFhcGkuQmlnTnVtYmVyKGVuYWJsZURlbGVnYXRpb25GZWUpLmlzTmFOKCkmJmFwaS5CaWdOdW1iZXIoZW5hYmxlRGVsZWdhdGlvbkZlZSkuZ3RlKDApJiYocGFyYW1zLmVuYWJsZURlbGVnYXRpb25GZWU9ZW5hYmxlRGVsZWdhdGlvbkZlZSksYXdhaXQgYXBpLmRiLnVwZGF0ZSgicGFyYW1zIixwYXJhbXMpfTtjb25zdCBpc1Rva2VuVHJhbnNmZXJWZXJpZmllZD0ocmVzdWx0LGZyb20sdG8sc3ltYm9sLHF1YW50aXR5LGV2ZW50U3RyKT0+ISh2b2lkIDAhPT1yZXN1bHQuZXJyb3JzfHwhcmVzdWx0LmV2ZW50c3x8dm9pZCAwPT09cmVzdWx0LmV2ZW50cy5maW5kKChlbD0+InRva2VucyI9PT1lbC5jb250cmFjdCYmZWwuZXZlbnQ9PT1ldmVudFN0ciYmZWwuZGF0YS5mcm9tPT09ZnJvbSYmZWwuZGF0YS50bz09PXRvJiZlbC5kYXRhLnF1YW50aXR5PT09cXVhbnRpdHkmJmVsLmRhdGEuc3ltYm9sPT09c3ltYm9sKSkpLGNhbGN1bGF0ZUJhbGFuY2U9KGJhbGFuY2UscXVhbnRpdHkscHJlY2lzaW9uLGFkZCk9PmFkZD9hcGkuQmlnTnVtYmVyKGJhbGFuY2UpLnBsdXMocXVhbnRpdHkpLnRvRml4ZWQocHJlY2lzaW9uKTphcGkuQmlnTnVtYmVyKGJhbGFuY2UpLm1pbnVzKHF1YW50aXR5KS50b0ZpeGVkKHByZWNpc2lvbiksY291bnREZWNpbWFscz12YWx1ZT0+YXBpLkJpZ051bWJlcih2YWx1ZSkuZHAoKSxjb250YWluc0R1cGxpY2F0ZXM9YXJyPT5uZXcgU2V0KGFycikuc2l6ZSE9PWFyci5sZW5ndGgsaXNWYWxpZEhpdmVBY2NvdW50TGVuZ3RoPWFjY291bnQ9PmFjY291bnQubGVuZ3RoPj0zJiZhY2NvdW50Lmxlbmd0aDw9MTYsaXNWYWxpZENvbnRyYWN0TGVuZ3RoPWNvbnRyYWN0PT5jb250cmFjdC5sZW5ndGg+PTMmJmNvbnRyYWN0Lmxlbmd0aDw9NTAsaXNWYWxpZEFjY291bnRzQXJyYXk9YXJyPT57bGV0IHZhbGlkQ29udGVudHM9ITA7cmV0dXJuIGFyci5mb3JFYWNoKChhY2NvdW50PT57InN0cmluZyI9PXR5cGVvZiBhY2NvdW50JiZpc1ZhbGlkSGl2ZUFjY291bnRMZW5ndGgoYWNjb3VudCl8fCh2YWxpZENvbnRlbnRzPSExKX0pKSx2YWxpZENvbnRlbnRzfSxpc1ZhbGlkQ29udHJhY3RzQXJyYXk9YXJyPT57bGV0IHZhbGlkQ29udGVudHM9ITA7cmV0dXJuIGFyci5mb3JFYWNoKChjb250cmFjdD0+eyJzdHJpbmciPT10eXBlb2YgY29udHJhY3QmJmlzVmFsaWRDb250cmFjdExlbmd0aChjb250cmFjdCl8fCh2YWxpZENvbnRlbnRzPSExKX0pKSx2YWxpZENvbnRlbnRzfSxpc1ZhbGlkRGF0YVByb3BlcnRpZXM9KGZyb20sZnJvbVR5cGUsbmZ0LHByb3BlcnRpZXMpPT57Y29uc3QgcHJvcGVydHlDb3VudD1PYmplY3Qua2V5cyhwcm9wZXJ0aWVzKS5sZW5ndGgsbmZ0UHJvcGVydHlDb3VudD1PYmplY3Qua2V5cyhuZnQucHJvcGVydGllcykubGVuZ3RoO2lmKCFhcGkuYXNzZXJ0KHByb3BlcnR5Q291bnQ8PW5mdFByb3BlcnR5Q291bnQsImNhbm5vdCBzZXQgbW9yZSBkYXRhIHByb3BlcnRpZXMgdGhhbiBORlQgaGFzIikpcmV0dXJuITE7Zm9yKGNvbnN0W25hbWUsZGF0YV1vZiBPYmplY3QuZW50cmllcyhwcm9wZXJ0aWVzKSl7bGV0IHZhbGlkQ29udGVudHM9ITE7aWYoYXBpLmFzc2VydChuYW1lJiYic3RyaW5nIj09dHlwZW9mIG5hbWUmJmFwaS52YWxpZGF0b3IuaXNBbHBoYW51bWVyaWMobmFtZSkmJm5hbWUubGVuZ3RoPjAmJm5hbWUubGVuZ3RoPD0yNSwiaW52YWxpZCBkYXRhIHByb3BlcnR5IG5hbWU6IGxldHRlcnMgJiBudW1iZXJzIG9ubHksIG1heCBsZW5ndGggb2YgMjUiKSYmYXBpLmFzc2VydChuYW1lIGluIG5mdC5wcm9wZXJ0aWVzLCJkYXRhIHByb3BlcnR5IG11c3QgZXhpc3QiKSl7Y29uc3QgcHJvcGVydHlTY2hlbWE9bmZ0LnByb3BlcnRpZXNbbmFtZV07YXBpLmFzc2VydChudWxsIT1kYXRhJiYodHlwZW9mIGRhdGE9PT1wcm9wZXJ0eVNjaGVtYS50eXBlfHwibnVtYmVyIj09PXByb3BlcnR5U2NoZW1hLnR5cGUmJiJzdHJpbmciPT10eXBlb2YgZGF0YSYmIWFwaS5CaWdOdW1iZXIoZGF0YSkuaXNOYU4oKSksYGRhdGEgcHJvcGVydHkgdHlwZSBtaXNtYXRjaDogZXhwZWN0ZWQgJHtwcm9wZXJ0eVNjaGVtYS50eXBlfSBidXQgZ290ICR7dHlwZW9mIGRhdGF9IGZvciBwcm9wZXJ0eSAke25hbWV9YCkmJmFwaS5hc3NlcnQoInN0cmluZyIhPXR5cGVvZiBkYXRhfHxkYXRhLmxlbmd0aDw9MTAwLCJzdHJpbmcgcHJvcGVydHkgbWF4IGxlbmd0aCBpcyAxMDAgY2hhcmFjdGVycyIpJiZhcGkuYXNzZXJ0KCJjb250cmFjdCI9PT1mcm9tVHlwZSYmcHJvcGVydHlTY2hlbWEuYXV0aG9yaXplZEVkaXRpbmdDb250cmFjdHMuaW5jbHVkZXMoZnJvbSl8fCJ1c2VyIj09PWZyb21UeXBlJiZwcm9wZXJ0eVNjaGVtYS5hdXRob3JpemVkRWRpdGluZ0FjY291bnRzLmluY2x1ZGVzKGZyb20pLCJub3QgYWxsb3dlZCB0byBzZXQgZGF0YSBwcm9wZXJ0aWVzIikmJih2YWxpZENvbnRlbnRzPSEwLCJudW1iZXIiPT09cHJvcGVydHlTY2hlbWEudHlwZSYmInN0cmluZyI9PXR5cGVvZiBkYXRhJiYocHJvcGVydGllc1tuYW1lXT1hcGkuQmlnTnVtYmVyKGRhdGEpLnRvTnVtYmVyKCkpKX1pZighdmFsaWRDb250ZW50cylyZXR1cm4hMX1yZXR1cm4hMH0saXNWYWxpZERhdGFQcm9wZXJ0aWVzQXJyYXk9KGZyb20sZnJvbVR5cGUsbmZ0LGFycik9Pnt0cnl7Zm9yKGxldCBpPTA7aTxhcnIubGVuZ3RoO2krPTEpe2xldCB2YWxpZENvbnRlbnRzPSExO2NvbnN0e2lkOmlkLHByb3BlcnRpZXM6cHJvcGVydGllc309YXJyW2ldO2lmKGFwaS5hc3NlcnQoaWQmJiJzdHJpbmciPT10eXBlb2YgaWQmJiFhcGkuQmlnTnVtYmVyKGlkKS5pc05hTigpJiZhcGkuQmlnTnVtYmVyKGlkKS5ndCgwKSYmcHJvcGVydGllcyYmIm9iamVjdCI9PXR5cGVvZiBwcm9wZXJ0aWVzLCJpbnZhbGlkIGRhdGEgcHJvcGVydGllcyIpJiZpc1ZhbGlkRGF0YVByb3BlcnRpZXMoZnJvbSxmcm9tVHlwZSxuZnQscHJvcGVydGllcykmJih2YWxpZENvbnRlbnRzPSEwKSwhdmFsaWRDb250ZW50cylyZXR1cm4hMX19Y2F0Y2goZSl7cmV0dXJuITF9cmV0dXJuITB9LGlzVmFsaWROZnRJZEFycmF5PWFycj0+e3RyeXtsZXQgaW5zdGFuY2VDb3VudD0wO2ZvcihsZXQgaT0wO2k8YXJyLmxlbmd0aDtpKz0xKXtsZXQgdmFsaWRDb250ZW50cz0hMTtjb25zdHtzeW1ib2w6c3ltYm9sLGlkczppZHN9PWFycltpXTtpZihhcGkuYXNzZXJ0KHN5bWJvbCYmInN0cmluZyI9PXR5cGVvZiBzeW1ib2wmJmFwaS52YWxpZGF0b3IuaXNBbHBoYShzeW1ib2wpJiZhcGkudmFsaWRhdG9yLmlzVXBwZXJjYXNlKHN5bWJvbCkmJnN5bWJvbC5sZW5ndGg+MCYmc3ltYm9sLmxlbmd0aDw9MTAmJmlkcyYmIm9iamVjdCI9PXR5cGVvZiBpZHMmJkFycmF5LmlzQXJyYXkoaWRzKSwiaW52YWxpZCBuZnQgbGlzdCIpJiYoaW5zdGFuY2VDb3VudCs9aWRzLmxlbmd0aCxhcGkuYXNzZXJ0KGluc3RhbmNlQ291bnQ8PTUwLCJjYW5ub3Qgb3BlcmF0ZSBvbiBtb3JlIHRoYW4gNTAgTkZUIGluc3RhbmNlcyBhdCBvbmNlIikpKXtmb3IobGV0IGo9MDtqPGlkcy5sZW5ndGg7ais9MSl7Y29uc3QgaWQ9aWRzW2pdO2lmKCFhcGkuYXNzZXJ0KGlkJiYic3RyaW5nIj09dHlwZW9mIGlkJiYhYXBpLkJpZ051bWJlcihpZCkuaXNOYU4oKSYmYXBpLkJpZ051bWJlcihpZCkuZ3QoMCksImludmFsaWQgbmZ0IGxpc3QiKSlyZXR1cm4hMX12YWxpZENvbnRlbnRzPSEwfWlmKCF2YWxpZENvbnRlbnRzKXJldHVybiExfX1jYXRjaChlKXtyZXR1cm4hMX1yZXR1cm4hMH0saXNWYWxpZFRva2VuQmFza2V0PWFzeW5jKGJhc2tldCxiYWxhbmNlVGFibGVOYW1lLGFjY291bnROYW1lLGZlZVN5bWJvbCxmZWVRdWFudGl0eSk9Pnt0cnl7aWYoT2JqZWN0LmtleXMoYmFza2V0KS5sZW5ndGg+MTApcmV0dXJuITE7Zm9yKGNvbnN0W3N5bWJvbCxxdWFudGl0eV1vZiBPYmplY3QuZW50cmllcyhiYXNrZXQpKXtsZXQgdmFsaWRDb250ZW50cz0hMTtpZigic3RyaW5nIj09dHlwZW9mIHN5bWJvbCYmYXBpLnZhbGlkYXRvci5pc0FscGhhKHN5bWJvbCkmJmFwaS52YWxpZGF0b3IuaXNVcHBlcmNhc2Uoc3ltYm9sKSYmc3ltYm9sLmxlbmd0aD4wJiZzeW1ib2wubGVuZ3RoPD0xMCl7Y29uc3QgdG9rZW49YXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJ0b2tlbnMiLCJ0b2tlbnMiLHtzeW1ib2w6c3ltYm9sfSk7aWYodG9rZW4mJnF1YW50aXR5JiYic3RyaW5nIj09dHlwZW9mIHF1YW50aXR5JiYhYXBpLkJpZ051bWJlcihxdWFudGl0eSkuaXNOYU4oKSYmYXBpLkJpZ051bWJlcihxdWFudGl0eSkuZ3QoMCkmJmNvdW50RGVjaW1hbHMocXVhbnRpdHkpPD10b2tlbi5wcmVjaXNpb24pe2NvbnN0IGZpbmFsUXVhbnRpdHk9c3ltYm9sPT09ZmVlU3ltYm9sP2NhbGN1bGF0ZUJhbGFuY2UocXVhbnRpdHksZmVlUXVhbnRpdHksdG9rZW4ucHJlY2lzaW9uLCEwKTpxdWFudGl0eSxiYXNrZXRUb2tlbkJhbGFuY2U9YXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJ0b2tlbnMiLGJhbGFuY2VUYWJsZU5hbWUse2FjY291bnQ6YWNjb3VudE5hbWUsc3ltYm9sOnN5bWJvbH0pO2Jhc2tldFRva2VuQmFsYW5jZSYmYXBpLkJpZ051bWJlcihiYXNrZXRUb2tlbkJhbGFuY2UuYmFsYW5jZSkuZ3RlKGZpbmFsUXVhbnRpdHkpJiYodmFsaWRDb250ZW50cz0hMCl9fWlmKCF2YWxpZENvbnRlbnRzKXJldHVybiExfX1jYXRjaChlKXtyZXR1cm4hMX1yZXR1cm4hMH0sdHJhbnNmZXJBbmRWZXJpZnlOZnRzPWFzeW5jKGZyb20sZnJvbVR5cGUsdG8sdG9UeXBlLG5mdHMsaXNTaWduZWRXaXRoQWN0aXZlS2V5LGNhbGxpbmdDb250cmFjdEluZm8pPT57Y29uc3QgcmVzdWx0cz17c3VjY2VzczpbXSxmYWlsOltdfSxmaW5hbEZyb21UeXBlPSJ1c2VyIj09PWZyb21UeXBlPyJ1IjoiYyIsZmluYWxUb1R5cGU9InVzZXIiPT09dG9UeXBlPyJ1IjoiYyI7YXdhaXQgYWN0aW9ucy50cmFuc2Zlcih7ZnJvbVR5cGU6ZnJvbVR5cGUsdG86dG8sdG9UeXBlOnRvVHlwZSxuZnRzOm5mdHMsaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleSxjYWxsaW5nQ29udHJhY3RJbmZvOmNhbGxpbmdDb250cmFjdEluZm99KTtjb25zdCBsb2dzPWFwaS5sb2dzKCksdG9rZW5NYXA9e30sY291bnRlZE1hcD17fTtpZihsb2dzLmV2ZW50cylmb3IobGV0IGk9MDtpPGxvZ3MuZXZlbnRzLmxlbmd0aDtpKz0xKXtjb25zdCBldj1sb2dzLmV2ZW50c1tpXTtpZihldi5jb250cmFjdCYmZXYuZXZlbnQmJmV2LmRhdGEmJiJuZnQiPT09ZXYuY29udHJhY3QmJiJ0cmFuc2ZlciI9PT1ldi5ldmVudCYmZXYuZGF0YS5mcm9tPT09ZnJvbSYmZXYuZGF0YS5mcm9tVHlwZT09PWZpbmFsRnJvbVR5cGUmJmV2LmRhdGEudG89PT10byYmZXYuZGF0YS50b1R5cGU9PT1maW5hbFRvVHlwZSl7dG9rZW5NYXBbZXYuZGF0YS5zeW1ib2wrIi0iK2V2LmRhdGEuaWRdPTF9fWZvcihsZXQgaW5kZXg9MDtpbmRleDxuZnRzLmxlbmd0aDtpbmRleCs9MSl7Y29uc3R7c3ltYm9sOnN5bWJvbCxpZHM6aWRzfT1uZnRzW2luZGV4XSxzdWNjZXNzPVtdLGZhaWw9W107Zm9yKGxldCBqPTA7ajxpZHMubGVuZ3RoO2orPTEpe2NvbnN0IGlucHV0S2V5PXN5bWJvbCsiLSIraWRzW2pdO2lucHV0S2V5IGluIGNvdW50ZWRNYXB8fChpbnB1dEtleSBpbiB0b2tlbk1hcD9zdWNjZXNzLnB1c2goaWRzW2pdLnRvU3RyaW5nKCkpOmZhaWwucHVzaChpZHNbal0udG9TdHJpbmcoKSksY291bnRlZE1hcFtpbnB1dEtleV09MSl9c3VjY2Vzcy5sZW5ndGg+MCYmcmVzdWx0cy5zdWNjZXNzLnB1c2goe3N5bWJvbDpzeW1ib2wsaWRzOnN1Y2Nlc3N9KSxmYWlsLmxlbmd0aD4wJiZyZXN1bHRzLmZhaWwucHVzaCh7c3ltYm9sOnN5bWJvbCxpZHM6ZmFpbH0pfXJldHVybiByZXN1bHRzfTthY3Rpb25zLnVwZGF0ZVVybD1hc3luYyBwYXlsb2FkPT57Y29uc3R7dXJsOnVybCxzeW1ib2w6c3ltYm9sfT1wYXlsb2FkO2lmKGFwaS5hc3NlcnQoc3ltYm9sJiYic3RyaW5nIj09dHlwZW9mIHN5bWJvbCYmdXJsJiYic3RyaW5nIj09dHlwZW9mIHVybCwiaW52YWxpZCBwYXJhbXMiKSYmYXBpLmFzc2VydCh1cmwubGVuZ3RoPD0yNTUsImludmFsaWQgdXJsOiBtYXggbGVuZ3RoIG9mIDI1NSIpKXtjb25zdCBuZnQ9YXdhaXQgYXBpLmRiLmZpbmRPbmUoIm5mdHMiLHtzeW1ib2w6c3ltYm9sfSk7aWYobmZ0JiZhcGkuYXNzZXJ0KG5mdC5pc3N1ZXI9PT1hcGkuc2VuZGVyLCJtdXN0IGJlIHRoZSBpc3N1ZXIiKSl0cnl7Y29uc3QgbWV0YWRhdGE9SlNPTi5wYXJzZShuZnQubWV0YWRhdGEpO2FwaS5hc3NlcnQobWV0YWRhdGEmJm1ldGFkYXRhLnVybCwiYW4gZXJyb3Igb2NjdXJlZCB3aGVuIHRyeWluZyB0byB1cGRhdGUgdGhlIHVybCIpJiYobWV0YWRhdGEudXJsPXVybCxuZnQubWV0YWRhdGE9SlNPTi5zdHJpbmdpZnkobWV0YWRhdGEpLGF3YWl0IGFwaS5kYi51cGRhdGUoIm5mdHMiLG5mdCkpfWNhdGNoKGUpe319fSxhY3Rpb25zLnVwZGF0ZU1ldGFkYXRhPWFzeW5jIHBheWxvYWQ9Pntjb25zdHttZXRhZGF0YTptZXRhZGF0YSxzeW1ib2w6c3ltYm9sfT1wYXlsb2FkO2lmKGFwaS5hc3NlcnQoc3ltYm9sJiYic3RyaW5nIj09dHlwZW9mIHN5bWJvbCYmbWV0YWRhdGEmJiJvYmplY3QiPT10eXBlb2YgbWV0YWRhdGEsImludmFsaWQgcGFyYW1zIikpe2NvbnN0IG5mdD1hd2FpdCBhcGkuZGIuZmluZE9uZSgibmZ0cyIse3N5bWJvbDpzeW1ib2x9KTtpZihuZnQmJmFwaS5hc3NlcnQobmZ0Lmlzc3Vlcj09PWFwaS5zZW5kZXIsIm11c3QgYmUgdGhlIGlzc3VlciIpKXRyeXtjb25zdCBmaW5hbE1ldGFkYXRhPUpTT04uc3RyaW5naWZ5KG1ldGFkYXRhKTthcGkuYXNzZXJ0KGZpbmFsTWV0YWRhdGEubGVuZ3RoPD0xZTMsImludmFsaWQgbWV0YWRhdGE6IG1heCBsZW5ndGggb2YgMTAwMCIpJiYobmZ0Lm1ldGFkYXRhPWZpbmFsTWV0YWRhdGEsYXdhaXQgYXBpLmRiLnVwZGF0ZSgibmZ0cyIsbmZ0KSl9Y2F0Y2goZSl7fX19LGFjdGlvbnMudXBkYXRlTmFtZT1hc3luYyBwYXlsb2FkPT57Y29uc3R7bmFtZTpuYW1lLHN5bWJvbDpzeW1ib2x9PXBheWxvYWQ7aWYoYXBpLmFzc2VydChzeW1ib2wmJiJzdHJpbmciPT10eXBlb2Ygc3ltYm9sJiZuYW1lJiYic3RyaW5nIj09dHlwZW9mIG5hbWUsImludmFsaWQgcGFyYW1zIikmJmFwaS5hc3NlcnQoYXBpLnZhbGlkYXRvci5pc0FscGhhbnVtZXJpYyhhcGkudmFsaWRhdG9yLmJsYWNrbGlzdChuYW1lLCIgIikpJiZuYW1lLmxlbmd0aD4wJiZuYW1lLmxlbmd0aDw9NTAsImludmFsaWQgbmFtZTogbGV0dGVycywgbnVtYmVycywgd2hpdGVzcGFjZXMgb25seSwgbWF4IGxlbmd0aCBvZiA1MCIpKXtjb25zdCBuZnQ9YXdhaXQgYXBpLmRiLmZpbmRPbmUoIm5mdHMiLHtzeW1ib2w6c3ltYm9sfSk7bmZ0JiZhcGkuYXNzZXJ0KG5mdC5pc3N1ZXI9PT1hcGkuc2VuZGVyLCJtdXN0IGJlIHRoZSBpc3N1ZXIiKSYmKG5mdC5uYW1lPW5hbWUsYXdhaXQgYXBpLmRiLnVwZGF0ZSgibmZ0cyIsbmZ0KSl9fSxhY3Rpb25zLnVwZGF0ZU9yZ05hbWU9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e29yZ05hbWU6b3JnTmFtZSxzeW1ib2w6c3ltYm9sfT1wYXlsb2FkO2lmKGFwaS5hc3NlcnQoc3ltYm9sJiYic3RyaW5nIj09dHlwZW9mIHN5bWJvbCYmb3JnTmFtZSYmInN0cmluZyI9PXR5cGVvZiBvcmdOYW1lLCJpbnZhbGlkIHBhcmFtcyIpJiZhcGkuYXNzZXJ0KGFwaS52YWxpZGF0b3IuaXNBbHBoYW51bWVyaWMoYXBpLnZhbGlkYXRvci5ibGFja2xpc3Qob3JnTmFtZSwiICIpKSYmb3JnTmFtZS5sZW5ndGg+MCYmb3JnTmFtZS5sZW5ndGg8PTUwLCJpbnZhbGlkIG9yZyBuYW1lOiBsZXR0ZXJzLCBudW1iZXJzLCB3aGl0ZXNwYWNlcyBvbmx5LCBtYXggbGVuZ3RoIG9mIDUwIikpe2NvbnN0IG5mdD1hd2FpdCBhcGkuZGIuZmluZE9uZSgibmZ0cyIse3N5bWJvbDpzeW1ib2x9KTtuZnQmJmFwaS5hc3NlcnQobmZ0Lmlzc3Vlcj09PWFwaS5zZW5kZXIsIm11c3QgYmUgdGhlIGlzc3VlciIpJiYobmZ0Lm9yZ05hbWU9b3JnTmFtZSxhd2FpdCBhcGkuZGIudXBkYXRlKCJuZnRzIixuZnQpKX19LGFjdGlvbnMudXBkYXRlUHJvZHVjdE5hbWU9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e3Byb2R1Y3ROYW1lOnByb2R1Y3ROYW1lLHN5bWJvbDpzeW1ib2x9PXBheWxvYWQ7aWYoYXBpLmFzc2VydChzeW1ib2wmJiJzdHJpbmciPT10eXBlb2Ygc3ltYm9sJiZwcm9kdWN0TmFtZSYmInN0cmluZyI9PXR5cGVvZiBwcm9kdWN0TmFtZSwiaW52YWxpZCBwYXJhbXMiKSYmYXBpLmFzc2VydChhcGkudmFsaWRhdG9yLmlzQWxwaGFudW1lcmljKGFwaS52YWxpZGF0b3IuYmxhY2tsaXN0KHByb2R1Y3ROYW1lLCIgIikpJiZwcm9kdWN0TmFtZS5sZW5ndGg+MCYmcHJvZHVjdE5hbWUubGVuZ3RoPD01MCwiaW52YWxpZCBwcm9kdWN0IG5hbWU6IGxldHRlcnMsIG51bWJlcnMsIHdoaXRlc3BhY2VzIG9ubHksIG1heCBsZW5ndGggb2YgNTAiKSl7Y29uc3QgbmZ0PWF3YWl0IGFwaS5kYi5maW5kT25lKCJuZnRzIix7c3ltYm9sOnN5bWJvbH0pO25mdCYmYXBpLmFzc2VydChuZnQuaXNzdWVyPT09YXBpLnNlbmRlciwibXVzdCBiZSB0aGUgaXNzdWVyIikmJihuZnQucHJvZHVjdE5hbWU9cHJvZHVjdE5hbWUsYXdhaXQgYXBpLmRiLnVwZGF0ZSgibmZ0cyIsbmZ0KSl9fSxhY3Rpb25zLmFkZEF1dGhvcml6ZWRJc3N1aW5nQWNjb3VudHM9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e2FjY291bnRzOmFjY291bnRzLHN5bWJvbDpzeW1ib2wsaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX09cGF5bG9hZDtpZihhcGkuYXNzZXJ0KCEwPT09aXNTaWduZWRXaXRoQWN0aXZlS2V5LCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmYXBpLmFzc2VydChzeW1ib2wmJiJzdHJpbmciPT10eXBlb2Ygc3ltYm9sJiZhY2NvdW50cyYmIm9iamVjdCI9PXR5cGVvZiBhY2NvdW50cyYmQXJyYXkuaXNBcnJheShhY2NvdW50cyksImludmFsaWQgcGFyYW1zIikmJmFwaS5hc3NlcnQoYWNjb3VudHMubGVuZ3RoPD0xMCwiY2Fubm90IGhhdmUgbW9yZSB0aGFuIDEwIGF1dGhvcml6ZWQgaXNzdWluZyBhY2NvdW50cyIpKXtjb25zdCB2YWxpZENvbnRlbnRzPWlzVmFsaWRBY2NvdW50c0FycmF5KGFjY291bnRzKTtpZihhcGkuYXNzZXJ0KHZhbGlkQ29udGVudHMsImludmFsaWQgYWNjb3VudCBsaXN0Iikpe2NvbnN0IG5mdD1hd2FpdCBhcGkuZGIuZmluZE9uZSgibmZ0cyIse3N5bWJvbDpzeW1ib2x9KTtpZihuZnQpe2NvbnN0IHNhbml0aXplZExpc3Q9W107aWYoYWNjb3VudHMuZm9yRWFjaCgoYWNjb3VudD0+e2NvbnN0IGZpbmFsQWNjb3VudD1hY2NvdW50LnRyaW0oKS50b0xvd2VyQ2FzZSgpO2xldCBpc0R1cGxpY2F0ZT0hMTtmb3IobGV0IGk9MDtpPG5mdC5hdXRob3JpemVkSXNzdWluZ0FjY291bnRzLmxlbmd0aDtpKz0xKWlmKGZpbmFsQWNjb3VudD09PW5mdC5hdXRob3JpemVkSXNzdWluZ0FjY291bnRzW2ldKXtpc0R1cGxpY2F0ZT0hMDticmVha31pc0R1cGxpY2F0ZXx8c2FuaXRpemVkTGlzdC5wdXNoKGZpbmFsQWNjb3VudCl9KSksYXBpLmFzc2VydChuZnQuaXNzdWVyPT09YXBpLnNlbmRlciwibXVzdCBiZSB0aGUgaXNzdWVyIikmJmFwaS5hc3NlcnQoIWNvbnRhaW5zRHVwbGljYXRlcyhzYW5pdGl6ZWRMaXN0KSwiY2Fubm90IGFkZCB0aGUgc2FtZSBhY2NvdW50IHR3aWNlIikmJmFwaS5hc3NlcnQobmZ0LmF1dGhvcml6ZWRJc3N1aW5nQWNjb3VudHMubGVuZ3RoK3Nhbml0aXplZExpc3QubGVuZ3RoPD0xMCwiY2Fubm90IGhhdmUgbW9yZSB0aGFuIDEwIGF1dGhvcml6ZWQgaXNzdWluZyBhY2NvdW50cyIpKXtjb25zdCBmaW5hbEFjY291bnRMaXN0PW5mdC5hdXRob3JpemVkSXNzdWluZ0FjY291bnRzLmNvbmNhdChzYW5pdGl6ZWRMaXN0KTtuZnQuYXV0aG9yaXplZElzc3VpbmdBY2NvdW50cz1maW5hbEFjY291bnRMaXN0LGF3YWl0IGFwaS5kYi51cGRhdGUoIm5mdHMiLG5mdCl9fX19fSxhY3Rpb25zLmFkZEF1dGhvcml6ZWRJc3N1aW5nQ29udHJhY3RzPWFzeW5jIHBheWxvYWQ9Pntjb25zdHtjb250cmFjdHM6Y29udHJhY3RzLHN5bWJvbDpzeW1ib2wsaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX09cGF5bG9hZDtpZihhcGkuYXNzZXJ0KCEwPT09aXNTaWduZWRXaXRoQWN0aXZlS2V5LCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmYXBpLmFzc2VydChzeW1ib2wmJiJzdHJpbmciPT10eXBlb2Ygc3ltYm9sJiZjb250cmFjdHMmJiJvYmplY3QiPT10eXBlb2YgY29udHJhY3RzJiZBcnJheS5pc0FycmF5KGNvbnRyYWN0cyksImludmFsaWQgcGFyYW1zIikmJmFwaS5hc3NlcnQoY29udHJhY3RzLmxlbmd0aDw9MTAsImNhbm5vdCBoYXZlIG1vcmUgdGhhbiAxMCBhdXRob3JpemVkIGlzc3VpbmcgY29udHJhY3RzIikpe2NvbnN0IHZhbGlkQ29udGVudHM9aXNWYWxpZENvbnRyYWN0c0FycmF5KGNvbnRyYWN0cyk7aWYoYXBpLmFzc2VydCh2YWxpZENvbnRlbnRzLCJpbnZhbGlkIGNvbnRyYWN0IGxpc3QiKSl7Y29uc3QgbmZ0PWF3YWl0IGFwaS5kYi5maW5kT25lKCJuZnRzIix7c3ltYm9sOnN5bWJvbH0pO2lmKG5mdCl7Y29uc3Qgc2FuaXRpemVkTGlzdD1bXTtpZihjb250cmFjdHMuZm9yRWFjaCgoY29udHJhY3Q9Pntjb25zdCBmaW5hbENvbnRyYWN0PWNvbnRyYWN0LnRyaW0oKTtsZXQgaXNEdXBsaWNhdGU9ITE7Zm9yKGxldCBpPTA7aTxuZnQuYXV0aG9yaXplZElzc3VpbmdDb250cmFjdHMubGVuZ3RoO2krPTEpaWYoZmluYWxDb250cmFjdD09PW5mdC5hdXRob3JpemVkSXNzdWluZ0NvbnRyYWN0c1tpXSl7aXNEdXBsaWNhdGU9ITA7YnJlYWt9aXNEdXBsaWNhdGV8fHNhbml0aXplZExpc3QucHVzaChmaW5hbENvbnRyYWN0KX0pKSxhcGkuYXNzZXJ0KG5mdC5pc3N1ZXI9PT1hcGkuc2VuZGVyLCJtdXN0IGJlIHRoZSBpc3N1ZXIiKSYmYXBpLmFzc2VydCghY29udGFpbnNEdXBsaWNhdGVzKHNhbml0aXplZExpc3QpLCJjYW5ub3QgYWRkIHRoZSBzYW1lIGNvbnRyYWN0IHR3aWNlIikmJmFwaS5hc3NlcnQobmZ0LmF1dGhvcml6ZWRJc3N1aW5nQ29udHJhY3RzLmxlbmd0aCtzYW5pdGl6ZWRMaXN0Lmxlbmd0aDw9MTAsImNhbm5vdCBoYXZlIG1vcmUgdGhhbiAxMCBhdXRob3JpemVkIGlzc3VpbmcgY29udHJhY3RzIikpe2NvbnN0IGZpbmFsQ29udHJhY3RMaXN0PW5mdC5hdXRob3JpemVkSXNzdWluZ0NvbnRyYWN0cy5jb25jYXQoc2FuaXRpemVkTGlzdCk7bmZ0LmF1dGhvcml6ZWRJc3N1aW5nQ29udHJhY3RzPWZpbmFsQ29udHJhY3RMaXN0LGF3YWl0IGFwaS5kYi51cGRhdGUoIm5mdHMiLG5mdCl9fX19fSxhY3Rpb25zLnJlbW92ZUF1dGhvcml6ZWRJc3N1aW5nQWNjb3VudHM9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e2FjY291bnRzOmFjY291bnRzLHN5bWJvbDpzeW1ib2wsaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX09cGF5bG9hZDtpZihhcGkuYXNzZXJ0KCEwPT09aXNTaWduZWRXaXRoQWN0aXZlS2V5LCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmYXBpLmFzc2VydChzeW1ib2wmJiJzdHJpbmciPT10eXBlb2Ygc3ltYm9sJiZhY2NvdW50cyYmIm9iamVjdCI9PXR5cGVvZiBhY2NvdW50cyYmQXJyYXkuaXNBcnJheShhY2NvdW50cyksImludmFsaWQgcGFyYW1zIikmJmFwaS5hc3NlcnQoYWNjb3VudHMubGVuZ3RoPD0xMCwiY2Fubm90IHJlbW92ZSBtb3JlIHRoYW4gMTAgYXV0aG9yaXplZCBpc3N1aW5nIGFjY291bnRzIikpe2NvbnN0IHZhbGlkQ29udGVudHM9aXNWYWxpZEFjY291bnRzQXJyYXkoYWNjb3VudHMpO2lmKGFwaS5hc3NlcnQodmFsaWRDb250ZW50cywiaW52YWxpZCBhY2NvdW50IGxpc3QiKSl7Y29uc3QgbmZ0PWF3YWl0IGFwaS5kYi5maW5kT25lKCJuZnRzIix7c3ltYm9sOnN5bWJvbH0pO2lmKG5mdCYmYXBpLmFzc2VydChuZnQuaXNzdWVyPT09YXBpLnNlbmRlciwibXVzdCBiZSB0aGUgaXNzdWVyIikpe2NvbnN0IGZpbmFsQWNjb3VudExpc3Q9bmZ0LmF1dGhvcml6ZWRJc3N1aW5nQWNjb3VudHMuZmlsdGVyKChjdXJyZW50VmFsdWU9Pntmb3IobGV0IGk9MDtpPGFjY291bnRzLmxlbmd0aDtpKz0xKXtpZihjdXJyZW50VmFsdWU9PT1hY2NvdW50c1tpXS50cmltKCkudG9Mb3dlckNhc2UoKSlyZXR1cm4hMX1yZXR1cm4hMH0pKTtuZnQuYXV0aG9yaXplZElzc3VpbmdBY2NvdW50cz1maW5hbEFjY291bnRMaXN0LGF3YWl0IGFwaS5kYi51cGRhdGUoIm5mdHMiLG5mdCl9fX19LGFjdGlvbnMucmVtb3ZlQXV0aG9yaXplZElzc3VpbmdDb250cmFjdHM9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e2NvbnRyYWN0czpjb250cmFjdHMsc3ltYm9sOnN5bWJvbCxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fT1wYXlsb2FkO2lmKGFwaS5hc3NlcnQoITA9PT1pc1NpZ25lZFdpdGhBY3RpdmVLZXksInlvdSBtdXN0IHVzZSBhIGN1c3RvbV9qc29uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpJiZhcGkuYXNzZXJ0KHN5bWJvbCYmInN0cmluZyI9PXR5cGVvZiBzeW1ib2wmJmNvbnRyYWN0cyYmIm9iamVjdCI9PXR5cGVvZiBjb250cmFjdHMmJkFycmF5LmlzQXJyYXkoY29udHJhY3RzKSwiaW52YWxpZCBwYXJhbXMiKSYmYXBpLmFzc2VydChjb250cmFjdHMubGVuZ3RoPD0xMCwiY2Fubm90IHJlbW92ZSBtb3JlIHRoYW4gMTAgYXV0aG9yaXplZCBpc3N1aW5nIGNvbnRyYWN0cyIpKXtjb25zdCB2YWxpZENvbnRlbnRzPWlzVmFsaWRDb250cmFjdHNBcnJheShjb250cmFjdHMpO2lmKGFwaS5hc3NlcnQodmFsaWRDb250ZW50cywiaW52YWxpZCBjb250cmFjdCBsaXN0Iikpe2NvbnN0IG5mdD1hd2FpdCBhcGkuZGIuZmluZE9uZSgibmZ0cyIse3N5bWJvbDpzeW1ib2x9KTtpZihuZnQmJmFwaS5hc3NlcnQobmZ0Lmlzc3Vlcj09PWFwaS5zZW5kZXIsIm11c3QgYmUgdGhlIGlzc3VlciIpKXtjb25zdCBmaW5hbENvbnRyYWN0TGlzdD1uZnQuYXV0aG9yaXplZElzc3VpbmdDb250cmFjdHMuZmlsdGVyKChjdXJyZW50VmFsdWU9Pntmb3IobGV0IGk9MDtpPGNvbnRyYWN0cy5sZW5ndGg7aSs9MSl7aWYoY3VycmVudFZhbHVlPT09Y29udHJhY3RzW2ldLnRyaW0oKSlyZXR1cm4hMX1yZXR1cm4hMH0pKTtuZnQuYXV0aG9yaXplZElzc3VpbmdDb250cmFjdHM9ZmluYWxDb250cmFjdExpc3QsYXdhaXQgYXBpLmRiLnVwZGF0ZSgibmZ0cyIsbmZ0KX19fX0sYWN0aW9ucy50cmFuc2Zlck93bmVyc2hpcD1hc3luYyBwYXlsb2FkPT57Y29uc3R7c3ltYm9sOnN5bWJvbCx0bzp0byxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fT1wYXlsb2FkO2lmKGFwaS5hc3NlcnQoITA9PT1pc1NpZ25lZFdpdGhBY3RpdmVLZXksInlvdSBtdXN0IHVzZSBhIGN1c3RvbV9qc29uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpJiZhcGkuYXNzZXJ0KHN5bWJvbCYmInN0cmluZyI9PXR5cGVvZiBzeW1ib2wmJnRvJiYic3RyaW5nIj09dHlwZW9mIHRvLCJpbnZhbGlkIHBhcmFtcyIpKXtjb25zdCBuZnQ9YXdhaXQgYXBpLmRiLmZpbmRPbmUoIm5mdHMiLHtzeW1ib2w6c3ltYm9sfSk7aWYobmZ0JiZhcGkuYXNzZXJ0KG5mdC5pc3N1ZXI9PT1hcGkuc2VuZGVyLCJtdXN0IGJlIHRoZSBpc3N1ZXIiKSl7Y29uc3QgZmluYWxUbz10by50cmltKCkudG9Mb3dlckNhc2UoKTthcGkuYXNzZXJ0KGlzVmFsaWRIaXZlQWNjb3VudExlbmd0aChmaW5hbFRvKSwiaW52YWxpZCB0byIpJiYobmZ0Lmlzc3Vlcj1maW5hbFRvLGF3YWl0IGFwaS5kYi51cGRhdGUoIm5mdHMiLG5mdCkpfX19LGFjdGlvbnMuZW5hYmxlRGVsZWdhdGlvbj1hc3luYyBwYXlsb2FkPT57Y29uc3R7c3ltYm9sOnN5bWJvbCx1bmRlbGVnYXRpb25Db29sZG93bjp1bmRlbGVnYXRpb25Db29sZG93bixpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fT1wYXlsb2FkLHBhcmFtcz1hd2FpdCBhcGkuZGIuZmluZE9uZSgicGFyYW1zIix7fSkse2VuYWJsZURlbGVnYXRpb25GZWU6ZW5hYmxlRGVsZWdhdGlvbkZlZX09cGFyYW1zLHV0aWxpdHlUb2tlbkJhbGFuY2U9YXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJ0b2tlbnMiLCJiYWxhbmNlcyIse2FjY291bnQ6YXBpLnNlbmRlcixzeW1ib2w6VVRJTElUWV9UT0tFTl9TWU1CT0x9KSxhdXRob3JpemVkPSEhYXBpLkJpZ051bWJlcihlbmFibGVEZWxlZ2F0aW9uRmVlKS5sdGUoMCl8fHV0aWxpdHlUb2tlbkJhbGFuY2UmJmFwaS5CaWdOdW1iZXIodXRpbGl0eVRva2VuQmFsYW5jZS5iYWxhbmNlKS5ndGUoZW5hYmxlRGVsZWdhdGlvbkZlZSk7aWYoYXBpLmFzc2VydChhdXRob3JpemVkLCJ5b3UgbXVzdCBoYXZlIGVub3VnaCB0b2tlbnMgdG8gY292ZXIgZmVlcyIpJiZhcGkuYXNzZXJ0KCEwPT09aXNTaWduZWRXaXRoQWN0aXZlS2V5LCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmYXBpLmFzc2VydChzeW1ib2wmJiJzdHJpbmciPT10eXBlb2Ygc3ltYm9sLCJpbnZhbGlkIHN5bWJvbCIpJiZhcGkuYXNzZXJ0KHVuZGVsZWdhdGlvbkNvb2xkb3duJiZOdW1iZXIuaXNJbnRlZ2VyKHVuZGVsZWdhdGlvbkNvb2xkb3duKSYmdW5kZWxlZ2F0aW9uQ29vbGRvd24+MCYmdW5kZWxlZ2F0aW9uQ29vbGRvd248PTE4MjUwLCJ1bmRlbGVnYXRpb25Db29sZG93biBtdXN0IGJlIGFuIGludGVnZXIgYmV0d2VlbiAxIGFuZCAxODI1MCIpKXtjb25zdCBuZnQ9YXdhaXQgYXBpLmRiLmZpbmRPbmUoIm5mdHMiLHtzeW1ib2w6c3ltYm9sfSk7aWYoYXBpLmFzc2VydChudWxsIT09bmZ0LCJzeW1ib2wgZG9lcyBub3QgZXhpc3QiKSYmYXBpLmFzc2VydChuZnQuaXNzdWVyPT09YXBpLnNlbmRlciwibXVzdCBiZSB0aGUgaXNzdWVyIikmJmFwaS5hc3NlcnQodm9pZCAwPT09bmZ0LmRlbGVnYXRpb25FbmFibGVkfHwhMT09PW5mdC5kZWxlZ2F0aW9uRW5hYmxlZCwiZGVsZWdhdGlvbiBhbHJlYWR5IGVuYWJsZWQiKSl7aWYoYXBpLkJpZ051bWJlcihlbmFibGVEZWxlZ2F0aW9uRmVlKS5ndCgwKSl7Y29uc3QgcmVzPWF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgidG9rZW5zIiwidHJhbnNmZXIiLHt0bzoibnVsbCIsc3ltYm9sOlVUSUxJVFlfVE9LRU5fU1lNQk9MLHF1YW50aXR5OmVuYWJsZURlbGVnYXRpb25GZWUsaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX0pO2lmKCFpc1Rva2VuVHJhbnNmZXJWZXJpZmllZChyZXMsYXBpLnNlbmRlciwibnVsbCIsVVRJTElUWV9UT0tFTl9TWU1CT0wsZW5hYmxlRGVsZWdhdGlvbkZlZSwidHJhbnNmZXIiKSlyZXR1cm4hMX1yZXR1cm4gbmZ0LmRlbGVnYXRpb25FbmFibGVkPSEwLG5mdC51bmRlbGVnYXRpb25Db29sZG93bj11bmRlbGVnYXRpb25Db29sZG93bixhd2FpdCBhcGkuZGIudXBkYXRlKCJuZnRzIixuZnQpLCEwfX1yZXR1cm4hMX0sYWN0aW9ucy51cGRhdGVQcm9wZXJ0eURlZmluaXRpb249YXN5bmMgcGF5bG9hZD0+e2NvbnN0e3N5bWJvbDpzeW1ib2wsbmFtZTpuYW1lLG5ld05hbWU6bmV3TmFtZSx0eXBlOnR5cGUsaXNSZWFkT25seTppc1JlYWRPbmx5LGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9PXBheWxvYWQ7aWYoYXBpLmFzc2VydCghMD09PWlzU2lnbmVkV2l0aEFjdGl2ZUtleSwieW91IG11c3QgdXNlIGEgY3VzdG9tX2pzb24gc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5IikmJmFwaS5hc3NlcnQoc3ltYm9sJiYic3RyaW5nIj09dHlwZW9mIHN5bWJvbCYmbmFtZSYmInN0cmluZyI9PXR5cGVvZiBuYW1lLCJpbnZhbGlkIHBhcmFtcyIpJiZhcGkuYXNzZXJ0KGFwaS52YWxpZGF0b3IuaXNBbHBoYW51bWVyaWMobmFtZSkmJm5hbWUubGVuZ3RoPjAmJm5hbWUubGVuZ3RoPD0yNSwiaW52YWxpZCBuYW1lOiBsZXR0ZXJzICYgbnVtYmVycyBvbmx5LCBtYXggbGVuZ3RoIG9mIDI1IikmJmFwaS5hc3NlcnQodm9pZCAwPT09bmV3TmFtZXx8InN0cmluZyI9PXR5cGVvZiBuZXdOYW1lJiZhcGkudmFsaWRhdG9yLmlzQWxwaGFudW1lcmljKG5ld05hbWUpJiZuZXdOYW1lLmxlbmd0aD4wJiZuZXdOYW1lLmxlbmd0aDw9MjUsImludmFsaWQgbmV3IG5hbWU6IGxldHRlcnMgJiBudW1iZXJzIG9ubHksIG1heCBsZW5ndGggb2YgMjUiKSYmYXBpLmFzc2VydCh2b2lkIDA9PT10eXBlfHwic3RyaW5nIj09dHlwZW9mIHR5cGUmJigibnVtYmVyIj09PXR5cGV8fCJzdHJpbmciPT09dHlwZXx8ImJvb2xlYW4iPT09dHlwZSksImludmFsaWQgdHlwZTogbXVzdCBiZSBudW1iZXIsIHN0cmluZywgb3IgYm9vbGVhbiIpJiZhcGkuYXNzZXJ0KHZvaWQgMD09PWlzUmVhZE9ubHl8fCJib29sZWFuIj09dHlwZW9mIGlzUmVhZE9ubHksImludmFsaWQgaXNSZWFkT25seTogbXVzdCBiZSB0cnVlIG9yIGZhbHNlIikpe2NvbnN0IG5mdD1hd2FpdCBhcGkuZGIuZmluZE9uZSgibmZ0cyIse3N5bWJvbDpzeW1ib2x9KTtpZihuZnQmJmFwaS5hc3NlcnQoMD09PW5mdC5zdXBwbHksImNhbm5vdCBjaGFuZ2UgZGF0YSBwcm9wZXJ0eSBkZWZpbml0aW9uOyB0b2tlbnMgYWxyZWFkeSBpc3N1ZWQiKSYmYXBpLmFzc2VydChuYW1lIGluIG5mdC5wcm9wZXJ0aWVzLCJwcm9wZXJ0eSBtdXN0IGV4aXN0IikmJmFwaS5hc3NlcnQobmZ0Lmlzc3Vlcj09PWFwaS5zZW5kZXIsIm11c3QgYmUgdGhlIGlzc3VlciIpKXtpZih2b2lkIDAhPT1uZXdOYW1lKXtpZih2b2lkIDAhPT1uZnQuZ3JvdXBCeSYmbmZ0Lmdyb3VwQnkubGVuZ3RoPjAmJiFhcGkuYXNzZXJ0KCFuZnQuZ3JvdXBCeS5pbmNsdWRlcyhuYW1lKSwiY2Fubm90IGNoYW5nZSBkYXRhIHByb3BlcnR5IG5hbWU7IHByb3BlcnR5IGlzIHBhcnQgb2YgZ3JvdXBCeSIpKXJldHVybiExO2lmKCFhcGkuYXNzZXJ0KG5ld05hbWUhPT1uYW1lLCJuZXcgbmFtZSBtdXN0IGJlIGRpZmZlcmVudCBmcm9tIG9sZCBuYW1lIil8fCFhcGkuYXNzZXJ0KCEobmV3TmFtZSBpbiBuZnQucHJvcGVydGllcyksInRoZXJlIGlzIGFscmVhZHkgYSBkYXRhIHByb3BlcnR5IHdpdGggdGhlIGdpdmVuIG5ldyBuYW1lIikpcmV0dXJuITF9bGV0IHNob3VsZFVwZGF0ZT0hMTtjb25zdCBvcmlnaW5hbFR5cGU9bmZ0LnByb3BlcnRpZXNbbmFtZV0udHlwZSxvcmlnaW5hbElzUmVhZE9ubHk9bmZ0LnByb3BlcnRpZXNbbmFtZV0uaXNSZWFkT25seTtyZXR1cm4gdm9pZCAwIT09dHlwZSYmdHlwZSE9PW9yaWdpbmFsVHlwZSYmKG5mdC5wcm9wZXJ0aWVzW25hbWVdLnR5cGU9dHlwZSxzaG91bGRVcGRhdGU9ITApLHZvaWQgMCE9PWlzUmVhZE9ubHkmJmlzUmVhZE9ubHkhPT1vcmlnaW5hbElzUmVhZE9ubHkmJihuZnQucHJvcGVydGllc1tuYW1lXS5pc1JlYWRPbmx5PWlzUmVhZE9ubHksc2hvdWxkVXBkYXRlPSEwKSx2b2lkIDAhPT1uZXdOYW1lJiZuZXdOYW1lIT09bmFtZSYmKG5mdC5wcm9wZXJ0aWVzW25ld05hbWVdPW5mdC5wcm9wZXJ0aWVzW25hbWVdLGRlbGV0ZSBuZnQucHJvcGVydGllc1tuYW1lXSxzaG91bGRVcGRhdGU9ITApLHNob3VsZFVwZGF0ZSYmKGF3YWl0IGFwaS5kYi51cGRhdGUoIm5mdHMiLG5mdCksYXBpLmVtaXQoInVwZGF0ZVByb3BlcnR5RGVmaW5pdGlvbiIse3N5bWJvbDpzeW1ib2wsb3JpZ2luYWxOYW1lOm5hbWUsb3JpZ2luYWxUeXBlOm9yaWdpbmFsVHlwZSxvcmlnaW5hbElzUmVhZE9ubHk6b3JpZ2luYWxJc1JlYWRPbmx5LG5ld05hbWU6bmV3TmFtZSxuZXdUeXBlOnR5cGUsbmV3SXNSZWFkT25seTppc1JlYWRPbmx5fSkpLCEwfX1yZXR1cm4hMX0sYWN0aW9ucy5hZGRQcm9wZXJ0eT1hc3luYyBwYXlsb2FkPT57Y29uc3R7c3ltYm9sOnN5bWJvbCxuYW1lOm5hbWUsdHlwZTp0eXBlLGlzUmVhZE9ubHk6aXNSZWFkT25seSxhdXRob3JpemVkRWRpdGluZ0FjY291bnRzOmF1dGhvcml6ZWRFZGl0aW5nQWNjb3VudHMsYXV0aG9yaXplZEVkaXRpbmdDb250cmFjdHM6YXV0aG9yaXplZEVkaXRpbmdDb250cmFjdHMsaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX09cGF5bG9hZCxwYXJhbXM9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInBhcmFtcyIse30pLHtkYXRhUHJvcGVydHlDcmVhdGlvbkZlZTpkYXRhUHJvcGVydHlDcmVhdGlvbkZlZX09cGFyYW1zO2lmKGFwaS5hc3NlcnQoITA9PT1pc1NpZ25lZFdpdGhBY3RpdmVLZXksInlvdSBtdXN0IHVzZSBhIGN1c3RvbV9qc29uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpJiZhcGkuYXNzZXJ0KHN5bWJvbCYmInN0cmluZyI9PXR5cGVvZiBzeW1ib2wmJm5hbWUmJiJzdHJpbmciPT10eXBlb2YgbmFtZSYmKHZvaWQgMD09PWlzUmVhZE9ubHl8fCJib29sZWFuIj09dHlwZW9mIGlzUmVhZE9ubHkpJiYodm9pZCAwPT09YXV0aG9yaXplZEVkaXRpbmdBY2NvdW50c3x8YXV0aG9yaXplZEVkaXRpbmdBY2NvdW50cyYmIm9iamVjdCI9PXR5cGVvZiBhdXRob3JpemVkRWRpdGluZ0FjY291bnRzJiZBcnJheS5pc0FycmF5KGF1dGhvcml6ZWRFZGl0aW5nQWNjb3VudHMpKSYmKHZvaWQgMD09PWF1dGhvcml6ZWRFZGl0aW5nQ29udHJhY3RzfHxhdXRob3JpemVkRWRpdGluZ0NvbnRyYWN0cyYmIm9iamVjdCI9PXR5cGVvZiBhdXRob3JpemVkRWRpdGluZ0NvbnRyYWN0cyYmQXJyYXkuaXNBcnJheShhdXRob3JpemVkRWRpdGluZ0NvbnRyYWN0cykpJiZ0eXBlJiYic3RyaW5nIj09dHlwZW9mIHR5cGUsImludmFsaWQgcGFyYW1zIikmJmFwaS5hc3NlcnQoYXBpLnZhbGlkYXRvci5pc0FscGhhbnVtZXJpYyhuYW1lKSYmbmFtZS5sZW5ndGg+MCYmbmFtZS5sZW5ndGg8PTI1LCJpbnZhbGlkIG5hbWU6IGxldHRlcnMgJiBudW1iZXJzIG9ubHksIG1heCBsZW5ndGggb2YgMjUiKSYmYXBpLmFzc2VydCgibnVtYmVyIj09PXR5cGV8fCJzdHJpbmciPT09dHlwZXx8ImJvb2xlYW4iPT09dHlwZSwiaW52YWxpZCB0eXBlOiBtdXN0IGJlIG51bWJlciwgc3RyaW5nLCBvciBib29sZWFuIikpe2NvbnN0IG5mdD1hd2FpdCBhcGkuZGIuZmluZE9uZSgibmZ0cyIse3N5bWJvbDpzeW1ib2x9KTtpZihuZnQmJmFwaS5hc3NlcnQoIShuYW1lIGluIG5mdC5wcm9wZXJ0aWVzKSwiY2Fubm90IGFkZCB0aGUgc2FtZSBwcm9wZXJ0eSB0d2ljZSIpJiZhcGkuYXNzZXJ0KG5mdC5pc3N1ZXI9PT1hcGkuc2VuZGVyLCJtdXN0IGJlIHRoZSBpc3N1ZXIiKSl7aWYoT2JqZWN0LmtleXMobmZ0LnByb3BlcnRpZXMpLmxlbmd0aD49Myl7Y29uc3QgdXRpbGl0eVRva2VuQmFsYW5jZT1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoInRva2VucyIsImJhbGFuY2VzIix7YWNjb3VudDphcGkuc2VuZGVyLHN5bWJvbDpVVElMSVRZX1RPS0VOX1NZTUJPTH0pLGF1dGhvcml6ZWRDcmVhdGlvbj0hIWFwaS5CaWdOdW1iZXIoZGF0YVByb3BlcnR5Q3JlYXRpb25GZWUpLmx0ZSgwKXx8dXRpbGl0eVRva2VuQmFsYW5jZSYmYXBpLkJpZ051bWJlcih1dGlsaXR5VG9rZW5CYWxhbmNlLmJhbGFuY2UpLmd0ZShkYXRhUHJvcGVydHlDcmVhdGlvbkZlZSk7aWYoIWFwaS5hc3NlcnQoYXV0aG9yaXplZENyZWF0aW9uLCJ5b3UgbXVzdCBoYXZlIGVub3VnaCB0b2tlbnMgdG8gY292ZXIgdGhlIGNyZWF0aW9uIGZlZXMiKSlyZXR1cm4hMTtpZihhcGkuQmlnTnVtYmVyKGRhdGFQcm9wZXJ0eUNyZWF0aW9uRmVlKS5ndCgwKSl7Y29uc3QgcmVzPWF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgidG9rZW5zIiwidHJhbnNmZXIiLHt0bzoibnVsbCIsc3ltYm9sOlVUSUxJVFlfVE9LRU5fU1lNQk9MLHF1YW50aXR5OmRhdGFQcm9wZXJ0eUNyZWF0aW9uRmVlLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9KTtpZighaXNUb2tlblRyYW5zZmVyVmVyaWZpZWQocmVzLGFwaS5zZW5kZXIsIm51bGwiLFVUSUxJVFlfVE9LRU5fU1lNQk9MLGRhdGFQcm9wZXJ0eUNyZWF0aW9uRmVlLCJ0cmFuc2ZlciIpKXJldHVybiExfX1jb25zdCBuZXdQcm9wZXJ0eT17dHlwZTp0eXBlLGlzUmVhZE9ubHk6dm9pZCAwIT09aXNSZWFkT25seSYmaXNSZWFkT25seSxhdXRob3JpemVkRWRpdGluZ0FjY291bnRzOnZvaWQgMD09PWF1dGhvcml6ZWRFZGl0aW5nQWNjb3VudHM/W2FwaS5zZW5kZXJdOltdLGF1dGhvcml6ZWRFZGl0aW5nQ29udHJhY3RzOltdfTtyZXR1cm4gbmZ0LnByb3BlcnRpZXNbbmFtZV09bmV3UHJvcGVydHksYXdhaXQgYXBpLmRiLnVwZGF0ZSgibmZ0cyIsbmZ0KSwoYXV0aG9yaXplZEVkaXRpbmdBY2NvdW50c3x8YXV0aG9yaXplZEVkaXRpbmdDb250cmFjdHMpJiZhd2FpdCBhY3Rpb25zLnNldFByb3BlcnR5UGVybWlzc2lvbnMoe3N5bWJvbDpzeW1ib2wsbmFtZTpuYW1lLGFjY291bnRzOmF1dGhvcml6ZWRFZGl0aW5nQWNjb3VudHMsY29udHJhY3RzOmF1dGhvcml6ZWRFZGl0aW5nQ29udHJhY3RzLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9KSwhMH19cmV0dXJuITF9LGFjdGlvbnMuc2V0UHJvcGVydHlQZXJtaXNzaW9ucz1hc3luYyBwYXlsb2FkPT57Y29uc3R7c3ltYm9sOnN5bWJvbCxuYW1lOm5hbWUsYWNjb3VudHM6YWNjb3VudHMsY29udHJhY3RzOmNvbnRyYWN0cyxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fT1wYXlsb2FkO2lmKGFwaS5hc3NlcnQoITA9PT1pc1NpZ25lZFdpdGhBY3RpdmVLZXksInlvdSBtdXN0IHVzZSBhIGN1c3RvbV9qc29uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpJiZhcGkuYXNzZXJ0KHN5bWJvbCYmInN0cmluZyI9PXR5cGVvZiBzeW1ib2wmJm5hbWUmJiJzdHJpbmciPT10eXBlb2YgbmFtZSYmKHZvaWQgMD09PWFjY291bnRzfHxhY2NvdW50cyYmIm9iamVjdCI9PXR5cGVvZiBhY2NvdW50cyYmQXJyYXkuaXNBcnJheShhY2NvdW50cykpJiYodm9pZCAwPT09Y29udHJhY3RzfHxjb250cmFjdHMmJiJvYmplY3QiPT10eXBlb2YgY29udHJhY3RzJiZBcnJheS5pc0FycmF5KGNvbnRyYWN0cykpLCJpbnZhbGlkIHBhcmFtcyIpJiZhcGkuYXNzZXJ0KGFwaS52YWxpZGF0b3IuaXNBbHBoYW51bWVyaWMobmFtZSkmJm5hbWUubGVuZ3RoPjAmJm5hbWUubGVuZ3RoPD0yNSwiaW52YWxpZCBuYW1lOiBsZXR0ZXJzICYgbnVtYmVycyBvbmx5LCBtYXggbGVuZ3RoIG9mIDI1IikmJmFwaS5hc3NlcnQodm9pZCAwPT09YWNjb3VudHN8fGFjY291bnRzLmxlbmd0aDw9MTAsImNhbm5vdCBoYXZlIG1vcmUgdGhhbiAxMCBhdXRob3JpemVkIGFjY291bnRzIikmJmFwaS5hc3NlcnQodm9pZCAwPT09Y29udHJhY3RzfHxjb250cmFjdHMubGVuZ3RoPD0xMCwiY2Fubm90IGhhdmUgbW9yZSB0aGFuIDEwIGF1dGhvcml6ZWQgY29udHJhY3RzIikmJmFwaS5hc3NlcnQodm9pZCAwPT09YWNjb3VudHN8fGlzVmFsaWRBY2NvdW50c0FycmF5KGFjY291bnRzKSwiaW52YWxpZCBhY2NvdW50IGxpc3QiKSYmYXBpLmFzc2VydCh2b2lkIDA9PT1jb250cmFjdHN8fGlzVmFsaWRDb250cmFjdHNBcnJheShjb250cmFjdHMpLCJpbnZhbGlkIGNvbnRyYWN0IGxpc3QiKSl7Y29uc3QgbmZ0PWF3YWl0IGFwaS5kYi5maW5kT25lKCJuZnRzIix7c3ltYm9sOnN5bWJvbH0pO2lmKG5mdCYmYXBpLmFzc2VydChuYW1lIGluIG5mdC5wcm9wZXJ0aWVzLCJwcm9wZXJ0eSBtdXN0IGV4aXN0IikmJmFwaS5hc3NlcnQobmZ0Lmlzc3Vlcj09PWFwaS5zZW5kZXIsIm11c3QgYmUgdGhlIGlzc3VlciIpKXtsZXQgc2FuaXRpemVkQWNjb3VudExpc3Q9W10sc2FuaXRpemVkQ29udHJhY3RMaXN0PVtdO2lmKGFjY291bnRzJiYoc2FuaXRpemVkQWNjb3VudExpc3Q9YWNjb3VudHMubWFwKChhY2NvdW50PT5hY2NvdW50LnRyaW0oKS50b0xvd2VyQ2FzZSgpKSkpLGNvbnRyYWN0cyYmKHNhbml0aXplZENvbnRyYWN0TGlzdD1jb250cmFjdHMubWFwKChjb250cmFjdD0+Y29udHJhY3QudHJpbSgpKSkpLGFwaS5hc3NlcnQodm9pZCAwPT09YWNjb3VudHN8fCFjb250YWluc0R1cGxpY2F0ZXMoc2FuaXRpemVkQWNjb3VudExpc3QpLCJjYW5ub3QgYWRkIHRoZSBzYW1lIGFjY291bnQgdHdpY2UiKSYmYXBpLmFzc2VydCh2b2lkIDA9PT1jb250cmFjdHN8fCFjb250YWluc0R1cGxpY2F0ZXMoc2FuaXRpemVkQ29udHJhY3RMaXN0KSwiY2Fubm90IGFkZCB0aGUgc2FtZSBjb250cmFjdCB0d2ljZSIpKXtsZXQgc2hvdWxkVXBkYXRlPSExO2FjY291bnRzJiYobmZ0LnByb3BlcnRpZXNbbmFtZV0uYXV0aG9yaXplZEVkaXRpbmdBY2NvdW50cz1zYW5pdGl6ZWRBY2NvdW50TGlzdCxzaG91bGRVcGRhdGU9ITApLGNvbnRyYWN0cyYmKG5mdC5wcm9wZXJ0aWVzW25hbWVdLmF1dGhvcml6ZWRFZGl0aW5nQ29udHJhY3RzPXNhbml0aXplZENvbnRyYWN0TGlzdCxzaG91bGRVcGRhdGU9ITApLHNob3VsZFVwZGF0ZSYmYXdhaXQgYXBpLmRiLnVwZGF0ZSgibmZ0cyIsbmZ0KX19fX0sYWN0aW9ucy5zZXRHcm91cEJ5PWFzeW5jIHBheWxvYWQ9Pntjb25zdHtzeW1ib2w6c3ltYm9sLHByb3BlcnRpZXM6cHJvcGVydGllcyxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fT1wYXlsb2FkO2lmKGFwaS5hc3NlcnQoITA9PT1pc1NpZ25lZFdpdGhBY3RpdmVLZXksInlvdSBtdXN0IHVzZSBhIGN1c3RvbV9qc29uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpJiZhcGkuYXNzZXJ0KHN5bWJvbCYmInN0cmluZyI9PXR5cGVvZiBzeW1ib2wmJnByb3BlcnRpZXMmJiJvYmplY3QiPT10eXBlb2YgcHJvcGVydGllcyYmQXJyYXkuaXNBcnJheShwcm9wZXJ0aWVzKSwiaW52YWxpZCBwYXJhbXMiKSl7Y29uc3QgbmZ0PWF3YWl0IGFwaS5kYi5maW5kT25lKCJuZnRzIix7c3ltYm9sOnN5bWJvbH0pO2lmKG5mdCl7Y29uc3QgbmZ0UHJvcGVydHlDb3VudD1PYmplY3Qua2V5cyhuZnQucHJvcGVydGllcykubGVuZ3RoO2lmKGFwaS5hc3NlcnQobmZ0Lmlzc3Vlcj09PWFwaS5zZW5kZXIsIm11c3QgYmUgdGhlIGlzc3VlciIpJiZhcGkuYXNzZXJ0KHZvaWQgMD09PW5mdC5ncm91cEJ5fHwwPT09bmZ0Lmdyb3VwQnkubGVuZ3RoLCJsaXN0IGlzIGFscmVhZHkgc2V0IikmJmFwaS5hc3NlcnQocHJvcGVydGllcy5sZW5ndGg8PW5mdFByb3BlcnR5Q291bnQsImNhbm5vdCBzZXQgbW9yZSBkYXRhIHByb3BlcnRpZXMgdGhhbiBORlQgaGFzIikmJmFwaS5hc3NlcnQoIWNvbnRhaW5zRHVwbGljYXRlcyhwcm9wZXJ0aWVzKSwibGlzdCBjYW5ub3QgY29udGFpbiBkdXBsaWNhdGVzIikpe2ZvcihsZXQgaT0wO2k8cHJvcGVydGllcy5sZW5ndGg7aSs9MSl7Y29uc3QgbmFtZT1wcm9wZXJ0aWVzW2ldO2lmKCFhcGkuYXNzZXJ0KG5hbWUmJiJzdHJpbmciPT10eXBlb2YgbmFtZSYmbmFtZSBpbiBuZnQucHJvcGVydGllcywiZGF0YSBwcm9wZXJ0eSBtdXN0IGV4aXN0IikpcmV0dXJuITF9cmV0dXJuIG5mdC5ncm91cEJ5PXByb3BlcnRpZXMsYXdhaXQgYXBpLmRiLnVwZGF0ZSgibmZ0cyIsbmZ0KSwhMH19fXJldHVybiExfSxhY3Rpb25zLnNldFByb3BlcnRpZXM9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e3N5bWJvbDpzeW1ib2wsZnJvbVR5cGU6ZnJvbVR5cGUsbmZ0czpuZnRzLGNhbGxpbmdDb250cmFjdEluZm86Y2FsbGluZ0NvbnRyYWN0SW5mb309cGF5bG9hZCxmaW5hbEZyb21UeXBlPXZvaWQgMD09PWZyb21UeXBlPyJ1c2VyIjpmcm9tVHlwZTtpZihhcGkuYXNzZXJ0KG5mdHMmJiJvYmplY3QiPT10eXBlb2YgbmZ0cyYmQXJyYXkuaXNBcnJheShuZnRzKSYmZmluYWxGcm9tVHlwZSYmInN0cmluZyI9PXR5cGVvZiBmaW5hbEZyb21UeXBlJiZbInVzZXIiLCJjb250cmFjdCJdLmluY2x1ZGVzKGZpbmFsRnJvbVR5cGUpJiZzeW1ib2wmJiJzdHJpbmciPT10eXBlb2Ygc3ltYm9sJiYoY2FsbGluZ0NvbnRyYWN0SW5mb3x8dm9pZCAwPT09Y2FsbGluZ0NvbnRyYWN0SW5mbyYmInVzZXIiPT09ZmluYWxGcm9tVHlwZSksImludmFsaWQgcGFyYW1zIikmJmFwaS5hc3NlcnQobmZ0cy5sZW5ndGg8PTUwLCJjYW5ub3Qgc2V0IHByb3BlcnRpZXMgb24gbW9yZSB0aGFuIDUwIE5GVCBpbnN0YW5jZXMgYXQgb25jZSIpKXtjb25zdCBmaW5hbEZyb209InVzZXIiPT09ZmluYWxGcm9tVHlwZT9hcGkuc2VuZGVyOmNhbGxpbmdDb250cmFjdEluZm8ubmFtZSxuZnQ9YXdhaXQgYXBpLmRiLmZpbmRPbmUoIm5mdHMiLHtzeW1ib2w6c3ltYm9sfSk7aWYoYXBpLmFzc2VydChudWxsIT09bmZ0LCJzeW1ib2wgZG9lcyBub3QgZXhpc3QiKSl7aWYoIWlzVmFsaWREYXRhUHJvcGVydGllc0FycmF5KGZpbmFsRnJvbSxmaW5hbEZyb21UeXBlLG5mdCxuZnRzKSlyZXR1cm4hMTtjb25zdCBpbnN0YW5jZVRhYmxlTmFtZT1zeW1ib2wrImluc3RhbmNlcyI7Zm9yKGxldCBpPTA7aTxuZnRzLmxlbmd0aDtpKz0xKXtjb25zdHtpZDppZCxwcm9wZXJ0aWVzOnByb3BlcnRpZXN9PW5mdHNbaV07aWYoMD09PU9iamVjdC5rZXlzKHByb3BlcnRpZXMpLmxlbmd0aCljb250aW51ZTtjb25zdCBuZnRJbnN0YW5jZT1hd2FpdCBhcGkuZGIuZmluZE9uZShpbnN0YW5jZVRhYmxlTmFtZSx7X2lkOmFwaS5CaWdOdW1iZXIoaWQpLnRvTnVtYmVyKCl9KTtpZihhcGkuYXNzZXJ0KG51bGwhPT1uZnRJbnN0YW5jZSwibmZ0IGluc3RhbmNlIGRvZXMgbm90IGV4aXN0Iikpe2xldCBzaG91bGRVcGRhdGU9ITE7Zm9yKGNvbnN0W25hbWUsZGF0YV1vZiBPYmplY3QuZW50cmllcyhwcm9wZXJ0aWVzKSl7bGV0IG9sZFByb3BlcnR5PW51bGw7bmZ0LnByb3BlcnRpZXNbbmFtZV0uaXNSZWFkT25seT9hcGkuYXNzZXJ0KCEobmFtZSBpbiBuZnRJbnN0YW5jZS5wcm9wZXJ0aWVzKSwiY2Fubm90IGVkaXQgcmVhZC1vbmx5IHByb3BlcnRpZXMiKSYmKG5mdEluc3RhbmNlLnByb3BlcnRpZXNbbmFtZV09ZGF0YSxzaG91bGRVcGRhdGU9ITApOihvbGRQcm9wZXJ0eT1uZnRJbnN0YW5jZS5wcm9wZXJ0aWVzW25hbWVdLG5mdEluc3RhbmNlLnByb3BlcnRpZXNbbmFtZV09ZGF0YSxzaG91bGRVcGRhdGU9ITApLHNob3VsZFVwZGF0ZSYmb2xkUHJvcGVydHkhPT1kYXRhJiZhd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoIm1pbmluZyIsImhhbmRsZU5mdFNldFByb3BlcnR5Iix7c3ltYm9sOnN5bWJvbCxuZnQ6bmZ0SW5zdGFuY2UscHJvcGVydHlOYW1lOm5hbWUsb2xkVmFsdWU6b2xkUHJvcGVydHl9KX1zaG91bGRVcGRhdGUmJmF3YWl0IGFwaS5kYi51cGRhdGUoaW5zdGFuY2VUYWJsZU5hbWUsbmZ0SW5zdGFuY2UpfX1yZXR1cm4hMH19cmV0dXJuITF9LGFjdGlvbnMuYnVybj1hc3luYyBwYXlsb2FkPT57Y29uc3R7ZnJvbVR5cGU6ZnJvbVR5cGUsbmZ0czpuZnRzLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXksY2FsbGluZ0NvbnRyYWN0SW5mbzpjYWxsaW5nQ29udHJhY3RJbmZvfT1wYXlsb2FkLGZpbmFsRnJvbVR5cGU9dm9pZCAwPT09ZnJvbVR5cGU/InVzZXIiOmZyb21UeXBlO2lmKGFwaS5hc3NlcnQoITA9PT1pc1NpZ25lZFdpdGhBY3RpdmVLZXksInlvdSBtdXN0IHVzZSBhIGN1c3RvbV9qc29uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpJiZhcGkuYXNzZXJ0KGZpbmFsRnJvbVR5cGUmJiJzdHJpbmciPT10eXBlb2YgZmluYWxGcm9tVHlwZSYmWyJ1c2VyIiwiY29udHJhY3QiXS5pbmNsdWRlcyhmaW5hbEZyb21UeXBlKSYmKGNhbGxpbmdDb250cmFjdEluZm98fHZvaWQgMD09PWNhbGxpbmdDb250cmFjdEluZm8mJiJ1c2VyIj09PWZpbmFsRnJvbVR5cGUpJiZuZnRzJiYib2JqZWN0Ij09dHlwZW9mIG5mdHMmJkFycmF5LmlzQXJyYXkobmZ0cyksImludmFsaWQgcGFyYW1zIikmJmlzVmFsaWROZnRJZEFycmF5KG5mdHMpKXtjb25zdCBmaW5hbEZyb209InVzZXIiPT09ZmluYWxGcm9tVHlwZT9hcGkuc2VuZGVyOmNhbGxpbmdDb250cmFjdEluZm8ubmFtZTtsZXQgY29udGFpbmVyQ291bnQ9MCx0b2tlbkNvdW50PTAsaXNGaXJzdEluc3RhbmNlQ29udGFpbmVyPSExO2ZvcihsZXQgaT0wO2k8bmZ0cy5sZW5ndGg7aSs9MSl7Y29uc3R7c3ltYm9sOnN5bWJvbCxpZHM6aWRzfT1uZnRzW2ldLG5mdD1hd2FpdCBhcGkuZGIuZmluZE9uZSgibmZ0cyIse3N5bWJvbDpzeW1ib2x9KTtpZihuZnQpe2NvbnN0IGluc3RhbmNlVGFibGVOYW1lPXN5bWJvbCsiaW5zdGFuY2VzIjtmb3IobGV0IGo9MDtqPGlkcy5sZW5ndGg7ais9MSl7Y29uc3QgaWQ9aWRzW2pdLG5mdEluc3RhbmNlPWF3YWl0IGFwaS5kYi5maW5kT25lKGluc3RhbmNlVGFibGVOYW1lLHtfaWQ6YXBpLkJpZ051bWJlcihpZCkudG9OdW1iZXIoKX0pO2lmKG5mdEluc3RhbmNlKXtsZXQgaXNCdXJuQXV0aG9yaXplZD0hMDtpZihuZnRJbnN0YW5jZS5sb2NrZWROZnRzJiZuZnRJbnN0YW5jZS5sb2NrZWROZnRzLmxlbmd0aD4wPygwPT09dG9rZW5Db3VudCYmKGlzRmlyc3RJbnN0YW5jZUNvbnRhaW5lcj0hMCksY29udGFpbmVyQ291bnQrPTEsKGNvbnRhaW5lckNvdW50PjF8fCFpc0ZpcnN0SW5zdGFuY2VDb250YWluZXIpJiYoaXNCdXJuQXV0aG9yaXplZD0hMSkpOmlzRmlyc3RJbnN0YW5jZUNvbnRhaW5lciYmKGlzQnVybkF1dGhvcml6ZWQ9ITEpLHRva2VuQ291bnQrPTEsbmZ0SW5zdGFuY2UuYWNjb3VudD09PWZpbmFsRnJvbSYmKCJ1Ij09PW5mdEluc3RhbmNlLm93bmVkQnkmJiJ1c2VyIj09PWZpbmFsRnJvbVR5cGV8fCJjIj09PW5mdEluc3RhbmNlLm93bmVkQnkmJiJjb250cmFjdCI9PT1maW5hbEZyb21UeXBlKSYmdm9pZCAwPT09bmZ0SW5zdGFuY2UuZGVsZWdhdGVkVG8mJmlzQnVybkF1dGhvcml6ZWQpe2NvbnN0IGZpbmFsTG9ja1Rva2Vucz17fTtsZXQgaXNUcmFuc2ZlclN1Y2Nlc3M9ITA7Zm9yKGNvbnN0W2xvY2tzeW1ib2wscXVhbnRpdHldb2YgT2JqZWN0LmVudHJpZXMobmZ0SW5zdGFuY2UubG9ja2VkVG9rZW5zKSl7Y29uc3QgcmVzPWF3YWl0IGFwaS50cmFuc2ZlclRva2VucyhmaW5hbEZyb20sbG9ja3N5bWJvbCxxdWFudGl0eSxmaW5hbEZyb21UeXBlKTtpc1Rva2VuVHJhbnNmZXJWZXJpZmllZChyZXMsIm5mdCIsZmluYWxGcm9tLGxvY2tzeW1ib2wscXVhbnRpdHksInRyYW5zZmVyRnJvbUNvbnRyYWN0Iil8fChmaW5hbExvY2tUb2tlbnNbbG9ja3N5bWJvbF09cXVhbnRpdHksaXNUcmFuc2ZlclN1Y2Nlc3M9ITEpfWFwaS5hc3NlcnQoaXNUcmFuc2ZlclN1Y2Nlc3MsYHVuYWJsZSB0byByZWxlYXNlIGxvY2tlZCB0b2tlbnMgaW46ICR7c3ltYm9sfSwgaWQgJHtpZH1gKTtjb25zdCBvcmlnTG9ja05mdHM9bmZ0SW5zdGFuY2UubG9ja2VkTmZ0cyYmbmZ0SW5zdGFuY2UubG9ja2VkTmZ0cy5sZW5ndGg+MD9uZnRJbnN0YW5jZS5sb2NrZWROZnRzOltdO2lmKGlzVHJhbnNmZXJTdWNjZXNzJiZuZnRJbnN0YW5jZS5sb2NrZWROZnRzJiZuZnRJbnN0YW5jZS5sb2NrZWROZnRzLmxlbmd0aD4wKXtjb25zdCByZXM9YXdhaXQgdHJhbnNmZXJBbmRWZXJpZnlOZnRzKCJuZnQiLCJjb250cmFjdCIsZmluYWxGcm9tLGZpbmFsRnJvbVR5cGUsbmZ0SW5zdGFuY2UubG9ja2VkTmZ0cyxpc1NpZ25lZFdpdGhBY3RpdmVLZXkse25hbWU6Im5mdCJ9KTtuZnRJbnN0YW5jZS5sb2NrZWROZnRzPXJlcy5mYWlsLG5mdEluc3RhbmNlLmxvY2tlZE5mdHMubGVuZ3RoPjAmJihpc1RyYW5zZmVyU3VjY2Vzcz0hMSksYXBpLmFzc2VydChpc1RyYW5zZmVyU3VjY2VzcyxgdW5hYmxlIHRvIHJlbGVhc2UgbG9ja2VkIE5GVCBpbnN0YW5jZXMgaW46ICR7c3ltYm9sfSwgaWQgJHtpZH1gKX1jb25zdCBvcmlnT3duZWRCeT1uZnRJbnN0YW5jZS5vd25lZEJ5LG9yaWdMb2NrVG9rZW5zPW5mdEluc3RhbmNlLmxvY2tlZFRva2VucztuZnRJbnN0YW5jZS5sb2NrZWRUb2tlbnM9ZmluYWxMb2NrVG9rZW5zLGlzVHJhbnNmZXJTdWNjZXNzJiYobmZ0SW5zdGFuY2UucHJldmlvdXNBY2NvdW50PW5mdEluc3RhbmNlLmFjY291bnQsbmZ0SW5zdGFuY2UucHJldmlvdXNPd25lZEJ5PW5mdEluc3RhbmNlLm93bmVkQnksbmZ0SW5zdGFuY2UuYWNjb3VudD0ibnVsbCIsbmZ0SW5zdGFuY2Uub3duZWRCeT0idSIsbmZ0LmNpcmN1bGF0aW5nU3VwcGx5LT0xKSxhd2FpdCBhcGkuZGIudXBkYXRlKGluc3RhbmNlVGFibGVOYW1lLG5mdEluc3RhbmNlKSxpc1RyYW5zZmVyU3VjY2VzcyYmYXBpLmVtaXQoImJ1cm4iLHthY2NvdW50OmZpbmFsRnJvbSxvd25lZEJ5Om9yaWdPd25lZEJ5LHVubG9ja2VkVG9rZW5zOm9yaWdMb2NrVG9rZW5zLHVubG9ja2VkTmZ0czpvcmlnTG9ja05mdHMsc3ltYm9sOnN5bWJvbCxpZDppZH0pfX19YXdhaXQgYXBpLmRiLnVwZGF0ZSgibmZ0cyIsbmZ0KX19fX0sYWN0aW9ucy50cmFuc2Zlcj1hc3luYyBwYXlsb2FkPT57Y29uc3R7ZnJvbVR5cGU6ZnJvbVR5cGUsdG86dG8sdG9UeXBlOnRvVHlwZSxuZnRzOm5mdHMsaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleSxjYWxsaW5nQ29udHJhY3RJbmZvOmNhbGxpbmdDb250cmFjdEluZm99PXBheWxvYWQsdHlwZXM9WyJ1c2VyIiwiY29udHJhY3QiXSxmaW5hbFRvVHlwZT12b2lkIDA9PT10b1R5cGU/InVzZXIiOnRvVHlwZSxmaW5hbEZyb21UeXBlPXZvaWQgMD09PWZyb21UeXBlPyJ1c2VyIjpmcm9tVHlwZTtpZihhcGkuYXNzZXJ0KCEwPT09aXNTaWduZWRXaXRoQWN0aXZlS2V5LCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmYXBpLmFzc2VydChmaW5hbEZyb21UeXBlJiYic3RyaW5nIj09dHlwZW9mIGZpbmFsRnJvbVR5cGUmJnR5cGVzLmluY2x1ZGVzKGZpbmFsRnJvbVR5cGUpJiZ0byYmInN0cmluZyI9PXR5cGVvZiB0byYmZmluYWxUb1R5cGUmJiJzdHJpbmciPT10eXBlb2YgZmluYWxUb1R5cGUmJnR5cGVzLmluY2x1ZGVzKGZpbmFsVG9UeXBlKSYmKGNhbGxpbmdDb250cmFjdEluZm98fHZvaWQgMD09PWNhbGxpbmdDb250cmFjdEluZm8mJiJ1c2VyIj09PWZpbmFsRnJvbVR5cGUpJiZuZnRzJiYib2JqZWN0Ij09dHlwZW9mIG5mdHMmJkFycmF5LmlzQXJyYXkobmZ0cyksImludmFsaWQgcGFyYW1zIikmJmlzVmFsaWROZnRJZEFycmF5KG5mdHMpKXtjb25zdCBmaW5hbFRvPSJ1c2VyIj09PWZpbmFsVG9UeXBlP3RvLnRyaW0oKS50b0xvd2VyQ2FzZSgpOnRvLnRyaW0oKSx0b1ZhbGlkPSJ1c2VyIj09PWZpbmFsVG9UeXBlP2lzVmFsaWRIaXZlQWNjb3VudExlbmd0aChmaW5hbFRvKTppc1ZhbGlkQ29udHJhY3RMZW5ndGgoZmluYWxUbyksZmluYWxGcm9tPSJ1c2VyIj09PWZpbmFsRnJvbVR5cGU/YXBpLnNlbmRlcjpjYWxsaW5nQ29udHJhY3RJbmZvLm5hbWU7aWYoYXBpLmFzc2VydCh0b1ZhbGlkLCJpbnZhbGlkIHRvIikmJmFwaS5hc3NlcnQoIShmaW5hbFRvVHlwZT09PWZpbmFsRnJvbVR5cGUmJmZpbmFsVG89PT1maW5hbEZyb20pLCJjYW5ub3QgdHJhbnNmZXIgdG8gc2VsZiIpJiZhcGkuYXNzZXJ0KCEoInVzZXIiPT09ZmluYWxUb1R5cGUmJiJudWxsIj09PWZpbmFsVG8pLCJjYW5ub3QgdHJhbnNmZXIgdG8gbnVsbDsgdXNlIGJ1cm4gYWN0aW9uIGluc3RlYWQiKSlmb3IobGV0IGk9MDtpPG5mdHMubGVuZ3RoO2krPTEpe2NvbnN0e3N5bWJvbDpzeW1ib2wsaWRzOmlkc309bmZ0c1tpXTtpZihhd2FpdCBhcGkuZGIuZmluZE9uZSgibmZ0cyIse3N5bWJvbDpzeW1ib2x9KSl7Y29uc3QgaW5zdGFuY2VUYWJsZU5hbWU9c3ltYm9sKyJpbnN0YW5jZXMiO2ZvcihsZXQgaj0wO2o8aWRzLmxlbmd0aDtqKz0xKXtjb25zdCBpZD1pZHNbal0sbmZ0SW5zdGFuY2U9YXdhaXQgYXBpLmRiLmZpbmRPbmUoaW5zdGFuY2VUYWJsZU5hbWUse19pZDphcGkuQmlnTnVtYmVyKGlkKS50b051bWJlcigpfSk7aWYobmZ0SW5zdGFuY2UmJm5mdEluc3RhbmNlLmFjY291bnQ9PT1maW5hbEZyb20mJigidSI9PT1uZnRJbnN0YW5jZS5vd25lZEJ5JiYidXNlciI9PT1maW5hbEZyb21UeXBlfHwiYyI9PT1uZnRJbnN0YW5jZS5vd25lZEJ5JiYiY29udHJhY3QiPT09ZmluYWxGcm9tVHlwZSkmJnZvaWQgMD09PW5mdEluc3RhbmNlLmRlbGVnYXRlZFRvJiYhbmZ0SW5zdGFuY2Uuc291bEJvdW5kKXtjb25zdCBvcmlnT3duZWRCeT1uZnRJbnN0YW5jZS5vd25lZEJ5LG5ld093bmVkQnk9InVzZXIiPT09ZmluYWxUb1R5cGU/InUiOiJjIjtuZnRJbnN0YW5jZS5wcmV2aW91c0FjY291bnQ9bmZ0SW5zdGFuY2UuYWNjb3VudCxuZnRJbnN0YW5jZS5wcmV2aW91c093bmVkQnk9bmZ0SW5zdGFuY2Uub3duZWRCeSxuZnRJbnN0YW5jZS5hY2NvdW50PWZpbmFsVG8sbmZ0SW5zdGFuY2Uub3duZWRCeT1uZXdPd25lZEJ5LGF3YWl0IGFwaS5kYi51cGRhdGUoaW5zdGFuY2VUYWJsZU5hbWUsbmZ0SW5zdGFuY2UpLGFwaS5lbWl0KCJ0cmFuc2ZlciIse2Zyb206ZmluYWxGcm9tLGZyb21UeXBlOm9yaWdPd25lZEJ5LHRvOmZpbmFsVG8sdG9UeXBlOm5ld093bmVkQnksc3ltYm9sOnN5bWJvbCxpZDppZH0pfX19fX19LGFjdGlvbnMuZGVsZWdhdGU9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e2Zyb21UeXBlOmZyb21UeXBlLHRvOnRvLHRvVHlwZTp0b1R5cGUsbmZ0czpuZnRzLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXksY2FsbGluZ0NvbnRyYWN0SW5mbzpjYWxsaW5nQ29udHJhY3RJbmZvfT1wYXlsb2FkLHR5cGVzPVsidXNlciIsImNvbnRyYWN0Il0sZmluYWxUb1R5cGU9dm9pZCAwPT09dG9UeXBlPyJ1c2VyIjp0b1R5cGUsZmluYWxGcm9tVHlwZT12b2lkIDA9PT1mcm9tVHlwZT8idXNlciI6ZnJvbVR5cGU7aWYoYXBpLmFzc2VydCghMD09PWlzU2lnbmVkV2l0aEFjdGl2ZUtleSwieW91IG11c3QgdXNlIGEgY3VzdG9tX2pzb24gc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5IikmJmFwaS5hc3NlcnQoZmluYWxGcm9tVHlwZSYmInN0cmluZyI9PXR5cGVvZiBmaW5hbEZyb21UeXBlJiZ0eXBlcy5pbmNsdWRlcyhmaW5hbEZyb21UeXBlKSYmdG8mJiJzdHJpbmciPT10eXBlb2YgdG8mJmZpbmFsVG9UeXBlJiYic3RyaW5nIj09dHlwZW9mIGZpbmFsVG9UeXBlJiZ0eXBlcy5pbmNsdWRlcyhmaW5hbFRvVHlwZSkmJihjYWxsaW5nQ29udHJhY3RJbmZvfHx2b2lkIDA9PT1jYWxsaW5nQ29udHJhY3RJbmZvJiYidXNlciI9PT1maW5hbEZyb21UeXBlKSYmbmZ0cyYmIm9iamVjdCI9PXR5cGVvZiBuZnRzJiZBcnJheS5pc0FycmF5KG5mdHMpLCJpbnZhbGlkIHBhcmFtcyIpJiZpc1ZhbGlkTmZ0SWRBcnJheShuZnRzKSl7Y29uc3QgZmluYWxUbz0idXNlciI9PT1maW5hbFRvVHlwZT90by50cmltKCkudG9Mb3dlckNhc2UoKTp0by50cmltKCksdG9WYWxpZD0idXNlciI9PT1maW5hbFRvVHlwZT9pc1ZhbGlkSGl2ZUFjY291bnRMZW5ndGgoZmluYWxUbyk6aXNWYWxpZENvbnRyYWN0TGVuZ3RoKGZpbmFsVG8pLGZpbmFsRnJvbT0idXNlciI9PT1maW5hbEZyb21UeXBlP2FwaS5zZW5kZXI6Y2FsbGluZ0NvbnRyYWN0SW5mby5uYW1lO2lmKGFwaS5hc3NlcnQodG9WYWxpZCwiaW52YWxpZCB0byIpJiZhcGkuYXNzZXJ0KCEoZmluYWxUb1R5cGU9PT1maW5hbEZyb21UeXBlJiZmaW5hbFRvPT09ZmluYWxGcm9tKSwiY2Fubm90IGRlbGVnYXRlIHRvIHNlbGYiKSYmYXBpLmFzc2VydCghKCJ1c2VyIj09PWZpbmFsVG9UeXBlJiYibnVsbCI9PT1maW5hbFRvKSwiY2Fubm90IGRlbGVnYXRlIHRvIG51bGwiKSlmb3IobGV0IGk9MDtpPG5mdHMubGVuZ3RoO2krPTEpe2NvbnN0e3N5bWJvbDpzeW1ib2wsaWRzOmlkc309bmZ0c1tpXSxuZnQ9YXdhaXQgYXBpLmRiLmZpbmRPbmUoIm5mdHMiLHtzeW1ib2w6c3ltYm9sfSk7aWYobmZ0JiZhcGkuYXNzZXJ0KCEwPT09bmZ0LmRlbGVnYXRpb25FbmFibGVkLGBkZWxlZ2F0aW9uIG5vdCBlbmFibGVkIGZvciAke3N5bWJvbH1gKSl7Y29uc3QgaW5zdGFuY2VUYWJsZU5hbWU9c3ltYm9sKyJpbnN0YW5jZXMiO2ZvcihsZXQgaj0wO2o8aWRzLmxlbmd0aDtqKz0xKXtjb25zdCBpZD1pZHNbal0sbmZ0SW5zdGFuY2U9YXdhaXQgYXBpLmRiLmZpbmRPbmUoaW5zdGFuY2VUYWJsZU5hbWUse19pZDphcGkuQmlnTnVtYmVyKGlkKS50b051bWJlcigpfSk7aWYobmZ0SW5zdGFuY2UmJm5mdEluc3RhbmNlLmFjY291bnQ9PT1maW5hbEZyb20mJigidSI9PT1uZnRJbnN0YW5jZS5vd25lZEJ5JiYidXNlciI9PT1maW5hbEZyb21UeXBlfHwiYyI9PT1uZnRJbnN0YW5jZS5vd25lZEJ5JiYiY29udHJhY3QiPT09ZmluYWxGcm9tVHlwZSkmJnZvaWQgMD09PW5mdEluc3RhbmNlLmRlbGVnYXRlZFRvJiYhbmZ0SW5zdGFuY2Uuc291bEJvdW5kKXtjb25zdCBuZXdPd25lZEJ5PSJ1c2VyIj09PWZpbmFsVG9UeXBlPyJ1IjoiYyIsbmV3RGVsZWdhdGlvbj17YWNjb3VudDpmaW5hbFRvLG93bmVkQnk6bmV3T3duZWRCeX07bmZ0SW5zdGFuY2UuZGVsZWdhdGVkVG89bmV3RGVsZWdhdGlvbixhd2FpdCBhcGkuZGIudXBkYXRlKGluc3RhbmNlVGFibGVOYW1lLG5mdEluc3RhbmNlKSxhcGkuZW1pdCgiZGVsZWdhdGUiLHtmcm9tOmZpbmFsRnJvbSxmcm9tVHlwZTpuZnRJbnN0YW5jZS5vd25lZEJ5LHRvOmZpbmFsVG8sdG9UeXBlOm5ld093bmVkQnksc3ltYm9sOnN5bWJvbCxpZDppZH0pLGF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgibWluaW5nIiwiaGFuZGxlTmZ0RGVsZWdhdGlvbkNoYW5nZSIse3N5bWJvbDpzeW1ib2wsbmZ0Om5mdEluc3RhbmNlLGFkZDohMH0pfX19fX19LGFjdGlvbnMudW5kZWxlZ2F0ZT1hc3luYyBwYXlsb2FkPT57Y29uc3R7ZnJvbVR5cGU6ZnJvbVR5cGUsbmZ0czpuZnRzLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXksY2FsbGluZ0NvbnRyYWN0SW5mbzpjYWxsaW5nQ29udHJhY3RJbmZvfT1wYXlsb2FkLGZpbmFsRnJvbVR5cGU9dm9pZCAwPT09ZnJvbVR5cGU/InVzZXIiOmZyb21UeXBlO2lmKGFwaS5hc3NlcnQoITA9PT1pc1NpZ25lZFdpdGhBY3RpdmVLZXksInlvdSBtdXN0IHVzZSBhIGN1c3RvbV9qc29uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpJiZhcGkuYXNzZXJ0KGZpbmFsRnJvbVR5cGUmJiJzdHJpbmciPT10eXBlb2YgZmluYWxGcm9tVHlwZSYmWyJ1c2VyIiwiY29udHJhY3QiXS5pbmNsdWRlcyhmaW5hbEZyb21UeXBlKSYmKGNhbGxpbmdDb250cmFjdEluZm98fHZvaWQgMD09PWNhbGxpbmdDb250cmFjdEluZm8mJiJ1c2VyIj09PWZpbmFsRnJvbVR5cGUpJiZuZnRzJiYib2JqZWN0Ij09dHlwZW9mIG5mdHMmJkFycmF5LmlzQXJyYXkobmZ0cyksImludmFsaWQgcGFyYW1zIikmJmlzVmFsaWROZnRJZEFycmF5KG5mdHMpKXtjb25zdCBmaW5hbEZyb209InVzZXIiPT09ZmluYWxGcm9tVHlwZT9hcGkuc2VuZGVyOmNhbGxpbmdDb250cmFjdEluZm8ubmFtZSxibG9ja0RhdGU9bmV3IERhdGUoYCR7YXBpLmhpdmVCbG9ja1RpbWVzdGFtcH0uMDAwWmApO2ZvcihsZXQgaT0wO2k8bmZ0cy5sZW5ndGg7aSs9MSl7Y29uc3R7c3ltYm9sOnN5bWJvbCxpZHM6aWRzfT1uZnRzW2ldLG5mdD1hd2FpdCBhcGkuZGIuZmluZE9uZSgibmZ0cyIse3N5bWJvbDpzeW1ib2x9KTtpZihuZnQmJmFwaS5hc3NlcnQoITA9PT1uZnQuZGVsZWdhdGlvbkVuYWJsZWQsYGRlbGVnYXRpb24gbm90IGVuYWJsZWQgZm9yICR7c3ltYm9sfWApKXtjb25zdCBjb29sZG93blBlcmlvZE1pbGxpc2VjPTI0Km5mdC51bmRlbGVnYXRpb25Db29sZG93biozNjAwKjFlMyxjb21wbGV0ZVRpbWVzdGFtcD1ibG9ja0RhdGUuZ2V0VGltZSgpK2Nvb2xkb3duUGVyaW9kTWlsbGlzZWMsaW5zdGFuY2VUYWJsZU5hbWU9c3ltYm9sKyJpbnN0YW5jZXMiLHVuZGVsZWdhdGlvbj17c3ltYm9sOnN5bWJvbCxpZHM6W10sY29tcGxldGVUaW1lc3RhbXA6Y29tcGxldGVUaW1lc3RhbXB9O2ZvcihsZXQgaj0wO2o8aWRzLmxlbmd0aDtqKz0xKXtjb25zdCBpZD1pZHNbal0sbmZ0SW5zdGFuY2U9YXdhaXQgYXBpLmRiLmZpbmRPbmUoaW5zdGFuY2VUYWJsZU5hbWUse19pZDphcGkuQmlnTnVtYmVyKGlkKS50b051bWJlcigpfSk7bmZ0SW5zdGFuY2UmJm5mdEluc3RhbmNlLmFjY291bnQ9PT1maW5hbEZyb20mJigidSI9PT1uZnRJbnN0YW5jZS5vd25lZEJ5JiYidXNlciI9PT1maW5hbEZyb21UeXBlfHwiYyI9PT1uZnRJbnN0YW5jZS5vd25lZEJ5JiYiY29udHJhY3QiPT09ZmluYWxGcm9tVHlwZSkmJm5mdEluc3RhbmNlLmRlbGVnYXRlZFRvJiZ2b2lkIDA9PT1uZnRJbnN0YW5jZS5kZWxlZ2F0ZWRUby51bmRlbGVnYXRlQXQmJihuZnRJbnN0YW5jZS5kZWxlZ2F0ZWRUby51bmRlbGVnYXRlQXQ9Y29tcGxldGVUaW1lc3RhbXAsdW5kZWxlZ2F0aW9uLmlkcy5wdXNoKG5mdEluc3RhbmNlLl9pZCksYXdhaXQgYXBpLmRiLnVwZGF0ZShpbnN0YW5jZVRhYmxlTmFtZSxuZnRJbnN0YW5jZSksYXBpLmVtaXQoInVuZGVsZWdhdGVTdGFydCIse2Zyb206bmZ0SW5zdGFuY2UuZGVsZWdhdGVkVG8uYWNjb3VudCxmcm9tVHlwZTpuZnRJbnN0YW5jZS5kZWxlZ2F0ZWRUby5vd25lZEJ5LHN5bWJvbDpzeW1ib2wsaWQ6aWR9KSxhd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoIm1pbmluZyIsImhhbmRsZU5mdERlbGVnYXRpb25DaGFuZ2UiLHtzeW1ib2w6c3ltYm9sLG5mdDpuZnRJbnN0YW5jZSxhZGQ6ITF9KSl9dW5kZWxlZ2F0aW9uLmlkcy5sZW5ndGg+MCYmYXdhaXQgYXBpLmRiLmluc2VydCgicGVuZGluZ1VuZGVsZWdhdGlvbnMiLHVuZGVsZWdhdGlvbil9fX19O2NvbnN0IHByb2Nlc3NVbmRlbGVnYXRpb249YXN5bmMgdW5kZWxlZ2F0aW9uPT57Y29uc3R7c3ltYm9sOnN5bWJvbCxpZHM6aWRzfT11bmRlbGVnYXRpb24saW5zdGFuY2VUYWJsZU5hbWU9c3ltYm9sKyJpbnN0YW5jZXMiLGluc3RhbmNlcz1hd2FpdCBhcGkuZGIuZmluZChpbnN0YW5jZVRhYmxlTmFtZSx7X2lkOnskaW46aWRzfX0sNTAsMCxbe2luZGV4OiJfaWQiLGRlc2NlbmRpbmc6ITF9XSk7Zm9yKGxldCBpPTA7aTxpbnN0YW5jZXMubGVuZ3RoO2krPTEpZGVsZXRlIGluc3RhbmNlc1tpXS5kZWxlZ2F0ZWRUbyxhd2FpdCBhcGkuZGIudXBkYXRlKGluc3RhbmNlVGFibGVOYW1lLGluc3RhbmNlc1tpXSx7ZGVsZWdhdGVkVG86IiJ9KTthd2FpdCBhcGkuZGIucmVtb3ZlKCJwZW5kaW5nVW5kZWxlZ2F0aW9ucyIsdW5kZWxlZ2F0aW9uKSxhcGkuZW1pdCgidW5kZWxlZ2F0ZURvbmUiLHtzeW1ib2w6c3ltYm9sLGlkczppZHN9KX07YWN0aW9ucy5jaGVja1BlbmRpbmdVbmRlbGVnYXRpb25zPWFzeW5jKCk9PntpZihhcGkuYXNzZXJ0KCJudWxsIj09PWFwaS5zZW5kZXIsIm5vdCBhdXRob3JpemVkIikpe2NvbnN0IHRpbWVzdGFtcD1uZXcgRGF0ZShgJHthcGkuaGl2ZUJsb2NrVGltZXN0YW1wfS4wMDBaYCkuZ2V0VGltZSgpO2xldCBwZW5kaW5nVW5kZWxlZ2F0aW9ucz1hd2FpdCBhcGkuZGIuZmluZCgicGVuZGluZ1VuZGVsZWdhdGlvbnMiLHtjb21wbGV0ZVRpbWVzdGFtcDp7JGx0ZTp0aW1lc3RhbXB9fSksbmJQZW5kaW5nVW5kZWxlZ2F0aW9ucz1wZW5kaW5nVW5kZWxlZ2F0aW9ucy5sZW5ndGg7Zm9yKDtuYlBlbmRpbmdVbmRlbGVnYXRpb25zPjA7KXtmb3IobGV0IGluZGV4PTA7aW5kZXg8bmJQZW5kaW5nVW5kZWxlZ2F0aW9ucztpbmRleCs9MSl7Y29uc3QgcGVuZGluZ1VuZGVsZWdhdGlvbj1wZW5kaW5nVW5kZWxlZ2F0aW9uc1tpbmRleF07YXdhaXQgcHJvY2Vzc1VuZGVsZWdhdGlvbihwZW5kaW5nVW5kZWxlZ2F0aW9uKX1wZW5kaW5nVW5kZWxlZ2F0aW9ucz1hd2FpdCBhcGkuZGIuZmluZCgicGVuZGluZ1VuZGVsZWdhdGlvbnMiLHtjb21wbGV0ZVRpbWVzdGFtcDp7JGx0ZTp0aW1lc3RhbXB9fSksbmJQZW5kaW5nVW5kZWxlZ2F0aW9ucz1wZW5kaW5nVW5kZWxlZ2F0aW9ucy5sZW5ndGh9fX0sYWN0aW9ucy5jcmVhdGU9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e25hbWU6bmFtZSxvcmdOYW1lOm9yZ05hbWUscHJvZHVjdE5hbWU6cHJvZHVjdE5hbWUsc3ltYm9sOnN5bWJvbCx1cmw6dXJsLG1heFN1cHBseTptYXhTdXBwbHksYXV0aG9yaXplZElzc3VpbmdBY2NvdW50czphdXRob3JpemVkSXNzdWluZ0FjY291bnRzLGF1dGhvcml6ZWRJc3N1aW5nQ29udHJhY3RzOmF1dGhvcml6ZWRJc3N1aW5nQ29udHJhY3RzLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9PXBheWxvYWQscGFyYW1zPWF3YWl0IGFwaS5kYi5maW5kT25lKCJwYXJhbXMiLHt9KSx7bmZ0Q3JlYXRpb25GZWU6bmZ0Q3JlYXRpb25GZWV9PXBhcmFtcyx1dGlsaXR5VG9rZW5CYWxhbmNlPWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgidG9rZW5zIiwiYmFsYW5jZXMiLHthY2NvdW50OmFwaS5zZW5kZXIsc3ltYm9sOlVUSUxJVFlfVE9LRU5fU1lNQk9MfSksYXV0aG9yaXplZENyZWF0aW9uPSEhYXBpLkJpZ051bWJlcihuZnRDcmVhdGlvbkZlZSkubHRlKDApfHx1dGlsaXR5VG9rZW5CYWxhbmNlJiZhcGkuQmlnTnVtYmVyKHV0aWxpdHlUb2tlbkJhbGFuY2UuYmFsYW5jZSkuZ3RlKG5mdENyZWF0aW9uRmVlKTtpZihhcGkuYXNzZXJ0KGF1dGhvcml6ZWRDcmVhdGlvbiwieW91IG11c3QgaGF2ZSBlbm91Z2ggdG9rZW5zIHRvIGNvdmVyIHRoZSBjcmVhdGlvbiBmZWVzIikmJmFwaS5hc3NlcnQoITA9PT1pc1NpZ25lZFdpdGhBY3RpdmVLZXksInlvdSBtdXN0IHVzZSBhIGN1c3RvbV9qc29uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpJiZhcGkuYXNzZXJ0KG5hbWUmJiJzdHJpbmciPT10eXBlb2YgbmFtZSYmc3ltYm9sJiYic3RyaW5nIj09dHlwZW9mIHN5bWJvbCYmKHZvaWQgMD09PXVybHx8dXJsJiYic3RyaW5nIj09dHlwZW9mIHVybCkmJih2b2lkIDA9PT1vcmdOYW1lfHxvcmdOYW1lJiYic3RyaW5nIj09dHlwZW9mIG9yZ05hbWUpJiYodm9pZCAwPT09cHJvZHVjdE5hbWV8fHByb2R1Y3ROYW1lJiYic3RyaW5nIj09dHlwZW9mIHByb2R1Y3ROYW1lKSYmKHZvaWQgMD09PWF1dGhvcml6ZWRJc3N1aW5nQWNjb3VudHN8fGF1dGhvcml6ZWRJc3N1aW5nQWNjb3VudHMmJiJvYmplY3QiPT10eXBlb2YgYXV0aG9yaXplZElzc3VpbmdBY2NvdW50cyYmQXJyYXkuaXNBcnJheShhdXRob3JpemVkSXNzdWluZ0FjY291bnRzKSkmJih2b2lkIDA9PT1hdXRob3JpemVkSXNzdWluZ0NvbnRyYWN0c3x8YXV0aG9yaXplZElzc3VpbmdDb250cmFjdHMmJiJvYmplY3QiPT10eXBlb2YgYXV0aG9yaXplZElzc3VpbmdDb250cmFjdHMmJkFycmF5LmlzQXJyYXkoYXV0aG9yaXplZElzc3VpbmdDb250cmFjdHMpKSYmKHZvaWQgMD09PW1heFN1cHBseXx8bWF4U3VwcGx5JiYic3RyaW5nIj09dHlwZW9mIG1heFN1cHBseSYmIWFwaS5CaWdOdW1iZXIobWF4U3VwcGx5KS5pc05hTigpKSwiaW52YWxpZCBwYXJhbXMiKSYmYXBpLmFzc2VydChhcGkudmFsaWRhdG9yLmlzQWxwaGEoc3ltYm9sKSYmYXBpLnZhbGlkYXRvci5pc1VwcGVyY2FzZShzeW1ib2wpJiZzeW1ib2wubGVuZ3RoPjAmJnN5bWJvbC5sZW5ndGg8PTEwLCJpbnZhbGlkIHN5bWJvbDogdXBwZXJjYXNlIGxldHRlcnMgb25seSwgbWF4IGxlbmd0aCBvZiAxMCIpJiZhcGkuYXNzZXJ0KHZvaWQgMD09PVJFU0VSVkVEX1NZTUJPTFNbc3ltYm9sXXx8YXBpLnNlbmRlcj09PVJFU0VSVkVEX1NZTUJPTFNbc3ltYm9sXSwiY2Fubm90IHVzZSB0aGlzIHN5bWJvbCIpJiZhcGkuYXNzZXJ0KGFwaS52YWxpZGF0b3IuaXNBbHBoYW51bWVyaWMoYXBpLnZhbGlkYXRvci5ibGFja2xpc3QobmFtZSwiICIpKSYmbmFtZS5sZW5ndGg+MCYmbmFtZS5sZW5ndGg8PTUwLCJpbnZhbGlkIG5hbWU6IGxldHRlcnMsIG51bWJlcnMsIHdoaXRlc3BhY2VzIG9ubHksIG1heCBsZW5ndGggb2YgNTAiKSYmYXBpLmFzc2VydCh2b2lkIDA9PT1vcmdOYW1lfHxhcGkudmFsaWRhdG9yLmlzQWxwaGFudW1lcmljKGFwaS52YWxpZGF0b3IuYmxhY2tsaXN0KG9yZ05hbWUsIiAiKSkmJm9yZ05hbWUubGVuZ3RoPjAmJm9yZ05hbWUubGVuZ3RoPD01MCwiaW52YWxpZCBvcmcgbmFtZTogbGV0dGVycywgbnVtYmVycywgd2hpdGVzcGFjZXMgb25seSwgbWF4IGxlbmd0aCBvZiA1MCIpJiZhcGkuYXNzZXJ0KHZvaWQgMD09PXByb2R1Y3ROYW1lfHxhcGkudmFsaWRhdG9yLmlzQWxwaGFudW1lcmljKGFwaS52YWxpZGF0b3IuYmxhY2tsaXN0KHByb2R1Y3ROYW1lLCIgIikpJiZwcm9kdWN0TmFtZS5sZW5ndGg+MCYmcHJvZHVjdE5hbWUubGVuZ3RoPD01MCwiaW52YWxpZCBwcm9kdWN0IG5hbWU6IGxldHRlcnMsIG51bWJlcnMsIHdoaXRlc3BhY2VzIG9ubHksIG1heCBsZW5ndGggb2YgNTAiKSYmYXBpLmFzc2VydCh2b2lkIDA9PT11cmx8fHVybC5sZW5ndGg8PTI1NSwiaW52YWxpZCB1cmw6IG1heCBsZW5ndGggb2YgMjU1IikmJmFwaS5hc3NlcnQodm9pZCAwPT09bWF4U3VwcGx5fHxhcGkuQmlnTnVtYmVyKG1heFN1cHBseSkuZ3QoMCksIm1heFN1cHBseSBtdXN0IGJlIHBvc2l0aXZlIikmJmFwaS5hc3NlcnQodm9pZCAwPT09bWF4U3VwcGx5fHxhcGkuQmlnTnVtYmVyKG1heFN1cHBseSkubHRlKE51bWJlci5NQVhfU0FGRV9JTlRFR0VSKSxgbWF4U3VwcGx5IG11c3QgYmUgbG93ZXIgdGhhbiAke051bWJlci5NQVhfU0FGRV9JTlRFR0VSfWApKXtjb25zdCBuZnQ9YXdhaXQgYXBpLmRiLmZpbmRPbmUoIm5mdHMiLHtzeW1ib2w6c3ltYm9sfSk7aWYoYXBpLmFzc2VydChudWxsPT09bmZ0LCJzeW1ib2wgYWxyZWFkeSBleGlzdHMiKSl7aWYoYXBpLkJpZ051bWJlcihuZnRDcmVhdGlvbkZlZSkuZ3QoMCkpe2NvbnN0IHJlcz1hd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoInRva2VucyIsInRyYW5zZmVyIix7dG86Im51bGwiLHN5bWJvbDpVVElMSVRZX1RPS0VOX1NZTUJPTCxxdWFudGl0eTpuZnRDcmVhdGlvbkZlZSxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fSk7aWYoIWlzVG9rZW5UcmFuc2ZlclZlcmlmaWVkKHJlcyxhcGkuc2VuZGVyLCJudWxsIixVVElMSVRZX1RPS0VOX1NZTUJPTCxuZnRDcmVhdGlvbkZlZSwidHJhbnNmZXIiKSlyZXR1cm4hMX1jb25zdCBmaW5hbE1heFN1cHBseT12b2lkIDA9PT1tYXhTdXBwbHk/MDphcGkuQmlnTnVtYmVyKG1heFN1cHBseSkuaW50ZWdlclZhbHVlKGFwaS5CaWdOdW1iZXIuUk9VTkRfRE9XTikudG9OdW1iZXIoKSxmaW5hbE9yZ05hbWU9dm9pZCAwPT09b3JnTmFtZT8iIjpvcmdOYW1lLGZpbmFsUHJvZHVjdE5hbWU9dm9pZCAwPT09cHJvZHVjdE5hbWU/IiI6cHJvZHVjdE5hbWU7bGV0IG1ldGFkYXRhPXt1cmw6dm9pZCAwPT09dXJsPyIiOnVybH07bWV0YWRhdGE9SlNPTi5zdHJpbmdpZnkobWV0YWRhdGEpO2NvbnN0IGluaXRpYWxBY2NvdW50TGlzdD12b2lkIDA9PT1hdXRob3JpemVkSXNzdWluZ0FjY291bnRzP1thcGkuc2VuZGVyXTpbXSxuZXdOZnQ9e2lzc3VlcjphcGkuc2VuZGVyLHN5bWJvbDpzeW1ib2wsbmFtZTpuYW1lLG9yZ05hbWU6ZmluYWxPcmdOYW1lLHByb2R1Y3ROYW1lOmZpbmFsUHJvZHVjdE5hbWUsbWV0YWRhdGE6bWV0YWRhdGEsbWF4U3VwcGx5OmZpbmFsTWF4U3VwcGx5LHN1cHBseTowLGNpcmN1bGF0aW5nU3VwcGx5OjAsZGVsZWdhdGlvbkVuYWJsZWQ6ITEsdW5kZWxlZ2F0aW9uQ29vbGRvd246MCxhdXRob3JpemVkSXNzdWluZ0FjY291bnRzOmluaXRpYWxBY2NvdW50TGlzdCxhdXRob3JpemVkSXNzdWluZ0NvbnRyYWN0czpbXSxwcm9wZXJ0aWVzOnt9LGdyb3VwQnk6W119LGluc3RhbmNlVGFibGVOYW1lPXN5bWJvbCsiaW5zdGFuY2VzIjtyZXR1cm4hMT09PWF3YWl0IGFwaS5kYi50YWJsZUV4aXN0cyhpbnN0YW5jZVRhYmxlTmFtZSkmJmF3YWl0IGFwaS5kYi5jcmVhdGVUYWJsZShpbnN0YW5jZVRhYmxlTmFtZSxbImFjY291bnQiLCJvd25lZEJ5Il0pLGF3YWl0IGFwaS5kYi5pbnNlcnQoIm5mdHMiLG5ld05mdCksdm9pZCAwIT09YXV0aG9yaXplZElzc3VpbmdBY2NvdW50cyYmYXdhaXQgYWN0aW9ucy5hZGRBdXRob3JpemVkSXNzdWluZ0FjY291bnRzKHthY2NvdW50czphdXRob3JpemVkSXNzdWluZ0FjY291bnRzLHN5bWJvbDpzeW1ib2wsaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX0pLHZvaWQgMCE9PWF1dGhvcml6ZWRJc3N1aW5nQ29udHJhY3RzJiZhd2FpdCBhY3Rpb25zLmFkZEF1dGhvcml6ZWRJc3N1aW5nQ29udHJhY3RzKHtjb250cmFjdHM6YXV0aG9yaXplZElzc3VpbmdDb250cmFjdHMsc3ltYm9sOnN5bWJvbCxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fSksITB9fXJldHVybiExfSxhY3Rpb25zLmlzc3VlPWFzeW5jIHBheWxvYWQ9Pntjb25zdHtzeW1ib2w6c3ltYm9sLGZyb21UeXBlOmZyb21UeXBlLHRvOnRvLHRvVHlwZTp0b1R5cGUsZmVlU3ltYm9sOmZlZVN5bWJvbCxsb2NrVG9rZW5zOmxvY2tUb2tlbnMsbG9ja05mdHM6bG9ja05mdHMsc291bEJvdW5kOnNvdWxCb3VuZCxwcm9wZXJ0aWVzOnByb3BlcnRpZXMsaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleSxjYWxsaW5nQ29udHJhY3RJbmZvOmNhbGxpbmdDb250cmFjdEluZm99PXBheWxvYWQsdHlwZXM9WyJ1c2VyIiwiY29udHJhY3QiXSxmaW5hbFRvVHlwZT12b2lkIDA9PT10b1R5cGU/InVzZXIiOnRvVHlwZSxmaW5hbEZyb21UeXBlPXZvaWQgMD09PWZyb21UeXBlPyJ1c2VyIjpmcm9tVHlwZSxwYXJhbXM9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInBhcmFtcyIse30pLHtuZnRJc3N1YW5jZUZlZTpuZnRJc3N1YW5jZUZlZX09cGFyYW1zO2lmKGFwaS5hc3NlcnQoITA9PT1pc1NpZ25lZFdpdGhBY3RpdmVLZXksInlvdSBtdXN0IHVzZSBhIGN1c3RvbV9qc29uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpJiZhcGkuYXNzZXJ0KHN5bWJvbCYmInN0cmluZyI9PXR5cGVvZiBzeW1ib2wmJmZpbmFsRnJvbVR5cGUmJiJzdHJpbmciPT10eXBlb2YgZmluYWxGcm9tVHlwZSYmdHlwZXMuaW5jbHVkZXMoZmluYWxGcm9tVHlwZSkmJihjYWxsaW5nQ29udHJhY3RJbmZvfHx2b2lkIDA9PT1jYWxsaW5nQ29udHJhY3RJbmZvJiYidXNlciI9PT1maW5hbEZyb21UeXBlKSYmdG8mJiJzdHJpbmciPT10eXBlb2YgdG8mJmZpbmFsVG9UeXBlJiYic3RyaW5nIj09dHlwZW9mIGZpbmFsVG9UeXBlJiZ0eXBlcy5pbmNsdWRlcyhmaW5hbFRvVHlwZSkmJmZlZVN5bWJvbCYmInN0cmluZyI9PXR5cGVvZiBmZWVTeW1ib2wmJmZlZVN5bWJvbCBpbiBuZnRJc3N1YW5jZUZlZSYmKHZvaWQgMD09PXByb3BlcnRpZXN8fHByb3BlcnRpZXMmJiJvYmplY3QiPT10eXBlb2YgcHJvcGVydGllcykmJih2b2lkIDA9PT1sb2NrVG9rZW5zfHxsb2NrVG9rZW5zJiYib2JqZWN0Ij09dHlwZW9mIGxvY2tUb2tlbnMpJiYodm9pZCAwPT09bG9ja05mdHN8fGxvY2tOZnRzJiYib2JqZWN0Ij09dHlwZW9mIGxvY2tOZnRzJiZBcnJheS5pc0FycmF5KGxvY2tOZnRzKSkmJih2b2lkIDA9PT1zb3VsQm91bmR8fCJib29sZWFuIj09dHlwZW9mIHNvdWxCb3VuZCksImludmFsaWQgcGFyYW1zIikmJih2b2lkIDA9PT1sb2NrTmZ0c3x8aXNWYWxpZE5mdElkQXJyYXkobG9ja05mdHMpKSl7Y29uc3QgZmluYWxUbz0idXNlciI9PT1maW5hbFRvVHlwZT90by50cmltKCkudG9Mb3dlckNhc2UoKTp0by50cmltKCksdG9WYWxpZD0idXNlciI9PT1maW5hbFRvVHlwZT9pc1ZhbGlkSGl2ZUFjY291bnRMZW5ndGgoZmluYWxUbyk6aXNWYWxpZENvbnRyYWN0TGVuZ3RoKGZpbmFsVG8pLGZpbmFsRnJvbT0idXNlciI9PT1maW5hbEZyb21UeXBlP2FwaS5zZW5kZXI6Y2FsbGluZ0NvbnRyYWN0SW5mby5uYW1lLGJhbGFuY2VUYWJsZU5hbWU9InVzZXIiPT09ZmluYWxGcm9tVHlwZT8iYmFsYW5jZXMiOiJjb250cmFjdHNCYWxhbmNlcyI7aWYoYXBpLmFzc2VydCh0b1ZhbGlkLCJpbnZhbGlkIHRvIikpe2NvbnN0IG5mdD1hd2FpdCBhcGkuZGIuZmluZE9uZSgibmZ0cyIse3N5bWJvbDpzeW1ib2x9KSxmZWVUb2tlbj1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoInRva2VucyIsInRva2VucyIse3N5bWJvbDpmZWVTeW1ib2x9KTtpZihhcGkuYXNzZXJ0KG51bGwhPT1uZnQsInN5bWJvbCBkb2VzIG5vdCBleGlzdCIpJiZhcGkuYXNzZXJ0KG51bGwhPT1mZWVUb2tlbiwiZmVlIHN5bWJvbCBkb2VzIG5vdCBleGlzdCIpKXtjb25zdCBpbnN0YW5jZVRhYmxlTmFtZT1zeW1ib2wrImluc3RhbmNlcyI7aWYoYXBpLmFzc2VydCgiY29udHJhY3QiPT09ZmluYWxGcm9tVHlwZSYmbmZ0LmF1dGhvcml6ZWRJc3N1aW5nQ29udHJhY3RzLmluY2x1ZGVzKGZpbmFsRnJvbSl8fCJ1c2VyIj09PWZpbmFsRnJvbVR5cGUmJm5mdC5hdXRob3JpemVkSXNzdWluZ0FjY291bnRzLmluY2x1ZGVzKGZpbmFsRnJvbSksIm5vdCBhbGxvd2VkIHRvIGlzc3VlIHRva2VucyIpJiZhcGkuYXNzZXJ0KDA9PT1uZnQubWF4U3VwcGx5fHxuZnQuc3VwcGx5PG5mdC5tYXhTdXBwbHksIm1heCBzdXBwbHkgbGltaXQgcmVhY2hlZCIpKXtjb25zdCBwcm9wZXJ0eUNvdW50PU9iamVjdC5rZXlzKG5mdC5wcm9wZXJ0aWVzKS5sZW5ndGgscHJvcGVydHlGZWU9YXBpLkJpZ051bWJlcihuZnRJc3N1YW5jZUZlZVtmZWVTeW1ib2xdKS5tdWx0aXBsaWVkQnkocHJvcGVydHlDb3VudCksaXNzdWFuY2VGZWU9Y2FsY3VsYXRlQmFsYW5jZShuZnRJc3N1YW5jZUZlZVtmZWVTeW1ib2xdLHByb3BlcnR5RmVlLGZlZVRva2VuLnByZWNpc2lvbiwhMCksZmVlVG9rZW5CYWxhbmNlPWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgidG9rZW5zIixiYWxhbmNlVGFibGVOYW1lLHthY2NvdW50OmZpbmFsRnJvbSxzeW1ib2w6ZmVlU3ltYm9sfSksYXV0aG9yaXplZENyZWF0aW9uPSEhYXBpLkJpZ051bWJlcihpc3N1YW5jZUZlZSkubHRlKDApfHxmZWVUb2tlbkJhbGFuY2UmJmFwaS5CaWdOdW1iZXIoZmVlVG9rZW5CYWxhbmNlLmJhbGFuY2UpLmd0ZShpc3N1YW5jZUZlZSk7aWYobG9ja1Rva2Vucyl7Y29uc3QgaXNMb2NrVmFsaWQ9YXdhaXQgaXNWYWxpZFRva2VuQmFza2V0KGxvY2tUb2tlbnMsYmFsYW5jZVRhYmxlTmFtZSxmaW5hbEZyb20sZmVlU3ltYm9sLGlzc3VhbmNlRmVlKTtpZighYXBpLmFzc2VydChpc0xvY2tWYWxpZCwiaW52YWxpZCBiYXNrZXQgb2YgdG9rZW5zIHRvIGxvY2sgKGNhbm5vdCBsb2NrIG1vcmUgdGhhbiAxMCB0b2tlbiB0eXBlczsgaXNzdWluZyBhY2NvdW50IG11c3QgaGF2ZSBlbm91Z2ggYmFsYW5jZSkiKSlyZXR1cm4hMX1sZXQgZmluYWxQcm9wZXJ0aWVzPXt9O2lmKHZvaWQgMCE9PXByb3BlcnRpZXMpe3RyeXtpZighaXNWYWxpZERhdGFQcm9wZXJ0aWVzKGZpbmFsRnJvbSxmaW5hbEZyb21UeXBlLG5mdCxwcm9wZXJ0aWVzKSlyZXR1cm4hMX1jYXRjaChlKXtyZXR1cm4hMX1maW5hbFByb3BlcnRpZXM9cHJvcGVydGllc31pZihhcGkuYXNzZXJ0KGF1dGhvcml6ZWRDcmVhdGlvbiwieW91IG11c3QgaGF2ZSBlbm91Z2ggdG9rZW5zIHRvIGNvdmVyIHRoZSBpc3N1YW5jZSBmZWVzIikpe2lmKGFwaS5CaWdOdW1iZXIoaXNzdWFuY2VGZWUpLmd0KDApKWlmKCJjb250cmFjdCI9PT1maW5hbEZyb21UeXBlKXtjb25zdCByZXM9YXdhaXQgYXBpLnRyYW5zZmVyVG9rZW5zRnJvbUNhbGxpbmdDb250cmFjdCgibnVsbCIsZmVlU3ltYm9sLGlzc3VhbmNlRmVlLCJ1c2VyIik7aWYoIWFwaS5hc3NlcnQoaXNUb2tlblRyYW5zZmVyVmVyaWZpZWQocmVzLGZpbmFsRnJvbSwibnVsbCIsZmVlU3ltYm9sLGlzc3VhbmNlRmVlLCJ0cmFuc2ZlckZyb21Db250cmFjdCIpLCJ1bmFibGUgdG8gdHJhbnNmZXIgaXNzdWFuY2UgZmVlIikpcmV0dXJuITF9ZWxzZXtjb25zdCByZXM9YXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJ0b2tlbnMiLCJ0cmFuc2ZlciIse3RvOiJudWxsIixzeW1ib2w6ZmVlU3ltYm9sLHF1YW50aXR5Omlzc3VhbmNlRmVlLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9KTtpZighYXBpLmFzc2VydChpc1Rva2VuVHJhbnNmZXJWZXJpZmllZChyZXMsZmluYWxGcm9tLCJudWxsIixmZWVTeW1ib2wsaXNzdWFuY2VGZWUsInRyYW5zZmVyIiksInVuYWJsZSB0byB0cmFuc2ZlciBpc3N1YW5jZSBmZWUiKSlyZXR1cm4hMX1jb25zdCBmaW5hbExvY2tUb2tlbnM9e307aWYobG9ja1Rva2Vucylmb3IoY29uc3RbbG9ja3N5bWJvbCxxdWFudGl0eV1vZiBPYmplY3QuZW50cmllcyhsb2NrVG9rZW5zKSlpZigiY29udHJhY3QiPT09ZmluYWxGcm9tVHlwZSl7Y29uc3QgcmVzPWF3YWl0IGFwaS50cmFuc2ZlclRva2Vuc0Zyb21DYWxsaW5nQ29udHJhY3QoIm5mdCIsbG9ja3N5bWJvbCxxdWFudGl0eSwiY29udHJhY3QiKTtpc1Rva2VuVHJhbnNmZXJWZXJpZmllZChyZXMsZmluYWxGcm9tLCJuZnQiLGxvY2tzeW1ib2wscXVhbnRpdHksInRyYW5zZmVyRnJvbUNvbnRyYWN0IikmJihmaW5hbExvY2tUb2tlbnNbbG9ja3N5bWJvbF09cXVhbnRpdHkpfWVsc2V7Y29uc3QgcmVzPWF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgidG9rZW5zIiwidHJhbnNmZXJUb0NvbnRyYWN0Iix7dG86Im5mdCIsc3ltYm9sOmxvY2tzeW1ib2wscXVhbnRpdHk6cXVhbnRpdHksaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX0pO2lzVG9rZW5UcmFuc2ZlclZlcmlmaWVkKHJlcyxmaW5hbEZyb20sIm5mdCIsbG9ja3N5bWJvbCxxdWFudGl0eSwidHJhbnNmZXJUb0NvbnRyYWN0IikmJihmaW5hbExvY2tUb2tlbnNbbG9ja3N5bWJvbF09cXVhbnRpdHkpfWxldCBmaW5hbExvY2tOZnRzPVtdO2lmKGxvY2tOZnRzJiZsb2NrTmZ0cy5sZW5ndGg+MCl7ZmluYWxMb2NrTmZ0cz0oYXdhaXQgdHJhbnNmZXJBbmRWZXJpZnlOZnRzKGZpbmFsRnJvbSxmaW5hbEZyb21UeXBlLCJuZnQiLCJjb250cmFjdCIsbG9ja05mdHMsaXNTaWduZWRXaXRoQWN0aXZlS2V5LGNhbGxpbmdDb250cmFjdEluZm8pKS5zdWNjZXNzfWNvbnN0IG93bmVkQnk9InVzZXIiPT09ZmluYWxUb1R5cGU/InUiOiJjIjtsZXQgbmV3SW5zdGFuY2U9e307bmV3SW5zdGFuY2U9ZmluYWxMb2NrTmZ0cy5sZW5ndGg+MD97YWNjb3VudDpmaW5hbFRvLHNvdWxCb3VuZDohIXNvdWxCb3VuZCxvd25lZEJ5Om93bmVkQnksbG9ja2VkVG9rZW5zOmZpbmFsTG9ja1Rva2Vucyxsb2NrZWROZnRzOmZpbmFsTG9ja05mdHMscHJvcGVydGllczpmaW5hbFByb3BlcnRpZXN9OnthY2NvdW50OmZpbmFsVG8sc291bEJvdW5kOiEhc291bEJvdW5kLG93bmVkQnk6b3duZWRCeSxsb2NrZWRUb2tlbnM6ZmluYWxMb2NrVG9rZW5zLHByb3BlcnRpZXM6ZmluYWxQcm9wZXJ0aWVzfTtjb25zdCByZXN1bHQ9YXdhaXQgYXBpLmRiLmluc2VydChpbnN0YW5jZVRhYmxlTmFtZSxuZXdJbnN0YW5jZSk7cmV0dXJuIG5mdC5zdXBwbHkrPTEsIm51bGwiPT09ZmluYWxUbyYmImNvbnRyYWN0IiE9PWZpbmFsVG9UeXBlfHwobmZ0LmNpcmN1bGF0aW5nU3VwcGx5Kz0xKSxhd2FpdCBhcGkuZGIudXBkYXRlKCJuZnRzIixuZnQpLGFwaS5lbWl0KCJpc3N1ZSIse2Zyb206ZmluYWxGcm9tLGZyb21UeXBlOmZpbmFsRnJvbVR5cGUsdG86ZmluYWxUbyx0b1R5cGU6ZmluYWxUb1R5cGUsc3ltYm9sOnN5bWJvbCxsb2NrZWRUb2tlbnM6ZmluYWxMb2NrVG9rZW5zLGxvY2tlZE5mdHM6ZmluYWxMb2NrTmZ0cyxzb3VsQm91bmQ6ISFzb3VsQm91bmQscHJvcGVydGllczpmaW5hbFByb3BlcnRpZXMsaWQ6cmVzdWx0Ll9pZH0pLCEwfX19fX1yZXR1cm4hMX0sYWN0aW9ucy5pc3N1ZU11bHRpcGxlPWFzeW5jIHBheWxvYWQ9Pntjb25zdHtpbnN0YW5jZXM6aW5zdGFuY2VzLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXksY2FsbGluZ0NvbnRyYWN0SW5mbzpjYWxsaW5nQ29udHJhY3RJbmZvfT1wYXlsb2FkO2lmKGFwaS5hc3NlcnQoITA9PT1pc1NpZ25lZFdpdGhBY3RpdmVLZXksInlvdSBtdXN0IHVzZSBhIGN1c3RvbV9qc29uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpJiZhcGkuYXNzZXJ0KGluc3RhbmNlcyYmIm9iamVjdCI9PXR5cGVvZiBpbnN0YW5jZXMmJkFycmF5LmlzQXJyYXkoaW5zdGFuY2VzKSwiaW52YWxpZCBwYXJhbXMiKSYmYXBpLmFzc2VydChpbnN0YW5jZXMubGVuZ3RoPD0xMCwiY2Fubm90IGlzc3VlIG1vcmUgdGhhbiAxMCBORlQgaW5zdGFuY2VzIGF0IG9uY2UiKSl7bGV0IGNvbnRhaW5lckNvdW50PTA7aWYoaW5zdGFuY2VzLmZvckVhY2goKGluc3RhbmNlPT57aW5zdGFuY2UmJmluc3RhbmNlLmxvY2tOZnRzJiYoY29udGFpbmVyQ291bnQrPTEpfSkpLGFwaS5hc3NlcnQoY29udGFpbmVyQ291bnQ8PTEsImNhbm5vdCBpc3N1ZSBtb3JlIHRoYW4gMSBjb250YWluZXIgTkZUIGluc3RhbmNlcyBhdCBvbmNlIikmJmFwaS5hc3NlcnQoMD09PWNvbnRhaW5lckNvdW50fHxjb250YWluZXJDb3VudD09PWluc3RhbmNlcy5sZW5ndGgsImNhbm5vdCBpc3N1ZSBhIG1peCBvZiBjb250YWluZXIgYW5kIG5vbi1jb250YWluZXIgTkZUIGluc3RhbmNlcyBzaW11bHRhbmVvdXNseSIpKWZvcihsZXQgaT0wO2k8aW5zdGFuY2VzLmxlbmd0aDtpKz0xKWlmKGluc3RhbmNlc1tpXSl7Y29uc3R7c3ltYm9sOnN5bWJvbCxmcm9tVHlwZTpmcm9tVHlwZSx0bzp0byx0b1R5cGU6dG9UeXBlLGZlZVN5bWJvbDpmZWVTeW1ib2wsbG9ja1Rva2Vuczpsb2NrVG9rZW5zLHNvdWxCb3VuZDpzb3VsQm91bmQsbG9ja05mdHM6bG9ja05mdHMscHJvcGVydGllczpwcm9wZXJ0aWVzfT1pbnN0YW5jZXNbaV07YXdhaXQgYWN0aW9ucy5pc3N1ZSh7c3ltYm9sOnN5bWJvbCxmcm9tVHlwZTpmcm9tVHlwZSx0bzp0byx0b1R5cGU6dG9UeXBlLGZlZVN5bWJvbDpmZWVTeW1ib2wsbG9ja1Rva2Vuczpsb2NrVG9rZW5zLHNvdWxCb3VuZDpzb3VsQm91bmQsbG9ja05mdHM6bG9ja05mdHMscHJvcGVydGllczpwcm9wZXJ0aWVzLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXksY2FsbGluZ0NvbnRyYWN0SW5mbzpjYWxsaW5nQ29udHJhY3RJbmZvfSl9fX07"}}}
nft Smart Contract
2 months ago in #hive-engine by hive-engine (44)
$0.00