Comments Smart Contract

in #hive-engine3 years ago

{"id":"ssc-mainnet-hive","json":{"contractName":"contract","contractAction":"update","contractPayload":{"name":"comments","params":"","code":"Y29uc3QgU01UX1BSRUNJU0lPTj0xMCxNQVhfVk9USU5HX1BPV0VSPTFlNCxNQVhfV0VJR0hUPTFlNCxQT1NUX1FVRVJZX0xJTUlUPTFlMztmdW5jdGlvbiBjYWxjdWxhdGVXZWlnaHRSc2hhcmVzKHJld2FyZFBvb2wsdm90ZVJzaGFyZVN1bSl7aWYoYXBpLkJpZ051bWJlcih2b3RlUnNoYXJlU3VtKS5sdGUoMCkpcmV0dXJuIGFwaS5CaWdOdW1iZXIoMCk7aWYoInBvd2VyIj09PXJld2FyZFBvb2wuY29uZmlnLnBvc3RSZXdhcmRDdXJ2ZSl7Y29uc3QgcG9zdFJld2FyZEV4cG9uZW50PWFwaS5CaWdOdW1iZXIocmV3YXJkUG9vbC5jb25maWcucG9zdFJld2FyZEN1cnZlUGFyYW1ldGVyKTtyZXR1cm4gcG9zdFJld2FyZEV4cG9uZW50LmVxKCIxIil8fHBvc3RSZXdhcmRFeHBvbmVudC5lcSgiMiIpP2FwaS5CaWdOdW1iZXIodm90ZVJzaGFyZVN1bSkucG93KHJld2FyZFBvb2wuY29uZmlnLnBvc3RSZXdhcmRDdXJ2ZVBhcmFtZXRlcikudG9GaXhlZCgxMCxhcGkuQmlnTnVtYmVyLlJPVU5EX0RPV04pOmFwaS5CaWdOdW1iZXIocGFyc2VGbG9hdCh2b3RlUnNoYXJlU3VtKSoqcGFyc2VGbG9hdChyZXdhcmRQb29sLmNvbmZpZy5wb3N0UmV3YXJkQ3VydmVQYXJhbWV0ZXIpKS50b0ZpeGVkKDEwLGFwaS5CaWdOdW1iZXIuUk9VTkRfRE9XTil9cmV0dXJuIGFwaS5CaWdOdW1iZXIodm90ZVJzaGFyZVN1bSl9ZnVuY3Rpb24gY2FsY3VsYXRlQ3VyYXRpb25XZWlnaHRSc2hhcmVzKHJld2FyZFBvb2wsdm90ZVJzaGFyZVN1bSl7aWYoYXBpLkJpZ051bWJlcih2b3RlUnNoYXJlU3VtKS5sdGUoMCkpcmV0dXJuIGFwaS5CaWdOdW1iZXIoMCk7aWYoInBvd2VyIj09PXJld2FyZFBvb2wuY29uZmlnLmN1cmF0aW9uUmV3YXJkQ3VydmUpe2NvbnN0IGN1cmF0aW9uUmV3YXJkRXhwb25lbnQ9YXBpLkJpZ051bWJlcihyZXdhcmRQb29sLmNvbmZpZy5jdXJhdGlvblJld2FyZEN1cnZlUGFyYW1ldGVyKTtyZXR1cm4gY3VyYXRpb25SZXdhcmRFeHBvbmVudC5lcSgiMC41Iik/YXBpLkJpZ051bWJlcih2b3RlUnNoYXJlU3VtKS5zcXJ0KCkudG9GaXhlZCgxMCxhcGkuQmlnTnVtYmVyLlJPVU5EX0RPV04pOmN1cmF0aW9uUmV3YXJkRXhwb25lbnQuZXEoIjEiKT9hcGkuQmlnTnVtYmVyKHZvdGVSc2hhcmVTdW0pLnRvRml4ZWQoMTAsYXBpLkJpZ051bWJlci5ST1VORF9ET1dOKTphcGkuQmlnTnVtYmVyKHBhcnNlRmxvYXQodm90ZVJzaGFyZVN1bSkqKnBhcnNlRmxvYXQocmV3YXJkUG9vbC5jb25maWcuY3VyYXRpb25SZXdhcmRDdXJ2ZVBhcmFtZXRlcikpLnRvRml4ZWQoMTAsYXBpLkJpZ051bWJlci5ST1VORF9ET1dOKX1yZXR1cm4gYXBpLkJpZ051bWJlcih2b3RlUnNoYXJlU3VtKX1hc3luYyBmdW5jdGlvbiBwYXlVc2VyKHN5bWJvbCxxdWFudGl0eSx1c2VyLHN0YWtlZFJld2FyZFBlcmNlbnRhZ2UsbXV0ZSl7aWYobXV0ZSlyZXR1cm47Y29uc3QgcXVhbnRpdHlCaWdudW09YXBpLkJpZ051bWJlcihxdWFudGl0eSksc3Rha2VkUXVhbnRpdHk9cXVhbnRpdHlCaWdudW0ubXVsdGlwbGllZEJ5KHN0YWtlZFJld2FyZFBlcmNlbnRhZ2UpLmRpdmlkZWRCeSgxMDApLnRvRml4ZWQocXVhbnRpdHlCaWdudW0uZHAoKSxhcGkuQmlnTnVtYmVyLlJPVU5EX0RPV04pLGxpcXVpZFF1YW50aXR5PXF1YW50aXR5QmlnbnVtLm1pbnVzKHN0YWtlZFF1YW50aXR5KS50b0ZpeGVkKHF1YW50aXR5QmlnbnVtLmRwKCksYXBpLkJpZ051bWJlci5ST1VORF9ET1dOKTtsZXQgcmVzO2FwaS5CaWdOdW1iZXIobGlxdWlkUXVhbnRpdHkpLmd0KDApJiYocmVzPWF3YWl0IGFwaS50cmFuc2ZlclRva2Vucyh1c2VyLHN5bWJvbCxsaXF1aWRRdWFudGl0eSwidXNlciIpLHJlcy5lcnJvcnMmJmFwaS5kZWJ1ZyhgRXJyb3IgcGF5aW5nIG91dCBsaXF1aWQgJHtsaXF1aWRRdWFudGl0eX0gJHtzeW1ib2x9IHRvICR7dXNlcn0gKFRYSUQgJHthcGkudHJhbnNhY3Rpb25JZH0pOiBcbiR7cmVzLmVycm9yc31gKSksYXBpLkJpZ051bWJlcihzdGFrZWRRdWFudGl0eSkuZ3QoMCkmJihyZXM9YXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJ0b2tlbnMiLCJzdGFrZUZyb21Db250cmFjdCIse3RvOnVzZXIsc3ltYm9sOnN5bWJvbCxxdWFudGl0eTpzdGFrZWRRdWFudGl0eX0pLHJlcy5lcnJvcnMmJmFwaS5kZWJ1ZyhgRXJyb3IgcGF5aW5nIG91dCBzdGFrZWQgJHtzdGFrZWRRdWFudGl0eX0gJHtzeW1ib2x9IHRvICR7dXNlcn0gKFRYSUQgJHthcGkudHJhbnNhY3Rpb25JZH0pOiBcbiR7cmVzLmVycm9yc31gKSl9YXN5bmMgZnVuY3Rpb24gZ2V0TXV0ZShyZXdhcmRQb29sSWQsYWNjb3VudCl7Y29uc3Qgdm90aW5nUG93ZXI9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInZvdGluZ1Bvd2VyIix7cmV3YXJkUG9vbElkOnJld2FyZFBvb2xJZCxhY2NvdW50OmFjY291bnR9KTtyZXR1cm4hIXZvdGluZ1Bvd2VyJiZ2b3RpbmdQb3dlci5tdXRlfWFzeW5jIGZ1bmN0aW9uIHBheU91dEJlbmVmaWNpYXJpZXMocmV3YXJkUG9vbCx0b2tlbixwb3N0LGF1dGhvckJlbmVQb3J0aW9uKXtjb25zdHthdXRob3JwZXJtOmF1dGhvcnBlcm0sc3ltYm9sOnN5bWJvbCxyZXdhcmRQb29sSWQ6cmV3YXJkUG9vbElkLGJlbmVmaWNpYXJpZXM6YmVuZWZpY2lhcmllc309cG9zdDtsZXQgdG90YWxCZW5lUGF5PWFwaS5CaWdOdW1iZXIoMCkscG9zdFRheEF1dGhvckJlbmVQb3J0aW9uPWF1dGhvckJlbmVQb3J0aW9uO2lmKHJld2FyZFBvb2wuY29uZmlnLmFwcFRheENvbmZpZyl7Y29uc3R7YXBwOmFwcCxwZXJjZW50OnBlcmNlbnQsYmVuZWZpY2lhcnk6YmVuZWZpY2lhcnl9PXJld2FyZFBvb2wuY29uZmlnLmFwcFRheENvbmZpZztpZihhcHAhPT1wb3N0LmFwcCl7Y29uc3QgYXBwVGF4UG9ydGlvbj1hcGkuQmlnTnVtYmVyKGF1dGhvckJlbmVQb3J0aW9uKS5tdWx0aXBsaWVkQnkocGVyY2VudCkuZGl2aWRlZEJ5KDEwMCkudG9GaXhlZCh0b2tlbi5wcmVjaXNpb24sYXBpLkJpZ051bWJlci5ST1VORF9ET1dOKTtwb3N0VGF4QXV0aG9yQmVuZVBvcnRpb249YXBpLkJpZ051bWJlcihwb3N0VGF4QXV0aG9yQmVuZVBvcnRpb24pLm1pbnVzKGFwcFRheFBvcnRpb24pO2NvbnN0IHJld2FyZExvZz17cmV3YXJkUG9vbElkOnJld2FyZFBvb2xJZCxhdXRob3JwZXJtOmF1dGhvcnBlcm0sc3ltYm9sOnN5bWJvbCxhY2NvdW50OmJlbmVmaWNpYXJ5LHF1YW50aXR5OmFwcFRheFBvcnRpb259O2FwaS5lbWl0KCJhcHBUYXgiLHJld2FyZExvZyksYXdhaXQgcGF5VXNlcihzeW1ib2wsYXBwVGF4UG9ydGlvbixiZW5lZmljaWFyeSwwKSx0b3RhbEJlbmVQYXk9YXBpLkJpZ051bWJlcih0b3RhbEJlbmVQYXkpLnBsdXMoYXBwVGF4UG9ydGlvbil9fWlmKCFiZW5lZmljaWFyaWVzfHwwPT09YmVuZWZpY2lhcmllcy5sZW5ndGgpcmV0dXJuIGFwaS5CaWdOdW1iZXIoMCk7Zm9yKGxldCBpPTA7aTxiZW5lZmljaWFyaWVzLmxlbmd0aDtpKz0xKXtjb25zdCBiZW5lZmljaWFyeT1iZW5lZmljaWFyaWVzW2ldLGJlbmVQYXk9YXBpLkJpZ051bWJlcihwb3N0VGF4QXV0aG9yQmVuZVBvcnRpb24pLm11bHRpcGxpZWRCeShiZW5lZmljaWFyeS53ZWlnaHQpLmRpdmlkZWRCeSgxZTQpLnRvRml4ZWQodG9rZW4ucHJlY2lzaW9uLGFwaS5CaWdOdW1iZXIuUk9VTkRfRE9XTiksbXV0ZT1hd2FpdCBnZXRNdXRlKHJld2FyZFBvb2xJZCxiZW5lZmljaWFyeS5hY2NvdW50KSxyZXdhcmRMb2c9e3Jld2FyZFBvb2xJZDpyZXdhcmRQb29sSWQsYXV0aG9ycGVybTphdXRob3JwZXJtLHN5bWJvbDpzeW1ib2wsYWNjb3VudDpiZW5lZmljaWFyeS5hY2NvdW50LHF1YW50aXR5OmJlbmVQYXl9O211dGUmJihyZXdhcmRMb2cubXV0ZT0hMCksYXBpLmVtaXQoImJlbmVmaWNpYXJ5UmV3YXJkIixyZXdhcmRMb2cpLGF3YWl0IHBheVVzZXIoc3ltYm9sLGJlbmVQYXksYmVuZWZpY2lhcnkuYWNjb3VudCxyZXdhcmRQb29sLmNvbmZpZy5zdGFrZWRSZXdhcmRQZXJjZW50YWdlLG11dGUpLHRvdGFsQmVuZVBheT1hcGkuQmlnTnVtYmVyKHRvdGFsQmVuZVBheSkucGx1cyhiZW5lUGF5KX1yZXR1cm4gdG90YWxCZW5lUGF5fWFzeW5jIGZ1bmN0aW9uIHBheU91dEN1cmF0b3JzKHJld2FyZFBvb2wsdG9rZW4scG9zdCxjdXJhdG9yUG9ydGlvbixwYXJhbXMpe2NvbnN0e2F1dGhvcnBlcm06YXV0aG9ycGVybSxzeW1ib2w6c3ltYm9sLHJld2FyZFBvb2xJZDpyZXdhcmRQb29sSWR9PXBvc3Qse3ZvdGVRdWVyeUxpbWl0OnZvdGVRdWVyeUxpbWl0fT1wYXJhbXMscmVzcG9uc2U9e2RvbmU6ITEsdm90ZXNQcm9jZXNzZWQ6MH0sdm90ZXNUb1BheW91dD1hd2FpdCBhcGkuZGIuZmluZCgidm90ZXMiLHtyZXdhcmRQb29sSWQ6cmV3YXJkUG9vbElkLGF1dGhvcnBlcm06YXV0aG9ycGVybX0sdm90ZVF1ZXJ5TGltaXQsMCxbe2luZGV4OiJieVRpbWVzdGFtcCIsZGVzY2VuZGluZzohMX0se2luZGV4OiJfaWQiLGRlc2NlbmRpbmc6ITF9XSk7aWYoMD09PXZvdGVzVG9QYXlvdXQubGVuZ3RoKXJlc3BvbnNlLmRvbmU9ITA7ZWxzZXtmb3IobGV0IGk9MDtpPHZvdGVzVG9QYXlvdXQubGVuZ3RoO2krPTEpe2NvbnN0IHZvdGU9dm90ZXNUb1BheW91dFtpXTtpZihhcGkuQmlnTnVtYmVyKHZvdGUuY3VyYXRpb25XZWlnaHQpPjApe2NvbnN0IHRvdGFsQ3VyYXRpb25XZWlnaHQ9Y2FsY3VsYXRlQ3VyYXRpb25XZWlnaHRSc2hhcmVzKHJld2FyZFBvb2wscG9zdC52b3RlUG9zaXRpdmVSc2hhcmVTdW0pLHZvdGVQYXk9YXBpLkJpZ051bWJlcihjdXJhdG9yUG9ydGlvbikubXVsdGlwbGllZEJ5KHZvdGUuY3VyYXRpb25XZWlnaHQpLmRpdmlkZWRCeSh0b3RhbEN1cmF0aW9uV2VpZ2h0KS50b0ZpeGVkKHRva2VuLnByZWNpc2lvbixhcGkuQmlnTnVtYmVyLlJPVU5EX0RPV04pLG11dGU9YXdhaXQgZ2V0TXV0ZShyZXdhcmRQb29sSWQsdm90ZS52b3RlcikscmV3YXJkTG9nPXtyZXdhcmRQb29sSWQ6cmV3YXJkUG9vbElkLGF1dGhvcnBlcm06YXV0aG9ycGVybSxzeW1ib2w6c3ltYm9sLGFjY291bnQ6dm90ZS52b3RlcixxdWFudGl0eTp2b3RlUGF5fTttdXRlJiYocmV3YXJkTG9nLm11dGU9ITApLGFwaS5lbWl0KCJjdXJhdGlvblJld2FyZCIscmV3YXJkTG9nKSxhd2FpdCBwYXlVc2VyKHN5bWJvbCx2b3RlUGF5LHZvdGUudm90ZXIscmV3YXJkUG9vbC5jb25maWcuc3Rha2VkUmV3YXJkUGVyY2VudGFnZSxtdXRlKX1hd2FpdCBhcGkuZGIucmVtb3ZlKCJ2b3RlcyIsdm90ZSl9cmVzcG9uc2Uudm90ZXNQcm9jZXNzZWQrPXZvdGVzVG9QYXlvdXQubGVuZ3RoLHZvdGVzVG9QYXlvdXQubGVuZ3RoPHZvdGVRdWVyeUxpbWl0JiYocmVzcG9uc2UuZG9uZT0hMCl9cmV0dXJuIHJlc3BvbnNlfWFzeW5jIGZ1bmN0aW9uIHBheU91dFBvc3QocmV3YXJkUG9vbCx0b2tlbixwb3N0LHBhcmFtcyl7Y29uc3QgcmVzcG9uc2U9e3RvdGFsUGF5b3V0VmFsdWU6MCx2b3Rlc1Byb2Nlc3NlZDowLGRvbmU6ITF9O2lmKHBvc3QuZGVjbGluZVBheW91dHx8cG9zdC5tdXRlKXJldHVybiBhcGkuZW1pdCgiYXV0aG9yUmV3YXJkIix7cmV3YXJkUG9vbElkOnBvc3QucmV3YXJkUG9vbElkLGF1dGhvcnBlcm06cG9zdC5hdXRob3JwZXJtLHN5bWJvbDpwb3N0LnN5bWJvbCxhY2NvdW50OnBvc3QuYXV0aG9yLHF1YW50aXR5OiIwIn0pLHJlc3BvbnNlLmRvbmU9ITAsYXdhaXQgYXBpLmRiLnJlbW92ZSgicG9zdHMiLHBvc3QpLHJlc3BvbnNlO2NvbnN0IHBvc3RDbGFpbXM9Y2FsY3VsYXRlV2VpZ2h0UnNoYXJlcyhyZXdhcmRQb29sLHBvc3Qudm90ZVJzaGFyZVN1bSkscG9zdFBlbmRpbmdUb2tlbj1hcGkuQmlnTnVtYmVyKHJld2FyZFBvb2wuaW50ZXJ2YWxQZW5kaW5nQ2xhaW1zKS5ndCgwKT9hcGkuQmlnTnVtYmVyKHJld2FyZFBvb2wuaW50ZXJ2YWxSZXdhcmRQb29sKS5tdWx0aXBsaWVkQnkocG9zdENsYWltcykuZGl2aWRlZEJ5KHJld2FyZFBvb2wuaW50ZXJ2YWxQZW5kaW5nQ2xhaW1zKS50b0ZpeGVkKHRva2VuLnByZWNpc2lvbixhcGkuQmlnTnVtYmVyLlJPVU5EX0RPV04pOiIwIjtyZXNwb25zZS50b3RhbFBheW91dFZhbHVlPXBvc3RQZW5kaW5nVG9rZW47Y29uc3QgY3VyYXRvclBvcnRpb249YXBpLkJpZ051bWJlcihwb3N0UGVuZGluZ1Rva2VuKS5tdWx0aXBsaWVkQnkocmV3YXJkUG9vbC5jb25maWcuY3VyYXRpb25SZXdhcmRQZXJjZW50YWdlKS5kaXZpZGVkQnkoMTAwKS50b0ZpeGVkKHRva2VuLnByZWNpc2lvbixhcGkuQmlnTnVtYmVyLlJPVU5EX0RPV04pLGF1dGhvckJlbmVQb3J0aW9uPWFwaS5CaWdOdW1iZXIocG9zdFBlbmRpbmdUb2tlbikubWludXMoY3VyYXRvclBvcnRpb24pLnRvRml4ZWQodG9rZW4ucHJlY2lzaW9uLGFwaS5CaWdOdW1iZXIuUk9VTkRfRE9XTiksYmVuZWZpY2lhcmllc1BheW91dFZhbHVlPWF3YWl0IHBheU91dEJlbmVmaWNpYXJpZXMocmV3YXJkUG9vbCx0b2tlbixwb3N0LGF1dGhvckJlbmVQb3J0aW9uKSxhdXRob3JQb3J0aW9uPWFwaS5CaWdOdW1iZXIoYXV0aG9yQmVuZVBvcnRpb24pLm1pbnVzKGJlbmVmaWNpYXJpZXNQYXlvdXRWYWx1ZSkudG9GaXhlZCh0b2tlbi5wcmVjaXNpb24sYXBpLkJpZ051bWJlci5ST1VORF9ET1dOKSxjdXJhdG9yUGF5U3RhdHVzPWF3YWl0IHBheU91dEN1cmF0b3JzKHJld2FyZFBvb2wsdG9rZW4scG9zdCxjdXJhdG9yUG9ydGlvbixwYXJhbXMpO2lmKHJlc3BvbnNlLnZvdGVzUHJvY2Vzc2VkKz1jdXJhdG9yUGF5U3RhdHVzLnZvdGVzUHJvY2Vzc2VkLHJlc3BvbnNlLmRvbmU9Y3VyYXRvclBheVN0YXR1cy5kb25lLGN1cmF0b3JQYXlTdGF0dXMuZG9uZSl7Y29uc3QgbXV0ZT1hd2FpdCBnZXRNdXRlKHBvc3QucmV3YXJkUG9vbElkLHBvc3QuYXV0aG9yKSxyZXdhcmRMb2c9e3Jld2FyZFBvb2xJZDpwb3N0LnJld2FyZFBvb2xJZCxhdXRob3JwZXJtOnBvc3QuYXV0aG9ycGVybSxzeW1ib2w6cG9zdC5zeW1ib2wsYWNjb3VudDpwb3N0LmF1dGhvcixxdWFudGl0eTphdXRob3JQb3J0aW9ufTttdXRlJiYocmV3YXJkTG9nLm11dGU9ITApLGFwaS5lbWl0KCJhdXRob3JSZXdhcmQiLHJld2FyZExvZyksYXdhaXQgcGF5VXNlcihwb3N0LnN5bWJvbCxhdXRob3JQb3J0aW9uLHBvc3QuYXV0aG9yLHJld2FyZFBvb2wuY29uZmlnLnN0YWtlZFJld2FyZFBlcmNlbnRhZ2UsbXV0ZSksYXdhaXQgYXBpLmRiLnJlbW92ZSgicG9zdHMiLHBvc3QpfXJldHVybiByZXNwb25zZX1hc3luYyBmdW5jdGlvbiBjb21wdXRlUG9zdFJld2FyZHMocGFyYW1zLHJld2FyZFBvb2wsdG9rZW4sZW5kVGltZXN0YW1wKXtjb25zdHtsYXN0Q2xhaW1EZWNheVRpbWVzdGFtcDpsYXN0Q2xhaW1EZWNheVRpbWVzdGFtcH09cmV3YXJkUG9vbCx7bWF4UG9zdHNQcm9jZXNzZWRQZXJSb3VuZDptYXhQb3N0c1Byb2Nlc3NlZFBlclJvdW5kLG1heFZvdGVzUHJvY2Vzc2VkUGVyUm91bmQ6bWF4Vm90ZXNQcm9jZXNzZWRQZXJSb3VuZH09cGFyYW1zLHBvc3RzVG9QYXlvdXQ9YXdhaXQgYXBpLmRiLmZpbmQoInBvc3RzIix7cmV3YXJkUG9vbElkOnJld2FyZFBvb2wuX2lkLGNhc2hvdXRUaW1lOnskZ3RlOmxhc3RDbGFpbURlY2F5VGltZXN0YW1wLCRsdGU6ZW5kVGltZXN0YW1wfX0sbWF4UG9zdHNQcm9jZXNzZWRQZXJSb3VuZCwwLFt7aW5kZXg6ImJ5Q2FzaG91dFRpbWUiLGRlc2NlbmRpbmc6ITF9LHtpbmRleDoiX2lkIixkZXNjZW5kaW5nOiExfV0pO2xldCBkb25lPSExLGRlZHVjdEZyb21SZXdhcmRQb29sPWFwaS5CaWdOdW1iZXIoMCksdm90ZXNQcm9jZXNzZWQ9MDtpZihwb3N0c1RvUGF5b3V0JiZwb3N0c1RvUGF5b3V0Lmxlbmd0aD4wKXtsZXQgbGltaXRSZWFjaGVkPSExO2ZvcihsZXQgaT0wO2k8cG9zdHNUb1BheW91dC5sZW5ndGg7aSs9MSl7Y29uc3QgcG9zdD1wb3N0c1RvUGF5b3V0W2ldLHBvc3RQYXlvdXRSZXNwb25zZT1hd2FpdCBwYXlPdXRQb3N0KHJld2FyZFBvb2wsdG9rZW4scG9zdCxwYXJhbXMpLHt0b3RhbFBheW91dFZhbHVlOnRvdGFsUGF5b3V0VmFsdWV9PXBvc3RQYXlvdXRSZXNwb25zZTtpZih2b3Rlc1Byb2Nlc3NlZCs9cG9zdFBheW91dFJlc3BvbnNlLnZvdGVzUHJvY2Vzc2VkLHBvc3RQYXlvdXRSZXNwb25zZS5kb25lJiYoZGVkdWN0RnJvbVJld2FyZFBvb2w9ZGVkdWN0RnJvbVJld2FyZFBvb2wucGx1cyh0b3RhbFBheW91dFZhbHVlKSksIXBvc3RQYXlvdXRSZXNwb25zZS5kb25lfHx2b3Rlc1Byb2Nlc3NlZD49bWF4Vm90ZXNQcm9jZXNzZWRQZXJSb3VuZCl7bGltaXRSZWFjaGVkPSEwO2JyZWFrfX0hbGltaXRSZWFjaGVkJiZwb3N0c1RvUGF5b3V0Lmxlbmd0aDxtYXhQb3N0c1Byb2Nlc3NlZFBlclJvdW5kJiYoZG9uZT0hMCkscmV3YXJkUG9vbC5yZXdhcmRQb29sPWFwaS5CaWdOdW1iZXIocmV3YXJkUG9vbC5yZXdhcmRQb29sKS5taW51cyhkZWR1Y3RGcm9tUmV3YXJkUG9vbCkudG9GaXhlZCh0b2tlbi5wcmVjaXNpb24sYXBpLkJpZ051bWJlci5ST1VORF9ET1dOKX1lbHNlIGRvbmU9ITA7ZG9uZSYmKHJld2FyZFBvb2wubGFzdENsYWltRGVjYXlUaW1lc3RhbXA9ZW5kVGltZXN0YW1wKX1hc3luYyBmdW5jdGlvbiBwb3N0Q2xhaW1zSW5JbnRlcnZhbChwYXJhbXMscmV3YXJkUG9vbCxzdGFydCxlbmQpe2xldCBwb3N0T2Zmc2V0PTAsbmV3UGVuZGluZ0NsYWltcz1hcGkuQmlnTnVtYmVyKDApLHBvc3RzVG9QYXlvdXQ9YXdhaXQgYXBpLmRiLmZpbmQoInBvc3RzIix7cmV3YXJkUG9vbElkOnJld2FyZFBvb2wuX2lkLGNhc2hvdXRUaW1lOnskZ3RlOnN0YXJ0LCRsdGU6ZW5kfX0sMWUzLHBvc3RPZmZzZXQsW3tpbmRleDoiYnlDYXNob3V0VGltZSIsZGVzY2VuZGluZzohMX0se2luZGV4OiJfaWQiLGRlc2NlbmRpbmc6ITF9XSk7Zm9yKDtwb3N0c1RvUGF5b3V0JiZwb3N0c1RvUGF5b3V0Lmxlbmd0aD4wJiYobmV3UGVuZGluZ0NsYWltcz1uZXdQZW5kaW5nQ2xhaW1zLnBsdXMocG9zdHNUb1BheW91dC5yZWR1Y2UoKHgseSk9PngucGx1cyhjYWxjdWxhdGVXZWlnaHRSc2hhcmVzKHJld2FyZFBvb2wseS52b3RlUnNoYXJlU3VtKSksYXBpLkJpZ051bWJlcigwKSkpLmRwKDEwLGFwaS5CaWdOdW1iZXIuUk9VTkRfRE9XTiksIShwb3N0c1RvUGF5b3V0Lmxlbmd0aDwxZTMpKTspcG9zdE9mZnNldCs9MWUzLHBvc3RzVG9QYXlvdXQ9YXdhaXQgYXBpLmRiLmZpbmQoInBvc3RzIix7cmV3YXJkUG9vbElkOnJld2FyZFBvb2wuX2lkLGNhc2hvdXRUaW1lOnskZ3RlOnN0YXJ0LCRsdGU6ZW5kfX0sMWUzLHBvc3RPZmZzZXQsW3tpbmRleDoiYnlDYXNob3V0VGltZSIsZGVzY2VuZGluZzohMX0se2luZGV4OiJfaWQiLGRlc2NlbmRpbmc6ITF9XSk7cmV0dXJuIG5ld1BlbmRpbmdDbGFpbXN9YXN5bmMgZnVuY3Rpb24gdG9rZW5NYWludGVuYW5jZSgpe2NvbnN0IHRpbWVzdGFtcD1uZXcgRGF0ZShhcGkuaGl2ZUJsb2NrVGltZXN0YW1wKyIuMDAwWiIpLmdldFRpbWUoKSxwYXJhbXM9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInBhcmFtcyIse30pLHtsYXN0TWFpbnRlbmFuY2VCbG9jazpsYXN0TWFpbnRlbmFuY2VCbG9jayxsYXN0UHJvY2Vzc2VkUG9vbElkOmxhc3RQcm9jZXNzZWRQb29sSWQsbWFpbnRlbmFuY2VUb2tlbnNQZXJCbG9jazptYWludGVuYW5jZVRva2Vuc1BlckJsb2NrfT1wYXJhbXM7aWYobGFzdE1haW50ZW5hbmNlQmxvY2s+PWFwaS5ibG9ja051bWJlcilyZXR1cm47cGFyYW1zLmxhc3RNYWludGVuYW5jZUJsb2NrPWFwaS5ibG9ja051bWJlcjtjb25zdCByZXdhcmRQb29sUHJvY2Vzc2luZ0V4cHJlc3Npb249eyRsdGU6WyIkbGFzdENsYWltRGVjYXlUaW1lc3RhbXAiLHskc3VidHJhY3Q6W3RpbWVzdGFtcCx7JG11bHRpcGx5OlsiJGNvbmZpZy5yZXdhcmRJbnRlcnZhbFNlY29uZHMiLDFlM119XX1dfTtsZXQgcmV3YXJkUG9vbHM9YXdhaXQgYXBpLmRiLmZpbmQoInJld2FyZFBvb2xzIix7YWN0aXZlOiEwLCRleHByOnJld2FyZFBvb2xQcm9jZXNzaW5nRXhwcmVzc2lvbixfaWQ6eyRndDpsYXN0UHJvY2Vzc2VkUG9vbElkfX0sbWFpbnRlbmFuY2VUb2tlbnNQZXJCbG9jaywwLFt7aW5kZXg6Il9pZCIsZGVzY2VuZGluZzohMX1dKTtpZighcmV3YXJkUG9vbHN8fHJld2FyZFBvb2xzLmxlbmd0aDxtYWludGVuYW5jZVRva2Vuc1BlckJsb2NrKXtyZXdhcmRQb29sc3x8KHJld2FyZFBvb2xzPVtdKTtjb25zdCBtb3JlUmV3YXJkUG9vbHM9YXdhaXQgYXBpLmRiLmZpbmQoInJld2FyZFBvb2xzIix7YWN0aXZlOiEwLCRleHByOnJld2FyZFBvb2xQcm9jZXNzaW5nRXhwcmVzc2lvbn0sbWFpbnRlbmFuY2VUb2tlbnNQZXJCbG9jay1yZXdhcmRQb29scy5sZW5ndGgsMCxbe2luZGV4OiJfaWQiLGRlc2NlbmRpbmc6ITF9XSksZXhpc3RpbmdJZHM9bmV3IFNldChyZXdhcmRQb29scy5tYXAocD0+cC5faWQpKTttb3JlUmV3YXJkUG9vbHMuZm9yRWFjaChtcnA9PntleGlzdGluZ0lkcy5oYXMobXJwLl9pZCl8fHJld2FyZFBvb2xzLnB1c2gobXJwKX0pfWlmKHJld2FyZFBvb2xzKWZvcihsZXQgaT0wO2k8cmV3YXJkUG9vbHMubGVuZ3RoO2krPTEpe2NvbnN0IHJld2FyZFBvb2w9cmV3YXJkUG9vbHNbaV07cGFyYW1zLmxhc3RQcm9jZXNzZWRQb29sSWQ9cmV3YXJkUG9vbC5faWQ7Y29uc3R7c3ltYm9sOnN5bWJvbCxsYXN0Q2xhaW1EZWNheVRpbWVzdGFtcDpsYXN0Q2xhaW1EZWNheVRpbWVzdGFtcCxsYXN0UmV3YXJkVGltZXN0YW1wOmxhc3RSZXdhcmRUaW1lc3RhbXAsY29uZmlnOmNvbmZpZ309cmV3YXJkUG9vbCx7cmV3YXJkSW50ZXJ2YWxTZWNvbmRzOnJld2FyZEludGVydmFsU2Vjb25kcyxyZXdhcmRQZXJJbnRlcnZhbDpyZXdhcmRQZXJJbnRlcnZhbCxjYXNob3V0V2luZG93RGF5czpjYXNob3V0V2luZG93RGF5c309Y29uZmlnLHRva2VuPWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgidG9rZW5zIiwidG9rZW5zIix7c3ltYm9sOnN5bWJvbH0pLHJld2FyZEludGVydmFsRHVyYXRpb25NaWxsaXM9MWUzKnJld2FyZEludGVydmFsU2Vjb25kcyxuZXh0UmV3YXJkVGltZXN0YW1wPWxhc3RSZXdhcmRUaW1lc3RhbXArcmV3YXJkSW50ZXJ2YWxEdXJhdGlvbk1pbGxpcyxuZXh0Q2xhaW1EZWNheVRpbWVzdGFtcD1sYXN0Q2xhaW1EZWNheVRpbWVzdGFtcCtyZXdhcmRJbnRlcnZhbER1cmF0aW9uTWlsbGlzO2lmKG5leHRDbGFpbURlY2F5VGltZXN0YW1wPj1uZXh0UmV3YXJkVGltZXN0YW1wKXtjb25zdCByZXdhcmRUb0FkZD1hcGkuQmlnTnVtYmVyKHJld2FyZFBlckludGVydmFsKTthcGkuQmlnTnVtYmVyKHJld2FyZFRvQWRkKS5ndCgwKSYmKGF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgidG9rZW5zIiwiaXNzdWVUb0NvbnRyYWN0Iix7c3ltYm9sOnJld2FyZFBvb2wuc3ltYm9sLHF1YW50aXR5OnJld2FyZFRvQWRkLHRvOiJjb21tZW50cyIsaXNTaWduZWRXaXRoQWN0aXZlS2V5OiEwfSkscmV3YXJkUG9vbC5yZXdhcmRQb29sPWFwaS5CaWdOdW1iZXIocmV3YXJkUG9vbC5yZXdhcmRQb29sKS5wbHVzKHJld2FyZFRvQWRkKS50b0ZpeGVkKHRva2VuLnByZWNpc2lvbixhcGkuQmlnTnVtYmVyLlJPVU5EX0RPV04pKTtjb25zdCBhZGp1c3ROdW1lcj1uZXh0UmV3YXJkVGltZXN0YW1wLWxhc3RSZXdhcmRUaW1lc3RhbXAsYWRqdXN0RGVub209MjQqKDIqY2FzaG91dFdpbmRvd0RheXMrMSkqMzYwMCoxZTM7cmV3YXJkUG9vbC5wZW5kaW5nQ2xhaW1zPWFwaS5CaWdOdW1iZXIocmV3YXJkUG9vbC5wZW5kaW5nQ2xhaW1zKS5taW51cyhhcGkuQmlnTnVtYmVyKHJld2FyZFBvb2wucGVuZGluZ0NsYWltcykubXVsdGlwbGllZEJ5KGFkanVzdE51bWVyKS5kaXZpZGVkQnkoYWRqdXN0RGVub20pKS50b0ZpeGVkKDEwLGFwaS5CaWdOdW1iZXIuUk9VTkRfRE9XTikscmV3YXJkUG9vbC5wZW5kaW5nQ2xhaW1zPWFwaS5CaWdOdW1iZXIocmV3YXJkUG9vbC5wZW5kaW5nQ2xhaW1zKS5wbHVzKGF3YWl0IHBvc3RDbGFpbXNJbkludGVydmFsKHBhcmFtcyxyZXdhcmRQb29sLGxhc3RSZXdhcmRUaW1lc3RhbXAsbmV4dFJld2FyZFRpbWVzdGFtcCkpLnRvRml4ZWQoMTAsYXBpLkJpZ051bWJlci5ST1VORF9ET1dOKSxyZXdhcmRQb29sLmxhc3RSZXdhcmRUaW1lc3RhbXA9bmV4dFJld2FyZFRpbWVzdGFtcCxyZXdhcmRQb29sLmludGVydmFsUGVuZGluZ0NsYWltcz1yZXdhcmRQb29sLnBlbmRpbmdDbGFpbXMscmV3YXJkUG9vbC5pbnRlcnZhbFJld2FyZFBvb2w9cmV3YXJkUG9vbC5yZXdhcmRQb29sfWF3YWl0IGNvbXB1dGVQb3N0UmV3YXJkcyhwYXJhbXMscmV3YXJkUG9vbCx0b2tlbixuZXh0Q2xhaW1EZWNheVRpbWVzdGFtcCksYXdhaXQgYXBpLmRiLnVwZGF0ZSgicmV3YXJkUG9vbHMiLHJld2FyZFBvb2wpfWF3YWl0IGFwaS5kYi51cGRhdGUoInBhcmFtcyIscGFyYW1zKX1mdW5jdGlvbiBhc3NlcnRBcHBUYXhDb25maWdWYWxpZChhcHBUYXhDb25maWcpe2lmKCFhcGkuYXNzZXJ0KCFhcHBUYXhDb25maWd8fCJvYmplY3QiPT10eXBlb2YgYXBwVGF4Q29uZmlnLCJhcHBUYXhDb25maWcgaW52YWxpZCIpKXJldHVybiExO2lmKGFwcFRheENvbmZpZyl7Y29uc3R7YXBwOmFwcCxwZXJjZW50OnBlcmNlbnQsYmVuZWZpY2lhcnk6YmVuZWZpY2lhcnl9PWFwcFRheENvbmZpZztpZighYXBpLmFzc2VydChhcHAmJiJzdHJpbmciPT10eXBlb2YgYXBwLCJhcHBUYXhDb25maWcgYXBwIGludmFsaWQiKSlyZXR1cm4hMTtpZighYXBpLmFzc2VydChwZXJjZW50JiZOdW1iZXIuaXNJbnRlZ2VyKHBlcmNlbnQpJiZwZXJjZW50Pj0xJiZwZXJjZW50PD0xMDAsImFwcFRheENvbmZpZyBwZXJjZW50IHNob3VsZCBiZSBhbiBpbnRlZ2VyIGJldHdlZW4gMSBhbmQgMTAwIikpcmV0dXJuITE7aWYoIWFwaS5hc3NlcnQoYmVuZWZpY2lhcnkmJmFwaS5pc1ZhbGlkQWNjb3VudE5hbWUoYmVuZWZpY2lhcnkpLCJhcHBUYXhDb25maWcgYmVuZWZpY2lhcnkgaW52YWxpZCIpKXJldHVybiExfXJldHVybiEwfWFzeW5jIGZ1bmN0aW9uIGdldFJld2FyZFBvb2xJZHMocGF5bG9hZCl7Y29uc3R7cmV3YXJkUG9vbHM6cmV3YXJkUG9vbHMsanNvbk1ldGFkYXRhOmpzb25NZXRhZGF0YSxwYXJlbnRBdXRob3I6cGFyZW50QXV0aG9yLHBhcmVudFBlcm1saW5rOnBhcmVudFBlcm1saW5rfT1wYXlsb2FkLHBhcmFtcz1hd2FpdCBhcGkuZGIuZmluZE9uZSgicGFyYW1zIix7fSk7aWYocGFyZW50QXV0aG9yJiZwYXJlbnRQZXJtbGluayl7Y29uc3QgcGFyZW50QXV0aG9ycGVybT1gQCR7cGFyZW50QXV0aG9yfS8ke3BhcmVudFBlcm1saW5rfWAscGFyZW50UG9zdE1ldGFkYXRhPWF3YWl0IGFwaS5kYi5maW5kT25lKCJwb3N0TWV0YWRhdGEiLHthdXRob3JwZXJtOnBhcmVudEF1dGhvcnBlcm19KTtpZihwYXJlbnRQb3N0TWV0YWRhdGEpcmV0dXJuIHBhcmVudFBvc3RNZXRhZGF0YS5yZXdhcmRQb29sSWRzO2NvbnN0IHBhcmVudFBvc3RzPWF3YWl0IGFwaS5kYi5maW5kKCJwb3N0cyIse2F1dGhvcnBlcm06cGFyZW50QXV0aG9ycGVybX0pO3JldHVybiBwYXJlbnRQb3N0cyYmcGFyZW50UG9zdHMubGVuZ3RoPjA/cGFyZW50UG9zdHMubWFwKHA9PnAucmV3YXJkUG9vbElkKTpbXX1pZihqc29uTWV0YWRhdGEmJmpzb25NZXRhZGF0YS50YWdzJiZBcnJheS5pc0FycmF5KGpzb25NZXRhZGF0YS50YWdzKSYmanNvbk1ldGFkYXRhLnRhZ3MuZXZlcnkodD0+InN0cmluZyI9PXR5cGVvZiB0KSl7Y29uc3Qgc2VhcmNoVGFncz1wYXJlbnRQZXJtbGluaz9qc29uTWV0YWRhdGEudGFncy5jb25jYXQoW3BhcmVudFBlcm1saW5rXSk6anNvbk1ldGFkYXRhLnRhZ3MscG9vbFF1ZXJ5PXsiY29uZmlnLnRhZ3MiOnskaW46c2VhcmNoVGFnc30sImNvbmZpZy5leGNsdWRlVGFncyI6eyRub3Q6eyRpbjpzZWFyY2hUYWdzfX19LHRhZ1Jld2FyZFBvb2xzPWF3YWl0IGFwaS5kYi5maW5kKCJyZXdhcmRQb29scyIscG9vbFF1ZXJ5LHBhcmFtcy5tYXhQb29sc1BlclBvc3QsMCxbe2luZGV4OiJfaWQiLGRlc2NlbmRpbmc6ITF9XSk7aWYodGFnUmV3YXJkUG9vbHMmJnRhZ1Jld2FyZFBvb2xzLmxlbmd0aD4wKXJldHVybiB0YWdSZXdhcmRQb29scy5tYXAocj0+ci5faWQpfXJldHVybltdfWFzeW5jIGZ1bmN0aW9uIHByb2Nlc3NWb3RlKHBvc3Qsdm90ZXIsd2VpZ2h0LHRpbWVzdGFtcCl7Y29uc3R7cmV3YXJkUG9vbElkOnJld2FyZFBvb2xJZCxzeW1ib2w6c3ltYm9sLGF1dGhvcnBlcm06YXV0aG9ycGVybSxjYXNob3V0VGltZTpjYXNob3V0VGltZX09cG9zdDtpZihjYXNob3V0VGltZTx0aW1lc3RhbXApcmV0dXJuO2NvbnN0IHJld2FyZFBvb2w9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInJld2FyZFBvb2xzIix7X2lkOnJld2FyZFBvb2xJZH0pO2lmKCFyZXdhcmRQb29sfHwhcmV3YXJkUG9vbC5hY3RpdmUpcmV0dXJuO2xldCB2b3RpbmdQb3dlcj1hd2FpdCBhcGkuZGIuZmluZE9uZSgidm90aW5nUG93ZXIiLHtyZXdhcmRQb29sSWQ6cmV3YXJkUG9vbElkLGFjY291bnQ6dm90ZXJ9KTt2b3RpbmdQb3dlcj8odm90aW5nUG93ZXIudm90aW5nUG93ZXIrPTFlNCoodGltZXN0YW1wLXZvdGluZ1Bvd2VyLmxhc3RWb3RlVGltZXN0YW1wKS8oMjQqcmV3YXJkUG9vbC5jb25maWcudm90ZVJlZ2VuZXJhdGlvbkRheXMqMzYwMCoxZTMpLHZvdGluZ1Bvd2VyLnZvdGluZ1Bvd2VyPU1hdGguZmxvb3Iodm90aW5nUG93ZXIudm90aW5nUG93ZXIpLHZvdGluZ1Bvd2VyLnZvdGluZ1Bvd2VyPU1hdGgubWluKHZvdGluZ1Bvd2VyLnZvdGluZ1Bvd2VyLDFlNCksdm90aW5nUG93ZXIuZG93bnZvdGluZ1Bvd2VyKz0xZTQqKHRpbWVzdGFtcC12b3RpbmdQb3dlci5sYXN0Vm90ZVRpbWVzdGFtcCkvKDI0KnJld2FyZFBvb2wuY29uZmlnLmRvd252b3RlUmVnZW5lcmF0aW9uRGF5cyozNjAwKjFlMyksdm90aW5nUG93ZXIuZG93bnZvdGluZ1Bvd2VyPU1hdGguZmxvb3Iodm90aW5nUG93ZXIuZG93bnZvdGluZ1Bvd2VyKSx2b3RpbmdQb3dlci5kb3dudm90aW5nUG93ZXI9TWF0aC5taW4odm90aW5nUG93ZXIuZG93bnZvdGluZ1Bvd2VyLDFlNCksdm90aW5nUG93ZXIubGFzdFZvdGVUaW1lc3RhbXA9dGltZXN0YW1wKToodm90aW5nUG93ZXI9e3Jld2FyZFBvb2xJZDpyZXdhcmRQb29sSWQsYWNjb3VudDp2b3RlcixsYXN0Vm90ZVRpbWVzdGFtcDp0aW1lc3RhbXAsdm90aW5nUG93ZXI6MWU0LGRvd252b3RpbmdQb3dlcjoxZTR9LHZvdGluZ1Bvd2VyPWF3YWl0IGFwaS5kYi5pbnNlcnQoInZvdGluZ1Bvd2VyIix2b3RpbmdQb3dlcikpO2NvbnN0IHZvdGVyVG9rZW5CYWxhbmNlPWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgidG9rZW5zIiwiYmFsYW5jZXMiLHtzeW1ib2w6c3ltYm9sLGFjY291bnQ6dm90ZXJ9KTtsZXQgc3Rha2U9dm90ZXJUb2tlbkJhbGFuY2U/dm90ZXJUb2tlbkJhbGFuY2Uuc3Rha2U6IjAiO3ZvdGVyVG9rZW5CYWxhbmNlJiZ2b3RlclRva2VuQmFsYW5jZS5kZWxlZ2F0aW9uc0luJiZhcGkuQmlnTnVtYmVyKHZvdGVyVG9rZW5CYWxhbmNlLmRlbGVnYXRpb25zSW4pLmlzRmluaXRlKCkmJihzdGFrZT1hcGkuQmlnTnVtYmVyKHN0YWtlKS5wbHVzKHZvdGVyVG9rZW5CYWxhbmNlLmRlbGVnYXRpb25zSW4pKTtsZXQgdm90ZVJzaGFyZXM9IjAiLHVwZGF0ZWRQb3N0UnNoYXJlcz0iMCIsdXNlZFBvd2VyPTAsdXNlZERvd252b3RlUG93ZXI9MCxjdXJhdGlvbldlaWdodD0iMCI7aWYod2VpZ2h0PjApe3ZvdGVSc2hhcmVzPWFwaS5CaWdOdW1iZXIoc3Rha2UpLm11bHRpcGxpZWRCeSh3ZWlnaHQpLm11bHRpcGxpZWRCeSh2b3RpbmdQb3dlci52b3RpbmdQb3dlcikuZGl2aWRlZEJ5KDFlNCkuZGl2aWRlZEJ5KDFlNCkudG9GaXhlZCgxMCxhcGkuQmlnTnVtYmVyLlJPVU5EX0RPV04pLHVzZWRQb3dlcj1NYXRoLmZsb29yKHZvdGluZ1Bvd2VyLnZvdGluZ1Bvd2VyKk1hdGguYWJzKHdlaWdodCkqNjAqNjAqMjQvMWU0KTtjb25zdCB1c2VkUG93ZXJEZW5vbT1NYXRoLmZsb29yKDg2NGU2L3Jld2FyZFBvb2wuY29uZmlnLnZvdGVQb3dlckNvbnN1bXB0aW9uKTt1c2VkUG93ZXI9TWF0aC5mbG9vcigodXNlZFBvd2VyK3VzZWRQb3dlckRlbm9tLTEpL3VzZWRQb3dlckRlbm9tKSx2b3RpbmdQb3dlci52b3RpbmdQb3dlcj1NYXRoLm1heCgwLE1hdGguZmxvb3Iodm90aW5nUG93ZXIudm90aW5nUG93ZXItdXNlZFBvd2VyKSksY3VyYXRpb25XZWlnaHQ9YXBpLkJpZ051bWJlcihjYWxjdWxhdGVDdXJhdGlvbldlaWdodFJzaGFyZXMocmV3YXJkUG9vbCxhcGkuQmlnTnVtYmVyKHZvdGVSc2hhcmVzKS5wbHVzKHBvc3Qudm90ZVBvc2l0aXZlUnNoYXJlU3VtKSkpLm1pbnVzKGNhbGN1bGF0ZUN1cmF0aW9uV2VpZ2h0UnNoYXJlcyhyZXdhcmRQb29sLHBvc3Qudm90ZVBvc2l0aXZlUnNoYXJlU3VtKSkudG9GaXhlZCgxMCxhcGkuQmlnTnVtYmVyLlJPVU5EX0RPV04pfWVsc2UgaWYod2VpZ2h0PDAmJiFyZXdhcmRQb29sLmNvbmZpZy5kaXNhYmxlRG93bnZvdGUpe3ZvdGVSc2hhcmVzPWFwaS5CaWdOdW1iZXIoc3Rha2UpLm11bHRpcGxpZWRCeSh3ZWlnaHQpLm11bHRpcGxpZWRCeSh2b3RpbmdQb3dlci5kb3dudm90aW5nUG93ZXIpLmRpdmlkZWRCeSgxZTQpLmRpdmlkZWRCeSgxZTQpLnRvRml4ZWQoMTAsYXBpLkJpZ051bWJlci5ST1VORF9ET1dOKSx1c2VkRG93bnZvdGVQb3dlcj1NYXRoLmZsb29yKHZvdGluZ1Bvd2VyLmRvd252b3RpbmdQb3dlcipNYXRoLmFicyh3ZWlnaHQpKjYwKjYwKjI0LzFlNCk7Y29uc3QgdXNlZERvd252b3RlUG93ZXJEZW5vbT1NYXRoLmZsb29yKDg2NGU2L3Jld2FyZFBvb2wuY29uZmlnLmRvd252b3RlUG93ZXJDb25zdW1wdGlvbik7dXNlZERvd252b3RlUG93ZXI9TWF0aC5mbG9vcigodXNlZERvd252b3RlUG93ZXIrdXNlZERvd252b3RlUG93ZXJEZW5vbS0xKS91c2VkRG93bnZvdGVQb3dlckRlbm9tKSx2b3RpbmdQb3dlci5kb3dudm90aW5nUG93ZXI9TWF0aC5tYXgoMCxNYXRoLmZsb29yKHZvdGluZ1Bvd2VyLmRvd252b3RpbmdQb3dlci11c2VkRG93bnZvdGVQb3dlcikpfXZvdGluZ1Bvd2VyLm11dGUmJih2b3RlUnNoYXJlcz0iMCIsY3VyYXRpb25XZWlnaHQ9IjAiKSxhd2FpdCBhcGkuZGIudXBkYXRlKCJ2b3RpbmdQb3dlciIsdm90aW5nUG93ZXIpO2xldCB2b3RlPWF3YWl0IGFwaS5kYi5maW5kT25lKCJ2b3RlcyIse3Jld2FyZFBvb2xJZDpyZXdhcmRQb29sSWQsYXV0aG9ycGVybTphdXRob3JwZXJtLHZvdGVyOnZvdGVyfSk7aWYodm90ZSl7dm90ZS50aW1lc3RhbXA9dGltZXN0YW1wLHZvdGUud2VpZ2h0PXdlaWdodCx2b3RlLmN1cmF0aW9uV2VpZ2h0PSIwIjtjb25zdCBvbGRWb3RlUnNoYXJlcz12b3RlLnJzaGFyZXM7dm90ZS5yc2hhcmVzPXZvdGVSc2hhcmVzLHVwZGF0ZWRQb3N0UnNoYXJlcz1hcGkuQmlnTnVtYmVyKHZvdGVSc2hhcmVzKS5taW51cyhvbGRWb3RlUnNoYXJlcykudG9GaXhlZCgxMCxhcGkuQmlnTnVtYmVyLlJPVU5EX0RPV04pLGF3YWl0IGFwaS5kYi51cGRhdGUoInZvdGVzIix2b3RlKTtjb25zdCB2b3RlTG9nPXtyZXdhcmRQb29sSWQ6cmV3YXJkUG9vbElkLHN5bWJvbDpyZXdhcmRQb29sLnN5bWJvbCxyc2hhcmVzOnZvdGVSc2hhcmVzfTt2b3RpbmdQb3dlci5tdXRlJiYodm90ZUxvZy5tdXRlPSEwKSxhcGkuZW1pdCgidXBkYXRlVm90ZSIsdm90ZUxvZyl9ZWxzZXt2b3RlPXtyZXdhcmRQb29sSWQ6cmV3YXJkUG9vbElkLHN5bWJvbDpzeW1ib2wsYXV0aG9ycGVybTphdXRob3JwZXJtLHdlaWdodDp3ZWlnaHQscnNoYXJlczp2b3RlUnNoYXJlcyxjdXJhdGlvbldlaWdodDpjdXJhdGlvbldlaWdodCx0aW1lc3RhbXA6dGltZXN0YW1wLHZvdGVyOnZvdGVyfSx1cGRhdGVkUG9zdFJzaGFyZXM9dm90ZVJzaGFyZXMsYXdhaXQgYXBpLmRiLmluc2VydCgidm90ZXMiLHZvdGUpO2NvbnN0IHZvdGVMb2c9e3Jld2FyZFBvb2xJZDpyZXdhcmRQb29sSWQsc3ltYm9sOnJld2FyZFBvb2wuc3ltYm9sLHJzaGFyZXM6dm90ZVJzaGFyZXN9O3ZvdGluZ1Bvd2VyLm11dGUmJih2b3RlTG9nLm11dGU9ITApLGFwaS5lbWl0KCJuZXdWb3RlIix2b3RlTG9nKX1jb25zdCBvbGRQb3N0Q2xhaW1zPWNhbGN1bGF0ZVdlaWdodFJzaGFyZXMocmV3YXJkUG9vbCxwb3N0LnZvdGVSc2hhcmVTdW0pO2lmKHBvc3Qudm90ZVJzaGFyZVN1bT1hcGkuQmlnTnVtYmVyKHBvc3Qudm90ZVJzaGFyZVN1bSkucGx1cyh1cGRhdGVkUG9zdFJzaGFyZXMpLnRvRml4ZWQoMTAsYXBpLkJpZ051bWJlci5ST1VORF9ET1dOKSxhcGkuQmlnTnVtYmVyKHVwZGF0ZWRQb3N0UnNoYXJlcykuZ3QoMCkmJihwb3N0LnZvdGVQb3NpdGl2ZVJzaGFyZVN1bT1hcGkuQmlnTnVtYmVyKHBvc3Qudm90ZVBvc2l0aXZlUnNoYXJlU3VtKS5wbHVzKHVwZGF0ZWRQb3N0UnNoYXJlcykudG9GaXhlZCgxMCxhcGkuQmlnTnVtYmVyLlJPVU5EX0RPV04pLHRpbWVzdGFtcDxyZXdhcmRQb29sLmNyZWF0ZWRUaW1lc3RhbXArMjQqKDIqcmV3YXJkUG9vbC5jb25maWcuY2FzaG91dFdpbmRvd0RheXMrMSkqMzYwMCoxZTMpKXtjb25zdCBuZXdQb3N0Q2xhaW1zPWNhbGN1bGF0ZVdlaWdodFJzaGFyZXMocmV3YXJkUG9vbCxwb3N0LnZvdGVSc2hhcmVTdW0pO3Jld2FyZFBvb2wucGVuZGluZ0NsYWltcz1hcGkuQmlnTnVtYmVyKHJld2FyZFBvb2wucGVuZGluZ0NsYWltcykucGx1cyhuZXdQb3N0Q2xhaW1zKS5taW51cyhvbGRQb3N0Q2xhaW1zKS50b0ZpeGVkKDEwLGFwaS5CaWdOdW1iZXIuUk9VTkRfRE9XTiksYXdhaXQgYXBpLmRiLnVwZGF0ZSgicmV3YXJkUG9vbHMiLHJld2FyZFBvb2wpfWF3YWl0IGFwaS5kYi51cGRhdGUoInBvc3RzIixwb3N0KX1hY3Rpb25zLmNyZWF0ZVNTQz1hc3luYygpPT57aWYoITE9PT1hd2FpdCBhcGkuZGIudGFibGVFeGlzdHMoInJld2FyZFBvb2xzIikpe2F3YWl0IGFwaS5kYi5jcmVhdGVUYWJsZSgicGFyYW1zIiksYXdhaXQgYXBpLmRiLmNyZWF0ZVRhYmxlKCJyZXdhcmRQb29scyIsWyJjb25maWcudGFncyIsImxhc3RDbGFpbURlY2F5VGltZXN0YW1wIl0pLGF3YWl0IGFwaS5kYi5jcmVhdGVUYWJsZSgicG9zdHMiLFsiYXV0aG9ycGVybSIse25hbWU6ImJ5Q2FzaG91dFRpbWUiLGluZGV4OntyZXdhcmRQb29sSWQ6MSxjYXNob3V0VGltZToxfX1dLHtwcmltYXJ5S2V5OlsiYXV0aG9ycGVybSIsInJld2FyZFBvb2xJZCJdfSksYXdhaXQgYXBpLmRiLmNyZWF0ZVRhYmxlKCJwb3N0TWV0YWRhdGEiLFtdLHtwcmltYXJ5S2V5OlsiYXV0aG9ycGVybSJdfSksYXdhaXQgYXBpLmRiLmNyZWF0ZVRhYmxlKCJ2b3RlcyIsW3tuYW1lOiJieVRpbWVzdGFtcCIsaW5kZXg6e3Jld2FyZFBvb2xJZDoxLGF1dGhvcnBlcm06MSx0aW1lc3RhbXA6MX19XSx7cHJpbWFyeUtleTpbInJld2FyZFBvb2xJZCIsImF1dGhvcnBlcm0iLCJ2b3RlciJdfSksYXdhaXQgYXBpLmRiLmNyZWF0ZVRhYmxlKCJ2b3RpbmdQb3dlciIsW10se3ByaW1hcnlLZXk6WyJyZXdhcmRQb29sSWQiLCJhY2NvdW50Il19KTtjb25zdCBwYXJhbXM9e3NldHVwRmVlOiIxMDAwIix1cGRhdGVGZWU6IjIwIixtYXhQb29sc1BlclBvc3Q6MjAsbWF4VGFnc1BlclBvb2w6NSxtYWludGVuYW5jZVRva2Vuc1BlckJsb2NrOjIsbGFzdE1haW50ZW5hbmNlQmxvY2s6YXBpLmJsb2NrTnVtYmVyLG1heFBvc3RzUHJvY2Vzc2VkUGVyUm91bmQ6MjAsdm90ZVF1ZXJ5TGltaXQ6MTAwLG1heFZvdGVzUHJvY2Vzc2VkUGVyUm91bmQ6MTAwLGxhc3RQcm9jZXNzZWRQb29sSWQ6MH07YXdhaXQgYXBpLmRiLmluc2VydCgicGFyYW1zIixwYXJhbXMpfX0sYWN0aW9ucy51cGRhdGVQYXJhbXM9YXN5bmMgcGF5bG9hZD0+e2lmKGFwaS5zZW5kZXIhPT1hcGkub3duZXIpcmV0dXJuO2NvbnN0e3NldHVwRmVlOnNldHVwRmVlLHVwZGF0ZUZlZTp1cGRhdGVGZWUsbWFpbnRlbmFuY2VUb2tlbnNQZXJCbG9jazptYWludGVuYW5jZVRva2Vuc1BlckJsb2NrLG1heFBvc3RzUHJvY2Vzc2VkUGVyUm91bmQ6bWF4UG9zdHNQcm9jZXNzZWRQZXJSb3VuZCxtYXhWb3Rlc1Byb2Nlc3NlZFBlclJvdW5kOm1heFZvdGVzUHJvY2Vzc2VkUGVyUm91bmQsdm90ZVF1ZXJ5TGltaXQ6dm90ZVF1ZXJ5TGltaXR9PXBheWxvYWQscGFyYW1zPWF3YWl0IGFwaS5kYi5maW5kT25lKCJwYXJhbXMiLHt9KTtpZihzZXR1cEZlZSl7aWYoIWFwaS5hc3NlcnQoInN0cmluZyI9PXR5cGVvZiBzZXR1cEZlZSYmIWFwaS5CaWdOdW1iZXIoc2V0dXBGZWUpLmlzTmFOKCkmJmFwaS5CaWdOdW1iZXIoc2V0dXBGZWUpLmd0ZSgwKSwiaW52YWxpZCBzZXR1cEZlZSIpKXJldHVybjtwYXJhbXMuc2V0dXBGZWU9c2V0dXBGZWV9aWYodXBkYXRlRmVlKXtpZighYXBpLmFzc2VydCgic3RyaW5nIj09dHlwZW9mIHVwZGF0ZUZlZSYmIWFwaS5CaWdOdW1iZXIodXBkYXRlRmVlKS5pc05hTigpJiZhcGkuQmlnTnVtYmVyKHVwZGF0ZUZlZSkuZ3RlKDApLCJpbnZhbGlkIHVwZGF0ZUZlZSIpKXJldHVybjtwYXJhbXMudXBkYXRlRmVlPXVwZGF0ZUZlZX1pZihtYWludGVuYW5jZVRva2Vuc1BlckJsb2NrKXtpZighYXBpLmFzc2VydChOdW1iZXIuaXNJbnRlZ2VyKG1haW50ZW5hbmNlVG9rZW5zUGVyQmxvY2spJiZtYWludGVuYW5jZVRva2Vuc1BlckJsb2NrPj0xLCJpbnZhbGlkIG1haW50ZW5hbmNlVG9rZW5zUGVyQmxvY2siKSlyZXR1cm47cGFyYW1zLm1haW50ZW5hbmNlVG9rZW5zUGVyQmxvY2s9bWFpbnRlbmFuY2VUb2tlbnNQZXJCbG9ja31pZihtYXhQb3N0c1Byb2Nlc3NlZFBlclJvdW5kKXtpZighYXBpLmFzc2VydChOdW1iZXIuaXNJbnRlZ2VyKG1heFBvc3RzUHJvY2Vzc2VkUGVyUm91bmQpJiZtYXhQb3N0c1Byb2Nlc3NlZFBlclJvdW5kPj0xLCJpbnZhbGlkIG1heFBvc3RzUHJvY2Vzc2VkUGVyUm91bmQiKSlyZXR1cm47cGFyYW1zLm1heFBvc3RzUHJvY2Vzc2VkUGVyUm91bmQ9bWF4UG9zdHNQcm9jZXNzZWRQZXJSb3VuZH1pZihtYXhWb3Rlc1Byb2Nlc3NlZFBlclJvdW5kKXtpZighYXBpLmFzc2VydChOdW1iZXIuaXNJbnRlZ2VyKG1heFZvdGVzUHJvY2Vzc2VkUGVyUm91bmQpJiZtYXhWb3Rlc1Byb2Nlc3NlZFBlclJvdW5kPj0xLCJpbnZhbGlkIG1heFZvdGVzUHJvY2Vzc2VkUGVyUm91bmQiKSlyZXR1cm47cGFyYW1zLm1heFZvdGVzUHJvY2Vzc2VkUGVyUm91bmQ9bWF4Vm90ZXNQcm9jZXNzZWRQZXJSb3VuZH1pZih2b3RlUXVlcnlMaW1pdCl7aWYoIWFwaS5hc3NlcnQoTnVtYmVyLmlzSW50ZWdlcih2b3RlUXVlcnlMaW1pdCkmJnZvdGVRdWVyeUxpbWl0Pj0xLCJpbnZhbGlkIHZvdGVRdWVyeUxpbWl0IikpcmV0dXJuO3BhcmFtcy52b3RlUXVlcnlMaW1pdD12b3RlUXVlcnlMaW1pdH1hd2FpdCBhcGkuZGIudXBkYXRlKCJwYXJhbXMiLHBhcmFtcyl9LGFjdGlvbnMuY3JlYXRlUmV3YXJkUG9vbD1hc3luYyBwYXlsb2FkPT57Y29uc3R7c3ltYm9sOnN5bWJvbCxjb25maWc6Y29uZmlnLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9PXBheWxvYWQ7aWYoIWFwaS5hc3NlcnQoITA9PT1pc1NpZ25lZFdpdGhBY3RpdmVLZXksIm9wZXJhdGlvbiBtdXN0IGJlIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpKXJldHVybjtjb25zdCBwYXJhbXM9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInBhcmFtcyIse30pLHtzZXR1cEZlZTpzZXR1cEZlZSxtYXhUYWdzUGVyUG9vbDptYXhUYWdzUGVyUG9vbH09cGFyYW1zLHV0aWxpdHlUb2tlbkJhbGFuY2U9YXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJ0b2tlbnMiLCJiYWxhbmNlcyIse2FjY291bnQ6YXBpLnNlbmRlcixzeW1ib2w6IkJFRSJ9KSxhdXRob3JpemVkQ3JlYXRpb249ISghYXBpLkJpZ051bWJlcihzZXR1cEZlZSkubHRlKDApJiZhcGkuc2VuZGVyIT09YXBpLm93bmVyKXx8dXRpbGl0eVRva2VuQmFsYW5jZSYmYXBpLkJpZ051bWJlcih1dGlsaXR5VG9rZW5CYWxhbmNlLmJhbGFuY2UpLmd0ZShzZXR1cEZlZSk7aWYoIWFwaS5hc3NlcnQoYXV0aG9yaXplZENyZWF0aW9uLCJ5b3UgbXVzdCBoYXZlIGVub3VnaCB0b2tlbnMgdG8gY292ZXIgdGhlIGNyZWF0aW9uIGZlZSIpKXJldHVybjtjb25zdCB0b2tlbj1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoInRva2VucyIsInRva2VucyIse3N5bWJvbDpzeW1ib2x9KTtpZighYXBpLmFzc2VydCh0b2tlbiwidG9rZW4gbm90IGZvdW5kIikpcmV0dXJuO2lmKCFhcGkuYXNzZXJ0KGNvbmZpZyYmIm9iamVjdCI9PXR5cGVvZiBjb25maWcsImNvbmZpZyBpbnZhbGlkIikpcmV0dXJuO2NvbnN0e3Bvc3RSZXdhcmRDdXJ2ZTpwb3N0UmV3YXJkQ3VydmUscG9zdFJld2FyZEN1cnZlUGFyYW1ldGVyOnBvc3RSZXdhcmRDdXJ2ZVBhcmFtZXRlcixjdXJhdGlvblJld2FyZEN1cnZlOmN1cmF0aW9uUmV3YXJkQ3VydmUsY3VyYXRpb25SZXdhcmRDdXJ2ZVBhcmFtZXRlcjpjdXJhdGlvblJld2FyZEN1cnZlUGFyYW1ldGVyLGN1cmF0aW9uUmV3YXJkUGVyY2VudGFnZTpjdXJhdGlvblJld2FyZFBlcmNlbnRhZ2UsY2FzaG91dFdpbmRvd0RheXM6Y2FzaG91dFdpbmRvd0RheXMscmV3YXJkUGVySW50ZXJ2YWw6cmV3YXJkUGVySW50ZXJ2YWwscmV3YXJkSW50ZXJ2YWxTZWNvbmRzOnJld2FyZEludGVydmFsU2Vjb25kcyx2b3RlUmVnZW5lcmF0aW9uRGF5czp2b3RlUmVnZW5lcmF0aW9uRGF5cyxkb3dudm90ZVJlZ2VuZXJhdGlvbkRheXM6ZG93bnZvdGVSZWdlbmVyYXRpb25EYXlzLHN0YWtlZFJld2FyZFBlcmNlbnRhZ2U6c3Rha2VkUmV3YXJkUGVyY2VudGFnZSx2b3RlUG93ZXJDb25zdW1wdGlvbjp2b3RlUG93ZXJDb25zdW1wdGlvbixkb3dudm90ZVBvd2VyQ29uc3VtcHRpb246ZG93bnZvdGVQb3dlckNvbnN1bXB0aW9uLHRhZ3M6dGFncyxkaXNhYmxlRG93bnZvdGU6ZGlzYWJsZURvd252b3RlLGlnbm9yZURlY2xpbmVQYXlvdXQ6aWdub3JlRGVjbGluZVBheW91dCxhcHBUYXhDb25maWc6YXBwVGF4Q29uZmlnLGV4Y2x1ZGVUYWdzOmV4Y2x1ZGVUYWdzfT1jb25maWc7aWYoIWFwaS5hc3NlcnQocG9zdFJld2FyZEN1cnZlJiYicG93ZXIiPT09cG9zdFJld2FyZEN1cnZlLCJwb3N0UmV3YXJkQ3VydmUgc2hvdWxkIGJlIG9uZSBvZjogW3Bvd2VyXSIpKXJldHVybjtjb25zdCBwb3N0RXhwb25lbnQ9YXBpLkJpZ051bWJlcihwb3N0UmV3YXJkQ3VydmVQYXJhbWV0ZXIpO2lmKCFhcGkuYXNzZXJ0KCJzdHJpbmciPT10eXBlb2YgcG9zdFJld2FyZEN1cnZlUGFyYW1ldGVyJiZwb3N0RXhwb25lbnQuaXNGaW5pdGUoKSYmcG9zdEV4cG9uZW50Lmd0ZSgiMSIpJiZwb3N0RXhwb25lbnQubHRlKCIyIikmJnBvc3RFeHBvbmVudC5kcCgpPD0yLCdwb3N0UmV3YXJkQ3VydmVQYXJhbWV0ZXIgc2hvdWxkIGJlIGJldHdlZW4gIjEiIGFuZCAiMiIgd2l0aCBwcmVjaXNpb24gYXQgbW9zdCAyJykpcmV0dXJuO2lmKCFhcGkuYXNzZXJ0KGN1cmF0aW9uUmV3YXJkQ3VydmUmJiJwb3dlciI9PT1jdXJhdGlvblJld2FyZEN1cnZlLCJjdXJhdGlvblJld2FyZEN1cnZlIHNob3VsZCBiZSBvbmUgb2Y6IFtwb3dlcl0iKSlyZXR1cm47Y29uc3QgY3VyYXRpb25FeHBvbmVudD1hcGkuQmlnTnVtYmVyKGN1cmF0aW9uUmV3YXJkQ3VydmVQYXJhbWV0ZXIpO2lmKCFhcGkuYXNzZXJ0KCJzdHJpbmciPT10eXBlb2YgY3VyYXRpb25SZXdhcmRDdXJ2ZVBhcmFtZXRlciYmY3VyYXRpb25FeHBvbmVudC5pc0Zpbml0ZSgpJiZjdXJhdGlvbkV4cG9uZW50Lmd0ZSgiMC41IikmJmN1cmF0aW9uRXhwb25lbnQubHRlKCIxIikmJmN1cmF0aW9uRXhwb25lbnQuZHAoKTw9MiwnY3VyYXRpb25SZXdhcmRDdXJ2ZVBhcmFtZXRlciBjYW4gb25seSBiZSBiZXR3ZWVuICIwLjUiIGFuZCAiMSIgd2l0aCBwcmVjaXNpb24gYXQgbW9zdCAyJykpcmV0dXJuO2lmKCFhcGkuYXNzZXJ0KE51bWJlci5pc0ludGVnZXIoY3VyYXRpb25SZXdhcmRQZXJjZW50YWdlKSYmY3VyYXRpb25SZXdhcmRQZXJjZW50YWdlPj0wJiZjdXJhdGlvblJld2FyZFBlcmNlbnRhZ2U8PTEwMCwiY3VyYXRpb25SZXdhcmRQZXJjZW50YWdlIHNob3VsZCBiZSBhbiBpbnRlZ2VyIGJldHdlZW4gMCBhbmQgMTAwIikpcmV0dXJuO2lmKCFhcGkuYXNzZXJ0KGNhc2hvdXRXaW5kb3dEYXlzJiZOdW1iZXIuaXNJbnRlZ2VyKGNhc2hvdXRXaW5kb3dEYXlzKSYmY2FzaG91dFdpbmRvd0RheXM+PTEmJmNhc2hvdXRXaW5kb3dEYXlzPD0zMCwiY2FzaG91dFdpbmRvd0RheXMgc2hvdWxkIGJlIGFuIGludGVnZXIgYmV0d2VlbiAxIGFuZCAzMCIpKXJldHVybjtjb25zdCBwYXJzZWRSZXdhcmRQZXJJbnRlcnZhbD1hcGkuQmlnTnVtYmVyKHJld2FyZFBlckludGVydmFsKTtpZighYXBpLmFzc2VydCgic3RyaW5nIj09dHlwZW9mIHJld2FyZFBlckludGVydmFsJiZwYXJzZWRSZXdhcmRQZXJJbnRlcnZhbC5pc0Zpbml0ZSgpJiZwYXJzZWRSZXdhcmRQZXJJbnRlcnZhbC5ndCgwKSwicmV3YXJkUGVySW50ZXJ2YWwgaW52YWxpZCIpfHwhYXBpLmFzc2VydChwYXJzZWRSZXdhcmRQZXJJbnRlcnZhbC5kcCgpPD10b2tlbi5wcmVjaXNpb24sInRva2VuIHByZWNpc2lvbiBtaXNtYXRjaCBmb3IgcmV3YXJkUGVySW50ZXJ2YWwiKSlyZXR1cm47aWYoIWFwaS5hc3NlcnQocmV3YXJkSW50ZXJ2YWxTZWNvbmRzJiZOdW1iZXIuaXNJbnRlZ2VyKHJld2FyZEludGVydmFsU2Vjb25kcykmJnJld2FyZEludGVydmFsU2Vjb25kcz49MyYmcmV3YXJkSW50ZXJ2YWxTZWNvbmRzPD04NjQwMCYmcmV3YXJkSW50ZXJ2YWxTZWNvbmRzJTM9PTAsInJld2FyZEludGVydmFsU2Vjb25kcyBzaG91bGQgYmUgYW4gaW50ZWdlciBiZXR3ZWVuIDMgYW5kIDg2NDAwLCBhbmQgZGl2aXNpYmxlIGJ5IDMiKSlyZXR1cm47aWYoIWFwaS5hc3NlcnQodm90ZVJlZ2VuZXJhdGlvbkRheXMmJk51bWJlci5pc0ludGVnZXIodm90ZVJlZ2VuZXJhdGlvbkRheXMpJiZ2b3RlUmVnZW5lcmF0aW9uRGF5cz49MSYmdm90ZVJlZ2VuZXJhdGlvbkRheXM8PTMwLCJ2b3RlUmVnZW5lcmF0aW9uRGF5cyBzaG91bGQgYmUgYW4gaW50ZWdlciBiZXR3ZWVuIDEgYW5kIDMwIikpcmV0dXJuO2lmKCFhcGkuYXNzZXJ0KGRvd252b3RlUmVnZW5lcmF0aW9uRGF5cyYmTnVtYmVyLmlzSW50ZWdlcihkb3dudm90ZVJlZ2VuZXJhdGlvbkRheXMpJiZkb3dudm90ZVJlZ2VuZXJhdGlvbkRheXM+PTEmJmRvd252b3RlUmVnZW5lcmF0aW9uRGF5czw9MzAsImRvd252b3RlUmVnZW5lcmF0aW9uRGF5cyBzaG91bGQgYmUgYW4gaW50ZWdlciBiZXR3ZWVuIDEgYW5kIDMwIikpcmV0dXJuO2lmKCFhcGkuYXNzZXJ0KE51bWJlci5pc0ludGVnZXIoc3Rha2VkUmV3YXJkUGVyY2VudGFnZSkmJnN0YWtlZFJld2FyZFBlcmNlbnRhZ2U+PTAmJnN0YWtlZFJld2FyZFBlcmNlbnRhZ2U8PTEwMCwic3Rha2VkUmV3YXJkUGVyY2VudGFnZSBzaG91bGQgYmUgYW4gaW50ZWdlciBiZXR3ZWVuIDAgYW5kIDEwMCIpKXJldHVybjtpZighYXBpLmFzc2VydCh2b3RlUG93ZXJDb25zdW1wdGlvbiYmTnVtYmVyLmlzSW50ZWdlcih2b3RlUG93ZXJDb25zdW1wdGlvbikmJnZvdGVQb3dlckNvbnN1bXB0aW9uPj0xJiZ2b3RlUG93ZXJDb25zdW1wdGlvbjw9MWU0LCJ2b3RlUG93ZXJDb25zdW1wdGlvbiBzaG91bGQgYmUgYW4gaW50ZWdlciBiZXR3ZWVuIDEgYW5kIDEwMDAwIikpcmV0dXJuO2lmKCFhcGkuYXNzZXJ0KGRvd252b3RlUG93ZXJDb25zdW1wdGlvbiYmTnVtYmVyLmlzSW50ZWdlcihkb3dudm90ZVBvd2VyQ29uc3VtcHRpb24pJiZkb3dudm90ZVBvd2VyQ29uc3VtcHRpb24+PTEmJmRvd252b3RlUG93ZXJDb25zdW1wdGlvbjw9MWU0LCJkb3dudm90ZVBvd2VyQ29uc3VtcHRpb24gc2hvdWxkIGJlIGFuIGludGVnZXIgYmV0d2VlbiAxIGFuZCAxMDAwMCIpKXJldHVybjtpZighYXBpLmFzc2VydChBcnJheS5pc0FycmF5KHRhZ3MpJiZ0YWdzLmxlbmd0aD49MSYmdGFncy5sZW5ndGg8PW1heFRhZ3NQZXJQb29sJiZ0YWdzLmV2ZXJ5KHQ9PiJzdHJpbmciPT10eXBlb2YgdCksInRhZ3Mgc2hvdWxkIGJlIGEgbm9uLWVtcHR5IGFycmF5IG9mIHN0cmluZ3Mgb2YgbGVuZ3RoIGF0IG1vc3QgIittYXhUYWdzUGVyUG9vbCkpcmV0dXJuO2lmKCFhcGkuYXNzZXJ0KCJib29sZWFuIj09dHlwZW9mIGRpc2FibGVEb3dudm90ZSwiZGlzYWJsZURvd252b3RlIHNob3VsZCBiZSBib29sZWFuIikpcmV0dXJuO2lmKCFhcGkuYXNzZXJ0KCJib29sZWFuIj09dHlwZW9mIGlnbm9yZURlY2xpbmVQYXlvdXQsImlnbm9yZURlY2xpbmVQYXlvdXQgc2hvdWxkIGJlIGJvb2xlYW4iKSlyZXR1cm47aWYoIWFzc2VydEFwcFRheENvbmZpZ1ZhbGlkKGFwcFRheENvbmZpZykpcmV0dXJuO2lmKCFhcGkuYXNzZXJ0KCFleGNsdWRlVGFnc3x8QXJyYXkuaXNBcnJheShleGNsdWRlVGFncykmJmV4Y2x1ZGVUYWdzLmxlbmd0aD49MSYmZXhjbHVkZVRhZ3MubGVuZ3RoPD1tYXhUYWdzUGVyUG9vbCYmZXhjbHVkZVRhZ3MuZXZlcnkodD0+InN0cmluZyI9PXR5cGVvZiB0KSwiZXhjbHVkZVRhZ3Mgc2hvdWxkIGJlIGEgbm9uLWVtcHR5IGFycmF5IG9mIHN0cmluZ3Mgb2YgbGVuZ3RoIGF0IG1vc3QgIittYXhUYWdzUGVyUG9vbCkpcmV0dXJuO2lmKCFhcGkuYXNzZXJ0KGFwaS5zZW5kZXI9PT10b2tlbi5pc3N1ZXJ8fGFwaS5zZW5kZXI9PT1hcGkub3duZXImJiJCRUUiPT09dG9rZW4uc3ltYm9sLCJtdXN0IGJlIGlzc3VlciBvZiB0b2tlbiIpKXJldHVybjtpZighYXBpLmFzc2VydCh0b2tlbi5zdGFraW5nRW5hYmxlZCwidG9rZW4gbXVzdCBoYXZlIHN0YWtpbmcgZW5hYmxlZCIpKXJldHVybjtjb25zdCBleGlzdGluZ1Jld2FyZFBvb2w9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInJld2FyZFBvb2xzIix7c3ltYm9sOnN5bWJvbH0pO2lmKCFhcGkuYXNzZXJ0KCFleGlzdGluZ1Jld2FyZFBvb2wsImNhbm5vdCBjcmVhdGUgbXVsdGlwbGUgcmV3YXJkIHBvb2xzIHBlciB0b2tlbiIpKXJldHVybjtjb25zdCB0aW1lc3RhbXA9bmV3IERhdGUoYXBpLmhpdmVCbG9ja1RpbWVzdGFtcCsiLjAwMFoiKS5nZXRUaW1lKCkscmV3YXJkUG9vbD17c3ltYm9sOnN5bWJvbCxyZXdhcmRQb29sOiIwIixsYXN0UmV3YXJkVGltZXN0YW1wOnRpbWVzdGFtcCxsYXN0Q2xhaW1EZWNheVRpbWVzdGFtcDp0aW1lc3RhbXAsY3JlYXRlZFRpbWVzdGFtcDp0aW1lc3RhbXAsY29uZmlnOntwb3N0UmV3YXJkQ3VydmU6cG9zdFJld2FyZEN1cnZlLHBvc3RSZXdhcmRDdXJ2ZVBhcmFtZXRlcjpwb3N0UmV3YXJkQ3VydmVQYXJhbWV0ZXIsY3VyYXRpb25SZXdhcmRDdXJ2ZTpjdXJhdGlvblJld2FyZEN1cnZlLGN1cmF0aW9uUmV3YXJkQ3VydmVQYXJhbWV0ZXI6Y3VyYXRpb25SZXdhcmRDdXJ2ZVBhcmFtZXRlcixjdXJhdGlvblJld2FyZFBlcmNlbnRhZ2U6Y3VyYXRpb25SZXdhcmRQZXJjZW50YWdlLGNhc2hvdXRXaW5kb3dEYXlzOmNhc2hvdXRXaW5kb3dEYXlzLHJld2FyZFBlckludGVydmFsOnJld2FyZFBlckludGVydmFsLHJld2FyZEludGVydmFsU2Vjb25kczpyZXdhcmRJbnRlcnZhbFNlY29uZHMsdm90ZVJlZ2VuZXJhdGlvbkRheXM6dm90ZVJlZ2VuZXJhdGlvbkRheXMsZG93bnZvdGVSZWdlbmVyYXRpb25EYXlzOmRvd252b3RlUmVnZW5lcmF0aW9uRGF5cyxzdGFrZWRSZXdhcmRQZXJjZW50YWdlOnN0YWtlZFJld2FyZFBlcmNlbnRhZ2Usdm90ZVBvd2VyQ29uc3VtcHRpb246dm90ZVBvd2VyQ29uc3VtcHRpb24sZG93bnZvdGVQb3dlckNvbnN1bXB0aW9uOmRvd252b3RlUG93ZXJDb25zdW1wdGlvbix0YWdzOnRhZ3MsZGlzYWJsZURvd252b3RlOmRpc2FibGVEb3dudm90ZSxpZ25vcmVEZWNsaW5lUGF5b3V0Omlnbm9yZURlY2xpbmVQYXlvdXQsYXBwVGF4Q29uZmlnOmFwcFRheENvbmZpZyxleGNsdWRlVGFnczpleGNsdWRlVGFnc30scGVuZGluZ0NsYWltczoiMCIsYWN0aXZlOiEwfSxpbnNlcnRlZFJld2FyZFBvb2w9YXdhaXQgYXBpLmRiLmluc2VydCgicmV3YXJkUG9vbHMiLHJld2FyZFBvb2wpO2FwaS5zZW5kZXIhPT1hcGkub3duZXImJmFwaS5CaWdOdW1iZXIoc2V0dXBGZWUpLmd0KDApJiZhd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoInRva2VucyIsInRyYW5zZmVyIix7dG86Im51bGwiLHN5bWJvbDoiQkVFIixxdWFudGl0eTpzZXR1cEZlZSxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fSksYXBpLmVtaXQoImNyZWF0ZVJld2FyZFBvb2wiLHtfaWQ6aW5zZXJ0ZWRSZXdhcmRQb29sLl9pZH0pfSxhY3Rpb25zLnVwZGF0ZVJld2FyZFBvb2w9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e3Jld2FyZFBvb2xJZDpyZXdhcmRQb29sSWQsY29uZmlnOmNvbmZpZyxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fT1wYXlsb2FkO2lmKCFhcGkuYXNzZXJ0KCEwPT09aXNTaWduZWRXaXRoQWN0aXZlS2V5LCJvcGVyYXRpb24gbXVzdCBiZSBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSlyZXR1cm47Y29uc3QgcGFyYW1zPWF3YWl0IGFwaS5kYi5maW5kT25lKCJwYXJhbXMiLHt9KSx7dXBkYXRlRmVlOnVwZGF0ZUZlZSxtYXhUYWdzUGVyUG9vbDptYXhUYWdzUGVyUG9vbH09cGFyYW1zLHV0aWxpdHlUb2tlbkJhbGFuY2U9YXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJ0b2tlbnMiLCJiYWxhbmNlcyIse2FjY291bnQ6YXBpLnNlbmRlcixzeW1ib2w6IkJFRSJ9KSxhdXRob3JpemVkPSEoIWFwaS5CaWdOdW1iZXIodXBkYXRlRmVlKS5sdGUoMCkmJmFwaS5zZW5kZXIhPT1hcGkub3duZXIpfHx1dGlsaXR5VG9rZW5CYWxhbmNlJiZhcGkuQmlnTnVtYmVyKHV0aWxpdHlUb2tlbkJhbGFuY2UuYmFsYW5jZSkuZ3RlKHVwZGF0ZUZlZSk7aWYoIWFwaS5hc3NlcnQoYXV0aG9yaXplZCwieW91IG11c3QgaGF2ZSBlbm91Z2ggdG9rZW5zIHRvIGNvdmVyIHRoZSB1cGRhdGUgZmVlIikpcmV0dXJuO2lmKCFhcGkuYXNzZXJ0KGNvbmZpZyYmIm9iamVjdCI9PXR5cGVvZiBjb25maWcsImNvbmZpZyBpbnZhbGlkIikpcmV0dXJuO2NvbnN0e3Bvc3RSZXdhcmRDdXJ2ZTpwb3N0UmV3YXJkQ3VydmUscG9zdFJld2FyZEN1cnZlUGFyYW1ldGVyOnBvc3RSZXdhcmRDdXJ2ZVBhcmFtZXRlcixjdXJhdGlvblJld2FyZEN1cnZlOmN1cmF0aW9uUmV3YXJkQ3VydmUsY3VyYXRpb25SZXdhcmRDdXJ2ZVBhcmFtZXRlcjpjdXJhdGlvblJld2FyZEN1cnZlUGFyYW1ldGVyLGN1cmF0aW9uUmV3YXJkUGVyY2VudGFnZTpjdXJhdGlvblJld2FyZFBlcmNlbnRhZ2UsY2FzaG91dFdpbmRvd0RheXM6Y2FzaG91dFdpbmRvd0RheXMscmV3YXJkUGVySW50ZXJ2YWw6cmV3YXJkUGVySW50ZXJ2YWwscmV3YXJkSW50ZXJ2YWxTZWNvbmRzOnJld2FyZEludGVydmFsU2Vjb25kcyx2b3RlUmVnZW5lcmF0aW9uRGF5czp2b3RlUmVnZW5lcmF0aW9uRGF5cyxkb3dudm90ZVJlZ2VuZXJhdGlvbkRheXM6ZG93bnZvdGVSZWdlbmVyYXRpb25EYXlzLHN0YWtlZFJld2FyZFBlcmNlbnRhZ2U6c3Rha2VkUmV3YXJkUGVyY2VudGFnZSx2b3RlUG93ZXJDb25zdW1wdGlvbjp2b3RlUG93ZXJDb25zdW1wdGlvbixkb3dudm90ZVBvd2VyQ29uc3VtcHRpb246ZG93bnZvdGVQb3dlckNvbnN1bXB0aW9uLHRhZ3M6dGFncyxkaXNhYmxlRG93bnZvdGU6ZGlzYWJsZURvd252b3RlLGlnbm9yZURlY2xpbmVQYXlvdXQ6aWdub3JlRGVjbGluZVBheW91dCxhcHBUYXhDb25maWc6YXBwVGF4Q29uZmlnLGV4Y2x1ZGVUYWdzOmV4Y2x1ZGVUYWdzfT1jb25maWcsZXhpc3RpbmdSZXdhcmRQb29sPWF3YWl0IGFwaS5kYi5maW5kT25lKCJyZXdhcmRQb29scyIse19pZDpyZXdhcmRQb29sSWR9KTtpZighYXBpLmFzc2VydChleGlzdGluZ1Jld2FyZFBvb2wsInJld2FyZCBwb29sIG5vdCBmb3VuZCIpKXJldHVybjtjb25zdCB0b2tlbj1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoInRva2VucyIsInRva2VucyIse3N5bWJvbDpleGlzdGluZ1Jld2FyZFBvb2wuc3ltYm9sfSk7aWYoIWFwaS5hc3NlcnQocG9zdFJld2FyZEN1cnZlJiYicG93ZXIiPT09cG9zdFJld2FyZEN1cnZlLCJwb3N0UmV3YXJkQ3VydmUgc2hvdWxkIGJlIG9uZSBvZjogW3Bvd2VyXSIpKXJldHVybjtleGlzdGluZ1Jld2FyZFBvb2wuY29uZmlnLnBvc3RSZXdhcmRDdXJ2ZT1wb3N0UmV3YXJkQ3VydmU7Y29uc3QgcG9zdEV4cG9uZW50PWFwaS5CaWdOdW1iZXIocG9zdFJld2FyZEN1cnZlUGFyYW1ldGVyKTtpZighYXBpLmFzc2VydCgic3RyaW5nIj09dHlwZW9mIHBvc3RSZXdhcmRDdXJ2ZVBhcmFtZXRlciYmcG9zdEV4cG9uZW50LmlzRmluaXRlKCkmJnBvc3RFeHBvbmVudC5ndGUoIjEiKSYmcG9zdEV4cG9uZW50Lmx0ZSgiMiIpJiZwb3N0RXhwb25lbnQuZHAoKTw9MiwncG9zdFJld2FyZEN1cnZlUGFyYW1ldGVyIHNob3VsZCBiZSBiZXR3ZWVuICIxIiBhbmQgIjIiIHdpdGggcHJlY2lzaW9uIGF0IG1vc3QgMicpKXJldHVybjtpZihleGlzdGluZ1Jld2FyZFBvb2wuY29uZmlnLnBvc3RSZXdhcmRDdXJ2ZVBhcmFtZXRlcj1wb3N0UmV3YXJkQ3VydmVQYXJhbWV0ZXIsIWFwaS5hc3NlcnQoY3VyYXRpb25SZXdhcmRDdXJ2ZSYmInBvd2VyIj09PWN1cmF0aW9uUmV3YXJkQ3VydmUsImN1cmF0aW9uUmV3YXJkQ3VydmUgc2hvdWxkIGJlIG9uZSBvZjogW3Bvd2VyXSIpKXJldHVybjtjb25zdCBjdXJhdGlvbkV4cG9uZW50PWFwaS5CaWdOdW1iZXIoY3VyYXRpb25SZXdhcmRDdXJ2ZVBhcmFtZXRlcik7aWYoIWFwaS5hc3NlcnQoInN0cmluZyI9PXR5cGVvZiBjdXJhdGlvblJld2FyZEN1cnZlUGFyYW1ldGVyJiZjdXJhdGlvbkV4cG9uZW50LmlzRmluaXRlKCkmJmN1cmF0aW9uRXhwb25lbnQuZ3RlKCIwLjUiKSYmY3VyYXRpb25FeHBvbmVudC5sdGUoIjEiKSYmY3VyYXRpb25FeHBvbmVudC5kcCgpPD0yLCdjdXJhdGlvblJld2FyZEN1cnZlUGFyYW1ldGVyIGNhbiBvbmx5IGJlIGJldHdlZW4gIjAuNSIgYW5kICIxIiB3aXRoIHByZWNpc2lvbiBhdCBtb3N0IDInKSlyZXR1cm47aWYoZXhpc3RpbmdSZXdhcmRQb29sLmNvbmZpZy5jdXJhdGlvblJld2FyZEN1cnZlUGFyYW1ldGVyPWN1cmF0aW9uUmV3YXJkQ3VydmVQYXJhbWV0ZXIsIWFwaS5hc3NlcnQoTnVtYmVyLmlzSW50ZWdlcihjdXJhdGlvblJld2FyZFBlcmNlbnRhZ2UpJiZjdXJhdGlvblJld2FyZFBlcmNlbnRhZ2U+PTAmJmN1cmF0aW9uUmV3YXJkUGVyY2VudGFnZTw9MTAwLCJjdXJhdGlvblJld2FyZFBlcmNlbnRhZ2Ugc2hvdWxkIGJlIGFuIGludGVnZXIgYmV0d2VlbiAwIGFuZCAxMDAiKSlyZXR1cm47aWYoZXhpc3RpbmdSZXdhcmRQb29sLmNvbmZpZy5jdXJhdGlvblJld2FyZFBlcmNlbnRhZ2U9Y3VyYXRpb25SZXdhcmRQZXJjZW50YWdlLCFhcGkuYXNzZXJ0KGNhc2hvdXRXaW5kb3dEYXlzJiZOdW1iZXIuaXNJbnRlZ2VyKGNhc2hvdXRXaW5kb3dEYXlzKSYmY2FzaG91dFdpbmRvd0RheXM+PTEmJmNhc2hvdXRXaW5kb3dEYXlzPD0zMCwiY2FzaG91dFdpbmRvd0RheXMgc2hvdWxkIGJlIGFuIGludGVnZXIgYmV0d2VlbiAxIGFuZCAzMCIpKXJldHVybjtleGlzdGluZ1Jld2FyZFBvb2wuY29uZmlnLmNhc2hvdXRXaW5kb3dEYXlzPWNhc2hvdXRXaW5kb3dEYXlzO2NvbnN0IHBhcnNlZFJld2FyZFBlckludGVydmFsPWFwaS5CaWdOdW1iZXIocmV3YXJkUGVySW50ZXJ2YWwpO2FwaS5hc3NlcnQoInN0cmluZyI9PXR5cGVvZiByZXdhcmRQZXJJbnRlcnZhbCYmcGFyc2VkUmV3YXJkUGVySW50ZXJ2YWwuaXNGaW5pdGUoKSYmcGFyc2VkUmV3YXJkUGVySW50ZXJ2YWwuZ3QoMCksInJld2FyZFBlckludGVydmFsIGludmFsaWQiKSYmYXBpLmFzc2VydChwYXJzZWRSZXdhcmRQZXJJbnRlcnZhbC5kcCgpPD10b2tlbi5wcmVjaXNpb24sInRva2VuIHByZWNpc2lvbiBtaXNtYXRjaCBmb3IgcmV3YXJkUGVySW50ZXJ2YWwiKSYmKGV4aXN0aW5nUmV3YXJkUG9vbC5jb25maWcucmV3YXJkUGVySW50ZXJ2YWw9cmV3YXJkUGVySW50ZXJ2YWwsYXBpLmFzc2VydChyZXdhcmRJbnRlcnZhbFNlY29uZHMmJk51bWJlci5pc0ludGVnZXIocmV3YXJkSW50ZXJ2YWxTZWNvbmRzKSYmcmV3YXJkSW50ZXJ2YWxTZWNvbmRzPj0zJiZyZXdhcmRJbnRlcnZhbFNlY29uZHM8PTg2NDAwJiZyZXdhcmRJbnRlcnZhbFNlY29uZHMlMz09MCwicmV3YXJkSW50ZXJ2YWxTZWNvbmRzIHNob3VsZCBiZSBhbiBpbnRlZ2VyIGJldHdlZW4gMyBhbmQgODY0MDAsIGFuZCBkaXZpc2libGUgYnkgMyIpJiYoZXhpc3RpbmdSZXdhcmRQb29sLmNvbmZpZy5yZXdhcmRJbnRlcnZhbFNlY29uZHM9cmV3YXJkSW50ZXJ2YWxTZWNvbmRzLGFwaS5hc3NlcnQodm90ZVJlZ2VuZXJhdGlvbkRheXMmJk51bWJlci5pc0ludGVnZXIodm90ZVJlZ2VuZXJhdGlvbkRheXMpJiZ2b3RlUmVnZW5lcmF0aW9uRGF5cz49MSYmdm90ZVJlZ2VuZXJhdGlvbkRheXM8PTMwLCJ2b3RlUmVnZW5lcmF0aW9uRGF5cyBzaG91bGQgYmUgYW4gaW50ZWdlciBiZXR3ZWVuIDEgYW5kIDMwIikmJihleGlzdGluZ1Jld2FyZFBvb2wuY29uZmlnLnZvdGVSZWdlbmVyYXRpb25EYXlzPXZvdGVSZWdlbmVyYXRpb25EYXlzLGFwaS5hc3NlcnQoZG93bnZvdGVSZWdlbmVyYXRpb25EYXlzJiZOdW1iZXIuaXNJbnRlZ2VyKGRvd252b3RlUmVnZW5lcmF0aW9uRGF5cykmJmRvd252b3RlUmVnZW5lcmF0aW9uRGF5cz49MSYmZG93bnZvdGVSZWdlbmVyYXRpb25EYXlzPD0zMCwiZG93bnZvdGVSZWdlbmVyYXRpb25EYXlzIHNob3VsZCBiZSBhbiBpbnRlZ2VyIGJldHdlZW4gMSBhbmQgMzAiKSYmKGV4aXN0aW5nUmV3YXJkUG9vbC5jb25maWcuZG93bnZvdGVSZWdlbmVyYXRpb25EYXlzPWRvd252b3RlUmVnZW5lcmF0aW9uRGF5cyxhcGkuYXNzZXJ0KE51bWJlci5pc0ludGVnZXIoc3Rha2VkUmV3YXJkUGVyY2VudGFnZSkmJnN0YWtlZFJld2FyZFBlcmNlbnRhZ2U+PTAmJnN0YWtlZFJld2FyZFBlcmNlbnRhZ2U8PTEwMCwic3Rha2VkUmV3YXJkUGVyY2VudGFnZSBzaG91bGQgYmUgYW4gaW50ZWdlciBiZXR3ZWVuIDAgYW5kIDEwMCIpJiYoZXhpc3RpbmdSZXdhcmRQb29sLmNvbmZpZy5zdGFrZWRSZXdhcmRQZXJjZW50YWdlPXN0YWtlZFJld2FyZFBlcmNlbnRhZ2UsYXBpLmFzc2VydCh2b3RlUG93ZXJDb25zdW1wdGlvbiYmTnVtYmVyLmlzSW50ZWdlcih2b3RlUG93ZXJDb25zdW1wdGlvbikmJnZvdGVQb3dlckNvbnN1bXB0aW9uPj0xJiZ2b3RlUG93ZXJDb25zdW1wdGlvbjw9MWU0LCJ2b3RlUG93ZXJDb25zdW1wdGlvbiBzaG91bGQgYmUgYW4gaW50ZWdlciBiZXR3ZWVuIDEgYW5kIDEwMDAwIikmJihleGlzdGluZ1Jld2FyZFBvb2wuY29uZmlnLnZvdGVQb3dlckNvbnN1bXB0aW9uPXZvdGVQb3dlckNvbnN1bXB0aW9uLGFwaS5hc3NlcnQoZG93bnZvdGVQb3dlckNvbnN1bXB0aW9uJiZOdW1iZXIuaXNJbnRlZ2VyKGRvd252b3RlUG93ZXJDb25zdW1wdGlvbikmJmRvd252b3RlUG93ZXJDb25zdW1wdGlvbj49MSYmZG93bnZvdGVQb3dlckNvbnN1bXB0aW9uPD0xZTQsImRvd252b3RlUG93ZXJDb25zdW1wdGlvbiBzaG91bGQgYmUgYW4gaW50ZWdlciBiZXR3ZWVuIDEgYW5kIDEwMDAwIikmJihleGlzdGluZ1Jld2FyZFBvb2wuY29uZmlnLmRvd252b3RlUG93ZXJDb25zdW1wdGlvbj1kb3dudm90ZVBvd2VyQ29uc3VtcHRpb24sYXBpLmFzc2VydChBcnJheS5pc0FycmF5KHRhZ3MpJiZ0YWdzLmxlbmd0aD49MSYmdGFncy5sZW5ndGg8PW1heFRhZ3NQZXJQb29sJiZ0YWdzLmV2ZXJ5KHQ9PiJzdHJpbmciPT10eXBlb2YgdCksInRhZ3Mgc2hvdWxkIGJlIGEgbm9uLWVtcHR5IGFycmF5IG9mIHN0cmluZ3Mgb2YgbGVuZ3RoIGF0IG1vc3QgIittYXhUYWdzUGVyUG9vbCkmJihleGlzdGluZ1Jld2FyZFBvb2wuY29uZmlnLnRhZ3M9dGFncyxhcGkuYXNzZXJ0KCJib29sZWFuIj09dHlwZW9mIGRpc2FibGVEb3dudm90ZSwiZGlzYWJsZURvd252b3RlIHNob3VsZCBiZSBib29sZWFuIikmJihleGlzdGluZ1Jld2FyZFBvb2wuY29uZmlnLmRpc2FibGVEb3dudm90ZT1kaXNhYmxlRG93bnZvdGUsYXBpLmFzc2VydCgiYm9vbGVhbiI9PXR5cGVvZiBpZ25vcmVEZWNsaW5lUGF5b3V0LCJpZ25vcmVEZWNsaW5lUGF5b3V0IHNob3VsZCBiZSBib29sZWFuIikmJihleGlzdGluZ1Jld2FyZFBvb2wuY29uZmlnLmlnbm9yZURlY2xpbmVQYXlvdXQ9aWdub3JlRGVjbGluZVBheW91dCxhc3NlcnRBcHBUYXhDb25maWdWYWxpZChhcHBUYXhDb25maWcpJiYoZXhpc3RpbmdSZXdhcmRQb29sLmNvbmZpZy5hcHBUYXhDb25maWc9YXBwVGF4Q29uZmlnLGFwaS5hc3NlcnQoIWV4Y2x1ZGVUYWdzfHxBcnJheS5pc0FycmF5KGV4Y2x1ZGVUYWdzKSYmZXhjbHVkZVRhZ3MubGVuZ3RoPj0xJiZleGNsdWRlVGFncy5sZW5ndGg8PW1heFRhZ3NQZXJQb29sJiZleGNsdWRlVGFncy5ldmVyeSh0PT4ic3RyaW5nIj09dHlwZW9mIHQpLCJleGNsdWRlVGFncyBzaG91bGQgYmUgYSBub24tZW1wdHkgYXJyYXkgb2Ygc3RyaW5ncyBvZiBsZW5ndGggYXQgbW9zdCAiK21heFRhZ3NQZXJQb29sKSYmKGV4aXN0aW5nUmV3YXJkUG9vbC5jb25maWcuZXhjbHVkZVRhZ3M9ZXhjbHVkZVRhZ3MsYXBpLmFzc2VydChhcGkuc2VuZGVyPT09dG9rZW4uaXNzdWVyfHxhcGkuc2VuZGVyPT09YXBpLm93bmVyJiYiQkVFIj09PXRva2VuLnN5bWJvbCwibXVzdCBiZSBpc3N1ZXIgb2YgdG9rZW4iKSYmKGFwaS5zZW5kZXIhPT1hcGkub3duZXImJmFwaS5CaWdOdW1iZXIodXBkYXRlRmVlKS5ndCgwKSYmYXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJ0b2tlbnMiLCJ0cmFuc2ZlciIse3RvOiJudWxsIixzeW1ib2w6IkJFRSIscXVhbnRpdHk6dXBkYXRlRmVlLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9KSxhd2FpdCBhcGkuZGIudXBkYXRlKCJyZXdhcmRQb29scyIsZXhpc3RpbmdSZXdhcmRQb29sKSkpKSkpKSkpKSkpKSl9LGFjdGlvbnMuc2V0QWN0aXZlPWFzeW5jIHBheWxvYWQ9Pntjb25zdHtyZXdhcmRQb29sSWQ6cmV3YXJkUG9vbElkLGFjdGl2ZTphY3RpdmUsaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX09cGF5bG9hZDtpZighYXBpLmFzc2VydCghMD09PWlzU2lnbmVkV2l0aEFjdGl2ZUtleSwib3BlcmF0aW9uIG11c3QgYmUgc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5IikpcmV0dXJuO2NvbnN0IGV4aXN0aW5nUmV3YXJkUG9vbD1hd2FpdCBhcGkuZGIuZmluZE9uZSgicmV3YXJkUG9vbHMiLHtfaWQ6cmV3YXJkUG9vbElkfSk7aWYoIWFwaS5hc3NlcnQoZXhpc3RpbmdSZXdhcmRQb29sLCJyZXdhcmQgcG9vbCBub3QgZm91bmQiKSlyZXR1cm47Y29uc3QgdG9rZW49YXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJ0b2tlbnMiLCJ0b2tlbnMiLHtzeW1ib2w6ZXhpc3RpbmdSZXdhcmRQb29sLnN5bWJvbH0pO2FwaS5hc3NlcnQoYXBpLnNlbmRlcj09PXRva2VuLmlzc3Vlcnx8YXBpLnNlbmRlcj09PWFwaS5vd25lciwibXVzdCBiZSBpc3N1ZXIgb2YgdG9rZW4iKSYmKGV4aXN0aW5nUmV3YXJkUG9vbC5hY3RpdmU9YWN0aXZlLGF3YWl0IGFwaS5kYi51cGRhdGUoInJld2FyZFBvb2xzIixleGlzdGluZ1Jld2FyZFBvb2wpKX0sYWN0aW9ucy5zZXRNdXRlPWFzeW5jIHBheWxvYWQ9Pntjb25zdHtyZXdhcmRQb29sSWQ6cmV3YXJkUG9vbElkLGFjY291bnQ6YWNjb3VudCxtdXRlOm11dGV9PXBheWxvYWQsZXhpc3RpbmdSZXdhcmRQb29sPWF3YWl0IGFwaS5kYi5maW5kT25lKCJyZXdhcmRQb29scyIse19pZDpyZXdhcmRQb29sSWR9KTtpZighYXBpLmFzc2VydChleGlzdGluZ1Jld2FyZFBvb2wsInJld2FyZCBwb29sIG5vdCBmb3VuZCIpKXJldHVybjtjb25zdCB0b2tlbj1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoInRva2VucyIsInRva2VucyIse3N5bWJvbDpleGlzdGluZ1Jld2FyZFBvb2wuc3ltYm9sfSk7aWYoIWFwaS5hc3NlcnQoYXBpLnNlbmRlcj09PXRva2VuLmlzc3Vlcnx8YXBpLnNlbmRlcj09PWFwaS5vd25lciwibXVzdCBiZSBpc3N1ZXIgb2YgdG9rZW4iKSlyZXR1cm47aWYoIWFwaS5hc3NlcnQoYXBpLmlzVmFsaWRBY2NvdW50TmFtZShhY2NvdW50KSwiaW52YWxpZCBhY2NvdW50IikpcmV0dXJuO2lmKCFhcGkuYXNzZXJ0KCJib29sZWFuIj09dHlwZW9mIG11dGUsIm11dGUgbXVzdCBiZSBhIGJvb2xlYW4iKSlyZXR1cm47Y29uc3Qgdm90aW5nUG93ZXI9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInZvdGluZ1Bvd2VyIix7cmV3YXJkUG9vbElkOnJld2FyZFBvb2xJZCxhY2NvdW50OmFjY291bnR9KTtpZih2b3RpbmdQb3dlcil2b3RpbmdQb3dlci5tdXRlPW11dGUsYXdhaXQgYXBpLmRiLnVwZGF0ZSgidm90aW5nUG93ZXIiLHZvdGluZ1Bvd2VyKTtlbHNle2NvbnN0IG5ld1ZvdGluZ1Bvd2VyPXtyZXdhcmRQb29sSWQ6cmV3YXJkUG9vbElkLGFjY291bnQ6YWNjb3VudCxsYXN0Vm90ZVRpbWVzdGFtcDpuZXcgRGF0ZShhcGkuaGl2ZUJsb2NrVGltZXN0YW1wKyIuMDAwWiIpLmdldFRpbWUoKSx2b3RpbmdQb3dlcjoxZTQsZG93bnZvdGluZ1Bvd2VyOjFlNCxtdXRlOm11dGV9O2F3YWl0IGFwaS5kYi5pbnNlcnQoInZvdGluZ1Bvd2VyIixuZXdWb3RpbmdQb3dlcil9fSxhY3Rpb25zLnNldFBvc3RNdXRlPWFzeW5jIHBheWxvYWQ9Pntjb25zdHtyZXdhcmRQb29sSWQ6cmV3YXJkUG9vbElkLGF1dGhvcnBlcm06YXV0aG9ycGVybSxtdXRlOm11dGV9PXBheWxvYWQsZXhpc3RpbmdSZXdhcmRQb29sPWF3YWl0IGFwaS5kYi5maW5kT25lKCJyZXdhcmRQb29scyIse19pZDpyZXdhcmRQb29sSWR9KTtpZighYXBpLmFzc2VydChleGlzdGluZ1Jld2FyZFBvb2wsInJld2FyZCBwb29sIG5vdCBmb3VuZCIpKXJldHVybjtjb25zdCB0b2tlbj1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoInRva2VucyIsInRva2VucyIse3N5bWJvbDpleGlzdGluZ1Jld2FyZFBvb2wuc3ltYm9sfSk7aWYoIWFwaS5hc3NlcnQoYXBpLnNlbmRlcj09PXRva2VuLmlzc3Vlcnx8YXBpLnNlbmRlcj09PWFwaS5vd25lciwibXVzdCBiZSBpc3N1ZXIgb2YgdG9rZW4iKSlyZXR1cm47aWYoIWFwaS5hc3NlcnQoInN0cmluZyI9PXR5cGVvZiBhdXRob3JwZXJtLCJhdXRob3JwZXJtIG11c3QgYmUgYSBzdHJpbmciKSlyZXR1cm47Y29uc3QgcG9zdD1hd2FpdCBhcGkuZGIuZmluZE9uZSgicG9zdHMiLHtyZXdhcmRQb29sSWQ6cmV3YXJkUG9vbElkLGF1dGhvcnBlcm06YXV0aG9ycGVybX0pO2FwaS5hc3NlcnQocG9zdCwicG9zdCBub3QgZm91bmQiKSYmYXBpLmFzc2VydCgiYm9vbGVhbiI9PXR5cGVvZiBtdXRlLCJtdXRlIG11c3QgYmUgYSBib29sZWFuIikmJihwb3N0Lm11dGU9bXV0ZSxhd2FpdCBhcGkuZGIudXBkYXRlKCJwb3N0cyIscG9zdCkpfSxhY3Rpb25zLnJlc2V0UG9vbD1hc3luYyBwYXlsb2FkPT57Y29uc3R7cmV3YXJkUG9vbElkOnJld2FyZFBvb2xJZCxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fT1wYXlsb2FkO2lmKCFhcGkuYXNzZXJ0KCEwPT09aXNTaWduZWRXaXRoQWN0aXZlS2V5LCJvcGVyYXRpb24gbXVzdCBiZSBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSlyZXR1cm47Y29uc3QgZXhpc3RpbmdSZXdhcmRQb29sPWF3YWl0IGFwaS5kYi5maW5kT25lKCJyZXdhcmRQb29scyIse19pZDpyZXdhcmRQb29sSWR9KTtpZighYXBpLmFzc2VydChleGlzdGluZ1Jld2FyZFBvb2wsInJld2FyZCBwb29sIG5vdCBmb3VuZCIpKXJldHVybjtjb25zdCB0b2tlbj1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoInRva2VucyIsInRva2VucyIse3N5bWJvbDpleGlzdGluZ1Jld2FyZFBvb2wuc3ltYm9sfSk7aWYoIWFwaS5hc3NlcnQoYXBpLnNlbmRlcj09PXRva2VuLmlzc3Vlcnx8YXBpLnNlbmRlcj09PWFwaS5vd25lciwibXVzdCBiZSBpc3N1ZXIgb2YgdG9rZW4iKSlyZXR1cm47Y29uc3QgdGltZXN0YW1wPW5ldyBEYXRlKGFwaS5oaXZlQmxvY2tUaW1lc3RhbXArIi4wMDBaIikuZ2V0VGltZSgpO2V4aXN0aW5nUmV3YXJkUG9vbC5yZXdhcmRQb29sPSIwIixleGlzdGluZ1Jld2FyZFBvb2wubGFzdFJld2FyZFRpbWVzdGFtcD10aW1lc3RhbXAsZXhpc3RpbmdSZXdhcmRQb29sLmxhc3RDbGFpbURlY2F5VGltZXN0YW1wPXRpbWVzdGFtcCxleGlzdGluZ1Jld2FyZFBvb2wuY3JlYXRlZFRpbWVzdGFtcD10aW1lc3RhbXAsZXhpc3RpbmdSZXdhcmRQb29sLnBlbmRpbmdDbGFpbXM9IjAiLGF3YWl0IGFwaS5kYi51cGRhdGUoInJld2FyZFBvb2xzIixleGlzdGluZ1Jld2FyZFBvb2wpfSxhY3Rpb25zLmNvbW1lbnQ9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e2F1dGhvcjphdXRob3IscGVybWxpbms6cGVybWxpbmt9PXBheWxvYWQ7aWYoIWFwaS5hc3NlcnQoIm51bGwiPT09YXBpLnNlbmRlciwiYWN0aW9uIG11c3QgdXNlIGNvbW1lbnQgb3BlcmF0aW9uIikpcmV0dXJuO2F3YWl0IHRva2VuTWFpbnRlbmFuY2UoKTtjb25zdCByZXdhcmRQb29sSWRzPWF3YWl0IGdldFJld2FyZFBvb2xJZHMocGF5bG9hZCksYXV0aG9ycGVybT1gQCR7YXV0aG9yfS8ke3Blcm1saW5rfWA7aWYoYXdhaXQgYXBpLmRiLmZpbmRPbmUoInBvc3RNZXRhZGF0YSIse2F1dGhvcnBlcm06YXV0aG9ycGVybX0pKXJldHVybjtpZihhd2FpdCBhcGkuZGIuZmluZE9uZSgicG9zdHMiLHthdXRob3JwZXJtOmF1dGhvcnBlcm19KSlyZXR1cm47YXdhaXQgYXBpLmRiLmluc2VydCgicG9zdE1ldGFkYXRhIix7YXV0aG9ycGVybTphdXRob3JwZXJtLHJld2FyZFBvb2xJZHM6cmV3YXJkUG9vbElkc30pO2NvbnN0IHRpbWVzdGFtcD1uZXcgRGF0ZShhcGkuaGl2ZUJsb2NrVGltZXN0YW1wKyIuMDAwWiIpLmdldFRpbWUoKTtmb3IobGV0IGk9MDtpPHJld2FyZFBvb2xJZHMubGVuZ3RoO2krPTEpe2NvbnN0IHJld2FyZFBvb2xJZD1yZXdhcmRQb29sSWRzW2ldLHJld2FyZFBvb2w9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInJld2FyZFBvb2xzIix7X2lkOnJld2FyZFBvb2xJZH0pO2lmKHJld2FyZFBvb2wmJnJld2FyZFBvb2wuYWN0aXZlKXtjb25zdCBjYXNob3V0VGltZT10aW1lc3RhbXArMjQqcmV3YXJkUG9vbC5jb25maWcuY2FzaG91dFdpbmRvd0RheXMqMzYwMCoxZTMscG9zdD17cmV3YXJkUG9vbElkOnJld2FyZFBvb2xJZCxzeW1ib2w6cmV3YXJkUG9vbC5zeW1ib2wsYXV0aG9ycGVybTphdXRob3JwZXJtLGF1dGhvcjphdXRob3IsY3JlYXRlZDp0aW1lc3RhbXAsY2FzaG91dFRpbWU6Y2FzaG91dFRpbWUsdm90ZVBvc2l0aXZlUnNoYXJlU3VtOiIwIix2b3RlUnNoYXJlU3VtOiIwIn07aWYocGF5bG9hZC5qc29uTWV0YWRhdGEmJnBheWxvYWQuanNvbk1ldGFkYXRhLmFwcCl7Y29uc3QgYXBwU3RyaW5nPXBheWxvYWQuanNvbk1ldGFkYXRhLmFwcDsic3RyaW5nIj09dHlwZW9mIGFwcFN0cmluZyYmKHBvc3QuYXBwPWFwcFN0cmluZy5zcGxpdCgiLyIpWzBdLnRvTG93ZXJDYXNlKCkpfWF3YWl0IGFwaS5kYi5pbnNlcnQoInBvc3RzIixwb3N0KSxhcGkuZW1pdCgibmV3Q29tbWVudCIse3Jld2FyZFBvb2xJZDpyZXdhcmRQb29sSWQsc3ltYm9sOnJld2FyZFBvb2wuc3ltYm9sfSl9fX0sYWN0aW9ucy5jb21tZW50T3B0aW9ucz1hc3luYyBwYXlsb2FkPT57Y29uc3R7YXV0aG9yOmF1dGhvcixwZXJtbGluazpwZXJtbGluayxtYXhBY2NlcHRlZFBheW91dDptYXhBY2NlcHRlZFBheW91dCxiZW5lZmljaWFyaWVzOmJlbmVmaWNpYXJpZXN9PXBheWxvYWQ7aWYoIWFwaS5hc3NlcnQoIm51bGwiPT09YXBpLnNlbmRlciwiYWN0aW9uIG11c3QgdXNlIGNvbW1lbnRPcHRpb25zIG9wZXJhdGlvbiIpKXJldHVybjtjb25zdCBhdXRob3JwZXJtPWBAJHthdXRob3J9LyR7cGVybWxpbmt9YCxleGlzdGluZ1Bvc3RzPWF3YWl0IGFwaS5kYi5maW5kKCJwb3N0cyIse2F1dGhvcnBlcm06YXV0aG9ycGVybX0pO2lmKCFleGlzdGluZ1Bvc3RzKXJldHVybjtjb25zdCBkZWNsaW5lUGF5b3V0PW1heEFjY2VwdGVkUGF5b3V0LnN0YXJ0c1dpdGgoIjAuMDAwIik7Zm9yKGxldCBpPTA7aTxleGlzdGluZ1Bvc3RzLmxlbmd0aDtpKz0xKXtjb25zdCBwb3N0PWV4aXN0aW5nUG9zdHNbaV07KGF3YWl0IGFwaS5kYi5maW5kT25lKCJyZXdhcmRQb29scyIse19pZDpwb3N0LnJld2FyZFBvb2xJZH0pKS5jb25maWcuaWdub3JlRGVjbGluZVBheW91dHx8KHBvc3QuZGVjbGluZVBheW91dD1kZWNsaW5lUGF5b3V0KSxwb3N0LmJlbmVmaWNpYXJpZXM9YmVuZWZpY2lhcmllcyxhd2FpdCBhcGkuZGIudXBkYXRlKCJwb3N0cyIscG9zdCl9fSxhY3Rpb25zLnZvdGU9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e3ZvdGVyOnZvdGVyLGF1dGhvcjphdXRob3IscGVybWxpbms6cGVybWxpbmssd2VpZ2h0OndlaWdodH09cGF5bG9hZDtpZighYXBpLmFzc2VydCgibnVsbCI9PT1hcGkuc2VuZGVyLCJjYW4gb25seSB2b3RlIHdpdGggdm90aW5nIG9wIikpcmV0dXJuO2lmKGF3YWl0IHRva2VuTWFpbnRlbmFuY2UoKSwhYXBpLmFzc2VydChOdW1iZXIuaXNJbnRlZ2VyKHdlaWdodCkmJndlaWdodD49LTFlNCYmd2VpZ2h0PD0xZTQsIndlaWdodCBtdXN0IGJlIGFuIGludGVnZXIgZnJvbSAtMTAwMDAgdG8gMTAwMDAiKSlyZXR1cm47Y29uc3QgdGltZXN0YW1wPW5ldyBEYXRlKGFwaS5oaXZlQmxvY2tUaW1lc3RhbXArIi4wMDBaIikuZ2V0VGltZSgpLGF1dGhvcnBlcm09YEAke2F1dGhvcn0vJHtwZXJtbGlua31gLHBvc3RzPWF3YWl0IGFwaS5kYi5maW5kKCJwb3N0cyIse2F1dGhvcnBlcm06YXV0aG9ycGVybX0sMWUzLDAsW3tpbmRleDoiX2lkIixkZXNjZW5kaW5nOiExfV0pO2lmKHBvc3RzKWZvcihsZXQgaT0wO2k8cG9zdHMubGVuZ3RoO2krPTEpe2NvbnN0IHBvc3Q9cG9zdHNbaV07YXdhaXQgcHJvY2Vzc1ZvdGUocG9zdCx2b3Rlcix3ZWlnaHQsdGltZXN0YW1wKX19Ow=="}}}

Sort:  

Congratulations @hive-engine! You have completed the following achievement on the Hive blockchain and have been rewarded with new badge(s):

You published more than 100 posts.
Your next target is to reach 150 posts.

You can view your badges on your board and compare yourself to others in the Ranking
If you no longer want to receive notifications, reply to this comment with the word STOP

To support your work, I also upvoted your post!

Check out the last post from @hivebuzz:

Hive Power Up Month - Feedback from day 20
Support the HiveBuzz project. Vote for our proposal!