{"id":"ssc-mainnet-hive","json":{"contractName":"contract","contractAction":"update","contractPayload":{"name":"botcontroller","params":"","code":"Y29uc3QgVVRJTElUWV9UT0tFTl9TWU1CT0w9IkJFRSIsQkFTRV9TWU1CT0w9IlNXQVAuSElWRSIsQkFTRV9TWU1CT0xfUFJFQ0lTSU9OPTgsQ0hBSU5fVFlQRT0iSElWRSI7YWN0aW9ucy51cGRhdGVQYXJhbXM9YXN5bmMgcGF5bG9hZD0+e2lmKGFwaS5zZW5kZXIhPT1hcGkub3duZXIpcmV0dXJuO2NvbnN0e2Jhc2ljRmVlOmJhc2ljRmVlLGJhc2ljU2V0dGluZ3NGZWU6YmFzaWNTZXR0aW5nc0ZlZSxwcmVtaXVtRmVlOnByZW1pdW1GZWUscHJlbWl1bUJhc2VTdGFrZTpwcmVtaXVtQmFzZVN0YWtlLHN0YWtlUGVyTWFya2V0OnN0YWtlUGVyTWFya2V0LGJhc2ljRHVyYXRpb25CbG9ja3M6YmFzaWNEdXJhdGlvbkJsb2NrcyxiYXNpY0Nvb2xkb3duQmxvY2tzOmJhc2ljQ29vbGRvd25CbG9ja3MsYmFzaWNNaW5UaWNrSW50ZXJ2YWxCbG9ja3M6YmFzaWNNaW5UaWNrSW50ZXJ2YWxCbG9ja3MscHJlbWl1bU1pblRpY2tJbnRlcnZhbEJsb2NrczpwcmVtaXVtTWluVGlja0ludGVydmFsQmxvY2tzLGJhc2ljTWF4VGlja3NQZXJCbG9jazpiYXNpY01heFRpY2tzUGVyQmxvY2sscHJlbWl1bU1heFRpY2tzUGVyQmxvY2s6cHJlbWl1bU1heFRpY2tzUGVyQmxvY2t9PXBheWxvYWQscGFyYW1zPWF3YWl0IGFwaS5kYi5maW5kT25lKCJwYXJhbXMiLHt9KTtiYXNpY0ZlZSYmInN0cmluZyI9PXR5cGVvZiBiYXNpY0ZlZSYmIWFwaS5CaWdOdW1iZXIoYmFzaWNGZWUpLmlzTmFOKCkmJmFwaS5CaWdOdW1iZXIoYmFzaWNGZWUpLmd0ZSgwKSYmKHBhcmFtcy5iYXNpY0ZlZT1iYXNpY0ZlZSksYmFzaWNTZXR0aW5nc0ZlZSYmInN0cmluZyI9PXR5cGVvZiBiYXNpY1NldHRpbmdzRmVlJiYhYXBpLkJpZ051bWJlcihiYXNpY1NldHRpbmdzRmVlKS5pc05hTigpJiZhcGkuQmlnTnVtYmVyKGJhc2ljU2V0dGluZ3NGZWUpLmd0ZSgwKSYmKHBhcmFtcy5iYXNpY1NldHRpbmdzRmVlPWJhc2ljU2V0dGluZ3NGZWUpLHByZW1pdW1GZWUmJiJzdHJpbmciPT10eXBlb2YgcHJlbWl1bUZlZSYmIWFwaS5CaWdOdW1iZXIocHJlbWl1bUZlZSkuaXNOYU4oKSYmYXBpLkJpZ051bWJlcihwcmVtaXVtRmVlKS5ndGUoMCkmJihwYXJhbXMucHJlbWl1bUZlZT1wcmVtaXVtRmVlKSxwcmVtaXVtQmFzZVN0YWtlJiYic3RyaW5nIj09dHlwZW9mIHByZW1pdW1CYXNlU3Rha2UmJiFhcGkuQmlnTnVtYmVyKHByZW1pdW1CYXNlU3Rha2UpLmlzTmFOKCkmJmFwaS5CaWdOdW1iZXIocHJlbWl1bUJhc2VTdGFrZSkuZ3RlKDApJiYocGFyYW1zLnByZW1pdW1CYXNlU3Rha2U9cHJlbWl1bUJhc2VTdGFrZSksc3Rha2VQZXJNYXJrZXQmJiJzdHJpbmciPT10eXBlb2Ygc3Rha2VQZXJNYXJrZXQmJiFhcGkuQmlnTnVtYmVyKHN0YWtlUGVyTWFya2V0KS5pc05hTigpJiZhcGkuQmlnTnVtYmVyKHN0YWtlUGVyTWFya2V0KS5ndGUoMCkmJihwYXJhbXMuc3Rha2VQZXJNYXJrZXQ9c3Rha2VQZXJNYXJrZXQpLGJhc2ljRHVyYXRpb25CbG9ja3MmJiJudW1iZXIiPT10eXBlb2YgYmFzaWNEdXJhdGlvbkJsb2NrcyYmTnVtYmVyLmlzSW50ZWdlcihiYXNpY0R1cmF0aW9uQmxvY2tzKSYmYmFzaWNEdXJhdGlvbkJsb2Nrcz49MCYmKHBhcmFtcy5iYXNpY0R1cmF0aW9uQmxvY2tzPWJhc2ljRHVyYXRpb25CbG9ja3MpLGJhc2ljQ29vbGRvd25CbG9ja3MmJiJudW1iZXIiPT10eXBlb2YgYmFzaWNDb29sZG93bkJsb2NrcyYmTnVtYmVyLmlzSW50ZWdlcihiYXNpY0Nvb2xkb3duQmxvY2tzKSYmYmFzaWNDb29sZG93bkJsb2Nrcz49MCYmKHBhcmFtcy5iYXNpY0Nvb2xkb3duQmxvY2tzPWJhc2ljQ29vbGRvd25CbG9ja3MpLGJhc2ljTWluVGlja0ludGVydmFsQmxvY2tzJiYibnVtYmVyIj09dHlwZW9mIGJhc2ljTWluVGlja0ludGVydmFsQmxvY2tzJiZOdW1iZXIuaXNJbnRlZ2VyKGJhc2ljTWluVGlja0ludGVydmFsQmxvY2tzKSYmYmFzaWNNaW5UaWNrSW50ZXJ2YWxCbG9ja3M+PTAmJihwYXJhbXMuYmFzaWNNaW5UaWNrSW50ZXJ2YWxCbG9ja3M9YmFzaWNNaW5UaWNrSW50ZXJ2YWxCbG9ja3MpLHByZW1pdW1NaW5UaWNrSW50ZXJ2YWxCbG9ja3MmJiJudW1iZXIiPT10eXBlb2YgcHJlbWl1bU1pblRpY2tJbnRlcnZhbEJsb2NrcyYmTnVtYmVyLmlzSW50ZWdlcihwcmVtaXVtTWluVGlja0ludGVydmFsQmxvY2tzKSYmcHJlbWl1bU1pblRpY2tJbnRlcnZhbEJsb2Nrcz49MCYmKHBhcmFtcy5wcmVtaXVtTWluVGlja0ludGVydmFsQmxvY2tzPXByZW1pdW1NaW5UaWNrSW50ZXJ2YWxCbG9ja3MpLGJhc2ljTWF4VGlja3NQZXJCbG9jayYmIm51bWJlciI9PXR5cGVvZiBiYXNpY01heFRpY2tzUGVyQmxvY2smJk51bWJlci5pc0ludGVnZXIoYmFzaWNNYXhUaWNrc1BlckJsb2NrKSYmYmFzaWNNYXhUaWNrc1BlckJsb2NrPj0wJiYocGFyYW1zLmJhc2ljTWF4VGlja3NQZXJCbG9jaz1iYXNpY01heFRpY2tzUGVyQmxvY2spLHByZW1pdW1NYXhUaWNrc1BlckJsb2NrJiYibnVtYmVyIj09dHlwZW9mIHByZW1pdW1NYXhUaWNrc1BlckJsb2NrJiZOdW1iZXIuaXNJbnRlZ2VyKHByZW1pdW1NYXhUaWNrc1BlckJsb2NrKSYmcHJlbWl1bU1heFRpY2tzUGVyQmxvY2s+PTAmJihwYXJhbXMucHJlbWl1bU1heFRpY2tzUGVyQmxvY2s9cHJlbWl1bU1heFRpY2tzUGVyQmxvY2spLGF3YWl0IGFwaS5kYi51cGRhdGUoInBhcmFtcyIscGFyYW1zKX07Y29uc3QgZ2V0Q3VycmVudFRpbWVzdGFtcD0oKT0+e2NvbnN0IGJsb2NrVGltZXN0YW1wPWFwaS5oaXZlQmxvY2tUaW1lc3RhbXA7cmV0dXJuIG5ldyBEYXRlKGJsb2NrVGltZXN0YW1wKyIuMDAwWiIpLmdldFRpbWUoKX0sdXBncmFkZVVzZXJTY2hlbWE9YXN5bmMoKT0+e2NvbnN0IHBhcmFtcz1hd2FpdCBhcGkuZGIuZmluZE9uZSgicGFyYW1zIix7fSk7bGV0IHVzZXJzVG9DaGVjaz1hd2FpdCBhcGkuZGIuZmluZCgidXNlcnMiLHt0aW1lTGltaXRCbG9ja3M6eyRleGlzdHM6ITB9fSksbmJVc2Vycz11c2Vyc1RvQ2hlY2subGVuZ3RoO2Zvcig7bmJVc2Vycz4wOyl7Zm9yKGxldCBpbmRleD0wO2luZGV4PG5iVXNlcnM7aW5kZXgrPTEpe2NvbnN0IHVzZXI9dXNlcnNUb0NoZWNrW2luZGV4XTt1c2VyLmxhc3RUaWNrVGltZXN0YW1wPWdldEN1cnJlbnRUaW1lc3RhbXAoKSx1c2VyLmxhc3RUaWNrQmxvY2s9YXBpLmJsb2NrTnVtYmVyLHVzZXIudGltZUxpbWl0PTMqcGFyYW1zLmJhc2ljRHVyYXRpb25CbG9ja3MqMWUzLGRlbGV0ZSB1c2VyLnRpbWVMaW1pdEJsb2Nrcyxhd2FpdCBhcGkuZGIudXBkYXRlKCJ1c2VycyIsdXNlcix7dGltZUxpbWl0QmxvY2tzOiIifSl9dXNlcnNUb0NoZWNrPWF3YWl0IGFwaS5kYi5maW5kKCJ1c2VycyIse3RpbWVMaW1pdEJsb2Nrczp7JGV4aXN0czohMH19KSxuYlVzZXJzPXVzZXJzVG9DaGVjay5sZW5ndGh9fSx1cGdyYWRlTWFya2V0U2NoZW1hPWFzeW5jKCk9PntsZXQgbWt0c1RvQ2hlY2s9YXdhaXQgYXBpLmRiLmZpbmQoIm1hcmtldHMiLHtwbGFjZUF0QmlkV2FsbDp7JGV4aXN0czohMX19KSxuYk1rdHM9bWt0c1RvQ2hlY2subGVuZ3RoO2Zvcig7bmJNa3RzPjA7KXtmb3IobGV0IGluZGV4PTA7aW5kZXg8bmJNa3RzO2luZGV4Kz0xKXtjb25zdCBtYXJrZXQ9bWt0c1RvQ2hlY2tbaW5kZXhdO21hcmtldC5wbGFjZUF0QmlkV2FsbD0iMTAwMDAiLG1hcmtldC5wbGFjZUF0U2VsbFdhbGw9IjEwMDAwIixhd2FpdCBhcGkuZGIudXBkYXRlKCJtYXJrZXRzIixtYXJrZXQpfW1rdHNUb0NoZWNrPWF3YWl0IGFwaS5kYi5maW5kKCJtYXJrZXRzIix7cGxhY2VBdEJpZFdhbGw6eyRleGlzdHM6ITF9fSksbmJNa3RzPW1rdHNUb0NoZWNrLmxlbmd0aH19LGlzVG9rZW5UcmFuc2ZlclZlcmlmaWVkPShyZXN1bHQsZnJvbSx0byxzeW1ib2wscXVhbnRpdHksZXZlbnRTdHIpPT4hKHZvaWQgMCE9PXJlc3VsdC5lcnJvcnN8fCFyZXN1bHQuZXZlbnRzfHx2b2lkIDA9PT1yZXN1bHQuZXZlbnRzLmZpbmQoZWw9PiJ0b2tlbnMiPT09ZWwuY29udHJhY3QmJmVsLmV2ZW50PT09ZXZlbnRTdHImJmVsLmRhdGEuZnJvbT09PWZyb20mJmVsLmRhdGEudG89PT10byYmZWwuZGF0YS5xdWFudGl0eT09PXF1YW50aXR5JiZlbC5kYXRhLnN5bWJvbD09PXN5bWJvbCkpLGNvdW50RGVjaW1hbHM9dmFsdWU9PmFwaS5CaWdOdW1iZXIodmFsdWUpLmRwKCksdmVyaWZ5VXRpbGl0eVRva2VuU3Rha2U9YXN5bmMoYW1vdW50LGFjY291bnQpPT57aWYoYXBpLkJpZ051bWJlcihhbW91bnQpLmx0ZSgwKSlyZXR1cm4hMDtjb25zdCB1dGlsaXR5VG9rZW5TdGFrZT1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoInRva2VucyIsImJhbGFuY2VzIix7YWNjb3VudDphY2NvdW50LHN5bWJvbDoiQkVFIn0pO3JldHVybiEoIXV0aWxpdHlUb2tlblN0YWtlfHwhYXBpLkJpZ051bWJlcih1dGlsaXR5VG9rZW5TdGFrZS5zdGFrZSkuZ3RlKGFtb3VudCkpfSx2ZXJpZnlVdGlsaXR5VG9rZW5CYWxhbmNlPWFzeW5jKGFtb3VudCxhY2NvdW50KT0+e2lmKGFwaS5CaWdOdW1iZXIoYW1vdW50KS5sdGUoMCkpcmV0dXJuITA7Y29uc3QgdXRpbGl0eVRva2VuQmFsYW5jZT1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoInRva2VucyIsImJhbGFuY2VzIix7YWNjb3VudDphY2NvdW50LHN5bWJvbDoiQkVFIn0pO3JldHVybiEoIXV0aWxpdHlUb2tlbkJhbGFuY2V8fCFhcGkuQmlnTnVtYmVyKHV0aWxpdHlUb2tlbkJhbGFuY2UuYmFsYW5jZSkuZ3RlKGFtb3VudCkpfSxidXJuRmVlPWFzeW5jKGFtb3VudCxpc1NpZ25lZFdpdGhBY3RpdmVLZXkpPT57aWYoYXBpLkJpZ051bWJlcihhbW91bnQpLmd0KDApKXtjb25zdCByZXM9YXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJ0b2tlbnMiLCJ0cmFuc2ZlciIse3RvOiJudWxsIixzeW1ib2w6IkJFRSIscXVhbnRpdHk6YW1vdW50LGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9KTtpZihyZXN1bHQ9cmVzLGZyb209YXBpLnNlbmRlcix0bz0ibnVsbCIsc3ltYm9sPSJCRUUiLHF1YW50aXR5PWFtb3VudCxldmVudFN0cj0idHJhbnNmZXIiLHZvaWQgMCE9PXJlc3VsdC5lcnJvcnN8fCFyZXN1bHQuZXZlbnRzfHx2b2lkIDA9PT1yZXN1bHQuZXZlbnRzLmZpbmQoZWw9PiJ0b2tlbnMiPT09ZWwuY29udHJhY3QmJmVsLmV2ZW50PT09ZXZlbnRTdHImJmVsLmRhdGEuZnJvbT09PWZyb20mJmVsLmRhdGEudG89PT10byYmZWwuZGF0YS5xdWFudGl0eT09PXF1YW50aXR5JiZlbC5kYXRhLnN5bWJvbD09PXN5bWJvbCkpcmV0dXJuITF9dmFyIHJlc3VsdCxmcm9tLHRvLHN5bWJvbCxxdWFudGl0eSxldmVudFN0cjtyZXR1cm4hMH07YWN0aW9ucy5jcmVhdGVTU0M9YXN5bmMoKT0+e2lmKCExPT09YXdhaXQgYXBpLmRiLnRhYmxlRXhpc3RzKCJ1c2VycyIpKXthd2FpdCBhcGkuZGIuY3JlYXRlVGFibGUoInVzZXJzIixbImFjY291bnQiLCJsYXN0VGlja0Jsb2NrIl0pLGF3YWl0IGFwaS5kYi5jcmVhdGVUYWJsZSgibWFya2V0cyIsWyJhY2NvdW50Iiwic3ltYm9sIl0pLGF3YWl0IGFwaS5kYi5jcmVhdGVUYWJsZSgicGFyYW1zIik7Y29uc3QgcGFyYW1zPXtiYXNpY0ZlZToiMTAwIixiYXNpY1NldHRpbmdzRmVlOiIxIixwcmVtaXVtRmVlOiIxMDAiLHByZW1pdW1CYXNlU3Rha2U6IjEwMDAiLHN0YWtlUGVyTWFya2V0OiIyMDAiLGJhc2ljRHVyYXRpb25CbG9ja3M6NDAzMjAwLGJhc2ljQ29vbGRvd25CbG9ja3M6NDAzMjAwLGJhc2ljTWluVGlja0ludGVydmFsQmxvY2tzOjIwMCxwcmVtaXVtTWluVGlja0ludGVydmFsQmxvY2tzOjEwMCxiYXNpY01heFRpY2tzUGVyQmxvY2s6MjAscHJlbWl1bU1heFRpY2tzUGVyQmxvY2s6MzB9O2F3YWl0IGFwaS5kYi5pbnNlcnQoInBhcmFtcyIscGFyYW1zKX1lbHNlIGF3YWl0IHVwZ3JhZGVVc2VyU2NoZW1hKCksYXdhaXQgdXBncmFkZU1hcmtldFNjaGVtYSgpfTtjb25zdCB0aWNrVXNlcnM9YXN5bmMocGFyYW1zLHVzZXJzLGN1cnJlbnRUaW1lc3RhbXAsdHhJZFByZWZpeCk9Pntjb25zdCBtYXJrZXRMaXN0PVtdO2ZvcihsZXQgaT0wO2k8dXNlcnMubGVuZ3RoO2krPTEpe2NvbnN0IHVzZXI9dXNlcnNbaV07bGV0IHVzZXJCYWxhbmNlPW51bGw7aWYodXNlci5pc1ByZW1pdW0pe3VzZXJCYWxhbmNlPWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgidG9rZW5zIiwiYmFsYW5jZXMiLHthY2NvdW50OnVzZXIuYWNjb3VudCxzeW1ib2w6IkJFRSJ9KTt1c2VyQmFsYW5jZSYmYXBpLkJpZ051bWJlcih1c2VyQmFsYW5jZS5zdGFrZSkuZ3RlKHBhcmFtcy5wcmVtaXVtQmFzZVN0YWtlKXx8KHVzZXIuaXNQcmVtaXVtPSExKX1lbHNle2NvbnN0IHRpY2tJbnRlcnZhbD1jdXJyZW50VGltZXN0YW1wLXVzZXIubGFzdFRpY2tUaW1lc3RhbXA7dXNlci50aW1lTGltaXQtPXRpY2tJbnRlcnZhbCx1c2VyLnRpbWVMaW1pdDw9MCYmKHVzZXIudGltZUxpbWl0PTAsdXNlci5pc09uQ29vbGRvd249ITAsdXNlci5pc0VuYWJsZWQ9ITEpfWlmKHVzZXIubGFzdFRpY2tCbG9jaz1hcGkuYmxvY2tOdW1iZXIsdXNlci5sYXN0VGlja1RpbWVzdGFtcD1jdXJyZW50VGltZXN0YW1wLCF1c2VyLmlzRW5hYmxlZHx8dXNlci5lbmFibGVkTWFya2V0czwxKXthd2FpdCBhcGkuZGIudXBkYXRlKCJ1c2VycyIsdXNlcik7Y29udGludWV9Y29uc3QgYXV0aG9yaXplZEFjdGlvbj11c2VyLmlzUHJlbWl1bXx8MT09PXVzZXIubWFya2V0cztsZXQgaGFzRW5vdWdoU3Rha2VGb3JNYXJrZXRzPSExO2lmKGF1dGhvcml6ZWRBY3Rpb24pe3VzZXJCYWxhbmNlfHwodXNlckJhbGFuY2U9YXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJ0b2tlbnMiLCJiYWxhbmNlcyIse2FjY291bnQ6dXNlci5hY2NvdW50LHN5bWJvbDoiQkVFIn0pKTtsZXQgcmVxdWlyZWRTdGFrZT1hcGkuQmlnTnVtYmVyKHBhcmFtcy5zdGFrZVBlck1hcmtldCkubXVsdGlwbGllZEJ5KHVzZXIubWFya2V0cyk7dXNlci5pc1ByZW1pdW0mJihyZXF1aXJlZFN0YWtlPXJlcXVpcmVkU3Rha2UucGx1cyhwYXJhbXMucHJlbWl1bUJhc2VTdGFrZSkpLGhhc0Vub3VnaFN0YWtlRm9yTWFya2V0cz11c2VyQmFsYW5jZSYmYXBpLkJpZ051bWJlcih1c2VyQmFsYW5jZS5zdGFrZSkuZ3RlKHJlcXVpcmVkU3Rha2UpfWNvbnN0IG1hcmtldHM9YXdhaXQgYXBpLmRiLmZpbmQoIm1hcmtldHMiLHthY2NvdW50OnVzZXIuYWNjb3VudCxpc0VuYWJsZWQ6ITB9LHVzZXIubWFya2V0cywwLFt7aW5kZXg6InN5bWJvbCIsZGVzY2VuZGluZzohMX0se2luZGV4OiJfaWQiLGRlc2NlbmRpbmc6ITF9XSk7aWYoYXV0aG9yaXplZEFjdGlvbiYmaGFzRW5vdWdoU3Rha2VGb3JNYXJrZXRzKWF3YWl0IGFwaS5kYi51cGRhdGUoInVzZXJzIix1c2VyKSxtYXJrZXRzLmZvckVhY2gobT0+e3VzZXIuaXNQcmVtaXVtfHwobS5zdHJhdGVneT0xKSxtYXJrZXRMaXN0LnB1c2gobSl9KTtlbHNle2ZvcihsZXQgaj0wO2o8bWFya2V0cy5sZW5ndGg7ais9MSl7Y29uc3QgbWFya2V0PW1hcmtldHNbal07bWFya2V0LmlzRW5hYmxlZD0hMSx1c2VyLmlzUHJlbWl1bXx8KG1hcmtldC5zdHJhdGVneT0xKSxhd2FpdCBhcGkuZGIudXBkYXRlKCJtYXJrZXRzIixtYXJrZXQpfXVzZXIuZW5hYmxlZE1hcmtldHM9MCxhd2FpdCBhcGkuZGIudXBkYXRlKCJ1c2VycyIsdXNlcil9fW1hcmtldExpc3QubGVuZ3RoPjAmJmF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgibWFya2V0bWFrZXIiLCJ0aWNrIix7bWFya2V0czptYXJrZXRMaXN0LHR4SWRCYXNlOmAke3R4SWRQcmVmaXh9LSR7YXBpLmJsb2NrTnVtYmVyfS0ke2FwaS50cmFuc2FjdGlvbklkfWB9KX07YWN0aW9ucy50aWNrPWFzeW5jKCk9PntpZihhcGkuYXNzZXJ0KCJudWxsIj09PWFwaS5zZW5kZXIsIm5vdCBhdXRob3JpemVkIikpe2NvbnN0IHBhcmFtcz1hd2FpdCBhcGkuZGIuZmluZE9uZSgicGFyYW1zIix7fSksY3VycmVudFRpbWVzdGFtcD1nZXRDdXJyZW50VGltZXN0YW1wKCksY3V0b2ZmQmFzaWM9Y3VycmVudFRpbWVzdGFtcC0zKnBhcmFtcy5iYXNpY01pblRpY2tJbnRlcnZhbEJsb2NrcyoxZTMsY3V0b2ZmUHJlbWl1bT1jdXJyZW50VGltZXN0YW1wLTMqcGFyYW1zLnByZW1pdW1NaW5UaWNrSW50ZXJ2YWxCbG9ja3MqMWUzLHBlbmRpbmdCYXNpY1RpY2tzPWF3YWl0IGFwaS5kYi5maW5kKCJ1c2VycyIse2lzRW5hYmxlZDohMCxpc1ByZW1pdW06ITEsbGFzdFRpY2tUaW1lc3RhbXA6eyRsdGU6Y3V0b2ZmQmFzaWN9fSxwYXJhbXMuYmFzaWNNYXhUaWNrc1BlckJsb2NrLDAsW3tpbmRleDoibGFzdFRpY2tCbG9jayIsZGVzY2VuZGluZzohMX0se2luZGV4OiJfaWQiLGRlc2NlbmRpbmc6ITF9XSk7YXdhaXQgdGlja1VzZXJzKHBhcmFtcyxwZW5kaW5nQmFzaWNUaWNrcyxjdXJyZW50VGltZXN0YW1wLCJNTS1CIik7Y29uc3QgcGVuZGluZ1ByZW1pdW1UaWNrcz1hd2FpdCBhcGkuZGIuZmluZCgidXNlcnMiLHtpc0VuYWJsZWQ6ITAsaXNQcmVtaXVtOiEwLGxhc3RUaWNrVGltZXN0YW1wOnskbHRlOmN1dG9mZlByZW1pdW19fSxwYXJhbXMucHJlbWl1bU1heFRpY2tzUGVyQmxvY2ssMCxbe2luZGV4OiJsYXN0VGlja0Jsb2NrIixkZXNjZW5kaW5nOiExfSx7aW5kZXg6Il9pZCIsZGVzY2VuZGluZzohMX1dKTthd2FpdCB0aWNrVXNlcnMocGFyYW1zLHBlbmRpbmdQcmVtaXVtVGlja3MsY3VycmVudFRpbWVzdGFtcCwiTU0tUCIpfX0sYWN0aW9ucy51cGdyYWRlPWFzeW5jIHBheWxvYWQ9Pntjb25zdHtpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fT1wYXlsb2FkLHBhcmFtcz1hd2FpdCBhcGkuZGIuZmluZE9uZSgicGFyYW1zIix7fSksaGFzRW5vdWdoU3Rha2U9YXdhaXQgdmVyaWZ5VXRpbGl0eVRva2VuU3Rha2UocGFyYW1zLnByZW1pdW1CYXNlU3Rha2UsYXBpLnNlbmRlcik7aWYoYXBpLmFzc2VydChoYXNFbm91Z2hTdGFrZSwieW91IGRvIG5vdCBoYXZlIGVub3VnaCB0b2tlbnMgc3Rha2VkIikmJmFwaS5hc3NlcnQoITA9PT1pc1NpZ25lZFdpdGhBY3RpdmVLZXksInlvdSBtdXN0IHVzZSBhIGN1c3RvbV9qc29uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpKXtjb25zdCB1c2VyPWF3YWl0IGFwaS5kYi5maW5kT25lKCJ1c2VycyIse2FjY291bnQ6YXBpLnNlbmRlcn0pO2lmKGFwaS5hc3NlcnQobnVsbCE9PXVzZXIsInVzZXIgbm90IHJlZ2lzdGVyZWQiKSYmYXBpLmFzc2VydCghdXNlci5pc1ByZW1pdW0sInVzZXIgaXMgYWxyZWFkeSBwcmVtaXVtIikpe2lmKCF1c2VyLmlzUHJlbWl1bUZlZVBhaWQpe2NvbnN0IGF1dGhvcml6ZWRVcGdyYWRlPWF3YWl0IHZlcmlmeVV0aWxpdHlUb2tlbkJhbGFuY2UocGFyYW1zLnByZW1pdW1GZWUsYXBpLnNlbmRlcik7aWYoIWFwaS5hc3NlcnQoYXV0aG9yaXplZFVwZ3JhZGUsInlvdSBtdXN0IGhhdmUgZW5vdWdoIHRva2VucyB0byBjb3ZlciB0aGUgcHJlbWl1bSB1cGdyYWRlIGZlZSIpKXJldHVybiExO2lmKCFhd2FpdCBidXJuRmVlKHBhcmFtcy5wcmVtaXVtRmVlLGlzU2lnbmVkV2l0aEFjdGl2ZUtleSkpcmV0dXJuITF9cmV0dXJuIHVzZXIuaXNQcmVtaXVtRmVlUGFpZD0hMCx1c2VyLmlzUHJlbWl1bT0hMCx1c2VyLmlzT25Db29sZG93biYmKHVzZXIudGltZUxpbWl0PTMqcGFyYW1zLmJhc2ljRHVyYXRpb25CbG9ja3MqMWUzKSx1c2VyLmlzT25Db29sZG93bj0hMSx1c2VyLmxhc3RUaWNrQmxvY2s9YXBpLmJsb2NrTnVtYmVyLHVzZXIubGFzdFRpY2tUaW1lc3RhbXA9Z2V0Q3VycmVudFRpbWVzdGFtcCgpLGF3YWl0IGFwaS5kYi51cGRhdGUoInVzZXJzIix1c2VyKSxhcGkuZW1pdCgidXBncmFkZSIse2FjY291bnQ6YXBpLnNlbmRlcn0pLCEwfX1yZXR1cm4hMX0sYWN0aW9ucy50dXJuT2ZmPWFzeW5jIHBheWxvYWQ9Pntjb25zdHtpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fT1wYXlsb2FkO2lmKGFwaS5hc3NlcnQoITA9PT1pc1NpZ25lZFdpdGhBY3RpdmVLZXksInlvdSBtdXN0IHVzZSBhIGN1c3RvbV9qc29uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpKXtjb25zdCB1c2VyPWF3YWl0IGFwaS5kYi5maW5kT25lKCJ1c2VycyIse2FjY291bnQ6YXBpLnNlbmRlcn0pO2lmKGFwaS5hc3NlcnQobnVsbCE9PXVzZXIsInVzZXIgbm90IHJlZ2lzdGVyZWQiKSYmYXBpLmFzc2VydCh1c2VyLmlzRW5hYmxlZCwiYWNjb3VudCBhbHJlYWR5IHR1cm5lZCBvZmYiKSl7Y29uc3QgY3VycmVudFRpbWVzdGFtcD1nZXRDdXJyZW50VGltZXN0YW1wKCk7aWYoIXVzZXIuaXNQcmVtaXVtKXtjb25zdCB0aWNrSW50ZXJ2YWw9Y3VycmVudFRpbWVzdGFtcC11c2VyLmxhc3RUaWNrVGltZXN0YW1wO3VzZXIudGltZUxpbWl0LT10aWNrSW50ZXJ2YWwsdXNlci50aW1lTGltaXQ8PTAmJih1c2VyLnRpbWVMaW1pdD0wLHVzZXIuaXNPbkNvb2xkb3duPSEwKX11c2VyLmlzRW5hYmxlZD0hMSx1c2VyLmxhc3RUaWNrQmxvY2s9YXBpLmJsb2NrTnVtYmVyLHVzZXIubGFzdFRpY2tUaW1lc3RhbXA9Y3VycmVudFRpbWVzdGFtcCxhd2FpdCBhcGkuZGIudXBkYXRlKCJ1c2VycyIsdXNlciksYXBpLmVtaXQoInR1cm5PZmYiLHthY2NvdW50OmFwaS5zZW5kZXJ9KX19fSxhY3Rpb25zLnR1cm5Pbj1hc3luYyBwYXlsb2FkPT57Y29uc3R7aXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX09cGF5bG9hZCxwYXJhbXM9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInBhcmFtcyIse30pO2lmKGFwaS5hc3NlcnQoITA9PT1pc1NpZ25lZFdpdGhBY3RpdmVLZXksInlvdSBtdXN0IHVzZSBhIGN1c3RvbV9qc29uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpKXtjb25zdCB1c2VyPWF3YWl0IGFwaS5kYi5maW5kT25lKCJ1c2VycyIse2FjY291bnQ6YXBpLnNlbmRlcn0pO2lmKGFwaS5hc3NlcnQobnVsbCE9PXVzZXIsInVzZXIgbm90IHJlZ2lzdGVyZWQiKSl7Y29uc3QgY3VycmVudFRpbWVzdGFtcD1nZXRDdXJyZW50VGltZXN0YW1wKCksdGlja0ludGVydmFsPWN1cnJlbnRUaW1lc3RhbXAtdXNlci5sYXN0VGlja1RpbWVzdGFtcDthcGkuYXNzZXJ0KCF1c2VyLmlzRW5hYmxlZCwiYWNjb3VudCBhbHJlYWR5IHR1cm5lZCBvbiIpJiZhcGkuYXNzZXJ0KHVzZXIuaXNQcmVtaXVtfHwhdXNlci5pc09uQ29vbGRvd258fHVzZXIuaXNPbkNvb2xkb3duJiZ0aWNrSW50ZXJ2YWw+PTMqcGFyYW1zLmJhc2ljQ29vbGRvd25CbG9ja3MqMWUzLCJjb29sZG93biBkdXJhdGlvbiBub3QgZXhwaXJlZCIpJiYodXNlci5pc0VuYWJsZWQ9ITAsdXNlci5pc09uQ29vbGRvd24mJih1c2VyLnRpbWVMaW1pdD0zKnBhcmFtcy5iYXNpY0R1cmF0aW9uQmxvY2tzKjFlMyksdXNlci5pc09uQ29vbGRvd249ITEsdXNlci5sYXN0VGlja0Jsb2NrPWFwaS5ibG9ja051bWJlcix1c2VyLmxhc3RUaWNrVGltZXN0YW1wPWN1cnJlbnRUaW1lc3RhbXAsYXdhaXQgYXBpLmRiLnVwZGF0ZSgidXNlcnMiLHVzZXIpLGFwaS5lbWl0KCJ0dXJuT24iLHthY2NvdW50OmFwaS5zZW5kZXJ9KSl9fX0sYWN0aW9ucy5kaXNhYmxlTWFya2V0PWFzeW5jIHBheWxvYWQ9Pntjb25zdHtzeW1ib2w6c3ltYm9sLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9PXBheWxvYWQ7aWYoYXBpLmFzc2VydCghMD09PWlzU2lnbmVkV2l0aEFjdGl2ZUtleSwieW91IG11c3QgdXNlIGEgY3VzdG9tX2pzb24gc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5IikmJmFwaS5hc3NlcnQoc3ltYm9sJiYic3RyaW5nIj09dHlwZW9mIHN5bWJvbCYmIlNXQVAuSElWRSIhPT1zeW1ib2wsImludmFsaWQgcGFyYW1zIikpe2NvbnN0IHVzZXI9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInVzZXJzIix7YWNjb3VudDphcGkuc2VuZGVyfSk7aWYoYXBpLmFzc2VydChudWxsIT09dXNlciwidXNlciBub3QgcmVnaXN0ZXJlZCIpKXtjb25zdCBtYXJrZXQ9YXdhaXQgYXBpLmRiLmZpbmRPbmUoIm1hcmtldHMiLHthY2NvdW50OmFwaS5zZW5kZXIsc3ltYm9sOnN5bWJvbH0pO2FwaS5hc3NlcnQobnVsbCE9PW1hcmtldCwibWFya2V0IG11c3QgZXhpc3QiKSYmbWFya2V0LmlzRW5hYmxlZCYmKG1hcmtldC5pc0VuYWJsZWQ9ITEsYXdhaXQgYXBpLmRiLnVwZGF0ZSgibWFya2V0cyIsbWFya2V0KSx1c2VyLmVuYWJsZWRNYXJrZXRzLT0xLGF3YWl0IGFwaS5kYi51cGRhdGUoInVzZXJzIix1c2VyKSxhcGkuZW1pdCgiZGlzYWJsZU1hcmtldCIse2FjY291bnQ6YXBpLnNlbmRlcixzeW1ib2w6c3ltYm9sfSkpfX19LGFjdGlvbnMuZW5hYmxlTWFya2V0PWFzeW5jIHBheWxvYWQ9Pntjb25zdHtzeW1ib2w6c3ltYm9sLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9PXBheWxvYWQ7aWYoYXBpLmFzc2VydCghMD09PWlzU2lnbmVkV2l0aEFjdGl2ZUtleSwieW91IG11c3QgdXNlIGEgY3VzdG9tX2pzb24gc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5IikmJmFwaS5hc3NlcnQoc3ltYm9sJiYic3RyaW5nIj09dHlwZW9mIHN5bWJvbCYmIlNXQVAuSElWRSIhPT1zeW1ib2wsImludmFsaWQgcGFyYW1zIikpe2NvbnN0IHVzZXI9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInVzZXJzIix7YWNjb3VudDphcGkuc2VuZGVyfSk7aWYoYXBpLmFzc2VydChudWxsIT09dXNlciwidXNlciBub3QgcmVnaXN0ZXJlZCIpKXtjb25zdCBtYXJrZXQ9YXdhaXQgYXBpLmRiLmZpbmRPbmUoIm1hcmtldHMiLHthY2NvdW50OmFwaS5zZW5kZXIsc3ltYm9sOnN5bWJvbH0pO2lmKGFwaS5hc3NlcnQobnVsbCE9PW1hcmtldCwibWFya2V0IG11c3QgZXhpc3QiKSYmIW1hcmtldC5pc0VuYWJsZWQpe2NvbnN0IGF1dGhvcml6ZWRBY3Rpb249dXNlci5pc1ByZW1pdW18fDE9PT11c2VyLm1hcmtldHM7aWYoYXBpLmFzc2VydChhdXRob3JpemVkQWN0aW9uLCJ1c2VyIGhhcyB0b28gbWFueSBtYXJrZXRzOyBwcmVtaXVtIHVwZ3JhZGUgcmVxdWlyZWQiKSl7Y29uc3QgcGFyYW1zPWF3YWl0IGFwaS5kYi5maW5kT25lKCJwYXJhbXMiLHt9KTtsZXQgcmVxdWlyZWRTdGFrZT1hcGkuQmlnTnVtYmVyKHBhcmFtcy5zdGFrZVBlck1hcmtldCkubXVsdGlwbGllZEJ5KHVzZXIubWFya2V0cyk7dXNlci5pc1ByZW1pdW0mJihyZXF1aXJlZFN0YWtlPXJlcXVpcmVkU3Rha2UucGx1cyhwYXJhbXMucHJlbWl1bUJhc2VTdGFrZSkpO2NvbnN0IGhhc0Vub3VnaFN0YWtlPWF3YWl0IHZlcmlmeVV0aWxpdHlUb2tlblN0YWtlKHJlcXVpcmVkU3Rha2UsYXBpLnNlbmRlcik7YXBpLmFzc2VydChoYXNFbm91Z2hTdGFrZSwibXVzdCBzdGFrZSBtb3JlIEJFRSB0byBlbmFibGUgbWFya2V0IikmJihtYXJrZXQuaXNFbmFibGVkPSEwLHVzZXIuaXNQcmVtaXVtfHwobWFya2V0LnN0cmF0ZWd5PTEpLGF3YWl0IGFwaS5kYi51cGRhdGUoIm1hcmtldHMiLG1hcmtldCksdXNlci5lbmFibGVkTWFya2V0cys9MSxhd2FpdCBhcGkuZGIudXBkYXRlKCJ1c2VycyIsdXNlciksYXBpLmVtaXQoImVuYWJsZU1hcmtldCIse2FjY291bnQ6YXBpLnNlbmRlcixzeW1ib2w6c3ltYm9sfSkpfX19fX0sYWN0aW9ucy5yZW1vdmVNYXJrZXQ9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e3N5bWJvbDpzeW1ib2wsaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX09cGF5bG9hZDtpZihhcGkuYXNzZXJ0KCEwPT09aXNTaWduZWRXaXRoQWN0aXZlS2V5LCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmYXBpLmFzc2VydChzeW1ib2wmJiJzdHJpbmciPT10eXBlb2Ygc3ltYm9sJiYiU1dBUC5ISVZFIiE9PXN5bWJvbCwiaW52YWxpZCBwYXJhbXMiKSl7Y29uc3QgdXNlcj1hd2FpdCBhcGkuZGIuZmluZE9uZSgidXNlcnMiLHthY2NvdW50OmFwaS5zZW5kZXJ9KTtpZihhcGkuYXNzZXJ0KG51bGwhPT11c2VyLCJ1c2VyIG5vdCByZWdpc3RlcmVkIikpe2NvbnN0IG1hcmtldD1hd2FpdCBhcGkuZGIuZmluZE9uZSgibWFya2V0cyIse2FjY291bnQ6YXBpLnNlbmRlcixzeW1ib2w6c3ltYm9sfSk7YXBpLmFzc2VydChudWxsIT09bWFya2V0LCJtYXJrZXQgbXVzdCBleGlzdCIpJiYodXNlci5tYXJrZXRzLT0xLG1hcmtldC5pc0VuYWJsZWQmJih1c2VyLmVuYWJsZWRNYXJrZXRzLT0xKSxhd2FpdCBhcGkuZGIudXBkYXRlKCJ1c2VycyIsdXNlciksYXdhaXQgYXBpLmRiLnJlbW92ZSgibWFya2V0cyIsbWFya2V0KSxhcGkuZW1pdCgicmVtb3ZlTWFya2V0Iix7YWNjb3VudDphcGkuc2VuZGVyLHN5bWJvbDpzeW1ib2x9KSl9fX07Y29uc3QgdXBkYXRlTWFya2V0SW50ZXJuYWw9YXN5bmMocGF5bG9hZCxtYXJrZXQsc2hvdWxkUGF5RmVlLHBhcmFtcyk9Pntjb25zdHtzdHJhdGVneTpzdHJhdGVneSxtYXhCaWRQcmljZTptYXhCaWRQcmljZSxtaW5TZWxsUHJpY2U6bWluU2VsbFByaWNlLG1heEJhc2VUb1NwZW5kOm1heEJhc2VUb1NwZW5kLG1pbkJhc2VUb1NwZW5kOm1pbkJhc2VUb1NwZW5kLG1heFRva2Vuc1RvU2VsbDptYXhUb2tlbnNUb1NlbGwsbWluVG9rZW5zVG9TZWxsOm1pblRva2Vuc1RvU2VsbCxwcmljZUluY3JlbWVudDpwcmljZUluY3JlbWVudCxtaW5TcHJlYWQ6bWluU3ByZWFkLG1heERpc3RGcm9tTmV4dDptYXhEaXN0RnJvbU5leHQsaWdub3JlT3JkZXJRdHlMdDppZ25vcmVPcmRlclF0eUx0LHBsYWNlQXRCaWRXYWxsOnBsYWNlQXRCaWRXYWxsLHBsYWNlQXRTZWxsV2FsbDpwbGFjZUF0U2VsbFdhbGx9PXBheWxvYWQ7aWYodm9pZCAwPT09c3RyYXRlZ3kmJnZvaWQgMD09PW1heEJpZFByaWNlJiZ2b2lkIDA9PT1taW5TZWxsUHJpY2UmJnZvaWQgMD09PW1heEJhc2VUb1NwZW5kJiZ2b2lkIDA9PT1taW5CYXNlVG9TcGVuZCYmdm9pZCAwPT09bWF4VG9rZW5zVG9TZWxsJiZ2b2lkIDA9PT1taW5Ub2tlbnNUb1NlbGwmJnZvaWQgMD09PXByaWNlSW5jcmVtZW50JiZ2b2lkIDA9PT1taW5TcHJlYWQmJnZvaWQgMD09PW1heERpc3RGcm9tTmV4dCYmdm9pZCAwPT09aWdub3JlT3JkZXJRdHlMdCYmdm9pZCAwPT09cGxhY2VBdEJpZFdhbGwmJnZvaWQgMD09PXBsYWNlQXRTZWxsV2FsbClyZXR1cm4hMTtpZihhcGkuYXNzZXJ0KHZvaWQgMD09PW1heEJpZFByaWNlfHxtYXhCaWRQcmljZSYmInN0cmluZyI9PXR5cGVvZiBtYXhCaWRQcmljZSYmIWFwaS5CaWdOdW1iZXIobWF4QmlkUHJpY2UpLmlzTmFOKCkmJmFwaS5CaWdOdW1iZXIobWF4QmlkUHJpY2UpLmd0KDApJiZjb3VudERlY2ltYWxzKG1heEJpZFByaWNlKTw9OCwiaW52YWxpZCBtYXhCaWRQcmljZSIpJiZhcGkuYXNzZXJ0KHZvaWQgMD09PW1pblNlbGxQcmljZXx8bWluU2VsbFByaWNlJiYic3RyaW5nIj09dHlwZW9mIG1pblNlbGxQcmljZSYmIWFwaS5CaWdOdW1iZXIobWluU2VsbFByaWNlKS5pc05hTigpJiZhcGkuQmlnTnVtYmVyKG1pblNlbGxQcmljZSkuZ3QoMCkmJmNvdW50RGVjaW1hbHMobWluU2VsbFByaWNlKTw9OCwiaW52YWxpZCBtaW5TZWxsUHJpY2UiKSYmYXBpLmFzc2VydCh2b2lkIDA9PT1tYXhCYXNlVG9TcGVuZHx8bWF4QmFzZVRvU3BlbmQmJiJzdHJpbmciPT10eXBlb2YgbWF4QmFzZVRvU3BlbmQmJiFhcGkuQmlnTnVtYmVyKG1heEJhc2VUb1NwZW5kKS5pc05hTigpJiZhcGkuQmlnTnVtYmVyKG1heEJhc2VUb1NwZW5kKS5ndCgwKSYmY291bnREZWNpbWFscyhtYXhCYXNlVG9TcGVuZCk8PTgsImludmFsaWQgbWF4QmFzZVRvU3BlbmQiKSYmYXBpLmFzc2VydCh2b2lkIDA9PT1taW5CYXNlVG9TcGVuZHx8bWluQmFzZVRvU3BlbmQmJiJzdHJpbmciPT10eXBlb2YgbWluQmFzZVRvU3BlbmQmJiFhcGkuQmlnTnVtYmVyKG1pbkJhc2VUb1NwZW5kKS5pc05hTigpJiZhcGkuQmlnTnVtYmVyKG1pbkJhc2VUb1NwZW5kKS5ndCgwKSYmY291bnREZWNpbWFscyhtaW5CYXNlVG9TcGVuZCk8PTgsImludmFsaWQgbWluQmFzZVRvU3BlbmQiKSYmYXBpLmFzc2VydCh2b2lkIDA9PT1tYXhUb2tlbnNUb1NlbGx8fG1heFRva2Vuc1RvU2VsbCYmInN0cmluZyI9PXR5cGVvZiBtYXhUb2tlbnNUb1NlbGwmJiFhcGkuQmlnTnVtYmVyKG1heFRva2Vuc1RvU2VsbCkuaXNOYU4oKSYmYXBpLkJpZ051bWJlcihtYXhUb2tlbnNUb1NlbGwpLmd0KDApJiZjb3VudERlY2ltYWxzKG1heFRva2Vuc1RvU2VsbCk8PW1hcmtldC5wcmVjaXNpb24sImludmFsaWQgbWF4VG9rZW5zVG9TZWxsIikmJmFwaS5hc3NlcnQodm9pZCAwPT09bWluVG9rZW5zVG9TZWxsfHxtaW5Ub2tlbnNUb1NlbGwmJiJzdHJpbmciPT10eXBlb2YgbWluVG9rZW5zVG9TZWxsJiYhYXBpLkJpZ051bWJlcihtaW5Ub2tlbnNUb1NlbGwpLmlzTmFOKCkmJmFwaS5CaWdOdW1iZXIobWluVG9rZW5zVG9TZWxsKS5ndCgwKSYmY291bnREZWNpbWFscyhtaW5Ub2tlbnNUb1NlbGwpPD1tYXJrZXQucHJlY2lzaW9uLCJpbnZhbGlkIG1pblRva2Vuc1RvU2VsbCIpJiZhcGkuYXNzZXJ0KHZvaWQgMD09PXByaWNlSW5jcmVtZW50fHxwcmljZUluY3JlbWVudCYmInN0cmluZyI9PXR5cGVvZiBwcmljZUluY3JlbWVudCYmIWFwaS5CaWdOdW1iZXIocHJpY2VJbmNyZW1lbnQpLmlzTmFOKCkmJmFwaS5CaWdOdW1iZXIocHJpY2VJbmNyZW1lbnQpLmd0KDApJiZjb3VudERlY2ltYWxzKHByaWNlSW5jcmVtZW50KTw9OCwiaW52YWxpZCBwcmljZUluY3JlbWVudCIpJiZhcGkuYXNzZXJ0KHZvaWQgMD09PW1pblNwcmVhZHx8bWluU3ByZWFkJiYic3RyaW5nIj09dHlwZW9mIG1pblNwcmVhZCYmIWFwaS5CaWdOdW1iZXIobWluU3ByZWFkKS5pc05hTigpJiZhcGkuQmlnTnVtYmVyKG1pblNwcmVhZCkuZ3QoMCkmJmNvdW50RGVjaW1hbHMobWluU3ByZWFkKTw9OCwiaW52YWxpZCBtaW5TcHJlYWQiKSYmYXBpLmFzc2VydCh2b2lkIDA9PT1tYXhEaXN0RnJvbU5leHR8fG1heERpc3RGcm9tTmV4dCYmInN0cmluZyI9PXR5cGVvZiBtYXhEaXN0RnJvbU5leHQmJiFhcGkuQmlnTnVtYmVyKG1heERpc3RGcm9tTmV4dCkuaXNOYU4oKSYmYXBpLkJpZ051bWJlcihtYXhEaXN0RnJvbU5leHQpLmd0KDApJiZjb3VudERlY2ltYWxzKG1heERpc3RGcm9tTmV4dCk8PTgsImludmFsaWQgbWF4RGlzdEZyb21OZXh0IikmJmFwaS5hc3NlcnQodm9pZCAwPT09aWdub3JlT3JkZXJRdHlMdHx8aWdub3JlT3JkZXJRdHlMdCYmInN0cmluZyI9PXR5cGVvZiBpZ25vcmVPcmRlclF0eUx0JiYhYXBpLkJpZ051bWJlcihpZ25vcmVPcmRlclF0eUx0KS5pc05hTigpJiZhcGkuQmlnTnVtYmVyKGlnbm9yZU9yZGVyUXR5THQpLmd0KDApJiZjb3VudERlY2ltYWxzKGlnbm9yZU9yZGVyUXR5THQpPD1tYXJrZXQucHJlY2lzaW9uLCJpbnZhbGlkIGlnbm9yZU9yZGVyUXR5THQiKSYmYXBpLmFzc2VydCh2b2lkIDA9PT1wbGFjZUF0QmlkV2FsbHx8cGxhY2VBdEJpZFdhbGwmJiJzdHJpbmciPT10eXBlb2YgcGxhY2VBdEJpZFdhbGwmJiFhcGkuQmlnTnVtYmVyKHBsYWNlQXRCaWRXYWxsKS5pc05hTigpJiZhcGkuQmlnTnVtYmVyKHBsYWNlQXRCaWRXYWxsKS5ndCgwKSYmY291bnREZWNpbWFscyhwbGFjZUF0QmlkV2FsbCk8PW1hcmtldC5wcmVjaXNpb24sImludmFsaWQgcGxhY2VBdEJpZFdhbGwiKSYmYXBpLmFzc2VydCh2b2lkIDA9PT1wbGFjZUF0U2VsbFdhbGx8fHBsYWNlQXRTZWxsV2FsbCYmInN0cmluZyI9PXR5cGVvZiBwbGFjZUF0U2VsbFdhbGwmJiFhcGkuQmlnTnVtYmVyKHBsYWNlQXRTZWxsV2FsbCkuaXNOYU4oKSYmYXBpLkJpZ051bWJlcihwbGFjZUF0U2VsbFdhbGwpLmd0KDApJiZjb3VudERlY2ltYWxzKHBsYWNlQXRTZWxsV2FsbCk8PW1hcmtldC5wcmVjaXNpb24sImludmFsaWQgcGxhY2VBdFNlbGxXYWxsIikpe2lmKHNob3VsZFBheUZlZSYmIWF3YWl0IGJ1cm5GZWUocGFyYW1zLmJhc2ljU2V0dGluZ3NGZWUsITApKXJldHVybiExO2NvbnN0IHVwZGF0ZT17YWNjb3VudDptYXJrZXQuYWNjb3VudCxzeW1ib2w6bWFya2V0LnN5bWJvbH07cmV0dXJuIHZvaWQgMCE9PXN0cmF0ZWd5JiZzdHJhdGVneT4wJiYodXBkYXRlLm9sZFN0cmF0ZWd5PW1hcmtldC5zdHJhdGVneSxtYXJrZXQuc3RyYXRlZ3k9c3RyYXRlZ3ksdXBkYXRlLm5ld1N0cmF0ZWd5PXN0cmF0ZWd5KSxtYXhCaWRQcmljZSYmKHVwZGF0ZS5vbGRNYXhCaWRQcmljZT1tYXJrZXQubWF4QmlkUHJpY2UsbWFya2V0Lm1heEJpZFByaWNlPW1heEJpZFByaWNlLHVwZGF0ZS5uZXdNYXhCaWRQcmljZT1tYXhCaWRQcmljZSksbWluU2VsbFByaWNlJiYodXBkYXRlLm9sZE1pblNlbGxQcmljZT1tYXJrZXQubWluU2VsbFByaWNlLG1hcmtldC5taW5TZWxsUHJpY2U9bWluU2VsbFByaWNlLHVwZGF0ZS5uZXdNaW5TZWxsUHJpY2U9bWluU2VsbFByaWNlKSxtYXhCYXNlVG9TcGVuZCYmKHVwZGF0ZS5vbGRNYXhCYXNlVG9TcGVuZD1tYXJrZXQubWF4QmFzZVRvU3BlbmQsbWFya2V0Lm1heEJhc2VUb1NwZW5kPW1heEJhc2VUb1NwZW5kLHVwZGF0ZS5uZXdNYXhCYXNlVG9TcGVuZD1tYXhCYXNlVG9TcGVuZCksbWluQmFzZVRvU3BlbmQmJih1cGRhdGUub2xkTWluQmFzZVRvU3BlbmQ9bWFya2V0Lm1pbkJhc2VUb1NwZW5kLG1hcmtldC5taW5CYXNlVG9TcGVuZD1taW5CYXNlVG9TcGVuZCx1cGRhdGUubmV3TWluQmFzZVRvU3BlbmQ9bWluQmFzZVRvU3BlbmQpLG1heFRva2Vuc1RvU2VsbCYmKHVwZGF0ZS5vbGRNYXhUb2tlbnNUb1NlbGw9bWFya2V0Lm1heFRva2Vuc1RvU2VsbCxtYXJrZXQubWF4VG9rZW5zVG9TZWxsPW1heFRva2Vuc1RvU2VsbCx1cGRhdGUubmV3TWF4VG9rZW5zVG9TZWxsPW1heFRva2Vuc1RvU2VsbCksbWluVG9rZW5zVG9TZWxsJiYodXBkYXRlLm9sZE1pblRva2Vuc1RvU2VsbD1tYXJrZXQubWluVG9rZW5zVG9TZWxsLG1hcmtldC5taW5Ub2tlbnNUb1NlbGw9bWluVG9rZW5zVG9TZWxsLHVwZGF0ZS5uZXdNaW5Ub2tlbnNUb1NlbGw9bWluVG9rZW5zVG9TZWxsKSxwcmljZUluY3JlbWVudCYmKHVwZGF0ZS5vbGRQcmljZUluY3JlbWVudD1tYXJrZXQucHJpY2VJbmNyZW1lbnQsbWFya2V0LnByaWNlSW5jcmVtZW50PXByaWNlSW5jcmVtZW50LHVwZGF0ZS5uZXdQcmljZUluY3JlbWVudD1wcmljZUluY3JlbWVudCksbWluU3ByZWFkJiYodXBkYXRlLm9sZE1pblNwcmVhZD1tYXJrZXQubWluU3ByZWFkLG1hcmtldC5taW5TcHJlYWQ9bWluU3ByZWFkLHVwZGF0ZS5uZXdNaW5TcHJlYWQ9bWluU3ByZWFkKSxtYXhEaXN0RnJvbU5leHQmJih1cGRhdGUub2xkTWF4RGlzdEZyb21OZXh0PW1hcmtldC5tYXhEaXN0RnJvbU5leHQsbWFya2V0Lm1heERpc3RGcm9tTmV4dD1tYXhEaXN0RnJvbU5leHQsdXBkYXRlLm5ld01heERpc3RGcm9tTmV4dD1tYXhEaXN0RnJvbU5leHQpLGlnbm9yZU9yZGVyUXR5THQmJih1cGRhdGUub2xkSWdub3JlT3JkZXJRdHlMdD1tYXJrZXQuaWdub3JlT3JkZXJRdHlMdCxtYXJrZXQuaWdub3JlT3JkZXJRdHlMdD1pZ25vcmVPcmRlclF0eUx0LHVwZGF0ZS5uZXdJZ25vcmVPcmRlclF0eUx0PWlnbm9yZU9yZGVyUXR5THQpLHBsYWNlQXRCaWRXYWxsJiYodXBkYXRlLm9sZFBsYWNlQXRCaWRXYWxsPW1hcmtldC5wbGFjZUF0QmlkV2FsbCxtYXJrZXQucGxhY2VBdEJpZFdhbGw9cGxhY2VBdEJpZFdhbGwsdXBkYXRlLm5ld1BsYWNlQXRCaWRXYWxsPXBsYWNlQXRCaWRXYWxsKSxwbGFjZUF0U2VsbFdhbGwmJih1cGRhdGUub2xkUGxhY2VBdFNlbGxXYWxsPW1hcmtldC5wbGFjZUF0U2VsbFdhbGwsbWFya2V0LnBsYWNlQXRTZWxsV2FsbD1wbGFjZUF0U2VsbFdhbGwsdXBkYXRlLm5ld1BsYWNlQXRTZWxsV2FsbD1wbGFjZUF0U2VsbFdhbGwpLGF3YWl0IGFwaS5kYi51cGRhdGUoIm1hcmtldHMiLG1hcmtldCksYXBpLmVtaXQoInVwZGF0ZU1hcmtldCIsdXBkYXRlKSwhMH1yZXR1cm4hMX07YWN0aW9ucy51cGRhdGVNYXJrZXQ9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e3N5bWJvbDpzeW1ib2wsc3RyYXRlZ3k6c3RyYXRlZ3ksaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX09cGF5bG9hZCxzdHJhdFR5cGVzPVsxLDIsM107aWYoYXBpLmFzc2VydCghMD09PWlzU2lnbmVkV2l0aEFjdGl2ZUtleSwieW91IG11c3QgdXNlIGEgY3VzdG9tX2pzb24gc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5IikmJmFwaS5hc3NlcnQoc3ltYm9sJiYic3RyaW5nIj09dHlwZW9mIHN5bWJvbCYmIlNXQVAuSElWRSIhPT1zeW1ib2wsImludmFsaWQgcGFyYW1zIikpe2NvbnN0IHVzZXI9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInVzZXJzIix7YWNjb3VudDphcGkuc2VuZGVyfSk7aWYoYXBpLmFzc2VydChudWxsIT09dXNlciwidXNlciBub3QgcmVnaXN0ZXJlZCIpJiZhcGkuYXNzZXJ0KHZvaWQgMD09PXN0cmF0ZWd5fHwibnVtYmVyIj09dHlwZW9mIHN0cmF0ZWd5JiZOdW1iZXIuaXNJbnRlZ2VyKHN0cmF0ZWd5KSYmc3RyYXRUeXBlcy5pbmNsdWRlcyhzdHJhdGVneSkmJnVzZXIuaXNQcmVtaXVtLCJpbnZhbGlkIHBhcmFtcyBvciB1c2VyIG5vdCBwcmVtaXVtIikpe2NvbnN0IHBhcmFtcz1hd2FpdCBhcGkuZGIuZmluZE9uZSgicGFyYW1zIix7fSk7bGV0IGF1dGhvcml6ZWRBY3Rpb249ITE7aWYoYXV0aG9yaXplZEFjdGlvbj0hIXVzZXIuaXNQcmVtaXVtfHxhd2FpdCB2ZXJpZnlVdGlsaXR5VG9rZW5CYWxhbmNlKHBhcmFtcy5iYXNpY1NldHRpbmdzRmVlLGFwaS5zZW5kZXIpLGFwaS5hc3NlcnQoYXV0aG9yaXplZEFjdGlvbiwieW91IG11c3QgaGF2ZSBlbm91Z2ggdG9rZW5zIHRvIGNvdmVyIHRoZSBzZXR0aW5ncyBjaGFuZ2UgZmVlIikpe2NvbnN0IG1hcmtldD1hd2FpdCBhcGkuZGIuZmluZE9uZSgibWFya2V0cyIse2FjY291bnQ6YXBpLnNlbmRlcixzeW1ib2w6c3ltYm9sfSk7aWYoYXBpLmFzc2VydChudWxsIT09bWFya2V0LCJtYXJrZXQgbXVzdCBleGlzdCIpKXtyZXR1cm4gYXdhaXQgdXBkYXRlTWFya2V0SW50ZXJuYWwocGF5bG9hZCxtYXJrZXQsIXVzZXIuaXNQcmVtaXVtLHBhcmFtcyl9fX19cmV0dXJuITF9LGFjdGlvbnMuYWRkTWFya2V0PWFzeW5jIHBheWxvYWQ9Pntjb25zdHtzeW1ib2w6c3ltYm9sLHN0cmF0ZWd5OnN0cmF0ZWd5LGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9PXBheWxvYWQsc3RyYXRUeXBlcz1bMSwyLDNdO2lmKGFwaS5hc3NlcnQoITA9PT1pc1NpZ25lZFdpdGhBY3RpdmVLZXksInlvdSBtdXN0IHVzZSBhIGN1c3RvbV9qc29uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpJiZhcGkuYXNzZXJ0KHN5bWJvbCYmInN0cmluZyI9PXR5cGVvZiBzeW1ib2wmJiJTV0FQLkhJVkUiIT09c3ltYm9sLCJpbnZhbGlkIHBhcmFtcyIpKXtjb25zdCB1c2VyPWF3YWl0IGFwaS5kYi5maW5kT25lKCJ1c2VycyIse2FjY291bnQ6YXBpLnNlbmRlcn0pO2lmKGFwaS5hc3NlcnQobnVsbCE9PXVzZXIsInVzZXIgbm90IHJlZ2lzdGVyZWQiKSYmYXBpLmFzc2VydCh2b2lkIDA9PT1zdHJhdGVneXx8Im51bWJlciI9PXR5cGVvZiBzdHJhdGVneSYmTnVtYmVyLmlzSW50ZWdlcihzdHJhdGVneSkmJnN0cmF0VHlwZXMuaW5jbHVkZXMoc3RyYXRlZ3kpJiZ1c2VyLmlzUHJlbWl1bSwiaW52YWxpZCBwYXJhbXMgb3IgdXNlciBub3QgcHJlbWl1bSIpKXtjb25zdCB0b2tlbj1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoInRva2VucyIsInRva2VucyIse3N5bWJvbDpzeW1ib2x9KTtpZihhcGkuYXNzZXJ0KG51bGwhPT10b2tlbiwic3ltYm9sIG11c3QgZXhpc3QiKSl7Y29uc3QgbWFya2V0PWF3YWl0IGFwaS5kYi5maW5kT25lKCJtYXJrZXRzIix7YWNjb3VudDphcGkuc2VuZGVyLHN5bWJvbDpzeW1ib2x9KTtpZihhcGkuYXNzZXJ0KG51bGw9PT1tYXJrZXQsIm1hcmtldCBhbHJlYWR5IGFkZGVkIikpe2NvbnN0IGF1dGhvcml6ZWRBZGRpdGlvbj11c2VyLmlzUHJlbWl1bXx8MD09PXVzZXIubWFya2V0cztpZihhcGkuYXNzZXJ0KGF1dGhvcml6ZWRBZGRpdGlvbiwibm90IGFsbG93ZWQgdG8gYWRkIGFub3RoZXIgbWFya2V0Iikpe2NvbnN0IHBhcmFtcz1hd2FpdCBhcGkuZGIuZmluZE9uZSgicGFyYW1zIix7fSk7bGV0IHJlcXVpcmVkU3Rha2U9YXBpLkJpZ051bWJlcihwYXJhbXMuc3Rha2VQZXJNYXJrZXQpLm11bHRpcGxpZWRCeSh1c2VyLm1hcmtldHMrMSk7dXNlci5pc1ByZW1pdW0mJihyZXF1aXJlZFN0YWtlPXJlcXVpcmVkU3Rha2UucGx1cyhwYXJhbXMucHJlbWl1bUJhc2VTdGFrZSkpO2NvbnN0IGhhc0Vub3VnaFN0YWtlPWF3YWl0IHZlcmlmeVV0aWxpdHlUb2tlblN0YWtlKHJlcXVpcmVkU3Rha2UsYXBpLnNlbmRlcik7aWYoYXBpLmFzc2VydChoYXNFbm91Z2hTdGFrZSwibXVzdCBzdGFrZSBtb3JlIEJFRSB0byBhZGQgYSBtYXJrZXQiKSl7Y29uc3QgbmV3TWFya2V0PXthY2NvdW50OmFwaS5zZW5kZXIsc3ltYm9sOnN5bWJvbCxwcmVjaXNpb246dG9rZW4ucHJlY2lzaW9uLHN0cmF0ZWd5OjEsbWF4QmlkUHJpY2U6IjEwMDAiLG1pblNlbGxQcmljZToiMC4wMDAwMDAwMSIsbWF4QmFzZVRvU3BlbmQ6IjEwMCIsbWluQmFzZVRvU3BlbmQ6IjEiLG1heFRva2Vuc1RvU2VsbDoiMTAwIixtaW5Ub2tlbnNUb1NlbGw6IjEiLHByaWNlSW5jcmVtZW50OiIwLjAwMDAxIixtaW5TcHJlYWQ6IjAuMDAwMDAwMDEiLG1heERpc3RGcm9tTmV4dDoiMC4wMDAxIixpZ25vcmVPcmRlclF0eUx0OiI1MCIscGxhY2VBdEJpZFdhbGw6IjEwMDAwIixwbGFjZUF0U2VsbFdhbGw6IjEwMDAwIixpc0VuYWJsZWQ6ITAsY3JlYXRpb25UaW1lc3RhbXA6Z2V0Q3VycmVudFRpbWVzdGFtcCgpLGNyZWF0aW9uQmxvY2s6YXBpLmJsb2NrTnVtYmVyfSxhZGRlZE1hcmtldD1hd2FpdCBhcGkuZGIuaW5zZXJ0KCJtYXJrZXRzIixuZXdNYXJrZXQpO2FwaS5lbWl0KCJhZGRNYXJrZXQiLHthY2NvdW50OmFwaS5zZW5kZXIsc3ltYm9sOnN5bWJvbH0pLHVzZXIubWFya2V0cys9MSx1c2VyLmVuYWJsZWRNYXJrZXRzKz0xLGF3YWl0IGFwaS5kYi51cGRhdGUoInVzZXJzIix1c2VyKSxhd2FpdCB1cGRhdGVNYXJrZXRJbnRlcm5hbChwYXlsb2FkLGFkZGVkTWFya2V0LCExLHBhcmFtcyl9fX19fX19LGFjdGlvbnMucmVnaXN0ZXI9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e2lzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9PXBheWxvYWQscGFyYW1zPWF3YWl0IGFwaS5kYi5maW5kT25lKCJwYXJhbXMiLHt9KSxhdXRob3JpemVkUmVnaXN0cmF0aW9uPWF3YWl0IHZlcmlmeVV0aWxpdHlUb2tlbkJhbGFuY2UocGFyYW1zLmJhc2ljRmVlLGFwaS5zZW5kZXIpO2lmKGFwaS5hc3NlcnQoYXV0aG9yaXplZFJlZ2lzdHJhdGlvbiwieW91IG11c3QgaGF2ZSBlbm91Z2ggdG9rZW5zIHRvIGNvdmVyIHRoZSByZWdpc3RyYXRpb24gZmVlIikmJmFwaS5hc3NlcnQoITA9PT1pc1NpZ25lZFdpdGhBY3RpdmVLZXksInlvdSBtdXN0IHVzZSBhIGN1c3RvbV9qc29uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpKXtjb25zdCB1c2VyPWF3YWl0IGFwaS5kYi5maW5kT25lKCJ1c2VycyIse2FjY291bnQ6YXBpLnNlbmRlcn0pO2lmKGFwaS5hc3NlcnQobnVsbD09PXVzZXIsInVzZXIgYWxyZWFkeSByZWdpc3RlcmVkIikpe2lmKCFhd2FpdCBidXJuRmVlKHBhcmFtcy5iYXNpY0ZlZSxpc1NpZ25lZFdpdGhBY3RpdmVLZXkpKXJldHVybiExO2NvbnN0IGNyZWF0aW9uVGltZXN0YW1wPWdldEN1cnJlbnRUaW1lc3RhbXAoKSxuZXdVc2VyPXthY2NvdW50OmFwaS5zZW5kZXIsaXNQcmVtaXVtOiExLGlzUHJlbWl1bUZlZVBhaWQ6ITEsaXNPbkNvb2xkb3duOiExLGlzRW5hYmxlZDohMCxtYXJrZXRzOjAsZW5hYmxlZE1hcmtldHM6MCx0aW1lTGltaXQ6MypwYXJhbXMuYmFzaWNEdXJhdGlvbkJsb2NrcyoxZTMsbGFzdFRpY2tUaW1lc3RhbXA6Y3JlYXRpb25UaW1lc3RhbXAsbGFzdFRpY2tCbG9jazphcGkuYmxvY2tOdW1iZXIsY3JlYXRpb25UaW1lc3RhbXA6Y3JlYXRpb25UaW1lc3RhbXAsY3JlYXRpb25CbG9jazphcGkuYmxvY2tOdW1iZXJ9O3JldHVybiBhd2FpdCBhcGkuZGIuaW5zZXJ0KCJ1c2VycyIsbmV3VXNlciksYXBpLmVtaXQoInJlZ2lzdGVyIix7YWNjb3VudDphcGkuc2VuZGVyfSksITB9fXJldHVybiExfTs="}}}