{"id":"ssc-mainnet-hive","json":{"contractName":"contract","contractAction":"update","contractPayload":{"name":"comments","params":"","code":"Y29uc3QgU01UX1BSRUNJU0lPTj0xMCxNQVhfVk9USU5HX1BPV0VSPTFlNCxNQVhfV0VJR0hUPTFlNCxQT1NUX1FVRVJZX0xJTUlUPTFlMztmdW5jdGlvbiBjYWxjdWxhdGVXZWlnaHRSc2hhcmVzKHJld2FyZFBvb2wsdm90ZVJzaGFyZVN1bSl7aWYoYXBpLkJpZ051bWJlcih2b3RlUnNoYXJlU3VtKS5sdGUoMCkpcmV0dXJuIGFwaS5CaWdOdW1iZXIoMCk7aWYoInBvd2VyIj09PXJld2FyZFBvb2wuY29uZmlnLnBvc3RSZXdhcmRDdXJ2ZSl7Y29uc3QgcG9zdFJld2FyZEV4cG9uZW50PWFwaS5CaWdOdW1iZXIocmV3YXJkUG9vbC5jb25maWcucG9zdFJld2FyZEN1cnZlUGFyYW1ldGVyKTtyZXR1cm4gcG9zdFJld2FyZEV4cG9uZW50LmVxKCIxIil8fHBvc3RSZXdhcmRFeHBvbmVudC5lcSgiMiIpP2FwaS5CaWdOdW1iZXIodm90ZVJzaGFyZVN1bSkucG93KHJld2FyZFBvb2wuY29uZmlnLnBvc3RSZXdhcmRDdXJ2ZVBhcmFtZXRlcikudG9GaXhlZCgxMCxhcGkuQmlnTnVtYmVyLlJPVU5EX0RPV04pOmFwaS5CaWdOdW1iZXIocGFyc2VGbG9hdCh2b3RlUnNoYXJlU3VtKSoqcGFyc2VGbG9hdChyZXdhcmRQb29sLmNvbmZpZy5wb3N0UmV3YXJkQ3VydmVQYXJhbWV0ZXIpKS50b0ZpeGVkKDEwLGFwaS5CaWdOdW1iZXIuUk9VTkRfRE9XTil9cmV0dXJuIGFwaS5CaWdOdW1iZXIodm90ZVJzaGFyZVN1bSl9ZnVuY3Rpb24gY2FsY3VsYXRlQ3VyYXRpb25XZWlnaHRSc2hhcmVzKHJld2FyZFBvb2wsdm90ZVJzaGFyZVN1bSl7aWYoYXBpLkJpZ051bWJlcih2b3RlUnNoYXJlU3VtKS5sdGUoMCkpcmV0dXJuIGFwaS5CaWdOdW1iZXIoMCk7aWYoInBvd2VyIj09PXJld2FyZFBvb2wuY29uZmlnLmN1cmF0aW9uUmV3YXJkQ3VydmUpe2NvbnN0IGN1cmF0aW9uUmV3YXJkRXhwb25lbnQ9YXBpLkJpZ051bWJlcihyZXdhcmRQb29sLmNvbmZpZy5jdXJhdGlvblJld2FyZEN1cnZlUGFyYW1ldGVyKTtyZXR1cm4gY3VyYXRpb25SZXdhcmRFeHBvbmVudC5lcSgiMC41Iik/YXBpLkJpZ051bWJlcih2b3RlUnNoYXJlU3VtKS5zcXJ0KCkudG9GaXhlZCgxMCxhcGkuQmlnTnVtYmVyLlJPVU5EX0RPV04pOmN1cmF0aW9uUmV3YXJkRXhwb25lbnQuZXEoIjEiKT9hcGkuQmlnTnVtYmVyKHZvdGVSc2hhcmVTdW0pLnRvRml4ZWQoMTAsYXBpLkJpZ051bWJlci5ST1VORF9ET1dOKTphcGkuQmlnTnVtYmVyKHBhcnNlRmxvYXQodm90ZVJzaGFyZVN1bSkqKnBhcnNlRmxvYXQocmV3YXJkUG9vbC5jb25maWcuY3VyYXRpb25SZXdhcmRDdXJ2ZVBhcmFtZXRlcikpLnRvRml4ZWQoMTAsYXBpLkJpZ051bWJlci5ST1VORF9ET1dOKX1yZXR1cm4gYXBpLkJpZ051bWJlcih2b3RlUnNoYXJlU3VtKX1hc3luYyBmdW5jdGlvbiBwYXlVc2VyKHN5bWJvbCxxdWFudGl0eSx1c2VyLHN0YWtlZFJld2FyZFBlcmNlbnRhZ2UsbXV0ZSl7aWYobXV0ZSlyZXR1cm47Y29uc3QgcXVhbnRpdHlCaWdudW09YXBpLkJpZ051bWJlcihxdWFudGl0eSksc3Rha2VkUXVhbnRpdHk9cXVhbnRpdHlCaWdudW0ubXVsdGlwbGllZEJ5KHN0YWtlZFJld2FyZFBlcmNlbnRhZ2UpLmRpdmlkZWRCeSgxMDApLnRvRml4ZWQocXVhbnRpdHlCaWdudW0uZHAoKSxhcGkuQmlnTnVtYmVyLlJPVU5EX0RPV04pLGxpcXVpZFF1YW50aXR5PXF1YW50aXR5QmlnbnVtLm1pbnVzKHN0YWtlZFF1YW50aXR5KS50b0ZpeGVkKHF1YW50aXR5QmlnbnVtLmRwKCksYXBpLkJpZ051bWJlci5ST1VORF9ET1dOKTtsZXQgcmVzO2FwaS5CaWdOdW1iZXIobGlxdWlkUXVhbnRpdHkpLmd0KDApJiYocmVzPWF3YWl0IGFwaS50cmFuc2ZlclRva2Vucyh1c2VyLHN5bWJvbCxsaXF1aWRRdWFudGl0eSwidXNlciIpLHJlcy5lcnJvcnMmJmFwaS5kZWJ1ZyhgRXJyb3IgcGF5aW5nIG91dCBsaXF1aWQgJHtsaXF1aWRRdWFudGl0eX0gJHtzeW1ib2x9IHRvICR7dXNlcn0gKFRYSUQgJHthcGkudHJhbnNhY3Rpb25JZH0pOiBcbiR7cmVzLmVycm9yc31gKSksYXBpLkJpZ051bWJlcihzdGFrZWRRdWFudGl0eSkuZ3QoMCkmJihyZXM9YXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJ0b2tlbnMiLCJzdGFrZUZyb21Db250cmFjdCIse3RvOnVzZXIsc3ltYm9sOnN5bWJvbCxxdWFudGl0eTpzdGFrZWRRdWFudGl0eX0pLHJlcy5lcnJvcnMmJmFwaS5kZWJ1ZyhgRXJyb3IgcGF5aW5nIG91dCBzdGFrZWQgJHtzdGFrZWRRdWFudGl0eX0gJHtzeW1ib2x9IHRvICR7dXNlcn0gKFRYSUQgJHthcGkudHJhbnNhY3Rpb25JZH0pOiBcbiR7cmVzLmVycm9yc31gKSl9YXN5bmMgZnVuY3Rpb24gZ2V0TXV0ZShyZXdhcmRQb29sSWQsYWNjb3VudCl7Y29uc3Qgdm90aW5nUG93ZXI9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInZvdGluZ1Bvd2VyIix7cmV3YXJkUG9vbElkOnJld2FyZFBvb2xJZCxhY2NvdW50OmFjY291bnR9KTtyZXR1cm4hIXZvdGluZ1Bvd2VyJiZ2b3RpbmdQb3dlci5tdXRlfWFzeW5jIGZ1bmN0aW9uIHBheU91dEJlbmVmaWNpYXJpZXMocmV3YXJkUG9vbCx0b2tlbixwb3N0LGF1dGhvckJlbmVQb3J0aW9uKXtjb25zdHthdXRob3JwZXJtOmF1dGhvcnBlcm0sc3ltYm9sOnN5bWJvbCxyZXdhcmRQb29sSWQ6cmV3YXJkUG9vbElkLGJlbmVmaWNpYXJpZXM6YmVuZWZpY2lhcmllc309cG9zdDtpZighYmVuZWZpY2lhcmllc3x8MD09PWJlbmVmaWNpYXJpZXMubGVuZ3RoKXJldHVybiBhcGkuQmlnTnVtYmVyKDApO2xldCB0b3RhbEJlbmVQYXk9YXBpLkJpZ051bWJlcigwKTtmb3IobGV0IGk9MDtpPGJlbmVmaWNpYXJpZXMubGVuZ3RoO2krPTEpe2NvbnN0IGJlbmVmaWNpYXJ5PWJlbmVmaWNpYXJpZXNbaV0sYmVuZVBheT1hcGkuQmlnTnVtYmVyKGF1dGhvckJlbmVQb3J0aW9uKS5tdWx0aXBsaWVkQnkoYmVuZWZpY2lhcnkud2VpZ2h0KS5kaXZpZGVkQnkoMWU0KS50b0ZpeGVkKHRva2VuLnByZWNpc2lvbixhcGkuQmlnTnVtYmVyLlJPVU5EX0RPV04pLG11dGU9YXdhaXQgZ2V0TXV0ZShyZXdhcmRQb29sSWQsYmVuZWZpY2lhcnkuYWNjb3VudCkscmV3YXJkTG9nPXtyZXdhcmRQb29sSWQ6cmV3YXJkUG9vbElkLGF1dGhvcnBlcm06YXV0aG9ycGVybSxzeW1ib2w6c3ltYm9sLGFjY291bnQ6YmVuZWZpY2lhcnkuYWNjb3VudCxxdWFudGl0eTpiZW5lUGF5fTttdXRlJiYocmV3YXJkTG9nLm11dGU9ITApLGFwaS5lbWl0KCJiZW5lZmljaWFyeVJld2FyZCIscmV3YXJkTG9nKSxhd2FpdCBwYXlVc2VyKHN5bWJvbCxiZW5lUGF5LGJlbmVmaWNpYXJ5LmFjY291bnQscmV3YXJkUG9vbC5jb25maWcuc3Rha2VkUmV3YXJkUGVyY2VudGFnZSxtdXRlKSx0b3RhbEJlbmVQYXk9YXBpLkJpZ051bWJlcih0b3RhbEJlbmVQYXkpLnBsdXMoYmVuZVBheSl9cmV0dXJuIHRvdGFsQmVuZVBheX1hc3luYyBmdW5jdGlvbiBwYXlPdXRDdXJhdG9ycyhyZXdhcmRQb29sLHRva2VuLHBvc3QsY3VyYXRvclBvcnRpb24scGFyYW1zKXtjb25zdHthdXRob3JwZXJtOmF1dGhvcnBlcm0sc3ltYm9sOnN5bWJvbCxyZXdhcmRQb29sSWQ6cmV3YXJkUG9vbElkfT1wb3N0LHt2b3RlUXVlcnlMaW1pdDp2b3RlUXVlcnlMaW1pdH09cGFyYW1zLHJlc3BvbnNlPXtkb25lOiExLHZvdGVzUHJvY2Vzc2VkOjB9LHZvdGVzVG9QYXlvdXQ9YXdhaXQgYXBpLmRiLmZpbmQoInZvdGVzIix7cmV3YXJkUG9vbElkOnJld2FyZFBvb2xJZCxhdXRob3JwZXJtOmF1dGhvcnBlcm19LHZvdGVRdWVyeUxpbWl0LDAsW3tpbmRleDoiYnlUaW1lc3RhbXAiLGRlc2NlbmRpbmc6ITF9XSk7aWYoMD09PXZvdGVzVG9QYXlvdXQubGVuZ3RoKXJlc3BvbnNlLmRvbmU9ITA7ZWxzZXtmb3IobGV0IGk9MDtpPHZvdGVzVG9QYXlvdXQubGVuZ3RoO2krPTEpe2NvbnN0IHZvdGU9dm90ZXNUb1BheW91dFtpXTtpZihhcGkuQmlnTnVtYmVyKHZvdGUuY3VyYXRpb25XZWlnaHQpPjApe2NvbnN0IHRvdGFsQ3VyYXRpb25XZWlnaHQ9Y2FsY3VsYXRlQ3VyYXRpb25XZWlnaHRSc2hhcmVzKHJld2FyZFBvb2wscG9zdC52b3RlUG9zaXRpdmVSc2hhcmVTdW0pLHZvdGVQYXk9YXBpLkJpZ051bWJlcihjdXJhdG9yUG9ydGlvbikubXVsdGlwbGllZEJ5KHZvdGUuY3VyYXRpb25XZWlnaHQpLmRpdmlkZWRCeSh0b3RhbEN1cmF0aW9uV2VpZ2h0KS50b0ZpeGVkKHRva2VuLnByZWNpc2lvbixhcGkuQmlnTnVtYmVyLlJPVU5EX0RPV04pLG11dGU9YXdhaXQgZ2V0TXV0ZShyZXdhcmRQb29sSWQsdm90ZS52b3RlcikscmV3YXJkTG9nPXtyZXdhcmRQb29sSWQ6cmV3YXJkUG9vbElkLGF1dGhvcnBlcm06YXV0aG9ycGVybSxzeW1ib2w6c3ltYm9sLGFjY291bnQ6dm90ZS52b3RlcixxdWFudGl0eTp2b3RlUGF5fTttdXRlJiYocmV3YXJkTG9nLm11dGU9ITApLGFwaS5lbWl0KCJjdXJhdGlvblJld2FyZCIscmV3YXJkTG9nKSxhd2FpdCBwYXlVc2VyKHN5bWJvbCx2b3RlUGF5LHZvdGUudm90ZXIscmV3YXJkUG9vbC5jb25maWcuc3Rha2VkUmV3YXJkUGVyY2VudGFnZSxtdXRlKX1hd2FpdCBhcGkuZGIucmVtb3ZlKCJ2b3RlcyIsdm90ZSl9cmVzcG9uc2Uudm90ZXNQcm9jZXNzZWQrPXZvdGVzVG9QYXlvdXQubGVuZ3RoLHZvdGVzVG9QYXlvdXQubGVuZ3RoPHZvdGVRdWVyeUxpbWl0JiYocmVzcG9uc2UuZG9uZT0hMCl9cmV0dXJuIHJlc3BvbnNlfWFzeW5jIGZ1bmN0aW9uIHBheU91dFBvc3QocmV3YXJkUG9vbCx0b2tlbixwb3N0LHBhcmFtcyl7Y29uc3QgcmVzcG9uc2U9e3RvdGFsUGF5b3V0VmFsdWU6MCx2b3Rlc1Byb2Nlc3NlZDowLGRvbmU6ITF9O2lmKHBvc3QuZGVjbGluZVBheW91dClyZXR1cm4gYXBpLmVtaXQoImF1dGhvclJld2FyZCIse3Jld2FyZFBvb2xJZDpwb3N0LnJld2FyZFBvb2xJZCxhdXRob3JwZXJtOnBvc3QuYXV0aG9ycGVybSxzeW1ib2w6cG9zdC5zeW1ib2wsYWNjb3VudDpwb3N0LmF1dGhvcixxdWFudGl0eToiMCJ9KSxyZXNwb25zZS5kb25lPSEwLGF3YWl0IGFwaS5kYi5yZW1vdmUoInBvc3RzIixwb3N0KSxyZXNwb25zZTtjb25zdCBwb3N0Q2xhaW1zPWNhbGN1bGF0ZVdlaWdodFJzaGFyZXMocmV3YXJkUG9vbCxwb3N0LnZvdGVSc2hhcmVTdW0pLHBvc3RQZW5kaW5nVG9rZW49YXBpLkJpZ051bWJlcihyZXdhcmRQb29sLmludGVydmFsUGVuZGluZ0NsYWltcykuZ3QoMCk/YXBpLkJpZ051bWJlcihyZXdhcmRQb29sLmludGVydmFsUmV3YXJkUG9vbCkubXVsdGlwbGllZEJ5KHBvc3RDbGFpbXMpLmRpdmlkZWRCeShyZXdhcmRQb29sLmludGVydmFsUGVuZGluZ0NsYWltcykudG9GaXhlZCh0b2tlbi5wcmVjaXNpb24sYXBpLkJpZ051bWJlci5ST1VORF9ET1dOKToiMCI7cmVzcG9uc2UudG90YWxQYXlvdXRWYWx1ZT1wb3N0UGVuZGluZ1Rva2VuO2NvbnN0IGN1cmF0b3JQb3J0aW9uPWFwaS5CaWdOdW1iZXIocG9zdFBlbmRpbmdUb2tlbikubXVsdGlwbGllZEJ5KHJld2FyZFBvb2wuY29uZmlnLmN1cmF0aW9uUmV3YXJkUGVyY2VudGFnZSkuZGl2aWRlZEJ5KDEwMCkudG9GaXhlZCh0b2tlbi5wcmVjaXNpb24sYXBpLkJpZ051bWJlci5ST1VORF9ET1dOKSxhdXRob3JCZW5lUG9ydGlvbj1hcGkuQmlnTnVtYmVyKHBvc3RQZW5kaW5nVG9rZW4pLm1pbnVzKGN1cmF0b3JQb3J0aW9uKS50b0ZpeGVkKHRva2VuLnByZWNpc2lvbixhcGkuQmlnTnVtYmVyLlJPVU5EX0RPV04pLGJlbmVmaWNpYXJpZXNQYXlvdXRWYWx1ZT1hd2FpdCBwYXlPdXRCZW5lZmljaWFyaWVzKHJld2FyZFBvb2wsdG9rZW4scG9zdCxhdXRob3JCZW5lUG9ydGlvbiksYXV0aG9yUG9ydGlvbj1hcGkuQmlnTnVtYmVyKGF1dGhvckJlbmVQb3J0aW9uKS5taW51cyhiZW5lZmljaWFyaWVzUGF5b3V0VmFsdWUpLnRvRml4ZWQodG9rZW4ucHJlY2lzaW9uLGFwaS5CaWdOdW1iZXIuUk9VTkRfRE9XTiksY3VyYXRvclBheVN0YXR1cz1hd2FpdCBwYXlPdXRDdXJhdG9ycyhyZXdhcmRQb29sLHRva2VuLHBvc3QsY3VyYXRvclBvcnRpb24scGFyYW1zKTtpZihyZXNwb25zZS52b3Rlc1Byb2Nlc3NlZCs9Y3VyYXRvclBheVN0YXR1cy52b3Rlc1Byb2Nlc3NlZCxyZXNwb25zZS5kb25lPWN1cmF0b3JQYXlTdGF0dXMuZG9uZSxjdXJhdG9yUGF5U3RhdHVzLmRvbmUpe2NvbnN0IG11dGU9YXdhaXQgZ2V0TXV0ZShwb3N0LnJld2FyZFBvb2xJZCxwb3N0LmF1dGhvcikscmV3YXJkTG9nPXtyZXdhcmRQb29sSWQ6cG9zdC5yZXdhcmRQb29sSWQsYXV0aG9ycGVybTpwb3N0LmF1dGhvcnBlcm0sc3ltYm9sOnBvc3Quc3ltYm9sLGFjY291bnQ6cG9zdC5hdXRob3IscXVhbnRpdHk6YXV0aG9yUG9ydGlvbn07bXV0ZSYmKHJld2FyZExvZy5tdXRlPSEwKSxhcGkuZW1pdCgiYXV0aG9yUmV3YXJkIixyZXdhcmRMb2cpLGF3YWl0IHBheVVzZXIocG9zdC5zeW1ib2wsYXV0aG9yUG9ydGlvbixwb3N0LmF1dGhvcixyZXdhcmRQb29sLmNvbmZpZy5zdGFrZWRSZXdhcmRQZXJjZW50YWdlLG11dGUpLGF3YWl0IGFwaS5kYi5yZW1vdmUoInBvc3RzIixwb3N0KX1yZXR1cm4gcmVzcG9uc2V9YXN5bmMgZnVuY3Rpb24gY29tcHV0ZVBvc3RSZXdhcmRzKHBhcmFtcyxyZXdhcmRQb29sLHRva2VuLGVuZFRpbWVzdGFtcCl7Y29uc3R7bGFzdENsYWltRGVjYXlUaW1lc3RhbXA6bGFzdENsYWltRGVjYXlUaW1lc3RhbXB9PXJld2FyZFBvb2wse21heFBvc3RzUHJvY2Vzc2VkUGVyUm91bmQ6bWF4UG9zdHNQcm9jZXNzZWRQZXJSb3VuZCxtYXhWb3Rlc1Byb2Nlc3NlZFBlclJvdW5kOm1heFZvdGVzUHJvY2Vzc2VkUGVyUm91bmR9PXBhcmFtcyxwb3N0c1RvUGF5b3V0PWF3YWl0IGFwaS5kYi5maW5kKCJwb3N0cyIse3Jld2FyZFBvb2xJZDpyZXdhcmRQb29sLl9pZCxjYXNob3V0VGltZTp7JGd0ZTpsYXN0Q2xhaW1EZWNheVRpbWVzdGFtcCwkbHRlOmVuZFRpbWVzdGFtcH19LG1heFBvc3RzUHJvY2Vzc2VkUGVyUm91bmQsMCxbe2luZGV4OiJieUNhc2hvdXRUaW1lIixkZXNjZW5kaW5nOiExfSx7aW5kZXg6Il9pZCIsZGVzY2VuZGluZzohMX1dKTtsZXQgZG9uZT0hMSxkZWR1Y3RGcm9tUmV3YXJkUG9vbD1hcGkuQmlnTnVtYmVyKDApLHZvdGVzUHJvY2Vzc2VkPTA7aWYocG9zdHNUb1BheW91dCYmcG9zdHNUb1BheW91dC5sZW5ndGg+MCl7bGV0IGxpbWl0UmVhY2hlZD0hMTtmb3IobGV0IGk9MDtpPHBvc3RzVG9QYXlvdXQubGVuZ3RoO2krPTEpe2NvbnN0IHBvc3Q9cG9zdHNUb1BheW91dFtpXSxwb3N0UGF5b3V0UmVzcG9uc2U9YXdhaXQgcGF5T3V0UG9zdChyZXdhcmRQb29sLHRva2VuLHBvc3QscGFyYW1zKSx7dG90YWxQYXlvdXRWYWx1ZTp0b3RhbFBheW91dFZhbHVlfT1wb3N0UGF5b3V0UmVzcG9uc2U7aWYodm90ZXNQcm9jZXNzZWQrPXBvc3RQYXlvdXRSZXNwb25zZS52b3Rlc1Byb2Nlc3NlZCxwb3N0UGF5b3V0UmVzcG9uc2UuZG9uZSYmKGRlZHVjdEZyb21SZXdhcmRQb29sPWRlZHVjdEZyb21SZXdhcmRQb29sLnBsdXModG90YWxQYXlvdXRWYWx1ZSkpLCFwb3N0UGF5b3V0UmVzcG9uc2UuZG9uZXx8dm90ZXNQcm9jZXNzZWQ+PW1heFZvdGVzUHJvY2Vzc2VkUGVyUm91bmQpe2xpbWl0UmVhY2hlZD0hMDticmVha319IWxpbWl0UmVhY2hlZCYmcG9zdHNUb1BheW91dC5sZW5ndGg8bWF4UG9zdHNQcm9jZXNzZWRQZXJSb3VuZCYmKGRvbmU9ITApLHJld2FyZFBvb2wucmV3YXJkUG9vbD1hcGkuQmlnTnVtYmVyKHJld2FyZFBvb2wucmV3YXJkUG9vbCkubWludXMoZGVkdWN0RnJvbVJld2FyZFBvb2wpLnRvRml4ZWQodG9rZW4ucHJlY2lzaW9uLGFwaS5CaWdOdW1iZXIuUk9VTkRfRE9XTil9ZWxzZSBkb25lPSEwO2RvbmUmJihyZXdhcmRQb29sLmxhc3RDbGFpbURlY2F5VGltZXN0YW1wPWVuZFRpbWVzdGFtcCl9YXN5bmMgZnVuY3Rpb24gcG9zdENsYWltc0luSW50ZXJ2YWwocGFyYW1zLHJld2FyZFBvb2wsc3RhcnQsZW5kKXtsZXQgcG9zdE9mZnNldD0wLG5ld1BlbmRpbmdDbGFpbXM9YXBpLkJpZ051bWJlcigwKSxwb3N0c1RvUGF5b3V0PWF3YWl0IGFwaS5kYi5maW5kKCJwb3N0cyIse3Jld2FyZFBvb2xJZDpyZXdhcmRQb29sLl9pZCxjYXNob3V0VGltZTp7JGd0ZTpzdGFydCwkbHRlOmVuZH19LDFlMyxwb3N0T2Zmc2V0LFt7aW5kZXg6ImJ5Q2FzaG91dFRpbWUiLGRlc2NlbmRpbmc6ITF9LHtpbmRleDoiX2lkIixkZXNjZW5kaW5nOiExfV0pO2Zvcig7cG9zdHNUb1BheW91dCYmcG9zdHNUb1BheW91dC5sZW5ndGg+MCYmKG5ld1BlbmRpbmdDbGFpbXM9bmV3UGVuZGluZ0NsYWltcy5wbHVzKHBvc3RzVG9QYXlvdXQucmVkdWNlKCh4LHkpPT54LnBsdXMoY2FsY3VsYXRlV2VpZ2h0UnNoYXJlcyhyZXdhcmRQb29sLHkudm90ZVJzaGFyZVN1bSkpLGFwaS5CaWdOdW1iZXIoMCkpKS5kcCgxMCxhcGkuQmlnTnVtYmVyLlJPVU5EX0RPV04pLCEocG9zdHNUb1BheW91dC5sZW5ndGg8MWUzKSk7KXBvc3RPZmZzZXQrPTFlMyxwb3N0c1RvUGF5b3V0PWF3YWl0IGFwaS5kYi5maW5kKCJwb3N0cyIse3Jld2FyZFBvb2xJZDpyZXdhcmRQb29sLl9pZCxjYXNob3V0VGltZTp7JGd0ZTpzdGFydCwkbHRlOmVuZH19LDFlMyxwb3N0T2Zmc2V0LFt7aW5kZXg6ImJ5Q2FzaG91dFRpbWUiLGRlc2NlbmRpbmc6ITF9LHtpbmRleDoiX2lkIixkZXNjZW5kaW5nOiExfV0pO3JldHVybiBuZXdQZW5kaW5nQ2xhaW1zfWFzeW5jIGZ1bmN0aW9uIHRva2VuTWFpbnRlbmFuY2UoKXtjb25zdCB0aW1lc3RhbXA9bmV3IERhdGUoYXBpLmhpdmVCbG9ja1RpbWVzdGFtcCsiLjAwMFoiKS5nZXRUaW1lKCkscGFyYW1zPWF3YWl0IGFwaS5kYi5maW5kT25lKCJwYXJhbXMiLHt9KSx7bGFzdE1haW50ZW5hbmNlQmxvY2s6bGFzdE1haW50ZW5hbmNlQmxvY2ssbGFzdFByb2Nlc3NlZFBvb2xJZDpsYXN0UHJvY2Vzc2VkUG9vbElkLG1haW50ZW5hbmNlVG9rZW5zUGVyQmxvY2s6bWFpbnRlbmFuY2VUb2tlbnNQZXJCbG9ja309cGFyYW1zO2lmKGxhc3RNYWludGVuYW5jZUJsb2NrPj1hcGkuYmxvY2tOdW1iZXIpcmV0dXJuO3BhcmFtcy5sYXN0TWFpbnRlbmFuY2VCbG9jaz1hcGkuYmxvY2tOdW1iZXI7Y29uc3QgcmV3YXJkUG9vbFByb2Nlc3NpbmdFeHByZXNzaW9uPXskbHRlOlsiJGxhc3RDbGFpbURlY2F5VGltZXN0YW1wIix7JHN1YnRyYWN0Olt0aW1lc3RhbXAseyRtdWx0aXBseTpbIiRjb25maWcucmV3YXJkSW50ZXJ2YWxTZWNvbmRzIiwxZTNdfV19XX07bGV0IHJld2FyZFBvb2xzPWF3YWl0IGFwaS5kYi5maW5kKCJyZXdhcmRQb29scyIse2FjdGl2ZTohMCwkZXhwcjpyZXdhcmRQb29sUHJvY2Vzc2luZ0V4cHJlc3Npb24sX2lkOnskZ3Q6bGFzdFByb2Nlc3NlZFBvb2xJZH19LG1haW50ZW5hbmNlVG9rZW5zUGVyQmxvY2ssMCxbe2luZGV4OiJfaWQiLGRlc2NlbmRpbmc6ITF9XSk7aWYoIXJld2FyZFBvb2xzfHxyZXdhcmRQb29scy5sZW5ndGg8bWFpbnRlbmFuY2VUb2tlbnNQZXJCbG9jayl7cmV3YXJkUG9vbHN8fChyZXdhcmRQb29scz1bXSk7Y29uc3QgbW9yZVJld2FyZFBvb2xzPWF3YWl0IGFwaS5kYi5maW5kKCJyZXdhcmRQb29scyIse2FjdGl2ZTohMCwkZXhwcjpyZXdhcmRQb29sUHJvY2Vzc2luZ0V4cHJlc3Npb259LG1haW50ZW5hbmNlVG9rZW5zUGVyQmxvY2stcmV3YXJkUG9vbHMubGVuZ3RoLDAsW3tpbmRleDoiX2lkIixkZXNjZW5kaW5nOiExfV0pLGV4aXN0aW5nSWRzPW5ldyBTZXQocmV3YXJkUG9vbHMubWFwKHA9PnAuX2lkKSk7bW9yZVJld2FyZFBvb2xzLmZvckVhY2gobXJwPT57ZXhpc3RpbmdJZHMuaGFzKG1ycC5faWQpfHxyZXdhcmRQb29scy5wdXNoKG1ycCl9KX1pZihyZXdhcmRQb29scylmb3IobGV0IGk9MDtpPHJld2FyZFBvb2xzLmxlbmd0aDtpKz0xKXtjb25zdCByZXdhcmRQb29sPXJld2FyZFBvb2xzW2ldO3BhcmFtcy5sYXN0UHJvY2Vzc2VkUG9vbElkPXJld2FyZFBvb2wuX2lkO2NvbnN0e3N5bWJvbDpzeW1ib2wsbGFzdENsYWltRGVjYXlUaW1lc3RhbXA6bGFzdENsYWltRGVjYXlUaW1lc3RhbXAsbGFzdFJld2FyZFRpbWVzdGFtcDpsYXN0UmV3YXJkVGltZXN0YW1wLGNvbmZpZzpjb25maWd9PXJld2FyZFBvb2wse3Jld2FyZEludGVydmFsU2Vjb25kczpyZXdhcmRJbnRlcnZhbFNlY29uZHMscmV3YXJkUGVySW50ZXJ2YWw6cmV3YXJkUGVySW50ZXJ2YWwsY2FzaG91dFdpbmRvd0RheXM6Y2FzaG91dFdpbmRvd0RheXN9PWNvbmZpZyx0b2tlbj1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoInRva2VucyIsInRva2VucyIse3N5bWJvbDpzeW1ib2x9KSxyZXdhcmRJbnRlcnZhbER1cmF0aW9uTWlsbGlzPTFlMypyZXdhcmRJbnRlcnZhbFNlY29uZHMsbmV4dFJld2FyZFRpbWVzdGFtcD1sYXN0UmV3YXJkVGltZXN0YW1wK3Jld2FyZEludGVydmFsRHVyYXRpb25NaWxsaXMsbmV4dENsYWltRGVjYXlUaW1lc3RhbXA9bGFzdENsYWltRGVjYXlUaW1lc3RhbXArcmV3YXJkSW50ZXJ2YWxEdXJhdGlvbk1pbGxpcztpZihuZXh0Q2xhaW1EZWNheVRpbWVzdGFtcD49bmV4dFJld2FyZFRpbWVzdGFtcCl7Y29uc3QgcmV3YXJkVG9BZGQ9YXBpLkJpZ051bWJlcihyZXdhcmRQZXJJbnRlcnZhbCk7YXBpLkJpZ051bWJlcihyZXdhcmRUb0FkZCkuZ3QoMCkmJihhd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoInRva2VucyIsImlzc3VlVG9Db250cmFjdCIse3N5bWJvbDpyZXdhcmRQb29sLnN5bWJvbCxxdWFudGl0eTpyZXdhcmRUb0FkZCx0bzoiY29tbWVudHMiLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTohMH0pLHJld2FyZFBvb2wucmV3YXJkUG9vbD1hcGkuQmlnTnVtYmVyKHJld2FyZFBvb2wucmV3YXJkUG9vbCkucGx1cyhyZXdhcmRUb0FkZCkudG9GaXhlZCh0b2tlbi5wcmVjaXNpb24sYXBpLkJpZ051bWJlci5ST1VORF9ET1dOKSk7Y29uc3QgYWRqdXN0TnVtZXI9bmV4dFJld2FyZFRpbWVzdGFtcC1sYXN0UmV3YXJkVGltZXN0YW1wLGFkanVzdERlbm9tPTI0KigyKmNhc2hvdXRXaW5kb3dEYXlzKzEpKjM2MDAqMWUzO3Jld2FyZFBvb2wucGVuZGluZ0NsYWltcz1hcGkuQmlnTnVtYmVyKHJld2FyZFBvb2wucGVuZGluZ0NsYWltcykubWludXMoYXBpLkJpZ051bWJlcihyZXdhcmRQb29sLnBlbmRpbmdDbGFpbXMpLm11bHRpcGxpZWRCeShhZGp1c3ROdW1lcikuZGl2aWRlZEJ5KGFkanVzdERlbm9tKSkudG9GaXhlZCgxMCxhcGkuQmlnTnVtYmVyLlJPVU5EX0RPV04pLHJld2FyZFBvb2wucGVuZGluZ0NsYWltcz1hcGkuQmlnTnVtYmVyKHJld2FyZFBvb2wucGVuZGluZ0NsYWltcykucGx1cyhhd2FpdCBwb3N0Q2xhaW1zSW5JbnRlcnZhbChwYXJhbXMscmV3YXJkUG9vbCxsYXN0UmV3YXJkVGltZXN0YW1wLG5leHRSZXdhcmRUaW1lc3RhbXApKS50b0ZpeGVkKDEwLGFwaS5CaWdOdW1iZXIuUk9VTkRfRE9XTikscmV3YXJkUG9vbC5sYXN0UmV3YXJkVGltZXN0YW1wPW5leHRSZXdhcmRUaW1lc3RhbXAscmV3YXJkUG9vbC5pbnRlcnZhbFBlbmRpbmdDbGFpbXM9cmV3YXJkUG9vbC5wZW5kaW5nQ2xhaW1zLHJld2FyZFBvb2wuaW50ZXJ2YWxSZXdhcmRQb29sPXJld2FyZFBvb2wucmV3YXJkUG9vbH1hd2FpdCBjb21wdXRlUG9zdFJld2FyZHMocGFyYW1zLHJld2FyZFBvb2wsdG9rZW4sbmV4dENsYWltRGVjYXlUaW1lc3RhbXApLGF3YWl0IGFwaS5kYi51cGRhdGUoInJld2FyZFBvb2xzIixyZXdhcmRQb29sKX1hd2FpdCBhcGkuZGIudXBkYXRlKCJwYXJhbXMiLHBhcmFtcyl9YXN5bmMgZnVuY3Rpb24gZ2V0UmV3YXJkUG9vbElkcyhwYXlsb2FkKXtjb25zdHtyZXdhcmRQb29sczpyZXdhcmRQb29scyxqc29uTWV0YWRhdGE6anNvbk1ldGFkYXRhLHBhcmVudEF1dGhvcjpwYXJlbnRBdXRob3IscGFyZW50UGVybWxpbms6cGFyZW50UGVybWxpbmt9PXBheWxvYWQscGFyYW1zPWF3YWl0IGFwaS5kYi5maW5kT25lKCJwYXJhbXMiLHt9KTtpZihwYXJlbnRBdXRob3ImJnBhcmVudFBlcm1saW5rKXtjb25zdCBwYXJlbnRBdXRob3JwZXJtPWBAJHtwYXJlbnRBdXRob3J9LyR7cGFyZW50UGVybWxpbmt9YCxwYXJlbnRQb3N0TWV0YWRhdGE9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInBvc3RNZXRhZGF0YSIse2F1dGhvcnBlcm06cGFyZW50QXV0aG9ycGVybX0pO2lmKHBhcmVudFBvc3RNZXRhZGF0YSlyZXR1cm4gcGFyZW50UG9zdE1ldGFkYXRhLnJld2FyZFBvb2xJZHM7Y29uc3QgcGFyZW50UG9zdHM9YXdhaXQgYXBpLmRiLmZpbmQoInBvc3RzIix7YXV0aG9ycGVybTpwYXJlbnRBdXRob3JwZXJtfSk7cmV0dXJuIHBhcmVudFBvc3RzJiZwYXJlbnRQb3N0cy5sZW5ndGg+MD9wYXJlbnRQb3N0cy5tYXAocD0+cC5yZXdhcmRQb29sSWQpOltdfWlmKGpzb25NZXRhZGF0YSYmanNvbk1ldGFkYXRhLnRhZ3MmJkFycmF5LmlzQXJyYXkoanNvbk1ldGFkYXRhLnRhZ3MpJiZqc29uTWV0YWRhdGEudGFncy5ldmVyeSh0PT4ic3RyaW5nIj09dHlwZW9mIHQpKXtjb25zdCBzZWFyY2hUYWdzPXBhcmVudFBlcm1saW5rP2pzb25NZXRhZGF0YS50YWdzLmNvbmNhdChbcGFyZW50UGVybWxpbmtdKTpqc29uTWV0YWRhdGEudGFncyx0YWdSZXdhcmRQb29scz1hd2FpdCBhcGkuZGIuZmluZCgicmV3YXJkUG9vbHMiLHsiY29uZmlnLnRhZ3MiOnskaW46c2VhcmNoVGFnc319LHBhcmFtcy5tYXhQb29sc1BlclBvc3QsMCxbe2luZGV4OiJfaWQiLGRlc2NlbmRpbmc6ITF9XSk7aWYodGFnUmV3YXJkUG9vbHMmJnRhZ1Jld2FyZFBvb2xzLmxlbmd0aD4wKXJldHVybiB0YWdSZXdhcmRQb29scy5tYXAocj0+ci5faWQpfXJldHVybiByZXdhcmRQb29scyYmQXJyYXkuaXNBcnJheShyZXdhcmRQb29scykmJnJld2FyZFBvb2xzLmxlbmd0aD4wP3Jld2FyZFBvb2xzLnNsaWNlKDAscGFyYW1zLm1heFBvb2xzUGVyUG9zdCk6W119YXN5bmMgZnVuY3Rpb24gcHJvY2Vzc1ZvdGUocG9zdCx2b3Rlcix3ZWlnaHQsdGltZXN0YW1wKXtjb25zdHtyZXdhcmRQb29sSWQ6cmV3YXJkUG9vbElkLHN5bWJvbDpzeW1ib2wsYXV0aG9ycGVybTphdXRob3JwZXJtLGNhc2hvdXRUaW1lOmNhc2hvdXRUaW1lfT1wb3N0O2lmKGNhc2hvdXRUaW1lPHRpbWVzdGFtcClyZXR1cm47Y29uc3QgcmV3YXJkUG9vbD1hd2FpdCBhcGkuZGIuZmluZE9uZSgicmV3YXJkUG9vbHMiLHtfaWQ6cmV3YXJkUG9vbElkfSk7aWYoIXJld2FyZFBvb2x8fCFyZXdhcmRQb29sLmFjdGl2ZSlyZXR1cm47bGV0IHZvdGluZ1Bvd2VyPWF3YWl0IGFwaS5kYi5maW5kT25lKCJ2b3RpbmdQb3dlciIse3Jld2FyZFBvb2xJZDpyZXdhcmRQb29sSWQsYWNjb3VudDp2b3Rlcn0pO3ZvdGluZ1Bvd2VyPyh2b3RpbmdQb3dlci52b3RpbmdQb3dlcis9MWU0Kih0aW1lc3RhbXAtdm90aW5nUG93ZXIubGFzdFZvdGVUaW1lc3RhbXApLygyNCpyZXdhcmRQb29sLmNvbmZpZy52b3RlUmVnZW5lcmF0aW9uRGF5cyozNjAwKjFlMyksdm90aW5nUG93ZXIudm90aW5nUG93ZXI9TWF0aC5mbG9vcih2b3RpbmdQb3dlci52b3RpbmdQb3dlciksdm90aW5nUG93ZXIudm90aW5nUG93ZXI9TWF0aC5taW4odm90aW5nUG93ZXIudm90aW5nUG93ZXIsMWU0KSx2b3RpbmdQb3dlci5kb3dudm90aW5nUG93ZXIrPTFlNCoodGltZXN0YW1wLXZvdGluZ1Bvd2VyLmxhc3RWb3RlVGltZXN0YW1wKS8oMjQqcmV3YXJkUG9vbC5jb25maWcuZG93bnZvdGVSZWdlbmVyYXRpb25EYXlzKjM2MDAqMWUzKSx2b3RpbmdQb3dlci5kb3dudm90aW5nUG93ZXI9TWF0aC5mbG9vcih2b3RpbmdQb3dlci5kb3dudm90aW5nUG93ZXIpLHZvdGluZ1Bvd2VyLmRvd252b3RpbmdQb3dlcj1NYXRoLm1pbih2b3RpbmdQb3dlci5kb3dudm90aW5nUG93ZXIsMWU0KSx2b3RpbmdQb3dlci5sYXN0Vm90ZVRpbWVzdGFtcD10aW1lc3RhbXApOih2b3RpbmdQb3dlcj17cmV3YXJkUG9vbElkOnJld2FyZFBvb2xJZCxhY2NvdW50OnZvdGVyLGxhc3RWb3RlVGltZXN0YW1wOnRpbWVzdGFtcCx2b3RpbmdQb3dlcjoxZTQsZG93bnZvdGluZ1Bvd2VyOjFlNH0sdm90aW5nUG93ZXI9YXdhaXQgYXBpLmRiLmluc2VydCgidm90aW5nUG93ZXIiLHZvdGluZ1Bvd2VyKSk7Y29uc3Qgdm90ZXJUb2tlbkJhbGFuY2U9YXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJ0b2tlbnMiLCJiYWxhbmNlcyIse3N5bWJvbDpzeW1ib2wsYWNjb3VudDp2b3Rlcn0pO2xldCBzdGFrZT12b3RlclRva2VuQmFsYW5jZT92b3RlclRva2VuQmFsYW5jZS5zdGFrZToiMCI7dm90ZXJUb2tlbkJhbGFuY2UmJnZvdGVyVG9rZW5CYWxhbmNlLmRlbGVnYXRpb25zSW4mJmFwaS5CaWdOdW1iZXIodm90ZXJUb2tlbkJhbGFuY2UuZGVsZWdhdGlvbnNJbikuaXNGaW5pdGUoKSYmKHN0YWtlPWFwaS5CaWdOdW1iZXIoc3Rha2UpLnBsdXModm90ZXJUb2tlbkJhbGFuY2UuZGVsZWdhdGlvbnNJbikpO2xldCB2b3RlUnNoYXJlcz0iMCIsdXBkYXRlZFBvc3RSc2hhcmVzPSIwIix1c2VkUG93ZXI9MCx1c2VkRG93bnZvdGVQb3dlcj0wLGN1cmF0aW9uV2VpZ2h0PSIwIjtpZih3ZWlnaHQ+MCl7dm90ZVJzaGFyZXM9YXBpLkJpZ051bWJlcihzdGFrZSkubXVsdGlwbGllZEJ5KHdlaWdodCkubXVsdGlwbGllZEJ5KHZvdGluZ1Bvd2VyLnZvdGluZ1Bvd2VyKS5kaXZpZGVkQnkoMWU0KS5kaXZpZGVkQnkoMWU0KS50b0ZpeGVkKDEwLGFwaS5CaWdOdW1iZXIuUk9VTkRfRE9XTiksdXNlZFBvd2VyPU1hdGguZmxvb3Iodm90aW5nUG93ZXIudm90aW5nUG93ZXIqTWF0aC5hYnMod2VpZ2h0KSo2MCo2MCoyNC8xZTQpO2NvbnN0IHVzZWRQb3dlckRlbm9tPU1hdGguZmxvb3IoODY0ZTYvcmV3YXJkUG9vbC5jb25maWcudm90ZVBvd2VyQ29uc3VtcHRpb24pO3VzZWRQb3dlcj1NYXRoLmZsb29yKCh1c2VkUG93ZXIrdXNlZFBvd2VyRGVub20tMSkvdXNlZFBvd2VyRGVub20pLHZvdGluZ1Bvd2VyLnZvdGluZ1Bvd2VyPU1hdGgubWF4KDAsTWF0aC5mbG9vcih2b3RpbmdQb3dlci52b3RpbmdQb3dlci11c2VkUG93ZXIpKSxjdXJhdGlvbldlaWdodD1hcGkuQmlnTnVtYmVyKGNhbGN1bGF0ZUN1cmF0aW9uV2VpZ2h0UnNoYXJlcyhyZXdhcmRQb29sLGFwaS5CaWdOdW1iZXIodm90ZVJzaGFyZXMpLnBsdXMocG9zdC52b3RlUG9zaXRpdmVSc2hhcmVTdW0pKSkubWludXMoY2FsY3VsYXRlQ3VyYXRpb25XZWlnaHRSc2hhcmVzKHJld2FyZFBvb2wscG9zdC52b3RlUG9zaXRpdmVSc2hhcmVTdW0pKS50b0ZpeGVkKDEwLGFwaS5CaWdOdW1iZXIuUk9VTkRfRE9XTil9ZWxzZSBpZih3ZWlnaHQ8MCl7dm90ZVJzaGFyZXM9YXBpLkJpZ051bWJlcihzdGFrZSkubXVsdGlwbGllZEJ5KHdlaWdodCkubXVsdGlwbGllZEJ5KHZvdGluZ1Bvd2VyLmRvd252b3RpbmdQb3dlcikuZGl2aWRlZEJ5KDFlNCkuZGl2aWRlZEJ5KDFlNCkudG9GaXhlZCgxMCxhcGkuQmlnTnVtYmVyLlJPVU5EX0RPV04pLHVzZWREb3dudm90ZVBvd2VyPU1hdGguZmxvb3Iodm90aW5nUG93ZXIuZG93bnZvdGluZ1Bvd2VyKk1hdGguYWJzKHdlaWdodCkqNjAqNjAqMjQvMWU0KTtjb25zdCB1c2VkRG93bnZvdGVQb3dlckRlbm9tPU1hdGguZmxvb3IoODY0ZTYvcmV3YXJkUG9vbC5jb25maWcuZG93bnZvdGVQb3dlckNvbnN1bXB0aW9uKTt1c2VkRG93bnZvdGVQb3dlcj1NYXRoLmZsb29yKCh1c2VkRG93bnZvdGVQb3dlcit1c2VkRG93bnZvdGVQb3dlckRlbm9tLTEpL3VzZWREb3dudm90ZVBvd2VyRGVub20pLHZvdGluZ1Bvd2VyLmRvd252b3RpbmdQb3dlcj1NYXRoLm1heCgwLE1hdGguZmxvb3Iodm90aW5nUG93ZXIuZG93bnZvdGluZ1Bvd2VyLXVzZWREb3dudm90ZVBvd2VyKSl9dm90aW5nUG93ZXIubXV0ZSYmKHZvdGVSc2hhcmVzPSIwIixjdXJhdGlvbldlaWdodD0iMCIpLGF3YWl0IGFwaS5kYi51cGRhdGUoInZvdGluZ1Bvd2VyIix2b3RpbmdQb3dlcik7bGV0IHZvdGU9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInZvdGVzIix7cmV3YXJkUG9vbElkOnJld2FyZFBvb2xJZCxhdXRob3JwZXJtOmF1dGhvcnBlcm0sdm90ZXI6dm90ZXJ9KTtpZih2b3RlKXt2b3RlLnRpbWVzdGFtcD10aW1lc3RhbXAsdm90ZS53ZWlnaHQ9d2VpZ2h0LHZvdGUuY3VyYXRpb25XZWlnaHQ9IjAiO2NvbnN0IG9sZFZvdGVSc2hhcmVzPXZvdGUucnNoYXJlczt2b3RlLnJzaGFyZXM9dm90ZVJzaGFyZXMsdXBkYXRlZFBvc3RSc2hhcmVzPWFwaS5CaWdOdW1iZXIodm90ZVJzaGFyZXMpLm1pbnVzKG9sZFZvdGVSc2hhcmVzKS50b0ZpeGVkKDEwLGFwaS5CaWdOdW1iZXIuUk9VTkRfRE9XTiksYXdhaXQgYXBpLmRiLnVwZGF0ZSgidm90ZXMiLHZvdGUpO2NvbnN0IHZvdGVMb2c9e3Jld2FyZFBvb2xJZDpyZXdhcmRQb29sSWQsc3ltYm9sOnJld2FyZFBvb2wuc3ltYm9sLHJzaGFyZXM6dm90ZVJzaGFyZXN9O3ZvdGluZ1Bvd2VyLm11dGUmJih2b3RlTG9nLm11dGU9ITApLGFwaS5lbWl0KCJ1cGRhdGVWb3RlIix2b3RlTG9nKX1lbHNle3ZvdGU9e3Jld2FyZFBvb2xJZDpyZXdhcmRQb29sSWQsc3ltYm9sOnN5bWJvbCxhdXRob3JwZXJtOmF1dGhvcnBlcm0sd2VpZ2h0OndlaWdodCxyc2hhcmVzOnZvdGVSc2hhcmVzLGN1cmF0aW9uV2VpZ2h0OmN1cmF0aW9uV2VpZ2h0LHRpbWVzdGFtcDp0aW1lc3RhbXAsdm90ZXI6dm90ZXJ9LHVwZGF0ZWRQb3N0UnNoYXJlcz12b3RlUnNoYXJlcyxhd2FpdCBhcGkuZGIuaW5zZXJ0KCJ2b3RlcyIsdm90ZSk7Y29uc3Qgdm90ZUxvZz17cmV3YXJkUG9vbElkOnJld2FyZFBvb2xJZCxzeW1ib2w6cmV3YXJkUG9vbC5zeW1ib2wscnNoYXJlczp2b3RlUnNoYXJlc307dm90aW5nUG93ZXIubXV0ZSYmKHZvdGVMb2cubXV0ZT0hMCksYXBpLmVtaXQoIm5ld1ZvdGUiLHZvdGVMb2cpfWNvbnN0IG9sZFBvc3RDbGFpbXM9Y2FsY3VsYXRlV2VpZ2h0UnNoYXJlcyhyZXdhcmRQb29sLHBvc3Qudm90ZVJzaGFyZVN1bSk7aWYocG9zdC52b3RlUnNoYXJlU3VtPWFwaS5CaWdOdW1iZXIocG9zdC52b3RlUnNoYXJlU3VtKS5wbHVzKHVwZGF0ZWRQb3N0UnNoYXJlcykudG9GaXhlZCgxMCxhcGkuQmlnTnVtYmVyLlJPVU5EX0RPV04pLGFwaS5CaWdOdW1iZXIodXBkYXRlZFBvc3RSc2hhcmVzKS5ndCgwKSYmKHBvc3Qudm90ZVBvc2l0aXZlUnNoYXJlU3VtPWFwaS5CaWdOdW1iZXIocG9zdC52b3RlUG9zaXRpdmVSc2hhcmVTdW0pLnBsdXModXBkYXRlZFBvc3RSc2hhcmVzKS50b0ZpeGVkKDEwLGFwaS5CaWdOdW1iZXIuUk9VTkRfRE9XTiksdGltZXN0YW1wPHJld2FyZFBvb2wuY3JlYXRlZFRpbWVzdGFtcCsyNCooMipyZXdhcmRQb29sLmNvbmZpZy5jYXNob3V0V2luZG93RGF5cysxKSozNjAwKjFlMykpe2NvbnN0IG5ld1Bvc3RDbGFpbXM9Y2FsY3VsYXRlV2VpZ2h0UnNoYXJlcyhyZXdhcmRQb29sLHBvc3Qudm90ZVJzaGFyZVN1bSk7cmV3YXJkUG9vbC5wZW5kaW5nQ2xhaW1zPWFwaS5CaWdOdW1iZXIocmV3YXJkUG9vbC5wZW5kaW5nQ2xhaW1zKS5wbHVzKG5ld1Bvc3RDbGFpbXMpLm1pbnVzKG9sZFBvc3RDbGFpbXMpLnRvRml4ZWQoMTAsYXBpLkJpZ051bWJlci5ST1VORF9ET1dOKSxhd2FpdCBhcGkuZGIudXBkYXRlKCJyZXdhcmRQb29scyIscmV3YXJkUG9vbCl9YXdhaXQgYXBpLmRiLnVwZGF0ZSgicG9zdHMiLHBvc3QpfWFjdGlvbnMuY3JlYXRlU1NDPWFzeW5jKCk9PntpZighMT09PWF3YWl0IGFwaS5kYi50YWJsZUV4aXN0cygicmV3YXJkUG9vbHMiKSl7YXdhaXQgYXBpLmRiLmNyZWF0ZVRhYmxlKCJwYXJhbXMiKSxhd2FpdCBhcGkuZGIuY3JlYXRlVGFibGUoInJld2FyZFBvb2xzIixbImNvbmZpZy50YWdzIiwibGFzdENsYWltRGVjYXlUaW1lc3RhbXAiXSksYXdhaXQgYXBpLmRiLmNyZWF0ZVRhYmxlKCJwb3N0cyIsWyJhdXRob3JwZXJtIix7bmFtZToiYnlDYXNob3V0VGltZSIsaW5kZXg6e3Jld2FyZFBvb2xJZDoxLGNhc2hvdXRUaW1lOjF9fV0se3ByaW1hcnlLZXk6WyJhdXRob3JwZXJtIiwicmV3YXJkUG9vbElkIl19KSxhd2FpdCBhcGkuZGIuY3JlYXRlVGFibGUoInBvc3RNZXRhZGF0YSIsW10se3ByaW1hcnlLZXk6WyJhdXRob3JwZXJtIl19KSxhd2FpdCBhcGkuZGIuY3JlYXRlVGFibGUoInZvdGVzIixbe25hbWU6ImJ5VGltZXN0YW1wIixpbmRleDp7cmV3YXJkUG9vbElkOjEsYXV0aG9ycGVybToxLHRpbWVzdGFtcDoxfX1dLHtwcmltYXJ5S2V5OlsicmV3YXJkUG9vbElkIiwiYXV0aG9ycGVybSIsInZvdGVyIl19KSxhd2FpdCBhcGkuZGIuY3JlYXRlVGFibGUoInZvdGluZ1Bvd2VyIixbXSx7cHJpbWFyeUtleTpbInJld2FyZFBvb2xJZCIsImFjY291bnQiXX0pO2NvbnN0IHBhcmFtcz17c2V0dXBGZWU6IjEwMDAiLHVwZGF0ZUZlZToiMjAiLG1heFBvb2xzUGVyUG9zdDoyMCxtYXhUYWdzUGVyUG9vbDo1LG1haW50ZW5hbmNlVG9rZW5zUGVyQmxvY2s6MixsYXN0TWFpbnRlbmFuY2VCbG9jazphcGkuYmxvY2tOdW1iZXIsbWF4UG9zdHNQcm9jZXNzZWRQZXJSb3VuZDoyMCx2b3RlUXVlcnlMaW1pdDoxMDAsbWF4Vm90ZXNQcm9jZXNzZWRQZXJSb3VuZDoxMDAsbGFzdFByb2Nlc3NlZFBvb2xJZDowfTthd2FpdCBhcGkuZGIuaW5zZXJ0KCJwYXJhbXMiLHBhcmFtcyl9fSxhY3Rpb25zLnVwZGF0ZVBhcmFtcz1hc3luYyBwYXlsb2FkPT57aWYoYXBpLnNlbmRlciE9PWFwaS5vd25lcilyZXR1cm47Y29uc3R7c2V0dXBGZWU6c2V0dXBGZWUsdXBkYXRlRmVlOnVwZGF0ZUZlZSxtYWludGVuYW5jZVRva2Vuc1BlckJsb2NrOm1haW50ZW5hbmNlVG9rZW5zUGVyQmxvY2ssbWF4UG9zdHNQcm9jZXNzZWRQZXJSb3VuZDptYXhQb3N0c1Byb2Nlc3NlZFBlclJvdW5kLG1heFZvdGVzUHJvY2Vzc2VkUGVyUm91bmQ6bWF4Vm90ZXNQcm9jZXNzZWRQZXJSb3VuZCx2b3RlUXVlcnlMaW1pdDp2b3RlUXVlcnlMaW1pdH09cGF5bG9hZCxwYXJhbXM9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInBhcmFtcyIse30pO2lmKHNldHVwRmVlKXtpZighYXBpLmFzc2VydCgic3RyaW5nIj09dHlwZW9mIHNldHVwRmVlJiYhYXBpLkJpZ051bWJlcihzZXR1cEZlZSkuaXNOYU4oKSYmYXBpLkJpZ051bWJlcihzZXR1cEZlZSkuZ3RlKDApLCJpbnZhbGlkIHNldHVwRmVlIikpcmV0dXJuO3BhcmFtcy5zZXR1cEZlZT1zZXR1cEZlZX1pZih1cGRhdGVGZWUpe2lmKCFhcGkuYXNzZXJ0KCJzdHJpbmciPT10eXBlb2YgdXBkYXRlRmVlJiYhYXBpLkJpZ051bWJlcih1cGRhdGVGZWUpLmlzTmFOKCkmJmFwaS5CaWdOdW1iZXIodXBkYXRlRmVlKS5ndGUoMCksImludmFsaWQgdXBkYXRlRmVlIikpcmV0dXJuO3BhcmFtcy51cGRhdGVGZWU9dXBkYXRlRmVlfWlmKG1haW50ZW5hbmNlVG9rZW5zUGVyQmxvY2spe2lmKCFhcGkuYXNzZXJ0KE51bWJlci5pc0ludGVnZXIobWFpbnRlbmFuY2VUb2tlbnNQZXJCbG9jaykmJm1haW50ZW5hbmNlVG9rZW5zUGVyQmxvY2s+PTEsImludmFsaWQgbWFpbnRlbmFuY2VUb2tlbnNQZXJCbG9jayIpKXJldHVybjtwYXJhbXMubWFpbnRlbmFuY2VUb2tlbnNQZXJCbG9jaz1tYWludGVuYW5jZVRva2Vuc1BlckJsb2NrfWlmKG1heFBvc3RzUHJvY2Vzc2VkUGVyUm91bmQpe2lmKCFhcGkuYXNzZXJ0KE51bWJlci5pc0ludGVnZXIobWF4UG9zdHNQcm9jZXNzZWRQZXJSb3VuZCkmJm1heFBvc3RzUHJvY2Vzc2VkUGVyUm91bmQ+PTEsImludmFsaWQgbWF4UG9zdHNQcm9jZXNzZWRQZXJSb3VuZCIpKXJldHVybjtwYXJhbXMubWF4UG9zdHNQcm9jZXNzZWRQZXJSb3VuZD1tYXhQb3N0c1Byb2Nlc3NlZFBlclJvdW5kfWlmKG1heFZvdGVzUHJvY2Vzc2VkUGVyUm91bmQpe2lmKCFhcGkuYXNzZXJ0KE51bWJlci5pc0ludGVnZXIobWF4Vm90ZXNQcm9jZXNzZWRQZXJSb3VuZCkmJm1heFZvdGVzUHJvY2Vzc2VkUGVyUm91bmQ+PTEsImludmFsaWQgbWF4Vm90ZXNQcm9jZXNzZWRQZXJSb3VuZCIpKXJldHVybjtwYXJhbXMubWF4Vm90ZXNQcm9jZXNzZWRQZXJSb3VuZD1tYXhWb3Rlc1Byb2Nlc3NlZFBlclJvdW5kfWlmKHZvdGVRdWVyeUxpbWl0KXtpZighYXBpLmFzc2VydChOdW1iZXIuaXNJbnRlZ2VyKHZvdGVRdWVyeUxpbWl0KSYmdm90ZVF1ZXJ5TGltaXQ+PTEsImludmFsaWQgdm90ZVF1ZXJ5TGltaXQiKSlyZXR1cm47cGFyYW1zLnZvdGVRdWVyeUxpbWl0PXZvdGVRdWVyeUxpbWl0fWF3YWl0IGFwaS5kYi51cGRhdGUoInBhcmFtcyIscGFyYW1zKX0sYWN0aW9ucy5jcmVhdGVSZXdhcmRQb29sPWFzeW5jIHBheWxvYWQ9Pntjb25zdHtzeW1ib2w6c3ltYm9sLGNvbmZpZzpjb25maWcsaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX09cGF5bG9hZDtpZighYXBpLmFzc2VydCghMD09PWlzU2lnbmVkV2l0aEFjdGl2ZUtleSwib3BlcmF0aW9uIG11c3QgYmUgc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5IikpcmV0dXJuO2NvbnN0IHBhcmFtcz1hd2FpdCBhcGkuZGIuZmluZE9uZSgicGFyYW1zIix7fSkse3NldHVwRmVlOnNldHVwRmVlLG1heFRhZ3NQZXJQb29sOm1heFRhZ3NQZXJQb29sfT1wYXJhbXMsdXRpbGl0eVRva2VuQmFsYW5jZT1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoInRva2VucyIsImJhbGFuY2VzIix7YWNjb3VudDphcGkuc2VuZGVyLHN5bWJvbDoiQkVFIn0pLGF1dGhvcml6ZWRDcmVhdGlvbj0hKCFhcGkuQmlnTnVtYmVyKHNldHVwRmVlKS5sdGUoMCkmJmFwaS5zZW5kZXIhPT1hcGkub3duZXIpfHx1dGlsaXR5VG9rZW5CYWxhbmNlJiZhcGkuQmlnTnVtYmVyKHV0aWxpdHlUb2tlbkJhbGFuY2UuYmFsYW5jZSkuZ3RlKHNldHVwRmVlKTtpZighYXBpLmFzc2VydChhdXRob3JpemVkQ3JlYXRpb24sInlvdSBtdXN0IGhhdmUgZW5vdWdoIHRva2VucyB0byBjb3ZlciB0aGUgY3JlYXRpb24gZmVlIikpcmV0dXJuO2NvbnN0IHRva2VuPWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgidG9rZW5zIiwidG9rZW5zIix7c3ltYm9sOnN5bWJvbH0pO2lmKCFhcGkuYXNzZXJ0KHRva2VuLCJ0b2tlbiBub3QgZm91bmQiKSlyZXR1cm47aWYoIWFwaS5hc3NlcnQoY29uZmlnJiYib2JqZWN0Ij09dHlwZW9mIGNvbmZpZywiY29uZmlnIGludmFsaWQiKSlyZXR1cm47Y29uc3R7cG9zdFJld2FyZEN1cnZlOnBvc3RSZXdhcmRDdXJ2ZSxwb3N0UmV3YXJkQ3VydmVQYXJhbWV0ZXI6cG9zdFJld2FyZEN1cnZlUGFyYW1ldGVyLGN1cmF0aW9uUmV3YXJkQ3VydmU6Y3VyYXRpb25SZXdhcmRDdXJ2ZSxjdXJhdGlvblJld2FyZEN1cnZlUGFyYW1ldGVyOmN1cmF0aW9uUmV3YXJkQ3VydmVQYXJhbWV0ZXIsY3VyYXRpb25SZXdhcmRQZXJjZW50YWdlOmN1cmF0aW9uUmV3YXJkUGVyY2VudGFnZSxjYXNob3V0V2luZG93RGF5czpjYXNob3V0V2luZG93RGF5cyxyZXdhcmRQZXJJbnRlcnZhbDpyZXdhcmRQZXJJbnRlcnZhbCxyZXdhcmRJbnRlcnZhbFNlY29uZHM6cmV3YXJkSW50ZXJ2YWxTZWNvbmRzLHZvdGVSZWdlbmVyYXRpb25EYXlzOnZvdGVSZWdlbmVyYXRpb25EYXlzLGRvd252b3RlUmVnZW5lcmF0aW9uRGF5czpkb3dudm90ZVJlZ2VuZXJhdGlvbkRheXMsc3Rha2VkUmV3YXJkUGVyY2VudGFnZTpzdGFrZWRSZXdhcmRQZXJjZW50YWdlLHZvdGVQb3dlckNvbnN1bXB0aW9uOnZvdGVQb3dlckNvbnN1bXB0aW9uLGRvd252b3RlUG93ZXJDb25zdW1wdGlvbjpkb3dudm90ZVBvd2VyQ29uc3VtcHRpb24sdGFnczp0YWdzfT1jb25maWc7aWYoIWFwaS5hc3NlcnQocG9zdFJld2FyZEN1cnZlJiYicG93ZXIiPT09cG9zdFJld2FyZEN1cnZlLCJwb3N0UmV3YXJkQ3VydmUgc2hvdWxkIGJlIG9uZSBvZjogW3Bvd2VyXSIpKXJldHVybjtjb25zdCBwb3N0RXhwb25lbnQ9YXBpLkJpZ051bWJlcihwb3N0UmV3YXJkQ3VydmVQYXJhbWV0ZXIpO2lmKCFhcGkuYXNzZXJ0KCJzdHJpbmciPT10eXBlb2YgcG9zdFJld2FyZEN1cnZlUGFyYW1ldGVyJiZwb3N0RXhwb25lbnQuaXNGaW5pdGUoKSYmcG9zdEV4cG9uZW50Lmd0ZSgiMSIpJiZwb3N0RXhwb25lbnQubHRlKCIyIikmJnBvc3RFeHBvbmVudC5kcCgpPD0yLCdwb3N0UmV3YXJkQ3VydmVQYXJhbWV0ZXIgc2hvdWxkIGJlIGJldHdlZW4gIjEiIGFuZCAiMiIgd2l0aCBwcmVjaXNpb24gYXQgbW9zdCAyJykpcmV0dXJuO2lmKCFhcGkuYXNzZXJ0KGN1cmF0aW9uUmV3YXJkQ3VydmUmJiJwb3dlciI9PT1jdXJhdGlvblJld2FyZEN1cnZlLCJjdXJhdGlvblJld2FyZEN1cnZlIHNob3VsZCBiZSBvbmUgb2Y6IFtwb3dlcl0iKSlyZXR1cm47Y29uc3QgY3VyYXRpb25FeHBvbmVudD1hcGkuQmlnTnVtYmVyKGN1cmF0aW9uUmV3YXJkQ3VydmVQYXJhbWV0ZXIpO2lmKCFhcGkuYXNzZXJ0KCJzdHJpbmciPT10eXBlb2YgY3VyYXRpb25SZXdhcmRDdXJ2ZVBhcmFtZXRlciYmY3VyYXRpb25FeHBvbmVudC5pc0Zpbml0ZSgpJiZjdXJhdGlvbkV4cG9uZW50Lmd0ZSgiMC41IikmJmN1cmF0aW9uRXhwb25lbnQubHRlKCIxIikmJmN1cmF0aW9uRXhwb25lbnQuZHAoKTw9MiwnY3VyYXRpb25SZXdhcmRDdXJ2ZVBhcmFtZXRlciBjYW4gb25seSBiZSBiZXR3ZWVuICIwLjUiIGFuZCAiMSIgd2l0aCBwcmVjaXNpb24gYXQgbW9zdCAyJykpcmV0dXJuO2lmKCFhcGkuYXNzZXJ0KE51bWJlci5pc0ludGVnZXIoY3VyYXRpb25SZXdhcmRQZXJjZW50YWdlKSYmY3VyYXRpb25SZXdhcmRQZXJjZW50YWdlPj0wJiZjdXJhdGlvblJld2FyZFBlcmNlbnRhZ2U8PTEwMCwiY3VyYXRpb25SZXdhcmRQZXJjZW50YWdlIHNob3VsZCBiZSBhbiBpbnRlZ2VyIGJldHdlZW4gMCBhbmQgMTAwIikpcmV0dXJuO2lmKCFhcGkuYXNzZXJ0KGNhc2hvdXRXaW5kb3dEYXlzJiZOdW1iZXIuaXNJbnRlZ2VyKGNhc2hvdXRXaW5kb3dEYXlzKSYmY2FzaG91dFdpbmRvd0RheXM+PTEmJmNhc2hvdXRXaW5kb3dEYXlzPD0zMCwiY2FzaG91dFdpbmRvd0RheXMgc2hvdWxkIGJlIGFuIGludGVnZXIgYmV0d2VlbiAxIGFuZCAzMCIpKXJldHVybjtjb25zdCBwYXJzZWRSZXdhcmRQZXJJbnRlcnZhbD1hcGkuQmlnTnVtYmVyKHJld2FyZFBlckludGVydmFsKTtpZighYXBpLmFzc2VydCgic3RyaW5nIj09dHlwZW9mIHJld2FyZFBlckludGVydmFsJiZwYXJzZWRSZXdhcmRQZXJJbnRlcnZhbC5pc0Zpbml0ZSgpJiZwYXJzZWRSZXdhcmRQZXJJbnRlcnZhbC5ndCgwKSwicmV3YXJkUGVySW50ZXJ2YWwgaW52YWxpZCIpfHwhYXBpLmFzc2VydChwYXJzZWRSZXdhcmRQZXJJbnRlcnZhbC5kcCgpPD10b2tlbi5wcmVjaXNpb24sInRva2VuIHByZWNpc2lvbiBtaXNtYXRjaCBmb3IgcmV3YXJkUGVySW50ZXJ2YWwiKSlyZXR1cm47aWYoIWFwaS5hc3NlcnQocmV3YXJkSW50ZXJ2YWxTZWNvbmRzJiZOdW1iZXIuaXNJbnRlZ2VyKHJld2FyZEludGVydmFsU2Vjb25kcykmJnJld2FyZEludGVydmFsU2Vjb25kcz49MyYmcmV3YXJkSW50ZXJ2YWxTZWNvbmRzPD04NjQwMCYmcmV3YXJkSW50ZXJ2YWxTZWNvbmRzJTM9PTAsInJld2FyZEludGVydmFsU2Vjb25kcyBzaG91bGQgYmUgYW4gaW50ZWdlciBiZXR3ZWVuIDMgYW5kIDg2NDAwLCBhbmQgZGl2aXNpYmxlIGJ5IDMiKSlyZXR1cm47aWYoIWFwaS5hc3NlcnQodm90ZVJlZ2VuZXJhdGlvbkRheXMmJk51bWJlci5pc0ludGVnZXIodm90ZVJlZ2VuZXJhdGlvbkRheXMpJiZ2b3RlUmVnZW5lcmF0aW9uRGF5cz49MSYmdm90ZVJlZ2VuZXJhdGlvbkRheXM8PTMwLCJ2b3RlUmVnZW5lcmF0aW9uRGF5cyBzaG91bGQgYmUgYW4gaW50ZWdlciBiZXR3ZWVuIDEgYW5kIDMwIikpcmV0dXJuO2lmKCFhcGkuYXNzZXJ0KGRvd252b3RlUmVnZW5lcmF0aW9uRGF5cyYmTnVtYmVyLmlzSW50ZWdlcihkb3dudm90ZVJlZ2VuZXJhdGlvbkRheXMpJiZkb3dudm90ZVJlZ2VuZXJhdGlvbkRheXM+PTEmJmRvd252b3RlUmVnZW5lcmF0aW9uRGF5czw9MzAsImRvd252b3RlUmVnZW5lcmF0aW9uRGF5cyBzaG91bGQgYmUgYW4gaW50ZWdlciBiZXR3ZWVuIDEgYW5kIDMwIikpcmV0dXJuO2lmKCFhcGkuYXNzZXJ0KE51bWJlci5pc0ludGVnZXIoc3Rha2VkUmV3YXJkUGVyY2VudGFnZSkmJnN0YWtlZFJld2FyZFBlcmNlbnRhZ2U+PTAmJnN0YWtlZFJld2FyZFBlcmNlbnRhZ2U8PTEwMCwic3Rha2VkUmV3YXJkUGVyY2VudGFnZSBzaG91bGQgYmUgYW4gaW50ZWdlciBiZXR3ZWVuIDAgYW5kIDEwMCIpKXJldHVybjtpZighYXBpLmFzc2VydCh2b3RlUG93ZXJDb25zdW1wdGlvbiYmTnVtYmVyLmlzSW50ZWdlcih2b3RlUG93ZXJDb25zdW1wdGlvbikmJnZvdGVQb3dlckNvbnN1bXB0aW9uPj0xJiZ2b3RlUG93ZXJDb25zdW1wdGlvbjw9MWU0LCJ2b3RlUG93ZXJDb25zdW1wdGlvbiBzaG91bGQgYmUgYW4gaW50ZWdlciBiZXR3ZWVuIDEgYW5kIDEwMDAwIikpcmV0dXJuO2lmKCFhcGkuYXNzZXJ0KGRvd252b3RlUG93ZXJDb25zdW1wdGlvbiYmTnVtYmVyLmlzSW50ZWdlcihkb3dudm90ZVBvd2VyQ29uc3VtcHRpb24pJiZkb3dudm90ZVBvd2VyQ29uc3VtcHRpb24+PTEmJmRvd252b3RlUG93ZXJDb25zdW1wdGlvbjw9MWU0LCJkb3dudm90ZVBvd2VyQ29uc3VtcHRpb24gc2hvdWxkIGJlIGFuIGludGVnZXIgYmV0d2VlbiAxIGFuZCAxMDAwMCIpKXJldHVybjtpZighYXBpLmFzc2VydChBcnJheS5pc0FycmF5KHRhZ3MpJiZ0YWdzLmxlbmd0aD49MSYmdGFncy5sZW5ndGg8PW1heFRhZ3NQZXJQb29sJiZ0YWdzLmV2ZXJ5KHQ9PiJzdHJpbmciPT10eXBlb2YgdCksInRhZ3Mgc2hvdWxkIGJlIGEgbm9uLWVtcHR5IGFycmF5IG9mIHN0cmluZ3Mgb2YgbGVuZ3RoIGF0IG1vc3QgIittYXhUYWdzUGVyUG9vbCkpcmV0dXJuO2lmKCFhcGkuYXNzZXJ0KGFwaS5zZW5kZXI9PT10b2tlbi5pc3N1ZXJ8fGFwaS5zZW5kZXI9PT1hcGkub3duZXImJiJCRUUiPT09dG9rZW4uc3ltYm9sLCJtdXN0IGJlIGlzc3VlciBvZiB0b2tlbiIpKXJldHVybjtpZighYXBpLmFzc2VydCh0b2tlbi5zdGFraW5nRW5hYmxlZCwidG9rZW4gbXVzdCBoYXZlIHN0YWtpbmcgZW5hYmxlZCIpKXJldHVybjtjb25zdCBleGlzdGluZ1Jld2FyZFBvb2w9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInJld2FyZFBvb2xzIix7c3ltYm9sOnN5bWJvbH0pO2lmKCFhcGkuYXNzZXJ0KCFleGlzdGluZ1Jld2FyZFBvb2wsImNhbm5vdCBjcmVhdGUgbXVsdGlwbGUgcmV3YXJkIHBvb2xzIHBlciB0b2tlbiIpKXJldHVybjtjb25zdCB0aW1lc3RhbXA9bmV3IERhdGUoYXBpLmhpdmVCbG9ja1RpbWVzdGFtcCsiLjAwMFoiKS5nZXRUaW1lKCkscmV3YXJkUG9vbD17c3ltYm9sOnN5bWJvbCxyZXdhcmRQb29sOiIwIixsYXN0UmV3YXJkVGltZXN0YW1wOnRpbWVzdGFtcCxsYXN0Q2xhaW1EZWNheVRpbWVzdGFtcDp0aW1lc3RhbXAsY3JlYXRlZFRpbWVzdGFtcDp0aW1lc3RhbXAsY29uZmlnOntwb3N0UmV3YXJkQ3VydmU6cG9zdFJld2FyZEN1cnZlLHBvc3RSZXdhcmRDdXJ2ZVBhcmFtZXRlcjpwb3N0UmV3YXJkQ3VydmVQYXJhbWV0ZXIsY3VyYXRpb25SZXdhcmRDdXJ2ZTpjdXJhdGlvblJld2FyZEN1cnZlLGN1cmF0aW9uUmV3YXJkQ3VydmVQYXJhbWV0ZXI6Y3VyYXRpb25SZXdhcmRDdXJ2ZVBhcmFtZXRlcixjdXJhdGlvblJld2FyZFBlcmNlbnRhZ2U6Y3VyYXRpb25SZXdhcmRQZXJjZW50YWdlLGNhc2hvdXRXaW5kb3dEYXlzOmNhc2hvdXRXaW5kb3dEYXlzLHJld2FyZFBlckludGVydmFsOnJld2FyZFBlckludGVydmFsLHJld2FyZEludGVydmFsU2Vjb25kczpyZXdhcmRJbnRlcnZhbFNlY29uZHMsdm90ZVJlZ2VuZXJhdGlvbkRheXM6dm90ZVJlZ2VuZXJhdGlvbkRheXMsZG93bnZvdGVSZWdlbmVyYXRpb25EYXlzOmRvd252b3RlUmVnZW5lcmF0aW9uRGF5cyxzdGFrZWRSZXdhcmRQZXJjZW50YWdlOnN0YWtlZFJld2FyZFBlcmNlbnRhZ2Usdm90ZVBvd2VyQ29uc3VtcHRpb246dm90ZVBvd2VyQ29uc3VtcHRpb24sZG93bnZvdGVQb3dlckNvbnN1bXB0aW9uOmRvd252b3RlUG93ZXJDb25zdW1wdGlvbix0YWdzOnRhZ3N9LHBlbmRpbmdDbGFpbXM6IjAiLGFjdGl2ZTohMH0saW5zZXJ0ZWRSZXdhcmRQb29sPWF3YWl0IGFwaS5kYi5pbnNlcnQoInJld2FyZFBvb2xzIixyZXdhcmRQb29sKTthcGkuc2VuZGVyIT09YXBpLm93bmVyJiZhcGkuQmlnTnVtYmVyKHNldHVwRmVlKS5ndCgwKSYmYXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJ0b2tlbnMiLCJ0cmFuc2ZlciIse3RvOiJudWxsIixzeW1ib2w6IkJFRSIscXVhbnRpdHk6c2V0dXBGZWUsaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX0pLGFwaS5lbWl0KCJjcmVhdGVSZXdhcmRQb29sIix7X2lkOmluc2VydGVkUmV3YXJkUG9vbC5faWR9KX0sYWN0aW9ucy51cGRhdGVSZXdhcmRQb29sPWFzeW5jIHBheWxvYWQ9Pntjb25zdHtyZXdhcmRQb29sSWQ6cmV3YXJkUG9vbElkLGNvbmZpZzpjb25maWcsaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX09cGF5bG9hZDtpZighYXBpLmFzc2VydCghMD09PWlzU2lnbmVkV2l0aEFjdGl2ZUtleSwib3BlcmF0aW9uIG11c3QgYmUgc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5IikpcmV0dXJuO2NvbnN0IHBhcmFtcz1hd2FpdCBhcGkuZGIuZmluZE9uZSgicGFyYW1zIix7fSkse3VwZGF0ZUZlZTp1cGRhdGVGZWUsbWF4VGFnc1BlclBvb2w6bWF4VGFnc1BlclBvb2x9PXBhcmFtcyx1dGlsaXR5VG9rZW5CYWxhbmNlPWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgidG9rZW5zIiwiYmFsYW5jZXMiLHthY2NvdW50OmFwaS5zZW5kZXIsc3ltYm9sOiJCRUUifSksYXV0aG9yaXplZD0hKCFhcGkuQmlnTnVtYmVyKHVwZGF0ZUZlZSkubHRlKDApJiZhcGkuc2VuZGVyIT09YXBpLm93bmVyKXx8dXRpbGl0eVRva2VuQmFsYW5jZSYmYXBpLkJpZ051bWJlcih1dGlsaXR5VG9rZW5CYWxhbmNlLmJhbGFuY2UpLmd0ZSh1cGRhdGVGZWUpO2lmKCFhcGkuYXNzZXJ0KGF1dGhvcml6ZWQsInlvdSBtdXN0IGhhdmUgZW5vdWdoIHRva2VucyB0byBjb3ZlciB0aGUgdXBkYXRlIGZlZSIpKXJldHVybjtpZighYXBpLmFzc2VydChjb25maWcmJiJvYmplY3QiPT10eXBlb2YgY29uZmlnLCJjb25maWcgaW52YWxpZCIpKXJldHVybjtjb25zdHtwb3N0UmV3YXJkQ3VydmU6cG9zdFJld2FyZEN1cnZlLHBvc3RSZXdhcmRDdXJ2ZVBhcmFtZXRlcjpwb3N0UmV3YXJkQ3VydmVQYXJhbWV0ZXIsY3VyYXRpb25SZXdhcmRDdXJ2ZTpjdXJhdGlvblJld2FyZEN1cnZlLGN1cmF0aW9uUmV3YXJkQ3VydmVQYXJhbWV0ZXI6Y3VyYXRpb25SZXdhcmRDdXJ2ZVBhcmFtZXRlcixjdXJhdGlvblJld2FyZFBlcmNlbnRhZ2U6Y3VyYXRpb25SZXdhcmRQZXJjZW50YWdlLGNhc2hvdXRXaW5kb3dEYXlzOmNhc2hvdXRXaW5kb3dEYXlzLHJld2FyZFBlckludGVydmFsOnJld2FyZFBlckludGVydmFsLHJld2FyZEludGVydmFsU2Vjb25kczpyZXdhcmRJbnRlcnZhbFNlY29uZHMsdm90ZVJlZ2VuZXJhdGlvbkRheXM6dm90ZVJlZ2VuZXJhdGlvbkRheXMsZG93bnZvdGVSZWdlbmVyYXRpb25EYXlzOmRvd252b3RlUmVnZW5lcmF0aW9uRGF5cyxzdGFrZWRSZXdhcmRQZXJjZW50YWdlOnN0YWtlZFJld2FyZFBlcmNlbnRhZ2Usdm90ZVBvd2VyQ29uc3VtcHRpb246dm90ZVBvd2VyQ29uc3VtcHRpb24sZG93bnZvdGVQb3dlckNvbnN1bXB0aW9uOmRvd252b3RlUG93ZXJDb25zdW1wdGlvbix0YWdzOnRhZ3N9PWNvbmZpZyxleGlzdGluZ1Jld2FyZFBvb2w9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInJld2FyZFBvb2xzIix7X2lkOnJld2FyZFBvb2xJZH0pO2lmKCFhcGkuYXNzZXJ0KGV4aXN0aW5nUmV3YXJkUG9vbCwicmV3YXJkIHBvb2wgbm90IGZvdW5kIikpcmV0dXJuO2NvbnN0IHRva2VuPWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgidG9rZW5zIiwidG9rZW5zIix7c3ltYm9sOmV4aXN0aW5nUmV3YXJkUG9vbC5zeW1ib2x9KTtpZighYXBpLmFzc2VydChwb3N0UmV3YXJkQ3VydmUmJiJwb3dlciI9PT1wb3N0UmV3YXJkQ3VydmUsInBvc3RSZXdhcmRDdXJ2ZSBzaG91bGQgYmUgb25lIG9mOiBbcG93ZXJdIikpcmV0dXJuO2V4aXN0aW5nUmV3YXJkUG9vbC5jb25maWcucG9zdFJld2FyZEN1cnZlPXBvc3RSZXdhcmRDdXJ2ZTtjb25zdCBwb3N0RXhwb25lbnQ9YXBpLkJpZ051bWJlcihwb3N0UmV3YXJkQ3VydmVQYXJhbWV0ZXIpO2lmKCFhcGkuYXNzZXJ0KCJzdHJpbmciPT10eXBlb2YgcG9zdFJld2FyZEN1cnZlUGFyYW1ldGVyJiZwb3N0RXhwb25lbnQuaXNGaW5pdGUoKSYmcG9zdEV4cG9uZW50Lmd0ZSgiMSIpJiZwb3N0RXhwb25lbnQubHRlKCIyIikmJnBvc3RFeHBvbmVudC5kcCgpPD0yLCdwb3N0UmV3YXJkQ3VydmVQYXJhbWV0ZXIgc2hvdWxkIGJlIGJldHdlZW4gIjEiIGFuZCAiMiIgd2l0aCBwcmVjaXNpb24gYXQgbW9zdCAyJykpcmV0dXJuO2lmKGV4aXN0aW5nUmV3YXJkUG9vbC5jb25maWcucG9zdFJld2FyZEN1cnZlUGFyYW1ldGVyPXBvc3RSZXdhcmRDdXJ2ZVBhcmFtZXRlciwhYXBpLmFzc2VydChjdXJhdGlvblJld2FyZEN1cnZlJiYicG93ZXIiPT09Y3VyYXRpb25SZXdhcmRDdXJ2ZSwiY3VyYXRpb25SZXdhcmRDdXJ2ZSBzaG91bGQgYmUgb25lIG9mOiBbcG93ZXJdIikpcmV0dXJuO2NvbnN0IGN1cmF0aW9uRXhwb25lbnQ9YXBpLkJpZ051bWJlcihjdXJhdGlvblJld2FyZEN1cnZlUGFyYW1ldGVyKTtpZighYXBpLmFzc2VydCgic3RyaW5nIj09dHlwZW9mIGN1cmF0aW9uUmV3YXJkQ3VydmVQYXJhbWV0ZXImJmN1cmF0aW9uRXhwb25lbnQuaXNGaW5pdGUoKSYmY3VyYXRpb25FeHBvbmVudC5ndGUoIjAuNSIpJiZjdXJhdGlvbkV4cG9uZW50Lmx0ZSgiMSIpJiZjdXJhdGlvbkV4cG9uZW50LmRwKCk8PTIsJ2N1cmF0aW9uUmV3YXJkQ3VydmVQYXJhbWV0ZXIgY2FuIG9ubHkgYmUgYmV0d2VlbiAiMC41IiBhbmQgIjEiIHdpdGggcHJlY2lzaW9uIGF0IG1vc3QgMicpKXJldHVybjtpZihleGlzdGluZ1Jld2FyZFBvb2wuY29uZmlnLmN1cmF0aW9uUmV3YXJkQ3VydmVQYXJhbWV0ZXI9Y3VyYXRpb25SZXdhcmRDdXJ2ZVBhcmFtZXRlciwhYXBpLmFzc2VydChOdW1iZXIuaXNJbnRlZ2VyKGN1cmF0aW9uUmV3YXJkUGVyY2VudGFnZSkmJmN1cmF0aW9uUmV3YXJkUGVyY2VudGFnZT49MCYmY3VyYXRpb25SZXdhcmRQZXJjZW50YWdlPD0xMDAsImN1cmF0aW9uUmV3YXJkUGVyY2VudGFnZSBzaG91bGQgYmUgYW4gaW50ZWdlciBiZXR3ZWVuIDAgYW5kIDEwMCIpKXJldHVybjtpZihleGlzdGluZ1Jld2FyZFBvb2wuY29uZmlnLmN1cmF0aW9uUmV3YXJkUGVyY2VudGFnZT1jdXJhdGlvblJld2FyZFBlcmNlbnRhZ2UsIWFwaS5hc3NlcnQoY2FzaG91dFdpbmRvd0RheXMmJk51bWJlci5pc0ludGVnZXIoY2FzaG91dFdpbmRvd0RheXMpJiZjYXNob3V0V2luZG93RGF5cz49MSYmY2FzaG91dFdpbmRvd0RheXM8PTMwLCJjYXNob3V0V2luZG93RGF5cyBzaG91bGQgYmUgYW4gaW50ZWdlciBiZXR3ZWVuIDEgYW5kIDMwIikpcmV0dXJuO2V4aXN0aW5nUmV3YXJkUG9vbC5jb25maWcuY2FzaG91dFdpbmRvd0RheXM9Y2FzaG91dFdpbmRvd0RheXM7Y29uc3QgcGFyc2VkUmV3YXJkUGVySW50ZXJ2YWw9YXBpLkJpZ051bWJlcihyZXdhcmRQZXJJbnRlcnZhbCk7YXBpLmFzc2VydCgic3RyaW5nIj09dHlwZW9mIHJld2FyZFBlckludGVydmFsJiZwYXJzZWRSZXdhcmRQZXJJbnRlcnZhbC5pc0Zpbml0ZSgpJiZwYXJzZWRSZXdhcmRQZXJJbnRlcnZhbC5ndCgwKSwicmV3YXJkUGVySW50ZXJ2YWwgaW52YWxpZCIpJiZhcGkuYXNzZXJ0KHBhcnNlZFJld2FyZFBlckludGVydmFsLmRwKCk8PXRva2VuLnByZWNpc2lvbiwidG9rZW4gcHJlY2lzaW9uIG1pc21hdGNoIGZvciByZXdhcmRQZXJJbnRlcnZhbCIpJiYoZXhpc3RpbmdSZXdhcmRQb29sLmNvbmZpZy5yZXdhcmRQZXJJbnRlcnZhbD1yZXdhcmRQZXJJbnRlcnZhbCxhcGkuYXNzZXJ0KHJld2FyZEludGVydmFsU2Vjb25kcyYmTnVtYmVyLmlzSW50ZWdlcihyZXdhcmRJbnRlcnZhbFNlY29uZHMpJiZyZXdhcmRJbnRlcnZhbFNlY29uZHM+PTMmJnJld2FyZEludGVydmFsU2Vjb25kczw9ODY0MDAmJnJld2FyZEludGVydmFsU2Vjb25kcyUzPT0wLCJyZXdhcmRJbnRlcnZhbFNlY29uZHMgc2hvdWxkIGJlIGFuIGludGVnZXIgYmV0d2VlbiAzIGFuZCA4NjQwMCwgYW5kIGRpdmlzaWJsZSBieSAzIikmJihleGlzdGluZ1Jld2FyZFBvb2wuY29uZmlnLnJld2FyZEludGVydmFsU2Vjb25kcz1yZXdhcmRJbnRlcnZhbFNlY29uZHMsYXBpLmFzc2VydCh2b3RlUmVnZW5lcmF0aW9uRGF5cyYmTnVtYmVyLmlzSW50ZWdlcih2b3RlUmVnZW5lcmF0aW9uRGF5cykmJnZvdGVSZWdlbmVyYXRpb25EYXlzPj0xJiZ2b3RlUmVnZW5lcmF0aW9uRGF5czw9MzAsInZvdGVSZWdlbmVyYXRpb25EYXlzIHNob3VsZCBiZSBhbiBpbnRlZ2VyIGJldHdlZW4gMSBhbmQgMzAiKSYmKGV4aXN0aW5nUmV3YXJkUG9vbC5jb25maWcudm90ZVJlZ2VuZXJhdGlvbkRheXM9dm90ZVJlZ2VuZXJhdGlvbkRheXMsYXBpLmFzc2VydChkb3dudm90ZVJlZ2VuZXJhdGlvbkRheXMmJk51bWJlci5pc0ludGVnZXIoZG93bnZvdGVSZWdlbmVyYXRpb25EYXlzKSYmZG93bnZvdGVSZWdlbmVyYXRpb25EYXlzPj0xJiZkb3dudm90ZVJlZ2VuZXJhdGlvbkRheXM8PTMwLCJkb3dudm90ZVJlZ2VuZXJhdGlvbkRheXMgc2hvdWxkIGJlIGFuIGludGVnZXIgYmV0d2VlbiAxIGFuZCAzMCIpJiYoZXhpc3RpbmdSZXdhcmRQb29sLmNvbmZpZy5kb3dudm90ZVJlZ2VuZXJhdGlvbkRheXM9ZG93bnZvdGVSZWdlbmVyYXRpb25EYXlzLGFwaS5hc3NlcnQoTnVtYmVyLmlzSW50ZWdlcihzdGFrZWRSZXdhcmRQZXJjZW50YWdlKSYmc3Rha2VkUmV3YXJkUGVyY2VudGFnZT49MCYmc3Rha2VkUmV3YXJkUGVyY2VudGFnZTw9MTAwLCJzdGFrZWRSZXdhcmRQZXJjZW50YWdlIHNob3VsZCBiZSBhbiBpbnRlZ2VyIGJldHdlZW4gMCBhbmQgMTAwIikmJihleGlzdGluZ1Jld2FyZFBvb2wuY29uZmlnLnN0YWtlZFJld2FyZFBlcmNlbnRhZ2U9c3Rha2VkUmV3YXJkUGVyY2VudGFnZSxhcGkuYXNzZXJ0KHZvdGVQb3dlckNvbnN1bXB0aW9uJiZOdW1iZXIuaXNJbnRlZ2VyKHZvdGVQb3dlckNvbnN1bXB0aW9uKSYmdm90ZVBvd2VyQ29uc3VtcHRpb24+PTEmJnZvdGVQb3dlckNvbnN1bXB0aW9uPD0xZTQsInZvdGVQb3dlckNvbnN1bXB0aW9uIHNob3VsZCBiZSBhbiBpbnRlZ2VyIGJldHdlZW4gMSBhbmQgMTAwMDAiKSYmKGV4aXN0aW5nUmV3YXJkUG9vbC5jb25maWcudm90ZVBvd2VyQ29uc3VtcHRpb249dm90ZVBvd2VyQ29uc3VtcHRpb24sYXBpLmFzc2VydChkb3dudm90ZVBvd2VyQ29uc3VtcHRpb24mJk51bWJlci5pc0ludGVnZXIoZG93bnZvdGVQb3dlckNvbnN1bXB0aW9uKSYmZG93bnZvdGVQb3dlckNvbnN1bXB0aW9uPj0xJiZkb3dudm90ZVBvd2VyQ29uc3VtcHRpb248PTFlNCwiZG93bnZvdGVQb3dlckNvbnN1bXB0aW9uIHNob3VsZCBiZSBhbiBpbnRlZ2VyIGJldHdlZW4gMSBhbmQgMTAwMDAiKSYmKGV4aXN0aW5nUmV3YXJkUG9vbC5jb25maWcuZG93bnZvdGVQb3dlckNvbnN1bXB0aW9uPWRvd252b3RlUG93ZXJDb25zdW1wdGlvbixhcGkuYXNzZXJ0KEFycmF5LmlzQXJyYXkodGFncykmJnRhZ3MubGVuZ3RoPj0xJiZ0YWdzLmxlbmd0aDw9bWF4VGFnc1BlclBvb2wmJnRhZ3MuZXZlcnkodD0+InN0cmluZyI9PXR5cGVvZiB0KSwidGFncyBzaG91bGQgYmUgYSBub24tZW1wdHkgYXJyYXkgb2Ygc3RyaW5ncyBvZiBsZW5ndGggYXQgbW9zdCAiK21heFRhZ3NQZXJQb29sKSYmKGV4aXN0aW5nUmV3YXJkUG9vbC5jb25maWcudGFncz10YWdzLGFwaS5hc3NlcnQoYXBpLnNlbmRlcj09PXRva2VuLmlzc3Vlcnx8YXBpLnNlbmRlcj09PWFwaS5vd25lciYmIkJFRSI9PT10b2tlbi5zeW1ib2wsIm11c3QgYmUgaXNzdWVyIG9mIHRva2VuIikmJihhcGkuc2VuZGVyIT09YXBpLm93bmVyJiZhcGkuQmlnTnVtYmVyKHVwZGF0ZUZlZSkuZ3QoMCkmJmF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgidG9rZW5zIiwidHJhbnNmZXIiLHt0bzoibnVsbCIsc3ltYm9sOiJCRUUiLHF1YW50aXR5OnVwZGF0ZUZlZSxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fSksYXdhaXQgYXBpLmRiLnVwZGF0ZSgicmV3YXJkUG9vbHMiLGV4aXN0aW5nUmV3YXJkUG9vbCkpKSkpKSkpKSl9LGFjdGlvbnMuc2V0QWN0aXZlPWFzeW5jIHBheWxvYWQ9Pntjb25zdHtyZXdhcmRQb29sSWQ6cmV3YXJkUG9vbElkLGFjdGl2ZTphY3RpdmUsaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX09cGF5bG9hZDtpZighYXBpLmFzc2VydCghMD09PWlzU2lnbmVkV2l0aEFjdGl2ZUtleSwib3BlcmF0aW9uIG11c3QgYmUgc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5IikpcmV0dXJuO2NvbnN0IGV4aXN0aW5nUmV3YXJkUG9vbD1hd2FpdCBhcGkuZGIuZmluZE9uZSgicmV3YXJkUG9vbHMiLHtfaWQ6cmV3YXJkUG9vbElkfSk7aWYoIWFwaS5hc3NlcnQoZXhpc3RpbmdSZXdhcmRQb29sLCJyZXdhcmQgcG9vbCBub3QgZm91bmQiKSlyZXR1cm47Y29uc3QgdG9rZW49YXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJ0b2tlbnMiLCJ0b2tlbnMiLHtzeW1ib2w6ZXhpc3RpbmdSZXdhcmRQb29sLnN5bWJvbH0pO2FwaS5hc3NlcnQoYXBpLnNlbmRlcj09PXRva2VuLmlzc3Vlcnx8YXBpLnNlbmRlcj09PWFwaS5vd25lciwibXVzdCBiZSBpc3N1ZXIgb2YgdG9rZW4iKSYmKGV4aXN0aW5nUmV3YXJkUG9vbC5hY3RpdmU9YWN0aXZlLGF3YWl0IGFwaS5kYi51cGRhdGUoInJld2FyZFBvb2xzIixleGlzdGluZ1Jld2FyZFBvb2wpKX0sYWN0aW9ucy5zZXRNdXRlPWFzeW5jIHBheWxvYWQ9Pntjb25zdHtyZXdhcmRQb29sSWQ6cmV3YXJkUG9vbElkLGFjY291bnQ6YWNjb3VudCxtdXRlOm11dGUsaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX09cGF5bG9hZDtpZighYXBpLmFzc2VydCghMD09PWlzU2lnbmVkV2l0aEFjdGl2ZUtleSwib3BlcmF0aW9uIG11c3QgYmUgc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5IikpcmV0dXJuO2NvbnN0IGV4aXN0aW5nUmV3YXJkUG9vbD1hd2FpdCBhcGkuZGIuZmluZE9uZSgicmV3YXJkUG9vbHMiLHtfaWQ6cmV3YXJkUG9vbElkfSk7aWYoIWFwaS5hc3NlcnQoZXhpc3RpbmdSZXdhcmRQb29sLCJyZXdhcmQgcG9vbCBub3QgZm91bmQiKSlyZXR1cm47Y29uc3QgdG9rZW49YXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJ0b2tlbnMiLCJ0b2tlbnMiLHtzeW1ib2w6ZXhpc3RpbmdSZXdhcmRQb29sLnN5bWJvbH0pO2lmKCFhcGkuYXNzZXJ0KGFwaS5zZW5kZXI9PT10b2tlbi5pc3N1ZXJ8fGFwaS5zZW5kZXI9PT1hcGkub3duZXIsIm11c3QgYmUgaXNzdWVyIG9mIHRva2VuIikpcmV0dXJuO2lmKCFhcGkuYXNzZXJ0KGFwaS5pc1ZhbGlkQWNjb3VudE5hbWUoYWNjb3VudCksImludmFsaWQgYWNjb3VudCIpKXJldHVybjtpZighYXBpLmFzc2VydCgiYm9vbGVhbiI9PXR5cGVvZiBtdXRlLCJtdXRlIG11c3QgYmUgYSBib29sZWFuIikpcmV0dXJuO2NvbnN0IHZvdGluZ1Bvd2VyPWF3YWl0IGFwaS5kYi5maW5kT25lKCJ2b3RpbmdQb3dlciIse3Jld2FyZFBvb2xJZDpyZXdhcmRQb29sSWQsYWNjb3VudDphY2NvdW50fSk7aWYodm90aW5nUG93ZXIpdm90aW5nUG93ZXIubXV0ZT1tdXRlLGF3YWl0IGFwaS5kYi51cGRhdGUoInZvdGluZ1Bvd2VyIix2b3RpbmdQb3dlcik7ZWxzZXtjb25zdCBuZXdWb3RpbmdQb3dlcj17cmV3YXJkUG9vbElkOnJld2FyZFBvb2xJZCxhY2NvdW50OmFjY291bnQsbGFzdFZvdGVUaW1lc3RhbXA6bmV3IERhdGUoYXBpLmhpdmVCbG9ja1RpbWVzdGFtcCsiLjAwMFoiKS5nZXRUaW1lKCksdm90aW5nUG93ZXI6MWU0LGRvd252b3RpbmdQb3dlcjoxZTQsbXV0ZTptdXRlfTthd2FpdCBhcGkuZGIuaW5zZXJ0KCJ2b3RpbmdQb3dlciIsbmV3Vm90aW5nUG93ZXIpfX0sYWN0aW9ucy5yZXNldFBvb2w9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e3Jld2FyZFBvb2xJZDpyZXdhcmRQb29sSWQsaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX09cGF5bG9hZDtpZighYXBpLmFzc2VydCghMD09PWlzU2lnbmVkV2l0aEFjdGl2ZUtleSwib3BlcmF0aW9uIG11c3QgYmUgc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5IikpcmV0dXJuO2NvbnN0IGV4aXN0aW5nUmV3YXJkUG9vbD1hd2FpdCBhcGkuZGIuZmluZE9uZSgicmV3YXJkUG9vbHMiLHtfaWQ6cmV3YXJkUG9vbElkfSk7aWYoIWFwaS5hc3NlcnQoZXhpc3RpbmdSZXdhcmRQb29sLCJyZXdhcmQgcG9vbCBub3QgZm91bmQiKSlyZXR1cm47Y29uc3QgdG9rZW49YXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJ0b2tlbnMiLCJ0b2tlbnMiLHtzeW1ib2w6ZXhpc3RpbmdSZXdhcmRQb29sLnN5bWJvbH0pO2lmKCFhcGkuYXNzZXJ0KGFwaS5zZW5kZXI9PT10b2tlbi5pc3N1ZXJ8fGFwaS5zZW5kZXI9PT1hcGkub3duZXIsIm11c3QgYmUgaXNzdWVyIG9mIHRva2VuIikpcmV0dXJuO2NvbnN0IHRpbWVzdGFtcD1uZXcgRGF0ZShhcGkuaGl2ZUJsb2NrVGltZXN0YW1wKyIuMDAwWiIpLmdldFRpbWUoKTtleGlzdGluZ1Jld2FyZFBvb2wucmV3YXJkUG9vbD0iMCIsZXhpc3RpbmdSZXdhcmRQb29sLmxhc3RSZXdhcmRUaW1lc3RhbXA9dGltZXN0YW1wLGV4aXN0aW5nUmV3YXJkUG9vbC5sYXN0Q2xhaW1EZWNheVRpbWVzdGFtcD10aW1lc3RhbXAsZXhpc3RpbmdSZXdhcmRQb29sLmNyZWF0ZWRUaW1lc3RhbXA9dGltZXN0YW1wLGV4aXN0aW5nUmV3YXJkUG9vbC5wZW5kaW5nQ2xhaW1zPSIwIixhd2FpdCBhcGkuZGIudXBkYXRlKCJyZXdhcmRQb29scyIsZXhpc3RpbmdSZXdhcmRQb29sKX0sYWN0aW9ucy5jb21tZW50PWFzeW5jIHBheWxvYWQ9Pntjb25zdHthdXRob3I6YXV0aG9yLHBlcm1saW5rOnBlcm1saW5rLHJld2FyZFBvb2xzOnJld2FyZFBvb2xzfT1wYXlsb2FkO2lmKCFhcGkuYXNzZXJ0KCJudWxsIj09PWFwaS5zZW5kZXIsImFjdGlvbiBtdXN0IHVzZSBjb21tZW50IG9wZXJhdGlvbiIpKXJldHVybjtpZihhd2FpdCB0b2tlbk1haW50ZW5hbmNlKCksIWFwaS5hc3NlcnQoIXJld2FyZFBvb2xzfHxBcnJheS5pc0FycmF5KHJld2FyZFBvb2xzKSYmcmV3YXJkUG9vbHMuZXZlcnkocnA9Pk51bWJlci5pc0ludGVnZXIocnApKSwicmV3YXJkUG9vbHMgbXVzdCBiZSBhbiBhcnJheSBvZiBpbnRlZ2VycyIpKXJldHVybjtjb25zdCByZXdhcmRQb29sSWRzPWF3YWl0IGdldFJld2FyZFBvb2xJZHMocGF5bG9hZCksYXV0aG9ycGVybT1gQCR7YXV0aG9yfS8ke3Blcm1saW5rfWA7aWYoYXdhaXQgYXBpLmRiLmZpbmRPbmUoInBvc3RNZXRhZGF0YSIse2F1dGhvcnBlcm06YXV0aG9ycGVybX0pKXJldHVybjtpZihhd2FpdCBhcGkuZGIuZmluZE9uZSgicG9zdHMiLHthdXRob3JwZXJtOmF1dGhvcnBlcm19KSlyZXR1cm47YXdhaXQgYXBpLmRiLmluc2VydCgicG9zdE1ldGFkYXRhIix7YXV0aG9ycGVybTphdXRob3JwZXJtLHJld2FyZFBvb2xJZHM6cmV3YXJkUG9vbElkc30pO2NvbnN0IHRpbWVzdGFtcD1uZXcgRGF0ZShhcGkuaGl2ZUJsb2NrVGltZXN0YW1wKyIuMDAwWiIpLmdldFRpbWUoKTtmb3IobGV0IGk9MDtpPHJld2FyZFBvb2xJZHMubGVuZ3RoO2krPTEpe2NvbnN0IHJld2FyZFBvb2xJZD1yZXdhcmRQb29sSWRzW2ldLHJld2FyZFBvb2w9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInJld2FyZFBvb2xzIix7X2lkOnJld2FyZFBvb2xJZH0pO2lmKHJld2FyZFBvb2wmJnJld2FyZFBvb2wuYWN0aXZlKXtjb25zdCBjYXNob3V0VGltZT10aW1lc3RhbXArMjQqcmV3YXJkUG9vbC5jb25maWcuY2FzaG91dFdpbmRvd0RheXMqMzYwMCoxZTMscG9zdD17cmV3YXJkUG9vbElkOnJld2FyZFBvb2xJZCxzeW1ib2w6cmV3YXJkUG9vbC5zeW1ib2wsYXV0aG9ycGVybTphdXRob3JwZXJtLGF1dGhvcjphdXRob3IsY3JlYXRlZDp0aW1lc3RhbXAsY2FzaG91dFRpbWU6Y2FzaG91dFRpbWUsdm90ZVBvc2l0aXZlUnNoYXJlU3VtOiIwIix2b3RlUnNoYXJlU3VtOiIwIn07YXdhaXQgYXBpLmRiLmluc2VydCgicG9zdHMiLHBvc3QpLGFwaS5lbWl0KCJuZXdDb21tZW50Iix7cmV3YXJkUG9vbElkOnJld2FyZFBvb2xJZCxzeW1ib2w6cmV3YXJkUG9vbC5zeW1ib2x9KX19fSxhY3Rpb25zLmNvbW1lbnRPcHRpb25zPWFzeW5jIHBheWxvYWQ9Pntjb25zdHthdXRob3I6YXV0aG9yLHBlcm1saW5rOnBlcm1saW5rLG1heEFjY2VwdGVkUGF5b3V0Om1heEFjY2VwdGVkUGF5b3V0LGJlbmVmaWNpYXJpZXM6YmVuZWZpY2lhcmllc309cGF5bG9hZDtpZighYXBpLmFzc2VydCgibnVsbCI9PT1hcGkuc2VuZGVyLCJhY3Rpb24gbXVzdCB1c2UgY29tbWVudE9wdGlvbnMgb3BlcmF0aW9uIikpcmV0dXJuO2NvbnN0IGF1dGhvcnBlcm09YEAke2F1dGhvcn0vJHtwZXJtbGlua31gLGV4aXN0aW5nUG9zdHM9YXdhaXQgYXBpLmRiLmZpbmQoInBvc3RzIix7YXV0aG9ycGVybTphdXRob3JwZXJtfSk7aWYoIWV4aXN0aW5nUG9zdHMpcmV0dXJuO2NvbnN0IGRlY2xpbmVQYXlvdXQ9bWF4QWNjZXB0ZWRQYXlvdXQuc3RhcnRzV2l0aCgiMC4wMDAiKTtmb3IobGV0IGk9MDtpPGV4aXN0aW5nUG9zdHMubGVuZ3RoO2krPTEpe2NvbnN0IHBvc3Q9ZXhpc3RpbmdQb3N0c1tpXTtwb3N0LmRlY2xpbmVQYXlvdXQ9ZGVjbGluZVBheW91dCxwb3N0LmJlbmVmaWNpYXJpZXM9YmVuZWZpY2lhcmllcyxhd2FpdCBhcGkuZGIudXBkYXRlKCJwb3N0cyIscG9zdCl9fSxhY3Rpb25zLnZvdGU9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e3ZvdGVyOnZvdGVyLGF1dGhvcjphdXRob3IscGVybWxpbms6cGVybWxpbmssd2VpZ2h0OndlaWdodH09cGF5bG9hZDtpZighYXBpLmFzc2VydCgibnVsbCI9PT1hcGkuc2VuZGVyLCJjYW4gb25seSB2b3RlIHdpdGggdm90aW5nIG9wIikpcmV0dXJuO2lmKGF3YWl0IHRva2VuTWFpbnRlbmFuY2UoKSwhYXBpLmFzc2VydChOdW1iZXIuaXNJbnRlZ2VyKHdlaWdodCkmJndlaWdodD49LTFlNCYmd2VpZ2h0PD0xZTQsIndlaWdodCBtdXN0IGJlIGFuIGludGVnZXIgZnJvbSAtMTAwMDAgdG8gMTAwMDAiKSlyZXR1cm47Y29uc3QgdGltZXN0YW1wPW5ldyBEYXRlKGFwaS5oaXZlQmxvY2tUaW1lc3RhbXArIi4wMDBaIikuZ2V0VGltZSgpLGF1dGhvcnBlcm09YEAke2F1dGhvcn0vJHtwZXJtbGlua31gLHBvc3RzPWF3YWl0IGFwaS5kYi5maW5kKCJwb3N0cyIse2F1dGhvcnBlcm06YXV0aG9ycGVybX0pO2lmKHBvc3RzKWZvcihsZXQgaT0wO2k8cG9zdHMubGVuZ3RoO2krPTEpe2NvbnN0IHBvc3Q9cG9zdHNbaV07YXdhaXQgcHJvY2Vzc1ZvdGUocG9zdCx2b3Rlcix3ZWlnaHQsdGltZXN0YW1wKX19Ow=="}}}