Comments Smart Contract

Words
1
Reading
1 min
Listen
Play
5y

{"id":"ssc-mainnet-hive","json":{"contractName":"contract","contractAction":"update","contractPayload":{"name":"comments","params":"","code":"Y29uc3QgU01UX1BSRUNJU0lPTj0xMCxNQVhfVk9USU5HX1BPV0VSPTFlNCxNQVhfV0VJR0hUPTFlNDtmdW5jdGlvbiBjYWxjdWxhdGVXZWlnaHRSc2hhcmVzKHJld2FyZFBvb2wsdm90ZVJzaGFyZVN1bSl7aWYoYXBpLkJpZ051bWJlcih2b3RlUnNoYXJlU3VtKS5sdGUoMCkpcmV0dXJuIGFwaS5CaWdOdW1iZXIoMCk7aWYoInBvd2VyIj09PXJld2FyZFBvb2wuY29uZmlnLnBvc3RSZXdhcmRDdXJ2ZSl7Y29uc3QgcG9zdFJld2FyZEV4cG9uZW50PWFwaS5CaWdOdW1iZXIocmV3YXJkUG9vbC5jb25maWcucG9zdFJld2FyZEN1cnZlUGFyYW1ldGVyKTtyZXR1cm4gcG9zdFJld2FyZEV4cG9uZW50LmVxKCIxIil8fHBvc3RSZXdhcmRFeHBvbmVudC5lcSgiMiIpP2FwaS5CaWdOdW1iZXIodm90ZVJzaGFyZVN1bSkucG93KHJld2FyZFBvb2wuY29uZmlnLnBvc3RSZXdhcmRDdXJ2ZVBhcmFtZXRlcikudG9GaXhlZCgxMCxhcGkuQmlnTnVtYmVyLlJPVU5EX0RPV04pOmFwaS5CaWdOdW1iZXIocGFyc2VGbG9hdCh2b3RlUnNoYXJlU3VtKSoqcGFyc2VGbG9hdChyZXdhcmRQb29sLmNvbmZpZy5wb3N0UmV3YXJkQ3VydmVQYXJhbWV0ZXIpKS50b0ZpeGVkKDEwLGFwaS5CaWdOdW1iZXIuUk9VTkRfRE9XTil9cmV0dXJuIGFwaS5CaWdOdW1iZXIodm90ZVJzaGFyZVN1bSl9ZnVuY3Rpb24gY2FsY3VsYXRlQ3VyYXRpb25XZWlnaHRSc2hhcmVzKHJld2FyZFBvb2wsdm90ZVJzaGFyZVN1bSl7aWYoYXBpLkJpZ051bWJlcih2b3RlUnNoYXJlU3VtKS5sdGUoMCkpcmV0dXJuIGFwaS5CaWdOdW1iZXIoMCk7aWYoInBvd2VyIj09PXJld2FyZFBvb2wuY29uZmlnLmN1cmF0aW9uUmV3YXJkQ3VydmUpe2NvbnN0IGN1cmF0aW9uUmV3YXJkRXhwb25lbnQ9YXBpLkJpZ051bWJlcihyZXdhcmRQb29sLmNvbmZpZy5jdXJhdGlvblJld2FyZEN1cnZlUGFyYW1ldGVyKTtyZXR1cm4gY3VyYXRpb25SZXdhcmRFeHBvbmVudC5lcSgiMC41Iik/YXBpLkJpZ051bWJlcih2b3RlUnNoYXJlU3VtKS5zcXJ0KCkudG9GaXhlZCgxMCxhcGkuQmlnTnVtYmVyLlJPVU5EX0RPV04pOmN1cmF0aW9uUmV3YXJkRXhwb25lbnQuZXEoIjEiKT9hcGkuQmlnTnVtYmVyKHZvdGVSc2hhcmVTdW0pLnRvRml4ZWQoMTAsYXBpLkJpZ051bWJlci5ST1VORF9ET1dOKTphcGkuQmlnTnVtYmVyKHBhcnNlRmxvYXQodm90ZVJzaGFyZVN1bSkqKnBhcnNlRmxvYXQocmV3YXJkUG9vbC5jb25maWcuY3VyYXRpb25SZXdhcmRDdXJ2ZVBhcmFtZXRlcikpLnRvRml4ZWQoMTAsYXBpLkJpZ051bWJlci5ST1VORF9ET1dOKX1yZXR1cm4gYXBpLkJpZ051bWJlcih2b3RlUnNoYXJlU3VtKX1hc3luYyBmdW5jdGlvbiBwYXlVc2VyKHN5bWJvbCxxdWFudGl0eSx1c2VyLHN0YWtlZFJld2FyZFBlcmNlbnRhZ2Upe2NvbnN0IHF1YW50aXR5QmlnbnVtPWFwaS5CaWdOdW1iZXIocXVhbnRpdHkpLHN0YWtlZFF1YW50aXR5PXF1YW50aXR5QmlnbnVtLm11bHRpcGxpZWRCeShzdGFrZWRSZXdhcmRQZXJjZW50YWdlKS5kaXZpZGVkQnkoMTAwKS50b0ZpeGVkKHF1YW50aXR5QmlnbnVtLmRwKCksYXBpLkJpZ051bWJlci5ST1VORF9ET1dOKSxsaXF1aWRRdWFudGl0eT1xdWFudGl0eUJpZ251bS5taW51cyhzdGFrZWRRdWFudGl0eSkudG9GaXhlZChxdWFudGl0eUJpZ251bS5kcCgpLGFwaS5CaWdOdW1iZXIuUk9VTkRfRE9XTik7bGV0IHJlczthcGkuQmlnTnVtYmVyKGxpcXVpZFF1YW50aXR5KS5ndCgwKSYmKHJlcz1hd2FpdCBhcGkudHJhbnNmZXJUb2tlbnModXNlcixzeW1ib2wsbGlxdWlkUXVhbnRpdHksInVzZXIiKSxyZXMuZXJyb3JzJiZhcGkuZGVidWcoYEVycm9yIHBheWluZyBvdXQgbGlxdWlkICR7bGlxdWlkUXVhbnRpdHl9ICR7c3ltYm9sfSB0byAke3VzZXJ9IChUWElEICR7YXBpLnRyYW5zYWN0aW9uSWR9KTogXG4ke3Jlcy5lcnJvcnN9YCkpLGFwaS5CaWdOdW1iZXIoc3Rha2VkUXVhbnRpdHkpLmd0KDApJiYocmVzPWF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgidG9rZW5zIiwic3Rha2VGcm9tQ29udHJhY3QiLHt0bzp1c2VyLHN5bWJvbDpzeW1ib2wscXVhbnRpdHk6c3Rha2VkUXVhbnRpdHl9KSxyZXMuZXJyb3JzJiZhcGkuZGVidWcoYEVycm9yIHBheWluZyBvdXQgc3Rha2VkICR7c3Rha2VkUXVhbnRpdHl9ICR7c3ltYm9sfSB0byAke3VzZXJ9IChUWElEICR7YXBpLnRyYW5zYWN0aW9uSWR9KTogXG4ke3Jlcy5lcnJvcnN9YCkpfWFzeW5jIGZ1bmN0aW9uIHBheU91dEJlbmVmaWNpYXJpZXMocmV3YXJkUG9vbCx0b2tlbixwb3N0LGF1dGhvckJlbmVQb3J0aW9uKXtjb25zdHthdXRob3JwZXJtOmF1dGhvcnBlcm0sc3ltYm9sOnN5bWJvbCxyZXdhcmRQb29sSWQ6cmV3YXJkUG9vbElkLGJlbmVmaWNpYXJpZXM6YmVuZWZpY2lhcmllc309cG9zdDtpZighYmVuZWZpY2lhcmllc3x8MD09PWJlbmVmaWNpYXJpZXMubGVuZ3RoKXJldHVybiBhcGkuQmlnTnVtYmVyKDApO2xldCB0b3RhbEJlbmVQYXk9YXBpLkJpZ051bWJlcigwKTtmb3IobGV0IGk9MDtpPGJlbmVmaWNpYXJpZXMubGVuZ3RoO2krPTEpe2NvbnN0IGJlbmVmaWNpYXJ5PWJlbmVmaWNpYXJpZXNbaV0sYmVuZVBheT1hcGkuQmlnTnVtYmVyKGF1dGhvckJlbmVQb3J0aW9uKS5tdWx0aXBsaWVkQnkoYmVuZWZpY2lhcnkud2VpZ2h0KS5kaXZpZGVkQnkoMWU0KS50b0ZpeGVkKHRva2VuLnByZWNpc2lvbixhcGkuQmlnTnVtYmVyLlJPVU5EX0RPV04pO2FwaS5lbWl0KCJiZW5lZmljaWFyeVJld2FyZCIse3Jld2FyZFBvb2xJZDpyZXdhcmRQb29sSWQsYXV0aG9ycGVybTphdXRob3JwZXJtLHN5bWJvbDpzeW1ib2wsYWNjb3VudDpiZW5lZmljaWFyeS5hY2NvdW50LHF1YW50aXR5OmJlbmVQYXl9KSxhd2FpdCBwYXlVc2VyKHN5bWJvbCxiZW5lUGF5LGJlbmVmaWNpYXJ5LmFjY291bnQscmV3YXJkUG9vbC5jb25maWcuc3Rha2VkUmV3YXJkUGVyY2VudGFnZSksdG90YWxCZW5lUGF5PWFwaS5CaWdOdW1iZXIodG90YWxCZW5lUGF5KS5wbHVzKGJlbmVQYXkpfXJldHVybiB0b3RhbEJlbmVQYXl9YXN5bmMgZnVuY3Rpb24gcGF5T3V0Q3VyYXRvcnMocmV3YXJkUG9vbCx0b2tlbixwb3N0LGN1cmF0b3JQb3J0aW9uLHBhcmFtcyl7Y29uc3R7YXV0aG9ycGVybTphdXRob3JwZXJtLHN5bWJvbDpzeW1ib2wscmV3YXJkUG9vbElkOnJld2FyZFBvb2xJZH09cG9zdCx7dm90ZVF1ZXJ5TGltaXQ6dm90ZVF1ZXJ5TGltaXR9PXBhcmFtcztsZXQgdm90ZXNUb1BheW91dD1hd2FpdCBhcGkuZGIuZmluZCgidm90ZXMiLHtyZXdhcmRQb29sSWQ6cmV3YXJkUG9vbElkLGF1dGhvcnBlcm06YXV0aG9ycGVybX0sdm90ZVF1ZXJ5TGltaXQsMCxbe2luZGV4OiJieVRpbWVzdGFtcCIsZGVzY2VuZGluZzohMX1dKTtmb3IoO3ZvdGVzVG9QYXlvdXQubGVuZ3RoPjA7KXtmb3IobGV0IGk9MDtpPHZvdGVzVG9QYXlvdXQubGVuZ3RoO2krPTEpe2NvbnN0IHZvdGU9dm90ZXNUb1BheW91dFtpXTtpZihhcGkuQmlnTnVtYmVyKHZvdGUuY3VyYXRpb25XZWlnaHQpPjApe2NvbnN0IHRvdGFsQ3VyYXRpb25XZWlnaHQ9Y2FsY3VsYXRlQ3VyYXRpb25XZWlnaHRSc2hhcmVzKHJld2FyZFBvb2wscG9zdC52b3RlUG9zaXRpdmVSc2hhcmVTdW0pLHZvdGVQYXk9YXBpLkJpZ051bWJlcihjdXJhdG9yUG9ydGlvbikubXVsdGlwbGllZEJ5KHZvdGUuY3VyYXRpb25XZWlnaHQpLmRpdmlkZWRCeSh0b3RhbEN1cmF0aW9uV2VpZ2h0KS50b0ZpeGVkKHRva2VuLnByZWNpc2lvbixhcGkuQmlnTnVtYmVyLlJPVU5EX0RPV04pO2FwaS5lbWl0KCJjdXJhdGlvblJld2FyZCIse3Jld2FyZFBvb2xJZDpyZXdhcmRQb29sSWQsYXV0aG9ycGVybTphdXRob3JwZXJtLHN5bWJvbDpzeW1ib2wsYWNjb3VudDp2b3RlLnZvdGVyLHF1YW50aXR5OnZvdGVQYXl9KSxhd2FpdCBwYXlVc2VyKHN5bWJvbCx2b3RlUGF5LHZvdGUudm90ZXIscmV3YXJkUG9vbC5jb25maWcuc3Rha2VkUmV3YXJkUGVyY2VudGFnZSl9YXdhaXQgYXBpLmRiLnJlbW92ZSgidm90ZXMiLHZvdGUpfWlmKHZvdGVzVG9QYXlvdXQubGVuZ3RoPHZvdGVRdWVyeUxpbWl0KWJyZWFrO3ZvdGVzVG9QYXlvdXQ9YXdhaXQgYXBpLmRiLmZpbmQoInZvdGVzIix7cmV3YXJkUG9vbElkOnJld2FyZFBvb2xJZCxhdXRob3JwZXJtOmF1dGhvcnBlcm19LHZvdGVRdWVyeUxpbWl0LDAsW3tpbmRleDoiYnlUaW1lc3RhbXAiLGRlc2NlbmRpbmc6ITF9XSl9fWFzeW5jIGZ1bmN0aW9uIHBheU91dFBvc3QocmV3YXJkUG9vbCx0b2tlbixwb3N0LHRpbWVzdGFtcCxwYXJhbXMpe2lmKHBvc3QuZGVjbGluZVBheW91dClyZXR1cm4gYXBpLmVtaXQoImF1dGhvclJld2FyZCIse3Jld2FyZFBvb2xJZDpwb3N0LnJld2FyZFBvb2xJZCxhdXRob3JwZXJtOnBvc3QuYXV0aG9ycGVybSxzeW1ib2w6cG9zdC5zeW1ib2wsYWNjb3VudDpwb3N0LmF1dGhvcixxdWFudGl0eToiMCJ9KSxhd2FpdCBhcGkuZGIucmVtb3ZlKCJwb3N0cyIscG9zdCksIjAiO2NvbnN0IHBvc3RDbGFpbXM9Y2FsY3VsYXRlV2VpZ2h0UnNoYXJlcyhyZXdhcmRQb29sLHBvc3Qudm90ZVJzaGFyZVN1bSkscG9zdFBlbmRpbmdUb2tlbj1hcGkuQmlnTnVtYmVyKHJld2FyZFBvb2wucGVuZGluZ0NsYWltcykuZ3QoMCk/YXBpLkJpZ051bWJlcihyZXdhcmRQb29sLnJld2FyZFBvb2wpLm11bHRpcGxpZWRCeShwb3N0Q2xhaW1zKS5kaXZpZGVkQnkocmV3YXJkUG9vbC5wZW5kaW5nQ2xhaW1zKS50b0ZpeGVkKHRva2VuLnByZWNpc2lvbixhcGkuQmlnTnVtYmVyLlJPVU5EX0RPV04pOiIwIixjdXJhdG9yUG9ydGlvbj1hcGkuQmlnTnVtYmVyKHBvc3RQZW5kaW5nVG9rZW4pLm11bHRpcGxpZWRCeShyZXdhcmRQb29sLmNvbmZpZy5jdXJhdGlvblJld2FyZFBlcmNlbnRhZ2UpLmRpdmlkZWRCeSgxMDApLnRvRml4ZWQodG9rZW4ucHJlY2lzaW9uLGFwaS5CaWdOdW1iZXIuUk9VTkRfRE9XTiksYXV0aG9yQmVuZVBvcnRpb249YXBpLkJpZ051bWJlcihwb3N0UGVuZGluZ1Rva2VuKS5taW51cyhjdXJhdG9yUG9ydGlvbikudG9GaXhlZCh0b2tlbi5wcmVjaXNpb24sYXBpLkJpZ051bWJlci5ST1VORF9ET1dOKSxiZW5lZmljaWFyaWVzUGF5b3V0VmFsdWU9YXdhaXQgcGF5T3V0QmVuZWZpY2lhcmllcyhyZXdhcmRQb29sLHRva2VuLHBvc3QsYXV0aG9yQmVuZVBvcnRpb24pLGF1dGhvclBvcnRpb249YXBpLkJpZ051bWJlcihhdXRob3JCZW5lUG9ydGlvbikubWludXMoYmVuZWZpY2lhcmllc1BheW91dFZhbHVlKS50b0ZpeGVkKHRva2VuLnByZWNpc2lvbixhcGkuQmlnTnVtYmVyLlJPVU5EX0RPV04pO3JldHVybiBhd2FpdCBwYXlPdXRDdXJhdG9ycyhyZXdhcmRQb29sLHRva2VuLHBvc3QsY3VyYXRvclBvcnRpb24scGFyYW1zKSxhcGkuZW1pdCgiYXV0aG9yUmV3YXJkIix7cmV3YXJkUG9vbElkOnBvc3QucmV3YXJkUG9vbElkLGF1dGhvcnBlcm06cG9zdC5hdXRob3JwZXJtLHN5bWJvbDpwb3N0LnN5bWJvbCxhY2NvdW50OnBvc3QuYXV0aG9yLHF1YW50aXR5OmF1dGhvclBvcnRpb259KSxhd2FpdCBwYXlVc2VyKHBvc3Quc3ltYm9sLGF1dGhvclBvcnRpb24scG9zdC5hdXRob3IscmV3YXJkUG9vbC5jb25maWcuc3Rha2VkUmV3YXJkUGVyY2VudGFnZSksYXdhaXQgYXBpLmRiLnJlbW92ZSgicG9zdHMiLHBvc3QpLHBvc3RQZW5kaW5nVG9rZW59YXN5bmMgZnVuY3Rpb24gY29tcHV0ZVBvc3RSZXdhcmRzKHBhcmFtcyxyZXdhcmRQb29sLHRva2VuKXtjb25zdHtsYXN0Q2xhaW1EZWNheVRpbWVzdGFtcDpsYXN0Q2xhaW1EZWNheVRpbWVzdGFtcCxsYXN0UG9zdFJld2FyZFRpbWVzdGFtcDpsYXN0UG9zdFJld2FyZFRpbWVzdGFtcCxjb25maWc6Y29uZmlnLHBlbmRpbmdDbGFpbXM6cGVuZGluZ0NsYWltc309cmV3YXJkUG9vbCx7Y2FzaG91dFdpbmRvd0RheXM6Y2FzaG91dFdpbmRvd0RheXN9PWNvbmZpZyx7bWF4UG9zdHNQcm9jZXNzZWRQZXJSb3VuZDptYXhQb3N0c1Byb2Nlc3NlZFBlclJvdW5kfT1wYXJhbXMsdGltZXN0YW1wPW5ldyBEYXRlKGFwaS5oaXZlQmxvY2tUaW1lc3RhbXArIi4wMDBaIikuZ2V0VGltZSgpLGFkanVzdE51bWVyPXRpbWVzdGFtcC1sYXN0Q2xhaW1EZWNheVRpbWVzdGFtcCxhZGp1c3REZW5vbT0yNCooMipjYXNob3V0V2luZG93RGF5cysxKSozNjAwKjFlMztsZXQgbmV3UGVuZGluZ0NsYWltcz1hcGkuQmlnTnVtYmVyKHBlbmRpbmdDbGFpbXMpLm1pbnVzKGFwaS5CaWdOdW1iZXIocGVuZGluZ0NsYWltcykubXVsdGlwbGllZEJ5KGFkanVzdE51bWVyKS5kaXZpZGVkQnkoYWRqdXN0RGVub20pKS50b0ZpeGVkKDEwLGFwaS5CaWdOdW1iZXIuUk9VTkRfRE9XTik7cmV3YXJkUG9vbC5sYXN0Q2xhaW1EZWNheVRpbWVzdGFtcD10aW1lc3RhbXA7Y29uc3QgcG9zdHNUb1BheW91dD1hd2FpdCBhcGkuZGIuZmluZCgicG9zdHMiLHtyZXdhcmRQb29sSWQ6cmV3YXJkUG9vbC5faWQsbGFzdFBheW91dDp7JGV4aXN0czohMX0sY2FzaG91dFRpbWU6eyRndGU6bGFzdFBvc3RSZXdhcmRUaW1lc3RhbXAsJGx0ZTp0aW1lc3RhbXB9fSxtYXhQb3N0c1Byb2Nlc3NlZFBlclJvdW5kLDAsW3tpbmRleDoiYnlDYXNob3V0VGltZSIsZGVzY2VuZGluZzohMX1dKTtpZihwb3N0c1RvUGF5b3V0KXtuZXdQZW5kaW5nQ2xhaW1zPWFwaS5CaWdOdW1iZXIobmV3UGVuZGluZ0NsYWltcykucGx1cyhwb3N0c1RvUGF5b3V0LnJlZHVjZSgoeCx5KT0+eC5wbHVzKGNhbGN1bGF0ZVdlaWdodFJzaGFyZXMocmV3YXJkUG9vbCx5LnZvdGVSc2hhcmVTdW0pKSxhcGkuQmlnTnVtYmVyKDApKSkudG9GaXhlZCgxMCxhcGkuQmlnTnVtYmVyLlJPVU5EX0RPV04pLHJld2FyZFBvb2wucGVuZGluZ0NsYWltcz1uZXdQZW5kaW5nQ2xhaW1zO2xldCBkZWR1Y3RGcm9tUmV3YXJkUG9vbD1hcGkuQmlnTnVtYmVyKDApLGxhc3RQb3N0Q2FzaG91dD1sYXN0UG9zdFJld2FyZFRpbWVzdGFtcDtmb3IobGV0IGk9MDtpPHBvc3RzVG9QYXlvdXQubGVuZ3RoO2krPTEpe2NvbnN0IHBvc3Q9cG9zdHNUb1BheW91dFtpXSx0b3RhbFBheW91dFZhbHVlPWF3YWl0IHBheU91dFBvc3QocmV3YXJkUG9vbCx0b2tlbixwb3N0LHRpbWVzdGFtcCxwYXJhbXMpO2RlZHVjdEZyb21SZXdhcmRQb29sPWRlZHVjdEZyb21SZXdhcmRQb29sLnBsdXModG90YWxQYXlvdXRWYWx1ZSksbGFzdFBvc3RDYXNob3V0PXBvc3QuY2FzaG91dFRpbWV9cmV3YXJkUG9vbC5sYXN0UG9zdFJld2FyZFRpbWVzdGFtcD1sYXN0UG9zdENhc2hvdXQscmV3YXJkUG9vbC5yZXdhcmRQb29sPWFwaS5CaWdOdW1iZXIocmV3YXJkUG9vbC5yZXdhcmRQb29sKS5taW51cyhkZWR1Y3RGcm9tUmV3YXJkUG9vbCkudG9GaXhlZCh0b2tlbi5wcmVjaXNpb24sYXBpLkJpZ051bWJlci5ST1VORF9ET1dOKX19YXN5bmMgZnVuY3Rpb24gdG9rZW5NYWludGVuYW5jZSgpe2NvbnN0IHRpbWVzdGFtcD1uZXcgRGF0ZShhcGkuaGl2ZUJsb2NrVGltZXN0YW1wKyIuMDAwWiIpLmdldFRpbWUoKSxwYXJhbXM9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInBhcmFtcyIse30pLHtsYXN0TWFpbnRlbmFuY2VCbG9jazpsYXN0TWFpbnRlbmFuY2VCbG9jayxtYWludGVuYW5jZVRva2Vuc1BlckJsb2NrOm1haW50ZW5hbmNlVG9rZW5zUGVyQmxvY2t9PXBhcmFtcztpZihsYXN0TWFpbnRlbmFuY2VCbG9jaz49YXBpLmJsb2NrTnVtYmVyKXJldHVybjtwYXJhbXMubGFzdE1haW50ZW5hbmNlQmxvY2s9YXBpLmJsb2NrTnVtYmVyO2NvbnN0IHJld2FyZFBvb2xzPWF3YWl0IGFwaS5kYi5maW5kKCJyZXdhcmRQb29scyIse2FjdGl2ZTohMCxsYXN0Q2xhaW1EZWNheVRpbWVzdGFtcDp7JGx0ZTp0aW1lc3RhbXAtM2UzfX0sbWFpbnRlbmFuY2VUb2tlbnNQZXJCbG9jaywwLFt7aW5kZXg6Imxhc3RDbGFpbURlY2F5VGltZXN0YW1wIixkZXNjZW5kaW5nOiExfV0pO2lmKHJld2FyZFBvb2xzKWZvcihsZXQgaT0wO2k8cmV3YXJkUG9vbHMubGVuZ3RoO2krPTEpe2NvbnN0IHJld2FyZFBvb2w9cmV3YXJkUG9vbHNbaV0sdG9rZW49YXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJ0b2tlbnMiLCJ0b2tlbnMiLHtzeW1ib2w6cmV3YXJkUG9vbC5zeW1ib2x9KTtpZih0aW1lc3RhbXAtcmV3YXJkUG9vbC5sYXN0UmV3YXJkVGltZXN0YW1wPj0xZTMqcmV3YXJkUG9vbC5jb25maWcucmV3YXJkSW50ZXJ2YWxTZWNvbmRzKXtjb25zdCByZXdhcmRUb0FkZD1hcGkuQmlnTnVtYmVyKHJld2FyZFBvb2wuY29uZmlnLnJld2FyZFBlckludGVydmFsKS5tdWx0aXBsaWVkQnkodGltZXN0YW1wLXJld2FyZFBvb2wubGFzdFJld2FyZFRpbWVzdGFtcCkuZGl2aWRlZEJ5KDFlMypyZXdhcmRQb29sLmNvbmZpZy5yZXdhcmRJbnRlcnZhbFNlY29uZHMpLnRvRml4ZWQodG9rZW4ucHJlY2lzaW9uLGFwaS5CaWdOdW1iZXIuUk9VTkRfRE9XTik7YXBpLkJpZ051bWJlcihyZXdhcmRUb0FkZCkuZ3QoMCkmJihhd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoInRva2VucyIsImlzc3VlVG9Db250cmFjdCIse3N5bWJvbDpyZXdhcmRQb29sLnN5bWJvbCxxdWFudGl0eTpyZXdhcmRUb0FkZCx0bzoiY29tbWVudHMiLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTohMH0pLHJld2FyZFBvb2wucmV3YXJkUG9vbD1hcGkuQmlnTnVtYmVyKHJld2FyZFBvb2wucmV3YXJkUG9vbCkucGx1cyhyZXdhcmRUb0FkZCkudG9GaXhlZCh0b2tlbi5wcmVjaXNpb24sYXBpLkJpZ051bWJlci5ST1VORF9ET1dOKSkscmV3YXJkUG9vbC5sYXN0UmV3YXJkVGltZXN0YW1wPXRpbWVzdGFtcH1hd2FpdCBjb21wdXRlUG9zdFJld2FyZHMocGFyYW1zLHJld2FyZFBvb2wsdG9rZW4pLGF3YWl0IGFwaS5kYi51cGRhdGUoInJld2FyZFBvb2xzIixyZXdhcmRQb29sKX1hd2FpdCBhcGkuZGIudXBkYXRlKCJwYXJhbXMiLHBhcmFtcyl9YXN5bmMgZnVuY3Rpb24gZ2V0UmV3YXJkUG9vbElkcyhwYXlsb2FkKXtjb25zdHtyZXdhcmRQb29sczpyZXdhcmRQb29scyxqc29uTWV0YWRhdGE6anNvbk1ldGFkYXRhLHBhcmVudEF1dGhvcjpwYXJlbnRBdXRob3IscGFyZW50UGVybWxpbms6cGFyZW50UGVybWxpbmt9PXBheWxvYWQscGFyYW1zPWF3YWl0IGFwaS5kYi5maW5kT25lKCJwYXJhbXMiLHt9KTtpZihwYXJlbnRBdXRob3ImJnBhcmVudFBlcm1saW5rKXtjb25zdCBwYXJlbnRBdXRob3JwZXJtPWBAJHtwYXJlbnRBdXRob3J9LyR7cGFyZW50UGVybWxpbmt9YCxwYXJlbnRQb3N0cz1hd2FpdCBhcGkuZGIuZmluZCgicG9zdHMiLHthdXRob3JwZXJtOnBhcmVudEF1dGhvcnBlcm19KTtyZXR1cm4gcGFyZW50UG9zdHMmJnBhcmVudFBvc3RzLmxlbmd0aD4wP3BhcmVudFBvc3RzLm1hcChwPT5wLnJld2FyZFBvb2xJZCk6W119aWYoanNvbk1ldGFkYXRhJiZqc29uTWV0YWRhdGEudGFncyYmQXJyYXkuaXNBcnJheShqc29uTWV0YWRhdGEudGFncykmJmpzb25NZXRhZGF0YS50YWdzLmV2ZXJ5KHQ9PiJzdHJpbmciPT10eXBlb2YgdCkpe2NvbnN0IHNlYXJjaFRhZ3M9cGFyZW50UGVybWxpbms/anNvbk1ldGFkYXRhLnRhZ3MuY29uY2F0KFtwYXJlbnRQZXJtbGlua10pOmpzb25NZXRhZGF0YS50YWdzLHRhZ1Jld2FyZFBvb2xzPWF3YWl0IGFwaS5kYi5maW5kKCJyZXdhcmRQb29scyIseyJjb25maWcudGFncyI6eyRpbjpzZWFyY2hUYWdzfX0scGFyYW1zLm1heFBvb2xzUGVyUG9zdCwwLFt7aW5kZXg6Il9pZCIsZGVzY2VuZGluZzohMX1dKTtpZih0YWdSZXdhcmRQb29scyYmdGFnUmV3YXJkUG9vbHMubGVuZ3RoPjApcmV0dXJuIHRhZ1Jld2FyZFBvb2xzLm1hcChyPT5yLl9pZCl9cmV0dXJuIHJld2FyZFBvb2xzJiZBcnJheS5pc0FycmF5KHJld2FyZFBvb2xzKSYmcmV3YXJkUG9vbHMubGVuZ3RoPjA/cmV3YXJkUG9vbHMuc2xpY2UoMCxwYXJhbXMubWF4UG9vbHNQZXJQb3N0KTpbXX1hc3luYyBmdW5jdGlvbiBwcm9jZXNzVm90ZShwb3N0LHZvdGVyLHdlaWdodCx0aW1lc3RhbXApe2NvbnN0e3Jld2FyZFBvb2xJZDpyZXdhcmRQb29sSWQsc3ltYm9sOnN5bWJvbCxhdXRob3JwZXJtOmF1dGhvcnBlcm0sY2FzaG91dFRpbWU6Y2FzaG91dFRpbWV9PXBvc3Q7aWYoY2FzaG91dFRpbWU8dGltZXN0YW1wKXJldHVybjtjb25zdCByZXdhcmRQb29sPWF3YWl0IGFwaS5kYi5maW5kT25lKCJyZXdhcmRQb29scyIse19pZDpyZXdhcmRQb29sSWR9KTtpZighcmV3YXJkUG9vbHx8IXJld2FyZFBvb2wuYWN0aXZlKXJldHVybjtsZXQgdm90aW5nUG93ZXI9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInZvdGluZ1Bvd2VyIix7cmV3YXJkUG9vbElkOnJld2FyZFBvb2xJZCxhY2NvdW50OnZvdGVyfSk7dm90aW5nUG93ZXI/KHZvdGluZ1Bvd2VyLnZvdGluZ1Bvd2VyKz0odGltZXN0YW1wLXZvdGluZ1Bvd2VyLmxhc3RWb3RlVGltZXN0YW1wKS8oMjQqcmV3YXJkUG9vbC5jb25maWcudm90ZVJlZ2VuZXJhdGlvbkRheXMqMzYwMCoxZTMpLHZvdGluZ1Bvd2VyLnZvdGluZ1Bvd2VyPU1hdGguZmxvb3Iodm90aW5nUG93ZXIudm90aW5nUG93ZXIpLHZvdGluZ1Bvd2VyLnZvdGluZ1Bvd2VyPU1hdGgubWluKHZvdGluZ1Bvd2VyLnZvdGluZ1Bvd2VyLDFlNCksdm90aW5nUG93ZXIuZG93bnZvdGluZ1Bvd2VyKz0odGltZXN0YW1wLXZvdGluZ1Bvd2VyLmxhc3RWb3RlVGltZXN0YW1wKS8oMjQqcmV3YXJkUG9vbC5jb25maWcuZG93bnZvdGVSZWdlbmVyYXRpb25EYXlzKjM2MDAqMWUzKSx2b3RpbmdQb3dlci5kb3dudm90aW5nUG93ZXI9TWF0aC5mbG9vcih2b3RpbmdQb3dlci5kb3dudm90aW5nUG93ZXIpLHZvdGluZ1Bvd2VyLmRvd252b3RpbmdQb3dlcj1NYXRoLm1pbih2b3RpbmdQb3dlci5kb3dudm90aW5nUG93ZXIsMWU0KSx2b3RpbmdQb3dlci5sYXN0Vm90ZVRpbWVzdGFtcD10aW1lc3RhbXApOih2b3RpbmdQb3dlcj17cmV3YXJkUG9vbElkOnJld2FyZFBvb2xJZCxhY2NvdW50OnZvdGVyLGxhc3RWb3RlVGltZXN0YW1wOnRpbWVzdGFtcCx2b3RpbmdQb3dlcjoxZTQsZG93bnZvdGluZ1Bvd2VyOjFlNH0sdm90aW5nUG93ZXI9YXdhaXQgYXBpLmRiLmluc2VydCgidm90aW5nUG93ZXIiLHZvdGluZ1Bvd2VyKSk7Y29uc3Qgdm90ZXJUb2tlbkJhbGFuY2U9YXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJ0b2tlbnMiLCJiYWxhbmNlcyIse3N5bWJvbDpzeW1ib2wsYWNjb3VudDp2b3Rlcn0pO2xldCBzdGFrZT12b3RlclRva2VuQmFsYW5jZT92b3RlclRva2VuQmFsYW5jZS5zdGFrZToiMCI7dm90ZXJUb2tlbkJhbGFuY2UmJnZvdGVyVG9rZW5CYWxhbmNlLmRlbGVnYXRpb25zSW4mJmFwaS5CaWdOdW1iZXIodm90ZXJUb2tlbkJhbGFuY2UuZGVsZWdhdGlvbnNJbikuaXNGaW5pdGUoKSYmKHN0YWtlPWFwaS5CaWdOdW1iZXIoc3Rha2UpLnBsdXModm90ZXJUb2tlbkJhbGFuY2UuZGVsZWdhdGlvbnNJbikpO2xldCB2b3RlUnNoYXJlcz0iMCIsdXBkYXRlZFBvc3RSc2hhcmVzPSIwIix1c2VkUG93ZXI9MCx1c2VkRG93bnZvdGVQb3dlcj0wLGN1cmF0aW9uV2VpZ2h0PSIwIjtpZih3ZWlnaHQ+MCl7dm90ZVJzaGFyZXM9YXBpLkJpZ051bWJlcihzdGFrZSkubXVsdGlwbGllZEJ5KHdlaWdodCkubXVsdGlwbGllZEJ5KHZvdGluZ1Bvd2VyLnZvdGluZ1Bvd2VyKS5kaXZpZGVkQnkoMWU0KS5kaXZpZGVkQnkoMWU0KS50b0ZpeGVkKDEwLGFwaS5CaWdOdW1iZXIuUk9VTkRfRE9XTiksdXNlZFBvd2VyPU1hdGguZmxvb3Iodm90aW5nUG93ZXIudm90aW5nUG93ZXIqTWF0aC5hYnMod2VpZ2h0KSo2MCo2MCoyNC8xZTQpO2NvbnN0IHVzZWRQb3dlckRlbm9tPU1hdGguZmxvb3IoODY0ZTYvcmV3YXJkUG9vbC5jb25maWcudm90ZVBvd2VyQ29uc3VtcHRpb24pO3VzZWRQb3dlcj1NYXRoLmZsb29yKCh1c2VkUG93ZXIrdXNlZFBvd2VyRGVub20tMSkvdXNlZFBvd2VyRGVub20pLHZvdGluZ1Bvd2VyLnZvdGluZ1Bvd2VyPU1hdGgubWF4KDAsTWF0aC5mbG9vcih2b3RpbmdQb3dlci52b3RpbmdQb3dlci11c2VkUG93ZXIpKSxjdXJhdGlvbldlaWdodD1hcGkuQmlnTnVtYmVyKGNhbGN1bGF0ZUN1cmF0aW9uV2VpZ2h0UnNoYXJlcyhyZXdhcmRQb29sLGFwaS5CaWdOdW1iZXIodm90ZVJzaGFyZXMpLnBsdXMocG9zdC52b3RlUG9zaXRpdmVSc2hhcmVTdW0pKSkubWludXMoY2FsY3VsYXRlQ3VyYXRpb25XZWlnaHRSc2hhcmVzKHJld2FyZFBvb2wscG9zdC52b3RlUG9zaXRpdmVSc2hhcmVTdW0pKS50b0ZpeGVkKDEwLGFwaS5CaWdOdW1iZXIuUk9VTkRfRE9XTil9ZWxzZSBpZih3ZWlnaHQ8MCl7dm90ZVJzaGFyZXM9YXBpLkJpZ051bWJlcihzdGFrZSkubXVsdGlwbGllZEJ5KHdlaWdodCkubXVsdGlwbGllZEJ5KHZvdGluZ1Bvd2VyLmRvd252b3RpbmdQb3dlcikuZGl2aWRlZEJ5KDFlNCkuZGl2aWRlZEJ5KDFlNCkudG9GaXhlZCgxMCxhcGkuQmlnTnVtYmVyLlJPVU5EX0RPV04pLHVzZWREb3dudm90ZVBvd2VyPU1hdGguZmxvb3Iodm90aW5nUG93ZXIuZG93bnZvdGluZ1Bvd2VyKk1hdGguYWJzKHdlaWdodCkqNjAqNjAqMjQvMWU0KTtjb25zdCB1c2VkRG93bnZvdGVQb3dlckRlbm9tPU1hdGguZmxvb3IoODY0ZTYvcmV3YXJkUG9vbC5jb25maWcuZG93bnZvdGVQb3dlckNvbnN1bXB0aW9uKTt1c2VkRG93bnZvdGVQb3dlcj1NYXRoLmZsb29yKCh1c2VkRG93bnZvdGVQb3dlcit1c2VkRG93bnZvdGVQb3dlckRlbm9tLTEpL3VzZWREb3dudm90ZVBvd2VyRGVub20pLHZvdGluZ1Bvd2VyLmRvd252b3RpbmdQb3dlcj1NYXRoLm1heCgwLE1hdGguZmxvb3Iodm90aW5nUG93ZXIuZG93bnZvdGluZ1Bvd2VyLXVzZWREb3dudm90ZVBvd2VyKSl9YXdhaXQgYXBpLmRiLnVwZGF0ZSgidm90aW5nUG93ZXIiLHZvdGluZ1Bvd2VyKTtsZXQgdm90ZT1hd2FpdCBhcGkuZGIuZmluZE9uZSgidm90ZXMiLHtyZXdhcmRQb29sSWQ6cmV3YXJkUG9vbElkLGF1dGhvcnBlcm06YXV0aG9ycGVybSx2b3Rlcjp2b3Rlcn0pO2lmKHZvdGUpe3ZvdGUudGltZXN0YW1wPXRpbWVzdGFtcCx2b3RlLndlaWdodD13ZWlnaHQsdm90ZS5jdXJhdGlvbldlaWdodD0iMCI7Y29uc3Qgb2xkVm90ZVJzaGFyZXM9dm90ZS5yc2hhcmVzO3ZvdGUucnNoYXJlcz12b3RlUnNoYXJlcyx1cGRhdGVkUG9zdFJzaGFyZXM9YXBpLkJpZ051bWJlcih2b3RlUnNoYXJlcykubWludXMob2xkVm90ZVJzaGFyZXMpLnRvRml4ZWQoMTAsYXBpLkJpZ051bWJlci5ST1VORF9ET1dOKSxhd2FpdCBhcGkuZGIudXBkYXRlKCJ2b3RlcyIsdm90ZSksYXBpLmVtaXQoInVwZGF0ZVZvdGUiLHtyZXdhcmRQb29sSWQ6cmV3YXJkUG9vbElkLHN5bWJvbDpyZXdhcmRQb29sLnN5bWJvbCxyc2hhcmVzOnZvdGVSc2hhcmVzfSl9ZWxzZSB2b3RlPXtyZXdhcmRQb29sSWQ6cmV3YXJkUG9vbElkLHN5bWJvbDpzeW1ib2wsYXV0aG9ycGVybTphdXRob3JwZXJtLHdlaWdodDp3ZWlnaHQscnNoYXJlczp2b3RlUnNoYXJlcyxjdXJhdGlvbldlaWdodDpjdXJhdGlvbldlaWdodCx0aW1lc3RhbXA6dGltZXN0YW1wLHZvdGVyOnZvdGVyfSx1cGRhdGVkUG9zdFJzaGFyZXM9dm90ZVJzaGFyZXMsYXdhaXQgYXBpLmRiLmluc2VydCgidm90ZXMiLHZvdGUpLGFwaS5lbWl0KCJuZXdWb3RlIix7cmV3YXJkUG9vbElkOnJld2FyZFBvb2xJZCxzeW1ib2w6cmV3YXJkUG9vbC5zeW1ib2wscnNoYXJlczp2b3RlUnNoYXJlc30pO2NvbnN0IG9sZFBvc3RDbGFpbXM9Y2FsY3VsYXRlV2VpZ2h0UnNoYXJlcyhyZXdhcmRQb29sLHBvc3Qudm90ZVJzaGFyZVN1bSk7aWYocG9zdC52b3RlUnNoYXJlU3VtPWFwaS5CaWdOdW1iZXIocG9zdC52b3RlUnNoYXJlU3VtKS5wbHVzKHVwZGF0ZWRQb3N0UnNoYXJlcykudG9GaXhlZCgxMCxhcGkuQmlnTnVtYmVyLlJPVU5EX0RPV04pLGFwaS5CaWdOdW1iZXIodXBkYXRlZFBvc3RSc2hhcmVzKS5ndCgwKSYmKHBvc3Qudm90ZVBvc2l0aXZlUnNoYXJlU3VtPWFwaS5CaWdOdW1iZXIocG9zdC52b3RlUG9zaXRpdmVSc2hhcmVTdW0pLnBsdXModXBkYXRlZFBvc3RSc2hhcmVzKS50b0ZpeGVkKDEwLGFwaS5CaWdOdW1iZXIuUk9VTkRfRE9XTiksdGltZXN0YW1wPHJld2FyZFBvb2wuY3JlYXRlZFRpbWVzdGFtcCsyNCooMipyZXdhcmRQb29sLmNvbmZpZy5jYXNob3V0V2luZG93RGF5cysxKSozNjAwKjFlMykpe2NvbnN0IG5ld1Bvc3RDbGFpbXM9Y2FsY3VsYXRlV2VpZ2h0UnNoYXJlcyhyZXdhcmRQb29sLHBvc3Qudm90ZVJzaGFyZVN1bSk7cmV3YXJkUG9vbC5wZW5kaW5nQ2xhaW1zPWFwaS5CaWdOdW1iZXIocmV3YXJkUG9vbC5wZW5kaW5nQ2xhaW1zKS5wbHVzKG5ld1Bvc3RDbGFpbXMpLm1pbnVzKG9sZFBvc3RDbGFpbXMpLnRvRml4ZWQoMTAsYXBpLkJpZ051bWJlci5ST1VORF9ET1dOKSxhd2FpdCBhcGkuZGIudXBkYXRlKCJyZXdhcmRQb29scyIscmV3YXJkUG9vbCl9YXdhaXQgYXBpLmRiLnVwZGF0ZSgicG9zdHMiLHBvc3QpfWFjdGlvbnMuY3JlYXRlU1NDPWFzeW5jKCk9PntpZighMT09PWF3YWl0IGFwaS5kYi50YWJsZUV4aXN0cygicmV3YXJkUG9vbHMiKSl7YXdhaXQgYXBpLmRiLmNyZWF0ZVRhYmxlKCJwYXJhbXMiKSxhd2FpdCBhcGkuZGIuY3JlYXRlVGFibGUoInJld2FyZFBvb2xzIixbImNvbmZpZy50YWdzIiwibGFzdENsYWltRGVjYXlUaW1lc3RhbXAiXSksYXdhaXQgYXBpLmRiLmNyZWF0ZVRhYmxlKCJwb3N0cyIsWyJhdXRob3JwZXJtIix7bmFtZToiYnlDYXNob3V0VGltZSIsaW5kZXg6e3Jld2FyZFBvb2xJZDoxLGNhc2hvdXRUaW1lOjF9fV0se3ByaW1hcnlLZXk6WyJhdXRob3JwZXJtIiwicmV3YXJkUG9vbElkIl19KSxhd2FpdCBhcGkuZGIuY3JlYXRlVGFibGUoInZvdGVzIixbe25hbWU6ImJ5VGltZXN0YW1wIixpbmRleDp7cmV3YXJkUG9vbElkOjEsYXV0aG9ycGVybToxLHRpbWVzdGFtcDoxfX1dLHtwcmltYXJ5S2V5OlsicmV3YXJkUG9vbElkIiwiYXV0aG9ycGVybSIsInZvdGVyIl19KSxhd2FpdCBhcGkuZGIuY3JlYXRlVGFibGUoInZvdGluZ1Bvd2VyIixbXSx7cHJpbWFyeUtleTpbInJld2FyZFBvb2xJZCIsImFjY291bnQiXX0pO2NvbnN0IHBhcmFtcz17c2V0dXBGZWU6IjEwMDAiLHVwZGF0ZUZlZToiMjAiLG1heFBvb2xzUGVyUG9zdDoyMCxtYXhUYWdzUGVyUG9vbDo1LG1haW50ZW5hbmNlVG9rZW5zUGVyQmxvY2s6MixsYXN0TWFpbnRlbmFuY2VCbG9jazphcGkuYmxvY2tOdW1iZXIsbWF4UG9zdHNQcm9jZXNzZWRQZXJSb3VuZDoyMCx2b3RlUXVlcnlMaW1pdDoxZTN9O2F3YWl0IGFwaS5kYi5pbnNlcnQoInBhcmFtcyIscGFyYW1zKX19LGFjdGlvbnMudXBkYXRlUGFyYW1zPWFzeW5jIHBheWxvYWQ9PntpZihhcGkuc2VuZGVyIT09YXBpLm93bmVyKXJldHVybjtjb25zdHtzZXR1cEZlZTpzZXR1cEZlZSx1cGRhdGVGZWU6dXBkYXRlRmVlLG1haW50ZW5hbmNlVG9rZW5zUGVyQmxvY2s6bWFpbnRlbmFuY2VUb2tlbnNQZXJCbG9jayxtYXhQb3N0c1Byb2Nlc3NlZFBlclJvdW5kOm1heFBvc3RzUHJvY2Vzc2VkUGVyUm91bmQsdm90ZVF1ZXJ5TGltaXQ6dm90ZVF1ZXJ5TGltaXR9PXBheWxvYWQscGFyYW1zPWF3YWl0IGFwaS5kYi5maW5kT25lKCJwYXJhbXMiLHt9KTtpZihzZXR1cEZlZSl7aWYoIWFwaS5hc3NlcnQoInN0cmluZyI9PXR5cGVvZiBzZXR1cEZlZSYmIWFwaS5CaWdOdW1iZXIoc2V0dXBGZWUpLmlzTmFOKCkmJmFwaS5CaWdOdW1iZXIoc2V0dXBGZWUpLmd0ZSgwKSwiaW52YWxpZCBzZXR1cEZlZSIpKXJldHVybjtwYXJhbXMuc2V0dXBGZWU9c2V0dXBGZWV9aWYodXBkYXRlRmVlKXtpZighYXBpLmFzc2VydCgic3RyaW5nIj09dHlwZW9mIHVwZGF0ZUZlZSYmIWFwaS5CaWdOdW1iZXIodXBkYXRlRmVlKS5pc05hTigpJiZhcGkuQmlnTnVtYmVyKHVwZGF0ZUZlZSkuZ3RlKDApLCJpbnZhbGlkIHVwZGF0ZUZlZSIpKXJldHVybjtwYXJhbXMudXBkYXRlRmVlPXVwZGF0ZUZlZX1pZihtYWludGVuYW5jZVRva2Vuc1BlckJsb2NrKXtpZighYXBpLmFzc2VydChOdW1iZXIuaXNJbnRlZ2VyKG1haW50ZW5hbmNlVG9rZW5zUGVyQmxvY2spJiZtYWludGVuYW5jZVRva2Vuc1BlckJsb2NrPj0xLCJpbnZhbGlkIG1haW50ZW5hbmNlVG9rZW5zUGVyQmxvY2siKSlyZXR1cm47cGFyYW1zLm1haW50ZW5hbmNlVG9rZW5zUGVyQmxvY2s9bWFpbnRlbmFuY2VUb2tlbnNQZXJCbG9ja31pZihtYXhQb3N0c1Byb2Nlc3NlZFBlclJvdW5kKXtpZighYXBpLmFzc2VydChOdW1iZXIuaXNJbnRlZ2VyKG1heFBvc3RzUHJvY2Vzc2VkUGVyUm91bmQpJiZtYXhQb3N0c1Byb2Nlc3NlZFBlclJvdW5kPj0xLCJpbnZhbGlkIG1heFBvc3RzUHJvY2Vzc2VkUGVyUm91bmQiKSlyZXR1cm47cGFyYW1zLm1heFBvc3RzUHJvY2Vzc2VkUGVyUm91bmQ9bWF4UG9zdHNQcm9jZXNzZWRQZXJSb3VuZH1pZih2b3RlUXVlcnlMaW1pdCl7aWYoIWFwaS5hc3NlcnQoTnVtYmVyLmlzSW50ZWdlcih2b3RlUXVlcnlMaW1pdCkmJnZvdGVRdWVyeUxpbWl0Pj0xLCJpbnZhbGlkIHZvdGVRdWVyeUxpbWl0IikpcmV0dXJuO3BhcmFtcy52b3RlUXVlcnlMaW1pdD12b3RlUXVlcnlMaW1pdH1hd2FpdCBhcGkuZGIudXBkYXRlKCJwYXJhbXMiLHBhcmFtcyl9LGFjdGlvbnMuY3JlYXRlUmV3YXJkUG9vbD1hc3luYyBwYXlsb2FkPT57Y29uc3R7c3ltYm9sOnN5bWJvbCxjb25maWc6Y29uZmlnLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9PXBheWxvYWQ7aWYoYXdhaXQgdG9rZW5NYWludGVuYW5jZSgpLCFhcGkuYXNzZXJ0KCEwPT09aXNTaWduZWRXaXRoQWN0aXZlS2V5LCJvcGVyYXRpb24gbXVzdCBiZSBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSlyZXR1cm47Y29uc3QgcGFyYW1zPWF3YWl0IGFwaS5kYi5maW5kT25lKCJwYXJhbXMiLHt9KSx7c2V0dXBGZWU6c2V0dXBGZWUsbWF4VGFnc1BlclBvb2w6bWF4VGFnc1BlclBvb2x9PXBhcmFtcyx1dGlsaXR5VG9rZW5CYWxhbmNlPWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgidG9rZW5zIiwiYmFsYW5jZXMiLHthY2NvdW50OmFwaS5zZW5kZXIsc3ltYm9sOiJCRUUifSksYXV0aG9yaXplZENyZWF0aW9uPSEoIWFwaS5CaWdOdW1iZXIoc2V0dXBGZWUpLmx0ZSgwKSYmYXBpLnNlbmRlciE9PWFwaS5vd25lcil8fHV0aWxpdHlUb2tlbkJhbGFuY2UmJmFwaS5CaWdOdW1iZXIodXRpbGl0eVRva2VuQmFsYW5jZS5iYWxhbmNlKS5ndGUoc2V0dXBGZWUpO2lmKCFhcGkuYXNzZXJ0KGF1dGhvcml6ZWRDcmVhdGlvbiwieW91IG11c3QgaGF2ZSBlbm91Z2ggdG9rZW5zIHRvIGNvdmVyIHRoZSBjcmVhdGlvbiBmZWUiKSlyZXR1cm47Y29uc3QgdG9rZW49YXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJ0b2tlbnMiLCJ0b2tlbnMiLHtzeW1ib2w6c3ltYm9sfSk7aWYoIWFwaS5hc3NlcnQodG9rZW4sInRva2VuIG5vdCBmb3VuZCIpKXJldHVybjtpZighYXBpLmFzc2VydChjb25maWcmJiJvYmplY3QiPT10eXBlb2YgY29uZmlnLCJjb25maWcgaW52YWxpZCIpKXJldHVybjtjb25zdHtwb3N0UmV3YXJkQ3VydmU6cG9zdFJld2FyZEN1cnZlLHBvc3RSZXdhcmRDdXJ2ZVBhcmFtZXRlcjpwb3N0UmV3YXJkQ3VydmVQYXJhbWV0ZXIsY3VyYXRpb25SZXdhcmRDdXJ2ZTpjdXJhdGlvblJld2FyZEN1cnZlLGN1cmF0aW9uUmV3YXJkQ3VydmVQYXJhbWV0ZXI6Y3VyYXRpb25SZXdhcmRDdXJ2ZVBhcmFtZXRlcixjdXJhdGlvblJld2FyZFBlcmNlbnRhZ2U6Y3VyYXRpb25SZXdhcmRQZXJjZW50YWdlLGNhc2hvdXRXaW5kb3dEYXlzOmNhc2hvdXRXaW5kb3dEYXlzLHJld2FyZFBlckludGVydmFsOnJld2FyZFBlckludGVydmFsLHJld2FyZEludGVydmFsU2Vjb25kczpyZXdhcmRJbnRlcnZhbFNlY29uZHMsdm90ZVJlZ2VuZXJhdGlvbkRheXM6dm90ZVJlZ2VuZXJhdGlvbkRheXMsZG93bnZvdGVSZWdlbmVyYXRpb25EYXlzOmRvd252b3RlUmVnZW5lcmF0aW9uRGF5cyxzdGFrZWRSZXdhcmRQZXJjZW50YWdlOnN0YWtlZFJld2FyZFBlcmNlbnRhZ2Usdm90ZVBvd2VyQ29uc3VtcHRpb246dm90ZVBvd2VyQ29uc3VtcHRpb24sZG93bnZvdGVQb3dlckNvbnN1bXB0aW9uOmRvd252b3RlUG93ZXJDb25zdW1wdGlvbix0YWdzOnRhZ3N9PWNvbmZpZztpZighYXBpLmFzc2VydChwb3N0UmV3YXJkQ3VydmUmJiJwb3dlciI9PT1wb3N0UmV3YXJkQ3VydmUsInBvc3RSZXdhcmRDdXJ2ZSBzaG91bGQgYmUgb25lIG9mOiBbcG93ZXJdIikpcmV0dXJuO2NvbnN0IHBvc3RFeHBvbmVudD1hcGkuQmlnTnVtYmVyKHBvc3RSZXdhcmRDdXJ2ZVBhcmFtZXRlcik7aWYoIWFwaS5hc3NlcnQoInN0cmluZyI9PXR5cGVvZiBwb3N0UmV3YXJkQ3VydmVQYXJhbWV0ZXImJnBvc3RFeHBvbmVudC5pc0Zpbml0ZSgpJiZwb3N0RXhwb25lbnQuZ3RlKCIxIikmJnBvc3RFeHBvbmVudC5sdGUoIjIiKSYmcG9zdEV4cG9uZW50LmRwKCk8PTIsJ3Bvc3RSZXdhcmRDdXJ2ZVBhcmFtZXRlciBzaG91bGQgYmUgYmV0d2VlbiAiMSIgYW5kICIyIiB3aXRoIHByZWNpc2lvbiBhdCBtb3N0IDInKSlyZXR1cm47aWYoIWFwaS5hc3NlcnQoY3VyYXRpb25SZXdhcmRDdXJ2ZSYmInBvd2VyIj09PWN1cmF0aW9uUmV3YXJkQ3VydmUsImN1cmF0aW9uUmV3YXJkQ3VydmUgc2hvdWxkIGJlIG9uZSBvZjogW3Bvd2VyXSIpKXJldHVybjtjb25zdCBjdXJhdGlvbkV4cG9uZW50PWFwaS5CaWdOdW1iZXIoY3VyYXRpb25SZXdhcmRDdXJ2ZVBhcmFtZXRlcik7aWYoIWFwaS5hc3NlcnQoInN0cmluZyI9PXR5cGVvZiBjdXJhdGlvblJld2FyZEN1cnZlUGFyYW1ldGVyJiZjdXJhdGlvbkV4cG9uZW50LmlzRmluaXRlKCkmJmN1cmF0aW9uRXhwb25lbnQuZ3RlKCIwLjUiKSYmY3VyYXRpb25FeHBvbmVudC5sdGUoIjEiKSYmY3VyYXRpb25FeHBvbmVudC5kcCgpPD0yLCdjdXJhdGlvblJld2FyZEN1cnZlUGFyYW1ldGVyIGNhbiBvbmx5IGJlIGJldHdlZW4gIjAuNSIgYW5kICIxIiB3aXRoIHByZWNpc2lvbiBhdCBtb3N0IDInKSlyZXR1cm47aWYoIWFwaS5hc3NlcnQoTnVtYmVyLmlzSW50ZWdlcihjdXJhdGlvblJld2FyZFBlcmNlbnRhZ2UpJiZjdXJhdGlvblJld2FyZFBlcmNlbnRhZ2U+PTAmJmN1cmF0aW9uUmV3YXJkUGVyY2VudGFnZTw9MTAwLCJjdXJhdGlvblJld2FyZFBlcmNlbnRhZ2Ugc2hvdWxkIGJlIGFuIGludGVnZXIgYmV0d2VlbiAwIGFuZCAxMDAiKSlyZXR1cm47aWYoIWFwaS5hc3NlcnQoY2FzaG91dFdpbmRvd0RheXMmJk51bWJlci5pc0ludGVnZXIoY2FzaG91dFdpbmRvd0RheXMpJiZjYXNob3V0V2luZG93RGF5cz49MSYmY2FzaG91dFdpbmRvd0RheXM8PTMwLCJjYXNob3V0V2luZG93RGF5cyBzaG91bGQgYmUgYW4gaW50ZWdlciBiZXR3ZWVuIDEgYW5kIDMwIikpcmV0dXJuO2NvbnN0IHBhcnNlZFJld2FyZFBlckludGVydmFsPWFwaS5CaWdOdW1iZXIocmV3YXJkUGVySW50ZXJ2YWwpO2lmKCFhcGkuYXNzZXJ0KCJzdHJpbmciPT10eXBlb2YgcmV3YXJkUGVySW50ZXJ2YWwmJnBhcnNlZFJld2FyZFBlckludGVydmFsLmlzRmluaXRlKCkmJnBhcnNlZFJld2FyZFBlckludGVydmFsLmd0KDApLCJyZXdhcmRQZXJJbnRlcnZhbCBpbnZhbGlkIil8fCFhcGkuYXNzZXJ0KHBhcnNlZFJld2FyZFBlckludGVydmFsLmRwKCk8PXRva2VuLnByZWNpc2lvbiwidG9rZW4gcHJlY2lzaW9uIG1pc21hdGNoIGZvciByZXdhcmRQZXJJbnRlcnZhbCIpKXJldHVybjtpZighYXBpLmFzc2VydChyZXdhcmRJbnRlcnZhbFNlY29uZHMmJk51bWJlci5pc0ludGVnZXIocmV3YXJkSW50ZXJ2YWxTZWNvbmRzKSYmcmV3YXJkSW50ZXJ2YWxTZWNvbmRzPj0zJiZyZXdhcmRJbnRlcnZhbFNlY29uZHM8PTg2NDAwLCJyZXdhcmRJbnRlcnZhbFNlY29uZHMgc2hvdWxkIGJlIGFuIGludGVnZXIgYmV0d2VlbiAzIGFuZCA4NjQwMCIpKXJldHVybjtpZighYXBpLmFzc2VydCh2b3RlUmVnZW5lcmF0aW9uRGF5cyYmTnVtYmVyLmlzSW50ZWdlcih2b3RlUmVnZW5lcmF0aW9uRGF5cykmJnZvdGVSZWdlbmVyYXRpb25EYXlzPj0xJiZ2b3RlUmVnZW5lcmF0aW9uRGF5czw9MzAsInZvdGVSZWdlbmVyYXRpb25EYXlzIHNob3VsZCBiZSBhbiBpbnRlZ2VyIGJldHdlZW4gMSBhbmQgMzAiKSlyZXR1cm47aWYoIWFwaS5hc3NlcnQoZG93bnZvdGVSZWdlbmVyYXRpb25EYXlzJiZOdW1iZXIuaXNJbnRlZ2VyKGRvd252b3RlUmVnZW5lcmF0aW9uRGF5cykmJmRvd252b3RlUmVnZW5lcmF0aW9uRGF5cz49MSYmZG93bnZvdGVSZWdlbmVyYXRpb25EYXlzPD0zMCwiZG93bnZvdGVSZWdlbmVyYXRpb25EYXlzIHNob3VsZCBiZSBhbiBpbnRlZ2VyIGJldHdlZW4gMSBhbmQgMzAiKSlyZXR1cm47aWYoIWFwaS5hc3NlcnQoTnVtYmVyLmlzSW50ZWdlcihzdGFrZWRSZXdhcmRQZXJjZW50YWdlKSYmc3Rha2VkUmV3YXJkUGVyY2VudGFnZT49MCYmc3Rha2VkUmV3YXJkUGVyY2VudGFnZTw9MTAwLCJzdGFrZWRSZXdhcmRQZXJjZW50YWdlIHNob3VsZCBiZSBhbiBpbnRlZ2VyIGJldHdlZW4gMCBhbmQgMTAwIikpcmV0dXJuO2lmKCFhcGkuYXNzZXJ0KHZvdGVQb3dlckNvbnN1bXB0aW9uJiZOdW1iZXIuaXNJbnRlZ2VyKHZvdGVQb3dlckNvbnN1bXB0aW9uKSYmdm90ZVBvd2VyQ29uc3VtcHRpb24+PTEmJnZvdGVQb3dlckNvbnN1bXB0aW9uPD0xZTQsInZvdGVQb3dlckNvbnN1bXB0aW9uIHNob3VsZCBiZSBhbiBpbnRlZ2VyIGJldHdlZW4gMSBhbmQgMTAwMDAiKSlyZXR1cm47aWYoIWFwaS5hc3NlcnQoZG93bnZvdGVQb3dlckNvbnN1bXB0aW9uJiZOdW1iZXIuaXNJbnRlZ2VyKGRvd252b3RlUG93ZXJDb25zdW1wdGlvbikmJmRvd252b3RlUG93ZXJDb25zdW1wdGlvbj49MSYmZG93bnZvdGVQb3dlckNvbnN1bXB0aW9uPD0xZTQsImRvd252b3RlUG93ZXJDb25zdW1wdGlvbiBzaG91bGQgYmUgYW4gaW50ZWdlciBiZXR3ZWVuIDEgYW5kIDEwMDAwIikpcmV0dXJuO2lmKCFhcGkuYXNzZXJ0KEFycmF5LmlzQXJyYXkodGFncykmJnRhZ3MubGVuZ3RoPj0xJiZ0YWdzLmxlbmd0aDw9bWF4VGFnc1BlclBvb2wmJnRhZ3MuZXZlcnkodD0+InN0cmluZyI9PXR5cGVvZiB0KSwidGFncyBzaG91bGQgYmUgYSBub24tZW1wdHkgYXJyYXkgb2Ygc3RyaW5ncyBvZiBsZW5ndGggYXQgbW9zdCAiK21heFRhZ3NQZXJQb29sKSlyZXR1cm47aWYoIWFwaS5hc3NlcnQoYXBpLnNlbmRlcj09PXRva2VuLmlzc3VlciwibXVzdCBiZSBpc3N1ZXIgb2YgdG9rZW4iKSlyZXR1cm47aWYoIWFwaS5hc3NlcnQodG9rZW4uc3Rha2luZ0VuYWJsZWQsInRva2VuIG11c3QgaGF2ZSBzdGFraW5nIGVuYWJsZWQiKSlyZXR1cm47Y29uc3QgZXhpc3RpbmdSZXdhcmRQb29sPWF3YWl0IGFwaS5kYi5maW5kT25lKCJyZXdhcmRQb29scyIse3N5bWJvbDpzeW1ib2x9KTtpZighYXBpLmFzc2VydCghZXhpc3RpbmdSZXdhcmRQb29sLCJjYW5ub3QgY3JlYXRlIG11bHRpcGxlIHJld2FyZCBwb29scyBwZXIgdG9rZW4iKSlyZXR1cm47Y29uc3QgdGltZXN0YW1wPW5ldyBEYXRlKGFwaS5oaXZlQmxvY2tUaW1lc3RhbXArIi4wMDBaIikuZ2V0VGltZSgpLHJld2FyZFBvb2w9e3N5bWJvbDpzeW1ib2wscmV3YXJkUG9vbDoiMCIsbGFzdFJld2FyZFRpbWVzdGFtcDp0aW1lc3RhbXAsbGFzdFBvc3RSZXdhcmRUaW1lc3RhbXA6dGltZXN0YW1wLGxhc3RDbGFpbURlY2F5VGltZXN0YW1wOnRpbWVzdGFtcCxjcmVhdGVkVGltZXN0YW1wOnRpbWVzdGFtcCxjb25maWc6e3Bvc3RSZXdhcmRDdXJ2ZTpwb3N0UmV3YXJkQ3VydmUscG9zdFJld2FyZEN1cnZlUGFyYW1ldGVyOnBvc3RSZXdhcmRDdXJ2ZVBhcmFtZXRlcixjdXJhdGlvblJld2FyZEN1cnZlOmN1cmF0aW9uUmV3YXJkQ3VydmUsY3VyYXRpb25SZXdhcmRDdXJ2ZVBhcmFtZXRlcjpjdXJhdGlvblJld2FyZEN1cnZlUGFyYW1ldGVyLGN1cmF0aW9uUmV3YXJkUGVyY2VudGFnZTpjdXJhdGlvblJld2FyZFBlcmNlbnRhZ2UsY2FzaG91dFdpbmRvd0RheXM6Y2FzaG91dFdpbmRvd0RheXMscmV3YXJkUGVySW50ZXJ2YWw6cmV3YXJkUGVySW50ZXJ2YWwscmV3YXJkSW50ZXJ2YWxTZWNvbmRzOnJld2FyZEludGVydmFsU2Vjb25kcyx2b3RlUmVnZW5lcmF0aW9uRGF5czp2b3RlUmVnZW5lcmF0aW9uRGF5cyxkb3dudm90ZVJlZ2VuZXJhdGlvbkRheXM6ZG93bnZvdGVSZWdlbmVyYXRpb25EYXlzLHN0YWtlZFJld2FyZFBlcmNlbnRhZ2U6c3Rha2VkUmV3YXJkUGVyY2VudGFnZSx2b3RlUG93ZXJDb25zdW1wdGlvbjp2b3RlUG93ZXJDb25zdW1wdGlvbixkb3dudm90ZVBvd2VyQ29uc3VtcHRpb246ZG93bnZvdGVQb3dlckNvbnN1bXB0aW9uLHRhZ3M6dGFnc30scGVuZGluZ0NsYWltczoiMCIsYWN0aXZlOiEwfSxpbnNlcnRlZFJld2FyZFBvb2w9YXdhaXQgYXBpLmRiLmluc2VydCgicmV3YXJkUG9vbHMiLHJld2FyZFBvb2wpO2FwaS5zZW5kZXIhPT1hcGkub3duZXImJmFwaS5CaWdOdW1iZXIoc2V0dXBGZWUpLmd0KDApJiZhd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoInRva2VucyIsInRyYW5zZmVyIix7dG86Im51bGwiLHN5bWJvbDoiQkVFIixxdWFudGl0eTpzZXR1cEZlZSxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fSksYXBpLmVtaXQoImNyZWF0ZVJld2FyZFBvb2wiLHtfaWQ6aW5zZXJ0ZWRSZXdhcmRQb29sLl9pZH0pfSxhY3Rpb25zLnVwZGF0ZVJld2FyZFBvb2w9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e3Jld2FyZFBvb2xJZDpyZXdhcmRQb29sSWQsY29uZmlnOmNvbmZpZyxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fT1wYXlsb2FkO2lmKGF3YWl0IHRva2VuTWFpbnRlbmFuY2UoKSwhYXBpLmFzc2VydCghMD09PWlzU2lnbmVkV2l0aEFjdGl2ZUtleSwib3BlcmF0aW9uIG11c3QgYmUgc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5IikpcmV0dXJuO2NvbnN0IHBhcmFtcz1hd2FpdCBhcGkuZGIuZmluZE9uZSgicGFyYW1zIix7fSkse3VwZGF0ZUZlZTp1cGRhdGVGZWUsbWF4VGFnc1BlclBvb2w6bWF4VGFnc1BlclBvb2x9PXBhcmFtcyx1dGlsaXR5VG9rZW5CYWxhbmNlPWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgidG9rZW5zIiwiYmFsYW5jZXMiLHthY2NvdW50OmFwaS5zZW5kZXIsc3ltYm9sOiJCRUUifSksYXV0aG9yaXplZD0hKCFhcGkuQmlnTnVtYmVyKHVwZGF0ZUZlZSkubHRlKDApJiZhcGkuc2VuZGVyIT09YXBpLm93bmVyKXx8dXRpbGl0eVRva2VuQmFsYW5jZSYmYXBpLkJpZ051bWJlcih1dGlsaXR5VG9rZW5CYWxhbmNlLmJhbGFuY2UpLmd0ZSh1cGRhdGVGZWUpO2lmKCFhcGkuYXNzZXJ0KGF1dGhvcml6ZWQsInlvdSBtdXN0IGhhdmUgZW5vdWdoIHRva2VucyB0byBjb3ZlciB0aGUgdXBkYXRlIGZlZSIpKXJldHVybjtpZighYXBpLmFzc2VydChjb25maWcmJiJvYmplY3QiPT10eXBlb2YgY29uZmlnLCJjb25maWcgaW52YWxpZCIpKXJldHVybjtjb25zdHtwb3N0UmV3YXJkQ3VydmU6cG9zdFJld2FyZEN1cnZlLHBvc3RSZXdhcmRDdXJ2ZVBhcmFtZXRlcjpwb3N0UmV3YXJkQ3VydmVQYXJhbWV0ZXIsY3VyYXRpb25SZXdhcmRDdXJ2ZTpjdXJhdGlvblJld2FyZEN1cnZlLGN1cmF0aW9uUmV3YXJkQ3VydmVQYXJhbWV0ZXI6Y3VyYXRpb25SZXdhcmRDdXJ2ZVBhcmFtZXRlcixjdXJhdGlvblJld2FyZFBlcmNlbnRhZ2U6Y3VyYXRpb25SZXdhcmRQZXJjZW50YWdlLGNhc2hvdXRXaW5kb3dEYXlzOmNhc2hvdXRXaW5kb3dEYXlzLHJld2FyZFBlckludGVydmFsOnJld2FyZFBlckludGVydmFsLHJld2FyZEludGVydmFsU2Vjb25kczpyZXdhcmRJbnRlcnZhbFNlY29uZHMsdm90ZVJlZ2VuZXJhdGlvbkRheXM6dm90ZVJlZ2VuZXJhdGlvbkRheXMsZG93bnZvdGVSZWdlbmVyYXRpb25EYXlzOmRvd252b3RlUmVnZW5lcmF0aW9uRGF5cyxzdGFrZWRSZXdhcmRQZXJjZW50YWdlOnN0YWtlZFJld2FyZFBlcmNlbnRhZ2Usdm90ZVBvd2VyQ29uc3VtcHRpb246dm90ZVBvd2VyQ29uc3VtcHRpb24sZG93bnZvdGVQb3dlckNvbnN1bXB0aW9uOmRvd252b3RlUG93ZXJDb25zdW1wdGlvbix0YWdzOnRhZ3N9PWNvbmZpZyxleGlzdGluZ1Jld2FyZFBvb2w9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInJld2FyZFBvb2xzIix7X2lkOnJld2FyZFBvb2xJZH0pO2lmKCFhcGkuYXNzZXJ0KGV4aXN0aW5nUmV3YXJkUG9vbCwicmV3YXJkIHBvb2wgbm90IGZvdW5kIikpcmV0dXJuO2NvbnN0IHRva2VuPWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgidG9rZW5zIiwidG9rZW5zIix7c3ltYm9sOmV4aXN0aW5nUmV3YXJkUG9vbC5zeW1ib2x9KTtpZighYXBpLmFzc2VydChwb3N0UmV3YXJkQ3VydmUmJiJwb3dlciI9PT1wb3N0UmV3YXJkQ3VydmUsInBvc3RSZXdhcmRDdXJ2ZSBzaG91bGQgYmUgb25lIG9mOiBbcG93ZXJdIikpcmV0dXJuO2V4aXN0aW5nUmV3YXJkUG9vbC5jb25maWcucG9zdFJld2FyZEN1cnZlPXBvc3RSZXdhcmRDdXJ2ZTtjb25zdCBwb3N0RXhwb25lbnQ9YXBpLkJpZ051bWJlcihwb3N0UmV3YXJkQ3VydmVQYXJhbWV0ZXIpO2lmKCFhcGkuYXNzZXJ0KCJzdHJpbmciPT10eXBlb2YgcG9zdFJld2FyZEN1cnZlUGFyYW1ldGVyJiZwb3N0RXhwb25lbnQuaXNGaW5pdGUoKSYmcG9zdEV4cG9uZW50Lmd0ZSgiMSIpJiZwb3N0RXhwb25lbnQubHRlKCIyIikmJnBvc3RFeHBvbmVudC5kcCgpPD0yLCdwb3N0UmV3YXJkQ3VydmVQYXJhbWV0ZXIgc2hvdWxkIGJlIGJldHdlZW4gIjEiIGFuZCAiMiIgd2l0aCBwcmVjaXNpb24gYXQgbW9zdCAyJykpcmV0dXJuO2lmKGV4aXN0aW5nUmV3YXJkUG9vbC5jb25maWcucG9zdFJld2FyZEN1cnZlUGFyYW1ldGVyPXBvc3RSZXdhcmRDdXJ2ZVBhcmFtZXRlciwhYXBpLmFzc2VydChjdXJhdGlvblJld2FyZEN1cnZlJiYicG93ZXIiPT09Y3VyYXRpb25SZXdhcmRDdXJ2ZSwiY3VyYXRpb25SZXdhcmRDdXJ2ZSBzaG91bGQgYmUgb25lIG9mOiBbcG93ZXJdIikpcmV0dXJuO2NvbnN0IGN1cmF0aW9uRXhwb25lbnQ9YXBpLkJpZ051bWJlcihjdXJhdGlvblJld2FyZEN1cnZlUGFyYW1ldGVyKTtpZighYXBpLmFzc2VydCgic3RyaW5nIj09dHlwZW9mIGN1cmF0aW9uUmV3YXJkQ3VydmVQYXJhbWV0ZXImJmN1cmF0aW9uRXhwb25lbnQuaXNGaW5pdGUoKSYmY3VyYXRpb25FeHBvbmVudC5ndGUoIjAuNSIpJiZjdXJhdGlvbkV4cG9uZW50Lmx0ZSgiMSIpJiZjdXJhdGlvbkV4cG9uZW50LmRwKCk8PTIsJ2N1cmF0aW9uUmV3YXJkQ3VydmVQYXJhbWV0ZXIgY2FuIG9ubHkgYmUgYmV0d2VlbiAiMC41IiBhbmQgIjEiIHdpdGggcHJlY2lzaW9uIGF0IG1vc3QgMicpKXJldHVybjtpZihleGlzdGluZ1Jld2FyZFBvb2wuY29uZmlnLmN1cmF0aW9uUmV3YXJkQ3VydmVQYXJhbWV0ZXI9Y3VyYXRpb25SZXdhcmRDdXJ2ZVBhcmFtZXRlciwhYXBpLmFzc2VydChOdW1iZXIuaXNJbnRlZ2VyKGN1cmF0aW9uUmV3YXJkUGVyY2VudGFnZSkmJmN1cmF0aW9uUmV3YXJkUGVyY2VudGFnZT49MCYmY3VyYXRpb25SZXdhcmRQZXJjZW50YWdlPD0xMDAsImN1cmF0aW9uUmV3YXJkUGVyY2VudGFnZSBzaG91bGQgYmUgYW4gaW50ZWdlciBiZXR3ZWVuIDAgYW5kIDEwMCIpKXJldHVybjtpZihleGlzdGluZ1Jld2FyZFBvb2wuY29uZmlnLmN1cmF0aW9uUmV3YXJkUGVyY2VudGFnZT1jdXJhdGlvblJld2FyZFBlcmNlbnRhZ2UsIWFwaS5hc3NlcnQoY2FzaG91dFdpbmRvd0RheXMmJk51bWJlci5pc0ludGVnZXIoY2FzaG91dFdpbmRvd0RheXMpJiZjYXNob3V0V2luZG93RGF5cz49MSYmY2FzaG91dFdpbmRvd0RheXM8PTMwLCJjYXNob3V0V2luZG93RGF5cyBzaG91bGQgYmUgYW4gaW50ZWdlciBiZXR3ZWVuIDEgYW5kIDMwIikpcmV0dXJuO2V4aXN0aW5nUmV3YXJkUG9vbC5jb25maWcuY2FzaG91dFdpbmRvd0RheXM9Y2FzaG91dFdpbmRvd0RheXM7Y29uc3QgcGFyc2VkUmV3YXJkUGVySW50ZXJ2YWw9YXBpLkJpZ051bWJlcihyZXdhcmRQZXJJbnRlcnZhbCk7YXBpLmFzc2VydCgic3RyaW5nIj09dHlwZW9mIHJld2FyZFBlckludGVydmFsJiZwYXJzZWRSZXdhcmRQZXJJbnRlcnZhbC5pc0Zpbml0ZSgpJiZwYXJzZWRSZXdhcmRQZXJJbnRlcnZhbC5ndCgwKSwicmV3YXJkUGVySW50ZXJ2YWwgaW52YWxpZCIpJiZhcGkuYXNzZXJ0KHBhcnNlZFJld2FyZFBlckludGVydmFsLmRwKCk8PXRva2VuLnByZWNpc2lvbiwidG9rZW4gcHJlY2lzaW9uIG1pc21hdGNoIGZvciByZXdhcmRQZXJJbnRlcnZhbCIpJiYoZXhpc3RpbmdSZXdhcmRQb29sLmNvbmZpZy5yZXdhcmRQZXJJbnRlcnZhbD1yZXdhcmRQZXJJbnRlcnZhbCxhcGkuYXNzZXJ0KHJld2FyZEludGVydmFsU2Vjb25kcyYmTnVtYmVyLmlzSW50ZWdlcihyZXdhcmRJbnRlcnZhbFNlY29uZHMpJiZyZXdhcmRJbnRlcnZhbFNlY29uZHM+PTMmJnJld2FyZEludGVydmFsU2Vjb25kczw9ODY0MDAsInJld2FyZEludGVydmFsU2Vjb25kcyBzaG91bGQgYmUgYW4gaW50ZWdlciBiZXR3ZWVuIDMgYW5kIDg2NDAwIikmJihleGlzdGluZ1Jld2FyZFBvb2wuY29uZmlnLnJld2FyZEludGVydmFsU2Vjb25kcz1yZXdhcmRJbnRlcnZhbFNlY29uZHMsYXBpLmFzc2VydCh2b3RlUmVnZW5lcmF0aW9uRGF5cyYmTnVtYmVyLmlzSW50ZWdlcih2b3RlUmVnZW5lcmF0aW9uRGF5cykmJnZvdGVSZWdlbmVyYXRpb25EYXlzPj0xJiZ2b3RlUmVnZW5lcmF0aW9uRGF5czw9MzAsInZvdGVSZWdlbmVyYXRpb25EYXlzIHNob3VsZCBiZSBhbiBpbnRlZ2VyIGJldHdlZW4gMSBhbmQgMzAiKSYmKGV4aXN0aW5nUmV3YXJkUG9vbC5jb25maWcudm90ZVJlZ2VuZXJhdGlvbkRheXM9dm90ZVJlZ2VuZXJhdGlvbkRheXMsYXBpLmFzc2VydChkb3dudm90ZVJlZ2VuZXJhdGlvbkRheXMmJk51bWJlci5pc0ludGVnZXIoZG93bnZvdGVSZWdlbmVyYXRpb25EYXlzKSYmZG93bnZvdGVSZWdlbmVyYXRpb25EYXlzPj0xJiZkb3dudm90ZVJlZ2VuZXJhdGlvbkRheXM8PTMwLCJkb3dudm90ZVJlZ2VuZXJhdGlvbkRheXMgc2hvdWxkIGJlIGFuIGludGVnZXIgYmV0d2VlbiAxIGFuZCAzMCIpJiYoZXhpc3RpbmdSZXdhcmRQb29sLmNvbmZpZy5kb3dudm90ZVJlZ2VuZXJhdGlvbkRheXM9ZG93bnZvdGVSZWdlbmVyYXRpb25EYXlzLGFwaS5hc3NlcnQoTnVtYmVyLmlzSW50ZWdlcihzdGFrZWRSZXdhcmRQZXJjZW50YWdlKSYmc3Rha2VkUmV3YXJkUGVyY2VudGFnZT49MCYmc3Rha2VkUmV3YXJkUGVyY2VudGFnZTw9MTAwLCJzdGFrZWRSZXdhcmRQZXJjZW50YWdlIHNob3VsZCBiZSBhbiBpbnRlZ2VyIGJldHdlZW4gMCBhbmQgMTAwIikmJihleGlzdGluZ1Jld2FyZFBvb2wuY29uZmlnLnN0YWtlZFJld2FyZFBlcmNlbnRhZ2U9c3Rha2VkUmV3YXJkUGVyY2VudGFnZSxhcGkuYXNzZXJ0KHZvdGVQb3dlckNvbnN1bXB0aW9uJiZOdW1iZXIuaXNJbnRlZ2VyKHZvdGVQb3dlckNvbnN1bXB0aW9uKSYmdm90ZVBvd2VyQ29uc3VtcHRpb24+PTEmJnZvdGVQb3dlckNvbnN1bXB0aW9uPD0xZTQsInZvdGVQb3dlckNvbnN1bXB0aW9uIHNob3VsZCBiZSBhbiBpbnRlZ2VyIGJldHdlZW4gMSBhbmQgMTAwMDAiKSYmKGV4aXN0aW5nUmV3YXJkUG9vbC5jb25maWcudm90ZVBvd2VyQ29uc3VtcHRpb249dm90ZVBvd2VyQ29uc3VtcHRpb24sYXBpLmFzc2VydChkb3dudm90ZVBvd2VyQ29uc3VtcHRpb24mJk51bWJlci5pc0ludGVnZXIoZG93bnZvdGVQb3dlckNvbnN1bXB0aW9uKSYmZG93bnZvdGVQb3dlckNvbnN1bXB0aW9uPj0xJiZkb3dudm90ZVBvd2VyQ29uc3VtcHRpb248PTFlNCwiZG93bnZvdGVQb3dlckNvbnN1bXB0aW9uIHNob3VsZCBiZSBhbiBpbnRlZ2VyIGJldHdlZW4gMSBhbmQgMTAwMDAiKSYmKGV4aXN0aW5nUmV3YXJkUG9vbC5jb25maWcuZG93bnZvdGVQb3dlckNvbnN1bXB0aW9uPWRvd252b3RlUG93ZXJDb25zdW1wdGlvbixhcGkuYXNzZXJ0KEFycmF5LmlzQXJyYXkodGFncykmJnRhZ3MubGVuZ3RoPj0xJiZ0YWdzLmxlbmd0aDw9bWF4VGFnc1BlclBvb2wmJnRhZ3MuZXZlcnkodD0+InN0cmluZyI9PXR5cGVvZiB0KSwidGFncyBzaG91bGQgYmUgYSBub24tZW1wdHkgYXJyYXkgb2Ygc3RyaW5ncyBvZiBsZW5ndGggYXQgbW9zdCAiK21heFRhZ3NQZXJQb29sKSYmKGV4aXN0aW5nUmV3YXJkUG9vbC5jb25maWcudGFncz10YWdzLGFwaS5hc3NlcnQoYXBpLnNlbmRlcj09PXRva2VuLmlzc3VlciwibXVzdCBiZSBpc3N1ZXIgb2YgdG9rZW4iKSYmKGFwaS5zZW5kZXIhPT1hcGkub3duZXImJmFwaS5CaWdOdW1iZXIodXBkYXRlRmVlKS5ndCgwKSYmYXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJ0b2tlbnMiLCJ0cmFuc2ZlciIse3RvOiJudWxsIixzeW1ib2w6IkJFRSIscXVhbnRpdHk6dXBkYXRlRmVlLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9KSxhd2FpdCBhcGkuZGIudXBkYXRlKCJyZXdhcmRQb29scyIsZXhpc3RpbmdSZXdhcmRQb29sKSkpKSkpKSkpKX0sYWN0aW9ucy5zZXRBY3RpdmU9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e3Jld2FyZFBvb2xJZDpyZXdhcmRQb29sSWQsYWN0aXZlOmFjdGl2ZSxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fT1wYXlsb2FkO2lmKGF3YWl0IHRva2VuTWFpbnRlbmFuY2UoKSwhYXBpLmFzc2VydCghMD09PWlzU2lnbmVkV2l0aEFjdGl2ZUtleSwib3BlcmF0aW9uIG11c3QgYmUgc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5IikpcmV0dXJuO2NvbnN0IGV4aXN0aW5nUmV3YXJkUG9vbD1hd2FpdCBhcGkuZGIuZmluZE9uZSgicmV3YXJkUG9vbHMiLHtfaWQ6cmV3YXJkUG9vbElkfSk7aWYoIWFwaS5hc3NlcnQoZXhpc3RpbmdSZXdhcmRQb29sLCJyZXdhcmQgcG9vbCBub3QgZm91bmQiKSlyZXR1cm47Y29uc3QgdG9rZW49YXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJ0b2tlbnMiLCJ0b2tlbnMiLHtzeW1ib2w6ZXhpc3RpbmdSZXdhcmRQb29sLnN5bWJvbH0pO2lmKCFhcGkuYXNzZXJ0KGFwaS5zZW5kZXI9PT10b2tlbi5pc3N1ZXIsIm11c3QgYmUgaXNzdWVyIG9mIHRva2VuIikpcmV0dXJuO2V4aXN0aW5nUmV3YXJkUG9vbC5hY3RpdmU9YWN0aXZlO2NvbnN0IHRpbWVzdGFtcD1uZXcgRGF0ZShhcGkuaGl2ZUJsb2NrVGltZXN0YW1wKyIuMDAwWiIpLmdldFRpbWUoKTthY3RpdmUmJihleGlzdGluZ1Jld2FyZFBvb2wubGFzdFJld2FyZFRpbWVzdGFtcD10aW1lc3RhbXApLGF3YWl0IGFwaS5kYi51cGRhdGUoInJld2FyZFBvb2xzIixleGlzdGluZ1Jld2FyZFBvb2wpfSxhY3Rpb25zLmNvbW1lbnQ9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e2F1dGhvcjphdXRob3IscGVybWxpbms6cGVybWxpbmsscmV3YXJkUG9vbHM6cmV3YXJkUG9vbHN9PXBheWxvYWQ7aWYoYXdhaXQgdG9rZW5NYWludGVuYW5jZSgpLCFhcGkuYXNzZXJ0KCJudWxsIj09PWFwaS5zZW5kZXIsImFjdGlvbiBtdXN0IHVzZSBjb21tZW50IG9wZXJhdGlvbiIpKXJldHVybjtpZighYXBpLmFzc2VydCghcmV3YXJkUG9vbHN8fEFycmF5LmlzQXJyYXkocmV3YXJkUG9vbHMpJiZyZXdhcmRQb29scy5ldmVyeShycD0+TnVtYmVyLmlzSW50ZWdlcihycCkpLCJyZXdhcmRQb29scyBtdXN0IGJlIGFuIGFycmF5IG9mIGludGVnZXJzIikpcmV0dXJuO2NvbnN0IHJld2FyZFBvb2xJZHM9YXdhaXQgZ2V0UmV3YXJkUG9vbElkcyhwYXlsb2FkKSxhdXRob3JwZXJtPWBAJHthdXRob3J9LyR7cGVybWxpbmt9YDtpZihhd2FpdCBhcGkuZGIuZmluZE9uZSgicG9zdHMiLHthdXRob3JwZXJtOmF1dGhvcnBlcm19KSlyZXR1cm47Y29uc3QgdGltZXN0YW1wPW5ldyBEYXRlKGFwaS5oaXZlQmxvY2tUaW1lc3RhbXArIi4wMDBaIikuZ2V0VGltZSgpO2ZvcihsZXQgaT0wO2k8cmV3YXJkUG9vbElkcy5sZW5ndGg7aSs9MSl7Y29uc3QgcmV3YXJkUG9vbElkPXJld2FyZFBvb2xJZHNbaV0scmV3YXJkUG9vbD1hd2FpdCBhcGkuZGIuZmluZE9uZSgicmV3YXJkUG9vbHMiLHtfaWQ6cmV3YXJkUG9vbElkfSk7aWYocmV3YXJkUG9vbCYmcmV3YXJkUG9vbC5hY3RpdmUpe2NvbnN0IGNhc2hvdXRUaW1lPXRpbWVzdGFtcCsyNCpyZXdhcmRQb29sLmNvbmZpZy5jYXNob3V0V2luZG93RGF5cyozNjAwKjFlMyxwb3N0PXtyZXdhcmRQb29sSWQ6cmV3YXJkUG9vbElkLHN5bWJvbDpyZXdhcmRQb29sLnN5bWJvbCxhdXRob3JwZXJtOmF1dGhvcnBlcm0sYXV0aG9yOmF1dGhvcixjcmVhdGVkOnRpbWVzdGFtcCxjYXNob3V0VGltZTpjYXNob3V0VGltZSx2b3RlUG9zaXRpdmVSc2hhcmVTdW06IjAiLHZvdGVSc2hhcmVTdW06IjAifTthd2FpdCBhcGkuZGIuaW5zZXJ0KCJwb3N0cyIscG9zdCksYXBpLmVtaXQoIm5ld0NvbW1lbnQiLHtyZXdhcmRQb29sSWQ6cmV3YXJkUG9vbElkLHN5bWJvbDpyZXdhcmRQb29sLnN5bWJvbH0pfX19LGFjdGlvbnMuY29tbWVudE9wdGlvbnM9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e2F1dGhvcjphdXRob3IscGVybWxpbms6cGVybWxpbmssbWF4QWNjZXB0ZWRQYXlvdXQ6bWF4QWNjZXB0ZWRQYXlvdXQsYmVuZWZpY2lhcmllczpiZW5lZmljaWFyaWVzfT1wYXlsb2FkO2lmKCFhcGkuYXNzZXJ0KCJudWxsIj09PWFwaS5zZW5kZXIsImFjdGlvbiBtdXN0IHVzZSBjb21tZW50T3B0aW9ucyBvcGVyYXRpb24iKSlyZXR1cm47Y29uc3QgYXV0aG9ycGVybT1gQCR7YXV0aG9yfS8ke3Blcm1saW5rfWAsZXhpc3RpbmdQb3N0cz1hd2FpdCBhcGkuZGIuZmluZCgicG9zdHMiLHthdXRob3JwZXJtOmF1dGhvcnBlcm19KTtpZighZXhpc3RpbmdQb3N0cylyZXR1cm47Y29uc3QgZGVjbGluZVBheW91dD1tYXhBY2NlcHRlZFBheW91dC5zdGFydHNXaXRoKCIwLjAwMCIpO2ZvcihsZXQgaT0wO2k8ZXhpc3RpbmdQb3N0cy5sZW5ndGg7aSs9MSl7Y29uc3QgcG9zdD1leGlzdGluZ1Bvc3RzW2ldO3Bvc3QuZGVjbGluZVBheW91dD1kZWNsaW5lUGF5b3V0LHBvc3QuYmVuZWZpY2lhcmllcz1iZW5lZmljaWFyaWVzLGF3YWl0IGFwaS5kYi51cGRhdGUoInBvc3RzIixwb3N0KX19LGFjdGlvbnMudm90ZT1hc3luYyBwYXlsb2FkPT57Y29uc3R7dm90ZXI6dm90ZXIsYXV0aG9yOmF1dGhvcixwZXJtbGluazpwZXJtbGluayx3ZWlnaHQ6d2VpZ2h0fT1wYXlsb2FkO2lmKGF3YWl0IHRva2VuTWFpbnRlbmFuY2UoKSwhYXBpLmFzc2VydCgibnVsbCI9PT1hcGkuc2VuZGVyLCJjYW4gb25seSB2b3RlIHdpdGggdm90aW5nIG9wIikpcmV0dXJuO2lmKCFhcGkuYXNzZXJ0KE51bWJlci5pc0ludGVnZXIod2VpZ2h0KSYmd2VpZ2h0Pj0tMWU0JiZ3ZWlnaHQ8PTFlNCwid2VpZ2h0IG11c3QgYmUgYW4gaW50ZWdlciBmcm9tIC0xMDAwMCB0byAxMDAwMCIpKXJldHVybjtjb25zdCB0aW1lc3RhbXA9bmV3IERhdGUoYXBpLmhpdmVCbG9ja1RpbWVzdGFtcCsiLjAwMFoiKS5nZXRUaW1lKCksYXV0aG9ycGVybT1gQCR7YXV0aG9yfS8ke3Blcm1saW5rfWAscG9zdHM9YXdhaXQgYXBpLmRiLmZpbmQoInBvc3RzIix7YXV0aG9ycGVybTphdXRob3JwZXJtfSk7aWYocG9zdHMpZm9yKGxldCBpPTA7aTxwb3N0cy5sZW5ndGg7aSs9MSl7Y29uc3QgcG9zdD1wb3N0c1tpXTthd2FpdCBwcm9jZXNzVm90ZShwb3N0LHZvdGVyLHdlaWdodCx0aW1lc3RhbXApfX07"}}}

Comments Smart Contract | Ecency