@vtj/designer 0.9.0-alpha.2 → 0.9.0-alpha.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,25 +0,0 @@
1
- const c = "dmFyIFdmPU9iamVjdC5kZWZpbmVQcm9wZXJ0eTt2YXIgVWY9KF90LFhlLFdlKT0+WGUgaW4gX3Q/V2YoX3QsWGUse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOldlfSk6X3RbWGVdPVdlO3ZhciBDdD0oX3QsWGUsV2UpPT5VZihfdCx0eXBlb2YgWGUhPSJzeW1ib2wiP1hlKyIiOlhlLFdlKTsoZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7dmFyIGN0LFNlLFo7Y2xhc3MgX3R7Y29uc3RydWN0b3IoKXt0aGlzLmxpc3RlbmVycz1bXSx0aGlzLnVuZXhwZWN0ZWRFcnJvckhhbmRsZXI9ZnVuY3Rpb24odCl7c2V0VGltZW91dCgoKT0+e3Rocm93IHQuc3RhY2s/THQuaXNFcnJvck5vVGVsZW1ldHJ5KHQpP25ldyBMdCh0Lm1lc3NhZ2UrYAoKYCt0LnN0YWNrKTpuZXcgRXJyb3IodC5tZXNzYWdlK2AKCmArdC5zdGFjayk6dH0sMCl9fWVtaXQodCl7dGhpcy5saXN0ZW5lcnMuZm9yRWFjaChuPT57bih0KX0pfW9uVW5leHBlY3RlZEVycm9yKHQpe3RoaXMudW5leHBlY3RlZEVycm9ySGFuZGxlcih0KSx0aGlzLmVtaXQodCl9b25VbmV4cGVjdGVkRXh0ZXJuYWxFcnJvcih0KXt0aGlzLnVuZXhwZWN0ZWRFcnJvckhhbmRsZXIodCl9fWNvbnN0IFhlPW5ldyBfdDtmdW5jdGlvbiBXZShlKXt4aChlKXx8WGUub25VbmV4cGVjdGVkRXJyb3IoZSl9ZnVuY3Rpb24gJHMoZSl7aWYoZSBpbnN0YW5jZW9mIEVycm9yKXtjb25zdHtuYW1lOnQsbWVzc2FnZTpufT1lLHI9ZS5zdGFja3RyYWNlfHxlLnN0YWNrO3JldHVybnskaXNFcnJvcjohMCxuYW1lOnQsbWVzc2FnZTpuLHN0YWNrOnIsbm9UZWxlbWV0cnk6THQuaXNFcnJvck5vVGVsZW1ldHJ5KGUpfX1yZXR1cm4gZX1jb25zdCBWcj0iQ2FuY2VsZWQiO2Z1bmN0aW9uIHhoKGUpe3JldHVybiBlIGluc3RhbmNlb2YgU2g/ITA6ZSBpbnN0YW5jZW9mIEVycm9yJiZlLm5hbWU9PT1WciYmZS5tZXNzYWdlPT09VnJ9Y2xhc3MgU2ggZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3Rvcigpe3N1cGVyKFZyKSx0aGlzLm5hbWU9dGhpcy5tZXNzYWdlfX1jbGFzcyBMdCBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQpLHRoaXMubmFtZT0iQ29kZUV4cGVjdGVkRXJyb3IifXN0YXRpYyBmcm9tRXJyb3IodCl7aWYodCBpbnN0YW5jZW9mIEx0KXJldHVybiB0O2NvbnN0IG49bmV3IEx0O3JldHVybiBuLm1lc3NhZ2U9dC5tZXNzYWdlLG4uc3RhY2s9dC5zdGFjayxufXN0YXRpYyBpc0Vycm9yTm9UZWxlbWV0cnkodCl7cmV0dXJuIHQubmFtZT09PSJDb2RlRXhwZWN0ZWRFcnJvciJ9fWNsYXNzIGtlIGV4dGVuZHMgRXJyb3J7Y29uc3RydWN0b3IodCl7c3VwZXIodHx8IkFuIHVuZXhwZWN0ZWQgYnVnIG9jY3VycmVkLiIpLE9iamVjdC5zZXRQcm90b3R5cGVPZih0aGlzLGtlLnByb3RvdHlwZSl9fWZ1bmN0aW9uIENoKGUsdCl7Y29uc3Qgbj10aGlzO2xldCByPSExLGk7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHJ8fChyPSEwLGk9ZS5hcHBseShuLGFyZ3VtZW50cykpLGl9fXZhciBPbjsoZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChFKXtyZXR1cm4gRSYmdHlwZW9mIEU9PSJvYmplY3QiJiZ0eXBlb2YgRVtTeW1ib2wuaXRlcmF0b3JdPT0iZnVuY3Rpb24ifWUuaXM9dDtjb25zdCBuPU9iamVjdC5mcmVlemUoW10pO2Z1bmN0aW9uIHIoKXtyZXR1cm4gbn1lLmVtcHR5PXI7ZnVuY3Rpb24qaShFKXt5aWVsZCBFfWUuc2luZ2xlPWk7ZnVuY3Rpb24gcyhFKXtyZXR1cm4gdChFKT9FOmkoRSl9ZS53cmFwPXM7ZnVuY3Rpb24gYShFKXtyZXR1cm4gRXx8bn1lLmZyb209YTtmdW5jdGlvbipsKEUpe2ZvcihsZXQgRj1FLmxlbmd0aC0xO0Y+PTA7Ri0tKXlpZWxkIEVbRl19ZS5yZXZlcnNlPWw7ZnVuY3Rpb24gbyhFKXtyZXR1cm4hRXx8RVtTeW1ib2wuaXRlcmF0b3JdKCkubmV4dCgpLmRvbmU9PT0hMH1lLmlzRW1wdHk9bztmdW5jdGlvbiBjKEUpe3JldHVybiBFW1N5bWJvbC5pdGVyYXRvcl0oKS5uZXh0KCkudmFsdWV9ZS5maXJzdD1jO2Z1bmN0aW9uIGQoRSxGKXtsZXQgTT0wO2Zvcihjb25zdCBUIG9mIEUpaWYoRihULE0rKykpcmV0dXJuITA7cmV0dXJuITF9ZS5zb21lPWQ7ZnVuY3Rpb24gdShFLEYpe2Zvcihjb25zdCBNIG9mIEUpaWYoRihNKSlyZXR1cm4gTX1lLmZpbmQ9dTtmdW5jdGlvbipmKEUsRil7Zm9yKGNvbnN0IE0gb2YgRSlGKE0pJiYoeWllbGQgTSl9ZS5maWx0ZXI9ZjtmdW5jdGlvbiptKEUsRil7bGV0IE09MDtmb3IoY29uc3QgVCBvZiBFKXlpZWxkIEYoVCxNKyspfWUubWFwPW07ZnVuY3Rpb24qdihFLEYpe2xldCBNPTA7Zm9yKGNvbnN0IFQgb2YgRSl5aWVsZCpGKFQsTSsrKX1lLmZsYXRNYXA9djtmdW5jdGlvbip3KC4uLkUpe2Zvcihjb25zdCBGIG9mIEUpeWllbGQqRn1lLmNvbmNhdD13O2Z1bmN0aW9uIGsoRSxGLE0pe2xldCBUPU07Zm9yKGNvbnN0IFAgb2YgRSlUPUYoVCxQKTtyZXR1cm4gVH1lLnJlZHVjZT1rO2Z1bmN0aW9uKlIoRSxGLE09RS5sZW5ndGgpe2ZvcihGPDAmJihGKz1FLmxlbmd0aCksTTwwP00rPUUubGVuZ3RoOk0+RS5sZW5ndGgmJihNPUUubGVuZ3RoKTtGPE07RisrKXlpZWxkIEVbRl19ZS5zbGljZT1SO2Z1bmN0aW9uIEkoRSxGPU51bWJlci5QT1NJVElWRV9JTkZJTklUWSl7Y29uc3QgTT1bXTtpZihGPT09MClyZXR1cm5bTSxFXTtjb25zdCBUPUVbU3ltYm9sLml0ZXJhdG9yXSgpO2ZvcihsZXQgUD0wO1A8RjtQKyspe2NvbnN0IGo9VC5uZXh0KCk7aWYoai5kb25lKXJldHVybltNLGUuZW1wdHkoKV07TS5wdXNoKGoudmFsdWUpfXJldHVybltNLHtbU3ltYm9sLml0ZXJhdG9yXSgpe3JldHVybiBUfX1dfWUuY29uc3VtZT1JO2FzeW5jIGZ1bmN0aW9uIE4oRSl7Y29uc3QgRj1bXTtmb3IgYXdhaXQoY29uc3QgTSBvZiBFKUYucHVzaChNKTtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKEYpfWUuYXN5bmNUb0FycmF5PU59KShPbnx8KE9uPXt9KSk7ZnVuY3Rpb24gVmYoZSl7cmV0dXJuIGV9ZnVuY3Rpb24gJGYoZSx0KXt9ZnVuY3Rpb24gQnMoZSl7aWYoT24uaXMoZSkpe2NvbnN0IHQ9W107Zm9yKGNvbnN0IG4gb2YgZSlpZihuKXRyeXtuLmRpc3Bvc2UoKX1jYXRjaChyKXt0LnB1c2gocil9aWYodC5sZW5ndGg9PT0xKXRocm93IHRbMF07aWYodC5sZW5ndGg+MSl0aHJvdyBuZXcgQWdncmVnYXRlRXJyb3IodCwiRW5jb3VudGVyZWQgZXJyb3JzIHdoaWxlIGRpc3Bvc2luZyBvZiBzdG9yZSIpO3JldHVybiBBcnJheS5pc0FycmF5KGUpP1tdOmV9ZWxzZSBpZihlKXJldHVybiBlLmRpc3Bvc2UoKSxlfWZ1bmN0aW9uIF9oKC4uLmUpe3JldHVybiBXbigoKT0+QnMoZSkpfWZ1bmN0aW9uIFduKGUpe3JldHVybntkaXNwb3NlOkNoKCgpPT57ZSgpfSl9fWNvbnN0IElyPWNsYXNzIElye2NvbnN0cnVjdG9yKCl7dGhpcy5fdG9EaXNwb3NlPW5ldyBTZXQsdGhpcy5faXNEaXNwb3NlZD0hMX1kaXNwb3NlKCl7dGhpcy5faXNEaXNwb3NlZHx8KHRoaXMuX2lzRGlzcG9zZWQ9ITAsdGhpcy5jbGVhcigpKX1nZXQgaXNEaXNwb3NlZCgpe3JldHVybiB0aGlzLl9pc0Rpc3Bvc2VkfWNsZWFyKCl7aWYodGhpcy5fdG9EaXNwb3NlLnNpemUhPT0wKXRyeXtCcyh0aGlzLl90b0Rpc3Bvc2UpfWZpbmFsbHl7dGhpcy5fdG9EaXNwb3NlLmNsZWFyKCl9fWFkZCh0KXtpZighdClyZXR1cm4gdDtpZih0PT09dGhpcyl0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCByZWdpc3RlciBhIGRpc3Bvc2FibGUgb24gaXRzZWxmISIpO3JldHVybiB0aGlzLl9pc0Rpc3Bvc2VkP0lyLkRJU0FCTEVfRElTUE9TRURfV0FSTklOR3x8Y29uc29sZS53YXJuKG5ldyBFcnJvcigiVHJ5aW5nIHRvIGFkZCBhIGRpc3Bvc2FibGUgdG8gYSBEaXNwb3NhYmxlU3RvcmUgdGhhdCBoYXMgYWxyZWFkeSBiZWVuIGRpc3Bvc2VkIG9mLiBUaGUgYWRkZWQgb2JqZWN0IHdpbGwgYmUgbGVha2VkISIpLnN0YWNrKTp0aGlzLl90b0Rpc3Bvc2UuYWRkKHQpLHR9ZGVsZXRlQW5kTGVhayh0KXt0JiZ0aGlzLl90b0Rpc3Bvc2UuaGFzKHQpJiZ0aGlzLl90b0Rpc3Bvc2UuZGVsZXRlKHQpfX07SXIuRElTQUJMRV9ESVNQT1NFRF9XQVJOSU5HPSExO2xldCBvbj1Jcjtjb25zdCBUcz1jbGFzcyBUc3tjb25zdHJ1Y3Rvcigpe3RoaXMuX3N0b3JlPW5ldyBvbix0aGlzLl9zdG9yZX1kaXNwb3NlKCl7dGhpcy5fc3RvcmUuZGlzcG9zZSgpfV9yZWdpc3Rlcih0KXtpZih0PT09dGhpcyl0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCByZWdpc3RlciBhIGRpc3Bvc2FibGUgb24gaXRzZWxmISIpO3JldHVybiB0aGlzLl9zdG9yZS5hZGQodCl9fTtUcy5Ob25lPU9iamVjdC5mcmVlemUoe2Rpc3Bvc2UoKXt9fSk7bGV0IHp0PVRzLG9lPShjdD1jbGFzc3tjb25zdHJ1Y3Rvcih0KXt0aGlzLmVsZW1lbnQ9dCx0aGlzLm5leHQ9Y3QuVW5kZWZpbmVkLHRoaXMucHJldj1jdC5VbmRlZmluZWR9fSxjdC5VbmRlZmluZWQ9bmV3IGN0KHZvaWQgMCksY3QpO2NsYXNzIGtoe2NvbnN0cnVjdG9yKCl7dGhpcy5fZmlyc3Q9b2UuVW5kZWZpbmVkLHRoaXMuX2xhc3Q9b2UuVW5kZWZpbmVkLHRoaXMuX3NpemU9MH1nZXQgc2l6ZSgpe3JldHVybiB0aGlzLl9zaXplfWlzRW1wdHkoKXtyZXR1cm4gdGhpcy5fZmlyc3Q9PT1vZS5VbmRlZmluZWR9Y2xlYXIoKXtsZXQgdD10aGlzLl9maXJzdDtmb3IoO3QhPT1vZS5VbmRlZmluZWQ7KXtjb25zdCBuPXQubmV4dDt0LnByZXY9b2UuVW5kZWZpbmVkLHQubmV4dD1vZS5VbmRlZmluZWQsdD1ufXRoaXMuX2ZpcnN0PW9lLlVuZGVmaW5lZCx0aGlzLl9sYXN0PW9lLlVuZGVmaW5lZCx0aGlzLl9zaXplPTB9dW5zaGlmdCh0KXtyZXR1cm4gdGhpcy5faW5zZXJ0KHQsITEpfXB1c2godCl7cmV0dXJuIHRoaXMuX2luc2VydCh0LCEwKX1faW5zZXJ0KHQsbil7Y29uc3Qgcj1uZXcgb2UodCk7aWYodGhpcy5fZmlyc3Q9PT1vZS5VbmRlZmluZWQpdGhpcy5fZmlyc3Q9cix0aGlzLl9sYXN0PXI7ZWxzZSBpZihuKXtjb25zdCBzPXRoaXMuX2xhc3Q7dGhpcy5fbGFzdD1yLHIucHJldj1zLHMubmV4dD1yfWVsc2V7Y29uc3Qgcz10aGlzLl9maXJzdDt0aGlzLl9maXJzdD1yLHIubmV4dD1zLHMucHJldj1yfXRoaXMuX3NpemUrPTE7bGV0IGk9ITE7cmV0dXJuKCk9PntpfHwoaT0hMCx0aGlzLl9yZW1vdmUocikpfX1zaGlmdCgpe2lmKHRoaXMuX2ZpcnN0IT09b2UuVW5kZWZpbmVkKXtjb25zdCB0PXRoaXMuX2ZpcnN0LmVsZW1lbnQ7cmV0dXJuIHRoaXMuX3JlbW92ZSh0aGlzLl9maXJzdCksdH19cG9wKCl7aWYodGhpcy5fbGFzdCE9PW9lLlVuZGVmaW5lZCl7Y29uc3QgdD10aGlzLl9sYXN0LmVsZW1lbnQ7cmV0dXJuIHRoaXMuX3JlbW92ZSh0aGlzLl9sYXN0KSx0fX1fcmVtb3ZlKHQpe2lmKHQucHJldiE9PW9lLlVuZGVmaW5lZCYmdC5uZXh0IT09b2UuVW5kZWZpbmVkKXtjb25zdCBuPXQucHJldjtuLm5leHQ9dC5uZXh0LHQubmV4dC5wcmV2PW59ZWxzZSB0LnByZXY9PT1vZS5VbmRlZmluZWQmJnQubmV4dD09PW9lLlVuZGVmaW5lZD8odGhpcy5fZmlyc3Q9b2UuVW5kZWZpbmVkLHRoaXMuX2xhc3Q9b2UuVW5kZWZpbmVkKTp0Lm5leHQ9PT1vZS5VbmRlZmluZWQ/KHRoaXMuX2xhc3Q9dGhpcy5fbGFzdC5wcmV2LHRoaXMuX2xhc3QubmV4dD1vZS5VbmRlZmluZWQpOnQucHJldj09PW9lLlVuZGVmaW5lZCYmKHRoaXMuX2ZpcnN0PXRoaXMuX2ZpcnN0Lm5leHQsdGhpcy5fZmlyc3QucHJldj1vZS5VbmRlZmluZWQpO3RoaXMuX3NpemUtPTF9KltTeW1ib2wuaXRlcmF0b3JdKCl7bGV0IHQ9dGhpcy5fZmlyc3Q7Zm9yKDt0IT09b2UuVW5kZWZpbmVkOyl5aWVsZCB0LmVsZW1lbnQsdD10Lm5leHR9fWNvbnN0IEVoPWdsb2JhbFRoaXMucGVyZm9ybWFuY2UmJnR5cGVvZiBnbG9iYWxUaGlzLnBlcmZvcm1hbmNlLm5vdz09ImZ1bmN0aW9uIjtjbGFzcyBVbntzdGF0aWMgY3JlYXRlKHQpe3JldHVybiBuZXcgVW4odCl9Y29uc3RydWN0b3IodCl7dGhpcy5fbm93PUVoJiZ0PT09ITE/RGF0ZS5ub3c6Z2xvYmFsVGhpcy5wZXJmb3JtYW5jZS5ub3cuYmluZChnbG9iYWxUaGlzLnBlcmZvcm1hbmNlKSx0aGlzLl9zdGFydFRpbWU9dGhpcy5fbm93KCksdGhpcy5fc3RvcFRpbWU9LTF9c3RvcCgpe3RoaXMuX3N0b3BUaW1lPXRoaXMuX25vdygpfXJlc2V0KCl7dGhpcy5fc3RhcnRUaW1lPXRoaXMuX25vdygpLHRoaXMuX3N0b3BUaW1lPS0xfWVsYXBzZWQoKXtyZXR1cm4gdGhpcy5fc3RvcFRpbWUhPT0tMT90aGlzLl9zdG9wVGltZS10aGlzLl9zdGFydFRpbWU6dGhpcy5fbm93KCktdGhpcy5fc3RhcnRUaW1lfX12YXIgVm47KGZ1bmN0aW9uKGUpe2UuTm9uZT0oKT0+enQuTm9uZTtmdW5jdGlvbiB0KEMsUyl7cmV0dXJuIGYoQywoKT0+e30sMCx2b2lkIDAsITAsdm9pZCAwLFMpfWUuZGVmZXI9dDtmdW5jdGlvbiBuKEMpe3JldHVybihTLHo9bnVsbCxEKT0+e2xldCBMPSExLFU7cmV0dXJuIFU9QyhCPT57aWYoIUwpcmV0dXJuIFU/VS5kaXNwb3NlKCk6TD0hMCxTLmNhbGwoeixCKX0sbnVsbCxEKSxMJiZVLmRpc3Bvc2UoKSxVfX1lLm9uY2U9bjtmdW5jdGlvbiByKEMsUyl7cmV0dXJuIGUub25jZShlLmZpbHRlcihDLFMpKX1lLm9uY2VJZj1yO2Z1bmN0aW9uIGkoQyxTLHope3JldHVybiBkKChELEw9bnVsbCxVKT0+QyhCPT5ELmNhbGwoTCxTKEIpKSxudWxsLFUpLHopfWUubWFwPWk7ZnVuY3Rpb24gcyhDLFMseil7cmV0dXJuIGQoKEQsTD1udWxsLFUpPT5DKEI9PntTKEIpLEQuY2FsbChMLEIpfSxudWxsLFUpLHopfWUuZm9yRWFjaD1zO2Z1bmN0aW9uIGEoQyxTLHope3JldHVybiBkKChELEw9bnVsbCxVKT0+QyhCPT5TKEIpJiZELmNhbGwoTCxCKSxudWxsLFUpLHopfWUuZmlsdGVyPWE7ZnVuY3Rpb24gbChDKXtyZXR1cm4gQ31lLnNpZ25hbD1sO2Z1bmN0aW9uIG8oLi4uQyl7cmV0dXJuKFMsej1udWxsLEQpPT57Y29uc3QgTD1faCguLi5DLm1hcChVPT5VKEI9PlMuY2FsbCh6LEIpKSkpO3JldHVybiB1KEwsRCl9fWUuYW55PW87ZnVuY3Rpb24gYyhDLFMseixEKXtsZXQgTD16O3JldHVybiBpKEMsVT0+KEw9UyhMLFUpLEwpLEQpfWUucmVkdWNlPWM7ZnVuY3Rpb24gZChDLFMpe2xldCB6O2NvbnN0IEQ9e29uV2lsbEFkZEZpcnN0TGlzdGVuZXIoKXt6PUMoTC5maXJlLEwpfSxvbkRpZFJlbW92ZUxhc3RMaXN0ZW5lcigpe3o/LmRpc3Bvc2UoKX19LEw9bmV3IERlKEQpO3JldHVybiBTPy5hZGQoTCksTC5ldmVudH1mdW5jdGlvbiB1KEMsUyl7cmV0dXJuIFMgaW5zdGFuY2VvZiBBcnJheT9TLnB1c2goQyk6UyYmUy5hZGQoQyksQ31mdW5jdGlvbiBmKEMsUyx6PTEwMCxEPSExLEw9ITEsVSxCKXtsZXQgcSxhZSxTdCxJdD0wLEF0O2NvbnN0IE9zPXtsZWFrV2FybmluZ1RocmVzaG9sZDpVLG9uV2lsbEFkZEZpcnN0TGlzdGVuZXIoKXtxPUMoVGY9PntJdCsrLGFlPVMoYWUsVGYpLEQmJiFTdCYmKE9yLmZpcmUoYWUpLGFlPXZvaWQgMCksQXQ9KCk9Pntjb25zdCBPZj1hZTthZT12b2lkIDAsU3Q9dm9pZCAwLCghRHx8SXQ+MSkmJk9yLmZpcmUoT2YpLEl0PTB9LHR5cGVvZiB6PT0ibnVtYmVyIj8oY2xlYXJUaW1lb3V0KFN0KSxTdD1zZXRUaW1lb3V0KEF0LHopKTpTdD09PXZvaWQgMCYmKFN0PTAscXVldWVNaWNyb3Rhc2soQXQpKX0pfSxvbldpbGxSZW1vdmVMaXN0ZW5lcigpe0wmJkl0PjAmJkF0Py4oKX0sb25EaWRSZW1vdmVMYXN0TGlzdGVuZXIoKXtBdD12b2lkIDAscS5kaXNwb3NlKCl9fSxPcj1uZXcgRGUoT3MpO3JldHVybiBCPy5hZGQoT3IpLE9yLmV2ZW50fWUuZGVib3VuY2U9ZjtmdW5jdGlvbiBtKEMsUz0wLHope3JldHVybiBlLmRlYm91bmNlKEMsKEQsTCk9PkQ/KEQucHVzaChMKSxEKTpbTF0sUyx2b2lkIDAsITAsdm9pZCAwLHopfWUuYWNjdW11bGF0ZT1tO2Z1bmN0aW9uIHYoQyxTPShELEwpPT5EPT09TCx6KXtsZXQgRD0hMCxMO3JldHVybiBhKEMsVT0+e2NvbnN0IEI9RHx8IVMoVSxMKTtyZXR1cm4gRD0hMSxMPVUsQn0seil9ZS5sYXRjaD12O2Z1bmN0aW9uIHcoQyxTLHope3JldHVybltlLmZpbHRlcihDLFMseiksZS5maWx0ZXIoQyxEPT4hUyhEKSx6KV19ZS5zcGxpdD13O2Z1bmN0aW9uIGsoQyxTPSExLHo9W10sRCl7bGV0IEw9ei5zbGljZSgpLFU9QyhhZT0+e0w/TC5wdXNoKGFlKTpxLmZpcmUoYWUpfSk7RCYmRC5hZGQoVSk7Y29uc3QgQj0oKT0+e0w/LmZvckVhY2goYWU9PnEuZmlyZShhZSkpLEw9bnVsbH0scT1uZXcgRGUoe29uV2lsbEFkZEZpcnN0TGlzdGVuZXIoKXtVfHwoVT1DKGFlPT5xLmZpcmUoYWUpKSxEJiZELmFkZChVKSl9LG9uRGlkQWRkRmlyc3RMaXN0ZW5lcigpe0wmJihTP3NldFRpbWVvdXQoQik6QigpKX0sb25EaWRSZW1vdmVMYXN0TGlzdGVuZXIoKXtVJiZVLmRpc3Bvc2UoKSxVPW51bGx9fSk7cmV0dXJuIEQmJkQuYWRkKHEpLHEuZXZlbnR9ZS5idWZmZXI9aztmdW5jdGlvbiBSKEMsUyl7cmV0dXJuKEQsTCxVKT0+e2NvbnN0IEI9UyhuZXcgTik7cmV0dXJuIEMoZnVuY3Rpb24ocSl7Y29uc3QgYWU9Qi5ldmFsdWF0ZShxKTthZSE9PUkmJkQuY2FsbChMLGFlKX0sdm9pZCAwLFUpfX1lLmNoYWluPVI7Y29uc3QgST1TeW1ib2woIkhhbHRDaGFpbmFibGUiKTtjbGFzcyBOe2NvbnN0cnVjdG9yKCl7dGhpcy5zdGVwcz1bXX1tYXAoUyl7cmV0dXJuIHRoaXMuc3RlcHMucHVzaChTKSx0aGlzfWZvckVhY2goUyl7cmV0dXJuIHRoaXMuc3RlcHMucHVzaCh6PT4oUyh6KSx6KSksdGhpc31maWx0ZXIoUyl7cmV0dXJuIHRoaXMuc3RlcHMucHVzaCh6PT5TKHopP3o6SSksdGhpc31yZWR1Y2UoUyx6KXtsZXQgRD16O3JldHVybiB0aGlzLnN0ZXBzLnB1c2goTD0+KEQ9UyhELEwpLEQpKSx0aGlzfWxhdGNoKFM9KHosRCk9Pno9PT1EKXtsZXQgej0hMCxEO3JldHVybiB0aGlzLnN0ZXBzLnB1c2goTD0+e2NvbnN0IFU9enx8IVMoTCxEKTtyZXR1cm4gej0hMSxEPUwsVT9MOkl9KSx0aGlzfWV2YWx1YXRlKFMpe2Zvcihjb25zdCB6IG9mIHRoaXMuc3RlcHMpaWYoUz16KFMpLFM9PT1JKWJyZWFrO3JldHVybiBTfX1mdW5jdGlvbiBFKEMsUyx6PUQ9PkQpe2NvbnN0IEQ9KC4uLnEpPT5CLmZpcmUoeiguLi5xKSksTD0oKT0+Qy5vbihTLEQpLFU9KCk9PkMucmVtb3ZlTGlzdGVuZXIoUyxEKSxCPW5ldyBEZSh7b25XaWxsQWRkRmlyc3RMaXN0ZW5lcjpMLG9uRGlkUmVtb3ZlTGFzdExpc3RlbmVyOlV9KTtyZXR1cm4gQi5ldmVudH1lLmZyb21Ob2RlRXZlbnRFbWl0dGVyPUU7ZnVuY3Rpb24gRihDLFMsej1EPT5EKXtjb25zdCBEPSguLi5xKT0+Qi5maXJlKHooLi4ucSkpLEw9KCk9PkMuYWRkRXZlbnRMaXN0ZW5lcihTLEQpLFU9KCk9PkMucmVtb3ZlRXZlbnRMaXN0ZW5lcihTLEQpLEI9bmV3IERlKHtvbldpbGxBZGRGaXJzdExpc3RlbmVyOkwsb25EaWRSZW1vdmVMYXN0TGlzdGVuZXI6VX0pO3JldHVybiBCLmV2ZW50fWUuZnJvbURPTUV2ZW50RW1pdHRlcj1GO2Z1bmN0aW9uIE0oQyl7cmV0dXJuIG5ldyBQcm9taXNlKFM9Pm4oQykoUykpfWUudG9Qcm9taXNlPU07ZnVuY3Rpb24gVChDKXtjb25zdCBTPW5ldyBEZTtyZXR1cm4gQy50aGVuKHo9PntTLmZpcmUoeil9LCgpPT57Uy5maXJlKHZvaWQgMCl9KS5maW5hbGx5KCgpPT57Uy5kaXNwb3NlKCl9KSxTLmV2ZW50fWUuZnJvbVByb21pc2U9VDtmdW5jdGlvbiBQKEMsUyl7cmV0dXJuIEMoej0+Uy5maXJlKHopKX1lLmZvcndhcmQ9UDtmdW5jdGlvbiBqKEMsUyx6KXtyZXR1cm4gUyh6KSxDKEQ9PlMoRCkpfWUucnVuQW5kU3Vic2NyaWJlPWo7Y2xhc3MgZWV7Y29uc3RydWN0b3IoUyx6KXt0aGlzLl9vYnNlcnZhYmxlPVMsdGhpcy5fY291bnRlcj0wLHRoaXMuX2hhc0NoYW5nZWQ9ITE7Y29uc3QgRD17b25XaWxsQWRkRmlyc3RMaXN0ZW5lcjooKT0+e1MuYWRkT2JzZXJ2ZXIodGhpcyksdGhpcy5fb2JzZXJ2YWJsZS5yZXBvcnRDaGFuZ2VzKCl9LG9uRGlkUmVtb3ZlTGFzdExpc3RlbmVyOigpPT57Uy5yZW1vdmVPYnNlcnZlcih0aGlzKX19O3RoaXMuZW1pdHRlcj1uZXcgRGUoRCkseiYmei5hZGQodGhpcy5lbWl0dGVyKX1iZWdpblVwZGF0ZShTKXt0aGlzLl9jb3VudGVyKyt9aGFuZGxlUG9zc2libGVDaGFuZ2UoUyl7fWhhbmRsZUNoYW5nZShTLHope3RoaXMuX2hhc0NoYW5nZWQ9ITB9ZW5kVXBkYXRlKFMpe3RoaXMuX2NvdW50ZXItLSx0aGlzLl9jb3VudGVyPT09MCYmKHRoaXMuX29ic2VydmFibGUucmVwb3J0Q2hhbmdlcygpLHRoaXMuX2hhc0NoYW5nZWQmJih0aGlzLl9oYXNDaGFuZ2VkPSExLHRoaXMuZW1pdHRlci5maXJlKHRoaXMuX29ic2VydmFibGUuZ2V0KCkpKSl9fWZ1bmN0aW9uIEEoQyxTKXtyZXR1cm4gbmV3IGVlKEMsUykuZW1pdHRlci5ldmVudH1lLmZyb21PYnNlcnZhYmxlPUE7ZnVuY3Rpb24gXyhDKXtyZXR1cm4oUyx6LEQpPT57bGV0IEw9MCxVPSExO2NvbnN0IEI9e2JlZ2luVXBkYXRlKCl7TCsrfSxlbmRVcGRhdGUoKXtMLS0sTD09PTAmJihDLnJlcG9ydENoYW5nZXMoKSxVJiYoVT0hMSxTLmNhbGwoeikpKX0saGFuZGxlUG9zc2libGVDaGFuZ2UoKXt9LGhhbmRsZUNoYW5nZSgpe1U9ITB9fTtDLmFkZE9ic2VydmVyKEIpLEMucmVwb3J0Q2hhbmdlcygpO2NvbnN0IHE9e2Rpc3Bvc2UoKXtDLnJlbW92ZU9ic2VydmVyKEIpfX07cmV0dXJuIEQgaW5zdGFuY2VvZiBvbj9ELmFkZChxKTpBcnJheS5pc0FycmF5KEQpJiZELnB1c2gocSkscX19ZS5mcm9tT2JzZXJ2YWJsZUxpZ2h0PV99KShWbnx8KFZuPXt9KSk7Y29uc3Qgbm49Y2xhc3Mgbm57Y29uc3RydWN0b3IodCl7dGhpcy5saXN0ZW5lckNvdW50PTAsdGhpcy5pbnZvY2F0aW9uQ291bnQ9MCx0aGlzLmVsYXBzZWRPdmVyYWxsPTAsdGhpcy5kdXJhdGlvbnM9W10sdGhpcy5uYW1lPWAke3R9XyR7bm4uX2lkUG9vbCsrfWAsbm4uYWxsLmFkZCh0aGlzKX1zdGFydCh0KXt0aGlzLl9zdG9wV2F0Y2g9bmV3IFVuLHRoaXMubGlzdGVuZXJDb3VudD10fXN0b3AoKXtpZih0aGlzLl9zdG9wV2F0Y2gpe2NvbnN0IHQ9dGhpcy5fc3RvcFdhdGNoLmVsYXBzZWQoKTt0aGlzLmR1cmF0aW9ucy5wdXNoKHQpLHRoaXMuZWxhcHNlZE92ZXJhbGwrPXQsdGhpcy5pbnZvY2F0aW9uQ291bnQrPTEsdGhpcy5fc3RvcFdhdGNoPXZvaWQgMH19fTtubi5hbGw9bmV3IFNldCxubi5faWRQb29sPTA7bGV0ICRyPW5uLHFzPS0xO2NvbnN0IEFyPWNsYXNzIEFye2NvbnN0cnVjdG9yKHQsbixyPShBci5faWRQb29sKyspLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgzLCIwIikpe3RoaXMuX2Vycm9ySGFuZGxlcj10LHRoaXMudGhyZXNob2xkPW4sdGhpcy5uYW1lPXIsdGhpcy5fd2FybkNvdW50ZG93bj0wfWRpc3Bvc2UoKXt0aGlzLl9zdGFja3M/LmNsZWFyKCl9Y2hlY2sodCxuKXtjb25zdCByPXRoaXMudGhyZXNob2xkO2lmKHI8PTB8fG48cilyZXR1cm47dGhpcy5fc3RhY2tzfHwodGhpcy5fc3RhY2tzPW5ldyBNYXApO2NvbnN0IGk9dGhpcy5fc3RhY2tzLmdldCh0LnZhbHVlKXx8MDtpZih0aGlzLl9zdGFja3Muc2V0KHQudmFsdWUsaSsxKSx0aGlzLl93YXJuQ291bnRkb3duLT0xLHRoaXMuX3dhcm5Db3VudGRvd248PTApe3RoaXMuX3dhcm5Db3VudGRvd249ciouNTtjb25zdFtzLGFdPXRoaXMuZ2V0TW9zdEZyZXF1ZW50U3RhY2soKSxsPWBbJHt0aGlzLm5hbWV9XSBwb3RlbnRpYWwgbGlzdGVuZXIgTEVBSyBkZXRlY3RlZCwgaGF2aW5nICR7bn0gbGlzdGVuZXJzIGFscmVhZHkuIE1PU1QgZnJlcXVlbnQgbGlzdGVuZXIgKCR7YX0pOmA7Y29uc29sZS53YXJuKGwpLGNvbnNvbGUud2FybihzKTtjb25zdCBvPW5ldyBGaChsLHMpO3RoaXMuX2Vycm9ySGFuZGxlcihvKX1yZXR1cm4oKT0+e2NvbnN0IHM9dGhpcy5fc3RhY2tzLmdldCh0LnZhbHVlKXx8MDt0aGlzLl9zdGFja3Muc2V0KHQudmFsdWUscy0xKX19Z2V0TW9zdEZyZXF1ZW50U3RhY2soKXtpZighdGhpcy5fc3RhY2tzKXJldHVybjtsZXQgdCxuPTA7Zm9yKGNvbnN0W3IsaV1vZiB0aGlzLl9zdGFja3MpKCF0fHxuPGkpJiYodD1bcixpXSxuPWkpO3JldHVybiB0fX07QXIuX2lkUG9vbD0xO2xldCBCcj1BcjtjbGFzcyBxcntzdGF0aWMgY3JlYXRlKCl7Y29uc3QgdD1uZXcgRXJyb3I7cmV0dXJuIG5ldyBxcih0LnN0YWNrPz8iIil9Y29uc3RydWN0b3IodCl7dGhpcy52YWx1ZT10fXByaW50KCl7Y29uc29sZS53YXJuKHRoaXMudmFsdWUuc3BsaXQoYApgKS5zbGljZSgyKS5qb2luKGAKYCkpfX1jbGFzcyBGaCBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKHQsbil7c3VwZXIodCksdGhpcy5uYW1lPSJMaXN0ZW5lckxlYWtFcnJvciIsdGhpcy5zdGFjaz1ufX1jbGFzcyBSaCBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKHQsbil7c3VwZXIodCksdGhpcy5uYW1lPSJMaXN0ZW5lclJlZnVzYWxFcnJvciIsdGhpcy5zdGFjaz1ufX1jbGFzcyBqcntjb25zdHJ1Y3Rvcih0KXt0aGlzLnZhbHVlPXR9fWNvbnN0IE5oPTI7bGV0IEhyO2NsYXNzIERle2NvbnN0cnVjdG9yKHQpe3RoaXMuX3NpemU9MCx0aGlzLl9vcHRpb25zPXQsdGhpcy5fbGVha2FnZU1vbj1xcz4wfHx0aGlzLl9vcHRpb25zPy5sZWFrV2FybmluZ1RocmVzaG9sZD9uZXcgQnIodD8ub25MaXN0ZW5lckVycm9yPz9XZSx0aGlzLl9vcHRpb25zPy5sZWFrV2FybmluZ1RocmVzaG9sZD8/cXMpOnZvaWQgMCx0aGlzLl9wZXJmTW9uPXRoaXMuX29wdGlvbnM/Ll9wcm9mTmFtZT9uZXcgJHIodGhpcy5fb3B0aW9ucy5fcHJvZk5hbWUpOnZvaWQgMCx0aGlzLl9kZWxpdmVyeVF1ZXVlPXRoaXMuX29wdGlvbnM/LmRlbGl2ZXJ5UXVldWV9ZGlzcG9zZSgpe3RoaXMuX2Rpc3Bvc2VkfHwodGhpcy5fZGlzcG9zZWQ9ITAsdGhpcy5fZGVsaXZlcnlRdWV1ZT8uY3VycmVudD09PXRoaXMmJnRoaXMuX2RlbGl2ZXJ5UXVldWUucmVzZXQoKSx0aGlzLl9saXN0ZW5lcnMmJih0aGlzLl9saXN0ZW5lcnM9dm9pZCAwLHRoaXMuX3NpemU9MCksdGhpcy5fb3B0aW9ucz8ub25EaWRSZW1vdmVMYXN0TGlzdGVuZXI/LigpLHRoaXMuX2xlYWthZ2VNb24/LmRpc3Bvc2UoKSl9Z2V0IGV2ZW50KCl7cmV0dXJuIHRoaXMuX2V2ZW50Pz8odGhpcy5fZXZlbnQ9KHQsbixyKT0+e2lmKHRoaXMuX2xlYWthZ2VNb24mJnRoaXMuX3NpemU+dGhpcy5fbGVha2FnZU1vbi50aHJlc2hvbGQqKjIpe2NvbnN0IGw9YFske3RoaXMuX2xlYWthZ2VNb24ubmFtZX1dIFJFRlVTRVMgdG8gYWNjZXB0IG5ldyBsaXN0ZW5lcnMgYmVjYXVzZSBpdCBleGNlZWRlZCBpdHMgdGhyZXNob2xkIGJ5IGZhciAoJHt0aGlzLl9zaXplfSB2cyAke3RoaXMuX2xlYWthZ2VNb24udGhyZXNob2xkfSlgO2NvbnNvbGUud2FybihsKTtjb25zdCBvPXRoaXMuX2xlYWthZ2VNb24uZ2V0TW9zdEZyZXF1ZW50U3RhY2soKT8/WyJVTktOT1dOIHN0YWNrIiwtMV0sYz1uZXcgUmgoYCR7bH0uIEhJTlQ6IFN0YWNrIHNob3dzIG1vc3QgZnJlcXVlbnQgbGlzdGVuZXIgKCR7b1sxXX0tdGltZXMpYCxvWzBdKTtyZXR1cm4odGhpcy5fb3B0aW9ucz8ub25MaXN0ZW5lckVycm9yfHxXZSkoYyksenQuTm9uZX1pZih0aGlzLl9kaXNwb3NlZClyZXR1cm4genQuTm9uZTtuJiYodD10LmJpbmQobikpO2NvbnN0IGk9bmV3IGpyKHQpO2xldCBzO3RoaXMuX2xlYWthZ2VNb24mJnRoaXMuX3NpemU+PU1hdGguY2VpbCh0aGlzLl9sZWFrYWdlTW9uLnRocmVzaG9sZCouMikmJihpLnN0YWNrPXFyLmNyZWF0ZSgpLHM9dGhpcy5fbGVha2FnZU1vbi5jaGVjayhpLnN0YWNrLHRoaXMuX3NpemUrMSkpLHRoaXMuX2xpc3RlbmVycz90aGlzLl9saXN0ZW5lcnMgaW5zdGFuY2VvZiBqcj8odGhpcy5fZGVsaXZlcnlRdWV1ZT8/KHRoaXMuX2RlbGl2ZXJ5UXVldWU9bmV3IERoKSx0aGlzLl9saXN0ZW5lcnM9W3RoaXMuX2xpc3RlbmVycyxpXSk6dGhpcy5fbGlzdGVuZXJzLnB1c2goaSk6KHRoaXMuX29wdGlvbnM/Lm9uV2lsbEFkZEZpcnN0TGlzdGVuZXI/Lih0aGlzKSx0aGlzLl9saXN0ZW5lcnM9aSx0aGlzLl9vcHRpb25zPy5vbkRpZEFkZEZpcnN0TGlzdGVuZXI/Lih0aGlzKSksdGhpcy5fc2l6ZSsrO2NvbnN0IGE9V24oKCk9PntIcj8udW5yZWdpc3RlcihhKSxzPy4oKSx0aGlzLl9yZW1vdmVMaXN0ZW5lcihpKX0pO2lmKHIgaW5zdGFuY2VvZiBvbj9yLmFkZChhKTpBcnJheS5pc0FycmF5KHIpJiZyLnB1c2goYSksSHIpe2NvbnN0IGw9bmV3IEVycm9yKCkuc3RhY2suc3BsaXQoYApgKS5zbGljZSgyLDMpLmpvaW4oYApgKS50cmltKCksbz0vKGZpbGU6fHZzY29kZS1maWxlOlwvXC92c2NvZGUtYXBwKT8oXC9bXjpdKjpcZCs6XGQrKS8uZXhlYyhsKTtIci5yZWdpc3RlcihhLG8/LlsyXT8/bCxhKX1yZXR1cm4gYX0pLHRoaXMuX2V2ZW50fV9yZW1vdmVMaXN0ZW5lcih0KXtpZih0aGlzLl9vcHRpb25zPy5vbldpbGxSZW1vdmVMaXN0ZW5lcj8uKHRoaXMpLCF0aGlzLl9saXN0ZW5lcnMpcmV0dXJuO2lmKHRoaXMuX3NpemU9PT0xKXt0aGlzLl9saXN0ZW5lcnM9dm9pZCAwLHRoaXMuX29wdGlvbnM/Lm9uRGlkUmVtb3ZlTGFzdExpc3RlbmVyPy4odGhpcyksdGhpcy5fc2l6ZT0wO3JldHVybn1jb25zdCBuPXRoaXMuX2xpc3RlbmVycyxyPW4uaW5kZXhPZih0KTtpZihyPT09LTEpdGhyb3cgY29uc29sZS5sb2coImRpc3Bvc2VkPyIsdGhpcy5fZGlzcG9zZWQpLGNvbnNvbGUubG9nKCJzaXplPyIsdGhpcy5fc2l6ZSksY29uc29sZS5sb2coImFycj8iLEpTT04uc3RyaW5naWZ5KHRoaXMuX2xpc3RlbmVycykpLG5ldyBFcnJvcigiQXR0ZW1wdGVkIHRvIGRpc3Bvc2UgdW5rbm93biBsaXN0ZW5lciIpO3RoaXMuX3NpemUtLSxuW3JdPXZvaWQgMDtjb25zdCBpPXRoaXMuX2RlbGl2ZXJ5UXVldWUuY3VycmVudD09PXRoaXM7aWYodGhpcy5fc2l6ZSpOaDw9bi5sZW5ndGgpe2xldCBzPTA7Zm9yKGxldCBhPTA7YTxuLmxlbmd0aDthKyspblthXT9uW3MrK109blthXTppJiYodGhpcy5fZGVsaXZlcnlRdWV1ZS5lbmQtLSxzPHRoaXMuX2RlbGl2ZXJ5UXVldWUuaSYmdGhpcy5fZGVsaXZlcnlRdWV1ZS5pLS0pO24ubGVuZ3RoPXN9fV9kZWxpdmVyKHQsbil7aWYoIXQpcmV0dXJuO2NvbnN0IHI9dGhpcy5fb3B0aW9ucz8ub25MaXN0ZW5lckVycm9yfHxXZTtpZighcil7dC52YWx1ZShuKTtyZXR1cm59dHJ5e3QudmFsdWUobil9Y2F0Y2goaSl7cihpKX19X2RlbGl2ZXJRdWV1ZSh0KXtjb25zdCBuPXQuY3VycmVudC5fbGlzdGVuZXJzO2Zvcig7dC5pPHQuZW5kOyl0aGlzLl9kZWxpdmVyKG5bdC5pKytdLHQudmFsdWUpO3QucmVzZXQoKX1maXJlKHQpe2lmKHRoaXMuX2RlbGl2ZXJ5UXVldWU/LmN1cnJlbnQmJih0aGlzLl9kZWxpdmVyUXVldWUodGhpcy5fZGVsaXZlcnlRdWV1ZSksdGhpcy5fcGVyZk1vbj8uc3RvcCgpKSx0aGlzLl9wZXJmTW9uPy5zdGFydCh0aGlzLl9zaXplKSx0aGlzLl9saXN0ZW5lcnMpaWYodGhpcy5fbGlzdGVuZXJzIGluc3RhbmNlb2YganIpdGhpcy5fZGVsaXZlcih0aGlzLl9saXN0ZW5lcnMsdCk7ZWxzZXtjb25zdCBuPXRoaXMuX2RlbGl2ZXJ5UXVldWU7bi5lbnF1ZXVlKHRoaXMsdCx0aGlzLl9saXN0ZW5lcnMubGVuZ3RoKSx0aGlzLl9kZWxpdmVyUXVldWUobil9dGhpcy5fcGVyZk1vbj8uc3RvcCgpfWhhc0xpc3RlbmVycygpe3JldHVybiB0aGlzLl9zaXplPjB9fWNsYXNzIERoe2NvbnN0cnVjdG9yKCl7dGhpcy5pPS0xLHRoaXMuZW5kPTB9ZW5xdWV1ZSh0LG4scil7dGhpcy5pPTAsdGhpcy5lbmQ9cix0aGlzLmN1cnJlbnQ9dCx0aGlzLnZhbHVlPW59cmVzZXQoKXt0aGlzLmk9dGhpcy5lbmQsdGhpcy5jdXJyZW50PXZvaWQgMCx0aGlzLnZhbHVlPXZvaWQgMH19ZnVuY3Rpb24gSWgoKXtyZXR1cm4gZ2xvYmFsVGhpcy5fVlNDT0RFX05MU19NRVNTQUdFU31mdW5jdGlvbiBqcygpe3JldHVybiBnbG9iYWxUaGlzLl9WU0NPREVfTkxTX0xBTkdVQUdFfWNvbnN0IEFoPWpzKCk9PT0icHNldWRvInx8dHlwZW9mIGRvY3VtZW50PCJ1IiYmZG9jdW1lbnQubG9jYXRpb24mJmRvY3VtZW50LmxvY2F0aW9uLmhhc2guaW5kZXhPZigicHNldWRvPXRydWUiKT49MDtmdW5jdGlvbiBIcyhlLHQpe2xldCBuO3JldHVybiB0Lmxlbmd0aD09PTB8fChuPWUucmVwbGFjZSgvXHsoXGQrKVx9L2csKHIsaSk9Pntjb25zdCBzPWlbMF0sYT10W3NdO2xldCBsPXI7cmV0dXJuIHR5cGVvZiBhPT0ic3RyaW5nIj9sPWE6KHR5cGVvZiBhPT0ibnVtYmVyInx8dHlwZW9mIGE9PSJib29sZWFuInx8YT09PXZvaWQgMHx8YT09PW51bGwpJiYobD1TdHJpbmcoYSkpLGx9KSksQWgmJihuPSLvvLsiK24ucmVwbGFjZSgvW2FvdWVpXS9nLCIkJiQmIikrIu+8vSIpLG59ZnVuY3Rpb24gcmUoZSx0LC4uLm4pe3JldHVybiBIcyh0eXBlb2YgZT09Im51bWJlciI/TWgoZSx0KTp0LG4pfWZ1bmN0aW9uIE1oKGUsdCl7Y29uc3Qgbj1JaCgpPy5bZV07aWYodHlwZW9mIG4hPSJzdHJpbmciKXtpZih0eXBlb2YgdD09InN0cmluZyIpcmV0dXJuIHQ7dGhyb3cgbmV3IEVycm9yKGAhISEgTkxTIE1JU1NJTkc6ICR7ZX0gISEhYCl9cmV0dXJuIG59Y29uc3QgUHQ9ImVuIjtsZXQgR3I9ITEsSnI9ITEsWHI9ITEsR3M9ITEsWXI9ITEsJG4sUXI9UHQsSnM9UHQsTGgsWWU7Y29uc3QgUWU9Z2xvYmFsVGhpcztsZXQgRWU7dHlwZW9mIFFlLnZzY29kZTwidSImJnR5cGVvZiBRZS52c2NvZGUucHJvY2VzczwidSI/RWU9UWUudnNjb2RlLnByb2Nlc3M6dHlwZW9mIHByb2Nlc3M8InUiJiZ0eXBlb2YgcHJvY2Vzcz8udmVyc2lvbnM/Lm5vZGU9PSJzdHJpbmciJiYoRWU9cHJvY2Vzcyk7Y29uc3Qgemg9dHlwZW9mIEVlPy52ZXJzaW9ucz8uZWxlY3Ryb249PSJzdHJpbmciJiZFZT8udHlwZT09PSJyZW5kZXJlciI7aWYodHlwZW9mIEVlPT0ib2JqZWN0Iil7R3I9RWUucGxhdGZvcm09PT0id2luMzIiLEpyPUVlLnBsYXRmb3JtPT09ImRhcndpbiIsWHI9RWUucGxhdGZvcm09PT0ibGludXgiLFhyJiZFZS5lbnYuU05BUCYmRWUuZW52LlNOQVBfUkVWSVNJT04sRWUuZW52LkNJfHxFZS5lbnYuQlVJTERfQVJUSUZBQ1RTVEFHSU5HRElSRUNUT1JZLCRuPVB0LFFyPVB0O2NvbnN0IGU9RWUuZW52LlZTQ09ERV9OTFNfQ09ORklHO2lmKGUpdHJ5e2NvbnN0IHQ9SlNPTi5wYXJzZShlKTskbj10LnVzZXJMb2NhbGUsSnM9dC5vc0xvY2FsZSxRcj10LnJlc29sdmVkTGFuZ3VhZ2V8fFB0LExoPXQubGFuZ3VhZ2VQYWNrPy50cmFuc2xhdGlvbnNDb25maWdGaWxlfWNhdGNoe31Hcz0hMH1lbHNlIHR5cGVvZiBuYXZpZ2F0b3I9PSJvYmplY3QiJiYhemg/KFllPW5hdmlnYXRvci51c2VyQWdlbnQsR3I9WWUuaW5kZXhPZigiV2luZG93cyIpPj0wLEpyPVllLmluZGV4T2YoIk1hY2ludG9zaCIpPj0wLChZZS5pbmRleE9mKCJNYWNpbnRvc2giKT49MHx8WWUuaW5kZXhPZigiaVBhZCIpPj0wfHxZZS5pbmRleE9mKCJpUGhvbmUiKT49MCkmJm5hdmlnYXRvci5tYXhUb3VjaFBvaW50cyYmbmF2aWdhdG9yLm1heFRvdWNoUG9pbnRzPjAsWHI9WWUuaW5kZXhPZigiTGludXgiKT49MCxZZT8uaW5kZXhPZigiTW9iaSIpPj0wLFlyPSEwLFFyPWpzKCl8fFB0LCRuPW5hdmlnYXRvci5sYW5ndWFnZS50b0xvd2VyQ2FzZSgpLEpzPSRuKTpjb25zb2xlLmVycm9yKCJVbmFibGUgdG8gcmVzb2x2ZSBwbGF0Zm9ybS4iKTtjb25zdCBsbj1HcixQaD1KcixUaD1HcyxPaD1ZcixXaD1ZciYmdHlwZW9mIFFlLmltcG9ydFNjcmlwdHM9PSJmdW5jdGlvbiI/UWUub3JpZ2luOnZvaWQgMCxVZT1ZZSxVaD10eXBlb2YgUWUucG9zdE1lc3NhZ2U9PSJmdW5jdGlvbiImJiFRZS5pbXBvcnRTY3JpcHRzOygoKT0+e2lmKFVoKXtjb25zdCBlPVtdO1FlLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLG49PntpZihuLmRhdGEmJm4uZGF0YS52c2NvZGVTY2hlZHVsZUFzeW5jV29yaylmb3IobGV0IHI9MCxpPWUubGVuZ3RoO3I8aTtyKyspe2NvbnN0IHM9ZVtyXTtpZihzLmlkPT09bi5kYXRhLnZzY29kZVNjaGVkdWxlQXN5bmNXb3JrKXtlLnNwbGljZShyLDEpLHMuY2FsbGJhY2soKTtyZXR1cm59fX0pO2xldCB0PTA7cmV0dXJuIG49Pntjb25zdCByPSsrdDtlLnB1c2goe2lkOnIsY2FsbGJhY2s6bn0pLFFlLnBvc3RNZXNzYWdlKHt2c2NvZGVTY2hlZHVsZUFzeW5jV29yazpyfSwiKiIpfX1yZXR1cm4gZT0+c2V0VGltZW91dChlKX0pKCk7Y29uc3QgVmg9ISEoVWUmJlVlLmluZGV4T2YoIkNocm9tZSIpPj0wKTtVZSYmVWUuaW5kZXhPZigiRmlyZWZveCIpPj0wLCFWaCYmVWUmJlVlLmluZGV4T2YoIlNhZmFyaSIpPj0wLFVlJiZVZS5pbmRleE9mKCJFZGcvIik+PTAsVWUmJlVlLmluZGV4T2YoIkFuZHJvaWQiKT49MDtmdW5jdGlvbiAkaChlKXtyZXR1cm4gZX1jbGFzcyBCaHtjb25zdHJ1Y3Rvcih0LG4pe3RoaXMubGFzdENhY2hlPXZvaWQgMCx0aGlzLmxhc3RBcmdLZXk9dm9pZCAwLHR5cGVvZiB0PT0iZnVuY3Rpb24iPyh0aGlzLl9mbj10LHRoaXMuX2NvbXB1dGVLZXk9JGgpOih0aGlzLl9mbj1uLHRoaXMuX2NvbXB1dGVLZXk9dC5nZXRDYWNoZUtleSl9Z2V0KHQpe2NvbnN0IG49dGhpcy5fY29tcHV0ZUtleSh0KTtyZXR1cm4gdGhpcy5sYXN0QXJnS2V5IT09biYmKHRoaXMubGFzdEFyZ0tleT1uLHRoaXMubGFzdENhY2hlPXRoaXMuX2ZuKHQpKSx0aGlzLmxhc3RDYWNoZX19Y2xhc3MgWHN7Y29uc3RydWN0b3IodCl7dGhpcy5leGVjdXRvcj10LHRoaXMuX2RpZFJ1bj0hMX1nZXQgdmFsdWUoKXtpZighdGhpcy5fZGlkUnVuKXRyeXt0aGlzLl92YWx1ZT10aGlzLmV4ZWN1dG9yKCl9Y2F0Y2godCl7dGhpcy5fZXJyb3I9dH1maW5hbGx5e3RoaXMuX2RpZFJ1bj0hMH1pZih0aGlzLl9lcnJvcil0aHJvdyB0aGlzLl9lcnJvcjtyZXR1cm4gdGhpcy5fdmFsdWV9Z2V0IHJhd1ZhbHVlKCl7cmV0dXJuIHRoaXMuX3ZhbHVlfX1mdW5jdGlvbiBxaChlKXtyZXR1cm4gZS5yZXBsYWNlKC9bXFxce1x9XCpcK1w/XHxcXlwkXC5cW1xdXChcKV0vZywiXFwkJiIpfWZ1bmN0aW9uIGpoKGUpe3JldHVybiBlLnNwbGl0KC9cclxufFxyfFxuLyl9ZnVuY3Rpb24gSGgoZSl7Zm9yKGxldCB0PTAsbj1lLmxlbmd0aDt0PG47dCsrKXtjb25zdCByPWUuY2hhckNvZGVBdCh0KTtpZihyIT09MzImJnIhPT05KXJldHVybiB0fXJldHVybi0xfWZ1bmN0aW9uIEdoKGUsdD1lLmxlbmd0aC0xKXtmb3IobGV0IG49dDtuPj0wO24tLSl7Y29uc3Qgcj1lLmNoYXJDb2RlQXQobik7aWYociE9PTMyJiZyIT09OSlyZXR1cm4gbn1yZXR1cm4tMX1mdW5jdGlvbiBZcyhlKXtyZXR1cm4gZT49NjUmJmU8PTkwfWZ1bmN0aW9uIEJuKGUpe3JldHVybiA1NTI5Njw9ZSYmZTw9NTYzMTl9ZnVuY3Rpb24gS3IoZSl7cmV0dXJuIDU2MzIwPD1lJiZlPD01NzM0M31mdW5jdGlvbiBRcyhlLHQpe3JldHVybihlLTU1Mjk2PDwxMCkrKHQtNTYzMjApKzY1NTM2fWZ1bmN0aW9uIEpoKGUsdCxuKXtjb25zdCByPWUuY2hhckNvZGVBdChuKTtpZihCbihyKSYmbisxPHQpe2NvbnN0IGk9ZS5jaGFyQ29kZUF0KG4rMSk7aWYoS3IoaSkpcmV0dXJuIFFzKHIsaSl9cmV0dXJuIHJ9Y29uc3QgWGg9L15bXHRcblxyXHgyMC1ceDdFXSokLztmdW5jdGlvbiBZaChlKXtyZXR1cm4gWGgudGVzdChlKX1jb25zdCBHZT1jbGFzcyBHZXtzdGF0aWMgZ2V0SW5zdGFuY2UodCl7cmV0dXJuIEdlLmNhY2hlLmdldChBcnJheS5mcm9tKHQpKX1zdGF0aWMgZ2V0TG9jYWxlcygpe3JldHVybiBHZS5fbG9jYWxlcy52YWx1ZX1jb25zdHJ1Y3Rvcih0KXt0aGlzLmNvbmZ1c2FibGVEaWN0aW9uYXJ5PXR9aXNBbWJpZ3VvdXModCl7cmV0dXJuIHRoaXMuY29uZnVzYWJsZURpY3Rpb25hcnkuaGFzKHQpfWdldFByaW1hcnlDb25mdXNhYmxlKHQpe3JldHVybiB0aGlzLmNvbmZ1c2FibGVEaWN0aW9uYXJ5LmdldCh0KX1nZXRDb25mdXNhYmxlQ29kZVBvaW50cygpe3JldHVybiBuZXcgU2V0KHRoaXMuY29uZnVzYWJsZURpY3Rpb25hcnkua2V5cygpKX19O0dlLmFtYmlndW91c0NoYXJhY3RlckRhdGE9bmV3IFhzKCgpPT5KU09OLnBhcnNlKCd7Il9jb21tb24iOls4MjMyLDMyLDgyMzMsMzIsNTc2MCwzMiw4MTkyLDMyLDgxOTMsMzIsODE5NCwzMiw4MTk1LDMyLDgxOTYsMzIsODE5NywzMiw4MTk4LDMyLDgyMDAsMzIsODIwMSwzMiw4MjAyLDMyLDgyODcsMzIsODE5OSwzMiw4MjM5LDMyLDIwNDIsOTUsNjUxMDEsOTUsNjUxMDIsOTUsNjUxMDMsOTUsODIwOCw0NSw4MjA5LDQ1LDgyMTAsNDUsNjUxMTIsNDUsMTc0OCw0NSw4MjU5LDQ1LDcyNyw0NSw4NzIyLDQ1LDEwMTM0LDQ1LDExNDUwLDQ1LDE1NDksNDQsMTY0Myw0NCw4MjE4LDQ0LDE4NCw0NCw0MjIzMyw0NCw4OTQsNTksMjMwNyw1OCwyNjkxLDU4LDE0MTcsNTgsMTc5NSw1OCwxNzk2LDU4LDU4NjgsNTgsNjUwNzIsNTgsNjE0Nyw1OCw2MTUzLDU4LDgyODIsNTgsMTQ3NSw1OCw3NjAsNTgsNDI4ODksNTgsODc1OCw1OCw3MjAsNTgsNDIyMzcsNTgsNDUxLDMzLDExNjAxLDMzLDY2MCw2Myw1NzcsNjMsMjQyOSw2Myw1MDM4LDYzLDQyNzMxLDYzLDExOTE0OSw0Niw4MjI4LDQ2LDE3OTMsNDYsMTc5NCw0Niw0MjUxMCw0Niw2ODE3Niw0NiwxNjMyLDQ2LDE3NzYsNDYsNDIyMzIsNDYsMTM3Myw5Niw2NTI4Nyw5Niw4MjE5LDk2LDgyNDIsOTYsMTM3MCw5NiwxNTIzLDk2LDgxNzUsOTYsNjUzNDQsOTYsOTAwLDk2LDgxODksOTYsODEyNSw5Niw4MTI3LDk2LDgxOTAsOTYsNjk3LDk2LDg4NCw5Niw3MTIsOTYsNzE0LDk2LDcxNSw5Niw3NTYsOTYsNjk5LDk2LDcwMSw5Niw3MDAsOTYsNzAyLDk2LDQyODkyLDk2LDE0OTcsOTYsMjAzNiw5NiwyMDM3LDk2LDUxOTQsOTYsNTgzNiw5Niw5NDAzMyw5Niw5NDAzNCw5Niw2NTMzOSw5MSwxMDA4OCw0MCwxMDA5OCw0MCwxMjMwOCw0MCw2NDgzMCw0MCw2NTM0MSw5MywxMDA4OSw0MSwxMDA5OSw0MSwxMjMwOSw0MSw2NDgzMSw0MSwxMDEwMCwxMjMsMTE5MDYwLDEyMywxMDEwMSwxMjUsNjUzNDIsOTQsODI3MCw0MiwxNjQ1LDQyLDg3MjcsNDIsNjYzMzUsNDIsNTk0MSw0Nyw4MjU3LDQ3LDg3MjUsNDcsODI2MCw0Nyw5NTg1LDQ3LDEwMTg3LDQ3LDEwNzQ0LDQ3LDExOTM1NCw0NywxMjc1NSw0NywxMjMzOSw0NywxMTQ2Miw0NywyMDAzMSw0NywxMjAzNSw0Nyw2NTM0MCw5Miw2NTEyOCw5Miw4NzI2LDkyLDEwMTg5LDkyLDEwNzQxLDkyLDEwNzQ1LDkyLDExOTMxMSw5MiwxMTkzNTUsOTIsMTI3NTYsOTIsMjAwMjIsOTIsMTIwMzQsOTIsNDI4NzIsMzgsNzA4LDk0LDcxMCw5NCw1ODY5LDQzLDEwMTMzLDQzLDY2MjAzLDQzLDgyNDksNjAsMTAwOTQsNjAsNzA2LDYwLDExOTM1MCw2MCw1MTc2LDYwLDU4MTAsNjAsNTEyMCw2MSwxMTg0MCw2MSwxMjQ0OCw2MSw0MjIzOSw2MSw4MjUwLDYyLDEwMDk1LDYyLDcwNyw2MiwxMTkzNTEsNjIsNTE3MSw2Miw5NDAxNSw2Miw4Mjc1LDEyNiw3MzIsMTI2LDgxMjgsMTI2LDg3NjQsMTI2LDY1MzcyLDEyNCw2NTI5Myw0NSwxMjA3ODQsNTAsMTIwNzk0LDUwLDEyMDgwNCw1MCwxMjA4MTQsNTAsMTIwODI0LDUwLDEzMDAzNCw1MCw0Mjg0Miw1MCw0MjMsNTAsMTAwMCw1MCw0MjU2NCw1MCw1MzExLDUwLDQyNzM1LDUwLDExOTMwMiw1MSwxMjA3ODUsNTEsMTIwNzk1LDUxLDEyMDgwNSw1MSwxMjA4MTUsNTEsMTIwODI1LDUxLDEzMDAzNSw1MSw0MjkyMyw1MSw1NDAsNTEsNDM5LDUxLDQyODU4LDUxLDExNDY4LDUxLDEyNDgsNTEsOTQwMTEsNTEsNzE4ODIsNTEsMTIwNzg2LDUyLDEyMDc5Niw1MiwxMjA4MDYsNTIsMTIwODE2LDUyLDEyMDgyNiw1MiwxMzAwMzYsNTIsNTA3MCw1Miw3MTg1NSw1MiwxMjA3ODcsNTMsMTIwNzk3LDUzLDEyMDgwNyw1MywxMjA4MTcsNTMsMTIwODI3LDUzLDEzMDAzNyw1Myw0NDQsNTMsNzE4NjcsNTMsMTIwNzg4LDU0LDEyMDc5OCw1NCwxMjA4MDgsNTQsMTIwODE4LDU0LDEyMDgyOCw1NCwxMzAwMzgsNTQsMTE0NzQsNTQsNTEwMiw1NCw3MTg5Myw1NCwxMTkzMTQsNTUsMTIwNzg5LDU1LDEyMDc5OSw1NSwxMjA4MDksNTUsMTIwODE5LDU1LDEyMDgyOSw1NSwxMzAwMzksNTUsNjY3NzAsNTUsNzE4NzgsNTUsMjgxOSw1NiwyNTM4LDU2LDI2NjYsNTYsMTI1MTMxLDU2LDEyMDc5MCw1NiwxMjA4MDAsNTYsMTIwODEwLDU2LDEyMDgyMCw1NiwxMjA4MzAsNTYsMTMwMDQwLDU2LDU0Nyw1Niw1NDYsNTYsNjYzMzAsNTYsMjY2Myw1NywyOTIwLDU3LDI1NDEsNTcsMzQzNyw1NywxMjA3OTEsNTcsMTIwODAxLDU3LDEyMDgxMSw1NywxMjA4MjEsNTcsMTIwODMxLDU3LDEzMDA0MSw1Nyw0Mjg2Miw1NywxMTQ2Niw1Nyw3MTg4NCw1Nyw3MTg1Miw1Nyw3MTg5NCw1Nyw5MDgyLDk3LDY1MzQ1LDk3LDExOTgzNCw5NywxMTk4ODYsOTcsMTE5OTM4LDk3LDExOTk5MCw5NywxMjAwNDIsOTcsMTIwMDk0LDk3LDEyMDE0Niw5NywxMjAxOTgsOTcsMTIwMjUwLDk3LDEyMDMwMiw5NywxMjAzNTQsOTcsMTIwNDA2LDk3LDEyMDQ1OCw5Nyw1OTMsOTcsOTQ1LDk3LDEyMDUxNCw5NywxMjA1NzIsOTcsMTIwNjMwLDk3LDEyMDY4OCw5NywxMjA3NDYsOTcsNjUzMTMsNjUsMTE5ODA4LDY1LDExOTg2MCw2NSwxMTk5MTIsNjUsMTE5OTY0LDY1LDEyMDAxNiw2NSwxMjAwNjgsNjUsMTIwMTIwLDY1LDEyMDE3Miw2NSwxMjAyMjQsNjUsMTIwMjc2LDY1LDEyMDMyOCw2NSwxMjAzODAsNjUsMTIwNDMyLDY1LDkxMyw2NSwxMjA0ODgsNjUsMTIwNTQ2LDY1LDEyMDYwNCw2NSwxMjA2NjIsNjUsMTIwNzIwLDY1LDUwMzQsNjUsNTU3Myw2NSw0MjIyMiw2NSw5NDAxNiw2NSw2NjIwOCw2NSwxMTk4MzUsOTgsMTE5ODg3LDk4LDExOTkzOSw5OCwxMTk5OTEsOTgsMTIwMDQzLDk4LDEyMDA5NSw5OCwxMjAxNDcsOTgsMTIwMTk5LDk4LDEyMDI1MSw5OCwxMjAzMDMsOTgsMTIwMzU1LDk4LDEyMDQwNyw5OCwxMjA0NTksOTgsMzg4LDk4LDUwNzEsOTgsNTIzNCw5OCw1NTUxLDk4LDY1MzE0LDY2LDg0OTIsNjYsMTE5ODA5LDY2LDExOTg2MSw2NiwxMTk5MTMsNjYsMTIwMDE3LDY2LDEyMDA2OSw2NiwxMjAxMjEsNjYsMTIwMTczLDY2LDEyMDIyNSw2NiwxMjAyNzcsNjYsMTIwMzI5LDY2LDEyMDM4MSw2NiwxMjA0MzMsNjYsNDI5MzIsNjYsOTE0LDY2LDEyMDQ4OSw2NiwxMjA1NDcsNjYsMTIwNjA1LDY2LDEyMDY2Myw2NiwxMjA3MjEsNjYsNTEwOCw2Niw1NjIzLDY2LDQyMTkyLDY2LDY2MTc4LDY2LDY2MjA5LDY2LDY2MzA1LDY2LDY1MzQ3LDk5LDg1NzMsOTksMTE5ODM2LDk5LDExOTg4OCw5OSwxMTk5NDAsOTksMTE5OTkyLDk5LDEyMDA0NCw5OSwxMjAwOTYsOTksMTIwMTQ4LDk5LDEyMDIwMCw5OSwxMjAyNTIsOTksMTIwMzA0LDk5LDEyMDM1Niw5OSwxMjA0MDgsOTksMTIwNDYwLDk5LDc0MjgsOTksMTAxMCw5OSwxMTQyOSw5OSw0Mzk1MSw5OSw2NjYyMSw5OSwxMjg4NDQsNjcsNzE5MjIsNjcsNzE5MTMsNjcsNjUzMTUsNjcsODU1Nyw2Nyw4NDUwLDY3LDg0OTMsNjcsMTE5ODEwLDY3LDExOTg2Miw2NywxMTk5MTQsNjcsMTE5OTY2LDY3LDEyMDAxOCw2NywxMjAxNzQsNjcsMTIwMjI2LDY3LDEyMDI3OCw2NywxMjAzMzAsNjcsMTIwMzgyLDY3LDEyMDQzNCw2NywxMDE3LDY3LDExNDI4LDY3LDUwODcsNjcsNDIyMDIsNjcsNjYyMTAsNjcsNjYzMDYsNjcsNjY1ODEsNjcsNjY4NDQsNjcsODU3NCwxMDAsODUxOCwxMDAsMTE5ODM3LDEwMCwxMTk4ODksMTAwLDExOTk0MSwxMDAsMTE5OTkzLDEwMCwxMjAwNDUsMTAwLDEyMDA5NywxMDAsMTIwMTQ5LDEwMCwxMjAyMDEsMTAwLDEyMDI1MywxMDAsMTIwMzA1LDEwMCwxMjAzNTcsMTAwLDEyMDQwOSwxMDAsMTIwNDYxLDEwMCwxMjgxLDEwMCw1MDk1LDEwMCw1MjMxLDEwMCw0MjE5NCwxMDAsODU1OCw2OCw4NTE3LDY4LDExOTgxMSw2OCwxMTk4NjMsNjgsMTE5OTE1LDY4LDExOTk2Nyw2OCwxMjAwMTksNjgsMTIwMDcxLDY4LDEyMDEyMyw2OCwxMjAxNzUsNjgsMTIwMjI3LDY4LDEyMDI3OSw2OCwxMjAzMzEsNjgsMTIwMzgzLDY4LDEyMDQzNSw2OCw1MDI0LDY4LDU1OTgsNjgsNTYxMCw2OCw0MjE5NSw2OCw4NDk0LDEwMSw2NTM0OSwxMDEsODQ5NSwxMDEsODUxOSwxMDEsMTE5ODM4LDEwMSwxMTk4OTAsMTAxLDExOTk0MiwxMDEsMTIwMDQ2LDEwMSwxMjAwOTgsMTAxLDEyMDE1MCwxMDEsMTIwMjAyLDEwMSwxMjAyNTQsMTAxLDEyMDMwNiwxMDEsMTIwMzU4LDEwMSwxMjA0MTAsMTAxLDEyMDQ2MiwxMDEsNDM4MjYsMTAxLDEyMTMsMTAxLDg5NTksNjksNjUzMTcsNjksODQ5Niw2OSwxMTk4MTIsNjksMTE5ODY0LDY5LDExOTkxNiw2OSwxMjAwMjAsNjksMTIwMDcyLDY5LDEyMDEyNCw2OSwxMjAxNzYsNjksMTIwMjI4LDY5LDEyMDI4MCw2OSwxMjAzMzIsNjksMTIwMzg0LDY5LDEyMDQzNiw2OSw5MTcsNjksMTIwNDkyLDY5LDEyMDU1MCw2OSwxMjA2MDgsNjksMTIwNjY2LDY5LDEyMDcyNCw2OSwxMTU3Nyw2OSw1MDM2LDY5LDQyMjI0LDY5LDcxODQ2LDY5LDcxODU0LDY5LDY2MTgyLDY5LDExOTgzOSwxMDIsMTE5ODkxLDEwMiwxMTk5NDMsMTAyLDExOTk5NSwxMDIsMTIwMDQ3LDEwMiwxMjAwOTksMTAyLDEyMDE1MSwxMDIsMTIwMjAzLDEwMiwxMjAyNTUsMTAyLDEyMDMwNywxMDIsMTIwMzU5LDEwMiwxMjA0MTEsMTAyLDEyMDQ2MywxMDIsNDM4MjksMTAyLDQyOTA1LDEwMiwzODMsMTAyLDc4MzcsMTAyLDE0MTIsMTAyLDExOTMxNSw3MCw4NDk3LDcwLDExOTgxMyw3MCwxMTk4NjUsNzAsMTE5OTE3LDcwLDEyMDAyMSw3MCwxMjAwNzMsNzAsMTIwMTI1LDcwLDEyMDE3Nyw3MCwxMjAyMjksNzAsMTIwMjgxLDcwLDEyMDMzMyw3MCwxMjAzODUsNzAsMTIwNDM3LDcwLDQyOTA0LDcwLDk4OCw3MCwxMjA3NzgsNzAsNTU1Niw3MCw0MjIwNSw3MCw3MTg3NCw3MCw3MTg0Miw3MCw2NjE4Myw3MCw2NjIxMyw3MCw2Njg1Myw3MCw2NTM1MSwxMDMsODQ1OCwxMDMsMTE5ODQwLDEwMywxMTk4OTIsMTAzLDExOTk0NCwxMDMsMTIwMDQ4LDEwMywxMjAxMDAsMTAzLDEyMDE1MiwxMDMsMTIwMjA0LDEwMywxMjAyNTYsMTAzLDEyMDMwOCwxMDMsMTIwMzYwLDEwMywxMjA0MTIsMTAzLDEyMDQ2NCwxMDMsNjA5LDEwMyw3NTU1LDEwMywzOTcsMTAzLDE0MDksMTAzLDExOTgxNCw3MSwxMTk4NjYsNzEsMTE5OTE4LDcxLDExOTk3MCw3MSwxMjAwMjIsNzEsMTIwMDc0LDcxLDEyMDEyNiw3MSwxMjAxNzgsNzEsMTIwMjMwLDcxLDEyMDI4Miw3MSwxMjAzMzQsNzEsMTIwMzg2LDcxLDEyMDQzOCw3MSwxMjkyLDcxLDUwNTYsNzEsNTEwNyw3MSw0MjE5OCw3MSw2NTM1MiwxMDQsODQ2MiwxMDQsMTE5ODQxLDEwNCwxMTk5NDUsMTA0LDExOTk5NywxMDQsMTIwMDQ5LDEwNCwxMjAxMDEsMTA0LDEyMDE1MywxMDQsMTIwMjA1LDEwNCwxMjAyNTcsMTA0LDEyMDMwOSwxMDQsMTIwMzYxLDEwNCwxMjA0MTMsMTA0LDEyMDQ2NSwxMDQsMTIxMSwxMDQsMTM5MiwxMDQsNTA1OCwxMDQsNjUzMjAsNzIsODQ1OSw3Miw4NDYwLDcyLDg0NjEsNzIsMTE5ODE1LDcyLDExOTg2Nyw3MiwxMTk5MTksNzIsMTIwMDIzLDcyLDEyMDE3OSw3MiwxMjAyMzEsNzIsMTIwMjgzLDcyLDEyMDMzNSw3MiwxMjAzODcsNzIsMTIwNDM5LDcyLDkxOSw3MiwxMjA0OTQsNzIsMTIwNTUyLDcyLDEyMDYxMCw3MiwxMjA2NjgsNzIsMTIwNzI2LDcyLDExNDA2LDcyLDUwNTEsNzIsNTUwMCw3Miw0MjIxNSw3Miw2NjI1NSw3Miw3MzEsMTA1LDkwNzUsMTA1LDY1MzUzLDEwNSw4NTYwLDEwNSw4NTA1LDEwNSw4NTIwLDEwNSwxMTk4NDIsMTA1LDExOTg5NCwxMDUsMTE5OTQ2LDEwNSwxMTk5OTgsMTA1LDEyMDA1MCwxMDUsMTIwMTAyLDEwNSwxMjAxNTQsMTA1LDEyMDIwNiwxMDUsMTIwMjU4LDEwNSwxMjAzMTAsMTA1LDEyMDM2MiwxMDUsMTIwNDE0LDEwNSwxMjA0NjYsMTA1LDEyMDQ4NCwxMDUsNjE4LDEwNSw2MTcsMTA1LDk1MywxMDUsODEyNiwxMDUsODkwLDEwNSwxMjA1MjIsMTA1LDEyMDU4MCwxMDUsMTIwNjM4LDEwNSwxMjA2OTYsMTA1LDEyMDc1NCwxMDUsMTExMCwxMDUsNDI1NjcsMTA1LDEyMzEsMTA1LDQzODkzLDEwNSw1MDI5LDEwNSw3MTg3NSwxMDUsNjUzNTQsMTA2LDg1MjEsMTA2LDExOTg0MywxMDYsMTE5ODk1LDEwNiwxMTk5NDcsMTA2LDExOTk5OSwxMDYsMTIwMDUxLDEwNiwxMjAxMDMsMTA2LDEyMDE1NSwxMDYsMTIwMjA3LDEwNiwxMjAyNTksMTA2LDEyMDMxMSwxMDYsMTIwMzYzLDEwNiwxMjA0MTUsMTA2LDEyMDQ2NywxMDYsMTAxMSwxMDYsMTExMiwxMDYsNjUzMjIsNzQsMTE5ODE3LDc0LDExOTg2OSw3NCwxMTk5MjEsNzQsMTE5OTczLDc0LDEyMDAyNSw3NCwxMjAwNzcsNzQsMTIwMTI5LDc0LDEyMDE4MSw3NCwxMjAyMzMsNzQsMTIwMjg1LDc0LDEyMDMzNyw3NCwxMjAzODksNzQsMTIwNDQxLDc0LDQyOTMwLDc0LDg5NSw3NCwxMDMyLDc0LDUwMzUsNzQsNTI2MSw3NCw0MjIwMSw3NCwxMTk4NDQsMTA3LDExOTg5NiwxMDcsMTE5OTQ4LDEwNywxMjAwMDAsMTA3LDEyMDA1MiwxMDcsMTIwMTA0LDEwNywxMjAxNTYsMTA3LDEyMDIwOCwxMDcsMTIwMjYwLDEwNywxMjAzMTIsMTA3LDEyMDM2NCwxMDcsMTIwNDE2LDEwNywxMjA0NjgsMTA3LDg0OTAsNzUsNjUzMjMsNzUsMTE5ODE4LDc1LDExOTg3MCw3NSwxMTk5MjIsNzUsMTE5OTc0LDc1LDEyMDAyNiw3NSwxMjAwNzgsNzUsMTIwMTMwLDc1LDEyMDE4Miw3NSwxMjAyMzQsNzUsMTIwMjg2LDc1LDEyMDMzOCw3NSwxMjAzOTAsNzUsMTIwNDQyLDc1LDkyMiw3NSwxMjA0OTcsNzUsMTIwNTU1LDc1LDEyMDYxMyw3NSwxMjA2NzEsNzUsMTIwNzI5LDc1LDExNDEyLDc1LDUwOTQsNzUsNTg0NSw3NSw0MjE5OSw3NSw2Njg0MCw3NSwxNDcyLDEwOCw4NzM5LDczLDkyMTMsNzMsNjU1MTIsNzMsMTYzMywxMDgsMTc3Nyw3Myw2NjMzNiwxMDgsMTI1MTI3LDEwOCwxMjA3ODMsNzMsMTIwNzkzLDczLDEyMDgwMyw3MywxMjA4MTMsNzMsMTIwODIzLDczLDEzMDAzMyw3Myw2NTMyMSw3Myw4NTQ0LDczLDg0NjQsNzMsODQ2NSw3MywxMTk4MTYsNzMsMTE5ODY4LDczLDExOTkyMCw3MywxMjAwMjQsNzMsMTIwMTI4LDczLDEyMDE4MCw3MywxMjAyMzIsNzMsMTIwMjg0LDczLDEyMDMzNiw3MywxMjAzODgsNzMsMTIwNDQwLDczLDY1MzU2LDEwOCw4NTcyLDczLDg0NjcsMTA4LDExOTg0NSwxMDgsMTE5ODk3LDEwOCwxMTk5NDksMTA4LDEyMDAwMSwxMDgsMTIwMDUzLDEwOCwxMjAxMDUsNzMsMTIwMTU3LDczLDEyMDIwOSw3MywxMjAyNjEsNzMsMTIwMzEzLDczLDEyMDM2NSw3MywxMjA0MTcsNzMsMTIwNDY5LDczLDQ0OCw3MywxMjA0OTYsNzMsMTIwNTU0LDczLDEyMDYxMiw3MywxMjA2NzAsNzMsMTIwNzI4LDczLDExNDEwLDczLDEwMzAsNzMsMTIxNiw3MywxNDkzLDEwOCwxNTAzLDEwOCwxNTc1LDEwOCwxMjY0NjQsMTA4LDEyNjU5MiwxMDgsNjUxNjYsMTA4LDY1MTY1LDEwOCwxOTk0LDEwOCwxMTU5OSw3Myw1ODI1LDczLDQyMjI2LDczLDkzOTkyLDczLDY2MTg2LDEyNCw2NjMxMywxMjQsMTE5MzM4LDc2LDg1NTYsNzYsODQ2Niw3NiwxMTk4MTksNzYsMTE5ODcxLDc2LDExOTkyMyw3NiwxMjAwMjcsNzYsMTIwMDc5LDc2LDEyMDEzMSw3NiwxMjAxODMsNzYsMTIwMjM1LDc2LDEyMDI4Nyw3NiwxMjAzMzksNzYsMTIwMzkxLDc2LDEyMDQ0Myw3NiwxMTQ3Miw3Niw1MDg2LDc2LDUyOTAsNzYsNDIyMDksNzYsOTM5NzQsNzYsNzE4NDMsNzYsNzE4NTgsNzYsNjY1ODcsNzYsNjY4NTQsNzYsNjUzMjUsNzcsODU1OSw3Nyw4NDk5LDc3LDExOTgyMCw3NywxMTk4NzIsNzcsMTE5OTI0LDc3LDEyMDAyOCw3NywxMjAwODAsNzcsMTIwMTMyLDc3LDEyMDE4NCw3NywxMjAyMzYsNzcsMTIwMjg4LDc3LDEyMDM0MCw3NywxMjAzOTIsNzcsMTIwNDQ0LDc3LDkyNCw3NywxMjA0OTksNzcsMTIwNTU3LDc3LDEyMDYxNSw3NywxMjA2NzMsNzcsMTIwNzMxLDc3LDEwMTgsNzcsMTE0MTYsNzcsNTA0Nyw3Nyw1NjE2LDc3LDU4NDYsNzcsNDIyMDcsNzcsNjYyMjQsNzcsNjYzMjEsNzcsMTE5ODQ3LDExMCwxMTk4OTksMTEwLDExOTk1MSwxMTAsMTIwMDAzLDExMCwxMjAwNTUsMTEwLDEyMDEwNywxMTAsMTIwMTU5LDExMCwxMjAyMTEsMTEwLDEyMDI2MywxMTAsMTIwMzE1LDExMCwxMjAzNjcsMTEwLDEyMDQxOSwxMTAsMTIwNDcxLDExMCwxNDAwLDExMCwxNDA0LDExMCw2NTMyNiw3OCw4NDY5LDc4LDExOTgyMSw3OCwxMTk4NzMsNzgsMTE5OTI1LDc4LDExOTk3Nyw3OCwxMjAwMjksNzgsMTIwMDgxLDc4LDEyMDE4NSw3OCwxMjAyMzcsNzgsMTIwMjg5LDc4LDEyMDM0MSw3OCwxMjAzOTMsNzgsMTIwNDQ1LDc4LDkyNSw3OCwxMjA1MDAsNzgsMTIwNTU4LDc4LDEyMDYxNiw3OCwxMjA2NzQsNzgsMTIwNzMyLDc4LDExNDE4LDc4LDQyMjA4LDc4LDY2ODM1LDc4LDMwNzQsMTExLDMyMDIsMTExLDMzMzAsMTExLDM0NTgsMTExLDI0MDYsMTExLDI2NjIsMTExLDI3OTAsMTExLDMwNDYsMTExLDMxNzQsMTExLDMzMDIsMTExLDM0MzAsMTExLDM2NjQsMTExLDM3OTIsMTExLDQxNjAsMTExLDE2MzcsMTExLDE3ODEsMTExLDY1MzU5LDExMSw4NTAwLDExMSwxMTk4NDgsMTExLDExOTkwMCwxMTEsMTE5OTUyLDExMSwxMjAwNTYsMTExLDEyMDEwOCwxMTEsMTIwMTYwLDExMSwxMjAyMTIsMTExLDEyMDI2NCwxMTEsMTIwMzE2LDExMSwxMjAzNjgsMTExLDEyMDQyMCwxMTEsMTIwNDcyLDExMSw3NDM5LDExMSw3NDQxLDExMSw0MzgzNywxMTEsOTU5LDExMSwxMjA1MjgsMTExLDEyMDU4NiwxMTEsMTIwNjQ0LDExMSwxMjA3MDIsMTExLDEyMDc2MCwxMTEsOTYzLDExMSwxMjA1MzIsMTExLDEyMDU5MCwxMTEsMTIwNjQ4LDExMSwxMjA3MDYsMTExLDEyMDc2NCwxMTEsMTE0MjMsMTExLDQzNTEsMTExLDE0MTMsMTExLDE1MDUsMTExLDE2MDcsMTExLDEyNjUwMCwxMTEsMTI2NTY0LDExMSwxMjY1OTYsMTExLDY1MjU5LDExMSw2NTI2MCwxMTEsNjUyNTgsMTExLDY1MjU3LDExMSwxNzI2LDExMSw2NDQyOCwxMTEsNjQ0MjksMTExLDY0NDI3LDExMSw2NDQyNiwxMTEsMTcyOSwxMTEsNjQ0MjQsMTExLDY0NDI1LDExMSw2NDQyMywxMTEsNjQ0MjIsMTExLDE3NDksMTExLDMzNjAsMTExLDQxMjUsMTExLDY2Nzk0LDExMSw3MTg4MCwxMTEsNzE4OTUsMTExLDY2NjA0LDExMSwxOTg0LDc5LDI1MzQsNzksMjkxOCw3OSwxMjI5NSw3OSw3MDg2NCw3OSw3MTkwNCw3OSwxMjA3ODIsNzksMTIwNzkyLDc5LDEyMDgwMiw3OSwxMjA4MTIsNzksMTIwODIyLDc5LDEzMDAzMiw3OSw2NTMyNyw3OSwxMTk4MjIsNzksMTE5ODc0LDc5LDExOTkyNiw3OSwxMTk5NzgsNzksMTIwMDMwLDc5LDEyMDA4Miw3OSwxMjAxMzQsNzksMTIwMTg2LDc5LDEyMDIzOCw3OSwxMjAyOTAsNzksMTIwMzQyLDc5LDEyMDM5NCw3OSwxMjA0NDYsNzksOTI3LDc5LDEyMDUwMiw3OSwxMjA1NjAsNzksMTIwNjE4LDc5LDEyMDY3Niw3OSwxMjA3MzQsNzksMTE0MjIsNzksMTM2NSw3OSwxMTYwNCw3OSw0ODE2LDc5LDI4NDgsNzksNjY3NTQsNzksNDIyMjcsNzksNzE4NjEsNzksNjYxOTQsNzksNjYyMTksNzksNjY1NjQsNzksNjY4MzgsNzksOTA3NiwxMTIsNjUzNjAsMTEyLDExOTg0OSwxMTIsMTE5OTAxLDExMiwxMTk5NTMsMTEyLDEyMDAwNSwxMTIsMTIwMDU3LDExMiwxMjAxMDksMTEyLDEyMDE2MSwxMTIsMTIwMjEzLDExMiwxMjAyNjUsMTEyLDEyMDMxNywxMTIsMTIwMzY5LDExMiwxMjA0MjEsMTEyLDEyMDQ3MywxMTIsOTYxLDExMiwxMjA1MzAsMTEyLDEyMDU0NCwxMTIsMTIwNTg4LDExMiwxMjA2MDIsMTEyLDEyMDY0NiwxMTIsMTIwNjYwLDExMiwxMjA3MDQsMTEyLDEyMDcxOCwxMTIsMTIwNzYyLDExMiwxMjA3NzYsMTEyLDExNDI3LDExMiw2NTMyOCw4MCw4NDczLDgwLDExOTgyMyw4MCwxMTk4NzUsODAsMTE5OTI3LDgwLDExOTk3OSw4MCwxMjAwMzEsODAsMTIwMDgzLDgwLDEyMDE4Nyw4MCwxMjAyMzksODAsMTIwMjkxLDgwLDEyMDM0Myw4MCwxMjAzOTUsODAsMTIwNDQ3LDgwLDkyOSw4MCwxMjA1MDQsODAsMTIwNTYyLDgwLDEyMDYyMCw4MCwxMjA2NzgsODAsMTIwNzM2LDgwLDExNDI2LDgwLDUwOTAsODAsNTIyOSw4MCw0MjE5Myw4MCw2NjE5Nyw4MCwxMTk4NTAsMTEzLDExOTkwMiwxMTMsMTE5OTU0LDExMywxMjAwMDYsMTEzLDEyMDA1OCwxMTMsMTIwMTEwLDExMywxMjAxNjIsMTEzLDEyMDIxNCwxMTMsMTIwMjY2LDExMywxMjAzMTgsMTEzLDEyMDM3MCwxMTMsMTIwNDIyLDExMywxMjA0NzQsMTEzLDEzMDcsMTEzLDEzNzksMTEzLDEzODIsMTEzLDg0NzQsODEsMTE5ODI0LDgxLDExOTg3Niw4MSwxMTk5MjgsODEsMTE5OTgwLDgxLDEyMDAzMiw4MSwxMjAwODQsODEsMTIwMTg4LDgxLDEyMDI0MCw4MSwxMjAyOTIsODEsMTIwMzQ0LDgxLDEyMDM5Niw4MSwxMjA0NDgsODEsMTE2MDUsODEsMTE5ODUxLDExNCwxMTk5MDMsMTE0LDExOTk1NSwxMTQsMTIwMDA3LDExNCwxMjAwNTksMTE0LDEyMDExMSwxMTQsMTIwMTYzLDExNCwxMjAyMTUsMTE0LDEyMDI2NywxMTQsMTIwMzE5LDExNCwxMjAzNzEsMTE0LDEyMDQyMywxMTQsMTIwNDc1LDExNCw0Mzg0NywxMTQsNDM4NDgsMTE0LDc0NjIsMTE0LDExMzk3LDExNCw0MzkwNSwxMTQsMTE5MzE4LDgyLDg0NzUsODIsODQ3Niw4Miw4NDc3LDgyLDExOTgyNSw4MiwxMTk4NzcsODIsMTE5OTI5LDgyLDEyMDAzMyw4MiwxMjAxODksODIsMTIwMjQxLDgyLDEyMDI5Myw4MiwxMjAzNDUsODIsMTIwMzk3LDgyLDEyMDQ0OSw4Miw0MjIsODIsNTAyNSw4Miw1MDc0LDgyLDY2NzQwLDgyLDU1MTEsODIsNDIyMTEsODIsOTQwMDUsODIsNjUzNjMsMTE1LDExOTg1MiwxMTUsMTE5OTA0LDExNSwxMTk5NTYsMTE1LDEyMDAwOCwxMTUsMTIwMDYwLDExNSwxMjAxMTIsMTE1LDEyMDE2NCwxMTUsMTIwMjE2LDExNSwxMjAyNjgsMTE1LDEyMDMyMCwxMTUsMTIwMzcyLDExNSwxMjA0MjQsMTE1LDEyMDQ3NiwxMTUsNDI4MDEsMTE1LDQ0NSwxMTUsMTEwOSwxMTUsNDM5NDYsMTE1LDcxODczLDExNSw2NjYzMiwxMTUsNjUzMzEsODMsMTE5ODI2LDgzLDExOTg3OCw4MywxMTk5MzAsODMsMTE5OTgyLDgzLDEyMDAzNCw4MywxMjAwODYsODMsMTIwMTM4LDgzLDEyMDE5MCw4MywxMjAyNDIsODMsMTIwMjk0LDgzLDEyMDM0Niw4MywxMjAzOTgsODMsMTIwNDUwLDgzLDEwMjksODMsMTM1OSw4Myw1MDc3LDgzLDUwODIsODMsNDIyMTAsODMsOTQwMTAsODMsNjYxOTgsODMsNjY1OTIsODMsMTE5ODUzLDExNiwxMTk5MDUsMTE2LDExOTk1NywxMTYsMTIwMDA5LDExNiwxMjAwNjEsMTE2LDEyMDExMywxMTYsMTIwMTY1LDExNiwxMjAyMTcsMTE2LDEyMDI2OSwxMTYsMTIwMzIxLDExNiwxMjAzNzMsMTE2LDEyMDQyNSwxMTYsMTIwNDc3LDExNiw4ODY4LDg0LDEwMjAxLDg0LDEyODg3Miw4NCw2NTMzMiw4NCwxMTk4MjcsODQsMTE5ODc5LDg0LDExOTkzMSw4NCwxMTk5ODMsODQsMTIwMDM1LDg0LDEyMDA4Nyw4NCwxMjAxMzksODQsMTIwMTkxLDg0LDEyMDI0Myw4NCwxMjAyOTUsODQsMTIwMzQ3LDg0LDEyMDM5OSw4NCwxMjA0NTEsODQsOTMyLDg0LDEyMDUwNyw4NCwxMjA1NjUsODQsMTIwNjIzLDg0LDEyMDY4MSw4NCwxMjA3MzksODQsMTE0MzAsODQsNTAyNiw4NCw0MjE5Niw4NCw5Mzk2Miw4NCw3MTg2OCw4NCw2NjE5OSw4NCw2NjIyNSw4NCw2NjMyNSw4NCwxMTk4NTQsMTE3LDExOTkwNiwxMTcsMTE5OTU4LDExNywxMjAwMTAsMTE3LDEyMDA2MiwxMTcsMTIwMTE0LDExNywxMjAxNjYsMTE3LDEyMDIxOCwxMTcsMTIwMjcwLDExNywxMjAzMjIsMTE3LDEyMDM3NCwxMTcsMTIwNDI2LDExNywxMjA0NzgsMTE3LDQyOTExLDExNyw3NDUyLDExNyw0Mzg1NCwxMTcsNDM4NTgsMTE3LDY1MSwxMTcsOTY1LDExNywxMjA1MzQsMTE3LDEyMDU5MiwxMTcsMTIwNjUwLDExNywxMjA3MDgsMTE3LDEyMDc2NiwxMTcsMTQwNSwxMTcsNjY4MDYsMTE3LDcxODk2LDExNyw4NzQ2LDg1LDg4OTksODUsMTE5ODI4LDg1LDExOTg4MCw4NSwxMTk5MzIsODUsMTE5OTg0LDg1LDEyMDAzNiw4NSwxMjAwODgsODUsMTIwMTQwLDg1LDEyMDE5Miw4NSwxMjAyNDQsODUsMTIwMjk2LDg1LDEyMDM0OCw4NSwxMjA0MDAsODUsMTIwNDUyLDg1LDEzNTcsODUsNDYwOCw4NSw2Njc2Niw4NSw1MTk2LDg1LDQyMjI4LDg1LDk0MDE4LDg1LDcxODY0LDg1LDg3NDQsMTE4LDg4OTcsMTE4LDY1MzY2LDExOCw4NTY0LDExOCwxMTk4NTUsMTE4LDExOTkwNywxMTgsMTE5OTU5LDExOCwxMjAwMTEsMTE4LDEyMDA2MywxMTgsMTIwMTE1LDExOCwxMjAxNjcsMTE4LDEyMDIxOSwxMTgsMTIwMjcxLDExOCwxMjAzMjMsMTE4LDEyMDM3NSwxMTgsMTIwNDI3LDExOCwxMjA0NzksMTE4LDc0NTYsMTE4LDk1NywxMTgsMTIwNTI2LDExOCwxMjA1ODQsMTE4LDEyMDY0MiwxMTgsMTIwNzAwLDExOCwxMjA3NTgsMTE4LDExNDEsMTE4LDE0OTYsMTE4LDcxNDMwLDExOCw0Mzk0NSwxMTgsNzE4NzIsMTE4LDExOTMwOSw4NiwxNjM5LDg2LDE3ODMsODYsODU0OCw4NiwxMTk4MjksODYsMTE5ODgxLDg2LDExOTkzMyw4NiwxMTk5ODUsODYsMTIwMDM3LDg2LDEyMDA4OSw4NiwxMjAxNDEsODYsMTIwMTkzLDg2LDEyMDI0NSw4NiwxMjAyOTcsODYsMTIwMzQ5LDg2LDEyMDQwMSw4NiwxMjA0NTMsODYsMTE0MCw4NiwxMTU3Niw4Niw1MDgxLDg2LDUxNjcsODYsNDI3MTksODYsNDIyMTQsODYsOTM5NjAsODYsNzE4NDAsODYsNjY4NDUsODYsNjIzLDExOSwxMTk4NTYsMTE5LDExOTkwOCwxMTksMTE5OTYwLDExOSwxMjAwMTIsMTE5LDEyMDA2NCwxMTksMTIwMTE2LDExOSwxMjAxNjgsMTE5LDEyMDIyMCwxMTksMTIwMjcyLDExOSwxMjAzMjQsMTE5LDEyMDM3NiwxMTksMTIwNDI4LDExOSwxMjA0ODAsMTE5LDc0NTcsMTE5LDExMjEsMTE5LDEzMDksMTE5LDEzNzcsMTE5LDcxNDM0LDExOSw3MTQzOCwxMTksNzE0MzksMTE5LDQzOTA3LDExOSw3MTkxOSw4Nyw3MTkxMCw4NywxMTk4MzAsODcsMTE5ODgyLDg3LDExOTkzNCw4NywxMTk5ODYsODcsMTIwMDM4LDg3LDEyMDA5MCw4NywxMjAxNDIsODcsMTIwMTk0LDg3LDEyMDI0Niw4NywxMjAyOTgsODcsMTIwMzUwLDg3LDEyMDQwMiw4NywxMjA0NTQsODcsMTMwOCw4Nyw1MDQzLDg3LDUwNzYsODcsNDIyMTgsODcsNTc0MiwxMjAsMTA1MzksMTIwLDEwNTQwLDEyMCwxMDc5OSwxMjAsNjUzNjgsMTIwLDg1NjksMTIwLDExOTg1NywxMjAsMTE5OTA5LDEyMCwxMTk5NjEsMTIwLDEyMDAxMywxMjAsMTIwMDY1LDEyMCwxMjAxMTcsMTIwLDEyMDE2OSwxMjAsMTIwMjIxLDEyMCwxMjAyNzMsMTIwLDEyMDMyNSwxMjAsMTIwMzc3LDEyMCwxMjA0MjksMTIwLDEyMDQ4MSwxMjAsNTQ0MSwxMjAsNTUwMSwxMjAsNTc0MSw4OCw5NTg3LDg4LDY2MzM4LDg4LDcxOTE2LDg4LDY1MzM2LDg4LDg1NTMsODgsMTE5ODMxLDg4LDExOTg4Myw4OCwxMTk5MzUsODgsMTE5OTg3LDg4LDEyMDAzOSw4OCwxMjAwOTEsODgsMTIwMTQzLDg4LDEyMDE5NSw4OCwxMjAyNDcsODgsMTIwMjk5LDg4LDEyMDM1MSw4OCwxMjA0MDMsODgsMTIwNDU1LDg4LDQyOTMxLDg4LDkzNSw4OCwxMjA1MTAsODgsMTIwNTY4LDg4LDEyMDYyNiw4OCwxMjA2ODQsODgsMTIwNzQyLDg4LDExNDM2LDg4LDExNjEzLDg4LDU4MTUsODgsNDIyMTksODgsNjYxOTIsODgsNjYyMjgsODgsNjYzMjcsODgsNjY4NTUsODgsNjExLDEyMSw3NTY0LDEyMSw2NTM2OSwxMjEsMTE5ODU4LDEyMSwxMTk5MTAsMTIxLDExOTk2MiwxMjEsMTIwMDE0LDEyMSwxMjAwNjYsMTIxLDEyMDExOCwxMjEsMTIwMTcwLDEyMSwxMjAyMjIsMTIxLDEyMDI3NCwxMjEsMTIwMzI2LDEyMSwxMjAzNzgsMTIxLDEyMDQzMCwxMjEsMTIwNDgyLDEyMSw2NTUsMTIxLDc5MzUsMTIxLDQzODY2LDEyMSw5NDcsMTIxLDg1MDksMTIxLDEyMDUxNiwxMjEsMTIwNTc0LDEyMSwxMjA2MzIsMTIxLDEyMDY5MCwxMjEsMTIwNzQ4LDEyMSwxMTk5LDEyMSw0MzI3LDEyMSw3MTkwMCwxMjEsNjUzMzcsODksMTE5ODMyLDg5LDExOTg4NCw4OSwxMTk5MzYsODksMTE5OTg4LDg5LDEyMDA0MCw4OSwxMjAwOTIsODksMTIwMTQ0LDg5LDEyMDE5Niw4OSwxMjAyNDgsODksMTIwMzAwLDg5LDEyMDM1Miw4OSwxMjA0MDQsODksMTIwNDU2LDg5LDkzMyw4OSw5NzgsODksMTIwNTA4LDg5LDEyMDU2Niw4OSwxMjA2MjQsODksMTIwNjgyLDg5LDEyMDc0MCw4OSwxMTQzMiw4OSwxMTk4LDg5LDUwMzMsODksNTA1Myw4OSw0MjIyMCw4OSw5NDAxOSw4OSw3MTg0NCw4OSw2NjIyNiw4OSwxMTk4NTksMTIyLDExOTkxMSwxMjIsMTE5OTYzLDEyMiwxMjAwMTUsMTIyLDEyMDA2NywxMjIsMTIwMTE5LDEyMiwxMjAxNzEsMTIyLDEyMDIyMywxMjIsMTIwMjc1LDEyMiwxMjAzMjcsMTIyLDEyMDM3OSwxMjIsMTIwNDMxLDEyMiwxMjA0ODMsMTIyLDc0NTgsMTIyLDQzOTIzLDEyMiw3MTg3NiwxMjIsNjYyOTMsOTAsNzE5MDksOTAsNjUzMzgsOTAsODQ4NCw5MCw4NDg4LDkwLDExOTgzMyw5MCwxMTk4ODUsOTAsMTE5OTM3LDkwLDExOTk4OSw5MCwxMjAwNDEsOTAsMTIwMTk3LDkwLDEyMDI0OSw5MCwxMjAzMDEsOTAsMTIwMzUzLDkwLDEyMDQwNSw5MCwxMjA0NTcsOTAsOTE4LDkwLDEyMDQ5Myw5MCwxMjA1NTEsOTAsMTIwNjA5LDkwLDEyMDY2Nyw5MCwxMjA3MjUsOTAsNTA1OSw5MCw0MjIwNCw5MCw3MTg0OSw5MCw2NTI4MiwzNCw2NTI4NCwzNiw2NTI4NSwzNyw2NTI4NiwzOCw2NTI5MCw0Miw2NTI5MSw0Myw2NTI5NCw0Niw2NTI5NSw0Nyw2NTI5Niw0OCw2NTI5Nyw0OSw2NTI5OCw1MCw2NTI5OSw1MSw2NTMwMCw1Miw2NTMwMSw1Myw2NTMwMiw1NCw2NTMwMyw1NSw2NTMwNCw1Niw2NTMwNSw1Nyw2NTMwOCw2MCw2NTMwOSw2MSw2NTMxMCw2Miw2NTMxMiw2NCw2NTMxNiw2OCw2NTMxOCw3MCw2NTMxOSw3MSw2NTMyNCw3Niw2NTMyOSw4MSw2NTMzMCw4Miw2NTMzMyw4NSw2NTMzNCw4Niw2NTMzNSw4Nyw2NTM0Myw5NSw2NTM0Niw5OCw2NTM0OCwxMDAsNjUzNTAsMTAyLDY1MzU1LDEwNyw2NTM1NywxMDksNjUzNTgsMTEwLDY1MzYxLDExMyw2NTM2MiwxMTQsNjUzNjQsMTE2LDY1MzY1LDExNyw2NTM2NywxMTksNjUzNzAsMTIyLDY1MzcxLDEyMyw2NTM3MywxMjUsMTE5ODQ2LDEwOV0sIl9kZWZhdWx0IjpbMTYwLDMyLDgyMTEsNDUsNjUzNzQsMTI2LDY1MzA2LDU4LDY1MjgxLDMzLDgyMTYsOTYsODIxNyw5Niw4MjQ1LDk2LDE4MCw5NiwxMjQ5NCw0NywxMDQ3LDUxLDEwNzMsNTQsMTA3Miw5NywxMDQwLDY1LDEwNjgsOTgsMTA0Miw2NiwxMDg5LDk5LDEwNTcsNjcsMTA3NywxMDEsMTA0NSw2OSwxMDUzLDcyLDMwNSwxMDUsMTA1MCw3NSw5MjEsNzMsMTA1Miw3NywxMDg2LDExMSwxMDU0LDc5LDEwMDksMTEyLDEwODgsMTEyLDEwNTYsODAsMTA3NSwxMTQsMTA1OCw4NCwyMTUsMTIwLDEwOTMsMTIwLDEwNjEsODgsMTA5MSwxMjEsMTA1OSw4OSw2NTI4MywzNSw2NTI4OCw0MCw2NTI4OSw0MSw2NTI5Miw0NCw2NTMwNyw1OSw2NTMxMSw2M10sImNzIjpbNjUzNzQsMTI2LDY1MzA2LDU4LDY1MjgxLDMzLDgyMTYsOTYsODIxNyw5Niw4MjQ1LDk2LDE4MCw5NiwxMjQ5NCw0NywxMDQ3LDUxLDEwNzMsNTQsMTA3Miw5NywxMDQwLDY1LDEwNjgsOTgsMTA0Miw2NiwxMDg5LDk5LDEwNTcsNjcsMTA3NywxMDEsMTA0NSw2OSwxMDUzLDcyLDMwNSwxMDUsMTA1MCw3NSw5MjEsNzMsMTA1Miw3NywxMDg2LDExMSwxMDU0LDc5LDEwMDksMTEyLDEwODgsMTEyLDEwNTYsODAsMTA3NSwxMTQsMTA1OCw4NCwxMDkzLDEyMCwxMDYxLDg4LDEwOTEsMTIxLDEwNTksODksNjUyODMsMzUsNjUyODgsNDAsNjUyODksNDEsNjUyOTIsNDQsNjUzMDcsNTksNjUzMTEsNjNdLCJkZSI6WzY1Mzc0LDEyNiw2NTMwNiw1OCw2NTI4MSwzMyw4MjE2LDk2LDgyMTcsOTYsODI0NSw5NiwxODAsOTYsMTI0OTQsNDcsMTA0Nyw1MSwxMDczLDU0LDEwNzIsOTcsMTA0MCw2NSwxMDY4LDk4LDEwNDIsNjYsMTA4OSw5OSwxMDU3LDY3LDEwNzcsMTAxLDEwNDUsNjksMTA1Myw3MiwzMDUsMTA1LDEwNTAsNzUsOTIxLDczLDEwNTIsNzcsMTA4NiwxMTEsMTA1NCw3OSwxMDA5LDExMiwxMDg4LDExMiwxMDU2LDgwLDEwNzUsMTE0LDEwNTgsODQsMTA5MywxMjAsMTA2MSw4OCwxMDkxLDEyMSwxMDU5LDg5LDY1MjgzLDM1LDY1Mjg4LDQwLDY1Mjg5LDQxLDY1MjkyLDQ0LDY1MzA3LDU5LDY1MzExLDYzXSwiZXMiOls4MjExLDQ1LDY1Mzc0LDEyNiw2NTMwNiw1OCw2NTI4MSwzMyw4MjQ1LDk2LDE4MCw5NiwxMjQ5NCw0NywxMDQ3LDUxLDEwNzMsNTQsMTA3Miw5NywxMDQwLDY1LDEwNjgsOTgsMTA0Miw2NiwxMDg5LDk5LDEwNTcsNjcsMTA3NywxMDEsMTA0NSw2OSwxMDUzLDcyLDMwNSwxMDUsMTA1MCw3NSwxMDUyLDc3LDEwODYsMTExLDEwNTQsNzksMTAwOSwxMTIsMTA4OCwxMTIsMTA1Niw4MCwxMDc1LDExNCwxMDU4LDg0LDIxNSwxMjAsMTA5MywxMjAsMTA2MSw4OCwxMDkxLDEyMSwxMDU5LDg5LDY1MjgzLDM1LDY1Mjg4LDQwLDY1Mjg5LDQxLDY1MjkyLDQ0LDY1MzA3LDU5LDY1MzExLDYzXSwiZnIiOls2NTM3NCwxMjYsNjUzMDYsNTgsNjUyODEsMzMsODIxNiw5Niw4MjQ1LDk2LDEyNDk0LDQ3LDEwNDcsNTEsMTA3Myw1NCwxMDcyLDk3LDEwNDAsNjUsMTA2OCw5OCwxMDQyLDY2LDEwODksOTksMTA1Nyw2NywxMDc3LDEwMSwxMDQ1LDY5LDEwNTMsNzIsMzA1LDEwNSwxMDUwLDc1LDkyMSw3MywxMDUyLDc3LDEwODYsMTExLDEwNTQsNzksMTAwOSwxMTIsMTA4OCwxMTIsMTA1Niw4MCwxMDc1LDExNCwxMDU4LDg0LDIxNSwxMjAsMTA5MywxMjAsMTA2MSw4OCwxMDkxLDEyMSwxMDU5LDg5LDY1MjgzLDM1LDY1Mjg4LDQwLDY1Mjg5LDQxLDY1MjkyLDQ0LDY1MzA3LDU5LDY1MzExLDYzXSwiaXQiOlsxNjAsMzIsODIxMSw0NSw2NTM3NCwxMjYsNjUzMDYsNTgsNjUyODEsMzMsODIxNiw5Niw4MjQ1LDk2LDE4MCw5NiwxMjQ5NCw0NywxMDQ3LDUxLDEwNzMsNTQsMTA3Miw5NywxMDQwLDY1LDEwNjgsOTgsMTA0Miw2NiwxMDg5LDk5LDEwNTcsNjcsMTA3NywxMDEsMTA0NSw2OSwxMDUzLDcyLDMwNSwxMDUsMTA1MCw3NSw5MjEsNzMsMTA1Miw3NywxMDg2LDExMSwxMDU0LDc5LDEwMDksMTEyLDEwODgsMTEyLDEwNTYsODAsMTA3NSwxMTQsMTA1OCw4NCwyMTUsMTIwLDEwOTMsMTIwLDEwNjEsODgsMTA5MSwxMjEsMTA1OSw4OSw2NTI4MywzNSw2NTI4OCw0MCw2NTI4OSw0MSw2NTI5Miw0NCw2NTMwNyw1OSw2NTMxMSw2M10sImphIjpbODIxMSw0NSw2NTMwNiw1OCw2NTI4MSwzMyw4MjE2LDk2LDgyMTcsOTYsODI0NSw5NiwxODAsOTYsMTA0Nyw1MSwxMDczLDU0LDEwNzIsOTcsMTA0MCw2NSwxMDY4LDk4LDEwNDIsNjYsMTA4OSw5OSwxMDU3LDY3LDEwNzcsMTAxLDEwNDUsNjksMTA1Myw3MiwzMDUsMTA1LDEwNTAsNzUsOTIxLDczLDEwNTIsNzcsMTA4NiwxMTEsMTA1NCw3OSwxMDA5LDExMiwxMDg4LDExMiwxMDU2LDgwLDEwNzUsMTE0LDEwNTgsODQsMjE1LDEyMCwxMDkzLDEyMCwxMDYxLDg4LDEwOTEsMTIxLDEwNTksODksNjUyODMsMzUsNjUyOTIsNDQsNjUzMDcsNTldLCJrbyI6WzgyMTEsNDUsNjUzNzQsMTI2LDY1MzA2LDU4LDY1MjgxLDMzLDgyNDUsOTYsMTgwLDk2LDEyNDk0LDQ3LDEwNDcsNTEsMTA3Myw1NCwxMDcyLDk3LDEwNDAsNjUsMTA2OCw5OCwxMDQyLDY2LDEwODksOTksMTA1Nyw2NywxMDc3LDEwMSwxMDQ1LDY5LDEwNTMsNzIsMzA1LDEwNSwxMDUwLDc1LDkyMSw3MywxMDUyLDc3LDEwODYsMTExLDEwNTQsNzksMTAwOSwxMTIsMTA4OCwxMTIsMTA1Niw4MCwxMDc1LDExNCwxMDU4LDg0LDIxNSwxMjAsMTA5MywxMjAsMTA2MSw4OCwxMDkxLDEyMSwxMDU5LDg5LDY1MjgzLDM1LDY1Mjg4LDQwLDY1Mjg5LDQxLDY1MjkyLDQ0LDY1MzA3LDU5LDY1MzExLDYzXSwicGwiOls2NTM3NCwxMjYsNjUzMDYsNTgsNjUyODEsMzMsODIxNiw5Niw4MjE3LDk2LDgyNDUsOTYsMTgwLDk2LDEyNDk0LDQ3LDEwNDcsNTEsMTA3Myw1NCwxMDcyLDk3LDEwNDAsNjUsMTA2OCw5OCwxMDQyLDY2LDEwODksOTksMTA1Nyw2NywxMDc3LDEwMSwxMDQ1LDY5LDEwNTMsNzIsMzA1LDEwNSwxMDUwLDc1LDkyMSw3MywxMDUyLDc3LDEwODYsMTExLDEwNTQsNzksMTAwOSwxMTIsMTA4OCwxMTIsMTA1Niw4MCwxMDc1LDExNCwxMDU4LDg0LDIxNSwxMjAsMTA5MywxMjAsMTA2MSw4OCwxMDkxLDEyMSwxMDU5LDg5LDY1MjgzLDM1LDY1Mjg4LDQwLDY1Mjg5LDQxLDY1MjkyLDQ0LDY1MzA3LDU5LDY1MzExLDYzXSwicHQtQlIiOls2NTM3NCwxMjYsNjUzMDYsNTgsNjUyODEsMzMsODIxNiw5Niw4MjE3LDk2LDgyNDUsOTYsMTgwLDk2LDEyNDk0LDQ3LDEwNDcsNTEsMTA3Myw1NCwxMDcyLDk3LDEwNDAsNjUsMTA2OCw5OCwxMDQyLDY2LDEwODksOTksMTA1Nyw2NywxMDc3LDEwMSwxMDQ1LDY5LDEwNTMsNzIsMzA1LDEwNSwxMDUwLDc1LDkyMSw3MywxMDUyLDc3LDEwODYsMTExLDEwNTQsNzksMTAwOSwxMTIsMTA4OCwxMTIsMTA1Niw4MCwxMDc1LDExNCwxMDU4LDg0LDIxNSwxMjAsMTA5MywxMjAsMTA2MSw4OCwxMDkxLDEyMSwxMDU5LDg5LDY1MjgzLDM1LDY1Mjg4LDQwLDY1Mjg5LDQxLDY1MjkyLDQ0LDY1MzA3LDU5LDY1MzExLDYzXSwicXBzLXBsb2MiOlsxNjAsMzIsODIxMSw0NSw2NTM3NCwxMjYsNjUzMDYsNTgsNjUyODEsMzMsODIxNiw5Niw4MjE3LDk2LDgyNDUsOTYsMTgwLDk2LDEyNDk0LDQ3LDEwNDcsNTEsMTA3Myw1NCwxMDcyLDk3LDEwNDAsNjUsMTA2OCw5OCwxMDQyLDY2LDEwODksOTksMTA1Nyw2NywxMDc3LDEwMSwxMDQ1LDY5LDEwNTMsNzIsMzA1LDEwNSwxMDUwLDc1LDkyMSw3MywxMDUyLDc3LDEwODYsMTExLDEwNTQsNzksMTA4OCwxMTIsMTA1Niw4MCwxMDc1LDExNCwxMDU4LDg0LDIxNSwxMjAsMTA5MywxMjAsMTA2MSw4OCwxMDkxLDEyMSwxMDU5LDg5LDY1MjgzLDM1LDY1Mjg4LDQwLDY1Mjg5LDQxLDY1MjkyLDQ0LDY1MzA3LDU5LDY1MzExLDYzXSwicnUiOls2NTM3NCwxMjYsNjUzMDYsNTgsNjUyODEsMzMsODIxNiw5Niw4MjE3LDk2LDgyNDUsOTYsMTgwLDk2LDEyNDk0LDQ3LDMwNSwxMDUsOTIxLDczLDEwMDksMTEyLDIxNSwxMjAsNjUyODMsMzUsNjUyODgsNDAsNjUyODksNDEsNjUyOTIsNDQsNjUzMDcsNTksNjUzMTEsNjNdLCJ0ciI6WzE2MCwzMiw4MjExLDQ1LDY1Mzc0LDEyNiw2NTMwNiw1OCw2NTI4MSwzMyw4MjQ1LDk2LDE4MCw5NiwxMjQ5NCw0NywxMDQ3LDUxLDEwNzMsNTQsMTA3Miw5NywxMDQwLDY1LDEwNjgsOTgsMTA0Miw2NiwxMDg5LDk5LDEwNTcsNjcsMTA3NywxMDEsMTA0NSw2OSwxMDUzLDcyLDEwNTAsNzUsOTIxLDczLDEwNTIsNzcsMTA4NiwxMTEsMTA1NCw3OSwxMDA5LDExMiwxMDg4LDExMiwxMDU2LDgwLDEwNzUsMTE0LDEwNTgsODQsMjE1LDEyMCwxMDkzLDEyMCwxMDYxLDg4LDEwOTEsMTIxLDEwNTksODksNjUyODMsMzUsNjUyODgsNDAsNjUyODksNDEsNjUyOTIsNDQsNjUzMDcsNTksNjUzMTEsNjNdLCJ6aC1oYW5zIjpbNjUzNzQsMTI2LDY1MzA2LDU4LDY1MjgxLDMzLDgyNDUsOTYsMTgwLDk2LDEyNDk0LDQ3LDEwNDcsNTEsMTA3Myw1NCwxMDcyLDk3LDEwNDAsNjUsMTA2OCw5OCwxMDQyLDY2LDEwODksOTksMTA1Nyw2NywxMDc3LDEwMSwxMDQ1LDY5LDEwNTMsNzIsMzA1LDEwNSwxMDUwLDc1LDkyMSw3MywxMDUyLDc3LDEwODYsMTExLDEwNTQsNzksMTAwOSwxMTIsMTA4OCwxMTIsMTA1Niw4MCwxMDc1LDExNCwxMDU4LDg0LDIxNSwxMjAsMTA5MywxMjAsMTA2MSw4OCwxMDkxLDEyMSwxMDU5LDg5LDY1Mjg4LDQwLDY1Mjg5LDQxXSwiemgtaGFudCI6WzgyMTEsNDUsNjUzNzQsMTI2LDE4MCw5NiwxMjQ5NCw0NywxMDQ3LDUxLDEwNzMsNTQsMTA3Miw5NywxMDQwLDY1LDEwNjgsOTgsMTA0Miw2NiwxMDg5LDk5LDEwNTcsNjcsMTA3NywxMDEsMTA0NSw2OSwxMDUzLDcyLDMwNSwxMDUsMTA1MCw3NSw5MjEsNzMsMTA1Miw3NywxMDg2LDExMSwxMDU0LDc5LDEwMDksMTEyLDEwODgsMTEyLDEwNTYsODAsMTA3NSwxMTQsMTA1OCw4NCwyMTUsMTIwLDEwOTMsMTIwLDEwNjEsODgsMTA5MSwxMjEsMTA1OSw4OSw2NTI4MywzNSw2NTMwNyw1OV19JykpLEdlLmNhY2hlPW5ldyBCaCh7Z2V0Q2FjaGVLZXk6SlNPTi5zdHJpbmdpZnl9LHQ9PntmdW5jdGlvbiBuKGQpe2NvbnN0IHU9bmV3IE1hcDtmb3IobGV0IGY9MDtmPGQubGVuZ3RoO2YrPTIpdS5zZXQoZFtmXSxkW2YrMV0pO3JldHVybiB1fWZ1bmN0aW9uIHIoZCx1KXtjb25zdCBmPW5ldyBNYXAoZCk7Zm9yKGNvbnN0W20sdl1vZiB1KWYuc2V0KG0sdik7cmV0dXJuIGZ9ZnVuY3Rpb24gaShkLHUpe2lmKCFkKXJldHVybiB1O2NvbnN0IGY9bmV3IE1hcDtmb3IoY29uc3RbbSx2XW9mIGQpdS5oYXMobSkmJmYuc2V0KG0sdik7cmV0dXJuIGZ9Y29uc3Qgcz1HZS5hbWJpZ3VvdXNDaGFyYWN0ZXJEYXRhLnZhbHVlO2xldCBhPXQuZmlsdGVyKGQ9PiFkLnN0YXJ0c1dpdGgoIl8iKSYmZCBpbiBzKTthLmxlbmd0aD09PTAmJihhPVsiX2RlZmF1bHQiXSk7bGV0IGw7Zm9yKGNvbnN0IGQgb2YgYSl7Y29uc3QgdT1uKHNbZF0pO2w9aShsLHUpfWNvbnN0IG89bihzLl9jb21tb24pLGM9cihvLGwpO3JldHVybiBuZXcgR2UoYyl9KSxHZS5fbG9jYWxlcz1uZXcgWHMoKCk9Pk9iamVjdC5rZXlzKEdlLmFtYmlndW91c0NoYXJhY3RlckRhdGEudmFsdWUpLmZpbHRlcih0PT4hdC5zdGFydHNXaXRoKCJfIikpKTtsZXQgY249R2U7Y29uc3Qgcm49Y2xhc3Mgcm57c3RhdGljIGdldFJhd0RhdGEoKXtyZXR1cm4gSlNPTi5wYXJzZSgiWzksMTAsMTEsMTIsMTMsMzIsMTI3LDE2MCwxNzMsODQ3LDE1NjQsNDQ0Nyw0NDQ4LDYwNjgsNjA2OSw2MTU1LDYxNTYsNjE1Nyw2MTU4LDczNTUsNzM1Niw4MTkyLDgxOTMsODE5NCw4MTk1LDgxOTYsODE5Nyw4MTk4LDgxOTksODIwMCw4MjAxLDgyMDIsODIwMyw4MjA0LDgyMDUsODIwNiw4MjA3LDgyMzQsODIzNSw4MjM2LDgyMzcsODIzOCw4MjM5LDgyODcsODI4OCw4Mjg5LDgyOTAsODI5MSw4MjkyLDgyOTMsODI5NCw4Mjk1LDgyOTYsODI5Nyw4Mjk4LDgyOTksODMwMCw4MzAxLDgzMDIsODMwMywxMDI0MCwxMjI4OCwxMjY0NCw2NTAyNCw2NTAyNSw2NTAyNiw2NTAyNyw2NTAyOCw2NTAyOSw2NTAzMCw2NTAzMSw2NTAzMiw2NTAzMyw2NTAzNCw2NTAzNSw2NTAzNiw2NTAzNyw2NTAzOCw2NTAzOSw2NTI3OSw2NTQ0MCw2NTUyMCw2NTUyMSw2NTUyMiw2NTUyMyw2NTUyNCw2NTUyNSw2NTUyNiw2NTUyNyw2NTUyOCw2NTUzMiw3ODg0NCwxMTkxNTUsMTE5MTU2LDExOTE1NywxMTkxNTgsMTE5MTU5LDExOTE2MCwxMTkxNjEsMTE5MTYyLDkxNzUwNCw5MTc1MDUsOTE3NTA2LDkxNzUwNyw5MTc1MDgsOTE3NTA5LDkxNzUxMCw5MTc1MTEsOTE3NTEyLDkxNzUxMyw5MTc1MTQsOTE3NTE1LDkxNzUxNiw5MTc1MTcsOTE3NTE4LDkxNzUxOSw5MTc1MjAsOTE3NTIxLDkxNzUyMiw5MTc1MjMsOTE3NTI0LDkxNzUyNSw5MTc1MjYsOTE3NTI3LDkxNzUyOCw5MTc1MjksOTE3NTMwLDkxNzUzMSw5MTc1MzIsOTE3NTMzLDkxNzUzNCw5MTc1MzUsOTE3NTM2LDkxNzUzNyw5MTc1MzgsOTE3NTM5LDkxNzU0MCw5MTc1NDEsOTE3NTQyLDkxNzU0Myw5MTc1NDQsOTE3NTQ1LDkxNzU0Niw5MTc1NDcsOTE3NTQ4LDkxNzU0OSw5MTc1NTAsOTE3NTUxLDkxNzU1Miw5MTc1NTMsOTE3NTU0LDkxNzU1NSw5MTc1NTYsOTE3NTU3LDkxNzU1OCw5MTc1NTksOTE3NTYwLDkxNzU2MSw5MTc1NjIsOTE3NTYzLDkxNzU2NCw5MTc1NjUsOTE3NTY2LDkxNzU2Nyw5MTc1NjgsOTE3NTY5LDkxNzU3MCw5MTc1NzEsOTE3NTcyLDkxNzU3Myw5MTc1NzQsOTE3NTc1LDkxNzU3Niw5MTc1NzcsOTE3NTc4LDkxNzU3OSw5MTc1ODAsOTE3NTgxLDkxNzU4Miw5MTc1ODMsOTE3NTg0LDkxNzU4NSw5MTc1ODYsOTE3NTg3LDkxNzU4OCw5MTc1ODksOTE3NTkwLDkxNzU5MSw5MTc1OTIsOTE3NTkzLDkxNzU5NCw5MTc1OTUsOTE3NTk2LDkxNzU5Nyw5MTc1OTgsOTE3NTk5LDkxNzYwMCw5MTc2MDEsOTE3NjAyLDkxNzYwMyw5MTc2MDQsOTE3NjA1LDkxNzYwNiw5MTc2MDcsOTE3NjA4LDkxNzYwOSw5MTc2MTAsOTE3NjExLDkxNzYxMiw5MTc2MTMsOTE3NjE0LDkxNzYxNSw5MTc2MTYsOTE3NjE3LDkxNzYxOCw5MTc2MTksOTE3NjIwLDkxNzYyMSw5MTc2MjIsOTE3NjIzLDkxNzYyNCw5MTc2MjUsOTE3NjI2LDkxNzYyNyw5MTc2MjgsOTE3NjI5LDkxNzYzMCw5MTc2MzEsOTE3NzYwLDkxNzc2MSw5MTc3NjIsOTE3NzYzLDkxNzc2NCw5MTc3NjUsOTE3NzY2LDkxNzc2Nyw5MTc3NjgsOTE3NzY5LDkxNzc3MCw5MTc3NzEsOTE3NzcyLDkxNzc3Myw5MTc3NzQsOTE3Nzc1LDkxNzc3Niw5MTc3NzcsOTE3Nzc4LDkxNzc3OSw5MTc3ODAsOTE3NzgxLDkxNzc4Miw5MTc3ODMsOTE3Nzg0LDkxNzc4NSw5MTc3ODYsOTE3Nzg3LDkxNzc4OCw5MTc3ODksOTE3NzkwLDkxNzc5MSw5MTc3OTIsOTE3NzkzLDkxNzc5NCw5MTc3OTUsOTE3Nzk2LDkxNzc5Nyw5MTc3OTgsOTE3Nzk5LDkxNzgwMCw5MTc4MDEsOTE3ODAyLDkxNzgwMyw5MTc4MDQsOTE3ODA1LDkxNzgwNiw5MTc4MDcsOTE3ODA4LDkxNzgwOSw5MTc4MTAsOTE3ODExLDkxNzgxMiw5MTc4MTMsOTE3ODE0LDkxNzgxNSw5MTc4MTYsOTE3ODE3LDkxNzgxOCw5MTc4MTksOTE3ODIwLDkxNzgyMSw5MTc4MjIsOTE3ODIzLDkxNzgyNCw5MTc4MjUsOTE3ODI2LDkxNzgyNyw5MTc4MjgsOTE3ODI5LDkxNzgzMCw5MTc4MzEsOTE3ODMyLDkxNzgzMyw5MTc4MzQsOTE3ODM1LDkxNzgzNiw5MTc4MzcsOTE3ODM4LDkxNzgzOSw5MTc4NDAsOTE3ODQxLDkxNzg0Miw5MTc4NDMsOTE3ODQ0LDkxNzg0NSw5MTc4NDYsOTE3ODQ3LDkxNzg0OCw5MTc4NDksOTE3ODUwLDkxNzg1MSw5MTc4NTIsOTE3ODUzLDkxNzg1NCw5MTc4NTUsOTE3ODU2LDkxNzg1Nyw5MTc4NTgsOTE3ODU5LDkxNzg2MCw5MTc4NjEsOTE3ODYyLDkxNzg2Myw5MTc4NjQsOTE3ODY1LDkxNzg2Niw5MTc4NjcsOTE3ODY4LDkxNzg2OSw5MTc4NzAsOTE3ODcxLDkxNzg3Miw5MTc4NzMsOTE3ODc0LDkxNzg3NSw5MTc4NzYsOTE3ODc3LDkxNzg3OCw5MTc4NzksOTE3ODgwLDkxNzg4MSw5MTc4ODIsOTE3ODgzLDkxNzg4NCw5MTc4ODUsOTE3ODg2LDkxNzg4Nyw5MTc4ODgsOTE3ODg5LDkxNzg5MCw5MTc4OTEsOTE3ODkyLDkxNzg5Myw5MTc4OTQsOTE3ODk1LDkxNzg5Niw5MTc4OTcsOTE3ODk4LDkxNzg5OSw5MTc5MDAsOTE3OTAxLDkxNzkwMiw5MTc5MDMsOTE3OTA0LDkxNzkwNSw5MTc5MDYsOTE3OTA3LDkxNzkwOCw5MTc5MDksOTE3OTEwLDkxNzkxMSw5MTc5MTIsOTE3OTEzLDkxNzkxNCw5MTc5MTUsOTE3OTE2LDkxNzkxNyw5MTc5MTgsOTE3OTE5LDkxNzkyMCw5MTc5MjEsOTE3OTIyLDkxNzkyMyw5MTc5MjQsOTE3OTI1LDkxNzkyNiw5MTc5MjcsOTE3OTI4LDkxNzkyOSw5MTc5MzAsOTE3OTMxLDkxNzkzMiw5MTc5MzMsOTE3OTM0LDkxNzkzNSw5MTc5MzYsOTE3OTM3LDkxNzkzOCw5MTc5MzksOTE3OTQwLDkxNzk0MSw5MTc5NDIsOTE3OTQzLDkxNzk0NCw5MTc5NDUsOTE3OTQ2LDkxNzk0Nyw5MTc5NDgsOTE3OTQ5LDkxNzk1MCw5MTc5NTEsOTE3OTUyLDkxNzk1Myw5MTc5NTQsOTE3OTU1LDkxNzk1Niw5MTc5NTcsOTE3OTU4LDkxNzk1OSw5MTc5NjAsOTE3OTYxLDkxNzk2Miw5MTc5NjMsOTE3OTY0LDkxNzk2NSw5MTc5NjYsOTE3OTY3LDkxNzk2OCw5MTc5NjksOTE3OTcwLDkxNzk3MSw5MTc5NzIsOTE3OTczLDkxNzk3NCw5MTc5NzUsOTE3OTc2LDkxNzk3Nyw5MTc5NzgsOTE3OTc5LDkxNzk4MCw5MTc5ODEsOTE3OTgyLDkxNzk4Myw5MTc5ODQsOTE3OTg1LDkxNzk4Niw5MTc5ODcsOTE3OTg4LDkxNzk4OSw5MTc5OTAsOTE3OTkxLDkxNzk5Miw5MTc5OTMsOTE3OTk0LDkxNzk5NSw5MTc5OTYsOTE3OTk3LDkxNzk5OCw5MTc5OTldIil9c3RhdGljIGdldERhdGEoKXtyZXR1cm4gdGhpcy5fZGF0YXx8KHRoaXMuX2RhdGE9bmV3IFNldChybi5nZXRSYXdEYXRhKCkpKSx0aGlzLl9kYXRhfXN0YXRpYyBpc0ludmlzaWJsZUNoYXJhY3Rlcih0KXtyZXR1cm4gcm4uZ2V0RGF0YSgpLmhhcyh0KX1zdGF0aWMgZ2V0IGNvZGVQb2ludHMoKXtyZXR1cm4gcm4uZ2V0RGF0YSgpfX07cm4uX2RhdGE9dm9pZCAwO2xldCBobj1ybjt2YXIgS3M9e0VOVl9UWVBFOiJsb2NhbCIsTk9ERV9FTlY6InByb2R1Y3Rpb24ifTtsZXQgVHQ7Y29uc3QgWnI9Z2xvYmFsVGhpcy52c2NvZGU7aWYodHlwZW9mIFpyPCJ1IiYmdHlwZW9mIFpyLnByb2Nlc3M8InUiKXtjb25zdCBlPVpyLnByb2Nlc3M7VHQ9e2dldCBwbGF0Zm9ybSgpe3JldHVybiBlLnBsYXRmb3JtfSxnZXQgYXJjaCgpe3JldHVybiBlLmFyY2h9LGdldCBlbnYoKXtyZXR1cm4gZS5lbnZ9LGN3ZCgpe3JldHVybiBlLmN3ZCgpfX19ZWxzZSB0eXBlb2YgcHJvY2VzczwidSImJnR5cGVvZiBwcm9jZXNzPy52ZXJzaW9ucz8ubm9kZT09InN0cmluZyI/VHQ9e2dldCBwbGF0Zm9ybSgpe3JldHVybiBwcm9jZXNzLnBsYXRmb3JtfSxnZXQgYXJjaCgpe3JldHVybiBwcm9jZXNzLmFyY2h9LGdldCBlbnYoKXtyZXR1cm4gS3N9LGN3ZCgpe3JldHVybiBLcy5WU0NPREVfQ1dEfHxwcm9jZXNzLmN3ZCgpfX06VHQ9e2dldCBwbGF0Zm9ybSgpe3JldHVybiBsbj8id2luMzIiOlBoPyJkYXJ3aW4iOiJsaW51eCJ9LGdldCBhcmNoKCl7fSxnZXQgZW52KCl7cmV0dXJue319LGN3ZCgpe3JldHVybiIvIn19O2NvbnN0IHFuPVR0LmN3ZCxRaD1UdC5lbnYsS2g9VHQucGxhdGZvcm0sWmg9NjUsZWQ9OTcsdGQ9OTAsbmQ9MTIyLGh0PTQ2LGdlPTQ3LF9lPTkyLGR0PTU4LHJkPTYzO2NsYXNzIFpzIGV4dGVuZHMgRXJyb3J7Y29uc3RydWN0b3IodCxuLHIpe2xldCBpO3R5cGVvZiBuPT0ic3RyaW5nIiYmbi5pbmRleE9mKCJub3QgIik9PT0wPyhpPSJtdXN0IG5vdCBiZSIsbj1uLnJlcGxhY2UoL15ub3QgLywiIikpOmk9Im11c3QgYmUiO2NvbnN0IHM9dC5pbmRleE9mKCIuIikhPT0tMT8icHJvcGVydHkiOiJhcmd1bWVudCI7bGV0IGE9YFRoZSAiJHt0fSIgJHtzfSAke2l9IG9mIHR5cGUgJHtufWA7YSs9YC4gUmVjZWl2ZWQgdHlwZSAke3R5cGVvZiByfWAsc3VwZXIoYSksdGhpcy5jb2RlPSJFUlJfSU5WQUxJRF9BUkdfVFlQRSJ9fWZ1bmN0aW9uIGlkKGUsdCl7aWYoZT09PW51bGx8fHR5cGVvZiBlIT0ib2JqZWN0Iil0aHJvdyBuZXcgWnModCwiT2JqZWN0IixlKX1mdW5jdGlvbiBjZShlLHQpe2lmKHR5cGVvZiBlIT0ic3RyaW5nIil0aHJvdyBuZXcgWnModCwic3RyaW5nIixlKX1jb25zdCBLZT1LaD09PSJ3aW4zMiI7ZnVuY3Rpb24gRyhlKXtyZXR1cm4gZT09PWdlfHxlPT09X2V9ZnVuY3Rpb24gZWkoZSl7cmV0dXJuIGU9PT1nZX1mdW5jdGlvbiB1dChlKXtyZXR1cm4gZT49WmgmJmU8PXRkfHxlPj1lZCYmZTw9bmR9ZnVuY3Rpb24gam4oZSx0LG4scil7bGV0IGk9IiIscz0wLGE9LTEsbD0wLG89MDtmb3IobGV0IGM9MDtjPD1lLmxlbmd0aDsrK2Mpe2lmKGM8ZS5sZW5ndGgpbz1lLmNoYXJDb2RlQXQoYyk7ZWxzZXtpZihyKG8pKWJyZWFrO289Z2V9aWYocihvKSl7aWYoIShhPT09Yy0xfHxsPT09MSkpaWYobD09PTIpe2lmKGkubGVuZ3RoPDJ8fHMhPT0yfHxpLmNoYXJDb2RlQXQoaS5sZW5ndGgtMSkhPT1odHx8aS5jaGFyQ29kZUF0KGkubGVuZ3RoLTIpIT09aHQpe2lmKGkubGVuZ3RoPjIpe2NvbnN0IGQ9aS5sYXN0SW5kZXhPZihuKTtkPT09LTE/KGk9IiIscz0wKTooaT1pLnNsaWNlKDAsZCkscz1pLmxlbmd0aC0xLWkubGFzdEluZGV4T2YobikpLGE9YyxsPTA7Y29udGludWV9ZWxzZSBpZihpLmxlbmd0aCE9PTApe2k9IiIscz0wLGE9YyxsPTA7Y29udGludWV9fXQmJihpKz1pLmxlbmd0aD4wP2Ake259Li5gOiIuLiIscz0yKX1lbHNlIGkubGVuZ3RoPjA/aSs9YCR7bn0ke2Uuc2xpY2UoYSsxLGMpfWA6aT1lLnNsaWNlKGErMSxjKSxzPWMtYS0xO2E9YyxsPTB9ZWxzZSBvPT09aHQmJmwhPT0tMT8rK2w6bD0tMX1yZXR1cm4gaX1mdW5jdGlvbiBzZChlKXtyZXR1cm4gZT9gJHtlWzBdPT09Ii4iPyIiOiIuIn0ke2V9YDoiIn1mdW5jdGlvbiBlYShlLHQpe2lkKHQsInBhdGhPYmplY3QiKTtjb25zdCBuPXQuZGlyfHx0LnJvb3Qscj10LmJhc2V8fGAke3QubmFtZXx8IiJ9JHtzZCh0LmV4dCl9YDtyZXR1cm4gbj9uPT09dC5yb290P2Ake259JHtyfWA6YCR7bn0ke2V9JHtyfWA6cn1jb25zdCB2ZT17cmVzb2x2ZSguLi5lKXtsZXQgdD0iIixuPSIiLHI9ITE7Zm9yKGxldCBpPWUubGVuZ3RoLTE7aT49LTE7aS0tKXtsZXQgcztpZihpPj0wKXtpZihzPWVbaV0sY2UocyxgcGF0aHNbJHtpfV1gKSxzLmxlbmd0aD09PTApY29udGludWV9ZWxzZSB0Lmxlbmd0aD09PTA/cz1xbigpOihzPVFoW2A9JHt0fWBdfHxxbigpLChzPT09dm9pZCAwfHxzLnNsaWNlKDAsMikudG9Mb3dlckNhc2UoKSE9PXQudG9Mb3dlckNhc2UoKSYmcy5jaGFyQ29kZUF0KDIpPT09X2UpJiYocz1gJHt0fVxcYCkpO2NvbnN0IGE9cy5sZW5ndGg7bGV0IGw9MCxvPSIiLGM9ITE7Y29uc3QgZD1zLmNoYXJDb2RlQXQoMCk7aWYoYT09PTEpRyhkKSYmKGw9MSxjPSEwKTtlbHNlIGlmKEcoZCkpaWYoYz0hMCxHKHMuY2hhckNvZGVBdCgxKSkpe2xldCB1PTIsZj11O2Zvcig7dTxhJiYhRyhzLmNoYXJDb2RlQXQodSkpOyl1Kys7aWYodTxhJiZ1IT09Zil7Y29uc3QgbT1zLnNsaWNlKGYsdSk7Zm9yKGY9dTt1PGEmJkcocy5jaGFyQ29kZUF0KHUpKTspdSsrO2lmKHU8YSYmdSE9PWYpe2ZvcihmPXU7dTxhJiYhRyhzLmNoYXJDb2RlQXQodSkpOyl1Kys7KHU9PT1hfHx1IT09ZikmJihvPWBcXFxcJHttfVxcJHtzLnNsaWNlKGYsdSl9YCxsPXUpfX19ZWxzZSBsPTE7ZWxzZSB1dChkKSYmcy5jaGFyQ29kZUF0KDEpPT09ZHQmJihvPXMuc2xpY2UoMCwyKSxsPTIsYT4yJiZHKHMuY2hhckNvZGVBdCgyKSkmJihjPSEwLGw9MykpO2lmKG8ubGVuZ3RoPjApaWYodC5sZW5ndGg+MCl7aWYoby50b0xvd2VyQ2FzZSgpIT09dC50b0xvd2VyQ2FzZSgpKWNvbnRpbnVlfWVsc2UgdD1vO2lmKHIpe2lmKHQubGVuZ3RoPjApYnJlYWt9ZWxzZSBpZihuPWAke3Muc2xpY2UobCl9XFwke259YCxyPWMsYyYmdC5sZW5ndGg+MClicmVha31yZXR1cm4gbj1qbihuLCFyLCJcXCIsRykscj9gJHt0fVxcJHtufWA6YCR7dH0ke259YHx8Ii4ifSxub3JtYWxpemUoZSl7Y2UoZSwicGF0aCIpO2NvbnN0IHQ9ZS5sZW5ndGg7aWYodD09PTApcmV0dXJuIi4iO2xldCBuPTAscixpPSExO2NvbnN0IHM9ZS5jaGFyQ29kZUF0KDApO2lmKHQ9PT0xKXJldHVybiBlaShzKT8iXFwiOmU7aWYoRyhzKSlpZihpPSEwLEcoZS5jaGFyQ29kZUF0KDEpKSl7bGV0IGw9MixvPWw7Zm9yKDtsPHQmJiFHKGUuY2hhckNvZGVBdChsKSk7KWwrKztpZihsPHQmJmwhPT1vKXtjb25zdCBjPWUuc2xpY2UobyxsKTtmb3Iobz1sO2w8dCYmRyhlLmNoYXJDb2RlQXQobCkpOylsKys7aWYobDx0JiZsIT09byl7Zm9yKG89bDtsPHQmJiFHKGUuY2hhckNvZGVBdChsKSk7KWwrKztpZihsPT09dClyZXR1cm5gXFxcXCR7Y31cXCR7ZS5zbGljZShvKX1cXGA7bCE9PW8mJihyPWBcXFxcJHtjfVxcJHtlLnNsaWNlKG8sbCl9YCxuPWwpfX19ZWxzZSBuPTE7ZWxzZSB1dChzKSYmZS5jaGFyQ29kZUF0KDEpPT09ZHQmJihyPWUuc2xpY2UoMCwyKSxuPTIsdD4yJiZHKGUuY2hhckNvZGVBdCgyKSkmJihpPSEwLG49MykpO2xldCBhPW48dD9qbihlLnNsaWNlKG4pLCFpLCJcXCIsRyk6IiI7cmV0dXJuIGEubGVuZ3RoPT09MCYmIWkmJihhPSIuIiksYS5sZW5ndGg+MCYmRyhlLmNoYXJDb2RlQXQodC0xKSkmJihhKz0iXFwiKSxyPT09dm9pZCAwP2k/YFxcJHthfWA6YTppP2Ake3J9XFwke2F9YDpgJHtyfSR7YX1gfSxpc0Fic29sdXRlKGUpe2NlKGUsInBhdGgiKTtjb25zdCB0PWUubGVuZ3RoO2lmKHQ9PT0wKXJldHVybiExO2NvbnN0IG49ZS5jaGFyQ29kZUF0KDApO3JldHVybiBHKG4pfHx0PjImJnV0KG4pJiZlLmNoYXJDb2RlQXQoMSk9PT1kdCYmRyhlLmNoYXJDb2RlQXQoMikpfSxqb2luKC4uLmUpe2lmKGUubGVuZ3RoPT09MClyZXR1cm4iLiI7bGV0IHQsbjtmb3IobGV0IHM9MDtzPGUubGVuZ3RoOysrcyl7Y29uc3QgYT1lW3NdO2NlKGEsInBhdGgiKSxhLmxlbmd0aD4wJiYodD09PXZvaWQgMD90PW49YTp0Kz1gXFwke2F9YCl9aWYodD09PXZvaWQgMClyZXR1cm4iLiI7bGV0IHI9ITAsaT0wO2lmKHR5cGVvZiBuPT0ic3RyaW5nIiYmRyhuLmNoYXJDb2RlQXQoMCkpKXsrK2k7Y29uc3Qgcz1uLmxlbmd0aDtzPjEmJkcobi5jaGFyQ29kZUF0KDEpKSYmKCsraSxzPjImJihHKG4uY2hhckNvZGVBdCgyKSk/KytpOnI9ITEpKX1pZihyKXtmb3IoO2k8dC5sZW5ndGgmJkcodC5jaGFyQ29kZUF0KGkpKTspaSsrO2k+PTImJih0PWBcXCR7dC5zbGljZShpKX1gKX1yZXR1cm4gdmUubm9ybWFsaXplKHQpfSxyZWxhdGl2ZShlLHQpe2lmKGNlKGUsImZyb20iKSxjZSh0LCJ0byIpLGU9PT10KXJldHVybiIiO2NvbnN0IG49dmUucmVzb2x2ZShlKSxyPXZlLnJlc29sdmUodCk7aWYobj09PXJ8fChlPW4udG9Mb3dlckNhc2UoKSx0PXIudG9Mb3dlckNhc2UoKSxlPT09dCkpcmV0dXJuIiI7bGV0IGk9MDtmb3IoO2k8ZS5sZW5ndGgmJmUuY2hhckNvZGVBdChpKT09PV9lOylpKys7bGV0IHM9ZS5sZW5ndGg7Zm9yKDtzLTE+aSYmZS5jaGFyQ29kZUF0KHMtMSk9PT1fZTspcy0tO2NvbnN0IGE9cy1pO2xldCBsPTA7Zm9yKDtsPHQubGVuZ3RoJiZ0LmNoYXJDb2RlQXQobCk9PT1fZTspbCsrO2xldCBvPXQubGVuZ3RoO2Zvcig7by0xPmwmJnQuY2hhckNvZGVBdChvLTEpPT09X2U7KW8tLTtjb25zdCBjPW8tbCxkPWE8Yz9hOmM7bGV0IHU9LTEsZj0wO2Zvcig7ZjxkO2YrKyl7Y29uc3Qgdj1lLmNoYXJDb2RlQXQoaStmKTtpZih2IT09dC5jaGFyQ29kZUF0KGwrZikpYnJlYWs7dj09PV9lJiYodT1mKX1pZihmIT09ZCl7aWYodT09PS0xKXJldHVybiByfWVsc2V7aWYoYz5kKXtpZih0LmNoYXJDb2RlQXQobCtmKT09PV9lKXJldHVybiByLnNsaWNlKGwrZisxKTtpZihmPT09MilyZXR1cm4gci5zbGljZShsK2YpfWE+ZCYmKGUuY2hhckNvZGVBdChpK2YpPT09X2U/dT1mOmY9PT0yJiYodT0zKSksdT09PS0xJiYodT0wKX1sZXQgbT0iIjtmb3IoZj1pK3UrMTtmPD1zOysrZikoZj09PXN8fGUuY2hhckNvZGVBdChmKT09PV9lKSYmKG0rPW0ubGVuZ3RoPT09MD8iLi4iOiJcXC4uIik7cmV0dXJuIGwrPXUsbS5sZW5ndGg+MD9gJHttfSR7ci5zbGljZShsLG8pfWA6KHIuY2hhckNvZGVBdChsKT09PV9lJiYrK2wsci5zbGljZShsLG8pKX0sdG9OYW1lc3BhY2VkUGF0aChlKXtpZih0eXBlb2YgZSE9InN0cmluZyJ8fGUubGVuZ3RoPT09MClyZXR1cm4gZTtjb25zdCB0PXZlLnJlc29sdmUoZSk7aWYodC5sZW5ndGg8PTIpcmV0dXJuIGU7aWYodC5jaGFyQ29kZUF0KDApPT09X2Upe2lmKHQuY2hhckNvZGVBdCgxKT09PV9lKXtjb25zdCBuPXQuY2hhckNvZGVBdCgyKTtpZihuIT09cmQmJm4hPT1odClyZXR1cm5gXFxcXD9cXFVOQ1xcJHt0LnNsaWNlKDIpfWB9fWVsc2UgaWYodXQodC5jaGFyQ29kZUF0KDApKSYmdC5jaGFyQ29kZUF0KDEpPT09ZHQmJnQuY2hhckNvZGVBdCgyKT09PV9lKXJldHVybmBcXFxcP1xcJHt0fWA7cmV0dXJuIGV9LGRpcm5hbWUoZSl7Y2UoZSwicGF0aCIpO2NvbnN0IHQ9ZS5sZW5ndGg7aWYodD09PTApcmV0dXJuIi4iO2xldCBuPS0xLHI9MDtjb25zdCBpPWUuY2hhckNvZGVBdCgwKTtpZih0PT09MSlyZXR1cm4gRyhpKT9lOiIuIjtpZihHKGkpKXtpZihuPXI9MSxHKGUuY2hhckNvZGVBdCgxKSkpe2xldCBsPTIsbz1sO2Zvcig7bDx0JiYhRyhlLmNoYXJDb2RlQXQobCkpOylsKys7aWYobDx0JiZsIT09byl7Zm9yKG89bDtsPHQmJkcoZS5jaGFyQ29kZUF0KGwpKTspbCsrO2lmKGw8dCYmbCE9PW8pe2ZvcihvPWw7bDx0JiYhRyhlLmNoYXJDb2RlQXQobCkpOylsKys7aWYobD09PXQpcmV0dXJuIGU7bCE9PW8mJihuPXI9bCsxKX19fX1lbHNlIHV0KGkpJiZlLmNoYXJDb2RlQXQoMSk9PT1kdCYmKG49dD4yJiZHKGUuY2hhckNvZGVBdCgyKSk/MzoyLHI9bik7bGV0IHM9LTEsYT0hMDtmb3IobGV0IGw9dC0xO2w+PXI7LS1sKWlmKEcoZS5jaGFyQ29kZUF0KGwpKSl7aWYoIWEpe3M9bDticmVha319ZWxzZSBhPSExO2lmKHM9PT0tMSl7aWYobj09PS0xKXJldHVybiIuIjtzPW59cmV0dXJuIGUuc2xpY2UoMCxzKX0sYmFzZW5hbWUoZSx0KXt0IT09dm9pZCAwJiZjZSh0LCJzdWZmaXgiKSxjZShlLCJwYXRoIik7bGV0IG49MCxyPS0xLGk9ITAscztpZihlLmxlbmd0aD49MiYmdXQoZS5jaGFyQ29kZUF0KDApKSYmZS5jaGFyQ29kZUF0KDEpPT09ZHQmJihuPTIpLHQhPT12b2lkIDAmJnQubGVuZ3RoPjAmJnQubGVuZ3RoPD1lLmxlbmd0aCl7aWYodD09PWUpcmV0dXJuIiI7bGV0IGE9dC5sZW5ndGgtMSxsPS0xO2ZvcihzPWUubGVuZ3RoLTE7cz49bjstLXMpe2NvbnN0IG89ZS5jaGFyQ29kZUF0KHMpO2lmKEcobykpe2lmKCFpKXtuPXMrMTticmVha319ZWxzZSBsPT09LTEmJihpPSExLGw9cysxKSxhPj0wJiYobz09PXQuY2hhckNvZGVBdChhKT8tLWE9PT0tMSYmKHI9cyk6KGE9LTEscj1sKSl9cmV0dXJuIG49PT1yP3I9bDpyPT09LTEmJihyPWUubGVuZ3RoKSxlLnNsaWNlKG4scil9Zm9yKHM9ZS5sZW5ndGgtMTtzPj1uOy0tcylpZihHKGUuY2hhckNvZGVBdChzKSkpe2lmKCFpKXtuPXMrMTticmVha319ZWxzZSByPT09LTEmJihpPSExLHI9cysxKTtyZXR1cm4gcj09PS0xPyIiOmUuc2xpY2UobixyKX0sZXh0bmFtZShlKXtjZShlLCJwYXRoIik7bGV0IHQ9MCxuPS0xLHI9MCxpPS0xLHM9ITAsYT0wO2UubGVuZ3RoPj0yJiZlLmNoYXJDb2RlQXQoMSk9PT1kdCYmdXQoZS5jaGFyQ29kZUF0KDApKSYmKHQ9cj0yKTtmb3IobGV0IGw9ZS5sZW5ndGgtMTtsPj10Oy0tbCl7Y29uc3Qgbz1lLmNoYXJDb2RlQXQobCk7aWYoRyhvKSl7aWYoIXMpe3I9bCsxO2JyZWFrfWNvbnRpbnVlfWk9PT0tMSYmKHM9ITEsaT1sKzEpLG89PT1odD9uPT09LTE/bj1sOmEhPT0xJiYoYT0xKTpuIT09LTEmJihhPS0xKX1yZXR1cm4gbj09PS0xfHxpPT09LTF8fGE9PT0wfHxhPT09MSYmbj09PWktMSYmbj09PXIrMT8iIjplLnNsaWNlKG4saSl9LGZvcm1hdDplYS5iaW5kKG51bGwsIlxcIikscGFyc2UoZSl7Y2UoZSwicGF0aCIpO2NvbnN0IHQ9e3Jvb3Q6IiIsZGlyOiIiLGJhc2U6IiIsZXh0OiIiLG5hbWU6IiJ9O2lmKGUubGVuZ3RoPT09MClyZXR1cm4gdDtjb25zdCBuPWUubGVuZ3RoO2xldCByPTAsaT1lLmNoYXJDb2RlQXQoMCk7aWYobj09PTEpcmV0dXJuIEcoaSk/KHQucm9vdD10LmRpcj1lLHQpOih0LmJhc2U9dC5uYW1lPWUsdCk7aWYoRyhpKSl7aWYocj0xLEcoZS5jaGFyQ29kZUF0KDEpKSl7bGV0IHU9MixmPXU7Zm9yKDt1PG4mJiFHKGUuY2hhckNvZGVBdCh1KSk7KXUrKztpZih1PG4mJnUhPT1mKXtmb3IoZj11O3U8biYmRyhlLmNoYXJDb2RlQXQodSkpOyl1Kys7aWYodTxuJiZ1IT09Zil7Zm9yKGY9dTt1PG4mJiFHKGUuY2hhckNvZGVBdCh1KSk7KXUrKzt1PT09bj9yPXU6dSE9PWYmJihyPXUrMSl9fX19ZWxzZSBpZih1dChpKSYmZS5jaGFyQ29kZUF0KDEpPT09ZHQpe2lmKG48PTIpcmV0dXJuIHQucm9vdD10LmRpcj1lLHQ7aWYocj0yLEcoZS5jaGFyQ29kZUF0KDIpKSl7aWYobj09PTMpcmV0dXJuIHQucm9vdD10LmRpcj1lLHQ7cj0zfX1yPjAmJih0LnJvb3Q9ZS5zbGljZSgwLHIpKTtsZXQgcz0tMSxhPXIsbD0tMSxvPSEwLGM9ZS5sZW5ndGgtMSxkPTA7Zm9yKDtjPj1yOy0tYyl7aWYoaT1lLmNoYXJDb2RlQXQoYyksRyhpKSl7aWYoIW8pe2E9YysxO2JyZWFrfWNvbnRpbnVlfWw9PT0tMSYmKG89ITEsbD1jKzEpLGk9PT1odD9zPT09LTE/cz1jOmQhPT0xJiYoZD0xKTpzIT09LTEmJihkPS0xKX1yZXR1cm4gbCE9PS0xJiYocz09PS0xfHxkPT09MHx8ZD09PTEmJnM9PT1sLTEmJnM9PT1hKzE/dC5iYXNlPXQubmFtZT1lLnNsaWNlKGEsbCk6KHQubmFtZT1lLnNsaWNlKGEscyksdC5iYXNlPWUuc2xpY2UoYSxsKSx0LmV4dD1lLnNsaWNlKHMsbCkpKSxhPjAmJmEhPT1yP3QuZGlyPWUuc2xpY2UoMCxhLTEpOnQuZGlyPXQucm9vdCx0fSxzZXA6IlxcIixkZWxpbWl0ZXI6IjsiLHdpbjMyOm51bGwscG9zaXg6bnVsbH0sYWQ9KCgpPT57aWYoS2Upe2NvbnN0IGU9L1xcL2c7cmV0dXJuKCk9Pntjb25zdCB0PXFuKCkucmVwbGFjZShlLCIvIik7cmV0dXJuIHQuc2xpY2UodC5pbmRleE9mKCIvIikpfX1yZXR1cm4oKT0+cW4oKX0pKCksd2U9e3Jlc29sdmUoLi4uZSl7bGV0IHQ9IiIsbj0hMTtmb3IobGV0IHI9ZS5sZW5ndGgtMTtyPj0tMSYmIW47ci0tKXtjb25zdCBpPXI+PTA/ZVtyXTphZCgpO2NlKGksYHBhdGhzWyR7cn1dYCksaS5sZW5ndGghPT0wJiYodD1gJHtpfS8ke3R9YCxuPWkuY2hhckNvZGVBdCgwKT09PWdlKX1yZXR1cm4gdD1qbih0LCFuLCIvIixlaSksbj9gLyR7dH1gOnQubGVuZ3RoPjA/dDoiLiJ9LG5vcm1hbGl6ZShlKXtpZihjZShlLCJwYXRoIiksZS5sZW5ndGg9PT0wKXJldHVybiIuIjtjb25zdCB0PWUuY2hhckNvZGVBdCgwKT09PWdlLG49ZS5jaGFyQ29kZUF0KGUubGVuZ3RoLTEpPT09Z2U7cmV0dXJuIGU9am4oZSwhdCwiLyIsZWkpLGUubGVuZ3RoPT09MD90PyIvIjpuPyIuLyI6Ii4iOihuJiYoZSs9Ii8iKSx0P2AvJHtlfWA6ZSl9LGlzQWJzb2x1dGUoZSl7cmV0dXJuIGNlKGUsInBhdGgiKSxlLmxlbmd0aD4wJiZlLmNoYXJDb2RlQXQoMCk9PT1nZX0sam9pbiguLi5lKXtpZihlLmxlbmd0aD09PTApcmV0dXJuIi4iO2xldCB0O2ZvcihsZXQgbj0wO248ZS5sZW5ndGg7KytuKXtjb25zdCByPWVbbl07Y2UociwicGF0aCIpLHIubGVuZ3RoPjAmJih0PT09dm9pZCAwP3Q9cjp0Kz1gLyR7cn1gKX1yZXR1cm4gdD09PXZvaWQgMD8iLiI6d2Uubm9ybWFsaXplKHQpfSxyZWxhdGl2ZShlLHQpe2lmKGNlKGUsImZyb20iKSxjZSh0LCJ0byIpLGU9PT10fHwoZT13ZS5yZXNvbHZlKGUpLHQ9d2UucmVzb2x2ZSh0KSxlPT09dCkpcmV0dXJuIiI7Y29uc3Qgbj0xLHI9ZS5sZW5ndGgsaT1yLW4scz0xLGE9dC5sZW5ndGgtcyxsPWk8YT9pOmE7bGV0IG89LTEsYz0wO2Zvcig7YzxsO2MrKyl7Y29uc3QgdT1lLmNoYXJDb2RlQXQobitjKTtpZih1IT09dC5jaGFyQ29kZUF0KHMrYykpYnJlYWs7dT09PWdlJiYobz1jKX1pZihjPT09bClpZihhPmwpe2lmKHQuY2hhckNvZGVBdChzK2MpPT09Z2UpcmV0dXJuIHQuc2xpY2UocytjKzEpO2lmKGM9PT0wKXJldHVybiB0LnNsaWNlKHMrYyl9ZWxzZSBpPmwmJihlLmNoYXJDb2RlQXQobitjKT09PWdlP289YzpjPT09MCYmKG89MCkpO2xldCBkPSIiO2ZvcihjPW4rbysxO2M8PXI7KytjKShjPT09cnx8ZS5jaGFyQ29kZUF0KGMpPT09Z2UpJiYoZCs9ZC5sZW5ndGg9PT0wPyIuLiI6Ii8uLiIpO3JldHVybmAke2R9JHt0LnNsaWNlKHMrbyl9YH0sdG9OYW1lc3BhY2VkUGF0aChlKXtyZXR1cm4gZX0sZGlybmFtZShlKXtpZihjZShlLCJwYXRoIiksZS5sZW5ndGg9PT0wKXJldHVybiIuIjtjb25zdCB0PWUuY2hhckNvZGVBdCgwKT09PWdlO2xldCBuPS0xLHI9ITA7Zm9yKGxldCBpPWUubGVuZ3RoLTE7aT49MTstLWkpaWYoZS5jaGFyQ29kZUF0KGkpPT09Z2Upe2lmKCFyKXtuPWk7YnJlYWt9fWVsc2Ugcj0hMTtyZXR1cm4gbj09PS0xP3Q/Ii8iOiIuIjp0JiZuPT09MT8iLy8iOmUuc2xpY2UoMCxuKX0sYmFzZW5hbWUoZSx0KXt0IT09dm9pZCAwJiZjZSh0LCJleHQiKSxjZShlLCJwYXRoIik7bGV0IG49MCxyPS0xLGk9ITAscztpZih0IT09dm9pZCAwJiZ0Lmxlbmd0aD4wJiZ0Lmxlbmd0aDw9ZS5sZW5ndGgpe2lmKHQ9PT1lKXJldHVybiIiO2xldCBhPXQubGVuZ3RoLTEsbD0tMTtmb3Iocz1lLmxlbmd0aC0xO3M+PTA7LS1zKXtjb25zdCBvPWUuY2hhckNvZGVBdChzKTtpZihvPT09Z2Upe2lmKCFpKXtuPXMrMTticmVha319ZWxzZSBsPT09LTEmJihpPSExLGw9cysxKSxhPj0wJiYobz09PXQuY2hhckNvZGVBdChhKT8tLWE9PT0tMSYmKHI9cyk6KGE9LTEscj1sKSl9cmV0dXJuIG49PT1yP3I9bDpyPT09LTEmJihyPWUubGVuZ3RoKSxlLnNsaWNlKG4scil9Zm9yKHM9ZS5sZW5ndGgtMTtzPj0wOy0tcylpZihlLmNoYXJDb2RlQXQocyk9PT1nZSl7aWYoIWkpe249cysxO2JyZWFrfX1lbHNlIHI9PT0tMSYmKGk9ITEscj1zKzEpO3JldHVybiByPT09LTE/IiI6ZS5zbGljZShuLHIpfSxleHRuYW1lKGUpe2NlKGUsInBhdGgiKTtsZXQgdD0tMSxuPTAscj0tMSxpPSEwLHM9MDtmb3IobGV0IGE9ZS5sZW5ndGgtMTthPj0wOy0tYSl7Y29uc3QgbD1lLmNoYXJDb2RlQXQoYSk7aWYobD09PWdlKXtpZighaSl7bj1hKzE7YnJlYWt9Y29udGludWV9cj09PS0xJiYoaT0hMSxyPWErMSksbD09PWh0P3Q9PT0tMT90PWE6cyE9PTEmJihzPTEpOnQhPT0tMSYmKHM9LTEpfXJldHVybiB0PT09LTF8fHI9PT0tMXx8cz09PTB8fHM9PT0xJiZ0PT09ci0xJiZ0PT09bisxPyIiOmUuc2xpY2UodCxyKX0sZm9ybWF0OmVhLmJpbmQobnVsbCwiLyIpLHBhcnNlKGUpe2NlKGUsInBhdGgiKTtjb25zdCB0PXtyb290OiIiLGRpcjoiIixiYXNlOiIiLGV4dDoiIixuYW1lOiIifTtpZihlLmxlbmd0aD09PTApcmV0dXJuIHQ7Y29uc3Qgbj1lLmNoYXJDb2RlQXQoMCk9PT1nZTtsZXQgcjtuPyh0LnJvb3Q9Ii8iLHI9MSk6cj0wO2xldCBpPS0xLHM9MCxhPS0xLGw9ITAsbz1lLmxlbmd0aC0xLGM9MDtmb3IoO28+PXI7LS1vKXtjb25zdCBkPWUuY2hhckNvZGVBdChvKTtpZihkPT09Z2Upe2lmKCFsKXtzPW8rMTticmVha31jb250aW51ZX1hPT09LTEmJihsPSExLGE9bysxKSxkPT09aHQ/aT09PS0xP2k9bzpjIT09MSYmKGM9MSk6aSE9PS0xJiYoYz0tMSl9aWYoYSE9PS0xKXtjb25zdCBkPXM9PT0wJiZuPzE6cztpPT09LTF8fGM9PT0wfHxjPT09MSYmaT09PWEtMSYmaT09PXMrMT90LmJhc2U9dC5uYW1lPWUuc2xpY2UoZCxhKToodC5uYW1lPWUuc2xpY2UoZCxpKSx0LmJhc2U9ZS5zbGljZShkLGEpLHQuZXh0PWUuc2xpY2UoaSxhKSl9cmV0dXJuIHM+MD90LmRpcj1lLnNsaWNlKDAscy0xKTpuJiYodC5kaXI9Ii8iKSx0fSxzZXA6Ii8iLGRlbGltaXRlcjoiOiIsd2luMzI6bnVsbCxwb3NpeDpudWxsfTt3ZS53aW4zMj12ZS53aW4zMj12ZSx3ZS5wb3NpeD12ZS5wb3NpeD13ZSxLZT92ZS5ub3JtYWxpemU6d2Uubm9ybWFsaXplO2NvbnN0IG9kPUtlP3ZlLmpvaW46d2Uuam9pbjtLZT92ZS5yZXNvbHZlOndlLnJlc29sdmUsS2U/dmUucmVsYXRpdmU6d2UucmVsYXRpdmUsS2U/dmUuZGlybmFtZTp3ZS5kaXJuYW1lLEtlP3ZlLmJhc2VuYW1lOndlLmJhc2VuYW1lLEtlP3ZlLmV4dG5hbWU6d2UuZXh0bmFtZSxLZT92ZS5zZXA6d2Uuc2VwO2NvbnN0IGxkPS9eXHdbXHdcZCsuLV0qJC8sY2Q9L15cLy8saGQ9L15cL1wvLztmdW5jdGlvbiBkZChlLHQpe2lmKCFlLnNjaGVtZSYmdCl0aHJvdyBuZXcgRXJyb3IoYFtVcmlFcnJvcl06IFNjaGVtZSBpcyBtaXNzaW5nOiB7c2NoZW1lOiAiIiwgYXV0aG9yaXR5OiAiJHtlLmF1dGhvcml0eX0iLCBwYXRoOiAiJHtlLnBhdGh9IiwgcXVlcnk6ICIke2UucXVlcnl9IiwgZnJhZ21lbnQ6ICIke2UuZnJhZ21lbnR9In1gKTtpZihlLnNjaGVtZSYmIWxkLnRlc3QoZS5zY2hlbWUpKXRocm93IG5ldyBFcnJvcigiW1VyaUVycm9yXTogU2NoZW1lIGNvbnRhaW5zIGlsbGVnYWwgY2hhcmFjdGVycy4iKTtpZihlLnBhdGgpe2lmKGUuYXV0aG9yaXR5KXtpZighY2QudGVzdChlLnBhdGgpKXRocm93IG5ldyBFcnJvcignW1VyaUVycm9yXTogSWYgYSBVUkkgY29udGFpbnMgYW4gYXV0aG9yaXR5IGNvbXBvbmVudCwgdGhlbiB0aGUgcGF0aCBjb21wb25lbnQgbXVzdCBlaXRoZXIgYmUgZW1wdHkgb3IgYmVnaW4gd2l0aCBhIHNsYXNoICgiLyIpIGNoYXJhY3RlcicpfWVsc2UgaWYoaGQudGVzdChlLnBhdGgpKXRocm93IG5ldyBFcnJvcignW1VyaUVycm9yXTogSWYgYSBVUkkgZG9lcyBub3QgY29udGFpbiBhbiBhdXRob3JpdHkgY29tcG9uZW50LCB0aGVuIHRoZSBwYXRoIGNhbm5vdCBiZWdpbiB3aXRoIHR3byBzbGFzaCBjaGFyYWN0ZXJzICgiLy8iKScpfX1mdW5jdGlvbiB1ZChlLHQpe3JldHVybiFlJiYhdD8iZmlsZSI6ZX1mdW5jdGlvbiBwZChlLHQpe3N3aXRjaChlKXtjYXNlImh0dHBzIjpjYXNlImh0dHAiOmNhc2UiZmlsZSI6dD90WzBdIT09UGUmJih0PVBlK3QpOnQ9UGU7YnJlYWt9cmV0dXJuIHR9Y29uc3QgbmU9IiIsUGU9Ii8iLG1kPS9eKChbXjovPyNdKz8pOik/KFwvXC8oW14vPyNdKikpPyhbXj8jXSopKFw/KFteI10qKSk/KCMoLiopKT8vO2xldCBWZT1jbGFzcyBXcntzdGF0aWMgaXNVcmkodCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBXcj8hMDp0P3R5cGVvZiB0LmF1dGhvcml0eT09InN0cmluZyImJnR5cGVvZiB0LmZyYWdtZW50PT0ic3RyaW5nIiYmdHlwZW9mIHQucGF0aD09InN0cmluZyImJnR5cGVvZiB0LnF1ZXJ5PT0ic3RyaW5nIiYmdHlwZW9mIHQuc2NoZW1lPT0ic3RyaW5nIiYmdHlwZW9mIHQuZnNQYXRoPT0ic3RyaW5nIiYmdHlwZW9mIHQud2l0aD09ImZ1bmN0aW9uIiYmdHlwZW9mIHQudG9TdHJpbmc9PSJmdW5jdGlvbiI6ITF9Y29uc3RydWN0b3IodCxuLHIsaSxzLGE9ITEpe3R5cGVvZiB0PT0ib2JqZWN0Ij8odGhpcy5zY2hlbWU9dC5zY2hlbWV8fG5lLHRoaXMuYXV0aG9yaXR5PXQuYXV0aG9yaXR5fHxuZSx0aGlzLnBhdGg9dC5wYXRofHxuZSx0aGlzLnF1ZXJ5PXQucXVlcnl8fG5lLHRoaXMuZnJhZ21lbnQ9dC5mcmFnbWVudHx8bmUpOih0aGlzLnNjaGVtZT11ZCh0LGEpLHRoaXMuYXV0aG9yaXR5PW58fG5lLHRoaXMucGF0aD1wZCh0aGlzLnNjaGVtZSxyfHxuZSksdGhpcy5xdWVyeT1pfHxuZSx0aGlzLmZyYWdtZW50PXN8fG5lLGRkKHRoaXMsYSkpfWdldCBmc1BhdGgoKXtyZXR1cm4gdGkodGhpcywhMSl9d2l0aCh0KXtpZighdClyZXR1cm4gdGhpcztsZXR7c2NoZW1lOm4sYXV0aG9yaXR5OnIscGF0aDppLHF1ZXJ5OnMsZnJhZ21lbnQ6YX09dDtyZXR1cm4gbj09PXZvaWQgMD9uPXRoaXMuc2NoZW1lOm49PT1udWxsJiYobj1uZSkscj09PXZvaWQgMD9yPXRoaXMuYXV0aG9yaXR5OnI9PT1udWxsJiYocj1uZSksaT09PXZvaWQgMD9pPXRoaXMucGF0aDppPT09bnVsbCYmKGk9bmUpLHM9PT12b2lkIDA/cz10aGlzLnF1ZXJ5OnM9PT1udWxsJiYocz1uZSksYT09PXZvaWQgMD9hPXRoaXMuZnJhZ21lbnQ6YT09PW51bGwmJihhPW5lKSxuPT09dGhpcy5zY2hlbWUmJnI9PT10aGlzLmF1dGhvcml0eSYmaT09PXRoaXMucGF0aCYmcz09PXRoaXMucXVlcnkmJmE9PT10aGlzLmZyYWdtZW50P3RoaXM6bmV3IE90KG4scixpLHMsYSl9c3RhdGljIHBhcnNlKHQsbj0hMSl7Y29uc3Qgcj1tZC5leGVjKHQpO3JldHVybiByP25ldyBPdChyWzJdfHxuZSxIbihyWzRdfHxuZSksSG4ocls1XXx8bmUpLEhuKHJbN118fG5lKSxIbihyWzldfHxuZSksbik6bmV3IE90KG5lLG5lLG5lLG5lLG5lKX1zdGF0aWMgZmlsZSh0KXtsZXQgbj1uZTtpZihsbiYmKHQ9dC5yZXBsYWNlKC9cXC9nLFBlKSksdFswXT09PVBlJiZ0WzFdPT09UGUpe2NvbnN0IHI9dC5pbmRleE9mKFBlLDIpO3I9PT0tMT8obj10LnN1YnN0cmluZygyKSx0PVBlKToobj10LnN1YnN0cmluZygyLHIpLHQ9dC5zdWJzdHJpbmcocil8fFBlKX1yZXR1cm4gbmV3IE90KCJmaWxlIixuLHQsbmUsbmUpfXN0YXRpYyBmcm9tKHQsbil7cmV0dXJuIG5ldyBPdCh0LnNjaGVtZSx0LmF1dGhvcml0eSx0LnBhdGgsdC5xdWVyeSx0LmZyYWdtZW50LG4pfXN0YXRpYyBqb2luUGF0aCh0LC4uLm4pe2lmKCF0LnBhdGgpdGhyb3cgbmV3IEVycm9yKCJbVXJpRXJyb3JdOiBjYW5ub3QgY2FsbCBqb2luUGF0aCBvbiBVUkkgd2l0aG91dCBwYXRoIik7bGV0IHI7cmV0dXJuIGxuJiZ0LnNjaGVtZT09PSJmaWxlIj9yPVdyLmZpbGUodmUuam9pbih0aSh0LCEwKSwuLi5uKSkucGF0aDpyPXdlLmpvaW4odC5wYXRoLC4uLm4pLHQud2l0aCh7cGF0aDpyfSl9dG9TdHJpbmcodD0hMSl7cmV0dXJuIG5pKHRoaXMsdCl9dG9KU09OKCl7cmV0dXJuIHRoaXN9c3RhdGljIHJldml2ZSh0KXtpZih0KXtpZih0IGluc3RhbmNlb2YgV3IpcmV0dXJuIHQ7e2NvbnN0IG49bmV3IE90KHQpO3JldHVybiBuLl9mb3JtYXR0ZWQ9dC5leHRlcm5hbD8/bnVsbCxuLl9mc1BhdGg9dC5fc2VwPT09dGE/dC5mc1BhdGg/P251bGw6bnVsbCxufX1lbHNlIHJldHVybiB0fX07Y29uc3QgdGE9bG4/MTp2b2lkIDA7Y2xhc3MgT3QgZXh0ZW5kcyBWZXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5fZm9ybWF0dGVkPW51bGwsdGhpcy5fZnNQYXRoPW51bGx9Z2V0IGZzUGF0aCgpe3JldHVybiB0aGlzLl9mc1BhdGh8fCh0aGlzLl9mc1BhdGg9dGkodGhpcywhMSkpLHRoaXMuX2ZzUGF0aH10b1N0cmluZyh0PSExKXtyZXR1cm4gdD9uaSh0aGlzLCEwKToodGhpcy5fZm9ybWF0dGVkfHwodGhpcy5fZm9ybWF0dGVkPW5pKHRoaXMsITEpKSx0aGlzLl9mb3JtYXR0ZWQpfXRvSlNPTigpe2NvbnN0IHQ9eyRtaWQ6MX07cmV0dXJuIHRoaXMuX2ZzUGF0aCYmKHQuZnNQYXRoPXRoaXMuX2ZzUGF0aCx0Ll9zZXA9dGEpLHRoaXMuX2Zvcm1hdHRlZCYmKHQuZXh0ZXJuYWw9dGhpcy5fZm9ybWF0dGVkKSx0aGlzLnBhdGgmJih0LnBhdGg9dGhpcy5wYXRoKSx0aGlzLnNjaGVtZSYmKHQuc2NoZW1lPXRoaXMuc2NoZW1lKSx0aGlzLmF1dGhvcml0eSYmKHQuYXV0aG9yaXR5PXRoaXMuYXV0aG9yaXR5KSx0aGlzLnF1ZXJ5JiYodC5xdWVyeT10aGlzLnF1ZXJ5KSx0aGlzLmZyYWdtZW50JiYodC5mcmFnbWVudD10aGlzLmZyYWdtZW50KSx0fX1jb25zdCBuYT17NTg6IiUzQSIsNDc6IiUyRiIsNjM6IiUzRiIsMzU6IiUyMyIsOTE6IiU1QiIsOTM6IiU1RCIsNjQ6IiU0MCIsMzM6IiUyMSIsMzY6IiUyNCIsMzg6IiUyNiIsMzk6IiUyNyIsNDA6IiUyOCIsNDE6IiUyOSIsNDI6IiUyQSIsNDM6IiUyQiIsNDQ6IiUyQyIsNTk6IiUzQiIsNjE6IiUzRCIsMzI6IiUyMCJ9O2Z1bmN0aW9uIHJhKGUsdCxuKXtsZXQgcixpPS0xO2ZvcihsZXQgcz0wO3M8ZS5sZW5ndGg7cysrKXtjb25zdCBhPWUuY2hhckNvZGVBdChzKTtpZihhPj05NyYmYTw9MTIyfHxhPj02NSYmYTw9OTB8fGE+PTQ4JiZhPD01N3x8YT09PTQ1fHxhPT09NDZ8fGE9PT05NXx8YT09PTEyNnx8dCYmYT09PTQ3fHxuJiZhPT09OTF8fG4mJmE9PT05M3x8biYmYT09PTU4KWkhPT0tMSYmKHIrPWVuY29kZVVSSUNvbXBvbmVudChlLnN1YnN0cmluZyhpLHMpKSxpPS0xKSxyIT09dm9pZCAwJiYocis9ZS5jaGFyQXQocykpO2Vsc2V7cj09PXZvaWQgMCYmKHI9ZS5zdWJzdHIoMCxzKSk7Y29uc3QgbD1uYVthXTtsIT09dm9pZCAwPyhpIT09LTEmJihyKz1lbmNvZGVVUklDb21wb25lbnQoZS5zdWJzdHJpbmcoaSxzKSksaT0tMSkscis9bCk6aT09PS0xJiYoaT1zKX19cmV0dXJuIGkhPT0tMSYmKHIrPWVuY29kZVVSSUNvbXBvbmVudChlLnN1YnN0cmluZyhpKSkpLHIhPT12b2lkIDA/cjplfWZ1bmN0aW9uIGZkKGUpe2xldCB0O2ZvcihsZXQgbj0wO248ZS5sZW5ndGg7bisrKXtjb25zdCByPWUuY2hhckNvZGVBdChuKTtyPT09MzV8fHI9PT02Mz8odD09PXZvaWQgMCYmKHQ9ZS5zdWJzdHIoMCxuKSksdCs9bmFbcl0pOnQhPT12b2lkIDAmJih0Kz1lW25dKX1yZXR1cm4gdCE9PXZvaWQgMD90OmV9ZnVuY3Rpb24gdGkoZSx0KXtsZXQgbjtyZXR1cm4gZS5hdXRob3JpdHkmJmUucGF0aC5sZW5ndGg+MSYmZS5zY2hlbWU9PT0iZmlsZSI/bj1gLy8ke2UuYXV0aG9yaXR5fSR7ZS5wYXRofWA6ZS5wYXRoLmNoYXJDb2RlQXQoMCk9PT00NyYmKGUucGF0aC5jaGFyQ29kZUF0KDEpPj02NSYmZS5wYXRoLmNoYXJDb2RlQXQoMSk8PTkwfHxlLnBhdGguY2hhckNvZGVBdCgxKT49OTcmJmUucGF0aC5jaGFyQ29kZUF0KDEpPD0xMjIpJiZlLnBhdGguY2hhckNvZGVBdCgyKT09PTU4P3Q/bj1lLnBhdGguc3Vic3RyKDEpOm49ZS5wYXRoWzFdLnRvTG93ZXJDYXNlKCkrZS5wYXRoLnN1YnN0cigyKTpuPWUucGF0aCxsbiYmKG49bi5yZXBsYWNlKC9cLy9nLCJcXCIpKSxufWZ1bmN0aW9uIG5pKGUsdCl7Y29uc3Qgbj10P2ZkOnJhO2xldCByPSIiLHtzY2hlbWU6aSxhdXRob3JpdHk6cyxwYXRoOmEscXVlcnk6bCxmcmFnbWVudDpvfT1lO2lmKGkmJihyKz1pLHIrPSI6IiksKHN8fGk9PT0iZmlsZSIpJiYocis9UGUscis9UGUpLHMpe2xldCBjPXMuaW5kZXhPZigiQCIpO2lmKGMhPT0tMSl7Y29uc3QgZD1zLnN1YnN0cigwLGMpO3M9cy5zdWJzdHIoYysxKSxjPWQubGFzdEluZGV4T2YoIjoiKSxjPT09LTE/cis9bihkLCExLCExKToocis9bihkLnN1YnN0cigwLGMpLCExLCExKSxyKz0iOiIscis9bihkLnN1YnN0cihjKzEpLCExLCEwKSkscis9IkAifXM9cy50b0xvd2VyQ2FzZSgpLGM9cy5sYXN0SW5kZXhPZigiOiIpLGM9PT0tMT9yKz1uKHMsITEsITApOihyKz1uKHMuc3Vic3RyKDAsYyksITEsITApLHIrPXMuc3Vic3RyKGMpKX1pZihhKXtpZihhLmxlbmd0aD49MyYmYS5jaGFyQ29kZUF0KDApPT09NDcmJmEuY2hhckNvZGVBdCgyKT09PTU4KXtjb25zdCBjPWEuY2hhckNvZGVBdCgxKTtjPj02NSYmYzw9OTAmJihhPWAvJHtTdHJpbmcuZnJvbUNoYXJDb2RlKGMrMzIpfToke2Euc3Vic3RyKDMpfWApfWVsc2UgaWYoYS5sZW5ndGg+PTImJmEuY2hhckNvZGVBdCgxKT09PTU4KXtjb25zdCBjPWEuY2hhckNvZGVBdCgwKTtjPj02NSYmYzw9OTAmJihhPWAke1N0cmluZy5mcm9tQ2hhckNvZGUoYyszMil9OiR7YS5zdWJzdHIoMil9YCl9cis9bihhLCEwLCExKX1yZXR1cm4gbCYmKHIrPSI/IixyKz1uKGwsITEsITEpKSxvJiYocis9IiMiLHIrPXQ/bzpyYShvLCExLCExKSkscn1mdW5jdGlvbiBpYShlKXt0cnl7cmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChlKX1jYXRjaHtyZXR1cm4gZS5sZW5ndGg+Mz9lLnN1YnN0cigwLDMpK2lhKGUuc3Vic3RyKDMpKTplfX1jb25zdCBzYT0vKCVbMC05QS1aYS16XVswLTlBLVphLXpdKSsvZztmdW5jdGlvbiBIbihlKXtyZXR1cm4gZS5tYXRjaChzYSk/ZS5yZXBsYWNlKHNhLHQ9PmlhKHQpKTplfXZhciBwdDsoZnVuY3Rpb24oZSl7ZS5pbk1lbW9yeT0iaW5tZW1vcnkiLGUudnNjb2RlPSJ2c2NvZGUiLGUuaW50ZXJuYWw9InByaXZhdGUiLGUud2Fsa1Rocm91Z2g9IndhbGtUaHJvdWdoIixlLndhbGtUaHJvdWdoU25pcHBldD0id2Fsa1Rocm91Z2hTbmlwcGV0IixlLmh0dHA9Imh0dHAiLGUuaHR0cHM9Imh0dHBzIixlLmZpbGU9ImZpbGUiLGUubWFpbHRvPSJtYWlsdG8iLGUudW50aXRsZWQ9InVudGl0bGVkIixlLmRhdGE9ImRhdGEiLGUuY29tbWFuZD0iY29tbWFuZCIsZS52c2NvZGVSZW1vdGU9InZzY29kZS1yZW1vdGUiLGUudnNjb2RlUmVtb3RlUmVzb3VyY2U9InZzY29kZS1yZW1vdGUtcmVzb3VyY2UiLGUudnNjb2RlTWFuYWdlZFJlbW90ZVJlc291cmNlPSJ2c2NvZGUtbWFuYWdlZC1yZW1vdGUtcmVzb3VyY2UiLGUudnNjb2RlVXNlckRhdGE9InZzY29kZS11c2VyZGF0YSIsZS52c2NvZGVDdXN0b21FZGl0b3I9InZzY29kZS1jdXN0b20tZWRpdG9yIixlLnZzY29kZU5vdGVib29rQ2VsbD0idnNjb2RlLW5vdGVib29rLWNlbGwiLGUudnNjb2RlTm90ZWJvb2tDZWxsTWV0YWRhdGE9InZzY29kZS1ub3RlYm9vay1jZWxsLW1ldGFkYXRhIixlLnZzY29kZU5vdGVib29rQ2VsbE1ldGFkYXRhRGlmZj0idnNjb2RlLW5vdGVib29rLWNlbGwtbWV0YWRhdGEtZGlmZiIsZS52c2NvZGVOb3RlYm9va0NlbGxPdXRwdXQ9InZzY29kZS1ub3RlYm9vay1jZWxsLW91dHB1dCIsZS52c2NvZGVOb3RlYm9va0NlbGxPdXRwdXREaWZmPSJ2c2NvZGUtbm90ZWJvb2stY2VsbC1vdXRwdXQtZGlmZiIsZS52c2NvZGVOb3RlYm9va01ldGFkYXRhPSJ2c2NvZGUtbm90ZWJvb2stbWV0YWRhdGEiLGUudnNjb2RlSW50ZXJhY3RpdmVJbnB1dD0idnNjb2RlLWludGVyYWN0aXZlLWlucHV0IixlLnZzY29kZVNldHRpbmdzPSJ2c2NvZGUtc2V0dGluZ3MiLGUudnNjb2RlV29ya3NwYWNlVHJ1c3Q9InZzY29kZS13b3Jrc3BhY2UtdHJ1c3QiLGUudnNjb2RlVGVybWluYWw9InZzY29kZS10ZXJtaW5hbCIsZS52c2NvZGVDaGF0Q29kZUJsb2NrPSJ2c2NvZGUtY2hhdC1jb2RlLWJsb2NrIixlLnZzY29kZUNoYXRDb2RlQ29tcGFyZUJsb2NrPSJ2c2NvZGUtY2hhdC1jb2RlLWNvbXBhcmUtYmxvY2siLGUudnNjb2RlQ2hhdFNlc3NzaW9uPSJ2c2NvZGUtY2hhdC1lZGl0b3IiLGUud2Vidmlld1BhbmVsPSJ3ZWJ2aWV3LXBhbmVsIixlLnZzY29kZVdlYnZpZXc9InZzY29kZS13ZWJ2aWV3IixlLmV4dGVuc2lvbj0iZXh0ZW5zaW9uIixlLnZzY29kZUZpbGVSZXNvdXJjZT0idnNjb2RlLWZpbGUiLGUudG1wPSJ0bXAiLGUudnNscz0idnNscyIsZS52c2NvZGVTb3VyY2VDb250cm9sPSJ2c2NvZGUtc2NtIixlLmNvbW1lbnRzSW5wdXQ9ImNvbW1lbnQiLGUuY29kZVNldHRpbmc9ImNvZGUtc2V0dGluZyIsZS5vdXRwdXRDaGFubmVsPSJvdXRwdXQifSkocHR8fChwdD17fSkpO2NvbnN0IGdkPSJ0a24iO2NsYXNzIGJke2NvbnN0cnVjdG9yKCl7dGhpcy5faG9zdHM9T2JqZWN0LmNyZWF0ZShudWxsKSx0aGlzLl9wb3J0cz1PYmplY3QuY3JlYXRlKG51bGwpLHRoaXMuX2Nvbm5lY3Rpb25Ub2tlbnM9T2JqZWN0LmNyZWF0ZShudWxsKSx0aGlzLl9wcmVmZXJyZWRXZWJTY2hlbWE9Imh0dHAiLHRoaXMuX2RlbGVnYXRlPW51bGwsdGhpcy5fc2VydmVyUm9vdFBhdGg9Ii8ifXNldFByZWZlcnJlZFdlYlNjaGVtYSh0KXt0aGlzLl9wcmVmZXJyZWRXZWJTY2hlbWE9dH1nZXQgX3JlbW90ZVJlc291cmNlc1BhdGgoKXtyZXR1cm4gd2Uuam9pbih0aGlzLl9zZXJ2ZXJSb290UGF0aCxwdC52c2NvZGVSZW1vdGVSZXNvdXJjZSl9cmV3cml0ZSh0KXtpZih0aGlzLl9kZWxlZ2F0ZSl0cnl7cmV0dXJuIHRoaXMuX2RlbGVnYXRlKHQpfWNhdGNoKGwpe3JldHVybiBXZShsKSx0fWNvbnN0IG49dC5hdXRob3JpdHk7bGV0IHI9dGhpcy5faG9zdHNbbl07ciYmci5pbmRleE9mKCI6IikhPT0tMSYmci5pbmRleE9mKCJbIik9PT0tMSYmKHI9YFske3J9XWApO2NvbnN0IGk9dGhpcy5fcG9ydHNbbl0scz10aGlzLl9jb25uZWN0aW9uVG9rZW5zW25dO2xldCBhPWBwYXRoPSR7ZW5jb2RlVVJJQ29tcG9uZW50KHQucGF0aCl9YDtyZXR1cm4gdHlwZW9mIHM9PSJzdHJpbmciJiYoYSs9YCYke2dkfT0ke2VuY29kZVVSSUNvbXBvbmVudChzKX1gKSxWZS5mcm9tKHtzY2hlbWU6T2g/dGhpcy5fcHJlZmVycmVkV2ViU2NoZW1hOnB0LnZzY29kZVJlbW90ZVJlc291cmNlLGF1dGhvcml0eTpgJHtyfToke2l9YCxwYXRoOnRoaXMuX3JlbW90ZVJlc291cmNlc1BhdGgscXVlcnk6YX0pfX1jb25zdCB2ZD1uZXcgYmQsd2Q9InZzY29kZS1hcHAiLHpuPWNsYXNzIHpue2FzQnJvd3NlclVyaSh0KXtjb25zdCBuPXRoaXMudG9VcmkodCk7cmV0dXJuIHRoaXMudXJpVG9Ccm93c2VyVXJpKG4pfXVyaVRvQnJvd3NlclVyaSh0KXtyZXR1cm4gdC5zY2hlbWU9PT1wdC52c2NvZGVSZW1vdGU/dmQucmV3cml0ZSh0KTp0LnNjaGVtZT09PXB0LmZpbGUmJihUaHx8V2g9PT1gJHtwdC52c2NvZGVGaWxlUmVzb3VyY2V9Oi8vJHt6bi5GQUxMQkFDS19BVVRIT1JJVFl9YCk/dC53aXRoKHtzY2hlbWU6cHQudnNjb2RlRmlsZVJlc291cmNlLGF1dGhvcml0eTp0LmF1dGhvcml0eXx8em4uRkFMTEJBQ0tfQVVUSE9SSVRZLHF1ZXJ5Om51bGwsZnJhZ21lbnQ6bnVsbH0pOnR9dG9VcmkodCxuKXtpZihWZS5pc1VyaSh0KSlyZXR1cm4gdDtpZihnbG9iYWxUaGlzLl9WU0NPREVfRklMRV9ST09UKXtjb25zdCByPWdsb2JhbFRoaXMuX1ZTQ09ERV9GSUxFX1JPT1Q7aWYoL15cd1tcd1xkKy4tXSo6XC9cLy8udGVzdChyKSlyZXR1cm4gVmUuam9pblBhdGgoVmUucGFyc2UociwhMCksdCk7Y29uc3QgaT1vZChyLHQpO3JldHVybiBWZS5maWxlKGkpfXJldHVybiBWZS5wYXJzZShuLnRvVXJsKHQpKX19O3puLkZBTExCQUNLX0FVVEhPUklUWT13ZDtsZXQgcmk9em47Y29uc3QgYWE9bmV3IHJpO3ZhciBvYTsoZnVuY3Rpb24oZSl7Y29uc3QgdD1uZXcgTWFwKFtbIjEiLHsiQ3Jvc3MtT3JpZ2luLU9wZW5lci1Qb2xpY3kiOiJzYW1lLW9yaWdpbiJ9XSxbIjIiLHsiQ3Jvc3MtT3JpZ2luLUVtYmVkZGVyLVBvbGljeSI6InJlcXVpcmUtY29ycCJ9XSxbIjMiLHsiQ3Jvc3MtT3JpZ2luLU9wZW5lci1Qb2xpY3kiOiJzYW1lLW9yaWdpbiIsIkNyb3NzLU9yaWdpbi1FbWJlZGRlci1Qb2xpY3kiOiJyZXF1aXJlLWNvcnAifV1dKTtlLkNvb3BBbmRDb2VwPU9iamVjdC5mcmVlemUodC5nZXQoIjMiKSk7Y29uc3Qgbj0idnNjb2RlLWNvaSI7ZnVuY3Rpb24gcihzKXtsZXQgYTt0eXBlb2Ygcz09InN0cmluZyI/YT1uZXcgVVJMKHMpLnNlYXJjaFBhcmFtczpzIGluc3RhbmNlb2YgVVJMP2E9cy5zZWFyY2hQYXJhbXM6VmUuaXNVcmkocykmJihhPW5ldyBVUkwocy50b1N0cmluZyghMCkpLnNlYXJjaFBhcmFtcyk7Y29uc3QgbD1hPy5nZXQobik7aWYobClyZXR1cm4gdC5nZXQobCl9ZS5nZXRIZWFkZXJzRnJvbVF1ZXJ5PXI7ZnVuY3Rpb24gaShzLGEsbCl7aWYoIWdsb2JhbFRoaXMuY3Jvc3NPcmlnaW5Jc29sYXRlZClyZXR1cm47Y29uc3Qgbz1hJiZsPyIzIjpsPyIyIjoiMSI7cyBpbnN0YW5jZW9mIFVSTFNlYXJjaFBhcmFtcz9zLnNldChuLG8pOnNbbl09b31lLmFkZFNlYXJjaFBhcmFtPWl9KShvYXx8KG9hPXt9KSk7Y29uc3QgaWk9ImRlZmF1bHQiLHlkPSIkaW5pdGlhbGl6ZSI7Y2xhc3MgeGR7Y29uc3RydWN0b3IodCxuLHIsaSxzKXt0aGlzLnZzV29ya2VyPXQsdGhpcy5yZXE9bix0aGlzLmNoYW5uZWw9cix0aGlzLm1ldGhvZD1pLHRoaXMuYXJncz1zLHRoaXMudHlwZT0wfX1jbGFzcyBsYXtjb25zdHJ1Y3Rvcih0LG4scixpKXt0aGlzLnZzV29ya2VyPXQsdGhpcy5zZXE9bix0aGlzLnJlcz1yLHRoaXMuZXJyPWksdGhpcy50eXBlPTF9fWNsYXNzIFNke2NvbnN0cnVjdG9yKHQsbixyLGkscyl7dGhpcy52c1dvcmtlcj10LHRoaXMucmVxPW4sdGhpcy5jaGFubmVsPXIsdGhpcy5ldmVudE5hbWU9aSx0aGlzLmFyZz1zLHRoaXMudHlwZT0yfX1jbGFzcyBDZHtjb25zdHJ1Y3Rvcih0LG4scil7dGhpcy52c1dvcmtlcj10LHRoaXMucmVxPW4sdGhpcy5ldmVudD1yLHRoaXMudHlwZT0zfX1jbGFzcyBfZHtjb25zdHJ1Y3Rvcih0LG4pe3RoaXMudnNXb3JrZXI9dCx0aGlzLnJlcT1uLHRoaXMudHlwZT00fX1jbGFzcyBrZHtjb25zdHJ1Y3Rvcih0KXt0aGlzLl93b3JrZXJJZD0tMSx0aGlzLl9oYW5kbGVyPXQsdGhpcy5fbGFzdFNlbnRSZXE9MCx0aGlzLl9wZW5kaW5nUmVwbGllcz1PYmplY3QuY3JlYXRlKG51bGwpLHRoaXMuX3BlbmRpbmdFbWl0dGVycz1uZXcgTWFwLHRoaXMuX3BlbmRpbmdFdmVudHM9bmV3IE1hcH1zZXRXb3JrZXJJZCh0KXt0aGlzLl93b3JrZXJJZD10fXNlbmRNZXNzYWdlKHQsbixyKXtjb25zdCBpPVN0cmluZygrK3RoaXMuX2xhc3RTZW50UmVxKTtyZXR1cm4gbmV3IFByb21pc2UoKHMsYSk9Pnt0aGlzLl9wZW5kaW5nUmVwbGllc1tpXT17cmVzb2x2ZTpzLHJlamVjdDphfSx0aGlzLl9zZW5kKG5ldyB4ZCh0aGlzLl93b3JrZXJJZCxpLHQsbixyKSl9KX1saXN0ZW4odCxuLHIpe2xldCBpPW51bGw7Y29uc3Qgcz1uZXcgRGUoe29uV2lsbEFkZEZpcnN0TGlzdGVuZXI6KCk9PntpPVN0cmluZygrK3RoaXMuX2xhc3RTZW50UmVxKSx0aGlzLl9wZW5kaW5nRW1pdHRlcnMuc2V0KGkscyksdGhpcy5fc2VuZChuZXcgU2QodGhpcy5fd29ya2VySWQsaSx0LG4scikpfSxvbkRpZFJlbW92ZUxhc3RMaXN0ZW5lcjooKT0+e3RoaXMuX3BlbmRpbmdFbWl0dGVycy5kZWxldGUoaSksdGhpcy5fc2VuZChuZXcgX2QodGhpcy5fd29ya2VySWQsaSkpLGk9bnVsbH19KTtyZXR1cm4gcy5ldmVudH1oYW5kbGVNZXNzYWdlKHQpeyF0fHwhdC52c1dvcmtlcnx8dGhpcy5fd29ya2VySWQhPT0tMSYmdC52c1dvcmtlciE9PXRoaXMuX3dvcmtlcklkfHx0aGlzLl9oYW5kbGVNZXNzYWdlKHQpfWNyZWF0ZVByb3h5VG9SZW1vdGVDaGFubmVsKHQsbil7Y29uc3Qgcj17Z2V0OihpLHMpPT4odHlwZW9mIHM9PSJzdHJpbmciJiYhaVtzXSYmKGhhKHMpP2lbc109YT0+dGhpcy5saXN0ZW4odCxzLGEpOmNhKHMpP2lbc109dGhpcy5saXN0ZW4odCxzLHZvaWQgMCk6cy5jaGFyQ29kZUF0KDApPT09MzYmJihpW3NdPWFzeW5jKC4uLmEpPT4oYXdhaXQgbj8uKCksdGhpcy5zZW5kTWVzc2FnZSh0LHMsYSkpKSksaVtzXSl9O3JldHVybiBuZXcgUHJveHkoT2JqZWN0LmNyZWF0ZShudWxsKSxyKX1faGFuZGxlTWVzc2FnZSh0KXtzd2l0Y2godC50eXBlKXtjYXNlIDE6cmV0dXJuIHRoaXMuX2hhbmRsZVJlcGx5TWVzc2FnZSh0KTtjYXNlIDA6cmV0dXJuIHRoaXMuX2hhbmRsZVJlcXVlc3RNZXNzYWdlKHQpO2Nhc2UgMjpyZXR1cm4gdGhpcy5faGFuZGxlU3Vic2NyaWJlRXZlbnRNZXNzYWdlKHQpO2Nhc2UgMzpyZXR1cm4gdGhpcy5faGFuZGxlRXZlbnRNZXNzYWdlKHQpO2Nhc2UgNDpyZXR1cm4gdGhpcy5faGFuZGxlVW5zdWJzY3JpYmVFdmVudE1lc3NhZ2UodCl9fV9oYW5kbGVSZXBseU1lc3NhZ2UodCl7aWYoIXRoaXMuX3BlbmRpbmdSZXBsaWVzW3Quc2VxXSl7Y29uc29sZS53YXJuKCJHb3QgcmVwbHkgdG8gdW5rbm93biBzZXEiKTtyZXR1cm59Y29uc3Qgbj10aGlzLl9wZW5kaW5nUmVwbGllc1t0LnNlcV07aWYoZGVsZXRlIHRoaXMuX3BlbmRpbmdSZXBsaWVzW3Quc2VxXSx0LmVycil7bGV0IHI9dC5lcnI7dC5lcnIuJGlzRXJyb3ImJihyPW5ldyBFcnJvcixyLm5hbWU9dC5lcnIubmFtZSxyLm1lc3NhZ2U9dC5lcnIubWVzc2FnZSxyLnN0YWNrPXQuZXJyLnN0YWNrKSxuLnJlamVjdChyKTtyZXR1cm59bi5yZXNvbHZlKHQucmVzKX1faGFuZGxlUmVxdWVzdE1lc3NhZ2UodCl7Y29uc3Qgbj10LnJlcTt0aGlzLl9oYW5kbGVyLmhhbmRsZU1lc3NhZ2UodC5jaGFubmVsLHQubWV0aG9kLHQuYXJncykudGhlbihpPT57dGhpcy5fc2VuZChuZXcgbGEodGhpcy5fd29ya2VySWQsbixpLHZvaWQgMCkpfSxpPT57aS5kZXRhaWwgaW5zdGFuY2VvZiBFcnJvciYmKGkuZGV0YWlsPSRzKGkuZGV0YWlsKSksdGhpcy5fc2VuZChuZXcgbGEodGhpcy5fd29ya2VySWQsbix2b2lkIDAsJHMoaSkpKX0pfV9oYW5kbGVTdWJzY3JpYmVFdmVudE1lc3NhZ2UodCl7Y29uc3Qgbj10LnJlcSxyPXRoaXMuX2hhbmRsZXIuaGFuZGxlRXZlbnQodC5jaGFubmVsLHQuZXZlbnROYW1lLHQuYXJnKShpPT57dGhpcy5fc2VuZChuZXcgQ2QodGhpcy5fd29ya2VySWQsbixpKSl9KTt0aGlzLl9wZW5kaW5nRXZlbnRzLnNldChuLHIpfV9oYW5kbGVFdmVudE1lc3NhZ2UodCl7aWYoIXRoaXMuX3BlbmRpbmdFbWl0dGVycy5oYXModC5yZXEpKXtjb25zb2xlLndhcm4oIkdvdCBldmVudCBmb3IgdW5rbm93biByZXEiKTtyZXR1cm59dGhpcy5fcGVuZGluZ0VtaXR0ZXJzLmdldCh0LnJlcSkuZmlyZSh0LmV2ZW50KX1faGFuZGxlVW5zdWJzY3JpYmVFdmVudE1lc3NhZ2UodCl7aWYoIXRoaXMuX3BlbmRpbmdFdmVudHMuaGFzKHQucmVxKSl7Y29uc29sZS53YXJuKCJHb3QgdW5zdWJzY3JpYmUgZm9yIHVua25vd24gcmVxIik7cmV0dXJufXRoaXMuX3BlbmRpbmdFdmVudHMuZ2V0KHQucmVxKS5kaXNwb3NlKCksdGhpcy5fcGVuZGluZ0V2ZW50cy5kZWxldGUodC5yZXEpfV9zZW5kKHQpe2NvbnN0IG49W107aWYodC50eXBlPT09MClmb3IobGV0IHI9MDtyPHQuYXJncy5sZW5ndGg7cisrKXQuYXJnc1tyXWluc3RhbmNlb2YgQXJyYXlCdWZmZXImJm4ucHVzaCh0LmFyZ3Nbcl0pO2Vsc2UgdC50eXBlPT09MSYmdC5yZXMgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlciYmbi5wdXNoKHQucmVzKTt0aGlzLl9oYW5kbGVyLnNlbmRNZXNzYWdlKHQsbil9fWZ1bmN0aW9uIGNhKGUpe3JldHVybiBlWzBdPT09Im8iJiZlWzFdPT09Im4iJiZZcyhlLmNoYXJDb2RlQXQoMikpfWZ1bmN0aW9uIGhhKGUpe3JldHVybi9eb25EeW5hbWljLy50ZXN0KGUpJiZZcyhlLmNoYXJDb2RlQXQoOSkpfWNsYXNzIEVke2NvbnN0cnVjdG9yKHQsbil7dGhpcy5fbG9jYWxDaGFubmVscz1uZXcgTWFwLHRoaXMuX3JlbW90ZUNoYW5uZWxzPW5ldyBNYXAsdGhpcy5fcmVxdWVzdEhhbmRsZXJGYWN0b3J5PW4sdGhpcy5fcmVxdWVzdEhhbmRsZXI9bnVsbCx0aGlzLl9wcm90b2NvbD1uZXcga2Qoe3NlbmRNZXNzYWdlOihyLGkpPT57dChyLGkpfSxoYW5kbGVNZXNzYWdlOihyLGkscyk9PnRoaXMuX2hhbmRsZU1lc3NhZ2UocixpLHMpLGhhbmRsZUV2ZW50OihyLGkscyk9PnRoaXMuX2hhbmRsZUV2ZW50KHIsaSxzKX0pfW9ubWVzc2FnZSh0KXt0aGlzLl9wcm90b2NvbC5oYW5kbGVNZXNzYWdlKHQpfV9oYW5kbGVNZXNzYWdlKHQsbixyKXtpZih0PT09aWkmJm49PT15ZClyZXR1cm4gdGhpcy5pbml0aWFsaXplKHJbMF0sclsxXSxyWzJdKTtjb25zdCBpPXQ9PT1paT90aGlzLl9yZXF1ZXN0SGFuZGxlcjp0aGlzLl9sb2NhbENoYW5uZWxzLmdldCh0KTtpZighaSlyZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKGBNaXNzaW5nIGNoYW5uZWwgJHt0fSBvbiB3b3JrZXIgdGhyZWFkYCkpO2lmKHR5cGVvZiBpW25dIT0iZnVuY3Rpb24iKXJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoYE1pc3NpbmcgbWV0aG9kICR7bn0gb24gd29ya2VyIHRocmVhZCBjaGFubmVsICR7dH1gKSk7dHJ5e3JldHVybiBQcm9taXNlLnJlc29sdmUoaVtuXS5hcHBseShpLHIpKX1jYXRjaChzKXtyZXR1cm4gUHJvbWlzZS5yZWplY3Qocyl9fV9oYW5kbGVFdmVudCh0LG4scil7Y29uc3QgaT10PT09aWk/dGhpcy5fcmVxdWVzdEhhbmRsZXI6dGhpcy5fbG9jYWxDaGFubmVscy5nZXQodCk7aWYoIWkpdGhyb3cgbmV3IEVycm9yKGBNaXNzaW5nIGNoYW5uZWwgJHt0fSBvbiB3b3JrZXIgdGhyZWFkYCk7aWYoaGEobikpe2NvbnN0IHM9aVtuXS5jYWxsKGkscik7aWYodHlwZW9mIHMhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IEVycm9yKGBNaXNzaW5nIGR5bmFtaWMgZXZlbnQgJHtufSBvbiByZXF1ZXN0IGhhbmRsZXIuYCk7cmV0dXJuIHN9aWYoY2Eobikpe2NvbnN0IHM9aVtuXTtpZih0eXBlb2YgcyE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgRXJyb3IoYE1pc3NpbmcgZXZlbnQgJHtufSBvbiByZXF1ZXN0IGhhbmRsZXIuYCk7cmV0dXJuIHN9dGhyb3cgbmV3IEVycm9yKGBNYWxmb3JtZWQgZXZlbnQgbmFtZSAke259YCl9Z2V0Q2hhbm5lbCh0KXtpZighdGhpcy5fcmVtb3RlQ2hhbm5lbHMuaGFzKHQpKXtjb25zdCBuPXRoaXMuX3Byb3RvY29sLmNyZWF0ZVByb3h5VG9SZW1vdGVDaGFubmVsKHQpO3RoaXMuX3JlbW90ZUNoYW5uZWxzLnNldCh0LG4pfXJldHVybiB0aGlzLl9yZW1vdGVDaGFubmVscy5nZXQodCl9YXN5bmMgaW5pdGlhbGl6ZSh0LG4scil7aWYodGhpcy5fcHJvdG9jb2wuc2V0V29ya2VySWQodCksdGhpcy5fcmVxdWVzdEhhbmRsZXJGYWN0b3J5KXt0aGlzLl9yZXF1ZXN0SGFuZGxlcj10aGlzLl9yZXF1ZXN0SGFuZGxlckZhY3RvcnkodGhpcyk7cmV0dXJufXJldHVybiBuJiYodHlwZW9mIG4uYmFzZVVybDwidSImJmRlbGV0ZSBuLmJhc2VVcmwsdHlwZW9mIG4ucGF0aHM8InUiJiZ0eXBlb2Ygbi5wYXRocy52czwidSImJmRlbGV0ZSBuLnBhdGhzLnZzLHR5cGVvZiBuLnRydXN0ZWRUeXBlc1BvbGljeTwidSImJmRlbGV0ZSBuLnRydXN0ZWRUeXBlc1BvbGljeSxuLmNhdGNoRXJyb3I9ITAsZ2xvYmFsVGhpcy5yZXF1aXJlLmNvbmZpZyhuKSksaW1wb3J0KGAke2FhLmFzQnJvd3NlclVyaShgJHtyfS5qc2ApLnRvU3RyaW5nKCEwKX1gKS50aGVuKHM9PntpZih0aGlzLl9yZXF1ZXN0SGFuZGxlcj1zLmNyZWF0ZSh0aGlzKSwhdGhpcy5fcmVxdWVzdEhhbmRsZXIpdGhyb3cgbmV3IEVycm9yKCJObyBSZXF1ZXN0SGFuZGxlciEiKX0pfX1jbGFzcyBtdHtjb25zdHJ1Y3Rvcih0LG4scixpKXt0aGlzLm9yaWdpbmFsU3RhcnQ9dCx0aGlzLm9yaWdpbmFsTGVuZ3RoPW4sdGhpcy5tb2RpZmllZFN0YXJ0PXIsdGhpcy5tb2RpZmllZExlbmd0aD1pfWdldE9yaWdpbmFsRW5kKCl7cmV0dXJuIHRoaXMub3JpZ2luYWxTdGFydCt0aGlzLm9yaWdpbmFsTGVuZ3RofWdldE1vZGlmaWVkRW5kKCl7cmV0dXJuIHRoaXMubW9kaWZpZWRTdGFydCt0aGlzLm1vZGlmaWVkTGVuZ3RofX1mdW5jdGlvbiBkYShlLHQpe3JldHVybih0PDw1KS10K2V8MH1mdW5jdGlvbiBGZChlLHQpe3Q9ZGEoMTQ5NDE3LHQpO2ZvcihsZXQgbj0wLHI9ZS5sZW5ndGg7bjxyO24rKyl0PWRhKGUuY2hhckNvZGVBdChuKSx0KTtyZXR1cm4gdH1mdW5jdGlvbiBzaShlLHQsbj0zMil7Y29uc3Qgcj1uLXQsaT1+KCgxPDxyKS0xKTtyZXR1cm4oZTw8dHwoaSZlKT4+PnIpPj4+MH1mdW5jdGlvbiB1YShlLHQ9MCxuPWUuYnl0ZUxlbmd0aCxyPTApe2ZvcihsZXQgaT0wO2k8bjtpKyspZVt0K2ldPXJ9ZnVuY3Rpb24gUmQoZSx0LG49IjAiKXtmb3IoO2UubGVuZ3RoPHQ7KWU9bitlO3JldHVybiBlfWZ1bmN0aW9uIGRuKGUsdD0zMil7cmV0dXJuIGUgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcj9BcnJheS5mcm9tKG5ldyBVaW50OEFycmF5KGUpKS5tYXAobj0+bi50b1N0cmluZygxNikucGFkU3RhcnQoMiwiMCIpKS5qb2luKCIiKTpSZCgoZT4+PjApLnRvU3RyaW5nKDE2KSx0LzQpfWNvbnN0IE1yPWNsYXNzIE1ye2NvbnN0cnVjdG9yKCl7dGhpcy5faDA9MTczMjU4NDE5Myx0aGlzLl9oMT00MDIzMjMzNDE3LHRoaXMuX2gyPTI1NjIzODMxMDIsdGhpcy5faDM9MjcxNzMzODc4LHRoaXMuX2g0PTMyODUzNzc1MjAsdGhpcy5fYnVmZj1uZXcgVWludDhBcnJheSg2NyksdGhpcy5fYnVmZkRWPW5ldyBEYXRhVmlldyh0aGlzLl9idWZmLmJ1ZmZlciksdGhpcy5fYnVmZkxlbj0wLHRoaXMuX3RvdGFsTGVuPTAsdGhpcy5fbGVmdG92ZXJIaWdoU3Vycm9nYXRlPTAsdGhpcy5fZmluaXNoZWQ9ITF9dXBkYXRlKHQpe2NvbnN0IG49dC5sZW5ndGg7aWYobj09PTApcmV0dXJuO2NvbnN0IHI9dGhpcy5fYnVmZjtsZXQgaT10aGlzLl9idWZmTGVuLHM9dGhpcy5fbGVmdG92ZXJIaWdoU3Vycm9nYXRlLGEsbDtmb3IocyE9PTA/KGE9cyxsPS0xLHM9MCk6KGE9dC5jaGFyQ29kZUF0KDApLGw9MCk7Oyl7bGV0IG89YTtpZihCbihhKSlpZihsKzE8bil7Y29uc3QgYz10LmNoYXJDb2RlQXQobCsxKTtLcihjKT8obCsrLG89UXMoYSxjKSk6bz02NTUzM31lbHNle3M9YTticmVha31lbHNlIEtyKGEpJiYobz02NTUzMyk7aWYoaT10aGlzLl9wdXNoKHIsaSxvKSxsKyssbDxuKWE9dC5jaGFyQ29kZUF0KGwpO2Vsc2UgYnJlYWt9dGhpcy5fYnVmZkxlbj1pLHRoaXMuX2xlZnRvdmVySGlnaFN1cnJvZ2F0ZT1zfV9wdXNoKHQsbixyKXtyZXR1cm4gcjwxMjg/dFtuKytdPXI6cjwyMDQ4Pyh0W24rK109MTkyfChyJjE5ODQpPj4+Nix0W24rK109MTI4fChyJjYzKT4+PjApOnI8NjU1MzY/KHRbbisrXT0yMjR8KHImNjE0NDApPj4+MTIsdFtuKytdPTEyOHwociY0MDMyKT4+PjYsdFtuKytdPTEyOHwociY2Myk+Pj4wKToodFtuKytdPTI0MHwociYxODM1MDA4KT4+PjE4LHRbbisrXT0xMjh8KHImMjU4MDQ4KT4+PjEyLHRbbisrXT0xMjh8KHImNDAzMik+Pj42LHRbbisrXT0xMjh8KHImNjMpPj4+MCksbj49NjQmJih0aGlzLl9zdGVwKCksbi09NjQsdGhpcy5fdG90YWxMZW4rPTY0LHRbMF09dFs2NF0sdFsxXT10WzY1XSx0WzJdPXRbNjZdKSxufWRpZ2VzdCgpe3JldHVybiB0aGlzLl9maW5pc2hlZHx8KHRoaXMuX2ZpbmlzaGVkPSEwLHRoaXMuX2xlZnRvdmVySGlnaFN1cnJvZ2F0ZSYmKHRoaXMuX2xlZnRvdmVySGlnaFN1cnJvZ2F0ZT0wLHRoaXMuX2J1ZmZMZW49dGhpcy5fcHVzaCh0aGlzLl9idWZmLHRoaXMuX2J1ZmZMZW4sNjU1MzMpKSx0aGlzLl90b3RhbExlbis9dGhpcy5fYnVmZkxlbix0aGlzLl93cmFwVXAoKSksZG4odGhpcy5faDApK2RuKHRoaXMuX2gxKStkbih0aGlzLl9oMikrZG4odGhpcy5faDMpK2RuKHRoaXMuX2g0KX1fd3JhcFVwKCl7dGhpcy5fYnVmZlt0aGlzLl9idWZmTGVuKytdPTEyOCx1YSh0aGlzLl9idWZmLHRoaXMuX2J1ZmZMZW4pLHRoaXMuX2J1ZmZMZW4+NTYmJih0aGlzLl9zdGVwKCksdWEodGhpcy5fYnVmZikpO2NvbnN0IHQ9OCp0aGlzLl90b3RhbExlbjt0aGlzLl9idWZmRFYuc2V0VWludDMyKDU2LE1hdGguZmxvb3IodC80Mjk0OTY3Mjk2KSwhMSksdGhpcy5fYnVmZkRWLnNldFVpbnQzMig2MCx0JTQyOTQ5NjcyOTYsITEpLHRoaXMuX3N0ZXAoKX1fc3RlcCgpe2NvbnN0IHQ9TXIuX2JpZ0Jsb2NrMzIsbj10aGlzLl9idWZmRFY7Zm9yKGxldCB1PTA7dTw2NDt1Kz00KXQuc2V0VWludDMyKHUsbi5nZXRVaW50MzIodSwhMSksITEpO2ZvcihsZXQgdT02NDt1PDMyMDt1Kz00KXQuc2V0VWludDMyKHUsc2kodC5nZXRVaW50MzIodS0xMiwhMSledC5nZXRVaW50MzIodS0zMiwhMSledC5nZXRVaW50MzIodS01NiwhMSledC5nZXRVaW50MzIodS02NCwhMSksMSksITEpO2xldCByPXRoaXMuX2gwLGk9dGhpcy5faDEscz10aGlzLl9oMixhPXRoaXMuX2gzLGw9dGhpcy5faDQsbyxjLGQ7Zm9yKGxldCB1PTA7dTw4MDt1KyspdTwyMD8obz1pJnN8fmkmYSxjPTE1MTg1MDAyNDkpOnU8NDA/KG89aV5zXmEsYz0xODU5Nzc1MzkzKTp1PDYwPyhvPWkmc3xpJmF8cyZhLGM9MjQwMDk1OTcwOCk6KG89aV5zXmEsYz0zMzk1NDY5NzgyKSxkPXNpKHIsNSkrbytsK2MrdC5nZXRVaW50MzIodSo0LCExKSY0Mjk0OTY3Mjk1LGw9YSxhPXMscz1zaShpLDMwKSxpPXIscj1kO3RoaXMuX2gwPXRoaXMuX2gwK3ImNDI5NDk2NzI5NSx0aGlzLl9oMT10aGlzLl9oMStpJjQyOTQ5NjcyOTUsdGhpcy5faDI9dGhpcy5faDIrcyY0Mjk0OTY3Mjk1LHRoaXMuX2gzPXRoaXMuX2gzK2EmNDI5NDk2NzI5NSx0aGlzLl9oND10aGlzLl9oNCtsJjQyOTQ5NjcyOTV9fTtNci5fYmlnQmxvY2szMj1uZXcgRGF0YVZpZXcobmV3IEFycmF5QnVmZmVyKDMyMCkpO2xldCBwYT1NcjtjbGFzcyBtYXtjb25zdHJ1Y3Rvcih0KXt0aGlzLnNvdXJjZT10fWdldEVsZW1lbnRzKCl7Y29uc3QgdD10aGlzLnNvdXJjZSxuPW5ldyBJbnQzMkFycmF5KHQubGVuZ3RoKTtmb3IobGV0IHI9MCxpPXQubGVuZ3RoO3I8aTtyKyspbltyXT10LmNoYXJDb2RlQXQocik7cmV0dXJuIG59fWZ1bmN0aW9uIE5kKGUsdCxuKXtyZXR1cm4gbmV3IGZ0KG5ldyBtYShlKSxuZXcgbWEodCkpLkNvbXB1dGVEaWZmKG4pLmNoYW5nZXN9Y2xhc3MgV3R7c3RhdGljIEFzc2VydCh0LG4pe2lmKCF0KXRocm93IG5ldyBFcnJvcihuKX19Y2xhc3MgVXR7c3RhdGljIENvcHkodCxuLHIsaSxzKXtmb3IobGV0IGE9MDthPHM7YSsrKXJbaSthXT10W24rYV19c3RhdGljIENvcHkyKHQsbixyLGkscyl7Zm9yKGxldCBhPTA7YTxzO2ErKylyW2krYV09dFtuK2FdfX1jbGFzcyBmYXtjb25zdHJ1Y3Rvcigpe3RoaXMubV9jaGFuZ2VzPVtdLHRoaXMubV9vcmlnaW5hbFN0YXJ0PTEwNzM3NDE4MjQsdGhpcy5tX21vZGlmaWVkU3RhcnQ9MTA3Mzc0MTgyNCx0aGlzLm1fb3JpZ2luYWxDb3VudD0wLHRoaXMubV9tb2RpZmllZENvdW50PTB9TWFya05leHRDaGFuZ2UoKXsodGhpcy5tX29yaWdpbmFsQ291bnQ+MHx8dGhpcy5tX21vZGlmaWVkQ291bnQ+MCkmJnRoaXMubV9jaGFuZ2VzLnB1c2gobmV3IG10KHRoaXMubV9vcmlnaW5hbFN0YXJ0LHRoaXMubV9vcmlnaW5hbENvdW50LHRoaXMubV9tb2RpZmllZFN0YXJ0LHRoaXMubV9tb2RpZmllZENvdW50KSksdGhpcy5tX29yaWdpbmFsQ291bnQ9MCx0aGlzLm1fbW9kaWZpZWRDb3VudD0wLHRoaXMubV9vcmlnaW5hbFN0YXJ0PTEwNzM3NDE4MjQsdGhpcy5tX21vZGlmaWVkU3RhcnQ9MTA3Mzc0MTgyNH1BZGRPcmlnaW5hbEVsZW1lbnQodCxuKXt0aGlzLm1fb3JpZ2luYWxTdGFydD1NYXRoLm1pbih0aGlzLm1fb3JpZ2luYWxTdGFydCx0KSx0aGlzLm1fbW9kaWZpZWRTdGFydD1NYXRoLm1pbih0aGlzLm1fbW9kaWZpZWRTdGFydCxuKSx0aGlzLm1fb3JpZ2luYWxDb3VudCsrfUFkZE1vZGlmaWVkRWxlbWVudCh0LG4pe3RoaXMubV9vcmlnaW5hbFN0YXJ0PU1hdGgubWluKHRoaXMubV9vcmlnaW5hbFN0YXJ0LHQpLHRoaXMubV9tb2RpZmllZFN0YXJ0PU1hdGgubWluKHRoaXMubV9tb2RpZmllZFN0YXJ0LG4pLHRoaXMubV9tb2RpZmllZENvdW50Kyt9Z2V0Q2hhbmdlcygpe3JldHVybih0aGlzLm1fb3JpZ2luYWxDb3VudD4wfHx0aGlzLm1fbW9kaWZpZWRDb3VudD4wKSYmdGhpcy5NYXJrTmV4dENoYW5nZSgpLHRoaXMubV9jaGFuZ2VzfWdldFJldmVyc2VDaGFuZ2VzKCl7cmV0dXJuKHRoaXMubV9vcmlnaW5hbENvdW50PjB8fHRoaXMubV9tb2RpZmllZENvdW50PjApJiZ0aGlzLk1hcmtOZXh0Q2hhbmdlKCksdGhpcy5tX2NoYW5nZXMucmV2ZXJzZSgpLHRoaXMubV9jaGFuZ2VzfX1jbGFzcyBmdHtjb25zdHJ1Y3Rvcih0LG4scj1udWxsKXt0aGlzLkNvbnRpbnVlUHJvY2Vzc2luZ1ByZWRpY2F0ZT1yLHRoaXMuX29yaWdpbmFsU2VxdWVuY2U9dCx0aGlzLl9tb2RpZmllZFNlcXVlbmNlPW47Y29uc3RbaSxzLGFdPWZ0Ll9nZXRFbGVtZW50cyh0KSxbbCxvLGNdPWZ0Ll9nZXRFbGVtZW50cyhuKTt0aGlzLl9oYXNTdHJpbmdzPWEmJmMsdGhpcy5fb3JpZ2luYWxTdHJpbmdFbGVtZW50cz1pLHRoaXMuX29yaWdpbmFsRWxlbWVudHNPckhhc2g9cyx0aGlzLl9tb2RpZmllZFN0cmluZ0VsZW1lbnRzPWwsdGhpcy5fbW9kaWZpZWRFbGVtZW50c09ySGFzaD1vLHRoaXMubV9mb3J3YXJkSGlzdG9yeT1bXSx0aGlzLm1fcmV2ZXJzZUhpc3Rvcnk9W119c3RhdGljIF9pc1N0cmluZ0FycmF5KHQpe3JldHVybiB0Lmxlbmd0aD4wJiZ0eXBlb2YgdFswXT09InN0cmluZyJ9c3RhdGljIF9nZXRFbGVtZW50cyh0KXtjb25zdCBuPXQuZ2V0RWxlbWVudHMoKTtpZihmdC5faXNTdHJpbmdBcnJheShuKSl7Y29uc3Qgcj1uZXcgSW50MzJBcnJheShuLmxlbmd0aCk7Zm9yKGxldCBpPTAscz1uLmxlbmd0aDtpPHM7aSsrKXJbaV09RmQobltpXSwwKTtyZXR1cm5bbixyLCEwXX1yZXR1cm4gbiBpbnN0YW5jZW9mIEludDMyQXJyYXk/W1tdLG4sITFdOltbXSxuZXcgSW50MzJBcnJheShuKSwhMV19RWxlbWVudHNBcmVFcXVhbCh0LG4pe3JldHVybiB0aGlzLl9vcmlnaW5hbEVsZW1lbnRzT3JIYXNoW3RdIT09dGhpcy5fbW9kaWZpZWRFbGVtZW50c09ySGFzaFtuXT8hMTp0aGlzLl9oYXNTdHJpbmdzP3RoaXMuX29yaWdpbmFsU3RyaW5nRWxlbWVudHNbdF09PT10aGlzLl9tb2RpZmllZFN0cmluZ0VsZW1lbnRzW25dOiEwfUVsZW1lbnRzQXJlU3RyaWN0RXF1YWwodCxuKXtpZighdGhpcy5FbGVtZW50c0FyZUVxdWFsKHQsbikpcmV0dXJuITE7Y29uc3Qgcj1mdC5fZ2V0U3RyaWN0RWxlbWVudCh0aGlzLl9vcmlnaW5hbFNlcXVlbmNlLHQpLGk9ZnQuX2dldFN0cmljdEVsZW1lbnQodGhpcy5fbW9kaWZpZWRTZXF1ZW5jZSxuKTtyZXR1cm4gcj09PWl9c3RhdGljIF9nZXRTdHJpY3RFbGVtZW50KHQsbil7cmV0dXJuIHR5cGVvZiB0LmdldFN0cmljdEVsZW1lbnQ9PSJmdW5jdGlvbiI/dC5nZXRTdHJpY3RFbGVtZW50KG4pOm51bGx9T3JpZ2luYWxFbGVtZW50c0FyZUVxdWFsKHQsbil7cmV0dXJuIHRoaXMuX29yaWdpbmFsRWxlbWVudHNPckhhc2hbdF0hPT10aGlzLl9vcmlnaW5hbEVsZW1lbnRzT3JIYXNoW25dPyExOnRoaXMuX2hhc1N0cmluZ3M/dGhpcy5fb3JpZ2luYWxTdHJpbmdFbGVtZW50c1t0XT09PXRoaXMuX29yaWdpbmFsU3RyaW5nRWxlbWVudHNbbl06ITB9TW9kaWZpZWRFbGVtZW50c0FyZUVxdWFsKHQsbil7cmV0dXJuIHRoaXMuX21vZGlmaWVkRWxlbWVudHNPckhhc2hbdF0hPT10aGlzLl9tb2RpZmllZEVsZW1lbnRzT3JIYXNoW25dPyExOnRoaXMuX2hhc1N0cmluZ3M/dGhpcy5fbW9kaWZpZWRTdHJpbmdFbGVtZW50c1t0XT09PXRoaXMuX21vZGlmaWVkU3RyaW5nRWxlbWVudHNbbl06ITB9Q29tcHV0ZURpZmYodCl7cmV0dXJuIHRoaXMuX0NvbXB1dGVEaWZmKDAsdGhpcy5fb3JpZ2luYWxFbGVtZW50c09ySGFzaC5sZW5ndGgtMSwwLHRoaXMuX21vZGlmaWVkRWxlbWVudHNPckhhc2gubGVuZ3RoLTEsdCl9X0NvbXB1dGVEaWZmKHQsbixyLGkscyl7Y29uc3QgYT1bITFdO2xldCBsPXRoaXMuQ29tcHV0ZURpZmZSZWN1cnNpdmUodCxuLHIsaSxhKTtyZXR1cm4gcyYmKGw9dGhpcy5QcmV0dGlmeUNoYW5nZXMobCkpLHtxdWl0RWFybHk6YVswXSxjaGFuZ2VzOmx9fUNvbXB1dGVEaWZmUmVjdXJzaXZlKHQsbixyLGkscyl7Zm9yKHNbMF09ITE7dDw9biYmcjw9aSYmdGhpcy5FbGVtZW50c0FyZUVxdWFsKHQscik7KXQrKyxyKys7Zm9yKDtuPj10JiZpPj1yJiZ0aGlzLkVsZW1lbnRzQXJlRXF1YWwobixpKTspbi0tLGktLTtpZih0Pm58fHI+aSl7bGV0IHU7cmV0dXJuIHI8PWk/KFd0LkFzc2VydCh0PT09bisxLCJvcmlnaW5hbFN0YXJ0IHNob3VsZCBvbmx5IGJlIG9uZSBtb3JlIHRoYW4gb3JpZ2luYWxFbmQiKSx1PVtuZXcgbXQodCwwLHIsaS1yKzEpXSk6dDw9bj8oV3QuQXNzZXJ0KHI9PT1pKzEsIm1vZGlmaWVkU3RhcnQgc2hvdWxkIG9ubHkgYmUgb25lIG1vcmUgdGhhbiBtb2RpZmllZEVuZCIpLHU9W25ldyBtdCh0LG4tdCsxLHIsMCldKTooV3QuQXNzZXJ0KHQ9PT1uKzEsIm9yaWdpbmFsU3RhcnQgc2hvdWxkIG9ubHkgYmUgb25lIG1vcmUgdGhhbiBvcmlnaW5hbEVuZCIpLFd0LkFzc2VydChyPT09aSsxLCJtb2RpZmllZFN0YXJ0IHNob3VsZCBvbmx5IGJlIG9uZSBtb3JlIHRoYW4gbW9kaWZpZWRFbmQiKSx1PVtdKSx1fWNvbnN0IGE9WzBdLGw9WzBdLG89dGhpcy5Db21wdXRlUmVjdXJzaW9uUG9pbnQodCxuLHIsaSxhLGwscyksYz1hWzBdLGQ9bFswXTtpZihvIT09bnVsbClyZXR1cm4gbztpZighc1swXSl7Y29uc3QgdT10aGlzLkNvbXB1dGVEaWZmUmVjdXJzaXZlKHQsYyxyLGQscyk7bGV0IGY9W107cmV0dXJuIHNbMF0/Zj1bbmV3IG10KGMrMSxuLShjKzEpKzEsZCsxLGktKGQrMSkrMSldOmY9dGhpcy5Db21wdXRlRGlmZlJlY3Vyc2l2ZShjKzEsbixkKzEsaSxzKSx0aGlzLkNvbmNhdGVuYXRlQ2hhbmdlcyh1LGYpfXJldHVybltuZXcgbXQodCxuLXQrMSxyLGktcisxKV19V0FMS1RSQUNFKHQsbixyLGkscyxhLGwsbyxjLGQsdSxmLG0sdix3LGssUixJKXtsZXQgTj1udWxsLEU9bnVsbCxGPW5ldyBmYSxNPW4sVD1yLFA9bVswXS1rWzBdLWksaj0tMTA3Mzc0MTgyNCxlZT10aGlzLm1fZm9yd2FyZEhpc3RvcnkubGVuZ3RoLTE7ZG97Y29uc3QgQT1QK3Q7QT09PU18fEE8VCYmY1tBLTFdPGNbQSsxXT8odT1jW0ErMV0sdj11LVAtaSx1PGomJkYuTWFya05leHRDaGFuZ2UoKSxqPXUsRi5BZGRNb2RpZmllZEVsZW1lbnQodSsxLHYpLFA9QSsxLXQpOih1PWNbQS0xXSsxLHY9dS1QLWksdTxqJiZGLk1hcmtOZXh0Q2hhbmdlKCksaj11LTEsRi5BZGRPcmlnaW5hbEVsZW1lbnQodSx2KzEpLFA9QS0xLXQpLGVlPj0wJiYoYz10aGlzLm1fZm9yd2FyZEhpc3RvcnlbZWVdLHQ9Y1swXSxNPTEsVD1jLmxlbmd0aC0xKX13aGlsZSgtLWVlPj0tMSk7aWYoTj1GLmdldFJldmVyc2VDaGFuZ2VzKCksSVswXSl7bGV0IEE9bVswXSsxLF89a1swXSsxO2lmKE4hPT1udWxsJiZOLmxlbmd0aD4wKXtjb25zdCBDPU5bTi5sZW5ndGgtMV07QT1NYXRoLm1heChBLEMuZ2V0T3JpZ2luYWxFbmQoKSksXz1NYXRoLm1heChfLEMuZ2V0TW9kaWZpZWRFbmQoKSl9RT1bbmV3IG10KEEsZi1BKzEsXyx3LV8rMSldfWVsc2V7Rj1uZXcgZmEsTT1hLFQ9bCxQPW1bMF0ta1swXS1vLGo9MTA3Mzc0MTgyNCxlZT1SP3RoaXMubV9yZXZlcnNlSGlzdG9yeS5sZW5ndGgtMTp0aGlzLm1fcmV2ZXJzZUhpc3RvcnkubGVuZ3RoLTI7ZG97Y29uc3QgQT1QK3M7QT09PU18fEE8VCYmZFtBLTFdPj1kW0ErMV0/KHU9ZFtBKzFdLTEsdj11LVAtbyx1PmomJkYuTWFya05leHRDaGFuZ2UoKSxqPXUrMSxGLkFkZE9yaWdpbmFsRWxlbWVudCh1KzEsdisxKSxQPUErMS1zKToodT1kW0EtMV0sdj11LVAtbyx1PmomJkYuTWFya05leHRDaGFuZ2UoKSxqPXUsRi5BZGRNb2RpZmllZEVsZW1lbnQodSsxLHYrMSksUD1BLTEtcyksZWU+PTAmJihkPXRoaXMubV9yZXZlcnNlSGlzdG9yeVtlZV0scz1kWzBdLE09MSxUPWQubGVuZ3RoLTEpfXdoaWxlKC0tZWU+PS0xKTtFPUYuZ2V0Q2hhbmdlcygpfXJldHVybiB0aGlzLkNvbmNhdGVuYXRlQ2hhbmdlcyhOLEUpfUNvbXB1dGVSZWN1cnNpb25Qb2ludCh0LG4scixpLHMsYSxsKXtsZXQgbz0wLGM9MCxkPTAsdT0wLGY9MCxtPTA7dC0tLHItLSxzWzBdPTAsYVswXT0wLHRoaXMubV9mb3J3YXJkSGlzdG9yeT1bXSx0aGlzLm1fcmV2ZXJzZUhpc3Rvcnk9W107Y29uc3Qgdj1uLXQrKGktciksdz12KzEsaz1uZXcgSW50MzJBcnJheSh3KSxSPW5ldyBJbnQzMkFycmF5KHcpLEk9aS1yLE49bi10LEU9dC1yLEY9bi1pLFQ9KE4tSSklMj09PTA7a1tJXT10LFJbTl09bixsWzBdPSExO2ZvcihsZXQgUD0xO1A8PXYvMisxO1ArKyl7bGV0IGo9MCxlZT0wO2Q9dGhpcy5DbGlwRGlhZ29uYWxCb3VuZChJLVAsUCxJLHcpLHU9dGhpcy5DbGlwRGlhZ29uYWxCb3VuZChJK1AsUCxJLHcpO2ZvcihsZXQgXz1kO188PXU7Xys9Mil7Xz09PWR8fF88dSYma1tfLTFdPGtbXysxXT9vPWtbXysxXTpvPWtbXy0xXSsxLGM9by0oXy1JKS1FO2NvbnN0IEM9bztmb3IoO288biYmYzxpJiZ0aGlzLkVsZW1lbnRzQXJlRXF1YWwobysxLGMrMSk7KW8rKyxjKys7aWYoa1tfXT1vLG8rYz5qK2VlJiYoaj1vLGVlPWMpLCFUJiZNYXRoLmFicyhfLU4pPD1QLTEmJm8+PVJbX10pcmV0dXJuIHNbMF09byxhWzBdPWMsQzw9UltfXSYmUDw9MTQ0OD90aGlzLldBTEtUUkFDRShJLGQsdSxFLE4sZixtLEYsayxSLG8sbixzLGMsaSxhLFQsbCk6bnVsbH1jb25zdCBBPShqLXQrKGVlLXIpLVApLzI7aWYodGhpcy5Db250aW51ZVByb2Nlc3NpbmdQcmVkaWNhdGUhPT1udWxsJiYhdGhpcy5Db250aW51ZVByb2Nlc3NpbmdQcmVkaWNhdGUoaixBKSlyZXR1cm4gbFswXT0hMCxzWzBdPWosYVswXT1lZSxBPjAmJlA8PTE0NDg/dGhpcy5XQUxLVFJBQ0UoSSxkLHUsRSxOLGYsbSxGLGssUixvLG4scyxjLGksYSxULGwpOih0KysscisrLFtuZXcgbXQodCxuLXQrMSxyLGktcisxKV0pO2Y9dGhpcy5DbGlwRGlhZ29uYWxCb3VuZChOLVAsUCxOLHcpLG09dGhpcy5DbGlwRGlhZ29uYWxCb3VuZChOK1AsUCxOLHcpO2ZvcihsZXQgXz1mO188PW07Xys9Mil7Xz09PWZ8fF88bSYmUltfLTFdPj1SW18rMV0/bz1SW18rMV0tMTpvPVJbXy0xXSxjPW8tKF8tTiktRjtjb25zdCBDPW87Zm9yKDtvPnQmJmM+ciYmdGhpcy5FbGVtZW50c0FyZUVxdWFsKG8sYyk7KW8tLSxjLS07aWYoUltfXT1vLFQmJk1hdGguYWJzKF8tSSk8PVAmJm88PWtbX10pcmV0dXJuIHNbMF09byxhWzBdPWMsQz49a1tfXSYmUDw9MTQ0OD90aGlzLldBTEtUUkFDRShJLGQsdSxFLE4sZixtLEYsayxSLG8sbixzLGMsaSxhLFQsbCk6bnVsbH1pZihQPD0xNDQ3KXtsZXQgXz1uZXcgSW50MzJBcnJheSh1LWQrMik7X1swXT1JLWQrMSxVdC5Db3B5MihrLGQsXywxLHUtZCsxKSx0aGlzLm1fZm9yd2FyZEhpc3RvcnkucHVzaChfKSxfPW5ldyBJbnQzMkFycmF5KG0tZisyKSxfWzBdPU4tZisxLFV0LkNvcHkyKFIsZixfLDEsbS1mKzEpLHRoaXMubV9yZXZlcnNlSGlzdG9yeS5wdXNoKF8pfX1yZXR1cm4gdGhpcy5XQUxLVFJBQ0UoSSxkLHUsRSxOLGYsbSxGLGssUixvLG4scyxjLGksYSxULGwpfVByZXR0aWZ5Q2hhbmdlcyh0KXtmb3IobGV0IG49MDtuPHQubGVuZ3RoO24rKyl7Y29uc3Qgcj10W25dLGk9bjx0Lmxlbmd0aC0xP3RbbisxXS5vcmlnaW5hbFN0YXJ0OnRoaXMuX29yaWdpbmFsRWxlbWVudHNPckhhc2gubGVuZ3RoLHM9bjx0Lmxlbmd0aC0xP3RbbisxXS5tb2RpZmllZFN0YXJ0OnRoaXMuX21vZGlmaWVkRWxlbWVudHNPckhhc2gubGVuZ3RoLGE9ci5vcmlnaW5hbExlbmd0aD4wLGw9ci5tb2RpZmllZExlbmd0aD4wO2Zvcig7ci5vcmlnaW5hbFN0YXJ0K3Iub3JpZ2luYWxMZW5ndGg8aSYmci5tb2RpZmllZFN0YXJ0K3IubW9kaWZpZWRMZW5ndGg8cyYmKCFhfHx0aGlzLk9yaWdpbmFsRWxlbWVudHNBcmVFcXVhbChyLm9yaWdpbmFsU3RhcnQsci5vcmlnaW5hbFN0YXJ0K3Iub3JpZ2luYWxMZW5ndGgpKSYmKCFsfHx0aGlzLk1vZGlmaWVkRWxlbWVudHNBcmVFcXVhbChyLm1vZGlmaWVkU3RhcnQsci5tb2RpZmllZFN0YXJ0K3IubW9kaWZpZWRMZW5ndGgpKTspe2NvbnN0IGM9dGhpcy5FbGVtZW50c0FyZVN0cmljdEVxdWFsKHIub3JpZ2luYWxTdGFydCxyLm1vZGlmaWVkU3RhcnQpO2lmKHRoaXMuRWxlbWVudHNBcmVTdHJpY3RFcXVhbChyLm9yaWdpbmFsU3RhcnQrci5vcmlnaW5hbExlbmd0aCxyLm1vZGlmaWVkU3RhcnQrci5tb2RpZmllZExlbmd0aCkmJiFjKWJyZWFrO3Iub3JpZ2luYWxTdGFydCsrLHIubW9kaWZpZWRTdGFydCsrfWNvbnN0IG89W251bGxdO2lmKG48dC5sZW5ndGgtMSYmdGhpcy5DaGFuZ2VzT3ZlcmxhcCh0W25dLHRbbisxXSxvKSl7dFtuXT1vWzBdLHQuc3BsaWNlKG4rMSwxKSxuLS07Y29udGludWV9fWZvcihsZXQgbj10Lmxlbmd0aC0xO24+PTA7bi0tKXtjb25zdCByPXRbbl07bGV0IGk9MCxzPTA7aWYobj4wKXtjb25zdCB1PXRbbi0xXTtpPXUub3JpZ2luYWxTdGFydCt1Lm9yaWdpbmFsTGVuZ3RoLHM9dS5tb2RpZmllZFN0YXJ0K3UubW9kaWZpZWRMZW5ndGh9Y29uc3QgYT1yLm9yaWdpbmFsTGVuZ3RoPjAsbD1yLm1vZGlmaWVkTGVuZ3RoPjA7bGV0IG89MCxjPXRoaXMuX2JvdW5kYXJ5U2NvcmUoci5vcmlnaW5hbFN0YXJ0LHIub3JpZ2luYWxMZW5ndGgsci5tb2RpZmllZFN0YXJ0LHIubW9kaWZpZWRMZW5ndGgpO2ZvcihsZXQgdT0xOzt1Kyspe2NvbnN0IGY9ci5vcmlnaW5hbFN0YXJ0LXUsbT1yLm1vZGlmaWVkU3RhcnQtdTtpZihmPGl8fG08c3x8YSYmIXRoaXMuT3JpZ2luYWxFbGVtZW50c0FyZUVxdWFsKGYsZityLm9yaWdpbmFsTGVuZ3RoKXx8bCYmIXRoaXMuTW9kaWZpZWRFbGVtZW50c0FyZUVxdWFsKG0sbStyLm1vZGlmaWVkTGVuZ3RoKSlicmVhaztjb25zdCB3PShmPT09aSYmbT09PXM/NTowKSt0aGlzLl9ib3VuZGFyeVNjb3JlKGYsci5vcmlnaW5hbExlbmd0aCxtLHIubW9kaWZpZWRMZW5ndGgpO3c+YyYmKGM9dyxvPXUpfXIub3JpZ2luYWxTdGFydC09byxyLm1vZGlmaWVkU3RhcnQtPW87Y29uc3QgZD1bbnVsbF07aWYobj4wJiZ0aGlzLkNoYW5nZXNPdmVybGFwKHRbbi0xXSx0W25dLGQpKXt0W24tMV09ZFswXSx0LnNwbGljZShuLDEpLG4rKztjb250aW51ZX19aWYodGhpcy5faGFzU3RyaW5ncylmb3IobGV0IG49MSxyPXQubGVuZ3RoO248cjtuKyspe2NvbnN0IGk9dFtuLTFdLHM9dFtuXSxhPXMub3JpZ2luYWxTdGFydC1pLm9yaWdpbmFsU3RhcnQtaS5vcmlnaW5hbExlbmd0aCxsPWkub3JpZ2luYWxTdGFydCxvPXMub3JpZ2luYWxTdGFydCtzLm9yaWdpbmFsTGVuZ3RoLGM9by1sLGQ9aS5tb2RpZmllZFN0YXJ0LHU9cy5tb2RpZmllZFN0YXJ0K3MubW9kaWZpZWRMZW5ndGgsZj11LWQ7aWYoYTw1JiZjPDIwJiZmPDIwKXtjb25zdCBtPXRoaXMuX2ZpbmRCZXR0ZXJDb250aWd1b3VzU2VxdWVuY2UobCxjLGQsZixhKTtpZihtKXtjb25zdFt2LHddPW07KHYhPT1pLm9yaWdpbmFsU3RhcnQraS5vcmlnaW5hbExlbmd0aHx8dyE9PWkubW9kaWZpZWRTdGFydCtpLm1vZGlmaWVkTGVuZ3RoKSYmKGkub3JpZ2luYWxMZW5ndGg9di1pLm9yaWdpbmFsU3RhcnQsaS5tb2RpZmllZExlbmd0aD13LWkubW9kaWZpZWRTdGFydCxzLm9yaWdpbmFsU3RhcnQ9dithLHMubW9kaWZpZWRTdGFydD13K2Escy5vcmlnaW5hbExlbmd0aD1vLXMub3JpZ2luYWxTdGFydCxzLm1vZGlmaWVkTGVuZ3RoPXUtcy5tb2RpZmllZFN0YXJ0KX19fXJldHVybiB0fV9maW5kQmV0dGVyQ29udGlndW91c1NlcXVlbmNlKHQsbixyLGkscyl7aWYobjxzfHxpPHMpcmV0dXJuIG51bGw7Y29uc3QgYT10K24tcysxLGw9citpLXMrMTtsZXQgbz0wLGM9MCxkPTA7Zm9yKGxldCB1PXQ7dTxhO3UrKylmb3IobGV0IGY9cjtmPGw7ZisrKXtjb25zdCBtPXRoaXMuX2NvbnRpZ3VvdXNTZXF1ZW5jZVNjb3JlKHUsZixzKTttPjAmJm0+byYmKG89bSxjPXUsZD1mKX1yZXR1cm4gbz4wP1tjLGRdOm51bGx9X2NvbnRpZ3VvdXNTZXF1ZW5jZVNjb3JlKHQsbixyKXtsZXQgaT0wO2ZvcihsZXQgcz0wO3M8cjtzKyspe2lmKCF0aGlzLkVsZW1lbnRzQXJlRXF1YWwodCtzLG4rcykpcmV0dXJuIDA7aSs9dGhpcy5fb3JpZ2luYWxTdHJpbmdFbGVtZW50c1t0K3NdLmxlbmd0aH1yZXR1cm4gaX1fT3JpZ2luYWxJc0JvdW5kYXJ5KHQpe3JldHVybiB0PD0wfHx0Pj10aGlzLl9vcmlnaW5hbEVsZW1lbnRzT3JIYXNoLmxlbmd0aC0xPyEwOnRoaXMuX2hhc1N0cmluZ3MmJi9eXHMqJC8udGVzdCh0aGlzLl9vcmlnaW5hbFN0cmluZ0VsZW1lbnRzW3RdKX1fT3JpZ2luYWxSZWdpb25Jc0JvdW5kYXJ5KHQsbil7aWYodGhpcy5fT3JpZ2luYWxJc0JvdW5kYXJ5KHQpfHx0aGlzLl9PcmlnaW5hbElzQm91bmRhcnkodC0xKSlyZXR1cm4hMDtpZihuPjApe2NvbnN0IHI9dCtuO2lmKHRoaXMuX09yaWdpbmFsSXNCb3VuZGFyeShyLTEpfHx0aGlzLl9PcmlnaW5hbElzQm91bmRhcnkocikpcmV0dXJuITB9cmV0dXJuITF9X01vZGlmaWVkSXNCb3VuZGFyeSh0KXtyZXR1cm4gdDw9MHx8dD49dGhpcy5fbW9kaWZpZWRFbGVtZW50c09ySGFzaC5sZW5ndGgtMT8hMDp0aGlzLl9oYXNTdHJpbmdzJiYvXlxzKiQvLnRlc3QodGhpcy5fbW9kaWZpZWRTdHJpbmdFbGVtZW50c1t0XSl9X01vZGlmaWVkUmVnaW9uSXNCb3VuZGFyeSh0LG4pe2lmKHRoaXMuX01vZGlmaWVkSXNCb3VuZGFyeSh0KXx8dGhpcy5fTW9kaWZpZWRJc0JvdW5kYXJ5KHQtMSkpcmV0dXJuITA7aWYobj4wKXtjb25zdCByPXQrbjtpZih0aGlzLl9Nb2RpZmllZElzQm91bmRhcnkoci0xKXx8dGhpcy5fTW9kaWZpZWRJc0JvdW5kYXJ5KHIpKXJldHVybiEwfXJldHVybiExfV9ib3VuZGFyeVNjb3JlKHQsbixyLGkpe2NvbnN0IHM9dGhpcy5fT3JpZ2luYWxSZWdpb25Jc0JvdW5kYXJ5KHQsbik/MTowLGE9dGhpcy5fTW9kaWZpZWRSZWdpb25Jc0JvdW5kYXJ5KHIsaSk/MTowO3JldHVybiBzK2F9Q29uY2F0ZW5hdGVDaGFuZ2VzKHQsbil7Y29uc3Qgcj1bXTtpZih0Lmxlbmd0aD09PTB8fG4ubGVuZ3RoPT09MClyZXR1cm4gbi5sZW5ndGg+MD9uOnQ7aWYodGhpcy5DaGFuZ2VzT3ZlcmxhcCh0W3QubGVuZ3RoLTFdLG5bMF0scikpe2NvbnN0IGk9bmV3IEFycmF5KHQubGVuZ3RoK24ubGVuZ3RoLTEpO3JldHVybiBVdC5Db3B5KHQsMCxpLDAsdC5sZW5ndGgtMSksaVt0Lmxlbmd0aC0xXT1yWzBdLFV0LkNvcHkobiwxLGksdC5sZW5ndGgsbi5sZW5ndGgtMSksaX1lbHNle2NvbnN0IGk9bmV3IEFycmF5KHQubGVuZ3RoK24ubGVuZ3RoKTtyZXR1cm4gVXQuQ29weSh0LDAsaSwwLHQubGVuZ3RoKSxVdC5Db3B5KG4sMCxpLHQubGVuZ3RoLG4ubGVuZ3RoKSxpfX1DaGFuZ2VzT3ZlcmxhcCh0LG4scil7aWYoV3QuQXNzZXJ0KHQub3JpZ2luYWxTdGFydDw9bi5vcmlnaW5hbFN0YXJ0LCJMZWZ0IGNoYW5nZSBpcyBub3QgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHJpZ2h0IGNoYW5nZSIpLFd0LkFzc2VydCh0Lm1vZGlmaWVkU3RhcnQ8PW4ubW9kaWZpZWRTdGFydCwiTGVmdCBjaGFuZ2UgaXMgbm90IGxlc3MgdGhhbiBvciBlcXVhbCB0byByaWdodCBjaGFuZ2UiKSx0Lm9yaWdpbmFsU3RhcnQrdC5vcmlnaW5hbExlbmd0aD49bi5vcmlnaW5hbFN0YXJ0fHx0Lm1vZGlmaWVkU3RhcnQrdC5tb2RpZmllZExlbmd0aD49bi5tb2RpZmllZFN0YXJ0KXtjb25zdCBpPXQub3JpZ2luYWxTdGFydDtsZXQgcz10Lm9yaWdpbmFsTGVuZ3RoO2NvbnN0IGE9dC5tb2RpZmllZFN0YXJ0O2xldCBsPXQubW9kaWZpZWRMZW5ndGg7cmV0dXJuIHQub3JpZ2luYWxTdGFydCt0Lm9yaWdpbmFsTGVuZ3RoPj1uLm9yaWdpbmFsU3RhcnQmJihzPW4ub3JpZ2luYWxTdGFydCtuLm9yaWdpbmFsTGVuZ3RoLXQub3JpZ2luYWxTdGFydCksdC5tb2RpZmllZFN0YXJ0K3QubW9kaWZpZWRMZW5ndGg+PW4ubW9kaWZpZWRTdGFydCYmKGw9bi5tb2RpZmllZFN0YXJ0K24ubW9kaWZpZWRMZW5ndGgtdC5tb2RpZmllZFN0YXJ0KSxyWzBdPW5ldyBtdChpLHMsYSxsKSwhMH1lbHNlIHJldHVybiByWzBdPW51bGwsITF9Q2xpcERpYWdvbmFsQm91bmQodCxuLHIsaSl7aWYodD49MCYmdDxpKXJldHVybiB0O2NvbnN0IHM9cixhPWktci0xLGw9biUyPT09MDtpZih0PDApe2NvbnN0IG89cyUyPT09MDtyZXR1cm4gbD09PW8/MDoxfWVsc2V7Y29uc3Qgbz1hJTI9PT0wO3JldHVybiBsPT09bz9pLTE6aS0yfX19bGV0IGhlPWNsYXNzIE10e2NvbnN0cnVjdG9yKHQsbil7dGhpcy5saW5lTnVtYmVyPXQsdGhpcy5jb2x1bW49bn13aXRoKHQ9dGhpcy5saW5lTnVtYmVyLG49dGhpcy5jb2x1bW4pe3JldHVybiB0PT09dGhpcy5saW5lTnVtYmVyJiZuPT09dGhpcy5jb2x1bW4/dGhpczpuZXcgTXQodCxuKX1kZWx0YSh0PTAsbj0wKXtyZXR1cm4gdGhpcy53aXRoKHRoaXMubGluZU51bWJlcit0LHRoaXMuY29sdW1uK24pfWVxdWFscyh0KXtyZXR1cm4gTXQuZXF1YWxzKHRoaXMsdCl9c3RhdGljIGVxdWFscyh0LG4pe3JldHVybiF0JiYhbj8hMDohIXQmJiEhbiYmdC5saW5lTnVtYmVyPT09bi5saW5lTnVtYmVyJiZ0LmNvbHVtbj09PW4uY29sdW1ufWlzQmVmb3JlKHQpe3JldHVybiBNdC5pc0JlZm9yZSh0aGlzLHQpfXN0YXRpYyBpc0JlZm9yZSh0LG4pe3JldHVybiB0LmxpbmVOdW1iZXI8bi5saW5lTnVtYmVyPyEwOm4ubGluZU51bWJlcjx0LmxpbmVOdW1iZXI/ITE6dC5jb2x1bW48bi5jb2x1bW59aXNCZWZvcmVPckVxdWFsKHQpe3JldHVybiBNdC5pc0JlZm9yZU9yRXF1YWwodGhpcyx0KX1zdGF0aWMgaXNCZWZvcmVPckVxdWFsKHQsbil7cmV0dXJuIHQubGluZU51bWJlcjxuLmxpbmVOdW1iZXI/ITA6bi5saW5lTnVtYmVyPHQubGluZU51bWJlcj8hMTp0LmNvbHVtbjw9bi5jb2x1bW59c3RhdGljIGNvbXBhcmUodCxuKXtjb25zdCByPXQubGluZU51bWJlcnwwLGk9bi5saW5lTnVtYmVyfDA7aWYocj09PWkpe2NvbnN0IHM9dC5jb2x1bW58MCxhPW4uY29sdW1ufDA7cmV0dXJuIHMtYX1yZXR1cm4gci1pfWNsb25lKCl7cmV0dXJuIG5ldyBNdCh0aGlzLmxpbmVOdW1iZXIsdGhpcy5jb2x1bW4pfXRvU3RyaW5nKCl7cmV0dXJuIigiK3RoaXMubGluZU51bWJlcisiLCIrdGhpcy5jb2x1bW4rIikifXN0YXRpYyBsaWZ0KHQpe3JldHVybiBuZXcgTXQodC5saW5lTnVtYmVyLHQuY29sdW1uKX1zdGF0aWMgaXNJUG9zaXRpb24odCl7cmV0dXJuIHQmJnR5cGVvZiB0LmxpbmVOdW1iZXI9PSJudW1iZXIiJiZ0eXBlb2YgdC5jb2x1bW49PSJudW1iZXIifXRvSlNPTigpe3JldHVybntsaW5lTnVtYmVyOnRoaXMubGluZU51bWJlcixjb2x1bW46dGhpcy5jb2x1bW59fX0sUT1jbGFzcyB1ZXtjb25zdHJ1Y3Rvcih0LG4scixpKXt0PnJ8fHQ9PT1yJiZuPmk/KHRoaXMuc3RhcnRMaW5lTnVtYmVyPXIsdGhpcy5zdGFydENvbHVtbj1pLHRoaXMuZW5kTGluZU51bWJlcj10LHRoaXMuZW5kQ29sdW1uPW4pOih0aGlzLnN0YXJ0TGluZU51bWJlcj10LHRoaXMuc3RhcnRDb2x1bW49bix0aGlzLmVuZExpbmVOdW1iZXI9cix0aGlzLmVuZENvbHVtbj1pKX1pc0VtcHR5KCl7cmV0dXJuIHVlLmlzRW1wdHkodGhpcyl9c3RhdGljIGlzRW1wdHkodCl7cmV0dXJuIHQuc3RhcnRMaW5lTnVtYmVyPT09dC5lbmRMaW5lTnVtYmVyJiZ0LnN0YXJ0Q29sdW1uPT09dC5lbmRDb2x1bW59Y29udGFpbnNQb3NpdGlvbih0KXtyZXR1cm4gdWUuY29udGFpbnNQb3NpdGlvbih0aGlzLHQpfXN0YXRpYyBjb250YWluc1Bvc2l0aW9uKHQsbil7cmV0dXJuIShuLmxpbmVOdW1iZXI8dC5zdGFydExpbmVOdW1iZXJ8fG4ubGluZU51bWJlcj50LmVuZExpbmVOdW1iZXJ8fG4ubGluZU51bWJlcj09PXQuc3RhcnRMaW5lTnVtYmVyJiZuLmNvbHVtbjx0LnN0YXJ0Q29sdW1ufHxuLmxpbmVOdW1iZXI9PT10LmVuZExpbmVOdW1iZXImJm4uY29sdW1uPnQuZW5kQ29sdW1uKX1zdGF0aWMgc3RyaWN0Q29udGFpbnNQb3NpdGlvbih0LG4pe3JldHVybiEobi5saW5lTnVtYmVyPHQuc3RhcnRMaW5lTnVtYmVyfHxuLmxpbmVOdW1iZXI+dC5lbmRMaW5lTnVtYmVyfHxuLmxpbmVOdW1iZXI9PT10LnN0YXJ0TGluZU51bWJlciYmbi5jb2x1bW48PXQuc3RhcnRDb2x1bW58fG4ubGluZU51bWJlcj09PXQuZW5kTGluZU51bWJlciYmbi5jb2x1bW4+PXQuZW5kQ29sdW1uKX1jb250YWluc1JhbmdlKHQpe3JldHVybiB1ZS5jb250YWluc1JhbmdlKHRoaXMsdCl9c3RhdGljIGNvbnRhaW5zUmFuZ2UodCxuKXtyZXR1cm4hKG4uc3RhcnRMaW5lTnVtYmVyPHQuc3RhcnRMaW5lTnVtYmVyfHxuLmVuZExpbmVOdW1iZXI8dC5zdGFydExpbmVOdW1iZXJ8fG4uc3RhcnRMaW5lTnVtYmVyPnQuZW5kTGluZU51bWJlcnx8bi5lbmRMaW5lTnVtYmVyPnQuZW5kTGluZU51bWJlcnx8bi5zdGFydExpbmVOdW1iZXI9PT10LnN0YXJ0TGluZU51bWJlciYmbi5zdGFydENvbHVtbjx0LnN0YXJ0Q29sdW1ufHxuLmVuZExpbmVOdW1iZXI9PT10LmVuZExpbmVOdW1iZXImJm4uZW5kQ29sdW1uPnQuZW5kQ29sdW1uKX1zdHJpY3RDb250YWluc1JhbmdlKHQpe3JldHVybiB1ZS5zdHJpY3RDb250YWluc1JhbmdlKHRoaXMsdCl9c3RhdGljIHN0cmljdENvbnRhaW5zUmFuZ2UodCxuKXtyZXR1cm4hKG4uc3RhcnRMaW5lTnVtYmVyPHQuc3RhcnRMaW5lTnVtYmVyfHxuLmVuZExpbmVOdW1iZXI8dC5zdGFydExpbmVOdW1iZXJ8fG4uc3RhcnRMaW5lTnVtYmVyPnQuZW5kTGluZU51bWJlcnx8bi5lbmRMaW5lTnVtYmVyPnQuZW5kTGluZU51bWJlcnx8bi5zdGFydExpbmVOdW1iZXI9PT10LnN0YXJ0TGluZU51bWJlciYmbi5zdGFydENvbHVtbjw9dC5zdGFydENvbHVtbnx8bi5lbmRMaW5lTnVtYmVyPT09dC5lbmRMaW5lTnVtYmVyJiZuLmVuZENvbHVtbj49dC5lbmRDb2x1bW4pfXBsdXNSYW5nZSh0KXtyZXR1cm4gdWUucGx1c1JhbmdlKHRoaXMsdCl9c3RhdGljIHBsdXNSYW5nZSh0LG4pe2xldCByLGkscyxhO3JldHVybiBuLnN0YXJ0TGluZU51bWJlcjx0LnN0YXJ0TGluZU51bWJlcj8ocj1uLnN0YXJ0TGluZU51bWJlcixpPW4uc3RhcnRDb2x1bW4pOm4uc3RhcnRMaW5lTnVtYmVyPT09dC5zdGFydExpbmVOdW1iZXI/KHI9bi5zdGFydExpbmVOdW1iZXIsaT1NYXRoLm1pbihuLnN0YXJ0Q29sdW1uLHQuc3RhcnRDb2x1bW4pKToocj10LnN0YXJ0TGluZU51bWJlcixpPXQuc3RhcnRDb2x1bW4pLG4uZW5kTGluZU51bWJlcj50LmVuZExpbmVOdW1iZXI/KHM9bi5lbmRMaW5lTnVtYmVyLGE9bi5lbmRDb2x1bW4pOm4uZW5kTGluZU51bWJlcj09PXQuZW5kTGluZU51bWJlcj8ocz1uLmVuZExpbmVOdW1iZXIsYT1NYXRoLm1heChuLmVuZENvbHVtbix0LmVuZENvbHVtbikpOihzPXQuZW5kTGluZU51bWJlcixhPXQuZW5kQ29sdW1uKSxuZXcgdWUocixpLHMsYSl9aW50ZXJzZWN0UmFuZ2VzKHQpe3JldHVybiB1ZS5pbnRlcnNlY3RSYW5nZXModGhpcyx0KX1zdGF0aWMgaW50ZXJzZWN0UmFuZ2VzKHQsbil7bGV0IHI9dC5zdGFydExpbmVOdW1iZXIsaT10LnN0YXJ0Q29sdW1uLHM9dC5lbmRMaW5lTnVtYmVyLGE9dC5lbmRDb2x1bW47Y29uc3QgbD1uLnN0YXJ0TGluZU51bWJlcixvPW4uc3RhcnRDb2x1bW4sYz1uLmVuZExpbmVOdW1iZXIsZD1uLmVuZENvbHVtbjtyZXR1cm4gcjxsPyhyPWwsaT1vKTpyPT09bCYmKGk9TWF0aC5tYXgoaSxvKSkscz5jPyhzPWMsYT1kKTpzPT09YyYmKGE9TWF0aC5taW4oYSxkKSkscj5zfHxyPT09cyYmaT5hP251bGw6bmV3IHVlKHIsaSxzLGEpfWVxdWFsc1JhbmdlKHQpe3JldHVybiB1ZS5lcXVhbHNSYW5nZSh0aGlzLHQpfXN0YXRpYyBlcXVhbHNSYW5nZSh0LG4pe3JldHVybiF0JiYhbj8hMDohIXQmJiEhbiYmdC5zdGFydExpbmVOdW1iZXI9PT1uLnN0YXJ0TGluZU51bWJlciYmdC5zdGFydENvbHVtbj09PW4uc3RhcnRDb2x1bW4mJnQuZW5kTGluZU51bWJlcj09PW4uZW5kTGluZU51bWJlciYmdC5lbmRDb2x1bW49PT1uLmVuZENvbHVtbn1nZXRFbmRQb3NpdGlvbigpe3JldHVybiB1ZS5nZXRFbmRQb3NpdGlvbih0aGlzKX1zdGF0aWMgZ2V0RW5kUG9zaXRpb24odCl7cmV0dXJuIG5ldyBoZSh0LmVuZExpbmVOdW1iZXIsdC5lbmRDb2x1bW4pfWdldFN0YXJ0UG9zaXRpb24oKXtyZXR1cm4gdWUuZ2V0U3RhcnRQb3NpdGlvbih0aGlzKX1zdGF0aWMgZ2V0U3RhcnRQb3NpdGlvbih0KXtyZXR1cm4gbmV3IGhlKHQuc3RhcnRMaW5lTnVtYmVyLHQuc3RhcnRDb2x1bW4pfXRvU3RyaW5nKCl7cmV0dXJuIlsiK3RoaXMuc3RhcnRMaW5lTnVtYmVyKyIsIit0aGlzLnN0YXJ0Q29sdW1uKyIgLT4gIit0aGlzLmVuZExpbmVOdW1iZXIrIiwiK3RoaXMuZW5kQ29sdW1uKyJdIn1zZXRFbmRQb3NpdGlvbih0LG4pe3JldHVybiBuZXcgdWUodGhpcy5zdGFydExpbmVOdW1iZXIsdGhpcy5zdGFydENvbHVtbix0LG4pfXNldFN0YXJ0UG9zaXRpb24odCxuKXtyZXR1cm4gbmV3IHVlKHQsbix0aGlzLmVuZExpbmVOdW1iZXIsdGhpcy5lbmRDb2x1bW4pfWNvbGxhcHNlVG9TdGFydCgpe3JldHVybiB1ZS5jb2xsYXBzZVRvU3RhcnQodGhpcyl9c3RhdGljIGNvbGxhcHNlVG9TdGFydCh0KXtyZXR1cm4gbmV3IHVlKHQuc3RhcnRMaW5lTnVtYmVyLHQuc3RhcnRDb2x1bW4sdC5zdGFydExpbmVOdW1iZXIsdC5zdGFydENvbHVtbil9Y29sbGFwc2VUb0VuZCgpe3JldHVybiB1ZS5jb2xsYXBzZVRvRW5kKHRoaXMpfXN0YXRpYyBjb2xsYXBzZVRvRW5kKHQpe3JldHVybiBuZXcgdWUodC5lbmRMaW5lTnVtYmVyLHQuZW5kQ29sdW1uLHQuZW5kTGluZU51bWJlcix0LmVuZENvbHVtbil9ZGVsdGEodCl7cmV0dXJuIG5ldyB1ZSh0aGlzLnN0YXJ0TGluZU51bWJlcit0LHRoaXMuc3RhcnRDb2x1bW4sdGhpcy5lbmRMaW5lTnVtYmVyK3QsdGhpcy5lbmRDb2x1bW4pfXN0YXRpYyBmcm9tUG9zaXRpb25zKHQsbj10KXtyZXR1cm4gbmV3IHVlKHQubGluZU51bWJlcix0LmNvbHVtbixuLmxpbmVOdW1iZXIsbi5jb2x1bW4pfXN0YXRpYyBsaWZ0KHQpe3JldHVybiB0P25ldyB1ZSh0LnN0YXJ0TGluZU51bWJlcix0LnN0YXJ0Q29sdW1uLHQuZW5kTGluZU51bWJlcix0LmVuZENvbHVtbik6bnVsbH1zdGF0aWMgaXNJUmFuZ2UodCl7cmV0dXJuIHQmJnR5cGVvZiB0LnN0YXJ0TGluZU51bWJlcj09Im51bWJlciImJnR5cGVvZiB0LnN0YXJ0Q29sdW1uPT0ibnVtYmVyIiYmdHlwZW9mIHQuZW5kTGluZU51bWJlcj09Im51bWJlciImJnR5cGVvZiB0LmVuZENvbHVtbj09Im51bWJlciJ9c3RhdGljIGFyZUludGVyc2VjdGluZ09yVG91Y2hpbmcodCxuKXtyZXR1cm4hKHQuZW5kTGluZU51bWJlcjxuLnN0YXJ0TGluZU51bWJlcnx8dC5lbmRMaW5lTnVtYmVyPT09bi5zdGFydExpbmVOdW1iZXImJnQuZW5kQ29sdW1uPG4uc3RhcnRDb2x1bW58fG4uZW5kTGluZU51bWJlcjx0LnN0YXJ0TGluZU51bWJlcnx8bi5lbmRMaW5lTnVtYmVyPT09dC5zdGFydExpbmVOdW1iZXImJm4uZW5kQ29sdW1uPHQuc3RhcnRDb2x1bW4pfXN0YXRpYyBhcmVJbnRlcnNlY3RpbmcodCxuKXtyZXR1cm4hKHQuZW5kTGluZU51bWJlcjxuLnN0YXJ0TGluZU51bWJlcnx8dC5lbmRMaW5lTnVtYmVyPT09bi5zdGFydExpbmVOdW1iZXImJnQuZW5kQ29sdW1uPD1uLnN0YXJ0Q29sdW1ufHxuLmVuZExpbmVOdW1iZXI8dC5zdGFydExpbmVOdW1iZXJ8fG4uZW5kTGluZU51bWJlcj09PXQuc3RhcnRMaW5lTnVtYmVyJiZuLmVuZENvbHVtbjw9dC5zdGFydENvbHVtbil9c3RhdGljIGNvbXBhcmVSYW5nZXNVc2luZ1N0YXJ0cyh0LG4pe2lmKHQmJm4pe2NvbnN0IHM9dC5zdGFydExpbmVOdW1iZXJ8MCxhPW4uc3RhcnRMaW5lTnVtYmVyfDA7aWYocz09PWEpe2NvbnN0IGw9dC5zdGFydENvbHVtbnwwLG89bi5zdGFydENvbHVtbnwwO2lmKGw9PT1vKXtjb25zdCBjPXQuZW5kTGluZU51bWJlcnwwLGQ9bi5lbmRMaW5lTnVtYmVyfDA7aWYoYz09PWQpe2NvbnN0IHU9dC5lbmRDb2x1bW58MCxmPW4uZW5kQ29sdW1ufDA7cmV0dXJuIHUtZn1yZXR1cm4gYy1kfXJldHVybiBsLW99cmV0dXJuIHMtYX1yZXR1cm4odD8xOjApLShuPzE6MCl9c3RhdGljIGNvbXBhcmVSYW5nZXNVc2luZ0VuZHModCxuKXtyZXR1cm4gdC5lbmRMaW5lTnVtYmVyPT09bi5lbmRMaW5lTnVtYmVyP3QuZW5kQ29sdW1uPT09bi5lbmRDb2x1bW4/dC5zdGFydExpbmVOdW1iZXI9PT1uLnN0YXJ0TGluZU51bWJlcj90LnN0YXJ0Q29sdW1uLW4uc3RhcnRDb2x1bW46dC5zdGFydExpbmVOdW1iZXItbi5zdGFydExpbmVOdW1iZXI6dC5lbmRDb2x1bW4tbi5lbmRDb2x1bW46dC5lbmRMaW5lTnVtYmVyLW4uZW5kTGluZU51bWJlcn1zdGF0aWMgc3BhbnNNdWx0aXBsZUxpbmVzKHQpe3JldHVybiB0LmVuZExpbmVOdW1iZXI+dC5zdGFydExpbmVOdW1iZXJ9dG9KU09OKCl7cmV0dXJuIHRoaXN9fTtmdW5jdGlvbiBnYShlKXtyZXR1cm4gZTwwPzA6ZT4yNTU/MjU1OmV8MH1mdW5jdGlvbiBWdChlKXtyZXR1cm4gZTwwPzA6ZT40Mjk0OTY3Mjk1PzQyOTQ5NjcyOTU6ZXwwfWNsYXNzIGFpe2NvbnN0cnVjdG9yKHQpe2NvbnN0IG49Z2EodCk7dGhpcy5fZGVmYXVsdFZhbHVlPW4sdGhpcy5fYXNjaWlNYXA9YWkuX2NyZWF0ZUFzY2lpTWFwKG4pLHRoaXMuX21hcD1uZXcgTWFwfXN0YXRpYyBfY3JlYXRlQXNjaWlNYXAodCl7Y29uc3Qgbj1uZXcgVWludDhBcnJheSgyNTYpO3JldHVybiBuLmZpbGwodCksbn1zZXQodCxuKXtjb25zdCByPWdhKG4pO3Q+PTAmJnQ8MjU2P3RoaXMuX2FzY2lpTWFwW3RdPXI6dGhpcy5fbWFwLnNldCh0LHIpfWdldCh0KXtyZXR1cm4gdD49MCYmdDwyNTY/dGhpcy5fYXNjaWlNYXBbdF06dGhpcy5fbWFwLmdldCh0KXx8dGhpcy5fZGVmYXVsdFZhbHVlfWNsZWFyKCl7dGhpcy5fYXNjaWlNYXAuZmlsbCh0aGlzLl9kZWZhdWx0VmFsdWUpLHRoaXMuX21hcC5jbGVhcigpfX1jbGFzcyBEZHtjb25zdHJ1Y3Rvcih0LG4scil7Y29uc3QgaT1uZXcgVWludDhBcnJheSh0Km4pO2ZvcihsZXQgcz0wLGE9dCpuO3M8YTtzKyspaVtzXT1yO3RoaXMuX2RhdGE9aSx0aGlzLnJvd3M9dCx0aGlzLmNvbHM9bn1nZXQodCxuKXtyZXR1cm4gdGhpcy5fZGF0YVt0KnRoaXMuY29scytuXX1zZXQodCxuLHIpe3RoaXMuX2RhdGFbdCp0aGlzLmNvbHMrbl09cn19Y2xhc3MgSWR7Y29uc3RydWN0b3IodCl7bGV0IG49MCxyPTA7Zm9yKGxldCBzPTAsYT10Lmxlbmd0aDtzPGE7cysrKXtjb25zdFtsLG8sY109dFtzXTtvPm4mJihuPW8pLGw+ciYmKHI9bCksYz5yJiYocj1jKX1uKysscisrO2NvbnN0IGk9bmV3IERkKHIsbiwwKTtmb3IobGV0IHM9MCxhPXQubGVuZ3RoO3M8YTtzKyspe2NvbnN0W2wsbyxjXT10W3NdO2kuc2V0KGwsbyxjKX10aGlzLl9zdGF0ZXM9aSx0aGlzLl9tYXhDaGFyQ29kZT1ufW5leHRTdGF0ZSh0LG4pe3JldHVybiBuPDB8fG4+PXRoaXMuX21heENoYXJDb2RlPzA6dGhpcy5fc3RhdGVzLmdldCh0LG4pfX1sZXQgb2k9bnVsbDtmdW5jdGlvbiBBZCgpe3JldHVybiBvaT09PW51bGwmJihvaT1uZXcgSWQoW1sxLDEwNCwyXSxbMSw3MiwyXSxbMSwxMDIsNl0sWzEsNzAsNl0sWzIsMTE2LDNdLFsyLDg0LDNdLFszLDExNiw0XSxbMyw4NCw0XSxbNCwxMTIsNV0sWzQsODAsNV0sWzUsMTE1LDldLFs1LDgzLDldLFs1LDU4LDEwXSxbNiwxMDUsN10sWzYsNzMsN10sWzcsMTA4LDhdLFs3LDc2LDhdLFs4LDEwMSw5XSxbOCw2OSw5XSxbOSw1OCwxMF0sWzEwLDQ3LDExXSxbMTEsNDcsMTJdXSkpLG9pfWxldCB1bj1udWxsO2Z1bmN0aW9uIE1kKCl7aWYodW49PT1udWxsKXt1bj1uZXcgYWkoMCk7Y29uc3QgZT1gIAk8Pici44CB44CC772h772k77yM77yO77ya77yb4oCY44CI44CM44CO44CU77yI77y7772b772i772j772d77y977yJ44CV44CP44CN44CJ4oCZ772A772e4oCmYDtmb3IobGV0IG49MDtuPGUubGVuZ3RoO24rKyl1bi5zZXQoZS5jaGFyQ29kZUF0KG4pLDEpO2NvbnN0IHQ9Ii4sOzoiO2ZvcihsZXQgbj0wO248dC5sZW5ndGg7bisrKXVuLnNldCh0LmNoYXJDb2RlQXQobiksMil9cmV0dXJuIHVufWNsYXNzIEdue3N0YXRpYyBfY3JlYXRlTGluayh0LG4scixpLHMpe2xldCBhPXMtMTtkb3tjb25zdCBsPW4uY2hhckNvZGVBdChhKTtpZih0LmdldChsKSE9PTIpYnJlYWs7YS0tfXdoaWxlKGE+aSk7aWYoaT4wKXtjb25zdCBsPW4uY2hhckNvZGVBdChpLTEpLG89bi5jaGFyQ29kZUF0KGEpOyhsPT09NDAmJm89PT00MXx8bD09PTkxJiZvPT09OTN8fGw9PT0xMjMmJm89PT0xMjUpJiZhLS19cmV0dXJue3JhbmdlOntzdGFydExpbmVOdW1iZXI6cixzdGFydENvbHVtbjppKzEsZW5kTGluZU51bWJlcjpyLGVuZENvbHVtbjphKzJ9LHVybDpuLnN1YnN0cmluZyhpLGErMSl9fXN0YXRpYyBjb21wdXRlTGlua3ModCxuPUFkKCkpe2NvbnN0IHI9TWQoKSxpPVtdO2ZvcihsZXQgcz0xLGE9dC5nZXRMaW5lQ291bnQoKTtzPD1hO3MrKyl7Y29uc3QgbD10LmdldExpbmVDb250ZW50KHMpLG89bC5sZW5ndGg7bGV0IGM9MCxkPTAsdT0wLGY9MSxtPSExLHY9ITEsdz0hMSxrPSExO2Zvcig7YzxvOyl7bGV0IFI9ITE7Y29uc3QgST1sLmNoYXJDb2RlQXQoYyk7aWYoZj09PTEzKXtsZXQgTjtzd2l0Y2goSSl7Y2FzZSA0MDptPSEwLE49MDticmVhaztjYXNlIDQxOk49bT8wOjE7YnJlYWs7Y2FzZSA5MTp3PSEwLHY9ITAsTj0wO2JyZWFrO2Nhc2UgOTM6dz0hMSxOPXY/MDoxO2JyZWFrO2Nhc2UgMTIzOms9ITAsTj0wO2JyZWFrO2Nhc2UgMTI1Ok49az8wOjE7YnJlYWs7Y2FzZSAzOTpjYXNlIDM0OmNhc2UgOTY6dT09PUk/Tj0xOnU9PT0zOXx8dT09PTM0fHx1PT09OTY/Tj0wOk49MTticmVhaztjYXNlIDQyOk49dT09PTQyPzE6MDticmVhaztjYXNlIDEyNDpOPXU9PT0xMjQ/MTowO2JyZWFrO2Nhc2UgMzI6Tj13PzA6MTticmVhaztkZWZhdWx0Ok49ci5nZXQoSSl9Tj09PTEmJihpLnB1c2goR24uX2NyZWF0ZUxpbmsocixsLHMsZCxjKSksUj0hMCl9ZWxzZSBpZihmPT09MTIpe2xldCBOO0k9PT05MT8odj0hMCxOPTApOk49ci5nZXQoSSksTj09PTE/Uj0hMDpmPTEzfWVsc2UgZj1uLm5leHRTdGF0ZShmLEkpLGY9PT0wJiYoUj0hMCk7UiYmKGY9MSxtPSExLHY9ITEsaz0hMSxkPWMrMSx1PUkpLGMrK31mPT09MTMmJmkucHVzaChHbi5fY3JlYXRlTGluayhyLGwscyxkLG8pKX1yZXR1cm4gaX19ZnVuY3Rpb24gTGQoZSl7cmV0dXJuIWV8fHR5cGVvZiBlLmdldExpbmVDb3VudCE9ImZ1bmN0aW9uInx8dHlwZW9mIGUuZ2V0TGluZUNvbnRlbnQhPSJmdW5jdGlvbiI/W106R24uY29tcHV0ZUxpbmtzKGUpfWNvbnN0IExyPWNsYXNzIExye2NvbnN0cnVjdG9yKCl7dGhpcy5fZGVmYXVsdFZhbHVlU2V0PVtbInRydWUiLCJmYWxzZSJdLFsiVHJ1ZSIsIkZhbHNlIl0sWyJQcml2YXRlIiwiUHVibGljIiwiRnJpZW5kIiwiUmVhZE9ubHkiLCJQYXJ0aWFsIiwiUHJvdGVjdGVkIiwiV3JpdGVPbmx5Il0sWyJwdWJsaWMiLCJwcm90ZWN0ZWQiLCJwcml2YXRlIl1dfW5hdmlnYXRlVmFsdWVTZXQodCxuLHIsaSxzKXtpZih0JiZuKXtjb25zdCBhPXRoaXMuZG9OYXZpZ2F0ZVZhbHVlU2V0KG4scyk7aWYoYSlyZXR1cm57cmFuZ2U6dCx2YWx1ZTphfX1pZihyJiZpKXtjb25zdCBhPXRoaXMuZG9OYXZpZ2F0ZVZhbHVlU2V0KGkscyk7aWYoYSlyZXR1cm57cmFuZ2U6cix2YWx1ZTphfX1yZXR1cm4gbnVsbH1kb05hdmlnYXRlVmFsdWVTZXQodCxuKXtjb25zdCByPXRoaXMubnVtYmVyUmVwbGFjZSh0LG4pO3JldHVybiByIT09bnVsbD9yOnRoaXMudGV4dFJlcGxhY2UodCxuKX1udW1iZXJSZXBsYWNlKHQsbil7Y29uc3Qgcj1NYXRoLnBvdygxMCx0Lmxlbmd0aC0odC5sYXN0SW5kZXhPZigiLiIpKzEpKTtsZXQgaT1OdW1iZXIodCk7Y29uc3Qgcz1wYXJzZUZsb2F0KHQpO3JldHVybiFpc05hTihpKSYmIWlzTmFOKHMpJiZpPT09cz9pPT09MCYmIW4/bnVsbDooaT1NYXRoLmZsb29yKGkqciksaSs9bj9yOi1yLFN0cmluZyhpL3IpKTpudWxsfXRleHRSZXBsYWNlKHQsbil7cmV0dXJuIHRoaXMudmFsdWVTZXRzUmVwbGFjZSh0aGlzLl9kZWZhdWx0VmFsdWVTZXQsdCxuKX12YWx1ZVNldHNSZXBsYWNlKHQsbixyKXtsZXQgaT1udWxsO2ZvcihsZXQgcz0wLGE9dC5sZW5ndGg7aT09PW51bGwmJnM8YTtzKyspaT10aGlzLnZhbHVlU2V0UmVwbGFjZSh0W3NdLG4scik7cmV0dXJuIGl9dmFsdWVTZXRSZXBsYWNlKHQsbixyKXtsZXQgaT10LmluZGV4T2Yobik7cmV0dXJuIGk+PTA/KGkrPXI/MTotMSxpPDA/aT10Lmxlbmd0aC0xOmklPXQubGVuZ3RoLHRbaV0pOm51bGx9fTtMci5JTlNUQU5DRT1uZXcgTHI7bGV0IGxpPUxyO2NvbnN0IGJhPU9iamVjdC5mcmVlemUoZnVuY3Rpb24oZSx0KXtjb25zdCBuPXNldFRpbWVvdXQoZS5iaW5kKHQpLDApO3JldHVybntkaXNwb3NlKCl7Y2xlYXJUaW1lb3V0KG4pfX19KTt2YXIgSm47KGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQobil7cmV0dXJuIG49PT1lLk5vbmV8fG49PT1lLkNhbmNlbGxlZHx8biBpbnN0YW5jZW9mIFhuPyEwOiFufHx0eXBlb2YgbiE9Im9iamVjdCI/ITE6dHlwZW9mIG4uaXNDYW5jZWxsYXRpb25SZXF1ZXN0ZWQ9PSJib29sZWFuIiYmdHlwZW9mIG4ub25DYW5jZWxsYXRpb25SZXF1ZXN0ZWQ9PSJmdW5jdGlvbiJ9ZS5pc0NhbmNlbGxhdGlvblRva2VuPXQsZS5Ob25lPU9iamVjdC5mcmVlemUoe2lzQ2FuY2VsbGF0aW9uUmVxdWVzdGVkOiExLG9uQ2FuY2VsbGF0aW9uUmVxdWVzdGVkOlZuLk5vbmV9KSxlLkNhbmNlbGxlZD1PYmplY3QuZnJlZXplKHtpc0NhbmNlbGxhdGlvblJlcXVlc3RlZDohMCxvbkNhbmNlbGxhdGlvblJlcXVlc3RlZDpiYX0pfSkoSm58fChKbj17fSkpO2NsYXNzIFhue2NvbnN0cnVjdG9yKCl7dGhpcy5faXNDYW5jZWxsZWQ9ITEsdGhpcy5fZW1pdHRlcj1udWxsfWNhbmNlbCgpe3RoaXMuX2lzQ2FuY2VsbGVkfHwodGhpcy5faXNDYW5jZWxsZWQ9ITAsdGhpcy5fZW1pdHRlciYmKHRoaXMuX2VtaXR0ZXIuZmlyZSh2b2lkIDApLHRoaXMuZGlzcG9zZSgpKSl9Z2V0IGlzQ2FuY2VsbGF0aW9uUmVxdWVzdGVkKCl7cmV0dXJuIHRoaXMuX2lzQ2FuY2VsbGVkfWdldCBvbkNhbmNlbGxhdGlvblJlcXVlc3RlZCgpe3JldHVybiB0aGlzLl9pc0NhbmNlbGxlZD9iYToodGhpcy5fZW1pdHRlcnx8KHRoaXMuX2VtaXR0ZXI9bmV3IERlKSx0aGlzLl9lbWl0dGVyLmV2ZW50KX1kaXNwb3NlKCl7dGhpcy5fZW1pdHRlciYmKHRoaXMuX2VtaXR0ZXIuZGlzcG9zZSgpLHRoaXMuX2VtaXR0ZXI9bnVsbCl9fWNsYXNzIHpke2NvbnN0cnVjdG9yKHQpe3RoaXMuX3Rva2VuPXZvaWQgMCx0aGlzLl9wYXJlbnRMaXN0ZW5lcj12b2lkIDAsdGhpcy5fcGFyZW50TGlzdGVuZXI9dCYmdC5vbkNhbmNlbGxhdGlvblJlcXVlc3RlZCh0aGlzLmNhbmNlbCx0aGlzKX1nZXQgdG9rZW4oKXtyZXR1cm4gdGhpcy5fdG9rZW58fCh0aGlzLl90b2tlbj1uZXcgWG4pLHRoaXMuX3Rva2VufWNhbmNlbCgpe3RoaXMuX3Rva2VuP3RoaXMuX3Rva2VuIGluc3RhbmNlb2YgWG4mJnRoaXMuX3Rva2VuLmNhbmNlbCgpOnRoaXMuX3Rva2VuPUpuLkNhbmNlbGxlZH1kaXNwb3NlKHQ9ITEpe3QmJnRoaXMuY2FuY2VsKCksdGhpcy5fcGFyZW50TGlzdGVuZXI/LmRpc3Bvc2UoKSx0aGlzLl90b2tlbj90aGlzLl90b2tlbiBpbnN0YW5jZW9mIFhuJiZ0aGlzLl90b2tlbi5kaXNwb3NlKCk6dGhpcy5fdG9rZW49Sm4uTm9uZX19Y2xhc3MgY2l7Y29uc3RydWN0b3IoKXt0aGlzLl9rZXlDb2RlVG9TdHI9W10sdGhpcy5fc3RyVG9LZXlDb2RlPU9iamVjdC5jcmVhdGUobnVsbCl9ZGVmaW5lKHQsbil7dGhpcy5fa2V5Q29kZVRvU3RyW3RdPW4sdGhpcy5fc3RyVG9LZXlDb2RlW24udG9Mb3dlckNhc2UoKV09dH1rZXlDb2RlVG9TdHIodCl7cmV0dXJuIHRoaXMuX2tleUNvZGVUb1N0clt0XX1zdHJUb0tleUNvZGUodCl7cmV0dXJuIHRoaXMuX3N0clRvS2V5Q29kZVt0LnRvTG93ZXJDYXNlKCldfHwwfX1jb25zdCBZbj1uZXcgY2ksaGk9bmV3IGNpLGRpPW5ldyBjaSxQZD1uZXcgQXJyYXkoMjMwKSxUZD1PYmplY3QuY3JlYXRlKG51bGwpLE9kPU9iamVjdC5jcmVhdGUobnVsbCk7KGZ1bmN0aW9uKCl7Y29uc3QgZT0iIix0PVtbMSwwLCJOb25lIiwwLCJ1bmtub3duIiwwLCJWS19VTktOT1dOIixlLGVdLFsxLDEsIkh5cGVyIiwwLGUsMCxlLGUsZV0sWzEsMiwiU3VwZXIiLDAsZSwwLGUsZSxlXSxbMSwzLCJGbiIsMCxlLDAsZSxlLGVdLFsxLDQsIkZuTG9jayIsMCxlLDAsZSxlLGVdLFsxLDUsIlN1c3BlbmQiLDAsZSwwLGUsZSxlXSxbMSw2LCJSZXN1bWUiLDAsZSwwLGUsZSxlXSxbMSw3LCJUdXJibyIsMCxlLDAsZSxlLGVdLFsxLDgsIlNsZWVwIiwwLGUsMCwiVktfU0xFRVAiLGUsZV0sWzEsOSwiV2FrZVVwIiwwLGUsMCxlLGUsZV0sWzAsMTAsIktleUEiLDMxLCJBIiw2NSwiVktfQSIsZSxlXSxbMCwxMSwiS2V5QiIsMzIsIkIiLDY2LCJWS19CIixlLGVdLFswLDEyLCJLZXlDIiwzMywiQyIsNjcsIlZLX0MiLGUsZV0sWzAsMTMsIktleUQiLDM0LCJEIiw2OCwiVktfRCIsZSxlXSxbMCwxNCwiS2V5RSIsMzUsIkUiLDY5LCJWS19FIixlLGVdLFswLDE1LCJLZXlGIiwzNiwiRiIsNzAsIlZLX0YiLGUsZV0sWzAsMTYsIktleUciLDM3LCJHIiw3MSwiVktfRyIsZSxlXSxbMCwxNywiS2V5SCIsMzgsIkgiLDcyLCJWS19IIixlLGVdLFswLDE4LCJLZXlJIiwzOSwiSSIsNzMsIlZLX0kiLGUsZV0sWzAsMTksIktleUoiLDQwLCJKIiw3NCwiVktfSiIsZSxlXSxbMCwyMCwiS2V5SyIsNDEsIksiLDc1LCJWS19LIixlLGVdLFswLDIxLCJLZXlMIiw0MiwiTCIsNzYsIlZLX0wiLGUsZV0sWzAsMjIsIktleU0iLDQzLCJNIiw3NywiVktfTSIsZSxlXSxbMCwyMywiS2V5TiIsNDQsIk4iLDc4LCJWS19OIixlLGVdLFswLDI0LCJLZXlPIiw0NSwiTyIsNzksIlZLX08iLGUsZV0sWzAsMjUsIktleVAiLDQ2LCJQIiw4MCwiVktfUCIsZSxlXSxbMCwyNiwiS2V5USIsNDcsIlEiLDgxLCJWS19RIixlLGVdLFswLDI3LCJLZXlSIiw0OCwiUiIsODIsIlZLX1IiLGUsZV0sWzAsMjgsIktleVMiLDQ5LCJTIiw4MywiVktfUyIsZSxlXSxbMCwyOSwiS2V5VCIsNTAsIlQiLDg0LCJWS19UIixlLGVdLFswLDMwLCJLZXlVIiw1MSwiVSIsODUsIlZLX1UiLGUsZV0sWzAsMzEsIktleVYiLDUyLCJWIiw4NiwiVktfViIsZSxlXSxbMCwzMiwiS2V5VyIsNTMsIlciLDg3LCJWS19XIixlLGVdLFswLDMzLCJLZXlYIiw1NCwiWCIsODgsIlZLX1giLGUsZV0sWzAsMzQsIktleVkiLDU1LCJZIiw4OSwiVktfWSIsZSxlXSxbMCwzNSwiS2V5WiIsNTYsIloiLDkwLCJWS19aIixlLGVdLFswLDM2LCJEaWdpdDEiLDIyLCIxIiw0OSwiVktfMSIsZSxlXSxbMCwzNywiRGlnaXQyIiwyMywiMiIsNTAsIlZLXzIiLGUsZV0sWzAsMzgsIkRpZ2l0MyIsMjQsIjMiLDUxLCJWS18zIixlLGVdLFswLDM5LCJEaWdpdDQiLDI1LCI0Iiw1MiwiVktfNCIsZSxlXSxbMCw0MCwiRGlnaXQ1IiwyNiwiNSIsNTMsIlZLXzUiLGUsZV0sWzAsNDEsIkRpZ2l0NiIsMjcsIjYiLDU0LCJWS182IixlLGVdLFswLDQyLCJEaWdpdDciLDI4LCI3Iiw1NSwiVktfNyIsZSxlXSxbMCw0MywiRGlnaXQ4IiwyOSwiOCIsNTYsIlZLXzgiLGUsZV0sWzAsNDQsIkRpZ2l0OSIsMzAsIjkiLDU3LCJWS185IixlLGVdLFswLDQ1LCJEaWdpdDAiLDIxLCIwIiw0OCwiVktfMCIsZSxlXSxbMSw0NiwiRW50ZXIiLDMsIkVudGVyIiwxMywiVktfUkVUVVJOIixlLGVdLFsxLDQ3LCJFc2NhcGUiLDksIkVzY2FwZSIsMjcsIlZLX0VTQ0FQRSIsZSxlXSxbMSw0OCwiQmFja3NwYWNlIiwxLCJCYWNrc3BhY2UiLDgsIlZLX0JBQ0siLGUsZV0sWzEsNDksIlRhYiIsMiwiVGFiIiw5LCJWS19UQUIiLGUsZV0sWzEsNTAsIlNwYWNlIiwxMCwiU3BhY2UiLDMyLCJWS19TUEFDRSIsZSxlXSxbMCw1MSwiTWludXMiLDg4LCItIiwxODksIlZLX09FTV9NSU5VUyIsIi0iLCJPRU1fTUlOVVMiXSxbMCw1MiwiRXF1YWwiLDg2LCI9IiwxODcsIlZLX09FTV9QTFVTIiwiPSIsIk9FTV9QTFVTIl0sWzAsNTMsIkJyYWNrZXRMZWZ0Iiw5MiwiWyIsMjE5LCJWS19PRU1fNCIsIlsiLCJPRU1fNCJdLFswLDU0LCJCcmFja2V0UmlnaHQiLDk0LCJdIiwyMjEsIlZLX09FTV82IiwiXSIsIk9FTV82Il0sWzAsNTUsIkJhY2tzbGFzaCIsOTMsIlxcIiwyMjAsIlZLX09FTV81IiwiXFwiLCJPRU1fNSJdLFswLDU2LCJJbnRsSGFzaCIsMCxlLDAsZSxlLGVdLFswLDU3LCJTZW1pY29sb24iLDg1LCI7IiwxODYsIlZLX09FTV8xIiwiOyIsIk9FTV8xIl0sWzAsNTgsIlF1b3RlIiw5NSwiJyIsMjIyLCJWS19PRU1fNyIsIiciLCJPRU1fNyJdLFswLDU5LCJCYWNrcXVvdGUiLDkxLCJgIiwxOTIsIlZLX09FTV8zIiwiYCIsIk9FTV8zIl0sWzAsNjAsIkNvbW1hIiw4NywiLCIsMTg4LCJWS19PRU1fQ09NTUEiLCIsIiwiT0VNX0NPTU1BIl0sWzAsNjEsIlBlcmlvZCIsODksIi4iLDE5MCwiVktfT0VNX1BFUklPRCIsIi4iLCJPRU1fUEVSSU9EIl0sWzAsNjIsIlNsYXNoIiw5MCwiLyIsMTkxLCJWS19PRU1fMiIsIi8iLCJPRU1fMiJdLFsxLDYzLCJDYXBzTG9jayIsOCwiQ2Fwc0xvY2siLDIwLCJWS19DQVBJVEFMIixlLGVdLFsxLDY0LCJGMSIsNTksIkYxIiwxMTIsIlZLX0YxIixlLGVdLFsxLDY1LCJGMiIsNjAsIkYyIiwxMTMsIlZLX0YyIixlLGVdLFsxLDY2LCJGMyIsNjEsIkYzIiwxMTQsIlZLX0YzIixlLGVdLFsxLDY3LCJGNCIsNjIsIkY0IiwxMTUsIlZLX0Y0IixlLGVdLFsxLDY4LCJGNSIsNjMsIkY1IiwxMTYsIlZLX0Y1IixlLGVdLFsxLDY5LCJGNiIsNjQsIkY2IiwxMTcsIlZLX0Y2IixlLGVdLFsxLDcwLCJGNyIsNjUsIkY3IiwxMTgsIlZLX0Y3IixlLGVdLFsxLDcxLCJGOCIsNjYsIkY4IiwxMTksIlZLX0Y4IixlLGVdLFsxLDcyLCJGOSIsNjcsIkY5IiwxMjAsIlZLX0Y5IixlLGVdLFsxLDczLCJGMTAiLDY4LCJGMTAiLDEyMSwiVktfRjEwIixlLGVdLFsxLDc0LCJGMTEiLDY5LCJGMTEiLDEyMiwiVktfRjExIixlLGVdLFsxLDc1LCJGMTIiLDcwLCJGMTIiLDEyMywiVktfRjEyIixlLGVdLFsxLDc2LCJQcmludFNjcmVlbiIsMCxlLDAsZSxlLGVdLFsxLDc3LCJTY3JvbGxMb2NrIiw4NCwiU2Nyb2xsTG9jayIsMTQ1LCJWS19TQ1JPTEwiLGUsZV0sWzEsNzgsIlBhdXNlIiw3LCJQYXVzZUJyZWFrIiwxOSwiVktfUEFVU0UiLGUsZV0sWzEsNzksIkluc2VydCIsMTksIkluc2VydCIsNDUsIlZLX0lOU0VSVCIsZSxlXSxbMSw4MCwiSG9tZSIsMTQsIkhvbWUiLDM2LCJWS19IT01FIixlLGVdLFsxLDgxLCJQYWdlVXAiLDExLCJQYWdlVXAiLDMzLCJWS19QUklPUiIsZSxlXSxbMSw4MiwiRGVsZXRlIiwyMCwiRGVsZXRlIiw0NiwiVktfREVMRVRFIixlLGVdLFsxLDgzLCJFbmQiLDEzLCJFbmQiLDM1LCJWS19FTkQiLGUsZV0sWzEsODQsIlBhZ2VEb3duIiwxMiwiUGFnZURvd24iLDM0LCJWS19ORVhUIixlLGVdLFsxLDg1LCJBcnJvd1JpZ2h0IiwxNywiUmlnaHRBcnJvdyIsMzksIlZLX1JJR0hUIiwiUmlnaHQiLGVdLFsxLDg2LCJBcnJvd0xlZnQiLDE1LCJMZWZ0QXJyb3ciLDM3LCJWS19MRUZUIiwiTGVmdCIsZV0sWzEsODcsIkFycm93RG93biIsMTgsIkRvd25BcnJvdyIsNDAsIlZLX0RPV04iLCJEb3duIixlXSxbMSw4OCwiQXJyb3dVcCIsMTYsIlVwQXJyb3ciLDM4LCJWS19VUCIsIlVwIixlXSxbMSw4OSwiTnVtTG9jayIsODMsIk51bUxvY2siLDE0NCwiVktfTlVNTE9DSyIsZSxlXSxbMSw5MCwiTnVtcGFkRGl2aWRlIiwxMTMsIk51bVBhZF9EaXZpZGUiLDExMSwiVktfRElWSURFIixlLGVdLFsxLDkxLCJOdW1wYWRNdWx0aXBseSIsMTA4LCJOdW1QYWRfTXVsdGlwbHkiLDEwNiwiVktfTVVMVElQTFkiLGUsZV0sWzEsOTIsIk51bXBhZFN1YnRyYWN0IiwxMTEsIk51bVBhZF9TdWJ0cmFjdCIsMTA5LCJWS19TVUJUUkFDVCIsZSxlXSxbMSw5MywiTnVtcGFkQWRkIiwxMDksIk51bVBhZF9BZGQiLDEwNywiVktfQUREIixlLGVdLFsxLDk0LCJOdW1wYWRFbnRlciIsMyxlLDAsZSxlLGVdLFsxLDk1LCJOdW1wYWQxIiw5OSwiTnVtUGFkMSIsOTcsIlZLX05VTVBBRDEiLGUsZV0sWzEsOTYsIk51bXBhZDIiLDEwMCwiTnVtUGFkMiIsOTgsIlZLX05VTVBBRDIiLGUsZV0sWzEsOTcsIk51bXBhZDMiLDEwMSwiTnVtUGFkMyIsOTksIlZLX05VTVBBRDMiLGUsZV0sWzEsOTgsIk51bXBhZDQiLDEwMiwiTnVtUGFkNCIsMTAwLCJWS19OVU1QQUQ0IixlLGVdLFsxLDk5LCJOdW1wYWQ1IiwxMDMsIk51bVBhZDUiLDEwMSwiVktfTlVNUEFENSIsZSxlXSxbMSwxMDAsIk51bXBhZDYiLDEwNCwiTnVtUGFkNiIsMTAyLCJWS19OVU1QQUQ2IixlLGVdLFsxLDEwMSwiTnVtcGFkNyIsMTA1LCJOdW1QYWQ3IiwxMDMsIlZLX05VTVBBRDciLGUsZV0sWzEsMTAyLCJOdW1wYWQ4IiwxMDYsIk51bVBhZDgiLDEwNCwiVktfTlVNUEFEOCIsZSxlXSxbMSwxMDMsIk51bXBhZDkiLDEwNywiTnVtUGFkOSIsMTA1LCJWS19OVU1QQUQ5IixlLGVdLFsxLDEwNCwiTnVtcGFkMCIsOTgsIk51bVBhZDAiLDk2LCJWS19OVU1QQUQwIixlLGVdLFsxLDEwNSwiTnVtcGFkRGVjaW1hbCIsMTEyLCJOdW1QYWRfRGVjaW1hbCIsMTEwLCJWS19ERUNJTUFMIixlLGVdLFswLDEwNiwiSW50bEJhY2tzbGFzaCIsOTcsIk9FTV8xMDIiLDIyNiwiVktfT0VNXzEwMiIsZSxlXSxbMSwxMDcsIkNvbnRleHRNZW51Iiw1OCwiQ29udGV4dE1lbnUiLDkzLGUsZSxlXSxbMSwxMDgsIlBvd2VyIiwwLGUsMCxlLGUsZV0sWzEsMTA5LCJOdW1wYWRFcXVhbCIsMCxlLDAsZSxlLGVdLFsxLDExMCwiRjEzIiw3MSwiRjEzIiwxMjQsIlZLX0YxMyIsZSxlXSxbMSwxMTEsIkYxNCIsNzIsIkYxNCIsMTI1LCJWS19GMTQiLGUsZV0sWzEsMTEyLCJGMTUiLDczLCJGMTUiLDEyNiwiVktfRjE1IixlLGVdLFsxLDExMywiRjE2Iiw3NCwiRjE2IiwxMjcsIlZLX0YxNiIsZSxlXSxbMSwxMTQsIkYxNyIsNzUsIkYxNyIsMTI4LCJWS19GMTciLGUsZV0sWzEsMTE1LCJGMTgiLDc2LCJGMTgiLDEyOSwiVktfRjE4IixlLGVdLFsxLDExNiwiRjE5Iiw3NywiRjE5IiwxMzAsIlZLX0YxOSIsZSxlXSxbMSwxMTcsIkYyMCIsNzgsIkYyMCIsMTMxLCJWS19GMjAiLGUsZV0sWzEsMTE4LCJGMjEiLDc5LCJGMjEiLDEzMiwiVktfRjIxIixlLGVdLFsxLDExOSwiRjIyIiw4MCwiRjIyIiwxMzMsIlZLX0YyMiIsZSxlXSxbMSwxMjAsIkYyMyIsODEsIkYyMyIsMTM0LCJWS19GMjMiLGUsZV0sWzEsMTIxLCJGMjQiLDgyLCJGMjQiLDEzNSwiVktfRjI0IixlLGVdLFsxLDEyMiwiT3BlbiIsMCxlLDAsZSxlLGVdLFsxLDEyMywiSGVscCIsMCxlLDAsZSxlLGVdLFsxLDEyNCwiU2VsZWN0IiwwLGUsMCxlLGUsZV0sWzEsMTI1LCJBZ2FpbiIsMCxlLDAsZSxlLGVdLFsxLDEyNiwiVW5kbyIsMCxlLDAsZSxlLGVdLFsxLDEyNywiQ3V0IiwwLGUsMCxlLGUsZV0sWzEsMTI4LCJDb3B5IiwwLGUsMCxlLGUsZV0sWzEsMTI5LCJQYXN0ZSIsMCxlLDAsZSxlLGVdLFsxLDEzMCwiRmluZCIsMCxlLDAsZSxlLGVdLFsxLDEzMSwiQXVkaW9Wb2x1bWVNdXRlIiwxMTcsIkF1ZGlvVm9sdW1lTXV0ZSIsMTczLCJWS19WT0xVTUVfTVVURSIsZSxlXSxbMSwxMzIsIkF1ZGlvVm9sdW1lVXAiLDExOCwiQXVkaW9Wb2x1bWVVcCIsMTc1LCJWS19WT0xVTUVfVVAiLGUsZV0sWzEsMTMzLCJBdWRpb1ZvbHVtZURvd24iLDExOSwiQXVkaW9Wb2x1bWVEb3duIiwxNzQsIlZLX1ZPTFVNRV9ET1dOIixlLGVdLFsxLDEzNCwiTnVtcGFkQ29tbWEiLDExMCwiTnVtUGFkX1NlcGFyYXRvciIsMTA4LCJWS19TRVBBUkFUT1IiLGUsZV0sWzAsMTM1LCJJbnRsUm8iLDExNSwiQUJOVF9DMSIsMTkzLCJWS19BQk5UX0MxIixlLGVdLFsxLDEzNiwiS2FuYU1vZGUiLDAsZSwwLGUsZSxlXSxbMCwxMzcsIkludGxZZW4iLDAsZSwwLGUsZSxlXSxbMSwxMzgsIkNvbnZlcnQiLDAsZSwwLGUsZSxlXSxbMSwxMzksIk5vbkNvbnZlcnQiLDAsZSwwLGUsZSxlXSxbMSwxNDAsIkxhbmcxIiwwLGUsMCxlLGUsZV0sWzEsMTQxLCJMYW5nMiIsMCxlLDAsZSxlLGVdLFsxLDE0MiwiTGFuZzMiLDAsZSwwLGUsZSxlXSxbMSwxNDMsIkxhbmc0IiwwLGUsMCxlLGUsZV0sWzEsMTQ0LCJMYW5nNSIsMCxlLDAsZSxlLGVdLFsxLDE0NSwiQWJvcnQiLDAsZSwwLGUsZSxlXSxbMSwxNDYsIlByb3BzIiwwLGUsMCxlLGUsZV0sWzEsMTQ3LCJOdW1wYWRQYXJlbkxlZnQiLDAsZSwwLGUsZSxlXSxbMSwxNDgsIk51bXBhZFBhcmVuUmlnaHQiLDAsZSwwLGUsZSxlXSxbMSwxNDksIk51bXBhZEJhY2tzcGFjZSIsMCxlLDAsZSxlLGVdLFsxLDE1MCwiTnVtcGFkTWVtb3J5U3RvcmUiLDAsZSwwLGUsZSxlXSxbMSwxNTEsIk51bXBhZE1lbW9yeVJlY2FsbCIsMCxlLDAsZSxlLGVdLFsxLDE1MiwiTnVtcGFkTWVtb3J5Q2xlYXIiLDAsZSwwLGUsZSxlXSxbMSwxNTMsIk51bXBhZE1lbW9yeUFkZCIsMCxlLDAsZSxlLGVdLFsxLDE1NCwiTnVtcGFkTWVtb3J5U3VidHJhY3QiLDAsZSwwLGUsZSxlXSxbMSwxNTUsIk51bXBhZENsZWFyIiwxMzEsIkNsZWFyIiwxMiwiVktfQ0xFQVIiLGUsZV0sWzEsMTU2LCJOdW1wYWRDbGVhckVudHJ5IiwwLGUsMCxlLGUsZV0sWzEsMCxlLDUsIkN0cmwiLDE3LCJWS19DT05UUk9MIixlLGVdLFsxLDAsZSw0LCJTaGlmdCIsMTYsIlZLX1NISUZUIixlLGVdLFsxLDAsZSw2LCJBbHQiLDE4LCJWS19NRU5VIixlLGVdLFsxLDAsZSw1NywiTWV0YSIsOTEsIlZLX0NPTU1BTkQiLGUsZV0sWzEsMTU3LCJDb250cm9sTGVmdCIsNSxlLDAsIlZLX0xDT05UUk9MIixlLGVdLFsxLDE1OCwiU2hpZnRMZWZ0Iiw0LGUsMCwiVktfTFNISUZUIixlLGVdLFsxLDE1OSwiQWx0TGVmdCIsNixlLDAsIlZLX0xNRU5VIixlLGVdLFsxLDE2MCwiTWV0YUxlZnQiLDU3LGUsMCwiVktfTFdJTiIsZSxlXSxbMSwxNjEsIkNvbnRyb2xSaWdodCIsNSxlLDAsIlZLX1JDT05UUk9MIixlLGVdLFsxLDE2MiwiU2hpZnRSaWdodCIsNCxlLDAsIlZLX1JTSElGVCIsZSxlXSxbMSwxNjMsIkFsdFJpZ2h0Iiw2LGUsMCwiVktfUk1FTlUiLGUsZV0sWzEsMTY0LCJNZXRhUmlnaHQiLDU3LGUsMCwiVktfUldJTiIsZSxlXSxbMSwxNjUsIkJyaWdodG5lc3NVcCIsMCxlLDAsZSxlLGVdLFsxLDE2NiwiQnJpZ2h0bmVzc0Rvd24iLDAsZSwwLGUsZSxlXSxbMSwxNjcsIk1lZGlhUGxheSIsMCxlLDAsZSxlLGVdLFsxLDE2OCwiTWVkaWFSZWNvcmQiLDAsZSwwLGUsZSxlXSxbMSwxNjksIk1lZGlhRmFzdEZvcndhcmQiLDAsZSwwLGUsZSxlXSxbMSwxNzAsIk1lZGlhUmV3aW5kIiwwLGUsMCxlLGUsZV0sWzEsMTcxLCJNZWRpYVRyYWNrTmV4dCIsMTI0LCJNZWRpYVRyYWNrTmV4dCIsMTc2LCJWS19NRURJQV9ORVhUX1RSQUNLIixlLGVdLFsxLDE3MiwiTWVkaWFUcmFja1ByZXZpb3VzIiwxMjUsIk1lZGlhVHJhY2tQcmV2aW91cyIsMTc3LCJWS19NRURJQV9QUkVWX1RSQUNLIixlLGVdLFsxLDE3MywiTWVkaWFTdG9wIiwxMjYsIk1lZGlhU3RvcCIsMTc4LCJWS19NRURJQV9TVE9QIixlLGVdLFsxLDE3NCwiRWplY3QiLDAsZSwwLGUsZSxlXSxbMSwxNzUsIk1lZGlhUGxheVBhdXNlIiwxMjcsIk1lZGlhUGxheVBhdXNlIiwxNzksIlZLX01FRElBX1BMQVlfUEFVU0UiLGUsZV0sWzEsMTc2LCJNZWRpYVNlbGVjdCIsMTI4LCJMYXVuY2hNZWRpYVBsYXllciIsMTgxLCJWS19NRURJQV9MQVVOQ0hfTUVESUFfU0VMRUNUIixlLGVdLFsxLDE3NywiTGF1bmNoTWFpbCIsMTI5LCJMYXVuY2hNYWlsIiwxODAsIlZLX01FRElBX0xBVU5DSF9NQUlMIixlLGVdLFsxLDE3OCwiTGF1bmNoQXBwMiIsMTMwLCJMYXVuY2hBcHAyIiwxODMsIlZLX01FRElBX0xBVU5DSF9BUFAyIixlLGVdLFsxLDE3OSwiTGF1bmNoQXBwMSIsMCxlLDAsIlZLX01FRElBX0xBVU5DSF9BUFAxIixlLGVdLFsxLDE4MCwiU2VsZWN0VGFzayIsMCxlLDAsZSxlLGVdLFsxLDE4MSwiTGF1bmNoU2NyZWVuU2F2ZXIiLDAsZSwwLGUsZSxlXSxbMSwxODIsIkJyb3dzZXJTZWFyY2giLDEyMCwiQnJvd3NlclNlYXJjaCIsMTcwLCJWS19CUk9XU0VSX1NFQVJDSCIsZSxlXSxbMSwxODMsIkJyb3dzZXJIb21lIiwxMjEsIkJyb3dzZXJIb21lIiwxNzIsIlZLX0JST1dTRVJfSE9NRSIsZSxlXSxbMSwxODQsIkJyb3dzZXJCYWNrIiwxMjIsIkJyb3dzZXJCYWNrIiwxNjYsIlZLX0JST1dTRVJfQkFDSyIsZSxlXSxbMSwxODUsIkJyb3dzZXJGb3J3YXJkIiwxMjMsIkJyb3dzZXJGb3J3YXJkIiwxNjcsIlZLX0JST1dTRVJfRk9SV0FSRCIsZSxlXSxbMSwxODYsIkJyb3dzZXJTdG9wIiwwLGUsMCwiVktfQlJPV1NFUl9TVE9QIixlLGVdLFsxLDE4NywiQnJvd3NlclJlZnJlc2giLDAsZSwwLCJWS19CUk9XU0VSX1JFRlJFU0giLGUsZV0sWzEsMTg4LCJCcm93c2VyRmF2b3JpdGVzIiwwLGUsMCwiVktfQlJPV1NFUl9GQVZPUklURVMiLGUsZV0sWzEsMTg5LCJab29tVG9nZ2xlIiwwLGUsMCxlLGUsZV0sWzEsMTkwLCJNYWlsUmVwbHkiLDAsZSwwLGUsZSxlXSxbMSwxOTEsIk1haWxGb3J3YXJkIiwwLGUsMCxlLGUsZV0sWzEsMTkyLCJNYWlsU2VuZCIsMCxlLDAsZSxlLGVdLFsxLDAsZSwxMTQsIktleUluQ29tcG9zaXRpb24iLDIyOSxlLGUsZV0sWzEsMCxlLDExNiwiQUJOVF9DMiIsMTk0LCJWS19BQk5UX0MyIixlLGVdLFsxLDAsZSw5NiwiT0VNXzgiLDIyMywiVktfT0VNXzgiLGUsZV0sWzEsMCxlLDAsZSwwLCJWS19LQU5BIixlLGVdLFsxLDAsZSwwLGUsMCwiVktfSEFOR1VMIixlLGVdLFsxLDAsZSwwLGUsMCwiVktfSlVOSkEiLGUsZV0sWzEsMCxlLDAsZSwwLCJWS19GSU5BTCIsZSxlXSxbMSwwLGUsMCxlLDAsIlZLX0hBTkpBIixlLGVdLFsxLDAsZSwwLGUsMCwiVktfS0FOSkkiLGUsZV0sWzEsMCxlLDAsZSwwLCJWS19DT05WRVJUIixlLGVdLFsxLDAsZSwwLGUsMCwiVktfTk9OQ09OVkVSVCIsZSxlXSxbMSwwLGUsMCxlLDAsIlZLX0FDQ0VQVCIsZSxlXSxbMSwwLGUsMCxlLDAsIlZLX01PREVDSEFOR0UiLGUsZV0sWzEsMCxlLDAsZSwwLCJWS19TRUxFQ1QiLGUsZV0sWzEsMCxlLDAsZSwwLCJWS19QUklOVCIsZSxlXSxbMSwwLGUsMCxlLDAsIlZLX0VYRUNVVEUiLGUsZV0sWzEsMCxlLDAsZSwwLCJWS19TTkFQU0hPVCIsZSxlXSxbMSwwLGUsMCxlLDAsIlZLX0hFTFAiLGUsZV0sWzEsMCxlLDAsZSwwLCJWS19BUFBTIixlLGVdLFsxLDAsZSwwLGUsMCwiVktfUFJPQ0VTU0tFWSIsZSxlXSxbMSwwLGUsMCxlLDAsIlZLX1BBQ0tFVCIsZSxlXSxbMSwwLGUsMCxlLDAsIlZLX0RCRV9TQkNTQ0hBUiIsZSxlXSxbMSwwLGUsMCxlLDAsIlZLX0RCRV9EQkNTQ0hBUiIsZSxlXSxbMSwwLGUsMCxlLDAsIlZLX0FUVE4iLGUsZV0sWzEsMCxlLDAsZSwwLCJWS19DUlNFTCIsZSxlXSxbMSwwLGUsMCxlLDAsIlZLX0VYU0VMIixlLGVdLFsxLDAsZSwwLGUsMCwiVktfRVJFT0YiLGUsZV0sWzEsMCxlLDAsZSwwLCJWS19QTEFZIixlLGVdLFsxLDAsZSwwLGUsMCwiVktfWk9PTSIsZSxlXSxbMSwwLGUsMCxlLDAsIlZLX05PTkFNRSIsZSxlXSxbMSwwLGUsMCxlLDAsIlZLX1BBMSIsZSxlXSxbMSwwLGUsMCxlLDAsIlZLX09FTV9DTEVBUiIsZSxlXV0sbj1bXSxyPVtdO2Zvcihjb25zdCBpIG9mIHQpe2NvbnN0W3MsYSxsLG8sYyxkLHUsZixtXT1pO2lmKHJbYV18fChyW2FdPSEwLFRkW2xdPWEsT2RbbC50b0xvd2VyQ2FzZSgpXT1hKSwhbltvXSl7aWYobltvXT0hMCwhYyl0aHJvdyBuZXcgRXJyb3IoYFN0cmluZyByZXByZXNlbnRhdGlvbiBtaXNzaW5nIGZvciBrZXkgY29kZSAke299IGFyb3VuZCBzY2FuIGNvZGUgJHtsfWApO1luLmRlZmluZShvLGMpLGhpLmRlZmluZShvLGZ8fGMpLGRpLmRlZmluZShvLG18fGZ8fGMpfWQmJihQZFtkXT1vKX19KSgpO3ZhciB2YTsoZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChsKXtyZXR1cm4gWW4ua2V5Q29kZVRvU3RyKGwpfWUudG9TdHJpbmc9dDtmdW5jdGlvbiBuKGwpe3JldHVybiBZbi5zdHJUb0tleUNvZGUobCl9ZS5mcm9tU3RyaW5nPW47ZnVuY3Rpb24gcihsKXtyZXR1cm4gaGkua2V5Q29kZVRvU3RyKGwpfWUudG9Vc2VyU2V0dGluZ3NVUz1yO2Z1bmN0aW9uIGkobCl7cmV0dXJuIGRpLmtleUNvZGVUb1N0cihsKX1lLnRvVXNlclNldHRpbmdzR2VuZXJhbD1pO2Z1bmN0aW9uIHMobCl7cmV0dXJuIGhpLnN0clRvS2V5Q29kZShsKXx8ZGkuc3RyVG9LZXlDb2RlKGwpfWUuZnJvbVVzZXJTZXR0aW5ncz1zO2Z1bmN0aW9uIGEobCl7aWYobD49OTgmJmw8PTExMylyZXR1cm4gbnVsbDtzd2l0Y2gobCl7Y2FzZSAxNjpyZXR1cm4iVXAiO2Nhc2UgMTg6cmV0dXJuIkRvd24iO2Nhc2UgMTU6cmV0dXJuIkxlZnQiO2Nhc2UgMTc6cmV0dXJuIlJpZ2h0In1yZXR1cm4gWW4ua2V5Q29kZVRvU3RyKGwpfWUudG9FbGVjdHJvbkFjY2VsZXJhdG9yPWF9KSh2YXx8KHZhPXt9KSk7ZnVuY3Rpb24gV2QoZSx0KXtjb25zdCBuPSh0JjY1NTM1KTw8MTY+Pj4wO3JldHVybihlfG4pPj4+MH1jbGFzcyBGZSBleHRlbmRzIFF7Y29uc3RydWN0b3IodCxuLHIsaSl7c3VwZXIodCxuLHIsaSksdGhpcy5zZWxlY3Rpb25TdGFydExpbmVOdW1iZXI9dCx0aGlzLnNlbGVjdGlvblN0YXJ0Q29sdW1uPW4sdGhpcy5wb3NpdGlvbkxpbmVOdW1iZXI9cix0aGlzLnBvc2l0aW9uQ29sdW1uPWl9dG9TdHJpbmcoKXtyZXR1cm4iWyIrdGhpcy5zZWxlY3Rpb25TdGFydExpbmVOdW1iZXIrIiwiK3RoaXMuc2VsZWN0aW9uU3RhcnRDb2x1bW4rIiAtPiAiK3RoaXMucG9zaXRpb25MaW5lTnVtYmVyKyIsIit0aGlzLnBvc2l0aW9uQ29sdW1uKyJdIn1lcXVhbHNTZWxlY3Rpb24odCl7cmV0dXJuIEZlLnNlbGVjdGlvbnNFcXVhbCh0aGlzLHQpfXN0YXRpYyBzZWxlY3Rpb25zRXF1YWwodCxuKXtyZXR1cm4gdC5zZWxlY3Rpb25TdGFydExpbmVOdW1iZXI9PT1uLnNlbGVjdGlvblN0YXJ0TGluZU51bWJlciYmdC5zZWxlY3Rpb25TdGFydENvbHVtbj09PW4uc2VsZWN0aW9uU3RhcnRDb2x1bW4mJnQucG9zaXRpb25MaW5lTnVtYmVyPT09bi5wb3NpdGlvbkxpbmVOdW1iZXImJnQucG9zaXRpb25Db2x1bW49PT1uLnBvc2l0aW9uQ29sdW1ufWdldERpcmVjdGlvbigpe3JldHVybiB0aGlzLnNlbGVjdGlvblN0YXJ0TGluZU51bWJlcj09PXRoaXMuc3RhcnRMaW5lTnVtYmVyJiZ0aGlzLnNlbGVjdGlvblN0YXJ0Q29sdW1uPT09dGhpcy5zdGFydENvbHVtbj8wOjF9c2V0RW5kUG9zaXRpb24odCxuKXtyZXR1cm4gdGhpcy5nZXREaXJlY3Rpb24oKT09PTA/bmV3IEZlKHRoaXMuc3RhcnRMaW5lTnVtYmVyLHRoaXMuc3RhcnRDb2x1bW4sdCxuKTpuZXcgRmUodCxuLHRoaXMuc3RhcnRMaW5lTnVtYmVyLHRoaXMuc3RhcnRDb2x1bW4pfWdldFBvc2l0aW9uKCl7cmV0dXJuIG5ldyBoZSh0aGlzLnBvc2l0aW9uTGluZU51bWJlcix0aGlzLnBvc2l0aW9uQ29sdW1uKX1nZXRTZWxlY3Rpb25TdGFydCgpe3JldHVybiBuZXcgaGUodGhpcy5zZWxlY3Rpb25TdGFydExpbmVOdW1iZXIsdGhpcy5zZWxlY3Rpb25TdGFydENvbHVtbil9c2V0U3RhcnRQb3NpdGlvbih0LG4pe3JldHVybiB0aGlzLmdldERpcmVjdGlvbigpPT09MD9uZXcgRmUodCxuLHRoaXMuZW5kTGluZU51bWJlcix0aGlzLmVuZENvbHVtbik6bmV3IEZlKHRoaXMuZW5kTGluZU51bWJlcix0aGlzLmVuZENvbHVtbix0LG4pfXN0YXRpYyBmcm9tUG9zaXRpb25zKHQsbj10KXtyZXR1cm4gbmV3IEZlKHQubGluZU51bWJlcix0LmNvbHVtbixuLmxpbmVOdW1iZXIsbi5jb2x1bW4pfXN0YXRpYyBmcm9tUmFuZ2UodCxuKXtyZXR1cm4gbj09PTA/bmV3IEZlKHQuc3RhcnRMaW5lTnVtYmVyLHQuc3RhcnRDb2x1bW4sdC5lbmRMaW5lTnVtYmVyLHQuZW5kQ29sdW1uKTpuZXcgRmUodC5lbmRMaW5lTnVtYmVyLHQuZW5kQ29sdW1uLHQuc3RhcnRMaW5lTnVtYmVyLHQuc3RhcnRDb2x1bW4pfXN0YXRpYyBsaWZ0U2VsZWN0aW9uKHQpe3JldHVybiBuZXcgRmUodC5zZWxlY3Rpb25TdGFydExpbmVOdW1iZXIsdC5zZWxlY3Rpb25TdGFydENvbHVtbix0LnBvc2l0aW9uTGluZU51bWJlcix0LnBvc2l0aW9uQ29sdW1uKX1zdGF0aWMgc2VsZWN0aW9uc0FyckVxdWFsKHQsbil7aWYodCYmIW58fCF0JiZuKXJldHVybiExO2lmKCF0JiYhbilyZXR1cm4hMDtpZih0Lmxlbmd0aCE9PW4ubGVuZ3RoKXJldHVybiExO2ZvcihsZXQgcj0wLGk9dC5sZW5ndGg7cjxpO3IrKylpZighdGhpcy5zZWxlY3Rpb25zRXF1YWwodFtyXSxuW3JdKSlyZXR1cm4hMTtyZXR1cm4hMH1zdGF0aWMgaXNJU2VsZWN0aW9uKHQpe3JldHVybiB0JiZ0eXBlb2YgdC5zZWxlY3Rpb25TdGFydExpbmVOdW1iZXI9PSJudW1iZXIiJiZ0eXBlb2YgdC5zZWxlY3Rpb25TdGFydENvbHVtbj09Im51bWJlciImJnR5cGVvZiB0LnBvc2l0aW9uTGluZU51bWJlcj09Im51bWJlciImJnR5cGVvZiB0LnBvc2l0aW9uQ29sdW1uPT0ibnVtYmVyIn1zdGF0aWMgY3JlYXRlV2l0aERpcmVjdGlvbih0LG4scixpLHMpe3JldHVybiBzPT09MD9uZXcgRmUodCxuLHIsaSk6bmV3IEZlKHIsaSx0LG4pfX1mdW5jdGlvbiBVZChlKXtyZXR1cm4gdHlwZW9mIGU9PSJzdHJpbmcifWNvbnN0IHdhPU9iamVjdC5jcmVhdGUobnVsbCk7ZnVuY3Rpb24gaChlLHQpe2lmKFVkKHQpKXtjb25zdCBuPXdhW3RdO2lmKG49PT12b2lkIDApdGhyb3cgbmV3IEVycm9yKGAke2V9IHJlZmVyZW5jZXMgYW4gdW5rbm93biBjb2RpY29uOiAke3R9YCk7dD1ufXJldHVybiB3YVtlXT10LHtpZDplfX1jb25zdCBWZD17YWRkOmgoImFkZCIsNmU0KSxwbHVzOmgoInBsdXMiLDZlNCksZ2lzdE5ldzpoKCJnaXN0LW5ldyIsNmU0KSxyZXBvQ3JlYXRlOmgoInJlcG8tY3JlYXRlIiw2ZTQpLGxpZ2h0YnVsYjpoKCJsaWdodGJ1bGIiLDYwMDAxKSxsaWdodEJ1bGI6aCgibGlnaHQtYnVsYiIsNjAwMDEpLHJlcG86aCgicmVwbyIsNjAwMDIpLHJlcG9EZWxldGU6aCgicmVwby1kZWxldGUiLDYwMDAyKSxnaXN0Rm9yazpoKCJnaXN0LWZvcmsiLDYwMDAzKSxyZXBvRm9ya2VkOmgoInJlcG8tZm9ya2VkIiw2MDAwMyksZ2l0UHVsbFJlcXVlc3Q6aCgiZ2l0LXB1bGwtcmVxdWVzdCIsNjAwMDQpLGdpdFB1bGxSZXF1ZXN0QWJhbmRvbmVkOmgoImdpdC1wdWxsLXJlcXVlc3QtYWJhbmRvbmVkIiw2MDAwNCkscmVjb3JkS2V5czpoKCJyZWNvcmQta2V5cyIsNjAwMDUpLGtleWJvYXJkOmgoImtleWJvYXJkIiw2MDAwNSksdGFnOmgoInRhZyIsNjAwMDYpLGdpdFB1bGxSZXF1ZXN0TGFiZWw6aCgiZ2l0LXB1bGwtcmVxdWVzdC1sYWJlbCIsNjAwMDYpLHRhZ0FkZDpoKCJ0YWctYWRkIiw2MDAwNiksdGFnUmVtb3ZlOmgoInRhZy1yZW1vdmUiLDYwMDA2KSxwZXJzb246aCgicGVyc29uIiw2MDAwNykscGVyc29uRm9sbG93OmgoInBlcnNvbi1mb2xsb3ciLDYwMDA3KSxwZXJzb25PdXRsaW5lOmgoInBlcnNvbi1vdXRsaW5lIiw2MDAwNykscGVyc29uRmlsbGVkOmgoInBlcnNvbi1maWxsZWQiLDYwMDA3KSxnaXRCcmFuY2g6aCgiZ2l0LWJyYW5jaCIsNjAwMDgpLGdpdEJyYW5jaENyZWF0ZTpoKCJnaXQtYnJhbmNoLWNyZWF0ZSIsNjAwMDgpLGdpdEJyYW5jaERlbGV0ZTpoKCJnaXQtYnJhbmNoLWRlbGV0ZSIsNjAwMDgpLHNvdXJjZUNvbnRyb2w6aCgic291cmNlLWNvbnRyb2wiLDYwMDA4KSxtaXJyb3I6aCgibWlycm9yIiw2MDAwOSksbWlycm9yUHVibGljOmgoIm1pcnJvci1wdWJsaWMiLDYwMDA5KSxzdGFyOmgoInN0YXIiLDYwMDEwKSxzdGFyQWRkOmgoInN0YXItYWRkIiw2MDAxMCksc3RhckRlbGV0ZTpoKCJzdGFyLWRlbGV0ZSIsNjAwMTApLHN0YXJFbXB0eTpoKCJzdGFyLWVtcHR5Iiw2MDAxMCksY29tbWVudDpoKCJjb21tZW50Iiw2MDAxMSksY29tbWVudEFkZDpoKCJjb21tZW50LWFkZCIsNjAwMTEpLGFsZXJ0OmgoImFsZXJ0Iiw2MDAxMiksd2FybmluZzpoKCJ3YXJuaW5nIiw2MDAxMiksc2VhcmNoOmgoInNlYXJjaCIsNjAwMTMpLHNlYXJjaFNhdmU6aCgic2VhcmNoLXNhdmUiLDYwMDEzKSxsb2dPdXQ6aCgibG9nLW91dCIsNjAwMTQpLHNpZ25PdXQ6aCgic2lnbi1vdXQiLDYwMDE0KSxsb2dJbjpoKCJsb2ctaW4iLDYwMDE1KSxzaWduSW46aCgic2lnbi1pbiIsNjAwMTUpLGV5ZTpoKCJleWUiLDYwMDE2KSxleWVVbndhdGNoOmgoImV5ZS11bndhdGNoIiw2MDAxNiksZXllV2F0Y2g6aCgiZXllLXdhdGNoIiw2MDAxNiksY2lyY2xlRmlsbGVkOmgoImNpcmNsZS1maWxsZWQiLDYwMDE3KSxwcmltaXRpdmVEb3Q6aCgicHJpbWl0aXZlLWRvdCIsNjAwMTcpLGNsb3NlRGlydHk6aCgiY2xvc2UtZGlydHkiLDYwMDE3KSxkZWJ1Z0JyZWFrcG9pbnQ6aCgiZGVidWctYnJlYWtwb2ludCIsNjAwMTcpLGRlYnVnQnJlYWtwb2ludERpc2FibGVkOmgoImRlYnVnLWJyZWFrcG9pbnQtZGlzYWJsZWQiLDYwMDE3KSxkZWJ1Z0hpbnQ6aCgiZGVidWctaGludCIsNjAwMTcpLHRlcm1pbmFsRGVjb3JhdGlvblN1Y2Nlc3M6aCgidGVybWluYWwtZGVjb3JhdGlvbi1zdWNjZXNzIiw2MDAxNykscHJpbWl0aXZlU3F1YXJlOmgoInByaW1pdGl2ZS1zcXVhcmUiLDYwMDE4KSxlZGl0OmgoImVkaXQiLDYwMDE5KSxwZW5jaWw6aCgicGVuY2lsIiw2MDAxOSksaW5mbzpoKCJpbmZvIiw2MDAyMCksaXNzdWVPcGVuZWQ6aCgiaXNzdWUtb3BlbmVkIiw2MDAyMCksZ2lzdFByaXZhdGU6aCgiZ2lzdC1wcml2YXRlIiw2MDAyMSksZ2l0Rm9ya1ByaXZhdGU6aCgiZ2l0LWZvcmstcHJpdmF0ZSIsNjAwMjEpLGxvY2s6aCgibG9jayIsNjAwMjEpLG1pcnJvclByaXZhdGU6aCgibWlycm9yLXByaXZhdGUiLDYwMDIxKSxjbG9zZTpoKCJjbG9zZSIsNjAwMjIpLHJlbW92ZUNsb3NlOmgoInJlbW92ZS1jbG9zZSIsNjAwMjIpLHg6aCgieCIsNjAwMjIpLHJlcG9TeW5jOmgoInJlcG8tc3luYyIsNjAwMjMpLHN5bmM6aCgic3luYyIsNjAwMjMpLGNsb25lOmgoImNsb25lIiw2MDAyNCksZGVza3RvcERvd25sb2FkOmgoImRlc2t0b3AtZG93bmxvYWQiLDYwMDI0KSxiZWFrZXI6aCgiYmVha2VyIiw2MDAyNSksbWljcm9zY29wZTpoKCJtaWNyb3Njb3BlIiw2MDAyNSksdm06aCgidm0iLDYwMDI2KSxkZXZpY2VEZXNrdG9wOmgoImRldmljZS1kZXNrdG9wIiw2MDAyNiksZmlsZTpoKCJmaWxlIiw2MDAyNyksZmlsZVRleHQ6aCgiZmlsZS10ZXh0Iiw2MDAyNyksbW9yZTpoKCJtb3JlIiw2MDAyOCksZWxsaXBzaXM6aCgiZWxsaXBzaXMiLDYwMDI4KSxrZWJhYkhvcml6b250YWw6aCgia2ViYWItaG9yaXpvbnRhbCIsNjAwMjgpLG1haWxSZXBseTpoKCJtYWlsLXJlcGx5Iiw2MDAyOSkscmVwbHk6aCgicmVwbHkiLDYwMDI5KSxvcmdhbml6YXRpb246aCgib3JnYW5pemF0aW9uIiw2MDAzMCksb3JnYW5pemF0aW9uRmlsbGVkOmgoIm9yZ2FuaXphdGlvbi1maWxsZWQiLDYwMDMwKSxvcmdhbml6YXRpb25PdXRsaW5lOmgoIm9yZ2FuaXphdGlvbi1vdXRsaW5lIiw2MDAzMCksbmV3RmlsZTpoKCJuZXctZmlsZSIsNjAwMzEpLGZpbGVBZGQ6aCgiZmlsZS1hZGQiLDYwMDMxKSxuZXdGb2xkZXI6aCgibmV3LWZvbGRlciIsNjAwMzIpLGZpbGVEaXJlY3RvcnlDcmVhdGU6aCgiZmlsZS1kaXJlY3RvcnktY3JlYXRlIiw2MDAzMiksdHJhc2g6aCgidHJhc2giLDYwMDMzKSx0cmFzaGNhbjpoKCJ0cmFzaGNhbiIsNjAwMzMpLGhpc3Rvcnk6aCgiaGlzdG9yeSIsNjAwMzQpLGNsb2NrOmgoImNsb2NrIiw2MDAzNCksZm9sZGVyOmgoImZvbGRlciIsNjAwMzUpLGZpbGVEaXJlY3Rvcnk6aCgiZmlsZS1kaXJlY3RvcnkiLDYwMDM1KSxzeW1ib2xGb2xkZXI6aCgic3ltYm9sLWZvbGRlciIsNjAwMzUpLGxvZ29HaXRodWI6aCgibG9nby1naXRodWIiLDYwMDM2KSxtYXJrR2l0aHViOmgoIm1hcmstZ2l0aHViIiw2MDAzNiksZ2l0aHViOmgoImdpdGh1YiIsNjAwMzYpLHRlcm1pbmFsOmgoInRlcm1pbmFsIiw2MDAzNyksY29uc29sZTpoKCJjb25zb2xlIiw2MDAzNykscmVwbDpoKCJyZXBsIiw2MDAzNyksemFwOmgoInphcCIsNjAwMzgpLHN5bWJvbEV2ZW50OmgoInN5bWJvbC1ldmVudCIsNjAwMzgpLGVycm9yOmgoImVycm9yIiw2MDAzOSksc3RvcDpoKCJzdG9wIiw2MDAzOSksdmFyaWFibGU6aCgidmFyaWFibGUiLDYwMDQwKSxzeW1ib2xWYXJpYWJsZTpoKCJzeW1ib2wtdmFyaWFibGUiLDYwMDQwKSxhcnJheTpoKCJhcnJheSIsNjAwNDIpLHN5bWJvbEFycmF5OmgoInN5bWJvbC1hcnJheSIsNjAwNDIpLHN5bWJvbE1vZHVsZTpoKCJzeW1ib2wtbW9kdWxlIiw2MDA0Myksc3ltYm9sUGFja2FnZTpoKCJzeW1ib2wtcGFja2FnZSIsNjAwNDMpLHN5bWJvbE5hbWVzcGFjZTpoKCJzeW1ib2wtbmFtZXNwYWNlIiw2MDA0Myksc3ltYm9sT2JqZWN0OmgoInN5bWJvbC1vYmplY3QiLDYwMDQzKSxzeW1ib2xNZXRob2Q6aCgic3ltYm9sLW1ldGhvZCIsNjAwNDQpLHN5bWJvbEZ1bmN0aW9uOmgoInN5bWJvbC1mdW5jdGlvbiIsNjAwNDQpLHN5bWJvbENvbnN0cnVjdG9yOmgoInN5bWJvbC1jb25zdHJ1Y3RvciIsNjAwNDQpLHN5bWJvbEJvb2xlYW46aCgic3ltYm9sLWJvb2xlYW4iLDYwMDQ3KSxzeW1ib2xOdWxsOmgoInN5bWJvbC1udWxsIiw2MDA0Nyksc3ltYm9sTnVtZXJpYzpoKCJzeW1ib2wtbnVtZXJpYyIsNjAwNDgpLHN5bWJvbE51bWJlcjpoKCJzeW1ib2wtbnVtYmVyIiw2MDA0OCksc3ltYm9sU3RydWN0dXJlOmgoInN5bWJvbC1zdHJ1Y3R1cmUiLDYwMDQ5KSxzeW1ib2xTdHJ1Y3Q6aCgic3ltYm9sLXN0cnVjdCIsNjAwNDkpLHN5bWJvbFBhcmFtZXRlcjpoKCJzeW1ib2wtcGFyYW1ldGVyIiw2MDA1MCksc3ltYm9sVHlwZVBhcmFtZXRlcjpoKCJzeW1ib2wtdHlwZS1wYXJhbWV0ZXIiLDYwMDUwKSxzeW1ib2xLZXk6aCgic3ltYm9sLWtleSIsNjAwNTEpLHN5bWJvbFRleHQ6aCgic3ltYm9sLXRleHQiLDYwMDUxKSxzeW1ib2xSZWZlcmVuY2U6aCgic3ltYm9sLXJlZmVyZW5jZSIsNjAwNTIpLGdvVG9GaWxlOmgoImdvLXRvLWZpbGUiLDYwMDUyKSxzeW1ib2xFbnVtOmgoInN5bWJvbC1lbnVtIiw2MDA1Myksc3ltYm9sVmFsdWU6aCgic3ltYm9sLXZhbHVlIiw2MDA1Myksc3ltYm9sUnVsZXI6aCgic3ltYm9sLXJ1bGVyIiw2MDA1NCksc3ltYm9sVW5pdDpoKCJzeW1ib2wtdW5pdCIsNjAwNTQpLGFjdGl2YXRlQnJlYWtwb2ludHM6aCgiYWN0aXZhdGUtYnJlYWtwb2ludHMiLDYwMDU1KSxhcmNoaXZlOmgoImFyY2hpdmUiLDYwMDU2KSxhcnJvd0JvdGg6aCgiYXJyb3ctYm90aCIsNjAwNTcpLGFycm93RG93bjpoKCJhcnJvdy1kb3duIiw2MDA1OCksYXJyb3dMZWZ0OmgoImFycm93LWxlZnQiLDYwMDU5KSxhcnJvd1JpZ2h0OmgoImFycm93LXJpZ2h0Iiw2MDA2MCksYXJyb3dTbWFsbERvd246aCgiYXJyb3ctc21hbGwtZG93biIsNjAwNjEpLGFycm93U21hbGxMZWZ0OmgoImFycm93LXNtYWxsLWxlZnQiLDYwMDYyKSxhcnJvd1NtYWxsUmlnaHQ6aCgiYXJyb3ctc21hbGwtcmlnaHQiLDYwMDYzKSxhcnJvd1NtYWxsVXA6aCgiYXJyb3ctc21hbGwtdXAiLDYwMDY0KSxhcnJvd1VwOmgoImFycm93LXVwIiw2MDA2NSksYmVsbDpoKCJiZWxsIiw2MDA2NiksYm9sZDpoKCJib2xkIiw2MDA2NyksYm9vazpoKCJib29rIiw2MDA2OCksYm9va21hcms6aCgiYm9va21hcmsiLDYwMDY5KSxkZWJ1Z0JyZWFrcG9pbnRDb25kaXRpb25hbFVudmVyaWZpZWQ6aCgiZGVidWctYnJlYWtwb2ludC1jb25kaXRpb25hbC11bnZlcmlmaWVkIiw2MDA3MCksZGVidWdCcmVha3BvaW50Q29uZGl0aW9uYWw6aCgiZGVidWctYnJlYWtwb2ludC1jb25kaXRpb25hbCIsNjAwNzEpLGRlYnVnQnJlYWtwb2ludENvbmRpdGlvbmFsRGlzYWJsZWQ6aCgiZGVidWctYnJlYWtwb2ludC1jb25kaXRpb25hbC1kaXNhYmxlZCIsNjAwNzEpLGRlYnVnQnJlYWtwb2ludERhdGFVbnZlcmlmaWVkOmgoImRlYnVnLWJyZWFrcG9pbnQtZGF0YS11bnZlcmlmaWVkIiw2MDA3MiksZGVidWdCcmVha3BvaW50RGF0YTpoKCJkZWJ1Zy1icmVha3BvaW50LWRhdGEiLDYwMDczKSxkZWJ1Z0JyZWFrcG9pbnREYXRhRGlzYWJsZWQ6aCgiZGVidWctYnJlYWtwb2ludC1kYXRhLWRpc2FibGVkIiw2MDA3MyksZGVidWdCcmVha3BvaW50TG9nVW52ZXJpZmllZDpoKCJkZWJ1Zy1icmVha3BvaW50LWxvZy11bnZlcmlmaWVkIiw2MDA3NCksZGVidWdCcmVha3BvaW50TG9nOmgoImRlYnVnLWJyZWFrcG9pbnQtbG9nIiw2MDA3NSksZGVidWdCcmVha3BvaW50TG9nRGlzYWJsZWQ6aCgiZGVidWctYnJlYWtwb2ludC1sb2ctZGlzYWJsZWQiLDYwMDc1KSxicmllZmNhc2U6aCgiYnJpZWZjYXNlIiw2MDA3NiksYnJvYWRjYXN0OmgoImJyb2FkY2FzdCIsNjAwNzcpLGJyb3dzZXI6aCgiYnJvd3NlciIsNjAwNzgpLGJ1ZzpoKCJidWciLDYwMDc5KSxjYWxlbmRhcjpoKCJjYWxlbmRhciIsNjAwODApLGNhc2VTZW5zaXRpdmU6aCgiY2FzZS1zZW5zaXRpdmUiLDYwMDgxKSxjaGVjazpoKCJjaGVjayIsNjAwODIpLGNoZWNrbGlzdDpoKCJjaGVja2xpc3QiLDYwMDgzKSxjaGV2cm9uRG93bjpoKCJjaGV2cm9uLWRvd24iLDYwMDg0KSxjaGV2cm9uTGVmdDpoKCJjaGV2cm9uLWxlZnQiLDYwMDg1KSxjaGV2cm9uUmlnaHQ6aCgiY2hldnJvbi1yaWdodCIsNjAwODYpLGNoZXZyb25VcDpoKCJjaGV2cm9uLXVwIiw2MDA4NyksY2hyb21lQ2xvc2U6aCgiY2hyb21lLWNsb3NlIiw2MDA4OCksY2hyb21lTWF4aW1pemU6aCgiY2hyb21lLW1heGltaXplIiw2MDA4OSksY2hyb21lTWluaW1pemU6aCgiY2hyb21lLW1pbmltaXplIiw2MDA5MCksY2hyb21lUmVzdG9yZTpoKCJjaHJvbWUtcmVzdG9yZSIsNjAwOTEpLGNpcmNsZU91dGxpbmU6aCgiY2lyY2xlLW91dGxpbmUiLDYwMDkyKSxjaXJjbGU6aCgiY2lyY2xlIiw2MDA5MiksZGVidWdCcmVha3BvaW50VW52ZXJpZmllZDpoKCJkZWJ1Zy1icmVha3BvaW50LXVudmVyaWZpZWQiLDYwMDkyKSx0ZXJtaW5hbERlY29yYXRpb25JbmNvbXBsZXRlOmgoInRlcm1pbmFsLWRlY29yYXRpb24taW5jb21wbGV0ZSIsNjAwOTIpLGNpcmNsZVNsYXNoOmgoImNpcmNsZS1zbGFzaCIsNjAwOTMpLGNpcmN1aXRCb2FyZDpoKCJjaXJjdWl0LWJvYXJkIiw2MDA5NCksY2xlYXJBbGw6aCgiY2xlYXItYWxsIiw2MDA5NSksY2xpcHB5OmgoImNsaXBweSIsNjAwOTYpLGNsb3NlQWxsOmgoImNsb3NlLWFsbCIsNjAwOTcpLGNsb3VkRG93bmxvYWQ6aCgiY2xvdWQtZG93bmxvYWQiLDYwMDk4KSxjbG91ZFVwbG9hZDpoKCJjbG91ZC11cGxvYWQiLDYwMDk5KSxjb2RlOmgoImNvZGUiLDYwMTAwKSxjb2xsYXBzZUFsbDpoKCJjb2xsYXBzZS1hbGwiLDYwMTAxKSxjb2xvck1vZGU6aCgiY29sb3ItbW9kZSIsNjAxMDIpLGNvbW1lbnREaXNjdXNzaW9uOmgoImNvbW1lbnQtZGlzY3Vzc2lvbiIsNjAxMDMpLGNyZWRpdENhcmQ6aCgiY3JlZGl0LWNhcmQiLDYwMTA1KSxkYXNoOmgoImRhc2giLDYwMTA4KSxkYXNoYm9hcmQ6aCgiZGFzaGJvYXJkIiw2MDEwOSksZGF0YWJhc2U6aCgiZGF0YWJhc2UiLDYwMTEwKSxkZWJ1Z0NvbnRpbnVlOmgoImRlYnVnLWNvbnRpbnVlIiw2MDExMSksZGVidWdEaXNjb25uZWN0OmgoImRlYnVnLWRpc2Nvbm5lY3QiLDYwMTEyKSxkZWJ1Z1BhdXNlOmgoImRlYnVnLXBhdXNlIiw2MDExMyksZGVidWdSZXN0YXJ0OmgoImRlYnVnLXJlc3RhcnQiLDYwMTE0KSxkZWJ1Z1N0YXJ0OmgoImRlYnVnLXN0YXJ0Iiw2MDExNSksZGVidWdTdGVwSW50bzpoKCJkZWJ1Zy1zdGVwLWludG8iLDYwMTE2KSxkZWJ1Z1N0ZXBPdXQ6aCgiZGVidWctc3RlcC1vdXQiLDYwMTE3KSxkZWJ1Z1N0ZXBPdmVyOmgoImRlYnVnLXN0ZXAtb3ZlciIsNjAxMTgpLGRlYnVnU3RvcDpoKCJkZWJ1Zy1zdG9wIiw2MDExOSksZGVidWc6aCgiZGVidWciLDYwMTIwKSxkZXZpY2VDYW1lcmFWaWRlbzpoKCJkZXZpY2UtY2FtZXJhLXZpZGVvIiw2MDEyMSksZGV2aWNlQ2FtZXJhOmgoImRldmljZS1jYW1lcmEiLDYwMTIyKSxkZXZpY2VNb2JpbGU6aCgiZGV2aWNlLW1vYmlsZSIsNjAxMjMpLGRpZmZBZGRlZDpoKCJkaWZmLWFkZGVkIiw2MDEyNCksZGlmZklnbm9yZWQ6aCgiZGlmZi1pZ25vcmVkIiw2MDEyNSksZGlmZk1vZGlmaWVkOmgoImRpZmYtbW9kaWZpZWQiLDYwMTI2KSxkaWZmUmVtb3ZlZDpoKCJkaWZmLXJlbW92ZWQiLDYwMTI3KSxkaWZmUmVuYW1lZDpoKCJkaWZmLXJlbmFtZWQiLDYwMTI4KSxkaWZmOmgoImRpZmYiLDYwMTI5KSxkaWZmU2lkZWJ5c2lkZTpoKCJkaWZmLXNpZGVieXNpZGUiLDYwMTI5KSxkaXNjYXJkOmgoImRpc2NhcmQiLDYwMTMwKSxlZGl0b3JMYXlvdXQ6aCgiZWRpdG9yLWxheW91dCIsNjAxMzEpLGVtcHR5V2luZG93OmgoImVtcHR5LXdpbmRvdyIsNjAxMzIpLGV4Y2x1ZGU6aCgiZXhjbHVkZSIsNjAxMzMpLGV4dGVuc2lvbnM6aCgiZXh0ZW5zaW9ucyIsNjAxMzQpLGV5ZUNsb3NlZDpoKCJleWUtY2xvc2VkIiw2MDEzNSksZmlsZUJpbmFyeTpoKCJmaWxlLWJpbmFyeSIsNjAxMzYpLGZpbGVDb2RlOmgoImZpbGUtY29kZSIsNjAxMzcpLGZpbGVNZWRpYTpoKCJmaWxlLW1lZGlhIiw2MDEzOCksZmlsZVBkZjpoKCJmaWxlLXBkZiIsNjAxMzkpLGZpbGVTdWJtb2R1bGU6aCgiZmlsZS1zdWJtb2R1bGUiLDYwMTQwKSxmaWxlU3ltbGlua0RpcmVjdG9yeTpoKCJmaWxlLXN5bWxpbmstZGlyZWN0b3J5Iiw2MDE0MSksZmlsZVN5bWxpbmtGaWxlOmgoImZpbGUtc3ltbGluay1maWxlIiw2MDE0MiksZmlsZVppcDpoKCJmaWxlLXppcCIsNjAxNDMpLGZpbGVzOmgoImZpbGVzIiw2MDE0NCksZmlsdGVyOmgoImZpbHRlciIsNjAxNDUpLGZsYW1lOmgoImZsYW1lIiw2MDE0NiksZm9sZERvd246aCgiZm9sZC1kb3duIiw2MDE0NyksZm9sZFVwOmgoImZvbGQtdXAiLDYwMTQ4KSxmb2xkOmgoImZvbGQiLDYwMTQ5KSxmb2xkZXJBY3RpdmU6aCgiZm9sZGVyLWFjdGl2ZSIsNjAxNTApLGZvbGRlck9wZW5lZDpoKCJmb2xkZXItb3BlbmVkIiw2MDE1MSksZ2VhcjpoKCJnZWFyIiw2MDE1MiksZ2lmdDpoKCJnaWZ0Iiw2MDE1MyksZ2lzdFNlY3JldDpoKCJnaXN0LXNlY3JldCIsNjAxNTQpLGdpc3Q6aCgiZ2lzdCIsNjAxNTUpLGdpdENvbW1pdDpoKCJnaXQtY29tbWl0Iiw2MDE1NiksZ2l0Q29tcGFyZTpoKCJnaXQtY29tcGFyZSIsNjAxNTcpLGNvbXBhcmVDaGFuZ2VzOmgoImNvbXBhcmUtY2hhbmdlcyIsNjAxNTcpLGdpdE1lcmdlOmgoImdpdC1tZXJnZSIsNjAxNTgpLGdpdGh1YkFjdGlvbjpoKCJnaXRodWItYWN0aW9uIiw2MDE1OSksZ2l0aHViQWx0OmgoImdpdGh1Yi1hbHQiLDYwMTYwKSxnbG9iZTpoKCJnbG9iZSIsNjAxNjEpLGdyYWJiZXI6aCgiZ3JhYmJlciIsNjAxNjIpLGdyYXBoOmgoImdyYXBoIiw2MDE2MyksZ3JpcHBlcjpoKCJncmlwcGVyIiw2MDE2NCksaGVhcnQ6aCgiaGVhcnQiLDYwMTY1KSxob21lOmgoImhvbWUiLDYwMTY2KSxob3Jpem9udGFsUnVsZTpoKCJob3Jpem9udGFsLXJ1bGUiLDYwMTY3KSxodWJvdDpoKCJodWJvdCIsNjAxNjgpLGluYm94OmgoImluYm94Iiw2MDE2OSksaXNzdWVSZW9wZW5lZDpoKCJpc3N1ZS1yZW9wZW5lZCIsNjAxNzEpLGlzc3VlczpoKCJpc3N1ZXMiLDYwMTcyKSxpdGFsaWM6aCgiaXRhbGljIiw2MDE3MyksamVyc2V5OmgoImplcnNleSIsNjAxNzQpLGpzb246aCgianNvbiIsNjAxNzUpLGtlYmFiVmVydGljYWw6aCgia2ViYWItdmVydGljYWwiLDYwMTc2KSxrZXk6aCgia2V5Iiw2MDE3NyksbGF3OmgoImxhdyIsNjAxNzgpLGxpZ2h0YnVsYkF1dG9maXg6aCgibGlnaHRidWxiLWF1dG9maXgiLDYwMTc5KSxsaW5rRXh0ZXJuYWw6aCgibGluay1leHRlcm5hbCIsNjAxODApLGxpbms6aCgibGluayIsNjAxODEpLGxpc3RPcmRlcmVkOmgoImxpc3Qtb3JkZXJlZCIsNjAxODIpLGxpc3RVbm9yZGVyZWQ6aCgibGlzdC11bm9yZGVyZWQiLDYwMTgzKSxsaXZlU2hhcmU6aCgibGl2ZS1zaGFyZSIsNjAxODQpLGxvYWRpbmc6aCgibG9hZGluZyIsNjAxODUpLGxvY2F0aW9uOmgoImxvY2F0aW9uIiw2MDE4NiksbWFpbFJlYWQ6aCgibWFpbC1yZWFkIiw2MDE4NyksbWFpbDpoKCJtYWlsIiw2MDE4OCksbWFya2Rvd246aCgibWFya2Rvd24iLDYwMTg5KSxtZWdhcGhvbmU6aCgibWVnYXBob25lIiw2MDE5MCksbWVudGlvbjpoKCJtZW50aW9uIiw2MDE5MSksbWlsZXN0b25lOmgoIm1pbGVzdG9uZSIsNjAxOTIpLGdpdFB1bGxSZXF1ZXN0TWlsZXN0b25lOmgoImdpdC1wdWxsLXJlcXVlc3QtbWlsZXN0b25lIiw2MDE5MiksbW9ydGFyQm9hcmQ6aCgibW9ydGFyLWJvYXJkIiw2MDE5MyksbW92ZTpoKCJtb3ZlIiw2MDE5NCksbXVsdGlwbGVXaW5kb3dzOmgoIm11bHRpcGxlLXdpbmRvd3MiLDYwMTk1KSxtdXRlOmgoIm11dGUiLDYwMTk2KSxub05ld2xpbmU6aCgibm8tbmV3bGluZSIsNjAxOTcpLG5vdGU6aCgibm90ZSIsNjAxOTgpLG9jdG9mYWNlOmgoIm9jdG9mYWNlIiw2MDE5OSksb3BlblByZXZpZXc6aCgib3Blbi1wcmV2aWV3Iiw2MDIwMCkscGFja2FnZTpoKCJwYWNrYWdlIiw2MDIwMSkscGFpbnRjYW46aCgicGFpbnRjYW4iLDYwMjAyKSxwaW46aCgicGluIiw2MDIwMykscGxheTpoKCJwbGF5Iiw2MDIwNCkscnVuOmgoInJ1biIsNjAyMDQpLHBsdWc6aCgicGx1ZyIsNjAyMDUpLHByZXNlcnZlQ2FzZTpoKCJwcmVzZXJ2ZS1jYXNlIiw2MDIwNikscHJldmlldzpoKCJwcmV2aWV3Iiw2MDIwNykscHJvamVjdDpoKCJwcm9qZWN0Iiw2MDIwOCkscHVsc2U6aCgicHVsc2UiLDYwMjA5KSxxdWVzdGlvbjpoKCJxdWVzdGlvbiIsNjAyMTApLHF1b3RlOmgoInF1b3RlIiw2MDIxMSkscmFkaW9Ub3dlcjpoKCJyYWRpby10b3dlciIsNjAyMTIpLHJlYWN0aW9uczpoKCJyZWFjdGlvbnMiLDYwMjEzKSxyZWZlcmVuY2VzOmgoInJlZmVyZW5jZXMiLDYwMjE0KSxyZWZyZXNoOmgoInJlZnJlc2giLDYwMjE1KSxyZWdleDpoKCJyZWdleCIsNjAyMTYpLHJlbW90ZUV4cGxvcmVyOmgoInJlbW90ZS1leHBsb3JlciIsNjAyMTcpLHJlbW90ZTpoKCJyZW1vdGUiLDYwMjE4KSxyZW1vdmU6aCgicmVtb3ZlIiw2MDIxOSkscmVwbGFjZUFsbDpoKCJyZXBsYWNlLWFsbCIsNjAyMjApLHJlcGxhY2U6aCgicmVwbGFjZSIsNjAyMjEpLHJlcG9DbG9uZTpoKCJyZXBvLWNsb25lIiw2MDIyMikscmVwb0ZvcmNlUHVzaDpoKCJyZXBvLWZvcmNlLXB1c2giLDYwMjIzKSxyZXBvUHVsbDpoKCJyZXBvLXB1bGwiLDYwMjI0KSxyZXBvUHVzaDpoKCJyZXBvLXB1c2giLDYwMjI1KSxyZXBvcnQ6aCgicmVwb3J0Iiw2MDIyNikscmVxdWVzdENoYW5nZXM6aCgicmVxdWVzdC1jaGFuZ2VzIiw2MDIyNykscm9ja2V0OmgoInJvY2tldCIsNjAyMjgpLHJvb3RGb2xkZXJPcGVuZWQ6aCgicm9vdC1mb2xkZXItb3BlbmVkIiw2MDIyOSkscm9vdEZvbGRlcjpoKCJyb290LWZvbGRlciIsNjAyMzApLHJzczpoKCJyc3MiLDYwMjMxKSxydWJ5OmgoInJ1YnkiLDYwMjMyKSxzYXZlQWxsOmgoInNhdmUtYWxsIiw2MDIzMyksc2F2ZUFzOmgoInNhdmUtYXMiLDYwMjM0KSxzYXZlOmgoInNhdmUiLDYwMjM1KSxzY3JlZW5GdWxsOmgoInNjcmVlbi1mdWxsIiw2MDIzNiksc2NyZWVuTm9ybWFsOmgoInNjcmVlbi1ub3JtYWwiLDYwMjM3KSxzZWFyY2hTdG9wOmgoInNlYXJjaC1zdG9wIiw2MDIzOCksc2VydmVyOmgoInNlcnZlciIsNjAyNDApLHNldHRpbmdzR2VhcjpoKCJzZXR0aW5ncy1nZWFyIiw2MDI0MSksc2V0dGluZ3M6aCgic2V0dGluZ3MiLDYwMjQyKSxzaGllbGQ6aCgic2hpZWxkIiw2MDI0Myksc21pbGV5OmgoInNtaWxleSIsNjAyNDQpLHNvcnRQcmVjZWRlbmNlOmgoInNvcnQtcHJlY2VkZW5jZSIsNjAyNDUpLHNwbGl0SG9yaXpvbnRhbDpoKCJzcGxpdC1ob3Jpem9udGFsIiw2MDI0Niksc3BsaXRWZXJ0aWNhbDpoKCJzcGxpdC12ZXJ0aWNhbCIsNjAyNDcpLHNxdWlycmVsOmgoInNxdWlycmVsIiw2MDI0OCksc3RhckZ1bGw6aCgic3Rhci1mdWxsIiw2MDI0OSksc3RhckhhbGY6aCgic3Rhci1oYWxmIiw2MDI1MCksc3ltYm9sQ2xhc3M6aCgic3ltYm9sLWNsYXNzIiw2MDI1MSksc3ltYm9sQ29sb3I6aCgic3ltYm9sLWNvbG9yIiw2MDI1Miksc3ltYm9sQ29uc3RhbnQ6aCgic3ltYm9sLWNvbnN0YW50Iiw2MDI1Myksc3ltYm9sRW51bU1lbWJlcjpoKCJzeW1ib2wtZW51bS1tZW1iZXIiLDYwMjU0KSxzeW1ib2xGaWVsZDpoKCJzeW1ib2wtZmllbGQiLDYwMjU1KSxzeW1ib2xGaWxlOmgoInN5bWJvbC1maWxlIiw2MDI1Niksc3ltYm9sSW50ZXJmYWNlOmgoInN5bWJvbC1pbnRlcmZhY2UiLDYwMjU3KSxzeW1ib2xLZXl3b3JkOmgoInN5bWJvbC1rZXl3b3JkIiw2MDI1OCksc3ltYm9sTWlzYzpoKCJzeW1ib2wtbWlzYyIsNjAyNTkpLHN5bWJvbE9wZXJhdG9yOmgoInN5bWJvbC1vcGVyYXRvciIsNjAyNjApLHN5bWJvbFByb3BlcnR5OmgoInN5bWJvbC1wcm9wZXJ0eSIsNjAyNjEpLHdyZW5jaDpoKCJ3cmVuY2giLDYwMjYxKSx3cmVuY2hTdWJhY3Rpb246aCgid3JlbmNoLXN1YmFjdGlvbiIsNjAyNjEpLHN5bWJvbFNuaXBwZXQ6aCgic3ltYm9sLXNuaXBwZXQiLDYwMjYyKSx0YXNrbGlzdDpoKCJ0YXNrbGlzdCIsNjAyNjMpLHRlbGVzY29wZTpoKCJ0ZWxlc2NvcGUiLDYwMjY0KSx0ZXh0U2l6ZTpoKCJ0ZXh0LXNpemUiLDYwMjY1KSx0aHJlZUJhcnM6aCgidGhyZWUtYmFycyIsNjAyNjYpLHRodW1ic2Rvd246aCgidGh1bWJzZG93biIsNjAyNjcpLHRodW1ic3VwOmgoInRodW1ic3VwIiw2MDI2OCksdG9vbHM6aCgidG9vbHMiLDYwMjY5KSx0cmlhbmdsZURvd246aCgidHJpYW5nbGUtZG93biIsNjAyNzApLHRyaWFuZ2xlTGVmdDpoKCJ0cmlhbmdsZS1sZWZ0Iiw2MDI3MSksdHJpYW5nbGVSaWdodDpoKCJ0cmlhbmdsZS1yaWdodCIsNjAyNzIpLHRyaWFuZ2xlVXA6aCgidHJpYW5nbGUtdXAiLDYwMjczKSx0d2l0dGVyOmgoInR3aXR0ZXIiLDYwMjc0KSx1bmZvbGQ6aCgidW5mb2xkIiw2MDI3NSksdW5sb2NrOmgoInVubG9jayIsNjAyNzYpLHVubXV0ZTpoKCJ1bm11dGUiLDYwMjc3KSx1bnZlcmlmaWVkOmgoInVudmVyaWZpZWQiLDYwMjc4KSx2ZXJpZmllZDpoKCJ2ZXJpZmllZCIsNjAyNzkpLHZlcnNpb25zOmgoInZlcnNpb25zIiw2MDI4MCksdm1BY3RpdmU6aCgidm0tYWN0aXZlIiw2MDI4MSksdm1PdXRsaW5lOmgoInZtLW91dGxpbmUiLDYwMjgyKSx2bVJ1bm5pbmc6aCgidm0tcnVubmluZyIsNjAyODMpLHdhdGNoOmgoIndhdGNoIiw2MDI4NCksd2hpdGVzcGFjZTpoKCJ3aGl0ZXNwYWNlIiw2MDI4NSksd2hvbGVXb3JkOmgoIndob2xlLXdvcmQiLDYwMjg2KSx3aW5kb3c6aCgid2luZG93Iiw2MDI4Nyksd29yZFdyYXA6aCgid29yZC13cmFwIiw2MDI4OCksem9vbUluOmgoInpvb20taW4iLDYwMjg5KSx6b29tT3V0OmgoInpvb20tb3V0Iiw2MDI5MCksbGlzdEZpbHRlcjpoKCJsaXN0LWZpbHRlciIsNjAyOTEpLGxpc3RGbGF0OmgoImxpc3QtZmxhdCIsNjAyOTIpLGxpc3RTZWxlY3Rpb246aCgibGlzdC1zZWxlY3Rpb24iLDYwMjkzKSxzZWxlY3Rpb246aCgic2VsZWN0aW9uIiw2MDI5MyksbGlzdFRyZWU6aCgibGlzdC10cmVlIiw2MDI5NCksZGVidWdCcmVha3BvaW50RnVuY3Rpb25VbnZlcmlmaWVkOmgoImRlYnVnLWJyZWFrcG9pbnQtZnVuY3Rpb24tdW52ZXJpZmllZCIsNjAyOTUpLGRlYnVnQnJlYWtwb2ludEZ1bmN0aW9uOmgoImRlYnVnLWJyZWFrcG9pbnQtZnVuY3Rpb24iLDYwMjk2KSxkZWJ1Z0JyZWFrcG9pbnRGdW5jdGlvbkRpc2FibGVkOmgoImRlYnVnLWJyZWFrcG9pbnQtZnVuY3Rpb24tZGlzYWJsZWQiLDYwMjk2KSxkZWJ1Z1N0YWNrZnJhbWVBY3RpdmU6aCgiZGVidWctc3RhY2tmcmFtZS1hY3RpdmUiLDYwMjk3KSxjaXJjbGVTbWFsbEZpbGxlZDpoKCJjaXJjbGUtc21hbGwtZmlsbGVkIiw2MDI5OCksZGVidWdTdGFja2ZyYW1lRG90OmgoImRlYnVnLXN0YWNrZnJhbWUtZG90Iiw2MDI5OCksdGVybWluYWxEZWNvcmF0aW9uTWFyazpoKCJ0ZXJtaW5hbC1kZWNvcmF0aW9uLW1hcmsiLDYwMjk4KSxkZWJ1Z1N0YWNrZnJhbWU6aCgiZGVidWctc3RhY2tmcmFtZSIsNjAyOTkpLGRlYnVnU3RhY2tmcmFtZUZvY3VzZWQ6aCgiZGVidWctc3RhY2tmcmFtZS1mb2N1c2VkIiw2MDI5OSksZGVidWdCcmVha3BvaW50VW5zdXBwb3J0ZWQ6aCgiZGVidWctYnJlYWtwb2ludC11bnN1cHBvcnRlZCIsNjAzMDApLHN5bWJvbFN0cmluZzpoKCJzeW1ib2wtc3RyaW5nIiw2MDMwMSksZGVidWdSZXZlcnNlQ29udGludWU6aCgiZGVidWctcmV2ZXJzZS1jb250aW51ZSIsNjAzMDIpLGRlYnVnU3RlcEJhY2s6aCgiZGVidWctc3RlcC1iYWNrIiw2MDMwMyksZGVidWdSZXN0YXJ0RnJhbWU6aCgiZGVidWctcmVzdGFydC1mcmFtZSIsNjAzMDQpLGRlYnVnQWx0OmgoImRlYnVnLWFsdCIsNjAzMDUpLGNhbGxJbmNvbWluZzpoKCJjYWxsLWluY29taW5nIiw2MDMwNiksY2FsbE91dGdvaW5nOmgoImNhbGwtb3V0Z29pbmciLDYwMzA3KSxtZW51OmgoIm1lbnUiLDYwMzA4KSxleHBhbmRBbGw6aCgiZXhwYW5kLWFsbCIsNjAzMDkpLGZlZWRiYWNrOmgoImZlZWRiYWNrIiw2MDMxMCksZ2l0UHVsbFJlcXVlc3RSZXZpZXdlcjpoKCJnaXQtcHVsbC1yZXF1ZXN0LXJldmlld2VyIiw2MDMxMCksZ3JvdXBCeVJlZlR5cGU6aCgiZ3JvdXAtYnktcmVmLXR5cGUiLDYwMzExKSx1bmdyb3VwQnlSZWZUeXBlOmgoInVuZ3JvdXAtYnktcmVmLXR5cGUiLDYwMzEyKSxhY2NvdW50OmgoImFjY291bnQiLDYwMzEzKSxnaXRQdWxsUmVxdWVzdEFzc2lnbmVlOmgoImdpdC1wdWxsLXJlcXVlc3QtYXNzaWduZWUiLDYwMzEzKSxiZWxsRG90OmgoImJlbGwtZG90Iiw2MDMxNCksZGVidWdDb25zb2xlOmgoImRlYnVnLWNvbnNvbGUiLDYwMzE1KSxsaWJyYXJ5OmgoImxpYnJhcnkiLDYwMzE2KSxvdXRwdXQ6aCgib3V0cHV0Iiw2MDMxNykscnVuQWxsOmgoInJ1bi1hbGwiLDYwMzE4KSxzeW5jSWdub3JlZDpoKCJzeW5jLWlnbm9yZWQiLDYwMzE5KSxwaW5uZWQ6aCgicGlubmVkIiw2MDMyMCksZ2l0aHViSW52ZXJ0ZWQ6aCgiZ2l0aHViLWludmVydGVkIiw2MDMyMSksc2VydmVyUHJvY2VzczpoKCJzZXJ2ZXItcHJvY2VzcyIsNjAzMjIpLHNlcnZlckVudmlyb25tZW50OmgoInNlcnZlci1lbnZpcm9ubWVudCIsNjAzMjMpLHBhc3M6aCgicGFzcyIsNjAzMjQpLGlzc3VlQ2xvc2VkOmgoImlzc3VlLWNsb3NlZCIsNjAzMjQpLHN0b3BDaXJjbGU6aCgic3RvcC1jaXJjbGUiLDYwMzI1KSxwbGF5Q2lyY2xlOmgoInBsYXktY2lyY2xlIiw2MDMyNikscmVjb3JkOmgoInJlY29yZCIsNjAzMjcpLGRlYnVnQWx0U21hbGw6aCgiZGVidWctYWx0LXNtYWxsIiw2MDMyOCksdm1Db25uZWN0OmgoInZtLWNvbm5lY3QiLDYwMzI5KSxjbG91ZDpoKCJjbG91ZCIsNjAzMzApLG1lcmdlOmgoIm1lcmdlIiw2MDMzMSksZXhwb3J0OmgoImV4cG9ydCIsNjAzMzIpLGdyYXBoTGVmdDpoKCJncmFwaC1sZWZ0Iiw2MDMzMyksbWFnbmV0OmgoIm1hZ25ldCIsNjAzMzQpLG5vdGVib29rOmgoIm5vdGVib29rIiw2MDMzNSkscmVkbzpoKCJyZWRvIiw2MDMzNiksY2hlY2tBbGw6aCgiY2hlY2stYWxsIiw2MDMzNykscGlubmVkRGlydHk6aCgicGlubmVkLWRpcnR5Iiw2MDMzOCkscGFzc0ZpbGxlZDpoKCJwYXNzLWZpbGxlZCIsNjAzMzkpLGNpcmNsZUxhcmdlRmlsbGVkOmgoImNpcmNsZS1sYXJnZS1maWxsZWQiLDYwMzQwKSxjaXJjbGVMYXJnZTpoKCJjaXJjbGUtbGFyZ2UiLDYwMzQxKSxjaXJjbGVMYXJnZU91dGxpbmU6aCgiY2lyY2xlLWxhcmdlLW91dGxpbmUiLDYwMzQxKSxjb21iaW5lOmgoImNvbWJpbmUiLDYwMzQyKSxnYXRoZXI6aCgiZ2F0aGVyIiw2MDM0MiksdGFibGU6aCgidGFibGUiLDYwMzQzKSx2YXJpYWJsZUdyb3VwOmgoInZhcmlhYmxlLWdyb3VwIiw2MDM0NCksdHlwZUhpZXJhcmNoeTpoKCJ0eXBlLWhpZXJhcmNoeSIsNjAzNDUpLHR5cGVIaWVyYXJjaHlTdWI6aCgidHlwZS1oaWVyYXJjaHktc3ViIiw2MDM0NiksdHlwZUhpZXJhcmNoeVN1cGVyOmgoInR5cGUtaGllcmFyY2h5LXN1cGVyIiw2MDM0NyksZ2l0UHVsbFJlcXVlc3RDcmVhdGU6aCgiZ2l0LXB1bGwtcmVxdWVzdC1jcmVhdGUiLDYwMzQ4KSxydW5BYm92ZTpoKCJydW4tYWJvdmUiLDYwMzQ5KSxydW5CZWxvdzpoKCJydW4tYmVsb3ciLDYwMzUwKSxub3RlYm9va1RlbXBsYXRlOmgoIm5vdGVib29rLXRlbXBsYXRlIiw2MDM1MSksZGVidWdSZXJ1bjpoKCJkZWJ1Zy1yZXJ1biIsNjAzNTIpLHdvcmtzcGFjZVRydXN0ZWQ6aCgid29ya3NwYWNlLXRydXN0ZWQiLDYwMzUzKSx3b3Jrc3BhY2VVbnRydXN0ZWQ6aCgid29ya3NwYWNlLXVudHJ1c3RlZCIsNjAzNTQpLHdvcmtzcGFjZVVua25vd246aCgid29ya3NwYWNlLXVua25vd24iLDYwMzU1KSx0ZXJtaW5hbENtZDpoKCJ0ZXJtaW5hbC1jbWQiLDYwMzU2KSx0ZXJtaW5hbERlYmlhbjpoKCJ0ZXJtaW5hbC1kZWJpYW4iLDYwMzU3KSx0ZXJtaW5hbExpbnV4OmgoInRlcm1pbmFsLWxpbnV4Iiw2MDM1OCksdGVybWluYWxQb3dlcnNoZWxsOmgoInRlcm1pbmFsLXBvd2Vyc2hlbGwiLDYwMzU5KSx0ZXJtaW5hbFRtdXg6aCgidGVybWluYWwtdG11eCIsNjAzNjApLHRlcm1pbmFsVWJ1bnR1OmgoInRlcm1pbmFsLXVidW50dSIsNjAzNjEpLHRlcm1pbmFsQmFzaDpoKCJ0ZXJtaW5hbC1iYXNoIiw2MDM2MiksYXJyb3dTd2FwOmgoImFycm93LXN3YXAiLDYwMzYzKSxjb3B5OmgoImNvcHkiLDYwMzY0KSxwZXJzb25BZGQ6aCgicGVyc29uLWFkZCIsNjAzNjUpLGZpbHRlckZpbGxlZDpoKCJmaWx0ZXItZmlsbGVkIiw2MDM2Niksd2FuZDpoKCJ3YW5kIiw2MDM2NyksZGVidWdMaW5lQnlMaW5lOmgoImRlYnVnLWxpbmUtYnktbGluZSIsNjAzNjgpLGluc3BlY3Q6aCgiaW5zcGVjdCIsNjAzNjkpLGxheWVyczpoKCJsYXllcnMiLDYwMzcwKSxsYXllcnNEb3Q6aCgibGF5ZXJzLWRvdCIsNjAzNzEpLGxheWVyc0FjdGl2ZTpoKCJsYXllcnMtYWN0aXZlIiw2MDM3MiksY29tcGFzczpoKCJjb21wYXNzIiw2MDM3MyksY29tcGFzc0RvdDpoKCJjb21wYXNzLWRvdCIsNjAzNzQpLGNvbXBhc3NBY3RpdmU6aCgiY29tcGFzcy1hY3RpdmUiLDYwMzc1KSxhenVyZTpoKCJhenVyZSIsNjAzNzYpLGlzc3VlRHJhZnQ6aCgiaXNzdWUtZHJhZnQiLDYwMzc3KSxnaXRQdWxsUmVxdWVzdENsb3NlZDpoKCJnaXQtcHVsbC1yZXF1ZXN0LWNsb3NlZCIsNjAzNzgpLGdpdFB1bGxSZXF1ZXN0RHJhZnQ6aCgiZ2l0LXB1bGwtcmVxdWVzdC1kcmFmdCIsNjAzNzkpLGRlYnVnQWxsOmgoImRlYnVnLWFsbCIsNjAzODApLGRlYnVnQ292ZXJhZ2U6aCgiZGVidWctY292ZXJhZ2UiLDYwMzgxKSxydW5FcnJvcnM6aCgicnVuLWVycm9ycyIsNjAzODIpLGZvbGRlckxpYnJhcnk6aCgiZm9sZGVyLWxpYnJhcnkiLDYwMzgzKSxkZWJ1Z0NvbnRpbnVlU21hbGw6aCgiZGVidWctY29udGludWUtc21hbGwiLDYwMzg0KSxiZWFrZXJTdG9wOmgoImJlYWtlci1zdG9wIiw2MDM4NSksZ3JhcGhMaW5lOmgoImdyYXBoLWxpbmUiLDYwMzg2KSxncmFwaFNjYXR0ZXI6aCgiZ3JhcGgtc2NhdHRlciIsNjAzODcpLHBpZUNoYXJ0OmgoInBpZS1jaGFydCIsNjAzODgpLGJyYWNrZXQ6aCgiYnJhY2tldCIsNjAxNzUpLGJyYWNrZXREb3Q6aCgiYnJhY2tldC1kb3QiLDYwMzg5KSxicmFja2V0RXJyb3I6aCgiYnJhY2tldC1lcnJvciIsNjAzOTApLGxvY2tTbWFsbDpoKCJsb2NrLXNtYWxsIiw2MDM5MSksYXp1cmVEZXZvcHM6aCgiYXp1cmUtZGV2b3BzIiw2MDM5MiksdmVyaWZpZWRGaWxsZWQ6aCgidmVyaWZpZWQtZmlsbGVkIiw2MDM5MyksbmV3bGluZTpoKCJuZXdsaW5lIiw2MDM5NCksbGF5b3V0OmgoImxheW91dCIsNjAzOTUpLGxheW91dEFjdGl2aXR5YmFyTGVmdDpoKCJsYXlvdXQtYWN0aXZpdHliYXItbGVmdCIsNjAzOTYpLGxheW91dEFjdGl2aXR5YmFyUmlnaHQ6aCgibGF5b3V0LWFjdGl2aXR5YmFyLXJpZ2h0Iiw2MDM5NyksbGF5b3V0UGFuZWxMZWZ0OmgoImxheW91dC1wYW5lbC1sZWZ0Iiw2MDM5OCksbGF5b3V0UGFuZWxDZW50ZXI6aCgibGF5b3V0LXBhbmVsLWNlbnRlciIsNjAzOTkpLGxheW91dFBhbmVsSnVzdGlmeTpoKCJsYXlvdXQtcGFuZWwtanVzdGlmeSIsNjA0MDApLGxheW91dFBhbmVsUmlnaHQ6aCgibGF5b3V0LXBhbmVsLXJpZ2h0Iiw2MDQwMSksbGF5b3V0UGFuZWw6aCgibGF5b3V0LXBhbmVsIiw2MDQwMiksbGF5b3V0U2lkZWJhckxlZnQ6aCgibGF5b3V0LXNpZGViYXItbGVmdCIsNjA0MDMpLGxheW91dFNpZGViYXJSaWdodDpoKCJsYXlvdXQtc2lkZWJhci1yaWdodCIsNjA0MDQpLGxheW91dFN0YXR1c2JhcjpoKCJsYXlvdXQtc3RhdHVzYmFyIiw2MDQwNSksbGF5b3V0TWVudWJhcjpoKCJsYXlvdXQtbWVudWJhciIsNjA0MDYpLGxheW91dENlbnRlcmVkOmgoImxheW91dC1jZW50ZXJlZCIsNjA0MDcpLHRhcmdldDpoKCJ0YXJnZXQiLDYwNDA4KSxpbmRlbnQ6aCgiaW5kZW50Iiw2MDQwOSkscmVjb3JkU21hbGw6aCgicmVjb3JkLXNtYWxsIiw2MDQxMCksZXJyb3JTbWFsbDpoKCJlcnJvci1zbWFsbCIsNjA0MTEpLHRlcm1pbmFsRGVjb3JhdGlvbkVycm9yOmgoInRlcm1pbmFsLWRlY29yYXRpb24tZXJyb3IiLDYwNDExKSxhcnJvd0NpcmNsZURvd246aCgiYXJyb3ctY2lyY2xlLWRvd24iLDYwNDEyKSxhcnJvd0NpcmNsZUxlZnQ6aCgiYXJyb3ctY2lyY2xlLWxlZnQiLDYwNDEzKSxhcnJvd0NpcmNsZVJpZ2h0OmgoImFycm93LWNpcmNsZS1yaWdodCIsNjA0MTQpLGFycm93Q2lyY2xlVXA6aCgiYXJyb3ctY2lyY2xlLXVwIiw2MDQxNSksbGF5b3V0U2lkZWJhclJpZ2h0T2ZmOmgoImxheW91dC1zaWRlYmFyLXJpZ2h0LW9mZiIsNjA0MTYpLGxheW91dFBhbmVsT2ZmOmgoImxheW91dC1wYW5lbC1vZmYiLDYwNDE3KSxsYXlvdXRTaWRlYmFyTGVmdE9mZjpoKCJsYXlvdXQtc2lkZWJhci1sZWZ0LW9mZiIsNjA0MTgpLGJsYW5rOmgoImJsYW5rIiw2MDQxOSksaGVhcnRGaWxsZWQ6aCgiaGVhcnQtZmlsbGVkIiw2MDQyMCksbWFwOmgoIm1hcCIsNjA0MjEpLG1hcEhvcml6b250YWw6aCgibWFwLWhvcml6b250YWwiLDYwNDIxKSxmb2xkSG9yaXpvbnRhbDpoKCJmb2xkLWhvcml6b250YWwiLDYwNDIxKSxtYXBGaWxsZWQ6aCgibWFwLWZpbGxlZCIsNjA0MjIpLG1hcEhvcml6b250YWxGaWxsZWQ6aCgibWFwLWhvcml6b250YWwtZmlsbGVkIiw2MDQyMiksZm9sZEhvcml6b250YWxGaWxsZWQ6aCgiZm9sZC1ob3Jpem9udGFsLWZpbGxlZCIsNjA0MjIpLGNpcmNsZVNtYWxsOmgoImNpcmNsZS1zbWFsbCIsNjA0MjMpLGJlbGxTbGFzaDpoKCJiZWxsLXNsYXNoIiw2MDQyNCksYmVsbFNsYXNoRG90OmgoImJlbGwtc2xhc2gtZG90Iiw2MDQyNSksY29tbWVudFVucmVzb2x2ZWQ6aCgiY29tbWVudC11bnJlc29sdmVkIiw2MDQyNiksZ2l0UHVsbFJlcXVlc3RHb1RvQ2hhbmdlczpoKCJnaXQtcHVsbC1yZXF1ZXN0LWdvLXRvLWNoYW5nZXMiLDYwNDI3KSxnaXRQdWxsUmVxdWVzdE5ld0NoYW5nZXM6aCgiZ2l0LXB1bGwtcmVxdWVzdC1uZXctY2hhbmdlcyIsNjA0MjgpLHNlYXJjaEZ1enp5OmgoInNlYXJjaC1mdXp6eSIsNjA0MjkpLGNvbW1lbnREcmFmdDpoKCJjb21tZW50LWRyYWZ0Iiw2MDQzMCksc2VuZDpoKCJzZW5kIiw2MDQzMSksc3BhcmtsZTpoKCJzcGFya2xlIiw2MDQzMiksaW5zZXJ0OmgoImluc2VydCIsNjA0MzMpLG1pYzpoKCJtaWMiLDYwNDM0KSx0aHVtYnNkb3duRmlsbGVkOmgoInRodW1ic2Rvd24tZmlsbGVkIiw2MDQzNSksdGh1bWJzdXBGaWxsZWQ6aCgidGh1bWJzdXAtZmlsbGVkIiw2MDQzNiksY29mZmVlOmgoImNvZmZlZSIsNjA0MzcpLHNuYWtlOmgoInNuYWtlIiw2MDQzOCksZ2FtZTpoKCJnYW1lIiw2MDQzOSksdnI6aCgidnIiLDYwNDQwKSxjaGlwOmgoImNoaXAiLDYwNDQxKSxwaWFubzpoKCJwaWFubyIsNjA0NDIpLG11c2ljOmgoIm11c2ljIiw2MDQ0MyksbWljRmlsbGVkOmgoIm1pYy1maWxsZWQiLDYwNDQ0KSxyZXBvRmV0Y2g6aCgicmVwby1mZXRjaCIsNjA0NDUpLGNvcGlsb3Q6aCgiY29waWxvdCIsNjA0NDYpLGxpZ2h0YnVsYlNwYXJrbGU6aCgibGlnaHRidWxiLXNwYXJrbGUiLDYwNDQ3KSxyb2JvdDpoKCJyb2JvdCIsNjA0NDgpLHNwYXJrbGVGaWxsZWQ6aCgic3BhcmtsZS1maWxsZWQiLDYwNDQ5KSxkaWZmU2luZ2xlOmgoImRpZmYtc2luZ2xlIiw2MDQ1MCksZGlmZk11bHRpcGxlOmgoImRpZmYtbXVsdGlwbGUiLDYwNDUxKSxzdXJyb3VuZFdpdGg6aCgic3Vycm91bmQtd2l0aCIsNjA0NTIpLHNoYXJlOmgoInNoYXJlIiw2MDQ1MyksZ2l0U3Rhc2g6aCgiZ2l0LXN0YXNoIiw2MDQ1NCksZ2l0U3Rhc2hBcHBseTpoKCJnaXQtc3Rhc2gtYXBwbHkiLDYwNDU1KSxnaXRTdGFzaFBvcDpoKCJnaXQtc3Rhc2gtcG9wIiw2MDQ1NiksdnNjb2RlOmgoInZzY29kZSIsNjA0NTcpLHZzY29kZUluc2lkZXJzOmgoInZzY29kZS1pbnNpZGVycyIsNjA0NTgpLGNvZGVPc3M6aCgiY29kZS1vc3MiLDYwNDU5KSxydW5Db3ZlcmFnZTpoKCJydW4tY292ZXJhZ2UiLDYwNDYwKSxydW5BbGxDb3ZlcmFnZTpoKCJydW4tYWxsLWNvdmVyYWdlIiw2MDQ2MSksY292ZXJhZ2U6aCgiY292ZXJhZ2UiLDYwNDYyKSxnaXRodWJQcm9qZWN0OmgoImdpdGh1Yi1wcm9qZWN0Iiw2MDQ2MyksbWFwVmVydGljYWw6aCgibWFwLXZlcnRpY2FsIiw2MDQ2NCksZm9sZFZlcnRpY2FsOmgoImZvbGQtdmVydGljYWwiLDYwNDY0KSxtYXBWZXJ0aWNhbEZpbGxlZDpoKCJtYXAtdmVydGljYWwtZmlsbGVkIiw2MDQ2NSksZm9sZFZlcnRpY2FsRmlsbGVkOmgoImZvbGQtdmVydGljYWwtZmlsbGVkIiw2MDQ2NSksZ29Ub1NlYXJjaDpoKCJnby10by1zZWFyY2giLDYwNDY2KSxwZXJjZW50YWdlOmgoInBlcmNlbnRhZ2UiLDYwNDY3KSxzb3J0UGVyY2VudGFnZTpoKCJzb3J0LXBlcmNlbnRhZ2UiLDYwNDY3KSxhdHRhY2g6aCgiYXR0YWNoIiw2MDQ2OCl9LCRkPXtkaWFsb2dFcnJvcjpoKCJkaWFsb2ctZXJyb3IiLCJlcnJvciIpLGRpYWxvZ1dhcm5pbmc6aCgiZGlhbG9nLXdhcm5pbmciLCJ3YXJuaW5nIiksZGlhbG9nSW5mbzpoKCJkaWFsb2ctaW5mbyIsImluZm8iKSxkaWFsb2dDbG9zZTpoKCJkaWFsb2ctY2xvc2UiLCJjbG9zZSIpLHRyZWVJdGVtRXhwYW5kZWQ6aCgidHJlZS1pdGVtLWV4cGFuZGVkIiwiY2hldnJvbi1kb3duIiksdHJlZUZpbHRlck9uVHlwZU9uOmgoInRyZWUtZmlsdGVyLW9uLXR5cGUtb24iLCJsaXN0LWZpbHRlciIpLHRyZWVGaWx0ZXJPblR5cGVPZmY6aCgidHJlZS1maWx0ZXItb24tdHlwZS1vZmYiLCJsaXN0LXNlbGVjdGlvbiIpLHRyZWVGaWx0ZXJDbGVhcjpoKCJ0cmVlLWZpbHRlci1jbGVhciIsImNsb3NlIiksdHJlZUl0ZW1Mb2FkaW5nOmgoInRyZWUtaXRlbS1sb2FkaW5nIiwibG9hZGluZyIpLG1lbnVTZWxlY3Rpb246aCgibWVudS1zZWxlY3Rpb24iLCJjaGVjayIpLG1lbnVTdWJtZW51OmgoIm1lbnUtc3VibWVudSIsImNoZXZyb24tcmlnaHQiKSxtZW51QmFyTW9yZTpoKCJtZW51YmFyLW1vcmUiLCJtb3JlIiksc2Nyb2xsYmFyQnV0dG9uTGVmdDpoKCJzY3JvbGxiYXItYnV0dG9uLWxlZnQiLCJ0cmlhbmdsZS1sZWZ0Iiksc2Nyb2xsYmFyQnV0dG9uUmlnaHQ6aCgic2Nyb2xsYmFyLWJ1dHRvbi1yaWdodCIsInRyaWFuZ2xlLXJpZ2h0Iiksc2Nyb2xsYmFyQnV0dG9uVXA6aCgic2Nyb2xsYmFyLWJ1dHRvbi11cCIsInRyaWFuZ2xlLXVwIiksc2Nyb2xsYmFyQnV0dG9uRG93bjpoKCJzY3JvbGxiYXItYnV0dG9uLWRvd24iLCJ0cmlhbmdsZS1kb3duIiksdG9vbEJhck1vcmU6aCgidG9vbGJhci1tb3JlIiwibW9yZSIpLHF1aWNrSW5wdXRCYWNrOmgoInF1aWNrLWlucHV0LWJhY2siLCJhcnJvdy1sZWZ0IiksZHJvcERvd25CdXR0b246aCgiZHJvcC1kb3duLWJ1dHRvbiIsNjAwODQpLHN5bWJvbEN1c3RvbUNvbG9yOmgoInN5bWJvbC1jdXN0b21jb2xvciIsNjAyNTIpLGV4cG9ydEljb246aCgiZXhwb3J0Iiw2MDMzMiksd29ya3NwYWNlVW5zcGVjaWZpZWQ6aCgid29ya3NwYWNlLXVuc3BlY2lmaWVkIiw2MDM1NSksbmV3TGluZTpoKCJuZXdsaW5lIiw2MDM5NCksdGh1bWJzRG93bkZpbGxlZDpoKCJ0aHVtYnNkb3duLWZpbGxlZCIsNjA0MzUpLHRodW1ic1VwRmlsbGVkOmgoInRodW1ic3VwLWZpbGxlZCIsNjA0MzYpLGdpdEZldGNoOmgoImdpdC1mZXRjaCIsNjA0NDUpLGxpZ2h0YnVsYlNwYXJrbGVBdXRvZml4OmgoImxpZ2h0YnVsYi1zcGFya2xlLWF1dG9maXgiLDYwNDQ3KSxkZWJ1Z0JyZWFrcG9pbnRQZW5kaW5nOmgoImRlYnVnLWJyZWFrcG9pbnQtcGVuZGluZyIsNjAzNzcpfSxXPXsuLi5WZCwuLi4kZH07Y2xhc3MgeWF7Y29uc3RydWN0b3IoKXt0aGlzLl90b2tlbml6YXRpb25TdXBwb3J0cz1uZXcgTWFwLHRoaXMuX2ZhY3Rvcmllcz1uZXcgTWFwLHRoaXMuX29uRGlkQ2hhbmdlPW5ldyBEZSx0aGlzLm9uRGlkQ2hhbmdlPXRoaXMuX29uRGlkQ2hhbmdlLmV2ZW50LHRoaXMuX2NvbG9yTWFwPW51bGx9aGFuZGxlQ2hhbmdlKHQpe3RoaXMuX29uRGlkQ2hhbmdlLmZpcmUoe2NoYW5nZWRMYW5ndWFnZXM6dCxjaGFuZ2VkQ29sb3JNYXA6ITF9KX1yZWdpc3Rlcih0LG4pe3JldHVybiB0aGlzLl90b2tlbml6YXRpb25TdXBwb3J0cy5zZXQodCxuKSx0aGlzLmhhbmRsZUNoYW5nZShbdF0pLFduKCgpPT57dGhpcy5fdG9rZW5pemF0aW9uU3VwcG9ydHMuZ2V0KHQpPT09biYmKHRoaXMuX3Rva2VuaXphdGlvblN1cHBvcnRzLmRlbGV0ZSh0KSx0aGlzLmhhbmRsZUNoYW5nZShbdF0pKX0pfWdldCh0KXtyZXR1cm4gdGhpcy5fdG9rZW5pemF0aW9uU3VwcG9ydHMuZ2V0KHQpfHxudWxsfXJlZ2lzdGVyRmFjdG9yeSh0LG4pe3RoaXMuX2ZhY3Rvcmllcy5nZXQodCk/LmRpc3Bvc2UoKTtjb25zdCByPW5ldyBCZCh0aGlzLHQsbik7cmV0dXJuIHRoaXMuX2ZhY3Rvcmllcy5zZXQodCxyKSxXbigoKT0+e2NvbnN0IGk9dGhpcy5fZmFjdG9yaWVzLmdldCh0KTshaXx8aSE9PXJ8fCh0aGlzLl9mYWN0b3JpZXMuZGVsZXRlKHQpLGkuZGlzcG9zZSgpKX0pfWFzeW5jIGdldE9yQ3JlYXRlKHQpe2NvbnN0IG49dGhpcy5nZXQodCk7aWYobilyZXR1cm4gbjtjb25zdCByPXRoaXMuX2ZhY3Rvcmllcy5nZXQodCk7cmV0dXJuIXJ8fHIuaXNSZXNvbHZlZD9udWxsOihhd2FpdCByLnJlc29sdmUoKSx0aGlzLmdldCh0KSl9aXNSZXNvbHZlZCh0KXtpZih0aGlzLmdldCh0KSlyZXR1cm4hMDtjb25zdCByPXRoaXMuX2ZhY3Rvcmllcy5nZXQodCk7cmV0dXJuISEoIXJ8fHIuaXNSZXNvbHZlZCl9c2V0Q29sb3JNYXAodCl7dGhpcy5fY29sb3JNYXA9dCx0aGlzLl9vbkRpZENoYW5nZS5maXJlKHtjaGFuZ2VkTGFuZ3VhZ2VzOkFycmF5LmZyb20odGhpcy5fdG9rZW5pemF0aW9uU3VwcG9ydHMua2V5cygpKSxjaGFuZ2VkQ29sb3JNYXA6ITB9KX1nZXRDb2xvck1hcCgpe3JldHVybiB0aGlzLl9jb2xvck1hcH1nZXREZWZhdWx0QmFja2dyb3VuZCgpe3JldHVybiB0aGlzLl9jb2xvck1hcCYmdGhpcy5fY29sb3JNYXAubGVuZ3RoPjI/dGhpcy5fY29sb3JNYXBbMl06bnVsbH19Y2xhc3MgQmQgZXh0ZW5kcyB6dHtnZXQgaXNSZXNvbHZlZCgpe3JldHVybiB0aGlzLl9pc1Jlc29sdmVkfWNvbnN0cnVjdG9yKHQsbixyKXtzdXBlcigpLHRoaXMuX3JlZ2lzdHJ5PXQsdGhpcy5fbGFuZ3VhZ2VJZD1uLHRoaXMuX2ZhY3Rvcnk9cix0aGlzLl9pc0Rpc3Bvc2VkPSExLHRoaXMuX3Jlc29sdmVQcm9taXNlPW51bGwsdGhpcy5faXNSZXNvbHZlZD0hMX1kaXNwb3NlKCl7dGhpcy5faXNEaXNwb3NlZD0hMCxzdXBlci5kaXNwb3NlKCl9YXN5bmMgcmVzb2x2ZSgpe3JldHVybiB0aGlzLl9yZXNvbHZlUHJvbWlzZXx8KHRoaXMuX3Jlc29sdmVQcm9taXNlPXRoaXMuX2NyZWF0ZSgpKSx0aGlzLl9yZXNvbHZlUHJvbWlzZX1hc3luYyBfY3JlYXRlKCl7Y29uc3QgdD1hd2FpdCB0aGlzLl9mYWN0b3J5LnRva2VuaXphdGlvblN1cHBvcnQ7dGhpcy5faXNSZXNvbHZlZD0hMCx0JiYhdGhpcy5faXNEaXNwb3NlZCYmdGhpcy5fcmVnaXN0ZXIodGhpcy5fcmVnaXN0cnkucmVnaXN0ZXIodGhpcy5fbGFuZ3VhZ2VJZCx0KSl9fWNsYXNzIHFke2NvbnN0cnVjdG9yKHQsbixyKXt0aGlzLm9mZnNldD10LHRoaXMudHlwZT1uLHRoaXMubGFuZ3VhZ2U9cix0aGlzLl90b2tlbkJyYW5kPXZvaWQgMH10b1N0cmluZygpe3JldHVybiIoIit0aGlzLm9mZnNldCsiLCAiK3RoaXMudHlwZSsiKSJ9fXZhciB4YTsoZnVuY3Rpb24oZSl7ZVtlLkluY3JlYXNlPTBdPSJJbmNyZWFzZSIsZVtlLkRlY3JlYXNlPTFdPSJEZWNyZWFzZSJ9KSh4YXx8KHhhPXt9KSk7dmFyIFNhOyhmdW5jdGlvbihlKXtjb25zdCB0PW5ldyBNYXA7dC5zZXQoMCxXLnN5bWJvbE1ldGhvZCksdC5zZXQoMSxXLnN5bWJvbEZ1bmN0aW9uKSx0LnNldCgyLFcuc3ltYm9sQ29uc3RydWN0b3IpLHQuc2V0KDMsVy5zeW1ib2xGaWVsZCksdC5zZXQoNCxXLnN5bWJvbFZhcmlhYmxlKSx0LnNldCg1LFcuc3ltYm9sQ2xhc3MpLHQuc2V0KDYsVy5zeW1ib2xTdHJ1Y3QpLHQuc2V0KDcsVy5zeW1ib2xJbnRlcmZhY2UpLHQuc2V0KDgsVy5zeW1ib2xNb2R1bGUpLHQuc2V0KDksVy5zeW1ib2xQcm9wZXJ0eSksdC5zZXQoMTAsVy5zeW1ib2xFdmVudCksdC5zZXQoMTEsVy5zeW1ib2xPcGVyYXRvciksdC5zZXQoMTIsVy5zeW1ib2xVbml0KSx0LnNldCgxMyxXLnN5bWJvbFZhbHVlKSx0LnNldCgxNSxXLnN5bWJvbEVudW0pLHQuc2V0KDE0LFcuc3ltYm9sQ29uc3RhbnQpLHQuc2V0KDE1LFcuc3ltYm9sRW51bSksdC5zZXQoMTYsVy5zeW1ib2xFbnVtTWVtYmVyKSx0LnNldCgxNyxXLnN5bWJvbEtleXdvcmQpLHQuc2V0KDI3LFcuc3ltYm9sU25pcHBldCksdC5zZXQoMTgsVy5zeW1ib2xUZXh0KSx0LnNldCgxOSxXLnN5bWJvbENvbG9yKSx0LnNldCgyMCxXLnN5bWJvbEZpbGUpLHQuc2V0KDIxLFcuc3ltYm9sUmVmZXJlbmNlKSx0LnNldCgyMixXLnN5bWJvbEN1c3RvbUNvbG9yKSx0LnNldCgyMyxXLnN5bWJvbEZvbGRlciksdC5zZXQoMjQsVy5zeW1ib2xUeXBlUGFyYW1ldGVyKSx0LnNldCgyNSxXLmFjY291bnQpLHQuc2V0KDI2LFcuaXNzdWVzKTtmdW5jdGlvbiBuKHMpe2xldCBhPXQuZ2V0KHMpO3JldHVybiBhfHwoY29uc29sZS5pbmZvKCJObyBjb2RpY29uIGZvdW5kIGZvciBDb21wbGV0aW9uSXRlbUtpbmQgIitzKSxhPVcuc3ltYm9sUHJvcGVydHkpLGF9ZS50b0ljb249bjtjb25zdCByPW5ldyBNYXA7ci5zZXQoIm1ldGhvZCIsMCksci5zZXQoImZ1bmN0aW9uIiwxKSxyLnNldCgiY29uc3RydWN0b3IiLDIpLHIuc2V0KCJmaWVsZCIsMyksci5zZXQoInZhcmlhYmxlIiw0KSxyLnNldCgiY2xhc3MiLDUpLHIuc2V0KCJzdHJ1Y3QiLDYpLHIuc2V0KCJpbnRlcmZhY2UiLDcpLHIuc2V0KCJtb2R1bGUiLDgpLHIuc2V0KCJwcm9wZXJ0eSIsOSksci5zZXQoImV2ZW50IiwxMCksci5zZXQoIm9wZXJhdG9yIiwxMSksci5zZXQoInVuaXQiLDEyKSxyLnNldCgidmFsdWUiLDEzKSxyLnNldCgiY29uc3RhbnQiLDE0KSxyLnNldCgiZW51bSIsMTUpLHIuc2V0KCJlbnVtLW1lbWJlciIsMTYpLHIuc2V0KCJlbnVtTWVtYmVyIiwxNiksci5zZXQoImtleXdvcmQiLDE3KSxyLnNldCgic25pcHBldCIsMjcpLHIuc2V0KCJ0ZXh0IiwxOCksci5zZXQoImNvbG9yIiwxOSksci5zZXQoImZpbGUiLDIwKSxyLnNldCgicmVmZXJlbmNlIiwyMSksci5zZXQoImN1c3RvbWNvbG9yIiwyMiksci5zZXQoImZvbGRlciIsMjMpLHIuc2V0KCJ0eXBlLXBhcmFtZXRlciIsMjQpLHIuc2V0KCJ0eXBlUGFyYW1ldGVyIiwyNCksci5zZXQoImFjY291bnQiLDI1KSxyLnNldCgiaXNzdWUiLDI2KTtmdW5jdGlvbiBpKHMsYSl7bGV0IGw9ci5nZXQocyk7cmV0dXJuIHR5cGVvZiBsPiJ1IiYmIWEmJihsPTkpLGx9ZS5mcm9tU3RyaW5nPWl9KShTYXx8KFNhPXt9KSk7dmFyIENhOyhmdW5jdGlvbihlKXtlW2UuQXV0b21hdGljPTBdPSJBdXRvbWF0aWMiLGVbZS5FeHBsaWNpdD0xXT0iRXhwbGljaXQifSkoQ2F8fChDYT17fSkpO3ZhciBfYTsoZnVuY3Rpb24oZSl7ZVtlLkF1dG9tYXRpYz0wXT0iQXV0b21hdGljIixlW2UuUGFzdGVBcz0xXT0iUGFzdGVBcyJ9KShfYXx8KF9hPXt9KSk7dmFyIGthOyhmdW5jdGlvbihlKXtlW2UuSW52b2tlPTFdPSJJbnZva2UiLGVbZS5UcmlnZ2VyQ2hhcmFjdGVyPTJdPSJUcmlnZ2VyQ2hhcmFjdGVyIixlW2UuQ29udGVudENoYW5nZT0zXT0iQ29udGVudENoYW5nZSJ9KShrYXx8KGthPXt9KSk7dmFyIEVhOyhmdW5jdGlvbihlKXtlW2UuVGV4dD0wXT0iVGV4dCIsZVtlLlJlYWQ9MV09IlJlYWQiLGVbZS5Xcml0ZT0yXT0iV3JpdGUifSkoRWF8fChFYT17fSkpLHJlKCJBcnJheSIsImFycmF5IikscmUoIkJvb2xlYW4iLCJib29sZWFuIikscmUoIkNsYXNzIiwiY2xhc3MiKSxyZSgiQ29uc3RhbnQiLCJjb25zdGFudCIpLHJlKCJDb25zdHJ1Y3RvciIsImNvbnN0cnVjdG9yIikscmUoIkVudW0iLCJlbnVtZXJhdGlvbiIpLHJlKCJFbnVtTWVtYmVyIiwiZW51bWVyYXRpb24gbWVtYmVyIikscmUoIkV2ZW50IiwiZXZlbnQiKSxyZSgiRmllbGQiLCJmaWVsZCIpLHJlKCJGaWxlIiwiZmlsZSIpLHJlKCJGdW5jdGlvbiIsImZ1bmN0aW9uIikscmUoIkludGVyZmFjZSIsImludGVyZmFjZSIpLHJlKCJLZXkiLCJrZXkiKSxyZSgiTWV0aG9kIiwibWV0aG9kIikscmUoIk1vZHVsZSIsIm1vZHVsZSIpLHJlKCJOYW1lc3BhY2UiLCJuYW1lc3BhY2UiKSxyZSgiTnVsbCIsIm51bGwiKSxyZSgiTnVtYmVyIiwibnVtYmVyIikscmUoIk9iamVjdCIsIm9iamVjdCIpLHJlKCJPcGVyYXRvciIsIm9wZXJhdG9yIikscmUoIlBhY2thZ2UiLCJwYWNrYWdlIikscmUoIlByb3BlcnR5IiwicHJvcGVydHkiKSxyZSgiU3RyaW5nIiwic3RyaW5nIikscmUoIlN0cnVjdCIsInN0cnVjdCIpLHJlKCJUeXBlUGFyYW1ldGVyIiwidHlwZSBwYXJhbWV0ZXIiKSxyZSgiVmFyaWFibGUiLCJ2YXJpYWJsZSIpO3ZhciBGYTsoZnVuY3Rpb24oZSl7Y29uc3QgdD1uZXcgTWFwO3Quc2V0KDAsVy5zeW1ib2xGaWxlKSx0LnNldCgxLFcuc3ltYm9sTW9kdWxlKSx0LnNldCgyLFcuc3ltYm9sTmFtZXNwYWNlKSx0LnNldCgzLFcuc3ltYm9sUGFja2FnZSksdC5zZXQoNCxXLnN5bWJvbENsYXNzKSx0LnNldCg1LFcuc3ltYm9sTWV0aG9kKSx0LnNldCg2LFcuc3ltYm9sUHJvcGVydHkpLHQuc2V0KDcsVy5zeW1ib2xGaWVsZCksdC5zZXQoOCxXLnN5bWJvbENvbnN0cnVjdG9yKSx0LnNldCg5LFcuc3ltYm9sRW51bSksdC5zZXQoMTAsVy5zeW1ib2xJbnRlcmZhY2UpLHQuc2V0KDExLFcuc3ltYm9sRnVuY3Rpb24pLHQuc2V0KDEyLFcuc3ltYm9sVmFyaWFibGUpLHQuc2V0KDEzLFcuc3ltYm9sQ29uc3RhbnQpLHQuc2V0KDE0LFcuc3ltYm9sU3RyaW5nKSx0LnNldCgxNSxXLnN5bWJvbE51bWJlciksdC5zZXQoMTYsVy5zeW1ib2xCb29sZWFuKSx0LnNldCgxNyxXLnN5bWJvbEFycmF5KSx0LnNldCgxOCxXLnN5bWJvbE9iamVjdCksdC5zZXQoMTksVy5zeW1ib2xLZXkpLHQuc2V0KDIwLFcuc3ltYm9sTnVsbCksdC5zZXQoMjEsVy5zeW1ib2xFbnVtTWVtYmVyKSx0LnNldCgyMixXLnN5bWJvbFN0cnVjdCksdC5zZXQoMjMsVy5zeW1ib2xFdmVudCksdC5zZXQoMjQsVy5zeW1ib2xPcGVyYXRvciksdC5zZXQoMjUsVy5zeW1ib2xUeXBlUGFyYW1ldGVyKTtmdW5jdGlvbiBuKHIpe2xldCBpPXQuZ2V0KHIpO3JldHVybiBpfHwoY29uc29sZS5pbmZvKCJObyBjb2RpY29uIGZvdW5kIGZvciBTeW1ib2xLaW5kICIrciksaT1XLnN5bWJvbFByb3BlcnR5KSxpfWUudG9JY29uPW59KShGYXx8KEZhPXt9KSk7bGV0IGpmPShTZT1jbGFzc3tzdGF0aWMgZnJvbVZhbHVlKHQpe3N3aXRjaCh0KXtjYXNlImNvbW1lbnQiOnJldHVybiBTZS5Db21tZW50O2Nhc2UiaW1wb3J0cyI6cmV0dXJuIFNlLkltcG9ydHM7Y2FzZSJyZWdpb24iOnJldHVybiBTZS5SZWdpb259cmV0dXJuIG5ldyBTZSh0KX1jb25zdHJ1Y3Rvcih0KXt0aGlzLnZhbHVlPXR9fSxTZS5Db21tZW50PW5ldyBTZSgiY29tbWVudCIpLFNlLkltcG9ydHM9bmV3IFNlKCJpbXBvcnRzIiksU2UuUmVnaW9uPW5ldyBTZSgicmVnaW9uIiksU2UpO3ZhciBSYTsoZnVuY3Rpb24oZSl7ZVtlLkFJR2VuZXJhdGVkPTFdPSJBSUdlbmVyYXRlZCJ9KShSYXx8KFJhPXt9KSk7dmFyIE5hOyhmdW5jdGlvbihlKXtlW2UuSW52b2tlPTBdPSJJbnZva2UiLGVbZS5BdXRvbWF0aWM9MV09IkF1dG9tYXRpYyJ9KShOYXx8KE5hPXt9KSk7dmFyIERhOyhmdW5jdGlvbihlKXtmdW5jdGlvbiB0KG4pe3JldHVybiFufHx0eXBlb2YgbiE9Im9iamVjdCI/ITE6dHlwZW9mIG4uaWQ9PSJzdHJpbmciJiZ0eXBlb2Ygbi50aXRsZT09InN0cmluZyJ9ZS5pcz10fSkoRGF8fChEYT17fSkpO3ZhciBJYTsoZnVuY3Rpb24oZSl7ZVtlLlR5cGU9MV09IlR5cGUiLGVbZS5QYXJhbWV0ZXI9Ml09IlBhcmFtZXRlciJ9KShJYXx8KElhPXt9KSksbmV3IHlhLG5ldyB5YTt2YXIgQWE7KGZ1bmN0aW9uKGUpe2VbZS5JbnZva2U9MF09Ikludm9rZSIsZVtlLkF1dG9tYXRpYz0xXT0iQXV0b21hdGljIn0pKEFhfHwoQWE9e30pKTt2YXIgTWE7KGZ1bmN0aW9uKGUpe2VbZS5Vbmtub3duPTBdPSJVbmtub3duIixlW2UuRGlzYWJsZWQ9MV09IkRpc2FibGVkIixlW2UuRW5hYmxlZD0yXT0iRW5hYmxlZCJ9KShNYXx8KE1hPXt9KSk7dmFyIExhOyhmdW5jdGlvbihlKXtlW2UuSW52b2tlPTFdPSJJbnZva2UiLGVbZS5BdXRvPTJdPSJBdXRvIn0pKExhfHwoTGE9e30pKTt2YXIgemE7KGZ1bmN0aW9uKGUpe2VbZS5Ob25lPTBdPSJOb25lIixlW2UuS2VlcFdoaXRlc3BhY2U9MV09IktlZXBXaGl0ZXNwYWNlIixlW2UuSW5zZXJ0QXNTbmlwcGV0PTRdPSJJbnNlcnRBc1NuaXBwZXQifSkoemF8fCh6YT17fSkpO3ZhciBQYTsoZnVuY3Rpb24oZSl7ZVtlLk1ldGhvZD0wXT0iTWV0aG9kIixlW2UuRnVuY3Rpb249MV09IkZ1bmN0aW9uIixlW2UuQ29uc3RydWN0b3I9Ml09IkNvbnN0cnVjdG9yIixlW2UuRmllbGQ9M109IkZpZWxkIixlW2UuVmFyaWFibGU9NF09IlZhcmlhYmxlIixlW2UuQ2xhc3M9NV09IkNsYXNzIixlW2UuU3RydWN0PTZdPSJTdHJ1Y3QiLGVbZS5JbnRlcmZhY2U9N109IkludGVyZmFjZSIsZVtlLk1vZHVsZT04XT0iTW9kdWxlIixlW2UuUHJvcGVydHk9OV09IlByb3BlcnR5IixlW2UuRXZlbnQ9MTBdPSJFdmVudCIsZVtlLk9wZXJhdG9yPTExXT0iT3BlcmF0b3IiLGVbZS5Vbml0PTEyXT0iVW5pdCIsZVtlLlZhbHVlPTEzXT0iVmFsdWUiLGVbZS5Db25zdGFudD0xNF09IkNvbnN0YW50IixlW2UuRW51bT0xNV09IkVudW0iLGVbZS5FbnVtTWVtYmVyPTE2XT0iRW51bU1lbWJlciIsZVtlLktleXdvcmQ9MTddPSJLZXl3b3JkIixlW2UuVGV4dD0xOF09IlRleHQiLGVbZS5Db2xvcj0xOV09IkNvbG9yIixlW2UuRmlsZT0yMF09IkZpbGUiLGVbZS5SZWZlcmVuY2U9MjFdPSJSZWZlcmVuY2UiLGVbZS5DdXN0b21jb2xvcj0yMl09IkN1c3RvbWNvbG9yIixlW2UuRm9sZGVyPTIzXT0iRm9sZGVyIixlW2UuVHlwZVBhcmFtZXRlcj0yNF09IlR5cGVQYXJhbWV0ZXIiLGVbZS5Vc2VyPTI1XT0iVXNlciIsZVtlLklzc3VlPTI2XT0iSXNzdWUiLGVbZS5TbmlwcGV0PTI3XT0iU25pcHBldCJ9KShQYXx8KFBhPXt9KSk7dmFyIFRhOyhmdW5jdGlvbihlKXtlW2UuRGVwcmVjYXRlZD0xXT0iRGVwcmVjYXRlZCJ9KShUYXx8KFRhPXt9KSk7dmFyIE9hOyhmdW5jdGlvbihlKXtlW2UuSW52b2tlPTBdPSJJbnZva2UiLGVbZS5UcmlnZ2VyQ2hhcmFjdGVyPTFdPSJUcmlnZ2VyQ2hhcmFjdGVyIixlW2UuVHJpZ2dlckZvckluY29tcGxldGVDb21wbGV0aW9ucz0yXT0iVHJpZ2dlckZvckluY29tcGxldGVDb21wbGV0aW9ucyJ9KShPYXx8KE9hPXt9KSk7dmFyIFdhOyhmdW5jdGlvbihlKXtlW2UuRVhBQ1Q9MF09IkVYQUNUIixlW2UuQUJPVkU9MV09IkFCT1ZFIixlW2UuQkVMT1c9Ml09IkJFTE9XIn0pKFdhfHwoV2E9e30pKTt2YXIgVWE7KGZ1bmN0aW9uKGUpe2VbZS5Ob3RTZXQ9MF09Ik5vdFNldCIsZVtlLkNvbnRlbnRGbHVzaD0xXT0iQ29udGVudEZsdXNoIixlW2UuUmVjb3ZlckZyb21NYXJrZXJzPTJdPSJSZWNvdmVyRnJvbU1hcmtlcnMiLGVbZS5FeHBsaWNpdD0zXT0iRXhwbGljaXQiLGVbZS5QYXN0ZT00XT0iUGFzdGUiLGVbZS5VbmRvPTVdPSJVbmRvIixlW2UuUmVkbz02XT0iUmVkbyJ9KShVYXx8KFVhPXt9KSk7dmFyIFZhOyhmdW5jdGlvbihlKXtlW2UuTEY9MV09IkxGIixlW2UuQ1JMRj0yXT0iQ1JMRiJ9KShWYXx8KFZhPXt9KSk7dmFyICRhOyhmdW5jdGlvbihlKXtlW2UuVGV4dD0wXT0iVGV4dCIsZVtlLlJlYWQ9MV09IlJlYWQiLGVbZS5Xcml0ZT0yXT0iV3JpdGUifSkoJGF8fCgkYT17fSkpO3ZhciBCYTsoZnVuY3Rpb24oZSl7ZVtlLk5vbmU9MF09Ik5vbmUiLGVbZS5LZWVwPTFdPSJLZWVwIixlW2UuQnJhY2tldHM9Ml09IkJyYWNrZXRzIixlW2UuQWR2YW5jZWQ9M109IkFkdmFuY2VkIixlW2UuRnVsbD00XT0iRnVsbCJ9KShCYXx8KEJhPXt9KSk7dmFyIHFhOyhmdW5jdGlvbihlKXtlW2UuYWNjZXB0U3VnZ2VzdGlvbk9uQ29tbWl0Q2hhcmFjdGVyPTBdPSJhY2NlcHRTdWdnZXN0aW9uT25Db21taXRDaGFyYWN0ZXIiLGVbZS5hY2NlcHRTdWdnZXN0aW9uT25FbnRlcj0xXT0iYWNjZXB0U3VnZ2VzdGlvbk9uRW50ZXIiLGVbZS5hY2Nlc3NpYmlsaXR5U3VwcG9ydD0yXT0iYWNjZXNzaWJpbGl0eVN1cHBvcnQiLGVbZS5hY2Nlc3NpYmlsaXR5UGFnZVNpemU9M109ImFjY2Vzc2liaWxpdHlQYWdlU2l6ZSIsZVtlLmFyaWFMYWJlbD00XT0iYXJpYUxhYmVsIixlW2UuYXJpYVJlcXVpcmVkPTVdPSJhcmlhUmVxdWlyZWQiLGVbZS5hdXRvQ2xvc2luZ0JyYWNrZXRzPTZdPSJhdXRvQ2xvc2luZ0JyYWNrZXRzIixlW2UuYXV0b0Nsb3NpbmdDb21tZW50cz03XT0iYXV0b0Nsb3NpbmdDb21tZW50cyIsZVtlLnNjcmVlblJlYWRlckFubm91bmNlSW5saW5lU3VnZ2VzdGlvbj04XT0ic2NyZWVuUmVhZGVyQW5ub3VuY2VJbmxpbmVTdWdnZXN0aW9uIixlW2UuYXV0b0Nsb3NpbmdEZWxldGU9OV09ImF1dG9DbG9zaW5nRGVsZXRlIixlW2UuYXV0b0Nsb3NpbmdPdmVydHlwZT0xMF09ImF1dG9DbG9zaW5nT3ZlcnR5cGUiLGVbZS5hdXRvQ2xvc2luZ1F1b3Rlcz0xMV09ImF1dG9DbG9zaW5nUXVvdGVzIixlW2UuYXV0b0luZGVudD0xMl09ImF1dG9JbmRlbnQiLGVbZS5hdXRvbWF0aWNMYXlvdXQ9MTNdPSJhdXRvbWF0aWNMYXlvdXQiLGVbZS5hdXRvU3Vycm91bmQ9MTRdPSJhdXRvU3Vycm91bmQiLGVbZS5icmFja2V0UGFpckNvbG9yaXphdGlvbj0xNV09ImJyYWNrZXRQYWlyQ29sb3JpemF0aW9uIixlW2UuZ3VpZGVzPTE2XT0iZ3VpZGVzIixlW2UuY29kZUxlbnM9MTddPSJjb2RlTGVucyIsZVtlLmNvZGVMZW5zRm9udEZhbWlseT0xOF09ImNvZGVMZW5zRm9udEZhbWlseSIsZVtlLmNvZGVMZW5zRm9udFNpemU9MTldPSJjb2RlTGVuc0ZvbnRTaXplIixlW2UuY29sb3JEZWNvcmF0b3JzPTIwXT0iY29sb3JEZWNvcmF0b3JzIixlW2UuY29sb3JEZWNvcmF0b3JzTGltaXQ9MjFdPSJjb2xvckRlY29yYXRvcnNMaW1pdCIsZVtlLmNvbHVtblNlbGVjdGlvbj0yMl09ImNvbHVtblNlbGVjdGlvbiIsZVtlLmNvbW1lbnRzPTIzXT0iY29tbWVudHMiLGVbZS5jb250ZXh0bWVudT0yNF09ImNvbnRleHRtZW51IixlW2UuY29weVdpdGhTeW50YXhIaWdobGlnaHRpbmc9MjVdPSJjb3B5V2l0aFN5bnRheEhpZ2hsaWdodGluZyIsZVtlLmN1cnNvckJsaW5raW5nPTI2XT0iY3Vyc29yQmxpbmtpbmciLGVbZS5jdXJzb3JTbW9vdGhDYXJldEFuaW1hdGlvbj0yN109ImN1cnNvclNtb290aENhcmV0QW5pbWF0aW9uIixlW2UuY3Vyc29yU3R5bGU9MjhdPSJjdXJzb3JTdHlsZSIsZVtlLmN1cnNvclN1cnJvdW5kaW5nTGluZXM9MjldPSJjdXJzb3JTdXJyb3VuZGluZ0xpbmVzIixlW2UuY3Vyc29yU3Vycm91bmRpbmdMaW5lc1N0eWxlPTMwXT0iY3Vyc29yU3Vycm91bmRpbmdMaW5lc1N0eWxlIixlW2UuY3Vyc29yV2lkdGg9MzFdPSJjdXJzb3JXaWR0aCIsZVtlLmRpc2FibGVMYXllckhpbnRpbmc9MzJdPSJkaXNhYmxlTGF5ZXJIaW50aW5nIixlW2UuZGlzYWJsZU1vbm9zcGFjZU9wdGltaXphdGlvbnM9MzNdPSJkaXNhYmxlTW9ub3NwYWNlT3B0aW1pemF0aW9ucyIsZVtlLmRvbVJlYWRPbmx5PTM0XT0iZG9tUmVhZE9ubHkiLGVbZS5kcmFnQW5kRHJvcD0zNV09ImRyYWdBbmREcm9wIixlW2UuZHJvcEludG9FZGl0b3I9MzZdPSJkcm9wSW50b0VkaXRvciIsZVtlLmVtcHR5U2VsZWN0aW9uQ2xpcGJvYXJkPTM3XT0iZW1wdHlTZWxlY3Rpb25DbGlwYm9hcmQiLGVbZS5leHBlcmltZW50YWxXaGl0ZXNwYWNlUmVuZGVyaW5nPTM4XT0iZXhwZXJpbWVudGFsV2hpdGVzcGFjZVJlbmRlcmluZyIsZVtlLmV4dHJhRWRpdG9yQ2xhc3NOYW1lPTM5XT0iZXh0cmFFZGl0b3JDbGFzc05hbWUiLGVbZS5mYXN0U2Nyb2xsU2Vuc2l0aXZpdHk9NDBdPSJmYXN0U2Nyb2xsU2Vuc2l0aXZpdHkiLGVbZS5maW5kPTQxXT0iZmluZCIsZVtlLmZpeGVkT3ZlcmZsb3dXaWRnZXRzPTQyXT0iZml4ZWRPdmVyZmxvd1dpZGdldHMiLGVbZS5mb2xkaW5nPTQzXT0iZm9sZGluZyIsZVtlLmZvbGRpbmdTdHJhdGVneT00NF09ImZvbGRpbmdTdHJhdGVneSIsZVtlLmZvbGRpbmdIaWdobGlnaHQ9NDVdPSJmb2xkaW5nSGlnaGxpZ2h0IixlW2UuZm9sZGluZ0ltcG9ydHNCeURlZmF1bHQ9NDZdPSJmb2xkaW5nSW1wb3J0c0J5RGVmYXVsdCIsZVtlLmZvbGRpbmdNYXhpbXVtUmVnaW9ucz00N109ImZvbGRpbmdNYXhpbXVtUmVnaW9ucyIsZVtlLnVuZm9sZE9uQ2xpY2tBZnRlckVuZE9mTGluZT00OF09InVuZm9sZE9uQ2xpY2tBZnRlckVuZE9mTGluZSIsZVtlLmZvbnRGYW1pbHk9NDldPSJmb250RmFtaWx5IixlW2UuZm9udEluZm89NTBdPSJmb250SW5mbyIsZVtlLmZvbnRMaWdhdHVyZXM9NTFdPSJmb250TGlnYXR1cmVzIixlW2UuZm9udFNpemU9NTJdPSJmb250U2l6ZSIsZVtlLmZvbnRXZWlnaHQ9NTNdPSJmb250V2VpZ2h0IixlW2UuZm9udFZhcmlhdGlvbnM9NTRdPSJmb250VmFyaWF0aW9ucyIsZVtlLmZvcm1hdE9uUGFzdGU9NTVdPSJmb3JtYXRPblBhc3RlIixlW2UuZm9ybWF0T25UeXBlPTU2XT0iZm9ybWF0T25UeXBlIixlW2UuZ2x5cGhNYXJnaW49NTddPSJnbHlwaE1hcmdpbiIsZVtlLmdvdG9Mb2NhdGlvbj01OF09ImdvdG9Mb2NhdGlvbiIsZVtlLmhpZGVDdXJzb3JJbk92ZXJ2aWV3UnVsZXI9NTldPSJoaWRlQ3Vyc29ySW5PdmVydmlld1J1bGVyIixlW2UuaG92ZXI9NjBdPSJob3ZlciIsZVtlLmluRGlmZkVkaXRvcj02MV09ImluRGlmZkVkaXRvciIsZVtlLmlubGluZVN1Z2dlc3Q9NjJdPSJpbmxpbmVTdWdnZXN0IixlW2UuaW5saW5lRWRpdD02M109ImlubGluZUVkaXQiLGVbZS5sZXR0ZXJTcGFjaW5nPTY0XT0ibGV0dGVyU3BhY2luZyIsZVtlLmxpZ2h0YnVsYj02NV09ImxpZ2h0YnVsYiIsZVtlLmxpbmVEZWNvcmF0aW9uc1dpZHRoPTY2XT0ibGluZURlY29yYXRpb25zV2lkdGgiLGVbZS5saW5lSGVpZ2h0PTY3XT0ibGluZUhlaWdodCIsZVtlLmxpbmVOdW1iZXJzPTY4XT0ibGluZU51bWJlcnMiLGVbZS5saW5lTnVtYmVyc01pbkNoYXJzPTY5XT0ibGluZU51bWJlcnNNaW5DaGFycyIsZVtlLmxpbmtlZEVkaXRpbmc9NzBdPSJsaW5rZWRFZGl0aW5nIixlW2UubGlua3M9NzFdPSJsaW5rcyIsZVtlLm1hdGNoQnJhY2tldHM9NzJdPSJtYXRjaEJyYWNrZXRzIixlW2UubWluaW1hcD03M109Im1pbmltYXAiLGVbZS5tb3VzZVN0eWxlPTc0XT0ibW91c2VTdHlsZSIsZVtlLm1vdXNlV2hlZWxTY3JvbGxTZW5zaXRpdml0eT03NV09Im1vdXNlV2hlZWxTY3JvbGxTZW5zaXRpdml0eSIsZVtlLm1vdXNlV2hlZWxab29tPTc2XT0ibW91c2VXaGVlbFpvb20iLGVbZS5tdWx0aUN1cnNvck1lcmdlT3ZlcmxhcHBpbmc9NzddPSJtdWx0aUN1cnNvck1lcmdlT3ZlcmxhcHBpbmciLGVbZS5tdWx0aUN1cnNvck1vZGlmaWVyPTc4XT0ibXVsdGlDdXJzb3JNb2RpZmllciIsZVtlLm11bHRpQ3Vyc29yUGFzdGU9NzldPSJtdWx0aUN1cnNvclBhc3RlIixlW2UubXVsdGlDdXJzb3JMaW1pdD04MF09Im11bHRpQ3Vyc29yTGltaXQiLGVbZS5vY2N1cnJlbmNlc0hpZ2hsaWdodD04MV09Im9jY3VycmVuY2VzSGlnaGxpZ2h0IixlW2Uub3ZlcnZpZXdSdWxlckJvcmRlcj04Ml09Im92ZXJ2aWV3UnVsZXJCb3JkZXIiLGVbZS5vdmVydmlld1J1bGVyTGFuZXM9ODNdPSJvdmVydmlld1J1bGVyTGFuZXMiLGVbZS5wYWRkaW5nPTg0XT0icGFkZGluZyIsZVtlLnBhc3RlQXM9ODVdPSJwYXN0ZUFzIixlW2UucGFyYW1ldGVySGludHM9ODZdPSJwYXJhbWV0ZXJIaW50cyIsZVtlLnBlZWtXaWRnZXREZWZhdWx0Rm9jdXM9ODddPSJwZWVrV2lkZ2V0RGVmYXVsdEZvY3VzIixlW2UucGxhY2Vob2xkZXI9ODhdPSJwbGFjZWhvbGRlciIsZVtlLmRlZmluaXRpb25MaW5rT3BlbnNJblBlZWs9ODldPSJkZWZpbml0aW9uTGlua09wZW5zSW5QZWVrIixlW2UucXVpY2tTdWdnZXN0aW9ucz05MF09InF1aWNrU3VnZ2VzdGlvbnMiLGVbZS5xdWlja1N1Z2dlc3Rpb25zRGVsYXk9OTFdPSJxdWlja1N1Z2dlc3Rpb25zRGVsYXkiLGVbZS5yZWFkT25seT05Ml09InJlYWRPbmx5IixlW2UucmVhZE9ubHlNZXNzYWdlPTkzXT0icmVhZE9ubHlNZXNzYWdlIixlW2UucmVuYW1lT25UeXBlPTk0XT0icmVuYW1lT25UeXBlIixlW2UucmVuZGVyQ29udHJvbENoYXJhY3RlcnM9OTVdPSJyZW5kZXJDb250cm9sQ2hhcmFjdGVycyIsZVtlLnJlbmRlckZpbmFsTmV3bGluZT05Nl09InJlbmRlckZpbmFsTmV3bGluZSIsZVtlLnJlbmRlckxpbmVIaWdobGlnaHQ9OTddPSJyZW5kZXJMaW5lSGlnaGxpZ2h0IixlW2UucmVuZGVyTGluZUhpZ2hsaWdodE9ubHlXaGVuRm9jdXM9OThdPSJyZW5kZXJMaW5lSGlnaGxpZ2h0T25seVdoZW5Gb2N1cyIsZVtlLnJlbmRlclZhbGlkYXRpb25EZWNvcmF0aW9ucz05OV09InJlbmRlclZhbGlkYXRpb25EZWNvcmF0aW9ucyIsZVtlLnJlbmRlcldoaXRlc3BhY2U9MTAwXT0icmVuZGVyV2hpdGVzcGFjZSIsZVtlLnJldmVhbEhvcml6b250YWxSaWdodFBhZGRpbmc9MTAxXT0icmV2ZWFsSG9yaXpvbnRhbFJpZ2h0UGFkZGluZyIsZVtlLnJvdW5kZWRTZWxlY3Rpb249MTAyXT0icm91bmRlZFNlbGVjdGlvbiIsZVtlLnJ1bGVycz0xMDNdPSJydWxlcnMiLGVbZS5zY3JvbGxiYXI9MTA0XT0ic2Nyb2xsYmFyIixlW2Uuc2Nyb2xsQmV5b25kTGFzdENvbHVtbj0xMDVdPSJzY3JvbGxCZXlvbmRMYXN0Q29sdW1uIixlW2Uuc2Nyb2xsQmV5b25kTGFzdExpbmU9MTA2XT0ic2Nyb2xsQmV5b25kTGFzdExpbmUiLGVbZS5zY3JvbGxQcmVkb21pbmFudEF4aXM9MTA3XT0ic2Nyb2xsUHJlZG9taW5hbnRBeGlzIixlW2Uuc2VsZWN0aW9uQ2xpcGJvYXJkPTEwOF09InNlbGVjdGlvbkNsaXBib2FyZCIsZVtlLnNlbGVjdGlvbkhpZ2hsaWdodD0xMDldPSJzZWxlY3Rpb25IaWdobGlnaHQiLGVbZS5zZWxlY3RPbkxpbmVOdW1iZXJzPTExMF09InNlbGVjdE9uTGluZU51bWJlcnMiLGVbZS5zaG93Rm9sZGluZ0NvbnRyb2xzPTExMV09InNob3dGb2xkaW5nQ29udHJvbHMiLGVbZS5zaG93VW51c2VkPTExMl09InNob3dVbnVzZWQiLGVbZS5zbmlwcGV0U3VnZ2VzdGlvbnM9MTEzXT0ic25pcHBldFN1Z2dlc3Rpb25zIixlW2Uuc21hcnRTZWxlY3Q9MTE0XT0ic21hcnRTZWxlY3QiLGVbZS5zbW9vdGhTY3JvbGxpbmc9MTE1XT0ic21vb3RoU2Nyb2xsaW5nIixlW2Uuc3RpY2t5U2Nyb2xsPTExNl09InN0aWNreVNjcm9sbCIsZVtlLnN0aWNreVRhYlN0b3BzPTExN109InN0aWNreVRhYlN0b3BzIixlW2Uuc3RvcFJlbmRlcmluZ0xpbmVBZnRlcj0xMThdPSJzdG9wUmVuZGVyaW5nTGluZUFmdGVyIixlW2Uuc3VnZ2VzdD0xMTldPSJzdWdnZXN0IixlW2Uuc3VnZ2VzdEZvbnRTaXplPTEyMF09InN1Z2dlc3RGb250U2l6ZSIsZVtlLnN1Z2dlc3RMaW5lSGVpZ2h0PTEyMV09InN1Z2dlc3RMaW5lSGVpZ2h0IixlW2Uuc3VnZ2VzdE9uVHJpZ2dlckNoYXJhY3RlcnM9MTIyXT0ic3VnZ2VzdE9uVHJpZ2dlckNoYXJhY3RlcnMiLGVbZS5zdWdnZXN0U2VsZWN0aW9uPTEyM109InN1Z2dlc3RTZWxlY3Rpb24iLGVbZS50YWJDb21wbGV0aW9uPTEyNF09InRhYkNvbXBsZXRpb24iLGVbZS50YWJJbmRleD0xMjVdPSJ0YWJJbmRleCIsZVtlLnVuaWNvZGVIaWdobGlnaHRpbmc9MTI2XT0idW5pY29kZUhpZ2hsaWdodGluZyIsZVtlLnVudXN1YWxMaW5lVGVybWluYXRvcnM9MTI3XT0idW51c3VhbExpbmVUZXJtaW5hdG9ycyIsZVtlLnVzZVNoYWRvd0RPTT0xMjhdPSJ1c2VTaGFkb3dET00iLGVbZS51c2VUYWJTdG9wcz0xMjldPSJ1c2VUYWJTdG9wcyIsZVtlLndvcmRCcmVhaz0xMzBdPSJ3b3JkQnJlYWsiLGVbZS53b3JkU2VnbWVudGVyTG9jYWxlcz0xMzFdPSJ3b3JkU2VnbWVudGVyTG9jYWxlcyIsZVtlLndvcmRTZXBhcmF0b3JzPTEzMl09IndvcmRTZXBhcmF0b3JzIixlW2Uud29yZFdyYXA9MTMzXT0id29yZFdyYXAiLGVbZS53b3JkV3JhcEJyZWFrQWZ0ZXJDaGFyYWN0ZXJzPTEzNF09IndvcmRXcmFwQnJlYWtBZnRlckNoYXJhY3RlcnMiLGVbZS53b3JkV3JhcEJyZWFrQmVmb3JlQ2hhcmFjdGVycz0xMzVdPSJ3b3JkV3JhcEJyZWFrQmVmb3JlQ2hhcmFjdGVycyIsZVtlLndvcmRXcmFwQ29sdW1uPTEzNl09IndvcmRXcmFwQ29sdW1uIixlW2Uud29yZFdyYXBPdmVycmlkZTE9MTM3XT0id29yZFdyYXBPdmVycmlkZTEiLGVbZS53b3JkV3JhcE92ZXJyaWRlMj0xMzhdPSJ3b3JkV3JhcE92ZXJyaWRlMiIsZVtlLndyYXBwaW5nSW5kZW50PTEzOV09IndyYXBwaW5nSW5kZW50IixlW2Uud3JhcHBpbmdTdHJhdGVneT0xNDBdPSJ3cmFwcGluZ1N0cmF0ZWd5IixlW2Uuc2hvd0RlcHJlY2F0ZWQ9MTQxXT0ic2hvd0RlcHJlY2F0ZWQiLGVbZS5pbmxheUhpbnRzPTE0Ml09ImlubGF5SGludHMiLGVbZS5lZGl0b3JDbGFzc05hbWU9MTQzXT0iZWRpdG9yQ2xhc3NOYW1lIixlW2UucGl4ZWxSYXRpbz0xNDRdPSJwaXhlbFJhdGlvIixlW2UudGFiRm9jdXNNb2RlPTE0NV09InRhYkZvY3VzTW9kZSIsZVtlLmxheW91dEluZm89MTQ2XT0ibGF5b3V0SW5mbyIsZVtlLndyYXBwaW5nSW5mbz0xNDddPSJ3cmFwcGluZ0luZm8iLGVbZS5kZWZhdWx0Q29sb3JEZWNvcmF0b3JzPTE0OF09ImRlZmF1bHRDb2xvckRlY29yYXRvcnMiLGVbZS5jb2xvckRlY29yYXRvcnNBY3RpdmF0ZWRPbj0xNDldPSJjb2xvckRlY29yYXRvcnNBY3RpdmF0ZWRPbiIsZVtlLmlubGluZUNvbXBsZXRpb25zQWNjZXNzaWJpbGl0eVZlcmJvc2U9MTUwXT0iaW5saW5lQ29tcGxldGlvbnNBY2Nlc3NpYmlsaXR5VmVyYm9zZSJ9KShxYXx8KHFhPXt9KSk7dmFyIGphOyhmdW5jdGlvbihlKXtlW2UuVGV4dERlZmluZWQ9MF09IlRleHREZWZpbmVkIixlW2UuTEY9MV09IkxGIixlW2UuQ1JMRj0yXT0iQ1JMRiJ9KShqYXx8KGphPXt9KSk7dmFyIEhhOyhmdW5jdGlvbihlKXtlW2UuTEY9MF09IkxGIixlW2UuQ1JMRj0xXT0iQ1JMRiJ9KShIYXx8KEhhPXt9KSk7dmFyIEdhOyhmdW5jdGlvbihlKXtlW2UuTGVmdD0xXT0iTGVmdCIsZVtlLkNlbnRlcj0yXT0iQ2VudGVyIixlW2UuUmlnaHQ9M109IlJpZ2h0In0pKEdhfHwoR2E9e30pKTt2YXIgSmE7KGZ1bmN0aW9uKGUpe2VbZS5JbmNyZWFzZT0wXT0iSW5jcmVhc2UiLGVbZS5EZWNyZWFzZT0xXT0iRGVjcmVhc2UifSkoSmF8fChKYT17fSkpO3ZhciBYYTsoZnVuY3Rpb24oZSl7ZVtlLk5vbmU9MF09Ik5vbmUiLGVbZS5JbmRlbnQ9MV09IkluZGVudCIsZVtlLkluZGVudE91dGRlbnQ9Ml09IkluZGVudE91dGRlbnQiLGVbZS5PdXRkZW50PTNdPSJPdXRkZW50In0pKFhhfHwoWGE9e30pKTt2YXIgWWE7KGZ1bmN0aW9uKGUpe2VbZS5Cb3RoPTBdPSJCb3RoIixlW2UuUmlnaHQ9MV09IlJpZ2h0IixlW2UuTGVmdD0yXT0iTGVmdCIsZVtlLk5vbmU9M109Ik5vbmUifSkoWWF8fChZYT17fSkpO3ZhciBRYTsoZnVuY3Rpb24oZSl7ZVtlLlR5cGU9MV09IlR5cGUiLGVbZS5QYXJhbWV0ZXI9Ml09IlBhcmFtZXRlciJ9KShRYXx8KFFhPXt9KSk7dmFyIEthOyhmdW5jdGlvbihlKXtlW2UuQXV0b21hdGljPTBdPSJBdXRvbWF0aWMiLGVbZS5FeHBsaWNpdD0xXT0iRXhwbGljaXQifSkoS2F8fChLYT17fSkpO3ZhciBaYTsoZnVuY3Rpb24oZSl7ZVtlLkludm9rZT0wXT0iSW52b2tlIixlW2UuQXV0b21hdGljPTFdPSJBdXRvbWF0aWMifSkoWmF8fChaYT17fSkpO3ZhciB1aTsoZnVuY3Rpb24oZSl7ZVtlLkRlcGVuZHNPbktiTGF5b3V0PS0xXT0iRGVwZW5kc09uS2JMYXlvdXQiLGVbZS5Vbmtub3duPTBdPSJVbmtub3duIixlW2UuQmFja3NwYWNlPTFdPSJCYWNrc3BhY2UiLGVbZS5UYWI9Ml09IlRhYiIsZVtlLkVudGVyPTNdPSJFbnRlciIsZVtlLlNoaWZ0PTRdPSJTaGlmdCIsZVtlLkN0cmw9NV09IkN0cmwiLGVbZS5BbHQ9Nl09IkFsdCIsZVtlLlBhdXNlQnJlYWs9N109IlBhdXNlQnJlYWsiLGVbZS5DYXBzTG9jaz04XT0iQ2Fwc0xvY2siLGVbZS5Fc2NhcGU9OV09IkVzY2FwZSIsZVtlLlNwYWNlPTEwXT0iU3BhY2UiLGVbZS5QYWdlVXA9MTFdPSJQYWdlVXAiLGVbZS5QYWdlRG93bj0xMl09IlBhZ2VEb3duIixlW2UuRW5kPTEzXT0iRW5kIixlW2UuSG9tZT0xNF09IkhvbWUiLGVbZS5MZWZ0QXJyb3c9MTVdPSJMZWZ0QXJyb3ciLGVbZS5VcEFycm93PTE2XT0iVXBBcnJvdyIsZVtlLlJpZ2h0QXJyb3c9MTddPSJSaWdodEFycm93IixlW2UuRG93bkFycm93PTE4XT0iRG93bkFycm93IixlW2UuSW5zZXJ0PTE5XT0iSW5zZXJ0IixlW2UuRGVsZXRlPTIwXT0iRGVsZXRlIixlW2UuRGlnaXQwPTIxXT0iRGlnaXQwIixlW2UuRGlnaXQxPTIyXT0iRGlnaXQxIixlW2UuRGlnaXQyPTIzXT0iRGlnaXQyIixlW2UuRGlnaXQzPTI0XT0iRGlnaXQzIixlW2UuRGlnaXQ0PTI1XT0iRGlnaXQ0IixlW2UuRGlnaXQ1PTI2XT0iRGlnaXQ1IixlW2UuRGlnaXQ2PTI3XT0iRGlnaXQ2IixlW2UuRGlnaXQ3PTI4XT0iRGlnaXQ3IixlW2UuRGlnaXQ4PTI5XT0iRGlnaXQ4IixlW2UuRGlnaXQ5PTMwXT0iRGlnaXQ5IixlW2UuS2V5QT0zMV09IktleUEiLGVbZS5LZXlCPTMyXT0iS2V5QiIsZVtlLktleUM9MzNdPSJLZXlDIixlW2UuS2V5RD0zNF09IktleUQiLGVbZS5LZXlFPTM1XT0iS2V5RSIsZVtlLktleUY9MzZdPSJLZXlGIixlW2UuS2V5Rz0zN109IktleUciLGVbZS5LZXlIPTM4XT0iS2V5SCIsZVtlLktleUk9MzldPSJLZXlJIixlW2UuS2V5Sj00MF09IktleUoiLGVbZS5LZXlLPTQxXT0iS2V5SyIsZVtlLktleUw9NDJdPSJLZXlMIixlW2UuS2V5TT00M109IktleU0iLGVbZS5LZXlOPTQ0XT0iS2V5TiIsZVtlLktleU89NDVdPSJLZXlPIixlW2UuS2V5UD00Nl09IktleVAiLGVbZS5LZXlRPTQ3XT0iS2V5USIsZVtlLktleVI9NDhdPSJLZXlSIixlW2UuS2V5Uz00OV09IktleVMiLGVbZS5LZXlUPTUwXT0iS2V5VCIsZVtlLktleVU9NTFdPSJLZXlVIixlW2UuS2V5Vj01Ml09IktleVYiLGVbZS5LZXlXPTUzXT0iS2V5VyIsZVtlLktleVg9NTRdPSJLZXlYIixlW2UuS2V5WT01NV09IktleVkiLGVbZS5LZXlaPTU2XT0iS2V5WiIsZVtlLk1ldGE9NTddPSJNZXRhIixlW2UuQ29udGV4dE1lbnU9NThdPSJDb250ZXh0TWVudSIsZVtlLkYxPTU5XT0iRjEiLGVbZS5GMj02MF09IkYyIixlW2UuRjM9NjFdPSJGMyIsZVtlLkY0PTYyXT0iRjQiLGVbZS5GNT02M109IkY1IixlW2UuRjY9NjRdPSJGNiIsZVtlLkY3PTY1XT0iRjciLGVbZS5GOD02Nl09IkY4IixlW2UuRjk9NjddPSJGOSIsZVtlLkYxMD02OF09IkYxMCIsZVtlLkYxMT02OV09IkYxMSIsZVtlLkYxMj03MF09IkYxMiIsZVtlLkYxMz03MV09IkYxMyIsZVtlLkYxND03Ml09IkYxNCIsZVtlLkYxNT03M109IkYxNSIsZVtlLkYxNj03NF09IkYxNiIsZVtlLkYxNz03NV09IkYxNyIsZVtlLkYxOD03Nl09IkYxOCIsZVtlLkYxOT03N109IkYxOSIsZVtlLkYyMD03OF09IkYyMCIsZVtlLkYyMT03OV09IkYyMSIsZVtlLkYyMj04MF09IkYyMiIsZVtlLkYyMz04MV09IkYyMyIsZVtlLkYyND04Ml09IkYyNCIsZVtlLk51bUxvY2s9ODNdPSJOdW1Mb2NrIixlW2UuU2Nyb2xsTG9jaz04NF09IlNjcm9sbExvY2siLGVbZS5TZW1pY29sb249ODVdPSJTZW1pY29sb24iLGVbZS5FcXVhbD04Nl09IkVxdWFsIixlW2UuQ29tbWE9ODddPSJDb21tYSIsZVtlLk1pbnVzPTg4XT0iTWludXMiLGVbZS5QZXJpb2Q9ODldPSJQZXJpb2QiLGVbZS5TbGFzaD05MF09IlNsYXNoIixlW2UuQmFja3F1b3RlPTkxXT0iQmFja3F1b3RlIixlW2UuQnJhY2tldExlZnQ9OTJdPSJCcmFja2V0TGVmdCIsZVtlLkJhY2tzbGFzaD05M109IkJhY2tzbGFzaCIsZVtlLkJyYWNrZXRSaWdodD05NF09IkJyYWNrZXRSaWdodCIsZVtlLlF1b3RlPTk1XT0iUXVvdGUiLGVbZS5PRU1fOD05Nl09Ik9FTV84IixlW2UuSW50bEJhY2tzbGFzaD05N109IkludGxCYWNrc2xhc2giLGVbZS5OdW1wYWQwPTk4XT0iTnVtcGFkMCIsZVtlLk51bXBhZDE9OTldPSJOdW1wYWQxIixlW2UuTnVtcGFkMj0xMDBdPSJOdW1wYWQyIixlW2UuTnVtcGFkMz0xMDFdPSJOdW1wYWQzIixlW2UuTnVtcGFkND0xMDJdPSJOdW1wYWQ0IixlW2UuTnVtcGFkNT0xMDNdPSJOdW1wYWQ1IixlW2UuTnVtcGFkNj0xMDRdPSJOdW1wYWQ2IixlW2UuTnVtcGFkNz0xMDVdPSJOdW1wYWQ3IixlW2UuTnVtcGFkOD0xMDZdPSJOdW1wYWQ4IixlW2UuTnVtcGFkOT0xMDddPSJOdW1wYWQ5IixlW2UuTnVtcGFkTXVsdGlwbHk9MTA4XT0iTnVtcGFkTXVsdGlwbHkiLGVbZS5OdW1wYWRBZGQ9MTA5XT0iTnVtcGFkQWRkIixlW2UuTlVNUEFEX1NFUEFSQVRPUj0xMTBdPSJOVU1QQURfU0VQQVJBVE9SIixlW2UuTnVtcGFkU3VidHJhY3Q9MTExXT0iTnVtcGFkU3VidHJhY3QiLGVbZS5OdW1wYWREZWNpbWFsPTExMl09Ik51bXBhZERlY2ltYWwiLGVbZS5OdW1wYWREaXZpZGU9MTEzXT0iTnVtcGFkRGl2aWRlIixlW2UuS0VZX0lOX0NPTVBPU0lUSU9OPTExNF09IktFWV9JTl9DT01QT1NJVElPTiIsZVtlLkFCTlRfQzE9MTE1XT0iQUJOVF9DMSIsZVtlLkFCTlRfQzI9MTE2XT0iQUJOVF9DMiIsZVtlLkF1ZGlvVm9sdW1lTXV0ZT0xMTddPSJBdWRpb1ZvbHVtZU11dGUiLGVbZS5BdWRpb1ZvbHVtZVVwPTExOF09IkF1ZGlvVm9sdW1lVXAiLGVbZS5BdWRpb1ZvbHVtZURvd249MTE5XT0iQXVkaW9Wb2x1bWVEb3duIixlW2UuQnJvd3NlclNlYXJjaD0xMjBdPSJCcm93c2VyU2VhcmNoIixlW2UuQnJvd3NlckhvbWU9MTIxXT0iQnJvd3NlckhvbWUiLGVbZS5Ccm93c2VyQmFjaz0xMjJdPSJCcm93c2VyQmFjayIsZVtlLkJyb3dzZXJGb3J3YXJkPTEyM109IkJyb3dzZXJGb3J3YXJkIixlW2UuTWVkaWFUcmFja05leHQ9MTI0XT0iTWVkaWFUcmFja05leHQiLGVbZS5NZWRpYVRyYWNrUHJldmlvdXM9MTI1XT0iTWVkaWFUcmFja1ByZXZpb3VzIixlW2UuTWVkaWFTdG9wPTEyNl09Ik1lZGlhU3RvcCIsZVtlLk1lZGlhUGxheVBhdXNlPTEyN109Ik1lZGlhUGxheVBhdXNlIixlW2UuTGF1bmNoTWVkaWFQbGF5ZXI9MTI4XT0iTGF1bmNoTWVkaWFQbGF5ZXIiLGVbZS5MYXVuY2hNYWlsPTEyOV09IkxhdW5jaE1haWwiLGVbZS5MYXVuY2hBcHAyPTEzMF09IkxhdW5jaEFwcDIiLGVbZS5DbGVhcj0xMzFdPSJDbGVhciIsZVtlLk1BWF9WQUxVRT0xMzJdPSJNQVhfVkFMVUUifSkodWl8fCh1aT17fSkpO3ZhciBwaTsoZnVuY3Rpb24oZSl7ZVtlLkhpbnQ9MV09IkhpbnQiLGVbZS5JbmZvPTJdPSJJbmZvIixlW2UuV2FybmluZz00XT0iV2FybmluZyIsZVtlLkVycm9yPThdPSJFcnJvciJ9KShwaXx8KHBpPXt9KSk7dmFyIG1pOyhmdW5jdGlvbihlKXtlW2UuVW5uZWNlc3Nhcnk9MV09IlVubmVjZXNzYXJ5IixlW2UuRGVwcmVjYXRlZD0yXT0iRGVwcmVjYXRlZCJ9KShtaXx8KG1pPXt9KSk7dmFyIGVvOyhmdW5jdGlvbihlKXtlW2UuSW5saW5lPTFdPSJJbmxpbmUiLGVbZS5HdXR0ZXI9Ml09Ikd1dHRlciJ9KShlb3x8KGVvPXt9KSk7dmFyIHRvOyhmdW5jdGlvbihlKXtlW2UuTm9ybWFsPTFdPSJOb3JtYWwiLGVbZS5VbmRlcmxpbmVkPTJdPSJVbmRlcmxpbmVkIn0pKHRvfHwodG89e30pKTt2YXIgbm87KGZ1bmN0aW9uKGUpe2VbZS5VTktOT1dOPTBdPSJVTktOT1dOIixlW2UuVEVYVEFSRUE9MV09IlRFWFRBUkVBIixlW2UuR1VUVEVSX0dMWVBIX01BUkdJTj0yXT0iR1VUVEVSX0dMWVBIX01BUkdJTiIsZVtlLkdVVFRFUl9MSU5FX05VTUJFUlM9M109IkdVVFRFUl9MSU5FX05VTUJFUlMiLGVbZS5HVVRURVJfTElORV9ERUNPUkFUSU9OUz00XT0iR1VUVEVSX0xJTkVfREVDT1JBVElPTlMiLGVbZS5HVVRURVJfVklFV19aT05FPTVdPSJHVVRURVJfVklFV19aT05FIixlW2UuQ09OVEVOVF9URVhUPTZdPSJDT05URU5UX1RFWFQiLGVbZS5DT05URU5UX0VNUFRZPTddPSJDT05URU5UX0VNUFRZIixlW2UuQ09OVEVOVF9WSUVXX1pPTkU9OF09IkNPTlRFTlRfVklFV19aT05FIixlW2UuQ09OVEVOVF9XSURHRVQ9OV09IkNPTlRFTlRfV0lER0VUIixlW2UuT1ZFUlZJRVdfUlVMRVI9MTBdPSJPVkVSVklFV19SVUxFUiIsZVtlLlNDUk9MTEJBUj0xMV09IlNDUk9MTEJBUiIsZVtlLk9WRVJMQVlfV0lER0VUPTEyXT0iT1ZFUkxBWV9XSURHRVQiLGVbZS5PVVRTSURFX0VESVRPUj0xM109Ik9VVFNJREVfRURJVE9SIn0pKG5vfHwobm89e30pKTt2YXIgcm87KGZ1bmN0aW9uKGUpe2VbZS5BSUdlbmVyYXRlZD0xXT0iQUlHZW5lcmF0ZWQifSkocm98fChybz17fSkpO3ZhciBpbzsoZnVuY3Rpb24oZSl7ZVtlLkludm9rZT0wXT0iSW52b2tlIixlW2UuQXV0b21hdGljPTFdPSJBdXRvbWF0aWMifSkoaW98fChpbz17fSkpO3ZhciBzbzsoZnVuY3Rpb24oZSl7ZVtlLlRPUF9SSUdIVF9DT1JORVI9MF09IlRPUF9SSUdIVF9DT1JORVIiLGVbZS5CT1RUT01fUklHSFRfQ09STkVSPTFdPSJCT1RUT01fUklHSFRfQ09STkVSIixlW2UuVE9QX0NFTlRFUj0yXT0iVE9QX0NFTlRFUiJ9KShzb3x8KHNvPXt9KSk7dmFyIGFvOyhmdW5jdGlvbihlKXtlW2UuTGVmdD0xXT0iTGVmdCIsZVtlLkNlbnRlcj0yXT0iQ2VudGVyIixlW2UuUmlnaHQ9NF09IlJpZ2h0IixlW2UuRnVsbD03XT0iRnVsbCJ9KShhb3x8KGFvPXt9KSk7dmFyIG9vOyhmdW5jdGlvbihlKXtlW2UuV29yZD0wXT0iV29yZCIsZVtlLkxpbmU9MV09IkxpbmUiLGVbZS5TdWdnZXN0PTJdPSJTdWdnZXN0In0pKG9vfHwob289e30pKTt2YXIgbG87KGZ1bmN0aW9uKGUpe2VbZS5MZWZ0PTBdPSJMZWZ0IixlW2UuUmlnaHQ9MV09IlJpZ2h0IixlW2UuTm9uZT0yXT0iTm9uZSIsZVtlLkxlZnRPZkluamVjdGVkVGV4dD0zXT0iTGVmdE9mSW5qZWN0ZWRUZXh0IixlW2UuUmlnaHRPZkluamVjdGVkVGV4dD00XT0iUmlnaHRPZkluamVjdGVkVGV4dCJ9KShsb3x8KGxvPXt9KSk7dmFyIGNvOyhmdW5jdGlvbihlKXtlW2UuT2ZmPTBdPSJPZmYiLGVbZS5Pbj0xXT0iT24iLGVbZS5SZWxhdGl2ZT0yXT0iUmVsYXRpdmUiLGVbZS5JbnRlcnZhbD0zXT0iSW50ZXJ2YWwiLGVbZS5DdXN0b209NF09IkN1c3RvbSJ9KShjb3x8KGNvPXt9KSk7dmFyIGhvOyhmdW5jdGlvbihlKXtlW2UuTm9uZT0wXT0iTm9uZSIsZVtlLlRleHQ9MV09IlRleHQiLGVbZS5CbG9ja3M9Ml09IkJsb2NrcyJ9KShob3x8KGhvPXt9KSk7dmFyIHVvOyhmdW5jdGlvbihlKXtlW2UuU21vb3RoPTBdPSJTbW9vdGgiLGVbZS5JbW1lZGlhdGU9MV09IkltbWVkaWF0ZSJ9KSh1b3x8KHVvPXt9KSk7dmFyIHBvOyhmdW5jdGlvbihlKXtlW2UuQXV0bz0xXT0iQXV0byIsZVtlLkhpZGRlbj0yXT0iSGlkZGVuIixlW2UuVmlzaWJsZT0zXT0iVmlzaWJsZSJ9KShwb3x8KHBvPXt9KSk7dmFyIGZpOyhmdW5jdGlvbihlKXtlW2UuTFRSPTBdPSJMVFIiLGVbZS5SVEw9MV09IlJUTCJ9KShmaXx8KGZpPXt9KSk7dmFyIG1vOyhmdW5jdGlvbihlKXtlLk9mZj0ib2ZmIixlLk9uQ29kZT0ib25Db2RlIixlLk9uPSJvbiJ9KShtb3x8KG1vPXt9KSk7dmFyIGZvOyhmdW5jdGlvbihlKXtlW2UuSW52b2tlPTFdPSJJbnZva2UiLGVbZS5UcmlnZ2VyQ2hhcmFjdGVyPTJdPSJUcmlnZ2VyQ2hhcmFjdGVyIixlW2UuQ29udGVudENoYW5nZT0zXT0iQ29udGVudENoYW5nZSJ9KShmb3x8KGZvPXt9KSk7dmFyIGdvOyhmdW5jdGlvbihlKXtlW2UuRmlsZT0wXT0iRmlsZSIsZVtlLk1vZHVsZT0xXT0iTW9kdWxlIixlW2UuTmFtZXNwYWNlPTJdPSJOYW1lc3BhY2UiLGVbZS5QYWNrYWdlPTNdPSJQYWNrYWdlIixlW2UuQ2xhc3M9NF09IkNsYXNzIixlW2UuTWV0aG9kPTVdPSJNZXRob2QiLGVbZS5Qcm9wZXJ0eT02XT0iUHJvcGVydHkiLGVbZS5GaWVsZD03XT0iRmllbGQiLGVbZS5Db25zdHJ1Y3Rvcj04XT0iQ29uc3RydWN0b3IiLGVbZS5FbnVtPTldPSJFbnVtIixlW2UuSW50ZXJmYWNlPTEwXT0iSW50ZXJmYWNlIixlW2UuRnVuY3Rpb249MTFdPSJGdW5jdGlvbiIsZVtlLlZhcmlhYmxlPTEyXT0iVmFyaWFibGUiLGVbZS5Db25zdGFudD0xM109IkNvbnN0YW50IixlW2UuU3RyaW5nPTE0XT0iU3RyaW5nIixlW2UuTnVtYmVyPTE1XT0iTnVtYmVyIixlW2UuQm9vbGVhbj0xNl09IkJvb2xlYW4iLGVbZS5BcnJheT0xN109IkFycmF5IixlW2UuT2JqZWN0PTE4XT0iT2JqZWN0IixlW2UuS2V5PTE5XT0iS2V5IixlW2UuTnVsbD0yMF09Ik51bGwiLGVbZS5FbnVtTWVtYmVyPTIxXT0iRW51bU1lbWJlciIsZVtlLlN0cnVjdD0yMl09IlN0cnVjdCIsZVtlLkV2ZW50PTIzXT0iRXZlbnQiLGVbZS5PcGVyYXRvcj0yNF09Ik9wZXJhdG9yIixlW2UuVHlwZVBhcmFtZXRlcj0yNV09IlR5cGVQYXJhbWV0ZXIifSkoZ298fChnbz17fSkpO3ZhciBibzsoZnVuY3Rpb24oZSl7ZVtlLkRlcHJlY2F0ZWQ9MV09IkRlcHJlY2F0ZWQifSkoYm98fChibz17fSkpO3ZhciB2bzsoZnVuY3Rpb24oZSl7ZVtlLkhpZGRlbj0wXT0iSGlkZGVuIixlW2UuQmxpbms9MV09IkJsaW5rIixlW2UuU21vb3RoPTJdPSJTbW9vdGgiLGVbZS5QaGFzZT0zXT0iUGhhc2UiLGVbZS5FeHBhbmQ9NF09IkV4cGFuZCIsZVtlLlNvbGlkPTVdPSJTb2xpZCJ9KSh2b3x8KHZvPXt9KSk7dmFyIHdvOyhmdW5jdGlvbihlKXtlW2UuTGluZT0xXT0iTGluZSIsZVtlLkJsb2NrPTJdPSJCbG9jayIsZVtlLlVuZGVybGluZT0zXT0iVW5kZXJsaW5lIixlW2UuTGluZVRoaW49NF09IkxpbmVUaGluIixlW2UuQmxvY2tPdXRsaW5lPTVdPSJCbG9ja091dGxpbmUiLGVbZS5VbmRlcmxpbmVUaGluPTZdPSJVbmRlcmxpbmVUaGluIn0pKHdvfHwod289e30pKTt2YXIgeW87KGZ1bmN0aW9uKGUpe2VbZS5BbHdheXNHcm93c1doZW5UeXBpbmdBdEVkZ2VzPTBdPSJBbHdheXNHcm93c1doZW5UeXBpbmdBdEVkZ2VzIixlW2UuTmV2ZXJHcm93c1doZW5UeXBpbmdBdEVkZ2VzPTFdPSJOZXZlckdyb3dzV2hlblR5cGluZ0F0RWRnZXMiLGVbZS5Hcm93c09ubHlXaGVuVHlwaW5nQmVmb3JlPTJdPSJHcm93c09ubHlXaGVuVHlwaW5nQmVmb3JlIixlW2UuR3Jvd3NPbmx5V2hlblR5cGluZ0FmdGVyPTNdPSJHcm93c09ubHlXaGVuVHlwaW5nQWZ0ZXIifSkoeW98fCh5bz17fSkpO3ZhciB4bzsoZnVuY3Rpb24oZSl7ZVtlLk5vbmU9MF09Ik5vbmUiLGVbZS5TYW1lPTFdPSJTYW1lIixlW2UuSW5kZW50PTJdPSJJbmRlbnQiLGVbZS5EZWVwSW5kZW50PTNdPSJEZWVwSW5kZW50In0pKHhvfHwoeG89e30pKTtjb25zdCBzbj1jbGFzcyBzbntzdGF0aWMgY2hvcmQodCxuKXtyZXR1cm4gV2QodCxuKX19O3NuLkN0cmxDbWQ9MjA0OCxzbi5TaGlmdD0xMDI0LHNuLkFsdD01MTIsc24uV2luQ3RybD0yNTY7bGV0IGdpPXNuO2Z1bmN0aW9uIGpkKCl7cmV0dXJue2VkaXRvcjp2b2lkIDAsbGFuZ3VhZ2VzOnZvaWQgMCxDYW5jZWxsYXRpb25Ub2tlblNvdXJjZTp6ZCxFbWl0dGVyOkRlLEtleUNvZGU6dWksS2V5TW9kOmdpLFBvc2l0aW9uOmhlLFJhbmdlOlEsU2VsZWN0aW9uOkZlLFNlbGVjdGlvbkRpcmVjdGlvbjpmaSxNYXJrZXJTZXZlcml0eTpwaSxNYXJrZXJUYWc6bWksVXJpOlZlLFRva2VuOnFkfX1jb25zdCBQbj1jbGFzcyBQbntzdGF0aWMgZ2V0Q2hhbm5lbCh0KXtyZXR1cm4gdC5nZXRDaGFubmVsKFBuLkNIQU5ORUxfTkFNRSl9c3RhdGljIHNldENoYW5uZWwodCxuKXt0LnNldENoYW5uZWwoUG4uQ0hBTk5FTF9OQU1FLG4pfX07UG4uQ0hBTk5FTF9OQU1FPSJlZGl0b3JXb3JrZXJIb3N0IjtsZXQgYmk9UG47dmFyIFNvO2NsYXNzIEhke2NvbnN0cnVjdG9yKCl7dGhpc1tTb109IkxpbmtlZE1hcCIsdGhpcy5fbWFwPW5ldyBNYXAsdGhpcy5faGVhZD12b2lkIDAsdGhpcy5fdGFpbD12b2lkIDAsdGhpcy5fc2l6ZT0wLHRoaXMuX3N0YXRlPTB9Y2xlYXIoKXt0aGlzLl9tYXAuY2xlYXIoKSx0aGlzLl9oZWFkPXZvaWQgMCx0aGlzLl90YWlsPXZvaWQgMCx0aGlzLl9zaXplPTAsdGhpcy5fc3RhdGUrK31pc0VtcHR5KCl7cmV0dXJuIXRoaXMuX2hlYWQmJiF0aGlzLl90YWlsfWdldCBzaXplKCl7cmV0dXJuIHRoaXMuX3NpemV9Z2V0IGZpcnN0KCl7cmV0dXJuIHRoaXMuX2hlYWQ/LnZhbHVlfWdldCBsYXN0KCl7cmV0dXJuIHRoaXMuX3RhaWw/LnZhbHVlfWhhcyh0KXtyZXR1cm4gdGhpcy5fbWFwLmhhcyh0KX1nZXQodCxuPTApe2NvbnN0IHI9dGhpcy5fbWFwLmdldCh0KTtpZihyKXJldHVybiBuIT09MCYmdGhpcy50b3VjaChyLG4pLHIudmFsdWV9c2V0KHQsbixyPTApe2xldCBpPXRoaXMuX21hcC5nZXQodCk7aWYoaSlpLnZhbHVlPW4sciE9PTAmJnRoaXMudG91Y2goaSxyKTtlbHNle3N3aXRjaChpPXtrZXk6dCx2YWx1ZTpuLG5leHQ6dm9pZCAwLHByZXZpb3VzOnZvaWQgMH0scil7Y2FzZSAwOnRoaXMuYWRkSXRlbUxhc3QoaSk7YnJlYWs7Y2FzZSAxOnRoaXMuYWRkSXRlbUZpcnN0KGkpO2JyZWFrO2Nhc2UgMjp0aGlzLmFkZEl0ZW1MYXN0KGkpO2JyZWFrO2RlZmF1bHQ6dGhpcy5hZGRJdGVtTGFzdChpKTticmVha310aGlzLl9tYXAuc2V0KHQsaSksdGhpcy5fc2l6ZSsrfXJldHVybiB0aGlzfWRlbGV0ZSh0KXtyZXR1cm4hIXRoaXMucmVtb3ZlKHQpfXJlbW92ZSh0KXtjb25zdCBuPXRoaXMuX21hcC5nZXQodCk7aWYobilyZXR1cm4gdGhpcy5fbWFwLmRlbGV0ZSh0KSx0aGlzLnJlbW92ZUl0ZW0obiksdGhpcy5fc2l6ZS0tLG4udmFsdWV9c2hpZnQoKXtpZighdGhpcy5faGVhZCYmIXRoaXMuX3RhaWwpcmV0dXJuO2lmKCF0aGlzLl9oZWFkfHwhdGhpcy5fdGFpbCl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgbGlzdCIpO2NvbnN0IHQ9dGhpcy5faGVhZDtyZXR1cm4gdGhpcy5fbWFwLmRlbGV0ZSh0LmtleSksdGhpcy5yZW1vdmVJdGVtKHQpLHRoaXMuX3NpemUtLSx0LnZhbHVlfWZvckVhY2godCxuKXtjb25zdCByPXRoaXMuX3N0YXRlO2xldCBpPXRoaXMuX2hlYWQ7Zm9yKDtpOyl7aWYobj90LmJpbmQobikoaS52YWx1ZSxpLmtleSx0aGlzKTp0KGkudmFsdWUsaS5rZXksdGhpcyksdGhpcy5fc3RhdGUhPT1yKXRocm93IG5ldyBFcnJvcigiTGlua2VkTWFwIGdvdCBtb2RpZmllZCBkdXJpbmcgaXRlcmF0aW9uLiIpO2k9aS5uZXh0fX1rZXlzKCl7Y29uc3QgdD10aGlzLG49dGhpcy5fc3RhdGU7bGV0IHI9dGhpcy5faGVhZDtjb25zdCBpPXtbU3ltYm9sLml0ZXJhdG9yXSgpe3JldHVybiBpfSxuZXh0KCl7aWYodC5fc3RhdGUhPT1uKXRocm93IG5ldyBFcnJvcigiTGlua2VkTWFwIGdvdCBtb2RpZmllZCBkdXJpbmcgaXRlcmF0aW9uLiIpO2lmKHIpe2NvbnN0IHM9e3ZhbHVlOnIua2V5LGRvbmU6ITF9O3JldHVybiByPXIubmV4dCxzfWVsc2UgcmV0dXJue3ZhbHVlOnZvaWQgMCxkb25lOiEwfX19O3JldHVybiBpfXZhbHVlcygpe2NvbnN0IHQ9dGhpcyxuPXRoaXMuX3N0YXRlO2xldCByPXRoaXMuX2hlYWQ7Y29uc3QgaT17W1N5bWJvbC5pdGVyYXRvcl0oKXtyZXR1cm4gaX0sbmV4dCgpe2lmKHQuX3N0YXRlIT09bil0aHJvdyBuZXcgRXJyb3IoIkxpbmtlZE1hcCBnb3QgbW9kaWZpZWQgZHVyaW5nIGl0ZXJhdGlvbi4iKTtpZihyKXtjb25zdCBzPXt2YWx1ZTpyLnZhbHVlLGRvbmU6ITF9O3JldHVybiByPXIubmV4dCxzfWVsc2UgcmV0dXJue3ZhbHVlOnZvaWQgMCxkb25lOiEwfX19O3JldHVybiBpfWVudHJpZXMoKXtjb25zdCB0PXRoaXMsbj10aGlzLl9zdGF0ZTtsZXQgcj10aGlzLl9oZWFkO2NvbnN0IGk9e1tTeW1ib2wuaXRlcmF0b3JdKCl7cmV0dXJuIGl9LG5leHQoKXtpZih0Ll9zdGF0ZSE9PW4pdGhyb3cgbmV3IEVycm9yKCJMaW5rZWRNYXAgZ290IG1vZGlmaWVkIGR1cmluZyBpdGVyYXRpb24uIik7aWYocil7Y29uc3Qgcz17dmFsdWU6W3Iua2V5LHIudmFsdWVdLGRvbmU6ITF9O3JldHVybiByPXIubmV4dCxzfWVsc2UgcmV0dXJue3ZhbHVlOnZvaWQgMCxkb25lOiEwfX19O3JldHVybiBpfVsoU289U3ltYm9sLnRvU3RyaW5nVGFnLFN5bWJvbC5pdGVyYXRvcildKCl7cmV0dXJuIHRoaXMuZW50cmllcygpfXRyaW1PbGQodCl7aWYodD49dGhpcy5zaXplKXJldHVybjtpZih0PT09MCl7dGhpcy5jbGVhcigpO3JldHVybn1sZXQgbj10aGlzLl9oZWFkLHI9dGhpcy5zaXplO2Zvcig7biYmcj50Oyl0aGlzLl9tYXAuZGVsZXRlKG4ua2V5KSxuPW4ubmV4dCxyLS07dGhpcy5faGVhZD1uLHRoaXMuX3NpemU9cixuJiYobi5wcmV2aW91cz12b2lkIDApLHRoaXMuX3N0YXRlKyt9dHJpbU5ldyh0KXtpZih0Pj10aGlzLnNpemUpcmV0dXJuO2lmKHQ9PT0wKXt0aGlzLmNsZWFyKCk7cmV0dXJufWxldCBuPXRoaXMuX3RhaWwscj10aGlzLnNpemU7Zm9yKDtuJiZyPnQ7KXRoaXMuX21hcC5kZWxldGUobi5rZXkpLG49bi5wcmV2aW91cyxyLS07dGhpcy5fdGFpbD1uLHRoaXMuX3NpemU9cixuJiYobi5uZXh0PXZvaWQgMCksdGhpcy5fc3RhdGUrK31hZGRJdGVtRmlyc3QodCl7aWYoIXRoaXMuX2hlYWQmJiF0aGlzLl90YWlsKXRoaXMuX3RhaWw9dDtlbHNlIGlmKHRoaXMuX2hlYWQpdC5uZXh0PXRoaXMuX2hlYWQsdGhpcy5faGVhZC5wcmV2aW91cz10O2Vsc2UgdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGxpc3QiKTt0aGlzLl9oZWFkPXQsdGhpcy5fc3RhdGUrK31hZGRJdGVtTGFzdCh0KXtpZighdGhpcy5faGVhZCYmIXRoaXMuX3RhaWwpdGhpcy5faGVhZD10O2Vsc2UgaWYodGhpcy5fdGFpbCl0LnByZXZpb3VzPXRoaXMuX3RhaWwsdGhpcy5fdGFpbC5uZXh0PXQ7ZWxzZSB0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgbGlzdCIpO3RoaXMuX3RhaWw9dCx0aGlzLl9zdGF0ZSsrfXJlbW92ZUl0ZW0odCl7aWYodD09PXRoaXMuX2hlYWQmJnQ9PT10aGlzLl90YWlsKXRoaXMuX2hlYWQ9dm9pZCAwLHRoaXMuX3RhaWw9dm9pZCAwO2Vsc2UgaWYodD09PXRoaXMuX2hlYWQpe2lmKCF0Lm5leHQpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGxpc3QiKTt0Lm5leHQucHJldmlvdXM9dm9pZCAwLHRoaXMuX2hlYWQ9dC5uZXh0fWVsc2UgaWYodD09PXRoaXMuX3RhaWwpe2lmKCF0LnByZXZpb3VzKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBsaXN0Iik7dC5wcmV2aW91cy5uZXh0PXZvaWQgMCx0aGlzLl90YWlsPXQucHJldmlvdXN9ZWxzZXtjb25zdCBuPXQubmV4dCxyPXQucHJldmlvdXM7aWYoIW58fCFyKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBsaXN0Iik7bi5wcmV2aW91cz1yLHIubmV4dD1ufXQubmV4dD12b2lkIDAsdC5wcmV2aW91cz12b2lkIDAsdGhpcy5fc3RhdGUrK310b3VjaCh0LG4pe2lmKCF0aGlzLl9oZWFkfHwhdGhpcy5fdGFpbCl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgbGlzdCIpO2lmKCEobiE9PTEmJm4hPT0yKSl7aWYobj09PTEpe2lmKHQ9PT10aGlzLl9oZWFkKXJldHVybjtjb25zdCByPXQubmV4dCxpPXQucHJldmlvdXM7dD09PXRoaXMuX3RhaWw/KGkubmV4dD12b2lkIDAsdGhpcy5fdGFpbD1pKTooci5wcmV2aW91cz1pLGkubmV4dD1yKSx0LnByZXZpb3VzPXZvaWQgMCx0Lm5leHQ9dGhpcy5faGVhZCx0aGlzLl9oZWFkLnByZXZpb3VzPXQsdGhpcy5faGVhZD10LHRoaXMuX3N0YXRlKyt9ZWxzZSBpZihuPT09Mil7aWYodD09PXRoaXMuX3RhaWwpcmV0dXJuO2NvbnN0IHI9dC5uZXh0LGk9dC5wcmV2aW91czt0PT09dGhpcy5faGVhZD8oci5wcmV2aW91cz12b2lkIDAsdGhpcy5faGVhZD1yKTooci5wcmV2aW91cz1pLGkubmV4dD1yKSx0Lm5leHQ9dm9pZCAwLHQucHJldmlvdXM9dGhpcy5fdGFpbCx0aGlzLl90YWlsLm5leHQ9dCx0aGlzLl90YWlsPXQsdGhpcy5fc3RhdGUrK319fXRvSlNPTigpe2NvbnN0IHQ9W107cmV0dXJuIHRoaXMuZm9yRWFjaCgobixyKT0+e3QucHVzaChbcixuXSl9KSx0fWZyb21KU09OKHQpe3RoaXMuY2xlYXIoKTtmb3IoY29uc3RbbixyXW9mIHQpdGhpcy5zZXQobixyKX19Y2xhc3MgR2QgZXh0ZW5kcyBIZHtjb25zdHJ1Y3Rvcih0LG49MSl7c3VwZXIoKSx0aGlzLl9saW1pdD10LHRoaXMuX3JhdGlvPU1hdGgubWluKE1hdGgubWF4KDAsbiksMSl9Z2V0IGxpbWl0KCl7cmV0dXJuIHRoaXMuX2xpbWl0fXNldCBsaW1pdCh0KXt0aGlzLl9saW1pdD10LHRoaXMuY2hlY2tUcmltKCl9Z2V0KHQsbj0yKXtyZXR1cm4gc3VwZXIuZ2V0KHQsbil9cGVlayh0KXtyZXR1cm4gc3VwZXIuZ2V0KHQsMCl9c2V0KHQsbil7cmV0dXJuIHN1cGVyLnNldCh0LG4sMiksdGhpc31jaGVja1RyaW0oKXt0aGlzLnNpemU+dGhpcy5fbGltaXQmJnRoaXMudHJpbShNYXRoLnJvdW5kKHRoaXMuX2xpbWl0KnRoaXMuX3JhdGlvKSl9fWNsYXNzIEpkIGV4dGVuZHMgR2R7Y29uc3RydWN0b3IodCxuPTEpe3N1cGVyKHQsbil9dHJpbSh0KXt0aGlzLnRyaW1PbGQodCl9c2V0KHQsbil7cmV0dXJuIHN1cGVyLnNldCh0LG4pLHRoaXMuY2hlY2tUcmltKCksdGhpc319Y2xhc3MgWGR7Y29uc3RydWN0b3IoKXt0aGlzLm1hcD1uZXcgTWFwfWFkZCh0LG4pe2xldCByPXRoaXMubWFwLmdldCh0KTtyfHwocj1uZXcgU2V0LHRoaXMubWFwLnNldCh0LHIpKSxyLmFkZChuKX1kZWxldGUodCxuKXtjb25zdCByPXRoaXMubWFwLmdldCh0KTtyJiYoci5kZWxldGUobiksci5zaXplPT09MCYmdGhpcy5tYXAuZGVsZXRlKHQpKX1mb3JFYWNoKHQsbil7Y29uc3Qgcj10aGlzLm1hcC5nZXQodCk7ciYmci5mb3JFYWNoKG4pfWdldCh0KXtjb25zdCBuPXRoaXMubWFwLmdldCh0KTtyZXR1cm4gbnx8bmV3IFNldH19bmV3IEpkKDEwKTtmdW5jdGlvbiBZZChlKXtsZXQgdD1bXTtmb3IoO09iamVjdC5wcm90b3R5cGUhPT1lOyl0PXQuY29uY2F0KE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGUpKSxlPU9iamVjdC5nZXRQcm90b3R5cGVPZihlKTtyZXR1cm4gdH1mdW5jdGlvbiBDbyhlKXtjb25zdCB0PVtdO2Zvcihjb25zdCBuIG9mIFlkKGUpKXR5cGVvZiBlW25dPT0iZnVuY3Rpb24iJiZ0LnB1c2gobik7cmV0dXJuIHR9ZnVuY3Rpb24gUWQoZSx0KXtjb25zdCBuPWk9PmZ1bmN0aW9uKCl7Y29uc3Qgcz1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMCk7cmV0dXJuIHQoaSxzKX0scj17fTtmb3IoY29uc3QgaSBvZiBlKXJbaV09bihpKTtyZXR1cm4gcn12YXIgX287KGZ1bmN0aW9uKGUpe2VbZS5MZWZ0PTFdPSJMZWZ0IixlW2UuQ2VudGVyPTJdPSJDZW50ZXIiLGVbZS5SaWdodD00XT0iUmlnaHQiLGVbZS5GdWxsPTddPSJGdWxsIn0pKF9vfHwoX289e30pKTt2YXIga287KGZ1bmN0aW9uKGUpe2VbZS5MZWZ0PTFdPSJMZWZ0IixlW2UuQ2VudGVyPTJdPSJDZW50ZXIiLGVbZS5SaWdodD0zXT0iUmlnaHQifSkoa298fChrbz17fSkpO3ZhciBFbzsoZnVuY3Rpb24oZSl7ZVtlLkJvdGg9MF09IkJvdGgiLGVbZS5SaWdodD0xXT0iUmlnaHQiLGVbZS5MZWZ0PTJdPSJMZWZ0IixlW2UuTm9uZT0zXT0iTm9uZSJ9KShFb3x8KEVvPXt9KSk7ZnVuY3Rpb24gS2QoZSx0LG4scixpKXtpZihyPT09MClyZXR1cm4hMDtjb25zdCBzPXQuY2hhckNvZGVBdChyLTEpO2lmKGUuZ2V0KHMpIT09MHx8cz09PTEzfHxzPT09MTApcmV0dXJuITA7aWYoaT4wKXtjb25zdCBhPXQuY2hhckNvZGVBdChyKTtpZihlLmdldChhKSE9PTApcmV0dXJuITB9cmV0dXJuITF9ZnVuY3Rpb24gWmQoZSx0LG4scixpKXtpZihyK2k9PT1uKXJldHVybiEwO2NvbnN0IHM9dC5jaGFyQ29kZUF0KHIraSk7aWYoZS5nZXQocykhPT0wfHxzPT09MTN8fHM9PT0xMClyZXR1cm4hMDtpZihpPjApe2NvbnN0IGE9dC5jaGFyQ29kZUF0KHIraS0xKTtpZihlLmdldChhKSE9PTApcmV0dXJuITB9cmV0dXJuITF9ZnVuY3Rpb24gZXUoZSx0LG4scixpKXtyZXR1cm4gS2QoZSx0LG4scixpKSYmWmQoZSx0LG4scixpKX1jbGFzcyB0dXtjb25zdHJ1Y3Rvcih0LG4pe3RoaXMuX3dvcmRTZXBhcmF0b3JzPXQsdGhpcy5fc2VhcmNoUmVnZXg9bix0aGlzLl9wcmV2TWF0Y2hTdGFydEluZGV4PS0xLHRoaXMuX3ByZXZNYXRjaExlbmd0aD0wfXJlc2V0KHQpe3RoaXMuX3NlYXJjaFJlZ2V4Lmxhc3RJbmRleD10LHRoaXMuX3ByZXZNYXRjaFN0YXJ0SW5kZXg9LTEsdGhpcy5fcHJldk1hdGNoTGVuZ3RoPTB9bmV4dCh0KXtjb25zdCBuPXQubGVuZ3RoO2xldCByO2Rve2lmKHRoaXMuX3ByZXZNYXRjaFN0YXJ0SW5kZXgrdGhpcy5fcHJldk1hdGNoTGVuZ3RoPT09bnx8KHI9dGhpcy5fc2VhcmNoUmVnZXguZXhlYyh0KSwhcikpcmV0dXJuIG51bGw7Y29uc3QgaT1yLmluZGV4LHM9clswXS5sZW5ndGg7aWYoaT09PXRoaXMuX3ByZXZNYXRjaFN0YXJ0SW5kZXgmJnM9PT10aGlzLl9wcmV2TWF0Y2hMZW5ndGgpe2lmKHM9PT0wKXtKaCh0LG4sdGhpcy5fc2VhcmNoUmVnZXgubGFzdEluZGV4KT42NTUzNT90aGlzLl9zZWFyY2hSZWdleC5sYXN0SW5kZXgrPTI6dGhpcy5fc2VhcmNoUmVnZXgubGFzdEluZGV4Kz0xO2NvbnRpbnVlfXJldHVybiBudWxsfWlmKHRoaXMuX3ByZXZNYXRjaFN0YXJ0SW5kZXg9aSx0aGlzLl9wcmV2TWF0Y2hMZW5ndGg9cywhdGhpcy5fd29yZFNlcGFyYXRvcnN8fGV1KHRoaXMuX3dvcmRTZXBhcmF0b3JzLHQsbixpLHMpKXJldHVybiByfXdoaWxlKHIpO3JldHVybiBudWxsfX1mdW5jdGlvbiBudShlLHQ9IlVucmVhY2hhYmxlIil7dGhyb3cgbmV3IEVycm9yKHQpfWZ1bmN0aW9uIFFuKGUpe2lmKCFlKCkpe2RlYnVnZ2VyO2UoKSxXZShuZXcga2UoIkFzc2VydGlvbiBGYWlsZWQiKSl9fWZ1bmN0aW9uIEZvKGUsdCl7bGV0IG49MDtmb3IoO248ZS5sZW5ndGgtMTspe2NvbnN0IHI9ZVtuXSxpPWVbbisxXTtpZighdChyLGkpKXJldHVybiExO24rK31yZXR1cm4hMH1jb25zdCBydT0iYH4hQCMkJV4mKigpLT0rW3tdfVxcfDs6J1wiLC48Pi8/IjtmdW5jdGlvbiBpdShlPSIiKXtsZXQgdD0iKC0/XFxkKlxcLlxcZFxcdyopfChbXiI7Zm9yKGNvbnN0IG4gb2YgcnUpZS5pbmRleE9mKG4pPj0wfHwodCs9IlxcIituKTtyZXR1cm4gdCs9Ilxcc10rKSIsbmV3IFJlZ0V4cCh0LCJnIil9Y29uc3QgUm89aXUoKTtmdW5jdGlvbiBObyhlKXtsZXQgdD1SbztpZihlJiZlIGluc3RhbmNlb2YgUmVnRXhwKWlmKGUuZ2xvYmFsKXQ9ZTtlbHNle2xldCBuPSJnIjtlLmlnbm9yZUNhc2UmJihuKz0iaSIpLGUubXVsdGlsaW5lJiYobis9Im0iKSxlLnVuaWNvZGUmJihuKz0idSIpLHQ9bmV3IFJlZ0V4cChlLnNvdXJjZSxuKX1yZXR1cm4gdC5sYXN0SW5kZXg9MCx0fWNvbnN0IERvPW5ldyBraDtEby51bnNoaWZ0KHttYXhMZW46MWUzLHdpbmRvd1NpemU6MTUsdGltZUJ1ZGdldDoxNTB9KTtmdW5jdGlvbiB2aShlLHQsbixyLGkpe2lmKHQ9Tm8odCksaXx8KGk9T24uZmlyc3QoRG8pKSxuLmxlbmd0aD5pLm1heExlbil7bGV0IGM9ZS1pLm1heExlbi8yO3JldHVybiBjPDA/Yz0wOnIrPWMsbj1uLnN1YnN0cmluZyhjLGUraS5tYXhMZW4vMiksdmkoZSx0LG4scixpKX1jb25zdCBzPURhdGUubm93KCksYT1lLTEtcjtsZXQgbD0tMSxvPW51bGw7Zm9yKGxldCBjPTE7IShEYXRlLm5vdygpLXM+PWkudGltZUJ1ZGdldCk7YysrKXtjb25zdCBkPWEtaS53aW5kb3dTaXplKmM7dC5sYXN0SW5kZXg9TWF0aC5tYXgoMCxkKTtjb25zdCB1PXN1KHQsbixhLGwpO2lmKCF1JiZvfHwobz11LGQ8PTApKWJyZWFrO2w9ZH1pZihvKXtjb25zdCBjPXt3b3JkOm9bMF0sc3RhcnRDb2x1bW46cisxK28uaW5kZXgsZW5kQ29sdW1uOnIrMStvLmluZGV4K29bMF0ubGVuZ3RofTtyZXR1cm4gdC5sYXN0SW5kZXg9MCxjfXJldHVybiBudWxsfWZ1bmN0aW9uIHN1KGUsdCxuLHIpe2xldCBpO2Zvcig7aT1lLmV4ZWModCk7KXtjb25zdCBzPWkuaW5kZXh8fDA7aWYoczw9biYmZS5sYXN0SW5kZXg+PW4pcmV0dXJuIGk7aWYocj4wJiZzPnIpcmV0dXJuIG51bGx9cmV0dXJuIG51bGx9Y2xhc3MgYXV7c3RhdGljIGNvbXB1dGVVbmljb2RlSGlnaGxpZ2h0cyh0LG4scil7Y29uc3QgaT1yP3Iuc3RhcnRMaW5lTnVtYmVyOjEscz1yP3IuZW5kTGluZU51bWJlcjp0LmdldExpbmVDb3VudCgpLGE9bmV3IElvKG4pLGw9YS5nZXRDYW5kaWRhdGVDb2RlUG9pbnRzKCk7bGV0IG87bD09PSJhbGxOb25CYXNpY0FzY2lpIj9vPW5ldyBSZWdFeHAoIlteXFx0XFxuXFxyXFx4MjAtXFx4N0VdIiwiZyIpOm89bmV3IFJlZ0V4cChgJHtvdShBcnJheS5mcm9tKGwpKX1gLCJnIik7Y29uc3QgYz1uZXcgdHUobnVsbCxvKSxkPVtdO2xldCB1PSExLGYsbT0wLHY9MCx3PTA7ZTpmb3IobGV0IGs9aSxSPXM7azw9UjtrKyspe2NvbnN0IEk9dC5nZXRMaW5lQ29udGVudChrKSxOPUkubGVuZ3RoO2MucmVzZXQoMCk7ZG8gaWYoZj1jLm5leHQoSSksZil7bGV0IEU9Zi5pbmRleCxGPWYuaW5kZXgrZlswXS5sZW5ndGg7aWYoRT4wKXtjb25zdCBqPUkuY2hhckNvZGVBdChFLTEpO0JuKGopJiZFLS19aWYoRisxPE4pe2NvbnN0IGo9SS5jaGFyQ29kZUF0KEYtMSk7Qm4oaikmJkYrK31jb25zdCBNPUkuc3Vic3RyaW5nKEUsRik7bGV0IFQ9dmkoRSsxLFJvLEksMCk7VCYmVC5lbmRDb2x1bW48PUUrMSYmKFQ9bnVsbCk7Y29uc3QgUD1hLnNob3VsZEhpZ2hsaWdodE5vbkJhc2ljQVNDSUkoTSxUP1Qud29yZDpudWxsKTtpZihQIT09MCl7aWYoUD09PTM/bSsrOlA9PT0yP3YrKzpQPT09MT93Kys6bnUoKSxkLmxlbmd0aD49MWUzKXt1PSEwO2JyZWFrIGV9ZC5wdXNoKG5ldyBRKGssRSsxLGssRisxKSl9fXdoaWxlKGYpfXJldHVybntyYW5nZXM6ZCxoYXNNb3JlOnUsYW1iaWd1b3VzQ2hhcmFjdGVyQ291bnQ6bSxpbnZpc2libGVDaGFyYWN0ZXJDb3VudDp2LG5vbkJhc2ljQXNjaWlDaGFyYWN0ZXJDb3VudDp3fX1zdGF0aWMgY29tcHV0ZVVuaWNvZGVIaWdobGlnaHRSZWFzb24odCxuKXtjb25zdCByPW5ldyBJbyhuKTtzd2l0Y2goci5zaG91bGRIaWdobGlnaHROb25CYXNpY0FTQ0lJKHQsbnVsbCkpe2Nhc2UgMDpyZXR1cm4gbnVsbDtjYXNlIDI6cmV0dXJue2tpbmQ6MX07Y2FzZSAzOntjb25zdCBzPXQuY29kZVBvaW50QXQoMCksYT1yLmFtYmlndW91c0NoYXJhY3RlcnMuZ2V0UHJpbWFyeUNvbmZ1c2FibGUocyksbD1jbi5nZXRMb2NhbGVzKCkuZmlsdGVyKG89PiFjbi5nZXRJbnN0YW5jZShuZXcgU2V0KFsuLi5uLmFsbG93ZWRMb2NhbGVzLG9dKSkuaXNBbWJpZ3VvdXMocykpO3JldHVybntraW5kOjAsY29uZnVzYWJsZVdpdGg6U3RyaW5nLmZyb21Db2RlUG9pbnQoYSksbm90QW1iaWd1b3VzSW5Mb2NhbGVzOmx9fWNhc2UgMTpyZXR1cm57a2luZDoyfX19fWZ1bmN0aW9uIG91KGUsdCl7cmV0dXJuYFske3FoKGUubWFwKHI9PlN0cmluZy5mcm9tQ29kZVBvaW50KHIpKS5qb2luKCIiKSl9XWB9Y2xhc3MgSW97Y29uc3RydWN0b3IodCl7dGhpcy5vcHRpb25zPXQsdGhpcy5hbGxvd2VkQ29kZVBvaW50cz1uZXcgU2V0KHQuYWxsb3dlZENvZGVQb2ludHMpLHRoaXMuYW1iaWd1b3VzQ2hhcmFjdGVycz1jbi5nZXRJbnN0YW5jZShuZXcgU2V0KHQuYWxsb3dlZExvY2FsZXMpKX1nZXRDYW5kaWRhdGVDb2RlUG9pbnRzKCl7aWYodGhpcy5vcHRpb25zLm5vbkJhc2ljQVNDSUkpcmV0dXJuImFsbE5vbkJhc2ljQXNjaWkiO2NvbnN0IHQ9bmV3IFNldDtpZih0aGlzLm9wdGlvbnMuaW52aXNpYmxlQ2hhcmFjdGVycylmb3IoY29uc3QgbiBvZiBobi5jb2RlUG9pbnRzKUFvKFN0cmluZy5mcm9tQ29kZVBvaW50KG4pKXx8dC5hZGQobik7aWYodGhpcy5vcHRpb25zLmFtYmlndW91c0NoYXJhY3RlcnMpZm9yKGNvbnN0IG4gb2YgdGhpcy5hbWJpZ3VvdXNDaGFyYWN0ZXJzLmdldENvbmZ1c2FibGVDb2RlUG9pbnRzKCkpdC5hZGQobik7Zm9yKGNvbnN0IG4gb2YgdGhpcy5hbGxvd2VkQ29kZVBvaW50cyl0LmRlbGV0ZShuKTtyZXR1cm4gdH1zaG91bGRIaWdobGlnaHROb25CYXNpY0FTQ0lJKHQsbil7Y29uc3Qgcj10LmNvZGVQb2ludEF0KDApO2lmKHRoaXMuYWxsb3dlZENvZGVQb2ludHMuaGFzKHIpKXJldHVybiAwO2lmKHRoaXMub3B0aW9ucy5ub25CYXNpY0FTQ0lJKXJldHVybiAxO2xldCBpPSExLHM9ITE7aWYobilmb3IoY29uc3QgYSBvZiBuKXtjb25zdCBsPWEuY29kZVBvaW50QXQoMCksbz1ZaChhKTtpPWl8fG8sIW8mJiF0aGlzLmFtYmlndW91c0NoYXJhY3RlcnMuaXNBbWJpZ3VvdXMobCkmJiFobi5pc0ludmlzaWJsZUNoYXJhY3RlcihsKSYmKHM9ITApfXJldHVybiFpJiZzPzA6dGhpcy5vcHRpb25zLmludmlzaWJsZUNoYXJhY3RlcnMmJiFBbyh0KSYmaG4uaXNJbnZpc2libGVDaGFyYWN0ZXIocik/Mjp0aGlzLm9wdGlvbnMuYW1iaWd1b3VzQ2hhcmFjdGVycyYmdGhpcy5hbWJpZ3VvdXNDaGFyYWN0ZXJzLmlzQW1iaWd1b3VzKHIpPzM6MH19ZnVuY3Rpb24gQW8oZSl7cmV0dXJuIGU9PT0iICJ8fGU9PT1gCmB8fGU9PT0iCSJ9Y2xhc3MgS257Y29uc3RydWN0b3IodCxuLHIpe3RoaXMuY2hhbmdlcz10LHRoaXMubW92ZXM9bix0aGlzLmhpdFRpbWVvdXQ9cn19Y2xhc3MgbHV7Y29uc3RydWN0b3IodCxuKXt0aGlzLmxpbmVSYW5nZU1hcHBpbmc9dCx0aGlzLmNoYW5nZXM9bn19Y2xhc3MgWXtzdGF0aWMgYWRkUmFuZ2UodCxuKXtsZXQgcj0wO2Zvcig7cjxuLmxlbmd0aCYmbltyXS5lbmRFeGNsdXNpdmU8dC5zdGFydDspcisrO2xldCBpPXI7Zm9yKDtpPG4ubGVuZ3RoJiZuW2ldLnN0YXJ0PD10LmVuZEV4Y2x1c2l2ZTspaSsrO2lmKHI9PT1pKW4uc3BsaWNlKHIsMCx0KTtlbHNle2NvbnN0IHM9TWF0aC5taW4odC5zdGFydCxuW3JdLnN0YXJ0KSxhPU1hdGgubWF4KHQuZW5kRXhjbHVzaXZlLG5baS0xXS5lbmRFeGNsdXNpdmUpO24uc3BsaWNlKHIsaS1yLG5ldyBZKHMsYSkpfX1zdGF0aWMgdHJ5Q3JlYXRlKHQsbil7aWYoISh0Pm4pKXJldHVybiBuZXcgWSh0LG4pfXN0YXRpYyBvZkxlbmd0aCh0KXtyZXR1cm4gbmV3IFkoMCx0KX1zdGF0aWMgb2ZTdGFydEFuZExlbmd0aCh0LG4pe3JldHVybiBuZXcgWSh0LHQrbil9Y29uc3RydWN0b3IodCxuKXtpZih0aGlzLnN0YXJ0PXQsdGhpcy5lbmRFeGNsdXNpdmU9bix0Pm4pdGhyb3cgbmV3IGtlKGBJbnZhbGlkIHJhbmdlOiAke3RoaXMudG9TdHJpbmcoKX1gKX1nZXQgaXNFbXB0eSgpe3JldHVybiB0aGlzLnN0YXJ0PT09dGhpcy5lbmRFeGNsdXNpdmV9ZGVsdGEodCl7cmV0dXJuIG5ldyBZKHRoaXMuc3RhcnQrdCx0aGlzLmVuZEV4Y2x1c2l2ZSt0KX1kZWx0YVN0YXJ0KHQpe3JldHVybiBuZXcgWSh0aGlzLnN0YXJ0K3QsdGhpcy5lbmRFeGNsdXNpdmUpfWRlbHRhRW5kKHQpe3JldHVybiBuZXcgWSh0aGlzLnN0YXJ0LHRoaXMuZW5kRXhjbHVzaXZlK3QpfWdldCBsZW5ndGgoKXtyZXR1cm4gdGhpcy5lbmRFeGNsdXNpdmUtdGhpcy5zdGFydH10b1N0cmluZygpe3JldHVybmBbJHt0aGlzLnN0YXJ0fSwgJHt0aGlzLmVuZEV4Y2x1c2l2ZX0pYH1jb250YWlucyh0KXtyZXR1cm4gdGhpcy5zdGFydDw9dCYmdDx0aGlzLmVuZEV4Y2x1c2l2ZX1qb2luKHQpe3JldHVybiBuZXcgWShNYXRoLm1pbih0aGlzLnN0YXJ0LHQuc3RhcnQpLE1hdGgubWF4KHRoaXMuZW5kRXhjbHVzaXZlLHQuZW5kRXhjbHVzaXZlKSl9aW50ZXJzZWN0KHQpe2NvbnN0IG49TWF0aC5tYXgodGhpcy5zdGFydCx0LnN0YXJ0KSxyPU1hdGgubWluKHRoaXMuZW5kRXhjbHVzaXZlLHQuZW5kRXhjbHVzaXZlKTtpZihuPD1yKXJldHVybiBuZXcgWShuLHIpfWludGVyc2VjdHModCl7Y29uc3Qgbj1NYXRoLm1heCh0aGlzLnN0YXJ0LHQuc3RhcnQpLHI9TWF0aC5taW4odGhpcy5lbmRFeGNsdXNpdmUsdC5lbmRFeGNsdXNpdmUpO3JldHVybiBuPHJ9aXNCZWZvcmUodCl7cmV0dXJuIHRoaXMuZW5kRXhjbHVzaXZlPD10LnN0YXJ0fWlzQWZ0ZXIodCl7cmV0dXJuIHRoaXMuc3RhcnQ+PXQuZW5kRXhjbHVzaXZlfXNsaWNlKHQpe3JldHVybiB0LnNsaWNlKHRoaXMuc3RhcnQsdGhpcy5lbmRFeGNsdXNpdmUpfXN1YnN0cmluZyh0KXtyZXR1cm4gdC5zdWJzdHJpbmcodGhpcy5zdGFydCx0aGlzLmVuZEV4Y2x1c2l2ZSl9Y2xpcCh0KXtpZih0aGlzLmlzRW1wdHkpdGhyb3cgbmV3IGtlKGBJbnZhbGlkIGNsaXBwaW5nIHJhbmdlOiAke3RoaXMudG9TdHJpbmcoKX1gKTtyZXR1cm4gTWF0aC5tYXgodGhpcy5zdGFydCxNYXRoLm1pbih0aGlzLmVuZEV4Y2x1c2l2ZS0xLHQpKX1jbGlwQ3ljbGljKHQpe2lmKHRoaXMuaXNFbXB0eSl0aHJvdyBuZXcga2UoYEludmFsaWQgY2xpcHBpbmcgcmFuZ2U6ICR7dGhpcy50b1N0cmluZygpfWApO3JldHVybiB0PHRoaXMuc3RhcnQ/dGhpcy5lbmRFeGNsdXNpdmUtKHRoaXMuc3RhcnQtdCkldGhpcy5sZW5ndGg6dD49dGhpcy5lbmRFeGNsdXNpdmU/dGhpcy5zdGFydCsodC10aGlzLnN0YXJ0KSV0aGlzLmxlbmd0aDp0fWZvckVhY2godCl7Zm9yKGxldCBuPXRoaXMuc3RhcnQ7bjx0aGlzLmVuZEV4Y2x1c2l2ZTtuKyspdChuKX19ZnVuY3Rpb24gJHQoZSx0KXtjb25zdCBuPXBuKGUsdCk7cmV0dXJuIG49PT0tMT92b2lkIDA6ZVtuXX1mdW5jdGlvbiBwbihlLHQsbj0wLHI9ZS5sZW5ndGgpe2xldCBpPW4scz1yO2Zvcig7aTxzOyl7Y29uc3QgYT1NYXRoLmZsb29yKChpK3MpLzIpO3QoZVthXSk/aT1hKzE6cz1hfXJldHVybiBpLTF9ZnVuY3Rpb24gY3UoZSx0KXtjb25zdCBuPXdpKGUsdCk7cmV0dXJuIG49PT1lLmxlbmd0aD92b2lkIDA6ZVtuXX1mdW5jdGlvbiB3aShlLHQsbj0wLHI9ZS5sZW5ndGgpe2xldCBpPW4scz1yO2Zvcig7aTxzOyl7Y29uc3QgYT1NYXRoLmZsb29yKChpK3MpLzIpO3QoZVthXSk/cz1hOmk9YSsxfXJldHVybiBpfWNvbnN0IHpyPWNsYXNzIHpye2NvbnN0cnVjdG9yKHQpe3RoaXMuX2FycmF5PXQsdGhpcy5fZmluZExhc3RNb25vdG9ub3VzTGFzdElkeD0wfWZpbmRMYXN0TW9ub3Rvbm91cyh0KXtpZih6ci5hc3NlcnRJbnZhcmlhbnRzKXtpZih0aGlzLl9wcmV2RmluZExhc3RQcmVkaWNhdGUpe2Zvcihjb25zdCByIG9mIHRoaXMuX2FycmF5KWlmKHRoaXMuX3ByZXZGaW5kTGFzdFByZWRpY2F0ZShyKSYmIXQocikpdGhyb3cgbmV3IEVycm9yKCJNb25vdG9ub3VzQXJyYXk6IGN1cnJlbnQgcHJlZGljYXRlIG11c3QgYmUgd2Vha2VyIHRoYW4gKG9yIGVxdWFsIHRvKSB0aGUgcHJldmlvdXMgcHJlZGljYXRlLiIpfXRoaXMuX3ByZXZGaW5kTGFzdFByZWRpY2F0ZT10fWNvbnN0IG49cG4odGhpcy5fYXJyYXksdCx0aGlzLl9maW5kTGFzdE1vbm90b25vdXNMYXN0SWR4KTtyZXR1cm4gdGhpcy5fZmluZExhc3RNb25vdG9ub3VzTGFzdElkeD1uKzEsbj09PS0xP3ZvaWQgMDp0aGlzLl9hcnJheVtuXX19O3pyLmFzc2VydEludmFyaWFudHM9ITE7bGV0IFpuPXpyO2NsYXNzIEh7c3RhdGljIGZyb21SYW5nZUluY2x1c2l2ZSh0KXtyZXR1cm4gbmV3IEgodC5zdGFydExpbmVOdW1iZXIsdC5lbmRMaW5lTnVtYmVyKzEpfXN0YXRpYyBqb2luTWFueSh0KXtpZih0Lmxlbmd0aD09PTApcmV0dXJuW107bGV0IG49bmV3ICRlKHRbMF0uc2xpY2UoKSk7Zm9yKGxldCByPTE7cjx0Lmxlbmd0aDtyKyspbj1uLmdldFVuaW9uKG5ldyAkZSh0W3JdLnNsaWNlKCkpKTtyZXR1cm4gbi5yYW5nZXN9c3RhdGljIGpvaW4odCl7aWYodC5sZW5ndGg9PT0wKXRocm93IG5ldyBrZSgibGluZVJhbmdlcyBjYW5ub3QgYmUgZW1wdHkiKTtsZXQgbj10WzBdLnN0YXJ0TGluZU51bWJlcixyPXRbMF0uZW5kTGluZU51bWJlckV4Y2x1c2l2ZTtmb3IobGV0IGk9MTtpPHQubGVuZ3RoO2krKyluPU1hdGgubWluKG4sdFtpXS5zdGFydExpbmVOdW1iZXIpLHI9TWF0aC5tYXgocix0W2ldLmVuZExpbmVOdW1iZXJFeGNsdXNpdmUpO3JldHVybiBuZXcgSChuLHIpfXN0YXRpYyBvZkxlbmd0aCh0LG4pe3JldHVybiBuZXcgSCh0LHQrbil9c3RhdGljIGRlc2VyaWFsaXplKHQpe3JldHVybiBuZXcgSCh0WzBdLHRbMV0pfWNvbnN0cnVjdG9yKHQsbil7aWYodD5uKXRocm93IG5ldyBrZShgc3RhcnRMaW5lTnVtYmVyICR7dH0gY2Fubm90IGJlIGFmdGVyIGVuZExpbmVOdW1iZXJFeGNsdXNpdmUgJHtufWApO3RoaXMuc3RhcnRMaW5lTnVtYmVyPXQsdGhpcy5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlPW59Y29udGFpbnModCl7cmV0dXJuIHRoaXMuc3RhcnRMaW5lTnVtYmVyPD10JiZ0PHRoaXMuZW5kTGluZU51bWJlckV4Y2x1c2l2ZX1nZXQgaXNFbXB0eSgpe3JldHVybiB0aGlzLnN0YXJ0TGluZU51bWJlcj09PXRoaXMuZW5kTGluZU51bWJlckV4Y2x1c2l2ZX1kZWx0YSh0KXtyZXR1cm4gbmV3IEgodGhpcy5zdGFydExpbmVOdW1iZXIrdCx0aGlzLmVuZExpbmVOdW1iZXJFeGNsdXNpdmUrdCl9ZGVsdGFMZW5ndGgodCl7cmV0dXJuIG5ldyBIKHRoaXMuc3RhcnRMaW5lTnVtYmVyLHRoaXMuZW5kTGluZU51bWJlckV4Y2x1c2l2ZSt0KX1nZXQgbGVuZ3RoKCl7cmV0dXJuIHRoaXMuZW5kTGluZU51bWJlckV4Y2x1c2l2ZS10aGlzLnN0YXJ0TGluZU51bWJlcn1qb2luKHQpe3JldHVybiBuZXcgSChNYXRoLm1pbih0aGlzLnN0YXJ0TGluZU51bWJlcix0LnN0YXJ0TGluZU51bWJlciksTWF0aC5tYXgodGhpcy5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlLHQuZW5kTGluZU51bWJlckV4Y2x1c2l2ZSkpfXRvU3RyaW5nKCl7cmV0dXJuYFske3RoaXMuc3RhcnRMaW5lTnVtYmVyfSwke3RoaXMuZW5kTGluZU51bWJlckV4Y2x1c2l2ZX0pYH1pbnRlcnNlY3QodCl7Y29uc3Qgbj1NYXRoLm1heCh0aGlzLnN0YXJ0TGluZU51bWJlcix0LnN0YXJ0TGluZU51bWJlcikscj1NYXRoLm1pbih0aGlzLmVuZExpbmVOdW1iZXJFeGNsdXNpdmUsdC5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlKTtpZihuPD1yKXJldHVybiBuZXcgSChuLHIpfWludGVyc2VjdHNTdHJpY3QodCl7cmV0dXJuIHRoaXMuc3RhcnRMaW5lTnVtYmVyPHQuZW5kTGluZU51bWJlckV4Y2x1c2l2ZSYmdC5zdGFydExpbmVOdW1iZXI8dGhpcy5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlfW92ZXJsYXBPclRvdWNoKHQpe3JldHVybiB0aGlzLnN0YXJ0TGluZU51bWJlcjw9dC5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlJiZ0LnN0YXJ0TGluZU51bWJlcjw9dGhpcy5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlfWVxdWFscyh0KXtyZXR1cm4gdGhpcy5zdGFydExpbmVOdW1iZXI9PT10LnN0YXJ0TGluZU51bWJlciYmdGhpcy5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlPT09dC5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlfXRvSW5jbHVzaXZlUmFuZ2UoKXtyZXR1cm4gdGhpcy5pc0VtcHR5P251bGw6bmV3IFEodGhpcy5zdGFydExpbmVOdW1iZXIsMSx0aGlzLmVuZExpbmVOdW1iZXJFeGNsdXNpdmUtMSxOdW1iZXIuTUFYX1NBRkVfSU5URUdFUil9dG9FeGNsdXNpdmVSYW5nZSgpe3JldHVybiBuZXcgUSh0aGlzLnN0YXJ0TGluZU51bWJlciwxLHRoaXMuZW5kTGluZU51bWJlckV4Y2x1c2l2ZSwxKX1tYXBUb0xpbmVBcnJheSh0KXtjb25zdCBuPVtdO2ZvcihsZXQgcj10aGlzLnN0YXJ0TGluZU51bWJlcjtyPHRoaXMuZW5kTGluZU51bWJlckV4Y2x1c2l2ZTtyKyspbi5wdXNoKHQocikpO3JldHVybiBufWZvckVhY2godCl7Zm9yKGxldCBuPXRoaXMuc3RhcnRMaW5lTnVtYmVyO248dGhpcy5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlO24rKyl0KG4pfXNlcmlhbGl6ZSgpe3JldHVyblt0aGlzLnN0YXJ0TGluZU51bWJlcix0aGlzLmVuZExpbmVOdW1iZXJFeGNsdXNpdmVdfWluY2x1ZGVzKHQpe3JldHVybiB0aGlzLnN0YXJ0TGluZU51bWJlcjw9dCYmdDx0aGlzLmVuZExpbmVOdW1iZXJFeGNsdXNpdmV9dG9PZmZzZXRSYW5nZSgpe3JldHVybiBuZXcgWSh0aGlzLnN0YXJ0TGluZU51bWJlci0xLHRoaXMuZW5kTGluZU51bWJlckV4Y2x1c2l2ZS0xKX19Y2xhc3MgJGV7Y29uc3RydWN0b3IodD1bXSl7dGhpcy5fbm9ybWFsaXplZFJhbmdlcz10fWdldCByYW5nZXMoKXtyZXR1cm4gdGhpcy5fbm9ybWFsaXplZFJhbmdlc31hZGRSYW5nZSh0KXtpZih0Lmxlbmd0aD09PTApcmV0dXJuO2NvbnN0IG49d2kodGhpcy5fbm9ybWFsaXplZFJhbmdlcyxpPT5pLmVuZExpbmVOdW1iZXJFeGNsdXNpdmU+PXQuc3RhcnRMaW5lTnVtYmVyKSxyPXBuKHRoaXMuX25vcm1hbGl6ZWRSYW5nZXMsaT0+aS5zdGFydExpbmVOdW1iZXI8PXQuZW5kTGluZU51bWJlckV4Y2x1c2l2ZSkrMTtpZihuPT09cil0aGlzLl9ub3JtYWxpemVkUmFuZ2VzLnNwbGljZShuLDAsdCk7ZWxzZSBpZihuPT09ci0xKXtjb25zdCBpPXRoaXMuX25vcm1hbGl6ZWRSYW5nZXNbbl07dGhpcy5fbm9ybWFsaXplZFJhbmdlc1tuXT1pLmpvaW4odCl9ZWxzZXtjb25zdCBpPXRoaXMuX25vcm1hbGl6ZWRSYW5nZXNbbl0uam9pbih0aGlzLl9ub3JtYWxpemVkUmFuZ2VzW3ItMV0pLmpvaW4odCk7dGhpcy5fbm9ybWFsaXplZFJhbmdlcy5zcGxpY2UobixyLW4saSl9fWNvbnRhaW5zKHQpe2NvbnN0IG49JHQodGhpcy5fbm9ybWFsaXplZFJhbmdlcyxyPT5yLnN0YXJ0TGluZU51bWJlcjw9dCk7cmV0dXJuISFuJiZuLmVuZExpbmVOdW1iZXJFeGNsdXNpdmU+dH1pbnRlcnNlY3RzKHQpe2NvbnN0IG49JHQodGhpcy5fbm9ybWFsaXplZFJhbmdlcyxyPT5yLnN0YXJ0TGluZU51bWJlcjx0LmVuZExpbmVOdW1iZXJFeGNsdXNpdmUpO3JldHVybiEhbiYmbi5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlPnQuc3RhcnRMaW5lTnVtYmVyfWdldFVuaW9uKHQpe2lmKHRoaXMuX25vcm1hbGl6ZWRSYW5nZXMubGVuZ3RoPT09MClyZXR1cm4gdDtpZih0Ll9ub3JtYWxpemVkUmFuZ2VzLmxlbmd0aD09PTApcmV0dXJuIHRoaXM7Y29uc3Qgbj1bXTtsZXQgcj0wLGk9MCxzPW51bGw7Zm9yKDtyPHRoaXMuX25vcm1hbGl6ZWRSYW5nZXMubGVuZ3RofHxpPHQuX25vcm1hbGl6ZWRSYW5nZXMubGVuZ3RoOyl7bGV0IGE9bnVsbDtpZihyPHRoaXMuX25vcm1hbGl6ZWRSYW5nZXMubGVuZ3RoJiZpPHQuX25vcm1hbGl6ZWRSYW5nZXMubGVuZ3RoKXtjb25zdCBsPXRoaXMuX25vcm1hbGl6ZWRSYW5nZXNbcl0sbz10Ll9ub3JtYWxpemVkUmFuZ2VzW2ldO2wuc3RhcnRMaW5lTnVtYmVyPG8uc3RhcnRMaW5lTnVtYmVyPyhhPWwscisrKTooYT1vLGkrKyl9ZWxzZSByPHRoaXMuX25vcm1hbGl6ZWRSYW5nZXMubGVuZ3RoPyhhPXRoaXMuX25vcm1hbGl6ZWRSYW5nZXNbcl0scisrKTooYT10Ll9ub3JtYWxpemVkUmFuZ2VzW2ldLGkrKyk7cz09PW51bGw/cz1hOnMuZW5kTGluZU51bWJlckV4Y2x1c2l2ZT49YS5zdGFydExpbmVOdW1iZXI/cz1uZXcgSChzLnN0YXJ0TGluZU51bWJlcixNYXRoLm1heChzLmVuZExpbmVOdW1iZXJFeGNsdXNpdmUsYS5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlKSk6KG4ucHVzaChzKSxzPWEpfXJldHVybiBzIT09bnVsbCYmbi5wdXNoKHMpLG5ldyAkZShuKX1zdWJ0cmFjdEZyb20odCl7Y29uc3Qgbj13aSh0aGlzLl9ub3JtYWxpemVkUmFuZ2VzLGE9PmEuZW5kTGluZU51bWJlckV4Y2x1c2l2ZT49dC5zdGFydExpbmVOdW1iZXIpLHI9cG4odGhpcy5fbm9ybWFsaXplZFJhbmdlcyxhPT5hLnN0YXJ0TGluZU51bWJlcjw9dC5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlKSsxO2lmKG49PT1yKXJldHVybiBuZXcgJGUoW3RdKTtjb25zdCBpPVtdO2xldCBzPXQuc3RhcnRMaW5lTnVtYmVyO2ZvcihsZXQgYT1uO2E8cjthKyspe2NvbnN0IGw9dGhpcy5fbm9ybWFsaXplZFJhbmdlc1thXTtsLnN0YXJ0TGluZU51bWJlcj5zJiZpLnB1c2gobmV3IEgocyxsLnN0YXJ0TGluZU51bWJlcikpLHM9bC5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlfXJldHVybiBzPHQuZW5kTGluZU51bWJlckV4Y2x1c2l2ZSYmaS5wdXNoKG5ldyBIKHMsdC5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlKSksbmV3ICRlKGkpfXRvU3RyaW5nKCl7cmV0dXJuIHRoaXMuX25vcm1hbGl6ZWRSYW5nZXMubWFwKHQ9PnQudG9TdHJpbmcoKSkuam9pbigiLCAiKX1nZXRJbnRlcnNlY3Rpb24odCl7Y29uc3Qgbj1bXTtsZXQgcj0wLGk9MDtmb3IoO3I8dGhpcy5fbm9ybWFsaXplZFJhbmdlcy5sZW5ndGgmJmk8dC5fbm9ybWFsaXplZFJhbmdlcy5sZW5ndGg7KXtjb25zdCBzPXRoaXMuX25vcm1hbGl6ZWRSYW5nZXNbcl0sYT10Ll9ub3JtYWxpemVkUmFuZ2VzW2ldLGw9cy5pbnRlcnNlY3QoYSk7bCYmIWwuaXNFbXB0eSYmbi5wdXNoKGwpLHMuZW5kTGluZU51bWJlckV4Y2x1c2l2ZTxhLmVuZExpbmVOdW1iZXJFeGNsdXNpdmU/cisrOmkrK31yZXR1cm4gbmV3ICRlKG4pfWdldFdpdGhEZWx0YSh0KXtyZXR1cm4gbmV3ICRlKHRoaXMuX25vcm1hbGl6ZWRSYW5nZXMubWFwKG49Pm4uZGVsdGEodCkpKX19Y29uc3QgeHQ9Y2xhc3MgeHR7c3RhdGljIGJldHdlZW5Qb3NpdGlvbnModCxuKXtyZXR1cm4gdC5saW5lTnVtYmVyPT09bi5saW5lTnVtYmVyP25ldyB4dCgwLG4uY29sdW1uLXQuY29sdW1uKTpuZXcgeHQobi5saW5lTnVtYmVyLXQubGluZU51bWJlcixuLmNvbHVtbi0xKX1zdGF0aWMgb2ZSYW5nZSh0KXtyZXR1cm4geHQuYmV0d2VlblBvc2l0aW9ucyh0LmdldFN0YXJ0UG9zaXRpb24oKSx0LmdldEVuZFBvc2l0aW9uKCkpfXN0YXRpYyBvZlRleHQodCl7bGV0IG49MCxyPTA7Zm9yKGNvbnN0IGkgb2YgdClpPT09YApgPyhuKysscj0wKTpyKys7cmV0dXJuIG5ldyB4dChuLHIpfWNvbnN0cnVjdG9yKHQsbil7dGhpcy5saW5lQ291bnQ9dCx0aGlzLmNvbHVtbkNvdW50PW59aXNHcmVhdGVyVGhhbk9yRXF1YWxUbyh0KXtyZXR1cm4gdGhpcy5saW5lQ291bnQhPT10LmxpbmVDb3VudD90aGlzLmxpbmVDb3VudD50LmxpbmVDb3VudDp0aGlzLmNvbHVtbkNvdW50Pj10LmNvbHVtbkNvdW50fWNyZWF0ZVJhbmdlKHQpe3JldHVybiB0aGlzLmxpbmVDb3VudD09PTA/bmV3IFEodC5saW5lTnVtYmVyLHQuY29sdW1uLHQubGluZU51bWJlcix0LmNvbHVtbit0aGlzLmNvbHVtbkNvdW50KTpuZXcgUSh0LmxpbmVOdW1iZXIsdC5jb2x1bW4sdC5saW5lTnVtYmVyK3RoaXMubGluZUNvdW50LHRoaXMuY29sdW1uQ291bnQrMSl9YWRkVG9Qb3NpdGlvbih0KXtyZXR1cm4gdGhpcy5saW5lQ291bnQ9PT0wP25ldyBoZSh0LmxpbmVOdW1iZXIsdC5jb2x1bW4rdGhpcy5jb2x1bW5Db3VudCk6bmV3IGhlKHQubGluZU51bWJlcit0aGlzLmxpbmVDb3VudCx0aGlzLmNvbHVtbkNvdW50KzEpfXRvU3RyaW5nKCl7cmV0dXJuYCR7dGhpcy5saW5lQ291bnR9LCR7dGhpcy5jb2x1bW5Db3VudH1gfX07eHQuemVybz1uZXcgeHQoMCwwKTtsZXQgTW89eHQ7Y2xhc3MgaHV7Y29uc3RydWN0b3IodCxuKXt0aGlzLnJhbmdlPXQsdGhpcy50ZXh0PW59dG9TaW5nbGVFZGl0T3BlcmF0aW9uKCl7cmV0dXJue3JhbmdlOnRoaXMucmFuZ2UsdGV4dDp0aGlzLnRleHR9fX1jbGFzcyBJZXtzdGF0aWMgaW52ZXJzZSh0LG4scil7Y29uc3QgaT1bXTtsZXQgcz0xLGE9MTtmb3IoY29uc3QgbyBvZiB0KXtjb25zdCBjPW5ldyBJZShuZXcgSChzLG8ub3JpZ2luYWwuc3RhcnRMaW5lTnVtYmVyKSxuZXcgSChhLG8ubW9kaWZpZWQuc3RhcnRMaW5lTnVtYmVyKSk7Yy5tb2RpZmllZC5pc0VtcHR5fHxpLnB1c2goYykscz1vLm9yaWdpbmFsLmVuZExpbmVOdW1iZXJFeGNsdXNpdmUsYT1vLm1vZGlmaWVkLmVuZExpbmVOdW1iZXJFeGNsdXNpdmV9Y29uc3QgbD1uZXcgSWUobmV3IEgocyxuKzEpLG5ldyBIKGEscisxKSk7cmV0dXJuIGwubW9kaWZpZWQuaXNFbXB0eXx8aS5wdXNoKGwpLGl9c3RhdGljIGNsaXAodCxuLHIpe2NvbnN0IGk9W107Zm9yKGNvbnN0IHMgb2YgdCl7Y29uc3QgYT1zLm9yaWdpbmFsLmludGVyc2VjdChuKSxsPXMubW9kaWZpZWQuaW50ZXJzZWN0KHIpO2EmJiFhLmlzRW1wdHkmJmwmJiFsLmlzRW1wdHkmJmkucHVzaChuZXcgSWUoYSxsKSl9cmV0dXJuIGl9Y29uc3RydWN0b3IodCxuKXt0aGlzLm9yaWdpbmFsPXQsdGhpcy5tb2RpZmllZD1ufXRvU3RyaW5nKCl7cmV0dXJuYHske3RoaXMub3JpZ2luYWwudG9TdHJpbmcoKX0tPiR7dGhpcy5tb2RpZmllZC50b1N0cmluZygpfX1gfWZsaXAoKXtyZXR1cm4gbmV3IEllKHRoaXMubW9kaWZpZWQsdGhpcy5vcmlnaW5hbCl9am9pbih0KXtyZXR1cm4gbmV3IEllKHRoaXMub3JpZ2luYWwuam9pbih0Lm9yaWdpbmFsKSx0aGlzLm1vZGlmaWVkLmpvaW4odC5tb2RpZmllZCkpfXRvUmFuZ2VNYXBwaW5nKCl7Y29uc3QgdD10aGlzLm9yaWdpbmFsLnRvSW5jbHVzaXZlUmFuZ2UoKSxuPXRoaXMubW9kaWZpZWQudG9JbmNsdXNpdmVSYW5nZSgpO2lmKHQmJm4pcmV0dXJuIG5ldyBUZSh0LG4pO2lmKHRoaXMub3JpZ2luYWwuc3RhcnRMaW5lTnVtYmVyPT09MXx8dGhpcy5tb2RpZmllZC5zdGFydExpbmVOdW1iZXI9PT0xKXtpZighKHRoaXMubW9kaWZpZWQuc3RhcnRMaW5lTnVtYmVyPT09MSYmdGhpcy5vcmlnaW5hbC5zdGFydExpbmVOdW1iZXI9PT0xKSl0aHJvdyBuZXcga2UoIm5vdCBhIHZhbGlkIGRpZmYiKTtyZXR1cm4gbmV3IFRlKG5ldyBRKHRoaXMub3JpZ2luYWwuc3RhcnRMaW5lTnVtYmVyLDEsdGhpcy5vcmlnaW5hbC5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlLDEpLG5ldyBRKHRoaXMubW9kaWZpZWQuc3RhcnRMaW5lTnVtYmVyLDEsdGhpcy5tb2RpZmllZC5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlLDEpKX1lbHNlIHJldHVybiBuZXcgVGUobmV3IFEodGhpcy5vcmlnaW5hbC5zdGFydExpbmVOdW1iZXItMSxOdW1iZXIuTUFYX1NBRkVfSU5URUdFUix0aGlzLm9yaWdpbmFsLmVuZExpbmVOdW1iZXJFeGNsdXNpdmUtMSxOdW1iZXIuTUFYX1NBRkVfSU5URUdFUiksbmV3IFEodGhpcy5tb2RpZmllZC5zdGFydExpbmVOdW1iZXItMSxOdW1iZXIuTUFYX1NBRkVfSU5URUdFUix0aGlzLm1vZGlmaWVkLmVuZExpbmVOdW1iZXJFeGNsdXNpdmUtMSxOdW1iZXIuTUFYX1NBRkVfSU5URUdFUikpfXRvUmFuZ2VNYXBwaW5nMih0LG4pe2lmKExvKHRoaXMub3JpZ2luYWwuZW5kTGluZU51bWJlckV4Y2x1c2l2ZSx0KSYmTG8odGhpcy5tb2RpZmllZC5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlLG4pKXJldHVybiBuZXcgVGUobmV3IFEodGhpcy5vcmlnaW5hbC5zdGFydExpbmVOdW1iZXIsMSx0aGlzLm9yaWdpbmFsLmVuZExpbmVOdW1iZXJFeGNsdXNpdmUsMSksbmV3IFEodGhpcy5tb2RpZmllZC5zdGFydExpbmVOdW1iZXIsMSx0aGlzLm1vZGlmaWVkLmVuZExpbmVOdW1iZXJFeGNsdXNpdmUsMSkpO2lmKCF0aGlzLm9yaWdpbmFsLmlzRW1wdHkmJiF0aGlzLm1vZGlmaWVkLmlzRW1wdHkpcmV0dXJuIG5ldyBUZShRLmZyb21Qb3NpdGlvbnMobmV3IGhlKHRoaXMub3JpZ2luYWwuc3RhcnRMaW5lTnVtYmVyLDEpLEJ0KG5ldyBoZSh0aGlzLm9yaWdpbmFsLmVuZExpbmVOdW1iZXJFeGNsdXNpdmUtMSxOdW1iZXIuTUFYX1NBRkVfSU5URUdFUiksdCkpLFEuZnJvbVBvc2l0aW9ucyhuZXcgaGUodGhpcy5tb2RpZmllZC5zdGFydExpbmVOdW1iZXIsMSksQnQobmV3IGhlKHRoaXMubW9kaWZpZWQuZW5kTGluZU51bWJlckV4Y2x1c2l2ZS0xLE51bWJlci5NQVhfU0FGRV9JTlRFR0VSKSxuKSkpO2lmKHRoaXMub3JpZ2luYWwuc3RhcnRMaW5lTnVtYmVyPjEmJnRoaXMubW9kaWZpZWQuc3RhcnRMaW5lTnVtYmVyPjEpcmV0dXJuIG5ldyBUZShRLmZyb21Qb3NpdGlvbnMoQnQobmV3IGhlKHRoaXMub3JpZ2luYWwuc3RhcnRMaW5lTnVtYmVyLTEsTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIpLHQpLEJ0KG5ldyBoZSh0aGlzLm9yaWdpbmFsLmVuZExpbmVOdW1iZXJFeGNsdXNpdmUtMSxOdW1iZXIuTUFYX1NBRkVfSU5URUdFUiksdCkpLFEuZnJvbVBvc2l0aW9ucyhCdChuZXcgaGUodGhpcy5tb2RpZmllZC5zdGFydExpbmVOdW1iZXItMSxOdW1iZXIuTUFYX1NBRkVfSU5URUdFUiksbiksQnQobmV3IGhlKHRoaXMubW9kaWZpZWQuZW5kTGluZU51bWJlckV4Y2x1c2l2ZS0xLE51bWJlci5NQVhfU0FGRV9JTlRFR0VSKSxuKSkpO3Rocm93IG5ldyBrZX19ZnVuY3Rpb24gQnQoZSx0KXtpZihlLmxpbmVOdW1iZXI8MSlyZXR1cm4gbmV3IGhlKDEsMSk7aWYoZS5saW5lTnVtYmVyPnQubGVuZ3RoKXJldHVybiBuZXcgaGUodC5sZW5ndGgsdFt0Lmxlbmd0aC0xXS5sZW5ndGgrMSk7Y29uc3Qgbj10W2UubGluZU51bWJlci0xXTtyZXR1cm4gZS5jb2x1bW4+bi5sZW5ndGgrMT9uZXcgaGUoZS5saW5lTnVtYmVyLG4ubGVuZ3RoKzEpOmV9ZnVuY3Rpb24gTG8oZSx0KXtyZXR1cm4gZT49MSYmZTw9dC5sZW5ndGh9Y2xhc3MgWmUgZXh0ZW5kcyBJZXtzdGF0aWMgZnJvbVJhbmdlTWFwcGluZ3ModCl7Y29uc3Qgbj1ILmpvaW4odC5tYXAoaT0+SC5mcm9tUmFuZ2VJbmNsdXNpdmUoaS5vcmlnaW5hbFJhbmdlKSkpLHI9SC5qb2luKHQubWFwKGk9PkguZnJvbVJhbmdlSW5jbHVzaXZlKGkubW9kaWZpZWRSYW5nZSkpKTtyZXR1cm4gbmV3IFplKG4scix0KX1jb25zdHJ1Y3Rvcih0LG4scil7c3VwZXIodCxuKSx0aGlzLmlubmVyQ2hhbmdlcz1yfWZsaXAoKXtyZXR1cm4gbmV3IFplKHRoaXMubW9kaWZpZWQsdGhpcy5vcmlnaW5hbCx0aGlzLmlubmVyQ2hhbmdlcz8ubWFwKHQ9PnQuZmxpcCgpKSl9d2l0aElubmVyQ2hhbmdlc0Zyb21MaW5lUmFuZ2VzKCl7cmV0dXJuIG5ldyBaZSh0aGlzLm9yaWdpbmFsLHRoaXMubW9kaWZpZWQsW3RoaXMudG9SYW5nZU1hcHBpbmcoKV0pfX1jbGFzcyBUZXtzdGF0aWMgYXNzZXJ0U29ydGVkKHQpe2ZvcihsZXQgbj0xO248dC5sZW5ndGg7bisrKXtjb25zdCByPXRbbi0xXSxpPXRbbl07aWYoIShyLm9yaWdpbmFsUmFuZ2UuZ2V0RW5kUG9zaXRpb24oKS5pc0JlZm9yZU9yRXF1YWwoaS5vcmlnaW5hbFJhbmdlLmdldFN0YXJ0UG9zaXRpb24oKSkmJnIubW9kaWZpZWRSYW5nZS5nZXRFbmRQb3NpdGlvbigpLmlzQmVmb3JlT3JFcXVhbChpLm1vZGlmaWVkUmFuZ2UuZ2V0U3RhcnRQb3NpdGlvbigpKSkpdGhyb3cgbmV3IGtlKCJSYW5nZSBtYXBwaW5ncyBtdXN0IGJlIHNvcnRlZCIpfX1jb25zdHJ1Y3Rvcih0LG4pe3RoaXMub3JpZ2luYWxSYW5nZT10LHRoaXMubW9kaWZpZWRSYW5nZT1ufXRvU3RyaW5nKCl7cmV0dXJuYHske3RoaXMub3JpZ2luYWxSYW5nZS50b1N0cmluZygpfS0+JHt0aGlzLm1vZGlmaWVkUmFuZ2UudG9TdHJpbmcoKX19YH1mbGlwKCl7cmV0dXJuIG5ldyBUZSh0aGlzLm1vZGlmaWVkUmFuZ2UsdGhpcy5vcmlnaW5hbFJhbmdlKX10b1RleHRFZGl0KHQpe2NvbnN0IG49dC5nZXRWYWx1ZU9mUmFuZ2UodGhpcy5tb2RpZmllZFJhbmdlKTtyZXR1cm4gbmV3IGh1KHRoaXMub3JpZ2luYWxSYW5nZSxuKX19Y29uc3QgZHU9MztjbGFzcyB1dXtjb21wdXRlRGlmZih0LG4scil7Y29uc3Qgcz1uZXcgZnUodCxuLHttYXhDb21wdXRhdGlvblRpbWU6ci5tYXhDb21wdXRhdGlvblRpbWVNcyxzaG91bGRJZ25vcmVUcmltV2hpdGVzcGFjZTpyLmlnbm9yZVRyaW1XaGl0ZXNwYWNlLHNob3VsZENvbXB1dGVDaGFyQ2hhbmdlczohMCxzaG91bGRNYWtlUHJldHR5RGlmZjohMCxzaG91bGRQb3N0UHJvY2Vzc0NoYXJDaGFuZ2VzOiEwfSkuY29tcHV0ZURpZmYoKSxhPVtdO2xldCBsPW51bGw7Zm9yKGNvbnN0IG8gb2Ygcy5jaGFuZ2VzKXtsZXQgYztvLm9yaWdpbmFsRW5kTGluZU51bWJlcj09PTA/Yz1uZXcgSChvLm9yaWdpbmFsU3RhcnRMaW5lTnVtYmVyKzEsby5vcmlnaW5hbFN0YXJ0TGluZU51bWJlcisxKTpjPW5ldyBIKG8ub3JpZ2luYWxTdGFydExpbmVOdW1iZXIsby5vcmlnaW5hbEVuZExpbmVOdW1iZXIrMSk7bGV0IGQ7by5tb2RpZmllZEVuZExpbmVOdW1iZXI9PT0wP2Q9bmV3IEgoby5tb2RpZmllZFN0YXJ0TGluZU51bWJlcisxLG8ubW9kaWZpZWRTdGFydExpbmVOdW1iZXIrMSk6ZD1uZXcgSChvLm1vZGlmaWVkU3RhcnRMaW5lTnVtYmVyLG8ubW9kaWZpZWRFbmRMaW5lTnVtYmVyKzEpO2xldCB1PW5ldyBaZShjLGQsby5jaGFyQ2hhbmdlcz8ubWFwKGY9Pm5ldyBUZShuZXcgUShmLm9yaWdpbmFsU3RhcnRMaW5lTnVtYmVyLGYub3JpZ2luYWxTdGFydENvbHVtbixmLm9yaWdpbmFsRW5kTGluZU51bWJlcixmLm9yaWdpbmFsRW5kQ29sdW1uKSxuZXcgUShmLm1vZGlmaWVkU3RhcnRMaW5lTnVtYmVyLGYubW9kaWZpZWRTdGFydENvbHVtbixmLm1vZGlmaWVkRW5kTGluZU51bWJlcixmLm1vZGlmaWVkRW5kQ29sdW1uKSkpKTtsJiYobC5tb2RpZmllZC5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlPT09dS5tb2RpZmllZC5zdGFydExpbmVOdW1iZXJ8fGwub3JpZ2luYWwuZW5kTGluZU51bWJlckV4Y2x1c2l2ZT09PXUub3JpZ2luYWwuc3RhcnRMaW5lTnVtYmVyKSYmKHU9bmV3IFplKGwub3JpZ2luYWwuam9pbih1Lm9yaWdpbmFsKSxsLm1vZGlmaWVkLmpvaW4odS5tb2RpZmllZCksbC5pbm5lckNoYW5nZXMmJnUuaW5uZXJDaGFuZ2VzP2wuaW5uZXJDaGFuZ2VzLmNvbmNhdCh1LmlubmVyQ2hhbmdlcyk6dm9pZCAwKSxhLnBvcCgpKSxhLnB1c2godSksbD11fXJldHVybiBRbigoKT0+Rm8oYSwobyxjKT0+Yy5vcmlnaW5hbC5zdGFydExpbmVOdW1iZXItby5vcmlnaW5hbC5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlPT09Yy5tb2RpZmllZC5zdGFydExpbmVOdW1iZXItby5tb2RpZmllZC5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlJiZvLm9yaWdpbmFsLmVuZExpbmVOdW1iZXJFeGNsdXNpdmU8Yy5vcmlnaW5hbC5zdGFydExpbmVOdW1iZXImJm8ubW9kaWZpZWQuZW5kTGluZU51bWJlckV4Y2x1c2l2ZTxjLm1vZGlmaWVkLnN0YXJ0TGluZU51bWJlcikpLG5ldyBLbihhLFtdLHMucXVpdEVhcmx5KX19ZnVuY3Rpb24gem8oZSx0LG4scil7cmV0dXJuIG5ldyBmdChlLHQsbikuQ29tcHV0ZURpZmYocil9bGV0IFBvPWNsYXNze2NvbnN0cnVjdG9yKHQpe2NvbnN0IG49W10scj1bXTtmb3IobGV0IGk9MCxzPXQubGVuZ3RoO2k8cztpKyspbltpXT15aSh0W2ldLDEpLHJbaV09eGkodFtpXSwxKTt0aGlzLmxpbmVzPXQsdGhpcy5fc3RhcnRDb2x1bW5zPW4sdGhpcy5fZW5kQ29sdW1ucz1yfWdldEVsZW1lbnRzKCl7Y29uc3QgdD1bXTtmb3IobGV0IG49MCxyPXRoaXMubGluZXMubGVuZ3RoO248cjtuKyspdFtuXT10aGlzLmxpbmVzW25dLnN1YnN0cmluZyh0aGlzLl9zdGFydENvbHVtbnNbbl0tMSx0aGlzLl9lbmRDb2x1bW5zW25dLTEpO3JldHVybiB0fWdldFN0cmljdEVsZW1lbnQodCl7cmV0dXJuIHRoaXMubGluZXNbdF19Z2V0U3RhcnRMaW5lTnVtYmVyKHQpe3JldHVybiB0KzF9Z2V0RW5kTGluZU51bWJlcih0KXtyZXR1cm4gdCsxfWNyZWF0ZUNoYXJTZXF1ZW5jZSh0LG4scil7Y29uc3QgaT1bXSxzPVtdLGE9W107bGV0IGw9MDtmb3IobGV0IG89bjtvPD1yO28rKyl7Y29uc3QgYz10aGlzLmxpbmVzW29dLGQ9dD90aGlzLl9zdGFydENvbHVtbnNbb106MSx1PXQ/dGhpcy5fZW5kQ29sdW1uc1tvXTpjLmxlbmd0aCsxO2ZvcihsZXQgZj1kO2Y8dTtmKyspaVtsXT1jLmNoYXJDb2RlQXQoZi0xKSxzW2xdPW8rMSxhW2xdPWYsbCsrOyF0JiZvPHImJihpW2xdPTEwLHNbbF09bysxLGFbbF09Yy5sZW5ndGgrMSxsKyspfXJldHVybiBuZXcgcHUoaSxzLGEpfX07Y2xhc3MgcHV7Y29uc3RydWN0b3IodCxuLHIpe3RoaXMuX2NoYXJDb2Rlcz10LHRoaXMuX2xpbmVOdW1iZXJzPW4sdGhpcy5fY29sdW1ucz1yfXRvU3RyaW5nKCl7cmV0dXJuIlsiK3RoaXMuX2NoYXJDb2Rlcy5tYXAoKHQsbik9Pih0PT09MTA/IlxcbiI6U3RyaW5nLmZyb21DaGFyQ29kZSh0KSkrYC0oJHt0aGlzLl9saW5lTnVtYmVyc1tuXX0sJHt0aGlzLl9jb2x1bW5zW25dfSlgKS5qb2luKCIsICIpKyJdIn1fYXNzZXJ0SW5kZXgodCxuKXtpZih0PDB8fHQ+PW4ubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiSWxsZWdhbCBpbmRleCIpfWdldEVsZW1lbnRzKCl7cmV0dXJuIHRoaXMuX2NoYXJDb2Rlc31nZXRTdGFydExpbmVOdW1iZXIodCl7cmV0dXJuIHQ+MCYmdD09PXRoaXMuX2xpbmVOdW1iZXJzLmxlbmd0aD90aGlzLmdldEVuZExpbmVOdW1iZXIodC0xKToodGhpcy5fYXNzZXJ0SW5kZXgodCx0aGlzLl9saW5lTnVtYmVycyksdGhpcy5fbGluZU51bWJlcnNbdF0pfWdldEVuZExpbmVOdW1iZXIodCl7cmV0dXJuIHQ9PT0tMT90aGlzLmdldFN0YXJ0TGluZU51bWJlcih0KzEpOih0aGlzLl9hc3NlcnRJbmRleCh0LHRoaXMuX2xpbmVOdW1iZXJzKSx0aGlzLl9jaGFyQ29kZXNbdF09PT0xMD90aGlzLl9saW5lTnVtYmVyc1t0XSsxOnRoaXMuX2xpbmVOdW1iZXJzW3RdKX1nZXRTdGFydENvbHVtbih0KXtyZXR1cm4gdD4wJiZ0PT09dGhpcy5fY29sdW1ucy5sZW5ndGg/dGhpcy5nZXRFbmRDb2x1bW4odC0xKToodGhpcy5fYXNzZXJ0SW5kZXgodCx0aGlzLl9jb2x1bW5zKSx0aGlzLl9jb2x1bW5zW3RdKX1nZXRFbmRDb2x1bW4odCl7cmV0dXJuIHQ9PT0tMT90aGlzLmdldFN0YXJ0Q29sdW1uKHQrMSk6KHRoaXMuX2Fzc2VydEluZGV4KHQsdGhpcy5fY29sdW1ucyksdGhpcy5fY2hhckNvZGVzW3RdPT09MTA/MTp0aGlzLl9jb2x1bW5zW3RdKzEpfX1jbGFzcyBxdHtjb25zdHJ1Y3Rvcih0LG4scixpLHMsYSxsLG8pe3RoaXMub3JpZ2luYWxTdGFydExpbmVOdW1iZXI9dCx0aGlzLm9yaWdpbmFsU3RhcnRDb2x1bW49bix0aGlzLm9yaWdpbmFsRW5kTGluZU51bWJlcj1yLHRoaXMub3JpZ2luYWxFbmRDb2x1bW49aSx0aGlzLm1vZGlmaWVkU3RhcnRMaW5lTnVtYmVyPXMsdGhpcy5tb2RpZmllZFN0YXJ0Q29sdW1uPWEsdGhpcy5tb2RpZmllZEVuZExpbmVOdW1iZXI9bCx0aGlzLm1vZGlmaWVkRW5kQ29sdW1uPW99c3RhdGljIGNyZWF0ZUZyb21EaWZmQ2hhbmdlKHQsbixyKXtjb25zdCBpPW4uZ2V0U3RhcnRMaW5lTnVtYmVyKHQub3JpZ2luYWxTdGFydCkscz1uLmdldFN0YXJ0Q29sdW1uKHQub3JpZ2luYWxTdGFydCksYT1uLmdldEVuZExpbmVOdW1iZXIodC5vcmlnaW5hbFN0YXJ0K3Qub3JpZ2luYWxMZW5ndGgtMSksbD1uLmdldEVuZENvbHVtbih0Lm9yaWdpbmFsU3RhcnQrdC5vcmlnaW5hbExlbmd0aC0xKSxvPXIuZ2V0U3RhcnRMaW5lTnVtYmVyKHQubW9kaWZpZWRTdGFydCksYz1yLmdldFN0YXJ0Q29sdW1uKHQubW9kaWZpZWRTdGFydCksZD1yLmdldEVuZExpbmVOdW1iZXIodC5tb2RpZmllZFN0YXJ0K3QubW9kaWZpZWRMZW5ndGgtMSksdT1yLmdldEVuZENvbHVtbih0Lm1vZGlmaWVkU3RhcnQrdC5tb2RpZmllZExlbmd0aC0xKTtyZXR1cm4gbmV3IHF0KGkscyxhLGwsbyxjLGQsdSl9fWZ1bmN0aW9uIG11KGUpe2lmKGUubGVuZ3RoPD0xKXJldHVybiBlO2NvbnN0IHQ9W2VbMF1dO2xldCBuPXRbMF07Zm9yKGxldCByPTEsaT1lLmxlbmd0aDtyPGk7cisrKXtjb25zdCBzPWVbcl0sYT1zLm9yaWdpbmFsU3RhcnQtKG4ub3JpZ2luYWxTdGFydCtuLm9yaWdpbmFsTGVuZ3RoKSxsPXMubW9kaWZpZWRTdGFydC0obi5tb2RpZmllZFN0YXJ0K24ubW9kaWZpZWRMZW5ndGgpO01hdGgubWluKGEsbCk8ZHU/KG4ub3JpZ2luYWxMZW5ndGg9cy5vcmlnaW5hbFN0YXJ0K3Mub3JpZ2luYWxMZW5ndGgtbi5vcmlnaW5hbFN0YXJ0LG4ubW9kaWZpZWRMZW5ndGg9cy5tb2RpZmllZFN0YXJ0K3MubW9kaWZpZWRMZW5ndGgtbi5tb2RpZmllZFN0YXJ0KToodC5wdXNoKHMpLG49cyl9cmV0dXJuIHR9Y2xhc3MgbW57Y29uc3RydWN0b3IodCxuLHIsaSxzKXt0aGlzLm9yaWdpbmFsU3RhcnRMaW5lTnVtYmVyPXQsdGhpcy5vcmlnaW5hbEVuZExpbmVOdW1iZXI9bix0aGlzLm1vZGlmaWVkU3RhcnRMaW5lTnVtYmVyPXIsdGhpcy5tb2RpZmllZEVuZExpbmVOdW1iZXI9aSx0aGlzLmNoYXJDaGFuZ2VzPXN9c3RhdGljIGNyZWF0ZUZyb21EaWZmUmVzdWx0KHQsbixyLGkscyxhLGwpe2xldCBvLGMsZCx1LGY7aWYobi5vcmlnaW5hbExlbmd0aD09PTA/KG89ci5nZXRTdGFydExpbmVOdW1iZXIobi5vcmlnaW5hbFN0YXJ0KS0xLGM9MCk6KG89ci5nZXRTdGFydExpbmVOdW1iZXIobi5vcmlnaW5hbFN0YXJ0KSxjPXIuZ2V0RW5kTGluZU51bWJlcihuLm9yaWdpbmFsU3RhcnQrbi5vcmlnaW5hbExlbmd0aC0xKSksbi5tb2RpZmllZExlbmd0aD09PTA/KGQ9aS5nZXRTdGFydExpbmVOdW1iZXIobi5tb2RpZmllZFN0YXJ0KS0xLHU9MCk6KGQ9aS5nZXRTdGFydExpbmVOdW1iZXIobi5tb2RpZmllZFN0YXJ0KSx1PWkuZ2V0RW5kTGluZU51bWJlcihuLm1vZGlmaWVkU3RhcnQrbi5tb2RpZmllZExlbmd0aC0xKSksYSYmbi5vcmlnaW5hbExlbmd0aD4wJiZuLm9yaWdpbmFsTGVuZ3RoPDIwJiZuLm1vZGlmaWVkTGVuZ3RoPjAmJm4ubW9kaWZpZWRMZW5ndGg8MjAmJnMoKSl7Y29uc3QgbT1yLmNyZWF0ZUNoYXJTZXF1ZW5jZSh0LG4ub3JpZ2luYWxTdGFydCxuLm9yaWdpbmFsU3RhcnQrbi5vcmlnaW5hbExlbmd0aC0xKSx2PWkuY3JlYXRlQ2hhclNlcXVlbmNlKHQsbi5tb2RpZmllZFN0YXJ0LG4ubW9kaWZpZWRTdGFydCtuLm1vZGlmaWVkTGVuZ3RoLTEpO2lmKG0uZ2V0RWxlbWVudHMoKS5sZW5ndGg+MCYmdi5nZXRFbGVtZW50cygpLmxlbmd0aD4wKXtsZXQgdz16byhtLHYscywhMCkuY2hhbmdlcztsJiYodz1tdSh3KSksZj1bXTtmb3IobGV0IGs9MCxSPXcubGVuZ3RoO2s8UjtrKyspZi5wdXNoKHF0LmNyZWF0ZUZyb21EaWZmQ2hhbmdlKHdba10sbSx2KSl9fXJldHVybiBuZXcgbW4obyxjLGQsdSxmKX19Y2xhc3MgZnV7Y29uc3RydWN0b3IodCxuLHIpe3RoaXMuc2hvdWxkQ29tcHV0ZUNoYXJDaGFuZ2VzPXIuc2hvdWxkQ29tcHV0ZUNoYXJDaGFuZ2VzLHRoaXMuc2hvdWxkUG9zdFByb2Nlc3NDaGFyQ2hhbmdlcz1yLnNob3VsZFBvc3RQcm9jZXNzQ2hhckNoYW5nZXMsdGhpcy5zaG91bGRJZ25vcmVUcmltV2hpdGVzcGFjZT1yLnNob3VsZElnbm9yZVRyaW1XaGl0ZXNwYWNlLHRoaXMuc2hvdWxkTWFrZVByZXR0eURpZmY9ci5zaG91bGRNYWtlUHJldHR5RGlmZix0aGlzLm9yaWdpbmFsTGluZXM9dCx0aGlzLm1vZGlmaWVkTGluZXM9bix0aGlzLm9yaWdpbmFsPW5ldyBQbyh0KSx0aGlzLm1vZGlmaWVkPW5ldyBQbyhuKSx0aGlzLmNvbnRpbnVlTGluZURpZmY9VG8oci5tYXhDb21wdXRhdGlvblRpbWUpLHRoaXMuY29udGludWVDaGFyRGlmZj1UbyhyLm1heENvbXB1dGF0aW9uVGltZT09PTA/MDpNYXRoLm1pbihyLm1heENvbXB1dGF0aW9uVGltZSw1ZTMpKX1jb21wdXRlRGlmZigpe2lmKHRoaXMub3JpZ2luYWwubGluZXMubGVuZ3RoPT09MSYmdGhpcy5vcmlnaW5hbC5saW5lc1swXS5sZW5ndGg9PT0wKXJldHVybiB0aGlzLm1vZGlmaWVkLmxpbmVzLmxlbmd0aD09PTEmJnRoaXMubW9kaWZpZWQubGluZXNbMF0ubGVuZ3RoPT09MD97cXVpdEVhcmx5OiExLGNoYW5nZXM6W119OntxdWl0RWFybHk6ITEsY2hhbmdlczpbe29yaWdpbmFsU3RhcnRMaW5lTnVtYmVyOjEsb3JpZ2luYWxFbmRMaW5lTnVtYmVyOjEsbW9kaWZpZWRTdGFydExpbmVOdW1iZXI6MSxtb2RpZmllZEVuZExpbmVOdW1iZXI6dGhpcy5tb2RpZmllZC5saW5lcy5sZW5ndGgsY2hhckNoYW5nZXM6dm9pZCAwfV19O2lmKHRoaXMubW9kaWZpZWQubGluZXMubGVuZ3RoPT09MSYmdGhpcy5tb2RpZmllZC5saW5lc1swXS5sZW5ndGg9PT0wKXJldHVybntxdWl0RWFybHk6ITEsY2hhbmdlczpbe29yaWdpbmFsU3RhcnRMaW5lTnVtYmVyOjEsb3JpZ2luYWxFbmRMaW5lTnVtYmVyOnRoaXMub3JpZ2luYWwubGluZXMubGVuZ3RoLG1vZGlmaWVkU3RhcnRMaW5lTnVtYmVyOjEsbW9kaWZpZWRFbmRMaW5lTnVtYmVyOjEsY2hhckNoYW5nZXM6dm9pZCAwfV19O2NvbnN0IHQ9em8odGhpcy5vcmlnaW5hbCx0aGlzLm1vZGlmaWVkLHRoaXMuY29udGludWVMaW5lRGlmZix0aGlzLnNob3VsZE1ha2VQcmV0dHlEaWZmKSxuPXQuY2hhbmdlcyxyPXQucXVpdEVhcmx5O2lmKHRoaXMuc2hvdWxkSWdub3JlVHJpbVdoaXRlc3BhY2Upe2NvbnN0IGw9W107Zm9yKGxldCBvPTAsYz1uLmxlbmd0aDtvPGM7bysrKWwucHVzaChtbi5jcmVhdGVGcm9tRGlmZlJlc3VsdCh0aGlzLnNob3VsZElnbm9yZVRyaW1XaGl0ZXNwYWNlLG5bb10sdGhpcy5vcmlnaW5hbCx0aGlzLm1vZGlmaWVkLHRoaXMuY29udGludWVDaGFyRGlmZix0aGlzLnNob3VsZENvbXB1dGVDaGFyQ2hhbmdlcyx0aGlzLnNob3VsZFBvc3RQcm9jZXNzQ2hhckNoYW5nZXMpKTtyZXR1cm57cXVpdEVhcmx5OnIsY2hhbmdlczpsfX1jb25zdCBpPVtdO2xldCBzPTAsYT0wO2ZvcihsZXQgbD0tMSxvPW4ubGVuZ3RoO2w8bztsKyspe2NvbnN0IGM9bCsxPG8/bltsKzFdOm51bGwsZD1jP2Mub3JpZ2luYWxTdGFydDp0aGlzLm9yaWdpbmFsTGluZXMubGVuZ3RoLHU9Yz9jLm1vZGlmaWVkU3RhcnQ6dGhpcy5tb2RpZmllZExpbmVzLmxlbmd0aDtmb3IoO3M8ZCYmYTx1Oyl7Y29uc3QgZj10aGlzLm9yaWdpbmFsTGluZXNbc10sbT10aGlzLm1vZGlmaWVkTGluZXNbYV07aWYoZiE9PW0pe3tsZXQgdj15aShmLDEpLHc9eWkobSwxKTtmb3IoO3Y+MSYmdz4xOyl7Y29uc3Qgaz1mLmNoYXJDb2RlQXQodi0yKSxSPW0uY2hhckNvZGVBdCh3LTIpO2lmKGshPT1SKWJyZWFrO3YtLSx3LS19KHY+MXx8dz4xKSYmdGhpcy5fcHVzaFRyaW1XaGl0ZXNwYWNlQ2hhckNoYW5nZShpLHMrMSwxLHYsYSsxLDEsdyl9e2xldCB2PXhpKGYsMSksdz14aShtLDEpO2NvbnN0IGs9Zi5sZW5ndGgrMSxSPW0ubGVuZ3RoKzE7Zm9yKDt2PGsmJnc8Ujspe2NvbnN0IEk9Zi5jaGFyQ29kZUF0KHYtMSksTj1mLmNoYXJDb2RlQXQody0xKTtpZihJIT09TilicmVhazt2KyssdysrfSh2PGt8fHc8UikmJnRoaXMuX3B1c2hUcmltV2hpdGVzcGFjZUNoYXJDaGFuZ2UoaSxzKzEsdixrLGErMSx3LFIpfX1zKyssYSsrfWMmJihpLnB1c2gobW4uY3JlYXRlRnJvbURpZmZSZXN1bHQodGhpcy5zaG91bGRJZ25vcmVUcmltV2hpdGVzcGFjZSxjLHRoaXMub3JpZ2luYWwsdGhpcy5tb2RpZmllZCx0aGlzLmNvbnRpbnVlQ2hhckRpZmYsdGhpcy5zaG91bGRDb21wdXRlQ2hhckNoYW5nZXMsdGhpcy5zaG91bGRQb3N0UHJvY2Vzc0NoYXJDaGFuZ2VzKSkscys9Yy5vcmlnaW5hbExlbmd0aCxhKz1jLm1vZGlmaWVkTGVuZ3RoKX1yZXR1cm57cXVpdEVhcmx5OnIsY2hhbmdlczppfX1fcHVzaFRyaW1XaGl0ZXNwYWNlQ2hhckNoYW5nZSh0LG4scixpLHMsYSxsKXtpZih0aGlzLl9tZXJnZVRyaW1XaGl0ZXNwYWNlQ2hhckNoYW5nZSh0LG4scixpLHMsYSxsKSlyZXR1cm47bGV0IG87dGhpcy5zaG91bGRDb21wdXRlQ2hhckNoYW5nZXMmJihvPVtuZXcgcXQobixyLG4saSxzLGEscyxsKV0pLHQucHVzaChuZXcgbW4obixuLHMscyxvKSl9X21lcmdlVHJpbVdoaXRlc3BhY2VDaGFyQ2hhbmdlKHQsbixyLGkscyxhLGwpe2NvbnN0IG89dC5sZW5ndGg7aWYobz09PTApcmV0dXJuITE7Y29uc3QgYz10W28tMV07cmV0dXJuIGMub3JpZ2luYWxFbmRMaW5lTnVtYmVyPT09MHx8Yy5tb2RpZmllZEVuZExpbmVOdW1iZXI9PT0wPyExOmMub3JpZ2luYWxFbmRMaW5lTnVtYmVyPT09biYmYy5tb2RpZmllZEVuZExpbmVOdW1iZXI9PT1zPyh0aGlzLnNob3VsZENvbXB1dGVDaGFyQ2hhbmdlcyYmYy5jaGFyQ2hhbmdlcyYmYy5jaGFyQ2hhbmdlcy5wdXNoKG5ldyBxdChuLHIsbixpLHMsYSxzLGwpKSwhMCk6Yy5vcmlnaW5hbEVuZExpbmVOdW1iZXIrMT09PW4mJmMubW9kaWZpZWRFbmRMaW5lTnVtYmVyKzE9PT1zPyhjLm9yaWdpbmFsRW5kTGluZU51bWJlcj1uLGMubW9kaWZpZWRFbmRMaW5lTnVtYmVyPXMsdGhpcy5zaG91bGRDb21wdXRlQ2hhckNoYW5nZXMmJmMuY2hhckNoYW5nZXMmJmMuY2hhckNoYW5nZXMucHVzaChuZXcgcXQobixyLG4saSxzLGEscyxsKSksITApOiExfX1mdW5jdGlvbiB5aShlLHQpe2NvbnN0IG49SGgoZSk7cmV0dXJuIG49PT0tMT90Om4rMX1mdW5jdGlvbiB4aShlLHQpe2NvbnN0IG49R2goZSk7cmV0dXJuIG49PT0tMT90Om4rMn1mdW5jdGlvbiBUbyhlKXtpZihlPT09MClyZXR1cm4oKT0+ITA7Y29uc3QgdD1EYXRlLm5vdygpO3JldHVybigpPT5EYXRlLm5vdygpLXQ8ZX1mdW5jdGlvbiBndShlLHQsbj0ocixpKT0+cj09PWkpe2lmKGU9PT10KXJldHVybiEwO2lmKCFlfHwhdHx8ZS5sZW5ndGghPT10Lmxlbmd0aClyZXR1cm4hMTtmb3IobGV0IHI9MCxpPWUubGVuZ3RoO3I8aTtyKyspaWYoIW4oZVtyXSx0W3JdKSlyZXR1cm4hMTtyZXR1cm4hMH1mdW5jdGlvbipidShlLHQpe2xldCBuLHI7Zm9yKGNvbnN0IGkgb2YgZSlyIT09dm9pZCAwJiZ0KHIsaSk/bi5wdXNoKGkpOihuJiYoeWllbGQgbiksbj1baV0pLHI9aTtuJiYoeWllbGQgbil9ZnVuY3Rpb24gdnUoZSx0KXtmb3IobGV0IG49MDtuPD1lLmxlbmd0aDtuKyspdChuPT09MD92b2lkIDA6ZVtuLTFdLG49PT1lLmxlbmd0aD92b2lkIDA6ZVtuXSl9ZnVuY3Rpb24gd3UoZSx0KXtmb3IobGV0IG49MDtuPGUubGVuZ3RoO24rKyl0KG49PT0wP3ZvaWQgMDplW24tMV0sZVtuXSxuKzE9PT1lLmxlbmd0aD92b2lkIDA6ZVtuKzFdKX1mdW5jdGlvbiB5dShlLHQpe2Zvcihjb25zdCBuIG9mIHQpZS5wdXNoKG4pfXZhciBTaTsoZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChzKXtyZXR1cm4gczwwfWUuaXNMZXNzVGhhbj10O2Z1bmN0aW9uIG4ocyl7cmV0dXJuIHM8PTB9ZS5pc0xlc3NUaGFuT3JFcXVhbD1uO2Z1bmN0aW9uIHIocyl7cmV0dXJuIHM+MH1lLmlzR3JlYXRlclRoYW49cjtmdW5jdGlvbiBpKHMpe3JldHVybiBzPT09MH1lLmlzTmVpdGhlckxlc3NPckdyZWF0ZXJUaGFuPWksZS5ncmVhdGVyVGhhbj0xLGUubGVzc1RoYW49LTEsZS5uZWl0aGVyTGVzc09yR3JlYXRlclRoYW49MH0pKFNpfHwoU2k9e30pKTtmdW5jdGlvbiBlcihlLHQpe3JldHVybihuLHIpPT50KGUobiksZShyKSl9Y29uc3QgdHI9KGUsdCk9PmUtdDtmdW5jdGlvbiB4dShlKXtyZXR1cm4odCxuKT0+LWUodCxuKX1jb25zdCBhbj1jbGFzcyBhbntjb25zdHJ1Y3Rvcih0KXt0aGlzLml0ZXJhdGU9dH10b0FycmF5KCl7Y29uc3QgdD1bXTtyZXR1cm4gdGhpcy5pdGVyYXRlKG49Pih0LnB1c2gobiksITApKSx0fWZpbHRlcih0KXtyZXR1cm4gbmV3IGFuKG49PnRoaXMuaXRlcmF0ZShyPT50KHIpP24ocik6ITApKX1tYXAodCl7cmV0dXJuIG5ldyBhbihuPT50aGlzLml0ZXJhdGUocj0+bih0KHIpKSkpfWZpbmRMYXN0KHQpe2xldCBuO3JldHVybiB0aGlzLml0ZXJhdGUocj0+KHQocikmJihuPXIpLCEwKSksbn1maW5kTGFzdE1heEJ5KHQpe2xldCBuLHI9ITA7cmV0dXJuIHRoaXMuaXRlcmF0ZShpPT4oKHJ8fFNpLmlzR3JlYXRlclRoYW4odChpLG4pKSkmJihyPSExLG49aSksITApKSxufX07YW4uZW1wdHk9bmV3IGFuKHQ9Pnt9KTtsZXQgT289YW47Y2xhc3MgZXR7c3RhdGljIHRyaXZpYWwodCxuKXtyZXR1cm4gbmV3IGV0KFtuZXcgbGUoWS5vZkxlbmd0aCh0Lmxlbmd0aCksWS5vZkxlbmd0aChuLmxlbmd0aCkpXSwhMSl9c3RhdGljIHRyaXZpYWxUaW1lZE91dCh0LG4pe3JldHVybiBuZXcgZXQoW25ldyBsZShZLm9mTGVuZ3RoKHQubGVuZ3RoKSxZLm9mTGVuZ3RoKG4ubGVuZ3RoKSldLCEwKX1jb25zdHJ1Y3Rvcih0LG4pe3RoaXMuZGlmZnM9dCx0aGlzLmhpdFRpbWVvdXQ9bn19Y2xhc3MgbGV7c3RhdGljIGludmVydCh0LG4pe2NvbnN0IHI9W107cmV0dXJuIHZ1KHQsKGkscyk9PntyLnB1c2gobGUuZnJvbU9mZnNldFBhaXJzKGk/aS5nZXRFbmRFeGNsdXNpdmVzKCk6dHQuemVybyxzP3MuZ2V0U3RhcnRzKCk6bmV3IHR0KG4sKGk/aS5zZXEyUmFuZ2UuZW5kRXhjbHVzaXZlLWkuc2VxMVJhbmdlLmVuZEV4Y2x1c2l2ZTowKStuKSkpfSkscn1zdGF0aWMgZnJvbU9mZnNldFBhaXJzKHQsbil7cmV0dXJuIG5ldyBsZShuZXcgWSh0Lm9mZnNldDEsbi5vZmZzZXQxKSxuZXcgWSh0Lm9mZnNldDIsbi5vZmZzZXQyKSl9c3RhdGljIGFzc2VydFNvcnRlZCh0KXtsZXQgbjtmb3IoY29uc3QgciBvZiB0KXtpZihuJiYhKG4uc2VxMVJhbmdlLmVuZEV4Y2x1c2l2ZTw9ci5zZXExUmFuZ2Uuc3RhcnQmJm4uc2VxMlJhbmdlLmVuZEV4Y2x1c2l2ZTw9ci5zZXEyUmFuZ2Uuc3RhcnQpKXRocm93IG5ldyBrZSgiU2VxdWVuY2UgZGlmZnMgbXVzdCBiZSBzb3J0ZWQiKTtuPXJ9fWNvbnN0cnVjdG9yKHQsbil7dGhpcy5zZXExUmFuZ2U9dCx0aGlzLnNlcTJSYW5nZT1ufXN3YXAoKXtyZXR1cm4gbmV3IGxlKHRoaXMuc2VxMlJhbmdlLHRoaXMuc2VxMVJhbmdlKX10b1N0cmluZygpe3JldHVybmAke3RoaXMuc2VxMVJhbmdlfSA8LT4gJHt0aGlzLnNlcTJSYW5nZX1gfWpvaW4odCl7cmV0dXJuIG5ldyBsZSh0aGlzLnNlcTFSYW5nZS5qb2luKHQuc2VxMVJhbmdlKSx0aGlzLnNlcTJSYW5nZS5qb2luKHQuc2VxMlJhbmdlKSl9ZGVsdGEodCl7cmV0dXJuIHQ9PT0wP3RoaXM6bmV3IGxlKHRoaXMuc2VxMVJhbmdlLmRlbHRhKHQpLHRoaXMuc2VxMlJhbmdlLmRlbHRhKHQpKX1kZWx0YVN0YXJ0KHQpe3JldHVybiB0PT09MD90aGlzOm5ldyBsZSh0aGlzLnNlcTFSYW5nZS5kZWx0YVN0YXJ0KHQpLHRoaXMuc2VxMlJhbmdlLmRlbHRhU3RhcnQodCkpfWRlbHRhRW5kKHQpe3JldHVybiB0PT09MD90aGlzOm5ldyBsZSh0aGlzLnNlcTFSYW5nZS5kZWx0YUVuZCh0KSx0aGlzLnNlcTJSYW5nZS5kZWx0YUVuZCh0KSl9aW50ZXJzZWN0KHQpe2NvbnN0IG49dGhpcy5zZXExUmFuZ2UuaW50ZXJzZWN0KHQuc2VxMVJhbmdlKSxyPXRoaXMuc2VxMlJhbmdlLmludGVyc2VjdCh0LnNlcTJSYW5nZSk7aWYoISghbnx8IXIpKXJldHVybiBuZXcgbGUobixyKX1nZXRTdGFydHMoKXtyZXR1cm4gbmV3IHR0KHRoaXMuc2VxMVJhbmdlLnN0YXJ0LHRoaXMuc2VxMlJhbmdlLnN0YXJ0KX1nZXRFbmRFeGNsdXNpdmVzKCl7cmV0dXJuIG5ldyB0dCh0aGlzLnNlcTFSYW5nZS5lbmRFeGNsdXNpdmUsdGhpcy5zZXEyUmFuZ2UuZW5kRXhjbHVzaXZlKX19Y29uc3QgRHQ9Y2xhc3MgRHR7Y29uc3RydWN0b3IodCxuKXt0aGlzLm9mZnNldDE9dCx0aGlzLm9mZnNldDI9bn10b1N0cmluZygpe3JldHVybmAke3RoaXMub2Zmc2V0MX0gPC0+ICR7dGhpcy5vZmZzZXQyfWB9ZGVsdGEodCl7cmV0dXJuIHQ9PT0wP3RoaXM6bmV3IER0KHRoaXMub2Zmc2V0MSt0LHRoaXMub2Zmc2V0Mit0KX1lcXVhbHModCl7cmV0dXJuIHRoaXMub2Zmc2V0MT09PXQub2Zmc2V0MSYmdGhpcy5vZmZzZXQyPT09dC5vZmZzZXQyfX07RHQuemVybz1uZXcgRHQoMCwwKSxEdC5tYXg9bmV3IER0KE51bWJlci5NQVhfU0FGRV9JTlRFR0VSLE51bWJlci5NQVhfU0FGRV9JTlRFR0VSKTtsZXQgdHQ9RHQ7Y29uc3QgUHI9Y2xhc3MgUHJ7aXNWYWxpZCgpe3JldHVybiEwfX07UHIuaW5zdGFuY2U9bmV3IFByO2xldCBmbj1QcjtjbGFzcyBTdXtjb25zdHJ1Y3Rvcih0KXtpZih0aGlzLnRpbWVvdXQ9dCx0aGlzLnN0YXJ0VGltZT1EYXRlLm5vdygpLHRoaXMudmFsaWQ9ITAsdDw9MCl0aHJvdyBuZXcga2UoInRpbWVvdXQgbXVzdCBiZSBwb3NpdGl2ZSIpfWlzVmFsaWQoKXtpZighKERhdGUubm93KCktdGhpcy5zdGFydFRpbWU8dGhpcy50aW1lb3V0KSYmdGhpcy52YWxpZCl7dGhpcy52YWxpZD0hMTtkZWJ1Z2dlcn1yZXR1cm4gdGhpcy52YWxpZH19Y2xhc3MgQ2l7Y29uc3RydWN0b3IodCxuKXt0aGlzLndpZHRoPXQsdGhpcy5oZWlnaHQ9bix0aGlzLmFycmF5PVtdLHRoaXMuYXJyYXk9bmV3IEFycmF5KHQqbil9Z2V0KHQsbil7cmV0dXJuIHRoaXMuYXJyYXlbdCtuKnRoaXMud2lkdGhdfXNldCh0LG4scil7dGhpcy5hcnJheVt0K24qdGhpcy53aWR0aF09cn19ZnVuY3Rpb24gX2koZSl7cmV0dXJuIGU9PT0zMnx8ZT09PTl9Y29uc3QgVG49Y2xhc3MgVG57c3RhdGljIGdldEtleSh0KXtsZXQgbj10aGlzLmNocktleXMuZ2V0KHQpO3JldHVybiBuPT09dm9pZCAwJiYobj10aGlzLmNocktleXMuc2l6ZSx0aGlzLmNocktleXMuc2V0KHQsbikpLG59Y29uc3RydWN0b3IodCxuLHIpe3RoaXMucmFuZ2U9dCx0aGlzLmxpbmVzPW4sdGhpcy5zb3VyY2U9cix0aGlzLmhpc3RvZ3JhbT1bXTtsZXQgaT0wO2ZvcihsZXQgcz10LnN0YXJ0TGluZU51bWJlci0xO3M8dC5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlLTE7cysrKXtjb25zdCBhPW5bc107Zm9yKGxldCBvPTA7bzxhLmxlbmd0aDtvKyspe2krKztjb25zdCBjPWFbb10sZD1Ubi5nZXRLZXkoYyk7dGhpcy5oaXN0b2dyYW1bZF09KHRoaXMuaGlzdG9ncmFtW2RdfHwwKSsxfWkrKztjb25zdCBsPVRuLmdldEtleShgCmApO3RoaXMuaGlzdG9ncmFtW2xdPSh0aGlzLmhpc3RvZ3JhbVtsXXx8MCkrMX10aGlzLnRvdGFsQ291bnQ9aX1jb21wdXRlU2ltaWxhcml0eSh0KXtsZXQgbj0wO2NvbnN0IHI9TWF0aC5tYXgodGhpcy5oaXN0b2dyYW0ubGVuZ3RoLHQuaGlzdG9ncmFtLmxlbmd0aCk7Zm9yKGxldCBpPTA7aTxyO2krKyluKz1NYXRoLmFicygodGhpcy5oaXN0b2dyYW1baV0/PzApLSh0Lmhpc3RvZ3JhbVtpXT8/MCkpO3JldHVybiAxLW4vKHRoaXMudG90YWxDb3VudCt0LnRvdGFsQ291bnQpfX07VG4uY2hyS2V5cz1uZXcgTWFwO2xldCBucj1UbjtjbGFzcyBDdXtjb21wdXRlKHQsbixyPWZuLmluc3RhbmNlLGkpe2lmKHQubGVuZ3RoPT09MHx8bi5sZW5ndGg9PT0wKXJldHVybiBldC50cml2aWFsKHQsbik7Y29uc3Qgcz1uZXcgQ2kodC5sZW5ndGgsbi5sZW5ndGgpLGE9bmV3IENpKHQubGVuZ3RoLG4ubGVuZ3RoKSxsPW5ldyBDaSh0Lmxlbmd0aCxuLmxlbmd0aCk7Zm9yKGxldCB2PTA7djx0Lmxlbmd0aDt2KyspZm9yKGxldCB3PTA7dzxuLmxlbmd0aDt3Kyspe2lmKCFyLmlzVmFsaWQoKSlyZXR1cm4gZXQudHJpdmlhbFRpbWVkT3V0KHQsbik7Y29uc3Qgaz12PT09MD8wOnMuZ2V0KHYtMSx3KSxSPXc9PT0wPzA6cy5nZXQodix3LTEpO2xldCBJO3QuZ2V0RWxlbWVudCh2KT09PW4uZ2V0RWxlbWVudCh3KT8odj09PTB8fHc9PT0wP0k9MDpJPXMuZ2V0KHYtMSx3LTEpLHY+MCYmdz4wJiZhLmdldCh2LTEsdy0xKT09PTMmJihJKz1sLmdldCh2LTEsdy0xKSksSSs9aT9pKHYsdyk6MSk6ST0tMTtjb25zdCBOPU1hdGgubWF4KGssUixJKTtpZihOPT09SSl7Y29uc3QgRT12PjAmJnc+MD9sLmdldCh2LTEsdy0xKTowO2wuc2V0KHYsdyxFKzEpLGEuc2V0KHYsdywzKX1lbHNlIE49PT1rPyhsLnNldCh2LHcsMCksYS5zZXQodix3LDEpKTpOPT09UiYmKGwuc2V0KHYsdywwKSxhLnNldCh2LHcsMikpO3Muc2V0KHYsdyxOKX1jb25zdCBvPVtdO2xldCBjPXQubGVuZ3RoLGQ9bi5sZW5ndGg7ZnVuY3Rpb24gdSh2LHcpeyh2KzEhPT1jfHx3KzEhPT1kKSYmby5wdXNoKG5ldyBsZShuZXcgWSh2KzEsYyksbmV3IFkodysxLGQpKSksYz12LGQ9d31sZXQgZj10Lmxlbmd0aC0xLG09bi5sZW5ndGgtMTtmb3IoO2Y+PTAmJm0+PTA7KWEuZ2V0KGYsbSk9PT0zPyh1KGYsbSksZi0tLG0tLSk6YS5nZXQoZixtKT09PTE/Zi0tOm0tLTtyZXR1cm4gdSgtMSwtMSksby5yZXZlcnNlKCksbmV3IGV0KG8sITEpfX1jbGFzcyBXb3tjb21wdXRlKHQsbixyPWZuLmluc3RhbmNlKXtpZih0Lmxlbmd0aD09PTB8fG4ubGVuZ3RoPT09MClyZXR1cm4gZXQudHJpdmlhbCh0LG4pO2NvbnN0IGk9dCxzPW47ZnVuY3Rpb24gYSh3LGspe2Zvcig7dzxpLmxlbmd0aCYmazxzLmxlbmd0aCYmaS5nZXRFbGVtZW50KHcpPT09cy5nZXRFbGVtZW50KGspOyl3KyssaysrO3JldHVybiB3fWxldCBsPTA7Y29uc3Qgbz1uZXcgX3U7by5zZXQoMCxhKDAsMCkpO2NvbnN0IGM9bmV3IGt1O2Muc2V0KDAsby5nZXQoMCk9PT0wP251bGw6bmV3IFVvKG51bGwsMCwwLG8uZ2V0KDApKSk7bGV0IGQ9MDtlOmZvcig7Oyl7aWYobCsrLCFyLmlzVmFsaWQoKSlyZXR1cm4gZXQudHJpdmlhbFRpbWVkT3V0KGkscyk7Y29uc3Qgdz0tTWF0aC5taW4obCxzLmxlbmd0aCtsJTIpLGs9TWF0aC5taW4obCxpLmxlbmd0aCtsJTIpO2ZvcihkPXc7ZDw9aztkKz0yKXtjb25zdCBSPWQ9PT1rPy0xOm8uZ2V0KGQrMSksST1kPT09dz8tMTpvLmdldChkLTEpKzEsTj1NYXRoLm1pbihNYXRoLm1heChSLEkpLGkubGVuZ3RoKSxFPU4tZDtpZihOPmkubGVuZ3RofHxFPnMubGVuZ3RoKWNvbnRpbnVlO2NvbnN0IEY9YShOLEUpO28uc2V0KGQsRik7Y29uc3QgTT1OPT09Uj9jLmdldChkKzEpOmMuZ2V0KGQtMSk7aWYoYy5zZXQoZCxGIT09Tj9uZXcgVW8oTSxOLEUsRi1OKTpNKSxvLmdldChkKT09PWkubGVuZ3RoJiZvLmdldChkKS1kPT09cy5sZW5ndGgpYnJlYWsgZX19bGV0IHU9Yy5nZXQoZCk7Y29uc3QgZj1bXTtsZXQgbT1pLmxlbmd0aCx2PXMubGVuZ3RoO2Zvcig7Oyl7Y29uc3Qgdz11P3UueCt1Lmxlbmd0aDowLGs9dT91LnkrdS5sZW5ndGg6MDtpZigodyE9PW18fGshPT12KSYmZi5wdXNoKG5ldyBsZShuZXcgWSh3LG0pLG5ldyBZKGssdikpKSwhdSlicmVhazttPXUueCx2PXUueSx1PXUucHJldn1yZXR1cm4gZi5yZXZlcnNlKCksbmV3IGV0KGYsITEpfX1jbGFzcyBVb3tjb25zdHJ1Y3Rvcih0LG4scixpKXt0aGlzLnByZXY9dCx0aGlzLng9bix0aGlzLnk9cix0aGlzLmxlbmd0aD1pfX1jbGFzcyBfdXtjb25zdHJ1Y3Rvcigpe3RoaXMucG9zaXRpdmVBcnI9bmV3IEludDMyQXJyYXkoMTApLHRoaXMubmVnYXRpdmVBcnI9bmV3IEludDMyQXJyYXkoMTApfWdldCh0KXtyZXR1cm4gdDwwPyh0PS10LTEsdGhpcy5uZWdhdGl2ZUFyclt0XSk6dGhpcy5wb3NpdGl2ZUFyclt0XX1zZXQodCxuKXtpZih0PDApe2lmKHQ9LXQtMSx0Pj10aGlzLm5lZ2F0aXZlQXJyLmxlbmd0aCl7Y29uc3Qgcj10aGlzLm5lZ2F0aXZlQXJyO3RoaXMubmVnYXRpdmVBcnI9bmV3IEludDMyQXJyYXkoci5sZW5ndGgqMiksdGhpcy5uZWdhdGl2ZUFyci5zZXQocil9dGhpcy5uZWdhdGl2ZUFyclt0XT1ufWVsc2V7aWYodD49dGhpcy5wb3NpdGl2ZUFyci5sZW5ndGgpe2NvbnN0IHI9dGhpcy5wb3NpdGl2ZUFycjt0aGlzLnBvc2l0aXZlQXJyPW5ldyBJbnQzMkFycmF5KHIubGVuZ3RoKjIpLHRoaXMucG9zaXRpdmVBcnIuc2V0KHIpfXRoaXMucG9zaXRpdmVBcnJbdF09bn19fWNsYXNzIGt1e2NvbnN0cnVjdG9yKCl7dGhpcy5wb3NpdGl2ZUFycj1bXSx0aGlzLm5lZ2F0aXZlQXJyPVtdfWdldCh0KXtyZXR1cm4gdDwwPyh0PS10LTEsdGhpcy5uZWdhdGl2ZUFyclt0XSk6dGhpcy5wb3NpdGl2ZUFyclt0XX1zZXQodCxuKXt0PDA/KHQ9LXQtMSx0aGlzLm5lZ2F0aXZlQXJyW3RdPW4pOnRoaXMucG9zaXRpdmVBcnJbdF09bn19Y2xhc3MgcnJ7Y29uc3RydWN0b3IodCxuLHIpe3RoaXMubGluZXM9dCx0aGlzLnJhbmdlPW4sdGhpcy5jb25zaWRlcldoaXRlc3BhY2VDaGFuZ2VzPXIsdGhpcy5lbGVtZW50cz1bXSx0aGlzLmZpcnN0RWxlbWVudE9mZnNldEJ5TGluZUlkeD1bXSx0aGlzLmxpbmVTdGFydE9mZnNldHM9W10sdGhpcy50cmltbWVkV3NMZW5ndGhzQnlMaW5lSWR4PVtdLHRoaXMuZmlyc3RFbGVtZW50T2Zmc2V0QnlMaW5lSWR4LnB1c2goMCk7Zm9yKGxldCBpPXRoaXMucmFuZ2Uuc3RhcnRMaW5lTnVtYmVyO2k8PXRoaXMucmFuZ2UuZW5kTGluZU51bWJlcjtpKyspe2xldCBzPXRbaS0xXSxhPTA7aT09PXRoaXMucmFuZ2Uuc3RhcnRMaW5lTnVtYmVyJiZ0aGlzLnJhbmdlLnN0YXJ0Q29sdW1uPjEmJihhPXRoaXMucmFuZ2Uuc3RhcnRDb2x1bW4tMSxzPXMuc3Vic3RyaW5nKGEpKSx0aGlzLmxpbmVTdGFydE9mZnNldHMucHVzaChhKTtsZXQgbD0wO2lmKCFyKXtjb25zdCBjPXMudHJpbVN0YXJ0KCk7bD1zLmxlbmd0aC1jLmxlbmd0aCxzPWMudHJpbUVuZCgpfXRoaXMudHJpbW1lZFdzTGVuZ3Roc0J5TGluZUlkeC5wdXNoKGwpO2NvbnN0IG89aT09PXRoaXMucmFuZ2UuZW5kTGluZU51bWJlcj9NYXRoLm1pbih0aGlzLnJhbmdlLmVuZENvbHVtbi0xLWEtbCxzLmxlbmd0aCk6cy5sZW5ndGg7Zm9yKGxldCBjPTA7YzxvO2MrKyl0aGlzLmVsZW1lbnRzLnB1c2gocy5jaGFyQ29kZUF0KGMpKTtpPHRoaXMucmFuZ2UuZW5kTGluZU51bWJlciYmKHRoaXMuZWxlbWVudHMucHVzaCgxMCksdGhpcy5maXJzdEVsZW1lbnRPZmZzZXRCeUxpbmVJZHgucHVzaCh0aGlzLmVsZW1lbnRzLmxlbmd0aCkpfX10b1N0cmluZygpe3JldHVybmBTbGljZTogIiR7dGhpcy50ZXh0fSJgfWdldCB0ZXh0KCl7cmV0dXJuIHRoaXMuZ2V0VGV4dChuZXcgWSgwLHRoaXMubGVuZ3RoKSl9Z2V0VGV4dCh0KXtyZXR1cm4gdGhpcy5lbGVtZW50cy5zbGljZSh0LnN0YXJ0LHQuZW5kRXhjbHVzaXZlKS5tYXAobj0+U3RyaW5nLmZyb21DaGFyQ29kZShuKSkuam9pbigiIil9Z2V0RWxlbWVudCh0KXtyZXR1cm4gdGhpcy5lbGVtZW50c1t0XX1nZXQgbGVuZ3RoKCl7cmV0dXJuIHRoaXMuZWxlbWVudHMubGVuZ3RofWdldEJvdW5kYXJ5U2NvcmUodCl7Y29uc3Qgbj0kbyh0PjA/dGhpcy5lbGVtZW50c1t0LTFdOi0xKSxyPSRvKHQ8dGhpcy5lbGVtZW50cy5sZW5ndGg/dGhpcy5lbGVtZW50c1t0XTotMSk7aWYobj09PTcmJnI9PT04KXJldHVybiAwO2lmKG49PT04KXJldHVybiAxNTA7bGV0IGk9MDtyZXR1cm4gbiE9PXImJihpKz0xMCxuPT09MCYmcj09PTEmJihpKz0xKSksaSs9Vm8obiksaSs9Vm8ociksaX10cmFuc2xhdGVPZmZzZXQodCxuPSJyaWdodCIpe2NvbnN0IHI9cG4odGhpcy5maXJzdEVsZW1lbnRPZmZzZXRCeUxpbmVJZHgscz0+czw9dCksaT10LXRoaXMuZmlyc3RFbGVtZW50T2Zmc2V0QnlMaW5lSWR4W3JdO3JldHVybiBuZXcgaGUodGhpcy5yYW5nZS5zdGFydExpbmVOdW1iZXIrciwxK3RoaXMubGluZVN0YXJ0T2Zmc2V0c1tyXStpKyhpPT09MCYmbj09PSJsZWZ0Ij8wOnRoaXMudHJpbW1lZFdzTGVuZ3Roc0J5TGluZUlkeFtyXSkpfXRyYW5zbGF0ZVJhbmdlKHQpe2NvbnN0IG49dGhpcy50cmFuc2xhdGVPZmZzZXQodC5zdGFydCwicmlnaHQiKSxyPXRoaXMudHJhbnNsYXRlT2Zmc2V0KHQuZW5kRXhjbHVzaXZlLCJsZWZ0Iik7cmV0dXJuIHIuaXNCZWZvcmUobik/US5mcm9tUG9zaXRpb25zKHIscik6US5mcm9tUG9zaXRpb25zKG4scil9ZmluZFdvcmRDb250YWluaW5nKHQpe2lmKHQ8MHx8dD49dGhpcy5lbGVtZW50cy5sZW5ndGh8fCFraSh0aGlzLmVsZW1lbnRzW3RdKSlyZXR1cm47bGV0IG49dDtmb3IoO24+MCYma2kodGhpcy5lbGVtZW50c1tuLTFdKTspbi0tO2xldCByPXQ7Zm9yKDtyPHRoaXMuZWxlbWVudHMubGVuZ3RoJiZraSh0aGlzLmVsZW1lbnRzW3JdKTspcisrO3JldHVybiBuZXcgWShuLHIpfWNvdW50TGluZXNJbih0KXtyZXR1cm4gdGhpcy50cmFuc2xhdGVPZmZzZXQodC5lbmRFeGNsdXNpdmUpLmxpbmVOdW1iZXItdGhpcy50cmFuc2xhdGVPZmZzZXQodC5zdGFydCkubGluZU51bWJlcn1pc1N0cm9uZ2x5RXF1YWwodCxuKXtyZXR1cm4gdGhpcy5lbGVtZW50c1t0XT09PXRoaXMuZWxlbWVudHNbbl19ZXh0ZW5kVG9GdWxsTGluZXModCl7Y29uc3Qgbj0kdCh0aGlzLmZpcnN0RWxlbWVudE9mZnNldEJ5TGluZUlkeCxpPT5pPD10LnN0YXJ0KT8/MCxyPWN1KHRoaXMuZmlyc3RFbGVtZW50T2Zmc2V0QnlMaW5lSWR4LGk9PnQuZW5kRXhjbHVzaXZlPD1pKT8/dGhpcy5lbGVtZW50cy5sZW5ndGg7cmV0dXJuIG5ldyBZKG4scil9fWZ1bmN0aW9uIGtpKGUpe3JldHVybiBlPj05NyYmZTw9MTIyfHxlPj02NSYmZTw9OTB8fGU+PTQ4JiZlPD01N31jb25zdCBFdT17MDowLDE6MCwyOjAsMzoxMCw0OjIsNTozMCw2OjMsNzoxMCw4OjEwfTtmdW5jdGlvbiBWbyhlKXtyZXR1cm4gRXVbZV19ZnVuY3Rpb24gJG8oZSl7cmV0dXJuIGU9PT0xMD84OmU9PT0xMz83Ol9pKGUpPzY6ZT49OTcmJmU8PTEyMj8wOmU+PTY1JiZlPD05MD8xOmU+PTQ4JiZlPD01Nz8yOmU9PT0tMT8zOmU9PT00NHx8ZT09PTU5PzU6NH1mdW5jdGlvbiBGdShlLHQsbixyLGkscyl7bGV0e21vdmVzOmEsZXhjbHVkZWRDaGFuZ2VzOmx9PU51KGUsdCxuLHMpO2lmKCFzLmlzVmFsaWQoKSlyZXR1cm5bXTtjb25zdCBvPWUuZmlsdGVyKGQ9PiFsLmhhcyhkKSksYz1EdShvLHIsaSx0LG4scyk7cmV0dXJuIHl1KGEsYyksYT1JdShhKSxhPWEuZmlsdGVyKGQ9Pntjb25zdCB1PWQub3JpZ2luYWwudG9PZmZzZXRSYW5nZSgpLnNsaWNlKHQpLm1hcChtPT5tLnRyaW0oKSk7cmV0dXJuIHUuam9pbihgCmApLmxlbmd0aD49MTUmJlJ1KHUsbT0+bS5sZW5ndGg+PTIpPj0yfSksYT1BdShlLGEpLGF9ZnVuY3Rpb24gUnUoZSx0KXtsZXQgbj0wO2Zvcihjb25zdCByIG9mIGUpdChyKSYmbisrO3JldHVybiBufWZ1bmN0aW9uIE51KGUsdCxuLHIpe2NvbnN0IGk9W10scz1lLmZpbHRlcihvPT5vLm1vZGlmaWVkLmlzRW1wdHkmJm8ub3JpZ2luYWwubGVuZ3RoPj0zKS5tYXAobz0+bmV3IG5yKG8ub3JpZ2luYWwsdCxvKSksYT1uZXcgU2V0KGUuZmlsdGVyKG89Pm8ub3JpZ2luYWwuaXNFbXB0eSYmby5tb2RpZmllZC5sZW5ndGg+PTMpLm1hcChvPT5uZXcgbnIoby5tb2RpZmllZCxuLG8pKSksbD1uZXcgU2V0O2Zvcihjb25zdCBvIG9mIHMpe2xldCBjPS0xLGQ7Zm9yKGNvbnN0IHUgb2YgYSl7Y29uc3QgZj1vLmNvbXB1dGVTaW1pbGFyaXR5KHUpO2Y+YyYmKGM9ZixkPXUpfWlmKGM+LjkmJmQmJihhLmRlbGV0ZShkKSxpLnB1c2gobmV3IEllKG8ucmFuZ2UsZC5yYW5nZSkpLGwuYWRkKG8uc291cmNlKSxsLmFkZChkLnNvdXJjZSkpLCFyLmlzVmFsaWQoKSlyZXR1cm57bW92ZXM6aSxleGNsdWRlZENoYW5nZXM6bH19cmV0dXJue21vdmVzOmksZXhjbHVkZWRDaGFuZ2VzOmx9fWZ1bmN0aW9uIER1KGUsdCxuLHIsaSxzKXtjb25zdCBhPVtdLGw9bmV3IFhkO2Zvcihjb25zdCBmIG9mIGUpZm9yKGxldCBtPWYub3JpZ2luYWwuc3RhcnRMaW5lTnVtYmVyO208Zi5vcmlnaW5hbC5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlLTI7bSsrKXtjb25zdCB2PWAke3RbbS0xXX06JHt0W20rMS0xXX06JHt0W20rMi0xXX1gO2wuYWRkKHYse3JhbmdlOm5ldyBIKG0sbSszKX0pfWNvbnN0IG89W107ZS5zb3J0KGVyKGY9PmYubW9kaWZpZWQuc3RhcnRMaW5lTnVtYmVyLHRyKSk7Zm9yKGNvbnN0IGYgb2YgZSl7bGV0IG09W107Zm9yKGxldCB2PWYubW9kaWZpZWQuc3RhcnRMaW5lTnVtYmVyO3Y8Zi5tb2RpZmllZC5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlLTI7disrKXtjb25zdCB3PWAke25bdi0xXX06JHtuW3YrMS0xXX06JHtuW3YrMi0xXX1gLGs9bmV3IEgodix2KzMpLFI9W107bC5mb3JFYWNoKHcsKHtyYW5nZTpJfSk9Pntmb3IoY29uc3QgRSBvZiBtKWlmKEUub3JpZ2luYWxMaW5lUmFuZ2UuZW5kTGluZU51bWJlckV4Y2x1c2l2ZSsxPT09SS5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlJiZFLm1vZGlmaWVkTGluZVJhbmdlLmVuZExpbmVOdW1iZXJFeGNsdXNpdmUrMT09PWsuZW5kTGluZU51bWJlckV4Y2x1c2l2ZSl7RS5vcmlnaW5hbExpbmVSYW5nZT1uZXcgSChFLm9yaWdpbmFsTGluZVJhbmdlLnN0YXJ0TGluZU51bWJlcixJLmVuZExpbmVOdW1iZXJFeGNsdXNpdmUpLEUubW9kaWZpZWRMaW5lUmFuZ2U9bmV3IEgoRS5tb2RpZmllZExpbmVSYW5nZS5zdGFydExpbmVOdW1iZXIsay5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlKSxSLnB1c2goRSk7cmV0dXJufWNvbnN0IE49e21vZGlmaWVkTGluZVJhbmdlOmssb3JpZ2luYWxMaW5lUmFuZ2U6SX07by5wdXNoKE4pLFIucHVzaChOKX0pLG09Un1pZighcy5pc1ZhbGlkKCkpcmV0dXJuW119by5zb3J0KHh1KGVyKGY9PmYubW9kaWZpZWRMaW5lUmFuZ2UubGVuZ3RoLHRyKSkpO2NvbnN0IGM9bmV3ICRlLGQ9bmV3ICRlO2Zvcihjb25zdCBmIG9mIG8pe2NvbnN0IG09Zi5tb2RpZmllZExpbmVSYW5nZS5zdGFydExpbmVOdW1iZXItZi5vcmlnaW5hbExpbmVSYW5nZS5zdGFydExpbmVOdW1iZXIsdj1jLnN1YnRyYWN0RnJvbShmLm1vZGlmaWVkTGluZVJhbmdlKSx3PWQuc3VidHJhY3RGcm9tKGYub3JpZ2luYWxMaW5lUmFuZ2UpLmdldFdpdGhEZWx0YShtKSxrPXYuZ2V0SW50ZXJzZWN0aW9uKHcpO2Zvcihjb25zdCBSIG9mIGsucmFuZ2VzKXtpZihSLmxlbmd0aDwzKWNvbnRpbnVlO2NvbnN0IEk9UixOPVIuZGVsdGEoLW0pO2EucHVzaChuZXcgSWUoTixJKSksYy5hZGRSYW5nZShJKSxkLmFkZFJhbmdlKE4pfX1hLnNvcnQoZXIoZj0+Zi5vcmlnaW5hbC5zdGFydExpbmVOdW1iZXIsdHIpKTtjb25zdCB1PW5ldyBabihlKTtmb3IobGV0IGY9MDtmPGEubGVuZ3RoO2YrKyl7Y29uc3QgbT1hW2ZdLHY9dS5maW5kTGFzdE1vbm90b25vdXMoTT0+TS5vcmlnaW5hbC5zdGFydExpbmVOdW1iZXI8PW0ub3JpZ2luYWwuc3RhcnRMaW5lTnVtYmVyKSx3PSR0KGUsTT0+TS5tb2RpZmllZC5zdGFydExpbmVOdW1iZXI8PW0ubW9kaWZpZWQuc3RhcnRMaW5lTnVtYmVyKSxrPU1hdGgubWF4KG0ub3JpZ2luYWwuc3RhcnRMaW5lTnVtYmVyLXYub3JpZ2luYWwuc3RhcnRMaW5lTnVtYmVyLG0ubW9kaWZpZWQuc3RhcnRMaW5lTnVtYmVyLXcubW9kaWZpZWQuc3RhcnRMaW5lTnVtYmVyKSxSPXUuZmluZExhc3RNb25vdG9ub3VzKE09Pk0ub3JpZ2luYWwuc3RhcnRMaW5lTnVtYmVyPG0ub3JpZ2luYWwuZW5kTGluZU51bWJlckV4Y2x1c2l2ZSksST0kdChlLE09Pk0ubW9kaWZpZWQuc3RhcnRMaW5lTnVtYmVyPG0ubW9kaWZpZWQuZW5kTGluZU51bWJlckV4Y2x1c2l2ZSksTj1NYXRoLm1heChSLm9yaWdpbmFsLmVuZExpbmVOdW1iZXJFeGNsdXNpdmUtbS5vcmlnaW5hbC5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlLEkubW9kaWZpZWQuZW5kTGluZU51bWJlckV4Y2x1c2l2ZS1tLm1vZGlmaWVkLmVuZExpbmVOdW1iZXJFeGNsdXNpdmUpO2xldCBFO2ZvcihFPTA7RTxrO0UrKyl7Y29uc3QgTT1tLm9yaWdpbmFsLnN0YXJ0TGluZU51bWJlci1FLTEsVD1tLm1vZGlmaWVkLnN0YXJ0TGluZU51bWJlci1FLTE7aWYoTT5yLmxlbmd0aHx8VD5pLmxlbmd0aHx8Yy5jb250YWlucyhUKXx8ZC5jb250YWlucyhNKXx8IUJvKHJbTS0xXSxpW1QtMV0scykpYnJlYWt9RT4wJiYoZC5hZGRSYW5nZShuZXcgSChtLm9yaWdpbmFsLnN0YXJ0TGluZU51bWJlci1FLG0ub3JpZ2luYWwuc3RhcnRMaW5lTnVtYmVyKSksYy5hZGRSYW5nZShuZXcgSChtLm1vZGlmaWVkLnN0YXJ0TGluZU51bWJlci1FLG0ubW9kaWZpZWQuc3RhcnRMaW5lTnVtYmVyKSkpO2xldCBGO2ZvcihGPTA7RjxOO0YrKyl7Y29uc3QgTT1tLm9yaWdpbmFsLmVuZExpbmVOdW1iZXJFeGNsdXNpdmUrRixUPW0ubW9kaWZpZWQuZW5kTGluZU51bWJlckV4Y2x1c2l2ZStGO2lmKE0+ci5sZW5ndGh8fFQ+aS5sZW5ndGh8fGMuY29udGFpbnMoVCl8fGQuY29udGFpbnMoTSl8fCFCbyhyW00tMV0saVtULTFdLHMpKWJyZWFrfUY+MCYmKGQuYWRkUmFuZ2UobmV3IEgobS5vcmlnaW5hbC5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlLG0ub3JpZ2luYWwuZW5kTGluZU51bWJlckV4Y2x1c2l2ZStGKSksYy5hZGRSYW5nZShuZXcgSChtLm1vZGlmaWVkLmVuZExpbmVOdW1iZXJFeGNsdXNpdmUsbS5tb2RpZmllZC5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlK0YpKSksKEU+MHx8Rj4wKSYmKGFbZl09bmV3IEllKG5ldyBIKG0ub3JpZ2luYWwuc3RhcnRMaW5lTnVtYmVyLUUsbS5vcmlnaW5hbC5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlK0YpLG5ldyBIKG0ubW9kaWZpZWQuc3RhcnRMaW5lTnVtYmVyLUUsbS5tb2RpZmllZC5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlK0YpKSl9cmV0dXJuIGF9ZnVuY3Rpb24gQm8oZSx0LG4pe2lmKGUudHJpbSgpPT09dC50cmltKCkpcmV0dXJuITA7aWYoZS5sZW5ndGg+MzAwJiZ0Lmxlbmd0aD4zMDApcmV0dXJuITE7Y29uc3QgaT1uZXcgV28oKS5jb21wdXRlKG5ldyBycihbZV0sbmV3IFEoMSwxLDEsZS5sZW5ndGgpLCExKSxuZXcgcnIoW3RdLG5ldyBRKDEsMSwxLHQubGVuZ3RoKSwhMSksbik7bGV0IHM9MDtjb25zdCBhPWxlLmludmVydChpLmRpZmZzLGUubGVuZ3RoKTtmb3IoY29uc3QgZCBvZiBhKWQuc2VxMVJhbmdlLmZvckVhY2godT0+e19pKGUuY2hhckNvZGVBdCh1KSl8fHMrK30pO2Z1bmN0aW9uIGwoZCl7bGV0IHU9MDtmb3IobGV0IGY9MDtmPGUubGVuZ3RoO2YrKylfaShkLmNoYXJDb2RlQXQoZikpfHx1Kys7cmV0dXJuIHV9Y29uc3Qgbz1sKGUubGVuZ3RoPnQubGVuZ3RoP2U6dCk7cmV0dXJuIHMvbz4uNiYmbz4xMH1mdW5jdGlvbiBJdShlKXtpZihlLmxlbmd0aD09PTApcmV0dXJuIGU7ZS5zb3J0KGVyKG49Pm4ub3JpZ2luYWwuc3RhcnRMaW5lTnVtYmVyLHRyKSk7Y29uc3QgdD1bZVswXV07Zm9yKGxldCBuPTE7bjxlLmxlbmd0aDtuKyspe2NvbnN0IHI9dFt0Lmxlbmd0aC0xXSxpPWVbbl0scz1pLm9yaWdpbmFsLnN0YXJ0TGluZU51bWJlci1yLm9yaWdpbmFsLmVuZExpbmVOdW1iZXJFeGNsdXNpdmUsYT1pLm1vZGlmaWVkLnN0YXJ0TGluZU51bWJlci1yLm1vZGlmaWVkLmVuZExpbmVOdW1iZXJFeGNsdXNpdmU7aWYocz49MCYmYT49MCYmcythPD0yKXt0W3QubGVuZ3RoLTFdPXIuam9pbihpKTtjb250aW51ZX10LnB1c2goaSl9cmV0dXJuIHR9ZnVuY3Rpb24gQXUoZSx0KXtjb25zdCBuPW5ldyBabihlKTtyZXR1cm4gdD10LmZpbHRlcihyPT57Y29uc3QgaT1uLmZpbmRMYXN0TW9ub3Rvbm91cyhsPT5sLm9yaWdpbmFsLnN0YXJ0TGluZU51bWJlcjxyLm9yaWdpbmFsLmVuZExpbmVOdW1iZXJFeGNsdXNpdmUpfHxuZXcgSWUobmV3IEgoMSwxKSxuZXcgSCgxLDEpKSxzPSR0KGUsbD0+bC5tb2RpZmllZC5zdGFydExpbmVOdW1iZXI8ci5tb2RpZmllZC5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlKTtyZXR1cm4gaSE9PXN9KSx0fWZ1bmN0aW9uIHFvKGUsdCxuKXtsZXQgcj1uO3JldHVybiByPWpvKGUsdCxyKSxyPWpvKGUsdCxyKSxyPU11KGUsdCxyKSxyfWZ1bmN0aW9uIGpvKGUsdCxuKXtpZihuLmxlbmd0aD09PTApcmV0dXJuIG47Y29uc3Qgcj1bXTtyLnB1c2goblswXSk7Zm9yKGxldCBzPTE7czxuLmxlbmd0aDtzKyspe2NvbnN0IGE9cltyLmxlbmd0aC0xXTtsZXQgbD1uW3NdO2lmKGwuc2VxMVJhbmdlLmlzRW1wdHl8fGwuc2VxMlJhbmdlLmlzRW1wdHkpe2NvbnN0IG89bC5zZXExUmFuZ2Uuc3RhcnQtYS5zZXExUmFuZ2UuZW5kRXhjbHVzaXZlO2xldCBjO2ZvcihjPTE7Yzw9byYmIShlLmdldEVsZW1lbnQobC5zZXExUmFuZ2Uuc3RhcnQtYykhPT1lLmdldEVsZW1lbnQobC5zZXExUmFuZ2UuZW5kRXhjbHVzaXZlLWMpfHx0LmdldEVsZW1lbnQobC5zZXEyUmFuZ2Uuc3RhcnQtYykhPT10LmdldEVsZW1lbnQobC5zZXEyUmFuZ2UuZW5kRXhjbHVzaXZlLWMpKTtjKyspO2lmKGMtLSxjPT09byl7cltyLmxlbmd0aC0xXT1uZXcgbGUobmV3IFkoYS5zZXExUmFuZ2Uuc3RhcnQsbC5zZXExUmFuZ2UuZW5kRXhjbHVzaXZlLW8pLG5ldyBZKGEuc2VxMlJhbmdlLnN0YXJ0LGwuc2VxMlJhbmdlLmVuZEV4Y2x1c2l2ZS1vKSk7Y29udGludWV9bD1sLmRlbHRhKC1jKX1yLnB1c2gobCl9Y29uc3QgaT1bXTtmb3IobGV0IHM9MDtzPHIubGVuZ3RoLTE7cysrKXtjb25zdCBhPXJbcysxXTtsZXQgbD1yW3NdO2lmKGwuc2VxMVJhbmdlLmlzRW1wdHl8fGwuc2VxMlJhbmdlLmlzRW1wdHkpe2NvbnN0IG89YS5zZXExUmFuZ2Uuc3RhcnQtbC5zZXExUmFuZ2UuZW5kRXhjbHVzaXZlO2xldCBjO2ZvcihjPTA7YzxvJiYhKCFlLmlzU3Ryb25nbHlFcXVhbChsLnNlcTFSYW5nZS5zdGFydCtjLGwuc2VxMVJhbmdlLmVuZEV4Y2x1c2l2ZStjKXx8IXQuaXNTdHJvbmdseUVxdWFsKGwuc2VxMlJhbmdlLnN0YXJ0K2MsbC5zZXEyUmFuZ2UuZW5kRXhjbHVzaXZlK2MpKTtjKyspO2lmKGM9PT1vKXtyW3MrMV09bmV3IGxlKG5ldyBZKGwuc2VxMVJhbmdlLnN0YXJ0K28sYS5zZXExUmFuZ2UuZW5kRXhjbHVzaXZlKSxuZXcgWShsLnNlcTJSYW5nZS5zdGFydCtvLGEuc2VxMlJhbmdlLmVuZEV4Y2x1c2l2ZSkpO2NvbnRpbnVlfWM+MCYmKGw9bC5kZWx0YShjKSl9aS5wdXNoKGwpfXJldHVybiByLmxlbmd0aD4wJiZpLnB1c2gocltyLmxlbmd0aC0xXSksaX1mdW5jdGlvbiBNdShlLHQsbil7aWYoIWUuZ2V0Qm91bmRhcnlTY29yZXx8IXQuZ2V0Qm91bmRhcnlTY29yZSlyZXR1cm4gbjtmb3IobGV0IHI9MDtyPG4ubGVuZ3RoO3IrKyl7Y29uc3QgaT1yPjA/bltyLTFdOnZvaWQgMCxzPW5bcl0sYT1yKzE8bi5sZW5ndGg/bltyKzFdOnZvaWQgMCxsPW5ldyBZKGk/aS5zZXExUmFuZ2UuZW5kRXhjbHVzaXZlKzE6MCxhP2Euc2VxMVJhbmdlLnN0YXJ0LTE6ZS5sZW5ndGgpLG89bmV3IFkoaT9pLnNlcTJSYW5nZS5lbmRFeGNsdXNpdmUrMTowLGE/YS5zZXEyUmFuZ2Uuc3RhcnQtMTp0Lmxlbmd0aCk7cy5zZXExUmFuZ2UuaXNFbXB0eT9uW3JdPUhvKHMsZSx0LGwsbyk6cy5zZXEyUmFuZ2UuaXNFbXB0eSYmKG5bcl09SG8ocy5zd2FwKCksdCxlLG8sbCkuc3dhcCgpKX1yZXR1cm4gbn1mdW5jdGlvbiBIbyhlLHQsbixyLGkpe2xldCBhPTE7Zm9yKDtlLnNlcTFSYW5nZS5zdGFydC1hPj1yLnN0YXJ0JiZlLnNlcTJSYW5nZS5zdGFydC1hPj1pLnN0YXJ0JiZuLmlzU3Ryb25nbHlFcXVhbChlLnNlcTJSYW5nZS5zdGFydC1hLGUuc2VxMlJhbmdlLmVuZEV4Y2x1c2l2ZS1hKSYmYTwxMDA7KWErKzthLS07bGV0IGw9MDtmb3IoO2Uuc2VxMVJhbmdlLnN0YXJ0K2w8ci5lbmRFeGNsdXNpdmUmJmUuc2VxMlJhbmdlLmVuZEV4Y2x1c2l2ZStsPGkuZW5kRXhjbHVzaXZlJiZuLmlzU3Ryb25nbHlFcXVhbChlLnNlcTJSYW5nZS5zdGFydCtsLGUuc2VxMlJhbmdlLmVuZEV4Y2x1c2l2ZStsKSYmbDwxMDA7KWwrKztpZihhPT09MCYmbD09PTApcmV0dXJuIGU7bGV0IG89MCxjPS0xO2ZvcihsZXQgZD0tYTtkPD1sO2QrKyl7Y29uc3QgdT1lLnNlcTJSYW5nZS5zdGFydCtkLGY9ZS5zZXEyUmFuZ2UuZW5kRXhjbHVzaXZlK2QsbT1lLnNlcTFSYW5nZS5zdGFydCtkLHY9dC5nZXRCb3VuZGFyeVNjb3JlKG0pK24uZ2V0Qm91bmRhcnlTY29yZSh1KStuLmdldEJvdW5kYXJ5U2NvcmUoZik7dj5jJiYoYz12LG89ZCl9cmV0dXJuIGUuZGVsdGEobyl9ZnVuY3Rpb24gTHUoZSx0LG4pe2NvbnN0IHI9W107Zm9yKGNvbnN0IGkgb2Ygbil7Y29uc3Qgcz1yW3IubGVuZ3RoLTFdO2lmKCFzKXtyLnB1c2goaSk7Y29udGludWV9aS5zZXExUmFuZ2Uuc3RhcnQtcy5zZXExUmFuZ2UuZW5kRXhjbHVzaXZlPD0yfHxpLnNlcTJSYW5nZS5zdGFydC1zLnNlcTJSYW5nZS5lbmRFeGNsdXNpdmU8PTI/cltyLmxlbmd0aC0xXT1uZXcgbGUocy5zZXExUmFuZ2Uuam9pbihpLnNlcTFSYW5nZSkscy5zZXEyUmFuZ2Uuam9pbihpLnNlcTJSYW5nZSkpOnIucHVzaChpKX1yZXR1cm4gcn1mdW5jdGlvbiB6dShlLHQsbil7Y29uc3Qgcj1sZS5pbnZlcnQobixlLmxlbmd0aCksaT1bXTtsZXQgcz1uZXcgdHQoMCwwKTtmdW5jdGlvbiBhKG8sYyl7aWYoby5vZmZzZXQxPHMub2Zmc2V0MXx8by5vZmZzZXQyPHMub2Zmc2V0MilyZXR1cm47Y29uc3QgZD1lLmZpbmRXb3JkQ29udGFpbmluZyhvLm9mZnNldDEpLHU9dC5maW5kV29yZENvbnRhaW5pbmcoby5vZmZzZXQyKTtpZighZHx8IXUpcmV0dXJuO2xldCBmPW5ldyBsZShkLHUpO2NvbnN0IG09Zi5pbnRlcnNlY3QoYyk7bGV0IHY9bS5zZXExUmFuZ2UubGVuZ3RoLHc9bS5zZXEyUmFuZ2UubGVuZ3RoO2Zvcig7ci5sZW5ndGg+MDspe2NvbnN0IGs9clswXTtpZighKGsuc2VxMVJhbmdlLmludGVyc2VjdHMoZi5zZXExUmFuZ2UpfHxrLnNlcTJSYW5nZS5pbnRlcnNlY3RzKGYuc2VxMlJhbmdlKSkpYnJlYWs7Y29uc3QgST1lLmZpbmRXb3JkQ29udGFpbmluZyhrLnNlcTFSYW5nZS5zdGFydCksTj10LmZpbmRXb3JkQ29udGFpbmluZyhrLnNlcTJSYW5nZS5zdGFydCksRT1uZXcgbGUoSSxOKSxGPUUuaW50ZXJzZWN0KGspO2lmKHYrPUYuc2VxMVJhbmdlLmxlbmd0aCx3Kz1GLnNlcTJSYW5nZS5sZW5ndGgsZj1mLmpvaW4oRSksZi5zZXExUmFuZ2UuZW5kRXhjbHVzaXZlPj1rLnNlcTFSYW5nZS5lbmRFeGNsdXNpdmUpci5zaGlmdCgpO2Vsc2UgYnJlYWt9dit3PChmLnNlcTFSYW5nZS5sZW5ndGgrZi5zZXEyUmFuZ2UubGVuZ3RoKSoyLzMmJmkucHVzaChmKSxzPWYuZ2V0RW5kRXhjbHVzaXZlcygpfWZvcig7ci5sZW5ndGg+MDspe2NvbnN0IG89ci5zaGlmdCgpO28uc2VxMVJhbmdlLmlzRW1wdHl8fChhKG8uZ2V0U3RhcnRzKCksbyksYShvLmdldEVuZEV4Y2x1c2l2ZXMoKS5kZWx0YSgtMSksbykpfXJldHVybiBQdShuLGkpfWZ1bmN0aW9uIFB1KGUsdCl7Y29uc3Qgbj1bXTtmb3IoO2UubGVuZ3RoPjB8fHQubGVuZ3RoPjA7KXtjb25zdCByPWVbMF0saT10WzBdO2xldCBzO3ImJighaXx8ci5zZXExUmFuZ2Uuc3RhcnQ8aS5zZXExUmFuZ2Uuc3RhcnQpP3M9ZS5zaGlmdCgpOnM9dC5zaGlmdCgpLG4ubGVuZ3RoPjAmJm5bbi5sZW5ndGgtMV0uc2VxMVJhbmdlLmVuZEV4Y2x1c2l2ZT49cy5zZXExUmFuZ2Uuc3RhcnQ/bltuLmxlbmd0aC0xXT1uW24ubGVuZ3RoLTFdLmpvaW4ocyk6bi5wdXNoKHMpfXJldHVybiBufWZ1bmN0aW9uIFR1KGUsdCxuKXtsZXQgcj1uO2lmKHIubGVuZ3RoPT09MClyZXR1cm4gcjtsZXQgaT0wLHM7ZG97cz0hMTtjb25zdCBhPVtyWzBdXTtmb3IobGV0IGw9MTtsPHIubGVuZ3RoO2wrKyl7bGV0IGQ9ZnVuY3Rpb24oZixtKXtjb25zdCB2PW5ldyBZKGMuc2VxMVJhbmdlLmVuZEV4Y2x1c2l2ZSxvLnNlcTFSYW5nZS5zdGFydCk7cmV0dXJuIGUuZ2V0VGV4dCh2KS5yZXBsYWNlKC9ccy9nLCIiKS5sZW5ndGg8PTQmJihmLnNlcTFSYW5nZS5sZW5ndGgrZi5zZXEyUmFuZ2UubGVuZ3RoPjV8fG0uc2VxMVJhbmdlLmxlbmd0aCttLnNlcTJSYW5nZS5sZW5ndGg+NSl9O2NvbnN0IG89cltsXSxjPWFbYS5sZW5ndGgtMV07ZChjLG8pPyhzPSEwLGFbYS5sZW5ndGgtMV09YVthLmxlbmd0aC0xXS5qb2luKG8pKTphLnB1c2gobyl9cj1hfXdoaWxlKGkrKzwxMCYmcyk7cmV0dXJuIHJ9ZnVuY3Rpb24gT3UoZSx0LG4pe2xldCByPW47aWYoci5sZW5ndGg9PT0wKXJldHVybiByO2xldCBpPTAscztkb3tzPSExO2NvbnN0IGw9W3JbMF1dO2ZvcihsZXQgbz0xO288ci5sZW5ndGg7bysrKXtsZXQgdT1mdW5jdGlvbihtLHYpe2NvbnN0IHc9bmV3IFkoZC5zZXExUmFuZ2UuZW5kRXhjbHVzaXZlLGMuc2VxMVJhbmdlLnN0YXJ0KTtpZihlLmNvdW50TGluZXNJbih3KT41fHx3Lmxlbmd0aD41MDApcmV0dXJuITE7Y29uc3QgUj1lLmdldFRleHQodykudHJpbSgpO2lmKFIubGVuZ3RoPjIwfHxSLnNwbGl0KC9cclxufFxyfFxuLykubGVuZ3RoPjEpcmV0dXJuITE7Y29uc3QgST1lLmNvdW50TGluZXNJbihtLnNlcTFSYW5nZSksTj1tLnNlcTFSYW5nZS5sZW5ndGgsRT10LmNvdW50TGluZXNJbihtLnNlcTJSYW5nZSksRj1tLnNlcTJSYW5nZS5sZW5ndGgsTT1lLmNvdW50TGluZXNJbih2LnNlcTFSYW5nZSksVD12LnNlcTFSYW5nZS5sZW5ndGgsUD10LmNvdW50TGluZXNJbih2LnNlcTJSYW5nZSksaj12LnNlcTJSYW5nZS5sZW5ndGgsZWU9Mio0MCs1MDtmdW5jdGlvbiBBKF8pe3JldHVybiBNYXRoLm1pbihfLGVlKX1yZXR1cm4gTWF0aC5wb3coTWF0aC5wb3coQShJKjQwK04pLDEuNSkrTWF0aC5wb3coQShFKjQwK0YpLDEuNSksMS41KStNYXRoLnBvdyhNYXRoLnBvdyhBKE0qNDArVCksMS41KStNYXRoLnBvdyhBKFAqNDAraiksMS41KSwxLjUpPihlZSoqMS41KSoqMS41KjEuM307Y29uc3QgYz1yW29dLGQ9bFtsLmxlbmd0aC0xXTt1KGQsYyk/KHM9ITAsbFtsLmxlbmd0aC0xXT1sW2wubGVuZ3RoLTFdLmpvaW4oYykpOmwucHVzaChjKX1yPWx9d2hpbGUoaSsrPDEwJiZzKTtjb25zdCBhPVtdO3JldHVybiB3dShyLChsLG8sYyk9PntsZXQgZD1vO2Z1bmN0aW9uIHUoUil7cmV0dXJuIFIubGVuZ3RoPjAmJlIudHJpbSgpLmxlbmd0aDw9MyYmby5zZXExUmFuZ2UubGVuZ3RoK28uc2VxMlJhbmdlLmxlbmd0aD4xMDB9Y29uc3QgZj1lLmV4dGVuZFRvRnVsbExpbmVzKG8uc2VxMVJhbmdlKSxtPWUuZ2V0VGV4dChuZXcgWShmLnN0YXJ0LG8uc2VxMVJhbmdlLnN0YXJ0KSk7dShtKSYmKGQ9ZC5kZWx0YVN0YXJ0KC1tLmxlbmd0aCkpO2NvbnN0IHY9ZS5nZXRUZXh0KG5ldyBZKG8uc2VxMVJhbmdlLmVuZEV4Y2x1c2l2ZSxmLmVuZEV4Y2x1c2l2ZSkpO3UodikmJihkPWQuZGVsdGFFbmQodi5sZW5ndGgpKTtjb25zdCB3PWxlLmZyb21PZmZzZXRQYWlycyhsP2wuZ2V0RW5kRXhjbHVzaXZlcygpOnR0Lnplcm8sYz9jLmdldFN0YXJ0cygpOnR0Lm1heCksaz1kLmludGVyc2VjdCh3KTthLmxlbmd0aD4wJiZrLmdldFN0YXJ0cygpLmVxdWFscyhhW2EubGVuZ3RoLTFdLmdldEVuZEV4Y2x1c2l2ZXMoKSk/YVthLmxlbmd0aC0xXT1hW2EubGVuZ3RoLTFdLmpvaW4oayk6YS5wdXNoKGspfSksYX1jbGFzcyBHb3tjb25zdHJ1Y3Rvcih0LG4pe3RoaXMudHJpbW1lZEhhc2g9dCx0aGlzLmxpbmVzPW59Z2V0RWxlbWVudCh0KXtyZXR1cm4gdGhpcy50cmltbWVkSGFzaFt0XX1nZXQgbGVuZ3RoKCl7cmV0dXJuIHRoaXMudHJpbW1lZEhhc2gubGVuZ3RofWdldEJvdW5kYXJ5U2NvcmUodCl7Y29uc3Qgbj10PT09MD8wOkpvKHRoaXMubGluZXNbdC0xXSkscj10PT09dGhpcy5saW5lcy5sZW5ndGg/MDpKbyh0aGlzLmxpbmVzW3RdKTtyZXR1cm4gMWUzLShuK3IpfWdldFRleHQodCl7cmV0dXJuIHRoaXMubGluZXMuc2xpY2UodC5zdGFydCx0LmVuZEV4Y2x1c2l2ZSkuam9pbihgCmApfWlzU3Ryb25nbHlFcXVhbCh0LG4pe3JldHVybiB0aGlzLmxpbmVzW3RdPT09dGhpcy5saW5lc1tuXX19ZnVuY3Rpb24gSm8oZSl7bGV0IHQ9MDtmb3IoO3Q8ZS5sZW5ndGgmJihlLmNoYXJDb2RlQXQodCk9PT0zMnx8ZS5jaGFyQ29kZUF0KHQpPT09OSk7KXQrKztyZXR1cm4gdH1jbGFzcyBXdXtjb25zdHJ1Y3Rvcigpe3RoaXMuZHluYW1pY1Byb2dyYW1taW5nRGlmZmluZz1uZXcgQ3UsdGhpcy5teWVyc0RpZmZpbmdBbGdvcml0aG09bmV3IFdvfWNvbXB1dGVEaWZmKHQsbixyKXtpZih0Lmxlbmd0aDw9MSYmZ3UodCxuLChGLE0pPT5GPT09TSkpcmV0dXJuIG5ldyBLbihbXSxbXSwhMSk7aWYodC5sZW5ndGg9PT0xJiZ0WzBdLmxlbmd0aD09PTB8fG4ubGVuZ3RoPT09MSYmblswXS5sZW5ndGg9PT0wKXJldHVybiBuZXcgS24oW25ldyBaZShuZXcgSCgxLHQubGVuZ3RoKzEpLG5ldyBIKDEsbi5sZW5ndGgrMSksW25ldyBUZShuZXcgUSgxLDEsdC5sZW5ndGgsdFt0Lmxlbmd0aC0xXS5sZW5ndGgrMSksbmV3IFEoMSwxLG4ubGVuZ3RoLG5bbi5sZW5ndGgtMV0ubGVuZ3RoKzEpKV0pXSxbXSwhMSk7Y29uc3QgaT1yLm1heENvbXB1dGF0aW9uVGltZU1zPT09MD9mbi5pbnN0YW5jZTpuZXcgU3Uoci5tYXhDb21wdXRhdGlvblRpbWVNcykscz0hci5pZ25vcmVUcmltV2hpdGVzcGFjZSxhPW5ldyBNYXA7ZnVuY3Rpb24gbChGKXtsZXQgTT1hLmdldChGKTtyZXR1cm4gTT09PXZvaWQgMCYmKE09YS5zaXplLGEuc2V0KEYsTSkpLE19Y29uc3Qgbz10Lm1hcChGPT5sKEYudHJpbSgpKSksYz1uLm1hcChGPT5sKEYudHJpbSgpKSksZD1uZXcgR28obyx0KSx1PW5ldyBHbyhjLG4pLGY9ZC5sZW5ndGgrdS5sZW5ndGg8MTcwMD90aGlzLmR5bmFtaWNQcm9ncmFtbWluZ0RpZmZpbmcuY29tcHV0ZShkLHUsaSwoRixNKT0+dFtGXT09PW5bTV0/bltNXS5sZW5ndGg9PT0wPy4xOjErTWF0aC5sb2coMStuW01dLmxlbmd0aCk6Ljk5KTp0aGlzLm15ZXJzRGlmZmluZ0FsZ29yaXRobS5jb21wdXRlKGQsdSxpKTtsZXQgbT1mLmRpZmZzLHY9Zi5oaXRUaW1lb3V0O209cW8oZCx1LG0pLG09VHUoZCx1LG0pO2NvbnN0IHc9W10saz1GPT57aWYocylmb3IobGV0IE09MDtNPEY7TSsrKXtjb25zdCBUPVIrTSxQPUkrTTtpZih0W1RdIT09bltQXSl7Y29uc3Qgaj10aGlzLnJlZmluZURpZmYodCxuLG5ldyBsZShuZXcgWShULFQrMSksbmV3IFkoUCxQKzEpKSxpLHMpO2Zvcihjb25zdCBlZSBvZiBqLm1hcHBpbmdzKXcucHVzaChlZSk7ai5oaXRUaW1lb3V0JiYodj0hMCl9fX07bGV0IFI9MCxJPTA7Zm9yKGNvbnN0IEYgb2YgbSl7UW4oKCk9PkYuc2VxMVJhbmdlLnN0YXJ0LVI9PT1GLnNlcTJSYW5nZS5zdGFydC1JKTtjb25zdCBNPUYuc2VxMVJhbmdlLnN0YXJ0LVI7ayhNKSxSPUYuc2VxMVJhbmdlLmVuZEV4Y2x1c2l2ZSxJPUYuc2VxMlJhbmdlLmVuZEV4Y2x1c2l2ZTtjb25zdCBUPXRoaXMucmVmaW5lRGlmZih0LG4sRixpLHMpO1QuaGl0VGltZW91dCYmKHY9ITApO2Zvcihjb25zdCBQIG9mIFQubWFwcGluZ3Mpdy5wdXNoKFApfWsodC5sZW5ndGgtUik7Y29uc3QgTj1Ybyh3LHQsbik7bGV0IEU9W107cmV0dXJuIHIuY29tcHV0ZU1vdmVzJiYoRT10aGlzLmNvbXB1dGVNb3ZlcyhOLHQsbixvLGMsaSxzKSksUW4oKCk9PntmdW5jdGlvbiBGKFQsUCl7aWYoVC5saW5lTnVtYmVyPDF8fFQubGluZU51bWJlcj5QLmxlbmd0aClyZXR1cm4hMTtjb25zdCBqPVBbVC5saW5lTnVtYmVyLTFdO3JldHVybiEoVC5jb2x1bW48MXx8VC5jb2x1bW4+ai5sZW5ndGgrMSl9ZnVuY3Rpb24gTShULFApe3JldHVybiEoVC5zdGFydExpbmVOdW1iZXI8MXx8VC5zdGFydExpbmVOdW1iZXI+UC5sZW5ndGgrMXx8VC5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlPDF8fFQuZW5kTGluZU51bWJlckV4Y2x1c2l2ZT5QLmxlbmd0aCsxKX1mb3IoY29uc3QgVCBvZiBOKXtpZighVC5pbm5lckNoYW5nZXMpcmV0dXJuITE7Zm9yKGNvbnN0IFAgb2YgVC5pbm5lckNoYW5nZXMpaWYoIShGKFAubW9kaWZpZWRSYW5nZS5nZXRTdGFydFBvc2l0aW9uKCksbikmJkYoUC5tb2RpZmllZFJhbmdlLmdldEVuZFBvc2l0aW9uKCksbikmJkYoUC5vcmlnaW5hbFJhbmdlLmdldFN0YXJ0UG9zaXRpb24oKSx0KSYmRihQLm9yaWdpbmFsUmFuZ2UuZ2V0RW5kUG9zaXRpb24oKSx0KSkpcmV0dXJuITE7aWYoIU0oVC5tb2RpZmllZCxuKXx8IU0oVC5vcmlnaW5hbCx0KSlyZXR1cm4hMX1yZXR1cm4hMH0pLG5ldyBLbihOLEUsdil9Y29tcHV0ZU1vdmVzKHQsbixyLGkscyxhLGwpe3JldHVybiBGdSh0LG4scixpLHMsYSkubWFwKGQ9Pntjb25zdCB1PXRoaXMucmVmaW5lRGlmZihuLHIsbmV3IGxlKGQub3JpZ2luYWwudG9PZmZzZXRSYW5nZSgpLGQubW9kaWZpZWQudG9PZmZzZXRSYW5nZSgpKSxhLGwpLGY9WG8odS5tYXBwaW5ncyxuLHIsITApO3JldHVybiBuZXcgbHUoZCxmKX0pfXJlZmluZURpZmYodCxuLHIsaSxzKXtjb25zdCBsPVZ1KHIpLnRvUmFuZ2VNYXBwaW5nMih0LG4pLG89bmV3IHJyKHQsbC5vcmlnaW5hbFJhbmdlLHMpLGM9bmV3IHJyKG4sbC5tb2RpZmllZFJhbmdlLHMpLGQ9by5sZW5ndGgrYy5sZW5ndGg8NTAwP3RoaXMuZHluYW1pY1Byb2dyYW1taW5nRGlmZmluZy5jb21wdXRlKG8sYyxpKTp0aGlzLm15ZXJzRGlmZmluZ0FsZ29yaXRobS5jb21wdXRlKG8sYyxpKTtsZXQgdT1kLmRpZmZzO3JldHVybiB1PXFvKG8sYyx1KSx1PXp1KG8sYyx1KSx1PUx1KG8sYyx1KSx1PU91KG8sYyx1KSx7bWFwcGluZ3M6dS5tYXAobT0+bmV3IFRlKG8udHJhbnNsYXRlUmFuZ2UobS5zZXExUmFuZ2UpLGMudHJhbnNsYXRlUmFuZ2UobS5zZXEyUmFuZ2UpKSksaGl0VGltZW91dDpkLmhpdFRpbWVvdXR9fX1mdW5jdGlvbiBYbyhlLHQsbixyPSExKXtjb25zdCBpPVtdO2Zvcihjb25zdCBzIG9mIGJ1KGUubWFwKGE9PlV1KGEsdCxuKSksKGEsbCk9PmEub3JpZ2luYWwub3ZlcmxhcE9yVG91Y2gobC5vcmlnaW5hbCl8fGEubW9kaWZpZWQub3ZlcmxhcE9yVG91Y2gobC5tb2RpZmllZCkpKXtjb25zdCBhPXNbMF0sbD1zW3MubGVuZ3RoLTFdO2kucHVzaChuZXcgWmUoYS5vcmlnaW5hbC5qb2luKGwub3JpZ2luYWwpLGEubW9kaWZpZWQuam9pbihsLm1vZGlmaWVkKSxzLm1hcChvPT5vLmlubmVyQ2hhbmdlc1swXSkpKX1yZXR1cm4gUW4oKCk9PiFyJiZpLmxlbmd0aD4wJiYoaVswXS5tb2RpZmllZC5zdGFydExpbmVOdW1iZXIhPT1pWzBdLm9yaWdpbmFsLnN0YXJ0TGluZU51bWJlcnx8bi5sZW5ndGgtaVtpLmxlbmd0aC0xXS5tb2RpZmllZC5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlIT09dC5sZW5ndGgtaVtpLmxlbmd0aC0xXS5vcmlnaW5hbC5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlKT8hMTpGbyhpLChzLGEpPT5hLm9yaWdpbmFsLnN0YXJ0TGluZU51bWJlci1zLm9yaWdpbmFsLmVuZExpbmVOdW1iZXJFeGNsdXNpdmU9PT1hLm1vZGlmaWVkLnN0YXJ0TGluZU51bWJlci1zLm1vZGlmaWVkLmVuZExpbmVOdW1iZXJFeGNsdXNpdmUmJnMub3JpZ2luYWwuZW5kTGluZU51bWJlckV4Y2x1c2l2ZTxhLm9yaWdpbmFsLnN0YXJ0TGluZU51bWJlciYmcy5tb2RpZmllZC5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlPGEubW9kaWZpZWQuc3RhcnRMaW5lTnVtYmVyKSksaX1mdW5jdGlvbiBVdShlLHQsbil7bGV0IHI9MCxpPTA7ZS5tb2RpZmllZFJhbmdlLmVuZENvbHVtbj09PTEmJmUub3JpZ2luYWxSYW5nZS5lbmRDb2x1bW49PT0xJiZlLm9yaWdpbmFsUmFuZ2Uuc3RhcnRMaW5lTnVtYmVyK3I8PWUub3JpZ2luYWxSYW5nZS5lbmRMaW5lTnVtYmVyJiZlLm1vZGlmaWVkUmFuZ2Uuc3RhcnRMaW5lTnVtYmVyK3I8PWUubW9kaWZpZWRSYW5nZS5lbmRMaW5lTnVtYmVyJiYoaT0tMSksZS5tb2RpZmllZFJhbmdlLnN0YXJ0Q29sdW1uLTE+PW5bZS5tb2RpZmllZFJhbmdlLnN0YXJ0TGluZU51bWJlci0xXS5sZW5ndGgmJmUub3JpZ2luYWxSYW5nZS5zdGFydENvbHVtbi0xPj10W2Uub3JpZ2luYWxSYW5nZS5zdGFydExpbmVOdW1iZXItMV0ubGVuZ3RoJiZlLm9yaWdpbmFsUmFuZ2Uuc3RhcnRMaW5lTnVtYmVyPD1lLm9yaWdpbmFsUmFuZ2UuZW5kTGluZU51bWJlcitpJiZlLm1vZGlmaWVkUmFuZ2Uuc3RhcnRMaW5lTnVtYmVyPD1lLm1vZGlmaWVkUmFuZ2UuZW5kTGluZU51bWJlcitpJiYocj0xKTtjb25zdCBzPW5ldyBIKGUub3JpZ2luYWxSYW5nZS5zdGFydExpbmVOdW1iZXIrcixlLm9yaWdpbmFsUmFuZ2UuZW5kTGluZU51bWJlcisxK2kpLGE9bmV3IEgoZS5tb2RpZmllZFJhbmdlLnN0YXJ0TGluZU51bWJlcityLGUubW9kaWZpZWRSYW5nZS5lbmRMaW5lTnVtYmVyKzEraSk7cmV0dXJuIG5ldyBaZShzLGEsW2VdKX1mdW5jdGlvbiBWdShlKXtyZXR1cm4gbmV3IEllKG5ldyBIKGUuc2VxMVJhbmdlLnN0YXJ0KzEsZS5zZXExUmFuZ2UuZW5kRXhjbHVzaXZlKzEpLG5ldyBIKGUuc2VxMlJhbmdlLnN0YXJ0KzEsZS5zZXEyUmFuZ2UuZW5kRXhjbHVzaXZlKzEpKX1jb25zdCBZbz17Z2V0TGVnYWN5OigpPT5uZXcgdXUsZ2V0RGVmYXVsdDooKT0+bmV3IFd1fTtmdW5jdGlvbiBndChlLHQpe2NvbnN0IG49TWF0aC5wb3coMTAsdCk7cmV0dXJuIE1hdGgucm91bmQoZSpuKS9ufWNsYXNzIG1le2NvbnN0cnVjdG9yKHQsbixyLGk9MSl7dGhpcy5fcmdiYUJyYW5kPXZvaWQgMCx0aGlzLnI9TWF0aC5taW4oMjU1LE1hdGgubWF4KDAsdCkpfDAsdGhpcy5nPU1hdGgubWluKDI1NSxNYXRoLm1heCgwLG4pKXwwLHRoaXMuYj1NYXRoLm1pbigyNTUsTWF0aC5tYXgoMCxyKSl8MCx0aGlzLmE9Z3QoTWF0aC5tYXgoTWF0aC5taW4oMSxpKSwwKSwzKX1zdGF0aWMgZXF1YWxzKHQsbil7cmV0dXJuIHQucj09PW4uciYmdC5nPT09bi5nJiZ0LmI9PT1uLmImJnQuYT09PW4uYX19Y2xhc3MgQWV7Y29uc3RydWN0b3IodCxuLHIsaSl7dGhpcy5faHNsYUJyYW5kPXZvaWQgMCx0aGlzLmg9TWF0aC5tYXgoTWF0aC5taW4oMzYwLHQpLDApfDAsdGhpcy5zPWd0KE1hdGgubWF4KE1hdGgubWluKDEsbiksMCksMyksdGhpcy5sPWd0KE1hdGgubWF4KE1hdGgubWluKDEsciksMCksMyksdGhpcy5hPWd0KE1hdGgubWF4KE1hdGgubWluKDEsaSksMCksMyl9c3RhdGljIGVxdWFscyh0LG4pe3JldHVybiB0Lmg9PT1uLmgmJnQucz09PW4ucyYmdC5sPT09bi5sJiZ0LmE9PT1uLmF9c3RhdGljIGZyb21SR0JBKHQpe2NvbnN0IG49dC5yLzI1NSxyPXQuZy8yNTUsaT10LmIvMjU1LHM9dC5hLGE9TWF0aC5tYXgobixyLGkpLGw9TWF0aC5taW4obixyLGkpO2xldCBvPTAsYz0wO2NvbnN0IGQ9KGwrYSkvMix1PWEtbDtpZih1PjApe3N3aXRjaChjPU1hdGgubWluKGQ8PS41P3UvKDIqZCk6dS8oMi0yKmQpLDEpLGEpe2Nhc2UgbjpvPShyLWkpL3UrKHI8aT82OjApO2JyZWFrO2Nhc2UgcjpvPShpLW4pL3UrMjticmVhaztjYXNlIGk6bz0obi1yKS91KzQ7YnJlYWt9byo9NjAsbz1NYXRoLnJvdW5kKG8pfXJldHVybiBuZXcgQWUobyxjLGQscyl9c3RhdGljIF9odWUycmdiKHQsbixyKXtyZXR1cm4gcjwwJiYocis9MSkscj4xJiYoci09MSkscjwxLzY/dCsobi10KSo2KnI6cjwxLzI/bjpyPDIvMz90KyhuLXQpKigyLzMtcikqNjp0fXN0YXRpYyB0b1JHQkEodCl7Y29uc3Qgbj10LmgvMzYwLHtzOnIsbDppLGE6c309dDtsZXQgYSxsLG87aWYocj09PTApYT1sPW89aTtlbHNle2NvbnN0IGM9aTwuNT9pKigxK3IpOmkrci1pKnIsZD0yKmktYzthPUFlLl9odWUycmdiKGQsYyxuKzEvMyksbD1BZS5faHVlMnJnYihkLGMsbiksbz1BZS5faHVlMnJnYihkLGMsbi0xLzMpfXJldHVybiBuZXcgbWUoTWF0aC5yb3VuZChhKjI1NSksTWF0aC5yb3VuZChsKjI1NSksTWF0aC5yb3VuZChvKjI1NSkscyl9fWNsYXNzIGp0e2NvbnN0cnVjdG9yKHQsbixyLGkpe3RoaXMuX2hzdmFCcmFuZD12b2lkIDAsdGhpcy5oPU1hdGgubWF4KE1hdGgubWluKDM2MCx0KSwwKXwwLHRoaXMucz1ndChNYXRoLm1heChNYXRoLm1pbigxLG4pLDApLDMpLHRoaXMudj1ndChNYXRoLm1heChNYXRoLm1pbigxLHIpLDApLDMpLHRoaXMuYT1ndChNYXRoLm1heChNYXRoLm1pbigxLGkpLDApLDMpfXN0YXRpYyBlcXVhbHModCxuKXtyZXR1cm4gdC5oPT09bi5oJiZ0LnM9PT1uLnMmJnQudj09PW4udiYmdC5hPT09bi5hfXN0YXRpYyBmcm9tUkdCQSh0KXtjb25zdCBuPXQuci8yNTUscj10LmcvMjU1LGk9dC5iLzI1NSxzPU1hdGgubWF4KG4scixpKSxhPU1hdGgubWluKG4scixpKSxsPXMtYSxvPXM9PT0wPzA6bC9zO2xldCBjO3JldHVybiBsPT09MD9jPTA6cz09PW4/Yz0oKHItaSkvbCU2KzYpJTY6cz09PXI/Yz0oaS1uKS9sKzI6Yz0obi1yKS9sKzQsbmV3IGp0KE1hdGgucm91bmQoYyo2MCksbyxzLHQuYSl9c3RhdGljIHRvUkdCQSh0KXtjb25zdHtoOm4sczpyLHY6aSxhOnN9PXQsYT1pKnIsbD1hKigxLU1hdGguYWJzKG4vNjAlMi0xKSksbz1pLWE7bGV0W2MsZCx1XT1bMCwwLDBdO3JldHVybiBuPDYwPyhjPWEsZD1sKTpuPDEyMD8oYz1sLGQ9YSk6bjwxODA/KGQ9YSx1PWwpOm48MjQwPyhkPWwsdT1hKTpuPDMwMD8oYz1sLHU9YSk6bjw9MzYwJiYoYz1hLHU9bCksYz1NYXRoLnJvdW5kKChjK28pKjI1NSksZD1NYXRoLnJvdW5kKChkK28pKjI1NSksdT1NYXRoLnJvdW5kKCh1K28pKjI1NSksbmV3IG1lKGMsZCx1LHMpfX1sZXQgaXI9KFo9Y2xhc3N7c3RhdGljIGZyb21IZXgodCl7cmV0dXJuIFouRm9ybWF0LkNTUy5wYXJzZUhleCh0KXx8Wi5yZWR9c3RhdGljIGVxdWFscyh0LG4pe3JldHVybiF0JiYhbj8hMDohdHx8IW4/ITE6dC5lcXVhbHMobil9Z2V0IGhzbGEoKXtyZXR1cm4gdGhpcy5faHNsYT90aGlzLl9oc2xhOkFlLmZyb21SR0JBKHRoaXMucmdiYSl9Z2V0IGhzdmEoKXtyZXR1cm4gdGhpcy5faHN2YT90aGlzLl9oc3ZhOmp0LmZyb21SR0JBKHRoaXMucmdiYSl9Y29uc3RydWN0b3IodCl7aWYodClpZih0IGluc3RhbmNlb2YgbWUpdGhpcy5yZ2JhPXQ7ZWxzZSBpZih0IGluc3RhbmNlb2YgQWUpdGhpcy5faHNsYT10LHRoaXMucmdiYT1BZS50b1JHQkEodCk7ZWxzZSBpZih0IGluc3RhbmNlb2YganQpdGhpcy5faHN2YT10LHRoaXMucmdiYT1qdC50b1JHQkEodCk7ZWxzZSB0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgY29sb3IgY3RvciBhcmd1bWVudCIpO2Vsc2UgdGhyb3cgbmV3IEVycm9yKCJDb2xvciBuZWVkcyBhIHZhbHVlIil9ZXF1YWxzKHQpe3JldHVybiEhdCYmbWUuZXF1YWxzKHRoaXMucmdiYSx0LnJnYmEpJiZBZS5lcXVhbHModGhpcy5oc2xhLHQuaHNsYSkmJmp0LmVxdWFscyh0aGlzLmhzdmEsdC5oc3ZhKX1nZXRSZWxhdGl2ZUx1bWluYW5jZSgpe2NvbnN0IHQ9Wi5fcmVsYXRpdmVMdW1pbmFuY2VGb3JDb21wb25lbnQodGhpcy5yZ2JhLnIpLG49Wi5fcmVsYXRpdmVMdW1pbmFuY2VGb3JDb21wb25lbnQodGhpcy5yZ2JhLmcpLHI9Wi5fcmVsYXRpdmVMdW1pbmFuY2VGb3JDb21wb25lbnQodGhpcy5yZ2JhLmIpLGk9LjIxMjYqdCsuNzE1MipuKy4wNzIyKnI7cmV0dXJuIGd0KGksNCl9c3RhdGljIF9yZWxhdGl2ZUx1bWluYW5jZUZvckNvbXBvbmVudCh0KXtjb25zdCBuPXQvMjU1O3JldHVybiBuPD0uMDM5Mjg/bi8xMi45MjpNYXRoLnBvdygobisuMDU1KS8xLjA1NSwyLjQpfWlzTGlnaHRlcigpe3JldHVybih0aGlzLnJnYmEucioyOTkrdGhpcy5yZ2JhLmcqNTg3K3RoaXMucmdiYS5iKjExNCkvMWUzPj0xMjh9aXNMaWdodGVyVGhhbih0KXtjb25zdCBuPXRoaXMuZ2V0UmVsYXRpdmVMdW1pbmFuY2UoKSxyPXQuZ2V0UmVsYXRpdmVMdW1pbmFuY2UoKTtyZXR1cm4gbj5yfWlzRGFya2VyVGhhbih0KXtjb25zdCBuPXRoaXMuZ2V0UmVsYXRpdmVMdW1pbmFuY2UoKSxyPXQuZ2V0UmVsYXRpdmVMdW1pbmFuY2UoKTtyZXR1cm4gbjxyfWxpZ2h0ZW4odCl7cmV0dXJuIG5ldyBaKG5ldyBBZSh0aGlzLmhzbGEuaCx0aGlzLmhzbGEucyx0aGlzLmhzbGEubCt0aGlzLmhzbGEubCp0LHRoaXMuaHNsYS5hKSl9ZGFya2VuKHQpe3JldHVybiBuZXcgWihuZXcgQWUodGhpcy5oc2xhLmgsdGhpcy5oc2xhLnMsdGhpcy5oc2xhLmwtdGhpcy5oc2xhLmwqdCx0aGlzLmhzbGEuYSkpfXRyYW5zcGFyZW50KHQpe2NvbnN0e3I6bixnOnIsYjppLGE6c309dGhpcy5yZ2JhO3JldHVybiBuZXcgWihuZXcgbWUobixyLGkscyp0KSl9aXNUcmFuc3BhcmVudCgpe3JldHVybiB0aGlzLnJnYmEuYT09PTB9aXNPcGFxdWUoKXtyZXR1cm4gdGhpcy5yZ2JhLmE9PT0xfW9wcG9zaXRlKCl7cmV0dXJuIG5ldyBaKG5ldyBtZSgyNTUtdGhpcy5yZ2JhLnIsMjU1LXRoaXMucmdiYS5nLDI1NS10aGlzLnJnYmEuYix0aGlzLnJnYmEuYSkpfW1ha2VPcGFxdWUodCl7aWYodGhpcy5pc09wYXF1ZSgpfHx0LnJnYmEuYSE9PTEpcmV0dXJuIHRoaXM7Y29uc3R7cjpuLGc6cixiOmksYTpzfT10aGlzLnJnYmE7cmV0dXJuIG5ldyBaKG5ldyBtZSh0LnJnYmEuci1zKih0LnJnYmEuci1uKSx0LnJnYmEuZy1zKih0LnJnYmEuZy1yKSx0LnJnYmEuYi1zKih0LnJnYmEuYi1pKSwxKSl9dG9TdHJpbmcoKXtyZXR1cm4gdGhpcy5fdG9TdHJpbmd8fCh0aGlzLl90b1N0cmluZz1aLkZvcm1hdC5DU1MuZm9ybWF0KHRoaXMpKSx0aGlzLl90b1N0cmluZ31zdGF0aWMgZ2V0TGlnaHRlckNvbG9yKHQsbixyKXtpZih0LmlzTGlnaHRlclRoYW4obikpcmV0dXJuIHQ7cj1yfHwuNTtjb25zdCBpPXQuZ2V0UmVsYXRpdmVMdW1pbmFuY2UoKSxzPW4uZ2V0UmVsYXRpdmVMdW1pbmFuY2UoKTtyZXR1cm4gcj1yKihzLWkpL3MsdC5saWdodGVuKHIpfXN0YXRpYyBnZXREYXJrZXJDb2xvcih0LG4scil7aWYodC5pc0RhcmtlclRoYW4obikpcmV0dXJuIHQ7cj1yfHwuNTtjb25zdCBpPXQuZ2V0UmVsYXRpdmVMdW1pbmFuY2UoKSxzPW4uZ2V0UmVsYXRpdmVMdW1pbmFuY2UoKTtyZXR1cm4gcj1yKihpLXMpL2ksdC5kYXJrZW4ocil9fSxaLndoaXRlPW5ldyBaKG5ldyBtZSgyNTUsMjU1LDI1NSwxKSksWi5ibGFjaz1uZXcgWihuZXcgbWUoMCwwLDAsMSkpLFoucmVkPW5ldyBaKG5ldyBtZSgyNTUsMCwwLDEpKSxaLmJsdWU9bmV3IFoobmV3IG1lKDAsMCwyNTUsMSkpLFouZ3JlZW49bmV3IFoobmV3IG1lKDAsMjU1LDAsMSkpLFouY3lhbj1uZXcgWihuZXcgbWUoMCwyNTUsMjU1LDEpKSxaLmxpZ2h0Z3JleT1uZXcgWihuZXcgbWUoMjExLDIxMSwyMTEsMSkpLFoudHJhbnNwYXJlbnQ9bmV3IFoobmV3IG1lKDAsMCwwLDApKSxaKTsoZnVuY3Rpb24oZSl7KGZ1bmN0aW9uKHQpeyhmdW5jdGlvbihuKXtmdW5jdGlvbiByKG0pe3JldHVybiBtLnJnYmEuYT09PTE/YHJnYigke20ucmdiYS5yfSwgJHttLnJnYmEuZ30sICR7bS5yZ2JhLmJ9KWA6ZS5Gb3JtYXQuQ1NTLmZvcm1hdFJHQkEobSl9bi5mb3JtYXRSR0I9cjtmdW5jdGlvbiBpKG0pe3JldHVybmByZ2JhKCR7bS5yZ2JhLnJ9LCAke20ucmdiYS5nfSwgJHttLnJnYmEuYn0sICR7K20ucmdiYS5hLnRvRml4ZWQoMil9KWB9bi5mb3JtYXRSR0JBPWk7ZnVuY3Rpb24gcyhtKXtyZXR1cm4gbS5oc2xhLmE9PT0xP2Boc2woJHttLmhzbGEuaH0sICR7KG0uaHNsYS5zKjEwMCkudG9GaXhlZCgyKX0lLCAkeyhtLmhzbGEubCoxMDApLnRvRml4ZWQoMil9JSlgOmUuRm9ybWF0LkNTUy5mb3JtYXRIU0xBKG0pfW4uZm9ybWF0SFNMPXM7ZnVuY3Rpb24gYShtKXtyZXR1cm5gaHNsYSgke20uaHNsYS5ofSwgJHsobS5oc2xhLnMqMTAwKS50b0ZpeGVkKDIpfSUsICR7KG0uaHNsYS5sKjEwMCkudG9GaXhlZCgyKX0lLCAke20uaHNsYS5hLnRvRml4ZWQoMil9KWB9bi5mb3JtYXRIU0xBPWE7ZnVuY3Rpb24gbChtKXtjb25zdCB2PW0udG9TdHJpbmcoMTYpO3JldHVybiB2Lmxlbmd0aCE9PTI/IjAiK3Y6dn1mdW5jdGlvbiBvKG0pe3JldHVybmAjJHtsKG0ucmdiYS5yKX0ke2wobS5yZ2JhLmcpfSR7bChtLnJnYmEuYil9YH1uLmZvcm1hdEhleD1vO2Z1bmN0aW9uIGMobSx2PSExKXtyZXR1cm4gdiYmbS5yZ2JhLmE9PT0xP2UuRm9ybWF0LkNTUy5mb3JtYXRIZXgobSk6YCMke2wobS5yZ2JhLnIpfSR7bChtLnJnYmEuZyl9JHtsKG0ucmdiYS5iKX0ke2woTWF0aC5yb3VuZChtLnJnYmEuYSoyNTUpKX1gfW4uZm9ybWF0SGV4QT1jO2Z1bmN0aW9uIGQobSl7cmV0dXJuIG0uaXNPcGFxdWUoKT9lLkZvcm1hdC5DU1MuZm9ybWF0SGV4KG0pOmUuRm9ybWF0LkNTUy5mb3JtYXRSR0JBKG0pfW4uZm9ybWF0PWQ7ZnVuY3Rpb24gdShtKXtjb25zdCB2PW0ubGVuZ3RoO2lmKHY9PT0wfHxtLmNoYXJDb2RlQXQoMCkhPT0zNSlyZXR1cm4gbnVsbDtpZih2PT09Nyl7Y29uc3Qgdz0xNipmKG0uY2hhckNvZGVBdCgxKSkrZihtLmNoYXJDb2RlQXQoMikpLGs9MTYqZihtLmNoYXJDb2RlQXQoMykpK2YobS5jaGFyQ29kZUF0KDQpKSxSPTE2KmYobS5jaGFyQ29kZUF0KDUpKStmKG0uY2hhckNvZGVBdCg2KSk7cmV0dXJuIG5ldyBlKG5ldyBtZSh3LGssUiwxKSl9aWYodj09PTkpe2NvbnN0IHc9MTYqZihtLmNoYXJDb2RlQXQoMSkpK2YobS5jaGFyQ29kZUF0KDIpKSxrPTE2KmYobS5jaGFyQ29kZUF0KDMpKStmKG0uY2hhckNvZGVBdCg0KSksUj0xNipmKG0uY2hhckNvZGVBdCg1KSkrZihtLmNoYXJDb2RlQXQoNikpLEk9MTYqZihtLmNoYXJDb2RlQXQoNykpK2YobS5jaGFyQ29kZUF0KDgpKTtyZXR1cm4gbmV3IGUobmV3IG1lKHcsayxSLEkvMjU1KSl9aWYodj09PTQpe2NvbnN0IHc9ZihtLmNoYXJDb2RlQXQoMSkpLGs9ZihtLmNoYXJDb2RlQXQoMikpLFI9ZihtLmNoYXJDb2RlQXQoMykpO3JldHVybiBuZXcgZShuZXcgbWUoMTYqdyt3LDE2KmsraywxNipSK1IpKX1pZih2PT09NSl7Y29uc3Qgdz1mKG0uY2hhckNvZGVBdCgxKSksaz1mKG0uY2hhckNvZGVBdCgyKSksUj1mKG0uY2hhckNvZGVBdCgzKSksST1mKG0uY2hhckNvZGVBdCg0KSk7cmV0dXJuIG5ldyBlKG5ldyBtZSgxNip3K3csMTYqaytrLDE2KlIrUiwoMTYqSStJKS8yNTUpKX1yZXR1cm4gbnVsbH1uLnBhcnNlSGV4PXU7ZnVuY3Rpb24gZihtKXtzd2l0Y2gobSl7Y2FzZSA0ODpyZXR1cm4gMDtjYXNlIDQ5OnJldHVybiAxO2Nhc2UgNTA6cmV0dXJuIDI7Y2FzZSA1MTpyZXR1cm4gMztjYXNlIDUyOnJldHVybiA0O2Nhc2UgNTM6cmV0dXJuIDU7Y2FzZSA1NDpyZXR1cm4gNjtjYXNlIDU1OnJldHVybiA3O2Nhc2UgNTY6cmV0dXJuIDg7Y2FzZSA1NzpyZXR1cm4gOTtjYXNlIDk3OnJldHVybiAxMDtjYXNlIDY1OnJldHVybiAxMDtjYXNlIDk4OnJldHVybiAxMTtjYXNlIDY2OnJldHVybiAxMTtjYXNlIDk5OnJldHVybiAxMjtjYXNlIDY3OnJldHVybiAxMjtjYXNlIDEwMDpyZXR1cm4gMTM7Y2FzZSA2ODpyZXR1cm4gMTM7Y2FzZSAxMDE6cmV0dXJuIDE0O2Nhc2UgNjk6cmV0dXJuIDE0O2Nhc2UgMTAyOnJldHVybiAxNTtjYXNlIDcwOnJldHVybiAxNX1yZXR1cm4gMH19KSh0LkNTU3x8KHQuQ1NTPXt9KSl9KShlLkZvcm1hdHx8KGUuRm9ybWF0PXt9KSl9KShpcnx8KGlyPXt9KSk7ZnVuY3Rpb24gUW8oZSl7Y29uc3QgdD1bXTtmb3IoY29uc3QgbiBvZiBlKXtjb25zdCByPU51bWJlcihuKTsocnx8cj09PTAmJm4ucmVwbGFjZSgvXHMvZywiIikhPT0iIikmJnQucHVzaChyKX1yZXR1cm4gdH1mdW5jdGlvbiBFaShlLHQsbixyKXtyZXR1cm57cmVkOmUvMjU1LGJsdWU6bi8yNTUsZ3JlZW46dC8yNTUsYWxwaGE6cn19ZnVuY3Rpb24gZ24oZSx0KXtjb25zdCBuPXQuaW5kZXgscj10WzBdLmxlbmd0aDtpZighbilyZXR1cm47Y29uc3QgaT1lLnBvc2l0aW9uQXQobik7cmV0dXJue3N0YXJ0TGluZU51bWJlcjppLmxpbmVOdW1iZXIsc3RhcnRDb2x1bW46aS5jb2x1bW4sZW5kTGluZU51bWJlcjppLmxpbmVOdW1iZXIsZW5kQ29sdW1uOmkuY29sdW1uK3J9fWZ1bmN0aW9uICR1KGUsdCl7aWYoIWUpcmV0dXJuO2NvbnN0IG49aXIuRm9ybWF0LkNTUy5wYXJzZUhleCh0KTtpZihuKXJldHVybntyYW5nZTplLGNvbG9yOkVpKG4ucmdiYS5yLG4ucmdiYS5nLG4ucmdiYS5iLG4ucmdiYS5hKX19ZnVuY3Rpb24gS28oZSx0LG4pe2lmKCFlfHx0Lmxlbmd0aCE9PTEpcmV0dXJuO2NvbnN0IGk9dFswXS52YWx1ZXMoKSxzPVFvKGkpO3JldHVybntyYW5nZTplLGNvbG9yOkVpKHNbMF0sc1sxXSxzWzJdLG4/c1szXToxKX19ZnVuY3Rpb24gWm8oZSx0LG4pe2lmKCFlfHx0Lmxlbmd0aCE9PTEpcmV0dXJuO2NvbnN0IGk9dFswXS52YWx1ZXMoKSxzPVFvKGkpLGE9bmV3IGlyKG5ldyBBZShzWzBdLHNbMV0vMTAwLHNbMl0vMTAwLG4/c1szXToxKSk7cmV0dXJue3JhbmdlOmUsY29sb3I6RWkoYS5yZ2JhLnIsYS5yZ2JhLmcsYS5yZ2JhLmIsYS5yZ2JhLmEpfX1mdW5jdGlvbiBibihlLHQpe3JldHVybiB0eXBlb2YgZT09InN0cmluZyI/Wy4uLmUubWF0Y2hBbGwodCldOmUuZmluZE1hdGNoZXModCl9ZnVuY3Rpb24gQnUoZSl7Y29uc3QgdD1bXSxyPWJuKGUsL1xiKHJnYnxyZ2JhfGhzbHxoc2xhKShcKFswLTlccywuXCVdKlwpKXwoIykoW0EtRmEtZjAtOV17M30pXGJ8KCMpKFtBLUZhLWYwLTldezR9KVxifCgjKShbQS1GYS1mMC05XXs2fSlcYnwoIykoW0EtRmEtZjAtOV17OH0pXGIvZ20pO2lmKHIubGVuZ3RoPjApZm9yKGNvbnN0IGkgb2Ygcil7Y29uc3Qgcz1pLmZpbHRlcihjPT5jIT09dm9pZCAwKSxhPXNbMV0sbD1zWzJdO2lmKCFsKWNvbnRpbnVlO2xldCBvO2lmKGE9PT0icmdiIil7Y29uc3QgYz0vXlwoXHMqKDI1WzAtNV18MlswLTRdWzAtOV18MVswLTldezJ9fFsxLTldWzAtOV18WzAtOV0pXHMqLFxzKigyNVswLTVdfDJbMC00XVswLTldfDFbMC05XXsyfXxbMS05XVswLTldfFswLTldKVxzKixccyooMjVbMC01XXwyWzAtNF1bMC05XXwxWzAtOV17Mn18WzEtOV1bMC05XXxbMC05XSlccypcKSQvZ207bz1LbyhnbihlLGkpLGJuKGwsYyksITEpfWVsc2UgaWYoYT09PSJyZ2JhIil7Y29uc3QgYz0vXlwoXHMqKDI1WzAtNV18MlswLTRdWzAtOV18MVswLTldezJ9fFsxLTldWzAtOV18WzAtOV0pXHMqLFxzKigyNVswLTVdfDJbMC00XVswLTldfDFbMC05XXsyfXxbMS05XVswLTldfFswLTldKVxzKixccyooMjVbMC01XXwyWzAtNF1bMC05XXwxWzAtOV17Mn18WzEtOV1bMC05XXxbMC05XSlccyosXHMqKDBbLl1bMC05XSt8Wy5dWzAtOV0rfFswMV1bLl18WzAxXSlccypcKSQvZ207bz1LbyhnbihlLGkpLGJuKGwsYyksITApfWVsc2UgaWYoYT09PSJoc2wiKXtjb25zdCBjPS9eXChccyooMzZbMF18M1swLTVdWzAtOV18WzEyXVswLTldWzAtOV18WzEtOV0/WzAtOV0pXHMqLFxzKigxMDB8XGR7MSwyfVsuXVxkKnxcZHsxLDJ9KSVccyosXHMqKDEwMHxcZHsxLDJ9Wy5dXGQqfFxkezEsMn0pJVxzKlwpJC9nbTtvPVpvKGduKGUsaSksYm4obCxjKSwhMSl9ZWxzZSBpZihhPT09ImhzbGEiKXtjb25zdCBjPS9eXChccyooMzZbMF18M1swLTVdWzAtOV18WzEyXVswLTldWzAtOV18WzEtOV0/WzAtOV0pXHMqLFxzKigxMDB8XGR7MSwyfVsuXVxkKnxcZHsxLDJ9KSVccyosXHMqKDEwMHxcZHsxLDJ9Wy5dXGQqfFxkezEsMn0pJVxzKixccyooMFsuXVswLTldK3xbLl1bMC05XSt8WzAxXVsuXXxbMDFdKVxzKlwpJC9nbTtvPVpvKGduKGUsaSksYm4obCxjKSwhMCl9ZWxzZSBhPT09IiMiJiYobz0kdShnbihlLGkpLGErbCkpO28mJnQucHVzaChvKX1yZXR1cm4gdH1mdW5jdGlvbiBxdShlKXtyZXR1cm4hZXx8dHlwZW9mIGUuZ2V0VmFsdWUhPSJmdW5jdGlvbiJ8fHR5cGVvZiBlLnBvc2l0aW9uQXQhPSJmdW5jdGlvbiI/W106QnUoZSl9Y29uc3QgZWw9bmV3IFJlZ0V4cCgiXFxiTUFSSzpcXHMqKC4qKSQiLCJkIiksanU9L14tK3wtKyQvZztmdW5jdGlvbiBIdShlLHQpe2xldCBuPVtdO2lmKHQuZmluZFJlZ2lvblNlY3Rpb25IZWFkZXJzJiZ0LmZvbGRpbmdSdWxlcz8ubWFya2Vycyl7Y29uc3Qgcj1HdShlLHQpO249bi5jb25jYXQocil9aWYodC5maW5kTWFya1NlY3Rpb25IZWFkZXJzKXtjb25zdCByPUp1KGUpO249bi5jb25jYXQocil9cmV0dXJuIG59ZnVuY3Rpb24gR3UoZSx0KXtjb25zdCBuPVtdLHI9ZS5nZXRMaW5lQ291bnQoKTtmb3IobGV0IGk9MTtpPD1yO2krKyl7Y29uc3Qgcz1lLmdldExpbmVDb250ZW50KGkpLGE9cy5tYXRjaCh0LmZvbGRpbmdSdWxlcy5tYXJrZXJzLnN0YXJ0KTtpZihhKXtjb25zdCBsPXtzdGFydExpbmVOdW1iZXI6aSxzdGFydENvbHVtbjphWzBdLmxlbmd0aCsxLGVuZExpbmVOdW1iZXI6aSxlbmRDb2x1bW46cy5sZW5ndGgrMX07aWYobC5lbmRDb2x1bW4+bC5zdGFydENvbHVtbil7Y29uc3Qgbz17cmFuZ2U6bCwuLi50bChzLnN1YnN0cmluZyhhWzBdLmxlbmd0aCkpLHNob3VsZEJlSW5Db21tZW50czohMX07KG8udGV4dHx8by5oYXNTZXBhcmF0b3JMaW5lKSYmbi5wdXNoKG8pfX19cmV0dXJuIG59ZnVuY3Rpb24gSnUoZSl7Y29uc3QgdD1bXSxuPWUuZ2V0TGluZUNvdW50KCk7Zm9yKGxldCByPTE7cjw9bjtyKyspe2NvbnN0IGk9ZS5nZXRMaW5lQ29udGVudChyKTtYdShpLHIsdCl9cmV0dXJuIHR9ZnVuY3Rpb24gWHUoZSx0LG4pe2VsLmxhc3RJbmRleD0wO2NvbnN0IHI9ZWwuZXhlYyhlKTtpZihyKXtjb25zdCBpPXIuaW5kaWNlc1sxXVswXSsxLHM9ci5pbmRpY2VzWzFdWzFdKzEsYT17c3RhcnRMaW5lTnVtYmVyOnQsc3RhcnRDb2x1bW46aSxlbmRMaW5lTnVtYmVyOnQsZW5kQ29sdW1uOnN9O2lmKGEuZW5kQ29sdW1uPmEuc3RhcnRDb2x1bW4pe2NvbnN0IGw9e3JhbmdlOmEsLi4udGwoclsxXSksc2hvdWxkQmVJbkNvbW1lbnRzOiEwfTsobC50ZXh0fHxsLmhhc1NlcGFyYXRvckxpbmUpJiZuLnB1c2gobCl9fX1mdW5jdGlvbiB0bChlKXtlPWUudHJpbSgpO2NvbnN0IHQ9ZS5zdGFydHNXaXRoKCItIik7cmV0dXJuIGU9ZS5yZXBsYWNlKGp1LCIiKSx7dGV4dDplLGhhc1NlcGFyYXRvckxpbmU6dH19dmFyIG5sOyhmdW5jdGlvbihlKXthc3luYyBmdW5jdGlvbiB0KHIpe2xldCBpO2NvbnN0IHM9YXdhaXQgUHJvbWlzZS5hbGwoci5tYXAoYT0+YS50aGVuKGw9PmwsbD0+e2l8fChpPWwpfSkpKTtpZih0eXBlb2YgaTwidSIpdGhyb3cgaTtyZXR1cm4gc31lLnNldHRsZWQ9dDtmdW5jdGlvbiBuKHIpe3JldHVybiBuZXcgUHJvbWlzZShhc3luYyhpLHMpPT57dHJ5e2F3YWl0IHIoaSxzKX1jYXRjaChhKXtzKGEpfX0pfWUud2l0aEFzeW5jQm9keT1ufSkobmx8fChubD17fSkpO2NvbnN0IENlPWNsYXNzIENle3N0YXRpYyBmcm9tQXJyYXkodCl7cmV0dXJuIG5ldyBDZShuPT57bi5lbWl0TWFueSh0KX0pfXN0YXRpYyBmcm9tUHJvbWlzZSh0KXtyZXR1cm4gbmV3IENlKGFzeW5jIG49PntuLmVtaXRNYW55KGF3YWl0IHQpfSl9c3RhdGljIGZyb21Qcm9taXNlcyh0KXtyZXR1cm4gbmV3IENlKGFzeW5jIG49Pnthd2FpdCBQcm9taXNlLmFsbCh0Lm1hcChhc3luYyByPT5uLmVtaXRPbmUoYXdhaXQgcikpKX0pfXN0YXRpYyBtZXJnZSh0KXtyZXR1cm4gbmV3IENlKGFzeW5jIG49Pnthd2FpdCBQcm9taXNlLmFsbCh0Lm1hcChhc3luYyByPT57Zm9yIGF3YWl0KGNvbnN0IGkgb2YgciluLmVtaXRPbmUoaSl9KSl9KX1jb25zdHJ1Y3Rvcih0LG4pe3RoaXMuX3N0YXRlPTAsdGhpcy5fcmVzdWx0cz1bXSx0aGlzLl9lcnJvcj1udWxsLHRoaXMuX29uUmV0dXJuPW4sdGhpcy5fb25TdGF0ZUNoYW5nZWQ9bmV3IERlLHF1ZXVlTWljcm90YXNrKGFzeW5jKCk9Pntjb25zdCByPXtlbWl0T25lOmk9PnRoaXMuZW1pdE9uZShpKSxlbWl0TWFueTppPT50aGlzLmVtaXRNYW55KGkpLHJlamVjdDppPT50aGlzLnJlamVjdChpKX07dHJ5e2F3YWl0IFByb21pc2UucmVzb2x2ZSh0KHIpKSx0aGlzLnJlc29sdmUoKX1jYXRjaChpKXt0aGlzLnJlamVjdChpKX1maW5hbGx5e3IuZW1pdE9uZT12b2lkIDAsci5lbWl0TWFueT12b2lkIDAsci5yZWplY3Q9dm9pZCAwfX0pfVtTeW1ib2wuYXN5bmNJdGVyYXRvcl0oKXtsZXQgdD0wO3JldHVybntuZXh0OmFzeW5jKCk9Pntkb3tpZih0aGlzLl9zdGF0ZT09PTIpdGhyb3cgdGhpcy5fZXJyb3I7aWYodDx0aGlzLl9yZXN1bHRzLmxlbmd0aClyZXR1cm57ZG9uZTohMSx2YWx1ZTp0aGlzLl9yZXN1bHRzW3QrK119O2lmKHRoaXMuX3N0YXRlPT09MSlyZXR1cm57ZG9uZTohMCx2YWx1ZTp2b2lkIDB9O2F3YWl0IFZuLnRvUHJvbWlzZSh0aGlzLl9vblN0YXRlQ2hhbmdlZC5ldmVudCl9d2hpbGUoITApfSxyZXR1cm46YXN5bmMoKT0+KHRoaXMuX29uUmV0dXJuPy4oKSx7ZG9uZTohMCx2YWx1ZTp2b2lkIDB9KX19c3RhdGljIG1hcCh0LG4pe3JldHVybiBuZXcgQ2UoYXN5bmMgcj0+e2ZvciBhd2FpdChjb25zdCBpIG9mIHQpci5lbWl0T25lKG4oaSkpfSl9bWFwKHQpe3JldHVybiBDZS5tYXAodGhpcyx0KX1zdGF0aWMgZmlsdGVyKHQsbil7cmV0dXJuIG5ldyBDZShhc3luYyByPT57Zm9yIGF3YWl0KGNvbnN0IGkgb2YgdCluKGkpJiZyLmVtaXRPbmUoaSl9KX1maWx0ZXIodCl7cmV0dXJuIENlLmZpbHRlcih0aGlzLHQpfXN0YXRpYyBjb2FsZXNjZSh0KXtyZXR1cm4gQ2UuZmlsdGVyKHQsbj0+ISFuKX1jb2FsZXNjZSgpe3JldHVybiBDZS5jb2FsZXNjZSh0aGlzKX1zdGF0aWMgYXN5bmMgdG9Qcm9taXNlKHQpe2NvbnN0IG49W107Zm9yIGF3YWl0KGNvbnN0IHIgb2YgdCluLnB1c2gocik7cmV0dXJuIG59dG9Qcm9taXNlKCl7cmV0dXJuIENlLnRvUHJvbWlzZSh0aGlzKX1lbWl0T25lKHQpe3RoaXMuX3N0YXRlPT09MCYmKHRoaXMuX3Jlc3VsdHMucHVzaCh0KSx0aGlzLl9vblN0YXRlQ2hhbmdlZC5maXJlKCkpfWVtaXRNYW55KHQpe3RoaXMuX3N0YXRlPT09MCYmKHRoaXMuX3Jlc3VsdHM9dGhpcy5fcmVzdWx0cy5jb25jYXQodCksdGhpcy5fb25TdGF0ZUNoYW5nZWQuZmlyZSgpKX1yZXNvbHZlKCl7dGhpcy5fc3RhdGU9PT0wJiYodGhpcy5fc3RhdGU9MSx0aGlzLl9vblN0YXRlQ2hhbmdlZC5maXJlKCkpfXJlamVjdCh0KXt0aGlzLl9zdGF0ZT09PTAmJih0aGlzLl9zdGF0ZT0yLHRoaXMuX2Vycm9yPXQsdGhpcy5fb25TdGF0ZUNoYW5nZWQuZmlyZSgpKX19O0NlLkVNUFRZPUNlLmZyb21BcnJheShbXSk7bGV0IHJsPUNlO2NsYXNzIFl1e2NvbnN0cnVjdG9yKHQpe3RoaXMudmFsdWVzPXQsdGhpcy5wcmVmaXhTdW09bmV3IFVpbnQzMkFycmF5KHQubGVuZ3RoKSx0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXg9bmV3IEludDMyQXJyYXkoMSksdGhpcy5wcmVmaXhTdW1WYWxpZEluZGV4WzBdPS0xfWluc2VydFZhbHVlcyh0LG4pe3Q9VnQodCk7Y29uc3Qgcj10aGlzLnZhbHVlcyxpPXRoaXMucHJlZml4U3VtLHM9bi5sZW5ndGg7cmV0dXJuIHM9PT0wPyExOih0aGlzLnZhbHVlcz1uZXcgVWludDMyQXJyYXkoci5sZW5ndGgrcyksdGhpcy52YWx1ZXMuc2V0KHIuc3ViYXJyYXkoMCx0KSwwKSx0aGlzLnZhbHVlcy5zZXQoci5zdWJhcnJheSh0KSx0K3MpLHRoaXMudmFsdWVzLnNldChuLHQpLHQtMTx0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF0mJih0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF09dC0xKSx0aGlzLnByZWZpeFN1bT1uZXcgVWludDMyQXJyYXkodGhpcy52YWx1ZXMubGVuZ3RoKSx0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF0+PTAmJnRoaXMucHJlZml4U3VtLnNldChpLnN1YmFycmF5KDAsdGhpcy5wcmVmaXhTdW1WYWxpZEluZGV4WzBdKzEpKSwhMCl9c2V0VmFsdWUodCxuKXtyZXR1cm4gdD1WdCh0KSxuPVZ0KG4pLHRoaXMudmFsdWVzW3RdPT09bj8hMToodGhpcy52YWx1ZXNbdF09bix0LTE8dGhpcy5wcmVmaXhTdW1WYWxpZEluZGV4WzBdJiYodGhpcy5wcmVmaXhTdW1WYWxpZEluZGV4WzBdPXQtMSksITApfXJlbW92ZVZhbHVlcyh0LG4pe3Q9VnQodCksbj1WdChuKTtjb25zdCByPXRoaXMudmFsdWVzLGk9dGhpcy5wcmVmaXhTdW07aWYodD49ci5sZW5ndGgpcmV0dXJuITE7Y29uc3Qgcz1yLmxlbmd0aC10O3JldHVybiBuPj1zJiYobj1zKSxuPT09MD8hMToodGhpcy52YWx1ZXM9bmV3IFVpbnQzMkFycmF5KHIubGVuZ3RoLW4pLHRoaXMudmFsdWVzLnNldChyLnN1YmFycmF5KDAsdCksMCksdGhpcy52YWx1ZXMuc2V0KHIuc3ViYXJyYXkodCtuKSx0KSx0aGlzLnByZWZpeFN1bT1uZXcgVWludDMyQXJyYXkodGhpcy52YWx1ZXMubGVuZ3RoKSx0LTE8dGhpcy5wcmVmaXhTdW1WYWxpZEluZGV4WzBdJiYodGhpcy5wcmVmaXhTdW1WYWxpZEluZGV4WzBdPXQtMSksdGhpcy5wcmVmaXhTdW1WYWxpZEluZGV4WzBdPj0wJiZ0aGlzLnByZWZpeFN1bS5zZXQoaS5zdWJhcnJheSgwLHRoaXMucHJlZml4U3VtVmFsaWRJbmRleFswXSsxKSksITApfWdldFRvdGFsU3VtKCl7cmV0dXJuIHRoaXMudmFsdWVzLmxlbmd0aD09PTA/MDp0aGlzLl9nZXRQcmVmaXhTdW0odGhpcy52YWx1ZXMubGVuZ3RoLTEpfWdldFByZWZpeFN1bSh0KXtyZXR1cm4gdDwwPzA6KHQ9VnQodCksdGhpcy5fZ2V0UHJlZml4U3VtKHQpKX1fZ2V0UHJlZml4U3VtKHQpe2lmKHQ8PXRoaXMucHJlZml4U3VtVmFsaWRJbmRleFswXSlyZXR1cm4gdGhpcy5wcmVmaXhTdW1bdF07bGV0IG49dGhpcy5wcmVmaXhTdW1WYWxpZEluZGV4WzBdKzE7bj09PTAmJih0aGlzLnByZWZpeFN1bVswXT10aGlzLnZhbHVlc1swXSxuKyspLHQ+PXRoaXMudmFsdWVzLmxlbmd0aCYmKHQ9dGhpcy52YWx1ZXMubGVuZ3RoLTEpO2ZvcihsZXQgcj1uO3I8PXQ7cisrKXRoaXMucHJlZml4U3VtW3JdPXRoaXMucHJlZml4U3VtW3ItMV0rdGhpcy52YWx1ZXNbcl07cmV0dXJuIHRoaXMucHJlZml4U3VtVmFsaWRJbmRleFswXT1NYXRoLm1heCh0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF0sdCksdGhpcy5wcmVmaXhTdW1bdF19Z2V0SW5kZXhPZih0KXt0PU1hdGguZmxvb3IodCksdGhpcy5nZXRUb3RhbFN1bSgpO2xldCBuPTAscj10aGlzLnZhbHVlcy5sZW5ndGgtMSxpPTAscz0wLGE9MDtmb3IoO248PXI7KWlmKGk9bisoci1uKS8yfDAscz10aGlzLnByZWZpeFN1bVtpXSxhPXMtdGhpcy52YWx1ZXNbaV0sdDxhKXI9aS0xO2Vsc2UgaWYodD49cyluPWkrMTtlbHNlIGJyZWFrO3JldHVybiBuZXcgUXUoaSx0LWEpfX1jbGFzcyBRdXtjb25zdHJ1Y3Rvcih0LG4pe3RoaXMuaW5kZXg9dCx0aGlzLnJlbWFpbmRlcj1uLHRoaXMuX3ByZWZpeFN1bUluZGV4T2ZSZXN1bHRCcmFuZD12b2lkIDAsdGhpcy5pbmRleD10LHRoaXMucmVtYWluZGVyPW59fWNsYXNzIEt1e2NvbnN0cnVjdG9yKHQsbixyLGkpe3RoaXMuX3VyaT10LHRoaXMuX2xpbmVzPW4sdGhpcy5fZW9sPXIsdGhpcy5fdmVyc2lvbklkPWksdGhpcy5fbGluZVN0YXJ0cz1udWxsLHRoaXMuX2NhY2hlZFRleHRWYWx1ZT1udWxsfWRpc3Bvc2UoKXt0aGlzLl9saW5lcy5sZW5ndGg9MH1nZXQgdmVyc2lvbigpe3JldHVybiB0aGlzLl92ZXJzaW9uSWR9Z2V0VGV4dCgpe3JldHVybiB0aGlzLl9jYWNoZWRUZXh0VmFsdWU9PT1udWxsJiYodGhpcy5fY2FjaGVkVGV4dFZhbHVlPXRoaXMuX2xpbmVzLmpvaW4odGhpcy5fZW9sKSksdGhpcy5fY2FjaGVkVGV4dFZhbHVlfW9uRXZlbnRzKHQpe3QuZW9sJiZ0LmVvbCE9PXRoaXMuX2VvbCYmKHRoaXMuX2VvbD10LmVvbCx0aGlzLl9saW5lU3RhcnRzPW51bGwpO2NvbnN0IG49dC5jaGFuZ2VzO2Zvcihjb25zdCByIG9mIG4pdGhpcy5fYWNjZXB0RGVsZXRlUmFuZ2Uoci5yYW5nZSksdGhpcy5fYWNjZXB0SW5zZXJ0VGV4dChuZXcgaGUoci5yYW5nZS5zdGFydExpbmVOdW1iZXIsci5yYW5nZS5zdGFydENvbHVtbiksci50ZXh0KTt0aGlzLl92ZXJzaW9uSWQ9dC52ZXJzaW9uSWQsdGhpcy5fY2FjaGVkVGV4dFZhbHVlPW51bGx9X2Vuc3VyZUxpbmVTdGFydHMoKXtpZighdGhpcy5fbGluZVN0YXJ0cyl7Y29uc3QgdD10aGlzLl9lb2wubGVuZ3RoLG49dGhpcy5fbGluZXMubGVuZ3RoLHI9bmV3IFVpbnQzMkFycmF5KG4pO2ZvcihsZXQgaT0wO2k8bjtpKyspcltpXT10aGlzLl9saW5lc1tpXS5sZW5ndGgrdDt0aGlzLl9saW5lU3RhcnRzPW5ldyBZdShyKX19X3NldExpbmVUZXh0KHQsbil7dGhpcy5fbGluZXNbdF09bix0aGlzLl9saW5lU3RhcnRzJiZ0aGlzLl9saW5lU3RhcnRzLnNldFZhbHVlKHQsdGhpcy5fbGluZXNbdF0ubGVuZ3RoK3RoaXMuX2VvbC5sZW5ndGgpfV9hY2NlcHREZWxldGVSYW5nZSh0KXtpZih0LnN0YXJ0TGluZU51bWJlcj09PXQuZW5kTGluZU51bWJlcil7aWYodC5zdGFydENvbHVtbj09PXQuZW5kQ29sdW1uKXJldHVybjt0aGlzLl9zZXRMaW5lVGV4dCh0LnN0YXJ0TGluZU51bWJlci0xLHRoaXMuX2xpbmVzW3Quc3RhcnRMaW5lTnVtYmVyLTFdLnN1YnN0cmluZygwLHQuc3RhcnRDb2x1bW4tMSkrdGhpcy5fbGluZXNbdC5zdGFydExpbmVOdW1iZXItMV0uc3Vic3RyaW5nKHQuZW5kQ29sdW1uLTEpKTtyZXR1cm59dGhpcy5fc2V0TGluZVRleHQodC5zdGFydExpbmVOdW1iZXItMSx0aGlzLl9saW5lc1t0LnN0YXJ0TGluZU51bWJlci0xXS5zdWJzdHJpbmcoMCx0LnN0YXJ0Q29sdW1uLTEpK3RoaXMuX2xpbmVzW3QuZW5kTGluZU51bWJlci0xXS5zdWJzdHJpbmcodC5lbmRDb2x1bW4tMSkpLHRoaXMuX2xpbmVzLnNwbGljZSh0LnN0YXJ0TGluZU51bWJlcix0LmVuZExpbmVOdW1iZXItdC5zdGFydExpbmVOdW1iZXIpLHRoaXMuX2xpbmVTdGFydHMmJnRoaXMuX2xpbmVTdGFydHMucmVtb3ZlVmFsdWVzKHQuc3RhcnRMaW5lTnVtYmVyLHQuZW5kTGluZU51bWJlci10LnN0YXJ0TGluZU51bWJlcil9X2FjY2VwdEluc2VydFRleHQodCxuKXtpZihuLmxlbmd0aD09PTApcmV0dXJuO2NvbnN0IHI9amgobik7aWYoci5sZW5ndGg9PT0xKXt0aGlzLl9zZXRMaW5lVGV4dCh0LmxpbmVOdW1iZXItMSx0aGlzLl9saW5lc1t0LmxpbmVOdW1iZXItMV0uc3Vic3RyaW5nKDAsdC5jb2x1bW4tMSkrclswXSt0aGlzLl9saW5lc1t0LmxpbmVOdW1iZXItMV0uc3Vic3RyaW5nKHQuY29sdW1uLTEpKTtyZXR1cm59cltyLmxlbmd0aC0xXSs9dGhpcy5fbGluZXNbdC5saW5lTnVtYmVyLTFdLnN1YnN0cmluZyh0LmNvbHVtbi0xKSx0aGlzLl9zZXRMaW5lVGV4dCh0LmxpbmVOdW1iZXItMSx0aGlzLl9saW5lc1t0LmxpbmVOdW1iZXItMV0uc3Vic3RyaW5nKDAsdC5jb2x1bW4tMSkrclswXSk7Y29uc3QgaT1uZXcgVWludDMyQXJyYXkoci5sZW5ndGgtMSk7Zm9yKGxldCBzPTE7czxyLmxlbmd0aDtzKyspdGhpcy5fbGluZXMuc3BsaWNlKHQubGluZU51bWJlcitzLTEsMCxyW3NdKSxpW3MtMV09cltzXS5sZW5ndGgrdGhpcy5fZW9sLmxlbmd0aDt0aGlzLl9saW5lU3RhcnRzJiZ0aGlzLl9saW5lU3RhcnRzLmluc2VydFZhbHVlcyh0LmxpbmVOdW1iZXIsaSl9fWNsYXNzIFp1e2NvbnN0cnVjdG9yKCl7dGhpcy5fbW9kZWxzPU9iamVjdC5jcmVhdGUobnVsbCl9Z2V0TW9kZWwodCl7cmV0dXJuIHRoaXMuX21vZGVsc1t0XX1nZXRNb2RlbHMoKXtjb25zdCB0PVtdO3JldHVybiBPYmplY3Qua2V5cyh0aGlzLl9tb2RlbHMpLmZvckVhY2gobj0+dC5wdXNoKHRoaXMuX21vZGVsc1tuXSkpLHR9JGFjY2VwdE5ld01vZGVsKHQpe3RoaXMuX21vZGVsc1t0LnVybF09bmV3IGVwKFZlLnBhcnNlKHQudXJsKSx0LmxpbmVzLHQuRU9MLHQudmVyc2lvbklkKX0kYWNjZXB0TW9kZWxDaGFuZ2VkKHQsbil7aWYoIXRoaXMuX21vZGVsc1t0XSlyZXR1cm47dGhpcy5fbW9kZWxzW3RdLm9uRXZlbnRzKG4pfSRhY2NlcHRSZW1vdmVkTW9kZWwodCl7dGhpcy5fbW9kZWxzW3RdJiZkZWxldGUgdGhpcy5fbW9kZWxzW3RdfX1jbGFzcyBlcCBleHRlbmRzIEt1e2dldCB1cmkoKXtyZXR1cm4gdGhpcy5fdXJpfWdldCBlb2woKXtyZXR1cm4gdGhpcy5fZW9sfWdldFZhbHVlKCl7cmV0dXJuIHRoaXMuZ2V0VGV4dCgpfWZpbmRNYXRjaGVzKHQpe2NvbnN0IG49W107Zm9yKGxldCByPTA7cjx0aGlzLl9saW5lcy5sZW5ndGg7cisrKXtjb25zdCBpPXRoaXMuX2xpbmVzW3JdLHM9dGhpcy5vZmZzZXRBdChuZXcgaGUocisxLDEpKSxhPWkubWF0Y2hBbGwodCk7Zm9yKGNvbnN0IGwgb2YgYSkobC5pbmRleHx8bC5pbmRleD09PTApJiYobC5pbmRleD1sLmluZGV4K3MpLG4ucHVzaChsKX1yZXR1cm4gbn1nZXRMaW5lc0NvbnRlbnQoKXtyZXR1cm4gdGhpcy5fbGluZXMuc2xpY2UoMCl9Z2V0TGluZUNvdW50KCl7cmV0dXJuIHRoaXMuX2xpbmVzLmxlbmd0aH1nZXRMaW5lQ29udGVudCh0KXtyZXR1cm4gdGhpcy5fbGluZXNbdC0xXX1nZXRXb3JkQXRQb3NpdGlvbih0LG4pe2NvbnN0IHI9dmkodC5jb2x1bW4sTm8obiksdGhpcy5fbGluZXNbdC5saW5lTnVtYmVyLTFdLDApO3JldHVybiByP25ldyBRKHQubGluZU51bWJlcixyLnN0YXJ0Q29sdW1uLHQubGluZU51bWJlcixyLmVuZENvbHVtbik6bnVsbH13b3Jkcyh0KXtjb25zdCBuPXRoaXMuX2xpbmVzLHI9dGhpcy5fd29yZGVuaXplLmJpbmQodGhpcyk7bGV0IGk9MCxzPSIiLGE9MCxsPVtdO3JldHVybnsqW1N5bWJvbC5pdGVyYXRvcl0oKXtmb3IoOzspaWYoYTxsLmxlbmd0aCl7Y29uc3Qgbz1zLnN1YnN0cmluZyhsW2FdLnN0YXJ0LGxbYV0uZW5kKTthKz0xLHlpZWxkIG99ZWxzZSBpZihpPG4ubGVuZ3RoKXM9bltpXSxsPXIocyx0KSxhPTAsaSs9MTtlbHNlIGJyZWFrfX19Z2V0TGluZVdvcmRzKHQsbil7Y29uc3Qgcj10aGlzLl9saW5lc1t0LTFdLGk9dGhpcy5fd29yZGVuaXplKHIsbikscz1bXTtmb3IoY29uc3QgYSBvZiBpKXMucHVzaCh7d29yZDpyLnN1YnN0cmluZyhhLnN0YXJ0LGEuZW5kKSxzdGFydENvbHVtbjphLnN0YXJ0KzEsZW5kQ29sdW1uOmEuZW5kKzF9KTtyZXR1cm4gc31fd29yZGVuaXplKHQsbil7Y29uc3Qgcj1bXTtsZXQgaTtmb3Iobi5sYXN0SW5kZXg9MDsoaT1uLmV4ZWModCkpJiZpWzBdLmxlbmd0aCE9PTA7KXIucHVzaCh7c3RhcnQ6aS5pbmRleCxlbmQ6aS5pbmRleCtpWzBdLmxlbmd0aH0pO3JldHVybiByfWdldFZhbHVlSW5SYW5nZSh0KXtpZih0PXRoaXMuX3ZhbGlkYXRlUmFuZ2UodCksdC5zdGFydExpbmVOdW1iZXI9PT10LmVuZExpbmVOdW1iZXIpcmV0dXJuIHRoaXMuX2xpbmVzW3Quc3RhcnRMaW5lTnVtYmVyLTFdLnN1YnN0cmluZyh0LnN0YXJ0Q29sdW1uLTEsdC5lbmRDb2x1bW4tMSk7Y29uc3Qgbj10aGlzLl9lb2wscj10LnN0YXJ0TGluZU51bWJlci0xLGk9dC5lbmRMaW5lTnVtYmVyLTEscz1bXTtzLnB1c2godGhpcy5fbGluZXNbcl0uc3Vic3RyaW5nKHQuc3RhcnRDb2x1bW4tMSkpO2ZvcihsZXQgYT1yKzE7YTxpO2ErKylzLnB1c2godGhpcy5fbGluZXNbYV0pO3JldHVybiBzLnB1c2godGhpcy5fbGluZXNbaV0uc3Vic3RyaW5nKDAsdC5lbmRDb2x1bW4tMSkpLHMuam9pbihuKX1vZmZzZXRBdCh0KXtyZXR1cm4gdD10aGlzLl92YWxpZGF0ZVBvc2l0aW9uKHQpLHRoaXMuX2Vuc3VyZUxpbmVTdGFydHMoKSx0aGlzLl9saW5lU3RhcnRzLmdldFByZWZpeFN1bSh0LmxpbmVOdW1iZXItMikrKHQuY29sdW1uLTEpfXBvc2l0aW9uQXQodCl7dD1NYXRoLmZsb29yKHQpLHQ9TWF0aC5tYXgoMCx0KSx0aGlzLl9lbnN1cmVMaW5lU3RhcnRzKCk7Y29uc3Qgbj10aGlzLl9saW5lU3RhcnRzLmdldEluZGV4T2YodCkscj10aGlzLl9saW5lc1tuLmluZGV4XS5sZW5ndGg7cmV0dXJue2xpbmVOdW1iZXI6MStuLmluZGV4LGNvbHVtbjoxK01hdGgubWluKG4ucmVtYWluZGVyLHIpfX1fdmFsaWRhdGVSYW5nZSh0KXtjb25zdCBuPXRoaXMuX3ZhbGlkYXRlUG9zaXRpb24oe2xpbmVOdW1iZXI6dC5zdGFydExpbmVOdW1iZXIsY29sdW1uOnQuc3RhcnRDb2x1bW59KSxyPXRoaXMuX3ZhbGlkYXRlUG9zaXRpb24oe2xpbmVOdW1iZXI6dC5lbmRMaW5lTnVtYmVyLGNvbHVtbjp0LmVuZENvbHVtbn0pO3JldHVybiBuLmxpbmVOdW1iZXIhPT10LnN0YXJ0TGluZU51bWJlcnx8bi5jb2x1bW4hPT10LnN0YXJ0Q29sdW1ufHxyLmxpbmVOdW1iZXIhPT10LmVuZExpbmVOdW1iZXJ8fHIuY29sdW1uIT09dC5lbmRDb2x1bW4/e3N0YXJ0TGluZU51bWJlcjpuLmxpbmVOdW1iZXIsc3RhcnRDb2x1bW46bi5jb2x1bW4sZW5kTGluZU51bWJlcjpyLmxpbmVOdW1iZXIsZW5kQ29sdW1uOnIuY29sdW1ufTp0fV92YWxpZGF0ZVBvc2l0aW9uKHQpe2lmKCFoZS5pc0lQb3NpdGlvbih0KSl0aHJvdyBuZXcgRXJyb3IoImJhZCBwb3NpdGlvbiIpO2xldHtsaW5lTnVtYmVyOm4sY29sdW1uOnJ9PXQsaT0hMTtpZihuPDEpbj0xLHI9MSxpPSEwO2Vsc2UgaWYobj50aGlzLl9saW5lcy5sZW5ndGgpbj10aGlzLl9saW5lcy5sZW5ndGgscj10aGlzLl9saW5lc1tuLTFdLmxlbmd0aCsxLGk9ITA7ZWxzZXtjb25zdCBzPXRoaXMuX2xpbmVzW24tMV0ubGVuZ3RoKzE7cjwxPyhyPTEsaT0hMCk6cj5zJiYocj1zLGk9ITApfXJldHVybiBpP3tsaW5lTnVtYmVyOm4sY29sdW1uOnJ9OnR9fWNvbnN0IFRyPWNsYXNzIFRye2NvbnN0cnVjdG9yKCl7dGhpcy5fd29ya2VyVGV4dE1vZGVsU3luY1NlcnZlcj1uZXcgWnV9ZGlzcG9zZSgpe31fZ2V0TW9kZWwodCl7cmV0dXJuIHRoaXMuX3dvcmtlclRleHRNb2RlbFN5bmNTZXJ2ZXIuZ2V0TW9kZWwodCl9X2dldE1vZGVscygpe3JldHVybiB0aGlzLl93b3JrZXJUZXh0TW9kZWxTeW5jU2VydmVyLmdldE1vZGVscygpfSRhY2NlcHROZXdNb2RlbCh0KXt0aGlzLl93b3JrZXJUZXh0TW9kZWxTeW5jU2VydmVyLiRhY2NlcHROZXdNb2RlbCh0KX0kYWNjZXB0TW9kZWxDaGFuZ2VkKHQsbil7dGhpcy5fd29ya2VyVGV4dE1vZGVsU3luY1NlcnZlci4kYWNjZXB0TW9kZWxDaGFuZ2VkKHQsbil9JGFjY2VwdFJlbW92ZWRNb2RlbCh0KXt0aGlzLl93b3JrZXJUZXh0TW9kZWxTeW5jU2VydmVyLiRhY2NlcHRSZW1vdmVkTW9kZWwodCl9YXN5bmMgJGNvbXB1dGVVbmljb2RlSGlnaGxpZ2h0cyh0LG4scil7Y29uc3QgaT10aGlzLl9nZXRNb2RlbCh0KTtyZXR1cm4gaT9hdS5jb21wdXRlVW5pY29kZUhpZ2hsaWdodHMoaSxuLHIpOntyYW5nZXM6W10saGFzTW9yZTohMSxhbWJpZ3VvdXNDaGFyYWN0ZXJDb3VudDowLGludmlzaWJsZUNoYXJhY3RlckNvdW50OjAsbm9uQmFzaWNBc2NpaUNoYXJhY3RlckNvdW50OjB9fWFzeW5jICRmaW5kU2VjdGlvbkhlYWRlcnModCxuKXtjb25zdCByPXRoaXMuX2dldE1vZGVsKHQpO3JldHVybiByP0h1KHIsbik6W119YXN5bmMgJGNvbXB1dGVEaWZmKHQsbixyLGkpe2NvbnN0IHM9dGhpcy5fZ2V0TW9kZWwodCksYT10aGlzLl9nZXRNb2RlbChuKTtyZXR1cm4hc3x8IWE/bnVsbDpzci5jb21wdXRlRGlmZihzLGEscixpKX1zdGF0aWMgY29tcHV0ZURpZmYodCxuLHIsaSl7Y29uc3Qgcz1pPT09ImFkdmFuY2VkIj9Zby5nZXREZWZhdWx0KCk6WW8uZ2V0TGVnYWN5KCksYT10LmdldExpbmVzQ29udGVudCgpLGw9bi5nZXRMaW5lc0NvbnRlbnQoKSxvPXMuY29tcHV0ZURpZmYoYSxsLHIpLGM9by5jaGFuZ2VzLmxlbmd0aD4wPyExOnRoaXMuX21vZGVsc0FyZUlkZW50aWNhbCh0LG4pO2Z1bmN0aW9uIGQodSl7cmV0dXJuIHUubWFwKGY9PltmLm9yaWdpbmFsLnN0YXJ0TGluZU51bWJlcixmLm9yaWdpbmFsLmVuZExpbmVOdW1iZXJFeGNsdXNpdmUsZi5tb2RpZmllZC5zdGFydExpbmVOdW1iZXIsZi5tb2RpZmllZC5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlLGYuaW5uZXJDaGFuZ2VzPy5tYXAobT0+W20ub3JpZ2luYWxSYW5nZS5zdGFydExpbmVOdW1iZXIsbS5vcmlnaW5hbFJhbmdlLnN0YXJ0Q29sdW1uLG0ub3JpZ2luYWxSYW5nZS5lbmRMaW5lTnVtYmVyLG0ub3JpZ2luYWxSYW5nZS5lbmRDb2x1bW4sbS5tb2RpZmllZFJhbmdlLnN0YXJ0TGluZU51bWJlcixtLm1vZGlmaWVkUmFuZ2Uuc3RhcnRDb2x1bW4sbS5tb2RpZmllZFJhbmdlLmVuZExpbmVOdW1iZXIsbS5tb2RpZmllZFJhbmdlLmVuZENvbHVtbl0pXSl9cmV0dXJue2lkZW50aWNhbDpjLHF1aXRFYXJseTpvLmhpdFRpbWVvdXQsY2hhbmdlczpkKG8uY2hhbmdlcyksbW92ZXM6by5tb3Zlcy5tYXAodT0+W3UubGluZVJhbmdlTWFwcGluZy5vcmlnaW5hbC5zdGFydExpbmVOdW1iZXIsdS5saW5lUmFuZ2VNYXBwaW5nLm9yaWdpbmFsLmVuZExpbmVOdW1iZXJFeGNsdXNpdmUsdS5saW5lUmFuZ2VNYXBwaW5nLm1vZGlmaWVkLnN0YXJ0TGluZU51bWJlcix1LmxpbmVSYW5nZU1hcHBpbmcubW9kaWZpZWQuZW5kTGluZU51bWJlckV4Y2x1c2l2ZSxkKHUuY2hhbmdlcyldKX19c3RhdGljIF9tb2RlbHNBcmVJZGVudGljYWwodCxuKXtjb25zdCByPXQuZ2V0TGluZUNvdW50KCksaT1uLmdldExpbmVDb3VudCgpO2lmKHIhPT1pKXJldHVybiExO2ZvcihsZXQgcz0xO3M8PXI7cysrKXtjb25zdCBhPXQuZ2V0TGluZUNvbnRlbnQocyksbD1uLmdldExpbmVDb250ZW50KHMpO2lmKGEhPT1sKXJldHVybiExfXJldHVybiEwfWFzeW5jICRjb21wdXRlTW9yZU1pbmltYWxFZGl0cyh0LG4scil7Y29uc3QgaT10aGlzLl9nZXRNb2RlbCh0KTtpZighaSlyZXR1cm4gbjtjb25zdCBzPVtdO2xldCBhO249bi5zbGljZSgwKS5zb3J0KChvLGMpPT57aWYoby5yYW5nZSYmYy5yYW5nZSlyZXR1cm4gUS5jb21wYXJlUmFuZ2VzVXNpbmdTdGFydHMoby5yYW5nZSxjLnJhbmdlKTtjb25zdCBkPW8ucmFuZ2U/MDoxLHU9Yy5yYW5nZT8wOjE7cmV0dXJuIGQtdX0pO2xldCBsPTA7Zm9yKGxldCBvPTE7bzxuLmxlbmd0aDtvKyspUS5nZXRFbmRQb3NpdGlvbihuW2xdLnJhbmdlKS5lcXVhbHMoUS5nZXRTdGFydFBvc2l0aW9uKG5bb10ucmFuZ2UpKT8obltsXS5yYW5nZT1RLmZyb21Qb3NpdGlvbnMoUS5nZXRTdGFydFBvc2l0aW9uKG5bbF0ucmFuZ2UpLFEuZ2V0RW5kUG9zaXRpb24obltvXS5yYW5nZSkpLG5bbF0udGV4dCs9bltvXS50ZXh0KToobCsrLG5bbF09bltvXSk7bi5sZW5ndGg9bCsxO2ZvcihsZXR7cmFuZ2U6byx0ZXh0OmMsZW9sOmR9b2Ygbil7aWYodHlwZW9mIGQ9PSJudW1iZXIiJiYoYT1kKSxRLmlzRW1wdHkobykmJiFjKWNvbnRpbnVlO2NvbnN0IHU9aS5nZXRWYWx1ZUluUmFuZ2Uobyk7aWYoYz1jLnJlcGxhY2UoL1xyXG58XG58XHIvZyxpLmVvbCksdT09PWMpY29udGludWU7aWYoTWF0aC5tYXgoYy5sZW5ndGgsdS5sZW5ndGgpPnNyLl9kaWZmTGltaXQpe3MucHVzaCh7cmFuZ2U6byx0ZXh0OmN9KTtjb250aW51ZX1jb25zdCBmPU5kKHUsYyxyKSxtPWkub2Zmc2V0QXQoUS5saWZ0KG8pLmdldFN0YXJ0UG9zaXRpb24oKSk7Zm9yKGNvbnN0IHYgb2YgZil7Y29uc3Qgdz1pLnBvc2l0aW9uQXQobSt2Lm9yaWdpbmFsU3RhcnQpLGs9aS5wb3NpdGlvbkF0KG0rdi5vcmlnaW5hbFN0YXJ0K3Yub3JpZ2luYWxMZW5ndGgpLFI9e3RleHQ6Yy5zdWJzdHIodi5tb2RpZmllZFN0YXJ0LHYubW9kaWZpZWRMZW5ndGgpLHJhbmdlOntzdGFydExpbmVOdW1iZXI6dy5saW5lTnVtYmVyLHN0YXJ0Q29sdW1uOncuY29sdW1uLGVuZExpbmVOdW1iZXI6ay5saW5lTnVtYmVyLGVuZENvbHVtbjprLmNvbHVtbn19O2kuZ2V0VmFsdWVJblJhbmdlKFIucmFuZ2UpIT09Ui50ZXh0JiZzLnB1c2goUil9fXJldHVybiB0eXBlb2YgYT09Im51bWJlciImJnMucHVzaCh7ZW9sOmEsdGV4dDoiIixyYW5nZTp7c3RhcnRMaW5lTnVtYmVyOjAsc3RhcnRDb2x1bW46MCxlbmRMaW5lTnVtYmVyOjAsZW5kQ29sdW1uOjB9fSksc31hc3luYyAkY29tcHV0ZUxpbmtzKHQpe2NvbnN0IG49dGhpcy5fZ2V0TW9kZWwodCk7cmV0dXJuIG4/TGQobik6bnVsbH1hc3luYyAkY29tcHV0ZURlZmF1bHREb2N1bWVudENvbG9ycyh0KXtjb25zdCBuPXRoaXMuX2dldE1vZGVsKHQpO3JldHVybiBuP3F1KG4pOm51bGx9YXN5bmMgJHRleHR1YWxTdWdnZXN0KHQsbixyLGkpe2NvbnN0IHM9bmV3IFVuLGE9bmV3IFJlZ0V4cChyLGkpLGw9bmV3IFNldDtlOmZvcihjb25zdCBvIG9mIHQpe2NvbnN0IGM9dGhpcy5fZ2V0TW9kZWwobyk7aWYoYyl7Zm9yKGNvbnN0IGQgb2YgYy53b3JkcyhhKSlpZighKGQ9PT1ufHwhaXNOYU4oTnVtYmVyKGQpKSkmJihsLmFkZChkKSxsLnNpemU+c3IuX3N1Z2dlc3Rpb25zTGltaXQpKWJyZWFrIGV9fXJldHVybnt3b3JkczpBcnJheS5mcm9tKGwpLGR1cmF0aW9uOnMuZWxhcHNlZCgpfX1hc3luYyAkY29tcHV0ZVdvcmRSYW5nZXModCxuLHIsaSl7Y29uc3Qgcz10aGlzLl9nZXRNb2RlbCh0KTtpZighcylyZXR1cm4gT2JqZWN0LmNyZWF0ZShudWxsKTtjb25zdCBhPW5ldyBSZWdFeHAocixpKSxsPU9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKGxldCBvPW4uc3RhcnRMaW5lTnVtYmVyO288bi5lbmRMaW5lTnVtYmVyO28rKyl7Y29uc3QgYz1zLmdldExpbmVXb3JkcyhvLGEpO2Zvcihjb25zdCBkIG9mIGMpe2lmKCFpc05hTihOdW1iZXIoZC53b3JkKSkpY29udGludWU7bGV0IHU9bFtkLndvcmRdO3V8fCh1PVtdLGxbZC53b3JkXT11KSx1LnB1c2goe3N0YXJ0TGluZU51bWJlcjpvLHN0YXJ0Q29sdW1uOmQuc3RhcnRDb2x1bW4sZW5kTGluZU51bWJlcjpvLGVuZENvbHVtbjpkLmVuZENvbHVtbn0pfX1yZXR1cm4gbH1hc3luYyAkbmF2aWdhdGVWYWx1ZVNldCh0LG4scixpLHMpe2NvbnN0IGE9dGhpcy5fZ2V0TW9kZWwodCk7aWYoIWEpcmV0dXJuIG51bGw7Y29uc3QgbD1uZXcgUmVnRXhwKGkscyk7bi5zdGFydENvbHVtbj09PW4uZW5kQ29sdW1uJiYobj17c3RhcnRMaW5lTnVtYmVyOm4uc3RhcnRMaW5lTnVtYmVyLHN0YXJ0Q29sdW1uOm4uc3RhcnRDb2x1bW4sZW5kTGluZU51bWJlcjpuLmVuZExpbmVOdW1iZXIsZW5kQ29sdW1uOm4uZW5kQ29sdW1uKzF9KTtjb25zdCBvPWEuZ2V0VmFsdWVJblJhbmdlKG4pLGM9YS5nZXRXb3JkQXRQb3NpdGlvbih7bGluZU51bWJlcjpuLnN0YXJ0TGluZU51bWJlcixjb2x1bW46bi5zdGFydENvbHVtbn0sbCk7aWYoIWMpcmV0dXJuIG51bGw7Y29uc3QgZD1hLmdldFZhbHVlSW5SYW5nZShjKTtyZXR1cm4gbGkuSU5TVEFOQ0UubmF2aWdhdGVWYWx1ZVNldChuLG8sYyxkLHIpfX07VHIuX2RpZmZMaW1pdD0xZTUsVHIuX3N1Z2dlc3Rpb25zTGltaXQ9MWU0O2xldCBGaT1UcjtjbGFzcyBzciBleHRlbmRzIEZpe2NvbnN0cnVjdG9yKHQsbil7c3VwZXIoKSx0aGlzLl9ob3N0PXQsdGhpcy5fZm9yZWlnbk1vZHVsZUZhY3Rvcnk9bix0aGlzLl9mb3JlaWduTW9kdWxlPW51bGx9YXN5bmMgJHBpbmcoKXtyZXR1cm4icG9uZyJ9JGxvYWRGb3JlaWduTW9kdWxlKHQsbixyKXtjb25zdCBhPXtob3N0OlFkKHIsKGwsbyk9PnRoaXMuX2hvc3QuJGZocihsLG8pKSxnZXRNaXJyb3JNb2RlbHM6KCk9PnRoaXMuX2dldE1vZGVscygpfTtyZXR1cm4gdGhpcy5fZm9yZWlnbk1vZHVsZUZhY3Rvcnk/KHRoaXMuX2ZvcmVpZ25Nb2R1bGU9dGhpcy5fZm9yZWlnbk1vZHVsZUZhY3RvcnkoYSxuKSxQcm9taXNlLnJlc29sdmUoQ28odGhpcy5fZm9yZWlnbk1vZHVsZSkpKTpuZXcgUHJvbWlzZSgobCxvKT0+e2NvbnN0IGM9ZD0+e3RoaXMuX2ZvcmVpZ25Nb2R1bGU9ZC5jcmVhdGUoYSxuKSxsKENvKHRoaXMuX2ZvcmVpZ25Nb2R1bGUpKX07aW1wb3J0KGAke2FhLmFzQnJvd3NlclVyaShgJHt0fS5qc2ApLnRvU3RyaW5nKCEwKX1gKS50aGVuKGMpLmNhdGNoKG8pfSl9JGZtcih0LG4pe2lmKCF0aGlzLl9mb3JlaWduTW9kdWxlfHx0eXBlb2YgdGhpcy5fZm9yZWlnbk1vZHVsZVt0XSE9ImZ1bmN0aW9uIilyZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCJNaXNzaW5nIHJlcXVlc3RIYW5kbGVyIG9yIG1ldGhvZDogIit0KSk7dHJ5e3JldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5fZm9yZWlnbk1vZHVsZVt0XS5hcHBseSh0aGlzLl9mb3JlaWduTW9kdWxlLG4pKX1jYXRjaChyKXtyZXR1cm4gUHJvbWlzZS5yZWplY3Qocil9fX10eXBlb2YgaW1wb3J0U2NyaXB0cz09ImZ1bmN0aW9uIiYmKGdsb2JhbFRoaXMubW9uYWNvPWpkKCkpO2xldCBSaT0hMTtmdW5jdGlvbiBpbChlKXtpZihSaSlyZXR1cm47Umk9ITA7Y29uc3QgdD1uZXcgRWQobj0+e2dsb2JhbFRoaXMucG9zdE1lc3NhZ2Uobil9LG49Pm5ldyBzcihiaS5nZXRDaGFubmVsKG4pLGUpKTtnbG9iYWxUaGlzLm9ubWVzc2FnZT1uPT57dC5vbm1lc3NhZ2Uobi5kYXRhKX19Z2xvYmFsVGhpcy5vbm1lc3NhZ2U9ZT0+e1JpfHxpbChudWxsKX07LyohLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICogQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAqIFZlcnNpb246IDAuNTIuMChmNmRjMGViOGZjZTY3ZTU3ZjYwMzZmNDc2OWQ5MmMxNjY2Y2RmNTQ2KQogKiBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UKICogaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9tb25hY28tZWRpdG9yL2Jsb2IvbWFpbi9MSUNFTlNFLnR4dAogKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi92YXIgcDsoZnVuY3Rpb24oZSl7ZVtlLklkZW50PTBdPSJJZGVudCIsZVtlLkF0S2V5d29yZD0xXT0iQXRLZXl3b3JkIixlW2UuU3RyaW5nPTJdPSJTdHJpbmciLGVbZS5CYWRTdHJpbmc9M109IkJhZFN0cmluZyIsZVtlLlVucXVvdGVkU3RyaW5nPTRdPSJVbnF1b3RlZFN0cmluZyIsZVtlLkhhc2g9NV09Ikhhc2giLGVbZS5OdW09Nl09Ik51bSIsZVtlLlBlcmNlbnRhZ2U9N109IlBlcmNlbnRhZ2UiLGVbZS5EaW1lbnNpb249OF09IkRpbWVuc2lvbiIsZVtlLlVuaWNvZGVSYW5nZT05XT0iVW5pY29kZVJhbmdlIixlW2UuQ0RPPTEwXT0iQ0RPIixlW2UuQ0RDPTExXT0iQ0RDIixlW2UuQ29sb249MTJdPSJDb2xvbiIsZVtlLlNlbWlDb2xvbj0xM109IlNlbWlDb2xvbiIsZVtlLkN1cmx5TD0xNF09IkN1cmx5TCIsZVtlLkN1cmx5Uj0xNV09IkN1cmx5UiIsZVtlLlBhcmVudGhlc2lzTD0xNl09IlBhcmVudGhlc2lzTCIsZVtlLlBhcmVudGhlc2lzUj0xN109IlBhcmVudGhlc2lzUiIsZVtlLkJyYWNrZXRMPTE4XT0iQnJhY2tldEwiLGVbZS5CcmFja2V0Uj0xOV09IkJyYWNrZXRSIixlW2UuV2hpdGVzcGFjZT0yMF09IldoaXRlc3BhY2UiLGVbZS5JbmNsdWRlcz0yMV09IkluY2x1ZGVzIixlW2UuRGFzaG1hdGNoPTIyXT0iRGFzaG1hdGNoIixlW2UuU3Vic3RyaW5nT3BlcmF0b3I9MjNdPSJTdWJzdHJpbmdPcGVyYXRvciIsZVtlLlByZWZpeE9wZXJhdG9yPTI0XT0iUHJlZml4T3BlcmF0b3IiLGVbZS5TdWZmaXhPcGVyYXRvcj0yNV09IlN1ZmZpeE9wZXJhdG9yIixlW2UuRGVsaW09MjZdPSJEZWxpbSIsZVtlLkVNUz0yN109IkVNUyIsZVtlLkVYUz0yOF09IkVYUyIsZVtlLkxlbmd0aD0yOV09Ikxlbmd0aCIsZVtlLkFuZ2xlPTMwXT0iQW5nbGUiLGVbZS5UaW1lPTMxXT0iVGltZSIsZVtlLkZyZXE9MzJdPSJGcmVxIixlW2UuRXhjbGFtYXRpb249MzNdPSJFeGNsYW1hdGlvbiIsZVtlLlJlc29sdXRpb249MzRdPSJSZXNvbHV0aW9uIixlW2UuQ29tbWE9MzVdPSJDb21tYSIsZVtlLkNoYXJzZXQ9MzZdPSJDaGFyc2V0IixlW2UuRXNjYXBlZEphdmFTY3JpcHQ9MzddPSJFc2NhcGVkSmF2YVNjcmlwdCIsZVtlLkJhZEVzY2FwZWRKYXZhU2NyaXB0PTM4XT0iQmFkRXNjYXBlZEphdmFTY3JpcHQiLGVbZS5Db21tZW50PTM5XT0iQ29tbWVudCIsZVtlLlNpbmdsZUxpbmVDb21tZW50PTQwXT0iU2luZ2xlTGluZUNvbW1lbnQiLGVbZS5FT0Y9NDFdPSJFT0YiLGVbZS5Db250YWluZXJRdWVyeUxlbmd0aD00Ml09IkNvbnRhaW5lclF1ZXJ5TGVuZ3RoIixlW2UuQ3VzdG9tVG9rZW49NDNdPSJDdXN0b21Ub2tlbiJ9KShwfHwocD17fSkpO3ZhciBzbD1jbGFzc3tjb25zdHJ1Y3RvcihlKXt0aGlzLnNvdXJjZT1lLHRoaXMubGVuPWUubGVuZ3RoLHRoaXMucG9zaXRpb249MH1zdWJzdHJpbmcoZSx0PXRoaXMucG9zaXRpb24pe3JldHVybiB0aGlzLnNvdXJjZS5zdWJzdHJpbmcoZSx0KX1lb3MoKXtyZXR1cm4gdGhpcy5sZW48PXRoaXMucG9zaXRpb259cG9zKCl7cmV0dXJuIHRoaXMucG9zaXRpb259Z29CYWNrVG8oZSl7dGhpcy5wb3NpdGlvbj1lfWdvQmFjayhlKXt0aGlzLnBvc2l0aW9uLT1lfWFkdmFuY2UoZSl7dGhpcy5wb3NpdGlvbis9ZX1uZXh0Q2hhcigpe3JldHVybiB0aGlzLnNvdXJjZS5jaGFyQ29kZUF0KHRoaXMucG9zaXRpb24rKyl8fDB9cGVla0NoYXIoZT0wKXtyZXR1cm4gdGhpcy5zb3VyY2UuY2hhckNvZGVBdCh0aGlzLnBvc2l0aW9uK2UpfHwwfWxvb2tiYWNrQ2hhcihlPTApe3JldHVybiB0aGlzLnNvdXJjZS5jaGFyQ29kZUF0KHRoaXMucG9zaXRpb24tZSl8fDB9YWR2YW5jZUlmQ2hhcihlKXtyZXR1cm4gZT09PXRoaXMuc291cmNlLmNoYXJDb2RlQXQodGhpcy5wb3NpdGlvbik/KHRoaXMucG9zaXRpb24rKywhMCk6ITF9YWR2YW5jZUlmQ2hhcnMoZSl7aWYodGhpcy5wb3NpdGlvbitlLmxlbmd0aD50aGlzLnNvdXJjZS5sZW5ndGgpcmV0dXJuITE7bGV0IHQ9MDtmb3IoO3Q8ZS5sZW5ndGg7dCsrKWlmKHRoaXMuc291cmNlLmNoYXJDb2RlQXQodGhpcy5wb3NpdGlvbit0KSE9PWVbdF0pcmV0dXJuITE7cmV0dXJuIHRoaXMuYWR2YW5jZSh0KSwhMH1hZHZhbmNlV2hpbGVDaGFyKGUpe2NvbnN0IHQ9dGhpcy5wb3NpdGlvbjtmb3IoO3RoaXMucG9zaXRpb248dGhpcy5sZW4mJmUodGhpcy5zb3VyY2UuY2hhckNvZGVBdCh0aGlzLnBvc2l0aW9uKSk7KXRoaXMucG9zaXRpb24rKztyZXR1cm4gdGhpcy5wb3NpdGlvbi10fX0sYXI9OTcsYWw9MTAyLG9sPTEyMixvcj02NSxsbD03MCxjbD05MCx2bj00OCx3bj01Nyx0cD0xMjYsbnA9OTQseW49NjEscnA9MTI0LGt0PTQ1LGhsPTk1LGlwPTM3LE5pPTQyLGRsPTQwLHVsPTQxLHNwPTYwLGFwPTYyLG9wPTY0LGxwPTM1LGNwPTM2LERpPTkyLHBsPTQ3LEh0PTEwLEd0PTEzLHhuPTEyLG1sPTM0LGZsPTM5LElpPTMyLEFpPTksaHA9NTksZHA9NTgsdXA9MTIzLHBwPTEyNSxtcD05MSxmcD05MyxncD00NCxnbD00NixibD0zMyxicD02Myx2cD00MyxCZT17fTtCZVtocF09cC5TZW1pQ29sb24sQmVbZHBdPXAuQ29sb24sQmVbdXBdPXAuQ3VybHlMLEJlW3BwXT1wLkN1cmx5UixCZVtmcF09cC5CcmFja2V0UixCZVttcF09cC5CcmFja2V0TCxCZVtkbF09cC5QYXJlbnRoZXNpc0wsQmVbdWxdPXAuUGFyZW50aGVzaXNSLEJlW2dwXT1wLkNvbW1hO3ZhciBpZT17fTtpZS5lbT1wLkVNUyxpZS5leD1wLkVYUyxpZS5weD1wLkxlbmd0aCxpZS5jbT1wLkxlbmd0aCxpZS5tbT1wLkxlbmd0aCxpZS5pbj1wLkxlbmd0aCxpZS5wdD1wLkxlbmd0aCxpZS5wYz1wLkxlbmd0aCxpZS5kZWc9cC5BbmdsZSxpZS5yYWQ9cC5BbmdsZSxpZS5ncmFkPXAuQW5nbGUsaWUubXM9cC5UaW1lLGllLnM9cC5UaW1lLGllLmh6PXAuRnJlcSxpZS5raHo9cC5GcmVxLGllWyIlIl09cC5QZXJjZW50YWdlLGllLmZyPXAuUGVyY2VudGFnZSxpZS5kcGk9cC5SZXNvbHV0aW9uLGllLmRwY209cC5SZXNvbHV0aW9uLGllLmNxdz1wLkNvbnRhaW5lclF1ZXJ5TGVuZ3RoLGllLmNxaD1wLkNvbnRhaW5lclF1ZXJ5TGVuZ3RoLGllLmNxaT1wLkNvbnRhaW5lclF1ZXJ5TGVuZ3RoLGllLmNxYj1wLkNvbnRhaW5lclF1ZXJ5TGVuZ3RoLGllLmNxbWluPXAuQ29udGFpbmVyUXVlcnlMZW5ndGgsaWUuY3FtYXg9cC5Db250YWluZXJRdWVyeUxlbmd0aDt2YXIgU249Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLnN0cmVhbT1uZXcgc2woIiIpLHRoaXMuaWdub3JlQ29tbWVudD0hMCx0aGlzLmlnbm9yZVdoaXRlc3BhY2U9ITAsdGhpcy5pblVSTD0hMX1zZXRTb3VyY2UoZSl7dGhpcy5zdHJlYW09bmV3IHNsKGUpfWZpbmlzaFRva2VuKGUsdCxuKXtyZXR1cm57b2Zmc2V0OmUsbGVuOnRoaXMuc3RyZWFtLnBvcygpLWUsdHlwZTp0LHRleHQ6bnx8dGhpcy5zdHJlYW0uc3Vic3RyaW5nKGUpfX1zdWJzdHJpbmcoZSx0KXtyZXR1cm4gdGhpcy5zdHJlYW0uc3Vic3RyaW5nKGUsZSt0KX1wb3MoKXtyZXR1cm4gdGhpcy5zdHJlYW0ucG9zKCl9Z29CYWNrVG8oZSl7dGhpcy5zdHJlYW0uZ29CYWNrVG8oZSl9c2NhblVucXVvdGVkU3RyaW5nKCl7Y29uc3QgZT10aGlzLnN0cmVhbS5wb3MoKSx0PVtdO3JldHVybiB0aGlzLl91bnF1b3RlZFN0cmluZyh0KT90aGlzLmZpbmlzaFRva2VuKGUscC5VbnF1b3RlZFN0cmluZyx0LmpvaW4oIiIpKTpudWxsfXNjYW4oKXtjb25zdCBlPXRoaXMudHJpdmlhKCk7aWYoZSE9PW51bGwpcmV0dXJuIGU7Y29uc3QgdD10aGlzLnN0cmVhbS5wb3MoKTtyZXR1cm4gdGhpcy5zdHJlYW0uZW9zKCk/dGhpcy5maW5pc2hUb2tlbih0LHAuRU9GKTp0aGlzLnNjYW5OZXh0KHQpfXRyeVNjYW5Vbmljb2RlKCl7Y29uc3QgZT10aGlzLnN0cmVhbS5wb3MoKTtpZighdGhpcy5zdHJlYW0uZW9zKCkmJnRoaXMuX3VuaWNvZGVSYW5nZSgpKXJldHVybiB0aGlzLmZpbmlzaFRva2VuKGUscC5Vbmljb2RlUmFuZ2UpO3RoaXMuc3RyZWFtLmdvQmFja1RvKGUpfXNjYW5OZXh0KGUpe2lmKHRoaXMuc3RyZWFtLmFkdmFuY2VJZkNoYXJzKFtzcCxibCxrdCxrdF0pKXJldHVybiB0aGlzLmZpbmlzaFRva2VuKGUscC5DRE8pO2lmKHRoaXMuc3RyZWFtLmFkdmFuY2VJZkNoYXJzKFtrdCxrdCxhcF0pKXJldHVybiB0aGlzLmZpbmlzaFRva2VuKGUscC5DREMpO2xldCB0PVtdO2lmKHRoaXMuaWRlbnQodCkpcmV0dXJuIHRoaXMuZmluaXNoVG9rZW4oZSxwLklkZW50LHQuam9pbigiIikpO2lmKHRoaXMuc3RyZWFtLmFkdmFuY2VJZkNoYXIob3ApKWlmKHQ9WyJAIl0sdGhpcy5fbmFtZSh0KSl7Y29uc3Qgcj10LmpvaW4oIiIpO3JldHVybiByPT09IkBjaGFyc2V0Ij90aGlzLmZpbmlzaFRva2VuKGUscC5DaGFyc2V0LHIpOnRoaXMuZmluaXNoVG9rZW4oZSxwLkF0S2V5d29yZCxyKX1lbHNlIHJldHVybiB0aGlzLmZpbmlzaFRva2VuKGUscC5EZWxpbSk7aWYodGhpcy5zdHJlYW0uYWR2YW5jZUlmQ2hhcihscCkpcmV0dXJuIHQ9WyIjIl0sdGhpcy5fbmFtZSh0KT90aGlzLmZpbmlzaFRva2VuKGUscC5IYXNoLHQuam9pbigiIikpOnRoaXMuZmluaXNoVG9rZW4oZSxwLkRlbGltKTtpZih0aGlzLnN0cmVhbS5hZHZhbmNlSWZDaGFyKGJsKSlyZXR1cm4gdGhpcy5maW5pc2hUb2tlbihlLHAuRXhjbGFtYXRpb24pO2lmKHRoaXMuX251bWJlcigpKXtjb25zdCByPXRoaXMuc3RyZWFtLnBvcygpO2lmKHQ9W3RoaXMuc3RyZWFtLnN1YnN0cmluZyhlLHIpXSx0aGlzLnN0cmVhbS5hZHZhbmNlSWZDaGFyKGlwKSlyZXR1cm4gdGhpcy5maW5pc2hUb2tlbihlLHAuUGVyY2VudGFnZSk7aWYodGhpcy5pZGVudCh0KSl7Y29uc3QgaT10aGlzLnN0cmVhbS5zdWJzdHJpbmcocikudG9Mb3dlckNhc2UoKSxzPWllW2ldO3JldHVybiB0eXBlb2YgczwidSI/dGhpcy5maW5pc2hUb2tlbihlLHMsdC5qb2luKCIiKSk6dGhpcy5maW5pc2hUb2tlbihlLHAuRGltZW5zaW9uLHQuam9pbigiIikpfXJldHVybiB0aGlzLmZpbmlzaFRva2VuKGUscC5OdW0pfXQ9W107bGV0IG49dGhpcy5fc3RyaW5nKHQpO3JldHVybiBuIT09bnVsbD90aGlzLmZpbmlzaFRva2VuKGUsbix0LmpvaW4oIiIpKToobj1CZVt0aGlzLnN0cmVhbS5wZWVrQ2hhcigpXSx0eXBlb2YgbjwidSI/KHRoaXMuc3RyZWFtLmFkdmFuY2UoMSksdGhpcy5maW5pc2hUb2tlbihlLG4pKTp0aGlzLnN0cmVhbS5wZWVrQ2hhcigwKT09PXRwJiZ0aGlzLnN0cmVhbS5wZWVrQ2hhcigxKT09PXluPyh0aGlzLnN0cmVhbS5hZHZhbmNlKDIpLHRoaXMuZmluaXNoVG9rZW4oZSxwLkluY2x1ZGVzKSk6dGhpcy5zdHJlYW0ucGVla0NoYXIoMCk9PT1ycCYmdGhpcy5zdHJlYW0ucGVla0NoYXIoMSk9PT15bj8odGhpcy5zdHJlYW0uYWR2YW5jZSgyKSx0aGlzLmZpbmlzaFRva2VuKGUscC5EYXNobWF0Y2gpKTp0aGlzLnN0cmVhbS5wZWVrQ2hhcigwKT09PU5pJiZ0aGlzLnN0cmVhbS5wZWVrQ2hhcigxKT09PXluPyh0aGlzLnN0cmVhbS5hZHZhbmNlKDIpLHRoaXMuZmluaXNoVG9rZW4oZSxwLlN1YnN0cmluZ09wZXJhdG9yKSk6dGhpcy5zdHJlYW0ucGVla0NoYXIoMCk9PT1ucCYmdGhpcy5zdHJlYW0ucGVla0NoYXIoMSk9PT15bj8odGhpcy5zdHJlYW0uYWR2YW5jZSgyKSx0aGlzLmZpbmlzaFRva2VuKGUscC5QcmVmaXhPcGVyYXRvcikpOnRoaXMuc3RyZWFtLnBlZWtDaGFyKDApPT09Y3AmJnRoaXMuc3RyZWFtLnBlZWtDaGFyKDEpPT09eW4/KHRoaXMuc3RyZWFtLmFkdmFuY2UoMiksdGhpcy5maW5pc2hUb2tlbihlLHAuU3VmZml4T3BlcmF0b3IpKToodGhpcy5zdHJlYW0ubmV4dENoYXIoKSx0aGlzLmZpbmlzaFRva2VuKGUscC5EZWxpbSkpKX10cml2aWEoKXtmb3IoOzspe2NvbnN0IGU9dGhpcy5zdHJlYW0ucG9zKCk7aWYodGhpcy5fd2hpdGVzcGFjZSgpKXtpZighdGhpcy5pZ25vcmVXaGl0ZXNwYWNlKXJldHVybiB0aGlzLmZpbmlzaFRva2VuKGUscC5XaGl0ZXNwYWNlKX1lbHNlIGlmKHRoaXMuY29tbWVudCgpKXtpZighdGhpcy5pZ25vcmVDb21tZW50KXJldHVybiB0aGlzLmZpbmlzaFRva2VuKGUscC5Db21tZW50KX1lbHNlIHJldHVybiBudWxsfX1jb21tZW50KCl7aWYodGhpcy5zdHJlYW0uYWR2YW5jZUlmQ2hhcnMoW3BsLE5pXSkpe2xldCBlPSExLHQ9ITE7cmV0dXJuIHRoaXMuc3RyZWFtLmFkdmFuY2VXaGlsZUNoYXIobj0+dCYmbj09PXBsPyhlPSEwLCExKToodD1uPT09TmksITApKSxlJiZ0aGlzLnN0cmVhbS5hZHZhbmNlKDEpLCEwfXJldHVybiExfV9udW1iZXIoKXtsZXQgZT0wLHQ7cmV0dXJuIHRoaXMuc3RyZWFtLnBlZWtDaGFyKCk9PT1nbCYmKGU9MSksdD10aGlzLnN0cmVhbS5wZWVrQ2hhcihlKSx0Pj12biYmdDw9d24/KHRoaXMuc3RyZWFtLmFkdmFuY2UoZSsxKSx0aGlzLnN0cmVhbS5hZHZhbmNlV2hpbGVDaGFyKG49Pm4+PXZuJiZuPD13bnx8ZT09PTAmJm49PT1nbCksITApOiExfV9uZXdsaW5lKGUpe2NvbnN0IHQ9dGhpcy5zdHJlYW0ucGVla0NoYXIoKTtzd2l0Y2godCl7Y2FzZSBHdDpjYXNlIHhuOmNhc2UgSHQ6cmV0dXJuIHRoaXMuc3RyZWFtLmFkdmFuY2UoMSksZS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUodCkpLHQ9PT1HdCYmdGhpcy5zdHJlYW0uYWR2YW5jZUlmQ2hhcihIdCkmJmUucHVzaChgCmApLCEwfXJldHVybiExfV9lc2NhcGUoZSx0KXtsZXQgbj10aGlzLnN0cmVhbS5wZWVrQ2hhcigpO2lmKG49PT1EaSl7dGhpcy5zdHJlYW0uYWR2YW5jZSgxKSxuPXRoaXMuc3RyZWFtLnBlZWtDaGFyKCk7bGV0IHI9MDtmb3IoO3I8NiYmKG4+PXZuJiZuPD13bnx8bj49YXImJm48PWFsfHxuPj1vciYmbjw9bGwpOyl0aGlzLnN0cmVhbS5hZHZhbmNlKDEpLG49dGhpcy5zdHJlYW0ucGVla0NoYXIoKSxyKys7aWYocj4wKXt0cnl7Y29uc3QgaT1wYXJzZUludCh0aGlzLnN0cmVhbS5zdWJzdHJpbmcodGhpcy5zdHJlYW0ucG9zKCktciksMTYpO2kmJmUucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKGkpKX1jYXRjaHt9cmV0dXJuIG49PT1JaXx8bj09PUFpP3RoaXMuc3RyZWFtLmFkdmFuY2UoMSk6dGhpcy5fbmV3bGluZShbXSksITB9aWYobiE9PUd0JiZuIT09eG4mJm4hPT1IdClyZXR1cm4gdGhpcy5zdHJlYW0uYWR2YW5jZSgxKSxlLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShuKSksITA7aWYodClyZXR1cm4gdGhpcy5fbmV3bGluZShlKX1yZXR1cm4hMX1fc3RyaW5nQ2hhcihlLHQpe2NvbnN0IG49dGhpcy5zdHJlYW0ucGVla0NoYXIoKTtyZXR1cm4gbiE9PTAmJm4hPT1lJiZuIT09RGkmJm4hPT1HdCYmbiE9PXhuJiZuIT09SHQ/KHRoaXMuc3RyZWFtLmFkdmFuY2UoMSksdC5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUobikpLCEwKTohMX1fc3RyaW5nKGUpe2lmKHRoaXMuc3RyZWFtLnBlZWtDaGFyKCk9PT1mbHx8dGhpcy5zdHJlYW0ucGVla0NoYXIoKT09PW1sKXtjb25zdCB0PXRoaXMuc3RyZWFtLm5leHRDaGFyKCk7Zm9yKGUucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKHQpKTt0aGlzLl9zdHJpbmdDaGFyKHQsZSl8fHRoaXMuX2VzY2FwZShlLCEwKTspO3JldHVybiB0aGlzLnN0cmVhbS5wZWVrQ2hhcigpPT09dD8odGhpcy5zdHJlYW0ubmV4dENoYXIoKSxlLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZSh0KSkscC5TdHJpbmcpOnAuQmFkU3RyaW5nfXJldHVybiBudWxsfV91bnF1b3RlZENoYXIoZSl7Y29uc3QgdD10aGlzLnN0cmVhbS5wZWVrQ2hhcigpO3JldHVybiB0IT09MCYmdCE9PURpJiZ0IT09ZmwmJnQhPT1tbCYmdCE9PWRsJiZ0IT09dWwmJnQhPT1JaSYmdCE9PUFpJiZ0IT09SHQmJnQhPT14biYmdCE9PUd0Pyh0aGlzLnN0cmVhbS5hZHZhbmNlKDEpLGUucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKHQpKSwhMCk6ITF9X3VucXVvdGVkU3RyaW5nKGUpe2xldCB0PSExO2Zvcig7dGhpcy5fdW5xdW90ZWRDaGFyKGUpfHx0aGlzLl9lc2NhcGUoZSk7KXQ9ITA7cmV0dXJuIHR9X3doaXRlc3BhY2UoKXtyZXR1cm4gdGhpcy5zdHJlYW0uYWR2YW5jZVdoaWxlQ2hhcih0PT50PT09SWl8fHQ9PT1BaXx8dD09PUh0fHx0PT09eG58fHQ9PT1HdCk+MH1fbmFtZShlKXtsZXQgdD0hMTtmb3IoO3RoaXMuX2lkZW50Q2hhcihlKXx8dGhpcy5fZXNjYXBlKGUpOyl0PSEwO3JldHVybiB0fWlkZW50KGUpe2NvbnN0IHQ9dGhpcy5zdHJlYW0ucG9zKCk7aWYodGhpcy5fbWludXMoZSkpe2lmKHRoaXMuX21pbnVzKGUpfHx0aGlzLl9pZGVudEZpcnN0Q2hhcihlKXx8dGhpcy5fZXNjYXBlKGUpKXtmb3IoO3RoaXMuX2lkZW50Q2hhcihlKXx8dGhpcy5fZXNjYXBlKGUpOyk7cmV0dXJuITB9fWVsc2UgaWYodGhpcy5faWRlbnRGaXJzdENoYXIoZSl8fHRoaXMuX2VzY2FwZShlKSl7Zm9yKDt0aGlzLl9pZGVudENoYXIoZSl8fHRoaXMuX2VzY2FwZShlKTspO3JldHVybiEwfXJldHVybiB0aGlzLnN0cmVhbS5nb0JhY2tUbyh0KSwhMX1faWRlbnRGaXJzdENoYXIoZSl7Y29uc3QgdD10aGlzLnN0cmVhbS5wZWVrQ2hhcigpO3JldHVybiB0PT09aGx8fHQ+PWFyJiZ0PD1vbHx8dD49b3ImJnQ8PWNsfHx0Pj0xMjgmJnQ8PTY1NTM1Pyh0aGlzLnN0cmVhbS5hZHZhbmNlKDEpLGUucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKHQpKSwhMCk6ITF9X21pbnVzKGUpe2NvbnN0IHQ9dGhpcy5zdHJlYW0ucGVla0NoYXIoKTtyZXR1cm4gdD09PWt0Pyh0aGlzLnN0cmVhbS5hZHZhbmNlKDEpLGUucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKHQpKSwhMCk6ITF9X2lkZW50Q2hhcihlKXtjb25zdCB0PXRoaXMuc3RyZWFtLnBlZWtDaGFyKCk7cmV0dXJuIHQ9PT1obHx8dD09PWt0fHx0Pj1hciYmdDw9b2x8fHQ+PW9yJiZ0PD1jbHx8dD49dm4mJnQ8PXdufHx0Pj0xMjgmJnQ8PTY1NTM1Pyh0aGlzLnN0cmVhbS5hZHZhbmNlKDEpLGUucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKHQpKSwhMCk6ITF9X3VuaWNvZGVSYW5nZSgpe2lmKHRoaXMuc3RyZWFtLmFkdmFuY2VJZkNoYXIodnApKXtjb25zdCBlPW49Pm4+PXZuJiZuPD13bnx8bj49YXImJm48PWFsfHxuPj1vciYmbjw9bGwsdD10aGlzLnN0cmVhbS5hZHZhbmNlV2hpbGVDaGFyKGUpK3RoaXMuc3RyZWFtLmFkdmFuY2VXaGlsZUNoYXIobj0+bj09PWJwKTtpZih0Pj0xJiZ0PD02KWlmKHRoaXMuc3RyZWFtLmFkdmFuY2VJZkNoYXIoa3QpKXtjb25zdCBuPXRoaXMuc3RyZWFtLmFkdmFuY2VXaGlsZUNoYXIoZSk7aWYobj49MSYmbjw9NilyZXR1cm4hMH1lbHNlIHJldHVybiEwfXJldHVybiExfX07ZnVuY3Rpb24gcGUoZSx0KXtpZihlLmxlbmd0aDx0Lmxlbmd0aClyZXR1cm4hMTtmb3IobGV0IG49MDtuPHQubGVuZ3RoO24rKylpZihlW25dIT09dFtuXSlyZXR1cm4hMTtyZXR1cm4hMH1mdW5jdGlvbiB2bChlLHQpe2xldCBuPWUubGVuZ3RoLXQubGVuZ3RoO3JldHVybiBuPjA/ZS5sYXN0SW5kZXhPZih0KT09PW46bj09PTA/ZT09PXQ6ITF9ZnVuY3Rpb24gd3AoZSx0LG49NCl7bGV0IHI9TWF0aC5hYnMoZS5sZW5ndGgtdC5sZW5ndGgpO2lmKHI+bilyZXR1cm4gMDtsZXQgaT1bXSxzPVtdLGEsbDtmb3IoYT0wO2E8dC5sZW5ndGgrMTsrK2Epcy5wdXNoKDApO2ZvcihhPTA7YTxlLmxlbmd0aCsxOysrYSlpLnB1c2gocyk7Zm9yKGE9MTthPGUubGVuZ3RoKzE7KythKWZvcihsPTE7bDx0Lmxlbmd0aCsxOysrbCllW2EtMV09PT10W2wtMV0/aVthXVtsXT1pW2EtMV1bbC0xXSsxOmlbYV1bbF09TWF0aC5tYXgoaVthLTFdW2xdLGlbYV1bbC0xXSk7cmV0dXJuIGlbZS5sZW5ndGhdW3QubGVuZ3RoXS1NYXRoLnNxcnQocil9ZnVuY3Rpb24gd2woZSx0PSEwKXtyZXR1cm4gZT9lLmxlbmd0aDwxNDA/ZTplLnNsaWNlKDAsMTQwKSsodD8i4oCmIjoiIik6IiJ9ZnVuY3Rpb24geXAoZSx0KXtjb25zdCBuPXQuZXhlYyhlKTtyZXR1cm4gbiYmblswXS5sZW5ndGg/ZS5zdWJzdHIoMCxlLmxlbmd0aC1uWzBdLmxlbmd0aCk6ZX1mdW5jdGlvbiB5bChlLHQpe2xldCBuPSIiO2Zvcig7dD4wOykodCYxKT09PTEmJihuKz1lKSxlKz1lLHQ9dD4+PjE7cmV0dXJuIG59dmFyIGI7KGZ1bmN0aW9uKGUpe2VbZS5VbmRlZmluZWQ9MF09IlVuZGVmaW5lZCIsZVtlLklkZW50aWZpZXI9MV09IklkZW50aWZpZXIiLGVbZS5TdHlsZXNoZWV0PTJdPSJTdHlsZXNoZWV0IixlW2UuUnVsZXNldD0zXT0iUnVsZXNldCIsZVtlLlNlbGVjdG9yPTRdPSJTZWxlY3RvciIsZVtlLlNpbXBsZVNlbGVjdG9yPTVdPSJTaW1wbGVTZWxlY3RvciIsZVtlLlNlbGVjdG9ySW50ZXJwb2xhdGlvbj02XT0iU2VsZWN0b3JJbnRlcnBvbGF0aW9uIixlW2UuU2VsZWN0b3JDb21iaW5hdG9yPTddPSJTZWxlY3RvckNvbWJpbmF0b3IiLGVbZS5TZWxlY3RvckNvbWJpbmF0b3JQYXJlbnQ9OF09IlNlbGVjdG9yQ29tYmluYXRvclBhcmVudCIsZVtlLlNlbGVjdG9yQ29tYmluYXRvclNpYmxpbmc9OV09IlNlbGVjdG9yQ29tYmluYXRvclNpYmxpbmciLGVbZS5TZWxlY3RvckNvbWJpbmF0b3JBbGxTaWJsaW5ncz0xMF09IlNlbGVjdG9yQ29tYmluYXRvckFsbFNpYmxpbmdzIixlW2UuU2VsZWN0b3JDb21iaW5hdG9yU2hhZG93UGllcmNpbmdEZXNjZW5kYW50PTExXT0iU2VsZWN0b3JDb21iaW5hdG9yU2hhZG93UGllcmNpbmdEZXNjZW5kYW50IixlW2UuUGFnZT0xMl09IlBhZ2UiLGVbZS5QYWdlQm94TWFyZ2luQm94PTEzXT0iUGFnZUJveE1hcmdpbkJveCIsZVtlLkNsYXNzU2VsZWN0b3I9MTRdPSJDbGFzc1NlbGVjdG9yIixlW2UuSWRlbnRpZmllclNlbGVjdG9yPTE1XT0iSWRlbnRpZmllclNlbGVjdG9yIixlW2UuRWxlbWVudE5hbWVTZWxlY3Rvcj0xNl09IkVsZW1lbnROYW1lU2VsZWN0b3IiLGVbZS5Qc2V1ZG9TZWxlY3Rvcj0xN109IlBzZXVkb1NlbGVjdG9yIixlW2UuQXR0cmlidXRlU2VsZWN0b3I9MThdPSJBdHRyaWJ1dGVTZWxlY3RvciIsZVtlLkRlY2xhcmF0aW9uPTE5XT0iRGVjbGFyYXRpb24iLGVbZS5EZWNsYXJhdGlvbnM9MjBdPSJEZWNsYXJhdGlvbnMiLGVbZS5Qcm9wZXJ0eT0yMV09IlByb3BlcnR5IixlW2UuRXhwcmVzc2lvbj0yMl09IkV4cHJlc3Npb24iLGVbZS5CaW5hcnlFeHByZXNzaW9uPTIzXT0iQmluYXJ5RXhwcmVzc2lvbiIsZVtlLlRlcm09MjRdPSJUZXJtIixlW2UuT3BlcmF0b3I9MjVdPSJPcGVyYXRvciIsZVtlLlZhbHVlPTI2XT0iVmFsdWUiLGVbZS5TdHJpbmdMaXRlcmFsPTI3XT0iU3RyaW5nTGl0ZXJhbCIsZVtlLlVSSUxpdGVyYWw9MjhdPSJVUklMaXRlcmFsIixlW2UuRXNjYXBlZFZhbHVlPTI5XT0iRXNjYXBlZFZhbHVlIixlW2UuRnVuY3Rpb249MzBdPSJGdW5jdGlvbiIsZVtlLk51bWVyaWNWYWx1ZT0zMV09Ik51bWVyaWNWYWx1ZSIsZVtlLkhleENvbG9yVmFsdWU9MzJdPSJIZXhDb2xvclZhbHVlIixlW2UuUmF0aW9WYWx1ZT0zM109IlJhdGlvVmFsdWUiLGVbZS5NaXhpbkRlY2xhcmF0aW9uPTM0XT0iTWl4aW5EZWNsYXJhdGlvbiIsZVtlLk1peGluUmVmZXJlbmNlPTM1XT0iTWl4aW5SZWZlcmVuY2UiLGVbZS5WYXJpYWJsZU5hbWU9MzZdPSJWYXJpYWJsZU5hbWUiLGVbZS5WYXJpYWJsZURlY2xhcmF0aW9uPTM3XT0iVmFyaWFibGVEZWNsYXJhdGlvbiIsZVtlLlByaW89MzhdPSJQcmlvIixlW2UuSW50ZXJwb2xhdGlvbj0zOV09IkludGVycG9sYXRpb24iLGVbZS5OZXN0ZWRQcm9wZXJ0aWVzPTQwXT0iTmVzdGVkUHJvcGVydGllcyIsZVtlLkV4dGVuZHNSZWZlcmVuY2U9NDFdPSJFeHRlbmRzUmVmZXJlbmNlIixlW2UuU2VsZWN0b3JQbGFjZWhvbGRlcj00Ml09IlNlbGVjdG9yUGxhY2Vob2xkZXIiLGVbZS5EZWJ1Zz00M109IkRlYnVnIixlW2UuSWY9NDRdPSJJZiIsZVtlLkVsc2U9NDVdPSJFbHNlIixlW2UuRm9yPTQ2XT0iRm9yIixlW2UuRWFjaD00N109IkVhY2giLGVbZS5XaGlsZT00OF09IldoaWxlIixlW2UuTWl4aW5Db250ZW50UmVmZXJlbmNlPTQ5XT0iTWl4aW5Db250ZW50UmVmZXJlbmNlIixlW2UuTWl4aW5Db250ZW50RGVjbGFyYXRpb249NTBdPSJNaXhpbkNvbnRlbnREZWNsYXJhdGlvbiIsZVtlLk1lZGlhPTUxXT0iTWVkaWEiLGVbZS5LZXlmcmFtZT01Ml09IktleWZyYW1lIixlW2UuRm9udEZhY2U9NTNdPSJGb250RmFjZSIsZVtlLkltcG9ydD01NF09IkltcG9ydCIsZVtlLk5hbWVzcGFjZT01NV09Ik5hbWVzcGFjZSIsZVtlLkludm9jYXRpb249NTZdPSJJbnZvY2F0aW9uIixlW2UuRnVuY3Rpb25EZWNsYXJhdGlvbj01N109IkZ1bmN0aW9uRGVjbGFyYXRpb24iLGVbZS5SZXR1cm5TdGF0ZW1lbnQ9NThdPSJSZXR1cm5TdGF0ZW1lbnQiLGVbZS5NZWRpYVF1ZXJ5PTU5XT0iTWVkaWFRdWVyeSIsZVtlLk1lZGlhQ29uZGl0aW9uPTYwXT0iTWVkaWFDb25kaXRpb24iLGVbZS5NZWRpYUZlYXR1cmU9NjFdPSJNZWRpYUZlYXR1cmUiLGVbZS5GdW5jdGlvblBhcmFtZXRlcj02Ml09IkZ1bmN0aW9uUGFyYW1ldGVyIixlW2UuRnVuY3Rpb25Bcmd1bWVudD02M109IkZ1bmN0aW9uQXJndW1lbnQiLGVbZS5LZXlmcmFtZVNlbGVjdG9yPTY0XT0iS2V5ZnJhbWVTZWxlY3RvciIsZVtlLlZpZXdQb3J0PTY1XT0iVmlld1BvcnQiLGVbZS5Eb2N1bWVudD02Nl09IkRvY3VtZW50IixlW2UuQXRBcHBseVJ1bGU9NjddPSJBdEFwcGx5UnVsZSIsZVtlLkN1c3RvbVByb3BlcnR5RGVjbGFyYXRpb249NjhdPSJDdXN0b21Qcm9wZXJ0eURlY2xhcmF0aW9uIixlW2UuQ3VzdG9tUHJvcGVydHlTZXQ9NjldPSJDdXN0b21Qcm9wZXJ0eVNldCIsZVtlLkxpc3RFbnRyeT03MF09Ikxpc3RFbnRyeSIsZVtlLlN1cHBvcnRzPTcxXT0iU3VwcG9ydHMiLGVbZS5TdXBwb3J0c0NvbmRpdGlvbj03Ml09IlN1cHBvcnRzQ29uZGl0aW9uIixlW2UuTmFtZXNwYWNlUHJlZml4PTczXT0iTmFtZXNwYWNlUHJlZml4IixlW2UuR3JpZExpbmU9NzRdPSJHcmlkTGluZSIsZVtlLlBsdWdpbj03NV09IlBsdWdpbiIsZVtlLlVua25vd25BdFJ1bGU9NzZdPSJVbmtub3duQXRSdWxlIixlW2UuVXNlPTc3XT0iVXNlIixlW2UuTW9kdWxlQ29uZmlndXJhdGlvbj03OF09Ik1vZHVsZUNvbmZpZ3VyYXRpb24iLGVbZS5Gb3J3YXJkPTc5XT0iRm9yd2FyZCIsZVtlLkZvcndhcmRWaXNpYmlsaXR5PTgwXT0iRm9yd2FyZFZpc2liaWxpdHkiLGVbZS5Nb2R1bGU9ODFdPSJNb2R1bGUiLGVbZS5Vbmljb2RlUmFuZ2U9ODJdPSJVbmljb2RlUmFuZ2UiLGVbZS5MYXllcj04M109IkxheWVyIixlW2UuTGF5ZXJOYW1lTGlzdD04NF09IkxheWVyTmFtZUxpc3QiLGVbZS5MYXllck5hbWU9ODVdPSJMYXllck5hbWUiLGVbZS5Qcm9wZXJ0eUF0UnVsZT04Nl09IlByb3BlcnR5QXRSdWxlIixlW2UuQ29udGFpbmVyPTg3XT0iQ29udGFpbmVyIn0pKGJ8fChiPXt9KSk7dmFyIEo7KGZ1bmN0aW9uKGUpe2VbZS5NaXhpbj0wXT0iTWl4aW4iLGVbZS5SdWxlPTFdPSJSdWxlIixlW2UuVmFyaWFibGU9Ml09IlZhcmlhYmxlIixlW2UuRnVuY3Rpb249M109IkZ1bmN0aW9uIixlW2UuS2V5ZnJhbWU9NF09IktleWZyYW1lIixlW2UuVW5rbm93bj01XT0iVW5rbm93biIsZVtlLk1vZHVsZT02XT0iTW9kdWxlIixlW2UuRm9yd2FyZD03XT0iRm9yd2FyZCIsZVtlLkZvcndhcmRWaXNpYmlsaXR5PThdPSJGb3J3YXJkVmlzaWJpbGl0eSIsZVtlLlByb3BlcnR5PTldPSJQcm9wZXJ0eSJ9KShKfHwoSj17fSkpO2Z1bmN0aW9uIE1pKGUsdCl7bGV0IG49bnVsbDtyZXR1cm4hZXx8dDxlLm9mZnNldHx8dD5lLmVuZD9udWxsOihlLmFjY2VwdChyPT5yLm9mZnNldD09PS0xJiZyLmxlbmd0aD09PS0xPyEwOnIub2Zmc2V0PD10JiZyLmVuZD49dD8obj9yLmxlbmd0aDw9bi5sZW5ndGgmJihuPXIpOm49ciwhMCk6ITEpLG4pfWZ1bmN0aW9uIExpKGUsdCl7bGV0IG49TWkoZSx0KTtjb25zdCByPVtdO2Zvcig7bjspci51bnNoaWZ0KG4pLG49bi5wYXJlbnQ7cmV0dXJuIHJ9ZnVuY3Rpb24geHAoZSl7Y29uc3QgdD1lLmZpbmRQYXJlbnQoYi5EZWNsYXJhdGlvbiksbj10JiZ0LmdldFZhbHVlKCk7cmV0dXJuIG4mJm4uZW5jbG9zZXMoZSk/dDpudWxsfXZhciBPPWNsYXNze2dldCBlbmQoKXtyZXR1cm4gdGhpcy5vZmZzZXQrdGhpcy5sZW5ndGh9Y29uc3RydWN0b3IoZT0tMSx0PS0xLG4pe3RoaXMucGFyZW50PW51bGwsdGhpcy5vZmZzZXQ9ZSx0aGlzLmxlbmd0aD10LG4mJih0aGlzLm5vZGVUeXBlPW4pfXNldCB0eXBlKGUpe3RoaXMubm9kZVR5cGU9ZX1nZXQgdHlwZSgpe3JldHVybiB0aGlzLm5vZGVUeXBlfHxiLlVuZGVmaW5lZH1nZXRUZXh0UHJvdmlkZXIoKXtsZXQgZT10aGlzO2Zvcig7ZSYmIWUudGV4dFByb3ZpZGVyOyllPWUucGFyZW50O3JldHVybiBlP2UudGV4dFByb3ZpZGVyOigpPT4idW5rbm93biJ9Z2V0VGV4dCgpe3JldHVybiB0aGlzLmdldFRleHRQcm92aWRlcigpKHRoaXMub2Zmc2V0LHRoaXMubGVuZ3RoKX1tYXRjaGVzKGUpe3JldHVybiB0aGlzLmxlbmd0aD09PWUubGVuZ3RoJiZ0aGlzLmdldFRleHRQcm92aWRlcigpKHRoaXMub2Zmc2V0LHRoaXMubGVuZ3RoKT09PWV9c3RhcnRzV2l0aChlKXtyZXR1cm4gdGhpcy5sZW5ndGg+PWUubGVuZ3RoJiZ0aGlzLmdldFRleHRQcm92aWRlcigpKHRoaXMub2Zmc2V0LGUubGVuZ3RoKT09PWV9ZW5kc1dpdGgoZSl7cmV0dXJuIHRoaXMubGVuZ3RoPj1lLmxlbmd0aCYmdGhpcy5nZXRUZXh0UHJvdmlkZXIoKSh0aGlzLmVuZC1lLmxlbmd0aCxlLmxlbmd0aCk9PT1lfWFjY2VwdChlKXtpZihlKHRoaXMpJiZ0aGlzLmNoaWxkcmVuKWZvcihjb25zdCB0IG9mIHRoaXMuY2hpbGRyZW4pdC5hY2NlcHQoZSl9YWNjZXB0VmlzaXRvcihlKXt0aGlzLmFjY2VwdChlLnZpc2l0Tm9kZS5iaW5kKGUpKX1hZG9wdENoaWxkKGUsdD0tMSl7aWYoZS5wYXJlbnQmJmUucGFyZW50LmNoaWxkcmVuKXtjb25zdCByPWUucGFyZW50LmNoaWxkcmVuLmluZGV4T2YoZSk7cj49MCYmZS5wYXJlbnQuY2hpbGRyZW4uc3BsaWNlKHIsMSl9ZS5wYXJlbnQ9dGhpcztsZXQgbj10aGlzLmNoaWxkcmVuO3JldHVybiBufHwobj10aGlzLmNoaWxkcmVuPVtdKSx0IT09LTE/bi5zcGxpY2UodCwwLGUpOm4ucHVzaChlKSxlfWF0dGFjaFRvKGUsdD0tMSl7cmV0dXJuIGUmJmUuYWRvcHRDaGlsZCh0aGlzLHQpLHRoaXN9Y29sbGVjdElzc3VlcyhlKXt0aGlzLmlzc3VlcyYmZS5wdXNoLmFwcGx5KGUsdGhpcy5pc3N1ZXMpfWFkZElzc3VlKGUpe3RoaXMuaXNzdWVzfHwodGhpcy5pc3N1ZXM9W10pLHRoaXMuaXNzdWVzLnB1c2goZSl9aGFzSXNzdWUoZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkodGhpcy5pc3N1ZXMpJiZ0aGlzLmlzc3Vlcy5zb21lKHQ9PnQuZ2V0UnVsZSgpPT09ZSl9aXNFcnJvbmVvdXMoZT0hMSl7cmV0dXJuIHRoaXMuaXNzdWVzJiZ0aGlzLmlzc3Vlcy5sZW5ndGg+MD8hMDplJiZBcnJheS5pc0FycmF5KHRoaXMuY2hpbGRyZW4pJiZ0aGlzLmNoaWxkcmVuLnNvbWUodD0+dC5pc0Vycm9uZW91cyghMCkpfXNldE5vZGUoZSx0LG49LTEpe3JldHVybiB0Pyh0LmF0dGFjaFRvKHRoaXMsbiksdGhpc1tlXT10LCEwKTohMX1hZGRDaGlsZChlKXtyZXR1cm4gZT8odGhpcy5jaGlsZHJlbnx8KHRoaXMuY2hpbGRyZW49W10pLGUuYXR0YWNoVG8odGhpcyksdGhpcy51cGRhdGVPZmZzZXRBbmRMZW5ndGgoZSksITApOiExfXVwZGF0ZU9mZnNldEFuZExlbmd0aChlKXsoZS5vZmZzZXQ8dGhpcy5vZmZzZXR8fHRoaXMub2Zmc2V0PT09LTEpJiYodGhpcy5vZmZzZXQ9ZS5vZmZzZXQpO2NvbnN0IHQ9ZS5lbmQ7KHQ+dGhpcy5lbmR8fHRoaXMubGVuZ3RoPT09LTEpJiYodGhpcy5sZW5ndGg9dC10aGlzLm9mZnNldCl9aGFzQ2hpbGRyZW4oKXtyZXR1cm4hIXRoaXMuY2hpbGRyZW4mJnRoaXMuY2hpbGRyZW4ubGVuZ3RoPjB9Z2V0Q2hpbGRyZW4oKXtyZXR1cm4gdGhpcy5jaGlsZHJlbj90aGlzLmNoaWxkcmVuLnNsaWNlKDApOltdfWdldENoaWxkKGUpe3JldHVybiB0aGlzLmNoaWxkcmVuJiZlPHRoaXMuY2hpbGRyZW4ubGVuZ3RoP3RoaXMuY2hpbGRyZW5bZV06bnVsbH1hZGRDaGlsZHJlbihlKXtmb3IoY29uc3QgdCBvZiBlKXRoaXMuYWRkQ2hpbGQodCl9ZmluZEZpcnN0Q2hpbGRCZWZvcmVPZmZzZXQoZSl7aWYodGhpcy5jaGlsZHJlbil7bGV0IHQ9bnVsbDtmb3IobGV0IG49dGhpcy5jaGlsZHJlbi5sZW5ndGgtMTtuPj0wO24tLSlpZih0PXRoaXMuY2hpbGRyZW5bbl0sdC5vZmZzZXQ8PWUpcmV0dXJuIHR9cmV0dXJuIG51bGx9ZmluZENoaWxkQXRPZmZzZXQoZSx0KXtjb25zdCBuPXRoaXMuZmluZEZpcnN0Q2hpbGRCZWZvcmVPZmZzZXQoZSk7cmV0dXJuIG4mJm4uZW5kPj1lP3QmJm4uZmluZENoaWxkQXRPZmZzZXQoZSwhMCl8fG46bnVsbH1lbmNsb3NlcyhlKXtyZXR1cm4gdGhpcy5vZmZzZXQ8PWUub2Zmc2V0JiZ0aGlzLm9mZnNldCt0aGlzLmxlbmd0aD49ZS5vZmZzZXQrZS5sZW5ndGh9Z2V0UGFyZW50KCl7bGV0IGU9dGhpcy5wYXJlbnQ7Zm9yKDtlIGluc3RhbmNlb2YgeWU7KWU9ZS5wYXJlbnQ7cmV0dXJuIGV9ZmluZFBhcmVudChlKXtsZXQgdD10aGlzO2Zvcig7dCYmdC50eXBlIT09ZTspdD10LnBhcmVudDtyZXR1cm4gdH1maW5kQVBhcmVudCguLi5lKXtsZXQgdD10aGlzO2Zvcig7dCYmIWUuc29tZShuPT50LnR5cGU9PT1uKTspdD10LnBhcmVudDtyZXR1cm4gdH1zZXREYXRhKGUsdCl7dGhpcy5vcHRpb25zfHwodGhpcy5vcHRpb25zPXt9KSx0aGlzLm9wdGlvbnNbZV09dH1nZXREYXRhKGUpe3JldHVybiF0aGlzLm9wdGlvbnN8fCF0aGlzLm9wdGlvbnMuaGFzT3duUHJvcGVydHkoZSk/bnVsbDp0aGlzLm9wdGlvbnNbZV19fSx5ZT1jbGFzcyBleHRlbmRzIE97Y29uc3RydWN0b3IoZSx0PS0xKXtzdXBlcigtMSwtMSksdGhpcy5hdHRhY2hUbyhlLHQpLHRoaXMub2Zmc2V0PS0xLHRoaXMubGVuZ3RoPS0xfX0sU3A9Y2xhc3MgZXh0ZW5kcyBPe2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoZSx0KX1nZXQgdHlwZSgpe3JldHVybiBiLlVuaWNvZGVSYW5nZX1zZXRSYW5nZVN0YXJ0KGUpe3JldHVybiB0aGlzLnNldE5vZGUoInJhbmdlU3RhcnQiLGUpfWdldFJhbmdlU3RhcnQoKXtyZXR1cm4gdGhpcy5yYW5nZVN0YXJ0fXNldFJhbmdlRW5kKGUpe3JldHVybiB0aGlzLnNldE5vZGUoInJhbmdlRW5kIixlKX1nZXRSYW5nZUVuZCgpe3JldHVybiB0aGlzLnJhbmdlRW5kfX0sTWU9Y2xhc3MgZXh0ZW5kcyBPe2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoZSx0KSx0aGlzLmlzQ3VzdG9tUHJvcGVydHk9ITF9Z2V0IHR5cGUoKXtyZXR1cm4gYi5JZGVudGlmaWVyfWNvbnRhaW5zSW50ZXJwb2xhdGlvbigpe3JldHVybiB0aGlzLmhhc0NoaWxkcmVuKCl9fSxDcD1jbGFzcyBleHRlbmRzIE97Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLHQpfWdldCB0eXBlKCl7cmV0dXJuIGIuU3R5bGVzaGVldH19LHppPWNsYXNzIGV4dGVuZHMgT3tjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsdCl9Z2V0IHR5cGUoKXtyZXR1cm4gYi5EZWNsYXJhdGlvbnN9fSxzZT1jbGFzcyBleHRlbmRzIE97Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLHQpfWdldERlY2xhcmF0aW9ucygpe3JldHVybiB0aGlzLmRlY2xhcmF0aW9uc31zZXREZWNsYXJhdGlvbnMoZSl7cmV0dXJuIHRoaXMuc2V0Tm9kZSgiZGVjbGFyYXRpb25zIixlKX19LEV0PWNsYXNzIGV4dGVuZHMgc2V7Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLHQpfWdldCB0eXBlKCl7cmV0dXJuIGIuUnVsZXNldH1nZXRTZWxlY3RvcnMoKXtyZXR1cm4gdGhpcy5zZWxlY3RvcnN8fCh0aGlzLnNlbGVjdG9ycz1uZXcgeWUodGhpcykpLHRoaXMuc2VsZWN0b3JzfWlzTmVzdGVkKCl7cmV0dXJuISF0aGlzLnBhcmVudCYmdGhpcy5wYXJlbnQuZmluZFBhcmVudChiLkRlY2xhcmF0aW9ucykhPT1udWxsfX0sQ249Y2xhc3MgZXh0ZW5kcyBPe2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoZSx0KX1nZXQgdHlwZSgpe3JldHVybiBiLlNlbGVjdG9yfX0sSnQ9Y2xhc3MgZXh0ZW5kcyBPe2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoZSx0KX1nZXQgdHlwZSgpe3JldHVybiBiLlNpbXBsZVNlbGVjdG9yfX0sUGk9Y2xhc3MgZXh0ZW5kcyBPe2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoZSx0KX19LF9wPWNsYXNzIGV4dGVuZHMgc2V7Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLHQpfWdldCB0eXBlKCl7cmV0dXJuIGIuQ3VzdG9tUHJvcGVydHlTZXR9fSxxZT1jbGFzcyB3aCBleHRlbmRzIFBpe2NvbnN0cnVjdG9yKHQsbil7c3VwZXIodCxuKSx0aGlzLnByb3BlcnR5PW51bGx9Z2V0IHR5cGUoKXtyZXR1cm4gYi5EZWNsYXJhdGlvbn1zZXRQcm9wZXJ0eSh0KXtyZXR1cm4gdGhpcy5zZXROb2RlKCJwcm9wZXJ0eSIsdCl9Z2V0UHJvcGVydHkoKXtyZXR1cm4gdGhpcy5wcm9wZXJ0eX1nZXRGdWxsUHJvcGVydHlOYW1lKCl7Y29uc3QgdD10aGlzLnByb3BlcnR5P3RoaXMucHJvcGVydHkuZ2V0TmFtZSgpOiJ1bmtub3duIjtpZih0aGlzLnBhcmVudCBpbnN0YW5jZW9mIHppJiZ0aGlzLnBhcmVudC5nZXRQYXJlbnQoKWluc3RhbmNlb2YgU2wpe2NvbnN0IG49dGhpcy5wYXJlbnQuZ2V0UGFyZW50KCkuZ2V0UGFyZW50KCk7aWYobiBpbnN0YW5jZW9mIHdoKXJldHVybiBuLmdldEZ1bGxQcm9wZXJ0eU5hbWUoKSt0fXJldHVybiB0fWdldE5vblByZWZpeGVkUHJvcGVydHlOYW1lKCl7Y29uc3QgdD10aGlzLmdldEZ1bGxQcm9wZXJ0eU5hbWUoKTtpZih0JiZ0LmNoYXJBdCgwKT09PSItIil7Y29uc3Qgbj10LmluZGV4T2YoIi0iLDEpO2lmKG4hPT0tMSlyZXR1cm4gdC5zdWJzdHJpbmcobisxKX1yZXR1cm4gdH1zZXRWYWx1ZSh0KXtyZXR1cm4gdGhpcy5zZXROb2RlKCJ2YWx1ZSIsdCl9Z2V0VmFsdWUoKXtyZXR1cm4gdGhpcy52YWx1ZX1zZXROZXN0ZWRQcm9wZXJ0aWVzKHQpe3JldHVybiB0aGlzLnNldE5vZGUoIm5lc3RlZFByb3BlcnRpZXMiLHQpfWdldE5lc3RlZFByb3BlcnRpZXMoKXtyZXR1cm4gdGhpcy5uZXN0ZWRQcm9wZXJ0aWVzfX0sa3A9Y2xhc3MgZXh0ZW5kcyBxZXtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsdCl9Z2V0IHR5cGUoKXtyZXR1cm4gYi5DdXN0b21Qcm9wZXJ0eURlY2xhcmF0aW9ufXNldFByb3BlcnR5U2V0KGUpe3JldHVybiB0aGlzLnNldE5vZGUoInByb3BlcnR5U2V0IixlKX1nZXRQcm9wZXJ0eVNldCgpe3JldHVybiB0aGlzLnByb3BlcnR5U2V0fX0sVGk9Y2xhc3MgZXh0ZW5kcyBPe2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoZSx0KX1nZXQgdHlwZSgpe3JldHVybiBiLlByb3BlcnR5fXNldElkZW50aWZpZXIoZSl7cmV0dXJuIHRoaXMuc2V0Tm9kZSgiaWRlbnRpZmllciIsZSl9Z2V0SWRlbnRpZmllcigpe3JldHVybiB0aGlzLmlkZW50aWZpZXJ9Z2V0TmFtZSgpe3JldHVybiB5cCh0aGlzLmdldFRleHQoKSwvW19cK10rJC8pfWlzQ3VzdG9tUHJvcGVydHkoKXtyZXR1cm4hIXRoaXMuaWRlbnRpZmllciYmdGhpcy5pZGVudGlmaWVyLmlzQ3VzdG9tUHJvcGVydHl9fSxFcD1jbGFzcyBleHRlbmRzIE97Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLHQpfWdldCB0eXBlKCl7cmV0dXJuIGIuSW52b2NhdGlvbn1nZXRBcmd1bWVudHMoKXtyZXR1cm4gdGhpcy5hcmd1bWVudHN8fCh0aGlzLmFyZ3VtZW50cz1uZXcgeWUodGhpcykpLHRoaXMuYXJndW1lbnRzfX0sX249Y2xhc3MgZXh0ZW5kcyBFcHtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsdCl9Z2V0IHR5cGUoKXtyZXR1cm4gYi5GdW5jdGlvbn1zZXRJZGVudGlmaWVyKGUpe3JldHVybiB0aGlzLnNldE5vZGUoImlkZW50aWZpZXIiLGUsMCl9Z2V0SWRlbnRpZmllcigpe3JldHVybiB0aGlzLmlkZW50aWZpZXJ9Z2V0TmFtZSgpe3JldHVybiB0aGlzLmlkZW50aWZpZXI/dGhpcy5pZGVudGlmaWVyLmdldFRleHQoKToiIn19LGxyPWNsYXNzIGV4dGVuZHMgT3tjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsdCl9Z2V0IHR5cGUoKXtyZXR1cm4gYi5GdW5jdGlvblBhcmFtZXRlcn1zZXRJZGVudGlmaWVyKGUpe3JldHVybiB0aGlzLnNldE5vZGUoImlkZW50aWZpZXIiLGUsMCl9Z2V0SWRlbnRpZmllcigpe3JldHVybiB0aGlzLmlkZW50aWZpZXJ9Z2V0TmFtZSgpe3JldHVybiB0aGlzLmlkZW50aWZpZXI/dGhpcy5pZGVudGlmaWVyLmdldFRleHQoKToiIn1zZXREZWZhdWx0VmFsdWUoZSl7cmV0dXJuIHRoaXMuc2V0Tm9kZSgiZGVmYXVsdFZhbHVlIixlLDApfWdldERlZmF1bHRWYWx1ZSgpe3JldHVybiB0aGlzLmRlZmF1bHRWYWx1ZX19LFh0PWNsYXNzIGV4dGVuZHMgT3tjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsdCl9Z2V0IHR5cGUoKXtyZXR1cm4gYi5GdW5jdGlvbkFyZ3VtZW50fXNldElkZW50aWZpZXIoZSl7cmV0dXJuIHRoaXMuc2V0Tm9kZSgiaWRlbnRpZmllciIsZSwwKX1nZXRJZGVudGlmaWVyKCl7cmV0dXJuIHRoaXMuaWRlbnRpZmllcn1nZXROYW1lKCl7cmV0dXJuIHRoaXMuaWRlbnRpZmllcj90aGlzLmlkZW50aWZpZXIuZ2V0VGV4dCgpOiIifXNldFZhbHVlKGUpe3JldHVybiB0aGlzLnNldE5vZGUoInZhbHVlIixlLDApfWdldFZhbHVlKCl7cmV0dXJuIHRoaXMudmFsdWV9fSxGcD1jbGFzcyBleHRlbmRzIHNle2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoZSx0KX1nZXQgdHlwZSgpe3JldHVybiBiLklmfXNldEV4cHJlc3Npb24oZSl7cmV0dXJuIHRoaXMuc2V0Tm9kZSgiZXhwcmVzc2lvbiIsZSwwKX1zZXRFbHNlQ2xhdXNlKGUpe3JldHVybiB0aGlzLnNldE5vZGUoImVsc2VDbGF1c2UiLGUpfX0sUnA9Y2xhc3MgZXh0ZW5kcyBzZXtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsdCl9Z2V0IHR5cGUoKXtyZXR1cm4gYi5Gb3J9c2V0VmFyaWFibGUoZSl7cmV0dXJuIHRoaXMuc2V0Tm9kZSgidmFyaWFibGUiLGUsMCl9fSxOcD1jbGFzcyBleHRlbmRzIHNle2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoZSx0KX1nZXQgdHlwZSgpe3JldHVybiBiLkVhY2h9Z2V0VmFyaWFibGVzKCl7cmV0dXJuIHRoaXMudmFyaWFibGVzfHwodGhpcy52YXJpYWJsZXM9bmV3IHllKHRoaXMpKSx0aGlzLnZhcmlhYmxlc319LERwPWNsYXNzIGV4dGVuZHMgc2V7Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLHQpfWdldCB0eXBlKCl7cmV0dXJuIGIuV2hpbGV9fSxJcD1jbGFzcyBleHRlbmRzIHNle2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoZSx0KX1nZXQgdHlwZSgpe3JldHVybiBiLkVsc2V9fSxjcj1jbGFzcyBleHRlbmRzIHNle2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoZSx0KX1nZXQgdHlwZSgpe3JldHVybiBiLkZ1bmN0aW9uRGVjbGFyYXRpb259c2V0SWRlbnRpZmllcihlKXtyZXR1cm4gdGhpcy5zZXROb2RlKCJpZGVudGlmaWVyIixlLDApfWdldElkZW50aWZpZXIoKXtyZXR1cm4gdGhpcy5pZGVudGlmaWVyfWdldE5hbWUoKXtyZXR1cm4gdGhpcy5pZGVudGlmaWVyP3RoaXMuaWRlbnRpZmllci5nZXRUZXh0KCk6IiJ9Z2V0UGFyYW1ldGVycygpe3JldHVybiB0aGlzLnBhcmFtZXRlcnN8fCh0aGlzLnBhcmFtZXRlcnM9bmV3IHllKHRoaXMpKSx0aGlzLnBhcmFtZXRlcnN9fSxBcD1jbGFzcyBleHRlbmRzIHNle2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoZSx0KX1nZXQgdHlwZSgpe3JldHVybiBiLlZpZXdQb3J0fX0seGw9Y2xhc3MgZXh0ZW5kcyBzZXtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsdCl9Z2V0IHR5cGUoKXtyZXR1cm4gYi5Gb250RmFjZX19LFNsPWNsYXNzIGV4dGVuZHMgc2V7Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLHQpfWdldCB0eXBlKCl7cmV0dXJuIGIuTmVzdGVkUHJvcGVydGllc319LENsPWNsYXNzIGV4dGVuZHMgc2V7Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLHQpfWdldCB0eXBlKCl7cmV0dXJuIGIuS2V5ZnJhbWV9c2V0S2V5d29yZChlKXtyZXR1cm4gdGhpcy5zZXROb2RlKCJrZXl3b3JkIixlLDApfWdldEtleXdvcmQoKXtyZXR1cm4gdGhpcy5rZXl3b3JkfXNldElkZW50aWZpZXIoZSl7cmV0dXJuIHRoaXMuc2V0Tm9kZSgiaWRlbnRpZmllciIsZSwwKX1nZXRJZGVudGlmaWVyKCl7cmV0dXJuIHRoaXMuaWRlbnRpZmllcn1nZXROYW1lKCl7cmV0dXJuIHRoaXMuaWRlbnRpZmllcj90aGlzLmlkZW50aWZpZXIuZ2V0VGV4dCgpOiIifX0sX2w9Y2xhc3MgZXh0ZW5kcyBzZXtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsdCl9Z2V0IHR5cGUoKXtyZXR1cm4gYi5LZXlmcmFtZVNlbGVjdG9yfX0sT2k9Y2xhc3MgZXh0ZW5kcyBPe2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoZSx0KX1nZXQgdHlwZSgpe3JldHVybiBiLkltcG9ydH1zZXRNZWRpYWxpc3QoZSl7cmV0dXJuIGU/KGUuYXR0YWNoVG8odGhpcyksITApOiExfX0sTXA9Y2xhc3MgZXh0ZW5kcyBPe2dldCB0eXBlKCl7cmV0dXJuIGIuVXNlfWdldFBhcmFtZXRlcnMoKXtyZXR1cm4gdGhpcy5wYXJhbWV0ZXJzfHwodGhpcy5wYXJhbWV0ZXJzPW5ldyB5ZSh0aGlzKSksdGhpcy5wYXJhbWV0ZXJzfXNldElkZW50aWZpZXIoZSl7cmV0dXJuIHRoaXMuc2V0Tm9kZSgiaWRlbnRpZmllciIsZSwwKX1nZXRJZGVudGlmaWVyKCl7cmV0dXJuIHRoaXMuaWRlbnRpZmllcn19LExwPWNsYXNzIGV4dGVuZHMgT3tnZXQgdHlwZSgpe3JldHVybiBiLk1vZHVsZUNvbmZpZ3VyYXRpb259c2V0SWRlbnRpZmllcihlKXtyZXR1cm4gdGhpcy5zZXROb2RlKCJpZGVudGlmaWVyIixlLDApfWdldElkZW50aWZpZXIoKXtyZXR1cm4gdGhpcy5pZGVudGlmaWVyfWdldE5hbWUoKXtyZXR1cm4gdGhpcy5pZGVudGlmaWVyP3RoaXMuaWRlbnRpZmllci5nZXRUZXh0KCk6IiJ9c2V0VmFsdWUoZSl7cmV0dXJuIHRoaXMuc2V0Tm9kZSgidmFsdWUiLGUsMCl9Z2V0VmFsdWUoKXtyZXR1cm4gdGhpcy52YWx1ZX19LHpwPWNsYXNzIGV4dGVuZHMgT3tnZXQgdHlwZSgpe3JldHVybiBiLkZvcndhcmR9c2V0SWRlbnRpZmllcihlKXtyZXR1cm4gdGhpcy5zZXROb2RlKCJpZGVudGlmaWVyIixlLDApfWdldElkZW50aWZpZXIoKXtyZXR1cm4gdGhpcy5pZGVudGlmaWVyfWdldE1lbWJlcnMoKXtyZXR1cm4gdGhpcy5tZW1iZXJzfHwodGhpcy5tZW1iZXJzPW5ldyB5ZSh0aGlzKSksdGhpcy5tZW1iZXJzfWdldFBhcmFtZXRlcnMoKXtyZXR1cm4gdGhpcy5wYXJhbWV0ZXJzfHwodGhpcy5wYXJhbWV0ZXJzPW5ldyB5ZSh0aGlzKSksdGhpcy5wYXJhbWV0ZXJzfX0sUHA9Y2xhc3MgZXh0ZW5kcyBPe2dldCB0eXBlKCl7cmV0dXJuIGIuRm9yd2FyZFZpc2liaWxpdHl9c2V0SWRlbnRpZmllcihlKXtyZXR1cm4gdGhpcy5zZXROb2RlKCJpZGVudGlmaWVyIixlLDApfWdldElkZW50aWZpZXIoKXtyZXR1cm4gdGhpcy5pZGVudGlmaWVyfX0sVHA9Y2xhc3MgZXh0ZW5kcyBPe2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoZSx0KX1nZXQgdHlwZSgpe3JldHVybiBiLk5hbWVzcGFjZX19LFdpPWNsYXNzIGV4dGVuZHMgc2V7Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLHQpfWdldCB0eXBlKCl7cmV0dXJuIGIuTWVkaWF9fSxVaT1jbGFzcyBleHRlbmRzIHNle2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoZSx0KX1nZXQgdHlwZSgpe3JldHVybiBiLlN1cHBvcnRzfX0sT3A9Y2xhc3MgZXh0ZW5kcyBzZXtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsdCl9Z2V0IHR5cGUoKXtyZXR1cm4gYi5MYXllcn1zZXROYW1lcyhlKXtyZXR1cm4gdGhpcy5zZXROb2RlKCJuYW1lcyIsZSl9Z2V0TmFtZXMoKXtyZXR1cm4gdGhpcy5uYW1lc319LFdwPWNsYXNzIGV4dGVuZHMgc2V7Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLHQpfWdldCB0eXBlKCl7cmV0dXJuIGIuUHJvcGVydHlBdFJ1bGV9c2V0TmFtZShlKXtyZXR1cm4gZT8oZS5hdHRhY2hUbyh0aGlzKSx0aGlzLm5hbWU9ZSwhMCk6ITF9Z2V0TmFtZSgpe3JldHVybiB0aGlzLm5hbWV9fSxVcD1jbGFzcyBleHRlbmRzIHNle2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoZSx0KX1nZXQgdHlwZSgpe3JldHVybiBiLkRvY3VtZW50fX0sVnA9Y2xhc3MgZXh0ZW5kcyBzZXtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsdCl9Z2V0IHR5cGUoKXtyZXR1cm4gYi5Db250YWluZXJ9fSxrbD1jbGFzcyBleHRlbmRzIE97Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLHQpfX0sRWw9Y2xhc3MgZXh0ZW5kcyBPe2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoZSx0KX1nZXQgdHlwZSgpe3JldHVybiBiLk1lZGlhUXVlcnl9fSwkcD1jbGFzcyBleHRlbmRzIE97Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLHQpfWdldCB0eXBlKCl7cmV0dXJuIGIuTWVkaWFDb25kaXRpb259fSxCcD1jbGFzcyBleHRlbmRzIE97Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLHQpfWdldCB0eXBlKCl7cmV0dXJuIGIuTWVkaWFGZWF0dXJlfX0sa249Y2xhc3MgZXh0ZW5kcyBPe2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoZSx0KX1nZXQgdHlwZSgpe3JldHVybiBiLlN1cHBvcnRzQ29uZGl0aW9ufX0scXA9Y2xhc3MgZXh0ZW5kcyBzZXtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsdCl9Z2V0IHR5cGUoKXtyZXR1cm4gYi5QYWdlfX0sanA9Y2xhc3MgZXh0ZW5kcyBzZXtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsdCl9Z2V0IHR5cGUoKXtyZXR1cm4gYi5QYWdlQm94TWFyZ2luQm94fX0sRmw9Y2xhc3MgZXh0ZW5kcyBPe2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoZSx0KX1nZXQgdHlwZSgpe3JldHVybiBiLkV4cHJlc3Npb259fSxWaT1jbGFzcyBleHRlbmRzIE97Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLHQpfWdldCB0eXBlKCl7cmV0dXJuIGIuQmluYXJ5RXhwcmVzc2lvbn1zZXRMZWZ0KGUpe3JldHVybiB0aGlzLnNldE5vZGUoImxlZnQiLGUpfWdldExlZnQoKXtyZXR1cm4gdGhpcy5sZWZ0fXNldFJpZ2h0KGUpe3JldHVybiB0aGlzLnNldE5vZGUoInJpZ2h0IixlKX1nZXRSaWdodCgpe3JldHVybiB0aGlzLnJpZ2h0fXNldE9wZXJhdG9yKGUpe3JldHVybiB0aGlzLnNldE5vZGUoIm9wZXJhdG9yIixlKX1nZXRPcGVyYXRvcigpe3JldHVybiB0aGlzLm9wZXJhdG9yfX0sSHA9Y2xhc3MgZXh0ZW5kcyBPe2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoZSx0KX1nZXQgdHlwZSgpe3JldHVybiBiLlRlcm19c2V0T3BlcmF0b3IoZSl7cmV0dXJuIHRoaXMuc2V0Tm9kZSgib3BlcmF0b3IiLGUpfWdldE9wZXJhdG9yKCl7cmV0dXJuIHRoaXMub3BlcmF0b3J9c2V0RXhwcmVzc2lvbihlKXtyZXR1cm4gdGhpcy5zZXROb2RlKCJleHByZXNzaW9uIixlKX1nZXRFeHByZXNzaW9uKCl7cmV0dXJuIHRoaXMuZXhwcmVzc2lvbn19LEdwPWNsYXNzIGV4dGVuZHMgT3tjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsdCl9Z2V0IHR5cGUoKXtyZXR1cm4gYi5BdHRyaWJ1dGVTZWxlY3Rvcn1zZXROYW1lc3BhY2VQcmVmaXgoZSl7cmV0dXJuIHRoaXMuc2V0Tm9kZSgibmFtZXNwYWNlUHJlZml4IixlKX1nZXROYW1lc3BhY2VQcmVmaXgoKXtyZXR1cm4gdGhpcy5uYW1lc3BhY2VQcmVmaXh9c2V0SWRlbnRpZmllcihlKXtyZXR1cm4gdGhpcy5zZXROb2RlKCJpZGVudGlmaWVyIixlKX1nZXRJZGVudGlmaWVyKCl7cmV0dXJuIHRoaXMuaWRlbnRpZmllcn1zZXRPcGVyYXRvcihlKXtyZXR1cm4gdGhpcy5zZXROb2RlKCJvcGVyYXRvciIsZSl9Z2V0T3BlcmF0b3IoKXtyZXR1cm4gdGhpcy5vcGVyYXRvcn1zZXRWYWx1ZShlKXtyZXR1cm4gdGhpcy5zZXROb2RlKCJ2YWx1ZSIsZSl9Z2V0VmFsdWUoKXtyZXR1cm4gdGhpcy52YWx1ZX19LCRpPWNsYXNzIGV4dGVuZHMgT3tjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsdCl9Z2V0IHR5cGUoKXtyZXR1cm4gYi5IZXhDb2xvclZhbHVlfX0sSnA9Y2xhc3MgZXh0ZW5kcyBPe2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoZSx0KX1nZXQgdHlwZSgpe3JldHVybiBiLlJhdGlvVmFsdWV9fSxYcD00NixZcD00OCxRcD01NyxCaT1jbGFzcyBleHRlbmRzIE97Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLHQpfWdldCB0eXBlKCl7cmV0dXJuIGIuTnVtZXJpY1ZhbHVlfWdldFZhbHVlKCl7Y29uc3QgZT10aGlzLmdldFRleHQoKTtsZXQgdD0wLG47Zm9yKGxldCByPTAsaT1lLmxlbmd0aDtyPGkmJihuPWUuY2hhckNvZGVBdChyKSxZcDw9biYmbjw9UXB8fG49PT1YcCk7cisrKXQrPTE7cmV0dXJue3ZhbHVlOmUuc3Vic3RyaW5nKDAsdCksdW5pdDp0PGUubGVuZ3RoP2Uuc3Vic3RyaW5nKHQpOnZvaWQgMH19fSxocj1jbGFzcyBleHRlbmRzIFBpe2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoZSx0KSx0aGlzLm5lZWRzU2VtaWNvbG9uPSEwfWdldCB0eXBlKCl7cmV0dXJuIGIuVmFyaWFibGVEZWNsYXJhdGlvbn1zZXRWYXJpYWJsZShlKXtyZXR1cm4gZT8oZS5hdHRhY2hUbyh0aGlzKSx0aGlzLnZhcmlhYmxlPWUsITApOiExfWdldFZhcmlhYmxlKCl7cmV0dXJuIHRoaXMudmFyaWFibGV9Z2V0TmFtZSgpe3JldHVybiB0aGlzLnZhcmlhYmxlP3RoaXMudmFyaWFibGUuZ2V0TmFtZSgpOiIifXNldFZhbHVlKGUpe3JldHVybiBlPyhlLmF0dGFjaFRvKHRoaXMpLHRoaXMudmFsdWU9ZSwhMCk6ITF9Z2V0VmFsdWUoKXtyZXR1cm4gdGhpcy52YWx1ZX19LHFpPWNsYXNzIGV4dGVuZHMgT3tjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsdCl9Z2V0IHR5cGUoKXtyZXR1cm4gYi5JbnRlcnBvbGF0aW9ufX0samk9Y2xhc3MgZXh0ZW5kcyBPe2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoZSx0KX1nZXQgdHlwZSgpe3JldHVybiBiLlZhcmlhYmxlTmFtZX1nZXROYW1lKCl7cmV0dXJuIHRoaXMuZ2V0VGV4dCgpfX0sRW49Y2xhc3MgZXh0ZW5kcyBPe2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoZSx0KX1nZXQgdHlwZSgpe3JldHVybiBiLkV4dGVuZHNSZWZlcmVuY2V9Z2V0U2VsZWN0b3JzKCl7cmV0dXJuIHRoaXMuc2VsZWN0b3JzfHwodGhpcy5zZWxlY3RvcnM9bmV3IHllKHRoaXMpKSx0aGlzLnNlbGVjdG9yc319LEtwPWNsYXNzIGV4dGVuZHMgT3tjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsdCl9Z2V0IHR5cGUoKXtyZXR1cm4gYi5NaXhpbkNvbnRlbnRSZWZlcmVuY2V9Z2V0QXJndW1lbnRzKCl7cmV0dXJuIHRoaXMuYXJndW1lbnRzfHwodGhpcy5hcmd1bWVudHM9bmV3IHllKHRoaXMpKSx0aGlzLmFyZ3VtZW50c319LFpwPWNsYXNzIGV4dGVuZHMgc2V7Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLHQpfWdldCB0eXBlKCl7cmV0dXJuIGIuTWl4aW5Db250ZW50RGVjbGFyYXRpb259Z2V0UGFyYW1ldGVycygpe3JldHVybiB0aGlzLnBhcmFtZXRlcnN8fCh0aGlzLnBhcmFtZXRlcnM9bmV3IHllKHRoaXMpKSx0aGlzLnBhcmFtZXRlcnN9fSxkcj1jbGFzcyBleHRlbmRzIE97Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLHQpfWdldCB0eXBlKCl7cmV0dXJuIGIuTWl4aW5SZWZlcmVuY2V9Z2V0TmFtZXNwYWNlcygpe3JldHVybiB0aGlzLm5hbWVzcGFjZXN8fCh0aGlzLm5hbWVzcGFjZXM9bmV3IHllKHRoaXMpKSx0aGlzLm5hbWVzcGFjZXN9c2V0SWRlbnRpZmllcihlKXtyZXR1cm4gdGhpcy5zZXROb2RlKCJpZGVudGlmaWVyIixlLDApfWdldElkZW50aWZpZXIoKXtyZXR1cm4gdGhpcy5pZGVudGlmaWVyfWdldE5hbWUoKXtyZXR1cm4gdGhpcy5pZGVudGlmaWVyP3RoaXMuaWRlbnRpZmllci5nZXRUZXh0KCk6IiJ9Z2V0QXJndW1lbnRzKCl7cmV0dXJuIHRoaXMuYXJndW1lbnRzfHwodGhpcy5hcmd1bWVudHM9bmV3IHllKHRoaXMpKSx0aGlzLmFyZ3VtZW50c31zZXRDb250ZW50KGUpe3JldHVybiB0aGlzLnNldE5vZGUoImNvbnRlbnQiLGUpfWdldENvbnRlbnQoKXtyZXR1cm4gdGhpcy5jb250ZW50fX0sRm49Y2xhc3MgZXh0ZW5kcyBzZXtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsdCl9Z2V0IHR5cGUoKXtyZXR1cm4gYi5NaXhpbkRlY2xhcmF0aW9ufXNldElkZW50aWZpZXIoZSl7cmV0dXJuIHRoaXMuc2V0Tm9kZSgiaWRlbnRpZmllciIsZSwwKX1nZXRJZGVudGlmaWVyKCl7cmV0dXJuIHRoaXMuaWRlbnRpZmllcn1nZXROYW1lKCl7cmV0dXJuIHRoaXMuaWRlbnRpZmllcj90aGlzLmlkZW50aWZpZXIuZ2V0VGV4dCgpOiIifWdldFBhcmFtZXRlcnMoKXtyZXR1cm4gdGhpcy5wYXJhbWV0ZXJzfHwodGhpcy5wYXJhbWV0ZXJzPW5ldyB5ZSh0aGlzKSksdGhpcy5wYXJhbWV0ZXJzfXNldEd1YXJkKGUpe3JldHVybiBlJiYoZS5hdHRhY2hUbyh0aGlzKSx0aGlzLmd1YXJkPWUpLCExfX0sUmw9Y2xhc3MgZXh0ZW5kcyBzZXtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsdCl9Z2V0IHR5cGUoKXtyZXR1cm4gYi5Vbmtub3duQXRSdWxlfXNldEF0UnVsZU5hbWUoZSl7dGhpcy5hdFJ1bGVOYW1lPWV9Z2V0QXRSdWxlTmFtZSgpe3JldHVybiB0aGlzLmF0UnVsZU5hbWV9fSxlbT1jbGFzcyBleHRlbmRzIE97Z2V0IHR5cGUoKXtyZXR1cm4gYi5MaXN0RW50cnl9c2V0S2V5KGUpe3JldHVybiB0aGlzLnNldE5vZGUoImtleSIsZSwwKX1zZXRWYWx1ZShlKXtyZXR1cm4gdGhpcy5zZXROb2RlKCJ2YWx1ZSIsZSwxKX19LHRtPWNsYXNzIGV4dGVuZHMgT3tnZXRDb25kaXRpb25zKCl7cmV0dXJuIHRoaXMuY29uZGl0aW9uc3x8KHRoaXMuY29uZGl0aW9ucz1uZXcgeWUodGhpcykpLHRoaXMuY29uZGl0aW9uc319LG5tPWNsYXNzIGV4dGVuZHMgT3tzZXRWYXJpYWJsZShlKXtyZXR1cm4gdGhpcy5zZXROb2RlKCJ2YXJpYWJsZSIsZSl9fSxObD1jbGFzcyBleHRlbmRzIE97Z2V0IHR5cGUoKXtyZXR1cm4gYi5Nb2R1bGV9c2V0SWRlbnRpZmllcihlKXtyZXR1cm4gdGhpcy5zZXROb2RlKCJpZGVudGlmaWVyIixlLDApfWdldElkZW50aWZpZXIoKXtyZXR1cm4gdGhpcy5pZGVudGlmaWVyfX0sUmU7KGZ1bmN0aW9uKGUpe2VbZS5JZ25vcmU9MV09Iklnbm9yZSIsZVtlLldhcm5pbmc9Ml09Ildhcm5pbmciLGVbZS5FcnJvcj00XT0iRXJyb3IifSkoUmV8fChSZT17fSkpO3ZhciBEbD1jbGFzc3tjb25zdHJ1Y3RvcihlLHQsbixyLGk9ZS5vZmZzZXQscz1lLmxlbmd0aCl7dGhpcy5ub2RlPWUsdGhpcy5ydWxlPXQsdGhpcy5sZXZlbD1uLHRoaXMubWVzc2FnZT1yfHx0Lm1lc3NhZ2UsdGhpcy5vZmZzZXQ9aSx0aGlzLmxlbmd0aD1zfWdldFJ1bGUoKXtyZXR1cm4gdGhpcy5ydWxlfWdldExldmVsKCl7cmV0dXJuIHRoaXMubGV2ZWx9Z2V0T2Zmc2V0KCl7cmV0dXJuIHRoaXMub2Zmc2V0fWdldExlbmd0aCgpe3JldHVybiB0aGlzLmxlbmd0aH1nZXROb2RlKCl7cmV0dXJuIHRoaXMubm9kZX1nZXRNZXNzYWdlKCl7cmV0dXJuIHRoaXMubWVzc2FnZX19LHJtPWNsYXNzIHloe3N0YXRpYyBlbnRyaWVzKHQpe2NvbnN0IG49bmV3IHloO3JldHVybiB0LmFjY2VwdFZpc2l0b3Iobiksbi5lbnRyaWVzfWNvbnN0cnVjdG9yKCl7dGhpcy5lbnRyaWVzPVtdfXZpc2l0Tm9kZSh0KXtyZXR1cm4gdC5pc0Vycm9uZW91cygpJiZ0LmNvbGxlY3RJc3N1ZXModGhpcy5lbnRyaWVzKSwhMH19O2Z1bmN0aW9uIGcoLi4uZSl7Y29uc3QgdD1lWzBdO2xldCBuLHIsaTtpZih0eXBlb2YgdD09InN0cmluZyIpbj10LHI9dCxlLnNwbGljZSgwLDEpLGk9IWV8fHR5cGVvZiBlWzBdIT0ib2JqZWN0Ij9lOmVbMF07ZWxzZSBpZih0IGluc3RhbmNlb2YgQXJyYXkpe2NvbnN0IHM9ZS5zbGljZSgxKTtpZih0Lmxlbmd0aCE9PXMubGVuZ3RoKzEpdGhyb3cgbmV3IEVycm9yKCJleHBlY3RlZCBhIHN0cmluZyBhcyB0aGUgZmlyc3QgYXJndW1lbnQgdG8gbDEwbi50Iik7bGV0IGE9dFswXTtmb3IobGV0IGw9MTtsPHQubGVuZ3RoO2wrKylhKz1geyR7bC0xfX1gK3RbbF07cmV0dXJuIGcoYSwuLi5zKX1lbHNlIHI9dC5tZXNzYWdlLG49cix0LmNvbW1lbnQmJnQuY29tbWVudC5sZW5ndGg+MCYmKG4rPWAvJHtBcnJheS5pc0FycmF5KHQuY29tbWVudCk/dC5jb21tZW50LmpvaW4oIiIpOnQuY29tbWVudH1gKSxpPXQuYXJncz8/e307cmV0dXJuIHNtKHIsaSl9dmFyIGltPS97KFtefV0rKX0vZztmdW5jdGlvbiBzbShlLHQpe3JldHVybiBPYmplY3Qua2V5cyh0KS5sZW5ndGg9PT0wP2U6ZS5yZXBsYWNlKGltLChuLHIpPT50W3JdPz9uKX12YXIgSz1jbGFzc3tjb25zdHJ1Y3RvcihlLHQpe3RoaXMuaWQ9ZSx0aGlzLm1lc3NhZ2U9dH19LHk9e051bWJlckV4cGVjdGVkOm5ldyBLKCJjc3MtbnVtYmVyZXhwZWN0ZWQiLGcoIm51bWJlciBleHBlY3RlZCIpKSxDb25kaXRpb25FeHBlY3RlZDpuZXcgSygiY3NzLWNvbmRpdGlvbmV4cGVjdGVkIixnKCJjb25kaXRpb24gZXhwZWN0ZWQiKSksUnVsZU9yU2VsZWN0b3JFeHBlY3RlZDpuZXcgSygiY3NzLXJ1bGVvcnNlbGVjdG9yZXhwZWN0ZWQiLGcoImF0LXJ1bGUgb3Igc2VsZWN0b3IgZXhwZWN0ZWQiKSksRG90RXhwZWN0ZWQ6bmV3IEsoImNzcy1kb3RleHBlY3RlZCIsZygiZG90IGV4cGVjdGVkIikpLENvbG9uRXhwZWN0ZWQ6bmV3IEsoImNzcy1jb2xvbmV4cGVjdGVkIixnKCJjb2xvbiBleHBlY3RlZCIpKSxTZW1pQ29sb25FeHBlY3RlZDpuZXcgSygiY3NzLXNlbWljb2xvbmV4cGVjdGVkIixnKCJzZW1pLWNvbG9uIGV4cGVjdGVkIikpLFRlcm1FeHBlY3RlZDpuZXcgSygiY3NzLXRlcm1leHBlY3RlZCIsZygidGVybSBleHBlY3RlZCIpKSxFeHByZXNzaW9uRXhwZWN0ZWQ6bmV3IEsoImNzcy1leHByZXNzaW9uZXhwZWN0ZWQiLGcoImV4cHJlc3Npb24gZXhwZWN0ZWQiKSksT3BlcmF0b3JFeHBlY3RlZDpuZXcgSygiY3NzLW9wZXJhdG9yZXhwZWN0ZWQiLGcoIm9wZXJhdG9yIGV4cGVjdGVkIikpLElkZW50aWZpZXJFeHBlY3RlZDpuZXcgSygiY3NzLWlkZW50aWZpZXJleHBlY3RlZCIsZygiaWRlbnRpZmllciBleHBlY3RlZCIpKSxQZXJjZW50YWdlRXhwZWN0ZWQ6bmV3IEsoImNzcy1wZXJjZW50YWdlZXhwZWN0ZWQiLGcoInBlcmNlbnRhZ2UgZXhwZWN0ZWQiKSksVVJJT3JTdHJpbmdFeHBlY3RlZDpuZXcgSygiY3NzLXVyaW9yc3RyaW5nZXhwZWN0ZWQiLGcoInVyaSBvciBzdHJpbmcgZXhwZWN0ZWQiKSksVVJJRXhwZWN0ZWQ6bmV3IEsoImNzcy11cmlleHBlY3RlZCIsZygiVVJJIGV4cGVjdGVkIikpLFZhcmlhYmxlTmFtZUV4cGVjdGVkOm5ldyBLKCJjc3MtdmFybmFtZWV4cGVjdGVkIixnKCJ2YXJpYWJsZSBuYW1lIGV4cGVjdGVkIikpLFZhcmlhYmxlVmFsdWVFeHBlY3RlZDpuZXcgSygiY3NzLXZhcnZhbHVlZXhwZWN0ZWQiLGcoInZhcmlhYmxlIHZhbHVlIGV4cGVjdGVkIikpLFByb3BlcnR5VmFsdWVFeHBlY3RlZDpuZXcgSygiY3NzLXByb3BlcnR5dmFsdWVleHBlY3RlZCIsZygicHJvcGVydHkgdmFsdWUgZXhwZWN0ZWQiKSksTGVmdEN1cmx5RXhwZWN0ZWQ6bmV3IEsoImNzcy1sY3VybHlleHBlY3RlZCIsZygieyBleHBlY3RlZCIpKSxSaWdodEN1cmx5RXhwZWN0ZWQ6bmV3IEsoImNzcy1yY3VybHlleHBlY3RlZCIsZygifSBleHBlY3RlZCIpKSxMZWZ0U3F1YXJlQnJhY2tldEV4cGVjdGVkOm5ldyBLKCJjc3MtcmJyYWNrZXRleHBlY3RlZCIsZygiWyBleHBlY3RlZCIpKSxSaWdodFNxdWFyZUJyYWNrZXRFeHBlY3RlZDpuZXcgSygiY3NzLWxicmFja2V0ZXhwZWN0ZWQiLGcoIl0gZXhwZWN0ZWQiKSksTGVmdFBhcmVudGhlc2lzRXhwZWN0ZWQ6bmV3IEsoImNzcy1scGFyZW50ZXhwZWN0ZWQiLGcoIiggZXhwZWN0ZWQiKSksUmlnaHRQYXJlbnRoZXNpc0V4cGVjdGVkOm5ldyBLKCJjc3MtcnBhcmVudGV4cGVjdGVkIixnKCIpIGV4cGVjdGVkIikpLENvbW1hRXhwZWN0ZWQ6bmV3IEsoImNzcy1jb21tYWV4cGVjdGVkIixnKCJjb21tYSBleHBlY3RlZCIpKSxQYWdlRGlyZWN0aXZlT3JEZWNsYXJhdGlvbkV4cGVjdGVkOm5ldyBLKCJjc3MtcGFnZWRpcm9yZGVjbGV4cGVjdGVkIixnKCJwYWdlIGRpcmVjdGl2ZSBvciBkZWNsYXJhdG9uIGV4cGVjdGVkIikpLFVua25vd25BdFJ1bGU6bmV3IEsoImNzcy11bmtub3duYXRydWxlIixnKCJhdC1ydWxlIHVua25vd24iKSksVW5rbm93bktleXdvcmQ6bmV3IEsoImNzcy11bmtub3dua2V5d29yZCIsZygidW5rbm93biBrZXl3b3JkIikpLFNlbGVjdG9yRXhwZWN0ZWQ6bmV3IEsoImNzcy1zZWxlY3RvcmV4cGVjdGVkIixnKCJzZWxlY3RvciBleHBlY3RlZCIpKSxTdHJpbmdMaXRlcmFsRXhwZWN0ZWQ6bmV3IEsoImNzcy1zdHJpbmdsaXRlcmFsZXhwZWN0ZWQiLGcoInN0cmluZyBsaXRlcmFsIGV4cGVjdGVkIikpLFdoaXRlc3BhY2VFeHBlY3RlZDpuZXcgSygiY3NzLXdoaXRlc3BhY2VleHBlY3RlZCIsZygid2hpdGVzcGFjZSBleHBlY3RlZCIpKSxNZWRpYVF1ZXJ5RXhwZWN0ZWQ6bmV3IEsoImNzcy1tZWRpYXF1ZXJ5ZXhwZWN0ZWQiLGcoIm1lZGlhIHF1ZXJ5IGV4cGVjdGVkIikpLElkZW50aWZpZXJPcldpbGRjYXJkRXhwZWN0ZWQ6bmV3IEsoImNzcy1pZG9yd2lsZGNhcmRleHBlY3RlZCIsZygiaWRlbnRpZmllciBvciB3aWxkY2FyZCBleHBlY3RlZCIpKSxXaWxkY2FyZEV4cGVjdGVkOm5ldyBLKCJjc3Mtd2lsZGNhcmRleHBlY3RlZCIsZygid2lsZGNhcmQgZXhwZWN0ZWQiKSksSWRlbnRpZmllck9yVmFyaWFibGVFeHBlY3RlZDpuZXcgSygiY3NzLWlkb3J2YXJleHBlY3RlZCIsZygiaWRlbnRpZmllciBvciB2YXJpYWJsZSBleHBlY3RlZCIpKX0sSWw7KGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQobil7cmV0dXJuIHR5cGVvZiBuPT0ic3RyaW5nIn1lLmlzPXR9KShJbHx8KElsPXt9KSk7dmFyIEhpOyhmdW5jdGlvbihlKXtmdW5jdGlvbiB0KG4pe3JldHVybiB0eXBlb2Ygbj09InN0cmluZyJ9ZS5pcz10fSkoSGl8fChIaT17fSkpO3ZhciBBbDsoZnVuY3Rpb24oZSl7ZS5NSU5fVkFMVUU9LTIxNDc0ODM2NDgsZS5NQVhfVkFMVUU9MjE0NzQ4MzY0NztmdW5jdGlvbiB0KG4pe3JldHVybiB0eXBlb2Ygbj09Im51bWJlciImJmUuTUlOX1ZBTFVFPD1uJiZuPD1lLk1BWF9WQUxVRX1lLmlzPXR9KShBbHx8KEFsPXt9KSk7dmFyIHVyOyhmdW5jdGlvbihlKXtlLk1JTl9WQUxVRT0wLGUuTUFYX1ZBTFVFPTIxNDc0ODM2NDc7ZnVuY3Rpb24gdChuKXtyZXR1cm4gdHlwZW9mIG49PSJudW1iZXIiJiZlLk1JTl9WQUxVRTw9biYmbjw9ZS5NQVhfVkFMVUV9ZS5pcz10fSkodXJ8fCh1cj17fSkpO3ZhciB4ZTsoZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChyLGkpe3JldHVybiByPT09TnVtYmVyLk1BWF9WQUxVRSYmKHI9dXIuTUFYX1ZBTFVFKSxpPT09TnVtYmVyLk1BWF9WQUxVRSYmKGk9dXIuTUFYX1ZBTFVFKSx7bGluZTpyLGNoYXJhY3RlcjppfX1lLmNyZWF0ZT10O2Z1bmN0aW9uIG4ocil7bGV0IGk9cjtyZXR1cm4geC5vYmplY3RMaXRlcmFsKGkpJiZ4LnVpbnRlZ2VyKGkubGluZSkmJngudWludGVnZXIoaS5jaGFyYWN0ZXIpfWUuaXM9bn0pKHhlfHwoeGU9e30pKTt2YXIgWDsoZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChyLGkscyxhKXtpZih4LnVpbnRlZ2VyKHIpJiZ4LnVpbnRlZ2VyKGkpJiZ4LnVpbnRlZ2VyKHMpJiZ4LnVpbnRlZ2VyKGEpKXJldHVybntzdGFydDp4ZS5jcmVhdGUocixpKSxlbmQ6eGUuY3JlYXRlKHMsYSl9O2lmKHhlLmlzKHIpJiZ4ZS5pcyhpKSlyZXR1cm57c3RhcnQ6cixlbmQ6aX07dGhyb3cgbmV3IEVycm9yKGBSYW5nZSNjcmVhdGUgY2FsbGVkIHdpdGggaW52YWxpZCBhcmd1bWVudHNbJHtyfSwgJHtpfSwgJHtzfSwgJHthfV1gKX1lLmNyZWF0ZT10O2Z1bmN0aW9uIG4ocil7bGV0IGk9cjtyZXR1cm4geC5vYmplY3RMaXRlcmFsKGkpJiZ4ZS5pcyhpLnN0YXJ0KSYmeGUuaXMoaS5lbmQpfWUuaXM9bn0pKFh8fChYPXt9KSk7dmFyIFJuOyhmdW5jdGlvbihlKXtmdW5jdGlvbiB0KHIsaSl7cmV0dXJue3VyaTpyLHJhbmdlOml9fWUuY3JlYXRlPXQ7ZnVuY3Rpb24gbihyKXtsZXQgaT1yO3JldHVybiB4Lm9iamVjdExpdGVyYWwoaSkmJlguaXMoaS5yYW5nZSkmJih4LnN0cmluZyhpLnVyaSl8fHgudW5kZWZpbmVkKGkudXJpKSl9ZS5pcz1ufSkoUm58fChSbj17fSkpO3ZhciBNbDsoZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChyLGkscyxhKXtyZXR1cm57dGFyZ2V0VXJpOnIsdGFyZ2V0UmFuZ2U6aSx0YXJnZXRTZWxlY3Rpb25SYW5nZTpzLG9yaWdpblNlbGVjdGlvblJhbmdlOmF9fWUuY3JlYXRlPXQ7ZnVuY3Rpb24gbihyKXtsZXQgaT1yO3JldHVybiB4Lm9iamVjdExpdGVyYWwoaSkmJlguaXMoaS50YXJnZXRSYW5nZSkmJnguc3RyaW5nKGkudGFyZ2V0VXJpKSYmWC5pcyhpLnRhcmdldFNlbGVjdGlvblJhbmdlKSYmKFguaXMoaS5vcmlnaW5TZWxlY3Rpb25SYW5nZSl8fHgudW5kZWZpbmVkKGkub3JpZ2luU2VsZWN0aW9uUmFuZ2UpKX1lLmlzPW59KShNbHx8KE1sPXt9KSk7dmFyIEdpOyhmdW5jdGlvbihlKXtmdW5jdGlvbiB0KHIsaSxzLGEpe3JldHVybntyZWQ6cixncmVlbjppLGJsdWU6cyxhbHBoYTphfX1lLmNyZWF0ZT10O2Z1bmN0aW9uIG4ocil7Y29uc3QgaT1yO3JldHVybiB4Lm9iamVjdExpdGVyYWwoaSkmJngubnVtYmVyUmFuZ2UoaS5yZWQsMCwxKSYmeC5udW1iZXJSYW5nZShpLmdyZWVuLDAsMSkmJngubnVtYmVyUmFuZ2UoaS5ibHVlLDAsMSkmJngubnVtYmVyUmFuZ2UoaS5hbHBoYSwwLDEpfWUuaXM9bn0pKEdpfHwoR2k9e30pKTt2YXIgTGw7KGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQocixpKXtyZXR1cm57cmFuZ2U6cixjb2xvcjppfX1lLmNyZWF0ZT10O2Z1bmN0aW9uIG4ocil7Y29uc3QgaT1yO3JldHVybiB4Lm9iamVjdExpdGVyYWwoaSkmJlguaXMoaS5yYW5nZSkmJkdpLmlzKGkuY29sb3IpfWUuaXM9bn0pKExsfHwoTGw9e30pKTt2YXIgemw7KGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQocixpLHMpe3JldHVybntsYWJlbDpyLHRleHRFZGl0OmksYWRkaXRpb25hbFRleHRFZGl0czpzfX1lLmNyZWF0ZT10O2Z1bmN0aW9uIG4ocil7Y29uc3QgaT1yO3JldHVybiB4Lm9iamVjdExpdGVyYWwoaSkmJnguc3RyaW5nKGkubGFiZWwpJiYoeC51bmRlZmluZWQoaS50ZXh0RWRpdCl8fCQuaXMoaSkpJiYoeC51bmRlZmluZWQoaS5hZGRpdGlvbmFsVGV4dEVkaXRzKXx8eC50eXBlZEFycmF5KGkuYWRkaXRpb25hbFRleHRFZGl0cywkLmlzKSl9ZS5pcz1ufSkoemx8fCh6bD17fSkpO3ZhciBQbDsoZnVuY3Rpb24oZSl7ZS5Db21tZW50PSJjb21tZW50IixlLkltcG9ydHM9ImltcG9ydHMiLGUuUmVnaW9uPSJyZWdpb24ifSkoUGx8fChQbD17fSkpO3ZhciBUbDsoZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChyLGkscyxhLGwsbyl7Y29uc3QgYz17c3RhcnRMaW5lOnIsZW5kTGluZTppfTtyZXR1cm4geC5kZWZpbmVkKHMpJiYoYy5zdGFydENoYXJhY3Rlcj1zKSx4LmRlZmluZWQoYSkmJihjLmVuZENoYXJhY3Rlcj1hKSx4LmRlZmluZWQobCkmJihjLmtpbmQ9bCkseC5kZWZpbmVkKG8pJiYoYy5jb2xsYXBzZWRUZXh0PW8pLGN9ZS5jcmVhdGU9dDtmdW5jdGlvbiBuKHIpe2NvbnN0IGk9cjtyZXR1cm4geC5vYmplY3RMaXRlcmFsKGkpJiZ4LnVpbnRlZ2VyKGkuc3RhcnRMaW5lKSYmeC51aW50ZWdlcihpLnN0YXJ0TGluZSkmJih4LnVuZGVmaW5lZChpLnN0YXJ0Q2hhcmFjdGVyKXx8eC51aW50ZWdlcihpLnN0YXJ0Q2hhcmFjdGVyKSkmJih4LnVuZGVmaW5lZChpLmVuZENoYXJhY3Rlcil8fHgudWludGVnZXIoaS5lbmRDaGFyYWN0ZXIpKSYmKHgudW5kZWZpbmVkKGkua2luZCl8fHguc3RyaW5nKGkua2luZCkpfWUuaXM9bn0pKFRsfHwoVGw9e30pKTt2YXIgSmk7KGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQocixpKXtyZXR1cm57bG9jYXRpb246cixtZXNzYWdlOml9fWUuY3JlYXRlPXQ7ZnVuY3Rpb24gbihyKXtsZXQgaT1yO3JldHVybiB4LmRlZmluZWQoaSkmJlJuLmlzKGkubG9jYXRpb24pJiZ4LnN0cmluZyhpLm1lc3NhZ2UpfWUuaXM9bn0pKEppfHwoSmk9e30pKTt2YXIgcHI7KGZ1bmN0aW9uKGUpe2UuRXJyb3I9MSxlLldhcm5pbmc9MixlLkluZm9ybWF0aW9uPTMsZS5IaW50PTR9KShwcnx8KHByPXt9KSk7dmFyIE9sOyhmdW5jdGlvbihlKXtlLlVubmVjZXNzYXJ5PTEsZS5EZXByZWNhdGVkPTJ9KShPbHx8KE9sPXt9KSk7dmFyIFdsOyhmdW5jdGlvbihlKXtmdW5jdGlvbiB0KG4pe2NvbnN0IHI9bjtyZXR1cm4geC5vYmplY3RMaXRlcmFsKHIpJiZ4LnN0cmluZyhyLmhyZWYpfWUuaXM9dH0pKFdsfHwoV2w9e30pKTt2YXIgbXI7KGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQocixpLHMsYSxsLG8pe2xldCBjPXtyYW5nZTpyLG1lc3NhZ2U6aX07cmV0dXJuIHguZGVmaW5lZChzKSYmKGMuc2V2ZXJpdHk9cykseC5kZWZpbmVkKGEpJiYoYy5jb2RlPWEpLHguZGVmaW5lZChsKSYmKGMuc291cmNlPWwpLHguZGVmaW5lZChvKSYmKGMucmVsYXRlZEluZm9ybWF0aW9uPW8pLGN9ZS5jcmVhdGU9dDtmdW5jdGlvbiBuKHIpe3ZhciBpO2xldCBzPXI7cmV0dXJuIHguZGVmaW5lZChzKSYmWC5pcyhzLnJhbmdlKSYmeC5zdHJpbmcocy5tZXNzYWdlKSYmKHgubnVtYmVyKHMuc2V2ZXJpdHkpfHx4LnVuZGVmaW5lZChzLnNldmVyaXR5KSkmJih4LmludGVnZXIocy5jb2RlKXx8eC5zdHJpbmcocy5jb2RlKXx8eC51bmRlZmluZWQocy5jb2RlKSkmJih4LnVuZGVmaW5lZChzLmNvZGVEZXNjcmlwdGlvbil8fHguc3RyaW5nKChpPXMuY29kZURlc2NyaXB0aW9uKT09PW51bGx8fGk9PT12b2lkIDA/dm9pZCAwOmkuaHJlZikpJiYoeC5zdHJpbmcocy5zb3VyY2UpfHx4LnVuZGVmaW5lZChzLnNvdXJjZSkpJiYoeC51bmRlZmluZWQocy5yZWxhdGVkSW5mb3JtYXRpb24pfHx4LnR5cGVkQXJyYXkocy5yZWxhdGVkSW5mb3JtYXRpb24sSmkuaXMpKX1lLmlzPW59KShtcnx8KG1yPXt9KSk7dmFyIEZ0OyhmdW5jdGlvbihlKXtmdW5jdGlvbiB0KHIsaSwuLi5zKXtsZXQgYT17dGl0bGU6cixjb21tYW5kOml9O3JldHVybiB4LmRlZmluZWQocykmJnMubGVuZ3RoPjAmJihhLmFyZ3VtZW50cz1zKSxhfWUuY3JlYXRlPXQ7ZnVuY3Rpb24gbihyKXtsZXQgaT1yO3JldHVybiB4LmRlZmluZWQoaSkmJnguc3RyaW5nKGkudGl0bGUpJiZ4LnN0cmluZyhpLmNvbW1hbmQpfWUuaXM9bn0pKEZ0fHwoRnQ9e30pKTt2YXIgJDsoZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChzLGEpe3JldHVybntyYW5nZTpzLG5ld1RleHQ6YX19ZS5yZXBsYWNlPXQ7ZnVuY3Rpb24gbihzLGEpe3JldHVybntyYW5nZTp7c3RhcnQ6cyxlbmQ6c30sbmV3VGV4dDphfX1lLmluc2VydD1uO2Z1bmN0aW9uIHIocyl7cmV0dXJue3JhbmdlOnMsbmV3VGV4dDoiIn19ZS5kZWw9cjtmdW5jdGlvbiBpKHMpe2NvbnN0IGE9cztyZXR1cm4geC5vYmplY3RMaXRlcmFsKGEpJiZ4LnN0cmluZyhhLm5ld1RleHQpJiZYLmlzKGEucmFuZ2UpfWUuaXM9aX0pKCR8fCgkPXt9KSk7dmFyIFhpOyhmdW5jdGlvbihlKXtmdW5jdGlvbiB0KHIsaSxzKXtjb25zdCBhPXtsYWJlbDpyfTtyZXR1cm4gaSE9PXZvaWQgMCYmKGEubmVlZHNDb25maXJtYXRpb249aSkscyE9PXZvaWQgMCYmKGEuZGVzY3JpcHRpb249cyksYX1lLmNyZWF0ZT10O2Z1bmN0aW9uIG4ocil7Y29uc3QgaT1yO3JldHVybiB4Lm9iamVjdExpdGVyYWwoaSkmJnguc3RyaW5nKGkubGFiZWwpJiYoeC5ib29sZWFuKGkubmVlZHNDb25maXJtYXRpb24pfHxpLm5lZWRzQ29uZmlybWF0aW9uPT09dm9pZCAwKSYmKHguc3RyaW5nKGkuZGVzY3JpcHRpb24pfHxpLmRlc2NyaXB0aW9uPT09dm9pZCAwKX1lLmlzPW59KShYaXx8KFhpPXt9KSk7dmFyIFl0OyhmdW5jdGlvbihlKXtmdW5jdGlvbiB0KG4pe2NvbnN0IHI9bjtyZXR1cm4geC5zdHJpbmcocil9ZS5pcz10fSkoWXR8fChZdD17fSkpO3ZhciBVbDsoZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChzLGEsbCl7cmV0dXJue3JhbmdlOnMsbmV3VGV4dDphLGFubm90YXRpb25JZDpsfX1lLnJlcGxhY2U9dDtmdW5jdGlvbiBuKHMsYSxsKXtyZXR1cm57cmFuZ2U6e3N0YXJ0OnMsZW5kOnN9LG5ld1RleHQ6YSxhbm5vdGF0aW9uSWQ6bH19ZS5pbnNlcnQ9bjtmdW5jdGlvbiByKHMsYSl7cmV0dXJue3JhbmdlOnMsbmV3VGV4dDoiIixhbm5vdGF0aW9uSWQ6YX19ZS5kZWw9cjtmdW5jdGlvbiBpKHMpe2NvbnN0IGE9cztyZXR1cm4gJC5pcyhhKSYmKFhpLmlzKGEuYW5ub3RhdGlvbklkKXx8WXQuaXMoYS5hbm5vdGF0aW9uSWQpKX1lLmlzPWl9KShVbHx8KFVsPXt9KSk7dmFyIGZyOyhmdW5jdGlvbihlKXtmdW5jdGlvbiB0KHIsaSl7cmV0dXJue3RleHREb2N1bWVudDpyLGVkaXRzOml9fWUuY3JlYXRlPXQ7ZnVuY3Rpb24gbihyKXtsZXQgaT1yO3JldHVybiB4LmRlZmluZWQoaSkmJnRzLmlzKGkudGV4dERvY3VtZW50KSYmQXJyYXkuaXNBcnJheShpLmVkaXRzKX1lLmlzPW59KShmcnx8KGZyPXt9KSk7dmFyIFlpOyhmdW5jdGlvbihlKXtmdW5jdGlvbiB0KHIsaSxzKXtsZXQgYT17a2luZDoiY3JlYXRlIix1cmk6cn07cmV0dXJuIGkhPT12b2lkIDAmJihpLm92ZXJ3cml0ZSE9PXZvaWQgMHx8aS5pZ25vcmVJZkV4aXN0cyE9PXZvaWQgMCkmJihhLm9wdGlvbnM9aSkscyE9PXZvaWQgMCYmKGEuYW5ub3RhdGlvbklkPXMpLGF9ZS5jcmVhdGU9dDtmdW5jdGlvbiBuKHIpe2xldCBpPXI7cmV0dXJuIGkmJmkua2luZD09PSJjcmVhdGUiJiZ4LnN0cmluZyhpLnVyaSkmJihpLm9wdGlvbnM9PT12b2lkIDB8fChpLm9wdGlvbnMub3ZlcndyaXRlPT09dm9pZCAwfHx4LmJvb2xlYW4oaS5vcHRpb25zLm92ZXJ3cml0ZSkpJiYoaS5vcHRpb25zLmlnbm9yZUlmRXhpc3RzPT09dm9pZCAwfHx4LmJvb2xlYW4oaS5vcHRpb25zLmlnbm9yZUlmRXhpc3RzKSkpJiYoaS5hbm5vdGF0aW9uSWQ9PT12b2lkIDB8fFl0LmlzKGkuYW5ub3RhdGlvbklkKSl9ZS5pcz1ufSkoWWl8fChZaT17fSkpO3ZhciBRaTsoZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChyLGkscyxhKXtsZXQgbD17a2luZDoicmVuYW1lIixvbGRVcmk6cixuZXdVcmk6aX07cmV0dXJuIHMhPT12b2lkIDAmJihzLm92ZXJ3cml0ZSE9PXZvaWQgMHx8cy5pZ25vcmVJZkV4aXN0cyE9PXZvaWQgMCkmJihsLm9wdGlvbnM9cyksYSE9PXZvaWQgMCYmKGwuYW5ub3RhdGlvbklkPWEpLGx9ZS5jcmVhdGU9dDtmdW5jdGlvbiBuKHIpe2xldCBpPXI7cmV0dXJuIGkmJmkua2luZD09PSJyZW5hbWUiJiZ4LnN0cmluZyhpLm9sZFVyaSkmJnguc3RyaW5nKGkubmV3VXJpKSYmKGkub3B0aW9ucz09PXZvaWQgMHx8KGkub3B0aW9ucy5vdmVyd3JpdGU9PT12b2lkIDB8fHguYm9vbGVhbihpLm9wdGlvbnMub3ZlcndyaXRlKSkmJihpLm9wdGlvbnMuaWdub3JlSWZFeGlzdHM9PT12b2lkIDB8fHguYm9vbGVhbihpLm9wdGlvbnMuaWdub3JlSWZFeGlzdHMpKSkmJihpLmFubm90YXRpb25JZD09PXZvaWQgMHx8WXQuaXMoaS5hbm5vdGF0aW9uSWQpKX1lLmlzPW59KShRaXx8KFFpPXt9KSk7dmFyIEtpOyhmdW5jdGlvbihlKXtmdW5jdGlvbiB0KHIsaSxzKXtsZXQgYT17a2luZDoiZGVsZXRlIix1cmk6cn07cmV0dXJuIGkhPT12b2lkIDAmJihpLnJlY3Vyc2l2ZSE9PXZvaWQgMHx8aS5pZ25vcmVJZk5vdEV4aXN0cyE9PXZvaWQgMCkmJihhLm9wdGlvbnM9aSkscyE9PXZvaWQgMCYmKGEuYW5ub3RhdGlvbklkPXMpLGF9ZS5jcmVhdGU9dDtmdW5jdGlvbiBuKHIpe2xldCBpPXI7cmV0dXJuIGkmJmkua2luZD09PSJkZWxldGUiJiZ4LnN0cmluZyhpLnVyaSkmJihpLm9wdGlvbnM9PT12b2lkIDB8fChpLm9wdGlvbnMucmVjdXJzaXZlPT09dm9pZCAwfHx4LmJvb2xlYW4oaS5vcHRpb25zLnJlY3Vyc2l2ZSkpJiYoaS5vcHRpb25zLmlnbm9yZUlmTm90RXhpc3RzPT09dm9pZCAwfHx4LmJvb2xlYW4oaS5vcHRpb25zLmlnbm9yZUlmTm90RXhpc3RzKSkpJiYoaS5hbm5vdGF0aW9uSWQ9PT12b2lkIDB8fFl0LmlzKGkuYW5ub3RhdGlvbklkKSl9ZS5pcz1ufSkoS2l8fChLaT17fSkpO3ZhciBaaTsoZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChuKXtsZXQgcj1uO3JldHVybiByJiYoci5jaGFuZ2VzIT09dm9pZCAwfHxyLmRvY3VtZW50Q2hhbmdlcyE9PXZvaWQgMCkmJihyLmRvY3VtZW50Q2hhbmdlcz09PXZvaWQgMHx8ci5kb2N1bWVudENoYW5nZXMuZXZlcnkoaT0+eC5zdHJpbmcoaS5raW5kKT9ZaS5pcyhpKXx8UWkuaXMoaSl8fEtpLmlzKGkpOmZyLmlzKGkpKSl9ZS5pcz10fSkoWml8fChaaT17fSkpO3ZhciBWbDsoZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChyKXtyZXR1cm57dXJpOnJ9fWUuY3JlYXRlPXQ7ZnVuY3Rpb24gbihyKXtsZXQgaT1yO3JldHVybiB4LmRlZmluZWQoaSkmJnguc3RyaW5nKGkudXJpKX1lLmlzPW59KShWbHx8KFZsPXt9KSk7dmFyIGVzOyhmdW5jdGlvbihlKXtmdW5jdGlvbiB0KHIsaSl7cmV0dXJue3VyaTpyLHZlcnNpb246aX19ZS5jcmVhdGU9dDtmdW5jdGlvbiBuKHIpe2xldCBpPXI7cmV0dXJuIHguZGVmaW5lZChpKSYmeC5zdHJpbmcoaS51cmkpJiZ4LmludGVnZXIoaS52ZXJzaW9uKX1lLmlzPW59KShlc3x8KGVzPXt9KSk7dmFyIHRzOyhmdW5jdGlvbihlKXtmdW5jdGlvbiB0KHIsaSl7cmV0dXJue3VyaTpyLHZlcnNpb246aX19ZS5jcmVhdGU9dDtmdW5jdGlvbiBuKHIpe2xldCBpPXI7cmV0dXJuIHguZGVmaW5lZChpKSYmeC5zdHJpbmcoaS51cmkpJiYoaS52ZXJzaW9uPT09bnVsbHx8eC5pbnRlZ2VyKGkudmVyc2lvbikpfWUuaXM9bn0pKHRzfHwodHM9e30pKTt2YXIgJGw7KGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQocixpLHMsYSl7cmV0dXJue3VyaTpyLGxhbmd1YWdlSWQ6aSx2ZXJzaW9uOnMsdGV4dDphfX1lLmNyZWF0ZT10O2Z1bmN0aW9uIG4ocil7bGV0IGk9cjtyZXR1cm4geC5kZWZpbmVkKGkpJiZ4LnN0cmluZyhpLnVyaSkmJnguc3RyaW5nKGkubGFuZ3VhZ2VJZCkmJnguaW50ZWdlcihpLnZlcnNpb24pJiZ4LnN0cmluZyhpLnRleHQpfWUuaXM9bn0pKCRsfHwoJGw9e30pKTt2YXIgamU7KGZ1bmN0aW9uKGUpe2UuUGxhaW5UZXh0PSJwbGFpbnRleHQiLGUuTWFya2Rvd249Im1hcmtkb3duIjtmdW5jdGlvbiB0KG4pe2NvbnN0IHI9bjtyZXR1cm4gcj09PWUuUGxhaW5UZXh0fHxyPT09ZS5NYXJrZG93bn1lLmlzPXR9KShqZXx8KGplPXt9KSk7dmFyIE5uOyhmdW5jdGlvbihlKXtmdW5jdGlvbiB0KG4pe2NvbnN0IHI9bjtyZXR1cm4geC5vYmplY3RMaXRlcmFsKG4pJiZqZS5pcyhyLmtpbmQpJiZ4LnN0cmluZyhyLnZhbHVlKX1lLmlzPXR9KShObnx8KE5uPXt9KSk7dmFyIFY7KGZ1bmN0aW9uKGUpe2UuVGV4dD0xLGUuTWV0aG9kPTIsZS5GdW5jdGlvbj0zLGUuQ29uc3RydWN0b3I9NCxlLkZpZWxkPTUsZS5WYXJpYWJsZT02LGUuQ2xhc3M9NyxlLkludGVyZmFjZT04LGUuTW9kdWxlPTksZS5Qcm9wZXJ0eT0xMCxlLlVuaXQ9MTEsZS5WYWx1ZT0xMixlLkVudW09MTMsZS5LZXl3b3JkPTE0LGUuU25pcHBldD0xNSxlLkNvbG9yPTE2LGUuRmlsZT0xNyxlLlJlZmVyZW5jZT0xOCxlLkZvbGRlcj0xOSxlLkVudW1NZW1iZXI9MjAsZS5Db25zdGFudD0yMSxlLlN0cnVjdD0yMixlLkV2ZW50PTIzLGUuT3BlcmF0b3I9MjQsZS5UeXBlUGFyYW1ldGVyPTI1fSkoVnx8KFY9e30pKTt2YXIgTmU7KGZ1bmN0aW9uKGUpe2UuUGxhaW5UZXh0PTEsZS5TbmlwcGV0PTJ9KShOZXx8KE5lPXt9KSk7dmFyIFJ0OyhmdW5jdGlvbihlKXtlLkRlcHJlY2F0ZWQ9MX0pKFJ0fHwoUnQ9e30pKTt2YXIgQmw7KGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQocixpLHMpe3JldHVybntuZXdUZXh0OnIsaW5zZXJ0OmkscmVwbGFjZTpzfX1lLmNyZWF0ZT10O2Z1bmN0aW9uIG4ocil7Y29uc3QgaT1yO3JldHVybiBpJiZ4LnN0cmluZyhpLm5ld1RleHQpJiZYLmlzKGkuaW5zZXJ0KSYmWC5pcyhpLnJlcGxhY2UpfWUuaXM9bn0pKEJsfHwoQmw9e30pKTt2YXIgcWw7KGZ1bmN0aW9uKGUpe2UuYXNJcz0xLGUuYWRqdXN0SW5kZW50YXRpb249Mn0pKHFsfHwocWw9e30pKTt2YXIgamw7KGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQobil7Y29uc3Qgcj1uO3JldHVybiByJiYoeC5zdHJpbmcoci5kZXRhaWwpfHxyLmRldGFpbD09PXZvaWQgMCkmJih4LnN0cmluZyhyLmRlc2NyaXB0aW9uKXx8ci5kZXNjcmlwdGlvbj09PXZvaWQgMCl9ZS5pcz10fSkoamx8fChqbD17fSkpO3ZhciBIbDsoZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChuKXtyZXR1cm57bGFiZWw6bn19ZS5jcmVhdGU9dH0pKEhsfHwoSGw9e30pKTt2YXIgR2w7KGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQobixyKXtyZXR1cm57aXRlbXM6bnx8W10saXNJbmNvbXBsZXRlOiEhcn19ZS5jcmVhdGU9dH0pKEdsfHwoR2w9e30pKTt2YXIgZ3I7KGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQocil7cmV0dXJuIHIucmVwbGFjZSgvW1xcYCpfe31bXF0oKSMrXC0uIV0vZywiXFwkJiIpfWUuZnJvbVBsYWluVGV4dD10O2Z1bmN0aW9uIG4ocil7Y29uc3QgaT1yO3JldHVybiB4LnN0cmluZyhpKXx8eC5vYmplY3RMaXRlcmFsKGkpJiZ4LnN0cmluZyhpLmxhbmd1YWdlKSYmeC5zdHJpbmcoaS52YWx1ZSl9ZS5pcz1ufSkoZ3J8fChncj17fSkpO3ZhciBKbDsoZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChuKXtsZXQgcj1uO3JldHVybiEhciYmeC5vYmplY3RMaXRlcmFsKHIpJiYoTm4uaXMoci5jb250ZW50cyl8fGdyLmlzKHIuY29udGVudHMpfHx4LnR5cGVkQXJyYXkoci5jb250ZW50cyxnci5pcykpJiYobi5yYW5nZT09PXZvaWQgMHx8WC5pcyhuLnJhbmdlKSl9ZS5pcz10fSkoSmx8fChKbD17fSkpO3ZhciBYbDsoZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChuLHIpe3JldHVybiByP3tsYWJlbDpuLGRvY3VtZW50YXRpb246cn06e2xhYmVsOm59fWUuY3JlYXRlPXR9KShYbHx8KFhsPXt9KSk7dmFyIFlsOyhmdW5jdGlvbihlKXtmdW5jdGlvbiB0KG4sciwuLi5pKXtsZXQgcz17bGFiZWw6bn07cmV0dXJuIHguZGVmaW5lZChyKSYmKHMuZG9jdW1lbnRhdGlvbj1yKSx4LmRlZmluZWQoaSk/cy5wYXJhbWV0ZXJzPWk6cy5wYXJhbWV0ZXJzPVtdLHN9ZS5jcmVhdGU9dH0pKFlsfHwoWWw9e30pKTt2YXIgUXQ7KGZ1bmN0aW9uKGUpe2UuVGV4dD0xLGUuUmVhZD0yLGUuV3JpdGU9M30pKFF0fHwoUXQ9e30pKTt2YXIgUWw7KGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQobixyKXtsZXQgaT17cmFuZ2U6bn07cmV0dXJuIHgubnVtYmVyKHIpJiYoaS5raW5kPXIpLGl9ZS5jcmVhdGU9dH0pKFFsfHwoUWw9e30pKTt2YXIgbnQ7KGZ1bmN0aW9uKGUpe2UuRmlsZT0xLGUuTW9kdWxlPTIsZS5OYW1lc3BhY2U9MyxlLlBhY2thZ2U9NCxlLkNsYXNzPTUsZS5NZXRob2Q9NixlLlByb3BlcnR5PTcsZS5GaWVsZD04LGUuQ29uc3RydWN0b3I9OSxlLkVudW09MTAsZS5JbnRlcmZhY2U9MTEsZS5GdW5jdGlvbj0xMixlLlZhcmlhYmxlPTEzLGUuQ29uc3RhbnQ9MTQsZS5TdHJpbmc9MTUsZS5OdW1iZXI9MTYsZS5Cb29sZWFuPTE3LGUuQXJyYXk9MTgsZS5PYmplY3Q9MTksZS5LZXk9MjAsZS5OdWxsPTIxLGUuRW51bU1lbWJlcj0yMixlLlN0cnVjdD0yMyxlLkV2ZW50PTI0LGUuT3BlcmF0b3I9MjUsZS5UeXBlUGFyYW1ldGVyPTI2fSkobnR8fChudD17fSkpO3ZhciBLbDsoZnVuY3Rpb24oZSl7ZS5EZXByZWNhdGVkPTF9KShLbHx8KEtsPXt9KSk7dmFyIFpsOyhmdW5jdGlvbihlKXtmdW5jdGlvbiB0KG4scixpLHMsYSl7bGV0IGw9e25hbWU6bixraW5kOnIsbG9jYXRpb246e3VyaTpzLHJhbmdlOml9fTtyZXR1cm4gYSYmKGwuY29udGFpbmVyTmFtZT1hKSxsfWUuY3JlYXRlPXR9KShabHx8KFpsPXt9KSk7dmFyIGVjOyhmdW5jdGlvbihlKXtmdW5jdGlvbiB0KG4scixpLHMpe3JldHVybiBzIT09dm9pZCAwP3tuYW1lOm4sa2luZDpyLGxvY2F0aW9uOnt1cmk6aSxyYW5nZTpzfX06e25hbWU6bixraW5kOnIsbG9jYXRpb246e3VyaTppfX19ZS5jcmVhdGU9dH0pKGVjfHwoZWM9e30pKTt2YXIgdGM7KGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQocixpLHMsYSxsLG8pe2xldCBjPXtuYW1lOnIsZGV0YWlsOmksa2luZDpzLHJhbmdlOmEsc2VsZWN0aW9uUmFuZ2U6bH07cmV0dXJuIG8hPT12b2lkIDAmJihjLmNoaWxkcmVuPW8pLGN9ZS5jcmVhdGU9dDtmdW5jdGlvbiBuKHIpe2xldCBpPXI7cmV0dXJuIGkmJnguc3RyaW5nKGkubmFtZSkmJngubnVtYmVyKGkua2luZCkmJlguaXMoaS5yYW5nZSkmJlguaXMoaS5zZWxlY3Rpb25SYW5nZSkmJihpLmRldGFpbD09PXZvaWQgMHx8eC5zdHJpbmcoaS5kZXRhaWwpKSYmKGkuZGVwcmVjYXRlZD09PXZvaWQgMHx8eC5ib29sZWFuKGkuZGVwcmVjYXRlZCkpJiYoaS5jaGlsZHJlbj09PXZvaWQgMHx8QXJyYXkuaXNBcnJheShpLmNoaWxkcmVuKSkmJihpLnRhZ3M9PT12b2lkIDB8fEFycmF5LmlzQXJyYXkoaS50YWdzKSl9ZS5pcz1ufSkodGN8fCh0Yz17fSkpO3ZhciBuczsoZnVuY3Rpb24oZSl7ZS5FbXB0eT0iIixlLlF1aWNrRml4PSJxdWlja2ZpeCIsZS5SZWZhY3Rvcj0icmVmYWN0b3IiLGUuUmVmYWN0b3JFeHRyYWN0PSJyZWZhY3Rvci5leHRyYWN0IixlLlJlZmFjdG9ySW5saW5lPSJyZWZhY3Rvci5pbmxpbmUiLGUuUmVmYWN0b3JSZXdyaXRlPSJyZWZhY3Rvci5yZXdyaXRlIixlLlNvdXJjZT0ic291cmNlIixlLlNvdXJjZU9yZ2FuaXplSW1wb3J0cz0ic291cmNlLm9yZ2FuaXplSW1wb3J0cyIsZS5Tb3VyY2VGaXhBbGw9InNvdXJjZS5maXhBbGwifSkobnN8fChucz17fSkpO3ZhciBicjsoZnVuY3Rpb24oZSl7ZS5JbnZva2VkPTEsZS5BdXRvbWF0aWM9Mn0pKGJyfHwoYnI9e30pKTt2YXIgbmM7KGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQocixpLHMpe2xldCBhPXtkaWFnbm9zdGljczpyfTtyZXR1cm4gaSE9bnVsbCYmKGEub25seT1pKSxzIT1udWxsJiYoYS50cmlnZ2VyS2luZD1zKSxhfWUuY3JlYXRlPXQ7ZnVuY3Rpb24gbihyKXtsZXQgaT1yO3JldHVybiB4LmRlZmluZWQoaSkmJngudHlwZWRBcnJheShpLmRpYWdub3N0aWNzLG1yLmlzKSYmKGkub25seT09PXZvaWQgMHx8eC50eXBlZEFycmF5KGkub25seSx4LnN0cmluZykpJiYoaS50cmlnZ2VyS2luZD09PXZvaWQgMHx8aS50cmlnZ2VyS2luZD09PWJyLkludm9rZWR8fGkudHJpZ2dlcktpbmQ9PT1ici5BdXRvbWF0aWMpfWUuaXM9bn0pKG5jfHwobmM9e30pKTt2YXIgcnM7KGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQocixpLHMpe2xldCBhPXt0aXRsZTpyfSxsPSEwO3JldHVybiB0eXBlb2YgaT09InN0cmluZyI/KGw9ITEsYS5raW5kPWkpOkZ0LmlzKGkpP2EuY29tbWFuZD1pOmEuZWRpdD1pLGwmJnMhPT12b2lkIDAmJihhLmtpbmQ9cyksYX1lLmNyZWF0ZT10O2Z1bmN0aW9uIG4ocil7bGV0IGk9cjtyZXR1cm4gaSYmeC5zdHJpbmcoaS50aXRsZSkmJihpLmRpYWdub3N0aWNzPT09dm9pZCAwfHx4LnR5cGVkQXJyYXkoaS5kaWFnbm9zdGljcyxtci5pcykpJiYoaS5raW5kPT09dm9pZCAwfHx4LnN0cmluZyhpLmtpbmQpKSYmKGkuZWRpdCE9PXZvaWQgMHx8aS5jb21tYW5kIT09dm9pZCAwKSYmKGkuY29tbWFuZD09PXZvaWQgMHx8RnQuaXMoaS5jb21tYW5kKSkmJihpLmlzUHJlZmVycmVkPT09dm9pZCAwfHx4LmJvb2xlYW4oaS5pc1ByZWZlcnJlZCkpJiYoaS5lZGl0PT09dm9pZCAwfHxaaS5pcyhpLmVkaXQpKX1lLmlzPW59KShyc3x8KHJzPXt9KSk7dmFyIHJjOyhmdW5jdGlvbihlKXtmdW5jdGlvbiB0KHIsaSl7bGV0IHM9e3JhbmdlOnJ9O3JldHVybiB4LmRlZmluZWQoaSkmJihzLmRhdGE9aSksc31lLmNyZWF0ZT10O2Z1bmN0aW9uIG4ocil7bGV0IGk9cjtyZXR1cm4geC5kZWZpbmVkKGkpJiZYLmlzKGkucmFuZ2UpJiYoeC51bmRlZmluZWQoaS5jb21tYW5kKXx8RnQuaXMoaS5jb21tYW5kKSl9ZS5pcz1ufSkocmN8fChyYz17fSkpO3ZhciBpYzsoZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChyLGkpe3JldHVybnt0YWJTaXplOnIsaW5zZXJ0U3BhY2VzOml9fWUuY3JlYXRlPXQ7ZnVuY3Rpb24gbihyKXtsZXQgaT1yO3JldHVybiB4LmRlZmluZWQoaSkmJngudWludGVnZXIoaS50YWJTaXplKSYmeC5ib29sZWFuKGkuaW5zZXJ0U3BhY2VzKX1lLmlzPW59KShpY3x8KGljPXt9KSk7dmFyIHNjOyhmdW5jdGlvbihlKXtmdW5jdGlvbiB0KHIsaSxzKXtyZXR1cm57cmFuZ2U6cix0YXJnZXQ6aSxkYXRhOnN9fWUuY3JlYXRlPXQ7ZnVuY3Rpb24gbihyKXtsZXQgaT1yO3JldHVybiB4LmRlZmluZWQoaSkmJlguaXMoaS5yYW5nZSkmJih4LnVuZGVmaW5lZChpLnRhcmdldCl8fHguc3RyaW5nKGkudGFyZ2V0KSl9ZS5pcz1ufSkoc2N8fChzYz17fSkpO3ZhciB2cjsoZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChyLGkpe3JldHVybntyYW5nZTpyLHBhcmVudDppfX1lLmNyZWF0ZT10O2Z1bmN0aW9uIG4ocil7bGV0IGk9cjtyZXR1cm4geC5vYmplY3RMaXRlcmFsKGkpJiZYLmlzKGkucmFuZ2UpJiYoaS5wYXJlbnQ9PT12b2lkIDB8fGUuaXMoaS5wYXJlbnQpKX1lLmlzPW59KSh2cnx8KHZyPXt9KSk7dmFyIGFjOyhmdW5jdGlvbihlKXtlLm5hbWVzcGFjZT0ibmFtZXNwYWNlIixlLnR5cGU9InR5cGUiLGUuY2xhc3M9ImNsYXNzIixlLmVudW09ImVudW0iLGUuaW50ZXJmYWNlPSJpbnRlcmZhY2UiLGUuc3RydWN0PSJzdHJ1Y3QiLGUudHlwZVBhcmFtZXRlcj0idHlwZVBhcmFtZXRlciIsZS5wYXJhbWV0ZXI9InBhcmFtZXRlciIsZS52YXJpYWJsZT0idmFyaWFibGUiLGUucHJvcGVydHk9InByb3BlcnR5IixlLmVudW1NZW1iZXI9ImVudW1NZW1iZXIiLGUuZXZlbnQ9ImV2ZW50IixlLmZ1bmN0aW9uPSJmdW5jdGlvbiIsZS5tZXRob2Q9Im1ldGhvZCIsZS5tYWNybz0ibWFjcm8iLGUua2V5d29yZD0ia2V5d29yZCIsZS5tb2RpZmllcj0ibW9kaWZpZXIiLGUuY29tbWVudD0iY29tbWVudCIsZS5zdHJpbmc9InN0cmluZyIsZS5udW1iZXI9Im51bWJlciIsZS5yZWdleHA9InJlZ2V4cCIsZS5vcGVyYXRvcj0ib3BlcmF0b3IiLGUuZGVjb3JhdG9yPSJkZWNvcmF0b3IifSkoYWN8fChhYz17fSkpO3ZhciBvYzsoZnVuY3Rpb24oZSl7ZS5kZWNsYXJhdGlvbj0iZGVjbGFyYXRpb24iLGUuZGVmaW5pdGlvbj0iZGVmaW5pdGlvbiIsZS5yZWFkb25seT0icmVhZG9ubHkiLGUuc3RhdGljPSJzdGF0aWMiLGUuZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIsZS5hYnN0cmFjdD0iYWJzdHJhY3QiLGUuYXN5bmM9ImFzeW5jIixlLm1vZGlmaWNhdGlvbj0ibW9kaWZpY2F0aW9uIixlLmRvY3VtZW50YXRpb249ImRvY3VtZW50YXRpb24iLGUuZGVmYXVsdExpYnJhcnk9ImRlZmF1bHRMaWJyYXJ5In0pKG9jfHwob2M9e30pKTt2YXIgbGM7KGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQobil7Y29uc3Qgcj1uO3JldHVybiB4Lm9iamVjdExpdGVyYWwocikmJihyLnJlc3VsdElkPT09dm9pZCAwfHx0eXBlb2Ygci5yZXN1bHRJZD09InN0cmluZyIpJiZBcnJheS5pc0FycmF5KHIuZGF0YSkmJihyLmRhdGEubGVuZ3RoPT09MHx8dHlwZW9mIHIuZGF0YVswXT09Im51bWJlciIpfWUuaXM9dH0pKGxjfHwobGM9e30pKTt2YXIgY2M7KGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQocixpKXtyZXR1cm57cmFuZ2U6cix0ZXh0Oml9fWUuY3JlYXRlPXQ7ZnVuY3Rpb24gbihyKXtjb25zdCBpPXI7cmV0dXJuIGkhPW51bGwmJlguaXMoaS5yYW5nZSkmJnguc3RyaW5nKGkudGV4dCl9ZS5pcz1ufSkoY2N8fChjYz17fSkpO3ZhciBoYzsoZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChyLGkscyl7cmV0dXJue3JhbmdlOnIsdmFyaWFibGVOYW1lOmksY2FzZVNlbnNpdGl2ZUxvb2t1cDpzfX1lLmNyZWF0ZT10O2Z1bmN0aW9uIG4ocil7Y29uc3QgaT1yO3JldHVybiBpIT1udWxsJiZYLmlzKGkucmFuZ2UpJiZ4LmJvb2xlYW4oaS5jYXNlU2Vuc2l0aXZlTG9va3VwKSYmKHguc3RyaW5nKGkudmFyaWFibGVOYW1lKXx8aS52YXJpYWJsZU5hbWU9PT12b2lkIDApfWUuaXM9bn0pKGhjfHwoaGM9e30pKTt2YXIgZGM7KGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQocixpKXtyZXR1cm57cmFuZ2U6cixleHByZXNzaW9uOml9fWUuY3JlYXRlPXQ7ZnVuY3Rpb24gbihyKXtjb25zdCBpPXI7cmV0dXJuIGkhPW51bGwmJlguaXMoaS5yYW5nZSkmJih4LnN0cmluZyhpLmV4cHJlc3Npb24pfHxpLmV4cHJlc3Npb249PT12b2lkIDApfWUuaXM9bn0pKGRjfHwoZGM9e30pKTt2YXIgdWM7KGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQocixpKXtyZXR1cm57ZnJhbWVJZDpyLHN0b3BwZWRMb2NhdGlvbjppfX1lLmNyZWF0ZT10O2Z1bmN0aW9uIG4ocil7Y29uc3QgaT1yO3JldHVybiB4LmRlZmluZWQoaSkmJlguaXMoci5zdG9wcGVkTG9jYXRpb24pfWUuaXM9bn0pKHVjfHwodWM9e30pKTt2YXIgaXM7KGZ1bmN0aW9uKGUpe2UuVHlwZT0xLGUuUGFyYW1ldGVyPTI7ZnVuY3Rpb24gdChuKXtyZXR1cm4gbj09PTF8fG49PT0yfWUuaXM9dH0pKGlzfHwoaXM9e30pKTt2YXIgc3M7KGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQocil7cmV0dXJue3ZhbHVlOnJ9fWUuY3JlYXRlPXQ7ZnVuY3Rpb24gbihyKXtjb25zdCBpPXI7cmV0dXJuIHgub2JqZWN0TGl0ZXJhbChpKSYmKGkudG9vbHRpcD09PXZvaWQgMHx8eC5zdHJpbmcoaS50b29sdGlwKXx8Tm4uaXMoaS50b29sdGlwKSkmJihpLmxvY2F0aW9uPT09dm9pZCAwfHxSbi5pcyhpLmxvY2F0aW9uKSkmJihpLmNvbW1hbmQ9PT12b2lkIDB8fEZ0LmlzKGkuY29tbWFuZCkpfWUuaXM9bn0pKHNzfHwoc3M9e30pKTt2YXIgcGM7KGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQocixpLHMpe2NvbnN0IGE9e3Bvc2l0aW9uOnIsbGFiZWw6aX07cmV0dXJuIHMhPT12b2lkIDAmJihhLmtpbmQ9cyksYX1lLmNyZWF0ZT10O2Z1bmN0aW9uIG4ocil7Y29uc3QgaT1yO3JldHVybiB4Lm9iamVjdExpdGVyYWwoaSkmJnhlLmlzKGkucG9zaXRpb24pJiYoeC5zdHJpbmcoaS5sYWJlbCl8fHgudHlwZWRBcnJheShpLmxhYmVsLHNzLmlzKSkmJihpLmtpbmQ9PT12b2lkIDB8fGlzLmlzKGkua2luZCkpJiZpLnRleHRFZGl0cz09PXZvaWQgMHx8eC50eXBlZEFycmF5KGkudGV4dEVkaXRzLCQuaXMpJiYoaS50b29sdGlwPT09dm9pZCAwfHx4LnN0cmluZyhpLnRvb2x0aXApfHxObi5pcyhpLnRvb2x0aXApKSYmKGkucGFkZGluZ0xlZnQ9PT12b2lkIDB8fHguYm9vbGVhbihpLnBhZGRpbmdMZWZ0KSkmJihpLnBhZGRpbmdSaWdodD09PXZvaWQgMHx8eC5ib29sZWFuKGkucGFkZGluZ1JpZ2h0KSl9ZS5pcz1ufSkocGN8fChwYz17fSkpO3ZhciBtYzsoZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChuKXtyZXR1cm57a2luZDoic25pcHBldCIsdmFsdWU6bn19ZS5jcmVhdGVTbmlwcGV0PXR9KShtY3x8KG1jPXt9KSk7dmFyIGZjOyhmdW5jdGlvbihlKXtmdW5jdGlvbiB0KG4scixpLHMpe3JldHVybntpbnNlcnRUZXh0Om4sZmlsdGVyVGV4dDpyLHJhbmdlOmksY29tbWFuZDpzfX1lLmNyZWF0ZT10fSkoZmN8fChmYz17fSkpO3ZhciBnYzsoZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChuKXtyZXR1cm57aXRlbXM6bn19ZS5jcmVhdGU9dH0pKGdjfHwoZ2M9e30pKTt2YXIgYmM7KGZ1bmN0aW9uKGUpe2UuSW52b2tlZD0wLGUuQXV0b21hdGljPTF9KShiY3x8KGJjPXt9KSk7dmFyIHZjOyhmdW5jdGlvbihlKXtmdW5jdGlvbiB0KG4scil7cmV0dXJue3JhbmdlOm4sdGV4dDpyfX1lLmNyZWF0ZT10fSkodmN8fCh2Yz17fSkpO3ZhciB3YzsoZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChuLHIpe3JldHVybnt0cmlnZ2VyS2luZDpuLHNlbGVjdGVkQ29tcGxldGlvbkluZm86cn19ZS5jcmVhdGU9dH0pKHdjfHwod2M9e30pKTt2YXIgeWM7KGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQobil7Y29uc3Qgcj1uO3JldHVybiB4Lm9iamVjdExpdGVyYWwocikmJkhpLmlzKHIudXJpKSYmeC5zdHJpbmcoci5uYW1lKX1lLmlzPXR9KSh5Y3x8KHljPXt9KSk7dmFyIHhjOyhmdW5jdGlvbihlKXtmdW5jdGlvbiB0KHMsYSxsLG8pe3JldHVybiBuZXcgYW0ocyxhLGwsbyl9ZS5jcmVhdGU9dDtmdW5jdGlvbiBuKHMpe2xldCBhPXM7cmV0dXJuISEoeC5kZWZpbmVkKGEpJiZ4LnN0cmluZyhhLnVyaSkmJih4LnVuZGVmaW5lZChhLmxhbmd1YWdlSWQpfHx4LnN0cmluZyhhLmxhbmd1YWdlSWQpKSYmeC51aW50ZWdlcihhLmxpbmVDb3VudCkmJnguZnVuYyhhLmdldFRleHQpJiZ4LmZ1bmMoYS5wb3NpdGlvbkF0KSYmeC5mdW5jKGEub2Zmc2V0QXQpKX1lLmlzPW47ZnVuY3Rpb24gcihzLGEpe2xldCBsPXMuZ2V0VGV4dCgpLG89aShhLChkLHUpPT57bGV0IGY9ZC5yYW5nZS5zdGFydC5saW5lLXUucmFuZ2Uuc3RhcnQubGluZTtyZXR1cm4gZj09PTA/ZC5yYW5nZS5zdGFydC5jaGFyYWN0ZXItdS5yYW5nZS5zdGFydC5jaGFyYWN0ZXI6Zn0pLGM9bC5sZW5ndGg7Zm9yKGxldCBkPW8ubGVuZ3RoLTE7ZD49MDtkLS0pe2xldCB1PW9bZF0sZj1zLm9mZnNldEF0KHUucmFuZ2Uuc3RhcnQpLG09cy5vZmZzZXRBdCh1LnJhbmdlLmVuZCk7aWYobTw9YylsPWwuc3Vic3RyaW5nKDAsZikrdS5uZXdUZXh0K2wuc3Vic3RyaW5nKG0sbC5sZW5ndGgpO2Vsc2UgdGhyb3cgbmV3IEVycm9yKCJPdmVybGFwcGluZyBlZGl0Iik7Yz1mfXJldHVybiBsfWUuYXBwbHlFZGl0cz1yO2Z1bmN0aW9uIGkocyxhKXtpZihzLmxlbmd0aDw9MSlyZXR1cm4gcztjb25zdCBsPXMubGVuZ3RoLzJ8MCxvPXMuc2xpY2UoMCxsKSxjPXMuc2xpY2UobCk7aShvLGEpLGkoYyxhKTtsZXQgZD0wLHU9MCxmPTA7Zm9yKDtkPG8ubGVuZ3RoJiZ1PGMubGVuZ3RoOylhKG9bZF0sY1t1XSk8PTA/c1tmKytdPW9bZCsrXTpzW2YrK109Y1t1KytdO2Zvcig7ZDxvLmxlbmd0aDspc1tmKytdPW9bZCsrXTtmb3IoO3U8Yy5sZW5ndGg7KXNbZisrXT1jW3UrK107cmV0dXJuIHN9fSkoeGN8fCh4Yz17fSkpO3ZhciBhbT1jbGFzc3tjb25zdHJ1Y3RvcihlLHQsbixyKXt0aGlzLl91cmk9ZSx0aGlzLl9sYW5ndWFnZUlkPXQsdGhpcy5fdmVyc2lvbj1uLHRoaXMuX2NvbnRlbnQ9cix0aGlzLl9saW5lT2Zmc2V0cz12b2lkIDB9Z2V0IHVyaSgpe3JldHVybiB0aGlzLl91cml9Z2V0IGxhbmd1YWdlSWQoKXtyZXR1cm4gdGhpcy5fbGFuZ3VhZ2VJZH1nZXQgdmVyc2lvbigpe3JldHVybiB0aGlzLl92ZXJzaW9ufWdldFRleHQoZSl7aWYoZSl7bGV0IHQ9dGhpcy5vZmZzZXRBdChlLnN0YXJ0KSxuPXRoaXMub2Zmc2V0QXQoZS5lbmQpO3JldHVybiB0aGlzLl9jb250ZW50LnN1YnN0cmluZyh0LG4pfXJldHVybiB0aGlzLl9jb250ZW50fXVwZGF0ZShlLHQpe3RoaXMuX2NvbnRlbnQ9ZS50ZXh0LHRoaXMuX3ZlcnNpb249dCx0aGlzLl9saW5lT2Zmc2V0cz12b2lkIDB9Z2V0TGluZU9mZnNldHMoKXtpZih0aGlzLl9saW5lT2Zmc2V0cz09PXZvaWQgMCl7bGV0IGU9W10sdD10aGlzLl9jb250ZW50LG49ITA7Zm9yKGxldCByPTA7cjx0Lmxlbmd0aDtyKyspe24mJihlLnB1c2gociksbj0hMSk7bGV0IGk9dC5jaGFyQXQocik7bj1pPT09IlxyInx8aT09PWAKYCxpPT09IlxyIiYmcisxPHQubGVuZ3RoJiZ0LmNoYXJBdChyKzEpPT09YApgJiZyKyt9biYmdC5sZW5ndGg+MCYmZS5wdXNoKHQubGVuZ3RoKSx0aGlzLl9saW5lT2Zmc2V0cz1lfXJldHVybiB0aGlzLl9saW5lT2Zmc2V0c31wb3NpdGlvbkF0KGUpe2U9TWF0aC5tYXgoTWF0aC5taW4oZSx0aGlzLl9jb250ZW50Lmxlbmd0aCksMCk7bGV0IHQ9dGhpcy5nZXRMaW5lT2Zmc2V0cygpLG49MCxyPXQubGVuZ3RoO2lmKHI9PT0wKXJldHVybiB4ZS5jcmVhdGUoMCxlKTtmb3IoO248cjspe2xldCBzPU1hdGguZmxvb3IoKG4rcikvMik7dFtzXT5lP3I9czpuPXMrMX1sZXQgaT1uLTE7cmV0dXJuIHhlLmNyZWF0ZShpLGUtdFtpXSl9b2Zmc2V0QXQoZSl7bGV0IHQ9dGhpcy5nZXRMaW5lT2Zmc2V0cygpO2lmKGUubGluZT49dC5sZW5ndGgpcmV0dXJuIHRoaXMuX2NvbnRlbnQubGVuZ3RoO2lmKGUubGluZTwwKXJldHVybiAwO2xldCBuPXRbZS5saW5lXSxyPWUubGluZSsxPHQubGVuZ3RoP3RbZS5saW5lKzFdOnRoaXMuX2NvbnRlbnQubGVuZ3RoO3JldHVybiBNYXRoLm1heChNYXRoLm1pbihuK2UuY2hhcmFjdGVyLHIpLG4pfWdldCBsaW5lQ291bnQoKXtyZXR1cm4gdGhpcy5nZXRMaW5lT2Zmc2V0cygpLmxlbmd0aH19LHg7KGZ1bmN0aW9uKGUpe2NvbnN0IHQ9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztmdW5jdGlvbiBuKG0pe3JldHVybiB0eXBlb2YgbTwidSJ9ZS5kZWZpbmVkPW47ZnVuY3Rpb24gcihtKXtyZXR1cm4gdHlwZW9mIG0+InUifWUudW5kZWZpbmVkPXI7ZnVuY3Rpb24gaShtKXtyZXR1cm4gbT09PSEwfHxtPT09ITF9ZS5ib29sZWFuPWk7ZnVuY3Rpb24gcyhtKXtyZXR1cm4gdC5jYWxsKG0pPT09IltvYmplY3QgU3RyaW5nXSJ9ZS5zdHJpbmc9cztmdW5jdGlvbiBhKG0pe3JldHVybiB0LmNhbGwobSk9PT0iW29iamVjdCBOdW1iZXJdIn1lLm51bWJlcj1hO2Z1bmN0aW9uIGwobSx2LHcpe3JldHVybiB0LmNhbGwobSk9PT0iW29iamVjdCBOdW1iZXJdIiYmdjw9bSYmbTw9d31lLm51bWJlclJhbmdlPWw7ZnVuY3Rpb24gbyhtKXtyZXR1cm4gdC5jYWxsKG0pPT09IltvYmplY3QgTnVtYmVyXSImJi0yMTQ3NDgzNjQ4PD1tJiZtPD0yMTQ3NDgzNjQ3fWUuaW50ZWdlcj1vO2Z1bmN0aW9uIGMobSl7cmV0dXJuIHQuY2FsbChtKT09PSJbb2JqZWN0IE51bWJlcl0iJiYwPD1tJiZtPD0yMTQ3NDgzNjQ3fWUudWludGVnZXI9YztmdW5jdGlvbiBkKG0pe3JldHVybiB0LmNhbGwobSk9PT0iW29iamVjdCBGdW5jdGlvbl0ifWUuZnVuYz1kO2Z1bmN0aW9uIHUobSl7cmV0dXJuIG0hPT1udWxsJiZ0eXBlb2YgbT09Im9iamVjdCJ9ZS5vYmplY3RMaXRlcmFsPXU7ZnVuY3Rpb24gZihtLHYpe3JldHVybiBBcnJheS5pc0FycmF5KG0pJiZtLmV2ZXJ5KHYpfWUudHlwZWRBcnJheT1mfSkoeHx8KHg9e30pKTt2YXIgU2M9Y2xhc3MgV3N7Y29uc3RydWN0b3IodCxuLHIsaSl7dGhpcy5fdXJpPXQsdGhpcy5fbGFuZ3VhZ2VJZD1uLHRoaXMuX3ZlcnNpb249cix0aGlzLl9jb250ZW50PWksdGhpcy5fbGluZU9mZnNldHM9dm9pZCAwfWdldCB1cmkoKXtyZXR1cm4gdGhpcy5fdXJpfWdldCBsYW5ndWFnZUlkKCl7cmV0dXJuIHRoaXMuX2xhbmd1YWdlSWR9Z2V0IHZlcnNpb24oKXtyZXR1cm4gdGhpcy5fdmVyc2lvbn1nZXRUZXh0KHQpe2lmKHQpe2NvbnN0IG49dGhpcy5vZmZzZXRBdCh0LnN0YXJ0KSxyPXRoaXMub2Zmc2V0QXQodC5lbmQpO3JldHVybiB0aGlzLl9jb250ZW50LnN1YnN0cmluZyhuLHIpfXJldHVybiB0aGlzLl9jb250ZW50fXVwZGF0ZSh0LG4pe2ZvcihsZXQgciBvZiB0KWlmKFdzLmlzSW5jcmVtZW50YWwocikpe2NvbnN0IGk9X2Moci5yYW5nZSkscz10aGlzLm9mZnNldEF0KGkuc3RhcnQpLGE9dGhpcy5vZmZzZXRBdChpLmVuZCk7dGhpcy5fY29udGVudD10aGlzLl9jb250ZW50LnN1YnN0cmluZygwLHMpK3IudGV4dCt0aGlzLl9jb250ZW50LnN1YnN0cmluZyhhLHRoaXMuX2NvbnRlbnQubGVuZ3RoKTtjb25zdCBsPU1hdGgubWF4KGkuc3RhcnQubGluZSwwKSxvPU1hdGgubWF4KGkuZW5kLmxpbmUsMCk7bGV0IGM9dGhpcy5fbGluZU9mZnNldHM7Y29uc3QgZD1DYyhyLnRleHQsITEscyk7aWYoby1sPT09ZC5sZW5ndGgpZm9yKGxldCBmPTAsbT1kLmxlbmd0aDtmPG07ZisrKWNbZitsKzFdPWRbZl07ZWxzZSBkLmxlbmd0aDwxZTQ/Yy5zcGxpY2UobCsxLG8tbCwuLi5kKTp0aGlzLl9saW5lT2Zmc2V0cz1jPWMuc2xpY2UoMCxsKzEpLmNvbmNhdChkLGMuc2xpY2UobysxKSk7Y29uc3QgdT1yLnRleHQubGVuZ3RoLShhLXMpO2lmKHUhPT0wKWZvcihsZXQgZj1sKzErZC5sZW5ndGgsbT1jLmxlbmd0aDtmPG07ZisrKWNbZl09Y1tmXSt1fWVsc2UgaWYoV3MuaXNGdWxsKHIpKXRoaXMuX2NvbnRlbnQ9ci50ZXh0LHRoaXMuX2xpbmVPZmZzZXRzPXZvaWQgMDtlbHNlIHRocm93IG5ldyBFcnJvcigiVW5rbm93biBjaGFuZ2UgZXZlbnQgcmVjZWl2ZWQiKTt0aGlzLl92ZXJzaW9uPW59Z2V0TGluZU9mZnNldHMoKXtyZXR1cm4gdGhpcy5fbGluZU9mZnNldHM9PT12b2lkIDAmJih0aGlzLl9saW5lT2Zmc2V0cz1DYyh0aGlzLl9jb250ZW50LCEwKSksdGhpcy5fbGluZU9mZnNldHN9cG9zaXRpb25BdCh0KXt0PU1hdGgubWF4KE1hdGgubWluKHQsdGhpcy5fY29udGVudC5sZW5ndGgpLDApO2xldCBuPXRoaXMuZ2V0TGluZU9mZnNldHMoKSxyPTAsaT1uLmxlbmd0aDtpZihpPT09MClyZXR1cm57bGluZTowLGNoYXJhY3Rlcjp0fTtmb3IoO3I8aTspe2xldCBhPU1hdGguZmxvb3IoKHIraSkvMik7blthXT50P2k9YTpyPWErMX1sZXQgcz1yLTE7cmV0dXJue2xpbmU6cyxjaGFyYWN0ZXI6dC1uW3NdfX1vZmZzZXRBdCh0KXtsZXQgbj10aGlzLmdldExpbmVPZmZzZXRzKCk7aWYodC5saW5lPj1uLmxlbmd0aClyZXR1cm4gdGhpcy5fY29udGVudC5sZW5ndGg7aWYodC5saW5lPDApcmV0dXJuIDA7bGV0IHI9blt0LmxpbmVdLGk9dC5saW5lKzE8bi5sZW5ndGg/blt0LmxpbmUrMV06dGhpcy5fY29udGVudC5sZW5ndGg7cmV0dXJuIE1hdGgubWF4KE1hdGgubWluKHIrdC5jaGFyYWN0ZXIsaSkscil9Z2V0IGxpbmVDb3VudCgpe3JldHVybiB0aGlzLmdldExpbmVPZmZzZXRzKCkubGVuZ3RofXN0YXRpYyBpc0luY3JlbWVudGFsKHQpe2xldCBuPXQ7cmV0dXJuIG4hPW51bGwmJnR5cGVvZiBuLnRleHQ9PSJzdHJpbmciJiZuLnJhbmdlIT09dm9pZCAwJiYobi5yYW5nZUxlbmd0aD09PXZvaWQgMHx8dHlwZW9mIG4ucmFuZ2VMZW5ndGg9PSJudW1iZXIiKX1zdGF0aWMgaXNGdWxsKHQpe2xldCBuPXQ7cmV0dXJuIG4hPW51bGwmJnR5cGVvZiBuLnRleHQ9PSJzdHJpbmciJiZuLnJhbmdlPT09dm9pZCAwJiZuLnJhbmdlTGVuZ3RoPT09dm9pZCAwfX0sYXM7KGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoaSxzLGEsbCl7cmV0dXJuIG5ldyBTYyhpLHMsYSxsKX1lLmNyZWF0ZT10O2Z1bmN0aW9uIG4oaSxzLGEpe2lmKGkgaW5zdGFuY2VvZiBTYylyZXR1cm4gaS51cGRhdGUocyxhKSxpO3Rocm93IG5ldyBFcnJvcigiVGV4dERvY3VtZW50LnVwZGF0ZTogZG9jdW1lbnQgbXVzdCBiZSBjcmVhdGVkIGJ5IFRleHREb2N1bWVudC5jcmVhdGUiKX1lLnVwZGF0ZT1uO2Z1bmN0aW9uIHIoaSxzKXtsZXQgYT1pLmdldFRleHQoKSxsPW9zKHMubWFwKG9tKSwoZCx1KT0+e2xldCBmPWQucmFuZ2Uuc3RhcnQubGluZS11LnJhbmdlLnN0YXJ0LmxpbmU7cmV0dXJuIGY9PT0wP2QucmFuZ2Uuc3RhcnQuY2hhcmFjdGVyLXUucmFuZ2Uuc3RhcnQuY2hhcmFjdGVyOmZ9KSxvPTA7Y29uc3QgYz1bXTtmb3IoY29uc3QgZCBvZiBsKXtsZXQgdT1pLm9mZnNldEF0KGQucmFuZ2Uuc3RhcnQpO2lmKHU8byl0aHJvdyBuZXcgRXJyb3IoIk92ZXJsYXBwaW5nIGVkaXQiKTt1Pm8mJmMucHVzaChhLnN1YnN0cmluZyhvLHUpKSxkLm5ld1RleHQubGVuZ3RoJiZjLnB1c2goZC5uZXdUZXh0KSxvPWkub2Zmc2V0QXQoZC5yYW5nZS5lbmQpfXJldHVybiBjLnB1c2goYS5zdWJzdHIobykpLGMuam9pbigiIil9ZS5hcHBseUVkaXRzPXJ9KShhc3x8KGFzPXt9KSk7ZnVuY3Rpb24gb3MoZSx0KXtpZihlLmxlbmd0aDw9MSlyZXR1cm4gZTtjb25zdCBuPWUubGVuZ3RoLzJ8MCxyPWUuc2xpY2UoMCxuKSxpPWUuc2xpY2Uobik7b3Mocix0KSxvcyhpLHQpO2xldCBzPTAsYT0wLGw9MDtmb3IoO3M8ci5sZW5ndGgmJmE8aS5sZW5ndGg7KXQocltzXSxpW2FdKTw9MD9lW2wrK109cltzKytdOmVbbCsrXT1pW2ErK107Zm9yKDtzPHIubGVuZ3RoOyllW2wrK109cltzKytdO2Zvcig7YTxpLmxlbmd0aDspZVtsKytdPWlbYSsrXTtyZXR1cm4gZX1mdW5jdGlvbiBDYyhlLHQsbj0wKXtjb25zdCByPXQ/W25dOltdO2ZvcihsZXQgaT0wO2k8ZS5sZW5ndGg7aSsrKXtsZXQgcz1lLmNoYXJDb2RlQXQoaSk7KHM9PT0xM3x8cz09PTEwKSYmKHM9PT0xMyYmaSsxPGUubGVuZ3RoJiZlLmNoYXJDb2RlQXQoaSsxKT09PTEwJiZpKyssci5wdXNoKG4raSsxKSl9cmV0dXJuIHJ9ZnVuY3Rpb24gX2MoZSl7Y29uc3QgdD1lLnN0YXJ0LG49ZS5lbmQ7cmV0dXJuIHQubGluZT5uLmxpbmV8fHQubGluZT09PW4ubGluZSYmdC5jaGFyYWN0ZXI+bi5jaGFyYWN0ZXI/e3N0YXJ0Om4sZW5kOnR9OmV9ZnVuY3Rpb24gb20oZSl7Y29uc3QgdD1fYyhlLnJhbmdlKTtyZXR1cm4gdCE9PWUucmFuZ2U/e25ld1RleHQ6ZS5uZXdUZXh0LHJhbmdlOnR9OmV9dmFyIGtjOyhmdW5jdGlvbihlKXtlLkxBVEVTVD17dGV4dERvY3VtZW50Ontjb21wbGV0aW9uOntjb21wbGV0aW9uSXRlbTp7ZG9jdW1lbnRhdGlvbkZvcm1hdDpbamUuTWFya2Rvd24samUuUGxhaW5UZXh0XX19LGhvdmVyOntjb250ZW50Rm9ybWF0OltqZS5NYXJrZG93bixqZS5QbGFpblRleHRdfX19fSkoa2N8fChrYz17fSkpO3ZhciBEbjsoZnVuY3Rpb24oZSl7ZVtlLlVua25vd249MF09IlVua25vd24iLGVbZS5GaWxlPTFdPSJGaWxlIixlW2UuRGlyZWN0b3J5PTJdPSJEaXJlY3RvcnkiLGVbZS5TeW1ib2xpY0xpbms9NjRdPSJTeW1ib2xpY0xpbmsifSkoRG58fChEbj17fSkpO3ZhciBFYz17RToiRWRnZSIsRkY6IkZpcmVmb3giLFM6IlNhZmFyaSIsQzoiQ2hyb21lIixJRToiSUUiLE86Ik9wZXJhIn07ZnVuY3Rpb24gRmMoZSl7c3dpdGNoKGUpe2Nhc2UiZXhwZXJpbWVudGFsIjpyZXR1cm5g4pqg77iPIFByb3BlcnR5IGlzIGV4cGVyaW1lbnRhbC4gQmUgY2F1dGlvdXMgd2hlbiB1c2luZyBpdC7vuI8KCmA7Y2FzZSJub25zdGFuZGFyZCI6cmV0dXJuYPCfmqjvuI8gUHJvcGVydHkgaXMgbm9uc3RhbmRhcmQuIEF2b2lkIHVzaW5nIGl0LgoKYDtjYXNlIm9ic29sZXRlIjpyZXR1cm5g8J+aqO+4j++4j++4jyBQcm9wZXJ0eSBpcyBvYnNvbGV0ZS4gQXZvaWQgdXNpbmcgaXQuCgpgO2RlZmF1bHQ6cmV0dXJuIiJ9fWZ1bmN0aW9uIGJ0KGUsdCxuKXtsZXQgcjtpZih0P3I9e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTpjbShlLG4pfTpyPXtraW5kOiJwbGFpbnRleHQiLHZhbHVlOmxtKGUsbil9LHIudmFsdWUhPT0iIilyZXR1cm4gcn1mdW5jdGlvbiB3cihlKXtyZXR1cm4gZT1lLnJlcGxhY2UoL1tcXGAqX3t9W1xdKCkjK1wtLiFdL2csIlxcJCYiKSxlLnJlcGxhY2UoLzwvZywiJmx0OyIpLnJlcGxhY2UoLz4vZywiJmd0OyIpfWZ1bmN0aW9uIGxtKGUsdCl7aWYoIWUuZGVzY3JpcHRpb258fGUuZGVzY3JpcHRpb249PT0iIilyZXR1cm4iIjtpZih0eXBlb2YgZS5kZXNjcmlwdGlvbiE9InN0cmluZyIpcmV0dXJuIGUuZGVzY3JpcHRpb24udmFsdWU7bGV0IG49IiI7aWYodD8uZG9jdW1lbnRhdGlvbiE9PSExKXtlLnN0YXR1cyYmKG4rPUZjKGUuc3RhdHVzKSksbis9ZS5kZXNjcmlwdGlvbjtjb25zdCByPVJjKGUuYnJvd3NlcnMpO3ImJihuKz1gCihgK3IrIikiKSwic3ludGF4ImluIGUmJihuKz1gCgpTeW50YXg6ICR7ZS5zeW50YXh9YCl9cmV0dXJuIGUucmVmZXJlbmNlcyYmZS5yZWZlcmVuY2VzLmxlbmd0aD4wJiZ0Py5yZWZlcmVuY2VzIT09ITEmJihuLmxlbmd0aD4wJiYobis9YAoKYCksbis9ZS5yZWZlcmVuY2VzLm1hcChyPT5gJHtyLm5hbWV9OiAke3IudXJsfWApLmpvaW4oIiB8ICIpKSxufWZ1bmN0aW9uIGNtKGUsdCl7aWYoIWUuZGVzY3JpcHRpb258fGUuZGVzY3JpcHRpb249PT0iIilyZXR1cm4iIjtsZXQgbj0iIjtpZih0Py5kb2N1bWVudGF0aW9uIT09ITEpe2Uuc3RhdHVzJiYobis9RmMoZS5zdGF0dXMpKSx0eXBlb2YgZS5kZXNjcmlwdGlvbj09InN0cmluZyI/bis9d3IoZS5kZXNjcmlwdGlvbik6bis9ZS5kZXNjcmlwdGlvbi5raW5kPT09amUuTWFya2Rvd24/ZS5kZXNjcmlwdGlvbi52YWx1ZTp3cihlLmRlc2NyaXB0aW9uLnZhbHVlKTtjb25zdCByPVJjKGUuYnJvd3NlcnMpO3ImJihuKz1gCgooYCt3cihyKSsiKSIpLCJzeW50YXgiaW4gZSYmZS5zeW50YXgmJihuKz1gCgpTeW50YXg6ICR7d3IoZS5zeW50YXgpfWApfXJldHVybiBlLnJlZmVyZW5jZXMmJmUucmVmZXJlbmNlcy5sZW5ndGg+MCYmdD8ucmVmZXJlbmNlcyE9PSExJiYobi5sZW5ndGg+MCYmKG4rPWAKCmApLG4rPWUucmVmZXJlbmNlcy5tYXAocj0+YFske3IubmFtZX1dKCR7ci51cmx9KWApLmpvaW4oIiB8ICIpKSxufWZ1bmN0aW9uIFJjKGU9W10pe3JldHVybiBlLmxlbmd0aD09PTA/bnVsbDplLm1hcCh0PT57bGV0IG49IiI7Y29uc3Qgcj10Lm1hdGNoKC8oW0EtWl0rKShcZCspPy8pLGk9clsxXSxzPXJbMl07cmV0dXJuIGkgaW4gRWMmJihuKz1FY1tpXSkscyYmKG4rPSIgIitzKSxufSkuam9pbigiLCAiKX12YXIgaG09LyheIyhbMC05QS1GXXszfSl7MSwyfSQpfCheIyhbMC05QS1GXXs0fSl7MSwyfSQpL2ksZG09W3tsYWJlbDoicmdiIixmdW5jOiJyZ2IoJHJlZCwgJGdyZWVuLCAkYmx1ZSkiLGluc2VydFRleHQ6InJnYigkezE6cmVkfSwgJHsyOmdyZWVufSwgJHszOmJsdWV9KSIsZGVzYzpnKCJDcmVhdGVzIGEgQ29sb3IgZnJvbSByZWQsIGdyZWVuLCBhbmQgYmx1ZSB2YWx1ZXMuIil9LHtsYWJlbDoicmdiYSIsZnVuYzoicmdiYSgkcmVkLCAkZ3JlZW4sICRibHVlLCAkYWxwaGEpIixpbnNlcnRUZXh0OiJyZ2JhKCR7MTpyZWR9LCAkezI6Z3JlZW59LCAkezM6Ymx1ZX0sICR7NDphbHBoYX0pIixkZXNjOmcoIkNyZWF0ZXMgYSBDb2xvciBmcm9tIHJlZCwgZ3JlZW4sIGJsdWUsIGFuZCBhbHBoYSB2YWx1ZXMuIil9LHtsYWJlbDoicmdiIHJlbGF0aXZlIixmdW5jOiJyZ2IoZnJvbSAkY29sb3IgJHJlZCAkZ3JlZW4gJGJsdWUpIixpbnNlcnRUZXh0OiJyZ2IoZnJvbSAkezE6Y29sb3J9ICR7MjpyfSAkezM6Z30gJHs0OmJ9KSIsZGVzYzpnKCJDcmVhdGVzIGEgQ29sb3IgZnJvbSB0aGUgcmVkLCBncmVlbiwgYW5kIGJsdWUgdmFsdWVzIG9mIGFub3RoZXIgQ29sb3IuIil9LHtsYWJlbDoiaHNsIixmdW5jOiJoc2woJGh1ZSwgJHNhdHVyYXRpb24sICRsaWdodG5lc3MpIixpbnNlcnRUZXh0OiJoc2woJHsxOmh1ZX0sICR7MjpzYXR1cmF0aW9ufSwgJHszOmxpZ2h0bmVzc30pIixkZXNjOmcoIkNyZWF0ZXMgYSBDb2xvciBmcm9tIGh1ZSwgc2F0dXJhdGlvbiwgYW5kIGxpZ2h0bmVzcyB2YWx1ZXMuIil9LHtsYWJlbDoiaHNsYSIsZnVuYzoiaHNsYSgkaHVlLCAkc2F0dXJhdGlvbiwgJGxpZ2h0bmVzcywgJGFscGhhKSIsaW5zZXJ0VGV4dDoiaHNsYSgkezE6aHVlfSwgJHsyOnNhdHVyYXRpb259LCAkezM6bGlnaHRuZXNzfSwgJHs0OmFscGhhfSkiLGRlc2M6ZygiQ3JlYXRlcyBhIENvbG9yIGZyb20gaHVlLCBzYXR1cmF0aW9uLCBsaWdodG5lc3MsIGFuZCBhbHBoYSB2YWx1ZXMuIil9LHtsYWJlbDoiaHNsIHJlbGF0aXZlIixmdW5jOiJoc2woZnJvbSAkY29sb3IgJGh1ZSAkc2F0dXJhdGlvbiAkbGlnaHRuZXNzKSIsaW5zZXJ0VGV4dDoiaHNsKGZyb20gJHsxOmNvbG9yfSAkezI6aH0gJHszOnN9ICR7NDpsfSkiLGRlc2M6ZygiQ3JlYXRlcyBhIENvbG9yIGZyb20gdGhlIGh1ZSwgc2F0dXJhdGlvbiwgYW5kIGxpZ2h0bmVzcyB2YWx1ZXMgb2YgYW5vdGhlciBDb2xvci4iKX0se2xhYmVsOiJod2IiLGZ1bmM6Imh3YigkaHVlICR3aGl0ZSAkYmxhY2spIixpbnNlcnRUZXh0OiJod2IoJHsxOmh1ZX0gJHsyOndoaXRlfSAkezM6YmxhY2t9KSIsZGVzYzpnKCJDcmVhdGVzIGEgQ29sb3IgZnJvbSBodWUsIHdoaXRlLCBhbmQgYmxhY2sgdmFsdWVzLiIpfSx7bGFiZWw6Imh3YiByZWxhdGl2ZSIsZnVuYzoiaHdiKGZyb20gJGNvbG9yICRodWUgJHdoaXRlICRibGFjaykiLGluc2VydFRleHQ6Imh3Yihmcm9tICR7MTpjb2xvcn0gJHsyOmh9ICR7Mzp3fSAkezQ6Yn0pIixkZXNjOmcoIkNyZWF0ZXMgYSBDb2xvciBmcm9tIHRoZSBodWUsIHdoaXRlLCBhbmQgYmxhY2sgdmFsdWVzIG9mIGFub3RoZXIgQ29sb3IuIil9LHtsYWJlbDoibGFiIixmdW5jOiJsYWIoJGxpZ2h0bmVzcyAkYSAkYikiLGluc2VydFRleHQ6ImxhYigkezE6bGlnaHRuZXNzfSAkezI6YX0gJHszOmJ9KSIsZGVzYzpnKCJDcmVhdGVzIGEgQ29sb3IgZnJvbSBsaWdodG5lc3MsIGEsIGFuZCBiIHZhbHVlcy4iKX0se2xhYmVsOiJsYWIgcmVsYXRpdmUiLGZ1bmM6ImxhYihmcm9tICRjb2xvciAkbGlnaHRuZXNzICRhICRiKSIsaW5zZXJ0VGV4dDoibGFiKGZyb20gJHsxOmNvbG9yfSAkezI6bH0gJHszOmF9ICR7NDpifSkiLGRlc2M6ZygiQ3JlYXRlcyBhIENvbG9yIGZyb20gdGhlIGxpZ2h0bmVzcywgYSwgYW5kIGIgdmFsdWVzIG9mIGFub3RoZXIgQ29sb3IuIil9LHtsYWJlbDoib2tsYWIiLGZ1bmM6Im9rbGFiKCRsaWdodG5lc3MgJGEgJGIpIixpbnNlcnRUZXh0OiJva2xhYigkezE6bGlnaHRuZXNzfSAkezI6YX0gJHszOmJ9KSIsZGVzYzpnKCJDcmVhdGVzIGEgQ29sb3IgZnJvbSBsaWdodG5lc3MsIGEsIGFuZCBiIHZhbHVlcy4iKX0se2xhYmVsOiJva2xhYiByZWxhdGl2ZSIsZnVuYzoib2tsYWIoZnJvbSAkY29sb3IgJGxpZ2h0bmVzcyAkYSAkYikiLGluc2VydFRleHQ6Im9rbGFiKGZyb20gJHsxOmNvbG9yfSAkezI6bH0gJHszOmF9ICR7NDpifSkiLGRlc2M6ZygiQ3JlYXRlcyBhIENvbG9yIGZyb20gdGhlIGxpZ2h0bmVzcywgYSwgYW5kIGIgdmFsdWVzIG9mIGFub3RoZXIgQ29sb3IuIil9LHtsYWJlbDoibGNoIixmdW5jOiJsY2goJGxpZ2h0bmVzcyAkY2hyb21hICRodWUpIixpbnNlcnRUZXh0OiJsY2goJHsxOmxpZ2h0bmVzc30gJHsyOmNocm9tYX0gJHszOmh1ZX0pIixkZXNjOmcoIkNyZWF0ZXMgYSBDb2xvciBmcm9tIGxpZ2h0bmVzcywgY2hyb21hLCBhbmQgaHVlIHZhbHVlcy4iKX0se2xhYmVsOiJsY2ggcmVsYXRpdmUiLGZ1bmM6ImxjaChmcm9tICRjb2xvciAkbGlnaHRuZXNzICRjaHJvbWEgJGh1ZSkiLGluc2VydFRleHQ6ImxjaChmcm9tICR7MTpjb2xvcn0gJHsyOmx9ICR7MzpjfSAkezQ6aH0pIixkZXNjOmcoIkNyZWF0ZXMgYSBDb2xvciBmcm9tIHRoZSBsaWdodG5lc3MsIGNocm9tYSwgYW5kIGh1ZSB2YWx1ZXMgb2YgYW5vdGhlciBDb2xvci4iKX0se2xhYmVsOiJva2xjaCIsZnVuYzoib2tsY2goJGxpZ2h0bmVzcyAkY2hyb21hICRodWUpIixpbnNlcnRUZXh0OiJva2xjaCgkezE6bGlnaHRuZXNzfSAkezI6Y2hyb21hfSAkezM6aHVlfSkiLGRlc2M6ZygiQ3JlYXRlcyBhIENvbG9yIGZyb20gbGlnaHRuZXNzLCBjaHJvbWEsIGFuZCBodWUgdmFsdWVzLiIpfSx7bGFiZWw6Im9rbGNoIHJlbGF0aXZlIixmdW5jOiJva2xjaChmcm9tICRjb2xvciAkbGlnaHRuZXNzICRjaHJvbWEgJGh1ZSkiLGluc2VydFRleHQ6Im9rbGNoKGZyb20gJHsxOmNvbG9yfSAkezI6bH0gJHszOmN9ICR7NDpofSkiLGRlc2M6ZygiQ3JlYXRlcyBhIENvbG9yIGZyb20gdGhlIGxpZ2h0bmVzcywgY2hyb21hLCBhbmQgaHVlIHZhbHVlcyBvZiBhbm90aGVyIENvbG9yLiIpfSx7bGFiZWw6ImNvbG9yIixmdW5jOiJjb2xvcigkY29sb3Itc3BhY2UgJHJlZCAkZ3JlZW4gJGJsdWUpIixpbnNlcnRUZXh0OiJjb2xvcigkezF8c3JnYixzcmdiLWxpbmVhcixkaXNwbGF5LXAzLGE5OC1yZ2IscHJvcGhvdG8tcmdiLHJlYzIwMjAseHl4LHh5ei1kNTAseHl6LWQ2NXx9ICR7MjpyZWR9ICR7MzpncmVlbn0gJHs0OmJsdWV9KSIsZGVzYzpnKCJDcmVhdGVzIGEgQ29sb3IgaW4gYSBzcGVjaWZpYyBjb2xvciBzcGFjZSBmcm9tIHJlZCwgZ3JlZW4sIGFuZCBibHVlIHZhbHVlcy4iKX0se2xhYmVsOiJjb2xvciByZWxhdGl2ZSIsZnVuYzoiY29sb3IoZnJvbSAkY29sb3IgJGNvbG9yLXNwYWNlICRyZWQgJGdyZWVuICRibHVlKSIsaW5zZXJ0VGV4dDoiY29sb3IoZnJvbSAkezE6Y29sb3J9ICR7MnxzcmdiLHNyZ2ItbGluZWFyLGRpc3BsYXktcDMsYTk4LXJnYixwcm9waG90by1yZ2IscmVjMjAyMCx4eXgseHl6LWQ1MCx4eXotZDY1fH0gJHszOnJ9ICR7NDpnfSAkezU6Yn0pIixkZXNjOmcoIkNyZWF0ZXMgYSBDb2xvciBpbiBhIHNwZWNpZmljIGNvbG9yIHNwYWNlIGZyb20gdGhlIHJlZCwgZ3JlZW4sIGFuZCBibHVlIHZhbHVlcyBvZiBhbm90aGVyIENvbG9yLiIpfSx7bGFiZWw6ImNvbG9yLW1peCIsZnVuYzoiY29sb3ItbWl4KGluICRjb2xvci1zcGFjZSwgJGNvbG9yICRwZXJjZW50YWdlLCAkY29sb3IgJHBlcmNlbnRhZ2UpIixpbnNlcnRUZXh0OiJjb2xvci1taXgoaW4gJHsxfHNyZ2Isc3JnYi1saW5lYXIsbGFiLG9rbGFiLHh5eix4eXotZDUwLHh5ei1kNjV8fSwgJHszOmNvbG9yfSAkezQ6cGVyY2VudGFnZX0sICR7NTpjb2xvcn0gJHs2OnBlcmNlbnRhZ2V9KSIsZGVzYzpnKCJNaXggdHdvIGNvbG9ycyB0b2dldGhlciBpbiBhIHJlY3Rhbmd1bGFyIGNvbG9yIHNwYWNlLiIpfSx7bGFiZWw6ImNvbG9yLW1peCBodWUiLGZ1bmM6ImNvbG9yLW1peChpbiAkY29sb3Itc3BhY2UgJGludGVycG9sYXRpb24tbWV0aG9kIGh1ZSwgJGNvbG9yICRwZXJjZW50YWdlLCAkY29sb3IgJHBlcmNlbnRhZ2UpIixpbnNlcnRUZXh0OiJjb2xvci1taXgoaW4gJHsxfGhzbCxod2IsbGNoLG9rbGNofH0gJHsyfHNob3J0ZXIgaHVlLGxvbmdlciBodWUsaW5jcmVhc2luZyBodWUsZGVjcmVhc2luZyBodWV8fSwgJHszOmNvbG9yfSAkezQ6cGVyY2VudGFnZX0sICR7NTpjb2xvcn0gJHs2OnBlcmNlbnRhZ2V9KSIsZGVzYzpnKCJNaXggdHdvIGNvbG9ycyB0b2dldGhlciBpbiBhIHBvbGFyIGNvbG9yIHNwYWNlLiIpfV0sdW09L14ocmdifHJnYmF8aHNsfGhzbGF8aHdiKSQvaSx5cj17YWxpY2VibHVlOiIjZjBmOGZmIixhbnRpcXVld2hpdGU6IiNmYWViZDciLGFxdWE6IiMwMGZmZmYiLGFxdWFtYXJpbmU6IiM3ZmZmZDQiLGF6dXJlOiIjZjBmZmZmIixiZWlnZToiI2Y1ZjVkYyIsYmlzcXVlOiIjZmZlNGM0IixibGFjazoiIzAwMDAwMCIsYmxhbmNoZWRhbG1vbmQ6IiNmZmViY2QiLGJsdWU6IiMwMDAwZmYiLGJsdWV2aW9sZXQ6IiM4YTJiZTIiLGJyb3duOiIjYTUyYTJhIixidXJseXdvb2Q6IiNkZWI4ODciLGNhZGV0Ymx1ZToiIzVmOWVhMCIsY2hhcnRyZXVzZToiIzdmZmYwMCIsY2hvY29sYXRlOiIjZDI2OTFlIixjb3JhbDoiI2ZmN2Y1MCIsY29ybmZsb3dlcmJsdWU6IiM2NDk1ZWQiLGNvcm5zaWxrOiIjZmZmOGRjIixjcmltc29uOiIjZGMxNDNjIixjeWFuOiIjMDBmZmZmIixkYXJrYmx1ZToiIzAwMDA4YiIsZGFya2N5YW46IiMwMDhiOGIiLGRhcmtnb2xkZW5yb2Q6IiNiODg2MGIiLGRhcmtncmF5OiIjYTlhOWE5IixkYXJrZ3JleToiI2E5YTlhOSIsZGFya2dyZWVuOiIjMDA2NDAwIixkYXJra2hha2k6IiNiZGI3NmIiLGRhcmttYWdlbnRhOiIjOGIwMDhiIixkYXJrb2xpdmVncmVlbjoiIzU1NmIyZiIsZGFya29yYW5nZToiI2ZmOGMwMCIsZGFya29yY2hpZDoiIzk5MzJjYyIsZGFya3JlZDoiIzhiMDAwMCIsZGFya3NhbG1vbjoiI2U5OTY3YSIsZGFya3NlYWdyZWVuOiIjOGZiYzhmIixkYXJrc2xhdGVibHVlOiIjNDgzZDhiIixkYXJrc2xhdGVncmF5OiIjMmY0ZjRmIixkYXJrc2xhdGVncmV5OiIjMmY0ZjRmIixkYXJrdHVycXVvaXNlOiIjMDBjZWQxIixkYXJrdmlvbGV0OiIjOTQwMGQzIixkZWVwcGluazoiI2ZmMTQ5MyIsZGVlcHNreWJsdWU6IiMwMGJmZmYiLGRpbWdyYXk6IiM2OTY5NjkiLGRpbWdyZXk6IiM2OTY5NjkiLGRvZGdlcmJsdWU6IiMxZTkwZmYiLGZpcmVicmljazoiI2IyMjIyMiIsZmxvcmFsd2hpdGU6IiNmZmZhZjAiLGZvcmVzdGdyZWVuOiIjMjI4YjIyIixmdWNoc2lhOiIjZmYwMGZmIixnYWluc2Jvcm86IiNkY2RjZGMiLGdob3N0d2hpdGU6IiNmOGY4ZmYiLGdvbGQ6IiNmZmQ3MDAiLGdvbGRlbnJvZDoiI2RhYTUyMCIsZ3JheToiIzgwODA4MCIsZ3JleToiIzgwODA4MCIsZ3JlZW46IiMwMDgwMDAiLGdyZWVueWVsbG93OiIjYWRmZjJmIixob25leWRldzoiI2YwZmZmMCIsaG90cGluazoiI2ZmNjliNCIsaW5kaWFucmVkOiIjY2Q1YzVjIixpbmRpZ286IiM0YjAwODIiLGl2b3J5OiIjZmZmZmYwIixraGFraToiI2YwZTY4YyIsbGF2ZW5kZXI6IiNlNmU2ZmEiLGxhdmVuZGVyYmx1c2g6IiNmZmYwZjUiLGxhd25ncmVlbjoiIzdjZmMwMCIsbGVtb25jaGlmZm9uOiIjZmZmYWNkIixsaWdodGJsdWU6IiNhZGQ4ZTYiLGxpZ2h0Y29yYWw6IiNmMDgwODAiLGxpZ2h0Y3lhbjoiI2UwZmZmZiIsbGlnaHRnb2xkZW5yb2R5ZWxsb3c6IiNmYWZhZDIiLGxpZ2h0Z3JheToiI2QzZDNkMyIsbGlnaHRncmV5OiIjZDNkM2QzIixsaWdodGdyZWVuOiIjOTBlZTkwIixsaWdodHBpbms6IiNmZmI2YzEiLGxpZ2h0c2FsbW9uOiIjZmZhMDdhIixsaWdodHNlYWdyZWVuOiIjMjBiMmFhIixsaWdodHNreWJsdWU6IiM4N2NlZmEiLGxpZ2h0c2xhdGVncmF5OiIjNzc4ODk5IixsaWdodHNsYXRlZ3JleToiIzc3ODg5OSIsbGlnaHRzdGVlbGJsdWU6IiNiMGM0ZGUiLGxpZ2h0eWVsbG93OiIjZmZmZmUwIixsaW1lOiIjMDBmZjAwIixsaW1lZ3JlZW46IiMzMmNkMzIiLGxpbmVuOiIjZmFmMGU2IixtYWdlbnRhOiIjZmYwMGZmIixtYXJvb246IiM4MDAwMDAiLG1lZGl1bWFxdWFtYXJpbmU6IiM2NmNkYWEiLG1lZGl1bWJsdWU6IiMwMDAwY2QiLG1lZGl1bW9yY2hpZDoiI2JhNTVkMyIsbWVkaXVtcHVycGxlOiIjOTM3MGQ4IixtZWRpdW1zZWFncmVlbjoiIzNjYjM3MSIsbWVkaXVtc2xhdGVibHVlOiIjN2I2OGVlIixtZWRpdW1zcHJpbmdncmVlbjoiIzAwZmE5YSIsbWVkaXVtdHVycXVvaXNlOiIjNDhkMWNjIixtZWRpdW12aW9sZXRyZWQ6IiNjNzE1ODUiLG1pZG5pZ2h0Ymx1ZToiIzE5MTk3MCIsbWludGNyZWFtOiIjZjVmZmZhIixtaXN0eXJvc2U6IiNmZmU0ZTEiLG1vY2Nhc2luOiIjZmZlNGI1IixuYXZham93aGl0ZToiI2ZmZGVhZCIsbmF2eToiIzAwMDA4MCIsb2xkbGFjZToiI2ZkZjVlNiIsb2xpdmU6IiM4MDgwMDAiLG9saXZlZHJhYjoiIzZiOGUyMyIsb3JhbmdlOiIjZmZhNTAwIixvcmFuZ2VyZWQ6IiNmZjQ1MDAiLG9yY2hpZDoiI2RhNzBkNiIscGFsZWdvbGRlbnJvZDoiI2VlZThhYSIscGFsZWdyZWVuOiIjOThmYjk4IixwYWxldHVycXVvaXNlOiIjYWZlZWVlIixwYWxldmlvbGV0cmVkOiIjZDg3MDkzIixwYXBheWF3aGlwOiIjZmZlZmQ1IixwZWFjaHB1ZmY6IiNmZmRhYjkiLHBlcnU6IiNjZDg1M2YiLHBpbms6IiNmZmMwY2IiLHBsdW06IiNkZGEwZGQiLHBvd2RlcmJsdWU6IiNiMGUwZTYiLHB1cnBsZToiIzgwMDA4MCIscmVkOiIjZmYwMDAwIixyZWJlY2NhcHVycGxlOiIjNjYzMzk5Iixyb3N5YnJvd246IiNiYzhmOGYiLHJveWFsYmx1ZToiIzQxNjllMSIsc2FkZGxlYnJvd246IiM4YjQ1MTMiLHNhbG1vbjoiI2ZhODA3MiIsc2FuZHlicm93bjoiI2Y0YTQ2MCIsc2VhZ3JlZW46IiMyZThiNTciLHNlYXNoZWxsOiIjZmZmNWVlIixzaWVubmE6IiNhMDUyMmQiLHNpbHZlcjoiI2MwYzBjMCIsc2t5Ymx1ZToiIzg3Y2VlYiIsc2xhdGVibHVlOiIjNmE1YWNkIixzbGF0ZWdyYXk6IiM3MDgwOTAiLHNsYXRlZ3JleToiIzcwODA5MCIsc25vdzoiI2ZmZmFmYSIsc3ByaW5nZ3JlZW46IiMwMGZmN2YiLHN0ZWVsYmx1ZToiIzQ2ODJiNCIsdGFuOiIjZDJiNDhjIix0ZWFsOiIjMDA4MDgwIix0aGlzdGxlOiIjZDhiZmQ4Iix0b21hdG86IiNmZjYzNDciLHR1cnF1b2lzZToiIzQwZTBkMCIsdmlvbGV0OiIjZWU4MmVlIix3aGVhdDoiI2Y1ZGViMyIsd2hpdGU6IiNmZmZmZmYiLHdoaXRlc21va2U6IiNmNWY1ZjUiLHllbGxvdzoiI2ZmZmYwMCIseWVsbG93Z3JlZW46IiM5YWNkMzIifSxwbT1uZXcgUmVnRXhwKGBeKCR7T2JqZWN0LmtleXMoeXIpLmpvaW4oInwiKX0pJGAsImkiKSxscz17Y3VycmVudENvbG9yOiJUaGUgdmFsdWUgb2YgdGhlICdjb2xvcicgcHJvcGVydHkuIFRoZSBjb21wdXRlZCB2YWx1ZSBvZiB0aGUgJ2N1cnJlbnRDb2xvcicga2V5d29yZCBpcyB0aGUgY29tcHV0ZWQgdmFsdWUgb2YgdGhlICdjb2xvcicgcHJvcGVydHkuIElmIHRoZSAnY3VycmVudENvbG9yJyBrZXl3b3JkIGlzIHNldCBvbiB0aGUgJ2NvbG9yJyBwcm9wZXJ0eSBpdHNlbGYsIGl0IGlzIHRyZWF0ZWQgYXMgJ2NvbG9yOmluaGVyaXQnIGF0IHBhcnNlIHRpbWUuIix0cmFuc3BhcmVudDoiRnVsbHkgdHJhbnNwYXJlbnQuIFRoaXMga2V5d29yZCBjYW4gYmUgY29uc2lkZXJlZCBhIHNob3J0aGFuZCBmb3IgcmdiYSgwLDAsMCwwKSB3aGljaCBpcyBpdHMgY29tcHV0ZWQgdmFsdWUuIn0sbW09bmV3IFJlZ0V4cChgXigke09iamVjdC5rZXlzKGxzKS5qb2luKCJ8Iil9KSRgLCJpIik7ZnVuY3Rpb24gdnQoZSx0KXtjb25zdCByPWUuZ2V0VGV4dCgpLm1hdGNoKC9eKFstK10/WzAtOV0qXC4/WzAtOV0rKSglPykkLyk7aWYocil7clsyXSYmKHQ9MTAwKTtjb25zdCBpPXBhcnNlRmxvYXQoclsxXSkvdDtpZihpPj0wJiZpPD0xKXJldHVybiBpfXRocm93IG5ldyBFcnJvcn1mdW5jdGlvbiBOYyhlKXtjb25zdCB0PWUuZ2V0VGV4dCgpLG49dC5tYXRjaCgvXihbLStdP1swLTldKlwuP1swLTldKykoZGVnfHJhZHxncmFkfHR1cm4pPyQvKTtpZihuKXN3aXRjaChuWzJdKXtjYXNlImRlZyI6cmV0dXJuIHBhcnNlRmxvYXQodCklMzYwO2Nhc2UicmFkIjpyZXR1cm4gcGFyc2VGbG9hdCh0KSoxODAvTWF0aC5QSSUzNjA7Y2FzZSJncmFkIjpyZXR1cm4gcGFyc2VGbG9hdCh0KSouOSUzNjA7Y2FzZSJ0dXJuIjpyZXR1cm4gcGFyc2VGbG9hdCh0KSozNjAlMzYwO2RlZmF1bHQ6aWYodHlwZW9mIG5bMl0+InUiKXJldHVybiBwYXJzZUZsb2F0KHQpJTM2MH10aHJvdyBuZXcgRXJyb3J9ZnVuY3Rpb24gZm0oZSl7Y29uc3QgdD1lLmdldE5hbWUoKTtyZXR1cm4gdD91bS50ZXN0KHQpOiExfWZ1bmN0aW9uIERjKGUpe3JldHVybiBobS50ZXN0KGUpfHxwbS50ZXN0KGUpfHxtbS50ZXN0KGUpfXZhciBJYz00OCxnbT01NyxibT02NSx4cj05Nyx2bT0xMDI7ZnVuY3Rpb24gZGUoZSl7cmV0dXJuIGU8SWM/MDplPD1nbT9lLUljOihlPHhyJiYoZSs9eHItYm0pLGU+PXhyJiZlPD12bT9lLXhyKzEwOjApfWZ1bmN0aW9uIEFjKGUpe2lmKGVbMF0hPT0iIyIpcmV0dXJuIG51bGw7c3dpdGNoKGUubGVuZ3RoKXtjYXNlIDQ6cmV0dXJue3JlZDpkZShlLmNoYXJDb2RlQXQoMSkpKjE3LzI1NSxncmVlbjpkZShlLmNoYXJDb2RlQXQoMikpKjE3LzI1NSxibHVlOmRlKGUuY2hhckNvZGVBdCgzKSkqMTcvMjU1LGFscGhhOjF9O2Nhc2UgNTpyZXR1cm57cmVkOmRlKGUuY2hhckNvZGVBdCgxKSkqMTcvMjU1LGdyZWVuOmRlKGUuY2hhckNvZGVBdCgyKSkqMTcvMjU1LGJsdWU6ZGUoZS5jaGFyQ29kZUF0KDMpKSoxNy8yNTUsYWxwaGE6ZGUoZS5jaGFyQ29kZUF0KDQpKSoxNy8yNTV9O2Nhc2UgNzpyZXR1cm57cmVkOihkZShlLmNoYXJDb2RlQXQoMSkpKjE2K2RlKGUuY2hhckNvZGVBdCgyKSkpLzI1NSxncmVlbjooZGUoZS5jaGFyQ29kZUF0KDMpKSoxNitkZShlLmNoYXJDb2RlQXQoNCkpKS8yNTUsYmx1ZTooZGUoZS5jaGFyQ29kZUF0KDUpKSoxNitkZShlLmNoYXJDb2RlQXQoNikpKS8yNTUsYWxwaGE6MX07Y2FzZSA5OnJldHVybntyZWQ6KGRlKGUuY2hhckNvZGVBdCgxKSkqMTYrZGUoZS5jaGFyQ29kZUF0KDIpKSkvMjU1LGdyZWVuOihkZShlLmNoYXJDb2RlQXQoMykpKjE2K2RlKGUuY2hhckNvZGVBdCg0KSkpLzI1NSxibHVlOihkZShlLmNoYXJDb2RlQXQoNSkpKjE2K2RlKGUuY2hhckNvZGVBdCg2KSkpLzI1NSxhbHBoYTooZGUoZS5jaGFyQ29kZUF0KDcpKSoxNitkZShlLmNoYXJDb2RlQXQoOCkpKS8yNTV9fXJldHVybiBudWxsfWZ1bmN0aW9uIE1jKGUsdCxuLHI9MSl7aWYoZT1lLzYwLHQ9PT0wKXJldHVybntyZWQ6bixncmVlbjpuLGJsdWU6bixhbHBoYTpyfTt7Y29uc3QgaT0obCxvLGMpPT57Zm9yKDtjPDA7KWMrPTY7Zm9yKDtjPj02OyljLT02O3JldHVybiBjPDE/KG8tbCkqYytsOmM8Mz9vOmM8ND8oby1sKSooNC1jKStsOmx9LHM9bjw9LjU/bioodCsxKTpuK3Qtbip0LGE9bioyLXM7cmV0dXJue3JlZDppKGEscyxlKzIpLGdyZWVuOmkoYSxzLGUpLGJsdWU6aShhLHMsZS0yKSxhbHBoYTpyfX19ZnVuY3Rpb24gTGMoZSl7Y29uc3QgdD1lLnJlZCxuPWUuZ3JlZW4scj1lLmJsdWUsaT1lLmFscGhhLHM9TWF0aC5tYXgodCxuLHIpLGE9TWF0aC5taW4odCxuLHIpO2xldCBsPTAsbz0wO2NvbnN0IGM9KGErcykvMixkPXMtYTtpZihkPjApe3N3aXRjaChvPU1hdGgubWluKGM8PS41P2QvKDIqYyk6ZC8oMi0yKmMpLDEpLHMpe2Nhc2UgdDpsPShuLXIpL2QrKG48cj82OjApO2JyZWFrO2Nhc2UgbjpsPShyLXQpL2QrMjticmVhaztjYXNlIHI6bD0odC1uKS9kKzQ7YnJlYWt9bCo9NjAsbD1NYXRoLnJvdW5kKGwpfXJldHVybntoOmwsczpvLGw6YyxhOml9fWZ1bmN0aW9uIHdtKGUsdCxuLHI9MSl7aWYodCtuPj0xKXtjb25zdCBvPXQvKHQrbik7cmV0dXJue3JlZDpvLGdyZWVuOm8sYmx1ZTpvLGFscGhhOnJ9fWNvbnN0IGk9TWMoZSwxLC41LHIpO2xldCBzPWkucmVkO3MqPTEtdC1uLHMrPXQ7bGV0IGE9aS5ncmVlbjthKj0xLXQtbixhKz10O2xldCBsPWkuYmx1ZTtyZXR1cm4gbCo9MS10LW4sbCs9dCx7cmVkOnMsZ3JlZW46YSxibHVlOmwsYWxwaGE6cn19ZnVuY3Rpb24geW0oZSl7Y29uc3QgdD1MYyhlKSxuPU1hdGgubWluKGUucmVkLGUuZ3JlZW4sZS5ibHVlKSxyPTEtTWF0aC5tYXgoZS5yZWQsZS5ncmVlbixlLmJsdWUpO3JldHVybntoOnQuaCx3Om4sYjpyLGE6dC5hfX1mdW5jdGlvbiB4bShlKXtpZihlLnR5cGU9PT1iLkhleENvbG9yVmFsdWUpe2NvbnN0IHQ9ZS5nZXRUZXh0KCk7cmV0dXJuIEFjKHQpfWVsc2UgaWYoZS50eXBlPT09Yi5GdW5jdGlvbil7Y29uc3QgdD1lLG49dC5nZXROYW1lKCk7bGV0IHI9dC5nZXRBcmd1bWVudHMoKS5nZXRDaGlsZHJlbigpO2lmKHIubGVuZ3RoPT09MSl7Y29uc3QgaT1yWzBdLmdldENoaWxkcmVuKCk7aWYoaS5sZW5ndGg9PT0xJiZpWzBdLnR5cGU9PT1iLkV4cHJlc3Npb24mJihyPWlbMF0uZ2V0Q2hpbGRyZW4oKSxyLmxlbmd0aD09PTMpKXtjb25zdCBzPXJbMl07aWYocyBpbnN0YW5jZW9mIFZpKXtjb25zdCBhPXMuZ2V0TGVmdCgpLGw9cy5nZXRSaWdodCgpLG89cy5nZXRPcGVyYXRvcigpO2EmJmwmJm8mJm8ubWF0Y2hlcygiLyIpJiYocj1bclswXSxyWzFdLGEsbF0pfX19aWYoIW58fHIubGVuZ3RoPDN8fHIubGVuZ3RoPjQpcmV0dXJuIG51bGw7dHJ5e2NvbnN0IGk9ci5sZW5ndGg9PT00P3Z0KHJbM10sMSk6MTtpZihuPT09InJnYiJ8fG49PT0icmdiYSIpcmV0dXJue3JlZDp2dChyWzBdLDI1NSksZ3JlZW46dnQoclsxXSwyNTUpLGJsdWU6dnQoclsyXSwyNTUpLGFscGhhOml9O2lmKG49PT0iaHNsInx8bj09PSJoc2xhIil7Y29uc3Qgcz1OYyhyWzBdKSxhPXZ0KHJbMV0sMTAwKSxsPXZ0KHJbMl0sMTAwKTtyZXR1cm4gTWMocyxhLGwsaSl9ZWxzZSBpZihuPT09Imh3YiIpe2NvbnN0IHM9TmMoclswXSksYT12dChyWzFdLDEwMCksbD12dChyWzJdLDEwMCk7cmV0dXJuIHdtKHMsYSxsLGkpfX1jYXRjaHtyZXR1cm4gbnVsbH19ZWxzZSBpZihlLnR5cGU9PT1iLklkZW50aWZpZXIpe2lmKGUucGFyZW50JiZlLnBhcmVudC50eXBlIT09Yi5UZXJtKXJldHVybiBudWxsO2NvbnN0IHQ9ZS5wYXJlbnQ7aWYodCYmdC5wYXJlbnQmJnQucGFyZW50LnR5cGU9PT1iLkJpbmFyeUV4cHJlc3Npb24pe2NvbnN0IGk9dC5wYXJlbnQ7aWYoaS5wYXJlbnQmJmkucGFyZW50LnR5cGU9PT1iLkxpc3RFbnRyeSYmaS5wYXJlbnQua2V5PT09aSlyZXR1cm4gbnVsbH1jb25zdCBuPWUuZ2V0VGV4dCgpLnRvTG93ZXJDYXNlKCk7aWYobj09PSJub25lIilyZXR1cm4gbnVsbDtjb25zdCByPXlyW25dO2lmKHIpcmV0dXJuIEFjKHIpfXJldHVybiBudWxsfXZhciB6Yz17Ym90dG9tOiJDb21wdXRlcyB0byDigJgxMDAl4oCZIGZvciB0aGUgdmVydGljYWwgcG9zaXRpb24gaWYgb25lIG9yIHR3byB2YWx1ZXMgYXJlIGdpdmVuLCBvdGhlcndpc2Ugc3BlY2lmaWVzIHRoZSBib3R0b20gZWRnZSBhcyB0aGUgb3JpZ2luIGZvciB0aGUgbmV4dCBvZmZzZXQuIixjZW50ZXI6IkNvbXB1dGVzIHRvIOKAmDUwJeKAmSAo4oCYbGVmdCA1MCXigJkpIGZvciB0aGUgaG9yaXpvbnRhbCBwb3NpdGlvbiBpZiB0aGUgaG9yaXpvbnRhbCBwb3NpdGlvbiBpcyBub3Qgb3RoZXJ3aXNlIHNwZWNpZmllZCwgb3Ig4oCYNTAl4oCZICjigJh0b3AgNTAl4oCZKSBmb3IgdGhlIHZlcnRpY2FsIHBvc2l0aW9uIGlmIGl0IGlzLiIsbGVmdDoiQ29tcHV0ZXMgdG8g4oCYMCXigJkgZm9yIHRoZSBob3Jpem9udGFsIHBvc2l0aW9uIGlmIG9uZSBvciB0d28gdmFsdWVzIGFyZSBnaXZlbiwgb3RoZXJ3aXNlIHNwZWNpZmllcyB0aGUgbGVmdCBlZGdlIGFzIHRoZSBvcmlnaW4gZm9yIHRoZSBuZXh0IG9mZnNldC4iLHJpZ2h0OiJDb21wdXRlcyB0byDigJgxMDAl4oCZIGZvciB0aGUgaG9yaXpvbnRhbCBwb3NpdGlvbiBpZiBvbmUgb3IgdHdvIHZhbHVlcyBhcmUgZ2l2ZW4sIG90aGVyd2lzZSBzcGVjaWZpZXMgdGhlIHJpZ2h0IGVkZ2UgYXMgdGhlIG9yaWdpbiBmb3IgdGhlIG5leHQgb2Zmc2V0LiIsdG9wOiJDb21wdXRlcyB0byDigJgwJeKAmSBmb3IgdGhlIHZlcnRpY2FsIHBvc2l0aW9uIGlmIG9uZSBvciB0d28gdmFsdWVzIGFyZSBnaXZlbiwgb3RoZXJ3aXNlIHNwZWNpZmllcyB0aGUgdG9wIGVkZ2UgYXMgdGhlIG9yaWdpbiBmb3IgdGhlIG5leHQgb2Zmc2V0LiJ9LFBjPXsibm8tcmVwZWF0IjoiUGxhY2VkIG9uY2UgYW5kIG5vdCByZXBlYXRlZCBpbiB0aGlzIGRpcmVjdGlvbi4iLHJlcGVhdDoiUmVwZWF0ZWQgaW4gdGhpcyBkaXJlY3Rpb24gYXMgb2Z0ZW4gYXMgbmVlZGVkIHRvIGNvdmVyIHRoZSBiYWNrZ3JvdW5kIHBhaW50aW5nIGFyZWEuIiwicmVwZWF0LXgiOiJDb21wdXRlcyB0byDigJhyZXBlYXQgbm8tcmVwZWF04oCZLiIsInJlcGVhdC15IjoiQ29tcHV0ZXMgdG8g4oCYbm8tcmVwZWF0IHJlcGVhdOKAmS4iLHJvdW5kOiJSZXBlYXRlZCBhcyBvZnRlbiBhcyB3aWxsIGZpdCB3aXRoaW4gdGhlIGJhY2tncm91bmQgcG9zaXRpb25pbmcgYXJlYS4gSWYgaXQgZG9lc27igJl0IGZpdCBhIHdob2xlIG51bWJlciBvZiB0aW1lcywgaXQgaXMgcmVzY2FsZWQgc28gdGhhdCBpdCBkb2VzLiIsc3BhY2U6IlJlcGVhdGVkIGFzIG9mdGVuIGFzIHdpbGwgZml0IHdpdGhpbiB0aGUgYmFja2dyb3VuZCBwb3NpdGlvbmluZyBhcmVhIHdpdGhvdXQgYmVpbmcgY2xpcHBlZCBhbmQgdGhlbiB0aGUgaW1hZ2VzIGFyZSBzcGFjZWQgb3V0IHRvIGZpbGwgdGhlIGFyZWEuIn0sVGM9e2Rhc2hlZDoiQSBzZXJpZXMgb2Ygc3F1YXJlLWVuZGVkIGRhc2hlcy4iLGRvdHRlZDoiQSBzZXJpZXMgb2Ygcm91bmQgZG90cy4iLGRvdWJsZToiVHdvIHBhcmFsbGVsIHNvbGlkIGxpbmVzIHdpdGggc29tZSBzcGFjZSBiZXR3ZWVuIHRoZW0uIixncm9vdmU6Ikxvb2tzIGFzIGlmIGl0IHdlcmUgY2FydmVkIGluIHRoZSBjYW52YXMuIixoaWRkZW46IlNhbWUgYXMg4oCYbm9uZeKAmSwgYnV0IGhhcyBkaWZmZXJlbnQgYmVoYXZpb3IgaW4gdGhlIGJvcmRlciBjb25mbGljdCByZXNvbHV0aW9uIHJ1bGVzIGZvciBib3JkZXItY29sbGFwc2VkIHRhYmxlcy4iLGluc2V0OiJMb29rcyBhcyBpZiB0aGUgY29udGVudCBvbiB0aGUgaW5zaWRlIG9mIHRoZSBib3JkZXIgaXMgc3Vua2VuIGludG8gdGhlIGNhbnZhcy4iLG5vbmU6Ik5vIGJvcmRlci4gQ29sb3IgYW5kIHdpZHRoIGFyZSBpZ25vcmVkLiIsb3V0c2V0OiJMb29rcyBhcyBpZiB0aGUgY29udGVudCBvbiB0aGUgaW5zaWRlIG9mIHRoZSBib3JkZXIgaXMgY29taW5nIG91dCBvZiB0aGUgY2FudmFzLiIscmlkZ2U6Ikxvb2tzIGFzIGlmIGl0IHdlcmUgY29taW5nIG91dCBvZiB0aGUgY2FudmFzLiIsc29saWQ6IkEgc2luZ2xlIGxpbmUgc2VnbWVudC4ifSxTbT1bIm1lZGl1bSIsInRoaWNrIiwidGhpbiJdLE9jPXsiYm9yZGVyLWJveCI6IlRoZSBiYWNrZ3JvdW5kIGlzIHBhaW50ZWQgd2l0aGluIChjbGlwcGVkIHRvKSB0aGUgYm9yZGVyIGJveC4iLCJjb250ZW50LWJveCI6IlRoZSBiYWNrZ3JvdW5kIGlzIHBhaW50ZWQgd2l0aGluIChjbGlwcGVkIHRvKSB0aGUgY29udGVudCBib3guIiwicGFkZGluZy1ib3giOiJUaGUgYmFja2dyb3VuZCBpcyBwYWludGVkIHdpdGhpbiAoY2xpcHBlZCB0bykgdGhlIHBhZGRpbmcgYm94LiJ9LFdjPXsibWFyZ2luLWJveCI6IlVzZXMgdGhlIG1hcmdpbiBib3ggYXMgcmVmZXJlbmNlIGJveC4iLCJmaWxsLWJveCI6IlVzZXMgdGhlIG9iamVjdCBib3VuZGluZyBib3ggYXMgcmVmZXJlbmNlIGJveC4iLCJzdHJva2UtYm94IjoiVXNlcyB0aGUgc3Ryb2tlIGJvdW5kaW5nIGJveCBhcyByZWZlcmVuY2UgYm94LiIsInZpZXctYm94IjoiVXNlcyB0aGUgbmVhcmVzdCBTVkcgdmlld3BvcnQgYXMgcmVmZXJlbmNlIGJveC4ifSxVYz17aW5pdGlhbDoiUmVwcmVzZW50cyB0aGUgdmFsdWUgc3BlY2lmaWVkIGFzIHRoZSBwcm9wZXJ0eeKAmXMgaW5pdGlhbCB2YWx1ZS4iLGluaGVyaXQ6IlJlcHJlc2VudHMgdGhlIGNvbXB1dGVkIHZhbHVlIG9mIHRoZSBwcm9wZXJ0eSBvbiB0aGUgZWxlbWVudOKAmXMgcGFyZW50LiIsdW5zZXQ6IkFjdHMgYXMgZWl0aGVyIGBpbmhlcml0YCBvciBgaW5pdGlhbGAsIGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoZSBwcm9wZXJ0eSBpcyBpbmhlcml0ZWQgb3Igbm90LiJ9LFZjPXsidmFyKCkiOiJFdmFsdWF0ZXMgdGhlIHZhbHVlIG9mIGEgY3VzdG9tIHZhcmlhYmxlLiIsImNhbGMoKSI6IkV2YWx1YXRlcyBhbiBtYXRoZW1hdGljYWwgZXhwcmVzc2lvbi4gVGhlIGZvbGxvd2luZyBvcGVyYXRvcnMgY2FuIGJlIHVzZWQ6ICsgLSAqIC8uIn0sJGM9eyJ1cmwoKSI6IlJlZmVyZW5jZSBhbiBpbWFnZSBmaWxlIGJ5IFVSTCIsImltYWdlKCkiOiJQcm92aWRlIGltYWdlIGZhbGxiYWNrcyBhbmQgYW5ub3RhdGlvbnMuIiwiLXdlYmtpdC1pbWFnZS1zZXQoKSI6IlByb3ZpZGUgbXVsdGlwbGUgcmVzb2x1dGlvbnMuIFJlbWVtYmVyIHRvIHVzZSB1bnByZWZpeGVkIGltYWdlLXNldCgpIGluIGFkZGl0aW9uLiIsImltYWdlLXNldCgpIjoiUHJvdmlkZSBtdWx0aXBsZSByZXNvbHV0aW9ucyBvZiBhbiBpbWFnZSBhbmQgY29uc3QgdGhlIFVBIGRlY2lkZSB3aGljaCBpcyBtb3N0IGFwcHJvcHJpYXRlIGluIGEgZ2l2ZW4gc2l0dWF0aW9uLiIsIi1tb3otZWxlbWVudCgpIjoiVXNlIGFuIGVsZW1lbnQgaW4gdGhlIGRvY3VtZW50IGFzIGFuIGltYWdlLiBSZW1lbWJlciB0byB1c2UgdW5wcmVmaXhlZCBlbGVtZW50KCkgaW4gYWRkaXRpb24uIiwiZWxlbWVudCgpIjoiVXNlIGFuIGVsZW1lbnQgaW4gdGhlIGRvY3VtZW50IGFzIGFuIGltYWdlLiIsImNyb3NzLWZhZGUoKSI6IkluZGljYXRlcyB0aGUgdHdvIGltYWdlcyB0byBiZSBjb21iaW5lZCBhbmQgaG93IGZhciBhbG9uZyBpbiB0aGUgdHJhbnNpdGlvbiB0aGUgY29tYmluYXRpb24gaXMuIiwiLXdlYmtpdC1ncmFkaWVudCgpIjoiRGVwcmVjYXRlZC4gVXNlIG1vZGVybiBsaW5lYXItZ3JhZGllbnQoKSBvciByYWRpYWwtZ3JhZGllbnQoKSBpbnN0ZWFkLiIsIi13ZWJraXQtbGluZWFyLWdyYWRpZW50KCkiOiJMaW5lYXIgZ3JhZGllbnQuIFJlbWVtYmVyIHRvIHVzZSB1bnByZWZpeGVkIHZlcnNpb24gaW4gYWRkaXRpb24uIiwiLW1vei1saW5lYXItZ3JhZGllbnQoKSI6IkxpbmVhciBncmFkaWVudC4gUmVtZW1iZXIgdG8gdXNlIHVucHJlZml4ZWQgdmVyc2lvbiBpbiBhZGRpdGlvbi4iLCItby1saW5lYXItZ3JhZGllbnQoKSI6IkxpbmVhciBncmFkaWVudC4gUmVtZW1iZXIgdG8gdXNlIHVucHJlZml4ZWQgdmVyc2lvbiBpbiBhZGRpdGlvbi4iLCJsaW5lYXItZ3JhZGllbnQoKSI6IkEgbGluZWFyIGdyYWRpZW50IGlzIGNyZWF0ZWQgYnkgc3BlY2lmeWluZyBhIHN0cmFpZ2h0IGdyYWRpZW50IGxpbmUsIGFuZCB0aGVuIHNldmVyYWwgY29sb3JzIHBsYWNlZCBhbG9uZyB0aGF0IGxpbmUuIiwiLXdlYmtpdC1yZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KCkiOiJSZXBlYXRpbmcgTGluZWFyIGdyYWRpZW50LiBSZW1lbWJlciB0byB1c2UgdW5wcmVmaXhlZCB2ZXJzaW9uIGluIGFkZGl0aW9uLiIsIi1tb3otcmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCgpIjoiUmVwZWF0aW5nIExpbmVhciBncmFkaWVudC4gUmVtZW1iZXIgdG8gdXNlIHVucHJlZml4ZWQgdmVyc2lvbiBpbiBhZGRpdGlvbi4iLCItby1yZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KCkiOiJSZXBlYXRpbmcgTGluZWFyIGdyYWRpZW50LiBSZW1lbWJlciB0byB1c2UgdW5wcmVmaXhlZCB2ZXJzaW9uIGluIGFkZGl0aW9uLiIsInJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQoKSI6IlNhbWUgYXMgbGluZWFyLWdyYWRpZW50LCBleGNlcHQgdGhlIGNvbG9yLXN0b3BzIGFyZSByZXBlYXRlZCBpbmZpbml0ZWx5IGluIGJvdGggZGlyZWN0aW9ucywgd2l0aCB0aGVpciBwb3NpdGlvbnMgc2hpZnRlZCBieSBtdWx0aXBsZXMgb2YgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgbGFzdCBzcGVjaWZpZWQgY29sb3Itc3RvcOKAmXMgcG9zaXRpb24gYW5kIHRoZSBmaXJzdCBzcGVjaWZpZWQgY29sb3Itc3RvcOKAmXMgcG9zaXRpb24uIiwiLXdlYmtpdC1yYWRpYWwtZ3JhZGllbnQoKSI6IlJhZGlhbCBncmFkaWVudC4gUmVtZW1iZXIgdG8gdXNlIHVucHJlZml4ZWQgdmVyc2lvbiBpbiBhZGRpdGlvbi4iLCItbW96LXJhZGlhbC1ncmFkaWVudCgpIjoiUmFkaWFsIGdyYWRpZW50LiBSZW1lbWJlciB0byB1c2UgdW5wcmVmaXhlZCB2ZXJzaW9uIGluIGFkZGl0aW9uLiIsInJhZGlhbC1ncmFkaWVudCgpIjoiQ29sb3JzIGVtZXJnZSBmcm9tIGEgc2luZ2xlIHBvaW50IGFuZCBzbW9vdGhseSBzcHJlYWQgb3V0d2FyZCBpbiBhIGNpcmN1bGFyIG9yIGVsbGlwdGljYWwgc2hhcGUuIiwiLXdlYmtpdC1yZXBlYXRpbmctcmFkaWFsLWdyYWRpZW50KCkiOiJSZXBlYXRpbmcgcmFkaWFsIGdyYWRpZW50LiBSZW1lbWJlciB0byB1c2UgdW5wcmVmaXhlZCB2ZXJzaW9uIGluIGFkZGl0aW9uLiIsIi1tb3otcmVwZWF0aW5nLXJhZGlhbC1ncmFkaWVudCgpIjoiUmVwZWF0aW5nIHJhZGlhbCBncmFkaWVudC4gUmVtZW1iZXIgdG8gdXNlIHVucHJlZml4ZWQgdmVyc2lvbiBpbiBhZGRpdGlvbi4iLCJyZXBlYXRpbmctcmFkaWFsLWdyYWRpZW50KCkiOiJTYW1lIGFzIHJhZGlhbC1ncmFkaWVudCwgZXhjZXB0IHRoZSBjb2xvci1zdG9wcyBhcmUgcmVwZWF0ZWQgaW5maW5pdGVseSBpbiBib3RoIGRpcmVjdGlvbnMsIHdpdGggdGhlaXIgcG9zaXRpb25zIHNoaWZ0ZWQgYnkgbXVsdGlwbGVzIG9mIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIGxhc3Qgc3BlY2lmaWVkIGNvbG9yLXN0b3DigJlzIHBvc2l0aW9uIGFuZCB0aGUgZmlyc3Qgc3BlY2lmaWVkIGNvbG9yLXN0b3DigJlzIHBvc2l0aW9uLiJ9LEJjPXtlYXNlOiJFcXVpdmFsZW50IHRvIGN1YmljLWJlemllcigwLjI1LCAwLjEsIDAuMjUsIDEuMCkuIiwiZWFzZS1pbiI6IkVxdWl2YWxlbnQgdG8gY3ViaWMtYmV6aWVyKDAuNDIsIDAsIDEuMCwgMS4wKS4iLCJlYXNlLWluLW91dCI6IkVxdWl2YWxlbnQgdG8gY3ViaWMtYmV6aWVyKDAuNDIsIDAsIDAuNTgsIDEuMCkuIiwiZWFzZS1vdXQiOiJFcXVpdmFsZW50IHRvIGN1YmljLWJlemllcigwLCAwLCAwLjU4LCAxLjApLiIsbGluZWFyOiJFcXVpdmFsZW50IHRvIGN1YmljLWJlemllcigwLjAsIDAuMCwgMS4wLCAxLjApLiIsInN0ZXAtZW5kIjoiRXF1aXZhbGVudCB0byBzdGVwcygxLCBlbmQpLiIsInN0ZXAtc3RhcnQiOiJFcXVpdmFsZW50IHRvIHN0ZXBzKDEsIHN0YXJ0KS4iLCJzdGVwcygpIjoiVGhlIGZpcnN0IHBhcmFtZXRlciBzcGVjaWZpZXMgdGhlIG51bWJlciBvZiBpbnRlcnZhbHMgaW4gdGhlIGZ1bmN0aW9uLiBUaGUgc2Vjb25kIHBhcmFtZXRlciwgd2hpY2ggaXMgb3B0aW9uYWwsIGlzIGVpdGhlciB0aGUgdmFsdWUg4oCcc3RhcnTigJ0gb3Ig4oCcZW5k4oCdLiIsImN1YmljLWJlemllcigpIjoiU3BlY2lmaWVzIGEgY3ViaWMtYmV6aWVyIGN1cnZlLiBUaGUgZm91ciB2YWx1ZXMgc3BlY2lmeSBwb2ludHMgUDEgYW5kIFAyICBvZiB0aGUgY3VydmUgYXMgKHgxLCB5MSwgeDIsIHkyKS4iLCJjdWJpYy1iZXppZXIoMC42LCAtMC4yOCwgMC43MzUsIDAuMDQ1KSI6IkVhc2UtaW4gQmFjay4gT3ZlcnNob290cy4iLCJjdWJpYy1iZXppZXIoMC42OCwgLTAuNTUsIDAuMjY1LCAxLjU1KSI6IkVhc2UtaW4tb3V0IEJhY2suIE92ZXJzaG9vdHMuIiwiY3ViaWMtYmV6aWVyKDAuMTc1LCAwLjg4NSwgMC4zMiwgMS4yNzUpIjoiRWFzZS1vdXQgQmFjay4gT3ZlcnNob290cy4iLCJjdWJpYy1iZXppZXIoMC42LCAwLjA0LCAwLjk4LCAwLjMzNSkiOiJFYXNlLWluIENpcmN1bGFyLiBCYXNlZCBvbiBoYWxmIGNpcmNsZS4iLCJjdWJpYy1iZXppZXIoMC43ODUsIDAuMTM1LCAwLjE1LCAwLjg2KSI6IkVhc2UtaW4tb3V0IENpcmN1bGFyLiBCYXNlZCBvbiBoYWxmIGNpcmNsZS4iLCJjdWJpYy1iZXppZXIoMC4wNzUsIDAuODIsIDAuMTY1LCAxKSI6IkVhc2Utb3V0IENpcmN1bGFyLiBCYXNlZCBvbiBoYWxmIGNpcmNsZS4iLCJjdWJpYy1iZXppZXIoMC41NSwgMC4wNTUsIDAuNjc1LCAwLjE5KSI6IkVhc2UtaW4gQ3ViaWMuIEJhc2VkIG9uIHBvd2VyIG9mIHRocmVlLiIsImN1YmljLWJlemllcigwLjY0NSwgMC4wNDUsIDAuMzU1LCAxKSI6IkVhc2UtaW4tb3V0IEN1YmljLiBCYXNlZCBvbiBwb3dlciBvZiB0aHJlZS4iLCJjdWJpYy1iZXppZXIoMC4yMTUsIDAuNjEwLCAwLjM1NSwgMSkiOiJFYXNlLW91dCBDdWJpYy4gQmFzZWQgb24gcG93ZXIgb2YgdGhyZWUuIiwiY3ViaWMtYmV6aWVyKDAuOTUsIDAuMDUsIDAuNzk1LCAwLjAzNSkiOiJFYXNlLWluIEV4cG9uZW50aWFsLiBCYXNlZCBvbiB0d28gdG8gdGhlIHBvd2VyIHRlbi4iLCJjdWJpYy1iZXppZXIoMSwgMCwgMCwgMSkiOiJFYXNlLWluLW91dCBFeHBvbmVudGlhbC4gQmFzZWQgb24gdHdvIHRvIHRoZSBwb3dlciB0ZW4uIiwiY3ViaWMtYmV6aWVyKDAuMTksIDEsIDAuMjIsIDEpIjoiRWFzZS1vdXQgRXhwb25lbnRpYWwuIEJhc2VkIG9uIHR3byB0byB0aGUgcG93ZXIgdGVuLiIsImN1YmljLWJlemllcigwLjQ3LCAwLCAwLjc0NSwgMC43MTUpIjoiRWFzZS1pbiBTaW5lLiIsImN1YmljLWJlemllcigwLjQ0NSwgMC4wNSwgMC41NSwgMC45NSkiOiJFYXNlLWluLW91dCBTaW5lLiIsImN1YmljLWJlemllcigwLjM5LCAwLjU3NSwgMC41NjUsIDEpIjoiRWFzZS1vdXQgU2luZS4iLCJjdWJpYy1iZXppZXIoMC41NSwgMC4wODUsIDAuNjgsIDAuNTMpIjoiRWFzZS1pbiBRdWFkcmF0aWMuIEJhc2VkIG9uIHBvd2VyIG9mIHR3by4iLCJjdWJpYy1iZXppZXIoMC40NTUsIDAuMDMsIDAuNTE1LCAwLjk1NSkiOiJFYXNlLWluLW91dCBRdWFkcmF0aWMuIEJhc2VkIG9uIHBvd2VyIG9mIHR3by4iLCJjdWJpYy1iZXppZXIoMC4yNSwgMC40NiwgMC40NSwgMC45NCkiOiJFYXNlLW91dCBRdWFkcmF0aWMuIEJhc2VkIG9uIHBvd2VyIG9mIHR3by4iLCJjdWJpYy1iZXppZXIoMC44OTUsIDAuMDMsIDAuNjg1LCAwLjIyKSI6IkVhc2UtaW4gUXVhcnRpYy4gQmFzZWQgb24gcG93ZXIgb2YgZm91ci4iLCJjdWJpYy1iZXppZXIoMC43NywgMCwgMC4xNzUsIDEpIjoiRWFzZS1pbi1vdXQgUXVhcnRpYy4gQmFzZWQgb24gcG93ZXIgb2YgZm91ci4iLCJjdWJpYy1iZXppZXIoMC4xNjUsIDAuODQsIDAuNDQsIDEpIjoiRWFzZS1vdXQgUXVhcnRpYy4gQmFzZWQgb24gcG93ZXIgb2YgZm91ci4iLCJjdWJpYy1iZXppZXIoMC43NTUsIDAuMDUsIDAuODU1LCAwLjA2KSI6IkVhc2UtaW4gUXVpbnRpYy4gQmFzZWQgb24gcG93ZXIgb2YgZml2ZS4iLCJjdWJpYy1iZXppZXIoMC44NiwgMCwgMC4wNywgMSkiOiJFYXNlLWluLW91dCBRdWludGljLiBCYXNlZCBvbiBwb3dlciBvZiBmaXZlLiIsImN1YmljLWJlemllcigwLjIzLCAxLCAwLjMyMCwgMSkiOiJFYXNlLW91dCBRdWludGljLiBCYXNlZCBvbiBwb3dlciBvZiBmaXZlLiJ9LHFjPXsiY2lyY2xlKCkiOiJEZWZpbmVzIGEgY2lyY2xlLiIsImVsbGlwc2UoKSI6IkRlZmluZXMgYW4gZWxsaXBzZS4iLCJpbnNldCgpIjoiRGVmaW5lcyBhbiBpbnNldCByZWN0YW5nbGUuIiwicG9seWdvbigpIjoiRGVmaW5lcyBhIHBvbHlnb24uIn0samM9e2xlbmd0aDpbImNhcCIsImNoIiwiY20iLCJjcWIiLCJjcWgiLCJjcWkiLCJjcW1heCIsImNxbWluIiwiY3F3IiwiZHZiIiwiZHZoIiwiZHZpIiwiZHZ3IiwiZW0iLCJleCIsImljIiwiaW4iLCJsaCIsImx2YiIsImx2aCIsImx2aSIsImx2dyIsIm1tIiwicGMiLCJwdCIsInB4IiwicSIsInJjYXAiLCJyY2giLCJyZW0iLCJyZXgiLCJyaWMiLCJybGgiLCJzdmIiLCJzdmgiLCJzdmkiLCJzdnciLCJ2YiIsInZoIiwidmkiLCJ2bWF4Iiwidm1pbiIsInZ3Il0sYW5nbGU6WyJkZWciLCJyYWQiLCJncmFkIiwidHVybiJdLHRpbWU6WyJtcyIsInMiXSxmcmVxdWVuY3k6WyJIeiIsImtIeiJdLHJlc29sdXRpb246WyJkcGkiLCJkcGNtIiwiZHBweCJdLHBlcmNlbnRhZ2U6WyIlIiwiZnIiXX0sQ209WyJhIiwiYWJiciIsImFkZHJlc3MiLCJhcmVhIiwiYXJ0aWNsZSIsImFzaWRlIiwiYXVkaW8iLCJiIiwiYmFzZSIsImJkaSIsImJkbyIsImJsb2NrcXVvdGUiLCJib2R5IiwiYnIiLCJidXR0b24iLCJjYW52YXMiLCJjYXB0aW9uIiwiY2l0ZSIsImNvZGUiLCJjb2wiLCJjb2xncm91cCIsImRhdGEiLCJkYXRhbGlzdCIsImRkIiwiZGVsIiwiZGV0YWlscyIsImRmbiIsImRpYWxvZyIsImRpdiIsImRsIiwiZHQiLCJlbSIsImVtYmVkIiwiZmllbGRzZXQiLCJmaWdjYXB0aW9uIiwiZmlndXJlIiwiZm9vdGVyIiwiZm9ybSIsImgxIiwiaDIiLCJoMyIsImg0IiwiaDUiLCJoNiIsImhlYWQiLCJoZWFkZXIiLCJoZ3JvdXAiLCJociIsImh0bWwiLCJpIiwiaWZyYW1lIiwiaW1nIiwiaW5wdXQiLCJpbnMiLCJrYmQiLCJrZXlnZW4iLCJsYWJlbCIsImxlZ2VuZCIsImxpIiwibGluayIsIm1haW4iLCJtYXAiLCJtYXJrIiwibWVudSIsIm1lbnVpdGVtIiwibWV0YSIsIm1ldGVyIiwibmF2Iiwibm9zY3JpcHQiLCJvYmplY3QiLCJvbCIsIm9wdGdyb3VwIiwib3B0aW9uIiwib3V0cHV0IiwicCIsInBhcmFtIiwicGljdHVyZSIsInByZSIsInByb2dyZXNzIiwicSIsInJiIiwicnAiLCJydCIsInJ0YyIsInJ1YnkiLCJzIiwic2FtcCIsInNjcmlwdCIsInNlY3Rpb24iLCJzZWxlY3QiLCJzbWFsbCIsInNvdXJjZSIsInNwYW4iLCJzdHJvbmciLCJzdHlsZSIsInN1YiIsInN1bW1hcnkiLCJzdXAiLCJ0YWJsZSIsInRib2R5IiwidGQiLCJ0ZW1wbGF0ZSIsInRleHRhcmVhIiwidGZvb3QiLCJ0aCIsInRoZWFkIiwidGltZSIsInRpdGxlIiwidHIiLCJ0cmFjayIsInUiLCJ1bCIsImNvbnN0IiwidmlkZW8iLCJ3YnIiXSxfbT1bImNpcmNsZSIsImNsaXBQYXRoIiwiY3Vyc29yIiwiZGVmcyIsImRlc2MiLCJlbGxpcHNlIiwiZmVCbGVuZCIsImZlQ29sb3JNYXRyaXgiLCJmZUNvbXBvbmVudFRyYW5zZmVyIiwiZmVDb21wb3NpdGUiLCJmZUNvbnZvbHZlTWF0cml4IiwiZmVEaWZmdXNlTGlnaHRpbmciLCJmZURpc3BsYWNlbWVudE1hcCIsImZlRGlzdGFudExpZ2h0IiwiZmVEcm9wU2hhZG93IiwiZmVGbG9vZCIsImZlRnVuY0EiLCJmZUZ1bmNCIiwiZmVGdW5jRyIsImZlRnVuY1IiLCJmZUdhdXNzaWFuQmx1ciIsImZlSW1hZ2UiLCJmZU1lcmdlIiwiZmVNZXJnZU5vZGUiLCJmZU1vcnBob2xvZ3kiLCJmZU9mZnNldCIsImZlUG9pbnRMaWdodCIsImZlU3BlY3VsYXJMaWdodGluZyIsImZlU3BvdExpZ2h0IiwiZmVUaWxlIiwiZmVUdXJidWxlbmNlIiwiZmlsdGVyIiwiZm9yZWlnbk9iamVjdCIsImciLCJoYXRjaCIsImhhdGNocGF0aCIsImltYWdlIiwibGluZSIsImxpbmVhckdyYWRpZW50IiwibWFya2VyIiwibWFzayIsIm1lc2giLCJtZXNocGF0Y2giLCJtZXNocm93IiwibWV0YWRhdGEiLCJtcGF0aCIsInBhdGgiLCJwYXR0ZXJuIiwicG9seWdvbiIsInBvbHlsaW5lIiwicmFkaWFsR3JhZGllbnQiLCJyZWN0Iiwic2V0Iiwic29saWRjb2xvciIsInN0b3AiLCJzdmciLCJzd2l0Y2giLCJzeW1ib2wiLCJ0ZXh0IiwidGV4dFBhdGgiLCJ0c3BhbiIsInVzZSIsInZpZXciXSxrbT1bIkBib3R0b20tY2VudGVyIiwiQGJvdHRvbS1sZWZ0IiwiQGJvdHRvbS1sZWZ0LWNvcm5lciIsIkBib3R0b20tcmlnaHQiLCJAYm90dG9tLXJpZ2h0LWNvcm5lciIsIkBsZWZ0LWJvdHRvbSIsIkBsZWZ0LW1pZGRsZSIsIkBsZWZ0LXRvcCIsIkByaWdodC1ib3R0b20iLCJAcmlnaHQtbWlkZGxlIiwiQHJpZ2h0LXRvcCIsIkB0b3AtY2VudGVyIiwiQHRvcC1sZWZ0IiwiQHRvcC1sZWZ0LWNvcm5lciIsIkB0b3AtcmlnaHQiLCJAdG9wLXJpZ2h0LWNvcm5lciJdO2Z1bmN0aW9uIFNyKGUpe3JldHVybiBPYmplY3Qua2V5cyhlKS5tYXAodD0+ZVt0XSl9ZnVuY3Rpb24gTGUoZSl7cmV0dXJuIHR5cGVvZiBlPCJ1In12YXIgQ3I9Y2xhc3N7Y29uc3RydWN0b3IoZT1uZXcgU24pe3RoaXMua2V5ZnJhbWVSZWdleD0vXkAoXC0od2Via2l0fG1zfG1venxvKVwtKT9rZXlmcmFtZXMkL2ksdGhpcy5zY2FubmVyPWUsdGhpcy50b2tlbj17dHlwZTpwLkVPRixvZmZzZXQ6LTEsbGVuOjAsdGV4dDoiIn0sdGhpcy5wcmV2VG9rZW49dm9pZCAwfXBlZWtJZGVudChlKXtyZXR1cm4gcC5JZGVudD09PXRoaXMudG9rZW4udHlwZSYmZS5sZW5ndGg9PT10aGlzLnRva2VuLnRleHQubGVuZ3RoJiZlPT09dGhpcy50b2tlbi50ZXh0LnRvTG93ZXJDYXNlKCl9cGVla0tleXdvcmQoZSl7cmV0dXJuIHAuQXRLZXl3b3JkPT09dGhpcy50b2tlbi50eXBlJiZlLmxlbmd0aD09PXRoaXMudG9rZW4udGV4dC5sZW5ndGgmJmU9PT10aGlzLnRva2VuLnRleHQudG9Mb3dlckNhc2UoKX1wZWVrRGVsaW0oZSl7cmV0dXJuIHAuRGVsaW09PT10aGlzLnRva2VuLnR5cGUmJmU9PT10aGlzLnRva2VuLnRleHR9cGVlayhlKXtyZXR1cm4gZT09PXRoaXMudG9rZW4udHlwZX1wZWVrT25lKC4uLmUpe3JldHVybiBlLmluZGV4T2YodGhpcy50b2tlbi50eXBlKSE9PS0xfXBlZWtSZWdFeHAoZSx0KXtyZXR1cm4gZSE9PXRoaXMudG9rZW4udHlwZT8hMTp0LnRlc3QodGhpcy50b2tlbi50ZXh0KX1oYXNXaGl0ZXNwYWNlKCl7cmV0dXJuISF0aGlzLnByZXZUb2tlbiYmdGhpcy5wcmV2VG9rZW4ub2Zmc2V0K3RoaXMucHJldlRva2VuLmxlbiE9PXRoaXMudG9rZW4ub2Zmc2V0fWNvbnN1bWVUb2tlbigpe3RoaXMucHJldlRva2VuPXRoaXMudG9rZW4sdGhpcy50b2tlbj10aGlzLnNjYW5uZXIuc2NhbigpfWFjY2VwdFVuaWNvZGVSYW5nZSgpe2NvbnN0IGU9dGhpcy5zY2FubmVyLnRyeVNjYW5Vbmljb2RlKCk7cmV0dXJuIGU/KHRoaXMucHJldlRva2VuPWUsdGhpcy50b2tlbj10aGlzLnNjYW5uZXIuc2NhbigpLCEwKTohMX1tYXJrKCl7cmV0dXJue3ByZXY6dGhpcy5wcmV2VG9rZW4sY3Vycjp0aGlzLnRva2VuLHBvczp0aGlzLnNjYW5uZXIucG9zKCl9fXJlc3RvcmVBdE1hcmsoZSl7dGhpcy5wcmV2VG9rZW49ZS5wcmV2LHRoaXMudG9rZW49ZS5jdXJyLHRoaXMuc2Nhbm5lci5nb0JhY2tUbyhlLnBvcyl9dHJ5KGUpe2NvbnN0IHQ9dGhpcy5tYXJrKCksbj1lKCk7cmV0dXJuIG58fCh0aGlzLnJlc3RvcmVBdE1hcmsodCksbnVsbCl9YWNjZXB0T25lS2V5d29yZChlKXtpZihwLkF0S2V5d29yZD09PXRoaXMudG9rZW4udHlwZSl7Zm9yKGNvbnN0IHQgb2YgZSlpZih0Lmxlbmd0aD09PXRoaXMudG9rZW4udGV4dC5sZW5ndGgmJnQ9PT10aGlzLnRva2VuLnRleHQudG9Mb3dlckNhc2UoKSlyZXR1cm4gdGhpcy5jb25zdW1lVG9rZW4oKSwhMH1yZXR1cm4hMX1hY2NlcHQoZSl7cmV0dXJuIGU9PT10aGlzLnRva2VuLnR5cGU/KHRoaXMuY29uc3VtZVRva2VuKCksITApOiExfWFjY2VwdElkZW50KGUpe3JldHVybiB0aGlzLnBlZWtJZGVudChlKT8odGhpcy5jb25zdW1lVG9rZW4oKSwhMCk6ITF9YWNjZXB0S2V5d29yZChlKXtyZXR1cm4gdGhpcy5wZWVrS2V5d29yZChlKT8odGhpcy5jb25zdW1lVG9rZW4oKSwhMCk6ITF9YWNjZXB0RGVsaW0oZSl7cmV0dXJuIHRoaXMucGVla0RlbGltKGUpPyh0aGlzLmNvbnN1bWVUb2tlbigpLCEwKTohMX1hY2NlcHRSZWdleHAoZSl7cmV0dXJuIGUudGVzdCh0aGlzLnRva2VuLnRleHQpPyh0aGlzLmNvbnN1bWVUb2tlbigpLCEwKTohMX1fcGFyc2VSZWdleHAoZSl7bGV0IHQ9dGhpcy5jcmVhdGVOb2RlKGIuSWRlbnRpZmllcik7ZG87d2hpbGUodGhpcy5hY2NlcHRSZWdleHAoZSkpO3JldHVybiB0aGlzLmZpbmlzaCh0KX1hY2NlcHRVbnF1b3RlZFN0cmluZygpe2NvbnN0IGU9dGhpcy5zY2FubmVyLnBvcygpO3RoaXMuc2Nhbm5lci5nb0JhY2tUbyh0aGlzLnRva2VuLm9mZnNldCk7Y29uc3QgdD10aGlzLnNjYW5uZXIuc2NhblVucXVvdGVkU3RyaW5nKCk7cmV0dXJuIHQ/KHRoaXMudG9rZW49dCx0aGlzLmNvbnN1bWVUb2tlbigpLCEwKToodGhpcy5zY2FubmVyLmdvQmFja1RvKGUpLCExKX1yZXN5bmMoZSx0KXtmb3IoOzspe2lmKGUmJmUuaW5kZXhPZih0aGlzLnRva2VuLnR5cGUpIT09LTEpcmV0dXJuIHRoaXMuY29uc3VtZVRva2VuKCksITA7aWYodCYmdC5pbmRleE9mKHRoaXMudG9rZW4udHlwZSkhPT0tMSlyZXR1cm4hMDtpZih0aGlzLnRva2VuLnR5cGU9PT1wLkVPRilyZXR1cm4hMTt0aGlzLnRva2VuPXRoaXMuc2Nhbm5lci5zY2FuKCl9fWNyZWF0ZU5vZGUoZSl7cmV0dXJuIG5ldyBPKHRoaXMudG9rZW4ub2Zmc2V0LHRoaXMudG9rZW4ubGVuLGUpfWNyZWF0ZShlKXtyZXR1cm4gbmV3IGUodGhpcy50b2tlbi5vZmZzZXQsdGhpcy50b2tlbi5sZW4pfWZpbmlzaChlLHQsbixyKXtpZighKGUgaW5zdGFuY2VvZiB5ZSkmJih0JiZ0aGlzLm1hcmtFcnJvcihlLHQsbixyKSx0aGlzLnByZXZUb2tlbikpe2NvbnN0IGk9dGhpcy5wcmV2VG9rZW4ub2Zmc2V0K3RoaXMucHJldlRva2VuLmxlbjtlLmxlbmd0aD1pPmUub2Zmc2V0P2ktZS5vZmZzZXQ6MH1yZXR1cm4gZX1tYXJrRXJyb3IoZSx0LG4scil7dGhpcy50b2tlbiE9PXRoaXMubGFzdEVycm9yVG9rZW4mJihlLmFkZElzc3VlKG5ldyBEbChlLHQsUmUuRXJyb3Isdm9pZCAwLHRoaXMudG9rZW4ub2Zmc2V0LHRoaXMudG9rZW4ubGVuKSksdGhpcy5sYXN0RXJyb3JUb2tlbj10aGlzLnRva2VuKSwobnx8cikmJnRoaXMucmVzeW5jKG4scil9cGFyc2VTdHlsZXNoZWV0KGUpe2NvbnN0IHQ9ZS52ZXJzaW9uLG49ZS5nZXRUZXh0KCkscj0oaSxzKT0+e2lmKGUudmVyc2lvbiE9PXQpdGhyb3cgbmV3IEVycm9yKCJVbmRlcmx5aW5nIG1vZGVsIGhhcyBjaGFuZ2VkLCBBU1QgaXMgbm8gbG9uZ2VyIHZhbGlkIik7cmV0dXJuIG4uc3Vic3RyKGkscyl9O3JldHVybiB0aGlzLmludGVybmFsUGFyc2Uobix0aGlzLl9wYXJzZVN0eWxlc2hlZXQscil9aW50ZXJuYWxQYXJzZShlLHQsbil7dGhpcy5zY2FubmVyLnNldFNvdXJjZShlKSx0aGlzLnRva2VuPXRoaXMuc2Nhbm5lci5zY2FuKCk7Y29uc3Qgcj10LmJpbmQodGhpcykoKTtyZXR1cm4gciYmKG4/ci50ZXh0UHJvdmlkZXI9bjpyLnRleHRQcm92aWRlcj0oaSxzKT0+ZS5zdWJzdHIoaSxzKSkscn1fcGFyc2VTdHlsZXNoZWV0KCl7Y29uc3QgZT10aGlzLmNyZWF0ZShDcCk7Zm9yKDtlLmFkZENoaWxkKHRoaXMuX3BhcnNlU3R5bGVzaGVldFN0YXJ0KCkpOyk7bGV0IHQ9ITE7ZG97bGV0IG49ITE7ZG97bj0hMTtjb25zdCByPXRoaXMuX3BhcnNlU3R5bGVzaGVldFN0YXRlbWVudCgpO2ZvcihyJiYoZS5hZGRDaGlsZChyKSxuPSEwLHQ9ITEsIXRoaXMucGVlayhwLkVPRikmJnRoaXMuX25lZWRzU2VtaWNvbG9uQWZ0ZXIocikmJiF0aGlzLmFjY2VwdChwLlNlbWlDb2xvbikmJnRoaXMubWFya0Vycm9yKGUseS5TZW1pQ29sb25FeHBlY3RlZCkpO3RoaXMuYWNjZXB0KHAuU2VtaUNvbG9uKXx8dGhpcy5hY2NlcHQocC5DRE8pfHx0aGlzLmFjY2VwdChwLkNEQyk7KW49ITAsdD0hMX13aGlsZShuKTtpZih0aGlzLnBlZWsocC5FT0YpKWJyZWFrO3R8fCh0aGlzLnBlZWsocC5BdEtleXdvcmQpP3RoaXMubWFya0Vycm9yKGUseS5Vbmtub3duQXRSdWxlKTp0aGlzLm1hcmtFcnJvcihlLHkuUnVsZU9yU2VsZWN0b3JFeHBlY3RlZCksdD0hMCksdGhpcy5jb25zdW1lVG9rZW4oKX13aGlsZSghdGhpcy5wZWVrKHAuRU9GKSk7cmV0dXJuIHRoaXMuZmluaXNoKGUpfV9wYXJzZVN0eWxlc2hlZXRTdGFydCgpe3JldHVybiB0aGlzLl9wYXJzZUNoYXJzZXQoKX1fcGFyc2VTdHlsZXNoZWV0U3RhdGVtZW50KGU9ITEpe3JldHVybiB0aGlzLnBlZWsocC5BdEtleXdvcmQpP3RoaXMuX3BhcnNlU3R5bGVzaGVldEF0U3RhdGVtZW50KGUpOnRoaXMuX3BhcnNlUnVsZXNldChlKX1fcGFyc2VTdHlsZXNoZWV0QXRTdGF0ZW1lbnQoZT0hMSl7cmV0dXJuIHRoaXMuX3BhcnNlSW1wb3J0KCl8fHRoaXMuX3BhcnNlTWVkaWEoZSl8fHRoaXMuX3BhcnNlUGFnZSgpfHx0aGlzLl9wYXJzZUZvbnRGYWNlKCl8fHRoaXMuX3BhcnNlS2V5ZnJhbWUoKXx8dGhpcy5fcGFyc2VTdXBwb3J0cyhlKXx8dGhpcy5fcGFyc2VMYXllcihlKXx8dGhpcy5fcGFyc2VQcm9wZXJ0eUF0UnVsZSgpfHx0aGlzLl9wYXJzZVZpZXdQb3J0KCl8fHRoaXMuX3BhcnNlTmFtZXNwYWNlKCl8fHRoaXMuX3BhcnNlRG9jdW1lbnQoKXx8dGhpcy5fcGFyc2VDb250YWluZXIoZSl8fHRoaXMuX3BhcnNlVW5rbm93bkF0UnVsZSgpfV90cnlQYXJzZVJ1bGVzZXQoZSl7Y29uc3QgdD10aGlzLm1hcmsoKTtpZih0aGlzLl9wYXJzZVNlbGVjdG9yKGUpKXtmb3IoO3RoaXMuYWNjZXB0KHAuQ29tbWEpJiZ0aGlzLl9wYXJzZVNlbGVjdG9yKGUpOyk7aWYodGhpcy5hY2NlcHQocC5DdXJseUwpKXJldHVybiB0aGlzLnJlc3RvcmVBdE1hcmsodCksdGhpcy5fcGFyc2VSdWxlc2V0KGUpfXJldHVybiB0aGlzLnJlc3RvcmVBdE1hcmsodCksbnVsbH1fcGFyc2VSdWxlc2V0KGU9ITEpe2NvbnN0IHQ9dGhpcy5jcmVhdGUoRXQpLG49dC5nZXRTZWxlY3RvcnMoKTtpZighbi5hZGRDaGlsZCh0aGlzLl9wYXJzZVNlbGVjdG9yKGUpKSlyZXR1cm4gbnVsbDtmb3IoO3RoaXMuYWNjZXB0KHAuQ29tbWEpOylpZighbi5hZGRDaGlsZCh0aGlzLl9wYXJzZVNlbGVjdG9yKGUpKSlyZXR1cm4gdGhpcy5maW5pc2godCx5LlNlbGVjdG9yRXhwZWN0ZWQpO3JldHVybiB0aGlzLl9wYXJzZUJvZHkodCx0aGlzLl9wYXJzZVJ1bGVTZXREZWNsYXJhdGlvbi5iaW5kKHRoaXMpKX1fcGFyc2VSdWxlU2V0RGVjbGFyYXRpb25BdFN0YXRlbWVudCgpe3JldHVybiB0aGlzLl9wYXJzZU1lZGlhKCEwKXx8dGhpcy5fcGFyc2VTdXBwb3J0cyghMCl8fHRoaXMuX3BhcnNlTGF5ZXIoITApfHx0aGlzLl9wYXJzZUNvbnRhaW5lcighMCl8fHRoaXMuX3BhcnNlVW5rbm93bkF0UnVsZSgpfV9wYXJzZVJ1bGVTZXREZWNsYXJhdGlvbigpe3JldHVybiB0aGlzLnBlZWsocC5BdEtleXdvcmQpP3RoaXMuX3BhcnNlUnVsZVNldERlY2xhcmF0aW9uQXRTdGF0ZW1lbnQoKTp0aGlzLnBlZWsocC5JZGVudCk/dGhpcy5fdHJ5UGFyc2VSdWxlc2V0KCEwKXx8dGhpcy5fcGFyc2VEZWNsYXJhdGlvbigpOnRoaXMuX3BhcnNlUnVsZXNldCghMCl9X25lZWRzU2VtaWNvbG9uQWZ0ZXIoZSl7c3dpdGNoKGUudHlwZSl7Y2FzZSBiLktleWZyYW1lOmNhc2UgYi5WaWV3UG9ydDpjYXNlIGIuTWVkaWE6Y2FzZSBiLlJ1bGVzZXQ6Y2FzZSBiLk5hbWVzcGFjZTpjYXNlIGIuSWY6Y2FzZSBiLkZvcjpjYXNlIGIuRWFjaDpjYXNlIGIuV2hpbGU6Y2FzZSBiLk1peGluRGVjbGFyYXRpb246Y2FzZSBiLkZ1bmN0aW9uRGVjbGFyYXRpb246Y2FzZSBiLk1peGluQ29udGVudERlY2xhcmF0aW9uOnJldHVybiExO2Nhc2UgYi5FeHRlbmRzUmVmZXJlbmNlOmNhc2UgYi5NaXhpbkNvbnRlbnRSZWZlcmVuY2U6Y2FzZSBiLlJldHVyblN0YXRlbWVudDpjYXNlIGIuTWVkaWFRdWVyeTpjYXNlIGIuRGVidWc6Y2FzZSBiLkltcG9ydDpjYXNlIGIuQXRBcHBseVJ1bGU6Y2FzZSBiLkN1c3RvbVByb3BlcnR5RGVjbGFyYXRpb246cmV0dXJuITA7Y2FzZSBiLlZhcmlhYmxlRGVjbGFyYXRpb246cmV0dXJuIGUubmVlZHNTZW1pY29sb247Y2FzZSBiLk1peGluUmVmZXJlbmNlOnJldHVybiFlLmdldENvbnRlbnQoKTtjYXNlIGIuRGVjbGFyYXRpb246cmV0dXJuIWUuZ2V0TmVzdGVkUHJvcGVydGllcygpfXJldHVybiExfV9wYXJzZURlY2xhcmF0aW9ucyhlKXtjb25zdCB0PXRoaXMuY3JlYXRlKHppKTtpZighdGhpcy5hY2NlcHQocC5DdXJseUwpKXJldHVybiBudWxsO2xldCBuPWUoKTtmb3IoO3QuYWRkQ2hpbGQobikmJiF0aGlzLnBlZWsocC5DdXJseVIpOyl7aWYodGhpcy5fbmVlZHNTZW1pY29sb25BZnRlcihuKSYmIXRoaXMuYWNjZXB0KHAuU2VtaUNvbG9uKSlyZXR1cm4gdGhpcy5maW5pc2godCx5LlNlbWlDb2xvbkV4cGVjdGVkLFtwLlNlbWlDb2xvbixwLkN1cmx5Ul0pO2ZvcihuJiZ0aGlzLnByZXZUb2tlbiYmdGhpcy5wcmV2VG9rZW4udHlwZT09PXAuU2VtaUNvbG9uJiYobi5zZW1pY29sb25Qb3NpdGlvbj10aGlzLnByZXZUb2tlbi5vZmZzZXQpO3RoaXMuYWNjZXB0KHAuU2VtaUNvbG9uKTspO249ZSgpfXJldHVybiB0aGlzLmFjY2VwdChwLkN1cmx5Uik/dGhpcy5maW5pc2godCk6dGhpcy5maW5pc2godCx5LlJpZ2h0Q3VybHlFeHBlY3RlZCxbcC5DdXJseVIscC5TZW1pQ29sb25dKX1fcGFyc2VCb2R5KGUsdCl7cmV0dXJuIGUuc2V0RGVjbGFyYXRpb25zKHRoaXMuX3BhcnNlRGVjbGFyYXRpb25zKHQpKT90aGlzLmZpbmlzaChlKTp0aGlzLmZpbmlzaChlLHkuTGVmdEN1cmx5RXhwZWN0ZWQsW3AuQ3VybHlSLHAuU2VtaUNvbG9uXSl9X3BhcnNlU2VsZWN0b3IoZSl7Y29uc3QgdD10aGlzLmNyZWF0ZShDbik7bGV0IG49ITE7Zm9yKGUmJihuPXQuYWRkQ2hpbGQodGhpcy5fcGFyc2VDb21iaW5hdG9yKCkpKTt0LmFkZENoaWxkKHRoaXMuX3BhcnNlU2ltcGxlU2VsZWN0b3IoKSk7KW49ITAsdC5hZGRDaGlsZCh0aGlzLl9wYXJzZUNvbWJpbmF0b3IoKSk7cmV0dXJuIG4/dGhpcy5maW5pc2godCk6bnVsbH1fcGFyc2VEZWNsYXJhdGlvbihlKXtjb25zdCB0PXRoaXMuX3RyeVBhcnNlQ3VzdG9tUHJvcGVydHlEZWNsYXJhdGlvbihlKTtpZih0KXJldHVybiB0O2NvbnN0IG49dGhpcy5jcmVhdGUocWUpO3JldHVybiBuLnNldFByb3BlcnR5KHRoaXMuX3BhcnNlUHJvcGVydHkoKSk/dGhpcy5hY2NlcHQocC5Db2xvbik/KHRoaXMucHJldlRva2VuJiYobi5jb2xvblBvc2l0aW9uPXRoaXMucHJldlRva2VuLm9mZnNldCksbi5zZXRWYWx1ZSh0aGlzLl9wYXJzZUV4cHIoKSk/KG4uYWRkQ2hpbGQodGhpcy5fcGFyc2VQcmlvKCkpLHRoaXMucGVlayhwLlNlbWlDb2xvbikmJihuLnNlbWljb2xvblBvc2l0aW9uPXRoaXMudG9rZW4ub2Zmc2V0KSx0aGlzLmZpbmlzaChuKSk6dGhpcy5maW5pc2gobix5LlByb3BlcnR5VmFsdWVFeHBlY3RlZCkpOnRoaXMuZmluaXNoKG4seS5Db2xvbkV4cGVjdGVkLFtwLkNvbG9uXSxlfHxbcC5TZW1pQ29sb25dKTpudWxsfV90cnlQYXJzZUN1c3RvbVByb3BlcnR5RGVjbGFyYXRpb24oZSl7aWYoIXRoaXMucGVla1JlZ0V4cChwLklkZW50LC9eLS0vKSlyZXR1cm4gbnVsbDtjb25zdCB0PXRoaXMuY3JlYXRlKGtwKTtpZighdC5zZXRQcm9wZXJ0eSh0aGlzLl9wYXJzZVByb3BlcnR5KCkpKXJldHVybiBudWxsO2lmKCF0aGlzLmFjY2VwdChwLkNvbG9uKSlyZXR1cm4gdGhpcy5maW5pc2godCx5LkNvbG9uRXhwZWN0ZWQsW3AuQ29sb25dKTt0aGlzLnByZXZUb2tlbiYmKHQuY29sb25Qb3NpdGlvbj10aGlzLnByZXZUb2tlbi5vZmZzZXQpO2NvbnN0IG49dGhpcy5tYXJrKCk7aWYodGhpcy5wZWVrKHAuQ3VybHlMKSl7Y29uc3QgaT10aGlzLmNyZWF0ZShfcCkscz10aGlzLl9wYXJzZURlY2xhcmF0aW9ucyh0aGlzLl9wYXJzZVJ1bGVTZXREZWNsYXJhdGlvbi5iaW5kKHRoaXMpKTtpZihpLnNldERlY2xhcmF0aW9ucyhzKSYmIXMuaXNFcnJvbmVvdXMoITApJiYoaS5hZGRDaGlsZCh0aGlzLl9wYXJzZVByaW8oKSksdGhpcy5wZWVrKHAuU2VtaUNvbG9uKSkpcmV0dXJuIHRoaXMuZmluaXNoKGkpLHQuc2V0UHJvcGVydHlTZXQoaSksdC5zZW1pY29sb25Qb3NpdGlvbj10aGlzLnRva2VuLm9mZnNldCx0aGlzLmZpbmlzaCh0KTt0aGlzLnJlc3RvcmVBdE1hcmsobil9Y29uc3Qgcj10aGlzLl9wYXJzZUV4cHIoKTtyZXR1cm4gciYmIXIuaXNFcnJvbmVvdXMoITApJiYodGhpcy5fcGFyc2VQcmlvKCksdGhpcy5wZWVrT25lKC4uLmV8fFtdLHAuU2VtaUNvbG9uLHAuRU9GKSk/KHQuc2V0VmFsdWUociksdGhpcy5wZWVrKHAuU2VtaUNvbG9uKSYmKHQuc2VtaWNvbG9uUG9zaXRpb249dGhpcy50b2tlbi5vZmZzZXQpLHRoaXMuZmluaXNoKHQpKToodGhpcy5yZXN0b3JlQXRNYXJrKG4pLHQuYWRkQ2hpbGQodGhpcy5fcGFyc2VDdXN0b21Qcm9wZXJ0eVZhbHVlKGUpKSx0LmFkZENoaWxkKHRoaXMuX3BhcnNlUHJpbygpKSxMZSh0LmNvbG9uUG9zaXRpb24pJiZ0aGlzLnRva2VuLm9mZnNldD09PXQuY29sb25Qb3NpdGlvbisxP3RoaXMuZmluaXNoKHQseS5Qcm9wZXJ0eVZhbHVlRXhwZWN0ZWQpOnRoaXMuZmluaXNoKHQpKX1fcGFyc2VDdXN0b21Qcm9wZXJ0eVZhbHVlKGU9W3AuQ3VybHlSXSl7Y29uc3QgdD10aGlzLmNyZWF0ZShPKSxuPSgpPT5pPT09MCYmcz09PTAmJmE9PT0wLHI9KCk9PmUuaW5kZXhPZih0aGlzLnRva2VuLnR5cGUpIT09LTE7bGV0IGk9MCxzPTAsYT0wO2U6Zm9yKDs7KXtzd2l0Y2godGhpcy50b2tlbi50eXBlKXtjYXNlIHAuU2VtaUNvbG9uOmlmKG4oKSlicmVhayBlO2JyZWFrO2Nhc2UgcC5FeGNsYW1hdGlvbjppZihuKCkpYnJlYWsgZTticmVhaztjYXNlIHAuQ3VybHlMOmkrKzticmVhaztjYXNlIHAuQ3VybHlSOmlmKGktLSxpPDApe2lmKHIoKSYmcz09PTAmJmE9PT0wKWJyZWFrIGU7cmV0dXJuIHRoaXMuZmluaXNoKHQseS5MZWZ0Q3VybHlFeHBlY3RlZCl9YnJlYWs7Y2FzZSBwLlBhcmVudGhlc2lzTDpzKys7YnJlYWs7Y2FzZSBwLlBhcmVudGhlc2lzUjppZihzLS0sczwwKXtpZihyKCkmJmE9PT0wJiZpPT09MClicmVhayBlO3JldHVybiB0aGlzLmZpbmlzaCh0LHkuTGVmdFBhcmVudGhlc2lzRXhwZWN0ZWQpfWJyZWFrO2Nhc2UgcC5CcmFja2V0TDphKys7YnJlYWs7Y2FzZSBwLkJyYWNrZXRSOmlmKGEtLSxhPDApcmV0dXJuIHRoaXMuZmluaXNoKHQseS5MZWZ0U3F1YXJlQnJhY2tldEV4cGVjdGVkKTticmVhaztjYXNlIHAuQmFkU3RyaW5nOmJyZWFrIGU7Y2FzZSBwLkVPRjpsZXQgbD15LlJpZ2h0Q3VybHlFeHBlY3RlZDtyZXR1cm4gYT4wP2w9eS5SaWdodFNxdWFyZUJyYWNrZXRFeHBlY3RlZDpzPjAmJihsPXkuUmlnaHRQYXJlbnRoZXNpc0V4cGVjdGVkKSx0aGlzLmZpbmlzaCh0LGwpfXRoaXMuY29uc3VtZVRva2VuKCl9cmV0dXJuIHRoaXMuZmluaXNoKHQpfV90cnlUb1BhcnNlRGVjbGFyYXRpb24oZSl7Y29uc3QgdD10aGlzLm1hcmsoKTtyZXR1cm4gdGhpcy5fcGFyc2VQcm9wZXJ0eSgpJiZ0aGlzLmFjY2VwdChwLkNvbG9uKT8odGhpcy5yZXN0b3JlQXRNYXJrKHQpLHRoaXMuX3BhcnNlRGVjbGFyYXRpb24oZSkpOih0aGlzLnJlc3RvcmVBdE1hcmsodCksbnVsbCl9X3BhcnNlUHJvcGVydHkoKXtjb25zdCBlPXRoaXMuY3JlYXRlKFRpKSx0PXRoaXMubWFyaygpO3JldHVybih0aGlzLmFjY2VwdERlbGltKCIqIil8fHRoaXMuYWNjZXB0RGVsaW0oIl8iKSkmJnRoaXMuaGFzV2hpdGVzcGFjZSgpPyh0aGlzLnJlc3RvcmVBdE1hcmsodCksbnVsbCk6ZS5zZXRJZGVudGlmaWVyKHRoaXMuX3BhcnNlUHJvcGVydHlJZGVudGlmaWVyKCkpP3RoaXMuZmluaXNoKGUpOm51bGx9X3BhcnNlUHJvcGVydHlJZGVudGlmaWVyKCl7cmV0dXJuIHRoaXMuX3BhcnNlSWRlbnQoKX1fcGFyc2VDaGFyc2V0KCl7aWYoIXRoaXMucGVlayhwLkNoYXJzZXQpKXJldHVybiBudWxsO2NvbnN0IGU9dGhpcy5jcmVhdGUoTyk7cmV0dXJuIHRoaXMuY29uc3VtZVRva2VuKCksdGhpcy5hY2NlcHQocC5TdHJpbmcpP3RoaXMuYWNjZXB0KHAuU2VtaUNvbG9uKT90aGlzLmZpbmlzaChlKTp0aGlzLmZpbmlzaChlLHkuU2VtaUNvbG9uRXhwZWN0ZWQpOnRoaXMuZmluaXNoKGUseS5JZGVudGlmaWVyRXhwZWN0ZWQpfV9wYXJzZUltcG9ydCgpe2lmKCF0aGlzLnBlZWtLZXl3b3JkKCJAaW1wb3J0IikpcmV0dXJuIG51bGw7Y29uc3QgZT10aGlzLmNyZWF0ZShPaSk7cmV0dXJuIHRoaXMuY29uc3VtZVRva2VuKCksIWUuYWRkQ2hpbGQodGhpcy5fcGFyc2VVUklMaXRlcmFsKCkpJiYhZS5hZGRDaGlsZCh0aGlzLl9wYXJzZVN0cmluZ0xpdGVyYWwoKSk/dGhpcy5maW5pc2goZSx5LlVSSU9yU3RyaW5nRXhwZWN0ZWQpOnRoaXMuX2NvbXBsZXRlUGFyc2VJbXBvcnQoZSl9X2NvbXBsZXRlUGFyc2VJbXBvcnQoZSl7aWYodGhpcy5hY2NlcHRJZGVudCgibGF5ZXIiKSYmdGhpcy5hY2NlcHQocC5QYXJlbnRoZXNpc0wpKXtpZighZS5hZGRDaGlsZCh0aGlzLl9wYXJzZUxheWVyTmFtZSgpKSlyZXR1cm4gdGhpcy5maW5pc2goZSx5LklkZW50aWZpZXJFeHBlY3RlZCxbcC5TZW1pQ29sb25dKTtpZighdGhpcy5hY2NlcHQocC5QYXJlbnRoZXNpc1IpKXJldHVybiB0aGlzLmZpbmlzaChlLHkuUmlnaHRQYXJlbnRoZXNpc0V4cGVjdGVkLFtwLlBhcmVudGhlc2lzUl0sW10pfXJldHVybiB0aGlzLmFjY2VwdElkZW50KCJzdXBwb3J0cyIpJiZ0aGlzLmFjY2VwdChwLlBhcmVudGhlc2lzTCkmJihlLmFkZENoaWxkKHRoaXMuX3RyeVRvUGFyc2VEZWNsYXJhdGlvbigpfHx0aGlzLl9wYXJzZVN1cHBvcnRzQ29uZGl0aW9uKCkpLCF0aGlzLmFjY2VwdChwLlBhcmVudGhlc2lzUikpP3RoaXMuZmluaXNoKGUseS5SaWdodFBhcmVudGhlc2lzRXhwZWN0ZWQsW3AuUGFyZW50aGVzaXNSXSxbXSk6KCF0aGlzLnBlZWsocC5TZW1pQ29sb24pJiYhdGhpcy5wZWVrKHAuRU9GKSYmZS5zZXRNZWRpYWxpc3QodGhpcy5fcGFyc2VNZWRpYVF1ZXJ5TGlzdCgpKSx0aGlzLmZpbmlzaChlKSl9X3BhcnNlTmFtZXNwYWNlKCl7aWYoIXRoaXMucGVla0tleXdvcmQoIkBuYW1lc3BhY2UiKSlyZXR1cm4gbnVsbDtjb25zdCBlPXRoaXMuY3JlYXRlKFRwKTtyZXR1cm4gdGhpcy5jb25zdW1lVG9rZW4oKSwhZS5hZGRDaGlsZCh0aGlzLl9wYXJzZVVSSUxpdGVyYWwoKSkmJihlLmFkZENoaWxkKHRoaXMuX3BhcnNlSWRlbnQoKSksIWUuYWRkQ2hpbGQodGhpcy5fcGFyc2VVUklMaXRlcmFsKCkpJiYhZS5hZGRDaGlsZCh0aGlzLl9wYXJzZVN0cmluZ0xpdGVyYWwoKSkpP3RoaXMuZmluaXNoKGUseS5VUklFeHBlY3RlZCxbcC5TZW1pQ29sb25dKTp0aGlzLmFjY2VwdChwLlNlbWlDb2xvbik/dGhpcy5maW5pc2goZSk6dGhpcy5maW5pc2goZSx5LlNlbWlDb2xvbkV4cGVjdGVkKX1fcGFyc2VGb250RmFjZSgpe2lmKCF0aGlzLnBlZWtLZXl3b3JkKCJAZm9udC1mYWNlIikpcmV0dXJuIG51bGw7Y29uc3QgZT10aGlzLmNyZWF0ZSh4bCk7cmV0dXJuIHRoaXMuY29uc3VtZVRva2VuKCksdGhpcy5fcGFyc2VCb2R5KGUsdGhpcy5fcGFyc2VSdWxlU2V0RGVjbGFyYXRpb24uYmluZCh0aGlzKSl9X3BhcnNlVmlld1BvcnQoKXtpZighdGhpcy5wZWVrS2V5d29yZCgiQC1tcy12aWV3cG9ydCIpJiYhdGhpcy5wZWVrS2V5d29yZCgiQC1vLXZpZXdwb3J0IikmJiF0aGlzLnBlZWtLZXl3b3JkKCJAdmlld3BvcnQiKSlyZXR1cm4gbnVsbDtjb25zdCBlPXRoaXMuY3JlYXRlKEFwKTtyZXR1cm4gdGhpcy5jb25zdW1lVG9rZW4oKSx0aGlzLl9wYXJzZUJvZHkoZSx0aGlzLl9wYXJzZVJ1bGVTZXREZWNsYXJhdGlvbi5iaW5kKHRoaXMpKX1fcGFyc2VLZXlmcmFtZSgpe2lmKCF0aGlzLnBlZWtSZWdFeHAocC5BdEtleXdvcmQsdGhpcy5rZXlmcmFtZVJlZ2V4KSlyZXR1cm4gbnVsbDtjb25zdCBlPXRoaXMuY3JlYXRlKENsKSx0PXRoaXMuY3JlYXRlKE8pO3JldHVybiB0aGlzLmNvbnN1bWVUb2tlbigpLGUuc2V0S2V5d29yZCh0aGlzLmZpbmlzaCh0KSksdC5tYXRjaGVzKCJALW1zLWtleWZyYW1lcyIpJiZ0aGlzLm1hcmtFcnJvcih0LHkuVW5rbm93bktleXdvcmQpLGUuc2V0SWRlbnRpZmllcih0aGlzLl9wYXJzZUtleWZyYW1lSWRlbnQoKSk/dGhpcy5fcGFyc2VCb2R5KGUsdGhpcy5fcGFyc2VLZXlmcmFtZVNlbGVjdG9yLmJpbmQodGhpcykpOnRoaXMuZmluaXNoKGUseS5JZGVudGlmaWVyRXhwZWN0ZWQsW3AuQ3VybHlSXSl9X3BhcnNlS2V5ZnJhbWVJZGVudCgpe3JldHVybiB0aGlzLl9wYXJzZUlkZW50KFtKLktleWZyYW1lXSl9X3BhcnNlS2V5ZnJhbWVTZWxlY3Rvcigpe2NvbnN0IGU9dGhpcy5jcmVhdGUoX2wpO2xldCB0PSExO2lmKGUuYWRkQ2hpbGQodGhpcy5fcGFyc2VJZGVudCgpKSYmKHQ9ITApLHRoaXMuYWNjZXB0KHAuUGVyY2VudGFnZSkmJih0PSEwKSwhdClyZXR1cm4gbnVsbDtmb3IoO3RoaXMuYWNjZXB0KHAuQ29tbWEpOylpZih0PSExLGUuYWRkQ2hpbGQodGhpcy5fcGFyc2VJZGVudCgpKSYmKHQ9ITApLHRoaXMuYWNjZXB0KHAuUGVyY2VudGFnZSkmJih0PSEwKSwhdClyZXR1cm4gdGhpcy5maW5pc2goZSx5LlBlcmNlbnRhZ2VFeHBlY3RlZCk7cmV0dXJuIHRoaXMuX3BhcnNlQm9keShlLHRoaXMuX3BhcnNlUnVsZVNldERlY2xhcmF0aW9uLmJpbmQodGhpcykpfV90cnlQYXJzZUtleWZyYW1lU2VsZWN0b3IoKXtjb25zdCBlPXRoaXMuY3JlYXRlKF9sKSx0PXRoaXMubWFyaygpO2xldCBuPSExO2lmKGUuYWRkQ2hpbGQodGhpcy5fcGFyc2VJZGVudCgpKSYmKG49ITApLHRoaXMuYWNjZXB0KHAuUGVyY2VudGFnZSkmJihuPSEwKSwhbilyZXR1cm4gbnVsbDtmb3IoO3RoaXMuYWNjZXB0KHAuQ29tbWEpOylpZihuPSExLGUuYWRkQ2hpbGQodGhpcy5fcGFyc2VJZGVudCgpKSYmKG49ITApLHRoaXMuYWNjZXB0KHAuUGVyY2VudGFnZSkmJihuPSEwKSwhbilyZXR1cm4gdGhpcy5yZXN0b3JlQXRNYXJrKHQpLG51bGw7cmV0dXJuIHRoaXMucGVlayhwLkN1cmx5TCk/dGhpcy5fcGFyc2VCb2R5KGUsdGhpcy5fcGFyc2VSdWxlU2V0RGVjbGFyYXRpb24uYmluZCh0aGlzKSk6KHRoaXMucmVzdG9yZUF0TWFyayh0KSxudWxsKX1fcGFyc2VQcm9wZXJ0eUF0UnVsZSgpe2lmKCF0aGlzLnBlZWtLZXl3b3JkKCJAcHJvcGVydHkiKSlyZXR1cm4gbnVsbDtjb25zdCBlPXRoaXMuY3JlYXRlKFdwKTtyZXR1cm4gdGhpcy5jb25zdW1lVG9rZW4oKSwhdGhpcy5wZWVrUmVnRXhwKHAuSWRlbnQsL14tLS8pfHwhZS5zZXROYW1lKHRoaXMuX3BhcnNlSWRlbnQoW0ouUHJvcGVydHldKSk/dGhpcy5maW5pc2goZSx5LklkZW50aWZpZXJFeHBlY3RlZCk6dGhpcy5fcGFyc2VCb2R5KGUsdGhpcy5fcGFyc2VEZWNsYXJhdGlvbi5iaW5kKHRoaXMpKX1fcGFyc2VMYXllcihlPSExKXtpZighdGhpcy5wZWVrS2V5d29yZCgiQGxheWVyIikpcmV0dXJuIG51bGw7Y29uc3QgdD10aGlzLmNyZWF0ZShPcCk7dGhpcy5jb25zdW1lVG9rZW4oKTtjb25zdCBuPXRoaXMuX3BhcnNlTGF5ZXJOYW1lTGlzdCgpO3JldHVybiBuJiZ0LnNldE5hbWVzKG4pLCghbnx8bi5nZXRDaGlsZHJlbigpLmxlbmd0aD09PTEpJiZ0aGlzLnBlZWsocC5DdXJseUwpP3RoaXMuX3BhcnNlQm9keSh0LHRoaXMuX3BhcnNlTGF5ZXJEZWNsYXJhdGlvbi5iaW5kKHRoaXMsZSkpOnRoaXMuYWNjZXB0KHAuU2VtaUNvbG9uKT90aGlzLmZpbmlzaCh0KTp0aGlzLmZpbmlzaCh0LHkuU2VtaUNvbG9uRXhwZWN0ZWQpfV9wYXJzZUxheWVyRGVjbGFyYXRpb24oZT0hMSl7cmV0dXJuIGU/dGhpcy5fdHJ5UGFyc2VSdWxlc2V0KCEwKXx8dGhpcy5fdHJ5VG9QYXJzZURlY2xhcmF0aW9uKCl8fHRoaXMuX3BhcnNlU3R5bGVzaGVldFN0YXRlbWVudCghMCk6dGhpcy5fcGFyc2VTdHlsZXNoZWV0U3RhdGVtZW50KCExKX1fcGFyc2VMYXllck5hbWVMaXN0KCl7Y29uc3QgZT10aGlzLmNyZWF0ZU5vZGUoYi5MYXllck5hbWVMaXN0KTtpZighZS5hZGRDaGlsZCh0aGlzLl9wYXJzZUxheWVyTmFtZSgpKSlyZXR1cm4gbnVsbDtmb3IoO3RoaXMuYWNjZXB0KHAuQ29tbWEpOylpZighZS5hZGRDaGlsZCh0aGlzLl9wYXJzZUxheWVyTmFtZSgpKSlyZXR1cm4gdGhpcy5maW5pc2goZSx5LklkZW50aWZpZXJFeHBlY3RlZCk7cmV0dXJuIHRoaXMuZmluaXNoKGUpfV9wYXJzZUxheWVyTmFtZSgpe2NvbnN0IGU9dGhpcy5jcmVhdGVOb2RlKGIuTGF5ZXJOYW1lKTtpZighZS5hZGRDaGlsZCh0aGlzLl9wYXJzZUlkZW50KCkpKXJldHVybiBudWxsO2Zvcig7IXRoaXMuaGFzV2hpdGVzcGFjZSgpJiZ0aGlzLmFjY2VwdERlbGltKCIuIik7KWlmKHRoaXMuaGFzV2hpdGVzcGFjZSgpfHwhZS5hZGRDaGlsZCh0aGlzLl9wYXJzZUlkZW50KCkpKXJldHVybiB0aGlzLmZpbmlzaChlLHkuSWRlbnRpZmllckV4cGVjdGVkKTtyZXR1cm4gdGhpcy5maW5pc2goZSl9X3BhcnNlU3VwcG9ydHMoZT0hMSl7aWYoIXRoaXMucGVla0tleXdvcmQoIkBzdXBwb3J0cyIpKXJldHVybiBudWxsO2NvbnN0IHQ9dGhpcy5jcmVhdGUoVWkpO3JldHVybiB0aGlzLmNvbnN1bWVUb2tlbigpLHQuYWRkQ2hpbGQodGhpcy5fcGFyc2VTdXBwb3J0c0NvbmRpdGlvbigpKSx0aGlzLl9wYXJzZUJvZHkodCx0aGlzLl9wYXJzZVN1cHBvcnRzRGVjbGFyYXRpb24uYmluZCh0aGlzLGUpKX1fcGFyc2VTdXBwb3J0c0RlY2xhcmF0aW9uKGU9ITEpe3JldHVybiBlP3RoaXMuX3RyeVBhcnNlUnVsZXNldCghMCl8fHRoaXMuX3RyeVRvUGFyc2VEZWNsYXJhdGlvbigpfHx0aGlzLl9wYXJzZVN0eWxlc2hlZXRTdGF0ZW1lbnQoITApOnRoaXMuX3BhcnNlU3R5bGVzaGVldFN0YXRlbWVudCghMSl9X3BhcnNlU3VwcG9ydHNDb25kaXRpb24oKXtjb25zdCBlPXRoaXMuY3JlYXRlKGtuKTtpZih0aGlzLmFjY2VwdElkZW50KCJub3QiKSllLmFkZENoaWxkKHRoaXMuX3BhcnNlU3VwcG9ydHNDb25kaXRpb25JblBhcmVucygpKTtlbHNlIGlmKGUuYWRkQ2hpbGQodGhpcy5fcGFyc2VTdXBwb3J0c0NvbmRpdGlvbkluUGFyZW5zKCkpLHRoaXMucGVla1JlZ0V4cChwLklkZW50LC9eKGFuZHxvcikkL2kpKXtjb25zdCB0PXRoaXMudG9rZW4udGV4dC50b0xvd2VyQ2FzZSgpO2Zvcig7dGhpcy5hY2NlcHRJZGVudCh0KTspZS5hZGRDaGlsZCh0aGlzLl9wYXJzZVN1cHBvcnRzQ29uZGl0aW9uSW5QYXJlbnMoKSl9cmV0dXJuIHRoaXMuZmluaXNoKGUpfV9wYXJzZVN1cHBvcnRzQ29uZGl0aW9uSW5QYXJlbnMoKXtjb25zdCBlPXRoaXMuY3JlYXRlKGtuKTtpZih0aGlzLmFjY2VwdChwLlBhcmVudGhlc2lzTCkpcmV0dXJuIHRoaXMucHJldlRva2VuJiYoZS5sUGFyZW50PXRoaXMucHJldlRva2VuLm9mZnNldCksIWUuYWRkQ2hpbGQodGhpcy5fdHJ5VG9QYXJzZURlY2xhcmF0aW9uKFtwLlBhcmVudGhlc2lzUl0pKSYmIXRoaXMuX3BhcnNlU3VwcG9ydHNDb25kaXRpb24oKT90aGlzLmZpbmlzaChlLHkuQ29uZGl0aW9uRXhwZWN0ZWQpOnRoaXMuYWNjZXB0KHAuUGFyZW50aGVzaXNSKT8odGhpcy5wcmV2VG9rZW4mJihlLnJQYXJlbnQ9dGhpcy5wcmV2VG9rZW4ub2Zmc2V0KSx0aGlzLmZpbmlzaChlKSk6dGhpcy5maW5pc2goZSx5LlJpZ2h0UGFyZW50aGVzaXNFeHBlY3RlZCxbcC5QYXJlbnRoZXNpc1JdLFtdKTtpZih0aGlzLnBlZWsocC5JZGVudCkpe2NvbnN0IHQ9dGhpcy5tYXJrKCk7aWYodGhpcy5jb25zdW1lVG9rZW4oKSwhdGhpcy5oYXNXaGl0ZXNwYWNlKCkmJnRoaXMuYWNjZXB0KHAuUGFyZW50aGVzaXNMKSl7bGV0IG49MTtmb3IoO3RoaXMudG9rZW4udHlwZSE9PXAuRU9GJiZuIT09MDspdGhpcy50b2tlbi50eXBlPT09cC5QYXJlbnRoZXNpc0w/bisrOnRoaXMudG9rZW4udHlwZT09PXAuUGFyZW50aGVzaXNSJiZuLS0sdGhpcy5jb25zdW1lVG9rZW4oKTtyZXR1cm4gdGhpcy5maW5pc2goZSl9ZWxzZSB0aGlzLnJlc3RvcmVBdE1hcmsodCl9cmV0dXJuIHRoaXMuZmluaXNoKGUseS5MZWZ0UGFyZW50aGVzaXNFeHBlY3RlZCxbXSxbcC5QYXJlbnRoZXNpc0xdKX1fcGFyc2VNZWRpYURlY2xhcmF0aW9uKGU9ITEpe3JldHVybiBlP3RoaXMuX3RyeVBhcnNlUnVsZXNldCghMCl8fHRoaXMuX3RyeVRvUGFyc2VEZWNsYXJhdGlvbigpfHx0aGlzLl9wYXJzZVN0eWxlc2hlZXRTdGF0ZW1lbnQoITApOnRoaXMuX3BhcnNlU3R5bGVzaGVldFN0YXRlbWVudCghMSl9X3BhcnNlTWVkaWEoZT0hMSl7aWYoIXRoaXMucGVla0tleXdvcmQoIkBtZWRpYSIpKXJldHVybiBudWxsO2NvbnN0IHQ9dGhpcy5jcmVhdGUoV2kpO3JldHVybiB0aGlzLmNvbnN1bWVUb2tlbigpLHQuYWRkQ2hpbGQodGhpcy5fcGFyc2VNZWRpYVF1ZXJ5TGlzdCgpKT90aGlzLl9wYXJzZUJvZHkodCx0aGlzLl9wYXJzZU1lZGlhRGVjbGFyYXRpb24uYmluZCh0aGlzLGUpKTp0aGlzLmZpbmlzaCh0LHkuTWVkaWFRdWVyeUV4cGVjdGVkKX1fcGFyc2VNZWRpYVF1ZXJ5TGlzdCgpe2NvbnN0IGU9dGhpcy5jcmVhdGUoa2wpO2lmKCFlLmFkZENoaWxkKHRoaXMuX3BhcnNlTWVkaWFRdWVyeSgpKSlyZXR1cm4gdGhpcy5maW5pc2goZSx5Lk1lZGlhUXVlcnlFeHBlY3RlZCk7Zm9yKDt0aGlzLmFjY2VwdChwLkNvbW1hKTspaWYoIWUuYWRkQ2hpbGQodGhpcy5fcGFyc2VNZWRpYVF1ZXJ5KCkpKXJldHVybiB0aGlzLmZpbmlzaChlLHkuTWVkaWFRdWVyeUV4cGVjdGVkKTtyZXR1cm4gdGhpcy5maW5pc2goZSl9X3BhcnNlTWVkaWFRdWVyeSgpe2NvbnN0IGU9dGhpcy5jcmVhdGUoRWwpLHQ9dGhpcy5tYXJrKCk7aWYodGhpcy5hY2NlcHRJZGVudCgibm90IiksdGhpcy5wZWVrKHAuUGFyZW50aGVzaXNMKSl0aGlzLnJlc3RvcmVBdE1hcmsodCksZS5hZGRDaGlsZCh0aGlzLl9wYXJzZU1lZGlhQ29uZGl0aW9uKCkpO2Vsc2V7aWYodGhpcy5hY2NlcHRJZGVudCgib25seSIpLCFlLmFkZENoaWxkKHRoaXMuX3BhcnNlSWRlbnQoKSkpcmV0dXJuIG51bGw7dGhpcy5hY2NlcHRJZGVudCgiYW5kIikmJmUuYWRkQ2hpbGQodGhpcy5fcGFyc2VNZWRpYUNvbmRpdGlvbigpKX1yZXR1cm4gdGhpcy5maW5pc2goZSl9X3BhcnNlUmF0aW8oKXtjb25zdCBlPXRoaXMubWFyaygpLHQ9dGhpcy5jcmVhdGUoSnApO3JldHVybiB0aGlzLl9wYXJzZU51bWVyaWMoKT90aGlzLmFjY2VwdERlbGltKCIvIik/dGhpcy5fcGFyc2VOdW1lcmljKCk/dGhpcy5maW5pc2godCk6dGhpcy5maW5pc2godCx5Lk51bWJlckV4cGVjdGVkKToodGhpcy5yZXN0b3JlQXRNYXJrKGUpLG51bGwpOm51bGx9X3BhcnNlTWVkaWFDb25kaXRpb24oKXtjb25zdCBlPXRoaXMuY3JlYXRlKCRwKTt0aGlzLmFjY2VwdElkZW50KCJub3QiKTtsZXQgdD0hMDtmb3IoO3Q7KXtpZighdGhpcy5hY2NlcHQocC5QYXJlbnRoZXNpc0wpKXJldHVybiB0aGlzLmZpbmlzaChlLHkuTGVmdFBhcmVudGhlc2lzRXhwZWN0ZWQsW10sW3AuQ3VybHlMXSk7aWYodGhpcy5wZWVrKHAuUGFyZW50aGVzaXNMKXx8dGhpcy5wZWVrSWRlbnQoIm5vdCIpP2UuYWRkQ2hpbGQodGhpcy5fcGFyc2VNZWRpYUNvbmRpdGlvbigpKTplLmFkZENoaWxkKHRoaXMuX3BhcnNlTWVkaWFGZWF0dXJlKCkpLCF0aGlzLmFjY2VwdChwLlBhcmVudGhlc2lzUikpcmV0dXJuIHRoaXMuZmluaXNoKGUseS5SaWdodFBhcmVudGhlc2lzRXhwZWN0ZWQsW10sW3AuQ3VybHlMXSk7dD10aGlzLmFjY2VwdElkZW50KCJhbmQiKXx8dGhpcy5hY2NlcHRJZGVudCgib3IiKX1yZXR1cm4gdGhpcy5maW5pc2goZSl9X3BhcnNlTWVkaWFGZWF0dXJlKCl7Y29uc3QgZT1bcC5QYXJlbnRoZXNpc1JdLHQ9dGhpcy5jcmVhdGUoQnApO2lmKHQuYWRkQ2hpbGQodGhpcy5fcGFyc2VNZWRpYUZlYXR1cmVOYW1lKCkpKXtpZih0aGlzLmFjY2VwdChwLkNvbG9uKSl7aWYoIXQuYWRkQ2hpbGQodGhpcy5fcGFyc2VNZWRpYUZlYXR1cmVWYWx1ZSgpKSlyZXR1cm4gdGhpcy5maW5pc2godCx5LlRlcm1FeHBlY3RlZCxbXSxlKX1lbHNlIGlmKHRoaXMuX3BhcnNlTWVkaWFGZWF0dXJlUmFuZ2VPcGVyYXRvcigpKXtpZighdC5hZGRDaGlsZCh0aGlzLl9wYXJzZU1lZGlhRmVhdHVyZVZhbHVlKCkpKXJldHVybiB0aGlzLmZpbmlzaCh0LHkuVGVybUV4cGVjdGVkLFtdLGUpO2lmKHRoaXMuX3BhcnNlTWVkaWFGZWF0dXJlUmFuZ2VPcGVyYXRvcigpJiYhdC5hZGRDaGlsZCh0aGlzLl9wYXJzZU1lZGlhRmVhdHVyZVZhbHVlKCkpKXJldHVybiB0aGlzLmZpbmlzaCh0LHkuVGVybUV4cGVjdGVkLFtdLGUpfX1lbHNlIGlmKHQuYWRkQ2hpbGQodGhpcy5fcGFyc2VNZWRpYUZlYXR1cmVWYWx1ZSgpKSl7aWYoIXRoaXMuX3BhcnNlTWVkaWFGZWF0dXJlUmFuZ2VPcGVyYXRvcigpKXJldHVybiB0aGlzLmZpbmlzaCh0LHkuT3BlcmF0b3JFeHBlY3RlZCxbXSxlKTtpZighdC5hZGRDaGlsZCh0aGlzLl9wYXJzZU1lZGlhRmVhdHVyZU5hbWUoKSkpcmV0dXJuIHRoaXMuZmluaXNoKHQseS5JZGVudGlmaWVyRXhwZWN0ZWQsW10sZSk7aWYodGhpcy5fcGFyc2VNZWRpYUZlYXR1cmVSYW5nZU9wZXJhdG9yKCkmJiF0LmFkZENoaWxkKHRoaXMuX3BhcnNlTWVkaWFGZWF0dXJlVmFsdWUoKSkpcmV0dXJuIHRoaXMuZmluaXNoKHQseS5UZXJtRXhwZWN0ZWQsW10sZSl9ZWxzZSByZXR1cm4gdGhpcy5maW5pc2godCx5LklkZW50aWZpZXJFeHBlY3RlZCxbXSxlKTtyZXR1cm4gdGhpcy5maW5pc2godCl9X3BhcnNlTWVkaWFGZWF0dXJlUmFuZ2VPcGVyYXRvcigpe3JldHVybiB0aGlzLmFjY2VwdERlbGltKCI8Iil8fHRoaXMuYWNjZXB0RGVsaW0oIj4iKT8odGhpcy5oYXNXaGl0ZXNwYWNlKCl8fHRoaXMuYWNjZXB0RGVsaW0oIj0iKSwhMCk6ISF0aGlzLmFjY2VwdERlbGltKCI9Iil9X3BhcnNlTWVkaWFGZWF0dXJlTmFtZSgpe3JldHVybiB0aGlzLl9wYXJzZUlkZW50KCl9X3BhcnNlTWVkaWFGZWF0dXJlVmFsdWUoKXtyZXR1cm4gdGhpcy5fcGFyc2VSYXRpbygpfHx0aGlzLl9wYXJzZVRlcm1FeHByZXNzaW9uKCl9X3BhcnNlTWVkaXVtKCl7Y29uc3QgZT10aGlzLmNyZWF0ZShPKTtyZXR1cm4gZS5hZGRDaGlsZCh0aGlzLl9wYXJzZUlkZW50KCkpP3RoaXMuZmluaXNoKGUpOm51bGx9X3BhcnNlUGFnZURlY2xhcmF0aW9uKCl7cmV0dXJuIHRoaXMuX3BhcnNlUGFnZU1hcmdpbkJveCgpfHx0aGlzLl9wYXJzZVJ1bGVTZXREZWNsYXJhdGlvbigpfV9wYXJzZVBhZ2UoKXtpZighdGhpcy5wZWVrS2V5d29yZCgiQHBhZ2UiKSlyZXR1cm4gbnVsbDtjb25zdCBlPXRoaXMuY3JlYXRlKHFwKTtpZih0aGlzLmNvbnN1bWVUb2tlbigpLGUuYWRkQ2hpbGQodGhpcy5fcGFyc2VQYWdlU2VsZWN0b3IoKSkpe2Zvcig7dGhpcy5hY2NlcHQocC5Db21tYSk7KWlmKCFlLmFkZENoaWxkKHRoaXMuX3BhcnNlUGFnZVNlbGVjdG9yKCkpKXJldHVybiB0aGlzLmZpbmlzaChlLHkuSWRlbnRpZmllckV4cGVjdGVkKX1yZXR1cm4gdGhpcy5fcGFyc2VCb2R5KGUsdGhpcy5fcGFyc2VQYWdlRGVjbGFyYXRpb24uYmluZCh0aGlzKSl9X3BhcnNlUGFnZU1hcmdpbkJveCgpe2lmKCF0aGlzLnBlZWsocC5BdEtleXdvcmQpKXJldHVybiBudWxsO2NvbnN0IGU9dGhpcy5jcmVhdGUoanApO3JldHVybiB0aGlzLmFjY2VwdE9uZUtleXdvcmQoa20pfHx0aGlzLm1hcmtFcnJvcihlLHkuVW5rbm93bkF0UnVsZSxbXSxbcC5DdXJseUxdKSx0aGlzLl9wYXJzZUJvZHkoZSx0aGlzLl9wYXJzZVJ1bGVTZXREZWNsYXJhdGlvbi5iaW5kKHRoaXMpKX1fcGFyc2VQYWdlU2VsZWN0b3IoKXtpZighdGhpcy5wZWVrKHAuSWRlbnQpJiYhdGhpcy5wZWVrKHAuQ29sb24pKXJldHVybiBudWxsO2NvbnN0IGU9dGhpcy5jcmVhdGUoTyk7cmV0dXJuIGUuYWRkQ2hpbGQodGhpcy5fcGFyc2VJZGVudCgpKSx0aGlzLmFjY2VwdChwLkNvbG9uKSYmIWUuYWRkQ2hpbGQodGhpcy5fcGFyc2VJZGVudCgpKT90aGlzLmZpbmlzaChlLHkuSWRlbnRpZmllckV4cGVjdGVkKTp0aGlzLmZpbmlzaChlKX1fcGFyc2VEb2N1bWVudCgpe2lmKCF0aGlzLnBlZWtLZXl3b3JkKCJALW1vei1kb2N1bWVudCIpKXJldHVybiBudWxsO2NvbnN0IGU9dGhpcy5jcmVhdGUoVXApO3JldHVybiB0aGlzLmNvbnN1bWVUb2tlbigpLHRoaXMucmVzeW5jKFtdLFtwLkN1cmx5TF0pLHRoaXMuX3BhcnNlQm9keShlLHRoaXMuX3BhcnNlU3R5bGVzaGVldFN0YXRlbWVudC5iaW5kKHRoaXMpKX1fcGFyc2VDb250YWluZXJEZWNsYXJhdGlvbihlPSExKXtyZXR1cm4gZT90aGlzLl90cnlQYXJzZVJ1bGVzZXQoITApfHx0aGlzLl90cnlUb1BhcnNlRGVjbGFyYXRpb24oKXx8dGhpcy5fcGFyc2VTdHlsZXNoZWV0U3RhdGVtZW50KCEwKTp0aGlzLl9wYXJzZVN0eWxlc2hlZXRTdGF0ZW1lbnQoITEpfV9wYXJzZUNvbnRhaW5lcihlPSExKXtpZighdGhpcy5wZWVrS2V5d29yZCgiQGNvbnRhaW5lciIpKXJldHVybiBudWxsO2NvbnN0IHQ9dGhpcy5jcmVhdGUoVnApO3JldHVybiB0aGlzLmNvbnN1bWVUb2tlbigpLHQuYWRkQ2hpbGQodGhpcy5fcGFyc2VJZGVudCgpKSx0LmFkZENoaWxkKHRoaXMuX3BhcnNlQ29udGFpbmVyUXVlcnkoKSksdGhpcy5fcGFyc2VCb2R5KHQsdGhpcy5fcGFyc2VDb250YWluZXJEZWNsYXJhdGlvbi5iaW5kKHRoaXMsZSkpfV9wYXJzZUNvbnRhaW5lclF1ZXJ5KCl7Y29uc3QgZT10aGlzLmNyZWF0ZShPKTtpZih0aGlzLmFjY2VwdElkZW50KCJub3QiKSllLmFkZENoaWxkKHRoaXMuX3BhcnNlQ29udGFpbmVyUXVlcnlJblBhcmVucygpKTtlbHNlIGlmKGUuYWRkQ2hpbGQodGhpcy5fcGFyc2VDb250YWluZXJRdWVyeUluUGFyZW5zKCkpLHRoaXMucGVla0lkZW50KCJhbmQiKSlmb3IoO3RoaXMuYWNjZXB0SWRlbnQoImFuZCIpOyllLmFkZENoaWxkKHRoaXMuX3BhcnNlQ29udGFpbmVyUXVlcnlJblBhcmVucygpKTtlbHNlIGlmKHRoaXMucGVla0lkZW50KCJvciIpKWZvcig7dGhpcy5hY2NlcHRJZGVudCgib3IiKTspZS5hZGRDaGlsZCh0aGlzLl9wYXJzZUNvbnRhaW5lclF1ZXJ5SW5QYXJlbnMoKSk7cmV0dXJuIHRoaXMuZmluaXNoKGUpfV9wYXJzZUNvbnRhaW5lclF1ZXJ5SW5QYXJlbnMoKXtjb25zdCBlPXRoaXMuY3JlYXRlKE8pO2lmKHRoaXMuYWNjZXB0KHAuUGFyZW50aGVzaXNMKSl7aWYodGhpcy5wZWVrSWRlbnQoIm5vdCIpfHx0aGlzLnBlZWsocC5QYXJlbnRoZXNpc0wpP2UuYWRkQ2hpbGQodGhpcy5fcGFyc2VDb250YWluZXJRdWVyeSgpKTplLmFkZENoaWxkKHRoaXMuX3BhcnNlTWVkaWFGZWF0dXJlKCkpLCF0aGlzLmFjY2VwdChwLlBhcmVudGhlc2lzUikpcmV0dXJuIHRoaXMuZmluaXNoKGUseS5SaWdodFBhcmVudGhlc2lzRXhwZWN0ZWQsW10sW3AuQ3VybHlMXSl9ZWxzZSBpZih0aGlzLmFjY2VwdElkZW50KCJzdHlsZSIpKXtpZih0aGlzLmhhc1doaXRlc3BhY2UoKXx8IXRoaXMuYWNjZXB0KHAuUGFyZW50aGVzaXNMKSlyZXR1cm4gdGhpcy5maW5pc2goZSx5LkxlZnRQYXJlbnRoZXNpc0V4cGVjdGVkLFtdLFtwLkN1cmx5TF0pO2lmKGUuYWRkQ2hpbGQodGhpcy5fcGFyc2VTdHlsZVF1ZXJ5KCkpLCF0aGlzLmFjY2VwdChwLlBhcmVudGhlc2lzUikpcmV0dXJuIHRoaXMuZmluaXNoKGUseS5SaWdodFBhcmVudGhlc2lzRXhwZWN0ZWQsW10sW3AuQ3VybHlMXSl9ZWxzZSByZXR1cm4gdGhpcy5maW5pc2goZSx5LkxlZnRQYXJlbnRoZXNpc0V4cGVjdGVkLFtdLFtwLkN1cmx5TF0pO3JldHVybiB0aGlzLmZpbmlzaChlKX1fcGFyc2VTdHlsZVF1ZXJ5KCl7Y29uc3QgZT10aGlzLmNyZWF0ZShPKTtpZih0aGlzLmFjY2VwdElkZW50KCJub3QiKSllLmFkZENoaWxkKHRoaXMuX3BhcnNlU3R5bGVJblBhcmVucygpKTtlbHNlIGlmKHRoaXMucGVlayhwLlBhcmVudGhlc2lzTCkpe2lmKGUuYWRkQ2hpbGQodGhpcy5fcGFyc2VTdHlsZUluUGFyZW5zKCkpLHRoaXMucGVla0lkZW50KCJhbmQiKSlmb3IoO3RoaXMuYWNjZXB0SWRlbnQoImFuZCIpOyllLmFkZENoaWxkKHRoaXMuX3BhcnNlU3R5bGVJblBhcmVucygpKTtlbHNlIGlmKHRoaXMucGVla0lkZW50KCJvciIpKWZvcig7dGhpcy5hY2NlcHRJZGVudCgib3IiKTspZS5hZGRDaGlsZCh0aGlzLl9wYXJzZVN0eWxlSW5QYXJlbnMoKSl9ZWxzZSBlLmFkZENoaWxkKHRoaXMuX3BhcnNlRGVjbGFyYXRpb24oW3AuUGFyZW50aGVzaXNSXSkpO3JldHVybiB0aGlzLmZpbmlzaChlKX1fcGFyc2VTdHlsZUluUGFyZW5zKCl7Y29uc3QgZT10aGlzLmNyZWF0ZShPKTtpZih0aGlzLmFjY2VwdChwLlBhcmVudGhlc2lzTCkpe2lmKGUuYWRkQ2hpbGQodGhpcy5fcGFyc2VTdHlsZVF1ZXJ5KCkpLCF0aGlzLmFjY2VwdChwLlBhcmVudGhlc2lzUikpcmV0dXJuIHRoaXMuZmluaXNoKGUseS5SaWdodFBhcmVudGhlc2lzRXhwZWN0ZWQsW10sW3AuQ3VybHlMXSl9ZWxzZSByZXR1cm4gdGhpcy5maW5pc2goZSx5LkxlZnRQYXJlbnRoZXNpc0V4cGVjdGVkLFtdLFtwLkN1cmx5TF0pO3JldHVybiB0aGlzLmZpbmlzaChlKX1fcGFyc2VVbmtub3duQXRSdWxlKCl7aWYoIXRoaXMucGVlayhwLkF0S2V5d29yZCkpcmV0dXJuIG51bGw7Y29uc3QgZT10aGlzLmNyZWF0ZShSbCk7ZS5hZGRDaGlsZCh0aGlzLl9wYXJzZVVua25vd25BdFJ1bGVOYW1lKCkpO2NvbnN0IHQ9KCk9PnI9PT0wJiZpPT09MCYmcz09PTA7bGV0IG49MCxyPTAsaT0wLHM9MDtlOmZvcig7Oyl7c3dpdGNoKHRoaXMudG9rZW4udHlwZSl7Y2FzZSBwLlNlbWlDb2xvbjppZih0KCkpYnJlYWsgZTticmVhaztjYXNlIHAuRU9GOnJldHVybiByPjA/dGhpcy5maW5pc2goZSx5LlJpZ2h0Q3VybHlFeHBlY3RlZCk6cz4wP3RoaXMuZmluaXNoKGUseS5SaWdodFNxdWFyZUJyYWNrZXRFeHBlY3RlZCk6aT4wP3RoaXMuZmluaXNoKGUseS5SaWdodFBhcmVudGhlc2lzRXhwZWN0ZWQpOnRoaXMuZmluaXNoKGUpO2Nhc2UgcC5DdXJseUw6bisrLHIrKzticmVhaztjYXNlIHAuQ3VybHlSOmlmKHItLSxuPjAmJnI9PT0wKXtpZih0aGlzLmNvbnN1bWVUb2tlbigpLHM+MClyZXR1cm4gdGhpcy5maW5pc2goZSx5LlJpZ2h0U3F1YXJlQnJhY2tldEV4cGVjdGVkKTtpZihpPjApcmV0dXJuIHRoaXMuZmluaXNoKGUseS5SaWdodFBhcmVudGhlc2lzRXhwZWN0ZWQpO2JyZWFrIGV9aWYocjwwKXtpZihpPT09MCYmcz09PTApYnJlYWsgZTtyZXR1cm4gdGhpcy5maW5pc2goZSx5LkxlZnRDdXJseUV4cGVjdGVkKX1icmVhaztjYXNlIHAuUGFyZW50aGVzaXNMOmkrKzticmVhaztjYXNlIHAuUGFyZW50aGVzaXNSOmlmKGktLSxpPDApcmV0dXJuIHRoaXMuZmluaXNoKGUseS5MZWZ0UGFyZW50aGVzaXNFeHBlY3RlZCk7YnJlYWs7Y2FzZSBwLkJyYWNrZXRMOnMrKzticmVhaztjYXNlIHAuQnJhY2tldFI6aWYocy0tLHM8MClyZXR1cm4gdGhpcy5maW5pc2goZSx5LkxlZnRTcXVhcmVCcmFja2V0RXhwZWN0ZWQpO2JyZWFrfXRoaXMuY29uc3VtZVRva2VuKCl9cmV0dXJuIGV9X3BhcnNlVW5rbm93bkF0UnVsZU5hbWUoKXtjb25zdCBlPXRoaXMuY3JlYXRlKE8pO3JldHVybiB0aGlzLmFjY2VwdChwLkF0S2V5d29yZCk/dGhpcy5maW5pc2goZSk6ZX1fcGFyc2VPcGVyYXRvcigpe2lmKHRoaXMucGVla0RlbGltKCIvIil8fHRoaXMucGVla0RlbGltKCIqIil8fHRoaXMucGVla0RlbGltKCIrIil8fHRoaXMucGVla0RlbGltKCItIil8fHRoaXMucGVlayhwLkRhc2htYXRjaCl8fHRoaXMucGVlayhwLkluY2x1ZGVzKXx8dGhpcy5wZWVrKHAuU3Vic3RyaW5nT3BlcmF0b3IpfHx0aGlzLnBlZWsocC5QcmVmaXhPcGVyYXRvcil8fHRoaXMucGVlayhwLlN1ZmZpeE9wZXJhdG9yKXx8dGhpcy5wZWVrRGVsaW0oIj0iKSl7Y29uc3QgZT10aGlzLmNyZWF0ZU5vZGUoYi5PcGVyYXRvcik7cmV0dXJuIHRoaXMuY29uc3VtZVRva2VuKCksdGhpcy5maW5pc2goZSl9ZWxzZSByZXR1cm4gbnVsbH1fcGFyc2VVbmFyeU9wZXJhdG9yKCl7aWYoIXRoaXMucGVla0RlbGltKCIrIikmJiF0aGlzLnBlZWtEZWxpbSgiLSIpKXJldHVybiBudWxsO2NvbnN0IGU9dGhpcy5jcmVhdGUoTyk7cmV0dXJuIHRoaXMuY29uc3VtZVRva2VuKCksdGhpcy5maW5pc2goZSl9X3BhcnNlQ29tYmluYXRvcigpe2lmKHRoaXMucGVla0RlbGltKCI+Iikpe2NvbnN0IGU9dGhpcy5jcmVhdGUoTyk7dGhpcy5jb25zdW1lVG9rZW4oKTtjb25zdCB0PXRoaXMubWFyaygpO2lmKCF0aGlzLmhhc1doaXRlc3BhY2UoKSYmdGhpcy5hY2NlcHREZWxpbSgiPiIpKXtpZighdGhpcy5oYXNXaGl0ZXNwYWNlKCkmJnRoaXMuYWNjZXB0RGVsaW0oIj4iKSlyZXR1cm4gZS50eXBlPWIuU2VsZWN0b3JDb21iaW5hdG9yU2hhZG93UGllcmNpbmdEZXNjZW5kYW50LHRoaXMuZmluaXNoKGUpO3RoaXMucmVzdG9yZUF0TWFyayh0KX1yZXR1cm4gZS50eXBlPWIuU2VsZWN0b3JDb21iaW5hdG9yUGFyZW50LHRoaXMuZmluaXNoKGUpfWVsc2UgaWYodGhpcy5wZWVrRGVsaW0oIisiKSl7Y29uc3QgZT10aGlzLmNyZWF0ZShPKTtyZXR1cm4gdGhpcy5jb25zdW1lVG9rZW4oKSxlLnR5cGU9Yi5TZWxlY3RvckNvbWJpbmF0b3JTaWJsaW5nLHRoaXMuZmluaXNoKGUpfWVsc2UgaWYodGhpcy5wZWVrRGVsaW0oIn4iKSl7Y29uc3QgZT10aGlzLmNyZWF0ZShPKTtyZXR1cm4gdGhpcy5jb25zdW1lVG9rZW4oKSxlLnR5cGU9Yi5TZWxlY3RvckNvbWJpbmF0b3JBbGxTaWJsaW5ncyx0aGlzLmZpbmlzaChlKX1lbHNlIGlmKHRoaXMucGVla0RlbGltKCIvIikpe2NvbnN0IGU9dGhpcy5jcmVhdGUoTyk7dGhpcy5jb25zdW1lVG9rZW4oKTtjb25zdCB0PXRoaXMubWFyaygpO2lmKCF0aGlzLmhhc1doaXRlc3BhY2UoKSYmdGhpcy5hY2NlcHRJZGVudCgiZGVlcCIpJiYhdGhpcy5oYXNXaGl0ZXNwYWNlKCkmJnRoaXMuYWNjZXB0RGVsaW0oIi8iKSlyZXR1cm4gZS50eXBlPWIuU2VsZWN0b3JDb21iaW5hdG9yU2hhZG93UGllcmNpbmdEZXNjZW5kYW50LHRoaXMuZmluaXNoKGUpO3RoaXMucmVzdG9yZUF0TWFyayh0KX1yZXR1cm4gbnVsbH1fcGFyc2VTaW1wbGVTZWxlY3Rvcigpe2NvbnN0IGU9dGhpcy5jcmVhdGUoSnQpO2xldCB0PTA7Zm9yKGUuYWRkQ2hpbGQodGhpcy5fcGFyc2VFbGVtZW50TmFtZSgpfHx0aGlzLl9wYXJzZU5lc3RpbmdTZWxlY3RvcigpKSYmdCsrOyh0PT09MHx8IXRoaXMuaGFzV2hpdGVzcGFjZSgpKSYmZS5hZGRDaGlsZCh0aGlzLl9wYXJzZVNpbXBsZVNlbGVjdG9yQm9keSgpKTspdCsrO3JldHVybiB0PjA/dGhpcy5maW5pc2goZSk6bnVsbH1fcGFyc2VOZXN0aW5nU2VsZWN0b3IoKXtpZih0aGlzLnBlZWtEZWxpbSgiJiIpKXtjb25zdCBlPXRoaXMuY3JlYXRlTm9kZShiLlNlbGVjdG9yQ29tYmluYXRvcik7cmV0dXJuIHRoaXMuY29uc3VtZVRva2VuKCksdGhpcy5maW5pc2goZSl9cmV0dXJuIG51bGx9X3BhcnNlU2ltcGxlU2VsZWN0b3JCb2R5KCl7cmV0dXJuIHRoaXMuX3BhcnNlUHNldWRvKCl8fHRoaXMuX3BhcnNlSGFzaCgpfHx0aGlzLl9wYXJzZUNsYXNzKCl8fHRoaXMuX3BhcnNlQXR0cmliKCl9X3BhcnNlU2VsZWN0b3JJZGVudCgpe3JldHVybiB0aGlzLl9wYXJzZUlkZW50KCl9X3BhcnNlSGFzaCgpe2lmKCF0aGlzLnBlZWsocC5IYXNoKSYmIXRoaXMucGVla0RlbGltKCIjIikpcmV0dXJuIG51bGw7Y29uc3QgZT10aGlzLmNyZWF0ZU5vZGUoYi5JZGVudGlmaWVyU2VsZWN0b3IpO2lmKHRoaXMuYWNjZXB0RGVsaW0oIiMiKSl7aWYodGhpcy5oYXNXaGl0ZXNwYWNlKCl8fCFlLmFkZENoaWxkKHRoaXMuX3BhcnNlU2VsZWN0b3JJZGVudCgpKSlyZXR1cm4gdGhpcy5maW5pc2goZSx5LklkZW50aWZpZXJFeHBlY3RlZCl9ZWxzZSB0aGlzLmNvbnN1bWVUb2tlbigpO3JldHVybiB0aGlzLmZpbmlzaChlKX1fcGFyc2VDbGFzcygpe2lmKCF0aGlzLnBlZWtEZWxpbSgiLiIpKXJldHVybiBudWxsO2NvbnN0IGU9dGhpcy5jcmVhdGVOb2RlKGIuQ2xhc3NTZWxlY3Rvcik7cmV0dXJuIHRoaXMuY29uc3VtZVRva2VuKCksdGhpcy5oYXNXaGl0ZXNwYWNlKCl8fCFlLmFkZENoaWxkKHRoaXMuX3BhcnNlU2VsZWN0b3JJZGVudCgpKT90aGlzLmZpbmlzaChlLHkuSWRlbnRpZmllckV4cGVjdGVkKTp0aGlzLmZpbmlzaChlKX1fcGFyc2VFbGVtZW50TmFtZSgpe2NvbnN0IGU9dGhpcy5tYXJrKCksdD10aGlzLmNyZWF0ZU5vZGUoYi5FbGVtZW50TmFtZVNlbGVjdG9yKTtyZXR1cm4gdC5hZGRDaGlsZCh0aGlzLl9wYXJzZU5hbWVzcGFjZVByZWZpeCgpKSwhdC5hZGRDaGlsZCh0aGlzLl9wYXJzZVNlbGVjdG9ySWRlbnQoKSkmJiF0aGlzLmFjY2VwdERlbGltKCIqIik/KHRoaXMucmVzdG9yZUF0TWFyayhlKSxudWxsKTp0aGlzLmZpbmlzaCh0KX1fcGFyc2VOYW1lc3BhY2VQcmVmaXgoKXtjb25zdCBlPXRoaXMubWFyaygpLHQ9dGhpcy5jcmVhdGVOb2RlKGIuTmFtZXNwYWNlUHJlZml4KTtyZXR1cm4hdC5hZGRDaGlsZCh0aGlzLl9wYXJzZUlkZW50KCkpJiZ0aGlzLmFjY2VwdERlbGltKCIqIiksdGhpcy5hY2NlcHREZWxpbSgifCIpP3RoaXMuZmluaXNoKHQpOih0aGlzLnJlc3RvcmVBdE1hcmsoZSksbnVsbCl9X3BhcnNlQXR0cmliKCl7aWYoIXRoaXMucGVlayhwLkJyYWNrZXRMKSlyZXR1cm4gbnVsbDtjb25zdCBlPXRoaXMuY3JlYXRlKEdwKTtyZXR1cm4gdGhpcy5jb25zdW1lVG9rZW4oKSxlLnNldE5hbWVzcGFjZVByZWZpeCh0aGlzLl9wYXJzZU5hbWVzcGFjZVByZWZpeCgpKSxlLnNldElkZW50aWZpZXIodGhpcy5fcGFyc2VJZGVudCgpKT8oZS5zZXRPcGVyYXRvcih0aGlzLl9wYXJzZU9wZXJhdG9yKCkpJiYoZS5zZXRWYWx1ZSh0aGlzLl9wYXJzZUJpbmFyeUV4cHIoKSksdGhpcy5hY2NlcHRJZGVudCgiaSIpLHRoaXMuYWNjZXB0SWRlbnQoInMiKSksdGhpcy5hY2NlcHQocC5CcmFja2V0Uik/dGhpcy5maW5pc2goZSk6dGhpcy5maW5pc2goZSx5LlJpZ2h0U3F1YXJlQnJhY2tldEV4cGVjdGVkKSk6dGhpcy5maW5pc2goZSx5LklkZW50aWZpZXJFeHBlY3RlZCl9X3BhcnNlUHNldWRvKCl7Y29uc3QgZT10aGlzLl90cnlQYXJzZVBzZXVkb0lkZW50aWZpZXIoKTtpZihlKXtpZighdGhpcy5oYXNXaGl0ZXNwYWNlKCkmJnRoaXMuYWNjZXB0KHAuUGFyZW50aGVzaXNMKSl7Y29uc3QgdD0oKT0+e2NvbnN0IHI9dGhpcy5jcmVhdGUoTyk7aWYoIXIuYWRkQ2hpbGQodGhpcy5fcGFyc2VTZWxlY3RvcighMCkpKXJldHVybiBudWxsO2Zvcig7dGhpcy5hY2NlcHQocC5Db21tYSkmJnIuYWRkQ2hpbGQodGhpcy5fcGFyc2VTZWxlY3RvcighMCkpOyk7cmV0dXJuIHRoaXMucGVlayhwLlBhcmVudGhlc2lzUik/dGhpcy5maW5pc2gocik6bnVsbH07aWYoIWUuYWRkQ2hpbGQodGhpcy50cnkodCkpJiZlLmFkZENoaWxkKHRoaXMuX3BhcnNlQmluYXJ5RXhwcigpKSYmdGhpcy5hY2NlcHRJZGVudCgib2YiKSYmIWUuYWRkQ2hpbGQodGhpcy50cnkodCkpKXJldHVybiB0aGlzLmZpbmlzaChlLHkuU2VsZWN0b3JFeHBlY3RlZCk7aWYoIXRoaXMuYWNjZXB0KHAuUGFyZW50aGVzaXNSKSlyZXR1cm4gdGhpcy5maW5pc2goZSx5LlJpZ2h0UGFyZW50aGVzaXNFeHBlY3RlZCl9cmV0dXJuIHRoaXMuZmluaXNoKGUpfXJldHVybiBudWxsfV90cnlQYXJzZVBzZXVkb0lkZW50aWZpZXIoKXtpZighdGhpcy5wZWVrKHAuQ29sb24pKXJldHVybiBudWxsO2NvbnN0IGU9dGhpcy5tYXJrKCksdD10aGlzLmNyZWF0ZU5vZGUoYi5Qc2V1ZG9TZWxlY3Rvcik7cmV0dXJuIHRoaXMuY29uc3VtZVRva2VuKCksdGhpcy5oYXNXaGl0ZXNwYWNlKCk/KHRoaXMucmVzdG9yZUF0TWFyayhlKSxudWxsKToodGhpcy5hY2NlcHQocC5Db2xvbiksdGhpcy5oYXNXaGl0ZXNwYWNlKCl8fCF0LmFkZENoaWxkKHRoaXMuX3BhcnNlSWRlbnQoKSk/dGhpcy5maW5pc2godCx5LklkZW50aWZpZXJFeHBlY3RlZCk6dGhpcy5maW5pc2godCkpfV90cnlQYXJzZVByaW8oKXtjb25zdCBlPXRoaXMubWFyaygpLHQ9dGhpcy5fcGFyc2VQcmlvKCk7cmV0dXJuIHR8fCh0aGlzLnJlc3RvcmVBdE1hcmsoZSksbnVsbCl9X3BhcnNlUHJpbygpe2lmKCF0aGlzLnBlZWsocC5FeGNsYW1hdGlvbikpcmV0dXJuIG51bGw7Y29uc3QgZT10aGlzLmNyZWF0ZU5vZGUoYi5QcmlvKTtyZXR1cm4gdGhpcy5hY2NlcHQocC5FeGNsYW1hdGlvbikmJnRoaXMuYWNjZXB0SWRlbnQoImltcG9ydGFudCIpP3RoaXMuZmluaXNoKGUpOm51bGx9X3BhcnNlRXhwcihlPSExKXtjb25zdCB0PXRoaXMuY3JlYXRlKEZsKTtpZighdC5hZGRDaGlsZCh0aGlzLl9wYXJzZUJpbmFyeUV4cHIoKSkpcmV0dXJuIG51bGw7Zm9yKDs7KXtpZih0aGlzLnBlZWsocC5Db21tYSkpe2lmKGUpcmV0dXJuIHRoaXMuZmluaXNoKHQpO3RoaXMuY29uc3VtZVRva2VuKCl9aWYoIXQuYWRkQ2hpbGQodGhpcy5fcGFyc2VCaW5hcnlFeHByKCkpKWJyZWFrfXJldHVybiB0aGlzLmZpbmlzaCh0KX1fcGFyc2VVbmljb2RlUmFuZ2UoKXtpZighdGhpcy5wZWVrSWRlbnQoInUiKSlyZXR1cm4gbnVsbDtjb25zdCBlPXRoaXMuY3JlYXRlKFNwKTtyZXR1cm4gdGhpcy5hY2NlcHRVbmljb2RlUmFuZ2UoKT90aGlzLmZpbmlzaChlKTpudWxsfV9wYXJzZU5hbWVkTGluZSgpe2lmKCF0aGlzLnBlZWsocC5CcmFja2V0TCkpcmV0dXJuIG51bGw7Y29uc3QgZT10aGlzLmNyZWF0ZU5vZGUoYi5HcmlkTGluZSk7Zm9yKHRoaXMuY29uc3VtZVRva2VuKCk7ZS5hZGRDaGlsZCh0aGlzLl9wYXJzZUlkZW50KCkpOyk7cmV0dXJuIHRoaXMuYWNjZXB0KHAuQnJhY2tldFIpP3RoaXMuZmluaXNoKGUpOnRoaXMuZmluaXNoKGUseS5SaWdodFNxdWFyZUJyYWNrZXRFeHBlY3RlZCl9X3BhcnNlQmluYXJ5RXhwcihlLHQpe2xldCBuPXRoaXMuY3JlYXRlKFZpKTtpZighbi5zZXRMZWZ0KGV8fHRoaXMuX3BhcnNlVGVybSgpKSlyZXR1cm4gbnVsbDtpZighbi5zZXRPcGVyYXRvcih0fHx0aGlzLl9wYXJzZU9wZXJhdG9yKCkpKXJldHVybiB0aGlzLmZpbmlzaChuKTtpZighbi5zZXRSaWdodCh0aGlzLl9wYXJzZVRlcm0oKSkpcmV0dXJuIHRoaXMuZmluaXNoKG4seS5UZXJtRXhwZWN0ZWQpO249dGhpcy5maW5pc2gobik7Y29uc3Qgcj10aGlzLl9wYXJzZU9wZXJhdG9yKCk7cmV0dXJuIHImJihuPXRoaXMuX3BhcnNlQmluYXJ5RXhwcihuLHIpKSx0aGlzLmZpbmlzaChuKX1fcGFyc2VUZXJtKCl7bGV0IGU9dGhpcy5jcmVhdGUoSHApO3JldHVybiBlLnNldE9wZXJhdG9yKHRoaXMuX3BhcnNlVW5hcnlPcGVyYXRvcigpKSxlLnNldEV4cHJlc3Npb24odGhpcy5fcGFyc2VUZXJtRXhwcmVzc2lvbigpKT90aGlzLmZpbmlzaChlKTpudWxsfV9wYXJzZVRlcm1FeHByZXNzaW9uKCl7cmV0dXJuIHRoaXMuX3BhcnNlVVJJTGl0ZXJhbCgpfHx0aGlzLl9wYXJzZVVuaWNvZGVSYW5nZSgpfHx0aGlzLl9wYXJzZUZ1bmN0aW9uKCl8fHRoaXMuX3BhcnNlSWRlbnQoKXx8dGhpcy5fcGFyc2VTdHJpbmdMaXRlcmFsKCl8fHRoaXMuX3BhcnNlTnVtZXJpYygpfHx0aGlzLl9wYXJzZUhleENvbG9yKCl8fHRoaXMuX3BhcnNlT3BlcmF0aW9uKCl8fHRoaXMuX3BhcnNlTmFtZWRMaW5lKCl9X3BhcnNlT3BlcmF0aW9uKCl7aWYoIXRoaXMucGVlayhwLlBhcmVudGhlc2lzTCkpcmV0dXJuIG51bGw7Y29uc3QgZT10aGlzLmNyZWF0ZShPKTtyZXR1cm4gdGhpcy5jb25zdW1lVG9rZW4oKSxlLmFkZENoaWxkKHRoaXMuX3BhcnNlRXhwcigpKSx0aGlzLmFjY2VwdChwLlBhcmVudGhlc2lzUik/dGhpcy5maW5pc2goZSk6dGhpcy5maW5pc2goZSx5LlJpZ2h0UGFyZW50aGVzaXNFeHBlY3RlZCl9X3BhcnNlTnVtZXJpYygpe2lmKHRoaXMucGVlayhwLk51bSl8fHRoaXMucGVlayhwLlBlcmNlbnRhZ2UpfHx0aGlzLnBlZWsocC5SZXNvbHV0aW9uKXx8dGhpcy5wZWVrKHAuTGVuZ3RoKXx8dGhpcy5wZWVrKHAuRU1TKXx8dGhpcy5wZWVrKHAuRVhTKXx8dGhpcy5wZWVrKHAuQW5nbGUpfHx0aGlzLnBlZWsocC5UaW1lKXx8dGhpcy5wZWVrKHAuRGltZW5zaW9uKXx8dGhpcy5wZWVrKHAuQ29udGFpbmVyUXVlcnlMZW5ndGgpfHx0aGlzLnBlZWsocC5GcmVxKSl7Y29uc3QgZT10aGlzLmNyZWF0ZShCaSk7cmV0dXJuIHRoaXMuY29uc3VtZVRva2VuKCksdGhpcy5maW5pc2goZSl9cmV0dXJuIG51bGx9X3BhcnNlU3RyaW5nTGl0ZXJhbCgpe2lmKCF0aGlzLnBlZWsocC5TdHJpbmcpJiYhdGhpcy5wZWVrKHAuQmFkU3RyaW5nKSlyZXR1cm4gbnVsbDtjb25zdCBlPXRoaXMuY3JlYXRlTm9kZShiLlN0cmluZ0xpdGVyYWwpO3JldHVybiB0aGlzLmNvbnN1bWVUb2tlbigpLHRoaXMuZmluaXNoKGUpfV9wYXJzZVVSSUxpdGVyYWwoKXtpZighdGhpcy5wZWVrUmVnRXhwKHAuSWRlbnQsL151cmwoLXByZWZpeCk/JC9pKSlyZXR1cm4gbnVsbDtjb25zdCBlPXRoaXMubWFyaygpLHQ9dGhpcy5jcmVhdGVOb2RlKGIuVVJJTGl0ZXJhbCk7cmV0dXJuIHRoaXMuYWNjZXB0KHAuSWRlbnQpLHRoaXMuaGFzV2hpdGVzcGFjZSgpfHwhdGhpcy5wZWVrKHAuUGFyZW50aGVzaXNMKT8odGhpcy5yZXN0b3JlQXRNYXJrKGUpLG51bGwpOih0aGlzLnNjYW5uZXIuaW5VUkw9ITAsdGhpcy5jb25zdW1lVG9rZW4oKSx0LmFkZENoaWxkKHRoaXMuX3BhcnNlVVJMQXJndW1lbnQoKSksdGhpcy5zY2FubmVyLmluVVJMPSExLHRoaXMuYWNjZXB0KHAuUGFyZW50aGVzaXNSKT90aGlzLmZpbmlzaCh0KTp0aGlzLmZpbmlzaCh0LHkuUmlnaHRQYXJlbnRoZXNpc0V4cGVjdGVkKSl9X3BhcnNlVVJMQXJndW1lbnQoKXtjb25zdCBlPXRoaXMuY3JlYXRlKE8pO3JldHVybiF0aGlzLmFjY2VwdChwLlN0cmluZykmJiF0aGlzLmFjY2VwdChwLkJhZFN0cmluZykmJiF0aGlzLmFjY2VwdFVucXVvdGVkU3RyaW5nKCk/bnVsbDp0aGlzLmZpbmlzaChlKX1fcGFyc2VJZGVudChlKXtpZighdGhpcy5wZWVrKHAuSWRlbnQpKXJldHVybiBudWxsO2NvbnN0IHQ9dGhpcy5jcmVhdGUoTWUpO3JldHVybiBlJiYodC5yZWZlcmVuY2VUeXBlcz1lKSx0LmlzQ3VzdG9tUHJvcGVydHk9dGhpcy5wZWVrUmVnRXhwKHAuSWRlbnQsL14tLS8pLHRoaXMuY29uc3VtZVRva2VuKCksdGhpcy5maW5pc2godCl9X3BhcnNlRnVuY3Rpb24oKXtjb25zdCBlPXRoaXMubWFyaygpLHQ9dGhpcy5jcmVhdGUoX24pO2lmKCF0LnNldElkZW50aWZpZXIodGhpcy5fcGFyc2VGdW5jdGlvbklkZW50aWZpZXIoKSkpcmV0dXJuIG51bGw7aWYodGhpcy5oYXNXaGl0ZXNwYWNlKCl8fCF0aGlzLmFjY2VwdChwLlBhcmVudGhlc2lzTCkpcmV0dXJuIHRoaXMucmVzdG9yZUF0TWFyayhlKSxudWxsO2lmKHQuZ2V0QXJndW1lbnRzKCkuYWRkQ2hpbGQodGhpcy5fcGFyc2VGdW5jdGlvbkFyZ3VtZW50KCkpKWZvcig7dGhpcy5hY2NlcHQocC5Db21tYSkmJiF0aGlzLnBlZWsocC5QYXJlbnRoZXNpc1IpOyl0LmdldEFyZ3VtZW50cygpLmFkZENoaWxkKHRoaXMuX3BhcnNlRnVuY3Rpb25Bcmd1bWVudCgpKXx8dGhpcy5tYXJrRXJyb3IodCx5LkV4cHJlc3Npb25FeHBlY3RlZCk7cmV0dXJuIHRoaXMuYWNjZXB0KHAuUGFyZW50aGVzaXNSKT90aGlzLmZpbmlzaCh0KTp0aGlzLmZpbmlzaCh0LHkuUmlnaHRQYXJlbnRoZXNpc0V4cGVjdGVkKX1fcGFyc2VGdW5jdGlvbklkZW50aWZpZXIoKXtpZighdGhpcy5wZWVrKHAuSWRlbnQpKXJldHVybiBudWxsO2NvbnN0IGU9dGhpcy5jcmVhdGUoTWUpO2lmKGUucmVmZXJlbmNlVHlwZXM9W0ouRnVuY3Rpb25dLHRoaXMuYWNjZXB0SWRlbnQoInByb2dpZCIpKXtpZih0aGlzLmFjY2VwdChwLkNvbG9uKSlmb3IoO3RoaXMuYWNjZXB0KHAuSWRlbnQpJiZ0aGlzLmFjY2VwdERlbGltKCIuIik7KTtyZXR1cm4gdGhpcy5maW5pc2goZSl9cmV0dXJuIHRoaXMuY29uc3VtZVRva2VuKCksdGhpcy5maW5pc2goZSl9X3BhcnNlRnVuY3Rpb25Bcmd1bWVudCgpe2NvbnN0IGU9dGhpcy5jcmVhdGUoWHQpO3JldHVybiBlLnNldFZhbHVlKHRoaXMuX3BhcnNlRXhwcighMCkpP3RoaXMuZmluaXNoKGUpOm51bGx9X3BhcnNlSGV4Q29sb3IoKXtpZih0aGlzLnBlZWtSZWdFeHAocC5IYXNoLC9eIyhbQS1GYS1mMC05XXszfXxbQS1GYS1mMC05XXs0fXxbQS1GYS1mMC05XXs2fXxbQS1GYS1mMC05XXs4fSkkL2cpKXtjb25zdCBlPXRoaXMuY3JlYXRlKCRpKTtyZXR1cm4gdGhpcy5jb25zdW1lVG9rZW4oKSx0aGlzLmZpbmlzaChlKX1lbHNlIHJldHVybiBudWxsfX07ZnVuY3Rpb24gRW0oZSx0KXtsZXQgbj0wLHI9ZS5sZW5ndGg7aWYocj09PTApcmV0dXJuIDA7Zm9yKDtuPHI7KXtsZXQgaT1NYXRoLmZsb29yKChuK3IpLzIpO3QoZVtpXSk/cj1pOm49aSsxfXJldHVybiBufWZ1bmN0aW9uIEhjKGUsdCl7cmV0dXJuIGUuaW5kZXhPZih0KSE9PS0xfWZ1bmN0aW9uIF9yKC4uLmUpe2NvbnN0IHQ9W107Zm9yKGNvbnN0IG4gb2YgZSlmb3IoY29uc3QgciBvZiBuKUhjKHQscil8fHQucHVzaChyKTtyZXR1cm4gdH12YXIgR2M9Y2xhc3N7Y29uc3RydWN0b3IoZSx0KXt0aGlzLm9mZnNldD1lLHRoaXMubGVuZ3RoPXQsdGhpcy5zeW1ib2xzPVtdLHRoaXMucGFyZW50PW51bGwsdGhpcy5jaGlsZHJlbj1bXX1hZGRDaGlsZChlKXt0aGlzLmNoaWxkcmVuLnB1c2goZSksZS5zZXRQYXJlbnQodGhpcyl9c2V0UGFyZW50KGUpe3RoaXMucGFyZW50PWV9ZmluZFNjb3BlKGUsdD0wKXtyZXR1cm4gdGhpcy5vZmZzZXQ8PWUmJnRoaXMub2Zmc2V0K3RoaXMubGVuZ3RoPmUrdHx8dGhpcy5vZmZzZXQ9PT1lJiZ0aGlzLmxlbmd0aD09PXQ/dGhpcy5maW5kSW5TY29wZShlLHQpOm51bGx9ZmluZEluU2NvcGUoZSx0PTApe2NvbnN0IG49ZSt0LHI9RW0odGhpcy5jaGlsZHJlbixzPT5zLm9mZnNldD5uKTtpZihyPT09MClyZXR1cm4gdGhpcztjb25zdCBpPXRoaXMuY2hpbGRyZW5bci0xXTtyZXR1cm4gaS5vZmZzZXQ8PWUmJmkub2Zmc2V0K2kubGVuZ3RoPj1lK3Q/aS5maW5kSW5TY29wZShlLHQpOnRoaXN9YWRkU3ltYm9sKGUpe3RoaXMuc3ltYm9scy5wdXNoKGUpfWdldFN5bWJvbChlLHQpe2ZvcihsZXQgbj0wO248dGhpcy5zeW1ib2xzLmxlbmd0aDtuKyspe2NvbnN0IHI9dGhpcy5zeW1ib2xzW25dO2lmKHIubmFtZT09PWUmJnIudHlwZT09PXQpcmV0dXJuIHJ9cmV0dXJuIG51bGx9Z2V0U3ltYm9scygpe3JldHVybiB0aGlzLnN5bWJvbHN9fSxGbT1jbGFzcyBleHRlbmRzIEdje2NvbnN0cnVjdG9yKCl7c3VwZXIoMCxOdW1iZXIuTUFYX1ZBTFVFKX19LGtyPWNsYXNze2NvbnN0cnVjdG9yKGUsdCxuLHIpe3RoaXMubmFtZT1lLHRoaXMudmFsdWU9dCx0aGlzLm5vZGU9bix0aGlzLnR5cGU9cn19LFJtPWNsYXNze2NvbnN0cnVjdG9yKGUpe3RoaXMuc2NvcGU9ZX1hZGRTeW1ib2woZSx0LG4scil7aWYoZS5vZmZzZXQhPT0tMSl7Y29uc3QgaT10aGlzLnNjb3BlLmZpbmRTY29wZShlLm9mZnNldCxlLmxlbmd0aCk7aSYmaS5hZGRTeW1ib2wobmV3IGtyKHQsbixlLHIpKX19YWRkU2NvcGUoZSl7aWYoZS5vZmZzZXQhPT0tMSl7Y29uc3QgdD10aGlzLnNjb3BlLmZpbmRTY29wZShlLm9mZnNldCxlLmxlbmd0aCk7aWYodCYmKHQub2Zmc2V0IT09ZS5vZmZzZXR8fHQubGVuZ3RoIT09ZS5sZW5ndGgpKXtjb25zdCBuPW5ldyBHYyhlLm9mZnNldCxlLmxlbmd0aCk7cmV0dXJuIHQuYWRkQ2hpbGQobiksbn1yZXR1cm4gdH1yZXR1cm4gbnVsbH1hZGRTeW1ib2xUb0NoaWxkU2NvcGUoZSx0LG4scixpKXtpZihlJiZlLm9mZnNldCE9PS0xKXtjb25zdCBzPXRoaXMuYWRkU2NvcGUoZSk7cyYmcy5hZGRTeW1ib2wobmV3IGtyKG4scix0LGkpKX19dmlzaXROb2RlKGUpe3N3aXRjaChlLnR5cGUpe2Nhc2UgYi5LZXlmcmFtZTpyZXR1cm4gdGhpcy5hZGRTeW1ib2woZSxlLmdldE5hbWUoKSx2b2lkIDAsSi5LZXlmcmFtZSksITA7Y2FzZSBiLkN1c3RvbVByb3BlcnR5RGVjbGFyYXRpb246cmV0dXJuIHRoaXMudmlzaXRDdXN0b21Qcm9wZXJ0eURlY2xhcmF0aW9uTm9kZShlKTtjYXNlIGIuVmFyaWFibGVEZWNsYXJhdGlvbjpyZXR1cm4gdGhpcy52aXNpdFZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlKGUpO2Nhc2UgYi5SdWxlc2V0OnJldHVybiB0aGlzLnZpc2l0UnVsZVNldChlKTtjYXNlIGIuTWl4aW5EZWNsYXJhdGlvbjpyZXR1cm4gdGhpcy5hZGRTeW1ib2woZSxlLmdldE5hbWUoKSx2b2lkIDAsSi5NaXhpbiksITA7Y2FzZSBiLkZ1bmN0aW9uRGVjbGFyYXRpb246cmV0dXJuIHRoaXMuYWRkU3ltYm9sKGUsZS5nZXROYW1lKCksdm9pZCAwLEouRnVuY3Rpb24pLCEwO2Nhc2UgYi5GdW5jdGlvblBhcmFtZXRlcjpyZXR1cm4gdGhpcy52aXNpdEZ1bmN0aW9uUGFyYW1ldGVyTm9kZShlKTtjYXNlIGIuRGVjbGFyYXRpb25zOnJldHVybiB0aGlzLmFkZFNjb3BlKGUpLCEwO2Nhc2UgYi5Gb3I6Y29uc3QgdD1lLG49dC5nZXREZWNsYXJhdGlvbnMoKTtyZXR1cm4gbiYmdC52YXJpYWJsZSYmdGhpcy5hZGRTeW1ib2xUb0NoaWxkU2NvcGUobix0LnZhcmlhYmxlLHQudmFyaWFibGUuZ2V0TmFtZSgpLHZvaWQgMCxKLlZhcmlhYmxlKSwhMDtjYXNlIGIuRWFjaDp7Y29uc3Qgcj1lLGk9ci5nZXREZWNsYXJhdGlvbnMoKTtpZihpKXtjb25zdCBzPXIuZ2V0VmFyaWFibGVzKCkuZ2V0Q2hpbGRyZW4oKTtmb3IoY29uc3QgYSBvZiBzKXRoaXMuYWRkU3ltYm9sVG9DaGlsZFNjb3BlKGksYSxhLmdldE5hbWUoKSx2b2lkIDAsSi5WYXJpYWJsZSl9cmV0dXJuITB9fXJldHVybiEwfXZpc2l0UnVsZVNldChlKXtjb25zdCB0PXRoaXMuc2NvcGUuZmluZFNjb3BlKGUub2Zmc2V0LGUubGVuZ3RoKTtpZih0KWZvcihjb25zdCBuIG9mIGUuZ2V0U2VsZWN0b3JzKCkuZ2V0Q2hpbGRyZW4oKSluIGluc3RhbmNlb2YgQ24mJm4uZ2V0Q2hpbGRyZW4oKS5sZW5ndGg9PT0xJiZ0LmFkZFN5bWJvbChuZXcga3Iobi5nZXRDaGlsZCgwKS5nZXRUZXh0KCksdm9pZCAwLG4sSi5SdWxlKSk7cmV0dXJuITB9dmlzaXRWYXJpYWJsZURlY2xhcmF0aW9uTm9kZShlKXtjb25zdCB0PWUuZ2V0VmFsdWUoKT9lLmdldFZhbHVlKCkuZ2V0VGV4dCgpOnZvaWQgMDtyZXR1cm4gdGhpcy5hZGRTeW1ib2woZSxlLmdldE5hbWUoKSx0LEouVmFyaWFibGUpLCEwfXZpc2l0RnVuY3Rpb25QYXJhbWV0ZXJOb2RlKGUpe2NvbnN0IHQ9ZS5nZXRQYXJlbnQoKS5nZXREZWNsYXJhdGlvbnMoKTtpZih0KXtjb25zdCBuPWUuZ2V0RGVmYXVsdFZhbHVlKCkscj1uP24uZ2V0VGV4dCgpOnZvaWQgMDt0aGlzLmFkZFN5bWJvbFRvQ2hpbGRTY29wZSh0LGUsZS5nZXROYW1lKCkscixKLlZhcmlhYmxlKX1yZXR1cm4hMH12aXNpdEN1c3RvbVByb3BlcnR5RGVjbGFyYXRpb25Ob2RlKGUpe2NvbnN0IHQ9ZS5nZXRWYWx1ZSgpP2UuZ2V0VmFsdWUoKS5nZXRUZXh0KCk6IiI7cmV0dXJuIHRoaXMuYWRkQ1NTVmFyaWFibGUoZS5nZXRQcm9wZXJ0eSgpLGUuZ2V0UHJvcGVydHkoKS5nZXROYW1lKCksdCxKLlZhcmlhYmxlKSwhMH1hZGRDU1NWYXJpYWJsZShlLHQsbixyKXtlLm9mZnNldCE9PS0xJiZ0aGlzLnNjb3BlLmFkZFN5bWJvbChuZXcga3IodCxuLGUscikpfX0sY3M9Y2xhc3N7Y29uc3RydWN0b3IoZSl7dGhpcy5nbG9iYWw9bmV3IEZtLGUuYWNjZXB0VmlzaXRvcihuZXcgUm0odGhpcy5nbG9iYWwpKX1maW5kU3ltYm9sc0F0T2Zmc2V0KGUsdCl7bGV0IG49dGhpcy5nbG9iYWwuZmluZFNjb3BlKGUsMCk7Y29uc3Qgcj1bXSxpPXt9O2Zvcig7bjspe2NvbnN0IHM9bi5nZXRTeW1ib2xzKCk7Zm9yKGxldCBhPTA7YTxzLmxlbmd0aDthKyspe2NvbnN0IGw9c1thXTtsLnR5cGU9PT10JiYhaVtsLm5hbWVdJiYoci5wdXNoKGwpLGlbbC5uYW1lXT0hMCl9bj1uLnBhcmVudH1yZXR1cm4gcn1pbnRlcm5hbEZpbmRTeW1ib2woZSx0KXtsZXQgbj1lO2lmKGUucGFyZW50IGluc3RhbmNlb2YgbHImJmUucGFyZW50LmdldFBhcmVudCgpaW5zdGFuY2VvZiBzZSYmKG49ZS5wYXJlbnQuZ2V0UGFyZW50KCkuZ2V0RGVjbGFyYXRpb25zKCkpLGUucGFyZW50IGluc3RhbmNlb2YgWHQmJmUucGFyZW50LmdldFBhcmVudCgpaW5zdGFuY2VvZiBfbil7Y29uc3Qgcz1lLnBhcmVudC5nZXRQYXJlbnQoKS5nZXRJZGVudGlmaWVyKCk7aWYocyl7Y29uc3QgYT10aGlzLmludGVybmFsRmluZFN5bWJvbChzLFtKLkZ1bmN0aW9uXSk7YSYmKG49YS5ub2RlLmdldERlY2xhcmF0aW9ucygpKX19aWYoIW4pcmV0dXJuIG51bGw7Y29uc3Qgcj1lLmdldFRleHQoKTtsZXQgaT10aGlzLmdsb2JhbC5maW5kU2NvcGUobi5vZmZzZXQsbi5sZW5ndGgpO2Zvcig7aTspe2ZvcihsZXQgcz0wO3M8dC5sZW5ndGg7cysrKXtjb25zdCBhPXRbc10sbD1pLmdldFN5bWJvbChyLGEpO2lmKGwpcmV0dXJuIGx9aT1pLnBhcmVudH1yZXR1cm4gbnVsbH1ldmFsdWF0ZVJlZmVyZW5jZVR5cGVzKGUpe2lmKGUgaW5zdGFuY2VvZiBNZSl7Y29uc3Qgbj1lLnJlZmVyZW5jZVR5cGVzO2lmKG4pcmV0dXJuIG47e2lmKGUuaXNDdXN0b21Qcm9wZXJ0eSlyZXR1cm5bSi5WYXJpYWJsZV07Y29uc3Qgcj14cChlKTtpZihyKXtjb25zdCBpPXIuZ2V0Tm9uUHJlZml4ZWRQcm9wZXJ0eU5hbWUoKTtpZigoaT09PSJhbmltYXRpb24ifHxpPT09ImFuaW1hdGlvbi1uYW1lIikmJnIuZ2V0VmFsdWUoKSYmci5nZXRWYWx1ZSgpLm9mZnNldD09PWUub2Zmc2V0KXJldHVybltKLktleWZyYW1lXX19fWVsc2UgaWYoZSBpbnN0YW5jZW9mIGppKXJldHVybltKLlZhcmlhYmxlXTtyZXR1cm4gZS5maW5kQVBhcmVudChiLlNlbGVjdG9yLGIuRXh0ZW5kc1JlZmVyZW5jZSk/W0ouUnVsZV06bnVsbH1maW5kU3ltYm9sRnJvbU5vZGUoZSl7aWYoIWUpcmV0dXJuIG51bGw7Zm9yKDtlLnR5cGU9PT1iLkludGVycG9sYXRpb247KWU9ZS5nZXRQYXJlbnQoKTtjb25zdCB0PXRoaXMuZXZhbHVhdGVSZWZlcmVuY2VUeXBlcyhlKTtyZXR1cm4gdD90aGlzLmludGVybmFsRmluZFN5bWJvbChlLHQpOm51bGx9bWF0Y2hlc1N5bWJvbChlLHQpe2lmKCFlKXJldHVybiExO2Zvcig7ZS50eXBlPT09Yi5JbnRlcnBvbGF0aW9uOyllPWUuZ2V0UGFyZW50KCk7aWYoIWUubWF0Y2hlcyh0Lm5hbWUpKXJldHVybiExO2NvbnN0IG49dGhpcy5ldmFsdWF0ZVJlZmVyZW5jZVR5cGVzKGUpO3JldHVybiFufHxuLmluZGV4T2YodC50eXBlKT09PS0xPyExOnRoaXMuaW50ZXJuYWxGaW5kU3ltYm9sKGUsbik9PT10fWZpbmRTeW1ib2woZSx0LG4pe2xldCByPXRoaXMuZ2xvYmFsLmZpbmRTY29wZShuKTtmb3IoO3I7KXtjb25zdCBpPXIuZ2V0U3ltYm9sKGUsdCk7aWYoaSlyZXR1cm4gaTtyPXIucGFyZW50fXJldHVybiBudWxsfX0sSmM7KCgpPT57dmFyIGU9ezQ3MDppPT57ZnVuY3Rpb24gcyhvKXtpZih0eXBlb2YgbyE9InN0cmluZyIpdGhyb3cgbmV3IFR5cGVFcnJvcigiUGF0aCBtdXN0IGJlIGEgc3RyaW5nLiBSZWNlaXZlZCAiK0pTT04uc3RyaW5naWZ5KG8pKX1mdW5jdGlvbiBhKG8sYyl7Zm9yKHZhciBkLHU9IiIsZj0wLG09LTEsdj0wLHc9MDt3PD1vLmxlbmd0aDsrK3cpe2lmKHc8by5sZW5ndGgpZD1vLmNoYXJDb2RlQXQodyk7ZWxzZXtpZihkPT09NDcpYnJlYWs7ZD00N31pZihkPT09NDcpe2lmKCEobT09PXctMXx8dj09PTEpKWlmKG0hPT13LTEmJnY9PT0yKXtpZih1Lmxlbmd0aDwyfHxmIT09Mnx8dS5jaGFyQ29kZUF0KHUubGVuZ3RoLTEpIT09NDZ8fHUuY2hhckNvZGVBdCh1Lmxlbmd0aC0yKSE9PTQ2KXtpZih1Lmxlbmd0aD4yKXt2YXIgaz11Lmxhc3RJbmRleE9mKCIvIik7aWYoayE9PXUubGVuZ3RoLTEpe2s9PT0tMT8odT0iIixmPTApOmY9KHU9dS5zbGljZSgwLGspKS5sZW5ndGgtMS11Lmxhc3RJbmRleE9mKCIvIiksbT13LHY9MDtjb250aW51ZX19ZWxzZSBpZih1Lmxlbmd0aD09PTJ8fHUubGVuZ3RoPT09MSl7dT0iIixmPTAsbT13LHY9MDtjb250aW51ZX19YyYmKHUubGVuZ3RoPjA/dSs9Ii8uLiI6dT0iLi4iLGY9Mil9ZWxzZSB1Lmxlbmd0aD4wP3UrPSIvIitvLnNsaWNlKG0rMSx3KTp1PW8uc2xpY2UobSsxLHcpLGY9dy1tLTE7bT13LHY9MH1lbHNlIGQ9PT00NiYmdiE9PS0xPysrdjp2PS0xfXJldHVybiB1fXZhciBsPXtyZXNvbHZlOmZ1bmN0aW9uKCl7Zm9yKHZhciBvLGM9IiIsZD0hMSx1PWFyZ3VtZW50cy5sZW5ndGgtMTt1Pj0tMSYmIWQ7dS0tKXt2YXIgZjt1Pj0wP2Y9YXJndW1lbnRzW3VdOihvPT09dm9pZCAwJiYobz1wcm9jZXNzLmN3ZCgpKSxmPW8pLHMoZiksZi5sZW5ndGghPT0wJiYoYz1mKyIvIitjLGQ9Zi5jaGFyQ29kZUF0KDApPT09NDcpfXJldHVybiBjPWEoYywhZCksZD9jLmxlbmd0aD4wPyIvIitjOiIvIjpjLmxlbmd0aD4wP2M6Ii4ifSxub3JtYWxpemU6ZnVuY3Rpb24obyl7aWYocyhvKSxvLmxlbmd0aD09PTApcmV0dXJuIi4iO3ZhciBjPW8uY2hhckNvZGVBdCgwKT09PTQ3LGQ9by5jaGFyQ29kZUF0KG8ubGVuZ3RoLTEpPT09NDc7cmV0dXJuKG89YShvLCFjKSkubGVuZ3RoIT09MHx8Y3x8KG89Ii4iKSxvLmxlbmd0aD4wJiZkJiYobys9Ii8iKSxjPyIvIitvOm99LGlzQWJzb2x1dGU6ZnVuY3Rpb24obyl7cmV0dXJuIHMobyksby5sZW5ndGg+MCYmby5jaGFyQ29kZUF0KDApPT09NDd9LGpvaW46ZnVuY3Rpb24oKXtpZihhcmd1bWVudHMubGVuZ3RoPT09MClyZXR1cm4iLiI7Zm9yKHZhciBvLGM9MDtjPGFyZ3VtZW50cy5sZW5ndGg7KytjKXt2YXIgZD1hcmd1bWVudHNbY107cyhkKSxkLmxlbmd0aD4wJiYobz09PXZvaWQgMD9vPWQ6bys9Ii8iK2QpfXJldHVybiBvPT09dm9pZCAwPyIuIjpsLm5vcm1hbGl6ZShvKX0scmVsYXRpdmU6ZnVuY3Rpb24obyxjKXtpZihzKG8pLHMoYyksbz09PWN8fChvPWwucmVzb2x2ZShvKSk9PT0oYz1sLnJlc29sdmUoYykpKXJldHVybiIiO2Zvcih2YXIgZD0xO2Q8by5sZW5ndGgmJm8uY2hhckNvZGVBdChkKT09PTQ3OysrZCk7Zm9yKHZhciB1PW8ubGVuZ3RoLGY9dS1kLG09MTttPGMubGVuZ3RoJiZjLmNoYXJDb2RlQXQobSk9PT00NzsrK20pO2Zvcih2YXIgdj1jLmxlbmd0aC1tLHc9Zjx2P2Y6dixrPS0xLFI9MDtSPD13OysrUil7aWYoUj09PXcpe2lmKHY+dyl7aWYoYy5jaGFyQ29kZUF0KG0rUik9PT00NylyZXR1cm4gYy5zbGljZShtK1IrMSk7aWYoUj09PTApcmV0dXJuIGMuc2xpY2UobStSKX1lbHNlIGY+dyYmKG8uY2hhckNvZGVBdChkK1IpPT09NDc/az1SOlI9PT0wJiYoaz0wKSk7YnJlYWt9dmFyIEk9by5jaGFyQ29kZUF0KGQrUik7aWYoSSE9PWMuY2hhckNvZGVBdChtK1IpKWJyZWFrO0k9PT00NyYmKGs9Uil9dmFyIE49IiI7Zm9yKFI9ZCtrKzE7Ujw9dTsrK1IpUiE9PXUmJm8uY2hhckNvZGVBdChSKSE9PTQ3fHwoTi5sZW5ndGg9PT0wP04rPSIuLiI6Tis9Ii8uLiIpO3JldHVybiBOLmxlbmd0aD4wP04rYy5zbGljZShtK2spOihtKz1rLGMuY2hhckNvZGVBdChtKT09PTQ3JiYrK20sYy5zbGljZShtKSl9LF9tYWtlTG9uZzpmdW5jdGlvbihvKXtyZXR1cm4gb30sZGlybmFtZTpmdW5jdGlvbihvKXtpZihzKG8pLG8ubGVuZ3RoPT09MClyZXR1cm4iLiI7Zm9yKHZhciBjPW8uY2hhckNvZGVBdCgwKSxkPWM9PT00Nyx1PS0xLGY9ITAsbT1vLmxlbmd0aC0xO20+PTE7LS1tKWlmKChjPW8uY2hhckNvZGVBdChtKSk9PT00Nyl7aWYoIWYpe3U9bTticmVha319ZWxzZSBmPSExO3JldHVybiB1PT09LTE/ZD8iLyI6Ii4iOmQmJnU9PT0xPyIvLyI6by5zbGljZSgwLHUpfSxiYXNlbmFtZTpmdW5jdGlvbihvLGMpe2lmKGMhPT12b2lkIDAmJnR5cGVvZiBjIT0ic3RyaW5nIil0aHJvdyBuZXcgVHlwZUVycm9yKCciZXh0IiBhcmd1bWVudCBtdXN0IGJlIGEgc3RyaW5nJyk7cyhvKTt2YXIgZCx1PTAsZj0tMSxtPSEwO2lmKGMhPT12b2lkIDAmJmMubGVuZ3RoPjAmJmMubGVuZ3RoPD1vLmxlbmd0aCl7aWYoYy5sZW5ndGg9PT1vLmxlbmd0aCYmYz09PW8pcmV0dXJuIiI7dmFyIHY9Yy5sZW5ndGgtMSx3PS0xO2ZvcihkPW8ubGVuZ3RoLTE7ZD49MDstLWQpe3ZhciBrPW8uY2hhckNvZGVBdChkKTtpZihrPT09NDcpe2lmKCFtKXt1PWQrMTticmVha319ZWxzZSB3PT09LTEmJihtPSExLHc9ZCsxKSx2Pj0wJiYoaz09PWMuY2hhckNvZGVBdCh2KT8tLXY9PS0xJiYoZj1kKToodj0tMSxmPXcpKX1yZXR1cm4gdT09PWY/Zj13OmY9PT0tMSYmKGY9by5sZW5ndGgpLG8uc2xpY2UodSxmKX1mb3IoZD1vLmxlbmd0aC0xO2Q+PTA7LS1kKWlmKG8uY2hhckNvZGVBdChkKT09PTQ3KXtpZighbSl7dT1kKzE7YnJlYWt9fWVsc2UgZj09PS0xJiYobT0hMSxmPWQrMSk7cmV0dXJuIGY9PT0tMT8iIjpvLnNsaWNlKHUsZil9LGV4dG5hbWU6ZnVuY3Rpb24obyl7cyhvKTtmb3IodmFyIGM9LTEsZD0wLHU9LTEsZj0hMCxtPTAsdj1vLmxlbmd0aC0xO3Y+PTA7LS12KXt2YXIgdz1vLmNoYXJDb2RlQXQodik7aWYodyE9PTQ3KXU9PT0tMSYmKGY9ITEsdT12KzEpLHc9PT00Nj9jPT09LTE/Yz12Om0hPT0xJiYobT0xKTpjIT09LTEmJihtPS0xKTtlbHNlIGlmKCFmKXtkPXYrMTticmVha319cmV0dXJuIGM9PT0tMXx8dT09PS0xfHxtPT09MHx8bT09PTEmJmM9PT11LTEmJmM9PT1kKzE/IiI6by5zbGljZShjLHUpfSxmb3JtYXQ6ZnVuY3Rpb24obyl7aWYobz09PW51bGx8fHR5cGVvZiBvIT0ib2JqZWN0Iil0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgInBhdGhPYmplY3QiIGFyZ3VtZW50IG11c3QgYmUgb2YgdHlwZSBPYmplY3QuIFJlY2VpdmVkIHR5cGUgJyt0eXBlb2Ygbyk7cmV0dXJuIGZ1bmN0aW9uKGMsZCl7dmFyIHU9ZC5kaXJ8fGQucm9vdCxmPWQuYmFzZXx8KGQubmFtZXx8IiIpKyhkLmV4dHx8IiIpO3JldHVybiB1P3U9PT1kLnJvb3Q/dStmOnUrIi8iK2Y6Zn0oMCxvKX0scGFyc2U6ZnVuY3Rpb24obyl7cyhvKTt2YXIgYz17cm9vdDoiIixkaXI6IiIsYmFzZToiIixleHQ6IiIsbmFtZToiIn07aWYoby5sZW5ndGg9PT0wKXJldHVybiBjO3ZhciBkLHU9by5jaGFyQ29kZUF0KDApLGY9dT09PTQ3O2Y/KGMucm9vdD0iLyIsZD0xKTpkPTA7Zm9yKHZhciBtPS0xLHY9MCx3PS0xLGs9ITAsUj1vLmxlbmd0aC0xLEk9MDtSPj1kOy0tUilpZigodT1vLmNoYXJDb2RlQXQoUikpIT09NDcpdz09PS0xJiYoaz0hMSx3PVIrMSksdT09PTQ2P209PT0tMT9tPVI6SSE9PTEmJihJPTEpOm0hPT0tMSYmKEk9LTEpO2Vsc2UgaWYoIWspe3Y9UisxO2JyZWFrfXJldHVybiBtPT09LTF8fHc9PT0tMXx8ST09PTB8fEk9PT0xJiZtPT09dy0xJiZtPT09disxP3chPT0tMSYmKGMuYmFzZT1jLm5hbWU9dj09PTAmJmY/by5zbGljZSgxLHcpOm8uc2xpY2Uodix3KSk6KHY9PT0wJiZmPyhjLm5hbWU9by5zbGljZSgxLG0pLGMuYmFzZT1vLnNsaWNlKDEsdykpOihjLm5hbWU9by5zbGljZSh2LG0pLGMuYmFzZT1vLnNsaWNlKHYsdykpLGMuZXh0PW8uc2xpY2UobSx3KSksdj4wP2MuZGlyPW8uc2xpY2UoMCx2LTEpOmYmJihjLmRpcj0iLyIpLGN9LHNlcDoiLyIsZGVsaW1pdGVyOiI6Iix3aW4zMjpudWxsLHBvc2l4Om51bGx9O2wucG9zaXg9bCxpLmV4cG9ydHM9bH19LHQ9e307ZnVuY3Rpb24gbihpKXt2YXIgcz10W2ldO2lmKHMhPT12b2lkIDApcmV0dXJuIHMuZXhwb3J0czt2YXIgYT10W2ldPXtleHBvcnRzOnt9fTtyZXR1cm4gZVtpXShhLGEuZXhwb3J0cyxuKSxhLmV4cG9ydHN9bi5kPShpLHMpPT57Zm9yKHZhciBhIGluIHMpbi5vKHMsYSkmJiFuLm8oaSxhKSYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGksYSx7ZW51bWVyYWJsZTohMCxnZXQ6c1thXX0pfSxuLm89KGkscyk9Pk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChpLHMpLG4ucj1pPT57dHlwZW9mIFN5bWJvbDwidSImJlN5bWJvbC50b1N0cmluZ1RhZyYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGksU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZToiTW9kdWxlIn0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShpLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KX07dmFyIHI9e307KCgpPT57bGV0IGk7bi5yKHIpLG4uZChyLHtVUkk6KCk9PmYsVXRpbHM6KCk9PmVlfSksdHlwZW9mIHByb2Nlc3M9PSJvYmplY3QiP2k9cHJvY2Vzcy5wbGF0Zm9ybT09PSJ3aW4zMiI6dHlwZW9mIG5hdmlnYXRvcj09Im9iamVjdCImJihpPW5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZigiV2luZG93cyIpPj0wKTtjb25zdCBzPS9eXHdbXHdcZCsuLV0qJC8sYT0vXlwvLyxsPS9eXC9cLy87ZnVuY3Rpb24gbyhBLF8pe2lmKCFBLnNjaGVtZSYmXyl0aHJvdyBuZXcgRXJyb3IoYFtVcmlFcnJvcl06IFNjaGVtZSBpcyBtaXNzaW5nOiB7c2NoZW1lOiAiIiwgYXV0aG9yaXR5OiAiJHtBLmF1dGhvcml0eX0iLCBwYXRoOiAiJHtBLnBhdGh9IiwgcXVlcnk6ICIke0EucXVlcnl9IiwgZnJhZ21lbnQ6ICIke0EuZnJhZ21lbnR9In1gKTtpZihBLnNjaGVtZSYmIXMudGVzdChBLnNjaGVtZSkpdGhyb3cgbmV3IEVycm9yKCJbVXJpRXJyb3JdOiBTY2hlbWUgY29udGFpbnMgaWxsZWdhbCBjaGFyYWN0ZXJzLiIpO2lmKEEucGF0aCl7aWYoQS5hdXRob3JpdHkpe2lmKCFhLnRlc3QoQS5wYXRoKSl0aHJvdyBuZXcgRXJyb3IoJ1tVcmlFcnJvcl06IElmIGEgVVJJIGNvbnRhaW5zIGFuIGF1dGhvcml0eSBjb21wb25lbnQsIHRoZW4gdGhlIHBhdGggY29tcG9uZW50IG11c3QgZWl0aGVyIGJlIGVtcHR5IG9yIGJlZ2luIHdpdGggYSBzbGFzaCAoIi8iKSBjaGFyYWN0ZXInKX1lbHNlIGlmKGwudGVzdChBLnBhdGgpKXRocm93IG5ldyBFcnJvcignW1VyaUVycm9yXTogSWYgYSBVUkkgZG9lcyBub3QgY29udGFpbiBhbiBhdXRob3JpdHkgY29tcG9uZW50LCB0aGVuIHRoZSBwYXRoIGNhbm5vdCBiZWdpbiB3aXRoIHR3byBzbGFzaCBjaGFyYWN0ZXJzICgiLy8iKScpfX1jb25zdCBjPSIiLGQ9Ii8iLHU9L14oKFteOi8/I10rPyk6KT8oXC9cLyhbXi8/I10qKSk/KFtePyNdKikoXD8oW14jXSopKT8oIyguKikpPy87Y2xhc3MgZntjb25zdHJ1Y3RvcihfLEMsUyx6LEQsTD0hMSl7Q3QodGhpcywic2NoZW1lIik7Q3QodGhpcywiYXV0aG9yaXR5Iik7Q3QodGhpcywicGF0aCIpO0N0KHRoaXMsInF1ZXJ5Iik7Q3QodGhpcywiZnJhZ21lbnQiKTt0eXBlb2YgXz09Im9iamVjdCI/KHRoaXMuc2NoZW1lPV8uc2NoZW1lfHxjLHRoaXMuYXV0aG9yaXR5PV8uYXV0aG9yaXR5fHxjLHRoaXMucGF0aD1fLnBhdGh8fGMsdGhpcy5xdWVyeT1fLnF1ZXJ5fHxjLHRoaXMuZnJhZ21lbnQ9Xy5mcmFnbWVudHx8Yyk6KHRoaXMuc2NoZW1lPWZ1bmN0aW9uKFUsQil7cmV0dXJuIFV8fEI/VToiZmlsZSJ9KF8sTCksdGhpcy5hdXRob3JpdHk9Q3x8Yyx0aGlzLnBhdGg9ZnVuY3Rpb24oVSxCKXtzd2l0Y2goVSl7Y2FzZSJodHRwcyI6Y2FzZSJodHRwIjpjYXNlImZpbGUiOkI/QlswXSE9PWQmJihCPWQrQik6Qj1kfXJldHVybiBCfSh0aGlzLnNjaGVtZSxTfHxjKSx0aGlzLnF1ZXJ5PXp8fGMsdGhpcy5mcmFnbWVudD1EfHxjLG8odGhpcyxMKSl9c3RhdGljIGlzVXJpKF8pe3JldHVybiBfIGluc3RhbmNlb2YgZnx8ISFfJiZ0eXBlb2YgXy5hdXRob3JpdHk9PSJzdHJpbmciJiZ0eXBlb2YgXy5mcmFnbWVudD09InN0cmluZyImJnR5cGVvZiBfLnBhdGg9PSJzdHJpbmciJiZ0eXBlb2YgXy5xdWVyeT09InN0cmluZyImJnR5cGVvZiBfLnNjaGVtZT09InN0cmluZyImJnR5cGVvZiBfLmZzUGF0aD09InN0cmluZyImJnR5cGVvZiBfLndpdGg9PSJmdW5jdGlvbiImJnR5cGVvZiBfLnRvU3RyaW5nPT0iZnVuY3Rpb24ifWdldCBmc1BhdGgoKXtyZXR1cm4gSSh0aGlzKX13aXRoKF8pe2lmKCFfKXJldHVybiB0aGlzO2xldHtzY2hlbWU6QyxhdXRob3JpdHk6UyxwYXRoOnoscXVlcnk6RCxmcmFnbWVudDpMfT1fO3JldHVybiBDPT09dm9pZCAwP0M9dGhpcy5zY2hlbWU6Qz09PW51bGwmJihDPWMpLFM9PT12b2lkIDA/Uz10aGlzLmF1dGhvcml0eTpTPT09bnVsbCYmKFM9Yyksej09PXZvaWQgMD96PXRoaXMucGF0aDp6PT09bnVsbCYmKHo9YyksRD09PXZvaWQgMD9EPXRoaXMucXVlcnk6RD09PW51bGwmJihEPWMpLEw9PT12b2lkIDA/TD10aGlzLmZyYWdtZW50Okw9PT1udWxsJiYoTD1jKSxDPT09dGhpcy5zY2hlbWUmJlM9PT10aGlzLmF1dGhvcml0eSYmej09PXRoaXMucGF0aCYmRD09PXRoaXMucXVlcnkmJkw9PT10aGlzLmZyYWdtZW50P3RoaXM6bmV3IHYoQyxTLHosRCxMKX1zdGF0aWMgcGFyc2UoXyxDPSExKXtjb25zdCBTPXUuZXhlYyhfKTtyZXR1cm4gUz9uZXcgdihTWzJdfHxjLE0oU1s0XXx8YyksTShTWzVdfHxjKSxNKFNbN118fGMpLE0oU1s5XXx8YyksQyk6bmV3IHYoYyxjLGMsYyxjKX1zdGF0aWMgZmlsZShfKXtsZXQgQz1jO2lmKGkmJihfPV8ucmVwbGFjZSgvXFwvZyxkKSksX1swXT09PWQmJl9bMV09PT1kKXtjb25zdCBTPV8uaW5kZXhPZihkLDIpO1M9PT0tMT8oQz1fLnN1YnN0cmluZygyKSxfPWQpOihDPV8uc3Vic3RyaW5nKDIsUyksXz1fLnN1YnN0cmluZyhTKXx8ZCl9cmV0dXJuIG5ldyB2KCJmaWxlIixDLF8sYyxjKX1zdGF0aWMgZnJvbShfKXtjb25zdCBDPW5ldyB2KF8uc2NoZW1lLF8uYXV0aG9yaXR5LF8ucGF0aCxfLnF1ZXJ5LF8uZnJhZ21lbnQpO3JldHVybiBvKEMsITApLEN9dG9TdHJpbmcoXz0hMSl7cmV0dXJuIE4odGhpcyxfKX10b0pTT04oKXtyZXR1cm4gdGhpc31zdGF0aWMgcmV2aXZlKF8pe2lmKF8pe2lmKF8gaW5zdGFuY2VvZiBmKXJldHVybiBfO3tjb25zdCBDPW5ldyB2KF8pO3JldHVybiBDLl9mb3JtYXR0ZWQ9Xy5leHRlcm5hbCxDLl9mc1BhdGg9Xy5fc2VwPT09bT9fLmZzUGF0aDpudWxsLEN9fXJldHVybiBffX1jb25zdCBtPWk/MTp2b2lkIDA7Y2xhc3MgdiBleHRlbmRzIGZ7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpO0N0KHRoaXMsIl9mb3JtYXR0ZWQiLG51bGwpO0N0KHRoaXMsIl9mc1BhdGgiLG51bGwpfWdldCBmc1BhdGgoKXtyZXR1cm4gdGhpcy5fZnNQYXRofHwodGhpcy5fZnNQYXRoPUkodGhpcykpLHRoaXMuX2ZzUGF0aH10b1N0cmluZyhDPSExKXtyZXR1cm4gQz9OKHRoaXMsITApOih0aGlzLl9mb3JtYXR0ZWR8fCh0aGlzLl9mb3JtYXR0ZWQ9Tih0aGlzLCExKSksdGhpcy5fZm9ybWF0dGVkKX10b0pTT04oKXtjb25zdCBDPXskbWlkOjF9O3JldHVybiB0aGlzLl9mc1BhdGgmJihDLmZzUGF0aD10aGlzLl9mc1BhdGgsQy5fc2VwPW0pLHRoaXMuX2Zvcm1hdHRlZCYmKEMuZXh0ZXJuYWw9dGhpcy5fZm9ybWF0dGVkKSx0aGlzLnBhdGgmJihDLnBhdGg9dGhpcy5wYXRoKSx0aGlzLnNjaGVtZSYmKEMuc2NoZW1lPXRoaXMuc2NoZW1lKSx0aGlzLmF1dGhvcml0eSYmKEMuYXV0aG9yaXR5PXRoaXMuYXV0aG9yaXR5KSx0aGlzLnF1ZXJ5JiYoQy5xdWVyeT10aGlzLnF1ZXJ5KSx0aGlzLmZyYWdtZW50JiYoQy5mcmFnbWVudD10aGlzLmZyYWdtZW50KSxDfX1jb25zdCB3PXs1ODoiJTNBIiw0NzoiJTJGIiw2MzoiJTNGIiwzNToiJTIzIiw5MToiJTVCIiw5MzoiJTVEIiw2NDoiJTQwIiwzMzoiJTIxIiwzNjoiJTI0IiwzODoiJTI2IiwzOToiJTI3Iiw0MDoiJTI4Iiw0MToiJTI5Iiw0MjoiJTJBIiw0MzoiJTJCIiw0NDoiJTJDIiw1OToiJTNCIiw2MToiJTNEIiwzMjoiJTIwIn07ZnVuY3Rpb24gayhBLF8sQyl7bGV0IFMsej0tMTtmb3IobGV0IEQ9MDtEPEEubGVuZ3RoO0QrKyl7Y29uc3QgTD1BLmNoYXJDb2RlQXQoRCk7aWYoTD49OTcmJkw8PTEyMnx8TD49NjUmJkw8PTkwfHxMPj00OCYmTDw9NTd8fEw9PT00NXx8TD09PTQ2fHxMPT09OTV8fEw9PT0xMjZ8fF8mJkw9PT00N3x8QyYmTD09PTkxfHxDJiZMPT09OTN8fEMmJkw9PT01OCl6IT09LTEmJihTKz1lbmNvZGVVUklDb21wb25lbnQoQS5zdWJzdHJpbmcoeixEKSksej0tMSksUyE9PXZvaWQgMCYmKFMrPUEuY2hhckF0KEQpKTtlbHNle1M9PT12b2lkIDAmJihTPUEuc3Vic3RyKDAsRCkpO2NvbnN0IFU9d1tMXTtVIT09dm9pZCAwPyh6IT09LTEmJihTKz1lbmNvZGVVUklDb21wb25lbnQoQS5zdWJzdHJpbmcoeixEKSksej0tMSksUys9VSk6ej09PS0xJiYoej1EKX19cmV0dXJuIHohPT0tMSYmKFMrPWVuY29kZVVSSUNvbXBvbmVudChBLnN1YnN0cmluZyh6KSkpLFMhPT12b2lkIDA/UzpBfWZ1bmN0aW9uIFIoQSl7bGV0IF87Zm9yKGxldCBDPTA7QzxBLmxlbmd0aDtDKyspe2NvbnN0IFM9QS5jaGFyQ29kZUF0KEMpO1M9PT0zNXx8Uz09PTYzPyhfPT09dm9pZCAwJiYoXz1BLnN1YnN0cigwLEMpKSxfKz13W1NdKTpfIT09dm9pZCAwJiYoXys9QVtDXSl9cmV0dXJuIF8hPT12b2lkIDA/XzpBfWZ1bmN0aW9uIEkoQSxfKXtsZXQgQztyZXR1cm4gQz1BLmF1dGhvcml0eSYmQS5wYXRoLmxlbmd0aD4xJiZBLnNjaGVtZT09PSJmaWxlIj9gLy8ke0EuYXV0aG9yaXR5fSR7QS5wYXRofWA6QS5wYXRoLmNoYXJDb2RlQXQoMCk9PT00NyYmKEEucGF0aC5jaGFyQ29kZUF0KDEpPj02NSYmQS5wYXRoLmNoYXJDb2RlQXQoMSk8PTkwfHxBLnBhdGguY2hhckNvZGVBdCgxKT49OTcmJkEucGF0aC5jaGFyQ29kZUF0KDEpPD0xMjIpJiZBLnBhdGguY2hhckNvZGVBdCgyKT09PTU4P0EucGF0aFsxXS50b0xvd2VyQ2FzZSgpK0EucGF0aC5zdWJzdHIoMik6QS5wYXRoLGkmJihDPUMucmVwbGFjZSgvXC8vZywiXFwiKSksQ31mdW5jdGlvbiBOKEEsXyl7Y29uc3QgQz1fP1I6aztsZXQgUz0iIix7c2NoZW1lOnosYXV0aG9yaXR5OkQscGF0aDpMLHF1ZXJ5OlUsZnJhZ21lbnQ6Qn09QTtpZih6JiYoUys9eixTKz0iOiIpLChEfHx6PT09ImZpbGUiKSYmKFMrPWQsUys9ZCksRCl7bGV0IHE9RC5pbmRleE9mKCJAIik7aWYocSE9PS0xKXtjb25zdCBhZT1ELnN1YnN0cigwLHEpO0Q9RC5zdWJzdHIocSsxKSxxPWFlLmxhc3RJbmRleE9mKCI6IikscT09PS0xP1MrPUMoYWUsITEsITEpOihTKz1DKGFlLnN1YnN0cigwLHEpLCExLCExKSxTKz0iOiIsUys9QyhhZS5zdWJzdHIocSsxKSwhMSwhMCkpLFMrPSJAIn1EPUQudG9Mb3dlckNhc2UoKSxxPUQubGFzdEluZGV4T2YoIjoiKSxxPT09LTE/Uys9QyhELCExLCEwKTooUys9QyhELnN1YnN0cigwLHEpLCExLCEwKSxTKz1ELnN1YnN0cihxKSl9aWYoTCl7aWYoTC5sZW5ndGg+PTMmJkwuY2hhckNvZGVBdCgwKT09PTQ3JiZMLmNoYXJDb2RlQXQoMik9PT01OCl7Y29uc3QgcT1MLmNoYXJDb2RlQXQoMSk7cT49NjUmJnE8PTkwJiYoTD1gLyR7U3RyaW5nLmZyb21DaGFyQ29kZShxKzMyKX06JHtMLnN1YnN0cigzKX1gKX1lbHNlIGlmKEwubGVuZ3RoPj0yJiZMLmNoYXJDb2RlQXQoMSk9PT01OCl7Y29uc3QgcT1MLmNoYXJDb2RlQXQoMCk7cT49NjUmJnE8PTkwJiYoTD1gJHtTdHJpbmcuZnJvbUNoYXJDb2RlKHErMzIpfToke0wuc3Vic3RyKDIpfWApfVMrPUMoTCwhMCwhMSl9cmV0dXJuIFUmJihTKz0iPyIsUys9QyhVLCExLCExKSksQiYmKFMrPSIjIixTKz1fP0I6ayhCLCExLCExKSksU31mdW5jdGlvbiBFKEEpe3RyeXtyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KEEpfWNhdGNoe3JldHVybiBBLmxlbmd0aD4zP0Euc3Vic3RyKDAsMykrRShBLnN1YnN0cigzKSk6QX19Y29uc3QgRj0vKCVbMC05QS1aYS16XVswLTlBLVphLXpdKSsvZztmdW5jdGlvbiBNKEEpe3JldHVybiBBLm1hdGNoKEYpP0EucmVwbGFjZShGLF89PkUoXykpOkF9dmFyIFQ9big0NzApO2NvbnN0IFA9VC5wb3NpeHx8VCxqPSIvIjt2YXIgZWU7KGZ1bmN0aW9uKEEpe0Euam9pblBhdGg9ZnVuY3Rpb24oXywuLi5DKXtyZXR1cm4gXy53aXRoKHtwYXRoOlAuam9pbihfLnBhdGgsLi4uQyl9KX0sQS5yZXNvbHZlUGF0aD1mdW5jdGlvbihfLC4uLkMpe2xldCBTPV8ucGF0aCx6PSExO1NbMF0hPT1qJiYoUz1qK1Msej0hMCk7bGV0IEQ9UC5yZXNvbHZlKFMsLi4uQyk7cmV0dXJuIHomJkRbMF09PT1qJiYhXy5hdXRob3JpdHkmJihEPUQuc3Vic3RyaW5nKDEpKSxfLndpdGgoe3BhdGg6RH0pfSxBLmRpcm5hbWU9ZnVuY3Rpb24oXyl7aWYoXy5wYXRoLmxlbmd0aD09PTB8fF8ucGF0aD09PWopcmV0dXJuIF87bGV0IEM9UC5kaXJuYW1lKF8ucGF0aCk7cmV0dXJuIEMubGVuZ3RoPT09MSYmQy5jaGFyQ29kZUF0KDApPT09NDYmJihDPSIiKSxfLndpdGgoe3BhdGg6Q30pfSxBLmJhc2VuYW1lPWZ1bmN0aW9uKF8pe3JldHVybiBQLmJhc2VuYW1lKF8ucGF0aCl9LEEuZXh0bmFtZT1mdW5jdGlvbihfKXtyZXR1cm4gUC5leHRuYW1lKF8ucGF0aCl9fSkoZWV8fChlZT17fSkpfSkoKSxKYz1yfSkoKTt2YXJ7VVJJOmhzLFV0aWxzOnd0fT1KYztmdW5jdGlvbiBkcyhlKXtyZXR1cm4gd3QuZGlybmFtZShocy5wYXJzZShlKSkudG9TdHJpbmcoITApfWZ1bmN0aW9uIEt0KGUsLi4udCl7cmV0dXJuIHd0LmpvaW5QYXRoKGhzLnBhcnNlKGUpLC4uLnQpLnRvU3RyaW5nKCEwKX12YXIgTm09Y2xhc3N7Y29uc3RydWN0b3IoZSl7dGhpcy5yZWFkRGlyZWN0b3J5PWUsdGhpcy5saXRlcmFsQ29tcGxldGlvbnM9W10sdGhpcy5pbXBvcnRDb21wbGV0aW9ucz1bXX1vbkNzc1VSSUxpdGVyYWxWYWx1ZShlKXt0aGlzLmxpdGVyYWxDb21wbGV0aW9ucy5wdXNoKGUpfW9uQ3NzSW1wb3J0UGF0aChlKXt0aGlzLmltcG9ydENvbXBsZXRpb25zLnB1c2goZSl9YXN5bmMgY29tcHV0ZUNvbXBsZXRpb25zKGUsdCl7Y29uc3Qgbj17aXRlbXM6W10saXNJbmNvbXBsZXRlOiExfTtmb3IoY29uc3QgciBvZiB0aGlzLmxpdGVyYWxDb21wbGV0aW9ucyl7Y29uc3QgaT1yLnVyaVZhbHVlLHM9dXMoaSk7aWYocz09PSIuInx8cz09PSIuLiIpbi5pc0luY29tcGxldGU9ITA7ZWxzZXtjb25zdCBhPWF3YWl0IHRoaXMucHJvdmlkZVBhdGhTdWdnZXN0aW9ucyhpLHIucG9zaXRpb24sci5yYW5nZSxlLHQpO2ZvcihsZXQgbCBvZiBhKW4uaXRlbXMucHVzaChsKX19Zm9yKGNvbnN0IHIgb2YgdGhpcy5pbXBvcnRDb21wbGV0aW9ucyl7Y29uc3QgaT1yLnBhdGhWYWx1ZSxzPXVzKGkpO2lmKHM9PT0iLiJ8fHM9PT0iLi4iKW4uaXNJbmNvbXBsZXRlPSEwO2Vsc2V7bGV0IGE9YXdhaXQgdGhpcy5wcm92aWRlUGF0aFN1Z2dlc3Rpb25zKGksci5wb3NpdGlvbixyLnJhbmdlLGUsdCk7ZS5sYW5ndWFnZUlkPT09InNjc3MiJiZhLmZvckVhY2gobD0+e3BlKGwubGFiZWwsIl8iKSYmdmwobC5sYWJlbCwiLnNjc3MiKSYmKGwudGV4dEVkaXQ/bC50ZXh0RWRpdC5uZXdUZXh0PWwubGFiZWwuc2xpY2UoMSwtNSk6bC5sYWJlbD1sLmxhYmVsLnNsaWNlKDEsLTUpKX0pO2ZvcihsZXQgbCBvZiBhKW4uaXRlbXMucHVzaChsKX19cmV0dXJuIG59YXN5bmMgcHJvdmlkZVBhdGhTdWdnZXN0aW9ucyhlLHQsbixyLGkpe2NvbnN0IHM9dXMoZSksYT1wZShlLCInIil8fHBlKGUsJyInKSxsPWE/cy5zbGljZSgwLHQuY2hhcmFjdGVyLShuLnN0YXJ0LmNoYXJhY3RlcisxKSk6cy5zbGljZSgwLHQuY2hhcmFjdGVyLW4uc3RhcnQuY2hhcmFjdGVyKSxvPXIudXJpLGM9YT9NbShuLDEsLTEpOm4sZD1JbShsLHMsYyksdT1sLnN1YnN0cmluZygwLGwubGFzdEluZGV4T2YoIi8iKSsxKTtsZXQgZj1pLnJlc29sdmVSZWZlcmVuY2UodXx8Ii4iLG8pO2lmKGYpdHJ5e2NvbnN0IG09W10sdj1hd2FpdCB0aGlzLnJlYWREaXJlY3RvcnkoZik7Zm9yKGNvbnN0W3csa11vZiB2KXcuY2hhckNvZGVBdCgwKSE9PURtJiYoaz09PURuLkRpcmVjdG9yeXx8S3QoZix3KSE9PW8pJiZtLnB1c2goQW0odyxrPT09RG4uRGlyZWN0b3J5LGQpKTtyZXR1cm4gbX1jYXRjaHt9cmV0dXJuW119fSxEbT00NjtmdW5jdGlvbiB1cyhlKXtyZXR1cm4gcGUoZSwiJyIpfHxwZShlLCciJyk/ZS5zbGljZSgxLC0xKTplfWZ1bmN0aW9uIEltKGUsdCxuKXtsZXQgcjtjb25zdCBpPWUubGFzdEluZGV4T2YoIi8iKTtpZihpPT09LTEpcj1uO2Vsc2V7Y29uc3Qgcz10LnNsaWNlKGkrMSksYT1GcihuLmVuZCwtcy5sZW5ndGgpLGw9cy5pbmRleE9mKCIgIik7bGV0IG87bCE9PS0xP289RnIoYSxsKTpvPW4uZW5kLHI9WC5jcmVhdGUoYSxvKX1yZXR1cm4gcn1mdW5jdGlvbiBBbShlLHQsbil7cmV0dXJuIHQ/KGU9ZSsiLyIse2xhYmVsOkVyKGUpLGtpbmQ6Vi5Gb2xkZXIsdGV4dEVkaXQ6JC5yZXBsYWNlKG4sRXIoZSkpLGNvbW1hbmQ6e3RpdGxlOiJTdWdnZXN0Iixjb21tYW5kOiJlZGl0b3IuYWN0aW9uLnRyaWdnZXJTdWdnZXN0In19KTp7bGFiZWw6RXIoZSksa2luZDpWLkZpbGUsdGV4dEVkaXQ6JC5yZXBsYWNlKG4sRXIoZSkpfX1mdW5jdGlvbiBFcihlKXtyZXR1cm4gZS5yZXBsYWNlKC8oXHN8XCh8XCl8LHwifCcpL2csIlxcJDEiKX1mdW5jdGlvbiBGcihlLHQpe3JldHVybiB4ZS5jcmVhdGUoZS5saW5lLGUuY2hhcmFjdGVyK3QpfWZ1bmN0aW9uIE1tKGUsdCxuKXtjb25zdCByPUZyKGUuc3RhcnQsdCksaT1GcihlLmVuZCxuKTtyZXR1cm4gWC5jcmVhdGUocixpKX12YXIgcnQ9TmUuU25pcHBldCxYYz17dGl0bGU6IlN1Z2dlc3QiLGNvbW1hbmQ6ImVkaXRvci5hY3Rpb24udHJpZ2dlclN1Z2dlc3QifSxIZTsoZnVuY3Rpb24oZSl7ZS5FbnVtcz0iICIsZS5Ob3JtYWw9ImQiLGUuVmVuZG9yUHJlZml4ZWQ9IngiLGUuVGVybT0ieSIsZS5WYXJpYWJsZT0ieiJ9KShIZXx8KEhlPXt9KSk7dmFyIHBzPWNsYXNze2NvbnN0cnVjdG9yKGU9bnVsbCx0LG4pe3RoaXMudmFyaWFibGVQcmVmaXg9ZSx0aGlzLmxzT3B0aW9ucz10LHRoaXMuY3NzRGF0YU1hbmFnZXI9bix0aGlzLmNvbXBsZXRpb25QYXJ0aWNpcGFudHM9W119Y29uZmlndXJlKGUpe3RoaXMuZGVmYXVsdFNldHRpbmdzPWV9Z2V0U3ltYm9sQ29udGV4dCgpe3JldHVybiB0aGlzLnN5bWJvbENvbnRleHR8fCh0aGlzLnN5bWJvbENvbnRleHQ9bmV3IGNzKHRoaXMuc3R5bGVTaGVldCkpLHRoaXMuc3ltYm9sQ29udGV4dH1zZXRDb21wbGV0aW9uUGFydGljaXBhbnRzKGUpe3RoaXMuY29tcGxldGlvblBhcnRpY2lwYW50cz1lfHxbXX1hc3luYyBkb0NvbXBsZXRlMihlLHQsbixyLGk9dGhpcy5kZWZhdWx0U2V0dGluZ3Mpe2lmKCF0aGlzLmxzT3B0aW9ucy5maWxlU3lzdGVtUHJvdmlkZXJ8fCF0aGlzLmxzT3B0aW9ucy5maWxlU3lzdGVtUHJvdmlkZXIucmVhZERpcmVjdG9yeSlyZXR1cm4gdGhpcy5kb0NvbXBsZXRlKGUsdCxuLGkpO2NvbnN0IHM9bmV3IE5tKHRoaXMubHNPcHRpb25zLmZpbGVTeXN0ZW1Qcm92aWRlci5yZWFkRGlyZWN0b3J5KSxhPXRoaXMuY29tcGxldGlvblBhcnRpY2lwYW50czt0aGlzLmNvbXBsZXRpb25QYXJ0aWNpcGFudHM9W3NdLmNvbmNhdChhKTtjb25zdCBsPXRoaXMuZG9Db21wbGV0ZShlLHQsbixpKTt0cnl7Y29uc3Qgbz1hd2FpdCBzLmNvbXB1dGVDb21wbGV0aW9ucyhlLHIpO3JldHVybntpc0luY29tcGxldGU6bC5pc0luY29tcGxldGV8fG8uaXNJbmNvbXBsZXRlLGl0ZW1EZWZhdWx0czpsLml0ZW1EZWZhdWx0cyxpdGVtczpvLml0ZW1zLmNvbmNhdChsLml0ZW1zKX19ZmluYWxseXt0aGlzLmNvbXBsZXRpb25QYXJ0aWNpcGFudHM9YX19ZG9Db21wbGV0ZShlLHQsbixyKXt0aGlzLm9mZnNldD1lLm9mZnNldEF0KHQpLHRoaXMucG9zaXRpb249dCx0aGlzLmN1cnJlbnRXb3JkPVRtKGUsdGhpcy5vZmZzZXQpLHRoaXMuZGVmYXVsdFJlcGxhY2VSYW5nZT1YLmNyZWF0ZSh4ZS5jcmVhdGUodGhpcy5wb3NpdGlvbi5saW5lLHRoaXMucG9zaXRpb24uY2hhcmFjdGVyLXRoaXMuY3VycmVudFdvcmQubGVuZ3RoKSx0aGlzLnBvc2l0aW9uKSx0aGlzLnRleHREb2N1bWVudD1lLHRoaXMuc3R5bGVTaGVldD1uLHRoaXMuZG9jdW1lbnRTZXR0aW5ncz1yO3RyeXtjb25zdCBpPXtpc0luY29tcGxldGU6ITEsaXRlbURlZmF1bHRzOntlZGl0UmFuZ2U6e3N0YXJ0OntsaW5lOnQubGluZSxjaGFyYWN0ZXI6dC5jaGFyYWN0ZXItdGhpcy5jdXJyZW50V29yZC5sZW5ndGh9LGVuZDp0fX0saXRlbXM6W119O3RoaXMubm9kZVBhdGg9TGkodGhpcy5zdHlsZVNoZWV0LHRoaXMub2Zmc2V0KTtmb3IobGV0IHM9dGhpcy5ub2RlUGF0aC5sZW5ndGgtMTtzPj0wO3MtLSl7Y29uc3QgYT10aGlzLm5vZGVQYXRoW3NdO2lmKGEgaW5zdGFuY2VvZiBUaSl0aGlzLmdldENvbXBsZXRpb25zRm9yRGVjbGFyYXRpb25Qcm9wZXJ0eShhLmdldFBhcmVudCgpLGkpO2Vsc2UgaWYoYSBpbnN0YW5jZW9mIEZsKWEucGFyZW50IGluc3RhbmNlb2YgcWk/dGhpcy5nZXRWYXJpYWJsZVByb3Bvc2FscyhudWxsLGkpOnRoaXMuZ2V0Q29tcGxldGlvbnNGb3JFeHByZXNzaW9uKGEsaSk7ZWxzZSBpZihhIGluc3RhbmNlb2YgSnQpe2NvbnN0IGw9YS5maW5kQVBhcmVudChiLkV4dGVuZHNSZWZlcmVuY2UsYi5SdWxlc2V0KTtpZihsKWlmKGwudHlwZT09PWIuRXh0ZW5kc1JlZmVyZW5jZSl0aGlzLmdldENvbXBsZXRpb25zRm9yRXh0ZW5kc1JlZmVyZW5jZShsLGEsaSk7ZWxzZXtjb25zdCBvPWw7dGhpcy5nZXRDb21wbGV0aW9uc0ZvclNlbGVjdG9yKG8sbyYmby5pc05lc3RlZCgpLGkpfX1lbHNlIGlmKGEgaW5zdGFuY2VvZiBYdCl0aGlzLmdldENvbXBsZXRpb25zRm9yRnVuY3Rpb25Bcmd1bWVudChhLGEuZ2V0UGFyZW50KCksaSk7ZWxzZSBpZihhIGluc3RhbmNlb2YgemkpdGhpcy5nZXRDb21wbGV0aW9uc0ZvckRlY2xhcmF0aW9ucyhhLGkpO2Vsc2UgaWYoYSBpbnN0YW5jZW9mIGhyKXRoaXMuZ2V0Q29tcGxldGlvbnNGb3JWYXJpYWJsZURlY2xhcmF0aW9uKGEsaSk7ZWxzZSBpZihhIGluc3RhbmNlb2YgRXQpdGhpcy5nZXRDb21wbGV0aW9uc0ZvclJ1bGVTZXQoYSxpKTtlbHNlIGlmKGEgaW5zdGFuY2VvZiBxaSl0aGlzLmdldENvbXBsZXRpb25zRm9ySW50ZXJwb2xhdGlvbihhLGkpO2Vsc2UgaWYoYSBpbnN0YW5jZW9mIGNyKXRoaXMuZ2V0Q29tcGxldGlvbnNGb3JGdW5jdGlvbkRlY2xhcmF0aW9uKGEsaSk7ZWxzZSBpZihhIGluc3RhbmNlb2YgZHIpdGhpcy5nZXRDb21wbGV0aW9uc0Zvck1peGluUmVmZXJlbmNlKGEsaSk7ZWxzZSBpZihhIGluc3RhbmNlb2YgX24pdGhpcy5nZXRDb21wbGV0aW9uc0ZvckZ1bmN0aW9uQXJndW1lbnQobnVsbCxhLGkpO2Vsc2UgaWYoYSBpbnN0YW5jZW9mIFVpKXRoaXMuZ2V0Q29tcGxldGlvbnNGb3JTdXBwb3J0cyhhLGkpO2Vsc2UgaWYoYSBpbnN0YW5jZW9mIGtuKXRoaXMuZ2V0Q29tcGxldGlvbnNGb3JTdXBwb3J0c0NvbmRpdGlvbihhLGkpO2Vsc2UgaWYoYSBpbnN0YW5jZW9mIEVuKXRoaXMuZ2V0Q29tcGxldGlvbnNGb3JFeHRlbmRzUmVmZXJlbmNlKGEsbnVsbCxpKTtlbHNlIGlmKGEudHlwZT09PWIuVVJJTGl0ZXJhbCl0aGlzLmdldENvbXBsZXRpb25Gb3JVcmlMaXRlcmFsVmFsdWUoYSxpKTtlbHNlIGlmKGEucGFyZW50PT09bnVsbCl0aGlzLmdldENvbXBsZXRpb25Gb3JUb3BMZXZlbChpKTtlbHNlIGlmKGEudHlwZT09PWIuU3RyaW5nTGl0ZXJhbCYmdGhpcy5pc0ltcG9ydFBhdGhQYXJlbnQoYS5wYXJlbnQudHlwZSkpdGhpcy5nZXRDb21wbGV0aW9uRm9ySW1wb3J0UGF0aChhLGkpO2Vsc2UgY29udGludWU7aWYoaS5pdGVtcy5sZW5ndGg+MHx8dGhpcy5vZmZzZXQ+YS5vZmZzZXQpcmV0dXJuIHRoaXMuZmluYWxpemUoaSl9cmV0dXJuIHRoaXMuZ2V0Q29tcGxldGlvbnNGb3JTdHlsZXNoZWV0KGkpLGkuaXRlbXMubGVuZ3RoPT09MCYmdGhpcy52YXJpYWJsZVByZWZpeCYmdGhpcy5jdXJyZW50V29yZC5pbmRleE9mKHRoaXMudmFyaWFibGVQcmVmaXgpPT09MCYmdGhpcy5nZXRWYXJpYWJsZVByb3Bvc2FscyhudWxsLGkpLHRoaXMuZmluYWxpemUoaSl9ZmluYWxseXt0aGlzLnBvc2l0aW9uPW51bGwsdGhpcy5jdXJyZW50V29yZD1udWxsLHRoaXMudGV4dERvY3VtZW50PW51bGwsdGhpcy5zdHlsZVNoZWV0PW51bGwsdGhpcy5zeW1ib2xDb250ZXh0PW51bGwsdGhpcy5kZWZhdWx0UmVwbGFjZVJhbmdlPW51bGwsdGhpcy5ub2RlUGF0aD1udWxsfX1pc0ltcG9ydFBhdGhQYXJlbnQoZSl7cmV0dXJuIGU9PT1iLkltcG9ydH1maW5hbGl6ZShlKXtyZXR1cm4gZX1maW5kSW5Ob2RlUGF0aCguLi5lKXtmb3IobGV0IHQ9dGhpcy5ub2RlUGF0aC5sZW5ndGgtMTt0Pj0wO3QtLSl7Y29uc3Qgbj10aGlzLm5vZGVQYXRoW3RdO2lmKGUuaW5kZXhPZihuLnR5cGUpIT09LTEpcmV0dXJuIG59cmV0dXJuIG51bGx9Z2V0Q29tcGxldGlvbnNGb3JEZWNsYXJhdGlvblByb3BlcnR5KGUsdCl7cmV0dXJuIHRoaXMuZ2V0UHJvcGVydHlQcm9wb3NhbHMoZSx0KX1nZXRQcm9wZXJ0eVByb3Bvc2FscyhlLHQpe2NvbnN0IG49dGhpcy5pc1RyaWdnZXJQcm9wZXJ0eVZhbHVlQ29tcGxldGlvbkVuYWJsZWQscj10aGlzLmlzQ29tcGxldGVQcm9wZXJ0eVdpdGhTZW1pY29sb25FbmFibGVkO3JldHVybiB0aGlzLmNzc0RhdGFNYW5hZ2VyLmdldFByb3BlcnRpZXMoKS5mb3JFYWNoKHM9PntsZXQgYSxsLG89ITE7ZT8oYT10aGlzLmdldENvbXBsZXRpb25SYW5nZShlLmdldFByb3BlcnR5KCkpLGw9cy5uYW1lLExlKGUuY29sb25Qb3NpdGlvbil8fChsKz0iOiAiLG89ITApKTooYT10aGlzLmdldENvbXBsZXRpb25SYW5nZShudWxsKSxsPXMubmFtZSsiOiAiLG89ITApLCFlJiZyJiYobCs9IiQwOyIpLGUmJiFlLnNlbWljb2xvblBvc2l0aW9uJiZyJiZ0aGlzLm9mZnNldD49dGhpcy50ZXh0RG9jdW1lbnQub2Zmc2V0QXQoYS5lbmQpJiYobCs9IiQwOyIpO2NvbnN0IGM9e2xhYmVsOnMubmFtZSxkb2N1bWVudGF0aW9uOmJ0KHMsdGhpcy5kb2VzU3VwcG9ydE1hcmtkb3duKCkpLHRhZ3M6SW4ocyk/W1J0LkRlcHJlY2F0ZWRdOltdLHRleHRFZGl0OiQucmVwbGFjZShhLGwpLGluc2VydFRleHRGb3JtYXQ6TmUuU25pcHBldCxraW5kOlYuUHJvcGVydHl9O3MucmVzdHJpY3Rpb25zfHwobz0hMSksbiYmbyYmKGMuY29tbWFuZD1YYyk7Y29uc3QgdT0oMjU1LSh0eXBlb2Ygcy5yZWxldmFuY2U9PSJudW1iZXIiP01hdGgubWluKE1hdGgubWF4KHMucmVsZXZhbmNlLDApLDk5KTo1MCkpLnRvU3RyaW5nKDE2KSxmPXBlKHMubmFtZSwiLSIpP0hlLlZlbmRvclByZWZpeGVkOkhlLk5vcm1hbDtjLnNvcnRUZXh0PWYrIl8iK3UsdC5pdGVtcy5wdXNoKGMpfSksdGhpcy5jb21wbGV0aW9uUGFydGljaXBhbnRzLmZvckVhY2gocz0+e3Mub25Dc3NQcm9wZXJ0eSYmcy5vbkNzc1Byb3BlcnR5KHtwcm9wZXJ0eU5hbWU6dGhpcy5jdXJyZW50V29yZCxyYW5nZTp0aGlzLmRlZmF1bHRSZXBsYWNlUmFuZ2V9KX0pLHR9Z2V0IGlzVHJpZ2dlclByb3BlcnR5VmFsdWVDb21wbGV0aW9uRW5hYmxlZCgpe3JldHVybiB0aGlzLmRvY3VtZW50U2V0dGluZ3M/LnRyaWdnZXJQcm9wZXJ0eVZhbHVlQ29tcGxldGlvbj8/ITB9Z2V0IGlzQ29tcGxldGVQcm9wZXJ0eVdpdGhTZW1pY29sb25FbmFibGVkKCl7cmV0dXJuIHRoaXMuZG9jdW1lbnRTZXR0aW5ncz8uY29tcGxldGVQcm9wZXJ0eVdpdGhTZW1pY29sb24/PyEwfWdldENvbXBsZXRpb25zRm9yRGVjbGFyYXRpb25WYWx1ZShlLHQpe2NvbnN0IG49ZS5nZXRGdWxsUHJvcGVydHlOYW1lKCkscj10aGlzLmNzc0RhdGFNYW5hZ2VyLmdldFByb3BlcnR5KG4pO2xldCBpPWUuZ2V0VmFsdWUoKXx8bnVsbDtmb3IoO2kmJmkuaGFzQ2hpbGRyZW4oKTspaT1pLmZpbmRDaGlsZEF0T2Zmc2V0KHRoaXMub2Zmc2V0LCExKTtpZih0aGlzLmNvbXBsZXRpb25QYXJ0aWNpcGFudHMuZm9yRWFjaChzPT57cy5vbkNzc1Byb3BlcnR5VmFsdWUmJnMub25Dc3NQcm9wZXJ0eVZhbHVlKHtwcm9wZXJ0eU5hbWU6bixwcm9wZXJ0eVZhbHVlOnRoaXMuY3VycmVudFdvcmQscmFuZ2U6dGhpcy5nZXRDb21wbGV0aW9uUmFuZ2UoaSl9KX0pLHIpe2lmKHIucmVzdHJpY3Rpb25zKWZvcihjb25zdCBzIG9mIHIucmVzdHJpY3Rpb25zKXN3aXRjaChzKXtjYXNlImNvbG9yIjp0aGlzLmdldENvbG9yUHJvcG9zYWxzKHIsaSx0KTticmVhaztjYXNlInBvc2l0aW9uIjp0aGlzLmdldFBvc2l0aW9uUHJvcG9zYWxzKHIsaSx0KTticmVhaztjYXNlInJlcGVhdCI6dGhpcy5nZXRSZXBlYXRTdHlsZVByb3Bvc2FscyhyLGksdCk7YnJlYWs7Y2FzZSJsaW5lLXN0eWxlIjp0aGlzLmdldExpbmVTdHlsZVByb3Bvc2FscyhyLGksdCk7YnJlYWs7Y2FzZSJsaW5lLXdpZHRoIjp0aGlzLmdldExpbmVXaWR0aFByb3Bvc2FscyhyLGksdCk7YnJlYWs7Y2FzZSJnZW9tZXRyeS1ib3giOnRoaXMuZ2V0R2VvbWV0cnlCb3hQcm9wb3NhbHMocixpLHQpO2JyZWFrO2Nhc2UiYm94Ijp0aGlzLmdldEJveFByb3Bvc2FscyhyLGksdCk7YnJlYWs7Y2FzZSJpbWFnZSI6dGhpcy5nZXRJbWFnZVByb3Bvc2FscyhyLGksdCk7YnJlYWs7Y2FzZSJ0aW1pbmctZnVuY3Rpb24iOnRoaXMuZ2V0VGltaW5nRnVuY3Rpb25Qcm9wb3NhbHMocixpLHQpO2JyZWFrO2Nhc2Uic2hhcGUiOnRoaXMuZ2V0QmFzaWNTaGFwZVByb3Bvc2FscyhyLGksdCk7YnJlYWt9dGhpcy5nZXRWYWx1ZUVudW1Qcm9wb3NhbHMocixpLHQpLHRoaXMuZ2V0Q1NTV2lkZUtleXdvcmRQcm9wb3NhbHMocixpLHQpLHRoaXMuZ2V0VW5pdFByb3Bvc2FscyhyLGksdCl9ZWxzZXtjb25zdCBzPUxtKHRoaXMuc3R5bGVTaGVldCxlKTtmb3IoY29uc3QgYSBvZiBzLmdldEVudHJpZXMoKSl0Lml0ZW1zLnB1c2goe2xhYmVsOmEsdGV4dEVkaXQ6JC5yZXBsYWNlKHRoaXMuZ2V0Q29tcGxldGlvblJhbmdlKGkpLGEpLGtpbmQ6Vi5WYWx1ZX0pfXJldHVybiB0aGlzLmdldFZhcmlhYmxlUHJvcG9zYWxzKGksdCksdGhpcy5nZXRUZXJtUHJvcG9zYWxzKHIsaSx0KSx0fWdldFZhbHVlRW51bVByb3Bvc2FscyhlLHQsbil7aWYoZS52YWx1ZXMpZm9yKGNvbnN0IHIgb2YgZS52YWx1ZXMpe2xldCBpPXIubmFtZSxzO2lmKHZsKGksIikiKSl7Y29uc3Qgbz1pLmxhc3RJbmRleE9mKCIoIik7byE9PS0xJiYoaT1pLnN1YnN0cmluZygwLG8rMSkrIiQxIitpLnN1YnN0cmluZyhvKzEpLHM9cnQpfWxldCBhPUhlLkVudW1zO3BlKHIubmFtZSwiLSIpJiYoYSs9SGUuVmVuZG9yUHJlZml4ZWQpO2NvbnN0IGw9e2xhYmVsOnIubmFtZSxkb2N1bWVudGF0aW9uOmJ0KHIsdGhpcy5kb2VzU3VwcG9ydE1hcmtkb3duKCkpLHRhZ3M6SW4oZSk/W1J0LkRlcHJlY2F0ZWRdOltdLHRleHRFZGl0OiQucmVwbGFjZSh0aGlzLmdldENvbXBsZXRpb25SYW5nZSh0KSxpKSxzb3J0VGV4dDphLGtpbmQ6Vi5WYWx1ZSxpbnNlcnRUZXh0Rm9ybWF0OnN9O24uaXRlbXMucHVzaChsKX1yZXR1cm4gbn1nZXRDU1NXaWRlS2V5d29yZFByb3Bvc2FscyhlLHQsbil7Zm9yKGNvbnN0IHIgaW4gVWMpbi5pdGVtcy5wdXNoKHtsYWJlbDpyLGRvY3VtZW50YXRpb246VWNbcl0sdGV4dEVkaXQ6JC5yZXBsYWNlKHRoaXMuZ2V0Q29tcGxldGlvblJhbmdlKHQpLHIpLGtpbmQ6Vi5WYWx1ZX0pO2Zvcihjb25zdCByIGluIFZjKXtjb25zdCBpPVp0KHIpO24uaXRlbXMucHVzaCh7bGFiZWw6cixkb2N1bWVudGF0aW9uOlZjW3JdLHRleHRFZGl0OiQucmVwbGFjZSh0aGlzLmdldENvbXBsZXRpb25SYW5nZSh0KSxpKSxraW5kOlYuRnVuY3Rpb24saW5zZXJ0VGV4dEZvcm1hdDpydCxjb21tYW5kOnBlKHIsInZhciIpP1hjOnZvaWQgMH0pfXJldHVybiBufWdldENvbXBsZXRpb25zRm9ySW50ZXJwb2xhdGlvbihlLHQpe3JldHVybiB0aGlzLm9mZnNldD49ZS5vZmZzZXQrMiYmdGhpcy5nZXRWYXJpYWJsZVByb3Bvc2FscyhudWxsLHQpLHR9Z2V0VmFyaWFibGVQcm9wb3NhbHMoZSx0KXtjb25zdCBuPXRoaXMuZ2V0U3ltYm9sQ29udGV4dCgpLmZpbmRTeW1ib2xzQXRPZmZzZXQodGhpcy5vZmZzZXQsSi5WYXJpYWJsZSk7Zm9yKGNvbnN0IHIgb2Ygbil7Y29uc3QgaT1wZShyLm5hbWUsIi0tIik/YHZhcigke3IubmFtZX0pYDpyLm5hbWUscz17bGFiZWw6ci5uYW1lLGRvY3VtZW50YXRpb246ci52YWx1ZT93bChyLnZhbHVlKTpyLnZhbHVlLHRleHRFZGl0OiQucmVwbGFjZSh0aGlzLmdldENvbXBsZXRpb25SYW5nZShlKSxpKSxraW5kOlYuVmFyaWFibGUsc29ydFRleHQ6SGUuVmFyaWFibGV9O2lmKHR5cGVvZiBzLmRvY3VtZW50YXRpb249PSJzdHJpbmciJiZEYyhzLmRvY3VtZW50YXRpb24pJiYocy5raW5kPVYuQ29sb3IpLHIubm9kZS50eXBlPT09Yi5GdW5jdGlvblBhcmFtZXRlcil7Y29uc3QgYT1yLm5vZGUuZ2V0UGFyZW50KCk7YS50eXBlPT09Yi5NaXhpbkRlY2xhcmF0aW9uJiYocy5kZXRhaWw9ZygiYXJndW1lbnQgZnJvbSAnezB9JyIsYS5nZXROYW1lKCkpKX10Lml0ZW1zLnB1c2gocyl9cmV0dXJuIHR9Z2V0VmFyaWFibGVQcm9wb3NhbHNGb3JDU1NWYXJGdW5jdGlvbihlKXtjb25zdCB0PW5ldyBtczt0aGlzLnN0eWxlU2hlZXQuYWNjZXB0VmlzaXRvcihuZXcgUG0odCx0aGlzLm9mZnNldCkpO2xldCBuPXRoaXMuZ2V0U3ltYm9sQ29udGV4dCgpLmZpbmRTeW1ib2xzQXRPZmZzZXQodGhpcy5vZmZzZXQsSi5WYXJpYWJsZSk7Zm9yKGNvbnN0IHIgb2Ygbil7aWYocGUoci5uYW1lLCItLSIpKXtjb25zdCBpPXtsYWJlbDpyLm5hbWUsZG9jdW1lbnRhdGlvbjpyLnZhbHVlP3dsKHIudmFsdWUpOnIudmFsdWUsdGV4dEVkaXQ6JC5yZXBsYWNlKHRoaXMuZ2V0Q29tcGxldGlvblJhbmdlKG51bGwpLHIubmFtZSksa2luZDpWLlZhcmlhYmxlfTt0eXBlb2YgaS5kb2N1bWVudGF0aW9uPT0ic3RyaW5nIiYmRGMoaS5kb2N1bWVudGF0aW9uKSYmKGkua2luZD1WLkNvbG9yKSxlLml0ZW1zLnB1c2goaSl9dC5yZW1vdmUoci5uYW1lKX1mb3IoY29uc3QgciBvZiB0LmdldEVudHJpZXMoKSlpZihwZShyLCItLSIpKXtjb25zdCBpPXtsYWJlbDpyLHRleHRFZGl0OiQucmVwbGFjZSh0aGlzLmdldENvbXBsZXRpb25SYW5nZShudWxsKSxyKSxraW5kOlYuVmFyaWFibGV9O2UuaXRlbXMucHVzaChpKX1yZXR1cm4gZX1nZXRVbml0UHJvcG9zYWxzKGUsdCxuKXtsZXQgcj0iMCI7aWYodGhpcy5jdXJyZW50V29yZC5sZW5ndGg+MCl7Y29uc3QgaT10aGlzLmN1cnJlbnRXb3JkLm1hdGNoKC9eLT9cZFtcLlxkK10qLyk7aSYmKHI9aVswXSxuLmlzSW5jb21wbGV0ZT1yLmxlbmd0aD09PXRoaXMuY3VycmVudFdvcmQubGVuZ3RoKX1lbHNlIHRoaXMuY3VycmVudFdvcmQubGVuZ3RoPT09MCYmKG4uaXNJbmNvbXBsZXRlPSEwKTtpZih0JiZ0LnBhcmVudCYmdC5wYXJlbnQudHlwZT09PWIuVGVybSYmKHQ9dC5nZXRQYXJlbnQoKSksZS5yZXN0cmljdGlvbnMpZm9yKGNvbnN0IGkgb2YgZS5yZXN0cmljdGlvbnMpe2NvbnN0IHM9amNbaV07aWYocylmb3IoY29uc3QgYSBvZiBzKXtjb25zdCBsPXIrYTtuLml0ZW1zLnB1c2goe2xhYmVsOmwsdGV4dEVkaXQ6JC5yZXBsYWNlKHRoaXMuZ2V0Q29tcGxldGlvblJhbmdlKHQpLGwpLGtpbmQ6Vi5Vbml0fSl9fXJldHVybiBufWdldENvbXBsZXRpb25SYW5nZShlKXtpZihlJiZlLm9mZnNldDw9dGhpcy5vZmZzZXQmJnRoaXMub2Zmc2V0PD1lLmVuZCl7Y29uc3QgdD1lLmVuZCE9PS0xP3RoaXMudGV4dERvY3VtZW50LnBvc2l0aW9uQXQoZS5lbmQpOnRoaXMucG9zaXRpb24sbj10aGlzLnRleHREb2N1bWVudC5wb3NpdGlvbkF0KGUub2Zmc2V0KTtpZihuLmxpbmU9PT10LmxpbmUpcmV0dXJuIFguY3JlYXRlKG4sdCl9cmV0dXJuIHRoaXMuZGVmYXVsdFJlcGxhY2VSYW5nZX1nZXRDb2xvclByb3Bvc2FscyhlLHQsbil7Zm9yKGNvbnN0IGkgaW4geXIpbi5pdGVtcy5wdXNoKHtsYWJlbDppLGRvY3VtZW50YXRpb246eXJbaV0sdGV4dEVkaXQ6JC5yZXBsYWNlKHRoaXMuZ2V0Q29tcGxldGlvblJhbmdlKHQpLGkpLGtpbmQ6Vi5Db2xvcn0pO2Zvcihjb25zdCBpIGluIGxzKW4uaXRlbXMucHVzaCh7bGFiZWw6aSxkb2N1bWVudGF0aW9uOmxzW2ldLHRleHRFZGl0OiQucmVwbGFjZSh0aGlzLmdldENvbXBsZXRpb25SYW5nZSh0KSxpKSxraW5kOlYuVmFsdWV9KTtjb25zdCByPW5ldyBtczt0aGlzLnN0eWxlU2hlZXQuYWNjZXB0VmlzaXRvcihuZXcgem0ocix0aGlzLm9mZnNldCkpO2Zvcihjb25zdCBpIG9mIHIuZ2V0RW50cmllcygpKW4uaXRlbXMucHVzaCh7bGFiZWw6aSx0ZXh0RWRpdDokLnJlcGxhY2UodGhpcy5nZXRDb21wbGV0aW9uUmFuZ2UodCksaSksa2luZDpWLkNvbG9yfSk7Zm9yKGNvbnN0IGkgb2YgZG0pbi5pdGVtcy5wdXNoKHtsYWJlbDppLmxhYmVsLGRldGFpbDppLmZ1bmMsZG9jdW1lbnRhdGlvbjppLmRlc2MsdGV4dEVkaXQ6JC5yZXBsYWNlKHRoaXMuZ2V0Q29tcGxldGlvblJhbmdlKHQpLGkuaW5zZXJ0VGV4dCksaW5zZXJ0VGV4dEZvcm1hdDpydCxraW5kOlYuRnVuY3Rpb259KTtyZXR1cm4gbn1nZXRQb3NpdGlvblByb3Bvc2FscyhlLHQsbil7Zm9yKGNvbnN0IHIgaW4gemMpbi5pdGVtcy5wdXNoKHtsYWJlbDpyLGRvY3VtZW50YXRpb246emNbcl0sdGV4dEVkaXQ6JC5yZXBsYWNlKHRoaXMuZ2V0Q29tcGxldGlvblJhbmdlKHQpLHIpLGtpbmQ6Vi5WYWx1ZX0pO3JldHVybiBufWdldFJlcGVhdFN0eWxlUHJvcG9zYWxzKGUsdCxuKXtmb3IoY29uc3QgciBpbiBQYyluLml0ZW1zLnB1c2goe2xhYmVsOnIsZG9jdW1lbnRhdGlvbjpQY1tyXSx0ZXh0RWRpdDokLnJlcGxhY2UodGhpcy5nZXRDb21wbGV0aW9uUmFuZ2UodCksciksa2luZDpWLlZhbHVlfSk7cmV0dXJuIG59Z2V0TGluZVN0eWxlUHJvcG9zYWxzKGUsdCxuKXtmb3IoY29uc3QgciBpbiBUYyluLml0ZW1zLnB1c2goe2xhYmVsOnIsZG9jdW1lbnRhdGlvbjpUY1tyXSx0ZXh0RWRpdDokLnJlcGxhY2UodGhpcy5nZXRDb21wbGV0aW9uUmFuZ2UodCksciksa2luZDpWLlZhbHVlfSk7cmV0dXJuIG59Z2V0TGluZVdpZHRoUHJvcG9zYWxzKGUsdCxuKXtmb3IoY29uc3QgciBvZiBTbSluLml0ZW1zLnB1c2goe2xhYmVsOnIsdGV4dEVkaXQ6JC5yZXBsYWNlKHRoaXMuZ2V0Q29tcGxldGlvblJhbmdlKHQpLHIpLGtpbmQ6Vi5WYWx1ZX0pO3JldHVybiBufWdldEdlb21ldHJ5Qm94UHJvcG9zYWxzKGUsdCxuKXtmb3IoY29uc3QgciBpbiBXYyluLml0ZW1zLnB1c2goe2xhYmVsOnIsZG9jdW1lbnRhdGlvbjpXY1tyXSx0ZXh0RWRpdDokLnJlcGxhY2UodGhpcy5nZXRDb21wbGV0aW9uUmFuZ2UodCksciksa2luZDpWLlZhbHVlfSk7cmV0dXJuIG59Z2V0Qm94UHJvcG9zYWxzKGUsdCxuKXtmb3IoY29uc3QgciBpbiBPYyluLml0ZW1zLnB1c2goe2xhYmVsOnIsZG9jdW1lbnRhdGlvbjpPY1tyXSx0ZXh0RWRpdDokLnJlcGxhY2UodGhpcy5nZXRDb21wbGV0aW9uUmFuZ2UodCksciksa2luZDpWLlZhbHVlfSk7cmV0dXJuIG59Z2V0SW1hZ2VQcm9wb3NhbHMoZSx0LG4pe2Zvcihjb25zdCByIGluICRjKXtjb25zdCBpPVp0KHIpO24uaXRlbXMucHVzaCh7bGFiZWw6cixkb2N1bWVudGF0aW9uOiRjW3JdLHRleHRFZGl0OiQucmVwbGFjZSh0aGlzLmdldENvbXBsZXRpb25SYW5nZSh0KSxpKSxraW5kOlYuRnVuY3Rpb24saW5zZXJ0VGV4dEZvcm1hdDpyIT09aT9ydDp2b2lkIDB9KX1yZXR1cm4gbn1nZXRUaW1pbmdGdW5jdGlvblByb3Bvc2FscyhlLHQsbil7Zm9yKGNvbnN0IHIgaW4gQmMpe2NvbnN0IGk9WnQocik7bi5pdGVtcy5wdXNoKHtsYWJlbDpyLGRvY3VtZW50YXRpb246QmNbcl0sdGV4dEVkaXQ6JC5yZXBsYWNlKHRoaXMuZ2V0Q29tcGxldGlvblJhbmdlKHQpLGkpLGtpbmQ6Vi5GdW5jdGlvbixpbnNlcnRUZXh0Rm9ybWF0OnIhPT1pP3J0OnZvaWQgMH0pfXJldHVybiBufWdldEJhc2ljU2hhcGVQcm9wb3NhbHMoZSx0LG4pe2Zvcihjb25zdCByIGluIHFjKXtjb25zdCBpPVp0KHIpO24uaXRlbXMucHVzaCh7bGFiZWw6cixkb2N1bWVudGF0aW9uOnFjW3JdLHRleHRFZGl0OiQucmVwbGFjZSh0aGlzLmdldENvbXBsZXRpb25SYW5nZSh0KSxpKSxraW5kOlYuRnVuY3Rpb24saW5zZXJ0VGV4dEZvcm1hdDpyIT09aT9ydDp2b2lkIDB9KX1yZXR1cm4gbn1nZXRDb21wbGV0aW9uc0ZvclN0eWxlc2hlZXQoZSl7Y29uc3QgdD10aGlzLnN0eWxlU2hlZXQuZmluZEZpcnN0Q2hpbGRCZWZvcmVPZmZzZXQodGhpcy5vZmZzZXQpO3JldHVybiB0P3QgaW5zdGFuY2VvZiBFdD90aGlzLmdldENvbXBsZXRpb25zRm9yUnVsZVNldCh0LGUpOnQgaW5zdGFuY2VvZiBVaT90aGlzLmdldENvbXBsZXRpb25zRm9yU3VwcG9ydHModCxlKTplOnRoaXMuZ2V0Q29tcGxldGlvbkZvclRvcExldmVsKGUpfWdldENvbXBsZXRpb25Gb3JUb3BMZXZlbChlKXtyZXR1cm4gdGhpcy5jc3NEYXRhTWFuYWdlci5nZXRBdERpcmVjdGl2ZXMoKS5mb3JFYWNoKHQ9PntlLml0ZW1zLnB1c2goe2xhYmVsOnQubmFtZSx0ZXh0RWRpdDokLnJlcGxhY2UodGhpcy5nZXRDb21wbGV0aW9uUmFuZ2UobnVsbCksdC5uYW1lKSxkb2N1bWVudGF0aW9uOmJ0KHQsdGhpcy5kb2VzU3VwcG9ydE1hcmtkb3duKCkpLHRhZ3M6SW4odCk/W1J0LkRlcHJlY2F0ZWRdOltdLGtpbmQ6Vi5LZXl3b3JkfSl9KSx0aGlzLmdldENvbXBsZXRpb25zRm9yU2VsZWN0b3IobnVsbCwhMSxlKSxlfWdldENvbXBsZXRpb25zRm9yUnVsZVNldChlLHQpe2NvbnN0IG49ZS5nZXREZWNsYXJhdGlvbnMoKTtyZXR1cm4gbiYmbi5lbmRzV2l0aCgifSIpJiZ0aGlzLm9mZnNldD49bi5lbmQ/dGhpcy5nZXRDb21wbGV0aW9uRm9yVG9wTGV2ZWwodCk6IW58fHRoaXMub2Zmc2V0PD1uLm9mZnNldD90aGlzLmdldENvbXBsZXRpb25zRm9yU2VsZWN0b3IoZSxlLmlzTmVzdGVkKCksdCk6dGhpcy5nZXRDb21wbGV0aW9uc0ZvckRlY2xhcmF0aW9ucyhlLmdldERlY2xhcmF0aW9ucygpLHQpfWdldENvbXBsZXRpb25zRm9yU2VsZWN0b3IoZSx0LG4pe2NvbnN0IHI9dGhpcy5maW5kSW5Ob2RlUGF0aChiLlBzZXVkb1NlbGVjdG9yLGIuSWRlbnRpZmllclNlbGVjdG9yLGIuQ2xhc3NTZWxlY3RvcixiLkVsZW1lbnROYW1lU2VsZWN0b3IpO2lmKCFyJiZ0aGlzLmhhc0NoYXJhY3RlckF0UG9zaXRpb24odGhpcy5vZmZzZXQtdGhpcy5jdXJyZW50V29yZC5sZW5ndGgtMSwiOiIpJiYodGhpcy5jdXJyZW50V29yZD0iOiIrdGhpcy5jdXJyZW50V29yZCx0aGlzLmhhc0NoYXJhY3RlckF0UG9zaXRpb24odGhpcy5vZmZzZXQtdGhpcy5jdXJyZW50V29yZC5sZW5ndGgtMSwiOiIpJiYodGhpcy5jdXJyZW50V29yZD0iOiIrdGhpcy5jdXJyZW50V29yZCksdGhpcy5kZWZhdWx0UmVwbGFjZVJhbmdlPVguY3JlYXRlKHhlLmNyZWF0ZSh0aGlzLnBvc2l0aW9uLmxpbmUsdGhpcy5wb3NpdGlvbi5jaGFyYWN0ZXItdGhpcy5jdXJyZW50V29yZC5sZW5ndGgpLHRoaXMucG9zaXRpb24pKSx0aGlzLmNzc0RhdGFNYW5hZ2VyLmdldFBzZXVkb0NsYXNzZXMoKS5mb3JFYWNoKG89Pntjb25zdCBjPVp0KG8ubmFtZSksZD17bGFiZWw6by5uYW1lLHRleHRFZGl0OiQucmVwbGFjZSh0aGlzLmdldENvbXBsZXRpb25SYW5nZShyKSxjKSxkb2N1bWVudGF0aW9uOmJ0KG8sdGhpcy5kb2VzU3VwcG9ydE1hcmtkb3duKCkpLHRhZ3M6SW4obyk/W1J0LkRlcHJlY2F0ZWRdOltdLGtpbmQ6Vi5GdW5jdGlvbixpbnNlcnRUZXh0Rm9ybWF0Om8ubmFtZSE9PWM/cnQ6dm9pZCAwfTtwZShvLm5hbWUsIjotIikmJihkLnNvcnRUZXh0PUhlLlZlbmRvclByZWZpeGVkKSxuLml0ZW1zLnB1c2goZCl9KSx0aGlzLmNzc0RhdGFNYW5hZ2VyLmdldFBzZXVkb0VsZW1lbnRzKCkuZm9yRWFjaChvPT57Y29uc3QgYz1adChvLm5hbWUpLGQ9e2xhYmVsOm8ubmFtZSx0ZXh0RWRpdDokLnJlcGxhY2UodGhpcy5nZXRDb21wbGV0aW9uUmFuZ2UociksYyksZG9jdW1lbnRhdGlvbjpidChvLHRoaXMuZG9lc1N1cHBvcnRNYXJrZG93bigpKSx0YWdzOkluKG8pP1tSdC5EZXByZWNhdGVkXTpbXSxraW5kOlYuRnVuY3Rpb24saW5zZXJ0VGV4dEZvcm1hdDpvLm5hbWUhPT1jP3J0OnZvaWQgMH07cGUoby5uYW1lLCI6Oi0iKSYmKGQuc29ydFRleHQ9SGUuVmVuZG9yUHJlZml4ZWQpLG4uaXRlbXMucHVzaChkKX0pLCF0KXtmb3IoY29uc3QgbyBvZiBDbSluLml0ZW1zLnB1c2goe2xhYmVsOm8sdGV4dEVkaXQ6JC5yZXBsYWNlKHRoaXMuZ2V0Q29tcGxldGlvblJhbmdlKHIpLG8pLGtpbmQ6Vi5LZXl3b3JkfSk7Zm9yKGNvbnN0IG8gb2YgX20pbi5pdGVtcy5wdXNoKHtsYWJlbDpvLHRleHRFZGl0OiQucmVwbGFjZSh0aGlzLmdldENvbXBsZXRpb25SYW5nZShyKSxvKSxraW5kOlYuS2V5d29yZH0pfWNvbnN0IGE9e307YVt0aGlzLmN1cnJlbnRXb3JkXT0hMDtjb25zdCBsPXRoaXMudGV4dERvY3VtZW50LmdldFRleHQoKTtpZih0aGlzLnN0eWxlU2hlZXQuYWNjZXB0KG89PntpZihvLnR5cGU9PT1iLlNpbXBsZVNlbGVjdG9yJiZvLmxlbmd0aD4wKXtjb25zdCBjPWwuc3Vic3RyKG8ub2Zmc2V0LG8ubGVuZ3RoKTtyZXR1cm4gYy5jaGFyQXQoMCk9PT0iLiImJiFhW2NdJiYoYVtjXT0hMCxuLml0ZW1zLnB1c2goe2xhYmVsOmMsdGV4dEVkaXQ6JC5yZXBsYWNlKHRoaXMuZ2V0Q29tcGxldGlvblJhbmdlKHIpLGMpLGtpbmQ6Vi5LZXl3b3JkfSkpLCExfXJldHVybiEwfSksZSYmZS5pc05lc3RlZCgpKXtjb25zdCBvPWUuZ2V0U2VsZWN0b3JzKCkuZmluZEZpcnN0Q2hpbGRCZWZvcmVPZmZzZXQodGhpcy5vZmZzZXQpO28mJmUuZ2V0U2VsZWN0b3JzKCkuZ2V0Q2hpbGRyZW4oKS5pbmRleE9mKG8pPT09MCYmdGhpcy5nZXRQcm9wZXJ0eVByb3Bvc2FscyhudWxsLG4pfXJldHVybiBufWdldENvbXBsZXRpb25zRm9yRGVjbGFyYXRpb25zKGUsdCl7aWYoIWV8fHRoaXMub2Zmc2V0PT09ZS5vZmZzZXQpcmV0dXJuIHQ7Y29uc3Qgbj1lLmZpbmRGaXJzdENoaWxkQmVmb3JlT2Zmc2V0KHRoaXMub2Zmc2V0KTtpZighbilyZXR1cm4gdGhpcy5nZXRDb21wbGV0aW9uc0ZvckRlY2xhcmF0aW9uUHJvcGVydHkobnVsbCx0KTtpZihuIGluc3RhbmNlb2YgUGkpe2NvbnN0IHI9bjtpZighTGUoci5jb2xvblBvc2l0aW9uKXx8dGhpcy5vZmZzZXQ8PXIuY29sb25Qb3NpdGlvbilyZXR1cm4gdGhpcy5nZXRDb21wbGV0aW9uc0ZvckRlY2xhcmF0aW9uUHJvcGVydHkocix0KTtpZihMZShyLnNlbWljb2xvblBvc2l0aW9uKSYmci5zZW1pY29sb25Qb3NpdGlvbjx0aGlzLm9mZnNldClyZXR1cm4gdGhpcy5vZmZzZXQ9PT1yLnNlbWljb2xvblBvc2l0aW9uKzE/dDp0aGlzLmdldENvbXBsZXRpb25zRm9yRGVjbGFyYXRpb25Qcm9wZXJ0eShudWxsLHQpO2lmKHIgaW5zdGFuY2VvZiBxZSlyZXR1cm4gdGhpcy5nZXRDb21wbGV0aW9uc0ZvckRlY2xhcmF0aW9uVmFsdWUocix0KX1lbHNlIG4gaW5zdGFuY2VvZiBFbj90aGlzLmdldENvbXBsZXRpb25zRm9yRXh0ZW5kc1JlZmVyZW5jZShuLG51bGwsdCk6dGhpcy5jdXJyZW50V29yZCYmdGhpcy5jdXJyZW50V29yZFswXT09PSJAIj90aGlzLmdldENvbXBsZXRpb25zRm9yRGVjbGFyYXRpb25Qcm9wZXJ0eShudWxsLHQpOm4gaW5zdGFuY2VvZiBFdCYmdGhpcy5nZXRDb21wbGV0aW9uc0ZvckRlY2xhcmF0aW9uUHJvcGVydHkobnVsbCx0KTtyZXR1cm4gdH1nZXRDb21wbGV0aW9uc0ZvclZhcmlhYmxlRGVjbGFyYXRpb24oZSx0KXtyZXR1cm4gdGhpcy5vZmZzZXQmJkxlKGUuY29sb25Qb3NpdGlvbikmJnRoaXMub2Zmc2V0PmUuY29sb25Qb3NpdGlvbiYmdGhpcy5nZXRWYXJpYWJsZVByb3Bvc2FscyhlLmdldFZhbHVlKCl8fG51bGwsdCksdH1nZXRDb21wbGV0aW9uc0ZvckV4cHJlc3Npb24oZSx0KXtjb25zdCBuPWUuZ2V0UGFyZW50KCk7aWYobiBpbnN0YW5jZW9mIFh0KXJldHVybiB0aGlzLmdldENvbXBsZXRpb25zRm9yRnVuY3Rpb25Bcmd1bWVudChuLG4uZ2V0UGFyZW50KCksdCksdDtjb25zdCByPWUuZmluZFBhcmVudChiLkRlY2xhcmF0aW9uKTtpZighcilyZXR1cm4gdGhpcy5nZXRUZXJtUHJvcG9zYWxzKHZvaWQgMCxudWxsLHQpLHQ7Y29uc3QgaT1lLmZpbmRDaGlsZEF0T2Zmc2V0KHRoaXMub2Zmc2V0LCEwKTtyZXR1cm4gaT9pIGluc3RhbmNlb2YgQml8fGkgaW5zdGFuY2VvZiBNZT90aGlzLmdldENvbXBsZXRpb25zRm9yRGVjbGFyYXRpb25WYWx1ZShyLHQpOnQ6dGhpcy5nZXRDb21wbGV0aW9uc0ZvckRlY2xhcmF0aW9uVmFsdWUocix0KX1nZXRDb21wbGV0aW9uc0ZvckZ1bmN0aW9uQXJndW1lbnQoZSx0LG4pe2NvbnN0IHI9dC5nZXRJZGVudGlmaWVyKCk7cmV0dXJuIHImJnIubWF0Y2hlcygidmFyIikmJighdC5nZXRBcmd1bWVudHMoKS5oYXNDaGlsZHJlbigpfHx0LmdldEFyZ3VtZW50cygpLmdldENoaWxkKDApPT09ZSkmJnRoaXMuZ2V0VmFyaWFibGVQcm9wb3NhbHNGb3JDU1NWYXJGdW5jdGlvbihuKSxufWdldENvbXBsZXRpb25zRm9yRnVuY3Rpb25EZWNsYXJhdGlvbihlLHQpe2NvbnN0IG49ZS5nZXREZWNsYXJhdGlvbnMoKTtyZXR1cm4gbiYmdGhpcy5vZmZzZXQ+bi5vZmZzZXQmJnRoaXMub2Zmc2V0PG4uZW5kJiZ0aGlzLmdldFRlcm1Qcm9wb3NhbHModm9pZCAwLG51bGwsdCksdH1nZXRDb21wbGV0aW9uc0Zvck1peGluUmVmZXJlbmNlKGUsdCl7Y29uc3Qgbj10aGlzLmdldFN5bWJvbENvbnRleHQoKS5maW5kU3ltYm9sc0F0T2Zmc2V0KHRoaXMub2Zmc2V0LEouTWl4aW4pO2Zvcihjb25zdCBpIG9mIG4paS5ub2RlIGluc3RhbmNlb2YgRm4mJnQuaXRlbXMucHVzaCh0aGlzLm1ha2VUZXJtUHJvcG9zYWwoaSxpLm5vZGUuZ2V0UGFyYW1ldGVycygpLG51bGwpKTtjb25zdCByPWUuZ2V0SWRlbnRpZmllcigpfHxudWxsO3JldHVybiB0aGlzLmNvbXBsZXRpb25QYXJ0aWNpcGFudHMuZm9yRWFjaChpPT57aS5vbkNzc01peGluUmVmZXJlbmNlJiZpLm9uQ3NzTWl4aW5SZWZlcmVuY2Uoe21peGluTmFtZTp0aGlzLmN1cnJlbnRXb3JkLHJhbmdlOnRoaXMuZ2V0Q29tcGxldGlvblJhbmdlKHIpfSl9KSx0fWdldFRlcm1Qcm9wb3NhbHMoZSx0LG4pe2NvbnN0IHI9dGhpcy5nZXRTeW1ib2xDb250ZXh0KCkuZmluZFN5bWJvbHNBdE9mZnNldCh0aGlzLm9mZnNldCxKLkZ1bmN0aW9uKTtmb3IoY29uc3QgaSBvZiByKWkubm9kZSBpbnN0YW5jZW9mIGNyJiZuLml0ZW1zLnB1c2godGhpcy5tYWtlVGVybVByb3Bvc2FsKGksaS5ub2RlLmdldFBhcmFtZXRlcnMoKSx0KSk7cmV0dXJuIG59bWFrZVRlcm1Qcm9wb3NhbChlLHQsbil7ZS5ub2RlO2NvbnN0IHI9dC5nZXRDaGlsZHJlbigpLm1hcChzPT5zIGluc3RhbmNlb2YgbHI/cy5nZXROYW1lKCk6cy5nZXRUZXh0KCkpLGk9ZS5uYW1lKyIoIityLm1hcCgocyxhKT0+IiR7IisoYSsxKSsiOiIrcysifSIpLmpvaW4oIiwgIikrIikiO3JldHVybntsYWJlbDplLm5hbWUsZGV0YWlsOmUubmFtZSsiKCIrci5qb2luKCIsICIpKyIpIix0ZXh0RWRpdDokLnJlcGxhY2UodGhpcy5nZXRDb21wbGV0aW9uUmFuZ2UobiksaSksaW5zZXJ0VGV4dEZvcm1hdDpydCxraW5kOlYuRnVuY3Rpb24sc29ydFRleHQ6SGUuVGVybX19Z2V0Q29tcGxldGlvbnNGb3JTdXBwb3J0c0NvbmRpdGlvbihlLHQpe2NvbnN0IG49ZS5maW5kRmlyc3RDaGlsZEJlZm9yZU9mZnNldCh0aGlzLm9mZnNldCk7aWYobil7aWYobiBpbnN0YW5jZW9mIHFlKXJldHVybiFMZShuLmNvbG9uUG9zaXRpb24pfHx0aGlzLm9mZnNldDw9bi5jb2xvblBvc2l0aW9uP3RoaXMuZ2V0Q29tcGxldGlvbnNGb3JEZWNsYXJhdGlvblByb3BlcnR5KG4sdCk6dGhpcy5nZXRDb21wbGV0aW9uc0ZvckRlY2xhcmF0aW9uVmFsdWUobix0KTtpZihuIGluc3RhbmNlb2Yga24pcmV0dXJuIHRoaXMuZ2V0Q29tcGxldGlvbnNGb3JTdXBwb3J0c0NvbmRpdGlvbihuLHQpfXJldHVybiBMZShlLmxQYXJlbnQpJiZ0aGlzLm9mZnNldD5lLmxQYXJlbnQmJighTGUoZS5yUGFyZW50KXx8dGhpcy5vZmZzZXQ8PWUuclBhcmVudCk/dGhpcy5nZXRDb21wbGV0aW9uc0ZvckRlY2xhcmF0aW9uUHJvcGVydHkobnVsbCx0KTp0fWdldENvbXBsZXRpb25zRm9yU3VwcG9ydHMoZSx0KXtjb25zdCBuPWUuZ2V0RGVjbGFyYXRpb25zKCk7aWYoIW58fHRoaXMub2Zmc2V0PD1uLm9mZnNldCl7Y29uc3QgaT1lLmZpbmRGaXJzdENoaWxkQmVmb3JlT2Zmc2V0KHRoaXMub2Zmc2V0KTtyZXR1cm4gaSBpbnN0YW5jZW9mIGtuP3RoaXMuZ2V0Q29tcGxldGlvbnNGb3JTdXBwb3J0c0NvbmRpdGlvbihpLHQpOnR9cmV0dXJuIHRoaXMuZ2V0Q29tcGxldGlvbkZvclRvcExldmVsKHQpfWdldENvbXBsZXRpb25zRm9yRXh0ZW5kc1JlZmVyZW5jZShlLHQsbil7cmV0dXJuIG59Z2V0Q29tcGxldGlvbkZvclVyaUxpdGVyYWxWYWx1ZShlLHQpe2xldCBuLHIsaTtpZihlLmhhc0NoaWxkcmVuKCkpe2NvbnN0IHM9ZS5nZXRDaGlsZCgwKTtuPXMuZ2V0VGV4dCgpLHI9dGhpcy5wb3NpdGlvbixpPXRoaXMuZ2V0Q29tcGxldGlvblJhbmdlKHMpfWVsc2V7bj0iIixyPXRoaXMucG9zaXRpb247Y29uc3Qgcz10aGlzLnRleHREb2N1bWVudC5wb3NpdGlvbkF0KGUub2Zmc2V0KzQpO2k9WC5jcmVhdGUocyxzKX1yZXR1cm4gdGhpcy5jb21wbGV0aW9uUGFydGljaXBhbnRzLmZvckVhY2gocz0+e3Mub25Dc3NVUklMaXRlcmFsVmFsdWUmJnMub25Dc3NVUklMaXRlcmFsVmFsdWUoe3VyaVZhbHVlOm4scG9zaXRpb246cixyYW5nZTppfSl9KSx0fWdldENvbXBsZXRpb25Gb3JJbXBvcnRQYXRoKGUsdCl7cmV0dXJuIHRoaXMuY29tcGxldGlvblBhcnRpY2lwYW50cy5mb3JFYWNoKG49PntuLm9uQ3NzSW1wb3J0UGF0aCYmbi5vbkNzc0ltcG9ydFBhdGgoe3BhdGhWYWx1ZTplLmdldFRleHQoKSxwb3NpdGlvbjp0aGlzLnBvc2l0aW9uLHJhbmdlOnRoaXMuZ2V0Q29tcGxldGlvblJhbmdlKGUpfSl9KSx0fWhhc0NoYXJhY3RlckF0UG9zaXRpb24oZSx0KXtjb25zdCBuPXRoaXMudGV4dERvY3VtZW50LmdldFRleHQoKTtyZXR1cm4gZT49MCYmZTxuLmxlbmd0aCYmbi5jaGFyQXQoZSk9PT10fWRvZXNTdXBwb3J0TWFya2Rvd24oKXtpZighTGUodGhpcy5zdXBwb3J0c01hcmtkb3duKSl7aWYoIUxlKHRoaXMubHNPcHRpb25zLmNsaWVudENhcGFiaWxpdGllcykpcmV0dXJuIHRoaXMuc3VwcG9ydHNNYXJrZG93bj0hMCx0aGlzLnN1cHBvcnRzTWFya2Rvd247Y29uc3QgZT10aGlzLmxzT3B0aW9ucy5jbGllbnRDYXBhYmlsaXRpZXMudGV4dERvY3VtZW50Py5jb21wbGV0aW9uPy5jb21wbGV0aW9uSXRlbT8uZG9jdW1lbnRhdGlvbkZvcm1hdDt0aGlzLnN1cHBvcnRzTWFya2Rvd249QXJyYXkuaXNBcnJheShlKSYmZS5pbmRleE9mKGplLk1hcmtkb3duKSE9PS0xfXJldHVybiB0aGlzLnN1cHBvcnRzTWFya2Rvd259fTtmdW5jdGlvbiBJbihlKXtyZXR1cm4hIShlLnN0YXR1cyYmKGUuc3RhdHVzPT09Im5vbnN0YW5kYXJkInx8ZS5zdGF0dXM9PT0ib2Jzb2xldGUiKSl9dmFyIG1zPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5lbnRyaWVzPXt9fWFkZChlKXt0aGlzLmVudHJpZXNbZV09ITB9cmVtb3ZlKGUpe2RlbGV0ZSB0aGlzLmVudHJpZXNbZV19Z2V0RW50cmllcygpe3JldHVybiBPYmplY3Qua2V5cyh0aGlzLmVudHJpZXMpfX07ZnVuY3Rpb24gWnQoZSl7cmV0dXJuIGUucmVwbGFjZSgvXChcKSQvLCIoJDEpIil9ZnVuY3Rpb24gTG0oZSx0KXtjb25zdCBuPXQuZ2V0RnVsbFByb3BlcnR5TmFtZSgpLHI9bmV3IG1zO2Z1bmN0aW9uIGkobCl7cmV0dXJuKGwgaW5zdGFuY2VvZiBNZXx8bCBpbnN0YW5jZW9mIEJpfHxsIGluc3RhbmNlb2YgJGkpJiZyLmFkZChsLmdldFRleHQoKSksITB9ZnVuY3Rpb24gcyhsKXtjb25zdCBvPWwuZ2V0RnVsbFByb3BlcnR5TmFtZSgpO3JldHVybiBuPT09b31mdW5jdGlvbiBhKGwpe2lmKGwgaW5zdGFuY2VvZiBxZSYmbCE9PXQmJnMobCkpe2NvbnN0IG89bC5nZXRWYWx1ZSgpO28mJm8uYWNjZXB0KGkpfXJldHVybiEwfXJldHVybiBlLmFjY2VwdChhKSxyfXZhciB6bT1jbGFzc3tjb25zdHJ1Y3RvcihlLHQpe3RoaXMuZW50cmllcz1lLHRoaXMuY3VycmVudE9mZnNldD10fXZpc2l0Tm9kZShlKXtyZXR1cm4oZSBpbnN0YW5jZW9mICRpfHxlIGluc3RhbmNlb2YgX24mJmZtKGUpKSYmKHRoaXMuY3VycmVudE9mZnNldDxlLm9mZnNldHx8ZS5lbmQ8dGhpcy5jdXJyZW50T2Zmc2V0KSYmdGhpcy5lbnRyaWVzLmFkZChlLmdldFRleHQoKSksITB9fSxQbT1jbGFzc3tjb25zdHJ1Y3RvcihlLHQpe3RoaXMuZW50cmllcz1lLHRoaXMuY3VycmVudE9mZnNldD10fXZpc2l0Tm9kZShlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIE1lJiZlLmlzQ3VzdG9tUHJvcGVydHkmJih0aGlzLmN1cnJlbnRPZmZzZXQ8ZS5vZmZzZXR8fGUuZW5kPHRoaXMuY3VycmVudE9mZnNldCkmJnRoaXMuZW50cmllcy5hZGQoZS5nZXRUZXh0KCkpLCEwfX07ZnVuY3Rpb24gVG0oZSx0KXtsZXQgbj10LTE7Y29uc3Qgcj1lLmdldFRleHQoKTtmb3IoO24+PTAmJmAgCQpcciI6e1soKV19LCo+K2AuaW5kZXhPZihyLmNoYXJBdChuKSk9PT0tMTspbi0tO3JldHVybiByLnN1YnN0cmluZyhuKzEsdCl9dmFyIGZzPWNsYXNzIFVze2NvbnN0cnVjdG9yKCl7dGhpcy5wYXJlbnQ9bnVsbCx0aGlzLmNoaWxkcmVuPW51bGwsdGhpcy5hdHRyaWJ1dGVzPW51bGx9ZmluZEF0dHJpYnV0ZSh0KXtpZih0aGlzLmF0dHJpYnV0ZXMpe2Zvcihjb25zdCBuIG9mIHRoaXMuYXR0cmlidXRlcylpZihuLm5hbWU9PT10KXJldHVybiBuLnZhbHVlfXJldHVybiBudWxsfWFkZENoaWxkKHQpe3QgaW5zdGFuY2VvZiBVcyYmKHQucGFyZW50PXRoaXMpLHRoaXMuY2hpbGRyZW58fCh0aGlzLmNoaWxkcmVuPVtdKSx0aGlzLmNoaWxkcmVuLnB1c2godCl9YXBwZW5kKHQpe2lmKHRoaXMuYXR0cmlidXRlcyl7Y29uc3Qgbj10aGlzLmF0dHJpYnV0ZXNbdGhpcy5hdHRyaWJ1dGVzLmxlbmd0aC0xXTtuLnZhbHVlPW4udmFsdWUrdH19cHJlcGVuZCh0KXtpZih0aGlzLmF0dHJpYnV0ZXMpe2NvbnN0IG49dGhpcy5hdHRyaWJ1dGVzWzBdO24udmFsdWU9dCtuLnZhbHVlfX1maW5kUm9vdCgpe2xldCB0PXRoaXM7Zm9yKDt0LnBhcmVudCYmISh0LnBhcmVudCBpbnN0YW5jZW9mIGVuKTspdD10LnBhcmVudDtyZXR1cm4gdH1yZW1vdmVDaGlsZCh0KXtpZih0aGlzLmNoaWxkcmVuKXtjb25zdCBuPXRoaXMuY2hpbGRyZW4uaW5kZXhPZih0KTtpZihuIT09LTEpcmV0dXJuIHRoaXMuY2hpbGRyZW4uc3BsaWNlKG4sMSksITB9cmV0dXJuITF9YWRkQXR0cih0LG4pe3RoaXMuYXR0cmlidXRlc3x8KHRoaXMuYXR0cmlidXRlcz1bXSk7Zm9yKGNvbnN0IHIgb2YgdGhpcy5hdHRyaWJ1dGVzKWlmKHIubmFtZT09PXQpe3IudmFsdWUrPSIgIituO3JldHVybn10aGlzLmF0dHJpYnV0ZXMucHVzaCh7bmFtZTp0LHZhbHVlOm59KX1jbG9uZSh0PSEwKXtjb25zdCBuPW5ldyBVcztpZih0aGlzLmF0dHJpYnV0ZXMpe24uYXR0cmlidXRlcz1bXTtmb3IoY29uc3QgciBvZiB0aGlzLmF0dHJpYnV0ZXMpbi5hZGRBdHRyKHIubmFtZSxyLnZhbHVlKX1pZih0JiZ0aGlzLmNoaWxkcmVuKXtuLmNoaWxkcmVuPVtdO2ZvcihsZXQgcj0wO3I8dGhpcy5jaGlsZHJlbi5sZW5ndGg7cisrKW4uYWRkQ2hpbGQodGhpcy5jaGlsZHJlbltyXS5jbG9uZSgpKX1yZXR1cm4gbn1jbG9uZVdpdGhQYXJlbnQoKXtjb25zdCB0PXRoaXMuY2xvbmUoITEpO3JldHVybiB0aGlzLnBhcmVudCYmISh0aGlzLnBhcmVudCBpbnN0YW5jZW9mIGVuKSYmdGhpcy5wYXJlbnQuY2xvbmVXaXRoUGFyZW50KCkuYWRkQ2hpbGQodCksdH19LGVuPWNsYXNzIGV4dGVuZHMgZnN7fSxncz1jbGFzcyBleHRlbmRzIGZze2NvbnN0cnVjdG9yKGUpe3N1cGVyKCksdGhpcy5hZGRBdHRyKCJuYW1lIixlKX19LFljPWNsYXNze2NvbnN0cnVjdG9yKGUpe3RoaXMucXVvdGU9ZSx0aGlzLnJlc3VsdD1bXX1wcmludChlLHQpe3RoaXMucmVzdWx0PVtdLGUgaW5zdGFuY2VvZiBlbj9lLmNoaWxkcmVuJiZ0aGlzLmRvUHJpbnQoZS5jaGlsZHJlbiwwKTp0aGlzLmRvUHJpbnQoW2VdLDApO2xldCBuO3JldHVybiB0P249YCR7dC50ZXh0fQog4oCmIGArdGhpcy5yZXN1bHQuam9pbihgCmApOm49dGhpcy5yZXN1bHQuam9pbihgCmApLFt7bGFuZ3VhZ2U6Imh0bWwiLHZhbHVlOm59XX1kb1ByaW50KGUsdCl7Zm9yKGNvbnN0IG4gb2YgZSl0aGlzLmRvUHJpbnRFbGVtZW50KG4sdCksbi5jaGlsZHJlbiYmdGhpcy5kb1ByaW50KG4uY2hpbGRyZW4sdCsxKX13cml0ZUxpbmUoZSx0KXtjb25zdCBuPW5ldyBBcnJheShlKzEpLmpvaW4oIiAgIik7dGhpcy5yZXN1bHQucHVzaChuK3QpfWRvUHJpbnRFbGVtZW50KGUsdCl7Y29uc3Qgbj1lLmZpbmRBdHRyaWJ1dGUoIm5hbWUiKTtpZihlIGluc3RhbmNlb2YgZ3N8fG49PT0i4oCmIil7dGhpcy53cml0ZUxpbmUodCxuKTtyZXR1cm59Y29uc3Qgcj1bIjwiXTtpZihuP3IucHVzaChuKTpyLnB1c2goImVsZW1lbnQiKSxlLmF0dHJpYnV0ZXMpe2Zvcihjb25zdCBpIG9mIGUuYXR0cmlidXRlcylpZihpLm5hbWUhPT0ibmFtZSIpe3IucHVzaCgiICIpLHIucHVzaChpLm5hbWUpO2NvbnN0IHM9aS52YWx1ZTtzJiYoci5wdXNoKCI9Iiksci5wdXNoKGl0LmVuc3VyZShzLHRoaXMucXVvdGUpKSl9fXIucHVzaCgiPiIpLHRoaXMud3JpdGVMaW5lKHQsci5qb2luKCIiKSl9fSxpdDsoZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChyLGkpe3JldHVybiBpK24ocikraX1lLmVuc3VyZT10O2Z1bmN0aW9uIG4ocil7Y29uc3QgaT1yLm1hdGNoKC9eWyciXSguKilbIiddJC8pO3JldHVybiBpP2lbMV06cn1lLnJlbW92ZT1ufSkoaXR8fChpdD17fSkpO3ZhciBicz1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMuaWQ9MCx0aGlzLmF0dHI9MCx0aGlzLnRhZz0wfX07ZnVuY3Rpb24gUWMoZSx0KXtsZXQgbj1uZXcgZnM7Zm9yKGNvbnN0IHIgb2YgZS5nZXRDaGlsZHJlbigpKXN3aXRjaChyLnR5cGUpe2Nhc2UgYi5TZWxlY3RvckNvbWJpbmF0b3I6aWYodCl7Y29uc3QgbD1yLmdldFRleHQoKS5zcGxpdCgiJiIpO2lmKGwubGVuZ3RoPT09MSl7bi5hZGRBdHRyKCJuYW1lIixsWzBdKTticmVha31uPXQuY2xvbmVXaXRoUGFyZW50KCksbFswXSYmbi5maW5kUm9vdCgpLnByZXBlbmQobFswXSk7Zm9yKGxldCBvPTE7bzxsLmxlbmd0aDtvKyspe2lmKG8+MSl7Y29uc3QgYz10LmNsb25lV2l0aFBhcmVudCgpO24uYWRkQ2hpbGQoYy5maW5kUm9vdCgpKSxuPWN9bi5hcHBlbmQobFtvXSl9fWJyZWFrO2Nhc2UgYi5TZWxlY3RvclBsYWNlaG9sZGVyOmlmKHIubWF0Y2hlcygiQGF0LXJvb3QiKSlyZXR1cm4gbjtjYXNlIGIuRWxlbWVudE5hbWVTZWxlY3Rvcjpjb25zdCBpPXIuZ2V0VGV4dCgpO24uYWRkQXR0cigibmFtZSIsaT09PSIqIj8iZWxlbWVudCI6emUoaSkpO2JyZWFrO2Nhc2UgYi5DbGFzc1NlbGVjdG9yOm4uYWRkQXR0cigiY2xhc3MiLHplKHIuZ2V0VGV4dCgpLnN1YnN0cmluZygxKSkpO2JyZWFrO2Nhc2UgYi5JZGVudGlmaWVyU2VsZWN0b3I6bi5hZGRBdHRyKCJpZCIsemUoci5nZXRUZXh0KCkuc3Vic3RyaW5nKDEpKSk7YnJlYWs7Y2FzZSBiLk1peGluRGVjbGFyYXRpb246bi5hZGRBdHRyKCJjbGFzcyIsci5nZXROYW1lKCkpO2JyZWFrO2Nhc2UgYi5Qc2V1ZG9TZWxlY3RvcjpuLmFkZEF0dHIoemUoci5nZXRUZXh0KCkpLCIiKTticmVhaztjYXNlIGIuQXR0cmlidXRlU2VsZWN0b3I6Y29uc3Qgcz1yLGE9cy5nZXRJZGVudGlmaWVyKCk7aWYoYSl7Y29uc3QgbD1zLmdldFZhbHVlKCksbz1zLmdldE9wZXJhdG9yKCk7bGV0IGM7aWYobCYmbylzd2l0Y2goemUoby5nZXRUZXh0KCkpKXtjYXNlInw9IjpjPWAke2l0LnJlbW92ZSh6ZShsLmdldFRleHQoKSkpfS3igKZgO2JyZWFrO2Nhc2UiXj0iOmM9YCR7aXQucmVtb3ZlKHplKGwuZ2V0VGV4dCgpKSl94oCmYDticmVhaztjYXNlIiQ9IjpjPWDigKYke2l0LnJlbW92ZSh6ZShsLmdldFRleHQoKSkpfWA7YnJlYWs7Y2FzZSJ+PSI6Yz1gIOKApiAke2l0LnJlbW92ZSh6ZShsLmdldFRleHQoKSkpfSDigKYgYDticmVhaztjYXNlIio9IjpjPWDigKYke2l0LnJlbW92ZSh6ZShsLmdldFRleHQoKSkpfeKApmA7YnJlYWs7ZGVmYXVsdDpjPWl0LnJlbW92ZSh6ZShsLmdldFRleHQoKSkpO2JyZWFrfW4uYWRkQXR0cih6ZShhLmdldFRleHQoKSksYyl9YnJlYWt9cmV0dXJuIG59ZnVuY3Rpb24gemUoZSl7Y29uc3QgdD1uZXcgU247dC5zZXRTb3VyY2UoZSk7Y29uc3Qgbj10LnNjYW5VbnF1b3RlZFN0cmluZygpO3JldHVybiBuP24udGV4dDplfXZhciBPbT1jbGFzc3tjb25zdHJ1Y3RvcihlKXt0aGlzLmNzc0RhdGFNYW5hZ2VyPWV9c2VsZWN0b3JUb01hcmtlZFN0cmluZyhlLHQpe2NvbnN0IG49Vm0oZSk7aWYobil7Y29uc3Qgcj1uZXcgWWMoJyInKS5wcmludChuLHQpO3JldHVybiByLnB1c2godGhpcy5zZWxlY3RvclRvU3BlY2lmaWNpdHlNYXJrZWRTdHJpbmcoZSkpLHJ9ZWxzZSByZXR1cm5bXX1zaW1wbGVTZWxlY3RvclRvTWFya2VkU3RyaW5nKGUpe2NvbnN0IHQ9UWMoZSksbj1uZXcgWWMoJyInKS5wcmludCh0KTtyZXR1cm4gbi5wdXNoKHRoaXMuc2VsZWN0b3JUb1NwZWNpZmljaXR5TWFya2VkU3RyaW5nKGUpKSxufWlzUHNldWRvRWxlbWVudElkZW50aWZpZXIoZSl7Y29uc3QgdD1lLm1hdGNoKC9eOjo/KFtcdy1dKykvKTtyZXR1cm4gdD8hIXRoaXMuY3NzRGF0YU1hbmFnZXIuZ2V0UHNldWRvRWxlbWVudCgiOjoiK3RbMV0pOiExfXNlbGVjdG9yVG9TcGVjaWZpY2l0eU1hcmtlZFN0cmluZyhlKXtjb25zdCB0PWk9Pntjb25zdCBzPW5ldyBicztsZXQgYT1uZXcgYnM7Zm9yKGNvbnN0IGwgb2YgaSlmb3IoY29uc3QgbyBvZiBsLmdldENoaWxkcmVuKCkpe2NvbnN0IGM9bihvKTtpZihjLmlkPmEuaWQpe2E9Yztjb250aW51ZX1lbHNlIGlmKGMuaWQ8YS5pZCljb250aW51ZTtpZihjLmF0dHI+YS5hdHRyKXthPWM7Y29udGludWV9ZWxzZSBpZihjLmF0dHI8YS5hdHRyKWNvbnRpbnVlO2lmKGMudGFnPmEudGFnKXthPWM7Y29udGludWV9fXJldHVybiBzLmlkKz1hLmlkLHMuYXR0cis9YS5hdHRyLHMudGFnKz1hLnRhZyxzfSxuPWk9Pntjb25zdCBzPW5ldyBicztlOmZvcihjb25zdCBhIG9mIGkuZ2V0Q2hpbGRyZW4oKSl7c3dpdGNoKGEudHlwZSl7Y2FzZSBiLklkZW50aWZpZXJTZWxlY3RvcjpzLmlkKys7YnJlYWs7Y2FzZSBiLkNsYXNzU2VsZWN0b3I6Y2FzZSBiLkF0dHJpYnV0ZVNlbGVjdG9yOnMuYXR0cisrO2JyZWFrO2Nhc2UgYi5FbGVtZW50TmFtZVNlbGVjdG9yOmlmKGEubWF0Y2hlcygiKiIpKWJyZWFrO3MudGFnKys7YnJlYWs7Y2FzZSBiLlBzZXVkb1NlbGVjdG9yOmNvbnN0IGw9YS5nZXRUZXh0KCksbz1hLmdldENoaWxkcmVuKCk7aWYodGhpcy5pc1BzZXVkb0VsZW1lbnRJZGVudGlmaWVyKGwpKXtpZihsLm1hdGNoKC9eOjpzbG90dGVkL2kpJiZvLmxlbmd0aD4wKXtzLnRhZysrO2xldCBjPXQobyk7cy5pZCs9Yy5pZCxzLmF0dHIrPWMuYXR0cixzLnRhZys9Yy50YWc7Y29udGludWUgZX1zLnRhZysrO2NvbnRpbnVlIGV9aWYobC5tYXRjaCgvXjp3aGVyZS9pKSljb250aW51ZSBlO2lmKGwubWF0Y2goL146KD86bm90fGhhc3xpcykvaSkmJm8ubGVuZ3RoPjApe2xldCBjPXQobyk7cy5pZCs9Yy5pZCxzLmF0dHIrPWMuYXR0cixzLnRhZys9Yy50YWc7Y29udGludWUgZX1pZihsLm1hdGNoKC9eOig/Omhvc3R8aG9zdC1jb250ZXh0KS9pKSYmby5sZW5ndGg+MCl7cy5hdHRyKys7bGV0IGM9dChvKTtzLmlkKz1jLmlkLHMuYXR0cis9Yy5hdHRyLHMudGFnKz1jLnRhZztjb250aW51ZSBlfWlmKGwubWF0Y2goL146KD86bnRoLWNoaWxkfG50aC1sYXN0LWNoaWxkKS9pKSYmby5sZW5ndGg+MCl7aWYocy5hdHRyKyssby5sZW5ndGg9PT0zJiZvWzFdLnR5cGU9PT0yMyl7bGV0IG09dChvWzJdLmdldENoaWxkcmVuKCkpO3MuaWQrPW0uaWQscy5hdHRyKz1tLmF0dHIscy50YWcrPW0udGFnO2NvbnRpbnVlIGV9Y29uc3QgYz1uZXcgQ3IsZD1vWzFdLmdldFRleHQoKTtjLnNjYW5uZXIuc2V0U291cmNlKGQpO2NvbnN0IHU9Yy5zY2FubmVyLnNjYW4oKSxmPWMuc2Nhbm5lci5zY2FuKCk7aWYodS50ZXh0PT09Im4ifHx1LnRleHQ9PT0iLW4iJiZmLnRleHQ9PT0ib2YiKXtjb25zdCBtPVtdLHc9ZC5zbGljZShmLm9mZnNldCsyKS5zcGxpdCgiLCIpO2Zvcihjb25zdCBSIG9mIHcpe2NvbnN0IEk9Yy5pbnRlcm5hbFBhcnNlKFIsYy5fcGFyc2VTZWxlY3Rvcik7SSYmbS5wdXNoKEkpfWxldCBrPXQobSk7cy5pZCs9ay5pZCxzLmF0dHIrPWsuYXR0cixzLnRhZys9ay50YWc7Y29udGludWUgZX1jb250aW51ZSBlfXMuYXR0cisrO2NvbnRpbnVlIGV9aWYoYS5nZXRDaGlsZHJlbigpLmxlbmd0aD4wKXtjb25zdCBsPW4oYSk7cy5pZCs9bC5pZCxzLmF0dHIrPWwuYXR0cixzLnRhZys9bC50YWd9fXJldHVybiBzfSxyPW4oZSk7cmV0dXJuYFske2coIlNlbGVjdG9yIFNwZWNpZmljaXR5Iil9XShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvU3BlY2lmaWNpdHkpOiAoJHtyLmlkfSwgJHtyLmF0dHJ9LCAke3IudGFnfSlgfX0sV209Y2xhc3N7Y29uc3RydWN0b3IoZSl7dGhpcy5wcmV2PW51bGwsdGhpcy5lbGVtZW50PWV9cHJvY2Vzc1NlbGVjdG9yKGUpe2xldCB0PW51bGw7aWYoISh0aGlzLmVsZW1lbnQgaW5zdGFuY2VvZiBlbikmJmUuZ2V0Q2hpbGRyZW4oKS5zb21lKG49Pm4uaGFzQ2hpbGRyZW4oKSYmbi5nZXRDaGlsZCgwKS50eXBlPT09Yi5TZWxlY3RvckNvbWJpbmF0b3IpKXtjb25zdCBuPXRoaXMuZWxlbWVudC5maW5kUm9vdCgpO24ucGFyZW50IGluc3RhbmNlb2YgZW4mJih0PXRoaXMuZWxlbWVudCx0aGlzLmVsZW1lbnQ9bi5wYXJlbnQsdGhpcy5lbGVtZW50LnJlbW92ZUNoaWxkKG4pLHRoaXMucHJldj1udWxsKX1mb3IoY29uc3QgbiBvZiBlLmdldENoaWxkcmVuKCkpe2lmKG4gaW5zdGFuY2VvZiBKdCl7aWYodGhpcy5wcmV2IGluc3RhbmNlb2YgSnQpe2NvbnN0IHM9bmV3IGdzKCLigKYiKTt0aGlzLmVsZW1lbnQuYWRkQ2hpbGQocyksdGhpcy5lbGVtZW50PXN9ZWxzZSB0aGlzLnByZXYmJih0aGlzLnByZXYubWF0Y2hlcygiKyIpfHx0aGlzLnByZXYubWF0Y2hlcygifiIpKSYmdGhpcy5lbGVtZW50LnBhcmVudCYmKHRoaXMuZWxlbWVudD10aGlzLmVsZW1lbnQucGFyZW50KTt0aGlzLnByZXYmJnRoaXMucHJldi5tYXRjaGVzKCJ+IikmJnRoaXMuZWxlbWVudC5hZGRDaGlsZChuZXcgZ3MoIuKLriIpKTtjb25zdCByPVFjKG4sdCksaT1yLmZpbmRSb290KCk7dGhpcy5lbGVtZW50LmFkZENoaWxkKGkpLHRoaXMuZWxlbWVudD1yfShuIGluc3RhbmNlb2YgSnR8fG4udHlwZT09PWIuU2VsZWN0b3JDb21iaW5hdG9yUGFyZW50fHxuLnR5cGU9PT1iLlNlbGVjdG9yQ29tYmluYXRvclNoYWRvd1BpZXJjaW5nRGVzY2VuZGFudHx8bi50eXBlPT09Yi5TZWxlY3RvckNvbWJpbmF0b3JTaWJsaW5nfHxuLnR5cGU9PT1iLlNlbGVjdG9yQ29tYmluYXRvckFsbFNpYmxpbmdzKSYmKHRoaXMucHJldj1uKX19fTtmdW5jdGlvbiBVbShlKXtzd2l0Y2goZS50eXBlKXtjYXNlIGIuTWl4aW5EZWNsYXJhdGlvbjpjYXNlIGIuU3R5bGVzaGVldDpyZXR1cm4hMH1yZXR1cm4hMX1mdW5jdGlvbiBWbShlKXtpZihlLm1hdGNoZXMoIkBhdC1yb290IikpcmV0dXJuIG51bGw7Y29uc3QgdD1uZXcgZW4sbj1bXSxyPWUuZ2V0UGFyZW50KCk7aWYociBpbnN0YW5jZW9mIEV0KXtsZXQgcz1yLmdldFBhcmVudCgpO2Zvcig7cyYmIVVtKHMpOyl7aWYocyBpbnN0YW5jZW9mIEV0KXtpZihzLmdldFNlbGVjdG9ycygpLm1hdGNoZXMoIkBhdC1yb290IikpYnJlYWs7bi5wdXNoKHMpfXM9cy5nZXRQYXJlbnQoKX19Y29uc3QgaT1uZXcgV20odCk7Zm9yKGxldCBzPW4ubGVuZ3RoLTE7cz49MDtzLS0pe2NvbnN0IGE9bltzXS5nZXRTZWxlY3RvcnMoKS5nZXRDaGlsZCgwKTthJiZpLnByb2Nlc3NTZWxlY3RvcihhKX1yZXR1cm4gaS5wcm9jZXNzU2VsZWN0b3IoZSksdH12YXIgdnM9Y2xhc3N7Y29uc3RydWN0b3IoZSx0KXt0aGlzLmNsaWVudENhcGFiaWxpdGllcz1lLHRoaXMuY3NzRGF0YU1hbmFnZXI9dCx0aGlzLnNlbGVjdG9yUHJpbnRpbmc9bmV3IE9tKHQpfWNvbmZpZ3VyZShlKXt0aGlzLmRlZmF1bHRTZXR0aW5ncz1lfWRvSG92ZXIoZSx0LG4scj10aGlzLmRlZmF1bHRTZXR0aW5ncyl7ZnVuY3Rpb24gaShjKXtyZXR1cm4gWC5jcmVhdGUoZS5wb3NpdGlvbkF0KGMub2Zmc2V0KSxlLnBvc2l0aW9uQXQoYy5lbmQpKX1jb25zdCBzPWUub2Zmc2V0QXQodCksYT1MaShuLHMpO2xldCBsPW51bGwsbztmb3IobGV0IGM9MDtjPGEubGVuZ3RoO2MrKyl7Y29uc3QgZD1hW2NdO2lmKGQgaW5zdGFuY2VvZiBXaSl7Y29uc3QgdT0vQG1lZGlhW15ce10rL2c7bz17aXNNZWRpYTohMCx0ZXh0OmQuZ2V0VGV4dCgpLm1hdGNoKHUpPy5bMF19fWlmKGQgaW5zdGFuY2VvZiBDbil7bD17Y29udGVudHM6dGhpcy5zZWxlY3RvclByaW50aW5nLnNlbGVjdG9yVG9NYXJrZWRTdHJpbmcoZCxvKSxyYW5nZTppKGQpfTticmVha31pZihkIGluc3RhbmNlb2YgSnQpe3BlKGQuZ2V0VGV4dCgpLCJAIil8fChsPXtjb250ZW50czp0aGlzLnNlbGVjdG9yUHJpbnRpbmcuc2ltcGxlU2VsZWN0b3JUb01hcmtlZFN0cmluZyhkKSxyYW5nZTppKGQpfSk7YnJlYWt9aWYoZCBpbnN0YW5jZW9mIHFlKXtjb25zdCB1PWQuZ2V0RnVsbFByb3BlcnR5TmFtZSgpLGY9dGhpcy5jc3NEYXRhTWFuYWdlci5nZXRQcm9wZXJ0eSh1KTtpZihmKXtjb25zdCBtPWJ0KGYsdGhpcy5kb2VzU3VwcG9ydE1hcmtkb3duKCkscik7bT9sPXtjb250ZW50czptLHJhbmdlOmkoZCl9Omw9bnVsbH1jb250aW51ZX1pZihkIGluc3RhbmNlb2YgUmwpe2NvbnN0IHU9ZC5nZXRUZXh0KCksZj10aGlzLmNzc0RhdGFNYW5hZ2VyLmdldEF0RGlyZWN0aXZlKHUpO2lmKGYpe2NvbnN0IG09YnQoZix0aGlzLmRvZXNTdXBwb3J0TWFya2Rvd24oKSxyKTttP2w9e2NvbnRlbnRzOm0scmFuZ2U6aShkKX06bD1udWxsfWNvbnRpbnVlfWlmKGQgaW5zdGFuY2VvZiBPJiZkLnR5cGU9PT1iLlBzZXVkb1NlbGVjdG9yKXtjb25zdCB1PWQuZ2V0VGV4dCgpLGY9dS5zbGljZSgwLDIpPT09Ijo6Ij90aGlzLmNzc0RhdGFNYW5hZ2VyLmdldFBzZXVkb0VsZW1lbnQodSk6dGhpcy5jc3NEYXRhTWFuYWdlci5nZXRQc2V1ZG9DbGFzcyh1KTtpZihmKXtjb25zdCBtPWJ0KGYsdGhpcy5kb2VzU3VwcG9ydE1hcmtkb3duKCkscik7bT9sPXtjb250ZW50czptLHJhbmdlOmkoZCl9Omw9bnVsbH1jb250aW51ZX19cmV0dXJuIGwmJihsLmNvbnRlbnRzPXRoaXMuY29udmVydENvbnRlbnRzKGwuY29udGVudHMpKSxsfWNvbnZlcnRDb250ZW50cyhlKXtyZXR1cm4gdGhpcy5kb2VzU3VwcG9ydE1hcmtkb3duKCl8fHR5cGVvZiBlPT0ic3RyaW5nIj9lOiJraW5kImluIGU/e2tpbmQ6InBsYWludGV4dCIsdmFsdWU6ZS52YWx1ZX06QXJyYXkuaXNBcnJheShlKT9lLm1hcCh0PT50eXBlb2YgdD09InN0cmluZyI/dDp0LnZhbHVlKTplLnZhbHVlfWRvZXNTdXBwb3J0TWFya2Rvd24oKXtpZighTGUodGhpcy5zdXBwb3J0c01hcmtkb3duKSl7aWYoIUxlKHRoaXMuY2xpZW50Q2FwYWJpbGl0aWVzKSlyZXR1cm4gdGhpcy5zdXBwb3J0c01hcmtkb3duPSEwLHRoaXMuc3VwcG9ydHNNYXJrZG93bjtjb25zdCBlPXRoaXMuY2xpZW50Q2FwYWJpbGl0aWVzLnRleHREb2N1bWVudCYmdGhpcy5jbGllbnRDYXBhYmlsaXRpZXMudGV4dERvY3VtZW50LmhvdmVyO3RoaXMuc3VwcG9ydHNNYXJrZG93bj1lJiZlLmNvbnRlbnRGb3JtYXQmJkFycmF5LmlzQXJyYXkoZS5jb250ZW50Rm9ybWF0KSYmZS5jb250ZW50Rm9ybWF0LmluZGV4T2YoamUuTWFya2Rvd24pIT09LTF9cmV0dXJuIHRoaXMuc3VwcG9ydHNNYXJrZG93bn19LEtjPS9eXHcrOlwvXC8vLFpjPS9eZGF0YTovLHdzPWNsYXNze2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5maWxlU3lzdGVtUHJvdmlkZXI9ZSx0aGlzLnJlc29sdmVNb2R1bGVSZWZlcmVuY2VzPXR9Y29uZmlndXJlKGUpe3RoaXMuZGVmYXVsdFNldHRpbmdzPWV9ZmluZERlZmluaXRpb24oZSx0LG4pe2NvbnN0IHI9bmV3IGNzKG4pLGk9ZS5vZmZzZXRBdCh0KSxzPU1pKG4saSk7aWYoIXMpcmV0dXJuIG51bGw7Y29uc3QgYT1yLmZpbmRTeW1ib2xGcm9tTm9kZShzKTtyZXR1cm4gYT97dXJpOmUudXJpLHJhbmdlOnN0KGEubm9kZSxlKX06bnVsbH1maW5kUmVmZXJlbmNlcyhlLHQsbil7cmV0dXJuIHRoaXMuZmluZERvY3VtZW50SGlnaGxpZ2h0cyhlLHQsbikubWFwKGk9Pih7dXJpOmUudXJpLHJhbmdlOmkucmFuZ2V9KSl9Z2V0SGlnaGxpZ2h0Tm9kZShlLHQsbil7Y29uc3Qgcj1lLm9mZnNldEF0KHQpO2xldCBpPU1pKG4scik7aWYoISghaXx8aS50eXBlPT09Yi5TdHlsZXNoZWV0fHxpLnR5cGU9PT1iLkRlY2xhcmF0aW9ucykpcmV0dXJuIGkudHlwZT09PWIuSWRlbnRpZmllciYmaS5wYXJlbnQmJmkucGFyZW50LnR5cGU9PT1iLkNsYXNzU2VsZWN0b3ImJihpPWkucGFyZW50KSxpfWZpbmREb2N1bWVudEhpZ2hsaWdodHMoZSx0LG4pe2NvbnN0IHI9W10saT10aGlzLmdldEhpZ2hsaWdodE5vZGUoZSx0LG4pO2lmKCFpKXJldHVybiByO2NvbnN0IHM9bmV3IGNzKG4pLGE9cy5maW5kU3ltYm9sRnJvbU5vZGUoaSksbD1pLmdldFRleHQoKTtyZXR1cm4gbi5hY2NlcHQobz0+e2lmKGEpe2lmKHMubWF0Y2hlc1N5bWJvbChvLGEpKXJldHVybiByLnB1c2goe2tpbmQ6dGgobykscmFuZ2U6c3QobyxlKX0pLCExfWVsc2UgaSYmaS50eXBlPT09by50eXBlJiZvLm1hdGNoZXMobCkmJnIucHVzaCh7a2luZDp0aChvKSxyYW5nZTpzdChvLGUpfSk7cmV0dXJuITB9KSxyfWlzUmF3U3RyaW5nRG9jdW1lbnRMaW5rTm9kZShlKXtyZXR1cm4gZS50eXBlPT09Yi5JbXBvcnR9ZmluZERvY3VtZW50TGlua3MoZSx0LG4pe2NvbnN0IHI9dGhpcy5maW5kVW5yZXNvbHZlZExpbmtzKGUsdCksaT1bXTtmb3IobGV0IHMgb2Ygcil7Y29uc3QgYT1zLmxpbmssbD1hLnRhcmdldDtpZighKCFsfHxaYy50ZXN0KGwpKSlpZihLYy50ZXN0KGwpKWkucHVzaChhKTtlbHNle2NvbnN0IG89bi5yZXNvbHZlUmVmZXJlbmNlKGwsZS51cmkpO28mJihhLnRhcmdldD1vKSxpLnB1c2goYSl9fXJldHVybiBpfWFzeW5jIGZpbmREb2N1bWVudExpbmtzMihlLHQsbil7Y29uc3Qgcj10aGlzLmZpbmRVbnJlc29sdmVkTGlua3MoZSx0KSxpPVtdO2ZvcihsZXQgcyBvZiByKXtjb25zdCBhPXMubGluayxsPWEudGFyZ2V0O2lmKCEoIWx8fFpjLnRlc3QobCkpKWlmKEtjLnRlc3QobCkpaS5wdXNoKGEpO2Vsc2V7Y29uc3Qgbz1hd2FpdCB0aGlzLnJlc29sdmVSZWZlcmVuY2UobCxlLnVyaSxuLHMuaXNSYXdMaW5rKTtvIT09dm9pZCAwJiYoYS50YXJnZXQ9byxpLnB1c2goYSkpfX1yZXR1cm4gaX1maW5kVW5yZXNvbHZlZExpbmtzKGUsdCl7Y29uc3Qgbj1bXSxyPWk9PntsZXQgcz1pLmdldFRleHQoKTtjb25zdCBhPXN0KGksZSk7aWYoYS5zdGFydC5saW5lPT09YS5lbmQubGluZSYmYS5zdGFydC5jaGFyYWN0ZXI9PT1hLmVuZC5jaGFyYWN0ZXIpcmV0dXJuOyhwZShzLCInIil8fHBlKHMsJyInKSkmJihzPXMuc2xpY2UoMSwtMSkpO2NvbnN0IGw9aS5wYXJlbnQ/dGhpcy5pc1Jhd1N0cmluZ0RvY3VtZW50TGlua05vZGUoaS5wYXJlbnQpOiExO24ucHVzaCh7bGluazp7dGFyZ2V0OnMscmFuZ2U6YX0saXNSYXdMaW5rOmx9KX07cmV0dXJuIHQuYWNjZXB0KGk9PntpZihpLnR5cGU9PT1iLlVSSUxpdGVyYWwpe2NvbnN0IHM9aS5nZXRDaGlsZCgwKTtyZXR1cm4gcyYmcihzKSwhMX1pZihpLnBhcmVudCYmdGhpcy5pc1Jhd1N0cmluZ0RvY3VtZW50TGlua05vZGUoaS5wYXJlbnQpKXtjb25zdCBzPWkuZ2V0VGV4dCgpO3JldHVybihwZShzLCInIil8fHBlKHMsJyInKSkmJnIoaSksITF9cmV0dXJuITB9KSxufWZpbmRTeW1ib2xJbmZvcm1hdGlvbnMoZSx0KXtjb25zdCBuPVtdLHI9KGkscyxhKT0+e2NvbnN0IGw9YSBpbnN0YW5jZW9mIE8/c3QoYSxlKTphLG89e25hbWU6aXx8ZygiPHVuZGVmaW5lZD4iKSxraW5kOnMsbG9jYXRpb246Um4uY3JlYXRlKGUudXJpLGwpfTtuLnB1c2gobyl9O3JldHVybiB0aGlzLmNvbGxlY3REb2N1bWVudFN5bWJvbHMoZSx0LHIpLG59ZmluZERvY3VtZW50U3ltYm9scyhlLHQpe2NvbnN0IG49W10scj1bXSxpPShzLGEsbCxvLGMpPT57Y29uc3QgZD1sIGluc3RhbmNlb2YgTz9zdChsLGUpOmw7bGV0IHU9byBpbnN0YW5jZW9mIE8/c3QobyxlKTpvOyghdXx8IWVoKGQsdSkpJiYodT1YLmNyZWF0ZShkLnN0YXJ0LGQuc3RhcnQpKTtjb25zdCBmPXtuYW1lOnN8fGcoIjx1bmRlZmluZWQ+Iiksa2luZDphLHJhbmdlOmQsc2VsZWN0aW9uUmFuZ2U6dX07bGV0IG09ci5wb3AoKTtmb3IoO20mJiFlaChtWzFdLGQpOyltPXIucG9wKCk7aWYobSl7Y29uc3Qgdj1tWzBdO3YuY2hpbGRyZW58fCh2LmNoaWxkcmVuPVtdKSx2LmNoaWxkcmVuLnB1c2goZiksci5wdXNoKG0pfWVsc2Ugbi5wdXNoKGYpO2MmJnIucHVzaChbZixzdChjLGUpXSl9O3JldHVybiB0aGlzLmNvbGxlY3REb2N1bWVudFN5bWJvbHMoZSx0LGkpLG59Y29sbGVjdERvY3VtZW50U3ltYm9scyhlLHQsbil7dC5hY2NlcHQocj0+e2lmKHIgaW5zdGFuY2VvZiBFdCl7Zm9yKGNvbnN0IGkgb2Ygci5nZXRTZWxlY3RvcnMoKS5nZXRDaGlsZHJlbigpKWlmKGkgaW5zdGFuY2VvZiBDbil7Y29uc3Qgcz1YLmNyZWF0ZShlLnBvc2l0aW9uQXQoaS5vZmZzZXQpLGUucG9zaXRpb25BdChyLmVuZCkpO24oaS5nZXRUZXh0KCksbnQuQ2xhc3MscyxpLHIuZ2V0RGVjbGFyYXRpb25zKCkpfX1lbHNlIGlmKHIgaW5zdGFuY2VvZiBociluKHIuZ2V0TmFtZSgpLG50LlZhcmlhYmxlLHIsci5nZXRWYXJpYWJsZSgpLHZvaWQgMCk7ZWxzZSBpZihyIGluc3RhbmNlb2YgRm4pbihyLmdldE5hbWUoKSxudC5NZXRob2QscixyLmdldElkZW50aWZpZXIoKSxyLmdldERlY2xhcmF0aW9ucygpKTtlbHNlIGlmKHIgaW5zdGFuY2VvZiBjciluKHIuZ2V0TmFtZSgpLG50LkZ1bmN0aW9uLHIsci5nZXRJZGVudGlmaWVyKCksci5nZXREZWNsYXJhdGlvbnMoKSk7ZWxzZSBpZihyIGluc3RhbmNlb2YgQ2wpe2NvbnN0IGk9ZygiQGtleWZyYW1lcyB7MH0iLHIuZ2V0TmFtZSgpKTtuKGksbnQuQ2xhc3MscixyLmdldElkZW50aWZpZXIoKSxyLmdldERlY2xhcmF0aW9ucygpKX1lbHNlIGlmKHIgaW5zdGFuY2VvZiB4bCl7Y29uc3QgaT1nKCJAZm9udC1mYWNlIik7bihpLG50LkNsYXNzLHIsdm9pZCAwLHIuZ2V0RGVjbGFyYXRpb25zKCkpfWVsc2UgaWYociBpbnN0YW5jZW9mIFdpKXtjb25zdCBpPXIuZ2V0Q2hpbGQoMCk7aWYoaSBpbnN0YW5jZW9mIGtsKXtjb25zdCBzPSJAbWVkaWEgIitpLmdldFRleHQoKTtuKHMsbnQuTW9kdWxlLHIsaSxyLmdldERlY2xhcmF0aW9ucygpKX19cmV0dXJuITB9KX1maW5kRG9jdW1lbnRDb2xvcnMoZSx0KXtjb25zdCBuPVtdO3JldHVybiB0LmFjY2VwdChyPT57Y29uc3QgaT0kbShyLGUpO3JldHVybiBpJiZuLnB1c2goaSksITB9KSxufWdldENvbG9yUHJlc2VudGF0aW9ucyhlLHQsbixyKXtjb25zdCBpPVtdLHM9TWF0aC5yb3VuZChuLnJlZCoyNTUpLGE9TWF0aC5yb3VuZChuLmdyZWVuKjI1NSksbD1NYXRoLnJvdW5kKG4uYmx1ZSoyNTUpO2xldCBvO24uYWxwaGE9PT0xP289YHJnYigke3N9LCAke2F9LCAke2x9KWA6bz1gcmdiYSgke3N9LCAke2F9LCAke2x9LCAke24uYWxwaGF9KWAsaS5wdXNoKHtsYWJlbDpvLHRleHRFZGl0OiQucmVwbGFjZShyLG8pfSksbi5hbHBoYT09PTE/bz1gIyR7TnQocyl9JHtOdChhKX0ke050KGwpfWA6bz1gIyR7TnQocyl9JHtOdChhKX0ke050KGwpfSR7TnQoTWF0aC5yb3VuZChuLmFscGhhKjI1NSkpfWAsaS5wdXNoKHtsYWJlbDpvLHRleHRFZGl0OiQucmVwbGFjZShyLG8pfSk7Y29uc3QgYz1MYyhuKTtjLmE9PT0xP289YGhzbCgke2MuaH0sICR7TWF0aC5yb3VuZChjLnMqMTAwKX0lLCAke01hdGgucm91bmQoYy5sKjEwMCl9JSlgOm89YGhzbGEoJHtjLmh9LCAke01hdGgucm91bmQoYy5zKjEwMCl9JSwgJHtNYXRoLnJvdW5kKGMubCoxMDApfSUsICR7Yy5hfSlgLGkucHVzaCh7bGFiZWw6byx0ZXh0RWRpdDokLnJlcGxhY2UocixvKX0pO2NvbnN0IGQ9eW0obik7cmV0dXJuIGQuYT09PTE/bz1gaHdiKCR7ZC5ofSAke01hdGgucm91bmQoZC53KjEwMCl9JSAke01hdGgucm91bmQoZC5iKjEwMCl9JSlgOm89YGh3Yigke2QuaH0gJHtNYXRoLnJvdW5kKGQudyoxMDApfSUgJHtNYXRoLnJvdW5kKGQuYioxMDApfSUgLyAke2QuYX0pYCxpLnB1c2goe2xhYmVsOm8sdGV4dEVkaXQ6JC5yZXBsYWNlKHIsbyl9KSxpfXByZXBhcmVSZW5hbWUoZSx0LG4pe2NvbnN0IHI9dGhpcy5nZXRIaWdobGlnaHROb2RlKGUsdCxuKTtpZihyKXJldHVybiBYLmNyZWF0ZShlLnBvc2l0aW9uQXQoci5vZmZzZXQpLGUucG9zaXRpb25BdChyLmVuZCkpfWRvUmVuYW1lKGUsdCxuLHIpe2NvbnN0IHM9dGhpcy5maW5kRG9jdW1lbnRIaWdobGlnaHRzKGUsdCxyKS5tYXAoYT0+JC5yZXBsYWNlKGEucmFuZ2UsbikpO3JldHVybntjaGFuZ2VzOntbZS51cmldOnN9fX1hc3luYyByZXNvbHZlTW9kdWxlUmVmZXJlbmNlKGUsdCxuKXtpZihwZSh0LCJmaWxlOi8vIikpe2NvbnN0IHI9Qm0oZSk7aWYociYmciE9PSIuIiYmciE9PSIuLiIpe2NvbnN0IGk9bi5yZXNvbHZlUmVmZXJlbmNlKCIvIix0KSxzPWRzKHQpLGE9YXdhaXQgdGhpcy5yZXNvbHZlUGF0aFRvTW9kdWxlKHIscyxpKTtpZihhKXtjb25zdCBsPWUuc3Vic3RyaW5nKHIubGVuZ3RoKzEpO3JldHVybiBLdChhLGwpfX19fWFzeW5jIG1hcFJlZmVyZW5jZShlLHQpe3JldHVybiBlfWFzeW5jIHJlc29sdmVSZWZlcmVuY2UoZSx0LG4scj0hMSxpPXRoaXMuZGVmYXVsdFNldHRpbmdzKXtpZihlWzBdPT09In4iJiZlWzFdIT09Ii8iJiZ0aGlzLmZpbGVTeXN0ZW1Qcm92aWRlcilyZXR1cm4gZT1lLnN1YnN0cmluZygxKSx0aGlzLm1hcFJlZmVyZW5jZShhd2FpdCB0aGlzLnJlc29sdmVNb2R1bGVSZWZlcmVuY2UoZSx0LG4pLHIpO2NvbnN0IHM9YXdhaXQgdGhpcy5tYXBSZWZlcmVuY2Uobi5yZXNvbHZlUmVmZXJlbmNlKGUsdCkscik7aWYodGhpcy5yZXNvbHZlTW9kdWxlUmVmZXJlbmNlcyl7aWYocyYmYXdhaXQgdGhpcy5maWxlRXhpc3RzKHMpKXJldHVybiBzO2NvbnN0IGE9YXdhaXQgdGhpcy5tYXBSZWZlcmVuY2UoYXdhaXQgdGhpcy5yZXNvbHZlTW9kdWxlUmVmZXJlbmNlKGUsdCxuKSxyKTtpZihhKXJldHVybiBhfWlmKHMmJiFhd2FpdCB0aGlzLmZpbGVFeGlzdHMocykpe2NvbnN0IGE9bi5yZXNvbHZlUmVmZXJlbmNlKCIvIix0KTtpZihpJiZhKXtpZihlIGluIGkpcmV0dXJuIHRoaXMubWFwUmVmZXJlbmNlKEt0KGEsaVtlXSkscik7Y29uc3QgbD1lLmluZGV4T2YoIi8iKSxvPWAke2Uuc3Vic3RyaW5nKDAsbCl9L2A7aWYobyBpbiBpKXtjb25zdCBjPWlbb10uc2xpY2UoMCwtMSk7bGV0IGQ9S3QoYSxjKTtyZXR1cm4gdGhpcy5tYXBSZWZlcmVuY2UoZD1LdChkLGUuc3Vic3RyaW5nKG8ubGVuZ3RoLTEpKSxyKX19fXJldHVybiBzfWFzeW5jIHJlc29sdmVQYXRoVG9Nb2R1bGUoZSx0LG4pe2NvbnN0IHI9S3QodCwibm9kZV9tb2R1bGVzIixlLCJwYWNrYWdlLmpzb24iKTtpZihhd2FpdCB0aGlzLmZpbGVFeGlzdHMocikpcmV0dXJuIGRzKHIpO2lmKG4mJnQuc3RhcnRzV2l0aChuKSYmdC5sZW5ndGghPT1uLmxlbmd0aClyZXR1cm4gdGhpcy5yZXNvbHZlUGF0aFRvTW9kdWxlKGUsZHModCksbil9YXN5bmMgZmlsZUV4aXN0cyhlKXtpZighdGhpcy5maWxlU3lzdGVtUHJvdmlkZXIpcmV0dXJuITE7dHJ5e2NvbnN0IHQ9YXdhaXQgdGhpcy5maWxlU3lzdGVtUHJvdmlkZXIuc3RhdChlKTtyZXR1cm4hKHQudHlwZT09PURuLlVua25vd24mJnQuc2l6ZT09PS0xKX1jYXRjaHtyZXR1cm4hMX19fTtmdW5jdGlvbiAkbShlLHQpe2NvbnN0IG49eG0oZSk7aWYobil7Y29uc3Qgcj1zdChlLHQpO3JldHVybntjb2xvcjpuLHJhbmdlOnJ9fXJldHVybiBudWxsfWZ1bmN0aW9uIHN0KGUsdCl7cmV0dXJuIFguY3JlYXRlKHQucG9zaXRpb25BdChlLm9mZnNldCksdC5wb3NpdGlvbkF0KGUuZW5kKSl9ZnVuY3Rpb24gZWgoZSx0KXtjb25zdCBuPXQuc3RhcnQubGluZSxyPXQuZW5kLmxpbmUsaT1lLnN0YXJ0LmxpbmUscz1lLmVuZC5saW5lO3JldHVybiEobjxpfHxyPGl8fG4+c3x8cj5zfHxuPT09aSYmdC5zdGFydC5jaGFyYWN0ZXI8ZS5zdGFydC5jaGFyYWN0ZXJ8fHI9PT1zJiZ0LmVuZC5jaGFyYWN0ZXI+ZS5lbmQuY2hhcmFjdGVyKX1mdW5jdGlvbiB0aChlKXtpZihlLnR5cGU9PT1iLlNlbGVjdG9yfHxlIGluc3RhbmNlb2YgTWUmJmUucGFyZW50JiZlLnBhcmVudCBpbnN0YW5jZW9mIFRpJiZlLmlzQ3VzdG9tUHJvcGVydHkpcmV0dXJuIFF0LldyaXRlO2lmKGUucGFyZW50KXN3aXRjaChlLnBhcmVudC50eXBlKXtjYXNlIGIuRnVuY3Rpb25EZWNsYXJhdGlvbjpjYXNlIGIuTWl4aW5EZWNsYXJhdGlvbjpjYXNlIGIuS2V5ZnJhbWU6Y2FzZSBiLlZhcmlhYmxlRGVjbGFyYXRpb246Y2FzZSBiLkZ1bmN0aW9uUGFyYW1ldGVyOnJldHVybiBRdC5Xcml0ZX1yZXR1cm4gUXQuUmVhZH1mdW5jdGlvbiBOdChlKXtjb25zdCB0PWUudG9TdHJpbmcoMTYpO3JldHVybiB0Lmxlbmd0aCE9PTI/IjAiK3Q6dH1mdW5jdGlvbiBCbShlKXtjb25zdCB0PWUuaW5kZXhPZigiLyIpO2lmKHQ9PT0tMSlyZXR1cm4iIjtpZihlWzBdPT09IkAiKXtjb25zdCBuPWUuaW5kZXhPZigiLyIsdCsxKTtyZXR1cm4gbj09PS0xP2U6ZS5zdWJzdHJpbmcoMCxuKX1yZXR1cm4gZS5zdWJzdHJpbmcoMCx0KX12YXIgdG49UmUuV2FybmluZyxuaD1SZS5FcnJvcixPZT1SZS5JZ25vcmUsZmU9Y2xhc3N7Y29uc3RydWN0b3IoZSx0LG4pe3RoaXMuaWQ9ZSx0aGlzLm1lc3NhZ2U9dCx0aGlzLmRlZmF1bHRWYWx1ZT1ufX0scW09Y2xhc3N7Y29uc3RydWN0b3IoZSx0LG4pe3RoaXMuaWQ9ZSx0aGlzLm1lc3NhZ2U9dCx0aGlzLmRlZmF1bHRWYWx1ZT1ufX0sdGU9e0FsbFZlbmRvclByZWZpeGVzOm5ldyBmZSgiY29tcGF0aWJsZVZlbmRvclByZWZpeGVzIixnKCJXaGVuIHVzaW5nIGEgdmVuZG9yLXNwZWNpZmljIHByZWZpeCBtYWtlIHN1cmUgdG8gYWxzbyBpbmNsdWRlIGFsbCBvdGhlciB2ZW5kb3Itc3BlY2lmaWMgcHJvcGVydGllcyIpLE9lKSxJbmNsdWRlU3RhbmRhcmRQcm9wZXJ0eVdoZW5Vc2luZ1ZlbmRvclByZWZpeDpuZXcgZmUoInZlbmRvclByZWZpeCIsZygiV2hlbiB1c2luZyBhIHZlbmRvci1zcGVjaWZpYyBwcmVmaXggYWxzbyBpbmNsdWRlIHRoZSBzdGFuZGFyZCBwcm9wZXJ0eSIpLHRuKSxEdXBsaWNhdGVEZWNsYXJhdGlvbnM6bmV3IGZlKCJkdXBsaWNhdGVQcm9wZXJ0aWVzIixnKCJEbyBub3QgdXNlIGR1cGxpY2F0ZSBzdHlsZSBkZWZpbml0aW9ucyIpLE9lKSxFbXB0eVJ1bGVTZXQ6bmV3IGZlKCJlbXB0eVJ1bGVzIixnKCJEbyBub3QgdXNlIGVtcHR5IHJ1bGVzZXRzIiksdG4pLEltcG9ydFN0YXRlbWVtZW50Om5ldyBmZSgiaW1wb3J0U3RhdGVtZW50IixnKCJJbXBvcnQgc3RhdGVtZW50cyBkbyBub3QgbG9hZCBpbiBwYXJhbGxlbCIpLE9lKSxCZXdhcmVPZkJveE1vZGVsU2l6ZTpuZXcgZmUoImJveE1vZGVsIixnKCJEbyBub3QgdXNlIHdpZHRoIG9yIGhlaWdodCB3aGVuIHVzaW5nIHBhZGRpbmcgb3IgYm9yZGVyIiksT2UpLFVuaXZlcnNhbFNlbGVjdG9yOm5ldyBmZSgidW5pdmVyc2FsU2VsZWN0b3IiLGcoIlRoZSB1bml2ZXJzYWwgc2VsZWN0b3IgKCopIGlzIGtub3duIHRvIGJlIHNsb3ciKSxPZSksWmVyb1dpdGhVbml0Om5ldyBmZSgiemVyb1VuaXRzIixnKCJObyB1bml0IGZvciB6ZXJvIG5lZWRlZCIpLE9lKSxSZXF1aXJlZFByb3BlcnRpZXNGb3JGb250RmFjZTpuZXcgZmUoImZvbnRGYWNlUHJvcGVydGllcyIsZygiQGZvbnQtZmFjZSBydWxlIG11c3QgZGVmaW5lICdzcmMnIGFuZCAnZm9udC1mYW1pbHknIHByb3BlcnRpZXMiKSx0biksSGV4Q29sb3JMZW5ndGg6bmV3IGZlKCJoZXhDb2xvckxlbmd0aCIsZygiSGV4IGNvbG9ycyBtdXN0IGNvbnNpc3Qgb2YgdGhyZWUsIGZvdXIsIHNpeCBvciBlaWdodCBoZXggbnVtYmVycyIpLG5oKSxBcmdzSW5Db2xvckZ1bmN0aW9uOm5ldyBmZSgiYXJndW1lbnRzSW5Db2xvckZ1bmN0aW9uIixnKCJJbnZhbGlkIG51bWJlciBvZiBwYXJhbWV0ZXJzIiksbmgpLFVua25vd25Qcm9wZXJ0eTpuZXcgZmUoInVua25vd25Qcm9wZXJ0aWVzIixnKCJVbmtub3duIHByb3BlcnR5LiIpLHRuKSxVbmtub3duQXRSdWxlczpuZXcgZmUoInVua25vd25BdFJ1bGVzIixnKCJVbmtub3duIGF0LXJ1bGUuIiksdG4pLElFU3RhckhhY2s6bmV3IGZlKCJpZUhhY2siLGcoIklFIGhhY2tzIGFyZSBvbmx5IG5lY2Vzc2FyeSB3aGVuIHN1cHBvcnRpbmcgSUU3IGFuZCBvbGRlciIpLE9lKSxVbmtub3duVmVuZG9yU3BlY2lmaWNQcm9wZXJ0eTpuZXcgZmUoInVua25vd25WZW5kb3JTcGVjaWZpY1Byb3BlcnRpZXMiLGcoIlVua25vd24gdmVuZG9yIHNwZWNpZmljIHByb3BlcnR5LiIpLE9lKSxQcm9wZXJ0eUlnbm9yZWREdWVUb0Rpc3BsYXk6bmV3IGZlKCJwcm9wZXJ0eUlnbm9yZWREdWVUb0Rpc3BsYXkiLGcoIlByb3BlcnR5IGlzIGlnbm9yZWQgZHVlIHRvIHRoZSBkaXNwbGF5LiIpLHRuKSxBdm9pZEltcG9ydGFudDpuZXcgZmUoImltcG9ydGFudCIsZygiQXZvaWQgdXNpbmcgIWltcG9ydGFudC4gSXQgaXMgYW4gaW5kaWNhdGlvbiB0aGF0IHRoZSBzcGVjaWZpY2l0eSBvZiB0aGUgZW50aXJlIENTUyBoYXMgZ290dGVuIG91dCBvZiBjb250cm9sIGFuZCBuZWVkcyB0byBiZSByZWZhY3RvcmVkLiIpLE9lKSxBdm9pZEZsb2F0Om5ldyBmZSgiZmxvYXQiLGcoIkF2b2lkIHVzaW5nICdmbG9hdCcuIEZsb2F0cyBsZWFkIHRvIGZyYWdpbGUgQ1NTIHRoYXQgaXMgZWFzeSB0byBicmVhayBpZiBvbmUgYXNwZWN0IG9mIHRoZSBsYXlvdXQgY2hhbmdlcy4iKSxPZSksQXZvaWRJZFNlbGVjdG9yOm5ldyBmZSgiaWRTZWxlY3RvciIsZygiU2VsZWN0b3JzIHNob3VsZCBub3QgY29udGFpbiBJRHMgYmVjYXVzZSB0aGVzZSBydWxlcyBhcmUgdG9vIHRpZ2h0bHkgY291cGxlZCB3aXRoIHRoZSBIVE1MLiIpLE9lKX0sam09e1ZhbGlkUHJvcGVydGllczpuZXcgcW0oInZhbGlkUHJvcGVydGllcyIsZygiQSBsaXN0IG9mIHByb3BlcnRpZXMgdGhhdCBhcmUgbm90IHZhbGlkYXRlZCBhZ2FpbnN0IHRoZSBgdW5rbm93blByb3BlcnRpZXNgIHJ1bGUuIiksW10pfSxIbT1jbGFzc3tjb25zdHJ1Y3RvcihlPXt9KXt0aGlzLmNvbmY9ZX1nZXRSdWxlKGUpe2lmKHRoaXMuY29uZi5oYXNPd25Qcm9wZXJ0eShlLmlkKSl7Y29uc3QgdD1HbSh0aGlzLmNvbmZbZS5pZF0pO2lmKHQpcmV0dXJuIHR9cmV0dXJuIGUuZGVmYXVsdFZhbHVlfWdldFNldHRpbmcoZSl7cmV0dXJuIHRoaXMuY29uZltlLmlkXX19O2Z1bmN0aW9uIEdtKGUpe3N3aXRjaChlKXtjYXNlImlnbm9yZSI6cmV0dXJuIFJlLklnbm9yZTtjYXNlIndhcm5pbmciOnJldHVybiBSZS5XYXJuaW5nO2Nhc2UiZXJyb3IiOnJldHVybiBSZS5FcnJvcn1yZXR1cm4gbnVsbH12YXIgeXM9Y2xhc3N7Y29uc3RydWN0b3IoZSl7dGhpcy5jc3NEYXRhTWFuYWdlcj1lfWRvQ29kZUFjdGlvbnMoZSx0LG4scil7cmV0dXJuIHRoaXMuZG9Db2RlQWN0aW9uczIoZSx0LG4scikubWFwKGk9Pntjb25zdCBzPWkuZWRpdCYmaS5lZGl0LmRvY3VtZW50Q2hhbmdlcyYmaS5lZGl0LmRvY3VtZW50Q2hhbmdlc1swXTtyZXR1cm4gRnQuY3JlYXRlKGkudGl0bGUsIl9jc3MuYXBwbHlDb2RlQWN0aW9uIixlLnVyaSxlLnZlcnNpb24scyYmcy5lZGl0cyl9KX1kb0NvZGVBY3Rpb25zMihlLHQsbixyKXtjb25zdCBpPVtdO2lmKG4uZGlhZ25vc3RpY3MpZm9yKGNvbnN0IHMgb2Ygbi5kaWFnbm9zdGljcyl0aGlzLmFwcGVuZEZpeGVzRm9yTWFya2VyKGUscixzLGkpO3JldHVybiBpfWdldEZpeGVzRm9yVW5rbm93blByb3BlcnR5KGUsdCxuLHIpe2NvbnN0IGk9dC5nZXROYW1lKCkscz1bXTt0aGlzLmNzc0RhdGFNYW5hZ2VyLmdldFByb3BlcnRpZXMoKS5mb3JFYWNoKGw9Pntjb25zdCBvPXdwKGksbC5uYW1lKTtvPj1pLmxlbmd0aC8yJiZzLnB1c2goe3Byb3BlcnR5OmwubmFtZSxzY29yZTpvfSl9KSxzLnNvcnQoKGwsbyk9Pm8uc2NvcmUtbC5zY29yZXx8bC5wcm9wZXJ0eS5sb2NhbGVDb21wYXJlKG8ucHJvcGVydHkpKTtsZXQgYT0zO2Zvcihjb25zdCBsIG9mIHMpe2NvbnN0IG89bC5wcm9wZXJ0eSxjPWcoIlJlbmFtZSB0byAnezB9JyIsbyksZD0kLnJlcGxhY2Uobi5yYW5nZSxvKSx1PWVzLmNyZWF0ZShlLnVyaSxlLnZlcnNpb24pLGY9e2RvY3VtZW50Q2hhbmdlczpbZnIuY3JlYXRlKHUsW2RdKV19LG09cnMuY3JlYXRlKGMsZixucy5RdWlja0ZpeCk7aWYobS5kaWFnbm9zdGljcz1bbl0sci5wdXNoKG0pLC0tYTw9MClyZXR1cm59fWFwcGVuZEZpeGVzRm9yTWFya2VyKGUsdCxuLHIpe2lmKG4uY29kZSE9PXRlLlVua25vd25Qcm9wZXJ0eS5pZClyZXR1cm47Y29uc3QgaT1lLm9mZnNldEF0KG4ucmFuZ2Uuc3RhcnQpLHM9ZS5vZmZzZXRBdChuLnJhbmdlLmVuZCksYT1MaSh0LGkpO2ZvcihsZXQgbD1hLmxlbmd0aC0xO2w+PTA7bC0tKXtjb25zdCBvPWFbbF07aWYobyBpbnN0YW5jZW9mIHFlKXtjb25zdCBjPW8uZ2V0UHJvcGVydHkoKTtpZihjJiZjLm9mZnNldD09PWkmJmMuZW5kPT09cyl7dGhpcy5nZXRGaXhlc0ZvclVua25vd25Qcm9wZXJ0eShlLGMsbixyKTtyZXR1cm59fX19fSxKbT1jbGFzc3tjb25zdHJ1Y3RvcihlKXt0aGlzLmZ1bGxQcm9wZXJ0eU5hbWU9ZS5nZXRGdWxsUHJvcGVydHlOYW1lKCkudG9Mb3dlckNhc2UoKSx0aGlzLm5vZGU9ZX19O2Z1bmN0aW9uIEFuKGUsdCxuLHIpe2NvbnN0IGk9ZVt0XTtpLnZhbHVlPW4sbiYmKEhjKGkucHJvcGVydGllcyxyKXx8aS5wcm9wZXJ0aWVzLnB1c2gocikpfWZ1bmN0aW9uIFhtKGUsdCxuKXtBbihlLCJ0b3AiLHQsbiksQW4oZSwicmlnaHQiLHQsbiksQW4oZSwiYm90dG9tIix0LG4pLEFuKGUsImxlZnQiLHQsbil9ZnVuY3Rpb24gYmUoZSx0LG4scil7dD09PSJ0b3AifHx0PT09InJpZ2h0Inx8dD09PSJib3R0b20ifHx0PT09ImxlZnQiP0FuKGUsdCxuLHIpOlhtKGUsbixyKX1mdW5jdGlvbiB4cyhlLHQsbil7c3dpdGNoKHQubGVuZ3RoKXtjYXNlIDE6YmUoZSx2b2lkIDAsdFswXSxuKTticmVhaztjYXNlIDI6YmUoZSwidG9wIix0WzBdLG4pLGJlKGUsImJvdHRvbSIsdFswXSxuKSxiZShlLCJyaWdodCIsdFsxXSxuKSxiZShlLCJsZWZ0Iix0WzFdLG4pO2JyZWFrO2Nhc2UgMzpiZShlLCJ0b3AiLHRbMF0sbiksYmUoZSwicmlnaHQiLHRbMV0sbiksYmUoZSwibGVmdCIsdFsxXSxuKSxiZShlLCJib3R0b20iLHRbMl0sbik7YnJlYWs7Y2FzZSA0OmJlKGUsInRvcCIsdFswXSxuKSxiZShlLCJyaWdodCIsdFsxXSxuKSxiZShlLCJib3R0b20iLHRbMl0sbiksYmUoZSwibGVmdCIsdFszXSxuKTticmVha319ZnVuY3Rpb24gU3MoZSx0KXtmb3IobGV0IG4gb2YgdClpZihlLm1hdGNoZXMobikpcmV0dXJuITA7cmV0dXJuITF9ZnVuY3Rpb24gTW4oZSx0PSEwKXtyZXR1cm4gdCYmU3MoZSxbImluaXRpYWwiLCJ1bnNldCJdKT8hMTpwYXJzZUZsb2F0KGUuZ2V0VGV4dCgpKSE9PTB9ZnVuY3Rpb24gcmgoZSx0PSEwKXtyZXR1cm4gZS5tYXAobj0+TW4obix0KSl9ZnVuY3Rpb24gUnIoZSx0PSEwKXtyZXR1cm4hKFNzKGUsWyJub25lIiwiaGlkZGVuIl0pfHx0JiZTcyhlLFsiaW5pdGlhbCIsInVuc2V0Il0pKX1mdW5jdGlvbiBZbShlLHQ9ITApe3JldHVybiBlLm1hcChuPT5ScihuLHQpKX1mdW5jdGlvbiBRbShlKXtjb25zdCB0PWUuZ2V0Q2hpbGRyZW4oKTtpZih0Lmxlbmd0aD09PTEpe2NvbnN0IG49dFswXTtyZXR1cm4gTW4obikmJlJyKG4pfWZvcihjb25zdCBuIG9mIHQpe2NvbnN0IHI9bjtpZighTW4ociwhMSl8fCFScihyLCExKSlyZXR1cm4hMX1yZXR1cm4hMH1mdW5jdGlvbiBLbShlKXtjb25zdCB0PXt0b3A6e3ZhbHVlOiExLHByb3BlcnRpZXM6W119LHJpZ2h0Ont2YWx1ZTohMSxwcm9wZXJ0aWVzOltdfSxib3R0b206e3ZhbHVlOiExLHByb3BlcnRpZXM6W119LGxlZnQ6e3ZhbHVlOiExLHByb3BlcnRpZXM6W119fTtmb3IoY29uc3QgbiBvZiBlKXtjb25zdCByPW4ubm9kZS52YWx1ZTtpZighKHR5cGVvZiByPiJ1Iikpc3dpdGNoKG4uZnVsbFByb3BlcnR5TmFtZSl7Y2FzZSJib3gtc2l6aW5nIjpyZXR1cm57dG9wOnt2YWx1ZTohMSxwcm9wZXJ0aWVzOltdfSxyaWdodDp7dmFsdWU6ITEscHJvcGVydGllczpbXX0sYm90dG9tOnt2YWx1ZTohMSxwcm9wZXJ0aWVzOltdfSxsZWZ0Ont2YWx1ZTohMSxwcm9wZXJ0aWVzOltdfX07Y2FzZSJ3aWR0aCI6dC53aWR0aD1uO2JyZWFrO2Nhc2UiaGVpZ2h0Ijp0LmhlaWdodD1uO2JyZWFrO2RlZmF1bHQ6Y29uc3QgaT1uLmZ1bGxQcm9wZXJ0eU5hbWUuc3BsaXQoIi0iKTtzd2l0Y2goaVswXSl7Y2FzZSJib3JkZXIiOnN3aXRjaChpWzFdKXtjYXNlIHZvaWQgMDpjYXNlInRvcCI6Y2FzZSJyaWdodCI6Y2FzZSJib3R0b20iOmNhc2UibGVmdCI6c3dpdGNoKGlbMl0pe2Nhc2Ugdm9pZCAwOmJlKHQsaVsxXSxRbShyKSxuKTticmVhaztjYXNlIndpZHRoIjpiZSh0LGlbMV0sTW4ociwhMSksbik7YnJlYWs7Y2FzZSJzdHlsZSI6YmUodCxpWzFdLFJyKHIsITApLG4pO2JyZWFrfWJyZWFrO2Nhc2Uid2lkdGgiOnhzKHQscmgoci5nZXRDaGlsZHJlbigpLCExKSxuKTticmVhaztjYXNlInN0eWxlIjp4cyh0LFltKHIuZ2V0Q2hpbGRyZW4oKSwhMCksbik7YnJlYWt9YnJlYWs7Y2FzZSJwYWRkaW5nIjppLmxlbmd0aD09PTE/eHModCxyaChyLmdldENoaWxkcmVuKCksITApLG4pOmJlKHQsaVsxXSxNbihyLCEwKSxuKTticmVha31icmVha319cmV0dXJuIHR9dmFyIGloPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5kYXRhPXt9fWFkZChlLHQsbil7bGV0IHI9dGhpcy5kYXRhW2VdO3J8fChyPXtub2RlczpbXSxuYW1lczpbXX0sdGhpcy5kYXRhW2VdPXIpLHIubmFtZXMucHVzaCh0KSxuJiZyLm5vZGVzLnB1c2gobil9fSxzaD1jbGFzcyBVcntzdGF0aWMgZW50cmllcyh0LG4scixpLHMpe2NvbnN0IGE9bmV3IFVyKG4scixpKTtyZXR1cm4gdC5hY2NlcHRWaXNpdG9yKGEpLGEuY29tcGxldGVWYWxpZGF0aW9ucygpLGEuZ2V0RW50cmllcyhzKX1jb25zdHJ1Y3Rvcih0LG4scil7dGhpcy5jc3NEYXRhTWFuYWdlcj1yLHRoaXMud2FybmluZ3M9W10sdGhpcy5zZXR0aW5ncz1uLHRoaXMuZG9jdW1lbnRUZXh0PXQuZ2V0VGV4dCgpLHRoaXMua2V5ZnJhbWVzPW5ldyBpaCx0aGlzLnZhbGlkUHJvcGVydGllcz17fTtjb25zdCBpPW4uZ2V0U2V0dGluZyhqbS5WYWxpZFByb3BlcnRpZXMpO0FycmF5LmlzQXJyYXkoaSkmJmkuZm9yRWFjaChzPT57aWYodHlwZW9mIHM9PSJzdHJpbmciKXtjb25zdCBhPXMudHJpbSgpLnRvTG93ZXJDYXNlKCk7YS5sZW5ndGgmJih0aGlzLnZhbGlkUHJvcGVydGllc1thXT0hMCl9fSl9aXNWYWxpZFByb3BlcnR5RGVjbGFyYXRpb24odCl7Y29uc3Qgbj10LmZ1bGxQcm9wZXJ0eU5hbWU7cmV0dXJuIHRoaXMudmFsaWRQcm9wZXJ0aWVzW25dfWZldGNoKHQsbil7Y29uc3Qgcj1bXTtmb3IoY29uc3QgaSBvZiB0KWkuZnVsbFByb3BlcnR5TmFtZT09PW4mJnIucHVzaChpKTtyZXR1cm4gcn1mZXRjaFdpdGhWYWx1ZSh0LG4scil7Y29uc3QgaT1bXTtmb3IoY29uc3QgcyBvZiB0KWlmKHMuZnVsbFByb3BlcnR5TmFtZT09PW4pe2NvbnN0IGE9cy5ub2RlLmdldFZhbHVlKCk7YSYmdGhpcy5maW5kVmFsdWVJbkV4cHJlc3Npb24oYSxyKSYmaS5wdXNoKHMpfXJldHVybiBpfWZpbmRWYWx1ZUluRXhwcmVzc2lvbih0LG4pe2xldCByPSExO3JldHVybiB0LmFjY2VwdChpPT4oaS50eXBlPT09Yi5JZGVudGlmaWVyJiZpLm1hdGNoZXMobikmJihyPSEwKSwhcikpLHJ9Z2V0RW50cmllcyh0PVJlLldhcm5pbmd8UmUuRXJyb3Ipe3JldHVybiB0aGlzLndhcm5pbmdzLmZpbHRlcihuPT4obi5nZXRMZXZlbCgpJnQpIT09MCl9YWRkRW50cnkodCxuLHIpe2NvbnN0IGk9bmV3IERsKHQsbix0aGlzLnNldHRpbmdzLmdldFJ1bGUobikscik7dGhpcy53YXJuaW5ncy5wdXNoKGkpfWdldE1pc3NpbmdOYW1lcyh0LG4pe2NvbnN0IHI9dC5zbGljZSgwKTtmb3IobGV0IHM9MDtzPG4ubGVuZ3RoO3MrKyl7Y29uc3QgYT1yLmluZGV4T2YobltzXSk7YSE9PS0xJiYoclthXT1udWxsKX1sZXQgaT1udWxsO2ZvcihsZXQgcz0wO3M8ci5sZW5ndGg7cysrKXtjb25zdCBhPXJbc107YSYmKGk9PT1udWxsP2k9ZygiJ3swfSciLGEpOmk9ZygiezB9LCAnezF9JyIsaSxhKSl9cmV0dXJuIGl9dmlzaXROb2RlKHQpe3N3aXRjaCh0LnR5cGUpe2Nhc2UgYi5Vbmtub3duQXRSdWxlOnJldHVybiB0aGlzLnZpc2l0VW5rbm93bkF0UnVsZSh0KTtjYXNlIGIuS2V5ZnJhbWU6cmV0dXJuIHRoaXMudmlzaXRLZXlmcmFtZSh0KTtjYXNlIGIuRm9udEZhY2U6cmV0dXJuIHRoaXMudmlzaXRGb250RmFjZSh0KTtjYXNlIGIuUnVsZXNldDpyZXR1cm4gdGhpcy52aXNpdFJ1bGVTZXQodCk7Y2FzZSBiLlNpbXBsZVNlbGVjdG9yOnJldHVybiB0aGlzLnZpc2l0U2ltcGxlU2VsZWN0b3IodCk7Y2FzZSBiLkZ1bmN0aW9uOnJldHVybiB0aGlzLnZpc2l0RnVuY3Rpb24odCk7Y2FzZSBiLk51bWVyaWNWYWx1ZTpyZXR1cm4gdGhpcy52aXNpdE51bWVyaWNWYWx1ZSh0KTtjYXNlIGIuSW1wb3J0OnJldHVybiB0aGlzLnZpc2l0SW1wb3J0KHQpO2Nhc2UgYi5IZXhDb2xvclZhbHVlOnJldHVybiB0aGlzLnZpc2l0SGV4Q29sb3JWYWx1ZSh0KTtjYXNlIGIuUHJpbzpyZXR1cm4gdGhpcy52aXNpdFByaW8odCk7Y2FzZSBiLklkZW50aWZpZXJTZWxlY3RvcjpyZXR1cm4gdGhpcy52aXNpdElkZW50aWZpZXJTZWxlY3Rvcih0KX1yZXR1cm4hMH1jb21wbGV0ZVZhbGlkYXRpb25zKCl7dGhpcy52YWxpZGF0ZUtleWZyYW1lcygpfXZpc2l0VW5rbm93bkF0UnVsZSh0KXtjb25zdCBuPXQuZ2V0Q2hpbGQoMCk7cmV0dXJuIW58fHRoaXMuY3NzRGF0YU1hbmFnZXIuZ2V0QXREaXJlY3RpdmUobi5nZXRUZXh0KCkpPyExOih0aGlzLmFkZEVudHJ5KG4sdGUuVW5rbm93bkF0UnVsZXMsYFVua25vd24gYXQgcnVsZSAke24uZ2V0VGV4dCgpfWApLCEwKX12aXNpdEtleWZyYW1lKHQpe2NvbnN0IG49dC5nZXRLZXl3b3JkKCk7aWYoIW4pcmV0dXJuITE7Y29uc3Qgcj1uLmdldFRleHQoKTtyZXR1cm4gdGhpcy5rZXlmcmFtZXMuYWRkKHQuZ2V0TmFtZSgpLHIsciE9PSJAa2V5ZnJhbWVzIj9uOm51bGwpLCEwfXZhbGlkYXRlS2V5ZnJhbWVzKCl7Y29uc3QgdD1bIkAtd2Via2l0LWtleWZyYW1lcyIsIkAtbW96LWtleWZyYW1lcyIsIkAtby1rZXlmcmFtZXMiXTtmb3IoY29uc3QgbiBpbiB0aGlzLmtleWZyYW1lcy5kYXRhKXtjb25zdCByPXRoaXMua2V5ZnJhbWVzLmRhdGFbbl0ubmFtZXMsaT1yLmluZGV4T2YoIkBrZXlmcmFtZXMiKT09PS0xO2lmKCFpJiZyLmxlbmd0aD09PTEpY29udGludWU7Y29uc3Qgcz10aGlzLmdldE1pc3NpbmdOYW1lcyh0LHIpO2lmKHN8fGkpZm9yKGNvbnN0IGEgb2YgdGhpcy5rZXlmcmFtZXMuZGF0YVtuXS5ub2Rlcyl7aWYoaSl7Y29uc3QgbD1nKCJBbHdheXMgZGVmaW5lIHN0YW5kYXJkIHJ1bGUgJ0BrZXlmcmFtZXMnIHdoZW4gZGVmaW5pbmcga2V5ZnJhbWVzLiIpO3RoaXMuYWRkRW50cnkoYSx0ZS5JbmNsdWRlU3RhbmRhcmRQcm9wZXJ0eVdoZW5Vc2luZ1ZlbmRvclByZWZpeCxsKX1pZihzKXtjb25zdCBsPWcoIkFsd2F5cyBpbmNsdWRlIGFsbCB2ZW5kb3Igc3BlY2lmaWMgcnVsZXM6IE1pc3Npbmc6IHswfSIscyk7dGhpcy5hZGRFbnRyeShhLHRlLkFsbFZlbmRvclByZWZpeGVzLGwpfX19cmV0dXJuITB9dmlzaXRTaW1wbGVTZWxlY3Rvcih0KXtjb25zdCBuPXRoaXMuZG9jdW1lbnRUZXh0LmNoYXJBdCh0Lm9mZnNldCk7cmV0dXJuIHQubGVuZ3RoPT09MSYmbj09PSIqIiYmdGhpcy5hZGRFbnRyeSh0LHRlLlVuaXZlcnNhbFNlbGVjdG9yKSwhMH12aXNpdElkZW50aWZpZXJTZWxlY3Rvcih0KXtyZXR1cm4gdGhpcy5hZGRFbnRyeSh0LHRlLkF2b2lkSWRTZWxlY3RvciksITB9dmlzaXRJbXBvcnQodCl7cmV0dXJuIHRoaXMuYWRkRW50cnkodCx0ZS5JbXBvcnRTdGF0ZW1lbWVudCksITB9dmlzaXRSdWxlU2V0KHQpe2NvbnN0IG49dC5nZXREZWNsYXJhdGlvbnMoKTtpZighbilyZXR1cm4hMTtuLmhhc0NoaWxkcmVuKCl8fHRoaXMuYWRkRW50cnkodC5nZXRTZWxlY3RvcnMoKSx0ZS5FbXB0eVJ1bGVTZXQpO2NvbnN0IHI9W107Zm9yKGNvbnN0IG8gb2Ygbi5nZXRDaGlsZHJlbigpKW8gaW5zdGFuY2VvZiBxZSYmci5wdXNoKG5ldyBKbShvKSk7Y29uc3QgaT1LbShyKTtpZihpLndpZHRoKXtsZXQgbz1bXTtpZihpLnJpZ2h0LnZhbHVlJiYobz1fcihvLGkucmlnaHQucHJvcGVydGllcykpLGkubGVmdC52YWx1ZSYmKG89X3IobyxpLmxlZnQucHJvcGVydGllcykpLG8ubGVuZ3RoIT09MCl7Zm9yKGNvbnN0IGMgb2Ygbyl0aGlzLmFkZEVudHJ5KGMubm9kZSx0ZS5CZXdhcmVPZkJveE1vZGVsU2l6ZSk7dGhpcy5hZGRFbnRyeShpLndpZHRoLm5vZGUsdGUuQmV3YXJlT2ZCb3hNb2RlbFNpemUpfX1pZihpLmhlaWdodCl7bGV0IG89W107aWYoaS50b3AudmFsdWUmJihvPV9yKG8saS50b3AucHJvcGVydGllcykpLGkuYm90dG9tLnZhbHVlJiYobz1fcihvLGkuYm90dG9tLnByb3BlcnRpZXMpKSxvLmxlbmd0aCE9PTApe2Zvcihjb25zdCBjIG9mIG8pdGhpcy5hZGRFbnRyeShjLm5vZGUsdGUuQmV3YXJlT2ZCb3hNb2RlbFNpemUpO3RoaXMuYWRkRW50cnkoaS5oZWlnaHQubm9kZSx0ZS5CZXdhcmVPZkJveE1vZGVsU2l6ZSl9fWxldCBzPXRoaXMuZmV0Y2hXaXRoVmFsdWUociwiZGlzcGxheSIsImlubGluZS1ibG9jayIpO2lmKHMubGVuZ3RoPjApe2NvbnN0IG89dGhpcy5mZXRjaChyLCJmbG9hdCIpO2ZvcihsZXQgYz0wO2M8by5sZW5ndGg7YysrKXtjb25zdCBkPW9bY10ubm9kZSx1PWQuZ2V0VmFsdWUoKTt1JiYhdS5tYXRjaGVzKCJub25lIikmJnRoaXMuYWRkRW50cnkoZCx0ZS5Qcm9wZXJ0eUlnbm9yZWREdWVUb0Rpc3BsYXksZygiaW5saW5lLWJsb2NrIGlzIGlnbm9yZWQgZHVlIHRvIHRoZSBmbG9hdC4gSWYgJ2Zsb2F0JyBoYXMgYSB2YWx1ZSBvdGhlciB0aGFuICdub25lJywgdGhlIGJveCBpcyBmbG9hdGVkIGFuZCAnZGlzcGxheScgaXMgdHJlYXRlZCBhcyAnYmxvY2snIikpfX1pZihzPXRoaXMuZmV0Y2hXaXRoVmFsdWUociwiZGlzcGxheSIsImJsb2NrIikscy5sZW5ndGg+MCl7Y29uc3Qgbz10aGlzLmZldGNoKHIsInZlcnRpY2FsLWFsaWduIik7Zm9yKGxldCBjPTA7YzxvLmxlbmd0aDtjKyspdGhpcy5hZGRFbnRyeShvW2NdLm5vZGUsdGUuUHJvcGVydHlJZ25vcmVkRHVlVG9EaXNwbGF5LGcoIlByb3BlcnR5IGlzIGlnbm9yZWQgZHVlIHRvIHRoZSBkaXNwbGF5LiBXaXRoICdkaXNwbGF5OiBibG9jaycsIHZlcnRpY2FsLWFsaWduIHNob3VsZCBub3QgYmUgdXNlZC4iKSl9Y29uc3QgYT10aGlzLmZldGNoKHIsImZsb2F0Iik7Zm9yKGxldCBvPTA7bzxhLmxlbmd0aDtvKyspe2NvbnN0IGM9YVtvXTt0aGlzLmlzVmFsaWRQcm9wZXJ0eURlY2xhcmF0aW9uKGMpfHx0aGlzLmFkZEVudHJ5KGMubm9kZSx0ZS5Bdm9pZEZsb2F0KX1mb3IobGV0IG89MDtvPHIubGVuZ3RoO28rKyl7Y29uc3QgYz1yW29dO2lmKGMuZnVsbFByb3BlcnR5TmFtZSE9PSJiYWNrZ3JvdW5kIiYmIXRoaXMudmFsaWRQcm9wZXJ0aWVzW2MuZnVsbFByb3BlcnR5TmFtZV0pe2NvbnN0IGQ9Yy5ub2RlLmdldFZhbHVlKCk7aWYoZCYmdGhpcy5kb2N1bWVudFRleHQuY2hhckF0KGQub2Zmc2V0KSE9PSItIil7Y29uc3QgdT10aGlzLmZldGNoKHIsYy5mdWxsUHJvcGVydHlOYW1lKTtpZih1Lmxlbmd0aD4xKWZvcihsZXQgZj0wO2Y8dS5sZW5ndGg7ZisrKXtjb25zdCBtPXVbZl0ubm9kZS5nZXRWYWx1ZSgpO20mJnRoaXMuZG9jdW1lbnRUZXh0LmNoYXJBdChtLm9mZnNldCkhPT0iLSImJnVbZl0hPT1jJiZ0aGlzLmFkZEVudHJ5KGMubm9kZSx0ZS5EdXBsaWNhdGVEZWNsYXJhdGlvbnMpfX19fWlmKCF0LmdldFNlbGVjdG9ycygpLm1hdGNoZXMoIjpleHBvcnQiKSl7Y29uc3Qgbz1uZXcgaWg7bGV0IGM9ITE7Zm9yKGNvbnN0IGQgb2Ygcil7Y29uc3QgdT1kLm5vZGU7aWYodGhpcy5pc0NTU0RlY2xhcmF0aW9uKHUpKXtsZXQgZj1kLmZ1bGxQcm9wZXJ0eU5hbWU7Y29uc3QgbT1mLmNoYXJBdCgwKTtpZihtPT09Ii0iKXtpZihmLmNoYXJBdCgxKSE9PSItIil7IXRoaXMuY3NzRGF0YU1hbmFnZXIuaXNLbm93blByb3BlcnR5KGYpJiYhdGhpcy52YWxpZFByb3BlcnRpZXNbZl0mJnRoaXMuYWRkRW50cnkodS5nZXRQcm9wZXJ0eSgpLHRlLlVua25vd25WZW5kb3JTcGVjaWZpY1Byb3BlcnR5KTtjb25zdCB2PXUuZ2V0Tm9uUHJlZml4ZWRQcm9wZXJ0eU5hbWUoKTtvLmFkZCh2LGYsdS5nZXRQcm9wZXJ0eSgpKX19ZWxzZXtjb25zdCB2PWY7KG09PT0iKiJ8fG09PT0iXyIpJiYodGhpcy5hZGRFbnRyeSh1LmdldFByb3BlcnR5KCksdGUuSUVTdGFySGFjayksZj1mLnN1YnN0cigxKSksIXRoaXMuY3NzRGF0YU1hbmFnZXIuaXNLbm93blByb3BlcnR5KHYpJiYhdGhpcy5jc3NEYXRhTWFuYWdlci5pc0tub3duUHJvcGVydHkoZikmJih0aGlzLnZhbGlkUHJvcGVydGllc1tmXXx8dGhpcy5hZGRFbnRyeSh1LmdldFByb3BlcnR5KCksdGUuVW5rbm93blByb3BlcnR5LGcoIlVua25vd24gcHJvcGVydHk6ICd7MH0nIix1LmdldEZ1bGxQcm9wZXJ0eU5hbWUoKSkpKSxvLmFkZChmLGYsbnVsbCl9fWVsc2UgYz0hMH1pZighYylmb3IoY29uc3QgZCBpbiBvLmRhdGEpe2NvbnN0IHU9by5kYXRhW2RdLGY9dS5uYW1lcyxtPXRoaXMuY3NzRGF0YU1hbmFnZXIuaXNTdGFuZGFyZFByb3BlcnR5KGQpJiZmLmluZGV4T2YoZCk9PT0tMTtpZighbSYmZi5sZW5ndGg9PT0xKWNvbnRpbnVlO2NvbnN0IHY9bmV3IFNldChtP3Uubm9kZXM6W10pO2lmKG0pe2NvbnN0IFI9dGhpcy5nZXRDb250ZXh0dWFsVmVuZG9yU3BlY2lmaWNQc2V1ZG9FbGVtZW50cyh0KTtmb3IoY29uc3QgSSBvZiB1Lm5vZGVzKXtjb25zdCBOPUkuZ2V0TmFtZSgpLEU9Ti5zdWJzdHJpbmcoMCxOLmxlbmd0aC1kLmxlbmd0aCk7Ui5zb21lKEY9PkYuc3RhcnRzV2l0aChFKSkmJnYuZGVsZXRlKEkpfX1jb25zdCB3PVtdO2ZvcihsZXQgUj0wLEk9VXIucHJlZml4ZXMubGVuZ3RoO1I8STtSKyspe2NvbnN0IE49VXIucHJlZml4ZXNbUl07dGhpcy5jc3NEYXRhTWFuYWdlci5pc1N0YW5kYXJkUHJvcGVydHkoTitkKSYmdy5wdXNoKE4rZCl9Y29uc3Qgaz10aGlzLmdldE1pc3NpbmdOYW1lcyh3LGYpO2lmKGt8fG0pZm9yKGNvbnN0IFIgb2YgdS5ub2Rlcyl7aWYobSYmdi5oYXMoUikpe2NvbnN0IEk9ZygiQWxzbyBkZWZpbmUgdGhlIHN0YW5kYXJkIHByb3BlcnR5ICd7MH0nIGZvciBjb21wYXRpYmlsaXR5IixkKTt0aGlzLmFkZEVudHJ5KFIsdGUuSW5jbHVkZVN0YW5kYXJkUHJvcGVydHlXaGVuVXNpbmdWZW5kb3JQcmVmaXgsSSl9aWYoayl7Y29uc3QgST1nKCJBbHdheXMgaW5jbHVkZSBhbGwgdmVuZG9yIHNwZWNpZmljIHByb3BlcnRpZXM6IE1pc3Npbmc6IHswfSIsayk7dGhpcy5hZGRFbnRyeShSLHRlLkFsbFZlbmRvclByZWZpeGVzLEkpfX19fXJldHVybiEwfWdldENvbnRleHR1YWxWZW5kb3JTcGVjaWZpY1BzZXVkb0VsZW1lbnRzKHQpe2Z1bmN0aW9uIG4ocyxhKXtmb3IoY29uc3QgbCBvZiBhLmdldENoaWxkcmVuKCkpe2lmKGwudHlwZT09PWIuUHNldWRvU2VsZWN0b3Ipe2NvbnN0IG89bC5nZXRDaGlsZHJlbigpWzBdPy5nZXRUZXh0KCk7byYmcy5hZGQobyl9bihzLGwpfX1mdW5jdGlvbiByKHMsYSl7aWYoYS50eXBlPT09Yi5SdWxlc2V0KWZvcihjb25zdCBsIG9mIGEuZ2V0U2VsZWN0b3JzKCkuZ2V0Q2hpbGRyZW4oKSluKHMsbCk7cmV0dXJuIGEucGFyZW50P3IocyxhLnBhcmVudCk6dm9pZCAwfWNvbnN0IGk9bmV3IFNldDtyZXR1cm4gcihpLHQpLEFycmF5LmZyb20oaSl9dmlzaXRQcmlvKHQpe3JldHVybiB0aGlzLmFkZEVudHJ5KHQsdGUuQXZvaWRJbXBvcnRhbnQpLCEwfXZpc2l0TnVtZXJpY1ZhbHVlKHQpe2NvbnN0IG49dC5maW5kUGFyZW50KGIuRnVuY3Rpb24pO2lmKG4mJm4uZ2V0TmFtZSgpPT09ImNhbGMiKXJldHVybiEwO2NvbnN0IHI9dC5maW5kUGFyZW50KGIuRGVjbGFyYXRpb24pO2lmKHImJnIuZ2V0VmFsdWUoKSl7Y29uc3Qgcz10LmdldFZhbHVlKCk7aWYoIXMudW5pdHx8amMubGVuZ3RoLmluZGV4T2Yocy51bml0LnRvTG93ZXJDYXNlKCkpPT09LTEpcmV0dXJuITA7cGFyc2VGbG9hdChzLnZhbHVlKT09PTAmJnMudW5pdCYmIXRoaXMudmFsaWRQcm9wZXJ0aWVzW3IuZ2V0RnVsbFByb3BlcnR5TmFtZSgpXSYmdGhpcy5hZGRFbnRyeSh0LHRlLlplcm9XaXRoVW5pdCl9cmV0dXJuITB9dmlzaXRGb250RmFjZSh0KXtjb25zdCBuPXQuZ2V0RGVjbGFyYXRpb25zKCk7aWYoIW4pcmV0dXJuITE7bGV0IHI9ITEsaT0hMSxzPSExO2Zvcihjb25zdCBhIG9mIG4uZ2V0Q2hpbGRyZW4oKSlpZih0aGlzLmlzQ1NTRGVjbGFyYXRpb24oYSkpe2NvbnN0IGw9YS5nZXRQcm9wZXJ0eSgpLmdldE5hbWUoKS50b0xvd2VyQ2FzZSgpO2w9PT0ic3JjIiYmKHI9ITApLGw9PT0iZm9udC1mYW1pbHkiJiYoaT0hMCl9ZWxzZSBzPSEwO3JldHVybiFzJiYoIXJ8fCFpKSYmdGhpcy5hZGRFbnRyeSh0LHRlLlJlcXVpcmVkUHJvcGVydGllc0ZvckZvbnRGYWNlKSwhMH1pc0NTU0RlY2xhcmF0aW9uKHQpe2lmKHQgaW5zdGFuY2VvZiBxZSl7aWYoIXQuZ2V0VmFsdWUoKSlyZXR1cm4hMTtjb25zdCBuPXQuZ2V0UHJvcGVydHkoKTtpZighbilyZXR1cm4hMTtjb25zdCByPW4uZ2V0SWRlbnRpZmllcigpO3JldHVybiEoIXJ8fHIuY29udGFpbnNJbnRlcnBvbGF0aW9uKCkpfXJldHVybiExfXZpc2l0SGV4Q29sb3JWYWx1ZSh0KXtjb25zdCBuPXQubGVuZ3RoO3JldHVybiBuIT09OSYmbiE9PTcmJm4hPT01JiZuIT09NCYmdGhpcy5hZGRFbnRyeSh0LHRlLkhleENvbG9yTGVuZ3RoKSwhMX12aXNpdEZ1bmN0aW9uKHQpe2NvbnN0IG49dC5nZXROYW1lKCkudG9Mb3dlckNhc2UoKTtsZXQgcj0tMSxpPTA7c3dpdGNoKG4pe2Nhc2UicmdiKCI6Y2FzZSJoc2woIjpyPTM7YnJlYWs7Y2FzZSJyZ2JhKCI6Y2FzZSJoc2xhKCI6cj00O2JyZWFrfXJldHVybiByIT09LTEmJih0LmdldEFyZ3VtZW50cygpLmFjY2VwdChzPT5zIGluc3RhbmNlb2YgVmk/KGkrPTEsITEpOiEwKSxpIT09ciYmdGhpcy5hZGRFbnRyeSh0LHRlLkFyZ3NJbkNvbG9yRnVuY3Rpb24pKSwhMH19O3NoLnByZWZpeGVzPVsiLW1zLSIsIi1tb3otIiwiLW8tIiwiLXdlYmtpdC0iXTt2YXIgQ3M9Y2xhc3N7Y29uc3RydWN0b3IoZSl7dGhpcy5jc3NEYXRhTWFuYWdlcj1lfWNvbmZpZ3VyZShlKXt0aGlzLnNldHRpbmdzPWV9ZG9WYWxpZGF0aW9uKGUsdCxuPXRoaXMuc2V0dGluZ3Mpe2lmKG4mJm4udmFsaWRhdGU9PT0hMSlyZXR1cm5bXTtjb25zdCByPVtdO3IucHVzaC5hcHBseShyLHJtLmVudHJpZXModCkpLHIucHVzaC5hcHBseShyLHNoLmVudHJpZXModCxlLG5ldyBIbShuJiZuLmxpbnQpLHRoaXMuY3NzRGF0YU1hbmFnZXIpKTtjb25zdCBpPVtdO2Zvcihjb25zdCBhIGluIHRlKWkucHVzaCh0ZVthXS5pZCk7ZnVuY3Rpb24gcyhhKXtjb25zdCBsPVguY3JlYXRlKGUucG9zaXRpb25BdChhLmdldE9mZnNldCgpKSxlLnBvc2l0aW9uQXQoYS5nZXRPZmZzZXQoKSthLmdldExlbmd0aCgpKSksbz1lLmxhbmd1YWdlSWQ7cmV0dXJue2NvZGU6YS5nZXRSdWxlKCkuaWQsc291cmNlOm8sbWVzc2FnZTphLmdldE1lc3NhZ2UoKSxzZXZlcml0eTphLmdldExldmVsKCk9PT1SZS5XYXJuaW5nP3ByLldhcm5pbmc6cHIuRXJyb3IscmFuZ2U6bH19cmV0dXJuIHIuZmlsdGVyKGE9PmEuZ2V0TGV2ZWwoKSE9PVJlLklnbm9yZSkubWFwKHMpfX0sYWg9NDcsWm09MTAsZWY9MTMsdGY9MTIsbmY9MzYscmY9MzUsc2Y9MTIzLExuPTYxLGFmPTMzLG9mPTYwLGxmPTYyLF9zPTQ2LGF0PXAuQ3VzdG9tVG9rZW4sa3M9YXQrKyxOcj1hdCsrO2F0Kys7dmFyIG9oPWF0KyssbGg9YXQrKyxFcz1hdCsrLEZzPWF0KyssRHI9YXQrKzthdCsrO3ZhciBjaD1jbGFzcyBleHRlbmRzIFNue3NjYW5OZXh0KGUpe2lmKHRoaXMuc3RyZWFtLmFkdmFuY2VJZkNoYXIobmYpKXtjb25zdCB0PVsiJCJdO2lmKHRoaXMuaWRlbnQodCkpcmV0dXJuIHRoaXMuZmluaXNoVG9rZW4oZSxrcyx0LmpvaW4oIiIpKTt0aGlzLnN0cmVhbS5nb0JhY2tUbyhlKX1yZXR1cm4gdGhpcy5zdHJlYW0uYWR2YW5jZUlmQ2hhcnMoW3JmLHNmXSk/dGhpcy5maW5pc2hUb2tlbihlLE5yKTp0aGlzLnN0cmVhbS5hZHZhbmNlSWZDaGFycyhbTG4sTG5dKT90aGlzLmZpbmlzaFRva2VuKGUsb2gpOnRoaXMuc3RyZWFtLmFkdmFuY2VJZkNoYXJzKFthZixMbl0pP3RoaXMuZmluaXNoVG9rZW4oZSxsaCk6dGhpcy5zdHJlYW0uYWR2YW5jZUlmQ2hhcihvZik/dGhpcy5zdHJlYW0uYWR2YW5jZUlmQ2hhcihMbik/dGhpcy5maW5pc2hUb2tlbihlLEZzKTp0aGlzLmZpbmlzaFRva2VuKGUscC5EZWxpbSk6dGhpcy5zdHJlYW0uYWR2YW5jZUlmQ2hhcihsZik/dGhpcy5zdHJlYW0uYWR2YW5jZUlmQ2hhcihMbik/dGhpcy5maW5pc2hUb2tlbihlLEVzKTp0aGlzLmZpbmlzaFRva2VuKGUscC5EZWxpbSk6dGhpcy5zdHJlYW0uYWR2YW5jZUlmQ2hhcnMoW19zLF9zLF9zXSk/dGhpcy5maW5pc2hUb2tlbihlLERyKTpzdXBlci5zY2FuTmV4dChlKX1jb21tZW50KCl7cmV0dXJuIHN1cGVyLmNvbW1lbnQoKT8hMDohdGhpcy5pblVSTCYmdGhpcy5zdHJlYW0uYWR2YW5jZUlmQ2hhcnMoW2FoLGFoXSk/KHRoaXMuc3RyZWFtLmFkdmFuY2VXaGlsZUNoYXIoZT0+e3N3aXRjaChlKXtjYXNlIFptOmNhc2UgZWY6Y2FzZSB0ZjpyZXR1cm4hMTtkZWZhdWx0OnJldHVybiEwfX0pLCEwKTohMX19LFJzPWNsYXNze2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5pZD1lLHRoaXMubWVzc2FnZT10fX0sTnM9e0Zyb21FeHBlY3RlZDpuZXcgUnMoInNjc3MtZnJvbWV4cGVjdGVkIixnKCInZnJvbScgZXhwZWN0ZWQiKSksVGhyb3VnaE9yVG9FeHBlY3RlZDpuZXcgUnMoInNjc3MtdGhyb3VnaGV4cGVjdGVkIixnKCIndGhyb3VnaCcgb3IgJ3RvJyBleHBlY3RlZCIpKSxJbkV4cGVjdGVkOm5ldyBScygic2Nzcy1mcm9tZXhwZWN0ZWQiLGcoIidpbicgZXhwZWN0ZWQiKSl9LGNmPWNsYXNzIGV4dGVuZHMgQ3J7Y29uc3RydWN0b3IoKXtzdXBlcihuZXcgY2gpfV9wYXJzZVN0eWxlc2hlZXRTdGF0ZW1lbnQoZT0hMSl7cmV0dXJuIHRoaXMucGVlayhwLkF0S2V5d29yZCk/dGhpcy5fcGFyc2VXYXJuQW5kRGVidWcoKXx8dGhpcy5fcGFyc2VDb250cm9sU3RhdGVtZW50KCl8fHRoaXMuX3BhcnNlTWl4aW5EZWNsYXJhdGlvbigpfHx0aGlzLl9wYXJzZU1peGluQ29udGVudCgpfHx0aGlzLl9wYXJzZU1peGluUmVmZXJlbmNlKCl8fHRoaXMuX3BhcnNlRnVuY3Rpb25EZWNsYXJhdGlvbigpfHx0aGlzLl9wYXJzZUZvcndhcmQoKXx8dGhpcy5fcGFyc2VVc2UoKXx8dGhpcy5fcGFyc2VSdWxlc2V0KGUpfHxzdXBlci5fcGFyc2VTdHlsZXNoZWV0QXRTdGF0ZW1lbnQoZSk6dGhpcy5fcGFyc2VSdWxlc2V0KCEwKXx8dGhpcy5fcGFyc2VWYXJpYWJsZURlY2xhcmF0aW9uKCl9X3BhcnNlSW1wb3J0KCl7aWYoIXRoaXMucGVla0tleXdvcmQoIkBpbXBvcnQiKSlyZXR1cm4gbnVsbDtjb25zdCBlPXRoaXMuY3JlYXRlKE9pKTtpZih0aGlzLmNvbnN1bWVUb2tlbigpLCFlLmFkZENoaWxkKHRoaXMuX3BhcnNlVVJJTGl0ZXJhbCgpKSYmIWUuYWRkQ2hpbGQodGhpcy5fcGFyc2VTdHJpbmdMaXRlcmFsKCkpKXJldHVybiB0aGlzLmZpbmlzaChlLHkuVVJJT3JTdHJpbmdFeHBlY3RlZCk7Zm9yKDt0aGlzLmFjY2VwdChwLkNvbW1hKTspaWYoIWUuYWRkQ2hpbGQodGhpcy5fcGFyc2VVUklMaXRlcmFsKCkpJiYhZS5hZGRDaGlsZCh0aGlzLl9wYXJzZVN0cmluZ0xpdGVyYWwoKSkpcmV0dXJuIHRoaXMuZmluaXNoKGUseS5VUklPclN0cmluZ0V4cGVjdGVkKTtyZXR1cm4gdGhpcy5fY29tcGxldGVQYXJzZUltcG9ydChlKX1fcGFyc2VWYXJpYWJsZURlY2xhcmF0aW9uKGU9W10pe2lmKCF0aGlzLnBlZWsoa3MpKXJldHVybiBudWxsO2NvbnN0IHQ9dGhpcy5jcmVhdGUoaHIpO2lmKCF0LnNldFZhcmlhYmxlKHRoaXMuX3BhcnNlVmFyaWFibGUoKSkpcmV0dXJuIG51bGw7aWYoIXRoaXMuYWNjZXB0KHAuQ29sb24pKXJldHVybiB0aGlzLmZpbmlzaCh0LHkuQ29sb25FeHBlY3RlZCk7aWYodGhpcy5wcmV2VG9rZW4mJih0LmNvbG9uUG9zaXRpb249dGhpcy5wcmV2VG9rZW4ub2Zmc2V0KSwhdC5zZXRWYWx1ZSh0aGlzLl9wYXJzZUV4cHIoKSkpcmV0dXJuIHRoaXMuZmluaXNoKHQseS5WYXJpYWJsZVZhbHVlRXhwZWN0ZWQsW10sZSk7Zm9yKDt0aGlzLnBlZWsocC5FeGNsYW1hdGlvbik7KWlmKCF0LmFkZENoaWxkKHRoaXMuX3RyeVBhcnNlUHJpbygpKSl7aWYodGhpcy5jb25zdW1lVG9rZW4oKSwhdGhpcy5wZWVrUmVnRXhwKHAuSWRlbnQsL14oZGVmYXVsdHxnbG9iYWwpJC8pKXJldHVybiB0aGlzLmZpbmlzaCh0LHkuVW5rbm93bktleXdvcmQpO3RoaXMuY29uc3VtZVRva2VuKCl9cmV0dXJuIHRoaXMucGVlayhwLlNlbWlDb2xvbikmJih0LnNlbWljb2xvblBvc2l0aW9uPXRoaXMudG9rZW4ub2Zmc2V0KSx0aGlzLmZpbmlzaCh0KX1fcGFyc2VNZWRpYUNvbmRpdGlvbigpe3JldHVybiB0aGlzLl9wYXJzZUludGVycG9sYXRpb24oKXx8c3VwZXIuX3BhcnNlTWVkaWFDb25kaXRpb24oKX1fcGFyc2VNZWRpYUZlYXR1cmVSYW5nZU9wZXJhdG9yKCl7cmV0dXJuIHRoaXMuYWNjZXB0KEZzKXx8dGhpcy5hY2NlcHQoRXMpfHxzdXBlci5fcGFyc2VNZWRpYUZlYXR1cmVSYW5nZU9wZXJhdG9yKCl9X3BhcnNlTWVkaWFGZWF0dXJlTmFtZSgpe3JldHVybiB0aGlzLl9wYXJzZU1vZHVsZU1lbWJlcigpfHx0aGlzLl9wYXJzZUZ1bmN0aW9uKCl8fHRoaXMuX3BhcnNlSWRlbnQoKXx8dGhpcy5fcGFyc2VWYXJpYWJsZSgpfV9wYXJzZUtleWZyYW1lU2VsZWN0b3IoKXtyZXR1cm4gdGhpcy5fdHJ5UGFyc2VLZXlmcmFtZVNlbGVjdG9yKCl8fHRoaXMuX3BhcnNlQ29udHJvbFN0YXRlbWVudCh0aGlzLl9wYXJzZUtleWZyYW1lU2VsZWN0b3IuYmluZCh0aGlzKSl8fHRoaXMuX3BhcnNlV2FybkFuZERlYnVnKCl8fHRoaXMuX3BhcnNlTWl4aW5SZWZlcmVuY2UoKXx8dGhpcy5fcGFyc2VGdW5jdGlvbkRlY2xhcmF0aW9uKCl8fHRoaXMuX3BhcnNlVmFyaWFibGVEZWNsYXJhdGlvbigpfHx0aGlzLl9wYXJzZU1peGluQ29udGVudCgpfV9wYXJzZVZhcmlhYmxlKCl7aWYoIXRoaXMucGVlayhrcykpcmV0dXJuIG51bGw7Y29uc3QgZT10aGlzLmNyZWF0ZShqaSk7cmV0dXJuIHRoaXMuY29uc3VtZVRva2VuKCksZX1fcGFyc2VNb2R1bGVNZW1iZXIoKXtjb25zdCBlPXRoaXMubWFyaygpLHQ9dGhpcy5jcmVhdGUoTmwpO3JldHVybiB0LnNldElkZW50aWZpZXIodGhpcy5fcGFyc2VJZGVudChbSi5Nb2R1bGVdKSk/dGhpcy5oYXNXaGl0ZXNwYWNlKCl8fCF0aGlzLmFjY2VwdERlbGltKCIuIil8fHRoaXMuaGFzV2hpdGVzcGFjZSgpPyh0aGlzLnJlc3RvcmVBdE1hcmsoZSksbnVsbCk6dC5hZGRDaGlsZCh0aGlzLl9wYXJzZVZhcmlhYmxlKCl8fHRoaXMuX3BhcnNlRnVuY3Rpb24oKSk/dDp0aGlzLmZpbmlzaCh0LHkuSWRlbnRpZmllck9yVmFyaWFibGVFeHBlY3RlZCk6bnVsbH1fcGFyc2VJZGVudChlKXtpZighdGhpcy5wZWVrKHAuSWRlbnQpJiYhdGhpcy5wZWVrKE5yKSYmIXRoaXMucGVla0RlbGltKCItIikpcmV0dXJuIG51bGw7Y29uc3QgdD10aGlzLmNyZWF0ZShNZSk7dC5yZWZlcmVuY2VUeXBlcz1lLHQuaXNDdXN0b21Qcm9wZXJ0eT10aGlzLnBlZWtSZWdFeHAocC5JZGVudCwvXi0tLyk7bGV0IG49ITE7Y29uc3Qgcj0oKT0+e2NvbnN0IGk9dGhpcy5tYXJrKCk7cmV0dXJuIHRoaXMuYWNjZXB0RGVsaW0oIi0iKSYmKHRoaXMuaGFzV2hpdGVzcGFjZSgpfHx0aGlzLmFjY2VwdERlbGltKCItIiksdGhpcy5oYXNXaGl0ZXNwYWNlKCkpPyh0aGlzLnJlc3RvcmVBdE1hcmsoaSksbnVsbCk6dGhpcy5fcGFyc2VJbnRlcnBvbGF0aW9uKCl9O2Zvcig7KHRoaXMuYWNjZXB0KHAuSWRlbnQpfHx0LmFkZENoaWxkKHIoKSl8fG4mJnRoaXMuYWNjZXB0UmVnZXhwKC9eW1x3LV0vKSkmJihuPSEwLCF0aGlzLmhhc1doaXRlc3BhY2UoKSk7KTtyZXR1cm4gbj90aGlzLmZpbmlzaCh0KTpudWxsfV9wYXJzZVRlcm1FeHByZXNzaW9uKCl7cmV0dXJuIHRoaXMuX3BhcnNlTW9kdWxlTWVtYmVyKCl8fHRoaXMuX3BhcnNlVmFyaWFibGUoKXx8dGhpcy5fcGFyc2VOZXN0aW5nU2VsZWN0b3IoKXx8c3VwZXIuX3BhcnNlVGVybUV4cHJlc3Npb24oKX1fcGFyc2VJbnRlcnBvbGF0aW9uKCl7aWYodGhpcy5wZWVrKE5yKSl7Y29uc3QgZT10aGlzLmNyZWF0ZShxaSk7cmV0dXJuIHRoaXMuY29uc3VtZVRva2VuKCksIWUuYWRkQ2hpbGQodGhpcy5fcGFyc2VFeHByKCkpJiYhdGhpcy5fcGFyc2VOZXN0aW5nU2VsZWN0b3IoKT90aGlzLmFjY2VwdChwLkN1cmx5Uik/dGhpcy5maW5pc2goZSk6dGhpcy5maW5pc2goZSx5LkV4cHJlc3Npb25FeHBlY3RlZCk6dGhpcy5hY2NlcHQocC5DdXJseVIpP3RoaXMuZmluaXNoKGUpOnRoaXMuZmluaXNoKGUseS5SaWdodEN1cmx5RXhwZWN0ZWQpfXJldHVybiBudWxsfV9wYXJzZU9wZXJhdG9yKCl7aWYodGhpcy5wZWVrKG9oKXx8dGhpcy5wZWVrKGxoKXx8dGhpcy5wZWVrKEVzKXx8dGhpcy5wZWVrKEZzKXx8dGhpcy5wZWVrRGVsaW0oIj4iKXx8dGhpcy5wZWVrRGVsaW0oIjwiKXx8dGhpcy5wZWVrSWRlbnQoImFuZCIpfHx0aGlzLnBlZWtJZGVudCgib3IiKXx8dGhpcy5wZWVrRGVsaW0oIiUiKSl7Y29uc3QgZT10aGlzLmNyZWF0ZU5vZGUoYi5PcGVyYXRvcik7cmV0dXJuIHRoaXMuY29uc3VtZVRva2VuKCksdGhpcy5maW5pc2goZSl9cmV0dXJuIHN1cGVyLl9wYXJzZU9wZXJhdG9yKCl9X3BhcnNlVW5hcnlPcGVyYXRvcigpe2lmKHRoaXMucGVla0lkZW50KCJub3QiKSl7Y29uc3QgZT10aGlzLmNyZWF0ZShPKTtyZXR1cm4gdGhpcy5jb25zdW1lVG9rZW4oKSx0aGlzLmZpbmlzaChlKX1yZXR1cm4gc3VwZXIuX3BhcnNlVW5hcnlPcGVyYXRvcigpfV9wYXJzZVJ1bGVTZXREZWNsYXJhdGlvbigpe3JldHVybiB0aGlzLnBlZWsocC5BdEtleXdvcmQpP3RoaXMuX3BhcnNlS2V5ZnJhbWUoKXx8dGhpcy5fcGFyc2VJbXBvcnQoKXx8dGhpcy5fcGFyc2VNZWRpYSghMCl8fHRoaXMuX3BhcnNlRm9udEZhY2UoKXx8dGhpcy5fcGFyc2VXYXJuQW5kRGVidWcoKXx8dGhpcy5fcGFyc2VDb250cm9sU3RhdGVtZW50KCl8fHRoaXMuX3BhcnNlRnVuY3Rpb25EZWNsYXJhdGlvbigpfHx0aGlzLl9wYXJzZUV4dGVuZHMoKXx8dGhpcy5fcGFyc2VNaXhpblJlZmVyZW5jZSgpfHx0aGlzLl9wYXJzZU1peGluQ29udGVudCgpfHx0aGlzLl9wYXJzZU1peGluRGVjbGFyYXRpb24oKXx8dGhpcy5fcGFyc2VSdWxlc2V0KCEwKXx8dGhpcy5fcGFyc2VTdXBwb3J0cyghMCl8fHRoaXMuX3BhcnNlTGF5ZXIoKXx8dGhpcy5fcGFyc2VQcm9wZXJ0eUF0UnVsZSgpfHx0aGlzLl9wYXJzZUNvbnRhaW5lcighMCl8fHRoaXMuX3BhcnNlUnVsZVNldERlY2xhcmF0aW9uQXRTdGF0ZW1lbnQoKTp0aGlzLl9wYXJzZVZhcmlhYmxlRGVjbGFyYXRpb24oKXx8dGhpcy5fdHJ5UGFyc2VSdWxlc2V0KCEwKXx8dGhpcy5fcGFyc2VEZWNsYXJhdGlvbigpfV9wYXJzZURlY2xhcmF0aW9uKGUpe2NvbnN0IHQ9dGhpcy5fdHJ5UGFyc2VDdXN0b21Qcm9wZXJ0eURlY2xhcmF0aW9uKGUpO2lmKHQpcmV0dXJuIHQ7Y29uc3Qgbj10aGlzLmNyZWF0ZShxZSk7aWYoIW4uc2V0UHJvcGVydHkodGhpcy5fcGFyc2VQcm9wZXJ0eSgpKSlyZXR1cm4gbnVsbDtpZighdGhpcy5hY2NlcHQocC5Db2xvbikpcmV0dXJuIHRoaXMuZmluaXNoKG4seS5Db2xvbkV4cGVjdGVkLFtwLkNvbG9uXSxlfHxbcC5TZW1pQ29sb25dKTt0aGlzLnByZXZUb2tlbiYmKG4uY29sb25Qb3NpdGlvbj10aGlzLnByZXZUb2tlbi5vZmZzZXQpO2xldCByPSExO2lmKG4uc2V0VmFsdWUodGhpcy5fcGFyc2VFeHByKCkpJiYocj0hMCxuLmFkZENoaWxkKHRoaXMuX3BhcnNlUHJpbygpKSksdGhpcy5wZWVrKHAuQ3VybHlMKSluLnNldE5lc3RlZFByb3BlcnRpZXModGhpcy5fcGFyc2VOZXN0ZWRQcm9wZXJ0aWVzKCkpO2Vsc2UgaWYoIXIpcmV0dXJuIHRoaXMuZmluaXNoKG4seS5Qcm9wZXJ0eVZhbHVlRXhwZWN0ZWQpO3JldHVybiB0aGlzLnBlZWsocC5TZW1pQ29sb24pJiYobi5zZW1pY29sb25Qb3NpdGlvbj10aGlzLnRva2VuLm9mZnNldCksdGhpcy5maW5pc2gobil9X3BhcnNlTmVzdGVkUHJvcGVydGllcygpe2NvbnN0IGU9dGhpcy5jcmVhdGUoU2wpO3JldHVybiB0aGlzLl9wYXJzZUJvZHkoZSx0aGlzLl9wYXJzZURlY2xhcmF0aW9uLmJpbmQodGhpcykpfV9wYXJzZUV4dGVuZHMoKXtpZih0aGlzLnBlZWtLZXl3b3JkKCJAZXh0ZW5kIikpe2NvbnN0IGU9dGhpcy5jcmVhdGUoRW4pO2lmKHRoaXMuY29uc3VtZVRva2VuKCksIWUuZ2V0U2VsZWN0b3JzKCkuYWRkQ2hpbGQodGhpcy5fcGFyc2VTaW1wbGVTZWxlY3RvcigpKSlyZXR1cm4gdGhpcy5maW5pc2goZSx5LlNlbGVjdG9yRXhwZWN0ZWQpO2Zvcig7dGhpcy5hY2NlcHQocC5Db21tYSk7KWUuZ2V0U2VsZWN0b3JzKCkuYWRkQ2hpbGQodGhpcy5fcGFyc2VTaW1wbGVTZWxlY3RvcigpKTtyZXR1cm4gdGhpcy5hY2NlcHQocC5FeGNsYW1hdGlvbikmJiF0aGlzLmFjY2VwdElkZW50KCJvcHRpb25hbCIpP3RoaXMuZmluaXNoKGUseS5Vbmtub3duS2V5d29yZCk6dGhpcy5maW5pc2goZSl9cmV0dXJuIG51bGx9X3BhcnNlU2ltcGxlU2VsZWN0b3JCb2R5KCl7cmV0dXJuIHRoaXMuX3BhcnNlU2VsZWN0b3JQbGFjZWhvbGRlcigpfHxzdXBlci5fcGFyc2VTaW1wbGVTZWxlY3RvckJvZHkoKX1fcGFyc2VOZXN0aW5nU2VsZWN0b3IoKXtpZih0aGlzLnBlZWtEZWxpbSgiJiIpKXtjb25zdCBlPXRoaXMuY3JlYXRlTm9kZShiLlNlbGVjdG9yQ29tYmluYXRvcik7Zm9yKHRoaXMuY29uc3VtZVRva2VuKCk7IXRoaXMuaGFzV2hpdGVzcGFjZSgpJiYodGhpcy5hY2NlcHREZWxpbSgiLSIpfHx0aGlzLmFjY2VwdChwLk51bSl8fHRoaXMuYWNjZXB0KHAuRGltZW5zaW9uKXx8ZS5hZGRDaGlsZCh0aGlzLl9wYXJzZUlkZW50KCkpfHx0aGlzLmFjY2VwdERlbGltKCImIikpOyk7cmV0dXJuIHRoaXMuZmluaXNoKGUpfXJldHVybiBudWxsfV9wYXJzZVNlbGVjdG9yUGxhY2Vob2xkZXIoKXtpZih0aGlzLnBlZWtEZWxpbSgiJSIpKXtjb25zdCBlPXRoaXMuY3JlYXRlTm9kZShiLlNlbGVjdG9yUGxhY2Vob2xkZXIpO3JldHVybiB0aGlzLmNvbnN1bWVUb2tlbigpLHRoaXMuX3BhcnNlSWRlbnQoKSx0aGlzLmZpbmlzaChlKX1lbHNlIGlmKHRoaXMucGVla0tleXdvcmQoIkBhdC1yb290Iikpe2NvbnN0IGU9dGhpcy5jcmVhdGVOb2RlKGIuU2VsZWN0b3JQbGFjZWhvbGRlcik7aWYodGhpcy5jb25zdW1lVG9rZW4oKSx0aGlzLmFjY2VwdChwLlBhcmVudGhlc2lzTCkpe2lmKCF0aGlzLmFjY2VwdElkZW50KCJ3aXRoIikmJiF0aGlzLmFjY2VwdElkZW50KCJ3aXRob3V0IikpcmV0dXJuIHRoaXMuZmluaXNoKGUseS5JZGVudGlmaWVyRXhwZWN0ZWQpO2lmKCF0aGlzLmFjY2VwdChwLkNvbG9uKSlyZXR1cm4gdGhpcy5maW5pc2goZSx5LkNvbG9uRXhwZWN0ZWQpO2lmKCFlLmFkZENoaWxkKHRoaXMuX3BhcnNlSWRlbnQoKSkpcmV0dXJuIHRoaXMuZmluaXNoKGUseS5JZGVudGlmaWVyRXhwZWN0ZWQpO2lmKCF0aGlzLmFjY2VwdChwLlBhcmVudGhlc2lzUikpcmV0dXJuIHRoaXMuZmluaXNoKGUseS5SaWdodFBhcmVudGhlc2lzRXhwZWN0ZWQsW3AuQ3VybHlSXSl9cmV0dXJuIHRoaXMuZmluaXNoKGUpfXJldHVybiBudWxsfV9wYXJzZUVsZW1lbnROYW1lKCl7Y29uc3QgZT10aGlzLm1hcmsoKSx0PXN1cGVyLl9wYXJzZUVsZW1lbnROYW1lKCk7cmV0dXJuIHQmJiF0aGlzLmhhc1doaXRlc3BhY2UoKSYmdGhpcy5wZWVrKHAuUGFyZW50aGVzaXNMKT8odGhpcy5yZXN0b3JlQXRNYXJrKGUpLG51bGwpOnR9X3RyeVBhcnNlUHNldWRvSWRlbnRpZmllcigpe3JldHVybiB0aGlzLl9wYXJzZUludGVycG9sYXRpb24oKXx8c3VwZXIuX3RyeVBhcnNlUHNldWRvSWRlbnRpZmllcigpfV9wYXJzZVdhcm5BbmREZWJ1Zygpe2lmKCF0aGlzLnBlZWtLZXl3b3JkKCJAZGVidWciKSYmIXRoaXMucGVla0tleXdvcmQoIkB3YXJuIikmJiF0aGlzLnBlZWtLZXl3b3JkKCJAZXJyb3IiKSlyZXR1cm4gbnVsbDtjb25zdCBlPXRoaXMuY3JlYXRlTm9kZShiLkRlYnVnKTtyZXR1cm4gdGhpcy5jb25zdW1lVG9rZW4oKSxlLmFkZENoaWxkKHRoaXMuX3BhcnNlRXhwcigpKSx0aGlzLmZpbmlzaChlKX1fcGFyc2VDb250cm9sU3RhdGVtZW50KGU9dGhpcy5fcGFyc2VSdWxlU2V0RGVjbGFyYXRpb24uYmluZCh0aGlzKSl7cmV0dXJuIHRoaXMucGVlayhwLkF0S2V5d29yZCk/dGhpcy5fcGFyc2VJZlN0YXRlbWVudChlKXx8dGhpcy5fcGFyc2VGb3JTdGF0ZW1lbnQoZSl8fHRoaXMuX3BhcnNlRWFjaFN0YXRlbWVudChlKXx8dGhpcy5fcGFyc2VXaGlsZVN0YXRlbWVudChlKTpudWxsfV9wYXJzZUlmU3RhdGVtZW50KGUpe3JldHVybiB0aGlzLnBlZWtLZXl3b3JkKCJAaWYiKT90aGlzLl9pbnRlcm5hbFBhcnNlSWZTdGF0ZW1lbnQoZSk6bnVsbH1faW50ZXJuYWxQYXJzZUlmU3RhdGVtZW50KGUpe2NvbnN0IHQ9dGhpcy5jcmVhdGUoRnApO2lmKHRoaXMuY29uc3VtZVRva2VuKCksIXQuc2V0RXhwcmVzc2lvbih0aGlzLl9wYXJzZUV4cHIoITApKSlyZXR1cm4gdGhpcy5maW5pc2godCx5LkV4cHJlc3Npb25FeHBlY3RlZCk7aWYodGhpcy5fcGFyc2VCb2R5KHQsZSksdGhpcy5hY2NlcHRLZXl3b3JkKCJAZWxzZSIpKXtpZih0aGlzLnBlZWtJZGVudCgiaWYiKSl0LnNldEVsc2VDbGF1c2UodGhpcy5faW50ZXJuYWxQYXJzZUlmU3RhdGVtZW50KGUpKTtlbHNlIGlmKHRoaXMucGVlayhwLkN1cmx5TCkpe2NvbnN0IG49dGhpcy5jcmVhdGUoSXApO3RoaXMuX3BhcnNlQm9keShuLGUpLHQuc2V0RWxzZUNsYXVzZShuKX19cmV0dXJuIHRoaXMuZmluaXNoKHQpfV9wYXJzZUZvclN0YXRlbWVudChlKXtpZighdGhpcy5wZWVrS2V5d29yZCgiQGZvciIpKXJldHVybiBudWxsO2NvbnN0IHQ9dGhpcy5jcmVhdGUoUnApO3JldHVybiB0aGlzLmNvbnN1bWVUb2tlbigpLHQuc2V0VmFyaWFibGUodGhpcy5fcGFyc2VWYXJpYWJsZSgpKT90aGlzLmFjY2VwdElkZW50KCJmcm9tIik/dC5hZGRDaGlsZCh0aGlzLl9wYXJzZUJpbmFyeUV4cHIoKSk/IXRoaXMuYWNjZXB0SWRlbnQoInRvIikmJiF0aGlzLmFjY2VwdElkZW50KCJ0aHJvdWdoIik/dGhpcy5maW5pc2godCxOcy5UaHJvdWdoT3JUb0V4cGVjdGVkLFtwLkN1cmx5Ul0pOnQuYWRkQ2hpbGQodGhpcy5fcGFyc2VCaW5hcnlFeHByKCkpP3RoaXMuX3BhcnNlQm9keSh0LGUpOnRoaXMuZmluaXNoKHQseS5FeHByZXNzaW9uRXhwZWN0ZWQsW3AuQ3VybHlSXSk6dGhpcy5maW5pc2godCx5LkV4cHJlc3Npb25FeHBlY3RlZCxbcC5DdXJseVJdKTp0aGlzLmZpbmlzaCh0LE5zLkZyb21FeHBlY3RlZCxbcC5DdXJseVJdKTp0aGlzLmZpbmlzaCh0LHkuVmFyaWFibGVOYW1lRXhwZWN0ZWQsW3AuQ3VybHlSXSl9X3BhcnNlRWFjaFN0YXRlbWVudChlKXtpZighdGhpcy5wZWVrS2V5d29yZCgiQGVhY2giKSlyZXR1cm4gbnVsbDtjb25zdCB0PXRoaXMuY3JlYXRlKE5wKTt0aGlzLmNvbnN1bWVUb2tlbigpO2NvbnN0IG49dC5nZXRWYXJpYWJsZXMoKTtpZighbi5hZGRDaGlsZCh0aGlzLl9wYXJzZVZhcmlhYmxlKCkpKXJldHVybiB0aGlzLmZpbmlzaCh0LHkuVmFyaWFibGVOYW1lRXhwZWN0ZWQsW3AuQ3VybHlSXSk7Zm9yKDt0aGlzLmFjY2VwdChwLkNvbW1hKTspaWYoIW4uYWRkQ2hpbGQodGhpcy5fcGFyc2VWYXJpYWJsZSgpKSlyZXR1cm4gdGhpcy5maW5pc2godCx5LlZhcmlhYmxlTmFtZUV4cGVjdGVkLFtwLkN1cmx5Ul0pO3JldHVybiB0aGlzLmZpbmlzaChuKSx0aGlzLmFjY2VwdElkZW50KCJpbiIpP3QuYWRkQ2hpbGQodGhpcy5fcGFyc2VFeHByKCkpP3RoaXMuX3BhcnNlQm9keSh0LGUpOnRoaXMuZmluaXNoKHQseS5FeHByZXNzaW9uRXhwZWN0ZWQsW3AuQ3VybHlSXSk6dGhpcy5maW5pc2godCxOcy5JbkV4cGVjdGVkLFtwLkN1cmx5Ul0pfV9wYXJzZVdoaWxlU3RhdGVtZW50KGUpe2lmKCF0aGlzLnBlZWtLZXl3b3JkKCJAd2hpbGUiKSlyZXR1cm4gbnVsbDtjb25zdCB0PXRoaXMuY3JlYXRlKERwKTtyZXR1cm4gdGhpcy5jb25zdW1lVG9rZW4oKSx0LmFkZENoaWxkKHRoaXMuX3BhcnNlQmluYXJ5RXhwcigpKT90aGlzLl9wYXJzZUJvZHkodCxlKTp0aGlzLmZpbmlzaCh0LHkuRXhwcmVzc2lvbkV4cGVjdGVkLFtwLkN1cmx5Ul0pfV9wYXJzZUZ1bmN0aW9uQm9keURlY2xhcmF0aW9uKCl7cmV0dXJuIHRoaXMuX3BhcnNlVmFyaWFibGVEZWNsYXJhdGlvbigpfHx0aGlzLl9wYXJzZVJldHVyblN0YXRlbWVudCgpfHx0aGlzLl9wYXJzZVdhcm5BbmREZWJ1ZygpfHx0aGlzLl9wYXJzZUNvbnRyb2xTdGF0ZW1lbnQodGhpcy5fcGFyc2VGdW5jdGlvbkJvZHlEZWNsYXJhdGlvbi5iaW5kKHRoaXMpKX1fcGFyc2VGdW5jdGlvbkRlY2xhcmF0aW9uKCl7aWYoIXRoaXMucGVla0tleXdvcmQoIkBmdW5jdGlvbiIpKXJldHVybiBudWxsO2NvbnN0IGU9dGhpcy5jcmVhdGUoY3IpO2lmKHRoaXMuY29uc3VtZVRva2VuKCksIWUuc2V0SWRlbnRpZmllcih0aGlzLl9wYXJzZUlkZW50KFtKLkZ1bmN0aW9uXSkpKXJldHVybiB0aGlzLmZpbmlzaChlLHkuSWRlbnRpZmllckV4cGVjdGVkLFtwLkN1cmx5Ul0pO2lmKCF0aGlzLmFjY2VwdChwLlBhcmVudGhlc2lzTCkpcmV0dXJuIHRoaXMuZmluaXNoKGUseS5MZWZ0UGFyZW50aGVzaXNFeHBlY3RlZCxbcC5DdXJseVJdKTtpZihlLmdldFBhcmFtZXRlcnMoKS5hZGRDaGlsZCh0aGlzLl9wYXJzZVBhcmFtZXRlckRlY2xhcmF0aW9uKCkpKXtmb3IoO3RoaXMuYWNjZXB0KHAuQ29tbWEpJiYhdGhpcy5wZWVrKHAuUGFyZW50aGVzaXNSKTspaWYoIWUuZ2V0UGFyYW1ldGVycygpLmFkZENoaWxkKHRoaXMuX3BhcnNlUGFyYW1ldGVyRGVjbGFyYXRpb24oKSkpcmV0dXJuIHRoaXMuZmluaXNoKGUseS5WYXJpYWJsZU5hbWVFeHBlY3RlZCl9cmV0dXJuIHRoaXMuYWNjZXB0KHAuUGFyZW50aGVzaXNSKT90aGlzLl9wYXJzZUJvZHkoZSx0aGlzLl9wYXJzZUZ1bmN0aW9uQm9keURlY2xhcmF0aW9uLmJpbmQodGhpcykpOnRoaXMuZmluaXNoKGUseS5SaWdodFBhcmVudGhlc2lzRXhwZWN0ZWQsW3AuQ3VybHlSXSl9X3BhcnNlUmV0dXJuU3RhdGVtZW50KCl7aWYoIXRoaXMucGVla0tleXdvcmQoIkByZXR1cm4iKSlyZXR1cm4gbnVsbDtjb25zdCBlPXRoaXMuY3JlYXRlTm9kZShiLlJldHVyblN0YXRlbWVudCk7cmV0dXJuIHRoaXMuY29uc3VtZVRva2VuKCksZS5hZGRDaGlsZCh0aGlzLl9wYXJzZUV4cHIoKSk/dGhpcy5maW5pc2goZSk6dGhpcy5maW5pc2goZSx5LkV4cHJlc3Npb25FeHBlY3RlZCl9X3BhcnNlTWl4aW5EZWNsYXJhdGlvbigpe2lmKCF0aGlzLnBlZWtLZXl3b3JkKCJAbWl4aW4iKSlyZXR1cm4gbnVsbDtjb25zdCBlPXRoaXMuY3JlYXRlKEZuKTtpZih0aGlzLmNvbnN1bWVUb2tlbigpLCFlLnNldElkZW50aWZpZXIodGhpcy5fcGFyc2VJZGVudChbSi5NaXhpbl0pKSlyZXR1cm4gdGhpcy5maW5pc2goZSx5LklkZW50aWZpZXJFeHBlY3RlZCxbcC5DdXJseVJdKTtpZih0aGlzLmFjY2VwdChwLlBhcmVudGhlc2lzTCkpe2lmKGUuZ2V0UGFyYW1ldGVycygpLmFkZENoaWxkKHRoaXMuX3BhcnNlUGFyYW1ldGVyRGVjbGFyYXRpb24oKSkpe2Zvcig7dGhpcy5hY2NlcHQocC5Db21tYSkmJiF0aGlzLnBlZWsocC5QYXJlbnRoZXNpc1IpOylpZighZS5nZXRQYXJhbWV0ZXJzKCkuYWRkQ2hpbGQodGhpcy5fcGFyc2VQYXJhbWV0ZXJEZWNsYXJhdGlvbigpKSlyZXR1cm4gdGhpcy5maW5pc2goZSx5LlZhcmlhYmxlTmFtZUV4cGVjdGVkKX1pZighdGhpcy5hY2NlcHQocC5QYXJlbnRoZXNpc1IpKXJldHVybiB0aGlzLmZpbmlzaChlLHkuUmlnaHRQYXJlbnRoZXNpc0V4cGVjdGVkLFtwLkN1cmx5Ul0pfXJldHVybiB0aGlzLl9wYXJzZUJvZHkoZSx0aGlzLl9wYXJzZVJ1bGVTZXREZWNsYXJhdGlvbi5iaW5kKHRoaXMpKX1fcGFyc2VQYXJhbWV0ZXJEZWNsYXJhdGlvbigpe2NvbnN0IGU9dGhpcy5jcmVhdGUobHIpO3JldHVybiBlLnNldElkZW50aWZpZXIodGhpcy5fcGFyc2VWYXJpYWJsZSgpKT8odGhpcy5hY2NlcHQoRHIpLHRoaXMuYWNjZXB0KHAuQ29sb24pJiYhZS5zZXREZWZhdWx0VmFsdWUodGhpcy5fcGFyc2VFeHByKCEwKSk/dGhpcy5maW5pc2goZSx5LlZhcmlhYmxlVmFsdWVFeHBlY3RlZCxbXSxbcC5Db21tYSxwLlBhcmVudGhlc2lzUl0pOnRoaXMuZmluaXNoKGUpKTpudWxsfV9wYXJzZU1peGluQ29udGVudCgpe2lmKCF0aGlzLnBlZWtLZXl3b3JkKCJAY29udGVudCIpKXJldHVybiBudWxsO2NvbnN0IGU9dGhpcy5jcmVhdGUoS3ApO2lmKHRoaXMuY29uc3VtZVRva2VuKCksdGhpcy5hY2NlcHQocC5QYXJlbnRoZXNpc0wpKXtpZihlLmdldEFyZ3VtZW50cygpLmFkZENoaWxkKHRoaXMuX3BhcnNlRnVuY3Rpb25Bcmd1bWVudCgpKSl7Zm9yKDt0aGlzLmFjY2VwdChwLkNvbW1hKSYmIXRoaXMucGVlayhwLlBhcmVudGhlc2lzUik7KWlmKCFlLmdldEFyZ3VtZW50cygpLmFkZENoaWxkKHRoaXMuX3BhcnNlRnVuY3Rpb25Bcmd1bWVudCgpKSlyZXR1cm4gdGhpcy5maW5pc2goZSx5LkV4cHJlc3Npb25FeHBlY3RlZCl9aWYoIXRoaXMuYWNjZXB0KHAuUGFyZW50aGVzaXNSKSlyZXR1cm4gdGhpcy5maW5pc2goZSx5LlJpZ2h0UGFyZW50aGVzaXNFeHBlY3RlZCl9cmV0dXJuIHRoaXMuZmluaXNoKGUpfV9wYXJzZU1peGluUmVmZXJlbmNlKCl7aWYoIXRoaXMucGVla0tleXdvcmQoIkBpbmNsdWRlIikpcmV0dXJuIG51bGw7Y29uc3QgZT10aGlzLmNyZWF0ZShkcik7dGhpcy5jb25zdW1lVG9rZW4oKTtjb25zdCB0PXRoaXMuX3BhcnNlSWRlbnQoW0ouTWl4aW5dKTtpZighZS5zZXRJZGVudGlmaWVyKHQpKXJldHVybiB0aGlzLmZpbmlzaChlLHkuSWRlbnRpZmllckV4cGVjdGVkLFtwLkN1cmx5Ul0pO2lmKCF0aGlzLmhhc1doaXRlc3BhY2UoKSYmdGhpcy5hY2NlcHREZWxpbSgiLiIpJiYhdGhpcy5oYXNXaGl0ZXNwYWNlKCkpe2NvbnN0IG49dGhpcy5fcGFyc2VJZGVudChbSi5NaXhpbl0pO2lmKCFuKXJldHVybiB0aGlzLmZpbmlzaChlLHkuSWRlbnRpZmllckV4cGVjdGVkLFtwLkN1cmx5Ul0pO2NvbnN0IHI9dGhpcy5jcmVhdGUoTmwpO3QucmVmZXJlbmNlVHlwZXM9W0ouTW9kdWxlXSxyLnNldElkZW50aWZpZXIodCksZS5zZXRJZGVudGlmaWVyKG4pLGUuYWRkQ2hpbGQocil9aWYodGhpcy5hY2NlcHQocC5QYXJlbnRoZXNpc0wpKXtpZihlLmdldEFyZ3VtZW50cygpLmFkZENoaWxkKHRoaXMuX3BhcnNlRnVuY3Rpb25Bcmd1bWVudCgpKSl7Zm9yKDt0aGlzLmFjY2VwdChwLkNvbW1hKSYmIXRoaXMucGVlayhwLlBhcmVudGhlc2lzUik7KWlmKCFlLmdldEFyZ3VtZW50cygpLmFkZENoaWxkKHRoaXMuX3BhcnNlRnVuY3Rpb25Bcmd1bWVudCgpKSlyZXR1cm4gdGhpcy5maW5pc2goZSx5LkV4cHJlc3Npb25FeHBlY3RlZCl9aWYoIXRoaXMuYWNjZXB0KHAuUGFyZW50aGVzaXNSKSlyZXR1cm4gdGhpcy5maW5pc2goZSx5LlJpZ2h0UGFyZW50aGVzaXNFeHBlY3RlZCl9cmV0dXJuKHRoaXMucGVla0lkZW50KCJ1c2luZyIpfHx0aGlzLnBlZWsocC5DdXJseUwpKSYmZS5zZXRDb250ZW50KHRoaXMuX3BhcnNlTWl4aW5Db250ZW50RGVjbGFyYXRpb24oKSksdGhpcy5maW5pc2goZSl9X3BhcnNlTWl4aW5Db250ZW50RGVjbGFyYXRpb24oKXtjb25zdCBlPXRoaXMuY3JlYXRlKFpwKTtpZih0aGlzLmFjY2VwdElkZW50KCJ1c2luZyIpKXtpZighdGhpcy5hY2NlcHQocC5QYXJlbnRoZXNpc0wpKXJldHVybiB0aGlzLmZpbmlzaChlLHkuTGVmdFBhcmVudGhlc2lzRXhwZWN0ZWQsW3AuQ3VybHlMXSk7aWYoZS5nZXRQYXJhbWV0ZXJzKCkuYWRkQ2hpbGQodGhpcy5fcGFyc2VQYXJhbWV0ZXJEZWNsYXJhdGlvbigpKSl7Zm9yKDt0aGlzLmFjY2VwdChwLkNvbW1hKSYmIXRoaXMucGVlayhwLlBhcmVudGhlc2lzUik7KWlmKCFlLmdldFBhcmFtZXRlcnMoKS5hZGRDaGlsZCh0aGlzLl9wYXJzZVBhcmFtZXRlckRlY2xhcmF0aW9uKCkpKXJldHVybiB0aGlzLmZpbmlzaChlLHkuVmFyaWFibGVOYW1lRXhwZWN0ZWQpfWlmKCF0aGlzLmFjY2VwdChwLlBhcmVudGhlc2lzUikpcmV0dXJuIHRoaXMuZmluaXNoKGUseS5SaWdodFBhcmVudGhlc2lzRXhwZWN0ZWQsW3AuQ3VybHlMXSl9cmV0dXJuIHRoaXMucGVlayhwLkN1cmx5TCkmJnRoaXMuX3BhcnNlQm9keShlLHRoaXMuX3BhcnNlTWl4aW5SZWZlcmVuY2VCb2R5U3RhdGVtZW50LmJpbmQodGhpcykpLHRoaXMuZmluaXNoKGUpfV9wYXJzZU1peGluUmVmZXJlbmNlQm9keVN0YXRlbWVudCgpe3JldHVybiB0aGlzLl90cnlQYXJzZUtleWZyYW1lU2VsZWN0b3IoKXx8dGhpcy5fcGFyc2VSdWxlU2V0RGVjbGFyYXRpb24oKX1fcGFyc2VGdW5jdGlvbkFyZ3VtZW50KCl7Y29uc3QgZT10aGlzLmNyZWF0ZShYdCksdD10aGlzLm1hcmsoKSxuPXRoaXMuX3BhcnNlVmFyaWFibGUoKTtpZihuKWlmKHRoaXMuYWNjZXB0KHAuQ29sb24pKWUuc2V0SWRlbnRpZmllcihuKTtlbHNle2lmKHRoaXMuYWNjZXB0KERyKSlyZXR1cm4gZS5zZXRWYWx1ZShuKSx0aGlzLmZpbmlzaChlKTt0aGlzLnJlc3RvcmVBdE1hcmsodCl9cmV0dXJuIGUuc2V0VmFsdWUodGhpcy5fcGFyc2VFeHByKCEwKSk/KHRoaXMuYWNjZXB0KERyKSxlLmFkZENoaWxkKHRoaXMuX3BhcnNlUHJpbygpKSx0aGlzLmZpbmlzaChlKSk6ZS5zZXRWYWx1ZSh0aGlzLl90cnlQYXJzZVByaW8oKSk/dGhpcy5maW5pc2goZSk6bnVsbH1fcGFyc2VVUkxBcmd1bWVudCgpe2NvbnN0IGU9dGhpcy5tYXJrKCksdD1zdXBlci5fcGFyc2VVUkxBcmd1bWVudCgpO2lmKCF0fHwhdGhpcy5wZWVrKHAuUGFyZW50aGVzaXNSKSl7dGhpcy5yZXN0b3JlQXRNYXJrKGUpO2NvbnN0IG49dGhpcy5jcmVhdGUoTyk7cmV0dXJuIG4uYWRkQ2hpbGQodGhpcy5fcGFyc2VCaW5hcnlFeHByKCkpLHRoaXMuZmluaXNoKG4pfXJldHVybiB0fV9wYXJzZU9wZXJhdGlvbigpe2lmKCF0aGlzLnBlZWsocC5QYXJlbnRoZXNpc0wpKXJldHVybiBudWxsO2NvbnN0IGU9dGhpcy5jcmVhdGUoTyk7Zm9yKHRoaXMuY29uc3VtZVRva2VuKCk7ZS5hZGRDaGlsZCh0aGlzLl9wYXJzZUxpc3RFbGVtZW50KCkpOyl0aGlzLmFjY2VwdChwLkNvbW1hKTtyZXR1cm4gdGhpcy5hY2NlcHQocC5QYXJlbnRoZXNpc1IpP3RoaXMuZmluaXNoKGUpOnRoaXMuZmluaXNoKGUseS5SaWdodFBhcmVudGhlc2lzRXhwZWN0ZWQpfV9wYXJzZUxpc3RFbGVtZW50KCl7Y29uc3QgZT10aGlzLmNyZWF0ZShlbSksdD10aGlzLl9wYXJzZUJpbmFyeUV4cHIoKTtpZighdClyZXR1cm4gbnVsbDtpZih0aGlzLmFjY2VwdChwLkNvbG9uKSl7aWYoZS5zZXRLZXkodCksIWUuc2V0VmFsdWUodGhpcy5fcGFyc2VCaW5hcnlFeHByKCkpKXJldHVybiB0aGlzLmZpbmlzaChlLHkuRXhwcmVzc2lvbkV4cGVjdGVkKX1lbHNlIGUuc2V0VmFsdWUodCk7cmV0dXJuIHRoaXMuZmluaXNoKGUpfV9wYXJzZVVzZSgpe2lmKCF0aGlzLnBlZWtLZXl3b3JkKCJAdXNlIikpcmV0dXJuIG51bGw7Y29uc3QgZT10aGlzLmNyZWF0ZShNcCk7aWYodGhpcy5jb25zdW1lVG9rZW4oKSwhZS5hZGRDaGlsZCh0aGlzLl9wYXJzZVN0cmluZ0xpdGVyYWwoKSkpcmV0dXJuIHRoaXMuZmluaXNoKGUseS5TdHJpbmdMaXRlcmFsRXhwZWN0ZWQpO2lmKCF0aGlzLnBlZWsocC5TZW1pQ29sb24pJiYhdGhpcy5wZWVrKHAuRU9GKSl7aWYoIXRoaXMucGVla1JlZ0V4cChwLklkZW50LC9hc3x3aXRoLykpcmV0dXJuIHRoaXMuZmluaXNoKGUseS5Vbmtub3duS2V5d29yZCk7aWYodGhpcy5hY2NlcHRJZGVudCgiYXMiKSYmIWUuc2V0SWRlbnRpZmllcih0aGlzLl9wYXJzZUlkZW50KFtKLk1vZHVsZV0pKSYmIXRoaXMuYWNjZXB0RGVsaW0oIioiKSlyZXR1cm4gdGhpcy5maW5pc2goZSx5LklkZW50aWZpZXJPcldpbGRjYXJkRXhwZWN0ZWQpO2lmKHRoaXMuYWNjZXB0SWRlbnQoIndpdGgiKSl7aWYoIXRoaXMuYWNjZXB0KHAuUGFyZW50aGVzaXNMKSlyZXR1cm4gdGhpcy5maW5pc2goZSx5LkxlZnRQYXJlbnRoZXNpc0V4cGVjdGVkLFtwLlBhcmVudGhlc2lzUl0pO2lmKCFlLmdldFBhcmFtZXRlcnMoKS5hZGRDaGlsZCh0aGlzLl9wYXJzZU1vZHVsZUNvbmZpZ0RlY2xhcmF0aW9uKCkpKXJldHVybiB0aGlzLmZpbmlzaChlLHkuVmFyaWFibGVOYW1lRXhwZWN0ZWQpO2Zvcig7dGhpcy5hY2NlcHQocC5Db21tYSkmJiF0aGlzLnBlZWsocC5QYXJlbnRoZXNpc1IpOylpZighZS5nZXRQYXJhbWV0ZXJzKCkuYWRkQ2hpbGQodGhpcy5fcGFyc2VNb2R1bGVDb25maWdEZWNsYXJhdGlvbigpKSlyZXR1cm4gdGhpcy5maW5pc2goZSx5LlZhcmlhYmxlTmFtZUV4cGVjdGVkKTtpZighdGhpcy5hY2NlcHQocC5QYXJlbnRoZXNpc1IpKXJldHVybiB0aGlzLmZpbmlzaChlLHkuUmlnaHRQYXJlbnRoZXNpc0V4cGVjdGVkKX19cmV0dXJuIXRoaXMuYWNjZXB0KHAuU2VtaUNvbG9uKSYmIXRoaXMuYWNjZXB0KHAuRU9GKT90aGlzLmZpbmlzaChlLHkuU2VtaUNvbG9uRXhwZWN0ZWQpOnRoaXMuZmluaXNoKGUpfV9wYXJzZU1vZHVsZUNvbmZpZ0RlY2xhcmF0aW9uKCl7Y29uc3QgZT10aGlzLmNyZWF0ZShMcCk7cmV0dXJuIGUuc2V0SWRlbnRpZmllcih0aGlzLl9wYXJzZVZhcmlhYmxlKCkpPyF0aGlzLmFjY2VwdChwLkNvbG9uKXx8IWUuc2V0VmFsdWUodGhpcy5fcGFyc2VFeHByKCEwKSk/dGhpcy5maW5pc2goZSx5LlZhcmlhYmxlVmFsdWVFeHBlY3RlZCxbXSxbcC5Db21tYSxwLlBhcmVudGhlc2lzUl0pOnRoaXMuYWNjZXB0KHAuRXhjbGFtYXRpb24pJiYodGhpcy5oYXNXaGl0ZXNwYWNlKCl8fCF0aGlzLmFjY2VwdElkZW50KCJkZWZhdWx0IikpP3RoaXMuZmluaXNoKGUseS5Vbmtub3duS2V5d29yZCk6dGhpcy5maW5pc2goZSk6bnVsbH1fcGFyc2VGb3J3YXJkKCl7aWYoIXRoaXMucGVla0tleXdvcmQoIkBmb3J3YXJkIikpcmV0dXJuIG51bGw7Y29uc3QgZT10aGlzLmNyZWF0ZSh6cCk7aWYodGhpcy5jb25zdW1lVG9rZW4oKSwhZS5hZGRDaGlsZCh0aGlzLl9wYXJzZVN0cmluZ0xpdGVyYWwoKSkpcmV0dXJuIHRoaXMuZmluaXNoKGUseS5TdHJpbmdMaXRlcmFsRXhwZWN0ZWQpO2lmKHRoaXMuYWNjZXB0SWRlbnQoImFzIikpe2NvbnN0IHQ9dGhpcy5fcGFyc2VJZGVudChbSi5Gb3J3YXJkXSk7aWYoIWUuc2V0SWRlbnRpZmllcih0KSlyZXR1cm4gdGhpcy5maW5pc2goZSx5LklkZW50aWZpZXJFeHBlY3RlZCk7aWYodGhpcy5oYXNXaGl0ZXNwYWNlKCl8fCF0aGlzLmFjY2VwdERlbGltKCIqIikpcmV0dXJuIHRoaXMuZmluaXNoKGUseS5XaWxkY2FyZEV4cGVjdGVkKX1pZih0aGlzLmFjY2VwdElkZW50KCJ3aXRoIikpe2lmKCF0aGlzLmFjY2VwdChwLlBhcmVudGhlc2lzTCkpcmV0dXJuIHRoaXMuZmluaXNoKGUseS5MZWZ0UGFyZW50aGVzaXNFeHBlY3RlZCxbcC5QYXJlbnRoZXNpc1JdKTtpZighZS5nZXRQYXJhbWV0ZXJzKCkuYWRkQ2hpbGQodGhpcy5fcGFyc2VNb2R1bGVDb25maWdEZWNsYXJhdGlvbigpKSlyZXR1cm4gdGhpcy5maW5pc2goZSx5LlZhcmlhYmxlTmFtZUV4cGVjdGVkKTtmb3IoO3RoaXMuYWNjZXB0KHAuQ29tbWEpJiYhdGhpcy5wZWVrKHAuUGFyZW50aGVzaXNSKTspaWYoIWUuZ2V0UGFyYW1ldGVycygpLmFkZENoaWxkKHRoaXMuX3BhcnNlTW9kdWxlQ29uZmlnRGVjbGFyYXRpb24oKSkpcmV0dXJuIHRoaXMuZmluaXNoKGUseS5WYXJpYWJsZU5hbWVFeHBlY3RlZCk7aWYoIXRoaXMuYWNjZXB0KHAuUGFyZW50aGVzaXNSKSlyZXR1cm4gdGhpcy5maW5pc2goZSx5LlJpZ2h0UGFyZW50aGVzaXNFeHBlY3RlZCl9ZWxzZSBpZigodGhpcy5wZWVrSWRlbnQoImhpZGUiKXx8dGhpcy5wZWVrSWRlbnQoInNob3ciKSkmJiFlLmFkZENoaWxkKHRoaXMuX3BhcnNlRm9yd2FyZFZpc2liaWxpdHkoKSkpcmV0dXJuIHRoaXMuZmluaXNoKGUseS5JZGVudGlmaWVyT3JWYXJpYWJsZUV4cGVjdGVkKTtyZXR1cm4hdGhpcy5hY2NlcHQocC5TZW1pQ29sb24pJiYhdGhpcy5hY2NlcHQocC5FT0YpP3RoaXMuZmluaXNoKGUseS5TZW1pQ29sb25FeHBlY3RlZCk6dGhpcy5maW5pc2goZSl9X3BhcnNlRm9yd2FyZFZpc2liaWxpdHkoKXtjb25zdCBlPXRoaXMuY3JlYXRlKFBwKTtmb3IoZS5zZXRJZGVudGlmaWVyKHRoaXMuX3BhcnNlSWRlbnQoKSk7ZS5hZGRDaGlsZCh0aGlzLl9wYXJzZVZhcmlhYmxlKCl8fHRoaXMuX3BhcnNlSWRlbnQoKSk7KXRoaXMuYWNjZXB0KHAuQ29tbWEpO3JldHVybiBlLmdldENoaWxkcmVuKCkubGVuZ3RoPjE/ZTpudWxsfV9wYXJzZVN1cHBvcnRzQ29uZGl0aW9uKCl7cmV0dXJuIHRoaXMuX3BhcnNlSW50ZXJwb2xhdGlvbigpfHxzdXBlci5fcGFyc2VTdXBwb3J0c0NvbmRpdGlvbigpfX0sb3Q9ZygiU2FzcyBkb2N1bWVudGF0aW9uIikseXQ9Y2xhc3MgSmUgZXh0ZW5kcyBwc3tjb25zdHJ1Y3Rvcih0LG4pe3N1cGVyKCIkIix0LG4pLGhoKEplLnNjc3NNb2R1bGVMb2FkZXJzKSxoaChKZS5zY3NzTW9kdWxlQnVpbHRJbnMpfWlzSW1wb3J0UGF0aFBhcmVudCh0KXtyZXR1cm4gdD09PWIuRm9yd2FyZHx8dD09PWIuVXNlfHxzdXBlci5pc0ltcG9ydFBhdGhQYXJlbnQodCl9Z2V0Q29tcGxldGlvbkZvckltcG9ydFBhdGgodCxuKXtjb25zdCByPXQuZ2V0UGFyZW50KCkudHlwZTtpZihyPT09Yi5Gb3J3YXJkfHxyPT09Yi5Vc2UpZm9yKGxldCBpIG9mIEplLnNjc3NNb2R1bGVCdWlsdElucyl7Y29uc3Qgcz17bGFiZWw6aS5sYWJlbCxkb2N1bWVudGF0aW9uOmkuZG9jdW1lbnRhdGlvbix0ZXh0RWRpdDokLnJlcGxhY2UodGhpcy5nZXRDb21wbGV0aW9uUmFuZ2UodCksYCcke2kubGFiZWx9J2ApLGtpbmQ6Vi5Nb2R1bGV9O24uaXRlbXMucHVzaChzKX1yZXR1cm4gc3VwZXIuZ2V0Q29tcGxldGlvbkZvckltcG9ydFBhdGgodCxuKX1jcmVhdGVSZXBsYWNlRnVuY3Rpb24oKXtsZXQgdD0xO3JldHVybihuLHIpPT4iXFwiK3IrIjogJHsiK3QrKysiOiIrKEplLnZhcmlhYmxlRGVmYXVsdHNbcl18fCIiKSsifSJ9Y3JlYXRlRnVuY3Rpb25Qcm9wb3NhbHModCxuLHIsaSl7Zm9yKGNvbnN0IHMgb2YgdCl7Y29uc3QgYT1zLmZ1bmMucmVwbGFjZSgvXFs/KFwkXHcrKVxdPy9nLHRoaXMuY3JlYXRlUmVwbGFjZUZ1bmN0aW9uKCkpLG89e2xhYmVsOnMuZnVuYy5zdWJzdHIoMCxzLmZ1bmMuaW5kZXhPZigiKCIpKSxkZXRhaWw6cy5mdW5jLGRvY3VtZW50YXRpb246cy5kZXNjLHRleHRFZGl0OiQucmVwbGFjZSh0aGlzLmdldENvbXBsZXRpb25SYW5nZShuKSxhKSxpbnNlcnRUZXh0Rm9ybWF0Ok5lLlNuaXBwZXQsa2luZDpWLkZ1bmN0aW9ufTtyJiYoby5zb3J0VGV4dD0ieiIpLGkuaXRlbXMucHVzaChvKX1yZXR1cm4gaX1nZXRDb21wbGV0aW9uc0ZvclNlbGVjdG9yKHQsbixyKXtyZXR1cm4gdGhpcy5jcmVhdGVGdW5jdGlvblByb3Bvc2FscyhKZS5zZWxlY3RvckZ1bmNzLG51bGwsITAsciksc3VwZXIuZ2V0Q29tcGxldGlvbnNGb3JTZWxlY3Rvcih0LG4scil9Z2V0VGVybVByb3Bvc2Fscyh0LG4scil7bGV0IGk9SmUuYnVpbHRJbkZ1bmNzO3JldHVybiB0JiYoaT1pLmZpbHRlcihzPT4hcy50eXBlfHwhdC5yZXN0cmljdGlvbnN8fHQucmVzdHJpY3Rpb25zLmluZGV4T2Yocy50eXBlKSE9PS0xKSksdGhpcy5jcmVhdGVGdW5jdGlvblByb3Bvc2FscyhpLG4sITAsciksc3VwZXIuZ2V0VGVybVByb3Bvc2Fscyh0LG4scil9Z2V0Q29sb3JQcm9wb3NhbHModCxuLHIpe3JldHVybiB0aGlzLmNyZWF0ZUZ1bmN0aW9uUHJvcG9zYWxzKEplLmNvbG9yUHJvcG9zYWxzLG4sITEsciksc3VwZXIuZ2V0Q29sb3JQcm9wb3NhbHModCxuLHIpfWdldENvbXBsZXRpb25zRm9yRGVjbGFyYXRpb25Qcm9wZXJ0eSh0LG4pe3JldHVybiB0aGlzLmdldENvbXBsZXRpb25Gb3JBdERpcmVjdGl2ZXMobiksdGhpcy5nZXRDb21wbGV0aW9uc0ZvclNlbGVjdG9yKG51bGwsITAsbiksc3VwZXIuZ2V0Q29tcGxldGlvbnNGb3JEZWNsYXJhdGlvblByb3BlcnR5KHQsbil9Z2V0Q29tcGxldGlvbnNGb3JFeHRlbmRzUmVmZXJlbmNlKHQsbixyKXtjb25zdCBpPXRoaXMuZ2V0U3ltYm9sQ29udGV4dCgpLmZpbmRTeW1ib2xzQXRPZmZzZXQodGhpcy5vZmZzZXQsSi5SdWxlKTtmb3IoY29uc3QgcyBvZiBpKXtjb25zdCBhPXtsYWJlbDpzLm5hbWUsdGV4dEVkaXQ6JC5yZXBsYWNlKHRoaXMuZ2V0Q29tcGxldGlvblJhbmdlKG4pLHMubmFtZSksa2luZDpWLkZ1bmN0aW9ufTtyLml0ZW1zLnB1c2goYSl9cmV0dXJuIHJ9Z2V0Q29tcGxldGlvbkZvckF0RGlyZWN0aXZlcyh0KXtyZXR1cm4gdC5pdGVtcy5wdXNoKC4uLkplLnNjc3NBdERpcmVjdGl2ZXMpLHR9Z2V0Q29tcGxldGlvbkZvclRvcExldmVsKHQpe3JldHVybiB0aGlzLmdldENvbXBsZXRpb25Gb3JBdERpcmVjdGl2ZXModCksdGhpcy5nZXRDb21wbGV0aW9uRm9yTW9kdWxlTG9hZGVycyh0KSxzdXBlci5nZXRDb21wbGV0aW9uRm9yVG9wTGV2ZWwodCksdH1nZXRDb21wbGV0aW9uRm9yTW9kdWxlTG9hZGVycyh0KXtyZXR1cm4gdC5pdGVtcy5wdXNoKC4uLkplLnNjc3NNb2R1bGVMb2FkZXJzKSx0fX07eXQudmFyaWFibGVEZWZhdWx0cz17JHJlZDoiMSIsJGdyZWVuOiIyIiwkYmx1ZToiMyIsJGFscGhhOiIxLjAiLCRjb2xvcjoiIzAwMDAwMCIsJHdlaWdodDoiMC41IiwkaHVlOiIwIiwkc2F0dXJhdGlvbjoiMCUiLCRsaWdodG5lc3M6IjAlIiwkZGVncmVlczoiMCIsJGFtb3VudDoiMCIsJHN0cmluZzonIiInLCRzdWJzdHJpbmc6JyJzIicsJG51bWJlcjoiMCIsJGxpbWl0OiIxIn0seXQuY29sb3JQcm9wb3NhbHM9W3tmdW5jOiJyZWQoJGNvbG9yKSIsZGVzYzpnKCJHZXRzIHRoZSByZWQgY29tcG9uZW50IG9mIGEgY29sb3IuIil9LHtmdW5jOiJncmVlbigkY29sb3IpIixkZXNjOmcoIkdldHMgdGhlIGdyZWVuIGNvbXBvbmVudCBvZiBhIGNvbG9yLiIpfSx7ZnVuYzoiYmx1ZSgkY29sb3IpIixkZXNjOmcoIkdldHMgdGhlIGJsdWUgY29tcG9uZW50IG9mIGEgY29sb3IuIil9LHtmdW5jOiJtaXgoJGNvbG9yLCAkY29sb3IsIFskd2VpZ2h0XSkiLGRlc2M6ZygiTWl4ZXMgdHdvIGNvbG9ycyB0b2dldGhlci4iKX0se2Z1bmM6Imh1ZSgkY29sb3IpIixkZXNjOmcoIkdldHMgdGhlIGh1ZSBjb21wb25lbnQgb2YgYSBjb2xvci4iKX0se2Z1bmM6InNhdHVyYXRpb24oJGNvbG9yKSIsZGVzYzpnKCJHZXRzIHRoZSBzYXR1cmF0aW9uIGNvbXBvbmVudCBvZiBhIGNvbG9yLiIpfSx7ZnVuYzoibGlnaHRuZXNzKCRjb2xvcikiLGRlc2M6ZygiR2V0cyB0aGUgbGlnaHRuZXNzIGNvbXBvbmVudCBvZiBhIGNvbG9yLiIpfSx7ZnVuYzoiYWRqdXN0LWh1ZSgkY29sb3IsICRkZWdyZWVzKSIsZGVzYzpnKCJDaGFuZ2VzIHRoZSBodWUgb2YgYSBjb2xvci4iKX0se2Z1bmM6ImxpZ2h0ZW4oJGNvbG9yLCAkYW1vdW50KSIsZGVzYzpnKCJNYWtlcyBhIGNvbG9yIGxpZ2h0ZXIuIil9LHtmdW5jOiJkYXJrZW4oJGNvbG9yLCAkYW1vdW50KSIsZGVzYzpnKCJNYWtlcyBhIGNvbG9yIGRhcmtlci4iKX0se2Z1bmM6InNhdHVyYXRlKCRjb2xvciwgJGFtb3VudCkiLGRlc2M6ZygiTWFrZXMgYSBjb2xvciBtb3JlIHNhdHVyYXRlZC4iKX0se2Z1bmM6ImRlc2F0dXJhdGUoJGNvbG9yLCAkYW1vdW50KSIsZGVzYzpnKCJNYWtlcyBhIGNvbG9yIGxlc3Mgc2F0dXJhdGVkLiIpfSx7ZnVuYzoiZ3JheXNjYWxlKCRjb2xvcikiLGRlc2M6ZygiQ29udmVydHMgYSBjb2xvciB0byBncmF5c2NhbGUuIil9LHtmdW5jOiJjb21wbGVtZW50KCRjb2xvcikiLGRlc2M6ZygiUmV0dXJucyB0aGUgY29tcGxlbWVudCBvZiBhIGNvbG9yLiIpfSx7ZnVuYzoiaW52ZXJ0KCRjb2xvcikiLGRlc2M6ZygiUmV0dXJucyB0aGUgaW52ZXJzZSBvZiBhIGNvbG9yLiIpfSx7ZnVuYzoiYWxwaGEoJGNvbG9yKSIsZGVzYzpnKCJHZXRzIHRoZSBvcGFjaXR5IGNvbXBvbmVudCBvZiBhIGNvbG9yLiIpfSx7ZnVuYzoib3BhY2l0eSgkY29sb3IpIixkZXNjOiJHZXRzIHRoZSBhbHBoYSBjb21wb25lbnQgKG9wYWNpdHkpIG9mIGEgY29sb3IuIn0se2Z1bmM6InJnYmEoJGNvbG9yLCAkYWxwaGEpIixkZXNjOmcoIkNoYW5nZXMgdGhlIGFscGhhIGNvbXBvbmVudCBmb3IgYSBjb2xvci4iKX0se2Z1bmM6Im9wYWNpZnkoJGNvbG9yLCAkYW1vdW50KSIsZGVzYzpnKCJNYWtlcyBhIGNvbG9yIG1vcmUgb3BhcXVlLiIpfSx7ZnVuYzoiZmFkZS1pbigkY29sb3IsICRhbW91bnQpIixkZXNjOmcoIk1ha2VzIGEgY29sb3IgbW9yZSBvcGFxdWUuIil9LHtmdW5jOiJ0cmFuc3BhcmVudGl6ZSgkY29sb3IsICRhbW91bnQpIixkZXNjOmcoIk1ha2VzIGEgY29sb3IgbW9yZSB0cmFuc3BhcmVudC4iKX0se2Z1bmM6ImZhZGUtb3V0KCRjb2xvciwgJGFtb3VudCkiLGRlc2M6ZygiTWFrZXMgYSBjb2xvciBtb3JlIHRyYW5zcGFyZW50LiIpfSx7ZnVuYzoiYWRqdXN0LWNvbG9yKCRjb2xvciwgWyRyZWRdLCBbJGdyZWVuXSwgWyRibHVlXSwgWyRodWVdLCBbJHNhdHVyYXRpb25dLCBbJGxpZ2h0bmVzc10sIFskYWxwaGFdKSIsZGVzYzpnKCJJbmNyZWFzZXMgb3IgZGVjcmVhc2VzIG9uZSBvciBtb3JlIGNvbXBvbmVudHMgb2YgYSBjb2xvci4iKX0se2Z1bmM6InNjYWxlLWNvbG9yKCRjb2xvciwgWyRyZWRdLCBbJGdyZWVuXSwgWyRibHVlXSwgWyRzYXR1cmF0aW9uXSwgWyRsaWdodG5lc3NdLCBbJGFscGhhXSkiLGRlc2M6ZygiRmx1aWRseSBzY2FsZXMgb25lIG9yIG1vcmUgcHJvcGVydGllcyBvZiBhIGNvbG9yLiIpfSx7ZnVuYzoiY2hhbmdlLWNvbG9yKCRjb2xvciwgWyRyZWRdLCBbJGdyZWVuXSwgWyRibHVlXSwgWyRodWVdLCBbJHNhdHVyYXRpb25dLCBbJGxpZ2h0bmVzc10sIFskYWxwaGFdKSIsZGVzYzpnKCJDaGFuZ2VzIG9uZSBvciBtb3JlIHByb3BlcnRpZXMgb2YgYSBjb2xvci4iKX0se2Z1bmM6ImllLWhleC1zdHIoJGNvbG9yKSIsZGVzYzpnKCJDb252ZXJ0cyBhIGNvbG9yIGludG8gdGhlIGZvcm1hdCB1bmRlcnN0b29kIGJ5IElFIGZpbHRlcnMuIil9XSx5dC5zZWxlY3RvckZ1bmNzPVt7ZnVuYzoic2VsZWN0b3ItbmVzdCgkc2VsZWN0b3Jz4oCmKSIsZGVzYzpnKCJOZXN0cyBzZWxlY3RvciBiZW5lYXRoIG9uZSBhbm90aGVyIGxpa2UgdGhleSB3b3VsZCBiZSBuZXN0ZWQgaW4gdGhlIHN0eWxlc2hlZXQuIil9LHtmdW5jOiJzZWxlY3Rvci1hcHBlbmQoJHNlbGVjdG9yc+KApikiLGRlc2M6ZygiQXBwZW5kcyBzZWxlY3RvcnMgdG8gb25lIGFub3RoZXIgd2l0aG91dCBzcGFjZXMgaW4gYmV0d2Vlbi4iKX0se2Z1bmM6InNlbGVjdG9yLWV4dGVuZCgkc2VsZWN0b3IsICRleHRlbmRlZSwgJGV4dGVuZGVyKSIsZGVzYzpnKCJFeHRlbmRzICRleHRlbmRlZSB3aXRoICRleHRlbmRlciB3aXRoaW4gJHNlbGVjdG9yLiIpfSx7ZnVuYzoic2VsZWN0b3ItcmVwbGFjZSgkc2VsZWN0b3IsICRvcmlnaW5hbCwgJHJlcGxhY2VtZW50KSIsZGVzYzpnKCJSZXBsYWNlcyAkb3JpZ2luYWwgd2l0aCAkcmVwbGFjZW1lbnQgd2l0aGluICRzZWxlY3Rvci4iKX0se2Z1bmM6InNlbGVjdG9yLXVuaWZ5KCRzZWxlY3RvcjEsICRzZWxlY3RvcjIpIixkZXNjOmcoIlVuaWZpZXMgdHdvIHNlbGVjdG9ycyB0byBwcm9kdWNlIGEgc2VsZWN0b3IgdGhhdCBtYXRjaGVzIGVsZW1lbnRzIG1hdGNoZWQgYnkgYm90aC4iKX0se2Z1bmM6ImlzLXN1cGVyc2VsZWN0b3IoJHN1cGVyLCAkc3ViKSIsZGVzYzpnKCJSZXR1cm5zIHdoZXRoZXIgJHN1cGVyIG1hdGNoZXMgYWxsIHRoZSBlbGVtZW50cyAkc3ViIGRvZXMsIGFuZCBwb3NzaWJseSBtb3JlLiIpfSx7ZnVuYzoic2ltcGxlLXNlbGVjdG9ycygkc2VsZWN0b3IpIixkZXNjOmcoIlJldHVybnMgdGhlIHNpbXBsZSBzZWxlY3RvcnMgdGhhdCBjb21wcmlzZSBhIGNvbXBvdW5kIHNlbGVjdG9yLiIpfSx7ZnVuYzoic2VsZWN0b3ItcGFyc2UoJHNlbGVjdG9yKSIsZGVzYzpnKCJQYXJzZXMgYSBzZWxlY3RvciBpbnRvIHRoZSBmb3JtYXQgcmV0dXJuZWQgYnkgJi4iKX1dLHl0LmJ1aWx0SW5GdW5jcz1be2Z1bmM6InVucXVvdGUoJHN0cmluZykiLGRlc2M6ZygiUmVtb3ZlcyBxdW90ZXMgZnJvbSBhIHN0cmluZy4iKX0se2Z1bmM6InF1b3RlKCRzdHJpbmcpIixkZXNjOmcoIkFkZHMgcXVvdGVzIHRvIGEgc3RyaW5nLiIpfSx7ZnVuYzoic3RyLWxlbmd0aCgkc3RyaW5nKSIsZGVzYzpnKCJSZXR1cm5zIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyBpbiBhIHN0cmluZy4iKX0se2Z1bmM6InN0ci1pbnNlcnQoJHN0cmluZywgJGluc2VydCwgJGluZGV4KSIsZGVzYzpnKCJJbnNlcnRzICRpbnNlcnQgaW50byAkc3RyaW5nIGF0ICRpbmRleC4iKX0se2Z1bmM6InN0ci1pbmRleCgkc3RyaW5nLCAkc3Vic3RyaW5nKSIsZGVzYzpnKCJSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgZmlyc3Qgb2NjdXJhbmNlIG9mICRzdWJzdHJpbmcgaW4gJHN0cmluZy4iKX0se2Z1bmM6InN0ci1zbGljZSgkc3RyaW5nLCAkc3RhcnQtYXQsIFskZW5kLWF0XSkiLGRlc2M6ZygiRXh0cmFjdHMgYSBzdWJzdHJpbmcgZnJvbSAkc3RyaW5nLiIpfSx7ZnVuYzoidG8tdXBwZXItY2FzZSgkc3RyaW5nKSIsZGVzYzpnKCJDb252ZXJ0cyBhIHN0cmluZyB0byB1cHBlciBjYXNlLiIpfSx7ZnVuYzoidG8tbG93ZXItY2FzZSgkc3RyaW5nKSIsZGVzYzpnKCJDb252ZXJ0cyBhIHN0cmluZyB0byBsb3dlciBjYXNlLiIpfSx7ZnVuYzoicGVyY2VudGFnZSgkbnVtYmVyKSIsZGVzYzpnKCJDb252ZXJ0cyBhIHVuaXRsZXNzIG51bWJlciB0byBhIHBlcmNlbnRhZ2UuIiksdHlwZToicGVyY2VudGFnZSJ9LHtmdW5jOiJyb3VuZCgkbnVtYmVyKSIsZGVzYzpnKCJSb3VuZHMgYSBudW1iZXIgdG8gdGhlIG5lYXJlc3Qgd2hvbGUgbnVtYmVyLiIpfSx7ZnVuYzoiY2VpbCgkbnVtYmVyKSIsZGVzYzpnKCJSb3VuZHMgYSBudW1iZXIgdXAgdG8gdGhlIG5leHQgd2hvbGUgbnVtYmVyLiIpfSx7ZnVuYzoiZmxvb3IoJG51bWJlcikiLGRlc2M6ZygiUm91bmRzIGEgbnVtYmVyIGRvd24gdG8gdGhlIHByZXZpb3VzIHdob2xlIG51bWJlci4iKX0se2Z1bmM6ImFicygkbnVtYmVyKSIsZGVzYzpnKCJSZXR1cm5zIHRoZSBhYnNvbHV0ZSB2YWx1ZSBvZiBhIG51bWJlci4iKX0se2Z1bmM6Im1pbigkbnVtYmVycykiLGRlc2M6ZygiRmluZHMgdGhlIG1pbmltdW0gb2Ygc2V2ZXJhbCBudW1iZXJzLiIpfSx7ZnVuYzoibWF4KCRudW1iZXJzKSIsZGVzYzpnKCJGaW5kcyB0aGUgbWF4aW11bSBvZiBzZXZlcmFsIG51bWJlcnMuIil9LHtmdW5jOiJyYW5kb20oWyRsaW1pdF0pIixkZXNjOmcoIlJldHVybnMgYSByYW5kb20gbnVtYmVyLiIpfSx7ZnVuYzoibGVuZ3RoKCRsaXN0KSIsZGVzYzpnKCJSZXR1cm5zIHRoZSBsZW5ndGggb2YgYSBsaXN0LiIpfSx7ZnVuYzoibnRoKCRsaXN0LCAkbikiLGRlc2M6ZygiUmV0dXJucyBhIHNwZWNpZmljIGl0ZW0gaW4gYSBsaXN0LiIpfSx7ZnVuYzoic2V0LW50aCgkbGlzdCwgJG4sICR2YWx1ZSkiLGRlc2M6ZygiUmVwbGFjZXMgdGhlIG50aCBpdGVtIGluIGEgbGlzdC4iKX0se2Z1bmM6ImpvaW4oJGxpc3QxLCAkbGlzdDIsIFskc2VwYXJhdG9yXSkiLGRlc2M6ZygiSm9pbnMgdG9nZXRoZXIgdHdvIGxpc3RzIGludG8gb25lLiIpfSx7ZnVuYzoiYXBwZW5kKCRsaXN0MSwgJHZhbCwgWyRzZXBhcmF0b3JdKSIsZGVzYzpnKCJBcHBlbmRzIGEgc2luZ2xlIHZhbHVlIG9udG8gdGhlIGVuZCBvZiBhIGxpc3QuIil9LHtmdW5jOiJ6aXAoJGxpc3RzKSIsZGVzYzpnKCJDb21iaW5lcyBzZXZlcmFsIGxpc3RzIGludG8gYSBzaW5nbGUgbXVsdGlkaW1lbnNpb25hbCBsaXN0LiIpfSx7ZnVuYzoiaW5kZXgoJGxpc3QsICR2YWx1ZSkiLGRlc2M6ZygiUmV0dXJucyB0aGUgcG9zaXRpb24gb2YgYSB2YWx1ZSB3aXRoaW4gYSBsaXN0LiIpfSx7ZnVuYzoibGlzdC1zZXBhcmF0b3IoI2xpc3QpIixkZXNjOmcoIlJldHVybnMgdGhlIHNlcGFyYXRvciBvZiBhIGxpc3QuIil9LHtmdW5jOiJtYXAtZ2V0KCRtYXAsICRrZXkpIixkZXNjOmcoIlJldHVybnMgdGhlIHZhbHVlIGluIGEgbWFwIGFzc29jaWF0ZWQgd2l0aCBhIGdpdmVuIGtleS4iKX0se2Z1bmM6Im1hcC1tZXJnZSgkbWFwMSwgJG1hcDIpIixkZXNjOmcoIk1lcmdlcyB0d28gbWFwcyB0b2dldGhlciBpbnRvIGEgbmV3IG1hcC4iKX0se2Z1bmM6Im1hcC1yZW1vdmUoJG1hcCwgJGtleXMpIixkZXNjOmcoIlJldHVybnMgYSBuZXcgbWFwIHdpdGgga2V5cyByZW1vdmVkLiIpfSx7ZnVuYzoibWFwLWtleXMoJG1hcCkiLGRlc2M6ZygiUmV0dXJucyBhIGxpc3Qgb2YgYWxsIGtleXMgaW4gYSBtYXAuIil9LHtmdW5jOiJtYXAtdmFsdWVzKCRtYXApIixkZXNjOmcoIlJldHVybnMgYSBsaXN0IG9mIGFsbCB2YWx1ZXMgaW4gYSBtYXAuIil9LHtmdW5jOiJtYXAtaGFzLWtleSgkbWFwLCAka2V5KSIsZGVzYzpnKCJSZXR1cm5zIHdoZXRoZXIgYSBtYXAgaGFzIGEgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIGEgZ2l2ZW4ga2V5LiIpfSx7ZnVuYzoia2V5d29yZHMoJGFyZ3MpIixkZXNjOmcoIlJldHVybnMgdGhlIGtleXdvcmRzIHBhc3NlZCB0byBhIGZ1bmN0aW9uIHRoYXQgdGFrZXMgdmFyaWFibGUgYXJndW1lbnRzLiIpfSx7ZnVuYzoiZmVhdHVyZS1leGlzdHMoJGZlYXR1cmUpIixkZXNjOmcoIlJldHVybnMgd2hldGhlciBhIGZlYXR1cmUgZXhpc3RzIGluIHRoZSBjdXJyZW50IFNhc3MgcnVudGltZS4iKX0se2Z1bmM6InZhcmlhYmxlLWV4aXN0cygkbmFtZSkiLGRlc2M6ZygiUmV0dXJucyB3aGV0aGVyIGEgdmFyaWFibGUgd2l0aCB0aGUgZ2l2ZW4gbmFtZSBleGlzdHMgaW4gdGhlIGN1cnJlbnQgc2NvcGUuIil9LHtmdW5jOiJnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCRuYW1lKSIsZGVzYzpnKCJSZXR1cm5zIHdoZXRoZXIgYSB2YXJpYWJsZSB3aXRoIHRoZSBnaXZlbiBuYW1lIGV4aXN0cyBpbiB0aGUgZ2xvYmFsIHNjb3BlLiIpfSx7ZnVuYzoiZnVuY3Rpb24tZXhpc3RzKCRuYW1lKSIsZGVzYzpnKCJSZXR1cm5zIHdoZXRoZXIgYSBmdW5jdGlvbiB3aXRoIHRoZSBnaXZlbiBuYW1lIGV4aXN0cy4iKX0se2Z1bmM6Im1peGluLWV4aXN0cygkbmFtZSkiLGRlc2M6ZygiUmV0dXJucyB3aGV0aGVyIGEgbWl4aW4gd2l0aCB0aGUgZ2l2ZW4gbmFtZSBleGlzdHMuIil9LHtmdW5jOiJpbnNwZWN0KCR2YWx1ZSkiLGRlc2M6ZygiUmV0dXJucyB0aGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGEgdmFsdWUgYXMgaXQgd291bGQgYmUgcmVwcmVzZW50ZWQgaW4gU2Fzcy4iKX0se2Z1bmM6InR5cGUtb2YoJHZhbHVlKSIsZGVzYzpnKCJSZXR1cm5zIHRoZSB0eXBlIG9mIGEgdmFsdWUuIil9LHtmdW5jOiJ1bml0KCRudW1iZXIpIixkZXNjOmcoIlJldHVybnMgdGhlIHVuaXQocykgYXNzb2NpYXRlZCB3aXRoIGEgbnVtYmVyLiIpfSx7ZnVuYzoidW5pdGxlc3MoJG51bWJlcikiLGRlc2M6ZygiUmV0dXJucyB3aGV0aGVyIGEgbnVtYmVyIGhhcyB1bml0cy4iKX0se2Z1bmM6ImNvbXBhcmFibGUoJG51bWJlcjEsICRudW1iZXIyKSIsZGVzYzpnKCJSZXR1cm5zIHdoZXRoZXIgdHdvIG51bWJlcnMgY2FuIGJlIGFkZGVkLCBzdWJ0cmFjdGVkLCBvciBjb21wYXJlZC4iKX0se2Z1bmM6ImNhbGwoJG5hbWUsICRhcmdz4oCmKSIsZGVzYzpnKCJEeW5hbWljYWxseSBjYWxscyBhIFNhc3MgZnVuY3Rpb24uIil9XSx5dC5zY3NzQXREaXJlY3RpdmVzPVt7bGFiZWw6IkBleHRlbmQiLGRvY3VtZW50YXRpb246ZygiSW5oZXJpdHMgdGhlIHN0eWxlcyBvZiBhbm90aGVyIHNlbGVjdG9yLiIpLGtpbmQ6Vi5LZXl3b3JkfSx7bGFiZWw6IkBhdC1yb290Iixkb2N1bWVudGF0aW9uOmcoIkNhdXNlcyBvbmUgb3IgbW9yZSBydWxlcyB0byBiZSBlbWl0dGVkIGF0IHRoZSByb290IG9mIHRoZSBkb2N1bWVudC4iKSxraW5kOlYuS2V5d29yZH0se2xhYmVsOiJAZGVidWciLGRvY3VtZW50YXRpb246ZygiUHJpbnRzIHRoZSB2YWx1ZSBvZiBhbiBleHByZXNzaW9uIHRvIHRoZSBzdGFuZGFyZCBlcnJvciBvdXRwdXQgc3RyZWFtLiBVc2VmdWwgZm9yIGRlYnVnZ2luZyBjb21wbGljYXRlZCBTYXNzIGZpbGVzLiIpLGtpbmQ6Vi5LZXl3b3JkfSx7bGFiZWw6IkB3YXJuIixkb2N1bWVudGF0aW9uOmcoIlByaW50cyB0aGUgdmFsdWUgb2YgYW4gZXhwcmVzc2lvbiB0byB0aGUgc3RhbmRhcmQgZXJyb3Igb3V0cHV0IHN0cmVhbS4gVXNlZnVsIGZvciBsaWJyYXJpZXMgdGhhdCBuZWVkIHRvIHdhcm4gdXNlcnMgb2YgZGVwcmVjYXRpb25zIG9yIHJlY292ZXJpbmcgZnJvbSBtaW5vciBtaXhpbiB1c2FnZSBtaXN0YWtlcy4gV2FybmluZ3MgY2FuIGJlIHR1cm5lZCBvZmYgd2l0aCB0aGUgYC0tcXVpZXRgIGNvbW1hbmQtbGluZSBvcHRpb24gb3IgdGhlIGA6cXVpZXRgIFNhc3Mgb3B0aW9uLiIpLGtpbmQ6Vi5LZXl3b3JkfSx7bGFiZWw6IkBlcnJvciIsZG9jdW1lbnRhdGlvbjpnKCJUaHJvd3MgdGhlIHZhbHVlIG9mIGFuIGV4cHJlc3Npb24gYXMgYSBmYXRhbCBlcnJvciB3aXRoIHN0YWNrIHRyYWNlLiBVc2VmdWwgZm9yIHZhbGlkYXRpbmcgYXJndW1lbnRzIHRvIG1peGlucyBhbmQgZnVuY3Rpb25zLiIpLGtpbmQ6Vi5LZXl3b3JkfSx7bGFiZWw6IkBpZiIsZG9jdW1lbnRhdGlvbjpnKCJJbmNsdWRlcyB0aGUgYm9keSBpZiB0aGUgZXhwcmVzc2lvbiBkb2VzIG5vdCBldmFsdWF0ZSB0byBgZmFsc2VgIG9yIGBudWxsYC4iKSxpbnNlcnRUZXh0OmBAaWYgXCR7MTpleHByfSB7CgkkMAp9YCxpbnNlcnRUZXh0Rm9ybWF0Ok5lLlNuaXBwZXQsa2luZDpWLktleXdvcmR9LHtsYWJlbDoiQGZvciIsZG9jdW1lbnRhdGlvbjpnKCJGb3IgbG9vcCB0aGF0IHJlcGVhdGVkbHkgb3V0cHV0cyBhIHNldCBvZiBzdHlsZXMgZm9yIGVhY2ggYCR2YXJgIGluIHRoZSBgZnJvbS90aHJvdWdoYCBvciBgZnJvbS90b2AgY2xhdXNlLiIpLGluc2VydFRleHQ6IkBmb3IgXFwkJHsxOnZhcn0gZnJvbSAkezI6c3RhcnR9ICR7M3x0byx0aHJvdWdofH0gJHs0OmVuZH0ge1xuCSQwXG59IixpbnNlcnRUZXh0Rm9ybWF0Ok5lLlNuaXBwZXQsa2luZDpWLktleXdvcmR9LHtsYWJlbDoiQGVhY2giLGRvY3VtZW50YXRpb246ZygiRWFjaCBsb29wIHRoYXQgc2V0cyBgJHZhcmAgdG8gZWFjaCBpdGVtIGluIHRoZSBsaXN0IG9yIG1hcCwgdGhlbiBvdXRwdXRzIHRoZSBzdHlsZXMgaXQgY29udGFpbnMgdXNpbmcgdGhhdCB2YWx1ZSBvZiBgJHZhcmAuIiksaW5zZXJ0VGV4dDoiQGVhY2ggXFwkJHsxOnZhcn0gaW4gJHsyOmxpc3R9IHtcbgkkMFxufSIsaW5zZXJ0VGV4dEZvcm1hdDpOZS5TbmlwcGV0LGtpbmQ6Vi5LZXl3b3JkfSx7bGFiZWw6IkB3aGlsZSIsZG9jdW1lbnRhdGlvbjpnKCJXaGlsZSBsb29wIHRoYXQgdGFrZXMgYW4gZXhwcmVzc2lvbiBhbmQgcmVwZWF0ZWRseSBvdXRwdXRzIHRoZSBuZXN0ZWQgc3R5bGVzIHVudGlsIHRoZSBzdGF0ZW1lbnQgZXZhbHVhdGVzIHRvIGBmYWxzZWAuIiksaW5zZXJ0VGV4dDpgQHdoaWxlIFwkezE6Y29uZGl0aW9ufSB7CgkkMAp9YCxpbnNlcnRUZXh0Rm9ybWF0Ok5lLlNuaXBwZXQsa2luZDpWLktleXdvcmR9LHtsYWJlbDoiQG1peGluIixkb2N1bWVudGF0aW9uOmcoIkRlZmluZXMgc3R5bGVzIHRoYXQgY2FuIGJlIHJlLXVzZWQgdGhyb3VnaG91dCB0aGUgc3R5bGVzaGVldCB3aXRoIGBAaW5jbHVkZWAuIiksaW5zZXJ0VGV4dDpgQG1peGluIFwkezE6bmFtZX0gewoJJDAKfWAsaW5zZXJ0VGV4dEZvcm1hdDpOZS5TbmlwcGV0LGtpbmQ6Vi5LZXl3b3JkfSx7bGFiZWw6IkBpbmNsdWRlIixkb2N1bWVudGF0aW9uOmcoIkluY2x1ZGVzIHRoZSBzdHlsZXMgZGVmaW5lZCBieSBhbm90aGVyIG1peGluIGludG8gdGhlIGN1cnJlbnQgcnVsZS4iKSxraW5kOlYuS2V5d29yZH0se2xhYmVsOiJAZnVuY3Rpb24iLGRvY3VtZW50YXRpb246ZygiRGVmaW5lcyBjb21wbGV4IG9wZXJhdGlvbnMgdGhhdCBjYW4gYmUgcmUtdXNlZCB0aHJvdWdob3V0IHN0eWxlc2hlZXRzLiIpLGtpbmQ6Vi5LZXl3b3JkfV0seXQuc2Nzc01vZHVsZUxvYWRlcnM9W3tsYWJlbDoiQHVzZSIsZG9jdW1lbnRhdGlvbjpnKCJMb2FkcyBtaXhpbnMsIGZ1bmN0aW9ucywgYW5kIHZhcmlhYmxlcyBmcm9tIG90aGVyIFNhc3Mgc3R5bGVzaGVldHMgYXMgJ21vZHVsZXMnLCBhbmQgY29tYmluZXMgQ1NTIGZyb20gbXVsdGlwbGUgc3R5bGVzaGVldHMgdG9nZXRoZXIuIikscmVmZXJlbmNlczpbe25hbWU6b3QsdXJsOiJodHRwczovL3Nhc3MtbGFuZy5jb20vZG9jdW1lbnRhdGlvbi9hdC1ydWxlcy91c2UifV0saW5zZXJ0VGV4dDoiQHVzZSAkMDsiLGluc2VydFRleHRGb3JtYXQ6TmUuU25pcHBldCxraW5kOlYuS2V5d29yZH0se2xhYmVsOiJAZm9yd2FyZCIsZG9jdW1lbnRhdGlvbjpnKCJMb2FkcyBhIFNhc3Mgc3R5bGVzaGVldCBhbmQgbWFrZXMgaXRzIG1peGlucywgZnVuY3Rpb25zLCBhbmQgdmFyaWFibGVzIGF2YWlsYWJsZSB3aGVuIHRoaXMgc3R5bGVzaGVldCBpcyBsb2FkZWQgd2l0aCB0aGUgQHVzZSBydWxlLiIpLHJlZmVyZW5jZXM6W3tuYW1lOm90LHVybDoiaHR0cHM6Ly9zYXNzLWxhbmcuY29tL2RvY3VtZW50YXRpb24vYXQtcnVsZXMvZm9yd2FyZCJ9XSxpbnNlcnRUZXh0OiJAZm9yd2FyZCAkMDsiLGluc2VydFRleHRGb3JtYXQ6TmUuU25pcHBldCxraW5kOlYuS2V5d29yZH1dLHl0LnNjc3NNb2R1bGVCdWlsdElucz1be2xhYmVsOiJzYXNzOm1hdGgiLGRvY3VtZW50YXRpb246ZygiUHJvdmlkZXMgZnVuY3Rpb25zIHRoYXQgb3BlcmF0ZSBvbiBudW1iZXJzLiIpLHJlZmVyZW5jZXM6W3tuYW1lOm90LHVybDoiaHR0cHM6Ly9zYXNzLWxhbmcuY29tL2RvY3VtZW50YXRpb24vbW9kdWxlcy9tYXRoIn1dfSx7bGFiZWw6InNhc3M6c3RyaW5nIixkb2N1bWVudGF0aW9uOmcoIk1ha2VzIGl0IGVhc3kgdG8gY29tYmluZSwgc2VhcmNoLCBvciBzcGxpdCBhcGFydCBzdHJpbmdzLiIpLHJlZmVyZW5jZXM6W3tuYW1lOm90LHVybDoiaHR0cHM6Ly9zYXNzLWxhbmcuY29tL2RvY3VtZW50YXRpb24vbW9kdWxlcy9zdHJpbmcifV19LHtsYWJlbDoic2Fzczpjb2xvciIsZG9jdW1lbnRhdGlvbjpnKCJHZW5lcmF0ZXMgbmV3IGNvbG9ycyBiYXNlZCBvbiBleGlzdGluZyBvbmVzLCBtYWtpbmcgaXQgZWFzeSB0byBidWlsZCBjb2xvciB0aGVtZXMuIikscmVmZXJlbmNlczpbe25hbWU6b3QsdXJsOiJodHRwczovL3Nhc3MtbGFuZy5jb20vZG9jdW1lbnRhdGlvbi9tb2R1bGVzL2NvbG9yIn1dfSx7bGFiZWw6InNhc3M6bGlzdCIsZG9jdW1lbnRhdGlvbjpnKCJMZXRzIHlvdSBhY2Nlc3MgYW5kIG1vZGlmeSB2YWx1ZXMgaW4gbGlzdHMuIikscmVmZXJlbmNlczpbe25hbWU6b3QsdXJsOiJodHRwczovL3Nhc3MtbGFuZy5jb20vZG9jdW1lbnRhdGlvbi9tb2R1bGVzL2xpc3QifV19LHtsYWJlbDoic2FzczptYXAiLGRvY3VtZW50YXRpb246ZygiTWFrZXMgaXQgcG9zc2libGUgdG8gbG9vayB1cCB0aGUgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIGEga2V5IGluIGEgbWFwLCBhbmQgbXVjaCBtb3JlLiIpLHJlZmVyZW5jZXM6W3tuYW1lOm90LHVybDoiaHR0cHM6Ly9zYXNzLWxhbmcuY29tL2RvY3VtZW50YXRpb24vbW9kdWxlcy9tYXAifV19LHtsYWJlbDoic2FzczpzZWxlY3RvciIsZG9jdW1lbnRhdGlvbjpnKCJQcm92aWRlcyBhY2Nlc3MgdG8gU2Fzc+KAmXMgcG93ZXJmdWwgc2VsZWN0b3IgZW5naW5lLiIpLHJlZmVyZW5jZXM6W3tuYW1lOm90LHVybDoiaHR0cHM6Ly9zYXNzLWxhbmcuY29tL2RvY3VtZW50YXRpb24vbW9kdWxlcy9zZWxlY3RvciJ9XX0se2xhYmVsOiJzYXNzOm1ldGEiLGRvY3VtZW50YXRpb246ZygiRXhwb3NlcyB0aGUgZGV0YWlscyBvZiBTYXNz4oCZcyBpbm5lciB3b3JraW5ncy4iKSxyZWZlcmVuY2VzOlt7bmFtZTpvdCx1cmw6Imh0dHBzOi8vc2Fzcy1sYW5nLmNvbS9kb2N1bWVudGF0aW9uL21vZHVsZXMvbWV0YSJ9XX1dO2Z1bmN0aW9uIGhoKGUpe2UuZm9yRWFjaCh0PT57aWYodC5kb2N1bWVudGF0aW9uJiZ0LnJlZmVyZW5jZXMmJnQucmVmZXJlbmNlcy5sZW5ndGg+MCl7Y29uc3Qgbj10eXBlb2YgdC5kb2N1bWVudGF0aW9uPT0ic3RyaW5nIj97a2luZDoibWFya2Rvd24iLHZhbHVlOnQuZG9jdW1lbnRhdGlvbn06e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTp0LmRvY3VtZW50YXRpb24udmFsdWV9O24udmFsdWUrPWAKCmAsbi52YWx1ZSs9dC5yZWZlcmVuY2VzLm1hcChyPT5gWyR7ci5uYW1lfV0oJHtyLnVybH0pYCkuam9pbigiIHwgIiksdC5kb2N1bWVudGF0aW9uPW59fSl9dmFyIGRoPTQ3LGhmPTEwLGRmPTEzLHVmPTEyLERzPTk2LElzPTQ2LHBmPXAuQ3VzdG9tVG9rZW4sQXM9cGYrKyx1aD1jbGFzcyBleHRlbmRzIFNue3NjYW5OZXh0KGUpe2NvbnN0IHQ9dGhpcy5lc2NhcGVkSmF2YVNjcmlwdCgpO3JldHVybiB0IT09bnVsbD90aGlzLmZpbmlzaFRva2VuKGUsdCk6dGhpcy5zdHJlYW0uYWR2YW5jZUlmQ2hhcnMoW0lzLElzLElzXSk/dGhpcy5maW5pc2hUb2tlbihlLEFzKTpzdXBlci5zY2FuTmV4dChlKX1jb21tZW50KCl7cmV0dXJuIHN1cGVyLmNvbW1lbnQoKT8hMDohdGhpcy5pblVSTCYmdGhpcy5zdHJlYW0uYWR2YW5jZUlmQ2hhcnMoW2RoLGRoXSk/KHRoaXMuc3RyZWFtLmFkdmFuY2VXaGlsZUNoYXIoZT0+e3N3aXRjaChlKXtjYXNlIGhmOmNhc2UgZGY6Y2FzZSB1ZjpyZXR1cm4hMTtkZWZhdWx0OnJldHVybiEwfX0pLCEwKTohMX1lc2NhcGVkSmF2YVNjcmlwdCgpe3JldHVybiB0aGlzLnN0cmVhbS5wZWVrQ2hhcigpPT09RHM/KHRoaXMuc3RyZWFtLmFkdmFuY2UoMSksdGhpcy5zdHJlYW0uYWR2YW5jZVdoaWxlQ2hhcih0PT50IT09RHMpLHRoaXMuc3RyZWFtLmFkdmFuY2VJZkNoYXIoRHMpP3AuRXNjYXBlZEphdmFTY3JpcHQ6cC5CYWRFc2NhcGVkSmF2YVNjcmlwdCk6bnVsbH19LG1mPWNsYXNzIGV4dGVuZHMgQ3J7Y29uc3RydWN0b3IoKXtzdXBlcihuZXcgdWgpfV9wYXJzZVN0eWxlc2hlZXRTdGF0ZW1lbnQoZT0hMSl7cmV0dXJuIHRoaXMucGVlayhwLkF0S2V5d29yZCk/dGhpcy5fcGFyc2VWYXJpYWJsZURlY2xhcmF0aW9uKCl8fHRoaXMuX3BhcnNlUGx1Z2luKCl8fHN1cGVyLl9wYXJzZVN0eWxlc2hlZXRBdFN0YXRlbWVudChlKTp0aGlzLl90cnlQYXJzZU1peGluRGVjbGFyYXRpb24oKXx8dGhpcy5fdHJ5UGFyc2VNaXhpblJlZmVyZW5jZSgpfHx0aGlzLl9wYXJzZUZ1bmN0aW9uKCl8fHRoaXMuX3BhcnNlUnVsZXNldCghMCl9X3BhcnNlSW1wb3J0KCl7aWYoIXRoaXMucGVla0tleXdvcmQoIkBpbXBvcnQiKSYmIXRoaXMucGVla0tleXdvcmQoIkBpbXBvcnQtb25jZSIpKXJldHVybiBudWxsO2NvbnN0IGU9dGhpcy5jcmVhdGUoT2kpO2lmKHRoaXMuY29uc3VtZVRva2VuKCksdGhpcy5hY2NlcHQocC5QYXJlbnRoZXNpc0wpKXtpZighdGhpcy5hY2NlcHQocC5JZGVudCkpcmV0dXJuIHRoaXMuZmluaXNoKGUseS5JZGVudGlmaWVyRXhwZWN0ZWQsW3AuU2VtaUNvbG9uXSk7ZG8gaWYoIXRoaXMuYWNjZXB0KHAuQ29tbWEpKWJyZWFrO3doaWxlKHRoaXMuYWNjZXB0KHAuSWRlbnQpKTtpZighdGhpcy5hY2NlcHQocC5QYXJlbnRoZXNpc1IpKXJldHVybiB0aGlzLmZpbmlzaChlLHkuUmlnaHRQYXJlbnRoZXNpc0V4cGVjdGVkLFtwLlNlbWlDb2xvbl0pfXJldHVybiFlLmFkZENoaWxkKHRoaXMuX3BhcnNlVVJJTGl0ZXJhbCgpKSYmIWUuYWRkQ2hpbGQodGhpcy5fcGFyc2VTdHJpbmdMaXRlcmFsKCkpP3RoaXMuZmluaXNoKGUseS5VUklPclN0cmluZ0V4cGVjdGVkLFtwLlNlbWlDb2xvbl0pOighdGhpcy5wZWVrKHAuU2VtaUNvbG9uKSYmIXRoaXMucGVlayhwLkVPRikmJmUuc2V0TWVkaWFsaXN0KHRoaXMuX3BhcnNlTWVkaWFRdWVyeUxpc3QoKSksdGhpcy5fY29tcGxldGVQYXJzZUltcG9ydChlKSl9X3BhcnNlUGx1Z2luKCl7aWYoIXRoaXMucGVla0tleXdvcmQoIkBwbHVnaW4iKSlyZXR1cm4gbnVsbDtjb25zdCBlPXRoaXMuY3JlYXRlTm9kZShiLlBsdWdpbik7cmV0dXJuIHRoaXMuY29uc3VtZVRva2VuKCksZS5hZGRDaGlsZCh0aGlzLl9wYXJzZVN0cmluZ0xpdGVyYWwoKSk/dGhpcy5hY2NlcHQocC5TZW1pQ29sb24pP3RoaXMuZmluaXNoKGUpOnRoaXMuZmluaXNoKGUseS5TZW1pQ29sb25FeHBlY3RlZCk6dGhpcy5maW5pc2goZSx5LlN0cmluZ0xpdGVyYWxFeHBlY3RlZCl9X3BhcnNlTWVkaWFRdWVyeSgpe2NvbnN0IGU9c3VwZXIuX3BhcnNlTWVkaWFRdWVyeSgpO2lmKCFlKXtjb25zdCB0PXRoaXMuY3JlYXRlKEVsKTtyZXR1cm4gdC5hZGRDaGlsZCh0aGlzLl9wYXJzZVZhcmlhYmxlKCkpP3RoaXMuZmluaXNoKHQpOm51bGx9cmV0dXJuIGV9X3BhcnNlTWVkaWFEZWNsYXJhdGlvbihlPSExKXtyZXR1cm4gdGhpcy5fdHJ5UGFyc2VSdWxlc2V0KGUpfHx0aGlzLl90cnlUb1BhcnNlRGVjbGFyYXRpb24oKXx8dGhpcy5fdHJ5UGFyc2VNaXhpbkRlY2xhcmF0aW9uKCl8fHRoaXMuX3RyeVBhcnNlTWl4aW5SZWZlcmVuY2UoKXx8dGhpcy5fcGFyc2VEZXRhY2hlZFJ1bGVTZXRNaXhpbigpfHx0aGlzLl9wYXJzZVN0eWxlc2hlZXRTdGF0ZW1lbnQoZSl9X3BhcnNlTWVkaWFGZWF0dXJlTmFtZSgpe3JldHVybiB0aGlzLl9wYXJzZUlkZW50KCl8fHRoaXMuX3BhcnNlVmFyaWFibGUoKX1fcGFyc2VWYXJpYWJsZURlY2xhcmF0aW9uKGU9W10pe2NvbnN0IHQ9dGhpcy5jcmVhdGUoaHIpLG49dGhpcy5tYXJrKCk7aWYoIXQuc2V0VmFyaWFibGUodGhpcy5fcGFyc2VWYXJpYWJsZSghMCkpKXJldHVybiBudWxsO2lmKHRoaXMuYWNjZXB0KHAuQ29sb24pKXtpZih0aGlzLnByZXZUb2tlbiYmKHQuY29sb25Qb3NpdGlvbj10aGlzLnByZXZUb2tlbi5vZmZzZXQpLHQuc2V0VmFsdWUodGhpcy5fcGFyc2VEZXRhY2hlZFJ1bGVTZXQoKSkpdC5uZWVkc1NlbWljb2xvbj0hMTtlbHNlIGlmKCF0LnNldFZhbHVlKHRoaXMuX3BhcnNlRXhwcigpKSlyZXR1cm4gdGhpcy5maW5pc2godCx5LlZhcmlhYmxlVmFsdWVFeHBlY3RlZCxbXSxlKTt0LmFkZENoaWxkKHRoaXMuX3BhcnNlUHJpbygpKX1lbHNlIHJldHVybiB0aGlzLnJlc3RvcmVBdE1hcmsobiksbnVsbDtyZXR1cm4gdGhpcy5wZWVrKHAuU2VtaUNvbG9uKSYmKHQuc2VtaWNvbG9uUG9zaXRpb249dGhpcy50b2tlbi5vZmZzZXQpLHRoaXMuZmluaXNoKHQpfV9wYXJzZURldGFjaGVkUnVsZVNldCgpe2xldCBlPXRoaXMubWFyaygpO2lmKHRoaXMucGVla0RlbGltKCIjIil8fHRoaXMucGVla0RlbGltKCIuIikpaWYodGhpcy5jb25zdW1lVG9rZW4oKSwhdGhpcy5oYXNXaGl0ZXNwYWNlKCkmJnRoaXMuYWNjZXB0KHAuUGFyZW50aGVzaXNMKSl7bGV0IG49dGhpcy5jcmVhdGUoRm4pO2lmKG4uZ2V0UGFyYW1ldGVycygpLmFkZENoaWxkKHRoaXMuX3BhcnNlTWl4aW5QYXJhbWV0ZXIoKSkpZm9yKDsodGhpcy5hY2NlcHQocC5Db21tYSl8fHRoaXMuYWNjZXB0KHAuU2VtaUNvbG9uKSkmJiF0aGlzLnBlZWsocC5QYXJlbnRoZXNpc1IpOyluLmdldFBhcmFtZXRlcnMoKS5hZGRDaGlsZCh0aGlzLl9wYXJzZU1peGluUGFyYW1ldGVyKCkpfHx0aGlzLm1hcmtFcnJvcihuLHkuSWRlbnRpZmllckV4cGVjdGVkLFtdLFtwLlBhcmVudGhlc2lzUl0pO2lmKCF0aGlzLmFjY2VwdChwLlBhcmVudGhlc2lzUikpcmV0dXJuIHRoaXMucmVzdG9yZUF0TWFyayhlKSxudWxsfWVsc2UgcmV0dXJuIHRoaXMucmVzdG9yZUF0TWFyayhlKSxudWxsO2lmKCF0aGlzLnBlZWsocC5DdXJseUwpKXJldHVybiBudWxsO2NvbnN0IHQ9dGhpcy5jcmVhdGUoc2UpO3JldHVybiB0aGlzLl9wYXJzZUJvZHkodCx0aGlzLl9wYXJzZURldGFjaGVkUnVsZVNldEJvZHkuYmluZCh0aGlzKSksdGhpcy5maW5pc2godCl9X3BhcnNlRGV0YWNoZWRSdWxlU2V0Qm9keSgpe3JldHVybiB0aGlzLl90cnlQYXJzZUtleWZyYW1lU2VsZWN0b3IoKXx8dGhpcy5fcGFyc2VSdWxlU2V0RGVjbGFyYXRpb24oKX1fYWRkTG9va3VwQ2hpbGRyZW4oZSl7aWYoIWUuYWRkQ2hpbGQodGhpcy5fcGFyc2VMb29rdXBWYWx1ZSgpKSlyZXR1cm4hMTtsZXQgdD0hMTtmb3IoO3RoaXMucGVlayhwLkJyYWNrZXRMKSYmKHQ9ITApLCEhZS5hZGRDaGlsZCh0aGlzLl9wYXJzZUxvb2t1cFZhbHVlKCkpOyl0PSExO3JldHVybiF0fV9wYXJzZUxvb2t1cFZhbHVlKCl7Y29uc3QgZT10aGlzLmNyZWF0ZShPKSx0PXRoaXMubWFyaygpO3JldHVybiB0aGlzLmFjY2VwdChwLkJyYWNrZXRMKT8oZS5hZGRDaGlsZCh0aGlzLl9wYXJzZVZhcmlhYmxlKCExLCEwKSl8fGUuYWRkQ2hpbGQodGhpcy5fcGFyc2VQcm9wZXJ0eUlkZW50aWZpZXIoKSkpJiZ0aGlzLmFjY2VwdChwLkJyYWNrZXRSKXx8dGhpcy5hY2NlcHQocC5CcmFja2V0Uik/ZToodGhpcy5yZXN0b3JlQXRNYXJrKHQpLG51bGwpOih0aGlzLnJlc3RvcmVBdE1hcmsodCksbnVsbCl9X3BhcnNlVmFyaWFibGUoZT0hMSx0PSExKXtjb25zdCBuPSFlJiZ0aGlzLnBlZWtEZWxpbSgiJCIpO2lmKCF0aGlzLnBlZWtEZWxpbSgiQCIpJiYhbiYmIXRoaXMucGVlayhwLkF0S2V5d29yZCkpcmV0dXJuIG51bGw7Y29uc3Qgcj10aGlzLmNyZWF0ZShqaSksaT10aGlzLm1hcmsoKTtmb3IoO3RoaXMuYWNjZXB0RGVsaW0oIkAiKXx8IWUmJnRoaXMuYWNjZXB0RGVsaW0oIiQiKTspaWYodGhpcy5oYXNXaGl0ZXNwYWNlKCkpcmV0dXJuIHRoaXMucmVzdG9yZUF0TWFyayhpKSxudWxsO3JldHVybiF0aGlzLmFjY2VwdChwLkF0S2V5d29yZCkmJiF0aGlzLmFjY2VwdChwLklkZW50KT8odGhpcy5yZXN0b3JlQXRNYXJrKGkpLG51bGwpOiF0JiZ0aGlzLnBlZWsocC5CcmFja2V0TCkmJiF0aGlzLl9hZGRMb29rdXBDaGlsZHJlbihyKT8odGhpcy5yZXN0b3JlQXRNYXJrKGkpLG51bGwpOnJ9X3BhcnNlVGVybUV4cHJlc3Npb24oKXtyZXR1cm4gdGhpcy5fcGFyc2VWYXJpYWJsZSgpfHx0aGlzLl9wYXJzZUVzY2FwZWQoKXx8c3VwZXIuX3BhcnNlVGVybUV4cHJlc3Npb24oKXx8dGhpcy5fdHJ5UGFyc2VNaXhpblJlZmVyZW5jZSghMSl9X3BhcnNlRXNjYXBlZCgpe2lmKHRoaXMucGVlayhwLkVzY2FwZWRKYXZhU2NyaXB0KXx8dGhpcy5wZWVrKHAuQmFkRXNjYXBlZEphdmFTY3JpcHQpKXtjb25zdCBlPXRoaXMuY3JlYXRlTm9kZShiLkVzY2FwZWRWYWx1ZSk7cmV0dXJuIHRoaXMuY29uc3VtZVRva2VuKCksdGhpcy5maW5pc2goZSl9aWYodGhpcy5wZWVrRGVsaW0oIn4iKSl7Y29uc3QgZT10aGlzLmNyZWF0ZU5vZGUoYi5Fc2NhcGVkVmFsdWUpO3JldHVybiB0aGlzLmNvbnN1bWVUb2tlbigpLHRoaXMuYWNjZXB0KHAuU3RyaW5nKXx8dGhpcy5hY2NlcHQocC5Fc2NhcGVkSmF2YVNjcmlwdCk/dGhpcy5maW5pc2goZSk6dGhpcy5maW5pc2goZSx5LlRlcm1FeHBlY3RlZCl9cmV0dXJuIG51bGx9X3BhcnNlT3BlcmF0b3IoKXtjb25zdCBlPXRoaXMuX3BhcnNlR3VhcmRPcGVyYXRvcigpO3JldHVybiBlfHxzdXBlci5fcGFyc2VPcGVyYXRvcigpfV9wYXJzZUd1YXJkT3BlcmF0b3IoKXtpZih0aGlzLnBlZWtEZWxpbSgiPiIpKXtjb25zdCBlPXRoaXMuY3JlYXRlTm9kZShiLk9wZXJhdG9yKTtyZXR1cm4gdGhpcy5jb25zdW1lVG9rZW4oKSx0aGlzLmFjY2VwdERlbGltKCI9IiksZX1lbHNlIGlmKHRoaXMucGVla0RlbGltKCI9Iikpe2NvbnN0IGU9dGhpcy5jcmVhdGVOb2RlKGIuT3BlcmF0b3IpO3JldHVybiB0aGlzLmNvbnN1bWVUb2tlbigpLHRoaXMuYWNjZXB0RGVsaW0oIjwiKSxlfWVsc2UgaWYodGhpcy5wZWVrRGVsaW0oIjwiKSl7Y29uc3QgZT10aGlzLmNyZWF0ZU5vZGUoYi5PcGVyYXRvcik7cmV0dXJuIHRoaXMuY29uc3VtZVRva2VuKCksdGhpcy5hY2NlcHREZWxpbSgiPSIpLGV9cmV0dXJuIG51bGx9X3BhcnNlUnVsZVNldERlY2xhcmF0aW9uKCl7cmV0dXJuIHRoaXMucGVlayhwLkF0S2V5d29yZCk/dGhpcy5fcGFyc2VLZXlmcmFtZSgpfHx0aGlzLl9wYXJzZU1lZGlhKCEwKXx8dGhpcy5fcGFyc2VJbXBvcnQoKXx8dGhpcy5fcGFyc2VTdXBwb3J0cyghMCl8fHRoaXMuX3BhcnNlTGF5ZXIoKXx8dGhpcy5fcGFyc2VQcm9wZXJ0eUF0UnVsZSgpfHx0aGlzLl9wYXJzZUNvbnRhaW5lcighMCl8fHRoaXMuX3BhcnNlRGV0YWNoZWRSdWxlU2V0TWl4aW4oKXx8dGhpcy5fcGFyc2VWYXJpYWJsZURlY2xhcmF0aW9uKCl8fHRoaXMuX3BhcnNlUnVsZVNldERlY2xhcmF0aW9uQXRTdGF0ZW1lbnQoKTp0aGlzLl90cnlQYXJzZU1peGluRGVjbGFyYXRpb24oKXx8dGhpcy5fdHJ5UGFyc2VSdWxlc2V0KCEwKXx8dGhpcy5fdHJ5UGFyc2VNaXhpblJlZmVyZW5jZSgpfHx0aGlzLl9wYXJzZUZ1bmN0aW9uKCl8fHRoaXMuX3BhcnNlRXh0ZW5kKCl8fHRoaXMuX3BhcnNlRGVjbGFyYXRpb24oKX1fcGFyc2VLZXlmcmFtZUlkZW50KCl7cmV0dXJuIHRoaXMuX3BhcnNlSWRlbnQoW0ouS2V5ZnJhbWVdKXx8dGhpcy5fcGFyc2VWYXJpYWJsZSgpfV9wYXJzZUtleWZyYW1lU2VsZWN0b3IoKXtyZXR1cm4gdGhpcy5fcGFyc2VEZXRhY2hlZFJ1bGVTZXRNaXhpbigpfHxzdXBlci5fcGFyc2VLZXlmcmFtZVNlbGVjdG9yKCl9X3BhcnNlU2VsZWN0b3IoZSl7Y29uc3QgdD10aGlzLmNyZWF0ZShDbik7bGV0IG49ITE7Zm9yKGUmJihuPXQuYWRkQ2hpbGQodGhpcy5fcGFyc2VDb21iaW5hdG9yKCkpKTt0LmFkZENoaWxkKHRoaXMuX3BhcnNlU2ltcGxlU2VsZWN0b3IoKSk7KXtuPSEwO2NvbnN0IHI9dGhpcy5tYXJrKCk7aWYodC5hZGRDaGlsZCh0aGlzLl9wYXJzZUd1YXJkKCkpJiZ0aGlzLnBlZWsocC5DdXJseUwpKWJyZWFrO3RoaXMucmVzdG9yZUF0TWFyayhyKSx0LmFkZENoaWxkKHRoaXMuX3BhcnNlQ29tYmluYXRvcigpKX1yZXR1cm4gbj90aGlzLmZpbmlzaCh0KTpudWxsfV9wYXJzZU5lc3RpbmdTZWxlY3Rvcigpe2lmKHRoaXMucGVla0RlbGltKCImIikpe2NvbnN0IGU9dGhpcy5jcmVhdGVOb2RlKGIuU2VsZWN0b3JDb21iaW5hdG9yKTtmb3IodGhpcy5jb25zdW1lVG9rZW4oKTshdGhpcy5oYXNXaGl0ZXNwYWNlKCkmJih0aGlzLmFjY2VwdERlbGltKCItIil8fHRoaXMuYWNjZXB0KHAuTnVtKXx8dGhpcy5hY2NlcHQocC5EaW1lbnNpb24pfHxlLmFkZENoaWxkKHRoaXMuX3BhcnNlSWRlbnQoKSl8fHRoaXMuYWNjZXB0RGVsaW0oIiYiKSk7KTtyZXR1cm4gdGhpcy5maW5pc2goZSl9cmV0dXJuIG51bGx9X3BhcnNlU2VsZWN0b3JJZGVudCgpe2lmKCF0aGlzLnBlZWtJbnRlcnBvbGF0ZWRJZGVudCgpKXJldHVybiBudWxsO2NvbnN0IGU9dGhpcy5jcmVhdGVOb2RlKGIuU2VsZWN0b3JJbnRlcnBvbGF0aW9uKTtyZXR1cm4gdGhpcy5fYWNjZXB0SW50ZXJwb2xhdGVkSWRlbnQoZSk/dGhpcy5maW5pc2goZSk6bnVsbH1fcGFyc2VQcm9wZXJ0eUlkZW50aWZpZXIoZT0hMSl7Y29uc3QgdD0vXltcdy1dKy87aWYoIXRoaXMucGVla0ludGVycG9sYXRlZElkZW50KCkmJiF0aGlzLnBlZWtSZWdFeHAodGhpcy50b2tlbi50eXBlLHQpKXJldHVybiBudWxsO2NvbnN0IG49dGhpcy5tYXJrKCkscj10aGlzLmNyZWF0ZShNZSk7ci5pc0N1c3RvbVByb3BlcnR5PXRoaXMuYWNjZXB0RGVsaW0oIi0iKSYmdGhpcy5hY2NlcHREZWxpbSgiLSIpO2xldCBpPSExO3JldHVybiBlP3IuaXNDdXN0b21Qcm9wZXJ0eT9pPXIuYWRkQ2hpbGQodGhpcy5fcGFyc2VJZGVudCgpKTppPXIuYWRkQ2hpbGQodGhpcy5fcGFyc2VSZWdleHAodCkpOnIuaXNDdXN0b21Qcm9wZXJ0eT9pPXRoaXMuX2FjY2VwdEludGVycG9sYXRlZElkZW50KHIpOmk9dGhpcy5fYWNjZXB0SW50ZXJwb2xhdGVkSWRlbnQocix0KSxpPyghZSYmIXRoaXMuaGFzV2hpdGVzcGFjZSgpJiYodGhpcy5hY2NlcHREZWxpbSgiKyIpLHRoaXMuaGFzV2hpdGVzcGFjZSgpfHx0aGlzLmFjY2VwdElkZW50KCJfIikpLHRoaXMuZmluaXNoKHIpKToodGhpcy5yZXN0b3JlQXRNYXJrKG4pLG51bGwpfXBlZWtJbnRlcnBvbGF0ZWRJZGVudCgpe3JldHVybiB0aGlzLnBlZWsocC5JZGVudCl8fHRoaXMucGVla0RlbGltKCJAIil8fHRoaXMucGVla0RlbGltKCIkIil8fHRoaXMucGVla0RlbGltKCItIil9X2FjY2VwdEludGVycG9sYXRlZElkZW50KGUsdCl7bGV0IG49ITE7Y29uc3Qgcj0oKT0+e2NvbnN0IHM9dGhpcy5tYXJrKCk7cmV0dXJuIHRoaXMuYWNjZXB0RGVsaW0oIi0iKSYmKHRoaXMuaGFzV2hpdGVzcGFjZSgpfHx0aGlzLmFjY2VwdERlbGltKCItIiksdGhpcy5oYXNXaGl0ZXNwYWNlKCkpPyh0aGlzLnJlc3RvcmVBdE1hcmsocyksbnVsbCk6dGhpcy5fcGFyc2VJbnRlcnBvbGF0aW9uKCl9LGk9dD8oKT0+dGhpcy5hY2NlcHRSZWdleHAodCk6KCk9PnRoaXMuYWNjZXB0KHAuSWRlbnQpO2Zvcig7KGkoKXx8ZS5hZGRDaGlsZCh0aGlzLl9wYXJzZUludGVycG9sYXRpb24oKXx8dGhpcy50cnkocikpKSYmKG49ITAsIXRoaXMuaGFzV2hpdGVzcGFjZSgpKTspO3JldHVybiBufV9wYXJzZUludGVycG9sYXRpb24oKXtjb25zdCBlPXRoaXMubWFyaygpO2lmKHRoaXMucGVla0RlbGltKCJAIil8fHRoaXMucGVla0RlbGltKCIkIikpe2NvbnN0IHQ9dGhpcy5jcmVhdGVOb2RlKGIuSW50ZXJwb2xhdGlvbik7cmV0dXJuIHRoaXMuY29uc3VtZVRva2VuKCksdGhpcy5oYXNXaGl0ZXNwYWNlKCl8fCF0aGlzLmFjY2VwdChwLkN1cmx5TCk/KHRoaXMucmVzdG9yZUF0TWFyayhlKSxudWxsKTp0LmFkZENoaWxkKHRoaXMuX3BhcnNlSWRlbnQoKSk/dGhpcy5hY2NlcHQocC5DdXJseVIpP3RoaXMuZmluaXNoKHQpOnRoaXMuZmluaXNoKHQseS5SaWdodEN1cmx5RXhwZWN0ZWQpOnRoaXMuZmluaXNoKHQseS5JZGVudGlmaWVyRXhwZWN0ZWQpfXJldHVybiBudWxsfV90cnlQYXJzZU1peGluRGVjbGFyYXRpb24oKXtjb25zdCBlPXRoaXMubWFyaygpLHQ9dGhpcy5jcmVhdGUoRm4pO2lmKCF0LnNldElkZW50aWZpZXIodGhpcy5fcGFyc2VNaXhpbkRlY2xhcmF0aW9uSWRlbnRpZmllcigpKXx8IXRoaXMuYWNjZXB0KHAuUGFyZW50aGVzaXNMKSlyZXR1cm4gdGhpcy5yZXN0b3JlQXRNYXJrKGUpLG51bGw7aWYodC5nZXRQYXJhbWV0ZXJzKCkuYWRkQ2hpbGQodGhpcy5fcGFyc2VNaXhpblBhcmFtZXRlcigpKSlmb3IoOyh0aGlzLmFjY2VwdChwLkNvbW1hKXx8dGhpcy5hY2NlcHQocC5TZW1pQ29sb24pKSYmIXRoaXMucGVlayhwLlBhcmVudGhlc2lzUik7KXQuZ2V0UGFyYW1ldGVycygpLmFkZENoaWxkKHRoaXMuX3BhcnNlTWl4aW5QYXJhbWV0ZXIoKSl8fHRoaXMubWFya0Vycm9yKHQseS5JZGVudGlmaWVyRXhwZWN0ZWQsW10sW3AuUGFyZW50aGVzaXNSXSk7cmV0dXJuIHRoaXMuYWNjZXB0KHAuUGFyZW50aGVzaXNSKT8odC5zZXRHdWFyZCh0aGlzLl9wYXJzZUd1YXJkKCkpLHRoaXMucGVlayhwLkN1cmx5TCk/dGhpcy5fcGFyc2VCb2R5KHQsdGhpcy5fcGFyc2VNaXhJbkJvZHlEZWNsYXJhdGlvbi5iaW5kKHRoaXMpKToodGhpcy5yZXN0b3JlQXRNYXJrKGUpLG51bGwpKToodGhpcy5yZXN0b3JlQXRNYXJrKGUpLG51bGwpfV9wYXJzZU1peEluQm9keURlY2xhcmF0aW9uKCl7cmV0dXJuIHRoaXMuX3BhcnNlRm9udEZhY2UoKXx8dGhpcy5fcGFyc2VSdWxlU2V0RGVjbGFyYXRpb24oKX1fcGFyc2VNaXhpbkRlY2xhcmF0aW9uSWRlbnRpZmllcigpe2xldCBlO2lmKHRoaXMucGVla0RlbGltKCIjIil8fHRoaXMucGVla0RlbGltKCIuIikpe2lmKGU9dGhpcy5jcmVhdGUoTWUpLHRoaXMuY29uc3VtZVRva2VuKCksdGhpcy5oYXNXaGl0ZXNwYWNlKCl8fCFlLmFkZENoaWxkKHRoaXMuX3BhcnNlSWRlbnQoKSkpcmV0dXJuIG51bGx9ZWxzZSBpZih0aGlzLnBlZWsocC5IYXNoKSllPXRoaXMuY3JlYXRlKE1lKSx0aGlzLmNvbnN1bWVUb2tlbigpO2Vsc2UgcmV0dXJuIG51bGw7cmV0dXJuIGUucmVmZXJlbmNlVHlwZXM9W0ouTWl4aW5dLHRoaXMuZmluaXNoKGUpfV9wYXJzZVBzZXVkbygpe2lmKCF0aGlzLnBlZWsocC5Db2xvbikpcmV0dXJuIG51bGw7Y29uc3QgZT10aGlzLm1hcmsoKSx0PXRoaXMuY3JlYXRlKEVuKTtyZXR1cm4gdGhpcy5jb25zdW1lVG9rZW4oKSx0aGlzLmFjY2VwdElkZW50KCJleHRlbmQiKT90aGlzLl9jb21wbGV0ZUV4dGVuZHModCk6KHRoaXMucmVzdG9yZUF0TWFyayhlKSxzdXBlci5fcGFyc2VQc2V1ZG8oKSl9X3BhcnNlRXh0ZW5kKCl7aWYoIXRoaXMucGVla0RlbGltKCImIikpcmV0dXJuIG51bGw7Y29uc3QgZT10aGlzLm1hcmsoKSx0PXRoaXMuY3JlYXRlKEVuKTtyZXR1cm4gdGhpcy5jb25zdW1lVG9rZW4oKSx0aGlzLmhhc1doaXRlc3BhY2UoKXx8IXRoaXMuYWNjZXB0KHAuQ29sb24pfHwhdGhpcy5hY2NlcHRJZGVudCgiZXh0ZW5kIik/KHRoaXMucmVzdG9yZUF0TWFyayhlKSxudWxsKTp0aGlzLl9jb21wbGV0ZUV4dGVuZHModCl9X2NvbXBsZXRlRXh0ZW5kcyhlKXtpZighdGhpcy5hY2NlcHQocC5QYXJlbnRoZXNpc0wpKXJldHVybiB0aGlzLmZpbmlzaChlLHkuTGVmdFBhcmVudGhlc2lzRXhwZWN0ZWQpO2NvbnN0IHQ9ZS5nZXRTZWxlY3RvcnMoKTtpZighdC5hZGRDaGlsZCh0aGlzLl9wYXJzZVNlbGVjdG9yKCEwKSkpcmV0dXJuIHRoaXMuZmluaXNoKGUseS5TZWxlY3RvckV4cGVjdGVkKTtmb3IoO3RoaXMuYWNjZXB0KHAuQ29tbWEpOylpZighdC5hZGRDaGlsZCh0aGlzLl9wYXJzZVNlbGVjdG9yKCEwKSkpcmV0dXJuIHRoaXMuZmluaXNoKGUseS5TZWxlY3RvckV4cGVjdGVkKTtyZXR1cm4gdGhpcy5hY2NlcHQocC5QYXJlbnRoZXNpc1IpP3RoaXMuZmluaXNoKGUpOnRoaXMuZmluaXNoKGUseS5SaWdodFBhcmVudGhlc2lzRXhwZWN0ZWQpfV9wYXJzZURldGFjaGVkUnVsZVNldE1peGluKCl7aWYoIXRoaXMucGVlayhwLkF0S2V5d29yZCkpcmV0dXJuIG51bGw7Y29uc3QgZT10aGlzLm1hcmsoKSx0PXRoaXMuY3JlYXRlKGRyKTtyZXR1cm4gdC5hZGRDaGlsZCh0aGlzLl9wYXJzZVZhcmlhYmxlKCEwKSkmJih0aGlzLmhhc1doaXRlc3BhY2UoKXx8IXRoaXMuYWNjZXB0KHAuUGFyZW50aGVzaXNMKSk/KHRoaXMucmVzdG9yZUF0TWFyayhlKSxudWxsKTp0aGlzLmFjY2VwdChwLlBhcmVudGhlc2lzUik/dGhpcy5maW5pc2godCk6dGhpcy5maW5pc2godCx5LlJpZ2h0UGFyZW50aGVzaXNFeHBlY3RlZCl9X3RyeVBhcnNlTWl4aW5SZWZlcmVuY2UoZT0hMCl7Y29uc3QgdD10aGlzLm1hcmsoKSxuPXRoaXMuY3JlYXRlKGRyKTtsZXQgcj10aGlzLl9wYXJzZU1peGluRGVjbGFyYXRpb25JZGVudGlmaWVyKCk7Zm9yKDtyOyl7dGhpcy5hY2NlcHREZWxpbSgiPiIpO2NvbnN0IHM9dGhpcy5fcGFyc2VNaXhpbkRlY2xhcmF0aW9uSWRlbnRpZmllcigpO2lmKHMpbi5nZXROYW1lc3BhY2VzKCkuYWRkQ2hpbGQocikscj1zO2Vsc2UgYnJlYWt9aWYoIW4uc2V0SWRlbnRpZmllcihyKSlyZXR1cm4gdGhpcy5yZXN0b3JlQXRNYXJrKHQpLG51bGw7bGV0IGk9ITE7aWYodGhpcy5hY2NlcHQocC5QYXJlbnRoZXNpc0wpKXtpZihpPSEwLG4uZ2V0QXJndW1lbnRzKCkuYWRkQ2hpbGQodGhpcy5fcGFyc2VNaXhpbkFyZ3VtZW50KCkpKXtmb3IoOyh0aGlzLmFjY2VwdChwLkNvbW1hKXx8dGhpcy5hY2NlcHQocC5TZW1pQ29sb24pKSYmIXRoaXMucGVlayhwLlBhcmVudGhlc2lzUik7KWlmKCFuLmdldEFyZ3VtZW50cygpLmFkZENoaWxkKHRoaXMuX3BhcnNlTWl4aW5Bcmd1bWVudCgpKSlyZXR1cm4gdGhpcy5maW5pc2gobix5LkV4cHJlc3Npb25FeHBlY3RlZCl9aWYoIXRoaXMuYWNjZXB0KHAuUGFyZW50aGVzaXNSKSlyZXR1cm4gdGhpcy5maW5pc2gobix5LlJpZ2h0UGFyZW50aGVzaXNFeHBlY3RlZCk7ci5yZWZlcmVuY2VUeXBlcz1bSi5NaXhpbl19ZWxzZSByLnJlZmVyZW5jZVR5cGVzPVtKLk1peGluLEouUnVsZV07cmV0dXJuIHRoaXMucGVlayhwLkJyYWNrZXRMKT9lfHx0aGlzLl9hZGRMb29rdXBDaGlsZHJlbihuKTpuLmFkZENoaWxkKHRoaXMuX3BhcnNlUHJpbygpKSwhaSYmIXRoaXMucGVlayhwLlNlbWlDb2xvbikmJiF0aGlzLnBlZWsocC5DdXJseVIpJiYhdGhpcy5wZWVrKHAuRU9GKT8odGhpcy5yZXN0b3JlQXRNYXJrKHQpLG51bGwpOnRoaXMuZmluaXNoKG4pfV9wYXJzZU1peGluQXJndW1lbnQoKXtjb25zdCBlPXRoaXMuY3JlYXRlKFh0KSx0PXRoaXMubWFyaygpLG49dGhpcy5fcGFyc2VWYXJpYWJsZSgpO3JldHVybiBuJiYodGhpcy5hY2NlcHQocC5Db2xvbik/ZS5zZXRJZGVudGlmaWVyKG4pOnRoaXMucmVzdG9yZUF0TWFyayh0KSksZS5zZXRWYWx1ZSh0aGlzLl9wYXJzZURldGFjaGVkUnVsZVNldCgpfHx0aGlzLl9wYXJzZUV4cHIoITApKT90aGlzLmZpbmlzaChlKToodGhpcy5yZXN0b3JlQXRNYXJrKHQpLG51bGwpfV9wYXJzZU1peGluUGFyYW1ldGVyKCl7Y29uc3QgZT10aGlzLmNyZWF0ZShscik7aWYodGhpcy5wZWVrS2V5d29yZCgiQHJlc3QiKSl7Y29uc3Qgbj10aGlzLmNyZWF0ZShPKTtyZXR1cm4gdGhpcy5jb25zdW1lVG9rZW4oKSx0aGlzLmFjY2VwdChBcyk/KGUuc2V0SWRlbnRpZmllcih0aGlzLmZpbmlzaChuKSksdGhpcy5maW5pc2goZSkpOnRoaXMuZmluaXNoKGUseS5Eb3RFeHBlY3RlZCxbXSxbcC5Db21tYSxwLlBhcmVudGhlc2lzUl0pfWlmKHRoaXMucGVlayhBcykpe2NvbnN0IG49dGhpcy5jcmVhdGUoTyk7cmV0dXJuIHRoaXMuY29uc3VtZVRva2VuKCksZS5zZXRJZGVudGlmaWVyKHRoaXMuZmluaXNoKG4pKSx0aGlzLmZpbmlzaChlKX1sZXQgdD0hMTtyZXR1cm4gZS5zZXRJZGVudGlmaWVyKHRoaXMuX3BhcnNlVmFyaWFibGUoKSkmJih0aGlzLmFjY2VwdChwLkNvbG9uKSx0PSEwKSwhZS5zZXREZWZhdWx0VmFsdWUodGhpcy5fcGFyc2VEZXRhY2hlZFJ1bGVTZXQoKXx8dGhpcy5fcGFyc2VFeHByKCEwKSkmJiF0P251bGw6dGhpcy5maW5pc2goZSl9X3BhcnNlR3VhcmQoKXtpZighdGhpcy5wZWVrSWRlbnQoIndoZW4iKSlyZXR1cm4gbnVsbDtjb25zdCBlPXRoaXMuY3JlYXRlKHRtKTtpZih0aGlzLmNvbnN1bWVUb2tlbigpLCFlLmdldENvbmRpdGlvbnMoKS5hZGRDaGlsZCh0aGlzLl9wYXJzZUd1YXJkQ29uZGl0aW9uKCkpKXJldHVybiB0aGlzLmZpbmlzaChlLHkuQ29uZGl0aW9uRXhwZWN0ZWQpO2Zvcig7dGhpcy5hY2NlcHRJZGVudCgiYW5kIil8fHRoaXMuYWNjZXB0KHAuQ29tbWEpOylpZighZS5nZXRDb25kaXRpb25zKCkuYWRkQ2hpbGQodGhpcy5fcGFyc2VHdWFyZENvbmRpdGlvbigpKSlyZXR1cm4gdGhpcy5maW5pc2goZSx5LkNvbmRpdGlvbkV4cGVjdGVkKTtyZXR1cm4gdGhpcy5maW5pc2goZSl9X3BhcnNlR3VhcmRDb25kaXRpb24oKXtjb25zdCBlPXRoaXMuY3JlYXRlKG5tKTtyZXR1cm4gZS5pc05lZ2F0ZWQ9dGhpcy5hY2NlcHRJZGVudCgibm90IiksdGhpcy5hY2NlcHQocC5QYXJlbnRoZXNpc0wpPyhlLmFkZENoaWxkKHRoaXMuX3BhcnNlRXhwcigpKSx0aGlzLmFjY2VwdChwLlBhcmVudGhlc2lzUik/dGhpcy5maW5pc2goZSk6dGhpcy5maW5pc2goZSx5LlJpZ2h0UGFyZW50aGVzaXNFeHBlY3RlZCkpOmUuaXNOZWdhdGVkP3RoaXMuZmluaXNoKGUseS5MZWZ0UGFyZW50aGVzaXNFeHBlY3RlZCk6bnVsbH1fcGFyc2VGdW5jdGlvbigpe2NvbnN0IGU9dGhpcy5tYXJrKCksdD10aGlzLmNyZWF0ZShfbik7aWYoIXQuc2V0SWRlbnRpZmllcih0aGlzLl9wYXJzZUZ1bmN0aW9uSWRlbnRpZmllcigpKSlyZXR1cm4gbnVsbDtpZih0aGlzLmhhc1doaXRlc3BhY2UoKXx8IXRoaXMuYWNjZXB0KHAuUGFyZW50aGVzaXNMKSlyZXR1cm4gdGhpcy5yZXN0b3JlQXRNYXJrKGUpLG51bGw7aWYodC5nZXRBcmd1bWVudHMoKS5hZGRDaGlsZCh0aGlzLl9wYXJzZU1peGluQXJndW1lbnQoKSkpe2Zvcig7KHRoaXMuYWNjZXB0KHAuQ29tbWEpfHx0aGlzLmFjY2VwdChwLlNlbWlDb2xvbikpJiYhdGhpcy5wZWVrKHAuUGFyZW50aGVzaXNSKTspaWYoIXQuZ2V0QXJndW1lbnRzKCkuYWRkQ2hpbGQodGhpcy5fcGFyc2VNaXhpbkFyZ3VtZW50KCkpKXJldHVybiB0aGlzLmZpbmlzaCh0LHkuRXhwcmVzc2lvbkV4cGVjdGVkKX1yZXR1cm4gdGhpcy5hY2NlcHQocC5QYXJlbnRoZXNpc1IpP3RoaXMuZmluaXNoKHQpOnRoaXMuZmluaXNoKHQseS5SaWdodFBhcmVudGhlc2lzRXhwZWN0ZWQpfV9wYXJzZUZ1bmN0aW9uSWRlbnRpZmllcigpe2lmKHRoaXMucGVla0RlbGltKCIlIikpe2NvbnN0IGU9dGhpcy5jcmVhdGUoTWUpO3JldHVybiBlLnJlZmVyZW5jZVR5cGVzPVtKLkZ1bmN0aW9uXSx0aGlzLmNvbnN1bWVUb2tlbigpLHRoaXMuZmluaXNoKGUpfXJldHVybiBzdXBlci5fcGFyc2VGdW5jdGlvbklkZW50aWZpZXIoKX1fcGFyc2VVUkxBcmd1bWVudCgpe2NvbnN0IGU9dGhpcy5tYXJrKCksdD1zdXBlci5fcGFyc2VVUkxBcmd1bWVudCgpO2lmKCF0fHwhdGhpcy5wZWVrKHAuUGFyZW50aGVzaXNSKSl7dGhpcy5yZXN0b3JlQXRNYXJrKGUpO2NvbnN0IG49dGhpcy5jcmVhdGUoTyk7cmV0dXJuIG4uYWRkQ2hpbGQodGhpcy5fcGFyc2VCaW5hcnlFeHByKCkpLHRoaXMuZmluaXNoKG4pfXJldHVybiB0fX0sTXM9Y2xhc3MgVnMgZXh0ZW5kcyBwc3tjb25zdHJ1Y3Rvcih0LG4pe3N1cGVyKCJAIix0LG4pfWNyZWF0ZUZ1bmN0aW9uUHJvcG9zYWxzKHQsbixyLGkpe2Zvcihjb25zdCBzIG9mIHQpe2NvbnN0IGE9e2xhYmVsOnMubmFtZSxkZXRhaWw6cy5leGFtcGxlLGRvY3VtZW50YXRpb246cy5kZXNjcmlwdGlvbix0ZXh0RWRpdDokLnJlcGxhY2UodGhpcy5nZXRDb21wbGV0aW9uUmFuZ2Uobikscy5uYW1lKyIoJDApIiksaW5zZXJ0VGV4dEZvcm1hdDpOZS5TbmlwcGV0LGtpbmQ6Vi5GdW5jdGlvbn07ciYmKGEuc29ydFRleHQ9InoiKSxpLml0ZW1zLnB1c2goYSl9cmV0dXJuIGl9Z2V0VGVybVByb3Bvc2Fscyh0LG4scil7bGV0IGk9VnMuYnVpbHRJblByb3Bvc2FscztyZXR1cm4gdCYmKGk9aS5maWx0ZXIocz0+IXMudHlwZXx8IXQucmVzdHJpY3Rpb25zfHx0LnJlc3RyaWN0aW9ucy5pbmRleE9mKHMudHlwZSkhPT0tMSkpLHRoaXMuY3JlYXRlRnVuY3Rpb25Qcm9wb3NhbHMoaSxuLCEwLHIpLHN1cGVyLmdldFRlcm1Qcm9wb3NhbHModCxuLHIpfWdldENvbG9yUHJvcG9zYWxzKHQsbixyKXtyZXR1cm4gdGhpcy5jcmVhdGVGdW5jdGlvblByb3Bvc2FscyhWcy5jb2xvclByb3Bvc2FscyxuLCExLHIpLHN1cGVyLmdldENvbG9yUHJvcG9zYWxzKHQsbixyKX1nZXRDb21wbGV0aW9uc0ZvckRlY2xhcmF0aW9uUHJvcGVydHkodCxuKXtyZXR1cm4gdGhpcy5nZXRDb21wbGV0aW9uc0ZvclNlbGVjdG9yKG51bGwsITAsbiksc3VwZXIuZ2V0Q29tcGxldGlvbnNGb3JEZWNsYXJhdGlvblByb3BlcnR5KHQsbil9fTtNcy5idWlsdEluUHJvcG9zYWxzPVt7bmFtZToiaWYiLGV4YW1wbGU6ImlmKGNvbmRpdGlvbiwgdHJ1ZVZhbHVlIFssIGZhbHNlVmFsdWVdKTsiLGRlc2NyaXB0aW9uOmcoInJldHVybnMgb25lIG9mIHR3byB2YWx1ZXMgZGVwZW5kaW5nIG9uIGEgY29uZGl0aW9uLiIpfSx7bmFtZToiYm9vbGVhbiIsZXhhbXBsZToiYm9vbGVhbihjb25kaXRpb24pOyIsZGVzY3JpcHRpb246ZygnInN0b3JlIiBhIGJvb2xlYW4gdGVzdCBmb3IgbGF0ZXIgZXZhbHVhdGlvbiBpbiBhIGd1YXJkIG9yIGlmKCkuJyl9LHtuYW1lOiJsZW5ndGgiLGV4YW1wbGU6Imxlbmd0aChAbGlzdCk7IixkZXNjcmlwdGlvbjpnKCJyZXR1cm5zIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgaW4gYSB2YWx1ZSBsaXN0Iil9LHtuYW1lOiJleHRyYWN0IixleGFtcGxlOiJleHRyYWN0KEBsaXN0LCBpbmRleCk7IixkZXNjcmlwdGlvbjpnKCJyZXR1cm5zIGEgdmFsdWUgYXQgdGhlIHNwZWNpZmllZCBwb3NpdGlvbiBpbiB0aGUgbGlzdCIpfSx7bmFtZToicmFuZ2UiLGV4YW1wbGU6InJhbmdlKFtzdGFydCwgXSBlbmQgWywgc3RlcF0pOyIsZGVzY3JpcHRpb246ZygiZ2VuZXJhdGUgYSBsaXN0IHNwYW5uaW5nIGEgcmFuZ2Ugb2YgdmFsdWVzIil9LHtuYW1lOiJlYWNoIixleGFtcGxlOiJlYWNoKEBsaXN0LCBydWxlc2V0KTsiLGRlc2NyaXB0aW9uOmcoImJpbmQgdGhlIGV2YWx1YXRpb24gb2YgYSBydWxlc2V0IHRvIGVhY2ggbWVtYmVyIG9mIGEgbGlzdC4iKX0se25hbWU6ImVzY2FwZSIsZXhhbXBsZToiZXNjYXBlKEBzdHJpbmcpOyIsZGVzY3JpcHRpb246ZygiVVJMIGVuY29kZXMgYSBzdHJpbmciKX0se25hbWU6ImUiLGV4YW1wbGU6ImUoQHN0cmluZyk7IixkZXNjcmlwdGlvbjpnKCJlc2NhcGUgc3RyaW5nIGNvbnRlbnQiKX0se25hbWU6InJlcGxhY2UiLGV4YW1wbGU6InJlcGxhY2UoQHN0cmluZywgQHBhdHRlcm4sIEByZXBsYWNlbWVudFssIEBmbGFnc10pOyIsZGVzY3JpcHRpb246Zygic3RyaW5nIHJlcGxhY2UiKX0se25hbWU6InVuaXQiLGV4YW1wbGU6InVuaXQoQGRpbWVuc2lvbiwgW0B1bml0OiAnJ10pOyIsZGVzY3JpcHRpb246ZygicmVtb3ZlIG9yIGNoYW5nZSB0aGUgdW5pdCBvZiBhIGRpbWVuc2lvbiIpfSx7bmFtZToiY29sb3IiLGV4YW1wbGU6ImNvbG9yKEBzdHJpbmcpOyIsZGVzY3JpcHRpb246ZygicGFyc2VzIGEgc3RyaW5nIHRvIGEgY29sb3IiKSx0eXBlOiJjb2xvciJ9LHtuYW1lOiJjb252ZXJ0IixleGFtcGxlOiJjb252ZXJ0KEB2YWx1ZSwgdW5pdCk7IixkZXNjcmlwdGlvbjpnKCJjb252ZXJ0cyBudW1iZXJzIGZyb20gb25lIHR5cGUgaW50byBhbm90aGVyIil9LHtuYW1lOiJkYXRhLXVyaSIsZXhhbXBsZToiZGF0YS11cmkoW21pbWV0eXBlLF0gdXJsKTsiLGRlc2NyaXB0aW9uOmcoImlubGluZXMgYSByZXNvdXJjZSBhbmQgZmFsbHMgYmFjayB0byBgdXJsKClgIiksdHlwZToidXJsIn0se25hbWU6ImFicyIsZGVzY3JpcHRpb246ZygiYWJzb2x1dGUgdmFsdWUgb2YgYSBudW1iZXIiKSxleGFtcGxlOiJhYnMobnVtYmVyKTsifSx7bmFtZToiYWNvcyIsZGVzY3JpcHRpb246ZygiYXJjY29zaW5lIC0gaW52ZXJzZSBvZiBjb3NpbmUgZnVuY3Rpb24iKSxleGFtcGxlOiJhY29zKG51bWJlcik7In0se25hbWU6ImFzaW4iLGRlc2NyaXB0aW9uOmcoImFyY3NpbmUgLSBpbnZlcnNlIG9mIHNpbmUgZnVuY3Rpb24iKSxleGFtcGxlOiJhc2luKG51bWJlcik7In0se25hbWU6ImNlaWwiLGV4YW1wbGU6ImNlaWwoQG51bWJlcik7IixkZXNjcmlwdGlvbjpnKCJyb3VuZHMgdXAgdG8gYW4gaW50ZWdlciIpfSx7bmFtZToiY29zIixkZXNjcmlwdGlvbjpnKCJjb3NpbmUgZnVuY3Rpb24iKSxleGFtcGxlOiJjb3MobnVtYmVyKTsifSx7bmFtZToiZmxvb3IiLGRlc2NyaXB0aW9uOmcoInJvdW5kcyBkb3duIHRvIGFuIGludGVnZXIiKSxleGFtcGxlOiJmbG9vcihAbnVtYmVyKTsifSx7bmFtZToicGVyY2VudGFnZSIsZGVzY3JpcHRpb246ZygiY29udmVydHMgdG8gYSAlLCBlLmcuIDAuNSA+IDUwJSIpLGV4YW1wbGU6InBlcmNlbnRhZ2UoQG51bWJlcik7Iix0eXBlOiJwZXJjZW50YWdlIn0se25hbWU6InJvdW5kIixkZXNjcmlwdGlvbjpnKCJyb3VuZHMgYSBudW1iZXIgdG8gYSBudW1iZXIgb2YgcGxhY2VzIiksZXhhbXBsZToicm91bmQobnVtYmVyLCBbcGxhY2VzOiAwXSk7In0se25hbWU6InNxcnQiLGRlc2NyaXB0aW9uOmcoImNhbGN1bGF0ZXMgc3F1YXJlIHJvb3Qgb2YgYSBudW1iZXIiKSxleGFtcGxlOiJzcXJ0KG51bWJlcik7In0se25hbWU6InNpbiIsZGVzY3JpcHRpb246Zygic2luZSBmdW5jdGlvbiIpLGV4YW1wbGU6InNpbihudW1iZXIpOyJ9LHtuYW1lOiJ0YW4iLGRlc2NyaXB0aW9uOmcoInRhbmdlbnQgZnVuY3Rpb24iKSxleGFtcGxlOiJ0YW4obnVtYmVyKTsifSx7bmFtZToiYXRhbiIsZGVzY3JpcHRpb246ZygiYXJjdGFuZ2VudCAtIGludmVyc2Ugb2YgdGFuZ2VudCBmdW5jdGlvbiIpLGV4YW1wbGU6ImF0YW4obnVtYmVyKTsifSx7bmFtZToicGkiLGRlc2NyaXB0aW9uOmcoInJldHVybnMgcGkiKSxleGFtcGxlOiJwaSgpOyJ9LHtuYW1lOiJwb3ciLGRlc2NyaXB0aW9uOmcoImZpcnN0IGFyZ3VtZW50IHJhaXNlZCB0byB0aGUgcG93ZXIgb2YgdGhlIHNlY29uZCBhcmd1bWVudCIpLGV4YW1wbGU6InBvdyhAYmFzZSwgQGV4cG9uZW50KTsifSx7bmFtZToibW9kIixkZXNjcmlwdGlvbjpnKCJmaXJzdCBhcmd1bWVudCBtb2R1bHVzIHNlY29uZCBhcmd1bWVudCIpLGV4YW1wbGU6Im1vZChudW1iZXIsIG51bWJlcik7In0se25hbWU6Im1pbiIsZGVzY3JpcHRpb246ZygicmV0dXJucyB0aGUgbG93ZXN0IG9mIG9uZSBvciBtb3JlIHZhbHVlcyIpLGV4YW1wbGU6Im1pbihAeCwgQHkpOyJ9LHtuYW1lOiJtYXgiLGRlc2NyaXB0aW9uOmcoInJldHVybnMgdGhlIGxvd2VzdCBvZiBvbmUgb3IgbW9yZSB2YWx1ZXMiKSxleGFtcGxlOiJtYXgoQHgsIEB5KTsifV0sTXMuY29sb3JQcm9wb3NhbHM9W3tuYW1lOiJhcmdiIixleGFtcGxlOiJhcmdiKEBjb2xvcik7IixkZXNjcmlwdGlvbjpnKCJjcmVhdGVzIGEgI0FBUlJHR0JCIil9LHtuYW1lOiJoc2wiLGV4YW1wbGU6ImhzbChAaHVlLCBAc2F0dXJhdGlvbiwgQGxpZ2h0bmVzcyk7IixkZXNjcmlwdGlvbjpnKCJjcmVhdGVzIGEgY29sb3IiKX0se25hbWU6ImhzbGEiLGV4YW1wbGU6ImhzbGEoQGh1ZSwgQHNhdHVyYXRpb24sIEBsaWdodG5lc3MsIEBhbHBoYSk7IixkZXNjcmlwdGlvbjpnKCJjcmVhdGVzIGEgY29sb3IiKX0se25hbWU6ImhzdiIsZXhhbXBsZToiaHN2KEBodWUsIEBzYXR1cmF0aW9uLCBAdmFsdWUpOyIsZGVzY3JpcHRpb246ZygiY3JlYXRlcyBhIGNvbG9yIil9LHtuYW1lOiJoc3ZhIixleGFtcGxlOiJoc3ZhKEBodWUsIEBzYXR1cmF0aW9uLCBAdmFsdWUsIEBhbHBoYSk7IixkZXNjcmlwdGlvbjpnKCJjcmVhdGVzIGEgY29sb3IiKX0se25hbWU6Imh1ZSIsZXhhbXBsZToiaHVlKEBjb2xvcik7IixkZXNjcmlwdGlvbjpnKCJyZXR1cm5zIHRoZSBgaHVlYCBjaGFubmVsIG9mIGBAY29sb3JgIGluIHRoZSBIU0wgc3BhY2UiKX0se25hbWU6InNhdHVyYXRpb24iLGV4YW1wbGU6InNhdHVyYXRpb24oQGNvbG9yKTsiLGRlc2NyaXB0aW9uOmcoInJldHVybnMgdGhlIGBzYXR1cmF0aW9uYCBjaGFubmVsIG9mIGBAY29sb3JgIGluIHRoZSBIU0wgc3BhY2UiKX0se25hbWU6ImxpZ2h0bmVzcyIsZXhhbXBsZToibGlnaHRuZXNzKEBjb2xvcik7IixkZXNjcmlwdGlvbjpnKCJyZXR1cm5zIHRoZSBgbGlnaHRuZXNzYCBjaGFubmVsIG9mIGBAY29sb3JgIGluIHRoZSBIU0wgc3BhY2UiKX0se25hbWU6Imhzdmh1ZSIsZXhhbXBsZToiaHN2aHVlKEBjb2xvcik7IixkZXNjcmlwdGlvbjpnKCJyZXR1cm5zIHRoZSBgaHVlYCBjaGFubmVsIG9mIGBAY29sb3JgIGluIHRoZSBIU1Ygc3BhY2UiKX0se25hbWU6ImhzdnNhdHVyYXRpb24iLGV4YW1wbGU6ImhzdnNhdHVyYXRpb24oQGNvbG9yKTsiLGRlc2NyaXB0aW9uOmcoInJldHVybnMgdGhlIGBzYXR1cmF0aW9uYCBjaGFubmVsIG9mIGBAY29sb3JgIGluIHRoZSBIU1Ygc3BhY2UiKX0se25hbWU6ImhzdnZhbHVlIixleGFtcGxlOiJoc3Z2YWx1ZShAY29sb3IpOyIsZGVzY3JpcHRpb246ZygicmV0dXJucyB0aGUgYHZhbHVlYCBjaGFubmVsIG9mIGBAY29sb3JgIGluIHRoZSBIU1Ygc3BhY2UiKX0se25hbWU6InJlZCIsZXhhbXBsZToicmVkKEBjb2xvcik7IixkZXNjcmlwdGlvbjpnKCJyZXR1cm5zIHRoZSBgcmVkYCBjaGFubmVsIG9mIGBAY29sb3JgIil9LHtuYW1lOiJncmVlbiIsZXhhbXBsZToiZ3JlZW4oQGNvbG9yKTsiLGRlc2NyaXB0aW9uOmcoInJldHVybnMgdGhlIGBncmVlbmAgY2hhbm5lbCBvZiBgQGNvbG9yYCIpfSx7bmFtZToiYmx1ZSIsZXhhbXBsZToiYmx1ZShAY29sb3IpOyIsZGVzY3JpcHRpb246ZygicmV0dXJucyB0aGUgYGJsdWVgIGNoYW5uZWwgb2YgYEBjb2xvcmAiKX0se25hbWU6ImFscGhhIixleGFtcGxlOiJhbHBoYShAY29sb3IpOyIsZGVzY3JpcHRpb246ZygicmV0dXJucyB0aGUgYGFscGhhYCBjaGFubmVsIG9mIGBAY29sb3JgIil9LHtuYW1lOiJsdW1hIixleGFtcGxlOiJsdW1hKEBjb2xvcik7IixkZXNjcmlwdGlvbjpnKCJyZXR1cm5zIHRoZSBgbHVtYWAgdmFsdWUgKHBlcmNlcHR1YWwgYnJpZ2h0bmVzcykgb2YgYEBjb2xvcmAiKX0se25hbWU6InNhdHVyYXRlIixleGFtcGxlOiJzYXR1cmF0ZShAY29sb3IsIDEwJSk7IixkZXNjcmlwdGlvbjpnKCJyZXR1cm4gYEBjb2xvcmAgMTAlIHBvaW50cyBtb3JlIHNhdHVyYXRlZCIpfSx7bmFtZToiZGVzYXR1cmF0ZSIsZXhhbXBsZToiZGVzYXR1cmF0ZShAY29sb3IsIDEwJSk7IixkZXNjcmlwdGlvbjpnKCJyZXR1cm4gYEBjb2xvcmAgMTAlIHBvaW50cyBsZXNzIHNhdHVyYXRlZCIpfSx7bmFtZToibGlnaHRlbiIsZXhhbXBsZToibGlnaHRlbihAY29sb3IsIDEwJSk7IixkZXNjcmlwdGlvbjpnKCJyZXR1cm4gYEBjb2xvcmAgMTAlIHBvaW50cyBsaWdodGVyIil9LHtuYW1lOiJkYXJrZW4iLGV4YW1wbGU6ImRhcmtlbihAY29sb3IsIDEwJSk7IixkZXNjcmlwdGlvbjpnKCJyZXR1cm4gYEBjb2xvcmAgMTAlIHBvaW50cyBkYXJrZXIiKX0se25hbWU6ImZhZGVpbiIsZXhhbXBsZToiZmFkZWluKEBjb2xvciwgMTAlKTsiLGRlc2NyaXB0aW9uOmcoInJldHVybiBgQGNvbG9yYCAxMCUgcG9pbnRzIGxlc3MgdHJhbnNwYXJlbnQiKX0se25hbWU6ImZhZGVvdXQiLGV4YW1wbGU6ImZhZGVvdXQoQGNvbG9yLCAxMCUpOyIsZGVzY3JpcHRpb246ZygicmV0dXJuIGBAY29sb3JgIDEwJSBwb2ludHMgbW9yZSB0cmFuc3BhcmVudCIpfSx7bmFtZToiZmFkZSIsZXhhbXBsZToiZmFkZShAY29sb3IsIDUwJSk7IixkZXNjcmlwdGlvbjpnKCJyZXR1cm4gYEBjb2xvcmAgd2l0aCA1MCUgdHJhbnNwYXJlbmN5Iil9LHtuYW1lOiJzcGluIixleGFtcGxlOiJzcGluKEBjb2xvciwgMTApOyIsZGVzY3JpcHRpb246ZygicmV0dXJuIGBAY29sb3JgIHdpdGggYSAxMCBkZWdyZWUgbGFyZ2VyIGluIGh1ZSIpfSx7bmFtZToibWl4IixleGFtcGxlOiJtaXgoQGNvbG9yMSwgQGNvbG9yMiwgW0B3ZWlnaHQ6IDUwJV0pOyIsZGVzY3JpcHRpb246ZygicmV0dXJuIGEgbWl4IG9mIGBAY29sb3IxYCBhbmQgYEBjb2xvcjJgIil9LHtuYW1lOiJncmV5c2NhbGUiLGV4YW1wbGU6ImdyZXlzY2FsZShAY29sb3IpOyIsZGVzY3JpcHRpb246ZygicmV0dXJucyBhIGdyZXksIDEwMCUgZGVzYXR1cmF0ZWQgY29sb3IiKX0se25hbWU6ImNvbnRyYXN0IixleGFtcGxlOiJjb250cmFzdChAY29sb3IxLCBbQGRhcmtjb2xvcjogYmxhY2tdLCBbQGxpZ2h0Y29sb3I6IHdoaXRlXSwgW0B0aHJlc2hvbGQ6IDQzJV0pOyIsZGVzY3JpcHRpb246ZygicmV0dXJuIGBAZGFya2NvbG9yYCBpZiBgQGNvbG9yMSBpcz4gNDMlIGx1bWFgIG90aGVyd2lzZSByZXR1cm4gYEBsaWdodGNvbG9yYCwgc2VlIG5vdGVzIil9LHtuYW1lOiJtdWx0aXBseSIsZXhhbXBsZToibXVsdGlwbHkoQGNvbG9yMSwgQGNvbG9yMik7In0se25hbWU6InNjcmVlbiIsZXhhbXBsZToic2NyZWVuKEBjb2xvcjEsIEBjb2xvcjIpOyJ9LHtuYW1lOiJvdmVybGF5IixleGFtcGxlOiJvdmVybGF5KEBjb2xvcjEsIEBjb2xvcjIpOyJ9LHtuYW1lOiJzb2Z0bGlnaHQiLGV4YW1wbGU6InNvZnRsaWdodChAY29sb3IxLCBAY29sb3IyKTsifSx7bmFtZToiaGFyZGxpZ2h0IixleGFtcGxlOiJoYXJkbGlnaHQoQGNvbG9yMSwgQGNvbG9yMik7In0se25hbWU6ImRpZmZlcmVuY2UiLGV4YW1wbGU6ImRpZmZlcmVuY2UoQGNvbG9yMSwgQGNvbG9yMik7In0se25hbWU6ImV4Y2x1c2lvbiIsZXhhbXBsZToiZXhjbHVzaW9uKEBjb2xvcjEsIEBjb2xvcjIpOyJ9LHtuYW1lOiJhdmVyYWdlIixleGFtcGxlOiJhdmVyYWdlKEBjb2xvcjEsIEBjb2xvcjIpOyJ9LHtuYW1lOiJuZWdhdGlvbiIsZXhhbXBsZToibmVnYXRpb24oQGNvbG9yMSwgQGNvbG9yMik7In1dO2Z1bmN0aW9uIGZmKGUsdCl7Y29uc3Qgbj1nZihlKTtyZXR1cm4gYmYobix0KX1mdW5jdGlvbiBnZihlKXtmdW5jdGlvbiB0KGQpe3JldHVybiBlLnBvc2l0aW9uQXQoZC5vZmZzZXQpLmxpbmV9ZnVuY3Rpb24gbihkKXtyZXR1cm4gZS5wb3NpdGlvbkF0KGQub2Zmc2V0K2QubGVuKS5saW5lfWZ1bmN0aW9uIHIoKXtzd2l0Y2goZS5sYW5ndWFnZUlkKXtjYXNlInNjc3MiOnJldHVybiBuZXcgY2g7Y2FzZSJsZXNzIjpyZXR1cm4gbmV3IHVoO2RlZmF1bHQ6cmV0dXJuIG5ldyBTbn19ZnVuY3Rpb24gaShkLHUpe2NvbnN0IGY9dChkKSxtPW4oZCk7cmV0dXJuIGYhPT1tP3tzdGFydExpbmU6ZixlbmRMaW5lOm0sa2luZDp1fTpudWxsfWNvbnN0IHM9W10sYT1bXSxsPXIoKTtsLmlnbm9yZUNvbW1lbnQ9ITEsbC5zZXRTb3VyY2UoZS5nZXRUZXh0KCkpO2xldCBvPWwuc2NhbigpLGM9bnVsbDtmb3IoO28udHlwZSE9PXAuRU9GOyl7c3dpdGNoKG8udHlwZSl7Y2FzZSBwLkN1cmx5TDpjYXNlIE5yOnthLnB1c2goe2xpbmU6dChvKSx0eXBlOiJicmFjZSIsaXNTdGFydDohMH0pO2JyZWFrfWNhc2UgcC5DdXJseVI6e2lmKGEubGVuZ3RoIT09MCl7Y29uc3QgZD1waChhLCJicmFjZSIpO2lmKCFkKWJyZWFrO2xldCB1PW4obyk7ZC50eXBlPT09ImJyYWNlIiYmKGMmJm4oYykhPT11JiZ1LS0sZC5saW5lIT09dSYmcy5wdXNoKHtzdGFydExpbmU6ZC5saW5lLGVuZExpbmU6dSxraW5kOnZvaWQgMH0pKX1icmVha31jYXNlIHAuQ29tbWVudDp7Y29uc3QgZD1tPT5tPT09IiNyZWdpb24iP3tsaW5lOnQobyksdHlwZToiY29tbWVudCIsaXNTdGFydDohMH06e2xpbmU6bihvKSx0eXBlOiJjb21tZW50Iixpc1N0YXJ0OiExfSxmPShtPT57Y29uc3Qgdj1tLnRleHQubWF0Y2goL15ccypcL1wqXHMqKCNyZWdpb258I2VuZHJlZ2lvbilcYlxzKiguKj8pXHMqXCpcLy8pO2lmKHYpcmV0dXJuIGQodlsxXSk7aWYoZS5sYW5ndWFnZUlkPT09InNjc3MifHxlLmxhbmd1YWdlSWQ9PT0ibGVzcyIpe2NvbnN0IHc9bS50ZXh0Lm1hdGNoKC9eXHMqXC9cL1xzKigjcmVnaW9ufCNlbmRyZWdpb24pXGJccyooLio/KVxzKi8pO2lmKHcpcmV0dXJuIGQod1sxXSl9cmV0dXJuIG51bGx9KShvKTtpZihmKWlmKGYuaXNTdGFydClhLnB1c2goZik7ZWxzZXtjb25zdCBtPXBoKGEsImNvbW1lbnQiKTtpZighbSlicmVhazttLnR5cGU9PT0iY29tbWVudCImJm0ubGluZSE9PWYubGluZSYmcy5wdXNoKHtzdGFydExpbmU6bS5saW5lLGVuZExpbmU6Zi5saW5lLGtpbmQ6InJlZ2lvbiJ9KX1lbHNle2NvbnN0IG09aShvLCJjb21tZW50Iik7bSYmcy5wdXNoKG0pfWJyZWFrfX1jPW8sbz1sLnNjYW4oKX1yZXR1cm4gc31mdW5jdGlvbiBwaChlLHQpe2lmKGUubGVuZ3RoPT09MClyZXR1cm4gbnVsbDtmb3IobGV0IG49ZS5sZW5ndGgtMTtuPj0wO24tLSlpZihlW25dLnR5cGU9PT10JiZlW25dLmlzU3RhcnQpcmV0dXJuIGUuc3BsaWNlKG4sMSlbMF07cmV0dXJuIG51bGx9ZnVuY3Rpb24gYmYoZSx0KXtjb25zdCBuPXQmJnQucmFuZ2VMaW1pdHx8TnVtYmVyLk1BWF9WQUxVRSxyPWUuc29ydCgoYSxsKT0+e2xldCBvPWEuc3RhcnRMaW5lLWwuc3RhcnRMaW5lO3JldHVybiBvPT09MCYmKG89YS5lbmRMaW5lLWwuZW5kTGluZSksb30pLGk9W107bGV0IHM9LTE7cmV0dXJuIHIuZm9yRWFjaChhPT57YS5zdGFydExpbmU8cyYmczxhLmVuZExpbmV8fChpLnB1c2goYSkscz1hLmVuZExpbmUpfSksaS5sZW5ndGg8bj9pOmkuc2xpY2UoMCxuKX12YXIgbWg7KGZ1bmN0aW9uKCl7dmFyIGU9WywsZnVuY3Rpb24oaSl7ZnVuY3Rpb24gcyhvKXt0aGlzLl9fcGFyZW50PW8sdGhpcy5fX2NoYXJhY3Rlcl9jb3VudD0wLHRoaXMuX19pbmRlbnRfY291bnQ9LTEsdGhpcy5fX2FsaWdubWVudF9jb3VudD0wLHRoaXMuX193cmFwX3BvaW50X2luZGV4PTAsdGhpcy5fX3dyYXBfcG9pbnRfY2hhcmFjdGVyX2NvdW50PTAsdGhpcy5fX3dyYXBfcG9pbnRfaW5kZW50X2NvdW50PS0xLHRoaXMuX193cmFwX3BvaW50X2FsaWdubWVudF9jb3VudD0wLHRoaXMuX19pdGVtcz1bXX1zLnByb3RvdHlwZS5jbG9uZV9lbXB0eT1mdW5jdGlvbigpe3ZhciBvPW5ldyBzKHRoaXMuX19wYXJlbnQpO3JldHVybiBvLnNldF9pbmRlbnQodGhpcy5fX2luZGVudF9jb3VudCx0aGlzLl9fYWxpZ25tZW50X2NvdW50KSxvfSxzLnByb3RvdHlwZS5pdGVtPWZ1bmN0aW9uKG8pe3JldHVybiBvPDA/dGhpcy5fX2l0ZW1zW3RoaXMuX19pdGVtcy5sZW5ndGgrb106dGhpcy5fX2l0ZW1zW29dfSxzLnByb3RvdHlwZS5oYXNfbWF0Y2g9ZnVuY3Rpb24obyl7Zm9yKHZhciBjPXRoaXMuX19pdGVtcy5sZW5ndGgtMTtjPj0wO2MtLSlpZih0aGlzLl9faXRlbXNbY10ubWF0Y2gobykpcmV0dXJuITA7cmV0dXJuITF9LHMucHJvdG90eXBlLnNldF9pbmRlbnQ9ZnVuY3Rpb24obyxjKXt0aGlzLmlzX2VtcHR5KCkmJih0aGlzLl9faW5kZW50X2NvdW50PW98fDAsdGhpcy5fX2FsaWdubWVudF9jb3VudD1jfHwwLHRoaXMuX19jaGFyYWN0ZXJfY291bnQ9dGhpcy5fX3BhcmVudC5nZXRfaW5kZW50X3NpemUodGhpcy5fX2luZGVudF9jb3VudCx0aGlzLl9fYWxpZ25tZW50X2NvdW50KSl9LHMucHJvdG90eXBlLl9zZXRfd3JhcF9wb2ludD1mdW5jdGlvbigpe3RoaXMuX19wYXJlbnQud3JhcF9saW5lX2xlbmd0aCYmKHRoaXMuX193cmFwX3BvaW50X2luZGV4PXRoaXMuX19pdGVtcy5sZW5ndGgsdGhpcy5fX3dyYXBfcG9pbnRfY2hhcmFjdGVyX2NvdW50PXRoaXMuX19jaGFyYWN0ZXJfY291bnQsdGhpcy5fX3dyYXBfcG9pbnRfaW5kZW50X2NvdW50PXRoaXMuX19wYXJlbnQubmV4dF9saW5lLl9faW5kZW50X2NvdW50LHRoaXMuX193cmFwX3BvaW50X2FsaWdubWVudF9jb3VudD10aGlzLl9fcGFyZW50Lm5leHRfbGluZS5fX2FsaWdubWVudF9jb3VudCl9LHMucHJvdG90eXBlLl9zaG91bGRfd3JhcD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9fd3JhcF9wb2ludF9pbmRleCYmdGhpcy5fX2NoYXJhY3Rlcl9jb3VudD50aGlzLl9fcGFyZW50LndyYXBfbGluZV9sZW5ndGgmJnRoaXMuX193cmFwX3BvaW50X2NoYXJhY3Rlcl9jb3VudD50aGlzLl9fcGFyZW50Lm5leHRfbGluZS5fX2NoYXJhY3Rlcl9jb3VudH0scy5wcm90b3R5cGUuX2FsbG93X3dyYXA9ZnVuY3Rpb24oKXtpZih0aGlzLl9zaG91bGRfd3JhcCgpKXt0aGlzLl9fcGFyZW50LmFkZF9uZXdfbGluZSgpO3ZhciBvPXRoaXMuX19wYXJlbnQuY3VycmVudF9saW5lO3JldHVybiBvLnNldF9pbmRlbnQodGhpcy5fX3dyYXBfcG9pbnRfaW5kZW50X2NvdW50LHRoaXMuX193cmFwX3BvaW50X2FsaWdubWVudF9jb3VudCksby5fX2l0ZW1zPXRoaXMuX19pdGVtcy5zbGljZSh0aGlzLl9fd3JhcF9wb2ludF9pbmRleCksdGhpcy5fX2l0ZW1zPXRoaXMuX19pdGVtcy5zbGljZSgwLHRoaXMuX193cmFwX3BvaW50X2luZGV4KSxvLl9fY2hhcmFjdGVyX2NvdW50Kz10aGlzLl9fY2hhcmFjdGVyX2NvdW50LXRoaXMuX193cmFwX3BvaW50X2NoYXJhY3Rlcl9jb3VudCx0aGlzLl9fY2hhcmFjdGVyX2NvdW50PXRoaXMuX193cmFwX3BvaW50X2NoYXJhY3Rlcl9jb3VudCxvLl9faXRlbXNbMF09PT0iICImJihvLl9faXRlbXMuc3BsaWNlKDAsMSksby5fX2NoYXJhY3Rlcl9jb3VudC09MSksITB9cmV0dXJuITF9LHMucHJvdG90eXBlLmlzX2VtcHR5PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX19pdGVtcy5sZW5ndGg9PT0wfSxzLnByb3RvdHlwZS5sYXN0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNfZW1wdHkoKT9udWxsOnRoaXMuX19pdGVtc1t0aGlzLl9faXRlbXMubGVuZ3RoLTFdfSxzLnByb3RvdHlwZS5wdXNoPWZ1bmN0aW9uKG8pe3RoaXMuX19pdGVtcy5wdXNoKG8pO3ZhciBjPW8ubGFzdEluZGV4T2YoYApgKTtjIT09LTE/dGhpcy5fX2NoYXJhY3Rlcl9jb3VudD1vLmxlbmd0aC1jOnRoaXMuX19jaGFyYWN0ZXJfY291bnQrPW8ubGVuZ3RofSxzLnByb3RvdHlwZS5wb3A9ZnVuY3Rpb24oKXt2YXIgbz1udWxsO3JldHVybiB0aGlzLmlzX2VtcHR5KCl8fChvPXRoaXMuX19pdGVtcy5wb3AoKSx0aGlzLl9fY2hhcmFjdGVyX2NvdW50LT1vLmxlbmd0aCksb30scy5wcm90b3R5cGUuX3JlbW92ZV9pbmRlbnQ9ZnVuY3Rpb24oKXt0aGlzLl9faW5kZW50X2NvdW50PjAmJih0aGlzLl9faW5kZW50X2NvdW50LT0xLHRoaXMuX19jaGFyYWN0ZXJfY291bnQtPXRoaXMuX19wYXJlbnQuaW5kZW50X3NpemUpfSxzLnByb3RvdHlwZS5fcmVtb3ZlX3dyYXBfaW5kZW50PWZ1bmN0aW9uKCl7dGhpcy5fX3dyYXBfcG9pbnRfaW5kZW50X2NvdW50PjAmJih0aGlzLl9fd3JhcF9wb2ludF9pbmRlbnRfY291bnQtPTEpfSxzLnByb3RvdHlwZS50cmltPWZ1bmN0aW9uKCl7Zm9yKDt0aGlzLmxhc3QoKT09PSIgIjspdGhpcy5fX2l0ZW1zLnBvcCgpLHRoaXMuX19jaGFyYWN0ZXJfY291bnQtPTF9LHMucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7dmFyIG89IiI7cmV0dXJuIHRoaXMuaXNfZW1wdHkoKT90aGlzLl9fcGFyZW50LmluZGVudF9lbXB0eV9saW5lcyYmKG89dGhpcy5fX3BhcmVudC5nZXRfaW5kZW50X3N0cmluZyh0aGlzLl9faW5kZW50X2NvdW50KSk6KG89dGhpcy5fX3BhcmVudC5nZXRfaW5kZW50X3N0cmluZyh0aGlzLl9faW5kZW50X2NvdW50LHRoaXMuX19hbGlnbm1lbnRfY291bnQpLG8rPXRoaXMuX19pdGVtcy5qb2luKCIiKSksb307ZnVuY3Rpb24gYShvLGMpe3RoaXMuX19jYWNoZT1bIiJdLHRoaXMuX19pbmRlbnRfc2l6ZT1vLmluZGVudF9zaXplLHRoaXMuX19pbmRlbnRfc3RyaW5nPW8uaW5kZW50X2NoYXIsby5pbmRlbnRfd2l0aF90YWJzfHwodGhpcy5fX2luZGVudF9zdHJpbmc9bmV3IEFycmF5KG8uaW5kZW50X3NpemUrMSkuam9pbihvLmluZGVudF9jaGFyKSksYz1jfHwiIixvLmluZGVudF9sZXZlbD4wJiYoYz1uZXcgQXJyYXkoby5pbmRlbnRfbGV2ZWwrMSkuam9pbih0aGlzLl9faW5kZW50X3N0cmluZykpLHRoaXMuX19iYXNlX3N0cmluZz1jLHRoaXMuX19iYXNlX3N0cmluZ19sZW5ndGg9Yy5sZW5ndGh9YS5wcm90b3R5cGUuZ2V0X2luZGVudF9zaXplPWZ1bmN0aW9uKG8sYyl7dmFyIGQ9dGhpcy5fX2Jhc2Vfc3RyaW5nX2xlbmd0aDtyZXR1cm4gYz1jfHwwLG88MCYmKGQ9MCksZCs9byp0aGlzLl9faW5kZW50X3NpemUsZCs9YyxkfSxhLnByb3RvdHlwZS5nZXRfaW5kZW50X3N0cmluZz1mdW5jdGlvbihvLGMpe3ZhciBkPXRoaXMuX19iYXNlX3N0cmluZztyZXR1cm4gYz1jfHwwLG88MCYmKG89MCxkPSIiKSxjKz1vKnRoaXMuX19pbmRlbnRfc2l6ZSx0aGlzLl9fZW5zdXJlX2NhY2hlKGMpLGQrPXRoaXMuX19jYWNoZVtjXSxkfSxhLnByb3RvdHlwZS5fX2Vuc3VyZV9jYWNoZT1mdW5jdGlvbihvKXtmb3IoO28+PXRoaXMuX19jYWNoZS5sZW5ndGg7KXRoaXMuX19hZGRfY29sdW1uKCl9LGEucHJvdG90eXBlLl9fYWRkX2NvbHVtbj1mdW5jdGlvbigpe3ZhciBvPXRoaXMuX19jYWNoZS5sZW5ndGgsYz0wLGQ9IiI7dGhpcy5fX2luZGVudF9zaXplJiZvPj10aGlzLl9faW5kZW50X3NpemUmJihjPU1hdGguZmxvb3Ioby90aGlzLl9faW5kZW50X3NpemUpLG8tPWMqdGhpcy5fX2luZGVudF9zaXplLGQ9bmV3IEFycmF5KGMrMSkuam9pbih0aGlzLl9faW5kZW50X3N0cmluZykpLG8mJihkKz1uZXcgQXJyYXkobysxKS5qb2luKCIgIikpLHRoaXMuX19jYWNoZS5wdXNoKGQpfTtmdW5jdGlvbiBsKG8sYyl7dGhpcy5fX2luZGVudF9jYWNoZT1uZXcgYShvLGMpLHRoaXMucmF3PSExLHRoaXMuX2VuZF93aXRoX25ld2xpbmU9by5lbmRfd2l0aF9uZXdsaW5lLHRoaXMuaW5kZW50X3NpemU9by5pbmRlbnRfc2l6ZSx0aGlzLndyYXBfbGluZV9sZW5ndGg9by53cmFwX2xpbmVfbGVuZ3RoLHRoaXMuaW5kZW50X2VtcHR5X2xpbmVzPW8uaW5kZW50X2VtcHR5X2xpbmVzLHRoaXMuX19saW5lcz1bXSx0aGlzLnByZXZpb3VzX2xpbmU9bnVsbCx0aGlzLmN1cnJlbnRfbGluZT1udWxsLHRoaXMubmV4dF9saW5lPW5ldyBzKHRoaXMpLHRoaXMuc3BhY2VfYmVmb3JlX3Rva2VuPSExLHRoaXMubm9uX2JyZWFraW5nX3NwYWNlPSExLHRoaXMucHJldmlvdXNfdG9rZW5fd3JhcHBlZD0hMSx0aGlzLl9fYWRkX291dHB1dGxpbmUoKX1sLnByb3RvdHlwZS5fX2FkZF9vdXRwdXRsaW5lPWZ1bmN0aW9uKCl7dGhpcy5wcmV2aW91c19saW5lPXRoaXMuY3VycmVudF9saW5lLHRoaXMuY3VycmVudF9saW5lPXRoaXMubmV4dF9saW5lLmNsb25lX2VtcHR5KCksdGhpcy5fX2xpbmVzLnB1c2godGhpcy5jdXJyZW50X2xpbmUpfSxsLnByb3RvdHlwZS5nZXRfbGluZV9udW1iZXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fX2xpbmVzLmxlbmd0aH0sbC5wcm90b3R5cGUuZ2V0X2luZGVudF9zdHJpbmc9ZnVuY3Rpb24obyxjKXtyZXR1cm4gdGhpcy5fX2luZGVudF9jYWNoZS5nZXRfaW5kZW50X3N0cmluZyhvLGMpfSxsLnByb3RvdHlwZS5nZXRfaW5kZW50X3NpemU9ZnVuY3Rpb24obyxjKXtyZXR1cm4gdGhpcy5fX2luZGVudF9jYWNoZS5nZXRfaW5kZW50X3NpemUobyxjKX0sbC5wcm90b3R5cGUuaXNfZW1wdHk9ZnVuY3Rpb24oKXtyZXR1cm4hdGhpcy5wcmV2aW91c19saW5lJiZ0aGlzLmN1cnJlbnRfbGluZS5pc19lbXB0eSgpfSxsLnByb3RvdHlwZS5hZGRfbmV3X2xpbmU9ZnVuY3Rpb24obyl7cmV0dXJuIHRoaXMuaXNfZW1wdHkoKXx8IW8mJnRoaXMuanVzdF9hZGRlZF9uZXdsaW5lKCk/ITE6KHRoaXMucmF3fHx0aGlzLl9fYWRkX291dHB1dGxpbmUoKSwhMCl9LGwucHJvdG90eXBlLmdldF9jb2RlPWZ1bmN0aW9uKG8pe3RoaXMudHJpbSghMCk7dmFyIGM9dGhpcy5jdXJyZW50X2xpbmUucG9wKCk7YyYmKGNbYy5sZW5ndGgtMV09PT1gCmAmJihjPWMucmVwbGFjZSgvXG4rJC9nLCIiKSksdGhpcy5jdXJyZW50X2xpbmUucHVzaChjKSksdGhpcy5fZW5kX3dpdGhfbmV3bGluZSYmdGhpcy5fX2FkZF9vdXRwdXRsaW5lKCk7dmFyIGQ9dGhpcy5fX2xpbmVzLmpvaW4oYApgKTtyZXR1cm4gbyE9PWAKYCYmKGQ9ZC5yZXBsYWNlKC9bXG5dL2csbykpLGR9LGwucHJvdG90eXBlLnNldF93cmFwX3BvaW50PWZ1bmN0aW9uKCl7dGhpcy5jdXJyZW50X2xpbmUuX3NldF93cmFwX3BvaW50KCl9LGwucHJvdG90eXBlLnNldF9pbmRlbnQ9ZnVuY3Rpb24obyxjKXtyZXR1cm4gbz1vfHwwLGM9Y3x8MCx0aGlzLm5leHRfbGluZS5zZXRfaW5kZW50KG8sYyksdGhpcy5fX2xpbmVzLmxlbmd0aD4xPyh0aGlzLmN1cnJlbnRfbGluZS5zZXRfaW5kZW50KG8sYyksITApOih0aGlzLmN1cnJlbnRfbGluZS5zZXRfaW5kZW50KCksITEpfSxsLnByb3RvdHlwZS5hZGRfcmF3X3Rva2VuPWZ1bmN0aW9uKG8pe2Zvcih2YXIgYz0wO2M8by5uZXdsaW5lcztjKyspdGhpcy5fX2FkZF9vdXRwdXRsaW5lKCk7dGhpcy5jdXJyZW50X2xpbmUuc2V0X2luZGVudCgtMSksdGhpcy5jdXJyZW50X2xpbmUucHVzaChvLndoaXRlc3BhY2VfYmVmb3JlKSx0aGlzLmN1cnJlbnRfbGluZS5wdXNoKG8udGV4dCksdGhpcy5zcGFjZV9iZWZvcmVfdG9rZW49ITEsdGhpcy5ub25fYnJlYWtpbmdfc3BhY2U9ITEsdGhpcy5wcmV2aW91c190b2tlbl93cmFwcGVkPSExfSxsLnByb3RvdHlwZS5hZGRfdG9rZW49ZnVuY3Rpb24obyl7dGhpcy5fX2FkZF9zcGFjZV9iZWZvcmVfdG9rZW4oKSx0aGlzLmN1cnJlbnRfbGluZS5wdXNoKG8pLHRoaXMuc3BhY2VfYmVmb3JlX3Rva2VuPSExLHRoaXMubm9uX2JyZWFraW5nX3NwYWNlPSExLHRoaXMucHJldmlvdXNfdG9rZW5fd3JhcHBlZD10aGlzLmN1cnJlbnRfbGluZS5fYWxsb3dfd3JhcCgpfSxsLnByb3RvdHlwZS5fX2FkZF9zcGFjZV9iZWZvcmVfdG9rZW49ZnVuY3Rpb24oKXt0aGlzLnNwYWNlX2JlZm9yZV90b2tlbiYmIXRoaXMuanVzdF9hZGRlZF9uZXdsaW5lKCkmJih0aGlzLm5vbl9icmVha2luZ19zcGFjZXx8dGhpcy5zZXRfd3JhcF9wb2ludCgpLHRoaXMuY3VycmVudF9saW5lLnB1c2goIiAiKSl9LGwucHJvdG90eXBlLnJlbW92ZV9pbmRlbnQ9ZnVuY3Rpb24obyl7Zm9yKHZhciBjPXRoaXMuX19saW5lcy5sZW5ndGg7bzxjOyl0aGlzLl9fbGluZXNbb10uX3JlbW92ZV9pbmRlbnQoKSxvKys7dGhpcy5jdXJyZW50X2xpbmUuX3JlbW92ZV93cmFwX2luZGVudCgpfSxsLnByb3RvdHlwZS50cmltPWZ1bmN0aW9uKG8pe2ZvcihvPW89PT12b2lkIDA/ITE6byx0aGlzLmN1cnJlbnRfbGluZS50cmltKCk7byYmdGhpcy5fX2xpbmVzLmxlbmd0aD4xJiZ0aGlzLmN1cnJlbnRfbGluZS5pc19lbXB0eSgpOyl0aGlzLl9fbGluZXMucG9wKCksdGhpcy5jdXJyZW50X2xpbmU9dGhpcy5fX2xpbmVzW3RoaXMuX19saW5lcy5sZW5ndGgtMV0sdGhpcy5jdXJyZW50X2xpbmUudHJpbSgpO3RoaXMucHJldmlvdXNfbGluZT10aGlzLl9fbGluZXMubGVuZ3RoPjE/dGhpcy5fX2xpbmVzW3RoaXMuX19saW5lcy5sZW5ndGgtMl06bnVsbH0sbC5wcm90b3R5cGUuanVzdF9hZGRlZF9uZXdsaW5lPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY3VycmVudF9saW5lLmlzX2VtcHR5KCl9LGwucHJvdG90eXBlLmp1c3RfYWRkZWRfYmxhbmtsaW5lPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNfZW1wdHkoKXx8dGhpcy5jdXJyZW50X2xpbmUuaXNfZW1wdHkoKSYmdGhpcy5wcmV2aW91c19saW5lLmlzX2VtcHR5KCl9LGwucHJvdG90eXBlLmVuc3VyZV9lbXB0eV9saW5lX2Fib3ZlPWZ1bmN0aW9uKG8sYyl7Zm9yKHZhciBkPXRoaXMuX19saW5lcy5sZW5ndGgtMjtkPj0wOyl7dmFyIHU9dGhpcy5fX2xpbmVzW2RdO2lmKHUuaXNfZW1wdHkoKSlicmVhaztpZih1Lml0ZW0oMCkuaW5kZXhPZihvKSE9PTAmJnUuaXRlbSgtMSkhPT1jKXt0aGlzLl9fbGluZXMuc3BsaWNlKGQrMSwwLG5ldyBzKHRoaXMpKSx0aGlzLnByZXZpb3VzX2xpbmU9dGhpcy5fX2xpbmVzW3RoaXMuX19saW5lcy5sZW5ndGgtMl07YnJlYWt9ZC0tfX0saS5leHBvcnRzLk91dHB1dD1sfSwsLCxmdW5jdGlvbihpKXtmdW5jdGlvbiBzKG8sYyl7dGhpcy5yYXdfb3B0aW9ucz1hKG8sYyksdGhpcy5kaXNhYmxlZD10aGlzLl9nZXRfYm9vbGVhbigiZGlzYWJsZWQiKSx0aGlzLmVvbD10aGlzLl9nZXRfY2hhcmFjdGVycygiZW9sIiwiYXV0byIpLHRoaXMuZW5kX3dpdGhfbmV3bGluZT10aGlzLl9nZXRfYm9vbGVhbigiZW5kX3dpdGhfbmV3bGluZSIpLHRoaXMuaW5kZW50X3NpemU9dGhpcy5fZ2V0X251bWJlcigiaW5kZW50X3NpemUiLDQpLHRoaXMuaW5kZW50X2NoYXI9dGhpcy5fZ2V0X2NoYXJhY3RlcnMoImluZGVudF9jaGFyIiwiICIpLHRoaXMuaW5kZW50X2xldmVsPXRoaXMuX2dldF9udW1iZXIoImluZGVudF9sZXZlbCIpLHRoaXMucHJlc2VydmVfbmV3bGluZXM9dGhpcy5fZ2V0X2Jvb2xlYW4oInByZXNlcnZlX25ld2xpbmVzIiwhMCksdGhpcy5tYXhfcHJlc2VydmVfbmV3bGluZXM9dGhpcy5fZ2V0X251bWJlcigibWF4X3ByZXNlcnZlX25ld2xpbmVzIiwzMjc4NiksdGhpcy5wcmVzZXJ2ZV9uZXdsaW5lc3x8KHRoaXMubWF4X3ByZXNlcnZlX25ld2xpbmVzPTApLHRoaXMuaW5kZW50X3dpdGhfdGFicz10aGlzLl9nZXRfYm9vbGVhbigiaW5kZW50X3dpdGhfdGFicyIsdGhpcy5pbmRlbnRfY2hhcj09PSIJIiksdGhpcy5pbmRlbnRfd2l0aF90YWJzJiYodGhpcy5pbmRlbnRfY2hhcj0iCSIsdGhpcy5pbmRlbnRfc2l6ZT09PTEmJih0aGlzLmluZGVudF9zaXplPTQpKSx0aGlzLndyYXBfbGluZV9sZW5ndGg9dGhpcy5fZ2V0X251bWJlcigid3JhcF9saW5lX2xlbmd0aCIsdGhpcy5fZ2V0X251bWJlcigibWF4X2NoYXIiKSksdGhpcy5pbmRlbnRfZW1wdHlfbGluZXM9dGhpcy5fZ2V0X2Jvb2xlYW4oImluZGVudF9lbXB0eV9saW5lcyIpLHRoaXMudGVtcGxhdGluZz10aGlzLl9nZXRfc2VsZWN0aW9uX2xpc3QoInRlbXBsYXRpbmciLFsiYXV0byIsIm5vbmUiLCJhbmd1bGFyIiwiZGphbmdvIiwiZXJiIiwiaGFuZGxlYmFycyIsInBocCIsInNtYXJ0eSJdLFsiYXV0byJdKX1zLnByb3RvdHlwZS5fZ2V0X2FycmF5PWZ1bmN0aW9uKG8sYyl7dmFyIGQ9dGhpcy5yYXdfb3B0aW9uc1tvXSx1PWN8fFtdO3JldHVybiB0eXBlb2YgZD09Im9iamVjdCI/ZCE9PW51bGwmJnR5cGVvZiBkLmNvbmNhdD09ImZ1bmN0aW9uIiYmKHU9ZC5jb25jYXQoKSk6dHlwZW9mIGQ9PSJzdHJpbmciJiYodT1kLnNwbGl0KC9bXmEtekEtWjAtOV9cL1wtXSsvKSksdX0scy5wcm90b3R5cGUuX2dldF9ib29sZWFuPWZ1bmN0aW9uKG8sYyl7dmFyIGQ9dGhpcy5yYXdfb3B0aW9uc1tvXSx1PWQ9PT12b2lkIDA/ISFjOiEhZDtyZXR1cm4gdX0scy5wcm90b3R5cGUuX2dldF9jaGFyYWN0ZXJzPWZ1bmN0aW9uKG8sYyl7dmFyIGQ9dGhpcy5yYXdfb3B0aW9uc1tvXSx1PWN8fCIiO3JldHVybiB0eXBlb2YgZD09InN0cmluZyImJih1PWQucmVwbGFjZSgvXFxyLywiXHIiKS5yZXBsYWNlKC9cXG4vLGAKYCkucmVwbGFjZSgvXFx0LywiCSIpKSx1fSxzLnByb3RvdHlwZS5fZ2V0X251bWJlcj1mdW5jdGlvbihvLGMpe3ZhciBkPXRoaXMucmF3X29wdGlvbnNbb107Yz1wYXJzZUludChjLDEwKSxpc05hTihjKSYmKGM9MCk7dmFyIHU9cGFyc2VJbnQoZCwxMCk7cmV0dXJuIGlzTmFOKHUpJiYodT1jKSx1fSxzLnByb3RvdHlwZS5fZ2V0X3NlbGVjdGlvbj1mdW5jdGlvbihvLGMsZCl7dmFyIHU9dGhpcy5fZ2V0X3NlbGVjdGlvbl9saXN0KG8sYyxkKTtpZih1Lmxlbmd0aCE9PTEpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIE9wdGlvbiBWYWx1ZTogVGhlIG9wdGlvbiAnIitvK2AnIGNhbiBvbmx5IGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKYCtjK2AKWW91IHBhc3NlZCBpbjogJ2ArdGhpcy5yYXdfb3B0aW9uc1tvXSsiJyIpO3JldHVybiB1WzBdfSxzLnByb3RvdHlwZS5fZ2V0X3NlbGVjdGlvbl9saXN0PWZ1bmN0aW9uKG8sYyxkKXtpZighY3x8Yy5sZW5ndGg9PT0wKXRocm93IG5ldyBFcnJvcigiU2VsZWN0aW9uIGxpc3QgY2Fubm90IGJlIGVtcHR5LiIpO2lmKGQ9ZHx8W2NbMF1dLCF0aGlzLl9pc192YWxpZF9zZWxlY3Rpb24oZCxjKSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgRGVmYXVsdCBWYWx1ZSEiKTt2YXIgdT10aGlzLl9nZXRfYXJyYXkobyxkKTtpZighdGhpcy5faXNfdmFsaWRfc2VsZWN0aW9uKHUsYykpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIE9wdGlvbiBWYWx1ZTogVGhlIG9wdGlvbiAnIitvK2AnIGNhbiBjb250YWluIG9ubHkgdGhlIGZvbGxvd2luZyB2YWx1ZXM6CmArYytgCllvdSBwYXNzZWQgaW46ICdgK3RoaXMucmF3X29wdGlvbnNbb10rIiciKTtyZXR1cm4gdX0scy5wcm90b3R5cGUuX2lzX3ZhbGlkX3NlbGVjdGlvbj1mdW5jdGlvbihvLGMpe3JldHVybiBvLmxlbmd0aCYmYy5sZW5ndGgmJiFvLnNvbWUoZnVuY3Rpb24oZCl7cmV0dXJuIGMuaW5kZXhPZihkKT09PS0xfSl9O2Z1bmN0aW9uIGEobyxjKXt2YXIgZD17fTtvPWwobyk7dmFyIHU7Zm9yKHUgaW4gbyl1IT09YyYmKGRbdV09b1t1XSk7aWYoYyYmb1tjXSlmb3IodSBpbiBvW2NdKWRbdV09b1tjXVt1XTtyZXR1cm4gZH1mdW5jdGlvbiBsKG8pe3ZhciBjPXt9LGQ7Zm9yKGQgaW4gbyl7dmFyIHU9ZC5yZXBsYWNlKC8tL2csIl8iKTtjW3VdPW9bZF19cmV0dXJuIGN9aS5leHBvcnRzLk9wdGlvbnM9cyxpLmV4cG9ydHMubm9ybWFsaXplT3B0cz1sLGkuZXhwb3J0cy5tZXJnZU9wdHM9YX0sLGZ1bmN0aW9uKGkpe3ZhciBzPVJlZ0V4cC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkoInN0aWNreSIpO2Z1bmN0aW9uIGEobCl7dGhpcy5fX2lucHV0PWx8fCIiLHRoaXMuX19pbnB1dF9sZW5ndGg9dGhpcy5fX2lucHV0Lmxlbmd0aCx0aGlzLl9fcG9zaXRpb249MH1hLnByb3RvdHlwZS5yZXN0YXJ0PWZ1bmN0aW9uKCl7dGhpcy5fX3Bvc2l0aW9uPTB9LGEucHJvdG90eXBlLmJhY2s9ZnVuY3Rpb24oKXt0aGlzLl9fcG9zaXRpb24+MCYmKHRoaXMuX19wb3NpdGlvbi09MSl9LGEucHJvdG90eXBlLmhhc05leHQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fX3Bvc2l0aW9uPHRoaXMuX19pbnB1dF9sZW5ndGh9LGEucHJvdG90eXBlLm5leHQ9ZnVuY3Rpb24oKXt2YXIgbD1udWxsO3JldHVybiB0aGlzLmhhc05leHQoKSYmKGw9dGhpcy5fX2lucHV0LmNoYXJBdCh0aGlzLl9fcG9zaXRpb24pLHRoaXMuX19wb3NpdGlvbis9MSksbH0sYS5wcm90b3R5cGUucGVlaz1mdW5jdGlvbihsKXt2YXIgbz1udWxsO3JldHVybiBsPWx8fDAsbCs9dGhpcy5fX3Bvc2l0aW9uLGw+PTAmJmw8dGhpcy5fX2lucHV0X2xlbmd0aCYmKG89dGhpcy5fX2lucHV0LmNoYXJBdChsKSksb30sYS5wcm90b3R5cGUuX19tYXRjaD1mdW5jdGlvbihsLG8pe2wubGFzdEluZGV4PW87dmFyIGM9bC5leGVjKHRoaXMuX19pbnB1dCk7cmV0dXJuIGMmJiEocyYmbC5zdGlja3kpJiZjLmluZGV4IT09byYmKGM9bnVsbCksY30sYS5wcm90b3R5cGUudGVzdD1mdW5jdGlvbihsLG8pe3JldHVybiBvPW98fDAsbys9dGhpcy5fX3Bvc2l0aW9uLG8+PTAmJm88dGhpcy5fX2lucHV0X2xlbmd0aD8hIXRoaXMuX19tYXRjaChsLG8pOiExfSxhLnByb3RvdHlwZS50ZXN0Q2hhcj1mdW5jdGlvbihsLG8pe3ZhciBjPXRoaXMucGVlayhvKTtyZXR1cm4gbC5sYXN0SW5kZXg9MCxjIT09bnVsbCYmbC50ZXN0KGMpfSxhLnByb3RvdHlwZS5tYXRjaD1mdW5jdGlvbihsKXt2YXIgbz10aGlzLl9fbWF0Y2gobCx0aGlzLl9fcG9zaXRpb24pO3JldHVybiBvP3RoaXMuX19wb3NpdGlvbis9b1swXS5sZW5ndGg6bz1udWxsLG99LGEucHJvdG90eXBlLnJlYWQ9ZnVuY3Rpb24obCxvLGMpe3ZhciBkPSIiLHU7cmV0dXJuIGwmJih1PXRoaXMubWF0Y2gobCksdSYmKGQrPXVbMF0pKSxvJiYodXx8IWwpJiYoZCs9dGhpcy5yZWFkVW50aWwobyxjKSksZH0sYS5wcm90b3R5cGUucmVhZFVudGlsPWZ1bmN0aW9uKGwsbyl7dmFyIGM9IiIsZD10aGlzLl9fcG9zaXRpb247bC5sYXN0SW5kZXg9dGhpcy5fX3Bvc2l0aW9uO3ZhciB1PWwuZXhlYyh0aGlzLl9faW5wdXQpO3JldHVybiB1PyhkPXUuaW5kZXgsbyYmKGQrPXVbMF0ubGVuZ3RoKSk6ZD10aGlzLl9faW5wdXRfbGVuZ3RoLGM9dGhpcy5fX2lucHV0LnN1YnN0cmluZyh0aGlzLl9fcG9zaXRpb24sZCksdGhpcy5fX3Bvc2l0aW9uPWQsY30sYS5wcm90b3R5cGUucmVhZFVudGlsQWZ0ZXI9ZnVuY3Rpb24obCl7cmV0dXJuIHRoaXMucmVhZFVudGlsKGwsITApfSxhLnByb3RvdHlwZS5nZXRfcmVnZXhwPWZ1bmN0aW9uKGwsbyl7dmFyIGM9bnVsbCxkPSJnIjtyZXR1cm4gbyYmcyYmKGQ9InkiKSx0eXBlb2YgbD09InN0cmluZyImJmwhPT0iIj9jPW5ldyBSZWdFeHAobCxkKTpsJiYoYz1uZXcgUmVnRXhwKGwuc291cmNlLGQpKSxjfSxhLnByb3RvdHlwZS5nZXRfbGl0ZXJhbF9yZWdleHA9ZnVuY3Rpb24obCl7cmV0dXJuIFJlZ0V4cChsLnJlcGxhY2UoL1stXC9cXF4kKis/LigpfFtcXXt9XS9nLCJcXCQmIikpfSxhLnByb3RvdHlwZS5wZWVrVW50aWxBZnRlcj1mdW5jdGlvbihsKXt2YXIgbz10aGlzLl9fcG9zaXRpb24sYz10aGlzLnJlYWRVbnRpbEFmdGVyKGwpO3JldHVybiB0aGlzLl9fcG9zaXRpb249byxjfSxhLnByb3RvdHlwZS5sb29rQmFjaz1mdW5jdGlvbihsKXt2YXIgbz10aGlzLl9fcG9zaXRpb24tMTtyZXR1cm4gbz49bC5sZW5ndGgmJnRoaXMuX19pbnB1dC5zdWJzdHJpbmcoby1sLmxlbmd0aCxvKS50b0xvd2VyQ2FzZSgpPT09bH0saS5leHBvcnRzLklucHV0U2Nhbm5lcj1hfSwsLCwsZnVuY3Rpb24oaSl7ZnVuY3Rpb24gcyhhLGwpe2E9dHlwZW9mIGE9PSJzdHJpbmciP2E6YS5zb3VyY2UsbD10eXBlb2YgbD09InN0cmluZyI/bDpsLnNvdXJjZSx0aGlzLl9fZGlyZWN0aXZlc19ibG9ja19wYXR0ZXJuPW5ldyBSZWdFeHAoYSsvIGJlYXV0aWZ5KCBcdytbOl1cdyspKyAvLnNvdXJjZStsLCJnIiksdGhpcy5fX2RpcmVjdGl2ZV9wYXR0ZXJuPS8gKFx3KylbOl0oXHcrKS9nLHRoaXMuX19kaXJlY3RpdmVzX2VuZF9pZ25vcmVfcGF0dGVybj1uZXcgUmVnRXhwKGErL1xzYmVhdXRpZnlcc2lnbm9yZTplbmRccy8uc291cmNlK2wsImciKX1zLnByb3RvdHlwZS5nZXRfZGlyZWN0aXZlcz1mdW5jdGlvbihhKXtpZighYS5tYXRjaCh0aGlzLl9fZGlyZWN0aXZlc19ibG9ja19wYXR0ZXJuKSlyZXR1cm4gbnVsbDt2YXIgbD17fTt0aGlzLl9fZGlyZWN0aXZlX3BhdHRlcm4ubGFzdEluZGV4PTA7Zm9yKHZhciBvPXRoaXMuX19kaXJlY3RpdmVfcGF0dGVybi5leGVjKGEpO287KWxbb1sxXV09b1syXSxvPXRoaXMuX19kaXJlY3RpdmVfcGF0dGVybi5leGVjKGEpO3JldHVybiBsfSxzLnByb3RvdHlwZS5yZWFkSWdub3JlZD1mdW5jdGlvbihhKXtyZXR1cm4gYS5yZWFkVW50aWxBZnRlcih0aGlzLl9fZGlyZWN0aXZlc19lbmRfaWdub3JlX3BhdHRlcm4pfSxpLmV4cG9ydHMuRGlyZWN0aXZlcz1zfSwsZnVuY3Rpb24oaSxzLGEpe3ZhciBsPWEoMTYpLkJlYXV0aWZpZXIsbz1hKDE3KS5PcHRpb25zO2Z1bmN0aW9uIGMoZCx1KXt2YXIgZj1uZXcgbChkLHUpO3JldHVybiBmLmJlYXV0aWZ5KCl9aS5leHBvcnRzPWMsaS5leHBvcnRzLmRlZmF1bHRPcHRpb25zPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBvfX0sZnVuY3Rpb24oaSxzLGEpe3ZhciBsPWEoMTcpLk9wdGlvbnMsbz1hKDIpLk91dHB1dCxjPWEoOCkuSW5wdXRTY2FubmVyLGQ9YSgxMykuRGlyZWN0aXZlcyx1PW5ldyBkKC9cL1wqLywvXCpcLy8pLGY9L1xyXG58W1xyXG5dLyxtPS9cclxufFtcclxuXS9nLHY9L1xzLyx3PS8oPzpcc3xcbikrL2csaz0vXC9cKig/Oltcc1xTXSo/KSgoPzpcKlwvKXwkKS9nLFI9L1wvXC8oPzpbXlxuXHJcdTIwMjhcdTIwMjldKikvZztmdW5jdGlvbiBJKE4sRSl7dGhpcy5fc291cmNlX3RleHQ9Tnx8IiIsdGhpcy5fb3B0aW9ucz1uZXcgbChFKSx0aGlzLl9jaD1udWxsLHRoaXMuX2lucHV0PW51bGwsdGhpcy5ORVNURURfQVRfUlVMRT17cGFnZTohMCwiZm9udC1mYWNlIjohMCxrZXlmcmFtZXM6ITAsbWVkaWE6ITAsc3VwcG9ydHM6ITAsZG9jdW1lbnQ6ITB9LHRoaXMuQ09ORElUSU9OQUxfR1JPVVBfUlVMRT17bWVkaWE6ITAsc3VwcG9ydHM6ITAsZG9jdW1lbnQ6ITB9LHRoaXMuTk9OX1NFTUlDT0xPTl9ORVdMSU5FX1BST1BFUlRZPVsiZ3JpZC10ZW1wbGF0ZS1hcmVhcyIsImdyaWQtdGVtcGxhdGUiXX1JLnByb3RvdHlwZS5lYXRTdHJpbmc9ZnVuY3Rpb24oTil7dmFyIEU9IiI7Zm9yKHRoaXMuX2NoPXRoaXMuX2lucHV0Lm5leHQoKTt0aGlzLl9jaDspe2lmKEUrPXRoaXMuX2NoLHRoaXMuX2NoPT09IlxcIilFKz10aGlzLl9pbnB1dC5uZXh0KCk7ZWxzZSBpZihOLmluZGV4T2YodGhpcy5fY2gpIT09LTF8fHRoaXMuX2NoPT09YApgKWJyZWFrO3RoaXMuX2NoPXRoaXMuX2lucHV0Lm5leHQoKX1yZXR1cm4gRX0sSS5wcm90b3R5cGUuZWF0V2hpdGVzcGFjZT1mdW5jdGlvbihOKXtmb3IodmFyIEU9di50ZXN0KHRoaXMuX2lucHV0LnBlZWsoKSksRj0wO3YudGVzdCh0aGlzLl9pbnB1dC5wZWVrKCkpOyl0aGlzLl9jaD10aGlzLl9pbnB1dC5uZXh0KCksTiYmdGhpcy5fY2g9PT1gCmAmJihGPT09MHx8Rjx0aGlzLl9vcHRpb25zLm1heF9wcmVzZXJ2ZV9uZXdsaW5lcykmJihGKyssdGhpcy5fb3V0cHV0LmFkZF9uZXdfbGluZSghMCkpO3JldHVybiBFfSxJLnByb3RvdHlwZS5mb3VuZE5lc3RlZFBzZXVkb0NsYXNzPWZ1bmN0aW9uKCl7Zm9yKHZhciBOPTAsRT0xLEY9dGhpcy5faW5wdXQucGVlayhFKTtGOyl7aWYoRj09PSJ7IilyZXR1cm4hMDtpZihGPT09IigiKU4rPTE7ZWxzZSBpZihGPT09IikiKXtpZihOPT09MClyZXR1cm4hMTtOLT0xfWVsc2UgaWYoRj09PSI7Inx8Rj09PSJ9IilyZXR1cm4hMTtFKyssRj10aGlzLl9pbnB1dC5wZWVrKEUpfXJldHVybiExfSxJLnByb3RvdHlwZS5wcmludF9zdHJpbmc9ZnVuY3Rpb24oTil7dGhpcy5fb3V0cHV0LnNldF9pbmRlbnQodGhpcy5faW5kZW50TGV2ZWwpLHRoaXMuX291dHB1dC5ub25fYnJlYWtpbmdfc3BhY2U9ITAsdGhpcy5fb3V0cHV0LmFkZF90b2tlbihOKX0sSS5wcm90b3R5cGUucHJlc2VydmVTaW5nbGVTcGFjZT1mdW5jdGlvbihOKXtOJiYodGhpcy5fb3V0cHV0LnNwYWNlX2JlZm9yZV90b2tlbj0hMCl9LEkucHJvdG90eXBlLmluZGVudD1mdW5jdGlvbigpe3RoaXMuX2luZGVudExldmVsKyt9LEkucHJvdG90eXBlLm91dGRlbnQ9ZnVuY3Rpb24oKXt0aGlzLl9pbmRlbnRMZXZlbD4wJiZ0aGlzLl9pbmRlbnRMZXZlbC0tfSxJLnByb3RvdHlwZS5iZWF1dGlmeT1mdW5jdGlvbigpe2lmKHRoaXMuX29wdGlvbnMuZGlzYWJsZWQpcmV0dXJuIHRoaXMuX3NvdXJjZV90ZXh0O3ZhciBOPXRoaXMuX3NvdXJjZV90ZXh0LEU9dGhpcy5fb3B0aW9ucy5lb2w7RT09PSJhdXRvIiYmKEU9YApgLE4mJmYudGVzdChOfHwiIikmJihFPU4ubWF0Y2goZilbMF0pKSxOPU4ucmVwbGFjZShtLGAKYCk7dmFyIEY9Ti5tYXRjaCgvXltcdCBdKi8pWzBdO3RoaXMuX291dHB1dD1uZXcgbyh0aGlzLl9vcHRpb25zLEYpLHRoaXMuX2lucHV0PW5ldyBjKE4pLHRoaXMuX2luZGVudExldmVsPTAsdGhpcy5fbmVzdGVkTGV2ZWw9MCx0aGlzLl9jaD1udWxsO2Zvcih2YXIgTT0wLFQ9ITEsUD0hMSxqPSExLGVlPSExLEE9ITEsXz10aGlzLl9jaCxDPSExLFMseixEO1M9dGhpcy5faW5wdXQucmVhZCh3KSx6PVMhPT0iIixEPV8sdGhpcy5fY2g9dGhpcy5faW5wdXQubmV4dCgpLHRoaXMuX2NoPT09IlxcIiYmdGhpcy5faW5wdXQuaGFzTmV4dCgpJiYodGhpcy5fY2grPXRoaXMuX2lucHV0Lm5leHQoKSksXz10aGlzLl9jaCx0aGlzLl9jaDspaWYodGhpcy5fY2g9PT0iLyImJnRoaXMuX2lucHV0LnBlZWsoKT09PSIqIil7dGhpcy5fb3V0cHV0LmFkZF9uZXdfbGluZSgpLHRoaXMuX2lucHV0LmJhY2soKTt2YXIgTD10aGlzLl9pbnB1dC5yZWFkKGspLFU9dS5nZXRfZGlyZWN0aXZlcyhMKTtVJiZVLmlnbm9yZT09PSJzdGFydCImJihMKz11LnJlYWRJZ25vcmVkKHRoaXMuX2lucHV0KSksdGhpcy5wcmludF9zdHJpbmcoTCksdGhpcy5lYXRXaGl0ZXNwYWNlKCEwKSx0aGlzLl9vdXRwdXQuYWRkX25ld19saW5lKCl9ZWxzZSBpZih0aGlzLl9jaD09PSIvIiYmdGhpcy5faW5wdXQucGVlaygpPT09Ii8iKXRoaXMuX291dHB1dC5zcGFjZV9iZWZvcmVfdG9rZW49ITAsdGhpcy5faW5wdXQuYmFjaygpLHRoaXMucHJpbnRfc3RyaW5nKHRoaXMuX2lucHV0LnJlYWQoUikpLHRoaXMuZWF0V2hpdGVzcGFjZSghMCk7ZWxzZSBpZih0aGlzLl9jaD09PSIkIil7dGhpcy5wcmVzZXJ2ZVNpbmdsZVNwYWNlKHopLHRoaXMucHJpbnRfc3RyaW5nKHRoaXMuX2NoKTt2YXIgQj10aGlzLl9pbnB1dC5wZWVrVW50aWxBZnRlcigvWzogLDt7fSgpW1xdXC89JyJdL2cpO0IubWF0Y2goL1sgOl0kLykmJihCPXRoaXMuZWF0U3RyaW5nKCI6ICIpLnJlcGxhY2UoL1xzKyQvLCIiKSx0aGlzLnByaW50X3N0cmluZyhCKSx0aGlzLl9vdXRwdXQuc3BhY2VfYmVmb3JlX3Rva2VuPSEwKSxNPT09MCYmQi5pbmRleE9mKCI6IikhPT0tMSYmKFA9ITAsdGhpcy5pbmRlbnQoKSl9ZWxzZSBpZih0aGlzLl9jaD09PSJAIilpZih0aGlzLnByZXNlcnZlU2luZ2xlU3BhY2UoeiksdGhpcy5faW5wdXQucGVlaygpPT09InsiKXRoaXMucHJpbnRfc3RyaW5nKHRoaXMuX2NoK3RoaXMuZWF0U3RyaW5nKCJ9IikpO2Vsc2V7dGhpcy5wcmludF9zdHJpbmcodGhpcy5fY2gpO3ZhciBxPXRoaXMuX2lucHV0LnBlZWtVbnRpbEFmdGVyKC9bOiAsO3t9KClbXF1cLz0nIl0vZyk7cS5tYXRjaCgvWyA6XSQvKSYmKHE9dGhpcy5lYXRTdHJpbmcoIjogIikucmVwbGFjZSgvXHMrJC8sIiIpLHRoaXMucHJpbnRfc3RyaW5nKHEpLHRoaXMuX291dHB1dC5zcGFjZV9iZWZvcmVfdG9rZW49ITApLE09PT0wJiZxLmluZGV4T2YoIjoiKSE9PS0xPyhQPSEwLHRoaXMuaW5kZW50KCkpOnEgaW4gdGhpcy5ORVNURURfQVRfUlVMRT8odGhpcy5fbmVzdGVkTGV2ZWwrPTEscSBpbiB0aGlzLkNPTkRJVElPTkFMX0dST1VQX1JVTEUmJihqPSEwKSk6TT09PTAmJiFQJiYoZWU9ITApfWVsc2UgaWYodGhpcy5fY2g9PT0iIyImJnRoaXMuX2lucHV0LnBlZWsoKT09PSJ7Iil0aGlzLnByZXNlcnZlU2luZ2xlU3BhY2UoeiksdGhpcy5wcmludF9zdHJpbmcodGhpcy5fY2grdGhpcy5lYXRTdHJpbmcoIn0iKSk7ZWxzZSBpZih0aGlzLl9jaD09PSJ7IilQJiYoUD0hMSx0aGlzLm91dGRlbnQoKSksZWU9ITEsaj8oaj0hMSxUPXRoaXMuX2luZGVudExldmVsPj10aGlzLl9uZXN0ZWRMZXZlbCk6VD10aGlzLl9pbmRlbnRMZXZlbD49dGhpcy5fbmVzdGVkTGV2ZWwtMSx0aGlzLl9vcHRpb25zLm5ld2xpbmVfYmV0d2Vlbl9ydWxlcyYmVCYmdGhpcy5fb3V0cHV0LnByZXZpb3VzX2xpbmUmJnRoaXMuX291dHB1dC5wcmV2aW91c19saW5lLml0ZW0oLTEpIT09InsiJiZ0aGlzLl9vdXRwdXQuZW5zdXJlX2VtcHR5X2xpbmVfYWJvdmUoIi8iLCIsIiksdGhpcy5fb3V0cHV0LnNwYWNlX2JlZm9yZV90b2tlbj0hMCx0aGlzLl9vcHRpb25zLmJyYWNlX3N0eWxlPT09ImV4cGFuZCI/KHRoaXMuX291dHB1dC5hZGRfbmV3X2xpbmUoKSx0aGlzLnByaW50X3N0cmluZyh0aGlzLl9jaCksdGhpcy5pbmRlbnQoKSx0aGlzLl9vdXRwdXQuc2V0X2luZGVudCh0aGlzLl9pbmRlbnRMZXZlbCkpOihEPT09IigiP3RoaXMuX291dHB1dC5zcGFjZV9iZWZvcmVfdG9rZW49ITE6RCE9PSIsIiYmdGhpcy5pbmRlbnQoKSx0aGlzLnByaW50X3N0cmluZyh0aGlzLl9jaCkpLHRoaXMuZWF0V2hpdGVzcGFjZSghMCksdGhpcy5fb3V0cHV0LmFkZF9uZXdfbGluZSgpO2Vsc2UgaWYodGhpcy5fY2g9PT0ifSIpdGhpcy5vdXRkZW50KCksdGhpcy5fb3V0cHV0LmFkZF9uZXdfbGluZSgpLEQ9PT0ieyImJnRoaXMuX291dHB1dC50cmltKCEwKSxQJiYodGhpcy5vdXRkZW50KCksUD0hMSksdGhpcy5wcmludF9zdHJpbmcodGhpcy5fY2gpLFQ9ITEsdGhpcy5fbmVzdGVkTGV2ZWwmJnRoaXMuX25lc3RlZExldmVsLS0sdGhpcy5lYXRXaGl0ZXNwYWNlKCEwKSx0aGlzLl9vdXRwdXQuYWRkX25ld19saW5lKCksdGhpcy5fb3B0aW9ucy5uZXdsaW5lX2JldHdlZW5fcnVsZXMmJiF0aGlzLl9vdXRwdXQuanVzdF9hZGRlZF9ibGFua2xpbmUoKSYmdGhpcy5faW5wdXQucGVlaygpIT09In0iJiZ0aGlzLl9vdXRwdXQuYWRkX25ld19saW5lKCEwKSx0aGlzLl9pbnB1dC5wZWVrKCk9PT0iKSImJih0aGlzLl9vdXRwdXQudHJpbSghMCksdGhpcy5fb3B0aW9ucy5icmFjZV9zdHlsZT09PSJleHBhbmQiJiZ0aGlzLl9vdXRwdXQuYWRkX25ld19saW5lKCEwKSk7ZWxzZSBpZih0aGlzLl9jaD09PSI6Iil7Zm9yKHZhciBhZT0wO2FlPHRoaXMuTk9OX1NFTUlDT0xPTl9ORVdMSU5FX1BST1BFUlRZLmxlbmd0aDthZSsrKWlmKHRoaXMuX2lucHV0Lmxvb2tCYWNrKHRoaXMuTk9OX1NFTUlDT0xPTl9ORVdMSU5FX1BST1BFUlRZW2FlXSkpe0M9ITA7YnJlYWt9KFR8fGopJiYhKHRoaXMuX2lucHV0Lmxvb2tCYWNrKCImIil8fHRoaXMuZm91bmROZXN0ZWRQc2V1ZG9DbGFzcygpKSYmIXRoaXMuX2lucHV0Lmxvb2tCYWNrKCIoIikmJiFlZSYmTT09PTA/KHRoaXMucHJpbnRfc3RyaW5nKCI6IiksUHx8KFA9ITAsdGhpcy5fb3V0cHV0LnNwYWNlX2JlZm9yZV90b2tlbj0hMCx0aGlzLmVhdFdoaXRlc3BhY2UoITApLHRoaXMuaW5kZW50KCkpKToodGhpcy5faW5wdXQubG9va0JhY2soIiAiKSYmKHRoaXMuX291dHB1dC5zcGFjZV9iZWZvcmVfdG9rZW49ITApLHRoaXMuX2lucHV0LnBlZWsoKT09PSI6Ij8odGhpcy5fY2g9dGhpcy5faW5wdXQubmV4dCgpLHRoaXMucHJpbnRfc3RyaW5nKCI6OiIpKTp0aGlzLnByaW50X3N0cmluZygiOiIpKX1lbHNlIGlmKHRoaXMuX2NoPT09JyInfHx0aGlzLl9jaD09PSInIil7dmFyIFN0PUQ9PT0nIid8fEQ9PT0iJyI7dGhpcy5wcmVzZXJ2ZVNpbmdsZVNwYWNlKFN0fHx6KSx0aGlzLnByaW50X3N0cmluZyh0aGlzLl9jaCt0aGlzLmVhdFN0cmluZyh0aGlzLl9jaCkpLHRoaXMuZWF0V2hpdGVzcGFjZSghMCl9ZWxzZSBpZih0aGlzLl9jaD09PSI7IilDPSExLE09PT0wPyhQJiYodGhpcy5vdXRkZW50KCksUD0hMSksZWU9ITEsdGhpcy5wcmludF9zdHJpbmcodGhpcy5fY2gpLHRoaXMuZWF0V2hpdGVzcGFjZSghMCksdGhpcy5faW5wdXQucGVlaygpIT09Ii8iJiZ0aGlzLl9vdXRwdXQuYWRkX25ld19saW5lKCkpOih0aGlzLnByaW50X3N0cmluZyh0aGlzLl9jaCksdGhpcy5lYXRXaGl0ZXNwYWNlKCEwKSx0aGlzLl9vdXRwdXQuc3BhY2VfYmVmb3JlX3Rva2VuPSEwKTtlbHNlIGlmKHRoaXMuX2NoPT09IigiKWlmKHRoaXMuX2lucHV0Lmxvb2tCYWNrKCJ1cmwiKSl0aGlzLnByaW50X3N0cmluZyh0aGlzLl9jaCksdGhpcy5lYXRXaGl0ZXNwYWNlKCksTSsrLHRoaXMuaW5kZW50KCksdGhpcy5fY2g9dGhpcy5faW5wdXQubmV4dCgpLHRoaXMuX2NoPT09IikifHx0aGlzLl9jaD09PSciJ3x8dGhpcy5fY2g9PT0iJyI/dGhpcy5faW5wdXQuYmFjaygpOnRoaXMuX2NoJiYodGhpcy5wcmludF9zdHJpbmcodGhpcy5fY2grdGhpcy5lYXRTdHJpbmcoIikiKSksTSYmKE0tLSx0aGlzLm91dGRlbnQoKSkpO2Vsc2V7dmFyIEl0PSExO3RoaXMuX2lucHV0Lmxvb2tCYWNrKCJ3aXRoIikmJihJdD0hMCksdGhpcy5wcmVzZXJ2ZVNpbmdsZVNwYWNlKHp8fEl0KSx0aGlzLnByaW50X3N0cmluZyh0aGlzLl9jaCksUCYmRD09PSIkIiYmdGhpcy5fb3B0aW9ucy5zZWxlY3Rvcl9zZXBhcmF0b3JfbmV3bGluZT8odGhpcy5fb3V0cHV0LmFkZF9uZXdfbGluZSgpLEE9ITApOih0aGlzLmVhdFdoaXRlc3BhY2UoKSxNKyssdGhpcy5pbmRlbnQoKSl9ZWxzZSBpZih0aGlzLl9jaD09PSIpIilNJiYoTS0tLHRoaXMub3V0ZGVudCgpKSxBJiZ0aGlzLl9pbnB1dC5wZWVrKCk9PT0iOyImJnRoaXMuX29wdGlvbnMuc2VsZWN0b3Jfc2VwYXJhdG9yX25ld2xpbmUmJihBPSExLHRoaXMub3V0ZGVudCgpLHRoaXMuX291dHB1dC5hZGRfbmV3X2xpbmUoKSksdGhpcy5wcmludF9zdHJpbmcodGhpcy5fY2gpO2Vsc2UgaWYodGhpcy5fY2g9PT0iLCIpdGhpcy5wcmludF9zdHJpbmcodGhpcy5fY2gpLHRoaXMuZWF0V2hpdGVzcGFjZSghMCksdGhpcy5fb3B0aW9ucy5zZWxlY3Rvcl9zZXBhcmF0b3JfbmV3bGluZSYmKCFQfHxBKSYmTT09PTAmJiFlZT90aGlzLl9vdXRwdXQuYWRkX25ld19saW5lKCk6dGhpcy5fb3V0cHV0LnNwYWNlX2JlZm9yZV90b2tlbj0hMDtlbHNlIGlmKCh0aGlzLl9jaD09PSI+Inx8dGhpcy5fY2g9PT0iKyJ8fHRoaXMuX2NoPT09In4iKSYmIVAmJk09PT0wKXRoaXMuX29wdGlvbnMuc3BhY2VfYXJvdW5kX2NvbWJpbmF0b3I/KHRoaXMuX291dHB1dC5zcGFjZV9iZWZvcmVfdG9rZW49ITAsdGhpcy5wcmludF9zdHJpbmcodGhpcy5fY2gpLHRoaXMuX291dHB1dC5zcGFjZV9iZWZvcmVfdG9rZW49ITApOih0aGlzLnByaW50X3N0cmluZyh0aGlzLl9jaCksdGhpcy5lYXRXaGl0ZXNwYWNlKCksdGhpcy5fY2gmJnYudGVzdCh0aGlzLl9jaCkmJih0aGlzLl9jaD0iIikpO2Vsc2UgaWYodGhpcy5fY2g9PT0iXSIpdGhpcy5wcmludF9zdHJpbmcodGhpcy5fY2gpO2Vsc2UgaWYodGhpcy5fY2g9PT0iWyIpdGhpcy5wcmVzZXJ2ZVNpbmdsZVNwYWNlKHopLHRoaXMucHJpbnRfc3RyaW5nKHRoaXMuX2NoKTtlbHNlIGlmKHRoaXMuX2NoPT09Ij0iKXRoaXMuZWF0V2hpdGVzcGFjZSgpLHRoaXMucHJpbnRfc3RyaW5nKCI9Iiksdi50ZXN0KHRoaXMuX2NoKSYmKHRoaXMuX2NoPSIiKTtlbHNlIGlmKHRoaXMuX2NoPT09IiEiJiYhdGhpcy5faW5wdXQubG9va0JhY2soIlxcIikpdGhpcy5fb3V0cHV0LnNwYWNlX2JlZm9yZV90b2tlbj0hMCx0aGlzLnByaW50X3N0cmluZyh0aGlzLl9jaCk7ZWxzZXt2YXIgQXQ9RD09PSciJ3x8RD09PSInIjt0aGlzLnByZXNlcnZlU2luZ2xlU3BhY2UoQXR8fHopLHRoaXMucHJpbnRfc3RyaW5nKHRoaXMuX2NoKSwhdGhpcy5fb3V0cHV0Lmp1c3RfYWRkZWRfbmV3bGluZSgpJiZ0aGlzLl9pbnB1dC5wZWVrKCk9PT1gCmAmJkMmJnRoaXMuX291dHB1dC5hZGRfbmV3X2xpbmUoKX12YXIgT3M9dGhpcy5fb3V0cHV0LmdldF9jb2RlKEUpO3JldHVybiBPc30saS5leHBvcnRzLkJlYXV0aWZpZXI9SX0sZnVuY3Rpb24oaSxzLGEpe3ZhciBsPWEoNikuT3B0aW9ucztmdW5jdGlvbiBvKGMpe2wuY2FsbCh0aGlzLGMsImNzcyIpLHRoaXMuc2VsZWN0b3Jfc2VwYXJhdG9yX25ld2xpbmU9dGhpcy5fZ2V0X2Jvb2xlYW4oInNlbGVjdG9yX3NlcGFyYXRvcl9uZXdsaW5lIiwhMCksdGhpcy5uZXdsaW5lX2JldHdlZW5fcnVsZXM9dGhpcy5fZ2V0X2Jvb2xlYW4oIm5ld2xpbmVfYmV0d2Vlbl9ydWxlcyIsITApO3ZhciBkPXRoaXMuX2dldF9ib29sZWFuKCJzcGFjZV9hcm91bmRfc2VsZWN0b3Jfc2VwYXJhdG9yIik7dGhpcy5zcGFjZV9hcm91bmRfY29tYmluYXRvcj10aGlzLl9nZXRfYm9vbGVhbigic3BhY2VfYXJvdW5kX2NvbWJpbmF0b3IiKXx8ZDt2YXIgdT10aGlzLl9nZXRfc2VsZWN0aW9uX2xpc3QoImJyYWNlX3N0eWxlIixbImNvbGxhcHNlIiwiZXhwYW5kIiwiZW5kLWV4cGFuZCIsIm5vbmUiLCJwcmVzZXJ2ZS1pbmxpbmUiXSk7dGhpcy5icmFjZV9zdHlsZT0iY29sbGFwc2UiO2Zvcih2YXIgZj0wO2Y8dS5sZW5ndGg7ZisrKXVbZl0hPT0iZXhwYW5kIj90aGlzLmJyYWNlX3N0eWxlPSJjb2xsYXBzZSI6dGhpcy5icmFjZV9zdHlsZT11W2ZdfW8ucHJvdG90eXBlPW5ldyBsLGkuZXhwb3J0cy5PcHRpb25zPW99XSx0PXt9O2Z1bmN0aW9uIG4oaSl7dmFyIHM9dFtpXTtpZihzIT09dm9pZCAwKXJldHVybiBzLmV4cG9ydHM7dmFyIGE9dFtpXT17ZXhwb3J0czp7fX07cmV0dXJuIGVbaV0oYSxhLmV4cG9ydHMsbiksYS5leHBvcnRzfXZhciByPW4oMTUpO21oPXJ9KSgpO3ZhciB2Zj1taDtmdW5jdGlvbiB3ZihlLHQsbil7bGV0IHI9ZS5nZXRUZXh0KCksaT0hMCxzPTAsYT0hMTtjb25zdCBsPW4udGFiU2l6ZXx8NDtpZih0KXtsZXQgZD1lLm9mZnNldEF0KHQuc3RhcnQpLHU9ZDtmb3IoO3U+MCYmYmgocix1LTEpOyl1LS07dT09PTB8fGdoKHIsdS0xKT9kPXU6dTxkJiYoZD11KzEpO2xldCBmPWUub2Zmc2V0QXQodC5lbmQpLG09Zjtmb3IoO208ci5sZW5ndGgmJmJoKHIsbSk7KW0rKztpZigobT09PXIubGVuZ3RofHxnaChyLG0pKSYmKGY9bSksdD1YLmNyZWF0ZShlLnBvc2l0aW9uQXQoZCksZS5wb3NpdGlvbkF0KGYpKSxhPVNmKHIsZCksaT1mPT09ci5sZW5ndGgscj1yLnN1YnN0cmluZyhkLGYpLGQhPT0wKXtjb25zdCB2PWUub2Zmc2V0QXQoeGUuY3JlYXRlKHQuc3RhcnQubGluZSwwKSk7cz1DZihlLmdldFRleHQoKSx2LG4pfWEmJihyPWB7CiR7Zmgocil9YCl9ZWxzZSB0PVguY3JlYXRlKHhlLmNyZWF0ZSgwLDApLGUucG9zaXRpb25BdChyLmxlbmd0aCkpO2NvbnN0IG89e2luZGVudF9zaXplOmwsaW5kZW50X2NoYXI6bi5pbnNlcnRTcGFjZXM/IiAiOiIJIixlbmRfd2l0aF9uZXdsaW5lOmkmJmx0KG4sImluc2VydEZpbmFsTmV3bGluZSIsITEpLHNlbGVjdG9yX3NlcGFyYXRvcl9uZXdsaW5lOmx0KG4sIm5ld2xpbmVCZXR3ZWVuU2VsZWN0b3JzIiwhMCksbmV3bGluZV9iZXR3ZWVuX3J1bGVzOmx0KG4sIm5ld2xpbmVCZXR3ZWVuUnVsZXMiLCEwKSxzcGFjZV9hcm91bmRfc2VsZWN0b3Jfc2VwYXJhdG9yOmx0KG4sInNwYWNlQXJvdW5kU2VsZWN0b3JTZXBhcmF0b3IiLCExKSxicmFjZV9zdHlsZTpsdChuLCJicmFjZVN0eWxlIiwiY29sbGFwc2UiKSxpbmRlbnRfZW1wdHlfbGluZXM6bHQobiwiaW5kZW50RW1wdHlMaW5lcyIsITEpLG1heF9wcmVzZXJ2ZV9uZXdsaW5lczpsdChuLCJtYXhQcmVzZXJ2ZU5ld0xpbmVzIix2b2lkIDApLHByZXNlcnZlX25ld2xpbmVzOmx0KG4sInByZXNlcnZlTmV3TGluZXMiLCEwKSx3cmFwX2xpbmVfbGVuZ3RoOmx0KG4sIndyYXBMaW5lTGVuZ3RoIix2b2lkIDApLGVvbDpgCmB9O2xldCBjPXZmKHIsbyk7aWYoYSYmKGM9ZmgoYy5zdWJzdHJpbmcoMikpKSxzPjApe2NvbnN0IGQ9bi5pbnNlcnRTcGFjZXM/eWwoIiAiLGwqcyk6eWwoIgkiLHMpO2M9Yy5zcGxpdChgCmApLmpvaW4oYApgK2QpLHQuc3RhcnQuY2hhcmFjdGVyPT09MCYmKGM9ZCtjKX1yZXR1cm5be3JhbmdlOnQsbmV3VGV4dDpjfV19ZnVuY3Rpb24gZmgoZSl7cmV0dXJuIGUucmVwbGFjZSgvXlxzKy8sIiIpfXZhciB5Zj0xMjMseGY9MTI1O2Z1bmN0aW9uIFNmKGUsdCl7Zm9yKDt0Pj0wOyl7Y29uc3Qgbj1lLmNoYXJDb2RlQXQodCk7aWYobj09PXlmKXJldHVybiEwO2lmKG49PT14ZilyZXR1cm4hMTt0LS19cmV0dXJuITF9ZnVuY3Rpb24gbHQoZSx0LG4pe2lmKGUmJmUuaGFzT3duUHJvcGVydHkodCkpe2NvbnN0IHI9ZVt0XTtpZihyIT09bnVsbClyZXR1cm4gcn1yZXR1cm4gbn1mdW5jdGlvbiBDZihlLHQsbil7bGV0IHI9dCxpPTA7Y29uc3Qgcz1uLnRhYlNpemV8fDQ7Zm9yKDtyPGUubGVuZ3RoOyl7Y29uc3QgYT1lLmNoYXJBdChyKTtpZihhPT09IiAiKWkrKztlbHNlIGlmKGE9PT0iCSIpaSs9cztlbHNlIGJyZWFrO3IrK31yZXR1cm4gTWF0aC5mbG9vcihpL3MpfWZ1bmN0aW9uIGdoKGUsdCl7cmV0dXJuYFxyCmAuaW5kZXhPZihlLmNoYXJBdCh0KSkhPT0tMX1mdW5jdGlvbiBiaChlLHQpe3JldHVybiIgCSIuaW5kZXhPZihlLmNoYXJBdCh0KSkhPT0tMX12YXIgX2Y9e3ZlcnNpb246MS4xLHByb3BlcnRpZXM6W3tuYW1lOiJhZGRpdGl2ZS1zeW1ib2xzIixicm93c2VyczpbIkZGMzMiXSxhdFJ1bGU6IkBjb3VudGVyLXN0eWxlIixzeW50YXg6IlsgPGludGVnZXI+ICYmIDxzeW1ib2w+IF0jIixyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkBjb3VudGVyLXN0eWxlIGRlc2NyaXB0b3IuIFNwZWNpZmllcyB0aGUgc3ltYm9scyB1c2VkIGJ5IHRoZSBtYXJrZXItY29uc3RydWN0aW9uIGFsZ29yaXRobSBzcGVjaWZpZWQgYnkgdGhlIHN5c3RlbSBkZXNjcmlwdG9yLiBOZWVkcyB0byBiZSBzcGVjaWZpZWQgaWYgdGhlIGNvdW50ZXIgc3lzdGVtIGlzICdhZGRpdGl2ZScuIixyZXN0cmljdGlvbnM6WyJpbnRlZ2VyIiwic3RyaW5nIiwiaW1hZ2UiLCJpZGVudGlmaWVyIl19LHtuYW1lOiJhbGlnbi1jb250ZW50Iixicm93c2VyczpbIkUxMiIsIkZGMjgiLCJTOSIsIkMyOSIsIklFMTEiLCJPMTYiXSx2YWx1ZXM6W3tuYW1lOiJjZW50ZXIiLGRlc2NyaXB0aW9uOiJMaW5lcyBhcmUgcGFja2VkIHRvd2FyZCB0aGUgY2VudGVyIG9mIHRoZSBmbGV4IGNvbnRhaW5lci4ifSx7bmFtZToiZmxleC1lbmQiLGRlc2NyaXB0aW9uOiJMaW5lcyBhcmUgcGFja2VkIHRvd2FyZCB0aGUgZW5kIG9mIHRoZSBmbGV4IGNvbnRhaW5lci4ifSx7bmFtZToiZmxleC1zdGFydCIsZGVzY3JpcHRpb246IkxpbmVzIGFyZSBwYWNrZWQgdG93YXJkIHRoZSBzdGFydCBvZiB0aGUgZmxleCBjb250YWluZXIuIn0se25hbWU6InNwYWNlLWFyb3VuZCIsZGVzY3JpcHRpb246IkxpbmVzIGFyZSBldmVubHkgZGlzdHJpYnV0ZWQgaW4gdGhlIGZsZXggY29udGFpbmVyLCB3aXRoIGhhbGYtc2l6ZSBzcGFjZXMgb24gZWl0aGVyIGVuZC4ifSx7bmFtZToic3BhY2UtYmV0d2VlbiIsZGVzY3JpcHRpb246IkxpbmVzIGFyZSBldmVubHkgZGlzdHJpYnV0ZWQgaW4gdGhlIGZsZXggY29udGFpbmVyLiJ9LHtuYW1lOiJzdHJldGNoIixkZXNjcmlwdGlvbjoiTGluZXMgc3RyZXRjaCB0byB0YWtlIHVwIHRoZSByZW1haW5pbmcgc3BhY2UuIn0se25hbWU6InN0YXJ0In0se25hbWU6ImVuZCJ9LHtuYW1lOiJub3JtYWwifSx7bmFtZToiYmFzZWxpbmUifSx7bmFtZToiZmlyc3QgYmFzZWxpbmUifSx7bmFtZToibGFzdCBiYXNlbGluZSJ9LHtuYW1lOiJzcGFjZS1hcm91bmQifSx7bmFtZToic3BhY2UtYmV0d2VlbiJ9LHtuYW1lOiJzcGFjZS1ldmVubHkifSx7bmFtZToic3RyZXRjaCJ9LHtuYW1lOiJzYWZlIn0se25hbWU6InVuc2FmZSJ9XSxzeW50YXg6Im5vcm1hbCB8IDxiYXNlbGluZS1wb3NpdGlvbj4gfCA8Y29udGVudC1kaXN0cmlidXRpb24+IHwgPG92ZXJmbG93LXBvc2l0aW9uPj8gPGNvbnRlbnQtcG9zaXRpb24+IixyZWxldmFuY2U6NjYscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2FsaWduLWNvbnRlbnQifV0sZGVzY3JpcHRpb246IkFsaWducyBhIGZsZXggY29udGFpbmVyJ3MgbGluZXMgd2l0aGluIHRoZSBmbGV4IGNvbnRhaW5lciB3aGVuIHRoZXJlIGlzIGV4dHJhIHNwYWNlIGluIHRoZSBjcm9zcy1heGlzLCBzaW1pbGFyIHRvIGhvdyAnanVzdGlmeS1jb250ZW50JyBhbGlnbnMgaW5kaXZpZHVhbCBpdGVtcyB3aXRoaW4gdGhlIG1haW4tYXhpcy4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6ImFsaWduLWl0ZW1zIixicm93c2VyczpbIkUxMiIsIkZGMjAiLCJTOSIsIkMyOSIsIklFMTEiLCJPMTYiXSx2YWx1ZXM6W3tuYW1lOiJiYXNlbGluZSIsZGVzY3JpcHRpb246IklmIHRoZSBmbGV4IGl0ZW0ncyBpbmxpbmUgYXhpcyBpcyB0aGUgc2FtZSBhcyB0aGUgY3Jvc3MgYXhpcywgdGhpcyB2YWx1ZSBpcyBpZGVudGljYWwgdG8gJ2ZsZXgtc3RhcnQnLiBPdGhlcndpc2UsIGl0IHBhcnRpY2lwYXRlcyBpbiBiYXNlbGluZSBhbGlnbm1lbnQuIn0se25hbWU6ImNlbnRlciIsZGVzY3JpcHRpb246IlRoZSBmbGV4IGl0ZW0ncyBtYXJnaW4gYm94IGlzIGNlbnRlcmVkIGluIHRoZSBjcm9zcyBheGlzIHdpdGhpbiB0aGUgbGluZS4ifSx7bmFtZToiZmxleC1lbmQiLGRlc2NyaXB0aW9uOiJUaGUgY3Jvc3MtZW5kIG1hcmdpbiBlZGdlIG9mIHRoZSBmbGV4IGl0ZW0gaXMgcGxhY2VkIGZsdXNoIHdpdGggdGhlIGNyb3NzLWVuZCBlZGdlIG9mIHRoZSBsaW5lLiJ9LHtuYW1lOiJmbGV4LXN0YXJ0IixkZXNjcmlwdGlvbjoiVGhlIGNyb3NzLXN0YXJ0IG1hcmdpbiBlZGdlIG9mIHRoZSBmbGV4IGl0ZW0gaXMgcGxhY2VkIGZsdXNoIHdpdGggdGhlIGNyb3NzLXN0YXJ0IGVkZ2Ugb2YgdGhlIGxpbmUuIn0se25hbWU6InN0cmV0Y2giLGRlc2NyaXB0aW9uOiJJZiB0aGUgY3Jvc3Mgc2l6ZSBwcm9wZXJ0eSBvZiB0aGUgZmxleCBpdGVtIGNvbXB1dGVzIHRvIGF1dG8sIGFuZCBuZWl0aGVyIG9mIHRoZSBjcm9zcy1heGlzIG1hcmdpbnMgYXJlIGF1dG8sIHRoZSBmbGV4IGl0ZW0gaXMgc3RyZXRjaGVkLiJ9LHtuYW1lOiJub3JtYWwifSx7bmFtZToic3RhcnQifSx7bmFtZToiZW5kIn0se25hbWU6InNlbGYtc3RhcnQifSx7bmFtZToic2VsZi1lbmQifSx7bmFtZToiZmlyc3QgYmFzZWxpbmUifSx7bmFtZToibGFzdCBiYXNlbGluZSJ9LHtuYW1lOiJzdHJldGNoIn0se25hbWU6InNhZmUifSx7bmFtZToidW5zYWZlIn1dLHN5bnRheDoibm9ybWFsIHwgc3RyZXRjaCB8IDxiYXNlbGluZS1wb3NpdGlvbj4gfCBbIDxvdmVyZmxvdy1wb3NpdGlvbj4/IDxzZWxmLXBvc2l0aW9uPiBdIixyZWxldmFuY2U6ODcscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2FsaWduLWl0ZW1zIn1dLGRlc2NyaXB0aW9uOiJBbGlnbnMgZmxleCBpdGVtcyBhbG9uZyB0aGUgY3Jvc3MgYXhpcyBvZiB0aGUgY3VycmVudCBsaW5lIG9mIHRoZSBmbGV4IGNvbnRhaW5lci4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Imp1c3RpZnktaXRlbXMiLGJyb3dzZXJzOlsiRTEyIiwiRkYyMCIsIlM5IiwiQzUyIiwiSUUxMSIsIk8xMi4xIl0sdmFsdWVzOlt7bmFtZToiYXV0byJ9LHtuYW1lOiJub3JtYWwifSx7bmFtZToiZW5kIn0se25hbWU6InN0YXJ0In0se25hbWU6ImZsZXgtZW5kIixkZXNjcmlwdGlvbjonIkZsZXggaXRlbXMgYXJlIHBhY2tlZCB0b3dhcmQgdGhlIGVuZCBvZiB0aGUgbGluZS4iJ30se25hbWU6ImZsZXgtc3RhcnQiLGRlc2NyaXB0aW9uOiciRmxleCBpdGVtcyBhcmUgcGFja2VkIHRvd2FyZCB0aGUgc3RhcnQgb2YgdGhlIGxpbmUuIid9LHtuYW1lOiJzZWxmLWVuZCIsZGVzY3JpcHRpb246IlRoZSBpdGVtIGlzIHBhY2tlZCBmbHVzaCB0byB0aGUgZWRnZSBvZiB0aGUgYWxpZ25tZW50IGNvbnRhaW5lciBvZiB0aGUgZW5kIHNpZGUgb2YgdGhlIGl0ZW0sIGluIHRoZSBhcHByb3ByaWF0ZSBheGlzLiJ9LHtuYW1lOiJzZWxmLXN0YXJ0IixkZXNjcmlwdGlvbjoiVGhlIGl0ZW0gaXMgcGFja2VkIGZsdXNoIHRvIHRoZSBlZGdlIG9mIHRoZSBhbGlnbm1lbnQgY29udGFpbmVyIG9mIHRoZSBzdGFydCBzaWRlIG9mIHRoZSBpdGVtLCBpbiB0aGUgYXBwcm9wcmlhdGUgYXhpcy4uIn0se25hbWU6ImNlbnRlciIsZGVzY3JpcHRpb246IlRoZSBpdGVtcyBhcmUgcGFja2VkIGZsdXNoIHRvIGVhY2ggb3RoZXIgdG93YXJkIHRoZSBjZW50ZXIgb2YgdGhlIG9mIHRoZSBhbGlnbm1lbnQgY29udGFpbmVyLiJ9LHtuYW1lOiJsZWZ0In0se25hbWU6InJpZ2h0In0se25hbWU6ImJhc2VsaW5lIn0se25hbWU6ImZpcnN0IGJhc2VsaW5lIn0se25hbWU6Imxhc3QgYmFzZWxpbmUifSx7bmFtZToic3RyZXRjaCIsZGVzY3JpcHRpb246IklmIHRoZSBjcm9zcyBzaXplIHByb3BlcnR5IG9mIHRoZSBmbGV4IGl0ZW0gY29tcHV0ZXMgdG8gYXV0bywgYW5kIG5laXRoZXIgb2YgdGhlIGNyb3NzLWF4aXMgbWFyZ2lucyBhcmUgYXV0bywgdGhlIGZsZXggaXRlbSBpcyBzdHJldGNoZWQuIn0se25hbWU6InNhZmUifSx7bmFtZToidW5zYWZlIn0se25hbWU6ImxlZ2FjeSJ9XSxzeW50YXg6Im5vcm1hbCB8IHN0cmV0Y2ggfCA8YmFzZWxpbmUtcG9zaXRpb24+IHwgPG92ZXJmbG93LXBvc2l0aW9uPj8gWyA8c2VsZi1wb3NpdGlvbj4gfCBsZWZ0IHwgcmlnaHQgXSB8IGxlZ2FjeSB8IGxlZ2FjeSAmJiBbIGxlZnQgfCByaWdodCB8IGNlbnRlciBdIixyZWxldmFuY2U6NTMscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2p1c3RpZnktaXRlbXMifV0sZGVzY3JpcHRpb246IkRlZmluZXMgdGhlIGRlZmF1bHQganVzdGlmeS1zZWxmIGZvciBhbGwgaXRlbXMgb2YgdGhlIGJveCwgZ2l2aW5nIHRoZW0gdGhlIGRlZmF1bHQgd2F5IG9mIGp1c3RpZnlpbmcgZWFjaCBib3ggYWxvbmcgdGhlIGFwcHJvcHJpYXRlIGF4aXMiLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Imp1c3RpZnktc2VsZiIsYnJvd3NlcnM6WyJFMTYiLCJGRjQ1IiwiUzEwLjEiLCJDNTciLCJJRTEwIiwiTzQ0Il0sdmFsdWVzOlt7bmFtZToiYXV0byJ9LHtuYW1lOiJub3JtYWwifSx7bmFtZToiZW5kIn0se25hbWU6InN0YXJ0In0se25hbWU6ImZsZXgtZW5kIixkZXNjcmlwdGlvbjonIkZsZXggaXRlbXMgYXJlIHBhY2tlZCB0b3dhcmQgdGhlIGVuZCBvZiB0aGUgbGluZS4iJ30se25hbWU6ImZsZXgtc3RhcnQiLGRlc2NyaXB0aW9uOiciRmxleCBpdGVtcyBhcmUgcGFja2VkIHRvd2FyZCB0aGUgc3RhcnQgb2YgdGhlIGxpbmUuIid9LHtuYW1lOiJzZWxmLWVuZCIsZGVzY3JpcHRpb246IlRoZSBpdGVtIGlzIHBhY2tlZCBmbHVzaCB0byB0aGUgZWRnZSBvZiB0aGUgYWxpZ25tZW50IGNvbnRhaW5lciBvZiB0aGUgZW5kIHNpZGUgb2YgdGhlIGl0ZW0sIGluIHRoZSBhcHByb3ByaWF0ZSBheGlzLiJ9LHtuYW1lOiJzZWxmLXN0YXJ0IixkZXNjcmlwdGlvbjoiVGhlIGl0ZW0gaXMgcGFja2VkIGZsdXNoIHRvIHRoZSBlZGdlIG9mIHRoZSBhbGlnbm1lbnQgY29udGFpbmVyIG9mIHRoZSBzdGFydCBzaWRlIG9mIHRoZSBpdGVtLCBpbiB0aGUgYXBwcm9wcmlhdGUgYXhpcy4uIn0se25hbWU6ImNlbnRlciIsZGVzY3JpcHRpb246IlRoZSBpdGVtcyBhcmUgcGFja2VkIGZsdXNoIHRvIGVhY2ggb3RoZXIgdG93YXJkIHRoZSBjZW50ZXIgb2YgdGhlIG9mIHRoZSBhbGlnbm1lbnQgY29udGFpbmVyLiJ9LHtuYW1lOiJsZWZ0In0se25hbWU6InJpZ2h0In0se25hbWU6ImJhc2VsaW5lIn0se25hbWU6ImZpcnN0IGJhc2VsaW5lIn0se25hbWU6Imxhc3QgYmFzZWxpbmUifSx7bmFtZToic3RyZXRjaCIsZGVzY3JpcHRpb246IklmIHRoZSBjcm9zcyBzaXplIHByb3BlcnR5IG9mIHRoZSBmbGV4IGl0ZW0gY29tcHV0ZXMgdG8gYXV0bywgYW5kIG5laXRoZXIgb2YgdGhlIGNyb3NzLWF4aXMgbWFyZ2lucyBhcmUgYXV0bywgdGhlIGZsZXggaXRlbSBpcyBzdHJldGNoZWQuIn0se25hbWU6InNhdmUifSx7bmFtZToidW5zYXZlIn1dLHN5bnRheDoiYXV0byB8IG5vcm1hbCB8IHN0cmV0Y2ggfCA8YmFzZWxpbmUtcG9zaXRpb24+IHwgPG92ZXJmbG93LXBvc2l0aW9uPj8gWyA8c2VsZi1wb3NpdGlvbj4gfCBsZWZ0IHwgcmlnaHQgXSIscmVsZXZhbmNlOjU1LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9qdXN0aWZ5LXNlbGYifV0sZGVzY3JpcHRpb246IkRlZmluZXMgdGhlIHdheSBvZiBqdXN0aWZ5aW5nIGEgYm94IGluc2lkZSBpdHMgY29udGFpbmVyIGFsb25nIHRoZSBhcHByb3ByaWF0ZSBheGlzLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiYWxpZ24tc2VsZiIsYnJvd3NlcnM6WyJFMTIiLCJGRjIwIiwiUzkiLCJDMjkiLCJJRTEwIiwiTzEyLjEiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiQ29tcHV0ZXMgdG8gdGhlIHZhbHVlIG9mICdhbGlnbi1pdGVtcycgb24gdGhlIGVsZW1lbnQncyBwYXJlbnQsIG9yICdzdHJldGNoJyBpZiB0aGUgZWxlbWVudCBoYXMgbm8gcGFyZW50LiBPbiBhYnNvbHV0ZWx5IHBvc2l0aW9uZWQgZWxlbWVudHMsIGl0IGNvbXB1dGVzIHRvIGl0c2VsZi4ifSx7bmFtZToibm9ybWFsIn0se25hbWU6InNlbGYtZW5kIn0se25hbWU6InNlbGYtc3RhcnQifSx7bmFtZToiYmFzZWxpbmUiLGRlc2NyaXB0aW9uOiJJZiB0aGUgZmxleCBpdGVtJ3MgaW5saW5lIGF4aXMgaXMgdGhlIHNhbWUgYXMgdGhlIGNyb3NzIGF4aXMsIHRoaXMgdmFsdWUgaXMgaWRlbnRpY2FsIHRvICdmbGV4LXN0YXJ0Jy4gT3RoZXJ3aXNlLCBpdCBwYXJ0aWNpcGF0ZXMgaW4gYmFzZWxpbmUgYWxpZ25tZW50LiJ9LHtuYW1lOiJjZW50ZXIiLGRlc2NyaXB0aW9uOiJUaGUgZmxleCBpdGVtJ3MgbWFyZ2luIGJveCBpcyBjZW50ZXJlZCBpbiB0aGUgY3Jvc3MgYXhpcyB3aXRoaW4gdGhlIGxpbmUuIn0se25hbWU6ImZsZXgtZW5kIixkZXNjcmlwdGlvbjoiVGhlIGNyb3NzLWVuZCBtYXJnaW4gZWRnZSBvZiB0aGUgZmxleCBpdGVtIGlzIHBsYWNlZCBmbHVzaCB3aXRoIHRoZSBjcm9zcy1lbmQgZWRnZSBvZiB0aGUgbGluZS4ifSx7bmFtZToiZmxleC1zdGFydCIsZGVzY3JpcHRpb246IlRoZSBjcm9zcy1zdGFydCBtYXJnaW4gZWRnZSBvZiB0aGUgZmxleCBpdGVtIGlzIHBsYWNlZCBmbHVzaCB3aXRoIHRoZSBjcm9zcy1zdGFydCBlZGdlIG9mIHRoZSBsaW5lLiJ9LHtuYW1lOiJzdHJldGNoIixkZXNjcmlwdGlvbjoiSWYgdGhlIGNyb3NzIHNpemUgcHJvcGVydHkgb2YgdGhlIGZsZXggaXRlbSBjb21wdXRlcyB0byBhdXRvLCBhbmQgbmVpdGhlciBvZiB0aGUgY3Jvc3MtYXhpcyBtYXJnaW5zIGFyZSBhdXRvLCB0aGUgZmxleCBpdGVtIGlzIHN0cmV0Y2hlZC4ifSx7bmFtZToiYmFzZWxpbmUifSx7bmFtZToiZmlyc3QgYmFzZWxpbmUifSx7bmFtZToibGFzdCBiYXNlbGluZSJ9LHtuYW1lOiJzYWZlIn0se25hbWU6InVuc2FmZSJ9XSxzeW50YXg6ImF1dG8gfCBub3JtYWwgfCBzdHJldGNoIHwgPGJhc2VsaW5lLXBvc2l0aW9uPiB8IDxvdmVyZmxvdy1wb3NpdGlvbj4/IDxzZWxmLXBvc2l0aW9uPiIscmVsZXZhbmNlOjczLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9hbGlnbi1zZWxmIn1dLGRlc2NyaXB0aW9uOiJBbGxvd3MgdGhlIGRlZmF1bHQgYWxpZ25tZW50IGFsb25nIHRoZSBjcm9zcyBheGlzIHRvIGJlIG92ZXJyaWRkZW4gZm9yIGluZGl2aWR1YWwgZmxleCBpdGVtcy4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6ImFsbCIsYnJvd3NlcnM6WyJFNzkiLCJGRjI3IiwiUzkuMSIsIkMzNyIsIk8yNCJdLHZhbHVlczpbXSxzeW50YXg6ImluaXRpYWwgfCBpbmhlcml0IHwgdW5zZXQgfCByZXZlcnQgfCByZXZlcnQtbGF5ZXIiLHJlbGV2YW5jZTo1MyxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYWxsIn1dLGRlc2NyaXB0aW9uOiJTaG9ydGhhbmQgdGhhdCByZXNldHMgYWxsIHByb3BlcnRpZXMgZXhjZXB0ICdkaXJlY3Rpb24nIGFuZCAndW5pY29kZS1iaWRpJy4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6ImFsdCIsYnJvd3NlcnM6WyJTOSJdLHZhbHVlczpbXSxyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2FsdCJ9XSxkZXNjcmlwdGlvbjoiUHJvdmlkZXMgYWx0ZXJuYXRpdmUgdGV4dCBmb3IgYXNzaXN0aXZlIHRlY2hub2xvZ3kgdG8gcmVwbGFjZSB0aGUgZ2VuZXJhdGVkIGNvbnRlbnQgb2YgYSA6OmJlZm9yZSBvciA6OmFmdGVyIGVsZW1lbnQuIixyZXN0cmljdGlvbnM6WyJzdHJpbmciLCJlbnVtIl19LHtuYW1lOiJhbmltYXRpb24iLGJyb3dzZXJzOlsiRTEyIiwiRkYxNiIsIlM5IiwiQzQzIiwiSUUxMCIsIk8zMCJdLHZhbHVlczpbe25hbWU6ImFsdGVybmF0ZSIsZGVzY3JpcHRpb246IlRoZSBhbmltYXRpb24gY3ljbGUgaXRlcmF0aW9ucyB0aGF0IGFyZSBvZGQgY291bnRzIGFyZSBwbGF5ZWQgaW4gdGhlIG5vcm1hbCBkaXJlY3Rpb24sIGFuZCB0aGUgYW5pbWF0aW9uIGN5Y2xlIGl0ZXJhdGlvbnMgdGhhdCBhcmUgZXZlbiBjb3VudHMgYXJlIHBsYXllZCBpbiBhIHJldmVyc2UgZGlyZWN0aW9uLiJ9LHtuYW1lOiJhbHRlcm5hdGUtcmV2ZXJzZSIsZGVzY3JpcHRpb246IlRoZSBhbmltYXRpb24gY3ljbGUgaXRlcmF0aW9ucyB0aGF0IGFyZSBvZGQgY291bnRzIGFyZSBwbGF5ZWQgaW4gdGhlIHJldmVyc2UgZGlyZWN0aW9uLCBhbmQgdGhlIGFuaW1hdGlvbiBjeWNsZSBpdGVyYXRpb25zIHRoYXQgYXJlIGV2ZW4gY291bnRzIGFyZSBwbGF5ZWQgaW4gYSBub3JtYWwgZGlyZWN0aW9uLiJ9LHtuYW1lOiJiYWNrd2FyZHMiLGRlc2NyaXB0aW9uOiJUaGUgYmVnaW5uaW5nIHByb3BlcnR5IHZhbHVlIChhcyBkZWZpbmVkIGluIHRoZSBmaXJzdCBAa2V5ZnJhbWVzIGF0LXJ1bGUpIGlzIGFwcGxpZWQgYmVmb3JlIHRoZSBhbmltYXRpb24gaXMgZGlzcGxheWVkLCBkdXJpbmcgdGhlIHBlcmlvZCBkZWZpbmVkIGJ5ICdhbmltYXRpb24tZGVsYXknLiJ9LHtuYW1lOiJib3RoIixkZXNjcmlwdGlvbjoiQm90aCBmb3J3YXJkcyBhbmQgYmFja3dhcmRzIGZpbGwgbW9kZXMgYXJlIGFwcGxpZWQuIn0se25hbWU6ImZvcndhcmRzIixkZXNjcmlwdGlvbjoiVGhlIGZpbmFsIHByb3BlcnR5IHZhbHVlIChhcyBkZWZpbmVkIGluIHRoZSBsYXN0IEBrZXlmcmFtZXMgYXQtcnVsZSkgaXMgbWFpbnRhaW5lZCBhZnRlciB0aGUgYW5pbWF0aW9uIGNvbXBsZXRlcy4ifSx7bmFtZToiaW5maW5pdGUiLGRlc2NyaXB0aW9uOiJDYXVzZXMgdGhlIGFuaW1hdGlvbiB0byByZXBlYXQgZm9yZXZlci4ifSx7bmFtZToibm9uZSIsZGVzY3JpcHRpb246Ik5vIGFuaW1hdGlvbiBpcyBwZXJmb3JtZWQifSx7bmFtZToibm9ybWFsIixkZXNjcmlwdGlvbjoiTm9ybWFsIHBsYXliYWNrLiJ9LHtuYW1lOiJyZXZlcnNlIixkZXNjcmlwdGlvbjoiQWxsIGl0ZXJhdGlvbnMgb2YgdGhlIGFuaW1hdGlvbiBhcmUgcGxheWVkIGluIHRoZSByZXZlcnNlIGRpcmVjdGlvbiBmcm9tIHRoZSB3YXkgdGhleSB3ZXJlIHNwZWNpZmllZC4ifV0sc3ludGF4OiI8c2luZ2xlLWFuaW1hdGlvbj4jIixyZWxldmFuY2U6ODIscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2FuaW1hdGlvbiJ9XSxkZXNjcmlwdGlvbjoiU2hvcnRoYW5kIHByb3BlcnR5IGNvbWJpbmVzIHNpeCBvZiB0aGUgYW5pbWF0aW9uIHByb3BlcnRpZXMgaW50byBhIHNpbmdsZSBwcm9wZXJ0eS4iLHJlc3RyaWN0aW9uczpbInRpbWUiLCJ0aW1pbmctZnVuY3Rpb24iLCJlbnVtIiwiaWRlbnRpZmllciIsIm51bWJlciJdfSx7bmFtZToiYW5pbWF0aW9uLWRlbGF5Iixicm93c2VyczpbIkUxMiIsIkZGMTYiLCJTOSIsIkM0MyIsIklFMTAiLCJPMzAiXSxzeW50YXg6Ijx0aW1lPiMiLHJlbGV2YW5jZTo2NixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYW5pbWF0aW9uLWRlbGF5In1dLGRlc2NyaXB0aW9uOiJEZWZpbmVzIHdoZW4gdGhlIGFuaW1hdGlvbiB3aWxsIHN0YXJ0LiIscmVzdHJpY3Rpb25zOlsidGltZSJdfSx7bmFtZToiYW5pbWF0aW9uLWRpcmVjdGlvbiIsYnJvd3NlcnM6WyJFMTIiLCJGRjE2IiwiUzkiLCJDNDMiLCJJRTEwIiwiTzMwIl0sdmFsdWVzOlt7bmFtZToiYWx0ZXJuYXRlIixkZXNjcmlwdGlvbjoiVGhlIGFuaW1hdGlvbiBjeWNsZSBpdGVyYXRpb25zIHRoYXQgYXJlIG9kZCBjb3VudHMgYXJlIHBsYXllZCBpbiB0aGUgbm9ybWFsIGRpcmVjdGlvbiwgYW5kIHRoZSBhbmltYXRpb24gY3ljbGUgaXRlcmF0aW9ucyB0aGF0IGFyZSBldmVuIGNvdW50cyBhcmUgcGxheWVkIGluIGEgcmV2ZXJzZSBkaXJlY3Rpb24uIn0se25hbWU6ImFsdGVybmF0ZS1yZXZlcnNlIixkZXNjcmlwdGlvbjoiVGhlIGFuaW1hdGlvbiBjeWNsZSBpdGVyYXRpb25zIHRoYXQgYXJlIG9kZCBjb3VudHMgYXJlIHBsYXllZCBpbiB0aGUgcmV2ZXJzZSBkaXJlY3Rpb24sIGFuZCB0aGUgYW5pbWF0aW9uIGN5Y2xlIGl0ZXJhdGlvbnMgdGhhdCBhcmUgZXZlbiBjb3VudHMgYXJlIHBsYXllZCBpbiBhIG5vcm1hbCBkaXJlY3Rpb24uIn0se25hbWU6Im5vcm1hbCIsZGVzY3JpcHRpb246Ik5vcm1hbCBwbGF5YmFjay4ifSx7bmFtZToicmV2ZXJzZSIsZGVzY3JpcHRpb246IkFsbCBpdGVyYXRpb25zIG9mIHRoZSBhbmltYXRpb24gYXJlIHBsYXllZCBpbiB0aGUgcmV2ZXJzZSBkaXJlY3Rpb24gZnJvbSB0aGUgd2F5IHRoZXkgd2VyZSBzcGVjaWZpZWQuIn1dLHN5bnRheDoiPHNpbmdsZS1hbmltYXRpb24tZGlyZWN0aW9uPiMiLHJlbGV2YW5jZTo1OCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYW5pbWF0aW9uLWRpcmVjdGlvbiJ9XSxkZXNjcmlwdGlvbjoiRGVmaW5lcyB3aGV0aGVyIG9yIG5vdCB0aGUgYW5pbWF0aW9uIHNob3VsZCBwbGF5IGluIHJldmVyc2Ugb24gYWx0ZXJuYXRlIGN5Y2xlcy4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6ImFuaW1hdGlvbi1kdXJhdGlvbiIsYnJvd3NlcnM6WyJFMTIiLCJGRjE2IiwiUzkiLCJDNDMiLCJJRTEwIiwiTzMwIl0sc3ludGF4OiI8dGltZT4jIixyZWxldmFuY2U6NzIscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2FuaW1hdGlvbi1kdXJhdGlvbiJ9XSxkZXNjcmlwdGlvbjoiRGVmaW5lcyB0aGUgbGVuZ3RoIG9mIHRpbWUgdGhhdCBhbiBhbmltYXRpb24gdGFrZXMgdG8gY29tcGxldGUgb25lIGN5Y2xlLiIscmVzdHJpY3Rpb25zOlsidGltZSJdfSx7bmFtZToiYW5pbWF0aW9uLWZpbGwtbW9kZSIsYnJvd3NlcnM6WyJFMTIiLCJGRjE2IiwiUzkiLCJDNDMiLCJJRTEwIiwiTzMwIl0sdmFsdWVzOlt7bmFtZToiYmFja3dhcmRzIixkZXNjcmlwdGlvbjoiVGhlIGJlZ2lubmluZyBwcm9wZXJ0eSB2YWx1ZSAoYXMgZGVmaW5lZCBpbiB0aGUgZmlyc3QgQGtleWZyYW1lcyBhdC1ydWxlKSBpcyBhcHBsaWVkIGJlZm9yZSB0aGUgYW5pbWF0aW9uIGlzIGRpc3BsYXllZCwgZHVyaW5nIHRoZSBwZXJpb2QgZGVmaW5lZCBieSAnYW5pbWF0aW9uLWRlbGF5Jy4ifSx7bmFtZToiYm90aCIsZGVzY3JpcHRpb246IkJvdGggZm9yd2FyZHMgYW5kIGJhY2t3YXJkcyBmaWxsIG1vZGVzIGFyZSBhcHBsaWVkLiJ9LHtuYW1lOiJmb3J3YXJkcyIsZGVzY3JpcHRpb246IlRoZSBmaW5hbCBwcm9wZXJ0eSB2YWx1ZSAoYXMgZGVmaW5lZCBpbiB0aGUgbGFzdCBAa2V5ZnJhbWVzIGF0LXJ1bGUpIGlzIG1haW50YWluZWQgYWZ0ZXIgdGhlIGFuaW1hdGlvbiBjb21wbGV0ZXMuIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJUaGVyZSBpcyBubyBjaGFuZ2UgdG8gdGhlIHByb3BlcnR5IHZhbHVlIGJldHdlZW4gdGhlIHRpbWUgdGhlIGFuaW1hdGlvbiBpcyBhcHBsaWVkIGFuZCB0aGUgdGltZSB0aGUgYW5pbWF0aW9uIGJlZ2lucyBwbGF5aW5nIG9yIGFmdGVyIHRoZSBhbmltYXRpb24gY29tcGxldGVzLiJ9XSxzeW50YXg6IjxzaW5nbGUtYW5pbWF0aW9uLWZpbGwtbW9kZT4jIixyZWxldmFuY2U6NjUscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2FuaW1hdGlvbi1maWxsLW1vZGUifV0sZGVzY3JpcHRpb246IkRlZmluZXMgd2hhdCB2YWx1ZXMgYXJlIGFwcGxpZWQgYnkgdGhlIGFuaW1hdGlvbiBvdXRzaWRlIHRoZSB0aW1lIGl0IGlzIGV4ZWN1dGluZy4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6ImFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQiLGJyb3dzZXJzOlsiRTEyIiwiRkYxNiIsIlM5IiwiQzQzIiwiSUUxMCIsIk8zMCJdLHZhbHVlczpbe25hbWU6ImluZmluaXRlIixkZXNjcmlwdGlvbjoiQ2F1c2VzIHRoZSBhbmltYXRpb24gdG8gcmVwZWF0IGZvcmV2ZXIuIn1dLHN5bnRheDoiPHNpbmdsZS1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50PiMiLHJlbGV2YW5jZTo2NCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudCJ9XSxkZXNjcmlwdGlvbjoiRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHRpbWVzIGFuIGFuaW1hdGlvbiBjeWNsZSBpcyBwbGF5ZWQuIFRoZSBkZWZhdWx0IHZhbHVlIGlzIG9uZSwgbWVhbmluZyB0aGUgYW5pbWF0aW9uIHdpbGwgcGxheSBmcm9tIGJlZ2lubmluZyB0byBlbmQgb25jZS4iLHJlc3RyaWN0aW9uczpbIm51bWJlciIsImVudW0iXX0se25hbWU6ImFuaW1hdGlvbi1uYW1lIixicm93c2VyczpbIkUxMiIsIkZGMTYiLCJTOSIsIkM0MyIsIklFMTAiLCJPMzAiXSx2YWx1ZXM6W3tuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiTm8gYW5pbWF0aW9uIGlzIHBlcmZvcm1lZCJ9XSxzeW50YXg6Ilsgbm9uZSB8IDxrZXlmcmFtZXMtbmFtZT4gXSMiLHJlbGV2YW5jZTo3MixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYW5pbWF0aW9uLW5hbWUifV0sZGVzY3JpcHRpb246IkRlZmluZXMgYSBsaXN0IG9mIGFuaW1hdGlvbnMgdGhhdCBhcHBseS4gRWFjaCBuYW1lIGlzIHVzZWQgdG8gc2VsZWN0IHRoZSBrZXlmcmFtZSBhdC1ydWxlIHRoYXQgcHJvdmlkZXMgdGhlIHByb3BlcnR5IHZhbHVlcyBmb3IgdGhlIGFuaW1hdGlvbi4iLHJlc3RyaWN0aW9uczpbImlkZW50aWZpZXIiLCJlbnVtIl19LHtuYW1lOiJhbmltYXRpb24tcGxheS1zdGF0ZSIsYnJvd3NlcnM6WyJFMTIiLCJGRjE2IiwiUzkiLCJDNDMiLCJJRTEwIiwiTzMwIl0sdmFsdWVzOlt7bmFtZToicGF1c2VkIixkZXNjcmlwdGlvbjoiQSBydW5uaW5nIGFuaW1hdGlvbiB3aWxsIGJlIHBhdXNlZC4ifSx7bmFtZToicnVubmluZyIsZGVzY3JpcHRpb246IlJlc3VtZSBwbGF5YmFjayBvZiBhIHBhdXNlZCBhbmltYXRpb24uIn1dLHN5bnRheDoiPHNpbmdsZS1hbmltYXRpb24tcGxheS1zdGF0ZT4jIixyZWxldmFuY2U6NTUscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2FuaW1hdGlvbi1wbGF5LXN0YXRlIn1dLGRlc2NyaXB0aW9uOiJEZWZpbmVzIHdoZXRoZXIgdGhlIGFuaW1hdGlvbiBpcyBydW5uaW5nIG9yIHBhdXNlZC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6ImFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb24iLGJyb3dzZXJzOlsiRTEyIiwiRkYxNiIsIlM5IiwiQzQzIiwiSUUxMCIsIk8zMCJdLHN5bnRheDoiPGVhc2luZy1mdW5jdGlvbj4jIixyZWxldmFuY2U6NzEscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2FuaW1hdGlvbi10aW1pbmctZnVuY3Rpb24ifV0sZGVzY3JpcHRpb246IkRlc2NyaWJlcyBob3cgdGhlIGFuaW1hdGlvbiB3aWxsIHByb2dyZXNzIG92ZXIgb25lIGN5Y2xlIG9mIGl0cyBkdXJhdGlvbi4iLHJlc3RyaWN0aW9uczpbInRpbWluZy1mdW5jdGlvbiJdfSx7bmFtZToiYmFja2ZhY2UtdmlzaWJpbGl0eSIsYnJvd3NlcnM6WyJFMTIiLCJGRjE2IiwiUzE1LjQiLCJDMzYiLCJJRTEwIiwiTzIzIl0sdmFsdWVzOlt7bmFtZToiaGlkZGVuIixkZXNjcmlwdGlvbjoiQmFjayBzaWRlIGlzIGhpZGRlbi4ifSx7bmFtZToidmlzaWJsZSIsZGVzY3JpcHRpb246IkJhY2sgc2lkZSBpcyB2aXNpYmxlLiJ9XSxzeW50YXg6InZpc2libGUgfCBoaWRkZW4iLHJlbGV2YW5jZTo2MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYmFja2ZhY2UtdmlzaWJpbGl0eSJ9XSxkZXNjcmlwdGlvbjoiRGV0ZXJtaW5lcyB3aGV0aGVyIG9yIG5vdCB0aGUgJ2JhY2snIHNpZGUgb2YgYSB0cmFuc2Zvcm1lZCBlbGVtZW50IGlzIHZpc2libGUgd2hlbiBmYWNpbmcgdGhlIHZpZXdlci4gV2l0aCBhbiBpZGVudGl0eSB0cmFuc2Zvcm0sIHRoZSBmcm9udCBzaWRlIG9mIGFuIGVsZW1lbnQgZmFjZXMgdGhlIHZpZXdlci4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6ImJhY2tncm91bmQiLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzEiLCJDMSIsIklFNCIsIk8zLjUiXSx2YWx1ZXM6W3tuYW1lOiJmaXhlZCIsZGVzY3JpcHRpb246IlRoZSBiYWNrZ3JvdW5kIGlzIGZpeGVkIHdpdGggcmVnYXJkIHRvIHRoZSB2aWV3cG9ydC4gSW4gcGFnZWQgbWVkaWEgd2hlcmUgdGhlcmUgaXMgbm8gdmlld3BvcnQsIGEgJ2ZpeGVkJyBiYWNrZ3JvdW5kIGlzIGZpeGVkIHdpdGggcmVzcGVjdCB0byB0aGUgcGFnZSBib3ggYW5kIHRoZXJlZm9yZSByZXBsaWNhdGVkIG9uIGV2ZXJ5IHBhZ2UuIn0se25hbWU6ImxvY2FsIixkZXNjcmlwdGlvbjoiVGhlIGJhY2tncm91bmQgaXMgZml4ZWQgd2l0aCByZWdhcmQgdG8gdGhlIGVsZW1lbnQncyBjb250ZW50czogaWYgdGhlIGVsZW1lbnQgaGFzIGEgc2Nyb2xsaW5nIG1lY2hhbmlzbSwgdGhlIGJhY2tncm91bmQgc2Nyb2xscyB3aXRoIHRoZSBlbGVtZW50J3MgY29udGVudHMuIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJBIHZhbHVlIG9mICdub25lJyBjb3VudHMgYXMgYW4gaW1hZ2UgbGF5ZXIgYnV0IGRyYXdzIG5vdGhpbmcuIn0se25hbWU6InNjcm9sbCIsZGVzY3JpcHRpb246IlRoZSBiYWNrZ3JvdW5kIGlzIGZpeGVkIHdpdGggcmVnYXJkIHRvIHRoZSBlbGVtZW50IGl0c2VsZiBhbmQgZG9lcyBub3Qgc2Nyb2xsIHdpdGggaXRzIGNvbnRlbnRzLiAoSXQgaXMgZWZmZWN0aXZlbHkgYXR0YWNoZWQgdG8gdGhlIGVsZW1lbnQncyBib3JkZXIuKSJ9XSxzeW50YXg6IlsgPGJnLWxheWVyPiAsIF0qIDxmaW5hbC1iZy1sYXllcj4iLHJlbGV2YW5jZTo5MyxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYmFja2dyb3VuZCJ9XSxkZXNjcmlwdGlvbjoiU2hvcnRoYW5kIHByb3BlcnR5IGZvciBzZXR0aW5nIG1vc3QgYmFja2dyb3VuZCBwcm9wZXJ0aWVzIGF0IHRoZSBzYW1lIHBsYWNlIGluIHRoZSBzdHlsZSBzaGVldC4iLHJlc3RyaWN0aW9uczpbImVudW0iLCJpbWFnZSIsImNvbG9yIiwicG9zaXRpb24iLCJsZW5ndGgiLCJyZXBlYXQiLCJwZXJjZW50YWdlIiwiYm94Il19LHtuYW1lOiJiYWNrZ3JvdW5kLWF0dGFjaG1lbnQiLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzEiLCJDMSIsIklFNCIsIk8zLjUiXSx2YWx1ZXM6W3tuYW1lOiJmaXhlZCIsZGVzY3JpcHRpb246IlRoZSBiYWNrZ3JvdW5kIGlzIGZpeGVkIHdpdGggcmVnYXJkIHRvIHRoZSB2aWV3cG9ydC4gSW4gcGFnZWQgbWVkaWEgd2hlcmUgdGhlcmUgaXMgbm8gdmlld3BvcnQsIGEgJ2ZpeGVkJyBiYWNrZ3JvdW5kIGlzIGZpeGVkIHdpdGggcmVzcGVjdCB0byB0aGUgcGFnZSBib3ggYW5kIHRoZXJlZm9yZSByZXBsaWNhdGVkIG9uIGV2ZXJ5IHBhZ2UuIn0se25hbWU6ImxvY2FsIixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxIiwiQzEiLCJJRTQiLCJPMy41Il0sZGVzY3JpcHRpb246IlRoZSBiYWNrZ3JvdW5kIGlzIGZpeGVkIHdpdGggcmVnYXJkIHRvIHRoZSBlbGVtZW50J3MgY29udGVudHM6IGlmIHRoZSBlbGVtZW50IGhhcyBhIHNjcm9sbGluZyBtZWNoYW5pc20sIHRoZSBiYWNrZ3JvdW5kIHNjcm9sbHMgd2l0aCB0aGUgZWxlbWVudCdzIGNvbnRlbnRzLiJ9LHtuYW1lOiJzY3JvbGwiLGRlc2NyaXB0aW9uOiJUaGUgYmFja2dyb3VuZCBpcyBmaXhlZCB3aXRoIHJlZ2FyZCB0byB0aGUgZWxlbWVudCBpdHNlbGYgYW5kIGRvZXMgbm90IHNjcm9sbCB3aXRoIGl0cyBjb250ZW50cy4gKEl0IGlzIGVmZmVjdGl2ZWx5IGF0dGFjaGVkIHRvIHRoZSBlbGVtZW50J3MgYm9yZGVyLikifV0sc3ludGF4OiI8YXR0YWNobWVudD4jIixyZWxldmFuY2U6NTQscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JhY2tncm91bmQtYXR0YWNobWVudCJ9XSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHdoZXRoZXIgdGhlIGJhY2tncm91bmQgaW1hZ2VzIGFyZSBmaXhlZCB3aXRoIHJlZ2FyZCB0byB0aGUgdmlld3BvcnQgKCdmaXhlZCcpIG9yIHNjcm9sbCBhbG9uZyB3aXRoIHRoZSBlbGVtZW50ICgnc2Nyb2xsJykgb3IgaXRzIGNvbnRlbnRzICgnbG9jYWwnKS4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6ImJhY2tncm91bmQtYmxlbmQtbW9kZSIsYnJvd3NlcnM6WyJFNzkiLCJGRjMwIiwiUzgiLCJDMzUiLCJPMjIiXSx2YWx1ZXM6W3tuYW1lOiJub3JtYWwiLGRlc2NyaXB0aW9uOiJEZWZhdWx0IGF0dHJpYnV0ZSB3aGljaCBzcGVjaWZpZXMgbm8gYmxlbmRpbmcifSx7bmFtZToibXVsdGlwbHkiLGRlc2NyaXB0aW9uOiJUaGUgc291cmNlIGNvbG9yIGlzIG11bHRpcGxpZWQgYnkgdGhlIGRlc3RpbmF0aW9uIGNvbG9yIGFuZCByZXBsYWNlcyB0aGUgZGVzdGluYXRpb24uIn0se25hbWU6InNjcmVlbiIsZGVzY3JpcHRpb246Ik11bHRpcGxpZXMgdGhlIGNvbXBsZW1lbnRzIG9mIHRoZSBiYWNrZHJvcCBhbmQgc291cmNlIGNvbG9yIHZhbHVlcywgdGhlbiBjb21wbGVtZW50cyB0aGUgcmVzdWx0LiJ9LHtuYW1lOiJvdmVybGF5IixkZXNjcmlwdGlvbjoiTXVsdGlwbGllcyBvciBzY3JlZW5zIHRoZSBjb2xvcnMsIGRlcGVuZGluZyBvbiB0aGUgYmFja2Ryb3AgY29sb3IgdmFsdWUuIn0se25hbWU6ImRhcmtlbiIsZGVzY3JpcHRpb246IlNlbGVjdHMgdGhlIGRhcmtlciBvZiB0aGUgYmFja2Ryb3AgYW5kIHNvdXJjZSBjb2xvcnMuIn0se25hbWU6ImxpZ2h0ZW4iLGRlc2NyaXB0aW9uOiJTZWxlY3RzIHRoZSBsaWdodGVyIG9mIHRoZSBiYWNrZHJvcCBhbmQgc291cmNlIGNvbG9ycy4ifSx7bmFtZToiY29sb3ItZG9kZ2UiLGRlc2NyaXB0aW9uOiJCcmlnaHRlbnMgdGhlIGJhY2tkcm9wIGNvbG9yIHRvIHJlZmxlY3QgdGhlIHNvdXJjZSBjb2xvci4ifSx7bmFtZToiY29sb3ItYnVybiIsZGVzY3JpcHRpb246IkRhcmtlbnMgdGhlIGJhY2tkcm9wIGNvbG9yIHRvIHJlZmxlY3QgdGhlIHNvdXJjZSBjb2xvci4ifSx7bmFtZToiaGFyZC1saWdodCIsZGVzY3JpcHRpb246Ik11bHRpcGxpZXMgb3Igc2NyZWVucyB0aGUgY29sb3JzLCBkZXBlbmRpbmcgb24gdGhlIHNvdXJjZSBjb2xvciB2YWx1ZS4ifSx7bmFtZToic29mdC1saWdodCIsZGVzY3JpcHRpb246IkRhcmtlbnMgb3IgbGlnaHRlbnMgdGhlIGNvbG9ycywgZGVwZW5kaW5nIG9uIHRoZSBzb3VyY2UgY29sb3IgdmFsdWUuIn0se25hbWU6ImRpZmZlcmVuY2UiLGRlc2NyaXB0aW9uOiJTdWJ0cmFjdHMgdGhlIGRhcmtlciBvZiB0aGUgdHdvIGNvbnN0aXR1ZW50IGNvbG9ycyBmcm9tIHRoZSBsaWdodGVyIGNvbG9yLi4ifSx7bmFtZToiZXhjbHVzaW9uIixkZXNjcmlwdGlvbjoiUHJvZHVjZXMgYW4gZWZmZWN0IHNpbWlsYXIgdG8gdGhhdCBvZiB0aGUgRGlmZmVyZW5jZSBtb2RlIGJ1dCBsb3dlciBpbiBjb250cmFzdC4ifSx7bmFtZToiaHVlIixicm93c2VyczpbIkU3OSIsIkZGMzAiLCJTOCIsIkMzNSIsIk8yMiJdLGRlc2NyaXB0aW9uOiJDcmVhdGVzIGEgY29sb3Igd2l0aCB0aGUgaHVlIG9mIHRoZSBzb3VyY2UgY29sb3IgYW5kIHRoZSBzYXR1cmF0aW9uIGFuZCBsdW1pbm9zaXR5IG9mIHRoZSBiYWNrZHJvcCBjb2xvci4ifSx7bmFtZToic2F0dXJhdGlvbiIsYnJvd3NlcnM6WyJFNzkiLCJGRjMwIiwiUzgiLCJDMzUiLCJPMjIiXSxkZXNjcmlwdGlvbjoiQ3JlYXRlcyBhIGNvbG9yIHdpdGggdGhlIHNhdHVyYXRpb24gb2YgdGhlIHNvdXJjZSBjb2xvciBhbmQgdGhlIGh1ZSBhbmQgbHVtaW5vc2l0eSBvZiB0aGUgYmFja2Ryb3AgY29sb3IuIn0se25hbWU6ImNvbG9yIixicm93c2VyczpbIkU3OSIsIkZGMzAiLCJTOCIsIkMzNSIsIk8yMiJdLGRlc2NyaXB0aW9uOiJDcmVhdGVzIGEgY29sb3Igd2l0aCB0aGUgaHVlIGFuZCBzYXR1cmF0aW9uIG9mIHRoZSBzb3VyY2UgY29sb3IgYW5kIHRoZSBsdW1pbm9zaXR5IG9mIHRoZSBiYWNrZHJvcCBjb2xvci4ifSx7bmFtZToibHVtaW5vc2l0eSIsYnJvd3NlcnM6WyJFNzkiLCJGRjMwIiwiUzgiLCJDMzUiLCJPMjIiXSxkZXNjcmlwdGlvbjoiQ3JlYXRlcyBhIGNvbG9yIHdpdGggdGhlIGx1bWlub3NpdHkgb2YgdGhlIHNvdXJjZSBjb2xvciBhbmQgdGhlIGh1ZSBhbmQgc2F0dXJhdGlvbiBvZiB0aGUgYmFja2Ryb3AgY29sb3IuIn1dLHN5bnRheDoiPGJsZW5kLW1vZGU+IyIscmVsZXZhbmNlOjUyLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9iYWNrZ3JvdW5kLWJsZW5kLW1vZGUifV0sZGVzY3JpcHRpb246IkRlZmluZXMgdGhlIGJsZW5kaW5nIG1vZGUgb2YgZWFjaCBiYWNrZ3JvdW5kIGxheWVyLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiYmFja2dyb3VuZC1jbGlwIixicm93c2VyczpbIkUxMiIsIkZGNCIsIlM1IiwiQzEiLCJJRTkiLCJPMTAuNSJdLHN5bnRheDoiPGJveD4jIixyZWxldmFuY2U6NjkscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JhY2tncm91bmQtY2xpcCJ9XSxkZXNjcmlwdGlvbjoiRGV0ZXJtaW5lcyB0aGUgYmFja2dyb3VuZCBwYWludGluZyBhcmVhLiIscmVzdHJpY3Rpb25zOlsiYm94Il19LHtuYW1lOiJiYWNrZ3JvdW5kLWNvbG9yIixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxIiwiQzEiLCJJRTQiLCJPMy41Il0sc3ludGF4OiI8Y29sb3I+IixyZWxldmFuY2U6OTQscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JhY2tncm91bmQtY29sb3IifV0sZGVzY3JpcHRpb246IlNldHMgdGhlIGJhY2tncm91bmQgY29sb3Igb2YgYW4gZWxlbWVudC4iLHJlc3RyaWN0aW9uczpbImNvbG9yIl19LHtuYW1lOiJiYWNrZ3JvdW5kLWltYWdlIixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxIiwiQzEiLCJJRTQiLCJPMy41Il0sdmFsdWVzOlt7bmFtZToibm9uZSIsZGVzY3JpcHRpb246IkNvdW50cyBhcyBhbiBpbWFnZSBsYXllciBidXQgZHJhd3Mgbm90aGluZy4ifV0sc3ludGF4OiI8YmctaW1hZ2U+IyIscmVsZXZhbmNlOjg4LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9iYWNrZ3JvdW5kLWltYWdlIn1dLGRlc2NyaXB0aW9uOiJTZXRzIHRoZSBiYWNrZ3JvdW5kIGltYWdlKHMpIG9mIGFuIGVsZW1lbnQuIixyZXN0cmljdGlvbnM6WyJpbWFnZSIsImVudW0iXX0se25hbWU6ImJhY2tncm91bmQtb3JpZ2luIixicm93c2VyczpbIkUxMiIsIkZGNCIsIlMzIiwiQzEiLCJJRTkiLCJPMTAuNSJdLHN5bnRheDoiPGJveD4jIixyZWxldmFuY2U6NTMscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JhY2tncm91bmQtb3JpZ2luIn1dLGRlc2NyaXB0aW9uOiJGb3IgZWxlbWVudHMgcmVuZGVyZWQgYXMgYSBzaW5nbGUgYm94LCBzcGVjaWZpZXMgdGhlIGJhY2tncm91bmQgcG9zaXRpb25pbmcgYXJlYS4gRm9yIGVsZW1lbnRzIHJlbmRlcmVkIGFzIG11bHRpcGxlIGJveGVzIChlLmcuLCBpbmxpbmUgYm94ZXMgb24gc2V2ZXJhbCBsaW5lcywgYm94ZXMgb24gc2V2ZXJhbCBwYWdlcykgc3BlY2lmaWVzIHdoaWNoIGJveGVzICdib3gtZGVjb3JhdGlvbi1icmVhaycgb3BlcmF0ZXMgb24gdG8gZGV0ZXJtaW5lIHRoZSBiYWNrZ3JvdW5kIHBvc2l0aW9uaW5nIGFyZWEocykuIixyZXN0cmljdGlvbnM6WyJib3giXX0se25hbWU6ImJhY2tncm91bmQtcG9zaXRpb24iLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzEiLCJDMSIsIklFNCIsIk8zLjUiXSxzeW50YXg6IjxiZy1wb3NpdGlvbj4jIixyZWxldmFuY2U6ODcscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JhY2tncm91bmQtcG9zaXRpb24ifV0sZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgaW5pdGlhbCBwb3NpdGlvbiBvZiB0aGUgYmFja2dyb3VuZCBpbWFnZShzKSAoYWZ0ZXIgYW55IHJlc2l6aW5nKSB3aXRoaW4gdGhlaXIgY29ycmVzcG9uZGluZyBiYWNrZ3JvdW5kIHBvc2l0aW9uaW5nIGFyZWEuIixyZXN0cmljdGlvbnM6WyJwb3NpdGlvbiIsImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6ImJhY2tncm91bmQtcG9zaXRpb24teCIsYnJvd3NlcnM6WyJFMTIiLCJGRjQ5IiwiUzEiLCJDMSIsIklFNiIsIk8xNSJdLHZhbHVlczpbe25hbWU6ImNlbnRlciIsZGVzY3JpcHRpb246IkVxdWl2YWxlbnQgdG8gJzUwJScgKCdsZWZ0IDUwJScpIGZvciB0aGUgaG9yaXpvbnRhbCBwb3NpdGlvbiBpZiB0aGUgaG9yaXpvbnRhbCBwb3NpdGlvbiBpcyBub3Qgb3RoZXJ3aXNlIHNwZWNpZmllZCwgb3IgJzUwJScgKCd0b3AgNTAlJykgZm9yIHRoZSB2ZXJ0aWNhbCBwb3NpdGlvbiBpZiBpdCBpcy4ifSx7bmFtZToibGVmdCIsZGVzY3JpcHRpb246IkVxdWl2YWxlbnQgdG8gJzAlJyBmb3IgdGhlIGhvcml6b250YWwgcG9zaXRpb24gaWYgb25lIG9yIHR3byB2YWx1ZXMgYXJlIGdpdmVuLCBvdGhlcndpc2Ugc3BlY2lmaWVzIHRoZSBsZWZ0IGVkZ2UgYXMgdGhlIG9yaWdpbiBmb3IgdGhlIG5leHQgb2Zmc2V0LiJ9LHtuYW1lOiJyaWdodCIsZGVzY3JpcHRpb246IkVxdWl2YWxlbnQgdG8gJzEwMCUnIGZvciB0aGUgaG9yaXpvbnRhbCBwb3NpdGlvbiBpZiBvbmUgb3IgdHdvIHZhbHVlcyBhcmUgZ2l2ZW4sIG90aGVyd2lzZSBzcGVjaWZpZXMgdGhlIHJpZ2h0IGVkZ2UgYXMgdGhlIG9yaWdpbiBmb3IgdGhlIG5leHQgb2Zmc2V0LiJ9XSxzeW50YXg6IlsgY2VudGVyIHwgWyBbIGxlZnQgfCByaWdodCB8IHgtc3RhcnQgfCB4LWVuZCBdPyA8bGVuZ3RoLXBlcmNlbnRhZ2U+PyBdISBdIyIscmVsZXZhbmNlOjU1LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9iYWNrZ3JvdW5kLXBvc2l0aW9uLXgifV0sZGVzY3JpcHRpb246IklmIGJhY2tncm91bmQgaW1hZ2VzIGhhdmUgYmVlbiBzcGVjaWZpZWQsIHRoaXMgcHJvcGVydHkgc3BlY2lmaWVzIHRoZWlyIGluaXRpYWwgcG9zaXRpb24gKGFmdGVyIGFueSByZXNpemluZykgd2l0aGluIHRoZWlyIGNvcnJlc3BvbmRpbmcgYmFja2dyb3VuZCBwb3NpdGlvbmluZyBhcmVhLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToiYmFja2dyb3VuZC1wb3NpdGlvbi15Iixicm93c2VyczpbIkUxMiIsIkZGNDkiLCJTMSIsIkMxIiwiSUU2IiwiTzE1Il0sdmFsdWVzOlt7bmFtZToiYm90dG9tIixkZXNjcmlwdGlvbjoiRXF1aXZhbGVudCB0byAnMTAwJScgZm9yIHRoZSB2ZXJ0aWNhbCBwb3NpdGlvbiBpZiBvbmUgb3IgdHdvIHZhbHVlcyBhcmUgZ2l2ZW4sIG90aGVyd2lzZSBzcGVjaWZpZXMgdGhlIGJvdHRvbSBlZGdlIGFzIHRoZSBvcmlnaW4gZm9yIHRoZSBuZXh0IG9mZnNldC4ifSx7bmFtZToiY2VudGVyIixkZXNjcmlwdGlvbjoiRXF1aXZhbGVudCB0byAnNTAlJyAoJ2xlZnQgNTAlJykgZm9yIHRoZSBob3Jpem9udGFsIHBvc2l0aW9uIGlmIHRoZSBob3Jpem9udGFsIHBvc2l0aW9uIGlzIG5vdCBvdGhlcndpc2Ugc3BlY2lmaWVkLCBvciAnNTAlJyAoJ3RvcCA1MCUnKSBmb3IgdGhlIHZlcnRpY2FsIHBvc2l0aW9uIGlmIGl0IGlzLiJ9LHtuYW1lOiJ0b3AiLGRlc2NyaXB0aW9uOiJFcXVpdmFsZW50IHRvICcwJScgZm9yIHRoZSB2ZXJ0aWNhbCBwb3NpdGlvbiBpZiBvbmUgb3IgdHdvIHZhbHVlcyBhcmUgZ2l2ZW4sIG90aGVyd2lzZSBzcGVjaWZpZXMgdGhlIHRvcCBlZGdlIGFzIHRoZSBvcmlnaW4gZm9yIHRoZSBuZXh0IG9mZnNldC4ifV0sc3ludGF4OiJbIGNlbnRlciB8IFsgWyB0b3AgfCBib3R0b20gfCB5LXN0YXJ0IHwgeS1lbmQgXT8gPGxlbmd0aC1wZXJjZW50YWdlPj8gXSEgXSMiLHJlbGV2YW5jZTo1MyxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYmFja2dyb3VuZC1wb3NpdGlvbi15In1dLGRlc2NyaXB0aW9uOiJJZiBiYWNrZ3JvdW5kIGltYWdlcyBoYXZlIGJlZW4gc3BlY2lmaWVkLCB0aGlzIHByb3BlcnR5IHNwZWNpZmllcyB0aGVpciBpbml0aWFsIHBvc2l0aW9uIChhZnRlciBhbnkgcmVzaXppbmcpIHdpdGhpbiB0aGVpciBjb3JyZXNwb25kaW5nIGJhY2tncm91bmQgcG9zaXRpb25pbmcgYXJlYS4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6ImJhY2tncm91bmQtcmVwZWF0Iixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxIiwiQzEiLCJJRTQiLCJPMy41Il0sdmFsdWVzOltdLHN5bnRheDoiPHJlcGVhdC1zdHlsZT4jIixyZWxldmFuY2U6ODUscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JhY2tncm91bmQtcmVwZWF0In1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgaG93IGJhY2tncm91bmQgaW1hZ2VzIGFyZSB0aWxlZCBhZnRlciB0aGV5IGhhdmUgYmVlbiBzaXplZCBhbmQgcG9zaXRpb25lZC4iLHJlc3RyaWN0aW9uczpbInJlcGVhdCJdfSx7bmFtZToiYmFja2dyb3VuZC1zaXplIixicm93c2VyczpbIkUxMiIsIkZGNCIsIlM1IiwiQzMiLCJJRTkiLCJPMTAiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiUmVzb2x2ZWQgYnkgdXNpbmcgdGhlIGltYWdlJ3MgaW50cmluc2ljIHJhdGlvIGFuZCB0aGUgc2l6ZSBvZiB0aGUgb3RoZXIgZGltZW5zaW9uLCBvciBmYWlsaW5nIHRoYXQsIHVzaW5nIHRoZSBpbWFnZSdzIGludHJpbnNpYyBzaXplLCBvciBmYWlsaW5nIHRoYXQsIHRyZWF0aW5nIGl0IGFzIDEwMCUuIn0se25hbWU6ImNvbnRhaW4iLGRlc2NyaXB0aW9uOiJTY2FsZSB0aGUgaW1hZ2UsIHdoaWxlIHByZXNlcnZpbmcgaXRzIGludHJpbnNpYyBhc3BlY3QgcmF0aW8gKGlmIGFueSksIHRvIHRoZSBsYXJnZXN0IHNpemUgc3VjaCB0aGF0IGJvdGggaXRzIHdpZHRoIGFuZCBpdHMgaGVpZ2h0IGNhbiBmaXQgaW5zaWRlIHRoZSBiYWNrZ3JvdW5kIHBvc2l0aW9uaW5nIGFyZWEuIn0se25hbWU6ImNvdmVyIixkZXNjcmlwdGlvbjoiU2NhbGUgdGhlIGltYWdlLCB3aGlsZSBwcmVzZXJ2aW5nIGl0cyBpbnRyaW5zaWMgYXNwZWN0IHJhdGlvIChpZiBhbnkpLCB0byB0aGUgc21hbGxlc3Qgc2l6ZSBzdWNoIHRoYXQgYm90aCBpdHMgd2lkdGggYW5kIGl0cyBoZWlnaHQgY2FuIGNvbXBsZXRlbHkgY292ZXIgdGhlIGJhY2tncm91bmQgcG9zaXRpb25pbmcgYXJlYS4ifV0sc3ludGF4OiI8Ymctc2l6ZT4jIixyZWxldmFuY2U6ODUscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JhY2tncm91bmQtc2l6ZSJ9XSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSBzaXplIG9mIHRoZSBiYWNrZ3JvdW5kIGltYWdlcy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6ImJlaGF2aW9yIixicm93c2VyczpbIklFNiJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiSUUgb25seS4gVXNlZCB0byBleHRlbmQgYmVoYXZpb3JzIG9mIHRoZSBicm93c2VyLiIscmVzdHJpY3Rpb25zOlsidXJsIl19LHtuYW1lOiJibG9jay1zaXplIixicm93c2VyczpbIkU3OSIsIkZGNDEiLCJTMTIuMSIsIkM1NyIsIk80NCJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJEZXBlbmRzIG9uIHRoZSB2YWx1ZXMgb2Ygb3RoZXIgcHJvcGVydGllcy4ifV0sc3ludGF4OiI8J3dpZHRoJz4iLHJlbGV2YW5jZTo1MyxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYmxvY2stc2l6ZSJ9XSxkZXNjcmlwdGlvbjoiU2l6ZSBvZiBhbiBlbGVtZW50IGluIHRoZSBkaXJlY3Rpb24gb3Bwb3NpdGUgdGhhdCBvZiB0aGUgZGlyZWN0aW9uIHNwZWNpZmllZCBieSAnd3JpdGluZy1tb2RlJy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6ImJvcmRlciIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMSIsIkMxIiwiSUU0IiwiTzMuNSJdLHN5bnRheDoiPGxpbmUtd2lkdGg+IHx8IDxsaW5lLXN0eWxlPiB8fCA8Y29sb3I+IixyZWxldmFuY2U6OTUscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JvcmRlciJ9XSxkZXNjcmlwdGlvbjoiU2hvcnRoYW5kIHByb3BlcnR5IGZvciBzZXR0aW5nIGJvcmRlciB3aWR0aCwgc3R5bGUsIGFuZCBjb2xvci4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsImxpbmUtd2lkdGgiLCJsaW5lLXN0eWxlIiwiY29sb3IiXX0se25hbWU6ImJvcmRlci1ibG9jay1lbmQiLGJyb3dzZXJzOlsiRTc5IiwiRkY0MSIsIlMxMi4xIiwiQzY5IiwiTzU2Il0sc3ludGF4OiI8J2JvcmRlci10b3Atd2lkdGgnPiB8fCA8J2JvcmRlci10b3Atc3R5bGUnPiB8fCA8Y29sb3I+IixyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JvcmRlci1ibG9jay1lbmQifV0sZGVzY3JpcHRpb246IkxvZ2ljYWwgJ2JvcmRlci1ib3R0b20nLiBNYXBwaW5nIGRlcGVuZHMgb24gdGhlIHBhcmVudCBlbGVtZW50J3MgJ3dyaXRpbmctbW9kZScsICdkaXJlY3Rpb24nLCBhbmQgJ3RleHQtb3JpZW50YXRpb24nLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwibGluZS13aWR0aCIsImxpbmUtc3R5bGUiLCJjb2xvciJdfSx7bmFtZToiYm9yZGVyLWJsb2NrLXN0YXJ0Iixicm93c2VyczpbIkU3OSIsIkZGNDEiLCJTMTIuMSIsIkM2OSIsIk81NiJdLHN5bnRheDoiPCdib3JkZXItdG9wLXdpZHRoJz4gfHwgPCdib3JkZXItdG9wLXN0eWxlJz4gfHwgPGNvbG9yPiIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3JkZXItYmxvY2stc3RhcnQifV0sZGVzY3JpcHRpb246IkxvZ2ljYWwgJ2JvcmRlci10b3AnLiBNYXBwaW5nIGRlcGVuZHMgb24gdGhlIHBhcmVudCBlbGVtZW50J3MgJ3dyaXRpbmctbW9kZScsICdkaXJlY3Rpb24nLCBhbmQgJ3RleHQtb3JpZW50YXRpb24nLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwibGluZS13aWR0aCIsImxpbmUtc3R5bGUiLCJjb2xvciJdfSx7bmFtZToiYm9yZGVyLWJsb2NrLWVuZC1jb2xvciIsYnJvd3NlcnM6WyJFNzkiLCJGRjQxIiwiUzEyLjEiLCJDNjkiLCJPNTYiXSxzeW50YXg6IjwnYm9yZGVyLXRvcC1jb2xvcic+IixyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JvcmRlci1ibG9jay1lbmQtY29sb3IifV0sZGVzY3JpcHRpb246IkxvZ2ljYWwgJ2JvcmRlci1ib3R0b20tY29sb3InLiBNYXBwaW5nIGRlcGVuZHMgb24gdGhlIHBhcmVudCBlbGVtZW50J3MgJ3dyaXRpbmctbW9kZScsICdkaXJlY3Rpb24nLCBhbmQgJ3RleHQtb3JpZW50YXRpb24nLiIscmVzdHJpY3Rpb25zOlsiY29sb3IiXX0se25hbWU6ImJvcmRlci1ibG9jay1zdGFydC1jb2xvciIsYnJvd3NlcnM6WyJFNzkiLCJGRjQxIiwiUzEyLjEiLCJDNjkiLCJPNTYiXSxzeW50YXg6IjwnYm9yZGVyLXRvcC1jb2xvcic+IixyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JvcmRlci1ibG9jay1zdGFydC1jb2xvciJ9XSxkZXNjcmlwdGlvbjoiTG9naWNhbCAnYm9yZGVyLXRvcC1jb2xvcicuIE1hcHBpbmcgZGVwZW5kcyBvbiB0aGUgcGFyZW50IGVsZW1lbnQncyAnd3JpdGluZy1tb2RlJywgJ2RpcmVjdGlvbicsIGFuZCAndGV4dC1vcmllbnRhdGlvbicuIixyZXN0cmljdGlvbnM6WyJjb2xvciJdfSx7bmFtZToiYm9yZGVyLWJsb2NrLWVuZC1zdHlsZSIsYnJvd3NlcnM6WyJFNzkiLCJGRjQxIiwiUzEyLjEiLCJDNjkiLCJPNTYiXSxzeW50YXg6IjwnYm9yZGVyLXRvcC1zdHlsZSc+IixyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JvcmRlci1ibG9jay1lbmQtc3R5bGUifV0sZGVzY3JpcHRpb246IkxvZ2ljYWwgJ2JvcmRlci1ib3R0b20tc3R5bGUnLiBNYXBwaW5nIGRlcGVuZHMgb24gdGhlIHBhcmVudCBlbGVtZW50J3MgJ3dyaXRpbmctbW9kZScsICdkaXJlY3Rpb24nLCBhbmQgJ3RleHQtb3JpZW50YXRpb24nLiIscmVzdHJpY3Rpb25zOlsibGluZS1zdHlsZSJdfSx7bmFtZToiYm9yZGVyLWJsb2NrLXN0YXJ0LXN0eWxlIixicm93c2VyczpbIkU3OSIsIkZGNDEiLCJTMTIuMSIsIkM2OSIsIk81NiJdLHN5bnRheDoiPCdib3JkZXItdG9wLXN0eWxlJz4iLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm9yZGVyLWJsb2NrLXN0YXJ0LXN0eWxlIn1dLGRlc2NyaXB0aW9uOiJMb2dpY2FsICdib3JkZXItdG9wLXN0eWxlJy4gTWFwcGluZyBkZXBlbmRzIG9uIHRoZSBwYXJlbnQgZWxlbWVudCdzICd3cml0aW5nLW1vZGUnLCAnZGlyZWN0aW9uJywgYW5kICd0ZXh0LW9yaWVudGF0aW9uJy4iLHJlc3RyaWN0aW9uczpbImxpbmUtc3R5bGUiXX0se25hbWU6ImJvcmRlci1ibG9jay1lbmQtd2lkdGgiLGJyb3dzZXJzOlsiRTc5IiwiRkY0MSIsIlMxMi4xIiwiQzY5IiwiTzU2Il0sc3ludGF4OiI8J2JvcmRlci10b3Atd2lkdGgnPiIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3JkZXItYmxvY2stZW5kLXdpZHRoIn1dLGRlc2NyaXB0aW9uOiJMb2dpY2FsICdib3JkZXItYm90dG9tLXdpZHRoJy4gTWFwcGluZyBkZXBlbmRzIG9uIHRoZSBwYXJlbnQgZWxlbWVudCdzICd3cml0aW5nLW1vZGUnLCAnZGlyZWN0aW9uJywgYW5kICd0ZXh0LW9yaWVudGF0aW9uJy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsImxpbmUtd2lkdGgiXX0se25hbWU6ImJvcmRlci1ibG9jay1zdGFydC13aWR0aCIsYnJvd3NlcnM6WyJFNzkiLCJGRjQxIiwiUzEyLjEiLCJDNjkiLCJPNTYiXSxzeW50YXg6IjwnYm9yZGVyLXRvcC13aWR0aCc+IixyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JvcmRlci1ibG9jay1zdGFydC13aWR0aCJ9XSxkZXNjcmlwdGlvbjoiTG9naWNhbCAnYm9yZGVyLXRvcC13aWR0aCcuIE1hcHBpbmcgZGVwZW5kcyBvbiB0aGUgcGFyZW50IGVsZW1lbnQncyAnd3JpdGluZy1tb2RlJywgJ2RpcmVjdGlvbicsIGFuZCAndGV4dC1vcmllbnRhdGlvbicuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJsaW5lLXdpZHRoIl19LHtuYW1lOiJib3JkZXItYm90dG9tIixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxIiwiQzEiLCJJRTQiLCJPMy41Il0sc3ludGF4OiI8bGluZS13aWR0aD4gfHwgPGxpbmUtc3R5bGU+IHx8IDxjb2xvcj4iLHJlbGV2YW5jZTo4NyxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm9yZGVyLWJvdHRvbSJ9XSxkZXNjcmlwdGlvbjoiU2hvcnRoYW5kIHByb3BlcnR5IGZvciBzZXR0aW5nIGJvcmRlciB3aWR0aCwgc3R5bGUgYW5kIGNvbG9yLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwibGluZS13aWR0aCIsImxpbmUtc3R5bGUiLCJjb2xvciJdfSx7bmFtZToiYm9yZGVyLWJvdHRvbS1jb2xvciIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMSIsIkMxIiwiSUU0IiwiTzMuNSJdLHN5bnRheDoiPCdib3JkZXItdG9wLWNvbG9yJz4iLHJlbGV2YW5jZTo3MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm9yZGVyLWJvdHRvbS1jb2xvciJ9XSxkZXNjcmlwdGlvbjoiU2V0cyB0aGUgY29sb3Igb2YgdGhlIGJvdHRvbSBib3JkZXIuIixyZXN0cmljdGlvbnM6WyJjb2xvciJdfSx7bmFtZToiYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1cyIsYnJvd3NlcnM6WyJFMTIiLCJGRjQiLCJTNSIsIkM0IiwiSUU5IiwiTzEwLjUiXSxzeW50YXg6IjxsZW5ndGgtcGVyY2VudGFnZT57MSwyfSIscmVsZXZhbmNlOjc0LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzIn1dLGRlc2NyaXB0aW9uOiJEZWZpbmVzIHRoZSByYWRpaSBvZiB0aGUgYm90dG9tIGxlZnQgb3V0ZXIgYm9yZGVyIGVkZ2UuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiJib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1cyIsYnJvd3NlcnM6WyJFMTIiLCJGRjQiLCJTNSIsIkM0IiwiSUU5IiwiTzEwLjUiXSxzeW50YXg6IjxsZW5ndGgtcGVyY2VudGFnZT57MSwyfSIscmVsZXZhbmNlOjc0LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1cyJ9XSxkZXNjcmlwdGlvbjoiRGVmaW5lcyB0aGUgcmFkaWkgb2YgdGhlIGJvdHRvbSByaWdodCBvdXRlciBib3JkZXIgZWRnZS4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6ImJvcmRlci1ib3R0b20tc3R5bGUiLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzEiLCJDMSIsIklFNS41IiwiTzkuMiJdLHN5bnRheDoiPGxpbmUtc3R5bGU+IixyZWxldmFuY2U6NjAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JvcmRlci1ib3R0b20tc3R5bGUifV0sZGVzY3JpcHRpb246IlNldHMgdGhlIHN0eWxlIG9mIHRoZSBib3R0b20gYm9yZGVyLiIscmVzdHJpY3Rpb25zOlsibGluZS1zdHlsZSJdfSx7bmFtZToiYm9yZGVyLWJvdHRvbS13aWR0aCIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMSIsIkMxIiwiSUU0IiwiTzMuNSJdLHN5bnRheDoiPGxpbmUtd2lkdGg+IixyZWxldmFuY2U6NjUscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JvcmRlci1ib3R0b20td2lkdGgifV0sZGVzY3JpcHRpb246IlNldHMgdGhlIHRoaWNrbmVzcyBvZiB0aGUgYm90dG9tIGJvcmRlci4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsImxpbmUtd2lkdGgiXX0se25hbWU6ImJvcmRlci1jb2xsYXBzZSIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMS4yIiwiQzEiLCJJRTUiLCJPNCJdLHZhbHVlczpbe25hbWU6ImNvbGxhcHNlIixkZXNjcmlwdGlvbjoiU2VsZWN0cyB0aGUgY29sbGFwc2luZyBib3JkZXJzIG1vZGVsLiJ9LHtuYW1lOiJzZXBhcmF0ZSIsZGVzY3JpcHRpb246IlNlbGVjdHMgdGhlIHNlcGFyYXRlZCBib3JkZXJzIGJvcmRlciBtb2RlbC4ifV0sc3ludGF4OiJjb2xsYXBzZSB8IHNlcGFyYXRlIixyZWxldmFuY2U6NzEscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JvcmRlci1jb2xsYXBzZSJ9XSxkZXNjcmlwdGlvbjoiU2VsZWN0cyBhIHRhYmxlJ3MgYm9yZGVyIG1vZGVsLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiYm9yZGVyLWNvbG9yIixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxIiwiQzEiLCJJRTQiLCJPMy41Il0sdmFsdWVzOltdLHN5bnRheDoiPGNvbG9yPnsxLDR9IixyZWxldmFuY2U6ODYscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JvcmRlci1jb2xvciJ9XSxkZXNjcmlwdGlvbjoiVGhlIGNvbG9yIG9mIHRoZSBib3JkZXIgYXJvdW5kIGFsbCBmb3VyIGVkZ2VzIG9mIGFuIGVsZW1lbnQuIixyZXN0cmljdGlvbnM6WyJjb2xvciJdfSx7bmFtZToiYm9yZGVyLWltYWdlIixicm93c2VyczpbIkUxMiIsIkZGMTUiLCJTNiIsIkMxNiIsIklFMTEiLCJPMTEiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiSWYgJ2F1dG8nIGlzIHNwZWNpZmllZCB0aGVuIHRoZSBib3JkZXIgaW1hZ2Ugd2lkdGggaXMgdGhlIGludHJpbnNpYyB3aWR0aCBvciBoZWlnaHQgKHdoaWNoZXZlciBpcyBhcHBsaWNhYmxlKSBvZiB0aGUgY29ycmVzcG9uZGluZyBpbWFnZSBzbGljZS4gSWYgdGhlIGltYWdlIGRvZXMgbm90IGhhdmUgdGhlIHJlcXVpcmVkIGludHJpbnNpYyBkaW1lbnNpb24gdGhlbiB0aGUgY29ycmVzcG9uZGluZyBib3JkZXItd2lkdGggaXMgdXNlZCBpbnN0ZWFkLiJ9LHtuYW1lOiJmaWxsIixkZXNjcmlwdGlvbjoiQ2F1c2VzIHRoZSBtaWRkbGUgcGFydCBvZiB0aGUgYm9yZGVyLWltYWdlIHRvIGJlIHByZXNlcnZlZC4ifSx7bmFtZToibm9uZSIsZGVzY3JpcHRpb246IlVzZSB0aGUgYm9yZGVyIHN0eWxlcy4ifSx7bmFtZToicmVwZWF0IixkZXNjcmlwdGlvbjoiVGhlIGltYWdlIGlzIHRpbGVkIChyZXBlYXRlZCkgdG8gZmlsbCB0aGUgYXJlYS4ifSx7bmFtZToicm91bmQiLGRlc2NyaXB0aW9uOiJUaGUgaW1hZ2UgaXMgdGlsZWQgKHJlcGVhdGVkKSB0byBmaWxsIHRoZSBhcmVhLiBJZiBpdCBkb2VzIG5vdCBmaWxsIHRoZSBhcmVhIHdpdGggYSB3aG9sZSBudW1iZXIgb2YgdGlsZXMsIHRoZSBpbWFnZSBpcyByZXNjYWxlZCBzbyB0aGF0IGl0IGRvZXMuIn0se25hbWU6InNwYWNlIixkZXNjcmlwdGlvbjoiVGhlIGltYWdlIGlzIHRpbGVkIChyZXBlYXRlZCkgdG8gZmlsbCB0aGUgYXJlYS4gSWYgaXQgZG9lcyBub3QgZmlsbCB0aGUgYXJlYSB3aXRoIGEgd2hvbGUgbnVtYmVyIG9mIHRpbGVzLCB0aGUgZXh0cmEgc3BhY2UgaXMgZGlzdHJpYnV0ZWQgYXJvdW5kIHRoZSB0aWxlcy4ifSx7bmFtZToic3RyZXRjaCIsZGVzY3JpcHRpb246IlRoZSBpbWFnZSBpcyBzdHJldGNoZWQgdG8gZmlsbCB0aGUgYXJlYS4ifSx7bmFtZToidXJsKCkifV0sc3ludGF4OiI8J2JvcmRlci1pbWFnZS1zb3VyY2UnPiB8fCA8J2JvcmRlci1pbWFnZS1zbGljZSc+IFsgLyA8J2JvcmRlci1pbWFnZS13aWR0aCc+IHwgLyA8J2JvcmRlci1pbWFnZS13aWR0aCc+PyAvIDwnYm9yZGVyLWltYWdlLW91dHNldCc+IF0/IHx8IDwnYm9yZGVyLWltYWdlLXJlcGVhdCc+IixyZWxldmFuY2U6NTIscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JvcmRlci1pbWFnZSJ9XSxkZXNjcmlwdGlvbjoiU2hvcnRoYW5kIHByb3BlcnR5IGZvciBzZXR0aW5nICdib3JkZXItaW1hZ2Utc291cmNlJywgJ2JvcmRlci1pbWFnZS1zbGljZScsICdib3JkZXItaW1hZ2Utd2lkdGgnLCAnYm9yZGVyLWltYWdlLW91dHNldCcgYW5kICdib3JkZXItaW1hZ2UtcmVwZWF0Jy4gT21pdHRlZCB2YWx1ZXMgYXJlIHNldCB0byB0aGVpciBpbml0aWFsIHZhbHVlcy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiLCJudW1iZXIiLCJ1cmwiLCJlbnVtIl19LHtuYW1lOiJib3JkZXItaW1hZ2Utb3V0c2V0Iixicm93c2VyczpbIkUxMiIsIkZGMTUiLCJTNiIsIkMxNSIsIklFMTEiLCJPMTUiXSxzeW50YXg6IlsgPGxlbmd0aD4gfCA8bnVtYmVyPiBdezEsNH0iLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm9yZGVyLWltYWdlLW91dHNldCJ9XSxkZXNjcmlwdGlvbjoiVGhlIHZhbHVlcyBzcGVjaWZ5IHRoZSBhbW91bnQgYnkgd2hpY2ggdGhlIGJvcmRlciBpbWFnZSBhcmVhIGV4dGVuZHMgYmV5b25kIHRoZSBib3JkZXIgYm94IG9uIHRoZSB0b3AsIHJpZ2h0LCBib3R0b20sIGFuZCBsZWZ0IHNpZGVzIHJlc3BlY3RpdmVseS4gSWYgdGhlIGZvdXJ0aCB2YWx1ZSBpcyBhYnNlbnQsIGl0IGlzIHRoZSBzYW1lIGFzIHRoZSBzZWNvbmQuIElmIHRoZSB0aGlyZCBvbmUgaXMgYWxzbyBhYnNlbnQsIGl0IGlzIHRoZSBzYW1lIGFzIHRoZSBmaXJzdC4gSWYgdGhlIHNlY29uZCBvbmUgaXMgYWxzbyBhYnNlbnQsIGl0IGlzIHRoZSBzYW1lIGFzIHRoZSBmaXJzdC4gTnVtYmVycyByZXByZXNlbnQgbXVsdGlwbGVzIG9mIHRoZSBjb3JyZXNwb25kaW5nIGJvcmRlci13aWR0aC4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsIm51bWJlciJdfSx7bmFtZToiYm9yZGVyLWltYWdlLXJlcGVhdCIsYnJvd3NlcnM6WyJFMTIiLCJGRjE1IiwiUzYiLCJDMTUiLCJJRTExIiwiTzE1Il0sdmFsdWVzOlt7bmFtZToicmVwZWF0IixkZXNjcmlwdGlvbjoiVGhlIGltYWdlIGlzIHRpbGVkIChyZXBlYXRlZCkgdG8gZmlsbCB0aGUgYXJlYS4ifSx7bmFtZToicm91bmQiLGRlc2NyaXB0aW9uOiJUaGUgaW1hZ2UgaXMgdGlsZWQgKHJlcGVhdGVkKSB0byBmaWxsIHRoZSBhcmVhLiBJZiBpdCBkb2VzIG5vdCBmaWxsIHRoZSBhcmVhIHdpdGggYSB3aG9sZSBudW1iZXIgb2YgdGlsZXMsIHRoZSBpbWFnZSBpcyByZXNjYWxlZCBzbyB0aGF0IGl0IGRvZXMuIn0se25hbWU6InNwYWNlIixkZXNjcmlwdGlvbjoiVGhlIGltYWdlIGlzIHRpbGVkIChyZXBlYXRlZCkgdG8gZmlsbCB0aGUgYXJlYS4gSWYgaXQgZG9lcyBub3QgZmlsbCB0aGUgYXJlYSB3aXRoIGEgd2hvbGUgbnVtYmVyIG9mIHRpbGVzLCB0aGUgZXh0cmEgc3BhY2UgaXMgZGlzdHJpYnV0ZWQgYXJvdW5kIHRoZSB0aWxlcy4ifSx7bmFtZToic3RyZXRjaCIsZGVzY3JpcHRpb246IlRoZSBpbWFnZSBpcyBzdHJldGNoZWQgdG8gZmlsbCB0aGUgYXJlYS4ifV0sc3ludGF4OiJbIHN0cmV0Y2ggfCByZXBlYXQgfCByb3VuZCB8IHNwYWNlIF17MSwyfSIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3JkZXItaW1hZ2UtcmVwZWF0In1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgaG93IHRoZSBpbWFnZXMgZm9yIHRoZSBzaWRlcyBhbmQgdGhlIG1pZGRsZSBwYXJ0IG9mIHRoZSBib3JkZXIgaW1hZ2UgYXJlIHNjYWxlZCBhbmQgdGlsZWQuIElmIHRoZSBzZWNvbmQga2V5d29yZCBpcyBhYnNlbnQsIGl0IGlzIGFzc3VtZWQgdG8gYmUgdGhlIHNhbWUgYXMgdGhlIGZpcnN0LiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiYm9yZGVyLWltYWdlLXNsaWNlIixicm93c2VyczpbIkUxMiIsIkZGMTUiLCJTNiIsIkMxNSIsIklFMTEiLCJPMTUiXSx2YWx1ZXM6W3tuYW1lOiJmaWxsIixkZXNjcmlwdGlvbjoiQ2F1c2VzIHRoZSBtaWRkbGUgcGFydCBvZiB0aGUgYm9yZGVyLWltYWdlIHRvIGJlIHByZXNlcnZlZC4ifV0sc3ludGF4OiI8bnVtYmVyLXBlcmNlbnRhZ2U+ezEsNH0gJiYgZmlsbD8iLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm9yZGVyLWltYWdlLXNsaWNlIn1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgaW53YXJkIG9mZnNldHMgZnJvbSB0aGUgdG9wLCByaWdodCwgYm90dG9tLCBhbmQgbGVmdCBlZGdlcyBvZiB0aGUgaW1hZ2UsIGRpdmlkaW5nIGl0IGludG8gbmluZSByZWdpb25zOiBmb3VyIGNvcm5lcnMsIGZvdXIgZWRnZXMgYW5kIGEgbWlkZGxlLiIscmVzdHJpY3Rpb25zOlsibnVtYmVyIiwicGVyY2VudGFnZSJdfSx7bmFtZToiYm9yZGVyLWltYWdlLXNvdXJjZSIsYnJvd3NlcnM6WyJFMTIiLCJGRjE1IiwiUzYiLCJDMTUiLCJJRTExIiwiTzE1Il0sdmFsdWVzOlt7bmFtZToibm9uZSIsZGVzY3JpcHRpb246IlVzZSB0aGUgYm9yZGVyIHN0eWxlcy4ifV0sc3ludGF4OiJub25lIHwgPGltYWdlPiIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3JkZXItaW1hZ2Utc291cmNlIn1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYW4gaW1hZ2UgdG8gdXNlIGluc3RlYWQgb2YgdGhlIGJvcmRlciBzdHlsZXMgZ2l2ZW4gYnkgdGhlICdib3JkZXItc3R5bGUnIHByb3BlcnRpZXMgYW5kIGFzIGFuIGFkZGl0aW9uYWwgYmFja2dyb3VuZCBsYXllciBmb3IgdGhlIGVsZW1lbnQuIElmIHRoZSB2YWx1ZSBpcyAnbm9uZScgb3IgaWYgdGhlIGltYWdlIGNhbm5vdCBiZSBkaXNwbGF5ZWQsIHRoZSBib3JkZXIgc3R5bGVzIHdpbGwgYmUgdXNlZC4iLHJlc3RyaWN0aW9uczpbImltYWdlIl19LHtuYW1lOiJib3JkZXItaW1hZ2Utd2lkdGgiLGJyb3dzZXJzOlsiRTEyIiwiRkYxMyIsIlM2IiwiQzE1IiwiSUUxMSIsIk8xNSJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJUaGUgYm9yZGVyIGltYWdlIHdpZHRoIGlzIHRoZSBpbnRyaW5zaWMgd2lkdGggb3IgaGVpZ2h0ICh3aGljaGV2ZXIgaXMgYXBwbGljYWJsZSkgb2YgdGhlIGNvcnJlc3BvbmRpbmcgaW1hZ2Ugc2xpY2UuIElmIHRoZSBpbWFnZSBkb2VzIG5vdCBoYXZlIHRoZSByZXF1aXJlZCBpbnRyaW5zaWMgZGltZW5zaW9uIHRoZW4gdGhlIGNvcnJlc3BvbmRpbmcgYm9yZGVyLXdpZHRoIGlzIHVzZWQgaW5zdGVhZC4ifV0sc3ludGF4OiJbIDxsZW5ndGgtcGVyY2VudGFnZT4gfCA8bnVtYmVyPiB8IGF1dG8gXXsxLDR9IixyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JvcmRlci1pbWFnZS13aWR0aCJ9XSxkZXNjcmlwdGlvbjoiVGhlIGZvdXIgdmFsdWVzIG9mICdib3JkZXItaW1hZ2Utd2lkdGgnIHNwZWNpZnkgb2Zmc2V0cyB0aGF0IGFyZSB1c2VkIHRvIGRpdmlkZSB0aGUgYm9yZGVyIGltYWdlIGFyZWEgaW50byBuaW5lIHBhcnRzLiBUaGV5IHJlcHJlc2VudCBpbndhcmQgZGlzdGFuY2VzIGZyb20gdGhlIHRvcCwgcmlnaHQsIGJvdHRvbSwgYW5kIGxlZnQgc2lkZXMgb2YgdGhlIGFyZWEsIHJlc3BlY3RpdmVseS4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiLCJudW1iZXIiXX0se25hbWU6ImJvcmRlci1pbmxpbmUtZW5kIixicm93c2VyczpbIkU3OSIsIkZGNDEiLCJTMTIuMSIsIkM2OSIsIk81NiJdLHN5bnRheDoiPCdib3JkZXItdG9wLXdpZHRoJz4gfHwgPCdib3JkZXItdG9wLXN0eWxlJz4gfHwgPGNvbG9yPiIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3JkZXItaW5saW5lLWVuZCJ9XSxkZXNjcmlwdGlvbjoiTG9naWNhbCAnYm9yZGVyLXJpZ2h0Jy4gTWFwcGluZyBkZXBlbmRzIG9uIHRoZSBwYXJlbnQgZWxlbWVudCdzICd3cml0aW5nLW1vZGUnLCAnZGlyZWN0aW9uJywgYW5kICd0ZXh0LW9yaWVudGF0aW9uJy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsImxpbmUtd2lkdGgiLCJsaW5lLXN0eWxlIiwiY29sb3IiXX0se25hbWU6ImJvcmRlci1pbmxpbmUtc3RhcnQiLGJyb3dzZXJzOlsiRTc5IiwiRkY0MSIsIlMxMi4xIiwiQzY5IiwiTzU2Il0sc3ludGF4OiI8J2JvcmRlci10b3Atd2lkdGgnPiB8fCA8J2JvcmRlci10b3Atc3R5bGUnPiB8fCA8Y29sb3I+IixyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JvcmRlci1pbmxpbmUtc3RhcnQifV0sZGVzY3JpcHRpb246IkxvZ2ljYWwgJ2JvcmRlci1sZWZ0Jy4gTWFwcGluZyBkZXBlbmRzIG9uIHRoZSBwYXJlbnQgZWxlbWVudCdzICd3cml0aW5nLW1vZGUnLCAnZGlyZWN0aW9uJywgYW5kICd0ZXh0LW9yaWVudGF0aW9uJy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsImxpbmUtd2lkdGgiLCJsaW5lLXN0eWxlIiwiY29sb3IiXX0se25hbWU6ImJvcmRlci1pbmxpbmUtZW5kLWNvbG9yIixicm93c2VyczpbIkU3OSIsIkZGNDEiLCJTMTIuMSIsIkM2OSIsIk81NiJdLHN5bnRheDoiPCdib3JkZXItdG9wLWNvbG9yJz4iLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm9yZGVyLWlubGluZS1lbmQtY29sb3IifV0sZGVzY3JpcHRpb246IkxvZ2ljYWwgJ2JvcmRlci1yaWdodC1jb2xvcicuIE1hcHBpbmcgZGVwZW5kcyBvbiB0aGUgcGFyZW50IGVsZW1lbnQncyAnd3JpdGluZy1tb2RlJywgJ2RpcmVjdGlvbicsIGFuZCAndGV4dC1vcmllbnRhdGlvbicuIixyZXN0cmljdGlvbnM6WyJjb2xvciJdfSx7bmFtZToiYm9yZGVyLWlubGluZS1zdGFydC1jb2xvciIsYnJvd3NlcnM6WyJFNzkiLCJGRjQxIiwiUzEyLjEiLCJDNjkiLCJPNTYiXSxzeW50YXg6IjwnYm9yZGVyLXRvcC1jb2xvcic+IixyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JvcmRlci1pbmxpbmUtc3RhcnQtY29sb3IifV0sZGVzY3JpcHRpb246IkxvZ2ljYWwgJ2JvcmRlci1sZWZ0LWNvbG9yJy4gTWFwcGluZyBkZXBlbmRzIG9uIHRoZSBwYXJlbnQgZWxlbWVudCdzICd3cml0aW5nLW1vZGUnLCAnZGlyZWN0aW9uJywgYW5kICd0ZXh0LW9yaWVudGF0aW9uJy4iLHJlc3RyaWN0aW9uczpbImNvbG9yIl19LHtuYW1lOiJib3JkZXItaW5saW5lLWVuZC1zdHlsZSIsYnJvd3NlcnM6WyJFNzkiLCJGRjQxIiwiUzEyLjEiLCJDNjkiLCJPNTYiXSxzeW50YXg6IjwnYm9yZGVyLXRvcC1zdHlsZSc+IixyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JvcmRlci1pbmxpbmUtZW5kLXN0eWxlIn1dLGRlc2NyaXB0aW9uOiJMb2dpY2FsICdib3JkZXItcmlnaHQtc3R5bGUnLiBNYXBwaW5nIGRlcGVuZHMgb24gdGhlIHBhcmVudCBlbGVtZW50J3MgJ3dyaXRpbmctbW9kZScsICdkaXJlY3Rpb24nLCBhbmQgJ3RleHQtb3JpZW50YXRpb24nLiIscmVzdHJpY3Rpb25zOlsibGluZS1zdHlsZSJdfSx7bmFtZToiYm9yZGVyLWlubGluZS1zdGFydC1zdHlsZSIsYnJvd3NlcnM6WyJFNzkiLCJGRjQxIiwiUzEyLjEiLCJDNjkiLCJPNTYiXSxzeW50YXg6IjwnYm9yZGVyLXRvcC1zdHlsZSc+IixyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JvcmRlci1pbmxpbmUtc3RhcnQtc3R5bGUifV0sZGVzY3JpcHRpb246IkxvZ2ljYWwgJ2JvcmRlci1sZWZ0LXN0eWxlJy4gTWFwcGluZyBkZXBlbmRzIG9uIHRoZSBwYXJlbnQgZWxlbWVudCdzICd3cml0aW5nLW1vZGUnLCAnZGlyZWN0aW9uJywgYW5kICd0ZXh0LW9yaWVudGF0aW9uJy4iLHJlc3RyaWN0aW9uczpbImxpbmUtc3R5bGUiXX0se25hbWU6ImJvcmRlci1pbmxpbmUtZW5kLXdpZHRoIixicm93c2VyczpbIkU3OSIsIkZGNDEiLCJTMTIuMSIsIkM2OSIsIk81NiJdLHN5bnRheDoiPCdib3JkZXItdG9wLXdpZHRoJz4iLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm9yZGVyLWlubGluZS1lbmQtd2lkdGgifV0sZGVzY3JpcHRpb246IkxvZ2ljYWwgJ2JvcmRlci1yaWdodC13aWR0aCcuIE1hcHBpbmcgZGVwZW5kcyBvbiB0aGUgcGFyZW50IGVsZW1lbnQncyAnd3JpdGluZy1tb2RlJywgJ2RpcmVjdGlvbicsIGFuZCAndGV4dC1vcmllbnRhdGlvbicuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJsaW5lLXdpZHRoIl19LHtuYW1lOiJib3JkZXItaW5saW5lLXN0YXJ0LXdpZHRoIixicm93c2VyczpbIkU3OSIsIkZGNDEiLCJTMTIuMSIsIkM2OSIsIk81NiJdLHN5bnRheDoiPCdib3JkZXItdG9wLXdpZHRoJz4iLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm9yZGVyLWlubGluZS1zdGFydC13aWR0aCJ9XSxkZXNjcmlwdGlvbjoiTG9naWNhbCAnYm9yZGVyLWxlZnQtd2lkdGgnLiBNYXBwaW5nIGRlcGVuZHMgb24gdGhlIHBhcmVudCBlbGVtZW50J3MgJ3dyaXRpbmctbW9kZScsICdkaXJlY3Rpb24nLCBhbmQgJ3RleHQtb3JpZW50YXRpb24nLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwibGluZS13aWR0aCJdfSx7bmFtZToiYm9yZGVyLWxlZnQiLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzEiLCJDMSIsIklFNCIsIk8zLjUiXSxzeW50YXg6IjxsaW5lLXdpZHRoPiB8fCA8bGluZS1zdHlsZT4gfHwgPGNvbG9yPiIscmVsZXZhbmNlOjgxLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3JkZXItbGVmdCJ9XSxkZXNjcmlwdGlvbjoiU2hvcnRoYW5kIHByb3BlcnR5IGZvciBzZXR0aW5nIGJvcmRlciB3aWR0aCwgc3R5bGUgYW5kIGNvbG9yIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJsaW5lLXdpZHRoIiwibGluZS1zdHlsZSIsImNvbG9yIl19LHtuYW1lOiJib3JkZXItbGVmdC1jb2xvciIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMSIsIkMxIiwiSUU0IiwiTzMuNSJdLHN5bnRheDoiPGNvbG9yPiIscmVsZXZhbmNlOjY3LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3JkZXItbGVmdC1jb2xvciJ9XSxkZXNjcmlwdGlvbjoiU2V0cyB0aGUgY29sb3Igb2YgdGhlIGxlZnQgYm9yZGVyLiIscmVzdHJpY3Rpb25zOlsiY29sb3IiXX0se25hbWU6ImJvcmRlci1sZWZ0LXN0eWxlIixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxIiwiQzEiLCJJRTUuNSIsIk85LjIiXSxzeW50YXg6IjxsaW5lLXN0eWxlPiIscmVsZXZhbmNlOjU0LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3JkZXItbGVmdC1zdHlsZSJ9XSxkZXNjcmlwdGlvbjoiU2V0cyB0aGUgc3R5bGUgb2YgdGhlIGxlZnQgYm9yZGVyLiIscmVzdHJpY3Rpb25zOlsibGluZS1zdHlsZSJdfSx7bmFtZToiYm9yZGVyLWxlZnQtd2lkdGgiLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzEiLCJDMSIsIklFNCIsIk8zLjUiXSxzeW50YXg6IjxsaW5lLXdpZHRoPiIscmVsZXZhbmNlOjYzLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3JkZXItbGVmdC13aWR0aCJ9XSxkZXNjcmlwdGlvbjoiU2V0cyB0aGUgdGhpY2tuZXNzIG9mIHRoZSBsZWZ0IGJvcmRlci4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsImxpbmUtd2lkdGgiXX0se25hbWU6ImJvcmRlci1yYWRpdXMiLGJyb3dzZXJzOlsiRTEyIiwiRkY0IiwiUzUiLCJDNCIsIklFOSIsIk8xMC41Il0sc3ludGF4OiI8bGVuZ3RoLXBlcmNlbnRhZ2U+ezEsNH0gWyAvIDxsZW5ndGgtcGVyY2VudGFnZT57MSw0fSBdPyIscmVsZXZhbmNlOjkyLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3JkZXItcmFkaXVzIn1dLGRlc2NyaXB0aW9uOiJEZWZpbmVzIHRoZSByYWRpaSBvZiB0aGUgb3V0ZXIgYm9yZGVyIGVkZ2UuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiJib3JkZXItcmlnaHQiLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzEiLCJDMSIsIklFNS41IiwiTzkuMiJdLHN5bnRheDoiPGxpbmUtd2lkdGg+IHx8IDxsaW5lLXN0eWxlPiB8fCA8Y29sb3I+IixyZWxldmFuY2U6ODAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JvcmRlci1yaWdodCJ9XSxkZXNjcmlwdGlvbjoiU2hvcnRoYW5kIHByb3BlcnR5IGZvciBzZXR0aW5nIGJvcmRlciB3aWR0aCwgc3R5bGUgYW5kIGNvbG9yIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJsaW5lLXdpZHRoIiwibGluZS1zdHlsZSIsImNvbG9yIl19LHtuYW1lOiJib3JkZXItcmlnaHQtY29sb3IiLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzEiLCJDMSIsIklFNCIsIk8zLjUiXSxzeW50YXg6Ijxjb2xvcj4iLHJlbGV2YW5jZTo2NixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm9yZGVyLXJpZ2h0LWNvbG9yIn1dLGRlc2NyaXB0aW9uOiJTZXRzIHRoZSBjb2xvciBvZiB0aGUgcmlnaHQgYm9yZGVyLiIscmVzdHJpY3Rpb25zOlsiY29sb3IiXX0se25hbWU6ImJvcmRlci1yaWdodC1zdHlsZSIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMSIsIkMxIiwiSUU1LjUiLCJPOS4yIl0sc3ludGF4OiI8bGluZS1zdHlsZT4iLHJlbGV2YW5jZTo1MyxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm9yZGVyLXJpZ2h0LXN0eWxlIn1dLGRlc2NyaXB0aW9uOiJTZXRzIHRoZSBzdHlsZSBvZiB0aGUgcmlnaHQgYm9yZGVyLiIscmVzdHJpY3Rpb25zOlsibGluZS1zdHlsZSJdfSx7bmFtZToiYm9yZGVyLXJpZ2h0LXdpZHRoIixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxIiwiQzEiLCJJRTQiLCJPMy41Il0sc3ludGF4OiI8bGluZS13aWR0aD4iLHJlbGV2YW5jZTo2MyxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm9yZGVyLXJpZ2h0LXdpZHRoIn1dLGRlc2NyaXB0aW9uOiJTZXRzIHRoZSB0aGlja25lc3Mgb2YgdGhlIHJpZ2h0IGJvcmRlci4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsImxpbmUtd2lkdGgiXX0se25hbWU6ImJvcmRlci1zcGFjaW5nIixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxIiwiQzEiLCJJRTgiLCJPNCJdLHN5bnRheDoiPGxlbmd0aD4gPGxlbmd0aD4/IixyZWxldmFuY2U6NjcscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JvcmRlci1zcGFjaW5nIn1dLGRlc2NyaXB0aW9uOiJUaGUgbGVuZ3RocyBzcGVjaWZ5IHRoZSBkaXN0YW5jZSB0aGF0IHNlcGFyYXRlcyBhZGpvaW5pbmcgY2VsbCBib3JkZXJzLiBJZiBvbmUgbGVuZ3RoIGlzIHNwZWNpZmllZCwgaXQgZ2l2ZXMgYm90aCB0aGUgaG9yaXpvbnRhbCBhbmQgdmVydGljYWwgc3BhY2luZy4gSWYgdHdvIGFyZSBzcGVjaWZpZWQsIHRoZSBmaXJzdCBnaXZlcyB0aGUgaG9yaXpvbnRhbCBzcGFjaW5nIGFuZCB0aGUgc2Vjb25kIHRoZSB2ZXJ0aWNhbCBzcGFjaW5nLiBMZW5ndGhzIG1heSBub3QgYmUgbmVnYXRpdmUuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiXX0se25hbWU6ImJvcmRlci1zdHlsZSIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMSIsIkMxIiwiSUU0IiwiTzMuNSJdLHZhbHVlczpbXSxzeW50YXg6IjxsaW5lLXN0eWxlPnsxLDR9IixyZWxldmFuY2U6NzkscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JvcmRlci1zdHlsZSJ9XSxkZXNjcmlwdGlvbjoiVGhlIHN0eWxlIG9mIHRoZSBib3JkZXIgYXJvdW5kIGVkZ2VzIG9mIGFuIGVsZW1lbnQuIixyZXN0cmljdGlvbnM6WyJsaW5lLXN0eWxlIl19LHtuYW1lOiJib3JkZXItdG9wIixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxIiwiQzEiLCJJRTQiLCJPMy41Il0sc3ludGF4OiI8bGluZS13aWR0aD4gfHwgPGxpbmUtc3R5bGU+IHx8IDxjb2xvcj4iLHJlbGV2YW5jZTo4NixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm9yZGVyLXRvcCJ9XSxkZXNjcmlwdGlvbjoiU2hvcnRoYW5kIHByb3BlcnR5IGZvciBzZXR0aW5nIGJvcmRlciB3aWR0aCwgc3R5bGUgYW5kIGNvbG9yIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJsaW5lLXdpZHRoIiwibGluZS1zdHlsZSIsImNvbG9yIl19LHtuYW1lOiJib3JkZXItdG9wLWNvbG9yIixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxIiwiQzEiLCJJRTQiLCJPMy41Il0sc3ludGF4OiI8Y29sb3I+IixyZWxldmFuY2U6NzEscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JvcmRlci10b3AtY29sb3IifV0sZGVzY3JpcHRpb246IlNldHMgdGhlIGNvbG9yIG9mIHRoZSB0b3AgYm9yZGVyLiIscmVzdHJpY3Rpb25zOlsiY29sb3IiXX0se25hbWU6ImJvcmRlci10b3AtbGVmdC1yYWRpdXMiLGJyb3dzZXJzOlsiRTEyIiwiRkY0IiwiUzUiLCJDNCIsIklFOSIsIk8xMC41Il0sc3ludGF4OiI8bGVuZ3RoLXBlcmNlbnRhZ2U+ezEsMn0iLHJlbGV2YW5jZTo3NSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm9yZGVyLXRvcC1sZWZ0LXJhZGl1cyJ9XSxkZXNjcmlwdGlvbjoiRGVmaW5lcyB0aGUgcmFkaWkgb2YgdGhlIHRvcCBsZWZ0IG91dGVyIGJvcmRlciBlZGdlLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToiYm9yZGVyLXRvcC1yaWdodC1yYWRpdXMiLGJyb3dzZXJzOlsiRTEyIiwiRkY0IiwiUzUiLCJDNCIsIklFOSIsIk8xMC41Il0sc3ludGF4OiI8bGVuZ3RoLXBlcmNlbnRhZ2U+ezEsMn0iLHJlbGV2YW5jZTo3NSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm9yZGVyLXRvcC1yaWdodC1yYWRpdXMifV0sZGVzY3JpcHRpb246IkRlZmluZXMgdGhlIHJhZGlpIG9mIHRoZSB0b3AgcmlnaHQgb3V0ZXIgYm9yZGVyIGVkZ2UuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiJib3JkZXItdG9wLXN0eWxlIixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxIiwiQzEiLCJJRTUuNSIsIk85LjIiXSxzeW50YXg6IjxsaW5lLXN0eWxlPiIscmVsZXZhbmNlOjU4LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3JkZXItdG9wLXN0eWxlIn1dLGRlc2NyaXB0aW9uOiJTZXRzIHRoZSBzdHlsZSBvZiB0aGUgdG9wIGJvcmRlci4iLHJlc3RyaWN0aW9uczpbImxpbmUtc3R5bGUiXX0se25hbWU6ImJvcmRlci10b3Atd2lkdGgiLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzEiLCJDMSIsIklFNCIsIk8zLjUiXSxzeW50YXg6IjxsaW5lLXdpZHRoPiIscmVsZXZhbmNlOjYxLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3JkZXItdG9wLXdpZHRoIn1dLGRlc2NyaXB0aW9uOiJTZXRzIHRoZSB0aGlja25lc3Mgb2YgdGhlIHRvcCBib3JkZXIuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJsaW5lLXdpZHRoIl19LHtuYW1lOiJib3JkZXItd2lkdGgiLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzEiLCJDMSIsIklFNCIsIk8zLjUiXSx2YWx1ZXM6W10sc3ludGF4OiI8bGluZS13aWR0aD57MSw0fSIscmVsZXZhbmNlOjgyLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3JkZXItd2lkdGgifV0sZGVzY3JpcHRpb246IlNob3J0aGFuZCB0aGF0IHNldHMgdGhlIGZvdXIgJ2JvcmRlci0qLXdpZHRoJyBwcm9wZXJ0aWVzLiBJZiBpdCBoYXMgZm91ciB2YWx1ZXMsIHRoZXkgc2V0IHRvcCwgcmlnaHQsIGJvdHRvbSBhbmQgbGVmdCBpbiB0aGF0IG9yZGVyLiBJZiBsZWZ0IGlzIG1pc3NpbmcsIGl0IGlzIHRoZSBzYW1lIGFzIHJpZ2h0OyBpZiBib3R0b20gaXMgbWlzc2luZywgaXQgaXMgdGhlIHNhbWUgYXMgdG9wOyBpZiByaWdodCBpcyBtaXNzaW5nLCBpdCBpcyB0aGUgc2FtZSBhcyB0b3AuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJsaW5lLXdpZHRoIl19LHtuYW1lOiJib3R0b20iLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzEiLCJDMSIsIklFNSIsIk82Il0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IkZvciBub24tcmVwbGFjZWQgZWxlbWVudHMsIHRoZSBlZmZlY3Qgb2YgdGhpcyB2YWx1ZSBkZXBlbmRzIG9uIHdoaWNoIG9mIHJlbGF0ZWQgcHJvcGVydGllcyBoYXZlIHRoZSB2YWx1ZSAnYXV0bycgYXMgd2VsbCJ9XSxzeW50YXg6IjxsZW5ndGg+IHwgPHBlcmNlbnRhZ2U+IHwgYXV0byIscmVsZXZhbmNlOjkwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3R0b20ifV0sZGVzY3JpcHRpb246IlNwZWNpZmllcyBob3cgZmFyIGFuIGFic29sdXRlbHkgcG9zaXRpb25lZCBib3gncyBib3R0b20gbWFyZ2luIGVkZ2UgaXMgb2Zmc2V0IGFib3ZlIHRoZSBib3R0b20gZWRnZSBvZiB0aGUgYm94J3MgJ2NvbnRhaW5pbmcgYmxvY2snLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToiYm94LWRlY29yYXRpb24tYnJlYWsiLGJyb3dzZXJzOlsiRTc5IiwiRkYzMiIsIlM3IiwiQzIyIiwiTzE1Il0sdmFsdWVzOlt7bmFtZToiY2xvbmUiLGRlc2NyaXB0aW9uOiJFYWNoIGJveCBpcyBpbmRlcGVuZGVudGx5IHdyYXBwZWQgd2l0aCB0aGUgYm9yZGVyIGFuZCBwYWRkaW5nLiJ9LHtuYW1lOiJzbGljZSIsZGVzY3JpcHRpb246IlRoZSBlZmZlY3QgaXMgYXMgdGhvdWdoIHRoZSBlbGVtZW50IHdlcmUgcmVuZGVyZWQgd2l0aCBubyBicmVha3MgcHJlc2VudCwgYW5kIHRoZW4gc2xpY2VkIGJ5IHRoZSBicmVha3MgYWZ0ZXJ3YXJkLiJ9XSxzeW50YXg6InNsaWNlIHwgY2xvbmUiLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm94LWRlY29yYXRpb24tYnJlYWsifV0sZGVzY3JpcHRpb246IlNwZWNpZmllcyB3aGV0aGVyIGluZGl2aWR1YWwgYm94ZXMgYXJlIHRyZWF0ZWQgYXMgYnJva2VuIHBpZWNlcyBvZiBvbmUgY29udGludW91cyBib3gsIG9yIHdoZXRoZXIgZWFjaCBib3ggaXMgaW5kaXZpZHVhbGx5IHdyYXBwZWQgd2l0aCB0aGUgYm9yZGVyIGFuZCBwYWRkaW5nLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiYm94LXNoYWRvdyIsYnJvd3NlcnM6WyJFMTIiLCJGRjQiLCJTNS4xIiwiQzEwIiwiSUU5IiwiTzEwLjUiXSx2YWx1ZXM6W3tuYW1lOiJpbnNldCIsZGVzY3JpcHRpb246IkNoYW5nZXMgdGhlIGRyb3Agc2hhZG93IGZyb20gYW4gb3V0ZXIgc2hhZG93IChvbmUgdGhhdCBzaGFkb3dzIHRoZSBib3ggb250byB0aGUgY2FudmFzLCBhcyBpZiBpdCB3ZXJlIGxpZnRlZCBhYm92ZSB0aGUgY2FudmFzKSB0byBhbiBpbm5lciBzaGFkb3cgKG9uZSB0aGF0IHNoYWRvd3MgdGhlIGNhbnZhcyBvbnRvIHRoZSBib3gsIGFzIGlmIHRoZSBib3ggd2VyZSBjdXQgb3V0IG9mIHRoZSBjYW52YXMgYW5kIHNoaWZ0ZWQgYmVoaW5kIGl0KS4ifSx7bmFtZToibm9uZSIsZGVzY3JpcHRpb246Ik5vIHNoYWRvdy4ifV0sc3ludGF4OiJub25lIHwgPHNoYWRvdz4jIixyZWxldmFuY2U6OTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JveC1zaGFkb3cifV0sZGVzY3JpcHRpb246IkF0dGFjaGVzIG9uZSBvciBtb3JlIGRyb3Atc2hhZG93cyB0byB0aGUgYm94LiBUaGUgcHJvcGVydHkgaXMgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBzaGFkb3dzLCBlYWNoIHNwZWNpZmllZCBieSAyLTQgbGVuZ3RoIHZhbHVlcywgYW4gb3B0aW9uYWwgY29sb3IsIGFuZCBhbiBvcHRpb25hbCAnaW5zZXQnIGtleXdvcmQuIE9taXR0ZWQgbGVuZ3RocyBhcmUgMDsgb21pdHRlZCBjb2xvcnMgYXJlIGEgdXNlciBhZ2VudCBjaG9zZW4gY29sb3IuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJjb2xvciIsImVudW0iXX0se25hbWU6ImJveC1zaXppbmciLGJyb3dzZXJzOlsiRTEyIiwiRkYyOSIsIlM1LjEiLCJDMTAiLCJJRTgiLCJPNyJdLHZhbHVlczpbe25hbWU6ImJvcmRlci1ib3giLGRlc2NyaXB0aW9uOiJUaGUgc3BlY2lmaWVkIHdpZHRoIGFuZCBoZWlnaHQgKGFuZCByZXNwZWN0aXZlIG1pbi9tYXggcHJvcGVydGllcykgb24gdGhpcyBlbGVtZW50IGRldGVybWluZSB0aGUgYm9yZGVyIGJveCBvZiB0aGUgZWxlbWVudC4ifSx7bmFtZToiY29udGVudC1ib3giLGRlc2NyaXB0aW9uOiJCZWhhdmlvciBvZiB3aWR0aCBhbmQgaGVpZ2h0IGFzIHNwZWNpZmllZCBieSBDU1MyLjEuIFRoZSBzcGVjaWZpZWQgd2lkdGggYW5kIGhlaWdodCAoYW5kIHJlc3BlY3RpdmUgbWluL21heCBwcm9wZXJ0aWVzKSBhcHBseSB0byB0aGUgd2lkdGggYW5kIGhlaWdodCByZXNwZWN0aXZlbHkgb2YgdGhlIGNvbnRlbnQgYm94IG9mIHRoZSBlbGVtZW50LiJ9XSxzeW50YXg6ImNvbnRlbnQtYm94IHwgYm9yZGVyLWJveCIscmVsZXZhbmNlOjkyLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3gtc2l6aW5nIn1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhlIGJlaGF2aW9yIG9mIHRoZSAnd2lkdGgnIGFuZCAnaGVpZ2h0JyBwcm9wZXJ0aWVzLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiYnJlYWstYWZ0ZXIiLGJyb3dzZXJzOlsiRTEyIiwiRkY2NSIsIlMxMCIsIkM1MCIsIklFMTAiLCJPMzciXSx2YWx1ZXM6W3tuYW1lOiJhbHdheXMiLGRlc2NyaXB0aW9uOiJBbHdheXMgZm9yY2UgYSBwYWdlIGJyZWFrIGJlZm9yZS9hZnRlciB0aGUgZ2VuZXJhdGVkIGJveC4ifSx7bmFtZToiYXV0byIsZGVzY3JpcHRpb246Ik5laXRoZXIgZm9yY2Ugbm9yIGZvcmJpZCBhIHBhZ2UvY29sdW1uIGJyZWFrIGJlZm9yZS9hZnRlciB0aGUgcHJpbmNpcGFsIGJveC4ifSx7bmFtZToiYXZvaWQiLGRlc2NyaXB0aW9uOiJBdm9pZCBhIGJyZWFrIGJlZm9yZS9hZnRlciB0aGUgcHJpbmNpcGFsIGJveC4ifSx7bmFtZToiYXZvaWQtY29sdW1uIixkZXNjcmlwdGlvbjoiQXZvaWQgYSBjb2x1bW4gYnJlYWsgYmVmb3JlL2FmdGVyIHRoZSBwcmluY2lwYWwgYm94LiJ9LHtuYW1lOiJhdm9pZC1wYWdlIixkZXNjcmlwdGlvbjoiQXZvaWQgYSBwYWdlIGJyZWFrIGJlZm9yZS9hZnRlciB0aGUgcHJpbmNpcGFsIGJveC4ifSx7bmFtZToiY29sdW1uIixkZXNjcmlwdGlvbjoiQWx3YXlzIGZvcmNlIGEgY29sdW1uIGJyZWFrIGJlZm9yZS9hZnRlciB0aGUgcHJpbmNpcGFsIGJveC4ifSx7bmFtZToibGVmdCIsZGVzY3JpcHRpb246IkZvcmNlIG9uZSBvciB0d28gcGFnZSBicmVha3MgYmVmb3JlL2FmdGVyIHRoZSBnZW5lcmF0ZWQgYm94IHNvIHRoYXQgdGhlIG5leHQgcGFnZSBpcyBmb3JtYXR0ZWQgYXMgYSBsZWZ0IHBhZ2UuIn0se25hbWU6InBhZ2UiLGRlc2NyaXB0aW9uOiJBbHdheXMgZm9yY2UgYSBwYWdlIGJyZWFrIGJlZm9yZS9hZnRlciB0aGUgcHJpbmNpcGFsIGJveC4ifSx7bmFtZToicmlnaHQiLGRlc2NyaXB0aW9uOiJGb3JjZSBvbmUgb3IgdHdvIHBhZ2UgYnJlYWtzIGJlZm9yZS9hZnRlciB0aGUgZ2VuZXJhdGVkIGJveCBzbyB0aGF0IHRoZSBuZXh0IHBhZ2UgaXMgZm9ybWF0dGVkIGFzIGEgcmlnaHQgcGFnZS4ifV0sc3ludGF4OiJhdXRvIHwgYXZvaWQgfCBhbHdheXMgfCBhbGwgfCBhdm9pZC1wYWdlIHwgcGFnZSB8IGxlZnQgfCByaWdodCB8IHJlY3RvIHwgdmVyc28gfCBhdm9pZC1jb2x1bW4gfCBjb2x1bW4gfCBhdm9pZC1yZWdpb24gfCByZWdpb24iLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYnJlYWstYWZ0ZXIifV0sZGVzY3JpcHRpb246IkRlc2NyaWJlcyB0aGUgcGFnZS9jb2x1bW4vcmVnaW9uIGJyZWFrIGJlaGF2aW9yIGFmdGVyIHRoZSBnZW5lcmF0ZWQgYm94LiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiYnJlYWstYmVmb3JlIixicm93c2VyczpbIkUxMiIsIkZGNjUiLCJTMTAiLCJDNTAiLCJJRTEwIiwiTzM3Il0sdmFsdWVzOlt7bmFtZToiYWx3YXlzIixkZXNjcmlwdGlvbjoiQWx3YXlzIGZvcmNlIGEgcGFnZSBicmVhayBiZWZvcmUvYWZ0ZXIgdGhlIGdlbmVyYXRlZCBib3guIn0se25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJOZWl0aGVyIGZvcmNlIG5vciBmb3JiaWQgYSBwYWdlL2NvbHVtbiBicmVhayBiZWZvcmUvYWZ0ZXIgdGhlIHByaW5jaXBhbCBib3guIn0se25hbWU6ImF2b2lkIixkZXNjcmlwdGlvbjoiQXZvaWQgYSBicmVhayBiZWZvcmUvYWZ0ZXIgdGhlIHByaW5jaXBhbCBib3guIn0se25hbWU6ImF2b2lkLWNvbHVtbiIsZGVzY3JpcHRpb246IkF2b2lkIGEgY29sdW1uIGJyZWFrIGJlZm9yZS9hZnRlciB0aGUgcHJpbmNpcGFsIGJveC4ifSx7bmFtZToiYXZvaWQtcGFnZSIsZGVzY3JpcHRpb246IkF2b2lkIGEgcGFnZSBicmVhayBiZWZvcmUvYWZ0ZXIgdGhlIHByaW5jaXBhbCBib3guIn0se25hbWU6ImNvbHVtbiIsZGVzY3JpcHRpb246IkFsd2F5cyBmb3JjZSBhIGNvbHVtbiBicmVhayBiZWZvcmUvYWZ0ZXIgdGhlIHByaW5jaXBhbCBib3guIn0se25hbWU6ImxlZnQiLGRlc2NyaXB0aW9uOiJGb3JjZSBvbmUgb3IgdHdvIHBhZ2UgYnJlYWtzIGJlZm9yZS9hZnRlciB0aGUgZ2VuZXJhdGVkIGJveCBzbyB0aGF0IHRoZSBuZXh0IHBhZ2UgaXMgZm9ybWF0dGVkIGFzIGEgbGVmdCBwYWdlLiJ9LHtuYW1lOiJwYWdlIixkZXNjcmlwdGlvbjoiQWx3YXlzIGZvcmNlIGEgcGFnZSBicmVhayBiZWZvcmUvYWZ0ZXIgdGhlIHByaW5jaXBhbCBib3guIn0se25hbWU6InJpZ2h0IixkZXNjcmlwdGlvbjoiRm9yY2Ugb25lIG9yIHR3byBwYWdlIGJyZWFrcyBiZWZvcmUvYWZ0ZXIgdGhlIGdlbmVyYXRlZCBib3ggc28gdGhhdCB0aGUgbmV4dCBwYWdlIGlzIGZvcm1hdHRlZCBhcyBhIHJpZ2h0IHBhZ2UuIn1dLHN5bnRheDoiYXV0byB8IGF2b2lkIHwgYWx3YXlzIHwgYWxsIHwgYXZvaWQtcGFnZSB8IHBhZ2UgfCBsZWZ0IHwgcmlnaHQgfCByZWN0byB8IHZlcnNvIHwgYXZvaWQtY29sdW1uIHwgY29sdW1uIHwgYXZvaWQtcmVnaW9uIHwgcmVnaW9uIixyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JyZWFrLWJlZm9yZSJ9XSxkZXNjcmlwdGlvbjoiRGVzY3JpYmVzIHRoZSBwYWdlL2NvbHVtbi9yZWdpb24gYnJlYWsgYmVoYXZpb3IgYmVmb3JlIHRoZSBnZW5lcmF0ZWQgYm94LiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiYnJlYWstaW5zaWRlIixicm93c2VyczpbIkUxMiIsIkZGNjUiLCJTMTAiLCJDNTAiLCJJRTEwIiwiTzM3Il0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IkltcG9zZSBubyBhZGRpdGlvbmFsIGJyZWFraW5nIGNvbnN0cmFpbnRzIHdpdGhpbiB0aGUgYm94LiJ9LHtuYW1lOiJhdm9pZCIsZGVzY3JpcHRpb246IkF2b2lkIGJyZWFrcyB3aXRoaW4gdGhlIGJveC4ifSx7bmFtZToiYXZvaWQtY29sdW1uIixkZXNjcmlwdGlvbjoiQXZvaWQgYSBjb2x1bW4gYnJlYWsgd2l0aGluIHRoZSBib3guIn0se25hbWU6ImF2b2lkLXBhZ2UiLGRlc2NyaXB0aW9uOiJBdm9pZCBhIHBhZ2UgYnJlYWsgd2l0aGluIHRoZSBib3guIn1dLHN5bnRheDoiYXV0byB8IGF2b2lkIHwgYXZvaWQtcGFnZSB8IGF2b2lkLWNvbHVtbiB8IGF2b2lkLXJlZ2lvbiIscmVsZXZhbmNlOjUxLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9icmVhay1pbnNpZGUifV0sZGVzY3JpcHRpb246IkRlc2NyaWJlcyB0aGUgcGFnZS9jb2x1bW4vcmVnaW9uIGJyZWFrIGJlaGF2aW9yIGluc2lkZSB0aGUgcHJpbmNpcGFsIGJveC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6ImNhcHRpb24tc2lkZSIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMSIsIkMxIiwiSUU4IiwiTzQiXSx2YWx1ZXM6W3tuYW1lOiJib3R0b20iLGRlc2NyaXB0aW9uOiJQb3NpdGlvbnMgdGhlIGNhcHRpb24gYm94IGJlbG93IHRoZSB0YWJsZSBib3guIn0se25hbWU6InRvcCIsZGVzY3JpcHRpb246IlBvc2l0aW9ucyB0aGUgY2FwdGlvbiBib3ggYWJvdmUgdGhlIHRhYmxlIGJveC4ifV0sc3ludGF4OiJ0b3AgfCBib3R0b20gfCBibG9jay1zdGFydCB8IGJsb2NrLWVuZCB8IGlubGluZS1zdGFydCB8IGlubGluZS1lbmQiLHJlbGV2YW5jZTo1MixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvY2FwdGlvbi1zaWRlIn1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhlIHBvc2l0aW9uIG9mIHRoZSBjYXB0aW9uIGJveCB3aXRoIHJlc3BlY3QgdG8gdGhlIHRhYmxlIGJveC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6ImNhcmV0LWNvbG9yIixicm93c2VyczpbIkU3OSIsIkZGNTMiLCJTMTEuMSIsIkM1NyIsIk80NCJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJUaGUgdXNlciBhZ2VudCBzZWxlY3RzIGFuIGFwcHJvcHJpYXRlIGNvbG9yIGZvciB0aGUgY2FyZXQuIFRoaXMgaXMgZ2VuZXJhbGx5IGN1cnJlbnRjb2xvciwgYnV0IHRoZSB1c2VyIGFnZW50IG1heSBjaG9vc2UgYSBkaWZmZXJlbnQgY29sb3IgdG8gZW5zdXJlIGdvb2QgdmlzaWJpbGl0eSBhbmQgY29udHJhc3Qgd2l0aCB0aGUgc3Vycm91bmRpbmcgY29udGVudCwgdGFraW5nIGludG8gYWNjb3VudCB0aGUgdmFsdWUgb2YgY3VycmVudGNvbG9yLCB0aGUgYmFja2dyb3VuZCwgc2hhZG93cywgYW5kIG90aGVyIGZhY3RvcnMuIn1dLHN5bnRheDoiYXV0byB8IDxjb2xvcj4iLHJlbGV2YW5jZTo1MyxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvY2FyZXQtY29sb3IifV0sZGVzY3JpcHRpb246IkNvbnRyb2xzIHRoZSBjb2xvciBvZiB0aGUgdGV4dCBpbnNlcnRpb24gaW5kaWNhdG9yLiIscmVzdHJpY3Rpb25zOlsiY29sb3IiLCJlbnVtIl19LHtuYW1lOiJjbGVhciIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMSIsIkMxIiwiSUU0IiwiTzMuNSJdLHZhbHVlczpbe25hbWU6ImJvdGgiLGRlc2NyaXB0aW9uOiJUaGUgY2xlYXJhbmNlIG9mIHRoZSBnZW5lcmF0ZWQgYm94IGlzIHNldCB0byB0aGUgYW1vdW50IG5lY2Vzc2FyeSB0byBwbGFjZSB0aGUgdG9wIGJvcmRlciBlZGdlIGJlbG93IHRoZSBib3R0b20gb3V0ZXIgZWRnZSBvZiBhbnkgcmlnaHQtZmxvYXRpbmcgYW5kIGxlZnQtZmxvYXRpbmcgYm94ZXMgdGhhdCByZXN1bHRlZCBmcm9tIGVsZW1lbnRzIGVhcmxpZXIgaW4gdGhlIHNvdXJjZSBkb2N1bWVudC4ifSx7bmFtZToibGVmdCIsZGVzY3JpcHRpb246IlRoZSBjbGVhcmFuY2Ugb2YgdGhlIGdlbmVyYXRlZCBib3ggaXMgc2V0IHRvIHRoZSBhbW91bnQgbmVjZXNzYXJ5IHRvIHBsYWNlIHRoZSB0b3AgYm9yZGVyIGVkZ2UgYmVsb3cgdGhlIGJvdHRvbSBvdXRlciBlZGdlIG9mIGFueSBsZWZ0LWZsb2F0aW5nIGJveGVzIHRoYXQgcmVzdWx0ZWQgZnJvbSBlbGVtZW50cyBlYXJsaWVyIGluIHRoZSBzb3VyY2UgZG9jdW1lbnQuIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJObyBjb25zdHJhaW50IG9uIHRoZSBib3gncyBwb3NpdGlvbiB3aXRoIHJlc3BlY3QgdG8gZmxvYXRzLiJ9LHtuYW1lOiJyaWdodCIsZGVzY3JpcHRpb246IlRoZSBjbGVhcmFuY2Ugb2YgdGhlIGdlbmVyYXRlZCBib3ggaXMgc2V0IHRvIHRoZSBhbW91bnQgbmVjZXNzYXJ5IHRvIHBsYWNlIHRoZSB0b3AgYm9yZGVyIGVkZ2UgYmVsb3cgdGhlIGJvdHRvbSBvdXRlciBlZGdlIG9mIGFueSByaWdodC1mbG9hdGluZyBib3hlcyB0aGF0IHJlc3VsdGVkIGZyb20gZWxlbWVudHMgZWFybGllciBpbiB0aGUgc291cmNlIGRvY3VtZW50LiJ9XSxzeW50YXg6Im5vbmUgfCBsZWZ0IHwgcmlnaHQgfCBib3RoIHwgaW5saW5lLXN0YXJ0IHwgaW5saW5lLWVuZCIscmVsZXZhbmNlOjgzLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9jbGVhciJ9XSxkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHdoaWNoIHNpZGVzIG9mIGFuIGVsZW1lbnQncyBib3goZXMpIG1heSBub3QgYmUgYWRqYWNlbnQgdG8gYW4gZWFybGllciBmbG9hdGluZyBib3guIFRoZSAnY2xlYXInIHByb3BlcnR5IGRvZXMgbm90IGNvbnNpZGVyIGZsb2F0cyBpbnNpZGUgdGhlIGVsZW1lbnQgaXRzZWxmIG9yIGluIG90aGVyIGJsb2NrIGZvcm1hdHRpbmcgY29udGV4dHMuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJjbGlwIixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxIiwiQzEiLCJJRTQiLCJPNyJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJUaGUgZWxlbWVudCBkb2VzIG5vdCBjbGlwLiJ9LHtuYW1lOiJyZWN0KCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgb2Zmc2V0cyBmcm9tIHRoZSBlZGdlcyBvZiB0aGUgYm9yZGVyIGJveC4ifV0sc3ludGF4OiI8c2hhcGU+IHwgYXV0byIscmVsZXZhbmNlOjc0LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9jbGlwIn1dLGRlc2NyaXB0aW9uOiJEZXByZWNhdGVkLiBVc2UgdGhlICdjbGlwLXBhdGgnIHByb3BlcnR5IHdoZW4gc3VwcG9ydCBhbGxvd3MuIERlZmluZXMgdGhlIHZpc2libGUgcG9ydGlvbiBvZiBhbiBlbGVtZW50J3MgYm94LiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiY2xpcC1wYXRoIixicm93c2VyczpbIkU3OSIsIkZGMy41IiwiUzkuMSIsIkM1NSIsIklFMTAiLCJPNDIiXSx2YWx1ZXM6W3tuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiTm8gY2xpcHBpbmcgcGF0aCBnZXRzIGNyZWF0ZWQuIn0se25hbWU6InVybCgpIixkZXNjcmlwdGlvbjoiUmVmZXJlbmNlcyBhIDxjbGlwUGF0aD4gZWxlbWVudCB0byBjcmVhdGUgYSBjbGlwcGluZyBwYXRoLiJ9XSxzeW50YXg6IjxjbGlwLXNvdXJjZT4gfCBbIDxiYXNpYy1zaGFwZT4gfHwgPGdlb21ldHJ5LWJveD4gXSB8IG5vbmUiLHJlbGV2YW5jZTo2NCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvY2xpcC1wYXRoIn1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSBjbGlwcGluZyBwYXRoIHdoZXJlIGV2ZXJ5dGhpbmcgaW5zaWRlIHRoZSBwYXRoIGlzIHZpc2libGUgYW5kIGV2ZXJ5dGhpbmcgb3V0c2lkZSBpcyBjbGlwcGVkIG91dC4iLHJlc3RyaWN0aW9uczpbInVybCIsInNoYXBlIiwiZ2VvbWV0cnktYm94IiwiZW51bSJdfSx7bmFtZToiY2xpcC1ydWxlIixicm93c2VyczpbIkU4MCIsIkZGNzIiLCJTMTMuMSIsIkM4MCIsIk82NyJdLHZhbHVlczpbe25hbWU6ImV2ZW5vZGQiLGRlc2NyaXB0aW9uOiJEZXRlcm1pbmVzIHRoZSAnaW5zaWRlbmVzcycgb2YgYSBwb2ludCBvbiB0aGUgY2FudmFzIGJ5IGRyYXdpbmcgYSByYXkgZnJvbSB0aGF0IHBvaW50IHRvIGluZmluaXR5IGluIGFueSBkaXJlY3Rpb24gYW5kIGNvdW50aW5nIHRoZSBudW1iZXIgb2YgcGF0aCBzZWdtZW50cyBmcm9tIHRoZSBnaXZlbiBzaGFwZSB0aGF0IHRoZSByYXkgY3Jvc3Nlcy4ifSx7bmFtZToibm9uemVybyIsZGVzY3JpcHRpb246IkRldGVybWluZXMgdGhlICdpbnNpZGVuZXNzJyBvZiBhIHBvaW50IG9uIHRoZSBjYW52YXMgYnkgZHJhd2luZyBhIHJheSBmcm9tIHRoYXQgcG9pbnQgdG8gaW5maW5pdHkgaW4gYW55IGRpcmVjdGlvbiBhbmQgdGhlbiBleGFtaW5pbmcgdGhlIHBsYWNlcyB3aGVyZSBhIHNlZ21lbnQgb2YgdGhlIHNoYXBlIGNyb3NzZXMgdGhlIHJheS4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhlIGFsZ29yaXRobSB3aGljaCBpcyB0byBiZSB1c2VkIHRvIGRldGVybWluZSB3aGF0IHBhcnRzIG9mIHRoZSBjYW52YXMgYXJlIGluY2x1ZGVkIGluc2lkZSB0aGUgc2hhcGUuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJjb2xvciIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMSIsIkMxIiwiSUUzIiwiTzMuNSJdLHN5bnRheDoiPGNvbG9yPiIscmVsZXZhbmNlOjk0LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9jb2xvciJ9XSxkZXNjcmlwdGlvbjoiU2V0cyB0aGUgY29sb3Igb2YgYW4gZWxlbWVudCdzIHRleHQiLHJlc3RyaWN0aW9uczpbImNvbG9yIl19LHtuYW1lOiJjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnMiLGJyb3dzZXJzOlsiRTgwIiwiRkY3MiIsIlMxMy4xIiwiQzgwIiwiTzY3Il0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IkNvbG9yIG9wZXJhdGlvbnMgYXJlIG5vdCByZXF1aXJlZCB0byBvY2N1ciBpbiBhIHBhcnRpY3VsYXIgY29sb3Igc3BhY2UuIn0se25hbWU6ImxpbmVhclJHQiIsZGVzY3JpcHRpb246IkNvbG9yIG9wZXJhdGlvbnMgc2hvdWxkIG9jY3VyIGluIHRoZSBsaW5lYXJpemVkIFJHQiBjb2xvciBzcGFjZS4ifSx7bmFtZToic1JHQiIsZGVzY3JpcHRpb246IkNvbG9yIG9wZXJhdGlvbnMgc2hvdWxkIG9jY3VyIGluIHRoZSBzUkdCIGNvbG9yIHNwYWNlLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgY29sb3Igc3BhY2UgZm9yIGltYWdpbmcgb3BlcmF0aW9ucyBwZXJmb3JtZWQgdmlhIGZpbHRlciBlZmZlY3RzLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiY29sdW1uLWNvdW50Iixicm93c2VyczpbIkUxMiIsIkZGNTIiLCJTOSIsIkM1MCIsIklFMTAiLCJPMTEuMSJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJEZXRlcm1pbmVzIHRoZSBudW1iZXIgb2YgY29sdW1ucyBieSB0aGUgJ2NvbHVtbi13aWR0aCcgcHJvcGVydHkgYW5kIHRoZSBlbGVtZW50IHdpZHRoLiJ9XSxzeW50YXg6IjxpbnRlZ2VyPiB8IGF1dG8iLHJlbGV2YW5jZTo1MyxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvY29sdW1uLWNvdW50In1dLGRlc2NyaXB0aW9uOiJEZXNjcmliZXMgdGhlIG9wdGltYWwgbnVtYmVyIG9mIGNvbHVtbnMgaW50byB3aGljaCB0aGUgY29udGVudCBvZiB0aGUgZWxlbWVudCB3aWxsIGJlIGZsb3dlZC4iLHJlc3RyaWN0aW9uczpbImludGVnZXIiLCJlbnVtIl19LHtuYW1lOiJjb2x1bW4tZmlsbCIsYnJvd3NlcnM6WyJFMTIiLCJGRjUyIiwiUzkiLCJDNTAiLCJJRTEwIiwiTzM3Il0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IkZpbGxzIGNvbHVtbnMgc2VxdWVudGlhbGx5LiJ9LHtuYW1lOiJiYWxhbmNlIixkZXNjcmlwdGlvbjoiQmFsYW5jZSBjb250ZW50IGVxdWFsbHkgYmV0d2VlbiBjb2x1bW5zLCBpZiBwb3NzaWJsZS4ifV0sc3ludGF4OiJhdXRvIHwgYmFsYW5jZSB8IGJhbGFuY2UtYWxsIixyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2NvbHVtbi1maWxsIn1dLGRlc2NyaXB0aW9uOiJJbiBjb250aW51b3VzIG1lZGlhLCB0aGlzIHByb3BlcnR5IHdpbGwgb25seSBiZSBjb25zdWx0ZWQgaWYgdGhlIGxlbmd0aCBvZiBjb2x1bW5zIGhhcyBiZWVuIGNvbnN0cmFpbmVkLiBPdGhlcndpc2UsIGNvbHVtbnMgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGJhbGFuY2VkLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiY29sdW1uLWdhcCIsYnJvd3NlcnM6WyJFMTIiLCJGRjEuNSIsIlMzIiwiQzEiLCJJRTEwIiwiTzExLjEiXSx2YWx1ZXM6W3tuYW1lOiJub3JtYWwiLGRlc2NyaXB0aW9uOiJVc2VyIGFnZW50IHNwZWNpZmljIGFuZCB0eXBpY2FsbHkgZXF1aXZhbGVudCB0byAxZW0uIn1dLHN5bnRheDoibm9ybWFsIHwgPGxlbmd0aC1wZXJjZW50YWdlPiIscmVsZXZhbmNlOjYwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9jb2x1bW4tZ2FwIn1dLGRlc2NyaXB0aW9uOiJTZXRzIHRoZSBnYXAgYmV0d2VlbiBjb2x1bW5zLiBJZiB0aGVyZSBpcyBhIGNvbHVtbiBydWxlIGJldHdlZW4gY29sdW1ucywgaXQgd2lsbCBhcHBlYXIgaW4gdGhlIG1pZGRsZSBvZiB0aGUgZ2FwLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwiZW51bSJdfSx7bmFtZToiY29sdW1uLXJ1bGUiLGJyb3dzZXJzOlsiRTEyIiwiRkY1MiIsIlM5IiwiQzUwIiwiSUUxMCIsIk8xMS4xIl0sc3ludGF4OiI8J2NvbHVtbi1ydWxlLXdpZHRoJz4gfHwgPCdjb2x1bW4tcnVsZS1zdHlsZSc+IHx8IDwnY29sdW1uLXJ1bGUtY29sb3InPiIscmVsZXZhbmNlOjUxLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9jb2x1bW4tcnVsZSJ9XSxkZXNjcmlwdGlvbjoiU2hvcnRoYW5kIGZvciBzZXR0aW5nICdjb2x1bW4tcnVsZS13aWR0aCcsICdjb2x1bW4tcnVsZS1zdHlsZScsIGFuZCAnY29sdW1uLXJ1bGUtY29sb3InIGF0IHRoZSBzYW1lIHBsYWNlIGluIHRoZSBzdHlsZSBzaGVldC4gT21pdHRlZCB2YWx1ZXMgYXJlIHNldCB0byB0aGVpciBpbml0aWFsIHZhbHVlcy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsImxpbmUtd2lkdGgiLCJsaW5lLXN0eWxlIiwiY29sb3IiXX0se25hbWU6ImNvbHVtbi1ydWxlLWNvbG9yIixicm93c2VyczpbIkUxMiIsIkZGNTIiLCJTOSIsIkM1MCIsIklFMTAiLCJPMTEuMSJdLHN5bnRheDoiPGNvbG9yPiIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9jb2x1bW4tcnVsZS1jb2xvciJ9XSxkZXNjcmlwdGlvbjoiU2V0cyB0aGUgY29sb3Igb2YgdGhlIGNvbHVtbiBydWxlIixyZXN0cmljdGlvbnM6WyJjb2xvciJdfSx7bmFtZToiY29sdW1uLXJ1bGUtc3R5bGUiLGJyb3dzZXJzOlsiRTEyIiwiRkY1MiIsIlM5IiwiQzUwIiwiSUUxMCIsIk8xMS4xIl0sc3ludGF4OiI8J2JvcmRlci1zdHlsZSc+IixyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2NvbHVtbi1ydWxlLXN0eWxlIn1dLGRlc2NyaXB0aW9uOiJTZXRzIHRoZSBzdHlsZSBvZiB0aGUgcnVsZSBiZXR3ZWVuIGNvbHVtbnMgb2YgYW4gZWxlbWVudC4iLHJlc3RyaWN0aW9uczpbImxpbmUtc3R5bGUiXX0se25hbWU6ImNvbHVtbi1ydWxlLXdpZHRoIixicm93c2VyczpbIkUxMiIsIkZGNTIiLCJTOSIsIkM1MCIsIklFMTAiLCJPMTEuMSJdLHN5bnRheDoiPCdib3JkZXItd2lkdGgnPiIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9jb2x1bW4tcnVsZS13aWR0aCJ9XSxkZXNjcmlwdGlvbjoiU2V0cyB0aGUgd2lkdGggb2YgdGhlIHJ1bGUgYmV0d2VlbiBjb2x1bW5zLiBOZWdhdGl2ZSB2YWx1ZXMgYXJlIG5vdCBhbGxvd2VkLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwibGluZS13aWR0aCJdfSx7bmFtZToiY29sdW1ucyIsYnJvd3NlcnM6WyJFMTIiLCJGRjUyIiwiUzkiLCJDNTAiLCJJRTEwIiwiTzExLjEiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiVGhlIHdpZHRoIGRlcGVuZHMgb24gdGhlIHZhbHVlcyBvZiBvdGhlciBwcm9wZXJ0aWVzLiJ9XSxzeW50YXg6IjwnY29sdW1uLXdpZHRoJz4gfHwgPCdjb2x1bW4tY291bnQnPiIscmVsZXZhbmNlOjUxLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9jb2x1bW5zIn1dLGRlc2NyaXB0aW9uOiJBIHNob3J0aGFuZCBwcm9wZXJ0eSB3aGljaCBzZXRzIGJvdGggJ2NvbHVtbi13aWR0aCcgYW5kICdjb2x1bW4tY291bnQnLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwiaW50ZWdlciIsImVudW0iXX0se25hbWU6ImNvbHVtbi1zcGFuIixicm93c2VyczpbIkUxMiIsIkZGNzEiLCJTOSIsIkM1MCIsIklFMTAiLCJPMTEuMSJdLHZhbHVlczpbe25hbWU6ImFsbCIsZGVzY3JpcHRpb246IlRoZSBlbGVtZW50IHNwYW5zIGFjcm9zcyBhbGwgY29sdW1ucy4gQ29udGVudCBpbiB0aGUgbm9ybWFsIGZsb3cgdGhhdCBhcHBlYXJzIGJlZm9yZSB0aGUgZWxlbWVudCBpcyBhdXRvbWF0aWNhbGx5IGJhbGFuY2VkIGFjcm9zcyBhbGwgY29sdW1ucyBiZWZvcmUgdGhlIGVsZW1lbnQgYXBwZWFyLiJ9LHtuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiVGhlIGVsZW1lbnQgZG9lcyBub3Qgc3BhbiBtdWx0aXBsZSBjb2x1bW5zLiJ9XSxzeW50YXg6Im5vbmUgfCBhbGwiLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvY29sdW1uLXNwYW4ifV0sZGVzY3JpcHRpb246IkRlc2NyaWJlcyB0aGUgcGFnZS9jb2x1bW4gYnJlYWsgYmVoYXZpb3IgYWZ0ZXIgdGhlIGdlbmVyYXRlZCBib3guIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJjb2x1bW4td2lkdGgiLGJyb3dzZXJzOlsiRTEyIiwiRkY1MCIsIlM5IiwiQzUwIiwiSUUxMCIsIk8xMS4xIl0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IlRoZSB3aWR0aCBkZXBlbmRzIG9uIHRoZSB2YWx1ZXMgb2Ygb3RoZXIgcHJvcGVydGllcy4ifV0sc3ludGF4OiI8bGVuZ3RoPiB8IGF1dG8iLHJlbGV2YW5jZTo1MSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvY29sdW1uLXdpZHRoIn1dLGRlc2NyaXB0aW9uOiJEZXNjcmliZXMgdGhlIHdpZHRoIG9mIGNvbHVtbnMgaW4gbXVsdGljb2wgZWxlbWVudHMuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJlbnVtIl19LHtuYW1lOiJjb250YWluIixicm93c2VyczpbIkU3OSIsIkZGNjkiLCJTMTUuNCIsIkM1MiIsIk8zOSJdLHZhbHVlczpbe25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCB0aGUgcHJvcGVydHkgaGFzIG5vIGVmZmVjdC4ifSx7bmFtZToic3RyaWN0IixkZXNjcmlwdGlvbjoiVHVybnMgb24gYWxsIGZvcm1zIG9mIGNvbnRhaW5tZW50IGZvciB0aGUgZWxlbWVudC4ifSx7bmFtZToiY29udGVudCIsZGVzY3JpcHRpb246IkFsbCBjb250YWlubWVudCBydWxlcyBleGNlcHQgc2l6ZSBhcmUgYXBwbGllZCB0byB0aGUgZWxlbWVudC4ifSx7bmFtZToic2l6ZSIsZGVzY3JpcHRpb246IkZvciBwcm9wZXJ0aWVzIHRoYXQgY2FuIGhhdmUgZWZmZWN0cyBvbiBtb3JlIHRoYW4ganVzdCBhbiBlbGVtZW50IGFuZCBpdHMgZGVzY2VuZGFudHMsIHRob3NlIGVmZmVjdHMgZG9uJ3QgZXNjYXBlIHRoZSBjb250YWluaW5nIGVsZW1lbnQuIn0se25hbWU6ImxheW91dCIsZGVzY3JpcHRpb246IlR1cm5zIG9uIGxheW91dCBjb250YWlubWVudCBmb3IgdGhlIGVsZW1lbnQuIn0se25hbWU6InN0eWxlIixkZXNjcmlwdGlvbjoiVHVybnMgb24gc3R5bGUgY29udGFpbm1lbnQgZm9yIHRoZSBlbGVtZW50LiJ9LHtuYW1lOiJwYWludCIsZGVzY3JpcHRpb246IlR1cm5zIG9uIHBhaW50IGNvbnRhaW5tZW50IGZvciB0aGUgZWxlbWVudC4ifV0sc3ludGF4OiJub25lIHwgc3RyaWN0IHwgY29udGVudCB8IFsgWyBzaXplIHx8IGlubGluZS1zaXplIF0gfHwgbGF5b3V0IHx8IHN0eWxlIHx8IHBhaW50IF0iLHJlbGV2YW5jZTo1OCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvY29udGFpbiJ9XSxkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgYW4gZWxlbWVudCBhbmQgaXRzIGNvbnRlbnRzIGFyZSwgYXMgbXVjaCBhcyBwb3NzaWJsZSwgaW5kZXBlbmRlbnQgb2YgdGhlIHJlc3Qgb2YgdGhlIGRvY3VtZW50IHRyZWUuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJjb250ZW50Iixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxIiwiQzEiLCJJRTgiLCJPNCJdLHZhbHVlczpbe25hbWU6ImF0dHIoKSIsZGVzY3JpcHRpb246IlRoZSBhdHRyKG4pIGZ1bmN0aW9uIHJldHVybnMgYXMgYSBzdHJpbmcgdGhlIHZhbHVlIG9mIGF0dHJpYnV0ZSBuIGZvciB0aGUgc3ViamVjdCBvZiB0aGUgc2VsZWN0b3IuIn0se25hbWU6ImNvdW50ZXIobmFtZSkiLGRlc2NyaXB0aW9uOiJDb3VudGVycyBhcmUgZGVub3RlZCBieSBpZGVudGlmaWVycyAoc2VlIHRoZSAnY291bnRlci1pbmNyZW1lbnQnIGFuZCAnY291bnRlci1yZXNldCcgcHJvcGVydGllcykuIn0se25hbWU6Imljb24iLGRlc2NyaXB0aW9uOiJUaGUgKHBzZXVkby0pZWxlbWVudCBpcyByZXBsYWNlZCBpbiBpdHMgZW50aXJldHkgYnkgdGhlIHJlc291cmNlIHJlZmVyZW5jZWQgYnkgaXRzICdpY29uJyBwcm9wZXJ0eSwgYW5kIHRyZWF0ZWQgYXMgYSByZXBsYWNlZCBlbGVtZW50LiJ9LHtuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiT24gZWxlbWVudHMsIHRoaXMgaW5oaWJpdHMgdGhlIGNoaWxkcmVuIG9mIHRoZSBlbGVtZW50IGZyb20gYmVpbmcgcmVuZGVyZWQgYXMgY2hpbGRyZW4gb2YgdGhpcyBlbGVtZW50LCBhcyBpZiB0aGUgZWxlbWVudCB3YXMgZW1wdHkuIE9uIHBzZXVkby1lbGVtZW50cyBpdCBjYXVzZXMgdGhlIHBzZXVkby1lbGVtZW50IHRvIGhhdmUgbm8gY29udGVudC4ifSx7bmFtZToibm9ybWFsIixkZXNjcmlwdGlvbjoiU2VlIGh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMtY29udGVudC8jY29udGVudCBmb3IgY29tcHV0YXRpb24gcnVsZXMuIn0se25hbWU6InVybCgpIn1dLHN5bnRheDoibm9ybWFsIHwgbm9uZSB8IFsgPGNvbnRlbnQtcmVwbGFjZW1lbnQ+IHwgPGNvbnRlbnQtbGlzdD4gXSBbLyBbIDxzdHJpbmc+IHwgPGNvdW50ZXI+IF0rIF0/IixyZWxldmFuY2U6ODkscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2NvbnRlbnQifV0sZGVzY3JpcHRpb246IkRldGVybWluZXMgd2hpY2ggcGFnZS1iYXNlZCBvY2N1cnJlbmNlIG9mIGEgZ2l2ZW4gZWxlbWVudCBpcyBhcHBsaWVkIHRvIGEgY291bnRlciBvciBzdHJpbmcgdmFsdWUuIixyZXN0cmljdGlvbnM6WyJzdHJpbmciLCJ1cmwiXX0se25hbWU6ImNvdW50ZXItaW5jcmVtZW50Iixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMzIiwiQzIiLCJJRTgiLCJPOS4yIl0sdmFsdWVzOlt7bmFtZToibm9uZSIsZGVzY3JpcHRpb246IlRoaXMgZWxlbWVudCBkb2VzIG5vdCBhbHRlciB0aGUgdmFsdWUgb2YgYW55IGNvdW50ZXJzLiJ9XSxzeW50YXg6IlsgPGNvdW50ZXItbmFtZT4gPGludGVnZXI+PyBdKyB8IG5vbmUiLHJlbGV2YW5jZTo1NCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvY291bnRlci1pbmNyZW1lbnQifV0sZGVzY3JpcHRpb246Ik1hbmlwdWxhdGUgdGhlIHZhbHVlIG9mIGV4aXN0aW5nIGNvdW50ZXJzLiIscmVzdHJpY3Rpb25zOlsiaWRlbnRpZmllciIsImludGVnZXIiXX0se25hbWU6ImNvdW50ZXItcmVzZXQiLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzMiLCJDMiIsIklFOCIsIk85LjIiXSx2YWx1ZXM6W3tuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiVGhlIGNvdW50ZXIgaXMgbm90IG1vZGlmaWVkLiJ9XSxzeW50YXg6IlsgPGNvdW50ZXItbmFtZT4gPGludGVnZXI+PyB8IDxyZXZlcnNlZC1jb3VudGVyLW5hbWU+IDxpbnRlZ2VyPj8gXSsgfCBub25lIixyZWxldmFuY2U6NTQscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2NvdW50ZXItcmVzZXQifV0sZGVzY3JpcHRpb246IlByb3BlcnR5IGFjY2VwdHMgb25lIG9yIG1vcmUgbmFtZXMgb2YgY291bnRlcnMgKGlkZW50aWZpZXJzKSwgZWFjaCBvbmUgb3B0aW9uYWxseSBmb2xsb3dlZCBieSBhbiBpbnRlZ2VyLiBUaGUgaW50ZWdlciBnaXZlcyB0aGUgdmFsdWUgdGhhdCB0aGUgY291bnRlciBpcyBzZXQgdG8gb24gZWFjaCBvY2N1cnJlbmNlIG9mIHRoZSBlbGVtZW50LiIscmVzdHJpY3Rpb25zOlsiaWRlbnRpZmllciIsImludGVnZXIiXX0se25hbWU6ImN1cnNvciIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMS4yIiwiQzEiLCJJRTQiLCJPNyJdLHZhbHVlczpbe25hbWU6ImFsaWFzIixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIGFuIGFsaWFzIG9mL3Nob3J0Y3V0IHRvIHNvbWV0aGluZyBpcyB0byBiZSBjcmVhdGVkLiBPZnRlbiByZW5kZXJlZCBhcyBhbiBhcnJvdyB3aXRoIGEgc21hbGwgY3VydmVkIGFycm93IG5leHQgdG8gaXQuIn0se25hbWU6ImFsbC1zY3JvbGwiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCB0aGUgc29tZXRoaW5nIGNhbiBiZSBzY3JvbGxlZCBpbiBhbnkgZGlyZWN0aW9uLiBPZnRlbiByZW5kZXJlZCBhcyBhcnJvd3MgcG9pbnRpbmcgdXAsIGRvd24sIGxlZnQsIGFuZCByaWdodCB3aXRoIGEgZG90IGluIHRoZSBtaWRkbGUuIn0se25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJUaGUgVUEgZGV0ZXJtaW5lcyB0aGUgY3Vyc29yIHRvIGRpc3BsYXkgYmFzZWQgb24gdGhlIGN1cnJlbnQgY29udGV4dC4ifSx7bmFtZToiY2VsbCIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IGEgY2VsbCBvciBzZXQgb2YgY2VsbHMgbWF5IGJlIHNlbGVjdGVkLiBPZnRlbiByZW5kZXJlZCBhcyBhIHRoaWNrIHBsdXMtc2lnbiB3aXRoIGEgZG90IGluIHRoZSBtaWRkbGUuIn0se25hbWU6ImNvbC1yZXNpemUiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCB0aGUgaXRlbS9jb2x1bW4gY2FuIGJlIHJlc2l6ZWQgaG9yaXpvbnRhbGx5LiBPZnRlbiByZW5kZXJlZCBhcyBhcnJvd3MgcG9pbnRpbmcgbGVmdCBhbmQgcmlnaHQgd2l0aCBhIHZlcnRpY2FsIGJhciBzZXBhcmF0aW5nIHRoZW0uIn0se25hbWU6ImNvbnRleHQtbWVudSIsZGVzY3JpcHRpb246IkEgY29udGV4dCBtZW51IGlzIGF2YWlsYWJsZSBmb3IgdGhlIG9iamVjdCB1bmRlciB0aGUgY3Vyc29yLiBPZnRlbiByZW5kZXJlZCBhcyBhbiBhcnJvdyB3aXRoIGEgc21hbGwgbWVudS1saWtlIGdyYXBoaWMgbmV4dCB0byBpdC4ifSx7bmFtZToiY29weSIsZGVzY3JpcHRpb246IkluZGljYXRlcyBzb21ldGhpbmcgaXMgdG8gYmUgY29waWVkLiBPZnRlbiByZW5kZXJlZCBhcyBhbiBhcnJvdyB3aXRoIGEgc21hbGwgcGx1cyBzaWduIG5leHQgdG8gaXQuIn0se25hbWU6ImNyb3NzaGFpciIsZGVzY3JpcHRpb246IkEgc2ltcGxlIGNyb3NzaGFpciAoZS5nLiwgc2hvcnQgbGluZSBzZWdtZW50cyByZXNlbWJsaW5nIGEgJysnIHNpZ24pLiBPZnRlbiB1c2VkIHRvIGluZGljYXRlIGEgdHdvIGRpbWVuc2lvbmFsIGJpdG1hcCBzZWxlY3Rpb24gbW9kZS4ifSx7bmFtZToiZGVmYXVsdCIsZGVzY3JpcHRpb246IlRoZSBwbGF0Zm9ybS1kZXBlbmRlbnQgZGVmYXVsdCBjdXJzb3IuIE9mdGVuIHJlbmRlcmVkIGFzIGFuIGFycm93LiJ9LHtuYW1lOiJlLXJlc2l6ZSIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IGVhc3QgZWRnZSBpcyB0byBiZSBtb3ZlZC4ifSx7bmFtZToiZXctcmVzaXplIixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIGEgYmlkaXJlY3Rpb25hbCBlYXN0LXdlc3QgcmVzaXplIGN1cnNvci4ifSx7bmFtZToiZ3JhYiIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMS4yIiwiQzEiLCJJRTQiLCJPNyJdLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCBzb21ldGhpbmcgY2FuIGJlIGdyYWJiZWQuIn0se25hbWU6ImdyYWJiaW5nIixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxLjIiLCJDMSIsIklFNCIsIk83Il0sZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IHNvbWV0aGluZyBpcyBiZWluZyBncmFiYmVkLiJ9LHtuYW1lOiJoZWxwIixkZXNjcmlwdGlvbjoiSGVscCBpcyBhdmFpbGFibGUgZm9yIHRoZSBvYmplY3QgdW5kZXIgdGhlIGN1cnNvci4gT2Z0ZW4gcmVuZGVyZWQgYXMgYSBxdWVzdGlvbiBtYXJrIG9yIGEgYmFsbG9vbi4ifSx7bmFtZToibW92ZSIsZGVzY3JpcHRpb246IkluZGljYXRlcyBzb21ldGhpbmcgaXMgdG8gYmUgbW92ZWQuIn0se25hbWU6Ii1tb3otZ3JhYiIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMS4yIiwiQzEiLCJJRTQiLCJPNyJdLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCBzb21ldGhpbmcgY2FuIGJlIGdyYWJiZWQuIn0se25hbWU6Ii1tb3otZ3JhYmJpbmciLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzEuMiIsIkMxIiwiSUU0IiwiTzciXSxkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgc29tZXRoaW5nIGlzIGJlaW5nIGdyYWJiZWQuIn0se25hbWU6Ii1tb3otem9vbS1pbiIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMS4yIiwiQzEiLCJJRTQiLCJPNyJdLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCBzb21ldGhpbmcgY2FuIGJlIHpvb21lZCAobWFnbmlmaWVkKSBpbi4ifSx7bmFtZToiLW1vei16b29tLW91dCIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMS4yIiwiQzEiLCJJRTQiLCJPNyJdLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCBzb21ldGhpbmcgY2FuIGJlIHpvb21lZCAobWFnbmlmaWVkKSBvdXQuIn0se25hbWU6Im5lLXJlc2l6ZSIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IG1vdmVtZW50IHN0YXJ0cyBmcm9tIG5vcnRoLWVhc3QgY29ybmVyLiJ9LHtuYW1lOiJuZXN3LXJlc2l6ZSIsZGVzY3JpcHRpb246IkluZGljYXRlcyBhIGJpZGlyZWN0aW9uYWwgbm9ydGgtZWFzdC9zb3V0aC13ZXN0IGN1cnNvci4ifSx7bmFtZToibm8tZHJvcCIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IHRoZSBkcmFnZ2VkIGl0ZW0gY2Fubm90IGJlIGRyb3BwZWQgYXQgdGhlIGN1cnJlbnQgY3Vyc29yIGxvY2F0aW9uLiBPZnRlbiByZW5kZXJlZCBhcyBhIGhhbmQgb3IgcG9pbnRlciB3aXRoIGEgc21hbGwgY2lyY2xlIHdpdGggYSBsaW5lIHRocm91Z2ggaXQuIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJObyBjdXJzb3IgaXMgcmVuZGVyZWQgZm9yIHRoZSBlbGVtZW50LiJ9LHtuYW1lOiJub3QtYWxsb3dlZCIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IHRoZSByZXF1ZXN0ZWQgYWN0aW9uIHdpbGwgbm90IGJlIGNhcnJpZWQgb3V0LiBPZnRlbiByZW5kZXJlZCBhcyBhIGNpcmNsZSB3aXRoIGEgbGluZSB0aHJvdWdoIGl0LiJ9LHtuYW1lOiJuLXJlc2l6ZSIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IG5vcnRoIGVkZ2UgaXMgdG8gYmUgbW92ZWQuIn0se25hbWU6Im5zLXJlc2l6ZSIsZGVzY3JpcHRpb246IkluZGljYXRlcyBhIGJpZGlyZWN0aW9uYWwgbm9ydGgtc291dGggY3Vyc29yLiJ9LHtuYW1lOiJudy1yZXNpemUiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCBtb3ZlbWVudCBzdGFydHMgZnJvbSBub3J0aC13ZXN0IGNvcm5lci4ifSx7bmFtZToibndzZS1yZXNpemUiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgYSBiaWRpcmVjdGlvbmFsIG5vcnRoLXdlc3Qvc291dGgtZWFzdCBjdXJzb3IuIn0se25hbWU6InBvaW50ZXIiLGRlc2NyaXB0aW9uOiJUaGUgY3Vyc29yIGlzIGEgcG9pbnRlciB0aGF0IGluZGljYXRlcyBhIGxpbmsuIn0se25hbWU6InByb2dyZXNzIixkZXNjcmlwdGlvbjoiQSBwcm9ncmVzcyBpbmRpY2F0b3IuIFRoZSBwcm9ncmFtIGlzIHBlcmZvcm1pbmcgc29tZSBwcm9jZXNzaW5nLCBidXQgaXMgZGlmZmVyZW50IGZyb20gJ3dhaXQnIGluIHRoYXQgdGhlIHVzZXIgbWF5IHN0aWxsIGludGVyYWN0IHdpdGggdGhlIHByb2dyYW0uIE9mdGVuIHJlbmRlcmVkIGFzIGEgc3Bpbm5pbmcgYmVhY2ggYmFsbCwgb3IgYW4gYXJyb3cgd2l0aCBhIHdhdGNoIG9yIGhvdXJnbGFzcy4ifSx7bmFtZToicm93LXJlc2l6ZSIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IHRoZSBpdGVtL3JvdyBjYW4gYmUgcmVzaXplZCB2ZXJ0aWNhbGx5LiBPZnRlbiByZW5kZXJlZCBhcyBhcnJvd3MgcG9pbnRpbmcgdXAgYW5kIGRvd24gd2l0aCBhIGhvcml6b250YWwgYmFyIHNlcGFyYXRpbmcgdGhlbS4ifSx7bmFtZToic2UtcmVzaXplIixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgbW92ZW1lbnQgc3RhcnRzIGZyb20gc291dGgtZWFzdCBjb3JuZXIuIn0se25hbWU6InMtcmVzaXplIixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgc291dGggZWRnZSBpcyB0byBiZSBtb3ZlZC4ifSx7bmFtZToic3ctcmVzaXplIixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgbW92ZW1lbnQgc3RhcnRzIGZyb20gc291dGgtd2VzdCBjb3JuZXIuIn0se25hbWU6InRleHQiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGV4dCB0aGF0IG1heSBiZSBzZWxlY3RlZC4gT2Z0ZW4gcmVuZGVyZWQgYXMgYSB2ZXJ0aWNhbCBJLWJlYW0uIn0se25hbWU6InZlcnRpY2FsLXRleHQiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdmVydGljYWwtdGV4dCB0aGF0IG1heSBiZSBzZWxlY3RlZC4gT2Z0ZW4gcmVuZGVyZWQgYXMgYSBob3Jpem9udGFsIEktYmVhbS4ifSx7bmFtZToid2FpdCIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IHRoZSBwcm9ncmFtIGlzIGJ1c3kgYW5kIHRoZSB1c2VyIHNob3VsZCB3YWl0LiBPZnRlbiByZW5kZXJlZCBhcyBhIHdhdGNoIG9yIGhvdXJnbGFzcy4ifSx7bmFtZToiLXdlYmtpdC1ncmFiIixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxLjIiLCJDMSIsIklFNCIsIk83Il0sZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IHNvbWV0aGluZyBjYW4gYmUgZ3JhYmJlZC4ifSx7bmFtZToiLXdlYmtpdC1ncmFiYmluZyIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMS4yIiwiQzEiLCJJRTQiLCJPNyJdLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCBzb21ldGhpbmcgaXMgYmVpbmcgZ3JhYmJlZC4ifSx7bmFtZToiLXdlYmtpdC16b29tLWluIixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxLjIiLCJDMSIsIklFNCIsIk83Il0sZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IHNvbWV0aGluZyBjYW4gYmUgem9vbWVkIChtYWduaWZpZWQpIGluLiJ9LHtuYW1lOiItd2Via2l0LXpvb20tb3V0Iixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxLjIiLCJDMSIsIklFNCIsIk83Il0sZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IHNvbWV0aGluZyBjYW4gYmUgem9vbWVkIChtYWduaWZpZWQpIG91dC4ifSx7bmFtZToidy1yZXNpemUiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCB3ZXN0IGVkZ2UgaXMgdG8gYmUgbW92ZWQuIn0se25hbWU6Inpvb20taW4iLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzEuMiIsIkMxIiwiSUU0IiwiTzciXSxkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgc29tZXRoaW5nIGNhbiBiZSB6b29tZWQgKG1hZ25pZmllZCkgaW4uIn0se25hbWU6Inpvb20tb3V0Iixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxLjIiLCJDMSIsIklFNCIsIk83Il0sZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IHNvbWV0aGluZyBjYW4gYmUgem9vbWVkIChtYWduaWZpZWQpIG91dC4ifV0sc3ludGF4OiJbIFsgPHVybD4gWyA8eD4gPHk+IF0/ICwgXSogWyBhdXRvIHwgZGVmYXVsdCB8IG5vbmUgfCBjb250ZXh0LW1lbnUgfCBoZWxwIHwgcG9pbnRlciB8IHByb2dyZXNzIHwgd2FpdCB8IGNlbGwgfCBjcm9zc2hhaXIgfCB0ZXh0IHwgdmVydGljYWwtdGV4dCB8IGFsaWFzIHwgY29weSB8IG1vdmUgfCBuby1kcm9wIHwgbm90LWFsbG93ZWQgfCBlLXJlc2l6ZSB8IG4tcmVzaXplIHwgbmUtcmVzaXplIHwgbnctcmVzaXplIHwgcy1yZXNpemUgfCBzZS1yZXNpemUgfCBzdy1yZXNpemUgfCB3LXJlc2l6ZSB8IGV3LXJlc2l6ZSB8IG5zLXJlc2l6ZSB8IG5lc3ctcmVzaXplIHwgbndzZS1yZXNpemUgfCBjb2wtcmVzaXplIHwgcm93LXJlc2l6ZSB8IGFsbC1zY3JvbGwgfCB6b29tLWluIHwgem9vbS1vdXQgfCBncmFiIHwgZ3JhYmJpbmcgXSBdIixyZWxldmFuY2U6OTEscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2N1cnNvciJ9XSxkZXNjcmlwdGlvbjoiQWxsb3dzIGNvbnRyb2wgb3ZlciBjdXJzb3IgYXBwZWFyYW5jZSBpbiBhbiBlbGVtZW50IixyZXN0cmljdGlvbnM6WyJ1cmwiLCJudW1iZXIiLCJlbnVtIl19LHtuYW1lOiJkaXJlY3Rpb24iLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzEiLCJDMiIsIklFNS41IiwiTzkuMiJdLHZhbHVlczpbe25hbWU6Imx0ciIsZGVzY3JpcHRpb246IkxlZnQtdG8tcmlnaHQgZGlyZWN0aW9uLiJ9LHtuYW1lOiJydGwiLGRlc2NyaXB0aW9uOiJSaWdodC10by1sZWZ0IGRpcmVjdGlvbi4ifV0sc3ludGF4OiJsdHIgfCBydGwiLHJlbGV2YW5jZTo3MSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvZGlyZWN0aW9uIn1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhlIGlubGluZSBiYXNlIGRpcmVjdGlvbiBvciBkaXJlY3Rpb25hbGl0eSBvZiBhbnkgYmlkaSBwYXJhZ3JhcGgsIGVtYmVkZGluZywgaXNvbGF0ZSwgb3Igb3ZlcnJpZGUgZXN0YWJsaXNoZWQgYnkgdGhlIGJveC4gTm90ZTogZm9yIEhUTUwgY29udGVudCB1c2UgdGhlICdkaXInIGF0dHJpYnV0ZSBhbmQgJ2JkbycgZWxlbWVudCByYXRoZXIgdGhhbiB0aGlzIHByb3BlcnR5LiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiZGlzcGxheSIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMSIsIkMxIiwiSUU0IiwiTzciXSx2YWx1ZXM6W3tuYW1lOiJibG9jayIsZGVzY3JpcHRpb246IlRoZSBlbGVtZW50IGdlbmVyYXRlcyBhIGJsb2NrLWxldmVsIGJveCJ9LHtuYW1lOiJjb250ZW50cyIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMSIsIkMxIiwiSUU0IiwiTzciXSxkZXNjcmlwdGlvbjoiVGhlIGVsZW1lbnQgaXRzZWxmIGRvZXMgbm90IGdlbmVyYXRlIGFueSBib3hlcywgYnV0IGl0cyBjaGlsZHJlbiBhbmQgcHNldWRvLWVsZW1lbnRzIHN0aWxsIGdlbmVyYXRlIGJveGVzIGFzIG5vcm1hbC4ifSx7bmFtZToiZmxleCIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMSIsIkMxIiwiSUU0IiwiTzciXSxkZXNjcmlwdGlvbjoiVGhlIGVsZW1lbnQgZ2VuZXJhdGVzIGEgcHJpbmNpcGFsIGZsZXggY29udGFpbmVyIGJveCBhbmQgZXN0YWJsaXNoZXMgYSBmbGV4IGZvcm1hdHRpbmcgY29udGV4dC4ifSx7bmFtZToiZmxleGJveCIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMSIsIkMxIiwiSUU0IiwiTzciXSxkZXNjcmlwdGlvbjoiVGhlIGVsZW1lbnQgbGF5cyBvdXQgaXRzIGNvbnRlbnRzIHVzaW5nIGZsb3cgbGF5b3V0IChibG9jay1hbmQtaW5saW5lIGxheW91dCkuIFN0YW5kYXJkaXplZCBhcyAnZmxleCcuIn0se25hbWU6ImZsb3ctcm9vdCIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMSIsIkMxIiwiSUU0IiwiTzciXSxkZXNjcmlwdGlvbjoiVGhlIGVsZW1lbnQgZ2VuZXJhdGVzIGEgYmxvY2sgY29udGFpbmVyIGJveCwgYW5kIGxheXMgb3V0IGl0cyBjb250ZW50cyB1c2luZyBmbG93IGxheW91dC4ifSx7bmFtZToiZ3JpZCIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMSIsIkMxIiwiSUU0IiwiTzciXSxkZXNjcmlwdGlvbjoiVGhlIGVsZW1lbnQgZ2VuZXJhdGVzIGEgcHJpbmNpcGFsIGdyaWQgY29udGFpbmVyIGJveCwgYW5kIGVzdGFibGlzaGVzIGEgZ3JpZCBmb3JtYXR0aW5nIGNvbnRleHQuIn0se25hbWU6ImlubGluZSIsZGVzY3JpcHRpb246IlRoZSBlbGVtZW50IGdlbmVyYXRlcyBhbiBpbmxpbmUtbGV2ZWwgYm94LiJ9LHtuYW1lOiJpbmxpbmUtYmxvY2siLGRlc2NyaXB0aW9uOiJBIGJsb2NrIGJveCwgd2hpY2ggaXRzZWxmIGlzIGZsb3dlZCBhcyBhIHNpbmdsZSBpbmxpbmUgYm94LCBzaW1pbGFyIHRvIGEgcmVwbGFjZWQgZWxlbWVudC4gVGhlIGluc2lkZSBvZiBhbiBpbmxpbmUtYmxvY2sgaXMgZm9ybWF0dGVkIGFzIGEgYmxvY2sgYm94LCBhbmQgdGhlIGJveCBpdHNlbGYgaXMgZm9ybWF0dGVkIGFzIGFuIGlubGluZSBib3guIn0se25hbWU6ImlubGluZS1mbGV4Iixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxIiwiQzEiLCJJRTQiLCJPNyJdLGRlc2NyaXB0aW9uOiJJbmxpbmUtbGV2ZWwgZmxleCBjb250YWluZXIuIn0se25hbWU6ImlubGluZS1mbGV4Ym94Iixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxIiwiQzEiLCJJRTQiLCJPNyJdLGRlc2NyaXB0aW9uOiJJbmxpbmUtbGV2ZWwgZmxleCBjb250YWluZXIuIFN0YW5kYXJkaXplZCBhcyAnaW5saW5lLWZsZXgnIn0se25hbWU6ImlubGluZS10YWJsZSIsZGVzY3JpcHRpb246IklubGluZS1sZXZlbCB0YWJsZSB3cmFwcGVyIGJveCBjb250YWluaW5nIHRhYmxlIGJveC4ifSx7bmFtZToibGlzdC1pdGVtIixkZXNjcmlwdGlvbjoiT25lIG9yIG1vcmUgYmxvY2sgYm94ZXMgYW5kIG9uZSBtYXJrZXIgYm94LiJ9LHtuYW1lOiItbW96LWJveCIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMSIsIkMxIiwiSUU0IiwiTzciXSxkZXNjcmlwdGlvbjoiVGhlIGVsZW1lbnQgbGF5cyBvdXQgaXRzIGNvbnRlbnRzIHVzaW5nIGZsb3cgbGF5b3V0IChibG9jay1hbmQtaW5saW5lIGxheW91dCkuIFN0YW5kYXJkaXplZCBhcyAnZmxleCcuIn0se25hbWU6Ii1tb3otZGVjayIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMSIsIkMxIiwiSUU0IiwiTzciXX0se25hbWU6Ii1tb3otZ3JpZCIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMSIsIkMxIiwiSUU0IiwiTzciXX0se25hbWU6Ii1tb3otZ3JpZC1ncm91cCIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMSIsIkMxIiwiSUU0IiwiTzciXX0se25hbWU6Ii1tb3otZ3JpZC1saW5lIixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxIiwiQzEiLCJJRTQiLCJPNyJdfSx7bmFtZToiLW1vei1ncm91cGJveCIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMSIsIkMxIiwiSUU0IiwiTzciXX0se25hbWU6Ii1tb3otaW5saW5lLWJveCIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMSIsIkMxIiwiSUU0IiwiTzciXSxkZXNjcmlwdGlvbjoiSW5saW5lLWxldmVsIGZsZXggY29udGFpbmVyLiBTdGFuZGFyZGl6ZWQgYXMgJ2lubGluZS1mbGV4JyJ9LHtuYW1lOiItbW96LWlubGluZS1ncmlkIixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxIiwiQzEiLCJJRTQiLCJPNyJdfSx7bmFtZToiLW1vei1pbmxpbmUtc3RhY2siLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzEiLCJDMSIsIklFNCIsIk83Il19LHtuYW1lOiItbW96LW1hcmtlciIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMSIsIkMxIiwiSUU0IiwiTzciXX0se25hbWU6Ii1tb3otcG9wdXAiLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzEiLCJDMSIsIklFNCIsIk83Il19LHtuYW1lOiItbW96LXN0YWNrIixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxIiwiQzEiLCJJRTQiLCJPNyJdfSx7bmFtZToiLW1zLWZsZXhib3giLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzEiLCJDMSIsIklFNCIsIk83Il0sZGVzY3JpcHRpb246IlRoZSBlbGVtZW50IGxheXMgb3V0IGl0cyBjb250ZW50cyB1c2luZyBmbG93IGxheW91dCAoYmxvY2stYW5kLWlubGluZSBsYXlvdXQpLiBTdGFuZGFyZGl6ZWQgYXMgJ2ZsZXgnLiJ9LHtuYW1lOiItbXMtZ3JpZCIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMSIsIkMxIiwiSUU0IiwiTzciXSxkZXNjcmlwdGlvbjoiVGhlIGVsZW1lbnQgZ2VuZXJhdGVzIGEgcHJpbmNpcGFsIGdyaWQgY29udGFpbmVyIGJveCwgYW5kIGVzdGFibGlzaGVzIGEgZ3JpZCBmb3JtYXR0aW5nIGNvbnRleHQuIn0se25hbWU6Ii1tcy1pbmxpbmUtZmxleGJveCIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMSIsIkMxIiwiSUU0IiwiTzciXSxkZXNjcmlwdGlvbjoiSW5saW5lLWxldmVsIGZsZXggY29udGFpbmVyLiBTdGFuZGFyZGl6ZWQgYXMgJ2lubGluZS1mbGV4JyJ9LHtuYW1lOiItbXMtaW5saW5lLWdyaWQiLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzEiLCJDMSIsIklFNCIsIk83Il0sZGVzY3JpcHRpb246IklubGluZS1sZXZlbCBncmlkIGNvbnRhaW5lci4ifSx7bmFtZToibm9uZSIsZGVzY3JpcHRpb246IlRoZSBlbGVtZW50IGFuZCBpdHMgZGVzY2VuZGFudHMgZ2VuZXJhdGVzIG5vIGJveGVzLiJ9LHtuYW1lOiJydWJ5IixkZXNjcmlwdGlvbjoiVGhlIGVsZW1lbnQgZ2VuZXJhdGVzIGEgcHJpbmNpcGFsIHJ1YnkgY29udGFpbmVyIGJveCwgYW5kIGVzdGFibGlzaGVzIGEgcnVieSBmb3JtYXR0aW5nIGNvbnRleHQuIn0se25hbWU6InJ1YnktYmFzZSJ9LHtuYW1lOiJydWJ5LWJhc2UtY29udGFpbmVyIn0se25hbWU6InJ1YnktdGV4dCJ9LHtuYW1lOiJydWJ5LXRleHQtY29udGFpbmVyIn0se25hbWU6InJ1bi1pbiIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMSIsIkMxIiwiSUU0IiwiTzciXSxkZXNjcmlwdGlvbjoiVGhlIGVsZW1lbnQgZ2VuZXJhdGVzIGEgcnVuLWluIGJveC4gUnVuLWluIGVsZW1lbnRzIGFjdCBsaWtlIGlubGluZXMgb3IgYmxvY2tzLCBkZXBlbmRpbmcgb24gdGhlIHN1cnJvdW5kaW5nIGVsZW1lbnRzLiJ9LHtuYW1lOiJ0YWJsZSIsZGVzY3JpcHRpb246IlRoZSBlbGVtZW50IGdlbmVyYXRlcyBhIHByaW5jaXBhbCB0YWJsZSB3cmFwcGVyIGJveCBjb250YWluaW5nIGFuIGFkZGl0aW9uYWxseS1nZW5lcmF0ZWQgdGFibGUgYm94LCBhbmQgZXN0YWJsaXNoZXMgYSB0YWJsZSBmb3JtYXR0aW5nIGNvbnRleHQuIn0se25hbWU6InRhYmxlLWNhcHRpb24ifSx7bmFtZToidGFibGUtY2VsbCJ9LHtuYW1lOiJ0YWJsZS1jb2x1bW4ifSx7bmFtZToidGFibGUtY29sdW1uLWdyb3VwIn0se25hbWU6InRhYmxlLWZvb3Rlci1ncm91cCJ9LHtuYW1lOiJ0YWJsZS1oZWFkZXItZ3JvdXAifSx7bmFtZToidGFibGUtcm93In0se25hbWU6InRhYmxlLXJvdy1ncm91cCJ9LHtuYW1lOiItd2Via2l0LWJveCIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMSIsIkMxIiwiSUU0IiwiTzciXSxkZXNjcmlwdGlvbjoiVGhlIGVsZW1lbnQgbGF5cyBvdXQgaXRzIGNvbnRlbnRzIHVzaW5nIGZsb3cgbGF5b3V0IChibG9jay1hbmQtaW5saW5lIGxheW91dCkuIFN0YW5kYXJkaXplZCBhcyAnZmxleCcuIn0se25hbWU6Ii13ZWJraXQtZmxleCIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMSIsIkMxIiwiSUU0IiwiTzciXSxkZXNjcmlwdGlvbjoiVGhlIGVsZW1lbnQgbGF5cyBvdXQgaXRzIGNvbnRlbnRzIHVzaW5nIGZsb3cgbGF5b3V0IChibG9jay1hbmQtaW5saW5lIGxheW91dCkuIn0se25hbWU6Ii13ZWJraXQtaW5saW5lLWJveCIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMSIsIkMxIiwiSUU0IiwiTzciXSxkZXNjcmlwdGlvbjoiSW5saW5lLWxldmVsIGZsZXggY29udGFpbmVyLiBTdGFuZGFyZGl6ZWQgYXMgJ2lubGluZS1mbGV4JyJ9LHtuYW1lOiItd2Via2l0LWlubGluZS1mbGV4Iixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxIiwiQzEiLCJJRTQiLCJPNyJdLGRlc2NyaXB0aW9uOiJJbmxpbmUtbGV2ZWwgZmxleCBjb250YWluZXIuIn1dLHN5bnRheDoiWyA8ZGlzcGxheS1vdXRzaWRlPiB8fCA8ZGlzcGxheS1pbnNpZGU+IF0gfCA8ZGlzcGxheS1saXN0aXRlbT4gfCA8ZGlzcGxheS1pbnRlcm5hbD4gfCA8ZGlzcGxheS1ib3g+IHwgPGRpc3BsYXktbGVnYWN5PiIscmVsZXZhbmNlOjk2LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9kaXNwbGF5In1dLGRlc2NyaXB0aW9uOiJJbiBjb21iaW5hdGlvbiB3aXRoICdmbG9hdCcgYW5kICdwb3NpdGlvbicsIGRldGVybWluZXMgdGhlIHR5cGUgb2YgYm94IG9yIGJveGVzIHRoYXQgYXJlIGdlbmVyYXRlZCBmb3IgYW4gZWxlbWVudC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6ImVtcHR5LWNlbGxzIixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxLjIiLCJDMSIsIklFOCIsIk80Il0sdmFsdWVzOlt7bmFtZToiaGlkZSIsZGVzY3JpcHRpb246Ik5vIGJvcmRlcnMgb3IgYmFja2dyb3VuZHMgYXJlIGRyYXduIGFyb3VuZC9iZWhpbmQgZW1wdHkgY2VsbHMuIn0se25hbWU6Ii1tb3otc2hvdy1iYWNrZ3JvdW5kIixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxLjIiLCJDMSIsIklFOCIsIk80Il19LHtuYW1lOiJzaG93IixkZXNjcmlwdGlvbjoiQm9yZGVycyBhbmQgYmFja2dyb3VuZHMgYXJlIGRyYXduIGFyb3VuZC9iZWhpbmQgZW1wdHkgY2VsbHMgKGxpa2Ugbm9ybWFsIGNlbGxzKS4ifV0sc3ludGF4OiJzaG93IHwgaGlkZSIscmVsZXZhbmNlOjUxLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9lbXB0eS1jZWxscyJ9XSxkZXNjcmlwdGlvbjoiSW4gdGhlIHNlcGFyYXRlZCBib3JkZXJzIG1vZGVsLCB0aGlzIHByb3BlcnR5IGNvbnRyb2xzIHRoZSByZW5kZXJpbmcgb2YgYm9yZGVycyBhbmQgYmFja2dyb3VuZHMgYXJvdW5kIGNlbGxzIHRoYXQgaGF2ZSBubyB2aXNpYmxlIGNvbnRlbnQuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJlbmFibGUtYmFja2dyb3VuZCIsdmFsdWVzOlt7bmFtZToiYWNjdW11bGF0ZSIsZGVzY3JpcHRpb246IklmIHRoZSBhbmNlc3RvciBjb250YWluZXIgZWxlbWVudCBoYXMgYSBwcm9wZXJ0eSBvZiBuZXcsIHRoZW4gYWxsIGdyYXBoaWNzIGVsZW1lbnRzIHdpdGhpbiB0aGUgY3VycmVudCBjb250YWluZXIgYXJlIHJlbmRlcmVkIGJvdGggb24gdGhlIHBhcmVudCdzIGJhY2tncm91bmQgaW1hZ2UgYW5kIG9udG8gdGhlIHRhcmdldC4ifSx7bmFtZToibmV3IixkZXNjcmlwdGlvbjoiQ3JlYXRlIGEgbmV3IGJhY2tncm91bmQgaW1hZ2UgY2FudmFzLiBBbGwgY2hpbGRyZW4gb2YgdGhlIGN1cnJlbnQgY29udGFpbmVyIGVsZW1lbnQgY2FuIGFjY2VzcyB0aGUgYmFja2dyb3VuZCwgYW5kIHRoZXkgd2lsbCBiZSByZW5kZXJlZCBvbnRvIGJvdGggdGhlIHBhcmVudCdzIGJhY2tncm91bmQgaW1hZ2UgY2FudmFzIGluIGFkZGl0aW9uIHRvIHRoZSB0YXJnZXQgZGV2aWNlLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkRlcHJlY2F0ZWQuIFVzZSAnaXNvbGF0aW9uJyBwcm9wZXJ0eSBpbnN0ZWFkIHdoZW4gc3VwcG9ydCBhbGxvd3MuIFNwZWNpZmllcyBob3cgdGhlIGFjY3VtdWxhdGlvbiBvZiB0aGUgYmFja2dyb3VuZCBpbWFnZSBpcyBtYW5hZ2VkLiIscmVzdHJpY3Rpb25zOlsiaW50ZWdlciIsImxlbmd0aCIsInBlcmNlbnRhZ2UiLCJlbnVtIl19LHtuYW1lOiJmYWxsYmFjayIsYnJvd3NlcnM6WyJGRjMzIl0sYXRSdWxlOiJAY291bnRlci1zdHlsZSIsc3ludGF4OiI8Y291bnRlci1zdHlsZS1uYW1lPiIscmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJAY291bnRlci1zdHlsZSBkZXNjcmlwdG9yLiBTcGVjaWZpZXMgYSBmYWxsYmFjayBjb3VudGVyIHN0eWxlIHRvIGJlIHVzZWQgd2hlbiB0aGUgY3VycmVudCBjb3VudGVyIHN0eWxlIGNhbid0IGNyZWF0ZSBhIHJlcHJlc2VudGF0aW9uIGZvciBhIGdpdmVuIGNvdW50ZXIgdmFsdWUuIixyZXN0cmljdGlvbnM6WyJpZGVudGlmaWVyIl19LHtuYW1lOiJmaWxsIixicm93c2VyczpbIkU4MCIsIkZGNzIiLCJTMTMuMSIsIkM4MCIsIk82NyJdLHZhbHVlczpbe25hbWU6InVybCgpIixkZXNjcmlwdGlvbjoiQSBVUkwgcmVmZXJlbmNlIHRvIGEgcGFpbnQgc2VydmVyIGVsZW1lbnQsIHdoaWNoIGlzIGFuIGVsZW1lbnQgdGhhdCBkZWZpbmVzIGEgcGFpbnQgc2VydmVyOiAnaGF0Y2gnLCAnbGluZWFyR3JhZGllbnQnLCAnbWVzaCcsICdwYXR0ZXJuJywgJ3JhZGlhbEdyYWRpZW50JyBhbmQgJ3NvbGlkY29sb3InLiJ9LHtuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiTm8gcGFpbnQgaXMgYXBwbGllZCBpbiB0aGlzIGxheWVyLiJ9XSxyZWxldmFuY2U6NzcsZGVzY3JpcHRpb246IlBhaW50cyB0aGUgaW50ZXJpb3Igb2YgdGhlIGdpdmVuIGdyYXBoaWNhbCBlbGVtZW50LiIscmVzdHJpY3Rpb25zOlsiY29sb3IiLCJlbnVtIiwidXJsIl19LHtuYW1lOiJmaWxsLW9wYWNpdHkiLGJyb3dzZXJzOlsiRTgwIiwiRkY3MiIsIlMxMy4xIiwiQzgwIiwiTzY3Il0scmVsZXZhbmNlOjUyLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhlIG9wYWNpdHkgb2YgdGhlIHBhaW50aW5nIG9wZXJhdGlvbiB1c2VkIHRvIHBhaW50IHRoZSBpbnRlcmlvciB0aGUgY3VycmVudCBvYmplY3QuIixyZXN0cmljdGlvbnM6WyJudW1iZXIoMC0xKSJdfSx7bmFtZToiZmlsbC1ydWxlIixicm93c2VyczpbIkU4MCIsIkZGNzIiLCJTMTMuMSIsIkM4MCIsIk82NyJdLHZhbHVlczpbe25hbWU6ImV2ZW5vZGQiLGRlc2NyaXB0aW9uOiJEZXRlcm1pbmVzIHRoZSAnaW5zaWRlbmVzcycgb2YgYSBwb2ludCBvbiB0aGUgY2FudmFzIGJ5IGRyYXdpbmcgYSByYXkgZnJvbSB0aGF0IHBvaW50IHRvIGluZmluaXR5IGluIGFueSBkaXJlY3Rpb24gYW5kIGNvdW50aW5nIHRoZSBudW1iZXIgb2YgcGF0aCBzZWdtZW50cyBmcm9tIHRoZSBnaXZlbiBzaGFwZSB0aGF0IHRoZSByYXkgY3Jvc3Nlcy4ifSx7bmFtZToibm9uemVybyIsZGVzY3JpcHRpb246IkRldGVybWluZXMgdGhlICdpbnNpZGVuZXNzJyBvZiBhIHBvaW50IG9uIHRoZSBjYW52YXMgYnkgZHJhd2luZyBhIHJheSBmcm9tIHRoYXQgcG9pbnQgdG8gaW5maW5pdHkgaW4gYW55IGRpcmVjdGlvbiBhbmQgdGhlbiBleGFtaW5pbmcgdGhlIHBsYWNlcyB3aGVyZSBhIHNlZ21lbnQgb2YgdGhlIHNoYXBlIGNyb3NzZXMgdGhlIHJheS4ifV0scmVsZXZhbmNlOjUxLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhlIGFsZ29yaXRobSAob3Igd2luZGluZyBydWxlKSB3aGljaCBpcyB0byBiZSB1c2VkIHRvIGRldGVybWluZSB3aGF0IHBhcnRzIG9mIHRoZSBjYW52YXMgYXJlIGluY2x1ZGVkIGluc2lkZSB0aGUgc2hhcGUuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJmaWx0ZXIiLGJyb3dzZXJzOlsiRTEyIiwiRkYzNSIsIlM5LjEiLCJDNTMiLCJPNDAiXSx2YWx1ZXM6W3tuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiTm8gZmlsdGVyIGVmZmVjdHMgYXJlIGFwcGxpZWQuIn0se25hbWU6ImJsdXIoKSIsZGVzY3JpcHRpb246IkFwcGxpZXMgYSBHYXVzc2lhbiBibHVyIHRvIHRoZSBpbnB1dCBpbWFnZS4ifSx7bmFtZToiYnJpZ2h0bmVzcygpIixkZXNjcmlwdGlvbjoiQXBwbGllcyBhIGxpbmVhciBtdWx0aXBsaWVyIHRvIGlucHV0IGltYWdlLCBtYWtpbmcgaXQgYXBwZWFyIG1vcmUgb3IgbGVzcyBicmlnaHQuIn0se25hbWU6ImNvbnRyYXN0KCkiLGRlc2NyaXB0aW9uOiJBZGp1c3RzIHRoZSBjb250cmFzdCBvZiB0aGUgaW5wdXQuIn0se25hbWU6ImRyb3Atc2hhZG93KCkiLGRlc2NyaXB0aW9uOiJBcHBsaWVzIGEgZHJvcCBzaGFkb3cgZWZmZWN0IHRvIHRoZSBpbnB1dCBpbWFnZS4ifSx7bmFtZToiZ3JheXNjYWxlKCkiLGRlc2NyaXB0aW9uOiJDb252ZXJ0cyB0aGUgaW5wdXQgaW1hZ2UgdG8gZ3JheXNjYWxlLiJ9LHtuYW1lOiJodWUtcm90YXRlKCkiLGRlc2NyaXB0aW9uOiJBcHBsaWVzIGEgaHVlIHJvdGF0aW9uIG9uIHRoZSBpbnB1dCBpbWFnZS4gIn0se25hbWU6ImludmVydCgpIixkZXNjcmlwdGlvbjoiSW52ZXJ0cyB0aGUgc2FtcGxlcyBpbiB0aGUgaW5wdXQgaW1hZ2UuIn0se25hbWU6Im9wYWNpdHkoKSIsZGVzY3JpcHRpb246IkFwcGxpZXMgdHJhbnNwYXJlbmN5IHRvIHRoZSBzYW1wbGVzIGluIHRoZSBpbnB1dCBpbWFnZS4ifSx7bmFtZToic2F0dXJhdGUoKSIsZGVzY3JpcHRpb246IlNhdHVyYXRlcyB0aGUgaW5wdXQgaW1hZ2UuIn0se25hbWU6InNlcGlhKCkiLGRlc2NyaXB0aW9uOiJDb252ZXJ0cyB0aGUgaW5wdXQgaW1hZ2UgdG8gc2VwaWEuIn0se25hbWU6InVybCgpIixicm93c2VyczpbIkUxMiIsIkZGMzUiLCJTOS4xIiwiQzUzIiwiTzQwIl0sZGVzY3JpcHRpb246IkEgZmlsdGVyIHJlZmVyZW5jZSB0byBhIDxmaWx0ZXI+IGVsZW1lbnQuIn1dLHN5bnRheDoibm9uZSB8IDxmaWx0ZXItZnVuY3Rpb24tbGlzdD4iLHJlbGV2YW5jZTo3MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvZmlsdGVyIn1dLGRlc2NyaXB0aW9uOiJQcm9jZXNzZXMgYW4gZWxlbWVudCdzIHJlbmRlcmluZyBiZWZvcmUgaXQgaXMgZGlzcGxheWVkIGluIHRoZSBkb2N1bWVudCwgYnkgYXBwbHlpbmcgb25lIG9yIG1vcmUgZmlsdGVyIGVmZmVjdHMuIixyZXN0cmljdGlvbnM6WyJlbnVtIiwidXJsIl19LHtuYW1lOiJmbGV4Iixicm93c2VyczpbIkUxMiIsIkZGMjAiLCJTOSIsIkMyOSIsIklFMTEiLCJPMTIuMSJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJSZXRyaWV2ZXMgdGhlIHZhbHVlIG9mIHRoZSBtYWluIHNpemUgcHJvcGVydHkgYXMgdGhlIHVzZWQgJ2ZsZXgtYmFzaXMnLiJ9LHtuYW1lOiJjb250ZW50Iixicm93c2VyczpbIkUxMiIsIkZGMjAiLCJTOSIsIkMyOSIsIklFMTEiLCJPMTIuMSJdLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgYXV0b21hdGljIHNpemluZywgYmFzZWQgb24gdGhlIGZsZXggaXRlbSdzIGNvbnRlbnQuIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJFeHBhbmRzIHRvICcwIDAgYXV0bycuIn1dLHN5bnRheDoibm9uZSB8IFsgPCdmbGV4LWdyb3cnPiA8J2ZsZXgtc2hyaW5rJz4/IHx8IDwnZmxleC1iYXNpcyc+IF0iLHJlbGV2YW5jZTo4MSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvZmxleCJ9XSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSBjb21wb25lbnRzIG9mIGEgZmxleGlibGUgbGVuZ3RoOiB0aGUgZmxleCBncm93IGZhY3RvciBhbmQgZmxleCBzaHJpbmsgZmFjdG9yLCBhbmQgdGhlIGZsZXggYmFzaXMuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJudW1iZXIiLCJwZXJjZW50YWdlIl19LHtuYW1lOiJmbGV4LWJhc2lzIixicm93c2VyczpbIkUxMiIsIkZGMjIiLCJTOSIsIkMyOSIsIklFMTEiLCJPMTIuMSJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJSZXRyaWV2ZXMgdGhlIHZhbHVlIG9mIHRoZSBtYWluIHNpemUgcHJvcGVydHkgYXMgdGhlIHVzZWQgJ2ZsZXgtYmFzaXMnLiJ9LHtuYW1lOiJjb250ZW50Iixicm93c2VyczpbIkUxMiIsIkZGMjIiLCJTOSIsIkMyOSIsIklFMTEiLCJPMTIuMSJdLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgYXV0b21hdGljIHNpemluZywgYmFzZWQgb24gdGhlIGZsZXggaXRlbSdzIGNvbnRlbnQuIn1dLHN5bnRheDoiY29udGVudCB8IDwnd2lkdGgnPiIscmVsZXZhbmNlOjcwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9mbGV4LWJhc2lzIn1dLGRlc2NyaXB0aW9uOiJTZXRzIHRoZSBmbGV4IGJhc2lzLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwibnVtYmVyIiwicGVyY2VudGFnZSJdfSx7bmFtZToiZmxleC1kaXJlY3Rpb24iLGJyb3dzZXJzOlsiRTEyIiwiRkY4MSIsIlM5IiwiQzI5IiwiSUUxMSIsIk8xMi4xIl0sdmFsdWVzOlt7bmFtZToiY29sdW1uIixkZXNjcmlwdGlvbjoiVGhlIGZsZXggY29udGFpbmVyJ3MgbWFpbiBheGlzIGhhcyB0aGUgc2FtZSBvcmllbnRhdGlvbiBhcyB0aGUgYmxvY2sgYXhpcyBvZiB0aGUgY3VycmVudCB3cml0aW5nIG1vZGUuIn0se25hbWU6ImNvbHVtbi1yZXZlcnNlIixkZXNjcmlwdGlvbjoiU2FtZSBhcyAnY29sdW1uJywgZXhjZXB0IHRoZSBtYWluLXN0YXJ0IGFuZCBtYWluLWVuZCBkaXJlY3Rpb25zIGFyZSBzd2FwcGVkLiJ9LHtuYW1lOiJyb3ciLGRlc2NyaXB0aW9uOiJUaGUgZmxleCBjb250YWluZXIncyBtYWluIGF4aXMgaGFzIHRoZSBzYW1lIG9yaWVudGF0aW9uIGFzIHRoZSBpbmxpbmUgYXhpcyBvZiB0aGUgY3VycmVudCB3cml0aW5nIG1vZGUuIn0se25hbWU6InJvdy1yZXZlcnNlIixkZXNjcmlwdGlvbjoiU2FtZSBhcyAncm93JywgZXhjZXB0IHRoZSBtYWluLXN0YXJ0IGFuZCBtYWluLWVuZCBkaXJlY3Rpb25zIGFyZSBzd2FwcGVkLiJ9XSxzeW50YXg6InJvdyB8IHJvdy1yZXZlcnNlIHwgY29sdW1uIHwgY29sdW1uLXJldmVyc2UiLHJlbGV2YW5jZTo4NCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvZmxleC1kaXJlY3Rpb24ifV0sZGVzY3JpcHRpb246IlNwZWNpZmllcyBob3cgZmxleCBpdGVtcyBhcmUgcGxhY2VkIGluIHRoZSBmbGV4IGNvbnRhaW5lciwgYnkgc2V0dGluZyB0aGUgZGlyZWN0aW9uIG9mIHRoZSBmbGV4IGNvbnRhaW5lcidzIG1haW4gYXhpcy4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6ImZsZXgtZmxvdyIsYnJvd3NlcnM6WyJFMTIiLCJGRjI4IiwiUzkiLCJDMjkiLCJJRTExIiwiTzEyLjEiXSx2YWx1ZXM6W3tuYW1lOiJjb2x1bW4iLGRlc2NyaXB0aW9uOiJUaGUgZmxleCBjb250YWluZXIncyBtYWluIGF4aXMgaGFzIHRoZSBzYW1lIG9yaWVudGF0aW9uIGFzIHRoZSBibG9jayBheGlzIG9mIHRoZSBjdXJyZW50IHdyaXRpbmcgbW9kZS4ifSx7bmFtZToiY29sdW1uLXJldmVyc2UiLGRlc2NyaXB0aW9uOiJTYW1lIGFzICdjb2x1bW4nLCBleGNlcHQgdGhlIG1haW4tc3RhcnQgYW5kIG1haW4tZW5kIGRpcmVjdGlvbnMgYXJlIHN3YXBwZWQuIn0se25hbWU6Im5vd3JhcCIsZGVzY3JpcHRpb246IlRoZSBmbGV4IGNvbnRhaW5lciBpcyBzaW5nbGUtbGluZS4ifSx7bmFtZToicm93IixkZXNjcmlwdGlvbjoiVGhlIGZsZXggY29udGFpbmVyJ3MgbWFpbiBheGlzIGhhcyB0aGUgc2FtZSBvcmllbnRhdGlvbiBhcyB0aGUgaW5saW5lIGF4aXMgb2YgdGhlIGN1cnJlbnQgd3JpdGluZyBtb2RlLiJ9LHtuYW1lOiJyb3ctcmV2ZXJzZSIsZGVzY3JpcHRpb246IlNhbWUgYXMgJ3JvdycsIGV4Y2VwdCB0aGUgbWFpbi1zdGFydCBhbmQgbWFpbi1lbmQgZGlyZWN0aW9ucyBhcmUgc3dhcHBlZC4ifSx7bmFtZToid3JhcCIsZGVzY3JpcHRpb246IlRoZSBmbGV4Ym94IGlzIG11bHRpLWxpbmUuIn0se25hbWU6IndyYXAtcmV2ZXJzZSIsZGVzY3JpcHRpb246IlNhbWUgYXMgJ3dyYXAnLCBleGNlcHQgdGhlIGNyb3NzLXN0YXJ0IGFuZCBjcm9zcy1lbmQgZGlyZWN0aW9ucyBhcmUgc3dhcHBlZC4ifV0sc3ludGF4OiI8J2ZsZXgtZGlyZWN0aW9uJz4gfHwgPCdmbGV4LXdyYXAnPiIscmVsZXZhbmNlOjY0LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9mbGV4LWZsb3cifV0sZGVzY3JpcHRpb246IlNwZWNpZmllcyBob3cgZmxleGJveCBpdGVtcyBhcmUgcGxhY2VkIGluIHRoZSBmbGV4Ym94LiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiZmxleC1ncm93Iixicm93c2VyczpbIkUxMiIsIkZGMjAiLCJTOSIsIkMyOSIsIklFMTEiLCJPMTIuMSJdLHN5bnRheDoiPG51bWJlcj4iLHJlbGV2YW5jZTo3NyxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvZmxleC1ncm93In1dLGRlc2NyaXB0aW9uOiJTZXRzIHRoZSBmbGV4IGdyb3cgZmFjdG9yLiBOZWdhdGl2ZSBudW1iZXJzIGFyZSBpbnZhbGlkLiIscmVzdHJpY3Rpb25zOlsibnVtYmVyIl19LHtuYW1lOiJmbGV4LXNocmluayIsYnJvd3NlcnM6WyJFMTIiLCJGRjIwIiwiUzkiLCJDMjkiLCJJRTEwIiwiTzEyLjEiXSxzeW50YXg6IjxudW1iZXI+IixyZWxldmFuY2U6NzYscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2ZsZXgtc2hyaW5rIn1dLGRlc2NyaXB0aW9uOiJTZXRzIHRoZSBmbGV4IHNocmluayBmYWN0b3IuIE5lZ2F0aXZlIG51bWJlcnMgYXJlIGludmFsaWQuIixyZXN0cmljdGlvbnM6WyJudW1iZXIiXX0se25hbWU6ImZsZXgtd3JhcCIsYnJvd3NlcnM6WyJFMTIiLCJGRjI4IiwiUzkiLCJDMjkiLCJJRTExIiwiTzE3Il0sdmFsdWVzOlt7bmFtZToibm93cmFwIixkZXNjcmlwdGlvbjoiVGhlIGZsZXggY29udGFpbmVyIGlzIHNpbmdsZS1saW5lLiJ9LHtuYW1lOiJ3cmFwIixkZXNjcmlwdGlvbjoiVGhlIGZsZXhib3ggaXMgbXVsdGktbGluZS4ifSx7bmFtZToid3JhcC1yZXZlcnNlIixkZXNjcmlwdGlvbjoiU2FtZSBhcyAnd3JhcCcsIGV4Y2VwdCB0aGUgY3Jvc3Mtc3RhcnQgYW5kIGNyb3NzLWVuZCBkaXJlY3Rpb25zIGFyZSBzd2FwcGVkLiJ9XSxzeW50YXg6Im5vd3JhcCB8IHdyYXAgfCB3cmFwLXJldmVyc2UiLHJlbGV2YW5jZTo4MixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvZmxleC13cmFwIn1dLGRlc2NyaXB0aW9uOiJDb250cm9scyB3aGV0aGVyIHRoZSBmbGV4IGNvbnRhaW5lciBpcyBzaW5nbGUtbGluZSBvciBtdWx0aS1saW5lLCBhbmQgdGhlIGRpcmVjdGlvbiBvZiB0aGUgY3Jvc3MtYXhpcywgd2hpY2ggZGV0ZXJtaW5lcyB0aGUgZGlyZWN0aW9uIG5ldyBsaW5lcyBhcmUgc3RhY2tlZCBpbi4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6ImZsb2F0Iixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxIiwiQzEiLCJJRTQiLCJPNyJdLHZhbHVlczpbe25hbWU6ImlubGluZS1lbmQiLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzEiLCJDMSIsIklFNCIsIk83Il0sZGVzY3JpcHRpb246IkEga2V5d29yZCBpbmRpY2F0aW5nIHRoYXQgdGhlIGVsZW1lbnQgbXVzdCBmbG9hdCBvbiB0aGUgZW5kIHNpZGUgb2YgaXRzIGNvbnRhaW5pbmcgYmxvY2suIFRoYXQgaXMgdGhlIHJpZ2h0IHNpZGUgd2l0aCBsdHIgc2NyaXB0cywgYW5kIHRoZSBsZWZ0IHNpZGUgd2l0aCBydGwgc2NyaXB0cy4ifSx7bmFtZToiaW5saW5lLXN0YXJ0Iixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxIiwiQzEiLCJJRTQiLCJPNyJdLGRlc2NyaXB0aW9uOiJBIGtleXdvcmQgaW5kaWNhdGluZyB0aGF0IHRoZSBlbGVtZW50IG11c3QgZmxvYXQgb24gdGhlIHN0YXJ0IHNpZGUgb2YgaXRzIGNvbnRhaW5pbmcgYmxvY2suIFRoYXQgaXMgdGhlIGxlZnQgc2lkZSB3aXRoIGx0ciBzY3JpcHRzLCBhbmQgdGhlIHJpZ2h0IHNpZGUgd2l0aCBydGwgc2NyaXB0cy4ifSx7bmFtZToibGVmdCIsZGVzY3JpcHRpb246IlRoZSBlbGVtZW50IGdlbmVyYXRlcyBhIGJsb2NrIGJveCB0aGF0IGlzIGZsb2F0ZWQgdG8gdGhlIGxlZnQuIENvbnRlbnQgZmxvd3Mgb24gdGhlIHJpZ2h0IHNpZGUgb2YgdGhlIGJveCwgc3RhcnRpbmcgYXQgdGhlIHRvcCAoc3ViamVjdCB0byB0aGUgJ2NsZWFyJyBwcm9wZXJ0eSkuIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJUaGUgYm94IGlzIG5vdCBmbG9hdGVkLiJ9LHtuYW1lOiJyaWdodCIsZGVzY3JpcHRpb246IlNpbWlsYXIgdG8gJ2xlZnQnLCBleGNlcHQgdGhlIGJveCBpcyBmbG9hdGVkIHRvIHRoZSByaWdodCwgYW5kIGNvbnRlbnQgZmxvd3Mgb24gdGhlIGxlZnQgc2lkZSBvZiB0aGUgYm94LCBzdGFydGluZyBhdCB0aGUgdG9wLiJ9XSxzeW50YXg6ImxlZnQgfCByaWdodCB8IG5vbmUgfCBpbmxpbmUtc3RhcnQgfCBpbmxpbmUtZW5kIixyZWxldmFuY2U6ODkscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2Zsb2F0In1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgaG93IGEgYm94IHNob3VsZCBiZSBmbG9hdGVkLiBJdCBtYXkgYmUgc2V0IGZvciBhbnkgZWxlbWVudCwgYnV0IG9ubHkgYXBwbGllcyB0byBlbGVtZW50cyB0aGF0IGdlbmVyYXRlIGJveGVzIHRoYXQgYXJlIG5vdCBhYnNvbHV0ZWx5IHBvc2l0aW9uZWQuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJmbG9vZC1jb2xvciIsYnJvd3NlcnM6WyJFMTIiLCJGRjMiLCJTNiIsIkM1IiwiSUUiLCJPMTUiXSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkluZGljYXRlcyB3aGF0IGNvbG9yIHRvIHVzZSB0byBmbG9vZCB0aGUgY3VycmVudCBmaWx0ZXIgcHJpbWl0aXZlIHN1YnJlZ2lvbi4iLHJlc3RyaWN0aW9uczpbImNvbG9yIl19LHtuYW1lOiJmbG9vZC1vcGFjaXR5Iixicm93c2VyczpbIkUxMiIsIkZGMyIsIlM2IiwiQzUiLCJJRSIsIk8xNSJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHdoYXQgb3BhY2l0eSB0byB1c2UgdG8gZmxvb2QgdGhlIGN1cnJlbnQgZmlsdGVyIHByaW1pdGl2ZSBzdWJyZWdpb24uIixyZXN0cmljdGlvbnM6WyJudW1iZXIoMC0xKSIsInBlcmNlbnRhZ2UiXX0se25hbWU6ImZvbnQiLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzEiLCJDMSIsIklFMyIsIk8zLjUiXSx2YWx1ZXM6W3tuYW1lOiIxMDAiLGRlc2NyaXB0aW9uOiJUaGluIn0se25hbWU6IjIwMCIsZGVzY3JpcHRpb246IkV4dHJhIExpZ2h0IChVbHRyYSBMaWdodCkifSx7bmFtZToiMzAwIixkZXNjcmlwdGlvbjoiTGlnaHQifSx7bmFtZToiNDAwIixkZXNjcmlwdGlvbjoiTm9ybWFsIn0se25hbWU6IjUwMCIsZGVzY3JpcHRpb246Ik1lZGl1bSJ9LHtuYW1lOiI2MDAiLGRlc2NyaXB0aW9uOiJTZW1pIEJvbGQgKERlbWkgQm9sZCkifSx7bmFtZToiNzAwIixkZXNjcmlwdGlvbjoiQm9sZCJ9LHtuYW1lOiI4MDAiLGRlc2NyaXB0aW9uOiJFeHRyYSBCb2xkIChVbHRyYSBCb2xkKSJ9LHtuYW1lOiI5MDAiLGRlc2NyaXB0aW9uOiJCbGFjayAoSGVhdnkpIn0se25hbWU6ImJvbGQiLGRlc2NyaXB0aW9uOiJTYW1lIGFzIDcwMCJ9LHtuYW1lOiJib2xkZXIiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhlIHdlaWdodCBvZiB0aGUgZmFjZSBib2xkZXIgdGhhbiB0aGUgaW5oZXJpdGVkIHZhbHVlLiJ9LHtuYW1lOiJjYXB0aW9uIixkZXNjcmlwdGlvbjoiVGhlIGZvbnQgdXNlZCBmb3IgY2FwdGlvbmVkIGNvbnRyb2xzIChlLmcuLCBidXR0b25zLCBkcm9wLWRvd25zLCBldGMuKS4ifSx7bmFtZToiaWNvbiIsZGVzY3JpcHRpb246IlRoZSBmb250IHVzZWQgdG8gbGFiZWwgaWNvbnMuIn0se25hbWU6Iml0YWxpYyIsZGVzY3JpcHRpb246IlNlbGVjdHMgYSBmb250IHRoYXQgaXMgbGFiZWxlZCAnaXRhbGljJywgb3IsIGlmIHRoYXQgaXMgbm90IGF2YWlsYWJsZSwgb25lIGxhYmVsZWQgJ29ibGlxdWUnLiJ9LHtuYW1lOiJsYXJnZSJ9LHtuYW1lOiJsYXJnZXIifSx7bmFtZToibGlnaHRlciIsZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgd2VpZ2h0IG9mIHRoZSBmYWNlIGxpZ2h0ZXIgdGhhbiB0aGUgaW5oZXJpdGVkIHZhbHVlLiJ9LHtuYW1lOiJtZWRpdW0ifSx7bmFtZToibWVudSIsZGVzY3JpcHRpb246IlRoZSBmb250IHVzZWQgaW4gbWVudXMgKGUuZy4sIGRyb3Bkb3duIG1lbnVzIGFuZCBtZW51IGxpc3RzKS4ifSx7bmFtZToibWVzc2FnZS1ib3giLGRlc2NyaXB0aW9uOiJUaGUgZm9udCB1c2VkIGluIGRpYWxvZyBib3hlcy4ifSx7bmFtZToibm9ybWFsIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgZmFjZSB0aGF0IGlzIG5vdCBsYWJlbGVkIGFzIGEgc21hbGwtY2FwcyBmb250LiJ9LHtuYW1lOiJvYmxpcXVlIixkZXNjcmlwdGlvbjoiU2VsZWN0cyBhIGZvbnQgdGhhdCBpcyBsYWJlbGVkICdvYmxpcXVlJy4ifSx7bmFtZToic21hbGwifSx7bmFtZToic21hbGwtY2FwcyIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIGZvbnQgdGhhdCBpcyBsYWJlbGVkIGFzIGEgc21hbGwtY2FwcyBmb250LiBJZiBhIGdlbnVpbmUgc21hbGwtY2FwcyBmb250IGlzIG5vdCBhdmFpbGFibGUsIHVzZXIgYWdlbnRzIHNob3VsZCBzaW11bGF0ZSBhIHNtYWxsLWNhcHMgZm9udC4ifSx7bmFtZToic21hbGwtY2FwdGlvbiIsZGVzY3JpcHRpb246IlRoZSBmb250IHVzZWQgZm9yIGxhYmVsaW5nIHNtYWxsIGNvbnRyb2xzLiJ9LHtuYW1lOiJzbWFsbGVyIn0se25hbWU6InN0YXR1cy1iYXIiLGRlc2NyaXB0aW9uOiJUaGUgZm9udCB1c2VkIGluIHdpbmRvdyBzdGF0dXMgYmFycy4ifSx7bmFtZToieC1sYXJnZSJ9LHtuYW1lOiJ4LXNtYWxsIn0se25hbWU6Inh4LWxhcmdlIn0se25hbWU6Inh4LXNtYWxsIn1dLHN5bnRheDoiWyBbIDwnZm9udC1zdHlsZSc+IHx8IDxmb250LXZhcmlhbnQtY3NzMjE+IHx8IDwnZm9udC13ZWlnaHQnPiB8fCA8J2ZvbnQtc3RyZXRjaCc+IF0/IDwnZm9udC1zaXplJz4gWyAvIDwnbGluZS1oZWlnaHQnPiBdPyA8J2ZvbnQtZmFtaWx5Jz4gXSB8IGNhcHRpb24gfCBpY29uIHwgbWVudSB8IG1lc3NhZ2UtYm94IHwgc21hbGwtY2FwdGlvbiB8IHN0YXR1cy1iYXIiLHJlbGV2YW5jZTo4MyxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvZm9udCJ9XSxkZXNjcmlwdGlvbjoiU2hvcnRoYW5kIHByb3BlcnR5IGZvciBzZXR0aW5nICdmb250LXN0eWxlJywgJ2ZvbnQtdmFyaWFudCcsICdmb250LXdlaWdodCcsICdmb250LXNpemUnLCAnbGluZS1oZWlnaHQnLCBhbmQgJ2ZvbnQtZmFtaWx5JywgYXQgdGhlIHNhbWUgcGxhY2UgaW4gdGhlIHN0eWxlIHNoZWV0LiBUaGUgc3ludGF4IG9mIHRoaXMgcHJvcGVydHkgaXMgYmFzZWQgb24gYSB0cmFkaXRpb25hbCB0eXBvZ3JhcGhpY2FsIHNob3J0aGFuZCBub3RhdGlvbiB0byBzZXQgbXVsdGlwbGUgcHJvcGVydGllcyByZWxhdGVkIHRvIGZvbnRzLiIscmVzdHJpY3Rpb25zOlsiZm9udCJdfSx7bmFtZToiZm9udC1mYW1pbHkiLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzEiLCJDMSIsIklFMyIsIk8zLjUiXSx2YWx1ZXM6W3tuYW1lOiJzeXN0ZW0tdWksIC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgJ1NlZ29lIFVJJywgUm9ib3RvLCBPeHlnZW4sIFVidW50dSwgQ2FudGFyZWxsLCAnT3BlbiBTYW5zJywgJ0hlbHZldGljYSBOZXVlJywgc2Fucy1zZXJpZiJ9LHtuYW1lOiJBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmIn0se25hbWU6IkNhbWJyaWEsIENvY2hpbiwgR2VvcmdpYSwgVGltZXMsICdUaW1lcyBOZXcgUm9tYW4nLCBzZXJpZiJ9LHtuYW1lOiInQ291cmllciBOZXcnLCBDb3VyaWVyLCBtb25vc3BhY2UifSx7bmFtZToiY3Vyc2l2ZSJ9LHtuYW1lOiJmYW50YXN5In0se25hbWU6IidGcmFua2xpbiBHb3RoaWMgTWVkaXVtJywgJ0FyaWFsIE5hcnJvdycsIEFyaWFsLCBzYW5zLXNlcmlmIn0se25hbWU6Ikdlb3JnaWEsICdUaW1lcyBOZXcgUm9tYW4nLCBUaW1lcywgc2VyaWYifSx7bmFtZToiJ0dpbGwgU2FucycsICdHaWxsIFNhbnMgTVQnLCBDYWxpYnJpLCAnVHJlYnVjaGV0IE1TJywgc2Fucy1zZXJpZiJ9LHtuYW1lOiJJbXBhY3QsIEhhZXR0ZW5zY2h3ZWlsZXIsICdBcmlhbCBOYXJyb3cgQm9sZCcsIHNhbnMtc2VyaWYifSx7bmFtZToiJ0x1Y2lkYSBTYW5zJywgJ0x1Y2lkYSBTYW5zIFJlZ3VsYXInLCAnTHVjaWRhIEdyYW5kZScsICdMdWNpZGEgU2FucyBVbmljb2RlJywgR2VuZXZhLCBWZXJkYW5hLCBzYW5zLXNlcmlmIn0se25hbWU6Im1vbm9zcGFjZSJ9LHtuYW1lOiJzYW5zLXNlcmlmIn0se25hbWU6IidTZWdvZSBVSScsIFRhaG9tYSwgR2VuZXZhLCBWZXJkYW5hLCBzYW5zLXNlcmlmIn0se25hbWU6InNlcmlmIn0se25hbWU6IidUaW1lcyBOZXcgUm9tYW4nLCBUaW1lcywgc2VyaWYifSx7bmFtZToiJ1RyZWJ1Y2hldCBNUycsICdMdWNpZGEgU2FucyBVbmljb2RlJywgJ0x1Y2lkYSBHcmFuZGUnLCAnTHVjaWRhIFNhbnMnLCBBcmlhbCwgc2Fucy1zZXJpZiJ9LHtuYW1lOiJWZXJkYW5hLCBHZW5ldmEsIFRhaG9tYSwgc2Fucy1zZXJpZiJ9XSxhdFJ1bGU6IkBmb250LWZhY2UiLHN5bnRheDoiPGZhbWlseS1uYW1lPiIscmVsZXZhbmNlOjkzLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9mb250LWZhbWlseSJ9XSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgcHJpb3JpdGl6ZWQgbGlzdCBvZiBmb250IGZhbWlseSBuYW1lcyBvciBnZW5lcmljIGZhbWlseSBuYW1lcy4gQSB1c2VyIGFnZW50IGl0ZXJhdGVzIHRocm91Z2ggdGhlIGxpc3Qgb2YgZmFtaWx5IG5hbWVzIHVudGlsIGl0IG1hdGNoZXMgYW4gYXZhaWxhYmxlIGZvbnQgdGhhdCBjb250YWlucyBhIGdseXBoIGZvciB0aGUgY2hhcmFjdGVyIHRvIGJlIHJlbmRlcmVkLiIscmVzdHJpY3Rpb25zOlsiZm9udCJdfSx7bmFtZToiZm9udC1mZWF0dXJlLXNldHRpbmdzIixicm93c2VyczpbIkUxNSIsIkZGMzQiLCJTOS4xIiwiQzQ4IiwiSUUxMCIsIk8zNSJdLHZhbHVlczpbe25hbWU6JyJhYWx0IicsZGVzY3JpcHRpb246IkFjY2VzcyBBbGwgQWx0ZXJuYXRlcy4ifSx7bmFtZTonImFidmYiJyxkZXNjcmlwdGlvbjoiQWJvdmUtYmFzZSBGb3Jtcy4gUmVxdWlyZWQgaW4gS2htZXIgc2NyaXB0LiJ9LHtuYW1lOiciYWJ2bSInLGRlc2NyaXB0aW9uOiJBYm92ZS1iYXNlIE1hcmsgUG9zaXRpb25pbmcuIFJlcXVpcmVkIGluIEluZGljIHNjcmlwdHMuIn0se25hbWU6JyJhYnZzIicsZGVzY3JpcHRpb246IkFib3ZlLWJhc2UgU3Vic3RpdHV0aW9ucy4gUmVxdWlyZWQgaW4gSW5kaWMgc2NyaXB0cy4ifSx7bmFtZTonImFmcmMiJyxkZXNjcmlwdGlvbjoiQWx0ZXJuYXRpdmUgRnJhY3Rpb25zLiJ9LHtuYW1lOiciYWtobiInLGRlc2NyaXB0aW9uOiJBa2hhbmQuIFJlcXVpcmVkIGluIG1vc3QgSW5kaWMgc2NyaXB0cy4ifSx7bmFtZTonImJsd2YiJyxkZXNjcmlwdGlvbjoiQmVsb3ctYmFzZSBGb3JtLiBSZXF1aXJlZCBpbiBhIG51bWJlciBvZiBJbmRpYyBzY3JpcHRzLiJ9LHtuYW1lOiciYmx3bSInLGRlc2NyaXB0aW9uOiJCZWxvdy1iYXNlIE1hcmsgUG9zaXRpb25pbmcuIFJlcXVpcmVkIGluIEluZGljIHNjcmlwdHMuIn0se25hbWU6JyJibHdzIicsZGVzY3JpcHRpb246IkJlbG93LWJhc2UgU3Vic3RpdHV0aW9ucy4gUmVxdWlyZWQgaW4gSW5kaWMgc2NyaXB0cy4ifSx7bmFtZTonImNhbHQiJyxkZXNjcmlwdGlvbjoiQ29udGV4dHVhbCBBbHRlcm5hdGVzLiJ9LHtuYW1lOiciY2FzZSInLGRlc2NyaXB0aW9uOiJDYXNlLVNlbnNpdGl2ZSBGb3Jtcy4gQXBwbGllcyBvbmx5IHRvIEV1cm9wZWFuIHNjcmlwdHM7IHBhcnRpY3VsYXJseSBwcm9taW5lbnQgaW4gU3BhbmlzaC1sYW5ndWFnZSBzZXR0aW5nLiJ9LHtuYW1lOiciY2NtcCInLGRlc2NyaXB0aW9uOiJHbHlwaCBDb21wb3NpdGlvbi9EZWNvbXBvc2l0aW9uLiJ9LHtuYW1lOiciY2ZhciInLGRlc2NyaXB0aW9uOiJDb25qdW5jdCBGb3JtIEFmdGVyIFJvLiBSZXF1aXJlZCBpbiBLaG1lciBzY3JpcHRzLiJ9LHtuYW1lOiciY2pjdCInLGRlc2NyaXB0aW9uOiJDb25qdW5jdCBGb3Jtcy4gUmVxdWlyZWQgaW4gSW5kaWMgc2NyaXB0cyB0aGF0IHNob3cgc2ltaWxhcml0eSB0byBEZXZhbmFnYXJpLiJ9LHtuYW1lOiciY2xpZyInLGRlc2NyaXB0aW9uOiJDb250ZXh0dWFsIExpZ2F0dXJlcy4ifSx7bmFtZTonImNwY3QiJyxkZXNjcmlwdGlvbjoiQ2VudGVyZWQgQ0pLIFB1bmN0dWF0aW9uLiBVc2VkIHByaW1hcmlseSBpbiBDaGluZXNlIGZvbnRzLiJ9LHtuYW1lOiciY3BzcCInLGRlc2NyaXB0aW9uOiJDYXBpdGFsIFNwYWNpbmcuIFNob3VsZCBub3QgYmUgdXNlZCBpbiBjb25uZWN0aW5nIHNjcmlwdHMgKGUuZy4gbW9zdCBBcmFiaWMpLiJ9LHtuYW1lOiciY3N3aCInLGRlc2NyaXB0aW9uOiJDb250ZXh0dWFsIFN3YXNoLiJ9LHtuYW1lOiciY3VycyInLGRlc2NyaXB0aW9uOiJDdXJzaXZlIFBvc2l0aW9uaW5nLiBDYW4gYmUgdXNlZCBpbiBhbnkgY3Vyc2l2ZSBzY3JpcHQuIn0se25hbWU6JyJjMnBjIicsZGVzY3JpcHRpb246IlBldGl0ZSBDYXBpdGFscyBGcm9tIENhcGl0YWxzLiBBcHBsaWVzIG9ubHkgdG8gYmljYW1lcmFsIHNjcmlwdHMuIn0se25hbWU6JyJjMnNjIicsZGVzY3JpcHRpb246IlNtYWxsIENhcGl0YWxzIEZyb20gQ2FwaXRhbHMuIEFwcGxpZXMgb25seSB0byBiaWNhbWVyYWwgc2NyaXB0cy4ifSx7bmFtZTonImRpc3QiJyxkZXNjcmlwdGlvbjoiRGlzdGFuY2VzLiBSZXF1aXJlZCBpbiBJbmRpYyBzY3JpcHRzLiJ9LHtuYW1lOiciZGxpZyInLGRlc2NyaXB0aW9uOiJEaXNjcmV0aW9uYXJ5IGxpZ2F0dXJlcy4ifSx7bmFtZTonImRub20iJyxkZXNjcmlwdGlvbjoiRGVub21pbmF0b3JzLiJ9LHtuYW1lOiciZHRscyInLGRlc2NyaXB0aW9uOiJEb3RsZXNzIEZvcm1zLiBBcHBsaWVkIHRvIG1hdGggZm9ybXVsYSBsYXlvdXQuIn0se25hbWU6JyJleHB0IicsZGVzY3JpcHRpb246IkV4cGVydCBGb3Jtcy4gQXBwbGllcyBvbmx5IHRvIEphcGFuZXNlLiJ9LHtuYW1lOiciZmFsdCInLGRlc2NyaXB0aW9uOiJGaW5hbCBHbHlwaCBvbiBMaW5lIEFsdGVybmF0ZXMuIENhbiBiZSB1c2VkIGluIGFueSBjdXJzaXZlIHNjcmlwdC4ifSx7bmFtZTonImZpbjIiJyxkZXNjcmlwdGlvbjoiVGVybWluYWwgRm9ybSAjMi4gVXNlZCBvbmx5IHdpdGggdGhlIFN5cmlhYyBzY3JpcHQuIn0se25hbWU6JyJmaW4zIicsZGVzY3JpcHRpb246IlRlcm1pbmFsIEZvcm0gIzMuIFVzZWQgb25seSB3aXRoIHRoZSBTeXJpYWMgc2NyaXB0LiJ9LHtuYW1lOiciZmluYSInLGRlc2NyaXB0aW9uOiJUZXJtaW5hbCBGb3Jtcy4gQ2FuIGJlIHVzZWQgaW4gYW55IGFscGhhYmV0aWMgc2NyaXB0LiJ9LHtuYW1lOiciZmxhYyInLGRlc2NyaXB0aW9uOiJGbGF0dGVuZWQgYXNjZW50IGZvcm1zLiBBcHBsaWVkIHRvIG1hdGggZm9ybXVsYSBsYXlvdXQuIn0se25hbWU6JyJmcmFjIicsZGVzY3JpcHRpb246IkZyYWN0aW9ucy4ifSx7bmFtZTonImZ3aWQiJyxkZXNjcmlwdGlvbjoiRnVsbCBXaWR0aHMuIEFwcGxpZXMgdG8gYW55IHNjcmlwdCB3aGljaCBjYW4gdXNlIG1vbm9zcGFjZWQgZm9ybXMuIn0se25hbWU6JyJoYWxmIicsZGVzY3JpcHRpb246IkhhbGYgRm9ybXMuIFJlcXVpcmVkIGluIEluZGljIHNjcmlwdHMgdGhhdCBzaG93IHNpbWlsYXJpdHkgdG8gRGV2YW5hZ2FyaS4ifSx7bmFtZTonImhhbG4iJyxkZXNjcmlwdGlvbjoiSGFsYW50IEZvcm1zLiBSZXF1aXJlZCBpbiBJbmRpYyBzY3JpcHRzLiJ9LHtuYW1lOiciaGFsdCInLGRlc2NyaXB0aW9uOiJBbHRlcm5hdGUgSGFsZiBXaWR0aHMuIFVzZWQgb25seSBpbiBDSktWIGZvbnRzLiJ9LHtuYW1lOiciaGlzdCInLGRlc2NyaXB0aW9uOiJIaXN0b3JpY2FsIEZvcm1zLiJ9LHtuYW1lOiciaGtuYSInLGRlc2NyaXB0aW9uOiJIb3Jpem9udGFsIEthbmEgQWx0ZXJuYXRlcy4gQXBwbGllcyBvbmx5IHRvIGZvbnRzIHRoYXQgc3VwcG9ydCBrYW5hIChoaXJhZ2FuYSBhbmQga2F0YWthbmEpLiJ9LHtuYW1lOiciaGxpZyInLGRlc2NyaXB0aW9uOiJIaXN0b3JpY2FsIExpZ2F0dXJlcy4ifSx7bmFtZTonImhuZ2wiJyxkZXNjcmlwdGlvbjoiSGFuZ3VsLiBLb3JlYW4gb25seS4ifSx7bmFtZTonImhvam8iJyxkZXNjcmlwdGlvbjoiSG9qbyBLYW5qaSBGb3JtcyAoSklTIFggMDIxMi0xOTkwIEthbmppIEZvcm1zKS4gVXNlZCBvbmx5IHdpdGggS2Fuamkgc2NyaXB0LiJ9LHtuYW1lOiciaHdpZCInLGRlc2NyaXB0aW9uOiJIYWxmIFdpZHRocy4gR2VuZXJhbGx5IHVzZWQgb25seSBpbiBDSktWIGZvbnRzLiJ9LHtuYW1lOiciaW5pdCInLGRlc2NyaXB0aW9uOiJJbml0aWFsIEZvcm1zLiBDYW4gYmUgdXNlZCBpbiBhbnkgYWxwaGFiZXRpYyBzY3JpcHQuIn0se25hbWU6JyJpc29sIicsZGVzY3JpcHRpb246Iklzb2xhdGVkIEZvcm1zLiBDYW4gYmUgdXNlZCBpbiBhbnkgY3Vyc2l2ZSBzY3JpcHQuIn0se25hbWU6JyJpdGFsIicsZGVzY3JpcHRpb246Ikl0YWxpY3MuIEFwcGxpZXMgbW9zdGx5IHRvIExhdGluOyBub3RlIHRoYXQgbWFueSBub24tTGF0aW4gZm9udHMgY29udGFpbiBMYXRpbiBhcyB3ZWxsLiJ9LHtuYW1lOiciamFsdCInLGRlc2NyaXB0aW9uOiJKdXN0aWZpY2F0aW9uIEFsdGVybmF0ZXMuIENhbiBiZSB1c2VkIGluIGFueSBjdXJzaXZlIHNjcmlwdC4ifSx7bmFtZTonImpwNzgiJyxkZXNjcmlwdGlvbjoiSklTNzggRm9ybXMuIEFwcGxpZXMgb25seSB0byBKYXBhbmVzZS4ifSx7bmFtZTonImpwODMiJyxkZXNjcmlwdGlvbjoiSklTODMgRm9ybXMuIEFwcGxpZXMgb25seSB0byBKYXBhbmVzZS4ifSx7bmFtZTonImpwOTAiJyxkZXNjcmlwdGlvbjoiSklTOTAgRm9ybXMuIEFwcGxpZXMgb25seSB0byBKYXBhbmVzZS4ifSx7bmFtZTonImpwMDQiJyxkZXNjcmlwdGlvbjoiSklTMjAwNCBGb3Jtcy4gQXBwbGllcyBvbmx5IHRvIEphcGFuZXNlLiJ9LHtuYW1lOicia2VybiInLGRlc2NyaXB0aW9uOiJLZXJuaW5nLiJ9LHtuYW1lOicibGZiZCInLGRlc2NyaXB0aW9uOiJMZWZ0IEJvdW5kcy4ifSx7bmFtZTonImxpZ2EiJyxkZXNjcmlwdGlvbjoiU3RhbmRhcmQgTGlnYXR1cmVzLiJ9LHtuYW1lOicibGptbyInLGRlc2NyaXB0aW9uOiJMZWFkaW5nIEphbW8gRm9ybXMuIFJlcXVpcmVkIGZvciBIYW5ndWwgc2NyaXB0IHdoZW4gQW5jaWVudCBIYW5ndWwgd3JpdGluZyBzeXN0ZW0gaXMgc3VwcG9ydGVkLiJ9LHtuYW1lOicibG51bSInLGRlc2NyaXB0aW9uOiJMaW5pbmcgRmlndXJlcy4ifSx7bmFtZTonImxvY2wiJyxkZXNjcmlwdGlvbjoiTG9jYWxpemVkIEZvcm1zLiJ9LHtuYW1lOicibHRyYSInLGRlc2NyaXB0aW9uOiJMZWZ0LXRvLXJpZ2h0IGdseXBoIGFsdGVybmF0ZXMuIn0se25hbWU6JyJsdHJtIicsZGVzY3JpcHRpb246IkxlZnQtdG8tcmlnaHQgbWlycm9yZWQgZm9ybXMuIn0se25hbWU6JyJtYXJrIicsZGVzY3JpcHRpb246Ik1hcmsgUG9zaXRpb25pbmcuIn0se25hbWU6JyJtZWQyIicsZGVzY3JpcHRpb246Ik1lZGlhbCBGb3JtICMyLiBVc2VkIG9ubHkgd2l0aCB0aGUgU3lyaWFjIHNjcmlwdC4ifSx7bmFtZTonIm1lZGkiJyxkZXNjcmlwdGlvbjoiTWVkaWFsIEZvcm1zLiJ9LHtuYW1lOicibWdyayInLGRlc2NyaXB0aW9uOiJNYXRoZW1hdGljYWwgR3JlZWsuIn0se25hbWU6JyJta21rIicsZGVzY3JpcHRpb246Ik1hcmsgdG8gTWFyayBQb3NpdGlvbmluZy4ifSx7bmFtZTonIm5hbHQiJyxkZXNjcmlwdGlvbjoiQWx0ZXJuYXRlIEFubm90YXRpb24gRm9ybXMuIn0se25hbWU6JyJubGNrIicsZGVzY3JpcHRpb246Ik5MQyBLYW5qaSBGb3Jtcy4gVXNlZCBvbmx5IHdpdGggS2Fuamkgc2NyaXB0LiJ9LHtuYW1lOicibnVrdCInLGRlc2NyaXB0aW9uOiJOdWt0YSBGb3Jtcy4gUmVxdWlyZWQgaW4gSW5kaWMgc2NyaXB0cy4uIn0se25hbWU6JyJudW1yIicsZGVzY3JpcHRpb246Ik51bWVyYXRvcnMuIn0se25hbWU6JyJvbnVtIicsZGVzY3JpcHRpb246Ik9sZHN0eWxlIEZpZ3VyZXMuIn0se25hbWU6JyJvcGJkIicsZGVzY3JpcHRpb246Ik9wdGljYWwgQm91bmRzLiJ9LHtuYW1lOicib3JkbiInLGRlc2NyaXB0aW9uOiJPcmRpbmFscy4gQXBwbGllcyBtb3N0bHkgdG8gTGF0aW4gc2NyaXB0LiJ9LHtuYW1lOicib3JubSInLGRlc2NyaXB0aW9uOiJPcm5hbWVudHMuIn0se25hbWU6JyJwYWx0IicsZGVzY3JpcHRpb246IlByb3BvcnRpb25hbCBBbHRlcm5hdGUgV2lkdGhzLiBVc2VkIG1vc3RseSBpbiBDSktWIGZvbnRzLiJ9LHtuYW1lOicicGNhcCInLGRlc2NyaXB0aW9uOiJQZXRpdGUgQ2FwaXRhbHMuIn0se25hbWU6JyJwa25hIicsZGVzY3JpcHRpb246IlByb3BvcnRpb25hbCBLYW5hLiBHZW5lcmFsbHkgdXNlZCBvbmx5IGluIEphcGFuZXNlIGZvbnRzLiJ9LHtuYW1lOicicG51bSInLGRlc2NyaXB0aW9uOiJQcm9wb3J0aW9uYWwgRmlndXJlcy4ifSx7bmFtZTonInByZWYiJyxkZXNjcmlwdGlvbjoiUHJlLWJhc2UgRm9ybXMuIFJlcXVpcmVkIGluIEtobWVyIGFuZCBNeWFubWFyIChCdXJtZXNlKSBzY3JpcHRzIGFuZCBzb3V0aGVybiBJbmRpYyBzY3JpcHRzIHRoYXQgbWF5IGRpc3BsYXkgYSBwcmUtYmFzZSBmb3JtIG9mIFJhLiJ9LHtuYW1lOicicHJlcyInLGRlc2NyaXB0aW9uOiJQcmUtYmFzZSBTdWJzdGl0dXRpb25zLiBSZXF1aXJlZCBpbiBJbmRpYyBzY3JpcHRzLiJ9LHtuYW1lOicicHN0ZiInLGRlc2NyaXB0aW9uOiJQb3N0LWJhc2UgRm9ybXMuIFJlcXVpcmVkIGluIHNjcmlwdHMgb2Ygc291dGggYW5kIHNvdXRoZWFzdCBBc2lhIHRoYXQgaGF2ZSBwb3N0LWJhc2UgZm9ybXMgZm9yIGNvbnNvbmFudHMgZWc6IEd1cm11a2hpLCBNYWxheWFsYW0sIEtobWVyLiJ9LHtuYW1lOicicHN0cyInLGRlc2NyaXB0aW9uOiJQb3N0LWJhc2UgU3Vic3RpdHV0aW9ucy4ifSx7bmFtZTonInB3aWQiJyxkZXNjcmlwdGlvbjoiUHJvcG9ydGlvbmFsIFdpZHRocy4ifSx7bmFtZTonInF3aWQiJyxkZXNjcmlwdGlvbjoiUXVhcnRlciBXaWR0aHMuIEdlbmVyYWxseSB1c2VkIG9ubHkgaW4gQ0pLViBmb250cy4ifSx7bmFtZTonInJhbmQiJyxkZXNjcmlwdGlvbjoiUmFuZG9taXplLiJ9LHtuYW1lOicicmNsdCInLGRlc2NyaXB0aW9uOiJSZXF1aXJlZCBDb250ZXh0dWFsIEFsdGVybmF0ZXMuIE1heSBhcHBseSB0byBhbnkgc2NyaXB0LCBidXQgaXMgZXNwZWNpYWxseSBpbXBvcnRhbnQgZm9yIG1hbnkgc3R5bGVzIG9mIEFyYWJpYy4ifSx7bmFtZTonInJsaWciJyxkZXNjcmlwdGlvbjoiUmVxdWlyZWQgTGlnYXR1cmVzLiBBcHBsaWVzIHRvIEFyYWJpYyBhbmQgU3lyaWFjLiBNYXkgYXBwbHkgdG8gc29tZSBvdGhlciBzY3JpcHRzLiJ9LHtuYW1lOicicmtyZiInLGRlc2NyaXB0aW9uOiJSYWthciBGb3Jtcy4gUmVxdWlyZWQgaW4gRGV2YW5hZ2FyaSBhbmQgR3VqYXJhdGkgc2NyaXB0cy4ifSx7bmFtZTonInJwaGYiJyxkZXNjcmlwdGlvbjoiUmVwaCBGb3JtLiBSZXF1aXJlZCBpbiBJbmRpYyBzY3JpcHRzLiBFLmcuIERldmFuYWdhcmksIEthbm5hZGEuIn0se25hbWU6JyJydGJkIicsZGVzY3JpcHRpb246IlJpZ2h0IEJvdW5kcy4ifSx7bmFtZTonInJ0bGEiJyxkZXNjcmlwdGlvbjoiUmlnaHQtdG8tbGVmdCBhbHRlcm5hdGVzLiJ9LHtuYW1lOicicnRsbSInLGRlc2NyaXB0aW9uOiJSaWdodC10by1sZWZ0IG1pcnJvcmVkIGZvcm1zLiJ9LHtuYW1lOicicnVieSInLGRlc2NyaXB0aW9uOiJSdWJ5IE5vdGF0aW9uIEZvcm1zLiBBcHBsaWVzIG9ubHkgdG8gSmFwYW5lc2UuIn0se25hbWU6JyJzYWx0IicsZGVzY3JpcHRpb246IlN0eWxpc3RpYyBBbHRlcm5hdGVzLiJ9LHtuYW1lOicic2luZiInLGRlc2NyaXB0aW9uOiJTY2llbnRpZmljIEluZmVyaW9ycy4ifSx7bmFtZTonInNpemUiJyxkZXNjcmlwdGlvbjoiT3B0aWNhbCBzaXplLiJ9LHtuYW1lOicic21jcCInLGRlc2NyaXB0aW9uOiJTbWFsbCBDYXBpdGFscy4gQXBwbGllcyBvbmx5IHRvIGJpY2FtZXJhbCBzY3JpcHRzLiJ9LHtuYW1lOicic21wbCInLGRlc2NyaXB0aW9uOiJTaW1wbGlmaWVkIEZvcm1zLiBBcHBsaWVzIG9ubHkgdG8gQ2hpbmVzZSBhbmQgSmFwYW5lc2UuIn0se25hbWU6JyJzc3R5IicsZGVzY3JpcHRpb246Ik1hdGggc2NyaXB0IHN0eWxlIGFsdGVybmF0ZXMuIn0se25hbWU6JyJzdGNoIicsZGVzY3JpcHRpb246IlN0cmV0Y2hpbmcgR2x5cGggRGVjb21wb3NpdGlvbi4ifSx7bmFtZTonInN1YnMiJyxkZXNjcmlwdGlvbjoiU3Vic2NyaXB0LiJ9LHtuYW1lOicic3VwcyInLGRlc2NyaXB0aW9uOiJTdXBlcnNjcmlwdC4ifSx7bmFtZTonInN3c2giJyxkZXNjcmlwdGlvbjoiU3dhc2guIERvZXMgbm90IGFwcGx5IHRvIGlkZW9ncmFwaGljIHNjcmlwdHMuIn0se25hbWU6JyJ0aXRsIicsZGVzY3JpcHRpb246IlRpdGxpbmcuIn0se25hbWU6JyJ0am1vIicsZGVzY3JpcHRpb246IlRyYWlsaW5nIEphbW8gRm9ybXMuIFJlcXVpcmVkIGZvciBIYW5ndWwgc2NyaXB0IHdoZW4gQW5jaWVudCBIYW5ndWwgd3JpdGluZyBzeXN0ZW0gaXMgc3VwcG9ydGVkLiJ9LHtuYW1lOicidG5hbSInLGRlc2NyaXB0aW9uOiJUcmFkaXRpb25hbCBOYW1lIEZvcm1zLiBBcHBsaWVzIG9ubHkgdG8gSmFwYW5lc2UuIn0se25hbWU6JyJ0bnVtIicsZGVzY3JpcHRpb246IlRhYnVsYXIgRmlndXJlcy4ifSx7bmFtZTonInRyYWQiJyxkZXNjcmlwdGlvbjoiVHJhZGl0aW9uYWwgRm9ybXMuIEFwcGxpZXMgb25seSB0byBDaGluZXNlIGFuZCBKYXBhbmVzZS4ifSx7bmFtZTonInR3aWQiJyxkZXNjcmlwdGlvbjoiVGhpcmQgV2lkdGhzLiBHZW5lcmFsbHkgdXNlZCBvbmx5IGluIENKS1YgZm9udHMuIn0se25hbWU6JyJ1bmljIicsZGVzY3JpcHRpb246IlVuaWNhc2UuIn0se25hbWU6JyJ2YWx0IicsZGVzY3JpcHRpb246IkFsdGVybmF0ZSBWZXJ0aWNhbCBNZXRyaWNzLiBBcHBsaWVzIG9ubHkgdG8gc2NyaXB0cyB3aXRoIHZlcnRpY2FsIHdyaXRpbmcgbW9kZXMuIn0se25hbWU6JyJ2YXR1IicsZGVzY3JpcHRpb246IlZhdHR1IFZhcmlhbnRzLiBVc2VkIGZvciBJbmRpYyBzY3JpcHRzLiBFLmcuIERldmFuYWdhcmkuIn0se25hbWU6JyJ2ZXJ0IicsZGVzY3JpcHRpb246IlZlcnRpY2FsIEFsdGVybmF0ZXMuIEFwcGxpZXMgb25seSB0byBzY3JpcHRzIHdpdGggdmVydGljYWwgd3JpdGluZyBtb2Rlcy4ifSx7bmFtZTonInZoYWwiJyxkZXNjcmlwdGlvbjoiQWx0ZXJuYXRlIFZlcnRpY2FsIEhhbGYgTWV0cmljcy4gVXNlZCBvbmx5IGluIENKS1YgZm9udHMuIn0se25hbWU6JyJ2am1vIicsZGVzY3JpcHRpb246IlZvd2VsIEphbW8gRm9ybXMuIFJlcXVpcmVkIGZvciBIYW5ndWwgc2NyaXB0IHdoZW4gQW5jaWVudCBIYW5ndWwgd3JpdGluZyBzeXN0ZW0gaXMgc3VwcG9ydGVkLiJ9LHtuYW1lOicidmtuYSInLGRlc2NyaXB0aW9uOiJWZXJ0aWNhbCBLYW5hIEFsdGVybmF0ZXMuIEFwcGxpZXMgb25seSB0byBmb250cyB0aGF0IHN1cHBvcnQga2FuYSAoaGlyYWdhbmEgYW5kIGthdGFrYW5hKS4ifSx7bmFtZTonInZrcm4iJyxkZXNjcmlwdGlvbjoiVmVydGljYWwgS2VybmluZy4ifSx7bmFtZTonInZwYWwiJyxkZXNjcmlwdGlvbjoiUHJvcG9ydGlvbmFsIEFsdGVybmF0ZSBWZXJ0aWNhbCBNZXRyaWNzLiBVc2VkIG1vc3RseSBpbiBDSktWIGZvbnRzLiJ9LHtuYW1lOicidnJ0MiInLGRlc2NyaXB0aW9uOiJWZXJ0aWNhbCBBbHRlcm5hdGVzIGFuZCBSb3RhdGlvbi4gQXBwbGllcyBvbmx5IHRvIHNjcmlwdHMgd2l0aCB2ZXJ0aWNhbCB3cml0aW5nIG1vZGVzLiJ9LHtuYW1lOiciemVybyInLGRlc2NyaXB0aW9uOiJTbGFzaGVkIFplcm8uIn0se25hbWU6Im5vcm1hbCIsZGVzY3JpcHRpb246Ik5vIGNoYW5nZSBpbiBnbHlwaCBzdWJzdGl0dXRpb24gb3IgcG9zaXRpb25pbmcgb2NjdXJzLiJ9LHtuYW1lOiJvZmYiLGRlc2NyaXB0aW9uOiJEaXNhYmxlIGZlYXR1cmUuIn0se25hbWU6Im9uIixkZXNjcmlwdGlvbjoiRW5hYmxlIGZlYXR1cmUuIn1dLGF0UnVsZToiQGZvbnQtZmFjZSIsc3ludGF4OiJub3JtYWwgfCA8ZmVhdHVyZS10YWctdmFsdWU+IyIscmVsZXZhbmNlOjU3LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9mb250LWZlYXR1cmUtc2V0dGluZ3MifV0sZGVzY3JpcHRpb246IlByb3ZpZGVzIGxvdy1sZXZlbCBjb250cm9sIG92ZXIgT3BlblR5cGUgZm9udCBmZWF0dXJlcy4gSXQgaXMgaW50ZW5kZWQgYXMgYSB3YXkgb2YgcHJvdmlkaW5nIGFjY2VzcyB0byBmb250IGZlYXR1cmVzIHRoYXQgYXJlIG5vdCB3aWRlbHkgdXNlZCBidXQgYXJlIG5lZWRlZCBmb3IgYSBwYXJ0aWN1bGFyIHVzZSBjYXNlLiIscmVzdHJpY3Rpb25zOlsic3RyaW5nIiwiaW50ZWdlciJdfSx7bmFtZToiZm9udC1rZXJuaW5nIixicm93c2VyczpbIkU3OSIsIkZGMzIiLCJTOSIsIkMzMyIsIk8yMCJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhhdCBrZXJuaW5nIGlzIGFwcGxpZWQgYXQgdGhlIGRpc2NyZXRpb24gb2YgdGhlIHVzZXIgYWdlbnQuIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhhdCBrZXJuaW5nIGlzIG5vdCBhcHBsaWVkLiJ9LHtuYW1lOiJub3JtYWwiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhhdCBrZXJuaW5nIGlzIGFwcGxpZWQuIn1dLHN5bnRheDoiYXV0byB8IG5vcm1hbCB8IG5vbmUiLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvZm9udC1rZXJuaW5nIn1dLGRlc2NyaXB0aW9uOiJLZXJuaW5nIGlzIHRoZSBjb250ZXh0dWFsIGFkanVzdG1lbnQgb2YgaW50ZXItZ2x5cGggc3BhY2luZy4gVGhpcyBwcm9wZXJ0eSBjb250cm9scyBtZXRyaWMga2VybmluZywga2VybmluZyB0aGF0IHV0aWxpemVzIGFkanVzdG1lbnQgZGF0YSBjb250YWluZWQgaW4gdGhlIGZvbnQuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJmb250LWxhbmd1YWdlLW92ZXJyaWRlIixicm93c2VyczpbIkZGMzQiXSx2YWx1ZXM6W3tuYW1lOiJub3JtYWwiLGRlc2NyaXB0aW9uOiJJbXBsaWVzIHRoYXQgd2hlbiByZW5kZXJpbmcgd2l0aCBPcGVuVHlwZSBmb250cyB0aGUgbGFuZ3VhZ2Ugb2YgdGhlIGRvY3VtZW50IGlzIHVzZWQgdG8gaW5mZXIgdGhlIE9wZW5UeXBlIGxhbmd1YWdlIHN5c3RlbSwgdXNlZCB0byBzZWxlY3QgbGFuZ3VhZ2Ugc3BlY2lmaWMgZmVhdHVyZXMgd2hlbiByZW5kZXJpbmcuIn1dLHN5bnRheDoibm9ybWFsIHwgPHN0cmluZz4iLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvZm9udC1sYW5ndWFnZS1vdmVycmlkZSJ9XSxkZXNjcmlwdGlvbjoiVGhlIHZhbHVlIG9mICdub3JtYWwnIGltcGxpZXMgdGhhdCB3aGVuIHJlbmRlcmluZyB3aXRoIE9wZW5UeXBlIGZvbnRzIHRoZSBsYW5ndWFnZSBvZiB0aGUgZG9jdW1lbnQgaXMgdXNlZCB0byBpbmZlciB0aGUgT3BlblR5cGUgbGFuZ3VhZ2Ugc3lzdGVtLCB1c2VkIHRvIHNlbGVjdCBsYW5ndWFnZSBzcGVjaWZpYyBmZWF0dXJlcyB3aGVuIHJlbmRlcmluZy4iLHJlc3RyaWN0aW9uczpbInN0cmluZyJdfSx7bmFtZToiZm9udC1zaXplIixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxIiwiQzEiLCJJRTUuNSIsIk83Il0sdmFsdWVzOlt7bmFtZToibGFyZ2UifSx7bmFtZToibGFyZ2VyIn0se25hbWU6Im1lZGl1bSJ9LHtuYW1lOiJzbWFsbCJ9LHtuYW1lOiJzbWFsbGVyIn0se25hbWU6IngtbGFyZ2UifSx7bmFtZToieC1zbWFsbCJ9LHtuYW1lOiJ4eC1sYXJnZSJ9LHtuYW1lOiJ4eC1zbWFsbCJ9XSxzeW50YXg6IjxhYnNvbHV0ZS1zaXplPiB8IDxyZWxhdGl2ZS1zaXplPiB8IDxsZW5ndGgtcGVyY2VudGFnZT4iLHJlbGV2YW5jZTo5NCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvZm9udC1zaXplIn1dLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhlIGRlc2lyZWQgaGVpZ2h0IG9mIGdseXBocyBmcm9tIHRoZSBmb250LiBGb3Igc2NhbGFibGUgZm9udHMsIHRoZSBmb250LXNpemUgaXMgYSBzY2FsZSBmYWN0b3IgYXBwbGllZCB0byB0aGUgRU0gdW5pdCBvZiB0aGUgZm9udC4gKE5vdGUgdGhhdCBjZXJ0YWluIGdseXBocyBtYXkgYmxlZWQgb3V0c2lkZSB0aGVpciBFTSBib3guKSBGb3Igbm9uLXNjYWxhYmxlIGZvbnRzLCB0aGUgZm9udC1zaXplIGlzIGNvbnZlcnRlZCBpbnRvIGFic29sdXRlIHVuaXRzIGFuZCBtYXRjaGVkIGFnYWluc3QgdGhlIGRlY2xhcmVkIGZvbnQtc2l6ZSBvZiB0aGUgZm9udCwgdXNpbmcgdGhlIHNhbWUgYWJzb2x1dGUgY29vcmRpbmF0ZSBzcGFjZSBmb3IgYm90aCBvZiB0aGUgbWF0Y2hlZCB2YWx1ZXMuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiJmb250LXNpemUtYWRqdXN0Iixicm93c2VyczpbIkZGMyIsIlMxNi40Il0sdmFsdWVzOlt7bmFtZToibm9uZSIsZGVzY3JpcHRpb246IkRvIG5vdCBwcmVzZXJ2ZSB0aGUgZm9udCdzIHgtaGVpZ2h0LiJ9XSxzeW50YXg6Im5vbmUgfCBbIGV4LWhlaWdodCB8IGNhcC1oZWlnaHQgfCBjaC13aWR0aCB8IGljLXdpZHRoIHwgaWMtaGVpZ2h0IF0/IFsgZnJvbS1mb250IHwgPG51bWJlcj4gXSIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9mb250LXNpemUtYWRqdXN0In1dLGRlc2NyaXB0aW9uOiJQcmVzZXJ2ZXMgdGhlIHJlYWRhYmlsaXR5IG9mIHRleHQgd2hlbiBmb250IGZhbGxiYWNrIG9jY3VycyBieSBhZGp1c3RpbmcgdGhlIGZvbnQtc2l6ZSBzbyB0aGF0IHRoZSB4LWhlaWdodCBpcyB0aGUgc2FtZSByZWdhcmRsZXNzIG9mIHRoZSBmb250IHVzZWQuIixyZXN0cmljdGlvbnM6WyJudW1iZXIiXX0se25hbWU6ImZvbnQtc3RyZXRjaCIsYnJvd3NlcnM6WyJFMTIiLCJGRjkiLCJTMTEiLCJDNjAiLCJJRTkiLCJPNDciXSx2YWx1ZXM6W3tuYW1lOiJjb25kZW5zZWQifSx7bmFtZToiZXhwYW5kZWQifSx7bmFtZToiZXh0cmEtY29uZGVuc2VkIn0se25hbWU6ImV4dHJhLWV4cGFuZGVkIn0se25hbWU6Im5hcnJvd2VyIixicm93c2VyczpbIkUxMiIsIkZGOSIsIlMxMSIsIkM2MCIsIklFOSIsIk80NyJdLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgYSBuYXJyb3dlciB2YWx1ZSByZWxhdGl2ZSB0byB0aGUgd2lkdGggb2YgdGhlIHBhcmVudCBlbGVtZW50LiJ9LHtuYW1lOiJub3JtYWwifSx7bmFtZToic2VtaS1jb25kZW5zZWQifSx7bmFtZToic2VtaS1leHBhbmRlZCJ9LHtuYW1lOiJ1bHRyYS1jb25kZW5zZWQifSx7bmFtZToidWx0cmEtZXhwYW5kZWQifSx7bmFtZToid2lkZXIiLGJyb3dzZXJzOlsiRTEyIiwiRkY5IiwiUzExIiwiQzYwIiwiSUU5IiwiTzQ3Il0sZGVzY3JpcHRpb246IkluZGljYXRlcyBhIHdpZGVyIHZhbHVlIHJlbGF0aXZlIHRvIHRoZSB3aWR0aCBvZiB0aGUgcGFyZW50IGVsZW1lbnQuIn1dLGF0UnVsZToiQGZvbnQtZmFjZSIsc3ludGF4OiI8Zm9udC1zdHJldGNoLWFic29sdXRlPnsxLDJ9IixyZWxldmFuY2U6NTYscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2ZvbnQtc3RyZXRjaCJ9XSxkZXNjcmlwdGlvbjoiU2VsZWN0cyBhIG5vcm1hbCwgY29uZGVuc2VkLCBvciBleHBhbmRlZCBmYWNlIGZyb20gYSBmb250IGZhbWlseS4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6ImZvbnQtc3R5bGUiLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzEiLCJDMSIsIklFNCIsIk83Il0sdmFsdWVzOlt7bmFtZToiaXRhbGljIixkZXNjcmlwdGlvbjoiU2VsZWN0cyBhIGZvbnQgdGhhdCBpcyBsYWJlbGVkIGFzIGFuICdpdGFsaWMnIGZhY2UsIG9yIGFuICdvYmxpcXVlJyBmYWNlIGlmIG9uZSBpcyBub3QifSx7bmFtZToibm9ybWFsIixkZXNjcmlwdGlvbjoiU2VsZWN0cyBhIGZhY2UgdGhhdCBpcyBjbGFzc2lmaWVkIGFzICdub3JtYWwnLiJ9LHtuYW1lOiJvYmxpcXVlIixkZXNjcmlwdGlvbjoiU2VsZWN0cyBhIGZvbnQgdGhhdCBpcyBsYWJlbGVkIGFzIGFuICdvYmxpcXVlJyBmYWNlLCBvciBhbiAnaXRhbGljJyBmYWNlIGlmIG9uZSBpcyBub3QuIn1dLGF0UnVsZToiQGZvbnQtZmFjZSIsc3ludGF4OiJub3JtYWwgfCBpdGFsaWMgfCBvYmxpcXVlIDxhbmdsZT57MCwyfSIscmVsZXZhbmNlOjg5LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9mb250LXN0eWxlIn1dLGRlc2NyaXB0aW9uOiJBbGxvd3MgaXRhbGljIG9yIG9ibGlxdWUgZmFjZXMgdG8gYmUgc2VsZWN0ZWQuIEl0YWxpYyBmb3JtcyBhcmUgZ2VuZXJhbGx5IGN1cnNpdmUgaW4gbmF0dXJlIHdoaWxlIG9ibGlxdWUgZmFjZXMgYXJlIHR5cGljYWxseSBzbG9wZWQgdmVyc2lvbnMgb2YgdGhlIHJlZ3VsYXIgZmFjZS4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6ImZvbnQtc3ludGhlc2lzIixicm93c2VyczpbIkU5NyIsIkZGMzQiLCJTOSIsIkM5NyIsIk84MyJdLHZhbHVlczpbe25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJEaXNhbGxvdyBhbGwgc3ludGhldGljIGZhY2VzLiJ9LHtuYW1lOiJzdHlsZSIsZGVzY3JpcHRpb246IkFsbG93IHN5bnRoZXRpYyBpdGFsaWMgZmFjZXMuIn0se25hbWU6IndlaWdodCIsZGVzY3JpcHRpb246IkFsbG93IHN5bnRoZXRpYyBib2xkIGZhY2VzLiJ9XSxzeW50YXg6Im5vbmUgfCBbIHdlaWdodCB8fCBzdHlsZSB8fCBzbWFsbC1jYXBzIHx8IHBvc2l0aW9uXSIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9mb250LXN5bnRoZXNpcyJ9XSxkZXNjcmlwdGlvbjoiQ29udHJvbHMgd2hldGhlciB1c2VyIGFnZW50cyBhcmUgYWxsb3dlZCB0byBzeW50aGVzaXplIGJvbGQgb3Igb2JsaXF1ZSBmb250IGZhY2VzIHdoZW4gYSBmb250IGZhbWlseSBsYWNrcyBib2xkIG9yIGl0YWxpYyBmYWNlcy4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6ImZvbnQtdmFyaWFudCIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMSIsIkMxIiwiSUU0IiwiTzMuNSJdLHZhbHVlczpbe25hbWU6Im5vcm1hbCIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIGZhY2UgdGhhdCBpcyBub3QgbGFiZWxlZCBhcyBhIHNtYWxsLWNhcHMgZm9udC4ifSx7bmFtZToic21hbGwtY2FwcyIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIGZvbnQgdGhhdCBpcyBsYWJlbGVkIGFzIGEgc21hbGwtY2FwcyBmb250LiBJZiBhIGdlbnVpbmUgc21hbGwtY2FwcyBmb250IGlzIG5vdCBhdmFpbGFibGUsIHVzZXIgYWdlbnRzIHNob3VsZCBzaW11bGF0ZSBhIHNtYWxsLWNhcHMgZm9udC4ifV0sc3ludGF4OiJub3JtYWwgfCBub25lIHwgWyA8Y29tbW9uLWxpZy12YWx1ZXM+IHx8IDxkaXNjcmV0aW9uYXJ5LWxpZy12YWx1ZXM+IHx8IDxoaXN0b3JpY2FsLWxpZy12YWx1ZXM+IHx8IDxjb250ZXh0dWFsLWFsdC12YWx1ZXM+IHx8IHN0eWxpc3RpYyggPGZlYXR1cmUtdmFsdWUtbmFtZT4gKSB8fCBoaXN0b3JpY2FsLWZvcm1zIHx8IHN0eWxlc2V0KCA8ZmVhdHVyZS12YWx1ZS1uYW1lPiMgKSB8fCBjaGFyYWN0ZXItdmFyaWFudCggPGZlYXR1cmUtdmFsdWUtbmFtZT4jICkgfHwgc3dhc2goIDxmZWF0dXJlLXZhbHVlLW5hbWU+ICkgfHwgb3JuYW1lbnRzKCA8ZmVhdHVyZS12YWx1ZS1uYW1lPiApIHx8IGFubm90YXRpb24oIDxmZWF0dXJlLXZhbHVlLW5hbWU+ICkgfHwgWyBzbWFsbC1jYXBzIHwgYWxsLXNtYWxsLWNhcHMgfCBwZXRpdGUtY2FwcyB8IGFsbC1wZXRpdGUtY2FwcyB8IHVuaWNhc2UgfCB0aXRsaW5nLWNhcHMgXSB8fCA8bnVtZXJpYy1maWd1cmUtdmFsdWVzPiB8fCA8bnVtZXJpYy1zcGFjaW5nLXZhbHVlcz4gfHwgPG51bWVyaWMtZnJhY3Rpb24tdmFsdWVzPiB8fCBvcmRpbmFsIHx8IHNsYXNoZWQtemVybyB8fCA8ZWFzdC1hc2lhbi12YXJpYW50LXZhbHVlcz4gfHwgPGVhc3QtYXNpYW4td2lkdGgtdmFsdWVzPiB8fCBydWJ5IF0iLHJlbGV2YW5jZTo2NCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvZm9udC12YXJpYW50In1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdmFyaWFudCByZXByZXNlbnRhdGlvbnMgb2YgdGhlIGZvbnQiLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6ImZvbnQtdmFyaWFudC1hbHRlcm5hdGVzIixicm93c2VyczpbIkUxMTEiLCJGRjM0IiwiUzkuMSIsIkMxMTEiLCJPOTciXSx2YWx1ZXM6W3tuYW1lOiJhbm5vdGF0aW9uKCkiLGRlc2NyaXB0aW9uOiJFbmFibGVzIGRpc3BsYXkgb2YgYWx0ZXJuYXRlIGFubm90YXRpb24gZm9ybXMuIn0se25hbWU6ImNoYXJhY3Rlci12YXJpYW50KCkiLGRlc2NyaXB0aW9uOiJFbmFibGVzIGRpc3BsYXkgb2Ygc3BlY2lmaWMgY2hhcmFjdGVyIHZhcmlhbnRzLiJ9LHtuYW1lOiJoaXN0b3JpY2FsLWZvcm1zIixkZXNjcmlwdGlvbjoiRW5hYmxlcyBkaXNwbGF5IG9mIGhpc3RvcmljYWwgZm9ybXMuIn0se25hbWU6Im5vcm1hbCIsZGVzY3JpcHRpb246Ik5vbmUgb2YgdGhlIGZlYXR1cmVzIGFyZSBlbmFibGVkLiJ9LHtuYW1lOiJvcm5hbWVudHMoKSIsZGVzY3JpcHRpb246IkVuYWJsZXMgcmVwbGFjZW1lbnQgb2YgZGVmYXVsdCBnbHlwaHMgd2l0aCBvcm5hbWVudHMsIGlmIHByb3ZpZGVkIGluIHRoZSBmb250LiJ9LHtuYW1lOiJzdHlsZXNldCgpIixkZXNjcmlwdGlvbjoiRW5hYmxlcyBkaXNwbGF5IHdpdGggc3R5bGlzdGljIHNldHMuIn0se25hbWU6InN0eWxpc3RpYygpIixkZXNjcmlwdGlvbjoiRW5hYmxlcyBkaXNwbGF5IG9mIHN0eWxpc3RpYyBhbHRlcm5hdGVzLiJ9LHtuYW1lOiJzd2FzaCgpIixkZXNjcmlwdGlvbjoiRW5hYmxlcyBkaXNwbGF5IG9mIHN3YXNoIGdseXBocy4ifV0sc3ludGF4OiJub3JtYWwgfCBbIHN0eWxpc3RpYyggPGZlYXR1cmUtdmFsdWUtbmFtZT4gKSB8fCBoaXN0b3JpY2FsLWZvcm1zIHx8IHN0eWxlc2V0KCA8ZmVhdHVyZS12YWx1ZS1uYW1lPiMgKSB8fCBjaGFyYWN0ZXItdmFyaWFudCggPGZlYXR1cmUtdmFsdWUtbmFtZT4jICkgfHwgc3dhc2goIDxmZWF0dXJlLXZhbHVlLW5hbWU+ICkgfHwgb3JuYW1lbnRzKCA8ZmVhdHVyZS12YWx1ZS1uYW1lPiApIHx8IGFubm90YXRpb24oIDxmZWF0dXJlLXZhbHVlLW5hbWU+ICkgXSIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9mb250LXZhcmlhbnQtYWx0ZXJuYXRlcyJ9XSxkZXNjcmlwdGlvbjoiRm9yIGFueSBnaXZlbiBjaGFyYWN0ZXIsIGZvbnRzIGNhbiBwcm92aWRlIGEgdmFyaWV0eSBvZiBhbHRlcm5hdGUgZ2x5cGhzIGluIGFkZGl0aW9uIHRvIHRoZSBkZWZhdWx0IGdseXBoIGZvciB0aGF0IGNoYXJhY3Rlci4gVGhpcyBwcm9wZXJ0eSBwcm92aWRlcyBjb250cm9sIG92ZXIgdGhlIHNlbGVjdGlvbiBvZiB0aGVzZSBhbHRlcm5hdGUgZ2x5cGhzLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiZm9udC12YXJpYW50LWNhcHMiLGJyb3dzZXJzOlsiRTc5IiwiRkYzNCIsIlM5LjEiLCJDNTIiLCJPMzkiXSx2YWx1ZXM6W3tuYW1lOiJhbGwtcGV0aXRlLWNhcHMiLGRlc2NyaXB0aW9uOiJFbmFibGVzIGRpc3BsYXkgb2YgcGV0aXRlIGNhcGl0YWxzIGZvciBib3RoIHVwcGVyIGFuZCBsb3dlcmNhc2UgbGV0dGVycy4ifSx7bmFtZToiYWxsLXNtYWxsLWNhcHMiLGRlc2NyaXB0aW9uOiJFbmFibGVzIGRpc3BsYXkgb2Ygc21hbGwgY2FwaXRhbHMgZm9yIGJvdGggdXBwZXIgYW5kIGxvd2VyY2FzZSBsZXR0ZXJzLiJ9LHtuYW1lOiJub3JtYWwiLGRlc2NyaXB0aW9uOiJOb25lIG9mIHRoZSBmZWF0dXJlcyBhcmUgZW5hYmxlZC4ifSx7bmFtZToicGV0aXRlLWNhcHMiLGRlc2NyaXB0aW9uOiJFbmFibGVzIGRpc3BsYXkgb2YgcGV0aXRlIGNhcGl0YWxzLiJ9LHtuYW1lOiJzbWFsbC1jYXBzIixkZXNjcmlwdGlvbjoiRW5hYmxlcyBkaXNwbGF5IG9mIHNtYWxsIGNhcGl0YWxzLiBTbWFsbC1jYXBzIGdseXBocyB0eXBpY2FsbHkgdXNlIHRoZSBmb3JtIG9mIHVwcGVyY2FzZSBsZXR0ZXJzIGJ1dCBhcmUgcmVkdWNlZCB0byB0aGUgc2l6ZSBvZiBsb3dlcmNhc2UgbGV0dGVycy4ifSx7bmFtZToidGl0bGluZy1jYXBzIixkZXNjcmlwdGlvbjoiRW5hYmxlcyBkaXNwbGF5IG9mIHRpdGxpbmcgY2FwaXRhbHMuIn0se25hbWU6InVuaWNhc2UiLGRlc2NyaXB0aW9uOiJFbmFibGVzIGRpc3BsYXkgb2YgbWl4dHVyZSBvZiBzbWFsbCBjYXBpdGFscyBmb3IgdXBwZXJjYXNlIGxldHRlcnMgd2l0aCBub3JtYWwgbG93ZXJjYXNlIGxldHRlcnMuIn1dLHN5bnRheDoibm9ybWFsIHwgc21hbGwtY2FwcyB8IGFsbC1zbWFsbC1jYXBzIHwgcGV0aXRlLWNhcHMgfCBhbGwtcGV0aXRlLWNhcHMgfCB1bmljYXNlIHwgdGl0bGluZy1jYXBzIixyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2ZvbnQtdmFyaWFudC1jYXBzIn1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgY29udHJvbCBvdmVyIGNhcGl0YWxpemVkIGZvcm1zLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiZm9udC12YXJpYW50LWVhc3QtYXNpYW4iLGJyb3dzZXJzOlsiRTc5IiwiRkYzNCIsIlM5LjEiLCJDNjMiLCJPNTAiXSx2YWx1ZXM6W3tuYW1lOiJmdWxsLXdpZHRoIixkZXNjcmlwdGlvbjoiRW5hYmxlcyByZW5kZXJpbmcgb2YgZnVsbC13aWR0aCB2YXJpYW50cy4ifSx7bmFtZToiamlzMDQiLGRlc2NyaXB0aW9uOiJFbmFibGVzIHJlbmRlcmluZyBvZiBKSVMwNCBmb3Jtcy4ifSx7bmFtZToiamlzNzgiLGRlc2NyaXB0aW9uOiJFbmFibGVzIHJlbmRlcmluZyBvZiBKSVM3OCBmb3Jtcy4ifSx7bmFtZToiamlzODMiLGRlc2NyaXB0aW9uOiJFbmFibGVzIHJlbmRlcmluZyBvZiBKSVM4MyBmb3Jtcy4ifSx7bmFtZToiamlzOTAiLGRlc2NyaXB0aW9uOiJFbmFibGVzIHJlbmRlcmluZyBvZiBKSVM5MCBmb3Jtcy4ifSx7bmFtZToibm9ybWFsIixkZXNjcmlwdGlvbjoiTm9uZSBvZiB0aGUgZmVhdHVyZXMgYXJlIGVuYWJsZWQuIn0se25hbWU6InByb3BvcnRpb25hbC13aWR0aCIsZGVzY3JpcHRpb246IkVuYWJsZXMgcmVuZGVyaW5nIG9mIHByb3BvcnRpb25hbGx5LXNwYWNlZCB2YXJpYW50cy4ifSx7bmFtZToicnVieSIsZGVzY3JpcHRpb246IkVuYWJsZXMgZGlzcGxheSBvZiBydWJ5IHZhcmlhbnQgZ2x5cGhzLiJ9LHtuYW1lOiJzaW1wbGlmaWVkIixkZXNjcmlwdGlvbjoiRW5hYmxlcyByZW5kZXJpbmcgb2Ygc2ltcGxpZmllZCBmb3Jtcy4ifSx7bmFtZToidHJhZGl0aW9uYWwiLGRlc2NyaXB0aW9uOiJFbmFibGVzIHJlbmRlcmluZyBvZiB0cmFkaXRpb25hbCBmb3Jtcy4ifV0sc3ludGF4OiJub3JtYWwgfCBbIDxlYXN0LWFzaWFuLXZhcmlhbnQtdmFsdWVzPiB8fCA8ZWFzdC1hc2lhbi13aWR0aC12YWx1ZXM+IHx8IHJ1YnkgXSIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9mb250LXZhcmlhbnQtZWFzdC1hc2lhbiJ9XSxkZXNjcmlwdGlvbjoiQWxsb3dzIGNvbnRyb2wgb2YgZ2x5cGggc3Vic3RpdHV0ZSBhbmQgcG9zaXRpb25pbmcgaW4gRWFzdCBBc2lhbiB0ZXh0LiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiZm9udC12YXJpYW50LWxpZ2F0dXJlcyIsYnJvd3NlcnM6WyJFNzkiLCJGRjM0IiwiUzkuMSIsIkMzNCIsIk8yMSJdLHZhbHVlczpbe25hbWU6ImFkZGl0aW9uYWwtbGlnYXR1cmVzIixkZXNjcmlwdGlvbjoiRW5hYmxlcyBkaXNwbGF5IG9mIGFkZGl0aW9uYWwgbGlnYXR1cmVzLiJ9LHtuYW1lOiJjb21tb24tbGlnYXR1cmVzIixkZXNjcmlwdGlvbjoiRW5hYmxlcyBkaXNwbGF5IG9mIGNvbW1vbiBsaWdhdHVyZXMuIn0se25hbWU6ImNvbnRleHR1YWwiLGJyb3dzZXJzOlsiRTc5IiwiRkYzNCIsIlM5LjEiLCJDMzQiLCJPMjEiXSxkZXNjcmlwdGlvbjoiRW5hYmxlcyBkaXNwbGF5IG9mIGNvbnRleHR1YWwgYWx0ZXJuYXRlcy4ifSx7bmFtZToiZGlzY3JldGlvbmFyeS1saWdhdHVyZXMiLGRlc2NyaXB0aW9uOiJFbmFibGVzIGRpc3BsYXkgb2YgZGlzY3JldGlvbmFyeSBsaWdhdHVyZXMuIn0se25hbWU6Imhpc3RvcmljYWwtbGlnYXR1cmVzIixkZXNjcmlwdGlvbjoiRW5hYmxlcyBkaXNwbGF5IG9mIGhpc3RvcmljYWwgbGlnYXR1cmVzLiJ9LHtuYW1lOiJuby1hZGRpdGlvbmFsLWxpZ2F0dXJlcyIsZGVzY3JpcHRpb246IkRpc2FibGVzIGRpc3BsYXkgb2YgYWRkaXRpb25hbCBsaWdhdHVyZXMuIn0se25hbWU6Im5vLWNvbW1vbi1saWdhdHVyZXMiLGRlc2NyaXB0aW9uOiJEaXNhYmxlcyBkaXNwbGF5IG9mIGNvbW1vbiBsaWdhdHVyZXMuIn0se25hbWU6Im5vLWNvbnRleHR1YWwiLGJyb3dzZXJzOlsiRTc5IiwiRkYzNCIsIlM5LjEiLCJDMzQiLCJPMjEiXSxkZXNjcmlwdGlvbjoiRGlzYWJsZXMgZGlzcGxheSBvZiBjb250ZXh0dWFsIGFsdGVybmF0ZXMuIn0se25hbWU6Im5vLWRpc2NyZXRpb25hcnktbGlnYXR1cmVzIixkZXNjcmlwdGlvbjoiRGlzYWJsZXMgZGlzcGxheSBvZiBkaXNjcmV0aW9uYXJ5IGxpZ2F0dXJlcy4ifSx7bmFtZToibm8taGlzdG9yaWNhbC1saWdhdHVyZXMiLGRlc2NyaXB0aW9uOiJEaXNhYmxlcyBkaXNwbGF5IG9mIGhpc3RvcmljYWwgbGlnYXR1cmVzLiJ9LHtuYW1lOiJub25lIixicm93c2VyczpbIkU3OSIsIkZGMzQiLCJTOS4xIiwiQzM0IiwiTzIxIl0sZGVzY3JpcHRpb246IkRpc2FibGVzIGFsbCBsaWdhdHVyZXMuIn0se25hbWU6Im5vcm1hbCIsZGVzY3JpcHRpb246IkltcGxpZXMgdGhhdCB0aGUgZGVmYXVsdHMgc2V0IGJ5IHRoZSBmb250IGFyZSB1c2VkLiJ9XSxzeW50YXg6Im5vcm1hbCB8IG5vbmUgfCBbIDxjb21tb24tbGlnLXZhbHVlcz4gfHwgPGRpc2NyZXRpb25hcnktbGlnLXZhbHVlcz4gfHwgPGhpc3RvcmljYWwtbGlnLXZhbHVlcz4gfHwgPGNvbnRleHR1YWwtYWx0LXZhbHVlcz4gXSIscmVsZXZhbmNlOjUyLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9mb250LXZhcmlhbnQtbGlnYXR1cmVzIn1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgY29udHJvbCBvdmVyIHdoaWNoIGxpZ2F0dXJlcyBhcmUgZW5hYmxlZCBvciBkaXNhYmxlZC4gQSB2YWx1ZSBvZiAnbm9ybWFsJyBpbXBsaWVzIHRoYXQgdGhlIGRlZmF1bHRzIHNldCBieSB0aGUgZm9udCBhcmUgdXNlZC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6ImZvbnQtdmFyaWFudC1udW1lcmljIixicm93c2VyczpbIkU3OSIsIkZGMzQiLCJTOS4xIiwiQzUyIiwiTzM5Il0sdmFsdWVzOlt7bmFtZToiZGlhZ29uYWwtZnJhY3Rpb25zIixkZXNjcmlwdGlvbjoiRW5hYmxlcyBkaXNwbGF5IG9mIGxpbmluZyBkaWFnb25hbCBmcmFjdGlvbnMuIn0se25hbWU6ImxpbmluZy1udW1zIixkZXNjcmlwdGlvbjoiRW5hYmxlcyBkaXNwbGF5IG9mIGxpbmluZyBudW1lcmFscy4ifSx7bmFtZToibm9ybWFsIixkZXNjcmlwdGlvbjoiTm9uZSBvZiB0aGUgZmVhdHVyZXMgYXJlIGVuYWJsZWQuIn0se25hbWU6Im9sZHN0eWxlLW51bXMiLGRlc2NyaXB0aW9uOiJFbmFibGVzIGRpc3BsYXkgb2Ygb2xkLXN0eWxlIG51bWVyYWxzLiJ9LHtuYW1lOiJvcmRpbmFsIixkZXNjcmlwdGlvbjoiRW5hYmxlcyBkaXNwbGF5IG9mIGxldHRlciBmb3JtcyB1c2VkIHdpdGggb3JkaW5hbCBudW1iZXJzLiJ9LHtuYW1lOiJwcm9wb3J0aW9uYWwtbnVtcyIsZGVzY3JpcHRpb246IkVuYWJsZXMgZGlzcGxheSBvZiBwcm9wb3J0aW9uYWwgbnVtZXJhbHMuIn0se25hbWU6InNsYXNoZWQtemVybyIsZGVzY3JpcHRpb246IkVuYWJsZXMgZGlzcGxheSBvZiBzbGFzaGVkIHplcm9zLiJ9LHtuYW1lOiJzdGFja2VkLWZyYWN0aW9ucyIsZGVzY3JpcHRpb246IkVuYWJsZXMgZGlzcGxheSBvZiBsaW5pbmcgc3RhY2tlZCBmcmFjdGlvbnMuIn0se25hbWU6InRhYnVsYXItbnVtcyIsZGVzY3JpcHRpb246IkVuYWJsZXMgZGlzcGxheSBvZiB0YWJ1bGFyIG51bWVyYWxzLiJ9XSxzeW50YXg6Im5vcm1hbCB8IFsgPG51bWVyaWMtZmlndXJlLXZhbHVlcz4gfHwgPG51bWVyaWMtc3BhY2luZy12YWx1ZXM+IHx8IDxudW1lcmljLWZyYWN0aW9uLXZhbHVlcz4gfHwgb3JkaW5hbCB8fCBzbGFzaGVkLXplcm8gXSIscmVsZXZhbmNlOjUxLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9mb250LXZhcmlhbnQtbnVtZXJpYyJ9XSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGNvbnRyb2wgb3ZlciBudW1lcmljYWwgZm9ybXMuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJmb250LXZhcmlhbnQtcG9zaXRpb24iLGJyb3dzZXJzOlsiRTExNyIsIkZGMzQiLCJTOS4xIiwiQzExNyIsIk8xMDMiXSx2YWx1ZXM6W3tuYW1lOiJub3JtYWwiLGRlc2NyaXB0aW9uOiJOb25lIG9mIHRoZSBmZWF0dXJlcyBhcmUgZW5hYmxlZC4ifSx7bmFtZToic3ViIixkZXNjcmlwdGlvbjoiRW5hYmxlcyBkaXNwbGF5IG9mIHN1YnNjcmlwdCB2YXJpYW50cyAoT3BlblR5cGUgZmVhdHVyZTogc3VicykuIn0se25hbWU6InN1cGVyIixkZXNjcmlwdGlvbjoiRW5hYmxlcyBkaXNwbGF5IG9mIHN1cGVyc2NyaXB0IHZhcmlhbnRzIChPcGVuVHlwZSBmZWF0dXJlOiBzdXBzKS4ifV0sc3ludGF4OiJub3JtYWwgfCBzdWIgfCBzdXBlciIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9mb250LXZhcmlhbnQtcG9zaXRpb24ifV0sZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgdmVydGljYWwgcG9zaXRpb24iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6ImZvbnQtd2VpZ2h0Iixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxIiwiQzIiLCJJRTMiLCJPMy41Il0sdmFsdWVzOlt7bmFtZToiMTAwIixkZXNjcmlwdGlvbjoiVGhpbiJ9LHtuYW1lOiIyMDAiLGRlc2NyaXB0aW9uOiJFeHRyYSBMaWdodCAoVWx0cmEgTGlnaHQpIn0se25hbWU6IjMwMCIsZGVzY3JpcHRpb246IkxpZ2h0In0se25hbWU6IjQwMCIsZGVzY3JpcHRpb246Ik5vcm1hbCJ9LHtuYW1lOiI1MDAiLGRlc2NyaXB0aW9uOiJNZWRpdW0ifSx7bmFtZToiNjAwIixkZXNjcmlwdGlvbjoiU2VtaSBCb2xkIChEZW1pIEJvbGQpIn0se25hbWU6IjcwMCIsZGVzY3JpcHRpb246IkJvbGQifSx7bmFtZToiODAwIixkZXNjcmlwdGlvbjoiRXh0cmEgQm9sZCAoVWx0cmEgQm9sZCkifSx7bmFtZToiOTAwIixkZXNjcmlwdGlvbjoiQmxhY2sgKEhlYXZ5KSJ9LHtuYW1lOiJib2xkIixkZXNjcmlwdGlvbjoiU2FtZSBhcyA3MDAifSx7bmFtZToiYm9sZGVyIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSB3ZWlnaHQgb2YgdGhlIGZhY2UgYm9sZGVyIHRoYW4gdGhlIGluaGVyaXRlZCB2YWx1ZS4ifSx7bmFtZToibGlnaHRlciIsZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgd2VpZ2h0IG9mIHRoZSBmYWNlIGxpZ2h0ZXIgdGhhbiB0aGUgaW5oZXJpdGVkIHZhbHVlLiJ9LHtuYW1lOiJub3JtYWwiLGRlc2NyaXB0aW9uOiJTYW1lIGFzIDQwMCJ9XSxhdFJ1bGU6IkBmb250LWZhY2UiLHN5bnRheDoiPGZvbnQtd2VpZ2h0LWFic29sdXRlPnsxLDJ9IixyZWxldmFuY2U6OTMscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2ZvbnQtd2VpZ2h0In1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgd2VpZ2h0IG9mIGdseXBocyBpbiB0aGUgZm9udCwgdGhlaXIgZGVncmVlIG9mIGJsYWNrbmVzcyBvciBzdHJva2UgdGhpY2tuZXNzLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiZ2x5cGgtb3JpZW50YXRpb24taG9yaXpvbnRhbCIscmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJDb250cm9scyBnbHlwaCBvcmllbnRhdGlvbiB3aGVuIHRoZSBpbmxpbmUtcHJvZ3Jlc3Npb24tZGlyZWN0aW9uIGlzIGhvcml6b250YWwuIixyZXN0cmljdGlvbnM6WyJhbmdsZSIsIm51bWJlciJdfSx7bmFtZToiZ2x5cGgtb3JpZW50YXRpb24tdmVydGljYWwiLGJyb3dzZXJzOlsiUzEzLjEiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiU2V0cyB0aGUgb3JpZW50YXRpb24gYmFzZWQgb24gdGhlIGZ1bGx3aWR0aCBvciBub24tZnVsbHdpZHRoIGNoYXJhY3RlcnMgYW5kIHRoZSBtb3N0IGNvbW1vbiBvcmllbnRhdGlvbi4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJDb250cm9scyBnbHlwaCBvcmllbnRhdGlvbiB3aGVuIHRoZSBpbmxpbmUtcHJvZ3Jlc3Npb24tZGlyZWN0aW9uIGlzIHZlcnRpY2FsLiIscmVzdHJpY3Rpb25zOlsiYW5nbGUiLCJudW1iZXIiLCJlbnVtIl19LHtuYW1lOiJncmlkLWFyZWEiLGJyb3dzZXJzOlsiRTE2IiwiRkY1MiIsIlMxMC4xIiwiQzU3IiwiTzQ0Il0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IlRoZSBwcm9wZXJ0eSBjb250cmlidXRlcyBub3RoaW5nIHRvIHRoZSBncmlkIGl0ZW0ncyBwbGFjZW1lbnQsIGluZGljYXRpbmcgYXV0by1wbGFjZW1lbnQsIGFuIGF1dG9tYXRpYyBzcGFuLCBvciBhIGRlZmF1bHQgc3BhbiBvZiBvbmUuIn0se25hbWU6InNwYW4iLGRlc2NyaXB0aW9uOiJDb250cmlidXRlcyBhIGdyaWQgc3BhbiB0byB0aGUgZ3JpZCBpdGVtJ3MgcGxhY2VtZW50IHN1Y2ggdGhhdCB0aGUgY29ycmVzcG9uZGluZyBlZGdlIG9mIHRoZSBncmlkIGl0ZW0ncyBncmlkIGFyZWEgaXMgTiBsaW5lcyBmcm9tIGl0cyBvcHBvc2l0ZSBlZGdlLiJ9XSxzeW50YXg6IjxncmlkLWxpbmU+IFsgLyA8Z3JpZC1saW5lPiBdezAsM30iLHJlbGV2YW5jZTo1NyxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvZ3JpZC1hcmVhIn1dLGRlc2NyaXB0aW9uOiJEZXRlcm1pbmUgYSBncmlkIGl0ZW0ncyBzaXplIGFuZCBsb2NhdGlvbiB3aXRoaW4gdGhlIGdyaWQgYnkgY29udHJpYnV0aW5nIGEgbGluZSwgYSBzcGFuLCBvciBub3RoaW5nIChhdXRvbWF0aWMpIHRvIGl0cyBncmlkIHBsYWNlbWVudC4gU2hvcnRoYW5kIGZvciAnZ3JpZC1yb3ctc3RhcnQnLCAnZ3JpZC1jb2x1bW4tc3RhcnQnLCAnZ3JpZC1yb3ctZW5kJywgYW5kICdncmlkLWNvbHVtbi1lbmQnLiIscmVzdHJpY3Rpb25zOlsiaWRlbnRpZmllciIsImludGVnZXIiXX0se25hbWU6ImdyaWQiLGJyb3dzZXJzOlsiRTE2IiwiRkY1MiIsIlMxMC4xIiwiQzU3IiwiTzQ0Il0sc3ludGF4OiI8J2dyaWQtdGVtcGxhdGUnPiB8IDwnZ3JpZC10ZW1wbGF0ZS1yb3dzJz4gLyBbIGF1dG8tZmxvdyAmJiBkZW5zZT8gXSA8J2dyaWQtYXV0by1jb2x1bW5zJz4/IHwgWyBhdXRvLWZsb3cgJiYgZGVuc2U/IF0gPCdncmlkLWF1dG8tcm93cyc+PyAvIDwnZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zJz4iLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvZ3JpZCJ9XSxkZXNjcmlwdGlvbjoiVGhlIGdyaWQgQ1NTIHByb3BlcnR5IGlzIGEgc2hvcnRoYW5kIHByb3BlcnR5IHRoYXQgc2V0cyBhbGwgb2YgdGhlIGV4cGxpY2l0IGdyaWQgcHJvcGVydGllcyAoJ2dyaWQtdGVtcGxhdGUtcm93cycsICdncmlkLXRlbXBsYXRlLWNvbHVtbnMnLCBhbmQgJ2dyaWQtdGVtcGxhdGUtYXJlYXMnKSwgYW5kIGFsbCB0aGUgaW1wbGljaXQgZ3JpZCBwcm9wZXJ0aWVzICgnZ3JpZC1hdXRvLXJvd3MnLCAnZ3JpZC1hdXRvLWNvbHVtbnMnLCBhbmQgJ2dyaWQtYXV0by1mbG93JyksIGluIGEgc2luZ2xlIGRlY2xhcmF0aW9uLiIscmVzdHJpY3Rpb25zOlsiaWRlbnRpZmllciIsImxlbmd0aCIsInBlcmNlbnRhZ2UiLCJzdHJpbmciLCJlbnVtIl19LHtuYW1lOiJncmlkLWF1dG8tY29sdW1ucyIsYnJvd3NlcnM6WyJFMTYiLCJGRjcwIiwiUzEwLjEiLCJDNTciLCJJRTEwIiwiTzQ0Il0sdmFsdWVzOlt7bmFtZToibWluLWNvbnRlbnQiLGRlc2NyaXB0aW9uOiJSZXByZXNlbnRzIHRoZSBsYXJnZXN0IG1pbi1jb250ZW50IGNvbnRyaWJ1dGlvbiBvZiB0aGUgZ3JpZCBpdGVtcyBvY2N1cHlpbmcgdGhlIGdyaWQgdHJhY2suIn0se25hbWU6Im1heC1jb250ZW50IixkZXNjcmlwdGlvbjoiUmVwcmVzZW50cyB0aGUgbGFyZ2VzdCBtYXgtY29udGVudCBjb250cmlidXRpb24gb2YgdGhlIGdyaWQgaXRlbXMgb2NjdXB5aW5nIHRoZSBncmlkIHRyYWNrLiJ9LHtuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiQXMgYSBtYXhpbXVtLCBpZGVudGljYWwgdG8gJ21heC1jb250ZW50Jy4gQXMgYSBtaW5pbXVtLCByZXByZXNlbnRzIHRoZSBsYXJnZXN0IG1pbmltdW0gc2l6ZSAoYXMgc3BlY2lmaWVkIGJ5IG1pbi13aWR0aC9taW4taGVpZ2h0KSBvZiB0aGUgZ3JpZCBpdGVtcyBvY2N1cHlpbmcgdGhlIGdyaWQgdHJhY2suIn0se25hbWU6Im1pbm1heCgpIixkZXNjcmlwdGlvbjoiRGVmaW5lcyBhIHNpemUgcmFuZ2UgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIG1pbiBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIG1heC4ifV0sc3ludGF4OiI8dHJhY2stc2l6ZT4rIixyZWxldmFuY2U6NTEscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2dyaWQtYXV0by1jb2x1bW5zIn1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhlIHNpemUgb2YgaW1wbGljaXRseSBjcmVhdGVkIGNvbHVtbnMuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiJncmlkLWF1dG8tZmxvdyIsYnJvd3NlcnM6WyJFMTYiLCJGRjUyIiwiUzEwLjEiLCJDNTciLCJPNDQiXSx2YWx1ZXM6W3tuYW1lOiJyb3ciLGRlc2NyaXB0aW9uOiJUaGUgYXV0by1wbGFjZW1lbnQgYWxnb3JpdGhtIHBsYWNlcyBpdGVtcyBieSBmaWxsaW5nIGVhY2ggcm93IGluIHR1cm4sIGFkZGluZyBuZXcgcm93cyBhcyBuZWNlc3NhcnkuIn0se25hbWU6ImNvbHVtbiIsZGVzY3JpcHRpb246IlRoZSBhdXRvLXBsYWNlbWVudCBhbGdvcml0aG0gcGxhY2VzIGl0ZW1zIGJ5IGZpbGxpbmcgZWFjaCBjb2x1bW4gaW4gdHVybiwgYWRkaW5nIG5ldyBjb2x1bW5zIGFzIG5lY2Vzc2FyeS4ifSx7bmFtZToiZGVuc2UiLGRlc2NyaXB0aW9uOidJZiBzcGVjaWZpZWQsIHRoZSBhdXRvLXBsYWNlbWVudCBhbGdvcml0aG0gdXNlcyBhICJkZW5zZSIgcGFja2luZyBhbGdvcml0aG0sIHdoaWNoIGF0dGVtcHRzIHRvIGZpbGwgaW4gaG9sZXMgZWFybGllciBpbiB0aGUgZ3JpZCBpZiBzbWFsbGVyIGl0ZW1zIGNvbWUgdXAgbGF0ZXIuJ31dLHN5bnRheDoiWyByb3cgfCBjb2x1bW4gXSB8fCBkZW5zZSIscmVsZXZhbmNlOjUzLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ncmlkLWF1dG8tZmxvdyJ9XSxkZXNjcmlwdGlvbjoiQ29udHJvbHMgaG93IHRoZSBhdXRvLXBsYWNlbWVudCBhbGdvcml0aG0gd29ya3MsIHNwZWNpZnlpbmcgZXhhY3RseSBob3cgYXV0by1wbGFjZWQgaXRlbXMgZ2V0IGZsb3dlZCBpbnRvIHRoZSBncmlkLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiZ3JpZC1hdXRvLXJvd3MiLGJyb3dzZXJzOlsiRTE2IiwiRkY3MCIsIlMxMC4xIiwiQzU3IiwiSUUxMCIsIk80NCJdLHZhbHVlczpbe25hbWU6Im1pbi1jb250ZW50IixkZXNjcmlwdGlvbjoiUmVwcmVzZW50cyB0aGUgbGFyZ2VzdCBtaW4tY29udGVudCBjb250cmlidXRpb24gb2YgdGhlIGdyaWQgaXRlbXMgb2NjdXB5aW5nIHRoZSBncmlkIHRyYWNrLiJ9LHtuYW1lOiJtYXgtY29udGVudCIsZGVzY3JpcHRpb246IlJlcHJlc2VudHMgdGhlIGxhcmdlc3QgbWF4LWNvbnRlbnQgY29udHJpYnV0aW9uIG9mIHRoZSBncmlkIGl0ZW1zIG9jY3VweWluZyB0aGUgZ3JpZCB0cmFjay4ifSx7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IkFzIGEgbWF4aW11bSwgaWRlbnRpY2FsIHRvICdtYXgtY29udGVudCcuIEFzIGEgbWluaW11bSwgcmVwcmVzZW50cyB0aGUgbGFyZ2VzdCBtaW5pbXVtIHNpemUgKGFzIHNwZWNpZmllZCBieSBtaW4td2lkdGgvbWluLWhlaWdodCkgb2YgdGhlIGdyaWQgaXRlbXMgb2NjdXB5aW5nIHRoZSBncmlkIHRyYWNrLiJ9LHtuYW1lOiJtaW5tYXgoKSIsZGVzY3JpcHRpb246IkRlZmluZXMgYSBzaXplIHJhbmdlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byBtaW4gYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byBtYXguIn1dLHN5bnRheDoiPHRyYWNrLXNpemU+KyIscmVsZXZhbmNlOjUyLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ncmlkLWF1dG8tcm93cyJ9XSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSBzaXplIG9mIGltcGxpY2l0bHkgY3JlYXRlZCByb3dzLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToiZ3JpZC1jb2x1bW4iLGJyb3dzZXJzOlsiRTE2IiwiRkY1MiIsIlMxMC4xIiwiQzU3IiwiTzQ0Il0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IlRoZSBwcm9wZXJ0eSBjb250cmlidXRlcyBub3RoaW5nIHRvIHRoZSBncmlkIGl0ZW0ncyBwbGFjZW1lbnQsIGluZGljYXRpbmcgYXV0by1wbGFjZW1lbnQsIGFuIGF1dG9tYXRpYyBzcGFuLCBvciBhIGRlZmF1bHQgc3BhbiBvZiBvbmUuIn0se25hbWU6InNwYW4iLGRlc2NyaXB0aW9uOiJDb250cmlidXRlcyBhIGdyaWQgc3BhbiB0byB0aGUgZ3JpZCBpdGVtJ3MgcGxhY2VtZW50IHN1Y2ggdGhhdCB0aGUgY29ycmVzcG9uZGluZyBlZGdlIG9mIHRoZSBncmlkIGl0ZW0ncyBncmlkIGFyZWEgaXMgTiBsaW5lcyBmcm9tIGl0cyBvcHBvc2l0ZSBlZGdlLiJ9XSxzeW50YXg6IjxncmlkLWxpbmU+IFsgLyA8Z3JpZC1saW5lPiBdPyIscmVsZXZhbmNlOjU2LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ncmlkLWNvbHVtbiJ9XSxkZXNjcmlwdGlvbjoiU2hvcnRoYW5kIGZvciAnZ3JpZC1jb2x1bW4tc3RhcnQnIGFuZCAnZ3JpZC1jb2x1bW4tZW5kJy4iLHJlc3RyaWN0aW9uczpbImlkZW50aWZpZXIiLCJpbnRlZ2VyIiwiZW51bSJdfSx7bmFtZToiZ3JpZC1jb2x1bW4tZW5kIixicm93c2VyczpbIkUxNiIsIkZGNTIiLCJTMTAuMSIsIkM1NyIsIk80NCJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJUaGUgcHJvcGVydHkgY29udHJpYnV0ZXMgbm90aGluZyB0byB0aGUgZ3JpZCBpdGVtJ3MgcGxhY2VtZW50LCBpbmRpY2F0aW5nIGF1dG8tcGxhY2VtZW50LCBhbiBhdXRvbWF0aWMgc3Bhbiwgb3IgYSBkZWZhdWx0IHNwYW4gb2Ygb25lLiJ9LHtuYW1lOiJzcGFuIixkZXNjcmlwdGlvbjoiQ29udHJpYnV0ZXMgYSBncmlkIHNwYW4gdG8gdGhlIGdyaWQgaXRlbSdzIHBsYWNlbWVudCBzdWNoIHRoYXQgdGhlIGNvcnJlc3BvbmRpbmcgZWRnZSBvZiB0aGUgZ3JpZCBpdGVtJ3MgZ3JpZCBhcmVhIGlzIE4gbGluZXMgZnJvbSBpdHMgb3Bwb3NpdGUgZWRnZS4ifV0sc3ludGF4OiI8Z3JpZC1saW5lPiIscmVsZXZhbmNlOjUxLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ncmlkLWNvbHVtbi1lbmQifV0sZGVzY3JpcHRpb246IkRldGVybWluZSBhIGdyaWQgaXRlbSdzIHNpemUgYW5kIGxvY2F0aW9uIHdpdGhpbiB0aGUgZ3JpZCBieSBjb250cmlidXRpbmcgYSBsaW5lLCBhIHNwYW4sIG9yIG5vdGhpbmcgKGF1dG9tYXRpYykgdG8gaXRzIGdyaWQgcGxhY2VtZW50LiIscmVzdHJpY3Rpb25zOlsiaWRlbnRpZmllciIsImludGVnZXIiLCJlbnVtIl19LHtuYW1lOiJncmlkLWNvbHVtbi1nYXAiLGJyb3dzZXJzOlsiRkY1MiIsIkM1NyIsIlMxMC4xIiwiTzQ0Il0sc3RhdHVzOiJvYnNvbGV0ZSIsc3ludGF4OiI8bGVuZ3RoLXBlcmNlbnRhZ2U+IixyZWxldmFuY2U6NCxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSBndXR0ZXJzIGJldHdlZW4gZ3JpZCBjb2x1bW5zLiBSZXBsYWNlZCBieSAnY29sdW1uLWdhcCcgcHJvcGVydHkuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiXX0se25hbWU6ImdyaWQtY29sdW1uLXN0YXJ0Iixicm93c2VyczpbIkUxNiIsIkZGNTIiLCJTMTAuMSIsIkM1NyIsIk80NCJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJUaGUgcHJvcGVydHkgY29udHJpYnV0ZXMgbm90aGluZyB0byB0aGUgZ3JpZCBpdGVtJ3MgcGxhY2VtZW50LCBpbmRpY2F0aW5nIGF1dG8tcGxhY2VtZW50LCBhbiBhdXRvbWF0aWMgc3Bhbiwgb3IgYSBkZWZhdWx0IHNwYW4gb2Ygb25lLiJ9LHtuYW1lOiJzcGFuIixkZXNjcmlwdGlvbjoiQ29udHJpYnV0ZXMgYSBncmlkIHNwYW4gdG8gdGhlIGdyaWQgaXRlbSdzIHBsYWNlbWVudCBzdWNoIHRoYXQgdGhlIGNvcnJlc3BvbmRpbmcgZWRnZSBvZiB0aGUgZ3JpZCBpdGVtJ3MgZ3JpZCBhcmVhIGlzIE4gbGluZXMgZnJvbSBpdHMgb3Bwb3NpdGUgZWRnZS4ifV0sc3ludGF4OiI8Z3JpZC1saW5lPiIscmVsZXZhbmNlOjUxLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ncmlkLWNvbHVtbi1zdGFydCJ9XSxkZXNjcmlwdGlvbjoiRGV0ZXJtaW5lIGEgZ3JpZCBpdGVtJ3Mgc2l6ZSBhbmQgbG9jYXRpb24gd2l0aGluIHRoZSBncmlkIGJ5IGNvbnRyaWJ1dGluZyBhIGxpbmUsIGEgc3Bhbiwgb3Igbm90aGluZyAoYXV0b21hdGljKSB0byBpdHMgZ3JpZCBwbGFjZW1lbnQuIixyZXN0cmljdGlvbnM6WyJpZGVudGlmaWVyIiwiaW50ZWdlciIsImVudW0iXX0se25hbWU6ImdyaWQtZ2FwIixicm93c2VyczpbIkZGNTIiLCJDNTciLCJTMTAuMSIsIk80NCJdLHN0YXR1czoib2Jzb2xldGUiLHN5bnRheDoiPCdncmlkLXJvdy1nYXAnPiA8J2dyaWQtY29sdW1uLWdhcCc+PyIscmVsZXZhbmNlOjUsZGVzY3JpcHRpb246IlNob3J0aGFuZCB0aGF0IHNwZWNpZmllcyB0aGUgZ3V0dGVycyBiZXR3ZWVuIGdyaWQgY29sdW1ucyBhbmQgZ3JpZCByb3dzIGluIG9uZSBkZWNsYXJhdGlvbi4gUmVwbGFjZWQgYnkgJ2dhcCcgcHJvcGVydHkuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiXX0se25hbWU6ImdyaWQtcm93Iixicm93c2VyczpbIkUxNiIsIkZGNTIiLCJTMTAuMSIsIkM1NyIsIk80NCJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJUaGUgcHJvcGVydHkgY29udHJpYnV0ZXMgbm90aGluZyB0byB0aGUgZ3JpZCBpdGVtJ3MgcGxhY2VtZW50LCBpbmRpY2F0aW5nIGF1dG8tcGxhY2VtZW50LCBhbiBhdXRvbWF0aWMgc3Bhbiwgb3IgYSBkZWZhdWx0IHNwYW4gb2Ygb25lLiJ9LHtuYW1lOiJzcGFuIixkZXNjcmlwdGlvbjoiQ29udHJpYnV0ZXMgYSBncmlkIHNwYW4gdG8gdGhlIGdyaWQgaXRlbSdzIHBsYWNlbWVudCBzdWNoIHRoYXQgdGhlIGNvcnJlc3BvbmRpbmcgZWRnZSBvZiB0aGUgZ3JpZCBpdGVtJ3MgZ3JpZCBhcmVhIGlzIE4gbGluZXMgZnJvbSBpdHMgb3Bwb3NpdGUgZWRnZS4ifV0sc3ludGF4OiI8Z3JpZC1saW5lPiBbIC8gPGdyaWQtbGluZT4gXT8iLHJlbGV2YW5jZTo1NCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvZ3JpZC1yb3cifV0sZGVzY3JpcHRpb246IlNob3J0aGFuZCBmb3IgJ2dyaWQtcm93LXN0YXJ0JyBhbmQgJ2dyaWQtcm93LWVuZCcuIixyZXN0cmljdGlvbnM6WyJpZGVudGlmaWVyIiwiaW50ZWdlciIsImVudW0iXX0se25hbWU6ImdyaWQtcm93LWVuZCIsYnJvd3NlcnM6WyJFMTYiLCJGRjUyIiwiUzEwLjEiLCJDNTciLCJPNDQiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiVGhlIHByb3BlcnR5IGNvbnRyaWJ1dGVzIG5vdGhpbmcgdG8gdGhlIGdyaWQgaXRlbSdzIHBsYWNlbWVudCwgaW5kaWNhdGluZyBhdXRvLXBsYWNlbWVudCwgYW4gYXV0b21hdGljIHNwYW4sIG9yIGEgZGVmYXVsdCBzcGFuIG9mIG9uZS4ifSx7bmFtZToic3BhbiIsZGVzY3JpcHRpb246IkNvbnRyaWJ1dGVzIGEgZ3JpZCBzcGFuIHRvIHRoZSBncmlkIGl0ZW0ncyBwbGFjZW1lbnQgc3VjaCB0aGF0IHRoZSBjb3JyZXNwb25kaW5nIGVkZ2Ugb2YgdGhlIGdyaWQgaXRlbSdzIGdyaWQgYXJlYSBpcyBOIGxpbmVzIGZyb20gaXRzIG9wcG9zaXRlIGVkZ2UuIn1dLHN5bnRheDoiPGdyaWQtbGluZT4iLHJlbGV2YW5jZTo1MSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvZ3JpZC1yb3ctZW5kIn1dLGRlc2NyaXB0aW9uOiJEZXRlcm1pbmUgYSBncmlkIGl0ZW0ncyBzaXplIGFuZCBsb2NhdGlvbiB3aXRoaW4gdGhlIGdyaWQgYnkgY29udHJpYnV0aW5nIGEgbGluZSwgYSBzcGFuLCBvciBub3RoaW5nIChhdXRvbWF0aWMpIHRvIGl0cyBncmlkIHBsYWNlbWVudC4iLHJlc3RyaWN0aW9uczpbImlkZW50aWZpZXIiLCJpbnRlZ2VyIiwiZW51bSJdfSx7bmFtZToiZ3JpZC1yb3ctZ2FwIixicm93c2VyczpbIkZGNTIiLCJDNTciLCJTMTAuMSIsIk80NCJdLHN0YXR1czoib2Jzb2xldGUiLHN5bnRheDoiPGxlbmd0aC1wZXJjZW50YWdlPiIscmVsZXZhbmNlOjIsZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgZ3V0dGVycyBiZXR3ZWVuIGdyaWQgcm93cy4gUmVwbGFjZWQgYnkgJ3Jvdy1nYXAnIHByb3BlcnR5LiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIl19LHtuYW1lOiJncmlkLXJvdy1zdGFydCIsYnJvd3NlcnM6WyJFMTYiLCJGRjUyIiwiUzEwLjEiLCJDNTciLCJPNDQiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiVGhlIHByb3BlcnR5IGNvbnRyaWJ1dGVzIG5vdGhpbmcgdG8gdGhlIGdyaWQgaXRlbSdzIHBsYWNlbWVudCwgaW5kaWNhdGluZyBhdXRvLXBsYWNlbWVudCwgYW4gYXV0b21hdGljIHNwYW4sIG9yIGEgZGVmYXVsdCBzcGFuIG9mIG9uZS4ifSx7bmFtZToic3BhbiIsZGVzY3JpcHRpb246IkNvbnRyaWJ1dGVzIGEgZ3JpZCBzcGFuIHRvIHRoZSBncmlkIGl0ZW0ncyBwbGFjZW1lbnQgc3VjaCB0aGF0IHRoZSBjb3JyZXNwb25kaW5nIGVkZ2Ugb2YgdGhlIGdyaWQgaXRlbSdzIGdyaWQgYXJlYSBpcyBOIGxpbmVzIGZyb20gaXRzIG9wcG9zaXRlIGVkZ2UuIn1dLHN5bnRheDoiPGdyaWQtbGluZT4iLHJlbGV2YW5jZTo1MSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvZ3JpZC1yb3ctc3RhcnQifV0sZGVzY3JpcHRpb246IkRldGVybWluZSBhIGdyaWQgaXRlbSdzIHNpemUgYW5kIGxvY2F0aW9uIHdpdGhpbiB0aGUgZ3JpZCBieSBjb250cmlidXRpbmcgYSBsaW5lLCBhIHNwYW4sIG9yIG5vdGhpbmcgKGF1dG9tYXRpYykgdG8gaXRzIGdyaWQgcGxhY2VtZW50LiIscmVzdHJpY3Rpb25zOlsiaWRlbnRpZmllciIsImludGVnZXIiLCJlbnVtIl19LHtuYW1lOiJncmlkLXRlbXBsYXRlIixicm93c2VyczpbIkUxNiIsIkZGNTIiLCJTMTAuMSIsIkM1NyIsIk80NCJdLHZhbHVlczpbe25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJTZXRzIGFsbCB0aHJlZSBwcm9wZXJ0aWVzIHRvIHRoZWlyIGluaXRpYWwgdmFsdWVzLiJ9LHtuYW1lOiJtaW4tY29udGVudCIsZGVzY3JpcHRpb246IlJlcHJlc2VudHMgdGhlIGxhcmdlc3QgbWluLWNvbnRlbnQgY29udHJpYnV0aW9uIG9mIHRoZSBncmlkIGl0ZW1zIG9jY3VweWluZyB0aGUgZ3JpZCB0cmFjay4ifSx7bmFtZToibWF4LWNvbnRlbnQiLGRlc2NyaXB0aW9uOiJSZXByZXNlbnRzIHRoZSBsYXJnZXN0IG1heC1jb250ZW50IGNvbnRyaWJ1dGlvbiBvZiB0aGUgZ3JpZCBpdGVtcyBvY2N1cHlpbmcgdGhlIGdyaWQgdHJhY2suIn0se25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJBcyBhIG1heGltdW0sIGlkZW50aWNhbCB0byAnbWF4LWNvbnRlbnQnLiBBcyBhIG1pbmltdW0sIHJlcHJlc2VudHMgdGhlIGxhcmdlc3QgbWluaW11bSBzaXplIChhcyBzcGVjaWZpZWQgYnkgbWluLXdpZHRoL21pbi1oZWlnaHQpIG9mIHRoZSBncmlkIGl0ZW1zIG9jY3VweWluZyB0aGUgZ3JpZCB0cmFjay4ifSx7bmFtZToic3ViZ3JpZCIsZGVzY3JpcHRpb246IlNldHMgJ2dyaWQtdGVtcGxhdGUtcm93cycgYW5kICdncmlkLXRlbXBsYXRlLWNvbHVtbnMnIHRvICdzdWJncmlkJywgYW5kICdncmlkLXRlbXBsYXRlLWFyZWFzJyB0byBpdHMgaW5pdGlhbCB2YWx1ZS4ifSx7bmFtZToibWlubWF4KCkiLGRlc2NyaXB0aW9uOiJEZWZpbmVzIGEgc2l6ZSByYW5nZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gbWluIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gbWF4LiJ9LHtuYW1lOiJyZXBlYXQoKSIsZGVzY3JpcHRpb246IlJlcHJlc2VudHMgYSByZXBlYXRlZCBmcmFnbWVudCBvZiB0aGUgdHJhY2sgbGlzdCwgYWxsb3dpbmcgYSBsYXJnZSBudW1iZXIgb2YgY29sdW1ucyBvciByb3dzIHRoYXQgZXhoaWJpdCBhIHJlY3VycmluZyBwYXR0ZXJuIHRvIGJlIHdyaXR0ZW4gaW4gYSBtb3JlIGNvbXBhY3QgZm9ybS4ifV0sc3ludGF4OiJub25lIHwgWyA8J2dyaWQtdGVtcGxhdGUtcm93cyc+IC8gPCdncmlkLXRlbXBsYXRlLWNvbHVtbnMnPiBdIHwgWyA8bGluZS1uYW1lcz4/IDxzdHJpbmc+IDx0cmFjay1zaXplPj8gPGxpbmUtbmFtZXM+PyBdKyBbIC8gPGV4cGxpY2l0LXRyYWNrLWxpc3Q+IF0/IixyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2dyaWQtdGVtcGxhdGUifV0sZGVzY3JpcHRpb246IlNob3J0aGFuZCBmb3Igc2V0dGluZyBncmlkLXRlbXBsYXRlLWNvbHVtbnMsIGdyaWQtdGVtcGxhdGUtcm93cywgYW5kIGdyaWQtdGVtcGxhdGUtYXJlYXMgaW4gYSBzaW5nbGUgZGVjbGFyYXRpb24uIixyZXN0cmljdGlvbnM6WyJpZGVudGlmaWVyIiwibGVuZ3RoIiwicGVyY2VudGFnZSIsInN0cmluZyIsImVudW0iXX0se25hbWU6ImdyaWQtdGVtcGxhdGUtYXJlYXMiLGJyb3dzZXJzOlsiRTE2IiwiRkY1MiIsIlMxMC4xIiwiQzU3IiwiTzQ0Il0sdmFsdWVzOlt7bmFtZToibm9uZSIsZGVzY3JpcHRpb246IlRoZSBncmlkIGNvbnRhaW5lciBkb2Vzbid0IGRlZmluZSBhbnkgbmFtZWQgZ3JpZCBhcmVhcy4ifV0sc3ludGF4OiJub25lIHwgPHN0cmluZz4rIixyZWxldmFuY2U6NTQscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2dyaWQtdGVtcGxhdGUtYXJlYXMifV0sZGVzY3JpcHRpb246IlNwZWNpZmllcyBuYW1lZCBncmlkIGFyZWFzLCB3aGljaCBhcmUgbm90IGFzc29jaWF0ZWQgd2l0aCBhbnkgcGFydGljdWxhciBncmlkIGl0ZW0sIGJ1dCBjYW4gYmUgcmVmZXJlbmNlZCBmcm9tIHRoZSBncmlkLXBsYWNlbWVudCBwcm9wZXJ0aWVzLiIscmVzdHJpY3Rpb25zOlsic3RyaW5nIl19LHtuYW1lOiJncmlkLXRlbXBsYXRlLWNvbHVtbnMiLGJyb3dzZXJzOlsiRTE2IiwiRkY1MiIsIlMxMC4xIiwiQzU3IiwiSUUxMCIsIk80NCJdLHZhbHVlczpbe25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJUaGVyZSBpcyBubyBleHBsaWNpdCBncmlkOyBhbnkgcm93cy9jb2x1bW5zIHdpbGwgYmUgaW1wbGljaXRseSBnZW5lcmF0ZWQuIn0se25hbWU6Im1pbi1jb250ZW50IixkZXNjcmlwdGlvbjoiUmVwcmVzZW50cyB0aGUgbGFyZ2VzdCBtaW4tY29udGVudCBjb250cmlidXRpb24gb2YgdGhlIGdyaWQgaXRlbXMgb2NjdXB5aW5nIHRoZSBncmlkIHRyYWNrLiJ9LHtuYW1lOiJtYXgtY29udGVudCIsZGVzY3JpcHRpb246IlJlcHJlc2VudHMgdGhlIGxhcmdlc3QgbWF4LWNvbnRlbnQgY29udHJpYnV0aW9uIG9mIHRoZSBncmlkIGl0ZW1zIG9jY3VweWluZyB0aGUgZ3JpZCB0cmFjay4ifSx7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IkFzIGEgbWF4aW11bSwgaWRlbnRpY2FsIHRvICdtYXgtY29udGVudCcuIEFzIGEgbWluaW11bSwgcmVwcmVzZW50cyB0aGUgbGFyZ2VzdCBtaW5pbXVtIHNpemUgKGFzIHNwZWNpZmllZCBieSBtaW4td2lkdGgvbWluLWhlaWdodCkgb2YgdGhlIGdyaWQgaXRlbXMgb2NjdXB5aW5nIHRoZSBncmlkIHRyYWNrLiJ9LHtuYW1lOiJzdWJncmlkIixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgdGhlIGdyaWQgd2lsbCBhbGlnbiB0byBpdHMgcGFyZW50IGdyaWQgaW4gdGhhdCBheGlzLiJ9LHtuYW1lOiJtaW5tYXgoKSIsZGVzY3JpcHRpb246IkRlZmluZXMgYSBzaXplIHJhbmdlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byBtaW4gYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byBtYXguIn0se25hbWU6InJlcGVhdCgpIixkZXNjcmlwdGlvbjoiUmVwcmVzZW50cyBhIHJlcGVhdGVkIGZyYWdtZW50IG9mIHRoZSB0cmFjayBsaXN0LCBhbGxvd2luZyBhIGxhcmdlIG51bWJlciBvZiBjb2x1bW5zIG9yIHJvd3MgdGhhdCBleGhpYml0IGEgcmVjdXJyaW5nIHBhdHRlcm4gdG8gYmUgd3JpdHRlbiBpbiBhIG1vcmUgY29tcGFjdCBmb3JtLiJ9XSxzeW50YXg6Im5vbmUgfCA8dHJhY2stbGlzdD4gfCA8YXV0by10cmFjay1saXN0PiB8IHN1YmdyaWQgPGxpbmUtbmFtZS1saXN0Pj8iLHJlbGV2YW5jZTo2NCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zIn1dLGRlc2NyaXB0aW9uOiJzcGVjaWZpZXMsIGFzIGEgc3BhY2Utc2VwYXJhdGVkIHRyYWNrIGxpc3QsIHRoZSBsaW5lIG5hbWVzIGFuZCB0cmFjayBzaXppbmcgZnVuY3Rpb25zIG9mIHRoZSBncmlkLiIscmVzdHJpY3Rpb25zOlsiaWRlbnRpZmllciIsImxlbmd0aCIsInBlcmNlbnRhZ2UiLCJlbnVtIl19LHtuYW1lOiJncmlkLXRlbXBsYXRlLXJvd3MiLGJyb3dzZXJzOlsiRTE2IiwiRkY1MiIsIlMxMC4xIiwiQzU3IiwiSUUxMCIsIk80NCJdLHZhbHVlczpbe25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJUaGVyZSBpcyBubyBleHBsaWNpdCBncmlkOyBhbnkgcm93cy9jb2x1bW5zIHdpbGwgYmUgaW1wbGljaXRseSBnZW5lcmF0ZWQuIn0se25hbWU6Im1pbi1jb250ZW50IixkZXNjcmlwdGlvbjoiUmVwcmVzZW50cyB0aGUgbGFyZ2VzdCBtaW4tY29udGVudCBjb250cmlidXRpb24gb2YgdGhlIGdyaWQgaXRlbXMgb2NjdXB5aW5nIHRoZSBncmlkIHRyYWNrLiJ9LHtuYW1lOiJtYXgtY29udGVudCIsZGVzY3JpcHRpb246IlJlcHJlc2VudHMgdGhlIGxhcmdlc3QgbWF4LWNvbnRlbnQgY29udHJpYnV0aW9uIG9mIHRoZSBncmlkIGl0ZW1zIG9jY3VweWluZyB0aGUgZ3JpZCB0cmFjay4ifSx7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IkFzIGEgbWF4aW11bSwgaWRlbnRpY2FsIHRvICdtYXgtY29udGVudCcuIEFzIGEgbWluaW11bSwgcmVwcmVzZW50cyB0aGUgbGFyZ2VzdCBtaW5pbXVtIHNpemUgKGFzIHNwZWNpZmllZCBieSBtaW4td2lkdGgvbWluLWhlaWdodCkgb2YgdGhlIGdyaWQgaXRlbXMgb2NjdXB5aW5nIHRoZSBncmlkIHRyYWNrLiJ9LHtuYW1lOiJzdWJncmlkIixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgdGhlIGdyaWQgd2lsbCBhbGlnbiB0byBpdHMgcGFyZW50IGdyaWQgaW4gdGhhdCBheGlzLiJ9LHtuYW1lOiJtaW5tYXgoKSIsZGVzY3JpcHRpb246IkRlZmluZXMgYSBzaXplIHJhbmdlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byBtaW4gYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byBtYXguIn0se25hbWU6InJlcGVhdCgpIixkZXNjcmlwdGlvbjoiUmVwcmVzZW50cyBhIHJlcGVhdGVkIGZyYWdtZW50IG9mIHRoZSB0cmFjayBsaXN0LCBhbGxvd2luZyBhIGxhcmdlIG51bWJlciBvZiBjb2x1bW5zIG9yIHJvd3MgdGhhdCBleGhpYml0IGEgcmVjdXJyaW5nIHBhdHRlcm4gdG8gYmUgd3JpdHRlbiBpbiBhIG1vcmUgY29tcGFjdCBmb3JtLiJ9XSxzeW50YXg6Im5vbmUgfCA8dHJhY2stbGlzdD4gfCA8YXV0by10cmFjay1saXN0PiB8IHN1YmdyaWQgPGxpbmUtbmFtZS1saXN0Pj8iLHJlbGV2YW5jZTo1NyxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvZ3JpZC10ZW1wbGF0ZS1yb3dzIn1dLGRlc2NyaXB0aW9uOiJzcGVjaWZpZXMsIGFzIGEgc3BhY2Utc2VwYXJhdGVkIHRyYWNrIGxpc3QsIHRoZSBsaW5lIG5hbWVzIGFuZCB0cmFjayBzaXppbmcgZnVuY3Rpb25zIG9mIHRoZSBncmlkLiIscmVzdHJpY3Rpb25zOlsiaWRlbnRpZmllciIsImxlbmd0aCIsInBlcmNlbnRhZ2UiLCJzdHJpbmciLCJlbnVtIl19LHtuYW1lOiJoZWlnaHQiLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzEiLCJDMSIsIklFNCIsIk83Il0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IlRoZSBoZWlnaHQgZGVwZW5kcyBvbiB0aGUgdmFsdWVzIG9mIG90aGVyIHByb3BlcnRpZXMuIn0se25hbWU6ImZpdC1jb250ZW50Iixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxIiwiQzEiLCJJRTQiLCJPNyJdLGRlc2NyaXB0aW9uOiJVc2UgdGhlIGZpdC1jb250ZW50IGlubGluZSBzaXplIG9yIGZpdC1jb250ZW50IGJsb2NrIHNpemUsIGFzIGFwcHJvcHJpYXRlIHRvIHRoZSB3cml0aW5nIG1vZGUuIn0se25hbWU6Im1heC1jb250ZW50Iixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxIiwiQzEiLCJJRTQiLCJPNyJdLGRlc2NyaXB0aW9uOiJVc2UgdGhlIG1heC1jb250ZW50IGlubGluZSBzaXplIG9yIG1heC1jb250ZW50IGJsb2NrIHNpemUsIGFzIGFwcHJvcHJpYXRlIHRvIHRoZSB3cml0aW5nIG1vZGUuIn0se25hbWU6Im1pbi1jb250ZW50Iixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxIiwiQzEiLCJJRTQiLCJPNyJdLGRlc2NyaXB0aW9uOiJVc2UgdGhlIG1pbi1jb250ZW50IGlubGluZSBzaXplIG9yIG1pbi1jb250ZW50IGJsb2NrIHNpemUsIGFzIGFwcHJvcHJpYXRlIHRvIHRoZSB3cml0aW5nIG1vZGUuIn1dLHN5bnRheDoiYXV0byB8IDxsZW5ndGg+IHwgPHBlcmNlbnRhZ2U+IHwgbWluLWNvbnRlbnQgfCBtYXgtY29udGVudCB8IGZpdC1jb250ZW50IHwgZml0LWNvbnRlbnQoPGxlbmd0aC1wZXJjZW50YWdlPikiLHJlbGV2YW5jZTo5NixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvaGVpZ2h0In1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhlIGhlaWdodCBvZiB0aGUgY29udGVudCBhcmVhLCBwYWRkaW5nIGFyZWEgb3IgYm9yZGVyIGFyZWEgKGRlcGVuZGluZyBvbiAnYm94LXNpemluZycpIG9mIGNlcnRhaW4gYm94ZXMuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiJoeXBoZW5zIixicm93c2VyczpbIkU3OSIsIkZGNDMiLCJTMTciLCJDNTUiLCJJRTEwIiwiTzQyIl0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IkNvbmRpdGlvbmFsIGh5cGhlbmF0aW9uIGNoYXJhY3RlcnMgaW5zaWRlIGEgd29yZCwgaWYgcHJlc2VudCwgdGFrZSBwcmlvcml0eSBvdmVyIGF1dG9tYXRpYyByZXNvdXJjZXMgd2hlbiBkZXRlcm1pbmluZyBoeXBoZW5hdGlvbiBwb2ludHMgd2l0aGluIHRoZSB3b3JkLiJ9LHtuYW1lOiJtYW51YWwiLGRlc2NyaXB0aW9uOiJXb3JkcyBhcmUgb25seSBicm9rZW4gYXQgbGluZSBicmVha3Mgd2hlcmUgdGhlcmUgYXJlIGNoYXJhY3RlcnMgaW5zaWRlIHRoZSB3b3JkIHRoYXQgc3VnZ2VzdCBsaW5lIGJyZWFrIG9wcG9ydHVuaXRpZXMifSx7bmFtZToibm9uZSIsZGVzY3JpcHRpb246IldvcmRzIGFyZSBub3QgYnJva2VuIGF0IGxpbmUgYnJlYWtzLCBldmVuIGlmIGNoYXJhY3RlcnMgaW5zaWRlIHRoZSB3b3JkIHN1Z2dlc3QgbGluZSBicmVhayBwb2ludHMuIn1dLHN5bnRheDoibm9uZSB8IG1hbnVhbCB8IGF1dG8iLHJlbGV2YW5jZTo1NixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvaHlwaGVucyJ9XSxkZXNjcmlwdGlvbjoiQ29udHJvbHMgd2hldGhlciBoeXBoZW5hdGlvbiBpcyBhbGxvd2VkIHRvIGNyZWF0ZSBtb3JlIGJyZWFrIG9wcG9ydHVuaXRpZXMgd2l0aGluIGEgbGluZSBvZiB0ZXh0LiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiaW1hZ2Utb3JpZW50YXRpb24iLGJyb3dzZXJzOlsiRTgxIiwiRkYyNiIsIlMxMy4xIiwiQzgxIiwiTzY3Il0sdmFsdWVzOlt7bmFtZToiZmxpcCIsZGVzY3JpcHRpb246IkFmdGVyIHJvdGF0aW5nIGJ5IHRoZSBwcmVjZWRlZGluZyBhbmdsZSwgdGhlIGltYWdlIGlzIGZsaXBwZWQgaG9yaXpvbnRhbGx5LiBEZWZhdWx0cyB0byAwZGVnIGlmIHRoZSBhbmdsZSBpcyBvbW1pdHRlZC4ifSx7bmFtZToiZnJvbS1pbWFnZSIsZGVzY3JpcHRpb246IklmIHRoZSBpbWFnZSBoYXMgYW4gb3JpZW50YXRpb24gc3BlY2lmaWVkIGluIGl0cyBtZXRhZGF0YSwgc3VjaCBhcyBFWElGLCB0aGlzIHZhbHVlIGNvbXB1dGVzIHRvIHRoZSBhbmdsZSB0aGF0IHRoZSBtZXRhZGF0YSBzcGVjaWZpZXMgaXMgbmVjZXNzYXJ5IHRvIGNvcnJlY3RseSBvcmllbnQgdGhlIGltYWdlLiJ9XSxzeW50YXg6ImZyb20taW1hZ2UgfCA8YW5nbGU+IHwgWyA8YW5nbGU+PyBmbGlwIF0iLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvaW1hZ2Utb3JpZW50YXRpb24ifV0sZGVzY3JpcHRpb246IlNwZWNpZmllcyBhbiBvcnRob2dvbmFsIHJvdGF0aW9uIHRvIGJlIGFwcGxpZWQgdG8gYW4gaW1hZ2UgYmVmb3JlIGl0IGlzIGxhaWQgb3V0LiIscmVzdHJpY3Rpb25zOlsiYW5nbGUiXX0se25hbWU6ImltYWdlLXJlbmRlcmluZyIsYnJvd3NlcnM6WyJFNzkiLCJGRjMuNiIsIlM2IiwiQzEzIiwiTzE1Il0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IlRoZSBpbWFnZSBzaG91bGQgYmUgc2NhbGVkIHdpdGggYW4gYWxnb3JpdGhtIHRoYXQgbWF4aW1pemVzIHRoZSBhcHBlYXJhbmNlIG9mIHRoZSBpbWFnZS4ifSx7bmFtZToiY3Jpc3AtZWRnZXMiLGRlc2NyaXB0aW9uOiJUaGUgaW1hZ2UgbXVzdCBiZSBzY2FsZWQgd2l0aCBhbiBhbGdvcml0aG0gdGhhdCBwcmVzZXJ2ZXMgY29udHJhc3QgYW5kIGVkZ2VzIGluIHRoZSBpbWFnZSwgYW5kIHdoaWNoIGRvZXMgbm90IHNtb290aCBjb2xvcnMgb3IgaW50cm9kdWNlIGJsdXIgdG8gdGhlIGltYWdlIGluIHRoZSBwcm9jZXNzLiJ9LHtuYW1lOiItbW96LWNyaXNwLWVkZ2VzIixicm93c2VyczpbIkU3OSIsIkZGMy42IiwiUzYiLCJDMTMiLCJPMTUiXX0se25hbWU6Im9wdGltaXplUXVhbGl0eSIsZGVzY3JpcHRpb246IkRlcHJlY2F0ZWQuIn0se25hbWU6Im9wdGltaXplU3BlZWQiLGRlc2NyaXB0aW9uOiJEZXByZWNhdGVkLiJ9LHtuYW1lOiJwaXhlbGF0ZWQiLGRlc2NyaXB0aW9uOiJXaGVuIHNjYWxpbmcgdGhlIGltYWdlIHVwLCB0aGUgJ25lYXJlc3QgbmVpZ2hib3InIG9yIHNpbWlsYXIgYWxnb3JpdGhtIG11c3QgYmUgdXNlZCwgc28gdGhhdCB0aGUgaW1hZ2UgYXBwZWFycyB0byBiZSBzaW1wbHkgY29tcG9zZWQgb2YgdmVyeSBsYXJnZSBwaXhlbHMuIn1dLHN5bnRheDoiYXV0byB8IGNyaXNwLWVkZ2VzIHwgcGl4ZWxhdGVkIixyZWxldmFuY2U6NTQscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2ltYWdlLXJlbmRlcmluZyJ9XSxkZXNjcmlwdGlvbjoiUHJvdmlkZXMgYSBoaW50IHRvIHRoZSB1c2VyLWFnZW50IGFib3V0IHdoYXQgYXNwZWN0cyBvZiBhbiBpbWFnZSBhcmUgbW9zdCBpbXBvcnRhbnQgdG8gcHJlc2VydmUgd2hlbiB0aGUgaW1hZ2UgaXMgc2NhbGVkLCB0byBhaWQgdGhlIHVzZXItYWdlbnQgaW4gdGhlIGNob2ljZSBvZiBhbiBhcHByb3ByaWF0ZSBzY2FsaW5nIGFsZ29yaXRobS4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6ImltZS1tb2RlIixicm93c2VyczpbIkUxMiIsIkZGMyIsIklFNSJdLHZhbHVlczpbe25hbWU6ImFjdGl2ZSIsZGVzY3JpcHRpb246IlRoZSBpbnB1dCBtZXRob2QgZWRpdG9yIGlzIGluaXRpYWxseSBhY3RpdmU7IHRleHQgZW50cnkgaXMgcGVyZm9ybWVkIHVzaW5nIGl0IHVubGVzcyB0aGUgdXNlciBzcGVjaWZpY2FsbHkgZGlzbWlzc2VzIGl0LiJ9LHtuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiTm8gY2hhbmdlIGlzIG1hZGUgdG8gdGhlIGN1cnJlbnQgaW5wdXQgbWV0aG9kIGVkaXRvciBzdGF0ZS4gVGhpcyBpcyB0aGUgZGVmYXVsdC4ifSx7bmFtZToiZGlzYWJsZWQiLGRlc2NyaXB0aW9uOiJUaGUgaW5wdXQgbWV0aG9kIGVkaXRvciBpcyBkaXNhYmxlZCBhbmQgbWF5IG5vdCBiZSBhY3RpdmF0ZWQgYnkgdGhlIHVzZXIuIn0se25hbWU6ImluYWN0aXZlIixkZXNjcmlwdGlvbjoiVGhlIGlucHV0IG1ldGhvZCBlZGl0b3IgaXMgaW5pdGlhbGx5IGluYWN0aXZlLCBidXQgdGhlIHVzZXIgbWF5IGFjdGl2YXRlIGl0IGlmIHRoZXkgd2lzaC4ifSx7bmFtZToibm9ybWFsIixkZXNjcmlwdGlvbjoiVGhlIElNRSBzdGF0ZSBzaG91bGQgYmUgbm9ybWFsOyB0aGlzIHZhbHVlIGNhbiBiZSB1c2VkIGluIGEgdXNlciBzdHlsZSBzaGVldCB0byBvdmVycmlkZSB0aGUgcGFnZSBzZXR0aW5nLiJ9XSxzdGF0dXM6Im9ic29sZXRlIixzeW50YXg6ImF1dG8gfCBub3JtYWwgfCBhY3RpdmUgfCBpbmFjdGl2ZSB8IGRpc2FibGVkIixyZWxldmFuY2U6MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvaW1lLW1vZGUifV0sZGVzY3JpcHRpb246IkNvbnRyb2xzIHRoZSBzdGF0ZSBvZiB0aGUgaW5wdXQgbWV0aG9kIGVkaXRvciBmb3IgdGV4dCBmaWVsZHMuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJpbmxpbmUtc2l6ZSIsYnJvd3NlcnM6WyJFNzkiLCJGRjQxIiwiUzEyLjEiLCJDNTciLCJPNDQiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiRGVwZW5kcyBvbiB0aGUgdmFsdWVzIG9mIG90aGVyIHByb3BlcnRpZXMuIn1dLHN5bnRheDoiPCd3aWR0aCc+IixyZWxldmFuY2U6NTQscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2lubGluZS1zaXplIn1dLGRlc2NyaXB0aW9uOiJTaXplIG9mIGFuIGVsZW1lbnQgaW4gdGhlIGRpcmVjdGlvbiBzcGVjaWZpZWQgYnkgJ3dyaXRpbmctbW9kZScuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiJpc29sYXRpb24iLGJyb3dzZXJzOlsiRTc5IiwiRkYzNiIsIlM4IiwiQzQxIiwiTzMwIl0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IkVsZW1lbnRzIGFyZSBub3QgaXNvbGF0ZWQgdW5sZXNzIGFuIG9wZXJhdGlvbiBpcyBhcHBsaWVkIHRoYXQgY2F1c2VzIHRoZSBjcmVhdGlvbiBvZiBhIHN0YWNraW5nIGNvbnRleHQuIn0se25hbWU6Imlzb2xhdGUiLGRlc2NyaXB0aW9uOiJJbiBDU1Mgd2lsbCB0dXJuIHRoZSBlbGVtZW50IGludG8gYSBzdGFja2luZyBjb250ZXh0LiJ9XSxzeW50YXg6ImF1dG8gfCBpc29sYXRlIixyZWxldmFuY2U6NTQscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2lzb2xhdGlvbiJ9XSxkZXNjcmlwdGlvbjoiSW4gQ1NTIHNldHRpbmcgdG8gJ2lzb2xhdGUnIHdpbGwgdHVybiB0aGUgZWxlbWVudCBpbnRvIGEgc3RhY2tpbmcgY29udGV4dC4gSW4gU1ZHLCBpdCBkZWZpbmVzIHdoZXRoZXIgYW4gZWxlbWVudCBpcyBpc29sYXRlZCBvciBub3QuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJqdXN0aWZ5LWNvbnRlbnQiLGJyb3dzZXJzOlsiRTEyIiwiRkYyMCIsIlM5IiwiQzI5IiwiSUUxMSIsIk8xMi4xIl0sdmFsdWVzOlt7bmFtZToiY2VudGVyIixkZXNjcmlwdGlvbjoiRmxleCBpdGVtcyBhcmUgcGFja2VkIHRvd2FyZCB0aGUgY2VudGVyIG9mIHRoZSBsaW5lLiJ9LHtuYW1lOiJzdGFydCIsZGVzY3JpcHRpb246IlRoZSBpdGVtcyBhcmUgcGFja2VkIGZsdXNoIHRvIGVhY2ggb3RoZXIgdG93YXJkIHRoZSBzdGFydCBlZGdlIG9mIHRoZSBhbGlnbm1lbnQgY29udGFpbmVyIGluIHRoZSBtYWluIGF4aXMuIn0se25hbWU6ImVuZCIsZGVzY3JpcHRpb246IlRoZSBpdGVtcyBhcmUgcGFja2VkIGZsdXNoIHRvIGVhY2ggb3RoZXIgdG93YXJkIHRoZSBlbmQgZWRnZSBvZiB0aGUgYWxpZ25tZW50IGNvbnRhaW5lciBpbiB0aGUgbWFpbiBheGlzLiJ9LHtuYW1lOiJsZWZ0IixkZXNjcmlwdGlvbjoiVGhlIGl0ZW1zIGFyZSBwYWNrZWQgZmx1c2ggdG8gZWFjaCBvdGhlciB0b3dhcmQgdGhlIGxlZnQgZWRnZSBvZiB0aGUgYWxpZ25tZW50IGNvbnRhaW5lciBpbiB0aGUgbWFpbiBheGlzLiJ9LHtuYW1lOiJyaWdodCIsZGVzY3JpcHRpb246IlRoZSBpdGVtcyBhcmUgcGFja2VkIGZsdXNoIHRvIGVhY2ggb3RoZXIgdG93YXJkIHRoZSByaWdodCBlZGdlIG9mIHRoZSBhbGlnbm1lbnQgY29udGFpbmVyIGluIHRoZSBtYWluIGF4aXMuIn0se25hbWU6InNhZmUiLGRlc2NyaXB0aW9uOiJJZiB0aGUgc2l6ZSBvZiB0aGUgaXRlbSBvdmVyZmxvd3MgdGhlIGFsaWdubWVudCBjb250YWluZXIsIHRoZSBpdGVtIGlzIGluc3RlYWQgYWxpZ25lZCBhcyBpZiB0aGUgYWxpZ25tZW50IG1vZGUgd2VyZSBzdGFydC4ifSx7bmFtZToidW5zYWZlIixkZXNjcmlwdGlvbjoiUmVnYXJkbGVzcyBvZiB0aGUgcmVsYXRpdmUgc2l6ZXMgb2YgdGhlIGl0ZW0gYW5kIGFsaWdubWVudCBjb250YWluZXIsIHRoZSBnaXZlbiBhbGlnbm1lbnQgdmFsdWUgaXMgaG9ub3JlZC4ifSx7bmFtZToic3RyZXRjaCIsZGVzY3JpcHRpb246IklmIHRoZSBjb21iaW5lZCBzaXplIG9mIHRoZSBhbGlnbm1lbnQgc3ViamVjdHMgaXMgbGVzcyB0aGFuIHRoZSBzaXplIG9mIHRoZSBhbGlnbm1lbnQgY29udGFpbmVyLCBhbnkgYXV0by1zaXplZCBhbGlnbm1lbnQgc3ViamVjdHMgaGF2ZSB0aGVpciBzaXplIGluY3JlYXNlZCBlcXVhbGx5IChub3QgcHJvcG9ydGlvbmFsbHkpLCB3aGlsZSBzdGlsbCByZXNwZWN0aW5nIHRoZSBjb25zdHJhaW50cyBpbXBvc2VkIGJ5IG1heC1oZWlnaHQvbWF4LXdpZHRoIChvciBlcXVpdmFsZW50IGZ1bmN0aW9uYWxpdHkpLCBzbyB0aGF0IHRoZSBjb21iaW5lZCBzaXplIGV4YWN0bHkgZmlsbHMgdGhlIGFsaWdubWVudCBjb250YWluZXIuIn0se25hbWU6InNwYWNlLWV2ZW5seSIsZGVzY3JpcHRpb246IlRoZSBpdGVtcyBhcmUgZXZlbmx5IGRpc3RyaWJ1dGVkIHdpdGhpbiB0aGUgYWxpZ25tZW50IGNvbnRhaW5lciBhbG9uZyB0aGUgbWFpbiBheGlzLiJ9LHtuYW1lOiJmbGV4LWVuZCIsZGVzY3JpcHRpb246IkZsZXggaXRlbXMgYXJlIHBhY2tlZCB0b3dhcmQgdGhlIGVuZCBvZiB0aGUgbGluZS4ifSx7bmFtZToiZmxleC1zdGFydCIsZGVzY3JpcHRpb246IkZsZXggaXRlbXMgYXJlIHBhY2tlZCB0b3dhcmQgdGhlIHN0YXJ0IG9mIHRoZSBsaW5lLiJ9LHtuYW1lOiJzcGFjZS1hcm91bmQiLGRlc2NyaXB0aW9uOiJGbGV4IGl0ZW1zIGFyZSBldmVubHkgZGlzdHJpYnV0ZWQgaW4gdGhlIGxpbmUsIHdpdGggaGFsZi1zaXplIHNwYWNlcyBvbiBlaXRoZXIgZW5kLiJ9LHtuYW1lOiJzcGFjZS1iZXR3ZWVuIixkZXNjcmlwdGlvbjoiRmxleCBpdGVtcyBhcmUgZXZlbmx5IGRpc3RyaWJ1dGVkIGluIHRoZSBsaW5lLiJ9LHtuYW1lOiJiYXNlbGluZSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBwYXJ0aWNpcGF0aW9uIGluIGZpcnN0LWJhc2VsaW5lIGFsaWdubWVudC4ifSx7bmFtZToiZmlyc3QgYmFzZWxpbmUiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgcGFydGljaXBhdGlvbiBpbiBmaXJzdC1iYXNlbGluZSBhbGlnbm1lbnQuIn0se25hbWU6Imxhc3QgYmFzZWxpbmUiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgcGFydGljaXBhdGlvbiBpbiBsYXN0LWJhc2VsaW5lIGFsaWdubWVudC4ifV0sc3ludGF4OiJub3JtYWwgfCA8Y29udGVudC1kaXN0cmlidXRpb24+IHwgPG92ZXJmbG93LXBvc2l0aW9uPj8gWyA8Y29udGVudC1wb3NpdGlvbj4gfCBsZWZ0IHwgcmlnaHQgXSIscmVsZXZhbmNlOjg3LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9qdXN0aWZ5LWNvbnRlbnQifV0sZGVzY3JpcHRpb246IkFsaWducyBmbGV4IGl0ZW1zIGFsb25nIHRoZSBtYWluIGF4aXMgb2YgdGhlIGN1cnJlbnQgbGluZSBvZiB0aGUgZmxleCBjb250YWluZXIuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJrZXJuaW5nIix2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgdGhlIHVzZXIgYWdlbnQgc2hvdWxkIGFkanVzdCBpbnRlci1nbHlwaCBzcGFjaW5nIGJhc2VkIG9uIGtlcm5pbmcgdGFibGVzIHRoYXQgYXJlIGluY2x1ZGVkIGluIHRoZSBmb250IHRoYXQgd2lsbCBiZSB1c2VkLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkluZGljYXRlcyB3aGV0aGVyIHRoZSB1c2VyIGFnZW50IHNob3VsZCBhZGp1c3QgaW50ZXItZ2x5cGggc3BhY2luZyBiYXNlZCBvbiBrZXJuaW5nIHRhYmxlcyB0aGF0IGFyZSBpbmNsdWRlZCBpbiB0aGUgcmVsZXZhbnQgZm9udCBvciBpbnN0ZWFkIGRpc2FibGUgYXV0by1rZXJuaW5nIGFuZCBzZXQgaW50ZXItY2hhcmFjdGVyIHNwYWNpbmcgdG8gYSBzcGVjaWZpYyBsZW5ndGguIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJlbnVtIl19LHtuYW1lOiJsZWZ0Iixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxIiwiQzEiLCJJRTUuNSIsIk81Il0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IkZvciBub24tcmVwbGFjZWQgZWxlbWVudHMsIHRoZSBlZmZlY3Qgb2YgdGhpcyB2YWx1ZSBkZXBlbmRzIG9uIHdoaWNoIG9mIHJlbGF0ZWQgcHJvcGVydGllcyBoYXZlIHRoZSB2YWx1ZSAnYXV0bycgYXMgd2VsbCJ9XSxzeW50YXg6IjxsZW5ndGg+IHwgPHBlcmNlbnRhZ2U+IHwgYXV0byIscmVsZXZhbmNlOjk0LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9sZWZ0In1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgaG93IGZhciBhbiBhYnNvbHV0ZWx5IHBvc2l0aW9uZWQgYm94J3MgbGVmdCBtYXJnaW4gZWRnZSBpcyBvZmZzZXQgdG8gdGhlIHJpZ2h0IG9mIHRoZSBsZWZ0IGVkZ2Ugb2YgdGhlIGJveCdzICdjb250YWluaW5nIGJsb2NrJy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6ImxldHRlci1zcGFjaW5nIixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxIiwiQzEiLCJJRTQiLCJPMy41Il0sdmFsdWVzOlt7bmFtZToibm9ybWFsIixkZXNjcmlwdGlvbjoiVGhlIHNwYWNpbmcgaXMgdGhlIG5vcm1hbCBzcGFjaW5nIGZvciB0aGUgY3VycmVudCBmb250LiBJdCBpcyB0eXBpY2FsbHkgemVyby1sZW5ndGguIn1dLHN5bnRheDoibm9ybWFsIHwgPGxlbmd0aD4iLHJlbGV2YW5jZTo4MSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvbGV0dGVyLXNwYWNpbmcifV0sZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgbWluaW11bSwgbWF4aW11bSwgYW5kIG9wdGltYWwgc3BhY2luZyBiZXR3ZWVuIGdyYXBoZW1lIGNsdXN0ZXJzLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIl19LHtuYW1lOiJsaWdodGluZy1jb2xvciIsYnJvd3NlcnM6WyJFMTIiLCJGRjMiLCJTNiIsIkM1IiwiSUUiLCJPMTUiXSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkRlZmluZXMgdGhlIGNvbG9yIG9mIHRoZSBsaWdodCBzb3VyY2UgZm9yIGZpbHRlciBwcmltaXRpdmVzICdmZURpZmZ1c2VMaWdodGluZycgYW5kICdmZVNwZWN1bGFyTGlnaHRpbmcnLiIscmVzdHJpY3Rpb25zOlsiY29sb3IiXX0se25hbWU6ImxpbmUtYnJlYWsiLGJyb3dzZXJzOlsiRTE0IiwiRkY2OSIsIlMxMSIsIkM1OCIsIklFNS41IiwiTzQ1Il0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IlRoZSBVQSBkZXRlcm1pbmVzIHRoZSBzZXQgb2YgbGluZS1icmVha2luZyByZXN0cmljdGlvbnMgdG8gdXNlIGZvciBDSksgc2NyaXB0cywgYW5kIGl0IG1heSB2YXJ5IHRoZSByZXN0cmljdGlvbnMgYmFzZWQgb24gdGhlIGxlbmd0aCBvZiB0aGUgbGluZTsgZS5nLiwgdXNlIGEgbGVzcyByZXN0cmljdGl2ZSBzZXQgb2YgbGluZS1icmVhayBydWxlcyBmb3Igc2hvcnQgbGluZXMuIn0se25hbWU6Imxvb3NlIixkZXNjcmlwdGlvbjoiQnJlYWtzIHRleHQgdXNpbmcgdGhlIGxlYXN0IHJlc3RyaWN0aXZlIHNldCBvZiBsaW5lLWJyZWFraW5nIHJ1bGVzLiBUeXBpY2FsbHkgdXNlZCBmb3Igc2hvcnQgbGluZXMsIHN1Y2ggYXMgaW4gbmV3c3BhcGVycy4ifSx7bmFtZToibm9ybWFsIixkZXNjcmlwdGlvbjoiQnJlYWtzIHRleHQgdXNpbmcgdGhlIG1vc3QgY29tbW9uIHNldCBvZiBsaW5lLWJyZWFraW5nIHJ1bGVzLiJ9LHtuYW1lOiJzdHJpY3QiLGRlc2NyaXB0aW9uOiJCcmVha3MgQ0pLIHNjcmlwdHMgdXNpbmcgYSBtb3JlIHJlc3RyaWN0aXZlIHNldCBvZiBsaW5lLWJyZWFraW5nIHJ1bGVzIHRoYW4gJ25vcm1hbCcuIn0se25hbWU6ImFueXdoZXJlIixkZXNjcmlwdGlvbjoiVGhlcmUgaXMgYSBzb2Z0IHdyYXAgb3Bwb3J0dW5pdHkgYXJvdW5kIGV2ZXJ5IHR5cG9ncmFwaGljIGNoYXJhY3RlciB1bml0LCBpbmNsdWRpbmcgYXJvdW5kIGFueSBwdW5jdHVhdGlvbiBjaGFyYWN0ZXIgb3IgcHJlc2VydmVkIHdoaXRlIHNwYWNlcywgb3IgaW4gdGhlIG1pZGRsZSBvZiB3b3JkcywgZGlzcmVnYXJkaW5nIGFueSBwcm9oaWJpdGlvbiBhZ2FpbnN0IGxpbmUgYnJlYWtzLCBldmVuIHRob3NlIGludHJvZHVjZWQgYnkgY2hhcmFjdGVycyB3aXRoIHRoZSBHTCwgV0osIG9yIFpXSiBsaW5lIGJyZWFraW5nIGNsYXNzZXMgb3IgbWFuZGF0ZWQgYnkgdGhlIHdvcmQtYnJlYWsgcHJvcGVydHkuIn1dLHN5bnRheDoiYXV0byB8IGxvb3NlIHwgbm9ybWFsIHwgc3RyaWN0IHwgYW55d2hlcmUiLHJlbGV2YW5jZTo1MixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvbGluZS1icmVhayJ9XSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHdoYXQgc2V0IG9mIGxpbmUgYnJlYWtpbmcgcmVzdHJpY3Rpb25zIGFyZSBpbiBlZmZlY3Qgd2l0aGluIHRoZSBlbGVtZW50LiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToibGluZS1oZWlnaHQiLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzEiLCJDMSIsIklFNCIsIk83Il0sdmFsdWVzOlt7bmFtZToibm9ybWFsIixkZXNjcmlwdGlvbjoiVGVsbHMgdXNlciBhZ2VudHMgdG8gc2V0IHRoZSBjb21wdXRlZCB2YWx1ZSB0byBhICdyZWFzb25hYmxlJyB2YWx1ZSBiYXNlZCBvbiB0aGUgZm9udCBzaXplIG9mIHRoZSBlbGVtZW50LiJ9XSxzeW50YXg6Im5vcm1hbCB8IDxudW1iZXI+IHwgPGxlbmd0aD4gfCA8cGVyY2VudGFnZT4iLHJlbGV2YW5jZTo5MixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvbGluZS1oZWlnaHQifV0sZGVzY3JpcHRpb246IkRldGVybWluZXMgdGhlIGJsb2NrLXByb2dyZXNzaW9uIGRpbWVuc2lvbiBvZiB0aGUgdGV4dCBjb250ZW50IGFyZWEgb2YgYW4gaW5saW5lIGJveC4iLHJlc3RyaWN0aW9uczpbIm51bWJlciIsImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6Imxpc3Qtc3R5bGUiLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzEiLCJDMSIsIklFNCIsIk83Il0sdmFsdWVzOlt7bmFtZToiYXJtZW5pYW4ifSx7bmFtZToiY2lyY2xlIixkZXNjcmlwdGlvbjoiQSBob2xsb3cgY2lyY2xlLiJ9LHtuYW1lOiJkZWNpbWFsIn0se25hbWU6ImRlY2ltYWwtbGVhZGluZy16ZXJvIn0se25hbWU6ImRpc2MiLGRlc2NyaXB0aW9uOiJBIGZpbGxlZCBjaXJjbGUuIn0se25hbWU6Imdlb3JnaWFuIn0se25hbWU6Imluc2lkZSIsZGVzY3JpcHRpb246IlRoZSBtYXJrZXIgYm94IGlzIG91dHNpZGUgdGhlIHByaW5jaXBhbCBibG9jayBib3gsIGFzIGRlc2NyaWJlZCBpbiB0aGUgc2VjdGlvbiBvbiB0aGUgOjptYXJrZXIgcHNldWRvLWVsZW1lbnQgYmVsb3cuIn0se25hbWU6Imxvd2VyLWFscGhhIn0se25hbWU6Imxvd2VyLWdyZWVrIn0se25hbWU6Imxvd2VyLWxhdGluIn0se25hbWU6Imxvd2VyLXJvbWFuIn0se25hbWU6Im5vbmUifSx7bmFtZToib3V0c2lkZSIsZGVzY3JpcHRpb246IlRoZSA6Om1hcmtlciBwc2V1ZG8tZWxlbWVudCBpcyBhbiBpbmxpbmUgZWxlbWVudCBwbGFjZWQgaW1tZWRpYXRlbHkgYmVmb3JlIGFsbCA6OmJlZm9yZSBwc2V1ZG8tZWxlbWVudHMgaW4gdGhlIHByaW5jaXBhbCBibG9jayBib3gsIGFmdGVyIHdoaWNoIHRoZSBlbGVtZW50J3MgY29udGVudCBmbG93cy4ifSx7bmFtZToic3F1YXJlIixkZXNjcmlwdGlvbjoiQSBmaWxsZWQgc3F1YXJlLiJ9LHtuYW1lOiJzeW1ib2xzKCkiLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzEiLCJDMSIsIklFNCIsIk83Il0sZGVzY3JpcHRpb246IkFsbG93cyBhIGNvdW50ZXIgc3R5bGUgdG8gYmUgZGVmaW5lZCBpbmxpbmUuIn0se25hbWU6InVwcGVyLWFscGhhIn0se25hbWU6InVwcGVyLWxhdGluIn0se25hbWU6InVwcGVyLXJvbWFuIn0se25hbWU6InVybCgpIn1dLHN5bnRheDoiPCdsaXN0LXN0eWxlLXR5cGUnPiB8fCA8J2xpc3Qtc3R5bGUtcG9zaXRpb24nPiB8fCA8J2xpc3Qtc3R5bGUtaW1hZ2UnPiIscmVsZXZhbmNlOjgzLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9saXN0LXN0eWxlIn1dLGRlc2NyaXB0aW9uOiJTaG9ydGhhbmQgZm9yIHNldHRpbmcgJ2xpc3Qtc3R5bGUtdHlwZScsICdsaXN0LXN0eWxlLXBvc2l0aW9uJyBhbmQgJ2xpc3Qtc3R5bGUtaW1hZ2UnIixyZXN0cmljdGlvbnM6WyJpbWFnZSIsImVudW0iLCJ1cmwiXX0se25hbWU6Imxpc3Qtc3R5bGUtaW1hZ2UiLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzEiLCJDMSIsIklFNCIsIk83Il0sdmFsdWVzOlt7bmFtZToibm9uZSIsZGVzY3JpcHRpb246IlRoZSBkZWZhdWx0IGNvbnRlbnRzIG9mIHRoZSBvZiB0aGUgbGlzdCBpdGVtJ3MgbWFya2VyIGFyZSBnaXZlbiBieSAnbGlzdC1zdHlsZS10eXBlJyBpbnN0ZWFkLiJ9XSxzeW50YXg6IjxpbWFnZT4gfCBub25lIixyZWxldmFuY2U6NTIscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2xpc3Qtc3R5bGUtaW1hZ2UifV0sZGVzY3JpcHRpb246IlNldHMgdGhlIGltYWdlIHRoYXQgd2lsbCBiZSB1c2VkIGFzIHRoZSBsaXN0IGl0ZW0gbWFya2VyLiBXaGVuIHRoZSBpbWFnZSBpcyBhdmFpbGFibGUsIGl0IHdpbGwgcmVwbGFjZSB0aGUgbWFya2VyIHNldCB3aXRoIHRoZSAnbGlzdC1zdHlsZS10eXBlJyBtYXJrZXIuIixyZXN0cmljdGlvbnM6WyJpbWFnZSJdfSx7bmFtZToibGlzdC1zdHlsZS1wb3NpdGlvbiIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMSIsIkMxIiwiSUU0IiwiTzMuNSJdLHZhbHVlczpbe25hbWU6Imluc2lkZSIsZGVzY3JpcHRpb246IlRoZSBtYXJrZXIgYm94IGlzIG91dHNpZGUgdGhlIHByaW5jaXBhbCBibG9jayBib3gsIGFzIGRlc2NyaWJlZCBpbiB0aGUgc2VjdGlvbiBvbiB0aGUgOjptYXJrZXIgcHNldWRvLWVsZW1lbnQgYmVsb3cuIn0se25hbWU6Im91dHNpZGUiLGRlc2NyaXB0aW9uOiJUaGUgOjptYXJrZXIgcHNldWRvLWVsZW1lbnQgaXMgYW4gaW5saW5lIGVsZW1lbnQgcGxhY2VkIGltbWVkaWF0ZWx5IGJlZm9yZSBhbGwgOjpiZWZvcmUgcHNldWRvLWVsZW1lbnRzIGluIHRoZSBwcmluY2lwYWwgYmxvY2sgYm94LCBhZnRlciB3aGljaCB0aGUgZWxlbWVudCdzIGNvbnRlbnQgZmxvd3MuIn1dLHN5bnRheDoiaW5zaWRlIHwgb3V0c2lkZSIscmVsZXZhbmNlOjU1LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9saXN0LXN0eWxlLXBvc2l0aW9uIn1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhlIHBvc2l0aW9uIG9mIHRoZSAnOjptYXJrZXInIHBzZXVkby1lbGVtZW50J3MgYm94IGluIHRoZSBsaXN0IGl0ZW0uIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJsaXN0LXN0eWxlLXR5cGUiLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzEiLCJDMSIsIklFNCIsIk8zLjUiXSx2YWx1ZXM6W3tuYW1lOiJhcm1lbmlhbiIsZGVzY3JpcHRpb246IlRyYWRpdGlvbmFsIHVwcGVyY2FzZSBBcm1lbmlhbiBudW1iZXJpbmcuIn0se25hbWU6ImNpcmNsZSIsZGVzY3JpcHRpb246IkEgaG9sbG93IGNpcmNsZS4ifSx7bmFtZToiZGVjaW1hbCIsZGVzY3JpcHRpb246Ildlc3Rlcm4gZGVjaW1hbCBudW1iZXJzLiJ9LHtuYW1lOiJkZWNpbWFsLWxlYWRpbmctemVybyIsZGVzY3JpcHRpb246IkRlY2ltYWwgbnVtYmVycyBwYWRkZWQgYnkgaW5pdGlhbCB6ZXJvcy4ifSx7bmFtZToiZGlzYyIsZGVzY3JpcHRpb246IkEgZmlsbGVkIGNpcmNsZS4ifSx7bmFtZToiZ2VvcmdpYW4iLGRlc2NyaXB0aW9uOiJUcmFkaXRpb25hbCBHZW9yZ2lhbiBudW1iZXJpbmcuIn0se25hbWU6Imxvd2VyLWFscGhhIixkZXNjcmlwdGlvbjoiTG93ZXJjYXNlIEFTQ0lJIGxldHRlcnMuIn0se25hbWU6Imxvd2VyLWdyZWVrIixkZXNjcmlwdGlvbjoiTG93ZXJjYXNlIGNsYXNzaWNhbCBHcmVlay4ifSx7bmFtZToibG93ZXItbGF0aW4iLGRlc2NyaXB0aW9uOiJMb3dlcmNhc2UgQVNDSUkgbGV0dGVycy4ifSx7bmFtZToibG93ZXItcm9tYW4iLGRlc2NyaXB0aW9uOiJMb3dlcmNhc2UgQVNDSUkgUm9tYW4gbnVtZXJhbHMuIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJObyBtYXJrZXIifSx7bmFtZToic3F1YXJlIixkZXNjcmlwdGlvbjoiQSBmaWxsZWQgc3F1YXJlLiJ9LHtuYW1lOiJzeW1ib2xzKCkiLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzEiLCJDMSIsIklFNCIsIk8zLjUiXSxkZXNjcmlwdGlvbjoiQWxsb3dzIGEgY291bnRlciBzdHlsZSB0byBiZSBkZWZpbmVkIGlubGluZS4ifSx7bmFtZToidXBwZXItYWxwaGEiLGRlc2NyaXB0aW9uOiJVcHBlcmNhc2UgQVNDSUkgbGV0dGVycy4ifSx7bmFtZToidXBwZXItbGF0aW4iLGRlc2NyaXB0aW9uOiJVcHBlcmNhc2UgQVNDSUkgbGV0dGVycy4ifSx7bmFtZToidXBwZXItcm9tYW4iLGRlc2NyaXB0aW9uOiJVcHBlcmNhc2UgQVNDSUkgUm9tYW4gbnVtZXJhbHMuIn1dLHN5bnRheDoiPGNvdW50ZXItc3R5bGU+IHwgPHN0cmluZz4gfCBub25lIixyZWxldmFuY2U6NzMscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2xpc3Qtc3R5bGUtdHlwZSJ9XSxkZXNjcmlwdGlvbjoiVXNlZCB0byBjb25zdHJ1Y3QgdGhlIGRlZmF1bHQgY29udGVudHMgb2YgYSBsaXN0IGl0ZW0ncyBtYXJrZXIiLHJlc3RyaWN0aW9uczpbImVudW0iLCJzdHJpbmciXX0se25hbWU6Im1hcmdpbiIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMSIsIkMxIiwiSUUzIiwiTzMuNSJdLHZhbHVlczpbe25hbWU6ImF1dG8ifV0sc3ludGF4OiJbIDxsZW5ndGg+IHwgPHBlcmNlbnRhZ2U+IHwgYXV0byBdezEsNH0iLHJlbGV2YW5jZTo5NSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvbWFyZ2luIn1dLGRlc2NyaXB0aW9uOiJTaG9ydGhhbmQgcHJvcGVydHkgdG8gc2V0IHZhbHVlcyBmb3IgdGhlIHRoaWNrbmVzcyBvZiB0aGUgbWFyZ2luIGFyZWEuIElmIGxlZnQgaXMgb21pdHRlZCwgaXQgaXMgdGhlIHNhbWUgYXMgcmlnaHQuIElmIGJvdHRvbSBpcyBvbWl0dGVkIGl0IGlzIHRoZSBzYW1lIGFzIHRvcCwgaWYgcmlnaHQgaXMgb21pdHRlZCBpdCBpcyB0aGUgc2FtZSBhcyB0b3AuIE5lZ2F0aXZlIHZhbHVlcyBmb3IgbWFyZ2luIHByb3BlcnRpZXMgYXJlIGFsbG93ZWQsIGJ1dCB0aGVyZSBtYXkgYmUgaW1wbGVtZW50YXRpb24tc3BlY2lmaWMgbGltaXRzLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToibWFyZ2luLWJsb2NrLWVuZCIsYnJvd3NlcnM6WyJFNzkiLCJGRjQxIiwiUzEyLjEiLCJDNjkiLCJPNTYiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIn1dLHN5bnRheDoiPCdtYXJnaW4tbGVmdCc+IixyZWxldmFuY2U6NTUscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL21hcmdpbi1ibG9jay1lbmQifV0sZGVzY3JpcHRpb246IkxvZ2ljYWwgJ21hcmdpbi1ib3R0b20nLiBNYXBwaW5nIGRlcGVuZHMgb24gdGhlIHBhcmVudCBlbGVtZW50J3MgJ3dyaXRpbmctbW9kZScsICdkaXJlY3Rpb24nLCBhbmQgJ3RleHQtb3JpZW50YXRpb24nLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToibWFyZ2luLWJsb2NrLXN0YXJ0Iixicm93c2VyczpbIkU3OSIsIkZGNDEiLCJTMTIuMSIsIkM2OSIsIk81NiJdLHZhbHVlczpbe25hbWU6ImF1dG8ifV0sc3ludGF4OiI8J21hcmdpbi1sZWZ0Jz4iLHJlbGV2YW5jZTo1NixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvbWFyZ2luLWJsb2NrLXN0YXJ0In1dLGRlc2NyaXB0aW9uOiJMb2dpY2FsICdtYXJnaW4tdG9wJy4gTWFwcGluZyBkZXBlbmRzIG9uIHRoZSBwYXJlbnQgZWxlbWVudCdzICd3cml0aW5nLW1vZGUnLCAnZGlyZWN0aW9uJywgYW5kICd0ZXh0LW9yaWVudGF0aW9uJy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6Im1hcmdpbi1ib3R0b20iLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzEiLCJDMSIsIklFMyIsIk8zLjUiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIn1dLHN5bnRheDoiPGxlbmd0aD4gfCA8cGVyY2VudGFnZT4gfCBhdXRvIixyZWxldmFuY2U6OTEscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL21hcmdpbi1ib3R0b20ifV0sZGVzY3JpcHRpb246IlNob3J0aGFuZCBwcm9wZXJ0eSB0byBzZXQgdmFsdWVzIGZvciB0aGUgdGhpY2tuZXNzIG9mIHRoZSBtYXJnaW4gYXJlYS4gSWYgbGVmdCBpcyBvbWl0dGVkLCBpdCBpcyB0aGUgc2FtZSBhcyByaWdodC4gSWYgYm90dG9tIGlzIG9taXR0ZWQgaXQgaXMgdGhlIHNhbWUgYXMgdG9wLCBpZiByaWdodCBpcyBvbWl0dGVkIGl0IGlzIHRoZSBzYW1lIGFzIHRvcC4gTmVnYXRpdmUgdmFsdWVzIGZvciBtYXJnaW4gcHJvcGVydGllcyBhcmUgYWxsb3dlZCwgYnV0IHRoZXJlIG1heSBiZSBpbXBsZW1lbnRhdGlvbi1zcGVjaWZpYyBsaW1pdHMuLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToibWFyZ2luLWlubGluZS1lbmQiLGJyb3dzZXJzOlsiRTc5IiwiRkY0MSIsIlMxMi4xIiwiQzY5IiwiTzU2Il0sdmFsdWVzOlt7bmFtZToiYXV0byJ9XSxzeW50YXg6IjwnbWFyZ2luLWxlZnQnPiIscmVsZXZhbmNlOjU4LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9tYXJnaW4taW5saW5lLWVuZCJ9XSxkZXNjcmlwdGlvbjoiTG9naWNhbCAnbWFyZ2luLXJpZ2h0Jy4gTWFwcGluZyBkZXBlbmRzIG9uIHRoZSBwYXJlbnQgZWxlbWVudCdzICd3cml0aW5nLW1vZGUnLCAnZGlyZWN0aW9uJywgYW5kICd0ZXh0LW9yaWVudGF0aW9uJy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6Im1hcmdpbi1pbmxpbmUtc3RhcnQiLGJyb3dzZXJzOlsiRTc5IiwiRkY0MSIsIlMxMi4xIiwiQzY5IiwiTzU2Il0sdmFsdWVzOlt7bmFtZToiYXV0byJ9XSxzeW50YXg6IjwnbWFyZ2luLWxlZnQnPiIscmVsZXZhbmNlOjU5LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9tYXJnaW4taW5saW5lLXN0YXJ0In1dLGRlc2NyaXB0aW9uOiJMb2dpY2FsICdtYXJnaW4tbGVmdCcuIE1hcHBpbmcgZGVwZW5kcyBvbiB0aGUgcGFyZW50IGVsZW1lbnQncyAnd3JpdGluZy1tb2RlJywgJ2RpcmVjdGlvbicsIGFuZCAndGV4dC1vcmllbnRhdGlvbicuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiJtYXJnaW4tbGVmdCIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMSIsIkMxIiwiSUUzIiwiTzMuNSJdLHZhbHVlczpbe25hbWU6ImF1dG8ifV0sc3ludGF4OiI8bGVuZ3RoPiB8IDxwZXJjZW50YWdlPiB8IGF1dG8iLHJlbGV2YW5jZTo5MSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvbWFyZ2luLWxlZnQifV0sZGVzY3JpcHRpb246IlNob3J0aGFuZCBwcm9wZXJ0eSB0byBzZXQgdmFsdWVzIGZvciB0aGUgdGhpY2tuZXNzIG9mIHRoZSBtYXJnaW4gYXJlYS4gSWYgbGVmdCBpcyBvbWl0dGVkLCBpdCBpcyB0aGUgc2FtZSBhcyByaWdodC4gSWYgYm90dG9tIGlzIG9taXR0ZWQgaXQgaXMgdGhlIHNhbWUgYXMgdG9wLCBpZiByaWdodCBpcyBvbWl0dGVkIGl0IGlzIHRoZSBzYW1lIGFzIHRvcC4gTmVnYXRpdmUgdmFsdWVzIGZvciBtYXJnaW4gcHJvcGVydGllcyBhcmUgYWxsb3dlZCwgYnV0IHRoZXJlIG1heSBiZSBpbXBsZW1lbnRhdGlvbi1zcGVjaWZpYyBsaW1pdHMuLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToibWFyZ2luLXJpZ2h0Iixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxIiwiQzEiLCJJRTMiLCJPMy41Il0sdmFsdWVzOlt7bmFtZToiYXV0byJ9XSxzeW50YXg6IjxsZW5ndGg+IHwgPHBlcmNlbnRhZ2U+IHwgYXV0byIscmVsZXZhbmNlOjkxLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9tYXJnaW4tcmlnaHQifV0sZGVzY3JpcHRpb246IlNob3J0aGFuZCBwcm9wZXJ0eSB0byBzZXQgdmFsdWVzIGZvciB0aGUgdGhpY2tuZXNzIG9mIHRoZSBtYXJnaW4gYXJlYS4gSWYgbGVmdCBpcyBvbWl0dGVkLCBpdCBpcyB0aGUgc2FtZSBhcyByaWdodC4gSWYgYm90dG9tIGlzIG9taXR0ZWQgaXQgaXMgdGhlIHNhbWUgYXMgdG9wLCBpZiByaWdodCBpcyBvbWl0dGVkIGl0IGlzIHRoZSBzYW1lIGFzIHRvcC4gTmVnYXRpdmUgdmFsdWVzIGZvciBtYXJnaW4gcHJvcGVydGllcyBhcmUgYWxsb3dlZCwgYnV0IHRoZXJlIG1heSBiZSBpbXBsZW1lbnRhdGlvbi1zcGVjaWZpYyBsaW1pdHMuLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToibWFyZ2luLXRvcCIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMSIsIkMxIiwiSUUzIiwiTzMuNSJdLHZhbHVlczpbe25hbWU6ImF1dG8ifV0sc3ludGF4OiI8bGVuZ3RoPiB8IDxwZXJjZW50YWdlPiB8IGF1dG8iLHJlbGV2YW5jZTo5NCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvbWFyZ2luLXRvcCJ9XSxkZXNjcmlwdGlvbjoiU2hvcnRoYW5kIHByb3BlcnR5IHRvIHNldCB2YWx1ZXMgZm9yIHRoZSB0aGlja25lc3Mgb2YgdGhlIG1hcmdpbiBhcmVhLiBJZiBsZWZ0IGlzIG9taXR0ZWQsIGl0IGlzIHRoZSBzYW1lIGFzIHJpZ2h0LiBJZiBib3R0b20gaXMgb21pdHRlZCBpdCBpcyB0aGUgc2FtZSBhcyB0b3AsIGlmIHJpZ2h0IGlzIG9taXR0ZWQgaXQgaXMgdGhlIHNhbWUgYXMgdG9wLiBOZWdhdGl2ZSB2YWx1ZXMgZm9yIG1hcmdpbiBwcm9wZXJ0aWVzIGFyZSBhbGxvd2VkLCBidXQgdGhlcmUgbWF5IGJlIGltcGxlbWVudGF0aW9uLXNwZWNpZmljIGxpbWl0cy4uIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiJtYXJrZXIiLGJyb3dzZXJzOlsiRTgwIiwiRkY3MiIsIlMxMy4xIiwiQzgwIiwiTzY3Il0sdmFsdWVzOlt7bmFtZToibm9uZSIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IG5vIG1hcmtlciBzeW1ib2wgd2lsbCBiZSBkcmF3biBhdCB0aGUgZ2l2ZW4gdmVydGV4IG9yIHZlcnRpY2VzLiJ9LHtuYW1lOiJ1cmwoKSIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IHRoZSA8bWFya2VyPiBlbGVtZW50IHJlZmVyZW5jZWQgd2lsbCBiZSB1c2VkLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgbWFya2VyIHN5bWJvbCB0aGF0IHNoYWxsIGJlIHVzZWQgZm9yIGFsbCBwb2ludHMgb24gdGhlIHNldHMgdGhlIHZhbHVlIGZvciBhbGwgdmVydGljZXMgb24gdGhlIGdpdmVuICdwYXRoJyBlbGVtZW50IG9yIGJhc2ljIHNoYXBlLiIscmVzdHJpY3Rpb25zOlsidXJsIl19LHtuYW1lOiJtYXJrZXItZW5kIixicm93c2VyczpbIkU4MCIsIkZGNzIiLCJTMTMuMSIsIkM4MCIsIk82NyJdLHZhbHVlczpbe25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCBubyBtYXJrZXIgc3ltYm9sIHdpbGwgYmUgZHJhd24gYXQgdGhlIGdpdmVuIHZlcnRleCBvciB2ZXJ0aWNlcy4ifSx7bmFtZToidXJsKCkiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCB0aGUgPG1hcmtlcj4gZWxlbWVudCByZWZlcmVuY2VkIHdpbGwgYmUgdXNlZC4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhlIG1hcmtlciB0aGF0IHdpbGwgYmUgZHJhd24gYXQgdGhlIGxhc3QgdmVydGljZXMgb2YgdGhlIGdpdmVuIG1hcmthYmxlIGVsZW1lbnQuIixyZXN0cmljdGlvbnM6WyJ1cmwiXX0se25hbWU6Im1hcmtlci1taWQiLGJyb3dzZXJzOlsiRTgwIiwiRkY3MiIsIlMxMy4xIiwiQzgwIiwiTzY3Il0sdmFsdWVzOlt7bmFtZToibm9uZSIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IG5vIG1hcmtlciBzeW1ib2wgd2lsbCBiZSBkcmF3biBhdCB0aGUgZ2l2ZW4gdmVydGV4IG9yIHZlcnRpY2VzLiJ9LHtuYW1lOiJ1cmwoKSIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IHRoZSA8bWFya2VyPiBlbGVtZW50IHJlZmVyZW5jZWQgd2lsbCBiZSB1c2VkLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgbWFya2VyIHRoYXQgd2lsbCBiZSBkcmF3biBhdCBhbGwgdmVydGljZXMgZXhjZXB0IHRoZSBmaXJzdCBhbmQgbGFzdC4iLHJlc3RyaWN0aW9uczpbInVybCJdfSx7bmFtZToibWFya2VyLXN0YXJ0Iixicm93c2VyczpbIkU4MCIsIkZGNzIiLCJTMTMuMSIsIkM4MCIsIk82NyJdLHZhbHVlczpbe25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCBubyBtYXJrZXIgc3ltYm9sIHdpbGwgYmUgZHJhd24gYXQgdGhlIGdpdmVuIHZlcnRleCBvciB2ZXJ0aWNlcy4ifSx7bmFtZToidXJsKCkiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCB0aGUgPG1hcmtlcj4gZWxlbWVudCByZWZlcmVuY2VkIHdpbGwgYmUgdXNlZC4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhlIG1hcmtlciB0aGF0IHdpbGwgYmUgZHJhd24gYXQgdGhlIGZpcnN0IHZlcnRpY2VzIG9mIHRoZSBnaXZlbiBtYXJrYWJsZSBlbGVtZW50LiIscmVzdHJpY3Rpb25zOlsidXJsIl19LHtuYW1lOiJtYXNrLWltYWdlIixicm93c2VyczpbIkU3OSIsIkZGNTMiLCJTMTUuNCIsIkMxMjAiLCJPMTUiXSx2YWx1ZXM6W3tuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiQ291bnRzIGFzIGEgdHJhbnNwYXJlbnQgYmxhY2sgaW1hZ2UgbGF5ZXIuIn0se25hbWU6InVybCgpIixkZXNjcmlwdGlvbjoiUmVmZXJlbmNlIHRvIGEgPG1hc2sgZWxlbWVudCBvciB0byBhIENTUyBpbWFnZS4ifV0sc3ludGF4OiI8bWFzay1yZWZlcmVuY2U+IyIscmVsZXZhbmNlOjU3LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9tYXNrLWltYWdlIn1dLGRlc2NyaXB0aW9uOiJTZXRzIHRoZSBtYXNrIGxheWVyIGltYWdlIG9mIGFuIGVsZW1lbnQuIixyZXN0cmljdGlvbnM6WyJ1cmwiLCJpbWFnZSIsImVudW0iXX0se25hbWU6Im1hc2stbW9kZSIsYnJvd3NlcnM6WyJFMTIwIiwiRkY1MyIsIlMxNS40IiwiQzEyMCIsIk8xMDYiXSx2YWx1ZXM6W3tuYW1lOiJhbHBoYSIsZGVzY3JpcHRpb246IkFscGhhIHZhbHVlcyBvZiB0aGUgbWFzayBsYXllciBpbWFnZSBzaG91bGQgYmUgdXNlZCBhcyB0aGUgbWFzayB2YWx1ZXMuIn0se25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJVc2UgYWxwaGEgdmFsdWVzIGlmICdtYXNrLWltYWdlJyBpcyBhbiBpbWFnZSwgbHVtaW5hbmNlIGlmIGEgPG1hc2s+IGVsZW1lbnQgb3IgYSBDU1MgaW1hZ2UuIn0se25hbWU6Imx1bWluYW5jZSIsZGVzY3JpcHRpb246Ikx1bWluYW5jZSB2YWx1ZXMgb2YgdGhlIG1hc2sgbGF5ZXIgaW1hZ2Ugc2hvdWxkIGJlIHVzZWQgYXMgdGhlIG1hc2sgdmFsdWVzLiJ9XSxzeW50YXg6IjxtYXNraW5nLW1vZGU+IyIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9tYXNrLW1vZGUifV0sZGVzY3JpcHRpb246IkluZGljYXRlcyB3aGV0aGVyIHRoZSBtYXNrIGxheWVyIGltYWdlIGlzIHRyZWF0ZWQgYXMgbHVtaW5hbmNlIG1hc2sgb3IgYWxwaGEgbWFzay4iLHJlc3RyaWN0aW9uczpbInVybCIsImltYWdlIiwiZW51bSJdfSx7bmFtZToibWFzay1vcmlnaW4iLGJyb3dzZXJzOlsiRTEyMCIsIkZGNTMiLCJTMTUuNCIsIkMxMjAiLCJPMTA2Il0sc3ludGF4OiI8Z2VvbWV0cnktYm94PiMiLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvbWFzay1vcmlnaW4ifV0sZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgbWFzayBwb3NpdGlvbmluZyBhcmVhLiIscmVzdHJpY3Rpb25zOlsiZ2VvbWV0cnktYm94IiwiZW51bSJdfSx7bmFtZToibWFzay1wb3NpdGlvbiIsYnJvd3NlcnM6WyJFNzkiLCJGRjUzIiwiUzE1LjQiLCJDMTIwIiwiTzEwNiJdLHN5bnRheDoiPHBvc2l0aW9uPiMiLHJlbGV2YW5jZTo1MixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvbWFzay1wb3NpdGlvbiJ9XSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGhvdyBtYXNrIGxheWVyIGltYWdlcyBhcmUgcG9zaXRpb25lZC4iLHJlc3RyaWN0aW9uczpbInBvc2l0aW9uIiwibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToibWFzay1yZXBlYXQiLGJyb3dzZXJzOlsiRTc5IiwiRkY1MyIsIlMxNS40IiwiQzEyMCIsIk8xMDYiXSxzeW50YXg6IjxyZXBlYXQtc3R5bGU+IyIscmVsZXZhbmNlOjUzLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9tYXNrLXJlcGVhdCJ9XSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGhvdyBtYXNrIGxheWVyIGltYWdlcyBhcmUgdGlsZWQgYWZ0ZXIgdGhleSBoYXZlIGJlZW4gc2l6ZWQgYW5kIHBvc2l0aW9uZWQuIixyZXN0cmljdGlvbnM6WyJyZXBlYXQiXX0se25hbWU6Im1hc2stc2l6ZSIsYnJvd3NlcnM6WyJFNzkiLCJGRjUzIiwiUzE1LjQiLCJDMTIwIiwiTzEwNiJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJSZXNvbHZlZCBieSB1c2luZyB0aGUgaW1hZ2UncyBpbnRyaW5zaWMgcmF0aW8gYW5kIHRoZSBzaXplIG9mIHRoZSBvdGhlciBkaW1lbnNpb24sIG9yIGZhaWxpbmcgdGhhdCwgdXNpbmcgdGhlIGltYWdlJ3MgaW50cmluc2ljIHNpemUsIG9yIGZhaWxpbmcgdGhhdCwgdHJlYXRpbmcgaXQgYXMgMTAwJS4ifSx7bmFtZToiY29udGFpbiIsZGVzY3JpcHRpb246IlNjYWxlIHRoZSBpbWFnZSwgd2hpbGUgcHJlc2VydmluZyBpdHMgaW50cmluc2ljIGFzcGVjdCByYXRpbyAoaWYgYW55KSwgdG8gdGhlIGxhcmdlc3Qgc2l6ZSBzdWNoIHRoYXQgYm90aCBpdHMgd2lkdGggYW5kIGl0cyBoZWlnaHQgY2FuIGZpdCBpbnNpZGUgdGhlIGJhY2tncm91bmQgcG9zaXRpb25pbmcgYXJlYS4ifSx7bmFtZToiY292ZXIiLGRlc2NyaXB0aW9uOiJTY2FsZSB0aGUgaW1hZ2UsIHdoaWxlIHByZXNlcnZpbmcgaXRzIGludHJpbnNpYyBhc3BlY3QgcmF0aW8gKGlmIGFueSksIHRvIHRoZSBzbWFsbGVzdCBzaXplIHN1Y2ggdGhhdCBib3RoIGl0cyB3aWR0aCBhbmQgaXRzIGhlaWdodCBjYW4gY29tcGxldGVseSBjb3ZlciB0aGUgYmFja2dyb3VuZCBwb3NpdGlvbmluZyBhcmVhLiJ9XSxzeW50YXg6IjxiZy1zaXplPiMiLHJlbGV2YW5jZTo1NCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvbWFzay1zaXplIn1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhlIHNpemUgb2YgdGhlIG1hc2sgbGF5ZXIgaW1hZ2VzLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwicGVyY2VudGFnZSIsImVudW0iXX0se25hbWU6Im1hc2stdHlwZSIsYnJvd3NlcnM6WyJFNzkiLCJGRjM1IiwiUzciLCJDMjQiLCJPMTUiXSx2YWx1ZXM6W3tuYW1lOiJhbHBoYSIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IHRoZSBhbHBoYSB2YWx1ZXMgb2YgdGhlIG1hc2sgc2hvdWxkIGJlIHVzZWQuIn0se25hbWU6Imx1bWluYW5jZSIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IHRoZSBsdW1pbmFuY2UgdmFsdWVzIG9mIHRoZSBtYXNrIHNob3VsZCBiZSB1c2VkLiJ9XSxzeW50YXg6Imx1bWluYW5jZSB8IGFscGhhIixyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL21hc2stdHlwZSJ9XSxkZXNjcmlwdGlvbjoiRGVmaW5lcyB3aGV0aGVyIHRoZSBjb250ZW50IG9mIHRoZSA8bWFzaz4gZWxlbWVudCBpcyB0cmVhdGVkIGFzIGFzIGx1bWluYW5jZSBtYXNrIG9yIGFscGhhIG1hc2suIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJtYXgtYmxvY2stc2l6ZSIsYnJvd3NlcnM6WyJFNzkiLCJGRjQxIiwiUzEyLjEiLCJDNTciLCJPNDQiXSx2YWx1ZXM6W3tuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiTm8gbGltaXQgb24gdGhlIHdpZHRoIG9mIHRoZSBib3guIn1dLHN5bnRheDoiPCdtYXgtd2lkdGgnPiIscmVsZXZhbmNlOjUzLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9tYXgtYmxvY2stc2l6ZSJ9XSxkZXNjcmlwdGlvbjoiTWF4aW11bSBzaXplIG9mIGFuIGVsZW1lbnQgaW4gdGhlIGRpcmVjdGlvbiBvcHBvc2l0ZSB0aGF0IG9mIHRoZSBkaXJlY3Rpb24gc3BlY2lmaWVkIGJ5ICd3cml0aW5nLW1vZGUnLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToibWF4LWhlaWdodCIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMS4zIiwiQzE4IiwiSUU3IiwiTzciXSx2YWx1ZXM6W3tuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiTm8gbGltaXQgb24gdGhlIGhlaWdodCBvZiB0aGUgYm94LiJ9LHtuYW1lOiJmaXQtY29udGVudCIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMS4zIiwiQzE4IiwiSUU3IiwiTzciXSxkZXNjcmlwdGlvbjoiVXNlIHRoZSBmaXQtY29udGVudCBpbmxpbmUgc2l6ZSBvciBmaXQtY29udGVudCBibG9jayBzaXplLCBhcyBhcHByb3ByaWF0ZSB0byB0aGUgd3JpdGluZyBtb2RlLiJ9LHtuYW1lOiJtYXgtY29udGVudCIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMS4zIiwiQzE4IiwiSUU3IiwiTzciXSxkZXNjcmlwdGlvbjoiVXNlIHRoZSBtYXgtY29udGVudCBpbmxpbmUgc2l6ZSBvciBtYXgtY29udGVudCBibG9jayBzaXplLCBhcyBhcHByb3ByaWF0ZSB0byB0aGUgd3JpdGluZyBtb2RlLiJ9LHtuYW1lOiJtaW4tY29udGVudCIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMS4zIiwiQzE4IiwiSUU3IiwiTzciXSxkZXNjcmlwdGlvbjoiVXNlIHRoZSBtaW4tY29udGVudCBpbmxpbmUgc2l6ZSBvciBtaW4tY29udGVudCBibG9jayBzaXplLCBhcyBhcHByb3ByaWF0ZSB0byB0aGUgd3JpdGluZyBtb2RlLiJ9XSxzeW50YXg6Im5vbmUgfCA8bGVuZ3RoLXBlcmNlbnRhZ2U+IHwgbWluLWNvbnRlbnQgfCBtYXgtY29udGVudCB8IGZpdC1jb250ZW50IHwgZml0LWNvbnRlbnQoPGxlbmd0aC1wZXJjZW50YWdlPikiLHJlbGV2YW5jZTo4NSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvbWF4LWhlaWdodCJ9XSxkZXNjcmlwdGlvbjoiQWxsb3dzIGF1dGhvcnMgdG8gY29uc3RyYWluIGNvbnRlbnQgaGVpZ2h0IHRvIGEgY2VydGFpbiByYW5nZS4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6Im1heC1pbmxpbmUtc2l6ZSIsYnJvd3NlcnM6WyJFNzkiLCJGRjQxIiwiUzEyLjEiLCJDNTciLCJPNDQiXSx2YWx1ZXM6W3tuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiTm8gbGltaXQgb24gdGhlIGhlaWdodCBvZiB0aGUgYm94LiJ9XSxzeW50YXg6IjwnbWF4LXdpZHRoJz4iLHJlbGV2YW5jZTo1NCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvbWF4LWlubGluZS1zaXplIn1dLGRlc2NyaXB0aW9uOiJNYXhpbXVtIHNpemUgb2YgYW4gZWxlbWVudCBpbiB0aGUgZGlyZWN0aW9uIHNwZWNpZmllZCBieSAnd3JpdGluZy1tb2RlJy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6Im1heC13aWR0aCIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMSIsIkMxIiwiSUU3IiwiTzQiXSx2YWx1ZXM6W3tuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiTm8gbGltaXQgb24gdGhlIHdpZHRoIG9mIHRoZSBib3guIn0se25hbWU6ImZpdC1jb250ZW50Iixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxIiwiQzEiLCJJRTciLCJPNCJdLGRlc2NyaXB0aW9uOiJVc2UgdGhlIGZpdC1jb250ZW50IGlubGluZSBzaXplIG9yIGZpdC1jb250ZW50IGJsb2NrIHNpemUsIGFzIGFwcHJvcHJpYXRlIHRvIHRoZSB3cml0aW5nIG1vZGUuIn0se25hbWU6Im1heC1jb250ZW50Iixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxIiwiQzEiLCJJRTciLCJPNCJdLGRlc2NyaXB0aW9uOiJVc2UgdGhlIG1heC1jb250ZW50IGlubGluZSBzaXplIG9yIG1heC1jb250ZW50IGJsb2NrIHNpemUsIGFzIGFwcHJvcHJpYXRlIHRvIHRoZSB3cml0aW5nIG1vZGUuIn0se25hbWU6Im1pbi1jb250ZW50Iixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxIiwiQzEiLCJJRTciLCJPNCJdLGRlc2NyaXB0aW9uOiJVc2UgdGhlIG1pbi1jb250ZW50IGlubGluZSBzaXplIG9yIG1pbi1jb250ZW50IGJsb2NrIHNpemUsIGFzIGFwcHJvcHJpYXRlIHRvIHRoZSB3cml0aW5nIG1vZGUuIn1dLHN5bnRheDoibm9uZSB8IDxsZW5ndGgtcGVyY2VudGFnZT4gfCBtaW4tY29udGVudCB8IG1heC1jb250ZW50IHwgZml0LWNvbnRlbnQgfCBmaXQtY29udGVudCg8bGVuZ3RoLXBlcmNlbnRhZ2U+KSIscmVsZXZhbmNlOjkxLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9tYXgtd2lkdGgifV0sZGVzY3JpcHRpb246IkFsbG93cyBhdXRob3JzIHRvIGNvbnN0cmFpbiBjb250ZW50IHdpZHRoIHRvIGEgY2VydGFpbiByYW5nZS4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6Im1pbi1ibG9jay1zaXplIixicm93c2VyczpbIkU3OSIsIkZGNDEiLCJTMTIuMSIsIkM1NyIsIk80NCJdLHN5bnRheDoiPCdtaW4td2lkdGgnPiIscmVsZXZhbmNlOjUzLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9taW4tYmxvY2stc2l6ZSJ9XSxkZXNjcmlwdGlvbjoiTWluaW1hbCBzaXplIG9mIGFuIGVsZW1lbnQgaW4gdGhlIGRpcmVjdGlvbiBvcHBvc2l0ZSB0aGF0IG9mIHRoZSBkaXJlY3Rpb24gc3BlY2lmaWVkIGJ5ICd3cml0aW5nLW1vZGUnLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToibWluLWhlaWdodCIsYnJvd3NlcnM6WyJFMTIiLCJGRjMiLCJTMS4zIiwiQzEiLCJJRTciLCJPNCJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGJyb3dzZXJzOlsiRTEyIiwiRkYzIiwiUzEuMyIsIkMxIiwiSUU3IiwiTzQiXX0se25hbWU6ImZpdC1jb250ZW50Iixicm93c2VyczpbIkUxMiIsIkZGMyIsIlMxLjMiLCJDMSIsIklFNyIsIk80Il0sZGVzY3JpcHRpb246IlVzZSB0aGUgZml0LWNvbnRlbnQgaW5saW5lIHNpemUgb3IgZml0LWNvbnRlbnQgYmxvY2sgc2l6ZSwgYXMgYXBwcm9wcmlhdGUgdG8gdGhlIHdyaXRpbmcgbW9kZS4ifSx7bmFtZToibWF4LWNvbnRlbnQiLGJyb3dzZXJzOlsiRTEyIiwiRkYzIiwiUzEuMyIsIkMxIiwiSUU3IiwiTzQiXSxkZXNjcmlwdGlvbjoiVXNlIHRoZSBtYXgtY29udGVudCBpbmxpbmUgc2l6ZSBvciBtYXgtY29udGVudCBibG9jayBzaXplLCBhcyBhcHByb3ByaWF0ZSB0byB0aGUgd3JpdGluZyBtb2RlLiJ9LHtuYW1lOiJtaW4tY29udGVudCIsYnJvd3NlcnM6WyJFMTIiLCJGRjMiLCJTMS4zIiwiQzEiLCJJRTciLCJPNCJdLGRlc2NyaXB0aW9uOiJVc2UgdGhlIG1pbi1jb250ZW50IGlubGluZSBzaXplIG9yIG1pbi1jb250ZW50IGJsb2NrIHNpemUsIGFzIGFwcHJvcHJpYXRlIHRvIHRoZSB3cml0aW5nIG1vZGUuIn1dLHN5bnRheDoiYXV0byB8IDxsZW5ndGg+IHwgPHBlcmNlbnRhZ2U+IHwgbWluLWNvbnRlbnQgfCBtYXgtY29udGVudCB8IGZpdC1jb250ZW50IHwgZml0LWNvbnRlbnQoPGxlbmd0aC1wZXJjZW50YWdlPikiLHJlbGV2YW5jZTo4OSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvbWluLWhlaWdodCJ9XSxkZXNjcmlwdGlvbjoiQWxsb3dzIGF1dGhvcnMgdG8gY29uc3RyYWluIGNvbnRlbnQgaGVpZ2h0IHRvIGEgY2VydGFpbiByYW5nZS4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6Im1pbi1pbmxpbmUtc2l6ZSIsYnJvd3NlcnM6WyJFNzkiLCJGRjQxIiwiUzEyLjEiLCJDNTciLCJPNDQiXSxzeW50YXg6IjwnbWluLXdpZHRoJz4iLHJlbGV2YW5jZTo1NCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvbWluLWlubGluZS1zaXplIn1dLGRlc2NyaXB0aW9uOiJNaW5pbWFsIHNpemUgb2YgYW4gZWxlbWVudCBpbiB0aGUgZGlyZWN0aW9uIHNwZWNpZmllZCBieSAnd3JpdGluZy1tb2RlJy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6Im1pbi13aWR0aCIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMSIsIkMxIiwiSUU3IiwiTzQiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxIiwiQzEiLCJJRTciLCJPNCJdfSx7bmFtZToiZml0LWNvbnRlbnQiLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzEiLCJDMSIsIklFNyIsIk80Il0sZGVzY3JpcHRpb246IlVzZSB0aGUgZml0LWNvbnRlbnQgaW5saW5lIHNpemUgb3IgZml0LWNvbnRlbnQgYmxvY2sgc2l6ZSwgYXMgYXBwcm9wcmlhdGUgdG8gdGhlIHdyaXRpbmcgbW9kZS4ifSx7bmFtZToibWF4LWNvbnRlbnQiLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzEiLCJDMSIsIklFNyIsIk80Il0sZGVzY3JpcHRpb246IlVzZSB0aGUgbWF4LWNvbnRlbnQgaW5saW5lIHNpemUgb3IgbWF4LWNvbnRlbnQgYmxvY2sgc2l6ZSwgYXMgYXBwcm9wcmlhdGUgdG8gdGhlIHdyaXRpbmcgbW9kZS4ifSx7bmFtZToibWluLWNvbnRlbnQiLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzEiLCJDMSIsIklFNyIsIk80Il0sZGVzY3JpcHRpb246IlVzZSB0aGUgbWluLWNvbnRlbnQgaW5saW5lIHNpemUgb3IgbWluLWNvbnRlbnQgYmxvY2sgc2l6ZSwgYXMgYXBwcm9wcmlhdGUgdG8gdGhlIHdyaXRpbmcgbW9kZS4ifV0sc3ludGF4OiJhdXRvIHwgPGxlbmd0aD4gfCA8cGVyY2VudGFnZT4gfCBtaW4tY29udGVudCB8IG1heC1jb250ZW50IHwgZml0LWNvbnRlbnQgfCBmaXQtY29udGVudCg8bGVuZ3RoLXBlcmNlbnRhZ2U+KSIscmVsZXZhbmNlOjg4LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9taW4td2lkdGgifV0sZGVzY3JpcHRpb246IkFsbG93cyBhdXRob3JzIHRvIGNvbnN0cmFpbiBjb250ZW50IHdpZHRoIHRvIGEgY2VydGFpbiByYW5nZS4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6Im1peC1ibGVuZC1tb2RlIixicm93c2VyczpbIkU3OSIsIkZGMzIiLCJTOCIsIkM0MSIsIk8yOCJdLHZhbHVlczpbe25hbWU6Im5vcm1hbCIsZGVzY3JpcHRpb246IkRlZmF1bHQgYXR0cmlidXRlIHdoaWNoIHNwZWNpZmllcyBubyBibGVuZGluZyJ9LHtuYW1lOiJtdWx0aXBseSIsZGVzY3JpcHRpb246IlRoZSBzb3VyY2UgY29sb3IgaXMgbXVsdGlwbGllZCBieSB0aGUgZGVzdGluYXRpb24gY29sb3IgYW5kIHJlcGxhY2VzIHRoZSBkZXN0aW5hdGlvbi4ifSx7bmFtZToic2NyZWVuIixkZXNjcmlwdGlvbjoiTXVsdGlwbGllcyB0aGUgY29tcGxlbWVudHMgb2YgdGhlIGJhY2tkcm9wIGFuZCBzb3VyY2UgY29sb3IgdmFsdWVzLCB0aGVuIGNvbXBsZW1lbnRzIHRoZSByZXN1bHQuIn0se25hbWU6Im92ZXJsYXkiLGRlc2NyaXB0aW9uOiJNdWx0aXBsaWVzIG9yIHNjcmVlbnMgdGhlIGNvbG9ycywgZGVwZW5kaW5nIG9uIHRoZSBiYWNrZHJvcCBjb2xvciB2YWx1ZS4ifSx7bmFtZToiZGFya2VuIixkZXNjcmlwdGlvbjoiU2VsZWN0cyB0aGUgZGFya2VyIG9mIHRoZSBiYWNrZHJvcCBhbmQgc291cmNlIGNvbG9ycy4ifSx7bmFtZToibGlnaHRlbiIsZGVzY3JpcHRpb246IlNlbGVjdHMgdGhlIGxpZ2h0ZXIgb2YgdGhlIGJhY2tkcm9wIGFuZCBzb3VyY2UgY29sb3JzLiJ9LHtuYW1lOiJjb2xvci1kb2RnZSIsZGVzY3JpcHRpb246IkJyaWdodGVucyB0aGUgYmFja2Ryb3AgY29sb3IgdG8gcmVmbGVjdCB0aGUgc291cmNlIGNvbG9yLiJ9LHtuYW1lOiJjb2xvci1idXJuIixkZXNjcmlwdGlvbjoiRGFya2VucyB0aGUgYmFja2Ryb3AgY29sb3IgdG8gcmVmbGVjdCB0aGUgc291cmNlIGNvbG9yLiJ9LHtuYW1lOiJoYXJkLWxpZ2h0IixkZXNjcmlwdGlvbjoiTXVsdGlwbGllcyBvciBzY3JlZW5zIHRoZSBjb2xvcnMsIGRlcGVuZGluZyBvbiB0aGUgc291cmNlIGNvbG9yIHZhbHVlLiJ9LHtuYW1lOiJzb2Z0LWxpZ2h0IixkZXNjcmlwdGlvbjoiRGFya2VucyBvciBsaWdodGVucyB0aGUgY29sb3JzLCBkZXBlbmRpbmcgb24gdGhlIHNvdXJjZSBjb2xvciB2YWx1ZS4ifSx7bmFtZToiZGlmZmVyZW5jZSIsZGVzY3JpcHRpb246IlN1YnRyYWN0cyB0aGUgZGFya2VyIG9mIHRoZSB0d28gY29uc3RpdHVlbnQgY29sb3JzIGZyb20gdGhlIGxpZ2h0ZXIgY29sb3IuLiJ9LHtuYW1lOiJleGNsdXNpb24iLGRlc2NyaXB0aW9uOiJQcm9kdWNlcyBhbiBlZmZlY3Qgc2ltaWxhciB0byB0aGF0IG9mIHRoZSBEaWZmZXJlbmNlIG1vZGUgYnV0IGxvd2VyIGluIGNvbnRyYXN0LiJ9LHtuYW1lOiJodWUiLGJyb3dzZXJzOlsiRTc5IiwiRkYzMiIsIlM4IiwiQzQxIiwiTzI4Il0sZGVzY3JpcHRpb246IkNyZWF0ZXMgYSBjb2xvciB3aXRoIHRoZSBodWUgb2YgdGhlIHNvdXJjZSBjb2xvciBhbmQgdGhlIHNhdHVyYXRpb24gYW5kIGx1bWlub3NpdHkgb2YgdGhlIGJhY2tkcm9wIGNvbG9yLiJ9LHtuYW1lOiJzYXR1cmF0aW9uIixicm93c2VyczpbIkU3OSIsIkZGMzIiLCJTOCIsIkM0MSIsIk8yOCJdLGRlc2NyaXB0aW9uOiJDcmVhdGVzIGEgY29sb3Igd2l0aCB0aGUgc2F0dXJhdGlvbiBvZiB0aGUgc291cmNlIGNvbG9yIGFuZCB0aGUgaHVlIGFuZCBsdW1pbm9zaXR5IG9mIHRoZSBiYWNrZHJvcCBjb2xvci4ifSx7bmFtZToiY29sb3IiLGJyb3dzZXJzOlsiRTc5IiwiRkYzMiIsIlM4IiwiQzQxIiwiTzI4Il0sZGVzY3JpcHRpb246IkNyZWF0ZXMgYSBjb2xvciB3aXRoIHRoZSBodWUgYW5kIHNhdHVyYXRpb24gb2YgdGhlIHNvdXJjZSBjb2xvciBhbmQgdGhlIGx1bWlub3NpdHkgb2YgdGhlIGJhY2tkcm9wIGNvbG9yLiJ9LHtuYW1lOiJsdW1pbm9zaXR5Iixicm93c2VyczpbIkU3OSIsIkZGMzIiLCJTOCIsIkM0MSIsIk8yOCJdLGRlc2NyaXB0aW9uOiJDcmVhdGVzIGEgY29sb3Igd2l0aCB0aGUgbHVtaW5vc2l0eSBvZiB0aGUgc291cmNlIGNvbG9yIGFuZCB0aGUgaHVlIGFuZCBzYXR1cmF0aW9uIG9mIHRoZSBiYWNrZHJvcCBjb2xvci4ifV0sc3ludGF4OiI8YmxlbmQtbW9kZT4gfCBwbHVzLWxpZ2h0ZXIiLHJlbGV2YW5jZTo1NCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvbWl4LWJsZW5kLW1vZGUifV0sZGVzY3JpcHRpb246IkRlZmluZXMgdGhlIGZvcm11bGEgdGhhdCBtdXN0IGJlIHVzZWQgdG8gbWl4IHRoZSBjb2xvcnMgd2l0aCB0aGUgYmFja2Ryb3AuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJtb3Rpb24iLGJyb3dzZXJzOlsiQzQ2IiwiTzMzIl0sdmFsdWVzOlt7bmFtZToibm9uZSIsZGVzY3JpcHRpb246Ik5vIG1vdGlvbiBwYXRoIGdldHMgY3JlYXRlZC4ifSx7bmFtZToicGF0aCgpIixkZXNjcmlwdGlvbjoiRGVmaW5lcyBhbiBTVkcgcGF0aCBhcyBhIHN0cmluZywgd2l0aCBvcHRpb25hbCAnZmlsbC1ydWxlJyBhcyB0aGUgZmlyc3QgYXJndW1lbnQuIn0se25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCB0aGUgb2JqZWN0IGlzIHJvdGF0ZWQgYnkgdGhlIGFuZ2xlIG9mIHRoZSBkaXJlY3Rpb24gb2YgdGhlIG1vdGlvbiBwYXRoLiJ9LHtuYW1lOiJyZXZlcnNlIixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgdGhlIG9iamVjdCBpcyByb3RhdGVkIGJ5IHRoZSBhbmdsZSBvZiB0aGUgZGlyZWN0aW9uIG9mIHRoZSBtb3Rpb24gcGF0aCBwbHVzIDE4MCBkZWdyZWVzLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlNob3J0aGFuZCBwcm9wZXJ0eSBmb3Igc2V0dGluZyAnbW90aW9uLXBhdGgnLCAnbW90aW9uLW9mZnNldCcgYW5kICdtb3Rpb24tcm90YXRpb24nLiIscmVzdHJpY3Rpb25zOlsidXJsIiwibGVuZ3RoIiwicGVyY2VudGFnZSIsImFuZ2xlIiwic2hhcGUiLCJnZW9tZXRyeS1ib3giLCJlbnVtIl19LHtuYW1lOiJtb3Rpb24tb2Zmc2V0Iixicm93c2VyczpbIkM0NiIsIk8zMyJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiQSBkaXN0YW5jZSB0aGF0IGRlc2NyaWJlcyB0aGUgcG9zaXRpb24gYWxvbmcgdGhlIHNwZWNpZmllZCBtb3Rpb24gcGF0aC4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6Im1vdGlvbi1wYXRoIixicm93c2VyczpbIkM0NiIsIk8zMyJdLHZhbHVlczpbe25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJObyBtb3Rpb24gcGF0aCBnZXRzIGNyZWF0ZWQuIn0se25hbWU6InBhdGgoKSIsZGVzY3JpcHRpb246IkRlZmluZXMgYW4gU1ZHIHBhdGggYXMgYSBzdHJpbmcsIHdpdGggb3B0aW9uYWwgJ2ZpbGwtcnVsZScgYXMgdGhlIGZpcnN0IGFyZ3VtZW50LiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgbW90aW9uIHBhdGggdGhlIGVsZW1lbnQgZ2V0cyBwb3NpdGlvbmVkIGF0LiIscmVzdHJpY3Rpb25zOlsidXJsIiwic2hhcGUiLCJnZW9tZXRyeS1ib3giLCJlbnVtIl19LHtuYW1lOiJtb3Rpb24tcm90YXRpb24iLGJyb3dzZXJzOlsiQzQ2IiwiTzMzIl0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IHRoZSBvYmplY3QgaXMgcm90YXRlZCBieSB0aGUgYW5nbGUgb2YgdGhlIGRpcmVjdGlvbiBvZiB0aGUgbW90aW9uIHBhdGguIn0se25hbWU6InJldmVyc2UiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCB0aGUgb2JqZWN0IGlzIHJvdGF0ZWQgYnkgdGhlIGFuZ2xlIG9mIHRoZSBkaXJlY3Rpb24gb2YgdGhlIG1vdGlvbiBwYXRoIHBsdXMgMTgwIGRlZ3JlZXMuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRGVmaW5lcyB0aGUgZGlyZWN0aW9uIG9mIHRoZSBlbGVtZW50IHdoaWxlIHBvc2l0aW9uaW5nIGFsb25nIHRoZSBtb3Rpb24gcGF0aC4iLHJlc3RyaWN0aW9uczpbImFuZ2xlIl19LHtuYW1lOiItbW96LWFuaW1hdGlvbiIsYnJvd3NlcnM6WyJGRjkiXSx2YWx1ZXM6W3tuYW1lOiJhbHRlcm5hdGUiLGRlc2NyaXB0aW9uOiJUaGUgYW5pbWF0aW9uIGN5Y2xlIGl0ZXJhdGlvbnMgdGhhdCBhcmUgb2RkIGNvdW50cyBhcmUgcGxheWVkIGluIHRoZSBub3JtYWwgZGlyZWN0aW9uLCBhbmQgdGhlIGFuaW1hdGlvbiBjeWNsZSBpdGVyYXRpb25zIHRoYXQgYXJlIGV2ZW4gY291bnRzIGFyZSBwbGF5ZWQgaW4gYSByZXZlcnNlIGRpcmVjdGlvbi4ifSx7bmFtZToiYWx0ZXJuYXRlLXJldmVyc2UiLGRlc2NyaXB0aW9uOiJUaGUgYW5pbWF0aW9uIGN5Y2xlIGl0ZXJhdGlvbnMgdGhhdCBhcmUgb2RkIGNvdW50cyBhcmUgcGxheWVkIGluIHRoZSByZXZlcnNlIGRpcmVjdGlvbiwgYW5kIHRoZSBhbmltYXRpb24gY3ljbGUgaXRlcmF0aW9ucyB0aGF0IGFyZSBldmVuIGNvdW50cyBhcmUgcGxheWVkIGluIGEgbm9ybWFsIGRpcmVjdGlvbi4ifSx7bmFtZToiYmFja3dhcmRzIixkZXNjcmlwdGlvbjoiVGhlIGJlZ2lubmluZyBwcm9wZXJ0eSB2YWx1ZSAoYXMgZGVmaW5lZCBpbiB0aGUgZmlyc3QgQGtleWZyYW1lcyBhdC1ydWxlKSBpcyBhcHBsaWVkIGJlZm9yZSB0aGUgYW5pbWF0aW9uIGlzIGRpc3BsYXllZCwgZHVyaW5nIHRoZSBwZXJpb2QgZGVmaW5lZCBieSAnYW5pbWF0aW9uLWRlbGF5Jy4ifSx7bmFtZToiYm90aCIsZGVzY3JpcHRpb246IkJvdGggZm9yd2FyZHMgYW5kIGJhY2t3YXJkcyBmaWxsIG1vZGVzIGFyZSBhcHBsaWVkLiJ9LHtuYW1lOiJmb3J3YXJkcyIsZGVzY3JpcHRpb246IlRoZSBmaW5hbCBwcm9wZXJ0eSB2YWx1ZSAoYXMgZGVmaW5lZCBpbiB0aGUgbGFzdCBAa2V5ZnJhbWVzIGF0LXJ1bGUpIGlzIG1haW50YWluZWQgYWZ0ZXIgdGhlIGFuaW1hdGlvbiBjb21wbGV0ZXMuIn0se25hbWU6ImluZmluaXRlIixkZXNjcmlwdGlvbjoiQ2F1c2VzIHRoZSBhbmltYXRpb24gdG8gcmVwZWF0IGZvcmV2ZXIuIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJObyBhbmltYXRpb24gaXMgcGVyZm9ybWVkIn0se25hbWU6Im5vcm1hbCIsZGVzY3JpcHRpb246Ik5vcm1hbCBwbGF5YmFjay4ifSx7bmFtZToicmV2ZXJzZSIsZGVzY3JpcHRpb246IkFsbCBpdGVyYXRpb25zIG9mIHRoZSBhbmltYXRpb24gYXJlIHBsYXllZCBpbiB0aGUgcmV2ZXJzZSBkaXJlY3Rpb24gZnJvbSB0aGUgd2F5IHRoZXkgd2VyZSBzcGVjaWZpZWQuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU2hvcnRoYW5kIHByb3BlcnR5IGNvbWJpbmVzIHNpeCBvZiB0aGUgYW5pbWF0aW9uIHByb3BlcnRpZXMgaW50byBhIHNpbmdsZSBwcm9wZXJ0eS4iLHJlc3RyaWN0aW9uczpbInRpbWUiLCJlbnVtIiwidGltaW5nLWZ1bmN0aW9uIiwiaWRlbnRpZmllciIsIm51bWJlciJdfSx7bmFtZToiLW1vei1hbmltYXRpb24tZGVsYXkiLGJyb3dzZXJzOlsiRkY5Il0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJEZWZpbmVzIHdoZW4gdGhlIGFuaW1hdGlvbiB3aWxsIHN0YXJ0LiIscmVzdHJpY3Rpb25zOlsidGltZSJdfSx7bmFtZToiLW1vei1hbmltYXRpb24tZGlyZWN0aW9uIixicm93c2VyczpbIkZGOSJdLHZhbHVlczpbe25hbWU6ImFsdGVybmF0ZSIsZGVzY3JpcHRpb246IlRoZSBhbmltYXRpb24gY3ljbGUgaXRlcmF0aW9ucyB0aGF0IGFyZSBvZGQgY291bnRzIGFyZSBwbGF5ZWQgaW4gdGhlIG5vcm1hbCBkaXJlY3Rpb24sIGFuZCB0aGUgYW5pbWF0aW9uIGN5Y2xlIGl0ZXJhdGlvbnMgdGhhdCBhcmUgZXZlbiBjb3VudHMgYXJlIHBsYXllZCBpbiBhIHJldmVyc2UgZGlyZWN0aW9uLiJ9LHtuYW1lOiJhbHRlcm5hdGUtcmV2ZXJzZSIsZGVzY3JpcHRpb246IlRoZSBhbmltYXRpb24gY3ljbGUgaXRlcmF0aW9ucyB0aGF0IGFyZSBvZGQgY291bnRzIGFyZSBwbGF5ZWQgaW4gdGhlIHJldmVyc2UgZGlyZWN0aW9uLCBhbmQgdGhlIGFuaW1hdGlvbiBjeWNsZSBpdGVyYXRpb25zIHRoYXQgYXJlIGV2ZW4gY291bnRzIGFyZSBwbGF5ZWQgaW4gYSBub3JtYWwgZGlyZWN0aW9uLiJ9LHtuYW1lOiJub3JtYWwiLGRlc2NyaXB0aW9uOiJOb3JtYWwgcGxheWJhY2suIn0se25hbWU6InJldmVyc2UiLGRlc2NyaXB0aW9uOiJBbGwgaXRlcmF0aW9ucyBvZiB0aGUgYW5pbWF0aW9uIGFyZSBwbGF5ZWQgaW4gdGhlIHJldmVyc2UgZGlyZWN0aW9uIGZyb20gdGhlIHdheSB0aGV5IHdlcmUgc3BlY2lmaWVkLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkRlZmluZXMgd2hldGhlciBvciBub3QgdGhlIGFuaW1hdGlvbiBzaG91bGQgcGxheSBpbiByZXZlcnNlIG9uIGFsdGVybmF0ZSBjeWNsZXMuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItbW96LWFuaW1hdGlvbi1kdXJhdGlvbiIsYnJvd3NlcnM6WyJGRjkiXSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkRlZmluZXMgdGhlIGxlbmd0aCBvZiB0aW1lIHRoYXQgYW4gYW5pbWF0aW9uIHRha2VzIHRvIGNvbXBsZXRlIG9uZSBjeWNsZS4iLHJlc3RyaWN0aW9uczpbInRpbWUiXX0se25hbWU6Ii1tb3otYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudCIsYnJvd3NlcnM6WyJGRjkiXSx2YWx1ZXM6W3tuYW1lOiJpbmZpbml0ZSIsZGVzY3JpcHRpb246IkNhdXNlcyB0aGUgYW5pbWF0aW9uIHRvIHJlcGVhdCBmb3JldmVyLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkRlZmluZXMgdGhlIG51bWJlciBvZiB0aW1lcyBhbiBhbmltYXRpb24gY3ljbGUgaXMgcGxheWVkLiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyBvbmUsIG1lYW5pbmcgdGhlIGFuaW1hdGlvbiB3aWxsIHBsYXkgZnJvbSBiZWdpbm5pbmcgdG8gZW5kIG9uY2UuIixyZXN0cmljdGlvbnM6WyJudW1iZXIiLCJlbnVtIl19LHtuYW1lOiItbW96LWFuaW1hdGlvbi1uYW1lIixicm93c2VyczpbIkZGOSJdLHZhbHVlczpbe25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJObyBhbmltYXRpb24gaXMgcGVyZm9ybWVkIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRGVmaW5lcyBhIGxpc3Qgb2YgYW5pbWF0aW9ucyB0aGF0IGFwcGx5LiBFYWNoIG5hbWUgaXMgdXNlZCB0byBzZWxlY3QgdGhlIGtleWZyYW1lIGF0LXJ1bGUgdGhhdCBwcm92aWRlcyB0aGUgcHJvcGVydHkgdmFsdWVzIGZvciB0aGUgYW5pbWF0aW9uLiIscmVzdHJpY3Rpb25zOlsiaWRlbnRpZmllciIsImVudW0iXX0se25hbWU6Ii1tb3otYW5pbWF0aW9uLXBsYXktc3RhdGUiLGJyb3dzZXJzOlsiRkY5Il0sdmFsdWVzOlt7bmFtZToicGF1c2VkIixkZXNjcmlwdGlvbjoiQSBydW5uaW5nIGFuaW1hdGlvbiB3aWxsIGJlIHBhdXNlZC4ifSx7bmFtZToicnVubmluZyIsZGVzY3JpcHRpb246IlJlc3VtZSBwbGF5YmFjayBvZiBhIHBhdXNlZCBhbmltYXRpb24uIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRGVmaW5lcyB3aGV0aGVyIHRoZSBhbmltYXRpb24gaXMgcnVubmluZyBvciBwYXVzZWQuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItbW96LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb24iLGJyb3dzZXJzOlsiRkY5Il0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJEZXNjcmliZXMgaG93IHRoZSBhbmltYXRpb24gd2lsbCBwcm9ncmVzcyBvdmVyIG9uZSBjeWNsZSBvZiBpdHMgZHVyYXRpb24uIFNlZSB0aGUgJ3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uJy4iLHJlc3RyaWN0aW9uczpbInRpbWluZy1mdW5jdGlvbiJdfSx7bmFtZToiLW1vei1hcHBlYXJhbmNlIixicm93c2VyczpbIkZGMSJdLHZhbHVlczpbe25hbWU6ImJ1dHRvbiJ9LHtuYW1lOiJidXR0b24tYXJyb3ctZG93biJ9LHtuYW1lOiJidXR0b24tYXJyb3ctbmV4dCJ9LHtuYW1lOiJidXR0b24tYXJyb3ctcHJldmlvdXMifSx7bmFtZToiYnV0dG9uLWFycm93LXVwIn0se25hbWU6ImJ1dHRvbi1iZXZlbCJ9LHtuYW1lOiJjaGVja2JveCJ9LHtuYW1lOiJjaGVja2JveC1jb250YWluZXIifSx7bmFtZToiY2hlY2tib3gtbGFiZWwifSx7bmFtZToiZGlhbG9nIn0se25hbWU6Imdyb3VwYm94In0se25hbWU6Imxpc3Rib3gifSx7bmFtZToibWVudWFycm93In0se25hbWU6Im1lbnVpbWFnZSJ9LHtuYW1lOiJtZW51aXRlbSJ9LHtuYW1lOiJtZW51aXRlbXRleHQifSx7bmFtZToibWVudWxpc3QifSx7bmFtZToibWVudWxpc3QtYnV0dG9uIn0se25hbWU6Im1lbnVsaXN0LXRleHQifSx7bmFtZToibWVudWxpc3QtdGV4dGZpZWxkIn0se25hbWU6Im1lbnVwb3B1cCJ9LHtuYW1lOiJtZW51cmFkaW8ifSx7bmFtZToibWVudXNlcGFyYXRvciJ9LHtuYW1lOiItbW96LW1hYy11bmlmaWVkLXRvb2xiYXIifSx7bmFtZToiLW1vei13aW4tYm9yZGVybGVzcy1nbGFzcyJ9LHtuYW1lOiItbW96LXdpbi1icm93c2VydGFiYmFyLXRvb2xib3gifSx7bmFtZToiLW1vei13aW4tY29tbXVuaWNhdGlvbnMtdG9vbGJveCJ9LHtuYW1lOiItbW96LXdpbi1nbGFzcyJ9LHtuYW1lOiItbW96LXdpbi1tZWRpYS10b29sYm94In0se25hbWU6Im5vbmUifSx7bmFtZToicHJvZ3Jlc3NiYXIifSx7bmFtZToicHJvZ3Jlc3NjaHVuayJ9LHtuYW1lOiJyYWRpbyJ9LHtuYW1lOiJyYWRpby1jb250YWluZXIifSx7bmFtZToicmFkaW8tbGFiZWwifSx7bmFtZToicmFkaW9tZW51aXRlbSJ9LHtuYW1lOiJyZXNpemVyIn0se25hbWU6InJlc2l6ZXJwYW5lbCJ9LHtuYW1lOiJzY3JvbGxiYXJidXR0b24tZG93biJ9LHtuYW1lOiJzY3JvbGxiYXJidXR0b24tbGVmdCJ9LHtuYW1lOiJzY3JvbGxiYXJidXR0b24tcmlnaHQifSx7bmFtZToic2Nyb2xsYmFyYnV0dG9uLXVwIn0se25hbWU6InNjcm9sbGJhci1zbWFsbCJ9LHtuYW1lOiJzY3JvbGxiYXJ0cmFjay1ob3Jpem9udGFsIn0se25hbWU6InNjcm9sbGJhcnRyYWNrLXZlcnRpY2FsIn0se25hbWU6InNlcGFyYXRvciJ9LHtuYW1lOiJzcGlubmVyIn0se25hbWU6InNwaW5uZXItZG93bmJ1dHRvbiJ9LHtuYW1lOiJzcGlubmVyLXRleHRmaWVsZCJ9LHtuYW1lOiJzcGlubmVyLXVwYnV0dG9uIn0se25hbWU6InN0YXR1c2JhciJ9LHtuYW1lOiJzdGF0dXNiYXJwYW5lbCJ9LHtuYW1lOiJ0YWIifSx7bmFtZToidGFicGFuZWxzIn0se25hbWU6InRhYi1zY3JvbGwtYXJyb3ctYmFjayJ9LHtuYW1lOiJ0YWItc2Nyb2xsLWFycm93LWZvcndhcmQifSx7bmFtZToidGV4dGZpZWxkIn0se25hbWU6InRleHRmaWVsZC1tdWx0aWxpbmUifSx7bmFtZToidG9vbGJhciJ9LHtuYW1lOiJ0b29sYm94In0se25hbWU6InRvb2x0aXAifSx7bmFtZToidHJlZWhlYWRlcmNlbGwifSx7bmFtZToidHJlZWhlYWRlcnNvcnRhcnJvdyJ9LHtuYW1lOiJ0cmVlaXRlbSJ9LHtuYW1lOiJ0cmVldHdpc3R5b3BlbiJ9LHtuYW1lOiJ0cmVldmlldyJ9LHtuYW1lOiJ0cmVld2lzdHkifSx7bmFtZToid2luZG93In1dLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoibm9uZSB8IGJ1dHRvbiB8IGJ1dHRvbi1hcnJvdy1kb3duIHwgYnV0dG9uLWFycm93LW5leHQgfCBidXR0b24tYXJyb3ctcHJldmlvdXMgfCBidXR0b24tYXJyb3ctdXAgfCBidXR0b24tYmV2ZWwgfCBidXR0b24tZm9jdXMgfCBjYXJldCB8IGNoZWNrYm94IHwgY2hlY2tib3gtY29udGFpbmVyIHwgY2hlY2tib3gtbGFiZWwgfCBjaGVja21lbnVpdGVtIHwgZHVhbGJ1dHRvbiB8IGdyb3VwYm94IHwgbGlzdGJveCB8IGxpc3RpdGVtIHwgbWVudWFycm93IHwgbWVudWJhciB8IG1lbnVjaGVja2JveCB8IG1lbnVpbWFnZSB8IG1lbnVpdGVtIHwgbWVudWl0ZW10ZXh0IHwgbWVudWxpc3QgfCBtZW51bGlzdC1idXR0b24gfCBtZW51bGlzdC10ZXh0IHwgbWVudWxpc3QtdGV4dGZpZWxkIHwgbWVudXBvcHVwIHwgbWVudXJhZGlvIHwgbWVudXNlcGFyYXRvciB8IG1ldGVyYmFyIHwgbWV0ZXJjaHVuayB8IHByb2dyZXNzYmFyIHwgcHJvZ3Jlc3NiYXItdmVydGljYWwgfCBwcm9ncmVzc2NodW5rIHwgcHJvZ3Jlc3NjaHVuay12ZXJ0aWNhbCB8IHJhZGlvIHwgcmFkaW8tY29udGFpbmVyIHwgcmFkaW8tbGFiZWwgfCByYWRpb21lbnVpdGVtIHwgcmFuZ2UgfCByYW5nZS10aHVtYiB8IHJlc2l6ZXIgfCByZXNpemVycGFuZWwgfCBzY2FsZS1ob3Jpem9udGFsIHwgc2NhbGV0aHVtYmVuZCB8IHNjYWxldGh1bWItaG9yaXpvbnRhbCB8IHNjYWxldGh1bWJzdGFydCB8IHNjYWxldGh1bWJ0aWNrIHwgc2NhbGV0aHVtYi12ZXJ0aWNhbCB8IHNjYWxlLXZlcnRpY2FsIHwgc2Nyb2xsYmFyYnV0dG9uLWRvd24gfCBzY3JvbGxiYXJidXR0b24tbGVmdCB8IHNjcm9sbGJhcmJ1dHRvbi1yaWdodCB8IHNjcm9sbGJhcmJ1dHRvbi11cCB8IHNjcm9sbGJhcnRodW1iLWhvcml6b250YWwgfCBzY3JvbGxiYXJ0aHVtYi12ZXJ0aWNhbCB8IHNjcm9sbGJhcnRyYWNrLWhvcml6b250YWwgfCBzY3JvbGxiYXJ0cmFjay12ZXJ0aWNhbCB8IHNlYXJjaGZpZWxkIHwgc2VwYXJhdG9yIHwgc2hlZXQgfCBzcGlubmVyIHwgc3Bpbm5lci1kb3duYnV0dG9uIHwgc3Bpbm5lci10ZXh0ZmllbGQgfCBzcGlubmVyLXVwYnV0dG9uIHwgc3BsaXR0ZXIgfCBzdGF0dXNiYXIgfCBzdGF0dXNiYXJwYW5lbCB8IHRhYiB8IHRhYnBhbmVsIHwgdGFicGFuZWxzIHwgdGFiLXNjcm9sbC1hcnJvdy1iYWNrIHwgdGFiLXNjcm9sbC1hcnJvdy1mb3J3YXJkIHwgdGV4dGZpZWxkIHwgdGV4dGZpZWxkLW11bHRpbGluZSB8IHRvb2xiYXIgfCB0b29sYmFyYnV0dG9uIHwgdG9vbGJhcmJ1dHRvbi1kcm9wZG93biB8IHRvb2xiYXJncmlwcGVyIHwgdG9vbGJveCB8IHRvb2x0aXAgfCB0cmVlaGVhZGVyIHwgdHJlZWhlYWRlcmNlbGwgfCB0cmVlaGVhZGVyc29ydGFycm93IHwgdHJlZWl0ZW0gfCB0cmVlbGluZSB8IHRyZWV0d2lzdHkgfCB0cmVldHdpc3R5b3BlbiB8IHRyZWV2aWV3IHwgLW1vei1tYWMtdW5pZmllZC10b29sYmFyIHwgLW1vei13aW4tYm9yZGVybGVzcy1nbGFzcyB8IC1tb3otd2luLWJyb3dzZXJ0YWJiYXItdG9vbGJveCB8IC1tb3otd2luLWNvbW11bmljYXRpb25zdGV4dCB8IC1tb3otd2luLWNvbW11bmljYXRpb25zLXRvb2xib3ggfCAtbW96LXdpbi1leGNsdWRlLWdsYXNzIHwgLW1vei13aW4tZ2xhc3MgfCAtbW96LXdpbi1tZWRpYXRleHQgfCAtbW96LXdpbi1tZWRpYS10b29sYm94IHwgLW1vei13aW5kb3ctYnV0dG9uLWJveCB8IC1tb3otd2luZG93LWJ1dHRvbi1ib3gtbWF4aW1pemVkIHwgLW1vei13aW5kb3ctYnV0dG9uLWNsb3NlIHwgLW1vei13aW5kb3ctYnV0dG9uLW1heGltaXplIHwgLW1vei13aW5kb3ctYnV0dG9uLW1pbmltaXplIHwgLW1vei13aW5kb3ctYnV0dG9uLXJlc3RvcmUgfCAtbW96LXdpbmRvdy1mcmFtZS1ib3R0b20gfCAtbW96LXdpbmRvdy1mcmFtZS1sZWZ0IHwgLW1vei13aW5kb3ctZnJhbWUtcmlnaHQgfCAtbW96LXdpbmRvdy10aXRsZWJhciB8IC1tb3otd2luZG93LXRpdGxlYmFyLW1heGltaXplZCIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246IlVzZWQgaW4gR2Vja28gKEZpcmVmb3gpIHRvIGRpc3BsYXkgYW4gZWxlbWVudCB1c2luZyBhIHBsYXRmb3JtLW5hdGl2ZSBzdHlsaW5nIGJhc2VkIG9uIHRoZSBvcGVyYXRpbmcgc3lzdGVtJ3MgdGhlbWUuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItbW96LWJhY2tmYWNlLXZpc2liaWxpdHkiLGJyb3dzZXJzOlsiRkYxMCJdLHZhbHVlczpbe25hbWU6ImhpZGRlbiJ9LHtuYW1lOiJ2aXNpYmxlIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRGV0ZXJtaW5lcyB3aGV0aGVyIG9yIG5vdCB0aGUgJ2JhY2snIHNpZGUgb2YgYSB0cmFuc2Zvcm1lZCBlbGVtZW50IGlzIHZpc2libGUgd2hlbiBmYWNpbmcgdGhlIHZpZXdlci4gV2l0aCBhbiBpZGVudGl0eSB0cmFuc2Zvcm0sIHRoZSBmcm9udCBzaWRlIG9mIGFuIGVsZW1lbnQgZmFjZXMgdGhlIHZpZXdlci4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tb3otYmFja2dyb3VuZC1jbGlwIixicm93c2VyczpbIkZGMS0zLjYiXSx2YWx1ZXM6W3tuYW1lOiJwYWRkaW5nIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRGV0ZXJtaW5lcyB0aGUgYmFja2dyb3VuZCBwYWludGluZyBhcmVhLiIscmVzdHJpY3Rpb25zOlsiYm94IiwiZW51bSJdfSx7bmFtZToiLW1vei1iYWNrZ3JvdW5kLWlubGluZS1wb2xpY3kiLGJyb3dzZXJzOlsiRkYxIl0sdmFsdWVzOlt7bmFtZToiYm91bmRpbmctYm94In0se25hbWU6ImNvbnRpbnVvdXMifSx7bmFtZToiZWFjaC1ib3gifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJJbiBHZWNrby1iYXNlZCBhcHBsaWNhdGlvbnMgbGlrZSBGaXJlZm94LCB0aGUgLW1vei1iYWNrZ3JvdW5kLWlubGluZS1wb2xpY3kgQ1NTIHByb3BlcnR5IHNwZWNpZmllcyBob3cgdGhlIGJhY2tncm91bmQgaW1hZ2Ugb2YgYW4gaW5saW5lIGVsZW1lbnQgaXMgZGV0ZXJtaW5lZCB3aGVuIHRoZSBjb250ZW50IG9mIHRoZSBpbmxpbmUgZWxlbWVudCB3cmFwcyBvbnRvIG11bHRpcGxlIGxpbmVzLiBUaGUgY2hvaWNlIG9mIHBvc2l0aW9uIGhhcyBzaWduaWZpY2FudCBlZmZlY3RzIG9uIHJlcGV0aXRpb24uIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItbW96LWJhY2tncm91bmQtb3JpZ2luIixicm93c2VyczpbIkZGMSJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRm9yIGVsZW1lbnRzIHJlbmRlcmVkIGFzIGEgc2luZ2xlIGJveCwgc3BlY2lmaWVzIHRoZSBiYWNrZ3JvdW5kIHBvc2l0aW9uaW5nIGFyZWEuIEZvciBlbGVtZW50cyByZW5kZXJlZCBhcyBtdWx0aXBsZSBib3hlcyAoZS5nLiwgaW5saW5lIGJveGVzIG9uIHNldmVyYWwgbGluZXMsIGJveGVzIG9uIHNldmVyYWwgcGFnZXMpIHNwZWNpZmllcyB3aGljaCBib3hlcyAnYm94LWRlY29yYXRpb24tYnJlYWsnIG9wZXJhdGVzIG9uIHRvIGRldGVybWluZSB0aGUgYmFja2dyb3VuZCBwb3NpdGlvbmluZyBhcmVhKHMpLiIscmVzdHJpY3Rpb25zOlsiYm94Il19LHtuYW1lOiItbW96LWJvcmRlci1ib3R0b20tY29sb3JzIixicm93c2VyczpbIkZGMSJdLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiPGNvbG9yPisgfCBub25lIixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiU2V0cyBhIGxpc3Qgb2YgY29sb3JzIGZvciB0aGUgYm90dG9tIGJvcmRlci4iLHJlc3RyaWN0aW9uczpbImNvbG9yIl19LHtuYW1lOiItbW96LWJvcmRlci1pbWFnZSIsYnJvd3NlcnM6WyJGRjMuNiJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJJZiAnYXV0bycgaXMgc3BlY2lmaWVkIHRoZW4gdGhlIGJvcmRlciBpbWFnZSB3aWR0aCBpcyB0aGUgaW50cmluc2ljIHdpZHRoIG9yIGhlaWdodCAod2hpY2hldmVyIGlzIGFwcGxpY2FibGUpIG9mIHRoZSBjb3JyZXNwb25kaW5nIGltYWdlIHNsaWNlLiBJZiB0aGUgaW1hZ2UgZG9lcyBub3QgaGF2ZSB0aGUgcmVxdWlyZWQgaW50cmluc2ljIGRpbWVuc2lvbiB0aGVuIHRoZSBjb3JyZXNwb25kaW5nIGJvcmRlci13aWR0aCBpcyB1c2VkIGluc3RlYWQuIn0se25hbWU6ImZpbGwiLGRlc2NyaXB0aW9uOiJDYXVzZXMgdGhlIG1pZGRsZSBwYXJ0IG9mIHRoZSBib3JkZXItaW1hZ2UgdG8gYmUgcHJlc2VydmVkLiJ9LHtuYW1lOiJub25lIn0se25hbWU6InJlcGVhdCIsZGVzY3JpcHRpb246IlRoZSBpbWFnZSBpcyB0aWxlZCAocmVwZWF0ZWQpIHRvIGZpbGwgdGhlIGFyZWEuIn0se25hbWU6InJvdW5kIixkZXNjcmlwdGlvbjoiVGhlIGltYWdlIGlzIHRpbGVkIChyZXBlYXRlZCkgdG8gZmlsbCB0aGUgYXJlYS4gSWYgaXQgZG9lcyBub3QgZmlsbCB0aGUgYXJlYSB3aXRoIGEgd2hvbGUgbnVtYmVyIG9mIHRpbGVzLCB0aGUgaW1hZ2UgaXMgcmVzY2FsZWQgc28gdGhhdCBpdCBkb2VzLiJ9LHtuYW1lOiJzcGFjZSIsZGVzY3JpcHRpb246IlRoZSBpbWFnZSBpcyB0aWxlZCAocmVwZWF0ZWQpIHRvIGZpbGwgdGhlIGFyZWEuIElmIGl0IGRvZXMgbm90IGZpbGwgdGhlIGFyZWEgd2l0aCBhIHdob2xlIG51bWJlciBvZiB0aWxlcywgdGhlIGV4dHJhIHNwYWNlIGlzIGRpc3RyaWJ1dGVkIGFyb3VuZCB0aGUgdGlsZXMuIn0se25hbWU6InN0cmV0Y2giLGRlc2NyaXB0aW9uOiJUaGUgaW1hZ2UgaXMgc3RyZXRjaGVkIHRvIGZpbGwgdGhlIGFyZWEuIn0se25hbWU6InVybCgpIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU2hvcnRoYW5kIHByb3BlcnR5IGZvciBzZXR0aW5nICdib3JkZXItaW1hZ2Utc291cmNlJywgJ2JvcmRlci1pbWFnZS1zbGljZScsICdib3JkZXItaW1hZ2Utd2lkdGgnLCAnYm9yZGVyLWltYWdlLW91dHNldCcgYW5kICdib3JkZXItaW1hZ2UtcmVwZWF0Jy4gT21pdHRlZCB2YWx1ZXMgYXJlIHNldCB0byB0aGVpciBpbml0aWFsIHZhbHVlcy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiLCJudW1iZXIiLCJ1cmwiLCJlbnVtIl19LHtuYW1lOiItbW96LWJvcmRlci1sZWZ0LWNvbG9ycyIsYnJvd3NlcnM6WyJGRjEiXSxzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6Ijxjb2xvcj4rIHwgbm9uZSIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246IlNldHMgYSBsaXN0IG9mIGNvbG9ycyBmb3IgdGhlIGJvdHRvbSBib3JkZXIuIixyZXN0cmljdGlvbnM6WyJjb2xvciJdfSx7bmFtZToiLW1vei1ib3JkZXItcmlnaHQtY29sb3JzIixicm93c2VyczpbIkZGMSJdLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiPGNvbG9yPisgfCBub25lIixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiU2V0cyBhIGxpc3Qgb2YgY29sb3JzIGZvciB0aGUgYm90dG9tIGJvcmRlci4iLHJlc3RyaWN0aW9uczpbImNvbG9yIl19LHtuYW1lOiItbW96LWJvcmRlci10b3AtY29sb3JzIixicm93c2VyczpbIkZGMSJdLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiPGNvbG9yPisgfCBub25lIixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiU2tlIEZpcmVmb3gsIC1tb3otYm9yZGVyLWJvdHRvbS1jb2xvcnMgc2V0cyBhIGxpc3Qgb2YgY29sb3JzIGZvciB0aGUgYm90dG9tIGJvcmRlci4iLHJlc3RyaWN0aW9uczpbImNvbG9yIl19LHtuYW1lOiItbW96LWJveC1hbGlnbiIsYnJvd3NlcnM6WyJGRjEiXSx2YWx1ZXM6W3tuYW1lOiJiYXNlbGluZSIsZGVzY3JpcHRpb246IklmIHRoaXMgYm94IG9yaWVudGF0aW9uIGlzIGlubGluZS1heGlzIG9yIGhvcml6b250YWwsIGFsbCBjaGlsZHJlbiBhcmUgcGxhY2VkIHdpdGggdGhlaXIgYmFzZWxpbmVzIGFsaWduZWQsIGFuZCBleHRyYSBzcGFjZSBwbGFjZWQgYmVmb3JlIG9yIGFmdGVyIGFzIG5lY2Vzc2FyeS4gRm9yIGJsb2NrIGZsb3dzLCB0aGUgYmFzZWxpbmUgb2YgdGhlIGZpcnN0IG5vbi1lbXB0eSBsaW5lIGJveCBsb2NhdGVkIHdpdGhpbiB0aGUgZWxlbWVudCBpcyB1c2VkLiBGb3IgdGFibGVzLCB0aGUgYmFzZWxpbmUgb2YgdGhlIGZpcnN0IGNlbGwgaXMgdXNlZC4ifSx7bmFtZToiY2VudGVyIixkZXNjcmlwdGlvbjoiQW55IGV4dHJhIHNwYWNlIGlzIGRpdmlkZWQgZXZlbmx5LCB3aXRoIGhhbGYgcGxhY2VkIGFib3ZlIHRoZSBjaGlsZCBhbmQgdGhlIG90aGVyIGhhbGYgcGxhY2VkIGFmdGVyIHRoZSBjaGlsZC4ifSx7bmFtZToiZW5kIixkZXNjcmlwdGlvbjoiRm9yIG5vcm1hbCBkaXJlY3Rpb24gYm94ZXMsIHRoZSBib3R0b20gZWRnZSBvZiBlYWNoIGNoaWxkIGlzIHBsYWNlZCBhbG9uZyB0aGUgYm90dG9tIG9mIHRoZSBib3guIEV4dHJhIHNwYWNlIGlzIHBsYWNlZCBhYm92ZSB0aGUgZWxlbWVudC4gRm9yIHJldmVyc2UgZGlyZWN0aW9uIGJveGVzLCB0aGUgdG9wIGVkZ2Ugb2YgZWFjaCBjaGlsZCBpcyBwbGFjZWQgYWxvbmcgdGhlIHRvcCBvZiB0aGUgYm94LiBFeHRyYSBzcGFjZSBpcyBwbGFjZWQgYmVsb3cgdGhlIGVsZW1lbnQuIn0se25hbWU6InN0YXJ0IixkZXNjcmlwdGlvbjoiRm9yIG5vcm1hbCBkaXJlY3Rpb24gYm94ZXMsIHRoZSB0b3AgZWRnZSBvZiBlYWNoIGNoaWxkIGlzIHBsYWNlZCBhbG9uZyB0aGUgdG9wIG9mIHRoZSBib3guIEV4dHJhIHNwYWNlIGlzIHBsYWNlZCBiZWxvdyB0aGUgZWxlbWVudC4gRm9yIHJldmVyc2UgZGlyZWN0aW9uIGJveGVzLCB0aGUgYm90dG9tIGVkZ2Ugb2YgZWFjaCBjaGlsZCBpcyBwbGFjZWQgYWxvbmcgdGhlIGJvdHRvbSBvZiB0aGUgYm94LiBFeHRyYSBzcGFjZSBpcyBwbGFjZWQgYWJvdmUgdGhlIGVsZW1lbnQuIn0se25hbWU6InN0cmV0Y2giLGRlc2NyaXB0aW9uOiJUaGUgaGVpZ2h0IG9mIGVhY2ggY2hpbGQgaXMgYWRqdXN0ZWQgdG8gdGhhdCBvZiB0aGUgY29udGFpbmluZyBibG9jay4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgaG93IGEgWFVMIGJveCBhbGlnbnMgaXRzIGNvbnRlbnRzIGFjcm9zcyAocGVycGVuZGljdWxhciB0bykgdGhlIGRpcmVjdGlvbiBvZiBpdHMgbGF5b3V0LiBUaGUgZWZmZWN0IG9mIHRoaXMgaXMgb25seSB2aXNpYmxlIGlmIHRoZXJlIGlzIGV4dHJhIHNwYWNlIGluIHRoZSBib3guIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItbW96LWJveC1kaXJlY3Rpb24iLGJyb3dzZXJzOlsiRkYxIl0sdmFsdWVzOlt7bmFtZToibm9ybWFsIixkZXNjcmlwdGlvbjoiQSBib3ggd2l0aCBhIGNvbXB1dGVkIHZhbHVlIG9mIGhvcml6b250YWwgZm9yIGJveC1vcmllbnQgZGlzcGxheXMgaXRzIGNoaWxkcmVuIGZyb20gbGVmdCB0byByaWdodC4gQSBib3ggd2l0aCBhIGNvbXB1dGVkIHZhbHVlIG9mIHZlcnRpY2FsIGRpc3BsYXlzIGl0cyBjaGlsZHJlbiBmcm9tIHRvcCB0byBib3R0b20uIn0se25hbWU6InJldmVyc2UiLGRlc2NyaXB0aW9uOiJBIGJveCB3aXRoIGEgY29tcHV0ZWQgdmFsdWUgb2YgaG9yaXpvbnRhbCBmb3IgYm94LW9yaWVudCBkaXNwbGF5cyBpdHMgY2hpbGRyZW4gZnJvbSByaWdodCB0byBsZWZ0LiBBIGJveCB3aXRoIGEgY29tcHV0ZWQgdmFsdWUgb2YgdmVydGljYWwgZGlzcGxheXMgaXRzIGNoaWxkcmVuIGZyb20gYm90dG9tIHRvIHRvcC4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgd2hldGhlciBhIGJveCBsYXlzIG91dCBpdHMgY29udGVudHMgbm9ybWFsbHkgKGZyb20gdGhlIHRvcCBvciBsZWZ0IGVkZ2UpLCBvciBpbiByZXZlcnNlIChmcm9tIHRoZSBib3R0b20gb3IgcmlnaHQgZWRnZSkuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItbW96LWJveC1mbGV4Iixicm93c2VyczpbIkZGMSJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGhvdyBhIGJveCBncm93cyB0byBmaWxsIHRoZSBib3ggdGhhdCBjb250YWlucyBpdCwgaW4gdGhlIGRpcmVjdGlvbiBvZiB0aGUgY29udGFpbmluZyBib3gncyBsYXlvdXQuIixyZXN0cmljdGlvbnM6WyJudW1iZXIiXX0se25hbWU6Ii1tb3otYm94LWZsZXhncm91cCIsYnJvd3NlcnM6WyJGRjEiXSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkZsZXhpYmxlIGVsZW1lbnRzIGNhbiBiZSBhc3NpZ25lZCB0byBmbGV4IGdyb3VwcyB1c2luZyB0aGUgJ2JveC1mbGV4LWdyb3VwJyBwcm9wZXJ0eS4iLHJlc3RyaWN0aW9uczpbImludGVnZXIiXX0se25hbWU6Ii1tb3otYm94LW9yZGluYWwtZ3JvdXAiLGJyb3dzZXJzOlsiRkYxIl0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhlIG9yZGluYWwgZ3JvdXAgdGhlIGVsZW1lbnQgYmVsb25ncyB0by4gRWxlbWVudHMgd2l0aCBhIGxvd2VyIG9yZGluYWwgZ3JvdXAgYXJlIGRpc3BsYXllZCBiZWZvcmUgdGhvc2Ugd2l0aCBhIGhpZ2hlciBvcmRpbmFsIGdyb3VwLiIscmVzdHJpY3Rpb25zOlsiaW50ZWdlciJdfSx7bmFtZToiLW1vei1ib3gtb3JpZW50Iixicm93c2VyczpbIkZGMSJdLHZhbHVlczpbe25hbWU6ImJsb2NrLWF4aXMiLGRlc2NyaXB0aW9uOiJFbGVtZW50cyBhcmUgb3JpZW50ZWQgYWxvbmcgdGhlIGJveCdzIGF4aXMuIn0se25hbWU6Imhvcml6b250YWwiLGRlc2NyaXB0aW9uOiJUaGUgYm94IGRpc3BsYXlzIGl0cyBjaGlsZHJlbiBmcm9tIGxlZnQgdG8gcmlnaHQgaW4gYSBob3Jpem9udGFsIGxpbmUuIn0se25hbWU6ImlubGluZS1heGlzIixkZXNjcmlwdGlvbjoiRWxlbWVudHMgYXJlIG9yaWVudGVkIHZlcnRpY2FsbHkuIn0se25hbWU6InZlcnRpY2FsIixkZXNjcmlwdGlvbjoiVGhlIGJveCBkaXNwbGF5cyBpdHMgY2hpbGRyZW4gZnJvbSBzdGFja2VkIGZyb20gdG9wIHRvIGJvdHRvbSB2ZXJ0aWNhbGx5LiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkluIE1vemlsbGEgYXBwbGljYXRpb25zLCAtbW96LWJveC1vcmllbnQgc3BlY2lmaWVzIHdoZXRoZXIgYSBib3ggbGF5cyBvdXQgaXRzIGNvbnRlbnRzIGhvcml6b250YWxseSBvciB2ZXJ0aWNhbGx5LiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLW1vei1ib3gtcGFjayIsYnJvd3NlcnM6WyJGRjEiXSx2YWx1ZXM6W3tuYW1lOiJjZW50ZXIiLGRlc2NyaXB0aW9uOiJUaGUgZXh0cmEgc3BhY2UgaXMgZGl2aWRlZCBldmVubHksIHdpdGggaGFsZiBwbGFjZWQgYmVmb3JlIHRoZSBmaXJzdCBjaGlsZCBhbmQgdGhlIG90aGVyIGhhbGYgcGxhY2VkIGFmdGVyIHRoZSBsYXN0IGNoaWxkLiJ9LHtuYW1lOiJlbmQiLGRlc2NyaXB0aW9uOiJGb3Igbm9ybWFsIGRpcmVjdGlvbiBib3hlcywgdGhlIHJpZ2h0IGVkZ2Ugb2YgdGhlIGxhc3QgY2hpbGQgaXMgcGxhY2VkIGF0IHRoZSByaWdodCBzaWRlLCB3aXRoIGFsbCBleHRyYSBzcGFjZSBwbGFjZWQgYmVmb3JlIHRoZSBmaXJzdCBjaGlsZC4gRm9yIHJldmVyc2UgZGlyZWN0aW9uIGJveGVzLCB0aGUgbGVmdCBlZGdlIG9mIHRoZSBmaXJzdCBjaGlsZCBpcyBwbGFjZWQgYXQgdGhlIGxlZnQgc2lkZSwgd2l0aCBhbGwgZXh0cmEgc3BhY2UgcGxhY2VkIGFmdGVyIHRoZSBsYXN0IGNoaWxkLiJ9LHtuYW1lOiJqdXN0aWZ5IixkZXNjcmlwdGlvbjoiVGhlIHNwYWNlIGlzIGRpdmlkZWQgZXZlbmx5IGluLWJldHdlZW4gZWFjaCBjaGlsZCwgd2l0aCBub25lIG9mIHRoZSBleHRyYSBzcGFjZSBwbGFjZWQgYmVmb3JlIHRoZSBmaXJzdCBjaGlsZCBvciBhZnRlciB0aGUgbGFzdCBjaGlsZC4gSWYgdGhlcmUgaXMgb25seSBvbmUgY2hpbGQsIHRyZWF0IHRoZSBwYWNrIHZhbHVlIGFzIGlmIGl0IHdlcmUgc3RhcnQuIn0se25hbWU6InN0YXJ0IixkZXNjcmlwdGlvbjoiRm9yIG5vcm1hbCBkaXJlY3Rpb24gYm94ZXMsIHRoZSBsZWZ0IGVkZ2Ugb2YgdGhlIGZpcnN0IGNoaWxkIGlzIHBsYWNlZCBhdCB0aGUgbGVmdCBzaWRlLCB3aXRoIGFsbCBleHRyYSBzcGFjZSBwbGFjZWQgYWZ0ZXIgdGhlIGxhc3QgY2hpbGQuIEZvciByZXZlcnNlIGRpcmVjdGlvbiBib3hlcywgdGhlIHJpZ2h0IGVkZ2Ugb2YgdGhlIGxhc3QgY2hpbGQgaXMgcGxhY2VkIGF0IHRoZSByaWdodCBzaWRlLCB3aXRoIGFsbCBleHRyYSBzcGFjZSBwbGFjZWQgYmVmb3JlIHRoZSBmaXJzdCBjaGlsZC4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgaG93IGEgYm94IHBhY2tzIGl0cyBjb250ZW50cyBpbiB0aGUgZGlyZWN0aW9uIG9mIGl0cyBsYXlvdXQuIFRoZSBlZmZlY3Qgb2YgdGhpcyBpcyBvbmx5IHZpc2libGUgaWYgdGhlcmUgaXMgZXh0cmEgc3BhY2UgaW4gdGhlIGJveC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tb3otYm94LXNpemluZyIsYnJvd3NlcnM6WyJGRjEiXSx2YWx1ZXM6W3tuYW1lOiJib3JkZXItYm94IixkZXNjcmlwdGlvbjoiVGhlIHNwZWNpZmllZCB3aWR0aCBhbmQgaGVpZ2h0IChhbmQgcmVzcGVjdGl2ZSBtaW4vbWF4IHByb3BlcnRpZXMpIG9uIHRoaXMgZWxlbWVudCBkZXRlcm1pbmUgdGhlIGJvcmRlciBib3ggb2YgdGhlIGVsZW1lbnQuIn0se25hbWU6ImNvbnRlbnQtYm94IixkZXNjcmlwdGlvbjoiQmVoYXZpb3Igb2Ygd2lkdGggYW5kIGhlaWdodCBhcyBzcGVjaWZpZWQgYnkgQ1NTMi4xLiBUaGUgc3BlY2lmaWVkIHdpZHRoIGFuZCBoZWlnaHQgKGFuZCByZXNwZWN0aXZlIG1pbi9tYXggcHJvcGVydGllcykgYXBwbHkgdG8gdGhlIHdpZHRoIGFuZCBoZWlnaHQgcmVzcGVjdGl2ZWx5IG9mIHRoZSBjb250ZW50IGJveCBvZiB0aGUgZWxlbWVudC4ifSx7bmFtZToicGFkZGluZy1ib3giLGRlc2NyaXB0aW9uOiJUaGUgc3BlY2lmaWVkIHdpZHRoIGFuZCBoZWlnaHQgKGFuZCByZXNwZWN0aXZlIG1pbi9tYXggcHJvcGVydGllcykgb24gdGhpcyBlbGVtZW50IGRldGVybWluZSB0aGUgcGFkZGluZyBib3ggb2YgdGhlIGVsZW1lbnQuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiQm94IE1vZGVsIGFkZGl0aW9uIGluIENTUzMuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItbW96LWNvbHVtbi1jb3VudCIsYnJvd3NlcnM6WyJGRjMuNSJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJEZXRlcm1pbmVzIHRoZSBudW1iZXIgb2YgY29sdW1ucyBieSB0aGUgJ2NvbHVtbi13aWR0aCcgcHJvcGVydHkgYW5kIHRoZSBlbGVtZW50IHdpZHRoLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkRlc2NyaWJlcyB0aGUgb3B0aW1hbCBudW1iZXIgb2YgY29sdW1ucyBpbnRvIHdoaWNoIHRoZSBjb250ZW50IG9mIHRoZSBlbGVtZW50IHdpbGwgYmUgZmxvd2VkLiIscmVzdHJpY3Rpb25zOlsiaW50ZWdlciJdfSx7bmFtZToiLW1vei1jb2x1bW4tZ2FwIixicm93c2VyczpbIkZGMy41Il0sdmFsdWVzOlt7bmFtZToibm9ybWFsIixkZXNjcmlwdGlvbjoiVXNlciBhZ2VudCBzcGVjaWZpYyBhbmQgdHlwaWNhbGx5IGVxdWl2YWxlbnQgdG8gMWVtLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlNldHMgdGhlIGdhcCBiZXR3ZWVuIGNvbHVtbnMuIElmIHRoZXJlIGlzIGEgY29sdW1uIHJ1bGUgYmV0d2VlbiBjb2x1bW5zLCBpdCB3aWxsIGFwcGVhciBpbiB0aGUgbWlkZGxlIG9mIHRoZSBnYXAuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiXX0se25hbWU6Ii1tb3otY29sdW1uLXJ1bGUiLGJyb3dzZXJzOlsiRkYzLjUiXSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlNob3J0aGFuZCBmb3Igc2V0dGluZyAnY29sdW1uLXJ1bGUtd2lkdGgnLCAnY29sdW1uLXJ1bGUtc3R5bGUnLCBhbmQgJ2NvbHVtbi1ydWxlLWNvbG9yJyBhdCB0aGUgc2FtZSBwbGFjZSBpbiB0aGUgc3R5bGUgc2hlZXQuIE9taXR0ZWQgdmFsdWVzIGFyZSBzZXQgdG8gdGhlaXIgaW5pdGlhbCB2YWx1ZXMuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJsaW5lLXdpZHRoIiwibGluZS1zdHlsZSIsImNvbG9yIl19LHtuYW1lOiItbW96LWNvbHVtbi1ydWxlLWNvbG9yIixicm93c2VyczpbIkZGMy41Il0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJTZXRzIHRoZSBjb2xvciBvZiB0aGUgY29sdW1uIHJ1bGUiLHJlc3RyaWN0aW9uczpbImNvbG9yIl19LHtuYW1lOiItbW96LWNvbHVtbi1ydWxlLXN0eWxlIixicm93c2VyczpbIkZGMy41Il0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJTZXRzIHRoZSBzdHlsZSBvZiB0aGUgcnVsZSBiZXR3ZWVuIGNvbHVtbnMgb2YgYW4gZWxlbWVudC4iLHJlc3RyaWN0aW9uczpbImxpbmUtc3R5bGUiXX0se25hbWU6Ii1tb3otY29sdW1uLXJ1bGUtd2lkdGgiLGJyb3dzZXJzOlsiRkYzLjUiXSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlNldHMgdGhlIHdpZHRoIG9mIHRoZSBydWxlIGJldHdlZW4gY29sdW1ucy4gTmVnYXRpdmUgdmFsdWVzIGFyZSBub3QgYWxsb3dlZC4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsImxpbmUtd2lkdGgiXX0se25hbWU6Ii1tb3otY29sdW1ucyIsYnJvd3NlcnM6WyJGRjkiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiVGhlIHdpZHRoIGRlcGVuZHMgb24gdGhlIHZhbHVlcyBvZiBvdGhlciBwcm9wZXJ0aWVzLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkEgc2hvcnRoYW5kIHByb3BlcnR5IHdoaWNoIHNldHMgYm90aCAnY29sdW1uLXdpZHRoJyBhbmQgJ2NvbHVtbi1jb3VudCcuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJpbnRlZ2VyIl19LHtuYW1lOiItbW96LWNvbHVtbi13aWR0aCIsYnJvd3NlcnM6WyJGRjMuNSJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJUaGUgd2lkdGggZGVwZW5kcyBvbiB0aGUgdmFsdWVzIG9mIG90aGVyIHByb3BlcnRpZXMuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiVGhpcyBwcm9wZXJ0eSBkZXNjcmliZXMgdGhlIHdpZHRoIG9mIGNvbHVtbnMgaW4gbXVsdGljb2wgZWxlbWVudHMuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiXX0se25hbWU6Ii1tb3otZm9udC1mZWF0dXJlLXNldHRpbmdzIixicm93c2VyczpbIkZGNCJdLHZhbHVlczpbe25hbWU6JyJjMmNzIid9LHtuYW1lOiciZGxpZyInfSx7bmFtZTonImtlcm4iJ30se25hbWU6JyJsaWdhIid9LHtuYW1lOicibG51bSInfSx7bmFtZTonIm9udW0iJ30se25hbWU6JyJzbWNwIid9LHtuYW1lOicic3dzaCInfSx7bmFtZTonInRudW0iJ30se25hbWU6Im5vcm1hbCIsZGVzY3JpcHRpb246Ik5vIGNoYW5nZSBpbiBnbHlwaCBzdWJzdGl0dXRpb24gb3IgcG9zaXRpb25pbmcgb2NjdXJzLiJ9LHtuYW1lOiJvZmYiLGJyb3dzZXJzOlsiRkY0Il19LHtuYW1lOiJvbiIsYnJvd3NlcnM6WyJGRjQiXX1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiUHJvdmlkZXMgbG93LWxldmVsIGNvbnRyb2wgb3ZlciBPcGVuVHlwZSBmb250IGZlYXR1cmVzLiBJdCBpcyBpbnRlbmRlZCBhcyBhIHdheSBvZiBwcm92aWRpbmcgYWNjZXNzIHRvIGZvbnQgZmVhdHVyZXMgdGhhdCBhcmUgbm90IHdpZGVseSB1c2VkIGJ1dCBhcmUgbmVlZGVkIGZvciBhIHBhcnRpY3VsYXIgdXNlIGNhc2UuIixyZXN0cmljdGlvbnM6WyJzdHJpbmciLCJpbnRlZ2VyIl19LHtuYW1lOiItbW96LWh5cGhlbnMiLGJyb3dzZXJzOlsiRkY5Il0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IkNvbmRpdGlvbmFsIGh5cGhlbmF0aW9uIGNoYXJhY3RlcnMgaW5zaWRlIGEgd29yZCwgaWYgcHJlc2VudCwgdGFrZSBwcmlvcml0eSBvdmVyIGF1dG9tYXRpYyByZXNvdXJjZXMgd2hlbiBkZXRlcm1pbmluZyBoeXBoZW5hdGlvbiBwb2ludHMgd2l0aGluIHRoZSB3b3JkLiJ9LHtuYW1lOiJtYW51YWwiLGRlc2NyaXB0aW9uOiJXb3JkcyBhcmUgb25seSBicm9rZW4gYXQgbGluZSBicmVha3Mgd2hlcmUgdGhlcmUgYXJlIGNoYXJhY3RlcnMgaW5zaWRlIHRoZSB3b3JkIHRoYXQgc3VnZ2VzdCBsaW5lIGJyZWFrIG9wcG9ydHVuaXRpZXMifSx7bmFtZToibm9uZSIsZGVzY3JpcHRpb246IldvcmRzIGFyZSBub3QgYnJva2VuIGF0IGxpbmUgYnJlYWtzLCBldmVuIGlmIGNoYXJhY3RlcnMgaW5zaWRlIHRoZSB3b3JkIHN1Z2dlc3QgbGluZSBicmVhayBwb2ludHMuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiQ29udHJvbHMgd2hldGhlciBoeXBoZW5hdGlvbiBpcyBhbGxvd2VkIHRvIGNyZWF0ZSBtb3JlIGJyZWFrIG9wcG9ydHVuaXRpZXMgd2l0aGluIGEgbGluZSBvZiB0ZXh0LiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLW1vei1wZXJzcGVjdGl2ZSIsYnJvd3NlcnM6WyJGRjEwIl0sdmFsdWVzOlt7bmFtZToibm9uZSIsZGVzY3JpcHRpb246Ik5vIHBlcnNwZWN0aXZlIHRyYW5zZm9ybSBpcyBhcHBsaWVkLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkFwcGxpZXMgdGhlIHNhbWUgdHJhbnNmb3JtIGFzIHRoZSBwZXJzcGVjdGl2ZSg8bnVtYmVyPikgdHJhbnNmb3JtIGZ1bmN0aW9uLCBleGNlcHQgdGhhdCBpdCBhcHBsaWVzIG9ubHkgdG8gdGhlIHBvc2l0aW9uZWQgb3IgdHJhbnNmb3JtZWQgY2hpbGRyZW4gb2YgdGhlIGVsZW1lbnQsIG5vdCB0byB0aGUgdHJhbnNmb3JtIG9uIHRoZSBlbGVtZW50IGl0c2VsZi4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCJdfSx7bmFtZToiLW1vei1wZXJzcGVjdGl2ZS1vcmlnaW4iLGJyb3dzZXJzOlsiRkYxMCJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRXN0YWJsaXNoZXMgdGhlIG9yaWdpbiBmb3IgdGhlIHBlcnNwZWN0aXZlIHByb3BlcnR5LiBJdCBlZmZlY3RpdmVseSBzZXRzIHRoZSBYIGFuZCBZIHBvc2l0aW9uIGF0IHdoaWNoIHRoZSB2aWV3ZXIgYXBwZWFycyB0byBiZSBsb29raW5nIGF0IHRoZSBjaGlsZHJlbiBvZiB0aGUgZWxlbWVudC4iLHJlc3RyaWN0aW9uczpbInBvc2l0aW9uIiwicGVyY2VudGFnZSIsImxlbmd0aCJdfSx7bmFtZToiLW1vei10ZXh0LWFsaWduLWxhc3QiLGJyb3dzZXJzOlsiRkYxMiJdLHZhbHVlczpbe25hbWU6ImF1dG8ifSx7bmFtZToiY2VudGVyIixkZXNjcmlwdGlvbjoiVGhlIGlubGluZSBjb250ZW50cyBhcmUgY2VudGVyZWQgd2l0aGluIHRoZSBsaW5lIGJveC4ifSx7bmFtZToianVzdGlmeSIsZGVzY3JpcHRpb246IlRoZSB0ZXh0IGlzIGp1c3RpZmllZCBhY2NvcmRpbmcgdG8gdGhlIG1ldGhvZCBzcGVjaWZpZWQgYnkgdGhlICd0ZXh0LWp1c3RpZnknIHByb3BlcnR5LiJ9LHtuYW1lOiJsZWZ0IixkZXNjcmlwdGlvbjoiVGhlIGlubGluZSBjb250ZW50cyBhcmUgYWxpZ25lZCB0byB0aGUgbGVmdCBlZGdlIG9mIHRoZSBsaW5lIGJveC4gSW4gdmVydGljYWwgdGV4dCwgJ2xlZnQnIGFsaWducyB0byB0aGUgZWRnZSBvZiB0aGUgbGluZSBib3ggdGhhdCB3b3VsZCBiZSB0aGUgc3RhcnQgZWRnZSBmb3IgbGVmdC10by1yaWdodCB0ZXh0LiJ9LHtuYW1lOiJyaWdodCIsZGVzY3JpcHRpb246IlRoZSBpbmxpbmUgY29udGVudHMgYXJlIGFsaWduZWQgdG8gdGhlIHJpZ2h0IGVkZ2Ugb2YgdGhlIGxpbmUgYm94LiBJbiB2ZXJ0aWNhbCB0ZXh0LCAncmlnaHQnIGFsaWducyB0byB0aGUgZWRnZSBvZiB0aGUgbGluZSBib3ggdGhhdCB3b3VsZCBiZSB0aGUgZW5kIGVkZ2UgZm9yIGxlZnQtdG8tcmlnaHQgdGV4dC4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJEZXNjcmliZXMgaG93IHRoZSBsYXN0IGxpbmUgb2YgYSBibG9jayBvciBhIGxpbmUgcmlnaHQgYmVmb3JlIGEgZm9yY2VkIGxpbmUgYnJlYWsgaXMgYWxpZ25lZCB3aGVuICd0ZXh0LWFsaWduJyBpcyBzZXQgdG8gJ2p1c3RpZnknLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLW1vei10ZXh0LWRlY29yYXRpb24tY29sb3IiLGJyb3dzZXJzOlsiRkY2Il0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhlIGNvbG9yIG9mIHRleHQgZGVjb3JhdGlvbiAodW5kZXJsaW5lcyBvdmVybGluZXMsIGFuZCBsaW5lLXRocm91Z2hzKSBzZXQgb24gdGhlIGVsZW1lbnQgd2l0aCB0ZXh0LWRlY29yYXRpb24tbGluZS4iLHJlc3RyaWN0aW9uczpbImNvbG9yIl19LHtuYW1lOiItbW96LXRleHQtZGVjb3JhdGlvbi1saW5lIixicm93c2VyczpbIkZGNiJdLHZhbHVlczpbe25hbWU6ImxpbmUtdGhyb3VnaCIsZGVzY3JpcHRpb246IkVhY2ggbGluZSBvZiB0ZXh0IGhhcyBhIGxpbmUgdGhyb3VnaCB0aGUgbWlkZGxlLiJ9LHtuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiTmVpdGhlciBwcm9kdWNlcyBub3IgaW5oaWJpdHMgdGV4dCBkZWNvcmF0aW9uLiJ9LHtuYW1lOiJvdmVybGluZSIsZGVzY3JpcHRpb246IkVhY2ggbGluZSBvZiB0ZXh0IGhhcyBhIGxpbmUgYWJvdmUgaXQuIn0se25hbWU6InVuZGVybGluZSIsZGVzY3JpcHRpb246IkVhY2ggbGluZSBvZiB0ZXh0IGlzIHVuZGVybGluZWQuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHdoYXQgbGluZSBkZWNvcmF0aW9ucywgaWYgYW55LCBhcmUgYWRkZWQgdG8gdGhlIGVsZW1lbnQuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItbW96LXRleHQtZGVjb3JhdGlvbi1zdHlsZSIsYnJvd3NlcnM6WyJGRjYiXSx2YWx1ZXM6W3tuYW1lOiJkYXNoZWQiLGRlc2NyaXB0aW9uOiJQcm9kdWNlcyBhIGRhc2hlZCBsaW5lIHN0eWxlLiJ9LHtuYW1lOiJkb3R0ZWQiLGRlc2NyaXB0aW9uOiJQcm9kdWNlcyBhIGRvdHRlZCBsaW5lLiJ9LHtuYW1lOiJkb3VibGUiLGRlc2NyaXB0aW9uOiJQcm9kdWNlcyBhIGRvdWJsZSBsaW5lLiJ9LHtuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiUHJvZHVjZXMgbm8gbGluZS4ifSx7bmFtZToic29saWQiLGRlc2NyaXB0aW9uOiJQcm9kdWNlcyBhIHNvbGlkIGxpbmUuIn0se25hbWU6IndhdnkiLGRlc2NyaXB0aW9uOiJQcm9kdWNlcyBhIHdhdnkgbGluZS4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhlIGxpbmUgc3R5bGUgZm9yIHVuZGVybGluZSwgbGluZS10aHJvdWdoIGFuZCBvdmVybGluZSB0ZXh0IGRlY29yYXRpb24uIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItbW96LXRleHQtc2l6ZS1hZGp1c3QiLGJyb3dzZXJzOlsiRkYiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiUmVuZGVyZXJzIG11c3QgdXNlIHRoZSBkZWZhdWx0IHNpemUgYWRqdXN0bWVudCB3aGVuIGRpc3BsYXlpbmcgb24gYSBzbWFsbCBkZXZpY2UuIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJSZW5kZXJlcnMgbXVzdCBub3QgZG8gc2l6ZSBhZGp1c3RtZW50IHdoZW4gZGlzcGxheWluZyBvbiBhIHNtYWxsIGRldmljZS4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSBzaXplIGFkanVzdG1lbnQgZm9yIGRpc3BsYXlpbmcgdGV4dCBjb250ZW50IGluIG1vYmlsZSBicm93c2Vycy4iLHJlc3RyaWN0aW9uczpbImVudW0iLCJwZXJjZW50YWdlIl19LHtuYW1lOiItbW96LXRyYW5zZm9ybSIsYnJvd3NlcnM6WyJGRjMuNSJdLHZhbHVlczpbe25hbWU6Im1hdHJpeCgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgMkQgdHJhbnNmb3JtYXRpb24gaW4gdGhlIGZvcm0gb2YgYSB0cmFuc2Zvcm1hdGlvbiBtYXRyaXggb2Ygc2l4IHZhbHVlcy4gbWF0cml4KGEsYixjLGQsZSxmKSBpcyBlcXVpdmFsZW50IHRvIGFwcGx5aW5nIHRoZSB0cmFuc2Zvcm1hdGlvbiBtYXRyaXggW2EgYiBjIGQgZSBmXSJ9LHtuYW1lOiJtYXRyaXgzZCgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgM0QgdHJhbnNmb3JtYXRpb24gYXMgYSA0eDQgaG9tb2dlbmVvdXMgbWF0cml4IG9mIDE2IHZhbHVlcyBpbiBjb2x1bW4tbWFqb3Igb3JkZXIuIn0se25hbWU6Im5vbmUifSx7bmFtZToicGVyc3BlY3RpdmUiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSBwZXJzcGVjdGl2ZSBwcm9qZWN0aW9uIG1hdHJpeC4ifSx7bmFtZToicm90YXRlKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSAyRCByb3RhdGlvbiBieSB0aGUgYW5nbGUgc3BlY2lmaWVkIGluIHRoZSBwYXJhbWV0ZXIgYWJvdXQgdGhlIG9yaWdpbiBvZiB0aGUgZWxlbWVudCwgYXMgZGVmaW5lZCBieSB0aGUgdHJhbnNmb3JtLW9yaWdpbiBwcm9wZXJ0eS4ifSx7bmFtZToicm90YXRlM2QoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIGNsb2Nrd2lzZSAzRCByb3RhdGlvbiBieSB0aGUgYW5nbGUgc3BlY2lmaWVkIGluIGxhc3QgcGFyYW1ldGVyIGFib3V0IHRoZSBbeCx5LHpdIGRpcmVjdGlvbiB2ZWN0b3IgZGVzY3JpYmVkIGJ5IHRoZSBmaXJzdCAzIHBhcmFtZXRlcnMuIn0se25hbWU6InJvdGF0ZVgoJ2FuZ2xlJykiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSBjbG9ja3dpc2Ugcm90YXRpb24gYnkgdGhlIGdpdmVuIGFuZ2xlIGFib3V0IHRoZSBYIGF4aXMuIn0se25hbWU6InJvdGF0ZVkoJ2FuZ2xlJykiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSBjbG9ja3dpc2Ugcm90YXRpb24gYnkgdGhlIGdpdmVuIGFuZ2xlIGFib3V0IHRoZSBZIGF4aXMuIn0se25hbWU6InJvdGF0ZVooJ2FuZ2xlJykiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSBjbG9ja3dpc2Ugcm90YXRpb24gYnkgdGhlIGdpdmVuIGFuZ2xlIGFib3V0IHRoZSBaIGF4aXMuIn0se25hbWU6InNjYWxlKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSAyRCBzY2FsZSBvcGVyYXRpb24gYnkgdGhlIFtzeCxzeV0gc2NhbGluZyB2ZWN0b3IgZGVzY3JpYmVkIGJ5IHRoZSAyIHBhcmFtZXRlcnMuIElmIHRoZSBzZWNvbmQgcGFyYW1ldGVyIGlzIG5vdCBwcm92aWRlZCwgaXQgaXMgdGFrZXMgYSB2YWx1ZSBlcXVhbCB0byB0aGUgZmlyc3QuIn0se25hbWU6InNjYWxlM2QoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIDNEIHNjYWxlIG9wZXJhdGlvbiBieSB0aGUgW3N4LHN5LHN6XSBzY2FsaW5nIHZlY3RvciBkZXNjcmliZWQgYnkgdGhlIDMgcGFyYW1ldGVycy4ifSx7bmFtZToic2NhbGVYKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSBzY2FsZSBvcGVyYXRpb24gdXNpbmcgdGhlIFtzeCwxXSBzY2FsaW5nIHZlY3Rvciwgd2hlcmUgc3ggaXMgZ2l2ZW4gYXMgdGhlIHBhcmFtZXRlci4ifSx7bmFtZToic2NhbGVZKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSBzY2FsZSBvcGVyYXRpb24gdXNpbmcgdGhlIFtzeSwxXSBzY2FsaW5nIHZlY3Rvciwgd2hlcmUgc3kgaXMgZ2l2ZW4gYXMgdGhlIHBhcmFtZXRlci4ifSx7bmFtZToic2NhbGVaKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSBzY2FsZSBvcGVyYXRpb24gdXNpbmcgdGhlIFsxLDEsc3pdIHNjYWxpbmcgdmVjdG9yLCB3aGVyZSBzeiBpcyBnaXZlbiBhcyB0aGUgcGFyYW1ldGVyLiJ9LHtuYW1lOiJza2V3KCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSBza2V3IHRyYW5zZm9ybWF0aW9uIGFsb25nIHRoZSBYIGFuZCBZIGF4ZXMuIFRoZSBmaXJzdCBhbmdsZSBwYXJhbWV0ZXIgc3BlY2lmaWVzIHRoZSBza2V3IG9uIHRoZSBYIGF4aXMuIFRoZSBzZWNvbmQgYW5nbGUgcGFyYW1ldGVyIHNwZWNpZmllcyB0aGUgc2tldyBvbiB0aGUgWSBheGlzLiBJZiB0aGUgc2Vjb25kIHBhcmFtZXRlciBpcyBub3QgZ2l2ZW4gdGhlbiBhIHZhbHVlIG9mIDAgaXMgdXNlZCBmb3IgdGhlIFkgYW5nbGUgKGllOiBubyBza2V3IG9uIHRoZSBZIGF4aXMpLiJ9LHtuYW1lOiJza2V3WCgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgc2tldyB0cmFuc2Zvcm1hdGlvbiBhbG9uZyB0aGUgWCBheGlzIGJ5IHRoZSBnaXZlbiBhbmdsZS4ifSx7bmFtZToic2tld1koKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIHNrZXcgdHJhbnNmb3JtYXRpb24gYWxvbmcgdGhlIFkgYXhpcyBieSB0aGUgZ2l2ZW4gYW5nbGUuIn0se25hbWU6InRyYW5zbGF0ZSgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgMkQgdHJhbnNsYXRpb24gYnkgdGhlIHZlY3RvciBbdHgsIHR5XSwgd2hlcmUgdHggaXMgdGhlIGZpcnN0IHRyYW5zbGF0aW9uLXZhbHVlIHBhcmFtZXRlciBhbmQgdHkgaXMgdGhlIG9wdGlvbmFsIHNlY29uZCB0cmFuc2xhdGlvbi12YWx1ZSBwYXJhbWV0ZXIuIn0se25hbWU6InRyYW5zbGF0ZTNkKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSAzRCB0cmFuc2xhdGlvbiBieSB0aGUgdmVjdG9yIFt0eCx0eSx0el0sIHdpdGggdHgsIHR5IGFuZCB0eiBiZWluZyB0aGUgZmlyc3QsIHNlY29uZCBhbmQgdGhpcmQgdHJhbnNsYXRpb24tdmFsdWUgcGFyYW1ldGVycyByZXNwZWN0aXZlbHkuIn0se25hbWU6InRyYW5zbGF0ZVgoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIHRyYW5zbGF0aW9uIGJ5IHRoZSBnaXZlbiBhbW91bnQgaW4gdGhlIFggZGlyZWN0aW9uLiJ9LHtuYW1lOiJ0cmFuc2xhdGVZKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSB0cmFuc2xhdGlvbiBieSB0aGUgZ2l2ZW4gYW1vdW50IGluIHRoZSBZIGRpcmVjdGlvbi4ifSx7bmFtZToidHJhbnNsYXRlWigpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgdHJhbnNsYXRpb24gYnkgdGhlIGdpdmVuIGFtb3VudCBpbiB0aGUgWiBkaXJlY3Rpb24uIE5vdGUgdGhhdCBwZXJjZW50YWdlIHZhbHVlcyBhcmUgbm90IGFsbG93ZWQgaW4gdGhlIHRyYW5zbGF0ZVogdHJhbnNsYXRpb24tdmFsdWUsIGFuZCBpZiBwcmVzZW50IGFyZSBldmFsdWF0ZWQgYXMgMC4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJBIHR3by1kaW1lbnNpb25hbCB0cmFuc2Zvcm1hdGlvbiBpcyBhcHBsaWVkIHRvIGFuIGVsZW1lbnQgdGhyb3VnaCB0aGUgJ3RyYW5zZm9ybScgcHJvcGVydHkuIFRoaXMgcHJvcGVydHkgY29udGFpbnMgYSBsaXN0IG9mIHRyYW5zZm9ybSBmdW5jdGlvbnMgc2ltaWxhciB0byB0aG9zZSBhbGxvd2VkIGJ5IFNWRy4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tb3otdHJhbnNmb3JtLW9yaWdpbiIsYnJvd3NlcnM6WyJGRjMuNSJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRXN0YWJsaXNoZXMgdGhlIG9yaWdpbiBvZiB0cmFuc2Zvcm1hdGlvbiBmb3IgYW4gZWxlbWVudC4iLHJlc3RyaWN0aW9uczpbInBvc2l0aW9uIiwibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToiLW1vei10cmFuc2l0aW9uIixicm93c2VyczpbIkZGNCJdLHZhbHVlczpbe25hbWU6ImFsbCIsZGVzY3JpcHRpb246IkV2ZXJ5IHByb3BlcnR5IHRoYXQgaXMgYWJsZSB0byB1bmRlcmdvIGEgdHJhbnNpdGlvbiB3aWxsIGRvIHNvLiJ9LHtuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiTm8gcHJvcGVydHkgd2lsbCB0cmFuc2l0aW9uLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlNob3J0aGFuZCBwcm9wZXJ0eSBjb21iaW5lcyBmb3VyIG9mIHRoZSB0cmFuc2l0aW9uIHByb3BlcnRpZXMgaW50byBhIHNpbmdsZSBwcm9wZXJ0eS4iLHJlc3RyaWN0aW9uczpbInRpbWUiLCJwcm9wZXJ0eSIsInRpbWluZy1mdW5jdGlvbiIsImVudW0iXX0se25hbWU6Ii1tb3otdHJhbnNpdGlvbi1kZWxheSIsYnJvd3NlcnM6WyJGRjQiXSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkRlZmluZXMgd2hlbiB0aGUgdHJhbnNpdGlvbiB3aWxsIHN0YXJ0LiBJdCBhbGxvd3MgYSB0cmFuc2l0aW9uIHRvIGJlZ2luIGV4ZWN1dGlvbiBzb21lIHBlcmlvZCBvZiB0aW1lIGZyb20gd2hlbiBpdCBpcyBhcHBsaWVkLiIscmVzdHJpY3Rpb25zOlsidGltZSJdfSx7bmFtZToiLW1vei10cmFuc2l0aW9uLWR1cmF0aW9uIixicm93c2VyczpbIkZGNCJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGhvdyBsb25nIHRoZSB0cmFuc2l0aW9uIGZyb20gdGhlIG9sZCB2YWx1ZSB0byB0aGUgbmV3IHZhbHVlIHNob3VsZCB0YWtlLiIscmVzdHJpY3Rpb25zOlsidGltZSJdfSx7bmFtZToiLW1vei10cmFuc2l0aW9uLXByb3BlcnR5Iixicm93c2VyczpbIkZGNCJdLHZhbHVlczpbe25hbWU6ImFsbCIsZGVzY3JpcHRpb246IkV2ZXJ5IHByb3BlcnR5IHRoYXQgaXMgYWJsZSB0byB1bmRlcmdvIGEgdHJhbnNpdGlvbiB3aWxsIGRvIHNvLiJ9LHtuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiTm8gcHJvcGVydHkgd2lsbCB0cmFuc2l0aW9uLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgbmFtZSBvZiB0aGUgQ1NTIHByb3BlcnR5IHRvIHdoaWNoIHRoZSB0cmFuc2l0aW9uIGlzIGFwcGxpZWQuIixyZXN0cmljdGlvbnM6WyJwcm9wZXJ0eSJdfSx7bmFtZToiLW1vei10cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbiIsYnJvd3NlcnM6WyJGRjQiXSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkRlc2NyaWJlcyBob3cgdGhlIGludGVybWVkaWF0ZSB2YWx1ZXMgdXNlZCBkdXJpbmcgYSB0cmFuc2l0aW9uIHdpbGwgYmUgY2FsY3VsYXRlZC4iLHJlc3RyaWN0aW9uczpbInRpbWluZy1mdW5jdGlvbiJdfSx7bmFtZToiLW1vei11c2VyLWZvY3VzIixicm93c2VyczpbIkZGMSJdLHZhbHVlczpbe25hbWU6Imlnbm9yZSJ9LHtuYW1lOiJub3JtYWwifV0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiJpZ25vcmUgfCBub3JtYWwgfCBzZWxlY3QtYWZ0ZXIgfCBzZWxlY3QtYmVmb3JlIHwgc2VsZWN0LW1lbnUgfCBzZWxlY3Qtc2FtZSB8IHNlbGVjdC1hbGwgfCBub25lIixyZWxldmFuY2U6MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvLW1vei11c2VyLWZvY3VzIn1dLGRlc2NyaXB0aW9uOiJVc2VkIHRvIGluZGljYXRlIHdoZXRoZXIgdGhlIGVsZW1lbnQgY2FuIGhhdmUgZm9jdXMuIn0se25hbWU6Ii1tb3otdXNlci1zZWxlY3QiLGJyb3dzZXJzOlsiRkYxLjUiXSx2YWx1ZXM6W3tuYW1lOiJhbGwifSx7bmFtZToiZWxlbWVudCJ9LHtuYW1lOiJlbGVtZW50cyJ9LHtuYW1lOiItbW96LWFsbCJ9LHtuYW1lOiItbW96LW5vbmUifSx7bmFtZToibm9uZSJ9LHtuYW1lOiJ0ZXh0In0se25hbWU6InRvZ2dsZSJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkNvbnRyb2xzIHRoZSBhcHBlYXJhbmNlIG9mIHNlbGVjdGlvbi4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tcy1hY2NlbGVyYXRvciIsYnJvd3NlcnM6WyJFIiwiSUUxMCJdLHZhbHVlczpbe25hbWU6ImZhbHNlIixkZXNjcmlwdGlvbjoiVGhlIGVsZW1lbnQgZG9lcyBub3QgY29udGFpbiBhbiBhY2NlbGVyYXRvciBrZXkgc2VxdWVuY2UuIn0se25hbWU6InRydWUiLGRlc2NyaXB0aW9uOiJUaGUgZWxlbWVudCBjb250YWlucyBhbiBhY2NlbGVyYXRvciBrZXkgc2VxdWVuY2UuIn1dLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiZmFsc2UgfCB0cnVlIixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiSUUgb25seS4gSGFzIHRoZSBhYmlsaXR5IHRvIHR1cm4gb2ZmIGl0cyBzeXN0ZW0gdW5kZXJsaW5lcyBmb3IgYWNjZWxlcmF0b3Iga2V5cyB1bnRpbCB0aGUgQUxUIGtleSBpcyBwcmVzc2VkIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItbXMtYmVoYXZpb3IiLGJyb3dzZXJzOlsiSUU4Il0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJJRSBvbmx5LiBVc2VkIHRvIGV4dGVuZCBiZWhhdmlvcnMgb2YgdGhlIGJyb3dzZXIiLHJlc3RyaWN0aW9uczpbInVybCJdfSx7bmFtZToiLW1zLWJsb2NrLXByb2dyZXNzaW9uIixicm93c2VyczpbIklFOCJdLHZhbHVlczpbe25hbWU6ImJ0IixkZXNjcmlwdGlvbjoiQm90dG9tLXRvLXRvcCBibG9jayBmbG93LiBMYXlvdXQgaXMgaG9yaXpvbnRhbC4ifSx7bmFtZToibHIiLGRlc2NyaXB0aW9uOiJMZWZ0LXRvLXJpZ2h0IGRpcmVjdGlvbi4gVGhlIGZsb3cgb3JpZW50YXRpb24gaXMgdmVydGljYWwuIn0se25hbWU6InJsIixkZXNjcmlwdGlvbjoiUmlnaHQtdG8tbGVmdCBkaXJlY3Rpb24uIFRoZSBmbG93IG9yaWVudGF0aW9uIGlzIHZlcnRpY2FsLiJ9LHtuYW1lOiJ0YiIsZGVzY3JpcHRpb246IlRvcC10by1ib3R0b20gZGlyZWN0aW9uLiBUaGUgZmxvdyBvcmllbnRhdGlvbiBpcyBob3Jpem9udGFsLiJ9XSxzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6InRiIHwgcmwgfCBidCB8IGxyIixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiU2V0cyB0aGUgYmxvY2stcHJvZ3Jlc3Npb24gdmFsdWUgYW5kIHRoZSBmbG93IG9yaWVudGF0aW9uIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItbXMtY29udGVudC16b29tLWNoYWluaW5nIixicm93c2VyczpbIkUiLCJJRTEwIl0sdmFsdWVzOlt7bmFtZToiY2hhaW5lZCIsZGVzY3JpcHRpb246IlRoZSBuZWFyZXN0IHpvb21hYmxlIHBhcmVudCBlbGVtZW50IGJlZ2lucyB6b29taW5nIHdoZW4gdGhlIHVzZXIgaGl0cyBhIHpvb20gbGltaXQgZHVyaW5nIGEgbWFuaXB1bGF0aW9uLiBObyBib3VuY2UgZWZmZWN0IGlzIHNob3duLiJ9LHtuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiQSBib3VuY2UgZWZmZWN0IGlzIHNob3duIHdoZW4gdGhlIHVzZXIgaGl0cyBhIHpvb20gbGltaXQgZHVyaW5nIGEgbWFuaXB1bGF0aW9uLiJ9XSxzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6Im5vbmUgfCBjaGFpbmVkIixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSB6b29tIGJlaGF2aW9yIHRoYXQgb2NjdXJzIHdoZW4gYSB1c2VyIGhpdHMgdGhlIHpvb20gbGltaXQgZHVyaW5nIGEgbWFuaXB1bGF0aW9uLiJ9LHtuYW1lOiItbXMtY29udGVudC16b29taW5nIixicm93c2VyczpbIkUiLCJJRTEwIl0sdmFsdWVzOlt7bmFtZToibm9uZSIsZGVzY3JpcHRpb246IlRoZSBlbGVtZW50IGlzIG5vdCB6b29tYWJsZS4ifSx7bmFtZToiem9vbSIsZGVzY3JpcHRpb246IlRoZSBlbGVtZW50IGlzIHpvb21hYmxlLiJ9XSxzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6Im5vbmUgfCB6b29tIixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHdoZXRoZXIgem9vbWluZyBpcyBlbmFibGVkLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLW1zLWNvbnRlbnQtem9vbS1saW1pdCIsYnJvd3NlcnM6WyJFIiwiSUUxMCJdLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiPCctbXMtY29udGVudC16b29tLWxpbWl0LW1pbic+IDwnLW1zLWNvbnRlbnQtem9vbS1saW1pdC1tYXgnPiIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246IlNob3J0aGFuZCBwcm9wZXJ0eSBmb3IgdGhlIC1tcy1jb250ZW50LXpvb20tbGltaXQtbWluIGFuZCAtbXMtY29udGVudC16b29tLWxpbWl0LW1heCBwcm9wZXJ0aWVzLiIscmVzdHJpY3Rpb25zOlsicGVyY2VudGFnZSJdfSx7bmFtZToiLW1zLWNvbnRlbnQtem9vbS1saW1pdC1tYXgiLGJyb3dzZXJzOlsiRSIsIklFMTAiXSxzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6IjxwZXJjZW50YWdlPiIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgbWF4aW11bSB6b29tIGZhY3Rvci4iLHJlc3RyaWN0aW9uczpbInBlcmNlbnRhZ2UiXX0se25hbWU6Ii1tcy1jb250ZW50LXpvb20tbGltaXQtbWluIixicm93c2VyczpbIkUiLCJJRTEwIl0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiI8cGVyY2VudGFnZT4iLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhlIG1pbmltdW0gem9vbSBmYWN0b3IuIixyZXN0cmljdGlvbnM6WyJwZXJjZW50YWdlIl19LHtuYW1lOiItbXMtY29udGVudC16b29tLXNuYXAiLGJyb3dzZXJzOlsiRSIsIklFMTAiXSx2YWx1ZXM6W3tuYW1lOiJtYW5kYXRvcnkiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCB0aGUgbW90aW9uIG9mIHRoZSBjb250ZW50IGFmdGVyIHRoZSBjb250YWN0IGlzIHBpY2tlZCB1cCBpcyBhbHdheXMgYWRqdXN0ZWQgc28gdGhhdCBpdCBsYW5kcyBvbiBhIHNuYXAtcG9pbnQuIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCB6b29taW5nIGlzIHVuYWZmZWN0ZWQgYnkgYW55IGRlZmluZWQgc25hcC1wb2ludHMuIn0se25hbWU6InByb3hpbWl0eSIsZGVzY3JpcHRpb246J0luZGljYXRlcyB0aGF0IHRoZSBtb3Rpb24gb2YgdGhlIGNvbnRlbnQgYWZ0ZXIgdGhlIGNvbnRhY3QgaXMgcGlja2VkIHVwIG1heSBiZSBhZGp1c3RlZCBpZiB0aGUgY29udGVudCB3b3VsZCBub3JtYWxseSBzdG9wICJjbG9zZSBlbm91Z2giIHRvIGEgc25hcC1wb2ludC4nfSx7bmFtZToic25hcEludGVydmFsKDEwMCUsIDEwMCUpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHdoZXJlIHRoZSBzbmFwLXBvaW50cyB3aWxsIGJlIHBsYWNlZC4ifSx7bmFtZToic25hcExpc3QoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgcG9zaXRpb24gb2YgaW5kaXZpZHVhbCBzbmFwLXBvaW50cyBhcyBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIHpvb20gZmFjdG9ycy4ifV0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiI8Jy1tcy1jb250ZW50LXpvb20tc25hcC10eXBlJz4gfHwgPCctbXMtY29udGVudC16b29tLXNuYXAtcG9pbnRzJz4iLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJTaG9ydGhhbmQgcHJvcGVydHkgZm9yIHRoZSAtbXMtY29udGVudC16b29tLXNuYXAtdHlwZSBhbmQgLW1zLWNvbnRlbnQtem9vbS1zbmFwLXBvaW50cyBwcm9wZXJ0aWVzLiJ9LHtuYW1lOiItbXMtY29udGVudC16b29tLXNuYXAtcG9pbnRzIixicm93c2VyczpbIkUiLCJJRTEwIl0sdmFsdWVzOlt7bmFtZToic25hcEludGVydmFsKDEwMCUsIDEwMCUpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHdoZXJlIHRoZSBzbmFwLXBvaW50cyB3aWxsIGJlIHBsYWNlZC4ifSx7bmFtZToic25hcExpc3QoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgcG9zaXRpb24gb2YgaW5kaXZpZHVhbCBzbmFwLXBvaW50cyBhcyBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIHpvb20gZmFjdG9ycy4ifV0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiJzbmFwSW50ZXJ2YWwoIDxwZXJjZW50YWdlPiwgPHBlcmNlbnRhZ2U+ICkgfCBzbmFwTGlzdCggPHBlcmNlbnRhZ2U+IyApIixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiRGVmaW5lcyB3aGVyZSB6b29tIHNuYXAtcG9pbnRzIGFyZSBsb2NhdGVkLiJ9LHtuYW1lOiItbXMtY29udGVudC16b29tLXNuYXAtdHlwZSIsYnJvd3NlcnM6WyJFIiwiSUUxMCJdLHZhbHVlczpbe25hbWU6Im1hbmRhdG9yeSIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IHRoZSBtb3Rpb24gb2YgdGhlIGNvbnRlbnQgYWZ0ZXIgdGhlIGNvbnRhY3QgaXMgcGlja2VkIHVwIGlzIGFsd2F5cyBhZGp1c3RlZCBzbyB0aGF0IGl0IGxhbmRzIG9uIGEgc25hcC1wb2ludC4ifSx7bmFtZToibm9uZSIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IHpvb21pbmcgaXMgdW5hZmZlY3RlZCBieSBhbnkgZGVmaW5lZCBzbmFwLXBvaW50cy4ifSx7bmFtZToicHJveGltaXR5IixkZXNjcmlwdGlvbjonSW5kaWNhdGVzIHRoYXQgdGhlIG1vdGlvbiBvZiB0aGUgY29udGVudCBhZnRlciB0aGUgY29udGFjdCBpcyBwaWNrZWQgdXAgbWF5IGJlIGFkanVzdGVkIGlmIHRoZSBjb250ZW50IHdvdWxkIG5vcm1hbGx5IHN0b3AgImNsb3NlIGVub3VnaCIgdG8gYSBzbmFwLXBvaW50Lid9XSxzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6Im5vbmUgfCBwcm94aW1pdHkgfCBtYW5kYXRvcnkiLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgaG93IHpvb21pbmcgaXMgYWZmZWN0ZWQgYnkgZGVmaW5lZCBzbmFwLXBvaW50cy4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tcy1maWx0ZXIiLGJyb3dzZXJzOlsiSUU4LTkiXSxzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6IjxzdHJpbmc+IixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiSUUgb25seS4gVXNlZCB0byBwcm9kdWNlIHZpc3VhbCBlZmZlY3RzLiIscmVzdHJpY3Rpb25zOlsic3RyaW5nIl19LHtuYW1lOiItbXMtZmxleCIsYnJvd3NlcnM6WyJJRTEwIl0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IlJldHJpZXZlcyB0aGUgdmFsdWUgb2YgdGhlIG1haW4gc2l6ZSBwcm9wZXJ0eSBhcyB0aGUgdXNlZCAnZmxleC1iYXNpcycuIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJFeHBhbmRzIHRvICcwIDAgYXV0bycuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoic3BlY2lmaWVzIHRoZSBwYXJhbWV0ZXJzIG9mIGEgZmxleGlibGUgbGVuZ3RoOiB0aGUgcG9zaXRpdmUgYW5kIG5lZ2F0aXZlIGZsZXhpYmlsaXR5LCBhbmQgdGhlIHByZWZlcnJlZCBzaXplLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwibnVtYmVyIiwicGVyY2VudGFnZSJdfSx7bmFtZToiLW1zLWZsZXgtYWxpZ24iLGJyb3dzZXJzOlsiSUUxMCJdLHZhbHVlczpbe25hbWU6ImJhc2VsaW5lIixkZXNjcmlwdGlvbjoiSWYgdGhlIGZsZXggaXRlbSdzIGlubGluZSBheGlzIGlzIHRoZSBzYW1lIGFzIHRoZSBjcm9zcyBheGlzLCB0aGlzIHZhbHVlIGlzIGlkZW50aWNhbCB0byAnZmxleC1zdGFydCcuIE90aGVyd2lzZSwgaXQgcGFydGljaXBhdGVzIGluIGJhc2VsaW5lIGFsaWdubWVudC4ifSx7bmFtZToiY2VudGVyIixkZXNjcmlwdGlvbjoiVGhlIGZsZXggaXRlbSdzIG1hcmdpbiBib3ggaXMgY2VudGVyZWQgaW4gdGhlIGNyb3NzIGF4aXMgd2l0aGluIHRoZSBsaW5lLiJ9LHtuYW1lOiJlbmQiLGRlc2NyaXB0aW9uOiJUaGUgY3Jvc3MtZW5kIG1hcmdpbiBlZGdlIG9mIHRoZSBmbGV4IGl0ZW0gaXMgcGxhY2VkIGZsdXNoIHdpdGggdGhlIGNyb3NzLWVuZCBlZGdlIG9mIHRoZSBsaW5lLiJ9LHtuYW1lOiJzdGFydCIsZGVzY3JpcHRpb246IlRoZSBjcm9zcy1zdGFydCBtYXJnaW4gZWRnZSBvZiB0aGUgZmxleGJveCBpdGVtIGlzIHBsYWNlZCBmbHVzaCB3aXRoIHRoZSBjcm9zcy1zdGFydCBlZGdlIG9mIHRoZSBsaW5lLiJ9LHtuYW1lOiJzdHJldGNoIixkZXNjcmlwdGlvbjoiSWYgdGhlIGNyb3NzIHNpemUgcHJvcGVydHkgb2YgdGhlIGZsZXhib3ggaXRlbSBpcyBhbnl0aGluZyBvdGhlciB0aGFuICdhdXRvJywgdGhpcyB2YWx1ZSBpcyBpZGVudGljYWwgdG8gJ3N0YXJ0Jy4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJBbGlnbnMgZmxleCBpdGVtcyBhbG9uZyB0aGUgY3Jvc3MgYXhpcyBvZiB0aGUgY3VycmVudCBsaW5lIG9mIHRoZSBmbGV4IGNvbnRhaW5lci4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tcy1mbGV4LWRpcmVjdGlvbiIsYnJvd3NlcnM6WyJJRTEwIl0sdmFsdWVzOlt7bmFtZToiY29sdW1uIixkZXNjcmlwdGlvbjoiVGhlIGZsZXggY29udGFpbmVyJ3MgbWFpbiBheGlzIGhhcyB0aGUgc2FtZSBvcmllbnRhdGlvbiBhcyB0aGUgYmxvY2sgYXhpcyBvZiB0aGUgY3VycmVudCB3cml0aW5nIG1vZGUuIn0se25hbWU6ImNvbHVtbi1yZXZlcnNlIixkZXNjcmlwdGlvbjoiU2FtZSBhcyAnY29sdW1uJywgZXhjZXB0IHRoZSBtYWluLXN0YXJ0IGFuZCBtYWluLWVuZCBkaXJlY3Rpb25zIGFyZSBzd2FwcGVkLiJ9LHtuYW1lOiJyb3ciLGRlc2NyaXB0aW9uOiJUaGUgZmxleCBjb250YWluZXIncyBtYWluIGF4aXMgaGFzIHRoZSBzYW1lIG9yaWVudGF0aW9uIGFzIHRoZSBpbmxpbmUgYXhpcyBvZiB0aGUgY3VycmVudCB3cml0aW5nIG1vZGUuIn0se25hbWU6InJvdy1yZXZlcnNlIixkZXNjcmlwdGlvbjoiU2FtZSBhcyAncm93JywgZXhjZXB0IHRoZSBtYWluLXN0YXJ0IGFuZCBtYWluLWVuZCBkaXJlY3Rpb25zIGFyZSBzd2FwcGVkLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlNwZWNpZmllcyBob3cgZmxleCBpdGVtcyBhcmUgcGxhY2VkIGluIHRoZSBmbGV4IGNvbnRhaW5lciwgYnkgc2V0dGluZyB0aGUgZGlyZWN0aW9uIG9mIHRoZSBmbGV4IGNvbnRhaW5lcidzIG1haW4gYXhpcy4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tcy1mbGV4LWZsb3ciLGJyb3dzZXJzOlsiSUUxMCJdLHZhbHVlczpbe25hbWU6ImNvbHVtbiIsZGVzY3JpcHRpb246IlRoZSBmbGV4IGNvbnRhaW5lcidzIG1haW4gYXhpcyBoYXMgdGhlIHNhbWUgb3JpZW50YXRpb24gYXMgdGhlIGJsb2NrIGF4aXMgb2YgdGhlIGN1cnJlbnQgd3JpdGluZyBtb2RlLiJ9LHtuYW1lOiJjb2x1bW4tcmV2ZXJzZSIsZGVzY3JpcHRpb246IlNhbWUgYXMgJ2NvbHVtbicsIGV4Y2VwdCB0aGUgbWFpbi1zdGFydCBhbmQgbWFpbi1lbmQgZGlyZWN0aW9ucyBhcmUgc3dhcHBlZC4ifSx7bmFtZToibm93cmFwIixkZXNjcmlwdGlvbjoiVGhlIGZsZXggY29udGFpbmVyIGlzIHNpbmdsZS1saW5lLiJ9LHtuYW1lOiJyb3ciLGRlc2NyaXB0aW9uOiJUaGUgZmxleCBjb250YWluZXIncyBtYWluIGF4aXMgaGFzIHRoZSBzYW1lIG9yaWVudGF0aW9uIGFzIHRoZSBpbmxpbmUgYXhpcyBvZiB0aGUgY3VycmVudCB3cml0aW5nIG1vZGUuIn0se25hbWU6IndyYXAiLGRlc2NyaXB0aW9uOiJUaGUgZmxleGJveCBpcyBtdWx0aS1saW5lLiJ9LHtuYW1lOiJ3cmFwLXJldmVyc2UiLGRlc2NyaXB0aW9uOiJTYW1lIGFzICd3cmFwJywgZXhjZXB0IHRoZSBjcm9zcy1zdGFydCBhbmQgY3Jvc3MtZW5kIGRpcmVjdGlvbnMgYXJlIHN3YXBwZWQuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGhvdyBmbGV4Ym94IGl0ZW1zIGFyZSBwbGFjZWQgaW4gdGhlIGZsZXhib3guIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItbXMtZmxleC1pdGVtLWFsaWduIixicm93c2VyczpbIklFMTAiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiQ29tcHV0ZXMgdG8gdGhlIHZhbHVlIG9mICdhbGlnbi1pdGVtcycgb24gdGhlIGVsZW1lbnQncyBwYXJlbnQsIG9yICdzdHJldGNoJyBpZiB0aGUgZWxlbWVudCBoYXMgbm8gcGFyZW50LiBPbiBhYnNvbHV0ZWx5IHBvc2l0aW9uZWQgZWxlbWVudHMsIGl0IGNvbXB1dGVzIHRvIGl0c2VsZi4ifSx7bmFtZToiYmFzZWxpbmUiLGRlc2NyaXB0aW9uOiJJZiB0aGUgZmxleCBpdGVtJ3MgaW5saW5lIGF4aXMgaXMgdGhlIHNhbWUgYXMgdGhlIGNyb3NzIGF4aXMsIHRoaXMgdmFsdWUgaXMgaWRlbnRpY2FsIHRvICdmbGV4LXN0YXJ0Jy4gT3RoZXJ3aXNlLCBpdCBwYXJ0aWNpcGF0ZXMgaW4gYmFzZWxpbmUgYWxpZ25tZW50LiJ9LHtuYW1lOiJjZW50ZXIiLGRlc2NyaXB0aW9uOiJUaGUgZmxleCBpdGVtJ3MgbWFyZ2luIGJveCBpcyBjZW50ZXJlZCBpbiB0aGUgY3Jvc3MgYXhpcyB3aXRoaW4gdGhlIGxpbmUuIn0se25hbWU6ImVuZCIsZGVzY3JpcHRpb246IlRoZSBjcm9zcy1lbmQgbWFyZ2luIGVkZ2Ugb2YgdGhlIGZsZXggaXRlbSBpcyBwbGFjZWQgZmx1c2ggd2l0aCB0aGUgY3Jvc3MtZW5kIGVkZ2Ugb2YgdGhlIGxpbmUuIn0se25hbWU6InN0YXJ0IixkZXNjcmlwdGlvbjoiVGhlIGNyb3NzLXN0YXJ0IG1hcmdpbiBlZGdlIG9mIHRoZSBmbGV4IGl0ZW0gaXMgcGxhY2VkIGZsdXNoIHdpdGggdGhlIGNyb3NzLXN0YXJ0IGVkZ2Ugb2YgdGhlIGxpbmUuIn0se25hbWU6InN0cmV0Y2giLGRlc2NyaXB0aW9uOiJJZiB0aGUgY3Jvc3Mgc2l6ZSBwcm9wZXJ0eSBvZiB0aGUgZmxleCBpdGVtIGNvbXB1dGVzIHRvIGF1dG8sIGFuZCBuZWl0aGVyIG9mIHRoZSBjcm9zcy1heGlzIG1hcmdpbnMgYXJlIGF1dG8sIHRoZSBmbGV4IGl0ZW0gaXMgc3RyZXRjaGVkLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkFsbG93cyB0aGUgZGVmYXVsdCBhbGlnbm1lbnQgYWxvbmcgdGhlIGNyb3NzIGF4aXMgdG8gYmUgb3ZlcnJpZGRlbiBmb3IgaW5kaXZpZHVhbCBmbGV4IGl0ZW1zLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLW1zLWZsZXgtbGluZS1wYWNrIixicm93c2VyczpbIklFMTAiXSx2YWx1ZXM6W3tuYW1lOiJjZW50ZXIiLGRlc2NyaXB0aW9uOiJMaW5lcyBhcmUgcGFja2VkIHRvd2FyZCB0aGUgY2VudGVyIG9mIHRoZSBmbGV4IGNvbnRhaW5lci4ifSx7bmFtZToiZGlzdHJpYnV0ZSIsZGVzY3JpcHRpb246IkxpbmVzIGFyZSBldmVubHkgZGlzdHJpYnV0ZWQgaW4gdGhlIGZsZXggY29udGFpbmVyLCB3aXRoIGhhbGYtc2l6ZSBzcGFjZXMgb24gZWl0aGVyIGVuZC4ifSx7bmFtZToiZW5kIixkZXNjcmlwdGlvbjoiTGluZXMgYXJlIHBhY2tlZCB0b3dhcmQgdGhlIGVuZCBvZiB0aGUgZmxleCBjb250YWluZXIuIn0se25hbWU6Imp1c3RpZnkiLGRlc2NyaXB0aW9uOiJMaW5lcyBhcmUgZXZlbmx5IGRpc3RyaWJ1dGVkIGluIHRoZSBmbGV4IGNvbnRhaW5lci4ifSx7bmFtZToic3RhcnQiLGRlc2NyaXB0aW9uOiJMaW5lcyBhcmUgcGFja2VkIHRvd2FyZCB0aGUgc3RhcnQgb2YgdGhlIGZsZXggY29udGFpbmVyLiJ9LHtuYW1lOiJzdHJldGNoIixkZXNjcmlwdGlvbjoiTGluZXMgc3RyZXRjaCB0byB0YWtlIHVwIHRoZSByZW1haW5pbmcgc3BhY2UuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiQWxpZ25zIGEgZmxleCBjb250YWluZXIncyBsaW5lcyB3aXRoaW4gdGhlIGZsZXggY29udGFpbmVyIHdoZW4gdGhlcmUgaXMgZXh0cmEgc3BhY2UgaW4gdGhlIGNyb3NzLWF4aXMsIHNpbWlsYXIgdG8gaG93ICdqdXN0aWZ5LWNvbnRlbnQnIGFsaWducyBpbmRpdmlkdWFsIGl0ZW1zIHdpdGhpbiB0aGUgbWFpbi1heGlzLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLW1zLWZsZXgtb3JkZXIiLGJyb3dzZXJzOlsiSUUxMCJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiQ29udHJvbHMgdGhlIG9yZGVyIGluIHdoaWNoIGNoaWxkcmVuIG9mIGEgZmxleCBjb250YWluZXIgYXBwZWFyIHdpdGhpbiB0aGUgZmxleCBjb250YWluZXIsIGJ5IGFzc2lnbmluZyB0aGVtIHRvIG9yZGluYWwgZ3JvdXBzLiIscmVzdHJpY3Rpb25zOlsiaW50ZWdlciJdfSx7bmFtZToiLW1zLWZsZXgtcGFjayIsYnJvd3NlcnM6WyJJRTEwIl0sdmFsdWVzOlt7bmFtZToiY2VudGVyIixkZXNjcmlwdGlvbjoiRmxleCBpdGVtcyBhcmUgcGFja2VkIHRvd2FyZCB0aGUgY2VudGVyIG9mIHRoZSBsaW5lLiJ9LHtuYW1lOiJkaXN0cmlidXRlIixkZXNjcmlwdGlvbjoiRmxleCBpdGVtcyBhcmUgZXZlbmx5IGRpc3RyaWJ1dGVkIGluIHRoZSBsaW5lLCB3aXRoIGhhbGYtc2l6ZSBzcGFjZXMgb24gZWl0aGVyIGVuZC4ifSx7bmFtZToiZW5kIixkZXNjcmlwdGlvbjoiRmxleCBpdGVtcyBhcmUgcGFja2VkIHRvd2FyZCB0aGUgZW5kIG9mIHRoZSBsaW5lLiJ9LHtuYW1lOiJqdXN0aWZ5IixkZXNjcmlwdGlvbjoiRmxleCBpdGVtcyBhcmUgZXZlbmx5IGRpc3RyaWJ1dGVkIGluIHRoZSBsaW5lLiJ9LHtuYW1lOiJzdGFydCIsZGVzY3JpcHRpb246IkZsZXggaXRlbXMgYXJlIHBhY2tlZCB0b3dhcmQgdGhlIHN0YXJ0IG9mIHRoZSBsaW5lLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkFsaWducyBmbGV4IGl0ZW1zIGFsb25nIHRoZSBtYWluIGF4aXMgb2YgdGhlIGN1cnJlbnQgbGluZSBvZiB0aGUgZmxleCBjb250YWluZXIuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItbXMtZmxleC13cmFwIixicm93c2VyczpbIklFMTAiXSx2YWx1ZXM6W3tuYW1lOiJub3dyYXAiLGRlc2NyaXB0aW9uOiJUaGUgZmxleCBjb250YWluZXIgaXMgc2luZ2xlLWxpbmUuIn0se25hbWU6IndyYXAiLGRlc2NyaXB0aW9uOiJUaGUgZmxleGJveCBpcyBtdWx0aS1saW5lLiJ9LHtuYW1lOiJ3cmFwLXJldmVyc2UiLGRlc2NyaXB0aW9uOiJTYW1lIGFzICd3cmFwJywgZXhjZXB0IHRoZSBjcm9zcy1zdGFydCBhbmQgY3Jvc3MtZW5kIGRpcmVjdGlvbnMgYXJlIHN3YXBwZWQuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiQ29udHJvbHMgd2hldGhlciB0aGUgZmxleCBjb250YWluZXIgaXMgc2luZ2xlLWxpbmUgb3IgbXVsdGktbGluZSwgYW5kIHRoZSBkaXJlY3Rpb24gb2YgdGhlIGNyb3NzLWF4aXMsIHdoaWNoIGRldGVybWluZXMgdGhlIGRpcmVjdGlvbiBuZXcgbGluZXMgYXJlIHN0YWNrZWQgaW4uIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItbXMtZmxvdy1mcm9tIixicm93c2VyczpbIkUiLCJJRTEwIl0sdmFsdWVzOlt7bmFtZToibm9uZSIsZGVzY3JpcHRpb246IlRoZSBibG9jayBjb250YWluZXIgaXMgbm90IGEgQ1NTIFJlZ2lvbi4ifV0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiJbIG5vbmUgfCA8Y3VzdG9tLWlkZW50PiBdIyIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246Ik1ha2VzIGEgYmxvY2sgY29udGFpbmVyIGEgcmVnaW9uIGFuZCBhc3NvY2lhdGVzIGl0IHdpdGggYSBuYW1lZCBmbG93LiIscmVzdHJpY3Rpb25zOlsiaWRlbnRpZmllciJdfSx7bmFtZToiLW1zLWZsb3ctaW50byIsYnJvd3NlcnM6WyJFIiwiSUUxMCJdLHZhbHVlczpbe25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJUaGUgZWxlbWVudCBpcyBub3QgbW92ZWQgdG8gYSBuYW1lZCBmbG93IGFuZCBub3JtYWwgQ1NTIHByb2Nlc3NpbmcgdGFrZXMgcGxhY2UuIn1dLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiWyBub25lIHwgPGN1c3RvbS1pZGVudD4gXSMiLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJQbGFjZXMgYW4gZWxlbWVudCBvciBpdHMgY29udGVudHMgaW50byBhIG5hbWVkIGZsb3cuIixyZXN0cmljdGlvbnM6WyJpZGVudGlmaWVyIl19LHtuYW1lOiItbXMtZ3JpZC1jb2x1bW4iLGJyb3dzZXJzOlsiRSIsIklFMTAiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIn0se25hbWU6ImVuZCJ9LHtuYW1lOiJzdGFydCJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlVzZWQgdG8gcGxhY2UgZ3JpZCBpdGVtcyBhbmQgZXhwbGljaXRseSBkZWZpbmVkIGdyaWQgY2VsbHMgaW4gdGhlIEdyaWQuIixyZXN0cmljdGlvbnM6WyJpbnRlZ2VyIiwic3RyaW5nIiwiZW51bSJdfSx7bmFtZToiLW1zLWdyaWQtY29sdW1uLWFsaWduIixicm93c2VyczpbIkUiLCJJRTEwIl0sdmFsdWVzOlt7bmFtZToiY2VudGVyIixkZXNjcmlwdGlvbjoiUGxhY2VzIHRoZSBjZW50ZXIgb2YgdGhlIEdyaWQgSXRlbSdzIG1hcmdpbiBib3ggYXQgdGhlIGNlbnRlciBvZiB0aGUgR3JpZCBJdGVtJ3MgY29sdW1uLiJ9LHtuYW1lOiJlbmQiLGRlc2NyaXB0aW9uOiJBbGlnbnMgdGhlIGVuZCBlZGdlIG9mIHRoZSBHcmlkIEl0ZW0ncyBtYXJnaW4gYm94IHRvIHRoZSBlbmQgZWRnZSBvZiB0aGUgR3JpZCBJdGVtJ3MgY29sdW1uLiJ9LHtuYW1lOiJzdGFydCIsZGVzY3JpcHRpb246IkFsaWducyB0aGUgc3RhcnRpbmcgZWRnZSBvZiB0aGUgR3JpZCBJdGVtJ3MgbWFyZ2luIGJveCB0byB0aGUgc3RhcnRpbmcgZWRnZSBvZiB0aGUgR3JpZCBJdGVtJ3MgY29sdW1uLiJ9LHtuYW1lOiJzdHJldGNoIixkZXNjcmlwdGlvbjoiRW5zdXJlcyB0aGF0IHRoZSBHcmlkIEl0ZW0ncyBtYXJnaW4gYm94IGlzIGVxdWFsIHRvIHRoZSBzaXplIG9mIHRoZSBHcmlkIEl0ZW0ncyBjb2x1bW4uIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiQWxpZ25zIHRoZSBjb2x1bW5zIGluIGEgZ3JpZC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tcy1ncmlkLWNvbHVtbnMiLGJyb3dzZXJzOlsiRSIsIklFMTAiXSxzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6Im5vbmUgfCA8dHJhY2stbGlzdD4gfCA8YXV0by10cmFjay1saXN0PiIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246IkxheXMgb3V0IHRoZSBjb2x1bW5zIG9mIHRoZSBncmlkLiJ9LHtuYW1lOiItbXMtZ3JpZC1jb2x1bW4tc3BhbiIsYnJvd3NlcnM6WyJFIiwiSUUxMCJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgY29sdW1ucyB0byBzcGFuLiIscmVzdHJpY3Rpb25zOlsiaW50ZWdlciJdfSx7bmFtZToiLW1zLWdyaWQtbGF5ZXIiLGJyb3dzZXJzOlsiRSIsIklFMTAiXSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkdyaWQtbGF5ZXIgaXMgc2ltaWxhciBpbiBjb25jZXB0IHRvIHotaW5kZXgsIGJ1dCBhdm9pZHMgb3ZlcmxvYWRpbmcgdGhlIG1lYW5pbmcgb2YgdGhlIHotaW5kZXggcHJvcGVydHksIHdoaWNoIGlzIGFwcGxpY2FibGUgb25seSB0byBwb3NpdGlvbmVkIGVsZW1lbnRzLiIscmVzdHJpY3Rpb25zOlsiaW50ZWdlciJdfSx7bmFtZToiLW1zLWdyaWQtcm93Iixicm93c2VyczpbIkUiLCJJRTEwIl0sdmFsdWVzOlt7bmFtZToiYXV0byJ9LHtuYW1lOiJlbmQifSx7bmFtZToic3RhcnQifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJncmlkLXJvdyBpcyB1c2VkIHRvIHBsYWNlIGdyaWQgaXRlbXMgYW5kIGV4cGxpY2l0bHkgZGVmaW5lZCBncmlkIGNlbGxzIGluIHRoZSBHcmlkLiIscmVzdHJpY3Rpb25zOlsiaW50ZWdlciIsInN0cmluZyIsImVudW0iXX0se25hbWU6Ii1tcy1ncmlkLXJvdy1hbGlnbiIsYnJvd3NlcnM6WyJFIiwiSUUxMCJdLHZhbHVlczpbe25hbWU6ImNlbnRlciIsZGVzY3JpcHRpb246IlBsYWNlcyB0aGUgY2VudGVyIG9mIHRoZSBHcmlkIEl0ZW0ncyBtYXJnaW4gYm94IGF0IHRoZSBjZW50ZXIgb2YgdGhlIEdyaWQgSXRlbSdzIHJvdy4ifSx7bmFtZToiZW5kIixkZXNjcmlwdGlvbjoiQWxpZ25zIHRoZSBlbmQgZWRnZSBvZiB0aGUgR3JpZCBJdGVtJ3MgbWFyZ2luIGJveCB0byB0aGUgZW5kIGVkZ2Ugb2YgdGhlIEdyaWQgSXRlbSdzIHJvdy4ifSx7bmFtZToic3RhcnQiLGRlc2NyaXB0aW9uOiJBbGlnbnMgdGhlIHN0YXJ0aW5nIGVkZ2Ugb2YgdGhlIEdyaWQgSXRlbSdzIG1hcmdpbiBib3ggdG8gdGhlIHN0YXJ0aW5nIGVkZ2Ugb2YgdGhlIEdyaWQgSXRlbSdzIHJvdy4ifSx7bmFtZToic3RyZXRjaCIsZGVzY3JpcHRpb246IkVuc3VyZXMgdGhhdCB0aGUgR3JpZCBJdGVtJ3MgbWFyZ2luIGJveCBpcyBlcXVhbCB0byB0aGUgc2l6ZSBvZiB0aGUgR3JpZCBJdGVtJ3Mgcm93LiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkFsaWducyB0aGUgcm93cyBpbiBhIGdyaWQuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItbXMtZ3JpZC1yb3dzIixicm93c2VyczpbIkUiLCJJRTEwIl0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiJub25lIHwgPHRyYWNrLWxpc3Q+IHwgPGF1dG8tdHJhY2stbGlzdD4iLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJMYXlzIG91dCB0aGUgY29sdW1ucyBvZiB0aGUgZ3JpZC4ifSx7bmFtZToiLW1zLWdyaWQtcm93LXNwYW4iLGJyb3dzZXJzOlsiRSIsIklFMTAiXSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIHJvd3MgdG8gc3Bhbi4iLHJlc3RyaWN0aW9uczpbImludGVnZXIiXX0se25hbWU6Ii1tcy1oaWdoLWNvbnRyYXN0LWFkanVzdCIsYnJvd3NlcnM6WyJFIiwiSUUxMCJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJQcm9wZXJ0aWVzIHdpbGwgYmUgYWRqdXN0ZWQgYXMgYXBwbGljYWJsZS4ifSx7bmFtZToibm9uZSIsZGVzY3JpcHRpb246Ik5vIGFkanVzdG1lbnRzIHdpbGwgYmUgYXBwbGllZC4ifV0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiJhdXRvIHwgbm9uZSIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246IlNwZWNpZmllcyBpZiBwcm9wZXJ0aWVzIHNob3VsZCBiZSBhZGp1c3RlZCBpbiBoaWdoIGNvbnRyYXN0IG1vZGUuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItbXMtaHlwaGVuYXRlLWxpbWl0LWNoYXJzIixicm93c2VyczpbIkUiLCJJRTEwIl0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IlRoZSB1c2VyIGFnZW50IGNob29zZXMgYSB2YWx1ZSB0aGF0IGFkYXB0cyB0byB0aGUgY3VycmVudCBsYXlvdXQuIn1dLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiYXV0byB8IDxpbnRlZ2VyPnsxLDN9IixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSBtaW5pbXVtIG51bWJlciBvZiBjaGFyYWN0ZXJzIGluIGEgaHlwaGVuYXRlZCB3b3JkLiIscmVzdHJpY3Rpb25zOlsiaW50ZWdlciJdfSx7bmFtZToiLW1zLWh5cGhlbmF0ZS1saW1pdC1saW5lcyIsYnJvd3NlcnM6WyJFIiwiSUUxMCJdLHZhbHVlczpbe25hbWU6Im5vLWxpbWl0IixkZXNjcmlwdGlvbjoiVGhlcmUgaXMgbm8gbGltaXQuIn1dLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoibm8tbGltaXQgfCA8aW50ZWdlcj4iLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhlIG1heGltdW0gbnVtYmVyIG9mIHN1Y2Nlc3NpdmUgaHlwaGVuYXRlZCBsaW5lcyBpbiBhbiBlbGVtZW50LiIscmVzdHJpY3Rpb25zOlsiaW50ZWdlciJdfSx7bmFtZToiLW1zLWh5cGhlbmF0ZS1saW1pdC16b25lIixicm93c2VyczpbIkUiLCJJRTEwIl0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiI8cGVyY2VudGFnZT4gfCA8bGVuZ3RoPiIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgbWF4aW11bSBhbW91bnQgb2YgdW5maWxsZWQgc3BhY2UgKGJlZm9yZSBqdXN0aWZpY2F0aW9uKSB0aGF0IG1heSBiZSBsZWZ0IGluIHRoZSBsaW5lIGJveCBiZWZvcmUgaHlwaGVuYXRpb24gaXMgdHJpZ2dlcmVkIHRvIHB1bGwgcGFydCBvZiBhIHdvcmQgZnJvbSB0aGUgbmV4dCBsaW5lIGJhY2sgdXAgaW50byB0aGUgY3VycmVudCBsaW5lLiIscmVzdHJpY3Rpb25zOlsicGVyY2VudGFnZSIsImxlbmd0aCJdfSx7bmFtZToiLW1zLWh5cGhlbnMiLGJyb3dzZXJzOlsiRSIsIklFMTAiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiQ29uZGl0aW9uYWwgaHlwaGVuYXRpb24gY2hhcmFjdGVycyBpbnNpZGUgYSB3b3JkLCBpZiBwcmVzZW50LCB0YWtlIHByaW9yaXR5IG92ZXIgYXV0b21hdGljIHJlc291cmNlcyB3aGVuIGRldGVybWluaW5nIGh5cGhlbmF0aW9uIHBvaW50cyB3aXRoaW4gdGhlIHdvcmQuIn0se25hbWU6Im1hbnVhbCIsZGVzY3JpcHRpb246IldvcmRzIGFyZSBvbmx5IGJyb2tlbiBhdCBsaW5lIGJyZWFrcyB3aGVyZSB0aGVyZSBhcmUgY2hhcmFjdGVycyBpbnNpZGUgdGhlIHdvcmQgdGhhdCBzdWdnZXN0IGxpbmUgYnJlYWsgb3Bwb3J0dW5pdGllcyJ9LHtuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiV29yZHMgYXJlIG5vdCBicm9rZW4gYXQgbGluZSBicmVha3MsIGV2ZW4gaWYgY2hhcmFjdGVycyBpbnNpZGUgdGhlIHdvcmQgc3VnZ2VzdCBsaW5lIGJyZWFrIHBvaW50cy4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJDb250cm9scyB3aGV0aGVyIGh5cGhlbmF0aW9uIGlzIGFsbG93ZWQgdG8gY3JlYXRlIG1vcmUgYnJlYWsgb3Bwb3J0dW5pdGllcyB3aXRoaW4gYSBsaW5lIG9mIHRleHQuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItbXMtaW1lLW1vZGUiLGJyb3dzZXJzOlsiSUUxMCJdLHZhbHVlczpbe25hbWU6ImFjdGl2ZSIsZGVzY3JpcHRpb246IlRoZSBpbnB1dCBtZXRob2QgZWRpdG9yIGlzIGluaXRpYWxseSBhY3RpdmU7IHRleHQgZW50cnkgaXMgcGVyZm9ybWVkIHVzaW5nIGl0IHVubGVzcyB0aGUgdXNlciBzcGVjaWZpY2FsbHkgZGlzbWlzc2VzIGl0LiJ9LHtuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiTm8gY2hhbmdlIGlzIG1hZGUgdG8gdGhlIGN1cnJlbnQgaW5wdXQgbWV0aG9kIGVkaXRvciBzdGF0ZS4gVGhpcyBpcyB0aGUgZGVmYXVsdC4ifSx7bmFtZToiZGlzYWJsZWQiLGRlc2NyaXB0aW9uOiJUaGUgaW5wdXQgbWV0aG9kIGVkaXRvciBpcyBkaXNhYmxlZCBhbmQgbWF5IG5vdCBiZSBhY3RpdmF0ZWQgYnkgdGhlIHVzZXIuIn0se25hbWU6ImluYWN0aXZlIixkZXNjcmlwdGlvbjoiVGhlIGlucHV0IG1ldGhvZCBlZGl0b3IgaXMgaW5pdGlhbGx5IGluYWN0aXZlLCBidXQgdGhlIHVzZXIgbWF5IGFjdGl2YXRlIGl0IGlmIHRoZXkgd2lzaC4ifSx7bmFtZToibm9ybWFsIixkZXNjcmlwdGlvbjoiVGhlIElNRSBzdGF0ZSBzaG91bGQgYmUgbm9ybWFsOyB0aGlzIHZhbHVlIGNhbiBiZSB1c2VkIGluIGEgdXNlciBzdHlsZSBzaGVldCB0byBvdmVycmlkZSB0aGUgcGFnZSBzZXR0aW5nLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkNvbnRyb2xzIHRoZSBzdGF0ZSBvZiB0aGUgaW5wdXQgbWV0aG9kIGVkaXRvciBmb3IgdGV4dCBmaWVsZHMuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItbXMtaW50ZXJwb2xhdGlvbi1tb2RlIixicm93c2VyczpbIklFNyJdLHZhbHVlczpbe25hbWU6ImJpY3ViaWMifSx7bmFtZToibmVhcmVzdC1uZWlnaGJvciJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkdldHMgb3Igc2V0cyB0aGUgaW50ZXJwb2xhdGlvbiAocmVzYW1wbGluZykgbWV0aG9kIHVzZWQgdG8gc3RyZXRjaCBpbWFnZXMuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItbXMtbGF5b3V0LWdyaWQiLGJyb3dzZXJzOlsiRSIsIklFMTAiXSx2YWx1ZXM6W3tuYW1lOiJjaGFyIixkZXNjcmlwdGlvbjoiQW55IG9mIHRoZSByYW5nZSBvZiBjaGFyYWN0ZXIgdmFsdWVzIGF2YWlsYWJsZSB0byB0aGUgLW1zLWxheW91dC1ncmlkLWNoYXIgcHJvcGVydHkuIn0se25hbWU6ImxpbmUiLGRlc2NyaXB0aW9uOiJBbnkgb2YgdGhlIHJhbmdlIG9mIGxpbmUgdmFsdWVzIGF2YWlsYWJsZSB0byB0aGUgLW1zLWxheW91dC1ncmlkLWxpbmUgcHJvcGVydHkuIn0se25hbWU6Im1vZGUiLGRlc2NyaXB0aW9uOiJBbnkgb2YgdGhlIHJhbmdlIG9mIG1vZGUgdmFsdWVzIGF2YWlsYWJsZSB0byB0aGUgLW1zLWxheW91dC1ncmlkLW1vZGUgcHJvcGVydHkuIn0se25hbWU6InR5cGUiLGRlc2NyaXB0aW9uOiJBbnkgb2YgdGhlIHJhbmdlIG9mIHR5cGUgdmFsdWVzIGF2YWlsYWJsZSB0byB0aGUgLW1zLWxheW91dC1ncmlkLXR5cGUgcHJvcGVydHkuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU2V0cyBvciByZXRyaWV2ZXMgdGhlIGNvbXBvc2l0ZSBkb2N1bWVudCBncmlkIHByb3BlcnRpZXMgdGhhdCBzcGVjaWZ5IHRoZSBsYXlvdXQgb2YgdGV4dCBjaGFyYWN0ZXJzLiJ9LHtuYW1lOiItbXMtbGF5b3V0LWdyaWQtY2hhciIsYnJvd3NlcnM6WyJFIiwiSUUxMCJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJMYXJnZXN0IGNoYXJhY3RlciBpbiB0aGUgZm9udCBvZiB0aGUgZWxlbWVudCBpcyB1c2VkIHRvIHNldCB0aGUgY2hhcmFjdGVyIGdyaWQuIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJEZWZhdWx0LiBObyBjaGFyYWN0ZXIgZ3JpZCBpcyBzZXQuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU2V0cyBvciByZXRyaWV2ZXMgdGhlIHNpemUgb2YgdGhlIGNoYXJhY3RlciBncmlkIHVzZWQgZm9yIHJlbmRlcmluZyB0aGUgdGV4dCBjb250ZW50IG9mIGFuIGVsZW1lbnQuIixyZXN0cmljdGlvbnM6WyJlbnVtIiwibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToiLW1zLWxheW91dC1ncmlkLWxpbmUiLGJyb3dzZXJzOlsiRSIsIklFMTAiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiTGFyZ2VzdCBjaGFyYWN0ZXIgaW4gdGhlIGZvbnQgb2YgdGhlIGVsZW1lbnQgaXMgdXNlZCB0byBzZXQgdGhlIGNoYXJhY3RlciBncmlkLiJ9LHtuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiRGVmYXVsdC4gTm8gZ3JpZCBsaW5lIGlzIHNldC4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJTZXRzIG9yIHJldHJpZXZlcyB0aGUgZ3JpZGxpbmUgdmFsdWUgdXNlZCBmb3IgcmVuZGVyaW5nIHRoZSB0ZXh0IGNvbnRlbnQgb2YgYW4gZWxlbWVudC4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCJdfSx7bmFtZToiLW1zLWxheW91dC1ncmlkLW1vZGUiLGJyb3dzZXJzOlsiRSIsIklFMTAiXSx2YWx1ZXM6W3tuYW1lOiJib3RoIixkZXNjcmlwdGlvbjoiRGVmYXVsdC4gQm90aCB0aGUgY2hhciBhbmQgbGluZSBncmlkIG1vZGVzIGFyZSBlbmFibGVkLiBUaGlzIHNldHRpbmcgaXMgbmVjZXNzYXJ5IHRvIGZ1bGx5IGVuYWJsZSB0aGUgbGF5b3V0IGdyaWQgb24gYW4gZWxlbWVudC4ifSx7bmFtZToiY2hhciIsZGVzY3JpcHRpb246Ik9ubHkgYSBjaGFyYWN0ZXIgZ3JpZCBpcyB1c2VkLiBUaGlzIGlzIHJlY29tbWVuZGVkIGZvciB1c2Ugd2l0aCBibG9jay1sZXZlbCBlbGVtZW50cywgc3VjaCBhcyBhIGJsb2NrcXVvdGUsIHdoZXJlIHRoZSBsaW5lIGdyaWQgaXMgaW50ZW5kZWQgdG8gYmUgZGlzYWJsZWQuIn0se25hbWU6ImxpbmUiLGRlc2NyaXB0aW9uOiJPbmx5IGEgbGluZSBncmlkIGlzIHVzZWQuIFRoaXMgaXMgcmVjb21tZW5kZWQgZm9yIHVzZSB3aXRoIGlubGluZSBlbGVtZW50cywgc3VjaCBhcyBhIHNwYW4sIHRvIGRpc2FibGUgdGhlIGhvcml6b250YWwgZ3JpZCBvbiBydW5zIG9mIHRleHQgdGhhdCBhY3QgYXMgYSBzaW5nbGUgZW50aXR5IGluIHRoZSBncmlkIGxheW91dC4ifSx7bmFtZToibm9uZSIsZGVzY3JpcHRpb246Ik5vIGdyaWQgaXMgdXNlZC4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJHZXRzIG9yIHNldHMgd2hldGhlciB0aGUgdGV4dCBsYXlvdXQgZ3JpZCB1c2VzIHR3byBkaW1lbnNpb25zLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLW1zLWxheW91dC1ncmlkLXR5cGUiLGJyb3dzZXJzOlsiRSIsIklFMTAiXSx2YWx1ZXM6W3tuYW1lOiJmaXhlZCIsZGVzY3JpcHRpb246IkdyaWQgdXNlZCBmb3IgbW9ub3NwYWNlZCBsYXlvdXQuIEFsbCBub25jdXJzaXZlIGNoYXJhY3RlcnMgYXJlIHRyZWF0ZWQgYXMgZXF1YWw7IGV2ZXJ5IGNoYXJhY3RlciBpcyBjZW50ZXJlZCB3aXRoaW4gYSBzaW5nbGUgZ3JpZCBzcGFjZSBieSBkZWZhdWx0LiJ9LHtuYW1lOiJsb29zZSIsZGVzY3JpcHRpb246IkRlZmF1bHQuIEdyaWQgdXNlZCBmb3IgSmFwYW5lc2UgYW5kIEtvcmVhbiBjaGFyYWN0ZXJzLiJ9LHtuYW1lOiJzdHJpY3QiLGRlc2NyaXB0aW9uOiJHcmlkIHVzZWQgZm9yIENoaW5lc2UsIGFzIHdlbGwgYXMgSmFwYW5lc2UgKEdlbmtvKSBhbmQgS29yZWFuIGNoYXJhY3RlcnMuIE9ubHkgdGhlIGlkZW9ncmFwaHMsIGthbmFzLCBhbmQgd2lkZSBjaGFyYWN0ZXJzIGFyZSBzbmFwcGVkIHRvIHRoZSBncmlkLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlNldHMgb3IgcmV0cmlldmVzIHRoZSB0eXBlIG9mIGdyaWQgdXNlZCBmb3IgcmVuZGVyaW5nIHRoZSB0ZXh0IGNvbnRlbnQgb2YgYW4gZWxlbWVudC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tcy1saW5lLWJyZWFrIixicm93c2VyczpbIkUiLCJJRTEwIl0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IlRoZSBVQSBkZXRlcm1pbmVzIHRoZSBzZXQgb2YgbGluZS1icmVha2luZyByZXN0cmljdGlvbnMgdG8gdXNlIGZvciBDSksgc2NyaXB0cywgYW5kIGl0IG1heSB2YXJ5IHRoZSByZXN0cmljdGlvbnMgYmFzZWQgb24gdGhlIGxlbmd0aCBvZiB0aGUgbGluZTsgZS5nLiwgdXNlIGEgbGVzcyByZXN0cmljdGl2ZSBzZXQgb2YgbGluZS1icmVhayBydWxlcyBmb3Igc2hvcnQgbGluZXMuIn0se25hbWU6ImtlZXAtYWxsIixkZXNjcmlwdGlvbjoiU2VxdWVuY2VzIG9mIENKSyBjaGFyYWN0ZXJzIGNhbiBubyBsb25nZXIgYnJlYWsgb24gaW1wbGllZCBicmVhayBwb2ludHMuIFRoaXMgb3B0aW9uIHNob3VsZCBvbmx5IGJlIHVzZWQgd2hlcmUgdGhlIHByZXNlbmNlIG9mIHdvcmQgc2VwYXJhdG9yIGNoYXJhY3RlcnMgc3RpbGwgY3JlYXRlcyBsaW5lLWJyZWFraW5nIG9wcG9ydHVuaXRpZXMsIGFzIGluIEtvcmVhbi4ifSx7bmFtZToibmV3c3BhcGVyIixkZXNjcmlwdGlvbjoiQnJlYWtzIENKSyBzY3JpcHRzIHVzaW5nIHRoZSBsZWFzdCByZXN0cmljdGl2ZSBzZXQgb2YgbGluZS1icmVha2luZyBydWxlcy4gVHlwaWNhbGx5IHVzZWQgZm9yIHNob3J0IGxpbmVzLCBzdWNoIGFzIGluIG5ld3NwYXBlcnMuIn0se25hbWU6Im5vcm1hbCIsZGVzY3JpcHRpb246IkJyZWFrcyBDSksgc2NyaXB0cyB1c2luZyBhIG5vcm1hbCBzZXQgb2YgbGluZS1icmVha2luZyBydWxlcy4ifSx7bmFtZToic3RyaWN0IixkZXNjcmlwdGlvbjoiQnJlYWtzIENKSyBzY3JpcHRzIHVzaW5nIGEgbW9yZSByZXN0cmljdGl2ZSBzZXQgb2YgbGluZS1icmVha2luZyBydWxlcyB0aGFuICdub3JtYWwnLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlNwZWNpZmllcyB3aGF0IHNldCBvZiBsaW5lIGJyZWFraW5nIHJlc3RyaWN0aW9ucyBhcmUgaW4gZWZmZWN0IHdpdGhpbiB0aGUgZWxlbWVudC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tcy1vdmVyZmxvdy1zdHlsZSIsYnJvd3NlcnM6WyJFIiwiSUUxMCJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJObyBwcmVmZXJlbmNlLCBVQSBzaG91bGQgdXNlIHRoZSBmaXJzdCBzY3JvbGxpbmcgbWV0aG9kIGluIHRoZSBsaXN0IHRoYXQgaXQgc3VwcG9ydHMuIn0se25hbWU6Ii1tcy1hdXRvaGlkaW5nLXNjcm9sbGJhciIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGUgZWxlbWVudCBkaXNwbGF5cyBhdXRvLWhpZGluZyBzY3JvbGxiYXJzIGR1cmluZyBtb3VzZSBpbnRlcmFjdGlvbnMgYW5kIHBhbm5pbmcgaW5kaWNhdG9ycyBkdXJpbmcgdG91Y2ggYW5kIGtleWJvYXJkIGludGVyYWN0aW9ucy4ifSx7bmFtZToibm9uZSIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGUgZWxlbWVudCBkb2VzIG5vdCBkaXNwbGF5IHNjcm9sbGJhcnMgb3IgcGFubmluZyBpbmRpY2F0b3JzLCBldmVuIHdoZW4gaXRzIGNvbnRlbnQgb3ZlcmZsb3dzLiJ9LHtuYW1lOiJzY3JvbGxiYXIiLGRlc2NyaXB0aW9uOidTY3JvbGxiYXJzIGFyZSB0eXBpY2FsbHkgbmFycm93IHN0cmlwcyBpbnNlcnRlZCBvbiBvbmUgb3IgdHdvIGVkZ2VzIG9mIGFuIGVsZW1lbnQgYW5kIHdoaWNoIG9mdGVuIGhhdmUgYXJyb3dzIHRvIGNsaWNrIG9uIGFuZCBhICJ0aHVtYiIgdG8gZHJhZyB1cCBhbmQgZG93biAob3IgbGVmdCBhbmQgcmlnaHQpIHRvIG1vdmUgdGhlIGNvbnRlbnRzIG9mIHRoZSBlbGVtZW50Lid9XSxzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6ImF1dG8gfCBub25lIHwgc2Nyb2xsYmFyIHwgLW1zLWF1dG9oaWRpbmctc2Nyb2xsYmFyIixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiU3BlY2lmeSB3aGV0aGVyIGNvbnRlbnQgaXMgY2xpcHBlZCB3aGVuIGl0IG92ZXJmbG93cyB0aGUgZWxlbWVudCdzIGNvbnRlbnQgYXJlYS4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tcy1wZXJzcGVjdGl2ZSIsYnJvd3NlcnM6WyJJRTEwIl0sdmFsdWVzOlt7bmFtZToibm9uZSIsZGVzY3JpcHRpb246Ik5vIHBlcnNwZWN0aXZlIHRyYW5zZm9ybSBpcyBhcHBsaWVkLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkFwcGxpZXMgdGhlIHNhbWUgdHJhbnNmb3JtIGFzIHRoZSBwZXJzcGVjdGl2ZSg8bnVtYmVyPikgdHJhbnNmb3JtIGZ1bmN0aW9uLCBleGNlcHQgdGhhdCBpdCBhcHBsaWVzIG9ubHkgdG8gdGhlIHBvc2l0aW9uZWQgb3IgdHJhbnNmb3JtZWQgY2hpbGRyZW4gb2YgdGhlIGVsZW1lbnQsIG5vdCB0byB0aGUgdHJhbnNmb3JtIG9uIHRoZSBlbGVtZW50IGl0c2VsZi4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCJdfSx7bmFtZToiLW1zLXBlcnNwZWN0aXZlLW9yaWdpbiIsYnJvd3NlcnM6WyJJRTEwIl0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJFc3RhYmxpc2hlcyB0aGUgb3JpZ2luIGZvciB0aGUgcGVyc3BlY3RpdmUgcHJvcGVydHkuIEl0IGVmZmVjdGl2ZWx5IHNldHMgdGhlIFggYW5kIFkgcG9zaXRpb24gYXQgd2hpY2ggdGhlIHZpZXdlciBhcHBlYXJzIHRvIGJlIGxvb2tpbmcgYXQgdGhlIGNoaWxkcmVuIG9mIHRoZSBlbGVtZW50LiIscmVzdHJpY3Rpb25zOlsicG9zaXRpb24iLCJwZXJjZW50YWdlIiwibGVuZ3RoIl19LHtuYW1lOiItbXMtcGVyc3BlY3RpdmUtb3JpZ2luLXgiLGJyb3dzZXJzOlsiSUUxMCJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRXN0YWJsaXNoZXMgdGhlIG9yaWdpbiBmb3IgdGhlIHBlcnNwZWN0aXZlIHByb3BlcnR5LiBJdCBlZmZlY3RpdmVseSBzZXRzIHRoZSBYICBwb3NpdGlvbiBhdCB3aGljaCB0aGUgdmlld2VyIGFwcGVhcnMgdG8gYmUgbG9va2luZyBhdCB0aGUgY2hpbGRyZW4gb2YgdGhlIGVsZW1lbnQuIixyZXN0cmljdGlvbnM6WyJwb3NpdGlvbiIsInBlcmNlbnRhZ2UiLCJsZW5ndGgiXX0se25hbWU6Ii1tcy1wZXJzcGVjdGl2ZS1vcmlnaW4teSIsYnJvd3NlcnM6WyJJRTEwIl0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJFc3RhYmxpc2hlcyB0aGUgb3JpZ2luIGZvciB0aGUgcGVyc3BlY3RpdmUgcHJvcGVydHkuIEl0IGVmZmVjdGl2ZWx5IHNldHMgdGhlIFkgcG9zaXRpb24gYXQgd2hpY2ggdGhlIHZpZXdlciBhcHBlYXJzIHRvIGJlIGxvb2tpbmcgYXQgdGhlIGNoaWxkcmVuIG9mIHRoZSBlbGVtZW50LiIscmVzdHJpY3Rpb25zOlsicG9zaXRpb24iLCJwZXJjZW50YWdlIiwibGVuZ3RoIl19LHtuYW1lOiItbXMtcHJvZ3Jlc3MtYXBwZWFyYW5jZSIsYnJvd3NlcnM6WyJJRTEwIl0sdmFsdWVzOlt7bmFtZToiYmFyIn0se25hbWU6InJpbmcifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJHZXRzIG9yIHNldHMgYSB2YWx1ZSB0aGF0IHNwZWNpZmllcyB3aGV0aGVyIGEgcHJvZ3Jlc3MgY29udHJvbCBkaXNwbGF5cyBhcyBhIGJhciBvciBhIHJpbmcuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItbXMtc2Nyb2xsYmFyLTNkbGlnaHQtY29sb3IiLGJyb3dzZXJzOlsiSUU4Il0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiI8Y29sb3I+IixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiRGV0ZXJtaW5lcyB0aGUgY29sb3Igb2YgdGhlIHRvcCBhbmQgbGVmdCBlZGdlcyBvZiB0aGUgc2Nyb2xsIGJveCBhbmQgc2Nyb2xsIGFycm93cyBvZiBhIHNjcm9sbCBiYXIuIixyZXN0cmljdGlvbnM6WyJjb2xvciJdfSx7bmFtZToiLW1zLXNjcm9sbGJhci1hcnJvdy1jb2xvciIsYnJvd3NlcnM6WyJJRTgiXSxzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6Ijxjb2xvcj4iLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJEZXRlcm1pbmVzIHRoZSBjb2xvciBvZiB0aGUgYXJyb3cgZWxlbWVudHMgb2YgYSBzY3JvbGwgYXJyb3cuIixyZXN0cmljdGlvbnM6WyJjb2xvciJdfSx7bmFtZToiLW1zLXNjcm9sbGJhci1iYXNlLWNvbG9yIixicm93c2VyczpbIklFOCJdLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiPGNvbG9yPiIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246IkRldGVybWluZXMgdGhlIGNvbG9yIG9mIHRoZSBtYWluIGVsZW1lbnRzIG9mIGEgc2Nyb2xsIGJhciwgd2hpY2ggaW5jbHVkZSB0aGUgc2Nyb2xsIGJveCwgdHJhY2ssIGFuZCBzY3JvbGwgYXJyb3dzLiIscmVzdHJpY3Rpb25zOlsiY29sb3IiXX0se25hbWU6Ii1tcy1zY3JvbGxiYXItZGFya3NoYWRvdy1jb2xvciIsYnJvd3NlcnM6WyJJRTgiXSxzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6Ijxjb2xvcj4iLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJEZXRlcm1pbmVzIHRoZSBjb2xvciBvZiB0aGUgZ3V0dGVyIG9mIGEgc2Nyb2xsIGJhci4iLHJlc3RyaWN0aW9uczpbImNvbG9yIl19LHtuYW1lOiItbXMtc2Nyb2xsYmFyLWZhY2UtY29sb3IiLGJyb3dzZXJzOlsiSUU4Il0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiI8Y29sb3I+IixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiRGV0ZXJtaW5lcyB0aGUgY29sb3Igb2YgdGhlIHNjcm9sbCBib3ggYW5kIHNjcm9sbCBhcnJvd3Mgb2YgYSBzY3JvbGwgYmFyLiIscmVzdHJpY3Rpb25zOlsiY29sb3IiXX0se25hbWU6Ii1tcy1zY3JvbGxiYXItaGlnaGxpZ2h0LWNvbG9yIixicm93c2VyczpbIklFOCJdLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiPGNvbG9yPiIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246IkRldGVybWluZXMgdGhlIGNvbG9yIG9mIHRoZSB0b3AgYW5kIGxlZnQgZWRnZXMgb2YgdGhlIHNjcm9sbCBib3ggYW5kIHNjcm9sbCBhcnJvd3Mgb2YgYSBzY3JvbGwgYmFyLiIscmVzdHJpY3Rpb25zOlsiY29sb3IiXX0se25hbWU6Ii1tcy1zY3JvbGxiYXItc2hhZG93LWNvbG9yIixicm93c2VyczpbIklFOCJdLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiPGNvbG9yPiIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246IkRldGVybWluZXMgdGhlIGNvbG9yIG9mIHRoZSBib3R0b20gYW5kIHJpZ2h0IGVkZ2VzIG9mIHRoZSBzY3JvbGwgYm94IGFuZCBzY3JvbGwgYXJyb3dzIG9mIGEgc2Nyb2xsIGJhci4iLHJlc3RyaWN0aW9uczpbImNvbG9yIl19LHtuYW1lOiItbXMtc2Nyb2xsYmFyLXRyYWNrLWNvbG9yIixicm93c2VyczpbIklFOCJdLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiPGNvbG9yPiIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246IkRldGVybWluZXMgdGhlIGNvbG9yIG9mIHRoZSB0cmFjayBlbGVtZW50IG9mIGEgc2Nyb2xsIGJhci4iLHJlc3RyaWN0aW9uczpbImNvbG9yIl19LHtuYW1lOiItbXMtc2Nyb2xsLWNoYWluaW5nIixicm93c2VyczpbIkUiLCJJRTEwIl0sdmFsdWVzOlt7bmFtZToiY2hhaW5lZCJ9LHtuYW1lOiJub25lIn1dLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiY2hhaW5lZCB8IG5vbmUiLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJHZXRzIG9yIHNldHMgYSB2YWx1ZSB0aGF0IGluZGljYXRlcyB0aGUgc2Nyb2xsaW5nIGJlaGF2aW9yIHRoYXQgb2NjdXJzIHdoZW4gYSB1c2VyIGhpdHMgdGhlIGNvbnRlbnQgYm91bmRhcnkgZHVyaW5nIGEgbWFuaXB1bGF0aW9uLiIscmVzdHJpY3Rpb25zOlsiZW51bSIsImxlbmd0aCJdfSx7bmFtZToiLW1zLXNjcm9sbC1saW1pdCIsYnJvd3NlcnM6WyJFIiwiSUUxMCJdLHZhbHVlczpbe25hbWU6ImF1dG8ifV0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiI8Jy1tcy1zY3JvbGwtbGltaXQteC1taW4nPiA8Jy1tcy1zY3JvbGwtbGltaXQteS1taW4nPiA8Jy1tcy1zY3JvbGwtbGltaXQteC1tYXgnPiA8Jy1tcy1zY3JvbGwtbGltaXQteS1tYXgnPiIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246IkdldHMgb3Igc2V0cyBhIHNob3J0aGFuZCB2YWx1ZSB0aGF0IHNldHMgdmFsdWVzIGZvciB0aGUgLW1zLXNjcm9sbC1saW1pdC14LW1pbiwgLW1zLXNjcm9sbC1saW1pdC15LW1pbiwgLW1zLXNjcm9sbC1saW1pdC14LW1heCwgYW5kIC1tcy1zY3JvbGwtbGltaXQteS1tYXggcHJvcGVydGllcy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCJdfSx7bmFtZToiLW1zLXNjcm9sbC1saW1pdC14LW1heCIsYnJvd3NlcnM6WyJFIiwiSUUxMCJdLHZhbHVlczpbe25hbWU6ImF1dG8ifV0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiJhdXRvIHwgPGxlbmd0aD4iLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJHZXRzIG9yIHNldHMgYSB2YWx1ZSB0aGF0IHNwZWNpZmllcyB0aGUgbWF4aW11bSB2YWx1ZSBmb3IgdGhlIHNjcm9sbExlZnQgcHJvcGVydHkuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiXX0se25hbWU6Ii1tcy1zY3JvbGwtbGltaXQteC1taW4iLGJyb3dzZXJzOlsiRSIsIklFMTAiXSxzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6IjxsZW5ndGg+IixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiR2V0cyBvciBzZXRzIGEgdmFsdWUgdGhhdCBzcGVjaWZpZXMgdGhlIG1pbmltdW0gdmFsdWUgZm9yIHRoZSBzY3JvbGxMZWZ0IHByb3BlcnR5LiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIl19LHtuYW1lOiItbXMtc2Nyb2xsLWxpbWl0LXktbWF4Iixicm93c2VyczpbIkUiLCJJRTEwIl0sdmFsdWVzOlt7bmFtZToiYXV0byJ9XSxzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6ImF1dG8gfCA8bGVuZ3RoPiIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246IkdldHMgb3Igc2V0cyBhIHZhbHVlIHRoYXQgc3BlY2lmaWVzIHRoZSBtYXhpbXVtIHZhbHVlIGZvciB0aGUgc2Nyb2xsVG9wIHByb3BlcnR5LiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIl19LHtuYW1lOiItbXMtc2Nyb2xsLWxpbWl0LXktbWluIixicm93c2VyczpbIkUiLCJJRTEwIl0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiI8bGVuZ3RoPiIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246IkdldHMgb3Igc2V0cyBhIHZhbHVlIHRoYXQgc3BlY2lmaWVzIHRoZSBtaW5pbXVtIHZhbHVlIGZvciB0aGUgc2Nyb2xsVG9wIHByb3BlcnR5LiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIl19LHtuYW1lOiItbXMtc2Nyb2xsLXJhaWxzIixicm93c2VyczpbIkUiLCJJRTEwIl0sdmFsdWVzOlt7bmFtZToibm9uZSJ9LHtuYW1lOiJyYWlsZWQifV0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiJub25lIHwgcmFpbGVkIixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiR2V0cyBvciBzZXRzIGEgdmFsdWUgdGhhdCBpbmRpY2F0ZXMgd2hldGhlciBvciBub3Qgc21hbGwgbW90aW9ucyBwZXJwZW5kaWN1bGFyIHRvIHRoZSBwcmltYXJ5IGF4aXMgb2YgbW90aW9uIHdpbGwgcmVzdWx0IGluIGVpdGhlciBjaGFuZ2VzIHRvIGJvdGggdGhlIHNjcm9sbFRvcCBhbmQgc2Nyb2xsTGVmdCBwcm9wZXJ0aWVzIG9yIGEgY2hhbmdlIHRvIHRoZSBwcmltYXJ5IGF4aXMgKGZvciBpbnN0YW5jZSwgZWl0aGVyIHRoZSBzY3JvbGxUb3Agb3Igc2Nyb2xsTGVmdCBwcm9wZXJ0aWVzIHdpbGwgY2hhbmdlLCBidXQgbm90IGJvdGgpLiIscmVzdHJpY3Rpb25zOlsiZW51bSIsImxlbmd0aCJdfSx7bmFtZToiLW1zLXNjcm9sbC1zbmFwLXBvaW50cy14Iixicm93c2VyczpbIkUiLCJJRTEwIl0sdmFsdWVzOlt7bmFtZToic25hcEludGVydmFsKDEwMCUsIDEwMCUpIn0se25hbWU6InNuYXBMaXN0KCkifV0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiJzbmFwSW50ZXJ2YWwoIDxsZW5ndGgtcGVyY2VudGFnZT4sIDxsZW5ndGgtcGVyY2VudGFnZT4gKSB8IHNuYXBMaXN0KCA8bGVuZ3RoLXBlcmNlbnRhZ2U+IyApIixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiR2V0cyBvciBzZXRzIGEgdmFsdWUgdGhhdCBkZWZpbmVzIHdoZXJlIHNuYXAtcG9pbnRzIHdpbGwgYmUgbG9jYXRlZCBhbG9uZyB0aGUgeC1heGlzLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLW1zLXNjcm9sbC1zbmFwLXBvaW50cy15Iixicm93c2VyczpbIkUiLCJJRTEwIl0sdmFsdWVzOlt7bmFtZToic25hcEludGVydmFsKDEwMCUsIDEwMCUpIn0se25hbWU6InNuYXBMaXN0KCkifV0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiJzbmFwSW50ZXJ2YWwoIDxsZW5ndGgtcGVyY2VudGFnZT4sIDxsZW5ndGgtcGVyY2VudGFnZT4gKSB8IHNuYXBMaXN0KCA8bGVuZ3RoLXBlcmNlbnRhZ2U+IyApIixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiR2V0cyBvciBzZXRzIGEgdmFsdWUgdGhhdCBkZWZpbmVzIHdoZXJlIHNuYXAtcG9pbnRzIHdpbGwgYmUgbG9jYXRlZCBhbG9uZyB0aGUgeS1heGlzLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLW1zLXNjcm9sbC1zbmFwLXR5cGUiLGJyb3dzZXJzOlsiRSIsIklFMTAiXSx2YWx1ZXM6W3tuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiVGhlIHZpc3VhbCB2aWV3cG9ydCBvZiB0aGlzIHNjcm9sbCBjb250YWluZXIgbXVzdCBpZ25vcmUgc25hcCBwb2ludHMsIGlmIGFueSwgd2hlbiBzY3JvbGxlZC4ifSx7bmFtZToibWFuZGF0b3J5IixkZXNjcmlwdGlvbjoiVGhlIHZpc3VhbCB2aWV3cG9ydCBvZiB0aGlzIHNjcm9sbCBjb250YWluZXIgaXMgZ3VhcmFudGVlZCB0byByZXN0IG9uIGEgc25hcCBwb2ludCB3aGVuIHRoZXJlIGFyZSBubyBhY3RpdmUgc2Nyb2xsaW5nIG9wZXJhdGlvbnMuIn0se25hbWU6InByb3hpbWl0eSIsZGVzY3JpcHRpb246IlRoZSB2aXN1YWwgdmlld3BvcnQgb2YgdGhpcyBzY3JvbGwgY29udGFpbmVyIG1heSBjb21lIHRvIHJlc3Qgb24gYSBzbmFwIHBvaW50IGF0IHRoZSB0ZXJtaW5hdGlvbiBvZiBhIHNjcm9sbCBhdCB0aGUgZGlzY3JldGlvbiBvZiB0aGUgVUEgZ2l2ZW4gdGhlIHBhcmFtZXRlcnMgb2YgdGhlIHNjcm9sbC4ifV0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiJub25lIHwgcHJveGltaXR5IHwgbWFuZGF0b3J5IixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiR2V0cyBvciBzZXRzIGEgdmFsdWUgdGhhdCBkZWZpbmVzIHdoYXQgdHlwZSBvZiBzbmFwLXBvaW50IHNob3VsZCBiZSB1c2VkIGZvciB0aGUgY3VycmVudCBlbGVtZW50LiBUaGVyZSBhcmUgdHdvIHR5cGUgb2Ygc25hcC1wb2ludHMsIHdpdGggdGhlIHByaW1hcnkgZGlmZmVyZW5jZSBiZWluZyB3aGV0aGVyIG9yIG5vdCB0aGUgdXNlciBpcyBndWFyYW50ZWVkIHRvIGFsd2F5cyBzdG9wIG9uIGEgc25hcC1wb2ludC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tcy1zY3JvbGwtc25hcC14Iixicm93c2VyczpbIkUiLCJJRTEwIl0sdmFsdWVzOlt7bmFtZToibWFuZGF0b3J5In0se25hbWU6Im5vbmUifSx7bmFtZToicHJveGltaXR5In0se25hbWU6InNuYXBJbnRlcnZhbCgxMDAlLCAxMDAlKSJ9LHtuYW1lOiJzbmFwTGlzdCgpIn1dLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiPCctbXMtc2Nyb2xsLXNuYXAtdHlwZSc+IDwnLW1zLXNjcm9sbC1zbmFwLXBvaW50cy14Jz4iLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJHZXRzIG9yIHNldHMgYSBzaG9ydGhhbmQgdmFsdWUgdGhhdCBzZXRzIHZhbHVlcyBmb3IgdGhlIC1tcy1zY3JvbGwtc25hcC10eXBlIGFuZCAtbXMtc2Nyb2xsLXNuYXAtcG9pbnRzLXggcHJvcGVydGllcy4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tcy1zY3JvbGwtc25hcC15Iixicm93c2VyczpbIkUiLCJJRTEwIl0sdmFsdWVzOlt7bmFtZToibWFuZGF0b3J5In0se25hbWU6Im5vbmUifSx7bmFtZToicHJveGltaXR5In0se25hbWU6InNuYXBJbnRlcnZhbCgxMDAlLCAxMDAlKSJ9LHtuYW1lOiJzbmFwTGlzdCgpIn1dLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiPCctbXMtc2Nyb2xsLXNuYXAtdHlwZSc+IDwnLW1zLXNjcm9sbC1zbmFwLXBvaW50cy15Jz4iLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJHZXRzIG9yIHNldHMgYSBzaG9ydGhhbmQgdmFsdWUgdGhhdCBzZXRzIHZhbHVlcyBmb3IgdGhlIC1tcy1zY3JvbGwtc25hcC10eXBlIGFuZCAtbXMtc2Nyb2xsLXNuYXAtcG9pbnRzLXkgcHJvcGVydGllcy4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tcy1zY3JvbGwtdHJhbnNsYXRpb24iLGJyb3dzZXJzOlsiRSIsIklFMTAiXSx2YWx1ZXM6W3tuYW1lOiJub25lIn0se25hbWU6InZlcnRpY2FsLXRvLWhvcml6b250YWwifV0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiJub25lIHwgdmVydGljYWwtdG8taG9yaXpvbnRhbCIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246IkdldHMgb3Igc2V0cyBhIHZhbHVlIHRoYXQgc3BlY2lmaWVzIHdoZXRoZXIgdmVydGljYWwtdG8taG9yaXpvbnRhbCBzY3JvbGwgd2hlZWwgdHJhbnNsYXRpb24gb2NjdXJzIG9uIHRoZSBzcGVjaWZpZWQgZWxlbWVudC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tcy10ZXh0LWFsaWduLWxhc3QiLGJyb3dzZXJzOlsiRSIsIklFOCJdLHZhbHVlczpbe25hbWU6ImF1dG8ifSx7bmFtZToiY2VudGVyIixkZXNjcmlwdGlvbjoiVGhlIGlubGluZSBjb250ZW50cyBhcmUgY2VudGVyZWQgd2l0aGluIHRoZSBsaW5lIGJveC4ifSx7bmFtZToianVzdGlmeSIsZGVzY3JpcHRpb246IlRoZSB0ZXh0IGlzIGp1c3RpZmllZCBhY2NvcmRpbmcgdG8gdGhlIG1ldGhvZCBzcGVjaWZpZWQgYnkgdGhlICd0ZXh0LWp1c3RpZnknIHByb3BlcnR5LiJ9LHtuYW1lOiJsZWZ0IixkZXNjcmlwdGlvbjoiVGhlIGlubGluZSBjb250ZW50cyBhcmUgYWxpZ25lZCB0byB0aGUgbGVmdCBlZGdlIG9mIHRoZSBsaW5lIGJveC4gSW4gdmVydGljYWwgdGV4dCwgJ2xlZnQnIGFsaWducyB0byB0aGUgZWRnZSBvZiB0aGUgbGluZSBib3ggdGhhdCB3b3VsZCBiZSB0aGUgc3RhcnQgZWRnZSBmb3IgbGVmdC10by1yaWdodCB0ZXh0LiJ9LHtuYW1lOiJyaWdodCIsZGVzY3JpcHRpb246IlRoZSBpbmxpbmUgY29udGVudHMgYXJlIGFsaWduZWQgdG8gdGhlIHJpZ2h0IGVkZ2Ugb2YgdGhlIGxpbmUgYm94LiBJbiB2ZXJ0aWNhbCB0ZXh0LCAncmlnaHQnIGFsaWducyB0byB0aGUgZWRnZSBvZiB0aGUgbGluZSBib3ggdGhhdCB3b3VsZCBiZSB0aGUgZW5kIGVkZ2UgZm9yIGxlZnQtdG8tcmlnaHQgdGV4dC4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJEZXNjcmliZXMgaG93IHRoZSBsYXN0IGxpbmUgb2YgYSBibG9jayBvciBhIGxpbmUgcmlnaHQgYmVmb3JlIGEgZm9yY2VkIGxpbmUgYnJlYWsgaXMgYWxpZ25lZCB3aGVuICd0ZXh0LWFsaWduJyBpcyBzZXQgdG8gJ2p1c3RpZnknLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLW1zLXRleHQtYXV0b3NwYWNlIixicm93c2VyczpbIkUiLCJJRTgiXSx2YWx1ZXM6W3tuYW1lOiJpZGVvZ3JhcGgtYWxwaGEiLGRlc2NyaXB0aW9uOiJDcmVhdGVzIDEvNGVtIGV4dHJhIHNwYWNpbmcgYmV0d2VlbiBydW5zIG9mIGlkZW9ncmFwaGljIGxldHRlcnMgYW5kIG5vbi1pZGVvZ3JhcGhpYyBsZXR0ZXJzLCBzdWNoIGFzIExhdGluLWJhc2VkLCBDeXJpbGxpYywgR3JlZWssIEFyYWJpYyBvciBIZWJyZXcuIn0se25hbWU6ImlkZW9ncmFwaC1udW1lcmljIixkZXNjcmlwdGlvbjoiQ3JlYXRlcyAxLzRlbSBleHRyYSBzcGFjaW5nIGJldHdlZW4gcnVucyBvZiBpZGVvZ3JhcGhpYyBsZXR0ZXJzIGFuZCBudW1lcmljIGdseXBocy4ifSx7bmFtZToiaWRlb2dyYXBoLXBhcmVudGhlc2lzIixkZXNjcmlwdGlvbjoiQ3JlYXRlcyBleHRyYSBzcGFjaW5nIGJldHdlZW4gbm9ybWFsIChub24gd2lkZSkgcGFyZW50aGVzaXMgYW5kIGlkZW9ncmFwaHMuIn0se25hbWU6ImlkZW9ncmFwaC1zcGFjZSIsZGVzY3JpcHRpb246IkV4dGVuZHMgdGhlIHdpZHRoIG9mIHRoZSBzcGFjZSBjaGFyYWN0ZXIgd2hpbGUgc3Vycm91bmRlZCBieSBpZGVvZ3JhcGhzLiJ9LHtuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiTm8gZXh0cmEgc3BhY2UgaXMgY3JlYXRlZC4ifSx7bmFtZToicHVuY3R1YXRpb24iLGRlc2NyaXB0aW9uOiJDcmVhdGVzIGV4dHJhIG5vbi1icmVha2luZyBzcGFjaW5nIGFyb3VuZCBwdW5jdHVhdGlvbiBhcyByZXF1aXJlZCBieSBsYW5ndWFnZS1zcGVjaWZpYyB0eXBvZ3JhcGhpYyBjb252ZW50aW9ucy4ifV0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiJub25lIHwgaWRlb2dyYXBoLWFscGhhIHwgaWRlb2dyYXBoLW51bWVyaWMgfCBpZGVvZ3JhcGgtcGFyZW50aGVzaXMgfCBpZGVvZ3JhcGgtc3BhY2UiLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJEZXRlcm1pbmVzIHdoZXRoZXIgb3Igbm90IGEgZnVsbC13aWR0aCBwdW5jdHVhdGlvbiBtYXJrIGNoYXJhY3RlciBzaG91bGQgYmUgdHJpbW1lZCBpZiBpdCBhcHBlYXJzIGF0IHRoZSBiZWdpbm5pbmcgb2YgYSBsaW5lLCBzbyB0aGF0IGl0cyAnaW5rJyBsaW5lcyB1cCB3aXRoIHRoZSBmaXJzdCBnbHlwaCBpbiB0aGUgbGluZSBhYm92ZSBhbmQgYmVsb3cuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItbXMtdGV4dC1jb21iaW5lLWhvcml6b250YWwiLGJyb3dzZXJzOlsiRSIsIklFMTEiXSx2YWx1ZXM6W3tuYW1lOiJhbGwiLGRlc2NyaXB0aW9uOiJBdHRlbXB0IHRvIHR5cGVzZXQgaG9yaXpvbnRhbGx5IGFsbCBjb25zZWN1dGl2ZSBjaGFyYWN0ZXJzIHdpdGhpbiB0aGUgYm94IHN1Y2ggdGhhdCB0aGV5IHRha2UgdXAgdGhlIHNwYWNlIG9mIGEgc2luZ2xlIGNoYXJhY3RlciB3aXRoaW4gdGhlIHZlcnRpY2FsIGxpbmUgYm94LiJ9LHtuYW1lOiJkaWdpdHMiLGRlc2NyaXB0aW9uOiJBdHRlbXB0IHRvIHR5cGVzZXQgaG9yaXpvbnRhbGx5IGVhY2ggbWF4aW1hbCBzZXF1ZW5jZSBvZiBjb25zZWN1dGl2ZSBBU0NJSSBkaWdpdHMgKFUrMDAzMC1VKzAwMzkpIHRoYXQgaGFzIGFzIG1hbnkgb3IgZmV3ZXIgY2hhcmFjdGVycyB0aGFuIHRoZSBzcGVjaWZpZWQgaW50ZWdlciBzdWNoIHRoYXQgaXQgdGFrZXMgdXAgdGhlIHNwYWNlIG9mIGEgc2luZ2xlIGNoYXJhY3RlciB3aXRoaW4gdGhlIHZlcnRpY2FsIGxpbmUgYm94LiJ9LHtuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiTm8gc3BlY2lhbCBwcm9jZXNzaW5nLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlRoaXMgcHJvcGVydHkgc3BlY2lmaWVzIHRoZSBjb21iaW5hdGlvbiBvZiBtdWx0aXBsZSBjaGFyYWN0ZXJzIGludG8gdGhlIHNwYWNlIG9mIGEgc2luZ2xlIGNoYXJhY3Rlci4iLHJlc3RyaWN0aW9uczpbImVudW0iLCJpbnRlZ2VyIl19LHtuYW1lOiItbXMtdGV4dC1qdXN0aWZ5Iixicm93c2VyczpbIkUiLCJJRTgiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiVGhlIFVBIGRldGVybWluZXMgdGhlIGp1c3RpZmljYXRpb24gYWxnb3JpdGhtIHRvIGZvbGxvdywgYmFzZWQgb24gYSBiYWxhbmNlIGJldHdlZW4gcGVyZm9ybWFuY2UgYW5kIGFkZXF1YXRlIHByZXNlbnRhdGlvbiBxdWFsaXR5LiJ9LHtuYW1lOiJkaXN0cmlidXRlIixkZXNjcmlwdGlvbjoiSnVzdGlmaWNhdGlvbiBwcmltYXJpbHkgY2hhbmdlcyBzcGFjaW5nIGJvdGggYXQgd29yZCBzZXBhcmF0b3JzIGFuZCBhdCBncmFwaGVtZSBjbHVzdGVyIGJvdW5kYXJpZXMgaW4gYWxsIHNjcmlwdHMgZXhjZXB0IHRob3NlIGluIHRoZSBjb25uZWN0ZWQgYW5kIGN1cnNpdmUgZ3JvdXBzLiBUaGlzIHZhbHVlIGlzIHNvbWV0aW1lcyB1c2VkIGluIGUuZy4gSmFwYW5lc2UsIG9mdGVuIHdpdGggdGhlICd0ZXh0LWFsaWduLWxhc3QnIHByb3BlcnR5LiJ9LHtuYW1lOiJpbnRlci1jbHVzdGVyIixkZXNjcmlwdGlvbjoiSnVzdGlmaWNhdGlvbiBwcmltYXJpbHkgY2hhbmdlcyBzcGFjaW5nIGF0IHdvcmQgc2VwYXJhdG9ycyBhbmQgYXQgZ3JhcGhlbWUgY2x1c3RlciBib3VuZGFyaWVzIGluIGNsdXN0ZXJlZCBzY3JpcHRzLiBUaGlzIHZhbHVlIGlzIHR5cGljYWxseSB1c2VkIGZvciBTb3V0aGVhc3QgQXNpYW4gc2NyaXB0cyBzdWNoIGFzIFRoYWkuIn0se25hbWU6ImludGVyLWlkZW9ncmFwaCIsZGVzY3JpcHRpb246Ikp1c3RpZmljYXRpb24gcHJpbWFyaWx5IGNoYW5nZXMgc3BhY2luZyBhdCB3b3JkIHNlcGFyYXRvcnMgYW5kIGF0IGludGVyLWdyYXBoZW1pYyBib3VuZGFyaWVzIGluIHNjcmlwdHMgdGhhdCB1c2Ugbm8gd29yZCBzcGFjZXMuIFRoaXMgdmFsdWUgaXMgdHlwaWNhbGx5IHVzZWQgZm9yIENKSyBsYW5ndWFnZXMuIn0se25hbWU6ImludGVyLXdvcmQiLGRlc2NyaXB0aW9uOiJKdXN0aWZpY2F0aW9uIHByaW1hcmlseSBjaGFuZ2VzIHNwYWNpbmcgYXQgd29yZCBzZXBhcmF0b3JzLiBUaGlzIHZhbHVlIGlzIHR5cGljYWxseSB1c2VkIGZvciBsYW5ndWFnZXMgdGhhdCBzZXBhcmF0ZSB3b3JkcyB1c2luZyBzcGFjZXMsIGxpa2UgRW5nbGlzaCBvciAoc29tZXRpbWVzKSBLb3JlYW4uIn0se25hbWU6Imthc2hpZGEiLGRlc2NyaXB0aW9uOiJKdXN0aWZpY2F0aW9uIHByaW1hcmlseSBzdHJldGNoZXMgQXJhYmljIGFuZCByZWxhdGVkIHNjcmlwdHMgdGhyb3VnaCB0aGUgdXNlIG9mIGthc2hpZGEgb3Igb3RoZXIgY2FsbGlncmFwaGljIGVsb25nYXRpb24uIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU2VsZWN0cyB0aGUganVzdGlmaWNhdGlvbiBhbGdvcml0aG0gdXNlZCB3aGVuICd0ZXh0LWFsaWduJyBpcyBzZXQgdG8gJ2p1c3RpZnknLiBUaGUgcHJvcGVydHkgYXBwbGllcyB0byBibG9jayBjb250YWluZXJzLCBidXQgdGhlIFVBIG1heSAoYnV0IGlzIG5vdCByZXF1aXJlZCB0bykgYWxzbyBzdXBwb3J0IGl0IG9uIGlubGluZSBlbGVtZW50cy4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tcy10ZXh0LWthc2hpZGEtc3BhY2UiLGJyb3dzZXJzOlsiRSIsIklFMTAiXSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlNldHMgb3IgcmV0cmlldmVzIHRoZSByYXRpbyBvZiBrYXNoaWRhIGV4cGFuc2lvbiB0byB3aGl0ZSBzcGFjZSBleHBhbnNpb24gd2hlbiBqdXN0aWZ5aW5nIGxpbmVzIG9mIHRleHQgaW4gdGhlIG9iamVjdC4iLHJlc3RyaWN0aW9uczpbInBlcmNlbnRhZ2UiXX0se25hbWU6Ii1tcy10ZXh0LW92ZXJmbG93Iixicm93c2VyczpbIklFMTAiXSx2YWx1ZXM6W3tuYW1lOiJjbGlwIixkZXNjcmlwdGlvbjoiQ2xpcCBpbmxpbmUgY29udGVudCB0aGF0IG92ZXJmbG93cy4gQ2hhcmFjdGVycyBtYXkgYmUgb25seSBwYXJ0aWFsbHkgcmVuZGVyZWQuIn0se25hbWU6ImVsbGlwc2lzIixkZXNjcmlwdGlvbjoiUmVuZGVyIGFuIGVsbGlwc2lzIGNoYXJhY3RlciAoVSsyMDI2KSB0byByZXByZXNlbnQgY2xpcHBlZCBpbmxpbmUgY29udGVudC4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJUZXh0IGNhbiBvdmVyZmxvdyBmb3IgZXhhbXBsZSB3aGVuIGl0IGlzIHByZXZlbnRlZCBmcm9tIHdyYXBwaW5nIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItbXMtdGV4dC1zaXplLWFkanVzdCIsYnJvd3NlcnM6WyJFIiwiSUUxMCJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJSZW5kZXJlcnMgbXVzdCB1c2UgdGhlIGRlZmF1bHQgc2l6ZSBhZGp1c3RtZW50IHdoZW4gZGlzcGxheWluZyBvbiBhIHNtYWxsIGRldmljZS4ifSx7bmFtZToibm9uZSIsZGVzY3JpcHRpb246IlJlbmRlcmVycyBtdXN0IG5vdCBkbyBzaXplIGFkanVzdG1lbnQgd2hlbiBkaXNwbGF5aW5nIG9uIGEgc21hbGwgZGV2aWNlLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIHNpemUgYWRqdXN0bWVudCBmb3IgZGlzcGxheWluZyB0ZXh0IGNvbnRlbnQgaW4gbW9iaWxlIGJyb3dzZXJzLiIscmVzdHJpY3Rpb25zOlsiZW51bSIsInBlcmNlbnRhZ2UiXX0se25hbWU6Ii1tcy10ZXh0LXVuZGVybGluZS1wb3NpdGlvbiIsYnJvd3NlcnM6WyJFIiwiSUUxMCJdLHZhbHVlczpbe25hbWU6ImFscGhhYmV0aWMiLGRlc2NyaXB0aW9uOiJUaGUgdW5kZXJsaW5lIGlzIGFsaWduZWQgd2l0aCB0aGUgYWxwaGFiZXRpYyBiYXNlbGluZS4gSW4gdGhpcyBjYXNlIHRoZSB1bmRlcmxpbmUgaXMgbGlrZWx5IHRvIGNyb3NzIHNvbWUgZGVzY2VuZGVycy4ifSx7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IlRoZSB1c2VyIGFnZW50IG1heSB1c2UgYW55IGFsZ29yaXRobSB0byBkZXRlcm1pbmUgdGhlIHVuZGVybGluZSdzIHBvc2l0aW9uLiBJbiBob3Jpem9udGFsIGxpbmUgbGF5b3V0LCB0aGUgdW5kZXJsaW5lIHNob3VsZCBiZSBhbGlnbmVkIGFzIGZvciBhbHBoYWJldGljLiBJbiB2ZXJ0aWNhbCBsaW5lIGxheW91dCwgaWYgdGhlIGxhbmd1YWdlIGlzIHNldCB0byBKYXBhbmVzZSBvciBLb3JlYW4sIHRoZSB1bmRlcmxpbmUgc2hvdWxkIGJlIGFsaWduZWQgYXMgZm9yIG92ZXIuIn0se25hbWU6Im92ZXIiLGRlc2NyaXB0aW9uOiJUaGUgdW5kZXJsaW5lIGlzIGFsaWduZWQgd2l0aCB0aGUgJ3RvcCcgKHJpZ2h0IGluIHZlcnRpY2FsIHdyaXRpbmcpIGVkZ2Ugb2YgdGhlIGVsZW1lbnQncyBlbS1ib3guIEluIHRoaXMgbW9kZSwgYW4gb3ZlcmxpbmUgYWxzbyBzd2l0Y2hlcyBzaWRlcy4ifSx7bmFtZToidW5kZXIiLGRlc2NyaXB0aW9uOiJUaGUgdW5kZXJsaW5lIGlzIGFsaWduZWQgd2l0aCB0aGUgJ2JvdHRvbScgKGxlZnQgaW4gdmVydGljYWwgd3JpdGluZykgZWRnZSBvZiB0aGUgZWxlbWVudCdzIGVtLWJveC4gSW4gdGhpcyBjYXNlIHRoZSB1bmRlcmxpbmUgdXN1YWxseSBkb2VzIG5vdCBjcm9zcyB0aGUgZGVzY2VuZGVycy4gVGhpcyBpcyBzb21ldGltZXMgY2FsbGVkICdhY2NvdW50aW5nJyB1bmRlcmxpbmUuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU2V0cyB0aGUgcG9zaXRpb24gb2YgYW4gdW5kZXJsaW5lIHNwZWNpZmllZCBvbiB0aGUgc2FtZSBlbGVtZW50OiBpdCBkb2VzIG5vdCBhZmZlY3QgdW5kZXJsaW5lcyBzcGVjaWZpZWQgYnkgYW5jZXN0b3IgZWxlbWVudHMuVGhpcyBwcm9wZXJ0eSBpcyB0eXBpY2FsbHkgdXNlZCBpbiB2ZXJ0aWNhbCB3cml0aW5nIGNvbnRleHRzIHN1Y2ggYXMgaW4gSmFwYW5lc2UgZG9jdW1lbnRzIHdoZXJlIGl0IG9mdGVuIGRlc2lyZWQgdG8gaGF2ZSB0aGUgdW5kZXJsaW5lIGFwcGVhciAnb3ZlcicgKHRvIHRoZSByaWdodCBvZikgdGhlIGFmZmVjdGVkIHJ1biBvZiB0ZXh0IixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItbXMtdG91Y2gtYWN0aW9uIixicm93c2VyczpbIklFMTAiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiVGhlIGVsZW1lbnQgaXMgYSBwYXNzaXZlIGVsZW1lbnQsIHdpdGggc2V2ZXJhbCBleGNlcHRpb25zLiJ9LHtuYW1lOiJkb3VibGUtdGFwLXpvb20iLGRlc2NyaXB0aW9uOiJUaGUgZWxlbWVudCB3aWxsIHpvb20gb24gZG91YmxlLXRhcC4ifSx7bmFtZToibWFuaXB1bGF0aW9uIixkZXNjcmlwdGlvbjoiVGhlIGVsZW1lbnQgaXMgYSBtYW5pcHVsYXRpb24tY2F1c2luZyBlbGVtZW50LiJ9LHtuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiVGhlIGVsZW1lbnQgaXMgYSBtYW5pcHVsYXRpb24tYmxvY2tpbmcgZWxlbWVudC4ifSx7bmFtZToicGFuLXgiLGRlc2NyaXB0aW9uOiJUaGUgZWxlbWVudCBwZXJtaXRzIHRvdWNoLWRyaXZlbiBwYW5uaW5nIG9uIHRoZSBob3Jpem9udGFsIGF4aXMuIFRoZSB0b3VjaCBwYW4gaXMgcGVyZm9ybWVkIG9uIHRoZSBuZWFyZXN0IGFuY2VzdG9yIHdpdGggaG9yaXpvbnRhbGx5IHNjcm9sbGFibGUgY29udGVudC4ifSx7bmFtZToicGFuLXkiLGRlc2NyaXB0aW9uOiJUaGUgZWxlbWVudCBwZXJtaXRzIHRvdWNoLWRyaXZlbiBwYW5uaW5nIG9uIHRoZSB2ZXJ0aWNhbCBheGlzLiBUaGUgdG91Y2ggcGFuIGlzIHBlcmZvcm1lZCBvbiB0aGUgbmVhcmVzdCBhbmNlc3RvciB3aXRoIHZlcnRpY2FsbHkgc2Nyb2xsYWJsZSBjb250ZW50LiJ9LHtuYW1lOiJwaW5jaC16b29tIixkZXNjcmlwdGlvbjoiVGhlIGVsZW1lbnQgcGVybWl0cyBwaW5jaC16b29taW5nLiBUaGUgcGluY2gtem9vbSBpcyBwZXJmb3JtZWQgb24gdGhlIG5lYXJlc3QgYW5jZXN0b3Igd2l0aCB6b29tYWJsZSBjb250ZW50LiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkdldHMgb3Igc2V0cyBhIHZhbHVlIHRoYXQgaW5kaWNhdGVzIHdoZXRoZXIgYW5kIGhvdyBhIGdpdmVuIHJlZ2lvbiBjYW4gYmUgbWFuaXB1bGF0ZWQgYnkgdGhlIHVzZXIuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItbXMtdG91Y2gtc2VsZWN0Iixicm93c2VyczpbIkUiLCJJRTEwIl0sdmFsdWVzOlt7bmFtZToiZ3JpcHBlcnMiLGRlc2NyaXB0aW9uOiJHcmlwcGVycyBhcmUgYWx3YXlzIG9uLiJ9LHtuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiR3JpcHBlcnMgYXJlIGFsd2F5cyBvZmYuIn1dLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiZ3JpcHBlcnMgfCBub25lIixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiR2V0cyBvciBzZXRzIGEgdmFsdWUgdGhhdCB0b2dnbGVzIHRoZSAnZ3JpcHBlcicgdmlzdWFsIGVsZW1lbnRzIHRoYXQgZW5hYmxlIHRvdWNoIHRleHQgc2VsZWN0aW9uLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLW1zLXRyYW5zZm9ybSIsYnJvd3NlcnM6WyJJRTktOSJdLHZhbHVlczpbe25hbWU6Im1hdHJpeCgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgMkQgdHJhbnNmb3JtYXRpb24gaW4gdGhlIGZvcm0gb2YgYSB0cmFuc2Zvcm1hdGlvbiBtYXRyaXggb2Ygc2l4IHZhbHVlcy4gbWF0cml4KGEsYixjLGQsZSxmKSBpcyBlcXVpdmFsZW50IHRvIGFwcGx5aW5nIHRoZSB0cmFuc2Zvcm1hdGlvbiBtYXRyaXggW2EgYiBjIGQgZSBmXSJ9LHtuYW1lOiJtYXRyaXgzZCgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgM0QgdHJhbnNmb3JtYXRpb24gYXMgYSA0eDQgaG9tb2dlbmVvdXMgbWF0cml4IG9mIDE2IHZhbHVlcyBpbiBjb2x1bW4tbWFqb3Igb3JkZXIuIn0se25hbWU6Im5vbmUifSx7bmFtZToicm90YXRlKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSAyRCByb3RhdGlvbiBieSB0aGUgYW5nbGUgc3BlY2lmaWVkIGluIHRoZSBwYXJhbWV0ZXIgYWJvdXQgdGhlIG9yaWdpbiBvZiB0aGUgZWxlbWVudCwgYXMgZGVmaW5lZCBieSB0aGUgdHJhbnNmb3JtLW9yaWdpbiBwcm9wZXJ0eS4ifSx7bmFtZToicm90YXRlM2QoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIGNsb2Nrd2lzZSAzRCByb3RhdGlvbiBieSB0aGUgYW5nbGUgc3BlY2lmaWVkIGluIGxhc3QgcGFyYW1ldGVyIGFib3V0IHRoZSBbeCx5LHpdIGRpcmVjdGlvbiB2ZWN0b3IgZGVzY3JpYmVkIGJ5IHRoZSBmaXJzdCAzIHBhcmFtZXRlcnMuIn0se25hbWU6InJvdGF0ZVgoJ2FuZ2xlJykiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSBjbG9ja3dpc2Ugcm90YXRpb24gYnkgdGhlIGdpdmVuIGFuZ2xlIGFib3V0IHRoZSBYIGF4aXMuIn0se25hbWU6InJvdGF0ZVkoJ2FuZ2xlJykiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSBjbG9ja3dpc2Ugcm90YXRpb24gYnkgdGhlIGdpdmVuIGFuZ2xlIGFib3V0IHRoZSBZIGF4aXMuIn0se25hbWU6InJvdGF0ZVooJ2FuZ2xlJykiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSBjbG9ja3dpc2Ugcm90YXRpb24gYnkgdGhlIGdpdmVuIGFuZ2xlIGFib3V0IHRoZSBaIGF4aXMuIn0se25hbWU6InNjYWxlKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSAyRCBzY2FsZSBvcGVyYXRpb24gYnkgdGhlIFtzeCxzeV0gc2NhbGluZyB2ZWN0b3IgZGVzY3JpYmVkIGJ5IHRoZSAyIHBhcmFtZXRlcnMuIElmIHRoZSBzZWNvbmQgcGFyYW1ldGVyIGlzIG5vdCBwcm92aWRlZCwgaXQgaXMgdGFrZXMgYSB2YWx1ZSBlcXVhbCB0byB0aGUgZmlyc3QuIn0se25hbWU6InNjYWxlM2QoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIDNEIHNjYWxlIG9wZXJhdGlvbiBieSB0aGUgW3N4LHN5LHN6XSBzY2FsaW5nIHZlY3RvciBkZXNjcmliZWQgYnkgdGhlIDMgcGFyYW1ldGVycy4ifSx7bmFtZToic2NhbGVYKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSBzY2FsZSBvcGVyYXRpb24gdXNpbmcgdGhlIFtzeCwxXSBzY2FsaW5nIHZlY3Rvciwgd2hlcmUgc3ggaXMgZ2l2ZW4gYXMgdGhlIHBhcmFtZXRlci4ifSx7bmFtZToic2NhbGVZKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSBzY2FsZSBvcGVyYXRpb24gdXNpbmcgdGhlIFtzeSwxXSBzY2FsaW5nIHZlY3Rvciwgd2hlcmUgc3kgaXMgZ2l2ZW4gYXMgdGhlIHBhcmFtZXRlci4ifSx7bmFtZToic2NhbGVaKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSBzY2FsZSBvcGVyYXRpb24gdXNpbmcgdGhlIFsxLDEsc3pdIHNjYWxpbmcgdmVjdG9yLCB3aGVyZSBzeiBpcyBnaXZlbiBhcyB0aGUgcGFyYW1ldGVyLiJ9LHtuYW1lOiJza2V3KCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSBza2V3IHRyYW5zZm9ybWF0aW9uIGFsb25nIHRoZSBYIGFuZCBZIGF4ZXMuIFRoZSBmaXJzdCBhbmdsZSBwYXJhbWV0ZXIgc3BlY2lmaWVzIHRoZSBza2V3IG9uIHRoZSBYIGF4aXMuIFRoZSBzZWNvbmQgYW5nbGUgcGFyYW1ldGVyIHNwZWNpZmllcyB0aGUgc2tldyBvbiB0aGUgWSBheGlzLiBJZiB0aGUgc2Vjb25kIHBhcmFtZXRlciBpcyBub3QgZ2l2ZW4gdGhlbiBhIHZhbHVlIG9mIDAgaXMgdXNlZCBmb3IgdGhlIFkgYW5nbGUgKGllOiBubyBza2V3IG9uIHRoZSBZIGF4aXMpLiJ9LHtuYW1lOiJza2V3WCgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgc2tldyB0cmFuc2Zvcm1hdGlvbiBhbG9uZyB0aGUgWCBheGlzIGJ5IHRoZSBnaXZlbiBhbmdsZS4ifSx7bmFtZToic2tld1koKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIHNrZXcgdHJhbnNmb3JtYXRpb24gYWxvbmcgdGhlIFkgYXhpcyBieSB0aGUgZ2l2ZW4gYW5nbGUuIn0se25hbWU6InRyYW5zbGF0ZSgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgMkQgdHJhbnNsYXRpb24gYnkgdGhlIHZlY3RvciBbdHgsIHR5XSwgd2hlcmUgdHggaXMgdGhlIGZpcnN0IHRyYW5zbGF0aW9uLXZhbHVlIHBhcmFtZXRlciBhbmQgdHkgaXMgdGhlIG9wdGlvbmFsIHNlY29uZCB0cmFuc2xhdGlvbi12YWx1ZSBwYXJhbWV0ZXIuIn0se25hbWU6InRyYW5zbGF0ZTNkKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSAzRCB0cmFuc2xhdGlvbiBieSB0aGUgdmVjdG9yIFt0eCx0eSx0el0sIHdpdGggdHgsIHR5IGFuZCB0eiBiZWluZyB0aGUgZmlyc3QsIHNlY29uZCBhbmQgdGhpcmQgdHJhbnNsYXRpb24tdmFsdWUgcGFyYW1ldGVycyByZXNwZWN0aXZlbHkuIn0se25hbWU6InRyYW5zbGF0ZVgoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIHRyYW5zbGF0aW9uIGJ5IHRoZSBnaXZlbiBhbW91bnQgaW4gdGhlIFggZGlyZWN0aW9uLiJ9LHtuYW1lOiJ0cmFuc2xhdGVZKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSB0cmFuc2xhdGlvbiBieSB0aGUgZ2l2ZW4gYW1vdW50IGluIHRoZSBZIGRpcmVjdGlvbi4ifSx7bmFtZToidHJhbnNsYXRlWigpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgdHJhbnNsYXRpb24gYnkgdGhlIGdpdmVuIGFtb3VudCBpbiB0aGUgWiBkaXJlY3Rpb24uIE5vdGUgdGhhdCBwZXJjZW50YWdlIHZhbHVlcyBhcmUgbm90IGFsbG93ZWQgaW4gdGhlIHRyYW5zbGF0ZVogdHJhbnNsYXRpb24tdmFsdWUsIGFuZCBpZiBwcmVzZW50IGFyZSBldmFsdWF0ZWQgYXMgMC4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJBIHR3by1kaW1lbnNpb25hbCB0cmFuc2Zvcm1hdGlvbiBpcyBhcHBsaWVkIHRvIGFuIGVsZW1lbnQgdGhyb3VnaCB0aGUgJ3RyYW5zZm9ybScgcHJvcGVydHkuIFRoaXMgcHJvcGVydHkgY29udGFpbnMgYSBsaXN0IG9mIHRyYW5zZm9ybSBmdW5jdGlvbnMgc2ltaWxhciB0byB0aG9zZSBhbGxvd2VkIGJ5IFNWRy4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tcy10cmFuc2Zvcm0tb3JpZ2luIixicm93c2VyczpbIklFOS05Il0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJFc3RhYmxpc2hlcyB0aGUgb3JpZ2luIG9mIHRyYW5zZm9ybWF0aW9uIGZvciBhbiBlbGVtZW50LiIscmVzdHJpY3Rpb25zOlsicG9zaXRpb24iLCJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiItbXMtdHJhbnNmb3JtLW9yaWdpbi14Iixicm93c2VyczpbIklFMTAiXSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlRoZSB4IGNvb3JkaW5hdGUgb2YgdGhlIG9yaWdpbiBmb3IgdHJhbnNmb3JtcyBhcHBsaWVkIHRvIGFuIGVsZW1lbnQgd2l0aCByZXNwZWN0IHRvIGl0cyBib3JkZXIgYm94LiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToiLW1zLXRyYW5zZm9ybS1vcmlnaW4teSIsYnJvd3NlcnM6WyJJRTEwIl0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJUaGUgeSBjb29yZGluYXRlIG9mIHRoZSBvcmlnaW4gZm9yIHRyYW5zZm9ybXMgYXBwbGllZCB0byBhbiBlbGVtZW50IHdpdGggcmVzcGVjdCB0byBpdHMgYm9yZGVyIGJveC4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6Ii1tcy10cmFuc2Zvcm0tb3JpZ2luLXoiLGJyb3dzZXJzOlsiSUUxMCJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiVGhlIHogY29vcmRpbmF0ZSBvZiB0aGUgb3JpZ2luIGZvciB0cmFuc2Zvcm1zIGFwcGxpZWQgdG8gYW4gZWxlbWVudCB3aXRoIHJlc3BlY3QgdG8gaXRzIGJvcmRlciBib3guIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiItbXMtdXNlci1zZWxlY3QiLGJyb3dzZXJzOlsiRSIsIklFMTAiXSx2YWx1ZXM6W3tuYW1lOiJlbGVtZW50In0se25hbWU6Im5vbmUifSx7bmFtZToidGV4dCJ9XSxzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6Im5vbmUgfCBlbGVtZW50IHwgdGV4dCIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246IkNvbnRyb2xzIHRoZSBhcHBlYXJhbmNlIG9mIHNlbGVjdGlvbi4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tcy13b3JkLWJyZWFrIixicm93c2VyczpbIklFOCJdLHZhbHVlczpbe25hbWU6ImJyZWFrLWFsbCIsZGVzY3JpcHRpb246IkxpbmVzIG1heSBicmVhayBiZXR3ZWVuIGFueSB0d28gZ3JhcGhlbWUgY2x1c3RlcnMgZm9yIG5vbi1DSksgc2NyaXB0cy4ifSx7bmFtZToia2VlcC1hbGwiLGRlc2NyaXB0aW9uOiJCbG9jayBjaGFyYWN0ZXJzIGNhbiBubyBsb25nZXIgY3JlYXRlIGltcGxpZWQgYnJlYWsgcG9pbnRzLiJ9LHtuYW1lOiJub3JtYWwiLGRlc2NyaXB0aW9uOiJCcmVha3Mgbm9uLUNKSyBzY3JpcHRzIGFjY29yZGluZyB0byB0aGVpciBvd24gcnVsZXMuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGxpbmUgYnJlYWsgb3Bwb3J0dW5pdGllcyBmb3Igbm9uLUNKSyBzY3JpcHRzLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLW1zLXdvcmQtd3JhcCIsYnJvd3NlcnM6WyJJRTgiXSx2YWx1ZXM6W3tuYW1lOiJicmVhay13b3JkIixkZXNjcmlwdGlvbjoiQW4gdW5icmVha2FibGUgJ3dvcmQnIG1heSBiZSBicm9rZW4gYXQgYW4gYXJiaXRyYXJ5IHBvaW50IGlmIHRoZXJlIGFyZSBubyBvdGhlcndpc2UtYWNjZXB0YWJsZSBicmVhayBwb2ludHMgaW4gdGhlIGxpbmUuIn0se25hbWU6Im5vcm1hbCIsZGVzY3JpcHRpb246IkxpbmVzIG1heSBicmVhayBvbmx5IGF0IGFsbG93ZWQgYnJlYWsgcG9pbnRzLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlNwZWNpZmllcyB3aGV0aGVyIHRoZSBVQSBtYXkgYnJlYWsgd2l0aGluIGEgd29yZCB0byBwcmV2ZW50IG92ZXJmbG93IHdoZW4gYW4gb3RoZXJ3aXNlLXVuYnJlYWthYmxlIHN0cmluZyBpcyB0b28gbG9uZyB0byBmaXQuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItbXMtd3JhcC1mbG93Iixicm93c2VyczpbIkUiLCJJRTEwIl0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IkZvciBmbG9hdHMgYW4gZXhjbHVzaW9uIGlzIGNyZWF0ZWQsIGZvciBhbGwgb3RoZXIgZWxlbWVudHMgYW4gZXhjbHVzaW9uIGlzIG5vdCBjcmVhdGVkLiJ9LHtuYW1lOiJib3RoIixkZXNjcmlwdGlvbjoiSW5saW5lIGZsb3cgY29udGVudCBjYW4gZmxvdyBvbiBhbGwgc2lkZXMgb2YgdGhlIGV4Y2x1c2lvbi4ifSx7bmFtZToiY2xlYXIiLGRlc2NyaXB0aW9uOiJJbmxpbmUgZmxvdyBjb250ZW50IGNhbiBvbmx5IHdyYXAgb24gdG9wIGFuZCBib3R0b20gb2YgdGhlIGV4Y2x1c2lvbiBhbmQgbXVzdCBsZWF2ZSB0aGUgYXJlYXMgdG8gdGhlIHN0YXJ0IGFuZCBlbmQgZWRnZXMgb2YgdGhlIGV4Y2x1c2lvbiBib3ggZW1wdHkuIn0se25hbWU6ImVuZCIsZGVzY3JpcHRpb246IklubGluZSBmbG93IGNvbnRlbnQgY2FuIHdyYXAgb24gdGhlIGVuZCBzaWRlIG9mIHRoZSBleGNsdXNpb24gYXJlYSBidXQgbXVzdCBsZWF2ZSB0aGUgYXJlYSB0byB0aGUgc3RhcnQgZWRnZSBvZiB0aGUgZXhjbHVzaW9uIGFyZWEgZW1wdHkuIn0se25hbWU6Im1heGltdW0iLGRlc2NyaXB0aW9uOiJJbmxpbmUgZmxvdyBjb250ZW50IGNhbiB3cmFwIG9uIHRoZSBzaWRlIG9mIHRoZSBleGNsdXNpb24gd2l0aCB0aGUgbGFyZ2VzdCBhdmFpbGFibGUgc3BhY2UgZm9yIHRoZSBnaXZlbiBsaW5lLCBhbmQgbXVzdCBsZWF2ZSB0aGUgb3RoZXIgc2lkZSBvZiB0aGUgZXhjbHVzaW9uIGVtcHR5LiJ9LHtuYW1lOiJtaW5pbXVtIixkZXNjcmlwdGlvbjoiSW5saW5lIGZsb3cgY29udGVudCBjYW4gZmxvdyBhcm91bmQgdGhlIGVkZ2Ugb2YgdGhlIGV4Y2x1c2lvbiB3aXRoIHRoZSBzbWFsbGVzdCBhdmFpbGFibGUgc3BhY2Ugd2l0aGluIHRoZSBmbG93IGNvbnRlbnQncyBjb250YWluaW5nIGJsb2NrLCBhbmQgbXVzdCBsZWF2ZSB0aGUgb3RoZXIgZWRnZSBvZiB0aGUgZXhjbHVzaW9uIGVtcHR5LiJ9LHtuYW1lOiJzdGFydCIsZGVzY3JpcHRpb246IklubGluZSBmbG93IGNvbnRlbnQgY2FuIHdyYXAgb24gdGhlIHN0YXJ0IGVkZ2Ugb2YgdGhlIGV4Y2x1c2lvbiBhcmVhIGJ1dCBtdXN0IGxlYXZlIHRoZSBhcmVhIHRvIGVuZCBlZGdlIG9mIHRoZSBleGNsdXNpb24gYXJlYSBlbXB0eS4ifV0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiJhdXRvIHwgYm90aCB8IHN0YXJ0IHwgZW5kIHwgbWF4aW11bSB8IGNsZWFyIixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiQW4gZWxlbWVudCBiZWNvbWVzIGFuIGV4Y2x1c2lvbiB3aGVuIGl0cyAnd3JhcC1mbG93JyBwcm9wZXJ0eSBoYXMgYSBjb21wdXRlZCB2YWx1ZSBvdGhlciB0aGFuICdhdXRvJy4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tcy13cmFwLW1hcmdpbiIsYnJvd3NlcnM6WyJFIiwiSUUxMCJdLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiPGxlbmd0aD4iLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJHZXRzIG9yIHNldHMgYSB2YWx1ZSB0aGF0IGlzIHVzZWQgdG8gb2Zmc2V0IHRoZSBpbm5lciB3cmFwIHNoYXBlIGZyb20gb3RoZXIgc2hhcGVzLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToiLW1zLXdyYXAtdGhyb3VnaCIsYnJvd3NlcnM6WyJFIiwiSUUxMCJdLHZhbHVlczpbe25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJUaGUgZXhjbHVzaW9uIGVsZW1lbnQgZG9lcyBub3QgaW5oZXJpdCBpdHMgcGFyZW50IG5vZGUncyB3cmFwcGluZyBjb250ZXh0LiBJdHMgZGVzY2VuZGFudHMgYXJlIG9ubHkgc3ViamVjdCB0byBleGNsdXNpb24gc2hhcGVzIGRlZmluZWQgaW5zaWRlIHRoZSBlbGVtZW50LiJ9LHtuYW1lOiJ3cmFwIixkZXNjcmlwdGlvbjoiVGhlIGV4Y2x1c2lvbiBlbGVtZW50IGluaGVyaXRzIGl0cyBwYXJlbnQgbm9kZSdzIHdyYXBwaW5nIGNvbnRleHQuIEl0cyBkZXNjZW5kYW50IGlubGluZSBjb250ZW50IHdyYXBzIGFyb3VuZCBleGNsdXNpb25zIGRlZmluZWQgb3V0c2lkZSB0aGUgZWxlbWVudC4ifV0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiJ3cmFwIHwgbm9uZSIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246IlNwZWNpZmllcyBpZiBhbiBlbGVtZW50IGluaGVyaXRzIGl0cyBwYXJlbnQgd3JhcHBpbmcgY29udGV4dC4gSW4gb3RoZXIgd29yZHMgaWYgaXQgaXMgc3ViamVjdCB0byB0aGUgZXhjbHVzaW9ucyBkZWZpbmVkIG91dHNpZGUgdGhlIGVsZW1lbnQuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItbXMtd3JpdGluZy1tb2RlIixicm93c2VyczpbIklFOCJdLHZhbHVlczpbe25hbWU6ImJ0LWxyIn0se25hbWU6ImJ0LXJsIn0se25hbWU6ImxyLWJ0In0se25hbWU6ImxyLXRiIn0se25hbWU6InJsLWJ0In0se25hbWU6InJsLXRiIn0se25hbWU6InRiLWxyIn0se25hbWU6InRiLXJsIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU2hvcnRoYW5kIHByb3BlcnR5IGZvciBib3RoICdkaXJlY3Rpb24nIGFuZCAnYmxvY2stcHJvZ3Jlc3Npb24nLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLW1zLXpvb20iLGJyb3dzZXJzOlsiSUU4Il0sdmFsdWVzOlt7bmFtZToibm9ybWFsIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU2V0cyBvciByZXRyaWV2ZXMgdGhlIG1hZ25pZmljYXRpb24gc2NhbGUgb2YgdGhlIG9iamVjdC4iLHJlc3RyaWN0aW9uczpbImVudW0iLCJpbnRlZ2VyIiwibnVtYmVyIiwicGVyY2VudGFnZSJdfSx7bmFtZToiLW1zLXpvb20tYW5pbWF0aW9uIixicm93c2VyczpbIklFMTAiXSx2YWx1ZXM6W3tuYW1lOiJkZWZhdWx0In0se25hbWU6Im5vbmUifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJHZXRzIG9yIHNldHMgYSB2YWx1ZSB0aGF0IGluZGljYXRlcyB3aGV0aGVyIGFuIGFuaW1hdGlvbiBpcyB1c2VkIHdoZW4gem9vbWluZy4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Im5hdi1kb3duIixicm93c2VyczpbIk85LjUiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiVGhlIHVzZXIgYWdlbnQgYXV0b21hdGljYWxseSBkZXRlcm1pbmVzIHdoaWNoIGVsZW1lbnQgdG8gbmF2aWdhdGUgdGhlIGZvY3VzIHRvIGluIHJlc3BvbnNlIHRvIGRpcmVjdGlvbmFsIG5hdmlnYXRpb25hbCBpbnB1dC4ifSx7bmFtZToiY3VycmVudCIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IHRoZSB1c2VyIGFnZW50IHNob3VsZCB0YXJnZXQgdGhlIGZyYW1lIHRoYXQgdGhlIGVsZW1lbnQgaXMgaW4uIn0se25hbWU6InJvb3QiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCB0aGUgdXNlciBhZ2VudCBzaG91bGQgdGFyZ2V0IHRoZSBmdWxsIHdpbmRvdy4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJQcm92aWRlcyBhbiB3YXkgdG8gY29udHJvbCBkaXJlY3Rpb25hbCBmb2N1cyBuYXZpZ2F0aW9uLiIscmVzdHJpY3Rpb25zOlsiZW51bSIsImlkZW50aWZpZXIiLCJzdHJpbmciXX0se25hbWU6Im5hdi1pbmRleCIsYnJvd3NlcnM6WyJPOS41Il0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IlRoZSBlbGVtZW50J3Mgc2VxdWVudGlhbCBuYXZpZ2F0aW9uIG9yZGVyIGlzIGFzc2lnbmVkIGF1dG9tYXRpY2FsbHkgYnkgdGhlIHVzZXIgYWdlbnQuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiUHJvdmlkZXMgYW4gaW5wdXQtbWV0aG9kLW5ldXRyYWwgd2F5IG9mIHNwZWNpZnlpbmcgdGhlIHNlcXVlbnRpYWwgbmF2aWdhdGlvbiBvcmRlciAoYWxzbyBrbm93biBhcyAndGFiYmluZyBvcmRlcicpLiIscmVzdHJpY3Rpb25zOlsibnVtYmVyIl19LHtuYW1lOiJuYXYtbGVmdCIsYnJvd3NlcnM6WyJPOS41Il0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IlRoZSB1c2VyIGFnZW50IGF1dG9tYXRpY2FsbHkgZGV0ZXJtaW5lcyB3aGljaCBlbGVtZW50IHRvIG5hdmlnYXRlIHRoZSBmb2N1cyB0byBpbiByZXNwb25zZSB0byBkaXJlY3Rpb25hbCBuYXZpZ2F0aW9uYWwgaW5wdXQuIn0se25hbWU6ImN1cnJlbnQiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCB0aGUgdXNlciBhZ2VudCBzaG91bGQgdGFyZ2V0IHRoZSBmcmFtZSB0aGF0IHRoZSBlbGVtZW50IGlzIGluLiJ9LHtuYW1lOiJyb290IixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgdGhlIHVzZXIgYWdlbnQgc2hvdWxkIHRhcmdldCB0aGUgZnVsbCB3aW5kb3cuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiUHJvdmlkZXMgYW4gd2F5IHRvIGNvbnRyb2wgZGlyZWN0aW9uYWwgZm9jdXMgbmF2aWdhdGlvbi4iLHJlc3RyaWN0aW9uczpbImVudW0iLCJpZGVudGlmaWVyIiwic3RyaW5nIl19LHtuYW1lOiJuYXYtcmlnaHQiLGJyb3dzZXJzOlsiTzkuNSJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJUaGUgdXNlciBhZ2VudCBhdXRvbWF0aWNhbGx5IGRldGVybWluZXMgd2hpY2ggZWxlbWVudCB0byBuYXZpZ2F0ZSB0aGUgZm9jdXMgdG8gaW4gcmVzcG9uc2UgdG8gZGlyZWN0aW9uYWwgbmF2aWdhdGlvbmFsIGlucHV0LiJ9LHtuYW1lOiJjdXJyZW50IixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgdGhlIHVzZXIgYWdlbnQgc2hvdWxkIHRhcmdldCB0aGUgZnJhbWUgdGhhdCB0aGUgZWxlbWVudCBpcyBpbi4ifSx7bmFtZToicm9vdCIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IHRoZSB1c2VyIGFnZW50IHNob3VsZCB0YXJnZXQgdGhlIGZ1bGwgd2luZG93LiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlByb3ZpZGVzIGFuIHdheSB0byBjb250cm9sIGRpcmVjdGlvbmFsIGZvY3VzIG5hdmlnYXRpb24uIixyZXN0cmljdGlvbnM6WyJlbnVtIiwiaWRlbnRpZmllciIsInN0cmluZyJdfSx7bmFtZToibmF2LXVwIixicm93c2VyczpbIk85LjUiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiVGhlIHVzZXIgYWdlbnQgYXV0b21hdGljYWxseSBkZXRlcm1pbmVzIHdoaWNoIGVsZW1lbnQgdG8gbmF2aWdhdGUgdGhlIGZvY3VzIHRvIGluIHJlc3BvbnNlIHRvIGRpcmVjdGlvbmFsIG5hdmlnYXRpb25hbCBpbnB1dC4ifSx7bmFtZToiY3VycmVudCIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IHRoZSB1c2VyIGFnZW50IHNob3VsZCB0YXJnZXQgdGhlIGZyYW1lIHRoYXQgdGhlIGVsZW1lbnQgaXMgaW4uIn0se25hbWU6InJvb3QiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCB0aGUgdXNlciBhZ2VudCBzaG91bGQgdGFyZ2V0IHRoZSBmdWxsIHdpbmRvdy4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJQcm92aWRlcyBhbiB3YXkgdG8gY29udHJvbCBkaXJlY3Rpb25hbCBmb2N1cyBuYXZpZ2F0aW9uLiIscmVzdHJpY3Rpb25zOlsiZW51bSIsImlkZW50aWZpZXIiLCJzdHJpbmciXX0se25hbWU6Im5lZ2F0aXZlIixicm93c2VyczpbIkZGMzMiXSxhdFJ1bGU6IkBjb3VudGVyLXN0eWxlIixzeW50YXg6IjxzeW1ib2w+IDxzeW1ib2w+PyIscmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJAY291bnRlci1zdHlsZSBkZXNjcmlwdG9yLiBEZWZpbmVzIGhvdyB0byBhbHRlciB0aGUgcmVwcmVzZW50YXRpb24gd2hlbiB0aGUgY291bnRlciB2YWx1ZSBpcyBuZWdhdGl2ZS4iLHJlc3RyaWN0aW9uczpbImltYWdlIiwiaWRlbnRpZmllciIsInN0cmluZyJdfSx7bmFtZToiLW8tYW5pbWF0aW9uIixicm93c2VyczpbIk8xMiJdLHZhbHVlczpbe25hbWU6ImFsdGVybmF0ZSIsZGVzY3JpcHRpb246IlRoZSBhbmltYXRpb24gY3ljbGUgaXRlcmF0aW9ucyB0aGF0IGFyZSBvZGQgY291bnRzIGFyZSBwbGF5ZWQgaW4gdGhlIG5vcm1hbCBkaXJlY3Rpb24sIGFuZCB0aGUgYW5pbWF0aW9uIGN5Y2xlIGl0ZXJhdGlvbnMgdGhhdCBhcmUgZXZlbiBjb3VudHMgYXJlIHBsYXllZCBpbiBhIHJldmVyc2UgZGlyZWN0aW9uLiJ9LHtuYW1lOiJhbHRlcm5hdGUtcmV2ZXJzZSIsZGVzY3JpcHRpb246IlRoZSBhbmltYXRpb24gY3ljbGUgaXRlcmF0aW9ucyB0aGF0IGFyZSBvZGQgY291bnRzIGFyZSBwbGF5ZWQgaW4gdGhlIHJldmVyc2UgZGlyZWN0aW9uLCBhbmQgdGhlIGFuaW1hdGlvbiBjeWNsZSBpdGVyYXRpb25zIHRoYXQgYXJlIGV2ZW4gY291bnRzIGFyZSBwbGF5ZWQgaW4gYSBub3JtYWwgZGlyZWN0aW9uLiJ9LHtuYW1lOiJiYWNrd2FyZHMiLGRlc2NyaXB0aW9uOiJUaGUgYmVnaW5uaW5nIHByb3BlcnR5IHZhbHVlIChhcyBkZWZpbmVkIGluIHRoZSBmaXJzdCBAa2V5ZnJhbWVzIGF0LXJ1bGUpIGlzIGFwcGxpZWQgYmVmb3JlIHRoZSBhbmltYXRpb24gaXMgZGlzcGxheWVkLCBkdXJpbmcgdGhlIHBlcmlvZCBkZWZpbmVkIGJ5ICdhbmltYXRpb24tZGVsYXknLiJ9LHtuYW1lOiJib3RoIixkZXNjcmlwdGlvbjoiQm90aCBmb3J3YXJkcyBhbmQgYmFja3dhcmRzIGZpbGwgbW9kZXMgYXJlIGFwcGxpZWQuIn0se25hbWU6ImZvcndhcmRzIixkZXNjcmlwdGlvbjoiVGhlIGZpbmFsIHByb3BlcnR5IHZhbHVlIChhcyBkZWZpbmVkIGluIHRoZSBsYXN0IEBrZXlmcmFtZXMgYXQtcnVsZSkgaXMgbWFpbnRhaW5lZCBhZnRlciB0aGUgYW5pbWF0aW9uIGNvbXBsZXRlcy4ifSx7bmFtZToiaW5maW5pdGUiLGRlc2NyaXB0aW9uOiJDYXVzZXMgdGhlIGFuaW1hdGlvbiB0byByZXBlYXQgZm9yZXZlci4ifSx7bmFtZToibm9uZSIsZGVzY3JpcHRpb246Ik5vIGFuaW1hdGlvbiBpcyBwZXJmb3JtZWQifSx7bmFtZToibm9ybWFsIixkZXNjcmlwdGlvbjoiTm9ybWFsIHBsYXliYWNrLiJ9LHtuYW1lOiJyZXZlcnNlIixkZXNjcmlwdGlvbjoiQWxsIGl0ZXJhdGlvbnMgb2YgdGhlIGFuaW1hdGlvbiBhcmUgcGxheWVkIGluIHRoZSByZXZlcnNlIGRpcmVjdGlvbiBmcm9tIHRoZSB3YXkgdGhleSB3ZXJlIHNwZWNpZmllZC4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJTaG9ydGhhbmQgcHJvcGVydHkgY29tYmluZXMgc2l4IG9mIHRoZSBhbmltYXRpb24gcHJvcGVydGllcyBpbnRvIGEgc2luZ2xlIHByb3BlcnR5LiIscmVzdHJpY3Rpb25zOlsidGltZSIsImVudW0iLCJ0aW1pbmctZnVuY3Rpb24iLCJpZGVudGlmaWVyIiwibnVtYmVyIl19LHtuYW1lOiItby1hbmltYXRpb24tZGVsYXkiLGJyb3dzZXJzOlsiTzEyIl0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJEZWZpbmVzIHdoZW4gdGhlIGFuaW1hdGlvbiB3aWxsIHN0YXJ0LiIscmVzdHJpY3Rpb25zOlsidGltZSJdfSx7bmFtZToiLW8tYW5pbWF0aW9uLWRpcmVjdGlvbiIsYnJvd3NlcnM6WyJPMTIiXSx2YWx1ZXM6W3tuYW1lOiJhbHRlcm5hdGUiLGRlc2NyaXB0aW9uOiJUaGUgYW5pbWF0aW9uIGN5Y2xlIGl0ZXJhdGlvbnMgdGhhdCBhcmUgb2RkIGNvdW50cyBhcmUgcGxheWVkIGluIHRoZSBub3JtYWwgZGlyZWN0aW9uLCBhbmQgdGhlIGFuaW1hdGlvbiBjeWNsZSBpdGVyYXRpb25zIHRoYXQgYXJlIGV2ZW4gY291bnRzIGFyZSBwbGF5ZWQgaW4gYSByZXZlcnNlIGRpcmVjdGlvbi4ifSx7bmFtZToiYWx0ZXJuYXRlLXJldmVyc2UiLGRlc2NyaXB0aW9uOiJUaGUgYW5pbWF0aW9uIGN5Y2xlIGl0ZXJhdGlvbnMgdGhhdCBhcmUgb2RkIGNvdW50cyBhcmUgcGxheWVkIGluIHRoZSByZXZlcnNlIGRpcmVjdGlvbiwgYW5kIHRoZSBhbmltYXRpb24gY3ljbGUgaXRlcmF0aW9ucyB0aGF0IGFyZSBldmVuIGNvdW50cyBhcmUgcGxheWVkIGluIGEgbm9ybWFsIGRpcmVjdGlvbi4ifSx7bmFtZToibm9ybWFsIixkZXNjcmlwdGlvbjoiTm9ybWFsIHBsYXliYWNrLiJ9LHtuYW1lOiJyZXZlcnNlIixkZXNjcmlwdGlvbjoiQWxsIGl0ZXJhdGlvbnMgb2YgdGhlIGFuaW1hdGlvbiBhcmUgcGxheWVkIGluIHRoZSByZXZlcnNlIGRpcmVjdGlvbiBmcm9tIHRoZSB3YXkgdGhleSB3ZXJlIHNwZWNpZmllZC4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJEZWZpbmVzIHdoZXRoZXIgb3Igbm90IHRoZSBhbmltYXRpb24gc2hvdWxkIHBsYXkgaW4gcmV2ZXJzZSBvbiBhbHRlcm5hdGUgY3ljbGVzLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLW8tYW5pbWF0aW9uLWR1cmF0aW9uIixicm93c2VyczpbIk8xMiJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRGVmaW5lcyB0aGUgbGVuZ3RoIG9mIHRpbWUgdGhhdCBhbiBhbmltYXRpb24gdGFrZXMgdG8gY29tcGxldGUgb25lIGN5Y2xlLiIscmVzdHJpY3Rpb25zOlsidGltZSJdfSx7bmFtZToiLW8tYW5pbWF0aW9uLWZpbGwtbW9kZSIsYnJvd3NlcnM6WyJPMTIiXSx2YWx1ZXM6W3tuYW1lOiJiYWNrd2FyZHMiLGRlc2NyaXB0aW9uOiJUaGUgYmVnaW5uaW5nIHByb3BlcnR5IHZhbHVlIChhcyBkZWZpbmVkIGluIHRoZSBmaXJzdCBAa2V5ZnJhbWVzIGF0LXJ1bGUpIGlzIGFwcGxpZWQgYmVmb3JlIHRoZSBhbmltYXRpb24gaXMgZGlzcGxheWVkLCBkdXJpbmcgdGhlIHBlcmlvZCBkZWZpbmVkIGJ5ICdhbmltYXRpb24tZGVsYXknLiJ9LHtuYW1lOiJib3RoIixkZXNjcmlwdGlvbjoiQm90aCBmb3J3YXJkcyBhbmQgYmFja3dhcmRzIGZpbGwgbW9kZXMgYXJlIGFwcGxpZWQuIn0se25hbWU6ImZvcndhcmRzIixkZXNjcmlwdGlvbjoiVGhlIGZpbmFsIHByb3BlcnR5IHZhbHVlIChhcyBkZWZpbmVkIGluIHRoZSBsYXN0IEBrZXlmcmFtZXMgYXQtcnVsZSkgaXMgbWFpbnRhaW5lZCBhZnRlciB0aGUgYW5pbWF0aW9uIGNvbXBsZXRlcy4ifSx7bmFtZToibm9uZSIsZGVzY3JpcHRpb246IlRoZXJlIGlzIG5vIGNoYW5nZSB0byB0aGUgcHJvcGVydHkgdmFsdWUgYmV0d2VlbiB0aGUgdGltZSB0aGUgYW5pbWF0aW9uIGlzIGFwcGxpZWQgYW5kIHRoZSB0aW1lIHRoZSBhbmltYXRpb24gYmVnaW5zIHBsYXlpbmcgb3IgYWZ0ZXIgdGhlIGFuaW1hdGlvbiBjb21wbGV0ZXMuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRGVmaW5lcyB3aGF0IHZhbHVlcyBhcmUgYXBwbGllZCBieSB0aGUgYW5pbWF0aW9uIG91dHNpZGUgdGhlIHRpbWUgaXQgaXMgZXhlY3V0aW5nLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLW8tYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudCIsYnJvd3NlcnM6WyJPMTIiXSx2YWx1ZXM6W3tuYW1lOiJpbmZpbml0ZSIsZGVzY3JpcHRpb246IkNhdXNlcyB0aGUgYW5pbWF0aW9uIHRvIHJlcGVhdCBmb3JldmVyLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkRlZmluZXMgdGhlIG51bWJlciBvZiB0aW1lcyBhbiBhbmltYXRpb24gY3ljbGUgaXMgcGxheWVkLiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyBvbmUsIG1lYW5pbmcgdGhlIGFuaW1hdGlvbiB3aWxsIHBsYXkgZnJvbSBiZWdpbm5pbmcgdG8gZW5kIG9uY2UuIixyZXN0cmljdGlvbnM6WyJudW1iZXIiLCJlbnVtIl19LHtuYW1lOiItby1hbmltYXRpb24tbmFtZSIsYnJvd3NlcnM6WyJPMTIiXSx2YWx1ZXM6W3tuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiTm8gYW5pbWF0aW9uIGlzIHBlcmZvcm1lZCJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkRlZmluZXMgYSBsaXN0IG9mIGFuaW1hdGlvbnMgdGhhdCBhcHBseS4gRWFjaCBuYW1lIGlzIHVzZWQgdG8gc2VsZWN0IHRoZSBrZXlmcmFtZSBhdC1ydWxlIHRoYXQgcHJvdmlkZXMgdGhlIHByb3BlcnR5IHZhbHVlcyBmb3IgdGhlIGFuaW1hdGlvbi4iLHJlc3RyaWN0aW9uczpbImlkZW50aWZpZXIiLCJlbnVtIl19LHtuYW1lOiItby1hbmltYXRpb24tcGxheS1zdGF0ZSIsYnJvd3NlcnM6WyJPMTIiXSx2YWx1ZXM6W3tuYW1lOiJwYXVzZWQiLGRlc2NyaXB0aW9uOiJBIHJ1bm5pbmcgYW5pbWF0aW9uIHdpbGwgYmUgcGF1c2VkLiJ9LHtuYW1lOiJydW5uaW5nIixkZXNjcmlwdGlvbjoiUmVzdW1lIHBsYXliYWNrIG9mIGEgcGF1c2VkIGFuaW1hdGlvbi4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJEZWZpbmVzIHdoZXRoZXIgdGhlIGFuaW1hdGlvbiBpcyBydW5uaW5nIG9yIHBhdXNlZC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1vLWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb24iLGJyb3dzZXJzOlsiTzEyIl0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJEZXNjcmliZXMgaG93IHRoZSBhbmltYXRpb24gd2lsbCBwcm9ncmVzcyBvdmVyIG9uZSBjeWNsZSBvZiBpdHMgZHVyYXRpb24uIFNlZSB0aGUgJ3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uJy4iLHJlc3RyaWN0aW9uczpbInRpbWluZy1mdW5jdGlvbiJdfSx7bmFtZToib2JqZWN0LWZpdCIsYnJvd3NlcnM6WyJFNzkiLCJGRjM2IiwiUzEwIiwiQzMyIiwiTzE5Il0sdmFsdWVzOlt7bmFtZToiY29udGFpbiIsZGVzY3JpcHRpb246IlRoZSByZXBsYWNlZCBjb250ZW50IGlzIHNpemVkIHRvIG1haW50YWluIGl0cyBhc3BlY3QgcmF0aW8gd2hpbGUgZml0dGluZyB3aXRoaW4gdGhlIGVsZW1lbnQncyBjb250ZW50IGJveDogaXRzIGNvbmNyZXRlIG9iamVjdCBzaXplIGlzIHJlc29sdmVkIGFzIGEgY29udGFpbiBjb25zdHJhaW50IGFnYWluc3QgdGhlIGVsZW1lbnQncyB1c2VkIHdpZHRoIGFuZCBoZWlnaHQuIn0se25hbWU6ImNvdmVyIixkZXNjcmlwdGlvbjoiVGhlIHJlcGxhY2VkIGNvbnRlbnQgaXMgc2l6ZWQgdG8gbWFpbnRhaW4gaXRzIGFzcGVjdCByYXRpbyB3aGlsZSBmaWxsaW5nIHRoZSBlbGVtZW50J3MgZW50aXJlIGNvbnRlbnQgYm94OiBpdHMgY29uY3JldGUgb2JqZWN0IHNpemUgaXMgcmVzb2x2ZWQgYXMgYSBjb3ZlciBjb25zdHJhaW50IGFnYWluc3QgdGhlIGVsZW1lbnQncyB1c2VkIHdpZHRoIGFuZCBoZWlnaHQuIn0se25hbWU6ImZpbGwiLGRlc2NyaXB0aW9uOiJUaGUgcmVwbGFjZWQgY29udGVudCBpcyBzaXplZCB0byBmaWxsIHRoZSBlbGVtZW50J3MgY29udGVudCBib3g6IHRoZSBvYmplY3QncyBjb25jcmV0ZSBvYmplY3Qgc2l6ZSBpcyB0aGUgZWxlbWVudCdzIHVzZWQgd2lkdGggYW5kIGhlaWdodC4ifSx7bmFtZToibm9uZSIsZGVzY3JpcHRpb246IlRoZSByZXBsYWNlZCBjb250ZW50IGlzIG5vdCByZXNpemVkIHRvIGZpdCBpbnNpZGUgdGhlIGVsZW1lbnQncyBjb250ZW50IGJveCJ9LHtuYW1lOiJzY2FsZS1kb3duIixkZXNjcmlwdGlvbjoiU2l6ZSB0aGUgY29udGVudCBhcyBpZiAnbm9uZScgb3IgJ2NvbnRhaW4nIHdlcmUgc3BlY2lmaWVkLCB3aGljaGV2ZXIgd291bGQgcmVzdWx0IGluIGEgc21hbGxlciBjb25jcmV0ZSBvYmplY3Qgc2l6ZS4ifV0sc3ludGF4OiJmaWxsIHwgY29udGFpbiB8IGNvdmVyIHwgbm9uZSB8IHNjYWxlLWRvd24iLHJlbGV2YW5jZTo3MixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvb2JqZWN0LWZpdCJ9XSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGhvdyB0aGUgY29udGVudHMgb2YgYSByZXBsYWNlZCBlbGVtZW50IHNob3VsZCBiZSBzY2FsZWQgcmVsYXRpdmUgdG8gdGhlIGJveCBlc3RhYmxpc2hlZCBieSBpdHMgdXNlZCBoZWlnaHQgYW5kIHdpZHRoLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToib2JqZWN0LXBvc2l0aW9uIixicm93c2VyczpbIkU3OSIsIkZGMzYiLCJTMTAiLCJDMzIiLCJPMTkiXSxzeW50YXg6Ijxwb3NpdGlvbj4iLHJlbGV2YW5jZTo1NyxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvb2JqZWN0LXBvc2l0aW9uIn1dLGRlc2NyaXB0aW9uOiJEZXRlcm1pbmVzIHRoZSBhbGlnbm1lbnQgb2YgdGhlIHJlcGxhY2VkIGVsZW1lbnQgaW5zaWRlIGl0cyBib3guIixyZXN0cmljdGlvbnM6WyJwb3NpdGlvbiIsImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6Ii1vLWJvcmRlci1pbWFnZSIsYnJvd3NlcnM6WyJPMTEuNiJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJJZiAnYXV0bycgaXMgc3BlY2lmaWVkIHRoZW4gdGhlIGJvcmRlciBpbWFnZSB3aWR0aCBpcyB0aGUgaW50cmluc2ljIHdpZHRoIG9yIGhlaWdodCAod2hpY2hldmVyIGlzIGFwcGxpY2FibGUpIG9mIHRoZSBjb3JyZXNwb25kaW5nIGltYWdlIHNsaWNlLiBJZiB0aGUgaW1hZ2UgZG9lcyBub3QgaGF2ZSB0aGUgcmVxdWlyZWQgaW50cmluc2ljIGRpbWVuc2lvbiB0aGVuIHRoZSBjb3JyZXNwb25kaW5nIGJvcmRlci13aWR0aCBpcyB1c2VkIGluc3RlYWQuIn0se25hbWU6ImZpbGwiLGRlc2NyaXB0aW9uOiJDYXVzZXMgdGhlIG1pZGRsZSBwYXJ0IG9mIHRoZSBib3JkZXItaW1hZ2UgdG8gYmUgcHJlc2VydmVkLiJ9LHtuYW1lOiJub25lIn0se25hbWU6InJlcGVhdCIsZGVzY3JpcHRpb246IlRoZSBpbWFnZSBpcyB0aWxlZCAocmVwZWF0ZWQpIHRvIGZpbGwgdGhlIGFyZWEuIn0se25hbWU6InJvdW5kIixkZXNjcmlwdGlvbjoiVGhlIGltYWdlIGlzIHRpbGVkIChyZXBlYXRlZCkgdG8gZmlsbCB0aGUgYXJlYS4gSWYgaXQgZG9lcyBub3QgZmlsbCB0aGUgYXJlYSB3aXRoIGEgd2hvbGUgbnVtYmVyIG9mIHRpbGVzLCB0aGUgaW1hZ2UgaXMgcmVzY2FsZWQgc28gdGhhdCBpdCBkb2VzLiJ9LHtuYW1lOiJzcGFjZSIsZGVzY3JpcHRpb246IlRoZSBpbWFnZSBpcyB0aWxlZCAocmVwZWF0ZWQpIHRvIGZpbGwgdGhlIGFyZWEuIElmIGl0IGRvZXMgbm90IGZpbGwgdGhlIGFyZWEgd2l0aCBhIHdob2xlIG51bWJlciBvZiB0aWxlcywgdGhlIGV4dHJhIHNwYWNlIGlzIGRpc3RyaWJ1dGVkIGFyb3VuZCB0aGUgdGlsZXMuIn0se25hbWU6InN0cmV0Y2giLGRlc2NyaXB0aW9uOiJUaGUgaW1hZ2UgaXMgc3RyZXRjaGVkIHRvIGZpbGwgdGhlIGFyZWEuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU2hvcnRoYW5kIHByb3BlcnR5IGZvciBzZXR0aW5nICdib3JkZXItaW1hZ2Utc291cmNlJywgJ2JvcmRlci1pbWFnZS1zbGljZScsICdib3JkZXItaW1hZ2Utd2lkdGgnLCAnYm9yZGVyLWltYWdlLW91dHNldCcgYW5kICdib3JkZXItaW1hZ2UtcmVwZWF0Jy4gT21pdHRlZCB2YWx1ZXMgYXJlIHNldCB0byB0aGVpciBpbml0aWFsIHZhbHVlcy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiLCJudW1iZXIiLCJpbWFnZSIsImVudW0iXX0se25hbWU6Ii1vLW9iamVjdC1maXQiLGJyb3dzZXJzOlsiTzEwLjYiXSx2YWx1ZXM6W3tuYW1lOiJjb250YWluIixkZXNjcmlwdGlvbjoiVGhlIHJlcGxhY2VkIGNvbnRlbnQgaXMgc2l6ZWQgdG8gbWFpbnRhaW4gaXRzIGFzcGVjdCByYXRpbyB3aGlsZSBmaXR0aW5nIHdpdGhpbiB0aGUgZWxlbWVudCdzIGNvbnRlbnQgYm94OiBpdHMgY29uY3JldGUgb2JqZWN0IHNpemUgaXMgcmVzb2x2ZWQgYXMgYSBjb250YWluIGNvbnN0cmFpbnQgYWdhaW5zdCB0aGUgZWxlbWVudCdzIHVzZWQgd2lkdGggYW5kIGhlaWdodC4ifSx7bmFtZToiY292ZXIiLGRlc2NyaXB0aW9uOiJUaGUgcmVwbGFjZWQgY29udGVudCBpcyBzaXplZCB0byBtYWludGFpbiBpdHMgYXNwZWN0IHJhdGlvIHdoaWxlIGZpbGxpbmcgdGhlIGVsZW1lbnQncyBlbnRpcmUgY29udGVudCBib3g6IGl0cyBjb25jcmV0ZSBvYmplY3Qgc2l6ZSBpcyByZXNvbHZlZCBhcyBhIGNvdmVyIGNvbnN0cmFpbnQgYWdhaW5zdCB0aGUgZWxlbWVudCdzIHVzZWQgd2lkdGggYW5kIGhlaWdodC4ifSx7bmFtZToiZmlsbCIsZGVzY3JpcHRpb246IlRoZSByZXBsYWNlZCBjb250ZW50IGlzIHNpemVkIHRvIGZpbGwgdGhlIGVsZW1lbnQncyBjb250ZW50IGJveDogdGhlIG9iamVjdCdzIGNvbmNyZXRlIG9iamVjdCBzaXplIGlzIHRoZSBlbGVtZW50J3MgdXNlZCB3aWR0aCBhbmQgaGVpZ2h0LiJ9LHtuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiVGhlIHJlcGxhY2VkIGNvbnRlbnQgaXMgbm90IHJlc2l6ZWQgdG8gZml0IGluc2lkZSB0aGUgZWxlbWVudCdzIGNvbnRlbnQgYm94In0se25hbWU6InNjYWxlLWRvd24iLGRlc2NyaXB0aW9uOiJTaXplIHRoZSBjb250ZW50IGFzIGlmICdub25lJyBvciAnY29udGFpbicgd2VyZSBzcGVjaWZpZWQsIHdoaWNoZXZlciB3b3VsZCByZXN1bHQgaW4gYSBzbWFsbGVyIGNvbmNyZXRlIG9iamVjdCBzaXplLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlNwZWNpZmllcyBob3cgdGhlIGNvbnRlbnRzIG9mIGEgcmVwbGFjZWQgZWxlbWVudCBzaG91bGQgYmUgc2NhbGVkIHJlbGF0aXZlIHRvIHRoZSBib3ggZXN0YWJsaXNoZWQgYnkgaXRzIHVzZWQgaGVpZ2h0IGFuZCB3aWR0aC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1vLW9iamVjdC1wb3NpdGlvbiIsYnJvd3NlcnM6WyJPMTAuNiJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRGV0ZXJtaW5lcyB0aGUgYWxpZ25tZW50IG9mIHRoZSByZXBsYWNlZCBlbGVtZW50IGluc2lkZSBpdHMgYm94LiIscmVzdHJpY3Rpb25zOlsicG9zaXRpb24iLCJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiJvcGFjaXR5Iixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMyIiwiQzEiLCJJRTkiLCJPOSJdLHN5bnRheDoiPGFscGhhLXZhbHVlPiIscmVsZXZhbmNlOjkyLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9vcGFjaXR5In1dLGRlc2NyaXB0aW9uOiJPcGFjaXR5IG9mIGFuIGVsZW1lbnQncyB0ZXh0LCB3aGVyZSAxIGlzIG9wYXF1ZSBhbmQgMCBpcyBlbnRpcmVseSB0cmFuc3BhcmVudC4iLHJlc3RyaWN0aW9uczpbIm51bWJlcigwLTEpIl19LHtuYW1lOiJvcmRlciIsYnJvd3NlcnM6WyJFMTIiLCJGRjIwIiwiUzkiLCJDMjkiLCJJRTExIiwiTzEyLjEiXSxzeW50YXg6IjxpbnRlZ2VyPiIscmVsZXZhbmNlOjY3LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9vcmRlciJ9XSxkZXNjcmlwdGlvbjoiQ29udHJvbHMgdGhlIG9yZGVyIGluIHdoaWNoIGNoaWxkcmVuIG9mIGEgZmxleCBjb250YWluZXIgYXBwZWFyIHdpdGhpbiB0aGUgZmxleCBjb250YWluZXIsIGJ5IGFzc2lnbmluZyB0aGVtIHRvIG9yZGluYWwgZ3JvdXBzLiIscmVzdHJpY3Rpb25zOlsiaW50ZWdlciJdfSx7bmFtZToib3JwaGFucyIsYnJvd3NlcnM6WyJFMTIiLCJTMS4zIiwiQzI1IiwiSUU4IiwiTzkuMiJdLHN5bnRheDoiPGludGVnZXI+IixyZWxldmFuY2U6NTEscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL29ycGhhbnMifV0sZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgbWluaW11bSBudW1iZXIgb2YgbGluZSBib3hlcyBpbiBhIGJsb2NrIGNvbnRhaW5lciB0aGF0IG11c3QgYmUgbGVmdCBpbiBhIGZyYWdtZW50IGJlZm9yZSBhIGZyYWdtZW50YXRpb24gYnJlYWsuIixyZXN0cmljdGlvbnM6WyJpbnRlZ2VyIl19LHtuYW1lOiItby10YWJsZS1iYXNlbGluZSIsYnJvd3NlcnM6WyJPOS42Il0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJEZXRlcm1pbmVzIHdoaWNoIHJvdyBvZiBhIGlubGluZS10YWJsZSBzaG91bGQgYmUgdXNlZCBhcyBiYXNlbGluZSBvZiBpbmxpbmUtdGFibGUuIixyZXN0cmljdGlvbnM6WyJpbnRlZ2VyIl19LHtuYW1lOiItby10YWItc2l6ZSIsYnJvd3NlcnM6WyJPMTAuNiJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiVGhpcyBwcm9wZXJ0eSBkZXRlcm1pbmVzIHRoZSB3aWR0aCBvZiB0aGUgdGFiIGNoYXJhY3RlciAoVSswMDA5KSwgaW4gc3BhY2UgY2hhcmFjdGVycyAoVSswMDIwKSwgd2hlbiByZW5kZXJlZC4iLHJlc3RyaWN0aW9uczpbImludGVnZXIiLCJsZW5ndGgiXX0se25hbWU6Ii1vLXRleHQtb3ZlcmZsb3ciLGJyb3dzZXJzOlsiTzEwIl0sdmFsdWVzOlt7bmFtZToiY2xpcCIsZGVzY3JpcHRpb246IkNsaXAgaW5saW5lIGNvbnRlbnQgdGhhdCBvdmVyZmxvd3MuIENoYXJhY3RlcnMgbWF5IGJlIG9ubHkgcGFydGlhbGx5IHJlbmRlcmVkLiJ9LHtuYW1lOiJlbGxpcHNpcyIsZGVzY3JpcHRpb246IlJlbmRlciBhbiBlbGxpcHNpcyBjaGFyYWN0ZXIgKFUrMjAyNikgdG8gcmVwcmVzZW50IGNsaXBwZWQgaW5saW5lIGNvbnRlbnQuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiVGV4dCBjYW4gb3ZlcmZsb3cgZm9yIGV4YW1wbGUgd2hlbiBpdCBpcyBwcmV2ZW50ZWQgZnJvbSB3cmFwcGluZyIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLW8tdHJhbnNmb3JtIixicm93c2VyczpbIk8xMC41Il0sdmFsdWVzOlt7bmFtZToibWF0cml4KCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSAyRCB0cmFuc2Zvcm1hdGlvbiBpbiB0aGUgZm9ybSBvZiBhIHRyYW5zZm9ybWF0aW9uIG1hdHJpeCBvZiBzaXggdmFsdWVzLiBtYXRyaXgoYSxiLGMsZCxlLGYpIGlzIGVxdWl2YWxlbnQgdG8gYXBwbHlpbmcgdGhlIHRyYW5zZm9ybWF0aW9uIG1hdHJpeCBbYSBiIGMgZCBlIGZdIn0se25hbWU6Im1hdHJpeDNkKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSAzRCB0cmFuc2Zvcm1hdGlvbiBhcyBhIDR4NCBob21vZ2VuZW91cyBtYXRyaXggb2YgMTYgdmFsdWVzIGluIGNvbHVtbi1tYWpvciBvcmRlci4ifSx7bmFtZToibm9uZSJ9LHtuYW1lOiJyb3RhdGUoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIDJEIHJvdGF0aW9uIGJ5IHRoZSBhbmdsZSBzcGVjaWZpZWQgaW4gdGhlIHBhcmFtZXRlciBhYm91dCB0aGUgb3JpZ2luIG9mIHRoZSBlbGVtZW50LCBhcyBkZWZpbmVkIGJ5IHRoZSB0cmFuc2Zvcm0tb3JpZ2luIHByb3BlcnR5LiJ9LHtuYW1lOiJyb3RhdGUzZCgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgY2xvY2t3aXNlIDNEIHJvdGF0aW9uIGJ5IHRoZSBhbmdsZSBzcGVjaWZpZWQgaW4gbGFzdCBwYXJhbWV0ZXIgYWJvdXQgdGhlIFt4LHksel0gZGlyZWN0aW9uIHZlY3RvciBkZXNjcmliZWQgYnkgdGhlIGZpcnN0IDMgcGFyYW1ldGVycy4ifSx7bmFtZToicm90YXRlWCgnYW5nbGUnKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIGNsb2Nrd2lzZSByb3RhdGlvbiBieSB0aGUgZ2l2ZW4gYW5nbGUgYWJvdXQgdGhlIFggYXhpcy4ifSx7bmFtZToicm90YXRlWSgnYW5nbGUnKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIGNsb2Nrd2lzZSByb3RhdGlvbiBieSB0aGUgZ2l2ZW4gYW5nbGUgYWJvdXQgdGhlIFkgYXhpcy4ifSx7bmFtZToicm90YXRlWignYW5nbGUnKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIGNsb2Nrd2lzZSByb3RhdGlvbiBieSB0aGUgZ2l2ZW4gYW5nbGUgYWJvdXQgdGhlIFogYXhpcy4ifSx7bmFtZToic2NhbGUoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIDJEIHNjYWxlIG9wZXJhdGlvbiBieSB0aGUgW3N4LHN5XSBzY2FsaW5nIHZlY3RvciBkZXNjcmliZWQgYnkgdGhlIDIgcGFyYW1ldGVycy4gSWYgdGhlIHNlY29uZCBwYXJhbWV0ZXIgaXMgbm90IHByb3ZpZGVkLCBpdCBpcyB0YWtlcyBhIHZhbHVlIGVxdWFsIHRvIHRoZSBmaXJzdC4ifSx7bmFtZToic2NhbGUzZCgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgM0Qgc2NhbGUgb3BlcmF0aW9uIGJ5IHRoZSBbc3gsc3ksc3pdIHNjYWxpbmcgdmVjdG9yIGRlc2NyaWJlZCBieSB0aGUgMyBwYXJhbWV0ZXJzLiJ9LHtuYW1lOiJzY2FsZVgoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIHNjYWxlIG9wZXJhdGlvbiB1c2luZyB0aGUgW3N4LDFdIHNjYWxpbmcgdmVjdG9yLCB3aGVyZSBzeCBpcyBnaXZlbiBhcyB0aGUgcGFyYW1ldGVyLiJ9LHtuYW1lOiJzY2FsZVkoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIHNjYWxlIG9wZXJhdGlvbiB1c2luZyB0aGUgW3N5LDFdIHNjYWxpbmcgdmVjdG9yLCB3aGVyZSBzeSBpcyBnaXZlbiBhcyB0aGUgcGFyYW1ldGVyLiJ9LHtuYW1lOiJzY2FsZVooKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIHNjYWxlIG9wZXJhdGlvbiB1c2luZyB0aGUgWzEsMSxzel0gc2NhbGluZyB2ZWN0b3IsIHdoZXJlIHN6IGlzIGdpdmVuIGFzIHRoZSBwYXJhbWV0ZXIuIn0se25hbWU6InNrZXcoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIHNrZXcgdHJhbnNmb3JtYXRpb24gYWxvbmcgdGhlIFggYW5kIFkgYXhlcy4gVGhlIGZpcnN0IGFuZ2xlIHBhcmFtZXRlciBzcGVjaWZpZXMgdGhlIHNrZXcgb24gdGhlIFggYXhpcy4gVGhlIHNlY29uZCBhbmdsZSBwYXJhbWV0ZXIgc3BlY2lmaWVzIHRoZSBza2V3IG9uIHRoZSBZIGF4aXMuIElmIHRoZSBzZWNvbmQgcGFyYW1ldGVyIGlzIG5vdCBnaXZlbiB0aGVuIGEgdmFsdWUgb2YgMCBpcyB1c2VkIGZvciB0aGUgWSBhbmdsZSAoaWU6IG5vIHNrZXcgb24gdGhlIFkgYXhpcykuIn0se25hbWU6InNrZXdYKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSBza2V3IHRyYW5zZm9ybWF0aW9uIGFsb25nIHRoZSBYIGF4aXMgYnkgdGhlIGdpdmVuIGFuZ2xlLiJ9LHtuYW1lOiJza2V3WSgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgc2tldyB0cmFuc2Zvcm1hdGlvbiBhbG9uZyB0aGUgWSBheGlzIGJ5IHRoZSBnaXZlbiBhbmdsZS4ifSx7bmFtZToidHJhbnNsYXRlKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSAyRCB0cmFuc2xhdGlvbiBieSB0aGUgdmVjdG9yIFt0eCwgdHldLCB3aGVyZSB0eCBpcyB0aGUgZmlyc3QgdHJhbnNsYXRpb24tdmFsdWUgcGFyYW1ldGVyIGFuZCB0eSBpcyB0aGUgb3B0aW9uYWwgc2Vjb25kIHRyYW5zbGF0aW9uLXZhbHVlIHBhcmFtZXRlci4ifSx7bmFtZToidHJhbnNsYXRlM2QoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIDNEIHRyYW5zbGF0aW9uIGJ5IHRoZSB2ZWN0b3IgW3R4LHR5LHR6XSwgd2l0aCB0eCwgdHkgYW5kIHR6IGJlaW5nIHRoZSBmaXJzdCwgc2Vjb25kIGFuZCB0aGlyZCB0cmFuc2xhdGlvbi12YWx1ZSBwYXJhbWV0ZXJzIHJlc3BlY3RpdmVseS4ifSx7bmFtZToidHJhbnNsYXRlWCgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgdHJhbnNsYXRpb24gYnkgdGhlIGdpdmVuIGFtb3VudCBpbiB0aGUgWCBkaXJlY3Rpb24uIn0se25hbWU6InRyYW5zbGF0ZVkoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIHRyYW5zbGF0aW9uIGJ5IHRoZSBnaXZlbiBhbW91bnQgaW4gdGhlIFkgZGlyZWN0aW9uLiJ9LHtuYW1lOiJ0cmFuc2xhdGVaKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSB0cmFuc2xhdGlvbiBieSB0aGUgZ2l2ZW4gYW1vdW50IGluIHRoZSBaIGRpcmVjdGlvbi4gTm90ZSB0aGF0IHBlcmNlbnRhZ2UgdmFsdWVzIGFyZSBub3QgYWxsb3dlZCBpbiB0aGUgdHJhbnNsYXRlWiB0cmFuc2xhdGlvbi12YWx1ZSwgYW5kIGlmIHByZXNlbnQgYXJlIGV2YWx1YXRlZCBhcyAwLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkEgdHdvLWRpbWVuc2lvbmFsIHRyYW5zZm9ybWF0aW9uIGlzIGFwcGxpZWQgdG8gYW4gZWxlbWVudCB0aHJvdWdoIHRoZSAndHJhbnNmb3JtJyBwcm9wZXJ0eS4gVGhpcyBwcm9wZXJ0eSBjb250YWlucyBhIGxpc3Qgb2YgdHJhbnNmb3JtIGZ1bmN0aW9ucyBzaW1pbGFyIHRvIHRob3NlIGFsbG93ZWQgYnkgU1ZHLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLW8tdHJhbnNmb3JtLW9yaWdpbiIsYnJvd3NlcnM6WyJPMTAuNSJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRXN0YWJsaXNoZXMgdGhlIG9yaWdpbiBvZiB0cmFuc2Zvcm1hdGlvbiBmb3IgYW4gZWxlbWVudC4iLHJlc3RyaWN0aW9uczpbInBvc2l0b24iLCJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiItby10cmFuc2l0aW9uIixicm93c2VyczpbIk8xMS41Il0sdmFsdWVzOlt7bmFtZToiYWxsIixkZXNjcmlwdGlvbjoiRXZlcnkgcHJvcGVydHkgdGhhdCBpcyBhYmxlIHRvIHVuZGVyZ28gYSB0cmFuc2l0aW9uIHdpbGwgZG8gc28uIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJObyBwcm9wZXJ0eSB3aWxsIHRyYW5zaXRpb24uIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU2hvcnRoYW5kIHByb3BlcnR5IGNvbWJpbmVzIGZvdXIgb2YgdGhlIHRyYW5zaXRpb24gcHJvcGVydGllcyBpbnRvIGEgc2luZ2xlIHByb3BlcnR5LiIscmVzdHJpY3Rpb25zOlsidGltZSIsInByb3BlcnR5IiwidGltaW5nLWZ1bmN0aW9uIiwiZW51bSJdfSx7bmFtZToiLW8tdHJhbnNpdGlvbi1kZWxheSIsYnJvd3NlcnM6WyJPMTEuNSJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRGVmaW5lcyB3aGVuIHRoZSB0cmFuc2l0aW9uIHdpbGwgc3RhcnQuIEl0IGFsbG93cyBhIHRyYW5zaXRpb24gdG8gYmVnaW4gZXhlY3V0aW9uIHNvbWUgcGVyaW9kIG9mIHRpbWUgZnJvbSB3aGVuIGl0IGlzIGFwcGxpZWQuIixyZXN0cmljdGlvbnM6WyJ0aW1lIl19LHtuYW1lOiItby10cmFuc2l0aW9uLWR1cmF0aW9uIixicm93c2VyczpbIk8xMS41Il0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgaG93IGxvbmcgdGhlIHRyYW5zaXRpb24gZnJvbSB0aGUgb2xkIHZhbHVlIHRvIHRoZSBuZXcgdmFsdWUgc2hvdWxkIHRha2UuIixyZXN0cmljdGlvbnM6WyJ0aW1lIl19LHtuYW1lOiItby10cmFuc2l0aW9uLXByb3BlcnR5Iixicm93c2VyczpbIk8xMS41Il0sdmFsdWVzOlt7bmFtZToiYWxsIixkZXNjcmlwdGlvbjoiRXZlcnkgcHJvcGVydHkgdGhhdCBpcyBhYmxlIHRvIHVuZGVyZ28gYSB0cmFuc2l0aW9uIHdpbGwgZG8gc28uIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJObyBwcm9wZXJ0eSB3aWxsIHRyYW5zaXRpb24uIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSBuYW1lIG9mIHRoZSBDU1MgcHJvcGVydHkgdG8gd2hpY2ggdGhlIHRyYW5zaXRpb24gaXMgYXBwbGllZC4iLHJlc3RyaWN0aW9uczpbInByb3BlcnR5Il19LHtuYW1lOiItby10cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbiIsYnJvd3NlcnM6WyJPMTEuNSJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRGVzY3JpYmVzIGhvdyB0aGUgaW50ZXJtZWRpYXRlIHZhbHVlcyB1c2VkIGR1cmluZyBhIHRyYW5zaXRpb24gd2lsbCBiZSBjYWxjdWxhdGVkLiIscmVzdHJpY3Rpb25zOlsidGltaW5nLWZ1bmN0aW9uIl19LHtuYW1lOiJvZmZzZXQtYmxvY2stZW5kIixicm93c2VyczpbIkZGNDEiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiRm9yIG5vbi1yZXBsYWNlZCBlbGVtZW50cywgdGhlIGVmZmVjdCBvZiB0aGlzIHZhbHVlIGRlcGVuZHMgb24gd2hpY2ggb2YgcmVsYXRlZCBwcm9wZXJ0aWVzIGhhdmUgdGhlIHZhbHVlICdhdXRvJyBhcyB3ZWxsLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkxvZ2ljYWwgJ2JvdHRvbScuIE1hcHBpbmcgZGVwZW5kcyBvbiB0aGUgcGFyZW50IGVsZW1lbnQncyAnd3JpdGluZy1tb2RlJywgJ2RpcmVjdGlvbicsIGFuZCAndGV4dC1vcmllbnRhdGlvbicuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiJvZmZzZXQtYmxvY2stc3RhcnQiLGJyb3dzZXJzOlsiRkY0MSJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJGb3Igbm9uLXJlcGxhY2VkIGVsZW1lbnRzLCB0aGUgZWZmZWN0IG9mIHRoaXMgdmFsdWUgZGVwZW5kcyBvbiB3aGljaCBvZiByZWxhdGVkIHByb3BlcnRpZXMgaGF2ZSB0aGUgdmFsdWUgJ2F1dG8nIGFzIHdlbGwuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiTG9naWNhbCAndG9wJy4gTWFwcGluZyBkZXBlbmRzIG9uIHRoZSBwYXJlbnQgZWxlbWVudCdzICd3cml0aW5nLW1vZGUnLCAnZGlyZWN0aW9uJywgYW5kICd0ZXh0LW9yaWVudGF0aW9uJy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6Im9mZnNldC1pbmxpbmUtZW5kIixicm93c2VyczpbIkZGNDEiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiRm9yIG5vbi1yZXBsYWNlZCBlbGVtZW50cywgdGhlIGVmZmVjdCBvZiB0aGlzIHZhbHVlIGRlcGVuZHMgb24gd2hpY2ggb2YgcmVsYXRlZCBwcm9wZXJ0aWVzIGhhdmUgdGhlIHZhbHVlICdhdXRvJyBhcyB3ZWxsLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkxvZ2ljYWwgJ3JpZ2h0Jy4gTWFwcGluZyBkZXBlbmRzIG9uIHRoZSBwYXJlbnQgZWxlbWVudCdzICd3cml0aW5nLW1vZGUnLCAnZGlyZWN0aW9uJywgYW5kICd0ZXh0LW9yaWVudGF0aW9uJy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6Im9mZnNldC1pbmxpbmUtc3RhcnQiLGJyb3dzZXJzOlsiRkY0MSJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJGb3Igbm9uLXJlcGxhY2VkIGVsZW1lbnRzLCB0aGUgZWZmZWN0IG9mIHRoaXMgdmFsdWUgZGVwZW5kcyBvbiB3aGljaCBvZiByZWxhdGVkIHByb3BlcnRpZXMgaGF2ZSB0aGUgdmFsdWUgJ2F1dG8nIGFzIHdlbGwuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiTG9naWNhbCAnbGVmdCcuIE1hcHBpbmcgZGVwZW5kcyBvbiB0aGUgcGFyZW50IGVsZW1lbnQncyAnd3JpdGluZy1tb2RlJywgJ2RpcmVjdGlvbicsIGFuZCAndGV4dC1vcmllbnRhdGlvbicuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiJvdXRsaW5lIixicm93c2VyczpbIkU5NCIsIkZGODgiLCJTMTYuNCIsIkM5NCIsIklFOCIsIk84MCJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJQZXJtaXRzIHRoZSB1c2VyIGFnZW50IHRvIHJlbmRlciBhIGN1c3RvbSBvdXRsaW5lIHN0eWxlLCB0eXBpY2FsbHkgdGhlIGRlZmF1bHQgcGxhdGZvcm0gc3R5bGUuIn0se25hbWU6ImludmVydCIsYnJvd3NlcnM6WyJFOTQiLCJGRjg4IiwiUzE2LjQiLCJDOTQiLCJJRTgiLCJPODAiXSxkZXNjcmlwdGlvbjoiUGVyZm9ybXMgYSBjb2xvciBpbnZlcnNpb24gb24gdGhlIHBpeGVscyBvbiB0aGUgc2NyZWVuLiJ9XSxzeW50YXg6IlsgPCdvdXRsaW5lLWNvbG9yJz4gfHwgPCdvdXRsaW5lLXN0eWxlJz4gfHwgPCdvdXRsaW5lLXdpZHRoJz4gXSIscmVsZXZhbmNlOjg4LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9vdXRsaW5lIn1dLGRlc2NyaXB0aW9uOiJTaG9ydGhhbmQgcHJvcGVydHkgZm9yICdvdXRsaW5lLXN0eWxlJywgJ291dGxpbmUtd2lkdGgnLCBhbmQgJ291dGxpbmUtY29sb3InLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwibGluZS13aWR0aCIsImxpbmUtc3R5bGUiLCJjb2xvciIsImVudW0iXX0se25hbWU6Im91dGxpbmUtY29sb3IiLGJyb3dzZXJzOlsiRTEyIiwiRkYxLjUiLCJTMS4yIiwiQzEiLCJJRTgiLCJPNyJdLHZhbHVlczpbe25hbWU6ImludmVydCIsYnJvd3NlcnM6WyJFMTIiLCJGRjEuNSIsIlMxLjIiLCJDMSIsIklFOCIsIk83Il0sZGVzY3JpcHRpb246IlBlcmZvcm1zIGEgY29sb3IgaW52ZXJzaW9uIG9uIHRoZSBwaXhlbHMgb24gdGhlIHNjcmVlbi4ifV0sc3ludGF4OiJhdXRvIHwgPGNvbG9yPiIscmVsZXZhbmNlOjYxLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9vdXRsaW5lLWNvbG9yIn1dLGRlc2NyaXB0aW9uOiJUaGUgY29sb3Igb2YgdGhlIG91dGxpbmUuIixyZXN0cmljdGlvbnM6WyJlbnVtIiwiY29sb3IiXX0se25hbWU6Im91dGxpbmUtb2Zmc2V0Iixicm93c2VyczpbIkUxNSIsIkZGMS41IiwiUzEuMiIsIkMxIiwiTzkuNSJdLHN5bnRheDoiPGxlbmd0aD4iLHJlbGV2YW5jZTo2OSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvb3V0bGluZS1vZmZzZXQifV0sZGVzY3JpcHRpb246Ik9mZnNldCB0aGUgb3V0bGluZSBhbmQgZHJhdyBpdCBiZXlvbmQgdGhlIGJvcmRlciBlZGdlLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIl19LHtuYW1lOiJvdXRsaW5lLXN0eWxlIixicm93c2VyczpbIkUxMiIsIkZGMS41IiwiUzEuMiIsIkMxIiwiSUU4IiwiTzciXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiUGVybWl0cyB0aGUgdXNlciBhZ2VudCB0byByZW5kZXIgYSBjdXN0b20gb3V0bGluZSBzdHlsZSwgdHlwaWNhbGx5IHRoZSBkZWZhdWx0IHBsYXRmb3JtIHN0eWxlLiJ9XSxzeW50YXg6ImF1dG8gfCA8J2JvcmRlci1zdHlsZSc+IixyZWxldmFuY2U6NjEscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL291dGxpbmUtc3R5bGUifV0sZGVzY3JpcHRpb246IlN0eWxlIG9mIHRoZSBvdXRsaW5lLiIscmVzdHJpY3Rpb25zOlsibGluZS1zdHlsZSIsImVudW0iXX0se25hbWU6Im91dGxpbmUtd2lkdGgiLGJyb3dzZXJzOlsiRTEyIiwiRkYxLjUiLCJTMS4yIiwiQzEiLCJJRTgiLCJPNyJdLHN5bnRheDoiPGxpbmUtd2lkdGg+IixyZWxldmFuY2U6NjIscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL291dGxpbmUtd2lkdGgifV0sZGVzY3JpcHRpb246IldpZHRoIG9mIHRoZSBvdXRsaW5lLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwibGluZS13aWR0aCJdfSx7bmFtZToib3ZlcmZsb3ciLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzEiLCJDMSIsIklFNCIsIk83Il0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IlRoZSBiZWhhdmlvciBvZiB0aGUgJ2F1dG8nIHZhbHVlIGlzIFVBLWRlcGVuZGVudCwgYnV0IHNob3VsZCBjYXVzZSBhIHNjcm9sbGluZyBtZWNoYW5pc20gdG8gYmUgcHJvdmlkZWQgZm9yIG92ZXJmbG93aW5nIGJveGVzLiJ9LHtuYW1lOiJoaWRkZW4iLGRlc2NyaXB0aW9uOiJDb250ZW50IGlzIGNsaXBwZWQgYW5kIG5vIHNjcm9sbGluZyBtZWNoYW5pc20gc2hvdWxkIGJlIHByb3ZpZGVkIHRvIHZpZXcgdGhlIGNvbnRlbnQgb3V0c2lkZSB0aGUgY2xpcHBpbmcgcmVnaW9uLiJ9LHtuYW1lOiItbW96LWhpZGRlbi11bnNjcm9sbGFibGUiLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzEiLCJDMSIsIklFNCIsIk83Il0sZGVzY3JpcHRpb246IlNhbWUgYXMgdGhlIHN0YW5kYXJkaXplZCAnY2xpcCcsIGV4Y2VwdCBkb2Vzbid0IGVzdGFibGlzaCBhIGJsb2NrIGZvcm1hdHRpbmcgY29udGV4dC4ifSx7bmFtZToic2Nyb2xsIixkZXNjcmlwdGlvbjoiQ29udGVudCBpcyBjbGlwcGVkIGFuZCBpZiB0aGUgdXNlciBhZ2VudCB1c2VzIGEgc2Nyb2xsaW5nIG1lY2hhbmlzbSB0aGF0IGlzIHZpc2libGUgb24gdGhlIHNjcmVlbiAoc3VjaCBhcyBhIHNjcm9sbCBiYXIgb3IgYSBwYW5uZXIpLCB0aGF0IG1lY2hhbmlzbSBzaG91bGQgYmUgZGlzcGxheWVkIGZvciBhIGJveCB3aGV0aGVyIG9yIG5vdCBhbnkgb2YgaXRzIGNvbnRlbnQgaXMgY2xpcHBlZC4ifSx7bmFtZToidmlzaWJsZSIsZGVzY3JpcHRpb246IkNvbnRlbnQgaXMgbm90IGNsaXBwZWQsIGkuZS4sIGl0IG1heSBiZSByZW5kZXJlZCBvdXRzaWRlIHRoZSBjb250ZW50IGJveC4ifV0sc3ludGF4OiJbIHZpc2libGUgfCBoaWRkZW4gfCBjbGlwIHwgc2Nyb2xsIHwgYXV0byBdezEsMn0iLHJlbGV2YW5jZTo5MyxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvb3ZlcmZsb3cifV0sZGVzY3JpcHRpb246IlNob3J0aGFuZCBmb3Igc2V0dGluZyAnb3ZlcmZsb3cteCcgYW5kICdvdmVyZmxvdy15Jy4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Im92ZXJmbG93LXdyYXAiLGJyb3dzZXJzOlsiRTE4IiwiRkY0OSIsIlM3IiwiQzIzIiwiSUU1LjUiLCJPMTIuMSJdLHZhbHVlczpbe25hbWU6ImJyZWFrLXdvcmQiLGRlc2NyaXB0aW9uOiJBbiBvdGhlcndpc2UgdW5icmVha2FibGUgc2VxdWVuY2Ugb2YgY2hhcmFjdGVycyBtYXkgYmUgYnJva2VuIGF0IGFuIGFyYml0cmFyeSBwb2ludCBpZiB0aGVyZSBhcmUgbm8gb3RoZXJ3aXNlLWFjY2VwdGFibGUgYnJlYWsgcG9pbnRzIGluIHRoZSBsaW5lLiJ9LHtuYW1lOiJub3JtYWwiLGRlc2NyaXB0aW9uOiJMaW5lcyBtYXkgYnJlYWsgb25seSBhdCBhbGxvd2VkIGJyZWFrIHBvaW50cy4ifV0sc3ludGF4OiJub3JtYWwgfCBicmVhay13b3JkIHwgYW55d2hlcmUiLHJlbGV2YW5jZTo2NSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvb3ZlcmZsb3ctd3JhcCJ9XSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHdoZXRoZXIgdGhlIFVBIG1heSBicmVhayB3aXRoaW4gYSB3b3JkIHRvIHByZXZlbnQgb3ZlcmZsb3cgd2hlbiBhbiBvdGhlcndpc2UtdW5icmVha2FibGUgc3RyaW5nIGlzIHRvbyBsb25nIHRvIGZpdCB3aXRoaW4gdGhlIGxpbmUgYm94LiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToib3ZlcmZsb3cteCIsYnJvd3NlcnM6WyJFMTIiLCJGRjMuNSIsIlMzIiwiQzEiLCJJRTUiLCJPOS41Il0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IlRoZSBiZWhhdmlvciBvZiB0aGUgJ2F1dG8nIHZhbHVlIGlzIFVBLWRlcGVuZGVudCwgYnV0IHNob3VsZCBjYXVzZSBhIHNjcm9sbGluZyBtZWNoYW5pc20gdG8gYmUgcHJvdmlkZWQgZm9yIG92ZXJmbG93aW5nIGJveGVzLiJ9LHtuYW1lOiJoaWRkZW4iLGRlc2NyaXB0aW9uOiJDb250ZW50IGlzIGNsaXBwZWQgYW5kIG5vIHNjcm9sbGluZyBtZWNoYW5pc20gc2hvdWxkIGJlIHByb3ZpZGVkIHRvIHZpZXcgdGhlIGNvbnRlbnQgb3V0c2lkZSB0aGUgY2xpcHBpbmcgcmVnaW9uLiJ9LHtuYW1lOiJzY3JvbGwiLGRlc2NyaXB0aW9uOiJDb250ZW50IGlzIGNsaXBwZWQgYW5kIGlmIHRoZSB1c2VyIGFnZW50IHVzZXMgYSBzY3JvbGxpbmcgbWVjaGFuaXNtIHRoYXQgaXMgdmlzaWJsZSBvbiB0aGUgc2NyZWVuIChzdWNoIGFzIGEgc2Nyb2xsIGJhciBvciBhIHBhbm5lciksIHRoYXQgbWVjaGFuaXNtIHNob3VsZCBiZSBkaXNwbGF5ZWQgZm9yIGEgYm94IHdoZXRoZXIgb3Igbm90IGFueSBvZiBpdHMgY29udGVudCBpcyBjbGlwcGVkLiJ9LHtuYW1lOiJ2aXNpYmxlIixkZXNjcmlwdGlvbjoiQ29udGVudCBpcyBub3QgY2xpcHBlZCwgaS5lLiwgaXQgbWF5IGJlIHJlbmRlcmVkIG91dHNpZGUgdGhlIGNvbnRlbnQgYm94LiJ9XSxzeW50YXg6InZpc2libGUgfCBoaWRkZW4gfCBjbGlwIHwgc2Nyb2xsIHwgYXV0byIscmVsZXZhbmNlOjgxLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9vdmVyZmxvdy14In1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhlIGhhbmRsaW5nIG9mIG92ZXJmbG93IGluIHRoZSBob3Jpem9udGFsIGRpcmVjdGlvbi4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Im92ZXJmbG93LXkiLGJyb3dzZXJzOlsiRTEyIiwiRkYzLjUiLCJTMyIsIkMxIiwiSUU1IiwiTzkuNSJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJUaGUgYmVoYXZpb3Igb2YgdGhlICdhdXRvJyB2YWx1ZSBpcyBVQS1kZXBlbmRlbnQsIGJ1dCBzaG91bGQgY2F1c2UgYSBzY3JvbGxpbmcgbWVjaGFuaXNtIHRvIGJlIHByb3ZpZGVkIGZvciBvdmVyZmxvd2luZyBib3hlcy4ifSx7bmFtZToiaGlkZGVuIixkZXNjcmlwdGlvbjoiQ29udGVudCBpcyBjbGlwcGVkIGFuZCBubyBzY3JvbGxpbmcgbWVjaGFuaXNtIHNob3VsZCBiZSBwcm92aWRlZCB0byB2aWV3IHRoZSBjb250ZW50IG91dHNpZGUgdGhlIGNsaXBwaW5nIHJlZ2lvbi4ifSx7bmFtZToic2Nyb2xsIixkZXNjcmlwdGlvbjoiQ29udGVudCBpcyBjbGlwcGVkIGFuZCBpZiB0aGUgdXNlciBhZ2VudCB1c2VzIGEgc2Nyb2xsaW5nIG1lY2hhbmlzbSB0aGF0IGlzIHZpc2libGUgb24gdGhlIHNjcmVlbiAoc3VjaCBhcyBhIHNjcm9sbCBiYXIgb3IgYSBwYW5uZXIpLCB0aGF0IG1lY2hhbmlzbSBzaG91bGQgYmUgZGlzcGxheWVkIGZvciBhIGJveCB3aGV0aGVyIG9yIG5vdCBhbnkgb2YgaXRzIGNvbnRlbnQgaXMgY2xpcHBlZC4ifSx7bmFtZToidmlzaWJsZSIsZGVzY3JpcHRpb246IkNvbnRlbnQgaXMgbm90IGNsaXBwZWQsIGkuZS4sIGl0IG1heSBiZSByZW5kZXJlZCBvdXRzaWRlIHRoZSBjb250ZW50IGJveC4ifV0sc3ludGF4OiJ2aXNpYmxlIHwgaGlkZGVuIHwgY2xpcCB8IHNjcm9sbCB8IGF1dG8iLHJlbGV2YW5jZTo4MixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvb3ZlcmZsb3cteSJ9XSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSBoYW5kbGluZyBvZiBvdmVyZmxvdyBpbiB0aGUgdmVydGljYWwgZGlyZWN0aW9uLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToicGFkIixicm93c2VyczpbIkZGMzMiXSxhdFJ1bGU6IkBjb3VudGVyLXN0eWxlIixzeW50YXg6IjxpbnRlZ2VyPiAmJiA8c3ltYm9sPiIscmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOidAY291bnRlci1zdHlsZSBkZXNjcmlwdG9yLiBTcGVjaWZpZXMgYSAiZml4ZWQtd2lkdGgiIGNvdW50ZXIgc3R5bGUsIHdoZXJlIHJlcHJlc2VudGF0aW9ucyBzaG9ydGVyIHRoYW4gdGhlIHBhZCB2YWx1ZSBhcmUgcGFkZGVkIHdpdGggYSBwYXJ0aWN1bGFyIDxzeW1ib2w+JyxyZXN0cmljdGlvbnM6WyJpbnRlZ2VyIiwiaW1hZ2UiLCJzdHJpbmciLCJpZGVudGlmaWVyIl19LHtuYW1lOiJwYWRkaW5nIixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxIiwiQzEiLCJJRTQiLCJPMy41Il0sdmFsdWVzOltdLHN5bnRheDoiWyA8bGVuZ3RoPiB8IDxwZXJjZW50YWdlPiBdezEsNH0iLHJlbGV2YW5jZTo5NSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvcGFkZGluZyJ9XSxkZXNjcmlwdGlvbjoiU2hvcnRoYW5kIHByb3BlcnR5IHRvIHNldCB2YWx1ZXMgZm9yIHRoZSB0aGlja25lc3Mgb2YgdGhlIHBhZGRpbmcgYXJlYS4gSWYgbGVmdCBpcyBvbWl0dGVkLCBpdCBpcyB0aGUgc2FtZSBhcyByaWdodC4gSWYgYm90dG9tIGlzIG9taXR0ZWQgaXQgaXMgdGhlIHNhbWUgYXMgdG9wLCBpZiByaWdodCBpcyBvbWl0dGVkIGl0IGlzIHRoZSBzYW1lIGFzIHRvcC4gVGhlIHZhbHVlIG1heSBub3QgYmUgbmVnYXRpdmUuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiJwYWRkaW5nLWJvdHRvbSIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMSIsIkMxIiwiSUU0IiwiTzMuNSJdLHN5bnRheDoiPGxlbmd0aD4gfCA8cGVyY2VudGFnZT4iLHJlbGV2YW5jZTo4OCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvcGFkZGluZy1ib3R0b20ifV0sZGVzY3JpcHRpb246IlNob3J0aGFuZCBwcm9wZXJ0eSB0byBzZXQgdmFsdWVzIGZvciB0aGUgdGhpY2tuZXNzIG9mIHRoZSBwYWRkaW5nIGFyZWEuIElmIGxlZnQgaXMgb21pdHRlZCwgaXQgaXMgdGhlIHNhbWUgYXMgcmlnaHQuIElmIGJvdHRvbSBpcyBvbWl0dGVkIGl0IGlzIHRoZSBzYW1lIGFzIHRvcCwgaWYgcmlnaHQgaXMgb21pdHRlZCBpdCBpcyB0aGUgc2FtZSBhcyB0b3AuIFRoZSB2YWx1ZSBtYXkgbm90IGJlIG5lZ2F0aXZlLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToicGFkZGluZy1ibG9jay1lbmQiLGJyb3dzZXJzOlsiRTc5IiwiRkY0MSIsIlMxMi4xIiwiQzY5IiwiTzU2Il0sc3ludGF4OiI8J3BhZGRpbmctbGVmdCc+IixyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3BhZGRpbmctYmxvY2stZW5kIn1dLGRlc2NyaXB0aW9uOiJMb2dpY2FsICdwYWRkaW5nLWJvdHRvbScuIE1hcHBpbmcgZGVwZW5kcyBvbiB0aGUgcGFyZW50IGVsZW1lbnQncyAnd3JpdGluZy1tb2RlJywgJ2RpcmVjdGlvbicsIGFuZCAndGV4dC1vcmllbnRhdGlvbicuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiJwYWRkaW5nLWJsb2NrLXN0YXJ0Iixicm93c2VyczpbIkU3OSIsIkZGNDEiLCJTMTIuMSIsIkM2OSIsIk81NiJdLHN5bnRheDoiPCdwYWRkaW5nLWxlZnQnPiIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9wYWRkaW5nLWJsb2NrLXN0YXJ0In1dLGRlc2NyaXB0aW9uOiJMb2dpY2FsICdwYWRkaW5nLXRvcCcuIE1hcHBpbmcgZGVwZW5kcyBvbiB0aGUgcGFyZW50IGVsZW1lbnQncyAnd3JpdGluZy1tb2RlJywgJ2RpcmVjdGlvbicsIGFuZCAndGV4dC1vcmllbnRhdGlvbicuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiJwYWRkaW5nLWlubGluZS1lbmQiLGJyb3dzZXJzOlsiRTc5IiwiRkY0MSIsIlMxMi4xIiwiQzY5IiwiTzU2Il0sc3ludGF4OiI8J3BhZGRpbmctbGVmdCc+IixyZWxldmFuY2U6NTUscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3BhZGRpbmctaW5saW5lLWVuZCJ9XSxkZXNjcmlwdGlvbjoiTG9naWNhbCAncGFkZGluZy1yaWdodCcuIE1hcHBpbmcgZGVwZW5kcyBvbiB0aGUgcGFyZW50IGVsZW1lbnQncyAnd3JpdGluZy1tb2RlJywgJ2RpcmVjdGlvbicsIGFuZCAndGV4dC1vcmllbnRhdGlvbicuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiJwYWRkaW5nLWlubGluZS1zdGFydCIsYnJvd3NlcnM6WyJFNzkiLCJGRjQxIiwiUzEyLjEiLCJDNjkiLCJPNTYiXSxzeW50YXg6IjwncGFkZGluZy1sZWZ0Jz4iLHJlbGV2YW5jZTo1NixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvcGFkZGluZy1pbmxpbmUtc3RhcnQifV0sZGVzY3JpcHRpb246IkxvZ2ljYWwgJ3BhZGRpbmctbGVmdCcuIE1hcHBpbmcgZGVwZW5kcyBvbiB0aGUgcGFyZW50IGVsZW1lbnQncyAnd3JpdGluZy1tb2RlJywgJ2RpcmVjdGlvbicsIGFuZCAndGV4dC1vcmllbnRhdGlvbicuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiJwYWRkaW5nLWxlZnQiLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzEiLCJDMSIsIklFNCIsIk8zLjUiXSxzeW50YXg6IjxsZW5ndGg+IHwgPHBlcmNlbnRhZ2U+IixyZWxldmFuY2U6ODkscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3BhZGRpbmctbGVmdCJ9XSxkZXNjcmlwdGlvbjoiU2hvcnRoYW5kIHByb3BlcnR5IHRvIHNldCB2YWx1ZXMgZm9yIHRoZSB0aGlja25lc3Mgb2YgdGhlIHBhZGRpbmcgYXJlYS4gSWYgbGVmdCBpcyBvbWl0dGVkLCBpdCBpcyB0aGUgc2FtZSBhcyByaWdodC4gSWYgYm90dG9tIGlzIG9taXR0ZWQgaXQgaXMgdGhlIHNhbWUgYXMgdG9wLCBpZiByaWdodCBpcyBvbWl0dGVkIGl0IGlzIHRoZSBzYW1lIGFzIHRvcC4gVGhlIHZhbHVlIG1heSBub3QgYmUgbmVnYXRpdmUuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiJwYWRkaW5nLXJpZ2h0Iixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxIiwiQzEiLCJJRTQiLCJPMy41Il0sc3ludGF4OiI8bGVuZ3RoPiB8IDxwZXJjZW50YWdlPiIscmVsZXZhbmNlOjg4LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9wYWRkaW5nLXJpZ2h0In1dLGRlc2NyaXB0aW9uOiJTaG9ydGhhbmQgcHJvcGVydHkgdG8gc2V0IHZhbHVlcyBmb3IgdGhlIHRoaWNrbmVzcyBvZiB0aGUgcGFkZGluZyBhcmVhLiBJZiBsZWZ0IGlzIG9taXR0ZWQsIGl0IGlzIHRoZSBzYW1lIGFzIHJpZ2h0LiBJZiBib3R0b20gaXMgb21pdHRlZCBpdCBpcyB0aGUgc2FtZSBhcyB0b3AsIGlmIHJpZ2h0IGlzIG9taXR0ZWQgaXQgaXMgdGhlIHNhbWUgYXMgdG9wLiBUaGUgdmFsdWUgbWF5IG5vdCBiZSBuZWdhdGl2ZS4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6InBhZGRpbmctdG9wIixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxIiwiQzEiLCJJRTQiLCJPMy41Il0sc3ludGF4OiI8bGVuZ3RoPiB8IDxwZXJjZW50YWdlPiIscmVsZXZhbmNlOjg5LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9wYWRkaW5nLXRvcCJ9XSxkZXNjcmlwdGlvbjoiU2hvcnRoYW5kIHByb3BlcnR5IHRvIHNldCB2YWx1ZXMgZm9yIHRoZSB0aGlja25lc3Mgb2YgdGhlIHBhZGRpbmcgYXJlYS4gSWYgbGVmdCBpcyBvbWl0dGVkLCBpdCBpcyB0aGUgc2FtZSBhcyByaWdodC4gSWYgYm90dG9tIGlzIG9taXR0ZWQgaXQgaXMgdGhlIHNhbWUgYXMgdG9wLCBpZiByaWdodCBpcyBvbWl0dGVkIGl0IGlzIHRoZSBzYW1lIGFzIHRvcC4gVGhlIHZhbHVlIG1heSBub3QgYmUgbmVnYXRpdmUuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiJwYWdlLWJyZWFrLWFmdGVyIixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxLjIiLCJDMSIsIklFNCIsIk83Il0sdmFsdWVzOlt7bmFtZToiYWx3YXlzIixkZXNjcmlwdGlvbjoiQWx3YXlzIGZvcmNlIGEgcGFnZSBicmVhayBhZnRlciB0aGUgZ2VuZXJhdGVkIGJveC4ifSx7bmFtZToiYXV0byIsZGVzY3JpcHRpb246Ik5laXRoZXIgZm9yY2Ugbm9yIGZvcmJpZCBhIHBhZ2UgYnJlYWsgYWZ0ZXIgZ2VuZXJhdGVkIGJveC4ifSx7bmFtZToiYXZvaWQiLGRlc2NyaXB0aW9uOiJBdm9pZCBhIHBhZ2UgYnJlYWsgYWZ0ZXIgdGhlIGdlbmVyYXRlZCBib3guIn0se25hbWU6ImxlZnQiLGRlc2NyaXB0aW9uOiJGb3JjZSBvbmUgb3IgdHdvIHBhZ2UgYnJlYWtzIGFmdGVyIHRoZSBnZW5lcmF0ZWQgYm94IHNvIHRoYXQgdGhlIG5leHQgcGFnZSBpcyBmb3JtYXR0ZWQgYXMgYSBsZWZ0IHBhZ2UuIn0se25hbWU6InJpZ2h0IixkZXNjcmlwdGlvbjoiRm9yY2Ugb25lIG9yIHR3byBwYWdlIGJyZWFrcyBhZnRlciB0aGUgZ2VuZXJhdGVkIGJveCBzbyB0aGF0IHRoZSBuZXh0IHBhZ2UgaXMgZm9ybWF0dGVkIGFzIGEgcmlnaHQgcGFnZS4ifV0sc3ludGF4OiJhdXRvIHwgYWx3YXlzIHwgYXZvaWQgfCBsZWZ0IHwgcmlnaHQgfCByZWN0byB8IHZlcnNvIixyZWxldmFuY2U6NTIscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3BhZ2UtYnJlYWstYWZ0ZXIifV0sZGVzY3JpcHRpb246IkRlZmluZXMgcnVsZXMgZm9yIHBhZ2UgYnJlYWtzIGFmdGVyIGFuIGVsZW1lbnQuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJwYWdlLWJyZWFrLWJlZm9yZSIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMS4yIiwiQzEiLCJJRTQiLCJPNyJdLHZhbHVlczpbe25hbWU6ImFsd2F5cyIsZGVzY3JpcHRpb246IkFsd2F5cyBmb3JjZSBhIHBhZ2UgYnJlYWsgYmVmb3JlIHRoZSBnZW5lcmF0ZWQgYm94LiJ9LHtuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiTmVpdGhlciBmb3JjZSBub3IgZm9yYmlkIGEgcGFnZSBicmVhayBiZWZvcmUgdGhlIGdlbmVyYXRlZCBib3guIn0se25hbWU6ImF2b2lkIixkZXNjcmlwdGlvbjoiQXZvaWQgYSBwYWdlIGJyZWFrIGJlZm9yZSB0aGUgZ2VuZXJhdGVkIGJveC4ifSx7bmFtZToibGVmdCIsZGVzY3JpcHRpb246IkZvcmNlIG9uZSBvciB0d28gcGFnZSBicmVha3MgYmVmb3JlIHRoZSBnZW5lcmF0ZWQgYm94IHNvIHRoYXQgdGhlIG5leHQgcGFnZSBpcyBmb3JtYXR0ZWQgYXMgYSBsZWZ0IHBhZ2UuIn0se25hbWU6InJpZ2h0IixkZXNjcmlwdGlvbjoiRm9yY2Ugb25lIG9yIHR3byBwYWdlIGJyZWFrcyBiZWZvcmUgdGhlIGdlbmVyYXRlZCBib3ggc28gdGhhdCB0aGUgbmV4dCBwYWdlIGlzIGZvcm1hdHRlZCBhcyBhIHJpZ2h0IHBhZ2UuIn1dLHN5bnRheDoiYXV0byB8IGFsd2F5cyB8IGF2b2lkIHwgbGVmdCB8IHJpZ2h0IHwgcmVjdG8gfCB2ZXJzbyIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9wYWdlLWJyZWFrLWJlZm9yZSJ9XSxkZXNjcmlwdGlvbjoiRGVmaW5lcyBydWxlcyBmb3IgcGFnZSBicmVha3MgYmVmb3JlIGFuIGVsZW1lbnQuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJwYWdlLWJyZWFrLWluc2lkZSIsYnJvd3NlcnM6WyJFMTIiLCJGRjE5IiwiUzEuMyIsIkMxIiwiSUU4IiwiTzciXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiTmVpdGhlciBmb3JjZSBub3IgZm9yYmlkIGEgcGFnZSBicmVhayBpbnNpZGUgdGhlIGdlbmVyYXRlZCBib3guIn0se25hbWU6ImF2b2lkIixkZXNjcmlwdGlvbjoiQXZvaWQgYSBwYWdlIGJyZWFrIGluc2lkZSB0aGUgZ2VuZXJhdGVkIGJveC4ifV0sc3ludGF4OiJhdXRvIHwgYXZvaWQiLHJlbGV2YW5jZTo1MyxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvcGFnZS1icmVhay1pbnNpZGUifV0sZGVzY3JpcHRpb246IkRlZmluZXMgcnVsZXMgZm9yIHBhZ2UgYnJlYWtzIGluc2lkZSBhbiBlbGVtZW50LiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToicGFpbnQtb3JkZXIiLGJyb3dzZXJzOlsiRTc5IiwiRkY2MCIsIlMxMSIsIkMzNSIsIk8yMiJdLHZhbHVlczpbe25hbWU6ImZpbGwifSx7bmFtZToibWFya2VycyJ9LHtuYW1lOiJub3JtYWwiLGRlc2NyaXB0aW9uOiJUaGUgZWxlbWVudCBpcyBwYWludGVkIHdpdGggdGhlIHN0YW5kYXJkIG9yZGVyIG9mIHBhaW50aW5nIG9wZXJhdGlvbnM6IHRoZSAnZmlsbCcgaXMgcGFpbnRlZCBmaXJzdCwgdGhlbiBpdHMgJ3N0cm9rZScgYW5kIGZpbmFsbHkgaXRzIG1hcmtlcnMuIn0se25hbWU6InN0cm9rZSJ9XSxzeW50YXg6Im5vcm1hbCB8IFsgZmlsbCB8fCBzdHJva2UgfHwgbWFya2VycyBdIixyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3BhaW50LW9yZGVyIn1dLGRlc2NyaXB0aW9uOiJDb250cm9scyB0aGUgb3JkZXIgdGhhdCB0aGUgdGhyZWUgcGFpbnQgb3BlcmF0aW9ucyB0aGF0IHNoYXBlcyBhbmQgdGV4dCBhcmUgcmVuZGVyZWQgd2l0aDogdGhlaXIgZmlsbCwgdGhlaXIgc3Ryb2tlIGFuZCBhbnkgbWFya2VycyB0aGV5IG1pZ2h0IGhhdmUuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJwZXJzcGVjdGl2ZSIsYnJvd3NlcnM6WyJFMTIiLCJGRjE2IiwiUzkiLCJDMzYiLCJJRTEwIiwiTzIzIl0sdmFsdWVzOlt7bmFtZToibm9uZSIsZGVzY3JpcHRpb246Ik5vIHBlcnNwZWN0aXZlIHRyYW5zZm9ybSBpcyBhcHBsaWVkLiJ9XSxzeW50YXg6Im5vbmUgfCA8bGVuZ3RoPiIscmVsZXZhbmNlOjU1LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9wZXJzcGVjdGl2ZSJ9XSxkZXNjcmlwdGlvbjoiQXBwbGllcyB0aGUgc2FtZSB0cmFuc2Zvcm0gYXMgdGhlIHBlcnNwZWN0aXZlKDxudW1iZXI+KSB0cmFuc2Zvcm0gZnVuY3Rpb24sIGV4Y2VwdCB0aGF0IGl0IGFwcGxpZXMgb25seSB0byB0aGUgcG9zaXRpb25lZCBvciB0cmFuc2Zvcm1lZCBjaGlsZHJlbiBvZiB0aGUgZWxlbWVudCwgbm90IHRvIHRoZSB0cmFuc2Zvcm0gb24gdGhlIGVsZW1lbnQgaXRzZWxmLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwiZW51bSJdfSx7bmFtZToicGVyc3BlY3RpdmUtb3JpZ2luIixicm93c2VyczpbIkUxMiIsIkZGMTYiLCJTOSIsIkMzNiIsIklFMTAiLCJPMjMiXSxzeW50YXg6Ijxwb3NpdGlvbj4iLHJlbGV2YW5jZTo1MSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvcGVyc3BlY3RpdmUtb3JpZ2luIn1dLGRlc2NyaXB0aW9uOiJFc3RhYmxpc2hlcyB0aGUgb3JpZ2luIGZvciB0aGUgcGVyc3BlY3RpdmUgcHJvcGVydHkuIEl0IGVmZmVjdGl2ZWx5IHNldHMgdGhlIFggYW5kIFkgcG9zaXRpb24gYXQgd2hpY2ggdGhlIHZpZXdlciBhcHBlYXJzIHRvIGJlIGxvb2tpbmcgYXQgdGhlIGNoaWxkcmVuIG9mIHRoZSBlbGVtZW50LiIscmVzdHJpY3Rpb25zOlsicG9zaXRpb24iLCJwZXJjZW50YWdlIiwibGVuZ3RoIl19LHtuYW1lOiJwb2ludGVyLWV2ZW50cyIsYnJvd3NlcnM6WyJFMTIiLCJGRjEuNSIsIlM0IiwiQzEiLCJJRTExIiwiTzkiXSx2YWx1ZXM6W3tuYW1lOiJhbGwiLGRlc2NyaXB0aW9uOiJUaGUgZ2l2ZW4gZWxlbWVudCBjYW4gYmUgdGhlIHRhcmdldCBlbGVtZW50IGZvciBwb2ludGVyIGV2ZW50cyB3aGVuZXZlciB0aGUgcG9pbnRlciBpcyBvdmVyIGVpdGhlciB0aGUgaW50ZXJpb3Igb3IgdGhlIHBlcmltZXRlciBvZiB0aGUgZWxlbWVudC4ifSx7bmFtZToiZmlsbCIsZGVzY3JpcHRpb246IlRoZSBnaXZlbiBlbGVtZW50IGNhbiBiZSB0aGUgdGFyZ2V0IGVsZW1lbnQgZm9yIHBvaW50ZXIgZXZlbnRzIHdoZW5ldmVyIHRoZSBwb2ludGVyIGlzIG92ZXIgdGhlIGludGVyaW9yIG9mIHRoZSBlbGVtZW50LiJ9LHtuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiVGhlIGdpdmVuIGVsZW1lbnQgZG9lcyBub3QgcmVjZWl2ZSBwb2ludGVyIGV2ZW50cy4ifSx7bmFtZToicGFpbnRlZCIsZGVzY3JpcHRpb246J1RoZSBnaXZlbiBlbGVtZW50IGNhbiBiZSB0aGUgdGFyZ2V0IGVsZW1lbnQgZm9yIHBvaW50ZXIgZXZlbnRzIHdoZW4gdGhlIHBvaW50ZXIgaXMgb3ZlciBhICJwYWludGVkIiBhcmVhLiAnfSx7bmFtZToic3Ryb2tlIixkZXNjcmlwdGlvbjoiVGhlIGdpdmVuIGVsZW1lbnQgY2FuIGJlIHRoZSB0YXJnZXQgZWxlbWVudCBmb3IgcG9pbnRlciBldmVudHMgd2hlbmV2ZXIgdGhlIHBvaW50ZXIgaXMgb3ZlciB0aGUgcGVyaW1ldGVyIG9mIHRoZSBlbGVtZW50LiJ9LHtuYW1lOiJ2aXNpYmxlIixkZXNjcmlwdGlvbjoiVGhlIGdpdmVuIGVsZW1lbnQgY2FuIGJlIHRoZSB0YXJnZXQgZWxlbWVudCBmb3IgcG9pbnRlciBldmVudHMgd2hlbiB0aGUgJ3Zpc2liaWxpdHknIHByb3BlcnR5IGlzIHNldCB0byB2aXNpYmxlIGFuZCB0aGUgcG9pbnRlciBpcyBvdmVyIGVpdGhlciB0aGUgaW50ZXJpb3Igb3IgdGhlIHBlcmltZXRlciBvZiB0aGUgZWxlbWVudC4ifSx7bmFtZToidmlzaWJsZUZpbGwiLGRlc2NyaXB0aW9uOiJUaGUgZ2l2ZW4gZWxlbWVudCBjYW4gYmUgdGhlIHRhcmdldCBlbGVtZW50IGZvciBwb2ludGVyIGV2ZW50cyB3aGVuIHRoZSAndmlzaWJpbGl0eScgcHJvcGVydHkgaXMgc2V0IHRvIHZpc2libGUgYW5kIHdoZW4gdGhlIHBvaW50ZXIgaXMgb3ZlciB0aGUgaW50ZXJpb3Igb2YgdGhlIGVsZW1lbnQuIn0se25hbWU6InZpc2libGVQYWludGVkIixkZXNjcmlwdGlvbjoiVGhlIGdpdmVuIGVsZW1lbnQgY2FuIGJlIHRoZSB0YXJnZXQgZWxlbWVudCBmb3IgcG9pbnRlciBldmVudHMgd2hlbiB0aGUgJ3Zpc2liaWxpdHknIHByb3BlcnR5IGlzIHNldCB0byB2aXNpYmxlIGFuZCB3aGVuIHRoZSBwb2ludGVyIGlzIG92ZXIgYSAncGFpbnRlZCcgYXJlYS4ifSx7bmFtZToidmlzaWJsZVN0cm9rZSIsZGVzY3JpcHRpb246IlRoZSBnaXZlbiBlbGVtZW50IGNhbiBiZSB0aGUgdGFyZ2V0IGVsZW1lbnQgZm9yIHBvaW50ZXIgZXZlbnRzIHdoZW4gdGhlICd2aXNpYmlsaXR5JyBwcm9wZXJ0eSBpcyBzZXQgdG8gdmlzaWJsZSBhbmQgd2hlbiB0aGUgcG9pbnRlciBpcyBvdmVyIHRoZSBwZXJpbWV0ZXIgb2YgdGhlIGVsZW1lbnQuIn1dLHN5bnRheDoiYXV0byB8IG5vbmUgfCB2aXNpYmxlUGFpbnRlZCB8IHZpc2libGVGaWxsIHwgdmlzaWJsZVN0cm9rZSB8IHZpc2libGUgfCBwYWludGVkIHwgZmlsbCB8IHN0cm9rZSB8IGFsbCB8IGluaGVyaXQiLHJlbGV2YW5jZTo4MixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvcG9pbnRlci1ldmVudHMifV0sZGVzY3JpcHRpb246IlNwZWNpZmllcyB1bmRlciB3aGF0IGNpcmN1bXN0YW5jZXMgYSBnaXZlbiBlbGVtZW50IGNhbiBiZSB0aGUgdGFyZ2V0IGVsZW1lbnQgZm9yIGEgcG9pbnRlciBldmVudC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6InBvc2l0aW9uIixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxIiwiQzEiLCJJRTQiLCJPNCJdLHZhbHVlczpbe25hbWU6ImFic29sdXRlIixkZXNjcmlwdGlvbjoiVGhlIGJveCdzIHBvc2l0aW9uIChhbmQgcG9zc2libHkgc2l6ZSkgaXMgc3BlY2lmaWVkIHdpdGggdGhlICd0b3AnLCAncmlnaHQnLCAnYm90dG9tJywgYW5kICdsZWZ0JyBwcm9wZXJ0aWVzLiBUaGVzZSBwcm9wZXJ0aWVzIHNwZWNpZnkgb2Zmc2V0cyB3aXRoIHJlc3BlY3QgdG8gdGhlIGJveCdzICdjb250YWluaW5nIGJsb2NrJy4ifSx7bmFtZToiZml4ZWQiLGRlc2NyaXB0aW9uOiJUaGUgYm94J3MgcG9zaXRpb24gaXMgY2FsY3VsYXRlZCBhY2NvcmRpbmcgdG8gdGhlICdhYnNvbHV0ZScgbW9kZWwsIGJ1dCBpbiBhZGRpdGlvbiwgdGhlIGJveCBpcyBmaXhlZCB3aXRoIHJlc3BlY3QgdG8gc29tZSByZWZlcmVuY2UuIEFzIHdpdGggdGhlICdhYnNvbHV0ZScgbW9kZWwsIHRoZSBib3gncyBtYXJnaW5zIGRvIG5vdCBjb2xsYXBzZSB3aXRoIGFueSBvdGhlciBtYXJnaW5zLiJ9LHtuYW1lOiItbXMtcGFnZSIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMSIsIkMxIiwiSUU0IiwiTzQiXSxkZXNjcmlwdGlvbjoiVGhlIGJveCdzIHBvc2l0aW9uIGlzIGNhbGN1bGF0ZWQgYWNjb3JkaW5nIHRvIHRoZSAnYWJzb2x1dGUnIG1vZGVsLiJ9LHtuYW1lOiJyZWxhdGl2ZSIsZGVzY3JpcHRpb246IlRoZSBib3gncyBwb3NpdGlvbiBpcyBjYWxjdWxhdGVkIGFjY29yZGluZyB0byB0aGUgbm9ybWFsIGZsb3cgKHRoaXMgaXMgY2FsbGVkIHRoZSBwb3NpdGlvbiBpbiBub3JtYWwgZmxvdykuIFRoZW4gdGhlIGJveCBpcyBvZmZzZXQgcmVsYXRpdmUgdG8gaXRzIG5vcm1hbCBwb3NpdGlvbi4ifSx7bmFtZToic3RhdGljIixkZXNjcmlwdGlvbjoiVGhlIGJveCBpcyBhIG5vcm1hbCBib3gsIGxhaWQgb3V0IGFjY29yZGluZyB0byB0aGUgbm9ybWFsIGZsb3cuIFRoZSAndG9wJywgJ3JpZ2h0JywgJ2JvdHRvbScsIGFuZCAnbGVmdCcgcHJvcGVydGllcyBkbyBub3QgYXBwbHkuIn0se25hbWU6InN0aWNreSIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMSIsIkMxIiwiSUU0IiwiTzQiXSxkZXNjcmlwdGlvbjoiVGhlIGJveCdzIHBvc2l0aW9uIGlzIGNhbGN1bGF0ZWQgYWNjb3JkaW5nIHRvIHRoZSBub3JtYWwgZmxvdy4gVGhlbiB0aGUgYm94IGlzIG9mZnNldCByZWxhdGl2ZSB0byBpdHMgZmxvdyByb290IGFuZCBjb250YWluaW5nIGJsb2NrIGFuZCBpbiBhbGwgY2FzZXMsIGluY2x1ZGluZyB0YWJsZSBlbGVtZW50cywgZG9lcyBub3QgYWZmZWN0IHRoZSBwb3NpdGlvbiBvZiBhbnkgZm9sbG93aW5nIGJveGVzLiJ9LHtuYW1lOiItd2Via2l0LXN0aWNreSIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMSIsIkMxIiwiSUU0IiwiTzQiXSxkZXNjcmlwdGlvbjoiVGhlIGJveCdzIHBvc2l0aW9uIGlzIGNhbGN1bGF0ZWQgYWNjb3JkaW5nIHRvIHRoZSBub3JtYWwgZmxvdy4gVGhlbiB0aGUgYm94IGlzIG9mZnNldCByZWxhdGl2ZSB0byBpdHMgZmxvdyByb290IGFuZCBjb250YWluaW5nIGJsb2NrIGFuZCBpbiBhbGwgY2FzZXMsIGluY2x1ZGluZyB0YWJsZSBlbGVtZW50cywgZG9lcyBub3QgYWZmZWN0IHRoZSBwb3NpdGlvbiBvZiBhbnkgZm9sbG93aW5nIGJveGVzLiJ9XSxzeW50YXg6InN0YXRpYyB8IHJlbGF0aXZlIHwgYWJzb2x1dGUgfCBzdGlja3kgfCBmaXhlZCIscmVsZXZhbmNlOjk1LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9wb3NpdGlvbiJ9XSxkZXNjcmlwdGlvbjoiVGhlIHBvc2l0aW9uIENTUyBwcm9wZXJ0eSBzZXRzIGhvdyBhbiBlbGVtZW50IGlzIHBvc2l0aW9uZWQgaW4gYSBkb2N1bWVudC4gVGhlIHRvcCwgcmlnaHQsIGJvdHRvbSwgYW5kIGxlZnQgcHJvcGVydGllcyBkZXRlcm1pbmUgdGhlIGZpbmFsIGxvY2F0aW9uIG9mIHBvc2l0aW9uZWQgZWxlbWVudHMuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJwcmVmaXgiLGJyb3dzZXJzOlsiRkYzMyJdLGF0UnVsZToiQGNvdW50ZXItc3R5bGUiLHN5bnRheDoiPHN5bWJvbD4iLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiQGNvdW50ZXItc3R5bGUgZGVzY3JpcHRvci4gU3BlY2lmaWVzIGEgPHN5bWJvbD4gdGhhdCBpcyBwcmVwZW5kZWQgdG8gdGhlIG1hcmtlciByZXByZXNlbnRhdGlvbi4iLHJlc3RyaWN0aW9uczpbImltYWdlIiwic3RyaW5nIiwiaWRlbnRpZmllciJdfSx7bmFtZToicXVvdGVzIixicm93c2VyczpbIkUxMiIsIkZGMS41IiwiUzkiLCJDMTEiLCJJRTgiLCJPNCJdLHZhbHVlczpbe25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJUaGUgJ29wZW4tcXVvdGUnIGFuZCAnY2xvc2UtcXVvdGUnIHZhbHVlcyBvZiB0aGUgJ2NvbnRlbnQnIHByb3BlcnR5IHByb2R1Y2Ugbm8gcXVvdGF0aW9ucyBtYXJrcywgYXMgaWYgdGhleSB3ZXJlICduby1vcGVuLXF1b3RlJyBhbmQgJ25vLWNsb3NlLXF1b3RlJyByZXNwZWN0aXZlbHkuIn1dLHN5bnRheDoibm9uZSB8IGF1dG8gfCBbIDxzdHJpbmc+IDxzdHJpbmc+IF0rIixyZWxldmFuY2U6NTMscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3F1b3RlcyJ9XSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHF1b3RhdGlvbiBtYXJrcyBmb3IgYW55IG51bWJlciBvZiBlbWJlZGRlZCBxdW90YXRpb25zLiIscmVzdHJpY3Rpb25zOlsic3RyaW5nIl19LHtuYW1lOiJyYW5nZSIsYnJvd3NlcnM6WyJGRjMzIl0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IlRoZSByYW5nZSBkZXBlbmRzIG9uIHRoZSBjb3VudGVyIHN5c3RlbS4ifSx7bmFtZToiaW5maW5pdGUiLGRlc2NyaXB0aW9uOiJJZiB1c2VkIGFzIHRoZSBmaXJzdCB2YWx1ZSBpbiBhIHJhbmdlLCBpdCByZXByZXNlbnRzIG5lZ2F0aXZlIGluZmluaXR5OyBpZiB1c2VkIGFzIHRoZSBzZWNvbmQgdmFsdWUsIGl0IHJlcHJlc2VudHMgcG9zaXRpdmUgaW5maW5pdHkuIn1dLGF0UnVsZToiQGNvdW50ZXItc3R5bGUiLHN5bnRheDoiWyBbIDxpbnRlZ2VyPiB8IGluZmluaXRlIF17Mn0gXSMgfCBhdXRvIixyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkBjb3VudGVyLXN0eWxlIGRlc2NyaXB0b3IuIERlZmluZXMgdGhlIHJhbmdlcyBvdmVyIHdoaWNoIHRoZSBjb3VudGVyIHN0eWxlIGlzIGRlZmluZWQuIixyZXN0cmljdGlvbnM6WyJpbnRlZ2VyIiwiZW51bSJdfSx7bmFtZToicmVzaXplIixicm93c2VyczpbIkU3OSIsIkZGNCIsIlMzIiwiQzEiLCJPMTIuMSJdLHZhbHVlczpbe25hbWU6ImJvdGgiLGRlc2NyaXB0aW9uOiJUaGUgVUEgcHJlc2VudHMgYSBiaWRpcmVjdGlvbmFsIHJlc2l6aW5nIG1lY2hhbmlzbSB0byBhbGxvdyB0aGUgdXNlciB0byBhZGp1c3QgYm90aCB0aGUgaGVpZ2h0IGFuZCB0aGUgd2lkdGggb2YgdGhlIGVsZW1lbnQuIn0se25hbWU6Imhvcml6b250YWwiLGRlc2NyaXB0aW9uOiJUaGUgVUEgcHJlc2VudHMgYSB1bmlkaXJlY3Rpb25hbCBob3Jpem9udGFsIHJlc2l6aW5nIG1lY2hhbmlzbSB0byBhbGxvdyB0aGUgdXNlciB0byBhZGp1c3Qgb25seSB0aGUgd2lkdGggb2YgdGhlIGVsZW1lbnQuIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJUaGUgVUEgZG9lcyBub3QgcHJlc2VudCBhIHJlc2l6aW5nIG1lY2hhbmlzbSBvbiB0aGUgZWxlbWVudCwgYW5kIHRoZSB1c2VyIGlzIGdpdmVuIG5vIGRpcmVjdCBtYW5pcHVsYXRpb24gbWVjaGFuaXNtIHRvIHJlc2l6ZSB0aGUgZWxlbWVudC4ifSx7bmFtZToidmVydGljYWwiLGRlc2NyaXB0aW9uOiJUaGUgVUEgcHJlc2VudHMgYSB1bmlkaXJlY3Rpb25hbCB2ZXJ0aWNhbCByZXNpemluZyBtZWNoYW5pc20gdG8gYWxsb3cgdGhlIHVzZXIgdG8gYWRqdXN0IG9ubHkgdGhlIGhlaWdodCBvZiB0aGUgZWxlbWVudC4ifV0sc3ludGF4OiJub25lIHwgYm90aCB8IGhvcml6b250YWwgfCB2ZXJ0aWNhbCB8IGJsb2NrIHwgaW5saW5lIixyZWxldmFuY2U6NjYscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3Jlc2l6ZSJ9XSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHdoZXRoZXIgb3Igbm90IGFuIGVsZW1lbnQgaXMgcmVzaXphYmxlIGJ5IHRoZSB1c2VyLCBhbmQgaWYgc28sIGFsb25nIHdoaWNoIGF4aXMvYXhlcy4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6InJpZ2h0Iixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxIiwiQzEiLCJJRTUuNSIsIk81Il0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IkZvciBub24tcmVwbGFjZWQgZWxlbWVudHMsIHRoZSBlZmZlY3Qgb2YgdGhpcyB2YWx1ZSBkZXBlbmRzIG9uIHdoaWNoIG9mIHJlbGF0ZWQgcHJvcGVydGllcyBoYXZlIHRoZSB2YWx1ZSAnYXV0bycgYXMgd2VsbCJ9XSxzeW50YXg6IjxsZW5ndGg+IHwgPHBlcmNlbnRhZ2U+IHwgYXV0byIscmVsZXZhbmNlOjkxLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9yaWdodCJ9XSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGhvdyBmYXIgYW4gYWJzb2x1dGVseSBwb3NpdGlvbmVkIGJveCdzIHJpZ2h0IG1hcmdpbiBlZGdlIGlzIG9mZnNldCB0byB0aGUgbGVmdCBvZiB0aGUgcmlnaHQgZWRnZSBvZiB0aGUgYm94J3MgJ2NvbnRhaW5pbmcgYmxvY2snLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToicnVieS1hbGlnbiIsYnJvd3NlcnM6WyJGRjM4IiwiU3ByZXZpZXciXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixicm93c2VyczpbIkZGMzgiLCJTcHJldmlldyJdLGRlc2NyaXB0aW9uOiJUaGUgdXNlciBhZ2VudCBkZXRlcm1pbmVzIGhvdyB0aGUgcnVieSBjb250ZW50cyBhcmUgYWxpZ25lZC4gVGhpcyBpcyB0aGUgaW5pdGlhbCB2YWx1ZS4ifSx7bmFtZToiY2VudGVyIixkZXNjcmlwdGlvbjoiVGhlIHJ1YnkgY29udGVudCBpcyBjZW50ZXJlZCB3aXRoaW4gaXRzIGJveC4ifSx7bmFtZToiZGlzdHJpYnV0ZS1sZXR0ZXIiLGJyb3dzZXJzOlsiRkYzOCIsIlNwcmV2aWV3Il0sZGVzY3JpcHRpb246IklmIHRoZSB3aWR0aCBvZiB0aGUgcnVieSB0ZXh0IGlzIHNtYWxsZXIgdGhhbiB0aGF0IG9mIHRoZSBiYXNlLCB0aGVuIHRoZSBydWJ5IHRleHQgY29udGVudHMgYXJlIGV2ZW5seSBkaXN0cmlidXRlZCBhY3Jvc3MgdGhlIHdpZHRoIG9mIHRoZSBiYXNlLCB3aXRoIHRoZSBmaXJzdCBhbmQgbGFzdCBydWJ5IHRleHQgZ2x5cGhzIGxpbmluZyB1cCB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIGZpcnN0IGFuZCBsYXN0IGJhc2UgZ2x5cGhzLiBJZiB0aGUgd2lkdGggb2YgdGhlIHJ1YnkgdGV4dCBpcyBhdCBsZWFzdCB0aGUgd2lkdGggb2YgdGhlIGJhc2UsIHRoZW4gdGhlIGxldHRlcnMgb2YgdGhlIGJhc2UgYXJlIGV2ZW5seSBkaXN0cmlidXRlZCBhY3Jvc3MgdGhlIHdpZHRoIG9mIHRoZSBydWJ5IHRleHQuIn0se25hbWU6ImRpc3RyaWJ1dGUtc3BhY2UiLGJyb3dzZXJzOlsiRkYzOCIsIlNwcmV2aWV3Il0sZGVzY3JpcHRpb246IklmIHRoZSB3aWR0aCBvZiB0aGUgcnVieSB0ZXh0IGlzIHNtYWxsZXIgdGhhbiB0aGF0IG9mIHRoZSBiYXNlLCB0aGVuIHRoZSBydWJ5IHRleHQgY29udGVudHMgYXJlIGV2ZW5seSBkaXN0cmlidXRlZCBhY3Jvc3MgdGhlIHdpZHRoIG9mIHRoZSBiYXNlLCB3aXRoIGEgY2VydGFpbiBhbW91bnQgb2Ygd2hpdGUgc3BhY2UgcHJlY2VkaW5nIHRoZSBmaXJzdCBhbmQgZm9sbG93aW5nIHRoZSBsYXN0IGNoYXJhY3RlciBpbiB0aGUgcnVieSB0ZXh0LiBUaGF0IGFtb3VudCBvZiB3aGl0ZSBzcGFjZSBpcyBub3JtYWxseSBlcXVhbCB0byBoYWxmIHRoZSBhbW91bnQgb2YgaW50ZXItY2hhcmFjdGVyIHNwYWNlIG9mIHRoZSBydWJ5IHRleHQuIn0se25hbWU6ImxlZnQiLGRlc2NyaXB0aW9uOiJUaGUgcnVieSB0ZXh0IGNvbnRlbnQgaXMgYWxpZ25lZCB3aXRoIHRoZSBzdGFydCBlZGdlIG9mIHRoZSBiYXNlLiJ9LHtuYW1lOiJsaW5lLWVkZ2UiLGJyb3dzZXJzOlsiRkYzOCIsIlNwcmV2aWV3Il0sZGVzY3JpcHRpb246IklmIHRoZSBydWJ5IHRleHQgaXMgbm90IGFkamFjZW50IHRvIGEgbGluZSBlZGdlLCBpdCBpcyBhbGlnbmVkIGFzIGluICdhdXRvJy4gSWYgaXQgaXMgYWRqYWNlbnQgdG8gYSBsaW5lIGVkZ2UsIHRoZW4gaXQgaXMgc3RpbGwgYWxpZ25lZCBhcyBpbiBhdXRvLCBidXQgdGhlIHNpZGUgb2YgdGhlIHJ1YnkgdGV4dCB0aGF0IHRvdWNoZXMgdGhlIGVuZCBvZiB0aGUgbGluZSBpcyBsaW5lZCB1cCB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIGVkZ2Ugb2YgdGhlIGJhc2UuIn0se25hbWU6InJpZ2h0Iixicm93c2VyczpbIkZGMzgiLCJTcHJldmlldyJdLGRlc2NyaXB0aW9uOiJUaGUgcnVieSB0ZXh0IGNvbnRlbnQgaXMgYWxpZ25lZCB3aXRoIHRoZSBlbmQgZWRnZSBvZiB0aGUgYmFzZS4ifSx7bmFtZToic3RhcnQiLGJyb3dzZXJzOlsiRkYzOCIsIlNwcmV2aWV3Il0sZGVzY3JpcHRpb246IlRoZSBydWJ5IHRleHQgY29udGVudCBpcyBhbGlnbmVkIHdpdGggdGhlIHN0YXJ0IGVkZ2Ugb2YgdGhlIGJhc2UuIn0se25hbWU6InNwYWNlLWJldHdlZW4iLGJyb3dzZXJzOlsiRkYzOCIsIlNwcmV2aWV3Il0sZGVzY3JpcHRpb246IlRoZSBydWJ5IGNvbnRlbnQgZXhwYW5kcyBhcyBkZWZpbmVkIGZvciBub3JtYWwgdGV4dCBqdXN0aWZpY2F0aW9uIChhcyBkZWZpbmVkIGJ5ICd0ZXh0LWp1c3RpZnknKSwifSx7bmFtZToic3BhY2UtYXJvdW5kIixicm93c2VyczpbIkZGMzgiLCJTcHJldmlldyJdLGRlc2NyaXB0aW9uOiJBcyBmb3IgJ3NwYWNlLWJldHdlZW4nIGV4Y2VwdCB0aGF0IHRoZXJlIGV4aXN0cyBhbiBleHRyYSBqdXN0aWZpY2F0aW9uIG9wcG9ydHVuaXRpZXMgd2hvc2Ugc3BhY2UgaXMgZGlzdHJpYnV0ZWQgaGFsZiBiZWZvcmUgYW5kIGhhbGYgYWZ0ZXIgdGhlIHJ1YnkgY29udGVudC4ifV0sc3RhdHVzOiJleHBlcmltZW50YWwiLHN5bnRheDoic3RhcnQgfCBjZW50ZXIgfCBzcGFjZS1iZXR3ZWVuIHwgc3BhY2UtYXJvdW5kIixyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3J1YnktYWxpZ24ifV0sZGVzY3JpcHRpb246IlNwZWNpZmllcyBob3cgdGV4dCBpcyBkaXN0cmlidXRlZCB3aXRoaW4gdGhlIHZhcmlvdXMgcnVieSBib3hlcyB3aGVuIHRoZWlyIGNvbnRlbnRzIGRvIG5vdCBleGFjdGx5IGZpbGwgdGhlaXIgcmVzcGVjdGl2ZSBib3hlcy4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6InJ1Ynktb3ZlcmhhbmciLGJyb3dzZXJzOlsiRkYxMCIsIklFNSJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJUaGUgcnVieSB0ZXh0IGNhbiBvdmVyaGFuZyB0ZXh0IGFkamFjZW50IHRvIHRoZSBiYXNlIG9uIGVpdGhlciBzaWRlLiBUaGlzIGlzIHRoZSBpbml0aWFsIHZhbHVlLiJ9LHtuYW1lOiJlbmQiLGRlc2NyaXB0aW9uOiJUaGUgcnVieSB0ZXh0IGNhbiBvdmVyaGFuZyB0aGUgdGV4dCB0aGF0IGZvbGxvd3MgaXQuIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJUaGUgcnVieSB0ZXh0IGNhbm5vdCBvdmVyaGFuZyBhbnkgdGV4dCBhZGphY2VudCB0byBpdHMgYmFzZSwgb25seSBpdHMgb3duIGJhc2UuIn0se25hbWU6InN0YXJ0IixkZXNjcmlwdGlvbjoiVGhlIHJ1YnkgdGV4dCBjYW4gb3ZlcmhhbmcgdGhlIHRleHQgdGhhdCBwcmVjZWRlcyBpdC4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJEZXRlcm1pbmVzIHdoZXRoZXIsIGFuZCBvbiB3aGljaCBzaWRlLCBydWJ5IHRleHQgaXMgYWxsb3dlZCB0byBwYXJ0aWFsbHkgb3ZlcmhhbmcgYW55IGFkamFjZW50IHRleHQgaW4gYWRkaXRpb24gdG8gaXRzIG93biBiYXNlLCB3aGVuIHRoZSBydWJ5IHRleHQgaXMgd2lkZXIgdGhhbiB0aGUgcnVieSBiYXNlLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToicnVieS1wb3NpdGlvbiIsYnJvd3NlcnM6WyJFODQiLCJGRjM4IiwiUzciLCJDODQiLCJPNzAiXSx2YWx1ZXM6W3tuYW1lOiJhZnRlciIsZGVzY3JpcHRpb246IlRoZSBydWJ5IHRleHQgYXBwZWFycyBhZnRlciB0aGUgYmFzZS4gVGhpcyBpcyBhIHJlbGF0aXZlbHkgcmFyZSBzZXR0aW5nIHVzZWQgaW4gaWRlb2dyYXBoaWMgRWFzdCBBc2lhbiB3cml0aW5nIHN5c3RlbXMsIG1vc3QgZWFzaWx5IGZvdW5kIGluIGVkdWNhdGlvbmFsIHRleHQuIn0se25hbWU6ImJlZm9yZSIsZGVzY3JpcHRpb246IlRoZSBydWJ5IHRleHQgYXBwZWFycyBiZWZvcmUgdGhlIGJhc2UuIFRoaXMgaXMgdGhlIG1vc3QgY29tbW9uIHNldHRpbmcgdXNlZCBpbiBpZGVvZ3JhcGhpYyBFYXN0IEFzaWFuIHdyaXRpbmcgc3lzdGVtcy4ifSx7bmFtZToiaW5saW5lIn0se25hbWU6InJpZ2h0IixkZXNjcmlwdGlvbjoiVGhlIHJ1YnkgdGV4dCBhcHBlYXJzIG9uIHRoZSByaWdodCBvZiB0aGUgYmFzZS4gVW5saWtlICdiZWZvcmUnIGFuZCAnYWZ0ZXInLCB0aGlzIHZhbHVlIGlzIG5vdCByZWxhdGl2ZSB0byB0aGUgdGV4dCBmbG93IGRpcmVjdGlvbi4ifV0sc3ludGF4OiJbIGFsdGVybmF0ZSB8fCBbIG92ZXIgfCB1bmRlciBdIF0gfCBpbnRlci1jaGFyYWN0ZXIiLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvcnVieS1wb3NpdGlvbiJ9XSxkZXNjcmlwdGlvbjoiVXNlZCBieSB0aGUgcGFyZW50IG9mIGVsZW1lbnRzIHdpdGggZGlzcGxheTogcnVieS10ZXh0IHRvIGNvbnRyb2wgdGhlIHBvc2l0aW9uIG9mIHRoZSBydWJ5IHRleHQgd2l0aCByZXNwZWN0IHRvIGl0cyBiYXNlLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToicnVieS1zcGFuIixicm93c2VyczpbIkZGMTAiXSx2YWx1ZXM6W3tuYW1lOiJhdHRyKHgpIixkZXNjcmlwdGlvbjoiVGhlIHZhbHVlIG9mIGF0dHJpYnV0ZSAneCcgaXMgYSBzdHJpbmcgdmFsdWUuIFRoZSBzdHJpbmcgdmFsdWUgaXMgZXZhbHVhdGVkIGFzIGEgPG51bWJlcj4gdG8gZGV0ZXJtaW5lIHRoZSBudW1iZXIgb2YgcnVieSBiYXNlIGVsZW1lbnRzIHRvIGJlIHNwYW5uZWQgYnkgdGhlIGFubm90YXRpb24gZWxlbWVudC4ifSx7bmFtZToibm9uZSIsZGVzY3JpcHRpb246Ik5vIHNwYW5uaW5nLiBUaGUgY29tcHV0ZWQgdmFsdWUgaXMgJzEnLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkRldGVybWluZXMgd2hldGhlciwgYW5kIG9uIHdoaWNoIHNpZGUsIHJ1YnkgdGV4dCBpcyBhbGxvd2VkIHRvIHBhcnRpYWxseSBvdmVyaGFuZyBhbnkgYWRqYWNlbnQgdGV4dCBpbiBhZGRpdGlvbiB0byBpdHMgb3duIGJhc2UsIHdoZW4gdGhlIHJ1YnkgdGV4dCBpcyB3aWRlciB0aGFuIHRoZSBydWJ5IGJhc2UuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJzY3JvbGxiYXItM2RsaWdodC1jb2xvciIsYnJvd3NlcnM6WyJJRTUiXSxyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3Njcm9sbGJhci0zZGxpZ2h0LWNvbG9yIn1dLGRlc2NyaXB0aW9uOiJEZXRlcm1pbmVzIHRoZSBjb2xvciBvZiB0aGUgdG9wIGFuZCBsZWZ0IGVkZ2VzIG9mIHRoZSBzY3JvbGwgYm94IGFuZCBzY3JvbGwgYXJyb3dzIG9mIGEgc2Nyb2xsIGJhci4iLHJlc3RyaWN0aW9uczpbImNvbG9yIl19LHtuYW1lOiJzY3JvbGxiYXItYXJyb3ctY29sb3IiLGJyb3dzZXJzOlsiSUU1Il0scmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9zY3JvbGxiYXItYXJyb3ctY29sb3IifV0sZGVzY3JpcHRpb246IkRldGVybWluZXMgdGhlIGNvbG9yIG9mIHRoZSBhcnJvdyBlbGVtZW50cyBvZiBhIHNjcm9sbCBhcnJvdy4iLHJlc3RyaWN0aW9uczpbImNvbG9yIl19LHtuYW1lOiJzY3JvbGxiYXItYmFzZS1jb2xvciIsYnJvd3NlcnM6WyJJRTUiXSxyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3Njcm9sbGJhci1iYXNlLWNvbG9yIn1dLGRlc2NyaXB0aW9uOiJEZXRlcm1pbmVzIHRoZSBjb2xvciBvZiB0aGUgbWFpbiBlbGVtZW50cyBvZiBhIHNjcm9sbCBiYXIsIHdoaWNoIGluY2x1ZGUgdGhlIHNjcm9sbCBib3gsIHRyYWNrLCBhbmQgc2Nyb2xsIGFycm93cy4iLHJlc3RyaWN0aW9uczpbImNvbG9yIl19LHtuYW1lOiJzY3JvbGxiYXItZGFya3NoYWRvdy1jb2xvciIsYnJvd3NlcnM6WyJJRTUiXSxyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3Njcm9sbGJhci1kYXJrc2hhZG93LWNvbG9yIn1dLGRlc2NyaXB0aW9uOiJEZXRlcm1pbmVzIHRoZSBjb2xvciBvZiB0aGUgZ3V0dGVyIG9mIGEgc2Nyb2xsIGJhci4iLHJlc3RyaWN0aW9uczpbImNvbG9yIl19LHtuYW1lOiJzY3JvbGxiYXItZmFjZS1jb2xvciIsYnJvd3NlcnM6WyJJRTUiXSxyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3Njcm9sbGJhci1mYWNlLWNvbG9yIn1dLGRlc2NyaXB0aW9uOiJEZXRlcm1pbmVzIHRoZSBjb2xvciBvZiB0aGUgc2Nyb2xsIGJveCBhbmQgc2Nyb2xsIGFycm93cyBvZiBhIHNjcm9sbCBiYXIuIixyZXN0cmljdGlvbnM6WyJjb2xvciJdfSx7bmFtZToic2Nyb2xsYmFyLWhpZ2hsaWdodC1jb2xvciIsYnJvd3NlcnM6WyJJRTUiXSxyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3Njcm9sbGJhci1oaWdobGlnaHQtY29sb3IifV0sZGVzY3JpcHRpb246IkRldGVybWluZXMgdGhlIGNvbG9yIG9mIHRoZSB0b3AgYW5kIGxlZnQgZWRnZXMgb2YgdGhlIHNjcm9sbCBib3ggYW5kIHNjcm9sbCBhcnJvd3Mgb2YgYSBzY3JvbGwgYmFyLiIscmVzdHJpY3Rpb25zOlsiY29sb3IiXX0se25hbWU6InNjcm9sbGJhci1zaGFkb3ctY29sb3IiLGJyb3dzZXJzOlsiSUU1Il0scmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9zY3JvbGxiYXItc2hhZG93LWNvbG9yIn1dLGRlc2NyaXB0aW9uOiJEZXRlcm1pbmVzIHRoZSBjb2xvciBvZiB0aGUgYm90dG9tIGFuZCByaWdodCBlZGdlcyBvZiB0aGUgc2Nyb2xsIGJveCBhbmQgc2Nyb2xsIGFycm93cyBvZiBhIHNjcm9sbCBiYXIuIixyZXN0cmljdGlvbnM6WyJjb2xvciJdfSx7bmFtZToic2Nyb2xsYmFyLXRyYWNrLWNvbG9yIixicm93c2VyczpbIklFNiJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRGV0ZXJtaW5lcyB0aGUgY29sb3Igb2YgdGhlIHRyYWNrIGVsZW1lbnQgb2YgYSBzY3JvbGwgYmFyLiIscmVzdHJpY3Rpb25zOlsiY29sb3IiXX0se25hbWU6InNjcm9sbC1iZWhhdmlvciIsYnJvd3NlcnM6WyJFNzkiLCJGRjM2IiwiUzE1LjQiLCJDNjEiLCJPNDgiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiU2Nyb2xscyBpbiBhbiBpbnN0YW50IGZhc2hpb24uIn0se25hbWU6InNtb290aCIsZGVzY3JpcHRpb246IlNjcm9sbHMgaW4gYSBzbW9vdGggZmFzaGlvbiB1c2luZyBhIHVzZXItYWdlbnQtZGVmaW5lZCB0aW1pbmcgZnVuY3Rpb24gYW5kIHRpbWUgcGVyaW9kLiJ9XSxzeW50YXg6ImF1dG8gfCBzbW9vdGgiLHJlbGV2YW5jZTo1NSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvc2Nyb2xsLWJlaGF2aW9yIn1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhlIHNjcm9sbGluZyBiZWhhdmlvciBmb3IgYSBzY3JvbGxpbmcgYm94LCB3aGVuIHNjcm9sbGluZyBoYXBwZW5zIGR1ZSB0byBuYXZpZ2F0aW9uIG9yIENTU09NIHNjcm9sbGluZyBBUElzLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToic2Nyb2xsLXNuYXAtY29vcmRpbmF0ZSIsYnJvd3NlcnM6WyJGRjM5Il0sdmFsdWVzOlt7bmFtZToibm9uZSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGF0IHRoaXMgZWxlbWVudCBkb2VzIG5vdCBjb250cmlidXRlIGEgc25hcCBwb2ludC4ifV0sc3RhdHVzOiJvYnNvbGV0ZSIsc3ludGF4OiJub25lIHwgPHBvc2l0aW9uPiMiLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJEZWZpbmVzIHRoZSB4IGFuZCB5IGNvb3JkaW5hdGUgd2l0aGluIHRoZSBlbGVtZW50IHdoaWNoIHdpbGwgYWxpZ24gd2l0aCB0aGUgbmVhcmVzdCBhbmNlc3RvciBzY3JvbGwgY29udGFpbmVyJ3Mgc25hcC1kZXN0aW5hdGlvbiBmb3IgdGhlIHJlc3BlY3RpdmUgYXhpcy4iLHJlc3RyaWN0aW9uczpbInBvc2l0aW9uIiwibGVuZ3RoIiwicGVyY2VudGFnZSIsImVudW0iXX0se25hbWU6InNjcm9sbC1zbmFwLWRlc3RpbmF0aW9uIixicm93c2VyczpbIkZGMzkiXSxzdGF0dXM6Im9ic29sZXRlIixzeW50YXg6Ijxwb3NpdGlvbj4iLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJEZWZpbmUgdGhlIHggYW5kIHkgY29vcmRpbmF0ZSB3aXRoaW4gdGhlIHNjcm9sbCBjb250YWluZXIncyB2aXN1YWwgdmlld3BvcnQgd2hpY2ggZWxlbWVudCBzbmFwIHBvaW50cyB3aWxsIGFsaWduIHdpdGguIixyZXN0cmljdGlvbnM6WyJwb3NpdGlvbiIsImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6InNjcm9sbC1zbmFwLXBvaW50cy14Iixicm93c2VyczpbIkZGMzkiXSx2YWx1ZXM6W3tuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiTm8gc25hcCBwb2ludHMgYXJlIGRlZmluZWQgYnkgdGhpcyBzY3JvbGwgY29udGFpbmVyLiJ9LHtuYW1lOiJyZXBlYXQoKSIsZGVzY3JpcHRpb246IkRlZmluZXMgYW4gaW50ZXJ2YWwgYXQgd2hpY2ggc25hcCBwb2ludHMgYXJlIGRlZmluZWQsIHN0YXJ0aW5nIGZyb20gdGhlIGNvbnRhaW5lcidzIHJlbGV2YW50IHN0YXJ0IGVkZ2UuIn1dLHN0YXR1czoib2Jzb2xldGUiLHN5bnRheDoibm9uZSB8IHJlcGVhdCggPGxlbmd0aC1wZXJjZW50YWdlPiApIixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiRGVmaW5lcyB0aGUgcG9zaXRpb25pbmcgb2Ygc25hcCBwb2ludHMgYWxvbmcgdGhlIHggYXhpcyBvZiB0aGUgc2Nyb2xsIGNvbnRhaW5lciBpdCBpcyBhcHBsaWVkIHRvLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToic2Nyb2xsLXNuYXAtcG9pbnRzLXkiLGJyb3dzZXJzOlsiRkYzOSJdLHZhbHVlczpbe25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJObyBzbmFwIHBvaW50cyBhcmUgZGVmaW5lZCBieSB0aGlzIHNjcm9sbCBjb250YWluZXIuIn0se25hbWU6InJlcGVhdCgpIixkZXNjcmlwdGlvbjoiRGVmaW5lcyBhbiBpbnRlcnZhbCBhdCB3aGljaCBzbmFwIHBvaW50cyBhcmUgZGVmaW5lZCwgc3RhcnRpbmcgZnJvbSB0aGUgY29udGFpbmVyJ3MgcmVsZXZhbnQgc3RhcnQgZWRnZS4ifV0sc3RhdHVzOiJvYnNvbGV0ZSIsc3ludGF4OiJub25lIHwgcmVwZWF0KCA8bGVuZ3RoLXBlcmNlbnRhZ2U+ICkiLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJEZWZpbmVzIHRoZSBwb3NpdGlvbmluZyBvZiBzbmFwIHBvaW50cyBhbG9uZyB0aGUgeSBheGlzIG9mIHRoZSBzY3JvbGwgY29udGFpbmVyIGl0IGlzIGFwcGxpZWQgdG8uIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJzY3JvbGwtc25hcC10eXBlIixicm93c2VyczpbIkU3OSIsIkZGOTkiLCJTMTEiLCJDNjkiLCJJRTEwIiwiTzU2Il0sdmFsdWVzOlt7bmFtZToibm9uZSIsZGVzY3JpcHRpb246IlRoZSB2aXN1YWwgdmlld3BvcnQgb2YgdGhpcyBzY3JvbGwgY29udGFpbmVyIG11c3QgaWdub3JlIHNuYXAgcG9pbnRzLCBpZiBhbnksIHdoZW4gc2Nyb2xsZWQuIn0se25hbWU6Im1hbmRhdG9yeSIsZGVzY3JpcHRpb246IlRoZSB2aXN1YWwgdmlld3BvcnQgb2YgdGhpcyBzY3JvbGwgY29udGFpbmVyIGlzIGd1YXJhbnRlZWQgdG8gcmVzdCBvbiBhIHNuYXAgcG9pbnQgd2hlbiB0aGVyZSBhcmUgbm8gYWN0aXZlIHNjcm9sbGluZyBvcGVyYXRpb25zLiJ9LHtuYW1lOiJwcm94aW1pdHkiLGRlc2NyaXB0aW9uOiJUaGUgdmlzdWFsIHZpZXdwb3J0IG9mIHRoaXMgc2Nyb2xsIGNvbnRhaW5lciBtYXkgY29tZSB0byByZXN0IG9uIGEgc25hcCBwb2ludCBhdCB0aGUgdGVybWluYXRpb24gb2YgYSBzY3JvbGwgYXQgdGhlIGRpc2NyZXRpb24gb2YgdGhlIFVBIGdpdmVuIHRoZSBwYXJhbWV0ZXJzIG9mIHRoZSBzY3JvbGwuIn1dLHN5bnRheDoibm9uZSB8IFsgeCB8IHkgfCBibG9jayB8IGlubGluZSB8IGJvdGggXSBbIG1hbmRhdG9yeSB8IHByb3hpbWl0eSBdPyIscmVsZXZhbmNlOjUzLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9zY3JvbGwtc25hcC10eXBlIn1dLGRlc2NyaXB0aW9uOiJEZWZpbmVzIGhvdyBzdHJpY3RseSBzbmFwIHBvaW50cyBhcmUgZW5mb3JjZWQgb24gdGhlIHNjcm9sbCBjb250YWluZXIuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJzaGFwZS1pbWFnZS10aHJlc2hvbGQiLGJyb3dzZXJzOlsiRTc5IiwiRkY2MiIsIlMxMC4xIiwiQzM3IiwiTzI0Il0sc3ludGF4OiI8YWxwaGEtdmFsdWU+IixyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3NoYXBlLWltYWdlLXRocmVzaG9sZCJ9XSxkZXNjcmlwdGlvbjoiRGVmaW5lcyB0aGUgYWxwaGEgY2hhbm5lbCB0aHJlc2hvbGQgdXNlZCB0byBleHRyYWN0IHRoZSBzaGFwZSB1c2luZyBhbiBpbWFnZS4gQSB2YWx1ZSBvZiAwLjUgbWVhbnMgdGhhdCB0aGUgc2hhcGUgd2lsbCBlbmNsb3NlIGFsbCB0aGUgcGl4ZWxzIHRoYXQgYXJlIG1vcmUgdGhhbiA1MCUgb3BhcXVlLiIscmVzdHJpY3Rpb25zOlsibnVtYmVyIl19LHtuYW1lOiJzaGFwZS1tYXJnaW4iLGJyb3dzZXJzOlsiRTc5IiwiRkY2MiIsIlMxMC4xIiwiQzM3IiwiTzI0Il0sc3ludGF4OiI8bGVuZ3RoLXBlcmNlbnRhZ2U+IixyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3NoYXBlLW1hcmdpbiJ9XSxkZXNjcmlwdGlvbjoiQWRkcyBhIG1hcmdpbiB0byBhICdzaGFwZS1vdXRzaWRlJy4gVGhpcyBkZWZpbmVzIGEgbmV3IHNoYXBlIHRoYXQgaXMgdGhlIHNtYWxsZXN0IGNvbnRvdXIgdGhhdCBpbmNsdWRlcyBhbGwgdGhlIHBvaW50cyB0aGF0IGFyZSB0aGUgJ3NoYXBlLW1hcmdpbicgZGlzdGFuY2Ugb3V0d2FyZCBpbiB0aGUgcGVycGVuZGljdWxhciBkaXJlY3Rpb24gZnJvbSBhIHBvaW50IG9uIHRoZSB1bmRlcmx5aW5nIHNoYXBlLiIscmVzdHJpY3Rpb25zOlsidXJsIiwibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToic2hhcGUtb3V0c2lkZSIsYnJvd3NlcnM6WyJFNzkiLCJGRjYyIiwiUzEwLjEiLCJDMzciLCJPMjQiXSx2YWx1ZXM6W3tuYW1lOiJtYXJnaW4tYm94IixkZXNjcmlwdGlvbjoiVGhlIGJhY2tncm91bmQgaXMgcGFpbnRlZCB3aXRoaW4gKGNsaXBwZWQgdG8pIHRoZSBtYXJnaW4gYm94LiJ9LHtuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiVGhlIGZsb2F0IGFyZWEgaXMgdW5hZmZlY3RlZC4ifV0sc3ludGF4OiJub25lIHwgWyA8c2hhcGUtYm94PiB8fCA8YmFzaWMtc2hhcGU+IF0gfCA8aW1hZ2U+IixyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3NoYXBlLW91dHNpZGUifV0sZGVzY3JpcHRpb246IlNwZWNpZmllcyBhbiBvcnRob2dvbmFsIHJvdGF0aW9uIHRvIGJlIGFwcGxpZWQgdG8gYW4gaW1hZ2UgYmVmb3JlIGl0IGlzIGxhaWQgb3V0LiIscmVzdHJpY3Rpb25zOlsiaW1hZ2UiLCJib3giLCJzaGFwZSIsImVudW0iXX0se25hbWU6InNoYXBlLXJlbmRlcmluZyIsYnJvd3NlcnM6WyJFODAiLCJGRjcyIiwiUzEzLjEiLCJDODAiLCJPNjciXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiU3VwcHJlc3NlcyBhdXJhbCByZW5kZXJpbmcuIn0se25hbWU6ImNyaXNwRWRnZXMiLGRlc2NyaXB0aW9uOiJFbXBoYXNpemUgdGhlIGNvbnRyYXN0IGJldHdlZW4gY2xlYW4gZWRnZXMgb2YgYXJ0d29yayBvdmVyIHJlbmRlcmluZyBzcGVlZCBhbmQgZ2VvbWV0cmljIHByZWNpc2lvbi4ifSx7bmFtZToiZ2VvbWV0cmljUHJlY2lzaW9uIixkZXNjcmlwdGlvbjoiRW1waGFzaXplIGdlb21ldHJpYyBwcmVjaXNpb24gb3ZlciBzcGVlZCBhbmQgY3Jpc3AgZWRnZXMuIn0se25hbWU6Im9wdGltaXplU3BlZWQiLGRlc2NyaXB0aW9uOiJFbXBoYXNpemUgcmVuZGVyaW5nIHNwZWVkIG92ZXIgZ2VvbWV0cmljIHByZWNpc2lvbiBhbmQgY3Jpc3AgZWRnZXMuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiUHJvdmlkZXMgaGludHMgYWJvdXQgd2hhdCB0cmFkZW9mZnMgdG8gbWFrZSBhcyBpdCByZW5kZXJzIHZlY3RvciBncmFwaGljcyBlbGVtZW50cyBzdWNoIGFzIDxwYXRoPiBlbGVtZW50cyBhbmQgYmFzaWMgc2hhcGVzIHN1Y2ggYXMgY2lyY2xlcyBhbmQgcmVjdGFuZ2xlcy4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6InNpemUiLGJyb3dzZXJzOlsiQyIsIk84Il0sYXRSdWxlOiJAcGFnZSIsc3ludGF4OiI8bGVuZ3RoPnsxLDJ9IHwgYXV0byB8IFsgPHBhZ2Utc2l6ZT4gfHwgWyBwb3J0cmFpdCB8IGxhbmRzY2FwZSBdIF0iLHJlbGV2YW5jZTo1MyxkZXNjcmlwdGlvbjoiVGhlIHNpemUgQ1NTIGF0LXJ1bGUgZGVzY3JpcHRvciwgdXNlZCB3aXRoIHRoZSBAcGFnZSBhdC1ydWxlLCBkZWZpbmVzIHRoZSBzaXplIGFuZCBvcmllbnRhdGlvbiBvZiB0aGUgYm94IHdoaWNoIGlzIHVzZWQgdG8gcmVwcmVzZW50IGEgcGFnZS4gTW9zdCBvZiB0aGUgdGltZSwgdGhpcyBzaXplIGNvcnJlc3BvbmRzIHRvIHRoZSB0YXJnZXQgc2l6ZSBvZiB0aGUgcHJpbnRlZCBwYWdlIGlmIGFwcGxpY2FibGUuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiXX0se25hbWU6InNyYyIsdmFsdWVzOlt7bmFtZToidXJsKCkiLGRlc2NyaXB0aW9uOiJSZWZlcmVuY2UgZm9udCBieSBVUkwifSx7bmFtZToiZm9ybWF0KCkiLGRlc2NyaXB0aW9uOiJPcHRpb25hbCBoaW50IGRlc2NyaWJpbmcgdGhlIGZvcm1hdCBvZiB0aGUgZm9udCByZXNvdXJjZS4ifSx7bmFtZToibG9jYWwoKSIsZGVzY3JpcHRpb246IkZvcm1hdC1zcGVjaWZpYyBzdHJpbmcgdGhhdCBpZGVudGlmaWVzIGEgbG9jYWxseSBhdmFpbGFibGUgY29weSBvZiBhIGdpdmVuIGZvbnQuIn1dLGF0UnVsZToiQGZvbnQtZmFjZSIsc3ludGF4OiJbIDx1cmw+IFsgZm9ybWF0KCA8c3RyaW5nPiMgKSBdPyB8IGxvY2FsKCA8ZmFtaWx5LW5hbWU+ICkgXSMiLHJlbGV2YW5jZTo4NixkZXNjcmlwdGlvbjoiQGZvbnQtZmFjZSBkZXNjcmlwdG9yLiBTcGVjaWZpZXMgdGhlIHJlc291cmNlIGNvbnRhaW5pbmcgZm9udCBkYXRhLiBJdCBpcyByZXF1aXJlZCwgd2hldGhlciB0aGUgZm9udCBpcyBkb3dubG9hZGFibGUgb3IgbG9jYWxseSBpbnN0YWxsZWQuIixyZXN0cmljdGlvbnM6WyJlbnVtIiwidXJsIiwiaWRlbnRpZmllciJdfSx7bmFtZToic3RvcC1jb2xvciIsYnJvd3NlcnM6WyJFODAiLCJGRjcyIiwiUzEzLjEiLCJDODAiLCJPNjciXSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkluZGljYXRlcyB3aGF0IGNvbG9yIHRvIHVzZSBhdCB0aGF0IGdyYWRpZW50IHN0b3AuIixyZXN0cmljdGlvbnM6WyJjb2xvciJdfSx7bmFtZToic3RvcC1vcGFjaXR5Iixicm93c2VyczpbIkU4MCIsIkZGNzIiLCJTMTMuMSIsIkM4MCIsIk82NyJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRGVmaW5lcyB0aGUgb3BhY2l0eSBvZiBhIGdpdmVuIGdyYWRpZW50IHN0b3AuIixyZXN0cmljdGlvbnM6WyJudW1iZXIoMC0xKSJdfSx7bmFtZToic3Ryb2tlIixicm93c2VyczpbIkU4MCIsIkZGNzIiLCJTMTMuMSIsIkM4MCIsIk82NyJdLHZhbHVlczpbe25hbWU6InVybCgpIixkZXNjcmlwdGlvbjoiQSBVUkwgcmVmZXJlbmNlIHRvIGEgcGFpbnQgc2VydmVyIGVsZW1lbnQsIHdoaWNoIGlzIGFuIGVsZW1lbnQgdGhhdCBkZWZpbmVzIGEgcGFpbnQgc2VydmVyOiAnaGF0Y2gnLCAnbGluZWFyR3JhZGllbnQnLCAnbWVzaCcsICdwYXR0ZXJuJywgJ3JhZGlhbEdyYWRpZW50JyBhbmQgJ3NvbGlkY29sb3InLiJ9LHtuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiTm8gcGFpbnQgaXMgYXBwbGllZCBpbiB0aGlzIGxheWVyLiJ9XSxyZWxldmFuY2U6NjcsZGVzY3JpcHRpb246IlBhaW50cyBhbG9uZyB0aGUgb3V0bGluZSBvZiB0aGUgZ2l2ZW4gZ3JhcGhpY2FsIGVsZW1lbnQuIixyZXN0cmljdGlvbnM6WyJjb2xvciIsImVudW0iLCJ1cmwiXX0se25hbWU6InN0cm9rZS1kYXNoYXJyYXkiLGJyb3dzZXJzOlsiRTgwIiwiRkY3MiIsIlMxMy4xIiwiQzgwIiwiTzY3Il0sdmFsdWVzOlt7bmFtZToibm9uZSIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IG5vIGRhc2hpbmcgaXMgdXNlZC4ifV0scmVsZXZhbmNlOjYxLGRlc2NyaXB0aW9uOiJDb250cm9scyB0aGUgcGF0dGVybiBvZiBkYXNoZXMgYW5kIGdhcHMgdXNlZCB0byBzdHJva2UgcGF0aHMuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJwZXJjZW50YWdlIiwibnVtYmVyIiwiZW51bSJdfSx7bmFtZToic3Ryb2tlLWRhc2hvZmZzZXQiLGJyb3dzZXJzOlsiRTgwIiwiRkY3MiIsIlMxMy4xIiwiQzgwIiwiTzY3Il0scmVsZXZhbmNlOjYyLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhlIGRpc3RhbmNlIGludG8gdGhlIGRhc2ggcGF0dGVybiB0byBzdGFydCB0aGUgZGFzaC4iLHJlc3RyaWN0aW9uczpbInBlcmNlbnRhZ2UiLCJsZW5ndGgiXX0se25hbWU6InN0cm9rZS1saW5lY2FwIixicm93c2VyczpbIkU4MCIsIkZGNzIiLCJTMTMuMSIsIkM4MCIsIk82NyJdLHZhbHVlczpbe25hbWU6ImJ1dHQiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCB0aGUgc3Ryb2tlIGZvciBlYWNoIHN1YnBhdGggZG9lcyBub3QgZXh0ZW5kIGJleW9uZCBpdHMgdHdvIGVuZHBvaW50cy4ifSx7bmFtZToicm91bmQiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCBhdCBlYWNoIGVuZCBvZiBlYWNoIHN1YnBhdGgsIHRoZSBzaGFwZSByZXByZXNlbnRpbmcgdGhlIHN0cm9rZSB3aWxsIGJlIGV4dGVuZGVkIGJ5IGEgaGFsZiBjaXJjbGUgd2l0aCBhIHJhZGl1cyBlcXVhbCB0byB0aGUgc3Ryb2tlIHdpZHRoLiJ9LHtuYW1lOiJzcXVhcmUiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCBhdCB0aGUgZW5kIG9mIGVhY2ggc3VicGF0aCwgdGhlIHNoYXBlIHJlcHJlc2VudGluZyB0aGUgc3Ryb2tlIHdpbGwgYmUgZXh0ZW5kZWQgYnkgYSByZWN0YW5nbGUgd2l0aCB0aGUgc2FtZSB3aWR0aCBhcyB0aGUgc3Ryb2tlIHdpZHRoIGFuZCB3aG9zZSBsZW5ndGggaXMgaGFsZiBvZiB0aGUgc3Ryb2tlIHdpZHRoLiJ9XSxyZWxldmFuY2U6NTMsZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgc2hhcGUgdG8gYmUgdXNlZCBhdCB0aGUgZW5kIG9mIG9wZW4gc3VicGF0aHMgd2hlbiB0aGV5IGFyZSBzdHJva2VkLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToic3Ryb2tlLWxpbmVqb2luIixicm93c2VyczpbIkU4MCIsIkZGNzIiLCJTMTMuMSIsIkM4MCIsIk82NyJdLHZhbHVlczpbe25hbWU6ImJldmVsIixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgYSBiZXZlbGxlZCBjb3JuZXIgaXMgdG8gYmUgdXNlZCB0byBqb2luIHBhdGggc2VnbWVudHMuIn0se25hbWU6Im1pdGVyIixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgYSBzaGFycCBjb3JuZXIgaXMgdG8gYmUgdXNlZCB0byBqb2luIHBhdGggc2VnbWVudHMuIn0se25hbWU6InJvdW5kIixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgYSByb3VuZCBjb3JuZXIgaXMgdG8gYmUgdXNlZCB0byBqb2luIHBhdGggc2VnbWVudHMuIn1dLHJlbGV2YW5jZTo1MSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSBzaGFwZSB0byBiZSB1c2VkIGF0IHRoZSBjb3JuZXJzIG9mIHBhdGhzIG9yIGJhc2ljIHNoYXBlcyB3aGVuIHRoZXkgYXJlIHN0cm9rZWQuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJzdHJva2UtbWl0ZXJsaW1pdCIsYnJvd3NlcnM6WyJFODAiLCJGRjcyIiwiUzEzLjEiLCJDODAiLCJPNjciXSxyZWxldmFuY2U6NTEsZGVzY3JpcHRpb246IldoZW4gdHdvIGxpbmUgc2VnbWVudHMgbWVldCBhdCBhIHNoYXJwIGFuZ2xlIGFuZCBtaXRlciBqb2lucyBoYXZlIGJlZW4gc3BlY2lmaWVkIGZvciAnc3Ryb2tlLWxpbmVqb2luJywgaXQgaXMgcG9zc2libGUgZm9yIHRoZSBtaXRlciB0byBleHRlbmQgZmFyIGJleW9uZCB0aGUgdGhpY2tuZXNzIG9mIHRoZSBsaW5lIHN0cm9raW5nIHRoZSBwYXRoLiIscmVzdHJpY3Rpb25zOlsibnVtYmVyIl19LHtuYW1lOiJzdHJva2Utb3BhY2l0eSIsYnJvd3NlcnM6WyJFODAiLCJGRjcyIiwiUzEzLjEiLCJDODAiLCJPNjciXSxyZWxldmFuY2U6NTIsZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgb3BhY2l0eSBvZiB0aGUgcGFpbnRpbmcgb3BlcmF0aW9uIHVzZWQgdG8gc3Ryb2tlIHRoZSBjdXJyZW50IG9iamVjdC4iLHJlc3RyaWN0aW9uczpbIm51bWJlcigwLTEpIl19LHtuYW1lOiJzdHJva2Utd2lkdGgiLGJyb3dzZXJzOlsiRTgwIiwiRkY3MiIsIlMxMy4xIiwiQzgwIiwiTzY3Il0scmVsZXZhbmNlOjY0LGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhlIHdpZHRoIG9mIHRoZSBzdHJva2Ugb24gdGhlIGN1cnJlbnQgb2JqZWN0LiIscmVzdHJpY3Rpb25zOlsicGVyY2VudGFnZSIsImxlbmd0aCJdfSx7bmFtZToic3VmZml4Iixicm93c2VyczpbIkZGMzMiXSxhdFJ1bGU6IkBjb3VudGVyLXN0eWxlIixzeW50YXg6IjxzeW1ib2w+IixyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkBjb3VudGVyLXN0eWxlIGRlc2NyaXB0b3IuIFNwZWNpZmllcyBhIDxzeW1ib2w+IHRoYXQgaXMgYXBwZW5kZWQgdG8gdGhlIG1hcmtlciByZXByZXNlbnRhdGlvbi4iLHJlc3RyaWN0aW9uczpbImltYWdlIiwic3RyaW5nIiwiaWRlbnRpZmllciJdfSx7bmFtZToic3lzdGVtIixicm93c2VyczpbIkZGMzMiXSx2YWx1ZXM6W3tuYW1lOiJhZGRpdGl2ZSIsZGVzY3JpcHRpb246J1JlcHJlc2VudHMgInNpZ24tdmFsdWUiIG51bWJlcmluZyBzeXN0ZW1zLCB3aGljaCwgcmF0aGVyIHRoYW4gdXNpbmcgcmV1c2luZyBkaWdpdHMgaW4gZGlmZmVyZW50IHBvc2l0aW9ucyB0byBjaGFuZ2UgdGhlaXIgdmFsdWUsIGRlZmluZSBhZGRpdGlvbmFsIGRpZ2l0cyB3aXRoIG11Y2ggbGFyZ2VyIHZhbHVlcywgc28gdGhhdCB0aGUgdmFsdWUgb2YgdGhlIG51bWJlciBjYW4gYmUgb2J0YWluZWQgYnkgYWRkaW5nIGFsbCB0aGUgZGlnaXRzIHRvZ2V0aGVyLid9LHtuYW1lOiJhbHBoYWJldGljIixkZXNjcmlwdGlvbjonSW50ZXJwcmV0cyB0aGUgbGlzdCBvZiBjb3VudGVyIHN5bWJvbHMgYXMgZGlnaXRzIHRvIGFuIGFscGhhYmV0aWMgbnVtYmVyaW5nIHN5c3RlbSwgc2ltaWxhciB0byB0aGUgZGVmYXVsdCBsb3dlci1hbHBoYSBjb3VudGVyIHN0eWxlLCB3aGljaCB3cmFwcyBmcm9tICJhIiwgImIiLCAiYyIsIHRvICJhYSIsICJhYiIsICJhYyIuJ30se25hbWU6ImN5Y2xpYyIsZGVzY3JpcHRpb246IkN5Y2xlcyByZXBlYXRlZGx5IHRocm91Z2ggaXRzIHByb3ZpZGVkIHN5bWJvbHMsIGxvb3BpbmcgYmFjayB0byB0aGUgYmVnaW5uaW5nIHdoZW4gaXQgcmVhY2hlcyB0aGUgZW5kIG9mIHRoZSBsaXN0LiJ9LHtuYW1lOiJleHRlbmRzIixkZXNjcmlwdGlvbjoiVXNlIHRoZSBhbGdvcml0aG0gb2YgYW5vdGhlciBjb3VudGVyIHN0eWxlLCBidXQgYWx0ZXIgb3RoZXIgYXNwZWN0cy4ifSx7bmFtZToiZml4ZWQiLGRlc2NyaXB0aW9uOiJSdW5zIHRocm91Z2ggaXRzIGxpc3Qgb2YgY291bnRlciBzeW1ib2xzIG9uY2UsIHRoZW4gZmFsbHMgYmFjay4ifSx7bmFtZToibnVtZXJpYyIsZGVzY3JpcHRpb246YGludGVycHJldHMgdGhlIGxpc3Qgb2YgY291bnRlciBzeW1ib2xzIGFzIGRpZ2l0cyB0byBhICJwbGFjZS12YWx1ZSIgbnVtYmVyaW5nIHN5c3RlbSwgc2ltaWxhciB0byB0aGUgZGVmYXVsdCAnZGVjaW1hbCcgY291bnRlciBzdHlsZS5gfSx7bmFtZToic3ltYm9saWMiLGRlc2NyaXB0aW9uOiJDeWNsZXMgcmVwZWF0ZWRseSB0aHJvdWdoIGl0cyBwcm92aWRlZCBzeW1ib2xzLCBkb3VibGluZywgdHJpcGxpbmcsIGV0Yy4gdGhlIHN5bWJvbHMgb24gZWFjaCBzdWNjZXNzaXZlIHBhc3MgdGhyb3VnaCB0aGUgbGlzdC4ifV0sYXRSdWxlOiJAY291bnRlci1zdHlsZSIsc3ludGF4OiJjeWNsaWMgfCBudW1lcmljIHwgYWxwaGFiZXRpYyB8IHN5bWJvbGljIHwgYWRkaXRpdmUgfCBbIGZpeGVkIDxpbnRlZ2VyPj8gXSB8IFsgZXh0ZW5kcyA8Y291bnRlci1zdHlsZS1uYW1lPiBdIixyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkBjb3VudGVyLXN0eWxlIGRlc2NyaXB0b3IuIFNwZWNpZmllcyB3aGljaCBhbGdvcml0aG0gd2lsbCBiZSB1c2VkIHRvIGNvbnN0cnVjdCB0aGUgY291bnRlcidzIHJlcHJlc2VudGF0aW9uIGJhc2VkIG9uIHRoZSBjb3VudGVyIHZhbHVlLiIscmVzdHJpY3Rpb25zOlsiZW51bSIsImludGVnZXIiXX0se25hbWU6InN5bWJvbHMiLGJyb3dzZXJzOlsiRkYzMyJdLGF0UnVsZToiQGNvdW50ZXItc3R5bGUiLHN5bnRheDoiPHN5bWJvbD4rIixyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkBjb3VudGVyLXN0eWxlIGRlc2NyaXB0b3IuIFNwZWNpZmllcyB0aGUgc3ltYm9scyB1c2VkIGJ5IHRoZSBtYXJrZXItY29uc3RydWN0aW9uIGFsZ29yaXRobSBzcGVjaWZpZWQgYnkgdGhlIHN5c3RlbSBkZXNjcmlwdG9yLiIscmVzdHJpY3Rpb25zOlsiaW1hZ2UiLCJzdHJpbmciLCJpZGVudGlmaWVyIl19LHtuYW1lOiJ0YWJsZS1sYXlvdXQiLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzEiLCJDMTQiLCJJRTUiLCJPNyJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJVc2UgYW55IGF1dG9tYXRpYyB0YWJsZSBsYXlvdXQgYWxnb3JpdGhtLiJ9LHtuYW1lOiJmaXhlZCIsZGVzY3JpcHRpb246IlVzZSB0aGUgZml4ZWQgdGFibGUgbGF5b3V0IGFsZ29yaXRobS4ifV0sc3ludGF4OiJhdXRvIHwgZml4ZWQiLHJlbGV2YW5jZTo1OCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvdGFibGUtbGF5b3V0In1dLGRlc2NyaXB0aW9uOiJDb250cm9scyB0aGUgYWxnb3JpdGhtIHVzZWQgdG8gbGF5IG91dCB0aGUgdGFibGUgY2VsbHMsIHJvd3MsIGFuZCBjb2x1bW5zLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToidGFiLXNpemUiLGJyb3dzZXJzOlsiRTc5IiwiRkY5MSIsIlM3IiwiQzIxIiwiTzE1Il0sc3ludGF4OiI8aW50ZWdlcj4gfCA8bGVuZ3RoPiIscmVsZXZhbmNlOjUzLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy90YWItc2l6ZSJ9XSxkZXNjcmlwdGlvbjoiRGV0ZXJtaW5lcyB0aGUgd2lkdGggb2YgdGhlIHRhYiBjaGFyYWN0ZXIgKFUrMDAwOSksIGluIHNwYWNlIGNoYXJhY3RlcnMgKFUrMDAyMCksIHdoZW4gcmVuZGVyZWQuIixyZXN0cmljdGlvbnM6WyJpbnRlZ2VyIiwibGVuZ3RoIl19LHtuYW1lOiJ0ZXh0LWFsaWduIixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxIiwiQzEiLCJJRTMiLCJPMy41Il0sdmFsdWVzOlt7bmFtZToiY2VudGVyIixkZXNjcmlwdGlvbjoiVGhlIGlubGluZSBjb250ZW50cyBhcmUgY2VudGVyZWQgd2l0aGluIHRoZSBsaW5lIGJveC4ifSx7bmFtZToiZW5kIixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxIiwiQzEiLCJJRTMiLCJPMy41Il0sZGVzY3JpcHRpb246IlRoZSBpbmxpbmUgY29udGVudHMgYXJlIGFsaWduZWQgdG8gdGhlIGVuZCBlZGdlIG9mIHRoZSBsaW5lIGJveC4ifSx7bmFtZToianVzdGlmeSIsZGVzY3JpcHRpb246IlRoZSB0ZXh0IGlzIGp1c3RpZmllZCBhY2NvcmRpbmcgdG8gdGhlIG1ldGhvZCBzcGVjaWZpZWQgYnkgdGhlICd0ZXh0LWp1c3RpZnknIHByb3BlcnR5LiJ9LHtuYW1lOiJsZWZ0IixkZXNjcmlwdGlvbjoiVGhlIGlubGluZSBjb250ZW50cyBhcmUgYWxpZ25lZCB0byB0aGUgbGVmdCBlZGdlIG9mIHRoZSBsaW5lIGJveC4gSW4gdmVydGljYWwgdGV4dCwgJ2xlZnQnIGFsaWducyB0byB0aGUgZWRnZSBvZiB0aGUgbGluZSBib3ggdGhhdCB3b3VsZCBiZSB0aGUgc3RhcnQgZWRnZSBmb3IgbGVmdC10by1yaWdodCB0ZXh0LiJ9LHtuYW1lOiJyaWdodCIsZGVzY3JpcHRpb246IlRoZSBpbmxpbmUgY29udGVudHMgYXJlIGFsaWduZWQgdG8gdGhlIHJpZ2h0IGVkZ2Ugb2YgdGhlIGxpbmUgYm94LiBJbiB2ZXJ0aWNhbCB0ZXh0LCAncmlnaHQnIGFsaWducyB0byB0aGUgZWRnZSBvZiB0aGUgbGluZSBib3ggdGhhdCB3b3VsZCBiZSB0aGUgZW5kIGVkZ2UgZm9yIGxlZnQtdG8tcmlnaHQgdGV4dC4ifSx7bmFtZToic3RhcnQiLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzEiLCJDMSIsIklFMyIsIk8zLjUiXSxkZXNjcmlwdGlvbjoiVGhlIGlubGluZSBjb250ZW50cyBhcmUgYWxpZ25lZCB0byB0aGUgc3RhcnQgZWRnZSBvZiB0aGUgbGluZSBib3guIn1dLHN5bnRheDoic3RhcnQgfCBlbmQgfCBsZWZ0IHwgcmlnaHQgfCBjZW50ZXIgfCBqdXN0aWZ5IHwgbWF0Y2gtcGFyZW50IixyZWxldmFuY2U6OTMscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3RleHQtYWxpZ24ifV0sZGVzY3JpcHRpb246IkRlc2NyaWJlcyBob3cgaW5saW5lIGNvbnRlbnRzIG9mIGEgYmxvY2sgYXJlIGhvcml6b250YWxseSBhbGlnbmVkIGlmIHRoZSBjb250ZW50cyBkbyBub3QgY29tcGxldGVseSBmaWxsIHRoZSBsaW5lIGJveC4iLHJlc3RyaWN0aW9uczpbInN0cmluZyJdfSx7bmFtZToidGV4dC1hbGlnbi1sYXN0Iixicm93c2VyczpbIkUxMiIsIkZGNDkiLCJTMTYiLCJDNDciLCJJRTUuNSIsIk8zNCJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJDb250ZW50IG9uIHRoZSBhZmZlY3RlZCBsaW5lIGlzIGFsaWduZWQgcGVyICd0ZXh0LWFsaWduJyB1bmxlc3MgJ3RleHQtYWxpZ24nIGlzIHNldCB0byAnanVzdGlmeScsIGluIHdoaWNoIGNhc2UgaXQgaXMgJ3N0YXJ0LWFsaWduZWQnLiJ9LHtuYW1lOiJjZW50ZXIiLGRlc2NyaXB0aW9uOiJUaGUgaW5saW5lIGNvbnRlbnRzIGFyZSBjZW50ZXJlZCB3aXRoaW4gdGhlIGxpbmUgYm94LiJ9LHtuYW1lOiJqdXN0aWZ5IixkZXNjcmlwdGlvbjoiVGhlIHRleHQgaXMganVzdGlmaWVkIGFjY29yZGluZyB0byB0aGUgbWV0aG9kIHNwZWNpZmllZCBieSB0aGUgJ3RleHQtanVzdGlmeScgcHJvcGVydHkuIn0se25hbWU6ImxlZnQiLGRlc2NyaXB0aW9uOiJUaGUgaW5saW5lIGNvbnRlbnRzIGFyZSBhbGlnbmVkIHRvIHRoZSBsZWZ0IGVkZ2Ugb2YgdGhlIGxpbmUgYm94LiBJbiB2ZXJ0aWNhbCB0ZXh0LCAnbGVmdCcgYWxpZ25zIHRvIHRoZSBlZGdlIG9mIHRoZSBsaW5lIGJveCB0aGF0IHdvdWxkIGJlIHRoZSBzdGFydCBlZGdlIGZvciBsZWZ0LXRvLXJpZ2h0IHRleHQuIn0se25hbWU6InJpZ2h0IixkZXNjcmlwdGlvbjoiVGhlIGlubGluZSBjb250ZW50cyBhcmUgYWxpZ25lZCB0byB0aGUgcmlnaHQgZWRnZSBvZiB0aGUgbGluZSBib3guIEluIHZlcnRpY2FsIHRleHQsICdyaWdodCcgYWxpZ25zIHRvIHRoZSBlZGdlIG9mIHRoZSBsaW5lIGJveCB0aGF0IHdvdWxkIGJlIHRoZSBlbmQgZWRnZSBmb3IgbGVmdC10by1yaWdodCB0ZXh0LiJ9XSxzeW50YXg6ImF1dG8gfCBzdGFydCB8IGVuZCB8IGxlZnQgfCByaWdodCB8IGNlbnRlciB8IGp1c3RpZnkiLHJlbGV2YW5jZTo1MSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvdGV4dC1hbGlnbi1sYXN0In1dLGRlc2NyaXB0aW9uOiJEZXNjcmliZXMgaG93IHRoZSBsYXN0IGxpbmUgb2YgYSBibG9jayBvciBhIGxpbmUgcmlnaHQgYmVmb3JlIGEgZm9yY2VkIGxpbmUgYnJlYWsgaXMgYWxpZ25lZCB3aGVuICd0ZXh0LWFsaWduJyBpcyBzZXQgdG8gJ2p1c3RpZnknLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToidGV4dC1hbmNob3IiLGJyb3dzZXJzOlsiRTgwIiwiRkY3MiIsIlMxMy4xIiwiQzgwIiwiTzY3Il0sdmFsdWVzOlt7bmFtZToiZW5kIixkZXNjcmlwdGlvbjoiVGhlIHJlbmRlcmVkIGNoYXJhY3RlcnMgYXJlIGFsaWduZWQgc3VjaCB0aGF0IHRoZSBlbmQgb2YgdGhlIHJlc3VsdGluZyByZW5kZXJlZCB0ZXh0IGlzIGF0IHRoZSBpbml0aWFsIGN1cnJlbnQgdGV4dCBwb3NpdGlvbi4ifSx7bmFtZToibWlkZGxlIixkZXNjcmlwdGlvbjoiVGhlIHJlbmRlcmVkIGNoYXJhY3RlcnMgYXJlIGFsaWduZWQgc3VjaCB0aGF0IHRoZSBnZW9tZXRyaWMgbWlkZGxlIG9mIHRoZSByZXN1bHRpbmcgcmVuZGVyZWQgdGV4dCBpcyBhdCB0aGUgaW5pdGlhbCBjdXJyZW50IHRleHQgcG9zaXRpb24uIn0se25hbWU6InN0YXJ0IixkZXNjcmlwdGlvbjoiVGhlIHJlbmRlcmVkIGNoYXJhY3RlcnMgYXJlIGFsaWduZWQgc3VjaCB0aGF0IHRoZSBzdGFydCBvZiB0aGUgcmVzdWx0aW5nIHJlbmRlcmVkIHRleHQgaXMgYXQgdGhlIGluaXRpYWwgY3VycmVudCB0ZXh0IHBvc2l0aW9uLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlVzZWQgdG8gYWxpZ24gKHN0YXJ0LSwgbWlkZGxlLSBvciBlbmQtYWxpZ25tZW50KSBhIHN0cmluZyBvZiB0ZXh0IHJlbGF0aXZlIHRvIGEgZ2l2ZW4gcG9pbnQuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJ0ZXh0LWRlY29yYXRpb24iLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzEiLCJDMSIsIklFMyIsIk8zLjUiXSx2YWx1ZXM6W3tuYW1lOiJkYXNoZWQiLGRlc2NyaXB0aW9uOiJQcm9kdWNlcyBhIGRhc2hlZCBsaW5lIHN0eWxlLiJ9LHtuYW1lOiJkb3R0ZWQiLGRlc2NyaXB0aW9uOiJQcm9kdWNlcyBhIGRvdHRlZCBsaW5lLiJ9LHtuYW1lOiJkb3VibGUiLGRlc2NyaXB0aW9uOiJQcm9kdWNlcyBhIGRvdWJsZSBsaW5lLiJ9LHtuYW1lOiJsaW5lLXRocm91Z2giLGRlc2NyaXB0aW9uOiJFYWNoIGxpbmUgb2YgdGV4dCBoYXMgYSBsaW5lIHRocm91Z2ggdGhlIG1pZGRsZS4ifSx7bmFtZToibm9uZSIsZGVzY3JpcHRpb246IlByb2R1Y2VzIG5vIGxpbmUuIn0se25hbWU6Im92ZXJsaW5lIixkZXNjcmlwdGlvbjoiRWFjaCBsaW5lIG9mIHRleHQgaGFzIGEgbGluZSBhYm92ZSBpdC4ifSx7bmFtZToic29saWQiLGRlc2NyaXB0aW9uOiJQcm9kdWNlcyBhIHNvbGlkIGxpbmUuIn0se25hbWU6InVuZGVybGluZSIsZGVzY3JpcHRpb246IkVhY2ggbGluZSBvZiB0ZXh0IGlzIHVuZGVybGluZWQuIn0se25hbWU6IndhdnkiLGRlc2NyaXB0aW9uOiJQcm9kdWNlcyBhIHdhdnkgbGluZS4ifV0sc3ludGF4OiI8J3RleHQtZGVjb3JhdGlvbi1saW5lJz4gfHwgPCd0ZXh0LWRlY29yYXRpb24tc3R5bGUnPiB8fCA8J3RleHQtZGVjb3JhdGlvbi1jb2xvcic+IHx8IDwndGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzcyc+IixyZWxldmFuY2U6OTEscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3RleHQtZGVjb3JhdGlvbiJ9XSxkZXNjcmlwdGlvbjoiRGVjb3JhdGlvbnMgYXBwbGllZCB0byBmb250IHVzZWQgZm9yIGFuIGVsZW1lbnQncyB0ZXh0LiIscmVzdHJpY3Rpb25zOlsiZW51bSIsImNvbG9yIl19LHtuYW1lOiJ0ZXh0LWRlY29yYXRpb24tY29sb3IiLGJyb3dzZXJzOlsiRTc5IiwiRkYzNiIsIlMxMi4xIiwiQzU3IiwiTzQ0Il0sc3ludGF4OiI8Y29sb3I+IixyZWxldmFuY2U6NTUscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3RleHQtZGVjb3JhdGlvbi1jb2xvciJ9XSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSBjb2xvciBvZiB0ZXh0IGRlY29yYXRpb24gKHVuZGVybGluZXMgb3ZlcmxpbmVzLCBhbmQgbGluZS10aHJvdWdocykgc2V0IG9uIHRoZSBlbGVtZW50IHdpdGggdGV4dC1kZWNvcmF0aW9uLWxpbmUuIixyZXN0cmljdGlvbnM6WyJjb2xvciJdfSx7bmFtZToidGV4dC1kZWNvcmF0aW9uLWxpbmUiLGJyb3dzZXJzOlsiRTc5IiwiRkYzNiIsIlMxMi4xIiwiQzU3IiwiTzQ0Il0sdmFsdWVzOlt7bmFtZToibGluZS10aHJvdWdoIixkZXNjcmlwdGlvbjoiRWFjaCBsaW5lIG9mIHRleHQgaGFzIGEgbGluZSB0aHJvdWdoIHRoZSBtaWRkbGUuIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJOZWl0aGVyIHByb2R1Y2VzIG5vciBpbmhpYml0cyB0ZXh0IGRlY29yYXRpb24uIn0se25hbWU6Im92ZXJsaW5lIixkZXNjcmlwdGlvbjoiRWFjaCBsaW5lIG9mIHRleHQgaGFzIGEgbGluZSBhYm92ZSBpdC4ifSx7bmFtZToidW5kZXJsaW5lIixkZXNjcmlwdGlvbjoiRWFjaCBsaW5lIG9mIHRleHQgaXMgdW5kZXJsaW5lZC4ifV0sc3ludGF4OiJub25lIHwgWyB1bmRlcmxpbmUgfHwgb3ZlcmxpbmUgfHwgbGluZS10aHJvdWdoIHx8IGJsaW5rIF0gfCBzcGVsbGluZy1lcnJvciB8IGdyYW1tYXItZXJyb3IiLHJlbGV2YW5jZTo1NyxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvdGV4dC1kZWNvcmF0aW9uLWxpbmUifV0sZGVzY3JpcHRpb246IlNwZWNpZmllcyB3aGF0IGxpbmUgZGVjb3JhdGlvbnMsIGlmIGFueSwgYXJlIGFkZGVkIHRvIHRoZSBlbGVtZW50LiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToidGV4dC1kZWNvcmF0aW9uLXN0eWxlIixicm93c2VyczpbIkU3OSIsIkZGMzYiLCJTMTIuMSIsIkM1NyIsIk80NCJdLHZhbHVlczpbe25hbWU6ImRhc2hlZCIsZGVzY3JpcHRpb246IlByb2R1Y2VzIGEgZGFzaGVkIGxpbmUgc3R5bGUuIn0se25hbWU6ImRvdHRlZCIsZGVzY3JpcHRpb246IlByb2R1Y2VzIGEgZG90dGVkIGxpbmUuIn0se25hbWU6ImRvdWJsZSIsZGVzY3JpcHRpb246IlByb2R1Y2VzIGEgZG91YmxlIGxpbmUuIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJQcm9kdWNlcyBubyBsaW5lLiJ9LHtuYW1lOiJzb2xpZCIsZGVzY3JpcHRpb246IlByb2R1Y2VzIGEgc29saWQgbGluZS4ifSx7bmFtZToid2F2eSIsZGVzY3JpcHRpb246IlByb2R1Y2VzIGEgd2F2eSBsaW5lLiJ9XSxzeW50YXg6InNvbGlkIHwgZG91YmxlIHwgZG90dGVkIHwgZGFzaGVkIHwgd2F2eSIscmVsZXZhbmNlOjUxLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy90ZXh0LWRlY29yYXRpb24tc3R5bGUifV0sZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgbGluZSBzdHlsZSBmb3IgdW5kZXJsaW5lLCBsaW5lLXRocm91Z2ggYW5kIG92ZXJsaW5lIHRleHQgZGVjb3JhdGlvbi4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6InRleHQtaW5kZW50Iixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxIiwiQzEiLCJJRTMiLCJPMy41Il0sdmFsdWVzOltdLHN5bnRheDoiPGxlbmd0aC1wZXJjZW50YWdlPiAmJiBoYW5naW5nPyAmJiBlYWNoLWxpbmU/IixyZWxldmFuY2U6NjcscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3RleHQtaW5kZW50In1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhlIGluZGVudGF0aW9uIGFwcGxpZWQgdG8gbGluZXMgb2YgaW5saW5lIGNvbnRlbnQgaW4gYSBibG9jay4gVGhlIGluZGVudGF0aW9uIG9ubHkgYWZmZWN0cyB0aGUgZmlyc3QgbGluZSBvZiBpbmxpbmUgY29udGVudCBpbiB0aGUgYmxvY2sgdW5sZXNzIHRoZSAnaGFuZ2luZycga2V5d29yZCBpcyBzcGVjaWZpZWQsIGluIHdoaWNoIGNhc2UgaXQgYWZmZWN0cyBhbGwgbGluZXMgZXhjZXB0IHRoZSBmaXJzdC4iLHJlc3RyaWN0aW9uczpbInBlcmNlbnRhZ2UiLCJsZW5ndGgiXX0se25hbWU6InRleHQtanVzdGlmeSIsYnJvd3NlcnM6WyJFNzkiLCJGRjU1IiwiQzMyIiwiSUUxMSIsIk8xOSJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJUaGUgVUEgZGV0ZXJtaW5lcyB0aGUganVzdGlmaWNhdGlvbiBhbGdvcml0aG0gdG8gZm9sbG93LCBiYXNlZCBvbiBhIGJhbGFuY2UgYmV0d2VlbiBwZXJmb3JtYW5jZSBhbmQgYWRlcXVhdGUgcHJlc2VudGF0aW9uIHF1YWxpdHkuIn0se25hbWU6ImRpc3RyaWJ1dGUiLGRlc2NyaXB0aW9uOiJKdXN0aWZpY2F0aW9uIHByaW1hcmlseSBjaGFuZ2VzIHNwYWNpbmcgYm90aCBhdCB3b3JkIHNlcGFyYXRvcnMgYW5kIGF0IGdyYXBoZW1lIGNsdXN0ZXIgYm91bmRhcmllcyBpbiBhbGwgc2NyaXB0cyBleGNlcHQgdGhvc2UgaW4gdGhlIGNvbm5lY3RlZCBhbmQgY3Vyc2l2ZSBncm91cHMuIFRoaXMgdmFsdWUgaXMgc29tZXRpbWVzIHVzZWQgaW4gZS5nLiBKYXBhbmVzZSwgb2Z0ZW4gd2l0aCB0aGUgJ3RleHQtYWxpZ24tbGFzdCcgcHJvcGVydHkuIn0se25hbWU6ImRpc3RyaWJ1dGUtYWxsLWxpbmVzIn0se25hbWU6ImludGVyLWNsdXN0ZXIiLGRlc2NyaXB0aW9uOiJKdXN0aWZpY2F0aW9uIHByaW1hcmlseSBjaGFuZ2VzIHNwYWNpbmcgYXQgd29yZCBzZXBhcmF0b3JzIGFuZCBhdCBncmFwaGVtZSBjbHVzdGVyIGJvdW5kYXJpZXMgaW4gY2x1c3RlcmVkIHNjcmlwdHMuIFRoaXMgdmFsdWUgaXMgdHlwaWNhbGx5IHVzZWQgZm9yIFNvdXRoZWFzdCBBc2lhbiBzY3JpcHRzIHN1Y2ggYXMgVGhhaS4ifSx7bmFtZToiaW50ZXItaWRlb2dyYXBoIixkZXNjcmlwdGlvbjoiSnVzdGlmaWNhdGlvbiBwcmltYXJpbHkgY2hhbmdlcyBzcGFjaW5nIGF0IHdvcmQgc2VwYXJhdG9ycyBhbmQgYXQgaW50ZXItZ3JhcGhlbWljIGJvdW5kYXJpZXMgaW4gc2NyaXB0cyB0aGF0IHVzZSBubyB3b3JkIHNwYWNlcy4gVGhpcyB2YWx1ZSBpcyB0eXBpY2FsbHkgdXNlZCBmb3IgQ0pLIGxhbmd1YWdlcy4ifSx7bmFtZToiaW50ZXItd29yZCIsZGVzY3JpcHRpb246Ikp1c3RpZmljYXRpb24gcHJpbWFyaWx5IGNoYW5nZXMgc3BhY2luZyBhdCB3b3JkIHNlcGFyYXRvcnMuIFRoaXMgdmFsdWUgaXMgdHlwaWNhbGx5IHVzZWQgZm9yIGxhbmd1YWdlcyB0aGF0IHNlcGFyYXRlIHdvcmRzIHVzaW5nIHNwYWNlcywgbGlrZSBFbmdsaXNoIG9yIChzb21ldGltZXMpIEtvcmVhbi4ifSx7bmFtZToia2FzaGlkYSIsZGVzY3JpcHRpb246Ikp1c3RpZmljYXRpb24gcHJpbWFyaWx5IHN0cmV0Y2hlcyBBcmFiaWMgYW5kIHJlbGF0ZWQgc2NyaXB0cyB0aHJvdWdoIHRoZSB1c2Ugb2Yga2FzaGlkYSBvciBvdGhlciBjYWxsaWdyYXBoaWMgZWxvbmdhdGlvbi4ifSx7bmFtZToibmV3c3BhcGVyIn1dLHN5bnRheDoiYXV0byB8IGludGVyLWNoYXJhY3RlciB8IGludGVyLXdvcmQgfCBub25lIixyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3RleHQtanVzdGlmeSJ9XSxkZXNjcmlwdGlvbjoiU2VsZWN0cyB0aGUganVzdGlmaWNhdGlvbiBhbGdvcml0aG0gdXNlZCB3aGVuICd0ZXh0LWFsaWduJyBpcyBzZXQgdG8gJ2p1c3RpZnknLiBUaGUgcHJvcGVydHkgYXBwbGllcyB0byBibG9jayBjb250YWluZXJzLCBidXQgdGhlIFVBIG1heSAoYnV0IGlzIG5vdCByZXF1aXJlZCB0bykgYWxzbyBzdXBwb3J0IGl0IG9uIGlubGluZSBlbGVtZW50cy4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6InRleHQtb3JpZW50YXRpb24iLGJyb3dzZXJzOlsiRTc5IiwiRkY0MSIsIlMxNCIsIkM0OCIsIk8zNSJdLHZhbHVlczpbe25hbWU6InNpZGV3YXlzIixicm93c2VyczpbIkU3OSIsIkZGNDEiLCJTMTQiLCJDNDgiLCJPMzUiXSxkZXNjcmlwdGlvbjoiVGhpcyB2YWx1ZSBpcyBlcXVpdmFsZW50IHRvICdzaWRld2F5cy1yaWdodCcgaW4gJ3ZlcnRpY2FsLXJsJyB3cml0aW5nIG1vZGUgYW5kIGVxdWl2YWxlbnQgdG8gJ3NpZGV3YXlzLWxlZnQnIGluICd2ZXJ0aWNhbC1scicgd3JpdGluZyBtb2RlLiJ9LHtuYW1lOiJzaWRld2F5cy1yaWdodCIsYnJvd3NlcnM6WyJFNzkiLCJGRjQxIiwiUzE0IiwiQzQ4IiwiTzM1Il0sZGVzY3JpcHRpb246IkluIHZlcnRpY2FsIHdyaXRpbmcgbW9kZXMsIHRoaXMgY2F1c2VzIHRleHQgdG8gYmUgc2V0IGFzIGlmIGluIGEgaG9yaXpvbnRhbCBsYXlvdXQsIGJ1dCByb3RhdGVkIDkwwrAgY2xvY2t3aXNlLiJ9LHtuYW1lOiJ1cHJpZ2h0IixkZXNjcmlwdGlvbjoiSW4gdmVydGljYWwgd3JpdGluZyBtb2RlcywgY2hhcmFjdGVycyBmcm9tIGhvcml6b250YWwtb25seSBzY3JpcHRzIGFyZSByZW5kZXJlZCB1cHJpZ2h0LCBpLmUuIGluIHRoZWlyIHN0YW5kYXJkIGhvcml6b250YWwgb3JpZW50YXRpb24uIn1dLHN5bnRheDoibWl4ZWQgfCB1cHJpZ2h0IHwgc2lkZXdheXMiLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvdGV4dC1vcmllbnRhdGlvbiJ9XSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSBvcmllbnRhdGlvbiBvZiB0ZXh0IHdpdGhpbiBhIGxpbmUuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJ0ZXh0LW92ZXJmbG93Iixicm93c2VyczpbIkUxMiIsIkZGNyIsIlMxLjMiLCJDMSIsIklFNiIsIk8xMSJdLHZhbHVlczpbe25hbWU6ImNsaXAiLGRlc2NyaXB0aW9uOiJDbGlwIGlubGluZSBjb250ZW50IHRoYXQgb3ZlcmZsb3dzLiBDaGFyYWN0ZXJzIG1heSBiZSBvbmx5IHBhcnRpYWxseSByZW5kZXJlZC4ifSx7bmFtZToiZWxsaXBzaXMiLGRlc2NyaXB0aW9uOiJSZW5kZXIgYW4gZWxsaXBzaXMgY2hhcmFjdGVyIChVKzIwMjYpIHRvIHJlcHJlc2VudCBjbGlwcGVkIGlubGluZSBjb250ZW50LiJ9XSxzeW50YXg6IlsgY2xpcCB8IGVsbGlwc2lzIHwgPHN0cmluZz4gXXsxLDJ9IixyZWxldmFuY2U6ODIscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3RleHQtb3ZlcmZsb3cifV0sZGVzY3JpcHRpb246IlRleHQgY2FuIG92ZXJmbG93IGZvciBleGFtcGxlIHdoZW4gaXQgaXMgcHJldmVudGVkIGZyb20gd3JhcHBpbmcuIixyZXN0cmljdGlvbnM6WyJlbnVtIiwic3RyaW5nIl19LHtuYW1lOiJ0ZXh0LXJlbmRlcmluZyIsYnJvd3NlcnM6WyJFNzkiLCJGRjEiLCJTNSIsIkM0IiwiTzE1Il0sdmFsdWVzOlt7bmFtZToiYXV0byJ9LHtuYW1lOiJnZW9tZXRyaWNQcmVjaXNpb24iLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCB0aGUgdXNlciBhZ2VudCBzaGFsbCBlbXBoYXNpemUgZ2VvbWV0cmljIHByZWNpc2lvbiBvdmVyIGxlZ2liaWxpdHkgYW5kIHJlbmRlcmluZyBzcGVlZC4ifSx7bmFtZToib3B0aW1pemVMZWdpYmlsaXR5IixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgdGhlIHVzZXIgYWdlbnQgc2hhbGwgZW1waGFzaXplIGxlZ2liaWxpdHkgb3ZlciByZW5kZXJpbmcgc3BlZWQgYW5kIGdlb21ldHJpYyBwcmVjaXNpb24uIn0se25hbWU6Im9wdGltaXplU3BlZWQiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCB0aGUgdXNlciBhZ2VudCBzaGFsbCBlbXBoYXNpemUgcmVuZGVyaW5nIHNwZWVkIG92ZXIgbGVnaWJpbGl0eSBhbmQgZ2VvbWV0cmljIHByZWNpc2lvbi4ifV0sc3ludGF4OiJhdXRvIHwgb3B0aW1pemVTcGVlZCB8IG9wdGltaXplTGVnaWJpbGl0eSB8IGdlb21ldHJpY1ByZWNpc2lvbiIscmVsZXZhbmNlOjY4LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy90ZXh0LXJlbmRlcmluZyJ9XSxkZXNjcmlwdGlvbjoiVGhlIGNyZWF0b3Igb2YgU1ZHIGNvbnRlbnQgbWlnaHQgd2FudCB0byBwcm92aWRlIGEgaGludCB0byB0aGUgaW1wbGVtZW50YXRpb24gYWJvdXQgd2hhdCB0cmFkZW9mZnMgdG8gbWFrZSBhcyBpdCByZW5kZXJzIHRleHQuIFRoZSAndGV4dC1yZW5kZXJpbmcnIHByb3BlcnR5IHByb3ZpZGVzIHRoZXNlIGhpbnRzLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToidGV4dC1zaGFkb3ciLGJyb3dzZXJzOlsiRTEyIiwiRkYzLjUiLCJTMS4xIiwiQzIiLCJJRTEwIiwiTzkuNSJdLHZhbHVlczpbe25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJObyBzaGFkb3cuIn1dLHN5bnRheDoibm9uZSB8IDxzaGFkb3ctdD4jIixyZWxldmFuY2U6NzMscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3RleHQtc2hhZG93In1dLGRlc2NyaXB0aW9uOiJFbmFibGVzIHNoYWRvdyBlZmZlY3RzIHRvIGJlIGFwcGxpZWQgdG8gdGhlIHRleHQgb2YgdGhlIGVsZW1lbnQuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJjb2xvciJdfSx7bmFtZToidGV4dC10cmFuc2Zvcm0iLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzEiLCJDMSIsIklFNCIsIk83Il0sdmFsdWVzOlt7bmFtZToiY2FwaXRhbGl6ZSIsZGVzY3JpcHRpb246IlB1dHMgdGhlIGZpcnN0IHR5cG9ncmFwaGljIGxldHRlciB1bml0IG9mIGVhY2ggd29yZCBpbiB0aXRsZWNhc2UuIn0se25hbWU6Imxvd2VyY2FzZSIsZGVzY3JpcHRpb246IlB1dHMgYWxsIGxldHRlcnMgaW4gbG93ZXJjYXNlLiJ9LHtuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiTm8gZWZmZWN0cy4ifSx7bmFtZToidXBwZXJjYXNlIixkZXNjcmlwdGlvbjoiUHV0cyBhbGwgbGV0dGVycyBpbiB1cHBlcmNhc2UuIn1dLHN5bnRheDoibm9uZSB8IGNhcGl0YWxpemUgfCB1cHBlcmNhc2UgfCBsb3dlcmNhc2UgfCBmdWxsLXdpZHRoIHwgZnVsbC1zaXplLWthbmEiLHJlbGV2YW5jZTo4NixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvdGV4dC10cmFuc2Zvcm0ifV0sZGVzY3JpcHRpb246IkNvbnRyb2xzIGNhcGl0YWxpemF0aW9uIGVmZmVjdHMgb2YgYW4gZWxlbWVudCdzIHRleHQuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJ0ZXh0LXVuZGVybGluZS1wb3NpdGlvbiIsYnJvd3NlcnM6WyJFMTIiLCJGRjc0IiwiUzEyLjEiLCJDMzMiLCJJRTYiLCJPMjAiXSx2YWx1ZXM6W3tuYW1lOiJhYm92ZSJ9LHtuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiVGhlIHVzZXIgYWdlbnQgbWF5IHVzZSBhbnkgYWxnb3JpdGhtIHRvIGRldGVybWluZSB0aGUgdW5kZXJsaW5lJ3MgcG9zaXRpb24uIEluIGhvcml6b250YWwgbGluZSBsYXlvdXQsIHRoZSB1bmRlcmxpbmUgc2hvdWxkIGJlIGFsaWduZWQgYXMgZm9yIGFscGhhYmV0aWMuIEluIHZlcnRpY2FsIGxpbmUgbGF5b3V0LCBpZiB0aGUgbGFuZ3VhZ2UgaXMgc2V0IHRvIEphcGFuZXNlIG9yIEtvcmVhbiwgdGhlIHVuZGVybGluZSBzaG91bGQgYmUgYWxpZ25lZCBhcyBmb3Igb3Zlci4ifSx7bmFtZToiYmVsb3ciLGRlc2NyaXB0aW9uOiJUaGUgdW5kZXJsaW5lIGlzIGFsaWduZWQgd2l0aCB0aGUgdW5kZXIgZWRnZSBvZiB0aGUgZWxlbWVudCdzIGNvbnRlbnQgYm94LiJ9XSxzeW50YXg6ImF1dG8gfCBmcm9tLWZvbnQgfCBbIHVuZGVyIHx8IFsgbGVmdCB8IHJpZ2h0IF0gXSIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy90ZXh0LXVuZGVybGluZS1wb3NpdGlvbiJ9XSxkZXNjcmlwdGlvbjoiU2V0cyB0aGUgcG9zaXRpb24gb2YgYW4gdW5kZXJsaW5lIHNwZWNpZmllZCBvbiB0aGUgc2FtZSBlbGVtZW50OiBpdCBkb2VzIG5vdCBhZmZlY3QgdW5kZXJsaW5lcyBzcGVjaWZpZWQgYnkgYW5jZXN0b3IgZWxlbWVudHMuIFRoaXMgcHJvcGVydHkgaXMgdHlwaWNhbGx5IHVzZWQgaW4gdmVydGljYWwgd3JpdGluZyBjb250ZXh0cyBzdWNoIGFzIGluIEphcGFuZXNlIGRvY3VtZW50cyB3aGVyZSBpdCBvZnRlbiBkZXNpcmVkIHRvIGhhdmUgdGhlIHVuZGVybGluZSBhcHBlYXIgJ292ZXInICh0byB0aGUgcmlnaHQgb2YpIHRoZSBhZmZlY3RlZCBydW4gb2YgdGV4dCIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToidG9wIixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxIiwiQzEiLCJJRTUiLCJPNiJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJGb3Igbm9uLXJlcGxhY2VkIGVsZW1lbnRzLCB0aGUgZWZmZWN0IG9mIHRoaXMgdmFsdWUgZGVwZW5kcyBvbiB3aGljaCBvZiByZWxhdGVkIHByb3BlcnRpZXMgaGF2ZSB0aGUgdmFsdWUgJ2F1dG8nIGFzIHdlbGwifV0sc3ludGF4OiI8bGVuZ3RoPiB8IDxwZXJjZW50YWdlPiB8IGF1dG8iLHJlbGV2YW5jZTo5NSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvdG9wIn1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgaG93IGZhciBhbiBhYnNvbHV0ZWx5IHBvc2l0aW9uZWQgYm94J3MgdG9wIG1hcmdpbiBlZGdlIGlzIG9mZnNldCBiZWxvdyB0aGUgdG9wIGVkZ2Ugb2YgdGhlIGJveCdzICdjb250YWluaW5nIGJsb2NrJy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6InRvdWNoLWFjdGlvbiIsYnJvd3NlcnM6WyJFMTIiLCJGRjUyIiwiUzEzIiwiQzM2IiwiSUUxMSIsIk8yMyJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJUaGUgdXNlciBhZ2VudCBtYXkgZGV0ZXJtaW5lIGFueSBwZXJtaXR0ZWQgdG91Y2ggYmVoYXZpb3JzIGZvciB0b3VjaGVzIHRoYXQgYmVnaW4gb24gdGhlIGVsZW1lbnQuIn0se25hbWU6ImNyb3NzLXNsaWRlLXgiLGJyb3dzZXJzOlsiRTEyIiwiRkY1MiIsIlMxMyIsIkMzNiIsIklFMTEiLCJPMjMiXX0se25hbWU6ImNyb3NzLXNsaWRlLXkiLGJyb3dzZXJzOlsiRTEyIiwiRkY1MiIsIlMxMyIsIkMzNiIsIklFMTEiLCJPMjMiXX0se25hbWU6ImRvdWJsZS10YXAtem9vbSIsYnJvd3NlcnM6WyJFMTIiLCJGRjUyIiwiUzEzIiwiQzM2IiwiSUUxMSIsIk8yMyJdfSx7bmFtZToibWFuaXB1bGF0aW9uIixkZXNjcmlwdGlvbjoiVGhlIHVzZXIgYWdlbnQgbWF5IGNvbnNpZGVyIHRvdWNoZXMgdGhhdCBiZWdpbiBvbiB0aGUgZWxlbWVudCBvbmx5IGZvciB0aGUgcHVycG9zZXMgb2Ygc2Nyb2xsaW5nIGFuZCBjb250aW51b3VzIHpvb21pbmcuIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJUb3VjaGVzIHRoYXQgYmVnaW4gb24gdGhlIGVsZW1lbnQgbXVzdCBub3QgdHJpZ2dlciBkZWZhdWx0IHRvdWNoIGJlaGF2aW9ycy4ifSx7bmFtZToicGFuLXgiLGRlc2NyaXB0aW9uOiJUaGUgdXNlciBhZ2VudCBtYXkgY29uc2lkZXIgdG91Y2hlcyB0aGF0IGJlZ2luIG9uIHRoZSBlbGVtZW50IG9ubHkgZm9yIHRoZSBwdXJwb3NlcyBvZiBob3Jpem9udGFsbHkgc2Nyb2xsaW5nIHRoZSBlbGVtZW50J3MgbmVhcmVzdCBhbmNlc3RvciB3aXRoIGhvcml6b250YWxseSBzY3JvbGxhYmxlIGNvbnRlbnQuIn0se25hbWU6InBhbi15IixkZXNjcmlwdGlvbjoiVGhlIHVzZXIgYWdlbnQgbWF5IGNvbnNpZGVyIHRvdWNoZXMgdGhhdCBiZWdpbiBvbiB0aGUgZWxlbWVudCBvbmx5IGZvciB0aGUgcHVycG9zZXMgb2YgdmVydGljYWxseSBzY3JvbGxpbmcgdGhlIGVsZW1lbnQncyBuZWFyZXN0IGFuY2VzdG9yIHdpdGggdmVydGljYWxseSBzY3JvbGxhYmxlIGNvbnRlbnQuIn0se25hbWU6InBpbmNoLXpvb20iLGJyb3dzZXJzOlsiRTEyIiwiRkY1MiIsIlMxMyIsIkMzNiIsIklFMTEiLCJPMjMiXX1dLHN5bnRheDoiYXV0byB8IG5vbmUgfCBbIFsgcGFuLXggfCBwYW4tbGVmdCB8IHBhbi1yaWdodCBdIHx8IFsgcGFuLXkgfCBwYW4tdXAgfCBwYW4tZG93biBdIHx8IHBpbmNoLXpvb20gXSB8IG1hbmlwdWxhdGlvbiIscmVsZXZhbmNlOjY5LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy90b3VjaC1hY3Rpb24ifV0sZGVzY3JpcHRpb246IkRldGVybWluZXMgd2hldGhlciB0b3VjaCBpbnB1dCBtYXkgdHJpZ2dlciBkZWZhdWx0IGJlaGF2aW9yIHN1cHBsaWVkIGJ5IHVzZXIgYWdlbnQuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJ0cmFuc2Zvcm0iLGJyb3dzZXJzOlsiRTEyIiwiRkYxNiIsIlM5IiwiQzM2IiwiSUUxMCIsIk8yMyJdLHZhbHVlczpbe25hbWU6Im1hdHJpeCgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgMkQgdHJhbnNmb3JtYXRpb24gaW4gdGhlIGZvcm0gb2YgYSB0cmFuc2Zvcm1hdGlvbiBtYXRyaXggb2Ygc2l4IHZhbHVlcy4gbWF0cml4KGEsYixjLGQsZSxmKSBpcyBlcXVpdmFsZW50IHRvIGFwcGx5aW5nIHRoZSB0cmFuc2Zvcm1hdGlvbiBtYXRyaXggW2EgYiBjIGQgZSBmXSJ9LHtuYW1lOiJtYXRyaXgzZCgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgM0QgdHJhbnNmb3JtYXRpb24gYXMgYSA0eDQgaG9tb2dlbmVvdXMgbWF0cml4IG9mIDE2IHZhbHVlcyBpbiBjb2x1bW4tbWFqb3Igb3JkZXIuIn0se25hbWU6Im5vbmUifSx7bmFtZToicGVyc3BlY3RpdmUoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIHBlcnNwZWN0aXZlIHByb2plY3Rpb24gbWF0cml4LiJ9LHtuYW1lOiJyb3RhdGUoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIDJEIHJvdGF0aW9uIGJ5IHRoZSBhbmdsZSBzcGVjaWZpZWQgaW4gdGhlIHBhcmFtZXRlciBhYm91dCB0aGUgb3JpZ2luIG9mIHRoZSBlbGVtZW50LCBhcyBkZWZpbmVkIGJ5IHRoZSB0cmFuc2Zvcm0tb3JpZ2luIHByb3BlcnR5LiJ9LHtuYW1lOiJyb3RhdGUzZCgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgY2xvY2t3aXNlIDNEIHJvdGF0aW9uIGJ5IHRoZSBhbmdsZSBzcGVjaWZpZWQgaW4gbGFzdCBwYXJhbWV0ZXIgYWJvdXQgdGhlIFt4LHksel0gZGlyZWN0aW9uIHZlY3RvciBkZXNjcmliZWQgYnkgdGhlIGZpcnN0IDMgcGFyYW1ldGVycy4ifSx7bmFtZToicm90YXRlWCgnYW5nbGUnKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIGNsb2Nrd2lzZSByb3RhdGlvbiBieSB0aGUgZ2l2ZW4gYW5nbGUgYWJvdXQgdGhlIFggYXhpcy4ifSx7bmFtZToicm90YXRlWSgnYW5nbGUnKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIGNsb2Nrd2lzZSByb3RhdGlvbiBieSB0aGUgZ2l2ZW4gYW5nbGUgYWJvdXQgdGhlIFkgYXhpcy4ifSx7bmFtZToicm90YXRlWignYW5nbGUnKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIGNsb2Nrd2lzZSByb3RhdGlvbiBieSB0aGUgZ2l2ZW4gYW5nbGUgYWJvdXQgdGhlIFogYXhpcy4ifSx7bmFtZToic2NhbGUoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIDJEIHNjYWxlIG9wZXJhdGlvbiBieSB0aGUgW3N4LHN5XSBzY2FsaW5nIHZlY3RvciBkZXNjcmliZWQgYnkgdGhlIDIgcGFyYW1ldGVycy4gSWYgdGhlIHNlY29uZCBwYXJhbWV0ZXIgaXMgbm90IHByb3ZpZGVkLCBpdCBpcyB0YWtlcyBhIHZhbHVlIGVxdWFsIHRvIHRoZSBmaXJzdC4ifSx7bmFtZToic2NhbGUzZCgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgM0Qgc2NhbGUgb3BlcmF0aW9uIGJ5IHRoZSBbc3gsc3ksc3pdIHNjYWxpbmcgdmVjdG9yIGRlc2NyaWJlZCBieSB0aGUgMyBwYXJhbWV0ZXJzLiJ9LHtuYW1lOiJzY2FsZVgoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIHNjYWxlIG9wZXJhdGlvbiB1c2luZyB0aGUgW3N4LDFdIHNjYWxpbmcgdmVjdG9yLCB3aGVyZSBzeCBpcyBnaXZlbiBhcyB0aGUgcGFyYW1ldGVyLiJ9LHtuYW1lOiJzY2FsZVkoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIHNjYWxlIG9wZXJhdGlvbiB1c2luZyB0aGUgW3N5LDFdIHNjYWxpbmcgdmVjdG9yLCB3aGVyZSBzeSBpcyBnaXZlbiBhcyB0aGUgcGFyYW1ldGVyLiJ9LHtuYW1lOiJzY2FsZVooKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIHNjYWxlIG9wZXJhdGlvbiB1c2luZyB0aGUgWzEsMSxzel0gc2NhbGluZyB2ZWN0b3IsIHdoZXJlIHN6IGlzIGdpdmVuIGFzIHRoZSBwYXJhbWV0ZXIuIn0se25hbWU6InNrZXcoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIHNrZXcgdHJhbnNmb3JtYXRpb24gYWxvbmcgdGhlIFggYW5kIFkgYXhlcy4gVGhlIGZpcnN0IGFuZ2xlIHBhcmFtZXRlciBzcGVjaWZpZXMgdGhlIHNrZXcgb24gdGhlIFggYXhpcy4gVGhlIHNlY29uZCBhbmdsZSBwYXJhbWV0ZXIgc3BlY2lmaWVzIHRoZSBza2V3IG9uIHRoZSBZIGF4aXMuIElmIHRoZSBzZWNvbmQgcGFyYW1ldGVyIGlzIG5vdCBnaXZlbiB0aGVuIGEgdmFsdWUgb2YgMCBpcyB1c2VkIGZvciB0aGUgWSBhbmdsZSAoaWU6IG5vIHNrZXcgb24gdGhlIFkgYXhpcykuIn0se25hbWU6InNrZXdYKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSBza2V3IHRyYW5zZm9ybWF0aW9uIGFsb25nIHRoZSBYIGF4aXMgYnkgdGhlIGdpdmVuIGFuZ2xlLiJ9LHtuYW1lOiJza2V3WSgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgc2tldyB0cmFuc2Zvcm1hdGlvbiBhbG9uZyB0aGUgWSBheGlzIGJ5IHRoZSBnaXZlbiBhbmdsZS4ifSx7bmFtZToidHJhbnNsYXRlKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSAyRCB0cmFuc2xhdGlvbiBieSB0aGUgdmVjdG9yIFt0eCwgdHldLCB3aGVyZSB0eCBpcyB0aGUgZmlyc3QgdHJhbnNsYXRpb24tdmFsdWUgcGFyYW1ldGVyIGFuZCB0eSBpcyB0aGUgb3B0aW9uYWwgc2Vjb25kIHRyYW5zbGF0aW9uLXZhbHVlIHBhcmFtZXRlci4ifSx7bmFtZToidHJhbnNsYXRlM2QoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIDNEIHRyYW5zbGF0aW9uIGJ5IHRoZSB2ZWN0b3IgW3R4LHR5LHR6XSwgd2l0aCB0eCwgdHkgYW5kIHR6IGJlaW5nIHRoZSBmaXJzdCwgc2Vjb25kIGFuZCB0aGlyZCB0cmFuc2xhdGlvbi12YWx1ZSBwYXJhbWV0ZXJzIHJlc3BlY3RpdmVseS4ifSx7bmFtZToidHJhbnNsYXRlWCgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgdHJhbnNsYXRpb24gYnkgdGhlIGdpdmVuIGFtb3VudCBpbiB0aGUgWCBkaXJlY3Rpb24uIn0se25hbWU6InRyYW5zbGF0ZVkoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIHRyYW5zbGF0aW9uIGJ5IHRoZSBnaXZlbiBhbW91bnQgaW4gdGhlIFkgZGlyZWN0aW9uLiJ9LHtuYW1lOiJ0cmFuc2xhdGVaKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSB0cmFuc2xhdGlvbiBieSB0aGUgZ2l2ZW4gYW1vdW50IGluIHRoZSBaIGRpcmVjdGlvbi4gTm90ZSB0aGF0IHBlcmNlbnRhZ2UgdmFsdWVzIGFyZSBub3QgYWxsb3dlZCBpbiB0aGUgdHJhbnNsYXRlWiB0cmFuc2xhdGlvbi12YWx1ZSwgYW5kIGlmIHByZXNlbnQgYXJlIGV2YWx1YXRlZCBhcyAwLiJ9XSxzeW50YXg6Im5vbmUgfCA8dHJhbnNmb3JtLWxpc3Q+IixyZWxldmFuY2U6OTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3RyYW5zZm9ybSJ9XSxkZXNjcmlwdGlvbjoiQSB0d28tZGltZW5zaW9uYWwgdHJhbnNmb3JtYXRpb24gaXMgYXBwbGllZCB0byBhbiBlbGVtZW50IHRocm91Z2ggdGhlICd0cmFuc2Zvcm0nIHByb3BlcnR5LiBUaGlzIHByb3BlcnR5IGNvbnRhaW5zIGEgbGlzdCBvZiB0cmFuc2Zvcm0gZnVuY3Rpb25zIHNpbWlsYXIgdG8gdGhvc2UgYWxsb3dlZCBieSBTVkcuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJ0cmFuc2Zvcm0tb3JpZ2luIixicm93c2VyczpbIkUxMiIsIkZGMTYiLCJTOSIsIkMzNiIsIklFMTAiLCJPMjMiXSxzeW50YXg6IlsgPGxlbmd0aC1wZXJjZW50YWdlPiB8IGxlZnQgfCBjZW50ZXIgfCByaWdodCB8IHRvcCB8IGJvdHRvbSBdIHwgWyBbIDxsZW5ndGgtcGVyY2VudGFnZT4gfCBsZWZ0IHwgY2VudGVyIHwgcmlnaHQgXSAmJiBbIDxsZW5ndGgtcGVyY2VudGFnZT4gfCB0b3AgfCBjZW50ZXIgfCBib3R0b20gXSBdIDxsZW5ndGg+PyIscmVsZXZhbmNlOjc2LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy90cmFuc2Zvcm0tb3JpZ2luIn1dLGRlc2NyaXB0aW9uOiJFc3RhYmxpc2hlcyB0aGUgb3JpZ2luIG9mIHRyYW5zZm9ybWF0aW9uIGZvciBhbiBlbGVtZW50LiIscmVzdHJpY3Rpb25zOlsicG9zaXRpb24iLCJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiJ0cmFuc2Zvcm0tc3R5bGUiLGJyb3dzZXJzOlsiRTEyIiwiRkYxNiIsIlM5IiwiQzM2IiwiTzIzIl0sdmFsdWVzOlt7bmFtZToiZmxhdCIsZGVzY3JpcHRpb246IkFsbCBjaGlsZHJlbiBvZiB0aGlzIGVsZW1lbnQgYXJlIHJlbmRlcmVkIGZsYXR0ZW5lZCBpbnRvIHRoZSAyRCBwbGFuZSBvZiB0aGUgZWxlbWVudC4ifSx7bmFtZToicHJlc2VydmUtM2QiLGJyb3dzZXJzOlsiRTEyIiwiRkYxNiIsIlM5IiwiQzM2IiwiTzIzIl0sZGVzY3JpcHRpb246IkZsYXR0ZW5pbmcgaXMgbm90IHBlcmZvcm1lZCwgc28gY2hpbGRyZW4gbWFpbnRhaW4gdGhlaXIgcG9zaXRpb24gaW4gM0Qgc3BhY2UuIn1dLHN5bnRheDoiZmxhdCB8IHByZXNlcnZlLTNkIixyZWxldmFuY2U6NTYscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3RyYW5zZm9ybS1zdHlsZSJ9XSxkZXNjcmlwdGlvbjoiRGVmaW5lcyBob3cgbmVzdGVkIGVsZW1lbnRzIGFyZSByZW5kZXJlZCBpbiAzRCBzcGFjZS4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6InRyYW5zaXRpb24iLGJyb3dzZXJzOlsiRTEyIiwiRkYxNiIsIlM5IiwiQzI2IiwiSUUxMCIsIk8xMi4xIl0sdmFsdWVzOlt7bmFtZToiYWxsIixkZXNjcmlwdGlvbjoiRXZlcnkgcHJvcGVydHkgdGhhdCBpcyBhYmxlIHRvIHVuZGVyZ28gYSB0cmFuc2l0aW9uIHdpbGwgZG8gc28uIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJObyBwcm9wZXJ0eSB3aWxsIHRyYW5zaXRpb24uIn1dLHN5bnRheDoiPHNpbmdsZS10cmFuc2l0aW9uPiMiLHJlbGV2YW5jZTo4OSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvdHJhbnNpdGlvbiJ9XSxkZXNjcmlwdGlvbjoiU2hvcnRoYW5kIHByb3BlcnR5IGNvbWJpbmVzIGZvdXIgb2YgdGhlIHRyYW5zaXRpb24gcHJvcGVydGllcyBpbnRvIGEgc2luZ2xlIHByb3BlcnR5LiIscmVzdHJpY3Rpb25zOlsidGltZSIsInByb3BlcnR5IiwidGltaW5nLWZ1bmN0aW9uIiwiZW51bSJdfSx7bmFtZToidHJhbnNpdGlvbi1kZWxheSIsYnJvd3NlcnM6WyJFMTIiLCJGRjE2IiwiUzkiLCJDMjYiLCJJRTEwIiwiTzEyLjEiXSxzeW50YXg6Ijx0aW1lPiMiLHJlbGV2YW5jZTo2NCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvdHJhbnNpdGlvbi1kZWxheSJ9XSxkZXNjcmlwdGlvbjoiRGVmaW5lcyB3aGVuIHRoZSB0cmFuc2l0aW9uIHdpbGwgc3RhcnQuIEl0IGFsbG93cyBhIHRyYW5zaXRpb24gdG8gYmVnaW4gZXhlY3V0aW9uIHNvbWUgcGVyaW9kIG9mIHRpbWUgZnJvbSB3aGVuIGl0IGlzIGFwcGxpZWQuIixyZXN0cmljdGlvbnM6WyJ0aW1lIl19LHtuYW1lOiJ0cmFuc2l0aW9uLWR1cmF0aW9uIixicm93c2VyczpbIkUxMiIsIkZGMTYiLCJTOSIsIkMyNiIsIklFMTAiLCJPMTIuMSJdLHN5bnRheDoiPHRpbWU+IyIscmVsZXZhbmNlOjY4LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy90cmFuc2l0aW9uLWR1cmF0aW9uIn1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgaG93IGxvbmcgdGhlIHRyYW5zaXRpb24gZnJvbSB0aGUgb2xkIHZhbHVlIHRvIHRoZSBuZXcgdmFsdWUgc2hvdWxkIHRha2UuIixyZXN0cmljdGlvbnM6WyJ0aW1lIl19LHtuYW1lOiJ0cmFuc2l0aW9uLXByb3BlcnR5Iixicm93c2VyczpbIkUxMiIsIkZGMTYiLCJTOSIsIkMyNiIsIklFMTAiLCJPMTIuMSJdLHZhbHVlczpbe25hbWU6ImFsbCIsZGVzY3JpcHRpb246IkV2ZXJ5IHByb3BlcnR5IHRoYXQgaXMgYWJsZSB0byB1bmRlcmdvIGEgdHJhbnNpdGlvbiB3aWxsIGRvIHNvLiJ9LHtuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiTm8gcHJvcGVydHkgd2lsbCB0cmFuc2l0aW9uLiJ9XSxzeW50YXg6Im5vbmUgfCA8c2luZ2xlLXRyYW5zaXRpb24tcHJvcGVydHk+IyIscmVsZXZhbmNlOjY4LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy90cmFuc2l0aW9uLXByb3BlcnR5In1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhlIG5hbWUgb2YgdGhlIENTUyBwcm9wZXJ0eSB0byB3aGljaCB0aGUgdHJhbnNpdGlvbiBpcyBhcHBsaWVkLiIscmVzdHJpY3Rpb25zOlsicHJvcGVydHkiXX0se25hbWU6InRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uIixicm93c2VyczpbIkUxMiIsIkZGMTYiLCJTOSIsIkMyNiIsIklFMTAiLCJPMTIuMSJdLHN5bnRheDoiPGVhc2luZy1mdW5jdGlvbj4jIixyZWxldmFuY2U6NjUscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uIn1dLGRlc2NyaXB0aW9uOiJEZXNjcmliZXMgaG93IHRoZSBpbnRlcm1lZGlhdGUgdmFsdWVzIHVzZWQgZHVyaW5nIGEgdHJhbnNpdGlvbiB3aWxsIGJlIGNhbGN1bGF0ZWQuIixyZXN0cmljdGlvbnM6WyJ0aW1pbmctZnVuY3Rpb24iXX0se25hbWU6InVuaWNvZGUtYmlkaSIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMS4zIiwiQzIiLCJJRTUuNSIsIk85LjIiXSx2YWx1ZXM6W3tuYW1lOiJiaWRpLW92ZXJyaWRlIixkZXNjcmlwdGlvbjoiSW5zaWRlIHRoZSBlbGVtZW50LCByZW9yZGVyaW5nIGlzIHN0cmljdGx5IGluIHNlcXVlbmNlIGFjY29yZGluZyB0byB0aGUgJ2RpcmVjdGlvbicgcHJvcGVydHk7IHRoZSBpbXBsaWNpdCBwYXJ0IG9mIHRoZSBiaWRpcmVjdGlvbmFsIGFsZ29yaXRobSBpcyBpZ25vcmVkLiJ9LHtuYW1lOiJlbWJlZCIsZGVzY3JpcHRpb246IklmIHRoZSBlbGVtZW50IGlzIGlubGluZS1sZXZlbCwgdGhpcyB2YWx1ZSBvcGVucyBhbiBhZGRpdGlvbmFsIGxldmVsIG9mIGVtYmVkZGluZyB3aXRoIHJlc3BlY3QgdG8gdGhlIGJpZGlyZWN0aW9uYWwgYWxnb3JpdGhtLiBUaGUgZGlyZWN0aW9uIG9mIHRoaXMgZW1iZWRkaW5nIGxldmVsIGlzIGdpdmVuIGJ5IHRoZSAnZGlyZWN0aW9uJyBwcm9wZXJ0eS4ifSx7bmFtZToiaXNvbGF0ZSIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMS4zIiwiQzIiLCJJRTUuNSIsIk85LjIiXSxkZXNjcmlwdGlvbjoiVGhlIGNvbnRlbnRzIG9mIHRoZSBlbGVtZW50IGFyZSBjb25zaWRlcmVkIHRvIGJlIGluc2lkZSBhIHNlcGFyYXRlLCBpbmRlcGVuZGVudCBwYXJhZ3JhcGguIn0se25hbWU6Imlzb2xhdGUtb3ZlcnJpZGUiLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzEuMyIsIkMyIiwiSUU1LjUiLCJPOS4yIl0sZGVzY3JpcHRpb246IlRoaXMgY29tYmluZXMgdGhlIGlzb2xhdGlvbiBiZWhhdmlvciBvZiAnaXNvbGF0ZScgd2l0aCB0aGUgZGlyZWN0aW9uYWwgb3ZlcnJpZGUgYmVoYXZpb3Igb2YgJ2JpZGktb3ZlcnJpZGUnIn0se25hbWU6Im5vcm1hbCIsZGVzY3JpcHRpb246IlRoZSBlbGVtZW50IGRvZXMgbm90IG9wZW4gYW4gYWRkaXRpb25hbCBsZXZlbCBvZiBlbWJlZGRpbmcgd2l0aCByZXNwZWN0IHRvIHRoZSBiaWRpcmVjdGlvbmFsIGFsZ29yaXRobS4gRm9yIGlubGluZS1sZXZlbCBlbGVtZW50cywgaW1wbGljaXQgcmVvcmRlcmluZyB3b3JrcyBhY3Jvc3MgZWxlbWVudCBib3VuZGFyaWVzLiJ9LHtuYW1lOiJwbGFpbnRleHQiLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzEuMyIsIkMyIiwiSUU1LjUiLCJPOS4yIl0sZGVzY3JpcHRpb246IkZvciB0aGUgcHVycG9zZXMgb2YgdGhlIFVuaWNvZGUgYmlkaXJlY3Rpb25hbCBhbGdvcml0aG0sIHRoZSBiYXNlIGRpcmVjdGlvbmFsaXR5IG9mIGVhY2ggYmlkaSBwYXJhZ3JhcGggZm9yIHdoaWNoIHRoZSBlbGVtZW50IGZvcm1zIHRoZSBjb250YWluaW5nIGJsb2NrIGlzIGRldGVybWluZWQgbm90IGJ5IHRoZSBlbGVtZW50J3MgY29tcHV0ZWQgJ2RpcmVjdGlvbicuIn1dLHN5bnRheDoibm9ybWFsIHwgZW1iZWQgfCBpc29sYXRlIHwgYmlkaS1vdmVycmlkZSB8IGlzb2xhdGUtb3ZlcnJpZGUgfCBwbGFpbnRleHQiLHJlbGV2YW5jZTo1NixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvdW5pY29kZS1iaWRpIn1dLGRlc2NyaXB0aW9uOiJUaGUgbGV2ZWwgb2YgZW1iZWRkaW5nIHdpdGggcmVzcGVjdCB0byB0aGUgYmlkaXJlY3Rpb25hbCBhbGdvcml0aG0uIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJ1bmljb2RlLXJhbmdlIix2YWx1ZXM6W3tuYW1lOiJVKzI2IixkZXNjcmlwdGlvbjoiQW1wZXJzYW5kLiJ9LHtuYW1lOiJVKzIwLTI0RiwgVSsyQjAtMkZGLCBVKzM3MC00RkYsIFUrMUUwMC0xRUZGLCBVKzIwMDAtMjBDRiwgVSsyMTAwLTIzRkYsIFUrMjUwMC0yNkZGLCBVK0UwMDAtRjhGRiwgVStGQjAwLUZCNEYiLGRlc2NyaXB0aW9uOiJXR0w0IGNoYXJhY3RlciBzZXQgKFBhbi1FdXJvcGVhbikuIn0se25hbWU6IlUrMjAtMTdGLCBVKzJCMC0yRkYsIFUrMjAwMC0yMDZGLCBVKzIwQTAtMjBDRiwgVSsyMTAwLTIxRkYsIFUrMjYwMC0yNkZGIixkZXNjcmlwdGlvbjoiVGhlIE11bHRpbGluZ3VhbCBFdXJvcGVhbiBTdWJzZXQgTm8uIDEuIExhdGluLiBDb3ZlcnMgfjQ0IGxhbmd1YWdlcy4ifSx7bmFtZToiVSsyMC0yRkYsIFUrMzcwLTRGRiwgVSsxRTAwLTIwQ0YsIFUrMjEwMC0yM0ZGLCBVKzI1MDAtMjZGRiwgVStGQjAwLUZCNEYsIFUrRkZGMC1GRkZEIixkZXNjcmlwdGlvbjoiVGhlIE11bHRpbGluZ3VhbCBFdXJvcGVhbiBTdWJzZXQgTm8uIDIuIExhdGluLCBHcmVlaywgYW5kIEN5cmlsbGljLiBDb3ZlcnMgfjEyOCBsYW5ndWFnZS4ifSx7bmFtZToiVSsyMC00RkYsIFUrNTMwLTU4RiwgVSsxMEQwLTEwRkYsIFUrMUUwMC0yM0ZGLCBVKzI0NDAtMjQ1RiwgVSsyNTAwLTI2RkYsIFUrRkIwMC1GQjRGLCBVK0ZFMjAtRkUyRiwgVStGRkYwLUZGRkQiLGRlc2NyaXB0aW9uOiJUaGUgTXVsdGlsaW5ndWFsIEV1cm9wZWFuIFN1YnNldCBOby4gMy4gQ292ZXJzIGFsbCBjaGFyYWN0ZXJzIGJlbG9uZ2luZyB0byBFdXJvcGVhbiBzY3JpcHRzLiJ9LHtuYW1lOiJVKzAwLTdGIixkZXNjcmlwdGlvbjoiQmFzaWMgTGF0aW4gKEFTQ0lJKS4ifSx7bmFtZToiVSs4MC1GRiIsZGVzY3JpcHRpb246IkxhdGluLTEgU3VwcGxlbWVudC4gQWNjZW50ZWQgY2hhcmFjdGVycyBmb3IgV2VzdGVybiBFdXJvcGVhbiBsYW5ndWFnZXMsIGNvbW1vbiBwdW5jdHVhdGlvbiBjaGFyYWN0ZXJzLCBtdWx0aXBsaWNhdGlvbiBhbmQgZGl2aXNpb24gc2lnbnMuIn0se25hbWU6IlUrMTAwLTE3RiIsZGVzY3JpcHRpb246IkxhdGluIEV4dGVuZGVkLUEuIEFjY2VudGVkIGNoYXJhY3RlcnMgZm9yIGZvciBDemVjaCwgRHV0Y2gsIFBvbGlzaCwgYW5kIFR1cmtpc2guIn0se25hbWU6IlUrMTgwLTI0RiIsZGVzY3JpcHRpb246IkxhdGluIEV4dGVuZGVkLUIuIENyb2F0aWFuLCBTbG92ZW5pYW4sIFJvbWFuaWFuLCBOb24tRXVyb3BlYW4gYW5kIGhpc3RvcmljIGxhdGluLCBLaG9pc2FuLCBQaW55aW4sIExpdm9uaWFuLCBTaW5vbG9neS4ifSx7bmFtZToiVSsxRTAwLTFFRkYiLGRlc2NyaXB0aW9uOiJMYXRpbiBFeHRlbmRlZCBBZGRpdGlvbmFsLiBWaWV0bmFtZXNlLCBHZXJtYW4gY2FwdGlhbCBzaGFycCBzLCBNZWRpZXZhbGlzdCwgTGF0aW4gZ2VuZXJhbCB1c2UuIn0se25hbWU6IlUrMjUwLTJBRiIsZGVzY3JpcHRpb246IkludGVybmF0aW9uYWwgUGhvbmV0aWMgQWxwaGFiZXQgRXh0ZW5zaW9ucy4ifSx7bmFtZToiVSszNzAtM0ZGIixkZXNjcmlwdGlvbjoiR3JlZWsgYW5kIENvcHRpYy4ifSx7bmFtZToiVSsxRjAwLTFGRkYiLGRlc2NyaXB0aW9uOiJHcmVlayBFeHRlbmRlZC4gQWNjZW50ZWQgY2hhcmFjdGVycyBmb3IgcG9seXRvbmljIEdyZWVrLiJ9LHtuYW1lOiJVKzQwMC00RkYiLGRlc2NyaXB0aW9uOiJDeXJpbGxpYy4ifSx7bmFtZToiVSs1MDAtNTJGIixkZXNjcmlwdGlvbjoiQ3lyaWxsaWMgU3VwcGxlbWVudC4gRXh0cmEgbGV0dGVycyBmb3IgS29taSwgS2hhbnR5LCBDaHVrY2hpLCBNb3JkdmluLCBLdXJkaXNoLCBBbGV1dCwgQ2h1dmFzaCwgQWJraGF6LCBBemVyYmFpamFuaSwgYW5kIE9yb2suIn0se25hbWU6IlUrMDAtNTJGLCBVKzFFMDAtMUZGRiwgVSsyMjAwLTIyRkYiLGRlc2NyaXB0aW9uOiJMYXRpbiwgR3JlZWssIEN5cmlsbGljLCBzb21lIHB1bmN0dWF0aW9uIGFuZCBzeW1ib2xzLiJ9LHtuYW1lOiJVKzUzMC01OEYiLGRlc2NyaXB0aW9uOiJBcm1lbmlhbi4ifSx7bmFtZToiVSs1OTAtNUZGIixkZXNjcmlwdGlvbjoiSGVicmV3LiJ9LHtuYW1lOiJVKzYwMC02RkYiLGRlc2NyaXB0aW9uOiJBcmFiaWMuIn0se25hbWU6IlUrNzUwLTc3RiIsZGVzY3JpcHRpb246IkFyYWJpYyBTdXBwbGVtZW50LiBBZGRpdGlvbmFsIGxldHRlcnMgZm9yIEFmcmljYW4gbGFuZ3VhZ2VzLCBLaG93YXIsIFRvcndhbGksIEJ1cnVzaGFza2ksIGFuZCBlYXJseSBQZXJzaWFuLiJ9LHtuYW1lOiJVKzhBMC04RkYiLGRlc2NyaXB0aW9uOiJBcmFiaWMgRXh0ZW5kZWQtQS4gQWRkaXRpb25hbCBsZXR0ZXJzIGZvciBBZnJpY2FuIGxhbmd1YWdlcywgRXVyb3BlYW4gYW5kIENlbnRyYWwgQXNpYW4gbGFuZ3VhZ2VzLCBSb2hpbmd5YSwgVGFtYXppZ2h0LCBBcndpLCBhbmQgS29yYW5pYyBhbm5vdGF0aW9uIHNpZ25zLiJ9LHtuYW1lOiJVKzcwMC03NEYiLGRlc2NyaXB0aW9uOiJTeXJpYWMuIn0se25hbWU6IlUrOTAwLTk3RiIsZGVzY3JpcHRpb246IkRldmFuYWdhcmkuIn0se25hbWU6IlUrOTgwLTlGRiIsZGVzY3JpcHRpb246IkJlbmdhbGkuIn0se25hbWU6IlUrQTAwLUE3RiIsZGVzY3JpcHRpb246Ikd1cm11a2hpLiJ9LHtuYW1lOiJVK0E4MC1BRkYiLGRlc2NyaXB0aW9uOiJHdWphcmF0aS4ifSx7bmFtZToiVStCMDAtQjdGIixkZXNjcmlwdGlvbjoiT3JpeWEuIn0se25hbWU6IlUrQjgwLUJGRiIsZGVzY3JpcHRpb246IlRhbWlsLiJ9LHtuYW1lOiJVK0MwMC1DN0YiLGRlc2NyaXB0aW9uOiJUZWx1Z3UuIn0se25hbWU6IlUrQzgwLUNGRiIsZGVzY3JpcHRpb246Ikthbm5hZGEuIn0se25hbWU6IlUrRDAwLUQ3RiIsZGVzY3JpcHRpb246Ik1hbGF5YWxhbS4ifSx7bmFtZToiVStEODAtREZGIixkZXNjcmlwdGlvbjoiU2luaGFsYS4ifSx7bmFtZToiVSsxMThBMC0xMThGRiIsZGVzY3JpcHRpb246IldhcmFuZyBDaXRpLiJ9LHtuYW1lOiJVK0UwMC1FN0YiLGRlc2NyaXB0aW9uOiJUaGFpLiJ9LHtuYW1lOiJVKzFBMjAtMUFBRiIsZGVzY3JpcHRpb246IlRhaSBUaGFtLiJ9LHtuYW1lOiJVK0FBODAtQUFERiIsZGVzY3JpcHRpb246IlRhaSBWaWV0LiJ9LHtuYW1lOiJVK0U4MC1FRkYiLGRlc2NyaXB0aW9uOiJMYW8uIn0se25hbWU6IlUrRjAwLUZGRiIsZGVzY3JpcHRpb246IlRpYmV0YW4uIn0se25hbWU6IlUrMTAwMC0xMDlGIixkZXNjcmlwdGlvbjoiTXlhbm1hciAoQnVybWVzZSkuIn0se25hbWU6IlUrMTBBMC0xMEZGIixkZXNjcmlwdGlvbjoiR2VvcmdpYW4uIn0se25hbWU6IlUrMTIwMC0xMzdGIixkZXNjcmlwdGlvbjoiRXRoaW9waWMuIn0se25hbWU6IlUrMTM4MC0xMzlGIixkZXNjcmlwdGlvbjoiRXRoaW9waWMgU3VwcGxlbWVudC4gRXh0cmEgU3lsbGFibGVzIGZvciBTZWJhdGJlaXQsIGFuZCBUb25hbCBtYXJrcyJ9LHtuYW1lOiJVKzJEODAtMkRERiIsZGVzY3JpcHRpb246IkV0aGlvcGljIEV4dGVuZGVkLiBFeHRyYSBTeWxsYWJsZXMgZm9yIE1lJ2VuLCBCbGluLCBhbmQgU2ViYXRiZWl0LiJ9LHtuYW1lOiJVK0FCMDAtQUIyRiIsZGVzY3JpcHRpb246IkV0aGlvcGljIEV4dGVuZGVkLUEuIEV4dHJhIGNoYXJhY3RlcnMgZm9yIEdhbW8tR29mYS1EYXdybywgQmFza2V0bywgYW5kIEd1bXV6LiJ9LHtuYW1lOiJVKzE3ODAtMTdGRiIsZGVzY3JpcHRpb246IktobWVyLiJ9LHtuYW1lOiJVKzE4MDAtMThBRiIsZGVzY3JpcHRpb246Ik1vbmdvbGlhbi4ifSx7bmFtZToiVSsxQjgwLTFCQkYiLGRlc2NyaXB0aW9uOiJTdW5kYW5lc2UuIn0se25hbWU6IlUrMUNDMC0xQ0NGIixkZXNjcmlwdGlvbjoiU3VuZGFuZXNlIFN1cHBsZW1lbnQuIFB1bmN0dWF0aW9uLiJ9LHtuYW1lOiJVKzRFMDAtOUZENSIsZGVzY3JpcHRpb246IkNKSyAoQ2hpbmVzZSwgSmFwYW5lc2UsIEtvcmVhbikgVW5pZmllZCBJZGVvZ3JhcGhzLiBNb3N0IGNvbW1vbiBpZGVvZ3JhcGhzIGZvciBtb2Rlcm4gQ2hpbmVzZSBhbmQgSmFwYW5lc2UuIn0se25hbWU6IlUrMzQwMC00REI1IixkZXNjcmlwdGlvbjoiQ0pLIFVuaWZpZWQgSWRlb2dyYXBocyBFeHRlbnNpb24gQS4gUmFyZSBpZGVvZ3JhcGhzLiJ9LHtuYW1lOiJVKzJGMDAtMkZERiIsZGVzY3JpcHRpb246Ikthbmd4aSBSYWRpY2Fscy4ifSx7bmFtZToiVSsyRTgwLTJFRkYiLGRlc2NyaXB0aW9uOiJDSksgUmFkaWNhbHMgU3VwcGxlbWVudC4gQWx0ZXJuYXRpdmUgZm9ybXMgb2YgS2FuZ3hpIFJhZGljYWxzLiJ9LHtuYW1lOiJVKzExMDAtMTFGRiIsZGVzY3JpcHRpb246Ikhhbmd1bCBKYW1vLiJ9LHtuYW1lOiJVK0FDMDAtRDdBRiIsZGVzY3JpcHRpb246Ikhhbmd1bCBTeWxsYWJsZXMuIn0se25hbWU6IlUrMzA0MC0zMDlGIixkZXNjcmlwdGlvbjoiSGlyYWdhbmEuIn0se25hbWU6IlUrMzBBMC0zMEZGIixkZXNjcmlwdGlvbjoiS2F0YWthbmEuIn0se25hbWU6IlUrQTUsIFUrNEUwMC05RkZGLCBVKzMwPz8sIFUrRkYwMC1GRjlGIixkZXNjcmlwdGlvbjoiSmFwYW5lc2UgS2FuamksIEhpcmFnYW5hIGFuZCBLYXRha2FuYSBjaGFyYWN0ZXJzIHBsdXMgWWVuL1l1YW4gc3ltYm9sLiJ9LHtuYW1lOiJVK0E0RDAtQTRGRiIsZGVzY3JpcHRpb246Ikxpc3UuIn0se25hbWU6IlUrQTAwMC1BNDhGIixkZXNjcmlwdGlvbjoiWWkgU3lsbGFibGVzLiJ9LHtuYW1lOiJVK0E0OTAtQTRDRiIsZGVzY3JpcHRpb246IllpIFJhZGljYWxzLiJ9LHtuYW1lOiJVKzIwMDAtMjA2RiIsZGVzY3JpcHRpb246IkdlbmVyYWwgUHVuY3R1YXRpb24uIn0se25hbWU6IlUrMzAwMC0zMDNGIixkZXNjcmlwdGlvbjoiQ0pLIFN5bWJvbHMgYW5kIFB1bmN0dWF0aW9uLiJ9LHtuYW1lOiJVKzIwNzAtMjA5RiIsZGVzY3JpcHRpb246IlN1cGVyc2NyaXB0cyBhbmQgU3Vic2NyaXB0cy4ifSx7bmFtZToiVSsyMEEwLTIwQ0YiLGRlc2NyaXB0aW9uOiJDdXJyZW5jeSBTeW1ib2xzLiJ9LHtuYW1lOiJVKzIxMDAtMjE0RiIsZGVzY3JpcHRpb246IkxldHRlcmxpa2UgU3ltYm9scy4ifSx7bmFtZToiVSsyMTUwLTIxOEYiLGRlc2NyaXB0aW9uOiJOdW1iZXIgRm9ybXMuIn0se25hbWU6IlUrMjE5MC0yMUZGIixkZXNjcmlwdGlvbjoiQXJyb3dzLiJ9LHtuYW1lOiJVKzIyMDAtMjJGRiIsZGVzY3JpcHRpb246Ik1hdGhlbWF0aWNhbCBPcGVyYXRvcnMuIn0se25hbWU6IlUrMjMwMC0yM0ZGIixkZXNjcmlwdGlvbjoiTWlzY2VsbGFuZW91cyBUZWNobmljYWwuIn0se25hbWU6IlUrRTAwMC1GOEZGIixkZXNjcmlwdGlvbjoiUHJpdmF0ZSBVc2UgQXJlYS4ifSx7bmFtZToiVStGQjAwLUZCNEYiLGRlc2NyaXB0aW9uOiJBbHBoYWJldGljIFByZXNlbnRhdGlvbiBGb3Jtcy4gTGlnYXR1cmVzIGZvciBsYXRpbiwgQXJtZW5pYW4sIGFuZCBIZWJyZXcuIn0se25hbWU6IlUrRkI1MC1GREZGIixkZXNjcmlwdGlvbjoiQXJhYmljIFByZXNlbnRhdGlvbiBGb3Jtcy1BLiBDb250ZXh0dWFsIGZvcm1zIC8gbGlnYXR1cmVzIGZvciBQZXJzaWFuLCBVcmR1LCBTaW5kaGksIENlbnRyYWwgQXNpYW4gbGFuZ3VhZ2VzLCBldGMsIEFyYWJpYyBwZWRhZ29naWNhbCBzeW1ib2xzLCB3b3JkIGxpZ2F0dXJlcy4ifSx7bmFtZToiVSsxRjYwMC0xRjY0RiIsZGVzY3JpcHRpb246IkVtb2ppOiBFbW90aWNvbnMuIn0se25hbWU6IlUrMjYwMC0yNkZGIixkZXNjcmlwdGlvbjoiRW1vamk6IE1pc2NlbGxhbmVvdXMgU3ltYm9scy4ifSx7bmFtZToiVSsxRjMwMC0xRjVGRiIsZGVzY3JpcHRpb246IkVtb2ppOiBNaXNjZWxsYW5lb3VzIFN5bWJvbHMgYW5kIFBpY3RvZ3JhcGhzLiJ9LHtuYW1lOiJVKzFGOTAwLTFGOUZGIixkZXNjcmlwdGlvbjoiRW1vamk6IFN1cHBsZW1lbnRhbCBTeW1ib2xzIGFuZCBQaWN0b2dyYXBocy4ifSx7bmFtZToiVSsxRjY4MC0xRjZGRiIsZGVzY3JpcHRpb246IkVtb2ppOiBUcmFuc3BvcnQgYW5kIE1hcCBTeW1ib2xzLiJ9XSxhdFJ1bGU6IkBmb250LWZhY2UiLHN5bnRheDoiPHVuaWNvZGUtcmFuZ2U+IyIscmVsZXZhbmNlOjcyLGRlc2NyaXB0aW9uOiJAZm9udC1mYWNlIGRlc2NyaXB0b3IuIERlZmluZXMgdGhlIHNldCBvZiBVbmljb2RlIGNvZGVwb2ludHMgdGhhdCBtYXkgYmUgc3VwcG9ydGVkIGJ5IHRoZSBmb250IGZhY2UgZm9yIHdoaWNoIGl0IGlzIGRlY2xhcmVkLiIscmVzdHJpY3Rpb25zOlsidW5pY29kZS1yYW5nZSJdfSx7bmFtZToidXNlci1zZWxlY3QiLGJyb3dzZXJzOlsiRTc5IiwiRkY2OSIsIlMzIiwiQzU0IiwiSUUxMCIsIk80MSJdLHZhbHVlczpbe25hbWU6ImFsbCIsZGVzY3JpcHRpb246IlRoZSBjb250ZW50IG9mIHRoZSBlbGVtZW50IG11c3QgYmUgc2VsZWN0ZWQgYXRvbWljYWxseSJ9LHtuYW1lOiJhdXRvIn0se25hbWU6ImNvbnRhaW4iLGRlc2NyaXB0aW9uOiJVQXMgbXVzdCBub3QgYWxsb3cgYSBzZWxlY3Rpb24gd2hpY2ggaXMgc3RhcnRlZCBpbiB0aGlzIGVsZW1lbnQgdG8gYmUgZXh0ZW5kZWQgb3V0c2lkZSBvZiB0aGlzIGVsZW1lbnQuIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJUaGUgVUEgbXVzdCBub3QgYWxsb3cgc2VsZWN0aW9ucyB0byBiZSBzdGFydGVkIGluIHRoaXMgZWxlbWVudC4ifSx7bmFtZToidGV4dCIsZGVzY3JpcHRpb246IlRoZSBlbGVtZW50IGltcG9zZXMgbm8gY29uc3RyYWludCBvbiB0aGUgc2VsZWN0aW9uLiJ9XSxzeW50YXg6ImF1dG8gfCB0ZXh0IHwgbm9uZSB8IGNvbnRhaW4gfCBhbGwiLHJlbGV2YW5jZTo4MixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvdXNlci1zZWxlY3QifV0sZGVzY3JpcHRpb246IkNvbnRyb2xzIHRoZSBhcHBlYXJhbmNlIG9mIHNlbGVjdGlvbi4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6InZlcnRpY2FsLWFsaWduIixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxIiwiQzEiLCJJRTQiLCJPNCJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJBbGlnbiB0aGUgZG9taW5hbnQgYmFzZWxpbmUgb2YgdGhlIHBhcmVudCBib3ggd2l0aCB0aGUgZXF1aXZhbGVudCwgb3IgaGV1cmlzdGljYWxseSByZWNvbnN0cnVjdGVkLCBiYXNlbGluZSBvZiB0aGUgZWxlbWVudCBpbmxpbmUgYm94LiJ9LHtuYW1lOiJiYXNlbGluZSIsZGVzY3JpcHRpb246IkFsaWduIHRoZSAnYWxwaGFiZXRpYycgYmFzZWxpbmUgb2YgdGhlIGVsZW1lbnQgd2l0aCB0aGUgJ2FscGhhYmV0aWMnIGJhc2VsaW5lIG9mIHRoZSBwYXJlbnQgZWxlbWVudC4ifSx7bmFtZToiYm90dG9tIixkZXNjcmlwdGlvbjoiQWxpZ24gdGhlIGFmdGVyIGVkZ2Ugb2YgdGhlIGV4dGVuZGVkIGlubGluZSBib3ggd2l0aCB0aGUgYWZ0ZXItZWRnZSBvZiB0aGUgbGluZSBib3guIn0se25hbWU6Im1pZGRsZSIsZGVzY3JpcHRpb246IkFsaWduIHRoZSAnbWlkZGxlJyBiYXNlbGluZSBvZiB0aGUgaW5saW5lIGVsZW1lbnQgd2l0aCB0aGUgbWlkZGxlIGJhc2VsaW5lIG9mIHRoZSBwYXJlbnQuIn0se25hbWU6InN1YiIsZGVzY3JpcHRpb246Ikxvd2VyIHRoZSBiYXNlbGluZSBvZiB0aGUgYm94IHRvIHRoZSBwcm9wZXIgcG9zaXRpb24gZm9yIHN1YnNjcmlwdHMgb2YgdGhlIHBhcmVudCdzIGJveC4gKFRoaXMgdmFsdWUgaGFzIG5vIGVmZmVjdCBvbiB0aGUgZm9udCBzaXplIG9mIHRoZSBlbGVtZW50J3MgdGV4dC4pIn0se25hbWU6InN1cGVyIixkZXNjcmlwdGlvbjoiUmFpc2UgdGhlIGJhc2VsaW5lIG9mIHRoZSBib3ggdG8gdGhlIHByb3BlciBwb3NpdGlvbiBmb3Igc3VwZXJzY3JpcHRzIG9mIHRoZSBwYXJlbnQncyBib3guIChUaGlzIHZhbHVlIGhhcyBubyBlZmZlY3Qgb24gdGhlIGZvbnQgc2l6ZSBvZiB0aGUgZWxlbWVudCdzIHRleHQuKSJ9LHtuYW1lOiJ0ZXh0LWJvdHRvbSIsZGVzY3JpcHRpb246IkFsaWduIHRoZSBib3R0b20gb2YgdGhlIGJveCB3aXRoIHRoZSBhZnRlci1lZGdlIG9mIHRoZSBwYXJlbnQgZWxlbWVudCdzIGZvbnQuIn0se25hbWU6InRleHQtdG9wIixkZXNjcmlwdGlvbjoiQWxpZ24gdGhlIHRvcCBvZiB0aGUgYm94IHdpdGggdGhlIGJlZm9yZS1lZGdlIG9mIHRoZSBwYXJlbnQgZWxlbWVudCdzIGZvbnQuIn0se25hbWU6InRvcCIsZGVzY3JpcHRpb246IkFsaWduIHRoZSBiZWZvcmUgZWRnZSBvZiB0aGUgZXh0ZW5kZWQgaW5saW5lIGJveCB3aXRoIHRoZSBiZWZvcmUtZWRnZSBvZiB0aGUgbGluZSBib3guIn0se25hbWU6Ii13ZWJraXQtYmFzZWxpbmUtbWlkZGxlIixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxIiwiQzEiLCJJRTQiLCJPNCJdfV0sc3ludGF4OiJiYXNlbGluZSB8IHN1YiB8IHN1cGVyIHwgdGV4dC10b3AgfCB0ZXh0LWJvdHRvbSB8IG1pZGRsZSB8IHRvcCB8IGJvdHRvbSB8IDxwZXJjZW50YWdlPiB8IDxsZW5ndGg+IixyZWxldmFuY2U6OTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3ZlcnRpY2FsLWFsaWduIn1dLGRlc2NyaXB0aW9uOiJBZmZlY3RzIHRoZSB2ZXJ0aWNhbCBwb3NpdGlvbmluZyBvZiB0aGUgaW5saW5lIGJveGVzIGdlbmVyYXRlZCBieSBhbiBpbmxpbmUtbGV2ZWwgZWxlbWVudCBpbnNpZGUgYSBsaW5lIGJveC4iLHJlc3RyaWN0aW9uczpbInBlcmNlbnRhZ2UiLCJsZW5ndGgiXX0se25hbWU6InZpc2liaWxpdHkiLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzEiLCJDMSIsIklFNCIsIk80Il0sdmFsdWVzOlt7bmFtZToiY29sbGFwc2UiLGRlc2NyaXB0aW9uOiJUYWJsZS1zcGVjaWZpYy4gSWYgdXNlZCBvbiBlbGVtZW50cyBvdGhlciB0aGFuIHJvd3MsIHJvdyBncm91cHMsIGNvbHVtbnMsIG9yIGNvbHVtbiBncm91cHMsICdjb2xsYXBzZScgaGFzIHRoZSBzYW1lIG1lYW5pbmcgYXMgJ2hpZGRlbicuIn0se25hbWU6ImhpZGRlbiIsZGVzY3JpcHRpb246IlRoZSBnZW5lcmF0ZWQgYm94IGlzIGludmlzaWJsZSAoZnVsbHkgdHJhbnNwYXJlbnQsIG5vdGhpbmcgaXMgZHJhd24pLCBidXQgc3RpbGwgYWZmZWN0cyBsYXlvdXQuIn0se25hbWU6InZpc2libGUiLGRlc2NyaXB0aW9uOiJUaGUgZ2VuZXJhdGVkIGJveCBpcyB2aXNpYmxlLiJ9XSxzeW50YXg6InZpc2libGUgfCBoaWRkZW4gfCBjb2xsYXBzZSIscmVsZXZhbmNlOjg3LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy92aXNpYmlsaXR5In1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgd2hldGhlciB0aGUgYm94ZXMgZ2VuZXJhdGVkIGJ5IGFuIGVsZW1lbnQgYXJlIHJlbmRlcmVkLiBJbnZpc2libGUgYm94ZXMgc3RpbGwgYWZmZWN0IGxheW91dCAoc2V0IHRoZSAnZGlzcGxheScgcHJvcGVydHkgdG8gJ25vbmUnIHRvIHN1cHByZXNzIGJveCBnZW5lcmF0aW9uIGFsdG9nZXRoZXIpLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLXdlYmtpdC1hbmltYXRpb24iLGJyb3dzZXJzOlsiQyIsIlM1Il0sdmFsdWVzOlt7bmFtZToiYWx0ZXJuYXRlIixkZXNjcmlwdGlvbjoiVGhlIGFuaW1hdGlvbiBjeWNsZSBpdGVyYXRpb25zIHRoYXQgYXJlIG9kZCBjb3VudHMgYXJlIHBsYXllZCBpbiB0aGUgbm9ybWFsIGRpcmVjdGlvbiwgYW5kIHRoZSBhbmltYXRpb24gY3ljbGUgaXRlcmF0aW9ucyB0aGF0IGFyZSBldmVuIGNvdW50cyBhcmUgcGxheWVkIGluIGEgcmV2ZXJzZSBkaXJlY3Rpb24uIn0se25hbWU6ImFsdGVybmF0ZS1yZXZlcnNlIixkZXNjcmlwdGlvbjoiVGhlIGFuaW1hdGlvbiBjeWNsZSBpdGVyYXRpb25zIHRoYXQgYXJlIG9kZCBjb3VudHMgYXJlIHBsYXllZCBpbiB0aGUgcmV2ZXJzZSBkaXJlY3Rpb24sIGFuZCB0aGUgYW5pbWF0aW9uIGN5Y2xlIGl0ZXJhdGlvbnMgdGhhdCBhcmUgZXZlbiBjb3VudHMgYXJlIHBsYXllZCBpbiBhIG5vcm1hbCBkaXJlY3Rpb24uIn0se25hbWU6ImJhY2t3YXJkcyIsZGVzY3JpcHRpb246IlRoZSBiZWdpbm5pbmcgcHJvcGVydHkgdmFsdWUgKGFzIGRlZmluZWQgaW4gdGhlIGZpcnN0IEBrZXlmcmFtZXMgYXQtcnVsZSkgaXMgYXBwbGllZCBiZWZvcmUgdGhlIGFuaW1hdGlvbiBpcyBkaXNwbGF5ZWQsIGR1cmluZyB0aGUgcGVyaW9kIGRlZmluZWQgYnkgJ2FuaW1hdGlvbi1kZWxheScuIn0se25hbWU6ImJvdGgiLGRlc2NyaXB0aW9uOiJCb3RoIGZvcndhcmRzIGFuZCBiYWNrd2FyZHMgZmlsbCBtb2RlcyBhcmUgYXBwbGllZC4ifSx7bmFtZToiZm9yd2FyZHMiLGRlc2NyaXB0aW9uOiJUaGUgZmluYWwgcHJvcGVydHkgdmFsdWUgKGFzIGRlZmluZWQgaW4gdGhlIGxhc3QgQGtleWZyYW1lcyBhdC1ydWxlKSBpcyBtYWludGFpbmVkIGFmdGVyIHRoZSBhbmltYXRpb24gY29tcGxldGVzLiJ9LHtuYW1lOiJpbmZpbml0ZSIsZGVzY3JpcHRpb246IkNhdXNlcyB0aGUgYW5pbWF0aW9uIHRvIHJlcGVhdCBmb3JldmVyLiJ9LHtuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiTm8gYW5pbWF0aW9uIGlzIHBlcmZvcm1lZCJ9LHtuYW1lOiJub3JtYWwiLGRlc2NyaXB0aW9uOiJOb3JtYWwgcGxheWJhY2suIn0se25hbWU6InJldmVyc2UiLGRlc2NyaXB0aW9uOiJBbGwgaXRlcmF0aW9ucyBvZiB0aGUgYW5pbWF0aW9uIGFyZSBwbGF5ZWQgaW4gdGhlIHJldmVyc2UgZGlyZWN0aW9uIGZyb20gdGhlIHdheSB0aGV5IHdlcmUgc3BlY2lmaWVkLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlNob3J0aGFuZCBwcm9wZXJ0eSBjb21iaW5lcyBzaXggb2YgdGhlIGFuaW1hdGlvbiBwcm9wZXJ0aWVzIGludG8gYSBzaW5nbGUgcHJvcGVydHkuIixyZXN0cmljdGlvbnM6WyJ0aW1lIiwiZW51bSIsInRpbWluZy1mdW5jdGlvbiIsImlkZW50aWZpZXIiLCJudW1iZXIiXX0se25hbWU6Ii13ZWJraXQtYW5pbWF0aW9uLWRlbGF5Iixicm93c2VyczpbIkMiLCJTNSJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRGVmaW5lcyB3aGVuIHRoZSBhbmltYXRpb24gd2lsbCBzdGFydC4iLHJlc3RyaWN0aW9uczpbInRpbWUiXX0se25hbWU6Ii13ZWJraXQtYW5pbWF0aW9uLWRpcmVjdGlvbiIsYnJvd3NlcnM6WyJDIiwiUzUiXSx2YWx1ZXM6W3tuYW1lOiJhbHRlcm5hdGUiLGRlc2NyaXB0aW9uOiJUaGUgYW5pbWF0aW9uIGN5Y2xlIGl0ZXJhdGlvbnMgdGhhdCBhcmUgb2RkIGNvdW50cyBhcmUgcGxheWVkIGluIHRoZSBub3JtYWwgZGlyZWN0aW9uLCBhbmQgdGhlIGFuaW1hdGlvbiBjeWNsZSBpdGVyYXRpb25zIHRoYXQgYXJlIGV2ZW4gY291bnRzIGFyZSBwbGF5ZWQgaW4gYSByZXZlcnNlIGRpcmVjdGlvbi4ifSx7bmFtZToiYWx0ZXJuYXRlLXJldmVyc2UiLGRlc2NyaXB0aW9uOiJUaGUgYW5pbWF0aW9uIGN5Y2xlIGl0ZXJhdGlvbnMgdGhhdCBhcmUgb2RkIGNvdW50cyBhcmUgcGxheWVkIGluIHRoZSByZXZlcnNlIGRpcmVjdGlvbiwgYW5kIHRoZSBhbmltYXRpb24gY3ljbGUgaXRlcmF0aW9ucyB0aGF0IGFyZSBldmVuIGNvdW50cyBhcmUgcGxheWVkIGluIGEgbm9ybWFsIGRpcmVjdGlvbi4ifSx7bmFtZToibm9ybWFsIixkZXNjcmlwdGlvbjoiTm9ybWFsIHBsYXliYWNrLiJ9LHtuYW1lOiJyZXZlcnNlIixkZXNjcmlwdGlvbjoiQWxsIGl0ZXJhdGlvbnMgb2YgdGhlIGFuaW1hdGlvbiBhcmUgcGxheWVkIGluIHRoZSByZXZlcnNlIGRpcmVjdGlvbiBmcm9tIHRoZSB3YXkgdGhleSB3ZXJlIHNwZWNpZmllZC4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJEZWZpbmVzIHdoZXRoZXIgb3Igbm90IHRoZSBhbmltYXRpb24gc2hvdWxkIHBsYXkgaW4gcmV2ZXJzZSBvbiBhbHRlcm5hdGUgY3ljbGVzLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLXdlYmtpdC1hbmltYXRpb24tZHVyYXRpb24iLGJyb3dzZXJzOlsiQyIsIlM1Il0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJEZWZpbmVzIHRoZSBsZW5ndGggb2YgdGltZSB0aGF0IGFuIGFuaW1hdGlvbiB0YWtlcyB0byBjb21wbGV0ZSBvbmUgY3ljbGUuIixyZXN0cmljdGlvbnM6WyJ0aW1lIl19LHtuYW1lOiItd2Via2l0LWFuaW1hdGlvbi1maWxsLW1vZGUiLGJyb3dzZXJzOlsiQyIsIlM1Il0sdmFsdWVzOlt7bmFtZToiYmFja3dhcmRzIixkZXNjcmlwdGlvbjoiVGhlIGJlZ2lubmluZyBwcm9wZXJ0eSB2YWx1ZSAoYXMgZGVmaW5lZCBpbiB0aGUgZmlyc3QgQGtleWZyYW1lcyBhdC1ydWxlKSBpcyBhcHBsaWVkIGJlZm9yZSB0aGUgYW5pbWF0aW9uIGlzIGRpc3BsYXllZCwgZHVyaW5nIHRoZSBwZXJpb2QgZGVmaW5lZCBieSAnYW5pbWF0aW9uLWRlbGF5Jy4ifSx7bmFtZToiYm90aCIsZGVzY3JpcHRpb246IkJvdGggZm9yd2FyZHMgYW5kIGJhY2t3YXJkcyBmaWxsIG1vZGVzIGFyZSBhcHBsaWVkLiJ9LHtuYW1lOiJmb3J3YXJkcyIsZGVzY3JpcHRpb246IlRoZSBmaW5hbCBwcm9wZXJ0eSB2YWx1ZSAoYXMgZGVmaW5lZCBpbiB0aGUgbGFzdCBAa2V5ZnJhbWVzIGF0LXJ1bGUpIGlzIG1haW50YWluZWQgYWZ0ZXIgdGhlIGFuaW1hdGlvbiBjb21wbGV0ZXMuIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJUaGVyZSBpcyBubyBjaGFuZ2UgdG8gdGhlIHByb3BlcnR5IHZhbHVlIGJldHdlZW4gdGhlIHRpbWUgdGhlIGFuaW1hdGlvbiBpcyBhcHBsaWVkIGFuZCB0aGUgdGltZSB0aGUgYW5pbWF0aW9uIGJlZ2lucyBwbGF5aW5nIG9yIGFmdGVyIHRoZSBhbmltYXRpb24gY29tcGxldGVzLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkRlZmluZXMgd2hhdCB2YWx1ZXMgYXJlIGFwcGxpZWQgYnkgdGhlIGFuaW1hdGlvbiBvdXRzaWRlIHRoZSB0aW1lIGl0IGlzIGV4ZWN1dGluZy4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii13ZWJraXQtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudCIsYnJvd3NlcnM6WyJDIiwiUzUiXSx2YWx1ZXM6W3tuYW1lOiJpbmZpbml0ZSIsZGVzY3JpcHRpb246IkNhdXNlcyB0aGUgYW5pbWF0aW9uIHRvIHJlcGVhdCBmb3JldmVyLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkRlZmluZXMgdGhlIG51bWJlciBvZiB0aW1lcyBhbiBhbmltYXRpb24gY3ljbGUgaXMgcGxheWVkLiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyBvbmUsIG1lYW5pbmcgdGhlIGFuaW1hdGlvbiB3aWxsIHBsYXkgZnJvbSBiZWdpbm5pbmcgdG8gZW5kIG9uY2UuIixyZXN0cmljdGlvbnM6WyJudW1iZXIiLCJlbnVtIl19LHtuYW1lOiItd2Via2l0LWFuaW1hdGlvbi1uYW1lIixicm93c2VyczpbIkMiLCJTNSJdLHZhbHVlczpbe25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJObyBhbmltYXRpb24gaXMgcGVyZm9ybWVkIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRGVmaW5lcyBhIGxpc3Qgb2YgYW5pbWF0aW9ucyB0aGF0IGFwcGx5LiBFYWNoIG5hbWUgaXMgdXNlZCB0byBzZWxlY3QgdGhlIGtleWZyYW1lIGF0LXJ1bGUgdGhhdCBwcm92aWRlcyB0aGUgcHJvcGVydHkgdmFsdWVzIGZvciB0aGUgYW5pbWF0aW9uLiIscmVzdHJpY3Rpb25zOlsiaWRlbnRpZmllciIsImVudW0iXX0se25hbWU6Ii13ZWJraXQtYW5pbWF0aW9uLXBsYXktc3RhdGUiLGJyb3dzZXJzOlsiQyIsIlM1Il0sdmFsdWVzOlt7bmFtZToicGF1c2VkIixkZXNjcmlwdGlvbjoiQSBydW5uaW5nIGFuaW1hdGlvbiB3aWxsIGJlIHBhdXNlZC4ifSx7bmFtZToicnVubmluZyIsZGVzY3JpcHRpb246IlJlc3VtZSBwbGF5YmFjayBvZiBhIHBhdXNlZCBhbmltYXRpb24uIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRGVmaW5lcyB3aGV0aGVyIHRoZSBhbmltYXRpb24gaXMgcnVubmluZyBvciBwYXVzZWQuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb24iLGJyb3dzZXJzOlsiQyIsIlM1Il0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJEZXNjcmliZXMgaG93IHRoZSBhbmltYXRpb24gd2lsbCBwcm9ncmVzcyBvdmVyIG9uZSBjeWNsZSBvZiBpdHMgZHVyYXRpb24uIFNlZSB0aGUgJ3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uJy4iLHJlc3RyaWN0aW9uczpbInRpbWluZy1mdW5jdGlvbiJdfSx7bmFtZToiLXdlYmtpdC1hcHBlYXJhbmNlIixicm93c2VyczpbIkMiLCJTMyJdLHZhbHVlczpbe25hbWU6ImJ1dHRvbiJ9LHtuYW1lOiJidXR0b24tYmV2ZWwifSx7bmFtZToiY2Fwcy1sb2NrLWluZGljYXRvciJ9LHtuYW1lOiJjYXJldCJ9LHtuYW1lOiJjaGVja2JveCJ9LHtuYW1lOiJkZWZhdWx0LWJ1dHRvbiJ9LHtuYW1lOiJsaXN0Ym94In0se25hbWU6Imxpc3RpdGVtIn0se25hbWU6Im1lZGlhLWZ1bGxzY3JlZW4tYnV0dG9uIn0se25hbWU6Im1lZGlhLW11dGUtYnV0dG9uIn0se25hbWU6Im1lZGlhLXBsYXktYnV0dG9uIn0se25hbWU6Im1lZGlhLXNlZWstYmFjay1idXR0b24ifSx7bmFtZToibWVkaWEtc2Vlay1mb3J3YXJkLWJ1dHRvbiJ9LHtuYW1lOiJtZWRpYS1zbGlkZXIifSx7bmFtZToibWVkaWEtc2xpZGVydGh1bWIifSx7bmFtZToibWVudWxpc3QifSx7bmFtZToibWVudWxpc3QtYnV0dG9uIn0se25hbWU6Im1lbnVsaXN0LXRleHQifSx7bmFtZToibWVudWxpc3QtdGV4dGZpZWxkIn0se25hbWU6Im5vbmUifSx7bmFtZToicHVzaC1idXR0b24ifSx7bmFtZToicmFkaW8ifSx7bmFtZToic2Nyb2xsYmFyYnV0dG9uLWRvd24ifSx7bmFtZToic2Nyb2xsYmFyYnV0dG9uLWxlZnQifSx7bmFtZToic2Nyb2xsYmFyYnV0dG9uLXJpZ2h0In0se25hbWU6InNjcm9sbGJhcmJ1dHRvbi11cCJ9LHtuYW1lOiJzY3JvbGxiYXJncmlwcGVyLWhvcml6b250YWwifSx7bmFtZToic2Nyb2xsYmFyZ3JpcHBlci12ZXJ0aWNhbCJ9LHtuYW1lOiJzY3JvbGxiYXJ0aHVtYi1ob3Jpem9udGFsIn0se25hbWU6InNjcm9sbGJhcnRodW1iLXZlcnRpY2FsIn0se25hbWU6InNjcm9sbGJhcnRyYWNrLWhvcml6b250YWwifSx7bmFtZToic2Nyb2xsYmFydHJhY2stdmVydGljYWwifSx7bmFtZToic2VhcmNoZmllbGQifSx7bmFtZToic2VhcmNoZmllbGQtY2FuY2VsLWJ1dHRvbiJ9LHtuYW1lOiJzZWFyY2hmaWVsZC1kZWNvcmF0aW9uIn0se25hbWU6InNlYXJjaGZpZWxkLXJlc3VsdHMtYnV0dG9uIn0se25hbWU6InNlYXJjaGZpZWxkLXJlc3VsdHMtZGVjb3JhdGlvbiJ9LHtuYW1lOiJzbGlkZXItaG9yaXpvbnRhbCJ9LHtuYW1lOiJzbGlkZXJ0aHVtYi1ob3Jpem9udGFsIn0se25hbWU6InNsaWRlcnRodW1iLXZlcnRpY2FsIn0se25hbWU6InNsaWRlci12ZXJ0aWNhbCJ9LHtuYW1lOiJzcXVhcmUtYnV0dG9uIn0se25hbWU6InRleHRhcmVhIn0se25hbWU6InRleHRmaWVsZCJ9XSxzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6Im5vbmUgfCBidXR0b24gfCBidXR0b24tYmV2ZWwgfCBjYXJldCB8IGNoZWNrYm94IHwgZGVmYXVsdC1idXR0b24gfCBpbm5lci1zcGluLWJ1dHRvbiB8IGxpc3Rib3ggfCBsaXN0aXRlbSB8IG1lZGlhLWNvbnRyb2xzLWJhY2tncm91bmQgfCBtZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLWJhY2tncm91bmQgfCBtZWRpYS1jdXJyZW50LXRpbWUtZGlzcGxheSB8IG1lZGlhLWVudGVyLWZ1bGxzY3JlZW4tYnV0dG9uIHwgbWVkaWEtZXhpdC1mdWxsc2NyZWVuLWJ1dHRvbiB8IG1lZGlhLWZ1bGxzY3JlZW4tYnV0dG9uIHwgbWVkaWEtbXV0ZS1idXR0b24gfCBtZWRpYS1vdmVybGF5LXBsYXktYnV0dG9uIHwgbWVkaWEtcGxheS1idXR0b24gfCBtZWRpYS1zZWVrLWJhY2stYnV0dG9uIHwgbWVkaWEtc2Vlay1mb3J3YXJkLWJ1dHRvbiB8IG1lZGlhLXNsaWRlciB8IG1lZGlhLXNsaWRlcnRodW1iIHwgbWVkaWEtdGltZS1yZW1haW5pbmctZGlzcGxheSB8IG1lZGlhLXRvZ2dsZS1jbG9zZWQtY2FwdGlvbnMtYnV0dG9uIHwgbWVkaWEtdm9sdW1lLXNsaWRlciB8IG1lZGlhLXZvbHVtZS1zbGlkZXItY29udGFpbmVyIHwgbWVkaWEtdm9sdW1lLXNsaWRlcnRodW1iIHwgbWVudWxpc3QgfCBtZW51bGlzdC1idXR0b24gfCBtZW51bGlzdC10ZXh0IHwgbWVudWxpc3QtdGV4dGZpZWxkIHwgbWV0ZXIgfCBwcm9ncmVzcy1iYXIgfCBwcm9ncmVzcy1iYXItdmFsdWUgfCBwdXNoLWJ1dHRvbiB8IHJhZGlvIHwgc2VhcmNoZmllbGQgfCBzZWFyY2hmaWVsZC1jYW5jZWwtYnV0dG9uIHwgc2VhcmNoZmllbGQtZGVjb3JhdGlvbiB8IHNlYXJjaGZpZWxkLXJlc3VsdHMtYnV0dG9uIHwgc2VhcmNoZmllbGQtcmVzdWx0cy1kZWNvcmF0aW9uIHwgc2xpZGVyLWhvcml6b250YWwgfCBzbGlkZXItdmVydGljYWwgfCBzbGlkZXJ0aHVtYi1ob3Jpem9udGFsIHwgc2xpZGVydGh1bWItdmVydGljYWwgfCBzcXVhcmUtYnV0dG9uIHwgdGV4dGFyZWEgfCB0ZXh0ZmllbGQgfCAtYXBwbGUtcGF5LWJ1dHRvbiIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246IkNoYW5nZXMgdGhlIGFwcGVhcmFuY2Ugb2YgYnV0dG9ucyBhbmQgb3RoZXIgY29udHJvbHMgdG8gcmVzZW1ibGUgbmF0aXZlIGNvbnRyb2xzLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLXdlYmtpdC1iYWNrZHJvcC1maWx0ZXIiLGJyb3dzZXJzOlsiUzkiXSx2YWx1ZXM6W3tuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiTm8gZmlsdGVyIGVmZmVjdHMgYXJlIGFwcGxpZWQuIn0se25hbWU6ImJsdXIoKSIsZGVzY3JpcHRpb246IkFwcGxpZXMgYSBHYXVzc2lhbiBibHVyIHRvIHRoZSBpbnB1dCBpbWFnZS4ifSx7bmFtZToiYnJpZ2h0bmVzcygpIixkZXNjcmlwdGlvbjoiQXBwbGllcyBhIGxpbmVhciBtdWx0aXBsaWVyIHRvIGlucHV0IGltYWdlLCBtYWtpbmcgaXQgYXBwZWFyIG1vcmUgb3IgbGVzcyBicmlnaHQuIn0se25hbWU6ImNvbnRyYXN0KCkiLGRlc2NyaXB0aW9uOiJBZGp1c3RzIHRoZSBjb250cmFzdCBvZiB0aGUgaW5wdXQuIn0se25hbWU6ImRyb3Atc2hhZG93KCkiLGRlc2NyaXB0aW9uOiJBcHBsaWVzIGEgZHJvcCBzaGFkb3cgZWZmZWN0IHRvIHRoZSBpbnB1dCBpbWFnZS4ifSx7bmFtZToiZ3JheXNjYWxlKCkiLGRlc2NyaXB0aW9uOiJDb252ZXJ0cyB0aGUgaW5wdXQgaW1hZ2UgdG8gZ3JheXNjYWxlLiJ9LHtuYW1lOiJodWUtcm90YXRlKCkiLGRlc2NyaXB0aW9uOiJBcHBsaWVzIGEgaHVlIHJvdGF0aW9uIG9uIHRoZSBpbnB1dCBpbWFnZS4gIn0se25hbWU6ImludmVydCgpIixkZXNjcmlwdGlvbjoiSW52ZXJ0cyB0aGUgc2FtcGxlcyBpbiB0aGUgaW5wdXQgaW1hZ2UuIn0se25hbWU6Im9wYWNpdHkoKSIsZGVzY3JpcHRpb246IkFwcGxpZXMgdHJhbnNwYXJlbmN5IHRvIHRoZSBzYW1wbGVzIGluIHRoZSBpbnB1dCBpbWFnZS4ifSx7bmFtZToic2F0dXJhdGUoKSIsZGVzY3JpcHRpb246IlNhdHVyYXRlcyB0aGUgaW5wdXQgaW1hZ2UuIn0se25hbWU6InNlcGlhKCkiLGRlc2NyaXB0aW9uOiJDb252ZXJ0cyB0aGUgaW5wdXQgaW1hZ2UgdG8gc2VwaWEuIn0se25hbWU6InVybCgpIixkZXNjcmlwdGlvbjoiQSBmaWx0ZXIgcmVmZXJlbmNlIHRvIGEgPGZpbHRlcj4gZWxlbWVudC4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJBcHBsaWVzIGEgZmlsdGVyIGVmZmVjdCB3aGVyZSB0aGUgZmlyc3QgZmlsdGVyIGluIHRoZSBsaXN0IHRha2VzIHRoZSBlbGVtZW50J3MgYmFja2dyb3VuZCBpbWFnZSBhcyB0aGUgaW5wdXQgaW1hZ2UuIixyZXN0cmljdGlvbnM6WyJlbnVtIiwidXJsIl19LHtuYW1lOiItd2Via2l0LWJhY2tmYWNlLXZpc2liaWxpdHkiLGJyb3dzZXJzOlsiQyIsIlM1Il0sdmFsdWVzOlt7bmFtZToiaGlkZGVuIn0se25hbWU6InZpc2libGUifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJEZXRlcm1pbmVzIHdoZXRoZXIgb3Igbm90IHRoZSAnYmFjaycgc2lkZSBvZiBhIHRyYW5zZm9ybWVkIGVsZW1lbnQgaXMgdmlzaWJsZSB3aGVuIGZhY2luZyB0aGUgdmlld2VyLiBXaXRoIGFuIGlkZW50aXR5IHRyYW5zZm9ybSwgdGhlIGZyb250IHNpZGUgb2YgYW4gZWxlbWVudCBmYWNlcyB0aGUgdmlld2VyLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLXdlYmtpdC1iYWNrZ3JvdW5kLWNsaXAiLGJyb3dzZXJzOlsiQyIsIlMzIl0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJEZXRlcm1pbmVzIHRoZSBiYWNrZ3JvdW5kIHBhaW50aW5nIGFyZWEuIixyZXN0cmljdGlvbnM6WyJib3giXX0se25hbWU6Ii13ZWJraXQtYmFja2dyb3VuZC1jb21wb3NpdGUiLGJyb3dzZXJzOlsiQyIsIlMzIl0sdmFsdWVzOlt7bmFtZToiYm9yZGVyIn0se25hbWU6InBhZGRpbmcifV0scmVsZXZhbmNlOjUwLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii13ZWJraXQtYmFja2dyb3VuZC1vcmlnaW4iLGJyb3dzZXJzOlsiQyIsIlMzIl0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJGb3IgZWxlbWVudHMgcmVuZGVyZWQgYXMgYSBzaW5nbGUgYm94LCBzcGVjaWZpZXMgdGhlIGJhY2tncm91bmQgcG9zaXRpb25pbmcgYXJlYS4gRm9yIGVsZW1lbnRzIHJlbmRlcmVkIGFzIG11bHRpcGxlIGJveGVzIChlLmcuLCBpbmxpbmUgYm94ZXMgb24gc2V2ZXJhbCBsaW5lcywgYm94ZXMgb24gc2V2ZXJhbCBwYWdlcykgc3BlY2lmaWVzIHdoaWNoIGJveGVzICdib3gtZGVjb3JhdGlvbi1icmVhaycgb3BlcmF0ZXMgb24gdG8gZGV0ZXJtaW5lIHRoZSBiYWNrZ3JvdW5kIHBvc2l0aW9uaW5nIGFyZWEocykuIixyZXN0cmljdGlvbnM6WyJib3giXX0se25hbWU6Ii13ZWJraXQtYm9yZGVyLWltYWdlIixicm93c2VyczpbIkMiLCJTNSJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJJZiAnYXV0bycgaXMgc3BlY2lmaWVkIHRoZW4gdGhlIGJvcmRlciBpbWFnZSB3aWR0aCBpcyB0aGUgaW50cmluc2ljIHdpZHRoIG9yIGhlaWdodCAod2hpY2hldmVyIGlzIGFwcGxpY2FibGUpIG9mIHRoZSBjb3JyZXNwb25kaW5nIGltYWdlIHNsaWNlLiBJZiB0aGUgaW1hZ2UgZG9lcyBub3QgaGF2ZSB0aGUgcmVxdWlyZWQgaW50cmluc2ljIGRpbWVuc2lvbiB0aGVuIHRoZSBjb3JyZXNwb25kaW5nIGJvcmRlci13aWR0aCBpcyB1c2VkIGluc3RlYWQuIn0se25hbWU6ImZpbGwiLGRlc2NyaXB0aW9uOiJDYXVzZXMgdGhlIG1pZGRsZSBwYXJ0IG9mIHRoZSBib3JkZXItaW1hZ2UgdG8gYmUgcHJlc2VydmVkLiJ9LHtuYW1lOiJub25lIn0se25hbWU6InJlcGVhdCIsZGVzY3JpcHRpb246IlRoZSBpbWFnZSBpcyB0aWxlZCAocmVwZWF0ZWQpIHRvIGZpbGwgdGhlIGFyZWEuIn0se25hbWU6InJvdW5kIixkZXNjcmlwdGlvbjoiVGhlIGltYWdlIGlzIHRpbGVkIChyZXBlYXRlZCkgdG8gZmlsbCB0aGUgYXJlYS4gSWYgaXQgZG9lcyBub3QgZmlsbCB0aGUgYXJlYSB3aXRoIGEgd2hvbGUgbnVtYmVyIG9mIHRpbGVzLCB0aGUgaW1hZ2UgaXMgcmVzY2FsZWQgc28gdGhhdCBpdCBkb2VzLiJ9LHtuYW1lOiJzcGFjZSIsZGVzY3JpcHRpb246IlRoZSBpbWFnZSBpcyB0aWxlZCAocmVwZWF0ZWQpIHRvIGZpbGwgdGhlIGFyZWEuIElmIGl0IGRvZXMgbm90IGZpbGwgdGhlIGFyZWEgd2l0aCBhIHdob2xlIG51bWJlciBvZiB0aWxlcywgdGhlIGV4dHJhIHNwYWNlIGlzIGRpc3RyaWJ1dGVkIGFyb3VuZCB0aGUgdGlsZXMuIn0se25hbWU6InN0cmV0Y2giLGRlc2NyaXB0aW9uOiJUaGUgaW1hZ2UgaXMgc3RyZXRjaGVkIHRvIGZpbGwgdGhlIGFyZWEuIn0se25hbWU6InVybCgpIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU2hvcnRoYW5kIHByb3BlcnR5IGZvciBzZXR0aW5nICdib3JkZXItaW1hZ2Utc291cmNlJywgJ2JvcmRlci1pbWFnZS1zbGljZScsICdib3JkZXItaW1hZ2Utd2lkdGgnLCAnYm9yZGVyLWltYWdlLW91dHNldCcgYW5kICdib3JkZXItaW1hZ2UtcmVwZWF0Jy4gT21pdHRlZCB2YWx1ZXMgYXJlIHNldCB0byB0aGVpciBpbml0aWFsIHZhbHVlcy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiLCJudW1iZXIiLCJ1cmwiLCJlbnVtIl19LHtuYW1lOiItd2Via2l0LWJveC1hbGlnbiIsYnJvd3NlcnM6WyJDIiwiUzMiXSx2YWx1ZXM6W3tuYW1lOiJiYXNlbGluZSIsZGVzY3JpcHRpb246IklmIHRoaXMgYm94IG9yaWVudGF0aW9uIGlzIGlubGluZS1heGlzIG9yIGhvcml6b250YWwsIGFsbCBjaGlsZHJlbiBhcmUgcGxhY2VkIHdpdGggdGhlaXIgYmFzZWxpbmVzIGFsaWduZWQsIGFuZCBleHRyYSBzcGFjZSBwbGFjZWQgYmVmb3JlIG9yIGFmdGVyIGFzIG5lY2Vzc2FyeS4gRm9yIGJsb2NrIGZsb3dzLCB0aGUgYmFzZWxpbmUgb2YgdGhlIGZpcnN0IG5vbi1lbXB0eSBsaW5lIGJveCBsb2NhdGVkIHdpdGhpbiB0aGUgZWxlbWVudCBpcyB1c2VkLiBGb3IgdGFibGVzLCB0aGUgYmFzZWxpbmUgb2YgdGhlIGZpcnN0IGNlbGwgaXMgdXNlZC4ifSx7bmFtZToiY2VudGVyIixkZXNjcmlwdGlvbjoiQW55IGV4dHJhIHNwYWNlIGlzIGRpdmlkZWQgZXZlbmx5LCB3aXRoIGhhbGYgcGxhY2VkIGFib3ZlIHRoZSBjaGlsZCBhbmQgdGhlIG90aGVyIGhhbGYgcGxhY2VkIGFmdGVyIHRoZSBjaGlsZC4ifSx7bmFtZToiZW5kIixkZXNjcmlwdGlvbjoiRm9yIG5vcm1hbCBkaXJlY3Rpb24gYm94ZXMsIHRoZSBib3R0b20gZWRnZSBvZiBlYWNoIGNoaWxkIGlzIHBsYWNlZCBhbG9uZyB0aGUgYm90dG9tIG9mIHRoZSBib3guIEV4dHJhIHNwYWNlIGlzIHBsYWNlZCBhYm92ZSB0aGUgZWxlbWVudC4gRm9yIHJldmVyc2UgZGlyZWN0aW9uIGJveGVzLCB0aGUgdG9wIGVkZ2Ugb2YgZWFjaCBjaGlsZCBpcyBwbGFjZWQgYWxvbmcgdGhlIHRvcCBvZiB0aGUgYm94LiBFeHRyYSBzcGFjZSBpcyBwbGFjZWQgYmVsb3cgdGhlIGVsZW1lbnQuIn0se25hbWU6InN0YXJ0IixkZXNjcmlwdGlvbjoiRm9yIG5vcm1hbCBkaXJlY3Rpb24gYm94ZXMsIHRoZSB0b3AgZWRnZSBvZiBlYWNoIGNoaWxkIGlzIHBsYWNlZCBhbG9uZyB0aGUgdG9wIG9mIHRoZSBib3guIEV4dHJhIHNwYWNlIGlzIHBsYWNlZCBiZWxvdyB0aGUgZWxlbWVudC4gRm9yIHJldmVyc2UgZGlyZWN0aW9uIGJveGVzLCB0aGUgYm90dG9tIGVkZ2Ugb2YgZWFjaCBjaGlsZCBpcyBwbGFjZWQgYWxvbmcgdGhlIGJvdHRvbSBvZiB0aGUgYm94LiBFeHRyYSBzcGFjZSBpcyBwbGFjZWQgYWJvdmUgdGhlIGVsZW1lbnQuIn0se25hbWU6InN0cmV0Y2giLGRlc2NyaXB0aW9uOiJUaGUgaGVpZ2h0IG9mIGVhY2ggY2hpbGQgaXMgYWRqdXN0ZWQgdG8gdGhhdCBvZiB0aGUgY29udGFpbmluZyBibG9jay4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhlIGFsaWdubWVudCBvZiBuZXN0ZWQgZWxlbWVudHMgd2l0aGluIGFuIG91dGVyIGZsZXhpYmxlIGJveCBlbGVtZW50LiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLXdlYmtpdC1ib3gtZGlyZWN0aW9uIixicm93c2VyczpbIkMiLCJTMyJdLHZhbHVlczpbe25hbWU6Im5vcm1hbCIsZGVzY3JpcHRpb246IkEgYm94IHdpdGggYSBjb21wdXRlZCB2YWx1ZSBvZiBob3Jpem9udGFsIGZvciBib3gtb3JpZW50IGRpc3BsYXlzIGl0cyBjaGlsZHJlbiBmcm9tIGxlZnQgdG8gcmlnaHQuIEEgYm94IHdpdGggYSBjb21wdXRlZCB2YWx1ZSBvZiB2ZXJ0aWNhbCBkaXNwbGF5cyBpdHMgY2hpbGRyZW4gZnJvbSB0b3AgdG8gYm90dG9tLiJ9LHtuYW1lOiJyZXZlcnNlIixkZXNjcmlwdGlvbjoiQSBib3ggd2l0aCBhIGNvbXB1dGVkIHZhbHVlIG9mIGhvcml6b250YWwgZm9yIGJveC1vcmllbnQgZGlzcGxheXMgaXRzIGNoaWxkcmVuIGZyb20gcmlnaHQgdG8gbGVmdC4gQSBib3ggd2l0aCBhIGNvbXB1dGVkIHZhbHVlIG9mIHZlcnRpY2FsIGRpc3BsYXlzIGl0cyBjaGlsZHJlbiBmcm9tIGJvdHRvbSB0byB0b3AuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiSW4gd2Via2l0IGFwcGxpY2F0aW9ucywgLXdlYmtpdC1ib3gtZGlyZWN0aW9uIHNwZWNpZmllcyB3aGV0aGVyIGEgYm94IGxheXMgb3V0IGl0cyBjb250ZW50cyBub3JtYWxseSAoZnJvbSB0aGUgdG9wIG9yIGxlZnQgZWRnZSksIG9yIGluIHJldmVyc2UgKGZyb20gdGhlIGJvdHRvbSBvciByaWdodCBlZGdlKS4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii13ZWJraXQtYm94LWZsZXgiLGJyb3dzZXJzOlsiQyIsIlMzIl0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYW4gZWxlbWVudCdzIGZsZXhpYmlsaXR5LiIscmVzdHJpY3Rpb25zOlsibnVtYmVyIl19LHtuYW1lOiItd2Via2l0LWJveC1mbGV4LWdyb3VwIixicm93c2VyczpbIkMiLCJTMyJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRmxleGlibGUgZWxlbWVudHMgY2FuIGJlIGFzc2lnbmVkIHRvIGZsZXggZ3JvdXBzIHVzaW5nIHRoZSAnYm94LWZsZXgtZ3JvdXAnIHByb3BlcnR5LiIscmVzdHJpY3Rpb25zOlsiaW50ZWdlciJdfSx7bmFtZToiLXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cCIsYnJvd3NlcnM6WyJDIiwiUzMiXSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGUgb3JkaW5hbCBncm91cCB0aGUgZWxlbWVudCBiZWxvbmdzIHRvLiBFbGVtZW50cyB3aXRoIGEgbG93ZXIgb3JkaW5hbCBncm91cCBhcmUgZGlzcGxheWVkIGJlZm9yZSB0aG9zZSB3aXRoIGEgaGlnaGVyIG9yZGluYWwgZ3JvdXAuIixyZXN0cmljdGlvbnM6WyJpbnRlZ2VyIl19LHtuYW1lOiItd2Via2l0LWJveC1vcmllbnQiLGJyb3dzZXJzOlsiQyIsIlMzIl0sdmFsdWVzOlt7bmFtZToiYmxvY2stYXhpcyIsZGVzY3JpcHRpb246IkVsZW1lbnRzIGFyZSBvcmllbnRlZCBhbG9uZyB0aGUgYm94J3MgYXhpcy4ifSx7bmFtZToiaG9yaXpvbnRhbCIsZGVzY3JpcHRpb246IlRoZSBib3ggZGlzcGxheXMgaXRzIGNoaWxkcmVuIGZyb20gbGVmdCB0byByaWdodCBpbiBhIGhvcml6b250YWwgbGluZS4ifSx7bmFtZToiaW5saW5lLWF4aXMiLGRlc2NyaXB0aW9uOiJFbGVtZW50cyBhcmUgb3JpZW50ZWQgdmVydGljYWxseS4ifSx7bmFtZToidmVydGljYWwiLGRlc2NyaXB0aW9uOiJUaGUgYm94IGRpc3BsYXlzIGl0cyBjaGlsZHJlbiBmcm9tIHN0YWNrZWQgZnJvbSB0b3AgdG8gYm90dG9tIHZlcnRpY2FsbHkuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiSW4gd2Via2l0IGFwcGxpY2F0aW9ucywgLXdlYmtpdC1ib3gtb3JpZW50IHNwZWNpZmllcyB3aGV0aGVyIGEgYm94IGxheXMgb3V0IGl0cyBjb250ZW50cyBob3Jpem9udGFsbHkgb3IgdmVydGljYWxseS4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii13ZWJraXQtYm94LXBhY2siLGJyb3dzZXJzOlsiQyIsIlMzIl0sdmFsdWVzOlt7bmFtZToiY2VudGVyIixkZXNjcmlwdGlvbjoiVGhlIGV4dHJhIHNwYWNlIGlzIGRpdmlkZWQgZXZlbmx5LCB3aXRoIGhhbGYgcGxhY2VkIGJlZm9yZSB0aGUgZmlyc3QgY2hpbGQgYW5kIHRoZSBvdGhlciBoYWxmIHBsYWNlZCBhZnRlciB0aGUgbGFzdCBjaGlsZC4ifSx7bmFtZToiZW5kIixkZXNjcmlwdGlvbjoiRm9yIG5vcm1hbCBkaXJlY3Rpb24gYm94ZXMsIHRoZSByaWdodCBlZGdlIG9mIHRoZSBsYXN0IGNoaWxkIGlzIHBsYWNlZCBhdCB0aGUgcmlnaHQgc2lkZSwgd2l0aCBhbGwgZXh0cmEgc3BhY2UgcGxhY2VkIGJlZm9yZSB0aGUgZmlyc3QgY2hpbGQuIEZvciByZXZlcnNlIGRpcmVjdGlvbiBib3hlcywgdGhlIGxlZnQgZWRnZSBvZiB0aGUgZmlyc3QgY2hpbGQgaXMgcGxhY2VkIGF0IHRoZSBsZWZ0IHNpZGUsIHdpdGggYWxsIGV4dHJhIHNwYWNlIHBsYWNlZCBhZnRlciB0aGUgbGFzdCBjaGlsZC4ifSx7bmFtZToianVzdGlmeSIsZGVzY3JpcHRpb246IlRoZSBzcGFjZSBpcyBkaXZpZGVkIGV2ZW5seSBpbi1iZXR3ZWVuIGVhY2ggY2hpbGQsIHdpdGggbm9uZSBvZiB0aGUgZXh0cmEgc3BhY2UgcGxhY2VkIGJlZm9yZSB0aGUgZmlyc3QgY2hpbGQgb3IgYWZ0ZXIgdGhlIGxhc3QgY2hpbGQuIElmIHRoZXJlIGlzIG9ubHkgb25lIGNoaWxkLCB0cmVhdCB0aGUgcGFjayB2YWx1ZSBhcyBpZiBpdCB3ZXJlIHN0YXJ0LiJ9LHtuYW1lOiJzdGFydCIsZGVzY3JpcHRpb246IkZvciBub3JtYWwgZGlyZWN0aW9uIGJveGVzLCB0aGUgbGVmdCBlZGdlIG9mIHRoZSBmaXJzdCBjaGlsZCBpcyBwbGFjZWQgYXQgdGhlIGxlZnQgc2lkZSwgd2l0aCBhbGwgZXh0cmEgc3BhY2UgcGxhY2VkIGFmdGVyIHRoZSBsYXN0IGNoaWxkLiBGb3IgcmV2ZXJzZSBkaXJlY3Rpb24gYm94ZXMsIHRoZSByaWdodCBlZGdlIG9mIHRoZSBsYXN0IGNoaWxkIGlzIHBsYWNlZCBhdCB0aGUgcmlnaHQgc2lkZSwgd2l0aCBhbGwgZXh0cmEgc3BhY2UgcGxhY2VkIGJlZm9yZSB0aGUgZmlyc3QgY2hpbGQuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGFsaWdubWVudCBvZiBjaGlsZCBlbGVtZW50cyB3aXRoaW4gdGhlIGN1cnJlbnQgZWxlbWVudCBpbiB0aGUgZGlyZWN0aW9uIG9mIG9yaWVudGF0aW9uLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLXdlYmtpdC1ib3gtcmVmbGVjdCIsYnJvd3NlcnM6WyJFNzkiLCJTNCIsIkM0IiwiTzE1Il0sdmFsdWVzOlt7bmFtZToiYWJvdmUiLGRlc2NyaXB0aW9uOiJUaGUgcmVmbGVjdGlvbiBhcHBlYXJzIGFib3ZlIHRoZSBib3JkZXIgYm94LiJ9LHtuYW1lOiJiZWxvdyIsZGVzY3JpcHRpb246IlRoZSByZWZsZWN0aW9uIGFwcGVhcnMgYmVsb3cgdGhlIGJvcmRlciBib3guIn0se25hbWU6ImxlZnQiLGRlc2NyaXB0aW9uOiJUaGUgcmVmbGVjdGlvbiBhcHBlYXJzIHRvIHRoZSBsZWZ0IG9mIHRoZSBib3JkZXIgYm94LiJ9LHtuYW1lOiJyaWdodCIsZGVzY3JpcHRpb246IlRoZSByZWZsZWN0aW9uIGFwcGVhcnMgdG8gdGhlIHJpZ2h0IG9mIHRoZSBib3JkZXIgYm94LiJ9XSxzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6IlsgYWJvdmUgfCBiZWxvdyB8IHJpZ2h0IHwgbGVmdCBdPyA8bGVuZ3RoPj8gPGltYWdlPj8iLHJlbGV2YW5jZTowLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy8td2Via2l0LWJveC1yZWZsZWN0In1dLGRlc2NyaXB0aW9uOiJEZWZpbmVzIGEgcmVmbGVjdGlvbiBvZiBhIGJvcmRlciBib3guIn0se25hbWU6Ii13ZWJraXQtYm94LXNpemluZyIsYnJvd3NlcnM6WyJDIiwiUzMiXSx2YWx1ZXM6W3tuYW1lOiJib3JkZXItYm94IixkZXNjcmlwdGlvbjoiVGhlIHNwZWNpZmllZCB3aWR0aCBhbmQgaGVpZ2h0IChhbmQgcmVzcGVjdGl2ZSBtaW4vbWF4IHByb3BlcnRpZXMpIG9uIHRoaXMgZWxlbWVudCBkZXRlcm1pbmUgdGhlIGJvcmRlciBib3ggb2YgdGhlIGVsZW1lbnQuIn0se25hbWU6ImNvbnRlbnQtYm94IixkZXNjcmlwdGlvbjoiQmVoYXZpb3Igb2Ygd2lkdGggYW5kIGhlaWdodCBhcyBzcGVjaWZpZWQgYnkgQ1NTMi4xLiBUaGUgc3BlY2lmaWVkIHdpZHRoIGFuZCBoZWlnaHQgKGFuZCByZXNwZWN0aXZlIG1pbi9tYXggcHJvcGVydGllcykgYXBwbHkgdG8gdGhlIHdpZHRoIGFuZCBoZWlnaHQgcmVzcGVjdGl2ZWx5IG9mIHRoZSBjb250ZW50IGJveCBvZiB0aGUgZWxlbWVudC4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJCb3ggTW9kZWwgYWRkaXRpb24gaW4gQ1NTMy4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii13ZWJraXQtYnJlYWstYWZ0ZXIiLGJyb3dzZXJzOlsiUzciXSx2YWx1ZXM6W3tuYW1lOiJhbHdheXMiLGRlc2NyaXB0aW9uOiJBbHdheXMgZm9yY2UgYSBwYWdlIGJyZWFrIGJlZm9yZS9hZnRlciB0aGUgZ2VuZXJhdGVkIGJveC4ifSx7bmFtZToiYXV0byIsZGVzY3JpcHRpb246Ik5laXRoZXIgZm9yY2Ugbm9yIGZvcmJpZCBhIHBhZ2UvY29sdW1uIGJyZWFrIGJlZm9yZS9hZnRlciB0aGUgZ2VuZXJhdGVkIGJveC4ifSx7bmFtZToiYXZvaWQiLGRlc2NyaXB0aW9uOiJBdm9pZCBhIHBhZ2UvY29sdW1uIGJyZWFrIGJlZm9yZS9hZnRlciB0aGUgZ2VuZXJhdGVkIGJveC4ifSx7bmFtZToiYXZvaWQtY29sdW1uIixkZXNjcmlwdGlvbjoiQXZvaWQgYSBjb2x1bW4gYnJlYWsgYmVmb3JlL2FmdGVyIHRoZSBnZW5lcmF0ZWQgYm94LiJ9LHtuYW1lOiJhdm9pZC1wYWdlIixkZXNjcmlwdGlvbjoiQXZvaWQgYSBwYWdlIGJyZWFrIGJlZm9yZS9hZnRlciB0aGUgZ2VuZXJhdGVkIGJveC4ifSx7bmFtZToiYXZvaWQtcmVnaW9uIn0se25hbWU6ImNvbHVtbiIsZGVzY3JpcHRpb246IkFsd2F5cyBmb3JjZSBhIGNvbHVtbiBicmVhayBiZWZvcmUvYWZ0ZXIgdGhlIGdlbmVyYXRlZCBib3guIn0se25hbWU6ImxlZnQiLGRlc2NyaXB0aW9uOiJGb3JjZSBvbmUgb3IgdHdvIHBhZ2UgYnJlYWtzIGJlZm9yZS9hZnRlciB0aGUgZ2VuZXJhdGVkIGJveCBzbyB0aGF0IHRoZSBuZXh0IHBhZ2UgaXMgZm9ybWF0dGVkIGFzIGEgbGVmdCBwYWdlLiJ9LHtuYW1lOiJwYWdlIixkZXNjcmlwdGlvbjoiQWx3YXlzIGZvcmNlIGEgcGFnZSBicmVhayBiZWZvcmUvYWZ0ZXIgdGhlIGdlbmVyYXRlZCBib3guIn0se25hbWU6InJlZ2lvbiJ9LHtuYW1lOiJyaWdodCIsZGVzY3JpcHRpb246IkZvcmNlIG9uZSBvciB0d28gcGFnZSBicmVha3MgYmVmb3JlL2FmdGVyIHRoZSBnZW5lcmF0ZWQgYm94IHNvIHRoYXQgdGhlIG5leHQgcGFnZSBpcyBmb3JtYXR0ZWQgYXMgYSByaWdodCBwYWdlLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkRlc2NyaWJlcyB0aGUgcGFnZS9jb2x1bW4gYnJlYWsgYmVoYXZpb3IgYmVmb3JlIHRoZSBnZW5lcmF0ZWQgYm94LiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLXdlYmtpdC1icmVhay1iZWZvcmUiLGJyb3dzZXJzOlsiUzciXSx2YWx1ZXM6W3tuYW1lOiJhbHdheXMiLGRlc2NyaXB0aW9uOiJBbHdheXMgZm9yY2UgYSBwYWdlIGJyZWFrIGJlZm9yZS9hZnRlciB0aGUgZ2VuZXJhdGVkIGJveC4ifSx7bmFtZToiYXV0byIsZGVzY3JpcHRpb246Ik5laXRoZXIgZm9yY2Ugbm9yIGZvcmJpZCBhIHBhZ2UvY29sdW1uIGJyZWFrIGJlZm9yZS9hZnRlciB0aGUgZ2VuZXJhdGVkIGJveC4ifSx7bmFtZToiYXZvaWQiLGRlc2NyaXB0aW9uOiJBdm9pZCBhIHBhZ2UvY29sdW1uIGJyZWFrIGJlZm9yZS9hZnRlciB0aGUgZ2VuZXJhdGVkIGJveC4ifSx7bmFtZToiYXZvaWQtY29sdW1uIixkZXNjcmlwdGlvbjoiQXZvaWQgYSBjb2x1bW4gYnJlYWsgYmVmb3JlL2FmdGVyIHRoZSBnZW5lcmF0ZWQgYm94LiJ9LHtuYW1lOiJhdm9pZC1wYWdlIixkZXNjcmlwdGlvbjoiQXZvaWQgYSBwYWdlIGJyZWFrIGJlZm9yZS9hZnRlciB0aGUgZ2VuZXJhdGVkIGJveC4ifSx7bmFtZToiYXZvaWQtcmVnaW9uIn0se25hbWU6ImNvbHVtbiIsZGVzY3JpcHRpb246IkFsd2F5cyBmb3JjZSBhIGNvbHVtbiBicmVhayBiZWZvcmUvYWZ0ZXIgdGhlIGdlbmVyYXRlZCBib3guIn0se25hbWU6ImxlZnQiLGRlc2NyaXB0aW9uOiJGb3JjZSBvbmUgb3IgdHdvIHBhZ2UgYnJlYWtzIGJlZm9yZS9hZnRlciB0aGUgZ2VuZXJhdGVkIGJveCBzbyB0aGF0IHRoZSBuZXh0IHBhZ2UgaXMgZm9ybWF0dGVkIGFzIGEgbGVmdCBwYWdlLiJ9LHtuYW1lOiJwYWdlIixkZXNjcmlwdGlvbjoiQWx3YXlzIGZvcmNlIGEgcGFnZSBicmVhayBiZWZvcmUvYWZ0ZXIgdGhlIGdlbmVyYXRlZCBib3guIn0se25hbWU6InJlZ2lvbiJ9LHtuYW1lOiJyaWdodCIsZGVzY3JpcHRpb246IkZvcmNlIG9uZSBvciB0d28gcGFnZSBicmVha3MgYmVmb3JlL2FmdGVyIHRoZSBnZW5lcmF0ZWQgYm94IHNvIHRoYXQgdGhlIG5leHQgcGFnZSBpcyBmb3JtYXR0ZWQgYXMgYSByaWdodCBwYWdlLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkRlc2NyaWJlcyB0aGUgcGFnZS9jb2x1bW4gYnJlYWsgYmVoYXZpb3IgYmVmb3JlIHRoZSBnZW5lcmF0ZWQgYm94LiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLXdlYmtpdC1icmVhay1pbnNpZGUiLGJyb3dzZXJzOlsiUzciXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiTmVpdGhlciBmb3JjZSBub3IgZm9yYmlkIGEgcGFnZS9jb2x1bW4gYnJlYWsgaW5zaWRlIHRoZSBnZW5lcmF0ZWQgYm94LiJ9LHtuYW1lOiJhdm9pZCIsZGVzY3JpcHRpb246IkF2b2lkIGEgcGFnZS9jb2x1bW4gYnJlYWsgaW5zaWRlIHRoZSBnZW5lcmF0ZWQgYm94LiJ9LHtuYW1lOiJhdm9pZC1jb2x1bW4iLGRlc2NyaXB0aW9uOiJBdm9pZCBhIGNvbHVtbiBicmVhayBpbnNpZGUgdGhlIGdlbmVyYXRlZCBib3guIn0se25hbWU6ImF2b2lkLXBhZ2UiLGRlc2NyaXB0aW9uOiJBdm9pZCBhIHBhZ2UgYnJlYWsgaW5zaWRlIHRoZSBnZW5lcmF0ZWQgYm94LiJ9LHtuYW1lOiJhdm9pZC1yZWdpb24ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJEZXNjcmliZXMgdGhlIHBhZ2UvY29sdW1uIGJyZWFrIGJlaGF2aW9yIGluc2lkZSB0aGUgZ2VuZXJhdGVkIGJveC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii13ZWJraXQtY29sdW1uLWJyZWFrLWFmdGVyIixicm93c2VyczpbIkU4MCIsIlMxMy4xIiwiQzgwIiwiTzY3Il0sdmFsdWVzOlt7bmFtZToiYWx3YXlzIixkZXNjcmlwdGlvbjoiQWx3YXlzIGZvcmNlIGEgcGFnZSBicmVhayBiZWZvcmUvYWZ0ZXIgdGhlIGdlbmVyYXRlZCBib3guIn0se25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJOZWl0aGVyIGZvcmNlIG5vciBmb3JiaWQgYSBwYWdlL2NvbHVtbiBicmVhayBiZWZvcmUvYWZ0ZXIgdGhlIGdlbmVyYXRlZCBib3guIn0se25hbWU6ImF2b2lkIixkZXNjcmlwdGlvbjoiQXZvaWQgYSBwYWdlL2NvbHVtbiBicmVhayBiZWZvcmUvYWZ0ZXIgdGhlIGdlbmVyYXRlZCBib3guIn0se25hbWU6ImF2b2lkLWNvbHVtbiIsZGVzY3JpcHRpb246IkF2b2lkIGEgY29sdW1uIGJyZWFrIGJlZm9yZS9hZnRlciB0aGUgZ2VuZXJhdGVkIGJveC4ifSx7bmFtZToiYXZvaWQtcGFnZSIsZGVzY3JpcHRpb246IkF2b2lkIGEgcGFnZSBicmVhayBiZWZvcmUvYWZ0ZXIgdGhlIGdlbmVyYXRlZCBib3guIn0se25hbWU6ImF2b2lkLXJlZ2lvbiJ9LHtuYW1lOiJjb2x1bW4iLGRlc2NyaXB0aW9uOiJBbHdheXMgZm9yY2UgYSBjb2x1bW4gYnJlYWsgYmVmb3JlL2FmdGVyIHRoZSBnZW5lcmF0ZWQgYm94LiJ9LHtuYW1lOiJsZWZ0IixkZXNjcmlwdGlvbjoiRm9yY2Ugb25lIG9yIHR3byBwYWdlIGJyZWFrcyBiZWZvcmUvYWZ0ZXIgdGhlIGdlbmVyYXRlZCBib3ggc28gdGhhdCB0aGUgbmV4dCBwYWdlIGlzIGZvcm1hdHRlZCBhcyBhIGxlZnQgcGFnZS4ifSx7bmFtZToicGFnZSIsZGVzY3JpcHRpb246IkFsd2F5cyBmb3JjZSBhIHBhZ2UgYnJlYWsgYmVmb3JlL2FmdGVyIHRoZSBnZW5lcmF0ZWQgYm94LiJ9LHtuYW1lOiJyZWdpb24ifSx7bmFtZToicmlnaHQiLGRlc2NyaXB0aW9uOiJGb3JjZSBvbmUgb3IgdHdvIHBhZ2UgYnJlYWtzIGJlZm9yZS9hZnRlciB0aGUgZ2VuZXJhdGVkIGJveCBzbyB0aGF0IHRoZSBuZXh0IHBhZ2UgaXMgZm9ybWF0dGVkIGFzIGEgcmlnaHQgcGFnZS4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJEZXNjcmliZXMgdGhlIHBhZ2UvY29sdW1uIGJyZWFrIGJlaGF2aW9yIGJlZm9yZSB0aGUgZ2VuZXJhdGVkIGJveC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii13ZWJraXQtY29sdW1uLWJyZWFrLWJlZm9yZSIsYnJvd3NlcnM6WyJFODAiLCJTMTMuMSIsIkM4MCIsIk82NyJdLHZhbHVlczpbe25hbWU6ImFsd2F5cyIsZGVzY3JpcHRpb246IkFsd2F5cyBmb3JjZSBhIHBhZ2UgYnJlYWsgYmVmb3JlL2FmdGVyIHRoZSBnZW5lcmF0ZWQgYm94LiJ9LHtuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiTmVpdGhlciBmb3JjZSBub3IgZm9yYmlkIGEgcGFnZS9jb2x1bW4gYnJlYWsgYmVmb3JlL2FmdGVyIHRoZSBnZW5lcmF0ZWQgYm94LiJ9LHtuYW1lOiJhdm9pZCIsZGVzY3JpcHRpb246IkF2b2lkIGEgcGFnZS9jb2x1bW4gYnJlYWsgYmVmb3JlL2FmdGVyIHRoZSBnZW5lcmF0ZWQgYm94LiJ9LHtuYW1lOiJhdm9pZC1jb2x1bW4iLGRlc2NyaXB0aW9uOiJBdm9pZCBhIGNvbHVtbiBicmVhayBiZWZvcmUvYWZ0ZXIgdGhlIGdlbmVyYXRlZCBib3guIn0se25hbWU6ImF2b2lkLXBhZ2UiLGRlc2NyaXB0aW9uOiJBdm9pZCBhIHBhZ2UgYnJlYWsgYmVmb3JlL2FmdGVyIHRoZSBnZW5lcmF0ZWQgYm94LiJ9LHtuYW1lOiJhdm9pZC1yZWdpb24ifSx7bmFtZToiY29sdW1uIixkZXNjcmlwdGlvbjoiQWx3YXlzIGZvcmNlIGEgY29sdW1uIGJyZWFrIGJlZm9yZS9hZnRlciB0aGUgZ2VuZXJhdGVkIGJveC4ifSx7bmFtZToibGVmdCIsZGVzY3JpcHRpb246IkZvcmNlIG9uZSBvciB0d28gcGFnZSBicmVha3MgYmVmb3JlL2FmdGVyIHRoZSBnZW5lcmF0ZWQgYm94IHNvIHRoYXQgdGhlIG5leHQgcGFnZSBpcyBmb3JtYXR0ZWQgYXMgYSBsZWZ0IHBhZ2UuIn0se25hbWU6InBhZ2UiLGRlc2NyaXB0aW9uOiJBbHdheXMgZm9yY2UgYSBwYWdlIGJyZWFrIGJlZm9yZS9hZnRlciB0aGUgZ2VuZXJhdGVkIGJveC4ifSx7bmFtZToicmVnaW9uIn0se25hbWU6InJpZ2h0IixkZXNjcmlwdGlvbjoiRm9yY2Ugb25lIG9yIHR3byBwYWdlIGJyZWFrcyBiZWZvcmUvYWZ0ZXIgdGhlIGdlbmVyYXRlZCBib3ggc28gdGhhdCB0aGUgbmV4dCBwYWdlIGlzIGZvcm1hdHRlZCBhcyBhIHJpZ2h0IHBhZ2UuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRGVzY3JpYmVzIHRoZSBwYWdlL2NvbHVtbiBicmVhayBiZWhhdmlvciBiZWZvcmUgdGhlIGdlbmVyYXRlZCBib3guIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItd2Via2l0LWNvbHVtbi1icmVhay1pbnNpZGUiLGJyb3dzZXJzOlsiRTgwIiwiUzEzLjEiLCJDODAiLCJPNjciXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiTmVpdGhlciBmb3JjZSBub3IgZm9yYmlkIGEgcGFnZS9jb2x1bW4gYnJlYWsgaW5zaWRlIHRoZSBnZW5lcmF0ZWQgYm94LiJ9LHtuYW1lOiJhdm9pZCIsZGVzY3JpcHRpb246IkF2b2lkIGEgcGFnZS9jb2x1bW4gYnJlYWsgaW5zaWRlIHRoZSBnZW5lcmF0ZWQgYm94LiJ9LHtuYW1lOiJhdm9pZC1jb2x1bW4iLGRlc2NyaXB0aW9uOiJBdm9pZCBhIGNvbHVtbiBicmVhayBpbnNpZGUgdGhlIGdlbmVyYXRlZCBib3guIn0se25hbWU6ImF2b2lkLXBhZ2UiLGRlc2NyaXB0aW9uOiJBdm9pZCBhIHBhZ2UgYnJlYWsgaW5zaWRlIHRoZSBnZW5lcmF0ZWQgYm94LiJ9LHtuYW1lOiJhdm9pZC1yZWdpb24ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJEZXNjcmliZXMgdGhlIHBhZ2UvY29sdW1uIGJyZWFrIGJlaGF2aW9yIGluc2lkZSB0aGUgZ2VuZXJhdGVkIGJveC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii13ZWJraXQtY29sdW1uLWNvdW50Iixicm93c2VyczpbIkMiLCJTMyJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJEZXRlcm1pbmVzIHRoZSBudW1iZXIgb2YgY29sdW1ucyBieSB0aGUgJ2NvbHVtbi13aWR0aCcgcHJvcGVydHkgYW5kIHRoZSBlbGVtZW50IHdpZHRoLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkRlc2NyaWJlcyB0aGUgb3B0aW1hbCBudW1iZXIgb2YgY29sdW1ucyBpbnRvIHdoaWNoIHRoZSBjb250ZW50IG9mIHRoZSBlbGVtZW50IHdpbGwgYmUgZmxvd2VkLiIscmVzdHJpY3Rpb25zOlsiaW50ZWdlciJdfSx7bmFtZToiLXdlYmtpdC1jb2x1bW4tZ2FwIixicm93c2VyczpbIkMiLCJTMyJdLHZhbHVlczpbe25hbWU6Im5vcm1hbCIsZGVzY3JpcHRpb246IlVzZXIgYWdlbnQgc3BlY2lmaWMgYW5kIHR5cGljYWxseSBlcXVpdmFsZW50IHRvIDFlbS4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJTZXRzIHRoZSBnYXAgYmV0d2VlbiBjb2x1bW5zLiBJZiB0aGVyZSBpcyBhIGNvbHVtbiBydWxlIGJldHdlZW4gY29sdW1ucywgaXQgd2lsbCBhcHBlYXIgaW4gdGhlIG1pZGRsZSBvZiB0aGUgZ2FwLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIl19LHtuYW1lOiItd2Via2l0LWNvbHVtbi1ydWxlIixicm93c2VyczpbIkMiLCJTMyJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiVGhpcyBwcm9wZXJ0eSBpcyBhIHNob3J0aGFuZCBmb3Igc2V0dGluZyAnY29sdW1uLXJ1bGUtd2lkdGgnLCAnY29sdW1uLXJ1bGUtc3R5bGUnLCBhbmQgJ2NvbHVtbi1ydWxlLWNvbG9yJyBhdCB0aGUgc2FtZSBwbGFjZSBpbiB0aGUgc3R5bGUgc2hlZXQuIE9taXR0ZWQgdmFsdWVzIGFyZSBzZXQgdG8gdGhlaXIgaW5pdGlhbCB2YWx1ZXMuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJsaW5lLXdpZHRoIiwibGluZS1zdHlsZSIsImNvbG9yIl19LHtuYW1lOiItd2Via2l0LWNvbHVtbi1ydWxlLWNvbG9yIixicm93c2VyczpbIkMiLCJTMyJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU2V0cyB0aGUgY29sb3Igb2YgdGhlIGNvbHVtbiBydWxlIixyZXN0cmljdGlvbnM6WyJjb2xvciJdfSx7bmFtZToiLXdlYmtpdC1jb2x1bW4tcnVsZS1zdHlsZSIsYnJvd3NlcnM6WyJDIiwiUzMiXSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlNldHMgdGhlIHN0eWxlIG9mIHRoZSBydWxlIGJldHdlZW4gY29sdW1ucyBvZiBhbiBlbGVtZW50LiIscmVzdHJpY3Rpb25zOlsibGluZS1zdHlsZSJdfSx7bmFtZToiLXdlYmtpdC1jb2x1bW4tcnVsZS13aWR0aCIsYnJvd3NlcnM6WyJDIiwiUzMiXSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlNldHMgdGhlIHdpZHRoIG9mIHRoZSBydWxlIGJldHdlZW4gY29sdW1ucy4gTmVnYXRpdmUgdmFsdWVzIGFyZSBub3QgYWxsb3dlZC4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsImxpbmUtd2lkdGgiXX0se25hbWU6Ii13ZWJraXQtY29sdW1ucyIsYnJvd3NlcnM6WyJDIiwiUzMiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiVGhlIHdpZHRoIGRlcGVuZHMgb24gdGhlIHZhbHVlcyBvZiBvdGhlciBwcm9wZXJ0aWVzLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkEgc2hvcnRoYW5kIHByb3BlcnR5IHdoaWNoIHNldHMgYm90aCAnY29sdW1uLXdpZHRoJyBhbmQgJ2NvbHVtbi1jb3VudCcuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJpbnRlZ2VyIl19LHtuYW1lOiItd2Via2l0LWNvbHVtbi1zcGFuIixicm93c2VyczpbIkMiLCJTMyJdLHZhbHVlczpbe25hbWU6ImFsbCIsZGVzY3JpcHRpb246IlRoZSBlbGVtZW50IHNwYW5zIGFjcm9zcyBhbGwgY29sdW1ucy4gQ29udGVudCBpbiB0aGUgbm9ybWFsIGZsb3cgdGhhdCBhcHBlYXJzIGJlZm9yZSB0aGUgZWxlbWVudCBpcyBhdXRvbWF0aWNhbGx5IGJhbGFuY2VkIGFjcm9zcyBhbGwgY29sdW1ucyBiZWZvcmUgdGhlIGVsZW1lbnQgYXBwZWFyLiJ9LHtuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiVGhlIGVsZW1lbnQgZG9lcyBub3Qgc3BhbiBtdWx0aXBsZSBjb2x1bW5zLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkRlc2NyaWJlcyB0aGUgcGFnZS9jb2x1bW4gYnJlYWsgYmVoYXZpb3IgYWZ0ZXIgdGhlIGdlbmVyYXRlZCBib3guIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItd2Via2l0LWNvbHVtbi13aWR0aCIsYnJvd3NlcnM6WyJDIiwiUzMiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiVGhlIHdpZHRoIGRlcGVuZHMgb24gdGhlIHZhbHVlcyBvZiBvdGhlciBwcm9wZXJ0aWVzLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlRoaXMgcHJvcGVydHkgZGVzY3JpYmVzIHRoZSB3aWR0aCBvZiBjb2x1bW5zIGluIG11bHRpY29sIGVsZW1lbnRzLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIl19LHtuYW1lOiItd2Via2l0LWZpbHRlciIsYnJvd3NlcnM6WyJDMTgiLCJPMTUiLCJTNiJdLHZhbHVlczpbe25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJObyBmaWx0ZXIgZWZmZWN0cyBhcmUgYXBwbGllZC4ifSx7bmFtZToiYmx1cigpIixkZXNjcmlwdGlvbjoiQXBwbGllcyBhIEdhdXNzaWFuIGJsdXIgdG8gdGhlIGlucHV0IGltYWdlLiJ9LHtuYW1lOiJicmlnaHRuZXNzKCkiLGRlc2NyaXB0aW9uOiJBcHBsaWVzIGEgbGluZWFyIG11bHRpcGxpZXIgdG8gaW5wdXQgaW1hZ2UsIG1ha2luZyBpdCBhcHBlYXIgbW9yZSBvciBsZXNzIGJyaWdodC4ifSx7bmFtZToiY29udHJhc3QoKSIsZGVzY3JpcHRpb246IkFkanVzdHMgdGhlIGNvbnRyYXN0IG9mIHRoZSBpbnB1dC4ifSx7bmFtZToiZHJvcC1zaGFkb3coKSIsZGVzY3JpcHRpb246IkFwcGxpZXMgYSBkcm9wIHNoYWRvdyBlZmZlY3QgdG8gdGhlIGlucHV0IGltYWdlLiJ9LHtuYW1lOiJncmF5c2NhbGUoKSIsZGVzY3JpcHRpb246IkNvbnZlcnRzIHRoZSBpbnB1dCBpbWFnZSB0byBncmF5c2NhbGUuIn0se25hbWU6Imh1ZS1yb3RhdGUoKSIsZGVzY3JpcHRpb246IkFwcGxpZXMgYSBodWUgcm90YXRpb24gb24gdGhlIGlucHV0IGltYWdlLiAifSx7bmFtZToiaW52ZXJ0KCkiLGRlc2NyaXB0aW9uOiJJbnZlcnRzIHRoZSBzYW1wbGVzIGluIHRoZSBpbnB1dCBpbWFnZS4ifSx7bmFtZToib3BhY2l0eSgpIixkZXNjcmlwdGlvbjoiQXBwbGllcyB0cmFuc3BhcmVuY3kgdG8gdGhlIHNhbXBsZXMgaW4gdGhlIGlucHV0IGltYWdlLiJ9LHtuYW1lOiJzYXR1cmF0ZSgpIixkZXNjcmlwdGlvbjoiU2F0dXJhdGVzIHRoZSBpbnB1dCBpbWFnZS4ifSx7bmFtZToic2VwaWEoKSIsZGVzY3JpcHRpb246IkNvbnZlcnRzIHRoZSBpbnB1dCBpbWFnZSB0byBzZXBpYS4ifSx7bmFtZToidXJsKCkiLGRlc2NyaXB0aW9uOiJBIGZpbHRlciByZWZlcmVuY2UgdG8gYSA8ZmlsdGVyPiBlbGVtZW50LiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlByb2Nlc3NlcyBhbiBlbGVtZW50J3MgcmVuZGVyaW5nIGJlZm9yZSBpdCBpcyBkaXNwbGF5ZWQgaW4gdGhlIGRvY3VtZW50LCBieSBhcHBseWluZyBvbmUgb3IgbW9yZSBmaWx0ZXIgZWZmZWN0cy4iLHJlc3RyaWN0aW9uczpbImVudW0iLCJ1cmwiXX0se25hbWU6Ii13ZWJraXQtZmxvdy1mcm9tIixicm93c2VyczpbIlM2LjEiXSx2YWx1ZXM6W3tuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiVGhlIGJsb2NrIGNvbnRhaW5lciBpcyBub3QgYSBDU1MgUmVnaW9uLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246Ik1ha2VzIGEgYmxvY2sgY29udGFpbmVyIGEgcmVnaW9uIGFuZCBhc3NvY2lhdGVzIGl0IHdpdGggYSBuYW1lZCBmbG93LiIscmVzdHJpY3Rpb25zOlsiaWRlbnRpZmllciJdfSx7bmFtZToiLXdlYmtpdC1mbG93LWludG8iLGJyb3dzZXJzOlsiUzYuMSJdLHZhbHVlczpbe25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJUaGUgZWxlbWVudCBpcyBub3QgbW92ZWQgdG8gYSBuYW1lZCBmbG93IGFuZCBub3JtYWwgQ1NTIHByb2Nlc3NpbmcgdGFrZXMgcGxhY2UuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiUGxhY2VzIGFuIGVsZW1lbnQgb3IgaXRzIGNvbnRlbnRzIGludG8gYSBuYW1lZCBmbG93LiIscmVzdHJpY3Rpb25zOlsiaWRlbnRpZmllciJdfSx7bmFtZToiLXdlYmtpdC1mb250LWZlYXR1cmUtc2V0dGluZ3MiLGJyb3dzZXJzOlsiQzE2Il0sdmFsdWVzOlt7bmFtZTonImMyY3MiJ30se25hbWU6JyJkbGlnIid9LHtuYW1lOicia2VybiInfSx7bmFtZTonImxpZ2EiJ30se25hbWU6JyJsbnVtIid9LHtuYW1lOicib251bSInfSx7bmFtZTonInNtY3AiJ30se25hbWU6JyJzd3NoIid9LHtuYW1lOicidG51bSInfSx7bmFtZToibm9ybWFsIixkZXNjcmlwdGlvbjoiTm8gY2hhbmdlIGluIGdseXBoIHN1YnN0aXR1dGlvbiBvciBwb3NpdGlvbmluZyBvY2N1cnMuIn0se25hbWU6Im9mZiJ9LHtuYW1lOiJvbiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlRoaXMgcHJvcGVydHkgcHJvdmlkZXMgbG93LWxldmVsIGNvbnRyb2wgb3ZlciBPcGVuVHlwZSBmb250IGZlYXR1cmVzLiBJdCBpcyBpbnRlbmRlZCBhcyBhIHdheSBvZiBwcm92aWRpbmcgYWNjZXNzIHRvIGZvbnQgZmVhdHVyZXMgdGhhdCBhcmUgbm90IHdpZGVseSB1c2VkIGJ1dCBhcmUgbmVlZGVkIGZvciBhIHBhcnRpY3VsYXIgdXNlIGNhc2UuIixyZXN0cmljdGlvbnM6WyJzdHJpbmciLCJpbnRlZ2VyIl19LHtuYW1lOiItd2Via2l0LWh5cGhlbnMiLGJyb3dzZXJzOlsiUzUuMSJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJDb25kaXRpb25hbCBoeXBoZW5hdGlvbiBjaGFyYWN0ZXJzIGluc2lkZSBhIHdvcmQsIGlmIHByZXNlbnQsIHRha2UgcHJpb3JpdHkgb3ZlciBhdXRvbWF0aWMgcmVzb3VyY2VzIHdoZW4gZGV0ZXJtaW5pbmcgaHlwaGVuYXRpb24gcG9pbnRzIHdpdGhpbiB0aGUgd29yZC4ifSx7bmFtZToibWFudWFsIixkZXNjcmlwdGlvbjoiV29yZHMgYXJlIG9ubHkgYnJva2VuIGF0IGxpbmUgYnJlYWtzIHdoZXJlIHRoZXJlIGFyZSBjaGFyYWN0ZXJzIGluc2lkZSB0aGUgd29yZCB0aGF0IHN1Z2dlc3QgbGluZSBicmVhayBvcHBvcnR1bml0aWVzIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJXb3JkcyBhcmUgbm90IGJyb2tlbiBhdCBsaW5lIGJyZWFrcywgZXZlbiBpZiBjaGFyYWN0ZXJzIGluc2lkZSB0aGUgd29yZCBzdWdnZXN0IGxpbmUgYnJlYWsgcG9pbnRzLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkNvbnRyb2xzIHdoZXRoZXIgaHlwaGVuYXRpb24gaXMgYWxsb3dlZCB0byBjcmVhdGUgbW9yZSBicmVhayBvcHBvcnR1bml0aWVzIHdpdGhpbiBhIGxpbmUgb2YgdGV4dC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii13ZWJraXQtbGluZS1icmVhayIsYnJvd3NlcnM6WyJDIiwiUzMiXSx2YWx1ZXM6W3tuYW1lOiJhZnRlci13aGl0ZS1zcGFjZSJ9LHtuYW1lOiJub3JtYWwifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgbGluZS1icmVha2luZyBydWxlcyBmb3IgQ0pLIChDaGluZXNlLCBKYXBhbmVzZSwgYW5kIEtvcmVhbikgdGV4dC4ifSx7bmFtZToiLXdlYmtpdC1tYXJnaW4tYm90dG9tLWNvbGxhcHNlIixicm93c2VyczpbIkMiLCJTMyJdLHZhbHVlczpbe25hbWU6ImNvbGxhcHNlIn0se25hbWU6ImRpc2NhcmQifSx7bmFtZToic2VwYXJhdGUifV0scmVsZXZhbmNlOjUwLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii13ZWJraXQtbWFyZ2luLWNvbGxhcHNlIixicm93c2VyczpbIkMiLCJTMyJdLHZhbHVlczpbe25hbWU6ImNvbGxhcHNlIn0se25hbWU6ImRpc2NhcmQifSx7bmFtZToic2VwYXJhdGUifV0scmVsZXZhbmNlOjUwLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii13ZWJraXQtbWFyZ2luLXN0YXJ0Iixicm93c2VyczpbIkMiLCJTMyJdLHZhbHVlczpbe25hbWU6ImF1dG8ifV0scmVsZXZhbmNlOjUwLHJlc3RyaWN0aW9uczpbInBlcmNlbnRhZ2UiLCJsZW5ndGgiXX0se25hbWU6Ii13ZWJraXQtbWFyZ2luLXRvcC1jb2xsYXBzZSIsYnJvd3NlcnM6WyJDIiwiUzMiXSx2YWx1ZXM6W3tuYW1lOiJjb2xsYXBzZSJ9LHtuYW1lOiJkaXNjYXJkIn0se25hbWU6InNlcGFyYXRlIn1dLHJlbGV2YW5jZTo1MCxyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItd2Via2l0LW1hc2stY2xpcCIsYnJvd3NlcnM6WyJDIiwiTzE1IiwiUzQiXSxzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6IlsgPGJveD4gfCBib3JkZXIgfCBwYWRkaW5nIHwgY29udGVudCB8IHRleHQgXSMiLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJEZXRlcm1pbmVzIHRoZSBtYXNrIHBhaW50aW5nIGFyZWEsIHdoaWNoIGRldGVybWluZXMgdGhlIGFyZWEgdGhhdCBpcyBhZmZlY3RlZCBieSB0aGUgbWFzay4iLHJlc3RyaWN0aW9uczpbImJveCJdfSx7bmFtZToiLXdlYmtpdC1tYXNrLWltYWdlIixicm93c2VyczpbIkMiLCJPMTUiLCJTNCJdLHZhbHVlczpbe25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJDb3VudHMgYXMgYSB0cmFuc3BhcmVudCBibGFjayBpbWFnZSBsYXllci4ifSx7bmFtZToidXJsKCkiLGRlc2NyaXB0aW9uOiJSZWZlcmVuY2UgdG8gYSA8bWFzayBlbGVtZW50IG9yIHRvIGEgQ1NTIGltYWdlLiJ9XSxzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6IjxtYXNrLXJlZmVyZW5jZT4jIixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiU2V0cyB0aGUgbWFzayBsYXllciBpbWFnZSBvZiBhbiBlbGVtZW50LiIscmVzdHJpY3Rpb25zOlsidXJsIiwiaW1hZ2UiLCJlbnVtIl19LHtuYW1lOiItd2Via2l0LW1hc2stb3JpZ2luIixicm93c2VyczpbIkMiLCJPMTUiLCJTNCJdLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiWyA8Ym94PiB8IGJvcmRlciB8IHBhZGRpbmcgfCBjb250ZW50IF0jIixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSBtYXNrIHBvc2l0aW9uaW5nIGFyZWEuIixyZXN0cmljdGlvbnM6WyJib3giXX0se25hbWU6Ii13ZWJraXQtbWFzay1yZXBlYXQiLGJyb3dzZXJzOlsiQyIsIk8xNSIsIlM0Il0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiI8cmVwZWF0LXN0eWxlPiMiLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgaG93IG1hc2sgbGF5ZXIgaW1hZ2VzIGFyZSB0aWxlZCBhZnRlciB0aGV5IGhhdmUgYmVlbiBzaXplZCBhbmQgcG9zaXRpb25lZC4iLHJlc3RyaWN0aW9uczpbInJlcGVhdCJdfSx7bmFtZToiLXdlYmtpdC1tYXNrLXNpemUiLGJyb3dzZXJzOlsiQyIsIk8xNSIsIlM0Il0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IlJlc29sdmVkIGJ5IHVzaW5nIHRoZSBpbWFnZSdzIGludHJpbnNpYyByYXRpbyBhbmQgdGhlIHNpemUgb2YgdGhlIG90aGVyIGRpbWVuc2lvbiwgb3IgZmFpbGluZyB0aGF0LCB1c2luZyB0aGUgaW1hZ2UncyBpbnRyaW5zaWMgc2l6ZSwgb3IgZmFpbGluZyB0aGF0LCB0cmVhdGluZyBpdCBhcyAxMDAlLiJ9LHtuYW1lOiJjb250YWluIixkZXNjcmlwdGlvbjoiU2NhbGUgdGhlIGltYWdlLCB3aGlsZSBwcmVzZXJ2aW5nIGl0cyBpbnRyaW5zaWMgYXNwZWN0IHJhdGlvIChpZiBhbnkpLCB0byB0aGUgbGFyZ2VzdCBzaXplIHN1Y2ggdGhhdCBib3RoIGl0cyB3aWR0aCBhbmQgaXRzIGhlaWdodCBjYW4gZml0IGluc2lkZSB0aGUgYmFja2dyb3VuZCBwb3NpdGlvbmluZyBhcmVhLiJ9LHtuYW1lOiJjb3ZlciIsZGVzY3JpcHRpb246IlNjYWxlIHRoZSBpbWFnZSwgd2hpbGUgcHJlc2VydmluZyBpdHMgaW50cmluc2ljIGFzcGVjdCByYXRpbyAoaWYgYW55KSwgdG8gdGhlIHNtYWxsZXN0IHNpemUgc3VjaCB0aGF0IGJvdGggaXRzIHdpZHRoIGFuZCBpdHMgaGVpZ2h0IGNhbiBjb21wbGV0ZWx5IGNvdmVyIHRoZSBiYWNrZ3JvdW5kIHBvc2l0aW9uaW5nIGFyZWEuIn1dLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiPGJnLXNpemU+IyIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgc2l6ZSBvZiB0aGUgbWFzayBsYXllciBpbWFnZXMuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJwZXJjZW50YWdlIiwiZW51bSJdfSx7bmFtZToiLXdlYmtpdC1uYnNwLW1vZGUiLGJyb3dzZXJzOlsiUzEzLjEiXSx2YWx1ZXM6W3tuYW1lOiJub3JtYWwifSx7bmFtZToic3BhY2UifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJEZWZpbmVzIHRoZSBiZWhhdmlvciBvZiBub25icmVha2luZyBzcGFjZXMgd2l0aGluIHRleHQuIn0se25hbWU6Ii13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nIixicm93c2VyczpbIkMiLCJTNSJdLHZhbHVlczpbe25hbWU6ImF1dG8ifSx7bmFtZToidG91Y2gifV0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiJhdXRvIHwgdG91Y2giLHJlbGV2YW5jZTowLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy8td2Via2l0LW92ZXJmbG93LXNjcm9sbGluZyJ9XSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHdoZXRoZXIgdG8gdXNlIG5hdGl2ZS1zdHlsZSBzY3JvbGxpbmcgaW4gYW4gb3ZlcmZsb3c6c2Nyb2xsIGVsZW1lbnQuIn0se25hbWU6Ii13ZWJraXQtcGFkZGluZy1zdGFydCIsYnJvd3NlcnM6WyJDIiwiUzMiXSxyZWxldmFuY2U6NTAscmVzdHJpY3Rpb25zOlsicGVyY2VudGFnZSIsImxlbmd0aCJdfSx7bmFtZToiLXdlYmtpdC1wZXJzcGVjdGl2ZSIsYnJvd3NlcnM6WyJDIiwiUzQiXSx2YWx1ZXM6W3tuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiTm8gcGVyc3BlY3RpdmUgdHJhbnNmb3JtIGlzIGFwcGxpZWQuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiQXBwbGllcyB0aGUgc2FtZSB0cmFuc2Zvcm0gYXMgdGhlIHBlcnNwZWN0aXZlKDxudW1iZXI+KSB0cmFuc2Zvcm0gZnVuY3Rpb24sIGV4Y2VwdCB0aGF0IGl0IGFwcGxpZXMgb25seSB0byB0aGUgcG9zaXRpb25lZCBvciB0cmFuc2Zvcm1lZCBjaGlsZHJlbiBvZiB0aGUgZWxlbWVudCwgbm90IHRvIHRoZSB0cmFuc2Zvcm0gb24gdGhlIGVsZW1lbnQgaXRzZWxmLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIl19LHtuYW1lOiItd2Via2l0LXBlcnNwZWN0aXZlLW9yaWdpbiIsYnJvd3NlcnM6WyJDIiwiUzQiXSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkVzdGFibGlzaGVzIHRoZSBvcmlnaW4gZm9yIHRoZSBwZXJzcGVjdGl2ZSBwcm9wZXJ0eS4gSXQgZWZmZWN0aXZlbHkgc2V0cyB0aGUgWCBhbmQgWSBwb3NpdGlvbiBhdCB3aGljaCB0aGUgdmlld2VyIGFwcGVhcnMgdG8gYmUgbG9va2luZyBhdCB0aGUgY2hpbGRyZW4gb2YgdGhlIGVsZW1lbnQuIixyZXN0cmljdGlvbnM6WyJwb3NpdGlvbiIsInBlcmNlbnRhZ2UiLCJsZW5ndGgiXX0se25hbWU6Ii13ZWJraXQtcmVnaW9uLWZyYWdtZW50Iixicm93c2VyczpbIlM3Il0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IkNvbnRlbnQgZmxvd3MgYXMgaXQgd291bGQgaW4gYSByZWd1bGFyIGNvbnRlbnQgYm94LiJ9LHtuYW1lOiJicmVhayIsZGVzY3JpcHRpb246IklmIHRoZSBjb250ZW50IGZpdHMgd2l0aGluIHRoZSBDU1MgUmVnaW9uLCB0aGVuIHRoaXMgcHJvcGVydHkgaGFzIG5vIGVmZmVjdC4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJUaGUgJ3JlZ2lvbi1mcmFnbWVudCcgcHJvcGVydHkgY29udHJvbHMgdGhlIGJlaGF2aW9yIG9mIHRoZSBsYXN0IHJlZ2lvbiBhc3NvY2lhdGVkIHdpdGggYSBuYW1lZCBmbG93LiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yIixicm93c2VyczpbIkUxMiIsIkMxNiIsIk8xNSJdLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiPGNvbG9yPiIscmVsZXZhbmNlOjAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvciJ9XSxyZXN0cmljdGlvbnM6WyJjb2xvciJdfSx7bmFtZToiLXdlYmtpdC10ZXh0LWZpbGwtY29sb3IiLGJyb3dzZXJzOlsiRTEyIiwiRkY0OSIsIlMzIiwiQzEiLCJPMTUiXSxzeW50YXg6Ijxjb2xvcj4iLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvLXdlYmtpdC10ZXh0LWZpbGwtY29sb3IifV0scmVzdHJpY3Rpb25zOlsiY29sb3IiXX0se25hbWU6Ii13ZWJraXQtdGV4dC1zaXplLWFkanVzdCIsYnJvd3NlcnM6WyJFIiwiQyIsIlMzIl0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IlJlbmRlcmVycyBtdXN0IHVzZSB0aGUgZGVmYXVsdCBzaXplIGFkanVzdG1lbnQgd2hlbiBkaXNwbGF5aW5nIG9uIGEgc21hbGwgZGV2aWNlLiJ9LHtuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiUmVuZGVyZXJzIG11c3Qgbm90IGRvIHNpemUgYWRqdXN0bWVudCB3aGVuIGRpc3BsYXlpbmcgb24gYSBzbWFsbCBkZXZpY2UuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgc2l6ZSBhZGp1c3RtZW50IGZvciBkaXNwbGF5aW5nIHRleHQgY29udGVudCBpbiBtb2JpbGUgYnJvd3NlcnMuIixyZXN0cmljdGlvbnM6WyJwZXJjZW50YWdlIl19LHtuYW1lOiItd2Via2l0LXRleHQtc3Ryb2tlIixicm93c2VyczpbIkUxNSIsIkZGNDkiLCJTMyIsIkM0IiwiTzE1Il0sc3ludGF4OiI8bGVuZ3RoPiB8fCA8Y29sb3I+IixyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLy13ZWJraXQtdGV4dC1zdHJva2UifV0scmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwibGluZS13aWR0aCIsImNvbG9yIiwicGVyY2VudGFnZSJdfSx7bmFtZToiLXdlYmtpdC10ZXh0LXN0cm9rZS1jb2xvciIsYnJvd3NlcnM6WyJFMTUiLCJGRjQ5IiwiUzMiLCJDMSIsIk8xNSJdLHN5bnRheDoiPGNvbG9yPiIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy8td2Via2l0LXRleHQtc3Ryb2tlLWNvbG9yIn1dLHJlc3RyaWN0aW9uczpbImNvbG9yIl19LHtuYW1lOiItd2Via2l0LXRleHQtc3Ryb2tlLXdpZHRoIixicm93c2VyczpbIkUxNSIsIkZGNDkiLCJTMyIsIkMxIiwiTzE1Il0sc3ludGF4OiI8bGVuZ3RoPiIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy8td2Via2l0LXRleHQtc3Ryb2tlLXdpZHRoIn1dLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsImxpbmUtd2lkdGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiItd2Via2l0LXRvdWNoLWNhbGxvdXQiLGJyb3dzZXJzOlsiUzMiXSx2YWx1ZXM6W3tuYW1lOiJub25lIn1dLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiZGVmYXVsdCB8IG5vbmUiLHJlbGV2YW5jZTowLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy8td2Via2l0LXRvdWNoLWNhbGxvdXQifV0scmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLXdlYmtpdC10cmFuc2Zvcm0iLGJyb3dzZXJzOlsiQyIsIk8xMiIsIlMzLjEiXSx2YWx1ZXM6W3tuYW1lOiJtYXRyaXgoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIDJEIHRyYW5zZm9ybWF0aW9uIGluIHRoZSBmb3JtIG9mIGEgdHJhbnNmb3JtYXRpb24gbWF0cml4IG9mIHNpeCB2YWx1ZXMuIG1hdHJpeChhLGIsYyxkLGUsZikgaXMgZXF1aXZhbGVudCB0byBhcHBseWluZyB0aGUgdHJhbnNmb3JtYXRpb24gbWF0cml4IFthIGIgYyBkIGUgZl0ifSx7bmFtZToibWF0cml4M2QoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIDNEIHRyYW5zZm9ybWF0aW9uIGFzIGEgNHg0IGhvbW9nZW5lb3VzIG1hdHJpeCBvZiAxNiB2YWx1ZXMgaW4gY29sdW1uLW1ham9yIG9yZGVyLiJ9LHtuYW1lOiJub25lIn0se25hbWU6InBlcnNwZWN0aXZlKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSBwZXJzcGVjdGl2ZSBwcm9qZWN0aW9uIG1hdHJpeC4ifSx7bmFtZToicm90YXRlKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSAyRCByb3RhdGlvbiBieSB0aGUgYW5nbGUgc3BlY2lmaWVkIGluIHRoZSBwYXJhbWV0ZXIgYWJvdXQgdGhlIG9yaWdpbiBvZiB0aGUgZWxlbWVudCwgYXMgZGVmaW5lZCBieSB0aGUgdHJhbnNmb3JtLW9yaWdpbiBwcm9wZXJ0eS4ifSx7bmFtZToicm90YXRlM2QoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIGNsb2Nrd2lzZSAzRCByb3RhdGlvbiBieSB0aGUgYW5nbGUgc3BlY2lmaWVkIGluIGxhc3QgcGFyYW1ldGVyIGFib3V0IHRoZSBbeCx5LHpdIGRpcmVjdGlvbiB2ZWN0b3IgZGVzY3JpYmVkIGJ5IHRoZSBmaXJzdCAzIHBhcmFtZXRlcnMuIn0se25hbWU6InJvdGF0ZVgoJ2FuZ2xlJykiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSBjbG9ja3dpc2Ugcm90YXRpb24gYnkgdGhlIGdpdmVuIGFuZ2xlIGFib3V0IHRoZSBYIGF4aXMuIn0se25hbWU6InJvdGF0ZVkoJ2FuZ2xlJykiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSBjbG9ja3dpc2Ugcm90YXRpb24gYnkgdGhlIGdpdmVuIGFuZ2xlIGFib3V0IHRoZSBZIGF4aXMuIn0se25hbWU6InJvdGF0ZVooJ2FuZ2xlJykiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSBjbG9ja3dpc2Ugcm90YXRpb24gYnkgdGhlIGdpdmVuIGFuZ2xlIGFib3V0IHRoZSBaIGF4aXMuIn0se25hbWU6InNjYWxlKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSAyRCBzY2FsZSBvcGVyYXRpb24gYnkgdGhlIFtzeCxzeV0gc2NhbGluZyB2ZWN0b3IgZGVzY3JpYmVkIGJ5IHRoZSAyIHBhcmFtZXRlcnMuIElmIHRoZSBzZWNvbmQgcGFyYW1ldGVyIGlzIG5vdCBwcm92aWRlZCwgaXQgaXMgdGFrZXMgYSB2YWx1ZSBlcXVhbCB0byB0aGUgZmlyc3QuIn0se25hbWU6InNjYWxlM2QoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIDNEIHNjYWxlIG9wZXJhdGlvbiBieSB0aGUgW3N4LHN5LHN6XSBzY2FsaW5nIHZlY3RvciBkZXNjcmliZWQgYnkgdGhlIDMgcGFyYW1ldGVycy4ifSx7bmFtZToic2NhbGVYKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSBzY2FsZSBvcGVyYXRpb24gdXNpbmcgdGhlIFtzeCwxXSBzY2FsaW5nIHZlY3Rvciwgd2hlcmUgc3ggaXMgZ2l2ZW4gYXMgdGhlIHBhcmFtZXRlci4ifSx7bmFtZToic2NhbGVZKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSBzY2FsZSBvcGVyYXRpb24gdXNpbmcgdGhlIFtzeSwxXSBzY2FsaW5nIHZlY3Rvciwgd2hlcmUgc3kgaXMgZ2l2ZW4gYXMgdGhlIHBhcmFtZXRlci4ifSx7bmFtZToic2NhbGVaKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSBzY2FsZSBvcGVyYXRpb24gdXNpbmcgdGhlIFsxLDEsc3pdIHNjYWxpbmcgdmVjdG9yLCB3aGVyZSBzeiBpcyBnaXZlbiBhcyB0aGUgcGFyYW1ldGVyLiJ9LHtuYW1lOiJza2V3KCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSBza2V3IHRyYW5zZm9ybWF0aW9uIGFsb25nIHRoZSBYIGFuZCBZIGF4ZXMuIFRoZSBmaXJzdCBhbmdsZSBwYXJhbWV0ZXIgc3BlY2lmaWVzIHRoZSBza2V3IG9uIHRoZSBYIGF4aXMuIFRoZSBzZWNvbmQgYW5nbGUgcGFyYW1ldGVyIHNwZWNpZmllcyB0aGUgc2tldyBvbiB0aGUgWSBheGlzLiBJZiB0aGUgc2Vjb25kIHBhcmFtZXRlciBpcyBub3QgZ2l2ZW4gdGhlbiBhIHZhbHVlIG9mIDAgaXMgdXNlZCBmb3IgdGhlIFkgYW5nbGUgKGllOiBubyBza2V3IG9uIHRoZSBZIGF4aXMpLiJ9LHtuYW1lOiJza2V3WCgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgc2tldyB0cmFuc2Zvcm1hdGlvbiBhbG9uZyB0aGUgWCBheGlzIGJ5IHRoZSBnaXZlbiBhbmdsZS4ifSx7bmFtZToic2tld1koKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIHNrZXcgdHJhbnNmb3JtYXRpb24gYWxvbmcgdGhlIFkgYXhpcyBieSB0aGUgZ2l2ZW4gYW5nbGUuIn0se25hbWU6InRyYW5zbGF0ZSgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgMkQgdHJhbnNsYXRpb24gYnkgdGhlIHZlY3RvciBbdHgsIHR5XSwgd2hlcmUgdHggaXMgdGhlIGZpcnN0IHRyYW5zbGF0aW9uLXZhbHVlIHBhcmFtZXRlciBhbmQgdHkgaXMgdGhlIG9wdGlvbmFsIHNlY29uZCB0cmFuc2xhdGlvbi12YWx1ZSBwYXJhbWV0ZXIuIn0se25hbWU6InRyYW5zbGF0ZTNkKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSAzRCB0cmFuc2xhdGlvbiBieSB0aGUgdmVjdG9yIFt0eCx0eSx0el0sIHdpdGggdHgsIHR5IGFuZCB0eiBiZWluZyB0aGUgZmlyc3QsIHNlY29uZCBhbmQgdGhpcmQgdHJhbnNsYXRpb24tdmFsdWUgcGFyYW1ldGVycyByZXNwZWN0aXZlbHkuIn0se25hbWU6InRyYW5zbGF0ZVgoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIHRyYW5zbGF0aW9uIGJ5IHRoZSBnaXZlbiBhbW91bnQgaW4gdGhlIFggZGlyZWN0aW9uLiJ9LHtuYW1lOiJ0cmFuc2xhdGVZKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSB0cmFuc2xhdGlvbiBieSB0aGUgZ2l2ZW4gYW1vdW50IGluIHRoZSBZIGRpcmVjdGlvbi4ifSx7bmFtZToidHJhbnNsYXRlWigpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgdHJhbnNsYXRpb24gYnkgdGhlIGdpdmVuIGFtb3VudCBpbiB0aGUgWiBkaXJlY3Rpb24uIE5vdGUgdGhhdCBwZXJjZW50YWdlIHZhbHVlcyBhcmUgbm90IGFsbG93ZWQgaW4gdGhlIHRyYW5zbGF0ZVogdHJhbnNsYXRpb24tdmFsdWUsIGFuZCBpZiBwcmVzZW50IGFyZSBldmFsdWF0ZWQgYXMgMC4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJBIHR3by1kaW1lbnNpb25hbCB0cmFuc2Zvcm1hdGlvbiBpcyBhcHBsaWVkIHRvIGFuIGVsZW1lbnQgdGhyb3VnaCB0aGUgJ3RyYW5zZm9ybScgcHJvcGVydHkuIFRoaXMgcHJvcGVydHkgY29udGFpbnMgYSBsaXN0IG9mIHRyYW5zZm9ybSBmdW5jdGlvbnMgc2ltaWxhciB0byB0aG9zZSBhbGxvd2VkIGJ5IFNWRy4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbiIsYnJvd3NlcnM6WyJDIiwiTzE1IiwiUzMuMSJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRXN0YWJsaXNoZXMgdGhlIG9yaWdpbiBvZiB0cmFuc2Zvcm1hdGlvbiBmb3IgYW4gZWxlbWVudC4iLHJlc3RyaWN0aW9uczpbInBvc2l0aW9uIiwibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToiLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luLXgiLGJyb3dzZXJzOlsiRTgwIiwiUzEzLjEiLCJDODAiLCJPNjciXSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlRoZSB4IGNvb3JkaW5hdGUgb2YgdGhlIG9yaWdpbiBmb3IgdHJhbnNmb3JtcyBhcHBsaWVkIHRvIGFuIGVsZW1lbnQgd2l0aCByZXNwZWN0IHRvIGl0cyBib3JkZXIgYm94LiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToiLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luLXkiLGJyb3dzZXJzOlsiRTgwIiwiUzEzLjEiLCJDODAiLCJPNjciXSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlRoZSB5IGNvb3JkaW5hdGUgb2YgdGhlIG9yaWdpbiBmb3IgdHJhbnNmb3JtcyBhcHBsaWVkIHRvIGFuIGVsZW1lbnQgd2l0aCByZXNwZWN0IHRvIGl0cyBib3JkZXIgYm94LiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToiLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luLXoiLGJyb3dzZXJzOlsiRTgwIiwiUzEzLjEiLCJDODAiLCJPNjciXSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlRoZSB6IGNvb3JkaW5hdGUgb2YgdGhlIG9yaWdpbiBmb3IgdHJhbnNmb3JtcyBhcHBsaWVkIHRvIGFuIGVsZW1lbnQgd2l0aCByZXNwZWN0IHRvIGl0cyBib3JkZXIgYm94LiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToiLXdlYmtpdC10cmFuc2Zvcm0tc3R5bGUiLGJyb3dzZXJzOlsiQyIsIlM0Il0sdmFsdWVzOlt7bmFtZToiZmxhdCIsZGVzY3JpcHRpb246IkFsbCBjaGlsZHJlbiBvZiB0aGlzIGVsZW1lbnQgYXJlIHJlbmRlcmVkIGZsYXR0ZW5lZCBpbnRvIHRoZSAyRCBwbGFuZSBvZiB0aGUgZWxlbWVudC4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJEZWZpbmVzIGhvdyBuZXN0ZWQgZWxlbWVudHMgYXJlIHJlbmRlcmVkIGluIDNEIHNwYWNlLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLXdlYmtpdC10cmFuc2l0aW9uIixicm93c2VyczpbIkMiLCJPMTIiLCJTNSJdLHZhbHVlczpbe25hbWU6ImFsbCIsZGVzY3JpcHRpb246IkV2ZXJ5IHByb3BlcnR5IHRoYXQgaXMgYWJsZSB0byB1bmRlcmdvIGEgdHJhbnNpdGlvbiB3aWxsIGRvIHNvLiJ9LHtuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiTm8gcHJvcGVydHkgd2lsbCB0cmFuc2l0aW9uLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlNob3J0aGFuZCBwcm9wZXJ0eSBjb21iaW5lcyBmb3VyIG9mIHRoZSB0cmFuc2l0aW9uIHByb3BlcnRpZXMgaW50byBhIHNpbmdsZSBwcm9wZXJ0eS4iLHJlc3RyaWN0aW9uczpbInRpbWUiLCJwcm9wZXJ0eSIsInRpbWluZy1mdW5jdGlvbiIsImVudW0iXX0se25hbWU6Ii13ZWJraXQtdHJhbnNpdGlvbi1kZWxheSIsYnJvd3NlcnM6WyJDIiwiTzEyIiwiUzUiXSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkRlZmluZXMgd2hlbiB0aGUgdHJhbnNpdGlvbiB3aWxsIHN0YXJ0LiBJdCBhbGxvd3MgYSB0cmFuc2l0aW9uIHRvIGJlZ2luIGV4ZWN1dGlvbiBzb21lIHBlcmlvZCBvZiB0aW1lIGZyb20gd2hlbiBpdCBpcyBhcHBsaWVkLiIscmVzdHJpY3Rpb25zOlsidGltZSJdfSx7bmFtZToiLXdlYmtpdC10cmFuc2l0aW9uLWR1cmF0aW9uIixicm93c2VyczpbIkMiLCJPMTIiLCJTNSJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGhvdyBsb25nIHRoZSB0cmFuc2l0aW9uIGZyb20gdGhlIG9sZCB2YWx1ZSB0byB0aGUgbmV3IHZhbHVlIHNob3VsZCB0YWtlLiIscmVzdHJpY3Rpb25zOlsidGltZSJdfSx7bmFtZToiLXdlYmtpdC10cmFuc2l0aW9uLXByb3BlcnR5Iixicm93c2VyczpbIkMiLCJPMTIiLCJTNSJdLHZhbHVlczpbe25hbWU6ImFsbCIsZGVzY3JpcHRpb246IkV2ZXJ5IHByb3BlcnR5IHRoYXQgaXMgYWJsZSB0byB1bmRlcmdvIGEgdHJhbnNpdGlvbiB3aWxsIGRvIHNvLiJ9LHtuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiTm8gcHJvcGVydHkgd2lsbCB0cmFuc2l0aW9uLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgbmFtZSBvZiB0aGUgQ1NTIHByb3BlcnR5IHRvIHdoaWNoIHRoZSB0cmFuc2l0aW9uIGlzIGFwcGxpZWQuIixyZXN0cmljdGlvbnM6WyJwcm9wZXJ0eSJdfSx7bmFtZToiLXdlYmtpdC10cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbiIsYnJvd3NlcnM6WyJDIiwiTzEyIiwiUzUiXSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkRlc2NyaWJlcyBob3cgdGhlIGludGVybWVkaWF0ZSB2YWx1ZXMgdXNlZCBkdXJpbmcgYSB0cmFuc2l0aW9uIHdpbGwgYmUgY2FsY3VsYXRlZC4iLHJlc3RyaWN0aW9uczpbInRpbWluZy1mdW5jdGlvbiJdfSx7bmFtZToiLXdlYmtpdC11c2VyLWRyYWciLGJyb3dzZXJzOlsiRTgwIiwiUzEzLjEiLCJDODAiLCJPNjciXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIn0se25hbWU6ImVsZW1lbnQifSx7bmFtZToibm9uZSJ9XSxyZWxldmFuY2U6NTAscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLXdlYmtpdC11c2VyLW1vZGlmeSIsYnJvd3NlcnM6WyJFODAiLCJTMTMuMSIsIkM4MCIsIk82NyJdLHZhbHVlczpbe25hbWU6InJlYWQtb25seSJ9LHtuYW1lOiJyZWFkLXdyaXRlIn0se25hbWU6InJlYWQtd3JpdGUtcGxhaW50ZXh0LW9ubHkifV0sc3ludGF4OiJyZWFkLW9ubHkgfCByZWFkLXdyaXRlIHwgcmVhZC13cml0ZS1wbGFpbnRleHQtb25seSIscmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJEZXRlcm1pbmVzIHdoZXRoZXIgYSB1c2VyIGNhbiBlZGl0IHRoZSBjb250ZW50IG9mIGFuIGVsZW1lbnQuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItd2Via2l0LXVzZXItc2VsZWN0Iixicm93c2VyczpbIkMiLCJTMyJdLHZhbHVlczpbe25hbWU6ImF1dG8ifSx7bmFtZToibm9uZSJ9LHtuYW1lOiJ0ZXh0In1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiQ29udHJvbHMgdGhlIGFwcGVhcmFuY2Ugb2Ygc2VsZWN0aW9uLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToid2lkb3dzIixicm93c2VyczpbIkUxMiIsIlMxLjMiLCJDMjUiLCJJRTgiLCJPOS4yIl0sc3ludGF4OiI8aW50ZWdlcj4iLHJlbGV2YW5jZTo1MSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvd2lkb3dzIn1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhlIG1pbmltdW0gbnVtYmVyIG9mIGxpbmUgYm94ZXMgb2YgYSBibG9jayBjb250YWluZXIgdGhhdCBtdXN0IGJlIGxlZnQgaW4gYSBmcmFnbWVudCBhZnRlciBhIGJyZWFrLiIscmVzdHJpY3Rpb25zOlsiaW50ZWdlciJdfSx7bmFtZToid2lkdGgiLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzEiLCJDMSIsIklFNCIsIk8zLjUiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiVGhlIHdpZHRoIGRlcGVuZHMgb24gdGhlIHZhbHVlcyBvZiBvdGhlciBwcm9wZXJ0aWVzLiJ9LHtuYW1lOiJmaXQtY29udGVudCIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMSIsIkMxIiwiSUU0IiwiTzMuNSJdLGRlc2NyaXB0aW9uOiJVc2UgdGhlIGZpdC1jb250ZW50IGlubGluZSBzaXplIG9yIGZpdC1jb250ZW50IGJsb2NrIHNpemUsIGFzIGFwcHJvcHJpYXRlIHRvIHRoZSB3cml0aW5nIG1vZGUuIn0se25hbWU6Im1heC1jb250ZW50Iixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxIiwiQzEiLCJJRTQiLCJPMy41Il0sZGVzY3JpcHRpb246IlVzZSB0aGUgbWF4LWNvbnRlbnQgaW5saW5lIHNpemUgb3IgbWF4LWNvbnRlbnQgYmxvY2sgc2l6ZSwgYXMgYXBwcm9wcmlhdGUgdG8gdGhlIHdyaXRpbmcgbW9kZS4ifSx7bmFtZToibWluLWNvbnRlbnQiLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzEiLCJDMSIsIklFNCIsIk8zLjUiXSxkZXNjcmlwdGlvbjoiVXNlIHRoZSBtaW4tY29udGVudCBpbmxpbmUgc2l6ZSBvciBtaW4tY29udGVudCBibG9jayBzaXplLCBhcyBhcHByb3ByaWF0ZSB0byB0aGUgd3JpdGluZyBtb2RlLiJ9XSxzeW50YXg6ImF1dG8gfCA8bGVuZ3RoPiB8IDxwZXJjZW50YWdlPiB8IG1pbi1jb250ZW50IHwgbWF4LWNvbnRlbnQgfCBmaXQtY29udGVudCB8IGZpdC1jb250ZW50KDxsZW5ndGgtcGVyY2VudGFnZT4pIixyZWxldmFuY2U6OTYscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3dpZHRoIn1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhlIHdpZHRoIG9mIHRoZSBjb250ZW50IGFyZWEsIHBhZGRpbmcgYXJlYSBvciBib3JkZXIgYXJlYSAoZGVwZW5kaW5nIG9uICdib3gtc2l6aW5nJykgb2YgY2VydGFpbiBib3hlcy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6IndpbGwtY2hhbmdlIixicm93c2VyczpbIkU3OSIsIkZGMzYiLCJTOS4xIiwiQzM2IiwiTzI0Il0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IkV4cHJlc3NlcyBubyBwYXJ0aWN1bGFyIGludGVudC4ifSx7bmFtZToiY29udGVudHMiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCB0aGUgYXV0aG9yIGV4cGVjdHMgdG8gYW5pbWF0ZSBvciBjaGFuZ2Ugc29tZXRoaW5nIGFib3V0IHRoZSBlbGVtZW50J3MgY29udGVudHMgaW4gdGhlIG5lYXIgZnV0dXJlLiJ9LHtuYW1lOiJzY3JvbGwtcG9zaXRpb24iLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCB0aGUgYXV0aG9yIGV4cGVjdHMgdG8gYW5pbWF0ZSBvciBjaGFuZ2UgdGhlIHNjcm9sbCBwb3NpdGlvbiBvZiB0aGUgZWxlbWVudCBpbiB0aGUgbmVhciBmdXR1cmUuIn1dLHN5bnRheDoiYXV0byB8IDxhbmltYXRlYWJsZS1mZWF0dXJlPiMiLHJlbGV2YW5jZTo2NSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvd2lsbC1jaGFuZ2UifV0sZGVzY3JpcHRpb246IlByb3ZpZGVzIGEgcmVuZGVyaW5nIGhpbnQgdG8gdGhlIHVzZXIgYWdlbnQsIHN0YXRpbmcgd2hhdCBraW5kcyBvZiBjaGFuZ2VzIHRoZSBhdXRob3IgZXhwZWN0cyB0byBwZXJmb3JtIG9uIHRoZSBlbGVtZW50LiIscmVzdHJpY3Rpb25zOlsiZW51bSIsImlkZW50aWZpZXIiXX0se25hbWU6IndvcmQtYnJlYWsiLGJyb3dzZXJzOlsiRTEyIiwiRkYxNSIsIlMzIiwiQzEiLCJJRTUuNSIsIk8xNSJdLHZhbHVlczpbe25hbWU6ImJyZWFrLWFsbCIsZGVzY3JpcHRpb246IkxpbmVzIG1heSBicmVhayBiZXR3ZWVuIGFueSB0d28gZ3JhcGhlbWUgY2x1c3RlcnMgZm9yIG5vbi1DSksgc2NyaXB0cy4ifSx7bmFtZToia2VlcC1hbGwiLGRlc2NyaXB0aW9uOiJCbG9jayBjaGFyYWN0ZXJzIGNhbiBubyBsb25nZXIgY3JlYXRlIGltcGxpZWQgYnJlYWsgcG9pbnRzLiJ9LHtuYW1lOiJub3JtYWwiLGRlc2NyaXB0aW9uOiJCcmVha3Mgbm9uLUNKSyBzY3JpcHRzIGFjY29yZGluZyB0byB0aGVpciBvd24gcnVsZXMuIn1dLHN5bnRheDoibm9ybWFsIHwgYnJlYWstYWxsIHwga2VlcC1hbGwgfCBicmVhay13b3JkIixyZWxldmFuY2U6NzYscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3dvcmQtYnJlYWsifV0sZGVzY3JpcHRpb246IlNwZWNpZmllcyBsaW5lIGJyZWFrIG9wcG9ydHVuaXRpZXMgZm9yIG5vbi1DSksgc2NyaXB0cy4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6IndvcmQtc3BhY2luZyIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMSIsIkMxIiwiSUU2IiwiTzMuNSJdLHZhbHVlczpbe25hbWU6Im5vcm1hbCIsZGVzY3JpcHRpb246Ik5vIGFkZGl0aW9uYWwgc3BhY2luZyBpcyBhcHBsaWVkLiBDb21wdXRlcyB0byB6ZXJvLiJ9XSxzeW50YXg6Im5vcm1hbCB8IDxsZW5ndGg+IixyZWxldmFuY2U6NTcscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3dvcmQtc3BhY2luZyJ9XSxkZXNjcmlwdGlvbjonU3BlY2lmaWVzIGFkZGl0aW9uYWwgc3BhY2luZyBiZXR3ZWVuICJ3b3JkcyIuJyxyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiJ3b3JkLXdyYXAiLGJyb3dzZXJzOlsiRTgwIiwiRkY3MiIsIlMxMy4xIiwiQzgwIiwiTzY3Il0sdmFsdWVzOlt7bmFtZToiYnJlYWstd29yZCIsZGVzY3JpcHRpb246IkFuIG90aGVyd2lzZSB1bmJyZWFrYWJsZSBzZXF1ZW5jZSBvZiBjaGFyYWN0ZXJzIG1heSBiZSBicm9rZW4gYXQgYW4gYXJiaXRyYXJ5IHBvaW50IGlmIHRoZXJlIGFyZSBubyBvdGhlcndpc2UtYWNjZXB0YWJsZSBicmVhayBwb2ludHMgaW4gdGhlIGxpbmUuIn0se25hbWU6Im5vcm1hbCIsZGVzY3JpcHRpb246IkxpbmVzIG1heSBicmVhayBvbmx5IGF0IGFsbG93ZWQgYnJlYWsgcG9pbnRzLiJ9XSxzeW50YXg6Im5vcm1hbCB8IGJyZWFrLXdvcmQiLHJlbGV2YW5jZTo3NyxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHdoZXRoZXIgdGhlIFVBIG1heSBicmVhayB3aXRoaW4gYSB3b3JkIHRvIHByZXZlbnQgb3ZlcmZsb3cgd2hlbiBhbiBvdGhlcndpc2UtdW5icmVha2FibGUgc3RyaW5nIGlzIHRvbyBsb25nIHRvIGZpdC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6IndyaXRpbmctbW9kZSIsYnJvd3NlcnM6WyJFMTIiLCJGRjQxIiwiUzEwLjEiLCJDNDgiLCJJRTkiLCJPMzUiXSx2YWx1ZXM6W3tuYW1lOiJob3Jpem9udGFsLXRiIixkZXNjcmlwdGlvbjoiVG9wLXRvLWJvdHRvbSBibG9jayBmbG93IGRpcmVjdGlvbi4gVGhlIHdyaXRpbmcgbW9kZSBpcyBob3Jpem9udGFsLiJ9LHtuYW1lOiJzaWRld2F5cy1sciIsYnJvd3NlcnM6WyJFMTIiLCJGRjQxIiwiUzEwLjEiLCJDNDgiLCJJRTkiLCJPMzUiXSxkZXNjcmlwdGlvbjoiTGVmdC10by1yaWdodCBibG9jayBmbG93IGRpcmVjdGlvbi4gVGhlIHdyaXRpbmcgbW9kZSBpcyB2ZXJ0aWNhbCwgd2hpbGUgdGhlIHR5cG9ncmFwaGljIG1vZGUgaXMgaG9yaXpvbnRhbC4ifSx7bmFtZToic2lkZXdheXMtcmwiLGJyb3dzZXJzOlsiRTEyIiwiRkY0MSIsIlMxMC4xIiwiQzQ4IiwiSUU5IiwiTzM1Il0sZGVzY3JpcHRpb246IlJpZ2h0LXRvLWxlZnQgYmxvY2sgZmxvdyBkaXJlY3Rpb24uIFRoZSB3cml0aW5nIG1vZGUgaXMgdmVydGljYWwsIHdoaWxlIHRoZSB0eXBvZ3JhcGhpYyBtb2RlIGlzIGhvcml6b250YWwuIn0se25hbWU6InZlcnRpY2FsLWxyIixkZXNjcmlwdGlvbjoiTGVmdC10by1yaWdodCBibG9jayBmbG93IGRpcmVjdGlvbi4gVGhlIHdyaXRpbmcgbW9kZSBpcyB2ZXJ0aWNhbC4ifSx7bmFtZToidmVydGljYWwtcmwiLGRlc2NyaXB0aW9uOiJSaWdodC10by1sZWZ0IGJsb2NrIGZsb3cgZGlyZWN0aW9uLiBUaGUgd3JpdGluZyBtb2RlIGlzIHZlcnRpY2FsLiJ9XSxzeW50YXg6Imhvcml6b250YWwtdGIgfCB2ZXJ0aWNhbC1ybCB8IHZlcnRpY2FsLWxyIHwgc2lkZXdheXMtcmwgfCBzaWRld2F5cy1sciIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy93cml0aW5nLW1vZGUifV0sZGVzY3JpcHRpb246IlRoaXMgaXMgYSBzaG9ydGhhbmQgcHJvcGVydHkgZm9yIGJvdGggJ2RpcmVjdGlvbicgYW5kICdibG9jay1wcm9ncmVzc2lvbicuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJ6LWluZGV4Iixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxIiwiQzEiLCJJRTQiLCJPNCJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJUaGUgc3RhY2sgbGV2ZWwgb2YgdGhlIGdlbmVyYXRlZCBib3ggaW4gdGhlIGN1cnJlbnQgc3RhY2tpbmcgY29udGV4dCBpcyAwLiBUaGUgYm94IGRvZXMgbm90IGVzdGFibGlzaCBhIG5ldyBzdGFja2luZyBjb250ZXh0IHVubGVzcyBpdCBpcyB0aGUgcm9vdCBlbGVtZW50LiJ9XSxzeW50YXg6ImF1dG8gfCA8aW50ZWdlcj4iLHJlbGV2YW5jZTo5MixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvei1pbmRleCJ9XSxkZXNjcmlwdGlvbjoiRm9yIGEgcG9zaXRpb25lZCBib3gsIHRoZSAnei1pbmRleCcgcHJvcGVydHkgc3BlY2lmaWVzIHRoZSBzdGFjayBsZXZlbCBvZiB0aGUgYm94IGluIHRoZSBjdXJyZW50IHN0YWNraW5nIGNvbnRleHQgYW5kIHdoZXRoZXIgdGhlIGJveCBlc3RhYmxpc2hlcyBhIGxvY2FsIHN0YWNraW5nIGNvbnRleHQuIixyZXN0cmljdGlvbnM6WyJpbnRlZ2VyIl19LHtuYW1lOiJ6b29tIixicm93c2VyczpbIkUxMiIsIkZGcHJldmlldyIsIlMzLjEiLCJDMSIsIklFNS41IiwiTzE1Il0sdmFsdWVzOlt7bmFtZToibm9ybWFsIn1dLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoibm9ybWFsIHwgcmVzZXQgfCA8bnVtYmVyPiB8IDxwZXJjZW50YWdlPiIscmVsZXZhbmNlOjE1LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy96b29tIn1dLGRlc2NyaXB0aW9uOiJOb24tc3RhbmRhcmQuIFNwZWNpZmllcyB0aGUgbWFnbmlmaWNhdGlvbiBzY2FsZSBvZiB0aGUgb2JqZWN0LiBTZWUgJ3RyYW5zZm9ybTogc2NhbGUoKScgZm9yIGEgc3RhbmRhcmRzLWJhc2VkIGFsdGVybmF0aXZlLiIscmVzdHJpY3Rpb25zOlsiZW51bSIsImludGVnZXIiLCJudW1iZXIiLCJwZXJjZW50YWdlIl19LHtuYW1lOiItbXMtaW1lLWFsaWduIixzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6ImF1dG8gfCBhZnRlciIsdmFsdWVzOlt7bmFtZToiYXV0byJ9LHtuYW1lOiJhZnRlciJ9XSxyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiQWxpZ25zIHRoZSBJbnB1dCBNZXRob2QgRWRpdG9yIChJTUUpIGNhbmRpZGF0ZSB3aW5kb3cgYm94IHJlbGF0aXZlIHRvIHRoZSBlbGVtZW50IG9uIHdoaWNoIHRoZSBJTUUgY29tcG9zaXRpb24gaXMgYWN0aXZlLiJ9LHtuYW1lOiItbW96LWJpbmRpbmciLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiPHVybD4gfCBub25lIixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiVGhlIC1tb3otYmluZGluZyBDU1MgcHJvcGVydHkgaXMgdXNlZCBieSBNb3ppbGxhLWJhc2VkIGFwcGxpY2F0aW9ucyB0byBhdHRhY2ggYW4gWEJMIGJpbmRpbmcgdG8gYSBET00gZWxlbWVudC4ifSx7bmFtZToiLW1vei1jb250ZXh0LXByb3BlcnRpZXMiLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoibm9uZSB8IFsgZmlsbCB8IGZpbGwtb3BhY2l0eSB8IHN0cm9rZSB8IHN0cm9rZS1vcGFjaXR5IF0jIixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjpgSWYgeW91IHJlZmVyZW5jZSBhbiBTVkcgaW1hZ2UgaW4gYSB3ZWJwYWdlIChzdWNoIGFzIHdpdGggdGhlIDxpbWc+IGVsZW1lbnQgb3IgYXMgYSBiYWNrZ3JvdW5kIGltYWdlKSwgdGhlIFNWRyBpbWFnZSBjYW4gY29vcmRpbmF0ZSB3aXRoIHRoZSBlbWJlZGRpbmcgZWxlbWVudCAoaXRzIGNvbnRleHQpIHRvIGhhdmUgdGhlIGltYWdlIGFkb3B0IHByb3BlcnR5IHZhbHVlcyBzZXQgb24gdGhlIGVtYmVkZGluZyBlbGVtZW50LiBUbyBkbyB0aGlzIHRoZSBlbWJlZGRpbmcgZWxlbWVudCBuZWVkcyB0byBsaXN0IHRoZSBwcm9wZXJ0aWVzIHRoYXQgYXJlIHRvIGJlIG1hZGUgYXZhaWxhYmxlIHRvIHRoZSBpbWFnZSBieSBsaXN0aW5nIHRoZW0gYXMgdmFsdWVzIG9mIHRoZSAtbW96LWNvbnRleHQtcHJvcGVydGllcyBwcm9wZXJ0eSwgYW5kIHRoZSBpbWFnZSBuZWVkcyB0byBvcHQgaW4gdG8gdXNpbmcgdGhvc2UgcHJvcGVydGllcyBieSB1c2luZyB2YWx1ZXMgc3VjaCBhcyB0aGUgY29udGV4dC1maWxsIHZhbHVlLgoKVGhpcyBmZWF0dXJlIGlzIGF2YWlsYWJsZSBzaW5jZSBGaXJlZm94IDU1LCBidXQgaXMgb25seSBjdXJyZW50bHkgc3VwcG9ydGVkIHdpdGggU1ZHIGltYWdlcyBsb2FkZWQgdmlhIGNocm9tZTovLyBvciByZXNvdXJjZTovLyBVUkxzLiBUbyBleHBlcmltZW50IHdpdGggdGhlIGZlYXR1cmUgaW4gU1ZHIG9uIHRoZSBXZWIgaXQgaXMgbmVjZXNzYXJ5IHRvIHNldCB0aGUgc3ZnLmNvbnRleHQtcHJvcGVydGllcy5jb250ZW50LmVuYWJsZWQgcHJlZiB0byB0cnVlLmB9LHtuYW1lOiItbW96LWZsb2F0LWVkZ2UiLHN0YXR1czoib2Jzb2xldGUiLHN5bnRheDoiYm9yZGVyLWJveCB8IGNvbnRlbnQtYm94IHwgbWFyZ2luLWJveCB8IHBhZGRpbmctYm94Iix2YWx1ZXM6W3tuYW1lOiJib3JkZXItYm94In0se25hbWU6ImNvbnRlbnQtYm94In0se25hbWU6Im1hcmdpbi1ib3gifSx7bmFtZToicGFkZGluZy1ib3gifV0scmVsZXZhbmNlOjAsYnJvd3NlcnM6WyJGRjEiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvLW1vei1mbG9hdC1lZGdlIn1dLGRlc2NyaXB0aW9uOiJUaGUgbm9uLXN0YW5kYXJkIC1tb3otZmxvYXQtZWRnZSBDU1MgcHJvcGVydHkgc3BlY2lmaWVzIHdoZXRoZXIgdGhlIGhlaWdodCBhbmQgd2lkdGggcHJvcGVydGllcyBvZiB0aGUgZWxlbWVudCBpbmNsdWRlIHRoZSBtYXJnaW4sIGJvcmRlciwgb3IgcGFkZGluZyB0aGlja25lc3MuIn0se25hbWU6Ii1tb3otZm9yY2UtYnJva2VuLWltYWdlLWljb24iLHN0YXR1czoib2Jzb2xldGUiLHN5bnRheDoiMCB8IDEiLHZhbHVlczpbe25hbWU6IjAifSx7bmFtZToiMSJ9XSxyZWxldmFuY2U6MCxicm93c2VyczpbIkZGMSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy8tbW96LWZvcmNlLWJyb2tlbi1pbWFnZS1pY29uIn1dLGRlc2NyaXB0aW9uOiJUaGUgLW1vei1mb3JjZS1icm9rZW4taW1hZ2UtaWNvbiBleHRlbmRlZCBDU1MgcHJvcGVydHkgY2FuIGJlIHVzZWQgdG8gZm9yY2UgdGhlIGJyb2tlbiBpbWFnZSBpY29uIHRvIGJlIHNob3duIGV2ZW4gd2hlbiBhIGJyb2tlbiBpbWFnZSBoYXMgYW4gYWx0IGF0dHJpYnV0ZS4ifSx7bmFtZToiLW1vei1pbWFnZS1yZWdpb24iLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiPHNoYXBlPiB8IGF1dG8iLHJlbGV2YW5jZTowLGJyb3dzZXJzOlsiRkYxIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLy1tb3otaW1hZ2UtcmVnaW9uIn1dLGRlc2NyaXB0aW9uOiJGb3IgY2VydGFpbiBYVUwgZWxlbWVudHMgYW5kIHBzZXVkby1lbGVtZW50cyB0aGF0IHVzZSBhbiBpbWFnZSBmcm9tIHRoZSBsaXN0LXN0eWxlLWltYWdlIHByb3BlcnR5LCB0aGlzIHByb3BlcnR5IHNwZWNpZmllcyBhIHJlZ2lvbiBvZiB0aGUgaW1hZ2UgdGhhdCBpcyB1c2VkIGluIHBsYWNlIG9mIHRoZSB3aG9sZSBpbWFnZS4gVGhpcyBhbGxvd3MgZWxlbWVudHMgdG8gdXNlIGRpZmZlcmVudCBwaWVjZXMgb2YgdGhlIHNhbWUgaW1hZ2UgdG8gaW1wcm92ZSBwZXJmb3JtYW5jZS4ifSx7bmFtZToiLW1vei1vcmllbnQiLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiaW5saW5lIHwgYmxvY2sgfCBob3Jpem9udGFsIHwgdmVydGljYWwiLHZhbHVlczpbe25hbWU6ImlubGluZSJ9LHtuYW1lOiJibG9jayJ9LHtuYW1lOiJob3Jpem9udGFsIn0se25hbWU6InZlcnRpY2FsIn1dLHJlbGV2YW5jZTowLGJyb3dzZXJzOlsiRkY2Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLy1tb3otb3JpZW50In1dLGRlc2NyaXB0aW9uOiJUaGUgLW1vei1vcmllbnQgQ1NTIHByb3BlcnR5IHNwZWNpZmllcyB0aGUgb3JpZW50YXRpb24gb2YgdGhlIGVsZW1lbnQgdG8gd2hpY2ggaXQncyBhcHBsaWVkLiJ9LHtuYW1lOiItbW96LW91dGxpbmUtcmFkaXVzIixzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6IjxvdXRsaW5lLXJhZGl1cz57MSw0fSBbIC8gPG91dGxpbmUtcmFkaXVzPnsxLDR9IF0/IixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiSW4gTW96aWxsYSBhcHBsaWNhdGlvbnMgbGlrZSBGaXJlZm94LCB0aGUgLW1vei1vdXRsaW5lLXJhZGl1cyBDU1MgcHJvcGVydHkgY2FuIGJlIHVzZWQgdG8gZ2l2ZSBhbiBlbGVtZW50J3Mgb3V0bGluZSByb3VuZGVkIGNvcm5lcnMuIn0se25hbWU6Ii1tb3otb3V0bGluZS1yYWRpdXMtYm90dG9tbGVmdCIsc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiI8b3V0bGluZS1yYWRpdXM+IixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiSW4gTW96aWxsYSBhcHBsaWNhdGlvbnMsIHRoZSAtbW96LW91dGxpbmUtcmFkaXVzLWJvdHRvbWxlZnQgQ1NTIHByb3BlcnR5IGNhbiBiZSB1c2VkIHRvIHJvdW5kIHRoZSBib3R0b20tbGVmdCBjb3JuZXIgb2YgYW4gZWxlbWVudCdzIG91dGxpbmUuIn0se25hbWU6Ii1tb3otb3V0bGluZS1yYWRpdXMtYm90dG9tcmlnaHQiLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiPG91dGxpbmUtcmFkaXVzPiIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246IkluIE1vemlsbGEgYXBwbGljYXRpb25zLCB0aGUgLW1vei1vdXRsaW5lLXJhZGl1cy1ib3R0b21yaWdodCBDU1MgcHJvcGVydHkgY2FuIGJlIHVzZWQgdG8gcm91bmQgdGhlIGJvdHRvbS1yaWdodCBjb3JuZXIgb2YgYW4gZWxlbWVudCdzIG91dGxpbmUuIn0se25hbWU6Ii1tb3otb3V0bGluZS1yYWRpdXMtdG9wbGVmdCIsc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiI8b3V0bGluZS1yYWRpdXM+IixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiSW4gTW96aWxsYSBhcHBsaWNhdGlvbnMsIHRoZSAtbW96LW91dGxpbmUtcmFkaXVzLXRvcGxlZnQgQ1NTIHByb3BlcnR5IGNhbiBiZSB1c2VkIHRvIHJvdW5kIHRoZSB0b3AtbGVmdCBjb3JuZXIgb2YgYW4gZWxlbWVudCdzIG91dGxpbmUuIn0se25hbWU6Ii1tb3otb3V0bGluZS1yYWRpdXMtdG9wcmlnaHQiLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiPG91dGxpbmUtcmFkaXVzPiIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246IkluIE1vemlsbGEgYXBwbGljYXRpb25zLCB0aGUgLW1vei1vdXRsaW5lLXJhZGl1cy10b3ByaWdodCBDU1MgcHJvcGVydHkgY2FuIGJlIHVzZWQgdG8gcm91bmQgdGhlIHRvcC1yaWdodCBjb3JuZXIgb2YgYW4gZWxlbWVudCdzIG91dGxpbmUuIn0se25hbWU6Ii1tb3otc3RhY2stc2l6aW5nIixzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6Imlnbm9yZSB8IHN0cmV0Y2gtdG8tZml0Iix2YWx1ZXM6W3tuYW1lOiJpZ25vcmUifSx7bmFtZToic3RyZXRjaC10by1maXQifV0scmVsZXZhbmNlOjAsZGVzY3JpcHRpb246Ii1tb3otc3RhY2stc2l6aW5nIGlzIGFuIGV4dGVuZGVkIENTUyBwcm9wZXJ0eS4gTm9ybWFsbHksIGEgc3RhY2sgd2lsbCBjaGFuZ2UgaXRzIHNpemUgc28gdGhhdCBhbGwgb2YgaXRzIGNoaWxkIGVsZW1lbnRzIGFyZSBjb21wbGV0ZWx5IHZpc2libGUuIEZvciBleGFtcGxlLCBtb3ZpbmcgYSBjaGlsZCBvZiB0aGUgc3RhY2sgZmFyIHRvIHRoZSByaWdodCB3aWxsIHdpZGVuIHRoZSBzdGFjayBzbyB0aGUgY2hpbGQgcmVtYWlucyB2aXNpYmxlLiJ9LHtuYW1lOiItbW96LXRleHQtYmxpbmsiLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoibm9uZSB8IGJsaW5rIix2YWx1ZXM6W3tuYW1lOiJub25lIn0se25hbWU6ImJsaW5rIn1dLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJUaGUgLW1vei10ZXh0LWJsaW5rIG5vbi1zdGFuZGFyZCBNb3ppbGxhIENTUyBleHRlbnNpb24gc3BlY2lmaWVzIHRoZSBibGluayBtb2RlLiJ9LHtuYW1lOiItbW96LXVzZXItaW5wdXQiLHN0YXR1czoib2Jzb2xldGUiLHN5bnRheDoiYXV0byB8IG5vbmUgfCBlbmFibGVkIHwgZGlzYWJsZWQiLHZhbHVlczpbe25hbWU6ImF1dG8ifSx7bmFtZToibm9uZSJ9LHtuYW1lOiJlbmFibGVkIn0se25hbWU6ImRpc2FibGVkIn1dLHJlbGV2YW5jZTowLGJyb3dzZXJzOlsiRkYxIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLy1tb3otdXNlci1pbnB1dCJ9XSxkZXNjcmlwdGlvbjoiSW4gTW96aWxsYSBhcHBsaWNhdGlvbnMsIC1tb3otdXNlci1pbnB1dCBkZXRlcm1pbmVzIGlmIGFuIGVsZW1lbnQgd2lsbCBhY2NlcHQgdXNlciBpbnB1dC4ifSx7bmFtZToiLW1vei11c2VyLW1vZGlmeSIsc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiJyZWFkLW9ubHkgfCByZWFkLXdyaXRlIHwgd3JpdGUtb25seSIsdmFsdWVzOlt7bmFtZToicmVhZC1vbmx5In0se25hbWU6InJlYWQtd3JpdGUifSx7bmFtZToid3JpdGUtb25seSJ9XSxyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiVGhlIC1tb3otdXNlci1tb2RpZnkgcHJvcGVydHkgaGFzIG5vIGVmZmVjdC4gSXQgd2FzIG9yaWdpbmFsbHkgcGxhbm5lZCB0byBkZXRlcm1pbmUgd2hldGhlciBvciBub3QgdGhlIGNvbnRlbnQgb2YgYW4gZWxlbWVudCBjYW4gYmUgZWRpdGVkIGJ5IGEgdXNlci4ifSx7bmFtZToiLW1vei13aW5kb3ctZHJhZ2dpbmciLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiZHJhZyB8IG5vLWRyYWciLHZhbHVlczpbe25hbWU6ImRyYWcifSx7bmFtZToibm8tZHJhZyJ9XSxyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiVGhlIC1tb3otd2luZG93LWRyYWdnaW5nIENTUyBwcm9wZXJ0eSBzcGVjaWZpZXMgd2hldGhlciBhIHdpbmRvdyBpcyBkcmFnZ2FibGUgb3Igbm90LiBJdCBvbmx5IHdvcmtzIGluIENocm9tZSBjb2RlLCBhbmQgb25seSBvbiBNYWMgT1MgWC4ifSx7bmFtZToiLW1vei13aW5kb3ctc2hhZG93IixzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6ImRlZmF1bHQgfCBtZW51IHwgdG9vbHRpcCB8IHNoZWV0IHwgbm9uZSIsdmFsdWVzOlt7bmFtZToiZGVmYXVsdCJ9LHtuYW1lOiJtZW51In0se25hbWU6InRvb2x0aXAifSx7bmFtZToic2hlZXQifSx7bmFtZToibm9uZSJ9XSxyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiVGhlIC1tb3otd2luZG93LXNoYWRvdyBDU1MgcHJvcGVydHkgc3BlY2lmaWVzIHdoZXRoZXIgYSB3aW5kb3cgd2lsbCBoYXZlIGEgc2hhZG93LiBJdCBvbmx5IHdvcmtzIG9uIE1hYyBPUyBYLiJ9LHtuYW1lOiItd2Via2l0LWJvcmRlci1iZWZvcmUiLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiPCdib3JkZXItd2lkdGgnPiB8fCA8J2JvcmRlci1zdHlsZSc+IHx8IDxjb2xvcj4iLHJlbGV2YW5jZTowLGJyb3dzZXJzOlsiRTc5IiwiUzUuMSIsIkM4IiwiTzE1Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLy13ZWJraXQtYm9yZGVyLWJlZm9yZSJ9XSxkZXNjcmlwdGlvbjoiVGhlIC13ZWJraXQtYm9yZGVyLWJlZm9yZSBDU1MgcHJvcGVydHkgaXMgYSBzaG9ydGhhbmQgcHJvcGVydHkgZm9yIHNldHRpbmcgdGhlIGluZGl2aWR1YWwgbG9naWNhbCBibG9jayBzdGFydCBib3JkZXIgcHJvcGVydHkgdmFsdWVzIGluIGEgc2luZ2xlIHBsYWNlIGluIHRoZSBzdHlsZSBzaGVldC4ifSx7bmFtZToiLXdlYmtpdC1ib3JkZXItYmVmb3JlLWNvbG9yIixzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6Ijxjb2xvcj4iLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJUaGUgLXdlYmtpdC1ib3JkZXItYmVmb3JlLWNvbG9yIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBjb2xvciBvZiB0aGUgaW5kaXZpZHVhbCBsb2dpY2FsIGJsb2NrIHN0YXJ0IGJvcmRlciBpbiBhIHNpbmdsZSBwbGFjZSBpbiB0aGUgc3R5bGUgc2hlZXQuIn0se25hbWU6Ii13ZWJraXQtYm9yZGVyLWJlZm9yZS1zdHlsZSIsc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiI8J2JvcmRlci1zdHlsZSc+IixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiVGhlIC13ZWJraXQtYm9yZGVyLWJlZm9yZS1zdHlsZSBDU1MgcHJvcGVydHkgc2V0cyB0aGUgc3R5bGUgb2YgdGhlIGluZGl2aWR1YWwgbG9naWNhbCBibG9jayBzdGFydCBib3JkZXIgaW4gYSBzaW5nbGUgcGxhY2UgaW4gdGhlIHN0eWxlIHNoZWV0LiJ9LHtuYW1lOiItd2Via2l0LWJvcmRlci1iZWZvcmUtd2lkdGgiLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiPCdib3JkZXItd2lkdGgnPiIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246IlRoZSAtd2Via2l0LWJvcmRlci1iZWZvcmUtd2lkdGggQ1NTIHByb3BlcnR5IHNldHMgdGhlIHdpZHRoIG9mIHRoZSBpbmRpdmlkdWFsIGxvZ2ljYWwgYmxvY2sgc3RhcnQgYm9yZGVyIGluIGEgc2luZ2xlIHBsYWNlIGluIHRoZSBzdHlsZSBzaGVldC4ifSx7bmFtZToiLXdlYmtpdC1saW5lLWNsYW1wIixzeW50YXg6Im5vbmUgfCA8aW50ZWdlcj4iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkUxNyIsIkZGNjgiLCJTNSIsIkM2IiwiTzE1Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLy13ZWJraXQtbGluZS1jbGFtcCJ9XSxkZXNjcmlwdGlvbjoiVGhlIC13ZWJraXQtbGluZS1jbGFtcCBDU1MgcHJvcGVydHkgYWxsb3dzIGxpbWl0aW5nIG9mIHRoZSBjb250ZW50cyBvZiBhIGJsb2NrIGNvbnRhaW5lciB0byB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBsaW5lcy4ifSx7bmFtZToiLXdlYmtpdC1tYXNrIixzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6IlsgPG1hc2stcmVmZXJlbmNlPiB8fCA8cG9zaXRpb24+IFsgLyA8Ymctc2l6ZT4gXT8gfHwgPHJlcGVhdC1zdHlsZT4gfHwgWyA8Ym94PiB8IGJvcmRlciB8IHBhZGRpbmcgfCBjb250ZW50IHwgdGV4dCBdIHx8IFsgPGJveD4gfCBib3JkZXIgfCBwYWRkaW5nIHwgY29udGVudCBdIF0jIixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiVGhlIG1hc2sgQ1NTIHByb3BlcnR5IGFsdGVycyB0aGUgdmlzaWJpbGl0eSBvZiBhbiBlbGVtZW50IGJ5IGVpdGhlciBwYXJ0aWFsbHkgb3IgZnVsbHkgaGlkaW5nIGl0LiBUaGlzIGlzIGFjY29tcGxpc2hlZCBieSBlaXRoZXIgbWFza2luZyBvciBjbGlwcGluZyB0aGUgaW1hZ2UgYXQgc3BlY2lmaWMgcG9pbnRzLiJ9LHtuYW1lOiItd2Via2l0LW1hc2stYXR0YWNobWVudCIsc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiI8YXR0YWNobWVudD4jIixyZWxldmFuY2U6MCxicm93c2VyczpbIlM0IiwiQzEiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvLXdlYmtpdC1tYXNrLWF0dGFjaG1lbnQifV0sZGVzY3JpcHRpb246IklmIGEgLXdlYmtpdC1tYXNrLWltYWdlIGlzIHNwZWNpZmllZCwgLXdlYmtpdC1tYXNrLWF0dGFjaG1lbnQgZGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBtYXNrIGltYWdlJ3MgcG9zaXRpb24gaXMgZml4ZWQgd2l0aGluIHRoZSB2aWV3cG9ydCwgb3Igc2Nyb2xscyBhbG9uZyB3aXRoIGl0cyBjb250YWluaW5nIGJsb2NrLiJ9LHtuYW1lOiItd2Via2l0LW1hc2stY29tcG9zaXRlIixzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6Ijxjb21wb3NpdGUtc3R5bGU+IyIscmVsZXZhbmNlOjAsYnJvd3NlcnM6WyJFMTgiLCJTMy4xIiwiQzEiLCJPMTUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvLXdlYmtpdC1tYXNrLWNvbXBvc2l0ZSJ9XSxkZXNjcmlwdGlvbjoiVGhlIC13ZWJraXQtbWFzay1jb21wb3NpdGUgcHJvcGVydHkgc3BlY2lmaWVzIHRoZSBtYW5uZXIgaW4gd2hpY2ggbXVsdGlwbGUgbWFzayBpbWFnZXMgYXBwbGllZCB0byB0aGUgc2FtZSBlbGVtZW50IGFyZSBjb21wb3NpdGVkIHdpdGggb25lIGFub3RoZXIuIE1hc2sgaW1hZ2VzIGFyZSBjb21wb3NpdGVkIGluIHRoZSBvcHBvc2l0ZSBvcmRlciB0aGF0IHRoZXkgYXJlIGRlY2xhcmVkIHdpdGggdGhlIC13ZWJraXQtbWFzay1pbWFnZSBwcm9wZXJ0eS4ifSx7bmFtZToiLXdlYmtpdC1tYXNrLXBvc2l0aW9uIixzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6Ijxwb3NpdGlvbj4jIixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiVGhlIG1hc2stcG9zaXRpb24gQ1NTIHByb3BlcnR5IHNldHMgdGhlIGluaXRpYWwgcG9zaXRpb24sIHJlbGF0aXZlIHRvIHRoZSBtYXNrIHBvc2l0aW9uIGxheWVyIGRlZmluZWQgYnkgbWFzay1vcmlnaW4sIGZvciBlYWNoIGRlZmluZWQgbWFzayBpbWFnZS4ifSx7bmFtZToiLXdlYmtpdC1tYXNrLXBvc2l0aW9uLXgiLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiWyA8bGVuZ3RoLXBlcmNlbnRhZ2U+IHwgbGVmdCB8IGNlbnRlciB8IHJpZ2h0IF0jIixyZWxldmFuY2U6MCxicm93c2VyczpbIkUxOCIsIkZGNDkiLCJTMy4xIiwiQzEiLCJPMTUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvLXdlYmtpdC1tYXNrLXBvc2l0aW9uLXgifV0sZGVzY3JpcHRpb246IlRoZSAtd2Via2l0LW1hc2stcG9zaXRpb24teCBDU1MgcHJvcGVydHkgc2V0cyB0aGUgaW5pdGlhbCBob3Jpem9udGFsIHBvc2l0aW9uIG9mIGEgbWFzayBpbWFnZS4ifSx7bmFtZToiLXdlYmtpdC1tYXNrLXBvc2l0aW9uLXkiLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiWyA8bGVuZ3RoLXBlcmNlbnRhZ2U+IHwgdG9wIHwgY2VudGVyIHwgYm90dG9tIF0jIixyZWxldmFuY2U6MCxicm93c2VyczpbIkUxOCIsIkZGNDkiLCJTMy4xIiwiQzEiLCJPMTUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvLXdlYmtpdC1tYXNrLXBvc2l0aW9uLXkifV0sZGVzY3JpcHRpb246IlRoZSAtd2Via2l0LW1hc2stcG9zaXRpb24teSBDU1MgcHJvcGVydHkgc2V0cyB0aGUgaW5pdGlhbCB2ZXJ0aWNhbCBwb3NpdGlvbiBvZiBhIG1hc2sgaW1hZ2UuIn0se25hbWU6Ii13ZWJraXQtbWFzay1yZXBlYXQteCIsc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiJyZXBlYXQgfCBuby1yZXBlYXQgfCBzcGFjZSB8IHJvdW5kIix2YWx1ZXM6W3tuYW1lOiJyZXBlYXQifSx7bmFtZToibm8tcmVwZWF0In0se25hbWU6InNwYWNlIn0se25hbWU6InJvdW5kIn1dLHJlbGV2YW5jZTowLGJyb3dzZXJzOlsiRTc5IiwiUzUiLCJDMyIsIk8xNSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy8td2Via2l0LW1hc2stcmVwZWF0LXgifV0sZGVzY3JpcHRpb246IlRoZSAtd2Via2l0LW1hc2stcmVwZWF0LXggcHJvcGVydHkgc3BlY2lmaWVzIHdoZXRoZXIgYW5kIGhvdyBhIG1hc2sgaW1hZ2UgaXMgcmVwZWF0ZWQgKHRpbGVkKSBob3Jpem9udGFsbHkuIn0se25hbWU6Ii13ZWJraXQtbWFzay1yZXBlYXQteSIsc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiJyZXBlYXQgfCBuby1yZXBlYXQgfCBzcGFjZSB8IHJvdW5kIix2YWx1ZXM6W3tuYW1lOiJyZXBlYXQifSx7bmFtZToibm8tcmVwZWF0In0se25hbWU6InNwYWNlIn0se25hbWU6InJvdW5kIn1dLHJlbGV2YW5jZTowLGJyb3dzZXJzOlsiRTc5IiwiUzUiLCJDMyIsIk8xNSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy8td2Via2l0LW1hc2stcmVwZWF0LXkifV0sZGVzY3JpcHRpb246IlRoZSAtd2Via2l0LW1hc2stcmVwZWF0LXkgcHJvcGVydHkgc3BlY2lmaWVzIHdoZXRoZXIgYW5kIGhvdyBhIG1hc2sgaW1hZ2UgaXMgcmVwZWF0ZWQgKHRpbGVkKSB2ZXJ0aWNhbGx5LiJ9LHtuYW1lOiJhY2NlbnQtY29sb3IiLHN5bnRheDoiYXV0byB8IDxjb2xvcj4iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU5MyIsIkZGOTIiLCJTMTUuNCIsIkM5MyIsIk83OSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9hY2NlbnQtY29sb3IifV0sZGVzY3JpcHRpb246IlNldHMgdGhlIGNvbG9yIG9mIHRoZSBlbGVtZW50cyBhY2NlbnQifSx7bmFtZToiYWxpZ24tdHJhY2tzIixzdGF0dXM6ImV4cGVyaW1lbnRhbCIsc3ludGF4OiJbIG5vcm1hbCB8IDxiYXNlbGluZS1wb3NpdGlvbj4gfCA8Y29udGVudC1kaXN0cmlidXRpb24+IHwgPG92ZXJmbG93LXBvc2l0aW9uPj8gPGNvbnRlbnQtcG9zaXRpb24+IF0jIixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJGRjc3Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2FsaWduLXRyYWNrcyJ9XSxkZXNjcmlwdGlvbjoiVGhlIGFsaWduLXRyYWNrcyBDU1MgcHJvcGVydHkgc2V0cyB0aGUgYWxpZ25tZW50IGluIHRoZSBtYXNvbnJ5IGF4aXMgZm9yIGdyaWQgY29udGFpbmVycyB0aGF0IGhhdmUgbWFzb25yeSBpbiB0aGVpciBibG9jayBheGlzLiJ9LHtuYW1lOiJhbmltYXRpb24tY29tcG9zaXRpb24iLHN5bnRheDoiPHNpbmdsZS1hbmltYXRpb24tY29tcG9zaXRpb24+IyIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTExMiIsIkZGMTE1IiwiUzE2IiwiQzExMiIsIk85OCJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9hbmltYXRpb24tY29tcG9zaXRpb24ifV0sZGVzY3JpcHRpb246IlRoZSBjb21wb3NpdGUgb3BlcmF0aW9uIHRvIHVzZSB3aGVuIG11bHRpcGxlIGFuaW1hdGlvbnMgYWZmZWN0IHRoZSBzYW1lIHByb3BlcnR5LiJ9LHtuYW1lOiJhbmltYXRpb24tcmFuZ2UiLHN0YXR1czoiZXhwZXJpbWVudGFsIixzeW50YXg6IlsgPCdhbmltYXRpb24tcmFuZ2Utc3RhcnQnPiA8J2FuaW1hdGlvbi1yYW5nZS1lbmQnPj8gXSMiLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkUxMTUiLCJDMTE1IiwiTzEwMSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9hbmltYXRpb24tcmFuZ2UifV0sZGVzY3JpcHRpb246IlRoZSBhbmltYXRpb24tcmFuZ2UgQ1NTIHNob3J0aGFuZCBwcm9wZXJ0eSBpcyB1c2VkIHRvIHNldCB0aGUgc3RhcnQgYW5kIGVuZCBvZiBhbiBhbmltYXRpb24ncyBhdHRhY2htZW50IHJhbmdlIGFsb25nIGl0cyB0aW1lbGluZSwgaS5lLiB3aGVyZSBhbG9uZyB0aGUgdGltZWxpbmUgYW4gYW5pbWF0aW9uIHdpbGwgc3RhcnQgYW5kIGVuZC4ifSx7bmFtZToiYW5pbWF0aW9uLXJhbmdlLWVuZCIsc3RhdHVzOiJleHBlcmltZW50YWwiLHN5bnRheDoiWyBub3JtYWwgfCA8bGVuZ3RoLXBlcmNlbnRhZ2U+IHwgPHRpbWVsaW5lLXJhbmdlLW5hbWU+IDxsZW5ndGgtcGVyY2VudGFnZT4/IF0jIixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFMTE1IiwiQzExNSIsIk8xMDEiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYW5pbWF0aW9uLXJhbmdlLWVuZCJ9XSxkZXNjcmlwdGlvbjoiVGhlIGFuaW1hdGlvbi1yYW5nZS1lbmQgQ1NTIHByb3BlcnR5IGlzIHVzZWQgdG8gc2V0IHRoZSBlbmQgb2YgYW4gYW5pbWF0aW9uJ3MgYXR0YWNobWVudCByYW5nZSBhbG9uZyBpdHMgdGltZWxpbmUsIGkuZS4gd2hlcmUgYWxvbmcgdGhlIHRpbWVsaW5lIGFuIGFuaW1hdGlvbiB3aWxsIGVuZC4ifSx7bmFtZToiYW5pbWF0aW9uLXJhbmdlLXN0YXJ0IixzdGF0dXM6ImV4cGVyaW1lbnRhbCIsc3ludGF4OiJbIG5vcm1hbCB8IDxsZW5ndGgtcGVyY2VudGFnZT4gfCA8dGltZWxpbmUtcmFuZ2UtbmFtZT4gPGxlbmd0aC1wZXJjZW50YWdlPj8gXSMiLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkUxMTUiLCJDMTE1IiwiTzEwMSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9hbmltYXRpb24tcmFuZ2Utc3RhcnQifV0sZGVzY3JpcHRpb246IlRoZSBhbmltYXRpb24tcmFuZ2Utc3RhcnQgQ1NTIHByb3BlcnR5IGlzIHVzZWQgdG8gc2V0IHRoZSBzdGFydCBvZiBhbiBhbmltYXRpb24ncyBhdHRhY2htZW50IHJhbmdlIGFsb25nIGl0cyB0aW1lbGluZSwgaS5lLiB3aGVyZSBhbG9uZyB0aGUgdGltZWxpbmUgYW4gYW5pbWF0aW9uIHdpbGwgc3RhcnQuIn0se25hbWU6ImFuaW1hdGlvbi10aW1lbGluZSIsc3RhdHVzOiJleHBlcmltZW50YWwiLHN5bnRheDoiPHNpbmdsZS1hbmltYXRpb24tdGltZWxpbmU+IyIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTExNSIsIkZGMTEwIiwiQzExNSIsIk8xMDEiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYW5pbWF0aW9uLXRpbWVsaW5lIn1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhlIG5hbWVzIG9mIG9uZSBvciBtb3JlIEBzY3JvbGwtdGltZWxpbmUgYXQtcnVsZXMgdG8gZGVzY3JpYmUgdGhlIGVsZW1lbnQncyBzY3JvbGwgYW5pbWF0aW9ucy4ifSx7bmFtZToiYXBwZWFyYW5jZSIsc3ludGF4OiJub25lIHwgYXV0byB8IHRleHRmaWVsZCB8IG1lbnVsaXN0LWJ1dHRvbiB8IDxjb21wYXQtYXV0bz4iLHJlbGV2YW5jZTo2OSxicm93c2VyczpbIkU4NCIsIkZGODAiLCJTMTUuNCIsIkM4NCIsIk83MCJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9hcHBlYXJhbmNlIn1dLGRlc2NyaXB0aW9uOiJDaGFuZ2VzIHRoZSBhcHBlYXJhbmNlIG9mIGJ1dHRvbnMgYW5kIG90aGVyIGNvbnRyb2xzIHRvIHJlc2VtYmxlIG5hdGl2ZSBjb250cm9scy4ifSx7bmFtZToiYXNwZWN0LXJhdGlvIixzeW50YXg6ImF1dG8gfCA8cmF0aW8+IixyZWxldmFuY2U6NjAsYnJvd3NlcnM6WyJFODgiLCJGRjg5IiwiUzE1IiwiQzg4IiwiTzc0Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2FzcGVjdC1yYXRpbyJ9XSxkZXNjcmlwdGlvbjoiVGhlIGFzcGVjdC1yYXRpbyAgIENTUyBwcm9wZXJ0eSBzZXRzIGEgcHJlZmVycmVkIGFzcGVjdCByYXRpbyBmb3IgdGhlIGJveCwgd2hpY2ggd2lsbCBiZSB1c2VkIGluIHRoZSBjYWxjdWxhdGlvbiBvZiBhdXRvIHNpemVzIGFuZCBzb21lIG90aGVyIGxheW91dCBmdW5jdGlvbnMuIn0se25hbWU6ImF6aW11dGgiLHN0YXR1czoib2Jzb2xldGUiLHN5bnRheDoiPGFuZ2xlPiB8IFsgWyBsZWZ0LXNpZGUgfCBmYXItbGVmdCB8IGxlZnQgfCBjZW50ZXItbGVmdCB8IGNlbnRlciB8IGNlbnRlci1yaWdodCB8IHJpZ2h0IHwgZmFyLXJpZ2h0IHwgcmlnaHQtc2lkZSBdIHx8IGJlaGluZCBdIHwgbGVmdHdhcmRzIHwgcmlnaHR3YXJkcyIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246IkluIGNvbWJpbmF0aW9uIHdpdGggZWxldmF0aW9uLCB0aGUgYXppbXV0aCBDU1MgcHJvcGVydHkgZW5hYmxlcyBkaWZmZXJlbnQgYXVkaW8gc291cmNlcyB0byBiZSBwb3NpdGlvbmVkIHNwYXRpYWxseSBmb3IgYXVyYWwgcHJlc2VudGF0aW9uLiBUaGlzIGlzIGltcG9ydGFudCBpbiB0aGF0IGl0IHByb3ZpZGVzIGEgbmF0dXJhbCB3YXkgdG8gdGVsbCBzZXZlcmFsIHZvaWNlcyBhcGFydCwgYXMgZWFjaCBjYW4gYmUgcG9zaXRpb25lZCB0byBvcmlnaW5hdGUgYXQgYSBkaWZmZXJlbnQgbG9jYXRpb24gb24gdGhlIHNvdW5kIHN0YWdlLiBTdGVyZW8gb3V0cHV0IHByb2R1Y2UgYSBsYXRlcmFsIHNvdW5kIHN0YWdlLCB3aGlsZSBiaW5hdXJhbCBoZWFkcGhvbmVzIGFuZCBtdWx0aS1zcGVha2VyIHNldHVwcyBhbGxvdyBmb3IgYSBmdWxseSB0aHJlZS1kaW1lbnNpb25hbCBzdGFnZS4ifSx7bmFtZToiYmFja2Ryb3AtZmlsdGVyIixzeW50YXg6Im5vbmUgfCA8ZmlsdGVyLWZ1bmN0aW9uLWxpc3Q+IixyZWxldmFuY2U6NTgsYnJvd3NlcnM6WyJFMTciLCJGRjEwMyIsIlM5IiwiQzc2IiwiTzYzIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JhY2tkcm9wLWZpbHRlciJ9XSxkZXNjcmlwdGlvbjoiVGhlIGJhY2tkcm9wLWZpbHRlciBDU1MgcHJvcGVydHkgbGV0cyB5b3UgYXBwbHkgZ3JhcGhpY2FsIGVmZmVjdHMgc3VjaCBhcyBibHVycmluZyBvciBjb2xvciBzaGlmdGluZyB0byB0aGUgYXJlYSBiZWhpbmQgYW4gZWxlbWVudC4gQmVjYXVzZSBpdCBhcHBsaWVzIHRvIGV2ZXJ5dGhpbmcgYmVoaW5kIHRoZSBlbGVtZW50LCB0byBzZWUgdGhlIGVmZmVjdCB5b3UgbXVzdCBtYWtlIHRoZSBlbGVtZW50IG9yIGl0cyBiYWNrZ3JvdW5kIGF0IGxlYXN0IHBhcnRpYWxseSB0cmFuc3BhcmVudC4ifSx7bmFtZToiYm9yZGVyLWJsb2NrIixzeW50YXg6IjwnYm9yZGVyLXRvcC13aWR0aCc+IHx8IDwnYm9yZGVyLXRvcC1zdHlsZSc+IHx8IDxjb2xvcj4iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU4NyIsIkZGNjYiLCJTMTQuMSIsIkM4NyIsIk83MyJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3JkZXItYmxvY2sifV0sZGVzY3JpcHRpb246IlRoZSBib3JkZXItYmxvY2sgQ1NTIHByb3BlcnR5IGlzIGEgc2hvcnRoYW5kIHByb3BlcnR5IGZvciBzZXR0aW5nIHRoZSBpbmRpdmlkdWFsIGxvZ2ljYWwgYmxvY2sgYm9yZGVyIHByb3BlcnR5IHZhbHVlcyBpbiBhIHNpbmdsZSBwbGFjZSBpbiB0aGUgc3R5bGUgc2hlZXQuIn0se25hbWU6ImJvcmRlci1ibG9jay1jb2xvciIsc3ludGF4OiI8J2JvcmRlci10b3AtY29sb3InPnsxLDJ9IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFODciLCJGRjY2IiwiUzE0LjEiLCJDODciLCJPNzMiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm9yZGVyLWJsb2NrLWNvbG9yIn1dLGRlc2NyaXB0aW9uOiJUaGUgYm9yZGVyLWJsb2NrLWNvbG9yIENTUyBwcm9wZXJ0eSBkZWZpbmVzIHRoZSBjb2xvciBvZiB0aGUgbG9naWNhbCBibG9jayBib3JkZXJzIG9mIGFuIGVsZW1lbnQsIHdoaWNoIG1hcHMgdG8gYSBwaHlzaWNhbCBib3JkZXIgY29sb3IgZGVwZW5kaW5nIG9uIHRoZSBlbGVtZW50J3Mgd3JpdGluZyBtb2RlLCBkaXJlY3Rpb25hbGl0eSwgYW5kIHRleHQgb3JpZW50YXRpb24uIEl0IGNvcnJlc3BvbmRzIHRvIHRoZSBib3JkZXItdG9wLWNvbG9yIGFuZCBib3JkZXItYm90dG9tLWNvbG9yLCBvciBib3JkZXItcmlnaHQtY29sb3IgYW5kIGJvcmRlci1sZWZ0LWNvbG9yIHByb3BlcnR5IGRlcGVuZGluZyBvbiB0aGUgdmFsdWVzIGRlZmluZWQgZm9yIHdyaXRpbmctbW9kZSwgZGlyZWN0aW9uLCBhbmQgdGV4dC1vcmllbnRhdGlvbi4ifSx7bmFtZToiYm9yZGVyLWJsb2NrLXN0eWxlIixzeW50YXg6IjwnYm9yZGVyLXRvcC1zdHlsZSc+IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFODciLCJGRjY2IiwiUzE0LjEiLCJDODciLCJPNzMiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm9yZGVyLWJsb2NrLXN0eWxlIn1dLGRlc2NyaXB0aW9uOiJUaGUgYm9yZGVyLWJsb2NrLXN0eWxlIENTUyBwcm9wZXJ0eSBkZWZpbmVzIHRoZSBzdHlsZSBvZiB0aGUgbG9naWNhbCBibG9jayBib3JkZXJzIG9mIGFuIGVsZW1lbnQsIHdoaWNoIG1hcHMgdG8gYSBwaHlzaWNhbCBib3JkZXIgc3R5bGUgZGVwZW5kaW5nIG9uIHRoZSBlbGVtZW50J3Mgd3JpdGluZyBtb2RlLCBkaXJlY3Rpb25hbGl0eSwgYW5kIHRleHQgb3JpZW50YXRpb24uIEl0IGNvcnJlc3BvbmRzIHRvIHRoZSBib3JkZXItdG9wLXN0eWxlIGFuZCBib3JkZXItYm90dG9tLXN0eWxlLCBvciBib3JkZXItbGVmdC1zdHlsZSBhbmQgYm9yZGVyLXJpZ2h0LXN0eWxlIHByb3BlcnRpZXMgZGVwZW5kaW5nIG9uIHRoZSB2YWx1ZXMgZGVmaW5lZCBmb3Igd3JpdGluZy1tb2RlLCBkaXJlY3Rpb24sIGFuZCB0ZXh0LW9yaWVudGF0aW9uLiJ9LHtuYW1lOiJib3JkZXItYmxvY2std2lkdGgiLHN5bnRheDoiPCdib3JkZXItdG9wLXdpZHRoJz4iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU4NyIsIkZGNjYiLCJTMTQuMSIsIkM4NyIsIk83MyJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3JkZXItYmxvY2std2lkdGgifV0sZGVzY3JpcHRpb246IlRoZSBib3JkZXItYmxvY2std2lkdGggQ1NTIHByb3BlcnR5IGRlZmluZXMgdGhlIHdpZHRoIG9mIHRoZSBsb2dpY2FsIGJsb2NrIGJvcmRlcnMgb2YgYW4gZWxlbWVudCwgd2hpY2ggbWFwcyB0byBhIHBoeXNpY2FsIGJvcmRlciB3aWR0aCBkZXBlbmRpbmcgb24gdGhlIGVsZW1lbnQncyB3cml0aW5nIG1vZGUsIGRpcmVjdGlvbmFsaXR5LCBhbmQgdGV4dCBvcmllbnRhdGlvbi4gSXQgY29ycmVzcG9uZHMgdG8gdGhlIGJvcmRlci10b3Atd2lkdGggYW5kIGJvcmRlci1ib3R0b20td2lkdGgsIG9yIGJvcmRlci1sZWZ0LXdpZHRoLCBhbmQgYm9yZGVyLXJpZ2h0LXdpZHRoIHByb3BlcnR5IGRlcGVuZGluZyBvbiB0aGUgdmFsdWVzIGRlZmluZWQgZm9yIHdyaXRpbmctbW9kZSwgZGlyZWN0aW9uLCBhbmQgdGV4dC1vcmllbnRhdGlvbi4ifSx7bmFtZToiYm9yZGVyLWVuZC1lbmQtcmFkaXVzIixzeW50YXg6IjxsZW5ndGgtcGVyY2VudGFnZT57MSwyfSIscmVsZXZhbmNlOjUzLGJyb3dzZXJzOlsiRTg5IiwiRkY2NiIsIlMxNSIsIkM4OSIsIk83NSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3JkZXItZW5kLWVuZC1yYWRpdXMifV0sZGVzY3JpcHRpb246IlRoZSBib3JkZXItZW5kLWVuZC1yYWRpdXMgQ1NTIHByb3BlcnR5IGRlZmluZXMgYSBsb2dpY2FsIGJvcmRlciByYWRpdXMgb24gYW4gZWxlbWVudCwgd2hpY2ggbWFwcyB0byBhIHBoeXNpY2FsIGJvcmRlciByYWRpdXMgdGhhdCBkZXBlbmRzIG9uIG9uIHRoZSBlbGVtZW50J3Mgd3JpdGluZy1tb2RlLCBkaXJlY3Rpb24sIGFuZCB0ZXh0LW9yaWVudGF0aW9uLiJ9LHtuYW1lOiJib3JkZXItZW5kLXN0YXJ0LXJhZGl1cyIsc3ludGF4OiI8bGVuZ3RoLXBlcmNlbnRhZ2U+ezEsMn0iLHJlbGV2YW5jZTo1Myxicm93c2VyczpbIkU4OSIsIkZGNjYiLCJTMTUiLCJDODkiLCJPNzUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm9yZGVyLWVuZC1zdGFydC1yYWRpdXMifV0sZGVzY3JpcHRpb246IlRoZSBib3JkZXItZW5kLXN0YXJ0LXJhZGl1cyBDU1MgcHJvcGVydHkgZGVmaW5lcyBhIGxvZ2ljYWwgYm9yZGVyIHJhZGl1cyBvbiBhbiBlbGVtZW50LCB3aGljaCBtYXBzIHRvIGEgcGh5c2ljYWwgYm9yZGVyIHJhZGl1cyBkZXBlbmRpbmcgb24gdGhlIGVsZW1lbnQncyB3cml0aW5nLW1vZGUsIGRpcmVjdGlvbiwgYW5kIHRleHQtb3JpZW50YXRpb24uIn0se25hbWU6ImJvcmRlci1pbmxpbmUiLHN5bnRheDoiPCdib3JkZXItdG9wLXdpZHRoJz4gfHwgPCdib3JkZXItdG9wLXN0eWxlJz4gfHwgPGNvbG9yPiIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTg3IiwiRkY2NiIsIlMxNC4xIiwiQzg3IiwiTzczIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JvcmRlci1pbmxpbmUifV0sZGVzY3JpcHRpb246IlRoZSBib3JkZXItaW5saW5lIENTUyBwcm9wZXJ0eSBpcyBhIHNob3J0aGFuZCBwcm9wZXJ0eSBmb3Igc2V0dGluZyB0aGUgaW5kaXZpZHVhbCBsb2dpY2FsIGlubGluZSBib3JkZXIgcHJvcGVydHkgdmFsdWVzIGluIGEgc2luZ2xlIHBsYWNlIGluIHRoZSBzdHlsZSBzaGVldC4ifSx7bmFtZToiYm9yZGVyLWlubGluZS1jb2xvciIsc3ludGF4OiI8J2JvcmRlci10b3AtY29sb3InPnsxLDJ9IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFODciLCJGRjY2IiwiUzE0LjEiLCJDODciLCJPNzMiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm9yZGVyLWlubGluZS1jb2xvciJ9XSxkZXNjcmlwdGlvbjoiVGhlIGJvcmRlci1pbmxpbmUtY29sb3IgQ1NTIHByb3BlcnR5IGRlZmluZXMgdGhlIGNvbG9yIG9mIHRoZSBsb2dpY2FsIGlubGluZSBib3JkZXJzIG9mIGFuIGVsZW1lbnQsIHdoaWNoIG1hcHMgdG8gYSBwaHlzaWNhbCBib3JkZXIgY29sb3IgZGVwZW5kaW5nIG9uIHRoZSBlbGVtZW50J3Mgd3JpdGluZyBtb2RlLCBkaXJlY3Rpb25hbGl0eSwgYW5kIHRleHQgb3JpZW50YXRpb24uIEl0IGNvcnJlc3BvbmRzIHRvIHRoZSBib3JkZXItdG9wLWNvbG9yIGFuZCBib3JkZXItYm90dG9tLWNvbG9yLCBvciBib3JkZXItcmlnaHQtY29sb3IgYW5kIGJvcmRlci1sZWZ0LWNvbG9yIHByb3BlcnR5IGRlcGVuZGluZyBvbiB0aGUgdmFsdWVzIGRlZmluZWQgZm9yIHdyaXRpbmctbW9kZSwgZGlyZWN0aW9uLCBhbmQgdGV4dC1vcmllbnRhdGlvbi4ifSx7bmFtZToiYm9yZGVyLWlubGluZS1zdHlsZSIsc3ludGF4OiI8J2JvcmRlci10b3Atc3R5bGUnPiIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTg3IiwiRkY2NiIsIlMxNC4xIiwiQzg3IiwiTzczIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JvcmRlci1pbmxpbmUtc3R5bGUifV0sZGVzY3JpcHRpb246IlRoZSBib3JkZXItaW5saW5lLXN0eWxlIENTUyBwcm9wZXJ0eSBkZWZpbmVzIHRoZSBzdHlsZSBvZiB0aGUgbG9naWNhbCBpbmxpbmUgYm9yZGVycyBvZiBhbiBlbGVtZW50LCB3aGljaCBtYXBzIHRvIGEgcGh5c2ljYWwgYm9yZGVyIHN0eWxlIGRlcGVuZGluZyBvbiB0aGUgZWxlbWVudCdzIHdyaXRpbmcgbW9kZSwgZGlyZWN0aW9uYWxpdHksIGFuZCB0ZXh0IG9yaWVudGF0aW9uLiBJdCBjb3JyZXNwb25kcyB0byB0aGUgYm9yZGVyLXRvcC1zdHlsZSBhbmQgYm9yZGVyLWJvdHRvbS1zdHlsZSwgb3IgYm9yZGVyLWxlZnQtc3R5bGUgYW5kIGJvcmRlci1yaWdodC1zdHlsZSBwcm9wZXJ0aWVzIGRlcGVuZGluZyBvbiB0aGUgdmFsdWVzIGRlZmluZWQgZm9yIHdyaXRpbmctbW9kZSwgZGlyZWN0aW9uLCBhbmQgdGV4dC1vcmllbnRhdGlvbi4ifSx7bmFtZToiYm9yZGVyLWlubGluZS13aWR0aCIsc3ludGF4OiI8J2JvcmRlci10b3Atd2lkdGgnPiIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTg3IiwiRkY2NiIsIlMxNC4xIiwiQzg3IiwiTzczIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JvcmRlci1pbmxpbmUtd2lkdGgifV0sZGVzY3JpcHRpb246IlRoZSBib3JkZXItaW5saW5lLXdpZHRoIENTUyBwcm9wZXJ0eSBkZWZpbmVzIHRoZSB3aWR0aCBvZiB0aGUgbG9naWNhbCBpbmxpbmUgYm9yZGVycyBvZiBhbiBlbGVtZW50LCB3aGljaCBtYXBzIHRvIGEgcGh5c2ljYWwgYm9yZGVyIHdpZHRoIGRlcGVuZGluZyBvbiB0aGUgZWxlbWVudCdzIHdyaXRpbmcgbW9kZSwgZGlyZWN0aW9uYWxpdHksIGFuZCB0ZXh0IG9yaWVudGF0aW9uLiBJdCBjb3JyZXNwb25kcyB0byB0aGUgYm9yZGVyLXRvcC13aWR0aCBhbmQgYm9yZGVyLWJvdHRvbS13aWR0aCwgb3IgYm9yZGVyLWxlZnQtd2lkdGgsIGFuZCBib3JkZXItcmlnaHQtd2lkdGggcHJvcGVydHkgZGVwZW5kaW5nIG9uIHRoZSB2YWx1ZXMgZGVmaW5lZCBmb3Igd3JpdGluZy1tb2RlLCBkaXJlY3Rpb24sIGFuZCB0ZXh0LW9yaWVudGF0aW9uLiJ9LHtuYW1lOiJib3JkZXItc3RhcnQtZW5kLXJhZGl1cyIsc3ludGF4OiI8bGVuZ3RoLXBlcmNlbnRhZ2U+ezEsMn0iLHJlbGV2YW5jZTo1Myxicm93c2VyczpbIkU4OSIsIkZGNjYiLCJTMTUiLCJDODkiLCJPNzUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm9yZGVyLXN0YXJ0LWVuZC1yYWRpdXMifV0sZGVzY3JpcHRpb246IlRoZSBib3JkZXItc3RhcnQtZW5kLXJhZGl1cyBDU1MgcHJvcGVydHkgZGVmaW5lcyBhIGxvZ2ljYWwgYm9yZGVyIHJhZGl1cyBvbiBhbiBlbGVtZW50LCB3aGljaCBtYXBzIHRvIGEgcGh5c2ljYWwgYm9yZGVyIHJhZGl1cyBkZXBlbmRpbmcgb24gdGhlIGVsZW1lbnQncyB3cml0aW5nLW1vZGUsIGRpcmVjdGlvbiwgYW5kIHRleHQtb3JpZW50YXRpb24uIn0se25hbWU6ImJvcmRlci1zdGFydC1zdGFydC1yYWRpdXMiLHN5bnRheDoiPGxlbmd0aC1wZXJjZW50YWdlPnsxLDJ9IixyZWxldmFuY2U6NTMsYnJvd3NlcnM6WyJFODkiLCJGRjY2IiwiUzE1IiwiQzg5IiwiTzc1Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JvcmRlci1zdGFydC1zdGFydC1yYWRpdXMifV0sZGVzY3JpcHRpb246IlRoZSBib3JkZXItc3RhcnQtc3RhcnQtcmFkaXVzIENTUyBwcm9wZXJ0eSBkZWZpbmVzIGEgbG9naWNhbCBib3JkZXIgcmFkaXVzIG9uIGFuIGVsZW1lbnQsIHdoaWNoIG1hcHMgdG8gYSBwaHlzaWNhbCBib3JkZXIgcmFkaXVzIHRoYXQgZGVwZW5kcyBvbiB0aGUgZWxlbWVudCdzIHdyaXRpbmctbW9kZSwgZGlyZWN0aW9uLCBhbmQgdGV4dC1vcmllbnRhdGlvbi4ifSx7bmFtZToiYm94LWFsaWduIixzdGF0dXM6Im9ic29sZXRlIixzeW50YXg6InN0YXJ0IHwgY2VudGVyIHwgZW5kIHwgYmFzZWxpbmUgfCBzdHJldGNoIix2YWx1ZXM6W3tuYW1lOiJzdGFydCJ9LHtuYW1lOiJjZW50ZXIifSx7bmFtZToiZW5kIn0se25hbWU6ImJhc2VsaW5lIn0se25hbWU6InN0cmV0Y2gifV0scmVsZXZhbmNlOjAsYnJvd3NlcnM6WyJFMTIiLCJGRjQ5IiwiUzMiLCJDMSIsIk8xNSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3gtYWxpZ24ifV0sZGVzY3JpcHRpb246IlRoZSBib3gtYWxpZ24gQ1NTIHByb3BlcnR5IHNwZWNpZmllcyBob3cgYW4gZWxlbWVudCBhbGlnbnMgaXRzIGNvbnRlbnRzIGFjcm9zcyBpdHMgbGF5b3V0IGluIGEgcGVycGVuZGljdWxhciBkaXJlY3Rpb24uIFRoZSBlZmZlY3Qgb2YgdGhlIHByb3BlcnR5IGlzIG9ubHkgdmlzaWJsZSBpZiB0aGVyZSBpcyBleHRyYSBzcGFjZSBpbiB0aGUgYm94LiJ9LHtuYW1lOiJib3gtZGlyZWN0aW9uIixzdGF0dXM6Im9ic29sZXRlIixzeW50YXg6Im5vcm1hbCB8IHJldmVyc2UgfCBpbmhlcml0Iix2YWx1ZXM6W3tuYW1lOiJub3JtYWwifSx7bmFtZToicmV2ZXJzZSJ9LHtuYW1lOiJpbmhlcml0In1dLHJlbGV2YW5jZTowLGJyb3dzZXJzOlsiRTEyIiwiRkY0OSIsIlMzIiwiQzEiLCJPMTUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm94LWRpcmVjdGlvbiJ9XSxkZXNjcmlwdGlvbjoiVGhlIGJveC1kaXJlY3Rpb24gQ1NTIHByb3BlcnR5IHNwZWNpZmllcyB3aGV0aGVyIGEgYm94IGxheXMgb3V0IGl0cyBjb250ZW50cyBub3JtYWxseSAoZnJvbSB0aGUgdG9wIG9yIGxlZnQgZWRnZSksIG9yIGluIHJldmVyc2UgKGZyb20gdGhlIGJvdHRvbSBvciByaWdodCBlZGdlKS4ifSx7bmFtZToiYm94LWZsZXgiLHN0YXR1czoib2Jzb2xldGUiLHN5bnRheDoiPG51bWJlcj4iLHJlbGV2YW5jZTowLGJyb3dzZXJzOlsiRTEyIiwiRkY0OSIsIlMzIiwiQzEiLCJPMTUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm94LWZsZXgifV0sZGVzY3JpcHRpb246IlRoZSAtbW96LWJveC1mbGV4IGFuZCAtd2Via2l0LWJveC1mbGV4IENTUyBwcm9wZXJ0aWVzIHNwZWNpZnkgaG93IGEgLW1vei1ib3ggb3IgLXdlYmtpdC1ib3ggZ3Jvd3MgdG8gZmlsbCB0aGUgYm94IHRoYXQgY29udGFpbnMgaXQsIGluIHRoZSBkaXJlY3Rpb24gb2YgdGhlIGNvbnRhaW5pbmcgYm94J3MgbGF5b3V0LiJ9LHtuYW1lOiJib3gtZmxleC1ncm91cCIsc3RhdHVzOiJvYnNvbGV0ZSIsc3ludGF4OiI8aW50ZWdlcj4iLHJlbGV2YW5jZTowLGJyb3dzZXJzOlsiUzMiLCJDMSIsIk8xNSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3gtZmxleC1ncm91cCJ9XSxkZXNjcmlwdGlvbjoiVGhlIGJveC1mbGV4LWdyb3VwIENTUyBwcm9wZXJ0eSBhc3NpZ25zIHRoZSBmbGV4Ym94J3MgY2hpbGQgZWxlbWVudHMgdG8gYSBmbGV4IGdyb3VwLiJ9LHtuYW1lOiJib3gtbGluZXMiLHN0YXR1czoib2Jzb2xldGUiLHN5bnRheDoic2luZ2xlIHwgbXVsdGlwbGUiLHZhbHVlczpbe25hbWU6InNpbmdsZSJ9LHtuYW1lOiJtdWx0aXBsZSJ9XSxyZWxldmFuY2U6MCxicm93c2VyczpbIlMzIiwiQzEiLCJPMTUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm94LWxpbmVzIn1dLGRlc2NyaXB0aW9uOiJUaGUgYm94LWxpbmVzIENTUyBwcm9wZXJ0eSBkZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGJveCBtYXkgaGF2ZSBhIHNpbmdsZSBvciBtdWx0aXBsZSBsaW5lcyAocm93cyBmb3IgaG9yaXpvbnRhbGx5IG9yaWVudGVkIGJveGVzLCBjb2x1bW5zIGZvciB2ZXJ0aWNhbGx5IG9yaWVudGVkIGJveGVzKS4ifSx7bmFtZToiYm94LW9yZGluYWwtZ3JvdXAiLHN0YXR1czoib2Jzb2xldGUiLHN5bnRheDoiPGludGVnZXI+IixyZWxldmFuY2U6MCxicm93c2VyczpbIkUxMiIsIkZGNDkiLCJTMyIsIkMxIiwiTzE1Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JveC1vcmRpbmFsLWdyb3VwIn1dLGRlc2NyaXB0aW9uOiJUaGUgYm94LW9yZGluYWwtZ3JvdXAgQ1NTIHByb3BlcnR5IGFzc2lnbnMgdGhlIGZsZXhib3gncyBjaGlsZCBlbGVtZW50cyB0byBhbiBvcmRpbmFsIGdyb3VwLiJ9LHtuYW1lOiJib3gtb3JpZW50IixzdGF0dXM6Im9ic29sZXRlIixzeW50YXg6Imhvcml6b250YWwgfCB2ZXJ0aWNhbCB8IGlubGluZS1heGlzIHwgYmxvY2stYXhpcyB8IGluaGVyaXQiLHZhbHVlczpbe25hbWU6Imhvcml6b250YWwifSx7bmFtZToidmVydGljYWwifSx7bmFtZToiaW5saW5lLWF4aXMifSx7bmFtZToiYmxvY2stYXhpcyJ9LHtuYW1lOiJpbmhlcml0In1dLHJlbGV2YW5jZTowLGJyb3dzZXJzOlsiRTEyIiwiRkY0OSIsIlMzIiwiQzEiLCJPMTUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm94LW9yaWVudCJ9XSxkZXNjcmlwdGlvbjoiVGhlIGJveC1vcmllbnQgQ1NTIHByb3BlcnR5IHNwZWNpZmllcyB3aGV0aGVyIGFuIGVsZW1lbnQgbGF5cyBvdXQgaXRzIGNvbnRlbnRzIGhvcml6b250YWxseSBvciB2ZXJ0aWNhbGx5LiJ9LHtuYW1lOiJib3gtcGFjayIsc3RhdHVzOiJvYnNvbGV0ZSIsc3ludGF4OiJzdGFydCB8IGNlbnRlciB8IGVuZCB8IGp1c3RpZnkiLHZhbHVlczpbe25hbWU6InN0YXJ0In0se25hbWU6ImNlbnRlciJ9LHtuYW1lOiJlbmQifSx7bmFtZToianVzdGlmeSJ9XSxyZWxldmFuY2U6MCxicm93c2VyczpbIkUxMiIsIkZGNDkiLCJTMyIsIkMxIiwiTzE1Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JveC1wYWNrIn1dLGRlc2NyaXB0aW9uOiJUaGUgLW1vei1ib3gtcGFjayBhbmQgLXdlYmtpdC1ib3gtcGFjayBDU1MgcHJvcGVydGllcyBzcGVjaWZ5IGhvdyBhIC1tb3otYm94IG9yIC13ZWJraXQtYm94IHBhY2tzIGl0cyBjb250ZW50cyBpbiB0aGUgZGlyZWN0aW9uIG9mIGl0cyBsYXlvdXQuIFRoZSBlZmZlY3Qgb2YgdGhpcyBpcyBvbmx5IHZpc2libGUgaWYgdGhlcmUgaXMgZXh0cmEgc3BhY2UgaW4gdGhlIGJveC4ifSx7bmFtZToiY2FyZXQiLHN5bnRheDoiPCdjYXJldC1jb2xvcic+IHx8IDwnY2FyZXQtc2hhcGUnPiIscmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJTaG9ydGhhbmQgZm9yIHNldHRpbmcgY2FyZXQtY29sb3IgYW5kIGNhcmV0LXNoYXBlLiJ9LHtuYW1lOiJjYXJldC1zaGFwZSIsc3ludGF4OiJhdXRvIHwgYmFyIHwgYmxvY2sgfCB1bmRlcnNjb3JlIix2YWx1ZXM6W3tuYW1lOiJhdXRvIn0se25hbWU6ImJhciJ9LHtuYW1lOiJibG9jayJ9LHtuYW1lOiJ1bmRlcnNjb3JlIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSBkZXNpcmVkIHNoYXBlIG9mIHRoZSB0ZXh0IGluc2VydGlvbiBjYXJldC4ifSx7bmFtZToiY29sb3Itc2NoZW1lIixzeW50YXg6Im5vcm1hbCB8IFsgbGlnaHQgfCBkYXJrIHwgPGN1c3RvbS1pZGVudD4gXSsgJiYgb25seT8iLHJlbGV2YW5jZTo1Nyxicm93c2VyczpbIkU4MSIsIkZGOTYiLCJTMTMiLCJDODEiLCJPNjgiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvY29sb3Itc2NoZW1lIn1dLGRlc2NyaXB0aW9uOiJUaGUgY29sb3Itc2NoZW1lIENTUyBwcm9wZXJ0eSBhbGxvd3MgYW4gZWxlbWVudCB0byBpbmRpY2F0ZSB3aGljaCBjb2xvciBzY2hlbWVzIGl0IGNhbiBjb21mb3J0YWJseSBiZSByZW5kZXJlZCBpbi4ifSx7bmFtZToiY29udGFpbi1pbnRyaW5zaWMtc2l6ZSIsc3ludGF4OiJbIGF1dG8/IFsgbm9uZSB8IDxsZW5ndGg+IF0gXXsxLDJ9IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFODMiLCJGRjEwNyIsIlMxNyIsIkM4MyIsIk82OSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9jb250YWluLWludHJpbnNpYy1zaXplIn1dLGRlc2NyaXB0aW9uOiJTaXplIG9mIGFuIGVsZW1lbnQgd2hlbiB0aGUgZWxlbWVudCBpcyBzdWJqZWN0IHRvIHNpemUgY29udGFpbm1lbnQuIn0se25hbWU6ImNvbnRhaW4taW50cmluc2ljLWJsb2NrLXNpemUiLHN5bnRheDoiYXV0bz8gWyBub25lIHwgPGxlbmd0aD4gXSIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTk1IiwiRkYxMDciLCJTMTciLCJDOTUiLCJPODEiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvY29udGFpbi1pbnRyaW5zaWMtY29udGFpbi1pbnRyaW5zaWMtYmxvY2stc2l6ZSJ9XSxkZXNjcmlwdGlvbjoiQmxvY2sgc2l6ZSBvZiBhbiBlbGVtZW50IHdoZW4gdGhlIGVsZW1lbnQgaXMgc3ViamVjdCB0byBzaXplIGNvbnRhaW5tZW50LiJ9LHtuYW1lOiJjb250YWluLWludHJpbnNpYy1oZWlnaHQiLHN5bnRheDoiYXV0bz8gWyBub25lIHwgPGxlbmd0aD4gXSIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTk1IiwiRkYxMDciLCJTMTciLCJDOTUiLCJPODEiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvY29udGFpbi1pbnRyaW5zaWMtaGVpZ2h0In1dLGRlc2NyaXB0aW9uOiJIZWlnaHQgb2YgYW4gZWxlbWVudCB3aGVuIHRoZSBlbGVtZW50IGlzIHN1YmplY3QgdG8gc2l6ZSBjb250YWlubWVudC4ifSx7bmFtZToiY29udGFpbi1pbnRyaW5zaWMtaW5saW5lLXNpemUiLHN5bnRheDoiYXV0bz8gWyBub25lIHwgPGxlbmd0aD4gXSIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTk1IiwiRkYxMDciLCJTMTciLCJDOTUiLCJPODEiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvY29udGFpbi1pbnRyaW5zaWMtY29udGFpbi1pbnRyaW5zaWMtaW5saW5lLXNpemUifV0sZGVzY3JpcHRpb246IklubGluZSBzaXplIG9mIGFuIGVsZW1lbnQgd2hlbiB0aGUgZWxlbWVudCBpcyBzdWJqZWN0IHRvIHNpemUgY29udGFpbm1lbnQuIn0se25hbWU6ImNvbnRhaW4taW50cmluc2ljLXdpZHRoIixzeW50YXg6ImF1dG8/IFsgbm9uZSB8IDxsZW5ndGg+IF0iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU5NSIsIkZGMTA3IiwiUzE3IiwiQzk1IiwiTzgxIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2NvbnRhaW4taW50cmluc2ljLXdpZHRoIn1dLGRlc2NyaXB0aW9uOiJXaWR0aCBvZiBhbiBlbGVtZW50IHdoZW4gdGhlIGVsZW1lbnQgaXMgc3ViamVjdCB0byBzaXplIGNvbnRhaW5tZW50LiJ9LHtuYW1lOiJjb250YWluZXIiLHN5bnRheDoiPCdjb250YWluZXItbmFtZSc+IFsgLyA8J2NvbnRhaW5lci10eXBlJz4gXT8iLHJlbGV2YW5jZTo1Myxicm93c2VyczpbIkUxMDUiLCJGRjExMCIsIlMxNiIsIkMxMDUiLCJPOTEiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvY29udGFpbmVyIn1dLGRlc2NyaXB0aW9uOiJUaGUgY29udGFpbmVyIHNob3J0aGFuZCBDU1MgcHJvcGVydHkgZXN0YWJsaXNoZXMgdGhlIGVsZW1lbnQgYXMgYSBxdWVyeSBjb250YWluZXIgYW5kIHNwZWNpZmllcyB0aGUgbmFtZSBvciBuYW1lIGZvciB0aGUgY29udGFpbm1lbnQgY29udGV4dCB1c2VkIGluIGEgY29udGFpbmVyIHF1ZXJ5LiJ9LHtuYW1lOiJjb250YWluZXItbmFtZSIsc3ludGF4OiJub25lIHwgPGN1c3RvbS1pZGVudD4rIixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFMTA1IiwiRkYxMTAiLCJTMTYiLCJDMTA1IiwiTzkxIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2NvbnRhaW5lci1uYW1lIn1dLGRlc2NyaXB0aW9uOiJUaGUgY29udGFpbmVyLW5hbWUgQ1NTIHByb3BlcnR5IHNwZWNpZmllcyBhIGxpc3Qgb2YgcXVlcnkgY29udGFpbmVyIG5hbWVzIHVzZWQgYnkgdGhlIEBjb250YWluZXIgYXQtcnVsZSBpbiBhIGNvbnRhaW5lciBxdWVyeS4ifSx7bmFtZToiY29udGFpbmVyLXR5cGUiLHN5bnRheDoibm9ybWFsIHwgc2l6ZSB8IGlubGluZS1zaXplIix2YWx1ZXM6W3tuYW1lOiJub3JtYWwifSx7bmFtZToic2l6ZSJ9LHtuYW1lOiJpbmxpbmUtc2l6ZSJ9XSxyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFMTA1IiwiRkYxMTAiLCJTMTYiLCJDMTA1IiwiTzkxIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2NvbnRhaW5lci10eXBlIn1dLGRlc2NyaXB0aW9uOiJUaGUgY29udGFpbmVyLXR5cGUgQ1NTIHByb3BlcnR5IGlzIHVzZWQgdG8gZGVmaW5lIHRoZSB0eXBlIG9mIGNvbnRhaW5tZW50IHVzZWQgaW4gYSBjb250YWluZXIgcXVlcnkuIn0se25hbWU6ImNvbnRlbnQtdmlzaWJpbGl0eSIsc3ludGF4OiJ2aXNpYmxlIHwgYXV0byB8IGhpZGRlbiIsdmFsdWVzOlt7bmFtZToidmlzaWJsZSJ9LHtuYW1lOiJhdXRvIn0se25hbWU6ImhpZGRlbiJ9XSxyZWxldmFuY2U6NTIsYnJvd3NlcnM6WyJFODUiLCJGRnByZXZpZXciLCJTcHJldmlldyIsIkM4NSIsIk83MSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9jb250ZW50LXZpc2liaWxpdHkifV0sZGVzY3JpcHRpb246IkNvbnRyb2xzIHdoZXRoZXIgb3Igbm90IGFuIGVsZW1lbnQgcmVuZGVycyBpdHMgY29udGVudHMgYXQgYWxsLCBhbG9uZyB3aXRoIGZvcmNpbmcgYSBzdHJvbmcgc2V0IG9mIGNvbnRhaW5tZW50cywgYWxsb3dpbmcgdXNlciBhZ2VudHMgdG8gcG90ZW50aWFsbHkgb21pdCBsYXJnZSBzd2F0aGVzIG9mIGxheW91dCBhbmQgcmVuZGVyaW5nIHdvcmsgdW50aWwgaXQgYmVjb21lcyBuZWVkZWQuIn0se25hbWU6ImNvdW50ZXItc2V0IixzeW50YXg6IlsgPGNvdW50ZXItbmFtZT4gPGludGVnZXI+PyBdKyB8IG5vbmUiLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU4NSIsIkZGNjgiLCJTMTcuMiIsIkM4NSIsIk83MSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9jb3VudGVyLXNldCJ9XSxkZXNjcmlwdGlvbjoiVGhlIGNvdW50ZXItc2V0IENTUyBwcm9wZXJ0eSBzZXRzIGEgQ1NTIGNvdW50ZXIgdG8gYSBnaXZlbiB2YWx1ZS4gSXQgbWFuaXB1bGF0ZXMgdGhlIHZhbHVlIG9mIGV4aXN0aW5nIGNvdW50ZXJzLCBhbmQgd2lsbCBvbmx5IGNyZWF0ZSBuZXcgY291bnRlcnMgaWYgdGhlcmUgaXNuJ3QgYWxyZWFkeSBhIGNvdW50ZXIgb2YgdGhlIGdpdmVuIG5hbWUgb24gdGhlIGVsZW1lbnQuIn0se25hbWU6ImZvbnQtb3B0aWNhbC1zaXppbmciLHN5bnRheDoiYXV0byB8IG5vbmUiLHZhbHVlczpbe25hbWU6ImF1dG8ifSx7bmFtZToibm9uZSJ9XSxyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFMTciLCJGRjYyIiwiUzExIiwiQzc5IiwiTzY2Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2ZvbnQtb3B0aWNhbC1zaXppbmcifV0sZGVzY3JpcHRpb246IlRoZSBmb250LW9wdGljYWwtc2l6aW5nIENTUyBwcm9wZXJ0eSBhbGxvd3MgZGV2ZWxvcGVycyB0byBjb250cm9sIHdoZXRoZXIgYnJvd3NlcnMgcmVuZGVyIHRleHQgd2l0aCBzbGlnaHRseSBkaWZmZXJpbmcgdmlzdWFsIHJlcHJlc2VudGF0aW9ucyB0byBvcHRpbWl6ZSB2aWV3aW5nIGF0IGRpZmZlcmVudCBzaXplcywgb3Igbm90LiBUaGlzIG9ubHkgd29ya3MgZm9yIGZvbnRzIHRoYXQgaGF2ZSBhbiBvcHRpY2FsIHNpemUgdmFyaWF0aW9uIGF4aXMuIn0se25hbWU6ImZvbnQtcGFsZXR0ZSIsc3ludGF4OiJub3JtYWwgfCBsaWdodCB8IGRhcmsgfCA8cGFsZXR0ZS1pZGVudGlmaWVyPiIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTEwMSIsIkZGMTA3IiwiUzE1LjQiLCJDMTAxIiwiTzg3Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2ZvbnQtcGFsZXR0ZSJ9XSxkZXNjcmlwdGlvbjoiVGhlIGZvbnQtcGFsZXR0ZSBDU1MgcHJvcGVydHkgYWxsb3dzIHNwZWNpZnlpbmcgb25lIG9mIHRoZSBtYW55IHBhbGV0dGVzIGNvbnRhaW5lZCBpbiBhIGZvbnQgdGhhdCBhIHVzZXIgYWdlbnQgc2hvdWxkIHVzZSBmb3IgdGhlIGZvbnQuIFVzZXJzIGNhbiBhbHNvIG92ZXJyaWRlIHRoZSB2YWx1ZXMgaW4gYSBwYWxldHRlIG9yIGNyZWF0ZSBhIG5ldyBwYWxldHRlIGJ5IHVzaW5nIHRoZSBAZm9udC1wYWxldHRlLXZhbHVlcyBhdC1ydWxlLiJ9LHtuYW1lOiJmb250LXZhcmlhdGlvbi1zZXR0aW5ncyIsYXRSdWxlOiJAZm9udC1mYWNlIixzeW50YXg6Im5vcm1hbCB8IFsgPHN0cmluZz4gPG51bWJlcj4gXSMiLHJlbGV2YW5jZTo1MSxicm93c2VyczpbIkUxNyIsIkZGNjIiLCJTMTEiLCJDNjIiLCJPNDkiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvZm9udC12YXJpYXRpb24tc2V0dGluZ3MifV0sZGVzY3JpcHRpb246IlRoZSBmb250LXZhcmlhdGlvbi1zZXR0aW5ncyBDU1MgcHJvcGVydHkgcHJvdmlkZXMgbG93LWxldmVsIGNvbnRyb2wgb3ZlciBPcGVuVHlwZSBvciBUcnVlVHlwZSBmb250IHZhcmlhdGlvbnMsIGJ5IHNwZWNpZnlpbmcgdGhlIGZvdXIgbGV0dGVyIGF4aXMgbmFtZXMgb2YgdGhlIGZlYXR1cmVzIHlvdSB3YW50IHRvIHZhcnksIGFsb25nIHdpdGggdGhlaXIgdmFyaWF0aW9uIHZhbHVlcy4ifSx7bmFtZToiZm9udC1zbW9vdGgiLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiYXV0byB8IG5ldmVyIHwgYWx3YXlzIHwgPGFic29sdXRlLXNpemU+IHwgPGxlbmd0aD4iLHJlbGV2YW5jZTowLGJyb3dzZXJzOlsiRTc5IiwiRkYyNSIsIlM0IiwiQzUiLCJPMTUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvZm9udC1zbW9vdGgifV0sZGVzY3JpcHRpb246IlRoZSBmb250LXNtb290aCBDU1MgcHJvcGVydHkgY29udHJvbHMgdGhlIGFwcGxpY2F0aW9uIG9mIGFudGktYWxpYXNpbmcgd2hlbiBmb250cyBhcmUgcmVuZGVyZWQuIn0se25hbWU6ImZvbnQtc3ludGhlc2lzLXBvc2l0aW9uIixzeW50YXg6ImF1dG8gfCBub25lIix2YWx1ZXM6W3tuYW1lOiJhdXRvIn0se25hbWU6Im5vbmUifV0scmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRkYxMTgiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvZm9udC1zeW50aGVzaXMtcG9zaXRpb24ifV0sZGVzY3JpcHRpb246J1RoZSBmb250LXN5bnRoZXNpcy1wb3NpdGlvbiBDU1MgcHJvcGVydHkgbGV0cyB5b3Ugc3BlY2lmeSB3aGV0aGVyIG9yIG5vdCBhIGJyb3dzZXIgbWF5IHN5bnRoZXNpemUgdGhlIHN1YnNjcmlwdCBhbmQgc3VwZXJzY3JpcHQgInBvc2l0aW9uIiB0eXBlZmFjZXMgd2hlbiB0aGV5IGFyZSBtaXNzaW5nIGluIGEgZm9udCBmYW1pbHksIHdoaWxlIHVzaW5nIGZvbnQtdmFyaWFudC1wb3NpdGlvbiB0byBzZXQgdGhlIHBvc2l0aW9ucy4nfSx7bmFtZToiZm9udC1zeW50aGVzaXMtc21hbGwtY2FwcyIsc3ludGF4OiJhdXRvIHwgbm9uZSIsdmFsdWVzOlt7bmFtZToiYXV0byJ9LHtuYW1lOiJub25lIn1dLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU5NyIsIkZGMTExIiwiUzE2LjQiLCJDOTciLCJPODMiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvZm9udC1zeW50aGVzaXMtc21hbGwtY2FwcyJ9XSxkZXNjcmlwdGlvbjoiVGhlIGZvbnQtc3ludGhlc2lzLXNtYWxsLWNhcHMgQ1NTIHByb3BlcnR5IGxldHMgeW91IHNwZWNpZnkgd2hldGhlciBvciBub3QgdGhlIGJyb3dzZXIgbWF5IHN5bnRoZXNpemUgc21hbGwtY2FwcyB0eXBlZmFjZSB3aGVuIGl0IGlzIG1pc3NpbmcgaW4gYSBmb250IGZhbWlseS4gU21hbGwtY2FwcyBnbHlwaHMgdHlwaWNhbGx5IHVzZSB0aGUgZm9ybSBvZiB1cHBlcmNhc2UgbGV0dGVycyBidXQgYXJlIHJlZHVjZWQgdG8gdGhlIHNpemUgb2YgbG93ZXJjYXNlIGxldHRlcnMuIn0se25hbWU6ImZvbnQtc3ludGhlc2lzLXN0eWxlIixzeW50YXg6ImF1dG8gfCBub25lIix2YWx1ZXM6W3tuYW1lOiJhdXRvIn0se25hbWU6Im5vbmUifV0scmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTk3IiwiRkYxMTEiLCJTMTYuNCIsIkM5NyIsIk84MyJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9mb250LXN5bnRoZXNpcy1zdHlsZSJ9XSxkZXNjcmlwdGlvbjoiVGhlIGZvbnQtc3ludGhlc2lzLXN0eWxlIENTUyBwcm9wZXJ0eSBsZXRzIHlvdSBzcGVjaWZ5IHdoZXRoZXIgb3Igbm90IHRoZSBicm93c2VyIG1heSBzeW50aGVzaXplIHRoZSBvYmxpcXVlIHR5cGVmYWNlIHdoZW4gaXQgaXMgbWlzc2luZyBpbiBhIGZvbnQgZmFtaWx5LiJ9LHtuYW1lOiJmb250LXN5bnRoZXNpcy13ZWlnaHQiLHN5bnRheDoiYXV0byB8IG5vbmUiLHZhbHVlczpbe25hbWU6ImF1dG8ifSx7bmFtZToibm9uZSJ9XSxyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFOTciLCJGRjExMSIsIlMxNi40IiwiQzk3IiwiTzgzIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2ZvbnQtc3ludGhlc2lzLXdlaWdodCJ9XSxkZXNjcmlwdGlvbjoiVGhlIGZvbnQtc3ludGhlc2lzLXdlaWdodCBDU1MgcHJvcGVydHkgbGV0cyB5b3Ugc3BlY2lmeSB3aGV0aGVyIG9yIG5vdCB0aGUgYnJvd3NlciBtYXkgc3ludGhlc2l6ZSB0aGUgYm9sZCB0eXBlZmFjZSB3aGVuIGl0IGlzIG1pc3NpbmcgaW4gYSBmb250IGZhbWlseS4ifSx7bmFtZToiZm9udC12YXJpYW50LWVtb2ppIixzeW50YXg6Im5vcm1hbCB8IHRleHQgfCBlbW9qaSB8IHVuaWNvZGUiLHZhbHVlczpbe25hbWU6Im5vcm1hbCJ9LHtuYW1lOiJ0ZXh0In0se25hbWU6ImVtb2ppIn0se25hbWU6InVuaWNvZGUifV0scmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRkYxMDgiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvZm9udC12YXJpYW50LWVtb2ppIn1dLGRlc2NyaXB0aW9uOiJUaGUgZm9udC12YXJpYW50LWVtb2ppIENTUyBwcm9wZXJ0eSBzcGVjaWZpZXMgdGhlIGRlZmF1bHQgcHJlc2VudGF0aW9uIHN0eWxlIGZvciBkaXNwbGF5aW5nIGVtb2ppcy4ifSx7bmFtZToiZm9yY2VkLWNvbG9yLWFkanVzdCIsc3ludGF4OiJhdXRvIHwgbm9uZSIsdmFsdWVzOlt7bmFtZToiYXV0byJ9LHtuYW1lOiJub25lIn1dLHJlbGV2YW5jZTo1Nyxicm93c2VyczpbIkU3OSIsIkZGMTEzIiwiQzg5IiwiSUUxMCIsIk83NSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9mb3JjZWQtY29sb3ItYWRqdXN0In1dLGRlc2NyaXB0aW9uOiJBbGxvd3MgYXV0aG9ycyB0byBvcHQgY2VydGFpbiBlbGVtZW50cyBvdXQgb2YgZm9yY2VkIGNvbG9ycyBtb2RlLiBUaGlzIHRoZW4gcmVzdG9yZXMgdGhlIGNvbnRyb2wgb2YgdGhvc2UgdmFsdWVzIHRvIENTUyJ9LHtuYW1lOiJnYXAiLHN5bnRheDoiPCdyb3ctZ2FwJz4gPCdjb2x1bW4tZ2FwJz4/IixyZWxldmFuY2U6NzAsYnJvd3NlcnM6WyJFMTYiLCJGRjUyIiwiUzEwLjEiLCJDNTciLCJPNDQiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvZ2FwIn1dLGRlc2NyaXB0aW9uOiJUaGUgZ2FwIENTUyBwcm9wZXJ0eSBpcyBhIHNob3J0aGFuZCBwcm9wZXJ0eSBmb3Igcm93LWdhcCBhbmQgY29sdW1uLWdhcCBzcGVjaWZ5aW5nIHRoZSBndXR0ZXJzIGJldHdlZW4gZ3JpZCByb3dzIGFuZCBjb2x1bW5zLiJ9LHtuYW1lOiJoYW5naW5nLXB1bmN0dWF0aW9uIixzeW50YXg6Im5vbmUgfCBbIGZpcnN0IHx8IFsgZm9yY2UtZW5kIHwgYWxsb3ctZW5kIF0gfHwgbGFzdCBdIixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJTMTAiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvaGFuZ2luZy1wdW5jdHVhdGlvbiJ9XSxkZXNjcmlwdGlvbjoiVGhlIGhhbmdpbmctcHVuY3R1YXRpb24gQ1NTIHByb3BlcnR5IHNwZWNpZmllcyB3aGV0aGVyIGEgcHVuY3R1YXRpb24gbWFyayBzaG91bGQgaGFuZyBhdCB0aGUgc3RhcnQgb3IgZW5kIG9mIGEgbGluZSBvZiB0ZXh0LiBIYW5naW5nIHB1bmN0dWF0aW9uIG1heSBiZSBwbGFjZWQgb3V0c2lkZSB0aGUgbGluZSBib3guIn0se25hbWU6Imh5cGhlbmF0ZS1jaGFyYWN0ZXIiLHN5bnRheDoiYXV0byB8IDxzdHJpbmc+IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFMTA2IiwiRkY5OCIsIlMxNyIsIkMxMDYiLCJPOTIiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvaHlwaGVuYXRlLWNoYXJhY3RlciJ9XSxkZXNjcmlwdGlvbjoiQSBoeXBoZW5hdGUgY2hhcmFjdGVyIHVzZWQgYXQgdGhlIGVuZCBvZiBhIGxpbmUuIn0se25hbWU6Imh5cGhlbmF0ZS1saW1pdC1jaGFycyIsc3ludGF4OiJbIGF1dG8gfCA8aW50ZWdlcj4gXXsxLDN9IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFMTA5IiwiQzEwOSIsIk85NSJdLGRlc2NyaXB0aW9uOiJUaGUgaHlwaGVuYXRlLWxpbWl0LWNoYXJzIENTUyBwcm9wZXJ0eSBzcGVjaWZpZXMgdGhlIG1pbmltdW0gd29yZCBsZW5ndGggdG8gYWxsb3cgaHlwaGVuYXRpb24gb2Ygd29yZHMgYXMgd2VsbCBhcyB0aGUgbWluaW11bSBudW1iZXIgb2YgY2hhcmFjdGVycyBiZWZvcmUgYW5kIGFmdGVyIHRoZSBoeXBoZW4uIn0se25hbWU6ImltYWdlLXJlc29sdXRpb24iLHN0YXR1czoiZXhwZXJpbWVudGFsIixzeW50YXg6IlsgZnJvbS1pbWFnZSB8fCA8cmVzb2x1dGlvbj4gXSAmJiBzbmFwPyIscmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJUaGUgaW1hZ2UtcmVzb2x1dGlvbiBwcm9wZXJ0eSBzcGVjaWZpZXMgdGhlIGludHJpbnNpYyByZXNvbHV0aW9uIG9mIGFsbCByYXN0ZXIgaW1hZ2VzIHVzZWQgaW4gb3Igb24gdGhlIGVsZW1lbnQuIEl0IGFmZmVjdHMgYm90aCBjb250ZW50IGltYWdlcyAoZS5nLiByZXBsYWNlZCBlbGVtZW50cyBhbmQgZ2VuZXJhdGVkIGNvbnRlbnQpIGFuZCBkZWNvcmF0aXZlIGltYWdlcyAoc3VjaCBhcyBiYWNrZ3JvdW5kLWltYWdlKS4gVGhlIGludHJpbnNpYyByZXNvbHV0aW9uIG9mIGFuIGltYWdlIGlzIHVzZWQgdG8gZGV0ZXJtaW5lIHRoZSBpbWFnZeKAmXMgaW50cmluc2ljIGRpbWVuc2lvbnMuIn0se25hbWU6ImluaXRpYWwtbGV0dGVyIixzdGF0dXM6ImV4cGVyaW1lbnRhbCIsc3ludGF4OiJub3JtYWwgfCBbIDxudW1iZXI+IDxpbnRlZ2VyPj8gXSIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTExMCIsIlM5IiwiQzExMCIsIk85NiJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9pbml0aWFsLWxldHRlciJ9XSxkZXNjcmlwdGlvbjoiVGhlIGluaXRpYWwtbGV0dGVyIENTUyBwcm9wZXJ0eSBzcGVjaWZpZXMgc3R5bGluZyBmb3IgZHJvcHBlZCwgcmFpc2VkLCBhbmQgc3Vua2VuIGluaXRpYWwgbGV0dGVycy4ifSx7bmFtZToiaW5pdGlhbC1sZXR0ZXItYWxpZ24iLHN0YXR1czoiZXhwZXJpbWVudGFsIixzeW50YXg6IlsgYXV0byB8IGFscGhhYmV0aWMgfCBoYW5naW5nIHwgaWRlb2dyYXBoaWMgXSIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9pbml0aWFsLWxldHRlci1hbGlnbiJ9XSxkZXNjcmlwdGlvbjoiVGhlIGluaXRpYWwtbGV0dGVyLWFsaWduIENTUyBwcm9wZXJ0eSBzcGVjaWZpZXMgdGhlIGFsaWdubWVudCBvZiBpbml0aWFsIGxldHRlcnMgd2l0aGluIGEgcGFyYWdyYXBoLiJ9LHtuYW1lOiJpbnB1dC1zZWN1cml0eSIsc3ludGF4OiJhdXRvIHwgbm9uZSIsdmFsdWVzOlt7bmFtZToiYXV0byJ9LHtuYW1lOiJub25lIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRW5hYmxlcyBvciBkaXNhYmxlcyB0aGUgb2JzY3VyaW5nIGEgc2Vuc2l0aXZlIHRlc3QgaW5wdXQuIn0se25hbWU6Imluc2V0IixzeW50YXg6IjwndG9wJz57MSw0fSIscmVsZXZhbmNlOjU4LGJyb3dzZXJzOlsiRTg3IiwiRkY2NiIsIlMxNC4xIiwiQzg3IiwiTzczIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2luc2V0In1dLGRlc2NyaXB0aW9uOiJUaGUgaW5zZXQgQ1NTIHByb3BlcnR5IGRlZmluZXMgdGhlIGxvZ2ljYWwgYmxvY2sgYW5kIGlubGluZSBzdGFydCBhbmQgZW5kIG9mZnNldHMgb2YgYW4gZWxlbWVudCwgd2hpY2ggbWFwIHRvIHBoeXNpY2FsIG9mZnNldHMgZGVwZW5kaW5nIG9uIHRoZSBlbGVtZW50J3Mgd3JpdGluZyBtb2RlLCBkaXJlY3Rpb25hbGl0eSwgYW5kIHRleHQgb3JpZW50YXRpb24uIEl0IGNvcnJlc3BvbmRzIHRvIHRoZSB0b3AgYW5kIGJvdHRvbSwgb3IgcmlnaHQgYW5kIGxlZnQgcHJvcGVydGllcyBkZXBlbmRpbmcgb24gdGhlIHZhbHVlcyBkZWZpbmVkIGZvciB3cml0aW5nLW1vZGUsIGRpcmVjdGlvbiwgYW5kIHRleHQtb3JpZW50YXRpb24uIn0se25hbWU6Imluc2V0LWJsb2NrIixzeW50YXg6IjwndG9wJz57MSwyfSIscmVsZXZhbmNlOjUzLGJyb3dzZXJzOlsiRTg3IiwiRkY2MyIsIlMxNC4xIiwiQzg3IiwiTzczIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2luc2V0LWJsb2NrIn1dLGRlc2NyaXB0aW9uOiJUaGUgaW5zZXQtYmxvY2sgQ1NTIHByb3BlcnR5IGRlZmluZXMgdGhlIGxvZ2ljYWwgYmxvY2sgc3RhcnQgYW5kIGVuZCBvZmZzZXRzIG9mIGFuIGVsZW1lbnQsIHdoaWNoIG1hcHMgdG8gcGh5c2ljYWwgb2Zmc2V0cyBkZXBlbmRpbmcgb24gdGhlIGVsZW1lbnQncyB3cml0aW5nIG1vZGUsIGRpcmVjdGlvbmFsaXR5LCBhbmQgdGV4dCBvcmllbnRhdGlvbi4gSXQgY29ycmVzcG9uZHMgdG8gdGhlIHRvcCBhbmQgYm90dG9tLCBvciByaWdodCBhbmQgbGVmdCBwcm9wZXJ0aWVzIGRlcGVuZGluZyBvbiB0aGUgdmFsdWVzIGRlZmluZWQgZm9yIHdyaXRpbmctbW9kZSwgZGlyZWN0aW9uLCBhbmQgdGV4dC1vcmllbnRhdGlvbi4ifSx7bmFtZToiaW5zZXQtYmxvY2stZW5kIixzeW50YXg6IjwndG9wJz4iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU4NyIsIkZGNjMiLCJTMTQuMSIsIkM4NyIsIk83MyJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9pbnNldC1ibG9jay1lbmQifV0sZGVzY3JpcHRpb246IlRoZSBpbnNldC1ibG9jay1lbmQgQ1NTIHByb3BlcnR5IGRlZmluZXMgdGhlIGxvZ2ljYWwgYmxvY2sgZW5kIG9mZnNldCBvZiBhbiBlbGVtZW50LCB3aGljaCBtYXBzIHRvIGEgcGh5c2ljYWwgb2Zmc2V0IGRlcGVuZGluZyBvbiB0aGUgZWxlbWVudCdzIHdyaXRpbmcgbW9kZSwgZGlyZWN0aW9uYWxpdHksIGFuZCB0ZXh0IG9yaWVudGF0aW9uLiBJdCBjb3JyZXNwb25kcyB0byB0aGUgdG9wLCByaWdodCwgYm90dG9tLCBvciBsZWZ0IHByb3BlcnR5IGRlcGVuZGluZyBvbiB0aGUgdmFsdWVzIGRlZmluZWQgZm9yIHdyaXRpbmctbW9kZSwgZGlyZWN0aW9uLCBhbmQgdGV4dC1vcmllbnRhdGlvbi4ifSx7bmFtZToiaW5zZXQtYmxvY2stc3RhcnQiLHN5bnRheDoiPCd0b3AnPiIscmVsZXZhbmNlOjUzLGJyb3dzZXJzOlsiRTg3IiwiRkY2MyIsIlMxNC4xIiwiQzg3IiwiTzczIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2luc2V0LWJsb2NrLXN0YXJ0In1dLGRlc2NyaXB0aW9uOiJUaGUgaW5zZXQtYmxvY2stc3RhcnQgQ1NTIHByb3BlcnR5IGRlZmluZXMgdGhlIGxvZ2ljYWwgYmxvY2sgc3RhcnQgb2Zmc2V0IG9mIGFuIGVsZW1lbnQsIHdoaWNoIG1hcHMgdG8gYSBwaHlzaWNhbCBvZmZzZXQgZGVwZW5kaW5nIG9uIHRoZSBlbGVtZW50J3Mgd3JpdGluZyBtb2RlLCBkaXJlY3Rpb25hbGl0eSwgYW5kIHRleHQgb3JpZW50YXRpb24uIEl0IGNvcnJlc3BvbmRzIHRvIHRoZSB0b3AsIHJpZ2h0LCBib3R0b20sIG9yIGxlZnQgcHJvcGVydHkgZGVwZW5kaW5nIG9uIHRoZSB2YWx1ZXMgZGVmaW5lZCBmb3Igd3JpdGluZy1tb2RlLCBkaXJlY3Rpb24sIGFuZCB0ZXh0LW9yaWVudGF0aW9uLiJ9LHtuYW1lOiJpbnNldC1pbmxpbmUiLHN5bnRheDoiPCd0b3AnPnsxLDJ9IixyZWxldmFuY2U6NTMsYnJvd3NlcnM6WyJFODciLCJGRjYzIiwiUzE0LjEiLCJDODciLCJPNzMiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvaW5zZXQtaW5saW5lIn1dLGRlc2NyaXB0aW9uOiJUaGUgaW5zZXQtaW5saW5lIENTUyBwcm9wZXJ0eSBkZWZpbmVzIHRoZSBsb2dpY2FsIGJsb2NrIHN0YXJ0IGFuZCBlbmQgb2Zmc2V0cyBvZiBhbiBlbGVtZW50LCB3aGljaCBtYXBzIHRvIHBoeXNpY2FsIG9mZnNldHMgZGVwZW5kaW5nIG9uIHRoZSBlbGVtZW50J3Mgd3JpdGluZyBtb2RlLCBkaXJlY3Rpb25hbGl0eSwgYW5kIHRleHQgb3JpZW50YXRpb24uIEl0IGNvcnJlc3BvbmRzIHRvIHRoZSB0b3AgYW5kIGJvdHRvbSwgb3IgcmlnaHQgYW5kIGxlZnQgcHJvcGVydGllcyBkZXBlbmRpbmcgb24gdGhlIHZhbHVlcyBkZWZpbmVkIGZvciB3cml0aW5nLW1vZGUsIGRpcmVjdGlvbiwgYW5kIHRleHQtb3JpZW50YXRpb24uIn0se25hbWU6Imluc2V0LWlubGluZS1lbmQiLHN5bnRheDoiPCd0b3AnPiIscmVsZXZhbmNlOjUxLGJyb3dzZXJzOlsiRTg3IiwiRkY2MyIsIlMxNC4xIiwiQzg3IiwiTzczIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2luc2V0LWlubGluZS1lbmQifV0sZGVzY3JpcHRpb246IlRoZSBpbnNldC1pbmxpbmUtZW5kIENTUyBwcm9wZXJ0eSBkZWZpbmVzIHRoZSBsb2dpY2FsIGlubGluZSBlbmQgaW5zZXQgb2YgYW4gZWxlbWVudCwgd2hpY2ggbWFwcyB0byBhIHBoeXNpY2FsIGluc2V0IGRlcGVuZGluZyBvbiB0aGUgZWxlbWVudCdzIHdyaXRpbmcgbW9kZSwgZGlyZWN0aW9uYWxpdHksIGFuZCB0ZXh0IG9yaWVudGF0aW9uLiBJdCBjb3JyZXNwb25kcyB0byB0aGUgdG9wLCByaWdodCwgYm90dG9tLCBvciBsZWZ0IHByb3BlcnR5IGRlcGVuZGluZyBvbiB0aGUgdmFsdWVzIGRlZmluZWQgZm9yIHdyaXRpbmctbW9kZSwgZGlyZWN0aW9uLCBhbmQgdGV4dC1vcmllbnRhdGlvbi4ifSx7bmFtZToiaW5zZXQtaW5saW5lLXN0YXJ0IixzeW50YXg6IjwndG9wJz4iLHJlbGV2YW5jZTo1NCxicm93c2VyczpbIkU4NyIsIkZGNjMiLCJTMTQuMSIsIkM4NyIsIk83MyJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9pbnNldC1pbmxpbmUtc3RhcnQifV0sZGVzY3JpcHRpb246IlRoZSBpbnNldC1pbmxpbmUtc3RhcnQgQ1NTIHByb3BlcnR5IGRlZmluZXMgdGhlIGxvZ2ljYWwgaW5saW5lIHN0YXJ0IGluc2V0IG9mIGFuIGVsZW1lbnQsIHdoaWNoIG1hcHMgdG8gYSBwaHlzaWNhbCBvZmZzZXQgZGVwZW5kaW5nIG9uIHRoZSBlbGVtZW50J3Mgd3JpdGluZyBtb2RlLCBkaXJlY3Rpb25hbGl0eSwgYW5kIHRleHQgb3JpZW50YXRpb24uIEl0IGNvcnJlc3BvbmRzIHRvIHRoZSB0b3AsIHJpZ2h0LCBib3R0b20sIG9yIGxlZnQgcHJvcGVydHkgZGVwZW5kaW5nIG9uIHRoZSB2YWx1ZXMgZGVmaW5lZCBmb3Igd3JpdGluZy1tb2RlLCBkaXJlY3Rpb24sIGFuZCB0ZXh0LW9yaWVudGF0aW9uLiJ9LHtuYW1lOiJqdXN0aWZ5LXRyYWNrcyIsc3RhdHVzOiJleHBlcmltZW50YWwiLHN5bnRheDoiWyBub3JtYWwgfCA8Y29udGVudC1kaXN0cmlidXRpb24+IHwgPG92ZXJmbG93LXBvc2l0aW9uPj8gWyA8Y29udGVudC1wb3NpdGlvbj4gfCBsZWZ0IHwgcmlnaHQgXSBdIyIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRkY3NyJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9qdXN0aWZ5LXRyYWNrcyJ9XSxkZXNjcmlwdGlvbjoiVGhlIGp1c3RpZnktdHJhY2tzIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBhbGlnbm1lbnQgaW4gdGhlIG1hc29ucnkgYXhpcyBmb3IgZ3JpZCBjb250YWluZXJzIHRoYXQgaGF2ZSBtYXNvbnJ5IGluIHRoZWlyIGlubGluZSBheGlzIn0se25hbWU6ImxpbmUtY2xhbXAiLHN0YXR1czoiZXhwZXJpbWVudGFsIixzeW50YXg6Im5vbmUgfCA8aW50ZWdlcj4iLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiVGhlIGxpbmUtY2xhbXAgcHJvcGVydHkgYWxsb3dzIGxpbWl0aW5nIHRoZSBjb250ZW50cyBvZiBhIGJsb2NrIGNvbnRhaW5lciB0byB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBsaW5lczsgcmVtYWluaW5nIGNvbnRlbnQgaXMgZnJhZ21lbnRlZCBhd2F5IGFuZCBuZWl0aGVyIHJlbmRlcmVkIG5vciBtZWFzdXJlZC4gT3B0aW9uYWxseSwgaXQgYWxzbyBhbGxvd3MgaW5zZXJ0aW5nIGNvbnRlbnQgaW50byB0aGUgbGFzdCBsaW5lIGJveCB0byBpbmRpY2F0ZSB0aGUgY29udGludWl0eSBvZiB0cnVuY2F0ZWQvaW50ZXJydXB0ZWQgY29udGVudC4ifSx7bmFtZToibGluZS1oZWlnaHQtc3RlcCIsc3RhdHVzOiJleHBlcmltZW50YWwiLHN5bnRheDoiPGxlbmd0aD4iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU3OSIsIkM2MCIsIk80NyJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9saW5lLWhlaWdodC1zdGVwIn1dLGRlc2NyaXB0aW9uOiJUaGUgbGluZS1oZWlnaHQtc3RlcCBDU1MgcHJvcGVydHkgZGVmaW5lcyB0aGUgc3RlcCB1bml0cyBmb3IgbGluZSBib3ggaGVpZ2h0cy4gV2hlbiB0aGUgc3RlcCB1bml0IGlzIHBvc2l0aXZlLCBsaW5lIGJveCBoZWlnaHRzIGFyZSByb3VuZGVkIHVwIHRvIHRoZSBjbG9zZXN0IG11bHRpcGxlIG9mIHRoZSB1bml0LiBOZWdhdGl2ZSB2YWx1ZXMgYXJlIGludmFsaWQuIn0se25hbWU6Im1hcmdpbi1ibG9jayIsc3ludGF4OiI8J21hcmdpbi1sZWZ0Jz57MSwyfSIscmVsZXZhbmNlOjU0LGJyb3dzZXJzOlsiRTg3IiwiRkY2NiIsIlMxNC4xIiwiQzg3IiwiTzczIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL21hcmdpbi1ibG9jayJ9XSxkZXNjcmlwdGlvbjoiVGhlIG1hcmdpbi1ibG9jayBDU1MgcHJvcGVydHkgZGVmaW5lcyB0aGUgbG9naWNhbCBibG9jayBzdGFydCBhbmQgZW5kIG1hcmdpbnMgb2YgYW4gZWxlbWVudCwgd2hpY2ggbWFwcyB0byBwaHlzaWNhbCBtYXJnaW5zIGRlcGVuZGluZyBvbiB0aGUgZWxlbWVudCdzIHdyaXRpbmcgbW9kZSwgZGlyZWN0aW9uYWxpdHksIGFuZCB0ZXh0IG9yaWVudGF0aW9uLiJ9LHtuYW1lOiJtYXJnaW4taW5saW5lIixzeW50YXg6IjwnbWFyZ2luLWxlZnQnPnsxLDJ9IixyZWxldmFuY2U6NTQsYnJvd3NlcnM6WyJFODciLCJGRjY2IiwiUzE0LjEiLCJDODciLCJPNzMiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvbWFyZ2luLWlubGluZSJ9XSxkZXNjcmlwdGlvbjoiVGhlIG1hcmdpbi1pbmxpbmUgQ1NTIHByb3BlcnR5IGRlZmluZXMgdGhlIGxvZ2ljYWwgaW5saW5lIHN0YXJ0IGFuZCBlbmQgbWFyZ2lucyBvZiBhbiBlbGVtZW50LCB3aGljaCBtYXBzIHRvIHBoeXNpY2FsIG1hcmdpbnMgZGVwZW5kaW5nIG9uIHRoZSBlbGVtZW50J3Mgd3JpdGluZyBtb2RlLCBkaXJlY3Rpb25hbGl0eSwgYW5kIHRleHQgb3JpZW50YXRpb24uIn0se25hbWU6Im1hcmdpbi10cmltIixzdGF0dXM6ImV4cGVyaW1lbnRhbCIsc3ludGF4OiJub25lIHwgaW4tZmxvdyB8IGFsbCIsdmFsdWVzOlt7bmFtZToibm9uZSJ9LHtuYW1lOiJpbi1mbG93In0se25hbWU6ImFsbCJ9XSxyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJTMTYuNCJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9tYXJnaW4tdHJpbSJ9XSxkZXNjcmlwdGlvbjoiVGhlIG1hcmdpbi10cmltIHByb3BlcnR5IGFsbG93cyB0aGUgY29udGFpbmVyIHRvIHRyaW0gdGhlIG1hcmdpbnMgb2YgaXRzIGNoaWxkcmVuIHdoZXJlIHRoZXkgYWRqb2luIHRoZSBjb250YWluZXLigJlzIGVkZ2VzLiJ9LHtuYW1lOiJtYXNrIixzeW50YXg6IjxtYXNrLWxheWVyPiMiLHJlbGV2YW5jZTo1NSxicm93c2VyczpbIkU3OSIsIkZGNTMiLCJTMTUuNCIsIkMxIiwiTzE1Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL21hc2sifV0sZGVzY3JpcHRpb246IlRoZSBtYXNrIENTUyBwcm9wZXJ0eSBhbHRlcnMgdGhlIHZpc2liaWxpdHkgb2YgYW4gZWxlbWVudCBieSBlaXRoZXIgcGFydGlhbGx5IG9yIGZ1bGx5IGhpZGluZyBpdC4gVGhpcyBpcyBhY2NvbXBsaXNoZWQgYnkgZWl0aGVyIG1hc2tpbmcgb3IgY2xpcHBpbmcgdGhlIGltYWdlIGF0IHNwZWNpZmljIHBvaW50cy4ifSx7bmFtZToibWFzay1ib3JkZXIiLHN5bnRheDoiPCdtYXNrLWJvcmRlci1zb3VyY2UnPiB8fCA8J21hc2stYm9yZGVyLXNsaWNlJz4gWyAvIDwnbWFzay1ib3JkZXItd2lkdGgnPj8gWyAvIDwnbWFzay1ib3JkZXItb3V0c2V0Jz4gXT8gXT8gfHwgPCdtYXNrLWJvcmRlci1yZXBlYXQnPiB8fCA8J21hc2stYm9yZGVyLW1vZGUnPiIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTc5IiwiUzE3LjIiLCJDMSIsIk8xNSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9tYXNrLWJvcmRlciJ9XSxkZXNjcmlwdGlvbjpgVGhlIG1hc2stYm9yZGVyIENTUyBwcm9wZXJ0eSBsZXRzIHlvdSBjcmVhdGUgYSBtYXNrIGFsb25nIHRoZSBlZGdlIG9mIGFuIGVsZW1lbnQncyBib3JkZXIuCgpUaGlzIHByb3BlcnR5IGlzIGEgc2hvcnRoYW5kIGZvciBtYXNrLWJvcmRlci1zb3VyY2UsIG1hc2stYm9yZGVyLXNsaWNlLCBtYXNrLWJvcmRlci13aWR0aCwgbWFzay1ib3JkZXItb3V0c2V0LCBtYXNrLWJvcmRlci1yZXBlYXQsIGFuZCBtYXNrLWJvcmRlci1tb2RlLiBBcyB3aXRoIGFsbCBzaG9ydGhhbmQgcHJvcGVydGllcywgYW55IG9taXR0ZWQgc3ViLXZhbHVlcyB3aWxsIGJlIHNldCB0byB0aGVpciBpbml0aWFsIHZhbHVlLmB9LHtuYW1lOiJtYXNrLWJvcmRlci1tb2RlIixzeW50YXg6Imx1bWluYW5jZSB8IGFscGhhIix2YWx1ZXM6W3tuYW1lOiJsdW1pbmFuY2UifSx7bmFtZToiYWxwaGEifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJUaGUgbWFzay1ib3JkZXItbW9kZSBDU1MgcHJvcGVydHkgc3BlY2lmaWVzIHRoZSBibGVuZGluZyBtb2RlIHVzZWQgaW4gYSBtYXNrIGJvcmRlci4ifSx7bmFtZToibWFzay1ib3JkZXItb3V0c2V0IixzeW50YXg6IlsgPGxlbmd0aD4gfCA8bnVtYmVyPiBdezEsNH0iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU3OSIsIlMxNy4yIiwiQzEiLCJPMTUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvbWFzay1ib3JkZXItb3V0c2V0In1dLGRlc2NyaXB0aW9uOiJUaGUgbWFzay1ib3JkZXItb3V0c2V0IENTUyBwcm9wZXJ0eSBzcGVjaWZpZXMgdGhlIGRpc3RhbmNlIGJ5IHdoaWNoIGFuIGVsZW1lbnQncyBtYXNrIGJvcmRlciBpcyBzZXQgb3V0IGZyb20gaXRzIGJvcmRlciBib3guIn0se25hbWU6Im1hc2stYm9yZGVyLXJlcGVhdCIsc3ludGF4OiJbIHN0cmV0Y2ggfCByZXBlYXQgfCByb3VuZCB8IHNwYWNlIF17MSwyfSIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTc5IiwiUzE3LjIiLCJDMSIsIk8xNSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9tYXNrLWJvcmRlci1yZXBlYXQifV0sZGVzY3JpcHRpb246IlRoZSBtYXNrLWJvcmRlci1yZXBlYXQgQ1NTIHByb3BlcnR5IGRlZmluZXMgaG93IHRoZSBlZGdlIHJlZ2lvbnMgb2YgYSBzb3VyY2UgaW1hZ2UgYXJlIGFkanVzdGVkIHRvIGZpdCB0aGUgZGltZW5zaW9ucyBvZiBhbiBlbGVtZW50J3MgbWFzayBib3JkZXIuIn0se25hbWU6Im1hc2stYm9yZGVyLXNsaWNlIixzeW50YXg6IjxudW1iZXItcGVyY2VudGFnZT57MSw0fSBmaWxsPyIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTc5IiwiUzE3LjIiLCJDMSIsIk8xNSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9tYXNrLWJvcmRlci1zbGljZSJ9XSxkZXNjcmlwdGlvbjoiVGhlIG1hc2stYm9yZGVyLXNsaWNlIENTUyBwcm9wZXJ0eSBkaXZpZGVzIHRoZSBpbWFnZSBzcGVjaWZpZWQgYnkgbWFzay1ib3JkZXItc291cmNlIGludG8gcmVnaW9ucy4gVGhlc2UgcmVnaW9ucyBhcmUgdXNlZCB0byBmb3JtIHRoZSBjb21wb25lbnRzIG9mIGFuIGVsZW1lbnQncyBtYXNrIGJvcmRlci4ifSx7bmFtZToibWFzay1ib3JkZXItc291cmNlIixzeW50YXg6Im5vbmUgfCA8aW1hZ2U+IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFNzkiLCJTMTcuMiIsIkMxIiwiTzE1Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL21hc2stYm9yZGVyLXNvdXJjZSJ9XSxkZXNjcmlwdGlvbjpgVGhlIG1hc2stYm9yZGVyLXNvdXJjZSBDU1MgcHJvcGVydHkgc3BlY2lmaWVzIHRoZSBzb3VyY2UgaW1hZ2UgdXNlZCB0byBjcmVhdGUgYW4gZWxlbWVudCdzIG1hc2sgYm9yZGVyLgoKVGhlIG1hc2stYm9yZGVyLXNsaWNlIHByb3BlcnR5IGlzIHVzZWQgdG8gZGl2aWRlIHRoZSBzb3VyY2UgaW1hZ2UgaW50byByZWdpb25zLCB3aGljaCBhcmUgdGhlbiBkeW5hbWljYWxseSBhcHBsaWVkIHRvIHRoZSBmaW5hbCBtYXNrIGJvcmRlci5gfSx7bmFtZToibWFzay1ib3JkZXItd2lkdGgiLHN5bnRheDoiWyA8bGVuZ3RoLXBlcmNlbnRhZ2U+IHwgPG51bWJlcj4gfCBhdXRvIF17MSw0fSIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTc5IiwiUzE3LjIiLCJDMSIsIk8xNSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9tYXNrLWJvcmRlci13aWR0aCJ9XSxkZXNjcmlwdGlvbjoiVGhlIG1hc2stYm9yZGVyLXdpZHRoIENTUyBwcm9wZXJ0eSBzcGVjaWZpZXMgdGhlIHdpZHRoIG9mIGFuIGVsZW1lbnQncyBtYXNrIGJvcmRlci4ifSx7bmFtZToibWFzay1jbGlwIixzeW50YXg6IlsgPGdlb21ldHJ5LWJveD4gfCBuby1jbGlwIF0jIixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFMTIwIiwiRkY1MyIsIlMxNS40IiwiQzEyMCIsIk8xMDYiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvbWFzay1jbGlwIn1dLGRlc2NyaXB0aW9uOiJUaGUgbWFzay1jbGlwIENTUyBwcm9wZXJ0eSBkZXRlcm1pbmVzIHRoZSBhcmVhLCB3aGljaCBpcyBhZmZlY3RlZCBieSBhIG1hc2suIFRoZSBwYWludGVkIGNvbnRlbnQgb2YgYW4gZWxlbWVudCBtdXN0IGJlIHJlc3RyaWN0ZWQgdG8gdGhpcyBhcmVhLiJ9LHtuYW1lOiJtYXNrLWNvbXBvc2l0ZSIsc3ludGF4OiI8Y29tcG9zaXRpbmctb3BlcmF0b3I+IyIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTE4IiwiRkY1MyIsIlMxNS40IiwiQzEyMCIsIk8xMDYiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvbWFzay1jb21wb3NpdGUifV0sZGVzY3JpcHRpb246IlRoZSBtYXNrLWNvbXBvc2l0ZSBDU1MgcHJvcGVydHkgcmVwcmVzZW50cyBhIGNvbXBvc2l0aW5nIG9wZXJhdGlvbiB1c2VkIG9uIHRoZSBjdXJyZW50IG1hc2sgbGF5ZXIgd2l0aCB0aGUgbWFzayBsYXllcnMgYmVsb3cgaXQuIn0se25hbWU6Im1hc29ucnktYXV0by1mbG93IixzdGF0dXM6ImV4cGVyaW1lbnRhbCIsc3ludGF4OiJbIHBhY2sgfCBuZXh0IF0gfHwgWyBkZWZpbml0ZS1maXJzdCB8IG9yZGVyZWQgXSIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiU3ByZXZpZXciXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvbWFzb25yeS1hdXRvLWZsb3cifV0sZGVzY3JpcHRpb246IlRoZSBtYXNvbnJ5LWF1dG8tZmxvdyBDU1MgcHJvcGVydHkgbW9kaWZpZXMgaG93IGl0ZW1zIGFyZSBwbGFjZWQgd2hlbiB1c2luZyBtYXNvbnJ5IGluIENTUyBHcmlkIExheW91dC4ifSx7bmFtZToibWF0aC1kZXB0aCIsc3ludGF4OiJhdXRvLWFkZCB8IGFkZCg8aW50ZWdlcj4pIHwgPGludGVnZXI+IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFMTA5IiwiRkYxMTciLCJDMTA5IiwiTzk1Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL21hdGgtZGVwdGgifV0sZGVzY3JpcHRpb246J0Rlc2NyaWJlIGEgbm90aW9uIG9mICJkZXB0aCIgZm9yIGVhY2ggZWxlbWVudCBvZiBhIG1hdGhlbWF0aWNhbCBmb3JtdWxhLCB3aXRoIHJlc3BlY3QgdG8gdGhlIHRvcC1sZXZlbCBjb250YWluZXIgb2YgdGhhdCBmb3JtdWxhLid9LHtuYW1lOiJtYXRoLXNoaWZ0IixzeW50YXg6Im5vcm1hbCB8IGNvbXBhY3QiLHZhbHVlczpbe25hbWU6Im5vcm1hbCJ9LHtuYW1lOiJjb21wYWN0In1dLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkUxMDkiLCJDMTA5IiwiTzk1Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL21hdGgtc2hpZnQifV0sZGVzY3JpcHRpb246IlVzZWQgZm9yIHBvc2l0aW9uaW5nIHN1cGVyc2NyaXB0IGR1cmluZyB0aGUgbGF5b3V0IG9mIE1hdGhNTCBzY3JpcHRlZCBlbGVtZW50cy4ifSx7bmFtZToibWF0aC1zdHlsZSIsc3ludGF4OiJub3JtYWwgfCBjb21wYWN0Iix2YWx1ZXM6W3tuYW1lOiJub3JtYWwifSx7bmFtZToiY29tcGFjdCJ9XSxyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFMTA5IiwiRkYxMTciLCJTMTQuMSIsIkMxMDkiLCJPOTUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvbWF0aC1zdHlsZSJ9XSxkZXNjcmlwdGlvbjoiVGhlIG1hdGgtc3R5bGUgcHJvcGVydHkgaW5kaWNhdGVzIHdoZXRoZXIgTWF0aE1MIGVxdWF0aW9ucyBzaG91bGQgcmVuZGVyIHdpdGggbm9ybWFsIG9yIGNvbXBhY3QgaGVpZ2h0LiJ9LHtuYW1lOiJtYXgtbGluZXMiLHN0YXR1czoiZXhwZXJpbWVudGFsIixzeW50YXg6Im5vbmUgfCA8aW50ZWdlcj4iLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiVGhlIG1heC1saW5lcyBwcm9wZXJ0eSBmb3JjZXMgYSBicmVhayBhZnRlciBhIHNldCBudW1iZXIgb2YgbGluZXMifSx7bmFtZToib2Zmc2V0IixzeW50YXg6IlsgPCdvZmZzZXQtcG9zaXRpb24nPj8gWyA8J29mZnNldC1wYXRoJz4gWyA8J29mZnNldC1kaXN0YW5jZSc+IHx8IDwnb2Zmc2V0LXJvdGF0ZSc+IF0/IF0/IF0hIFsgLyA8J29mZnNldC1hbmNob3InPiBdPyIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTc5IiwiRkY3MiIsIlMxNiIsIkM1NSIsIk80MiJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9vZmZzZXQifV0sZGVzY3JpcHRpb246IlRoZSBvZmZzZXQgQ1NTIHByb3BlcnR5IGlzIGEgc2hvcnRoYW5kIHByb3BlcnR5IGZvciBhbmltYXRpbmcgYW4gZWxlbWVudCBhbG9uZyBhIGRlZmluZWQgcGF0aC4ifSx7bmFtZToib2Zmc2V0LWFuY2hvciIsc3ludGF4OiJhdXRvIHwgPHBvc2l0aW9uPiIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTExNiIsIkZGNzIiLCJTMTYiLCJDMTE2IiwiTzEwMiJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9vZmZzZXQtYW5jaG9yIn1dLGRlc2NyaXB0aW9uOiJEZWZpbmVzIGFuIGFuY2hvciBwb2ludCBvZiB0aGUgYm94IHBvc2l0aW9uZWQgYWxvbmcgdGhlIHBhdGguIFRoZSBhbmNob3IgcG9pbnQgc3BlY2lmaWVzIHRoZSBwb2ludCBvZiB0aGUgYm94IHdoaWNoIGlzIHRvIGJlIGNvbnNpZGVyZWQgYXMgdGhlIHBvaW50IHRoYXQgaXMgbW92ZWQgYWxvbmcgdGhlIHBhdGguIn0se25hbWU6Im9mZnNldC1kaXN0YW5jZSIsc3ludGF4OiI8bGVuZ3RoLXBlcmNlbnRhZ2U+IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFNzkiLCJGRjcyIiwiUzE2IiwiQzU1IiwiTzQyIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL29mZnNldC1kaXN0YW5jZSJ9XSxkZXNjcmlwdGlvbjoiVGhlIG9mZnNldC1kaXN0YW5jZSBDU1MgcHJvcGVydHkgc3BlY2lmaWVzIGEgcG9zaXRpb24gYWxvbmcgYW4gb2Zmc2V0LXBhdGguIn0se25hbWU6Im9mZnNldC1wYXRoIixzeW50YXg6Im5vbmUgfCA8b2Zmc2V0LXBhdGg+IHx8IDxjb29yZC1ib3g+IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFNzkiLCJGRjcyIiwiUzE1LjQiLCJDNTUiLCJPNDUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvb2Zmc2V0LXBhdGgifV0sZGVzY3JpcHRpb246YFRoZSBvZmZzZXQtcGF0aCBDU1MgcHJvcGVydHkgc3BlY2lmaWVzIHRoZSBvZmZzZXQgcGF0aCB3aGVyZSB0aGUgZWxlbWVudCBnZXRzIHBvc2l0aW9uZWQuIFRoZSBleGFjdCBlbGVtZW504oCZcyBwb3NpdGlvbiBvbiB0aGUgb2Zmc2V0IHBhdGggaXMgZGV0ZXJtaW5lZCBieSB0aGUgb2Zmc2V0LWRpc3RhbmNlIHByb3BlcnR5LiBBbiBvZmZzZXQgcGF0aCBpcyBlaXRoZXIgYSBzcGVjaWZpZWQgcGF0aCB3aXRoIG9uZSBvciBtdWx0aXBsZSBzdWItcGF0aHMgb3IgdGhlIGdlb21ldHJ5IG9mIGEgbm90LXN0eWxlZCBiYXNpYyBzaGFwZS4gRWFjaCBzaGFwZSBvciBwYXRoIG11c3QgZGVmaW5lIGFuIGluaXRpYWwgcG9zaXRpb24gZm9yIHRoZSBjb21wdXRlZCB2YWx1ZSBvZiAiMCIgZm9yIG9mZnNldC1kaXN0YW5jZSBhbmQgYW4gaW5pdGlhbCBkaXJlY3Rpb24gd2hpY2ggc3BlY2lmaWVzIHRoZSByb3RhdGlvbiBvZiB0aGUgb2JqZWN0IHRvIHRoZSBpbml0aWFsIHBvc2l0aW9uLgoKSW4gdGhpcyBzcGVjaWZpY2F0aW9uLCBhIGRpcmVjdGlvbiAob3Igcm90YXRpb24pIG9mIDAgZGVncmVlcyBpcyBlcXVpdmFsZW50IHRvIHRoZSBkaXJlY3Rpb24gb2YgdGhlIHBvc2l0aXZlIHgtYXhpcyBpbiB0aGUgb2JqZWN04oCZcyBsb2NhbCBjb29yZGluYXRlIHN5c3RlbS4gSW4gb3RoZXIgd29yZHMsIGEgcm90YXRpb24gb2YgMCBkZWdyZWUgcG9pbnRzIHRvIHRoZSByaWdodCBzaWRlIG9mIHRoZSBVQSBpZiB0aGUgb2JqZWN0IGFuZCBpdHMgYW5jZXN0b3JzIGhhdmUgbm8gdHJhbnNmb3JtYXRpb24gYXBwbGllZC5gfSx7bmFtZToib2Zmc2V0LXBvc2l0aW9uIixzeW50YXg6Im5vcm1hbCB8IGF1dG8gfCA8cG9zaXRpb24+IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFMTE2IiwiRkYxMjIiLCJTMTYiLCJDMTE2IiwiTzEwMiJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9vZmZzZXQtcG9zaXRpb24ifV0sZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgaW5pdGlhbCBwb3NpdGlvbiBvZiB0aGUgb2Zmc2V0IHBhdGguIElmIHBvc2l0aW9uIGlzIHNwZWNpZmllZCB3aXRoIHN0YXRpYywgb2Zmc2V0LXBvc2l0aW9uIHdvdWxkIGJlIGlnbm9yZWQuIn0se25hbWU6Im9mZnNldC1yb3RhdGUiLHN5bnRheDoiWyBhdXRvIHwgcmV2ZXJzZSBdIHx8IDxhbmdsZT4iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU3OSIsIkZGNzIiLCJTMTYiLCJDNTYiLCJPNDMiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvb2Zmc2V0LXJvdGF0ZSJ9XSxkZXNjcmlwdGlvbjoiVGhlIG9mZnNldC1yb3RhdGUgQ1NTIHByb3BlcnR5IGRlZmluZXMgdGhlIGRpcmVjdGlvbiBvZiB0aGUgZWxlbWVudCB3aGlsZSBwb3NpdGlvbmluZyBhbG9uZyB0aGUgb2Zmc2V0IHBhdGguIn0se25hbWU6Im92ZXJmbG93LWFuY2hvciIsc3ludGF4OiJhdXRvIHwgbm9uZSIsdmFsdWVzOlt7bmFtZToiYXV0byJ9LHtuYW1lOiJub25lIn1dLHJlbGV2YW5jZTo1Mixicm93c2VyczpbIkU3OSIsIkZGNjYiLCJTcHJldmlldyIsIkM1NiIsIk80MyJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9vdmVyZmxvdy1hbmNob3IifV0sZGVzY3JpcHRpb246IlRoZSBvdmVyZmxvdy1hbmNob3IgQ1NTIHByb3BlcnR5IHByb3ZpZGVzIGEgd2F5IHRvIG9wdCBvdXQgYnJvd3NlciBzY3JvbGwgYW5jaG9yaW5nIGJlaGF2aW9yIHdoaWNoIGFkanVzdHMgc2Nyb2xsIHBvc2l0aW9uIHRvIG1pbmltaXplIGNvbnRlbnQgc2hpZnRzLiJ9LHtuYW1lOiJvdmVyZmxvdy1ibG9jayIsc3ludGF4OiJ2aXNpYmxlIHwgaGlkZGVuIHwgY2xpcCB8IHNjcm9sbCB8IGF1dG8iLHZhbHVlczpbe25hbWU6InZpc2libGUifSx7bmFtZToiaGlkZGVuIn0se25hbWU6ImNsaXAifSx7bmFtZToic2Nyb2xsIn0se25hbWU6ImF1dG8ifV0scmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRkY2OSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9vdmVyZmxvdy1ibG9jayJ9XSxkZXNjcmlwdGlvbjoiVGhlIG92ZXJmbG93LWJsb2NrIENTUyBtZWRpYSBmZWF0dXJlIGNhbiBiZSB1c2VkIHRvIHRlc3QgaG93IHRoZSBvdXRwdXQgZGV2aWNlIGhhbmRsZXMgY29udGVudCB0aGF0IG92ZXJmbG93cyB0aGUgaW5pdGlhbCBjb250YWluaW5nIGJsb2NrIGFsb25nIHRoZSBibG9jayBheGlzLiJ9LHtuYW1lOiJvdmVyZmxvdy1jbGlwLWJveCIsc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiJwYWRkaW5nLWJveCB8IGNvbnRlbnQtYm94Iix2YWx1ZXM6W3tuYW1lOiJwYWRkaW5nLWJveCJ9LHtuYW1lOiJjb250ZW50LWJveCJ9XSxyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiVGhlIG92ZXJmbG93LWNsaXAtYm94IENTUyBwcm9wZXJ0eSBzcGVjaWZpZXMgcmVsYXRpdmUgdG8gd2hpY2ggYm94IHRoZSBjbGlwcGluZyBoYXBwZW5zIHdoZW4gdGhlcmUgaXMgYW4gb3ZlcmZsb3cuIEl0IGlzIHNob3J0IGhhbmQgZm9yIHRoZSBvdmVyZmxvdy1jbGlwLWJveC1pbmxpbmUgYW5kIG92ZXJmbG93LWNsaXAtYm94LWJsb2NrIHByb3BlcnRpZXMuIn0se25hbWU6Im92ZXJmbG93LWNsaXAtbWFyZ2luIixzeW50YXg6Ijx2aXN1YWwtYm94PiB8fCA8bGVuZ3RoIFswLOKInl0+IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFOTAiLCJGRjEwMiIsIkM5MCIsIk83NiJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9vdmVyZmxvdy1jbGlwLW1hcmdpbiJ9XSxkZXNjcmlwdGlvbjoiVGhlIG92ZXJmbG93LWNsaXAtbWFyZ2luIENTUyBwcm9wZXJ0eSBkZXRlcm1pbmVzIGhvdyBmYXIgb3V0c2lkZSBpdHMgYm91bmRzIGFuIGVsZW1lbnQgd2l0aCBvdmVyZmxvdzogY2xpcCBtYXkgYmUgcGFpbnRlZCBiZWZvcmUgYmVpbmcgY2xpcHBlZC4ifSx7bmFtZToib3ZlcmZsb3ctaW5saW5lIixzeW50YXg6InZpc2libGUgfCBoaWRkZW4gfCBjbGlwIHwgc2Nyb2xsIHwgYXV0byIsdmFsdWVzOlt7bmFtZToidmlzaWJsZSJ9LHtuYW1lOiJoaWRkZW4ifSx7bmFtZToiY2xpcCJ9LHtuYW1lOiJzY3JvbGwifSx7bmFtZToiYXV0byJ9XSxyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJGRjY5Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL292ZXJmbG93LWlubGluZSJ9XSxkZXNjcmlwdGlvbjoiVGhlIG92ZXJmbG93LWlubGluZSBDU1MgbWVkaWEgZmVhdHVyZSBjYW4gYmUgdXNlZCB0byB0ZXN0IGhvdyB0aGUgb3V0cHV0IGRldmljZSBoYW5kbGVzIGNvbnRlbnQgdGhhdCBvdmVyZmxvd3MgdGhlIGluaXRpYWwgY29udGFpbmluZyBibG9jayBhbG9uZyB0aGUgaW5saW5lIGF4aXMuIn0se25hbWU6Im92ZXJsYXkiLHN0YXR1czoiZXhwZXJpbWVudGFsIixzeW50YXg6Im5vbmUgfCBhdXRvIix2YWx1ZXM6W3tuYW1lOiJub25lIn0se25hbWU6ImF1dG8ifV0scmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTExNyIsIkMxMTciLCJPMTAzIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL292ZXJsYXkifV0sZGVzY3JpcHRpb246J1RoZSBvdmVybGF5IENTUyBwcm9wZXJ0eSBzcGVjaWZpZXMgd2hldGhlciBhbiBlbGVtZW50IGFwcGVhcmluZyBpbiB0aGUgdG9wIGxheWVyIChmb3IgZXhhbXBsZSwgYSBzaG93biBwb3BvdmVyIG9yIG1vZGFsIHt7aHRtbGVsZW1lbnQoImRpYWxvZyIpfX0gZWxlbWVudCkgaXMgYWN0dWFsbHkgcmVuZGVyZWQgaW4gdGhlIHRvcCBsYXllci4gVGhpcyBwcm9wZXJ0eSBpcyBvbmx5IHJlbGV2YW50IHdpdGhpbiBhIGxpc3Qgb2YgdHJhbnNpdGlvbi1wcm9wZXJ0eSB2YWx1ZXMsIGFuZCBvbmx5IGlmIGFsbG93LWRpc2NyZXRlIGlzIHNldCBhcyB0aGUgdHJhbnNpdGlvbi1iZWhhdmlvci4nfSx7bmFtZToib3ZlcnNjcm9sbC1iZWhhdmlvciIsc3ludGF4OiJbIGNvbnRhaW4gfCBub25lIHwgYXV0byBdezEsMn0iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkUxOCIsIkZGNTkiLCJTMTYiLCJDNjMiLCJPNTAiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvb3ZlcnNjcm9sbC1iZWhhdmlvciJ9XSxkZXNjcmlwdGlvbjoiVGhlIG92ZXJzY3JvbGwtYmVoYXZpb3IgQ1NTIHByb3BlcnR5IGlzIHNob3J0aGFuZCBmb3IgdGhlIG92ZXJzY3JvbGwtYmVoYXZpb3IteCBhbmQgb3ZlcnNjcm9sbC1iZWhhdmlvci15IHByb3BlcnRpZXMsIHdoaWNoIGFsbG93IHlvdSB0byBjb250cm9sIHRoZSBicm93c2VyJ3Mgc2Nyb2xsIG92ZXJmbG93IGJlaGF2aW9yIOKAlCB3aGF0IGhhcHBlbnMgd2hlbiB0aGUgYm91bmRhcnkgb2YgYSBzY3JvbGxpbmcgYXJlYSBpcyByZWFjaGVkLiJ9LHtuYW1lOiJvdmVyc2Nyb2xsLWJlaGF2aW9yLWJsb2NrIixzeW50YXg6ImNvbnRhaW4gfCBub25lIHwgYXV0byIsdmFsdWVzOlt7bmFtZToiY29udGFpbiJ9LHtuYW1lOiJub25lIn0se25hbWU6ImF1dG8ifV0scmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTc5IiwiRkY3MyIsIlMxNiIsIkM3NyIsIk82NCJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9vdmVyc2Nyb2xsLWJlaGF2aW9yLWJsb2NrIn1dLGRlc2NyaXB0aW9uOiJUaGUgb3ZlcnNjcm9sbC1iZWhhdmlvci1ibG9jayBDU1MgcHJvcGVydHkgc2V0cyB0aGUgYnJvd3NlcidzIGJlaGF2aW9yIHdoZW4gdGhlIGJsb2NrIGRpcmVjdGlvbiBib3VuZGFyeSBvZiBhIHNjcm9sbGluZyBhcmVhIGlzIHJlYWNoZWQuIn0se25hbWU6Im92ZXJzY3JvbGwtYmVoYXZpb3ItaW5saW5lIixzeW50YXg6ImNvbnRhaW4gfCBub25lIHwgYXV0byIsdmFsdWVzOlt7bmFtZToiY29udGFpbiJ9LHtuYW1lOiJub25lIn0se25hbWU6ImF1dG8ifV0scmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTc5IiwiRkY3MyIsIlMxNiIsIkM3NyIsIk82NCJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9vdmVyc2Nyb2xsLWJlaGF2aW9yLWlubGluZSJ9XSxkZXNjcmlwdGlvbjoiVGhlIG92ZXJzY3JvbGwtYmVoYXZpb3ItaW5saW5lIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBicm93c2VyJ3MgYmVoYXZpb3Igd2hlbiB0aGUgaW5saW5lIGRpcmVjdGlvbiBib3VuZGFyeSBvZiBhIHNjcm9sbGluZyBhcmVhIGlzIHJlYWNoZWQuIn0se25hbWU6Im92ZXJzY3JvbGwtYmVoYXZpb3IteCIsc3ludGF4OiJjb250YWluIHwgbm9uZSB8IGF1dG8iLHZhbHVlczpbe25hbWU6ImNvbnRhaW4ifSx7bmFtZToibm9uZSJ9LHtuYW1lOiJhdXRvIn1dLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkUxOCIsIkZGNTkiLCJTMTYiLCJDNjMiLCJPNTAiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvb3ZlcnNjcm9sbC1iZWhhdmlvci14In1dLGRlc2NyaXB0aW9uOiJUaGUgb3ZlcnNjcm9sbC1iZWhhdmlvci14IENTUyBwcm9wZXJ0eSBpcyBhbGxvd3MgeW91IHRvIGNvbnRyb2wgdGhlIGJyb3dzZXIncyBzY3JvbGwgb3ZlcmZsb3cgYmVoYXZpb3Ig4oCUIHdoYXQgaGFwcGVucyB3aGVuIHRoZSBib3VuZGFyeSBvZiBhIHNjcm9sbGluZyBhcmVhIGlzIHJlYWNoZWQg4oCUIGluIHRoZSB4IGF4aXMgZGlyZWN0aW9uLiJ9LHtuYW1lOiJvdmVyc2Nyb2xsLWJlaGF2aW9yLXkiLHN5bnRheDoiY29udGFpbiB8IG5vbmUgfCBhdXRvIix2YWx1ZXM6W3tuYW1lOiJjb250YWluIn0se25hbWU6Im5vbmUifSx7bmFtZToiYXV0byJ9XSxyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFMTgiLCJGRjU5IiwiUzE2IiwiQzYzIiwiTzUwIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL292ZXJzY3JvbGwtYmVoYXZpb3IteSJ9XSxkZXNjcmlwdGlvbjoiVGhlIG92ZXJzY3JvbGwtYmVoYXZpb3IteSBDU1MgcHJvcGVydHkgaXMgYWxsb3dzIHlvdSB0byBjb250cm9sIHRoZSBicm93c2VyJ3Mgc2Nyb2xsIG92ZXJmbG93IGJlaGF2aW9yIOKAlCB3aGF0IGhhcHBlbnMgd2hlbiB0aGUgYm91bmRhcnkgb2YgYSBzY3JvbGxpbmcgYXJlYSBpcyByZWFjaGVkIOKAlCBpbiB0aGUgeSBheGlzIGRpcmVjdGlvbi4ifSx7bmFtZToicGFkZGluZy1ibG9jayIsc3ludGF4OiI8J3BhZGRpbmctbGVmdCc+ezEsMn0iLHJlbGV2YW5jZTo1NCxicm93c2VyczpbIkU4NyIsIkZGNjYiLCJTMTQuMSIsIkM4NyIsIk83MyJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9wYWRkaW5nLWJsb2NrIn1dLGRlc2NyaXB0aW9uOiJUaGUgcGFkZGluZy1ibG9jayBDU1MgcHJvcGVydHkgZGVmaW5lcyB0aGUgbG9naWNhbCBibG9jayBzdGFydCBhbmQgZW5kIHBhZGRpbmcgb2YgYW4gZWxlbWVudCwgd2hpY2ggbWFwcyB0byBwaHlzaWNhbCBwYWRkaW5nIHByb3BlcnRpZXMgZGVwZW5kaW5nIG9uIHRoZSBlbGVtZW50J3Mgd3JpdGluZyBtb2RlLCBkaXJlY3Rpb25hbGl0eSwgYW5kIHRleHQgb3JpZW50YXRpb24uIn0se25hbWU6InBhZGRpbmctaW5saW5lIixzeW50YXg6IjwncGFkZGluZy1sZWZ0Jz57MSwyfSIscmVsZXZhbmNlOjU0LGJyb3dzZXJzOlsiRTg3IiwiRkY2NiIsIlMxNC4xIiwiQzg3IiwiTzczIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3BhZGRpbmctaW5saW5lIn1dLGRlc2NyaXB0aW9uOiJUaGUgcGFkZGluZy1pbmxpbmUgQ1NTIHByb3BlcnR5IGRlZmluZXMgdGhlIGxvZ2ljYWwgaW5saW5lIHN0YXJ0IGFuZCBlbmQgcGFkZGluZyBvZiBhbiBlbGVtZW50LCB3aGljaCBtYXBzIHRvIHBoeXNpY2FsIHBhZGRpbmcgcHJvcGVydGllcyBkZXBlbmRpbmcgb24gdGhlIGVsZW1lbnQncyB3cml0aW5nIG1vZGUsIGRpcmVjdGlvbmFsaXR5LCBhbmQgdGV4dCBvcmllbnRhdGlvbi4ifSx7bmFtZToicGFnZSIsc3ludGF4OiJhdXRvIHwgPGN1c3RvbS1pZGVudD4iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU4NSIsIkZGMTEwIiwiUzEzLjEiLCJDODUiLCJPNzEiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvcGFnZSJ9XSxkZXNjcmlwdGlvbjoiVGhlIHBhZ2UgQ1NTIHByb3BlcnR5IGlzIHVzZWQgdG8gc3BlY2lmeSB0aGUgbmFtZWQgcGFnZSwgYSBzcGVjaWZpYyB0eXBlIG9mIHBhZ2UgZGVmaW5lZCBieSB0aGUgQHBhZ2UgYXQtcnVsZS4ifSx7bmFtZToicGxhY2UtY29udGVudCIsc3ludGF4OiI8J2FsaWduLWNvbnRlbnQnPiA8J2p1c3RpZnktY29udGVudCc+PyIscmVsZXZhbmNlOjUxLGJyb3dzZXJzOlsiRTc5IiwiRkY0NSIsIlM5IiwiQzU5IiwiTzQ2Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3BsYWNlLWNvbnRlbnQifV0sZGVzY3JpcHRpb246IlRoZSBwbGFjZS1jb250ZW50IENTUyBzaG9ydGhhbmQgcHJvcGVydHkgc2V0cyBib3RoIHRoZSBhbGlnbi1jb250ZW50IGFuZCBqdXN0aWZ5LWNvbnRlbnQgcHJvcGVydGllcy4ifSx7bmFtZToicGxhY2UtaXRlbXMiLHN5bnRheDoiPCdhbGlnbi1pdGVtcyc+IDwnanVzdGlmeS1pdGVtcyc+PyIscmVsZXZhbmNlOjUxLGJyb3dzZXJzOlsiRTc5IiwiRkY0NSIsIlMxMSIsIkM1OSIsIk80NiJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9wbGFjZS1pdGVtcyJ9XSxkZXNjcmlwdGlvbjoiVGhlIENTUyBwbGFjZS1pdGVtcyBzaG9ydGhhbmQgcHJvcGVydHkgc2V0cyBib3RoIHRoZSBhbGlnbi1pdGVtcyBhbmQganVzdGlmeS1pdGVtcyBwcm9wZXJ0aWVzLiBUaGUgZmlyc3QgdmFsdWUgaXMgdGhlIGFsaWduLWl0ZW1zIHByb3BlcnR5IHZhbHVlLCB0aGUgc2Vjb25kIHRoZSBqdXN0aWZ5LWl0ZW1zIG9uZS4gSWYgdGhlIHNlY29uZCB2YWx1ZSBpcyBub3QgcHJlc2VudCwgdGhlIGZpcnN0IHZhbHVlIGlzIGFsc28gdXNlZCBmb3IgaXQuIn0se25hbWU6InBsYWNlLXNlbGYiLHN5bnRheDoiPCdhbGlnbi1zZWxmJz4gPCdqdXN0aWZ5LXNlbGYnPj8iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU3OSIsIkZGNDUiLCJTMTEiLCJDNTkiLCJPNDYiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvcGxhY2Utc2VsZiJ9XSxkZXNjcmlwdGlvbjoiVGhlIHBsYWNlLXNlbGYgQ1NTIHByb3BlcnR5IGlzIGEgc2hvcnRoYW5kIHByb3BlcnR5IHNldHMgYm90aCB0aGUgYWxpZ24tc2VsZiBhbmQganVzdGlmeS1zZWxmIHByb3BlcnRpZXMuIFRoZSBmaXJzdCB2YWx1ZSBpcyB0aGUgYWxpZ24tc2VsZiBwcm9wZXJ0eSB2YWx1ZSwgdGhlIHNlY29uZCB0aGUganVzdGlmeS1zZWxmIG9uZS4gSWYgdGhlIHNlY29uZCB2YWx1ZSBpcyBub3QgcHJlc2VudCwgdGhlIGZpcnN0IHZhbHVlIGlzIGFsc28gdXNlZCBmb3IgaXQuIn0se25hbWU6InByaW50LWNvbG9yLWFkanVzdCIsc3ludGF4OiJlY29ub215IHwgZXhhY3QiLHZhbHVlczpbe25hbWU6ImVjb25vbXkifSx7bmFtZToiZXhhY3QifV0scmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTc5IiwiRkY5NyIsIlMxNS40IiwiQzE3IiwiTzE1Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3ByaW50LWNvbG9yLWFkanVzdCJ9XSxkZXNjcmlwdGlvbjoiRGVmaW5lcyB3aGF0IG9wdGltaXphdGlvbiB0aGUgdXNlciBhZ2VudCBpcyBhbGxvd2VkIHRvIGRvIHdoZW4gYWRqdXN0aW5nIHRoZSBhcHBlYXJhbmNlIGZvciBhbiBvdXRwdXQgZGV2aWNlLiJ9LHtuYW1lOiJyb3RhdGUiLHN5bnRheDoibm9uZSB8IDxhbmdsZT4gfCBbIHggfCB5IHwgeiB8IDxudW1iZXI+ezN9IF0gJiYgPGFuZ2xlPiIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTEwNCIsIkZGNzIiLCJTMTQuMSIsIkMxMDQiLCJPOTAiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvcm90YXRlIn1dLGRlc2NyaXB0aW9uOiJUaGUgcm90YXRlIENTUyBwcm9wZXJ0eSBhbGxvd3MgeW91IHRvIHNwZWNpZnkgcm90YXRpb24gdHJhbnNmb3JtcyBpbmRpdmlkdWFsbHkgYW5kIGluZGVwZW5kZW50bHkgb2YgdGhlIHRyYW5zZm9ybSBwcm9wZXJ0eS4gVGhpcyBtYXBzIGJldHRlciB0byB0eXBpY2FsIHVzZXIgaW50ZXJmYWNlIHVzYWdlLCBhbmQgc2F2ZXMgaGF2aW5nIHRvIHJlbWVtYmVyIHRoZSBleGFjdCBvcmRlciBvZiB0cmFuc2Zvcm0gZnVuY3Rpb25zIHRvIHNwZWNpZnkgaW4gdGhlIHRyYW5zZm9ybSB2YWx1ZS4ifSx7bmFtZToicm93LWdhcCIsc3ludGF4OiJub3JtYWwgfCA8bGVuZ3RoLXBlcmNlbnRhZ2U+IixyZWxldmFuY2U6NTgsYnJvd3NlcnM6WyJFMTYiLCJGRjUyIiwiUzEwLjEiLCJDNDciLCJPMzQiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvcm93LWdhcCJ9XSxkZXNjcmlwdGlvbjoiVGhlIHJvdy1nYXAgQ1NTIHByb3BlcnR5IHNwZWNpZmllcyB0aGUgZ3V0dGVyIGJldHdlZW4gZ3JpZCByb3dzLiJ9LHtuYW1lOiJydWJ5LW1lcmdlIixzdGF0dXM6ImV4cGVyaW1lbnRhbCIsc3ludGF4OiJzZXBhcmF0ZSB8IGNvbGxhcHNlIHwgYXV0byIsdmFsdWVzOlt7bmFtZToic2VwYXJhdGUifSx7bmFtZToiY29sbGFwc2UifSx7bmFtZToiYXV0byJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlRoaXMgcHJvcGVydHkgY29udHJvbHMgaG93IHJ1YnkgYW5ub3RhdGlvbiBib3hlcyBzaG91bGQgYmUgcmVuZGVyZWQgd2hlbiB0aGVyZSBhcmUgbW9yZSB0aGFuIG9uZSBpbiBhIHJ1YnkgY29udGFpbmVyIGJveDogd2hldGhlciBlYWNoIHBhaXIgc2hvdWxkIGJlIGtlcHQgc2VwYXJhdGUsIHRoZSBhbm5vdGF0aW9ucyBzaG91bGQgYmUgY29sbGFwc2VkIGFuZCByZW5kZXJlZCBhcyBhIGdyb3VwLCBvciB0aGUgc2VwYXJhdGlvbiBzaG91bGQgYmUgZGV0ZXJtaW5lZCBiYXNlZCBvbiB0aGUgc3BhY2UgYXZhaWxhYmxlLiJ9LHtuYW1lOiJzY2FsZSIsc3ludGF4OiJub25lIHwgPG51bWJlcj57MSwzfSIscmVsZXZhbmNlOjUxLGJyb3dzZXJzOlsiRTEwNCIsIkZGNzIiLCJTMTQuMSIsIkMxMDQiLCJPOTAiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvc2NhbGUifV0sZGVzY3JpcHRpb246IlRoZSBzY2FsZSBDU1MgcHJvcGVydHkgYWxsb3dzIHlvdSB0byBzcGVjaWZ5IHNjYWxlIHRyYW5zZm9ybXMgaW5kaXZpZHVhbGx5IGFuZCBpbmRlcGVuZGVudGx5IG9mIHRoZSB0cmFuc2Zvcm0gcHJvcGVydHkuIFRoaXMgbWFwcyBiZXR0ZXIgdG8gdHlwaWNhbCB1c2VyIGludGVyZmFjZSB1c2FnZSwgYW5kIHNhdmVzIGhhdmluZyB0byByZW1lbWJlciB0aGUgZXhhY3Qgb3JkZXIgb2YgdHJhbnNmb3JtIGZ1bmN0aW9ucyB0byBzcGVjaWZ5IGluIHRoZSB0cmFuc2Zvcm0gdmFsdWUuIn0se25hbWU6InNjcm9sbGJhci1jb2xvciIsc3ludGF4OiJhdXRvIHwgPGNvbG9yPnsyfSIscmVsZXZhbmNlOjUyLGJyb3dzZXJzOlsiRTEyMSIsIkZGNjQiLCJDMTIxIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3Njcm9sbGJhci1jb2xvciJ9XSxkZXNjcmlwdGlvbjoiVGhlIHNjcm9sbGJhci1jb2xvciBDU1MgcHJvcGVydHkgc2V0cyB0aGUgY29sb3Igb2YgdGhlIHNjcm9sbGJhciB0cmFjayBhbmQgdGh1bWIuIn0se25hbWU6InNjcm9sbGJhci1ndXR0ZXIiLHN5bnRheDoiYXV0byB8IHN0YWJsZSAmJiBib3RoLWVkZ2VzPyIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTk0IiwiRkY5NyIsIlMxNyIsIkM5NCIsIk84MCJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9zY3JvbGxiYXItZ3V0dGVyIn1dLGRlc2NyaXB0aW9uOiJUaGUgc2Nyb2xsYmFyLWd1dHRlciBDU1MgcHJvcGVydHkgYWxsb3dzIGF1dGhvcnMgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgdGhlIHNjcm9sbGJhciwgcHJldmVudGluZyB1bndhbnRlZCBsYXlvdXQgY2hhbmdlcyBhcyB0aGUgY29udGVudCBncm93cyB3aGlsZSBhbHNvIGF2b2lkaW5nIHVubmVjZXNzYXJ5IHZpc3VhbHMgd2hlbiBzY3JvbGxpbmcgaXNuJ3QgbmVlZGVkLiJ9LHtuYW1lOiJzY3JvbGxiYXItd2lkdGgiLHN5bnRheDoiYXV0byB8IHRoaW4gfCBub25lIix2YWx1ZXM6W3tuYW1lOiJhdXRvIn0se25hbWU6InRoaW4ifSx7bmFtZToibm9uZSJ9XSxyZWxldmFuY2U6NjMsYnJvd3NlcnM6WyJFMTIxIiwiRkY2NCIsIkMxMjEiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvc2Nyb2xsYmFyLXdpZHRoIn1dLGRlc2NyaXB0aW9uOiJUaGUgc2Nyb2xsYmFyLXdpZHRoIHByb3BlcnR5IGFsbG93cyB0aGUgYXV0aG9yIHRvIHNldCB0aGUgbWF4aW11bSB0aGlja25lc3Mgb2YgYW4gZWxlbWVudOKAmXMgc2Nyb2xsYmFycyB3aGVuIHRoZXkgYXJlIHNob3duLiAifSx7bmFtZToic2Nyb2xsLW1hcmdpbiIsc3ludGF4OiI8bGVuZ3RoPnsxLDR9IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFNzkiLCJGRjkwIiwiUzE0LjEiLCJDNjkiLCJPNTYiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvc2Nyb2xsLW1hcmdpbiJ9XSxkZXNjcmlwdGlvbjoiVGhlIHNjcm9sbC1tYXJnaW4gcHJvcGVydHkgaXMgYSBzaG9ydGhhbmQgcHJvcGVydHkgd2hpY2ggc2V0cyBhbGwgb2YgdGhlIHNjcm9sbC1tYXJnaW4gbG9uZ2hhbmRzLCBhc3NpZ25pbmcgdmFsdWVzIG11Y2ggbGlrZSB0aGUgbWFyZ2luIHByb3BlcnR5IGRvZXMgZm9yIHRoZSBtYXJnaW4tKiBsb25naGFuZHMuIn0se25hbWU6InNjcm9sbC1tYXJnaW4tYmxvY2siLHN5bnRheDoiPGxlbmd0aD57MSwyfSIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTc5IiwiRkY2OCIsIlMxNSIsIkM2OSIsIk81NiJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9zY3JvbGwtbWFyZ2luLWJsb2NrIn1dLGRlc2NyaXB0aW9uOiJUaGUgc2Nyb2xsLW1hcmdpbi1ibG9jayBwcm9wZXJ0eSBpcyBhIHNob3J0aGFuZCBwcm9wZXJ0eSB3aGljaCBzZXRzIHRoZSBzY3JvbGwtbWFyZ2luIGxvbmdoYW5kcyBpbiB0aGUgYmxvY2sgZGltZW5zaW9uLiJ9LHtuYW1lOiJzY3JvbGwtbWFyZ2luLWJsb2NrLXN0YXJ0IixzeW50YXg6IjxsZW5ndGg+IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFNzkiLCJGRjY4IiwiUzE1IiwiQzY5IiwiTzU2Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3Njcm9sbC1tYXJnaW4tYmxvY2stc3RhcnQifV0sZGVzY3JpcHRpb246IlRoZSBzY3JvbGwtbWFyZ2luLWJsb2NrLXN0YXJ0IHByb3BlcnR5IGRlZmluZXMgdGhlIG1hcmdpbiBvZiB0aGUgc2Nyb2xsIHNuYXAgYXJlYSBhdCB0aGUgc3RhcnQgb2YgdGhlIGJsb2NrIGRpbWVuc2lvbiB0aGF0IGlzIHVzZWQgZm9yIHNuYXBwaW5nIHRoaXMgYm94IHRvIHRoZSBzbmFwcG9ydC4gVGhlIHNjcm9sbCBzbmFwIGFyZWEgaXMgZGV0ZXJtaW5lZCBieSB0YWtpbmcgdGhlIHRyYW5zZm9ybWVkIGJvcmRlciBib3gsIGZpbmRpbmcgaXRzIHJlY3Rhbmd1bGFyIGJvdW5kaW5nIGJveCAoYXhpcy1hbGlnbmVkIGluIHRoZSBzY3JvbGwgY29udGFpbmVy4oCZcyBjb29yZGluYXRlIHNwYWNlKSwgdGhlbiBhZGRpbmcgdGhlIHNwZWNpZmllZCBvdXRzZXRzLiJ9LHtuYW1lOiJzY3JvbGwtbWFyZ2luLWJsb2NrLWVuZCIsc3ludGF4OiI8bGVuZ3RoPiIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTc5IiwiRkY2OCIsIlMxNSIsIkM2OSIsIk81NiJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9zY3JvbGwtbWFyZ2luLWJsb2NrLWVuZCJ9XSxkZXNjcmlwdGlvbjoiVGhlIHNjcm9sbC1tYXJnaW4tYmxvY2stZW5kIHByb3BlcnR5IGRlZmluZXMgdGhlIG1hcmdpbiBvZiB0aGUgc2Nyb2xsIHNuYXAgYXJlYSBhdCB0aGUgZW5kIG9mIHRoZSBibG9jayBkaW1lbnNpb24gdGhhdCBpcyB1c2VkIGZvciBzbmFwcGluZyB0aGlzIGJveCB0byB0aGUgc25hcHBvcnQuIFRoZSBzY3JvbGwgc25hcCBhcmVhIGlzIGRldGVybWluZWQgYnkgdGFraW5nIHRoZSB0cmFuc2Zvcm1lZCBib3JkZXIgYm94LCBmaW5kaW5nIGl0cyByZWN0YW5ndWxhciBib3VuZGluZyBib3ggKGF4aXMtYWxpZ25lZCBpbiB0aGUgc2Nyb2xsIGNvbnRhaW5lcuKAmXMgY29vcmRpbmF0ZSBzcGFjZSksIHRoZW4gYWRkaW5nIHRoZSBzcGVjaWZpZWQgb3V0c2V0cy4ifSx7bmFtZToic2Nyb2xsLW1hcmdpbi1ib3R0b20iLHN5bnRheDoiPGxlbmd0aD4iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU3OSIsIkZGNjgiLCJTMTQuMSIsIkM2OSIsIk81NiJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9zY3JvbGwtbWFyZ2luLWJvdHRvbSJ9XSxkZXNjcmlwdGlvbjoiVGhlIHNjcm9sbC1tYXJnaW4tYm90dG9tIHByb3BlcnR5IGRlZmluZXMgdGhlIGJvdHRvbSBtYXJnaW4gb2YgdGhlIHNjcm9sbCBzbmFwIGFyZWEgdGhhdCBpcyB1c2VkIGZvciBzbmFwcGluZyB0aGlzIGJveCB0byB0aGUgc25hcHBvcnQuIFRoZSBzY3JvbGwgc25hcCBhcmVhIGlzIGRldGVybWluZWQgYnkgdGFraW5nIHRoZSB0cmFuc2Zvcm1lZCBib3JkZXIgYm94LCBmaW5kaW5nIGl0cyByZWN0YW5ndWxhciBib3VuZGluZyBib3ggKGF4aXMtYWxpZ25lZCBpbiB0aGUgc2Nyb2xsIGNvbnRhaW5lcuKAmXMgY29vcmRpbmF0ZSBzcGFjZSksIHRoZW4gYWRkaW5nIHRoZSBzcGVjaWZpZWQgb3V0c2V0cy4ifSx7bmFtZToic2Nyb2xsLW1hcmdpbi1pbmxpbmUiLHN5bnRheDoiPGxlbmd0aD57MSwyfSIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTc5IiwiRkY2OCIsIlMxNSIsIkM2OSIsIk81NiJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9zY3JvbGwtbWFyZ2luLWlubGluZSJ9XSxkZXNjcmlwdGlvbjoiVGhlIHNjcm9sbC1tYXJnaW4taW5saW5lIHByb3BlcnR5IGlzIGEgc2hvcnRoYW5kIHByb3BlcnR5IHdoaWNoIHNldHMgdGhlIHNjcm9sbC1tYXJnaW4gbG9uZ2hhbmRzIGluIHRoZSBpbmxpbmUgZGltZW5zaW9uLiJ9LHtuYW1lOiJzY3JvbGwtbWFyZ2luLWlubGluZS1zdGFydCIsc3ludGF4OiI8bGVuZ3RoPiIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTc5IiwiRkY2OCIsIlMxNSIsIkM2OSIsIk81NiJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9zY3JvbGwtbWFyZ2luLWlubGluZS1zdGFydCJ9XSxkZXNjcmlwdGlvbjoiVGhlIHNjcm9sbC1tYXJnaW4taW5saW5lLXN0YXJ0IHByb3BlcnR5IGRlZmluZXMgdGhlIG1hcmdpbiBvZiB0aGUgc2Nyb2xsIHNuYXAgYXJlYSBhdCB0aGUgc3RhcnQgb2YgdGhlIGlubGluZSBkaW1lbnNpb24gdGhhdCBpcyB1c2VkIGZvciBzbmFwcGluZyB0aGlzIGJveCB0byB0aGUgc25hcHBvcnQuIFRoZSBzY3JvbGwgc25hcCBhcmVhIGlzIGRldGVybWluZWQgYnkgdGFraW5nIHRoZSB0cmFuc2Zvcm1lZCBib3JkZXIgYm94LCBmaW5kaW5nIGl0cyByZWN0YW5ndWxhciBib3VuZGluZyBib3ggKGF4aXMtYWxpZ25lZCBpbiB0aGUgc2Nyb2xsIGNvbnRhaW5lcuKAmXMgY29vcmRpbmF0ZSBzcGFjZSksIHRoZW4gYWRkaW5nIHRoZSBzcGVjaWZpZWQgb3V0c2V0cy4ifSx7bmFtZToic2Nyb2xsLW1hcmdpbi1pbmxpbmUtZW5kIixzeW50YXg6IjxsZW5ndGg+IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFNzkiLCJGRjY4IiwiUzE1IiwiQzY5IiwiTzU2Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3Njcm9sbC1tYXJnaW4taW5saW5lLWVuZCJ9XSxkZXNjcmlwdGlvbjoiVGhlIHNjcm9sbC1tYXJnaW4taW5saW5lLWVuZCBwcm9wZXJ0eSBkZWZpbmVzIHRoZSBtYXJnaW4gb2YgdGhlIHNjcm9sbCBzbmFwIGFyZWEgYXQgdGhlIGVuZCBvZiB0aGUgaW5saW5lIGRpbWVuc2lvbiB0aGF0IGlzIHVzZWQgZm9yIHNuYXBwaW5nIHRoaXMgYm94IHRvIHRoZSBzbmFwcG9ydC4gVGhlIHNjcm9sbCBzbmFwIGFyZWEgaXMgZGV0ZXJtaW5lZCBieSB0YWtpbmcgdGhlIHRyYW5zZm9ybWVkIGJvcmRlciBib3gsIGZpbmRpbmcgaXRzIHJlY3Rhbmd1bGFyIGJvdW5kaW5nIGJveCAoYXhpcy1hbGlnbmVkIGluIHRoZSBzY3JvbGwgY29udGFpbmVy4oCZcyBjb29yZGluYXRlIHNwYWNlKSwgdGhlbiBhZGRpbmcgdGhlIHNwZWNpZmllZCBvdXRzZXRzLiJ9LHtuYW1lOiJzY3JvbGwtbWFyZ2luLWxlZnQiLHN5bnRheDoiPGxlbmd0aD4iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU3OSIsIkZGNjgiLCJTMTQuMSIsIkM2OSIsIk81NiJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9zY3JvbGwtbWFyZ2luLWxlZnQifV0sZGVzY3JpcHRpb246IlRoZSBzY3JvbGwtbWFyZ2luLWxlZnQgcHJvcGVydHkgZGVmaW5lcyB0aGUgbGVmdCBtYXJnaW4gb2YgdGhlIHNjcm9sbCBzbmFwIGFyZWEgdGhhdCBpcyB1c2VkIGZvciBzbmFwcGluZyB0aGlzIGJveCB0byB0aGUgc25hcHBvcnQuIFRoZSBzY3JvbGwgc25hcCBhcmVhIGlzIGRldGVybWluZWQgYnkgdGFraW5nIHRoZSB0cmFuc2Zvcm1lZCBib3JkZXIgYm94LCBmaW5kaW5nIGl0cyByZWN0YW5ndWxhciBib3VuZGluZyBib3ggKGF4aXMtYWxpZ25lZCBpbiB0aGUgc2Nyb2xsIGNvbnRhaW5lcuKAmXMgY29vcmRpbmF0ZSBzcGFjZSksIHRoZW4gYWRkaW5nIHRoZSBzcGVjaWZpZWQgb3V0c2V0cy4ifSx7bmFtZToic2Nyb2xsLW1hcmdpbi1yaWdodCIsc3ludGF4OiI8bGVuZ3RoPiIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTc5IiwiRkY2OCIsIlMxNC4xIiwiQzY5IiwiTzU2Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3Njcm9sbC1tYXJnaW4tcmlnaHQifV0sZGVzY3JpcHRpb246IlRoZSBzY3JvbGwtbWFyZ2luLXJpZ2h0IHByb3BlcnR5IGRlZmluZXMgdGhlIHJpZ2h0IG1hcmdpbiBvZiB0aGUgc2Nyb2xsIHNuYXAgYXJlYSB0aGF0IGlzIHVzZWQgZm9yIHNuYXBwaW5nIHRoaXMgYm94IHRvIHRoZSBzbmFwcG9ydC4gVGhlIHNjcm9sbCBzbmFwIGFyZWEgaXMgZGV0ZXJtaW5lZCBieSB0YWtpbmcgdGhlIHRyYW5zZm9ybWVkIGJvcmRlciBib3gsIGZpbmRpbmcgaXRzIHJlY3Rhbmd1bGFyIGJvdW5kaW5nIGJveCAoYXhpcy1hbGlnbmVkIGluIHRoZSBzY3JvbGwgY29udGFpbmVy4oCZcyBjb29yZGluYXRlIHNwYWNlKSwgdGhlbiBhZGRpbmcgdGhlIHNwZWNpZmllZCBvdXRzZXRzLiJ9LHtuYW1lOiJzY3JvbGwtbWFyZ2luLXRvcCIsc3ludGF4OiI8bGVuZ3RoPiIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTc5IiwiRkY2OCIsIlMxNC4xIiwiQzY5IiwiTzU2Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3Njcm9sbC1tYXJnaW4tdG9wIn1dLGRlc2NyaXB0aW9uOiJUaGUgc2Nyb2xsLW1hcmdpbi10b3AgcHJvcGVydHkgZGVmaW5lcyB0aGUgdG9wIG1hcmdpbiBvZiB0aGUgc2Nyb2xsIHNuYXAgYXJlYSB0aGF0IGlzIHVzZWQgZm9yIHNuYXBwaW5nIHRoaXMgYm94IHRvIHRoZSBzbmFwcG9ydC4gVGhlIHNjcm9sbCBzbmFwIGFyZWEgaXMgZGV0ZXJtaW5lZCBieSB0YWtpbmcgdGhlIHRyYW5zZm9ybWVkIGJvcmRlciBib3gsIGZpbmRpbmcgaXRzIHJlY3Rhbmd1bGFyIGJvdW5kaW5nIGJveCAoYXhpcy1hbGlnbmVkIGluIHRoZSBzY3JvbGwgY29udGFpbmVy4oCZcyBjb29yZGluYXRlIHNwYWNlKSwgdGhlbiBhZGRpbmcgdGhlIHNwZWNpZmllZCBvdXRzZXRzLiJ9LHtuYW1lOiJzY3JvbGwtcGFkZGluZyIsc3ludGF4OiJbIGF1dG8gfCA8bGVuZ3RoLXBlcmNlbnRhZ2U+IF17MSw0fSIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTc5IiwiRkY2OCIsIlMxNC4xIiwiQzY5IiwiTzU2Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3Njcm9sbC1wYWRkaW5nIn1dLGRlc2NyaXB0aW9uOiJUaGUgc2Nyb2xsLXBhZGRpbmcgcHJvcGVydHkgaXMgYSBzaG9ydGhhbmQgcHJvcGVydHkgd2hpY2ggc2V0cyBhbGwgb2YgdGhlIHNjcm9sbC1wYWRkaW5nIGxvbmdoYW5kcywgYXNzaWduaW5nIHZhbHVlcyBtdWNoIGxpa2UgdGhlIHBhZGRpbmcgcHJvcGVydHkgZG9lcyBmb3IgdGhlIHBhZGRpbmctKiBsb25naGFuZHMuIn0se25hbWU6InNjcm9sbC1wYWRkaW5nLWJsb2NrIixzeW50YXg6IlsgYXV0byB8IDxsZW5ndGgtcGVyY2VudGFnZT4gXXsxLDJ9IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFNzkiLCJGRjY4IiwiUzE1IiwiQzY5IiwiTzU2Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3Njcm9sbC1wYWRkaW5nLWJsb2NrIn1dLGRlc2NyaXB0aW9uOiJUaGUgc2Nyb2xsLXBhZGRpbmctYmxvY2sgcHJvcGVydHkgaXMgYSBzaG9ydGhhbmQgcHJvcGVydHkgd2hpY2ggc2V0cyB0aGUgc2Nyb2xsLXBhZGRpbmcgbG9uZ2hhbmRzIGZvciB0aGUgYmxvY2sgZGltZW5zaW9uLiJ9LHtuYW1lOiJzY3JvbGwtcGFkZGluZy1ibG9jay1zdGFydCIsc3ludGF4OiJhdXRvIHwgPGxlbmd0aC1wZXJjZW50YWdlPiIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTc5IiwiRkY2OCIsIlMxNSIsIkM2OSIsIk81NiJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9zY3JvbGwtcGFkZGluZy1ibG9jay1zdGFydCJ9XSxkZXNjcmlwdGlvbjoiVGhlIHNjcm9sbC1wYWRkaW5nLWJsb2NrLXN0YXJ0IHByb3BlcnR5IGRlZmluZXMgb2Zmc2V0cyBmb3IgdGhlIHN0YXJ0IGVkZ2UgaW4gdGhlIGJsb2NrIGRpbWVuc2lvbiBvZiB0aGUgb3B0aW1hbCB2aWV3aW5nIHJlZ2lvbiBvZiB0aGUgc2Nyb2xscG9ydDogdGhlIHJlZ2lvbiB1c2VkIGFzIHRoZSB0YXJnZXQgcmVnaW9uIGZvciBwbGFjaW5nIHRoaW5ncyBpbiB2aWV3IG9mIHRoZSB1c2VyLiBUaGlzIGFsbG93cyB0aGUgYXV0aG9yIHRvIGV4Y2x1ZGUgcmVnaW9ucyBvZiB0aGUgc2Nyb2xscG9ydCB0aGF0IGFyZSBvYnNjdXJlZCBieSBvdGhlciBjb250ZW50IChzdWNoIGFzIGZpeGVkLXBvc2l0aW9uZWQgdG9vbGJhcnMgb3Igc2lkZWJhcnMpIG9yIHNpbXBseSB0byBwdXQgbW9yZSBicmVhdGhpbmcgcm9vbSBiZXR3ZWVuIGEgdGFyZ2V0ZWQgZWxlbWVudCBhbmQgdGhlIGVkZ2VzIG9mIHRoZSBzY3JvbGxwb3J0LiJ9LHtuYW1lOiJzY3JvbGwtcGFkZGluZy1ibG9jay1lbmQiLHN5bnRheDoiYXV0byB8IDxsZW5ndGgtcGVyY2VudGFnZT4iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU3OSIsIkZGNjgiLCJTMTUiLCJDNjkiLCJPNTYiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvc2Nyb2xsLXBhZGRpbmctYmxvY2stZW5kIn1dLGRlc2NyaXB0aW9uOiJUaGUgc2Nyb2xsLXBhZGRpbmctYmxvY2stZW5kIHByb3BlcnR5IGRlZmluZXMgb2Zmc2V0cyBmb3IgdGhlIGVuZCBlZGdlIGluIHRoZSBibG9jayBkaW1lbnNpb24gb2YgdGhlIG9wdGltYWwgdmlld2luZyByZWdpb24gb2YgdGhlIHNjcm9sbHBvcnQ6IHRoZSByZWdpb24gdXNlZCBhcyB0aGUgdGFyZ2V0IHJlZ2lvbiBmb3IgcGxhY2luZyB0aGluZ3MgaW4gdmlldyBvZiB0aGUgdXNlci4gVGhpcyBhbGxvd3MgdGhlIGF1dGhvciB0byBleGNsdWRlIHJlZ2lvbnMgb2YgdGhlIHNjcm9sbHBvcnQgdGhhdCBhcmUgb2JzY3VyZWQgYnkgb3RoZXIgY29udGVudCAoc3VjaCBhcyBmaXhlZC1wb3NpdGlvbmVkIHRvb2xiYXJzIG9yIHNpZGViYXJzKSBvciBzaW1wbHkgdG8gcHV0IG1vcmUgYnJlYXRoaW5nIHJvb20gYmV0d2VlbiBhIHRhcmdldGVkIGVsZW1lbnQgYW5kIHRoZSBlZGdlcyBvZiB0aGUgc2Nyb2xscG9ydC4ifSx7bmFtZToic2Nyb2xsLXBhZGRpbmctYm90dG9tIixzeW50YXg6ImF1dG8gfCA8bGVuZ3RoLXBlcmNlbnRhZ2U+IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFNzkiLCJGRjY4IiwiUzE0LjEiLCJDNjkiLCJPNTYiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvc2Nyb2xsLXBhZGRpbmctYm90dG9tIn1dLGRlc2NyaXB0aW9uOiJUaGUgc2Nyb2xsLXBhZGRpbmctYm90dG9tIHByb3BlcnR5IGRlZmluZXMgb2Zmc2V0cyBmb3IgdGhlIGJvdHRvbSBvZiB0aGUgb3B0aW1hbCB2aWV3aW5nIHJlZ2lvbiBvZiB0aGUgc2Nyb2xscG9ydDogdGhlIHJlZ2lvbiB1c2VkIGFzIHRoZSB0YXJnZXQgcmVnaW9uIGZvciBwbGFjaW5nIHRoaW5ncyBpbiB2aWV3IG9mIHRoZSB1c2VyLiBUaGlzIGFsbG93cyB0aGUgYXV0aG9yIHRvIGV4Y2x1ZGUgcmVnaW9ucyBvZiB0aGUgc2Nyb2xscG9ydCB0aGF0IGFyZSBvYnNjdXJlZCBieSBvdGhlciBjb250ZW50IChzdWNoIGFzIGZpeGVkLXBvc2l0aW9uZWQgdG9vbGJhcnMgb3Igc2lkZWJhcnMpIG9yIHNpbXBseSB0byBwdXQgbW9yZSBicmVhdGhpbmcgcm9vbSBiZXR3ZWVuIGEgdGFyZ2V0ZWQgZWxlbWVudCBhbmQgdGhlIGVkZ2VzIG9mIHRoZSBzY3JvbGxwb3J0LiJ9LHtuYW1lOiJzY3JvbGwtcGFkZGluZy1pbmxpbmUiLHN5bnRheDoiWyBhdXRvIHwgPGxlbmd0aC1wZXJjZW50YWdlPiBdezEsMn0iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU3OSIsIkZGNjgiLCJTMTUiLCJDNjkiLCJPNTYiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvc2Nyb2xsLXBhZGRpbmctaW5saW5lIn1dLGRlc2NyaXB0aW9uOiJUaGUgc2Nyb2xsLXBhZGRpbmctaW5saW5lIHByb3BlcnR5IGlzIGEgc2hvcnRoYW5kIHByb3BlcnR5IHdoaWNoIHNldHMgdGhlIHNjcm9sbC1wYWRkaW5nIGxvbmdoYW5kcyBmb3IgdGhlIGlubGluZSBkaW1lbnNpb24uIn0se25hbWU6InNjcm9sbC1wYWRkaW5nLWlubGluZS1zdGFydCIsc3ludGF4OiJhdXRvIHwgPGxlbmd0aC1wZXJjZW50YWdlPiIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTc5IiwiRkY2OCIsIlMxNSIsIkM2OSIsIk81NiJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9zY3JvbGwtcGFkZGluZy1pbmxpbmUtc3RhcnQifV0sZGVzY3JpcHRpb246IlRoZSBzY3JvbGwtcGFkZGluZy1pbmxpbmUtc3RhcnQgcHJvcGVydHkgZGVmaW5lcyBvZmZzZXRzIGZvciB0aGUgc3RhcnQgZWRnZSBpbiB0aGUgaW5saW5lIGRpbWVuc2lvbiBvZiB0aGUgb3B0aW1hbCB2aWV3aW5nIHJlZ2lvbiBvZiB0aGUgc2Nyb2xscG9ydDogdGhlIHJlZ2lvbiB1c2VkIGFzIHRoZSB0YXJnZXQgcmVnaW9uIGZvciBwbGFjaW5nIHRoaW5ncyBpbiB2aWV3IG9mIHRoZSB1c2VyLiBUaGlzIGFsbG93cyB0aGUgYXV0aG9yIHRvIGV4Y2x1ZGUgcmVnaW9ucyBvZiB0aGUgc2Nyb2xscG9ydCB0aGF0IGFyZSBvYnNjdXJlZCBieSBvdGhlciBjb250ZW50IChzdWNoIGFzIGZpeGVkLXBvc2l0aW9uZWQgdG9vbGJhcnMgb3Igc2lkZWJhcnMpIG9yIHNpbXBseSB0byBwdXQgbW9yZSBicmVhdGhpbmcgcm9vbSBiZXR3ZWVuIGEgdGFyZ2V0ZWQgZWxlbWVudCBhbmQgdGhlIGVkZ2VzIG9mIHRoZSBzY3JvbGxwb3J0LiJ9LHtuYW1lOiJzY3JvbGwtcGFkZGluZy1pbmxpbmUtZW5kIixzeW50YXg6ImF1dG8gfCA8bGVuZ3RoLXBlcmNlbnRhZ2U+IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFNzkiLCJGRjY4IiwiUzE1IiwiQzY5IiwiTzU2Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3Njcm9sbC1wYWRkaW5nLWlubGluZS1lbmQifV0sZGVzY3JpcHRpb246IlRoZSBzY3JvbGwtcGFkZGluZy1pbmxpbmUtZW5kIHByb3BlcnR5IGRlZmluZXMgb2Zmc2V0cyBmb3IgdGhlIGVuZCBlZGdlIGluIHRoZSBpbmxpbmUgZGltZW5zaW9uIG9mIHRoZSBvcHRpbWFsIHZpZXdpbmcgcmVnaW9uIG9mIHRoZSBzY3JvbGxwb3J0OiB0aGUgcmVnaW9uIHVzZWQgYXMgdGhlIHRhcmdldCByZWdpb24gZm9yIHBsYWNpbmcgdGhpbmdzIGluIHZpZXcgb2YgdGhlIHVzZXIuIFRoaXMgYWxsb3dzIHRoZSBhdXRob3IgdG8gZXhjbHVkZSByZWdpb25zIG9mIHRoZSBzY3JvbGxwb3J0IHRoYXQgYXJlIG9ic2N1cmVkIGJ5IG90aGVyIGNvbnRlbnQgKHN1Y2ggYXMgZml4ZWQtcG9zaXRpb25lZCB0b29sYmFycyBvciBzaWRlYmFycykgb3Igc2ltcGx5IHRvIHB1dCBtb3JlIGJyZWF0aGluZyByb29tIGJldHdlZW4gYSB0YXJnZXRlZCBlbGVtZW50IGFuZCB0aGUgZWRnZXMgb2YgdGhlIHNjcm9sbHBvcnQuIn0se25hbWU6InNjcm9sbC1wYWRkaW5nLWxlZnQiLHN5bnRheDoiYXV0byB8IDxsZW5ndGgtcGVyY2VudGFnZT4iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU3OSIsIkZGNjgiLCJTMTQuMSIsIkM2OSIsIk81NiJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9zY3JvbGwtcGFkZGluZy1sZWZ0In1dLGRlc2NyaXB0aW9uOiJUaGUgc2Nyb2xsLXBhZGRpbmctbGVmdCBwcm9wZXJ0eSBkZWZpbmVzIG9mZnNldHMgZm9yIHRoZSBsZWZ0IG9mIHRoZSBvcHRpbWFsIHZpZXdpbmcgcmVnaW9uIG9mIHRoZSBzY3JvbGxwb3J0OiB0aGUgcmVnaW9uIHVzZWQgYXMgdGhlIHRhcmdldCByZWdpb24gZm9yIHBsYWNpbmcgdGhpbmdzIGluIHZpZXcgb2YgdGhlIHVzZXIuIFRoaXMgYWxsb3dzIHRoZSBhdXRob3IgdG8gZXhjbHVkZSByZWdpb25zIG9mIHRoZSBzY3JvbGxwb3J0IHRoYXQgYXJlIG9ic2N1cmVkIGJ5IG90aGVyIGNvbnRlbnQgKHN1Y2ggYXMgZml4ZWQtcG9zaXRpb25lZCB0b29sYmFycyBvciBzaWRlYmFycykgb3Igc2ltcGx5IHRvIHB1dCBtb3JlIGJyZWF0aGluZyByb29tIGJldHdlZW4gYSB0YXJnZXRlZCBlbGVtZW50IGFuZCB0aGUgZWRnZXMgb2YgdGhlIHNjcm9sbHBvcnQuIn0se25hbWU6InNjcm9sbC1wYWRkaW5nLXJpZ2h0IixzeW50YXg6ImF1dG8gfCA8bGVuZ3RoLXBlcmNlbnRhZ2U+IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFNzkiLCJGRjY4IiwiUzE0LjEiLCJDNjkiLCJPNTYiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvc2Nyb2xsLXBhZGRpbmctcmlnaHQifV0sZGVzY3JpcHRpb246IlRoZSBzY3JvbGwtcGFkZGluZy1yaWdodCBwcm9wZXJ0eSBkZWZpbmVzIG9mZnNldHMgZm9yIHRoZSByaWdodCBvZiB0aGUgb3B0aW1hbCB2aWV3aW5nIHJlZ2lvbiBvZiB0aGUgc2Nyb2xscG9ydDogdGhlIHJlZ2lvbiB1c2VkIGFzIHRoZSB0YXJnZXQgcmVnaW9uIGZvciBwbGFjaW5nIHRoaW5ncyBpbiB2aWV3IG9mIHRoZSB1c2VyLiBUaGlzIGFsbG93cyB0aGUgYXV0aG9yIHRvIGV4Y2x1ZGUgcmVnaW9ucyBvZiB0aGUgc2Nyb2xscG9ydCB0aGF0IGFyZSBvYnNjdXJlZCBieSBvdGhlciBjb250ZW50IChzdWNoIGFzIGZpeGVkLXBvc2l0aW9uZWQgdG9vbGJhcnMgb3Igc2lkZWJhcnMpIG9yIHNpbXBseSB0byBwdXQgbW9yZSBicmVhdGhpbmcgcm9vbSBiZXR3ZWVuIGEgdGFyZ2V0ZWQgZWxlbWVudCBhbmQgdGhlIGVkZ2VzIG9mIHRoZSBzY3JvbGxwb3J0LiJ9LHtuYW1lOiJzY3JvbGwtcGFkZGluZy10b3AiLHN5bnRheDoiYXV0byB8IDxsZW5ndGgtcGVyY2VudGFnZT4iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU3OSIsIkZGNjgiLCJTMTQuMSIsIkM2OSIsIk81NiJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9zY3JvbGwtcGFkZGluZy10b3AifV0sZGVzY3JpcHRpb246IlRoZSBzY3JvbGwtcGFkZGluZy10b3AgcHJvcGVydHkgZGVmaW5lcyBvZmZzZXRzIGZvciB0aGUgdG9wIG9mIHRoZSBvcHRpbWFsIHZpZXdpbmcgcmVnaW9uIG9mIHRoZSBzY3JvbGxwb3J0OiB0aGUgcmVnaW9uIHVzZWQgYXMgdGhlIHRhcmdldCByZWdpb24gZm9yIHBsYWNpbmcgdGhpbmdzIGluIHZpZXcgb2YgdGhlIHVzZXIuIFRoaXMgYWxsb3dzIHRoZSBhdXRob3IgdG8gZXhjbHVkZSByZWdpb25zIG9mIHRoZSBzY3JvbGxwb3J0IHRoYXQgYXJlIG9ic2N1cmVkIGJ5IG90aGVyIGNvbnRlbnQgKHN1Y2ggYXMgZml4ZWQtcG9zaXRpb25lZCB0b29sYmFycyBvciBzaWRlYmFycykgb3Igc2ltcGx5IHRvIHB1dCBtb3JlIGJyZWF0aGluZyByb29tIGJldHdlZW4gYSB0YXJnZXRlZCBlbGVtZW50IGFuZCB0aGUgZWRnZXMgb2YgdGhlIHNjcm9sbHBvcnQuIn0se25hbWU6InNjcm9sbC1zbmFwLWFsaWduIixzeW50YXg6Ilsgbm9uZSB8IHN0YXJ0IHwgZW5kIHwgY2VudGVyIF17MSwyfSIscmVsZXZhbmNlOjUzLGJyb3dzZXJzOlsiRTc5IiwiRkY2OCIsIlMxMSIsIkM2OSIsIk81NiJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9zY3JvbGwtc25hcC1hbGlnbiJ9XSxkZXNjcmlwdGlvbjoiVGhlIHNjcm9sbC1zbmFwLWFsaWduIHByb3BlcnR5IHNwZWNpZmllcyB0aGUgYm944oCZcyBzbmFwIHBvc2l0aW9uIGFzIGFuIGFsaWdubWVudCBvZiBpdHMgc25hcCBhcmVhIChhcyB0aGUgYWxpZ25tZW50IHN1YmplY3QpIHdpdGhpbiBpdHMgc25hcCBjb250YWluZXLigJlzIHNuYXBwb3J0IChhcyB0aGUgYWxpZ25tZW50IGNvbnRhaW5lcikuIFRoZSB0d28gdmFsdWVzIHNwZWNpZnkgdGhlIHNuYXBwaW5nIGFsaWdubWVudCBpbiB0aGUgYmxvY2sgYXhpcyBhbmQgaW5saW5lIGF4aXMsIHJlc3BlY3RpdmVseS4gSWYgb25seSBvbmUgdmFsdWUgaXMgc3BlY2lmaWVkLCB0aGUgc2Vjb25kIHZhbHVlIGRlZmF1bHRzIHRvIHRoZSBzYW1lIHZhbHVlLiJ9LHtuYW1lOiJzY3JvbGwtc25hcC1zdG9wIixzeW50YXg6Im5vcm1hbCB8IGFsd2F5cyIsdmFsdWVzOlt7bmFtZToibm9ybWFsIn0se25hbWU6ImFsd2F5cyJ9XSxyZWxldmFuY2U6NTEsYnJvd3NlcnM6WyJFNzkiLCJGRjEwMyIsIlMxNSIsIkM3NSIsIk82MiJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9zY3JvbGwtc25hcC1zdG9wIn1dLGRlc2NyaXB0aW9uOidUaGUgc2Nyb2xsLXNuYXAtc3RvcCBDU1MgcHJvcGVydHkgZGVmaW5lcyB3aGV0aGVyIHRoZSBzY3JvbGwgY29udGFpbmVyIGlzIGFsbG93ZWQgdG8gInBhc3Mgb3ZlciIgcG9zc2libGUgc25hcCBwb3NpdGlvbnMuJ30se25hbWU6InNjcm9sbC1zbmFwLXR5cGUteCIsc3RhdHVzOiJvYnNvbGV0ZSIsc3ludGF4OiJub25lIHwgbWFuZGF0b3J5IHwgcHJveGltaXR5Iix2YWx1ZXM6W3tuYW1lOiJub25lIn0se25hbWU6Im1hbmRhdG9yeSJ9LHtuYW1lOiJwcm94aW1pdHkifV0scmVsZXZhbmNlOjAsZGVzY3JpcHRpb246YFRoZSBzY3JvbGwtc25hcC10eXBlLXggQ1NTIHByb3BlcnR5IGRlZmluZXMgaG93IHN0cmljdGx5IHNuYXAgcG9pbnRzIGFyZSBlbmZvcmNlZCBvbiB0aGUgaG9yaXpvbnRhbCBheGlzIG9mIHRoZSBzY3JvbGwgY29udGFpbmVyIGluIGNhc2UgdGhlcmUgaXMgb25lLgoKU3BlY2lmeWluZyBhbnkgcHJlY2lzZSBhbmltYXRpb25zIG9yIHBoeXNpY3MgdXNlZCB0byBlbmZvcmNlIHRob3NlIHNuYXAgcG9pbnRzIGlzIG5vdCBjb3ZlcmVkIGJ5IHRoaXMgcHJvcGVydHkgYnV0IGluc3RlYWQgbGVmdCB1cCB0byB0aGUgdXNlciBhZ2VudC5gfSx7bmFtZToic2Nyb2xsLXNuYXAtdHlwZS15IixzdGF0dXM6Im9ic29sZXRlIixzeW50YXg6Im5vbmUgfCBtYW5kYXRvcnkgfCBwcm94aW1pdHkiLHZhbHVlczpbe25hbWU6Im5vbmUifSx7bmFtZToibWFuZGF0b3J5In0se25hbWU6InByb3hpbWl0eSJ9XSxyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjpgVGhlIHNjcm9sbC1zbmFwLXR5cGUteSBDU1MgcHJvcGVydHkgZGVmaW5lcyBob3cgc3RyaWN0bHkgc25hcCBwb2ludHMgYXJlIGVuZm9yY2VkIG9uIHRoZSB2ZXJ0aWNhbCBheGlzIG9mIHRoZSBzY3JvbGwgY29udGFpbmVyIGluIGNhc2UgdGhlcmUgaXMgb25lLgoKU3BlY2lmeWluZyBhbnkgcHJlY2lzZSBhbmltYXRpb25zIG9yIHBoeXNpY3MgdXNlZCB0byBlbmZvcmNlIHRob3NlIHNuYXAgcG9pbnRzIGlzIG5vdCBjb3ZlcmVkIGJ5IHRoaXMgcHJvcGVydHkgYnV0IGluc3RlYWQgbGVmdCB1cCB0byB0aGUgdXNlciBhZ2VudC5gfSx7bmFtZToic2Nyb2xsLXRpbWVsaW5lIixzdGF0dXM6ImV4cGVyaW1lbnRhbCIsc3ludGF4OiJbIDwnc2Nyb2xsLXRpbWVsaW5lLW5hbWUnPiA8J3Njcm9sbC10aW1lbGluZS1heGlzJz4/IF0jIixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFMTE1IiwiRkYxMTEiLCJDMTE1IiwiTzEwMSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9zY3JvbGwtdGltZWxpbmUifV0sZGVzY3JpcHRpb246IkRlZmluZXMgYSBuYW1lIHRoYXQgY2FuIGJlIHVzZWQgdG8gaWRlbnRpZnkgdGhlIHNvdXJjZSBlbGVtZW50IG9mIGEgc2Nyb2xsIHRpbWVsaW5lLCBhbG9uZyB3aXRoIHRoZSBzY3JvbGxiYXIgYXhpcyB0aGF0IHNob3VsZCBwcm92aWRlIHRoZSB0aW1lbGluZS4ifSx7bmFtZToic2Nyb2xsLXRpbWVsaW5lLWF4aXMiLHN0YXR1czoiZXhwZXJpbWVudGFsIixzeW50YXg6IlsgYmxvY2sgfCBpbmxpbmUgfCB4IHwgeSBdIyIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTExNSIsIkZGMTExIiwiQzExNSIsIk8xMDEiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvc2Nyb2xsLXRpbWVsaW5lLWF4aXMifV0sZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgc2Nyb2xsYmFyIHRoYXQgd2lsbCBiZSB1c2VkIHRvIHByb3ZpZGUgdGhlIHRpbWVsaW5lIGZvciBhIHNjcm9sbC10aW1lbGluZSBhbmltYXRpb24ifSx7bmFtZToic2Nyb2xsLXRpbWVsaW5lLW5hbWUiLHN0YXR1czoiZXhwZXJpbWVudGFsIixzeW50YXg6Im5vbmUgfCA8ZGFzaGVkLWlkZW50PiMiLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkUxMTUiLCJGRjExMSIsIkMxMTUiLCJPMTAxIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3Njcm9sbC10aW1lbGluZS1uYW1lIn1dLGRlc2NyaXB0aW9uOiJEZWZpbmVzIGEgbmFtZSB0aGF0IGNhbiBiZSB1c2VkIHRvIGlkZW50aWZ5IGFuIGVsZW1lbnQgYXMgdGhlIHNvdXJjZSBvZiBhIHNjcm9sbC10aW1lbGluZS4ifSx7bmFtZToidGV4dC1jb21iaW5lLXVwcmlnaHQiLHN5bnRheDoibm9uZSB8IGFsbCB8IFsgZGlnaXRzIDxpbnRlZ2VyPj8gXSIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTc5IiwiRkY0OCIsIlMxNS40IiwiQzQ4IiwiSUUxMSIsIk8zNSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy90ZXh0LWNvbWJpbmUtdXByaWdodCJ9XSxkZXNjcmlwdGlvbjpgVGhlIHRleHQtY29tYmluZS11cHJpZ2h0IENTUyBwcm9wZXJ0eSBzcGVjaWZpZXMgdGhlIGNvbWJpbmF0aW9uIG9mIG11bHRpcGxlIGNoYXJhY3RlcnMgaW50byB0aGUgc3BhY2Ugb2YgYSBzaW5nbGUgY2hhcmFjdGVyLiBJZiB0aGUgY29tYmluZWQgdGV4dCBpcyB3aWRlciB0aGFuIDFlbSwgdGhlIHVzZXIgYWdlbnQgbXVzdCBmaXQgdGhlIGNvbnRlbnRzIHdpdGhpbiAxZW0uIFRoZSByZXN1bHRpbmcgY29tcG9zaXRpb24gaXMgdHJlYXRlZCBhcyBhIHNpbmdsZSB1cHJpZ2h0IGdseXBoIGZvciBsYXlvdXQgYW5kIGRlY29yYXRpb24uIFRoaXMgcHJvcGVydHkgb25seSBoYXMgYW4gZWZmZWN0IGluIHZlcnRpY2FsIHdyaXRpbmcgbW9kZXMuCgpUaGlzIGlzIHVzZWQgdG8gcHJvZHVjZSBhbiBlZmZlY3QgdGhhdCBpcyBrbm93biBhcyB0YXRlLWNoxasteW9rbyAo57im5Lit5qiqKSBpbiBKYXBhbmVzZSwgb3IgYXMg55u05pu45qmr5ZCRIGluIENoaW5lc2UuYH0se25hbWU6InRleHQtZGVjb3JhdGlvbi1za2lwIixzdGF0dXM6ImV4cGVyaW1lbnRhbCIsc3ludGF4OiJub25lIHwgWyBvYmplY3RzIHx8IFsgc3BhY2VzIHwgWyBsZWFkaW5nLXNwYWNlcyB8fCB0cmFpbGluZy1zcGFjZXMgXSBdIHx8IGVkZ2VzIHx8IGJveC1kZWNvcmF0aW9uIF0iLHJlbGV2YW5jZTo1Mixicm93c2VyczpbIlMxMi4xIiwiQzU3IiwiTzQ0Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3RleHQtZGVjb3JhdGlvbi1za2lwIn1dLGRlc2NyaXB0aW9uOiJUaGUgdGV4dC1kZWNvcmF0aW9uLXNraXAgQ1NTIHByb3BlcnR5IHNwZWNpZmllcyB3aGF0IHBhcnRzIG9mIHRoZSBlbGVtZW504oCZcyBjb250ZW50IGFueSB0ZXh0IGRlY29yYXRpb24gYWZmZWN0aW5nIHRoZSBlbGVtZW50IG11c3Qgc2tpcCBvdmVyLiBJdCBjb250cm9scyBhbGwgdGV4dCBkZWNvcmF0aW9uIGxpbmVzIGRyYXduIGJ5IHRoZSBlbGVtZW50IGFuZCBhbHNvIGFueSB0ZXh0IGRlY29yYXRpb24gbGluZXMgZHJhd24gYnkgaXRzIGFuY2VzdG9ycy4ifSx7bmFtZToidGV4dC1kZWNvcmF0aW9uLXNraXAtaW5rIixzeW50YXg6ImF1dG8gfCBhbGwgfCBub25lIix2YWx1ZXM6W3tuYW1lOiJhdXRvIn0se25hbWU6ImFsbCJ9LHtuYW1lOiJub25lIn1dLHJlbGV2YW5jZTo1MSxicm93c2VyczpbIkU3OSIsIkZGNzAiLCJTMTUuNCIsIkM2NCIsIk81MCJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy90ZXh0LWRlY29yYXRpb24tc2tpcC1pbmsifV0sZGVzY3JpcHRpb246IlRoZSB0ZXh0LWRlY29yYXRpb24tc2tpcC1pbmsgQ1NTIHByb3BlcnR5IHNwZWNpZmllcyBob3cgb3ZlcmxpbmVzIGFuZCB1bmRlcmxpbmVzIGFyZSBkcmF3biB3aGVuIHRoZXkgcGFzcyBvdmVyIGdseXBoIGFzY2VuZGVycyBhbmQgZGVzY2VuZGVycy4ifSx7bmFtZToidGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzcyIsc3ludGF4OiJhdXRvIHwgZnJvbS1mb250IHwgPGxlbmd0aD4gfCA8cGVyY2VudGFnZT4gIixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFODkiLCJGRjcwIiwiUzEyLjEiLCJDODkiLCJPNzUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzcyJ9XSxkZXNjcmlwdGlvbjoiVGhlIHRleHQtZGVjb3JhdGlvbi10aGlja25lc3MgQ1NTIHByb3BlcnR5IHNldHMgdGhlIHRoaWNrbmVzcywgb3Igd2lkdGgsIG9mIHRoZSBkZWNvcmF0aW9uIGxpbmUgdGhhdCBpcyB1c2VkIG9uIHRleHQgaW4gYW4gZWxlbWVudCwgc3VjaCBhcyBhIGxpbmUtdGhyb3VnaCwgdW5kZXJsaW5lLCBvciBvdmVybGluZS4ifSx7bmFtZToidGV4dC1lbXBoYXNpcyIsc3ludGF4OiI8J3RleHQtZW1waGFzaXMtc3R5bGUnPiB8fCA8J3RleHQtZW1waGFzaXMtY29sb3InPiIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTk5IiwiRkY0NiIsIlM3IiwiQzk5IiwiTzg1Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3RleHQtZW1waGFzaXMifV0sZGVzY3JpcHRpb246IlRoZSB0ZXh0LWVtcGhhc2lzIENTUyBwcm9wZXJ0eSBpcyBhIHNob3J0aGFuZCBwcm9wZXJ0eSBmb3Igc2V0dGluZyB0ZXh0LWVtcGhhc2lzLXN0eWxlIGFuZCB0ZXh0LWVtcGhhc2lzLWNvbG9yIGluIG9uZSBkZWNsYXJhdGlvbi4gVGhpcyBwcm9wZXJ0eSB3aWxsIGFwcGx5IHRoZSBzcGVjaWZpZWQgZW1waGFzaXMgbWFyayB0byBlYWNoIGNoYXJhY3RlciBvZiB0aGUgZWxlbWVudCdzIHRleHQsIGV4Y2VwdCBzZXBhcmF0b3IgY2hhcmFjdGVycywgbGlrZSBzcGFjZXMsICBhbmQgY29udHJvbCBjaGFyYWN0ZXJzLiJ9LHtuYW1lOiJ0ZXh0LWVtcGhhc2lzLWNvbG9yIixzeW50YXg6Ijxjb2xvcj4iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU5OSIsIkZGNDYiLCJTNyIsIkM5OSIsIk84NSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy90ZXh0LWVtcGhhc2lzLWNvbG9yIn1dLGRlc2NyaXB0aW9uOiJUaGUgdGV4dC1lbXBoYXNpcy1jb2xvciBDU1MgcHJvcGVydHkgZGVmaW5lcyB0aGUgY29sb3IgdXNlZCB0byBkcmF3IGVtcGhhc2lzIG1hcmtzIG9uIHRleHQgYmVpbmcgcmVuZGVyZWQgaW4gdGhlIEhUTUwgZG9jdW1lbnQuIFRoaXMgdmFsdWUgY2FuIGFsc28gYmUgc2V0IGFuZCByZXNldCB1c2luZyB0aGUgdGV4dC1lbXBoYXNpcyBzaG9ydGhhbmQuIn0se25hbWU6InRleHQtZW1waGFzaXMtcG9zaXRpb24iLHN5bnRheDoiWyBvdmVyIHwgdW5kZXIgXSAmJiBbIHJpZ2h0IHwgbGVmdCBdIixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFOTkiLCJGRjQ2IiwiUzciLCJDOTkiLCJPODUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvdGV4dC1lbXBoYXNpcy1wb3NpdGlvbiJ9XSxkZXNjcmlwdGlvbjoiVGhlIHRleHQtZW1waGFzaXMtcG9zaXRpb24gQ1NTIHByb3BlcnR5IGRlc2NyaWJlcyB3aGVyZSBlbXBoYXNpcyBtYXJrcyBhcmUgZHJhd24gYXQuIFRoZSBlZmZlY3Qgb2YgZW1waGFzaXMgbWFya3Mgb24gdGhlIGxpbmUgaGVpZ2h0IGlzIHRoZSBzYW1lIGFzIGZvciBydWJ5IHRleHQ6IGlmIHRoZXJlIGlzbid0IGVub3VnaCBwbGFjZSwgdGhlIGxpbmUgaGVpZ2h0IGlzIGluY3JlYXNlZC4ifSx7bmFtZToidGV4dC1lbXBoYXNpcy1zdHlsZSIsc3ludGF4OiJub25lIHwgWyBbIGZpbGxlZCB8IG9wZW4gXSB8fCBbIGRvdCB8IGNpcmNsZSB8IGRvdWJsZS1jaXJjbGUgfCB0cmlhbmdsZSB8IHNlc2FtZSBdIF0gfCA8c3RyaW5nPiIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTk5IiwiRkY0NiIsIlM3IiwiQzk5IiwiTzg1Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3RleHQtZW1waGFzaXMtc3R5bGUifV0sZGVzY3JpcHRpb246IlRoZSB0ZXh0LWVtcGhhc2lzLXN0eWxlIENTUyBwcm9wZXJ0eSBkZWZpbmVzIHRoZSB0eXBlIG9mIGVtcGhhc2lzIHVzZWQuIEl0IGNhbiBhbHNvIGJlIHNldCwgYW5kIHJlc2V0LCB1c2luZyB0aGUgdGV4dC1lbXBoYXNpcyBzaG9ydGhhbmQuIn0se25hbWU6InRleHQtc2l6ZS1hZGp1c3QiLHN0YXR1czoiZXhwZXJpbWVudGFsIixzeW50YXg6Im5vbmUgfCBhdXRvIHwgPHBlcmNlbnRhZ2U+IixyZWxldmFuY2U6NTcsYnJvd3NlcnM6WyJFNzkiLCJDNTQiLCJPNDEiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvdGV4dC1zaXplLWFkanVzdCJ9XSxkZXNjcmlwdGlvbjoiVGhlIHRleHQtc2l6ZS1hZGp1c3QgQ1NTIHByb3BlcnR5IGNvbnRyb2xzIHRoZSB0ZXh0IGluZmxhdGlvbiBhbGdvcml0aG0gdXNlZCBvbiBzb21lIHNtYXJ0cGhvbmVzIGFuZCB0YWJsZXRzLiBPdGhlciBicm93c2VycyB3aWxsIGlnbm9yZSB0aGlzIHByb3BlcnR5LiJ9LHtuYW1lOiJ0ZXh0LXVuZGVybGluZS1vZmZzZXQiLHN5bnRheDoiYXV0byB8IDxsZW5ndGg+IHwgPHBlcmNlbnRhZ2U+ICIscmVsZXZhbmNlOjUxLGJyb3dzZXJzOlsiRTg3IiwiRkY3MCIsIlMxMi4xIiwiQzg3IiwiTzczIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3RleHQtdW5kZXJsaW5lLW9mZnNldCJ9XSxkZXNjcmlwdGlvbjoiVGhlIHRleHQtdW5kZXJsaW5lLW9mZnNldCBDU1MgcHJvcGVydHkgc2V0cyB0aGUgb2Zmc2V0IGRpc3RhbmNlIG9mIGFuIHVuZGVybGluZSB0ZXh0IGRlY29yYXRpb24gbGluZSAoYXBwbGllZCB1c2luZyB0ZXh0LWRlY29yYXRpb24pIGZyb20gaXRzIG9yaWdpbmFsIHBvc2l0aW9uLiJ9LHtuYW1lOiJ0ZXh0LXdyYXAiLHN5bnRheDoid3JhcCB8IG5vd3JhcCB8IGJhbGFuY2UgfCBzdGFibGUgfCBwcmV0dHkiLHZhbHVlczpbe25hbWU6IndyYXAifSx7bmFtZToibm93cmFwIn0se25hbWU6ImJhbGFuY2UifSx7bmFtZToic3RhYmxlIn0se25hbWU6InByZXR0eSJ9XSxyZWxldmFuY2U6NTQsYnJvd3NlcnM6WyJFMTE0IiwiRkYxMjEiLCJTcHJldmlldyIsIkMxMTQiLCJPMTAwIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3RleHQtd3JhcCJ9XSxkZXNjcmlwdGlvbjoiVGhlIHRleHQtd3JhcCBDU1MgcHJvcGVydHkgY29udHJvbHMgaG93IHRleHQgaW5zaWRlIGFuIGVsZW1lbnQgaXMgd3JhcHBlZC4ifSx7bmFtZToidGltZWxpbmUtc2NvcGUiLHN0YXR1czoiZXhwZXJpbWVudGFsIixzeW50YXg6Im5vbmUgfCA8ZGFzaGVkLWlkZW50PiMiLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkUxMTYiLCJDMTE2IiwiTzEwMiJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy90aW1lbGluZS1zY29wZSJ9XSxkZXNjcmlwdGlvbjoiVGhlIHRpbWVsaW5lLXNjb3BlIENTUyBwcm9wZXJ0eSBtb2RpZmllcyB0aGUgc2NvcGUgb2YgYSBuYW1lZCBhbmltYXRpb24gdGltZWxpbmUuIn0se25hbWU6InRyYW5zZm9ybS1ib3giLHN5bnRheDoiY29udGVudC1ib3ggfCBib3JkZXItYm94IHwgZmlsbC1ib3ggfCBzdHJva2UtYm94IHwgdmlldy1ib3giLHZhbHVlczpbe25hbWU6ImNvbnRlbnQtYm94In0se25hbWU6ImJvcmRlci1ib3gifSx7bmFtZToiZmlsbC1ib3gifSx7bmFtZToic3Ryb2tlLWJveCJ9LHtuYW1lOiJ2aWV3LWJveCJ9XSxyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFNzkiLCJGRjU1IiwiUzExIiwiQzY0IiwiTzUxIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3RyYW5zZm9ybS1ib3gifV0sZGVzY3JpcHRpb246IlRoZSB0cmFuc2Zvcm0tYm94IENTUyBwcm9wZXJ0eSBkZWZpbmVzIHRoZSBsYXlvdXQgYm94IHRvIHdoaWNoIHRoZSB0cmFuc2Zvcm0gYW5kIHRyYW5zZm9ybS1vcmlnaW4gcHJvcGVydGllcyByZWxhdGUuIn0se25hbWU6InRyYW5zaXRpb24tYmVoYXZpb3IiLHN0YXR1czoiZXhwZXJpbWVudGFsIixzeW50YXg6Ijx0cmFuc2l0aW9uLWJlaGF2aW9yLXZhbHVlPiMiLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkUxMTciLCJDMTE3IiwiTzEwMyJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy90cmFuc2l0aW9uLWJlaGF2aW9yIn1dLGRlc2NyaXB0aW9uOiJUaGUgdHJhbnNpdGlvbi1iZWhhdmlvciBDU1MgcHJvcGVydHkgc3BlY2lmaWVzIHdoZXRoZXIgdHJhbnNpdGlvbnMgd2lsbCBiZSBzdGFydGVkIGZvciBwcm9wZXJ0aWVzIHdob3NlIGFuaW1hdGlvbiBiZWhhdmlvciBpcyBkaXNjcmV0ZS4ifSx7bmFtZToidHJhbnNsYXRlIixzeW50YXg6Im5vbmUgfCA8bGVuZ3RoLXBlcmNlbnRhZ2U+IFsgPGxlbmd0aC1wZXJjZW50YWdlPiA8bGVuZ3RoPj8gXT8iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkUxMDQiLCJGRjcyIiwiUzE0LjEiLCJDMTA0IiwiTzkwIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3RyYW5zbGF0ZSJ9XSxkZXNjcmlwdGlvbjoiVGhlIHRyYW5zbGF0ZSBDU1MgcHJvcGVydHkgYWxsb3dzIHlvdSB0byBzcGVjaWZ5IHRyYW5zbGF0aW9uIHRyYW5zZm9ybXMgaW5kaXZpZHVhbGx5IGFuZCBpbmRlcGVuZGVudGx5IG9mIHRoZSB0cmFuc2Zvcm0gcHJvcGVydHkuIFRoaXMgbWFwcyBiZXR0ZXIgdG8gdHlwaWNhbCB1c2VyIGludGVyZmFjZSB1c2FnZSwgYW5kIHNhdmVzIGhhdmluZyB0byByZW1lbWJlciB0aGUgZXhhY3Qgb3JkZXIgb2YgdHJhbnNmb3JtIGZ1bmN0aW9ucyB0byBzcGVjaWZ5IGluIHRoZSB0cmFuc2Zvcm0gdmFsdWUuIn0se25hbWU6InZpZXctdGltZWxpbmUiLHN0YXR1czoiZXhwZXJpbWVudGFsIixzeW50YXg6IlsgPCd2aWV3LXRpbWVsaW5lLW5hbWUnPiA8J3ZpZXctdGltZWxpbmUtYXhpcyc+PyBdIyIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTExNSIsIkZGMTE0IiwiQzExNSIsIk8xMDEiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvdmlldy10aW1lbGluZSJ9XSxkZXNjcmlwdGlvbjoiVGhlIHZpZXctdGltZWxpbmUgQ1NTIHNob3J0aGFuZCBwcm9wZXJ0eSBpcyB1c2VkIHRvIGRlZmluZSBhIG5hbWVkIHZpZXcgcHJvZ3Jlc3MgdGltZWxpbmUsIHdoaWNoIGlzIHByb2dyZXNzZWQgdGhyb3VnaCBiYXNlZCBvbiB0aGUgY2hhbmdlIGluIHZpc2liaWxpdHkgb2YgYW4gZWxlbWVudCAoa25vd24gYXMgdGhlIHN1YmplY3QpIGluc2lkZSBhIHNjcm9sbGFibGUgZWxlbWVudCAoc2Nyb2xsZXIpLiB2aWV3LXRpbWVsaW5lIGlzIHNldCBvbiB0aGUgc3ViamVjdC4ifSx7bmFtZToidmlldy10aW1lbGluZS1heGlzIixzdGF0dXM6ImV4cGVyaW1lbnRhbCIsc3ludGF4OiJbIGJsb2NrIHwgaW5saW5lIHwgeCB8IHkgXSMiLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkUxMTUiLCJGRjExNCIsIkMxMTUiLCJPMTAxIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3ZpZXctdGltZWxpbmUtYXhpcyJ9XSxkZXNjcmlwdGlvbjoiVGhlIHZpZXctdGltZWxpbmUtYXhpcyBDU1MgcHJvcGVydHkgaXMgdXNlZCB0byBzcGVjaWZ5IHRoZSBzY3JvbGxiYXIgZGlyZWN0aW9uIHRoYXQgd2lsbCBiZSB1c2VkIHRvIHByb3ZpZGUgdGhlIHRpbWVsaW5lIGZvciBhIG5hbWVkIHZpZXcgcHJvZ3Jlc3MgdGltZWxpbmUgYW5pbWF0aW9uLCB3aGljaCBpcyBwcm9ncmVzc2VkIHRocm91Z2ggYmFzZWQgb24gdGhlIGNoYW5nZSBpbiB2aXNpYmlsaXR5IG9mIGFuIGVsZW1lbnQgKGtub3duIGFzIHRoZSBzdWJqZWN0KSBpbnNpZGUgYSBzY3JvbGxhYmxlIGVsZW1lbnQgKHNjcm9sbGVyKS4gdmlldy10aW1lbGluZS1heGlzIGlzIHNldCBvbiB0aGUgc3ViamVjdC4gU2VlIENTUyBzY3JvbGwtZHJpdmVuIGFuaW1hdGlvbnMgZm9yIG1vcmUgZGV0YWlscy4ifSx7bmFtZToidmlldy10aW1lbGluZS1pbnNldCIsc3RhdHVzOiJleHBlcmltZW50YWwiLHN5bnRheDoiWyBbIGF1dG8gfCA8bGVuZ3RoLXBlcmNlbnRhZ2U+IF17MSwyfSBdIyIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTExNSIsIkMxMTUiLCJPMTAxIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3ZpZXctdGltZWxpbmUtaW5zZXQifV0sZGVzY3JpcHRpb246IlRoZSB2aWV3LXRpbWVsaW5lLWluc2V0IENTUyBwcm9wZXJ0eSBpcyB1c2VkIHRvIHNwZWNpZnkgb25lIG9yIHR3byB2YWx1ZXMgcmVwcmVzZW50aW5nIGFuIGFkanVzdG1lbnQgdG8gdGhlIHBvc2l0aW9uIG9mIHRoZSBzY3JvbGxwb3J0IChzZWUgU2Nyb2xsIGNvbnRhaW5lciBmb3IgbW9yZSBkZXRhaWxzKSBpbiB3aGljaCB0aGUgc3ViamVjdCBlbGVtZW50IG9mIGEgbmFtZWQgdmlldyBwcm9ncmVzcyB0aW1lbGluZSBhbmltYXRpb24gaXMgZGVlbWVkIHRvIGJlIHZpc2libGUuIFB1dCBhbm90aGVyIHdheSwgdGhpcyBhbGxvd3MgeW91IHRvIHNwZWNpZnkgc3RhcnQgYW5kL29yIGVuZCBpbnNldCAob3Igb3V0c2V0KSB2YWx1ZXMgdGhhdCBvZmZzZXQgdGhlIHBvc2l0aW9uIG9mIHRoZSB0aW1lbGluZS4ifSx7bmFtZToidmlldy10aW1lbGluZS1uYW1lIixzdGF0dXM6ImV4cGVyaW1lbnRhbCIsc3ludGF4OiJub25lIHwgPGRhc2hlZC1pZGVudD4jIixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFMTE1IiwiRkYxMTEiLCJDMTE1IiwiTzEwMSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy92aWV3LXRpbWVsaW5lLW5hbWUifV0sZGVzY3JpcHRpb246IlRoZSB2aWV3LXRpbWVsaW5lLW5hbWUgQ1NTIHByb3BlcnR5IGlzIHVzZWQgdG8gZGVmaW5lIHRoZSBuYW1lIG9mIGEgbmFtZWQgdmlldyBwcm9ncmVzcyB0aW1lbGluZSwgd2hpY2ggaXMgcHJvZ3Jlc3NlZCB0aHJvdWdoIGJhc2VkIG9uIHRoZSBjaGFuZ2UgaW4gdmlzaWJpbGl0eSBvZiBhbiBlbGVtZW50IChrbm93biBhcyB0aGUgc3ViamVjdCkgaW5zaWRlIGEgc2Nyb2xsYWJsZSBlbGVtZW50IChzY3JvbGxlcikuIHZpZXctdGltZWxpbmUgaXMgc2V0IG9uIHRoZSBzdWJqZWN0LiJ9LHtuYW1lOiJ2aWV3LXRyYW5zaXRpb24tbmFtZSIsc3RhdHVzOiJleHBlcmltZW50YWwiLHN5bnRheDoibm9uZSB8IDxjdXN0b20taWRlbnQ+IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFMTExIiwiQzExMSIsIk85NyJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy92aWV3LXRyYW5zaXRpb24tbmFtZSJ9XSxkZXNjcmlwdGlvbjoiVGhlIHZpZXctdHJhbnNpdGlvbi1uYW1lIENTUyBwcm9wZXJ0eSBwcm92aWRlcyB0aGUgc2VsZWN0ZWQgZWxlbWVudCB3aXRoIGEgZGlzdGluY3QgaWRlbnRpZnlpbmcgbmFtZSAoYSBjdXN0b20taWRlbnQpIGFuZCBjYXVzZXMgaXQgdG8gcGFydGljaXBhdGUgaW4gYSBzZXBhcmF0ZSB2aWV3IHRyYW5zaXRpb24gZnJvbSB0aGUgcm9vdCB2aWV3IHRyYW5zaXRpb24g4oCUIG9yIG5vIHZpZXcgdHJhbnNpdGlvbiBpZiB0aGUgbm9uZSB2YWx1ZSBpcyBzcGVjaWZpZWQuIn0se25hbWU6IndoaXRlLXNwYWNlIixzeW50YXg6Im5vcm1hbCB8IHByZSB8IG5vd3JhcCB8IHByZS13cmFwIHwgcHJlLWxpbmUgfCBicmVhay1zcGFjZXMgfCBbIDwnd2hpdGUtc3BhY2UtY29sbGFwc2UnPiB8fCA8J3RleHQtd3JhcCc+IHx8IDwnd2hpdGUtc3BhY2UtdHJpbSc+IF0iLHJlbGV2YW5jZTo4OSxicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxIiwiQzEiLCJJRTUuNSIsIk80Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3doaXRlLXNwYWNlIn1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgaG93IHdoaXRlc3BhY2UgaXMgaGFuZGxlZCBpbiBhbiBlbGVtZW50LiJ9LHtuYW1lOiJ3aGl0ZS1zcGFjZS1jb2xsYXBzZSIsc3ludGF4OiJjb2xsYXBzZSB8IGRpc2NhcmQgfCBwcmVzZXJ2ZSB8IHByZXNlcnZlLWJyZWFrcyB8IHByZXNlcnZlLXNwYWNlcyB8IGJyZWFrLXNwYWNlcyIsdmFsdWVzOlt7bmFtZToiY29sbGFwc2UifSx7bmFtZToiZGlzY2FyZCJ9LHtuYW1lOiJwcmVzZXJ2ZSJ9LHtuYW1lOiJwcmVzZXJ2ZS1icmVha3MifSx7bmFtZToicHJlc2VydmUtc3BhY2VzIn0se25hbWU6ImJyZWFrLXNwYWNlcyJ9XSxyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFMTE0IiwiU3ByZXZpZXciLCJDMTE0IiwiTzEwMCJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy93aGl0ZS1zcGFjZS1jb2xsYXBzZSJ9XSxkZXNjcmlwdGlvbjoiVGhlIHdoaXRlLXNwYWNlLWNvbGxhcHNlIENTUyBwcm9wZXJ0eSBjb250cm9scyBob3cgd2hpdGUgc3BhY2UgaW5zaWRlIGFuIGVsZW1lbnQgaXMgY29sbGFwc2VkLiJ9LHtuYW1lOiJzcGVhay1hcyIsYXRSdWxlOiJAY291bnRlci1zdHlsZSIsc3ludGF4OiJhdXRvIHwgYnVsbGV0cyB8IG51bWJlcnMgfCB3b3JkcyB8IHNwZWxsLW91dCB8IDxjb3VudGVyLXN0eWxlLW5hbWU+IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJTMTEuMSJdLGRlc2NyaXB0aW9uOiJUaGUgc3BlYWstYXMgZGVzY3JpcHRvciBzcGVjaWZpZXMgaG93IGEgY291bnRlciBzeW1ib2wgY29uc3RydWN0ZWQgd2l0aCBhIGdpdmVuIEBjb3VudGVyLXN0eWxlIHdpbGwgYmUgcmVwcmVzZW50ZWQgaW4gdGhlIHNwb2tlbiBmb3JtLiBGb3IgZXhhbXBsZSwgYW4gYXV0aG9yIGNhbiBzcGVjaWZ5IGEgY291bnRlciBzeW1ib2wgdG8gYmUgZWl0aGVyIHNwb2tlbiBhcyBpdHMgbnVtZXJpY2FsIHZhbHVlIG9yIGp1c3QgcmVwcmVzZW50ZWQgd2l0aCBhbiBhdWRpbyBjdWUuIn0se25hbWU6ImJhc2UtcGFsZXR0ZSIsYXRSdWxlOiJAZm9udC1wYWxldHRlLXZhbHVlcyIsc3ludGF4OiJsaWdodCB8IGRhcmsgfCA8aW50ZWdlciBbMCziiJ5dPiIscmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJUaGUgYmFzZS1wYWxldHRlIENTUyBkZXNjcmlwdG9yIGlzIHVzZWQgdG8gc3BlY2lmeSB0aGUgbmFtZSBvciBpbmRleCBvZiBhIHByZS1kZWZpbmVkIHBhbGV0dGUgdG8gYmUgdXNlZCBmb3IgY3JlYXRpbmcgYSBuZXcgcGFsZXR0ZS4gSWYgdGhlIHNwZWNpZmllZCBiYXNlLXBhbGV0dGUgZG9lcyBub3QgZXhpc3QsIHRoZW4gdGhlIHBhbGV0dGUgZGVmaW5lZCBhdCBpbmRleCAwIHdpbGwgYmUgdXNlZC4ifSx7bmFtZToib3ZlcnJpZGUtY29sb3JzIixhdFJ1bGU6IkBmb250LXBhbGV0dGUtdmFsdWVzIixzeW50YXg6IlsgPGludGVnZXIgWzAs4oieXT4gPGFic29sdXRlLWNvbG9yLWJhc2U+IF0jIixyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlRoZSBvdmVycmlkZS1jb2xvcnMgQ1NTIGRlc2NyaXB0b3IgaXMgdXNlZCB0byBvdmVycmlkZSBjb2xvcnMgaW4gdGhlIGNob3NlbiBiYXNlLXBhbGV0dGUgZm9yIGEgY29sb3IgZm9udC4ifSx7bmFtZToiYXNjZW50LW92ZXJyaWRlIixhdFJ1bGU6IkBmb250LWZhY2UiLHN0YXR1czoiZXhwZXJpbWVudGFsIixzeW50YXg6Im5vcm1hbCB8IDxwZXJjZW50YWdlPiIscmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJEZXNjcmliZXMgdGhlIGFzY2VudCBtZXRyaWMgb2YgYSBmb250LiJ9LHtuYW1lOiJkZXNjZW50LW92ZXJyaWRlIixhdFJ1bGU6IkBmb250LWZhY2UiLHN0YXR1czoiZXhwZXJpbWVudGFsIixzeW50YXg6Im5vcm1hbCB8IDxwZXJjZW50YWdlPiIscmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJEZXNjcmliZXMgdGhlIGRlc2NlbnQgbWV0cmljIG9mIGEgZm9udC4ifSx7bmFtZToiZm9udC1kaXNwbGF5IixhdFJ1bGU6IkBmb250LWZhY2UiLHN0YXR1czoiZXhwZXJpbWVudGFsIixzeW50YXg6IlsgYXV0byB8IGJsb2NrIHwgc3dhcCB8IGZhbGxiYWNrIHwgb3B0aW9uYWwgXSIscmVsZXZhbmNlOjc0LGRlc2NyaXB0aW9uOiJUaGUgZm9udC1kaXNwbGF5IGRlc2NyaXB0b3IgZGV0ZXJtaW5lcyBob3cgYSBmb250IGZhY2UgaXMgZGlzcGxheWVkIGJhc2VkIG9uIHdoZXRoZXIgYW5kIHdoZW4gaXQgaXMgZG93bmxvYWRlZCBhbmQgcmVhZHkgdG8gdXNlLiJ9LHtuYW1lOiJsaW5lLWdhcC1vdmVycmlkZSIsYXRSdWxlOiJAZm9udC1mYWNlIixzdGF0dXM6ImV4cGVyaW1lbnRhbCIsc3ludGF4OiJub3JtYWwgfCA8cGVyY2VudGFnZT4iLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRGVzY3JpYmVzIHRoZSBsaW5lLWdhcCBtZXRyaWMgb2YgYSBmb250LiJ9LHtuYW1lOiJzaXplLWFkanVzdCIsYXRSdWxlOiJAZm9udC1mYWNlIixzdGF0dXM6ImV4cGVyaW1lbnRhbCIsc3ludGF4OiI8cGVyY2VudGFnZT4iLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiQSBtdWx0aXBsaWVyIGZvciBnbHlwaCBvdXRsaW5lcyBhbmQgbWV0cmljcyBvZiBhIGZvbnQuIn0se25hbWU6ImJsZWVkIixhdFJ1bGU6IkBwYWdlIixzeW50YXg6ImF1dG8gfCA8bGVuZ3RoPiIscmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJUaGUgYmxlZWQgQ1NTIGF0LXJ1bGUgZGVzY3JpcHRvciwgdXNlZCB3aXRoIHRoZSBAcGFnZSBhdC1ydWxlLCBzcGVjaWZpZXMgdGhlIGV4dGVudCBvZiB0aGUgcGFnZSBibGVlZCBhcmVhIG91dHNpZGUgdGhlIHBhZ2UgYm94LiBUaGlzIHByb3BlcnR5IG9ubHkgaGFzIGVmZmVjdCBpZiBjcm9wIG1hcmtzIGFyZSBlbmFibGVkIHVzaW5nIHRoZSBtYXJrcyBwcm9wZXJ0eS4ifSx7bmFtZToibWFya3MiLGF0UnVsZToiQHBhZ2UiLHN5bnRheDoibm9uZSB8IFsgY3JvcCB8fCBjcm9zcyBdIixyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlRoZSBtYXJrcyBDU1MgYXQtcnVsZSBkZXNjcmlwdG9yLCB1c2VkIHdpdGggdGhlIEBwYWdlIGF0LXJ1bGUsIGFkZHMgY3JvcCBhbmQvb3IgY3Jvc3MgbWFya3MgdG8gdGhlIHByZXNlbnRhdGlvbiBvZiB0aGUgZG9jdW1lbnQuIENyb3AgbWFya3MgaW5kaWNhdGUgd2hlcmUgdGhlIHBhZ2Ugc2hvdWxkIGJlIGN1dC4gQ3Jvc3MgbWFya3MgYXJlIHVzZWQgdG8gYWxpZ24gc2hlZXRzLiJ9LHtuYW1lOiJwYWdlLW9yaWVudGF0aW9uIixhdFJ1bGU6IkBwYWdlIixzeW50YXg6InVwcmlnaHQgfCByb3RhdGUtbGVmdCB8IHJvdGF0ZS1yaWdodCAiLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiVGhlIHBhZ2Utb3JpZW50YXRpb24gQ1NTIGRlc2NyaXB0b3IgZm9yIHRoZSBAcGFnZSBhdC1ydWxlIGNvbnRyb2xzIHRoZSByb3RhdGlvbiBvZiBhIHByaW50ZWQgcGFnZS4gSXQgaGFuZGxlcyB0aGUgZmxvdyBvZiBjb250ZW50IGFjcm9zcyBwYWdlcyB3aGVuIHRoZSBvcmllbnRhdGlvbiBvZiBhIHBhZ2UgaXMgY2hhbmdlZC4gVGhpcyBiZWhhdmlvciBkaWZmZXJzIGZyb20gdGhlIHNpemUgZGVzY3JpcHRvciBpbiB0aGF0IGEgdXNlciBjYW4gZGVmaW5lIHRoZSBkaXJlY3Rpb24gaW4gd2hpY2ggdG8gcm90YXRlIHRoZSBwYWdlLiJ9LHtuYW1lOiJzeW50YXgiLGF0UnVsZToiQHByb3BlcnR5IixzdGF0dXM6ImV4cGVyaW1lbnRhbCIsc3ludGF4OiI8c3RyaW5nPiIscmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhlIHN5bnRheCBvZiB0aGUgY3VzdG9tIHByb3BlcnR5IHJlZ2lzdHJhdGlvbiByZXByZXNlbnRlZCBieSB0aGUgQHByb3BlcnR5IHJ1bGUsIGNvbnRyb2xsaW5nIGhvdyB0aGUgcHJvcGVydHnigJlzIHZhbHVlIGlzIHBhcnNlZCBhdCBjb21wdXRlZCB2YWx1ZSB0aW1lLiJ9LHtuYW1lOiJpbmhlcml0cyIsYXRSdWxlOiJAcHJvcGVydHkiLHN0YXR1czoiZXhwZXJpbWVudGFsIixzeW50YXg6InRydWUgfCBmYWxzZSIsdmFsdWVzOlt7bmFtZToidHJ1ZSJ9LHtuYW1lOiJmYWxzZSJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgaW5oZXJpdCBmbGFnIG9mIHRoZSBjdXN0b20gcHJvcGVydHkgcmVnaXN0cmF0aW9uIHJlcHJlc2VudGVkIGJ5IHRoZSBAcHJvcGVydHkgcnVsZSwgY29udHJvbGxpbmcgd2hldGhlciBvciBub3QgdGhlIHByb3BlcnR5IGluaGVyaXRzIGJ5IGRlZmF1bHQuIn0se25hbWU6ImluaXRpYWwtdmFsdWUiLGF0UnVsZToiQHByb3BlcnR5IixzdGF0dXM6ImV4cGVyaW1lbnRhbCIsc3ludGF4OiI8ZGVjbGFyYXRpb24tdmFsdWU+PyIscmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhlIGluaXRpYWwgdmFsdWUgb2YgdGhlIGN1c3RvbSBwcm9wZXJ0eSByZWdpc3RyYXRpb24gcmVwcmVzZW50ZWQgYnkgdGhlIEBwcm9wZXJ0eSBydWxlLCBjb250cm9sbGluZyB0aGUgcHJvcGVydHnigJlzIGluaXRpYWwgdmFsdWUuIn1dLGF0RGlyZWN0aXZlczpbe25hbWU6IkBjaGFyc2V0Iixicm93c2VyczpbIkUxMiIsIkZGMS41IiwiUzQiLCJDMiIsIklFNS41IiwiTzkiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvQGNoYXJzZXQifV0sZGVzY3JpcHRpb246IkRlZmluZXMgY2hhcmFjdGVyIHNldCBvZiB0aGUgZG9jdW1lbnQuIn0se25hbWU6IkBjb3VudGVyLXN0eWxlIixicm93c2VyczpbIkU5MSIsIkZGMzMiLCJTMTciLCJDOTEiLCJPNzciXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvQGNvdW50ZXItc3R5bGUifV0sZGVzY3JpcHRpb246IkRlZmluZXMgYSBjdXN0b20gY291bnRlciBzdHlsZS4ifSx7bmFtZToiQGZvbnQtZmFjZSIsYnJvd3NlcnM6WyJFMTIiLCJGRjMuNSIsIlMzLjEiLCJDMSIsIklFNCIsIk8xMCJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9AZm9udC1mYWNlIn1dLGRlc2NyaXB0aW9uOiJBbGxvd3MgZm9yIGxpbmtpbmcgdG8gZm9udHMgdGhhdCBhcmUgYXV0b21hdGljYWxseSBhY3RpdmF0ZWQgd2hlbiBuZWVkZWQuIFRoaXMgcGVybWl0cyBhdXRob3JzIHRvIHdvcmsgYXJvdW5kIHRoZSBsaW1pdGF0aW9uIG9mICd3ZWItc2FmZScgZm9udHMsIGFsbG93aW5nIGZvciBjb25zaXN0ZW50IHJlbmRlcmluZyBpbmRlcGVuZGVudCBvZiB0aGUgZm9udHMgYXZhaWxhYmxlIGluIGEgZ2l2ZW4gdXNlcidzIGVudmlyb25tZW50LiJ9LHtuYW1lOiJAZm9udC1mZWF0dXJlLXZhbHVlcyIsYnJvd3NlcnM6WyJFMTExIiwiRkYzNCIsIlM5LjEiLCJDMTExIiwiTzk3Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL0Bmb250LWZlYXR1cmUtdmFsdWVzIn1dLGRlc2NyaXB0aW9uOiJEZWZpbmVzIG5hbWVkIHZhbHVlcyBmb3IgdGhlIGluZGljZXMgdXNlZCB0byBzZWxlY3QgYWx0ZXJuYXRlIGdseXBocyBmb3IgYSBnaXZlbiBmb250IGZhbWlseS4ifSx7bmFtZToiQGltcG9ydCIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMSIsIkMxIiwiSUU1LjUiLCJPMy41Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL0BpbXBvcnQifV0sZGVzY3JpcHRpb246IkluY2x1ZGVzIGNvbnRlbnQgb2YgYW5vdGhlciBmaWxlLiJ9LHtuYW1lOiJAa2V5ZnJhbWVzIixicm93c2VyczpbIkUxMiIsIkZGMTYiLCJTOSIsIkM0MyIsIklFMTAiLCJPMzAiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvQGtleWZyYW1lcyJ9XSxkZXNjcmlwdGlvbjoiRGVmaW5lcyBzZXQgb2YgYW5pbWF0aW9uIGtleSBmcmFtZXMuIn0se25hbWU6IkBsYXllciIsYnJvd3NlcnM6WyJFOTkiLCJGRjk3IiwiUzE1LjQiLCJDOTkiLCJPODUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvQGxheWVyIn1dLGRlc2NyaXB0aW9uOiJEZWNsYXJlIGEgY2FzY2FkZSBsYXllciBhbmQgdGhlIG9yZGVyIG9mIHByZWNlZGVuY2UgaW4gY2FzZSBvZiBtdWx0aXBsZSBjYXNjYWRlIGxheWVycy4ifSx7bmFtZToiQG1lZGlhIixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMzIiwiQzEiLCJJRTYiLCJPOS4yIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL0BtZWRpYSJ9XSxkZXNjcmlwdGlvbjoiRGVmaW5lcyBhIHN0eWxlc2hlZXQgZm9yIGEgcGFydGljdWxhciBtZWRpYSB0eXBlLiJ9LHtuYW1lOiJALW1vei1kb2N1bWVudCIsYnJvd3NlcnM6WyJGRjEuOCJdLGRlc2NyaXB0aW9uOiJHZWNrby1zcGVjaWZpYyBhdC1ydWxlIHRoYXQgcmVzdHJpY3RzIHRoZSBzdHlsZSBydWxlcyBjb250YWluZWQgd2l0aGluIGl0IGJhc2VkIG9uIHRoZSBVUkwgb2YgdGhlIGRvY3VtZW50LiJ9LHtuYW1lOiJALW1vei1rZXlmcmFtZXMiLGJyb3dzZXJzOlsiRkY1Il0sZGVzY3JpcHRpb246IkRlZmluZXMgc2V0IG9mIGFuaW1hdGlvbiBrZXkgZnJhbWVzLiJ9LHtuYW1lOiJALW1zLXZpZXdwb3J0Iixicm93c2VyczpbIkUiLCJJRTEwIl0sZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgc2l6ZSwgem9vbSBmYWN0b3IsIGFuZCBvcmllbnRhdGlvbiBvZiB0aGUgdmlld3BvcnQuIn0se25hbWU6IkBuYW1lc3BhY2UiLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzEiLCJDMSIsIklFOSIsIk84Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL0BuYW1lc3BhY2UifV0sZGVzY3JpcHRpb246IkRlY2xhcmVzIGEgcHJlZml4IGFuZCBhc3NvY2lhdGVzIGl0IHdpdGggYSBuYW1lc3BhY2UgbmFtZS4ifSx7bmFtZToiQC1vLWtleWZyYW1lcyIsYnJvd3NlcnM6WyJPMTIiXSxkZXNjcmlwdGlvbjoiRGVmaW5lcyBzZXQgb2YgYW5pbWF0aW9uIGtleSBmcmFtZXMuIn0se25hbWU6IkAtby12aWV3cG9ydCIsYnJvd3NlcnM6WyJPMTEiXSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSBzaXplLCB6b29tIGZhY3RvciwgYW5kIG9yaWVudGF0aW9uIG9mIHRoZSB2aWV3cG9ydC4ifSx7bmFtZToiQHBhZ2UiLGJyb3dzZXJzOlsiRTEyIiwiRkYxOSIsIlMxMy4xIiwiQzIiLCJJRTgiLCJPNiJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9AcGFnZSJ9XSxkZXNjcmlwdGlvbjoiRGlyZWN0aXZlIGRlZmluZXMgdmFyaW91cyBwYWdlIHBhcmFtZXRlcnMuIn0se25hbWU6IkBwcm9wZXJ0eSIsYnJvd3NlcnM6WyJFODUiLCJGRnByZXZpZXciLCJTMTYuNCIsIkM4NSIsIk83MSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9AcHJvcGVydHkifV0sZGVzY3JpcHRpb246IkRlc2NyaWJlcyB0aGUgYXNwZWN0IG9mIGN1c3RvbSBwcm9wZXJ0aWVzIGFuZCB2YXJpYWJsZXMuIn0se25hbWU6IkBzdXBwb3J0cyIsYnJvd3NlcnM6WyJFMTIiLCJGRjIyIiwiUzkiLCJDMjgiLCJPMTIuMSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9Ac3VwcG9ydHMifV0sZGVzY3JpcHRpb246IkEgY29uZGl0aW9uYWwgZ3JvdXAgcnVsZSB3aG9zZSBjb25kaXRpb24gdGVzdHMgd2hldGhlciB0aGUgdXNlciBhZ2VudCBzdXBwb3J0cyBDU1MgcHJvcGVydHk6dmFsdWUgcGFpcnMuIn0se25hbWU6IkAtd2Via2l0LWtleWZyYW1lcyIsYnJvd3NlcnM6WyJDIiwiUzQiXSxkZXNjcmlwdGlvbjoiRGVmaW5lcyBzZXQgb2YgYW5pbWF0aW9uIGtleSBmcmFtZXMuIn1dLHBzZXVkb0NsYXNzZXM6W3tuYW1lOiI6YWN0aXZlIixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxIiwiQzEiLCJJRTQiLCJPNSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86YWN0aXZlIn1dLGRlc2NyaXB0aW9uOiJBcHBsaWVzIHdoaWxlIGFuIGVsZW1lbnQgaXMgYmVpbmcgYWN0aXZhdGVkIGJ5IHRoZSB1c2VyLiBGb3IgZXhhbXBsZSwgYmV0d2VlbiB0aGUgdGltZXMgdGhlIHVzZXIgcHJlc3NlcyB0aGUgbW91c2UgYnV0dG9uIGFuZCByZWxlYXNlcyBpdC4ifSx7bmFtZToiOmFueS1saW5rIixicm93c2VyczpbIkU3OSIsIkZGNTAiLCJTOSIsIkM2NSIsIk81MiJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86YW55LWxpbmsifV0sZGVzY3JpcHRpb246IlJlcHJlc2VudHMgYW4gZWxlbWVudCB0aGF0IGFjdHMgYXMgdGhlIHNvdXJjZSBhbmNob3Igb2YgYSBoeXBlcmxpbmsuIEFwcGxpZXMgdG8gYm90aCB2aXNpdGVkIGFuZCB1bnZpc2l0ZWQgbGlua3MuIn0se25hbWU6IjpjaGVja2VkIixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMzLjEiLCJDMSIsIklFOSIsIk85Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzpjaGVja2VkIn1dLGRlc2NyaXB0aW9uOiJSYWRpbyBhbmQgY2hlY2tib3ggZWxlbWVudHMgY2FuIGJlIHRvZ2dsZWQgYnkgdGhlIHVzZXIuIFNvbWUgbWVudSBpdGVtcyBhcmUgJ2NoZWNrZWQnIHdoZW4gdGhlIHVzZXIgc2VsZWN0cyB0aGVtLiBXaGVuIHN1Y2ggZWxlbWVudHMgYXJlIHRvZ2dsZWQgJ29uJyB0aGUgOmNoZWNrZWQgcHNldWRvLWNsYXNzIGFwcGxpZXMuIn0se25hbWU6Ijpjb3JuZXItcHJlc2VudCIsYnJvd3NlcnM6WyJDIiwiUzUiXSxkZXNjcmlwdGlvbjoiTm9uLXN0YW5kYXJkLiBJbmRpY2F0ZXMgd2hldGhlciBvciBub3QgYSBzY3JvbGxiYXIgY29ybmVyIGlzIHByZXNlbnQuIn0se25hbWU6IjpkZWNyZW1lbnQiLGJyb3dzZXJzOlsiQyIsIlM1Il0sZGVzY3JpcHRpb246Ik5vbi1zdGFuZGFyZC4gQXBwbGllcyB0byBidXR0b25zIGFuZCB0cmFjayBwaWVjZXMuIEluZGljYXRlcyB3aGV0aGVyIG9yIG5vdCB0aGUgYnV0dG9uIG9yIHRyYWNrIHBpZWNlIHdpbGwgZGVjcmVtZW50IHRoZSB2aWV3J3MgcG9zaXRpb24gd2hlbiB1c2VkLiJ9LHtuYW1lOiI6ZGVmYXVsdCIsYnJvd3NlcnM6WyJFNzkiLCJGRjQiLCJTNSIsIkMxMCIsIk8xMCJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86ZGVmYXVsdCJ9XSxkZXNjcmlwdGlvbjoiQXBwbGllcyB0byB0aGUgb25lIG9yIG1vcmUgVUkgZWxlbWVudHMgdGhhdCBhcmUgdGhlIGRlZmF1bHQgYW1vbmcgYSBzZXQgb2Ygc2ltaWxhciBlbGVtZW50cy4gVHlwaWNhbGx5IGFwcGxpZXMgdG8gY29udGV4dCBtZW51IGl0ZW1zLCBidXR0b25zLCBhbmQgc2VsZWN0IGxpc3RzL21lbnVzLiJ9LHtuYW1lOiI6ZGlzYWJsZWQiLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzMuMSIsIkMxIiwiSUU5IiwiTzkiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOmRpc2FibGVkIn1dLGRlc2NyaXB0aW9uOiJSZXByZXNlbnRzIHVzZXIgaW50ZXJmYWNlIGVsZW1lbnRzIHRoYXQgYXJlIGluIGEgZGlzYWJsZWQgc3RhdGU7IHN1Y2ggZWxlbWVudHMgaGF2ZSBhIGNvcnJlc3BvbmRpbmcgZW5hYmxlZCBzdGF0ZS4ifSx7bmFtZToiOmRvdWJsZS1idXR0b24iLGJyb3dzZXJzOlsiQyIsIlM1Il0sZGVzY3JpcHRpb246Ik5vbi1zdGFuZGFyZC4gQXBwbGllcyB0byBidXR0b25zIGFuZCB0cmFjayBwaWVjZXMuIEFwcGxpZXMgd2hlbiBib3RoIGJ1dHRvbnMgYXJlIGRpc3BsYXllZCB0b2dldGhlciBhdCB0aGUgc2FtZSBlbmQgb2YgdGhlIHNjcm9sbGJhci4ifSx7bmFtZToiOmVtcHR5Iixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMzLjEiLCJDMSIsIklFOSIsIk85LjUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOmVtcHR5In1dLGRlc2NyaXB0aW9uOiJSZXByZXNlbnRzIGFuIGVsZW1lbnQgdGhhdCBoYXMgbm8gY2hpbGRyZW4gYXQgYWxsLiJ9LHtuYW1lOiI6ZW5hYmxlZCIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMy4xIiwiQzEiLCJJRTkiLCJPOSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86ZW5hYmxlZCJ9XSxkZXNjcmlwdGlvbjoiUmVwcmVzZW50cyB1c2VyIGludGVyZmFjZSBlbGVtZW50cyB0aGF0IGFyZSBpbiBhbiBlbmFibGVkIHN0YXRlOyBzdWNoIGVsZW1lbnRzIGhhdmUgYSBjb3JyZXNwb25kaW5nIGRpc2FibGVkIHN0YXRlLiJ9LHtuYW1lOiI6ZW5kIixicm93c2VyczpbIkMiLCJTNSJdLGRlc2NyaXB0aW9uOiJOb24tc3RhbmRhcmQuIEFwcGxpZXMgdG8gYnV0dG9ucyBhbmQgdHJhY2sgcGllY2VzLiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgb2JqZWN0IGlzIHBsYWNlZCBhZnRlciB0aGUgdGh1bWIuIn0se25hbWU6IjpmaXJzdCIsYnJvd3NlcnM6WyJFMTIiLCJGRjExNiIsIlM2IiwiQzE4IiwiSUU4IiwiTzkuMiJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86Zmlyc3QifV0sZGVzY3JpcHRpb246IldoZW4gcHJpbnRpbmcgZG91YmxlLXNpZGVkIGRvY3VtZW50cywgdGhlIHBhZ2UgYm94ZXMgb24gbGVmdCBhbmQgcmlnaHQgcGFnZXMgbWF5IGJlIGRpZmZlcmVudC4gVGhpcyBjYW4gYmUgZXhwcmVzc2VkIHRocm91Z2ggQ1NTIHBzZXVkby1jbGFzc2VzIGRlZmluZWQgaW4gdGhlICBwYWdlIGNvbnRleHQuIn0se25hbWU6IjpmaXJzdC1jaGlsZCIsYnJvd3NlcnM6WyJFMTIiLCJGRjMiLCJTMy4xIiwiQzQiLCJJRTciLCJPOS41Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzpmaXJzdC1jaGlsZCJ9XSxkZXNjcmlwdGlvbjoiU2FtZSBhcyA6bnRoLWNoaWxkKDEpLiBSZXByZXNlbnRzIGFuIGVsZW1lbnQgdGhhdCBpcyB0aGUgZmlyc3QgY2hpbGQgb2Ygc29tZSBvdGhlciBlbGVtZW50LiJ9LHtuYW1lOiI6Zmlyc3Qtb2YtdHlwZSIsYnJvd3NlcnM6WyJFMTIiLCJGRjMuNSIsIlMzLjEiLCJDMSIsIklFOSIsIk85LjUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOmZpcnN0LW9mLXR5cGUifV0sZGVzY3JpcHRpb246IlNhbWUgYXMgOm50aC1vZi10eXBlKDEpLiBSZXByZXNlbnRzIGFuIGVsZW1lbnQgdGhhdCBpcyB0aGUgZmlyc3Qgc2libGluZyBvZiBpdHMgdHlwZSBpbiB0aGUgbGlzdCBvZiBjaGlsZHJlbiBvZiBpdHMgcGFyZW50IGVsZW1lbnQuIn0se25hbWU6Ijpmb2N1cyIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMSIsIkMxIiwiSUU4IiwiTzciXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOmZvY3VzIn1dLGRlc2NyaXB0aW9uOiJBcHBsaWVzIHdoaWxlIGFuIGVsZW1lbnQgaGFzIHRoZSBmb2N1cyAoYWNjZXB0cyBrZXlib2FyZCBvciBtb3VzZSBldmVudHMsIG9yIG90aGVyIGZvcm1zIG9mIGlucHV0KS4ifSx7bmFtZToiOmZ1bGxzY3JlZW4iLGJyb3dzZXJzOlsiRTEyIiwiRkY2NCIsIlMxNi40IiwiQzcxIiwiSUUxMSIsIk81OCJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86ZnVsbHNjcmVlbiJ9XSxkZXNjcmlwdGlvbjoiTWF0Y2hlcyBhbnkgZWxlbWVudCB0aGF0IGhhcyBpdHMgZnVsbHNjcmVlbiBmbGFnIHNldC4ifSx7bmFtZToiOmZ1dHVyZSIsYnJvd3NlcnM6WyJFNzkiLCJTNyIsIkMyMyIsIk8xNSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86ZnV0dXJlIn1dLGRlc2NyaXB0aW9uOiJSZXByZXNlbnRzIGFueSBlbGVtZW50IHRoYXQgaXMgZGVmaW5lZCB0byBvY2N1ciBlbnRpcmVseSBhZnRlciBhIDpjdXJyZW50IGVsZW1lbnQuIn0se25hbWU6Ijpob3Jpem9udGFsIixicm93c2VyczpbIkMiLCJTNSJdLGRlc2NyaXB0aW9uOiJOb24tc3RhbmRhcmQuIEFwcGxpZXMgdG8gYW55IHNjcm9sbGJhciBwaWVjZXMgdGhhdCBoYXZlIGEgaG9yaXpvbnRhbCBvcmllbnRhdGlvbi4ifSx7bmFtZToiOmhvc3QiLGJyb3dzZXJzOlsiRTc5IiwiRkY2MyIsIlMxMCIsIkM1NCIsIk80MSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86aG9zdCJ9XSxkZXNjcmlwdGlvbjoiV2hlbiBldmFsdWF0ZWQgaW4gdGhlIGNvbnRleHQgb2YgYSBzaGFkb3cgdHJlZSwgbWF0Y2hlcyB0aGUgc2hhZG93IHRyZWUncyBob3N0IGVsZW1lbnQuIn0se25hbWU6Ijpob3N0KCkiLGJyb3dzZXJzOlsiQzM1IiwiTzIyIl0sZGVzY3JpcHRpb246IldoZW4gZXZhbHVhdGVkIGluIHRoZSBjb250ZXh0IG9mIGEgc2hhZG93IHRyZWUsIGl0IG1hdGNoZXMgdGhlIHNoYWRvdyB0cmVlJ3MgaG9zdCBlbGVtZW50IGlmIHRoZSBob3N0IGVsZW1lbnQsIGluIGl0cyBub3JtYWwgY29udGV4dCwgbWF0Y2hlcyB0aGUgc2VsZWN0b3IgYXJndW1lbnQuIn0se25hbWU6Ijpob3N0LWNvbnRleHQoKSIsYnJvd3NlcnM6WyJDMzUiLCJPMjIiXSxkZXNjcmlwdGlvbjoiVGVzdHMgd2hldGhlciB0aGVyZSBpcyBhbiBhbmNlc3Rvciwgb3V0c2lkZSB0aGUgc2hhZG93IHRyZWUsIHdoaWNoIG1hdGNoZXMgYSBwYXJ0aWN1bGFyIHNlbGVjdG9yLiJ9LHtuYW1lOiI6aG92ZXIiLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzIiLCJDMSIsIklFNCIsIk80Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzpob3ZlciJ9XSxkZXNjcmlwdGlvbjoiQXBwbGllcyB3aGlsZSB0aGUgdXNlciBkZXNpZ25hdGVzIGFuIGVsZW1lbnQgd2l0aCBhIHBvaW50aW5nIGRldmljZSwgYnV0IGRvZXMgbm90IG5lY2Vzc2FyaWx5IGFjdGl2YXRlIGl0LiBGb3IgZXhhbXBsZSwgYSB2aXN1YWwgdXNlciBhZ2VudCBjb3VsZCBhcHBseSB0aGlzIHBzZXVkby1jbGFzcyB3aGVuIHRoZSBjdXJzb3IgKG1vdXNlIHBvaW50ZXIpIGhvdmVycyBvdmVyIGEgYm94IGdlbmVyYXRlZCBieSB0aGUgZWxlbWVudC4ifSx7bmFtZToiOmluY3JlbWVudCIsYnJvd3NlcnM6WyJDIiwiUzUiXSxkZXNjcmlwdGlvbjoiTm9uLXN0YW5kYXJkLiBBcHBsaWVzIHRvIGJ1dHRvbnMgYW5kIHRyYWNrIHBpZWNlcy4gSW5kaWNhdGVzIHdoZXRoZXIgb3Igbm90IHRoZSBidXR0b24gb3IgdHJhY2sgcGllY2Ugd2lsbCBpbmNyZW1lbnQgdGhlIHZpZXcncyBwb3NpdGlvbiB3aGVuIHVzZWQuIn0se25hbWU6IjppbmRldGVybWluYXRlIixicm93c2VyczpbIkUxMiIsIkZGMiIsIlMzIiwiQzEiLCJJRTEwIiwiTzkiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOmluZGV0ZXJtaW5hdGUifV0sZGVzY3JpcHRpb246IkFwcGxpZXMgdG8gVUkgZWxlbWVudHMgd2hvc2UgdmFsdWUgaXMgaW4gYW4gaW5kZXRlcm1pbmF0ZSBzdGF0ZS4ifSx7bmFtZToiOmluLXJhbmdlIixicm93c2VyczpbIkUxMyIsIkZGMjkiLCJTNS4xIiwiQzEwIiwiTzExIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzppbi1yYW5nZSJ9XSxkZXNjcmlwdGlvbjoiVXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIHRoZSBtaW4gYW5kIG1heCBhdHRyaWJ1dGVzLCB3aGV0aGVyIG9uIGEgcmFuZ2UgaW5wdXQsIGEgbnVtYmVyIGZpZWxkLCBvciBhbnkgb3RoZXIgdHlwZXMgdGhhdCBhY2NlcHQgdGhvc2UgYXR0cmlidXRlcy4ifSx7bmFtZToiOmludmFsaWQiLGJyb3dzZXJzOlsiRTEyIiwiRkY0IiwiUzUiLCJDMTAiLCJJRTEwIiwiTzEwIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzppbnZhbGlkIn1dLGRlc2NyaXB0aW9uOiJBbiBlbGVtZW50IGlzIDp2YWxpZCBvciA6aW52YWxpZCB3aGVuIGl0IGlzLCByZXNwZWN0aXZlbHksIHZhbGlkIG9yIGludmFsaWQgd2l0aCByZXNwZWN0IHRvIGRhdGEgdmFsaWRpdHkgc2VtYW50aWNzIGRlZmluZWQgYnkgYSBkaWZmZXJlbnQgc3BlY2lmaWNhdGlvbi4ifSx7bmFtZToiOmxhbmcoKSIsYnJvd3NlcnM6WyJFIiwiQyIsIkZGMSIsIklFOCIsIk84IiwiUzMiXSxkZXNjcmlwdGlvbjoiUmVwcmVzZW50cyBhbiBlbGVtZW50IHRoYXQgaXMgaW4gbGFuZ3VhZ2Ugc3BlY2lmaWVkLiJ9LHtuYW1lOiI6bGFzdC1jaGlsZCIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMy4xIiwiQzEiLCJJRTkiLCJPOS41Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzpsYXN0LWNoaWxkIn1dLGRlc2NyaXB0aW9uOiJTYW1lIGFzIDpudGgtbGFzdC1jaGlsZCgxKS4gUmVwcmVzZW50cyBhbiBlbGVtZW50IHRoYXQgaXMgdGhlIGxhc3QgY2hpbGQgb2Ygc29tZSBvdGhlciBlbGVtZW50LiJ9LHtuYW1lOiI6bGFzdC1vZi10eXBlIixicm93c2VyczpbIkUxMiIsIkZGMy41IiwiUzMuMSIsIkMxIiwiSUU5IiwiTzkuNSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86bGFzdC1vZi10eXBlIn1dLGRlc2NyaXB0aW9uOiJTYW1lIGFzIDpudGgtbGFzdC1vZi10eXBlKDEpLiBSZXByZXNlbnRzIGFuIGVsZW1lbnQgdGhhdCBpcyB0aGUgbGFzdCBzaWJsaW5nIG9mIGl0cyB0eXBlIGluIHRoZSBsaXN0IG9mIGNoaWxkcmVuIG9mIGl0cyBwYXJlbnQgZWxlbWVudC4ifSx7bmFtZToiOmxlZnQiLGJyb3dzZXJzOlsiRTEyIiwiUzUiLCJDNiIsIklFOCIsIk85LjIiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOmxlZnQifV0sZGVzY3JpcHRpb246IldoZW4gcHJpbnRpbmcgZG91YmxlLXNpZGVkIGRvY3VtZW50cywgdGhlIHBhZ2UgYm94ZXMgb24gbGVmdCBhbmQgcmlnaHQgcGFnZXMgbWF5IGJlIGRpZmZlcmVudC4gVGhpcyBjYW4gYmUgZXhwcmVzc2VkIHRocm91Z2ggQ1NTIHBzZXVkby1jbGFzc2VzIGRlZmluZWQgaW4gdGhlICBwYWdlIGNvbnRleHQuIn0se25hbWU6IjpsaW5rIixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxIiwiQzEiLCJJRTMiLCJPMy41Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzpsaW5rIn1dLGRlc2NyaXB0aW9uOiJBcHBsaWVzIHRvIGxpbmtzIHRoYXQgaGF2ZSBub3QgeWV0IGJlZW4gdmlzaXRlZC4ifSx7bmFtZToiOm1hdGNoZXMoKSIsYnJvd3NlcnM6WyJTOSJdLGRlc2NyaXB0aW9uOiJUYWtlcyBhIHNlbGVjdG9yIGxpc3QgYXMgaXRzIGFyZ3VtZW50LiBJdCByZXByZXNlbnRzIGFuIGVsZW1lbnQgdGhhdCBpcyByZXByZXNlbnRlZCBieSBpdHMgYXJndW1lbnQuIn0se25hbWU6IjotbW96LWFueSgpIixicm93c2VyczpbIkZGNCJdLGRlc2NyaXB0aW9uOiJSZXByZXNlbnRzIGFuIGVsZW1lbnQgdGhhdCBpcyByZXByZXNlbnRlZCBieSB0aGUgc2VsZWN0b3IgbGlzdCBwYXNzZWQgYXMgaXRzIGFyZ3VtZW50LiBTdGFuZGFyZGl6ZWQgYXMgOm1hdGNoZXMoKS4ifSx7bmFtZToiOi1tb3otYW55LWxpbmsiLGJyb3dzZXJzOlsiRkYxIl0sZGVzY3JpcHRpb246IlJlcHJlc2VudHMgYW4gZWxlbWVudCB0aGF0IGFjdHMgYXMgdGhlIHNvdXJjZSBhbmNob3Igb2YgYSBoeXBlcmxpbmsuIEFwcGxpZXMgdG8gYm90aCB2aXNpdGVkIGFuZCB1bnZpc2l0ZWQgbGlua3MuIn0se25hbWU6IjotbW96LWJyb2tlbiIsYnJvd3NlcnM6WyJGRjMiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOi1tb3otYnJva2VuIn1dLGRlc2NyaXB0aW9uOiJOb24tc3RhbmRhcmQuIE1hdGNoZXMgZWxlbWVudHMgcmVwcmVzZW50aW5nIGJyb2tlbiBpbWFnZXMuIn0se25hbWU6IjotbW96LWRyYWctb3ZlciIsYnJvd3NlcnM6WyJGRjEiXSxkZXNjcmlwdGlvbjoiTm9uLXN0YW5kYXJkLiBNYXRjaGVzIGVsZW1lbnRzIHdoZW4gYSBkcmFnLW92ZXIgZXZlbnQgYXBwbGllcyB0byBpdC4ifSx7bmFtZToiOi1tb3otZmlyc3Qtbm9kZSIsYnJvd3NlcnM6WyJGRjcyIl0sZGVzY3JpcHRpb246Ik5vbi1zdGFuZGFyZC4gUmVwcmVzZW50cyBhbiBlbGVtZW50IHRoYXQgaXMgdGhlIGZpcnN0IGNoaWxkIG5vZGUgb2Ygc29tZSBvdGhlciBlbGVtZW50LiJ9LHtuYW1lOiI6LW1vei1mb2N1c3JpbmciLGJyb3dzZXJzOlsiRkY0Il0sZGVzY3JpcHRpb246Ik5vbi1zdGFuZGFyZC4gTWF0Y2hlcyBhbiBlbGVtZW50IHRoYXQgaGFzIGZvY3VzIGFuZCBmb2N1cyByaW5nIGRyYXdpbmcgaXMgZW5hYmxlZCBpbiB0aGUgYnJvd3Nlci4ifSx7bmFtZToiOi1tb3otZnVsbC1zY3JlZW4iLGJyb3dzZXJzOlsiRkY5Il0sZGVzY3JpcHRpb246Ik1hdGNoZXMgYW55IGVsZW1lbnQgdGhhdCBoYXMgaXRzIGZ1bGxzY3JlZW4gZmxhZyBzZXQuIFN0YW5kYXJkaXplZCBhcyA6ZnVsbHNjcmVlbi4ifSx7bmFtZToiOi1tb3otbGFzdC1ub2RlIixicm93c2VyczpbIkZGNzIiXSxkZXNjcmlwdGlvbjoiTm9uLXN0YW5kYXJkLiBSZXByZXNlbnRzIGFuIGVsZW1lbnQgdGhhdCBpcyB0aGUgbGFzdCBjaGlsZCBub2RlIG9mIHNvbWUgb3RoZXIgZWxlbWVudC4ifSx7bmFtZToiOi1tb3otbG9hZGluZyIsYnJvd3NlcnM6WyJGRjMiXSxkZXNjcmlwdGlvbjoiTm9uLXN0YW5kYXJkLiBNYXRjaGVzIGVsZW1lbnRzLCBzdWNoIGFzIGltYWdlcywgdGhhdCBoYXZlbid0IHN0YXJ0ZWQgbG9hZGluZyB5ZXQuIn0se25hbWU6IjotbW96LW9ubHktd2hpdGVzcGFjZSIsYnJvd3NlcnM6WyJGRjEiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOi1tb3otb25seS13aGl0ZXNwYWNlIn1dLGRlc2NyaXB0aW9uOiJUaGUgc2FtZSBhcyA6ZW1wdHksIGV4Y2VwdCB0aGF0IGl0IGFkZGl0aW9uYWxseSBtYXRjaGVzIGVsZW1lbnRzIHRoYXQgb25seSBjb250YWluIGNvZGUgcG9pbnRzIGFmZmVjdGVkIGJ5IHdoaXRlc3BhY2UgcHJvY2Vzc2luZy4gU3RhbmRhcmRpemVkIGFzIDpibGFuay4ifSx7bmFtZToiOi1tb3otcGxhY2Vob2xkZXIiLGJyb3dzZXJzOlsiRkY0Il0sZGVzY3JpcHRpb246IkRlcHJlY2F0ZWQuIFJlcHJlc2VudHMgcGxhY2Vob2xkZXIgdGV4dCBpbiBhbiBpbnB1dCBmaWVsZC4gVXNlIDo6LW1vei1wbGFjZWhvbGRlciBmb3IgRmlyZWZveCAxOSsuIn0se25hbWU6IjotbW96LXN1Ym1pdC1pbnZhbGlkIixicm93c2VyczpbIkZGODgiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOi1tb3otc3VibWl0LWludmFsaWQifV0sZGVzY3JpcHRpb246Ik5vbi1zdGFuZGFyZC4gUmVwcmVzZW50cyBhbnkgc3VibWl0IGJ1dHRvbiB3aGVuIHRoZSBjb250ZW50cyBvZiB0aGUgYXNzb2NpYXRlZCBmb3JtIGFyZSBub3QgdmFsaWQuIn0se25hbWU6IjotbW96LXN1cHByZXNzZWQiLGJyb3dzZXJzOlsiRkYzIl0sZGVzY3JpcHRpb246Ik5vbi1zdGFuZGFyZC4gTWF0Y2hlcyBlbGVtZW50cyByZXByZXNlbnRpbmcgaW1hZ2VzIHRoYXQgaGF2ZSBiZWVuIGJsb2NrZWQgZnJvbSBsb2FkaW5nLiJ9LHtuYW1lOiI6LW1vei11aS1pbnZhbGlkIixicm93c2VyczpbIkZGNCJdLGRlc2NyaXB0aW9uOiJOb24tc3RhbmRhcmQuIFJlcHJlc2VudHMgYW55IHZhbGlkYXRlZCBmb3JtIGVsZW1lbnQgd2hvc2UgdmFsdWUgaXNuJ3QgdmFsaWQgIn0se25hbWU6IjotbW96LXVpLXZhbGlkIixicm93c2VyczpbIkZGNCJdLGRlc2NyaXB0aW9uOiJOb24tc3RhbmRhcmQuIFJlcHJlc2VudHMgYW55IHZhbGlkYXRlZCBmb3JtIGVsZW1lbnQgd2hvc2UgdmFsdWUgaXMgdmFsaWQgIn0se25hbWU6IjotbW96LXVzZXItZGlzYWJsZWQiLGJyb3dzZXJzOlsiRkYzIl0sZGVzY3JpcHRpb246Ik5vbi1zdGFuZGFyZC4gTWF0Y2hlcyBlbGVtZW50cyByZXByZXNlbnRpbmcgaW1hZ2VzIHRoYXQgaGF2ZSBiZWVuIGRpc2FibGVkIGR1ZSB0byB0aGUgdXNlcidzIHByZWZlcmVuY2VzLiJ9LHtuYW1lOiI6LW1vei13aW5kb3ctaW5hY3RpdmUiLGJyb3dzZXJzOlsiRkY0Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzotbW96LXdpbmRvdy1pbmFjdGl2ZSJ9XSxkZXNjcmlwdGlvbjoiTm9uLXN0YW5kYXJkLiBNYXRjaGVzIGVsZW1lbnRzIGluIGFuIGluYWN0aXZlIHdpbmRvdy4ifSx7bmFtZToiOi1tcy1mdWxsc2NyZWVuIixicm93c2VyczpbIklFMTEiXSxkZXNjcmlwdGlvbjoiTWF0Y2hlcyBhbnkgZWxlbWVudCB0aGF0IGhhcyBpdHMgZnVsbHNjcmVlbiBmbGFnIHNldC4ifSx7bmFtZToiOi1tcy1pbnB1dC1wbGFjZWhvbGRlciIsYnJvd3NlcnM6WyJJRTEwIl0sZGVzY3JpcHRpb246IlJlcHJlc2VudHMgcGxhY2Vob2xkZXIgdGV4dCBpbiBhbiBpbnB1dCBmaWVsZC4gTm90ZTogZm9yIEVkZ2UgdXNlIHRoZSBwc2V1ZG8tZWxlbWVudCA6Oi1tcy1pbnB1dC1wbGFjZWhvbGRlci4gU3RhbmRhcmRpemVkIGFzIDo6cGxhY2Vob2xkZXIuIn0se25hbWU6IjotbXMta2V5Ym9hcmQtYWN0aXZlIixicm93c2VyczpbIklFMTAiXSxkZXNjcmlwdGlvbjoiV2luZG93cyBTdG9yZSBhcHBzIG9ubHkuIEFwcGxpZXMgb25lIG9yIG1vcmUgc3R5bGVzIHRvIGFuIGVsZW1lbnQgd2hlbiBpdCBoYXMgZm9jdXMgYW5kIHRoZSB1c2VyIHByZXNzZXMgdGhlIHNwYWNlIGJhci4ifSx7bmFtZToiOi1tcy1sYW5nKCkiLGJyb3dzZXJzOlsiRSIsIklFMTAiXSxkZXNjcmlwdGlvbjoiUmVwcmVzZW50cyBhbiBlbGVtZW50IHRoYXQgaXMgaW4gdGhlIGxhbmd1YWdlIHNwZWNpZmllZC4gQWNjZXB0cyBhIGNvbW1hIHNlcGFyYXRlZCBsaXN0IG9mIGxhbmd1YWdlIHRva2Vucy4ifSx7bmFtZToiOm5vLWJ1dHRvbiIsYnJvd3NlcnM6WyJDIiwiUzUiXSxkZXNjcmlwdGlvbjoiTm9uLXN0YW5kYXJkLiBBcHBsaWVzIHRvIHRyYWNrIHBpZWNlcy4gQXBwbGllcyB3aGVuIHRoZXJlIGlzIG5vIGJ1dHRvbiBhdCB0aGF0IGVuZCBvZiB0aGUgdHJhY2suIn0se25hbWU6Ijpub3QoKSIsYnJvd3NlcnM6WyJFIiwiQyIsIkZGMSIsIklFOSIsIk85LjUiLCJTMiJdLGRlc2NyaXB0aW9uOiJUaGUgbmVnYXRpb24gcHNldWRvLWNsYXNzLCA6bm90KFgpLCBpcyBhIGZ1bmN0aW9uYWwgbm90YXRpb24gdGFraW5nIGEgc2ltcGxlIHNlbGVjdG9yIChleGNsdWRpbmcgdGhlIG5lZ2F0aW9uIHBzZXVkby1jbGFzcyBpdHNlbGYpIGFzIGFuIGFyZ3VtZW50LiBJdCByZXByZXNlbnRzIGFuIGVsZW1lbnQgdGhhdCBpcyBub3QgcmVwcmVzZW50ZWQgYnkgaXRzIGFyZ3VtZW50LiJ9LHtuYW1lOiI6bnRoLWNoaWxkKCkiLGJyb3dzZXJzOlsiRSIsIkMiLCJGRjMuNSIsIklFOSIsIk85LjUiLCJTMy4xIl0sZGVzY3JpcHRpb246IlJlcHJlc2VudHMgYW4gZWxlbWVudCB0aGF0IGhhcyBhbitiLTEgc2libGluZ3MgYmVmb3JlIGl0IGluIHRoZSBkb2N1bWVudCB0cmVlLCBmb3IgYW55IHBvc2l0aXZlIGludGVnZXIgb3IgemVybyB2YWx1ZSBvZiBuLCBhbmQgaGFzIGEgcGFyZW50IGVsZW1lbnQuIn0se25hbWU6IjpudGgtbGFzdC1jaGlsZCgpIixicm93c2VyczpbIkUiLCJDIiwiRkYzLjUiLCJJRTkiLCJPOS41IiwiUzMuMSJdLGRlc2NyaXB0aW9uOiJSZXByZXNlbnRzIGFuIGVsZW1lbnQgdGhhdCBoYXMgYW4rYi0xIHNpYmxpbmdzIGFmdGVyIGl0IGluIHRoZSBkb2N1bWVudCB0cmVlLCBmb3IgYW55IHBvc2l0aXZlIGludGVnZXIgb3IgemVybyB2YWx1ZSBvZiBuLCBhbmQgaGFzIGEgcGFyZW50IGVsZW1lbnQuIn0se25hbWU6IjpudGgtbGFzdC1vZi10eXBlKCkiLGJyb3dzZXJzOlsiRSIsIkMiLCJGRjMuNSIsIklFOSIsIk85LjUiLCJTMy4xIl0sZGVzY3JpcHRpb246IlJlcHJlc2VudHMgYW4gZWxlbWVudCB0aGF0IGhhcyBhbitiLTEgc2libGluZ3Mgd2l0aCB0aGUgc2FtZSBleHBhbmRlZCBlbGVtZW50IG5hbWUgYWZ0ZXIgaXQgaW4gdGhlIGRvY3VtZW50IHRyZWUsIGZvciBhbnkgemVybyBvciBwb3NpdGl2ZSBpbnRlZ2VyIHZhbHVlIG9mIG4sIGFuZCBoYXMgYSBwYXJlbnQgZWxlbWVudC4ifSx7bmFtZToiOm50aC1vZi10eXBlKCkiLGJyb3dzZXJzOlsiRSIsIkMiLCJGRjMuNSIsIklFOSIsIk85LjUiLCJTMy4xIl0sZGVzY3JpcHRpb246IlJlcHJlc2VudHMgYW4gZWxlbWVudCB0aGF0IGhhcyBhbitiLTEgc2libGluZ3Mgd2l0aCB0aGUgc2FtZSBleHBhbmRlZCBlbGVtZW50IG5hbWUgYmVmb3JlIGl0IGluIHRoZSBkb2N1bWVudCB0cmVlLCBmb3IgYW55IHplcm8gb3IgcG9zaXRpdmUgaW50ZWdlciB2YWx1ZSBvZiBuLCBhbmQgaGFzIGEgcGFyZW50IGVsZW1lbnQuIn0se25hbWU6Ijpvbmx5LWNoaWxkIixicm93c2VyczpbIkUxMiIsIkZGMS41IiwiUzMuMSIsIkMyIiwiSUU5IiwiTzkuNSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86b25seS1jaGlsZCJ9XSxkZXNjcmlwdGlvbjoiUmVwcmVzZW50cyBhbiBlbGVtZW50IHRoYXQgaGFzIGEgcGFyZW50IGVsZW1lbnQgYW5kIHdob3NlIHBhcmVudCBlbGVtZW50IGhhcyBubyBvdGhlciBlbGVtZW50IGNoaWxkcmVuLiBTYW1lIGFzIDpmaXJzdC1jaGlsZDpsYXN0LWNoaWxkIG9yIDpudGgtY2hpbGQoMSk6bnRoLWxhc3QtY2hpbGQoMSksIGJ1dCB3aXRoIGEgbG93ZXIgc3BlY2lmaWNpdHkuIn0se25hbWU6Ijpvbmx5LW9mLXR5cGUiLGJyb3dzZXJzOlsiRTEyIiwiRkYzLjUiLCJTMy4xIiwiQzEiLCJJRTkiLCJPOS41Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzpvbmx5LW9mLXR5cGUifV0sZGVzY3JpcHRpb246Ik1hdGNoZXMgZXZlcnkgZWxlbWVudCB0aGF0IGlzIHRoZSBvbmx5IGNoaWxkIG9mIGl0cyB0eXBlLCBvZiBpdHMgcGFyZW50LiBTYW1lIGFzIDpmaXJzdC1vZi10eXBlOmxhc3Qtb2YtdHlwZSBvciA6bnRoLW9mLXR5cGUoMSk6bnRoLWxhc3Qtb2YtdHlwZSgxKSwgYnV0IHdpdGggYSBsb3dlciBzcGVjaWZpY2l0eS4ifSx7bmFtZToiOm9wdGlvbmFsIixicm93c2VyczpbIkUxMiIsIkZGNCIsIlM1IiwiQzEwIiwiSUUxMCIsIk8xMCJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86b3B0aW9uYWwifV0sZGVzY3JpcHRpb246IkEgZm9ybSBlbGVtZW50IGlzIDpyZXF1aXJlZCBvciA6b3B0aW9uYWwgaWYgYSB2YWx1ZSBmb3IgaXQgaXMsIHJlc3BlY3RpdmVseSwgcmVxdWlyZWQgb3Igb3B0aW9uYWwgYmVmb3JlIHRoZSBmb3JtIGl0IGJlbG9uZ3MgdG8gaXMgc3VibWl0dGVkLiBFbGVtZW50cyB0aGF0IGFyZSBub3QgZm9ybSBlbGVtZW50cyBhcmUgbmVpdGhlciByZXF1aXJlZCBub3Igb3B0aW9uYWwuIn0se25hbWU6IjpvdXQtb2YtcmFuZ2UiLGJyb3dzZXJzOlsiRTEzIiwiRkYyOSIsIlM1LjEiLCJDMTAiLCJPMTEiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOm91dC1vZi1yYW5nZSJ9XSxkZXNjcmlwdGlvbjoiVXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIHRoZSBtaW4gYW5kIG1heCBhdHRyaWJ1dGVzLCB3aGV0aGVyIG9uIGEgcmFuZ2UgaW5wdXQsIGEgbnVtYmVyIGZpZWxkLCBvciBhbnkgb3RoZXIgdHlwZXMgdGhhdCBhY2NlcHQgdGhvc2UgYXR0cmlidXRlcy4ifSx7bmFtZToiOnBhc3QiLGJyb3dzZXJzOlsiRTc5IiwiUzciLCJDMjMiLCJPMTUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOnBhc3QifV0sZGVzY3JpcHRpb246IlJlcHJlc2VudHMgYW55IGVsZW1lbnQgdGhhdCBpcyBkZWZpbmVkIHRvIG9jY3VyIGVudGlyZWx5IHByaW9yIHRvIGEgOmN1cnJlbnQgZWxlbWVudC4ifSx7bmFtZToiOnJlYWQtb25seSIsYnJvd3NlcnM6WyJFMTMiLCJGRjc4IiwiUzQiLCJDMSIsIk85Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzpyZWFkLW9ubHkifV0sZGVzY3JpcHRpb246IkFuIGVsZW1lbnQgd2hvc2UgY29udGVudHMgYXJlIG5vdCB1c2VyLWFsdGVyYWJsZSBpcyA6cmVhZC1vbmx5LiBIb3dldmVyLCBlbGVtZW50cyB3aG9zZSBjb250ZW50cyBhcmUgdXNlci1hbHRlcmFibGUgKHN1Y2ggYXMgdGV4dCBpbnB1dCBmaWVsZHMpIGFyZSBjb25zaWRlcmVkIHRvIGJlIGluIGEgOnJlYWQtd3JpdGUgc3RhdGUuIEluIHR5cGljYWwgZG9jdW1lbnRzLCBtb3N0IGVsZW1lbnRzIGFyZSA6cmVhZC1vbmx5LiJ9LHtuYW1lOiI6cmVhZC13cml0ZSIsYnJvd3NlcnM6WyJFMTMiLCJGRjc4IiwiUzQiLCJDMSIsIk85Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzpyZWFkLXdyaXRlIn1dLGRlc2NyaXB0aW9uOiJBbiBlbGVtZW50IHdob3NlIGNvbnRlbnRzIGFyZSBub3QgdXNlci1hbHRlcmFibGUgaXMgOnJlYWQtb25seS4gSG93ZXZlciwgZWxlbWVudHMgd2hvc2UgY29udGVudHMgYXJlIHVzZXItYWx0ZXJhYmxlIChzdWNoIGFzIHRleHQgaW5wdXQgZmllbGRzKSBhcmUgY29uc2lkZXJlZCB0byBiZSBpbiBhIDpyZWFkLXdyaXRlIHN0YXRlLiBJbiB0eXBpY2FsIGRvY3VtZW50cywgbW9zdCBlbGVtZW50cyBhcmUgOnJlYWQtb25seS4ifSx7bmFtZToiOnJlcXVpcmVkIixicm93c2VyczpbIkUxMiIsIkZGNCIsIlM1IiwiQzEwIiwiSUUxMCIsIk8xMCJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86cmVxdWlyZWQifV0sZGVzY3JpcHRpb246IkEgZm9ybSBlbGVtZW50IGlzIDpyZXF1aXJlZCBvciA6b3B0aW9uYWwgaWYgYSB2YWx1ZSBmb3IgaXQgaXMsIHJlc3BlY3RpdmVseSwgcmVxdWlyZWQgb3Igb3B0aW9uYWwgYmVmb3JlIHRoZSBmb3JtIGl0IGJlbG9uZ3MgdG8gaXMgc3VibWl0dGVkLiBFbGVtZW50cyB0aGF0IGFyZSBub3QgZm9ybSBlbGVtZW50cyBhcmUgbmVpdGhlciByZXF1aXJlZCBub3Igb3B0aW9uYWwuIn0se25hbWU6IjpyaWdodCIsYnJvd3NlcnM6WyJFMTIiLCJTNSIsIkM2IiwiSUU4IiwiTzkuMiJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86cmlnaHQifV0sZGVzY3JpcHRpb246IldoZW4gcHJpbnRpbmcgZG91YmxlLXNpZGVkIGRvY3VtZW50cywgdGhlIHBhZ2UgYm94ZXMgb24gbGVmdCBhbmQgcmlnaHQgcGFnZXMgbWF5IGJlIGRpZmZlcmVudC4gVGhpcyBjYW4gYmUgZXhwcmVzc2VkIHRocm91Z2ggQ1NTIHBzZXVkby1jbGFzc2VzIGRlZmluZWQgaW4gdGhlICBwYWdlIGNvbnRleHQuIn0se25hbWU6Ijpyb290Iixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxIiwiQzEiLCJJRTkiLCJPOS41Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzpyb290In1dLGRlc2NyaXB0aW9uOiJSZXByZXNlbnRzIGFuIGVsZW1lbnQgdGhhdCBpcyB0aGUgcm9vdCBvZiB0aGUgZG9jdW1lbnQuIEluIEhUTUwgNCwgdGhpcyBpcyBhbHdheXMgdGhlIEhUTUwgZWxlbWVudC4ifSx7bmFtZToiOnNjb3BlIixicm93c2VyczpbIkU3OSIsIkZGMzIiLCJTNyIsIkMyNyIsIk8xNSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86c2NvcGUifV0sZGVzY3JpcHRpb246IlJlcHJlc2VudHMgYW55IGVsZW1lbnQgdGhhdCBpcyBpbiB0aGUgY29udGV4dHVhbCByZWZlcmVuY2UgZWxlbWVudCBzZXQuIn0se25hbWU6IjpzaW5nbGUtYnV0dG9uIixicm93c2VyczpbIkMiLCJTNSJdLGRlc2NyaXB0aW9uOiJOb24tc3RhbmRhcmQuIEFwcGxpZXMgdG8gYnV0dG9ucyBhbmQgdHJhY2sgcGllY2VzLiBBcHBsaWVzIHdoZW4gYm90aCBidXR0b25zIGFyZSBkaXNwbGF5ZWQgc2VwYXJhdGVseSBhdCBlaXRoZXIgZW5kIG9mIHRoZSBzY3JvbGxiYXIuIn0se25hbWU6IjpzdGFydCIsYnJvd3NlcnM6WyJDIiwiUzUiXSxkZXNjcmlwdGlvbjoiTm9uLXN0YW5kYXJkLiBBcHBsaWVzIHRvIGJ1dHRvbnMgYW5kIHRyYWNrIHBpZWNlcy4gSW5kaWNhdGVzIHdoZXRoZXIgdGhlIG9iamVjdCBpcyBwbGFjZWQgYmVmb3JlIHRoZSB0aHVtYi4ifSx7bmFtZToiOnRhcmdldCIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMS4zIiwiQzEiLCJJRTkiLCJPOS41Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzp0YXJnZXQifV0sZGVzY3JpcHRpb246IlNvbWUgVVJJcyByZWZlciB0byBhIGxvY2F0aW9uIHdpdGhpbiBhIHJlc291cmNlLiBUaGlzIGtpbmQgb2YgVVJJIGVuZHMgd2l0aCBhICdudW1iZXIgc2lnbicgKCMpIGZvbGxvd2VkIGJ5IGFuIGFuY2hvciBpZGVudGlmaWVyIChjYWxsZWQgdGhlIGZyYWdtZW50IGlkZW50aWZpZXIpLiJ9LHtuYW1lOiI6dmFsaWQiLGJyb3dzZXJzOlsiRTEyIiwiRkY0IiwiUzUiLCJDMTAiLCJJRTEwIiwiTzEwIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzp2YWxpZCJ9XSxkZXNjcmlwdGlvbjoiQW4gZWxlbWVudCBpcyA6dmFsaWQgb3IgOmludmFsaWQgd2hlbiBpdCBpcywgcmVzcGVjdGl2ZWx5LCB2YWxpZCBvciBpbnZhbGlkIHdpdGggcmVzcGVjdCB0byBkYXRhIHZhbGlkaXR5IHNlbWFudGljcyBkZWZpbmVkIGJ5IGEgZGlmZmVyZW50IHNwZWNpZmljYXRpb24uIn0se25hbWU6Ijp2ZXJ0aWNhbCIsYnJvd3NlcnM6WyJDIiwiUzUiXSxkZXNjcmlwdGlvbjoiTm9uLXN0YW5kYXJkLiBBcHBsaWVzIHRvIGFueSBzY3JvbGxiYXIgcGllY2VzIHRoYXQgaGF2ZSBhIHZlcnRpY2FsIG9yaWVudGF0aW9uLiJ9LHtuYW1lOiI6dmlzaXRlZCIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMSIsIkMxIiwiSUU0IiwiTzMuNSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86dmlzaXRlZCJ9XSxkZXNjcmlwdGlvbjoiQXBwbGllcyBvbmNlIHRoZSBsaW5rIGhhcyBiZWVuIHZpc2l0ZWQgYnkgdGhlIHVzZXIuIn0se25hbWU6Ijotd2Via2l0LWFueSgpIixicm93c2VyczpbIkMiLCJTNSJdLGRlc2NyaXB0aW9uOiJSZXByZXNlbnRzIGFuIGVsZW1lbnQgdGhhdCBpcyByZXByZXNlbnRlZCBieSB0aGUgc2VsZWN0b3IgbGlzdCBwYXNzZWQgYXMgaXRzIGFyZ3VtZW50LiBTdGFuZGFyZGl6ZWQgYXMgOm1hdGNoZXMoKS4ifSx7bmFtZToiOi13ZWJraXQtZnVsbC1zY3JlZW4iLGJyb3dzZXJzOlsiQyIsIlM2Il0sZGVzY3JpcHRpb246Ik1hdGNoZXMgYW55IGVsZW1lbnQgdGhhdCBoYXMgaXRzIGZ1bGxzY3JlZW4gZmxhZyBzZXQuIFN0YW5kYXJkaXplZCBhcyA6ZnVsbHNjcmVlbi4ifSx7bmFtZToiOndpbmRvdy1pbmFjdGl2ZSIsYnJvd3NlcnM6WyJDIiwiUzMiXSxkZXNjcmlwdGlvbjoiTm9uLXN0YW5kYXJkLiBBcHBsaWVzIHRvIGFsbCBzY3JvbGxiYXIgcGllY2VzLiBJbmRpY2F0ZXMgd2hldGhlciBvciBub3QgdGhlIHdpbmRvdyBjb250YWluaW5nIHRoZSBzY3JvbGxiYXIgaXMgY3VycmVudGx5IGFjdGl2ZS4ifSx7bmFtZToiOmN1cnJlbnQiLHN0YXR1czoiZXhwZXJpbWVudGFsIixkZXNjcmlwdGlvbjoiVGhlIDpjdXJyZW50IENTUyBwc2V1ZG8tY2xhc3Mgc2VsZWN0b3IgaXMgYSB0aW1lLWRpbWVuc2lvbmFsIHBzZXVkby1jbGFzcyB0aGF0IHJlcHJlc2VudHMgdGhlIGVsZW1lbnQsIG9yIGFuIGFuY2VzdG9yIG9mIHRoZSBlbGVtZW50LCB0aGF0IGlzIGN1cnJlbnRseSBiZWluZyBkaXNwbGF5ZWQifSx7bmFtZToiOmJsYW5rIixzdGF0dXM6ImV4cGVyaW1lbnRhbCIscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzpibGFuayJ9XSxkZXNjcmlwdGlvbjoiVGhlIDpibGFuayBDU1MgcHNldWRvLWNsYXNzIHNlbGVjdHMgZW1wdHkgdXNlciBpbnB1dCBlbGVtZW50cyAoZWcuIDxpbnB1dD4gb3IgPHRleHRhcmVhPikuIn0se25hbWU6IjpkZWZpbmVkIixzdGF0dXM6ImV4cGVyaW1lbnRhbCIsYnJvd3NlcnM6WyJFNzkiLCJGRjYzIiwiUzEwIiwiQzU0IiwiTzQxIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzpkZWZpbmVkIn1dLGRlc2NyaXB0aW9uOiJUaGUgOmRlZmluZWQgQ1NTIHBzZXVkby1jbGFzcyByZXByZXNlbnRzIGFueSBlbGVtZW50IHRoYXQgaGFzIGJlZW4gZGVmaW5lZC4gVGhpcyBpbmNsdWRlcyBhbnkgc3RhbmRhcmQgZWxlbWVudCBidWlsdCBpbiB0byB0aGUgYnJvd3NlciwgYW5kIGN1c3RvbSBlbGVtZW50cyB0aGF0IGhhdmUgYmVlbiBzdWNjZXNzZnVsbHkgZGVmaW5lZCAoaS5lLiB3aXRoIHRoZSBDdXN0b21FbGVtZW50UmVnaXN0cnkuZGVmaW5lKCkgbWV0aG9kKS4ifSx7bmFtZToiOmRpciIsYnJvd3NlcnM6WyJFMTIwIiwiRkY0OSIsIlMxNi40IiwiQzEyMCIsIk8xMDYiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOmRpciJ9XSxkZXNjcmlwdGlvbjoiVGhlIDpkaXIoKSBDU1MgcHNldWRvLWNsYXNzIG1hdGNoZXMgZWxlbWVudHMgYmFzZWQgb24gdGhlIGRpcmVjdGlvbmFsaXR5IG9mIHRoZSB0ZXh0IGNvbnRhaW5lZCBpbiB0aGVtLiJ9LHtuYW1lOiI6Zm9jdXMtdmlzaWJsZSIsYnJvd3NlcnM6WyJFODYiLCJGRjg1IiwiUzE1LjQiLCJDODYiLCJPNzIiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOmZvY3VzLXZpc2libGUifV0sZGVzY3JpcHRpb246IlRoZSA6Zm9jdXMtdmlzaWJsZSBwc2V1ZG8tY2xhc3MgYXBwbGllcyB3aGlsZSBhbiBlbGVtZW50IG1hdGNoZXMgdGhlIDpmb2N1cyBwc2V1ZG8tY2xhc3MgYW5kIHRoZSBVQSBkZXRlcm1pbmVzIHZpYSBoZXVyaXN0aWNzIHRoYXQgdGhlIGZvY3VzIHNob3VsZCBiZSBtYWRlIGV2aWRlbnQgb24gdGhlIGVsZW1lbnQuIn0se25hbWU6Ijpmb2N1cy13aXRoaW4iLGJyb3dzZXJzOlsiRTc5IiwiRkY1MiIsIlMxMC4xIiwiQzYwIiwiTzQ3Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzpmb2N1cy13aXRoaW4ifV0sZGVzY3JpcHRpb246IlRoZSA6Zm9jdXMtd2l0aGluIHBzZXVkby1jbGFzcyBhcHBsaWVzIHRvIGFueSBlbGVtZW50IGZvciB3aGljaCB0aGUgOmZvY3VzIHBzZXVkbyBjbGFzcyBhcHBsaWVzIGFzIHdlbGwgYXMgdG8gYW4gZWxlbWVudCB3aG9zZSBkZXNjZW5kYW50IGluIHRoZSBmbGF0IHRyZWUgKGluY2x1ZGluZyBub24tZWxlbWVudCBub2Rlcywgc3VjaCBhcyB0ZXh0IG5vZGVzKSBtYXRjaGVzIHRoZSBjb25kaXRpb25zIGZvciBtYXRjaGluZyA6Zm9jdXMuIn0se25hbWU6IjpoYXMiLHN0YXR1czoiZXhwZXJpbWVudGFsIixicm93c2VyczpbIkUxMDUiLCJGRjEyMSIsIlMxNS40IiwiQzEwNSIsIk85MSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86aGFzIn1dLGRlc2NyaXB0aW9uOiI6VGhlIDpoYXMoKSBDU1MgcHNldWRvLWNsYXNzIHJlcHJlc2VudHMgYW4gZWxlbWVudCBpZiBhbnkgb2YgdGhlIHNlbGVjdG9ycyBwYXNzZWQgYXMgcGFyYW1ldGVycyAocmVsYXRpdmUgdG8gdGhlIDpzY29wZSBvZiB0aGUgZ2l2ZW4gZWxlbWVudCksIG1hdGNoIGF0IGxlYXN0IG9uZSBlbGVtZW50LiJ9LHtuYW1lOiI6aXMiLHN0YXR1czoiZXhwZXJpbWVudGFsIixicm93c2VyczpbIkU4OCIsIkZGNzgiLCJTMTQiLCJDODgiLCJPNzQiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOmlzIn1dLGRlc2NyaXB0aW9uOiJUaGUgOmlzKCkgQ1NTIHBzZXVkby1jbGFzcyBmdW5jdGlvbiB0YWtlcyBhIHNlbGVjdG9yIGxpc3QgYXMgaXRzIGFyZ3VtZW50LCBhbmQgc2VsZWN0cyBhbnkgZWxlbWVudCB0aGF0IGNhbiBiZSBzZWxlY3RlZCBieSBvbmUgb2YgdGhlIHNlbGVjdG9ycyBpbiB0aGF0IGxpc3QuIFRoaXMgaXMgdXNlZnVsIGZvciB3cml0aW5nIGxhcmdlIHNlbGVjdG9ycyBpbiBhIG1vcmUgY29tcGFjdCBmb3JtLiJ9LHtuYW1lOiI6bG9jYWwtbGluayIsc3RhdHVzOiJleHBlcmltZW50YWwiLGRlc2NyaXB0aW9uOiJUaGUgOmxvY2FsLWxpbmsgQ1NTIHBzZXVkby1jbGFzcyByZXByZXNlbnRzIGFuIGxpbmsgdG8gdGhlIHNhbWUgZG9jdW1lbnQifSx7bmFtZToiOnBhdXNlZCIsc3RhdHVzOiJleHBlcmltZW50YWwiLGJyb3dzZXJzOlsiUzE1LjQiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOnBhdXNlZCJ9XSxkZXNjcmlwdGlvbjoiVGhlIDpwYXVzZWQgQ1NTIHBzZXVkby1jbGFzcyBzZWxlY3RvciBpcyBhIHJlc291cmNlIHN0YXRlIHBzZXVkby1jbGFzcyB0aGF0IHdpbGwgbWF0Y2ggYW4gYXVkaW8sIHZpZGVvLCBvciBzaW1pbGFyIHJlc291cmNlIHRoYXQgaXMgY2FwYWJsZSBvZiBiZWluZyDigJxwbGF5ZWTigJ0gb3Ig4oCccGF1c2Vk4oCdLCB3aGVuIHRoYXQgZWxlbWVudCBpcyDigJxwYXVzZWTigJ0uIn0se25hbWU6IjpwbGFjZWhvbGRlci1zaG93biIsc3RhdHVzOiJleHBlcmltZW50YWwiLGJyb3dzZXJzOlsiRTc5IiwiRkY1MSIsIlM5IiwiQzQ3IiwiSUUxMCIsIk8zNCJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86cGxhY2Vob2xkZXItc2hvd24ifV0sZGVzY3JpcHRpb246IlRoZSA6cGxhY2Vob2xkZXItc2hvd24gQ1NTIHBzZXVkby1jbGFzcyByZXByZXNlbnRzIGFueSA8aW5wdXQ+IG9yIDx0ZXh0YXJlYT4gZWxlbWVudCB0aGF0IGlzIGN1cnJlbnRseSBkaXNwbGF5aW5nIHBsYWNlaG9sZGVyIHRleHQuIn0se25hbWU6IjpwbGF5aW5nIixzdGF0dXM6ImV4cGVyaW1lbnRhbCIsYnJvd3NlcnM6WyJTMTUuNCJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86cGxheWluZyJ9XSxkZXNjcmlwdGlvbjoiVGhlIDpwbGF5aW5nIENTUyBwc2V1ZG8tY2xhc3Mgc2VsZWN0b3IgaXMgYSByZXNvdXJjZSBzdGF0ZSBwc2V1ZG8tY2xhc3MgdGhhdCB3aWxsIG1hdGNoIGFuIGF1ZGlvLCB2aWRlbywgb3Igc2ltaWxhciByZXNvdXJjZSB0aGF0IGlzIGNhcGFibGUgb2YgYmVpbmcg4oCccGxheWVk4oCdIG9yIOKAnHBhdXNlZOKAnSwgd2hlbiB0aGF0IGVsZW1lbnQgaXMg4oCccGxheWluZ+KAnS4gIn0se25hbWU6Ijp0YXJnZXQtd2l0aGluIixzdGF0dXM6ImV4cGVyaW1lbnRhbCIscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzp0YXJnZXQtd2l0aGluIn1dLGRlc2NyaXB0aW9uOiJUaGUgOnRhcmdldC13aXRoaW4gQ1NTIHBzZXVkby1jbGFzcyByZXByZXNlbnRzIGFuIGVsZW1lbnQgdGhhdCBpcyBhIHRhcmdldCBlbGVtZW50IG9yIGNvbnRhaW5zIGFuIGVsZW1lbnQgdGhhdCBpcyBhIHRhcmdldC4gQSB0YXJnZXQgZWxlbWVudCBpcyBhIHVuaXF1ZSBlbGVtZW50IHdpdGggYW4gaWQgbWF0Y2hpbmcgdGhlIFVSTCdzIGZyYWdtZW50LiJ9LHtuYW1lOiI6dXNlci1pbnZhbGlkIixzdGF0dXM6ImV4cGVyaW1lbnRhbCIsYnJvd3NlcnM6WyJFMTE5IiwiRkY4OCIsIlMxNi41IiwiQzExOSIsIk8xMDUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOnVzZXItaW52YWxpZCJ9XSxkZXNjcmlwdGlvbjoiVGhlIDp1c2VyLWludmFsaWQgQ1NTIHBzZXVkby1jbGFzcyByZXByZXNlbnRzIGFueSB2YWxpZGF0ZWQgZm9ybSBlbGVtZW50IHdob3NlIHZhbHVlIGlzbid0IHZhbGlkIGJhc2VkIG9uIHRoZWlyIHZhbGlkYXRpb24gY29uc3RyYWludHMsIGFmdGVyIHRoZSB1c2VyIGhhcyBpbnRlcmFjdGVkIHdpdGggaXQuIn0se25hbWU6Ijp1c2VyLXZhbGlkIixzdGF0dXM6ImV4cGVyaW1lbnRhbCIsYnJvd3NlcnM6WyJFMTE5IiwiRkY4OCIsIlMxNi41IiwiQzExOSIsIk8xMDUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOnVzZXItdmFsaWQifV0sZGVzY3JpcHRpb246IlRoZSA6dXNlci12YWxpZCBDU1MgcHNldWRvLWNsYXNzIHJlcHJlc2VudHMgYW55IHZhbGlkYXRlZCBmb3JtIGVsZW1lbnQgd2hvc2UgdmFsdWUgdmFsaWRhdGVzIGNvcnJlY3RseSBiYXNlZCBvbiBpdHMgdmFsaWRhdGlvbiBjb25zdHJhaW50cy4gSG93ZXZlciwgdW5saWtlIDp2YWxpZCBpdCBvbmx5IG1hdGNoZXMgb25jZSB0aGUgdXNlciBoYXMgaW50ZXJhY3RlZCB3aXRoIGl0LiJ9LHtuYW1lOiI6d2hlcmUiLHN0YXR1czoiZXhwZXJpbWVudGFsIixicm93c2VyczpbIkU4OCIsIkZGNzgiLCJTMTQiLCJDODgiLCJPNzQiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOndoZXJlIn1dLGRlc2NyaXB0aW9uOiJUaGUgOndoZXJlKCkgQ1NTIHBzZXVkby1jbGFzcyBmdW5jdGlvbiB0YWtlcyBhIHNlbGVjdG9yIGxpc3QgYXMgaXRzIGFyZ3VtZW50LCBhbmQgc2VsZWN0cyBhbnkgZWxlbWVudCB0aGF0IGNhbiBiZSBzZWxlY3RlZCBieSBvbmUgb2YgdGhlIHNlbGVjdG9ycyBpbiB0aGF0IGxpc3QuIn0se25hbWU6IjpwaWN0dXJlLWluLXBpY3R1cmUiLHN0YXR1czoiZXhwZXJpbWVudGFsIixicm93c2VyczpbIkUxMTAiLCJTMTMuMSIsIkMxMTAiLCJPOTYiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOnBpY3R1cmUtaW4tcGljdHVyZSJ9XSxkZXNjcmlwdGlvbjoiVGhlIDpwaWN0dXJlLWluLXBpY3R1cmUgQ1NTIHBzZXVkby1jbGFzcyBtYXRjaGVzIHRoZSBlbGVtZW50IHdoaWNoIGlzIGN1cnJlbnRseSBpbiBwaWN0dXJlLWluLXBpY3R1cmUgbW9kZS4ifV0scHNldWRvRWxlbWVudHM6W3tuYW1lOiI6OmFmdGVyIixicm93c2VyczpbIkUxMiIsIkZGMS41IiwiUzQiLCJDMSIsIklFOSIsIk83Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzo6YWZ0ZXIifV0sZGVzY3JpcHRpb246IlJlcHJlc2VudHMgYSBzdHlsZWFibGUgY2hpbGQgcHNldWRvLWVsZW1lbnQgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIG9yaWdpbmF0aW5nIGVsZW1lbnQncyBhY3R1YWwgY29udGVudC4ifSx7bmFtZToiOjpiYWNrZHJvcCIsYnJvd3NlcnM6WyJFNzkiLCJGRjQ3IiwiUzE1LjQiLCJDMzciLCJJRTExIiwiTzI0Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzo6YmFja2Ryb3AifV0sZGVzY3JpcHRpb246IlVzZWQgdG8gY3JlYXRlIGEgYmFja2Ryb3AgdGhhdCBoaWRlcyB0aGUgdW5kZXJseWluZyBkb2N1bWVudCBmb3IgYW4gZWxlbWVudCBpbiBhIHRvcCBsYXllciAoc3VjaCBhcyBhbiBlbGVtZW50IHRoYXQgaXMgZGlzcGxheWVkIGZ1bGxzY3JlZW4pLiJ9LHtuYW1lOiI6OmJlZm9yZSIsYnJvd3NlcnM6WyJFMTIiLCJGRjEuNSIsIlM0IiwiQzEiLCJJRTkiLCJPNyJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86OmJlZm9yZSJ9XSxkZXNjcmlwdGlvbjoiUmVwcmVzZW50cyBhIHN0eWxlYWJsZSBjaGlsZCBwc2V1ZG8tZWxlbWVudCBpbW1lZGlhdGVseSBiZWZvcmUgdGhlIG9yaWdpbmF0aW5nIGVsZW1lbnQncyBhY3R1YWwgY29udGVudC4ifSx7bmFtZToiOjpjb250ZW50Iixicm93c2VyczpbIkMzNSIsIk8yMiJdLGRlc2NyaXB0aW9uOiJEZXByZWNhdGVkLiBNYXRjaGVzIHRoZSBkaXN0cmlidXRpb24gbGlzdCBpdHNlbGYsIG9uIGVsZW1lbnRzIHRoYXQgaGF2ZSBvbmUuIFVzZSA6OnNsb3R0ZWQgZm9yIGZvcndhcmQgY29tcGF0aWJpbGl0eS4ifSx7bmFtZToiOjpjdWUiLGJyb3dzZXJzOlsiRTc5IiwiRkY1NSIsIlM3IiwiQzI2IiwiTzE1Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzo6Y3VlIn1dfSx7bmFtZToiOjpjdWUoKSIsYnJvd3NlcnM6WyJDIiwiTzE2IiwiUzYiXX0se25hbWU6Ijo6Y3VlLXJlZ2lvbiIsYnJvd3NlcnM6WyJDIiwiTzE2IiwiUzYiXX0se25hbWU6Ijo6Y3VlLXJlZ2lvbigpIixicm93c2VyczpbIkMiLCJPMTYiLCJTNiJdfSx7bmFtZToiOjpmaXJzdC1sZXR0ZXIiLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzEiLCJDMSIsIklFOSIsIk83Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzo6Zmlyc3QtbGV0dGVyIn1dLGRlc2NyaXB0aW9uOiJSZXByZXNlbnRzIHRoZSBmaXJzdCBsZXR0ZXIgb2YgYW4gZWxlbWVudCwgaWYgaXQgaXMgbm90IHByZWNlZGVkIGJ5IGFueSBvdGhlciBjb250ZW50IChzdWNoIGFzIGltYWdlcyBvciBpbmxpbmUgdGFibGVzKSBvbiBpdHMgbGluZS4ifSx7bmFtZToiOjpmaXJzdC1saW5lIixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxIiwiQzEiLCJJRTkiLCJPNyJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86OmZpcnN0LWxpbmUifV0sZGVzY3JpcHRpb246IkRlc2NyaWJlcyB0aGUgY29udGVudHMgb2YgdGhlIGZpcnN0IGZvcm1hdHRlZCBsaW5lIG9mIGl0cyBvcmlnaW5hdGluZyBlbGVtZW50LiJ9LHtuYW1lOiI6Oi1tb3otZm9jdXMtaW5uZXIiLGJyb3dzZXJzOlsiRkY3MiJdfSx7bmFtZToiOjotbW96LWZvY3VzLW91dGVyIixicm93c2VyczpbIkZGNCJdfSx7bmFtZToiOjotbW96LWxpc3QtYnVsbGV0Iixicm93c2VyczpbIkZGNzIiXSxkZXNjcmlwdGlvbjoiVXNlZCB0byBzdHlsZSB0aGUgYnVsbGV0IG9mIGEgbGlzdCBlbGVtZW50LiBTaW1pbGFyIHRvIHRoZSBzdGFuZGFyZGl6ZWQgOjptYXJrZXIuIn0se25hbWU6Ijo6LW1vei1saXN0LW51bWJlciIsYnJvd3NlcnM6WyJGRjcyIl0sZGVzY3JpcHRpb246IlVzZWQgdG8gc3R5bGUgdGhlIG51bWJlcnMgb2YgYSBsaXN0IGVsZW1lbnQuIFNpbWlsYXIgdG8gdGhlIHN0YW5kYXJkaXplZCA6Om1hcmtlci4ifSx7bmFtZToiOjotbW96LXBsYWNlaG9sZGVyIixicm93c2VyczpbIkZGMTkiXSxkZXNjcmlwdGlvbjoiUmVwcmVzZW50cyBwbGFjZWhvbGRlciB0ZXh0IGluIGFuIGlucHV0IGZpZWxkIn0se25hbWU6Ijo6LW1vei1wcm9ncmVzcy1iYXIiLGJyb3dzZXJzOlsiRkY3MiJdLGRlc2NyaXB0aW9uOiJSZXByZXNlbnRzIHRoZSBiYXIgcG9ydGlvbiBvZiBhIHByb2dyZXNzIGJhci4ifSx7bmFtZToiOjotbW96LXNlbGVjdGlvbiIsYnJvd3NlcnM6WyJGRjEiXSxkZXNjcmlwdGlvbjoiUmVwcmVzZW50cyB0aGUgcG9ydGlvbiBvZiBhIGRvY3VtZW50IHRoYXQgaGFzIGJlZW4gaGlnaGxpZ2h0ZWQgYnkgdGhlIHVzZXIuIn0se25hbWU6Ijo6LW1zLWJhY2tkcm9wIixicm93c2VyczpbIklFMTEiXSxkZXNjcmlwdGlvbjoiVXNlZCB0byBjcmVhdGUgYSBiYWNrZHJvcCB0aGF0IGhpZGVzIHRoZSB1bmRlcmx5aW5nIGRvY3VtZW50IGZvciBhbiBlbGVtZW50IGluIGEgdG9wIGxheWVyIChzdWNoIGFzIGFuIGVsZW1lbnQgdGhhdCBpcyBkaXNwbGF5ZWQgZnVsbHNjcmVlbikuIn0se25hbWU6Ijo6LW1zLWJyb3dzZSIsYnJvd3NlcnM6WyJFIiwiSUUxMCJdLGRlc2NyaXB0aW9uOiJSZXByZXNlbnRzIHRoZSBicm93c2UgYnV0dG9uIG9mIGFuIGlucHV0IHR5cGU9ZmlsZSBjb250cm9sLiJ9LHtuYW1lOiI6Oi1tcy1jaGVjayIsYnJvd3NlcnM6WyJFIiwiSUUxMCJdLGRlc2NyaXB0aW9uOiJSZXByZXNlbnRzIHRoZSBjaGVjayBvZiBhIGNoZWNrYm94IG9yIHJhZGlvIGJ1dHRvbiBpbnB1dCBjb250cm9sLiJ9LHtuYW1lOiI6Oi1tcy1jbGVhciIsYnJvd3NlcnM6WyJFIiwiSUUxMCJdLGRlc2NyaXB0aW9uOiJSZXByZXNlbnRzIHRoZSBjbGVhciBidXR0b24gb2YgYSB0ZXh0IGlucHV0IGNvbnRyb2wifSx7bmFtZToiOjotbXMtZXhwYW5kIixicm93c2VyczpbIkUiLCJJRTEwIl0sZGVzY3JpcHRpb246IlJlcHJlc2VudHMgdGhlIGRyb3AtZG93biBidXR0b24gb2YgYSBzZWxlY3QgY29udHJvbC4ifSx7bmFtZToiOjotbXMtZmlsbCIsYnJvd3NlcnM6WyJFIiwiSUUxMCJdLGRlc2NyaXB0aW9uOiJSZXByZXNlbnRzIHRoZSBiYXIgcG9ydGlvbiBvZiBhIHByb2dyZXNzIGJhci4ifSx7bmFtZToiOjotbXMtZmlsbC1sb3dlciIsYnJvd3NlcnM6WyJFIiwiSUUxMCJdLGRlc2NyaXB0aW9uOiJSZXByZXNlbnRzIHRoZSBwb3J0aW9uIG9mIHRoZSBzbGlkZXIgdHJhY2sgZnJvbSBpdHMgc21hbGxlc3QgdmFsdWUgdXAgdG8gdGhlIHZhbHVlIGN1cnJlbnRseSBzZWxlY3RlZCBieSB0aGUgdGh1bWIuIEluIGEgbGVmdC10by1yaWdodCBsYXlvdXQsIHRoaXMgaXMgdGhlIHBvcnRpb24gb2YgdGhlIHNsaWRlciB0cmFjayB0byB0aGUgbGVmdCBvZiB0aGUgdGh1bWIuIn0se25hbWU6Ijo6LW1zLWZpbGwtdXBwZXIiLGJyb3dzZXJzOlsiRSIsIklFMTAiXSxkZXNjcmlwdGlvbjoiUmVwcmVzZW50cyB0aGUgcG9ydGlvbiBvZiB0aGUgc2xpZGVyIHRyYWNrIGZyb20gdGhlIHZhbHVlIGN1cnJlbnRseSBzZWxlY3RlZCBieSB0aGUgdGh1bWIgdXAgdG8gdGhlIHNsaWRlcidzIGxhcmdlc3QgdmFsdWUuIEluIGEgbGVmdC10by1yaWdodCBsYXlvdXQsIHRoaXMgaXMgdGhlIHBvcnRpb24gb2YgdGhlIHNsaWRlciB0cmFjayB0byB0aGUgcmlnaHQgb2YgdGhlIHRodW1iLiJ9LHtuYW1lOiI6Oi1tcy1yZXZlYWwiLGJyb3dzZXJzOlsiRSIsIklFMTAiXSxkZXNjcmlwdGlvbjoiUmVwcmVzZW50cyB0aGUgcGFzc3dvcmQgcmV2ZWFsIGJ1dHRvbiBvZiBhbiBpbnB1dCB0eXBlPXBhc3N3b3JkIGNvbnRyb2wuIn0se25hbWU6Ijo6LW1zLXRodW1iIixicm93c2VyczpbIkUiLCJJRTEwIl0sZGVzY3JpcHRpb246IlJlcHJlc2VudHMgdGhlIHBvcnRpb24gb2YgcmFuZ2UgaW5wdXQgY29udHJvbCAoYWxzbyBrbm93biBhcyBhIHNsaWRlciBjb250cm9sKSB0aGF0IHRoZSB1c2VyIGRyYWdzLiJ9LHtuYW1lOiI6Oi1tcy10aWNrcy1hZnRlciIsYnJvd3NlcnM6WyJFIiwiSUUxMCJdLGRlc2NyaXB0aW9uOiJSZXByZXNlbnRzIHRoZSB0aWNrIG1hcmtzIG9mIGEgc2xpZGVyIHRoYXQgYmVnaW4ganVzdCBhZnRlciB0aGUgdGh1bWIgYW5kIGNvbnRpbnVlIHVwIHRvIHRoZSBzbGlkZXIncyBsYXJnZXN0IHZhbHVlLiBJbiBhIGxlZnQtdG8tcmlnaHQgbGF5b3V0LCB0aGVzZSBhcmUgdGhlIHRpY2tzIHRvIHRoZSByaWdodCBvZiB0aGUgdGh1bWIuIn0se25hbWU6Ijo6LW1zLXRpY2tzLWJlZm9yZSIsYnJvd3NlcnM6WyJFIiwiSUUxMCJdLGRlc2NyaXB0aW9uOiJSZXByZXNlbnRzIHRoZSB0aWNrIG1hcmtzIG9mIGEgc2xpZGVyIHRoYXQgcmVwcmVzZW50IGl0cyBzbWFsbGVzdCB2YWx1ZXMgdXAgdG8gdGhlIHZhbHVlIGN1cnJlbnRseSBzZWxlY3RlZCBieSB0aGUgdGh1bWIuIEluIGEgbGVmdC10by1yaWdodCBsYXlvdXQsIHRoZXNlIGFyZSB0aGUgdGlja3MgdG8gdGhlIGxlZnQgb2YgdGhlIHRodW1iLiJ9LHtuYW1lOiI6Oi1tcy10b29sdGlwIixicm93c2VyczpbIkUiLCJJRTEwIl0sZGVzY3JpcHRpb246IlJlcHJlc2VudHMgdGhlIHRvb2x0aXAgb2YgYSBzbGlkZXIgKGlucHV0IHR5cGU9cmFuZ2UpLiJ9LHtuYW1lOiI6Oi1tcy10cmFjayIsYnJvd3NlcnM6WyJFIiwiSUUxMCJdLGRlc2NyaXB0aW9uOiJSZXByZXNlbnRzIHRoZSB0cmFjayBvZiBhIHNsaWRlci4ifSx7bmFtZToiOjotbXMtdmFsdWUiLGJyb3dzZXJzOlsiRSIsIklFMTAiXSxkZXNjcmlwdGlvbjoiUmVwcmVzZW50cyB0aGUgY29udGVudCBvZiBhIHRleHQgb3IgcGFzc3dvcmQgaW5wdXQgY29udHJvbCwgb3IgYSBzZWxlY3QgY29udHJvbC4ifSx7bmFtZToiOjpzZWxlY3Rpb24iLGJyb3dzZXJzOlsiRTEyIiwiRkY2MiIsIlMxLjEiLCJDMSIsIklFOSIsIk85LjUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOjpzZWxlY3Rpb24ifV0sZGVzY3JpcHRpb246IlJlcHJlc2VudHMgdGhlIHBvcnRpb24gb2YgYSBkb2N1bWVudCB0aGF0IGhhcyBiZWVuIGhpZ2hsaWdodGVkIGJ5IHRoZSB1c2VyLiJ9LHtuYW1lOiI6OnNoYWRvdyIsYnJvd3NlcnM6WyJDMzUiLCJPMjIiXSxkZXNjcmlwdGlvbjoiTWF0Y2hlcyB0aGUgc2hhZG93IHJvb3QgaWYgYW4gZWxlbWVudCBoYXMgYSBzaGFkb3cgdHJlZS4ifSx7bmFtZToiOjotd2Via2l0LWZpbGUtdXBsb2FkLWJ1dHRvbiIsYnJvd3NlcnM6WyJDIiwiTyIsIlM2Il19LHtuYW1lOiI6Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b24iLGJyb3dzZXJzOlsiRTc5IiwiUzUiLCJDNiIsIk8xNSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b24ifV19LHtuYW1lOiI6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIiLGJyb3dzZXJzOlsiQyIsIlM0Il19LHtuYW1lOiI6Oi13ZWJraXQta2V5Z2VuLXNlbGVjdCIsYnJvd3NlcnM6WyJDIiwiTyIsIlM2Il19LHtuYW1lOiI6Oi13ZWJraXQtbWV0ZXItYmFyIixicm93c2VyczpbIkU3OSIsIlM1LjEiLCJDMTIiLCJPMTUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOjotd2Via2l0LW1ldGVyLWJhciJ9XX0se25hbWU6Ijo6LXdlYmtpdC1tZXRlci1ldmVuLWxlc3MtZ29vZC12YWx1ZSIsYnJvd3NlcnM6WyJFNzkiLCJTNS4xIiwiQzEyIiwiTzE1Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzo6LXdlYmtpdC1tZXRlci1ldmVuLWxlc3MtZ29vZC12YWx1ZSJ9XX0se25hbWU6Ijo6LXdlYmtpdC1tZXRlci1vcHRpbXVtLXZhbHVlIixicm93c2VyczpbIkU3OSIsIlM1LjEiLCJDMTIiLCJPMTUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOjotd2Via2l0LW1ldGVyLW9wdGltdW0tdmFsdWUifV19LHtuYW1lOiI6Oi13ZWJraXQtbWV0ZXItc3Vib3B0aW11bS12YWx1ZSIsYnJvd3NlcnM6WyJFNzkiLCJTNS4xIiwiQzEyIiwiTzE1Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzo6LXdlYmtpdC1tZXRlci1zdWJvcHRpbXVtLXZhbHVlIn1dfSx7bmFtZToiOjotd2Via2l0LW91dGVyLXNwaW4tYnV0dG9uIixicm93c2VyczpbIkMiLCJPIiwiUzYiXX0se25hbWU6Ijo6LXdlYmtpdC1wcm9ncmVzcy1iYXIiLGJyb3dzZXJzOlsiRTc5IiwiUzciLCJDMjUiLCJPMTUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOjotd2Via2l0LXByb2dyZXNzLWJhciJ9XX0se25hbWU6Ijo6LXdlYmtpdC1wcm9ncmVzcy1pbm5lci1lbGVtZW50Iixicm93c2VyczpbIkU3OSIsIlM3IiwiQzIzIiwiTzE1Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzo6LXdlYmtpdC1wcm9ncmVzcy1pbm5lci1lbGVtZW50In1dfSx7bmFtZToiOjotd2Via2l0LXByb2dyZXNzLXZhbHVlIixicm93c2VyczpbIkU3OSIsIlM3IiwiQzI1IiwiTzE1Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzo6LXdlYmtpdC1wcm9ncmVzcy12YWx1ZSJ9XX0se25hbWU6Ijo6LXdlYmtpdC1yZXNpemVyIixicm93c2VyczpbIkU3OSIsIlM0IiwiQzIiLCJPMTUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOjotd2Via2l0LXNjcm9sbGJhciJ9XX0se25hbWU6Ijo6LXdlYmtpdC1zY3JvbGxiYXIiLGJyb3dzZXJzOlsiRTc5IiwiUzQiLCJDMiIsIk8xNSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86Oi13ZWJraXQtc2Nyb2xsYmFyIn1dfSx7bmFtZToiOjotd2Via2l0LXNjcm9sbGJhci1idXR0b24iLGJyb3dzZXJzOlsiRTc5IiwiUzQiLCJDMiIsIk8xNSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86Oi13ZWJraXQtc2Nyb2xsYmFyIn1dfSx7bmFtZToiOjotd2Via2l0LXNjcm9sbGJhci1jb3JuZXIiLGJyb3dzZXJzOlsiRTc5IiwiUzQiLCJDMiIsIk8xNSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86Oi13ZWJraXQtc2Nyb2xsYmFyIn1dfSx7bmFtZToiOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiIsYnJvd3NlcnM6WyJFNzkiLCJTNCIsIkMyIiwiTzE1Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzo6LXdlYmtpdC1zY3JvbGxiYXIifV19LHtuYW1lOiI6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrIixicm93c2VyczpbIkU3OSIsIlM0IiwiQzIiLCJPMTUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOjotd2Via2l0LXNjcm9sbGJhciJ9XX0se25hbWU6Ijo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2stcGllY2UiLGJyb3dzZXJzOlsiRTc5IiwiUzQiLCJDMiIsIk8xNSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86Oi13ZWJraXQtc2Nyb2xsYmFyIn1dfSx7bmFtZToiOjotd2Via2l0LXNlYXJjaC1jYW5jZWwtYnV0dG9uIixicm93c2VyczpbIkU3OSIsIlMzIiwiQzEiLCJPMTUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOjotd2Via2l0LXNlYXJjaC1jYW5jZWwtYnV0dG9uIn1dfSx7bmFtZToiOjotd2Via2l0LXNlYXJjaC1kZWNvcmF0aW9uIixicm93c2VyczpbIkMiLCJTNCJdfSx7bmFtZToiOjotd2Via2l0LXNlYXJjaC1yZXN1bHRzLWJ1dHRvbiIsYnJvd3NlcnM6WyJFNzkiLCJTMyIsIkMxIiwiTzE1Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzo6LXdlYmtpdC1zZWFyY2gtcmVzdWx0cy1idXR0b24ifV19LHtuYW1lOiI6Oi13ZWJraXQtc2VhcmNoLXJlc3VsdHMtZGVjb3JhdGlvbiIsYnJvd3NlcnM6WyJDIiwiUzQiXX0se25hbWU6Ijo6LXdlYmtpdC1zbGlkZXItcnVubmFibGUtdHJhY2siLGJyb3dzZXJzOlsiRTgzIiwiQzgzIiwiTzY5Il19LHtuYW1lOiI6Oi13ZWJraXQtc2xpZGVyLXRodW1iIixicm93c2VyczpbIkU4MyIsIkM4MyIsIk82OSJdfSx7bmFtZToiOjotd2Via2l0LXRleHRmaWVsZC1kZWNvcmF0aW9uLWNvbnRhaW5lciIsYnJvd3NlcnM6WyJDIiwiTyIsIlM2Il19LHtuYW1lOiI6Oi13ZWJraXQtdmFsaWRhdGlvbi1idWJibGUiLGJyb3dzZXJzOlsiQyIsIk8iLCJTNiJdfSx7bmFtZToiOjotd2Via2l0LXZhbGlkYXRpb24tYnViYmxlLWFycm93Iixicm93c2VyczpbIkMiLCJPIiwiUzYiXX0se25hbWU6Ijo6LXdlYmtpdC12YWxpZGF0aW9uLWJ1YmJsZS1hcnJvdy1jbGlwcGVyIixicm93c2VyczpbIkMiLCJPIiwiUzYiXX0se25hbWU6Ijo6LXdlYmtpdC12YWxpZGF0aW9uLWJ1YmJsZS1oZWFkaW5nIixicm93c2VyczpbIkMiLCJPIiwiUzYiXX0se25hbWU6Ijo6LXdlYmtpdC12YWxpZGF0aW9uLWJ1YmJsZS1tZXNzYWdlIixicm93c2VyczpbIkMiLCJPIiwiUzYiXX0se25hbWU6Ijo6LXdlYmtpdC12YWxpZGF0aW9uLWJ1YmJsZS10ZXh0LWJsb2NrIixicm93c2VyczpbIkMiLCJPIiwiUzYiXX0se25hbWU6Ijo6dGFyZ2V0LXRleHQiLHN0YXR1czoiZXhwZXJpbWVudGFsIixicm93c2VyczpbIkU4OSIsIkM4OSIsIk83NSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86OnRhcmdldC10ZXh0In1dLGRlc2NyaXB0aW9uOiJUaGUgOjp0YXJnZXQtdGV4dCBDU1MgcHNldWRvLWVsZW1lbnQgcmVwcmVzZW50cyB0aGUgdGV4dCB0aGF0IGhhcyBiZWVuIHNjcm9sbGVkIHRvIGlmIHRoZSBicm93c2VyIHN1cHBvcnRzIHNjcm9sbC10by10ZXh0IGZyYWdtZW50cy4gSXQgYWxsb3dzIGF1dGhvcnMgdG8gY2hvb3NlIGhvdyB0byBoaWdobGlnaHQgdGhhdCBzZWN0aW9uIG9mIHRleHQuIn0se25hbWU6Ijo6LW1vei1yYW5nZS1wcm9ncmVzcyIsc3RhdHVzOiJub25zdGFuZGFyZCIsYnJvd3NlcnM6WyJGRjIyIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzo6LW1vei1yYW5nZS1wcm9ncmVzcyJ9XSxkZXNjcmlwdGlvbjonVGhlIDo6LW1vei1yYW5nZS1wcm9ncmVzcyBDU1MgcHNldWRvLWVsZW1lbnQgaXMgYSBNb3ppbGxhIGV4dGVuc2lvbiB0aGF0IHJlcHJlc2VudHMgdGhlIGxvd2VyIHBvcnRpb24gb2YgdGhlIHRyYWNrIChpLmUuLCBncm9vdmUpIGluIHdoaWNoIHRoZSBpbmRpY2F0b3Igc2xpZGVzIGluIGFuIDxpbnB1dD4gb2YgdHlwZT0icmFuZ2UiLiBUaGlzIHBvcnRpb24gY29ycmVzcG9uZHMgdG8gdmFsdWVzIGxvd2VyIHRoYW4gdGhlIHZhbHVlIGN1cnJlbnRseSBzZWxlY3RlZCBieSB0aGUgdGh1bWIgKGkuZS4sIHZpcnR1YWwga25vYikuJ30se25hbWU6Ijo6LW1vei1yYW5nZS10aHVtYiIsc3RhdHVzOiJub25zdGFuZGFyZCIsYnJvd3NlcnM6WyJGRjIxIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzo6LW1vei1yYW5nZS10aHVtYiJ9XSxkZXNjcmlwdGlvbjpgVGhlIDo6LW1vei1yYW5nZS10aHVtYiBDU1MgcHNldWRvLWVsZW1lbnQgaXMgYSBNb3ppbGxhIGV4dGVuc2lvbiB0aGF0IHJlcHJlc2VudHMgdGhlIHRodW1iIChpLmUuLCB2aXJ0dWFsIGtub2IpIG9mIGFuIDxpbnB1dD4gb2YgdHlwZT0icmFuZ2UiLiBUaGUgdXNlciBjYW4gbW92ZSB0aGUgdGh1bWIgYWxvbmcgdGhlIGlucHV0J3MgdHJhY2sgdG8gYWx0ZXIgaXRzIG51bWVyaWNhbCB2YWx1ZS5gfSx7bmFtZToiOjotbW96LXJhbmdlLXRyYWNrIixzdGF0dXM6Im5vbnN0YW5kYXJkIixicm93c2VyczpbIkZGMjEiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOjotbW96LXJhbmdlLXRyYWNrIn1dLGRlc2NyaXB0aW9uOidUaGUgOjotbW96LXJhbmdlLXRyYWNrIENTUyBwc2V1ZG8tZWxlbWVudCBpcyBhIE1vemlsbGEgZXh0ZW5zaW9uIHRoYXQgcmVwcmVzZW50cyB0aGUgdHJhY2sgKGkuZS4sIGdyb292ZSkgaW4gd2hpY2ggdGhlIGluZGljYXRvciBzbGlkZXMgaW4gYW4gPGlucHV0PiBvZiB0eXBlPSJyYW5nZSIuJ30se25hbWU6Ijo6LXdlYmtpdC1wcm9ncmVzcy1pbm5lci12YWx1ZSIsc3RhdHVzOiJub25zdGFuZGFyZCIsZGVzY3JpcHRpb246YFRoZSA6Oi13ZWJraXQtcHJvZ3Jlc3MtdmFsdWUgQ1NTIHBzZXVkby1lbGVtZW50IHJlcHJlc2VudHMgdGhlIGZpbGxlZC1pbiBwb3J0aW9uIG9mIHRoZSBiYXIgb2YgYSA8cHJvZ3Jlc3M+IGVsZW1lbnQuIEl0IGlzIGEgY2hpbGQgb2YgdGhlIDo6LXdlYmtpdC1wcm9ncmVzcy1iYXIgcHNldWRvLWVsZW1lbnQuCgpJbiBvcmRlciB0byBsZXQgOjotd2Via2l0LXByb2dyZXNzLXZhbHVlIHRha2UgZWZmZWN0LCAtd2Via2l0LWFwcGVhcmFuY2UgbmVlZHMgdG8gYmUgc2V0IHRvIG5vbmUgb24gdGhlIDxwcm9ncmVzcz4gZWxlbWVudC5gfSx7bmFtZToiOjpncmFtbWFyLWVycm9yIixzdGF0dXM6ImV4cGVyaW1lbnRhbCIsYnJvd3NlcnM6WyJFMTIxIiwiU3ByZXZpZXciLCJDMTIxIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzo6Z3JhbW1hci1lcnJvciJ9XSxkZXNjcmlwdGlvbjoiVGhlIDo6Z3JhbW1hci1lcnJvciBDU1MgcHNldWRvLWVsZW1lbnQgcmVwcmVzZW50cyBhIHRleHQgc2VnbWVudCB3aGljaCB0aGUgdXNlciBhZ2VudCBoYXMgZmxhZ2dlZCBhcyBncmFtbWF0aWNhbGx5IGluY29ycmVjdC4ifSx7bmFtZToiOjptYXJrZXIiLGJyb3dzZXJzOlsiRTg2IiwiRkY2OCIsIlMxMS4xIiwiQzg2IiwiTzcyIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzo6bWFya2VyIn1dLGRlc2NyaXB0aW9uOiJUaGUgOjptYXJrZXIgQ1NTIHBzZXVkby1lbGVtZW50IHNlbGVjdHMgdGhlIG1hcmtlciBib3ggb2YgYSBsaXN0IGl0ZW0sIHdoaWNoIHR5cGljYWxseSBjb250YWlucyBhIGJ1bGxldCBvciBudW1iZXIuIEl0IHdvcmtzIG9uIGFueSBlbGVtZW50IG9yIHBzZXVkby1lbGVtZW50IHNldCB0byBkaXNwbGF5OiBsaXN0LWl0ZW0sIHN1Y2ggYXMgdGhlIDxsaT4gYW5kIDxzdW1tYXJ5PiBlbGVtZW50cy4ifSx7bmFtZToiOjpwYXJ0IixzdGF0dXM6ImV4cGVyaW1lbnRhbCIsYnJvd3NlcnM6WyJFNzkiLCJGRjcyIiwiUzEzLjEiLCJDNzMiLCJPNjAiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOjpwYXJ0In1dLGRlc2NyaXB0aW9uOiJUaGUgOjpwYXJ0IENTUyBwc2V1ZG8tZWxlbWVudCByZXByZXNlbnRzIGFueSBlbGVtZW50IHdpdGhpbiBhIHNoYWRvdyB0cmVlIHRoYXQgaGFzIGEgbWF0Y2hpbmcgcGFydCBhdHRyaWJ1dGUuIn0se25hbWU6Ijo6cGxhY2Vob2xkZXIiLGJyb3dzZXJzOlsiRTc5IiwiRkY1MSIsIlMxMC4xIiwiQzU3IiwiTzQ0Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzo6cGxhY2Vob2xkZXIifV0sZGVzY3JpcHRpb246IlRoZSA6OnBsYWNlaG9sZGVyIENTUyBwc2V1ZG8tZWxlbWVudCByZXByZXNlbnRzIHRoZSBwbGFjZWhvbGRlciB0ZXh0IG9mIGEgZm9ybSBlbGVtZW50LiJ9LHtuYW1lOiI6OnNsb3R0ZWQiLGJyb3dzZXJzOlsiRTc5IiwiRkY2MyIsIlMxMCIsIkM1MCIsIk8zNyJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86OnNsb3R0ZWQifV0sZGVzY3JpcHRpb246IlRoZSA6c2xvdHRlZCgpIENTUyBwc2V1ZG8tZWxlbWVudCByZXByZXNlbnRzIGFueSBlbGVtZW50IHRoYXQgaGFzIGJlZW4gcGxhY2VkIGludG8gYSBzbG90IGluc2lkZSBhbiBIVE1MIHRlbXBsYXRlLiJ9LHtuYW1lOiI6OnNwZWxsaW5nLWVycm9yIixzdGF0dXM6ImV4cGVyaW1lbnRhbCIsYnJvd3NlcnM6WyJFMTIxIiwiU3ByZXZpZXciLCJDMTIxIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzo6c3BlbGxpbmctZXJyb3IifV0sZGVzY3JpcHRpb246IlRoZSA6OnNwZWxsaW5nLWVycm9yIENTUyBwc2V1ZG8tZWxlbWVudCByZXByZXNlbnRzIGEgdGV4dCBzZWdtZW50IHdoaWNoIHRoZSB1c2VyIGFnZW50IGhhcyBmbGFnZ2VkIGFzIGluY29ycmVjdGx5IHNwZWxsZWQuIn0se25hbWU6Ijo6dmlldy10cmFuc2l0aW9uIixzdGF0dXM6ImV4cGVyaW1lbnRhbCIsYnJvd3NlcnM6WyJFMTA5IiwiQzEwOSIsIk85NSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86OnZpZXctdHJhbnNpdGlvbiJ9XSxkZXNjcmlwdGlvbjoiVGhlIDo6dmlldy10cmFuc2l0aW9uIENTUyBwc2V1ZG8tZWxlbWVudCByZXByZXNlbnRzIHRoZSByb290IG9mIHRoZSB2aWV3IHRyYW5zaXRpb25zIG92ZXJsYXksIHdoaWNoIGNvbnRhaW5zIGFsbCB2aWV3IHRyYW5zaXRpb25zIGFuZCBzaXRzIG92ZXIgdGhlIHRvcCBvZiBhbGwgb3RoZXIgcGFnZSBjb250ZW50LiJ9LHtuYW1lOiI6OnZpZXctdHJhbnNpdGlvbi1ncm91cCIsc3RhdHVzOiJleHBlcmltZW50YWwiLGJyb3dzZXJzOlsiRTEwOSIsIkMxMDkiLCJPOTUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOjp2aWV3LXRyYW5zaXRpb24tZ3JvdXAifV0sZGVzY3JpcHRpb246IlRoZSA6OnZpZXctdHJhbnNpdGlvbi1ncm91cCBDU1MgcHNldWRvLWVsZW1lbnQgcmVwcmVzZW50cyBhIHNpbmdsZSB2aWV3IHRyYW5zaXRpb24gZ3JvdXAuIn0se25hbWU6Ijo6dmlldy10cmFuc2l0aW9uLWltYWdlLXBhaXIiLHN0YXR1czoiZXhwZXJpbWVudGFsIixicm93c2VyczpbIkUxMDkiLCJDMTA5IiwiTzk1Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzo6dmlldy10cmFuc2l0aW9uLWltYWdlLXBhaXIifV0sZGVzY3JpcHRpb246YFRoZSA6OnZpZXctdHJhbnNpdGlvbi1pbWFnZS1wYWlyIENTUyBwc2V1ZG8tZWxlbWVudCByZXByZXNlbnRzIGEgY29udGFpbmVyIGZvciBhIHZpZXcgdHJhbnNpdGlvbidzICJvbGQiIGFuZCAibmV3IiB2aWV3IHN0YXRlcyDigJQgYmVmb3JlIGFuZCBhZnRlciB0aGUgdHJhbnNpdGlvbi5gfSx7bmFtZToiOjp2aWV3LXRyYW5zaXRpb24tbmV3IixzdGF0dXM6ImV4cGVyaW1lbnRhbCIsYnJvd3NlcnM6WyJFMTA5IiwiQzEwOSIsIk85NSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86OnZpZXctdHJhbnNpdGlvbi1uZXcifV0sZGVzY3JpcHRpb246J1RoZSA6OnZpZXctdHJhbnNpdGlvbi1uZXcgQ1NTIHBzZXVkby1lbGVtZW50IHJlcHJlc2VudHMgdGhlICJuZXciIHZpZXcgc3RhdGUgb2YgYSB2aWV3IHRyYW5zaXRpb24g4oCUIGEgbGl2ZSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbmV3IHZpZXcsIGFmdGVyIHRoZSB0cmFuc2l0aW9uLid9LHtuYW1lOiI6OnZpZXctdHJhbnNpdGlvbi1vbGQiLHN0YXR1czoiZXhwZXJpbWVudGFsIixicm93c2VyczpbIkUxMDkiLCJDMTA5IiwiTzk1Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzo6dmlldy10cmFuc2l0aW9uLW9sZCJ9XSxkZXNjcmlwdGlvbjonVGhlIDo6dmlldy10cmFuc2l0aW9uLW9sZCBDU1MgcHNldWRvLWVsZW1lbnQgcmVwcmVzZW50cyB0aGUgIm9sZCIgdmlldyBzdGF0ZSBvZiBhIHZpZXcgdHJhbnNpdGlvbiDigJQgYSBzdGF0aWMgc2NyZWVuc2hvdCBvZiB0aGUgb2xkIHZpZXcsIGJlZm9yZSB0aGUgdHJhbnNpdGlvbi4nfV19LHZoPWNsYXNze2NvbnN0cnVjdG9yKGUpe3RoaXMuX3Byb3BlcnRpZXM9W10sdGhpcy5fYXREaXJlY3RpdmVzPVtdLHRoaXMuX3BzZXVkb0NsYXNzZXM9W10sdGhpcy5fcHNldWRvRWxlbWVudHM9W10sdGhpcy5hZGREYXRhKGUpfXByb3ZpZGVQcm9wZXJ0aWVzKCl7cmV0dXJuIHRoaXMuX3Byb3BlcnRpZXN9cHJvdmlkZUF0RGlyZWN0aXZlcygpe3JldHVybiB0aGlzLl9hdERpcmVjdGl2ZXN9cHJvdmlkZVBzZXVkb0NsYXNzZXMoKXtyZXR1cm4gdGhpcy5fcHNldWRvQ2xhc3Nlc31wcm92aWRlUHNldWRvRWxlbWVudHMoKXtyZXR1cm4gdGhpcy5fcHNldWRvRWxlbWVudHN9YWRkRGF0YShlKXtpZihBcnJheS5pc0FycmF5KGUucHJvcGVydGllcykpZm9yKGNvbnN0IHQgb2YgZS5wcm9wZXJ0aWVzKWtmKHQpJiZ0aGlzLl9wcm9wZXJ0aWVzLnB1c2godCk7aWYoQXJyYXkuaXNBcnJheShlLmF0RGlyZWN0aXZlcykpZm9yKGNvbnN0IHQgb2YgZS5hdERpcmVjdGl2ZXMpRWYodCkmJnRoaXMuX2F0RGlyZWN0aXZlcy5wdXNoKHQpO2lmKEFycmF5LmlzQXJyYXkoZS5wc2V1ZG9DbGFzc2VzKSlmb3IoY29uc3QgdCBvZiBlLnBzZXVkb0NsYXNzZXMpRmYodCkmJnRoaXMuX3BzZXVkb0NsYXNzZXMucHVzaCh0KTtpZihBcnJheS5pc0FycmF5KGUucHNldWRvRWxlbWVudHMpKWZvcihjb25zdCB0IG9mIGUucHNldWRvRWxlbWVudHMpUmYodCkmJnRoaXMuX3BzZXVkb0VsZW1lbnRzLnB1c2godCl9fTtmdW5jdGlvbiBrZihlKXtyZXR1cm4gdHlwZW9mIGUubmFtZT09InN0cmluZyJ9ZnVuY3Rpb24gRWYoZSl7cmV0dXJuIHR5cGVvZiBlLm5hbWU9PSJzdHJpbmcifWZ1bmN0aW9uIEZmKGUpe3JldHVybiB0eXBlb2YgZS5uYW1lPT0ic3RyaW5nIn1mdW5jdGlvbiBSZihlKXtyZXR1cm4gdHlwZW9mIGUubmFtZT09InN0cmluZyJ9dmFyIExzPWNsYXNze2NvbnN0cnVjdG9yKGUpe3RoaXMuZGF0YVByb3ZpZGVycz1bXSx0aGlzLl9wcm9wZXJ0eVNldD17fSx0aGlzLl9hdERpcmVjdGl2ZVNldD17fSx0aGlzLl9wc2V1ZG9DbGFzc1NldD17fSx0aGlzLl9wc2V1ZG9FbGVtZW50U2V0PXt9LHRoaXMuX3Byb3BlcnRpZXM9W10sdGhpcy5fYXREaXJlY3RpdmVzPVtdLHRoaXMuX3BzZXVkb0NsYXNzZXM9W10sdGhpcy5fcHNldWRvRWxlbWVudHM9W10sdGhpcy5zZXREYXRhUHJvdmlkZXJzKGU/LnVzZURlZmF1bHREYXRhUHJvdmlkZXIhPT0hMSxlPy5jdXN0b21EYXRhUHJvdmlkZXJzfHxbXSl9c2V0RGF0YVByb3ZpZGVycyhlLHQpe3RoaXMuZGF0YVByb3ZpZGVycz1bXSxlJiZ0aGlzLmRhdGFQcm92aWRlcnMucHVzaChuZXcgdmgoX2YpKSx0aGlzLmRhdGFQcm92aWRlcnMucHVzaCguLi50KSx0aGlzLmNvbGxlY3REYXRhKCl9Y29sbGVjdERhdGEoKXt0aGlzLl9wcm9wZXJ0eVNldD17fSx0aGlzLl9hdERpcmVjdGl2ZVNldD17fSx0aGlzLl9wc2V1ZG9DbGFzc1NldD17fSx0aGlzLl9wc2V1ZG9FbGVtZW50U2V0PXt9LHRoaXMuZGF0YVByb3ZpZGVycy5mb3JFYWNoKGU9PntlLnByb3ZpZGVQcm9wZXJ0aWVzKCkuZm9yRWFjaCh0PT57dGhpcy5fcHJvcGVydHlTZXRbdC5uYW1lXXx8KHRoaXMuX3Byb3BlcnR5U2V0W3QubmFtZV09dCl9KSxlLnByb3ZpZGVBdERpcmVjdGl2ZXMoKS5mb3JFYWNoKHQ9Pnt0aGlzLl9hdERpcmVjdGl2ZVNldFt0Lm5hbWVdfHwodGhpcy5fYXREaXJlY3RpdmVTZXRbdC5uYW1lXT10KX0pLGUucHJvdmlkZVBzZXVkb0NsYXNzZXMoKS5mb3JFYWNoKHQ9Pnt0aGlzLl9wc2V1ZG9DbGFzc1NldFt0Lm5hbWVdfHwodGhpcy5fcHNldWRvQ2xhc3NTZXRbdC5uYW1lXT10KX0pLGUucHJvdmlkZVBzZXVkb0VsZW1lbnRzKCkuZm9yRWFjaCh0PT57dGhpcy5fcHNldWRvRWxlbWVudFNldFt0Lm5hbWVdfHwodGhpcy5fcHNldWRvRWxlbWVudFNldFt0Lm5hbWVdPXQpfSl9KSx0aGlzLl9wcm9wZXJ0aWVzPVNyKHRoaXMuX3Byb3BlcnR5U2V0KSx0aGlzLl9hdERpcmVjdGl2ZXM9U3IodGhpcy5fYXREaXJlY3RpdmVTZXQpLHRoaXMuX3BzZXVkb0NsYXNzZXM9U3IodGhpcy5fcHNldWRvQ2xhc3NTZXQpLHRoaXMuX3BzZXVkb0VsZW1lbnRzPVNyKHRoaXMuX3BzZXVkb0VsZW1lbnRTZXQpfWdldFByb3BlcnR5KGUpe3JldHVybiB0aGlzLl9wcm9wZXJ0eVNldFtlXX1nZXRBdERpcmVjdGl2ZShlKXtyZXR1cm4gdGhpcy5fYXREaXJlY3RpdmVTZXRbZV19Z2V0UHNldWRvQ2xhc3MoZSl7cmV0dXJuIHRoaXMuX3BzZXVkb0NsYXNzU2V0W2VdfWdldFBzZXVkb0VsZW1lbnQoZSl7cmV0dXJuIHRoaXMuX3BzZXVkb0VsZW1lbnRTZXRbZV19Z2V0UHJvcGVydGllcygpe3JldHVybiB0aGlzLl9wcm9wZXJ0aWVzfWdldEF0RGlyZWN0aXZlcygpe3JldHVybiB0aGlzLl9hdERpcmVjdGl2ZXN9Z2V0UHNldWRvQ2xhc3Nlcygpe3JldHVybiB0aGlzLl9wc2V1ZG9DbGFzc2VzfWdldFBzZXVkb0VsZW1lbnRzKCl7cmV0dXJuIHRoaXMuX3BzZXVkb0VsZW1lbnRzfWlzS25vd25Qcm9wZXJ0eShlKXtyZXR1cm4gZS50b0xvd2VyQ2FzZSgpaW4gdGhpcy5fcHJvcGVydHlTZXR9aXNTdGFuZGFyZFByb3BlcnR5KGUpe3JldHVybiB0aGlzLmlzS25vd25Qcm9wZXJ0eShlKSYmKCF0aGlzLl9wcm9wZXJ0eVNldFtlLnRvTG93ZXJDYXNlKCldLnN0YXR1c3x8dGhpcy5fcHJvcGVydHlTZXRbZS50b0xvd2VyQ2FzZSgpXS5zdGF0dXM9PT0ic3RhbmRhcmQiKX19O2Z1bmN0aW9uIE5mKGUsdCxuKXtmdW5jdGlvbiByKHMpe2NvbnN0IGE9aShzKTtsZXQgbDtmb3IobGV0IG89YS5sZW5ndGgtMTtvPj0wO28tLSlsPXZyLmNyZWF0ZShYLmNyZWF0ZShlLnBvc2l0aW9uQXQoYVtvXVswXSksZS5wb3NpdGlvbkF0KGFbb11bMV0pKSxsKTtyZXR1cm4gbHx8KGw9dnIuY3JlYXRlKFguY3JlYXRlKHMscykpKSxsfXJldHVybiB0Lm1hcChyKTtmdW5jdGlvbiBpKHMpe2NvbnN0IGE9ZS5vZmZzZXRBdChzKTtsZXQgbD1uLmZpbmRDaGlsZEF0T2Zmc2V0KGEsITApO2lmKCFsKXJldHVybltdO2NvbnN0IG89W107Zm9yKDtsOyl7aWYobC5wYXJlbnQmJmwub2Zmc2V0PT09bC5wYXJlbnQub2Zmc2V0JiZsLmVuZD09PWwucGFyZW50LmVuZCl7bD1sLnBhcmVudDtjb250aW51ZX1sLnR5cGU9PT1iLkRlY2xhcmF0aW9ucyYmYT5sLm9mZnNldCYmYTxsLmVuZCYmby5wdXNoKFtsLm9mZnNldCsxLGwuZW5kLTFdKSxvLnB1c2goW2wub2Zmc2V0LGwuZW5kXSksbD1sLnBhcmVudH1yZXR1cm4gb319dmFyIERmPWNsYXNzIGV4dGVuZHMgd3N7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwhMCl9aXNSYXdTdHJpbmdEb2N1bWVudExpbmtOb2RlKGUpe3JldHVybiBzdXBlci5pc1Jhd1N0cmluZ0RvY3VtZW50TGlua05vZGUoZSl8fGUudHlwZT09PWIuVXNlfHxlLnR5cGU9PT1iLkZvcndhcmR9YXN5bmMgbWFwUmVmZXJlbmNlKGUsdCl7aWYodGhpcy5maWxlU3lzdGVtUHJvdmlkZXImJmUmJnQpe2NvbnN0IG49SWYoZSk7Zm9yKGNvbnN0IHIgb2YgbilpZihhd2FpdCB0aGlzLmZpbGVFeGlzdHMocikpcmV0dXJuIHJ9cmV0dXJuIGV9YXN5bmMgcmVzb2x2ZVJlZmVyZW5jZShlLHQsbixyPSExKXtpZighcGUoZSwic2FzczoiKSlyZXR1cm4gc3VwZXIucmVzb2x2ZVJlZmVyZW5jZShlLHQsbixyKX19O2Z1bmN0aW9uIElmKGUpe2lmKGUuZW5kc1dpdGgoIi5jc3MiKSlyZXR1cm5bZV07aWYoZS5lbmRzV2l0aCgiLyIpKXJldHVybltlKyJpbmRleC5zY3NzIixlKyJfaW5kZXguc2NzcyJdO2NvbnN0IHQ9aHMucGFyc2UoZS5yZXBsYWNlKC9cLnNjc3MkLywiIikpLG49d3QuYmFzZW5hbWUodCkscj13dC5kaXJuYW1lKHQpO3JldHVybiBuLnN0YXJ0c1dpdGgoIl8iKT9bd3Quam9pblBhdGgocixuKyIuc2NzcyIpLnRvU3RyaW5nKCEwKV06W3d0LmpvaW5QYXRoKHIsbisiLnNjc3MiKS50b1N0cmluZyghMCksd3Quam9pblBhdGgociwiXyIrbisiLnNjc3MiKS50b1N0cmluZyghMCksZSsiL2luZGV4LnNjc3MiLGUrIi9faW5kZXguc2NzcyIsd3Quam9pblBhdGgocixuKyIuY3NzIikudG9TdHJpbmcoITApXX1mdW5jdGlvbiBBZihlKXtyZXR1cm4gbmV3IHZoKGUpfWZ1bmN0aW9uIHpzKGUsdCxuLHIsaSxzLGEpe3JldHVybntjb25maWd1cmU6bD0+e3MuY29uZmlndXJlKGwpLHQuY29uZmlndXJlKGw/LmNvbXBsZXRpb24pLG4uY29uZmlndXJlKGw/LmhvdmVyKSxyLmNvbmZpZ3VyZShsPy5pbXBvcnRBbGlhc2VzKX0sc2V0RGF0YVByb3ZpZGVyczphLnNldERhdGFQcm92aWRlcnMuYmluZChhKSxkb1ZhbGlkYXRpb246cy5kb1ZhbGlkYXRpb24uYmluZChzKSxwYXJzZVN0eWxlc2hlZXQ6ZS5wYXJzZVN0eWxlc2hlZXQuYmluZChlKSxkb0NvbXBsZXRlOnQuZG9Db21wbGV0ZS5iaW5kKHQpLGRvQ29tcGxldGUyOnQuZG9Db21wbGV0ZTIuYmluZCh0KSxzZXRDb21wbGV0aW9uUGFydGljaXBhbnRzOnQuc2V0Q29tcGxldGlvblBhcnRpY2lwYW50cy5iaW5kKHQpLGRvSG92ZXI6bi5kb0hvdmVyLmJpbmQobiksZm9ybWF0OndmLGZpbmREZWZpbml0aW9uOnIuZmluZERlZmluaXRpb24uYmluZChyKSxmaW5kUmVmZXJlbmNlczpyLmZpbmRSZWZlcmVuY2VzLmJpbmQociksZmluZERvY3VtZW50SGlnaGxpZ2h0czpyLmZpbmREb2N1bWVudEhpZ2hsaWdodHMuYmluZChyKSxmaW5kRG9jdW1lbnRMaW5rczpyLmZpbmREb2N1bWVudExpbmtzLmJpbmQociksZmluZERvY3VtZW50TGlua3MyOnIuZmluZERvY3VtZW50TGlua3MyLmJpbmQociksZmluZERvY3VtZW50U3ltYm9sczpyLmZpbmRTeW1ib2xJbmZvcm1hdGlvbnMuYmluZChyKSxmaW5kRG9jdW1lbnRTeW1ib2xzMjpyLmZpbmREb2N1bWVudFN5bWJvbHMuYmluZChyKSxkb0NvZGVBY3Rpb25zOmkuZG9Db2RlQWN0aW9ucy5iaW5kKGkpLGRvQ29kZUFjdGlvbnMyOmkuZG9Db2RlQWN0aW9uczIuYmluZChpKSxmaW5kRG9jdW1lbnRDb2xvcnM6ci5maW5kRG9jdW1lbnRDb2xvcnMuYmluZChyKSxnZXRDb2xvclByZXNlbnRhdGlvbnM6ci5nZXRDb2xvclByZXNlbnRhdGlvbnMuYmluZChyKSxwcmVwYXJlUmVuYW1lOnIucHJlcGFyZVJlbmFtZS5iaW5kKHIpLGRvUmVuYW1lOnIuZG9SZW5hbWUuYmluZChyKSxnZXRGb2xkaW5nUmFuZ2VzOmZmLGdldFNlbGVjdGlvblJhbmdlczpOZn19dmFyIFBzPXt9O2Z1bmN0aW9uIE1mKGU9UHMpe2NvbnN0IHQ9bmV3IExzKGUpO3JldHVybiB6cyhuZXcgQ3IsbmV3IHBzKG51bGwsZSx0KSxuZXcgdnMoZSYmZS5jbGllbnRDYXBhYmlsaXRpZXMsdCksbmV3IHdzKGUmJmUuZmlsZVN5c3RlbVByb3ZpZGVyLCExKSxuZXcgeXModCksbmV3IENzKHQpLHQpfWZ1bmN0aW9uIExmKGU9UHMpe2NvbnN0IHQ9bmV3IExzKGUpO3JldHVybiB6cyhuZXcgY2YsbmV3IHl0KGUsdCksbmV3IHZzKGUmJmUuY2xpZW50Q2FwYWJpbGl0aWVzLHQpLG5ldyBEZihlJiZlLmZpbGVTeXN0ZW1Qcm92aWRlciksbmV3IHlzKHQpLG5ldyBDcyh0KSx0KX1mdW5jdGlvbiB6ZihlPVBzKXtjb25zdCB0PW5ldyBMcyhlKTtyZXR1cm4genMobmV3IG1mLG5ldyBNcyhlLHQpLG5ldyB2cyhlJiZlLmNsaWVudENhcGFiaWxpdGllcyx0KSxuZXcgd3MoZSYmZS5maWxlU3lzdGVtUHJvdmlkZXIsITApLG5ldyB5cyh0KSxuZXcgQ3ModCksdCl9dmFyIFBmPWNsYXNze2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5fY3R4PWUsdGhpcy5fbGFuZ3VhZ2VTZXR0aW5ncz10Lm9wdGlvbnMsdGhpcy5fbGFuZ3VhZ2VJZD10Lmxhbmd1YWdlSWQ7Y29uc3Qgbj10Lm9wdGlvbnMuZGF0YSxyPW4/LnVzZURlZmF1bHREYXRhUHJvdmlkZXIsaT1bXTtpZihuPy5kYXRhUHJvdmlkZXJzKWZvcihjb25zdCBhIGluIG4uZGF0YVByb3ZpZGVycylpLnB1c2goQWYobi5kYXRhUHJvdmlkZXJzW2FdKSk7Y29uc3Qgcz17Y3VzdG9tRGF0YVByb3ZpZGVyczppLHVzZURlZmF1bHREYXRhUHJvdmlkZXI6cn07c3dpdGNoKHRoaXMuX2xhbmd1YWdlSWQpe2Nhc2UiY3NzIjp0aGlzLl9sYW5ndWFnZVNlcnZpY2U9TWYocyk7YnJlYWs7Y2FzZSJsZXNzIjp0aGlzLl9sYW5ndWFnZVNlcnZpY2U9emYocyk7YnJlYWs7Y2FzZSJzY3NzIjp0aGlzLl9sYW5ndWFnZVNlcnZpY2U9TGYocyk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgbGFuZ3VhZ2UgaWQ6ICIrdGhpcy5fbGFuZ3VhZ2VJZCl9dGhpcy5fbGFuZ3VhZ2VTZXJ2aWNlLmNvbmZpZ3VyZSh0aGlzLl9sYW5ndWFnZVNldHRpbmdzKX1hc3luYyBkb1ZhbGlkYXRpb24oZSl7Y29uc3QgdD10aGlzLl9nZXRUZXh0RG9jdW1lbnQoZSk7aWYodCl7Y29uc3Qgbj10aGlzLl9sYW5ndWFnZVNlcnZpY2UucGFyc2VTdHlsZXNoZWV0KHQpLHI9dGhpcy5fbGFuZ3VhZ2VTZXJ2aWNlLmRvVmFsaWRhdGlvbih0LG4pO3JldHVybiBQcm9taXNlLnJlc29sdmUocil9cmV0dXJuIFByb21pc2UucmVzb2x2ZShbXSl9YXN5bmMgZG9Db21wbGV0ZShlLHQpe2NvbnN0IG49dGhpcy5fZ2V0VGV4dERvY3VtZW50KGUpO2lmKCFuKXJldHVybiBudWxsO2NvbnN0IHI9dGhpcy5fbGFuZ3VhZ2VTZXJ2aWNlLnBhcnNlU3R5bGVzaGVldChuKSxpPXRoaXMuX2xhbmd1YWdlU2VydmljZS5kb0NvbXBsZXRlKG4sdCxyKTtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGkpfWFzeW5jIGRvSG92ZXIoZSx0KXtjb25zdCBuPXRoaXMuX2dldFRleHREb2N1bWVudChlKTtpZighbilyZXR1cm4gbnVsbDtjb25zdCByPXRoaXMuX2xhbmd1YWdlU2VydmljZS5wYXJzZVN0eWxlc2hlZXQobiksaT10aGlzLl9sYW5ndWFnZVNlcnZpY2UuZG9Ib3ZlcihuLHQscik7cmV0dXJuIFByb21pc2UucmVzb2x2ZShpKX1hc3luYyBmaW5kRGVmaW5pdGlvbihlLHQpe2NvbnN0IG49dGhpcy5fZ2V0VGV4dERvY3VtZW50KGUpO2lmKCFuKXJldHVybiBudWxsO2NvbnN0IHI9dGhpcy5fbGFuZ3VhZ2VTZXJ2aWNlLnBhcnNlU3R5bGVzaGVldChuKSxpPXRoaXMuX2xhbmd1YWdlU2VydmljZS5maW5kRGVmaW5pdGlvbihuLHQscik7cmV0dXJuIFByb21pc2UucmVzb2x2ZShpKX1hc3luYyBmaW5kUmVmZXJlbmNlcyhlLHQpe2NvbnN0IG49dGhpcy5fZ2V0VGV4dERvY3VtZW50KGUpO2lmKCFuKXJldHVybltdO2NvbnN0IHI9dGhpcy5fbGFuZ3VhZ2VTZXJ2aWNlLnBhcnNlU3R5bGVzaGVldChuKSxpPXRoaXMuX2xhbmd1YWdlU2VydmljZS5maW5kUmVmZXJlbmNlcyhuLHQscik7cmV0dXJuIFByb21pc2UucmVzb2x2ZShpKX1hc3luYyBmaW5kRG9jdW1lbnRIaWdobGlnaHRzKGUsdCl7Y29uc3Qgbj10aGlzLl9nZXRUZXh0RG9jdW1lbnQoZSk7aWYoIW4pcmV0dXJuW107Y29uc3Qgcj10aGlzLl9sYW5ndWFnZVNlcnZpY2UucGFyc2VTdHlsZXNoZWV0KG4pLGk9dGhpcy5fbGFuZ3VhZ2VTZXJ2aWNlLmZpbmREb2N1bWVudEhpZ2hsaWdodHMobix0LHIpO3JldHVybiBQcm9taXNlLnJlc29sdmUoaSl9YXN5bmMgZmluZERvY3VtZW50U3ltYm9scyhlKXtjb25zdCB0PXRoaXMuX2dldFRleHREb2N1bWVudChlKTtpZighdClyZXR1cm5bXTtjb25zdCBuPXRoaXMuX2xhbmd1YWdlU2VydmljZS5wYXJzZVN0eWxlc2hlZXQodCkscj10aGlzLl9sYW5ndWFnZVNlcnZpY2UuZmluZERvY3VtZW50U3ltYm9scyh0LG4pO3JldHVybiBQcm9taXNlLnJlc29sdmUocil9YXN5bmMgZG9Db2RlQWN0aW9ucyhlLHQsbil7Y29uc3Qgcj10aGlzLl9nZXRUZXh0RG9jdW1lbnQoZSk7aWYoIXIpcmV0dXJuW107Y29uc3QgaT10aGlzLl9sYW5ndWFnZVNlcnZpY2UucGFyc2VTdHlsZXNoZWV0KHIpLHM9dGhpcy5fbGFuZ3VhZ2VTZXJ2aWNlLmRvQ29kZUFjdGlvbnMocix0LG4saSk7cmV0dXJuIFByb21pc2UucmVzb2x2ZShzKX1hc3luYyBmaW5kRG9jdW1lbnRDb2xvcnMoZSl7Y29uc3QgdD10aGlzLl9nZXRUZXh0RG9jdW1lbnQoZSk7aWYoIXQpcmV0dXJuW107Y29uc3Qgbj10aGlzLl9sYW5ndWFnZVNlcnZpY2UucGFyc2VTdHlsZXNoZWV0KHQpLHI9dGhpcy5fbGFuZ3VhZ2VTZXJ2aWNlLmZpbmREb2N1bWVudENvbG9ycyh0LG4pO3JldHVybiBQcm9taXNlLnJlc29sdmUocil9YXN5bmMgZ2V0Q29sb3JQcmVzZW50YXRpb25zKGUsdCxuKXtjb25zdCByPXRoaXMuX2dldFRleHREb2N1bWVudChlKTtpZighcilyZXR1cm5bXTtjb25zdCBpPXRoaXMuX2xhbmd1YWdlU2VydmljZS5wYXJzZVN0eWxlc2hlZXQocikscz10aGlzLl9sYW5ndWFnZVNlcnZpY2UuZ2V0Q29sb3JQcmVzZW50YXRpb25zKHIsaSx0LG4pO3JldHVybiBQcm9taXNlLnJlc29sdmUocyl9YXN5bmMgZ2V0Rm9sZGluZ1JhbmdlcyhlLHQpe2NvbnN0IG49dGhpcy5fZ2V0VGV4dERvY3VtZW50KGUpO2lmKCFuKXJldHVybltdO2NvbnN0IHI9dGhpcy5fbGFuZ3VhZ2VTZXJ2aWNlLmdldEZvbGRpbmdSYW5nZXMobix0KTtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHIpfWFzeW5jIGdldFNlbGVjdGlvblJhbmdlcyhlLHQpe2NvbnN0IG49dGhpcy5fZ2V0VGV4dERvY3VtZW50KGUpO2lmKCFuKXJldHVybltdO2NvbnN0IHI9dGhpcy5fbGFuZ3VhZ2VTZXJ2aWNlLnBhcnNlU3R5bGVzaGVldChuKSxpPXRoaXMuX2xhbmd1YWdlU2VydmljZS5nZXRTZWxlY3Rpb25SYW5nZXMobix0LHIpO3JldHVybiBQcm9taXNlLnJlc29sdmUoaSl9YXN5bmMgZG9SZW5hbWUoZSx0LG4pe2NvbnN0IHI9dGhpcy5fZ2V0VGV4dERvY3VtZW50KGUpO2lmKCFyKXJldHVybiBudWxsO2NvbnN0IGk9dGhpcy5fbGFuZ3VhZ2VTZXJ2aWNlLnBhcnNlU3R5bGVzaGVldChyKSxzPXRoaXMuX2xhbmd1YWdlU2VydmljZS5kb1JlbmFtZShyLHQsbixpKTtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHMpfWFzeW5jIGZvcm1hdChlLHQsbil7Y29uc3Qgcj10aGlzLl9nZXRUZXh0RG9jdW1lbnQoZSk7aWYoIXIpcmV0dXJuW107Y29uc3QgaT17Li4udGhpcy5fbGFuZ3VhZ2VTZXR0aW5ncy5mb3JtYXQsLi4ubn0scz10aGlzLl9sYW5ndWFnZVNlcnZpY2UuZm9ybWF0KHIsdCxpKTtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHMpfV9nZXRUZXh0RG9jdW1lbnQoZSl7Y29uc3QgdD10aGlzLl9jdHguZ2V0TWlycm9yTW9kZWxzKCk7Zm9yKGNvbnN0IG4gb2YgdClpZihuLnVyaS50b1N0cmluZygpPT09ZSlyZXR1cm4gYXMuY3JlYXRlKGUsdGhpcy5fbGFuZ3VhZ2VJZCxuLnZlcnNpb24sbi5nZXRWYWx1ZSgpKTtyZXR1cm4gbnVsbH19O3NlbGYub25tZXNzYWdlPSgpPT57aWwoKGUsdCk9Pm5ldyBQZihlLHQpKX19KSgpOwo=", W = (Z) => Uint8Array.from(atob(Z), (l) => l.charCodeAt(0)), G = typeof self < "u" && self.Blob && new Blob([W(c)], { type: "text/javascript;charset=utf-8" });
2
- function d(Z) {
3
- let l;
4
- try {
5
- if (l = G && (self.URL || self.webkitURL).createObjectURL(G), !l) throw "";
6
- const b = new Worker(l, {
7
- name: Z?.name
8
- });
9
- return b.addEventListener("error", () => {
10
- (self.URL || self.webkitURL).revokeObjectURL(l);
11
- }), b;
12
- } catch {
13
- return new Worker(
14
- "data:text/javascript;base64," + c,
15
- {
16
- name: Z?.name
17
- }
18
- );
19
- } finally {
20
- l && (self.URL || self.webkitURL).revokeObjectURL(l);
21
- }
22
- }
23
- export {
24
- d as default
25
- };