Comments Smart Contract

{"id":"ssc-mainnet-hive","json":{"contractName":"contract","contractAction":"update","contractPayload":{"name":"comments","params":"","code":"Y29uc3QgU01UX1BSRUNJU0lPTj0xMCxNQVhfVk9USU5HX1BPV0VSPTFlNCxNQVhfV0VJR0hUPTFlNDtmdW5jdGlvbiBjYWxjdWxhdGVXZWlnaHRSc2hhcmVzKHJld2FyZFBvb2wsdm90ZVJzaGFyZVN1bSl7aWYoYXBpLkJpZ051bWJlcih2b3RlUnNoYXJlU3VtKS5sdGUoMCkpcmV0dXJuIGFwaS5CaWdOdW1iZXIoMCk7aWYoInBvd2VyIj09PXJld2FyZFBvb2wuY29uZmlnLnBvc3RSZXdhcmRDdXJ2ZSl7Y29uc3QgcG9zdFJld2FyZEV4cG9uZW50PWFwaS5CaWdOdW1iZXIocmV3YXJkUG9vbC5jb25maWcucG9zdFJld2FyZEN1cnZlUGFyYW1ldGVyKTtyZXR1cm4gcG9zdFJld2FyZEV4cG9uZW50LmVxKCIxIil8fHBvc3RSZXdhcmRFeHBvbmVudC5lcSgiMiIpP2FwaS5CaWdOdW1iZXIodm90ZVJzaGFyZVN1bSkucG93KHJld2FyZFBvb2wuY29uZmlnLnBvc3RSZXdhcmRDdXJ2ZVBhcmFtZXRlcikudG9GaXhlZCgxMCxhcGkuQmlnTnVtYmVyLlJPVU5EX0RPV04pOmFwaS5CaWdOdW1iZXIocGFyc2VGbG9hdCh2b3RlUnNoYXJlU3VtKSoqcGFyc2VGbG9hdChyZXdhcmRQb29sLmNvbmZpZy5wb3N0UmV3YXJkQ3VydmVQYXJhbWV0ZXIpKS50b0ZpeGVkKDEwLGFwaS5CaWdOdW1iZXIuUk9VTkRfRE9XTil9cmV0dXJuIGFwaS5CaWdOdW1iZXIodm90ZVJzaGFyZVN1bSl9ZnVuY3Rpb24gY2FsY3VsYXRlQ3VyYXRpb25XZWlnaHRSc2hhcmVzKHJld2FyZFBvb2wsdm90ZVJzaGFyZVN1bSl7aWYoYXBpLkJpZ051bWJlcih2b3RlUnNoYXJlU3VtKS5sdGUoMCkpcmV0dXJuIGFwaS5CaWdOdW1iZXIoMCk7aWYoInBvd2VyIj09PXJld2FyZFBvb2wuY29uZmlnLmN1cmF0aW9uUmV3YXJkQ3VydmUpe2NvbnN0IGN1cmF0aW9uUmV3YXJkRXhwb25lbnQ9YXBpLkJpZ051bWJlcihyZXdhcmRQb29sLmNvbmZpZy5jdXJhdGlvblJld2FyZEN1cnZlUGFyYW1ldGVyKTtyZXR1cm4gY3VyYXRpb25SZXdhcmRFeHBvbmVudC5lcSgiMC41Iik/YXBpLkJpZ051bWJlcih2b3RlUnNoYXJlU3VtKS5zcXJ0KCkudG9GaXhlZCgxMCxhcGkuQmlnTnVtYmVyLlJPVU5EX0RPV04pOmN1cmF0aW9uUmV3YXJkRXhwb25lbnQuZXEoIjEiKT9hcGkuQmlnTnVtYmVyKHZvdGVSc2hhcmVTdW0pLnRvRml4ZWQoMTAsYXBpLkJpZ051bWJlci5ST1VORF9ET1dOKTphcGkuQmlnTnVtYmVyKHBhcnNlRmxvYXQodm90ZVJzaGFyZVN1bSkqKnBhcnNlRmxvYXQocmV3YXJkUG9vbC5jb25maWcuY3VyYXRpb25SZXdhcmRDdXJ2ZVBhcmFtZXRlcikpLnRvRml4ZWQoMTAsYXBpLkJpZ051bWJlci5ST1VORF9ET1dOKX1yZXR1cm4gYXBpLkJpZ051bWJlcih2b3RlUnNoYXJlU3VtKX1hc3luYyBmdW5jdGlvbiBwYXlVc2VyKHN5bWJvbCxxdWFudGl0eSx1c2VyLHN0YWtlZFJld2FyZFBlcmNlbnRhZ2Upe2NvbnN0IHF1YW50aXR5QmlnbnVtPWFwaS5CaWdOdW1iZXIocXVhbnRpdHkpLHN0YWtlZFF1YW50aXR5PXF1YW50aXR5QmlnbnVtLm11bHRpcGxpZWRCeShzdGFrZWRSZXdhcmRQZXJjZW50YWdlKS5kaXZpZGVkQnkoMTAwKS50b0ZpeGVkKHF1YW50aXR5QmlnbnVtLmRwKCksYXBpLkJpZ051bWJlci5ST1VORF9ET1dOKSxsaXF1aWRRdWFudGl0eT1xdWFudGl0eUJpZ251bS5taW51cyhzdGFrZWRRdWFudGl0eSkudG9GaXhlZChxdWFudGl0eUJpZ251bS5kcCgpLGFwaS5CaWdOdW1iZXIuUk9VTkRfRE9XTik7bGV0IHJlczthcGkuQmlnTnVtYmVyKGxpcXVpZFF1YW50aXR5KS5ndCgwKSYmKHJlcz1hd2FpdCBhcGkudHJhbnNmZXJUb2tlbnModXNlcixzeW1ib2wsbGlxdWlkUXVhbnRpdHksInVzZXIiKSxyZXMuZXJyb3JzJiZhcGkuZGVidWcoYEVycm9yIHBheWluZyBvdXQgbGlxdWlkICR7bGlxdWlkUXVhbnRpdHl9ICR7c3ltYm9sfSB0byAke3VzZXJ9IChUWElEICR7YXBpLnRyYW5zYWN0aW9uSWR9KTogXG4ke3Jlcy5lcnJvcnN9YCkpLGFwaS5CaWdOdW1iZXIoc3Rha2VkUXVhbnRpdHkpLmd0KDApJiYocmVzPWF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgidG9rZW5zIiwic3Rha2VGcm9tQ29udHJhY3QiLHt0bzp1c2VyLHN5bWJvbDpzeW1ib2wscXVhbnRpdHk6c3Rha2VkUXVhbnRpdHl9KSxyZXMuZXJyb3JzJiZhcGkuZGVidWcoYEVycm9yIHBheWluZyBvdXQgc3Rha2VkICR7c3Rha2VkUXVhbnRpdHl9ICR7c3ltYm9sfSB0byAke3VzZXJ9IChUWElEICR7YXBpLnRyYW5zYWN0aW9uSWR9KTogXG4ke3Jlcy5lcnJvcnN9YCkpfWFzeW5jIGZ1bmN0aW9uIHBheU91dEJlbmVmaWNpYXJpZXMocmV3YXJkUG9vbCx0b2tlbixwb3N0LGF1dGhvckJlbmVQb3J0aW9uKXtjb25zdHthdXRob3JwZXJtOmF1dGhvcnBlcm0sc3ltYm9sOnN5bWJvbCxyZXdhcmRQb29sSWQ6cmV3YXJkUG9vbElkLGJlbmVmaWNpYXJpZXM6YmVuZWZpY2lhcmllc309cG9zdDtpZighYmVuZWZpY2lhcmllc3x8MD09PWJlbmVmaWNpYXJpZXMubGVuZ3RoKXJldHVybiBhcGkuQmlnTnVtYmVyKDApO2xldCB0b3RhbEJlbmVQYXk9YXBpLkJpZ051bWJlcigwKTtmb3IobGV0IGk9MDtpPGJlbmVmaWNpYXJpZXMubGVuZ3RoO2krPTEpe2NvbnN0IGJlbmVmaWNpYXJ5PWJlbmVmaWNpYXJpZXNbaV0sYmVuZVBheT1hcGkuQmlnTnVtYmVyKGF1dGhvckJlbmVQb3J0aW9uKS5tdWx0aXBsaWVkQnkoYmVuZWZpY2lhcnkud2VpZ2h0KS5kaXZpZGVkQnkoMWU0KS50b0ZpeGVkKHRva2VuLnByZWNpc2lvbixhcGkuQmlnTnVtYmVyLlJPVU5EX0RPV04pO2FwaS5lbWl0KCJiZW5lZmljaWFyeVJld2FyZCIse3Jld2FyZFBvb2xJZDpyZXdhcmRQb29sSWQsYXV0aG9ycGVybTphdXRob3JwZXJtLHN5bWJvbDpzeW1ib2wsYWNjb3VudDpiZW5lZmljaWFyeS5hY2NvdW50LHF1YW50aXR5OmJlbmVQYXl9KSxhd2FpdCBwYXlVc2VyKHN5bWJvbCxiZW5lUGF5LGJlbmVmaWNpYXJ5LmFjY291bnQscmV3YXJkUG9vbC5jb25maWcuc3Rha2VkUmV3YXJkUGVyY2VudGFnZSksdG90YWxCZW5lUGF5PWFwaS5CaWdOdW1iZXIodG90YWxCZW5lUGF5KS5wbHVzKGJlbmVQYXkpfXJldHVybiB0b3RhbEJlbmVQYXl9YXN5bmMgZnVuY3Rpb24gcGF5T3V0Q3VyYXRvcnMocmV3YXJkUG9vbCx0b2tlbixwb3N0LGN1cmF0b3JQb3J0aW9uLHBhcmFtcyl7Y29uc3R7YXV0aG9ycGVybTphdXRob3JwZXJtLHN5bWJvbDpzeW1ib2wscmV3YXJkUG9vbElkOnJld2FyZFBvb2xJZH09cG9zdCx7dm90ZVF1ZXJ5TGltaXQ6dm90ZVF1ZXJ5TGltaXR9PXBhcmFtcyxyZXNwb25zZT17ZG9uZTohMSx2b3Rlc1Byb2Nlc3NlZDowfSx2b3Rlc1RvUGF5b3V0PWF3YWl0IGFwaS5kYi5maW5kKCJ2b3RlcyIse3Jld2FyZFBvb2xJZDpyZXdhcmRQb29sSWQsYXV0aG9ycGVybTphdXRob3JwZXJtfSx2b3RlUXVlcnlMaW1pdCwwLFt7aW5kZXg6ImJ5VGltZXN0YW1wIixkZXNjZW5kaW5nOiExfV0pO2lmKDA9PT12b3Rlc1RvUGF5b3V0Lmxlbmd0aClyZXNwb25zZS5kb25lPSEwO2Vsc2V7Zm9yKGxldCBpPTA7aTx2b3Rlc1RvUGF5b3V0Lmxlbmd0aDtpKz0xKXtjb25zdCB2b3RlPXZvdGVzVG9QYXlvdXRbaV07aWYoYXBpLkJpZ051bWJlcih2b3RlLmN1cmF0aW9uV2VpZ2h0KT4wKXtjb25zdCB0b3RhbEN1cmF0aW9uV2VpZ2h0PWNhbGN1bGF0ZUN1cmF0aW9uV2VpZ2h0UnNoYXJlcyhyZXdhcmRQb29sLHBvc3Qudm90ZVBvc2l0aXZlUnNoYXJlU3VtKSx2b3RlUGF5PWFwaS5CaWdOdW1iZXIoY3VyYXRvclBvcnRpb24pLm11bHRpcGxpZWRCeSh2b3RlLmN1cmF0aW9uV2VpZ2h0KS5kaXZpZGVkQnkodG90YWxDdXJhdGlvbldlaWdodCkudG9GaXhlZCh0b2tlbi5wcmVjaXNpb24sYXBpLkJpZ051bWJlci5ST1VORF9ET1dOKTthcGkuZW1pdCgiY3VyYXRpb25SZXdhcmQiLHtyZXdhcmRQb29sSWQ6cmV3YXJkUG9vbElkLGF1dGhvcnBlcm06YXV0aG9ycGVybSxzeW1ib2w6c3ltYm9sLGFjY291bnQ6dm90ZS52b3RlcixxdWFudGl0eTp2b3RlUGF5fSksYXdhaXQgcGF5VXNlcihzeW1ib2wsdm90ZVBheSx2b3RlLnZvdGVyLHJld2FyZFBvb2wuY29uZmlnLnN0YWtlZFJld2FyZFBlcmNlbnRhZ2UpfWF3YWl0IGFwaS5kYi5yZW1vdmUoInZvdGVzIix2b3RlKX1yZXNwb25zZS52b3Rlc1Byb2Nlc3NlZCs9dm90ZXNUb1BheW91dC5sZW5ndGgsdm90ZXNUb1BheW91dC5sZW5ndGg8dm90ZVF1ZXJ5TGltaXQmJihyZXNwb25zZS5kb25lPSEwKX1yZXR1cm4gcmVzcG9uc2V9YXN5bmMgZnVuY3Rpb24gcGF5T3V0UG9zdChyZXdhcmRQb29sLHRva2VuLHBvc3QscGFyYW1zKXtjb25zdCByZXNwb25zZT17dG90YWxQYXlvdXRWYWx1ZTowLHZvdGVzUHJvY2Vzc2VkOjAsZG9uZTohMX07aWYocG9zdC5kZWNsaW5lUGF5b3V0KXJldHVybiBhcGkuZW1pdCgiYXV0aG9yUmV3YXJkIix7cmV3YXJkUG9vbElkOnBvc3QucmV3YXJkUG9vbElkLGF1dGhvcnBlcm06cG9zdC5hdXRob3JwZXJtLHN5bWJvbDpwb3N0LnN5bWJvbCxhY2NvdW50OnBvc3QuYXV0aG9yLHF1YW50aXR5OiIwIn0pLHJlc3BvbnNlLmRvbmU9ITAsYXdhaXQgYXBpLmRiLnJlbW92ZSgicG9zdHMiLHBvc3QpLHJlc3BvbnNlO2NvbnN0IHBvc3RDbGFpbXM9Y2FsY3VsYXRlV2VpZ2h0UnNoYXJlcyhyZXdhcmRQb29sLHBvc3Qudm90ZVJzaGFyZVN1bSkscG9zdFBlbmRpbmdUb2tlbj1hcGkuQmlnTnVtYmVyKHJld2FyZFBvb2wuaW50ZXJ2YWxQZW5kaW5nQ2xhaW1zKS5ndCgwKT9hcGkuQmlnTnVtYmVyKHJld2FyZFBvb2wuaW50ZXJ2YWxSZXdhcmRQb29sKS5tdWx0aXBsaWVkQnkocG9zdENsYWltcykuZGl2aWRlZEJ5KHJld2FyZFBvb2wuaW50ZXJ2YWxQZW5kaW5nQ2xhaW1zKS50b0ZpeGVkKHRva2VuLnByZWNpc2lvbixhcGkuQmlnTnVtYmVyLlJPVU5EX0RPV04pOiIwIjtyZXNwb25zZS50b3RhbFBheW91dFZhbHVlPXBvc3RQZW5kaW5nVG9rZW47Y29uc3QgY3VyYXRvclBvcnRpb249YXBpLkJpZ051bWJlcihwb3N0UGVuZGluZ1Rva2VuKS5tdWx0aXBsaWVkQnkocmV3YXJkUG9vbC5jb25maWcuY3VyYXRpb25SZXdhcmRQZXJjZW50YWdlKS5kaXZpZGVkQnkoMTAwKS50b0ZpeGVkKHRva2VuLnByZWNpc2lvbixhcGkuQmlnTnVtYmVyLlJPVU5EX0RPV04pLGF1dGhvckJlbmVQb3J0aW9uPWFwaS5CaWdOdW1iZXIocG9zdFBlbmRpbmdUb2tlbikubWludXMoY3VyYXRvclBvcnRpb24pLnRvRml4ZWQodG9rZW4ucHJlY2lzaW9uLGFwaS5CaWdOdW1iZXIuUk9VTkRfRE9XTiksYmVuZWZpY2lhcmllc1BheW91dFZhbHVlPWF3YWl0IHBheU91dEJlbmVmaWNpYXJpZXMocmV3YXJkUG9vbCx0b2tlbixwb3N0LGF1dGhvckJlbmVQb3J0aW9uKSxhdXRob3JQb3J0aW9uPWFwaS5CaWdOdW1iZXIoYXV0aG9yQmVuZVBvcnRpb24pLm1pbnVzKGJlbmVmaWNpYXJpZXNQYXlvdXRWYWx1ZSkudG9GaXhlZCh0b2tlbi5wcmVjaXNpb24sYXBpLkJpZ051bWJlci5ST1VORF9ET1dOKSxjdXJhdG9yUGF5U3RhdHVzPWF3YWl0IHBheU91dEN1cmF0b3JzKHJld2FyZFBvb2wsdG9rZW4scG9zdCxjdXJhdG9yUG9ydGlvbixwYXJhbXMpO3JldHVybiByZXNwb25zZS52b3Rlc1Byb2Nlc3NlZCs9Y3VyYXRvclBheVN0YXR1cy52b3Rlc1Byb2Nlc3NlZCxyZXNwb25zZS5kb25lPWN1cmF0b3JQYXlTdGF0dXMuZG9uZSxjdXJhdG9yUGF5U3RhdHVzLmRvbmUmJihhcGkuZW1pdCgiYXV0aG9yUmV3YXJkIix7cmV3YXJkUG9vbElkOnBvc3QucmV3YXJkUG9vbElkLGF1dGhvcnBlcm06cG9zdC5hdXRob3JwZXJtLHN5bWJvbDpwb3N0LnN5bWJvbCxhY2NvdW50OnBvc3QuYXV0aG9yLHF1YW50aXR5OmF1dGhvclBvcnRpb259KSxhd2FpdCBwYXlVc2VyKHBvc3Quc3ltYm9sLGF1dGhvclBvcnRpb24scG9zdC5hdXRob3IscmV3YXJkUG9vbC5jb25maWcuc3Rha2VkUmV3YXJkUGVyY2VudGFnZSksYXdhaXQgYXBpLmRiLnJlbW92ZSgicG9zdHMiLHBvc3QpKSxyZXNwb25zZX1hc3luYyBmdW5jdGlvbiBjb21wdXRlUG9zdFJld2FyZHMocGFyYW1zLHJld2FyZFBvb2wsdG9rZW4sZW5kVGltZXN0YW1wKXtjb25zdHtsYXN0Q2xhaW1EZWNheVRpbWVzdGFtcDpsYXN0Q2xhaW1EZWNheVRpbWVzdGFtcH09cmV3YXJkUG9vbCx7bWF4UG9zdHNQcm9jZXNzZWRQZXJSb3VuZDptYXhQb3N0c1Byb2Nlc3NlZFBlclJvdW5kLG1heFZvdGVzUHJvY2Vzc2VkUGVyUm91bmQ6bWF4Vm90ZXNQcm9jZXNzZWRQZXJSb3VuZH09cGFyYW1zLHBvc3RzVG9QYXlvdXQ9YXdhaXQgYXBpLmRiLmZpbmQoInBvc3RzIix7cmV3YXJkUG9vbElkOnJld2FyZFBvb2wuX2lkLGNhc2hvdXRUaW1lOnskZ3RlOmxhc3RDbGFpbURlY2F5VGltZXN0YW1wLCRsdGU6ZW5kVGltZXN0YW1wfX0sbWF4UG9zdHNQcm9jZXNzZWRQZXJSb3VuZCwwLFt7aW5kZXg6ImJ5Q2FzaG91dFRpbWUiLGRlc2NlbmRpbmc6ITF9LHtpbmRleDoiX2lkIixkZXNjZW5kaW5nOiExfV0pO2xldCBkb25lPSExLGRlZHVjdEZyb21SZXdhcmRQb29sPWFwaS5CaWdOdW1iZXIoMCksdm90ZXNQcm9jZXNzZWQ9MDtpZihwb3N0c1RvUGF5b3V0JiZwb3N0c1RvUGF5b3V0Lmxlbmd0aD4wKXtsZXQgbGltaXRSZWFjaGVkPSExO2ZvcihsZXQgaT0wO2k8cG9zdHNUb1BheW91dC5sZW5ndGg7aSs9MSl7Y29uc3QgcG9zdD1wb3N0c1RvUGF5b3V0W2ldLHBvc3RQYXlvdXRSZXNwb25zZT1hd2FpdCBwYXlPdXRQb3N0KHJld2FyZFBvb2wsdG9rZW4scG9zdCxwYXJhbXMpLHt0b3RhbFBheW91dFZhbHVlOnRvdGFsUGF5b3V0VmFsdWV9PXBvc3RQYXlvdXRSZXNwb25zZTtpZih2b3Rlc1Byb2Nlc3NlZCs9cG9zdFBheW91dFJlc3BvbnNlLnZvdGVzUHJvY2Vzc2VkLHBvc3RQYXlvdXRSZXNwb25zZS5kb25lJiYoZGVkdWN0RnJvbVJld2FyZFBvb2w9ZGVkdWN0RnJvbVJld2FyZFBvb2wucGx1cyh0b3RhbFBheW91dFZhbHVlKSksIXBvc3RQYXlvdXRSZXNwb25zZS5kb25lfHx2b3Rlc1Byb2Nlc3NlZD49bWF4Vm90ZXNQcm9jZXNzZWRQZXJSb3VuZCl7bGltaXRSZWFjaGVkPSEwO2JyZWFrfX0hbGltaXRSZWFjaGVkJiZwb3N0c1RvUGF5b3V0Lmxlbmd0aDxtYXhQb3N0c1Byb2Nlc3NlZFBlclJvdW5kJiYoZG9uZT0hMCkscmV3YXJkUG9vbC5yZXdhcmRQb29sPWFwaS5CaWdOdW1iZXIocmV3YXJkUG9vbC5yZXdhcmRQb29sKS5taW51cyhkZWR1Y3RGcm9tUmV3YXJkUG9vbCkudG9GaXhlZCh0b2tlbi5wcmVjaXNpb24sYXBpLkJpZ051bWJlci5ST1VORF9ET1dOKX1lbHNlIGRvbmU9ITA7ZG9uZSYmKHJld2FyZFBvb2wubGFzdENsYWltRGVjYXlUaW1lc3RhbXA9ZW5kVGltZXN0YW1wKX1hc3luYyBmdW5jdGlvbiBwb3N0Q2xhaW1zSW5JbnRlcnZhbChwYXJhbXMscmV3YXJkUG9vbCxzdGFydCxlbmQpe2NvbnN0e21heFBvc3RzUHJvY2Vzc2VkUGVyUm91bmQ6bWF4UG9zdHNQcm9jZXNzZWRQZXJSb3VuZH09cGFyYW1zO2xldCBwb3N0T2Zmc2V0PTAsbmV3UGVuZGluZ0NsYWltcz1hcGkuQmlnTnVtYmVyKDApLHBvc3RzVG9QYXlvdXQ9YXdhaXQgYXBpLmRiLmZpbmQoInBvc3RzIix7cmV3YXJkUG9vbElkOnJld2FyZFBvb2wuX2lkLGNhc2hvdXRUaW1lOnskZ3RlOnN0YXJ0LCRsdGU6ZW5kfX0sbWF4UG9zdHNQcm9jZXNzZWRQZXJSb3VuZCxwb3N0T2Zmc2V0LFt7aW5kZXg6ImJ5Q2FzaG91dFRpbWUiLGRlc2NlbmRpbmc6ITF9LHtpbmRleDoiX2lkIixkZXNjZW5kaW5nOiExfV0pO2Zvcig7cG9zdHNUb1BheW91dCYmcG9zdHNUb1BheW91dC5sZW5ndGg+MCYmKG5ld1BlbmRpbmdDbGFpbXM9bmV3UGVuZGluZ0NsYWltcy5wbHVzKHBvc3RzVG9QYXlvdXQucmVkdWNlKCh4LHkpPT54LnBsdXMoY2FsY3VsYXRlV2VpZ2h0UnNoYXJlcyhyZXdhcmRQb29sLHkudm90ZVJzaGFyZVN1bSkpLGFwaS5CaWdOdW1iZXIoMCkpKS5kcCgxMCxhcGkuQmlnTnVtYmVyLlJPVU5EX0RPV04pLCEocG9zdHNUb1BheW91dC5sZW5ndGg8bWF4UG9zdHNQcm9jZXNzZWRQZXJSb3VuZCkpOylwb3N0T2Zmc2V0Kz1tYXhQb3N0c1Byb2Nlc3NlZFBlclJvdW5kLHBvc3RzVG9QYXlvdXQ9YXdhaXQgYXBpLmRiLmZpbmQoInBvc3RzIix7cmV3YXJkUG9vbElkOnJld2FyZFBvb2wuX2lkLGNhc2hvdXRUaW1lOnskZ3RlOnN0YXJ0LCRsdGU6ZW5kfX0sbWF4UG9zdHNQcm9jZXNzZWRQZXJSb3VuZCxwb3N0T2Zmc2V0LFt7aW5kZXg6ImJ5Q2FzaG91dFRpbWUiLGRlc2NlbmRpbmc6ITF9LHtpbmRleDoiX2lkIixkZXNjZW5kaW5nOiExfV0pO3JldHVybiBuZXdQZW5kaW5nQ2xhaW1zfWFzeW5jIGZ1bmN0aW9uIHRva2VuTWFpbnRlbmFuY2UoKXtjb25zdCB0aW1lc3RhbXA9bmV3IERhdGUoYXBpLmhpdmVCbG9ja1RpbWVzdGFtcCsiLjAwMFoiKS5nZXRUaW1lKCkscGFyYW1zPWF3YWl0IGFwaS5kYi5maW5kT25lKCJwYXJhbXMiLHt9KSx7bGFzdE1haW50ZW5hbmNlQmxvY2s6bGFzdE1haW50ZW5hbmNlQmxvY2ssbGFzdFByb2Nlc3NlZFBvb2xJZDpsYXN0UHJvY2Vzc2VkUG9vbElkLG1haW50ZW5hbmNlVG9rZW5zUGVyQmxvY2s6bWFpbnRlbmFuY2VUb2tlbnNQZXJCbG9ja309cGFyYW1zO2lmKGxhc3RNYWludGVuYW5jZUJsb2NrPj1hcGkuYmxvY2tOdW1iZXIpcmV0dXJuO3BhcmFtcy5sYXN0TWFpbnRlbmFuY2VCbG9jaz1hcGkuYmxvY2tOdW1iZXI7Y29uc3QgcmV3YXJkUG9vbFByb2Nlc3NpbmdFeHByZXNzaW9uPXskbHRlOlsiJGxhc3RDbGFpbURlY2F5VGltZXN0YW1wIix7JHN1YnRyYWN0Olt0aW1lc3RhbXAseyRtdWx0aXBseTpbIiRjb25maWcucmV3YXJkSW50ZXJ2YWxTZWNvbmRzIiwxZTNdfV19XX07bGV0IHJld2FyZFBvb2xzPWF3YWl0IGFwaS5kYi5maW5kKCJyZXdhcmRQb29scyIse2FjdGl2ZTohMCwkZXhwcjpyZXdhcmRQb29sUHJvY2Vzc2luZ0V4cHJlc3Npb24sX2lkOnskZ3Q6bGFzdFByb2Nlc3NlZFBvb2xJZH19LG1haW50ZW5hbmNlVG9rZW5zUGVyQmxvY2ssMCxbe2luZGV4OiJfaWQiLGRlc2NlbmRpbmc6ITF9XSk7aWYoIXJld2FyZFBvb2xzfHxyZXdhcmRQb29scy5sZW5ndGg8bWFpbnRlbmFuY2VUb2tlbnNQZXJCbG9jayl7cmV3YXJkUG9vbHN8fChyZXdhcmRQb29scz1bXSk7Y29uc3QgbW9yZVJld2FyZFBvb2xzPWF3YWl0IGFwaS5kYi5maW5kKCJyZXdhcmRQb29scyIse2FjdGl2ZTohMCwkZXhwcjpyZXdhcmRQb29sUHJvY2Vzc2luZ0V4cHJlc3Npb259LG1haW50ZW5hbmNlVG9rZW5zUGVyQmxvY2stcmV3YXJkUG9vbHMubGVuZ3RoLDAsW3tpbmRleDoiX2lkIixkZXNjZW5kaW5nOiExfV0pLGV4aXN0aW5nSWRzPW5ldyBTZXQocmV3YXJkUG9vbHMubWFwKHA9PnAuX2lkKSk7bW9yZVJld2FyZFBvb2xzLmZvckVhY2gobXJwPT57ZXhpc3RpbmdJZHMuaGFzKG1ycC5faWQpfHxyZXdhcmRQb29scy5wdXNoKG1ycCl9KX1pZihyZXdhcmRQb29scylmb3IobGV0IGk9MDtpPHJld2FyZFBvb2xzLmxlbmd0aDtpKz0xKXtjb25zdCByZXdhcmRQb29sPXJld2FyZFBvb2xzW2ldO3BhcmFtcy5sYXN0UHJvY2Vzc2VkUG9vbElkPXJld2FyZFBvb2wuX2lkO2NvbnN0e3N5bWJvbDpzeW1ib2wsbGFzdENsYWltRGVjYXlUaW1lc3RhbXA6bGFzdENsYWltRGVjYXlUaW1lc3RhbXAsbGFzdFJld2FyZFRpbWVzdGFtcDpsYXN0UmV3YXJkVGltZXN0YW1wLGNvbmZpZzpjb25maWd9PXJld2FyZFBvb2wse3Jld2FyZEludGVydmFsU2Vjb25kczpyZXdhcmRJbnRlcnZhbFNlY29uZHMscmV3YXJkUGVySW50ZXJ2YWw6cmV3YXJkUGVySW50ZXJ2YWwsY2FzaG91dFdpbmRvd0RheXM6Y2FzaG91dFdpbmRvd0RheXN9PWNvbmZpZyx0b2tlbj1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoInRva2VucyIsInRva2VucyIse3N5bWJvbDpzeW1ib2x9KSxyZXdhcmRJbnRlcnZhbER1cmF0aW9uTWlsbGlzPTFlMypyZXdhcmRJbnRlcnZhbFNlY29uZHMsbmV4dFJld2FyZFRpbWVzdGFtcD1sYXN0UmV3YXJkVGltZXN0YW1wK3Jld2FyZEludGVydmFsRHVyYXRpb25NaWxsaXMsbmV4dENsYWltRGVjYXlUaW1lc3RhbXA9bGFzdENsYWltRGVjYXlUaW1lc3RhbXArcmV3YXJkSW50ZXJ2YWxEdXJhdGlvbk1pbGxpcztpZihuZXh0Q2xhaW1EZWNheVRpbWVzdGFtcD49bmV4dFJld2FyZFRpbWVzdGFtcCl7Y29uc3QgcmV3YXJkVG9BZGQ9YXBpLkJpZ051bWJlcihyZXdhcmRQZXJJbnRlcnZhbCk7YXBpLkJpZ051bWJlcihyZXdhcmRUb0FkZCkuZ3QoMCkmJihhd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoInRva2VucyIsImlzc3VlVG9Db250cmFjdCIse3N5bWJvbDpyZXdhcmRQb29sLnN5bWJvbCxxdWFudGl0eTpyZXdhcmRUb0FkZCx0bzoiY29tbWVudHMiLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTohMH0pLHJld2FyZFBvb2wucmV3YXJkUG9vbD1hcGkuQmlnTnVtYmVyKHJld2FyZFBvb2wucmV3YXJkUG9vbCkucGx1cyhyZXdhcmRUb0FkZCkudG9GaXhlZCh0b2tlbi5wcmVjaXNpb24sYXBpLkJpZ051bWJlci5ST1VORF9ET1dOKSk7Y29uc3QgYWRqdXN0TnVtZXI9bmV4dFJld2FyZFRpbWVzdGFtcC1sYXN0UmV3YXJkVGltZXN0YW1wLGFkanVzdERlbm9tPTI0KigyKmNhc2hvdXRXaW5kb3dEYXlzKzEpKjM2MDAqMWUzO3Jld2FyZFBvb2wucGVuZGluZ0NsYWltcz1hcGkuQmlnTnVtYmVyKHJld2FyZFBvb2wucGVuZGluZ0NsYWltcykubWludXMoYXBpLkJpZ051bWJlcihyZXdhcmRQb29sLnBlbmRpbmdDbGFpbXMpLm11bHRpcGxpZWRCeShhZGp1c3ROdW1lcikuZGl2aWRlZEJ5KGFkanVzdERlbm9tKSkudG9GaXhlZCgxMCxhcGkuQmlnTnVtYmVyLlJPVU5EX0RPV04pLHJld2FyZFBvb2wucGVuZGluZ0NsYWltcz1hcGkuQmlnTnVtYmVyKHJld2FyZFBvb2wucGVuZGluZ0NsYWltcykucGx1cyhhd2FpdCBwb3N0Q2xhaW1zSW5JbnRlcnZhbChwYXJhbXMscmV3YXJkUG9vbCxsYXN0UmV3YXJkVGltZXN0YW1wLG5leHRSZXdhcmRUaW1lc3RhbXApKS50b0ZpeGVkKDEwLGFwaS5CaWdOdW1iZXIuUk9VTkRfRE9XTikscmV3YXJkUG9vbC5sYXN0UmV3YXJkVGltZXN0YW1wPW5leHRSZXdhcmRUaW1lc3RhbXAscmV3YXJkUG9vbC5pbnRlcnZhbFBlbmRpbmdDbGFpbXM9cmV3YXJkUG9vbC5wZW5kaW5nQ2xhaW1zLHJld2FyZFBvb2wuaW50ZXJ2YWxSZXdhcmRQb29sPXJld2FyZFBvb2wucmV3YXJkUG9vbH1hd2FpdCBjb21wdXRlUG9zdFJld2FyZHMocGFyYW1zLHJld2FyZFBvb2wsdG9rZW4sbmV4dENsYWltRGVjYXlUaW1lc3RhbXApLGF3YWl0IGFwaS5kYi51cGRhdGUoInJld2FyZFBvb2xzIixyZXdhcmRQb29sKX1hd2FpdCBhcGkuZGIudXBkYXRlKCJwYXJhbXMiLHBhcmFtcyl9YXN5bmMgZnVuY3Rpb24gZ2V0UmV3YXJkUG9vbElkcyhwYXlsb2FkKXtjb25zdHtyZXdhcmRQb29sczpyZXdhcmRQb29scyxqc29uTWV0YWRhdGE6anNvbk1ldGFkYXRhLHBhcmVudEF1dGhvcjpwYXJlbnRBdXRob3IscGFyZW50UGVybWxpbms6cGFyZW50UGVybWxpbmt9PXBheWxvYWQscGFyYW1zPWF3YWl0IGFwaS5kYi5maW5kT25lKCJwYXJhbXMiLHt9KTtpZihwYXJlbnRBdXRob3ImJnBhcmVudFBlcm1saW5rKXtjb25zdCBwYXJlbnRBdXRob3JwZXJtPWBAJHtwYXJlbnRBdXRob3J9LyR7cGFyZW50UGVybWxpbmt9YCxwYXJlbnRQb3N0cz1hd2FpdCBhcGkuZGIuZmluZCgicG9zdHMiLHthdXRob3JwZXJtOnBhcmVudEF1dGhvcnBlcm19KTtyZXR1cm4gcGFyZW50UG9zdHMmJnBhcmVudFBvc3RzLmxlbmd0aD4wP3BhcmVudFBvc3RzLm1hcChwPT5wLnJld2FyZFBvb2xJZCk6W119aWYoanNvbk1ldGFkYXRhJiZqc29uTWV0YWRhdGEudGFncyYmQXJyYXkuaXNBcnJheShqc29uTWV0YWRhdGEudGFncykmJmpzb25NZXRhZGF0YS50YWdzLmV2ZXJ5KHQ9PiJzdHJpbmciPT10eXBlb2YgdCkpe2NvbnN0IHNlYXJjaFRhZ3M9cGFyZW50UGVybWxpbms/anNvbk1ldGFkYXRhLnRhZ3MuY29uY2F0KFtwYXJlbnRQZXJtbGlua10pOmpzb25NZXRhZGF0YS50YWdzLHRhZ1Jld2FyZFBvb2xzPWF3YWl0IGFwaS5kYi5maW5kKCJyZXdhcmRQb29scyIseyJjb25maWcudGFncyI6eyRpbjpzZWFyY2hUYWdzfX0scGFyYW1zLm1heFBvb2xzUGVyUG9zdCwwLFt7aW5kZXg6Il9pZCIsZGVzY2VuZGluZzohMX1dKTtpZih0YWdSZXdhcmRQb29scyYmdGFnUmV3YXJkUG9vbHMubGVuZ3RoPjApcmV0dXJuIHRhZ1Jld2FyZFBvb2xzLm1hcChyPT5yLl9pZCl9cmV0dXJuIHJld2FyZFBvb2xzJiZBcnJheS5pc0FycmF5KHJld2FyZFBvb2xzKSYmcmV3YXJkUG9vbHMubGVuZ3RoPjA/cmV3YXJkUG9vbHMuc2xpY2UoMCxwYXJhbXMubWF4UG9vbHNQZXJQb3N0KTpbXX1hc3luYyBmdW5jdGlvbiBwcm9jZXNzVm90ZShwb3N0LHZvdGVyLHdlaWdodCx0aW1lc3RhbXApe2NvbnN0e3Jld2FyZFBvb2xJZDpyZXdhcmRQb29sSWQsc3ltYm9sOnN5bWJvbCxhdXRob3JwZXJtOmF1dGhvcnBlcm0sY2FzaG91dFRpbWU6Y2FzaG91dFRpbWV9PXBvc3Q7aWYoY2FzaG91dFRpbWU8dGltZXN0YW1wKXJldHVybjtjb25zdCByZXdhcmRQb29sPWF3YWl0IGFwaS5kYi5maW5kT25lKCJyZXdhcmRQb29scyIse19pZDpyZXdhcmRQb29sSWR9KTtpZighcmV3YXJkUG9vbHx8IXJld2FyZFBvb2wuYWN0aXZlKXJldHVybjtsZXQgdm90aW5nUG93ZXI9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInZvdGluZ1Bvd2VyIix7cmV3YXJkUG9vbElkOnJld2FyZFBvb2xJZCxhY2NvdW50OnZvdGVyfSk7dm90aW5nUG93ZXI/KHZvdGluZ1Bvd2VyLnZvdGluZ1Bvd2VyKz0xZTQqKHRpbWVzdGFtcC12b3RpbmdQb3dlci5sYXN0Vm90ZVRpbWVzdGFtcCkvKDI0KnJld2FyZFBvb2wuY29uZmlnLnZvdGVSZWdlbmVyYXRpb25EYXlzKjM2MDAqMWUzKSx2b3RpbmdQb3dlci52b3RpbmdQb3dlcj1NYXRoLmZsb29yKHZvdGluZ1Bvd2VyLnZvdGluZ1Bvd2VyKSx2b3RpbmdQb3dlci52b3RpbmdQb3dlcj1NYXRoLm1pbih2b3RpbmdQb3dlci52b3RpbmdQb3dlciwxZTQpLHZvdGluZ1Bvd2VyLmRvd252b3RpbmdQb3dlcis9MWU0Kih0aW1lc3RhbXAtdm90aW5nUG93ZXIubGFzdFZvdGVUaW1lc3RhbXApLygyNCpyZXdhcmRQb29sLmNvbmZpZy5kb3dudm90ZVJlZ2VuZXJhdGlvbkRheXMqMzYwMCoxZTMpLHZvdGluZ1Bvd2VyLmRvd252b3RpbmdQb3dlcj1NYXRoLmZsb29yKHZvdGluZ1Bvd2VyLmRvd252b3RpbmdQb3dlciksdm90aW5nUG93ZXIuZG93bnZvdGluZ1Bvd2VyPU1hdGgubWluKHZvdGluZ1Bvd2VyLmRvd252b3RpbmdQb3dlciwxZTQpLHZvdGluZ1Bvd2VyLmxhc3RWb3RlVGltZXN0YW1wPXRpbWVzdGFtcCk6KHZvdGluZ1Bvd2VyPXtyZXdhcmRQb29sSWQ6cmV3YXJkUG9vbElkLGFjY291bnQ6dm90ZXIsbGFzdFZvdGVUaW1lc3RhbXA6dGltZXN0YW1wLHZvdGluZ1Bvd2VyOjFlNCxkb3dudm90aW5nUG93ZXI6MWU0fSx2b3RpbmdQb3dlcj1hd2FpdCBhcGkuZGIuaW5zZXJ0KCJ2b3RpbmdQb3dlciIsdm90aW5nUG93ZXIpKTtjb25zdCB2b3RlclRva2VuQmFsYW5jZT1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoInRva2VucyIsImJhbGFuY2VzIix7c3ltYm9sOnN5bWJvbCxhY2NvdW50OnZvdGVyfSk7bGV0IHN0YWtlPXZvdGVyVG9rZW5CYWxhbmNlP3ZvdGVyVG9rZW5CYWxhbmNlLnN0YWtlOiIwIjt2b3RlclRva2VuQmFsYW5jZSYmdm90ZXJUb2tlbkJhbGFuY2UuZGVsZWdhdGlvbnNJbiYmYXBpLkJpZ051bWJlcih2b3RlclRva2VuQmFsYW5jZS5kZWxlZ2F0aW9uc0luKS5pc0Zpbml0ZSgpJiYoc3Rha2U9YXBpLkJpZ051bWJlcihzdGFrZSkucGx1cyh2b3RlclRva2VuQmFsYW5jZS5kZWxlZ2F0aW9uc0luKSk7bGV0IHZvdGVSc2hhcmVzPSIwIix1cGRhdGVkUG9zdFJzaGFyZXM9IjAiLHVzZWRQb3dlcj0wLHVzZWREb3dudm90ZVBvd2VyPTAsY3VyYXRpb25XZWlnaHQ9IjAiO2lmKHdlaWdodD4wKXt2b3RlUnNoYXJlcz1hcGkuQmlnTnVtYmVyKHN0YWtlKS5tdWx0aXBsaWVkQnkod2VpZ2h0KS5tdWx0aXBsaWVkQnkodm90aW5nUG93ZXIudm90aW5nUG93ZXIpLmRpdmlkZWRCeSgxZTQpLmRpdmlkZWRCeSgxZTQpLnRvRml4ZWQoMTAsYXBpLkJpZ051bWJlci5ST1VORF9ET1dOKSx1c2VkUG93ZXI9TWF0aC5mbG9vcih2b3RpbmdQb3dlci52b3RpbmdQb3dlcipNYXRoLmFicyh3ZWlnaHQpKjYwKjYwKjI0LzFlNCk7Y29uc3QgdXNlZFBvd2VyRGVub209TWF0aC5mbG9vcig4NjRlNi9yZXdhcmRQb29sLmNvbmZpZy52b3RlUG93ZXJDb25zdW1wdGlvbik7dXNlZFBvd2VyPU1hdGguZmxvb3IoKHVzZWRQb3dlcit1c2VkUG93ZXJEZW5vbS0xKS91c2VkUG93ZXJEZW5vbSksdm90aW5nUG93ZXIudm90aW5nUG93ZXI9TWF0aC5tYXgoMCxNYXRoLmZsb29yKHZvdGluZ1Bvd2VyLnZvdGluZ1Bvd2VyLXVzZWRQb3dlcikpLGN1cmF0aW9uV2VpZ2h0PWFwaS5CaWdOdW1iZXIoY2FsY3VsYXRlQ3VyYXRpb25XZWlnaHRSc2hhcmVzKHJld2FyZFBvb2wsYXBpLkJpZ051bWJlcih2b3RlUnNoYXJlcykucGx1cyhwb3N0LnZvdGVQb3NpdGl2ZVJzaGFyZVN1bSkpKS5taW51cyhjYWxjdWxhdGVDdXJhdGlvbldlaWdodFJzaGFyZXMocmV3YXJkUG9vbCxwb3N0LnZvdGVQb3NpdGl2ZVJzaGFyZVN1bSkpLnRvRml4ZWQoMTAsYXBpLkJpZ051bWJlci5ST1VORF9ET1dOKX1lbHNlIGlmKHdlaWdodDwwKXt2b3RlUnNoYXJlcz1hcGkuQmlnTnVtYmVyKHN0YWtlKS5tdWx0aXBsaWVkQnkod2VpZ2h0KS5tdWx0aXBsaWVkQnkodm90aW5nUG93ZXIuZG93bnZvdGluZ1Bvd2VyKS5kaXZpZGVkQnkoMWU0KS5kaXZpZGVkQnkoMWU0KS50b0ZpeGVkKDEwLGFwaS5CaWdOdW1iZXIuUk9VTkRfRE9XTiksdXNlZERvd252b3RlUG93ZXI9TWF0aC5mbG9vcih2b3RpbmdQb3dlci5kb3dudm90aW5nUG93ZXIqTWF0aC5hYnMod2VpZ2h0KSo2MCo2MCoyNC8xZTQpO2NvbnN0IHVzZWREb3dudm90ZVBvd2VyRGVub209TWF0aC5mbG9vcig4NjRlNi9yZXdhcmRQb29sLmNvbmZpZy5kb3dudm90ZVBvd2VyQ29uc3VtcHRpb24pO3VzZWREb3dudm90ZVBvd2VyPU1hdGguZmxvb3IoKHVzZWREb3dudm90ZVBvd2VyK3VzZWREb3dudm90ZVBvd2VyRGVub20tMSkvdXNlZERvd252b3RlUG93ZXJEZW5vbSksdm90aW5nUG93ZXIuZG93bnZvdGluZ1Bvd2VyPU1hdGgubWF4KDAsTWF0aC5mbG9vcih2b3RpbmdQb3dlci5kb3dudm90aW5nUG93ZXItdXNlZERvd252b3RlUG93ZXIpKX1hd2FpdCBhcGkuZGIudXBkYXRlKCJ2b3RpbmdQb3dlciIsdm90aW5nUG93ZXIpO2xldCB2b3RlPWF3YWl0IGFwaS5kYi5maW5kT25lKCJ2b3RlcyIse3Jld2FyZFBvb2xJZDpyZXdhcmRQb29sSWQsYXV0aG9ycGVybTphdXRob3JwZXJtLHZvdGVyOnZvdGVyfSk7aWYodm90ZSl7dm90ZS50aW1lc3RhbXA9dGltZXN0YW1wLHZvdGUud2VpZ2h0PXdlaWdodCx2b3RlLmN1cmF0aW9uV2VpZ2h0PSIwIjtjb25zdCBvbGRWb3RlUnNoYXJlcz12b3RlLnJzaGFyZXM7dm90ZS5yc2hhcmVzPXZvdGVSc2hhcmVzLHVwZGF0ZWRQb3N0UnNoYXJlcz1hcGkuQmlnTnVtYmVyKHZvdGVSc2hhcmVzKS5taW51cyhvbGRWb3RlUnNoYXJlcykudG9GaXhlZCgxMCxhcGkuQmlnTnVtYmVyLlJPVU5EX0RPV04pLGF3YWl0IGFwaS5kYi51cGRhdGUoInZvdGVzIix2b3RlKSxhcGkuZW1pdCgidXBkYXRlVm90ZSIse3Jld2FyZFBvb2xJZDpyZXdhcmRQb29sSWQsc3ltYm9sOnJld2FyZFBvb2wuc3ltYm9sLHJzaGFyZXM6dm90ZVJzaGFyZXN9KX1lbHNlIHZvdGU9e3Jld2FyZFBvb2xJZDpyZXdhcmRQb29sSWQsc3ltYm9sOnN5bWJvbCxhdXRob3JwZXJtOmF1dGhvcnBlcm0sd2VpZ2h0OndlaWdodCxyc2hhcmVzOnZvdGVSc2hhcmVzLGN1cmF0aW9uV2VpZ2h0OmN1cmF0aW9uV2VpZ2h0LHRpbWVzdGFtcDp0aW1lc3RhbXAsdm90ZXI6dm90ZXJ9LHVwZGF0ZWRQb3N0UnNoYXJlcz12b3RlUnNoYXJlcyxhd2FpdCBhcGkuZGIuaW5zZXJ0KCJ2b3RlcyIsdm90ZSksYXBpLmVtaXQoIm5ld1ZvdGUiLHtyZXdhcmRQb29sSWQ6cmV3YXJkUG9vbElkLHN5bWJvbDpyZXdhcmRQb29sLnN5bWJvbCxyc2hhcmVzOnZvdGVSc2hhcmVzfSk7Y29uc3Qgb2xkUG9zdENsYWltcz1jYWxjdWxhdGVXZWlnaHRSc2hhcmVzKHJld2FyZFBvb2wscG9zdC52b3RlUnNoYXJlU3VtKTtpZihwb3N0LnZvdGVSc2hhcmVTdW09YXBpLkJpZ051bWJlcihwb3N0LnZvdGVSc2hhcmVTdW0pLnBsdXModXBkYXRlZFBvc3RSc2hhcmVzKS50b0ZpeGVkKDEwLGFwaS5CaWdOdW1iZXIuUk9VTkRfRE9XTiksYXBpLkJpZ051bWJlcih1cGRhdGVkUG9zdFJzaGFyZXMpLmd0KDApJiYocG9zdC52b3RlUG9zaXRpdmVSc2hhcmVTdW09YXBpLkJpZ051bWJlcihwb3N0LnZvdGVQb3NpdGl2ZVJzaGFyZVN1bSkucGx1cyh1cGRhdGVkUG9zdFJzaGFyZXMpLnRvRml4ZWQoMTAsYXBpLkJpZ051bWJlci5ST1VORF9ET1dOKSx0aW1lc3RhbXA8cmV3YXJkUG9vbC5jcmVhdGVkVGltZXN0YW1wKzI0KigyKnJld2FyZFBvb2wuY29uZmlnLmNhc2hvdXRXaW5kb3dEYXlzKzEpKjM2MDAqMWUzKSl7Y29uc3QgbmV3UG9zdENsYWltcz1jYWxjdWxhdGVXZWlnaHRSc2hhcmVzKHJld2FyZFBvb2wscG9zdC52b3RlUnNoYXJlU3VtKTtyZXdhcmRQb29sLnBlbmRpbmdDbGFpbXM9YXBpLkJpZ051bWJlcihyZXdhcmRQb29sLnBlbmRpbmdDbGFpbXMpLnBsdXMobmV3UG9zdENsYWltcykubWludXMob2xkUG9zdENsYWltcykudG9GaXhlZCgxMCxhcGkuQmlnTnVtYmVyLlJPVU5EX0RPV04pLGF3YWl0IGFwaS5kYi51cGRhdGUoInJld2FyZFBvb2xzIixyZXdhcmRQb29sKX1hd2FpdCBhcGkuZGIudXBkYXRlKCJwb3N0cyIscG9zdCl9YWN0aW9ucy5jcmVhdGVTU0M9YXN5bmMoKT0+e2lmKCExPT09YXdhaXQgYXBpLmRiLnRhYmxlRXhpc3RzKCJyZXdhcmRQb29scyIpKXthd2FpdCBhcGkuZGIuY3JlYXRlVGFibGUoInBhcmFtcyIpLGF3YWl0IGFwaS5kYi5jcmVhdGVUYWJsZSgicmV3YXJkUG9vbHMiLFsiY29uZmlnLnRhZ3MiLCJsYXN0Q2xhaW1EZWNheVRpbWVzdGFtcCJdKSxhd2FpdCBhcGkuZGIuY3JlYXRlVGFibGUoInBvc3RzIixbImF1dGhvcnBlcm0iLHtuYW1lOiJieUNhc2hvdXRUaW1lIixpbmRleDp7cmV3YXJkUG9vbElkOjEsY2FzaG91dFRpbWU6MX19XSx7cHJpbWFyeUtleTpbImF1dGhvcnBlcm0iLCJyZXdhcmRQb29sSWQiXX0pLGF3YWl0IGFwaS5kYi5jcmVhdGVUYWJsZSgidm90ZXMiLFt7bmFtZToiYnlUaW1lc3RhbXAiLGluZGV4OntyZXdhcmRQb29sSWQ6MSxhdXRob3JwZXJtOjEsdGltZXN0YW1wOjF9fV0se3ByaW1hcnlLZXk6WyJyZXdhcmRQb29sSWQiLCJhdXRob3JwZXJtIiwidm90ZXIiXX0pLGF3YWl0IGFwaS5kYi5jcmVhdGVUYWJsZSgidm90aW5nUG93ZXIiLFtdLHtwcmltYXJ5S2V5OlsicmV3YXJkUG9vbElkIiwiYWNjb3VudCJdfSk7Y29uc3QgcGFyYW1zPXtzZXR1cEZlZToiMTAwMCIsdXBkYXRlRmVlOiIyMCIsbWF4UG9vbHNQZXJQb3N0OjIwLG1heFRhZ3NQZXJQb29sOjUsbWFpbnRlbmFuY2VUb2tlbnNQZXJCbG9jazoyLGxhc3RNYWludGVuYW5jZUJsb2NrOmFwaS5ibG9ja051bWJlcixtYXhQb3N0c1Byb2Nlc3NlZFBlclJvdW5kOjIwLHZvdGVRdWVyeUxpbWl0OjEwMCxtYXhWb3Rlc1Byb2Nlc3NlZFBlclJvdW5kOjEwMCxsYXN0UHJvY2Vzc2VkUG9vbElkOjB9O2F3YWl0IGFwaS5kYi5pbnNlcnQoInBhcmFtcyIscGFyYW1zKX19LGFjdGlvbnMudXBkYXRlUGFyYW1zPWFzeW5jIHBheWxvYWQ9PntpZihhcGkuc2VuZGVyIT09YXBpLm93bmVyKXJldHVybjtjb25zdHtzZXR1cEZlZTpzZXR1cEZlZSx1cGRhdGVGZWU6dXBkYXRlRmVlLG1haW50ZW5hbmNlVG9rZW5zUGVyQmxvY2s6bWFpbnRlbmFuY2VUb2tlbnNQZXJCbG9jayxtYXhQb3N0c1Byb2Nlc3NlZFBlclJvdW5kOm1heFBvc3RzUHJvY2Vzc2VkUGVyUm91bmQsbWF4Vm90ZXNQcm9jZXNzZWRQZXJSb3VuZDptYXhWb3Rlc1Byb2Nlc3NlZFBlclJvdW5kLHZvdGVRdWVyeUxpbWl0OnZvdGVRdWVyeUxpbWl0fT1wYXlsb2FkLHBhcmFtcz1hd2FpdCBhcGkuZGIuZmluZE9uZSgicGFyYW1zIix7fSk7aWYoc2V0dXBGZWUpe2lmKCFhcGkuYXNzZXJ0KCJzdHJpbmciPT10eXBlb2Ygc2V0dXBGZWUmJiFhcGkuQmlnTnVtYmVyKHNldHVwRmVlKS5pc05hTigpJiZhcGkuQmlnTnVtYmVyKHNldHVwRmVlKS5ndGUoMCksImludmFsaWQgc2V0dXBGZWUiKSlyZXR1cm47cGFyYW1zLnNldHVwRmVlPXNldHVwRmVlfWlmKHVwZGF0ZUZlZSl7aWYoIWFwaS5hc3NlcnQoInN0cmluZyI9PXR5cGVvZiB1cGRhdGVGZWUmJiFhcGkuQmlnTnVtYmVyKHVwZGF0ZUZlZSkuaXNOYU4oKSYmYXBpLkJpZ051bWJlcih1cGRhdGVGZWUpLmd0ZSgwKSwiaW52YWxpZCB1cGRhdGVGZWUiKSlyZXR1cm47cGFyYW1zLnVwZGF0ZUZlZT11cGRhdGVGZWV9aWYobWFpbnRlbmFuY2VUb2tlbnNQZXJCbG9jayl7aWYoIWFwaS5hc3NlcnQoTnVtYmVyLmlzSW50ZWdlcihtYWludGVuYW5jZVRva2Vuc1BlckJsb2NrKSYmbWFpbnRlbmFuY2VUb2tlbnNQZXJCbG9jaz49MSwiaW52YWxpZCBtYWludGVuYW5jZVRva2Vuc1BlckJsb2NrIikpcmV0dXJuO3BhcmFtcy5tYWludGVuYW5jZVRva2Vuc1BlckJsb2NrPW1haW50ZW5hbmNlVG9rZW5zUGVyQmxvY2t9aWYobWF4UG9zdHNQcm9jZXNzZWRQZXJSb3VuZCl7aWYoIWFwaS5hc3NlcnQoTnVtYmVyLmlzSW50ZWdlcihtYXhQb3N0c1Byb2Nlc3NlZFBlclJvdW5kKSYmbWF4UG9zdHNQcm9jZXNzZWRQZXJSb3VuZD49MSwiaW52YWxpZCBtYXhQb3N0c1Byb2Nlc3NlZFBlclJvdW5kIikpcmV0dXJuO3BhcmFtcy5tYXhQb3N0c1Byb2Nlc3NlZFBlclJvdW5kPW1heFBvc3RzUHJvY2Vzc2VkUGVyUm91bmR9aWYobWF4Vm90ZXNQcm9jZXNzZWRQZXJSb3VuZCl7aWYoIWFwaS5hc3NlcnQoTnVtYmVyLmlzSW50ZWdlcihtYXhWb3Rlc1Byb2Nlc3NlZFBlclJvdW5kKSYmbWF4Vm90ZXNQcm9jZXNzZWRQZXJSb3VuZD49MSwiaW52YWxpZCBtYXhWb3Rlc1Byb2Nlc3NlZFBlclJvdW5kIikpcmV0dXJuO3BhcmFtcy5tYXhWb3Rlc1Byb2Nlc3NlZFBlclJvdW5kPW1heFZvdGVzUHJvY2Vzc2VkUGVyUm91bmR9aWYodm90ZVF1ZXJ5TGltaXQpe2lmKCFhcGkuYXNzZXJ0KE51bWJlci5pc0ludGVnZXIodm90ZVF1ZXJ5TGltaXQpJiZ2b3RlUXVlcnlMaW1pdD49MSwiaW52YWxpZCB2b3RlUXVlcnlMaW1pdCIpKXJldHVybjtwYXJhbXMudm90ZVF1ZXJ5TGltaXQ9dm90ZVF1ZXJ5TGltaXR9YXdhaXQgYXBpLmRiLnVwZGF0ZSgicGFyYW1zIixwYXJhbXMpfSxhY3Rpb25zLmNyZWF0ZVJld2FyZFBvb2w9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e3N5bWJvbDpzeW1ib2wsY29uZmlnOmNvbmZpZyxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fT1wYXlsb2FkO2lmKGF3YWl0IHRva2VuTWFpbnRlbmFuY2UoKSwhYXBpLmFzc2VydCghMD09PWlzU2lnbmVkV2l0aEFjdGl2ZUtleSwib3BlcmF0aW9uIG11c3QgYmUgc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5IikpcmV0dXJuO2NvbnN0IHBhcmFtcz1hd2FpdCBhcGkuZGIuZmluZE9uZSgicGFyYW1zIix7fSkse3NldHVwRmVlOnNldHVwRmVlLG1heFRhZ3NQZXJQb29sOm1heFRhZ3NQZXJQb29sfT1wYXJhbXMsdXRpbGl0eVRva2VuQmFsYW5jZT1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoInRva2VucyIsImJhbGFuY2VzIix7YWNjb3VudDphcGkuc2VuZGVyLHN5bWJvbDoiQkVFIn0pLGF1dGhvcml6ZWRDcmVhdGlvbj0hKCFhcGkuQmlnTnVtYmVyKHNldHVwRmVlKS5sdGUoMCkmJmFwaS5zZW5kZXIhPT1hcGkub3duZXIpfHx1dGlsaXR5VG9rZW5CYWxhbmNlJiZhcGkuQmlnTnVtYmVyKHV0aWxpdHlUb2tlbkJhbGFuY2UuYmFsYW5jZSkuZ3RlKHNldHVwRmVlKTtpZighYXBpLmFzc2VydChhdXRob3JpemVkQ3JlYXRpb24sInlvdSBtdXN0IGhhdmUgZW5vdWdoIHRva2VucyB0byBjb3ZlciB0aGUgY3JlYXRpb24gZmVlIikpcmV0dXJuO2NvbnN0IHRva2VuPWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgidG9rZW5zIiwidG9rZW5zIix7c3ltYm9sOnN5bWJvbH0pO2lmKCFhcGkuYXNzZXJ0KHRva2VuLCJ0b2tlbiBub3QgZm91bmQiKSlyZXR1cm47aWYoIWFwaS5hc3NlcnQoY29uZmlnJiYib2JqZWN0Ij09dHlwZW9mIGNvbmZpZywiY29uZmlnIGludmFsaWQiKSlyZXR1cm47Y29uc3R7cG9zdFJld2FyZEN1cnZlOnBvc3RSZXdhcmRDdXJ2ZSxwb3N0UmV3YXJkQ3VydmVQYXJhbWV0ZXI6cG9zdFJld2FyZEN1cnZlUGFyYW1ldGVyLGN1cmF0aW9uUmV3YXJkQ3VydmU6Y3VyYXRpb25SZXdhcmRDdXJ2ZSxjdXJhdGlvblJld2FyZEN1cnZlUGFyYW1ldGVyOmN1cmF0aW9uUmV3YXJkQ3VydmVQYXJhbWV0ZXIsY3VyYXRpb25SZXdhcmRQZXJjZW50YWdlOmN1cmF0aW9uUmV3YXJkUGVyY2VudGFnZSxjYXNob3V0V2luZG93RGF5czpjYXNob3V0V2luZG93RGF5cyxyZXdhcmRQZXJJbnRlcnZhbDpyZXdhcmRQZXJJbnRlcnZhbCxyZXdhcmRJbnRlcnZhbFNlY29uZHM6cmV3YXJkSW50ZXJ2YWxTZWNvbmRzLHZvdGVSZWdlbmVyYXRpb25EYXlzOnZvdGVSZWdlbmVyYXRpb25EYXlzLGRvd252b3RlUmVnZW5lcmF0aW9uRGF5czpkb3dudm90ZVJlZ2VuZXJhdGlvbkRheXMsc3Rha2VkUmV3YXJkUGVyY2VudGFnZTpzdGFrZWRSZXdhcmRQZXJjZW50YWdlLHZvdGVQb3dlckNvbnN1bXB0aW9uOnZvdGVQb3dlckNvbnN1bXB0aW9uLGRvd252b3RlUG93ZXJDb25zdW1wdGlvbjpkb3dudm90ZVBvd2VyQ29uc3VtcHRpb24sdGFnczp0YWdzfT1jb25maWc7aWYoIWFwaS5hc3NlcnQocG9zdFJld2FyZEN1cnZlJiYicG93ZXIiPT09cG9zdFJld2FyZEN1cnZlLCJwb3N0UmV3YXJkQ3VydmUgc2hvdWxkIGJlIG9uZSBvZjogW3Bvd2VyXSIpKXJldHVybjtjb25zdCBwb3N0RXhwb25lbnQ9YXBpLkJpZ051bWJlcihwb3N0UmV3YXJkQ3VydmVQYXJhbWV0ZXIpO2lmKCFhcGkuYXNzZXJ0KCJzdHJpbmciPT10eXBlb2YgcG9zdFJld2FyZEN1cnZlUGFyYW1ldGVyJiZwb3N0RXhwb25lbnQuaXNGaW5pdGUoKSYmcG9zdEV4cG9uZW50Lmd0ZSgiMSIpJiZwb3N0RXhwb25lbnQubHRlKCIyIikmJnBvc3RFeHBvbmVudC5kcCgpPD0yLCdwb3N0UmV3YXJkQ3VydmVQYXJhbWV0ZXIgc2hvdWxkIGJlIGJldHdlZW4gIjEiIGFuZCAiMiIgd2l0aCBwcmVjaXNpb24gYXQgbW9zdCAyJykpcmV0dXJuO2lmKCFhcGkuYXNzZXJ0KGN1cmF0aW9uUmV3YXJkQ3VydmUmJiJwb3dlciI9PT1jdXJhdGlvblJld2FyZEN1cnZlLCJjdXJhdGlvblJld2FyZEN1cnZlIHNob3VsZCBiZSBvbmUgb2Y6IFtwb3dlcl0iKSlyZXR1cm47Y29uc3QgY3VyYXRpb25FeHBvbmVudD1hcGkuQmlnTnVtYmVyKGN1cmF0aW9uUmV3YXJkQ3VydmVQYXJhbWV0ZXIpO2lmKCFhcGkuYXNzZXJ0KCJzdHJpbmciPT10eXBlb2YgY3VyYXRpb25SZXdhcmRDdXJ2ZVBhcmFtZXRlciYmY3VyYXRpb25FeHBvbmVudC5pc0Zpbml0ZSgpJiZjdXJhdGlvbkV4cG9uZW50Lmd0ZSgiMC41IikmJmN1cmF0aW9uRXhwb25lbnQubHRlKCIxIikmJmN1cmF0aW9uRXhwb25lbnQuZHAoKTw9MiwnY3VyYXRpb25SZXdhcmRDdXJ2ZVBhcmFtZXRlciBjYW4gb25seSBiZSBiZXR3ZWVuICIwLjUiIGFuZCAiMSIgd2l0aCBwcmVjaXNpb24gYXQgbW9zdCAyJykpcmV0dXJuO2lmKCFhcGkuYXNzZXJ0KE51bWJlci5pc0ludGVnZXIoY3VyYXRpb25SZXdhcmRQZXJjZW50YWdlKSYmY3VyYXRpb25SZXdhcmRQZXJjZW50YWdlPj0wJiZjdXJhdGlvblJld2FyZFBlcmNlbnRhZ2U8PTEwMCwiY3VyYXRpb25SZXdhcmRQZXJjZW50YWdlIHNob3VsZCBiZSBhbiBpbnRlZ2VyIGJldHdlZW4gMCBhbmQgMTAwIikpcmV0dXJuO2lmKCFhcGkuYXNzZXJ0KGNhc2hvdXRXaW5kb3dEYXlzJiZOdW1iZXIuaXNJbnRlZ2VyKGNhc2hvdXRXaW5kb3dEYXlzKSYmY2FzaG91dFdpbmRvd0RheXM+PTEmJmNhc2hvdXRXaW5kb3dEYXlzPD0zMCwiY2FzaG91dFdpbmRvd0RheXMgc2hvdWxkIGJlIGFuIGludGVnZXIgYmV0d2VlbiAxIGFuZCAzMCIpKXJldHVybjtjb25zdCBwYXJzZWRSZXdhcmRQZXJJbnRlcnZhbD1hcGkuQmlnTnVtYmVyKHJld2FyZFBlckludGVydmFsKTtpZighYXBpLmFzc2VydCgic3RyaW5nIj09dHlwZW9mIHJld2FyZFBlckludGVydmFsJiZwYXJzZWRSZXdhcmRQZXJJbnRlcnZhbC5pc0Zpbml0ZSgpJiZwYXJzZWRSZXdhcmRQZXJJbnRlcnZhbC5ndCgwKSwicmV3YXJkUGVySW50ZXJ2YWwgaW52YWxpZCIpfHwhYXBpLmFzc2VydChwYXJzZWRSZXdhcmRQZXJJbnRlcnZhbC5kcCgpPD10b2tlbi5wcmVjaXNpb24sInRva2VuIHByZWNpc2lvbiBtaXNtYXRjaCBmb3IgcmV3YXJkUGVySW50ZXJ2YWwiKSlyZXR1cm47aWYoIWFwaS5hc3NlcnQocmV3YXJkSW50ZXJ2YWxTZWNvbmRzJiZOdW1iZXIuaXNJbnRlZ2VyKHJld2FyZEludGVydmFsU2Vjb25kcykmJnJld2FyZEludGVydmFsU2Vjb25kcz49MyYmcmV3YXJkSW50ZXJ2YWxTZWNvbmRzPD04NjQwMCYmcmV3YXJkSW50ZXJ2YWxTZWNvbmRzJTM9PTAsInJld2FyZEludGVydmFsU2Vjb25kcyBzaG91bGQgYmUgYW4gaW50ZWdlciBiZXR3ZWVuIDMgYW5kIDg2NDAwLCBhbmQgZGl2aXNpYmxlIGJ5IDMiKSlyZXR1cm47aWYoIWFwaS5hc3NlcnQodm90ZVJlZ2VuZXJhdGlvbkRheXMmJk51bWJlci5pc0ludGVnZXIodm90ZVJlZ2VuZXJhdGlvbkRheXMpJiZ2b3RlUmVnZW5lcmF0aW9uRGF5cz49MSYmdm90ZVJlZ2VuZXJhdGlvbkRheXM8PTMwLCJ2b3RlUmVnZW5lcmF0aW9uRGF5cyBzaG91bGQgYmUgYW4gaW50ZWdlciBiZXR3ZWVuIDEgYW5kIDMwIikpcmV0dXJuO2lmKCFhcGkuYXNzZXJ0KGRvd252b3RlUmVnZW5lcmF0aW9uRGF5cyYmTnVtYmVyLmlzSW50ZWdlcihkb3dudm90ZVJlZ2VuZXJhdGlvbkRheXMpJiZkb3dudm90ZVJlZ2VuZXJhdGlvbkRheXM+PTEmJmRvd252b3RlUmVnZW5lcmF0aW9uRGF5czw9MzAsImRvd252b3RlUmVnZW5lcmF0aW9uRGF5cyBzaG91bGQgYmUgYW4gaW50ZWdlciBiZXR3ZWVuIDEgYW5kIDMwIikpcmV0dXJuO2lmKCFhcGkuYXNzZXJ0KE51bWJlci5pc0ludGVnZXIoc3Rha2VkUmV3YXJkUGVyY2VudGFnZSkmJnN0YWtlZFJld2FyZFBlcmNlbnRhZ2U+PTAmJnN0YWtlZFJld2FyZFBlcmNlbnRhZ2U8PTEwMCwic3Rha2VkUmV3YXJkUGVyY2VudGFnZSBzaG91bGQgYmUgYW4gaW50ZWdlciBiZXR3ZWVuIDAgYW5kIDEwMCIpKXJldHVybjtpZighYXBpLmFzc2VydCh2b3RlUG93ZXJDb25zdW1wdGlvbiYmTnVtYmVyLmlzSW50ZWdlcih2b3RlUG93ZXJDb25zdW1wdGlvbikmJnZvdGVQb3dlckNvbnN1bXB0aW9uPj0xJiZ2b3RlUG93ZXJDb25zdW1wdGlvbjw9MWU0LCJ2b3RlUG93ZXJDb25zdW1wdGlvbiBzaG91bGQgYmUgYW4gaW50ZWdlciBiZXR3ZWVuIDEgYW5kIDEwMDAwIikpcmV0dXJuO2lmKCFhcGkuYXNzZXJ0KGRvd252b3RlUG93ZXJDb25zdW1wdGlvbiYmTnVtYmVyLmlzSW50ZWdlcihkb3dudm90ZVBvd2VyQ29uc3VtcHRpb24pJiZkb3dudm90ZVBvd2VyQ29uc3VtcHRpb24+PTEmJmRvd252b3RlUG93ZXJDb25zdW1wdGlvbjw9MWU0LCJkb3dudm90ZVBvd2VyQ29uc3VtcHRpb24gc2hvdWxkIGJlIGFuIGludGVnZXIgYmV0d2VlbiAxIGFuZCAxMDAwMCIpKXJldHVybjtpZighYXBpLmFzc2VydChBcnJheS5pc0FycmF5KHRhZ3MpJiZ0YWdzLmxlbmd0aD49MSYmdGFncy5sZW5ndGg8PW1heFRhZ3NQZXJQb29sJiZ0YWdzLmV2ZXJ5KHQ9PiJzdHJpbmciPT10eXBlb2YgdCksInRhZ3Mgc2hvdWxkIGJlIGEgbm9uLWVtcHR5IGFycmF5IG9mIHN0cmluZ3Mgb2YgbGVuZ3RoIGF0IG1vc3QgIittYXhUYWdzUGVyUG9vbCkpcmV0dXJuO2lmKCFhcGkuYXNzZXJ0KGFwaS5zZW5kZXI9PT10b2tlbi5pc3N1ZXJ8fGFwaS5zZW5kZXI9PT1hcGkub3duZXImJiJCRUUiPT09dG9rZW4uc3ltYm9sLCJtdXN0IGJlIGlzc3VlciBvZiB0b2tlbiIpKXJldHVybjtpZighYXBpLmFzc2VydCh0b2tlbi5zdGFraW5nRW5hYmxlZCwidG9rZW4gbXVzdCBoYXZlIHN0YWtpbmcgZW5hYmxlZCIpKXJldHVybjtjb25zdCBleGlzdGluZ1Jld2FyZFBvb2w9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInJld2FyZFBvb2xzIix7c3ltYm9sOnN5bWJvbH0pO2lmKCFhcGkuYXNzZXJ0KCFleGlzdGluZ1Jld2FyZFBvb2wsImNhbm5vdCBjcmVhdGUgbXVsdGlwbGUgcmV3YXJkIHBvb2xzIHBlciB0b2tlbiIpKXJldHVybjtjb25zdCB0aW1lc3RhbXA9bmV3IERhdGUoYXBpLmhpdmVCbG9ja1RpbWVzdGFtcCsiLjAwMFoiKS5nZXRUaW1lKCkscmV3YXJkUG9vbD17c3ltYm9sOnN5bWJvbCxyZXdhcmRQb29sOiIwIixsYXN0UmV3YXJkVGltZXN0YW1wOnRpbWVzdGFtcCxsYXN0Q2xhaW1EZWNheVRpbWVzdGFtcDp0aW1lc3RhbXAsY3JlYXRlZFRpbWVzdGFtcDp0aW1lc3RhbXAsY29uZmlnOntwb3N0UmV3YXJkQ3VydmU6cG9zdFJld2FyZEN1cnZlLHBvc3RSZXdhcmRDdXJ2ZVBhcmFtZXRlcjpwb3N0UmV3YXJkQ3VydmVQYXJhbWV0ZXIsY3VyYXRpb25SZXdhcmRDdXJ2ZTpjdXJhdGlvblJld2FyZEN1cnZlLGN1cmF0aW9uUmV3YXJkQ3VydmVQYXJhbWV0ZXI6Y3VyYXRpb25SZXdhcmRDdXJ2ZVBhcmFtZXRlcixjdXJhdGlvblJld2FyZFBlcmNlbnRhZ2U6Y3VyYXRpb25SZXdhcmRQZXJjZW50YWdlLGNhc2hvdXRXaW5kb3dEYXlzOmNhc2hvdXRXaW5kb3dEYXlzLHJld2FyZFBlckludGVydmFsOnJld2FyZFBlckludGVydmFsLHJld2FyZEludGVydmFsU2Vjb25kczpyZXdhcmRJbnRlcnZhbFNlY29uZHMsdm90ZVJlZ2VuZXJhdGlvbkRheXM6dm90ZVJlZ2VuZXJhdGlvbkRheXMsZG93bnZvdGVSZWdlbmVyYXRpb25EYXlzOmRvd252b3RlUmVnZW5lcmF0aW9uRGF5cyxzdGFrZWRSZXdhcmRQZXJjZW50YWdlOnN0YWtlZFJld2FyZFBlcmNlbnRhZ2Usdm90ZVBvd2VyQ29uc3VtcHRpb246dm90ZVBvd2VyQ29uc3VtcHRpb24sZG93bnZvdGVQb3dlckNvbnN1bXB0aW9uOmRvd252b3RlUG93ZXJDb25zdW1wdGlvbix0YWdzOnRhZ3N9LHBlbmRpbmdDbGFpbXM6IjAiLGFjdGl2ZTohMH0saW5zZXJ0ZWRSZXdhcmRQb29sPWF3YWl0IGFwaS5kYi5pbnNlcnQoInJld2FyZFBvb2xzIixyZXdhcmRQb29sKTthcGkuc2VuZGVyIT09YXBpLm93bmVyJiZhcGkuQmlnTnVtYmVyKHNldHVwRmVlKS5ndCgwKSYmYXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJ0b2tlbnMiLCJ0cmFuc2ZlciIse3RvOiJudWxsIixzeW1ib2w6IkJFRSIscXVhbnRpdHk6c2V0dXBGZWUsaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX0pLGFwaS5lbWl0KCJjcmVhdGVSZXdhcmRQb29sIix7X2lkOmluc2VydGVkUmV3YXJkUG9vbC5faWR9KX0sYWN0aW9ucy51cGRhdGVSZXdhcmRQb29sPWFzeW5jIHBheWxvYWQ9Pntjb25zdHtyZXdhcmRQb29sSWQ6cmV3YXJkUG9vbElkLGNvbmZpZzpjb25maWcsaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX09cGF5bG9hZDtpZihhd2FpdCB0b2tlbk1haW50ZW5hbmNlKCksIWFwaS5hc3NlcnQoITA9PT1pc1NpZ25lZFdpdGhBY3RpdmVLZXksIm9wZXJhdGlvbiBtdXN0IGJlIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpKXJldHVybjtjb25zdCBwYXJhbXM9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInBhcmFtcyIse30pLHt1cGRhdGVGZWU6dXBkYXRlRmVlLG1heFRhZ3NQZXJQb29sOm1heFRhZ3NQZXJQb29sfT1wYXJhbXMsdXRpbGl0eVRva2VuQmFsYW5jZT1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoInRva2VucyIsImJhbGFuY2VzIix7YWNjb3VudDphcGkuc2VuZGVyLHN5bWJvbDoiQkVFIn0pLGF1dGhvcml6ZWQ9ISghYXBpLkJpZ051bWJlcih1cGRhdGVGZWUpLmx0ZSgwKSYmYXBpLnNlbmRlciE9PWFwaS5vd25lcil8fHV0aWxpdHlUb2tlbkJhbGFuY2UmJmFwaS5CaWdOdW1iZXIodXRpbGl0eVRva2VuQmFsYW5jZS5iYWxhbmNlKS5ndGUodXBkYXRlRmVlKTtpZighYXBpLmFzc2VydChhdXRob3JpemVkLCJ5b3UgbXVzdCBoYXZlIGVub3VnaCB0b2tlbnMgdG8gY292ZXIgdGhlIHVwZGF0ZSBmZWUiKSlyZXR1cm47aWYoIWFwaS5hc3NlcnQoY29uZmlnJiYib2JqZWN0Ij09dHlwZW9mIGNvbmZpZywiY29uZmlnIGludmFsaWQiKSlyZXR1cm47Y29uc3R7cG9zdFJld2FyZEN1cnZlOnBvc3RSZXdhcmRDdXJ2ZSxwb3N0UmV3YXJkQ3VydmVQYXJhbWV0ZXI6cG9zdFJld2FyZEN1cnZlUGFyYW1ldGVyLGN1cmF0aW9uUmV3YXJkQ3VydmU6Y3VyYXRpb25SZXdhcmRDdXJ2ZSxjdXJhdGlvblJld2FyZEN1cnZlUGFyYW1ldGVyOmN1cmF0aW9uUmV3YXJkQ3VydmVQYXJhbWV0ZXIsY3VyYXRpb25SZXdhcmRQZXJjZW50YWdlOmN1cmF0aW9uUmV3YXJkUGVyY2VudGFnZSxjYXNob3V0V2luZG93RGF5czpjYXNob3V0V2luZG93RGF5cyxyZXdhcmRQZXJJbnRlcnZhbDpyZXdhcmRQZXJJbnRlcnZhbCxyZXdhcmRJbnRlcnZhbFNlY29uZHM6cmV3YXJkSW50ZXJ2YWxTZWNvbmRzLHZvdGVSZWdlbmVyYXRpb25EYXlzOnZvdGVSZWdlbmVyYXRpb25EYXlzLGRvd252b3RlUmVnZW5lcmF0aW9uRGF5czpkb3dudm90ZVJlZ2VuZXJhdGlvbkRheXMsc3Rha2VkUmV3YXJkUGVyY2VudGFnZTpzdGFrZWRSZXdhcmRQZXJjZW50YWdlLHZvdGVQb3dlckNvbnN1bXB0aW9uOnZvdGVQb3dlckNvbnN1bXB0aW9uLGRvd252b3RlUG93ZXJDb25zdW1wdGlvbjpkb3dudm90ZVBvd2VyQ29uc3VtcHRpb24sdGFnczp0YWdzfT1jb25maWcsZXhpc3RpbmdSZXdhcmRQb29sPWF3YWl0IGFwaS5kYi5maW5kT25lKCJyZXdhcmRQb29scyIse19pZDpyZXdhcmRQb29sSWR9KTtpZighYXBpLmFzc2VydChleGlzdGluZ1Jld2FyZFBvb2wsInJld2FyZCBwb29sIG5vdCBmb3VuZCIpKXJldHVybjtjb25zdCB0b2tlbj1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoInRva2VucyIsInRva2VucyIse3N5bWJvbDpleGlzdGluZ1Jld2FyZFBvb2wuc3ltYm9sfSk7aWYoIWFwaS5hc3NlcnQocG9zdFJld2FyZEN1cnZlJiYicG93ZXIiPT09cG9zdFJld2FyZEN1cnZlLCJwb3N0UmV3YXJkQ3VydmUgc2hvdWxkIGJlIG9uZSBvZjogW3Bvd2VyXSIpKXJldHVybjtleGlzdGluZ1Jld2FyZFBvb2wuY29uZmlnLnBvc3RSZXdhcmRDdXJ2ZT1wb3N0UmV3YXJkQ3VydmU7Y29uc3QgcG9zdEV4cG9uZW50PWFwaS5CaWdOdW1iZXIocG9zdFJld2FyZEN1cnZlUGFyYW1ldGVyKTtpZighYXBpLmFzc2VydCgic3RyaW5nIj09dHlwZW9mIHBvc3RSZXdhcmRDdXJ2ZVBhcmFtZXRlciYmcG9zdEV4cG9uZW50LmlzRmluaXRlKCkmJnBvc3RFeHBvbmVudC5ndGUoIjEiKSYmcG9zdEV4cG9uZW50Lmx0ZSgiMiIpJiZwb3N0RXhwb25lbnQuZHAoKTw9MiwncG9zdFJld2FyZEN1cnZlUGFyYW1ldGVyIHNob3VsZCBiZSBiZXR3ZWVuICIxIiBhbmQgIjIiIHdpdGggcHJlY2lzaW9uIGF0IG1vc3QgMicpKXJldHVybjtpZihleGlzdGluZ1Jld2FyZFBvb2wuY29uZmlnLnBvc3RSZXdhcmRDdXJ2ZVBhcmFtZXRlcj1wb3N0UmV3YXJkQ3VydmVQYXJhbWV0ZXIsIWFwaS5hc3NlcnQoY3VyYXRpb25SZXdhcmRDdXJ2ZSYmInBvd2VyIj09PWN1cmF0aW9uUmV3YXJkQ3VydmUsImN1cmF0aW9uUmV3YXJkQ3VydmUgc2hvdWxkIGJlIG9uZSBvZjogW3Bvd2VyXSIpKXJldHVybjtjb25zdCBjdXJhdGlvbkV4cG9uZW50PWFwaS5CaWdOdW1iZXIoY3VyYXRpb25SZXdhcmRDdXJ2ZVBhcmFtZXRlcik7aWYoIWFwaS5hc3NlcnQoInN0cmluZyI9PXR5cGVvZiBjdXJhdGlvblJld2FyZEN1cnZlUGFyYW1ldGVyJiZjdXJhdGlvbkV4cG9uZW50LmlzRmluaXRlKCkmJmN1cmF0aW9uRXhwb25lbnQuZ3RlKCIwLjUiKSYmY3VyYXRpb25FeHBvbmVudC5sdGUoIjEiKSYmY3VyYXRpb25FeHBvbmVudC5kcCgpPD0yLCdjdXJhdGlvblJld2FyZEN1cnZlUGFyYW1ldGVyIGNhbiBvbmx5IGJlIGJldHdlZW4gIjAuNSIgYW5kICIxIiB3aXRoIHByZWNpc2lvbiBhdCBtb3N0IDInKSlyZXR1cm47aWYoZXhpc3RpbmdSZXdhcmRQb29sLmNvbmZpZy5jdXJhdGlvblJld2FyZEN1cnZlUGFyYW1ldGVyPWN1cmF0aW9uUmV3YXJkQ3VydmVQYXJhbWV0ZXIsIWFwaS5hc3NlcnQoTnVtYmVyLmlzSW50ZWdlcihjdXJhdGlvblJld2FyZFBlcmNlbnRhZ2UpJiZjdXJhdGlvblJld2FyZFBlcmNlbnRhZ2U+PTAmJmN1cmF0aW9uUmV3YXJkUGVyY2VudGFnZTw9MTAwLCJjdXJhdGlvblJld2FyZFBlcmNlbnRhZ2Ugc2hvdWxkIGJlIGFuIGludGVnZXIgYmV0d2VlbiAwIGFuZCAxMDAiKSlyZXR1cm47aWYoZXhpc3RpbmdSZXdhcmRQb29sLmNvbmZpZy5jdXJhdGlvblJld2FyZFBlcmNlbnRhZ2U9Y3VyYXRpb25SZXdhcmRQZXJjZW50YWdlLCFhcGkuYXNzZXJ0KGNhc2hvdXRXaW5kb3dEYXlzJiZOdW1iZXIuaXNJbnRlZ2VyKGNhc2hvdXRXaW5kb3dEYXlzKSYmY2FzaG91dFdpbmRvd0RheXM+PTEmJmNhc2hvdXRXaW5kb3dEYXlzPD0zMCwiY2FzaG91dFdpbmRvd0RheXMgc2hvdWxkIGJlIGFuIGludGVnZXIgYmV0d2VlbiAxIGFuZCAzMCIpKXJldHVybjtleGlzdGluZ1Jld2FyZFBvb2wuY29uZmlnLmNhc2hvdXRXaW5kb3dEYXlzPWNhc2hvdXRXaW5kb3dEYXlzO2NvbnN0IHBhcnNlZFJld2FyZFBlckludGVydmFsPWFwaS5CaWdOdW1iZXIocmV3YXJkUGVySW50ZXJ2YWwpO2FwaS5hc3NlcnQoInN0cmluZyI9PXR5cGVvZiByZXdhcmRQZXJJbnRlcnZhbCYmcGFyc2VkUmV3YXJkUGVySW50ZXJ2YWwuaXNGaW5pdGUoKSYmcGFyc2VkUmV3YXJkUGVySW50ZXJ2YWwuZ3QoMCksInJld2FyZFBlckludGVydmFsIGludmFsaWQiKSYmYXBpLmFzc2VydChwYXJzZWRSZXdhcmRQZXJJbnRlcnZhbC5kcCgpPD10b2tlbi5wcmVjaXNpb24sInRva2VuIHByZWNpc2lvbiBtaXNtYXRjaCBmb3IgcmV3YXJkUGVySW50ZXJ2YWwiKSYmKGV4aXN0aW5nUmV3YXJkUG9vbC5jb25maWcucmV3YXJkUGVySW50ZXJ2YWw9cmV3YXJkUGVySW50ZXJ2YWwsYXBpLmFzc2VydChyZXdhcmRJbnRlcnZhbFNlY29uZHMmJk51bWJlci5pc0ludGVnZXIocmV3YXJkSW50ZXJ2YWxTZWNvbmRzKSYmcmV3YXJkSW50ZXJ2YWxTZWNvbmRzPj0zJiZyZXdhcmRJbnRlcnZhbFNlY29uZHM8PTg2NDAwJiZyZXdhcmRJbnRlcnZhbFNlY29uZHMlMz09MCwicmV3YXJkSW50ZXJ2YWxTZWNvbmRzIHNob3VsZCBiZSBhbiBpbnRlZ2VyIGJldHdlZW4gMyBhbmQgODY0MDAsIGFuZCBkaXZpc2libGUgYnkgMyIpJiYoZXhpc3RpbmdSZXdhcmRQb29sLmNvbmZpZy5yZXdhcmRJbnRlcnZhbFNlY29uZHM9cmV3YXJkSW50ZXJ2YWxTZWNvbmRzLGFwaS5hc3NlcnQodm90ZVJlZ2VuZXJhdGlvbkRheXMmJk51bWJlci5pc0ludGVnZXIodm90ZVJlZ2VuZXJhdGlvbkRheXMpJiZ2b3RlUmVnZW5lcmF0aW9uRGF5cz49MSYmdm90ZVJlZ2VuZXJhdGlvbkRheXM8PTMwLCJ2b3RlUmVnZW5lcmF0aW9uRGF5cyBzaG91bGQgYmUgYW4gaW50ZWdlciBiZXR3ZWVuIDEgYW5kIDMwIikmJihleGlzdGluZ1Jld2FyZFBvb2wuY29uZmlnLnZvdGVSZWdlbmVyYXRpb25EYXlzPXZvdGVSZWdlbmVyYXRpb25EYXlzLGFwaS5hc3NlcnQoZG93bnZvdGVSZWdlbmVyYXRpb25EYXlzJiZOdW1iZXIuaXNJbnRlZ2VyKGRvd252b3RlUmVnZW5lcmF0aW9uRGF5cykmJmRvd252b3RlUmVnZW5lcmF0aW9uRGF5cz49MSYmZG93bnZvdGVSZWdlbmVyYXRpb25EYXlzPD0zMCwiZG93bnZvdGVSZWdlbmVyYXRpb25EYXlzIHNob3VsZCBiZSBhbiBpbnRlZ2VyIGJldHdlZW4gMSBhbmQgMzAiKSYmKGV4aXN0aW5nUmV3YXJkUG9vbC5jb25maWcuZG93bnZvdGVSZWdlbmVyYXRpb25EYXlzPWRvd252b3RlUmVnZW5lcmF0aW9uRGF5cyxhcGkuYXNzZXJ0KE51bWJlci5pc0ludGVnZXIoc3Rha2VkUmV3YXJkUGVyY2VudGFnZSkmJnN0YWtlZFJld2FyZFBlcmNlbnRhZ2U+PTAmJnN0YWtlZFJld2FyZFBlcmNlbnRhZ2U8PTEwMCwic3Rha2VkUmV3YXJkUGVyY2VudGFnZSBzaG91bGQgYmUgYW4gaW50ZWdlciBiZXR3ZWVuIDAgYW5kIDEwMCIpJiYoZXhpc3RpbmdSZXdhcmRQb29sLmNvbmZpZy5zdGFrZWRSZXdhcmRQZXJjZW50YWdlPXN0YWtlZFJld2FyZFBlcmNlbnRhZ2UsYXBpLmFzc2VydCh2b3RlUG93ZXJDb25zdW1wdGlvbiYmTnVtYmVyLmlzSW50ZWdlcih2b3RlUG93ZXJDb25zdW1wdGlvbikmJnZvdGVQb3dlckNvbnN1bXB0aW9uPj0xJiZ2b3RlUG93ZXJDb25zdW1wdGlvbjw9MWU0LCJ2b3RlUG93ZXJDb25zdW1wdGlvbiBzaG91bGQgYmUgYW4gaW50ZWdlciBiZXR3ZWVuIDEgYW5kIDEwMDAwIikmJihleGlzdGluZ1Jld2FyZFBvb2wuY29uZmlnLnZvdGVQb3dlckNvbnN1bXB0aW9uPXZvdGVQb3dlckNvbnN1bXB0aW9uLGFwaS5hc3NlcnQoZG93bnZvdGVQb3dlckNvbnN1bXB0aW9uJiZOdW1iZXIuaXNJbnRlZ2VyKGRvd252b3RlUG93ZXJDb25zdW1wdGlvbikmJmRvd252b3RlUG93ZXJDb25zdW1wdGlvbj49MSYmZG93bnZvdGVQb3dlckNvbnN1bXB0aW9uPD0xZTQsImRvd252b3RlUG93ZXJDb25zdW1wdGlvbiBzaG91bGQgYmUgYW4gaW50ZWdlciBiZXR3ZWVuIDEgYW5kIDEwMDAwIikmJihleGlzdGluZ1Jld2FyZFBvb2wuY29uZmlnLmRvd252b3RlUG93ZXJDb25zdW1wdGlvbj1kb3dudm90ZVBvd2VyQ29uc3VtcHRpb24sYXBpLmFzc2VydChBcnJheS5pc0FycmF5KHRhZ3MpJiZ0YWdzLmxlbmd0aD49MSYmdGFncy5sZW5ndGg8PW1heFRhZ3NQZXJQb29sJiZ0YWdzLmV2ZXJ5KHQ9PiJzdHJpbmciPT10eXBlb2YgdCksInRhZ3Mgc2hvdWxkIGJlIGEgbm9uLWVtcHR5IGFycmF5IG9mIHN0cmluZ3Mgb2YgbGVuZ3RoIGF0IG1vc3QgIittYXhUYWdzUGVyUG9vbCkmJihleGlzdGluZ1Jld2FyZFBvb2wuY29uZmlnLnRhZ3M9dGFncyxhcGkuYXNzZXJ0KGFwaS5zZW5kZXI9PT10b2tlbi5pc3N1ZXJ8fGFwaS5zZW5kZXI9PT1hcGkub3duZXImJiJCRUUiPT09dG9rZW4uc3ltYm9sLCJtdXN0IGJlIGlzc3VlciBvZiB0b2tlbiIpJiYoYXBpLnNlbmRlciE9PWFwaS5vd25lciYmYXBpLkJpZ051bWJlcih1cGRhdGVGZWUpLmd0KDApJiZhd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoInRva2VucyIsInRyYW5zZmVyIix7dG86Im51bGwiLHN5bWJvbDoiQkVFIixxdWFudGl0eTp1cGRhdGVGZWUsaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX0pLGF3YWl0IGFwaS5kYi51cGRhdGUoInJld2FyZFBvb2xzIixleGlzdGluZ1Jld2FyZFBvb2wpKSkpKSkpKSkpfSxhY3Rpb25zLnNldEFjdGl2ZT1hc3luYyBwYXlsb2FkPT57Y29uc3R7cmV3YXJkUG9vbElkOnJld2FyZFBvb2xJZCxhY3RpdmU6YWN0aXZlLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9PXBheWxvYWQ7aWYoIWFwaS5hc3NlcnQoITA9PT1pc1NpZ25lZFdpdGhBY3RpdmVLZXksIm9wZXJhdGlvbiBtdXN0IGJlIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpKXJldHVybjtjb25zdCBleGlzdGluZ1Jld2FyZFBvb2w9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInJld2FyZFBvb2xzIix7X2lkOnJld2FyZFBvb2xJZH0pO2lmKCFhcGkuYXNzZXJ0KGV4aXN0aW5nUmV3YXJkUG9vbCwicmV3YXJkIHBvb2wgbm90IGZvdW5kIikpcmV0dXJuO2NvbnN0IHRva2VuPWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgidG9rZW5zIiwidG9rZW5zIix7c3ltYm9sOmV4aXN0aW5nUmV3YXJkUG9vbC5zeW1ib2x9KTthcGkuYXNzZXJ0KGFwaS5zZW5kZXI9PT10b2tlbi5pc3N1ZXJ8fGFwaS5zZW5kZXI9PT1hcGkub3duZXIsIm11c3QgYmUgaXNzdWVyIG9mIHRva2VuIikmJihleGlzdGluZ1Jld2FyZFBvb2wuYWN0aXZlPWFjdGl2ZSxhd2FpdCBhcGkuZGIudXBkYXRlKCJyZXdhcmRQb29scyIsZXhpc3RpbmdSZXdhcmRQb29sKSxhd2FpdCB0b2tlbk1haW50ZW5hbmNlKCkpfSxhY3Rpb25zLmNvbW1lbnQ9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e2F1dGhvcjphdXRob3IscGVybWxpbms6cGVybWxpbmsscmV3YXJkUG9vbHM6cmV3YXJkUG9vbHN9PXBheWxvYWQ7aWYoYXdhaXQgdG9rZW5NYWludGVuYW5jZSgpLCFhcGkuYXNzZXJ0KCJudWxsIj09PWFwaS5zZW5kZXIsImFjdGlvbiBtdXN0IHVzZSBjb21tZW50IG9wZXJhdGlvbiIpKXJldHVybjtpZighYXBpLmFzc2VydCghcmV3YXJkUG9vbHN8fEFycmF5LmlzQXJyYXkocmV3YXJkUG9vbHMpJiZyZXdhcmRQb29scy5ldmVyeShycD0+TnVtYmVyLmlzSW50ZWdlcihycCkpLCJyZXdhcmRQb29scyBtdXN0IGJlIGFuIGFycmF5IG9mIGludGVnZXJzIikpcmV0dXJuO2NvbnN0IHJld2FyZFBvb2xJZHM9YXdhaXQgZ2V0UmV3YXJkUG9vbElkcyhwYXlsb2FkKSxhdXRob3JwZXJtPWBAJHthdXRob3J9LyR7cGVybWxpbmt9YDtpZihhd2FpdCBhcGkuZGIuZmluZE9uZSgicG9zdHMiLHthdXRob3JwZXJtOmF1dGhvcnBlcm19KSlyZXR1cm47Y29uc3QgdGltZXN0YW1wPW5ldyBEYXRlKGFwaS5oaXZlQmxvY2tUaW1lc3RhbXArIi4wMDBaIikuZ2V0VGltZSgpO2ZvcihsZXQgaT0wO2k8cmV3YXJkUG9vbElkcy5sZW5ndGg7aSs9MSl7Y29uc3QgcmV3YXJkUG9vbElkPXJld2FyZFBvb2xJZHNbaV0scmV3YXJkUG9vbD1hd2FpdCBhcGkuZGIuZmluZE9uZSgicmV3YXJkUG9vbHMiLHtfaWQ6cmV3YXJkUG9vbElkfSk7aWYocmV3YXJkUG9vbCYmcmV3YXJkUG9vbC5hY3RpdmUpe2NvbnN0IGNhc2hvdXRUaW1lPXRpbWVzdGFtcCsyNCpyZXdhcmRQb29sLmNvbmZpZy5jYXNob3V0V2luZG93RGF5cyozNjAwKjFlMyxwb3N0PXtyZXdhcmRQb29sSWQ6cmV3YXJkUG9vbElkLHN5bWJvbDpyZXdhcmRQb29sLnN5bWJvbCxhdXRob3JwZXJtOmF1dGhvcnBlcm0sYXV0aG9yOmF1dGhvcixjcmVhdGVkOnRpbWVzdGFtcCxjYXNob3V0VGltZTpjYXNob3V0VGltZSx2b3RlUG9zaXRpdmVSc2hhcmVTdW06IjAiLHZvdGVSc2hhcmVTdW06IjAifTthd2FpdCBhcGkuZGIuaW5zZXJ0KCJwb3N0cyIscG9zdCksYXBpLmVtaXQoIm5ld0NvbW1lbnQiLHtyZXdhcmRQb29sSWQ6cmV3YXJkUG9vbElkLHN5bWJvbDpyZXdhcmRQb29sLnN5bWJvbH0pfX19LGFjdGlvbnMuY29tbWVudE9wdGlvbnM9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e2F1dGhvcjphdXRob3IscGVybWxpbms6cGVybWxpbmssbWF4QWNjZXB0ZWRQYXlvdXQ6bWF4QWNjZXB0ZWRQYXlvdXQsYmVuZWZpY2lhcmllczpiZW5lZmljaWFyaWVzfT1wYXlsb2FkO2lmKCFhcGkuYXNzZXJ0KCJudWxsIj09PWFwaS5zZW5kZXIsImFjdGlvbiBtdXN0IHVzZSBjb21tZW50T3B0aW9ucyBvcGVyYXRpb24iKSlyZXR1cm47Y29uc3QgYXV0aG9ycGVybT1gQCR7YXV0aG9yfS8ke3Blcm1saW5rfWAsZXhpc3RpbmdQb3N0cz1hd2FpdCBhcGkuZGIuZmluZCgicG9zdHMiLHthdXRob3JwZXJtOmF1dGhvcnBlcm19KTtpZighZXhpc3RpbmdQb3N0cylyZXR1cm47Y29uc3QgZGVjbGluZVBheW91dD1tYXhBY2NlcHRlZFBheW91dC5zdGFydHNXaXRoKCIwLjAwMCIpO2ZvcihsZXQgaT0wO2k8ZXhpc3RpbmdQb3N0cy5sZW5ndGg7aSs9MSl7Y29uc3QgcG9zdD1leGlzdGluZ1Bvc3RzW2ldO3Bvc3QuZGVjbGluZVBheW91dD1kZWNsaW5lUGF5b3V0LHBvc3QuYmVuZWZpY2lhcmllcz1iZW5lZmljaWFyaWVzLGF3YWl0IGFwaS5kYi51cGRhdGUoInBvc3RzIixwb3N0KX19LGFjdGlvbnMudm90ZT1hc3luYyBwYXlsb2FkPT57Y29uc3R7dm90ZXI6dm90ZXIsYXV0aG9yOmF1dGhvcixwZXJtbGluazpwZXJtbGluayx3ZWlnaHQ6d2VpZ2h0fT1wYXlsb2FkO2lmKGF3YWl0IHRva2VuTWFpbnRlbmFuY2UoKSwhYXBpLmFzc2VydCgibnVsbCI9PT1hcGkuc2VuZGVyLCJjYW4gb25seSB2b3RlIHdpdGggdm90aW5nIG9wIikpcmV0dXJuO2lmKCFhcGkuYXNzZXJ0KE51bWJlci5pc0ludGVnZXIod2VpZ2h0KSYmd2VpZ2h0Pj0tMWU0JiZ3ZWlnaHQ8PTFlNCwid2VpZ2h0IG11c3QgYmUgYW4gaW50ZWdlciBmcm9tIC0xMDAwMCB0byAxMDAwMCIpKXJldHVybjtjb25zdCB0aW1lc3RhbXA9bmV3IERhdGUoYXBpLmhpdmVCbG9ja1RpbWVzdGFtcCsiLjAwMFoiKS5nZXRUaW1lKCksYXV0aG9ycGVybT1gQCR7YXV0aG9yfS8ke3Blcm1saW5rfWAscG9zdHM9YXdhaXQgYXBpLmRiLmZpbmQoInBvc3RzIix7YXV0aG9ycGVybTphdXRob3JwZXJtfSk7aWYocG9zdHMpZm9yKGxldCBpPTA7aTxwb3N0cy5sZW5ndGg7aSs9MSl7Y29uc3QgcG9zdD1wb3N0c1tpXTthd2FpdCBwcm9jZXNzVm90ZShwb3N0LHZvdGVyLHdlaWdodCx0aW1lc3RhbXApfX07"}}}

H2
H3
H4
3 columns
2 columns
1 column
1 Comment
Ecency