@codingame/monaco-editor-wrapper 1.8.0 → 1.10.0
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.
- package/dist/css.worker.js +1 -1
- package/dist/features/htmlContribution.d.ts +3 -0
- package/dist/features/htmlContribution.js +104 -0
- package/dist/features/typescriptContribution.js +3 -3
- package/dist/html.worker.js +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.js +1210 -0
- package/dist/json.worker.js +1 -1
- package/dist/main.js +9 -1210
- package/dist/ts.worker.js +1 -1
- package/dist/worker.js +1 -1
- package/package.json +18 -17
- package/stats.html +1 -1
package/dist/worker.js
CHANGED
|
@@ -28,7 +28,7 @@ function createBase64WorkerFactory(base64, sourcemapArg, enableUnicodeArg) {
|
|
|
28
28
|
};
|
|
29
29
|
}
|
|
30
30
|
|
|
31
|
-
var WorkerFactory = createBase64WorkerFactory('Lyogcm9sbHVwLXBsdWdpbi13ZWItd29ya2VyLWxvYWRlciAqLwp2YXIgd29ya2VyX2NvZGU9ZnVuY3Rpb24obCl7InVzZSBzdHJpY3QiO2NsYXNzIGh7Y29uc3RydWN0b3IoKXt0aGlzLmxpc3RlbmVycz1bXSx0aGlzLnVuZXhwZWN0ZWRFcnJvckhhbmRsZXI9ZnVuY3Rpb24oZSl7c2V0VGltZW91dCgoKT0+e2lmKGUuc3RhY2spdGhyb3cgbmV3IEVycm9yKGUubWVzc2FnZSsiXG5cbiIrZS5zdGFjayk7dGhyb3cgZX0sMCl9fWFkZExpc3RlbmVyKGUpe3JldHVybiB0aGlzLmxpc3RlbmVycy5wdXNoKGUpLCgpPT57dGhpcy5fcmVtb3ZlTGlzdGVuZXIoZSl9fWVtaXQodCl7dGhpcy5saXN0ZW5lcnMuZm9yRWFjaChlPT57ZSh0KX0pfV9yZW1vdmVMaXN0ZW5lcihlKXt0aGlzLmxpc3RlbmVycy5zcGxpY2UodGhpcy5saXN0ZW5lcnMuaW5kZXhPZihlKSwxKX1zZXRVbmV4cGVjdGVkRXJyb3JIYW5kbGVyKGUpe3RoaXMudW5leHBlY3RlZEVycm9ySGFuZGxlcj1lfWdldFVuZXhwZWN0ZWRFcnJvckhhbmRsZXIoKXtyZXR1cm4gdGhpcy51bmV4cGVjdGVkRXJyb3JIYW5kbGVyfW9uVW5leHBlY3RlZEVycm9yKGUpe3RoaXMudW5leHBlY3RlZEVycm9ySGFuZGxlcihlKSx0aGlzLmVtaXQoZSl9b25VbmV4cGVjdGVkRXh0ZXJuYWxFcnJvcihlKXt0aGlzLnVuZXhwZWN0ZWRFcnJvckhhbmRsZXIoZSl9fWNvbnN0IHU9bmV3IGg7ZnVuY3Rpb24gYyhlKXshZnVuY3Rpb24oZSl7aWYoZSBpbnN0YW5jZW9mIGcpcmV0dXJuITA7cmV0dXJuIGUgaW5zdGFuY2VvZiBFcnJvciYmZS5uYW1lPT09bSYmZS5tZXNzYWdlPT09bX0oZSkmJnUub25VbmV4cGVjdGVkRXJyb3IoZSl9ZnVuY3Rpb24gZihlKXt2YXIgdCxyO3JldHVybiBlIGluc3RhbmNlb2YgRXJyb3I/KHtuYW1lOnQsbWVzc2FnZTpyfT1lLHskaXNFcnJvcjohMCxuYW1lOnQsbWVzc2FnZTpyLHN0YWNrOmUuc3RhY2t0cmFjZXx8ZS5zdGFja30pOmV9Y29uc3QgbT0iQ2FuY2VsZWQiO2NsYXNzIGcgZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3Rvcigpe3N1cGVyKG0pLHRoaXMubmFtZT10aGlzLm1lc3NhZ2V9fXZhciBiO3t2YXIgQz1iPWJ8fHt9O0MuaXM9ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJvYmplY3QiPT10eXBlb2YgZSYmImZ1bmN0aW9uIj09dHlwZW9mIGVbU3ltYm9sLml0ZXJhdG9yXX07Y29uc3QgYW49T2JqZWN0LmZyZWV6ZShbXSk7Qy5lbXB0eT1mdW5jdGlvbigpe3JldHVybiBhbn0sQy5zaW5nbGU9ZnVuY3Rpb24qKGUpe3lpZWxkIGV9LEMuZnJvbT1mdW5jdGlvbihlKXtyZXR1cm4gZXx8YW59LEMuaXNFbXB0eT1mdW5jdGlvbihlKXtyZXR1cm4hZXx8ITA9PT1lW1N5bWJvbC5pdGVyYXRvcl0oKS5uZXh0KCkuZG9uZX0sQy5maXJzdD1mdW5jdGlvbihlKXtyZXR1cm4gZVtTeW1ib2wuaXRlcmF0b3JdKCkubmV4dCgpLnZhbHVlfSxDLnNvbWU9ZnVuY3Rpb24oZSx0KXtmb3IoY29uc3QgciBvZiBlKWlmKHQocikpcmV0dXJuITA7cmV0dXJuITF9LEMuZmluZD1mdW5jdGlvbihlLHQpe2Zvcihjb25zdCByIG9mIGUpaWYodChyKSlyZXR1cm4gcn0sQy5maWx0ZXI9ZnVuY3Rpb24qKGUsdCl7Zm9yKGNvbnN0IHIgb2YgZSl0KHIpJiYoeWllbGQgcil9LEMubWFwPWZ1bmN0aW9uKihlLHQpe2xldCByPTA7Zm9yKGNvbnN0IG4gb2YgZSl5aWVsZCB0KG4scisrKX0sQy5jb25jYXQ9ZnVuY3Rpb24qKC4uLmUpe2Zvcihjb25zdCB0IG9mIGUpZm9yKGNvbnN0IHIgb2YgdCl5aWVsZCByfSxDLmNvbmNhdE5lc3RlZD1mdW5jdGlvbiooZSl7Zm9yKGNvbnN0IHQgb2YgZSlmb3IoY29uc3QgciBvZiB0KXlpZWxkIHJ9LEMucmVkdWNlPWZ1bmN0aW9uKGUsdCxyKXtsZXQgbj1yO2Zvcihjb25zdCBpIG9mIGUpbj10KG4saSk7cmV0dXJuIG59LEMuc2xpY2U9ZnVuY3Rpb24qKGUsdCxyPWUubGVuZ3RoKXtmb3IodDwwJiYodCs9ZS5sZW5ndGgpLHI8MD9yKz1lLmxlbmd0aDpyPmUubGVuZ3RoJiYocj1lLmxlbmd0aCk7dDxyO3QrKyl5aWVsZCBlW3RdfSxDLmNvbnN1bWU9ZnVuY3Rpb24oZSx0PU51bWJlci5QT1NJVElWRV9JTkZJTklUWSl7Y29uc3Qgcj1bXTtpZigwPT09dClyZXR1cm5bcixlXTtjb25zdCBuPWVbU3ltYm9sLml0ZXJhdG9yXSgpO2ZvcihsZXQgZT0wO2U8dDtlKyspe3ZhciBpPW4ubmV4dCgpO2lmKGkuZG9uZSlyZXR1cm5bcixDLmVtcHR5KCldO3IucHVzaChpLnZhbHVlKX1yZXR1cm5bcix7W1N5bWJvbC5pdGVyYXRvcl0oKXtyZXR1cm4gbn19XX0sQy5lcXVhbHM9ZnVuY3Rpb24oZSx0LHI9KGUsdCk9PmU9PT10KXtjb25zdCBuPWVbU3ltYm9sLml0ZXJhdG9yXSgpLGk9dFtTeW1ib2wuaXRlcmF0b3JdKCk7Zm9yKDs7KXt2YXIgYT1uLm5leHQoKSxvPWkubmV4dCgpO2lmKGEuZG9uZSE9PW8uZG9uZSlyZXR1cm4hMTtpZihhLmRvbmUpcmV0dXJuITA7aWYoIXIoYS52YWx1ZSxvLnZhbHVlKSlyZXR1cm4hMX19fWNsYXNzIHcgZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3RvcihlKXtzdXBlcihgRW5jb3VudGVyZWQgZXJyb3JzIHdoaWxlIGRpc3Bvc2luZyBvZiBzdG9yZS4gRXJyb3JzOiBbJHtlLmpvaW4oIiwgIil9XWApLHRoaXMuZXJyb3JzPWV9fWZ1bmN0aW9uIF8oZSl7aWYoYi5pcyhlKSl7bGV0IHQ9W107Zm9yKGNvbnN0IHIgb2YgZSlpZihyKXRyeXtyLmRpc3Bvc2UoKX1jYXRjaChlKXt0LnB1c2goZSl9aWYoMT09PXQubGVuZ3RoKXRocm93IHRbMF07aWYoMTx0Lmxlbmd0aCl0aHJvdyBuZXcgdyh0KTtyZXR1cm4gQXJyYXkuaXNBcnJheShlKT9bXTplfWlmKGUpcmV0dXJuIGUuZGlzcG9zZSgpLGV9ZnVuY3Rpb24gdihlKXtyZXR1cm57ZGlzcG9zZTpmdW5jdGlvbihlKXtjb25zdCB0PXRoaXM7bGV0IHI9ITEsbjtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gcj9uOihyPSEwLG49ZS5hcHBseSh0LGFyZ3VtZW50cykpfX0oKCk9PntlKCl9KX19Y2xhc3MgeXtjb25zdHJ1Y3Rvcigpe3RoaXMuX3RvRGlzcG9zZT1uZXcgU2V0LHRoaXMuX2lzRGlzcG9zZWQ9ITF9ZGlzcG9zZSgpe3RoaXMuX2lzRGlzcG9zZWR8fCh0aGlzLl9pc0Rpc3Bvc2VkPSEwLHRoaXMuY2xlYXIoKSl9Z2V0IGlzRGlzcG9zZWQoKXtyZXR1cm4gdGhpcy5faXNEaXNwb3NlZH1jbGVhcigpe3RyeXtfKHRoaXMuX3RvRGlzcG9zZS52YWx1ZXMoKSl9ZmluYWxseXt0aGlzLl90b0Rpc3Bvc2UuY2xlYXIoKX19YWRkKGUpe2lmKCFlKXJldHVybiBlO2lmKGU9PT10aGlzKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IHJlZ2lzdGVyIGEgZGlzcG9zYWJsZSBvbiBpdHNlbGYhIik7cmV0dXJuIHRoaXMuX2lzRGlzcG9zZWQ/eS5ESVNBQkxFX0RJU1BPU0VEX1dBUk5JTkd8fGNvbnNvbGUud2FybihuZXcgRXJyb3IoIlRyeWluZyB0byBhZGQgYSBkaXNwb3NhYmxlIHRvIGEgRGlzcG9zYWJsZVN0b3JlIHRoYXQgaGFzIGFscmVhZHkgYmVlbiBkaXNwb3NlZCBvZi4gVGhlIGFkZGVkIG9iamVjdCB3aWxsIGJlIGxlYWtlZCEiKS5zdGFjayk6dGhpcy5fdG9EaXNwb3NlLmFkZChlKSxlfX15LkRJU0FCTEVfRElTUE9TRURfV0FSTklORz0hMTtjbGFzcyBTe2NvbnN0cnVjdG9yKCl7dGhpcy5fc3RvcmU9bmV3IHksdGhpcy5fc3RvcmV9ZGlzcG9zZSgpe3RoaXMuX3N0b3JlLmRpc3Bvc2UoKX1fcmVnaXN0ZXIoZSl7aWYoZT09PXRoaXMpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgcmVnaXN0ZXIgYSBkaXNwb3NhYmxlIG9uIGl0c2VsZiEiKTtyZXR1cm4gdGhpcy5fc3RvcmUuYWRkKGUpfX1TLk5vbmU9T2JqZWN0LmZyZWV6ZSh7ZGlzcG9zZSgpe319KTtjbGFzcyBve2NvbnN0cnVjdG9yKGUpe3RoaXMuZWxlbWVudD1lLHRoaXMubmV4dD1vLlVuZGVmaW5lZCx0aGlzLnByZXY9by5VbmRlZmluZWR9fW8uVW5kZWZpbmVkPW5ldyBvKHZvaWQgMCk7Y2xhc3MgTHtjb25zdHJ1Y3Rvcigpe3RoaXMuX2ZpcnN0PW8uVW5kZWZpbmVkLHRoaXMuX2xhc3Q9by5VbmRlZmluZWQsdGhpcy5fc2l6ZT0wfWdldCBzaXplKCl7cmV0dXJuIHRoaXMuX3NpemV9aXNFbXB0eSgpe3JldHVybiB0aGlzLl9maXJzdD09PW8uVW5kZWZpbmVkfWNsZWFyKCl7bGV0IGU9dGhpcy5fZmlyc3Q7Zm9yKDtlIT09by5VbmRlZmluZWQ7KXt2YXIgdD1lLm5leHQ7ZS5wcmV2PW8uVW5kZWZpbmVkLGUubmV4dD1vLlVuZGVmaW5lZCxlPXR9dGhpcy5fZmlyc3Q9by5VbmRlZmluZWQsdGhpcy5fbGFzdD1vLlVuZGVmaW5lZCx0aGlzLl9zaXplPTB9dW5zaGlmdChlKXtyZXR1cm4gdGhpcy5faW5zZXJ0KGUsITEpfXB1c2goZSl7cmV0dXJuIHRoaXMuX2luc2VydChlLCEwKX1faW5zZXJ0KGUsdCl7Y29uc3Qgcj1uZXcgbyhlKTtpZih0aGlzLl9maXJzdD09PW8uVW5kZWZpbmVkKXRoaXMuX2ZpcnN0PXIsdGhpcy5fbGFzdD1yO2Vsc2UgaWYodCl7Y29uc3QgaT10aGlzLl9sYXN0OygodGhpcy5fbGFzdD1yKS5wcmV2PWkpLm5leHQ9cn1lbHNle2NvbnN0IGE9dGhpcy5fZmlyc3Q7KCh0aGlzLl9maXJzdD1yKS5uZXh0PWEpLnByZXY9cn10aGlzLl9zaXplKz0xO2xldCBuPSExO3JldHVybigpPT57bnx8KG49ITAsdGhpcy5fcmVtb3ZlKHIpKX19c2hpZnQoKXt2YXIgZTtpZih0aGlzLl9maXJzdCE9PW8uVW5kZWZpbmVkKXJldHVybiBlPXRoaXMuX2ZpcnN0LmVsZW1lbnQsdGhpcy5fcmVtb3ZlKHRoaXMuX2ZpcnN0KSxlfXBvcCgpe3ZhciBlO2lmKHRoaXMuX2xhc3QhPT1vLlVuZGVmaW5lZClyZXR1cm4gZT10aGlzLl9sYXN0LmVsZW1lbnQsdGhpcy5fcmVtb3ZlKHRoaXMuX2xhc3QpLGV9X3JlbW92ZShlKXtpZihlLnByZXYhPT1vLlVuZGVmaW5lZCYmZS5uZXh0IT09by5VbmRlZmluZWQpe2NvbnN0IHQ9ZS5wcmV2O3QubmV4dD1lLm5leHQsZS5uZXh0LnByZXY9dH1lbHNlIGUucHJldj09PW8uVW5kZWZpbmVkJiZlLm5leHQ9PT1vLlVuZGVmaW5lZD8odGhpcy5fZmlyc3Q9by5VbmRlZmluZWQsdGhpcy5fbGFzdD1vLlVuZGVmaW5lZCk6ZS5uZXh0PT09by5VbmRlZmluZWQ/KHRoaXMuX2xhc3Q9dGhpcy5fbGFzdC5wcmV2LHRoaXMuX2xhc3QubmV4dD1vLlVuZGVmaW5lZCk6ZS5wcmV2PT09by5VbmRlZmluZWQmJih0aGlzLl9maXJzdD10aGlzLl9maXJzdC5uZXh0LHRoaXMuX2ZpcnN0LnByZXY9by5VbmRlZmluZWQpOy0tdGhpcy5fc2l6ZX0qW1N5bWJvbC5pdGVyYXRvcl0oKXtsZXQgZT10aGlzLl9maXJzdDtmb3IoO2UhPT1vLlVuZGVmaW5lZDspeWllbGQgZS5lbGVtZW50LGU9ZS5uZXh0fX12YXIgZT0iZW4iO2xldCBOPSExLEU9ITEsQT0hMSxrPXZvaWQgMCx4PWU7bGV0IE09dm9pZCAwO2NvbnN0IFA9Im9iamVjdCI9PXR5cGVvZiBzZWxmP3NlbGY6Im9iamVjdCI9PXR5cGVvZiBnbG9iYWw/Z2xvYmFsOnt9O2xldCBLPXZvaWQgMDt2b2lkIDAhPT1QLnZzY29kZSYmdm9pZCAwIT09UC52c2NvZGUucHJvY2Vzcz9LPVAudnNjb2RlLnByb2Nlc3M6InVuZGVmaW5lZCIhPXR5cGVvZiBwcm9jZXNzJiYoSz1wcm9jZXNzKTt2YXIgUj0ic3RyaW5nIj09dHlwZW9mKG51bGw9PT0oUj1udWxsPT09S3x8dm9pZCAwPT09Sz92b2lkIDA6Sy52ZXJzaW9ucyl8fHZvaWQgMD09PVI/dm9pZCAwOlIuZWxlY3Ryb24pJiYicmVuZGVyZXIiPT09KG51bGw9PT1LfHx2b2lkIDA9PT1LP3ZvaWQgMDpLLnR5cGUpO2lmKCJvYmplY3QiIT10eXBlb2YgbmF2aWdhdG9yfHxSKWlmKCJvYmplY3QiPT10eXBlb2YgSyl7Tj0id2luMzIiPT09Sy5wbGF0Zm9ybSxFPSJkYXJ3aW4iPT09Sy5wbGF0Zm9ybSwoQT0ibGludXgiPT09Sy5wbGF0Zm9ybSkmJksuZW52LlNOQVAmJksuZW52LlNOQVBfUkVWSVNJT04saz1lLHg9ZTtSPUsuZW52LlZTQ09ERV9OTFNfQ09ORklHO2lmKFIpdHJ5e3ZhciBEPUpTT04ucGFyc2UoUiksdD1ELmF2YWlsYWJsZUxhbmd1YWdlc1siKiJdO2s9RC5sb2NhbGUseD10fHxlLEQuX3RyYW5zbGF0aW9uc0NvbmZpZ0ZpbGV9Y2F0Y2goZSl7fX1lbHNlIGNvbnNvbGUuZXJyb3IoIlVuYWJsZSB0byByZXNvbHZlIHBsYXRmb3JtLiIpO2Vsc2UgTT1uYXZpZ2F0b3IudXNlckFnZW50LE49MDw9TS5pbmRleE9mKCJXaW5kb3dzIiksRT0wPD1NLmluZGV4T2YoIk1hY2ludG9zaCIpLCgwPD1NLmluZGV4T2YoIk1hY2ludG9zaCIpfHwwPD1NLmluZGV4T2YoImlQYWQiKXx8MDw9TS5pbmRleE9mKCJpUGhvbmUiKSkmJm5hdmlnYXRvci5tYXhUb3VjaFBvaW50cyYmbmF2aWdhdG9yLm1heFRvdWNoUG9pbnRzLEE9MDw9TS5pbmRleE9mKCJMaW51eCIpLGs9bmF2aWdhdG9yLmxhbmd1YWdlLHg9aztjb25zdCBJPU4sVj1FLE89QSxGPU07KCgpPT57aWYoImZ1bmN0aW9uIiE9dHlwZW9mIFAucG9zdE1lc3NhZ2V8fFAuaW1wb3J0U2NyaXB0cylyZXR1cm47e2xldCBpPVtdLGU9KFAuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIscj0+e2lmKHIuZGF0YSYmci5kYXRhLnZzY29kZVNjaGVkdWxlQXN5bmNXb3JrKWZvcihsZXQgZT0wLHQ9aS5sZW5ndGg7ZTx0O2UrKyl7Y29uc3Qgbj1pW2VdO2lmKG4uaWQ9PT1yLmRhdGEudnNjb2RlU2NoZWR1bGVBc3luY1dvcmspcmV0dXJuIGkuc3BsaWNlKGUsMSksdm9pZCBuLmNhbGxiYWNrKCl9fSksMCl9fSkoKTt2YXIgVCxCLFI9ISEoRiYmMDw9Ri5pbmRleE9mKCJDaHJvbWUiKSk7RiYmRi5pbmRleE9mKCJGaXJlZm94IiksIVImJkYmJkYuaW5kZXhPZigiU2FmYXJpIiksRiYmRi5pbmRleE9mKCJFZGcvIiksRiYmRi5pbmRleE9mKCJBbmRyb2lkIik7Y29uc3QgcT1QLnBlcmZvcm1hbmNlJiYiZnVuY3Rpb24iPT10eXBlb2YgUC5wZXJmb3JtYW5jZS5ub3c7Y2xhc3MgVXtjb25zdHJ1Y3RvcihlKXt0aGlzLl9oaWdoUmVzb2x1dGlvbj1xJiZlLHRoaXMuX3N0YXJ0VGltZT10aGlzLl9ub3coKSx0aGlzLl9zdG9wVGltZT0tMX1zdGF0aWMgY3JlYXRlKGU9ITApe3JldHVybiBuZXcgVShlKX1zdG9wKCl7dGhpcy5fc3RvcFRpbWU9dGhpcy5fbm93KCl9ZWxhcHNlZCgpe3JldHVybi0xIT09dGhpcy5fc3RvcFRpbWU/dGhpcy5fc3RvcFRpbWUtdGhpcy5fc3RhcnRUaW1lOnRoaXMuX25vdygpLXRoaXMuX3N0YXJ0VGltZX1fbm93KCl7cmV0dXJuKHRoaXMuX2hpZ2hSZXNvbHV0aW9uP1AucGVyZm9ybWFuY2U6RGF0ZSkubm93KCl9fXt2YXIgSD1UPVR8fHt9O2Z1bmN0aW9uIFcoYSl7cmV0dXJuKHQscj1udWxsLGUpPT57bGV0IG49ITEsaTtyZXR1cm4gaT1hKGU9PntpZighbilyZXR1cm4gaT9pLmRpc3Bvc2UoKTpuPSEwLHQuY2FsbChyLGUpfSxudWxsLGUpLG4mJmkuZGlzcG9zZSgpLGl9fWZ1bmN0aW9uIHoobixpKXtyZXR1cm4gSigodCxyPW51bGwsZSk9Pm4oZT0+dC5jYWxsKHIsaShlKSksbnVsbCxlKSl9ZnVuY3Rpb24gaihuLGkpe3JldHVybiBKKCh0LHI9bnVsbCxlKT0+bihlPT57aShlKSx0LmNhbGwocixlKX0sbnVsbCxlKSl9ZnVuY3Rpb24gJChuLGkpe3JldHVybiBKKCh0LHI9bnVsbCxlKT0+bihlPT5pKGUpJiZ0LmNhbGwocixlKSxudWxsLGUpKX1mdW5jdGlvbiBHKGUsdCxyKXtsZXQgbj1yO3JldHVybiB6KGUsZT0+bj10KG4sZSkpfWZ1bmN0aW9uIEooZSl7bGV0IHQ7Y29uc3Qgcj1uZXcgWCh7b25GaXJzdExpc3RlbmVyQWRkKCl7dD1lKHIuZmlyZSxyKX0sb25MYXN0TGlzdGVuZXJSZW1vdmUoKXt0LmRpc3Bvc2UoKX19KTtyZXR1cm4gci5ldmVudH1mdW5jdGlvbiBRKGUsdCxyPTEwMCxuPSExLGkpe2xldCBhLG89dm9pZCAwLHM9dm9pZCAwLGw9MDtjb25zdCBoPW5ldyBYKHtsZWFrV2FybmluZ1RocmVzaG9sZDppLG9uRmlyc3RMaXN0ZW5lckFkZCgpe2E9ZShlPT57bCsrLG89dChvLGUpLG4mJiFzJiYoaC5maXJlKG8pLG89dm9pZCAwKSxjbGVhclRpbWVvdXQocykscz1zZXRUaW1lb3V0KCgpPT57dmFyIGU9bztvPXZvaWQgMCxzPXZvaWQgMCwoIW58fDE8bCkmJmguZmlyZShlKSxsPTB9LHIpfSl9LG9uTGFzdExpc3RlbmVyUmVtb3ZlKCl7YS5kaXNwb3NlKCl9fSk7cmV0dXJuIGguZXZlbnR9ZnVuY3Rpb24gWShlLHI9KGUsdCk9PmU9PT10KXtsZXQgbj0hMCxpO3JldHVybiAkKGUsZT0+e3ZhciB0PW58fCFyKGUsaSk7cmV0dXJuIG49ITEsaT1lLHR9KX1ILk5vbmU9KCk9PlMuTm9uZSxILm9uY2U9VyxILm1hcD16LEguZm9yRWFjaD1qLEguZmlsdGVyPSQsSC5zaWduYWw9ZnVuY3Rpb24oZSl7cmV0dXJuIGV9LEguYW55PWZ1bmN0aW9uKC4uLmkpe3JldHVybih0LHI9bnVsbCxuKT0+e3ZhclsuLi5lXT1bLi4uaS5tYXAoZT0+ZShlPT50LmNhbGwocixlKSxudWxsLG4pKV07cmV0dXJuIHYoKCk9Pl8oZSkpfX0sSC5yZWR1Y2U9RyxILmRlYm91bmNlZExpc3RlbmVyPWZ1bmN0aW9uKGUsdCxyLG49MTAwLGk9ITEpe2xldCBhPXZvaWQgMCxvPXZvaWQgMCxzPTA7cmV0dXJuIGUoZT0+e3MrKyxhPXIoYSxlKSxpJiYhbyYmKHQoYSksYT12b2lkIDApLGNsZWFyVGltZW91dChvKSxvPXNldFRpbWVvdXQoKCk9Pnt2YXIgZT1hO2E9dm9pZCAwLG89dm9pZCAwLCghaXx8MTxzKSYmdChlKSxzPTB9LG4pfSl9LEguZGVib3VuY2U9USxILmxhdGNoPVksSC5zcGxpdD1mdW5jdGlvbihlLHQpe3JldHVybltILmZpbHRlcihlLHQpLEguZmlsdGVyKGUsZT0+IXQoZSkpXX0sSC5idWZmZXI9ZnVuY3Rpb24oZSx0PSExLHI9W10pe2xldCBuPXIuc2xpY2UoKSxpPWUoZT0+e24/bi5wdXNoKGUpOm8uZmlyZShlKX0pO2NvbnN0IGE9KCk9PntuJiZuLmZvckVhY2goZT0+by5maXJlKGUpKSxuPW51bGx9LG89bmV3IFgoe29uRmlyc3RMaXN0ZW5lckFkZCgpe2k9aXx8ZShlPT5vLmZpcmUoZSkpfSxvbkZpcnN0TGlzdGVuZXJEaWRBZGQoKXtuJiYodD9zZXRUaW1lb3V0KGEpOmEoKSl9LG9uTGFzdExpc3RlbmVyUmVtb3ZlKCl7aSYmaS5kaXNwb3NlKCksaT1udWxsfX0pO3JldHVybiBvLmV2ZW50fTtjbGFzcyBvbntjb25zdHJ1Y3RvcihlKXt0aGlzLmV2ZW50PWV9bWFwKGUpe3JldHVybiBuZXcgb24oeih0aGlzLmV2ZW50LGUpKX1mb3JFYWNoKGUpe3JldHVybiBuZXcgb24oaih0aGlzLmV2ZW50LGUpKX1maWx0ZXIoZSl7cmV0dXJuIG5ldyBvbigkKHRoaXMuZXZlbnQsZSkpfXJlZHVjZShlLHQpe3JldHVybiBuZXcgb24oRyh0aGlzLmV2ZW50LGUsdCkpfWxhdGNoKCl7cmV0dXJuIG5ldyBvbihZKHRoaXMuZXZlbnQpKX1kZWJvdW5jZShlLHQ9MTAwLHI9ITEsbil7cmV0dXJuIG5ldyBvbihRKHRoaXMuZXZlbnQsZSx0LHIsbikpfW9uKGUsdCxyKXtyZXR1cm4gdGhpcy5ldmVudChlLHQscil9b25jZShlLHQscil7cmV0dXJuIFcodGhpcy5ldmVudCkoZSx0LHIpfX1ILmNoYWluPWZ1bmN0aW9uKGUpe3JldHVybiBuZXcgb24oZSl9LEguZnJvbU5vZGVFdmVudEVtaXR0ZXI9ZnVuY3Rpb24oZSx0LHI9ZT0+ZSl7Y29uc3Qgbj0oLi4uZSk9PmkuZmlyZShyKC4uLmUpKSxpPW5ldyBYKHtvbkZpcnN0TGlzdGVuZXJBZGQ6KCk9PmUub24odCxuKSxvbkxhc3RMaXN0ZW5lclJlbW92ZTooKT0+ZS5yZW1vdmVMaXN0ZW5lcih0LG4pfSk7cmV0dXJuIGkuZXZlbnR9LEguZnJvbURPTUV2ZW50RW1pdHRlcj1mdW5jdGlvbihlLHQscj1lPT5lKXtjb25zdCBuPSguLi5lKT0+aS5maXJlKHIoLi4uZSkpLGk9bmV3IFgoe29uRmlyc3RMaXN0ZW5lckFkZDooKT0+ZS5hZGRFdmVudExpc3RlbmVyKHQsbiksb25MYXN0TGlzdGVuZXJSZW1vdmU6KCk9PmUucmVtb3ZlRXZlbnRMaXN0ZW5lcih0LG4pfSk7cmV0dXJuIGkuZXZlbnR9LEgudG9Qcm9taXNlPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgUHJvbWlzZShlPT5XKHQpKGUpKX0sSC5ydW5BbmRTdWJzY3JpYmU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdCh2b2lkIDApLGUoZT0+dChlKSl9LEgucnVuQW5kU3Vic2NyaWJlV2l0aFN0b3JlPWZ1bmN0aW9uKGUsdCl7bGV0IHI9bnVsbDtmdW5jdGlvbiBuKGUpe251bGwhPT1yJiZ2b2lkIDAhPT1yJiZyLmRpc3Bvc2UoKSxyPW5ldyB5LHQoZSxyKX1uKHZvaWQgMCk7Y29uc3QgaT1lKGU9Pm4oZSkpO3JldHVybiB2KCgpPT57aS5kaXNwb3NlKCksbnVsbCE9PXImJnZvaWQgMCE9PXImJnIuZGlzcG9zZSgpfSl9fWNsYXNzIFp7Y29uc3RydWN0b3IoZSl7dGhpcy5fbGlzdGVuZXJDb3VudD0wLHRoaXMuX2ludm9jYXRpb25Db3VudD0wLHRoaXMuX2VsYXBzZWRPdmVyYWxsPTAsdGhpcy5fbmFtZT1lKyJfIitaLl9pZFBvb2wrK31zdGFydChlKXt0aGlzLl9zdG9wV2F0Y2g9bmV3IFUoITApLHRoaXMuX2xpc3RlbmVyQ291bnQ9ZX1zdG9wKCl7aWYodGhpcy5fc3RvcFdhdGNoKXtjb25zdCBlPXRoaXMuX3N0b3BXYXRjaC5lbGFwc2VkKCk7dGhpcy5fZWxhcHNlZE92ZXJhbGwrPWUsdGhpcy5faW52b2NhdGlvbkNvdW50Kz0xLGNvbnNvbGUuaW5mbyhgZGlkIEZJUkUgJHt0aGlzLl9uYW1lfTogZWxhcHNlZF9tczogJHtlLnRvRml4ZWQoNSl9LCBsaXN0ZW5lcjogJHt0aGlzLl9saXN0ZW5lckNvdW50fSAoZWxhcHNlZF9vdmVyYWxsOiAke3RoaXMuX2VsYXBzZWRPdmVyYWxsLnRvRml4ZWQoMil9LCBpbnZvY2F0aW9uczogJHt0aGlzLl9pbnZvY2F0aW9uQ291bnR9KWApLHRoaXMuX3N0b3BXYXRjaD12b2lkIDB9fX1aLl9pZFBvb2w9MDtjbGFzcyBYe2NvbnN0cnVjdG9yKGUpe3RoaXMuX2Rpc3Bvc2VkPSExLHRoaXMuX29wdGlvbnM9ZSx0aGlzLl9sZWFrYWdlTW9uPXZvaWQgMCx0aGlzLl9wZXJmTW9uPW51bGwhPT0oZT10aGlzLl9vcHRpb25zKSYmdm9pZCAwIT09ZSYmZS5fcHJvZk5hbWU/bmV3IFoodGhpcy5fb3B0aW9ucy5fcHJvZk5hbWUpOnZvaWQgMH1nZXQgZXZlbnQoKXtyZXR1cm4gdGhpcy5fZXZlbnR8fCh0aGlzLl9ldmVudD0oZSx0LHIpPT57dGhpcy5fbGlzdGVuZXJzfHwodGhpcy5fbGlzdGVuZXJzPW5ldyBMKTt2YXIgbj10aGlzLl9saXN0ZW5lcnMuaXNFbXB0eSgpO24mJnRoaXMuX29wdGlvbnMmJnRoaXMuX29wdGlvbnMub25GaXJzdExpc3RlbmVyQWRkJiZ0aGlzLl9vcHRpb25zLm9uRmlyc3RMaXN0ZW5lckFkZCh0aGlzKTtjb25zdCBpPXRoaXMuX2xpc3RlbmVycy5wdXNoKHQ/W2UsdF06ZSksYT0obiYmdGhpcy5fb3B0aW9ucyYmdGhpcy5fb3B0aW9ucy5vbkZpcnN0TGlzdGVuZXJEaWRBZGQmJnRoaXMuX29wdGlvbnMub25GaXJzdExpc3RlbmVyRGlkQWRkKHRoaXMpLHRoaXMuX29wdGlvbnMmJnRoaXMuX29wdGlvbnMub25MaXN0ZW5lckRpZEFkZCYmdGhpcy5fb3B0aW9ucy5vbkxpc3RlbmVyRGlkQWRkKHRoaXMsZSx0KSxudWxsPT09KG49dGhpcy5fbGVha2FnZU1vbil8fHZvaWQgMD09PW4/dm9pZCAwOm4uY2hlY2sodGhpcy5fbGlzdGVuZXJzLnNpemUpKTtlPXYoKCk9PnthJiZhKCksdGhpcy5fZGlzcG9zZWR8fChpKCksdGhpcy5fb3B0aW9ucyYmdGhpcy5fb3B0aW9ucy5vbkxhc3RMaXN0ZW5lclJlbW92ZSYmKHRoaXMuX2xpc3RlbmVycyYmIXRoaXMuX2xpc3RlbmVycy5pc0VtcHR5KCl8fHRoaXMuX29wdGlvbnMub25MYXN0TGlzdGVuZXJSZW1vdmUodGhpcykpKX0pO3JldHVybiByIGluc3RhbmNlb2YgeT9yLmFkZChlKTpBcnJheS5pc0FycmF5KHIpJiZyLnB1c2goZSksZX0pLHRoaXMuX2V2ZW50fWZpcmUoZSl7dmFyIHQ7aWYodGhpcy5fbGlzdGVuZXJzKXt0aGlzLl9kZWxpdmVyeVF1ZXVlfHwodGhpcy5fZGVsaXZlcnlRdWV1ZT1uZXcgTCk7Zm9yKHZhciByIG9mIHRoaXMuX2xpc3RlbmVycyl0aGlzLl9kZWxpdmVyeVF1ZXVlLnB1c2goW3IsZV0pO2ZvcihudWxsIT09KHQ9dGhpcy5fcGVyZk1vbikmJnZvaWQgMCE9PXQmJnQuc3RhcnQodGhpcy5fZGVsaXZlcnlRdWV1ZS5zaXplKTswPHRoaXMuX2RlbGl2ZXJ5UXVldWUuc2l6ZTspe2NvbnN0W24sZV09dGhpcy5fZGVsaXZlcnlRdWV1ZS5zaGlmdCgpO3RyeXsiZnVuY3Rpb24iPT10eXBlb2Ygbj9uLmNhbGwodm9pZCAwLGUpOm5bMF0uY2FsbChuWzFdLGUpfWNhdGNoKGUpe2MoZSl9fW51bGwhPT0odD10aGlzLl9wZXJmTW9uKSYmdm9pZCAwIT09dCYmdC5zdG9wKCl9fWRpc3Bvc2UoKXt2YXIgZSx0O3RoaXMuX2Rpc3Bvc2VkfHwodGhpcy5fZGlzcG9zZWQ9ITAsbnVsbCE9PShlPXRoaXMuX2xpc3RlbmVycykmJnZvaWQgMCE9PWUmJmUuY2xlYXIoKSxudWxsIT09KGU9dGhpcy5fZGVsaXZlcnlRdWV1ZSkmJnZvaWQgMCE9PWUmJmUuY2xlYXIoKSxudWxsIT09KHQ9bnVsbD09PShlPXRoaXMuX29wdGlvbnMpfHx2b2lkIDA9PT1lP3ZvaWQgMDplLm9uTGFzdExpc3RlbmVyUmVtb3ZlKSYmdm9pZCAwIT09dCYmdC5jYWxsKGUpLG51bGwhPT0odD10aGlzLl9sZWFrYWdlTW9uKSYmdm9pZCAwIT09dCYmdC5kaXNwb3NlKCkpfX1mdW5jdGlvbiBlZShlKXtjb25zdCB0PVtdO2Zvcihjb25zdCByIG9mIGZ1bmN0aW9uKGUpe2xldCB0PVtdLHI9T2JqZWN0LmdldFByb3RvdHlwZU9mKGUpO2Zvcig7T2JqZWN0LnByb3RvdHlwZSE9PXI7KXQ9dC5jb25jYXQoT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMocikpLHI9T2JqZWN0LmdldFByb3RvdHlwZU9mKHIpO3JldHVybiB0fShlKSkiZnVuY3Rpb24iPT10eXBlb2YgZVtyXSYmdC5wdXNoKHIpO3JldHVybiB0fWZ1bmN0aW9uIHRlKGUscil7bGV0IHQ9e307Zm9yKGNvbnN0IG4gb2YgZSl0W25dPSh0PT5mdW5jdGlvbigpe3ZhciBlPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywwKTtyZXR1cm4gcih0LGUpfSkobik7cmV0dXJuIHR9Y2xhc3MgcmV7Y29uc3RydWN0b3IoZSl7dGhpcy5leGVjdXRvcj1lLHRoaXMuX2RpZFJ1bj0hMX1nZXRWYWx1ZSgpe2lmKCF0aGlzLl9kaWRSdW4pdHJ5e3RoaXMuX3ZhbHVlPXRoaXMuZXhlY3V0b3IoKX1jYXRjaChlKXt0aGlzLl9lcnJvcj1lfWZpbmFsbHl7dGhpcy5fZGlkUnVuPSEwfWlmKHRoaXMuX2Vycm9yKXRocm93IHRoaXMuX2Vycm9yO3JldHVybiB0aGlzLl92YWx1ZX1nZXQgcmF3VmFsdWUoKXtyZXR1cm4gdGhpcy5fdmFsdWV9fWZ1bmN0aW9uIG5lKGUpe3JldHVybiBlLnJlcGxhY2UoL1tcXFx7XH1cKlwrXD9cfFxeXCRcLlxbXF1cKFwpXS9nLCJcXCQmIil9ZnVuY3Rpb24gaWUocixuLGk9MCxhPXIubGVuZ3RoLG89MCxzPW4ubGVuZ3RoKXtmb3IoO2k8YSYmbzxzO2krKyxvKyspe2xldCBlPXIuY2hhckNvZGVBdChpKSx0PW4uY2hhckNvZGVBdChvKTtpZihlIT09dCl7aWYoMTI4PD1lfHwxMjg8PXQpcmV0dXJuIGZ1bmN0aW9uKGUsdCxyPTAsbj1lLmxlbmd0aCxpPTAsYT10Lmxlbmd0aCl7Zm9yKDtyPG4mJmk8YTtyKyssaSsrKXt2YXIgbz1lLmNoYXJDb2RlQXQocikscz10LmNoYXJDb2RlQXQoaSk7aWYobzxzKXJldHVybi0xO2lmKHM8bylyZXR1cm4gMX12YXIgbD1uLXIsaD1hLWk7cmV0dXJuIGw8aD8tMTpoPGw/MTowfShyLnRvTG93ZXJDYXNlKCksbi50b0xvd2VyQ2FzZSgpLGksYSxvLHMpO2FlKGUpJiYoZS09MzIpLGFlKHQpJiYodC09MzIpO3ZhciBsPWUtdDtpZigwIT1sKXJldHVybiBsfX12YXIgZT1hLWksdD1zLW87cmV0dXJuIGU8dD8tMTp0PGU/MTowfWZ1bmN0aW9uIGFlKGUpe3JldHVybiA5Nzw9ZSYmZTw9MTIyfWZ1bmN0aW9uIG9lKGUpe3JldHVybiA2NTw9ZSYmZTw9OTB9ZnVuY3Rpb24gc2UoZSx0KXt2YXIgcj10Lmxlbmd0aDtyZXR1cm4hKHQubGVuZ3RoPmUubGVuZ3RoKSYmMD09PWllKGUsdCwwLHIpfWZ1bmN0aW9uIGxlKGUpe3JldHVybiA1NTI5Njw9ZSYmZTw9NTYzMTl9Y2xhc3MgaGV7Y29uc3RydWN0b3IoZSl7dGhpcy5jb25mdXNhYmxlRGljdGlvbmFyeT1lfXN0YXRpYyBnZXRJbnN0YW5jZShlKXtyZXR1cm4gaGUuY2FjaGUuZ2V0KEFycmF5LmZyb20oZSkpfXN0YXRpYyBnZXRMb2NhbGVzKCl7cmV0dXJuIGhlLl9sb2NhbGVzLmdldFZhbHVlKCl9aXNBbWJpZ3VvdXMoZSl7cmV0dXJuIHRoaXMuY29uZnVzYWJsZURpY3Rpb25hcnkuaGFzKGUpfWdldFByaW1hcnlDb25mdXNhYmxlKGUpe3JldHVybiB0aGlzLmNvbmZ1c2FibGVEaWN0aW9uYXJ5LmdldChlKX1nZXRDb25mdXNhYmxlQ29kZVBvaW50cygpe3JldHVybiBuZXcgU2V0KHRoaXMuY29uZnVzYWJsZURpY3Rpb25hcnkua2V5cygpKX19KEI9aGUpLmFtYmlndW91c0NoYXJhY3RlckRhdGE9bmV3IHJlKCgpPT5KU09OLnBhcnNlKCd7Il9jb21tb24iOls4MjMyLDMyLDgyMzMsMzIsNTc2MCwzMiw4MTkyLDMyLDgxOTMsMzIsODE5NCwzMiw4MTk1LDMyLDgxOTYsMzIsODE5NywzMiw4MTk4LDMyLDgyMDAsMzIsODIwMSwzMiw4MjAyLDMyLDgyODcsMzIsODE5OSwzMiw4MjM5LDMyLDIwNDIsOTUsNjUxMDEsOTUsNjUxMDIsOTUsNjUxMDMsOTUsODIwOCw0NSw4MjA5LDQ1LDgyMTAsNDUsNjUxMTIsNDUsMTc0OCw0NSw4MjU5LDQ1LDcyNyw0NSw4NzIyLDQ1LDEwMTM0LDQ1LDExNDUwLDQ1LDE1NDksNDQsMTY0Myw0NCw4MjE4LDQ0LDE4NCw0NCw0MjIzMyw0NCw4OTQsNTksMjMwNyw1OCwyNjkxLDU4LDE0MTcsNTgsMTc5NSw1OCwxNzk2LDU4LDU4NjgsNTgsNjUwNzIsNTgsNjE0Nyw1OCw2MTUzLDU4LDgyODIsNTgsMTQ3NSw1OCw3NjAsNTgsNDI4ODksNTgsODc1OCw1OCw3MjAsNTgsNDIyMzcsNTgsNDUxLDMzLDExNjAxLDMzLDY2MCw2Myw1NzcsNjMsMjQyOSw2Myw1MDM4LDYzLDQyNzMxLDYzLDExOTE0OSw0Niw4MjI4LDQ2LDE3OTMsNDYsMTc5NCw0Niw0MjUxMCw0Niw2ODE3Niw0NiwxNjMyLDQ2LDE3NzYsNDYsNDIyMzIsNDYsMTM3Myw5Niw2NTI4Nyw5Niw4MjE5LDk2LDgyNDIsOTYsMTM3MCw5NiwxNTIzLDk2LDgxNzUsOTYsNjUzNDQsOTYsOTAwLDk2LDgxODksOTYsODEyNSw5Niw4MTI3LDk2LDgxOTAsOTYsNjk3LDk2LDg4NCw5Niw3MTIsOTYsNzE0LDk2LDcxNSw5Niw3NTYsOTYsNjk5LDk2LDcwMSw5Niw3MDAsOTYsNzAyLDk2LDQyODkyLDk2LDE0OTcsOTYsMjAzNiw5NiwyMDM3LDk2LDUxOTQsOTYsNTgzNiw5Niw5NDAzMyw5Niw5NDAzNCw5Niw2NTMzOSw5MSwxMDA4OCw0MCwxMDA5OCw0MCwxMjMwOCw0MCw2NDgzMCw0MCw2NTM0MSw5MywxMDA4OSw0MSwxMDA5OSw0MSwxMjMwOSw0MSw2NDgzMSw0MSwxMDEwMCwxMjMsMTE5MDYwLDEyMywxMDEwMSwxMjUsNjUzNDIsOTQsODI3MCw0MiwxNjQ1LDQyLDg3MjcsNDIsNjYzMzUsNDIsNTk0MSw0Nyw4MjU3LDQ3LDg3MjUsNDcsODI2MCw0Nyw5NTg1LDQ3LDEwMTg3LDQ3LDEwNzQ0LDQ3LDExOTM1NCw0NywxMjc1NSw0NywxMjMzOSw0NywxMTQ2Miw0NywyMDAzMSw0NywxMjAzNSw0Nyw2NTM0MCw5Miw2NTEyOCw5Miw4NzI2LDkyLDEwMTg5LDkyLDEwNzQxLDkyLDEwNzQ1LDkyLDExOTMxMSw5MiwxMTkzNTUsOTIsMTI3NTYsOTIsMjAwMjIsOTIsMTIwMzQsOTIsNDI4NzIsMzgsNzA4LDk0LDcxMCw5NCw1ODY5LDQzLDEwMTMzLDQzLDY2MjAzLDQzLDgyNDksNjAsMTAwOTQsNjAsNzA2LDYwLDExOTM1MCw2MCw1MTc2LDYwLDU4MTAsNjAsNTEyMCw2MSwxMTg0MCw2MSwxMjQ0OCw2MSw0MjIzOSw2MSw4MjUwLDYyLDEwMDk1LDYyLDcwNyw2MiwxMTkzNTEsNjIsNTE3MSw2Miw5NDAxNSw2Miw4Mjc1LDEyNiw3MzIsMTI2LDgxMjgsMTI2LDg3NjQsMTI2LDY1MzcyLDEyNCw2NTI5Myw0NSwxMjA3ODQsNTAsMTIwNzk0LDUwLDEyMDgwNCw1MCwxMjA4MTQsNTAsMTIwODI0LDUwLDEzMDAzNCw1MCw0Mjg0Miw1MCw0MjMsNTAsMTAwMCw1MCw0MjU2NCw1MCw1MzExLDUwLDQyNzM1LDUwLDExOTMwMiw1MSwxMjA3ODUsNTEsMTIwNzk1LDUxLDEyMDgwNSw1MSwxMjA4MTUsNTEsMTIwODI1LDUxLDEzMDAzNSw1MSw0MjkyMyw1MSw1NDAsNTEsNDM5LDUxLDQyODU4LDUxLDExNDY4LDUxLDEyNDgsNTEsOTQwMTEsNTEsNzE4ODIsNTEsMTIwNzg2LDUyLDEyMDc5Niw1MiwxMjA4MDYsNTIsMTIwODE2LDUyLDEyMDgyNiw1MiwxMzAwMzYsNTIsNTA3MCw1Miw3MTg1NSw1MiwxMjA3ODcsNTMsMTIwNzk3LDUzLDEyMDgwNyw1MywxMjA4MTcsNTMsMTIwODI3LDUzLDEzMDAzNyw1Myw0NDQsNTMsNzE4NjcsNTMsMTIwNzg4LDU0LDEyMDc5OCw1NCwxMjA4MDgsNTQsMTIwODE4LDU0LDEyMDgyOCw1NCwxMzAwMzgsNTQsMTE0NzQsNTQsNTEwMiw1NCw3MTg5Myw1NCwxMTkzMTQsNTUsMTIwNzg5LDU1LDEyMDc5OSw1NSwxMjA4MDksNTUsMTIwODE5LDU1LDEyMDgyOSw1NSwxMzAwMzksNTUsNjY3NzAsNTUsNzE4NzgsNTUsMjgxOSw1NiwyNTM4LDU2LDI2NjYsNTYsMTI1MTMxLDU2LDEyMDc5MCw1NiwxMjA4MDAsNTYsMTIwODEwLDU2LDEyMDgyMCw1NiwxMjA4MzAsNTYsMTMwMDQwLDU2LDU0Nyw1Niw1NDYsNTYsNjYzMzAsNTYsMjY2Myw1NywyOTIwLDU3LDI1NDEsNTcsMzQzNyw1NywxMjA3OTEsNTcsMTIwODAxLDU3LDEyMDgxMSw1NywxMjA4MjEsNTcsMTIwODMxLDU3LDEzMDA0MSw1Nyw0Mjg2Miw1NywxMTQ2Niw1Nyw3MTg4NCw1Nyw3MTg1Miw1Nyw3MTg5NCw1Nyw5MDgyLDk3LDY1MzQ1LDk3LDExOTgzNCw5NywxMTk4ODYsOTcsMTE5OTM4LDk3LDExOTk5MCw5NywxMjAwNDIsOTcsMTIwMDk0LDk3LDEyMDE0Niw5NywxMjAxOTgsOTcsMTIwMjUwLDk3LDEyMDMwMiw5NywxMjAzNTQsOTcsMTIwNDA2LDk3LDEyMDQ1OCw5Nyw1OTMsOTcsOTQ1LDk3LDEyMDUxNCw5NywxMjA1NzIsOTcsMTIwNjMwLDk3LDEyMDY4OCw5NywxMjA3NDYsOTcsNjUzMTMsNjUsMTE5ODA4LDY1LDExOTg2MCw2NSwxMTk5MTIsNjUsMTE5OTY0LDY1LDEyMDAxNiw2NSwxMjAwNjgsNjUsMTIwMTIwLDY1LDEyMDE3Miw2NSwxMjAyMjQsNjUsMTIwMjc2LDY1LDEyMDMyOCw2NSwxMjAzODAsNjUsMTIwNDMyLDY1LDkxMyw2NSwxMjA0ODgsNjUsMTIwNTQ2LDY1LDEyMDYwNCw2NSwxMjA2NjIsNjUsMTIwNzIwLDY1LDUwMzQsNjUsNTU3Myw2NSw0MjIyMiw2NSw5NDAxNiw2NSw2NjIwOCw2NSwxMTk4MzUsOTgsMTE5ODg3LDk4LDExOTkzOSw5OCwxMTk5OTEsOTgsMTIwMDQzLDk4LDEyMDA5NSw5OCwxMjAxNDcsOTgsMTIwMTk5LDk4LDEyMDI1MSw5OCwxMjAzMDMsOTgsMTIwMzU1LDk4LDEyMDQwNyw5OCwxMjA0NTksOTgsMzg4LDk4LDUwNzEsOTgsNTIzNCw5OCw1NTUxLDk4LDY1MzE0LDY2LDg0OTIsNjYsMTE5ODA5LDY2LDExOTg2MSw2NiwxMTk5MTMsNjYsMTIwMDE3LDY2LDEyMDA2OSw2NiwxMjAxMjEsNjYsMTIwMTczLDY2LDEyMDIyNSw2NiwxMjAyNzcsNjYsMTIwMzI5LDY2LDEyMDM4MSw2NiwxMjA0MzMsNjYsNDI5MzIsNjYsOTE0LDY2LDEyMDQ4OSw2NiwxMjA1NDcsNjYsMTIwNjA1LDY2LDEyMDY2Myw2NiwxMjA3MjEsNjYsNTEwOCw2Niw1NjIzLDY2LDQyMTkyLDY2LDY2MTc4LDY2LDY2MjA5LDY2LDY2MzA1LDY2LDY1MzQ3LDk5LDg1NzMsOTksMTE5ODM2LDk5LDExOTg4OCw5OSwxMTk5NDAsOTksMTE5OTkyLDk5LDEyMDA0NCw5OSwxMjAwOTYsOTksMTIwMTQ4LDk5LDEyMDIwMCw5OSwxMjAyNTIsOTksMTIwMzA0LDk5LDEyMDM1Niw5OSwxMjA0MDgsOTksMTIwNDYwLDk5LDc0MjgsOTksMTAxMCw5OSwxMTQyOSw5OSw0Mzk1MSw5OSw2NjYyMSw5OSwxMjg4NDQsNjcsNzE5MjIsNjcsNzE5MTMsNjcsNjUzMTUsNjcsODU1Nyw2Nyw4NDUwLDY3LDg0OTMsNjcsMTE5ODEwLDY3LDExOTg2Miw2NywxMTk5MTQsNjcsMTE5OTY2LDY3LDEyMDAxOCw2NywxMjAxNzQsNjcsMTIwMjI2LDY3LDEyMDI3OCw2NywxMjAzMzAsNjcsMTIwMzgyLDY3LDEyMDQzNCw2NywxMDE3LDY3LDExNDI4LDY3LDUwODcsNjcsNDIyMDIsNjcsNjYyMTAsNjcsNjYzMDYsNjcsNjY1ODEsNjcsNjY4NDQsNjcsODU3NCwxMDAsODUxOCwxMDAsMTE5ODM3LDEwMCwxMTk4ODksMTAwLDExOTk0MSwxMDAsMTE5OTkzLDEwMCwxMjAwNDUsMTAwLDEyMDA5NywxMDAsMTIwMTQ5LDEwMCwxMjAyMDEsMTAwLDEyMDI1MywxMDAsMTIwMzA1LDEwMCwxMjAzNTcsMTAwLDEyMDQwOSwxMDAsMTIwNDYxLDEwMCwxMjgxLDEwMCw1MDk1LDEwMCw1MjMxLDEwMCw0MjE5NCwxMDAsODU1OCw2OCw4NTE3LDY4LDExOTgxMSw2OCwxMTk4NjMsNjgsMTE5OTE1LDY4LDExOTk2Nyw2OCwxMjAwMTksNjgsMTIwMDcxLDY4LDEyMDEyMyw2OCwxMjAxNzUsNjgsMTIwMjI3LDY4LDEyMDI3OSw2OCwxMjAzMzEsNjgsMTIwMzgzLDY4LDEyMDQzNSw2OCw1MDI0LDY4LDU1OTgsNjgsNTYxMCw2OCw0MjE5NSw2OCw4NDk0LDEwMSw2NTM0OSwxMDEsODQ5NSwxMDEsODUxOSwxMDEsMTE5ODM4LDEwMSwxMTk4OTAsMTAxLDExOTk0MiwxMDEsMTIwMDQ2LDEwMSwxMjAwOTgsMTAxLDEyMDE1MCwxMDEsMTIwMjAyLDEwMSwxMjAyNTQsMTAxLDEyMDMwNiwxMDEsMTIwMzU4LDEwMSwxMjA0MTAsMTAxLDEyMDQ2MiwxMDEsNDM4MjYsMTAxLDEyMTMsMTAxLDg5NTksNjksNjUzMTcsNjksODQ5Niw2OSwxMTk4MTIsNjksMTE5ODY0LDY5LDExOTkxNiw2OSwxMjAwMjAsNjksMTIwMDcyLDY5LDEyMDEyNCw2OSwxMjAxNzYsNjksMTIwMjI4LDY5LDEyMDI4MCw2OSwxMjAzMzIsNjksMTIwMzg0LDY5LDEyMDQzNiw2OSw5MTcsNjksMTIwNDkyLDY5LDEyMDU1MCw2OSwxMjA2MDgsNjksMTIwNjY2LDY5LDEyMDcyNCw2OSwxMTU3Nyw2OSw1MDM2LDY5LDQyMjI0LDY5LDcxODQ2LDY5LDcxODU0LDY5LDY2MTgyLDY5LDExOTgzOSwxMDIsMTE5ODkxLDEwMiwxMTk5NDMsMTAyLDExOTk5NSwxMDIsMTIwMDQ3LDEwMiwxMjAwOTksMTAyLDEyMDE1MSwxMDIsMTIwMjAzLDEwMiwxMjAyNTUsMTAyLDEyMDMwNywxMDIsMTIwMzU5LDEwMiwxMjA0MTEsMTAyLDEyMDQ2MywxMDIsNDM4MjksMTAyLDQyOTA1LDEwMiwzODMsMTAyLDc4MzcsMTAyLDE0MTIsMTAyLDExOTMxNSw3MCw4NDk3LDcwLDExOTgxMyw3MCwxMTk4NjUsNzAsMTE5OTE3LDcwLDEyMDAyMSw3MCwxMjAwNzMsNzAsMTIwMTI1LDcwLDEyMDE3Nyw3MCwxMjAyMjksNzAsMTIwMjgxLDcwLDEyMDMzMyw3MCwxMjAzODUsNzAsMTIwNDM3LDcwLDQyOTA0LDcwLDk4OCw3MCwxMjA3NzgsNzAsNTU1Niw3MCw0MjIwNSw3MCw3MTg3NCw3MCw3MTg0Miw3MCw2NjE4Myw3MCw2NjIxMyw3MCw2Njg1Myw3MCw2NTM1MSwxMDMsODQ1OCwxMDMsMTE5ODQwLDEwMywxMTk4OTIsMTAzLDExOTk0NCwxMDMsMTIwMDQ4LDEwMywxMjAxMDAsMTAzLDEyMDE1MiwxMDMsMTIwMjA0LDEwMywxMjAyNTYsMTAzLDEyMDMwOCwxMDMsMTIwMzYwLDEwMywxMjA0MTIsMTAzLDEyMDQ2NCwxMDMsNjA5LDEwMyw3NTU1LDEwMywzOTcsMTAzLDE0MDksMTAzLDExOTgxNCw3MSwxMTk4NjYsNzEsMTE5OTE4LDcxLDExOTk3MCw3MSwxMjAwMjIsNzEsMTIwMDc0LDcxLDEyMDEyNiw3MSwxMjAxNzgsNzEsMTIwMjMwLDcxLDEyMDI4Miw3MSwxMjAzMzQsNzEsMTIwMzg2LDcxLDEyMDQzOCw3MSwxMjkyLDcxLDUwNTYsNzEsNTEwNyw3MSw0MjE5OCw3MSw2NTM1MiwxMDQsODQ2MiwxMDQsMTE5ODQxLDEwNCwxMTk5NDUsMTA0LDExOTk5NywxMDQsMTIwMDQ5LDEwNCwxMjAxMDEsMTA0LDEyMDE1MywxMDQsMTIwMjA1LDEwNCwxMjAyNTcsMTA0LDEyMDMwOSwxMDQsMTIwMzYxLDEwNCwxMjA0MTMsMTA0LDEyMDQ2NSwxMDQsMTIxMSwxMDQsMTM5MiwxMDQsNTA1OCwxMDQsNjUzMjAsNzIsODQ1OSw3Miw4NDYwLDcyLDg0NjEsNzIsMTE5ODE1LDcyLDExOTg2Nyw3MiwxMTk5MTksNzIsMTIwMDIzLDcyLDEyMDE3OSw3MiwxMjAyMzEsNzIsMTIwMjgzLDcyLDEyMDMzNSw3MiwxMjAzODcsNzIsMTIwNDM5LDcyLDkxOSw3MiwxMjA0OTQsNzIsMTIwNTUyLDcyLDEyMDYxMCw3MiwxMjA2NjgsNzIsMTIwNzI2LDcyLDExNDA2LDcyLDUwNTEsNzIsNTUwMCw3Miw0MjIxNSw3Miw2NjI1NSw3Miw3MzEsMTA1LDkwNzUsMTA1LDY1MzUzLDEwNSw4NTYwLDEwNSw4NTA1LDEwNSw4NTIwLDEwNSwxMTk4NDIsMTA1LDExOTg5NCwxMDUsMTE5OTQ2LDEwNSwxMTk5OTgsMTA1LDEyMDA1MCwxMDUsMTIwMTAyLDEwNSwxMjAxNTQsMTA1LDEyMDIwNiwxMDUsMTIwMjU4LDEwNSwxMjAzMTAsMTA1LDEyMDM2MiwxMDUsMTIwNDE0LDEwNSwxMjA0NjYsMTA1LDEyMDQ4NCwxMDUsNjE4LDEwNSw2MTcsMTA1LDk1MywxMDUsODEyNiwxMDUsODkwLDEwNSwxMjA1MjIsMTA1LDEyMDU4MCwxMDUsMTIwNjM4LDEwNSwxMjA2OTYsMTA1LDEyMDc1NCwxMDUsMTExMCwxMDUsNDI1NjcsMTA1LDEyMzEsMTA1LDQzODkzLDEwNSw1MDI5LDEwNSw3MTg3NSwxMDUsNjUzNTQsMTA2LDg1MjEsMTA2LDExOTg0MywxMDYsMTE5ODk1LDEwNiwxMTk5NDcsMTA2LDExOTk5OSwxMDYsMTIwMDUxLDEwNiwxMjAxMDMsMTA2LDEyMDE1NSwxMDYsMTIwMjA3LDEwNiwxMjAyNTksMTA2LDEyMDMxMSwxMDYsMTIwMzYzLDEwNiwxMjA0MTUsMTA2LDEyMDQ2NywxMDYsMTAxMSwxMDYsMTExMiwxMDYsNjUzMjIsNzQsMTE5ODE3LDc0LDExOTg2OSw3NCwxMTk5MjEsNzQsMTE5OTczLDc0LDEyMDAyNSw3NCwxMjAwNzcsNzQsMTIwMTI5LDc0LDEyMDE4MSw3NCwxMjAyMzMsNzQsMTIwMjg1LDc0LDEyMDMzNyw3NCwxMjAzODksNzQsMTIwNDQxLDc0LDQyOTMwLDc0LDg5NSw3NCwxMDMyLDc0LDUwMzUsNzQsNTI2MSw3NCw0MjIwMSw3NCwxMTk4NDQsMTA3LDExOTg5NiwxMDcsMTE5OTQ4LDEwNywxMjAwMDAsMTA3LDEyMDA1MiwxMDcsMTIwMTA0LDEwNywxMjAxNTYsMTA3LDEyMDIwOCwxMDcsMTIwMjYwLDEwNywxMjAzMTIsMTA3LDEyMDM2NCwxMDcsMTIwNDE2LDEwNywxMjA0NjgsMTA3LDg0OTAsNzUsNjUzMjMsNzUsMTE5ODE4LDc1LDExOTg3MCw3NSwxMTk5MjIsNzUsMTE5OTc0LDc1LDEyMDAyNiw3NSwxMjAwNzgsNzUsMTIwMTMwLDc1LDEyMDE4Miw3NSwxMjAyMzQsNzUsMTIwMjg2LDc1LDEyMDMzOCw3NSwxMjAzOTAsNzUsMTIwNDQyLDc1LDkyMiw3NSwxMjA0OTcsNzUsMTIwNTU1LDc1LDEyMDYxMyw3NSwxMjA2NzEsNzUsMTIwNzI5LDc1LDExNDEyLDc1LDUwOTQsNzUsNTg0NSw3NSw0MjE5OSw3NSw2Njg0MCw3NSwxNDcyLDEwOCw4NzM5LDczLDkyMTMsNzMsNjU1MTIsNzMsMTYzMywxMDgsMTc3Nyw3Myw2NjMzNiwxMDgsMTI1MTI3LDEwOCwxMjA3ODMsNzMsMTIwNzkzLDczLDEyMDgwMyw3MywxMjA4MTMsNzMsMTIwODIzLDczLDEzMDAzMyw3Myw2NTMyMSw3Myw4NTQ0LDczLDg0NjQsNzMsODQ2NSw3MywxMTk4MTYsNzMsMTE5ODY4LDczLDExOTkyMCw3MywxMjAwMjQsNzMsMTIwMTI4LDczLDEyMDE4MCw3MywxMjAyMzIsNzMsMTIwMjg0LDczLDEyMDMzNiw3MywxMjAzODgsNzMsMTIwNDQwLDczLDY1MzU2LDEwOCw4NTcyLDczLDg0NjcsMTA4LDExOTg0NSwxMDgsMTE5ODk3LDEwOCwxMTk5NDksMTA4LDEyMDAwMSwxMDgsMTIwMDUzLDEwOCwxMjAxMDUsNzMsMTIwMTU3LDczLDEyMDIwOSw3MywxMjAyNjEsNzMsMTIwMzEzLDczLDEyMDM2NSw3MywxMjA0MTcsNzMsMTIwNDY5LDczLDQ0OCw3MywxMjA0OTYsNzMsMTIwNTU0LDczLDEyMDYxMiw3MywxMjA2NzAsNzMsMTIwNzI4LDczLDExNDEwLDczLDEwMzAsNzMsMTIxNiw3MywxNDkzLDEwOCwxNTAzLDEwOCwxNTc1LDEwOCwxMjY0NjQsMTA4LDEyNjU5MiwxMDgsNjUxNjYsMTA4LDY1MTY1LDEwOCwxOTk0LDEwOCwxMTU5OSw3Myw1ODI1LDczLDQyMjI2LDczLDkzOTkyLDczLDY2MTg2LDEyNCw2NjMxMywxMjQsMTE5MzM4LDc2LDg1NTYsNzYsODQ2Niw3NiwxMTk4MTksNzYsMTE5ODcxLDc2LDExOTkyMyw3NiwxMjAwMjcsNzYsMTIwMDc5LDc2LDEyMDEzMSw3NiwxMjAxODMsNzYsMTIwMjM1LDc2LDEyMDI4Nyw3NiwxMjAzMzksNzYsMTIwMzkxLDc2LDEyMDQ0Myw3NiwxMTQ3Miw3Niw1MDg2LDc2LDUyOTAsNzYsNDIyMDksNzYsOTM5NzQsNzYsNzE4NDMsNzYsNzE4NTgsNzYsNjY1ODcsNzYsNjY4NTQsNzYsNjUzMjUsNzcsODU1OSw3Nyw4NDk5LDc3LDExOTgyMCw3NywxMTk4NzIsNzcsMTE5OTI0LDc3LDEyMDAyOCw3NywxMjAwODAsNzcsMTIwMTMyLDc3LDEyMDE4NCw3NywxMjAyMzYsNzcsMTIwMjg4LDc3LDEyMDM0MCw3NywxMjAzOTIsNzcsMTIwNDQ0LDc3LDkyNCw3NywxMjA0OTksNzcsMTIwNTU3LDc3LDEyMDYxNSw3NywxMjA2NzMsNzcsMTIwNzMxLDc3LDEwMTgsNzcsMTE0MTYsNzcsNTA0Nyw3Nyw1NjE2LDc3LDU4NDYsNzcsNDIyMDcsNzcsNjYyMjQsNzcsNjYzMjEsNzcsMTE5ODQ3LDExMCwxMTk4OTksMTEwLDExOTk1MSwxMTAsMTIwMDAzLDExMCwxMjAwNTUsMTEwLDEyMDEwNywxMTAsMTIwMTU5LDExMCwxMjAyMTEsMTEwLDEyMDI2MywxMTAsMTIwMzE1LDExMCwxMjAzNjcsMTEwLDEyMDQxOSwxMTAsMTIwNDcxLDExMCwxNDAwLDExMCwxNDA0LDExMCw2NTMyNiw3OCw4NDY5LDc4LDExOTgyMSw3OCwxMTk4NzMsNzgsMTE5OTI1LDc4LDExOTk3Nyw3OCwxMjAwMjksNzgsMTIwMDgxLDc4LDEyMDE4NSw3OCwxMjAyMzcsNzgsMTIwMjg5LDc4LDEyMDM0MSw3OCwxMjAzOTMsNzgsMTIwNDQ1LDc4LDkyNSw3OCwxMjA1MDAsNzgsMTIwNTU4LDc4LDEyMDYxNiw3OCwxMjA2NzQsNzgsMTIwNzMyLDc4LDExNDE4LDc4LDQyMjA4LDc4LDY2ODM1LDc4LDMwNzQsMTExLDMyMDIsMTExLDMzMzAsMTExLDM0NTgsMTExLDI0MDYsMTExLDI2NjIsMTExLDI3OTAsMTExLDMwNDYsMTExLDMxNzQsMTExLDMzMDIsMTExLDM0MzAsMTExLDM2NjQsMTExLDM3OTIsMTExLDQxNjAsMTExLDE2MzcsMTExLDE3ODEsMTExLDY1MzU5LDExMSw4NTAwLDExMSwxMTk4NDgsMTExLDExOTkwMCwxMTEsMTE5OTUyLDExMSwxMjAwNTYsMTExLDEyMDEwOCwxMTEsMTIwMTYwLDExMSwxMjAyMTIsMTExLDEyMDI2NCwxMTEsMTIwMzE2LDExMSwxMjAzNjgsMTExLDEyMDQyMCwxMTEsMTIwNDcyLDExMSw3NDM5LDExMSw3NDQxLDExMSw0MzgzNywxMTEsOTU5LDExMSwxMjA1MjgsMTExLDEyMDU4NiwxMTEsMTIwNjQ0LDExMSwxMjA3MDIsMTExLDEyMDc2MCwxMTEsOTYzLDExMSwxMjA1MzIsMTExLDEyMDU5MCwxMTEsMTIwNjQ4LDExMSwxMjA3MDYsMTExLDEyMDc2NCwxMTEsMTE0MjMsMTExLDQzNTEsMTExLDE0MTMsMTExLDE1MDUsMTExLDE2MDcsMTExLDEyNjUwMCwxMTEsMTI2NTY0LDExMSwxMjY1OTYsMTExLDY1MjU5LDExMSw2NTI2MCwxMTEsNjUyNTgsMTExLDY1MjU3LDExMSwxNzI2LDExMSw2NDQyOCwxMTEsNjQ0MjksMTExLDY0NDI3LDExMSw2NDQyNiwxMTEsMTcyOSwxMTEsNjQ0MjQsMTExLDY0NDI1LDExMSw2NDQyMywxMTEsNjQ0MjIsMTExLDE3NDksMTExLDMzNjAsMTExLDQxMjUsMTExLDY2Nzk0LDExMSw3MTg4MCwxMTEsNzE4OTUsMTExLDY2NjA0LDExMSwxOTg0LDc5LDI1MzQsNzksMjkxOCw3OSwxMjI5NSw3OSw3MDg2NCw3OSw3MTkwNCw3OSwxMjA3ODIsNzksMTIwNzkyLDc5LDEyMDgwMiw3OSwxMjA4MTIsNzksMTIwODIyLDc5LDEzMDAzMiw3OSw2NTMyNyw3OSwxMTk4MjIsNzksMTE5ODc0LDc5LDExOTkyNiw3OSwxMTk5NzgsNzksMTIwMDMwLDc5LDEyMDA4Miw3OSwxMjAxMzQsNzksMTIwMTg2LDc5LDEyMDIzOCw3OSwxMjAyOTAsNzksMTIwMzQyLDc5LDEyMDM5NCw3OSwxMjA0NDYsNzksOTI3LDc5LDEyMDUwMiw3OSwxMjA1NjAsNzksMTIwNjE4LDc5LDEyMDY3Niw3OSwxMjA3MzQsNzksMTE0MjIsNzksMTM2NSw3OSwxMTYwNCw3OSw0ODE2LDc5LDI4NDgsNzksNjY3NTQsNzksNDIyMjcsNzksNzE4NjEsNzksNjYxOTQsNzksNjYyMTksNzksNjY1NjQsNzksNjY4MzgsNzksOTA3NiwxMTIsNjUzNjAsMTEyLDExOTg0OSwxMTIsMTE5OTAxLDExMiwxMTk5NTMsMTEyLDEyMDAwNSwxMTIsMTIwMDU3LDExMiwxMjAxMDksMTEyLDEyMDE2MSwxMTIsMTIwMjEzLDExMiwxMjAyNjUsMTEyLDEyMDMxNywxMTIsMTIwMzY5LDExMiwxMjA0MjEsMTEyLDEyMDQ3MywxMTIsOTYxLDExMiwxMjA1MzAsMTEyLDEyMDU0NCwxMTIsMTIwNTg4LDExMiwxMjA2MDIsMTEyLDEyMDY0NiwxMTIsMTIwNjYwLDExMiwxMjA3MDQsMTEyLDEyMDcxOCwxMTIsMTIwNzYyLDExMiwxMjA3NzYsMTEyLDExNDI3LDExMiw2NTMyOCw4MCw4NDczLDgwLDExOTgyMyw4MCwxMTk4NzUsODAsMTE5OTI3LDgwLDExOTk3OSw4MCwxMjAwMzEsODAsMTIwMDgzLDgwLDEyMDE4Nyw4MCwxMjAyMzksODAsMTIwMjkxLDgwLDEyMDM0Myw4MCwxMjAzOTUsODAsMTIwNDQ3LDgwLDkyOSw4MCwxMjA1MDQsODAsMTIwNTYyLDgwLDEyMDYyMCw4MCwxMjA2NzgsODAsMTIwNzM2LDgwLDExNDI2LDgwLDUwOTAsODAsNTIyOSw4MCw0MjE5Myw4MCw2NjE5Nyw4MCwxMTk4NTAsMTEzLDExOTkwMiwxMTMsMTE5OTU0LDExMywxMjAwMDYsMTEzLDEyMDA1OCwxMTMsMTIwMTEwLDExMywxMjAxNjIsMTEzLDEyMDIxNCwxMTMsMTIwMjY2LDExMywxMjAzMTgsMTEzLDEyMDM3MCwxMTMsMTIwNDIyLDExMywxMjA0NzQsMTEzLDEzMDcsMTEzLDEzNzksMTEzLDEzODIsMTEzLDg0NzQsODEsMTE5ODI0LDgxLDExOTg3Niw4MSwxMTk5MjgsODEsMTE5OTgwLDgxLDEyMDAzMiw4MSwxMjAwODQsODEsMTIwMTg4LDgxLDEyMDI0MCw4MSwxMjAyOTIsODEsMTIwMzQ0LDgxLDEyMDM5Niw4MSwxMjA0NDgsODEsMTE2MDUsODEsMTE5ODUxLDExNCwxMTk5MDMsMTE0LDExOTk1NSwxMTQsMTIwMDA3LDExNCwxMjAwNTksMTE0LDEyMDExMSwxMTQsMTIwMTYzLDExNCwxMjAyMTUsMTE0LDEyMDI2NywxMTQsMTIwMzE5LDExNCwxMjAzNzEsMTE0LDEyMDQyMywxMTQsMTIwNDc1LDExNCw0Mzg0NywxMTQsNDM4NDgsMTE0LDc0NjIsMTE0LDExMzk3LDExNCw0MzkwNSwxMTQsMTE5MzE4LDgyLDg0NzUsODIsODQ3Niw4Miw4NDc3LDgyLDExOTgyNSw4MiwxMTk4NzcsODIsMTE5OTI5LDgyLDEyMDAzMyw4MiwxMjAxODksODIsMTIwMjQxLDgyLDEyMDI5Myw4MiwxMjAzNDUsODIsMTIwMzk3LDgyLDEyMDQ0OSw4Miw0MjIsODIsNTAyNSw4Miw1MDc0LDgyLDY2NzQwLDgyLDU1MTEsODIsNDIyMTEsODIsOTQwMDUsODIsNjUzNjMsMTE1LDExOTg1MiwxMTUsMTE5OTA0LDExNSwxMTk5NTYsMTE1LDEyMDAwOCwxMTUsMTIwMDYwLDExNSwxMjAxMTIsMTE1LDEyMDE2NCwxMTUsMTIwMjE2LDExNSwxMjAyNjgsMTE1LDEyMDMyMCwxMTUsMTIwMzcyLDExNSwxMjA0MjQsMTE1LDEyMDQ3NiwxMTUsNDI4MDEsMTE1LDQ0NSwxMTUsMTEwOSwxMTUsNDM5NDYsMTE1LDcxODczLDExNSw2NjYzMiwxMTUsNjUzMzEsODMsMTE5ODI2LDgzLDExOTg3OCw4MywxMTk5MzAsODMsMTE5OTgyLDgzLDEyMDAzNCw4MywxMjAwODYsODMsMTIwMTM4LDgzLDEyMDE5MCw4MywxMjAyNDIsODMsMTIwMjk0LDgzLDEyMDM0Niw4MywxMjAzOTgsODMsMTIwNDUwLDgzLDEwMjksODMsMTM1OSw4Myw1MDc3LDgzLDUwODIsODMsNDIyMTAsODMsOTQwMTAsODMsNjYxOTgsODMsNjY1OTIsODMsMTE5ODUzLDExNiwxMTk5MDUsMTE2LDExOTk1NywxMTYsMTIwMDA5LDExNiwxMjAwNjEsMTE2LDEyMDExMywxMTYsMTIwMTY1LDExNiwxMjAyMTcsMTE2LDEyMDI2OSwxMTYsMTIwMzIxLDExNiwxMjAzNzMsMTE2LDEyMDQyNSwxMTYsMTIwNDc3LDExNiw4ODY4LDg0LDEwMjAxLDg0LDEyODg3Miw4NCw2NTMzMiw4NCwxMTk4MjcsODQsMTE5ODc5LDg0LDExOTkzMSw4NCwxMTk5ODMsODQsMTIwMDM1LDg0LDEyMDA4Nyw4NCwxMjAxMzksODQsMTIwMTkxLDg0LDEyMDI0Myw4NCwxMjAyOTUsODQsMTIwMzQ3LDg0LDEyMDM5OSw4NCwxMjA0NTEsODQsOTMyLDg0LDEyMDUwNyw4NCwxMjA1NjUsODQsMTIwNjIzLDg0LDEyMDY4MSw4NCwxMjA3MzksODQsMTE0MzAsODQsNTAyNiw4NCw0MjE5Niw4NCw5Mzk2Miw4NCw3MTg2OCw4NCw2NjE5OSw4NCw2NjIyNSw4NCw2NjMyNSw4NCwxMTk4NTQsMTE3LDExOTkwNiwxMTcsMTE5OTU4LDExNywxMjAwMTAsMTE3LDEyMDA2MiwxMTcsMTIwMTE0LDExNywxMjAxNjYsMTE3LDEyMDIxOCwxMTcsMTIwMjcwLDExNywxMjAzMjIsMTE3LDEyMDM3NCwxMTcsMTIwNDI2LDExNywxMjA0NzgsMTE3LDQyOTExLDExNyw3NDUyLDExNyw0Mzg1NCwxMTcsNDM4NTgsMTE3LDY1MSwxMTcsOTY1LDExNywxMjA1MzQsMTE3LDEyMDU5MiwxMTcsMTIwNjUwLDExNywxMjA3MDgsMTE3LDEyMDc2NiwxMTcsMTQwNSwxMTcsNjY4MDYsMTE3LDcxODk2LDExNyw4NzQ2LDg1LDg4OTksODUsMTE5ODI4LDg1LDExOTg4MCw4NSwxMTk5MzIsODUsMTE5OTg0LDg1LDEyMDAzNiw4NSwxMjAwODgsODUsMTIwMTQwLDg1LDEyMDE5Miw4NSwxMjAyNDQsODUsMTIwMjk2LDg1LDEyMDM0OCw4NSwxMjA0MDAsODUsMTIwNDUyLDg1LDEzNTcsODUsNDYwOCw4NSw2Njc2Niw4NSw1MTk2LDg1LDQyMjI4LDg1LDk0MDE4LDg1LDcxODY0LDg1LDg3NDQsMTE4LDg4OTcsMTE4LDY1MzY2LDExOCw4NTY0LDExOCwxMTk4NTUsMTE4LDExOTkwNywxMTgsMTE5OTU5LDExOCwxMjAwMTEsMTE4LDEyMDA2MywxMTgsMTIwMTE1LDExOCwxMjAxNjcsMTE4LDEyMDIxOSwxMTgsMTIwMjcxLDExOCwxMjAzMjMsMTE4LDEyMDM3NSwxMTgsMTIwNDI3LDExOCwxMjA0NzksMTE4LDc0NTYsMTE4LDk1NywxMTgsMTIwNTI2LDExOCwxMjA1ODQsMTE4LDEyMDY0MiwxMTgsMTIwNzAwLDExOCwxMjA3NTgsMTE4LDExNDEsMTE4LDE0OTYsMTE4LDcxNDMwLDExOCw0Mzk0NSwxMTgsNzE4NzIsMTE4LDExOTMwOSw4NiwxNjM5LDg2LDE3ODMsODYsODU0OCw4NiwxMTk4MjksODYsMTE5ODgxLDg2LDExOTkzMyw4NiwxMTk5ODUsODYsMTIwMDM3LDg2LDEyMDA4OSw4NiwxMjAxNDEsODYsMTIwMTkzLDg2LDEyMDI0NSw4NiwxMjAyOTcsODYsMTIwMzQ5LDg2LDEyMDQwMSw4NiwxMjA0NTMsODYsMTE0MCw4NiwxMTU3Niw4Niw1MDgxLDg2LDUxNjcsODYsNDI3MTksODYsNDIyMTQsODYsOTM5NjAsODYsNzE4NDAsODYsNjY4NDUsODYsNjIzLDExOSwxMTk4NTYsMTE5LDExOTkwOCwxMTksMTE5OTYwLDExOSwxMjAwMTIsMTE5LDEyMDA2NCwxMTksMTIwMTE2LDExOSwxMjAxNjgsMTE5LDEyMDIyMCwxMTksMTIwMjcyLDExOSwxMjAzMjQsMTE5LDEyMDM3NiwxMTksMTIwNDI4LDExOSwxMjA0ODAsMTE5LDc0NTcsMTE5LDExMjEsMTE5LDEzMDksMTE5LDEzNzcsMTE5LDcxNDM0LDExOSw3MTQzOCwxMTksNzE0MzksMTE5LDQzOTA3LDExOSw3MTkxOSw4Nyw3MTkxMCw4NywxMTk4MzAsODcsMTE5ODgyLDg3LDExOTkzNCw4NywxMTk5ODYsODcsMTIwMDM4LDg3LDEyMDA5MCw4NywxMjAxNDIsODcsMTIwMTk0LDg3LDEyMDI0Niw4NywxMjAyOTgsODcsMTIwMzUwLDg3LDEyMDQwMiw4NywxMjA0NTQsODcsMTMwOCw4Nyw1MDQzLDg3LDUwNzYsODcsNDIyMTgsODcsNTc0MiwxMjAsMTA1MzksMTIwLDEwNTQwLDEyMCwxMDc5OSwxMjAsNjUzNjgsMTIwLDg1NjksMTIwLDExOTg1NywxMjAsMTE5OTA5LDEyMCwxMTk5NjEsMTIwLDEyMDAxMywxMjAsMTIwMDY1LDEyMCwxMjAxMTcsMTIwLDEyMDE2OSwxMjAsMTIwMjIxLDEyMCwxMjAyNzMsMTIwLDEyMDMyNSwxMjAsMTIwMzc3LDEyMCwxMjA0MjksMTIwLDEyMDQ4MSwxMjAsNTQ0MSwxMjAsNTUwMSwxMjAsNTc0MSw4OCw5NTg3LDg4LDY2MzM4LDg4LDcxOTE2LDg4LDY1MzM2LDg4LDg1NTMsODgsMTE5ODMxLDg4LDExOTg4Myw4OCwxMTk5MzUsODgsMTE5OTg3LDg4LDEyMDAzOSw4OCwxMjAwOTEsODgsMTIwMTQzLDg4LDEyMDE5NSw4OCwxMjAyNDcsODgsMTIwMjk5LDg4LDEyMDM1MSw4OCwxMjA0MDMsODgsMTIwNDU1LDg4LDQyOTMxLDg4LDkzNSw4OCwxMjA1MTAsODgsMTIwNTY4LDg4LDEyMDYyNiw4OCwxMjA2ODQsODgsMTIwNzQyLDg4LDExNDM2LDg4LDExNjEzLDg4LDU4MTUsODgsNDIyMTksODgsNjYxOTIsODgsNjYyMjgsODgsNjYzMjcsODgsNjY4NTUsODgsNjExLDEyMSw3NTY0LDEyMSw2NTM2OSwxMjEsMTE5ODU4LDEyMSwxMTk5MTAsMTIxLDExOTk2MiwxMjEsMTIwMDE0LDEyMSwxMjAwNjYsMTIxLDEyMDExOCwxMjEsMTIwMTcwLDEyMSwxMjAyMjIsMTIxLDEyMDI3NCwxMjEsMTIwMzI2LDEyMSwxMjAzNzgsMTIxLDEyMDQzMCwxMjEsMTIwNDgyLDEyMSw2NTUsMTIxLDc5MzUsMTIxLDQzODY2LDEyMSw5NDcsMTIxLDg1MDksMTIxLDEyMDUxNiwxMjEsMTIwNTc0LDEyMSwxMjA2MzIsMTIxLDEyMDY5MCwxMjEsMTIwNzQ4LDEyMSwxMTk5LDEyMSw0MzI3LDEyMSw3MTkwMCwxMjEsNjUzMzcsODksMTE5ODMyLDg5LDExOTg4NCw4OSwxMTk5MzYsODksMTE5OTg4LDg5LDEyMDA0MCw4OSwxMjAwOTIsODksMTIwMTQ0LDg5LDEyMDE5Niw4OSwxMjAyNDgsODksMTIwMzAwLDg5LDEyMDM1Miw4OSwxMjA0MDQsODksMTIwNDU2LDg5LDkzMyw4OSw5NzgsODksMTIwNTA4LDg5LDEyMDU2Niw4OSwxMjA2MjQsODksMTIwNjgyLDg5LDEyMDc0MCw4OSwxMTQzMiw4OSwxMTk4LDg5LDUwMzMsODksNTA1Myw4OSw0MjIyMCw4OSw5NDAxOSw4OSw3MTg0NCw4OSw2NjIyNiw4OSwxMTk4NTksMTIyLDExOTkxMSwxMjIsMTE5OTYzLDEyMiwxMjAwMTUsMTIyLDEyMDA2NywxMjIsMTIwMTE5LDEyMiwxMjAxNzEsMTIyLDEyMDIyMywxMjIsMTIwMjc1LDEyMiwxMjAzMjcsMTIyLDEyMDM3OSwxMjIsMTIwNDMxLDEyMiwxMjA0ODMsMTIyLDc0NTgsMTIyLDQzOTIzLDEyMiw3MTg3NiwxMjIsNjYyOTMsOTAsNzE5MDksOTAsNjUzMzgsOTAsODQ4NCw5MCw4NDg4LDkwLDExOTgzMyw5MCwxMTk4ODUsOTAsMTE5OTM3LDkwLDExOTk4OSw5MCwxMjAwNDEsOTAsMTIwMTk3LDkwLDEyMDI0OSw5MCwxMjAzMDEsOTAsMTIwMzUzLDkwLDEyMDQwNSw5MCwxMjA0NTcsOTAsOTE4LDkwLDEyMDQ5Myw5MCwxMjA1NTEsOTAsMTIwNjA5LDkwLDEyMDY2Nyw5MCwxMjA3MjUsOTAsNTA1OSw5MCw0MjIwNCw5MCw3MTg0OSw5MCw2NTI4MiwzNCw2NTI4NCwzNiw2NTI4NSwzNyw2NTI4NiwzOCw2NTI5MCw0Miw2NTI5MSw0Myw2NTI5NCw0Niw2NTI5NSw0Nyw2NTI5Niw0OCw2NTI5Nyw0OSw2NTI5OCw1MCw2NTI5OSw1MSw2NTMwMCw1Miw2NTMwMSw1Myw2NTMwMiw1NCw2NTMwMyw1NSw2NTMwNCw1Niw2NTMwNSw1Nyw2NTMwOCw2MCw2NTMwOSw2MSw2NTMxMCw2Miw2NTMxMiw2NCw2NTMxNiw2OCw2NTMxOCw3MCw2NTMxOSw3MSw2NTMyNCw3Niw2NTMyOSw4MSw2NTMzMCw4Miw2NTMzMyw4NSw2NTMzNCw4Niw2NTMzNSw4Nyw2NTM0Myw5NSw2NTM0Niw5OCw2NTM0OCwxMDAsNjUzNTAsMTAyLDY1MzU1LDEwNyw2NTM1NywxMDksNjUzNTgsMTEwLDY1MzYxLDExMyw2NTM2MiwxMTQsNjUzNjQsMTE2LDY1MzY1LDExNyw2NTM2NywxMTksNjUzNzAsMTIyLDY1MzcxLDEyMyw2NTM3MywxMjVdLCJfZGVmYXVsdCI6WzE2MCwzMiw4MjExLDQ1LDY1Mzc0LDEyNiw2NTMwNiw1OCw2NTI4MSwzMyw4MjE2LDk2LDgyMTcsOTYsODI0NSw5NiwxODAsOTYsMTI0OTQsNDcsMTA0Nyw1MSwxMDczLDU0LDEwNzIsOTcsMTA0MCw2NSwxMDY4LDk4LDEwNDIsNjYsMTA4OSw5OSwxMDU3LDY3LDEwNzcsMTAxLDEwNDUsNjksMTA1Myw3MiwzMDUsMTA1LDEwNTAsNzUsOTIxLDczLDEwNTIsNzcsMTA4NiwxMTEsMTA1NCw3OSwxMDA5LDExMiwxMDg4LDExMiwxMDU2LDgwLDEwNzUsMTE0LDEwNTgsODQsMjE1LDEyMCwxMDkzLDEyMCwxMDYxLDg4LDEwOTEsMTIxLDEwNTksODksNjUyODMsMzUsNjUyODgsNDAsNjUyODksNDEsNjUyOTIsNDQsNjUzMDcsNTksNjUzMTEsNjNdLCJjcyI6WzY1Mzc0LDEyNiw2NTMwNiw1OCw2NTI4MSwzMyw4MjE2LDk2LDgyMTcsOTYsODI0NSw5NiwxODAsOTYsMTI0OTQsNDcsMTA0Nyw1MSwxMDczLDU0LDEwNzIsOTcsMTA0MCw2NSwxMDY4LDk4LDEwNDIsNjYsMTA4OSw5OSwxMDU3LDY3LDEwNzcsMTAxLDEwNDUsNjksMTA1Myw3MiwzMDUsMTA1LDEwNTAsNzUsOTIxLDczLDEwNTIsNzcsMTA4NiwxMTEsMTA1NCw3OSwxMDA5LDExMiwxMDg4LDExMiwxMDU2LDgwLDEwNzUsMTE0LDEwNTgsODQsMTA5MywxMjAsMTA2MSw4OCwxMDkxLDEyMSwxMDU5LDg5LDY1MjgzLDM1LDY1Mjg4LDQwLDY1Mjg5LDQxLDY1MjkyLDQ0LDY1MzA3LDU5LDY1MzExLDYzXSwiZGUiOls2NTM3NCwxMjYsNjUzMDYsNTgsNjUyODEsMzMsODIxNiw5Niw4MjE3LDk2LDgyNDUsOTYsMTgwLDk2LDEyNDk0LDQ3LDEwNDcsNTEsMTA3Myw1NCwxMDcyLDk3LDEwNDAsNjUsMTA2OCw5OCwxMDQyLDY2LDEwODksOTksMTA1Nyw2NywxMDc3LDEwMSwxMDQ1LDY5LDEwNTMsNzIsMzA1LDEwNSwxMDUwLDc1LDkyMSw3MywxMDUyLDc3LDEwODYsMTExLDEwNTQsNzksMTAwOSwxMTIsMTA4OCwxMTIsMTA1Niw4MCwxMDc1LDExNCwxMDU4LDg0LDEwOTMsMTIwLDEwNjEsODgsMTA5MSwxMjEsMTA1OSw4OSw2NTI4MywzNSw2NTI4OCw0MCw2NTI4OSw0MSw2NTI5Miw0NCw2NTMwNyw1OSw2NTMxMSw2M10sImVzIjpbODIxMSw0NSw2NTM3NCwxMjYsNjUzMDYsNTgsNjUyODEsMzMsODI0NSw5NiwxODAsOTYsMTI0OTQsNDcsMTA0Nyw1MSwxMDczLDU0LDEwNzIsOTcsMTA0MCw2NSwxMDY4LDk4LDEwNDIsNjYsMTA4OSw5OSwxMDU3LDY3LDEwNzcsMTAxLDEwNDUsNjksMTA1Myw3MiwzMDUsMTA1LDEwNTAsNzUsMTA1Miw3NywxMDg2LDExMSwxMDU0LDc5LDEwMDksMTEyLDEwODgsMTEyLDEwNTYsODAsMTA3NSwxMTQsMTA1OCw4NCwyMTUsMTIwLDEwOTMsMTIwLDEwNjEsODgsMTA5MSwxMjEsMTA1OSw4OSw2NTI4MywzNSw2NTI4OCw0MCw2NTI4OSw0MSw2NTI5Miw0NCw2NTMwNyw1OSw2NTMxMSw2M10sImZyIjpbNjUzNzQsMTI2LDY1MzA2LDU4LDY1MjgxLDMzLDgyMTYsOTYsODI0NSw5NiwxMjQ5NCw0NywxMDQ3LDUxLDEwNzMsNTQsMTA3Miw5NywxMDQwLDY1LDEwNjgsOTgsMTA0Miw2NiwxMDg5LDk5LDEwNTcsNjcsMTA3NywxMDEsMTA0NSw2OSwxMDUzLDcyLDMwNSwxMDUsMTA1MCw3NSw5MjEsNzMsMTA1Miw3NywxMDg2LDExMSwxMDU0LDc5LDEwMDksMTEyLDEwODgsMTEyLDEwNTYsODAsMTA3NSwxMTQsMTA1OCw4NCwyMTUsMTIwLDEwOTMsMTIwLDEwNjEsODgsMTA5MSwxMjEsMTA1OSw4OSw2NTI4MywzNSw2NTI4OCw0MCw2NTI4OSw0MSw2NTI5Miw0NCw2NTMwNyw1OSw2NTMxMSw2M10sIml0IjpbMTYwLDMyLDgyMTEsNDUsNjUzNzQsMTI2LDY1MzA2LDU4LDY1MjgxLDMzLDgyMTYsOTYsODI0NSw5NiwxODAsOTYsMTI0OTQsNDcsMTA0Nyw1MSwxMDczLDU0LDEwNzIsOTcsMTA0MCw2NSwxMDY4LDk4LDEwNDIsNjYsMTA4OSw5OSwxMDU3LDY3LDEwNzcsMTAxLDEwNDUsNjksMTA1Myw3MiwzMDUsMTA1LDEwNTAsNzUsOTIxLDczLDEwNTIsNzcsMTA4NiwxMTEsMTA1NCw3OSwxMDA5LDExMiwxMDg4LDExMiwxMDU2LDgwLDEwNzUsMTE0LDEwNTgsODQsMjE1LDEyMCwxMDkzLDEyMCwxMDYxLDg4LDEwOTEsMTIxLDEwNTksODksNjUyODMsMzUsNjUyODgsNDAsNjUyODksNDEsNjUyOTIsNDQsNjUzMDcsNTksNjUzMTEsNjNdLCJqYSI6WzgyMTEsNDUsNjUzMDYsNTgsNjUyODEsMzMsODIxNiw5Niw4MjE3LDk2LDgyNDUsOTYsMTgwLDk2LDEwNDcsNTEsMTA3Myw1NCwxMDcyLDk3LDEwNDAsNjUsMTA2OCw5OCwxMDQyLDY2LDEwODksOTksMTA1Nyw2NywxMDc3LDEwMSwxMDQ1LDY5LDEwNTMsNzIsMzA1LDEwNSwxMDUwLDc1LDkyMSw3MywxMDUyLDc3LDEwODYsMTExLDEwNTQsNzksMTAwOSwxMTIsMTA4OCwxMTIsMTA1Niw4MCwxMDc1LDExNCwxMDU4LDg0LDIxNSwxMjAsMTA5MywxMjAsMTA2MSw4OCwxMDkxLDEyMSwxMDU5LDg5LDY1MjgzLDM1LDY1MjkyLDQ0LDY1MzA3LDU5XSwia28iOls4MjExLDQ1LDY1Mzc0LDEyNiw2NTMwNiw1OCw2NTI4MSwzMyw4MjQ1LDk2LDE4MCw5NiwxMjQ5NCw0NywxMDQ3LDUxLDEwNzMsNTQsMTA3Miw5NywxMDQwLDY1LDEwNjgsOTgsMTA0Miw2NiwxMDg5LDk5LDEwNTcsNjcsMTA3NywxMDEsMTA0NSw2OSwxMDUzLDcyLDMwNSwxMDUsMTA1MCw3NSw5MjEsNzMsMTA1Miw3NywxMDg2LDExMSwxMDU0LDc5LDEwMDksMTEyLDEwODgsMTEyLDEwNTYsODAsMTA3NSwxMTQsMTA1OCw4NCwyMTUsMTIwLDEwOTMsMTIwLDEwNjEsODgsMTA5MSwxMjEsMTA1OSw4OSw2NTI4MywzNSw2NTI4OCw0MCw2NTI4OSw0MSw2NTI5Miw0NCw2NTMwNyw1OSw2NTMxMSw2M10sInBsIjpbNjUzNzQsMTI2LDY1MzA2LDU4LDY1MjgxLDMzLDgyMTYsOTYsODIxNyw5Niw4MjQ1LDk2LDE4MCw5NiwxMjQ5NCw0NywxMDQ3LDUxLDEwNzMsNTQsMTA3Miw5NywxMDQwLDY1LDEwNjgsOTgsMTA0Miw2NiwxMDg5LDk5LDEwNTcsNjcsMTA3NywxMDEsMTA0NSw2OSwxMDUzLDcyLDMwNSwxMDUsMTA1MCw3NSw5MjEsNzMsMTA1Miw3NywxMDg2LDExMSwxMDU0LDc5LDEwMDksMTEyLDEwODgsMTEyLDEwNTYsODAsMTA3NSwxMTQsMTA1OCw4NCwyMTUsMTIwLDEwOTMsMTIwLDEwNjEsODgsMTA5MSwxMjEsMTA1OSw4OSw2NTI4MywzNSw2NTI4OCw0MCw2NTI4OSw0MSw2NTI5Miw0NCw2NTMwNyw1OSw2NTMxMSw2M10sInB0LUJSIjpbNjUzNzQsMTI2LDY1MzA2LDU4LDY1MjgxLDMzLDgyMTYsOTYsODIxNyw5Niw4MjQ1LDk2LDE4MCw5NiwxMjQ5NCw0NywxMDQ3LDUxLDEwNzMsNTQsMTA3Miw5NywxMDQwLDY1LDEwNjgsOTgsMTA0Miw2NiwxMDg5LDk5LDEwNTcsNjcsMTA3NywxMDEsMTA0NSw2OSwxMDUzLDcyLDMwNSwxMDUsMTA1MCw3NSw5MjEsNzMsMTA1Miw3NywxMDg2LDExMSwxMDU0LDc5LDEwMDksMTEyLDEwODgsMTEyLDEwNTYsODAsMTA3NSwxMTQsMTA1OCw4NCwyMTUsMTIwLDEwOTMsMTIwLDEwNjEsODgsMTA5MSwxMjEsMTA1OSw4OSw2NTI4MywzNSw2NTI4OCw0MCw2NTI4OSw0MSw2NTI5Miw0NCw2NTMwNyw1OSw2NTMxMSw2M10sInFwcy1wbG9jIjpbMTYwLDMyLDgyMTEsNDUsNjUzNzQsMTI2LDY1MzA2LDU4LDY1MjgxLDMzLDgyMTYsOTYsODIxNyw5Niw4MjQ1LDk2LDE4MCw5NiwxMjQ5NCw0NywxMDQ3LDUxLDEwNzMsNTQsMTA3Miw5NywxMDQwLDY1LDEwNjgsOTgsMTA0Miw2NiwxMDg5LDk5LDEwNTcsNjcsMTA3NywxMDEsMTA0NSw2OSwxMDUzLDcyLDMwNSwxMDUsMTA1MCw3NSw5MjEsNzMsMTA1Miw3NywxMDg2LDExMSwxMDU0LDc5LDEwODgsMTEyLDEwNTYsODAsMTA3NSwxMTQsMTA1OCw4NCwyMTUsMTIwLDEwOTMsMTIwLDEwNjEsODgsMTA5MSwxMjEsMTA1OSw4OSw2NTI4MywzNSw2NTI4OCw0MCw2NTI4OSw0MSw2NTI5Miw0NCw2NTMwNyw1OSw2NTMxMSw2M10sInJ1IjpbNjUzNzQsMTI2LDY1MzA2LDU4LDY1MjgxLDMzLDgyMTYsOTYsODIxNyw5Niw4MjQ1LDk2LDE4MCw5NiwxMjQ5NCw0NywzMDUsMTA1LDkyMSw3MywxMDA5LDExMiwyMTUsMTIwLDY1MjgzLDM1LDY1Mjg4LDQwLDY1Mjg5LDQxLDY1MjkyLDQ0LDY1MzA3LDU5LDY1MzExLDYzXSwidHIiOlsxNjAsMzIsODIxMSw0NSw2NTM3NCwxMjYsNjUzMDYsNTgsNjUyODEsMzMsODI0NSw5NiwxODAsOTYsMTI0OTQsNDcsMTA0Nyw1MSwxMDczLDU0LDEwNzIsOTcsMTA0MCw2NSwxMDY4LDk4LDEwNDIsNjYsMTA4OSw5OSwxMDU3LDY3LDEwNzcsMTAxLDEwNDUsNjksMTA1Myw3MiwxMDUwLDc1LDkyMSw3MywxMDUyLDc3LDEwODYsMTExLDEwNTQsNzksMTAwOSwxMTIsMTA4OCwxMTIsMTA1Niw4MCwxMDc1LDExNCwxMDU4LDg0LDIxNSwxMjAsMTA5MywxMjAsMTA2MSw4OCwxMDkxLDEyMSwxMDU5LDg5LDY1MjgzLDM1LDY1Mjg4LDQwLDY1Mjg5LDQxLDY1MjkyLDQ0LDY1MzA3LDU5LDY1MzExLDYzXSwiemgtaGFucyI6WzY1Mzc0LDEyNiw2NTMwNiw1OCw2NTI4MSwzMyw4MjQ1LDk2LDE4MCw5NiwxMjQ5NCw0NywxMDQ3LDUxLDEwNzMsNTQsMTA3Miw5NywxMDQwLDY1LDEwNjgsOTgsMTA0Miw2NiwxMDg5LDk5LDEwNTcsNjcsMTA3NywxMDEsMTA0NSw2OSwxMDUzLDcyLDMwNSwxMDUsMTA1MCw3NSw5MjEsNzMsMTA1Miw3NywxMDg2LDExMSwxMDU0LDc5LDEwMDksMTEyLDEwODgsMTEyLDEwNTYsODAsMTA3NSwxMTQsMTA1OCw4NCwyMTUsMTIwLDEwOTMsMTIwLDEwNjEsODgsMTA5MSwxMjEsMTA1OSw4OSw2NTI4OCw0MCw2NTI4OSw0MV0sInpoLWhhbnQiOls4MjExLDQ1LDY1Mzc0LDEyNiwxODAsOTYsMTI0OTQsNDcsMTA0Nyw1MSwxMDczLDU0LDEwNzIsOTcsMTA0MCw2NSwxMDY4LDk4LDEwNDIsNjYsMTA4OSw5OSwxMDU3LDY3LDEwNzcsMTAxLDEwNDUsNjksMTA1Myw3MiwzMDUsMTA1LDEwNTAsNzUsOTIxLDczLDEwNTIsNzcsMTA4NiwxMTEsMTA1NCw3OSwxMDA5LDExMiwxMDg4LDExMiwxMDU2LDgwLDEwNzUsMTE0LDEwNTgsODQsMjE1LDEyMCwxMDkzLDEyMCwxMDYxLDg4LDEwOTEsMTIxLDEwNTksODksNjUyODMsMzUsNjUzMDcsNTldfScpKSxoZS5jYWNoZT1uZXcgY2xhc3N7Y29uc3RydWN0b3IoZSl7dGhpcy5jb21wdXRlRm49ZSx0aGlzLmxhc3RDYWNoZT12b2lkIDAsdGhpcy5sYXN0QXJnS2V5PXZvaWQgMH1nZXQoZSl7dmFyIHQ9SlNPTi5zdHJpbmdpZnkoZSk7cmV0dXJuIHRoaXMubGFzdEFyZ0tleSE9PXQmJih0aGlzLmxhc3RBcmdLZXk9dCx0aGlzLmxhc3RDYWNoZT10aGlzLmNvbXB1dGVGbihlKSksdGhpcy5sYXN0Q2FjaGV9fShlPT57ZnVuY3Rpb24gdCh0KXtjb25zdCByPW5ldyBNYXA7Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKz0yKXIuc2V0KHRbZV0sdFtlKzFdKTtyZXR1cm4gcn1jb25zdCByPUIuYW1iaWd1b3VzQ2hhcmFjdGVyRGF0YS5nZXRWYWx1ZSgpO2xldCBuPWUuZmlsdGVyKGU9PiFlLnN0YXJ0c1dpdGgoIl8iKSYmZSBpbiByKSxpPXZvaWQgMDtmb3IoY29uc3QgbyBvZiBuPTA9PT1uLmxlbmd0aD9bIl9kZWZhdWx0Il06bil7Y29uc3QgYT10KHJbb10pO2k9ZnVuY3Rpb24oZSx0KXtpZighZSlyZXR1cm4gdDtjb25zdCByPW5ldyBNYXA7Zm9yKHZhcltuLGldb2YgZSl0LmhhcyhuKSYmci5zZXQobixpKTtyZXR1cm4gcn0oaSxhKX1jb25zdCBhPWZ1bmN0aW9uKGUsdCl7Y29uc3Qgcj1uZXcgTWFwKGUpO2Zvcih2YXJbbixpXW9mIHQpci5zZXQobixpKTtyZXR1cm4gcn0odChyLl9jb21tb24pLGkpO3JldHVybiBuZXcgaGUoYSl9KSxoZS5fbG9jYWxlcz1uZXcgcmUoKCk9Pk9iamVjdC5rZXlzKGhlLmFtYmlndW91c0NoYXJhY3RlckRhdGEuZ2V0VmFsdWUoKSkuZmlsdGVyKGU9PiFlLnN0YXJ0c1dpdGgoIl8iKSkpO2NsYXNzIHVle3N0YXRpYyBnZXRSYXdEYXRhKCl7cmV0dXJuIEpTT04ucGFyc2UoIls5LDEwLDExLDEyLDEzLDMyLDEyNywxNjAsMTczLDg0NywxNTY0LDQ0NDcsNDQ0OCw2MDY4LDYwNjksNjE1NSw2MTU2LDYxNTcsNjE1OCw3MzU1LDczNTYsODE5Miw4MTkzLDgxOTQsODE5NSw4MTk2LDgxOTcsODE5OCw4MTk5LDgyMDAsODIwMSw4MjAyLDgyMDMsODIwNCw4MjA1LDgyMDYsODIwNyw4MjM0LDgyMzUsODIzNiw4MjM3LDgyMzgsODIzOSw4Mjg3LDgyODgsODI4OSw4MjkwLDgyOTEsODI5Miw4MjkzLDgyOTQsODI5NSw4Mjk2LDgyOTcsODI5OCw4Mjk5LDgzMDAsODMwMSw4MzAyLDgzMDMsMTAyNDAsMTIyODgsMTI2NDQsNjUwMjQsNjUwMjUsNjUwMjYsNjUwMjcsNjUwMjgsNjUwMjksNjUwMzAsNjUwMzEsNjUwMzIsNjUwMzMsNjUwMzQsNjUwMzUsNjUwMzYsNjUwMzcsNjUwMzgsNjUwMzksNjUyNzksNjU0NDAsNjU1MjAsNjU1MjEsNjU1MjIsNjU1MjMsNjU1MjQsNjU1MjUsNjU1MjYsNjU1MjcsNjU1MjgsNjU1MzIsNzg4NDQsMTE5MTU1LDExOTE1NiwxMTkxNTcsMTE5MTU4LDExOTE1OSwxMTkxNjAsMTE5MTYxLDExOTE2Miw5MTc1MDQsOTE3NTA1LDkxNzUwNiw5MTc1MDcsOTE3NTA4LDkxNzUwOSw5MTc1MTAsOTE3NTExLDkxNzUxMiw5MTc1MTMsOTE3NTE0LDkxNzUxNSw5MTc1MTYsOTE3NTE3LDkxNzUxOCw5MTc1MTksOTE3NTIwLDkxNzUyMSw5MTc1MjIsOTE3NTIzLDkxNzUyNCw5MTc1MjUsOTE3NTI2LDkxNzUyNyw5MTc1MjgsOTE3NTI5LDkxNzUzMCw5MTc1MzEsOTE3NTMyLDkxNzUzMyw5MTc1MzQsOTE3NTM1LDkxNzUzNiw5MTc1MzcsOTE3NTM4LDkxNzUzOSw5MTc1NDAsOTE3NTQxLDkxNzU0Miw5MTc1NDMsOTE3NTQ0LDkxNzU0NSw5MTc1NDYsOTE3NTQ3LDkxNzU0OCw5MTc1NDksOTE3NTUwLDkxNzU1MSw5MTc1NTIsOTE3NTUzLDkxNzU1NCw5MTc1NTUsOTE3NTU2LDkxNzU1Nyw5MTc1NTgsOTE3NTU5LDkxNzU2MCw5MTc1NjEsOTE3NTYyLDkxNzU2Myw5MTc1NjQsOTE3NTY1LDkxNzU2Niw5MTc1NjcsOTE3NTY4LDkxNzU2OSw5MTc1NzAsOTE3NTcxLDkxNzU3Miw5MTc1NzMsOTE3NTc0LDkxNzU3NSw5MTc1NzYsOTE3NTc3LDkxNzU3OCw5MTc1NzksOTE3NTgwLDkxNzU4MSw5MTc1ODIsOTE3NTgzLDkxNzU4NCw5MTc1ODUsOTE3NTg2LDkxNzU4Nyw5MTc1ODgsOTE3NTg5LDkxNzU5MCw5MTc1OTEsOTE3NTkyLDkxNzU5Myw5MTc1OTQsOTE3NTk1LDkxNzU5Niw5MTc1OTcsOTE3NTk4LDkxNzU5OSw5MTc2MDAsOTE3NjAxLDkxNzYwMiw5MTc2MDMsOTE3NjA0LDkxNzYwNSw5MTc2MDYsOTE3NjA3LDkxNzYwOCw5MTc2MDksOTE3NjEwLDkxNzYxMSw5MTc2MTIsOTE3NjEzLDkxNzYxNCw5MTc2MTUsOTE3NjE2LDkxNzYxNyw5MTc2MTgsOTE3NjE5LDkxNzYyMCw5MTc2MjEsOTE3NjIyLDkxNzYyMyw5MTc2MjQsOTE3NjI1LDkxNzYyNiw5MTc2MjcsOTE3NjI4LDkxNzYyOSw5MTc2MzAsOTE3NjMxLDkxNzc2MCw5MTc3NjEsOTE3NzYyLDkxNzc2Myw5MTc3NjQsOTE3NzY1LDkxNzc2Niw5MTc3NjcsOTE3NzY4LDkxNzc2OSw5MTc3NzAsOTE3NzcxLDkxNzc3Miw5MTc3NzMsOTE3Nzc0LDkxNzc3NSw5MTc3NzYsOTE3Nzc3LDkxNzc3OCw5MTc3NzksOTE3NzgwLDkxNzc4MSw5MTc3ODIsOTE3NzgzLDkxNzc4NCw5MTc3ODUsOTE3Nzg2LDkxNzc4Nyw5MTc3ODgsOTE3Nzg5LDkxNzc5MCw5MTc3OTEsOTE3NzkyLDkxNzc5Myw5MTc3OTQsOTE3Nzk1LDkxNzc5Niw5MTc3OTcsOTE3Nzk4LDkxNzc5OSw5MTc4MDAsOTE3ODAxLDkxNzgwMiw5MTc4MDMsOTE3ODA0LDkxNzgwNSw5MTc4MDYsOTE3ODA3LDkxNzgwOCw5MTc4MDksOTE3ODEwLDkxNzgxMSw5MTc4MTIsOTE3ODEzLDkxNzgxNCw5MTc4MTUsOTE3ODE2LDkxNzgxNyw5MTc4MTgsOTE3ODE5LDkxNzgyMCw5MTc4MjEsOTE3ODIyLDkxNzgyMyw5MTc4MjQsOTE3ODI1LDkxNzgyNiw5MTc4MjcsOTE3ODI4LDkxNzgyOSw5MTc4MzAsOTE3ODMxLDkxNzgzMiw5MTc4MzMsOTE3ODM0LDkxNzgzNSw5MTc4MzYsOTE3ODM3LDkxNzgzOCw5MTc4MzksOTE3ODQwLDkxNzg0MSw5MTc4NDIsOTE3ODQzLDkxNzg0NCw5MTc4NDUsOTE3ODQ2LDkxNzg0Nyw5MTc4NDgsOTE3ODQ5LDkxNzg1MCw5MTc4NTEsOTE3ODUyLDkxNzg1Myw5MTc4NTQsOTE3ODU1LDkxNzg1Niw5MTc4NTcsOTE3ODU4LDkxNzg1OSw5MTc4NjAsOTE3ODYxLDkxNzg2Miw5MTc4NjMsOTE3ODY0LDkxNzg2NSw5MTc4NjYsOTE3ODY3LDkxNzg2OCw5MTc4NjksOTE3ODcwLDkxNzg3MSw5MTc4NzIsOTE3ODczLDkxNzg3NCw5MTc4NzUsOTE3ODc2LDkxNzg3Nyw5MTc4NzgsOTE3ODc5LDkxNzg4MCw5MTc4ODEsOTE3ODgyLDkxNzg4Myw5MTc4ODQsOTE3ODg1LDkxNzg4Niw5MTc4ODcsOTE3ODg4LDkxNzg4OSw5MTc4OTAsOTE3ODkxLDkxNzg5Miw5MTc4OTMsOTE3ODk0LDkxNzg5NSw5MTc4OTYsOTE3ODk3LDkxNzg5OCw5MTc4OTksOTE3OTAwLDkxNzkwMSw5MTc5MDIsOTE3OTAzLDkxNzkwNCw5MTc5MDUsOTE3OTA2LDkxNzkwNyw5MTc5MDgsOTE3OTA5LDkxNzkxMCw5MTc5MTEsOTE3OTEyLDkxNzkxMyw5MTc5MTQsOTE3OTE1LDkxNzkxNiw5MTc5MTcsOTE3OTE4LDkxNzkxOSw5MTc5MjAsOTE3OTIxLDkxNzkyMiw5MTc5MjMsOTE3OTI0LDkxNzkyNSw5MTc5MjYsOTE3OTI3LDkxNzkyOCw5MTc5MjksOTE3OTMwLDkxNzkzMSw5MTc5MzIsOTE3OTMzLDkxNzkzNCw5MTc5MzUsOTE3OTM2LDkxNzkzNyw5MTc5MzgsOTE3OTM5LDkxNzk0MCw5MTc5NDEsOTE3OTQyLDkxNzk0Myw5MTc5NDQsOTE3OTQ1LDkxNzk0Niw5MTc5NDcsOTE3OTQ4LDkxNzk0OSw5MTc5NTAsOTE3OTUxLDkxNzk1Miw5MTc5NTMsOTE3OTU0LDkxNzk1NSw5MTc5NTYsOTE3OTU3LDkxNzk1OCw5MTc5NTksOTE3OTYwLDkxNzk2MSw5MTc5NjIsOTE3OTYzLDkxNzk2NCw5MTc5NjUsOTE3OTY2LDkxNzk2Nyw5MTc5NjgsOTE3OTY5LDkxNzk3MCw5MTc5NzEsOTE3OTcyLDkxNzk3Myw5MTc5NzQsOTE3OTc1LDkxNzk3Niw5MTc5NzcsOTE3OTc4LDkxNzk3OSw5MTc5ODAsOTE3OTgxLDkxNzk4Miw5MTc5ODMsOTE3OTg0LDkxNzk4NSw5MTc5ODYsOTE3OTg3LDkxNzk4OCw5MTc5ODksOTE3OTkwLDkxNzk5MSw5MTc5OTIsOTE3OTkzLDkxNzk5NCw5MTc5OTUsOTE3OTk2LDkxNzk5Nyw5MTc5OTgsOTE3OTk5XSIpfXN0YXRpYyBnZXREYXRhKCl7cmV0dXJuIHRoaXMuX2RhdGF8fCh0aGlzLl9kYXRhPW5ldyBTZXQodWUuZ2V0UmF3RGF0YSgpKSksdGhpcy5fZGF0YX1zdGF0aWMgaXNJbnZpc2libGVDaGFyYWN0ZXIoZSl7cmV0dXJuIHVlLmdldERhdGEoKS5oYXMoZSl9c3RhdGljIGdldCBjb2RlUG9pbnRzKCl7cmV0dXJuIHVlLmdldERhdGEoKX19dWUuX2RhdGE9dm9pZCAwO2NsYXNzIGNle2NvbnN0cnVjdG9yKGUsdCxyLG4pe3RoaXMudnNXb3JrZXI9ZSx0aGlzLnJlcT10LHRoaXMubWV0aG9kPXIsdGhpcy5hcmdzPW4sdGhpcy50eXBlPTB9fWNsYXNzIGRle2NvbnN0cnVjdG9yKGUsdCxyLG4pe3RoaXMudnNXb3JrZXI9ZSx0aGlzLnNlcT10LHRoaXMucmVzPXIsdGhpcy5lcnI9bix0aGlzLnR5cGU9MX19Y2xhc3MgZmV7Y29uc3RydWN0b3IoZSx0LHIsbil7dGhpcy52c1dvcmtlcj1lLHRoaXMucmVxPXQsdGhpcy5ldmVudE5hbWU9cix0aGlzLmFyZz1uLHRoaXMudHlwZT0yfX1jbGFzcyBtZXtjb25zdHJ1Y3RvcihlLHQscil7dGhpcy52c1dvcmtlcj1lLHRoaXMucmVxPXQsdGhpcy5ldmVudD1yLHRoaXMudHlwZT0zfX1jbGFzcyBnZXtjb25zdHJ1Y3RvcihlLHQpe3RoaXMudnNXb3JrZXI9ZSx0aGlzLnJlcT10LHRoaXMudHlwZT00fX1jbGFzcyBiZXtjb25zdHJ1Y3RvcihlKXt0aGlzLl93b3JrZXJJZD0tMSx0aGlzLl9oYW5kbGVyPWUsdGhpcy5fbGFzdFNlbnRSZXE9MCx0aGlzLl9wZW5kaW5nUmVwbGllcz1PYmplY3QuY3JlYXRlKG51bGwpLHRoaXMuX3BlbmRpbmdFbWl0dGVycz1uZXcgTWFwLHRoaXMuX3BlbmRpbmdFdmVudHM9bmV3IE1hcH1zZXRXb3JrZXJJZChlKXt0aGlzLl93b3JrZXJJZD1lfXNlbmRNZXNzYWdlKHIsbil7Y29uc3QgaT1TdHJpbmcoKyt0aGlzLl9sYXN0U2VudFJlcSk7cmV0dXJuIG5ldyBQcm9taXNlKChlLHQpPT57dGhpcy5fcGVuZGluZ1JlcGxpZXNbaV09e3Jlc29sdmU6ZSxyZWplY3Q6dH0sdGhpcy5fc2VuZChuZXcgY2UodGhpcy5fd29ya2VySWQsaSxyLG4pKX0pfWxpc3RlbihlLHQpe2xldCByPW51bGw7Y29uc3Qgbj1uZXcgWCh7b25GaXJzdExpc3RlbmVyQWRkOigpPT57cj1TdHJpbmcoKyt0aGlzLl9sYXN0U2VudFJlcSksdGhpcy5fcGVuZGluZ0VtaXR0ZXJzLnNldChyLG4pLHRoaXMuX3NlbmQobmV3IGZlKHRoaXMuX3dvcmtlcklkLHIsZSx0KSl9LG9uTGFzdExpc3RlbmVyUmVtb3ZlOigpPT57dGhpcy5fcGVuZGluZ0VtaXR0ZXJzLmRlbGV0ZShyKSx0aGlzLl9zZW5kKG5ldyBnZSh0aGlzLl93b3JrZXJJZCxyKSkscj1udWxsfX0pO3JldHVybiBuLmV2ZW50fWhhbmRsZU1lc3NhZ2UoZSl7ZSYmZS52c1dvcmtlciYmKC0xIT09dGhpcy5fd29ya2VySWQmJmUudnNXb3JrZXIhPT10aGlzLl93b3JrZXJJZHx8dGhpcy5faGFuZGxlTWVzc2FnZShlKSl9X2hhbmRsZU1lc3NhZ2UoZSl7c3dpdGNoKGUudHlwZSl7Y2FzZSAxOnJldHVybiB0aGlzLl9oYW5kbGVSZXBseU1lc3NhZ2UoZSk7Y2FzZSAwOnJldHVybiB0aGlzLl9oYW5kbGVSZXF1ZXN0TWVzc2FnZShlKTtjYXNlIDI6cmV0dXJuIHRoaXMuX2hhbmRsZVN1YnNjcmliZUV2ZW50TWVzc2FnZShlKTtjYXNlIDM6cmV0dXJuIHRoaXMuX2hhbmRsZUV2ZW50TWVzc2FnZShlKTtjYXNlIDQ6cmV0dXJuIHRoaXMuX2hhbmRsZVVuc3Vic2NyaWJlRXZlbnRNZXNzYWdlKGUpfX1faGFuZGxlUmVwbHlNZXNzYWdlKHIpe2lmKHRoaXMuX3BlbmRpbmdSZXBsaWVzW3Iuc2VxXSl7bGV0IHQ9dGhpcy5fcGVuZGluZ1JlcGxpZXNbci5zZXFdO2lmKGRlbGV0ZSB0aGlzLl9wZW5kaW5nUmVwbGllc1tyLnNlcV0sci5lcnIpe2xldCBlPXIuZXJyO3JldHVybiByLmVyci4kaXNFcnJvciYmKChlPW5ldyBFcnJvcikubmFtZT1yLmVyci5uYW1lLGUubWVzc2FnZT1yLmVyci5tZXNzYWdlLGUuc3RhY2s9ci5lcnIuc3RhY2spLHZvaWQgdC5yZWplY3QoZSl9dC5yZXNvbHZlKHIucmVzKX1lbHNlIGNvbnNvbGUud2FybigiR290IHJlcGx5IHRvIHVua25vd24gc2VxIil9X2hhbmRsZVJlcXVlc3RNZXNzYWdlKGUpe2xldCB0PWUucmVxLHI9dGhpcy5faGFuZGxlci5oYW5kbGVNZXNzYWdlKGUubWV0aG9kLGUuYXJncyk7ci50aGVuKGU9Pnt0aGlzLl9zZW5kKG5ldyBkZSh0aGlzLl93b3JrZXJJZCx0LGUsdm9pZCAwKSl9LGU9PntlLmRldGFpbCBpbnN0YW5jZW9mIEVycm9yJiYoZS5kZXRhaWw9ZihlLmRldGFpbCkpLHRoaXMuX3NlbmQobmV3IGRlKHRoaXMuX3dvcmtlcklkLHQsdm9pZCAwLGYoZSkpKX0pfV9oYW5kbGVTdWJzY3JpYmVFdmVudE1lc3NhZ2UoZSl7Y29uc3QgdD1lLnJlcTtlPXRoaXMuX2hhbmRsZXIuaGFuZGxlRXZlbnQoZS5ldmVudE5hbWUsZS5hcmcpKGU9Pnt0aGlzLl9zZW5kKG5ldyBtZSh0aGlzLl93b3JrZXJJZCx0LGUpKX0pO3RoaXMuX3BlbmRpbmdFdmVudHMuc2V0KHQsZSl9X2hhbmRsZUV2ZW50TWVzc2FnZShlKXt0aGlzLl9wZW5kaW5nRW1pdHRlcnMuaGFzKGUucmVxKT90aGlzLl9wZW5kaW5nRW1pdHRlcnMuZ2V0KGUucmVxKS5maXJlKGUuZXZlbnQpOmNvbnNvbGUud2FybigiR290IGV2ZW50IGZvciB1bmtub3duIHJlcSIpfV9oYW5kbGVVbnN1YnNjcmliZUV2ZW50TWVzc2FnZShlKXt0aGlzLl9wZW5kaW5nRXZlbnRzLmhhcyhlLnJlcSk/KHRoaXMuX3BlbmRpbmdFdmVudHMuZ2V0KGUucmVxKS5kaXNwb3NlKCksdGhpcy5fcGVuZGluZ0V2ZW50cy5kZWxldGUoZS5yZXEpKTpjb25zb2xlLndhcm4oIkdvdCB1bnN1YnNjcmliZSBmb3IgdW5rbm93biByZXEiKX1fc2VuZCh0KXtsZXQgcj1bXTtpZigwPT09dC50eXBlKWZvcihsZXQgZT0wO2U8dC5hcmdzLmxlbmd0aDtlKyspdC5hcmdzW2VdaW5zdGFuY2VvZiBBcnJheUJ1ZmZlciYmci5wdXNoKHQuYXJnc1tlXSk7ZWxzZSAxPT09dC50eXBlJiZ0LnJlcyBpbnN0YW5jZW9mIEFycmF5QnVmZmVyJiZyLnB1c2godC5yZXMpO3RoaXMuX2hhbmRsZXIuc2VuZE1lc3NhZ2UodCxyKX19ZnVuY3Rpb24gcGUoZSl7cmV0dXJuIm8iPT09ZVswXSYmIm4iPT09ZVsxXSYmb2UoZS5jaGFyQ29kZUF0KDIpKX1mdW5jdGlvbiBDZShlKXtyZXR1cm4vXm9uRHluYW1pYy8udGVzdChlKSYmb2UoZS5jaGFyQ29kZUF0KDkpKX1mdW5jdGlvbiB3ZShlLHIsbil7bGV0IHQ9e307Zm9yKGNvbnN0IGkgb2YgZSlDZShpKT90W2ldPSh0PT5mdW5jdGlvbihlKXtyZXR1cm4gbih0LGUpfSkoaSk6cGUoaSk/dFtpXT1uKGksdm9pZCAwKTp0W2ldPSh0PT5mdW5jdGlvbigpe3ZhciBlPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywwKTtyZXR1cm4gcih0LGUpfSkoaSk7cmV0dXJuIHR9Y2xhc3MgX2V7Y29uc3RydWN0b3IocixlKXt0aGlzLl9yZXF1ZXN0SGFuZGxlckZhY3Rvcnk9ZSx0aGlzLl9yZXF1ZXN0SGFuZGxlcj1udWxsLHRoaXMuX3Byb3RvY29sPW5ldyBiZSh7c2VuZE1lc3NhZ2U6KGUsdCk9PntyKGUsdCl9LGhhbmRsZU1lc3NhZ2U6KGUsdCk9PnRoaXMuX2hhbmRsZU1lc3NhZ2UoZSx0KSxoYW5kbGVFdmVudDooZSx0KT0+dGhpcy5faGFuZGxlRXZlbnQoZSx0KX0pfW9ubWVzc2FnZShlKXt0aGlzLl9wcm90b2NvbC5oYW5kbGVNZXNzYWdlKGUpfV9oYW5kbGVNZXNzYWdlKGUsdCl7aWYoIiRpbml0aWFsaXplIj09PWUpcmV0dXJuIHRoaXMuaW5pdGlhbGl6ZSh0WzBdLHRbMV0sdFsyXSx0WzNdKTtpZighdGhpcy5fcmVxdWVzdEhhbmRsZXJ8fCJmdW5jdGlvbiIhPXR5cGVvZiB0aGlzLl9yZXF1ZXN0SGFuZGxlcltlXSlyZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCJNaXNzaW5nIHJlcXVlc3RIYW5kbGVyIG9yIG1ldGhvZDogIitlKSk7dHJ5e3JldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5fcmVxdWVzdEhhbmRsZXJbZV0uYXBwbHkodGhpcy5fcmVxdWVzdEhhbmRsZXIsdCkpfWNhdGNoKGUpe3JldHVybiBQcm9taXNlLnJlamVjdChlKX19X2hhbmRsZUV2ZW50KGUsdCl7aWYoIXRoaXMuX3JlcXVlc3RIYW5kbGVyKXRocm93IG5ldyBFcnJvcigiTWlzc2luZyByZXF1ZXN0SGFuZGxlciIpO2lmKENlKGUpKXt0PXRoaXMuX3JlcXVlc3RIYW5kbGVyW2VdLmNhbGwodGhpcy5fcmVxdWVzdEhhbmRsZXIsdCk7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQpdGhyb3cgbmV3IEVycm9yKGBNaXNzaW5nIGR5bmFtaWMgZXZlbnQgJHtlfSBvbiByZXF1ZXN0IGhhbmRsZXIuYCk7cmV0dXJuIHR9aWYocGUoZSkpe3Q9dGhpcy5fcmVxdWVzdEhhbmRsZXJbZV07aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQpdGhyb3cgbmV3IEVycm9yKGBNaXNzaW5nIGV2ZW50ICR7ZX0gb24gcmVxdWVzdCBoYW5kbGVyLmApO3JldHVybiB0fXRocm93IG5ldyBFcnJvcigiTWFsZm9ybWVkIGV2ZW50IG5hbWUgIitlKX1pbml0aWFsaXplKGUsdCxuLHIpe3RoaXMuX3Byb3RvY29sLnNldFdvcmtlcklkKGUpO2NvbnN0IGk9d2UociwoZSx0KT0+dGhpcy5fcHJvdG9jb2wuc2VuZE1lc3NhZ2UoZSx0KSwoZSx0KT0+dGhpcy5fcHJvdG9jb2wubGlzdGVuKGUsdCkpO3JldHVybiB0aGlzLl9yZXF1ZXN0SGFuZGxlckZhY3Rvcnk/KHRoaXMuX3JlcXVlc3RIYW5kbGVyPXRoaXMuX3JlcXVlc3RIYW5kbGVyRmFjdG9yeShpKSxQcm9taXNlLnJlc29sdmUoZWUodGhpcy5fcmVxdWVzdEhhbmRsZXIpKSk6KHQmJih2b2lkIDAhPT10LmJhc2VVcmwmJmRlbGV0ZSB0LmJhc2VVcmwsdm9pZCAwIT09dC5wYXRocyYmdm9pZCAwIT09dC5wYXRocy52cyYmZGVsZXRlIHQucGF0aHMudnMsdC50cnVzdGVkVHlwZXNQb2xpY3ksZGVsZXRlIHQudHJ1c3RlZFR5cGVzUG9saWN5LHQuY2F0Y2hFcnJvcj0hMCxQLnJlcXVpcmUuY29uZmlnKHQpKSxuZXcgUHJvbWlzZSgodCxyKT0+e2NvbnN0IGU9UC5yZXF1aXJlO2UoW25dLGU9Pnt0aGlzLl9yZXF1ZXN0SGFuZGxlcj1lLmNyZWF0ZShpKSx0aGlzLl9yZXF1ZXN0SGFuZGxlcj90KGVlKHRoaXMuX3JlcXVlc3RIYW5kbGVyKSk6cihuZXcgRXJyb3IoIk5vIFJlcXVlc3RIYW5kbGVyISIpKX0scil9KSl9fWNsYXNzIHZle2NvbnN0cnVjdG9yKGUsdCxyLG4pe3RoaXMub3JpZ2luYWxTdGFydD1lLHRoaXMub3JpZ2luYWxMZW5ndGg9dCx0aGlzLm1vZGlmaWVkU3RhcnQ9cix0aGlzLm1vZGlmaWVkTGVuZ3RoPW59Z2V0T3JpZ2luYWxFbmQoKXtyZXR1cm4gdGhpcy5vcmlnaW5hbFN0YXJ0K3RoaXMub3JpZ2luYWxMZW5ndGh9Z2V0TW9kaWZpZWRFbmQoKXtyZXR1cm4gdGhpcy5tb2RpZmllZFN0YXJ0K3RoaXMubW9kaWZpZWRMZW5ndGh9fWZ1bmN0aW9uIHllKGUsdCl7cmV0dXJuKHQ8PDUpLXQrZXwwfWNsYXNzIFNle2NvbnN0cnVjdG9yKGUpe3RoaXMuc291cmNlPWV9Z2V0RWxlbWVudHMoKXtjb25zdCByPXRoaXMuc291cmNlLG49bmV3IEludDMyQXJyYXkoci5sZW5ndGgpO2ZvcihsZXQgZT0wLHQ9ci5sZW5ndGg7ZTx0O2UrKyluW2VdPXIuY2hhckNvZGVBdChlKTtyZXR1cm4gbn19Y2xhc3MgTGV7c3RhdGljIEFzc2VydChlLHQpe2lmKCFlKXRocm93IG5ldyBFcnJvcih0KX19Y2xhc3MgTmV7c3RhdGljIENvcHkodCxyLG4saSxhKXtmb3IobGV0IGU9MDtlPGE7ZSsrKW5baStlXT10W3IrZV19c3RhdGljIENvcHkyKHQscixuLGksYSl7Zm9yKGxldCBlPTA7ZTxhO2UrKyluW2krZV09dFtyK2VdfX1jbGFzcyBFZXtjb25zdHJ1Y3Rvcigpe3RoaXMubV9jaGFuZ2VzPVtdLHRoaXMubV9vcmlnaW5hbFN0YXJ0PTEwNzM3NDE4MjQsdGhpcy5tX21vZGlmaWVkU3RhcnQ9MTA3Mzc0MTgyNCx0aGlzLm1fb3JpZ2luYWxDb3VudD0wLHRoaXMubV9tb2RpZmllZENvdW50PTB9TWFya05leHRDaGFuZ2UoKXsoMDx0aGlzLm1fb3JpZ2luYWxDb3VudHx8MDx0aGlzLm1fbW9kaWZpZWRDb3VudCkmJnRoaXMubV9jaGFuZ2VzLnB1c2gobmV3IHZlKHRoaXMubV9vcmlnaW5hbFN0YXJ0LHRoaXMubV9vcmlnaW5hbENvdW50LHRoaXMubV9tb2RpZmllZFN0YXJ0LHRoaXMubV9tb2RpZmllZENvdW50KSksdGhpcy5tX29yaWdpbmFsQ291bnQ9MCx0aGlzLm1fbW9kaWZpZWRDb3VudD0wLHRoaXMubV9vcmlnaW5hbFN0YXJ0PTEwNzM3NDE4MjQsdGhpcy5tX21vZGlmaWVkU3RhcnQ9MTA3Mzc0MTgyNH1BZGRPcmlnaW5hbEVsZW1lbnQoZSx0KXt0aGlzLm1fb3JpZ2luYWxTdGFydD1NYXRoLm1pbih0aGlzLm1fb3JpZ2luYWxTdGFydCxlKSx0aGlzLm1fbW9kaWZpZWRTdGFydD1NYXRoLm1pbih0aGlzLm1fbW9kaWZpZWRTdGFydCx0KSx0aGlzLm1fb3JpZ2luYWxDb3VudCsrfUFkZE1vZGlmaWVkRWxlbWVudChlLHQpe3RoaXMubV9vcmlnaW5hbFN0YXJ0PU1hdGgubWluKHRoaXMubV9vcmlnaW5hbFN0YXJ0LGUpLHRoaXMubV9tb2RpZmllZFN0YXJ0PU1hdGgubWluKHRoaXMubV9tb2RpZmllZFN0YXJ0LHQpLHRoaXMubV9tb2RpZmllZENvdW50Kyt9Z2V0Q2hhbmdlcygpe3JldHVybigwPHRoaXMubV9vcmlnaW5hbENvdW50fHwwPHRoaXMubV9tb2RpZmllZENvdW50KSYmdGhpcy5NYXJrTmV4dENoYW5nZSgpLHRoaXMubV9jaGFuZ2VzfWdldFJldmVyc2VDaGFuZ2VzKCl7cmV0dXJuKDA8dGhpcy5tX29yaWdpbmFsQ291bnR8fDA8dGhpcy5tX21vZGlmaWVkQ291bnQpJiZ0aGlzLk1hcmtOZXh0Q2hhbmdlKCksdGhpcy5tX2NoYW5nZXMucmV2ZXJzZSgpLHRoaXMubV9jaGFuZ2VzfX1jbGFzcyBBZXtjb25zdHJ1Y3RvcihlLHQscj1udWxsKXt0aGlzLkNvbnRpbnVlUHJvY2Vzc2luZ1ByZWRpY2F0ZT1yLHRoaXMuX29yaWdpbmFsU2VxdWVuY2U9ZSx0aGlzLl9tb2RpZmllZFNlcXVlbmNlPXQ7dmFyW3IsZSxuXT1BZS5fZ2V0RWxlbWVudHMoZSksW3QsaSxhXT1BZS5fZ2V0RWxlbWVudHModCk7dGhpcy5faGFzU3RyaW5ncz1uJiZhLHRoaXMuX29yaWdpbmFsU3RyaW5nRWxlbWVudHM9cix0aGlzLl9vcmlnaW5hbEVsZW1lbnRzT3JIYXNoPWUsdGhpcy5fbW9kaWZpZWRTdHJpbmdFbGVtZW50cz10LHRoaXMuX21vZGlmaWVkRWxlbWVudHNPckhhc2g9aSx0aGlzLm1fZm9yd2FyZEhpc3Rvcnk9W10sdGhpcy5tX3JldmVyc2VIaXN0b3J5PVtdfXN0YXRpYyBfaXNTdHJpbmdBcnJheShlKXtyZXR1cm4gMDxlLmxlbmd0aCYmInN0cmluZyI9PXR5cGVvZiBlWzBdfXN0YXRpYyBfZ2V0RWxlbWVudHMoZSl7dmFyIHI9ZS5nZXRFbGVtZW50cygpO2lmKEFlLl9pc1N0cmluZ0FycmF5KHIpKXtjb25zdCBuPW5ldyBJbnQzMkFycmF5KHIubGVuZ3RoKTtmb3IobGV0IGU9MCx0PXIubGVuZ3RoO2U8dDtlKyspbltlXT1mdW5jdGlvbihyLG4pe249eWUoMTQ5NDE3LG4pO2ZvcihsZXQgZT0wLHQ9ci5sZW5ndGg7ZTx0O2UrKyluPXllKHIuY2hhckNvZGVBdChlKSxuKTtyZXR1cm4gbn0ocltlXSwwKTtyZXR1cm5bcixuLCEwXX1yZXR1cm4gciBpbnN0YW5jZW9mIEludDMyQXJyYXk/W1tdLHIsITFdOltbXSxuZXcgSW50MzJBcnJheShyKSwhMV19RWxlbWVudHNBcmVFcXVhbChlLHQpe3JldHVybiB0aGlzLl9vcmlnaW5hbEVsZW1lbnRzT3JIYXNoW2VdPT09dGhpcy5fbW9kaWZpZWRFbGVtZW50c09ySGFzaFt0XSYmKCF0aGlzLl9oYXNTdHJpbmdzfHx0aGlzLl9vcmlnaW5hbFN0cmluZ0VsZW1lbnRzW2VdPT09dGhpcy5fbW9kaWZpZWRTdHJpbmdFbGVtZW50c1t0XSl9RWxlbWVudHNBcmVTdHJpY3RFcXVhbChlLHQpe3JldHVybiEhdGhpcy5FbGVtZW50c0FyZUVxdWFsKGUsdCkmJkFlLl9nZXRTdHJpY3RFbGVtZW50KHRoaXMuX29yaWdpbmFsU2VxdWVuY2UsZSk9PT1BZS5fZ2V0U3RyaWN0RWxlbWVudCh0aGlzLl9tb2RpZmllZFNlcXVlbmNlLHQpfXN0YXRpYyBfZ2V0U3RyaWN0RWxlbWVudChlLHQpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBlLmdldFN0cmljdEVsZW1lbnQ/ZS5nZXRTdHJpY3RFbGVtZW50KHQpOm51bGx9T3JpZ2luYWxFbGVtZW50c0FyZUVxdWFsKGUsdCl7cmV0dXJuIHRoaXMuX29yaWdpbmFsRWxlbWVudHNPckhhc2hbZV09PT10aGlzLl9vcmlnaW5hbEVsZW1lbnRzT3JIYXNoW3RdJiYoIXRoaXMuX2hhc1N0cmluZ3N8fHRoaXMuX29yaWdpbmFsU3RyaW5nRWxlbWVudHNbZV09PT10aGlzLl9vcmlnaW5hbFN0cmluZ0VsZW1lbnRzW3RdKX1Nb2RpZmllZEVsZW1lbnRzQXJlRXF1YWwoZSx0KXtyZXR1cm4gdGhpcy5fbW9kaWZpZWRFbGVtZW50c09ySGFzaFtlXT09PXRoaXMuX21vZGlmaWVkRWxlbWVudHNPckhhc2hbdF0mJighdGhpcy5faGFzU3RyaW5nc3x8dGhpcy5fbW9kaWZpZWRTdHJpbmdFbGVtZW50c1tlXT09PXRoaXMuX21vZGlmaWVkU3RyaW5nRWxlbWVudHNbdF0pfUNvbXB1dGVEaWZmKGUpe3JldHVybiB0aGlzLl9Db21wdXRlRGlmZigwLHRoaXMuX29yaWdpbmFsRWxlbWVudHNPckhhc2gubGVuZ3RoLTEsMCx0aGlzLl9tb2RpZmllZEVsZW1lbnRzT3JIYXNoLmxlbmd0aC0xLGUpfV9Db21wdXRlRGlmZihlLHQscixuLGkpe3ZhciBhPVshMV07bGV0IG89dGhpcy5Db21wdXRlRGlmZlJlY3Vyc2l2ZShlLHQscixuLGEpO3JldHVybiBpJiYobz10aGlzLlByZXR0aWZ5Q2hhbmdlcyhvKSkse3F1aXRFYXJseTphWzBdLGNoYW5nZXM6b319Q29tcHV0ZURpZmZSZWN1cnNpdmUodCxyLG4saSxhKXtmb3IoYVswXT0hMTt0PD1yJiZuPD1pJiZ0aGlzLkVsZW1lbnRzQXJlRXF1YWwodCxuKTspdCsrLG4rKztmb3IoO3Q8PXImJm48PWkmJnRoaXMuRWxlbWVudHNBcmVFcXVhbChyLGkpOylyLS0saS0tO2lmKHI8dHx8aTxuKXtsZXQgZTtyZXR1cm4gZT1uPD1pPyhMZS5Bc3NlcnQodD09PXIrMSwib3JpZ2luYWxTdGFydCBzaG91bGQgb25seSBiZSBvbmUgbW9yZSB0aGFuIG9yaWdpbmFsRW5kIiksW25ldyB2ZSh0LDAsbixpLW4rMSldKTp0PD1yPyhMZS5Bc3NlcnQobj09PWkrMSwibW9kaWZpZWRTdGFydCBzaG91bGQgb25seSBiZSBvbmUgbW9yZSB0aGFuIG1vZGlmaWVkRW5kIiksW25ldyB2ZSh0LHItdCsxLG4sMCldKTooTGUuQXNzZXJ0KHQ9PT1yKzEsIm9yaWdpbmFsU3RhcnQgc2hvdWxkIG9ubHkgYmUgb25lIG1vcmUgdGhhbiBvcmlnaW5hbEVuZCIpLExlLkFzc2VydChuPT09aSsxLCJtb2RpZmllZFN0YXJ0IHNob3VsZCBvbmx5IGJlIG9uZSBtb3JlIHRoYW4gbW9kaWZpZWRFbmQiKSxbXSl9dmFyIG89WzBdLHM9WzBdLGw9dGhpcy5Db21wdXRlUmVjdXJzaW9uUG9pbnQodCxyLG4saSxvLHMsYSksbz1vWzBdLHM9c1swXTtpZihudWxsIT09bClyZXR1cm4gbDtpZihhWzBdKXJldHVybltuZXcgdmUodCxyLXQrMSxuLGktbisxKV07e2w9dGhpcy5Db21wdXRlRGlmZlJlY3Vyc2l2ZSh0LG8sbixzLGEpO2xldCBlPVtdO3JldHVybiBlPWFbMF0/W25ldyB2ZShvKzEsci0obysxKSsxLHMrMSxpLShzKzEpKzEpXTp0aGlzLkNvbXB1dGVEaWZmUmVjdXJzaXZlKG8rMSxyLHMrMSxpLGEpLHRoaXMuQ29uY2F0ZW5hdGVDaGFuZ2VzKGwsZSl9fVdBTEtUUkFDRSh1LHIsYyxkLGYsbSxnLGIsZSxwLHQsQyx3LG4sXyx2LHksUyl7bGV0IEw9bnVsbCxpPW5ldyBFZSxOPXIsRT1jLGE9d1swXS12WzBdLWQsbz0tMTA3Mzc0MTgyNCxzPXRoaXMubV9mb3J3YXJkSGlzdG9yeS5sZW5ndGgtMTtkb3t2YXIgbD1hK3U7YT1sPT09Tnx8bDxFJiZlW2wtMV08ZVtsKzFdPyhuPSh0PWVbbCsxXSktYS1kLHQ8byYmaS5NYXJrTmV4dENoYW5nZSgpLG89dCxpLkFkZE1vZGlmaWVkRWxlbWVudCh0KzEsbiksbCsxLXUpOihuPSh0PWVbbC0xXSsxKS1hLWQsdDxvJiZpLk1hcmtOZXh0Q2hhbmdlKCksbz10LTEsaS5BZGRPcmlnaW5hbEVsZW1lbnQodCxuKzEpLGwtMS11KSwwPD1zJiYodT0oZT10aGlzLm1fZm9yd2FyZEhpc3Rvcnlbc10pWzBdLE49MSxFPWUubGVuZ3RoLTEpfXdoaWxlKC0xPD0tLXMpO2lmKHI9aS5nZXRSZXZlcnNlQ2hhbmdlcygpLFNbMF0pe2xldCBlPXdbMF0rMSx0PXZbMF0rMTtpZihudWxsIT09ciYmMDxyLmxlbmd0aCl7Y29uc3QgQT1yW3IubGVuZ3RoLTFdO2U9TWF0aC5tYXgoZSxBLmdldE9yaWdpbmFsRW5kKCkpLHQ9TWF0aC5tYXgodCxBLmdldE1vZGlmaWVkRW5kKCkpfUw9W25ldyB2ZShlLEMtZSsxLHQsXy10KzEpXX1lbHNle2k9bmV3IEVlLE49bSxFPWcsYT13WzBdLXZbMF0tYixvPTEwNzM3NDE4MjQscz15P3RoaXMubV9yZXZlcnNlSGlzdG9yeS5sZW5ndGgtMTp0aGlzLm1fcmV2ZXJzZUhpc3RvcnkubGVuZ3RoLTI7ZG97dmFyIGg9YStmO2E9aD09PU58fGg8RSYmcFtoLTFdPj1wW2grMV0/KG49KHQ9cFtoKzFdLTEpLWEtYix0Pm8mJmkuTWFya05leHRDaGFuZ2UoKSxvPXQrMSxpLkFkZE9yaWdpbmFsRWxlbWVudCh0KzEsbisxKSxoKzEtZik6KG49KHQ9cFtoLTFdKS1hLWIsdD5vJiZpLk1hcmtOZXh0Q2hhbmdlKCksbz10LGkuQWRkTW9kaWZpZWRFbGVtZW50KHQrMSxuKzEpLGgtMS1mKSwwPD1zJiYoZj0ocD10aGlzLm1fcmV2ZXJzZUhpc3Rvcnlbc10pWzBdLE49MSxFPXAubGVuZ3RoLTEpfXdoaWxlKC0xPD0tLXMpO0w9aS5nZXRDaGFuZ2VzKCl9cmV0dXJuIHRoaXMuQ29uY2F0ZW5hdGVDaGFuZ2VzKHIsTCl9Q29tcHV0ZVJlY3Vyc2lvblBvaW50KGksYSxtLGcsYixwLEMpe2xldCBvPTAscz0wLGw9MCx3PTAsaD0wLF89MDtpLS0sbS0tLHBbYlswXT0wXT0wLHRoaXMubV9mb3J3YXJkSGlzdG9yeT1bXSx0aGlzLm1fcmV2ZXJzZUhpc3Rvcnk9W107dmFyIGU9YS1pKyhnLW0pLHY9MStlO2NvbnN0IHU9bmV3IEludDMyQXJyYXkodiksYz1uZXcgSW50MzJBcnJheSh2KTt2YXIgZD1nLW0sZj1hLWkseT1pLW0sUz1hLWcsTD0oZi1kKSUyPT0wO3VbZF09aSxjW2ZdPWEsQ1swXT0hMTtmb3IobGV0IG49MTtuPD1lLzIrMTtuKyspe2xldCB0PTAscj0wO2w9dGhpcy5DbGlwRGlhZ29uYWxCb3VuZChkLW4sbixkLHYpLHc9dGhpcy5DbGlwRGlhZ29uYWxCb3VuZChkK24sbixkLHYpO2ZvcihsZXQgZT1sO2U8PXc7ZSs9Mil7bz1lPT09bHx8ZTx3JiZ1W2UtMV08dVtlKzFdP3VbZSsxXTp1W2UtMV0rMSxzPW8tKGUtZCkteTtmb3IodmFyIE49bztvPGEmJnM8ZyYmdGhpcy5FbGVtZW50c0FyZUVxdWFsKG8rMSxzKzEpOylvKysscysrO2lmKCh1W2VdPW8pK3M+dCtyJiYodD1vLHI9cyksIUwmJk1hdGguYWJzKGUtZik8PW4tMSYmbz49Y1tlXSlyZXR1cm4gYlswXT1vLHBbMF09cyxOPD1jW2VdJiZuPD0xNDQ4P3RoaXMuV0FMS1RSQUNFKGQsbCx3LHksZixoLF8sUyx1LGMsbyxhLGIscyxnLHAsTCxDKTpudWxsfXZhciBFPSh0LWkrKHItbSktbikvMjtpZihudWxsIT09dGhpcy5Db250aW51ZVByb2Nlc3NpbmdQcmVkaWNhdGUmJiF0aGlzLkNvbnRpbnVlUHJvY2Vzc2luZ1ByZWRpY2F0ZSh0LEUpKXJldHVybiBDWzBdPSEwLGJbMF09dCxwWzBdPXIsMDxFJiZuPD0xNDQ4P3RoaXMuV0FMS1RSQUNFKGQsbCx3LHksZixoLF8sUyx1LGMsbyxhLGIscyxnLHAsTCxDKTooaSsrLG0rKyxbbmV3IHZlKGksYS1pKzEsbSxnLW0rMSldKTtoPXRoaXMuQ2xpcERpYWdvbmFsQm91bmQoZi1uLG4sZix2KSxfPXRoaXMuQ2xpcERpYWdvbmFsQm91bmQoZituLG4sZix2KTtmb3IobGV0IGU9aDtlPD1fO2UrPTIpe289ZT09PWh8fGU8XyYmY1tlLTFdPj1jW2UrMV0/Y1tlKzFdLTE6Y1tlLTFdLHM9by0oZS1mKS1TO2Zvcih2YXIgQT1vO28+aSYmcz5tJiZ0aGlzLkVsZW1lbnRzQXJlRXF1YWwobyxzKTspby0tLHMtLTtpZihjW2VdPW8sTCYmTWF0aC5hYnMoZS1kKTw9biYmbzw9dVtlXSlyZXR1cm4gYlswXT1vLHBbMF09cyxBPj11W2VdJiZuPD0xNDQ4P3RoaXMuV0FMS1RSQUNFKGQsbCx3LHksZixoLF8sUyx1LGMsbyxhLGIscyxnLHAsTCxDKTpudWxsfWlmKG48PTE0NDcpe2xldCBlPW5ldyBJbnQzMkFycmF5KHctbCsyKTtlWzBdPWQtbCsxLE5lLkNvcHkyKHUsbCxlLDEsdy1sKzEpLHRoaXMubV9mb3J3YXJkSGlzdG9yeS5wdXNoKGUpLChlPW5ldyBJbnQzMkFycmF5KF8taCsyKSlbMF09Zi1oKzEsTmUuQ29weTIoYyxoLGUsMSxfLWgrMSksdGhpcy5tX3JldmVyc2VIaXN0b3J5LnB1c2goZSl9fXJldHVybiB0aGlzLldBTEtUUkFDRShkLGwsdyx5LGYsaCxfLFMsdSxjLG8sYSxiLHMsZyxwLEwsQyl9UHJldHRpZnlDaGFuZ2VzKGEpe2ZvcihsZXQgZT0wO2U8YS5sZW5ndGg7ZSsrKXtjb25zdCB0PWFbZV07Zm9yKHZhciBjPWU8YS5sZW5ndGgtMT9hW2UrMV0ub3JpZ2luYWxTdGFydDp0aGlzLl9vcmlnaW5hbEVsZW1lbnRzT3JIYXNoLmxlbmd0aCxkPWU8YS5sZW5ndGgtMT9hW2UrMV0ubW9kaWZpZWRTdGFydDp0aGlzLl9tb2RpZmllZEVsZW1lbnRzT3JIYXNoLmxlbmd0aCxmPTA8dC5vcmlnaW5hbExlbmd0aCxtPTA8dC5tb2RpZmllZExlbmd0aDt0Lm9yaWdpbmFsU3RhcnQrdC5vcmlnaW5hbExlbmd0aDxjJiZ0Lm1vZGlmaWVkU3RhcnQrdC5tb2RpZmllZExlbmd0aDxkJiYoIWZ8fHRoaXMuT3JpZ2luYWxFbGVtZW50c0FyZUVxdWFsKHQub3JpZ2luYWxTdGFydCx0Lm9yaWdpbmFsU3RhcnQrdC5vcmlnaW5hbExlbmd0aCkpJiYoIW18fHRoaXMuTW9kaWZpZWRFbGVtZW50c0FyZUVxdWFsKHQubW9kaWZpZWRTdGFydCx0Lm1vZGlmaWVkU3RhcnQrdC5tb2RpZmllZExlbmd0aCkpOyl7dmFyIGc9dGhpcy5FbGVtZW50c0FyZVN0cmljdEVxdWFsKHQub3JpZ2luYWxTdGFydCx0Lm1vZGlmaWVkU3RhcnQpO2lmKHRoaXMuRWxlbWVudHNBcmVTdHJpY3RFcXVhbCh0Lm9yaWdpbmFsU3RhcnQrdC5vcmlnaW5hbExlbmd0aCx0Lm1vZGlmaWVkU3RhcnQrdC5tb2RpZmllZExlbmd0aCkmJiFnKWJyZWFrO3Qub3JpZ2luYWxTdGFydCsrLHQubW9kaWZpZWRTdGFydCsrfXZhciBiPVtudWxsXTtlPGEubGVuZ3RoLTEmJnRoaXMuQ2hhbmdlc092ZXJsYXAoYVtlXSxhW2UrMV0sYikmJihhW2VdPWJbMF0sYS5zcGxpY2UoZSsxLDEpLGUtLSl9Zm9yKGxldCBlPWEubGVuZ3RoLTE7MDw9ZTtlLS0pe2NvbnN0IGg9YVtlXTtsZXQgdD0wLHI9MDswPGUmJihsPWFbZS0xXSx0PWwub3JpZ2luYWxTdGFydCtsLm9yaWdpbmFsTGVuZ3RoLHI9bC5tb2RpZmllZFN0YXJ0K2wubW9kaWZpZWRMZW5ndGgpO3ZhciBwPTA8aC5vcmlnaW5hbExlbmd0aCxDPTA8aC5tb2RpZmllZExlbmd0aDtsZXQgbj0wLGk9dGhpcy5fYm91bmRhcnlTY29yZShoLm9yaWdpbmFsU3RhcnQsaC5vcmlnaW5hbExlbmd0aCxoLm1vZGlmaWVkU3RhcnQsaC5tb2RpZmllZExlbmd0aCk7Zm9yKGxldCBlPTE7O2UrKyl7dmFyIG89aC5vcmlnaW5hbFN0YXJ0LWUscz1oLm1vZGlmaWVkU3RhcnQtZTtpZihvPHR8fHM8cilicmVhaztpZihwJiYhdGhpcy5PcmlnaW5hbEVsZW1lbnRzQXJlRXF1YWwobyxvK2gub3JpZ2luYWxMZW5ndGgpKWJyZWFrO2lmKEMmJiF0aGlzLk1vZGlmaWVkRWxlbWVudHNBcmVFcXVhbChzLHMraC5tb2RpZmllZExlbmd0aCkpYnJlYWs7bz0obz09PXQmJnM9PT1yPzU6MCkrdGhpcy5fYm91bmRhcnlTY29yZShvLGgub3JpZ2luYWxMZW5ndGgscyxoLm1vZGlmaWVkTGVuZ3RoKTtvPmkmJihpPW8sbj1lKX1oLm9yaWdpbmFsU3RhcnQtPW4saC5tb2RpZmllZFN0YXJ0LT1uO3ZhciBsPVtudWxsXTswPGUmJnRoaXMuQ2hhbmdlc092ZXJsYXAoYVtlLTFdLGFbZV0sbCkmJihhW2UtMV09bFswXSxhLnNwbGljZShlLDEpLGUrKyl9aWYodGhpcy5faGFzU3RyaW5ncylmb3IobGV0IGU9MSx0PWEubGVuZ3RoO2U8dDtlKyspe2NvbnN0IGk9YVtlLTFdLHU9YVtlXTt2YXIgdz11Lm9yaWdpbmFsU3RhcnQtaS5vcmlnaW5hbFN0YXJ0LWkub3JpZ2luYWxMZW5ndGgsXz1pLm9yaWdpbmFsU3RhcnQsdj11Lm9yaWdpbmFsU3RhcnQrdS5vcmlnaW5hbExlbmd0aCxyPXYtXyxuPWkubW9kaWZpZWRTdGFydCx5PXUubW9kaWZpZWRTdGFydCt1Lm1vZGlmaWVkTGVuZ3RoLFM9eS1uO3c8NSYmcjwyMCYmUzwyMCYmKChfPXRoaXMuX2ZpbmRCZXR0ZXJDb250aWd1b3VzU2VxdWVuY2UoXyxyLG4sUyx3KSkmJihbcixuXT1fLHI9PT1pLm9yaWdpbmFsU3RhcnQraS5vcmlnaW5hbExlbmd0aCYmbj09PWkubW9kaWZpZWRTdGFydCtpLm1vZGlmaWVkTGVuZ3RofHwoaS5vcmlnaW5hbExlbmd0aD1yLWkub3JpZ2luYWxTdGFydCxpLm1vZGlmaWVkTGVuZ3RoPW4taS5tb2RpZmllZFN0YXJ0LHUub3JpZ2luYWxTdGFydD1yK3csdS5tb2RpZmllZFN0YXJ0PW4rdyx1Lm9yaWdpbmFsTGVuZ3RoPXYtdS5vcmlnaW5hbFN0YXJ0LHUubW9kaWZpZWRMZW5ndGg9eS11Lm1vZGlmaWVkU3RhcnQpKSl9cmV0dXJuIGF9X2ZpbmRCZXR0ZXJDb250aWd1b3VzU2VxdWVuY2UoZSx0LHIsbixpKXtpZih0PGl8fG48aSlyZXR1cm4gbnVsbDt2YXIgYT1lK3QtaSsxLHU9cituLWkrMTtsZXQgbz0wLHM9MCxsPTA7Zm9yKGxldCB0PWU7dDxhO3QrKylmb3IobGV0IGU9cjtlPHU7ZSsrKXt2YXIgaD10aGlzLl9jb250aWd1b3VzU2VxdWVuY2VTY29yZSh0LGUsaSk7MDxoJiZoPm8mJihvPWgscz10LGw9ZSl9cmV0dXJuIDA8bz9bcyxsXTpudWxsfV9jb250aWd1b3VzU2VxdWVuY2VTY29yZSh0LHIsbil7bGV0IGk9MDtmb3IobGV0IGU9MDtlPG47ZSsrKXtpZighdGhpcy5FbGVtZW50c0FyZUVxdWFsKHQrZSxyK2UpKXJldHVybiAwO2krPXRoaXMuX29yaWdpbmFsU3RyaW5nRWxlbWVudHNbdCtlXS5sZW5ndGh9cmV0dXJuIGl9X09yaWdpbmFsSXNCb3VuZGFyeShlKXtyZXR1cm4gZTw9MHx8ZT49dGhpcy5fb3JpZ2luYWxFbGVtZW50c09ySGFzaC5sZW5ndGgtMXx8dGhpcy5faGFzU3RyaW5ncyYmL15ccyokLy50ZXN0KHRoaXMuX29yaWdpbmFsU3RyaW5nRWxlbWVudHNbZV0pfV9PcmlnaW5hbFJlZ2lvbklzQm91bmRhcnkoZSx0KXtpZih0aGlzLl9PcmlnaW5hbElzQm91bmRhcnkoZSl8fHRoaXMuX09yaWdpbmFsSXNCb3VuZGFyeShlLTEpKXJldHVybiEwO2lmKDA8dCl7ZT1lK3Q7aWYodGhpcy5fT3JpZ2luYWxJc0JvdW5kYXJ5KGUtMSl8fHRoaXMuX09yaWdpbmFsSXNCb3VuZGFyeShlKSlyZXR1cm4hMH1yZXR1cm4hMX1fTW9kaWZpZWRJc0JvdW5kYXJ5KGUpe3JldHVybiBlPD0wfHxlPj10aGlzLl9tb2RpZmllZEVsZW1lbnRzT3JIYXNoLmxlbmd0aC0xfHx0aGlzLl9oYXNTdHJpbmdzJiYvXlxzKiQvLnRlc3QodGhpcy5fbW9kaWZpZWRTdHJpbmdFbGVtZW50c1tlXSl9X01vZGlmaWVkUmVnaW9uSXNCb3VuZGFyeShlLHQpe2lmKHRoaXMuX01vZGlmaWVkSXNCb3VuZGFyeShlKXx8dGhpcy5fTW9kaWZpZWRJc0JvdW5kYXJ5KGUtMSkpcmV0dXJuITA7aWYoMDx0KXtlPWUrdDtpZih0aGlzLl9Nb2RpZmllZElzQm91bmRhcnkoZS0xKXx8dGhpcy5fTW9kaWZpZWRJc0JvdW5kYXJ5KGUpKXJldHVybiEwfXJldHVybiExfV9ib3VuZGFyeVNjb3JlKGUsdCxyLG4pe3JldHVybih0aGlzLl9PcmlnaW5hbFJlZ2lvbklzQm91bmRhcnkoZSx0KT8xOjApKyh0aGlzLl9Nb2RpZmllZFJlZ2lvbklzQm91bmRhcnkocixuKT8xOjApfUNvbmNhdGVuYXRlQ2hhbmdlcyhlLHQpe3ZhciByPVtdO2lmKDA9PT1lLmxlbmd0aHx8MD09PXQubGVuZ3RoKXJldHVybiAwPHQubGVuZ3RoP3Q6ZTtpZih0aGlzLkNoYW5nZXNPdmVybGFwKGVbZS5sZW5ndGgtMV0sdFswXSxyKSl7Y29uc3Qgbj1uZXcgQXJyYXkoZS5sZW5ndGgrdC5sZW5ndGgtMSk7cmV0dXJuIE5lLkNvcHkoZSwwLG4sMCxlLmxlbmd0aC0xKSxuW2UubGVuZ3RoLTFdPXJbMF0sTmUuQ29weSh0LDEsbixlLmxlbmd0aCx0Lmxlbmd0aC0xKSxufXJldHVybiByPW5ldyBBcnJheShlLmxlbmd0aCt0Lmxlbmd0aCksTmUuQ29weShlLDAsciwwLGUubGVuZ3RoKSxOZS5Db3B5KHQsMCxyLGUubGVuZ3RoLHQubGVuZ3RoKSxyfUNoYW5nZXNPdmVybGFwKHIsbixpKXtpZihMZS5Bc3NlcnQoci5vcmlnaW5hbFN0YXJ0PD1uLm9yaWdpbmFsU3RhcnQsIkxlZnQgY2hhbmdlIGlzIG5vdCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gcmlnaHQgY2hhbmdlIiksTGUuQXNzZXJ0KHIubW9kaWZpZWRTdGFydDw9bi5tb2RpZmllZFN0YXJ0LCJMZWZ0IGNoYW5nZSBpcyBub3QgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHJpZ2h0IGNoYW5nZSIpLHIub3JpZ2luYWxTdGFydCtyLm9yaWdpbmFsTGVuZ3RoPj1uLm9yaWdpbmFsU3RhcnR8fHIubW9kaWZpZWRTdGFydCtyLm1vZGlmaWVkTGVuZ3RoPj1uLm1vZGlmaWVkU3RhcnQpe3ZhciBhPXIub3JpZ2luYWxTdGFydDtsZXQgZT1yLm9yaWdpbmFsTGVuZ3RoO3ZhciBvPXIubW9kaWZpZWRTdGFydDtsZXQgdD1yLm1vZGlmaWVkTGVuZ3RoO3JldHVybiByLm9yaWdpbmFsU3RhcnQrci5vcmlnaW5hbExlbmd0aD49bi5vcmlnaW5hbFN0YXJ0JiYoZT1uLm9yaWdpbmFsU3RhcnQrbi5vcmlnaW5hbExlbmd0aC1yLm9yaWdpbmFsU3RhcnQpLHIubW9kaWZpZWRTdGFydCtyLm1vZGlmaWVkTGVuZ3RoPj1uLm1vZGlmaWVkU3RhcnQmJih0PW4ubW9kaWZpZWRTdGFydCtuLm1vZGlmaWVkTGVuZ3RoLXIubW9kaWZpZWRTdGFydCksaVswXT1uZXcgdmUoYSxlLG8sdCksITB9cmV0dXJuIGlbMF09bnVsbCwhMX1DbGlwRGlhZ29uYWxCb3VuZChlLHQscixuKXtpZigwPD1lJiZlPG4pcmV0dXJuIGU7dD10JTI9PTA7cmV0dXJuIGU8MD90PT0ociUyPT0wKT8wOjE6dD09KChuLXItMSklMj09MCk/bi0xOm4tMn19bGV0IGtlO2lmKHZvaWQgMCE9PVAudnNjb2RlJiZ2b2lkIDAhPT1QLnZzY29kZS5wcm9jZXNzKXtjb25zdCBzbj1QLnZzY29kZS5wcm9jZXNzO2tlPXtnZXQgcGxhdGZvcm0oKXtyZXR1cm4gc24ucGxhdGZvcm19LGdldCBhcmNoKCl7cmV0dXJuIHNuLmFyY2h9LGdldCBlbnYoKXtyZXR1cm4gc24uZW52fSxjd2QoKXtyZXR1cm4gc24uY3dkKCl9fX1lbHNlIGtlPSJ1bmRlZmluZWQiIT10eXBlb2YgcHJvY2Vzcz97Z2V0IHBsYXRmb3JtKCl7cmV0dXJuIHByb2Nlc3MucGxhdGZvcm19LGdldCBhcmNoKCl7cmV0dXJuIHByb2Nlc3MuYXJjaH0sZ2V0IGVudigpe3JldHVybiBwcm9jZXNzLmVudn0sY3dkKCl7cmV0dXJuIHByb2Nlc3MuZW52LlZTQ09ERV9DV0R8fHByb2Nlc3MuY3dkKCl9fTp7Z2V0IHBsYXRmb3JtKCl7cmV0dXJuIEk/IndpbjMyIjpWPyJkYXJ3aW4iOiJsaW51eCJ9LGdldCBhcmNoKCl7fSxnZXQgZW52KCl7cmV0dXJue319LGN3ZCgpe3JldHVybiIvIn19O2NvbnN0IHhlPWtlLmN3ZCxNZT1rZS5lbnY7dmFyIFBlLEtlLHQ9a2UucGxhdGZvcm07Y2xhc3MgUmUgZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3RvcihlLHQscil7bGV0IG47InN0cmluZyI9PXR5cGVvZiB0JiYwPT09dC5pbmRleE9mKCJub3QgIik/KG49Im11c3Qgbm90IGJlIix0PXQucmVwbGFjZSgvXm5vdCAvLCIiKSk6bj0ibXVzdCBiZSI7dmFyIGk9LTEhPT1lLmluZGV4T2YoIi4iKT8icHJvcGVydHkiOiJhcmd1bWVudCIsZT1gVGhlICIke2V9IiAke2l9ICR7bn0gb2YgdHlwZSBgK3Q7c3VwZXIoZSs9Ii4gUmVjZWl2ZWQgdHlwZSAiK3R5cGVvZiByKSx0aGlzLmNvZGU9IkVSUl9JTlZBTElEX0FSR19UWVBFIn19ZnVuY3Rpb24gRGUoZSx0KXtpZigic3RyaW5nIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFJlKHQsInN0cmluZyIsZSl9ZnVuY3Rpb24gZChlKXtyZXR1cm4gNDc9PT1lfHw5Mj09PWV9ZnVuY3Rpb24gSWUoZSl7cmV0dXJuIDQ3PT09ZX1mdW5jdGlvbiBWZShlKXtyZXR1cm4gNjU8PWUmJmU8PTkwfHw5Nzw9ZSYmZTw9MTIyfWZ1bmN0aW9uIE9lKHQscixuLGkpe2xldCBhPSIiLG89MCxzPS0xLGw9MCxoPTA7Zm9yKGxldCBlPTA7ZTw9dC5sZW5ndGg7KytlKXtpZihlPHQubGVuZ3RoKWg9dC5jaGFyQ29kZUF0KGUpO2Vsc2V7aWYoaShoKSlicmVhaztoPTQ3fWlmKGkoaCkpe2lmKHMhPT1lLTEmJjEhPT1sKWlmKDI9PT1sKXtpZihhLmxlbmd0aDwyfHwyIT09b3x8NDYhPT1hLmNoYXJDb2RlQXQoYS5sZW5ndGgtMSl8fDQ2IT09YS5jaGFyQ29kZUF0KGEubGVuZ3RoLTIpKXtpZigyPGEubGVuZ3RoKXt2YXIgdT1hLmxhc3RJbmRleE9mKG4pO289LTE9PT11PyhhPSIiLDApOihhPWEuc2xpY2UoMCx1KSkubGVuZ3RoLTEtYS5sYXN0SW5kZXhPZihuKSxzPWUsbD0wO2NvbnRpbnVlfWlmKDAhPT1hLmxlbmd0aCl7YT0iIixvPTAscz1lLGw9MDtjb250aW51ZX19ciYmKGErPTA8YS5sZW5ndGg/bisiLi4iOiIuLiIsbz0yKX1lbHNlIDA8YS5sZW5ndGg/YSs9IiIrbit0LnNsaWNlKHMrMSxlKTphPXQuc2xpY2UocysxLGUpLG89ZS1zLTE7cz1lLGw9MH1lbHNlIDQ2PT09aCYmLTEhPT1sPysrbDpsPS0xfXJldHVybiBhfWZ1bmN0aW9uIEZlKGUsdCl7aWYobnVsbD09PXR8fCJvYmplY3QiIT10eXBlb2YgdCl0aHJvdyBuZXcgUmUoInBhdGhPYmplY3QiLCJPYmplY3QiLHQpO3ZhciByPXQuZGlyfHx0LnJvb3Qsbj10LmJhc2V8fCIiKyh0Lm5hbWV8fCIiKSsodC5leHR8fCIiKTtyZXR1cm4gcj9yPT09dC5yb290PyIiK3IrbjoiIityK2UrbjpufWNvbnN0IFRlPXtyZXNvbHZlKC4uLmEpe2xldCBvPSIiLHM9IiIsbD0hMTtmb3IobGV0IHQ9YS5sZW5ndGgtMTstMTw9dDt0LS0pe2xldCByO2lmKDA8PXQpe2lmKERlKHI9YVt0XSwicGF0aCIpLDA9PT1yLmxlbmd0aCljb250aW51ZX1lbHNlIDA9PT1vLmxlbmd0aD9yPXhlKCk6KHZvaWQgMD09PShyPU1lWyI9IitvXXx8eGUoKSl8fHIuc2xpY2UoMCwyKS50b0xvd2VyQ2FzZSgpIT09by50b0xvd2VyQ2FzZSgpJiY5Mj09PXIuY2hhckNvZGVBdCgyKSkmJihyPW8rIlxcIik7dmFyIGg9ci5sZW5ndGg7bGV0IG49MCxpPSIiLGU9ITE7dmFyIHU9ci5jaGFyQ29kZUF0KDApO2lmKDE9PT1oKWQodSkmJihuPTEsZT0hMCk7ZWxzZSBpZihkKHUpKWlmKGU9ITAsZChyLmNoYXJDb2RlQXQoMSkpKXtsZXQgZT0yLHQ9ZTtmb3IoO2U8aCYmIWQoci5jaGFyQ29kZUF0KGUpKTspZSsrO2lmKGU8aCYmZSE9PXQpe3ZhciBjPXIuc2xpY2UodCxlKTtmb3IodD1lO2U8aCYmZChyLmNoYXJDb2RlQXQoZSkpOyllKys7aWYoZTxoJiZlIT09dCl7Zm9yKHQ9ZTtlPGgmJiFkKHIuY2hhckNvZGVBdChlKSk7KWUrKztlIT09aCYmZT09PXR8fChpPWBcXFxcJHtjfVxcYCtyLnNsaWNlKHQsZSksbj1lKX19fWVsc2Ugbj0xO2Vsc2UgVmUodSkmJjU4PT09ci5jaGFyQ29kZUF0KDEpJiYoaT1yLnNsaWNlKDAsMiksKG49Mik8aCYmZChyLmNoYXJDb2RlQXQoMikpJiYoZT0hMCxuPTMpKTtpZigwPGkubGVuZ3RoKWlmKDA8by5sZW5ndGgpe2lmKGkudG9Mb3dlckNhc2UoKSE9PW8udG9Mb3dlckNhc2UoKSljb250aW51ZX1lbHNlIG89aTtpZihsKXtpZigwPG8ubGVuZ3RoKWJyZWFrfWVsc2UgaWYocz1yLnNsaWNlKG4pKyJcXCIrcywobD1lKSYmMDxvLmxlbmd0aClicmVha31yZXR1cm4gcz1PZShzLCFsLCJcXCIsZCksbD9vKyJcXCIrczoiIitvK3N8fCIuIn0sbm9ybWFsaXplKHIpe0RlKHIsInBhdGgiKTt2YXIgbj1yLmxlbmd0aDtpZigwPT09bilyZXR1cm4iLiI7bGV0IGk9MCxhLGU9ITE7dmFyIHQ9ci5jaGFyQ29kZUF0KDApO2lmKDE9PT1uKXJldHVybiBJZSh0KT8iXFwiOnI7aWYoZCh0KSlpZihlPSEwLGQoci5jaGFyQ29kZUF0KDEpKSl7bGV0IGU9Mix0PWU7Zm9yKDtlPG4mJiFkKHIuY2hhckNvZGVBdChlKSk7KWUrKztpZihlPG4mJmUhPT10KXt2YXIgbz1yLnNsaWNlKHQsZSk7Zm9yKHQ9ZTtlPG4mJmQoci5jaGFyQ29kZUF0KGUpKTspZSsrO2lmKGU8biYmZSE9PXQpe2Zvcih0PWU7ZTxuJiYhZChyLmNoYXJDb2RlQXQoZSkpOyllKys7aWYoZT09PW4pcmV0dXJuYFxcXFwke299XFwke3Iuc2xpY2UodCl9XFxgO2UhPT10JiYoYT1gXFxcXCR7b31cXGArci5zbGljZSh0LGUpLGk9ZSl9fX1lbHNlIGk9MTtlbHNlIFZlKHQpJiY1OD09PXIuY2hhckNvZGVBdCgxKSYmKGE9ci5zbGljZSgwLDIpLChpPTIpPG4mJmQoci5jaGFyQ29kZUF0KDIpKSYmKGU9ITAsaT0zKSk7bGV0IHM9aTxuP09lKHIuc2xpY2UoaSksIWUsIlxcIixkKToiIjtyZXR1cm4gMDwocz0wIT09cy5sZW5ndGh8fGU/czoiLiIpLmxlbmd0aCYmZChyLmNoYXJDb2RlQXQobi0xKSkmJihzKz0iXFwiKSx2b2lkIDA9PT1hP2U/IlxcIitzOnM6ZT9hKyJcXCIrczoiIithK3N9LGlzQWJzb2x1dGUoZSl7RGUoZSwicGF0aCIpO3ZhciB0PWUubGVuZ3RoO2lmKDA9PT10KXJldHVybiExO3ZhciByPWUuY2hhckNvZGVBdCgwKTtyZXR1cm4gZChyKXx8Mjx0JiZWZShyKSYmNTg9PT1lLmNoYXJDb2RlQXQoMSkmJmQoZS5jaGFyQ29kZUF0KDIpKX0sam9pbiguLi50KXtpZigwPT09dC5sZW5ndGgpcmV0dXJuIi4iO2xldCByLG47Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDsrK2Upe3ZhciBpPXRbZV07RGUoaSwicGF0aCIpLDA8aS5sZW5ndGgmJih2b2lkIDA9PT1yP3I9bj1pOnIrPSJcXCIraSl9aWYodm9pZCAwPT09cilyZXR1cm4iLiI7bGV0IGU9ITAsYT0wO3ZhciBvO2lmKCJzdHJpbmciPT10eXBlb2YgbiYmZChuLmNoYXJDb2RlQXQoMCkpJiYoKythLDE8KG89bi5sZW5ndGgpJiZkKG4uY2hhckNvZGVBdCgxKSkmJigrK2EsMjxvJiYoZChuLmNoYXJDb2RlQXQoMikpPysrYTplPSExKSkpLGUpe2Zvcig7YTxyLmxlbmd0aCYmZChyLmNoYXJDb2RlQXQoYSkpOylhKys7Mjw9YSYmKHI9IlxcIityLnNsaWNlKGEpKX1yZXR1cm4gVGUubm9ybWFsaXplKHIpfSxyZWxhdGl2ZShlLHQpe2lmKERlKGUsImZyb20iKSxEZSh0LCJ0byIpLGU9PT10KXJldHVybiIiO2NvbnN0IHU9VGUucmVzb2x2ZShlKSxyPVRlLnJlc29sdmUodCk7aWYodT09PXIpcmV0dXJuIiI7aWYoKGU9dS50b0xvd2VyQ2FzZSgpKT09PSh0PXIudG9Mb3dlckNhc2UoKSkpcmV0dXJuIiI7bGV0IG49MDtmb3IoO248ZS5sZW5ndGgmJjkyPT09ZS5jaGFyQ29kZUF0KG4pOyluKys7bGV0IGk9ZS5sZW5ndGg7Zm9yKDtpLTE+biYmOTI9PT1lLmNoYXJDb2RlQXQoaS0xKTspaS0tO3ZhciBjPWktbjtsZXQgYT0wO2Zvcig7YTx0Lmxlbmd0aCYmOTI9PT10LmNoYXJDb2RlQXQoYSk7KWErKztsZXQgbz10Lmxlbmd0aDtmb3IoO28tMT5hJiY5Mj09PXQuY2hhckNvZGVBdChvLTEpOylvLS07dmFyIGQ9by1hLHM9YzxkP2M6ZDtsZXQgbD0tMSxoPTA7Zm9yKDtoPHM7aCsrKXt2YXIgZj1lLmNoYXJDb2RlQXQobitoKTtpZihmIT09dC5jaGFyQ29kZUF0KGEraCkpYnJlYWs7OTI9PT1mJiYobD1oKX1pZihoIT09cyl7aWYoLTE9PT1sKXJldHVybiByfWVsc2V7aWYoczxkKXtpZig5Mj09PXQuY2hhckNvZGVBdChhK2gpKXJldHVybiByLnNsaWNlKGEraCsxKTtpZigyPT09aClyZXR1cm4gci5zbGljZShhK2gpfXM8YyYmKDkyPT09ZS5jaGFyQ29kZUF0KG4raCk/bD1oOjI9PT1oJiYobD0zKSksLTE9PT1sJiYobD0wKX1sZXQgbT0iIjtmb3IoaD1uK2wrMTtoPD1pOysraCloIT09aSYmOTIhPT1lLmNoYXJDb2RlQXQoaCl8fChtKz0wPT09bS5sZW5ndGg/Ii4uIjoiXFwuLiIpO3JldHVybiBhKz1sLDA8bS5sZW5ndGg/IiIrbStyLnNsaWNlKGEsbyk6KDkyPT09ci5jaGFyQ29kZUF0KGEpJiYrK2Esci5zbGljZShhLG8pKX0sdG9OYW1lc3BhY2VkUGF0aChlKXtpZigic3RyaW5nIiE9dHlwZW9mIGUpcmV0dXJuIGU7aWYoMD09PWUubGVuZ3RoKXJldHVybiIiO2NvbnN0IHQ9VGUucmVzb2x2ZShlKTtpZih0Lmxlbmd0aDw9MilyZXR1cm4gZTtpZig5Mj09PXQuY2hhckNvZGVBdCgwKSl7aWYoOTI9PT10LmNoYXJDb2RlQXQoMSkpe3ZhciByPXQuY2hhckNvZGVBdCgyKTtpZig2MyE9PXImJjQ2IT09cilyZXR1cm4iXFxcXD9cXFVOQ1xcIit0LnNsaWNlKDIpfX1lbHNlIGlmKFZlKHQuY2hhckNvZGVBdCgwKSkmJjU4PT09dC5jaGFyQ29kZUF0KDEpJiY5Mj09PXQuY2hhckNvZGVBdCgyKSlyZXR1cm4iXFxcXD9cXCIrdDtyZXR1cm4gZX0sZGlybmFtZShyKXtEZShyLCJwYXRoIik7dmFyIG49ci5sZW5ndGg7aWYoMD09PW4pcmV0dXJuIi4iO2xldCBpPS0xLGE9MDt2YXIgZT1yLmNoYXJDb2RlQXQoMCk7aWYoMT09PW4pcmV0dXJuIGQoZSk/cjoiLiI7aWYoZChlKSl7aWYoaT1hPTEsZChyLmNoYXJDb2RlQXQoMSkpKXtsZXQgZT0yLHQ9ZTtmb3IoO2U8biYmIWQoci5jaGFyQ29kZUF0KGUpKTspZSsrO2lmKGU8biYmZSE9PXQpe2Zvcih0PWU7ZTxuJiZkKHIuY2hhckNvZGVBdChlKSk7KWUrKztpZihlPG4mJmUhPT10KXtmb3IodD1lO2U8biYmIWQoci5jaGFyQ29kZUF0KGUpKTspZSsrO2lmKGU9PT1uKXJldHVybiByO2UhPT10JiYoaT1hPWUrMSl9fX19ZWxzZSBWZShlKSYmNTg9PT1yLmNoYXJDb2RlQXQoMSkmJihpPTI8biYmZChyLmNoYXJDb2RlQXQoMikpPzM6MixhPWkpO2xldCB0PS0xLG89ITA7Zm9yKGxldCBlPW4tMTtlPj1hOy0tZSlpZihkKHIuY2hhckNvZGVBdChlKSkpe2lmKCFvKXt0PWU7YnJlYWt9fWVsc2Ugbz0hMTtpZigtMT09PXQpe2lmKC0xPT09aSlyZXR1cm4iLiI7dD1pfXJldHVybiByLnNsaWNlKDAsdCl9LGJhc2VuYW1lKHIsbil7dm9pZCAwIT09biYmRGUobiwiZXh0IiksRGUociwicGF0aCIpO2xldCBpPTAsYT0tMSxvPSEwLHM7aWYoMjw9ci5sZW5ndGgmJlZlKHIuY2hhckNvZGVBdCgwKSkmJjU4PT09ci5jaGFyQ29kZUF0KDEpJiYoaT0yKSx2b2lkIDAhPT1uJiYwPG4ubGVuZ3RoJiZuLmxlbmd0aDw9ci5sZW5ndGgpe2lmKG49PT1yKXJldHVybiIiO2xldCBlPW4ubGVuZ3RoLTEsdD0tMTtmb3Iocz1yLmxlbmd0aC0xO3M+PWk7LS1zKXt2YXIgbD1yLmNoYXJDb2RlQXQocyk7aWYoZChsKSl7aWYoIW8pe2k9cysxO2JyZWFrfX1lbHNlLTE9PT10JiYobz0hMSx0PXMrMSksMDw9ZSYmKGw9PT1uLmNoYXJDb2RlQXQoZSk/LTE9PS0tZSYmKGE9cyk6KGU9LTEsYT10KSl9cmV0dXJuIGk9PT1hP2E9dDotMT09PWEmJihhPXIubGVuZ3RoKSxyLnNsaWNlKGksYSl9Zm9yKHM9ci5sZW5ndGgtMTtzPj1pOy0tcylpZihkKHIuY2hhckNvZGVBdChzKSkpe2lmKCFvKXtpPXMrMTticmVha319ZWxzZS0xPT09YSYmKG89ITEsYT1zKzEpO3JldHVybi0xPT09YT8iIjpyLnNsaWNlKGksYSl9LGV4dG5hbWUodCl7RGUodCwicGF0aCIpO2xldCByPTAsbj0tMSxpPTAsYT0tMSxvPSEwLHM9MDsyPD10Lmxlbmd0aCYmNTg9PT10LmNoYXJDb2RlQXQoMSkmJlZlKHQuY2hhckNvZGVBdCgwKSkmJihyPWk9Mik7Zm9yKGxldCBlPXQubGVuZ3RoLTE7ZT49cjstLWUpe3ZhciBsPXQuY2hhckNvZGVBdChlKTtpZihkKGwpKXtpZihvKWNvbnRpbnVlO2k9ZSsxO2JyZWFrfS0xPT09YSYmKG89ITEsYT1lKzEpLDQ2PT09bD8tMT09PW4/bj1lOjEhPT1zJiYocz0xKTotMSE9PW4mJihzPS0xKX1yZXR1cm4tMT09PW58fC0xPT09YXx8MD09PXN8fDE9PT1zJiZuPT09YS0xJiZuPT09aSsxPyIiOnQuc2xpY2UobixhKX0sZm9ybWF0OkZlLmJpbmQobnVsbCwiXFwiKSxwYXJzZShyKXtEZShyLCJwYXRoIik7Y29uc3QgZT17cm9vdDoiIixkaXI6IiIsYmFzZToiIixleHQ6IiIsbmFtZToiIn07aWYoMD09PXIubGVuZ3RoKXJldHVybiBlO3ZhciBuPXIubGVuZ3RoO2xldCBpPTAsdD1yLmNoYXJDb2RlQXQoMCk7aWYoMT09PW4pcmV0dXJuIGQodCk/ZS5yb290PWUuZGlyPXI6ZS5iYXNlPWUubmFtZT1yLGU7aWYoZCh0KSl7aWYoaT0xLGQoci5jaGFyQ29kZUF0KDEpKSl7bGV0IGU9Mix0PWU7Zm9yKDtlPG4mJiFkKHIuY2hhckNvZGVBdChlKSk7KWUrKztpZihlPG4mJmUhPT10KXtmb3IodD1lO2U8biYmZChyLmNoYXJDb2RlQXQoZSkpOyllKys7aWYoZTxuJiZlIT09dCl7Zm9yKHQ9ZTtlPG4mJiFkKHIuY2hhckNvZGVBdChlKSk7KWUrKztlPT09bj9pPWU6ZSE9PXQmJihpPWUrMSl9fX19ZWxzZSBpZihWZSh0KSYmNTg9PT1yLmNoYXJDb2RlQXQoMSkpe2lmKG48PTIpcmV0dXJuIGUucm9vdD1lLmRpcj1yLGU7aWYoaT0yLGQoci5jaGFyQ29kZUF0KDIpKSl7aWYoMz09PW4pcmV0dXJuIGUucm9vdD1lLmRpcj1yLGU7aT0zfX0wPGkmJihlLnJvb3Q9ci5zbGljZSgwLGkpKTtsZXQgYT0tMSxvPWkscz0tMSx1PSEwLGw9ci5sZW5ndGgtMSxoPTA7Zm9yKDtsPj1pOy0tbCl7aWYoZCh0PXIuY2hhckNvZGVBdChsKSkpe2lmKHUpY29udGludWU7bz1sKzE7YnJlYWt9LTE9PT1zJiYodT0hMSxzPWwrMSksNDY9PT10Py0xPT09YT9hPWw6MSE9PWgmJihoPTEpOi0xIT09YSYmKGg9LTEpfXJldHVybi0xIT09cyYmKC0xPT09YXx8MD09PWh8fDE9PT1oJiZhPT09cy0xJiZhPT09bysxP2UuYmFzZT1lLm5hbWU9ci5zbGljZShvLHMpOihlLm5hbWU9ci5zbGljZShvLGEpLGUuYmFzZT1yLnNsaWNlKG8scyksZS5leHQ9ci5zbGljZShhLHMpKSksMDxvJiZvIT09aT9lLmRpcj1yLnNsaWNlKDAsby0xKTplLmRpcj1lLnJvb3QsZX0sc2VwOiJcXCIsZGVsaW1pdGVyOiI7Iix3aW4zMjpudWxsLHBvc2l4Om51bGx9LEJlPXtyZXNvbHZlKC4uLnQpe2xldCByPSIiLG49ITE7Zm9yKGxldCBlPXQubGVuZ3RoLTE7LTE8PWUmJiFuO2UtLSl7Y29uc3QgaT0wPD1lP3RbZV06eGUoKTtEZShpLCJwYXRoIiksMCE9PWkubGVuZ3RoJiYocj1pKyIvIityLG49NDc9PT1pLmNoYXJDb2RlQXQoMCkpfXJldHVybiByPU9lKHIsIW4sIi8iLEllKSxuPyIvIityOjA8ci5sZW5ndGg/cjoiLiJ9LG5vcm1hbGl6ZShlKXtpZihEZShlLCJwYXRoIiksMD09PWUubGVuZ3RoKXJldHVybiIuIjt2YXIgdD00Nz09PWUuY2hhckNvZGVBdCgwKSxyPTQ3PT09ZS5jaGFyQ29kZUF0KGUubGVuZ3RoLTEpO3JldHVybiAwPT09KGU9T2UoZSwhdCwiLyIsSWUpKS5sZW5ndGg/dD8iLyI6cj8iLi8iOiIuIjoociYmKGUrPSIvIiksdD8iLyIrZTplKX0saXNBYnNvbHV0ZShlKXtyZXR1cm4gRGUoZSwicGF0aCIpLDA8ZS5sZW5ndGgmJjQ3PT09ZS5jaGFyQ29kZUF0KDApfSxqb2luKC4uLnQpe2lmKDA9PT10Lmxlbmd0aClyZXR1cm4iLiI7bGV0IHI7Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDsrK2Upe3ZhciBuPXRbZV07RGUobiwicGF0aCIpLDA8bi5sZW5ndGgmJih2b2lkIDA9PT1yP3I9bjpyKz0iLyIrbil9cmV0dXJuIHZvaWQgMD09PXI/Ii4iOkJlLm5vcm1hbGl6ZShyKX0scmVsYXRpdmUoZSx0KXtpZihEZShlLCJmcm9tIiksRGUodCwidG8iKSxlPT09dClyZXR1cm4iIjtpZigoZT1CZS5yZXNvbHZlKGUpKT09PSh0PUJlLnJlc29sdmUodCkpKXJldHVybiIiO3ZhciByPWUubGVuZ3RoLG49ci0xLGk9dC5sZW5ndGgtMSxhPW48aT9uOmk7bGV0IG89LTEscz0wO2Zvcig7czxhO3MrKyl7dmFyIGw9ZS5jaGFyQ29kZUF0KDErcyk7aWYobCE9PXQuY2hhckNvZGVBdCgxK3MpKWJyZWFrOzQ3PT09bCYmKG89cyl9aWYocz09PWEpaWYoYTxpKXtpZig0Nz09PXQuY2hhckNvZGVBdCgxK3MpKXJldHVybiB0LnNsaWNlKDErcysxKTtpZigwPT09cylyZXR1cm4gdC5zbGljZSgxK3MpfWVsc2UgYTxuJiYoNDc9PT1lLmNoYXJDb2RlQXQoMStzKT9vPXM6MD09PXMmJihvPTApKTtsZXQgaD0iIjtmb3Iocz0xK28rMTtzPD1yOysrcylzIT09ciYmNDchPT1lLmNoYXJDb2RlQXQocyl8fChoKz0wPT09aC5sZW5ndGg/Ii4uIjoiLy4uIik7cmV0dXJuIiIraCt0LnNsaWNlKDErbyl9LHRvTmFtZXNwYWNlZFBhdGgoZSl7cmV0dXJuIGV9LGRpcm5hbWUodCl7aWYoRGUodCwicGF0aCIpLDA9PT10Lmxlbmd0aClyZXR1cm4iLiI7dmFyIGU9NDc9PT10LmNoYXJDb2RlQXQoMCk7bGV0IHI9LTEsbj0hMDtmb3IobGV0IGU9dC5sZW5ndGgtMTsxPD1lOy0tZSlpZig0Nz09PXQuY2hhckNvZGVBdChlKSl7aWYoIW4pe3I9ZTticmVha319ZWxzZSBuPSExO3JldHVybi0xPT09cj9lPyIvIjoiLiI6ZSYmMT09PXI/Ii8vIjp0LnNsaWNlKDAscil9LGJhc2VuYW1lKHIsbil7dm9pZCAwIT09biYmRGUobiwiZXh0IiksRGUociwicGF0aCIpO2xldCBpPTAsYT0tMSxvPSEwLHM7aWYodm9pZCAwIT09biYmMDxuLmxlbmd0aCYmbi5sZW5ndGg8PXIubGVuZ3RoKXtpZihuPT09cilyZXR1cm4iIjtsZXQgZT1uLmxlbmd0aC0xLHQ9LTE7Zm9yKHM9ci5sZW5ndGgtMTswPD1zOy0tcyl7dmFyIGw9ci5jaGFyQ29kZUF0KHMpO2lmKDQ3PT09bCl7aWYoIW8pe2k9cysxO2JyZWFrfX1lbHNlLTE9PT10JiYobz0hMSx0PXMrMSksMDw9ZSYmKGw9PT1uLmNoYXJDb2RlQXQoZSk/LTE9PS0tZSYmKGE9cyk6KGU9LTEsYT10KSl9cmV0dXJuIGk9PT1hP2E9dDotMT09PWEmJihhPXIubGVuZ3RoKSxyLnNsaWNlKGksYSl9Zm9yKHM9ci5sZW5ndGgtMTswPD1zOy0tcylpZig0Nz09PXIuY2hhckNvZGVBdChzKSl7aWYoIW8pe2k9cysxO2JyZWFrfX1lbHNlLTE9PT1hJiYobz0hMSxhPXMrMSk7cmV0dXJuLTE9PT1hPyIiOnIuc2xpY2UoaSxhKX0sZXh0bmFtZSh0KXtEZSh0LCJwYXRoIik7bGV0IHI9LTEsbj0wLGk9LTEsYT0hMCxvPTA7Zm9yKGxldCBlPXQubGVuZ3RoLTE7MDw9ZTstLWUpe3ZhciBzPXQuY2hhckNvZGVBdChlKTtpZig0Nz09PXMpe2lmKGEpY29udGludWU7bj1lKzE7YnJlYWt9LTE9PT1pJiYoYT0hMSxpPWUrMSksNDY9PT1zPy0xPT09cj9yPWU6MSE9PW8mJihvPTEpOi0xIT09ciYmKG89LTEpfXJldHVybi0xPT09cnx8LTE9PT1pfHwwPT09b3x8MT09PW8mJnI9PT1pLTEmJnI9PT1uKzE/IiI6dC5zbGljZShyLGkpfSxmb3JtYXQ6RmUuYmluZChudWxsLCIvIikscGFyc2UoZSl7RGUoZSwicGF0aCIpO2NvbnN0IHQ9e3Jvb3Q6IiIsZGlyOiIiLGJhc2U6IiIsZXh0OiIiLG5hbWU6IiJ9O2lmKDA9PT1lLmxlbmd0aClyZXR1cm4gdDt2YXIgcj00Nz09PWUuY2hhckNvZGVBdCgwKTtsZXQgbixpPShuPXI/KHQucm9vdD0iLyIsMSk6MCwtMSksYT0wLG89LTEscz0hMCxsPWUubGVuZ3RoLTEsaD0wO2Zvcig7bD49bjstLWwpe3ZhciB1PWUuY2hhckNvZGVBdChsKTtpZig0Nz09PXUpe2lmKHMpY29udGludWU7YT1sKzE7YnJlYWt9LTE9PT1vJiYocz0hMSxvPWwrMSksNDY9PT11Py0xPT09aT9pPWw6MSE9PWgmJihoPTEpOi0xIT09aSYmKGg9LTEpfWlmKC0xIT09byl7Y29uc3Qgbj0wPT09YSYmcj8xOmE7LTE9PT1pfHwwPT09aHx8MT09PWgmJmk9PT1vLTEmJmk9PT1hKzE/dC5iYXNlPXQubmFtZT1lLnNsaWNlKG4sbyk6KHQubmFtZT1lLnNsaWNlKG4saSksdC5iYXNlPWUuc2xpY2UobixvKSx0LmV4dD1lLnNsaWNlKGksbykpfXJldHVybiAwPGE/dC5kaXI9ZS5zbGljZSgwLGEtMSk6ciYmKHQuZGlyPSIvIiksdH0sc2VwOiIvIixkZWxpbWl0ZXI6IjoiLHdpbjMyOm51bGwscG9zaXg6bnVsbH0scWU9KEJlLndpbjMyPVRlLndpbjMyPVRlLEJlLnBvc2l4PVRlLnBvc2l4PUJlLCgid2luMzIiPT09dD9UZTpCZSkubm9ybWFsaXplKSxVZT0oKCJ3aW4zMiI9PT10P1RlOkJlKS5yZXNvbHZlLCgid2luMzIiPT09dD9UZTpCZSkucmVsYXRpdmUsKCJ3aW4zMiI9PT10P1RlOkJlKS5kaXJuYW1lLCgid2luMzIiPT09dD9UZTpCZSkuYmFzZW5hbWUpLEhlPSgid2luMzIiPT09dD9UZTpCZSkuZXh0bmFtZSxXZT0oIndpbjMyIj09PXQ/VGU6QmUpLnNlcCx6ZT0vXlx3W1x3XGQrLi1dKiQvLGplPS9eXC8vLCRlPS9eXC9cLy87ZnVuY3Rpb24gR2UoZSx0KXtpZighZS5zY2hlbWUmJnQpdGhyb3cgbmV3IEVycm9yKGBbVXJpRXJyb3JdOiBTY2hlbWUgaXMgbWlzc2luZzoge3NjaGVtZTogIiIsIGF1dGhvcml0eTogIiR7ZS5hdXRob3JpdHl9IiwgcGF0aDogIiR7ZS5wYXRofSIsIHF1ZXJ5OiAiJHtlLnF1ZXJ5fSIsIGZyYWdtZW50OiAiJHtlLmZyYWdtZW50fSJ9YCk7aWYoZS5zY2hlbWUmJiF6ZS50ZXN0KGUuc2NoZW1lKSl0aHJvdyBuZXcgRXJyb3IoIltVcmlFcnJvcl06IFNjaGVtZSBjb250YWlucyBpbGxlZ2FsIGNoYXJhY3RlcnMuIik7aWYoZS5wYXRoKWlmKGUuYXV0aG9yaXR5KXtpZighamUudGVzdChlLnBhdGgpKXRocm93IG5ldyBFcnJvcignW1VyaUVycm9yXTogSWYgYSBVUkkgY29udGFpbnMgYW4gYXV0aG9yaXR5IGNvbXBvbmVudCwgdGhlbiB0aGUgcGF0aCBjb21wb25lbnQgbXVzdCBlaXRoZXIgYmUgZW1wdHkgb3IgYmVnaW4gd2l0aCBhIHNsYXNoICgiLyIpIGNoYXJhY3RlcicpfWVsc2UgaWYoJGUudGVzdChlLnBhdGgpKXRocm93IG5ldyBFcnJvcignW1VyaUVycm9yXTogSWYgYSBVUkkgZG9lcyBub3QgY29udGFpbiBhbiBhdXRob3JpdHkgY29tcG9uZW50LCB0aGVuIHRoZSBwYXRoIGNhbm5vdCBiZWdpbiB3aXRoIHR3byBzbGFzaCBjaGFyYWN0ZXJzICgiLy8iKScpfWNvbnN0IEplPSIvIixRZT0vXigoW146Lz8jXSs/KTopPyhcL1wvKFteLz8jXSopKT8oW14/I10qKShcPyhbXiNdKikpPygjKC4qKSk/LztjbGFzcyBZZXtjb25zdHJ1Y3RvcihlLHQscixuLGksYT0hMSl7dmFyIG87Im9iamVjdCI9PXR5cGVvZiBlPyh0aGlzLnNjaGVtZT1lLnNjaGVtZXx8IiIsdGhpcy5hdXRob3JpdHk9ZS5hdXRob3JpdHl8fCIiLHRoaXMucGF0aD1lLnBhdGh8fCIiLHRoaXMucXVlcnk9ZS5xdWVyeXx8IiIsdGhpcy5mcmFnbWVudD1lLmZyYWdtZW50fHwiIik6KHRoaXMuc2NoZW1lPShvPWEsKGU9ZSl8fG8/ZToiZmlsZSIpLHRoaXMuYXV0aG9yaXR5PXR8fCIiLHRoaXMucGF0aD1mdW5jdGlvbihlLHQpe3N3aXRjaChlKXtjYXNlImh0dHBzIjpjYXNlImh0dHAiOmNhc2UiZmlsZSI6dD90WzBdIT09SmUmJih0PUplK3QpOnQ9SmV9cmV0dXJuIHR9KHRoaXMuc2NoZW1lLHJ8fCIiKSx0aGlzLnF1ZXJ5PW58fCIiLHRoaXMuZnJhZ21lbnQ9aXx8IiIsR2UodGhpcyxhKSl9c3RhdGljIGlzVXJpKGUpe3JldHVybiBlIGluc3RhbmNlb2YgWWV8fCEhZSYmKCJzdHJpbmciPT10eXBlb2YgZS5hdXRob3JpdHkmJiJzdHJpbmciPT10eXBlb2YgZS5mcmFnbWVudCYmInN0cmluZyI9PXR5cGVvZiBlLnBhdGgmJiJzdHJpbmciPT10eXBlb2YgZS5xdWVyeSYmInN0cmluZyI9PXR5cGVvZiBlLnNjaGVtZSYmInN0cmluZyI9PXR5cGVvZiBlLmZzUGF0aCYmImZ1bmN0aW9uIj09dHlwZW9mIGUud2l0aCYmImZ1bmN0aW9uIj09dHlwZW9mIGUudG9TdHJpbmcpfWdldCBmc1BhdGgoKXtyZXR1cm4gbnQodGhpcywhMSl9d2l0aChlKXtpZighZSlyZXR1cm4gdGhpcztsZXR7c2NoZW1lOnQsYXV0aG9yaXR5OnIscGF0aDpuLHF1ZXJ5OmksZnJhZ21lbnQ6YX09ZTtyZXR1cm4gdm9pZCAwPT09dD90PXRoaXMuc2NoZW1lOm51bGw9PT10JiYodD0iIiksdm9pZCAwPT09cj9yPXRoaXMuYXV0aG9yaXR5Om51bGw9PT1yJiYocj0iIiksdm9pZCAwPT09bj9uPXRoaXMucGF0aDpudWxsPT09biYmKG49IiIpLHZvaWQgMD09PWk/aT10aGlzLnF1ZXJ5Om51bGw9PT1pJiYoaT0iIiksdm9pZCAwPT09YT9hPXRoaXMuZnJhZ21lbnQ6bnVsbD09PWEmJihhPSIiKSx0PT09dGhpcy5zY2hlbWUmJnI9PT10aGlzLmF1dGhvcml0eSYmbj09PXRoaXMucGF0aCYmaT09PXRoaXMucXVlcnkmJmE9PT10aGlzLmZyYWdtZW50P3RoaXM6bmV3IFhlKHQscixuLGksYSl9c3RhdGljIHBhcnNlKGUsdD0hMSl7ZT1RZS5leGVjKGUpO3JldHVybiBlP25ldyBYZShlWzJdfHwiIixvdChlWzRdfHwiIiksb3QoZVs1XXx8IiIpLG90KGVbN118fCIiKSxvdChlWzldfHwiIiksdCk6bmV3IFhlKCIiLCIiLCIiLCIiLCIiKX1zdGF0aWMgZmlsZShlKXtsZXQgdD0iIjt2YXIgcjtyZXR1cm4oZT1JP2UucmVwbGFjZSgvXFwvZyxKZSk6ZSlbMF09PT1KZSYmZVsxXT09PUplJiYoZT0tMT09PShyPWUuaW5kZXhPZihKZSwyKSk/KHQ9ZS5zdWJzdHJpbmcoMiksSmUpOih0PWUuc3Vic3RyaW5nKDIsciksZS5zdWJzdHJpbmcocil8fEplKSksbmV3IFhlKCJmaWxlIix0LGUsIiIsIiIpfXN0YXRpYyBmcm9tKGUpe2U9bmV3IFhlKGUuc2NoZW1lLGUuYXV0aG9yaXR5LGUucGF0aCxlLnF1ZXJ5LGUuZnJhZ21lbnQpO3JldHVybiBHZShlLCEwKSxlfXN0YXRpYyBqb2luUGF0aChlLC4uLnQpe2lmKCFlLnBhdGgpdGhyb3cgbmV3IEVycm9yKCJbVXJpRXJyb3JdOiBjYW5ub3QgY2FsbCBqb2luUGF0aCBvbiBVUkkgd2l0aG91dCBwYXRoIik7bGV0IHI7cmV0dXJuIHI9SSYmImZpbGUiPT09ZS5zY2hlbWU/WWUuZmlsZShUZS5qb2luKG50KGUsITApLC4uLnQpKS5wYXRoOkJlLmpvaW4oZS5wYXRoLC4uLnQpLGUud2l0aCh7cGF0aDpyfSl9dG9TdHJpbmcoZT0hMSl7cmV0dXJuIGl0KHRoaXMsZSl9dG9KU09OKCl7cmV0dXJuIHRoaXN9c3RhdGljIHJldml2ZShlKXtpZihlKXtpZihlIGluc3RhbmNlb2YgWWUpcmV0dXJuIGU7e2NvbnN0IHQ9bmV3IFhlKGUpO3JldHVybiB0Ll9mb3JtYXR0ZWQ9ZS5leHRlcm5hbCx0Ll9mc1BhdGg9ZS5fc2VwPT09WmU/ZS5mc1BhdGg6bnVsbCx0fX1yZXR1cm4gZX19Y29uc3QgWmU9ST8xOnZvaWQgMDtjbGFzcyBYZSBleHRlbmRzIFlle2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLl9mb3JtYXR0ZWQ9bnVsbCx0aGlzLl9mc1BhdGg9bnVsbH1nZXQgZnNQYXRoKCl7cmV0dXJuIHRoaXMuX2ZzUGF0aHx8KHRoaXMuX2ZzUGF0aD1udCh0aGlzLCExKSksdGhpcy5fZnNQYXRofXRvU3RyaW5nKGU9ITEpe3JldHVybiBlP2l0KHRoaXMsITApOih0aGlzLl9mb3JtYXR0ZWR8fCh0aGlzLl9mb3JtYXR0ZWQ9aXQodGhpcywhMSkpLHRoaXMuX2Zvcm1hdHRlZCl9dG9KU09OKCl7Y29uc3QgZT17JG1pZDoxfTtyZXR1cm4gdGhpcy5fZnNQYXRoJiYoZS5mc1BhdGg9dGhpcy5fZnNQYXRoLGUuX3NlcD1aZSksdGhpcy5fZm9ybWF0dGVkJiYoZS5leHRlcm5hbD10aGlzLl9mb3JtYXR0ZWQpLHRoaXMucGF0aCYmKGUucGF0aD10aGlzLnBhdGgpLHRoaXMuc2NoZW1lJiYoZS5zY2hlbWU9dGhpcy5zY2hlbWUpLHRoaXMuYXV0aG9yaXR5JiYoZS5hdXRob3JpdHk9dGhpcy5hdXRob3JpdHkpLHRoaXMucXVlcnkmJihlLnF1ZXJ5PXRoaXMucXVlcnkpLHRoaXMuZnJhZ21lbnQmJihlLmZyYWdtZW50PXRoaXMuZnJhZ21lbnQpLGV9fWNvbnN0IGV0PXtbNThdOiIlM0EiLDQ3OiIlMkYiLDYzOiIlM0YiLDM1OiIlMjMiLDkxOiIlNUIiLDkzOiIlNUQiLDY0OiIlNDAiLDMzOiIlMjEiLDM2OiIlMjQiLDM4OiIlMjYiLDM5OiIlMjciLDQwOiIlMjgiLDQxOiIlMjkiLDQyOiIlMkEiLDQzOiIlMkIiLDQ0OiIlMkMiLDU5OiIlM0IiLDYxOiIlM0QiLDMyOiIlMjAifTtmdW5jdGlvbiB0dCh0LHIpe2xldCBuPXZvaWQgMCxpPS0xO2ZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSsrKXt2YXIgYT10LmNoYXJDb2RlQXQoZSk7OTc8PWEmJmE8PTEyMnx8NjU8PWEmJmE8PTkwfHw0ODw9YSYmYTw9NTd8fDQ1PT09YXx8NDY9PT1hfHw5NT09PWF8fDEyNj09PWF8fHImJjQ3PT09YT8oLTEhPT1pJiYobis9ZW5jb2RlVVJJQ29tcG9uZW50KHQuc3Vic3RyaW5nKGksZSkpLGk9LTEpLHZvaWQgMCE9PW4mJihuKz10LmNoYXJBdChlKSkpOih2b2lkIDA9PT1uJiYobj10LnN1YnN0cigwLGUpKSx2b2lkIDAhPT0oYT1ldFthXSk/KC0xIT09aSYmKG4rPWVuY29kZVVSSUNvbXBvbmVudCh0LnN1YnN0cmluZyhpLGUpKSxpPS0xKSxuKz1hKTotMT09PWkmJihpPWUpKX1yZXR1cm4tMSE9PWkmJihuKz1lbmNvZGVVUklDb21wb25lbnQodC5zdWJzdHJpbmcoaSkpKSx2b2lkIDAhPT1uP246dH1mdW5jdGlvbiBydCh0KXtsZXQgcj12b2lkIDA7Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKyspe3ZhciBuPXQuY2hhckNvZGVBdChlKTszNT09PW58fDYzPT09bj8odm9pZCAwPT09ciYmKHI9dC5zdWJzdHIoMCxlKSkscis9ZXRbbl0pOnZvaWQgMCE9PXImJihyKz10W2VdKX1yZXR1cm4gdm9pZCAwIT09cj9yOnR9ZnVuY3Rpb24gbnQoZSx0KXtsZXQgcjtyZXR1cm4gcj1lLmF1dGhvcml0eSYmMTxlLnBhdGgubGVuZ3RoJiYiZmlsZSI9PT1lLnNjaGVtZT8iLy8iK2UuYXV0aG9yaXR5K2UucGF0aDo0Nz09PWUucGF0aC5jaGFyQ29kZUF0KDApJiYoNjU8PWUucGF0aC5jaGFyQ29kZUF0KDEpJiZlLnBhdGguY2hhckNvZGVBdCgxKTw9OTB8fDk3PD1lLnBhdGguY2hhckNvZGVBdCgxKSYmZS5wYXRoLmNoYXJDb2RlQXQoMSk8PTEyMikmJjU4PT09ZS5wYXRoLmNoYXJDb2RlQXQoMik/dD9lLnBhdGguc3Vic3RyKDEpOmUucGF0aFsxXS50b0xvd2VyQ2FzZSgpK2UucGF0aC5zdWJzdHIoMik6ZS5wYXRoLHI9ST9yLnJlcGxhY2UoL1wvL2csIlxcIik6cn1mdW5jdGlvbiBpdChlLHQpe2NvbnN0IHI9dD9ydDp0dDtsZXQgbj0iIix7c2NoZW1lOmksYXV0aG9yaXR5OmEscGF0aDpvLHF1ZXJ5OnMsZnJhZ21lbnQ6bH09ZTtpZihpJiYobj1uK2krIjoiKSwhYSYmImZpbGUiIT09aXx8KG49KG4rPUplKStKZSksYSl7bGV0IGU9YS5pbmRleE9mKCJAIik7aWYoLTEhPT1lKXtjb25zdCBoPWEuc3Vic3RyKDAsZSk7YT1hLnN1YnN0cihlKzEpLC0xPT09KGU9aC5pbmRleE9mKCI6IikpP24rPXIoaCwhMSk6bj0obj1uK3IoaC5zdWJzdHIoMCxlKSwhMSkrIjoiKStyKGguc3Vic3RyKGUrMSksITEpLG4rPSJAIn1hPWEudG9Mb3dlckNhc2UoKSwtMT09PShlPWEuaW5kZXhPZigiOiIpKT9uKz1yKGEsITEpOm49KG4rPXIoYS5zdWJzdHIoMCxlKSwhMSkpK2Euc3Vic3RyKGUpfXJldHVybiBvJiYoMzw9by5sZW5ndGgmJjQ3PT09by5jaGFyQ29kZUF0KDApJiY1OD09PW8uY2hhckNvZGVBdCgyKT82NTw9KGU9by5jaGFyQ29kZUF0KDEpKSYmZTw9OTAmJihvPWAvJHtTdHJpbmcuZnJvbUNoYXJDb2RlKGUrMzIpfTpgK28uc3Vic3RyKDMpKToyPD1vLmxlbmd0aCYmNTg9PT1vLmNoYXJDb2RlQXQoMSkmJig2NTw9KGU9by5jaGFyQ29kZUF0KDApKSYmZTw9OTAmJihvPVN0cmluZy5mcm9tQ2hhckNvZGUoZSszMikrIjoiK28uc3Vic3RyKDIpKSksbis9cihvLCEwKSkscyYmKG49KG4rPSI/IikrcihzLCExKSksbj1sPyhuKz0iIyIpKyh0P2w6dHQobCwhMSkpOm59Y29uc3QgYXQ9LyglWzAtOUEtWmEtel1bMC05QS1aYS16XSkrL2c7ZnVuY3Rpb24gb3QoZSl7cmV0dXJuIGUubWF0Y2goYXQpP2UucmVwbGFjZShhdCxlPT5mdW5jdGlvbiB0KHIpe3RyeXtyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KHIpfWNhdGNoKGUpe3JldHVybiAzPHIubGVuZ3RoP3Iuc3Vic3RyKDAsMykrdChyLnN1YnN0cigzKSk6cn19KGUpKTplfWNsYXNzIHN0e2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5saW5lTnVtYmVyPWUsdGhpcy5jb2x1bW49dH13aXRoKGU9dGhpcy5saW5lTnVtYmVyLHQ9dGhpcy5jb2x1bW4pe3JldHVybiBlPT09dGhpcy5saW5lTnVtYmVyJiZ0PT09dGhpcy5jb2x1bW4/dGhpczpuZXcgc3QoZSx0KX1kZWx0YShlPTAsdD0wKXtyZXR1cm4gdGhpcy53aXRoKHRoaXMubGluZU51bWJlcitlLHRoaXMuY29sdW1uK3QpfWVxdWFscyhlKXtyZXR1cm4gc3QuZXF1YWxzKHRoaXMsZSl9c3RhdGljIGVxdWFscyhlLHQpe3JldHVybiFlJiYhdHx8ISFlJiYhIXQmJmUubGluZU51bWJlcj09PXQubGluZU51bWJlciYmZS5jb2x1bW49PT10LmNvbHVtbn1pc0JlZm9yZShlKXtyZXR1cm4gc3QuaXNCZWZvcmUodGhpcyxlKX1zdGF0aWMgaXNCZWZvcmUoZSx0KXtyZXR1cm4gZS5saW5lTnVtYmVyPHQubGluZU51bWJlcnx8ISh0LmxpbmVOdW1iZXI8ZS5saW5lTnVtYmVyKSYmZS5jb2x1bW48dC5jb2x1bW59aXNCZWZvcmVPckVxdWFsKGUpe3JldHVybiBzdC5pc0JlZm9yZU9yRXF1YWwodGhpcyxlKX1zdGF0aWMgaXNCZWZvcmVPckVxdWFsKGUsdCl7cmV0dXJuIGUubGluZU51bWJlcjx0LmxpbmVOdW1iZXJ8fCEodC5saW5lTnVtYmVyPGUubGluZU51bWJlcikmJmUuY29sdW1uPD10LmNvbHVtbn1zdGF0aWMgY29tcGFyZShlLHQpe3ZhciByPTB8ZS5saW5lTnVtYmVyLG49MHx0LmxpbmVOdW1iZXI7cmV0dXJuIHIhPW4/ci1uOigwfGUuY29sdW1uKS0oMHx0LmNvbHVtbil9Y2xvbmUoKXtyZXR1cm4gbmV3IHN0KHRoaXMubGluZU51bWJlcix0aGlzLmNvbHVtbil9dG9TdHJpbmcoKXtyZXR1cm4iKCIrdGhpcy5saW5lTnVtYmVyKyIsIit0aGlzLmNvbHVtbisiKSJ9c3RhdGljIGxpZnQoZSl7cmV0dXJuIG5ldyBzdChlLmxpbmVOdW1iZXIsZS5jb2x1bW4pfXN0YXRpYyBpc0lQb3NpdGlvbihlKXtyZXR1cm4gZSYmIm51bWJlciI9PXR5cGVvZiBlLmxpbmVOdW1iZXImJiJudW1iZXIiPT10eXBlb2YgZS5jb2x1bW59fWNsYXNzIHB7Y29uc3RydWN0b3IoZSx0LHIsbil7cjxlfHxlPT09ciYmbjx0Pyh0aGlzLnN0YXJ0TGluZU51bWJlcj1yLHRoaXMuc3RhcnRDb2x1bW49bix0aGlzLmVuZExpbmVOdW1iZXI9ZSx0aGlzLmVuZENvbHVtbj10KToodGhpcy5zdGFydExpbmVOdW1iZXI9ZSx0aGlzLnN0YXJ0Q29sdW1uPXQsdGhpcy5lbmRMaW5lTnVtYmVyPXIsdGhpcy5lbmRDb2x1bW49bil9aXNFbXB0eSgpe3JldHVybiBwLmlzRW1wdHkodGhpcyl9c3RhdGljIGlzRW1wdHkoZSl7cmV0dXJuIGUuc3RhcnRMaW5lTnVtYmVyPT09ZS5lbmRMaW5lTnVtYmVyJiZlLnN0YXJ0Q29sdW1uPT09ZS5lbmRDb2x1bW59Y29udGFpbnNQb3NpdGlvbihlKXtyZXR1cm4gcC5jb250YWluc1Bvc2l0aW9uKHRoaXMsZSl9c3RhdGljIGNvbnRhaW5zUG9zaXRpb24oZSx0KXtyZXR1cm4hKHQubGluZU51bWJlcjxlLnN0YXJ0TGluZU51bWJlcnx8dC5saW5lTnVtYmVyPmUuZW5kTGluZU51bWJlcikmJighKHQubGluZU51bWJlcj09PWUuc3RhcnRMaW5lTnVtYmVyJiZ0LmNvbHVtbjxlLnN0YXJ0Q29sdW1uKSYmISh0LmxpbmVOdW1iZXI9PT1lLmVuZExpbmVOdW1iZXImJnQuY29sdW1uPmUuZW5kQ29sdW1uKSl9c3RhdGljIHN0cmljdENvbnRhaW5zUG9zaXRpb24oZSx0KXtyZXR1cm4hKHQubGluZU51bWJlcjxlLnN0YXJ0TGluZU51bWJlcnx8dC5saW5lTnVtYmVyPmUuZW5kTGluZU51bWJlcikmJighKHQubGluZU51bWJlcj09PWUuc3RhcnRMaW5lTnVtYmVyJiZ0LmNvbHVtbjw9ZS5zdGFydENvbHVtbikmJiEodC5saW5lTnVtYmVyPT09ZS5lbmRMaW5lTnVtYmVyJiZ0LmNvbHVtbj49ZS5lbmRDb2x1bW4pKX1jb250YWluc1JhbmdlKGUpe3JldHVybiBwLmNvbnRhaW5zUmFuZ2UodGhpcyxlKX1zdGF0aWMgY29udGFpbnNSYW5nZShlLHQpe3JldHVybiEodC5zdGFydExpbmVOdW1iZXI8ZS5zdGFydExpbmVOdW1iZXJ8fHQuZW5kTGluZU51bWJlcjxlLnN0YXJ0TGluZU51bWJlcikmJighKHQuc3RhcnRMaW5lTnVtYmVyPmUuZW5kTGluZU51bWJlcnx8dC5lbmRMaW5lTnVtYmVyPmUuZW5kTGluZU51bWJlcikmJighKHQuc3RhcnRMaW5lTnVtYmVyPT09ZS5zdGFydExpbmVOdW1iZXImJnQuc3RhcnRDb2x1bW48ZS5zdGFydENvbHVtbikmJiEodC5lbmRMaW5lTnVtYmVyPT09ZS5lbmRMaW5lTnVtYmVyJiZ0LmVuZENvbHVtbj5lLmVuZENvbHVtbikpKX1zdHJpY3RDb250YWluc1JhbmdlKGUpe3JldHVybiBwLnN0cmljdENvbnRhaW5zUmFuZ2UodGhpcyxlKX1zdGF0aWMgc3RyaWN0Q29udGFpbnNSYW5nZShlLHQpe3JldHVybiEodC5zdGFydExpbmVOdW1iZXI8ZS5zdGFydExpbmVOdW1iZXJ8fHQuZW5kTGluZU51bWJlcjxlLnN0YXJ0TGluZU51bWJlcikmJighKHQuc3RhcnRMaW5lTnVtYmVyPmUuZW5kTGluZU51bWJlcnx8dC5lbmRMaW5lTnVtYmVyPmUuZW5kTGluZU51bWJlcikmJighKHQuc3RhcnRMaW5lTnVtYmVyPT09ZS5zdGFydExpbmVOdW1iZXImJnQuc3RhcnRDb2x1bW48PWUuc3RhcnRDb2x1bW4pJiYhKHQuZW5kTGluZU51bWJlcj09PWUuZW5kTGluZU51bWJlciYmdC5lbmRDb2x1bW4+PWUuZW5kQ29sdW1uKSkpfXBsdXNSYW5nZShlKXtyZXR1cm4gcC5wbHVzUmFuZ2UodGhpcyxlKX1zdGF0aWMgcGx1c1JhbmdlKGUsdCl7bGV0IHIsbixpLGE7cmV0dXJuIG49dC5zdGFydExpbmVOdW1iZXI8ZS5zdGFydExpbmVOdW1iZXI/KHI9dC5zdGFydExpbmVOdW1iZXIsdC5zdGFydENvbHVtbik6dC5zdGFydExpbmVOdW1iZXI9PT1lLnN0YXJ0TGluZU51bWJlcj8ocj10LnN0YXJ0TGluZU51bWJlcixNYXRoLm1pbih0LnN0YXJ0Q29sdW1uLGUuc3RhcnRDb2x1bW4pKToocj1lLnN0YXJ0TGluZU51bWJlcixlLnN0YXJ0Q29sdW1uKSxhPXQuZW5kTGluZU51bWJlcj5lLmVuZExpbmVOdW1iZXI/KGk9dC5lbmRMaW5lTnVtYmVyLHQuZW5kQ29sdW1uKTp0LmVuZExpbmVOdW1iZXI9PT1lLmVuZExpbmVOdW1iZXI/KGk9dC5lbmRMaW5lTnVtYmVyLE1hdGgubWF4KHQuZW5kQ29sdW1uLGUuZW5kQ29sdW1uKSk6KGk9ZS5lbmRMaW5lTnVtYmVyLGUuZW5kQ29sdW1uKSxuZXcgcChyLG4saSxhKX1pbnRlcnNlY3RSYW5nZXMoZSl7cmV0dXJuIHAuaW50ZXJzZWN0UmFuZ2VzKHRoaXMsZSl9c3RhdGljIGludGVyc2VjdFJhbmdlcyhlLHQpe2xldCByPWUuc3RhcnRMaW5lTnVtYmVyLG49ZS5zdGFydENvbHVtbixpPWUuZW5kTGluZU51bWJlcixhPWUuZW5kQ29sdW1uO3ZhciBlPXQuc3RhcnRMaW5lTnVtYmVyLG89dC5zdGFydENvbHVtbixzPXQuZW5kTGluZU51bWJlcix0PXQuZW5kQ29sdW1uO3JldHVybiByPGU/KHI9ZSxuPW8pOnI9PT1lJiYobj1NYXRoLm1heChuLG8pKSxpPnM/KGk9cyxhPXQpOmk9PT1zJiYoYT1NYXRoLm1pbihhLHQpKSxyPml8fHI9PT1pJiZuPmE/bnVsbDpuZXcgcChyLG4saSxhKX1lcXVhbHNSYW5nZShlKXtyZXR1cm4gcC5lcXVhbHNSYW5nZSh0aGlzLGUpfXN0YXRpYyBlcXVhbHNSYW5nZShlLHQpe3JldHVybiEhZSYmISF0JiZlLnN0YXJ0TGluZU51bWJlcj09PXQuc3RhcnRMaW5lTnVtYmVyJiZlLnN0YXJ0Q29sdW1uPT09dC5zdGFydENvbHVtbiYmZS5lbmRMaW5lTnVtYmVyPT09dC5lbmRMaW5lTnVtYmVyJiZlLmVuZENvbHVtbj09PXQuZW5kQ29sdW1ufWdldEVuZFBvc2l0aW9uKCl7cmV0dXJuIHAuZ2V0RW5kUG9zaXRpb24odGhpcyl9c3RhdGljIGdldEVuZFBvc2l0aW9uKGUpe3JldHVybiBuZXcgc3QoZS5lbmRMaW5lTnVtYmVyLGUuZW5kQ29sdW1uKX1nZXRTdGFydFBvc2l0aW9uKCl7cmV0dXJuIHAuZ2V0U3RhcnRQb3NpdGlvbih0aGlzKX1zdGF0aWMgZ2V0U3RhcnRQb3NpdGlvbihlKXtyZXR1cm4gbmV3IHN0KGUuc3RhcnRMaW5lTnVtYmVyLGUuc3RhcnRDb2x1bW4pfXRvU3RyaW5nKCl7cmV0dXJuIlsiK3RoaXMuc3RhcnRMaW5lTnVtYmVyKyIsIit0aGlzLnN0YXJ0Q29sdW1uKyIgLT4gIit0aGlzLmVuZExpbmVOdW1iZXIrIiwiK3RoaXMuZW5kQ29sdW1uKyJdIn1zZXRFbmRQb3NpdGlvbihlLHQpe3JldHVybiBuZXcgcCh0aGlzLnN0YXJ0TGluZU51bWJlcix0aGlzLnN0YXJ0Q29sdW1uLGUsdCl9c2V0U3RhcnRQb3NpdGlvbihlLHQpe3JldHVybiBuZXcgcChlLHQsdGhpcy5lbmRMaW5lTnVtYmVyLHRoaXMuZW5kQ29sdW1uKX1jb2xsYXBzZVRvU3RhcnQoKXtyZXR1cm4gcC5jb2xsYXBzZVRvU3RhcnQodGhpcyl9c3RhdGljIGNvbGxhcHNlVG9TdGFydChlKXtyZXR1cm4gbmV3IHAoZS5zdGFydExpbmVOdW1iZXIsZS5zdGFydENvbHVtbixlLnN0YXJ0TGluZU51bWJlcixlLnN0YXJ0Q29sdW1uKX1zdGF0aWMgZnJvbVBvc2l0aW9ucyhlLHQ9ZSl7cmV0dXJuIG5ldyBwKGUubGluZU51bWJlcixlLmNvbHVtbix0LmxpbmVOdW1iZXIsdC5jb2x1bW4pfXN0YXRpYyBsaWZ0KGUpe3JldHVybiBlP25ldyBwKGUuc3RhcnRMaW5lTnVtYmVyLGUuc3RhcnRDb2x1bW4sZS5lbmRMaW5lTnVtYmVyLGUuZW5kQ29sdW1uKTpudWxsfXN0YXRpYyBpc0lSYW5nZShlKXtyZXR1cm4gZSYmIm51bWJlciI9PXR5cGVvZiBlLnN0YXJ0TGluZU51bWJlciYmIm51bWJlciI9PXR5cGVvZiBlLnN0YXJ0Q29sdW1uJiYibnVtYmVyIj09dHlwZW9mIGUuZW5kTGluZU51bWJlciYmIm51bWJlciI9PXR5cGVvZiBlLmVuZENvbHVtbn1zdGF0aWMgYXJlSW50ZXJzZWN0aW5nT3JUb3VjaGluZyhlLHQpe3JldHVybiEoZS5lbmRMaW5lTnVtYmVyPHQuc3RhcnRMaW5lTnVtYmVyfHxlLmVuZExpbmVOdW1iZXI9PT10LnN0YXJ0TGluZU51bWJlciYmZS5lbmRDb2x1bW48dC5zdGFydENvbHVtbikmJiEodC5lbmRMaW5lTnVtYmVyPGUuc3RhcnRMaW5lTnVtYmVyfHx0LmVuZExpbmVOdW1iZXI9PT1lLnN0YXJ0TGluZU51bWJlciYmdC5lbmRDb2x1bW48ZS5zdGFydENvbHVtbil9c3RhdGljIGFyZUludGVyc2VjdGluZyhlLHQpe3JldHVybiEoZS5lbmRMaW5lTnVtYmVyPHQuc3RhcnRMaW5lTnVtYmVyfHxlLmVuZExpbmVOdW1iZXI9PT10LnN0YXJ0TGluZU51bWJlciYmZS5lbmRDb2x1bW48PXQuc3RhcnRDb2x1bW4pJiYhKHQuZW5kTGluZU51bWJlcjxlLnN0YXJ0TGluZU51bWJlcnx8dC5lbmRMaW5lTnVtYmVyPT09ZS5zdGFydExpbmVOdW1iZXImJnQuZW5kQ29sdW1uPD1lLnN0YXJ0Q29sdW1uKX1zdGF0aWMgY29tcGFyZVJhbmdlc1VzaW5nU3RhcnRzKGUsdCl7dmFyIHIsbixpLGEsbyxzO3JldHVybiBlJiZ0PyhyPTB8ZS5zdGFydExpbmVOdW1iZXIpPT0obj0wfHQuc3RhcnRMaW5lTnVtYmVyKT8oaT0wfGUuc3RhcnRDb2x1bW4pPT0oYT0wfHQuc3RhcnRDb2x1bW4pPyhvPTB8ZS5lbmRMaW5lTnVtYmVyKSE9KHM9MHx0LmVuZExpbmVOdW1iZXIpP28tczooMHxlLmVuZENvbHVtbiktKDB8dC5lbmRDb2x1bW4pOmktYTpyLW46KGU/MTowKS0odD8xOjApfXN0YXRpYyBjb21wYXJlUmFuZ2VzVXNpbmdFbmRzKGUsdCl7cmV0dXJuIGUuZW5kTGluZU51bWJlcj09PXQuZW5kTGluZU51bWJlcj9lLmVuZENvbHVtbj09PXQuZW5kQ29sdW1uP2Uuc3RhcnRMaW5lTnVtYmVyPT09dC5zdGFydExpbmVOdW1iZXI/ZS5zdGFydENvbHVtbi10LnN0YXJ0Q29sdW1uOmUuc3RhcnRMaW5lTnVtYmVyLXQuc3RhcnRMaW5lTnVtYmVyOmUuZW5kQ29sdW1uLXQuZW5kQ29sdW1uOmUuZW5kTGluZU51bWJlci10LmVuZExpbmVOdW1iZXJ9c3RhdGljIHNwYW5zTXVsdGlwbGVMaW5lcyhlKXtyZXR1cm4gZS5lbmRMaW5lTnVtYmVyPmUuc3RhcnRMaW5lTnVtYmVyfX1mdW5jdGlvbiBsdChlLHQscixuKXtjb25zdCBpPW5ldyBBZShlLHQscik7cmV0dXJuIGkuQ29tcHV0ZURpZmYobil9Y2xhc3MgaHR7Y29uc3RydWN0b3Iocil7Y29uc3Qgbj1bXSxpPVtdO2ZvcihsZXQgZT0wLHQ9ci5sZW5ndGg7ZTx0O2UrKyluW2VdPW10KHJbZV0sMSksaVtlXT1ndChyW2VdLDEpO3RoaXMubGluZXM9cix0aGlzLl9zdGFydENvbHVtbnM9bix0aGlzLl9lbmRDb2x1bW5zPWl9Z2V0RWxlbWVudHMoKXtjb25zdCByPVtdO2ZvcihsZXQgZT0wLHQ9dGhpcy5saW5lcy5sZW5ndGg7ZTx0O2UrKylyW2VdPXRoaXMubGluZXNbZV0uc3Vic3RyaW5nKHRoaXMuX3N0YXJ0Q29sdW1uc1tlXS0xLHRoaXMuX2VuZENvbHVtbnNbZV0tMSk7cmV0dXJuIHJ9Z2V0U3RyaWN0RWxlbWVudChlKXtyZXR1cm4gdGhpcy5saW5lc1tlXX1nZXRTdGFydExpbmVOdW1iZXIoZSl7cmV0dXJuIGUrMX1nZXRFbmRMaW5lTnVtYmVyKGUpe3JldHVybiBlKzF9Y3JlYXRlQ2hhclNlcXVlbmNlKGUscixuKXtjb25zdCBpPVtdLGE9W10sbz1bXTtsZXQgcz0wO2ZvcihsZXQgdD1yO3Q8PW47dCsrKXtjb25zdCB1PXRoaXMubGluZXNbdF07dmFyIGw9ZT90aGlzLl9zdGFydENvbHVtbnNbdF06MSxoPWU/dGhpcy5fZW5kQ29sdW1uc1t0XTp1Lmxlbmd0aCsxO2ZvcihsZXQgZT1sO2U8aDtlKyspaVtzXT11LmNoYXJDb2RlQXQoZS0xKSxhW3NdPXQrMSxvW3NdPWUscysrfXJldHVybiBuZXcgdXQoaSxhLG8pfX1jbGFzcyB1dHtjb25zdHJ1Y3RvcihlLHQscil7dGhpcy5fY2hhckNvZGVzPWUsdGhpcy5fbGluZU51bWJlcnM9dCx0aGlzLl9jb2x1bW5zPXJ9Z2V0RWxlbWVudHMoKXtyZXR1cm4gdGhpcy5fY2hhckNvZGVzfWdldFN0YXJ0TGluZU51bWJlcihlKXtyZXR1cm4gdGhpcy5fbGluZU51bWJlcnNbZV19Z2V0U3RhcnRDb2x1bW4oZSl7cmV0dXJuIHRoaXMuX2NvbHVtbnNbZV19Z2V0RW5kTGluZU51bWJlcihlKXtyZXR1cm4gdGhpcy5fbGluZU51bWJlcnNbZV19Z2V0RW5kQ29sdW1uKGUpe3JldHVybiB0aGlzLl9jb2x1bW5zW2VdKzF9fWNsYXNzIGN0e2NvbnN0cnVjdG9yKGUsdCxyLG4saSxhLG8scyl7dGhpcy5vcmlnaW5hbFN0YXJ0TGluZU51bWJlcj1lLHRoaXMub3JpZ2luYWxTdGFydENvbHVtbj10LHRoaXMub3JpZ2luYWxFbmRMaW5lTnVtYmVyPXIsdGhpcy5vcmlnaW5hbEVuZENvbHVtbj1uLHRoaXMubW9kaWZpZWRTdGFydExpbmVOdW1iZXI9aSx0aGlzLm1vZGlmaWVkU3RhcnRDb2x1bW49YSx0aGlzLm1vZGlmaWVkRW5kTGluZU51bWJlcj1vLHRoaXMubW9kaWZpZWRFbmRDb2x1bW49c31zdGF0aWMgY3JlYXRlRnJvbURpZmZDaGFuZ2UoZSx0LHIpe2xldCBuLGksYSxvLHMsbCxoLHU7cmV0dXJuIG89MD09PWUub3JpZ2luYWxMZW5ndGg/KG49MCxpPTAsYT0wKToobj10LmdldFN0YXJ0TGluZU51bWJlcihlLm9yaWdpbmFsU3RhcnQpLGk9dC5nZXRTdGFydENvbHVtbihlLm9yaWdpbmFsU3RhcnQpLGE9dC5nZXRFbmRMaW5lTnVtYmVyKGUub3JpZ2luYWxTdGFydCtlLm9yaWdpbmFsTGVuZ3RoLTEpLHQuZ2V0RW5kQ29sdW1uKGUub3JpZ2luYWxTdGFydCtlLm9yaWdpbmFsTGVuZ3RoLTEpKSx1PTA9PT1lLm1vZGlmaWVkTGVuZ3RoPyhzPTAsbD0wLGg9MCk6KHM9ci5nZXRTdGFydExpbmVOdW1iZXIoZS5tb2RpZmllZFN0YXJ0KSxsPXIuZ2V0U3RhcnRDb2x1bW4oZS5tb2RpZmllZFN0YXJ0KSxoPXIuZ2V0RW5kTGluZU51bWJlcihlLm1vZGlmaWVkU3RhcnQrZS5tb2RpZmllZExlbmd0aC0xKSxyLmdldEVuZENvbHVtbihlLm1vZGlmaWVkU3RhcnQrZS5tb2RpZmllZExlbmd0aC0xKSksbmV3IGN0KG4saSxhLG8scyxsLGgsdSl9fWNsYXNzIGR0e2NvbnN0cnVjdG9yKGUsdCxyLG4saSl7dGhpcy5vcmlnaW5hbFN0YXJ0TGluZU51bWJlcj1lLHRoaXMub3JpZ2luYWxFbmRMaW5lTnVtYmVyPXQsdGhpcy5tb2RpZmllZFN0YXJ0TGluZU51bWJlcj1yLHRoaXMubW9kaWZpZWRFbmRMaW5lTnVtYmVyPW4sdGhpcy5jaGFyQ2hhbmdlcz1pfXN0YXRpYyBjcmVhdGVGcm9tRGlmZlJlc3VsdChlLHQsbixpLGEsdSxjKXtsZXQgcixvLHMsbCxoPXZvaWQgMDtpZihvPTA9PT10Lm9yaWdpbmFsTGVuZ3RoPyhyPW4uZ2V0U3RhcnRMaW5lTnVtYmVyKHQub3JpZ2luYWxTdGFydCktMSwwKToocj1uLmdldFN0YXJ0TGluZU51bWJlcih0Lm9yaWdpbmFsU3RhcnQpLG4uZ2V0RW5kTGluZU51bWJlcih0Lm9yaWdpbmFsU3RhcnQrdC5vcmlnaW5hbExlbmd0aC0xKSksbD0wPT09dC5tb2RpZmllZExlbmd0aD8ocz1pLmdldFN0YXJ0TGluZU51bWJlcih0Lm1vZGlmaWVkU3RhcnQpLTEsMCk6KHM9aS5nZXRTdGFydExpbmVOdW1iZXIodC5tb2RpZmllZFN0YXJ0KSxpLmdldEVuZExpbmVOdW1iZXIodC5tb2RpZmllZFN0YXJ0K3QubW9kaWZpZWRMZW5ndGgtMSkpLHUmJjA8dC5vcmlnaW5hbExlbmd0aCYmdC5vcmlnaW5hbExlbmd0aDwyMCYmMDx0Lm1vZGlmaWVkTGVuZ3RoJiZ0Lm1vZGlmaWVkTGVuZ3RoPDIwJiZhKCkpe3ZhciBkPW4uY3JlYXRlQ2hhclNlcXVlbmNlKGUsdC5vcmlnaW5hbFN0YXJ0LHQub3JpZ2luYWxTdGFydCt0Lm9yaWdpbmFsTGVuZ3RoLTEpLGY9aS5jcmVhdGVDaGFyU2VxdWVuY2UoZSx0Lm1vZGlmaWVkU3RhcnQsdC5tb2RpZmllZFN0YXJ0K3QubW9kaWZpZWRMZW5ndGgtMSk7bGV0IHI9bHQoZCxmLGEsITApLmNoYW5nZXM7YyYmKHI9ZnVuY3Rpb24ocil7aWYoci5sZW5ndGg8PTEpcmV0dXJuIHI7Y29uc3Qgbj1bclswXV07bGV0IGk9blswXTtmb3IobGV0IGU9MSx0PXIubGVuZ3RoO2U8dDtlKyspe3ZhciBhPXJbZV0sbz1hLm9yaWdpbmFsU3RhcnQtKGkub3JpZ2luYWxTdGFydCtpLm9yaWdpbmFsTGVuZ3RoKSxzPWEubW9kaWZpZWRTdGFydC0oaS5tb2RpZmllZFN0YXJ0K2kubW9kaWZpZWRMZW5ndGgpO01hdGgubWluKG8scyk8Mz8oaS5vcmlnaW5hbExlbmd0aD1hLm9yaWdpbmFsU3RhcnQrYS5vcmlnaW5hbExlbmd0aC1pLm9yaWdpbmFsU3RhcnQsaS5tb2RpZmllZExlbmd0aD1hLm1vZGlmaWVkU3RhcnQrYS5tb2RpZmllZExlbmd0aC1pLm1vZGlmaWVkU3RhcnQpOihuLnB1c2goYSksaT1hKX1yZXR1cm4gbn0ocikpLGg9W107Zm9yKGxldCBlPTAsdD1yLmxlbmd0aDtlPHQ7ZSsrKWgucHVzaChjdC5jcmVhdGVGcm9tRGlmZkNoYW5nZShyW2VdLGQsZikpfXJldHVybiBuZXcgZHQocixvLHMsbCxoKX19Y2xhc3MgZnR7Y29uc3RydWN0b3IoZSx0LHIpe3RoaXMuc2hvdWxkQ29tcHV0ZUNoYXJDaGFuZ2VzPXIuc2hvdWxkQ29tcHV0ZUNoYXJDaGFuZ2VzLHRoaXMuc2hvdWxkUG9zdFByb2Nlc3NDaGFyQ2hhbmdlcz1yLnNob3VsZFBvc3RQcm9jZXNzQ2hhckNoYW5nZXMsdGhpcy5zaG91bGRJZ25vcmVUcmltV2hpdGVzcGFjZT1yLnNob3VsZElnbm9yZVRyaW1XaGl0ZXNwYWNlLHRoaXMuc2hvdWxkTWFrZVByZXR0eURpZmY9ci5zaG91bGRNYWtlUHJldHR5RGlmZix0aGlzLm9yaWdpbmFsTGluZXM9ZSx0aGlzLm1vZGlmaWVkTGluZXM9dCx0aGlzLm9yaWdpbmFsPW5ldyBodChlKSx0aGlzLm1vZGlmaWVkPW5ldyBodCh0KSx0aGlzLmNvbnRpbnVlTGluZURpZmY9YnQoci5tYXhDb21wdXRhdGlvblRpbWUpLHRoaXMuY29udGludWVDaGFyRGlmZj1idCgwPT09ci5tYXhDb21wdXRhdGlvblRpbWU/MDpNYXRoLm1pbihyLm1heENvbXB1dGF0aW9uVGltZSw1ZTMpKX1jb21wdXRlRGlmZigpe2lmKDE9PT10aGlzLm9yaWdpbmFsLmxpbmVzLmxlbmd0aCYmMD09PXRoaXMub3JpZ2luYWwubGluZXNbMF0ubGVuZ3RoKXJldHVybiAxPT09dGhpcy5tb2RpZmllZC5saW5lcy5sZW5ndGgmJjA9PT10aGlzLm1vZGlmaWVkLmxpbmVzWzBdLmxlbmd0aD97cXVpdEVhcmx5OiExLGNoYW5nZXM6W119OntxdWl0RWFybHk6ITEsY2hhbmdlczpbe29yaWdpbmFsU3RhcnRMaW5lTnVtYmVyOjEsb3JpZ2luYWxFbmRMaW5lTnVtYmVyOjEsbW9kaWZpZWRTdGFydExpbmVOdW1iZXI6MSxtb2RpZmllZEVuZExpbmVOdW1iZXI6dGhpcy5tb2RpZmllZC5saW5lcy5sZW5ndGgsY2hhckNoYW5nZXM6W3ttb2RpZmllZEVuZENvbHVtbjowLG1vZGlmaWVkRW5kTGluZU51bWJlcjowLG1vZGlmaWVkU3RhcnRDb2x1bW46MCxtb2RpZmllZFN0YXJ0TGluZU51bWJlcjowLG9yaWdpbmFsRW5kQ29sdW1uOjAsb3JpZ2luYWxFbmRMaW5lTnVtYmVyOjAsb3JpZ2luYWxTdGFydENvbHVtbjowLG9yaWdpbmFsU3RhcnRMaW5lTnVtYmVyOjB9XX1dfTtpZigxPT09dGhpcy5tb2RpZmllZC5saW5lcy5sZW5ndGgmJjA9PT10aGlzLm1vZGlmaWVkLmxpbmVzWzBdLmxlbmd0aClyZXR1cm57cXVpdEVhcmx5OiExLGNoYW5nZXM6W3tvcmlnaW5hbFN0YXJ0TGluZU51bWJlcjoxLG9yaWdpbmFsRW5kTGluZU51bWJlcjp0aGlzLm9yaWdpbmFsLmxpbmVzLmxlbmd0aCxtb2RpZmllZFN0YXJ0TGluZU51bWJlcjoxLG1vZGlmaWVkRW5kTGluZU51bWJlcjoxLGNoYXJDaGFuZ2VzOlt7bW9kaWZpZWRFbmRDb2x1bW46MCxtb2RpZmllZEVuZExpbmVOdW1iZXI6MCxtb2RpZmllZFN0YXJ0Q29sdW1uOjAsbW9kaWZpZWRTdGFydExpbmVOdW1iZXI6MCxvcmlnaW5hbEVuZENvbHVtbjowLG9yaWdpbmFsRW5kTGluZU51bWJlcjowLG9yaWdpbmFsU3RhcnRDb2x1bW46MCxvcmlnaW5hbFN0YXJ0TGluZU51bWJlcjowfV19XX07dmFyIGU9bHQodGhpcy5vcmlnaW5hbCx0aGlzLm1vZGlmaWVkLHRoaXMuY29udGludWVMaW5lRGlmZix0aGlzLnNob3VsZE1ha2VQcmV0dHlEaWZmKSxyPWUuY2hhbmdlcyxlPWUucXVpdEVhcmx5O2lmKHRoaXMuc2hvdWxkSWdub3JlVHJpbVdoaXRlc3BhY2Upe2NvbnN0IGY9W107Zm9yKGxldCBlPTAsdD1yLmxlbmd0aDtlPHQ7ZSsrKWYucHVzaChkdC5jcmVhdGVGcm9tRGlmZlJlc3VsdCh0aGlzLnNob3VsZElnbm9yZVRyaW1XaGl0ZXNwYWNlLHJbZV0sdGhpcy5vcmlnaW5hbCx0aGlzLm1vZGlmaWVkLHRoaXMuY29udGludWVDaGFyRGlmZix0aGlzLnNob3VsZENvbXB1dGVDaGFyQ2hhbmdlcyx0aGlzLnNob3VsZFBvc3RQcm9jZXNzQ2hhckNoYW5nZXMpKTtyZXR1cm57cXVpdEVhcmx5OmUsY2hhbmdlczpmfX1jb25zdCBuPVtdO2xldCBpPTAsYT0wO2ZvcihsZXQgZT0tMSx0PXIubGVuZ3RoO2U8dDtlKyspe2Zvcih2YXIgbz1lKzE8dD9yW2UrMV06bnVsbCxjPW8/by5vcmlnaW5hbFN0YXJ0OnRoaXMub3JpZ2luYWxMaW5lcy5sZW5ndGgsZD1vP28ubW9kaWZpZWRTdGFydDp0aGlzLm1vZGlmaWVkTGluZXMubGVuZ3RoO2k8YyYmYTxkOyl7Y29uc3QgaD10aGlzLm9yaWdpbmFsTGluZXNbaV0sdT10aGlzLm1vZGlmaWVkTGluZXNbYV07aWYoaCE9PXUpe3tsZXQgZT1tdChoLDEpLHQ9bXQodSwxKTtmb3IoOzE8ZSYmMTx0Oyl7aWYoaC5jaGFyQ29kZUF0KGUtMikhPT11LmNoYXJDb2RlQXQodC0yKSlicmVhaztlLS0sdC0tfSgxPGV8fDE8dCkmJnRoaXMuX3B1c2hUcmltV2hpdGVzcGFjZUNoYXJDaGFuZ2UobixpKzEsMSxlLGErMSwxLHQpfXtsZXQgZT1ndChoLDEpLHQ9Z3QodSwxKTtmb3IodmFyIHM9aC5sZW5ndGgrMSxsPXUubGVuZ3RoKzE7ZTxzJiZ0PGw7KXtpZihoLmNoYXJDb2RlQXQoZS0xKSE9PWguY2hhckNvZGVBdCh0LTEpKWJyZWFrO2UrKyx0Kyt9KGU8c3x8dDxsKSYmdGhpcy5fcHVzaFRyaW1XaGl0ZXNwYWNlQ2hhckNoYW5nZShuLGkrMSxlLHMsYSsxLHQsbCl9fWkrKyxhKyt9byYmKG4ucHVzaChkdC5jcmVhdGVGcm9tRGlmZlJlc3VsdCh0aGlzLnNob3VsZElnbm9yZVRyaW1XaGl0ZXNwYWNlLG8sdGhpcy5vcmlnaW5hbCx0aGlzLm1vZGlmaWVkLHRoaXMuY29udGludWVDaGFyRGlmZix0aGlzLnNob3VsZENvbXB1dGVDaGFyQ2hhbmdlcyx0aGlzLnNob3VsZFBvc3RQcm9jZXNzQ2hhckNoYW5nZXMpKSxpKz1vLm9yaWdpbmFsTGVuZ3RoLGErPW8ubW9kaWZpZWRMZW5ndGgpfXJldHVybntxdWl0RWFybHk6ZSxjaGFuZ2VzOm59fV9wdXNoVHJpbVdoaXRlc3BhY2VDaGFyQ2hhbmdlKHQscixuLGksYSxvLHMpe2lmKCF0aGlzLl9tZXJnZVRyaW1XaGl0ZXNwYWNlQ2hhckNoYW5nZSh0LHIsbixpLGEsbyxzKSl7bGV0IGU9dm9pZCAwO3RoaXMuc2hvdWxkQ29tcHV0ZUNoYXJDaGFuZ2VzJiYoZT1bbmV3IGN0KHIsbixyLGksYSxvLGEscyldKSx0LnB1c2gobmV3IGR0KHIscixhLGEsZSkpfX1fbWVyZ2VUcmltV2hpdGVzcGFjZUNoYXJDaGFuZ2UoZSx0LHIsbixpLGEsbyl7dmFyIHM9ZS5sZW5ndGg7aWYoMD09PXMpcmV0dXJuITE7Y29uc3QgbD1lW3MtMV07cmV0dXJuIDAhPT1sLm9yaWdpbmFsRW5kTGluZU51bWJlciYmMCE9PWwubW9kaWZpZWRFbmRMaW5lTnVtYmVyJiYobC5vcmlnaW5hbEVuZExpbmVOdW1iZXIrMT09PXQmJmwubW9kaWZpZWRFbmRMaW5lTnVtYmVyKzE9PT1pJiYobC5vcmlnaW5hbEVuZExpbmVOdW1iZXI9dCxsLm1vZGlmaWVkRW5kTGluZU51bWJlcj1pLHRoaXMuc2hvdWxkQ29tcHV0ZUNoYXJDaGFuZ2VzJiZsLmNoYXJDaGFuZ2VzJiZsLmNoYXJDaGFuZ2VzLnB1c2gobmV3IGN0KHQscix0LG4saSxhLGksbykpLCEwKSl9fWZ1bmN0aW9uIG10KGUsdCl7ZT1mdW5jdGlvbihyKXtmb3IobGV0IGU9MCx0PXIubGVuZ3RoO2U8dDtlKyspe3ZhciBuPXIuY2hhckNvZGVBdChlKTtpZigzMiE9PW4mJjkhPT1uKXJldHVybiBlfXJldHVybi0xfShlKTtyZXR1cm4tMT09PWU/dDplKzF9ZnVuY3Rpb24gZ3QoZSx0KXtlPWZ1bmN0aW9uKHQscj10Lmxlbmd0aC0xKXtmb3IobGV0IGU9cjswPD1lO2UtLSl7dmFyIG49dC5jaGFyQ29kZUF0KGUpO2lmKDMyIT09biYmOSE9PW4pcmV0dXJuIGV9cmV0dXJuLTF9KGUpO3JldHVybi0xPT09ZT90OmUrMn1mdW5jdGlvbiBidChlKXtpZigwPT09ZSlyZXR1cm4oKT0+ITA7Y29uc3QgdD1EYXRlLm5vdygpO3JldHVybigpPT5EYXRlLm5vdygpLXQ8ZX1mdW5jdGlvbiBwdChlKXtyZXR1cm4gZTwwPzA6MjU1PGU/MjU1OjB8ZX1mdW5jdGlvbiBDdChlKXtyZXR1cm4gZTwwPzA6NDI5NDk2NzI5NTxlPzQyOTQ5NjcyOTU6MHxlfWNsYXNzIHd0e2NvbnN0cnVjdG9yKGUpe3RoaXMudmFsdWVzPWUsdGhpcy5wcmVmaXhTdW09bmV3IFVpbnQzMkFycmF5KGUubGVuZ3RoKSx0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXg9bmV3IEludDMyQXJyYXkoMSksdGhpcy5wcmVmaXhTdW1WYWxpZEluZGV4WzBdPS0xfWluc2VydFZhbHVlcyhlLHQpe2U9Q3QoZSk7Y29uc3Qgcj10aGlzLnZhbHVlcyxuPXRoaXMucHJlZml4U3VtO3ZhciBpPXQubGVuZ3RoO3JldHVybiAwIT09aSYmKHRoaXMudmFsdWVzPW5ldyBVaW50MzJBcnJheShyLmxlbmd0aCtpKSx0aGlzLnZhbHVlcy5zZXQoci5zdWJhcnJheSgwLGUpLDApLHRoaXMudmFsdWVzLnNldChyLnN1YmFycmF5KGUpLGUraSksdGhpcy52YWx1ZXMuc2V0KHQsZSksZS0xPHRoaXMucHJlZml4U3VtVmFsaWRJbmRleFswXSYmKHRoaXMucHJlZml4U3VtVmFsaWRJbmRleFswXT1lLTEpLHRoaXMucHJlZml4U3VtPW5ldyBVaW50MzJBcnJheSh0aGlzLnZhbHVlcy5sZW5ndGgpLDA8PXRoaXMucHJlZml4U3VtVmFsaWRJbmRleFswXSYmdGhpcy5wcmVmaXhTdW0uc2V0KG4uc3ViYXJyYXkoMCx0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF0rMSkpLCEwKX1zZXRWYWx1ZShlLHQpe3JldHVybiBlPUN0KGUpLHQ9Q3QodCksdGhpcy52YWx1ZXNbZV0hPT10JiYodGhpcy52YWx1ZXNbZV09dCxlLTE8dGhpcy5wcmVmaXhTdW1WYWxpZEluZGV4WzBdJiYodGhpcy5wcmVmaXhTdW1WYWxpZEluZGV4WzBdPWUtMSksITApfXJlbW92ZVZhbHVlcyhlLHQpe2U9Q3QoZSksdD1DdCh0KTtjb25zdCByPXRoaXMudmFsdWVzLG49dGhpcy5wcmVmaXhTdW07aWYoZT49ci5sZW5ndGgpcmV0dXJuITE7dmFyIGk9ci5sZW5ndGgtZTtyZXR1cm4gMCE9PSh0PWk8PXQ/aTp0KSYmKHRoaXMudmFsdWVzPW5ldyBVaW50MzJBcnJheShyLmxlbmd0aC10KSx0aGlzLnZhbHVlcy5zZXQoci5zdWJhcnJheSgwLGUpLDApLHRoaXMudmFsdWVzLnNldChyLnN1YmFycmF5KGUrdCksZSksdGhpcy5wcmVmaXhTdW09bmV3IFVpbnQzMkFycmF5KHRoaXMudmFsdWVzLmxlbmd0aCksZS0xPHRoaXMucHJlZml4U3VtVmFsaWRJbmRleFswXSYmKHRoaXMucHJlZml4U3VtVmFsaWRJbmRleFswXT1lLTEpLDA8PXRoaXMucHJlZml4U3VtVmFsaWRJbmRleFswXSYmdGhpcy5wcmVmaXhTdW0uc2V0KG4uc3ViYXJyYXkoMCx0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF0rMSkpLCEwKX1nZXRUb3RhbFN1bSgpe3JldHVybiAwPT09dGhpcy52YWx1ZXMubGVuZ3RoPzA6dGhpcy5fZ2V0UHJlZml4U3VtKHRoaXMudmFsdWVzLmxlbmd0aC0xKX1nZXRQcmVmaXhTdW0oZSl7cmV0dXJuIGU8MD8wOihlPUN0KGUpLHRoaXMuX2dldFByZWZpeFN1bShlKSl9X2dldFByZWZpeFN1bSh0KXtpZih0PD10aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF0pcmV0dXJuIHRoaXMucHJlZml4U3VtW3RdO2xldCByPXRoaXMucHJlZml4U3VtVmFsaWRJbmRleFswXSsxOzA9PT1yJiYodGhpcy5wcmVmaXhTdW1bMF09dGhpcy52YWx1ZXNbMF0scisrKSx0Pj10aGlzLnZhbHVlcy5sZW5ndGgmJih0PXRoaXMudmFsdWVzLmxlbmd0aC0xKTtmb3IobGV0IGU9cjtlPD10O2UrKyl0aGlzLnByZWZpeFN1bVtlXT10aGlzLnByZWZpeFN1bVtlLTFdK3RoaXMudmFsdWVzW2VdO3JldHVybiB0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF09TWF0aC5tYXgodGhpcy5wcmVmaXhTdW1WYWxpZEluZGV4WzBdLHQpLHRoaXMucHJlZml4U3VtW3RdfWdldEluZGV4T2YoZSl7ZT1NYXRoLmZsb29yKGUpLHRoaXMuZ2V0VG90YWxTdW0oKTtsZXQgdD0wLHI9dGhpcy52YWx1ZXMubGVuZ3RoLTEsbj0wO3ZhciBpO2xldCBhPTA7Zm9yKDt0PD1yOylpZihuPXQrKHItdCkvMnwwLGk9dGhpcy5wcmVmaXhTdW1bbl0sZTwoYT1pLXRoaXMudmFsdWVzW25dKSlyPW4tMTtlbHNle2lmKCEoaTw9ZSkpYnJlYWs7dD1uKzF9cmV0dXJuIG5ldyBfdChuLGUtYSl9fWNsYXNzIF90e2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5pbmRleD1lLHRoaXMucmVtYWluZGVyPXQsdGhpcy5fcHJlZml4U3VtSW5kZXhPZlJlc3VsdEJyYW5kPXZvaWQgMCx0aGlzLmluZGV4PWUsdGhpcy5yZW1haW5kZXI9dH19Y29uc3QgdnQ9ZnVuY3Rpb24oZT0iIil7bGV0IHQ9IigtP1xcZCpcXC5cXGRcXHcqKXwoW14iO2Zvcihjb25zdCByIG9mImB+IUAjJCVeJiooKS09K1t7XX1cXHw7OidcIiwuPD4vPyIpMDw9ZS5pbmRleE9mKHIpfHwodCs9IlxcIityKTtyZXR1cm4gdCs9Ilxcc10rKSIsbmV3IFJlZ0V4cCh0LCJnIil9KCk7Y29uc3QgeXQ9e21heExlbjoxZTMsd2luZG93U2l6ZToxNSx0aW1lQnVkZ2V0OjE1MH07ZnVuY3Rpb24gU3QodCxyLG4saSxhPXl0KXtpZihuLmxlbmd0aD5hLm1heExlbil7bGV0IGU9dC1hLm1heExlbi8yO3JldHVybiBlPDA/ZT0wOmkrPWUsU3QodCxyLG49bi5zdWJzdHJpbmcoZSx0K2EubWF4TGVuLzIpLGksYSl9dmFyIGM9RGF0ZS5ub3coKSxvPXQtMS1pO2xldCBzPS0xLGw9bnVsbDtmb3IobGV0IGU9MTshKERhdGUubm93KCktYz49YS50aW1lQnVkZ2V0KTtlKyspe3ZhciBoPW8tYS53aW5kb3dTaXplKmUsdT0oci5sYXN0SW5kZXg9TWF0aC5tYXgoMCxoKSxmdW5jdGlvbihlLHQscixuKXt2YXIgaTtmb3IoO2k9ZS5leGVjKHQpOyl7dmFyIGE9aS5pbmRleHx8MDtpZihhPD1yJiZlLmxhc3RJbmRleD49cilyZXR1cm4gaTtpZigwPG4mJm48YSlyZXR1cm4gbnVsbH1yZXR1cm4gbnVsbH0ocixuLG8scykpO2lmKCF1JiZsKWJyZWFrO2lmKGw9dSxoPD0wKWJyZWFrO3M9aH1yZXR1cm4gbD8odD17d29yZDpsWzBdLHN0YXJ0Q29sdW1uOmkrMStsLmluZGV4LGVuZENvbHVtbjppKzErbC5pbmRleCtsWzBdLmxlbmd0aH0sci5sYXN0SW5kZXg9MCx0KTpudWxsfWNsYXNzIEx0e2NvbnN0cnVjdG9yKGUpe2U9cHQoZSk7dGhpcy5fZGVmYXVsdFZhbHVlPWUsdGhpcy5fYXNjaWlNYXA9THQuX2NyZWF0ZUFzY2lpTWFwKGUpLHRoaXMuX21hcD1uZXcgTWFwfXN0YXRpYyBfY3JlYXRlQXNjaWlNYXAodCl7Y29uc3Qgcj1uZXcgVWludDhBcnJheSgyNTYpO2ZvcihsZXQgZT0wO2U8MjU2O2UrKylyW2VdPXQ7cmV0dXJuIHJ9c2V0KGUsdCl7dD1wdCh0KTswPD1lJiZlPDI1Nj90aGlzLl9hc2NpaU1hcFtlXT10OnRoaXMuX21hcC5zZXQoZSx0KX1nZXQoZSl7cmV0dXJuIDA8PWUmJmU8MjU2P3RoaXMuX2FzY2lpTWFwW2VdOnRoaXMuX21hcC5nZXQoZSl8fHRoaXMuX2RlZmF1bHRWYWx1ZX19Y2xhc3MgTnR7Y29uc3RydWN0b3IocixuLGkpe2NvbnN0IGE9bmV3IFVpbnQ4QXJyYXkocipuKTtmb3IobGV0IGU9MCx0PXIqbjtlPHQ7ZSsrKWFbZV09aTt0aGlzLl9kYXRhPWEsdGhpcy5yb3dzPXIsdGhpcy5jb2xzPW59Z2V0KGUsdCl7cmV0dXJuIHRoaXMuX2RhdGFbZSp0aGlzLmNvbHMrdF19c2V0KGUsdCxyKXt0aGlzLl9kYXRhW2UqdGhpcy5jb2xzK3RdPXJ9fWNsYXNzIEV0e2NvbnN0cnVjdG9yKHIpe2xldCBuPTAsaT0wO2ZvcihsZXQgZT0wLHQ9ci5sZW5ndGg7ZTx0O2UrKyl7dmFyW2EsbyxzXT1yW2VdO28+biYmKG49bykscz4oaT1hPmk/YTppKSYmKGk9cyl9bisrLGkrKztjb25zdCBsPW5ldyBOdChpLG4sMCk7Zm9yKGxldCBlPTAsdD1yLmxlbmd0aDtlPHQ7ZSsrKXt2YXJbaCx1LGNdPXJbZV07bC5zZXQoaCx1LGMpfXRoaXMuX3N0YXRlcz1sLHRoaXMuX21heENoYXJDb2RlPW59bmV4dFN0YXRlKGUsdCl7cmV0dXJuIHQ8MHx8dD49dGhpcy5fbWF4Q2hhckNvZGU/MDp0aGlzLl9zdGF0ZXMuZ2V0KGUsdCl9fWxldCBBdD1udWxsO2xldCBrdD1udWxsO2NsYXNzIHh0e3N0YXRpYyBfY3JlYXRlTGluayhlLHQscixuLGkpe2xldCBhPWktMTtkb3t2YXIgbz10LmNoYXJDb2RlQXQoYSk7aWYoMiE9PWUuZ2V0KG8pKWJyZWFrfXdoaWxlKC0tYT5uKTt2YXIgcztyZXR1cm4gMDxuJiYoaT10LmNoYXJDb2RlQXQobi0xKSxzPXQuY2hhckNvZGVBdChhKSwoNDA9PT1pJiY0MT09PXN8fDkxPT09aSYmOTM9PT1zfHwxMjM9PT1pJiYxMjU9PT1zKSYmYS0tKSx7cmFuZ2U6e3N0YXJ0TGluZU51bWJlcjpyLHN0YXJ0Q29sdW1uOm4rMSxlbmRMaW5lTnVtYmVyOnIsZW5kQ29sdW1uOmErMn0sdXJsOnQuc3Vic3RyaW5nKG4sYSsxKX19c3RhdGljIGNvbXB1dGVMaW5rcyh0LGM9QXQ9bnVsbD09PUF0P25ldyBFdChbWzEsMTA0LDJdLFsxLDcyLDJdLFsxLDEwMiw2XSxbMSw3MCw2XSxbMiwxMTYsM10sWzIsODQsM10sWzMsMTE2LDRdLFszLDg0LDRdLFs0LDExMiw1XSxbNCw4MCw1XSxbNSwxMTUsOV0sWzUsODMsOV0sWzUsNTgsMTBdLFs2LDEwNSw3XSxbNiw3Myw3XSxbNywxMDgsOF0sWzcsNzYsOF0sWzgsMTAxLDldLFs4LDY5LDldLFs5LDU4LDEwXSxbMTAsNDcsMTFdLFsxMSw0NywxMl1dKTpBdCl7Y29uc3QgZD1mdW5jdGlvbigpe2lmKG51bGw9PT1rdCl7a3Q9bmV3IEx0KDApO3ZhciB0PSIgXHQ8PidcIuOAgeOAgu+9oe+9pO+8jO+8ju+8mu+8m+KAmOOAiOOAjOOAjuOAlO+8iO+8u++9m++9ou+9o++9ne+8ve+8ieOAleOAj+OAjeOAieKAme+9gO+9nuKApiI7Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKyspa3Quc2V0KHQuY2hhckNvZGVBdChlKSwxKTtmb3IobGV0IGU9MDtlPCIuLDsiLmxlbmd0aDtlKyspa3Quc2V0KCIuLDsiLmNoYXJDb2RlQXQoZSksMil9cmV0dXJuIGt0fSgpLGY9W107Zm9yKGxldCB1PTEsZT10LmdldExpbmVDb3VudCgpO3U8PWU7dSsrKXtjb25zdCBiPXQuZ2V0TGluZUNvbnRlbnQodSk7dmFyIG09Yi5sZW5ndGg7bGV0IHI9MCxuPTAsaT0wLGE9MSxvPSExLHM9ITEsbD0hMSxoPSExO2Zvcig7cjxtOyl7bGV0IHQ9ITE7dmFyIGc9Yi5jaGFyQ29kZUF0KHIpO2lmKDEzPT09YSl7bGV0IGU7c3dpdGNoKGcpe2Nhc2UgNDA6bz0hMCxlPTA7YnJlYWs7Y2FzZSA0MTplPW8/MDoxO2JyZWFrO2Nhc2UgOTE6bD0hMCxzPSEwLGU9MDticmVhaztjYXNlIDkzOmw9ITEsZT1zPzA6MTticmVhaztjYXNlIDEyMzpoPSEwLGU9MDticmVhaztjYXNlIDEyNTplPWg/MDoxO2JyZWFrO2Nhc2UgMzk6ZT0zND09PWl8fDk2PT09aT8wOjE7YnJlYWs7Y2FzZSAzNDplPTM5PT09aXx8OTY9PT1pPzA6MTticmVhaztjYXNlIDk2OmU9Mzk9PT1pfHwzND09PWk/MDoxO2JyZWFrO2Nhc2UgNDI6ZT00Mj09PWk/MTowO2JyZWFrO2Nhc2UgMTI0OmU9MTI0PT09aT8xOjA7YnJlYWs7Y2FzZSAzMjplPWw/MDoxO2JyZWFrO2RlZmF1bHQ6ZT1kLmdldChnKX0xPT09ZSYmKGYucHVzaCh4dC5fY3JlYXRlTGluayhkLGIsdSxuLHIpKSx0PSEwKX1lbHNlIGlmKDEyPT09YSl7bGV0IGU7MT09PShlPTkxPT09Zz8ocz0hMCwwKTpkLmdldChnKSk/dD0hMDphPTEzfWVsc2UgMD09PShhPWMubmV4dFN0YXRlKGEsZykpJiYodD0hMCk7dCYmKGE9MSxvPSExLHM9ITEsaD0hMSxuPXIrMSxpPWcpLHIrK30xMz09PWEmJmYucHVzaCh4dC5fY3JlYXRlTGluayhkLGIsdSxuLG0pKX1yZXR1cm4gZn19Y2xhc3MgTXR7Y29uc3RydWN0b3IoKXt0aGlzLl9kZWZhdWx0VmFsdWVTZXQ9W1sidHJ1ZSIsImZhbHNlIl0sWyJUcnVlIiwiRmFsc2UiXSxbIlByaXZhdGUiLCJQdWJsaWMiLCJGcmllbmQiLCJSZWFkT25seSIsIlBhcnRpYWwiLCJQcm90ZWN0ZWQiLCJXcml0ZU9ubHkiXSxbInB1YmxpYyIsInByb3RlY3RlZCIsInByaXZhdGUiXV19bmF2aWdhdGVWYWx1ZVNldChlLHQscixuLGkpe2lmKGUmJnQpe3Q9dGhpcy5kb05hdmlnYXRlVmFsdWVTZXQodCxpKTtpZih0KXJldHVybntyYW5nZTplLHZhbHVlOnR9fWlmKHImJm4pe2U9dGhpcy5kb05hdmlnYXRlVmFsdWVTZXQobixpKTtpZihlKXJldHVybntyYW5nZTpyLHZhbHVlOmV9fXJldHVybiBudWxsfWRvTmF2aWdhdGVWYWx1ZVNldChlLHQpe3ZhciByPXRoaXMubnVtYmVyUmVwbGFjZShlLHQpO3JldHVybiBudWxsIT09cj9yOnRoaXMudGV4dFJlcGxhY2UoZSx0KX1udW1iZXJSZXBsYWNlKGUsdCl7dmFyIHI9TWF0aC5wb3coMTAsZS5sZW5ndGgtKGUubGFzdEluZGV4T2YoIi4iKSsxKSk7bGV0IG49TnVtYmVyKGUpO2U9cGFyc2VGbG9hdChlKTtyZXR1cm4haXNOYU4obikmJiFpc05hTihlKSYmbj09PWUmJigwIT09bnx8dCk/KG49TWF0aC5mbG9vcihuKnIpLG4rPXQ/cjotcixTdHJpbmcobi9yKSk6bnVsbH10ZXh0UmVwbGFjZShlLHQpe3JldHVybiB0aGlzLnZhbHVlU2V0c1JlcGxhY2UodGhpcy5fZGVmYXVsdFZhbHVlU2V0LGUsdCl9dmFsdWVTZXRzUmVwbGFjZShyLG4saSl7bGV0IGE9bnVsbDtmb3IobGV0IGU9MCx0PXIubGVuZ3RoO251bGw9PT1hJiZlPHQ7ZSsrKWE9dGhpcy52YWx1ZVNldFJlcGxhY2UocltlXSxuLGkpO3JldHVybiBhfXZhbHVlU2V0UmVwbGFjZShlLHQscil7bGV0IG49ZS5pbmRleE9mKHQpO3JldHVybiAwPD1uPygobis9cj8xOi0xKTwwP249ZS5sZW5ndGgtMTpuJT1lLmxlbmd0aCxlW25dKTpudWxsfX1NdC5JTlNUQU5DRT1uZXcgTXQ7Y29uc3QgUHQ9T2JqZWN0LmZyZWV6ZShmdW5jdGlvbihlLHQpe2NvbnN0IHI9c2V0VGltZW91dChlLmJpbmQodCksMCk7cmV0dXJue2Rpc3Bvc2UoKXtjbGVhclRpbWVvdXQocil9fX0pOyhLZT1QZT1QZXx8e30pLmlzQ2FuY2VsbGF0aW9uVG9rZW49ZnVuY3Rpb24oZSl7cmV0dXJuIGU9PT1LZS5Ob25lfHxlPT09S2UuQ2FuY2VsbGVkfHwoZSBpbnN0YW5jZW9mIEt0fHwhKCFlfHwib2JqZWN0IiE9dHlwZW9mIGUpJiYoImJvb2xlYW4iPT10eXBlb2YgZS5pc0NhbmNlbGxhdGlvblJlcXVlc3RlZCYmImZ1bmN0aW9uIj09dHlwZW9mIGUub25DYW5jZWxsYXRpb25SZXF1ZXN0ZWQpKX0sS2UuTm9uZT1PYmplY3QuZnJlZXplKHtpc0NhbmNlbGxhdGlvblJlcXVlc3RlZDohMSxvbkNhbmNlbGxhdGlvblJlcXVlc3RlZDpULk5vbmV9KSxLZS5DYW5jZWxsZWQ9T2JqZWN0LmZyZWV6ZSh7aXNDYW5jZWxsYXRpb25SZXF1ZXN0ZWQ6ITAsb25DYW5jZWxsYXRpb25SZXF1ZXN0ZWQ6UHR9KTtjbGFzcyBLdHtjb25zdHJ1Y3Rvcigpe3RoaXMuX2lzQ2FuY2VsbGVkPSExLHRoaXMuX2VtaXR0ZXI9bnVsbH1jYW5jZWwoKXt0aGlzLl9pc0NhbmNlbGxlZHx8KHRoaXMuX2lzQ2FuY2VsbGVkPSEwLHRoaXMuX2VtaXR0ZXImJih0aGlzLl9lbWl0dGVyLmZpcmUodm9pZCAwKSx0aGlzLmRpc3Bvc2UoKSkpfWdldCBpc0NhbmNlbGxhdGlvblJlcXVlc3RlZCgpe3JldHVybiB0aGlzLl9pc0NhbmNlbGxlZH1nZXQgb25DYW5jZWxsYXRpb25SZXF1ZXN0ZWQoKXtyZXR1cm4gdGhpcy5faXNDYW5jZWxsZWQ/UHQ6KHRoaXMuX2VtaXR0ZXJ8fCh0aGlzLl9lbWl0dGVyPW5ldyBYKSx0aGlzLl9lbWl0dGVyLmV2ZW50KX1kaXNwb3NlKCl7dGhpcy5fZW1pdHRlciYmKHRoaXMuX2VtaXR0ZXIuZGlzcG9zZSgpLHRoaXMuX2VtaXR0ZXI9bnVsbCl9fWNsYXNzIFJ0e2NvbnN0cnVjdG9yKGUpe3RoaXMuX3Rva2VuPXZvaWQgMCx0aGlzLl9wYXJlbnRMaXN0ZW5lcj12b2lkIDAsdGhpcy5fcGFyZW50TGlzdGVuZXI9ZSYmZS5vbkNhbmNlbGxhdGlvblJlcXVlc3RlZCh0aGlzLmNhbmNlbCx0aGlzKX1nZXQgdG9rZW4oKXtyZXR1cm4gdGhpcy5fdG9rZW58fCh0aGlzLl90b2tlbj1uZXcgS3QpLHRoaXMuX3Rva2VufWNhbmNlbCgpe3RoaXMuX3Rva2VuP3RoaXMuX3Rva2VuIGluc3RhbmNlb2YgS3QmJnRoaXMuX3Rva2VuLmNhbmNlbCgpOnRoaXMuX3Rva2VuPVBlLkNhbmNlbGxlZH1kaXNwb3NlKGU9ITEpe2UmJnRoaXMuY2FuY2VsKCksdGhpcy5fcGFyZW50TGlzdGVuZXImJnRoaXMuX3BhcmVudExpc3RlbmVyLmRpc3Bvc2UoKSx0aGlzLl90b2tlbj90aGlzLl90b2tlbiBpbnN0YW5jZW9mIEt0JiZ0aGlzLl90b2tlbi5kaXNwb3NlKCk6dGhpcy5fdG9rZW49UGUuTm9uZX19Y2xhc3MgRHR7Y29uc3RydWN0b3IoKXt0aGlzLl9rZXlDb2RlVG9TdHI9W10sdGhpcy5fc3RyVG9LZXlDb2RlPU9iamVjdC5jcmVhdGUobnVsbCl9ZGVmaW5lKGUsdCl7dGhpcy5fa2V5Q29kZVRvU3RyW2VdPXQsdGhpcy5fc3RyVG9LZXlDb2RlW3QudG9Mb3dlckNhc2UoKV09ZX1rZXlDb2RlVG9TdHIoZSl7cmV0dXJuIHRoaXMuX2tleUNvZGVUb1N0cltlXX1zdHJUb0tleUNvZGUoZSl7cmV0dXJuIHRoaXMuX3N0clRvS2V5Q29kZVtlLnRvTG93ZXJDYXNlKCldfHwwfX1jb25zdCBJdD1uZXcgRHQsVnQ9bmV3IER0LE90PW5ldyBEdCxGdD1uZXcgQXJyYXkoMjMwKSxUdD17fSxCdD1bXSxxdD1PYmplY3QuY3JlYXRlKG51bGwpLFV0PU9iamVjdC5jcmVhdGUobnVsbCksSHQ9W10sV3Q9W107Zm9yKGxldCBlPTA7ZTw9MTkzO2UrKylIdFtlXT0tMTtmb3IobGV0IGU9MDtlPD0xMjY7ZSsrKVd0W2VdPS0xO3tsZXQgZT1bXSx0PVtdO2Zvcihjb25zdCBsbiBvZltbMCwxLDAsIk5vbmUiLDAsInVua25vd24iLDAsIlZLX1VOS05PV04iLCIiLCIiXSxbMCwxLDEsIkh5cGVyIiwwLCIiLDAsIiIsIiIsIiJdLFswLDEsMiwiU3VwZXIiLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSwzLCJGbiIsMCwiIiwwLCIiLCIiLCIiXSxbMCwxLDQsIkZuTG9jayIsMCwiIiwwLCIiLCIiLCIiXSxbMCwxLDUsIlN1c3BlbmQiLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSw2LCJSZXN1bWUiLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSw3LCJUdXJibyIsMCwiIiwwLCIiLCIiLCIiXSxbMCwxLDgsIlNsZWVwIiwwLCIiLDAsIlZLX1NMRUVQIiwiIiwiIl0sWzAsMSw5LCJXYWtlVXAiLDAsIiIsMCwiIiwiIiwiIl0sWzMxLDAsMTAsIktleUEiLDMxLCJBIiw2NSwiVktfQSIsIiIsIiJdLFszMiwwLDExLCJLZXlCIiwzMiwiQiIsNjYsIlZLX0IiLCIiLCIiXSxbMzMsMCwxMiwiS2V5QyIsMzMsIkMiLDY3LCJWS19DIiwiIiwiIl0sWzM0LDAsMTMsIktleUQiLDM0LCJEIiw2OCwiVktfRCIsIiIsIiJdLFszNSwwLDE0LCJLZXlFIiwzNSwiRSIsNjksIlZLX0UiLCIiLCIiXSxbMzYsMCwxNSwiS2V5RiIsMzYsIkYiLDcwLCJWS19GIiwiIiwiIl0sWzM3LDAsMTYsIktleUciLDM3LCJHIiw3MSwiVktfRyIsIiIsIiJdLFszOCwwLDE3LCJLZXlIIiwzOCwiSCIsNzIsIlZLX0giLCIiLCIiXSxbMzksMCwxOCwiS2V5SSIsMzksIkkiLDczLCJWS19JIiwiIiwiIl0sWzQwLDAsMTksIktleUoiLDQwLCJKIiw3NCwiVktfSiIsIiIsIiJdLFs0MSwwLDIwLCJLZXlLIiw0MSwiSyIsNzUsIlZLX0siLCIiLCIiXSxbNDIsMCwyMSwiS2V5TCIsNDIsIkwiLDc2LCJWS19MIiwiIiwiIl0sWzQzLDAsMjIsIktleU0iLDQzLCJNIiw3NywiVktfTSIsIiIsIiJdLFs0NCwwLDIzLCJLZXlOIiw0NCwiTiIsNzgsIlZLX04iLCIiLCIiXSxbNDUsMCwyNCwiS2V5TyIsNDUsIk8iLDc5LCJWS19PIiwiIiwiIl0sWzQ2LDAsMjUsIktleVAiLDQ2LCJQIiw4MCwiVktfUCIsIiIsIiJdLFs0NywwLDI2LCJLZXlRIiw0NywiUSIsODEsIlZLX1EiLCIiLCIiXSxbNDgsMCwyNywiS2V5UiIsNDgsIlIiLDgyLCJWS19SIiwiIiwiIl0sWzQ5LDAsMjgsIktleVMiLDQ5LCJTIiw4MywiVktfUyIsIiIsIiJdLFs1MCwwLDI5LCJLZXlUIiw1MCwiVCIsODQsIlZLX1QiLCIiLCIiXSxbNTEsMCwzMCwiS2V5VSIsNTEsIlUiLDg1LCJWS19VIiwiIiwiIl0sWzUyLDAsMzEsIktleVYiLDUyLCJWIiw4NiwiVktfViIsIiIsIiJdLFs1MywwLDMyLCJLZXlXIiw1MywiVyIsODcsIlZLX1ciLCIiLCIiXSxbNTQsMCwzMywiS2V5WCIsNTQsIlgiLDg4LCJWS19YIiwiIiwiIl0sWzU1LDAsMzQsIktleVkiLDU1LCJZIiw4OSwiVktfWSIsIiIsIiJdLFs1NiwwLDM1LCJLZXlaIiw1NiwiWiIsOTAsIlZLX1oiLCIiLCIiXSxbMjIsMCwzNiwiRGlnaXQxIiwyMiwiMSIsNDksIlZLXzEiLCIiLCIiXSxbMjMsMCwzNywiRGlnaXQyIiwyMywiMiIsNTAsIlZLXzIiLCIiLCIiXSxbMjQsMCwzOCwiRGlnaXQzIiwyNCwiMyIsNTEsIlZLXzMiLCIiLCIiXSxbMjUsMCwzOSwiRGlnaXQ0IiwyNSwiNCIsNTIsIlZLXzQiLCIiLCIiXSxbMjYsMCw0MCwiRGlnaXQ1IiwyNiwiNSIsNTMsIlZLXzUiLCIiLCIiXSxbMjcsMCw0MSwiRGlnaXQ2IiwyNywiNiIsNTQsIlZLXzYiLCIiLCIiXSxbMjgsMCw0MiwiRGlnaXQ3IiwyOCwiNyIsNTUsIlZLXzciLCIiLCIiXSxbMjksMCw0MywiRGlnaXQ4IiwyOSwiOCIsNTYsIlZLXzgiLCIiLCIiXSxbMzAsMCw0NCwiRGlnaXQ5IiwzMCwiOSIsNTcsIlZLXzkiLCIiLCIiXSxbMjEsMCw0NSwiRGlnaXQwIiwyMSwiMCIsNDgsIlZLXzAiLCIiLCIiXSxbMywxLDQ2LCJFbnRlciIsMywiRW50ZXIiLDEzLCJWS19SRVRVUk4iLCIiLCIiXSxbOSwxLDQ3LCJFc2NhcGUiLDksIkVzY2FwZSIsMjcsIlZLX0VTQ0FQRSIsIiIsIiJdLFsxLDEsNDgsIkJhY2tzcGFjZSIsMSwiQmFja3NwYWNlIiw4LCJWS19CQUNLIiwiIiwiIl0sWzIsMSw0OSwiVGFiIiwyLCJUYWIiLDksIlZLX1RBQiIsIiIsIiJdLFsxMCwxLDUwLCJTcGFjZSIsMTAsIlNwYWNlIiwzMiwiVktfU1BBQ0UiLCIiLCIiXSxbODMsMCw1MSwiTWludXMiLDgzLCItIiwxODksIlZLX09FTV9NSU5VUyIsIi0iLCJPRU1fTUlOVVMiXSxbODEsMCw1MiwiRXF1YWwiLDgxLCI9IiwxODcsIlZLX09FTV9QTFVTIiwiPSIsIk9FTV9QTFVTIl0sWzg3LDAsNTMsIkJyYWNrZXRMZWZ0Iiw4NywiWyIsMjE5LCJWS19PRU1fNCIsIlsiLCJPRU1fNCJdLFs4OSwwLDU0LCJCcmFja2V0UmlnaHQiLDg5LCJdIiwyMjEsIlZLX09FTV82IiwiXSIsIk9FTV82Il0sWzg4LDAsNTUsIkJhY2tzbGFzaCIsODgsIlxcIiwyMjAsIlZLX09FTV81IiwiXFwiLCJPRU1fNSJdLFswLDAsNTYsIkludGxIYXNoIiwwLCIiLDAsIiIsIiIsIiJdLFs4MCwwLDU3LCJTZW1pY29sb24iLDgwLCI7IiwxODYsIlZLX09FTV8xIiwiOyIsIk9FTV8xIl0sWzkwLDAsNTgsIlF1b3RlIiw5MCwiJyIsMjIyLCJWS19PRU1fNyIsIiciLCJPRU1fNyJdLFs4NiwwLDU5LCJCYWNrcXVvdGUiLDg2LCJgIiwxOTIsIlZLX09FTV8zIiwiYCIsIk9FTV8zIl0sWzgyLDAsNjAsIkNvbW1hIiw4MiwiLCIsMTg4LCJWS19PRU1fQ09NTUEiLCIsIiwiT0VNX0NPTU1BIl0sWzg0LDAsNjEsIlBlcmlvZCIsODQsIi4iLDE5MCwiVktfT0VNX1BFUklPRCIsIi4iLCJPRU1fUEVSSU9EIl0sWzg1LDAsNjIsIlNsYXNoIiw4NSwiLyIsMTkxLCJWS19PRU1fMiIsIi8iLCJPRU1fMiJdLFs4LDEsNjMsIkNhcHNMb2NrIiw4LCJDYXBzTG9jayIsMjAsIlZLX0NBUElUQUwiLCIiLCIiXSxbNTksMSw2NCwiRjEiLDU5LCJGMSIsMTEyLCJWS19GMSIsIiIsIiJdLFs2MCwxLDY1LCJGMiIsNjAsIkYyIiwxMTMsIlZLX0YyIiwiIiwiIl0sWzYxLDEsNjYsIkYzIiw2MSwiRjMiLDExNCwiVktfRjMiLCIiLCIiXSxbNjIsMSw2NywiRjQiLDYyLCJGNCIsMTE1LCJWS19GNCIsIiIsIiJdLFs2MywxLDY4LCJGNSIsNjMsIkY1IiwxMTYsIlZLX0Y1IiwiIiwiIl0sWzY0LDEsNjksIkY2Iiw2NCwiRjYiLDExNywiVktfRjYiLCIiLCIiXSxbNjUsMSw3MCwiRjciLDY1LCJGNyIsMTE4LCJWS19GNyIsIiIsIiJdLFs2NiwxLDcxLCJGOCIsNjYsIkY4IiwxMTksIlZLX0Y4IiwiIiwiIl0sWzY3LDEsNzIsIkY5Iiw2NywiRjkiLDEyMCwiVktfRjkiLCIiLCIiXSxbNjgsMSw3MywiRjEwIiw2OCwiRjEwIiwxMjEsIlZLX0YxMCIsIiIsIiJdLFs2OSwxLDc0LCJGMTEiLDY5LCJGMTEiLDEyMiwiVktfRjExIiwiIiwiIl0sWzcwLDEsNzUsIkYxMiIsNzAsIkYxMiIsMTIzLCJWS19GMTIiLCIiLCIiXSxbMCwxLDc2LCJQcmludFNjcmVlbiIsMCwiIiwwLCIiLCIiLCIiXSxbNzksMSw3NywiU2Nyb2xsTG9jayIsNzksIlNjcm9sbExvY2siLDE0NSwiVktfU0NST0xMIiwiIiwiIl0sWzcsMSw3OCwiUGF1c2UiLDcsIlBhdXNlQnJlYWsiLDE5LCJWS19QQVVTRSIsIiIsIiJdLFsxOSwxLDc5LCJJbnNlcnQiLDE5LCJJbnNlcnQiLDQ1LCJWS19JTlNFUlQiLCIiLCIiXSxbMTQsMSw4MCwiSG9tZSIsMTQsIkhvbWUiLDM2LCJWS19IT01FIiwiIiwiIl0sWzExLDEsODEsIlBhZ2VVcCIsMTEsIlBhZ2VVcCIsMzMsIlZLX1BSSU9SIiwiIiwiIl0sWzIwLDEsODIsIkRlbGV0ZSIsMjAsIkRlbGV0ZSIsNDYsIlZLX0RFTEVURSIsIiIsIiJdLFsxMywxLDgzLCJFbmQiLDEzLCJFbmQiLDM1LCJWS19FTkQiLCIiLCIiXSxbMTIsMSw4NCwiUGFnZURvd24iLDEyLCJQYWdlRG93biIsMzQsIlZLX05FWFQiLCIiLCIiXSxbMTcsMSw4NSwiQXJyb3dSaWdodCIsMTcsIlJpZ2h0QXJyb3ciLDM5LCJWS19SSUdIVCIsIlJpZ2h0IiwiIl0sWzE1LDEsODYsIkFycm93TGVmdCIsMTUsIkxlZnRBcnJvdyIsMzcsIlZLX0xFRlQiLCJMZWZ0IiwiIl0sWzE4LDEsODcsIkFycm93RG93biIsMTgsIkRvd25BcnJvdyIsNDAsIlZLX0RPV04iLCJEb3duIiwiIl0sWzE2LDEsODgsIkFycm93VXAiLDE2LCJVcEFycm93IiwzOCwiVktfVVAiLCJVcCIsIiJdLFs3OCwxLDg5LCJOdW1Mb2NrIiw3OCwiTnVtTG9jayIsMTQ0LCJWS19OVU1MT0NLIiwiIiwiIl0sWzEwOCwxLDkwLCJOdW1wYWREaXZpZGUiLDEwOCwiTnVtUGFkX0RpdmlkZSIsMTExLCJWS19ESVZJREUiLCIiLCIiXSxbMTAzLDEsOTEsIk51bXBhZE11bHRpcGx5IiwxMDMsIk51bVBhZF9NdWx0aXBseSIsMTA2LCJWS19NVUxUSVBMWSIsIiIsIiJdLFsxMDYsMSw5MiwiTnVtcGFkU3VidHJhY3QiLDEwNiwiTnVtUGFkX1N1YnRyYWN0IiwxMDksIlZLX1NVQlRSQUNUIiwiIiwiIl0sWzEwNCwxLDkzLCJOdW1wYWRBZGQiLDEwNCwiTnVtUGFkX0FkZCIsMTA3LCJWS19BREQiLCIiLCIiXSxbMywxLDk0LCJOdW1wYWRFbnRlciIsMywiIiwwLCIiLCIiLCIiXSxbOTQsMSw5NSwiTnVtcGFkMSIsOTQsIk51bVBhZDEiLDk3LCJWS19OVU1QQUQxIiwiIiwiIl0sWzk1LDEsOTYsIk51bXBhZDIiLDk1LCJOdW1QYWQyIiw5OCwiVktfTlVNUEFEMiIsIiIsIiJdLFs5NiwxLDk3LCJOdW1wYWQzIiw5NiwiTnVtUGFkMyIsOTksIlZLX05VTVBBRDMiLCIiLCIiXSxbOTcsMSw5OCwiTnVtcGFkNCIsOTcsIk51bVBhZDQiLDEwMCwiVktfTlVNUEFENCIsIiIsIiJdLFs5OCwxLDk5LCJOdW1wYWQ1Iiw5OCwiTnVtUGFkNSIsMTAxLCJWS19OVU1QQUQ1IiwiIiwiIl0sWzk5LDEsMTAwLCJOdW1wYWQ2Iiw5OSwiTnVtUGFkNiIsMTAyLCJWS19OVU1QQUQ2IiwiIiwiIl0sWzEwMCwxLDEwMSwiTnVtcGFkNyIsMTAwLCJOdW1QYWQ3IiwxMDMsIlZLX05VTVBBRDciLCIiLCIiXSxbMTAxLDEsMTAyLCJOdW1wYWQ4IiwxMDEsIk51bVBhZDgiLDEwNCwiVktfTlVNUEFEOCIsIiIsIiJdLFsxMDIsMSwxMDMsIk51bXBhZDkiLDEwMiwiTnVtUGFkOSIsMTA1LCJWS19OVU1QQUQ5IiwiIiwiIl0sWzkzLDEsMTA0LCJOdW1wYWQwIiw5MywiTnVtUGFkMCIsOTYsIlZLX05VTVBBRDAiLCIiLCIiXSxbMTA3LDEsMTA1LCJOdW1wYWREZWNpbWFsIiwxMDcsIk51bVBhZF9EZWNpbWFsIiwxMTAsIlZLX0RFQ0lNQUwiLCIiLCIiXSxbOTIsMCwxMDYsIkludGxCYWNrc2xhc2giLDkyLCJPRU1fMTAyIiwyMjYsIlZLX09FTV8xMDIiLCIiLCIiXSxbNTgsMSwxMDcsIkNvbnRleHRNZW51Iiw1OCwiQ29udGV4dE1lbnUiLDkzLCIiLCIiLCIiXSxbMCwxLDEwOCwiUG93ZXIiLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSwxMDksIk51bXBhZEVxdWFsIiwwLCIiLDAsIiIsIiIsIiJdLFs3MSwxLDExMCwiRjEzIiw3MSwiRjEzIiwxMjQsIlZLX0YxMyIsIiIsIiJdLFs3MiwxLDExMSwiRjE0Iiw3MiwiRjE0IiwxMjUsIlZLX0YxNCIsIiIsIiJdLFs3MywxLDExMiwiRjE1Iiw3MywiRjE1IiwxMjYsIlZLX0YxNSIsIiIsIiJdLFs3NCwxLDExMywiRjE2Iiw3NCwiRjE2IiwxMjcsIlZLX0YxNiIsIiIsIiJdLFs3NSwxLDExNCwiRjE3Iiw3NSwiRjE3IiwxMjgsIlZLX0YxNyIsIiIsIiJdLFs3NiwxLDExNSwiRjE4Iiw3NiwiRjE4IiwxMjksIlZLX0YxOCIsIiIsIiJdLFs3NywxLDExNiwiRjE5Iiw3NywiRjE5IiwxMzAsIlZLX0YxOSIsIiIsIiJdLFswLDEsMTE3LCJGMjAiLDAsIiIsMCwiVktfRjIwIiwiIiwiIl0sWzAsMSwxMTgsIkYyMSIsMCwiIiwwLCJWS19GMjEiLCIiLCIiXSxbMCwxLDExOSwiRjIyIiwwLCIiLDAsIlZLX0YyMiIsIiIsIiJdLFswLDEsMTIwLCJGMjMiLDAsIiIsMCwiVktfRjIzIiwiIiwiIl0sWzAsMSwxMjEsIkYyNCIsMCwiIiwwLCJWS19GMjQiLCIiLCIiXSxbMCwxLDEyMiwiT3BlbiIsMCwiIiwwLCIiLCIiLCIiXSxbMCwxLDEyMywiSGVscCIsMCwiIiwwLCIiLCIiLCIiXSxbMCwxLDEyNCwiU2VsZWN0IiwwLCIiLDAsIiIsIiIsIiJdLFswLDEsMTI1LCJBZ2FpbiIsMCwiIiwwLCIiLCIiLCIiXSxbMCwxLDEyNiwiVW5kbyIsMCwiIiwwLCIiLCIiLCIiXSxbMCwxLDEyNywiQ3V0IiwwLCIiLDAsIiIsIiIsIiJdLFswLDEsMTI4LCJDb3B5IiwwLCIiLDAsIiIsIiIsIiJdLFswLDEsMTI5LCJQYXN0ZSIsMCwiIiwwLCIiLCIiLCIiXSxbMCwxLDEzMCwiRmluZCIsMCwiIiwwLCIiLCIiLCIiXSxbMCwxLDEzMSwiQXVkaW9Wb2x1bWVNdXRlIiwxMTIsIkF1ZGlvVm9sdW1lTXV0ZSIsMTczLCJWS19WT0xVTUVfTVVURSIsIiIsIiJdLFswLDEsMTMyLCJBdWRpb1ZvbHVtZVVwIiwxMTMsIkF1ZGlvVm9sdW1lVXAiLDE3NSwiVktfVk9MVU1FX1VQIiwiIiwiIl0sWzAsMSwxMzMsIkF1ZGlvVm9sdW1lRG93biIsMTE0LCJBdWRpb1ZvbHVtZURvd24iLDE3NCwiVktfVk9MVU1FX0RPV04iLCIiLCIiXSxbMTA1LDEsMTM0LCJOdW1wYWRDb21tYSIsMTA1LCJOdW1QYWRfU2VwYXJhdG9yIiwxMDgsIlZLX1NFUEFSQVRPUiIsIiIsIiJdLFsxMTAsMCwxMzUsIkludGxSbyIsMTEwLCJBQk5UX0MxIiwxOTMsIlZLX0FCTlRfQzEiLCIiLCIiXSxbMCwxLDEzNiwiS2FuYU1vZGUiLDAsIiIsMCwiIiwiIiwiIl0sWzAsMCwxMzcsIkludGxZZW4iLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSwxMzgsIkNvbnZlcnQiLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSwxMzksIk5vbkNvbnZlcnQiLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSwxNDAsIkxhbmcxIiwwLCIiLDAsIiIsIiIsIiJdLFswLDEsMTQxLCJMYW5nMiIsMCwiIiwwLCIiLCIiLCIiXSxbMCwxLDE0MiwiTGFuZzMiLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSwxNDMsIkxhbmc0IiwwLCIiLDAsIiIsIiIsIiJdLFswLDEsMTQ0LCJMYW5nNSIsMCwiIiwwLCIiLCIiLCIiXSxbMCwxLDE0NSwiQWJvcnQiLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSwxNDYsIlByb3BzIiwwLCIiLDAsIiIsIiIsIiJdLFswLDEsMTQ3LCJOdW1wYWRQYXJlbkxlZnQiLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSwxNDgsIk51bXBhZFBhcmVuUmlnaHQiLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSwxNDksIk51bXBhZEJhY2tzcGFjZSIsMCwiIiwwLCIiLCIiLCIiXSxbMCwxLDE1MCwiTnVtcGFkTWVtb3J5U3RvcmUiLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSwxNTEsIk51bXBhZE1lbW9yeVJlY2FsbCIsMCwiIiwwLCIiLCIiLCIiXSxbMCwxLDE1MiwiTnVtcGFkTWVtb3J5Q2xlYXIiLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSwxNTMsIk51bXBhZE1lbW9yeUFkZCIsMCwiIiwwLCIiLCIiLCIiXSxbMCwxLDE1NCwiTnVtcGFkTWVtb3J5U3VidHJhY3QiLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSwxNTUsIk51bXBhZENsZWFyIiwwLCIiLDAsIiIsIiIsIiJdLFswLDEsMTU2LCJOdW1wYWRDbGVhckVudHJ5IiwwLCIiLDAsIiIsIiIsIiJdLFs1LDEsMCwiIiw1LCJDdHJsIiwxNywiVktfQ09OVFJPTCIsIiIsIiJdLFs0LDEsMCwiIiw0LCJTaGlmdCIsMTYsIlZLX1NISUZUIiwiIiwiIl0sWzYsMSwwLCIiLDYsIkFsdCIsMTgsIlZLX01FTlUiLCIiLCIiXSxbNTcsMSwwLCIiLDU3LCJNZXRhIiwwLCJWS19DT01NQU5EIiwiIiwiIl0sWzUsMSwxNTcsIkNvbnRyb2xMZWZ0Iiw1LCIiLDAsIlZLX0xDT05UUk9MIiwiIiwiIl0sWzQsMSwxNTgsIlNoaWZ0TGVmdCIsNCwiIiwwLCJWS19MU0hJRlQiLCIiLCIiXSxbNiwxLDE1OSwiQWx0TGVmdCIsNiwiIiwwLCJWS19MTUVOVSIsIiIsIiJdLFs1NywxLDE2MCwiTWV0YUxlZnQiLDU3LCIiLDAsIlZLX0xXSU4iLCIiLCIiXSxbNSwxLDE2MSwiQ29udHJvbFJpZ2h0Iiw1LCIiLDAsIlZLX1JDT05UUk9MIiwiIiwiIl0sWzQsMSwxNjIsIlNoaWZ0UmlnaHQiLDQsIiIsMCwiVktfUlNISUZUIiwiIiwiIl0sWzYsMSwxNjMsIkFsdFJpZ2h0Iiw2LCIiLDAsIlZLX1JNRU5VIiwiIiwiIl0sWzU3LDEsMTY0LCJNZXRhUmlnaHQiLDU3LCIiLDAsIlZLX1JXSU4iLCIiLCIiXSxbMCwxLDE2NSwiQnJpZ2h0bmVzc1VwIiwwLCIiLDAsIiIsIiIsIiJdLFswLDEsMTY2LCJCcmlnaHRuZXNzRG93biIsMCwiIiwwLCIiLCIiLCIiXSxbMCwxLDE2NywiTWVkaWFQbGF5IiwwLCIiLDAsIiIsIiIsIiJdLFswLDEsMTY4LCJNZWRpYVJlY29yZCIsMCwiIiwwLCIiLCIiLCIiXSxbMCwxLDE2OSwiTWVkaWFGYXN0Rm9yd2FyZCIsMCwiIiwwLCIiLCIiLCIiXSxbMCwxLDE3MCwiTWVkaWFSZXdpbmQiLDAsIiIsMCwiIiwiIiwiIl0sWzExNCwxLDE3MSwiTWVkaWFUcmFja05leHQiLDExOSwiTWVkaWFUcmFja05leHQiLDE3NiwiVktfTUVESUFfTkVYVF9UUkFDSyIsIiIsIiJdLFsxMTUsMSwxNzIsIk1lZGlhVHJhY2tQcmV2aW91cyIsMTIwLCJNZWRpYVRyYWNrUHJldmlvdXMiLDE3NywiVktfTUVESUFfUFJFVl9UUkFDSyIsIiIsIiJdLFsxMTYsMSwxNzMsIk1lZGlhU3RvcCIsMTIxLCJNZWRpYVN0b3AiLDE3OCwiVktfTUVESUFfU1RPUCIsIiIsIiJdLFswLDEsMTc0LCJFamVjdCIsMCwiIiwwLCIiLCIiLCIiXSxbMTE3LDEsMTc1LCJNZWRpYVBsYXlQYXVzZSIsMTIyLCJNZWRpYVBsYXlQYXVzZSIsMTc5LCJWS19NRURJQV9QTEFZX1BBVVNFIiwiIiwiIl0sWzAsMSwxNzYsIk1lZGlhU2VsZWN0IiwxMjMsIkxhdW5jaE1lZGlhUGxheWVyIiwxODEsIlZLX01FRElBX0xBVU5DSF9NRURJQV9TRUxFQ1QiLCIiLCIiXSxbMCwxLDE3NywiTGF1bmNoTWFpbCIsMTI0LCJMYXVuY2hNYWlsIiwxODAsIlZLX01FRElBX0xBVU5DSF9NQUlMIiwiIiwiIl0sWzAsMSwxNzgsIkxhdW5jaEFwcDIiLDEyNSwiTGF1bmNoQXBwMiIsMTgzLCJWS19NRURJQV9MQVVOQ0hfQVBQMiIsIiIsIiJdLFswLDEsMTc5LCJMYXVuY2hBcHAxIiwwLCIiLDAsIlZLX01FRElBX0xBVU5DSF9BUFAxIiwiIiwiIl0sWzAsMSwxODAsIlNlbGVjdFRhc2siLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSwxODEsIkxhdW5jaFNjcmVlblNhdmVyIiwwLCIiLDAsIiIsIiIsIiJdLFswLDEsMTgyLCJCcm93c2VyU2VhcmNoIiwxMTUsIkJyb3dzZXJTZWFyY2giLDE3MCwiVktfQlJPV1NFUl9TRUFSQ0giLCIiLCIiXSxbMCwxLDE4MywiQnJvd3NlckhvbWUiLDExNiwiQnJvd3NlckhvbWUiLDE3MiwiVktfQlJPV1NFUl9IT01FIiwiIiwiIl0sWzExMiwxLDE4NCwiQnJvd3NlckJhY2siLDExNywiQnJvd3NlckJhY2siLDE2NiwiVktfQlJPV1NFUl9CQUNLIiwiIiwiIl0sWzExMywxLDE4NSwiQnJvd3NlckZvcndhcmQiLDExOCwiQnJvd3NlckZvcndhcmQiLDE2NywiVktfQlJPV1NFUl9GT1JXQVJEIiwiIiwiIl0sWzAsMSwxODYsIkJyb3dzZXJTdG9wIiwwLCIiLDAsIlZLX0JST1dTRVJfU1RPUCIsIiIsIiJdLFswLDEsMTg3LCJCcm93c2VyUmVmcmVzaCIsMCwiIiwwLCJWS19CUk9XU0VSX1JFRlJFU0giLCIiLCIiXSxbMCwxLDE4OCwiQnJvd3NlckZhdm9yaXRlcyIsMCwiIiwwLCJWS19CUk9XU0VSX0ZBVk9SSVRFUyIsIiIsIiJdLFswLDEsMTg5LCJab29tVG9nZ2xlIiwwLCIiLDAsIiIsIiIsIiJdLFswLDEsMTkwLCJNYWlsUmVwbHkiLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSwxOTEsIk1haWxGb3J3YXJkIiwwLCIiLDAsIiIsIiIsIiJdLFswLDEsMTkyLCJNYWlsU2VuZCIsMCwiIiwwLCIiLCIiLCIiXSxbMTA5LDEsMCwiIiwxMDksIktleUluQ29tcG9zaXRpb24iLDIyOSwiIiwiIiwiIl0sWzExMSwxLDAsIiIsMTExLCJBQk5UX0MyIiwxOTQsIlZLX0FCTlRfQzIiLCIiLCIiXSxbOTEsMSwwLCIiLDkxLCJPRU1fOCIsMjIzLCJWS19PRU1fOCIsIiIsIiJdLFswLDEsMCwiIiwwLCIiLDAsIlZLX0NMRUFSIiwiIiwiIl0sWzAsMSwwLCIiLDAsIiIsMCwiVktfS0FOQSIsIiIsIiJdLFswLDEsMCwiIiwwLCIiLDAsIlZLX0hBTkdVTCIsIiIsIiJdLFswLDEsMCwiIiwwLCIiLDAsIlZLX0pVTkpBIiwiIiwiIl0sWzAsMSwwLCIiLDAsIiIsMCwiVktfRklOQUwiLCIiLCIiXSxbMCwxLDAsIiIsMCwiIiwwLCJWS19IQU5KQSIsIiIsIiJdLFswLDEsMCwiIiwwLCIiLDAsIlZLX0tBTkpJIiwiIiwiIl0sWzAsMSwwLCIiLDAsIiIsMCwiVktfQ09OVkVSVCIsIiIsIiJdLFswLDEsMCwiIiwwLCIiLDAsIlZLX05PTkNPTlZFUlQiLCIiLCIiXSxbMCwxLDAsIiIsMCwiIiwwLCJWS19BQ0NFUFQiLCIiLCIiXSxbMCwxLDAsIiIsMCwiIiwwLCJWS19NT0RFQ0hBTkdFIiwiIiwiIl0sWzAsMSwwLCIiLDAsIiIsMCwiVktfU0VMRUNUIiwiIiwiIl0sWzAsMSwwLCIiLDAsIiIsMCwiVktfUFJJTlQiLCIiLCIiXSxbMCwxLDAsIiIsMCwiIiwwLCJWS19FWEVDVVRFIiwiIiwiIl0sWzAsMSwwLCIiLDAsIiIsMCwiVktfU05BUFNIT1QiLCIiLCIiXSxbMCwxLDAsIiIsMCwiIiwwLCJWS19IRUxQIiwiIiwiIl0sWzAsMSwwLCIiLDAsIiIsMCwiVktfQVBQUyIsIiIsIiJdLFswLDEsMCwiIiwwLCIiLDAsIlZLX1BST0NFU1NLRVkiLCIiLCIiXSxbMCwxLDAsIiIsMCwiIiwwLCJWS19QQUNLRVQiLCIiLCIiXSxbMCwxLDAsIiIsMCwiIiwwLCJWS19EQkVfU0JDU0NIQVIiLCIiLCIiXSxbMCwxLDAsIiIsMCwiIiwwLCJWS19EQkVfREJDU0NIQVIiLCIiLCIiXSxbMCwxLDAsIiIsMCwiIiwwLCJWS19BVFROIiwiIiwiIl0sWzAsMSwwLCIiLDAsIiIsMCwiVktfQ1JTRUwiLCIiLCIiXSxbMCwxLDAsIiIsMCwiIiwwLCJWS19FWFNFTCIsIiIsIiJdLFswLDEsMCwiIiwwLCIiLDAsIlZLX0VSRU9GIiwiIiwiIl0sWzAsMSwwLCIiLDAsIiIsMCwiVktfUExBWSIsIiIsIiJdLFswLDEsMCwiIiwwLCIiLDAsIlZLX1pPT00iLCIiLCIiXSxbMCwxLDAsIiIsMCwiIiwwLCJWS19OT05BTUUiLCIiLCIiXSxbMCwxLDAsIiIsMCwiIiwwLCJWS19QQTEiLCIiLCIiXSxbMCwxLDAsIiIsMCwiIiwwLCJWS19PRU1fQ0xFQVIiLCIiLCIiXV0pe2NvbnN0Wyxobix1bixjbixkbixmbixtbixnbixibixwbl09bG47aWYodFt1bl18fCh0W3VuXT0hMCxCdFt1bl09Y24scXRbY25dPXVuLFV0W2NuLnRvTG93ZXJDYXNlKCldPXVuLGhuJiYwIT09KEh0W3VuXT1kbikmJjMhPT1kbiYmNSE9PWRuJiY0IT09ZG4mJjYhPT1kbiYmNTchPT1kbiYmKFd0W2RuXT11bikpLCFlW2RuXSl7aWYoZVtkbl09ITAsIWZuKXRocm93IG5ldyBFcnJvcihgU3RyaW5nIHJlcHJlc2VudGF0aW9uIG1pc3NpbmcgZm9yIGtleSBjb2RlICR7ZG59IGFyb3VuZCBzY2FuIGNvZGUgYCtjbik7SXQuZGVmaW5lKGRuLGZuKSxWdC5kZWZpbmUoZG4sYm58fGZuKSxPdC5kZWZpbmUoZG4scG58fGJufHxmbil9bW4mJihGdFttbl09ZG4pLGduJiYoVHRbZ25dPWRuKX1XdFszXT00Nn1jbGFzcyB6dCBleHRlbmRzIHB7Y29uc3RydWN0b3IoZSx0LHIsbil7c3VwZXIoZSx0LHIsbiksdGhpcy5zZWxlY3Rpb25TdGFydExpbmVOdW1iZXI9ZSx0aGlzLnNlbGVjdGlvblN0YXJ0Q29sdW1uPXQsdGhpcy5wb3NpdGlvbkxpbmVOdW1iZXI9cix0aGlzLnBvc2l0aW9uQ29sdW1uPW59dG9TdHJpbmcoKXtyZXR1cm4iWyIrdGhpcy5zZWxlY3Rpb25TdGFydExpbmVOdW1iZXIrIiwiK3RoaXMuc2VsZWN0aW9uU3RhcnRDb2x1bW4rIiAtPiAiK3RoaXMucG9zaXRpb25MaW5lTnVtYmVyKyIsIit0aGlzLnBvc2l0aW9uQ29sdW1uKyJdIn1lcXVhbHNTZWxlY3Rpb24oZSl7cmV0dXJuIHp0LnNlbGVjdGlvbnNFcXVhbCh0aGlzLGUpfXN0YXRpYyBzZWxlY3Rpb25zRXF1YWwoZSx0KXtyZXR1cm4gZS5zZWxlY3Rpb25TdGFydExpbmVOdW1iZXI9PT10LnNlbGVjdGlvblN0YXJ0TGluZU51bWJlciYmZS5zZWxlY3Rpb25TdGFydENvbHVtbj09PXQuc2VsZWN0aW9uU3RhcnRDb2x1bW4mJmUucG9zaXRpb25MaW5lTnVtYmVyPT09dC5wb3NpdGlvbkxpbmVOdW1iZXImJmUucG9zaXRpb25Db2x1bW49PT10LnBvc2l0aW9uQ29sdW1ufWdldERpcmVjdGlvbigpe3JldHVybiB0aGlzLnNlbGVjdGlvblN0YXJ0TGluZU51bWJlcj09PXRoaXMuc3RhcnRMaW5lTnVtYmVyJiZ0aGlzLnNlbGVjdGlvblN0YXJ0Q29sdW1uPT09dGhpcy5zdGFydENvbHVtbj8wOjF9c2V0RW5kUG9zaXRpb24oZSx0KXtyZXR1cm4gMD09PXRoaXMuZ2V0RGlyZWN0aW9uKCk/bmV3IHp0KHRoaXMuc3RhcnRMaW5lTnVtYmVyLHRoaXMuc3RhcnRDb2x1bW4sZSx0KTpuZXcgenQoZSx0LHRoaXMuc3RhcnRMaW5lTnVtYmVyLHRoaXMuc3RhcnRDb2x1bW4pfWdldFBvc2l0aW9uKCl7cmV0dXJuIG5ldyBzdCh0aGlzLnBvc2l0aW9uTGluZU51bWJlcix0aGlzLnBvc2l0aW9uQ29sdW1uKX1nZXRTZWxlY3Rpb25TdGFydCgpe3JldHVybiBuZXcgc3QodGhpcy5zZWxlY3Rpb25TdGFydExpbmVOdW1iZXIsdGhpcy5zZWxlY3Rpb25TdGFydENvbHVtbil9c2V0U3RhcnRQb3NpdGlvbihlLHQpe3JldHVybiAwPT09dGhpcy5nZXREaXJlY3Rpb24oKT9uZXcgenQoZSx0LHRoaXMuZW5kTGluZU51bWJlcix0aGlzLmVuZENvbHVtbik6bmV3IHp0KHRoaXMuZW5kTGluZU51bWJlcix0aGlzLmVuZENvbHVtbixlLHQpfXN0YXRpYyBmcm9tUG9zaXRpb25zKGUsdD1lKXtyZXR1cm4gbmV3IHp0KGUubGluZU51bWJlcixlLmNvbHVtbix0LmxpbmVOdW1iZXIsdC5jb2x1bW4pfXN0YXRpYyBmcm9tUmFuZ2UoZSx0KXtyZXR1cm4gMD09PXQ/bmV3IHp0KGUuc3RhcnRMaW5lTnVtYmVyLGUuc3RhcnRDb2x1bW4sZS5lbmRMaW5lTnVtYmVyLGUuZW5kQ29sdW1uKTpuZXcgenQoZS5lbmRMaW5lTnVtYmVyLGUuZW5kQ29sdW1uLGUuc3RhcnRMaW5lTnVtYmVyLGUuc3RhcnRDb2x1bW4pfXN0YXRpYyBsaWZ0U2VsZWN0aW9uKGUpe3JldHVybiBuZXcgenQoZS5zZWxlY3Rpb25TdGFydExpbmVOdW1iZXIsZS5zZWxlY3Rpb25TdGFydENvbHVtbixlLnBvc2l0aW9uTGluZU51bWJlcixlLnBvc2l0aW9uQ29sdW1uKX1zdGF0aWMgc2VsZWN0aW9uc0FyckVxdWFsKHIsbil7aWYociYmIW58fCFyJiZuKXJldHVybiExO2lmKCFyJiYhbilyZXR1cm4hMDtpZihyLmxlbmd0aCE9PW4ubGVuZ3RoKXJldHVybiExO2ZvcihsZXQgZT0wLHQ9ci5sZW5ndGg7ZTx0O2UrKylpZighdGhpcy5zZWxlY3Rpb25zRXF1YWwocltlXSxuW2VdKSlyZXR1cm4hMTtyZXR1cm4hMH1zdGF0aWMgaXNJU2VsZWN0aW9uKGUpe3JldHVybiBlJiYibnVtYmVyIj09dHlwZW9mIGUuc2VsZWN0aW9uU3RhcnRMaW5lTnVtYmVyJiYibnVtYmVyIj09dHlwZW9mIGUuc2VsZWN0aW9uU3RhcnRDb2x1bW4mJiJudW1iZXIiPT10eXBlb2YgZS5wb3NpdGlvbkxpbmVOdW1iZXImJiJudW1iZXIiPT10eXBlb2YgZS5wb3NpdGlvbkNvbHVtbn1zdGF0aWMgY3JlYXRlV2l0aERpcmVjdGlvbihlLHQscixuLGkpe3JldHVybiAwPT09aT9uZXcgenQoZSx0LHIsbik6bmV3IHp0KHIsbixlLHQpfX12YXIganQsJHQ9ZnVuY3Rpb24oZSxvLHMsbCl7cmV0dXJuIG5ldyhzPXN8fFByb21pc2UpKGZ1bmN0aW9uKHIsdCl7ZnVuY3Rpb24gbihlKXt0cnl7YShsLm5leHQoZSkpfWNhdGNoKGUpe3QoZSl9fWZ1bmN0aW9uIGkoZSl7dHJ5e2EobC50aHJvdyhlKSl9Y2F0Y2goZSl7dChlKX19ZnVuY3Rpb24gYShlKXt2YXIgdDtlLmRvbmU/cihlLnZhbHVlKTooKHQ9ZS52YWx1ZSlpbnN0YW5jZW9mIHM/dDpuZXcgcyhmdW5jdGlvbihlKXtlKHQpfSkpLnRoZW4obixpKX1hKChsPWwuYXBwbHkoZSxvfHxbXSkpLm5leHQoKSl9KX0sR3Q9ZnVuY3Rpb24obyl7aWYoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKXRocm93IG5ldyBUeXBlRXJyb3IoIlN5bWJvbC5hc3luY0l0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLiIpO3ZhciBlLHQ9b1tTeW1ib2wuYXN5bmNJdGVyYXRvcl07cmV0dXJuIHQ/dC5jYWxsKG8pOihvPSJmdW5jdGlvbiI9PXR5cGVvZiBfX3ZhbHVlcz9fX3ZhbHVlcyhvKTpvW1N5bWJvbC5pdGVyYXRvcl0oKSxlPXt9LHIoIm5leHQiKSxyKCJ0aHJvdyIpLHIoInJldHVybiIpLGVbU3ltYm9sLmFzeW5jSXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LGUpO2Z1bmN0aW9uIHIoYSl7ZVthXT1vW2FdJiZmdW5jdGlvbihpKXtyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24oZSx0KXt2YXIgcixuO2k9b1thXShpKSxyPWUsZT10LG49aS5kb25lLHQ9aS52YWx1ZSxQcm9taXNlLnJlc29sdmUodCkudGhlbihmdW5jdGlvbihlKXtyKHt2YWx1ZTplLGRvbmU6bn0pfSxlKX0pfX19O2NsYXNzIEp0e2NvbnN0cnVjdG9yKHQpe3RoaXMuX3N0YXRlPTAsdGhpcy5fcmVzdWx0cz1bXSx0aGlzLl9lcnJvcj1udWxsLHRoaXMuX29uU3RhdGVDaGFuZ2VkPW5ldyBYLHF1ZXVlTWljcm90YXNrKCgpPT4kdCh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7Y29uc3QgZT17ZW1pdE9uZTplPT50aGlzLmVtaXRPbmUoZSksZW1pdE1hbnk6ZT0+dGhpcy5lbWl0TWFueShlKSxyZWplY3Q6ZT0+dGhpcy5yZWplY3QoZSl9O3RyeXt5aWVsZCBQcm9taXNlLnJlc29sdmUodChlKSksdGhpcy5yZXNvbHZlKCl9Y2F0Y2goZSl7dGhpcy5yZWplY3QoZSl9ZmluYWxseXtlLmVtaXRPbmU9dm9pZCAwLGUuZW1pdE1hbnk9dm9pZCAwLGUucmVqZWN0PXZvaWQgMH19KSl9c3RhdGljIGZyb21BcnJheSh0KXtyZXR1cm4gbmV3IEp0KGU9PntlLmVtaXRNYW55KHQpfSl9c3RhdGljIGZyb21Qcm9taXNlKHQpe3JldHVybiBuZXcgSnQoZT0+JHQodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe2UuZW1pdE1hbnkoeWllbGQgdCl9KSl9c3RhdGljIGZyb21Qcm9taXNlcyhlKXtyZXR1cm4gbmV3IEp0KHQ9PiR0KHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXt5aWVsZCBQcm9taXNlLmFsbChlLm1hcChlPT4kdCh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7cmV0dXJuIHQuZW1pdE9uZSh5aWVsZCBlKX0pKSl9KSl9c3RhdGljIG1lcmdlKGUpe3JldHVybiBuZXcgSnQobz0+JHQodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe3lpZWxkIFByb21pc2UuYWxsKGUubWFwKG49Pnt2YXIgaSxhO3JldHVybiAkdCh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7dmFyIHQsZTt0cnl7Zm9yKGk9R3Qobik7IShhPXlpZWxkIGkubmV4dCgpKS5kb25lOyl7dmFyIHI9YS52YWx1ZTtvLmVtaXRPbmUocil9fWNhdGNoKGUpe3Q9e2Vycm9yOmV9fWZpbmFsbHl7dHJ5e2EmJiFhLmRvbmUmJihlPWkucmV0dXJuKSYmKHlpZWxkIGUuY2FsbChpKSl9ZmluYWxseXtpZih0KXRocm93IHQuZXJyb3J9fX0pfSkpfSkpfVtTeW1ib2wuYXN5bmNJdGVyYXRvcl0oKXtsZXQgZT0wO3JldHVybntuZXh0OigpPT4kdCh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7Zm9yKDs7KXtpZigyPT09dGhpcy5fc3RhdGUpdGhyb3cgdGhpcy5fZXJyb3I7aWYoZTx0aGlzLl9yZXN1bHRzLmxlbmd0aClyZXR1cm57ZG9uZTohMSx2YWx1ZTp0aGlzLl9yZXN1bHRzW2UrK119O2lmKDE9PT10aGlzLl9zdGF0ZSlyZXR1cm57ZG9uZTohMCx2YWx1ZTp2b2lkIDB9O3lpZWxkIFQudG9Qcm9taXNlKHRoaXMuX29uU3RhdGVDaGFuZ2VkLmV2ZW50KX19KX19c3RhdGljIG1hcChvLHMpe3JldHVybiBuZXcgSnQoYT0+JHQodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe3ZhciB0LGU7dHJ5e2Zvcih2YXIgcixuPUd0KG8pOyEocj15aWVsZCBuLm5leHQoKSkuZG9uZTspe3ZhciBpPXIudmFsdWU7YS5lbWl0T25lKHMoaSkpfX1jYXRjaChlKXt0PXtlcnJvcjplfX1maW5hbGx5e3RyeXtyJiYhci5kb25lJiYoZT1uLnJldHVybikmJih5aWVsZCBlLmNhbGwobikpfWZpbmFsbHl7aWYodCl0aHJvdyB0LmVycm9yfX19KSl9bWFwKGUpe3JldHVybiBKdC5tYXAodGhpcyxlKX1zdGF0aWMgZmlsdGVyKG8scyl7cmV0dXJuIG5ldyBKdChhPT4kdCh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7dmFyIHQsZTt0cnl7Zm9yKHZhciByLG49R3Qobyk7IShyPXlpZWxkIG4ubmV4dCgpKS5kb25lOyl7dmFyIGk9ci52YWx1ZTtzKGkpJiZhLmVtaXRPbmUoaSl9fWNhdGNoKGUpe3Q9e2Vycm9yOmV9fWZpbmFsbHl7dHJ5e3ImJiFyLmRvbmUmJihlPW4ucmV0dXJuKSYmKHlpZWxkIGUuY2FsbChuKSl9ZmluYWxseXtpZih0KXRocm93IHQuZXJyb3J9fX0pKX1maWx0ZXIoZSl7cmV0dXJuIEp0LmZpbHRlcih0aGlzLGUpfXN0YXRpYyBjb2FsZXNjZShlKXtyZXR1cm4gSnQuZmlsdGVyKGUsZT0+ISFlKX1jb2FsZXNjZSgpe3JldHVybiBKdC5jb2FsZXNjZSh0aGlzKX1zdGF0aWMgdG9Qcm9taXNlKHIpe3ZhciBuLGksYSxvO3JldHVybiAkdCh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7Y29uc3QgZT1bXTt0cnl7Zm9yKG49R3Qocik7IShpPXlpZWxkIG4ubmV4dCgpKS5kb25lOyl7dmFyIHQ9aS52YWx1ZTtlLnB1c2godCl9fWNhdGNoKGUpe2E9e2Vycm9yOmV9fWZpbmFsbHl7dHJ5e2kmJiFpLmRvbmUmJihvPW4ucmV0dXJuKSYmKHlpZWxkIG8uY2FsbChuKSl9ZmluYWxseXtpZihhKXRocm93IGEuZXJyb3J9fXJldHVybiBlfSl9dG9Qcm9taXNlKCl7cmV0dXJuIEp0LnRvUHJvbWlzZSh0aGlzKX1lbWl0T25lKGUpezA9PT10aGlzLl9zdGF0ZSYmKHRoaXMuX3Jlc3VsdHMucHVzaChlKSx0aGlzLl9vblN0YXRlQ2hhbmdlZC5maXJlKCkpfWVtaXRNYW55KGUpezA9PT10aGlzLl9zdGF0ZSYmKHRoaXMuX3Jlc3VsdHM9dGhpcy5fcmVzdWx0cy5jb25jYXQoZSksdGhpcy5fb25TdGF0ZUNoYW5nZWQuZmlyZSgpKX1yZXNvbHZlKCl7MD09PXRoaXMuX3N0YXRlJiYodGhpcy5fc3RhdGU9MSx0aGlzLl9vblN0YXRlQ2hhbmdlZC5maXJlKCkpfXJlamVjdChlKXswPT09dGhpcy5fc3RhdGUmJih0aGlzLl9zdGF0ZT0yLHRoaXMuX2Vycm9yPWUsdGhpcy5fb25TdGF0ZUNoYW5nZWQuZmlyZSgpKX19SnQuRU1QVFk9SnQuZnJvbUFycmF5KFtdKTtjbGFzcyBRdHtjb25zdHJ1Y3Rvcigpe3RoaXNbanRdPSJMaW5rZWRNYXAiLHRoaXMuX21hcD1uZXcgTWFwLHRoaXMuX2hlYWQ9dm9pZCAwLHRoaXMuX3RhaWw9dm9pZCAwLHRoaXMuX3NpemU9MCx0aGlzLl9zdGF0ZT0wfWNsZWFyKCl7dGhpcy5fbWFwLmNsZWFyKCksdGhpcy5faGVhZD12b2lkIDAsdGhpcy5fdGFpbD12b2lkIDAsdGhpcy5fc2l6ZT0wLHRoaXMuX3N0YXRlKyt9aXNFbXB0eSgpe3JldHVybiF0aGlzLl9oZWFkJiYhdGhpcy5fdGFpbH1nZXQgc2l6ZSgpe3JldHVybiB0aGlzLl9zaXplfWdldCBmaXJzdCgpe3ZhciBlO3JldHVybiBudWxsPT09KGU9dGhpcy5faGVhZCl8fHZvaWQgMD09PWU/dm9pZCAwOmUudmFsdWV9Z2V0IGxhc3QoKXt2YXIgZTtyZXR1cm4gbnVsbD09PShlPXRoaXMuX3RhaWwpfHx2b2lkIDA9PT1lP3ZvaWQgMDplLnZhbHVlfWhhcyhlKXtyZXR1cm4gdGhpcy5fbWFwLmhhcyhlKX1nZXQoZSx0PTApe2U9dGhpcy5fbWFwLmdldChlKTtpZihlKXJldHVybiAwIT09dCYmdGhpcy50b3VjaChlLHQpLGUudmFsdWV9c2V0KGUsdCxyPTApe2xldCBuPXRoaXMuX21hcC5nZXQoZSk7aWYobiluLnZhbHVlPXQsMCE9PXImJnRoaXMudG91Y2gobixyKTtlbHNle3N3aXRjaChuPXtrZXk6ZSx2YWx1ZTp0LG5leHQ6dm9pZCAwLHByZXZpb3VzOnZvaWQgMH0scil7Y2FzZSAwOnRoaXMuYWRkSXRlbUxhc3Qobik7YnJlYWs7Y2FzZSAxOnRoaXMuYWRkSXRlbUZpcnN0KG4pO2JyZWFrO2RlZmF1bHQ6dGhpcy5hZGRJdGVtTGFzdChuKX10aGlzLl9tYXAuc2V0KGUsbiksdGhpcy5fc2l6ZSsrfXJldHVybiB0aGlzfWRlbGV0ZShlKXtyZXR1cm4hIXRoaXMucmVtb3ZlKGUpfXJlbW92ZShlKXt2YXIgdD10aGlzLl9tYXAuZ2V0KGUpO2lmKHQpcmV0dXJuIHRoaXMuX21hcC5kZWxldGUoZSksdGhpcy5yZW1vdmVJdGVtKHQpLHRoaXMuX3NpemUtLSx0LnZhbHVlfXNoaWZ0KCl7aWYodGhpcy5faGVhZHx8dGhpcy5fdGFpbCl7aWYoIXRoaXMuX2hlYWR8fCF0aGlzLl90YWlsKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBsaXN0Iik7dmFyIGU9dGhpcy5faGVhZDtyZXR1cm4gdGhpcy5fbWFwLmRlbGV0ZShlLmtleSksdGhpcy5yZW1vdmVJdGVtKGUpLHRoaXMuX3NpemUtLSxlLnZhbHVlfX1mb3JFYWNoKGUsdCl7dmFyIHI9dGhpcy5fc3RhdGU7bGV0IG49dGhpcy5faGVhZDtmb3IoO247KXtpZigodD9lLmJpbmQodCk6ZSkobi52YWx1ZSxuLmtleSx0aGlzKSx0aGlzLl9zdGF0ZSE9PXIpdGhyb3cgbmV3IEVycm9yKCJMaW5rZWRNYXAgZ290IG1vZGlmaWVkIGR1cmluZyBpdGVyYXRpb24uIik7bj1uLm5leHR9fWtleXMoKXtjb25zdCB0PXRoaXMscj10aGlzLl9zdGF0ZTtsZXQgbj10aGlzLl9oZWFkO2NvbnN0IGU9e1tTeW1ib2wuaXRlcmF0b3JdKCl7cmV0dXJuIGV9LG5leHQoKXtpZih0Ll9zdGF0ZSE9PXIpdGhyb3cgbmV3IEVycm9yKCJMaW5rZWRNYXAgZ290IG1vZGlmaWVkIGR1cmluZyBpdGVyYXRpb24uIik7dmFyIGU7cmV0dXJuIG4/KGU9e3ZhbHVlOm4ua2V5LGRvbmU6ITF9LG49bi5uZXh0LGUpOnt2YWx1ZTp2b2lkIDAsZG9uZTohMH19fTtyZXR1cm4gZX12YWx1ZXMoKXtjb25zdCB0PXRoaXMscj10aGlzLl9zdGF0ZTtsZXQgbj10aGlzLl9oZWFkO2NvbnN0IGU9e1tTeW1ib2wuaXRlcmF0b3JdKCl7cmV0dXJuIGV9LG5leHQoKXtpZih0Ll9zdGF0ZSE9PXIpdGhyb3cgbmV3IEVycm9yKCJMaW5rZWRNYXAgZ290IG1vZGlmaWVkIGR1cmluZyBpdGVyYXRpb24uIik7dmFyIGU7cmV0dXJuIG4/KGU9e3ZhbHVlOm4udmFsdWUsZG9uZTohMX0sbj1uLm5leHQsZSk6e3ZhbHVlOnZvaWQgMCxkb25lOiEwfX19O3JldHVybiBlfWVudHJpZXMoKXtjb25zdCB0PXRoaXMscj10aGlzLl9zdGF0ZTtsZXQgbj10aGlzLl9oZWFkO2NvbnN0IGU9e1tTeW1ib2wuaXRlcmF0b3JdKCl7cmV0dXJuIGV9LG5leHQoKXtpZih0Ll9zdGF0ZSE9PXIpdGhyb3cgbmV3IEVycm9yKCJMaW5rZWRNYXAgZ290IG1vZGlmaWVkIGR1cmluZyBpdGVyYXRpb24uIik7dmFyIGU7cmV0dXJuIG4/KGU9e3ZhbHVlOltuLmtleSxuLnZhbHVlXSxkb25lOiExfSxuPW4ubmV4dCxlKTp7dmFsdWU6dm9pZCAwLGRvbmU6ITB9fX07cmV0dXJuIGV9WyhqdD1TeW1ib2wudG9TdHJpbmdUYWcsU3ltYm9sLml0ZXJhdG9yKV0oKXtyZXR1cm4gdGhpcy5lbnRyaWVzKCl9dHJpbU9sZChyKXtpZighKHI+PXRoaXMuc2l6ZSkpaWYoMCE9PXIpe2xldCBlPXRoaXMuX2hlYWQsdD10aGlzLnNpemU7Zm9yKDtlJiZ0PnI7KXRoaXMuX21hcC5kZWxldGUoZS5rZXkpLGU9ZS5uZXh0LHQtLTt0aGlzLl9oZWFkPWUsdGhpcy5fc2l6ZT10LGUmJihlLnByZXZpb3VzPXZvaWQgMCksdGhpcy5fc3RhdGUrK31lbHNlIHRoaXMuY2xlYXIoKX1hZGRJdGVtRmlyc3QoZSl7aWYodGhpcy5faGVhZHx8dGhpcy5fdGFpbCl7aWYoIXRoaXMuX2hlYWQpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGxpc3QiKTtlLm5leHQ9dGhpcy5faGVhZCx0aGlzLl9oZWFkLnByZXZpb3VzPWV9ZWxzZSB0aGlzLl90YWlsPWU7dGhpcy5faGVhZD1lLHRoaXMuX3N0YXRlKyt9YWRkSXRlbUxhc3QoZSl7aWYodGhpcy5faGVhZHx8dGhpcy5fdGFpbCl7aWYoIXRoaXMuX3RhaWwpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGxpc3QiKTtlLnByZXZpb3VzPXRoaXMuX3RhaWwsdGhpcy5fdGFpbC5uZXh0PWV9ZWxzZSB0aGlzLl9oZWFkPWU7dGhpcy5fdGFpbD1lLHRoaXMuX3N0YXRlKyt9cmVtb3ZlSXRlbShlKXtpZihlPT09dGhpcy5faGVhZCYmZT09PXRoaXMuX3RhaWwpdGhpcy5faGVhZD12b2lkIDAsdGhpcy5fdGFpbD12b2lkIDA7ZWxzZSBpZihlPT09dGhpcy5faGVhZCl7aWYoIWUubmV4dCl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgbGlzdCIpO2UubmV4dC5wcmV2aW91cz12b2lkIDAsdGhpcy5faGVhZD1lLm5leHR9ZWxzZSBpZihlPT09dGhpcy5fdGFpbCl7aWYoIWUucHJldmlvdXMpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGxpc3QiKTtlLnByZXZpb3VzLm5leHQ9dm9pZCAwLHRoaXMuX3RhaWw9ZS5wcmV2aW91c31lbHNle2NvbnN0IHQ9ZS5uZXh0LHI9ZS5wcmV2aW91cztpZighdHx8IXIpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGxpc3QiKTsodC5wcmV2aW91cz1yKS5uZXh0PXR9ZS5uZXh0PXZvaWQgMCxlLnByZXZpb3VzPXZvaWQgMCx0aGlzLl9zdGF0ZSsrfXRvdWNoKGUsdCl7aWYoIXRoaXMuX2hlYWR8fCF0aGlzLl90YWlsKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBsaXN0Iik7aWYoMT09PXR8fDI9PT10KWlmKDE9PT10KXtpZihlIT09dGhpcy5faGVhZCl7Y29uc3Qgcj1lLm5leHQsbj1lLnByZXZpb3VzO2U9PT10aGlzLl90YWlsPyhuLm5leHQ9dm9pZCAwLHRoaXMuX3RhaWw9bik6KHIucHJldmlvdXM9bikubmV4dD1yLGUucHJldmlvdXM9dm9pZCAwLGUubmV4dD10aGlzLl9oZWFkLHRoaXMuX2hlYWQucHJldmlvdXM9ZSx0aGlzLl9oZWFkPWUsdGhpcy5fc3RhdGUrK319ZWxzZSBpZigyPT09dCYmZSE9PXRoaXMuX3RhaWwpe2NvbnN0IGk9ZS5uZXh0LGE9ZS5wcmV2aW91cztlPT09dGhpcy5faGVhZD8oaS5wcmV2aW91cz12b2lkIDAsdGhpcy5faGVhZD1pKTooaS5wcmV2aW91cz1hKS5uZXh0PWksZS5uZXh0PXZvaWQgMCxlLnByZXZpb3VzPXRoaXMuX3RhaWwsdGhpcy5fdGFpbC5uZXh0PWUsdGhpcy5fdGFpbD1lLHRoaXMuX3N0YXRlKyt9fXRvSlNPTigpe2NvbnN0IHI9W107cmV0dXJuIHRoaXMuZm9yRWFjaCgoZSx0KT0+e3IucHVzaChbdCxlXSl9KSxyfWZyb21KU09OKGUpe3RoaXMuY2xlYXIoKTtmb3IodmFyW3Qscl1vZiBlKXRoaXMuc2V0KHQscil9fWNsYXNzIFl0IGV4dGVuZHMgUXR7Y29uc3RydWN0b3IoZSx0PTEpe3N1cGVyKCksdGhpcy5fbGltaXQ9ZSx0aGlzLl9yYXRpbz1NYXRoLm1pbihNYXRoLm1heCgwLHQpLDEpfWdldCBsaW1pdCgpe3JldHVybiB0aGlzLl9saW1pdH1zZXQgbGltaXQoZSl7dGhpcy5fbGltaXQ9ZSx0aGlzLmNoZWNrVHJpbSgpfWdldChlLHQ9Mil7cmV0dXJuIHN1cGVyLmdldChlLHQpfXBlZWsoZSl7cmV0dXJuIHN1cGVyLmdldChlLDApfXNldChlLHQpe3JldHVybiBzdXBlci5zZXQoZSx0LDIpLHRoaXMuY2hlY2tUcmltKCksdGhpc31jaGVja1RyaW0oKXt0aGlzLnNpemU+dGhpcy5fbGltaXQmJnRoaXMudHJpbU9sZChNYXRoLnJvdW5kKHRoaXMuX2xpbWl0KnRoaXMuX3JhdGlvKSl9fWNvbnN0IFp0PSIqKiIsWHQ9Ii8iLGVyPSJbL1xcXFxdIix0cj0iW14vXFxcXF0iLHJyPS9cLy9nO2Z1bmN0aW9uIG5yKGUpe3N3aXRjaChlKXtjYXNlIDA6cmV0dXJuIiI7Y2FzZSAxOnJldHVybiB0cisiKj8iO2RlZmF1bHQ6cmV0dXJuYCg/OiR7ZXJ9fCR7dHJ9KyR7ZXJ9fCR7ZXJ9JHt0cn0rKSo/YH19ZnVuY3Rpb24gaXIoZSx0KXtpZighZSlyZXR1cm5bXTtjb25zdCByPVtdO2xldCBuPSExLGk9ITEsYT0iIjtmb3IoY29uc3QgbyBvZiBlKXtzd2l0Y2gobyl7Y2FzZSB0OmlmKG58fGkpYnJlYWs7ci5wdXNoKGEpLGE9IiI7Y29udGludWU7Y2FzZSJ7IjpuPSEwO2JyZWFrO2Nhc2UifSI6bj0hMTticmVhaztjYXNlIlsiOmk9ITA7YnJlYWs7Y2FzZSJdIjppPSExfWErPW99cmV0dXJuIGEmJnIucHVzaChhKSxyfWZ1bmN0aW9uIGFyKCl7cmV0dXJuITF9Y29uc3Qgb3I9L15cKlwqXC9cKlwuW1x3XC4tXSskLyxzcj0vXlwqXCpcLyhbXHdcLi1dKylcLz8kLyxscj0vXntcKlwqXC9bXCpcLl0/W1x3XC4tXStcLz8oLFwqXCpcL1tcKlwuXT9bXHdcLi1dK1wvPykqfSQvLGhyPS9ee1wqXCpcL1tcKlwuXT9bXHdcLi1dKyhcLyhcKlwqKT8pPygsXCpcKlwvW1wqXC5dP1tcd1wuLV0rKFwvKFwqXCopPyk/KSp9JC8sdXI9L15cKlwqKChcL1tcd1wuLV0rKSspXC8/JC8sY3I9L14oW1x3XC4tXSsoXC9bXHdcLi1dKykqKVwvPyQvLGRyPW5ldyBZdCgxZTQpLGZyPWZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9O2Z1bmN0aW9uIG1yKGUsdCl7aWYoIWUpcmV0dXJuIGZyO2xldCByO3ZhciBuPShyPShyPSJzdHJpbmciIT10eXBlb2YgZT9lLnBhdHRlcm46ZSkudHJpbSgpKSsiXyIrISF0LnRyaW1Gb3JFeGNsdXNpb25zO2xldCBpPWRyLmdldChuKTtpZihpKXJldHVybiBncihpLGUpO2xldCBhO2lmKG9yLnRlc3Qocikpe2NvbnN0IG89ci5zdWJzdHIoNCk7aT1mdW5jdGlvbihlLHQpe3JldHVybiJzdHJpbmciPT10eXBlb2YgZSYmZS5lbmRzV2l0aChvKT9yOm51bGx9fWVsc2UgaT0oYT1zci5leGVjKGJyKHIsdCkpKT9mdW5jdGlvbihyLG4pe2Z1bmN0aW9uIGUoZSx0KXtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIGU/bnVsbDp0P3Q9PT1yP246bnVsbDplPT09cnx8ZS5lbmRzV2l0aChpKXx8ZS5lbmRzV2l0aChhKT9uOm51bGx9Y29uc3QgaT0iLyIrcixhPSJcXCIrcix0PVtyXTtyZXR1cm4gZS5iYXNlbmFtZXM9dCxlLnBhdHRlcm5zPVtuXSxlLmFsbEJhc2VuYW1lcz10LGV9KGFbMV0scik6KHQudHJpbUZvckV4Y2x1c2lvbnM/aHI6bHIpLnRlc3Qocik/ZnVuY3Rpb24oaSx0KXtjb25zdCBhPXdyKGkuc2xpY2UoMSwtMSkuc3BsaXQoIiwiKS5tYXAoZT0+bXIoZSx0KSkuZmlsdGVyKGU9PmUhPT1mciksaSksZT1hLmxlbmd0aDtpZighZSlyZXR1cm4gZnI7aWYoMT09PWUpcmV0dXJuIGFbMF07ZnVuY3Rpb24gcihyLG4pe2ZvcihsZXQgZT0wLHQ9YS5sZW5ndGg7ZTx0O2UrKylpZihhW2VdKHIsbikpcmV0dXJuIGk7cmV0dXJuIG51bGx9dmFyIG49YS5maW5kKGU9PiEhZS5hbGxCYXNlbmFtZXMpO24mJihyLmFsbEJhc2VuYW1lcz1uLmFsbEJhc2VuYW1lcyk7bj1hLnJlZHVjZSgoZSx0KT0+dC5hbGxQYXRocz9lLmNvbmNhdCh0LmFsbFBhdGhzKTplLFtdKTtuLmxlbmd0aCYmKHIuYWxsUGF0aHM9bik7cmV0dXJuIHJ9KHIsdCk6KGE9dXIuZXhlYyhicihyLHQpKSk/cHIoYVsxXS5zdWJzdHIoMSksciwhMCk6KGE9Y3IuZXhlYyhicihyLHQpKSk/cHIoYVsxXSxyLCExKTpmdW5jdGlvbih0KXt0cnl7Y29uc3Qgcj1uZXcgUmVnRXhwKGBeJHtmdW5jdGlvbiB1KGUpe2lmKCFlKXJldHVybiIiO2xldCBjPSIiO2NvbnN0IGQ9aXIoZSxYdCk7aWYoZC5ldmVyeShlPT5lPT09WnQpKWM9Ii4qIjtlbHNle2xldCBoPSExO2QuZm9yRWFjaCgoaSxhKT0+e2lmKGkhPT1adCl7bGV0IGU9ITEsdD0iIixyPSExLG49IiI7Zm9yKGNvbnN0IHMgb2YgaSlpZigifSIhPT1zJiZlKXQrPXM7ZWxzZSBpZighcnx8Il0iPT09cyYmbilzd2l0Y2gocyl7Y2FzZSJ7IjplPSEwO2NvbnRpbnVlO2Nhc2UiWyI6cj0hMDtjb250aW51ZTtjYXNlIn0iOntjb25zdCBsPWlyKHQsIiwiKTt2YXIgbz1gKD86JHtsLm1hcChlPT51KGUpKS5qb2luKCJ8Iil9KWA7Yys9byxlPSExLHQ9IiI7YnJlYWt9Y2FzZSJdIjpjKz0iWyIrbisiXSIscj0hMSxuPSIiO2JyZWFrO2Nhc2UiPyI6Yys9dHI7Y29udGludWU7Y2FzZSIqIjpjKz1ucigxKTtjb250aW51ZTtkZWZhdWx0OmMrPW5lKHMpfWVsc2V7bGV0IGU7ZT0iLSI9PT1zP3M6Il4iIT09cyYmIiEiIT09c3x8bj9zPT09WHQ/IiI6bmUocyk6Il4iLG4rPWV9YTxkLmxlbmd0aC0xJiYoZFthKzFdIT09WnR8fGErMjxkLmxlbmd0aCkmJihjKz1lciksaD0hMX1lbHNlIGh8fChjKz1ucigyKSxoPSEwKX0pfXJldHVybiBjfSh0KX0kYCk7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiByLmxhc3RJbmRleD0wLCJzdHJpbmciPT10eXBlb2YgZSYmci50ZXN0KGUpP3Q6bnVsbH19Y2F0Y2goZSl7cmV0dXJuIGZyfX0ocik7cmV0dXJuIGRyLnNldChuLGkpLGdyKGksZSl9ZnVuY3Rpb24gZ3IocixuKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIG4/cjpmdW5jdGlvbihlLHQpe3JldHVybiBmdW5jdGlvbih0LHIsZSxuPVdlKXtpZih0PT09cilyZXR1cm4gMTtpZih0JiZyJiYhKHIubGVuZ3RoPnQubGVuZ3RoKSl7aWYoZSl7aWYoIXNlKHQscikpcmV0dXJuO2lmKHIubGVuZ3RoPT09dC5sZW5ndGgpcmV0dXJuIDE7bGV0IGU9ci5sZW5ndGg7cmV0dXJuIHIuY2hhckF0KHIubGVuZ3RoLTEpPT09biYmZS0tLHQuY2hhckF0KGUpPT09bn1yZXR1cm4gci5jaGFyQXQoci5sZW5ndGgtMSkhPT1uJiYocis9biksMD09PXQuaW5kZXhPZihyKX19KGUsbi5iYXNlLCFPKT9yKGUuc3Vic3RyKG4uYmFzZS5sZW5ndGgrMSksdCk6bnVsbH19ZnVuY3Rpb24gYnIoZSx0KXtyZXR1cm4gdC50cmltRm9yRXhjbHVzaW9ucyYmZS5lbmRzV2l0aCgiLyoqIik/ZS5zdWJzdHIoMCxlLmxlbmd0aC0yKTplfWZ1bmN0aW9uIHByKHIsbixlKXtjb25zdCBpPVdlPT09QmUuc2VwLGE9aT9yOnIucmVwbGFjZShycixXZSksbz1XZSthLHM9QmUuc2VwK3IsdD1lP2Z1bmN0aW9uKGUsdCl7cmV0dXJuInN0cmluZyIhPXR5cGVvZiBlfHxlIT09YSYmIWUuZW5kc1dpdGgobykmJihpfHxlIT09ciYmIWUuZW5kc1dpdGgocykpP251bGw6bn06ZnVuY3Rpb24oZSx0KXtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIGV8fGUhPT1hJiYoaXx8ZSE9PXIpP251bGw6bn07cmV0dXJuIHQuYWxsUGF0aHM9WyhlPyIqLyI6Ii4vIikrcl0sdH1mdW5jdGlvbiBDcihlLHQscil7cmV0dXJuIGUmJiJzdHJpbmciPT10eXBlb2YgdCYmZnVuY3Rpb24oZSx0PXt9KXtpZighZSlyZXR1cm4gYXI7aWYoInN0cmluZyI9PXR5cGVvZiBlfHxmdW5jdGlvbihlKXtyZXR1cm4hIWUmJigic3RyaW5nIj09dHlwZW9mIGUuYmFzZSYmInN0cmluZyI9PXR5cGVvZiBlLnBhdHRlcm4pfShlKSl7Y29uc3Qgbj1tcihlLHQpO2lmKG49PT1mcilyZXR1cm4gYXI7dmFyIHI9ZnVuY3Rpb24oZSx0KXtyZXR1cm4hIW4oZSx0KX07cmV0dXJuIG4uYWxsQmFzZW5hbWVzJiYoci5hbGxCYXNlbmFtZXM9bi5hbGxCYXNlbmFtZXMpLG4uYWxsUGF0aHMmJihyLmFsbFBhdGhzPW4uYWxsUGF0aHMpLHJ9cmV0dXJuIGZ1bmN0aW9uKHIsbil7Y29uc3QgbD13cihPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhyKS5tYXAoZT0+e3t2YXIgYT1lLHQ9KGU9cltlXSxuKTtpZighMT09PWUpcmV0dXJuIGZyO2NvbnN0IG89bXIoYSx0KTtpZihvPT09ZnIpcmV0dXJuIGZyO2lmKCJib29sZWFuIj09dHlwZW9mIGUpcmV0dXJuIG87aWYoZSl7Y29uc3Qgcz1lLndoZW47aWYoInN0cmluZyI9PXR5cGVvZiBzKXJldHVybih0PShlLHQscixuKT0+e2lmKCFufHwhbyhlLHQpKXJldHVybiBudWxsO2NvbnN0IGk9bihzLnJlcGxhY2UoIiQoYmFzZW5hbWUpIixyKSk7cmV0dXJuKGU9aSkmJiJmdW5jdGlvbiI9PXR5cGVvZiBlLnRoZW4/aS50aGVuKGU9PmU/YTpudWxsKTppP2E6bnVsbH0pLnJlcXVpcmVzU2libGluZ3M9ITAsdH1yZXR1cm4gb319KS5maWx0ZXIoZT0+ZSE9PWZyKSksZT1sLmxlbmd0aDtpZighZSlyZXR1cm4gZnI7aWYoIWwuc29tZShlPT4hIWUucmVxdWlyZXNTaWJsaW5ncykpe2lmKDE9PT1lKXJldHVybiBsWzBdO2NvbnN0IHQ9ZnVuY3Rpb24ocixuKXtmb3IobGV0IGU9MCx0PWwubGVuZ3RoO2U8dDtlKyspe3ZhciBpPWxbZV0ocixuKTtpZihpKXJldHVybiBpfXJldHVybiBudWxsfSxpPWwuZmluZChlPT4hIWUuYWxsQmFzZW5hbWVzKSxhPShpJiYodC5hbGxCYXNlbmFtZXM9aS5hbGxCYXNlbmFtZXMpLGwucmVkdWNlKChlLHQpPT50LmFsbFBhdGhzP2UuY29uY2F0KHQuYWxsUGF0aHMpOmUsW10pKTtyZXR1cm4gYS5sZW5ndGgmJih0LmFsbFBhdGhzPWEpLHR9Y29uc3QgdD1mdW5jdGlvbihyLG4saSl7bGV0IGE9dm9pZCAwO2ZvcihsZXQgZT0wLHQ9bC5sZW5ndGg7ZTx0O2UrKyl7Y29uc3Qgcz1sW2VdO3MucmVxdWlyZXNTaWJsaW5ncyYmaSYmKG49bnx8VWUociksYT1hfHxuLnN1YnN0cigwLG4ubGVuZ3RoLUhlKHIpLmxlbmd0aCkpO3ZhciBvPXMocixuLGEsaSk7aWYobylyZXR1cm4gb31yZXR1cm4gbnVsbH0saT1sLmZpbmQoZT0+ISFlLmFsbEJhc2VuYW1lcyk7aSYmKHQuYWxsQmFzZW5hbWVzPWkuYWxsQmFzZW5hbWVzKTtjb25zdCBhPWwucmVkdWNlKChlLHQpPT50LmFsbFBhdGhzP2UuY29uY2F0KHQuYWxsUGF0aHMpOmUsW10pO2EubGVuZ3RoJiYodC5hbGxQYXRocz1hKTtyZXR1cm4gdH0oZSx0KX0oZSkodCx2b2lkIDAscil9ZnVuY3Rpb24gd3IoZSxyKXtjb25zdCB0PWUuZmlsdGVyKGU9PiEhZS5iYXNlbmFtZXMpO2lmKHQubGVuZ3RoPDIpcmV0dXJuIGU7Y29uc3QgaT10LnJlZHVjZSgoZSx0KT0+e3Q9dC5iYXNlbmFtZXM7cmV0dXJuIHQ/ZS5jb25jYXQodCk6ZX0sW10pO2xldCBhO2lmKHIpe2E9W107Zm9yKGxldCBlPTAsdD1pLmxlbmd0aDtlPHQ7ZSsrKWEucHVzaChyKX1lbHNlIGE9dC5yZWR1Y2UoKGUsdCk9Pnt0PXQucGF0dGVybnM7cmV0dXJuIHQ/ZS5jb25jYXQodCk6ZX0sW10pO2Z1bmN0aW9uIG4odCxyKXtpZigic3RyaW5nIiE9dHlwZW9mIHQpcmV0dXJuIG51bGw7aWYoIXIpe2xldCBlO2ZvcihlPXQubGVuZ3RoOzA8ZTtlLS0pe3ZhciBuPXQuY2hhckNvZGVBdChlLTEpO2lmKDQ3PT09bnx8OTI9PT1uKWJyZWFrfXI9dC5zdWJzdHIoZSl9cmV0dXJuLTEhPT0ocj1pLmluZGV4T2YocikpP2Fbcl06bnVsbH1uLmJhc2VuYW1lcz1pLG4ucGF0dGVybnM9YSxuLmFsbEJhc2VuYW1lcz1pO2NvbnN0IG89ZS5maWx0ZXIoZT0+IWUuYmFzZW5hbWVzKTtyZXR1cm4gby5wdXNoKG4pLG99ZnVuY3Rpb24gX3IoZSl7cmV0dXJuInN0cmluZyIhPXR5cGVvZiBlJiYoQXJyYXkuaXNBcnJheShlKT9lLmV2ZXJ5KF9yKTohIWUuZXhjbHVzaXZlKX1jbGFzcyBhe2NvbnN0cnVjdG9yKCl7dGhpcy5fY2xvY2s9MCx0aGlzLl9lbnRyaWVzPVtdLHRoaXMuX29uRGlkQ2hhbmdlPW5ldyBYfWdldCBvbkRpZENoYW5nZSgpe3JldHVybiB0aGlzLl9vbkRpZENoYW5nZS5ldmVudH1yZWdpc3RlcihlLHQpe2xldCByPXtzZWxlY3RvcjplLHByb3ZpZGVyOnQsX3Njb3JlOi0xLF90aW1lOnRoaXMuX2Nsb2NrKyt9O3JldHVybiB0aGlzLl9lbnRyaWVzLnB1c2gociksdGhpcy5fbGFzdENhbmRpZGF0ZT12b2lkIDAsdGhpcy5fb25EaWRDaGFuZ2UuZmlyZSh0aGlzLl9lbnRyaWVzLmxlbmd0aCksdigoKT0+e3ZhciBlOyFyfHwwPD0oZT10aGlzLl9lbnRyaWVzLmluZGV4T2YocikpJiYodGhpcy5fZW50cmllcy5zcGxpY2UoZSwxKSx0aGlzLl9sYXN0Q2FuZGlkYXRlPXZvaWQgMCx0aGlzLl9vbkRpZENoYW5nZS5maXJlKHRoaXMuX2VudHJpZXMubGVuZ3RoKSxyPXZvaWQgMCl9KX1oYXMoZSl7cmV0dXJuIDA8dGhpcy5hbGwoZSkubGVuZ3RofWFsbChlKXtpZighZSlyZXR1cm5bXTt0aGlzLl91cGRhdGVTY29yZXMoZSk7Y29uc3QgdD1bXTtmb3IodmFyIHIgb2YgdGhpcy5fZW50cmllcykwPHIuX3Njb3JlJiZ0LnB1c2goci5wcm92aWRlcik7cmV0dXJuIHR9b3JkZXJlZChlKXtjb25zdCB0PVtdO3JldHVybiB0aGlzLl9vcmRlcmVkRm9yRWFjaChlLGU9PnQucHVzaChlLnByb3ZpZGVyKSksdH1vcmRlcmVkR3JvdXBzKGUpe2NvbnN0IHQ9W107bGV0IHIsbjtyZXR1cm4gdGhpcy5fb3JkZXJlZEZvckVhY2goZSxlPT57ciYmbj09PWUuX3Njb3JlP3IucHVzaChlLnByb3ZpZGVyKToobj1lLl9zY29yZSxyPVtlLnByb3ZpZGVyXSx0LnB1c2gocikpfSksdH1fb3JkZXJlZEZvckVhY2goZSx0KXtpZihlKXt0aGlzLl91cGRhdGVTY29yZXMoZSk7Zm9yKGNvbnN0IHIgb2YgdGhpcy5fZW50cmllcykwPHIuX3Njb3JlJiZ0KHIpfX1fdXBkYXRlU2NvcmVzKGUpe3ZhciB0LHI9e3VyaTplLnVyaS50b1N0cmluZygpLGxhbmd1YWdlOmUuZ2V0TGFuZ3VhZ2VJZCgpfTtpZighdGhpcy5fbGFzdENhbmRpZGF0ZXx8dGhpcy5fbGFzdENhbmRpZGF0ZS5sYW5ndWFnZSE9PXIubGFuZ3VhZ2V8fHRoaXMuX2xhc3RDYW5kaWRhdGUudXJpIT09ci51cmkpe3RoaXMuX2xhc3RDYW5kaWRhdGU9cjtmb3IodmFyIG4gb2YgdGhpcy5fZW50cmllcylpZihuLl9zY29yZT1mdW5jdGlvbiB0KHIsbixpLGEpe2lmKEFycmF5LmlzQXJyYXkocikpe2xldCBlPTA7Zm9yKGNvbnN0IGggb2Ygcil7dmFyIG89dChoLG4saSxhKTtpZigxMD09PW8pcmV0dXJuIG87bz5lJiYoZT1vKX1yZXR1cm4gZX1pZigic3RyaW5nIj09dHlwZW9mIHIpcmV0dXJuIGE/IioiPT09cj81OnI9PT1pPzEwOjA6MDtpZihyKXt2YXJ7bGFuZ3VhZ2U6cixwYXR0ZXJuOnMsc2NoZW1lOmUsaGFzQWNjZXNzVG9BbGxNb2RlbHM6bH09cjtpZighYSYmIWwpcmV0dXJuIDA7bGV0IHQ9MDtpZihlKWlmKGU9PT1uLnNjaGVtZSl0PTEwO2Vsc2V7aWYoIioiIT09ZSlyZXR1cm4gMDt0PTV9aWYocilpZihyPT09aSl0PTEwO2Vsc2V7aWYoIioiIT09cilyZXR1cm4gMDt0PU1hdGgubWF4KHQsNSl9aWYocyl7bGV0IGU7aWYoKGU9InN0cmluZyI9PXR5cGVvZiBzP3M6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHMpLHtiYXNlOnFlKHMuYmFzZSl9KSkhPT1uLmZzUGF0aCYmIUNyKGUsbi5mc1BhdGgpKXJldHVybiAwO3Q9MTB9cmV0dXJuIHR9cmV0dXJuIDB9KG4uc2VsZWN0b3IsZS51cmksZS5nZXRMYW5ndWFnZUlkKCksISh0PWUpLmlzVG9vTGFyZ2VGb3JTeW5jaW5nKCkmJiF0LmlzRm9yU2ltcGxlV2lkZ2V0KSxfcihuLnNlbGVjdG9yKSYmMDxuLl9zY29yZSl7Zm9yKHZhciBpIG9mIHRoaXMuX2VudHJpZXMpaS5fc2NvcmU9MDtuLl9zY29yZT0xZTM7YnJlYWt9dGhpcy5fZW50cmllcy5zb3J0KGEuX2NvbXBhcmVCeVNjb3JlQW5kVGltZSl9fXN0YXRpYyBfY29tcGFyZUJ5U2NvcmVBbmRUaW1lKGUsdCl7cmV0dXJuIGUuX3Njb3JlPHQuX3Njb3JlPzE6ZS5fc2NvcmU+dC5fc2NvcmU/LTE6ZS5fdGltZTx0Ll90aW1lPzE6ZS5fdGltZT50Ll90aW1lPy0xOjB9fXZhciB2cix5cixTcixMcixOcixFcixBcixrcj1mdW5jdGlvbihlLG8scyxsKXtyZXR1cm4gbmV3KHM9c3x8UHJvbWlzZSkoZnVuY3Rpb24ocix0KXtmdW5jdGlvbiBuKGUpe3RyeXthKGwubmV4dChlKSl9Y2F0Y2goZSl7dChlKX19ZnVuY3Rpb24gaShlKXt0cnl7YShsLnRocm93KGUpKX1jYXRjaChlKXt0KGUpfX1mdW5jdGlvbiBhKGUpe3ZhciB0O2UuZG9uZT9yKGUudmFsdWUpOigodD1lLnZhbHVlKWluc3RhbmNlb2Ygcz90Om5ldyBzKGZ1bmN0aW9uKGUpe2UodCl9KSkudGhlbihuLGkpfWEoKGw9bC5hcHBseShlLG98fFtdKSkubmV4dCgpKX0pfTtjbGFzcyB4ciBleHRlbmRzIFN7Y29uc3RydWN0b3IoZSx0LHIpe3N1cGVyKCksdGhpcy5fcmVnaXN0cnk9ZSx0aGlzLl9sYW5ndWFnZUlkPXQsdGhpcy5fZmFjdG9yeT1yLHRoaXMuX2lzRGlzcG9zZWQ9ITEsdGhpcy5fcmVzb2x2ZVByb21pc2U9bnVsbCx0aGlzLl9pc1Jlc29sdmVkPSExfWdldCBpc1Jlc29sdmVkKCl7cmV0dXJuIHRoaXMuX2lzUmVzb2x2ZWR9ZGlzcG9zZSgpe3RoaXMuX2lzRGlzcG9zZWQ9ITAsc3VwZXIuZGlzcG9zZSgpfXJlc29sdmUoKXtyZXR1cm4ga3IodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe3JldHVybiB0aGlzLl9yZXNvbHZlUHJvbWlzZXx8KHRoaXMuX3Jlc29sdmVQcm9taXNlPXRoaXMuX2NyZWF0ZSgpKSx0aGlzLl9yZXNvbHZlUHJvbWlzZX0pfV9jcmVhdGUoKXtyZXR1cm4ga3IodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe3ZhciBlPXlpZWxkIFByb21pc2UucmVzb2x2ZSh0aGlzLl9mYWN0b3J5LmNyZWF0ZVRva2VuaXphdGlvblN1cHBvcnQoKSk7dGhpcy5faXNSZXNvbHZlZD0hMCxlJiYhdGhpcy5faXNEaXNwb3NlZCYmdGhpcy5fcmVnaXN0ZXIodGhpcy5fcmVnaXN0cnkucmVnaXN0ZXIodGhpcy5fbGFuZ3VhZ2VJZCxlKSl9KX19Y2xhc3MgaXtjb25zdHJ1Y3RvcihlLHQscil7dGhpcy5pZD1lLHRoaXMuZGVmaW5pdGlvbj10LHRoaXMuZGVzY3JpcHRpb249cixpLl9hbGxDb2RpY29ucy5wdXNoKHRoaXMpfWdldCBjbGFzc05hbWVzKCl7cmV0dXJuImNvZGljb24gY29kaWNvbi0iK3RoaXMuaWR9Z2V0IGNsYXNzTmFtZXNBcnJheSgpe3JldHVyblsiY29kaWNvbiIsImNvZGljb24tIit0aGlzLmlkXX1nZXQgY3NzU2VsZWN0b3IoKXtyZXR1cm4iLmNvZGljb24uY29kaWNvbi0iK3RoaXMuaWR9c3RhdGljIGdldEFsbCgpe3JldHVybiBpLl9hbGxDb2RpY29uc319aS5fYWxsQ29kaWNvbnM9W10saS5hZGQ9bmV3IGkoImFkZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2MCJ9KSxpLnBsdXM9bmV3IGkoInBsdXMiLGkuYWRkLmRlZmluaXRpb24pLGkuZ2lzdE5ldz1uZXcgaSgiZ2lzdC1uZXciLGkuYWRkLmRlZmluaXRpb24pLGkucmVwb0NyZWF0ZT1uZXcgaSgicmVwby1jcmVhdGUiLGkuYWRkLmRlZmluaXRpb24pLGkubGlnaHRidWxiPW5ldyBpKCJsaWdodGJ1bGIiLHtmb250Q2hhcmFjdGVyOiJcXGVhNjEifSksaS5saWdodEJ1bGI9bmV3IGkoImxpZ2h0LWJ1bGIiLHtmb250Q2hhcmFjdGVyOiJcXGVhNjEifSksaS5yZXBvPW5ldyBpKCJyZXBvIix7Zm9udENoYXJhY3RlcjoiXFxlYTYyIn0pLGkucmVwb0RlbGV0ZT1uZXcgaSgicmVwby1kZWxldGUiLHtmb250Q2hhcmFjdGVyOiJcXGVhNjIifSksaS5naXN0Rm9yaz1uZXcgaSgiZ2lzdC1mb3JrIix7Zm9udENoYXJhY3RlcjoiXFxlYTYzIn0pLGkucmVwb0ZvcmtlZD1uZXcgaSgicmVwby1mb3JrZWQiLHtmb250Q2hhcmFjdGVyOiJcXGVhNjMifSksaS5naXRQdWxsUmVxdWVzdD1uZXcgaSgiZ2l0LXB1bGwtcmVxdWVzdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2NCJ9KSxpLmdpdFB1bGxSZXF1ZXN0QWJhbmRvbmVkPW5ldyBpKCJnaXQtcHVsbC1yZXF1ZXN0LWFiYW5kb25lZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2NCJ9KSxpLnJlY29yZEtleXM9bmV3IGkoInJlY29yZC1rZXlzIix7Zm9udENoYXJhY3RlcjoiXFxlYTY1In0pLGkua2V5Ym9hcmQ9bmV3IGkoImtleWJvYXJkIix7Zm9udENoYXJhY3RlcjoiXFxlYTY1In0pLGkudGFnPW5ldyBpKCJ0YWciLHtmb250Q2hhcmFjdGVyOiJcXGVhNjYifSksaS50YWdBZGQ9bmV3IGkoInRhZy1hZGQiLHtmb250Q2hhcmFjdGVyOiJcXGVhNjYifSksaS50YWdSZW1vdmU9bmV3IGkoInRhZy1yZW1vdmUiLHtmb250Q2hhcmFjdGVyOiJcXGVhNjYifSksaS5wZXJzb249bmV3IGkoInBlcnNvbiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2NyJ9KSxpLnBlcnNvbkZvbGxvdz1uZXcgaSgicGVyc29uLWZvbGxvdyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2NyJ9KSxpLnBlcnNvbk91dGxpbmU9bmV3IGkoInBlcnNvbi1vdXRsaW5lIix7Zm9udENoYXJhY3RlcjoiXFxlYTY3In0pLGkucGVyc29uRmlsbGVkPW5ldyBpKCJwZXJzb24tZmlsbGVkIix7Zm9udENoYXJhY3RlcjoiXFxlYTY3In0pLGkuZ2l0QnJhbmNoPW5ldyBpKCJnaXQtYnJhbmNoIix7Zm9udENoYXJhY3RlcjoiXFxlYTY4In0pLGkuZ2l0QnJhbmNoQ3JlYXRlPW5ldyBpKCJnaXQtYnJhbmNoLWNyZWF0ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2OCJ9KSxpLmdpdEJyYW5jaERlbGV0ZT1uZXcgaSgiZ2l0LWJyYW5jaC1kZWxldGUiLHtmb250Q2hhcmFjdGVyOiJcXGVhNjgifSksaS5zb3VyY2VDb250cm9sPW5ldyBpKCJzb3VyY2UtY29udHJvbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2OCJ9KSxpLm1pcnJvcj1uZXcgaSgibWlycm9yIix7Zm9udENoYXJhY3RlcjoiXFxlYTY5In0pLGkubWlycm9yUHVibGljPW5ldyBpKCJtaXJyb3ItcHVibGljIix7Zm9udENoYXJhY3RlcjoiXFxlYTY5In0pLGkuc3Rhcj1uZXcgaSgic3RhciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2YSJ9KSxpLnN0YXJBZGQ9bmV3IGkoInN0YXItYWRkIix7Zm9udENoYXJhY3RlcjoiXFxlYTZhIn0pLGkuc3RhckRlbGV0ZT1uZXcgaSgic3Rhci1kZWxldGUiLHtmb250Q2hhcmFjdGVyOiJcXGVhNmEifSksaS5zdGFyRW1wdHk9bmV3IGkoInN0YXItZW1wdHkiLHtmb250Q2hhcmFjdGVyOiJcXGVhNmEifSksaS5jb21tZW50PW5ldyBpKCJjb21tZW50Iix7Zm9udENoYXJhY3RlcjoiXFxlYTZiIn0pLGkuY29tbWVudEFkZD1uZXcgaSgiY29tbWVudC1hZGQiLHtmb250Q2hhcmFjdGVyOiJcXGVhNmIifSksaS5hbGVydD1uZXcgaSgiYWxlcnQiLHtmb250Q2hhcmFjdGVyOiJcXGVhNmMifSksaS53YXJuaW5nPW5ldyBpKCJ3YXJuaW5nIix7Zm9udENoYXJhY3RlcjoiXFxlYTZjIn0pLGkuc2VhcmNoPW5ldyBpKCJzZWFyY2giLHtmb250Q2hhcmFjdGVyOiJcXGVhNmQifSksaS5zZWFyY2hTYXZlPW5ldyBpKCJzZWFyY2gtc2F2ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2ZCJ9KSxpLmxvZ091dD1uZXcgaSgibG9nLW91dCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2ZSJ9KSxpLnNpZ25PdXQ9bmV3IGkoInNpZ24tb3V0Iix7Zm9udENoYXJhY3RlcjoiXFxlYTZlIn0pLGkubG9nSW49bmV3IGkoImxvZy1pbiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2ZiJ9KSxpLnNpZ25Jbj1uZXcgaSgic2lnbi1pbiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2ZiJ9KSxpLmV5ZT1uZXcgaSgiZXllIix7Zm9udENoYXJhY3RlcjoiXFxlYTcwIn0pLGkuZXllVW53YXRjaD1uZXcgaSgiZXllLXVud2F0Y2giLHtmb250Q2hhcmFjdGVyOiJcXGVhNzAifSksaS5leWVXYXRjaD1uZXcgaSgiZXllLXdhdGNoIix7Zm9udENoYXJhY3RlcjoiXFxlYTcwIn0pLGkuY2lyY2xlRmlsbGVkPW5ldyBpKCJjaXJjbGUtZmlsbGVkIix7Zm9udENoYXJhY3RlcjoiXFxlYTcxIn0pLGkucHJpbWl0aXZlRG90PW5ldyBpKCJwcmltaXRpdmUtZG90Iix7Zm9udENoYXJhY3RlcjoiXFxlYTcxIn0pLGkuY2xvc2VEaXJ0eT1uZXcgaSgiY2xvc2UtZGlydHkiLHtmb250Q2hhcmFjdGVyOiJcXGVhNzEifSksaS5kZWJ1Z0JyZWFrcG9pbnQ9bmV3IGkoImRlYnVnLWJyZWFrcG9pbnQiLHtmb250Q2hhcmFjdGVyOiJcXGVhNzEifSksaS5kZWJ1Z0JyZWFrcG9pbnREaXNhYmxlZD1uZXcgaSgiZGVidWctYnJlYWtwb2ludC1kaXNhYmxlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3MSJ9KSxpLmRlYnVnSGludD1uZXcgaSgiZGVidWctaGludCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3MSJ9KSxpLnByaW1pdGl2ZVNxdWFyZT1uZXcgaSgicHJpbWl0aXZlLXNxdWFyZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3MiJ9KSxpLmVkaXQ9bmV3IGkoImVkaXQiLHtmb250Q2hhcmFjdGVyOiJcXGVhNzMifSksaS5wZW5jaWw9bmV3IGkoInBlbmNpbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3MyJ9KSxpLmluZm89bmV3IGkoImluZm8iLHtmb250Q2hhcmFjdGVyOiJcXGVhNzQifSksaS5pc3N1ZU9wZW5lZD1uZXcgaSgiaXNzdWUtb3BlbmVkIix7Zm9udENoYXJhY3RlcjoiXFxlYTc0In0pLGkuZ2lzdFByaXZhdGU9bmV3IGkoImdpc3QtcHJpdmF0ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3NSJ9KSxpLmdpdEZvcmtQcml2YXRlPW5ldyBpKCJnaXQtZm9yay1wcml2YXRlIix7Zm9udENoYXJhY3RlcjoiXFxlYTc1In0pLGkubG9jaz1uZXcgaSgibG9jayIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3NSJ9KSxpLm1pcnJvclByaXZhdGU9bmV3IGkoIm1pcnJvci1wcml2YXRlIix7Zm9udENoYXJhY3RlcjoiXFxlYTc1In0pLGkuY2xvc2U9bmV3IGkoImNsb3NlIix7Zm9udENoYXJhY3RlcjoiXFxlYTc2In0pLGkucmVtb3ZlQ2xvc2U9bmV3IGkoInJlbW92ZS1jbG9zZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3NiJ9KSxpLng9bmV3IGkoIngiLHtmb250Q2hhcmFjdGVyOiJcXGVhNzYifSksaS5yZXBvU3luYz1uZXcgaSgicmVwby1zeW5jIix7Zm9udENoYXJhY3RlcjoiXFxlYTc3In0pLGkuc3luYz1uZXcgaSgic3luYyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3NyJ9KSxpLmNsb25lPW5ldyBpKCJjbG9uZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3OCJ9KSxpLmRlc2t0b3BEb3dubG9hZD1uZXcgaSgiZGVza3RvcC1kb3dubG9hZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3OCJ9KSxpLmJlYWtlcj1uZXcgaSgiYmVha2VyIix7Zm9udENoYXJhY3RlcjoiXFxlYTc5In0pLGkubWljcm9zY29wZT1uZXcgaSgibWljcm9zY29wZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3OSJ9KSxpLnZtPW5ldyBpKCJ2bSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3YSJ9KSxpLmRldmljZURlc2t0b3A9bmV3IGkoImRldmljZS1kZXNrdG9wIix7Zm9udENoYXJhY3RlcjoiXFxlYTdhIn0pLGkuZmlsZT1uZXcgaSgiZmlsZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3YiJ9KSxpLmZpbGVUZXh0PW5ldyBpKCJmaWxlLXRleHQiLHtmb250Q2hhcmFjdGVyOiJcXGVhN2IifSksaS5tb3JlPW5ldyBpKCJtb3JlIix7Zm9udENoYXJhY3RlcjoiXFxlYTdjIn0pLGkuZWxsaXBzaXM9bmV3IGkoImVsbGlwc2lzIix7Zm9udENoYXJhY3RlcjoiXFxlYTdjIn0pLGkua2ViYWJIb3Jpem9udGFsPW5ldyBpKCJrZWJhYi1ob3Jpem9udGFsIix7Zm9udENoYXJhY3RlcjoiXFxlYTdjIn0pLGkubWFpbFJlcGx5PW5ldyBpKCJtYWlsLXJlcGx5Iix7Zm9udENoYXJhY3RlcjoiXFxlYTdkIn0pLGkucmVwbHk9bmV3IGkoInJlcGx5Iix7Zm9udENoYXJhY3RlcjoiXFxlYTdkIn0pLGkub3JnYW5pemF0aW9uPW5ldyBpKCJvcmdhbml6YXRpb24iLHtmb250Q2hhcmFjdGVyOiJcXGVhN2UifSksaS5vcmdhbml6YXRpb25GaWxsZWQ9bmV3IGkoIm9yZ2FuaXphdGlvbi1maWxsZWQiLHtmb250Q2hhcmFjdGVyOiJcXGVhN2UifSksaS5vcmdhbml6YXRpb25PdXRsaW5lPW5ldyBpKCJvcmdhbml6YXRpb24tb3V0bGluZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3ZSJ9KSxpLm5ld0ZpbGU9bmV3IGkoIm5ldy1maWxlIix7Zm9udENoYXJhY3RlcjoiXFxlYTdmIn0pLGkuZmlsZUFkZD1uZXcgaSgiZmlsZS1hZGQiLHtmb250Q2hhcmFjdGVyOiJcXGVhN2YifSksaS5uZXdGb2xkZXI9bmV3IGkoIm5ldy1mb2xkZXIiLHtmb250Q2hhcmFjdGVyOiJcXGVhODAifSksaS5maWxlRGlyZWN0b3J5Q3JlYXRlPW5ldyBpKCJmaWxlLWRpcmVjdG9yeS1jcmVhdGUiLHtmb250Q2hhcmFjdGVyOiJcXGVhODAifSksaS50cmFzaD1uZXcgaSgidHJhc2giLHtmb250Q2hhcmFjdGVyOiJcXGVhODEifSksaS50cmFzaGNhbj1uZXcgaSgidHJhc2hjYW4iLHtmb250Q2hhcmFjdGVyOiJcXGVhODEifSksaS5oaXN0b3J5PW5ldyBpKCJoaXN0b3J5Iix7Zm9udENoYXJhY3RlcjoiXFxlYTgyIn0pLGkuY2xvY2s9bmV3IGkoImNsb2NrIix7Zm9udENoYXJhY3RlcjoiXFxlYTgyIn0pLGkuZm9sZGVyPW5ldyBpKCJmb2xkZXIiLHtmb250Q2hhcmFjdGVyOiJcXGVhODMifSksaS5maWxlRGlyZWN0b3J5PW5ldyBpKCJmaWxlLWRpcmVjdG9yeSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4MyJ9KSxpLnN5bWJvbEZvbGRlcj1uZXcgaSgic3ltYm9sLWZvbGRlciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4MyJ9KSxpLmxvZ29HaXRodWI9bmV3IGkoImxvZ28tZ2l0aHViIix7Zm9udENoYXJhY3RlcjoiXFxlYTg0In0pLGkubWFya0dpdGh1Yj1uZXcgaSgibWFyay1naXRodWIiLHtmb250Q2hhcmFjdGVyOiJcXGVhODQifSksaS5naXRodWI9bmV3IGkoImdpdGh1YiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4NCJ9KSxpLnRlcm1pbmFsPW5ldyBpKCJ0ZXJtaW5hbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4NSJ9KSxpLmNvbnNvbGU9bmV3IGkoImNvbnNvbGUiLHtmb250Q2hhcmFjdGVyOiJcXGVhODUifSksaS5yZXBsPW5ldyBpKCJyZXBsIix7Zm9udENoYXJhY3RlcjoiXFxlYTg1In0pLGkuemFwPW5ldyBpKCJ6YXAiLHtmb250Q2hhcmFjdGVyOiJcXGVhODYifSksaS5zeW1ib2xFdmVudD1uZXcgaSgic3ltYm9sLWV2ZW50Iix7Zm9udENoYXJhY3RlcjoiXFxlYTg2In0pLGkuZXJyb3I9bmV3IGkoImVycm9yIix7Zm9udENoYXJhY3RlcjoiXFxlYTg3In0pLGkuc3RvcD1uZXcgaSgic3RvcCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4NyJ9KSxpLnZhcmlhYmxlPW5ldyBpKCJ2YXJpYWJsZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4OCJ9KSxpLnN5bWJvbFZhcmlhYmxlPW5ldyBpKCJzeW1ib2wtdmFyaWFibGUiLHtmb250Q2hhcmFjdGVyOiJcXGVhODgifSksaS5hcnJheT1uZXcgaSgiYXJyYXkiLHtmb250Q2hhcmFjdGVyOiJcXGVhOGEifSksaS5zeW1ib2xBcnJheT1uZXcgaSgic3ltYm9sLWFycmF5Iix7Zm9udENoYXJhY3RlcjoiXFxlYThhIn0pLGkuc3ltYm9sTW9kdWxlPW5ldyBpKCJzeW1ib2wtbW9kdWxlIix7Zm9udENoYXJhY3RlcjoiXFxlYThiIn0pLGkuc3ltYm9sUGFja2FnZT1uZXcgaSgic3ltYm9sLXBhY2thZ2UiLHtmb250Q2hhcmFjdGVyOiJcXGVhOGIifSksaS5zeW1ib2xOYW1lc3BhY2U9bmV3IGkoInN5bWJvbC1uYW1lc3BhY2UiLHtmb250Q2hhcmFjdGVyOiJcXGVhOGIifSksaS5zeW1ib2xPYmplY3Q9bmV3IGkoInN5bWJvbC1vYmplY3QiLHtmb250Q2hhcmFjdGVyOiJcXGVhOGIifSksaS5zeW1ib2xNZXRob2Q9bmV3IGkoInN5bWJvbC1tZXRob2QiLHtmb250Q2hhcmFjdGVyOiJcXGVhOGMifSksaS5zeW1ib2xGdW5jdGlvbj1uZXcgaSgic3ltYm9sLWZ1bmN0aW9uIix7Zm9udENoYXJhY3RlcjoiXFxlYThjIn0pLGkuc3ltYm9sQ29uc3RydWN0b3I9bmV3IGkoInN5bWJvbC1jb25zdHJ1Y3RvciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4YyJ9KSxpLnN5bWJvbEJvb2xlYW49bmV3IGkoInN5bWJvbC1ib29sZWFuIix7Zm9udENoYXJhY3RlcjoiXFxlYThmIn0pLGkuc3ltYm9sTnVsbD1uZXcgaSgic3ltYm9sLW51bGwiLHtmb250Q2hhcmFjdGVyOiJcXGVhOGYifSksaS5zeW1ib2xOdW1lcmljPW5ldyBpKCJzeW1ib2wtbnVtZXJpYyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE5MCJ9KSxpLnN5bWJvbE51bWJlcj1uZXcgaSgic3ltYm9sLW51bWJlciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE5MCJ9KSxpLnN5bWJvbFN0cnVjdHVyZT1uZXcgaSgic3ltYm9sLXN0cnVjdHVyZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE5MSJ9KSxpLnN5bWJvbFN0cnVjdD1uZXcgaSgic3ltYm9sLXN0cnVjdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE5MSJ9KSxpLnN5bWJvbFBhcmFtZXRlcj1uZXcgaSgic3ltYm9sLXBhcmFtZXRlciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE5MiJ9KSxpLnN5bWJvbFR5cGVQYXJhbWV0ZXI9bmV3IGkoInN5bWJvbC10eXBlLXBhcmFtZXRlciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE5MiJ9KSxpLnN5bWJvbEtleT1uZXcgaSgic3ltYm9sLWtleSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE5MyJ9KSxpLnN5bWJvbFRleHQ9bmV3IGkoInN5bWJvbC10ZXh0Iix7Zm9udENoYXJhY3RlcjoiXFxlYTkzIn0pLGkuc3ltYm9sUmVmZXJlbmNlPW5ldyBpKCJzeW1ib2wtcmVmZXJlbmNlIix7Zm9udENoYXJhY3RlcjoiXFxlYTk0In0pLGkuZ29Ub0ZpbGU9bmV3IGkoImdvLXRvLWZpbGUiLHtmb250Q2hhcmFjdGVyOiJcXGVhOTQifSksaS5zeW1ib2xFbnVtPW5ldyBpKCJzeW1ib2wtZW51bSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE5NSJ9KSxpLnN5bWJvbFZhbHVlPW5ldyBpKCJzeW1ib2wtdmFsdWUiLHtmb250Q2hhcmFjdGVyOiJcXGVhOTUifSksaS5zeW1ib2xSdWxlcj1uZXcgaSgic3ltYm9sLXJ1bGVyIix7Zm9udENoYXJhY3RlcjoiXFxlYTk2In0pLGkuc3ltYm9sVW5pdD1uZXcgaSgic3ltYm9sLXVuaXQiLHtmb250Q2hhcmFjdGVyOiJcXGVhOTYifSksaS5hY3RpdmF0ZUJyZWFrcG9pbnRzPW5ldyBpKCJhY3RpdmF0ZS1icmVha3BvaW50cyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE5NyJ9KSxpLmFyY2hpdmU9bmV3IGkoImFyY2hpdmUiLHtmb250Q2hhcmFjdGVyOiJcXGVhOTgifSksaS5hcnJvd0JvdGg9bmV3IGkoImFycm93LWJvdGgiLHtmb250Q2hhcmFjdGVyOiJcXGVhOTkifSksaS5hcnJvd0Rvd249bmV3IGkoImFycm93LWRvd24iLHtmb250Q2hhcmFjdGVyOiJcXGVhOWEifSksaS5hcnJvd0xlZnQ9bmV3IGkoImFycm93LWxlZnQiLHtmb250Q2hhcmFjdGVyOiJcXGVhOWIifSksaS5hcnJvd1JpZ2h0PW5ldyBpKCJhcnJvdy1yaWdodCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE5YyJ9KSxpLmFycm93U21hbGxEb3duPW5ldyBpKCJhcnJvdy1zbWFsbC1kb3duIix7Zm9udENoYXJhY3RlcjoiXFxlYTlkIn0pLGkuYXJyb3dTbWFsbExlZnQ9bmV3IGkoImFycm93LXNtYWxsLWxlZnQiLHtmb250Q2hhcmFjdGVyOiJcXGVhOWUifSksaS5hcnJvd1NtYWxsUmlnaHQ9bmV3IGkoImFycm93LXNtYWxsLXJpZ2h0Iix7Zm9udENoYXJhY3RlcjoiXFxlYTlmIn0pLGkuYXJyb3dTbWFsbFVwPW5ldyBpKCJhcnJvdy1zbWFsbC11cCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFhMCJ9KSxpLmFycm93VXA9bmV3IGkoImFycm93LXVwIix7Zm9udENoYXJhY3RlcjoiXFxlYWExIn0pLGkuYmVsbD1uZXcgaSgiYmVsbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFhMiJ9KSxpLmJvbGQ9bmV3IGkoImJvbGQiLHtmb250Q2hhcmFjdGVyOiJcXGVhYTMifSksaS5ib29rPW5ldyBpKCJib29rIix7Zm9udENoYXJhY3RlcjoiXFxlYWE0In0pLGkuYm9va21hcms9bmV3IGkoImJvb2ttYXJrIix7Zm9udENoYXJhY3RlcjoiXFxlYWE1In0pLGkuZGVidWdCcmVha3BvaW50Q29uZGl0aW9uYWxVbnZlcmlmaWVkPW5ldyBpKCJkZWJ1Zy1icmVha3BvaW50LWNvbmRpdGlvbmFsLXVudmVyaWZpZWQiLHtmb250Q2hhcmFjdGVyOiJcXGVhYTYifSksaS5kZWJ1Z0JyZWFrcG9pbnRDb25kaXRpb25hbD1uZXcgaSgiZGVidWctYnJlYWtwb2ludC1jb25kaXRpb25hbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFhNyJ9KSxpLmRlYnVnQnJlYWtwb2ludENvbmRpdGlvbmFsRGlzYWJsZWQ9bmV3IGkoImRlYnVnLWJyZWFrcG9pbnQtY29uZGl0aW9uYWwtZGlzYWJsZWQiLHtmb250Q2hhcmFjdGVyOiJcXGVhYTcifSksaS5kZWJ1Z0JyZWFrcG9pbnREYXRhVW52ZXJpZmllZD1uZXcgaSgiZGVidWctYnJlYWtwb2ludC1kYXRhLXVudmVyaWZpZWQiLHtmb250Q2hhcmFjdGVyOiJcXGVhYTgifSksaS5kZWJ1Z0JyZWFrcG9pbnREYXRhPW5ldyBpKCJkZWJ1Zy1icmVha3BvaW50LWRhdGEiLHtmb250Q2hhcmFjdGVyOiJcXGVhYTkifSksaS5kZWJ1Z0JyZWFrcG9pbnREYXRhRGlzYWJsZWQ9bmV3IGkoImRlYnVnLWJyZWFrcG9pbnQtZGF0YS1kaXNhYmxlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFhOSJ9KSxpLmRlYnVnQnJlYWtwb2ludExvZ1VudmVyaWZpZWQ9bmV3IGkoImRlYnVnLWJyZWFrcG9pbnQtbG9nLXVudmVyaWZpZWQiLHtmb250Q2hhcmFjdGVyOiJcXGVhYWEifSksaS5kZWJ1Z0JyZWFrcG9pbnRMb2c9bmV3IGkoImRlYnVnLWJyZWFrcG9pbnQtbG9nIix7Zm9udENoYXJhY3RlcjoiXFxlYWFiIn0pLGkuZGVidWdCcmVha3BvaW50TG9nRGlzYWJsZWQ9bmV3IGkoImRlYnVnLWJyZWFrcG9pbnQtbG9nLWRpc2FibGVkIix7Zm9udENoYXJhY3RlcjoiXFxlYWFiIn0pLGkuYnJpZWZjYXNlPW5ldyBpKCJicmllZmNhc2UiLHtmb250Q2hhcmFjdGVyOiJcXGVhYWMifSksaS5icm9hZGNhc3Q9bmV3IGkoImJyb2FkY2FzdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFhZCJ9KSxpLmJyb3dzZXI9bmV3IGkoImJyb3dzZXIiLHtmb250Q2hhcmFjdGVyOiJcXGVhYWUifSksaS5idWc9bmV3IGkoImJ1ZyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFhZiJ9KSxpLmNhbGVuZGFyPW5ldyBpKCJjYWxlbmRhciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFiMCJ9KSxpLmNhc2VTZW5zaXRpdmU9bmV3IGkoImNhc2Utc2Vuc2l0aXZlIix7Zm9udENoYXJhY3RlcjoiXFxlYWIxIn0pLGkuY2hlY2s9bmV3IGkoImNoZWNrIix7Zm9udENoYXJhY3RlcjoiXFxlYWIyIn0pLGkuY2hlY2tsaXN0PW5ldyBpKCJjaGVja2xpc3QiLHtmb250Q2hhcmFjdGVyOiJcXGVhYjMifSksaS5jaGV2cm9uRG93bj1uZXcgaSgiY2hldnJvbi1kb3duIix7Zm9udENoYXJhY3RlcjoiXFxlYWI0In0pLGkuZHJvcERvd25CdXR0b249bmV3IGkoImRyb3AtZG93bi1idXR0b24iLGkuY2hldnJvbkRvd24uZGVmaW5pdGlvbiksaS5jaGV2cm9uTGVmdD1uZXcgaSgiY2hldnJvbi1sZWZ0Iix7Zm9udENoYXJhY3RlcjoiXFxlYWI1In0pLGkuY2hldnJvblJpZ2h0PW5ldyBpKCJjaGV2cm9uLXJpZ2h0Iix7Zm9udENoYXJhY3RlcjoiXFxlYWI2In0pLGkuY2hldnJvblVwPW5ldyBpKCJjaGV2cm9uLXVwIix7Zm9udENoYXJhY3RlcjoiXFxlYWI3In0pLGkuY2hyb21lQ2xvc2U9bmV3IGkoImNocm9tZS1jbG9zZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFiOCJ9KSxpLmNocm9tZU1heGltaXplPW5ldyBpKCJjaHJvbWUtbWF4aW1pemUiLHtmb250Q2hhcmFjdGVyOiJcXGVhYjkifSksaS5jaHJvbWVNaW5pbWl6ZT1uZXcgaSgiY2hyb21lLW1pbmltaXplIix7Zm9udENoYXJhY3RlcjoiXFxlYWJhIn0pLGkuY2hyb21lUmVzdG9yZT1uZXcgaSgiY2hyb21lLXJlc3RvcmUiLHtmb250Q2hhcmFjdGVyOiJcXGVhYmIifSksaS5jaXJjbGVPdXRsaW5lPW5ldyBpKCJjaXJjbGUtb3V0bGluZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFiYyJ9KSxpLmRlYnVnQnJlYWtwb2ludFVudmVyaWZpZWQ9bmV3IGkoImRlYnVnLWJyZWFrcG9pbnQtdW52ZXJpZmllZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFiYyJ9KSxpLmNpcmNsZVNsYXNoPW5ldyBpKCJjaXJjbGUtc2xhc2giLHtmb250Q2hhcmFjdGVyOiJcXGVhYmQifSksaS5jaXJjdWl0Qm9hcmQ9bmV3IGkoImNpcmN1aXQtYm9hcmQiLHtmb250Q2hhcmFjdGVyOiJcXGVhYmUifSksaS5jbGVhckFsbD1uZXcgaSgiY2xlYXItYWxsIix7Zm9udENoYXJhY3RlcjoiXFxlYWJmIn0pLGkuY2xpcHB5PW5ldyBpKCJjbGlwcHkiLHtmb250Q2hhcmFjdGVyOiJcXGVhYzAifSksaS5jbG9zZUFsbD1uZXcgaSgiY2xvc2UtYWxsIix7Zm9udENoYXJhY3RlcjoiXFxlYWMxIn0pLGkuY2xvdWREb3dubG9hZD1uZXcgaSgiY2xvdWQtZG93bmxvYWQiLHtmb250Q2hhcmFjdGVyOiJcXGVhYzIifSksaS5jbG91ZFVwbG9hZD1uZXcgaSgiY2xvdWQtdXBsb2FkIix7Zm9udENoYXJhY3RlcjoiXFxlYWMzIn0pLGkuY29kZT1uZXcgaSgiY29kZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFjNCJ9KSxpLmNvbGxhcHNlQWxsPW5ldyBpKCJjb2xsYXBzZS1hbGwiLHtmb250Q2hhcmFjdGVyOiJcXGVhYzUifSksaS5jb2xvck1vZGU9bmV3IGkoImNvbG9yLW1vZGUiLHtmb250Q2hhcmFjdGVyOiJcXGVhYzYifSksaS5jb21tZW50RGlzY3Vzc2lvbj1uZXcgaSgiY29tbWVudC1kaXNjdXNzaW9uIix7Zm9udENoYXJhY3RlcjoiXFxlYWM3In0pLGkuY29tcGFyZUNoYW5nZXM9bmV3IGkoImNvbXBhcmUtY2hhbmdlcyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFmZCJ9KSxpLmNyZWRpdENhcmQ9bmV3IGkoImNyZWRpdC1jYXJkIix7Zm9udENoYXJhY3RlcjoiXFxlYWM5In0pLGkuZGFzaD1uZXcgaSgiZGFzaCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFjYyJ9KSxpLmRhc2hib2FyZD1uZXcgaSgiZGFzaGJvYXJkIix7Zm9udENoYXJhY3RlcjoiXFxlYWNkIn0pLGkuZGF0YWJhc2U9bmV3IGkoImRhdGFiYXNlIix7Zm9udENoYXJhY3RlcjoiXFxlYWNlIn0pLGkuZGVidWdDb250aW51ZT1uZXcgaSgiZGVidWctY29udGludWUiLHtmb250Q2hhcmFjdGVyOiJcXGVhY2YifSksaS5kZWJ1Z0Rpc2Nvbm5lY3Q9bmV3IGkoImRlYnVnLWRpc2Nvbm5lY3QiLHtmb250Q2hhcmFjdGVyOiJcXGVhZDAifSksaS5kZWJ1Z1BhdXNlPW5ldyBpKCJkZWJ1Zy1wYXVzZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFkMSJ9KSxpLmRlYnVnUmVzdGFydD1uZXcgaSgiZGVidWctcmVzdGFydCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFkMiJ9KSxpLmRlYnVnU3RhcnQ9bmV3IGkoImRlYnVnLXN0YXJ0Iix7Zm9udENoYXJhY3RlcjoiXFxlYWQzIn0pLGkuZGVidWdTdGVwSW50bz1uZXcgaSgiZGVidWctc3RlcC1pbnRvIix7Zm9udENoYXJhY3RlcjoiXFxlYWQ0In0pLGkuZGVidWdTdGVwT3V0PW5ldyBpKCJkZWJ1Zy1zdGVwLW91dCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFkNSJ9KSxpLmRlYnVnU3RlcE92ZXI9bmV3IGkoImRlYnVnLXN0ZXAtb3ZlciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFkNiJ9KSxpLmRlYnVnU3RvcD1uZXcgaSgiZGVidWctc3RvcCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFkNyJ9KSxpLmRlYnVnPW5ldyBpKCJkZWJ1ZyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFkOCJ9KSxpLmRldmljZUNhbWVyYVZpZGVvPW5ldyBpKCJkZXZpY2UtY2FtZXJhLXZpZGVvIix7Zm9udENoYXJhY3RlcjoiXFxlYWQ5In0pLGkuZGV2aWNlQ2FtZXJhPW5ldyBpKCJkZXZpY2UtY2FtZXJhIix7Zm9udENoYXJhY3RlcjoiXFxlYWRhIn0pLGkuZGV2aWNlTW9iaWxlPW5ldyBpKCJkZXZpY2UtbW9iaWxlIix7Zm9udENoYXJhY3RlcjoiXFxlYWRiIn0pLGkuZGlmZkFkZGVkPW5ldyBpKCJkaWZmLWFkZGVkIix7Zm9udENoYXJhY3RlcjoiXFxlYWRjIn0pLGkuZGlmZklnbm9yZWQ9bmV3IGkoImRpZmYtaWdub3JlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFkZCJ9KSxpLmRpZmZNb2RpZmllZD1uZXcgaSgiZGlmZi1tb2RpZmllZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFkZSJ9KSxpLmRpZmZSZW1vdmVkPW5ldyBpKCJkaWZmLXJlbW92ZWQiLHtmb250Q2hhcmFjdGVyOiJcXGVhZGYifSksaS5kaWZmUmVuYW1lZD1uZXcgaSgiZGlmZi1yZW5hbWVkIix7Zm9udENoYXJhY3RlcjoiXFxlYWUwIn0pLGkuZGlmZj1uZXcgaSgiZGlmZiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFlMSJ9KSxpLmRpc2NhcmQ9bmV3IGkoImRpc2NhcmQiLHtmb250Q2hhcmFjdGVyOiJcXGVhZTIifSksaS5lZGl0b3JMYXlvdXQ9bmV3IGkoImVkaXRvci1sYXlvdXQiLHtmb250Q2hhcmFjdGVyOiJcXGVhZTMifSksaS5lbXB0eVdpbmRvdz1uZXcgaSgiZW1wdHktd2luZG93Iix7Zm9udENoYXJhY3RlcjoiXFxlYWU0In0pLGkuZXhjbHVkZT1uZXcgaSgiZXhjbHVkZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFlNSJ9KSxpLmV4dGVuc2lvbnM9bmV3IGkoImV4dGVuc2lvbnMiLHtmb250Q2hhcmFjdGVyOiJcXGVhZTYifSksaS5leWVDbG9zZWQ9bmV3IGkoImV5ZS1jbG9zZWQiLHtmb250Q2hhcmFjdGVyOiJcXGVhZTcifSksaS5maWxlQmluYXJ5PW5ldyBpKCJmaWxlLWJpbmFyeSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFlOCJ9KSxpLmZpbGVDb2RlPW5ldyBpKCJmaWxlLWNvZGUiLHtmb250Q2hhcmFjdGVyOiJcXGVhZTkifSksaS5maWxlTWVkaWE9bmV3IGkoImZpbGUtbWVkaWEiLHtmb250Q2hhcmFjdGVyOiJcXGVhZWEifSksaS5maWxlUGRmPW5ldyBpKCJmaWxlLXBkZiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFlYiJ9KSxpLmZpbGVTdWJtb2R1bGU9bmV3IGkoImZpbGUtc3VibW9kdWxlIix7Zm9udENoYXJhY3RlcjoiXFxlYWVjIn0pLGkuZmlsZVN5bWxpbmtEaXJlY3Rvcnk9bmV3IGkoImZpbGUtc3ltbGluay1kaXJlY3RvcnkiLHtmb250Q2hhcmFjdGVyOiJcXGVhZWQifSksaS5maWxlU3ltbGlua0ZpbGU9bmV3IGkoImZpbGUtc3ltbGluay1maWxlIix7Zm9udENoYXJhY3RlcjoiXFxlYWVlIn0pLGkuZmlsZVppcD1uZXcgaSgiZmlsZS16aXAiLHtmb250Q2hhcmFjdGVyOiJcXGVhZWYifSksaS5maWxlcz1uZXcgaSgiZmlsZXMiLHtmb250Q2hhcmFjdGVyOiJcXGVhZjAifSksaS5maWx0ZXI9bmV3IGkoImZpbHRlciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFmMSJ9KSxpLmZsYW1lPW5ldyBpKCJmbGFtZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFmMiJ9KSxpLmZvbGREb3duPW5ldyBpKCJmb2xkLWRvd24iLHtmb250Q2hhcmFjdGVyOiJcXGVhZjMifSksaS5mb2xkVXA9bmV3IGkoImZvbGQtdXAiLHtmb250Q2hhcmFjdGVyOiJcXGVhZjQifSksaS5mb2xkPW5ldyBpKCJmb2xkIix7Zm9udENoYXJhY3RlcjoiXFxlYWY1In0pLGkuZm9sZGVyQWN0aXZlPW5ldyBpKCJmb2xkZXItYWN0aXZlIix7Zm9udENoYXJhY3RlcjoiXFxlYWY2In0pLGkuZm9sZGVyT3BlbmVkPW5ldyBpKCJmb2xkZXItb3BlbmVkIix7Zm9udENoYXJhY3RlcjoiXFxlYWY3In0pLGkuZ2Vhcj1uZXcgaSgiZ2VhciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFmOCJ9KSxpLmdpZnQ9bmV3IGkoImdpZnQiLHtmb250Q2hhcmFjdGVyOiJcXGVhZjkifSksaS5naXN0U2VjcmV0PW5ldyBpKCJnaXN0LXNlY3JldCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFmYSJ9KSxpLmdpc3Q9bmV3IGkoImdpc3QiLHtmb250Q2hhcmFjdGVyOiJcXGVhZmIifSksaS5naXRDb21taXQ9bmV3IGkoImdpdC1jb21taXQiLHtmb250Q2hhcmFjdGVyOiJcXGVhZmMifSksaS5naXRDb21wYXJlPW5ldyBpKCJnaXQtY29tcGFyZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFmZCJ9KSxpLmdpdE1lcmdlPW5ldyBpKCJnaXQtbWVyZ2UiLHtmb250Q2hhcmFjdGVyOiJcXGVhZmUifSksaS5naXRodWJBY3Rpb249bmV3IGkoImdpdGh1Yi1hY3Rpb24iLHtmb250Q2hhcmFjdGVyOiJcXGVhZmYifSksaS5naXRodWJBbHQ9bmV3IGkoImdpdGh1Yi1hbHQiLHtmb250Q2hhcmFjdGVyOiJcXGViMDAifSksaS5nbG9iZT1uZXcgaSgiZ2xvYmUiLHtmb250Q2hhcmFjdGVyOiJcXGViMDEifSksaS5ncmFiYmVyPW5ldyBpKCJncmFiYmVyIix7Zm9udENoYXJhY3RlcjoiXFxlYjAyIn0pLGkuZ3JhcGg9bmV3IGkoImdyYXBoIix7Zm9udENoYXJhY3RlcjoiXFxlYjAzIn0pLGkuZ3JpcHBlcj1uZXcgaSgiZ3JpcHBlciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIwNCJ9KSxpLmhlYXJ0PW5ldyBpKCJoZWFydCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIwNSJ9KSxpLmhvbWU9bmV3IGkoImhvbWUiLHtmb250Q2hhcmFjdGVyOiJcXGViMDYifSksaS5ob3Jpem9udGFsUnVsZT1uZXcgaSgiaG9yaXpvbnRhbC1ydWxlIix7Zm9udENoYXJhY3RlcjoiXFxlYjA3In0pLGkuaHVib3Q9bmV3IGkoImh1Ym90Iix7Zm9udENoYXJhY3RlcjoiXFxlYjA4In0pLGkuaW5ib3g9bmV3IGkoImluYm94Iix7Zm9udENoYXJhY3RlcjoiXFxlYjA5In0pLGkuaXNzdWVDbG9zZWQ9bmV3IGkoImlzc3VlLWNsb3NlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJhNCJ9KSxpLmlzc3VlUmVvcGVuZWQ9bmV3IGkoImlzc3VlLXJlb3BlbmVkIix7Zm9udENoYXJhY3RlcjoiXFxlYjBiIn0pLGkuaXNzdWVzPW5ldyBpKCJpc3N1ZXMiLHtmb250Q2hhcmFjdGVyOiJcXGViMGMifSksaS5pdGFsaWM9bmV3IGkoIml0YWxpYyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIwZCJ9KSxpLmplcnNleT1uZXcgaSgiamVyc2V5Iix7Zm9udENoYXJhY3RlcjoiXFxlYjBlIn0pLGkuanNvbj1uZXcgaSgianNvbiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIwZiJ9KSxpLmtlYmFiVmVydGljYWw9bmV3IGkoImtlYmFiLXZlcnRpY2FsIix7Zm9udENoYXJhY3RlcjoiXFxlYjEwIn0pLGkua2V5PW5ldyBpKCJrZXkiLHtmb250Q2hhcmFjdGVyOiJcXGViMTEifSksaS5sYXc9bmV3IGkoImxhdyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIxMiJ9KSxpLmxpZ2h0YnVsYkF1dG9maXg9bmV3IGkoImxpZ2h0YnVsYi1hdXRvZml4Iix7Zm9udENoYXJhY3RlcjoiXFxlYjEzIn0pLGkubGlua0V4dGVybmFsPW5ldyBpKCJsaW5rLWV4dGVybmFsIix7Zm9udENoYXJhY3RlcjoiXFxlYjE0In0pLGkubGluaz1uZXcgaSgibGluayIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIxNSJ9KSxpLmxpc3RPcmRlcmVkPW5ldyBpKCJsaXN0LW9yZGVyZWQiLHtmb250Q2hhcmFjdGVyOiJcXGViMTYifSksaS5saXN0VW5vcmRlcmVkPW5ldyBpKCJsaXN0LXVub3JkZXJlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIxNyJ9KSxpLmxpdmVTaGFyZT1uZXcgaSgibGl2ZS1zaGFyZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIxOCJ9KSxpLmxvYWRpbmc9bmV3IGkoImxvYWRpbmciLHtmb250Q2hhcmFjdGVyOiJcXGViMTkifSksaS5sb2NhdGlvbj1uZXcgaSgibG9jYXRpb24iLHtmb250Q2hhcmFjdGVyOiJcXGViMWEifSksaS5tYWlsUmVhZD1uZXcgaSgibWFpbC1yZWFkIix7Zm9udENoYXJhY3RlcjoiXFxlYjFiIn0pLGkubWFpbD1uZXcgaSgibWFpbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIxYyJ9KSxpLm1hcmtkb3duPW5ldyBpKCJtYXJrZG93biIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIxZCJ9KSxpLm1lZ2FwaG9uZT1uZXcgaSgibWVnYXBob25lIix7Zm9udENoYXJhY3RlcjoiXFxlYjFlIn0pLGkubWVudGlvbj1uZXcgaSgibWVudGlvbiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIxZiJ9KSxpLm1pbGVzdG9uZT1uZXcgaSgibWlsZXN0b25lIix7Zm9udENoYXJhY3RlcjoiXFxlYjIwIn0pLGkubW9ydGFyQm9hcmQ9bmV3IGkoIm1vcnRhci1ib2FyZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIyMSJ9KSxpLm1vdmU9bmV3IGkoIm1vdmUiLHtmb250Q2hhcmFjdGVyOiJcXGViMjIifSksaS5tdWx0aXBsZVdpbmRvd3M9bmV3IGkoIm11bHRpcGxlLXdpbmRvd3MiLHtmb250Q2hhcmFjdGVyOiJcXGViMjMifSksaS5tdXRlPW5ldyBpKCJtdXRlIix7Zm9udENoYXJhY3RlcjoiXFxlYjI0In0pLGkubm9OZXdsaW5lPW5ldyBpKCJuby1uZXdsaW5lIix7Zm9udENoYXJhY3RlcjoiXFxlYjI1In0pLGkubm90ZT1uZXcgaSgibm90ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIyNiJ9KSxpLm9jdG9mYWNlPW5ldyBpKCJvY3RvZmFjZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIyNyJ9KSxpLm9wZW5QcmV2aWV3PW5ldyBpKCJvcGVuLXByZXZpZXciLHtmb250Q2hhcmFjdGVyOiJcXGViMjgifSksaS5wYWNrYWdlXz1uZXcgaSgicGFja2FnZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIyOSJ9KSxpLnBhaW50Y2FuPW5ldyBpKCJwYWludGNhbiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIyYSJ9KSxpLnBpbj1uZXcgaSgicGluIix7Zm9udENoYXJhY3RlcjoiXFxlYjJiIn0pLGkucGxheT1uZXcgaSgicGxheSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIyYyJ9KSxpLnJ1bj1uZXcgaSgicnVuIix7Zm9udENoYXJhY3RlcjoiXFxlYjJjIn0pLGkucGx1Zz1uZXcgaSgicGx1ZyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIyZCJ9KSxpLnByZXNlcnZlQ2FzZT1uZXcgaSgicHJlc2VydmUtY2FzZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIyZSJ9KSxpLnByZXZpZXc9bmV3IGkoInByZXZpZXciLHtmb250Q2hhcmFjdGVyOiJcXGViMmYifSksaS5wcm9qZWN0PW5ldyBpKCJwcm9qZWN0Iix7Zm9udENoYXJhY3RlcjoiXFxlYjMwIn0pLGkucHVsc2U9bmV3IGkoInB1bHNlIix7Zm9udENoYXJhY3RlcjoiXFxlYjMxIn0pLGkucXVlc3Rpb249bmV3IGkoInF1ZXN0aW9uIix7Zm9udENoYXJhY3RlcjoiXFxlYjMyIn0pLGkucXVvdGU9bmV3IGkoInF1b3RlIix7Zm9udENoYXJhY3RlcjoiXFxlYjMzIn0pLGkucmFkaW9Ub3dlcj1uZXcgaSgicmFkaW8tdG93ZXIiLHtmb250Q2hhcmFjdGVyOiJcXGViMzQifSksaS5yZWFjdGlvbnM9bmV3IGkoInJlYWN0aW9ucyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIzNSJ9KSxpLnJlZmVyZW5jZXM9bmV3IGkoInJlZmVyZW5jZXMiLHtmb250Q2hhcmFjdGVyOiJcXGViMzYifSksaS5yZWZyZXNoPW5ldyBpKCJyZWZyZXNoIix7Zm9udENoYXJhY3RlcjoiXFxlYjM3In0pLGkucmVnZXg9bmV3IGkoInJlZ2V4Iix7Zm9udENoYXJhY3RlcjoiXFxlYjM4In0pLGkucmVtb3RlRXhwbG9yZXI9bmV3IGkoInJlbW90ZS1leHBsb3JlciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIzOSJ9KSxpLnJlbW90ZT1uZXcgaSgicmVtb3RlIix7Zm9udENoYXJhY3RlcjoiXFxlYjNhIn0pLGkucmVtb3ZlPW5ldyBpKCJyZW1vdmUiLHtmb250Q2hhcmFjdGVyOiJcXGViM2IifSksaS5yZXBsYWNlQWxsPW5ldyBpKCJyZXBsYWNlLWFsbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIzYyJ9KSxpLnJlcGxhY2U9bmV3IGkoInJlcGxhY2UiLHtmb250Q2hhcmFjdGVyOiJcXGViM2QifSksaS5yZXBvQ2xvbmU9bmV3IGkoInJlcG8tY2xvbmUiLHtmb250Q2hhcmFjdGVyOiJcXGViM2UifSksaS5yZXBvRm9yY2VQdXNoPW5ldyBpKCJyZXBvLWZvcmNlLXB1c2giLHtmb250Q2hhcmFjdGVyOiJcXGViM2YifSksaS5yZXBvUHVsbD1uZXcgaSgicmVwby1wdWxsIix7Zm9udENoYXJhY3RlcjoiXFxlYjQwIn0pLGkucmVwb1B1c2g9bmV3IGkoInJlcG8tcHVzaCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI0MSJ9KSxpLnJlcG9ydD1uZXcgaSgicmVwb3J0Iix7Zm9udENoYXJhY3RlcjoiXFxlYjQyIn0pLGkucmVxdWVzdENoYW5nZXM9bmV3IGkoInJlcXVlc3QtY2hhbmdlcyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI0MyJ9KSxpLnJvY2tldD1uZXcgaSgicm9ja2V0Iix7Zm9udENoYXJhY3RlcjoiXFxlYjQ0In0pLGkucm9vdEZvbGRlck9wZW5lZD1uZXcgaSgicm9vdC1mb2xkZXItb3BlbmVkIix7Zm9udENoYXJhY3RlcjoiXFxlYjQ1In0pLGkucm9vdEZvbGRlcj1uZXcgaSgicm9vdC1mb2xkZXIiLHtmb250Q2hhcmFjdGVyOiJcXGViNDYifSksaS5yc3M9bmV3IGkoInJzcyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI0NyJ9KSxpLnJ1Ynk9bmV3IGkoInJ1YnkiLHtmb250Q2hhcmFjdGVyOiJcXGViNDgifSksaS5zYXZlQWxsPW5ldyBpKCJzYXZlLWFsbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI0OSJ9KSxpLnNhdmVBcz1uZXcgaSgic2F2ZS1hcyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI0YSJ9KSxpLnNhdmU9bmV3IGkoInNhdmUiLHtmb250Q2hhcmFjdGVyOiJcXGViNGIifSksaS5zY3JlZW5GdWxsPW5ldyBpKCJzY3JlZW4tZnVsbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI0YyJ9KSxpLnNjcmVlbk5vcm1hbD1uZXcgaSgic2NyZWVuLW5vcm1hbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI0ZCJ9KSxpLnNlYXJjaFN0b3A9bmV3IGkoInNlYXJjaC1zdG9wIix7Zm9udENoYXJhY3RlcjoiXFxlYjRlIn0pLGkuc2VydmVyPW5ldyBpKCJzZXJ2ZXIiLHtmb250Q2hhcmFjdGVyOiJcXGViNTAifSksaS5zZXR0aW5nc0dlYXI9bmV3IGkoInNldHRpbmdzLWdlYXIiLHtmb250Q2hhcmFjdGVyOiJcXGViNTEifSksaS5zZXR0aW5ncz1uZXcgaSgic2V0dGluZ3MiLHtmb250Q2hhcmFjdGVyOiJcXGViNTIifSksaS5zaGllbGQ9bmV3IGkoInNoaWVsZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI1MyJ9KSxpLnNtaWxleT1uZXcgaSgic21pbGV5Iix7Zm9udENoYXJhY3RlcjoiXFxlYjU0In0pLGkuc29ydFByZWNlZGVuY2U9bmV3IGkoInNvcnQtcHJlY2VkZW5jZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI1NSJ9KSxpLnNwbGl0SG9yaXpvbnRhbD1uZXcgaSgic3BsaXQtaG9yaXpvbnRhbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI1NiJ9KSxpLnNwbGl0VmVydGljYWw9bmV3IGkoInNwbGl0LXZlcnRpY2FsIix7Zm9udENoYXJhY3RlcjoiXFxlYjU3In0pLGkuc3F1aXJyZWw9bmV3IGkoInNxdWlycmVsIix7Zm9udENoYXJhY3RlcjoiXFxlYjU4In0pLGkuc3RhckZ1bGw9bmV3IGkoInN0YXItZnVsbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI1OSJ9KSxpLnN0YXJIYWxmPW5ldyBpKCJzdGFyLWhhbGYiLHtmb250Q2hhcmFjdGVyOiJcXGViNWEifSksaS5zeW1ib2xDbGFzcz1uZXcgaSgic3ltYm9sLWNsYXNzIix7Zm9udENoYXJhY3RlcjoiXFxlYjViIn0pLGkuc3ltYm9sQ29sb3I9bmV3IGkoInN5bWJvbC1jb2xvciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI1YyJ9KSxpLnN5bWJvbEN1c3RvbUNvbG9yPW5ldyBpKCJzeW1ib2wtY3VzdG9tY29sb3IiLHtmb250Q2hhcmFjdGVyOiJcXGViNWMifSksaS5zeW1ib2xDb25zdGFudD1uZXcgaSgic3ltYm9sLWNvbnN0YW50Iix7Zm9udENoYXJhY3RlcjoiXFxlYjVkIn0pLGkuc3ltYm9sRW51bU1lbWJlcj1uZXcgaSgic3ltYm9sLWVudW0tbWVtYmVyIix7Zm9udENoYXJhY3RlcjoiXFxlYjVlIn0pLGkuc3ltYm9sRmllbGQ9bmV3IGkoInN5bWJvbC1maWVsZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI1ZiJ9KSxpLnN5bWJvbEZpbGU9bmV3IGkoInN5bWJvbC1maWxlIix7Zm9udENoYXJhY3RlcjoiXFxlYjYwIn0pLGkuc3ltYm9sSW50ZXJmYWNlPW5ldyBpKCJzeW1ib2wtaW50ZXJmYWNlIix7Zm9udENoYXJhY3RlcjoiXFxlYjYxIn0pLGkuc3ltYm9sS2V5d29yZD1uZXcgaSgic3ltYm9sLWtleXdvcmQiLHtmb250Q2hhcmFjdGVyOiJcXGViNjIifSksaS5zeW1ib2xNaXNjPW5ldyBpKCJzeW1ib2wtbWlzYyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI2MyJ9KSxpLnN5bWJvbE9wZXJhdG9yPW5ldyBpKCJzeW1ib2wtb3BlcmF0b3IiLHtmb250Q2hhcmFjdGVyOiJcXGViNjQifSksaS5zeW1ib2xQcm9wZXJ0eT1uZXcgaSgic3ltYm9sLXByb3BlcnR5Iix7Zm9udENoYXJhY3RlcjoiXFxlYjY1In0pLGkud3JlbmNoPW5ldyBpKCJ3cmVuY2giLHtmb250Q2hhcmFjdGVyOiJcXGViNjUifSksaS53cmVuY2hTdWJhY3Rpb249bmV3IGkoIndyZW5jaC1zdWJhY3Rpb24iLHtmb250Q2hhcmFjdGVyOiJcXGViNjUifSksaS5zeW1ib2xTbmlwcGV0PW5ldyBpKCJzeW1ib2wtc25pcHBldCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI2NiJ9KSxpLnRhc2tsaXN0PW5ldyBpKCJ0YXNrbGlzdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI2NyJ9KSxpLnRlbGVzY29wZT1uZXcgaSgidGVsZXNjb3BlIix7Zm9udENoYXJhY3RlcjoiXFxlYjY4In0pLGkudGV4dFNpemU9bmV3IGkoInRleHQtc2l6ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI2OSJ9KSxpLnRocmVlQmFycz1uZXcgaSgidGhyZWUtYmFycyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI2YSJ9KSxpLnRodW1ic2Rvd249bmV3IGkoInRodW1ic2Rvd24iLHtmb250Q2hhcmFjdGVyOiJcXGViNmIifSksaS50aHVtYnN1cD1uZXcgaSgidGh1bWJzdXAiLHtmb250Q2hhcmFjdGVyOiJcXGViNmMifSksaS50b29scz1uZXcgaSgidG9vbHMiLHtmb250Q2hhcmFjdGVyOiJcXGViNmQifSksaS50cmlhbmdsZURvd249bmV3IGkoInRyaWFuZ2xlLWRvd24iLHtmb250Q2hhcmFjdGVyOiJcXGViNmUifSksaS50cmlhbmdsZUxlZnQ9bmV3IGkoInRyaWFuZ2xlLWxlZnQiLHtmb250Q2hhcmFjdGVyOiJcXGViNmYifSksaS50cmlhbmdsZVJpZ2h0PW5ldyBpKCJ0cmlhbmdsZS1yaWdodCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI3MCJ9KSxpLnRyaWFuZ2xlVXA9bmV3IGkoInRyaWFuZ2xlLXVwIix7Zm9udENoYXJhY3RlcjoiXFxlYjcxIn0pLGkudHdpdHRlcj1uZXcgaSgidHdpdHRlciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI3MiJ9KSxpLnVuZm9sZD1uZXcgaSgidW5mb2xkIix7Zm9udENoYXJhY3RlcjoiXFxlYjczIn0pLGkudW5sb2NrPW5ldyBpKCJ1bmxvY2siLHtmb250Q2hhcmFjdGVyOiJcXGViNzQifSksaS51bm11dGU9bmV3IGkoInVubXV0ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI3NSJ9KSxpLnVudmVyaWZpZWQ9bmV3IGkoInVudmVyaWZpZWQiLHtmb250Q2hhcmFjdGVyOiJcXGViNzYifSksaS52ZXJpZmllZD1uZXcgaSgidmVyaWZpZWQiLHtmb250Q2hhcmFjdGVyOiJcXGViNzcifSksaS52ZXJzaW9ucz1uZXcgaSgidmVyc2lvbnMiLHtmb250Q2hhcmFjdGVyOiJcXGViNzgifSksaS52bUFjdGl2ZT1uZXcgaSgidm0tYWN0aXZlIix7Zm9udENoYXJhY3RlcjoiXFxlYjc5In0pLGkudm1PdXRsaW5lPW5ldyBpKCJ2bS1vdXRsaW5lIix7Zm9udENoYXJhY3RlcjoiXFxlYjdhIn0pLGkudm1SdW5uaW5nPW5ldyBpKCJ2bS1ydW5uaW5nIix7Zm9udENoYXJhY3RlcjoiXFxlYjdiIn0pLGkud2F0Y2g9bmV3IGkoIndhdGNoIix7Zm9udENoYXJhY3RlcjoiXFxlYjdjIn0pLGkud2hpdGVzcGFjZT1uZXcgaSgid2hpdGVzcGFjZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI3ZCJ9KSxpLndob2xlV29yZD1uZXcgaSgid2hvbGUtd29yZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI3ZSJ9KSxpLndpbmRvdz1uZXcgaSgid2luZG93Iix7Zm9udENoYXJhY3RlcjoiXFxlYjdmIn0pLGkud29yZFdyYXA9bmV3IGkoIndvcmQtd3JhcCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI4MCJ9KSxpLnpvb21Jbj1uZXcgaSgiem9vbS1pbiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI4MSJ9KSxpLnpvb21PdXQ9bmV3IGkoInpvb20tb3V0Iix7Zm9udENoYXJhY3RlcjoiXFxlYjgyIn0pLGkubGlzdEZpbHRlcj1uZXcgaSgibGlzdC1maWx0ZXIiLHtmb250Q2hhcmFjdGVyOiJcXGViODMifSksaS5saXN0RmxhdD1uZXcgaSgibGlzdC1mbGF0Iix7Zm9udENoYXJhY3RlcjoiXFxlYjg0In0pLGkubGlzdFNlbGVjdGlvbj1uZXcgaSgibGlzdC1zZWxlY3Rpb24iLHtmb250Q2hhcmFjdGVyOiJcXGViODUifSksaS5zZWxlY3Rpb249bmV3IGkoInNlbGVjdGlvbiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI4NSJ9KSxpLmxpc3RUcmVlPW5ldyBpKCJsaXN0LXRyZWUiLHtmb250Q2hhcmFjdGVyOiJcXGViODYifSksaS5kZWJ1Z0JyZWFrcG9pbnRGdW5jdGlvblVudmVyaWZpZWQ9bmV3IGkoImRlYnVnLWJyZWFrcG9pbnQtZnVuY3Rpb24tdW52ZXJpZmllZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI4NyJ9KSxpLmRlYnVnQnJlYWtwb2ludEZ1bmN0aW9uPW5ldyBpKCJkZWJ1Zy1icmVha3BvaW50LWZ1bmN0aW9uIix7Zm9udENoYXJhY3RlcjoiXFxlYjg4In0pLGkuZGVidWdCcmVha3BvaW50RnVuY3Rpb25EaXNhYmxlZD1uZXcgaSgiZGVidWctYnJlYWtwb2ludC1mdW5jdGlvbi1kaXNhYmxlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI4OCJ9KSxpLmRlYnVnU3RhY2tmcmFtZUFjdGl2ZT1uZXcgaSgiZGVidWctc3RhY2tmcmFtZS1hY3RpdmUiLHtmb250Q2hhcmFjdGVyOiJcXGViODkifSksaS5kZWJ1Z1N0YWNrZnJhbWVEb3Q9bmV3IGkoImRlYnVnLXN0YWNrZnJhbWUtZG90Iix7Zm9udENoYXJhY3RlcjoiXFxlYjhhIn0pLGkuZGVidWdTdGFja2ZyYW1lPW5ldyBpKCJkZWJ1Zy1zdGFja2ZyYW1lIix7Zm9udENoYXJhY3RlcjoiXFxlYjhiIn0pLGkuZGVidWdTdGFja2ZyYW1lRm9jdXNlZD1uZXcgaSgiZGVidWctc3RhY2tmcmFtZS1mb2N1c2VkIix7Zm9udENoYXJhY3RlcjoiXFxlYjhiIn0pLGkuZGVidWdCcmVha3BvaW50VW5zdXBwb3J0ZWQ9bmV3IGkoImRlYnVnLWJyZWFrcG9pbnQtdW5zdXBwb3J0ZWQiLHtmb250Q2hhcmFjdGVyOiJcXGViOGMifSksaS5zeW1ib2xTdHJpbmc9bmV3IGkoInN5bWJvbC1zdHJpbmciLHtmb250Q2hhcmFjdGVyOiJcXGViOGQifSksaS5kZWJ1Z1JldmVyc2VDb250aW51ZT1uZXcgaSgiZGVidWctcmV2ZXJzZS1jb250aW51ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI4ZSJ9KSxpLmRlYnVnU3RlcEJhY2s9bmV3IGkoImRlYnVnLXN0ZXAtYmFjayIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI4ZiJ9KSxpLmRlYnVnUmVzdGFydEZyYW1lPW5ldyBpKCJkZWJ1Zy1yZXN0YXJ0LWZyYW1lIix7Zm9udENoYXJhY3RlcjoiXFxlYjkwIn0pLGkuY2FsbEluY29taW5nPW5ldyBpKCJjYWxsLWluY29taW5nIix7Zm9udENoYXJhY3RlcjoiXFxlYjkyIn0pLGkuY2FsbE91dGdvaW5nPW5ldyBpKCJjYWxsLW91dGdvaW5nIix7Zm9udENoYXJhY3RlcjoiXFxlYjkzIn0pLGkubWVudT1uZXcgaSgibWVudSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI5NCJ9KSxpLmV4cGFuZEFsbD1uZXcgaSgiZXhwYW5kLWFsbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI5NSJ9KSxpLmZlZWRiYWNrPW5ldyBpKCJmZWVkYmFjayIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI5NiJ9KSxpLmdyb3VwQnlSZWZUeXBlPW5ldyBpKCJncm91cC1ieS1yZWYtdHlwZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI5NyJ9KSxpLnVuZ3JvdXBCeVJlZlR5cGU9bmV3IGkoInVuZ3JvdXAtYnktcmVmLXR5cGUiLHtmb250Q2hhcmFjdGVyOiJcXGViOTgifSksaS5hY2NvdW50PW5ldyBpKCJhY2NvdW50Iix7Zm9udENoYXJhY3RlcjoiXFxlYjk5In0pLGkuYmVsbERvdD1uZXcgaSgiYmVsbC1kb3QiLHtmb250Q2hhcmFjdGVyOiJcXGViOWEifSksaS5kZWJ1Z0NvbnNvbGU9bmV3IGkoImRlYnVnLWNvbnNvbGUiLHtmb250Q2hhcmFjdGVyOiJcXGViOWIifSksaS5saWJyYXJ5PW5ldyBpKCJsaWJyYXJ5Iix7Zm9udENoYXJhY3RlcjoiXFxlYjljIn0pLGkub3V0cHV0PW5ldyBpKCJvdXRwdXQiLHtmb250Q2hhcmFjdGVyOiJcXGViOWQifSksaS5ydW5BbGw9bmV3IGkoInJ1bi1hbGwiLHtmb250Q2hhcmFjdGVyOiJcXGViOWUifSksaS5zeW5jSWdub3JlZD1uZXcgaSgic3luYy1pZ25vcmVkIix7Zm9udENoYXJhY3RlcjoiXFxlYjlmIn0pLGkucGlubmVkPW5ldyBpKCJwaW5uZWQiLHtmb250Q2hhcmFjdGVyOiJcXGViYTAifSksaS5naXRodWJJbnZlcnRlZD1uZXcgaSgiZ2l0aHViLWludmVydGVkIix7Zm9udENoYXJhY3RlcjoiXFxlYmExIn0pLGkuZGVidWdBbHQ9bmV3IGkoImRlYnVnLWFsdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI5MSJ9KSxpLnNlcnZlclByb2Nlc3M9bmV3IGkoInNlcnZlci1wcm9jZXNzIix7Zm9udENoYXJhY3RlcjoiXFxlYmEyIn0pLGkuc2VydmVyRW52aXJvbm1lbnQ9bmV3IGkoInNlcnZlci1lbnZpcm9ubWVudCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJhMyJ9KSxpLnBhc3M9bmV3IGkoInBhc3MiLHtmb250Q2hhcmFjdGVyOiJcXGViYTQifSksaS5zdG9wQ2lyY2xlPW5ldyBpKCJzdG9wLWNpcmNsZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJhNSJ9KSxpLnBsYXlDaXJjbGU9bmV3IGkoInBsYXktY2lyY2xlIix7Zm9udENoYXJhY3RlcjoiXFxlYmE2In0pLGkucmVjb3JkPW5ldyBpKCJyZWNvcmQiLHtmb250Q2hhcmFjdGVyOiJcXGViYTcifSksaS5kZWJ1Z0FsdFNtYWxsPW5ldyBpKCJkZWJ1Zy1hbHQtc21hbGwiLHtmb250Q2hhcmFjdGVyOiJcXGViYTgifSksaS52bUNvbm5lY3Q9bmV3IGkoInZtLWNvbm5lY3QiLHtmb250Q2hhcmFjdGVyOiJcXGViYTkifSksaS5jbG91ZD1uZXcgaSgiY2xvdWQiLHtmb250Q2hhcmFjdGVyOiJcXGViYWEifSksaS5tZXJnZT1uZXcgaSgibWVyZ2UiLHtmb250Q2hhcmFjdGVyOiJcXGViYWIifSksaS5leHBvcnRJY29uPW5ldyBpKCJleHBvcnQiLHtmb250Q2hhcmFjdGVyOiJcXGViYWMifSksaS5ncmFwaExlZnQ9bmV3IGkoImdyYXBoLWxlZnQiLHtmb250Q2hhcmFjdGVyOiJcXGViYWQifSksaS5tYWduZXQ9bmV3IGkoIm1hZ25ldCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJhZSJ9KSxpLm5vdGVib29rPW5ldyBpKCJub3RlYm9vayIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJhZiJ9KSxpLnJlZG89bmV3IGkoInJlZG8iLHtmb250Q2hhcmFjdGVyOiJcXGViYjAifSksaS5jaGVja0FsbD1uZXcgaSgiY2hlY2stYWxsIix7Zm9udENoYXJhY3RlcjoiXFxlYmIxIn0pLGkucGlubmVkRGlydHk9bmV3IGkoInBpbm5lZC1kaXJ0eSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJiMiJ9KSxpLnBhc3NGaWxsZWQ9bmV3IGkoInBhc3MtZmlsbGVkIix7Zm9udENoYXJhY3RlcjoiXFxlYmIzIn0pLGkuY2lyY2xlTGFyZ2VGaWxsZWQ9bmV3IGkoImNpcmNsZS1sYXJnZS1maWxsZWQiLHtmb250Q2hhcmFjdGVyOiJcXGViYjQifSksaS5jaXJjbGVMYXJnZU91dGxpbmU9bmV3IGkoImNpcmNsZS1sYXJnZS1vdXRsaW5lIix7Zm9udENoYXJhY3RlcjoiXFxlYmI1In0pLGkuY29tYmluZT1uZXcgaSgiY29tYmluZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJiNiJ9KSxpLmdhdGhlcj1uZXcgaSgiZ2F0aGVyIix7Zm9udENoYXJhY3RlcjoiXFxlYmI2In0pLGkudGFibGU9bmV3IGkoInRhYmxlIix7Zm9udENoYXJhY3RlcjoiXFxlYmI3In0pLGkudmFyaWFibGVHcm91cD1uZXcgaSgidmFyaWFibGUtZ3JvdXAiLHtmb250Q2hhcmFjdGVyOiJcXGViYjgifSksaS50eXBlSGllcmFyY2h5PW5ldyBpKCJ0eXBlLWhpZXJhcmNoeSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJiOSJ9KSxpLnR5cGVIaWVyYXJjaHlTdWI9bmV3IGkoInR5cGUtaGllcmFyY2h5LXN1YiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJiYSJ9KSxpLnR5cGVIaWVyYXJjaHlTdXBlcj1uZXcgaSgidHlwZS1oaWVyYXJjaHktc3VwZXIiLHtmb250Q2hhcmFjdGVyOiJcXGViYmIifSksaS5naXRQdWxsUmVxdWVzdENyZWF0ZT1uZXcgaSgiZ2l0LXB1bGwtcmVxdWVzdC1jcmVhdGUiLHtmb250Q2hhcmFjdGVyOiJcXGViYmMifSksaS5ydW5BYm92ZT1uZXcgaSgicnVuLWFib3ZlIix7Zm9udENoYXJhY3RlcjoiXFxlYmJkIn0pLGkucnVuQmVsb3c9bmV3IGkoInJ1bi1iZWxvdyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJiZSJ9KSxpLm5vdGVib29rVGVtcGxhdGU9bmV3IGkoIm5vdGVib29rLXRlbXBsYXRlIix7Zm9udENoYXJhY3RlcjoiXFxlYmJmIn0pLGkuZGVidWdSZXJ1bj1uZXcgaSgiZGVidWctcmVydW4iLHtmb250Q2hhcmFjdGVyOiJcXGViYzAifSksaS53b3Jrc3BhY2VUcnVzdGVkPW5ldyBpKCJ3b3Jrc3BhY2UtdHJ1c3RlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJjMSJ9KSxpLndvcmtzcGFjZVVudHJ1c3RlZD1uZXcgaSgid29ya3NwYWNlLXVudHJ1c3RlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJjMiJ9KSxpLndvcmtzcGFjZVVuc3BlY2lmaWVkPW5ldyBpKCJ3b3Jrc3BhY2UtdW5zcGVjaWZpZWQiLHtmb250Q2hhcmFjdGVyOiJcXGViYzMifSksaS50ZXJtaW5hbENtZD1uZXcgaSgidGVybWluYWwtY21kIix7Zm9udENoYXJhY3RlcjoiXFxlYmM0In0pLGkudGVybWluYWxEZWJpYW49bmV3IGkoInRlcm1pbmFsLWRlYmlhbiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJjNSJ9KSxpLnRlcm1pbmFsTGludXg9bmV3IGkoInRlcm1pbmFsLWxpbnV4Iix7Zm9udENoYXJhY3RlcjoiXFxlYmM2In0pLGkudGVybWluYWxQb3dlcnNoZWxsPW5ldyBpKCJ0ZXJtaW5hbC1wb3dlcnNoZWxsIix7Zm9udENoYXJhY3RlcjoiXFxlYmM3In0pLGkudGVybWluYWxUbXV4PW5ldyBpKCJ0ZXJtaW5hbC10bXV4Iix7Zm9udENoYXJhY3RlcjoiXFxlYmM4In0pLGkudGVybWluYWxVYnVudHU9bmV3IGkoInRlcm1pbmFsLXVidW50dSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJjOSJ9KSxpLnRlcm1pbmFsQmFzaD1uZXcgaSgidGVybWluYWwtYmFzaCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJjYSJ9KSxpLmFycm93U3dhcD1uZXcgaSgiYXJyb3ctc3dhcCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJjYiJ9KSxpLmNvcHk9bmV3IGkoImNvcHkiLHtmb250Q2hhcmFjdGVyOiJcXGViY2MifSksaS5wZXJzb25BZGQ9bmV3IGkoInBlcnNvbi1hZGQiLHtmb250Q2hhcmFjdGVyOiJcXGViY2QifSksaS5maWx0ZXJGaWxsZWQ9bmV3IGkoImZpbHRlci1maWxsZWQiLHtmb250Q2hhcmFjdGVyOiJcXGViY2UifSksaS53YW5kPW5ldyBpKCJ3YW5kIix7Zm9udENoYXJhY3RlcjoiXFxlYmNmIn0pLGkuZGVidWdMaW5lQnlMaW5lPW5ldyBpKCJkZWJ1Zy1saW5lLWJ5LWxpbmUiLHtmb250Q2hhcmFjdGVyOiJcXGViZDAifSksaS5pbnNwZWN0PW5ldyBpKCJpbnNwZWN0Iix7Zm9udENoYXJhY3RlcjoiXFxlYmQxIn0pLGkubGF5ZXJzPW5ldyBpKCJsYXllcnMiLHtmb250Q2hhcmFjdGVyOiJcXGViZDIifSksaS5sYXllcnNEb3Q9bmV3IGkoImxheWVycy1kb3QiLHtmb250Q2hhcmFjdGVyOiJcXGViZDMifSksaS5sYXllcnNBY3RpdmU9bmV3IGkoImxheWVycy1hY3RpdmUiLHtmb250Q2hhcmFjdGVyOiJcXGViZDQifSksaS5jb21wYXNzPW5ldyBpKCJjb21wYXNzIix7Zm9udENoYXJhY3RlcjoiXFxlYmQ1In0pLGkuY29tcGFzc0RvdD1uZXcgaSgiY29tcGFzcy1kb3QiLHtmb250Q2hhcmFjdGVyOiJcXGViZDYifSksaS5jb21wYXNzQWN0aXZlPW5ldyBpKCJjb21wYXNzLWFjdGl2ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJkNyJ9KSxpLmF6dXJlPW5ldyBpKCJhenVyZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJkOCJ9KSxpLmlzc3VlRHJhZnQ9bmV3IGkoImlzc3VlLWRyYWZ0Iix7Zm9udENoYXJhY3RlcjoiXFxlYmQ5In0pLGkuZ2l0UHVsbFJlcXVlc3RDbG9zZWQ9bmV3IGkoImdpdC1wdWxsLXJlcXVlc3QtY2xvc2VkIix7Zm9udENoYXJhY3RlcjoiXFxlYmRhIn0pLGkuZ2l0UHVsbFJlcXVlc3REcmFmdD1uZXcgaSgiZ2l0LXB1bGwtcmVxdWVzdC1kcmFmdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJkYiJ9KSxpLmRlYnVnQWxsPW5ldyBpKCJkZWJ1Zy1hbGwiLHtmb250Q2hhcmFjdGVyOiJcXGViZGMifSksaS5kZWJ1Z0NvdmVyYWdlPW5ldyBpKCJkZWJ1Zy1jb3ZlcmFnZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJkZCJ9KSxpLnJ1bkVycm9ycz1uZXcgaSgicnVuLWVycm9ycyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJkZSJ9KSxpLmZvbGRlckxpYnJhcnk9bmV3IGkoImZvbGRlci1saWJyYXJ5Iix7Zm9udENoYXJhY3RlcjoiXFxlYmRmIn0pLGkuZGVidWdDb250aW51ZVNtYWxsPW5ldyBpKCJkZWJ1Zy1jb250aW51ZS1zbWFsbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJlMCJ9KSxpLmJlYWtlclN0b3A9bmV3IGkoImJlYWtlci1zdG9wIix7Zm9udENoYXJhY3RlcjoiXFxlYmUxIn0pLGkuZ3JhcGhMaW5lPW5ldyBpKCJncmFwaC1saW5lIix7Zm9udENoYXJhY3RlcjoiXFxlYmUyIn0pLGkuZ3JhcGhTY2F0dGVyPW5ldyBpKCJncmFwaC1zY2F0dGVyIix7Zm9udENoYXJhY3RlcjoiXFxlYmUzIn0pLGkucGllQ2hhcnQ9bmV3IGkoInBpZS1jaGFydCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJlNCJ9KSxpLmJyYWNrZXQ9bmV3IGkoImJyYWNrZXQiLGkuanNvbi5kZWZpbml0aW9uKSxpLmJyYWNrZXREb3Q9bmV3IGkoImJyYWNrZXQtZG90Iix7Zm9udENoYXJhY3RlcjoiXFxlYmU1In0pLGkuYnJhY2tldEVycm9yPW5ldyBpKCJicmFja2V0LWVycm9yIix7Zm9udENoYXJhY3RlcjoiXFxlYmU2In0pLGkubG9ja1NtYWxsPW5ldyBpKCJsb2NrLXNtYWxsIix7Zm9udENoYXJhY3RlcjoiXFxlYmU3In0pLGkuYXp1cmVEZXZvcHM9bmV3IGkoImF6dXJlLWRldm9wcyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJlOCJ9KSxpLnZlcmlmaWVkRmlsbGVkPW5ldyBpKCJ2ZXJpZmllZC1maWxsZWQiLHtmb250Q2hhcmFjdGVyOiJcXGViZTkifSksaS5uZXdMaW5lPW5ldyBpKCJuZXdsaW5lIix7Zm9udENoYXJhY3RlcjoiXFxlYmVhIn0pLGkubGF5b3V0PW5ldyBpKCJsYXlvdXQiLHtmb250Q2hhcmFjdGVyOiJcXGViZWIifSksaS5sYXlvdXRBY3Rpdml0eWJhckxlZnQ9bmV3IGkoImxheW91dC1hY3Rpdml0eWJhci1sZWZ0Iix7Zm9udENoYXJhY3RlcjoiXFxlYmVjIn0pLGkubGF5b3V0QWN0aXZpdHliYXJSaWdodD1uZXcgaSgibGF5b3V0LWFjdGl2aXR5YmFyLXJpZ2h0Iix7Zm9udENoYXJhY3RlcjoiXFxlYmVkIn0pLGkubGF5b3V0UGFuZWxMZWZ0PW5ldyBpKCJsYXlvdXQtcGFuZWwtbGVmdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJlZSJ9KSxpLmxheW91dFBhbmVsQ2VudGVyPW5ldyBpKCJsYXlvdXQtcGFuZWwtY2VudGVyIix7Zm9udENoYXJhY3RlcjoiXFxlYmVmIn0pLGkubGF5b3V0UGFuZWxKdXN0aWZ5PW5ldyBpKCJsYXlvdXQtcGFuZWwtanVzdGlmeSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJmMCJ9KSxpLmxheW91dFBhbmVsUmlnaHQ9bmV3IGkoImxheW91dC1wYW5lbC1yaWdodCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJmMSJ9KSxpLmxheW91dFBhbmVsPW5ldyBpKCJsYXlvdXQtcGFuZWwiLHtmb250Q2hhcmFjdGVyOiJcXGViZjIifSksaS5sYXlvdXRTaWRlYmFyTGVmdD1uZXcgaSgibGF5b3V0LXNpZGViYXItbGVmdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJmMyJ9KSxpLmxheW91dFNpZGViYXJSaWdodD1uZXcgaSgibGF5b3V0LXNpZGViYXItcmlnaHQiLHtmb250Q2hhcmFjdGVyOiJcXGViZjQifSksaS5sYXlvdXRTdGF0dXNiYXI9bmV3IGkoImxheW91dC1zdGF0dXNiYXIiLHtmb250Q2hhcmFjdGVyOiJcXGViZjUifSksaS5sYXlvdXRNZW51YmFyPW5ldyBpKCJsYXlvdXQtbWVudWJhciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJmNiJ9KSxpLmxheW91dENlbnRlcmVkPW5ldyBpKCJsYXlvdXQtY2VudGVyZWQiLHtmb250Q2hhcmFjdGVyOiJcXGViZjcifSksaS50YXJnZXQ9bmV3IGkoInRhcmdldCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJmOCJ9KSxpLmRpYWxvZ0Vycm9yPW5ldyBpKCJkaWFsb2ctZXJyb3IiLGkuZXJyb3IuZGVmaW5pdGlvbiksaS5kaWFsb2dXYXJuaW5nPW5ldyBpKCJkaWFsb2ctd2FybmluZyIsaS53YXJuaW5nLmRlZmluaXRpb24pLGkuZGlhbG9nSW5mbz1uZXcgaSgiZGlhbG9nLWluZm8iLGkuaW5mby5kZWZpbml0aW9uKSxpLmRpYWxvZ0Nsb3NlPW5ldyBpKCJkaWFsb2ctY2xvc2UiLGkuY2xvc2UuZGVmaW5pdGlvbiksaS50cmVlSXRlbUV4cGFuZGVkPW5ldyBpKCJ0cmVlLWl0ZW0tZXhwYW5kZWQiLGkuY2hldnJvbkRvd24uZGVmaW5pdGlvbiksaS50cmVlRmlsdGVyT25UeXBlT249bmV3IGkoInRyZWUtZmlsdGVyLW9uLXR5cGUtb24iLGkubGlzdEZpbHRlci5kZWZpbml0aW9uKSxpLnRyZWVGaWx0ZXJPblR5cGVPZmY9bmV3IGkoInRyZWUtZmlsdGVyLW9uLXR5cGUtb2ZmIixpLmxpc3RTZWxlY3Rpb24uZGVmaW5pdGlvbiksaS50cmVlRmlsdGVyQ2xlYXI9bmV3IGkoInRyZWUtZmlsdGVyLWNsZWFyIixpLmNsb3NlLmRlZmluaXRpb24pLGkudHJlZUl0ZW1Mb2FkaW5nPW5ldyBpKCJ0cmVlLWl0ZW0tbG9hZGluZyIsaS5sb2FkaW5nLmRlZmluaXRpb24pLGkubWVudVNlbGVjdGlvbj1uZXcgaSgibWVudS1zZWxlY3Rpb24iLGkuY2hlY2suZGVmaW5pdGlvbiksaS5tZW51U3VibWVudT1uZXcgaSgibWVudS1zdWJtZW51IixpLmNoZXZyb25SaWdodC5kZWZpbml0aW9uKSxpLm1lbnVCYXJNb3JlPW5ldyBpKCJtZW51YmFyLW1vcmUiLGkubW9yZS5kZWZpbml0aW9uKSxpLnNjcm9sbGJhckJ1dHRvbkxlZnQ9bmV3IGkoInNjcm9sbGJhci1idXR0b24tbGVmdCIsaS50cmlhbmdsZUxlZnQuZGVmaW5pdGlvbiksaS5zY3JvbGxiYXJCdXR0b25SaWdodD1uZXcgaSgic2Nyb2xsYmFyLWJ1dHRvbi1yaWdodCIsaS50cmlhbmdsZVJpZ2h0LmRlZmluaXRpb24pLGkuc2Nyb2xsYmFyQnV0dG9uVXA9bmV3IGkoInNjcm9sbGJhci1idXR0b24tdXAiLGkudHJpYW5nbGVVcC5kZWZpbml0aW9uKSxpLnNjcm9sbGJhckJ1dHRvbkRvd249bmV3IGkoInNjcm9sbGJhci1idXR0b24tZG93biIsaS50cmlhbmdsZURvd24uZGVmaW5pdGlvbiksaS50b29sQmFyTW9yZT1uZXcgaSgidG9vbGJhci1tb3JlIixpLm1vcmUuZGVmaW5pdGlvbiksaS5xdWlja0lucHV0QmFjaz1uZXcgaSgicXVpY2staW5wdXQtYmFjayIsaS5hcnJvd0xlZnQuZGVmaW5pdGlvbik7e3ZhciBlOyhlPXZyPXZyfHx7fSkuaWNvbk5hbWVTZWdtZW50PSJbQS1aYS16MC05XSsiLGUuaWNvbk5hbWVFeHByZXNzaW9uPSJbQS1aYS16MC05LV0rIixlLmljb25Nb2RpZmllckV4cHJlc3Npb249In5bQS1aYS16XSsiLGUuaWNvbk5hbWVDaGFyYWN0ZXI9IltBLVphLXowLTl+LV0iO2NvbnN0IENuPW5ldyBSZWdFeHAoYF4oJHtlLmljb25OYW1lRXhwcmVzc2lvbn0pKCR7ZS5pY29uTW9kaWZpZXJFeHByZXNzaW9ufSk/JGApO2Z1bmN0aW9uIE1yKGUpe2lmKGUgaW5zdGFuY2VvZiBpKXJldHVyblsiY29kaWNvbiIsImNvZGljb24tIitlLmlkXTtlPUNuLmV4ZWMoZS5pZCk7aWYoIWUpcmV0dXJuIE1yKGkuZXJyb3IpO2xldFssdCxyXT1lO2NvbnN0IG49WyJjb2RpY29uIiwiY29kaWNvbi0iK3RdO3JldHVybiByJiZuLnB1c2goImNvZGljb24tbW9kaWZpZXItIityLnN1YnN0cigxKSksbn1lLmFzQ2xhc3NOYW1lQXJyYXk9TXIsZS5hc0NsYXNzTmFtZT1mdW5jdGlvbihlKXtyZXR1cm4gTXIoZSkuam9pbigiICIpfSxlLmFzQ1NTU2VsZWN0b3I9ZnVuY3Rpb24oZSl7cmV0dXJuIi4iK01yKGUpLmpvaW4oIi4iKX19Y2xhc3MgUHJ7Y29uc3RydWN0b3IoZSx0LHIpe3RoaXMuX3Rva2VuQnJhbmQ9dm9pZCAwLHRoaXMub2Zmc2V0PWUsdGhpcy50eXBlPXQsdGhpcy5sYW5ndWFnZT1yfXRvU3RyaW5nKCl7cmV0dXJuIigiK3RoaXMub2Zmc2V0KyIsICIrdGhpcy50eXBlKyIpIn19Y2xhc3MgS3J7Y29uc3RydWN0b3IoZSx0KXt0aGlzLl90b2tlbml6YXRpb25SZXN1bHRCcmFuZD12b2lkIDAsdGhpcy50b2tlbnM9ZSx0aGlzLmVuZFN0YXRlPXR9fWNsYXNzIFJye2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5fZW5jb2RlZFRva2VuaXphdGlvblJlc3VsdEJyYW5kPXZvaWQgMCx0aGlzLnRva2Vucz1lLHRoaXMuZW5kU3RhdGU9dH19e0Q9e307Y29uc3Qgcj1uZXcgTWFwLG49KHIuc2V0KDAsaS5zeW1ib2xNZXRob2QpLHIuc2V0KDEsaS5zeW1ib2xGdW5jdGlvbiksci5zZXQoMixpLnN5bWJvbENvbnN0cnVjdG9yKSxyLnNldCgzLGkuc3ltYm9sRmllbGQpLHIuc2V0KDQsaS5zeW1ib2xWYXJpYWJsZSksci5zZXQoNSxpLnN5bWJvbENsYXNzKSxyLnNldCg2LGkuc3ltYm9sU3RydWN0KSxyLnNldCg3LGkuc3ltYm9sSW50ZXJmYWNlKSxyLnNldCg4LGkuc3ltYm9sTW9kdWxlKSxyLnNldCg5LGkuc3ltYm9sUHJvcGVydHkpLHIuc2V0KDEwLGkuc3ltYm9sRXZlbnQpLHIuc2V0KDExLGkuc3ltYm9sT3BlcmF0b3IpLHIuc2V0KDEyLGkuc3ltYm9sVW5pdCksci5zZXQoMTMsaS5zeW1ib2xWYWx1ZSksci5zZXQoMTUsaS5zeW1ib2xFbnVtKSxyLnNldCgxNCxpLnN5bWJvbENvbnN0YW50KSxyLnNldCgxNSxpLnN5bWJvbEVudW0pLHIuc2V0KDE2LGkuc3ltYm9sRW51bU1lbWJlciksci5zZXQoMTcsaS5zeW1ib2xLZXl3b3JkKSxyLnNldCgyNyxpLnN5bWJvbFNuaXBwZXQpLHIuc2V0KDE4LGkuc3ltYm9sVGV4dCksci5zZXQoMTksaS5zeW1ib2xDb2xvciksci5zZXQoMjAsaS5zeW1ib2xGaWxlKSxyLnNldCgyMSxpLnN5bWJvbFJlZmVyZW5jZSksci5zZXQoMjIsaS5zeW1ib2xDdXN0b21Db2xvciksci5zZXQoMjMsaS5zeW1ib2xGb2xkZXIpLHIuc2V0KDI0LGkuc3ltYm9sVHlwZVBhcmFtZXRlciksci5zZXQoMjUsaS5hY2NvdW50KSxyLnNldCgyNixpLmlzc3VlcyksRC50b0ljb249ZnVuY3Rpb24oZSl7bGV0IHQ9ci5nZXQoZSk7cmV0dXJuIHR8fChjb25zb2xlLmluZm8oIk5vIGNvZGljb24gZm91bmQgZm9yIENvbXBsZXRpb25JdGVtS2luZCAiK2UpLHQ9aS5zeW1ib2xQcm9wZXJ0eSksdH0sbmV3IE1hcCk7bi5zZXQoIm1ldGhvZCIsMCksbi5zZXQoImZ1bmN0aW9uIiwxKSxuLnNldCgiY29uc3RydWN0b3IiLDIpLG4uc2V0KCJmaWVsZCIsMyksbi5zZXQoInZhcmlhYmxlIiw0KSxuLnNldCgiY2xhc3MiLDUpLG4uc2V0KCJzdHJ1Y3QiLDYpLG4uc2V0KCJpbnRlcmZhY2UiLDcpLG4uc2V0KCJtb2R1bGUiLDgpLG4uc2V0KCJwcm9wZXJ0eSIsOSksbi5zZXQoImV2ZW50IiwxMCksbi5zZXQoIm9wZXJhdG9yIiwxMSksbi5zZXQoInVuaXQiLDEyKSxuLnNldCgidmFsdWUiLDEzKSxuLnNldCgiY29uc3RhbnQiLDE0KSxuLnNldCgiZW51bSIsMTUpLG4uc2V0KCJlbnVtLW1lbWJlciIsMTYpLG4uc2V0KCJlbnVtTWVtYmVyIiwxNiksbi5zZXQoImtleXdvcmQiLDE3KSxuLnNldCgic25pcHBldCIsMjcpLG4uc2V0KCJ0ZXh0IiwxOCksbi5zZXQoImNvbG9yIiwxOSksbi5zZXQoImZpbGUiLDIwKSxuLnNldCgicmVmZXJlbmNlIiwyMSksbi5zZXQoImN1c3RvbWNvbG9yIiwyMiksbi5zZXQoImZvbGRlciIsMjMpLG4uc2V0KCJ0eXBlLXBhcmFtZXRlciIsMjQpLG4uc2V0KCJ0eXBlUGFyYW1ldGVyIiwyNCksbi5zZXQoImFjY291bnQiLDI1KSxuLnNldCgiaXNzdWUiLDI2KSxELmZyb21TdHJpbmc9ZnVuY3Rpb24oZSx0KXtsZXQgcj1uLmdldChlKTtyZXR1cm4gcj12b2lkIDAhPT1yfHx0P3I6OX19e3ZhciBSPXt9O2NvbnN0IHM9bmV3IE1hcDtzLnNldCgwLGkuc3ltYm9sRmlsZSkscy5zZXQoMSxpLnN5bWJvbE1vZHVsZSkscy5zZXQoMixpLnN5bWJvbE5hbWVzcGFjZSkscy5zZXQoMyxpLnN5bWJvbFBhY2thZ2UpLHMuc2V0KDQsaS5zeW1ib2xDbGFzcykscy5zZXQoNSxpLnN5bWJvbE1ldGhvZCkscy5zZXQoNixpLnN5bWJvbFByb3BlcnR5KSxzLnNldCg3LGkuc3ltYm9sRmllbGQpLHMuc2V0KDgsaS5zeW1ib2xDb25zdHJ1Y3Rvcikscy5zZXQoOSxpLnN5bWJvbEVudW0pLHMuc2V0KDEwLGkuc3ltYm9sSW50ZXJmYWNlKSxzLnNldCgxMSxpLnN5bWJvbEZ1bmN0aW9uKSxzLnNldCgxMixpLnN5bWJvbFZhcmlhYmxlKSxzLnNldCgxMyxpLnN5bWJvbENvbnN0YW50KSxzLnNldCgxNCxpLnN5bWJvbFN0cmluZykscy5zZXQoMTUsaS5zeW1ib2xOdW1iZXIpLHMuc2V0KDE2LGkuc3ltYm9sQm9vbGVhbikscy5zZXQoMTcsaS5zeW1ib2xBcnJheSkscy5zZXQoMTgsaS5zeW1ib2xPYmplY3QpLHMuc2V0KDE5LGkuc3ltYm9sS2V5KSxzLnNldCgyMCxpLnN5bWJvbE51bGwpLHMuc2V0KDIxLGkuc3ltYm9sRW51bU1lbWJlcikscy5zZXQoMjIsaS5zeW1ib2xTdHJ1Y3QpLHMuc2V0KDIzLGkuc3ltYm9sRXZlbnQpLHMuc2V0KDI0LGkuc3ltYm9sT3BlcmF0b3IpLHMuc2V0KDI1LGkuc3ltYm9sVHlwZVBhcmFtZXRlciksUi50b0ljb249ZnVuY3Rpb24oZSl7bGV0IHQ9cy5nZXQoZSk7cmV0dXJuIHR8fChjb25zb2xlLmluZm8oIk5vIGNvZGljb24gZm91bmQgZm9yIFN5bWJvbEtpbmQgIitlKSx0PWkuc3ltYm9sUHJvcGVydHkpLHR9fWZ1bmN0aW9uIERyKGUsdCxyKXtpZighcnx8ci5sZW5ndGg8dC5sZW5ndGgpcmV0dXJuIG51bGw7bGV0IG47cmV0dXJuKG49ZT9zZShyLHQpOjA9PT1yLmluZGV4T2YodCkpPzA8dC5sZW5ndGg/W3tzdGFydDowLGVuZDp0Lmxlbmd0aH1dOltdOm51bGx9KHFyfHx7fSkuaXM9ZnVuY3Rpb24oZSl7cmV0dXJuISghZXx8Im9iamVjdCIhPXR5cGVvZiBlKSYmKCJzdHJpbmciPT10eXBlb2YgZS5pZCYmInN0cmluZyI9PXR5cGVvZiBlLnRpdGxlKX0sbmV3IGEsbmV3IGEsbmV3IGEsbmV3IGEsbmV3IGEsbmV3IGEsbmV3IGEsbmV3IGEsbmV3IGEsbmV3IGEsbmV3IGEsbmV3IGEsbmV3IGEsbmV3IGEsbmV3IGEsbmV3IGEsbmV3IGEsbmV3IGEsbmV3IGEsbmV3IGEsbmV3IGEsbmV3IGEsbmV3IGEsbmV3IGEsbmV3IGEsbmV3IGEsbmV3IGEsbmV3IGNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5fbWFwPW5ldyBNYXAsdGhpcy5fZmFjdG9yaWVzPW5ldyBNYXAsdGhpcy5fb25EaWRDaGFuZ2U9bmV3IFgsdGhpcy5vbkRpZENoYW5nZT10aGlzLl9vbkRpZENoYW5nZS5ldmVudCx0aGlzLl9jb2xvck1hcD1udWxsfWZpcmUoZSl7dGhpcy5fb25EaWRDaGFuZ2UuZmlyZSh7Y2hhbmdlZExhbmd1YWdlczplLGNoYW5nZWRDb2xvck1hcDohMX0pfXJlZ2lzdGVyKGUsdCl7cmV0dXJuIHRoaXMuX21hcC5zZXQoZSx0KSx0aGlzLmZpcmUoW2VdKSx2KCgpPT57dGhpcy5fbWFwLmdldChlKT09PXQmJih0aGlzLl9tYXAuZGVsZXRlKGUpLHRoaXMuZmlyZShbZV0pKX0pfXJlZ2lzdGVyRmFjdG9yeSh0LGUpe3ZhciByO251bGwhPT0ocj10aGlzLl9mYWN0b3JpZXMuZ2V0KHQpKSYmdm9pZCAwIT09ciYmci5kaXNwb3NlKCk7Y29uc3Qgbj1uZXcgeHIodGhpcyx0LGUpO3JldHVybiB0aGlzLl9mYWN0b3JpZXMuc2V0KHQsbiksdigoKT0+e2NvbnN0IGU9dGhpcy5fZmFjdG9yaWVzLmdldCh0KTtlJiZlPT09biYmKHRoaXMuX2ZhY3Rvcmllcy5kZWxldGUodCksZS5kaXNwb3NlKCkpfSl9Z2V0T3JDcmVhdGUocil7cmV0dXJuIGtyKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXt2YXIgZT10aGlzLmdldChyKTtpZihlKXJldHVybiBlO2NvbnN0IHQ9dGhpcy5fZmFjdG9yaWVzLmdldChyKTtyZXR1cm4hdHx8dC5pc1Jlc29sdmVkP251bGw6KHlpZWxkIHQucmVzb2x2ZSgpLHRoaXMuZ2V0KHIpKX0pfWdldChlKXtyZXR1cm4gdGhpcy5fbWFwLmdldChlKXx8bnVsbH1pc1Jlc29sdmVkKGUpe2lmKHRoaXMuZ2V0KGUpKXJldHVybiEwO2U9dGhpcy5fZmFjdG9yaWVzLmdldChlKTtyZXR1cm4hKGUmJiFlLmlzUmVzb2x2ZWQpfXNldENvbG9yTWFwKGUpe3RoaXMuX2NvbG9yTWFwPWUsdGhpcy5fb25EaWRDaGFuZ2UuZmlyZSh7Y2hhbmdlZExhbmd1YWdlczpBcnJheS5mcm9tKHRoaXMuX21hcC5rZXlzKCkpLGNoYW5nZWRDb2xvck1hcDohMH0pfWdldENvbG9yTWFwKCl7cmV0dXJuIHRoaXMuX2NvbG9yTWFwfWdldERlZmF1bHRCYWNrZ3JvdW5kKCl7cmV0dXJuIHRoaXMuX2NvbG9yTWFwJiYyPHRoaXMuX2NvbG9yTWFwLmxlbmd0aD90aGlzLl9jb2xvck1hcFsyXTpudWxsfX0sKHQ9eXI9eXJ8fHt9KVt0LkRlcGVuZHNPbktiTGF5b3V0PS0xXT0iRGVwZW5kc09uS2JMYXlvdXQiLHRbdC5Vbmtub3duPTBdPSJVbmtub3duIix0W3QuQmFja3NwYWNlPTFdPSJCYWNrc3BhY2UiLHRbdC5UYWI9Ml09IlRhYiIsdFt0LkVudGVyPTNdPSJFbnRlciIsdFt0LlNoaWZ0PTRdPSJTaGlmdCIsdFt0LkN0cmw9NV09IkN0cmwiLHRbdC5BbHQ9Nl09IkFsdCIsdFt0LlBhdXNlQnJlYWs9N109IlBhdXNlQnJlYWsiLHRbdC5DYXBzTG9jaz04XT0iQ2Fwc0xvY2siLHRbdC5Fc2NhcGU9OV09IkVzY2FwZSIsdFt0LlNwYWNlPTEwXT0iU3BhY2UiLHRbdC5QYWdlVXA9MTFdPSJQYWdlVXAiLHRbdC5QYWdlRG93bj0xMl09IlBhZ2VEb3duIix0W3QuRW5kPTEzXT0iRW5kIix0W3QuSG9tZT0xNF09IkhvbWUiLHRbdC5MZWZ0QXJyb3c9MTVdPSJMZWZ0QXJyb3ciLHRbdC5VcEFycm93PTE2XT0iVXBBcnJvdyIsdFt0LlJpZ2h0QXJyb3c9MTddPSJSaWdodEFycm93Iix0W3QuRG93bkFycm93PTE4XT0iRG93bkFycm93Iix0W3QuSW5zZXJ0PTE5XT0iSW5zZXJ0Iix0W3QuRGVsZXRlPTIwXT0iRGVsZXRlIix0W3QuRGlnaXQwPTIxXT0iRGlnaXQwIix0W3QuRGlnaXQxPTIyXT0iRGlnaXQxIix0W3QuRGlnaXQyPTIzXT0iRGlnaXQyIix0W3QuRGlnaXQzPTI0XT0iRGlnaXQzIix0W3QuRGlnaXQ0PTI1XT0iRGlnaXQ0Iix0W3QuRGlnaXQ1PTI2XT0iRGlnaXQ1Iix0W3QuRGlnaXQ2PTI3XT0iRGlnaXQ2Iix0W3QuRGlnaXQ3PTI4XT0iRGlnaXQ3Iix0W3QuRGlnaXQ4PTI5XT0iRGlnaXQ4Iix0W3QuRGlnaXQ5PTMwXT0iRGlnaXQ5Iix0W3QuS2V5QT0zMV09IktleUEiLHRbdC5LZXlCPTMyXT0iS2V5QiIsdFt0LktleUM9MzNdPSJLZXlDIix0W3QuS2V5RD0zNF09IktleUQiLHRbdC5LZXlFPTM1XT0iS2V5RSIsdFt0LktleUY9MzZdPSJLZXlGIix0W3QuS2V5Rz0zN109IktleUciLHRbdC5LZXlIPTM4XT0iS2V5SCIsdFt0LktleUk9MzldPSJLZXlJIix0W3QuS2V5Sj00MF09IktleUoiLHRbdC5LZXlLPTQxXT0iS2V5SyIsdFt0LktleUw9NDJdPSJLZXlMIix0W3QuS2V5TT00M109IktleU0iLHRbdC5LZXlOPTQ0XT0iS2V5TiIsdFt0LktleU89NDVdPSJLZXlPIix0W3QuS2V5UD00Nl09IktleVAiLHRbdC5LZXlRPTQ3XT0iS2V5USIsdFt0LktleVI9NDhdPSJLZXlSIix0W3QuS2V5Uz00OV09IktleVMiLHRbdC5LZXlUPTUwXT0iS2V5VCIsdFt0LktleVU9NTFdPSJLZXlVIix0W3QuS2V5Vj01Ml09IktleVYiLHRbdC5LZXlXPTUzXT0iS2V5VyIsdFt0LktleVg9NTRdPSJLZXlYIix0W3QuS2V5WT01NV09IktleVkiLHRbdC5LZXlaPTU2XT0iS2V5WiIsdFt0Lk1ldGE9NTddPSJNZXRhIix0W3QuQ29udGV4dE1lbnU9NThdPSJDb250ZXh0TWVudSIsdFt0LkYxPTU5XT0iRjEiLHRbdC5GMj02MF09IkYyIix0W3QuRjM9NjFdPSJGMyIsdFt0LkY0PTYyXT0iRjQiLHRbdC5GNT02M109IkY1Iix0W3QuRjY9NjRdPSJGNiIsdFt0LkY3PTY1XT0iRjciLHRbdC5GOD02Nl09IkY4Iix0W3QuRjk9NjddPSJGOSIsdFt0LkYxMD02OF09IkYxMCIsdFt0LkYxMT02OV09IkYxMSIsdFt0LkYxMj03MF09IkYxMiIsdFt0LkYxMz03MV09IkYxMyIsdFt0LkYxND03Ml09IkYxNCIsdFt0LkYxNT03M109IkYxNSIsdFt0LkYxNj03NF09IkYxNiIsdFt0LkYxNz03NV09IkYxNyIsdFt0LkYxOD03Nl09IkYxOCIsdFt0LkYxOT03N109IkYxOSIsdFt0Lk51bUxvY2s9NzhdPSJOdW1Mb2NrIix0W3QuU2Nyb2xsTG9jaz03OV09IlNjcm9sbExvY2siLHRbdC5TZW1pY29sb249ODBdPSJTZW1pY29sb24iLHRbdC5FcXVhbD04MV09IkVxdWFsIix0W3QuQ29tbWE9ODJdPSJDb21tYSIsdFt0Lk1pbnVzPTgzXT0iTWludXMiLHRbdC5QZXJpb2Q9ODRdPSJQZXJpb2QiLHRbdC5TbGFzaD04NV09IlNsYXNoIix0W3QuQmFja3F1b3RlPTg2XT0iQmFja3F1b3RlIix0W3QuQnJhY2tldExlZnQ9ODddPSJCcmFja2V0TGVmdCIsdFt0LkJhY2tzbGFzaD04OF09IkJhY2tzbGFzaCIsdFt0LkJyYWNrZXRSaWdodD04OV09IkJyYWNrZXRSaWdodCIsdFt0LlF1b3RlPTkwXT0iUXVvdGUiLHRbdC5PRU1fOD05MV09Ik9FTV84Iix0W3QuSW50bEJhY2tzbGFzaD05Ml09IkludGxCYWNrc2xhc2giLHRbdC5OdW1wYWQwPTkzXT0iTnVtcGFkMCIsdFt0Lk51bXBhZDE9OTRdPSJOdW1wYWQxIix0W3QuTnVtcGFkMj05NV09Ik51bXBhZDIiLHRbdC5OdW1wYWQzPTk2XT0iTnVtcGFkMyIsdFt0Lk51bXBhZDQ9OTddPSJOdW1wYWQ0Iix0W3QuTnVtcGFkNT05OF09Ik51bXBhZDUiLHRbdC5OdW1wYWQ2PTk5XT0iTnVtcGFkNiIsdFt0Lk51bXBhZDc9MTAwXT0iTnVtcGFkNyIsdFt0Lk51bXBhZDg9MTAxXT0iTnVtcGFkOCIsdFt0Lk51bXBhZDk9MTAyXT0iTnVtcGFkOSIsdFt0Lk51bXBhZE11bHRpcGx5PTEwM109Ik51bXBhZE11bHRpcGx5Iix0W3QuTnVtcGFkQWRkPTEwNF09Ik51bXBhZEFkZCIsdFt0Lk5VTVBBRF9TRVBBUkFUT1I9MTA1XT0iTlVNUEFEX1NFUEFSQVRPUiIsdFt0Lk51bXBhZFN1YnRyYWN0PTEwNl09Ik51bXBhZFN1YnRyYWN0Iix0W3QuTnVtcGFkRGVjaW1hbD0xMDddPSJOdW1wYWREZWNpbWFsIix0W3QuTnVtcGFkRGl2aWRlPTEwOF09Ik51bXBhZERpdmlkZSIsdFt0LktFWV9JTl9DT01QT1NJVElPTj0xMDldPSJLRVlfSU5fQ09NUE9TSVRJT04iLHRbdC5BQk5UX0MxPTExMF09IkFCTlRfQzEiLHRbdC5BQk5UX0MyPTExMV09IkFCTlRfQzIiLHRbdC5BdWRpb1ZvbHVtZU11dGU9MTEyXT0iQXVkaW9Wb2x1bWVNdXRlIix0W3QuQXVkaW9Wb2x1bWVVcD0xMTNdPSJBdWRpb1ZvbHVtZVVwIix0W3QuQXVkaW9Wb2x1bWVEb3duPTExNF09IkF1ZGlvVm9sdW1lRG93biIsdFt0LkJyb3dzZXJTZWFyY2g9MTE1XT0iQnJvd3NlclNlYXJjaCIsdFt0LkJyb3dzZXJIb21lPTExNl09IkJyb3dzZXJIb21lIix0W3QuQnJvd3NlckJhY2s9MTE3XT0iQnJvd3NlckJhY2siLHRbdC5Ccm93c2VyRm9yd2FyZD0xMThdPSJCcm93c2VyRm9yd2FyZCIsdFt0Lk1lZGlhVHJhY2tOZXh0PTExOV09Ik1lZGlhVHJhY2tOZXh0Iix0W3QuTWVkaWFUcmFja1ByZXZpb3VzPTEyMF09Ik1lZGlhVHJhY2tQcmV2aW91cyIsdFt0Lk1lZGlhU3RvcD0xMjFdPSJNZWRpYVN0b3AiLHRbdC5NZWRpYVBsYXlQYXVzZT0xMjJdPSJNZWRpYVBsYXlQYXVzZSIsdFt0LkxhdW5jaE1lZGlhUGxheWVyPTEyM109IkxhdW5jaE1lZGlhUGxheWVyIix0W3QuTGF1bmNoTWFpbD0xMjRdPSJMYXVuY2hNYWlsIix0W3QuTGF1bmNoQXBwMj0xMjVdPSJMYXVuY2hBcHAyIix0W3QuTUFYX1ZBTFVFPTEyNl09Ik1BWF9WQUxVRSIsKGU9U3I9U3J8fHt9KVtlLlRyYWNlPTBdPSJUcmFjZSIsZVtlLkRlYnVnPTFdPSJEZWJ1ZyIsZVtlLkluZm89Ml09IkluZm8iLGVbZS5XYXJuaW5nPTNdPSJXYXJuaW5nIixlW2UuRXJyb3I9NF09IkVycm9yIixlW2UuQ3JpdGljYWw9NV09IkNyaXRpY2FsIixlW2UuT2ZmPTZdPSJPZmYiLChSPUxyPUxyfHx7fSlbUi5QYXJhZ3JhcGg9MF09IlBhcmFncmFwaCIsUltSLkJyZWFrPTFdPSJCcmVhayIsKHFyPU5yPU5yfHx7fSlbcXIuSGludD0xXT0iSGludCIscXJbcXIuSW5mbz0yXT0iSW5mbyIscXJbcXIuV2FybmluZz00XT0iV2FybmluZyIscXJbcXIuRXJyb3I9OF09IkVycm9yIiwoZT1Fcj1Fcnx8e30pW2UuVW5uZWNlc3Nhcnk9MV09IlVubmVjZXNzYXJ5IixlW2UuRGVwcmVjYXRlZD0yXT0iRGVwcmVjYXRlZCIsKFI9QXI9QXJ8fHt9KVtSLkxUUj0wXT0iTFRSIixSW1IuUlRMPTFdPSJSVEwiLERyLmJpbmQodm9pZCAwLCExKSxEci5iaW5kKHZvaWQgMCwhMCk7Y29uc3QgSXI9bmV3IFNldDsiKClbXXt9PD5gJ1wiLS87OiwuPyEiLnNwbGl0KCIiKS5mb3JFYWNoKGU9PklyLmFkZChlLmNoYXJDb2RlQXQoMCkpKSxuZXcgWXQoMWU0KTtmdW5jdGlvbiBWcigpe2NvbnN0IHQ9W10scj1bXTtmb3IobGV0IGU9MDtlPD0xMjg7ZSsrKXJbZV09MDtmb3IobGV0IGU9MDtlPD0xMjg7ZSsrKXQucHVzaChyLnNsaWNlKDApKTtyZXR1cm4gdH1mdW5jdGlvbiBPcih0KXtjb25zdCByPVtdO2ZvcihsZXQgZT0wO2U8PXQ7ZSsrKXJbZV09MDtyZXR1cm4gcn1PcigyNTYpLE9yKDI1NiksVnIoKSxWcigpLFZyKCk7dmFyIEZyLFRyLEJyLHFyPW5ldyBSZWdFeHAoYFxcJFxcKCR7dnIuaWNvbk5hbWVFeHByZXNzaW9ufSg/OiR7dnIuaWNvbk1vZGlmaWVyRXhwcmVzc2lvbn0pP1xcKWAsImciKTtuZXcgUmVnRXhwKHZyLmljb25OYW1lQ2hhcmFjdGVyKTtjb25zdCBVcj1uZXcgUmVnRXhwKCIoXFxcXCk/Iitxci5zb3VyY2UsImciKTtuZXcgUmVnRXhwKCJcXFxcIitxci5zb3VyY2UsImciKSxuZXcgUmVnRXhwKGAoXFxzKT8oXFxcXCk/JHtxci5zb3VyY2V9KFxccyk/YCwiZyIpO2NsYXNzIEhye2NvbnN0cnVjdG9yKGU9IiIsdD0hMSl7aWYodGhpcy52YWx1ZT1lLCJzdHJpbmciIT10eXBlb2YgdGhpcy52YWx1ZSl0aHJvdyhlPSJ2YWx1ZSIpP25ldyBFcnJvcigiSWxsZWdhbCBhcmd1bWVudDogIitlKTpuZXcgRXJyb3IoIklsbGVnYWwgYXJndW1lbnQiKTsiYm9vbGVhbiI9PXR5cGVvZiB0Pyh0aGlzLmlzVHJ1c3RlZD10LHRoaXMuc3VwcG9ydFRoZW1lSWNvbnM9ITEsdGhpcy5zdXBwb3J0SHRtbD0hMSk6KHRoaXMuaXNUcnVzdGVkPW51bGwhPT0oZT10LmlzVHJ1c3RlZCkmJnZvaWQgMCE9PWU/ZTp2b2lkIDAsdGhpcy5zdXBwb3J0VGhlbWVJY29ucz1udWxsIT09KGU9dC5zdXBwb3J0VGhlbWVJY29ucykmJnZvaWQgMCE9PWUmJmUsdGhpcy5zdXBwb3J0SHRtbD1udWxsIT09KGU9dC5zdXBwb3J0SHRtbCkmJnZvaWQgMCE9PWUmJmUpfWFwcGVuZFRleHQoZSx0PTApe3JldHVybiB0aGlzLnZhbHVlKz0odGhpcy5zdXBwb3J0VGhlbWVJY29ucz9lLnJlcGxhY2UoVXIsKGUsdCk9PnQ/ZToiXFwiK2UpOmUpLnJlcGxhY2UoL1tcXGAqX3t9W1xdKCkjK1wtIV0vZywiXFwkJiIpLnJlcGxhY2UoLyhbIFx0XSspL2csKGUsdCk9PiImbmJzcDsiLnJlcGVhdCh0Lmxlbmd0aCkpLnJlcGxhY2UoL1w+L2dtLCJcXD4iKS5yZXBsYWNlKC9cbi9nLDE9PT10PyJcXFxuIjoiXG5cbiIpLHRoaXN9YXBwZW5kTWFya2Rvd24oZSl7cmV0dXJuIHRoaXMudmFsdWUrPWUsdGhpc31hcHBlbmRDb2RlYmxvY2soZSx0KXtyZXR1cm4gdGhpcy52YWx1ZSs9IlxuYGBgIix0aGlzLnZhbHVlKz1lLHRoaXMudmFsdWUrPSJcbiIsdGhpcy52YWx1ZSs9dCx0aGlzLnZhbHVlKz0iXG5gYGBcbiIsdGhpc319ZnVuY3Rpb24gV3IoZSl7aWYoRnIuc2VydmljZUlkcy5oYXMoZSkpcmV0dXJuIEZyLnNlcnZpY2VJZHMuZ2V0KGUpO2Z1bmN0aW9uIGEoZSx0LHIpe2lmKDMhPT1hcmd1bWVudHMubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiQElTZXJ2aWNlTmFtZS1kZWNvcmF0b3IgY2FuIG9ubHkgYmUgdXNlZCB0byBkZWNvcmF0ZSBhIHBhcmFtZXRlciIpO3ZhciBuLGk7bj1hLHI9cixpPSExLChlPWUpW0ZyLkRJX1RBUkdFVF09PT1lP2VbRnIuRElfREVQRU5ERU5DSUVTXS5wdXNoKHtpZDpuLGluZGV4OnIsb3B0aW9uYWw6aX0pOihlW0ZyLkRJX0RFUEVOREVOQ0lFU109W3tpZDpuLGluZGV4OnIsb3B0aW9uYWw6aX1dLGVbRnIuRElfVEFSR0VUXT1lKX1yZXR1cm4gYS50b1N0cmluZz0oKT0+ZSxGci5zZXJ2aWNlSWRzLnNldChlLGEpLGEsMX0oVHI9RnI9RnJ8fHt9KS5zZXJ2aWNlSWRzPW5ldyBNYXAsVHIuRElfVEFSR0VUPSIkZGkkdGFyZ2V0IixUci5ESV9ERVBFTkRFTkNJRVM9IiRkaSRkZXBlbmRlbmNpZXMiLFRyLmdldFNlcnZpY2VEZXBlbmRlbmNpZXM9ZnVuY3Rpb24oZSl7cmV0dXJuIGVbVHIuRElfREVQRU5ERU5DSUVTXXx8W119LFdyKCJpbnN0YW50aWF0aW9uU2VydmljZSIpLFdyKCJsb2dTZXJ2aWNlIiksV3IoImxvZ2dlclNlcnZpY2UiKSwoZT1Ccj1Ccnx8e30pW2UuVHJhY2U9MF09IlRyYWNlIixlW2UuRGVidWc9MV09IkRlYnVnIixlW2UuSW5mbz0yXT0iSW5mbyIsZVtlLldhcm5pbmc9M109Ildhcm5pbmciLGVbZS5FcnJvcj00XT0iRXJyb3IiLGVbZS5Dcml0aWNhbD01XT0iQ3JpdGljYWwiLGVbZS5PZmY9Nl09Ik9mZiI7Y29uc3QgenI9QnIuSW5mbztjbGFzcyBqciBleHRlbmRzIFN7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMubGV2ZWw9enIsdGhpcy5fb25EaWRDaGFuZ2VMb2dMZXZlbD10aGlzLl9yZWdpc3RlcihuZXcgWCksdGhpcy5vbkRpZENoYW5nZUxvZ0xldmVsPXRoaXMuX29uRGlkQ2hhbmdlTG9nTGV2ZWwuZXZlbnR9c2V0TGV2ZWwoZSl7dGhpcy5sZXZlbCE9PWUmJih0aGlzLmxldmVsPWUsdGhpcy5fb25EaWRDaGFuZ2VMb2dMZXZlbC5maXJlKHRoaXMubGV2ZWwpKX1nZXRMZXZlbCgpe3JldHVybiB0aGlzLmxldmVsfX1jbGFzcyAkciBleHRlbmRzIGpye2NvbnN0cnVjdG9yKGU9enIpe3N1cGVyKCksdGhpcy5zZXRMZXZlbChlKX10cmFjZShlLC4uLnQpe3RoaXMuZ2V0TGV2ZWwoKTw9QnIuVHJhY2UmJmNvbnNvbGUubG9nKCIlY1RSQUNFIiwiY29sb3I6ICM4ODgiLGUsLi4udCl9ZGVidWcoZSwuLi50KXt0aGlzLmdldExldmVsKCk8PUJyLkRlYnVnJiZjb25zb2xlLmxvZygiJWNERUJVRyIsImJhY2tncm91bmQ6ICNlZWU7IGNvbG9yOiAjODg4IixlLC4uLnQpfWluZm8oZSwuLi50KXt0aGlzLmdldExldmVsKCk8PUJyLkluZm8mJmNvbnNvbGUubG9nKCIlYyBJTkZPIiwiY29sb3I6ICMzM2YiLGUsLi4udCl9d2FybihlLC4uLnQpe3RoaXMuZ2V0TGV2ZWwoKTw9QnIuV2FybmluZyYmY29uc29sZS5sb2coIiVjIFdBUk4iLCJjb2xvcjogIzk5MyIsZSwuLi50KX1lcnJvcihlLC4uLnQpe3RoaXMuZ2V0TGV2ZWwoKTw9QnIuRXJyb3ImJmNvbnNvbGUubG9nKCIlYyAgRVJSIiwiY29sb3I6ICNmMzMiLGUsLi4udCl9Y3JpdGljYWwoZSwuLi50KXt0aGlzLmdldExldmVsKCk8PUJyLkNyaXRpY2FsJiZjb25zb2xlLmxvZygiJWNDUklUSSIsImJhY2tncm91bmQ6ICNmMzM7IGNvbG9yOiB3aGl0ZSIsZSwuLi50KX1kaXNwb3NlKCl7fWZsdXNoKCl7fX1jbGFzcyBHcntzdGF0aWMgY2hvcmQoZSx0KXtyZXR1cm4oZXwoNjU1MzUmdCk8PDE2Pj4+MCk+Pj4wfX1mdW5jdGlvbiBKcihlLHQscixuLGkpe3JldHVybiBmdW5jdGlvbihlLHQscixuKXtpZigwPT09cilyZXR1cm4gMTt2YXIgaT10LmNoYXJDb2RlQXQoci0xKTtpZigwIT09ZS5nZXQoaSkpcmV0dXJuIDE7aWYoMTM9PT1pfHwxMD09PWkpcmV0dXJuIDE7aWYoMDxuKXtpPXQuY2hhckNvZGVBdChyKTtpZigwIT09ZS5nZXQoaSkpcmV0dXJuIDF9cmV0dXJufShlLHQsbixpKSYmZnVuY3Rpb24oZSx0LHIsbixpKXtpZihuK2k9PT1yKXJldHVybiAxO2lmKHI9dC5jaGFyQ29kZUF0KG4raSksMCE9PWUuZ2V0KHIpKXJldHVybiAxO2lmKDEzPT09cnx8MTA9PT1yKXJldHVybiAxO2lmKDA8aSl7cj10LmNoYXJDb2RlQXQobitpLTEpO2lmKDAhPT1lLmdldChyKSlyZXR1cm4gMX1yZXR1cm59KGUsdCxyLG4saSl9R3IuQ3RybENtZD0yMDQ4LEdyLlNoaWZ0PTEwMjQsR3IuQWx0PTUxMixHci5XaW5DdHJsPTI1NjtjbGFzcyBRcntjb25zdHJ1Y3RvcihlLHQpe3RoaXMuX3dvcmRTZXBhcmF0b3JzPWUsdGhpcy5fc2VhcmNoUmVnZXg9dCx0aGlzLl9wcmV2TWF0Y2hTdGFydEluZGV4PS0xLHRoaXMuX3ByZXZNYXRjaExlbmd0aD0wfXJlc2V0KGUpe3RoaXMuX3NlYXJjaFJlZ2V4Lmxhc3RJbmRleD1lLHRoaXMuX3ByZXZNYXRjaFN0YXJ0SW5kZXg9LTEsdGhpcy5fcHJldk1hdGNoTGVuZ3RoPTB9bmV4dChlKXt2YXIgdD1lLmxlbmd0aDtsZXQgcjtkb3tpZih0aGlzLl9wcmV2TWF0Y2hTdGFydEluZGV4K3RoaXMuX3ByZXZNYXRjaExlbmd0aD09PXQpcmV0dXJuIG51bGw7aWYoIShyPXRoaXMuX3NlYXJjaFJlZ2V4LmV4ZWMoZSkpKXJldHVybiBudWxsO3ZhciBuPXIuaW5kZXgsaT1yWzBdLmxlbmd0aDtpZihuIT09dGhpcy5fcHJldk1hdGNoU3RhcnRJbmRleHx8aSE9PXRoaXMuX3ByZXZNYXRjaExlbmd0aCl7aWYodGhpcy5fcHJldk1hdGNoU3RhcnRJbmRleD1uLHRoaXMuX3ByZXZNYXRjaExlbmd0aD1pLCF0aGlzLl93b3JkU2VwYXJhdG9yc3x8SnIodGhpcy5fd29yZFNlcGFyYXRvcnMsZSx0LG4saSkpcmV0dXJuIHJ9ZWxzZXtpZigwIT09aSlyZXR1cm4gbnVsbDs2NTUzNTxmdW5jdGlvbihlLHQscil7dmFyIG49ZS5jaGFyQ29kZUF0KHIpO2lmKGxlKG4pJiZyKzE8dCl7dD1lLmNoYXJDb2RlQXQocisxKTtpZig1NjMyMDw9KGU9dCkmJmU8PTU3MzQzKXJldHVybiB0LTU2MzIwKyhuLTU1Mjk2PDwxMCkrNjU1MzZ9cmV0dXJuIG59KGUsdCx0aGlzLl9zZWFyY2hSZWdleC5sYXN0SW5kZXgpP3RoaXMuX3NlYXJjaFJlZ2V4Lmxhc3RJbmRleCs9Mjp0aGlzLl9zZWFyY2hSZWdleC5sYXN0SW5kZXgrPTF9fXdoaWxlKHIpO3JldHVybiBudWxsfX1jbGFzcyBZcntzdGF0aWMgY29tcHV0ZVVuaWNvZGVIaWdobGlnaHRzKHQsdSxlKXt2YXIgYz1lP2Uuc3RhcnRMaW5lTnVtYmVyOjEsZD1lP2UuZW5kTGluZU51bWJlcjp0LmdldExpbmVDb3VudCgpO2NvbnN0IG49bmV3IFpyKHUpO3ZhciBpLGU9bi5nZXRDYW5kaWRhdGVDb2RlUG9pbnRzKCk7bGV0IHI7cj0iYWxsTm9uQmFzaWNBc2NpaSI9PT1lP25ldyBSZWdFeHAoIlteXFx0XFxuXFxyXFx4MjAtXFx4N0VdIiwiZyIpOm5ldyBSZWdFeHAoIiIrZnVuY3Rpb24oZSl7ZT1gWyR7bmUoZS5tYXAoZT0+U3RyaW5nLmZyb21Db2RlUG9pbnQoZSkpLmpvaW4oIiIpKX1dYDtyZXR1cm4gZX0oQXJyYXkuZnJvbShlKSksImciKTtjb25zdCBhPW5ldyBRcihudWxsLHIpLG89W107bGV0IHM9ITEsZj0wLG09MCxnPTA7ZTpmb3IobGV0IHI9YyxlPWQ7cjw9ZTtyKyspe2NvbnN0IGg9dC5nZXRMaW5lQ29udGVudChyKTt2YXIgYj1oLmxlbmd0aDthLnJlc2V0KDApO2Rve2lmKGk9YS5uZXh0KGgpKXtsZXQgZT1pLmluZGV4LHQ9aS5pbmRleCtpWzBdLmxlbmd0aDswPGUmJmxlKGguY2hhckNvZGVBdChlLTEpKSYmZS0tLHQrMTxiJiZsZShoLmNoYXJDb2RlQXQodC0xKSkmJnQrKzt2YXIgbD1oLnN1YnN0cmluZyhlLHQpLGw9bi5zaG91bGRIaWdobGlnaHROb25CYXNpY0FTQ0lJKGwpO2lmKDAhPT1sKXtpZigzPT09bClmKys7ZWxzZSBpZigyPT09bCltKys7ZWxzZXtpZigxIT09bCl0aHJvdyBsPXZvaWQgMCxbbD0iVW5yZWFjaGFibGUiXT1bXSxuZXcgRXJyb3IobCk7ZysrfWlmKDFlMzw9by5sZW5ndGgpe3M9ITA7YnJlYWsgZX1vLnB1c2gobmV3IHAocixlKzEscix0KzEpKX19fXdoaWxlKGkpfXJldHVybntyYW5nZXM6byxoYXNNb3JlOnMsYW1iaWd1b3VzQ2hhcmFjdGVyQ291bnQ6ZixpbnZpc2libGVDaGFyYWN0ZXJDb3VudDptLG5vbkJhc2ljQXNjaWlDaGFyYWN0ZXJDb3VudDpnfX1zdGF0aWMgY29tcHV0ZVVuaWNvZGVIaWdobGlnaHRSZWFzb24oZSx0KXtjb25zdCByPW5ldyBacih0KTtzd2l0Y2goci5zaG91bGRIaWdobGlnaHROb25CYXNpY0FTQ0lJKGUpKXtjYXNlIDA6cmV0dXJuIG51bGw7Y2FzZSAyOnJldHVybntraW5kOjF9O2Nhc2UgMzp7Y29uc3QgYT1lLmNvZGVQb2ludEF0KDApO3ZhciBuPXIuYW1iaWd1b3VzQ2hhcmFjdGVycy5nZXRQcmltYXJ5Q29uZnVzYWJsZShhKSxpPWhlLmdldExvY2FsZXMoKS5maWx0ZXIoZT0+IWhlLmdldEluc3RhbmNlKG5ldyBTZXQoWy4uLnQuYWxsb3dlZExvY2FsZXMsZV0pKS5pc0FtYmlndW91cyhhKSk7cmV0dXJue2tpbmQ6MCxjb25mdXNhYmxlV2l0aDpTdHJpbmcuZnJvbUNvZGVQb2ludChuKSxub3RBbWJpZ3VvdXNJbkxvY2FsZXM6aX19Y2FzZSAxOnJldHVybntraW5kOjJ9fX19Y2xhc3MgWnJ7Y29uc3RydWN0b3IoZSl7dGhpcy5vcHRpb25zPWUsdGhpcy5hbGxvd2VkQ29kZVBvaW50cz1uZXcgU2V0KGUuYWxsb3dlZENvZGVQb2ludHMpLHRoaXMuYW1iaWd1b3VzQ2hhcmFjdGVycz1oZS5nZXRJbnN0YW5jZShuZXcgU2V0KGUuYWxsb3dlZExvY2FsZXMpKX1nZXRDYW5kaWRhdGVDb2RlUG9pbnRzKCl7aWYodGhpcy5vcHRpb25zLm5vbkJhc2ljQVNDSUkpcmV0dXJuImFsbE5vbkJhc2ljQXNjaWkiO2NvbnN0IGU9bmV3IFNldDtpZih0aGlzLm9wdGlvbnMuaW52aXNpYmxlQ2hhcmFjdGVycylmb3IoY29uc3QgdCBvZiB1ZS5jb2RlUG9pbnRzKWUuYWRkKHQpO2lmKHRoaXMub3B0aW9ucy5hbWJpZ3VvdXNDaGFyYWN0ZXJzKWZvcihjb25zdCByIG9mIHRoaXMuYW1iaWd1b3VzQ2hhcmFjdGVycy5nZXRDb25mdXNhYmxlQ29kZVBvaW50cygpKWUuYWRkKHIpO2Zvcihjb25zdCBuIG9mIHRoaXMuYWxsb3dlZENvZGVQb2ludHMpZS5kZWxldGUobik7cmV0dXJuIGV9c2hvdWxkSGlnaGxpZ2h0Tm9uQmFzaWNBU0NJSShlKXt2YXIgdD1lLmNvZGVQb2ludEF0KDApO2lmKHRoaXMuYWxsb3dlZENvZGVQb2ludHMuaGFzKHQpKXJldHVybiAwO2lmKHRoaXMub3B0aW9ucy5ub25CYXNpY0FTQ0lJKXJldHVybiAxO2lmKHRoaXMub3B0aW9ucy5pbnZpc2libGVDaGFyYWN0ZXJzJiYoISgiICI9PT1lfHwiXG4iPT09ZXx8Ilx0Ij09PWUpJiZ1ZS5pc0ludmlzaWJsZUNoYXJhY3Rlcih0KSkpcmV0dXJuIDI7cmV0dXJuIHRoaXMub3B0aW9ucy5hbWJpZ3VvdXNDaGFyYWN0ZXJzJiZ0aGlzLmFtYmlndW91c0NoYXJhY3RlcnMuaXNBbWJpZ3VvdXModCk/MzowfX12YXIgWHI9ZnVuY3Rpb24oZSxvLHMsbCl7cmV0dXJuIG5ldyhzPXN8fFByb21pc2UpKGZ1bmN0aW9uKHIsdCl7ZnVuY3Rpb24gbihlKXt0cnl7YShsLm5leHQoZSkpfWNhdGNoKGUpe3QoZSl9fWZ1bmN0aW9uIGkoZSl7dHJ5e2EobC50aHJvdyhlKSl9Y2F0Y2goZSl7dChlKX19ZnVuY3Rpb24gYShlKXt2YXIgdDtlLmRvbmU/cihlLnZhbHVlKTooKHQ9ZS52YWx1ZSlpbnN0YW5jZW9mIHM/dDpuZXcgcyhmdW5jdGlvbihlKXtlKHQpfSkpLnRoZW4obixpKX1hKChsPWwuYXBwbHkoZSxvfHxbXSkpLm5leHQoKSl9KX07Y2xhc3MgZW4gZXh0ZW5kcyBjbGFzc3tjb25zdHJ1Y3RvcihlLHQscixuKXt0aGlzLl91cmk9ZSx0aGlzLl9saW5lcz10LHRoaXMuX2VvbD1yLHRoaXMuX3ZlcnNpb25JZD1uLHRoaXMuX2xpbmVTdGFydHM9bnVsbCx0aGlzLl9jYWNoZWRUZXh0VmFsdWU9bnVsbH1kaXNwb3NlKCl7dGhpcy5fbGluZXMubGVuZ3RoPTB9Z2V0IHZlcnNpb24oKXtyZXR1cm4gdGhpcy5fdmVyc2lvbklkfWdldFRleHQoKXtyZXR1cm4gbnVsbD09PXRoaXMuX2NhY2hlZFRleHRWYWx1ZSYmKHRoaXMuX2NhY2hlZFRleHRWYWx1ZT10aGlzLl9saW5lcy5qb2luKHRoaXMuX2VvbCkpLHRoaXMuX2NhY2hlZFRleHRWYWx1ZX1vbkV2ZW50cyhlKXtlLmVvbCYmZS5lb2whPT10aGlzLl9lb2wmJih0aGlzLl9lb2w9ZS5lb2wsdGhpcy5fbGluZVN0YXJ0cz1udWxsKTtmb3IoY29uc3QgdCBvZiBlLmNoYW5nZXMpdGhpcy5fYWNjZXB0RGVsZXRlUmFuZ2UodC5yYW5nZSksdGhpcy5fYWNjZXB0SW5zZXJ0VGV4dChuZXcgc3QodC5yYW5nZS5zdGFydExpbmVOdW1iZXIsdC5yYW5nZS5zdGFydENvbHVtbiksdC50ZXh0KTt0aGlzLl92ZXJzaW9uSWQ9ZS52ZXJzaW9uSWQsdGhpcy5fY2FjaGVkVGV4dFZhbHVlPW51bGx9X2Vuc3VyZUxpbmVTdGFydHMoKXtpZighdGhpcy5fbGluZVN0YXJ0cyl7dmFyIHQ9dGhpcy5fZW9sLmxlbmd0aCxyPXRoaXMuX2xpbmVzLmxlbmd0aDtjb25zdCBuPW5ldyBVaW50MzJBcnJheShyKTtmb3IobGV0IGU9MDtlPHI7ZSsrKW5bZV09dGhpcy5fbGluZXNbZV0ubGVuZ3RoK3Q7dGhpcy5fbGluZVN0YXJ0cz1uZXcgd3Qobil9fV9zZXRMaW5lVGV4dChlLHQpe3RoaXMuX2xpbmVzW2VdPXQsdGhpcy5fbGluZVN0YXJ0cyYmdGhpcy5fbGluZVN0YXJ0cy5zZXRWYWx1ZShlLHRoaXMuX2xpbmVzW2VdLmxlbmd0aCt0aGlzLl9lb2wubGVuZ3RoKX1fYWNjZXB0RGVsZXRlUmFuZ2UoZSl7aWYoZS5zdGFydExpbmVOdW1iZXI9PT1lLmVuZExpbmVOdW1iZXIpcmV0dXJuIGUuc3RhcnRDb2x1bW49PT1lLmVuZENvbHVtbj92b2lkIDA6dm9pZCB0aGlzLl9zZXRMaW5lVGV4dChlLnN0YXJ0TGluZU51bWJlci0xLHRoaXMuX2xpbmVzW2Uuc3RhcnRMaW5lTnVtYmVyLTFdLnN1YnN0cmluZygwLGUuc3RhcnRDb2x1bW4tMSkrdGhpcy5fbGluZXNbZS5zdGFydExpbmVOdW1iZXItMV0uc3Vic3RyaW5nKGUuZW5kQ29sdW1uLTEpKTt0aGlzLl9zZXRMaW5lVGV4dChlLnN0YXJ0TGluZU51bWJlci0xLHRoaXMuX2xpbmVzW2Uuc3RhcnRMaW5lTnVtYmVyLTFdLnN1YnN0cmluZygwLGUuc3RhcnRDb2x1bW4tMSkrdGhpcy5fbGluZXNbZS5lbmRMaW5lTnVtYmVyLTFdLnN1YnN0cmluZyhlLmVuZENvbHVtbi0xKSksdGhpcy5fbGluZXMuc3BsaWNlKGUuc3RhcnRMaW5lTnVtYmVyLGUuZW5kTGluZU51bWJlci1lLnN0YXJ0TGluZU51bWJlciksdGhpcy5fbGluZVN0YXJ0cyYmdGhpcy5fbGluZVN0YXJ0cy5yZW1vdmVWYWx1ZXMoZS5zdGFydExpbmVOdW1iZXIsZS5lbmRMaW5lTnVtYmVyLWUuc3RhcnRMaW5lTnVtYmVyKX1fYWNjZXB0SW5zZXJ0VGV4dCh0LGUpe2lmKDAhPT1lLmxlbmd0aCl7Y29uc3Qgcj1lLnNwbGl0KC9cclxufFxyfFxuLyk7aWYoMSE9PXIubGVuZ3RoKXtyW3IubGVuZ3RoLTFdKz10aGlzLl9saW5lc1t0LmxpbmVOdW1iZXItMV0uc3Vic3RyaW5nKHQuY29sdW1uLTEpLHRoaXMuX3NldExpbmVUZXh0KHQubGluZU51bWJlci0xLHRoaXMuX2xpbmVzW3QubGluZU51bWJlci0xXS5zdWJzdHJpbmcoMCx0LmNvbHVtbi0xKStyWzBdKTtjb25zdCBuPW5ldyBVaW50MzJBcnJheShyLmxlbmd0aC0xKTtmb3IobGV0IGU9MTtlPHIubGVuZ3RoO2UrKyl0aGlzLl9saW5lcy5zcGxpY2UodC5saW5lTnVtYmVyK2UtMSwwLHJbZV0pLG5bZS0xXT1yW2VdLmxlbmd0aCt0aGlzLl9lb2wubGVuZ3RoO3RoaXMuX2xpbmVTdGFydHMmJnRoaXMuX2xpbmVTdGFydHMuaW5zZXJ0VmFsdWVzKHQubGluZU51bWJlcixuKX1lbHNlIHRoaXMuX3NldExpbmVUZXh0KHQubGluZU51bWJlci0xLHRoaXMuX2xpbmVzW3QubGluZU51bWJlci0xXS5zdWJzdHJpbmcoMCx0LmNvbHVtbi0xKStyWzBdK3RoaXMuX2xpbmVzW3QubGluZU51bWJlci0xXS5zdWJzdHJpbmcodC5jb2x1bW4tMSkpfX19e2dldCB1cmkoKXtyZXR1cm4gdGhpcy5fdXJpfWdldCBlb2woKXtyZXR1cm4gdGhpcy5fZW9sfWdldFZhbHVlKCl7cmV0dXJuIHRoaXMuZ2V0VGV4dCgpfWdldExpbmVzQ29udGVudCgpe3JldHVybiB0aGlzLl9saW5lcy5zbGljZSgwKX1nZXRMaW5lQ291bnQoKXtyZXR1cm4gdGhpcy5fbGluZXMubGVuZ3RofWdldExpbmVDb250ZW50KGUpe3JldHVybiB0aGlzLl9saW5lc1tlLTFdfWdldFdvcmRBdFBvc2l0aW9uKGUsdCl7dD1TdChlLmNvbHVtbixmdW5jdGlvbih0KXtsZXQgcj12dDtpZih0JiZ0IGluc3RhbmNlb2YgUmVnRXhwKWlmKHQuZ2xvYmFsKXI9dDtlbHNle2xldCBlPSJnIjt0Lmlnbm9yZUNhc2UmJihlKz0iaSIpLHQubXVsdGlsaW5lJiYoZSs9Im0iKSx0LnVuaWNvZGUmJihlKz0idSIpLHI9bmV3IFJlZ0V4cCh0LnNvdXJjZSxlKX1yZXR1cm4gci5sYXN0SW5kZXg9MCxyfSh0KSx0aGlzLl9saW5lc1tlLmxpbmVOdW1iZXItMV0sMCk7cmV0dXJuIHQ/bmV3IHAoZS5saW5lTnVtYmVyLHQuc3RhcnRDb2x1bW4sZS5saW5lTnVtYmVyLHQuZW5kQ29sdW1uKTpudWxsfXdvcmRzKHQpe2NvbnN0IHI9dGhpcy5fbGluZXMsbj10aGlzLl93b3JkZW5pemUuYmluZCh0aGlzKTtsZXQgaT0wLGE9IiIsbz0wLHM9W107cmV0dXJueypbU3ltYm9sLml0ZXJhdG9yXSgpe2Zvcig7OylpZihvPHMubGVuZ3RoKXt2YXIgZT1hLnN1YnN0cmluZyhzW29dLnN0YXJ0LHNbb10uZW5kKTtvKz0xLHlpZWxkIGV9ZWxzZXtpZighKGk8ci5sZW5ndGgpKWJyZWFrO2E9cltpXSxzPW4oYSx0KSxvPTAsaSs9MX19fX1nZXRMaW5lV29yZHMoZSx0KXtjb25zdCByPXRoaXMuX2xpbmVzW2UtMV07Y29uc3Qgbj1bXTtmb3IoY29uc3QgaSBvZiB0aGlzLl93b3JkZW5pemUocix0KSluLnB1c2goe3dvcmQ6ci5zdWJzdHJpbmcoaS5zdGFydCxpLmVuZCksc3RhcnRDb2x1bW46aS5zdGFydCsxLGVuZENvbHVtbjppLmVuZCsxfSk7cmV0dXJuIG59X3dvcmRlbml6ZShlLHQpe2NvbnN0IHI9W107dmFyIG47Zm9yKHQubGFzdEluZGV4PTA7KG49dC5leGVjKGUpKSYmMCE9PW5bMF0ubGVuZ3RoOylyLnB1c2goe3N0YXJ0Om4uaW5kZXgsZW5kOm4uaW5kZXgrblswXS5sZW5ndGh9KTtyZXR1cm4gcn1nZXRWYWx1ZUluUmFuZ2UoZSl7aWYoKGU9dGhpcy5fdmFsaWRhdGVSYW5nZShlKSkuc3RhcnRMaW5lTnVtYmVyPT09ZS5lbmRMaW5lTnVtYmVyKXJldHVybiB0aGlzLl9saW5lc1tlLnN0YXJ0TGluZU51bWJlci0xXS5zdWJzdHJpbmcoZS5zdGFydENvbHVtbi0xLGUuZW5kQ29sdW1uLTEpO3ZhciB0PXRoaXMuX2VvbCxyPWUuc3RhcnRMaW5lTnVtYmVyLTEsbj1lLmVuZExpbmVOdW1iZXItMTtjb25zdCBpPVtdO2kucHVzaCh0aGlzLl9saW5lc1tyXS5zdWJzdHJpbmcoZS5zdGFydENvbHVtbi0xKSk7Zm9yKGxldCBlPTErcjtlPG47ZSsrKWkucHVzaCh0aGlzLl9saW5lc1tlXSk7cmV0dXJuIGkucHVzaCh0aGlzLl9saW5lc1tuXS5zdWJzdHJpbmcoMCxlLmVuZENvbHVtbi0xKSksaS5qb2luKHQpfW9mZnNldEF0KGUpe3JldHVybiBlPXRoaXMuX3ZhbGlkYXRlUG9zaXRpb24oZSksdGhpcy5fZW5zdXJlTGluZVN0YXJ0cygpLHRoaXMuX2xpbmVTdGFydHMuZ2V0UHJlZml4U3VtKGUubGluZU51bWJlci0yKSsoZS5jb2x1bW4tMSl9cG9zaXRpb25BdChlKXtlPU1hdGguZmxvb3IoZSksZT1NYXRoLm1heCgwLGUpLHRoaXMuX2Vuc3VyZUxpbmVTdGFydHMoKTt2YXIgZT10aGlzLl9saW5lU3RhcnRzLmdldEluZGV4T2YoZSksdD10aGlzLl9saW5lc1tlLmluZGV4XS5sZW5ndGg7cmV0dXJue2xpbmVOdW1iZXI6MStlLmluZGV4LGNvbHVtbjoxK01hdGgubWluKGUucmVtYWluZGVyLHQpfX1fdmFsaWRhdGVSYW5nZShlKXt2YXIgdD10aGlzLl92YWxpZGF0ZVBvc2l0aW9uKHtsaW5lTnVtYmVyOmUuc3RhcnRMaW5lTnVtYmVyLGNvbHVtbjplLnN0YXJ0Q29sdW1ufSkscj10aGlzLl92YWxpZGF0ZVBvc2l0aW9uKHtsaW5lTnVtYmVyOmUuZW5kTGluZU51bWJlcixjb2x1bW46ZS5lbmRDb2x1bW59KTtyZXR1cm4gdC5saW5lTnVtYmVyIT09ZS5zdGFydExpbmVOdW1iZXJ8fHQuY29sdW1uIT09ZS5zdGFydENvbHVtbnx8ci5saW5lTnVtYmVyIT09ZS5lbmRMaW5lTnVtYmVyfHxyLmNvbHVtbiE9PWUuZW5kQ29sdW1uP3tzdGFydExpbmVOdW1iZXI6dC5saW5lTnVtYmVyLHN0YXJ0Q29sdW1uOnQuY29sdW1uLGVuZExpbmVOdW1iZXI6ci5saW5lTnVtYmVyLGVuZENvbHVtbjpyLmNvbHVtbn06ZX1fdmFsaWRhdGVQb3NpdGlvbihlKXtpZighc3QuaXNJUG9zaXRpb24oZSkpdGhyb3cgbmV3IEVycm9yKCJiYWQgcG9zaXRpb24iKTtsZXR7bGluZU51bWJlcjp0LGNvbHVtbjpyfT1lLG49ITE7dmFyIGk7cmV0dXJuIHQ8MT8odD0xLHI9MSxuPSEwKTp0PnRoaXMuX2xpbmVzLmxlbmd0aD8odD10aGlzLl9saW5lcy5sZW5ndGgscj10aGlzLl9saW5lc1t0LTFdLmxlbmd0aCsxLG49ITApOihpPXRoaXMuX2xpbmVzW3QtMV0ubGVuZ3RoKzEscjwxPyhyPTEsbj0hMCk6cj5pJiYocj1pLG49ITApKSxuP3tsaW5lTnVtYmVyOnQsY29sdW1uOnJ9OmV9fWNsYXNzIHRue2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5faG9zdD1lLHRoaXMuX21vZGVscz1PYmplY3QuY3JlYXRlKG51bGwpLHRoaXMuX2ZvcmVpZ25Nb2R1bGVGYWN0b3J5PXQsdGhpcy5fZm9yZWlnbk1vZHVsZT1udWxsfWRpc3Bvc2UoKXt0aGlzLl9tb2RlbHM9T2JqZWN0LmNyZWF0ZShudWxsKX1fZ2V0TW9kZWwoZSl7cmV0dXJuIHRoaXMuX21vZGVsc1tlXX1fZ2V0TW9kZWxzKCl7Y29uc3QgdD1bXTtyZXR1cm4gT2JqZWN0LmtleXModGhpcy5fbW9kZWxzKS5mb3JFYWNoKGU9PnQucHVzaCh0aGlzLl9tb2RlbHNbZV0pKSx0fWFjY2VwdE5ld01vZGVsKGUpe3RoaXMuX21vZGVsc1tlLnVybF09bmV3IGVuKFllLnBhcnNlKGUudXJsKSxlLmxpbmVzLGUuRU9MLGUudmVyc2lvbklkKX1hY2NlcHRNb2RlbENoYW5nZWQoZSx0KXtpZih0aGlzLl9tb2RlbHNbZV0pe2NvbnN0IHI9dGhpcy5fbW9kZWxzW2VdO3Iub25FdmVudHModCl9fWFjY2VwdFJlbW92ZWRNb2RlbChlKXt0aGlzLl9tb2RlbHNbZV0mJmRlbGV0ZSB0aGlzLl9tb2RlbHNbZV19Y29tcHV0ZVVuaWNvZGVIaWdobGlnaHRzKHQscixuKXtyZXR1cm4gWHIodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe3ZhciBlPXRoaXMuX2dldE1vZGVsKHQpO3JldHVybiBlP1lyLmNvbXB1dGVVbmljb2RlSGlnaGxpZ2h0cyhlLHIsbik6e3JhbmdlczpbXSxoYXNNb3JlOiExLGFtYmlndW91c0NoYXJhY3RlckNvdW50OjAsaW52aXNpYmxlQ2hhcmFjdGVyQ291bnQ6MCxub25CYXNpY0FzY2lpQ2hhcmFjdGVyQ291bnQ6MH19KX1jb21wdXRlRGlmZihhLG8scyxsKXtyZXR1cm4gWHIodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe2NvbnN0IGU9dGhpcy5fZ2V0TW9kZWwoYSksdD10aGlzLl9nZXRNb2RlbChvKTtpZighZXx8IXQpcmV0dXJuIG51bGw7dmFyIHI9ZS5nZXRMaW5lc0NvbnRlbnQoKSxuPXQuZ2V0TGluZXNDb250ZW50KCk7Y29uc3QgaT1uZXcgZnQocixuLHtzaG91bGRDb21wdXRlQ2hhckNoYW5nZXM6ITAsc2hvdWxkUG9zdFByb2Nlc3NDaGFyQ2hhbmdlczohMCxzaG91bGRJZ25vcmVUcmltV2hpdGVzcGFjZTpzLHNob3VsZE1ha2VQcmV0dHlEaWZmOiEwLG1heENvbXB1dGF0aW9uVGltZTpsfSk7cj1pLmNvbXB1dGVEaWZmKCksbj0hKDA8ci5jaGFuZ2VzLmxlbmd0aCkmJnRoaXMuX21vZGVsc0FyZUlkZW50aWNhbChlLHQpO3JldHVybntxdWl0RWFybHk6ci5xdWl0RWFybHksaWRlbnRpY2FsOm4sY2hhbmdlczpyLmNoYW5nZXN9fSl9X21vZGVsc0FyZUlkZW50aWNhbCh0LHIpe3ZhciBuPXQuZ2V0TGluZUNvdW50KCk7aWYobiE9PXIuZ2V0TGluZUNvdW50KCkpcmV0dXJuITE7Zm9yKGxldCBlPTE7ZTw9bjtlKyspaWYodC5nZXRMaW5lQ29udGVudChlKSE9PXIuZ2V0TGluZUNvbnRlbnQoZSkpcmV0dXJuITE7cmV0dXJuITB9Y29tcHV0ZU1vcmVNaW5pbWFsRWRpdHMoZCxmKXtyZXR1cm4gWHIodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe2NvbnN0IGU9dGhpcy5fZ2V0TW9kZWwoZCk7aWYoIWUpcmV0dXJuIGY7Y29uc3QgdD1bXTtsZXQgcj12b2lkIDA7Zm9yKHZhcntyYW5nZTpuLHRleHQ6aSxlb2w6YX1vZiBmPWYuc2xpY2UoMCkuc29ydCgoZSx0KT0+e3JldHVybiBlLnJhbmdlJiZ0LnJhbmdlP3AuY29tcGFyZVJhbmdlc1VzaW5nU3RhcnRzKGUucmFuZ2UsdC5yYW5nZSk6KGUucmFuZ2U/MDoxKS0odC5yYW5nZT8wOjEpfSkpaWYoIm51bWJlciI9PXR5cGVvZiBhJiYocj1hKSwhcC5pc0VtcHR5KG4pfHxpKXthPWUuZ2V0VmFsdWVJblJhbmdlKG4pO2lmKGEhPT0oaT1pLnJlcGxhY2UoL1xyXG58XG58XHIvZyxlLmVvbCkpKWlmKE1hdGgubWF4KGkubGVuZ3RoLGEubGVuZ3RoKT50bi5fZGlmZkxpbWl0KXQucHVzaCh7cmFuZ2U6bix0ZXh0Oml9KTtlbHNle2E9YSx1PWksYz0hMTt2YXIgYT1uZXcgQWUobmV3IFNlKGEpLG5ldyBTZSh1KSkuQ29tcHV0ZURpZmYoYykuY2hhbmdlcyxvPWUub2Zmc2V0QXQocC5saWZ0KG4pLmdldFN0YXJ0UG9zaXRpb24oKSk7Zm9yKGNvbnN0IGggb2YgYSl7dmFyIHM9ZS5wb3NpdGlvbkF0KG8raC5vcmlnaW5hbFN0YXJ0KSxsPWUucG9zaXRpb25BdChvK2gub3JpZ2luYWxTdGFydCtoLm9yaWdpbmFsTGVuZ3RoKSxzPXt0ZXh0Omkuc3Vic3RyKGgubW9kaWZpZWRTdGFydCxoLm1vZGlmaWVkTGVuZ3RoKSxyYW5nZTp7c3RhcnRMaW5lTnVtYmVyOnMubGluZU51bWJlcixzdGFydENvbHVtbjpzLmNvbHVtbixlbmRMaW5lTnVtYmVyOmwubGluZU51bWJlcixlbmRDb2x1bW46bC5jb2x1bW59fTtlLmdldFZhbHVlSW5SYW5nZShzLnJhbmdlKSE9PXMudGV4dCYmdC5wdXNoKHMpfX19dmFyIHUsYztyZXR1cm4ibnVtYmVyIj09dHlwZW9mIHImJnQucHVzaCh7ZW9sOnIsdGV4dDoiIixyYW5nZTp7c3RhcnRMaW5lTnVtYmVyOjAsc3RhcnRDb2x1bW46MCxlbmRMaW5lTnVtYmVyOjAsZW5kQ29sdW1uOjB9fSksdH0pfWNvbXB1dGVMaW5rcyh0KXtyZXR1cm4gWHIodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe3ZhciBlPXRoaXMuX2dldE1vZGVsKHQpO3JldHVybiBlPyhlPWUpJiYiZnVuY3Rpb24iPT10eXBlb2YgZS5nZXRMaW5lQ291bnQmJiJmdW5jdGlvbiI9PXR5cGVvZiBlLmdldExpbmVDb250ZW50P3h0LmNvbXB1dGVMaW5rcyhlKTpbXTpudWxsfSl9dGV4dHVhbFN1Z2dlc3QobyxzLGwsaCl7cmV0dXJuIFhyKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtjb25zdCBlPW5ldyBVKCEwKTt2YXIgdD1uZXcgUmVnRXhwKGwsaCk7Y29uc3Qgcj1uZXcgU2V0O2U6Zm9yKHZhciBuIG9mIG8pe2NvbnN0IGE9dGhpcy5fZ2V0TW9kZWwobik7aWYoYSlmb3IodmFyIGkgb2YgYS53b3Jkcyh0KSlpZihpIT09cyYmaXNOYU4oTnVtYmVyKGkpKSYmKHIuYWRkKGkpLHIuc2l6ZT50bi5fc3VnZ2VzdGlvbnNMaW1pdCkpYnJlYWsgZX1yZXR1cm57d29yZHM6QXJyYXkuZnJvbShyKSxkdXJhdGlvbjplLmVsYXBzZWQoKX19KX1jb21wdXRlV29yZFJhbmdlcyh0LGEsbyxzKXtyZXR1cm4gWHIodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe2NvbnN0IGU9dGhpcy5fZ2V0TW9kZWwodCk7aWYoIWUpcmV0dXJuIE9iamVjdC5jcmVhdGUobnVsbCk7dmFyIHI9bmV3IFJlZ0V4cChvLHMpO2NvbnN0IG49T2JqZWN0LmNyZWF0ZShudWxsKTtmb3IobGV0IHQ9YS5zdGFydExpbmVOdW1iZXI7dDxhLmVuZExpbmVOdW1iZXI7dCsrKWZvcihjb25zdCBpIG9mIGUuZ2V0TGluZVdvcmRzKHQscikpaWYoaXNOYU4oTnVtYmVyKGkud29yZCkpKXtsZXQgZT1uW2kud29yZF07ZXx8KGU9W10sbltpLndvcmRdPWUpLGUucHVzaCh7c3RhcnRMaW5lTnVtYmVyOnQsc3RhcnRDb2x1bW46aS5zdGFydENvbHVtbixlbmRMaW5lTnVtYmVyOnQsZW5kQ29sdW1uOmkuZW5kQ29sdW1ufSl9cmV0dXJuIG59KX1uYXZpZ2F0ZVZhbHVlU2V0KGksYSxvLHMsbCl7cmV0dXJuIFhyKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtjb25zdCBlPXRoaXMuX2dldE1vZGVsKGkpO2lmKCFlKXJldHVybiBudWxsO3ZhciB0PW5ldyBSZWdFeHAocyxsKSxyPShhLnN0YXJ0Q29sdW1uPT09YS5lbmRDb2x1bW4mJihhPXtzdGFydExpbmVOdW1iZXI6YS5zdGFydExpbmVOdW1iZXIsc3RhcnRDb2x1bW46YS5zdGFydENvbHVtbixlbmRMaW5lTnVtYmVyOmEuZW5kTGluZU51bWJlcixlbmRDb2x1bW46YS5lbmRDb2x1bW4rMX0pLGUuZ2V0VmFsdWVJblJhbmdlKGEpKSx0PWUuZ2V0V29yZEF0UG9zaXRpb24oe2xpbmVOdW1iZXI6YS5zdGFydExpbmVOdW1iZXIsY29sdW1uOmEuc3RhcnRDb2x1bW59LHQpO2lmKCF0KXJldHVybiBudWxsO3ZhciBuPWUuZ2V0VmFsdWVJblJhbmdlKHQpO3JldHVybiBNdC5JTlNUQU5DRS5uYXZpZ2F0ZVZhbHVlU2V0KGEscix0LG4sbyl9KX1sb2FkRm9yZWlnbk1vZHVsZShlLHQscil7cj10ZShyLChlLHQpPT50aGlzLl9ob3N0LmZocihlLHQpKTtyZXR1cm4gdGhpcy5fZm9yZWlnbk1vZHVsZUZhY3Rvcnk/KHRoaXMuX2ZvcmVpZ25Nb2R1bGU9dGhpcy5fZm9yZWlnbk1vZHVsZUZhY3Rvcnkoe2hvc3Q6cixnZXRNaXJyb3JNb2RlbHM6KCk9PnRoaXMuX2dldE1vZGVscygpfSx0KSxQcm9taXNlLnJlc29sdmUoZWUodGhpcy5fZm9yZWlnbk1vZHVsZSkpKTpQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoIlVuZXhwZWN0ZWQgdXNhZ2UiKSl9Zm1yKGUsdCl7aWYoIXRoaXMuX2ZvcmVpZ25Nb2R1bGV8fCJmdW5jdGlvbiIhPXR5cGVvZiB0aGlzLl9mb3JlaWduTW9kdWxlW2VdKXJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoIk1pc3NpbmcgcmVxdWVzdEhhbmRsZXIgb3IgbWV0aG9kOiAiK2UpKTt0cnl7cmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLl9mb3JlaWduTW9kdWxlW2VdLmFwcGx5KHRoaXMuX2ZvcmVpZ25Nb2R1bGUsdCkpfWNhdGNoKGUpe3JldHVybiBQcm9taXNlLnJlamVjdChlKX19fXRuLl9kaWZmTGltaXQ9MWU1LHRuLl9zdWdnZXN0aW9uc0xpbWl0PTFlNCwiZnVuY3Rpb24iPT10eXBlb2YgaW1wb3J0U2NyaXB0cyYmKFAubW9uYWNvPXtlZGl0b3I6dm9pZCAwLGxhbmd1YWdlczp2b2lkIDAsZXh0cmE6dm9pZCAwLENhbmNlbGxhdGlvblRva2VuU291cmNlOlJ0LEVtaXR0ZXI6WCxLZXlDb2RlOnlyLEtleU1vZDpHcixQb3NpdGlvbjpzdCxSYW5nZTpwLFNlbGVjdGlvbjp6dCxVcmk6WWUsVG9rZW46UHIsTWFya2Rvd25TdHJpbmc6SHIsTWFya2Rvd25TdHJpbmdUZXh0TmV3bGluZVN0eWxlOkxyLERpc3Bvc2FibGU6UyxEaXNwb3NhYmxlU3RvcmU6eSxFcnJvckhhbmRsZXI6aCxBYnN0cmFjdExvZ2dlcjpqcixDb25zb2xlTG9nZ2VyOiRyLFRva2VuaXphdGlvblJlc3VsdDpLcixFbmNvZGVkVG9rZW5pemF0aW9uUmVzdWx0OlJyLFNlbGVjdGlvbkRpcmVjdGlvbjpBcixNYXJrZXJTZXZlcml0eTpOcixNYXJrZXJUYWc6RXIsTG9nTGV2ZWw6U3IsZXJyb3JIYW5kbGVyOnV9KTtsZXQgcm49ITE7ZnVuY3Rpb24gbm4odCl7aWYoIXJuKXtybj0hMDtjb25zdCByPW5ldyBfZShlPT57c2VsZi5wb3N0TWVzc2FnZShlKX0sZT0+bmV3IHRuKGUsdCkpO3NlbGYub25tZXNzYWdlPWU9PntyLm9ubWVzc2FnZShlLmRhdGEpfX19cmV0dXJuIHNlbGYub25tZXNzYWdlPWU9Pntybnx8bm4obnVsbCl9LGwuaW5pdGlhbGl6ZT1ubixPYmplY3QuZGVmaW5lUHJvcGVydHkobCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksbH0oe30pOwoK', null, false);
|
|
31
|
+
var WorkerFactory = createBase64WorkerFactory('Lyogcm9sbHVwLXBsdWdpbi13ZWItd29ya2VyLWxvYWRlciAqLwp2YXIgd29ya2VyX2NvZGU9ZnVuY3Rpb24ocyl7InVzZSBzdHJpY3QiO2NsYXNzIGx7Y29uc3RydWN0b3IoKXt0aGlzLmxpc3RlbmVycz1bXSx0aGlzLnVuZXhwZWN0ZWRFcnJvckhhbmRsZXI9ZnVuY3Rpb24oZSl7c2V0VGltZW91dCgoKT0+e2lmKGUuc3RhY2spdGhyb3cgbmV3IEVycm9yKGUubWVzc2FnZSsiXG5cbiIrZS5zdGFjayk7dGhyb3cgZX0sMCl9fWFkZExpc3RlbmVyKGUpe3JldHVybiB0aGlzLmxpc3RlbmVycy5wdXNoKGUpLCgpPT57dGhpcy5fcmVtb3ZlTGlzdGVuZXIoZSl9fWVtaXQodCl7dGhpcy5saXN0ZW5lcnMuZm9yRWFjaChlPT57ZSh0KX0pfV9yZW1vdmVMaXN0ZW5lcihlKXt0aGlzLmxpc3RlbmVycy5zcGxpY2UodGhpcy5saXN0ZW5lcnMuaW5kZXhPZihlKSwxKX1zZXRVbmV4cGVjdGVkRXJyb3JIYW5kbGVyKGUpe3RoaXMudW5leHBlY3RlZEVycm9ySGFuZGxlcj1lfWdldFVuZXhwZWN0ZWRFcnJvckhhbmRsZXIoKXtyZXR1cm4gdGhpcy51bmV4cGVjdGVkRXJyb3JIYW5kbGVyfW9uVW5leHBlY3RlZEVycm9yKGUpe3RoaXMudW5leHBlY3RlZEVycm9ySGFuZGxlcihlKSx0aGlzLmVtaXQoZSl9b25VbmV4cGVjdGVkRXh0ZXJuYWxFcnJvcihlKXt0aGlzLnVuZXhwZWN0ZWRFcnJvckhhbmRsZXIoZSl9fWNvbnN0IGg9bmV3IGw7ZnVuY3Rpb24gYyhlKXshZnVuY3Rpb24oZSl7aWYoZSBpbnN0YW5jZW9mIG0pcmV0dXJuITA7cmV0dXJuIGUgaW5zdGFuY2VvZiBFcnJvciYmZS5uYW1lPT09ZiYmZS5tZXNzYWdlPT09Zn0oZSkmJmgub25VbmV4cGVjdGVkRXJyb3IoZSl9ZnVuY3Rpb24gdShlKXt2YXIgdCxyO3JldHVybiBlIGluc3RhbmNlb2YgRXJyb3I/KHtuYW1lOnQsbWVzc2FnZTpyfT1lLHskaXNFcnJvcjohMCxuYW1lOnQsbWVzc2FnZTpyLHN0YWNrOmUuc3RhY2t0cmFjZXx8ZS5zdGFja30pOmV9Y29uc3QgZj0iQ2FuY2VsZWQiO2NsYXNzIG0gZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3Rvcigpe3N1cGVyKGYpLHRoaXMubmFtZT10aGlzLm1lc3NhZ2V9fXZhciBiO3t2YXIgQz1iPWJ8fHt9O0MuaXM9ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJvYmplY3QiPT10eXBlb2YgZSYmImZ1bmN0aW9uIj09dHlwZW9mIGVbU3ltYm9sLml0ZXJhdG9yXX07Y29uc3QgeHI9T2JqZWN0LmZyZWV6ZShbXSk7Qy5lbXB0eT1mdW5jdGlvbigpe3JldHVybiB4cn0sQy5zaW5nbGU9ZnVuY3Rpb24qKGUpe3lpZWxkIGV9LEMuZnJvbT1mdW5jdGlvbihlKXtyZXR1cm4gZXx8eHJ9LEMuaXNFbXB0eT1mdW5jdGlvbihlKXtyZXR1cm4hZXx8ITA9PT1lW1N5bWJvbC5pdGVyYXRvcl0oKS5uZXh0KCkuZG9uZX0sQy5maXJzdD1mdW5jdGlvbihlKXtyZXR1cm4gZVtTeW1ib2wuaXRlcmF0b3JdKCkubmV4dCgpLnZhbHVlfSxDLnNvbWU9ZnVuY3Rpb24oZSx0KXtmb3IoY29uc3QgciBvZiBlKWlmKHQocikpcmV0dXJuITA7cmV0dXJuITF9LEMuZmluZD1mdW5jdGlvbihlLHQpe2Zvcihjb25zdCByIG9mIGUpaWYodChyKSlyZXR1cm4gcn0sQy5maWx0ZXI9ZnVuY3Rpb24qKGUsdCl7Zm9yKGNvbnN0IHIgb2YgZSl0KHIpJiYoeWllbGQgcil9LEMubWFwPWZ1bmN0aW9uKihlLHQpe2xldCByPTA7Zm9yKGNvbnN0IG4gb2YgZSl5aWVsZCB0KG4scisrKX0sQy5jb25jYXQ9ZnVuY3Rpb24qKC4uLmUpe2Zvcihjb25zdCB0IG9mIGUpZm9yKGNvbnN0IHIgb2YgdCl5aWVsZCByfSxDLmNvbmNhdE5lc3RlZD1mdW5jdGlvbiooZSl7Zm9yKGNvbnN0IHQgb2YgZSlmb3IoY29uc3QgciBvZiB0KXlpZWxkIHJ9LEMucmVkdWNlPWZ1bmN0aW9uKGUsdCxyKXtsZXQgbj1yO2Zvcihjb25zdCBpIG9mIGUpbj10KG4saSk7cmV0dXJuIG59LEMuc2xpY2U9ZnVuY3Rpb24qKGUsdCxyPWUubGVuZ3RoKXtmb3IodDwwJiYodCs9ZS5sZW5ndGgpLHI8MD9yKz1lLmxlbmd0aDpyPmUubGVuZ3RoJiYocj1lLmxlbmd0aCk7dDxyO3QrKyl5aWVsZCBlW3RdfSxDLmNvbnN1bWU9ZnVuY3Rpb24oZSx0PU51bWJlci5QT1NJVElWRV9JTkZJTklUWSl7Y29uc3Qgcj1bXTtpZigwPT09dClyZXR1cm5bcixlXTtjb25zdCBuPWVbU3ltYm9sLml0ZXJhdG9yXSgpO2ZvcihsZXQgZT0wO2U8dDtlKyspe3ZhciBpPW4ubmV4dCgpO2lmKGkuZG9uZSlyZXR1cm5bcixDLmVtcHR5KCldO3IucHVzaChpLnZhbHVlKX1yZXR1cm5bcix7W1N5bWJvbC5pdGVyYXRvcl0oKXtyZXR1cm4gbn19XX0sQy5lcXVhbHM9ZnVuY3Rpb24oZSx0LHI9KGUsdCk9PmU9PT10KXtjb25zdCBuPWVbU3ltYm9sLml0ZXJhdG9yXSgpLGk9dFtTeW1ib2wuaXRlcmF0b3JdKCk7Zm9yKDs7KXt2YXIgYT1uLm5leHQoKSxvPWkubmV4dCgpO2lmKGEuZG9uZSE9PW8uZG9uZSlyZXR1cm4hMTtpZihhLmRvbmUpcmV0dXJuITA7aWYoIXIoYS52YWx1ZSxvLnZhbHVlKSlyZXR1cm4hMX19fWNsYXNzIHcgZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3RvcihlKXtzdXBlcihgRW5jb3VudGVyZWQgZXJyb3JzIHdoaWxlIGRpc3Bvc2luZyBvZiBzdG9yZS4gRXJyb3JzOiBbJHtlLmpvaW4oIiwgIil9XWApLHRoaXMuZXJyb3JzPWV9fWZ1bmN0aW9uIF8oZSl7aWYoYi5pcyhlKSl7bGV0IHQ9W107Zm9yKGNvbnN0IHIgb2YgZSlpZihyKXRyeXtyLmRpc3Bvc2UoKX1jYXRjaChlKXt0LnB1c2goZSl9aWYoMT09PXQubGVuZ3RoKXRocm93IHRbMF07aWYoMTx0Lmxlbmd0aCl0aHJvdyBuZXcgdyh0KTtyZXR1cm4gQXJyYXkuaXNBcnJheShlKT9bXTplfWlmKGUpcmV0dXJuIGUuZGlzcG9zZSgpLGV9ZnVuY3Rpb24gdihlKXtyZXR1cm57ZGlzcG9zZTpmdW5jdGlvbihlKXtjb25zdCB0PXRoaXM7bGV0IHI9ITEsbjtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gcj9uOihyPSEwLG49ZS5hcHBseSh0LGFyZ3VtZW50cykpfX0oKCk9PntlKCl9KX19Y2xhc3MgeXtjb25zdHJ1Y3Rvcigpe3RoaXMuX3RvRGlzcG9zZT1uZXcgU2V0LHRoaXMuX2lzRGlzcG9zZWQ9ITF9ZGlzcG9zZSgpe3RoaXMuX2lzRGlzcG9zZWR8fCh0aGlzLl9pc0Rpc3Bvc2VkPSEwLHRoaXMuY2xlYXIoKSl9Z2V0IGlzRGlzcG9zZWQoKXtyZXR1cm4gdGhpcy5faXNEaXNwb3NlZH1jbGVhcigpe3RyeXtfKHRoaXMuX3RvRGlzcG9zZS52YWx1ZXMoKSl9ZmluYWxseXt0aGlzLl90b0Rpc3Bvc2UuY2xlYXIoKX19YWRkKGUpe2lmKCFlKXJldHVybiBlO2lmKGU9PT10aGlzKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IHJlZ2lzdGVyIGEgZGlzcG9zYWJsZSBvbiBpdHNlbGYhIik7cmV0dXJuIHRoaXMuX2lzRGlzcG9zZWQ/eS5ESVNBQkxFX0RJU1BPU0VEX1dBUk5JTkd8fGNvbnNvbGUud2FybihuZXcgRXJyb3IoIlRyeWluZyB0byBhZGQgYSBkaXNwb3NhYmxlIHRvIGEgRGlzcG9zYWJsZVN0b3JlIHRoYXQgaGFzIGFscmVhZHkgYmVlbiBkaXNwb3NlZCBvZi4gVGhlIGFkZGVkIG9iamVjdCB3aWxsIGJlIGxlYWtlZCEiKS5zdGFjayk6dGhpcy5fdG9EaXNwb3NlLmFkZChlKSxlfX15LkRJU0FCTEVfRElTUE9TRURfV0FSTklORz0hMTtjbGFzcyBMe2NvbnN0cnVjdG9yKCl7dGhpcy5fc3RvcmU9bmV3IHksdGhpcy5fc3RvcmV9ZGlzcG9zZSgpe3RoaXMuX3N0b3JlLmRpc3Bvc2UoKX1fcmVnaXN0ZXIoZSl7aWYoZT09PXRoaXMpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgcmVnaXN0ZXIgYSBkaXNwb3NhYmxlIG9uIGl0c2VsZiEiKTtyZXR1cm4gdGhpcy5fc3RvcmUuYWRkKGUpfX1MLk5vbmU9T2JqZWN0LmZyZWV6ZSh7ZGlzcG9zZSgpe319KTtjbGFzcyBTe2NvbnN0cnVjdG9yKCl7dGhpcy5kaXNwb3NlPSgpPT57fSx0aGlzLnVuc2V0PSgpPT57fSx0aGlzLmlzc2V0PSgpPT4hMX1zZXQoZSl7bGV0IHQ9ZTtyZXR1cm4gdGhpcy51bnNldD0oKT0+dD12b2lkIDAsdGhpcy5pc3NldD0oKT0+dm9pZCAwIT09dCx0aGlzLmRpc3Bvc2U9KCk9Pnt0JiYodCgpLHQ9dm9pZCAwKX0sdGhpc319Y2xhc3Mgb3tjb25zdHJ1Y3RvcihlKXt0aGlzLmVsZW1lbnQ9ZSx0aGlzLm5leHQ9by5VbmRlZmluZWQsdGhpcy5wcmV2PW8uVW5kZWZpbmVkfX1vLlVuZGVmaW5lZD1uZXcgbyh2b2lkIDApO2NsYXNzIE57Y29uc3RydWN0b3IoKXt0aGlzLl9maXJzdD1vLlVuZGVmaW5lZCx0aGlzLl9sYXN0PW8uVW5kZWZpbmVkLHRoaXMuX3NpemU9MH1nZXQgc2l6ZSgpe3JldHVybiB0aGlzLl9zaXplfWlzRW1wdHkoKXtyZXR1cm4gdGhpcy5fZmlyc3Q9PT1vLlVuZGVmaW5lZH1jbGVhcigpe2xldCBlPXRoaXMuX2ZpcnN0O2Zvcig7ZSE9PW8uVW5kZWZpbmVkOyl7dmFyIHQ9ZS5uZXh0O2UucHJldj1vLlVuZGVmaW5lZCxlLm5leHQ9by5VbmRlZmluZWQsZT10fXRoaXMuX2ZpcnN0PW8uVW5kZWZpbmVkLHRoaXMuX2xhc3Q9by5VbmRlZmluZWQsdGhpcy5fc2l6ZT0wfXVuc2hpZnQoZSl7cmV0dXJuIHRoaXMuX2luc2VydChlLCExKX1wdXNoKGUpe3JldHVybiB0aGlzLl9pbnNlcnQoZSwhMCl9X2luc2VydChlLHQpe2NvbnN0IHI9bmV3IG8oZSk7aWYodGhpcy5fZmlyc3Q9PT1vLlVuZGVmaW5lZCl0aGlzLl9maXJzdD1yLHRoaXMuX2xhc3Q9cjtlbHNlIGlmKHQpe2NvbnN0IGk9dGhpcy5fbGFzdDsoKHRoaXMuX2xhc3Q9cikucHJldj1pKS5uZXh0PXJ9ZWxzZXtjb25zdCBhPXRoaXMuX2ZpcnN0OygodGhpcy5fZmlyc3Q9cikubmV4dD1hKS5wcmV2PXJ9dGhpcy5fc2l6ZSs9MTtsZXQgbj0hMTtyZXR1cm4oKT0+e258fChuPSEwLHRoaXMuX3JlbW92ZShyKSl9fXNoaWZ0KCl7dmFyIGU7aWYodGhpcy5fZmlyc3QhPT1vLlVuZGVmaW5lZClyZXR1cm4gZT10aGlzLl9maXJzdC5lbGVtZW50LHRoaXMuX3JlbW92ZSh0aGlzLl9maXJzdCksZX1wb3AoKXt2YXIgZTtpZih0aGlzLl9sYXN0IT09by5VbmRlZmluZWQpcmV0dXJuIGU9dGhpcy5fbGFzdC5lbGVtZW50LHRoaXMuX3JlbW92ZSh0aGlzLl9sYXN0KSxlfV9yZW1vdmUoZSl7aWYoZS5wcmV2IT09by5VbmRlZmluZWQmJmUubmV4dCE9PW8uVW5kZWZpbmVkKXtjb25zdCB0PWUucHJldjt0Lm5leHQ9ZS5uZXh0LGUubmV4dC5wcmV2PXR9ZWxzZSBlLnByZXY9PT1vLlVuZGVmaW5lZCYmZS5uZXh0PT09by5VbmRlZmluZWQ/KHRoaXMuX2ZpcnN0PW8uVW5kZWZpbmVkLHRoaXMuX2xhc3Q9by5VbmRlZmluZWQpOmUubmV4dD09PW8uVW5kZWZpbmVkPyh0aGlzLl9sYXN0PXRoaXMuX2xhc3QucHJldix0aGlzLl9sYXN0Lm5leHQ9by5VbmRlZmluZWQpOmUucHJldj09PW8uVW5kZWZpbmVkJiYodGhpcy5fZmlyc3Q9dGhpcy5fZmlyc3QubmV4dCx0aGlzLl9maXJzdC5wcmV2PW8uVW5kZWZpbmVkKTstLXRoaXMuX3NpemV9KltTeW1ib2wuaXRlcmF0b3JdKCl7bGV0IGU9dGhpcy5fZmlyc3Q7Zm9yKDtlIT09by5VbmRlZmluZWQ7KXlpZWxkIGUuZWxlbWVudCxlPWUubmV4dH19dmFyIEU9ImVuIjtsZXQgQT0hMSxrPSExLHg9ITEsTT0hMSxLPXZvaWQgMCxQPUU7bGV0IFI9dm9pZCAwO2NvbnN0IEQ9Im9iamVjdCI9PXR5cGVvZiBzZWxmP3NlbGY6Im9iamVjdCI9PXR5cGVvZiBnbG9iYWw/Z2xvYmFsOnt9O2xldCBJPXZvaWQgMDt2b2lkIDAhPT1ELnZzY29kZSYmdm9pZCAwIT09RC52c2NvZGUucHJvY2Vzcz9JPUQudnNjb2RlLnByb2Nlc3M6InVuZGVmaW5lZCIhPXR5cGVvZiBwcm9jZXNzJiYoST1wcm9jZXNzKTt2YXIgZT0ic3RyaW5nIj09dHlwZW9mKG51bGw9PT0oZT1udWxsPT09SXx8dm9pZCAwPT09ST92b2lkIDA6SS52ZXJzaW9ucyl8fHZvaWQgMD09PWU/dm9pZCAwOmUuZWxlY3Ryb24pJiYicmVuZGVyZXIiPT09KG51bGw9PT1JfHx2b2lkIDA9PT1JP3ZvaWQgMDpJLnR5cGUpO2lmKCJvYmplY3QiIT10eXBlb2YgbmF2aWdhdG9yfHxlKWlmKCJvYmplY3QiPT10eXBlb2YgSSl7QT0id2luMzIiPT09SS5wbGF0Zm9ybSxrPSJkYXJ3aW4iPT09SS5wbGF0Zm9ybSwoeD0ibGludXgiPT09SS5wbGF0Zm9ybSkmJkkuZW52LlNOQVAmJkkuZW52LlNOQVBfUkVWSVNJT04sSS5lbnYuQ0l8fEkuZW52LkJVSUxEX0FSVElGQUNUU1RBR0lOR0RJUkVDVE9SWSxLPUUsUD1FO2U9SS5lbnYuVlNDT0RFX05MU19DT05GSUc7aWYoZSl0cnl7dmFyIFY9SlNPTi5wYXJzZShlKSx0PVYuYXZhaWxhYmxlTGFuZ3VhZ2VzWyIqIl07Sz1WLmxvY2FsZSxQPXR8fEUsVi5fdHJhbnNsYXRpb25zQ29uZmlnRmlsZX1jYXRjaChlKXt9fWVsc2UgY29uc29sZS5lcnJvcigiVW5hYmxlIHRvIHJlc29sdmUgcGxhdGZvcm0uIik7ZWxzZSBSPW5hdmlnYXRvci51c2VyQWdlbnQsQT0wPD1SLmluZGV4T2YoIldpbmRvd3MiKSxrPTA8PVIuaW5kZXhPZigiTWFjaW50b3NoIiksKDA8PVIuaW5kZXhPZigiTWFjaW50b3NoIil8fDA8PVIuaW5kZXhPZigiaVBhZCIpfHwwPD1SLmluZGV4T2YoImlQaG9uZSIpKSYmbmF2aWdhdG9yLm1heFRvdWNoUG9pbnRzJiZuYXZpZ2F0b3IubWF4VG91Y2hQb2ludHMseD0wPD1SLmluZGV4T2YoIkxpbnV4IiksTT0hMCxLPW5hdmlnYXRvci5sYW5ndWFnZSxQPUs7Y29uc3QgTz1BLEY9ayxUPShNJiZELmltcG9ydFNjcmlwdHMsUik7KCgpPT57aWYoImZ1bmN0aW9uIiE9dHlwZW9mIEQucG9zdE1lc3NhZ2V8fEQuaW1wb3J0U2NyaXB0cylyZXR1cm47e2xldCBpPVtdLGU9KEQuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIscj0+e2lmKHIuZGF0YSYmci5kYXRhLnZzY29kZVNjaGVkdWxlQXN5bmNXb3JrKWZvcihsZXQgZT0wLHQ9aS5sZW5ndGg7ZTx0O2UrKyl7Y29uc3Qgbj1pW2VdO2lmKG4uaWQ9PT1yLmRhdGEudnNjb2RlU2NoZWR1bGVBc3luY1dvcmspcmV0dXJuIGkuc3BsaWNlKGUsMSksdm9pZCBuLmNhbGxiYWNrKCl9fSksMCl9fSkoKTt2YXIgQixlPSEhKFQmJjA8PVQuaW5kZXhPZigiQ2hyb21lIikpO1QmJlQuaW5kZXhPZigiRmlyZWZveCIpLCFlJiZUJiZULmluZGV4T2YoIlNhZmFyaSIpLFQmJlQuaW5kZXhPZigiRWRnLyIpLFQmJlQuaW5kZXhPZigiQW5kcm9pZCIpO2NvbnN0IFU9RC5wZXJmb3JtYW5jZSYmImZ1bmN0aW9uIj09dHlwZW9mIEQucGVyZm9ybWFuY2Uubm93O2NsYXNzIHF7Y29uc3RydWN0b3IoZSl7dGhpcy5faGlnaFJlc29sdXRpb249VSYmZSx0aGlzLl9zdGFydFRpbWU9dGhpcy5fbm93KCksdGhpcy5fc3RvcFRpbWU9LTF9c3RhdGljIGNyZWF0ZShlPSEwKXtyZXR1cm4gbmV3IHEoZSl9c3RvcCgpe3RoaXMuX3N0b3BUaW1lPXRoaXMuX25vdygpfWVsYXBzZWQoKXtyZXR1cm4tMSE9PXRoaXMuX3N0b3BUaW1lP3RoaXMuX3N0b3BUaW1lLXRoaXMuX3N0YXJ0VGltZTp0aGlzLl9ub3coKS10aGlzLl9zdGFydFRpbWV9X25vdygpe3JldHVybih0aGlzLl9oaWdoUmVzb2x1dGlvbj9ELnBlcmZvcm1hbmNlOkRhdGUpLm5vdygpfX17dmFyIEg9UXQ9UXR8fHt9O2Z1bmN0aW9uIHooYSl7cmV0dXJuKHQscj1udWxsLGUpPT57bGV0IG49ITEsaTtyZXR1cm4gaT1hKGU9PntpZighbilyZXR1cm4gaT9pLmRpc3Bvc2UoKTpuPSEwLHQuY2FsbChyLGUpfSxudWxsLGUpLG4mJmkuZGlzcG9zZSgpLGl9fWZ1bmN0aW9uIFcobixpLGUpe3JldHVybiBKKCh0LHI9bnVsbCxlKT0+bihlPT50LmNhbGwocixpKGUpKSxudWxsLGUpLGUpfWZ1bmN0aW9uIGoobixpLGUpe3JldHVybiBKKCh0LHI9bnVsbCxlKT0+bihlPT57aShlKSx0LmNhbGwocixlKX0sbnVsbCxlKSxlKX1mdW5jdGlvbiAkKG4saSxlKXtyZXR1cm4gSigodCxyPW51bGwsZSk9Pm4oZT0+aShlKSYmdC5jYWxsKHIsZSksbnVsbCxlKSxlKX1mdW5jdGlvbiBHKGUsdCxyLG4pe2xldCBpPXI7cmV0dXJuIFcoZSxlPT5pPXQoaSxlKSxuKX1mdW5jdGlvbiBKKGUsdCl7bGV0IHI7dmFyIG49e29uRmlyc3RMaXN0ZW5lckFkZCgpe3I9ZShpLmZpcmUsaSl9LG9uTGFzdExpc3RlbmVyUmVtb3ZlKCl7ci5kaXNwb3NlKCl9fTtjb25zdCBpPW5ldyB0ZShuKTtyZXR1cm4gdCYmdC5hZGQoaSksaS5ldmVudH1mdW5jdGlvbiBRKGUsdCxjPTEwMCxyPSExLG4saSl7bGV0IGEsbz12b2lkIDAscz12b2lkIDAsbD0wO249e2xlYWtXYXJuaW5nVGhyZXNob2xkOm4sb25GaXJzdExpc3RlbmVyQWRkKCl7YT1lKGU9PntsKyssbz10KG8sZSksciYmIXMmJihoLmZpcmUobyksbz12b2lkIDApLGNsZWFyVGltZW91dChzKSxzPXNldFRpbWVvdXQoKCk9Pnt2YXIgZT1vO289dm9pZCAwLHM9dm9pZCAwLCghcnx8MTxsKSYmaC5maXJlKGUpLGw9MH0sYyl9KX0sb25MYXN0TGlzdGVuZXJSZW1vdmUoKXthLmRpc3Bvc2UoKX19O2NvbnN0IGg9bmV3IHRlKG4pO3JldHVybiBpJiZpLmFkZChoKSxoLmV2ZW50fWZ1bmN0aW9uIFkoZSxyPShlLHQpPT5lPT09dCx0KXtsZXQgbj0hMCxpO3JldHVybiAkKGUsZT0+e3ZhciB0PW58fCFyKGUsaSk7cmV0dXJuIG49ITEsaT1lLHR9LHQpfUguTm9uZT0oKT0+TC5Ob25lLEgub25jZT16LEgubWFwPVcsSC5mb3JFYWNoPWosSC5maWx0ZXI9JCxILnNpZ25hbD1mdW5jdGlvbihlKXtyZXR1cm4gZX0sSC5hbnk9ZnVuY3Rpb24oLi4uaSl7cmV0dXJuKHQscj1udWxsLG4pPT57dmFyWy4uLmVdPVsuLi5pLm1hcChlPT5lKGU9PnQuY2FsbChyLGUpLG51bGwsbikpXTtyZXR1cm4gdigoKT0+XyhlKSl9fSxILnJlZHVjZT1HLEguZGVib3VuY2U9USxILmxhdGNoPVksSC5zcGxpdD1mdW5jdGlvbihlLHQscil7cmV0dXJuW0guZmlsdGVyKGUsdCxyKSxILmZpbHRlcihlLGU9PiF0KGUpLHIpXX0sSC5idWZmZXI9ZnVuY3Rpb24oZSx0PSExLHI9W10pe2xldCBuPXIuc2xpY2UoKSxpPWUoZT0+e24/bi5wdXNoKGUpOm8uZmlyZShlKX0pO2NvbnN0IGE9KCk9PntuJiZuLmZvckVhY2goZT0+by5maXJlKGUpKSxuPW51bGx9LG89bmV3IHRlKHtvbkZpcnN0TGlzdGVuZXJBZGQoKXtpPWl8fGUoZT0+by5maXJlKGUpKX0sb25GaXJzdExpc3RlbmVyRGlkQWRkKCl7biYmKHQ/c2V0VGltZW91dChhKTphKCkpfSxvbkxhc3RMaXN0ZW5lclJlbW92ZSgpe2kmJmkuZGlzcG9zZSgpLGk9bnVsbH19KTtyZXR1cm4gby5ldmVudH07Y2xhc3MgTXJ7Y29uc3RydWN0b3IoZSl7dGhpcy5ldmVudD1lfW1hcChlKXtyZXR1cm4gbmV3IE1yKFcodGhpcy5ldmVudCxlKSl9Zm9yRWFjaChlKXtyZXR1cm4gbmV3IE1yKGoodGhpcy5ldmVudCxlKSl9ZmlsdGVyKGUpe3JldHVybiBuZXcgTXIoJCh0aGlzLmV2ZW50LGUpKX1yZWR1Y2UoZSx0KXtyZXR1cm4gbmV3IE1yKEcodGhpcy5ldmVudCxlLHQpKX1sYXRjaCgpe3JldHVybiBuZXcgTXIoWSh0aGlzLmV2ZW50KSl9ZGVib3VuY2UoZSx0PTEwMCxyPSExLG4pe3JldHVybiBuZXcgTXIoUSh0aGlzLmV2ZW50LGUsdCxyLG4pKX1vbihlLHQscil7cmV0dXJuIHRoaXMuZXZlbnQoZSx0LHIpfW9uY2UoZSx0LHIpe3JldHVybiB6KHRoaXMuZXZlbnQpKGUsdCxyKX19SC5jaGFpbj1mdW5jdGlvbihlKXtyZXR1cm4gbmV3IE1yKGUpfSxILmZyb21Ob2RlRXZlbnRFbWl0dGVyPWZ1bmN0aW9uKGUsdCxyPWU9PmUpe2NvbnN0IG49KC4uLmUpPT5pLmZpcmUociguLi5lKSksaT1uZXcgdGUoe29uRmlyc3RMaXN0ZW5lckFkZDooKT0+ZS5vbih0LG4pLG9uTGFzdExpc3RlbmVyUmVtb3ZlOigpPT5lLnJlbW92ZUxpc3RlbmVyKHQsbil9KTtyZXR1cm4gaS5ldmVudH0sSC5mcm9tRE9NRXZlbnRFbWl0dGVyPWZ1bmN0aW9uKGUsdCxyPWU9PmUpe2NvbnN0IG49KC4uLmUpPT5pLmZpcmUociguLi5lKSksaT1uZXcgdGUoe29uRmlyc3RMaXN0ZW5lckFkZDooKT0+ZS5hZGRFdmVudExpc3RlbmVyKHQsbiksb25MYXN0TGlzdGVuZXJSZW1vdmU6KCk9PmUucmVtb3ZlRXZlbnRMaXN0ZW5lcih0LG4pfSk7cmV0dXJuIGkuZXZlbnR9LEgudG9Qcm9taXNlPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgUHJvbWlzZShlPT56KHQpKGUpKX0sSC5ydW5BbmRTdWJzY3JpYmU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdCh2b2lkIDApLGUoZT0+dChlKSl9LEgucnVuQW5kU3Vic2NyaWJlV2l0aFN0b3JlPWZ1bmN0aW9uKGUsdCl7bGV0IHI9bnVsbDtmdW5jdGlvbiBuKGUpe251bGwhPT1yJiZ2b2lkIDAhPT1yJiZyLmRpc3Bvc2UoKSxyPW5ldyB5LHQoZSxyKX1uKHZvaWQgMCk7Y29uc3QgaT1lKGU9Pm4oZSkpO3JldHVybiB2KCgpPT57aS5kaXNwb3NlKCksbnVsbCE9PXImJnZvaWQgMCE9PXImJnIuZGlzcG9zZSgpfSl9fWNsYXNzIFp7Y29uc3RydWN0b3IoZSl7dGhpcy5fbGlzdGVuZXJDb3VudD0wLHRoaXMuX2ludm9jYXRpb25Db3VudD0wLHRoaXMuX2VsYXBzZWRPdmVyYWxsPTAsdGhpcy5fbmFtZT1lKyJfIitaLl9pZFBvb2wrK31zdGFydChlKXt0aGlzLl9zdG9wV2F0Y2g9bmV3IHEoITApLHRoaXMuX2xpc3RlbmVyQ291bnQ9ZX1zdG9wKCl7aWYodGhpcy5fc3RvcFdhdGNoKXtjb25zdCBlPXRoaXMuX3N0b3BXYXRjaC5lbGFwc2VkKCk7dGhpcy5fZWxhcHNlZE92ZXJhbGwrPWUsdGhpcy5faW52b2NhdGlvbkNvdW50Kz0xLGNvbnNvbGUuaW5mbyhgZGlkIEZJUkUgJHt0aGlzLl9uYW1lfTogZWxhcHNlZF9tczogJHtlLnRvRml4ZWQoNSl9LCBsaXN0ZW5lcjogJHt0aGlzLl9saXN0ZW5lckNvdW50fSAoZWxhcHNlZF9vdmVyYWxsOiAke3RoaXMuX2VsYXBzZWRPdmVyYWxsLnRvRml4ZWQoMil9LCBpbnZvY2F0aW9uczogJHt0aGlzLl9pbnZvY2F0aW9uQ291bnR9KWApLHRoaXMuX3N0b3BXYXRjaD12b2lkIDB9fX1aLl9pZFBvb2w9MDtjbGFzcyBYe2NvbnN0cnVjdG9yKGUpe3RoaXMudmFsdWU9ZX1zdGF0aWMgY3JlYXRlKCl7dmFyIGU7cmV0dXJuIG5ldyBYKG51bGwhPT0oZT0obmV3IEVycm9yKS5zdGFjaykmJnZvaWQgMCE9PWU/ZToiIil9cHJpbnQoKXtjb25zb2xlLndhcm4odGhpcy52YWx1ZS5zcGxpdCgiXG4iKS5zbGljZSgyKS5qb2luKCJcbiIpKX19Y2xhc3MgZWV7Y29uc3RydWN0b3IoZSx0LHIpe3RoaXMuY2FsbGJhY2s9ZSx0aGlzLmNhbGxiYWNrVGhpcz10LHRoaXMuc3RhY2s9cix0aGlzLnN1YnNjcmlwdGlvbj1uZXcgU31pbnZva2UoZSl7dGhpcy5jYWxsYmFjay5jYWxsKHRoaXMuY2FsbGJhY2tUaGlzLGUpfX1jbGFzcyB0ZXtjb25zdHJ1Y3RvcihlKXt0aGlzLl9kaXNwb3NlZD0hMSx0aGlzLl9vcHRpb25zPWUsdGhpcy5fbGVha2FnZU1vbj12b2lkIDAsdGhpcy5fcGVyZk1vbj1udWxsIT09KGU9dGhpcy5fb3B0aW9ucykmJnZvaWQgMCE9PWUmJmUuX3Byb2ZOYW1lP25ldyBaKHRoaXMuX29wdGlvbnMuX3Byb2ZOYW1lKTp2b2lkIDB9ZGlzcG9zZSgpe3ZhciBlLHQ7dGhpcy5fZGlzcG9zZWR8fCh0aGlzLl9kaXNwb3NlZD0hMCx0aGlzLl9saXN0ZW5lcnMmJnRoaXMuX2xpc3RlbmVycy5jbGVhcigpLG51bGwhPT0oZT10aGlzLl9kZWxpdmVyeVF1ZXVlKSYmdm9pZCAwIT09ZSYmZS5jbGVhcigpLG51bGwhPT0odD1udWxsPT09KGU9dGhpcy5fb3B0aW9ucyl8fHZvaWQgMD09PWU/dm9pZCAwOmUub25MYXN0TGlzdGVuZXJSZW1vdmUpJiZ2b2lkIDAhPT10JiZ0LmNhbGwoZSksbnVsbCE9PSh0PXRoaXMuX2xlYWthZ2VNb24pJiZ2b2lkIDAhPT10JiZ0LmRpc3Bvc2UoKSl9Z2V0IGV2ZW50KCl7cmV0dXJuIHRoaXMuX2V2ZW50fHwodGhpcy5fZXZlbnQ9KGUsdCxyKT0+e3RoaXMuX2xpc3RlbmVyc3x8KHRoaXMuX2xpc3RlbmVycz1uZXcgTik7dmFyIG4saSxhPXRoaXMuX2xpc3RlbmVycy5pc0VtcHR5KCk7YSYmbnVsbCE9PShpPXRoaXMuX29wdGlvbnMpJiZ2b2lkIDAhPT1pJiZpLm9uRmlyc3RMaXN0ZW5lckFkZCYmdGhpcy5fb3B0aW9ucy5vbkZpcnN0TGlzdGVuZXJBZGQodGhpcyk7bGV0IG8sczt0aGlzLl9sZWFrYWdlTW9uJiYzMDw9dGhpcy5fbGlzdGVuZXJzLnNpemUmJihzPVguY3JlYXRlKCksbz10aGlzLl9sZWFrYWdlTW9uLmNoZWNrKHMsdGhpcy5fbGlzdGVuZXJzLnNpemUrMSkpO2NvbnN0IGw9bmV3IGVlKGUsdCxzKSxoPXRoaXMuX2xpc3RlbmVycy5wdXNoKGwpO2EmJm51bGwhPT0obj10aGlzLl9vcHRpb25zKSYmdm9pZCAwIT09biYmbi5vbkZpcnN0TGlzdGVuZXJEaWRBZGQmJnRoaXMuX29wdGlvbnMub25GaXJzdExpc3RlbmVyRGlkQWRkKHRoaXMpLG51bGwhPT0oaT10aGlzLl9vcHRpb25zKSYmdm9pZCAwIT09aSYmaS5vbkxpc3RlbmVyRGlkQWRkJiZ0aGlzLl9vcHRpb25zLm9uTGlzdGVuZXJEaWRBZGQodGhpcyxlLHQpO2E9bC5zdWJzY3JpcHRpb24uc2V0KCgpPT57byYmbygpLHRoaXMuX2Rpc3Bvc2VkfHwoaCgpLHRoaXMuX29wdGlvbnMmJnRoaXMuX29wdGlvbnMub25MYXN0TGlzdGVuZXJSZW1vdmUmJih0aGlzLl9saXN0ZW5lcnMmJiF0aGlzLl9saXN0ZW5lcnMuaXNFbXB0eSgpfHx0aGlzLl9vcHRpb25zLm9uTGFzdExpc3RlbmVyUmVtb3ZlKHRoaXMpKSl9KTtyZXR1cm4gciBpbnN0YW5jZW9mIHk/ci5hZGQoYSk6QXJyYXkuaXNBcnJheShyKSYmci5wdXNoKGEpLGF9KSx0aGlzLl9ldmVudH1maXJlKGUpe3ZhciB0O2lmKHRoaXMuX2xpc3RlbmVycyl7dGhpcy5fZGVsaXZlcnlRdWV1ZXx8KHRoaXMuX2RlbGl2ZXJ5UXVldWU9bmV3IE4pO2Zvcih2YXIgciBvZiB0aGlzLl9saXN0ZW5lcnMpdGhpcy5fZGVsaXZlcnlRdWV1ZS5wdXNoKFtyLGVdKTtmb3IobnVsbCE9PSh0PXRoaXMuX3BlcmZNb24pJiZ2b2lkIDAhPT10JiZ0LnN0YXJ0KHRoaXMuX2RlbGl2ZXJ5UXVldWUuc2l6ZSk7MDx0aGlzLl9kZWxpdmVyeVF1ZXVlLnNpemU7KXtjb25zdFtuLGVdPXRoaXMuX2RlbGl2ZXJ5UXVldWUuc2hpZnQoKTt0cnl7bi5pbnZva2UoZSl9Y2F0Y2goZSl7YyhlKX19bnVsbCE9PSh0PXRoaXMuX3BlcmZNb24pJiZ2b2lkIDAhPT10JiZ0LnN0b3AoKX19fWZ1bmN0aW9uIHJlKGUpe2NvbnN0IHQ9W107Zm9yKGNvbnN0IHIgb2YgZnVuY3Rpb24oZSl7bGV0IHQ9W10scj1PYmplY3QuZ2V0UHJvdG90eXBlT2YoZSk7Zm9yKDtPYmplY3QucHJvdG90eXBlIT09cjspdD10LmNvbmNhdChPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhyKSkscj1PYmplY3QuZ2V0UHJvdG90eXBlT2Yocik7cmV0dXJuIHR9KGUpKSJmdW5jdGlvbiI9PXR5cGVvZiBlW3JdJiZ0LnB1c2gocik7cmV0dXJuIHR9ZnVuY3Rpb24gbmUoZSxyKXtsZXQgdD17fTtmb3IoY29uc3QgbiBvZiBlKXRbbl09KHQ9PmZ1bmN0aW9uKCl7dmFyIGU9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDApO3JldHVybiByKHQsZSl9KShuKTtyZXR1cm4gdH1jbGFzcyBpZXtjb25zdHJ1Y3RvcihlKXt0aGlzLmV4ZWN1dG9yPWUsdGhpcy5fZGlkUnVuPSExfWdldFZhbHVlKCl7aWYoIXRoaXMuX2RpZFJ1bil0cnl7dGhpcy5fdmFsdWU9dGhpcy5leGVjdXRvcigpfWNhdGNoKGUpe3RoaXMuX2Vycm9yPWV9ZmluYWxseXt0aGlzLl9kaWRSdW49ITB9aWYodGhpcy5fZXJyb3IpdGhyb3cgdGhpcy5fZXJyb3I7cmV0dXJuIHRoaXMuX3ZhbHVlfWdldCByYXdWYWx1ZSgpe3JldHVybiB0aGlzLl92YWx1ZX19ZnVuY3Rpb24gYWUocixuLGk9MCxhPXIubGVuZ3RoLG89MCxzPW4ubGVuZ3RoKXtmb3IoO2k8YSYmbzxzO2krKyxvKyspe2xldCBlPXIuY2hhckNvZGVBdChpKSx0PW4uY2hhckNvZGVBdChvKTtpZihlIT09dCl7aWYoMTI4PD1lfHwxMjg8PXQpcmV0dXJuIGZ1bmN0aW9uKGUsdCxyPTAsbj1lLmxlbmd0aCxpPTAsYT10Lmxlbmd0aCl7Zm9yKDtyPG4mJmk8YTtyKyssaSsrKXt2YXIgbz1lLmNoYXJDb2RlQXQocikscz10LmNoYXJDb2RlQXQoaSk7aWYobzxzKXJldHVybi0xO2lmKHM8bylyZXR1cm4gMX12YXIgbD1uLXIsaD1hLWk7cmV0dXJuIGw8aD8tMTpoPGw/MTowfShyLnRvTG93ZXJDYXNlKCksbi50b0xvd2VyQ2FzZSgpLGksYSxvLHMpO29lKGUpJiYoZS09MzIpLG9lKHQpJiYodC09MzIpO3ZhciBsPWUtdDtpZigwIT1sKXJldHVybiBsfX12YXIgZT1hLWksdD1zLW87cmV0dXJuIGU8dD8tMTp0PGU/MTowfWZ1bmN0aW9uIG9lKGUpe3JldHVybiA5Nzw9ZSYmZTw9MTIyfWZ1bmN0aW9uIHNlKGUpe3JldHVybiA2NTw9ZSYmZTw9OTB9ZnVuY3Rpb24gbGUoZSl7cmV0dXJuIDU1Mjk2PD1lJiZlPD01NjMxOX1jb25zdCBoZT0vXltcdFxuXHJceDIwLVx4N0VdKiQvO2NsYXNzIGNle2NvbnN0cnVjdG9yKGUpe3RoaXMuY29uZnVzYWJsZURpY3Rpb25hcnk9ZX1zdGF0aWMgZ2V0SW5zdGFuY2UoZSl7cmV0dXJuIGNlLmNhY2hlLmdldChBcnJheS5mcm9tKGUpKX1zdGF0aWMgZ2V0TG9jYWxlcygpe3JldHVybiBjZS5fbG9jYWxlcy5nZXRWYWx1ZSgpfWlzQW1iaWd1b3VzKGUpe3JldHVybiB0aGlzLmNvbmZ1c2FibGVEaWN0aW9uYXJ5LmhhcyhlKX1nZXRQcmltYXJ5Q29uZnVzYWJsZShlKXtyZXR1cm4gdGhpcy5jb25mdXNhYmxlRGljdGlvbmFyeS5nZXQoZSl9Z2V0Q29uZnVzYWJsZUNvZGVQb2ludHMoKXtyZXR1cm4gbmV3IFNldCh0aGlzLmNvbmZ1c2FibGVEaWN0aW9uYXJ5LmtleXMoKSl9fShCPWNlKS5hbWJpZ3VvdXNDaGFyYWN0ZXJEYXRhPW5ldyBpZSgoKT0+SlNPTi5wYXJzZSgneyJfY29tbW9uIjpbODIzMiwzMiw4MjMzLDMyLDU3NjAsMzIsODE5MiwzMiw4MTkzLDMyLDgxOTQsMzIsODE5NSwzMiw4MTk2LDMyLDgxOTcsMzIsODE5OCwzMiw4MjAwLDMyLDgyMDEsMzIsODIwMiwzMiw4Mjg3LDMyLDgxOTksMzIsODIzOSwzMiwyMDQyLDk1LDY1MTAxLDk1LDY1MTAyLDk1LDY1MTAzLDk1LDgyMDgsNDUsODIwOSw0NSw4MjEwLDQ1LDY1MTEyLDQ1LDE3NDgsNDUsODI1OSw0NSw3MjcsNDUsODcyMiw0NSwxMDEzNCw0NSwxMTQ1MCw0NSwxNTQ5LDQ0LDE2NDMsNDQsODIxOCw0NCwxODQsNDQsNDIyMzMsNDQsODk0LDU5LDIzMDcsNTgsMjY5MSw1OCwxNDE3LDU4LDE3OTUsNTgsMTc5Niw1OCw1ODY4LDU4LDY1MDcyLDU4LDYxNDcsNTgsNjE1Myw1OCw4MjgyLDU4LDE0NzUsNTgsNzYwLDU4LDQyODg5LDU4LDg3NTgsNTgsNzIwLDU4LDQyMjM3LDU4LDQ1MSwzMywxMTYwMSwzMyw2NjAsNjMsNTc3LDYzLDI0MjksNjMsNTAzOCw2Myw0MjczMSw2MywxMTkxNDksNDYsODIyOCw0NiwxNzkzLDQ2LDE3OTQsNDYsNDI1MTAsNDYsNjgxNzYsNDYsMTYzMiw0NiwxNzc2LDQ2LDQyMjMyLDQ2LDEzNzMsOTYsNjUyODcsOTYsODIxOSw5Niw4MjQyLDk2LDEzNzAsOTYsMTUyMyw5Niw4MTc1LDk2LDY1MzQ0LDk2LDkwMCw5Niw4MTg5LDk2LDgxMjUsOTYsODEyNyw5Niw4MTkwLDk2LDY5Nyw5Niw4ODQsOTYsNzEyLDk2LDcxNCw5Niw3MTUsOTYsNzU2LDk2LDY5OSw5Niw3MDEsOTYsNzAwLDk2LDcwMiw5Niw0Mjg5Miw5NiwxNDk3LDk2LDIwMzYsOTYsMjAzNyw5Niw1MTk0LDk2LDU4MzYsOTYsOTQwMzMsOTYsOTQwMzQsOTYsNjUzMzksOTEsMTAwODgsNDAsMTAwOTgsNDAsMTIzMDgsNDAsNjQ4MzAsNDAsNjUzNDEsOTMsMTAwODksNDEsMTAwOTksNDEsMTIzMDksNDEsNjQ4MzEsNDEsMTAxMDAsMTIzLDExOTA2MCwxMjMsMTAxMDEsMTI1LDY1MzQyLDk0LDgyNzAsNDIsMTY0NSw0Miw4NzI3LDQyLDY2MzM1LDQyLDU5NDEsNDcsODI1Nyw0Nyw4NzI1LDQ3LDgyNjAsNDcsOTU4NSw0NywxMDE4Nyw0NywxMDc0NCw0NywxMTkzNTQsNDcsMTI3NTUsNDcsMTIzMzksNDcsMTE0NjIsNDcsMjAwMzEsNDcsMTIwMzUsNDcsNjUzNDAsOTIsNjUxMjgsOTIsODcyNiw5MiwxMDE4OSw5MiwxMDc0MSw5MiwxMDc0NSw5MiwxMTkzMTEsOTIsMTE5MzU1LDkyLDEyNzU2LDkyLDIwMDIyLDkyLDEyMDM0LDkyLDQyODcyLDM4LDcwOCw5NCw3MTAsOTQsNTg2OSw0MywxMDEzMyw0Myw2NjIwMyw0Myw4MjQ5LDYwLDEwMDk0LDYwLDcwNiw2MCwxMTkzNTAsNjAsNTE3Niw2MCw1ODEwLDYwLDUxMjAsNjEsMTE4NDAsNjEsMTI0NDgsNjEsNDIyMzksNjEsODI1MCw2MiwxMDA5NSw2Miw3MDcsNjIsMTE5MzUxLDYyLDUxNzEsNjIsOTQwMTUsNjIsODI3NSwxMjYsNzMyLDEyNiw4MTI4LDEyNiw4NzY0LDEyNiw2NTM3MiwxMjQsNjUyOTMsNDUsMTIwNzg0LDUwLDEyMDc5NCw1MCwxMjA4MDQsNTAsMTIwODE0LDUwLDEyMDgyNCw1MCwxMzAwMzQsNTAsNDI4NDIsNTAsNDIzLDUwLDEwMDAsNTAsNDI1NjQsNTAsNTMxMSw1MCw0MjczNSw1MCwxMTkzMDIsNTEsMTIwNzg1LDUxLDEyMDc5NSw1MSwxMjA4MDUsNTEsMTIwODE1LDUxLDEyMDgyNSw1MSwxMzAwMzUsNTEsNDI5MjMsNTEsNTQwLDUxLDQzOSw1MSw0Mjg1OCw1MSwxMTQ2OCw1MSwxMjQ4LDUxLDk0MDExLDUxLDcxODgyLDUxLDEyMDc4Niw1MiwxMjA3OTYsNTIsMTIwODA2LDUyLDEyMDgxNiw1MiwxMjA4MjYsNTIsMTMwMDM2LDUyLDUwNzAsNTIsNzE4NTUsNTIsMTIwNzg3LDUzLDEyMDc5Nyw1MywxMjA4MDcsNTMsMTIwODE3LDUzLDEyMDgyNyw1MywxMzAwMzcsNTMsNDQ0LDUzLDcxODY3LDUzLDEyMDc4OCw1NCwxMjA3OTgsNTQsMTIwODA4LDU0LDEyMDgxOCw1NCwxMjA4MjgsNTQsMTMwMDM4LDU0LDExNDc0LDU0LDUxMDIsNTQsNzE4OTMsNTQsMTE5MzE0LDU1LDEyMDc4OSw1NSwxMjA3OTksNTUsMTIwODA5LDU1LDEyMDgxOSw1NSwxMjA4MjksNTUsMTMwMDM5LDU1LDY2NzcwLDU1LDcxODc4LDU1LDI4MTksNTYsMjUzOCw1NiwyNjY2LDU2LDEyNTEzMSw1NiwxMjA3OTAsNTYsMTIwODAwLDU2LDEyMDgxMCw1NiwxMjA4MjAsNTYsMTIwODMwLDU2LDEzMDA0MCw1Niw1NDcsNTYsNTQ2LDU2LDY2MzMwLDU2LDI2NjMsNTcsMjkyMCw1NywyNTQxLDU3LDM0MzcsNTcsMTIwNzkxLDU3LDEyMDgwMSw1NywxMjA4MTEsNTcsMTIwODIxLDU3LDEyMDgzMSw1NywxMzAwNDEsNTcsNDI4NjIsNTcsMTE0NjYsNTcsNzE4ODQsNTcsNzE4NTIsNTcsNzE4OTQsNTcsOTA4Miw5Nyw2NTM0NSw5NywxMTk4MzQsOTcsMTE5ODg2LDk3LDExOTkzOCw5NywxMTk5OTAsOTcsMTIwMDQyLDk3LDEyMDA5NCw5NywxMjAxNDYsOTcsMTIwMTk4LDk3LDEyMDI1MCw5NywxMjAzMDIsOTcsMTIwMzU0LDk3LDEyMDQwNiw5NywxMjA0NTgsOTcsNTkzLDk3LDk0NSw5NywxMjA1MTQsOTcsMTIwNTcyLDk3LDEyMDYzMCw5NywxMjA2ODgsOTcsMTIwNzQ2LDk3LDY1MzEzLDY1LDExOTgwOCw2NSwxMTk4NjAsNjUsMTE5OTEyLDY1LDExOTk2NCw2NSwxMjAwMTYsNjUsMTIwMDY4LDY1LDEyMDEyMCw2NSwxMjAxNzIsNjUsMTIwMjI0LDY1LDEyMDI3Niw2NSwxMjAzMjgsNjUsMTIwMzgwLDY1LDEyMDQzMiw2NSw5MTMsNjUsMTIwNDg4LDY1LDEyMDU0Niw2NSwxMjA2MDQsNjUsMTIwNjYyLDY1LDEyMDcyMCw2NSw1MDM0LDY1LDU1NzMsNjUsNDIyMjIsNjUsOTQwMTYsNjUsNjYyMDgsNjUsMTE5ODM1LDk4LDExOTg4Nyw5OCwxMTk5MzksOTgsMTE5OTkxLDk4LDEyMDA0Myw5OCwxMjAwOTUsOTgsMTIwMTQ3LDk4LDEyMDE5OSw5OCwxMjAyNTEsOTgsMTIwMzAzLDk4LDEyMDM1NSw5OCwxMjA0MDcsOTgsMTIwNDU5LDk4LDM4OCw5OCw1MDcxLDk4LDUyMzQsOTgsNTU1MSw5OCw2NTMxNCw2Niw4NDkyLDY2LDExOTgwOSw2NiwxMTk4NjEsNjYsMTE5OTEzLDY2LDEyMDAxNyw2NiwxMjAwNjksNjYsMTIwMTIxLDY2LDEyMDE3Myw2NiwxMjAyMjUsNjYsMTIwMjc3LDY2LDEyMDMyOSw2NiwxMjAzODEsNjYsMTIwNDMzLDY2LDQyOTMyLDY2LDkxNCw2NiwxMjA0ODksNjYsMTIwNTQ3LDY2LDEyMDYwNSw2NiwxMjA2NjMsNjYsMTIwNzIxLDY2LDUxMDgsNjYsNTYyMyw2Niw0MjE5Miw2Niw2NjE3OCw2Niw2NjIwOSw2Niw2NjMwNSw2Niw2NTM0Nyw5OSw4NTczLDk5LDExOTgzNiw5OSwxMTk4ODgsOTksMTE5OTQwLDk5LDExOTk5Miw5OSwxMjAwNDQsOTksMTIwMDk2LDk5LDEyMDE0OCw5OSwxMjAyMDAsOTksMTIwMjUyLDk5LDEyMDMwNCw5OSwxMjAzNTYsOTksMTIwNDA4LDk5LDEyMDQ2MCw5OSw3NDI4LDk5LDEwMTAsOTksMTE0MjksOTksNDM5NTEsOTksNjY2MjEsOTksMTI4ODQ0LDY3LDcxOTIyLDY3LDcxOTEzLDY3LDY1MzE1LDY3LDg1NTcsNjcsODQ1MCw2Nyw4NDkzLDY3LDExOTgxMCw2NywxMTk4NjIsNjcsMTE5OTE0LDY3LDExOTk2Niw2NywxMjAwMTgsNjcsMTIwMTc0LDY3LDEyMDIyNiw2NywxMjAyNzgsNjcsMTIwMzMwLDY3LDEyMDM4Miw2NywxMjA0MzQsNjcsMTAxNyw2NywxMTQyOCw2Nyw1MDg3LDY3LDQyMjAyLDY3LDY2MjEwLDY3LDY2MzA2LDY3LDY2NTgxLDY3LDY2ODQ0LDY3LDg1NzQsMTAwLDg1MTgsMTAwLDExOTgzNywxMDAsMTE5ODg5LDEwMCwxMTk5NDEsMTAwLDExOTk5MywxMDAsMTIwMDQ1LDEwMCwxMjAwOTcsMTAwLDEyMDE0OSwxMDAsMTIwMjAxLDEwMCwxMjAyNTMsMTAwLDEyMDMwNSwxMDAsMTIwMzU3LDEwMCwxMjA0MDksMTAwLDEyMDQ2MSwxMDAsMTI4MSwxMDAsNTA5NSwxMDAsNTIzMSwxMDAsNDIxOTQsMTAwLDg1NTgsNjgsODUxNyw2OCwxMTk4MTEsNjgsMTE5ODYzLDY4LDExOTkxNSw2OCwxMTk5NjcsNjgsMTIwMDE5LDY4LDEyMDA3MSw2OCwxMjAxMjMsNjgsMTIwMTc1LDY4LDEyMDIyNyw2OCwxMjAyNzksNjgsMTIwMzMxLDY4LDEyMDM4Myw2OCwxMjA0MzUsNjgsNTAyNCw2OCw1NTk4LDY4LDU2MTAsNjgsNDIxOTUsNjgsODQ5NCwxMDEsNjUzNDksMTAxLDg0OTUsMTAxLDg1MTksMTAxLDExOTgzOCwxMDEsMTE5ODkwLDEwMSwxMTk5NDIsMTAxLDEyMDA0NiwxMDEsMTIwMDk4LDEwMSwxMjAxNTAsMTAxLDEyMDIwMiwxMDEsMTIwMjU0LDEwMSwxMjAzMDYsMTAxLDEyMDM1OCwxMDEsMTIwNDEwLDEwMSwxMjA0NjIsMTAxLDQzODI2LDEwMSwxMjEzLDEwMSw4OTU5LDY5LDY1MzE3LDY5LDg0OTYsNjksMTE5ODEyLDY5LDExOTg2NCw2OSwxMTk5MTYsNjksMTIwMDIwLDY5LDEyMDA3Miw2OSwxMjAxMjQsNjksMTIwMTc2LDY5LDEyMDIyOCw2OSwxMjAyODAsNjksMTIwMzMyLDY5LDEyMDM4NCw2OSwxMjA0MzYsNjksOTE3LDY5LDEyMDQ5Miw2OSwxMjA1NTAsNjksMTIwNjA4LDY5LDEyMDY2Niw2OSwxMjA3MjQsNjksMTE1NzcsNjksNTAzNiw2OSw0MjIyNCw2OSw3MTg0Niw2OSw3MTg1NCw2OSw2NjE4Miw2OSwxMTk4MzksMTAyLDExOTg5MSwxMDIsMTE5OTQzLDEwMiwxMTk5OTUsMTAyLDEyMDA0NywxMDIsMTIwMDk5LDEwMiwxMjAxNTEsMTAyLDEyMDIwMywxMDIsMTIwMjU1LDEwMiwxMjAzMDcsMTAyLDEyMDM1OSwxMDIsMTIwNDExLDEwMiwxMjA0NjMsMTAyLDQzODI5LDEwMiw0MjkwNSwxMDIsMzgzLDEwMiw3ODM3LDEwMiwxNDEyLDEwMiwxMTkzMTUsNzAsODQ5Nyw3MCwxMTk4MTMsNzAsMTE5ODY1LDcwLDExOTkxNyw3MCwxMjAwMjEsNzAsMTIwMDczLDcwLDEyMDEyNSw3MCwxMjAxNzcsNzAsMTIwMjI5LDcwLDEyMDI4MSw3MCwxMjAzMzMsNzAsMTIwMzg1LDcwLDEyMDQzNyw3MCw0MjkwNCw3MCw5ODgsNzAsMTIwNzc4LDcwLDU1NTYsNzAsNDIyMDUsNzAsNzE4NzQsNzAsNzE4NDIsNzAsNjYxODMsNzAsNjYyMTMsNzAsNjY4NTMsNzAsNjUzNTEsMTAzLDg0NTgsMTAzLDExOTg0MCwxMDMsMTE5ODkyLDEwMywxMTk5NDQsMTAzLDEyMDA0OCwxMDMsMTIwMTAwLDEwMywxMjAxNTIsMTAzLDEyMDIwNCwxMDMsMTIwMjU2LDEwMywxMjAzMDgsMTAzLDEyMDM2MCwxMDMsMTIwNDEyLDEwMywxMjA0NjQsMTAzLDYwOSwxMDMsNzU1NSwxMDMsMzk3LDEwMywxNDA5LDEwMywxMTk4MTQsNzEsMTE5ODY2LDcxLDExOTkxOCw3MSwxMTk5NzAsNzEsMTIwMDIyLDcxLDEyMDA3NCw3MSwxMjAxMjYsNzEsMTIwMTc4LDcxLDEyMDIzMCw3MSwxMjAyODIsNzEsMTIwMzM0LDcxLDEyMDM4Niw3MSwxMjA0MzgsNzEsMTI5Miw3MSw1MDU2LDcxLDUxMDcsNzEsNDIxOTgsNzEsNjUzNTIsMTA0LDg0NjIsMTA0LDExOTg0MSwxMDQsMTE5OTQ1LDEwNCwxMTk5OTcsMTA0LDEyMDA0OSwxMDQsMTIwMTAxLDEwNCwxMjAxNTMsMTA0LDEyMDIwNSwxMDQsMTIwMjU3LDEwNCwxMjAzMDksMTA0LDEyMDM2MSwxMDQsMTIwNDEzLDEwNCwxMjA0NjUsMTA0LDEyMTEsMTA0LDEzOTIsMTA0LDUwNTgsMTA0LDY1MzIwLDcyLDg0NTksNzIsODQ2MCw3Miw4NDYxLDcyLDExOTgxNSw3MiwxMTk4NjcsNzIsMTE5OTE5LDcyLDEyMDAyMyw3MiwxMjAxNzksNzIsMTIwMjMxLDcyLDEyMDI4Myw3MiwxMjAzMzUsNzIsMTIwMzg3LDcyLDEyMDQzOSw3Miw5MTksNzIsMTIwNDk0LDcyLDEyMDU1Miw3MiwxMjA2MTAsNzIsMTIwNjY4LDcyLDEyMDcyNiw3MiwxMTQwNiw3Miw1MDUxLDcyLDU1MDAsNzIsNDIyMTUsNzIsNjYyNTUsNzIsNzMxLDEwNSw5MDc1LDEwNSw2NTM1MywxMDUsODU2MCwxMDUsODUwNSwxMDUsODUyMCwxMDUsMTE5ODQyLDEwNSwxMTk4OTQsMTA1LDExOTk0NiwxMDUsMTE5OTk4LDEwNSwxMjAwNTAsMTA1LDEyMDEwMiwxMDUsMTIwMTU0LDEwNSwxMjAyMDYsMTA1LDEyMDI1OCwxMDUsMTIwMzEwLDEwNSwxMjAzNjIsMTA1LDEyMDQxNCwxMDUsMTIwNDY2LDEwNSwxMjA0ODQsMTA1LDYxOCwxMDUsNjE3LDEwNSw5NTMsMTA1LDgxMjYsMTA1LDg5MCwxMDUsMTIwNTIyLDEwNSwxMjA1ODAsMTA1LDEyMDYzOCwxMDUsMTIwNjk2LDEwNSwxMjA3NTQsMTA1LDExMTAsMTA1LDQyNTY3LDEwNSwxMjMxLDEwNSw0Mzg5MywxMDUsNTAyOSwxMDUsNzE4NzUsMTA1LDY1MzU0LDEwNiw4NTIxLDEwNiwxMTk4NDMsMTA2LDExOTg5NSwxMDYsMTE5OTQ3LDEwNiwxMTk5OTksMTA2LDEyMDA1MSwxMDYsMTIwMTAzLDEwNiwxMjAxNTUsMTA2LDEyMDIwNywxMDYsMTIwMjU5LDEwNiwxMjAzMTEsMTA2LDEyMDM2MywxMDYsMTIwNDE1LDEwNiwxMjA0NjcsMTA2LDEwMTEsMTA2LDExMTIsMTA2LDY1MzIyLDc0LDExOTgxNyw3NCwxMTk4NjksNzQsMTE5OTIxLDc0LDExOTk3Myw3NCwxMjAwMjUsNzQsMTIwMDc3LDc0LDEyMDEyOSw3NCwxMjAxODEsNzQsMTIwMjMzLDc0LDEyMDI4NSw3NCwxMjAzMzcsNzQsMTIwMzg5LDc0LDEyMDQ0MSw3NCw0MjkzMCw3NCw4OTUsNzQsMTAzMiw3NCw1MDM1LDc0LDUyNjEsNzQsNDIyMDEsNzQsMTE5ODQ0LDEwNywxMTk4OTYsMTA3LDExOTk0OCwxMDcsMTIwMDAwLDEwNywxMjAwNTIsMTA3LDEyMDEwNCwxMDcsMTIwMTU2LDEwNywxMjAyMDgsMTA3LDEyMDI2MCwxMDcsMTIwMzEyLDEwNywxMjAzNjQsMTA3LDEyMDQxNiwxMDcsMTIwNDY4LDEwNyw4NDkwLDc1LDY1MzIzLDc1LDExOTgxOCw3NSwxMTk4NzAsNzUsMTE5OTIyLDc1LDExOTk3NCw3NSwxMjAwMjYsNzUsMTIwMDc4LDc1LDEyMDEzMCw3NSwxMjAxODIsNzUsMTIwMjM0LDc1LDEyMDI4Niw3NSwxMjAzMzgsNzUsMTIwMzkwLDc1LDEyMDQ0Miw3NSw5MjIsNzUsMTIwNDk3LDc1LDEyMDU1NSw3NSwxMjA2MTMsNzUsMTIwNjcxLDc1LDEyMDcyOSw3NSwxMTQxMiw3NSw1MDk0LDc1LDU4NDUsNzUsNDIxOTksNzUsNjY4NDAsNzUsMTQ3MiwxMDgsODczOSw3Myw5MjEzLDczLDY1NTEyLDczLDE2MzMsMTA4LDE3NzcsNzMsNjYzMzYsMTA4LDEyNTEyNywxMDgsMTIwNzgzLDczLDEyMDc5Myw3MywxMjA4MDMsNzMsMTIwODEzLDczLDEyMDgyMyw3MywxMzAwMzMsNzMsNjUzMjEsNzMsODU0NCw3Myw4NDY0LDczLDg0NjUsNzMsMTE5ODE2LDczLDExOTg2OCw3MywxMTk5MjAsNzMsMTIwMDI0LDczLDEyMDEyOCw3MywxMjAxODAsNzMsMTIwMjMyLDczLDEyMDI4NCw3MywxMjAzMzYsNzMsMTIwMzg4LDczLDEyMDQ0MCw3Myw2NTM1NiwxMDgsODU3Miw3Myw4NDY3LDEwOCwxMTk4NDUsMTA4LDExOTg5NywxMDgsMTE5OTQ5LDEwOCwxMjAwMDEsMTA4LDEyMDA1MywxMDgsMTIwMTA1LDczLDEyMDE1Nyw3MywxMjAyMDksNzMsMTIwMjYxLDczLDEyMDMxMyw3MywxMjAzNjUsNzMsMTIwNDE3LDczLDEyMDQ2OSw3Myw0NDgsNzMsMTIwNDk2LDczLDEyMDU1NCw3MywxMjA2MTIsNzMsMTIwNjcwLDczLDEyMDcyOCw3MywxMTQxMCw3MywxMDMwLDczLDEyMTYsNzMsMTQ5MywxMDgsMTUwMywxMDgsMTU3NSwxMDgsMTI2NDY0LDEwOCwxMjY1OTIsMTA4LDY1MTY2LDEwOCw2NTE2NSwxMDgsMTk5NCwxMDgsMTE1OTksNzMsNTgyNSw3Myw0MjIyNiw3Myw5Mzk5Miw3Myw2NjE4NiwxMjQsNjYzMTMsMTI0LDExOTMzOCw3Niw4NTU2LDc2LDg0NjYsNzYsMTE5ODE5LDc2LDExOTg3MSw3NiwxMTk5MjMsNzYsMTIwMDI3LDc2LDEyMDA3OSw3NiwxMjAxMzEsNzYsMTIwMTgzLDc2LDEyMDIzNSw3NiwxMjAyODcsNzYsMTIwMzM5LDc2LDEyMDM5MSw3NiwxMjA0NDMsNzYsMTE0NzIsNzYsNTA4Niw3Niw1MjkwLDc2LDQyMjA5LDc2LDkzOTc0LDc2LDcxODQzLDc2LDcxODU4LDc2LDY2NTg3LDc2LDY2ODU0LDc2LDY1MzI1LDc3LDg1NTksNzcsODQ5OSw3NywxMTk4MjAsNzcsMTE5ODcyLDc3LDExOTkyNCw3NywxMjAwMjgsNzcsMTIwMDgwLDc3LDEyMDEzMiw3NywxMjAxODQsNzcsMTIwMjM2LDc3LDEyMDI4OCw3NywxMjAzNDAsNzcsMTIwMzkyLDc3LDEyMDQ0NCw3Nyw5MjQsNzcsMTIwNDk5LDc3LDEyMDU1Nyw3NywxMjA2MTUsNzcsMTIwNjczLDc3LDEyMDczMSw3NywxMDE4LDc3LDExNDE2LDc3LDUwNDcsNzcsNTYxNiw3Nyw1ODQ2LDc3LDQyMjA3LDc3LDY2MjI0LDc3LDY2MzIxLDc3LDExOTg0NywxMTAsMTE5ODk5LDExMCwxMTk5NTEsMTEwLDEyMDAwMywxMTAsMTIwMDU1LDExMCwxMjAxMDcsMTEwLDEyMDE1OSwxMTAsMTIwMjExLDExMCwxMjAyNjMsMTEwLDEyMDMxNSwxMTAsMTIwMzY3LDExMCwxMjA0MTksMTEwLDEyMDQ3MSwxMTAsMTQwMCwxMTAsMTQwNCwxMTAsNjUzMjYsNzgsODQ2OSw3OCwxMTk4MjEsNzgsMTE5ODczLDc4LDExOTkyNSw3OCwxMTk5NzcsNzgsMTIwMDI5LDc4LDEyMDA4MSw3OCwxMjAxODUsNzgsMTIwMjM3LDc4LDEyMDI4OSw3OCwxMjAzNDEsNzgsMTIwMzkzLDc4LDEyMDQ0NSw3OCw5MjUsNzgsMTIwNTAwLDc4LDEyMDU1OCw3OCwxMjA2MTYsNzgsMTIwNjc0LDc4LDEyMDczMiw3OCwxMTQxOCw3OCw0MjIwOCw3OCw2NjgzNSw3OCwzMDc0LDExMSwzMjAyLDExMSwzMzMwLDExMSwzNDU4LDExMSwyNDA2LDExMSwyNjYyLDExMSwyNzkwLDExMSwzMDQ2LDExMSwzMTc0LDExMSwzMzAyLDExMSwzNDMwLDExMSwzNjY0LDExMSwzNzkyLDExMSw0MTYwLDExMSwxNjM3LDExMSwxNzgxLDExMSw2NTM1OSwxMTEsODUwMCwxMTEsMTE5ODQ4LDExMSwxMTk5MDAsMTExLDExOTk1MiwxMTEsMTIwMDU2LDExMSwxMjAxMDgsMTExLDEyMDE2MCwxMTEsMTIwMjEyLDExMSwxMjAyNjQsMTExLDEyMDMxNiwxMTEsMTIwMzY4LDExMSwxMjA0MjAsMTExLDEyMDQ3MiwxMTEsNzQzOSwxMTEsNzQ0MSwxMTEsNDM4MzcsMTExLDk1OSwxMTEsMTIwNTI4LDExMSwxMjA1ODYsMTExLDEyMDY0NCwxMTEsMTIwNzAyLDExMSwxMjA3NjAsMTExLDk2MywxMTEsMTIwNTMyLDExMSwxMjA1OTAsMTExLDEyMDY0OCwxMTEsMTIwNzA2LDExMSwxMjA3NjQsMTExLDExNDIzLDExMSw0MzUxLDExMSwxNDEzLDExMSwxNTA1LDExMSwxNjA3LDExMSwxMjY1MDAsMTExLDEyNjU2NCwxMTEsMTI2NTk2LDExMSw2NTI1OSwxMTEsNjUyNjAsMTExLDY1MjU4LDExMSw2NTI1NywxMTEsMTcyNiwxMTEsNjQ0MjgsMTExLDY0NDI5LDExMSw2NDQyNywxMTEsNjQ0MjYsMTExLDE3MjksMTExLDY0NDI0LDExMSw2NDQyNSwxMTEsNjQ0MjMsMTExLDY0NDIyLDExMSwxNzQ5LDExMSwzMzYwLDExMSw0MTI1LDExMSw2Njc5NCwxMTEsNzE4ODAsMTExLDcxODk1LDExMSw2NjYwNCwxMTEsMTk4NCw3OSwyNTM0LDc5LDI5MTgsNzksMTIyOTUsNzksNzA4NjQsNzksNzE5MDQsNzksMTIwNzgyLDc5LDEyMDc5Miw3OSwxMjA4MDIsNzksMTIwODEyLDc5LDEyMDgyMiw3OSwxMzAwMzIsNzksNjUzMjcsNzksMTE5ODIyLDc5LDExOTg3NCw3OSwxMTk5MjYsNzksMTE5OTc4LDc5LDEyMDAzMCw3OSwxMjAwODIsNzksMTIwMTM0LDc5LDEyMDE4Niw3OSwxMjAyMzgsNzksMTIwMjkwLDc5LDEyMDM0Miw3OSwxMjAzOTQsNzksMTIwNDQ2LDc5LDkyNyw3OSwxMjA1MDIsNzksMTIwNTYwLDc5LDEyMDYxOCw3OSwxMjA2NzYsNzksMTIwNzM0LDc5LDExNDIyLDc5LDEzNjUsNzksMTE2MDQsNzksNDgxNiw3OSwyODQ4LDc5LDY2NzU0LDc5LDQyMjI3LDc5LDcxODYxLDc5LDY2MTk0LDc5LDY2MjE5LDc5LDY2NTY0LDc5LDY2ODM4LDc5LDkwNzYsMTEyLDY1MzYwLDExMiwxMTk4NDksMTEyLDExOTkwMSwxMTIsMTE5OTUzLDExMiwxMjAwMDUsMTEyLDEyMDA1NywxMTIsMTIwMTA5LDExMiwxMjAxNjEsMTEyLDEyMDIxMywxMTIsMTIwMjY1LDExMiwxMjAzMTcsMTEyLDEyMDM2OSwxMTIsMTIwNDIxLDExMiwxMjA0NzMsMTEyLDk2MSwxMTIsMTIwNTMwLDExMiwxMjA1NDQsMTEyLDEyMDU4OCwxMTIsMTIwNjAyLDExMiwxMjA2NDYsMTEyLDEyMDY2MCwxMTIsMTIwNzA0LDExMiwxMjA3MTgsMTEyLDEyMDc2MiwxMTIsMTIwNzc2LDExMiwxMTQyNywxMTIsNjUzMjgsODAsODQ3Myw4MCwxMTk4MjMsODAsMTE5ODc1LDgwLDExOTkyNyw4MCwxMTk5NzksODAsMTIwMDMxLDgwLDEyMDA4Myw4MCwxMjAxODcsODAsMTIwMjM5LDgwLDEyMDI5MSw4MCwxMjAzNDMsODAsMTIwMzk1LDgwLDEyMDQ0Nyw4MCw5MjksODAsMTIwNTA0LDgwLDEyMDU2Miw4MCwxMjA2MjAsODAsMTIwNjc4LDgwLDEyMDczNiw4MCwxMTQyNiw4MCw1MDkwLDgwLDUyMjksODAsNDIxOTMsODAsNjYxOTcsODAsMTE5ODUwLDExMywxMTk5MDIsMTEzLDExOTk1NCwxMTMsMTIwMDA2LDExMywxMjAwNTgsMTEzLDEyMDExMCwxMTMsMTIwMTYyLDExMywxMjAyMTQsMTEzLDEyMDI2NiwxMTMsMTIwMzE4LDExMywxMjAzNzAsMTEzLDEyMDQyMiwxMTMsMTIwNDc0LDExMywxMzA3LDExMywxMzc5LDExMywxMzgyLDExMyw4NDc0LDgxLDExOTgyNCw4MSwxMTk4NzYsODEsMTE5OTI4LDgxLDExOTk4MCw4MSwxMjAwMzIsODEsMTIwMDg0LDgxLDEyMDE4OCw4MSwxMjAyNDAsODEsMTIwMjkyLDgxLDEyMDM0NCw4MSwxMjAzOTYsODEsMTIwNDQ4LDgxLDExNjA1LDgxLDExOTg1MSwxMTQsMTE5OTAzLDExNCwxMTk5NTUsMTE0LDEyMDAwNywxMTQsMTIwMDU5LDExNCwxMjAxMTEsMTE0LDEyMDE2MywxMTQsMTIwMjE1LDExNCwxMjAyNjcsMTE0LDEyMDMxOSwxMTQsMTIwMzcxLDExNCwxMjA0MjMsMTE0LDEyMDQ3NSwxMTQsNDM4NDcsMTE0LDQzODQ4LDExNCw3NDYyLDExNCwxMTM5NywxMTQsNDM5MDUsMTE0LDExOTMxOCw4Miw4NDc1LDgyLDg0NzYsODIsODQ3Nyw4MiwxMTk4MjUsODIsMTE5ODc3LDgyLDExOTkyOSw4MiwxMjAwMzMsODIsMTIwMTg5LDgyLDEyMDI0MSw4MiwxMjAyOTMsODIsMTIwMzQ1LDgyLDEyMDM5Nyw4MiwxMjA0NDksODIsNDIyLDgyLDUwMjUsODIsNTA3NCw4Miw2Njc0MCw4Miw1NTExLDgyLDQyMjExLDgyLDk0MDA1LDgyLDY1MzYzLDExNSwxMTk4NTIsMTE1LDExOTkwNCwxMTUsMTE5OTU2LDExNSwxMjAwMDgsMTE1LDEyMDA2MCwxMTUsMTIwMTEyLDExNSwxMjAxNjQsMTE1LDEyMDIxNiwxMTUsMTIwMjY4LDExNSwxMjAzMjAsMTE1LDEyMDM3MiwxMTUsMTIwNDI0LDExNSwxMjA0NzYsMTE1LDQyODAxLDExNSw0NDUsMTE1LDExMDksMTE1LDQzOTQ2LDExNSw3MTg3MywxMTUsNjY2MzIsMTE1LDY1MzMxLDgzLDExOTgyNiw4MywxMTk4NzgsODMsMTE5OTMwLDgzLDExOTk4Miw4MywxMjAwMzQsODMsMTIwMDg2LDgzLDEyMDEzOCw4MywxMjAxOTAsODMsMTIwMjQyLDgzLDEyMDI5NCw4MywxMjAzNDYsODMsMTIwMzk4LDgzLDEyMDQ1MCw4MywxMDI5LDgzLDEzNTksODMsNTA3Nyw4Myw1MDgyLDgzLDQyMjEwLDgzLDk0MDEwLDgzLDY2MTk4LDgzLDY2NTkyLDgzLDExOTg1MywxMTYsMTE5OTA1LDExNiwxMTk5NTcsMTE2LDEyMDAwOSwxMTYsMTIwMDYxLDExNiwxMjAxMTMsMTE2LDEyMDE2NSwxMTYsMTIwMjE3LDExNiwxMjAyNjksMTE2LDEyMDMyMSwxMTYsMTIwMzczLDExNiwxMjA0MjUsMTE2LDEyMDQ3NywxMTYsODg2OCw4NCwxMDIwMSw4NCwxMjg4NzIsODQsNjUzMzIsODQsMTE5ODI3LDg0LDExOTg3OSw4NCwxMTk5MzEsODQsMTE5OTgzLDg0LDEyMDAzNSw4NCwxMjAwODcsODQsMTIwMTM5LDg0LDEyMDE5MSw4NCwxMjAyNDMsODQsMTIwMjk1LDg0LDEyMDM0Nyw4NCwxMjAzOTksODQsMTIwNDUxLDg0LDkzMiw4NCwxMjA1MDcsODQsMTIwNTY1LDg0LDEyMDYyMyw4NCwxMjA2ODEsODQsMTIwNzM5LDg0LDExNDMwLDg0LDUwMjYsODQsNDIxOTYsODQsOTM5NjIsODQsNzE4NjgsODQsNjYxOTksODQsNjYyMjUsODQsNjYzMjUsODQsMTE5ODU0LDExNywxMTk5MDYsMTE3LDExOTk1OCwxMTcsMTIwMDEwLDExNywxMjAwNjIsMTE3LDEyMDExNCwxMTcsMTIwMTY2LDExNywxMjAyMTgsMTE3LDEyMDI3MCwxMTcsMTIwMzIyLDExNywxMjAzNzQsMTE3LDEyMDQyNiwxMTcsMTIwNDc4LDExNyw0MjkxMSwxMTcsNzQ1MiwxMTcsNDM4NTQsMTE3LDQzODU4LDExNyw2NTEsMTE3LDk2NSwxMTcsMTIwNTM0LDExNywxMjA1OTIsMTE3LDEyMDY1MCwxMTcsMTIwNzA4LDExNywxMjA3NjYsMTE3LDE0MDUsMTE3LDY2ODA2LDExNyw3MTg5NiwxMTcsODc0Niw4NSw4ODk5LDg1LDExOTgyOCw4NSwxMTk4ODAsODUsMTE5OTMyLDg1LDExOTk4NCw4NSwxMjAwMzYsODUsMTIwMDg4LDg1LDEyMDE0MCw4NSwxMjAxOTIsODUsMTIwMjQ0LDg1LDEyMDI5Niw4NSwxMjAzNDgsODUsMTIwNDAwLDg1LDEyMDQ1Miw4NSwxMzU3LDg1LDQ2MDgsODUsNjY3NjYsODUsNTE5Niw4NSw0MjIyOCw4NSw5NDAxOCw4NSw3MTg2NCw4NSw4NzQ0LDExOCw4ODk3LDExOCw2NTM2NiwxMTgsODU2NCwxMTgsMTE5ODU1LDExOCwxMTk5MDcsMTE4LDExOTk1OSwxMTgsMTIwMDExLDExOCwxMjAwNjMsMTE4LDEyMDExNSwxMTgsMTIwMTY3LDExOCwxMjAyMTksMTE4LDEyMDI3MSwxMTgsMTIwMzIzLDExOCwxMjAzNzUsMTE4LDEyMDQyNywxMTgsMTIwNDc5LDExOCw3NDU2LDExOCw5NTcsMTE4LDEyMDUyNiwxMTgsMTIwNTg0LDExOCwxMjA2NDIsMTE4LDEyMDcwMCwxMTgsMTIwNzU4LDExOCwxMTQxLDExOCwxNDk2LDExOCw3MTQzMCwxMTgsNDM5NDUsMTE4LDcxODcyLDExOCwxMTkzMDksODYsMTYzOSw4NiwxNzgzLDg2LDg1NDgsODYsMTE5ODI5LDg2LDExOTg4MSw4NiwxMTk5MzMsODYsMTE5OTg1LDg2LDEyMDAzNyw4NiwxMjAwODksODYsMTIwMTQxLDg2LDEyMDE5Myw4NiwxMjAyNDUsODYsMTIwMjk3LDg2LDEyMDM0OSw4NiwxMjA0MDEsODYsMTIwNDUzLDg2LDExNDAsODYsMTE1NzYsODYsNTA4MSw4Niw1MTY3LDg2LDQyNzE5LDg2LDQyMjE0LDg2LDkzOTYwLDg2LDcxODQwLDg2LDY2ODQ1LDg2LDYyMywxMTksMTE5ODU2LDExOSwxMTk5MDgsMTE5LDExOTk2MCwxMTksMTIwMDEyLDExOSwxMjAwNjQsMTE5LDEyMDExNiwxMTksMTIwMTY4LDExOSwxMjAyMjAsMTE5LDEyMDI3MiwxMTksMTIwMzI0LDExOSwxMjAzNzYsMTE5LDEyMDQyOCwxMTksMTIwNDgwLDExOSw3NDU3LDExOSwxMTIxLDExOSwxMzA5LDExOSwxMzc3LDExOSw3MTQzNCwxMTksNzE0MzgsMTE5LDcxNDM5LDExOSw0MzkwNywxMTksNzE5MTksODcsNzE5MTAsODcsMTE5ODMwLDg3LDExOTg4Miw4NywxMTk5MzQsODcsMTE5OTg2LDg3LDEyMDAzOCw4NywxMjAwOTAsODcsMTIwMTQyLDg3LDEyMDE5NCw4NywxMjAyNDYsODcsMTIwMjk4LDg3LDEyMDM1MCw4NywxMjA0MDIsODcsMTIwNDU0LDg3LDEzMDgsODcsNTA0Myw4Nyw1MDc2LDg3LDQyMjE4LDg3LDU3NDIsMTIwLDEwNTM5LDEyMCwxMDU0MCwxMjAsMTA3OTksMTIwLDY1MzY4LDEyMCw4NTY5LDEyMCwxMTk4NTcsMTIwLDExOTkwOSwxMjAsMTE5OTYxLDEyMCwxMjAwMTMsMTIwLDEyMDA2NSwxMjAsMTIwMTE3LDEyMCwxMjAxNjksMTIwLDEyMDIyMSwxMjAsMTIwMjczLDEyMCwxMjAzMjUsMTIwLDEyMDM3NywxMjAsMTIwNDI5LDEyMCwxMjA0ODEsMTIwLDU0NDEsMTIwLDU1MDEsMTIwLDU3NDEsODgsOTU4Nyw4OCw2NjMzOCw4OCw3MTkxNiw4OCw2NTMzNiw4OCw4NTUzLDg4LDExOTgzMSw4OCwxMTk4ODMsODgsMTE5OTM1LDg4LDExOTk4Nyw4OCwxMjAwMzksODgsMTIwMDkxLDg4LDEyMDE0Myw4OCwxMjAxOTUsODgsMTIwMjQ3LDg4LDEyMDI5OSw4OCwxMjAzNTEsODgsMTIwNDAzLDg4LDEyMDQ1NSw4OCw0MjkzMSw4OCw5MzUsODgsMTIwNTEwLDg4LDEyMDU2OCw4OCwxMjA2MjYsODgsMTIwNjg0LDg4LDEyMDc0Miw4OCwxMTQzNiw4OCwxMTYxMyw4OCw1ODE1LDg4LDQyMjE5LDg4LDY2MTkyLDg4LDY2MjI4LDg4LDY2MzI3LDg4LDY2ODU1LDg4LDYxMSwxMjEsNzU2NCwxMjEsNjUzNjksMTIxLDExOTg1OCwxMjEsMTE5OTEwLDEyMSwxMTk5NjIsMTIxLDEyMDAxNCwxMjEsMTIwMDY2LDEyMSwxMjAxMTgsMTIxLDEyMDE3MCwxMjEsMTIwMjIyLDEyMSwxMjAyNzQsMTIxLDEyMDMyNiwxMjEsMTIwMzc4LDEyMSwxMjA0MzAsMTIxLDEyMDQ4MiwxMjEsNjU1LDEyMSw3OTM1LDEyMSw0Mzg2NiwxMjEsOTQ3LDEyMSw4NTA5LDEyMSwxMjA1MTYsMTIxLDEyMDU3NCwxMjEsMTIwNjMyLDEyMSwxMjA2OTAsMTIxLDEyMDc0OCwxMjEsMTE5OSwxMjEsNDMyNywxMjEsNzE5MDAsMTIxLDY1MzM3LDg5LDExOTgzMiw4OSwxMTk4ODQsODksMTE5OTM2LDg5LDExOTk4OCw4OSwxMjAwNDAsODksMTIwMDkyLDg5LDEyMDE0NCw4OSwxMjAxOTYsODksMTIwMjQ4LDg5LDEyMDMwMCw4OSwxMjAzNTIsODksMTIwNDA0LDg5LDEyMDQ1Niw4OSw5MzMsODksOTc4LDg5LDEyMDUwOCw4OSwxMjA1NjYsODksMTIwNjI0LDg5LDEyMDY4Miw4OSwxMjA3NDAsODksMTE0MzIsODksMTE5OCw4OSw1MDMzLDg5LDUwNTMsODksNDIyMjAsODksOTQwMTksODksNzE4NDQsODksNjYyMjYsODksMTE5ODU5LDEyMiwxMTk5MTEsMTIyLDExOTk2MywxMjIsMTIwMDE1LDEyMiwxMjAwNjcsMTIyLDEyMDExOSwxMjIsMTIwMTcxLDEyMiwxMjAyMjMsMTIyLDEyMDI3NSwxMjIsMTIwMzI3LDEyMiwxMjAzNzksMTIyLDEyMDQzMSwxMjIsMTIwNDgzLDEyMiw3NDU4LDEyMiw0MzkyMywxMjIsNzE4NzYsMTIyLDY2MjkzLDkwLDcxOTA5LDkwLDY1MzM4LDkwLDg0ODQsOTAsODQ4OCw5MCwxMTk4MzMsOTAsMTE5ODg1LDkwLDExOTkzNyw5MCwxMTk5ODksOTAsMTIwMDQxLDkwLDEyMDE5Nyw5MCwxMjAyNDksOTAsMTIwMzAxLDkwLDEyMDM1Myw5MCwxMjA0MDUsOTAsMTIwNDU3LDkwLDkxOCw5MCwxMjA0OTMsOTAsMTIwNTUxLDkwLDEyMDYwOSw5MCwxMjA2NjcsOTAsMTIwNzI1LDkwLDUwNTksOTAsNDIyMDQsOTAsNzE4NDksOTAsNjUyODIsMzQsNjUyODQsMzYsNjUyODUsMzcsNjUyODYsMzgsNjUyOTAsNDIsNjUyOTEsNDMsNjUyOTQsNDYsNjUyOTUsNDcsNjUyOTYsNDgsNjUyOTcsNDksNjUyOTgsNTAsNjUyOTksNTEsNjUzMDAsNTIsNjUzMDEsNTMsNjUzMDIsNTQsNjUzMDMsNTUsNjUzMDQsNTYsNjUzMDUsNTcsNjUzMDgsNjAsNjUzMDksNjEsNjUzMTAsNjIsNjUzMTIsNjQsNjUzMTYsNjgsNjUzMTgsNzAsNjUzMTksNzEsNjUzMjQsNzYsNjUzMjksODEsNjUzMzAsODIsNjUzMzMsODUsNjUzMzQsODYsNjUzMzUsODcsNjUzNDMsOTUsNjUzNDYsOTgsNjUzNDgsMTAwLDY1MzUwLDEwMiw2NTM1NSwxMDcsNjUzNTcsMTA5LDY1MzU4LDExMCw2NTM2MSwxMTMsNjUzNjIsMTE0LDY1MzY0LDExNiw2NTM2NSwxMTcsNjUzNjcsMTE5LDY1MzcwLDEyMiw2NTM3MSwxMjMsNjUzNzMsMTI1XSwiX2RlZmF1bHQiOlsxNjAsMzIsODIxMSw0NSw2NTM3NCwxMjYsNjUzMDYsNTgsNjUyODEsMzMsODIxNiw5Niw4MjE3LDk2LDgyNDUsOTYsMTgwLDk2LDEyNDk0LDQ3LDEwNDcsNTEsMTA3Myw1NCwxMDcyLDk3LDEwNDAsNjUsMTA2OCw5OCwxMDQyLDY2LDEwODksOTksMTA1Nyw2NywxMDc3LDEwMSwxMDQ1LDY5LDEwNTMsNzIsMzA1LDEwNSwxMDUwLDc1LDkyMSw3MywxMDUyLDc3LDEwODYsMTExLDEwNTQsNzksMTAwOSwxMTIsMTA4OCwxMTIsMTA1Niw4MCwxMDc1LDExNCwxMDU4LDg0LDIxNSwxMjAsMTA5MywxMjAsMTA2MSw4OCwxMDkxLDEyMSwxMDU5LDg5LDY1MjgzLDM1LDY1Mjg4LDQwLDY1Mjg5LDQxLDY1MjkyLDQ0LDY1MzA3LDU5LDY1MzExLDYzXSwiY3MiOls2NTM3NCwxMjYsNjUzMDYsNTgsNjUyODEsMzMsODIxNiw5Niw4MjE3LDk2LDgyNDUsOTYsMTgwLDk2LDEyNDk0LDQ3LDEwNDcsNTEsMTA3Myw1NCwxMDcyLDk3LDEwNDAsNjUsMTA2OCw5OCwxMDQyLDY2LDEwODksOTksMTA1Nyw2NywxMDc3LDEwMSwxMDQ1LDY5LDEwNTMsNzIsMzA1LDEwNSwxMDUwLDc1LDkyMSw3MywxMDUyLDc3LDEwODYsMTExLDEwNTQsNzksMTAwOSwxMTIsMTA4OCwxMTIsMTA1Niw4MCwxMDc1LDExNCwxMDU4LDg0LDEwOTMsMTIwLDEwNjEsODgsMTA5MSwxMjEsMTA1OSw4OSw2NTI4MywzNSw2NTI4OCw0MCw2NTI4OSw0MSw2NTI5Miw0NCw2NTMwNyw1OSw2NTMxMSw2M10sImRlIjpbNjUzNzQsMTI2LDY1MzA2LDU4LDY1MjgxLDMzLDgyMTYsOTYsODIxNyw5Niw4MjQ1LDk2LDE4MCw5NiwxMjQ5NCw0NywxMDQ3LDUxLDEwNzMsNTQsMTA3Miw5NywxMDQwLDY1LDEwNjgsOTgsMTA0Miw2NiwxMDg5LDk5LDEwNTcsNjcsMTA3NywxMDEsMTA0NSw2OSwxMDUzLDcyLDMwNSwxMDUsMTA1MCw3NSw5MjEsNzMsMTA1Miw3NywxMDg2LDExMSwxMDU0LDc5LDEwMDksMTEyLDEwODgsMTEyLDEwNTYsODAsMTA3NSwxMTQsMTA1OCw4NCwxMDkzLDEyMCwxMDYxLDg4LDEwOTEsMTIxLDEwNTksODksNjUyODMsMzUsNjUyODgsNDAsNjUyODksNDEsNjUyOTIsNDQsNjUzMDcsNTksNjUzMTEsNjNdLCJlcyI6WzgyMTEsNDUsNjUzNzQsMTI2LDY1MzA2LDU4LDY1MjgxLDMzLDgyNDUsOTYsMTgwLDk2LDEyNDk0LDQ3LDEwNDcsNTEsMTA3Myw1NCwxMDcyLDk3LDEwNDAsNjUsMTA2OCw5OCwxMDQyLDY2LDEwODksOTksMTA1Nyw2NywxMDc3LDEwMSwxMDQ1LDY5LDEwNTMsNzIsMzA1LDEwNSwxMDUwLDc1LDEwNTIsNzcsMTA4NiwxMTEsMTA1NCw3OSwxMDA5LDExMiwxMDg4LDExMiwxMDU2LDgwLDEwNzUsMTE0LDEwNTgsODQsMjE1LDEyMCwxMDkzLDEyMCwxMDYxLDg4LDEwOTEsMTIxLDEwNTksODksNjUyODMsMzUsNjUyODgsNDAsNjUyODksNDEsNjUyOTIsNDQsNjUzMDcsNTksNjUzMTEsNjNdLCJmciI6WzY1Mzc0LDEyNiw2NTMwNiw1OCw2NTI4MSwzMyw4MjE2LDk2LDgyNDUsOTYsMTI0OTQsNDcsMTA0Nyw1MSwxMDczLDU0LDEwNzIsOTcsMTA0MCw2NSwxMDY4LDk4LDEwNDIsNjYsMTA4OSw5OSwxMDU3LDY3LDEwNzcsMTAxLDEwNDUsNjksMTA1Myw3MiwzMDUsMTA1LDEwNTAsNzUsOTIxLDczLDEwNTIsNzcsMTA4NiwxMTEsMTA1NCw3OSwxMDA5LDExMiwxMDg4LDExMiwxMDU2LDgwLDEwNzUsMTE0LDEwNTgsODQsMjE1LDEyMCwxMDkzLDEyMCwxMDYxLDg4LDEwOTEsMTIxLDEwNTksODksNjUyODMsMzUsNjUyODgsNDAsNjUyODksNDEsNjUyOTIsNDQsNjUzMDcsNTksNjUzMTEsNjNdLCJpdCI6WzE2MCwzMiw4MjExLDQ1LDY1Mzc0LDEyNiw2NTMwNiw1OCw2NTI4MSwzMyw4MjE2LDk2LDgyNDUsOTYsMTgwLDk2LDEyNDk0LDQ3LDEwNDcsNTEsMTA3Myw1NCwxMDcyLDk3LDEwNDAsNjUsMTA2OCw5OCwxMDQyLDY2LDEwODksOTksMTA1Nyw2NywxMDc3LDEwMSwxMDQ1LDY5LDEwNTMsNzIsMzA1LDEwNSwxMDUwLDc1LDkyMSw3MywxMDUyLDc3LDEwODYsMTExLDEwNTQsNzksMTAwOSwxMTIsMTA4OCwxMTIsMTA1Niw4MCwxMDc1LDExNCwxMDU4LDg0LDIxNSwxMjAsMTA5MywxMjAsMTA2MSw4OCwxMDkxLDEyMSwxMDU5LDg5LDY1MjgzLDM1LDY1Mjg4LDQwLDY1Mjg5LDQxLDY1MjkyLDQ0LDY1MzA3LDU5LDY1MzExLDYzXSwiamEiOls4MjExLDQ1LDY1MzA2LDU4LDY1MjgxLDMzLDgyMTYsOTYsODIxNyw5Niw4MjQ1LDk2LDE4MCw5NiwxMDQ3LDUxLDEwNzMsNTQsMTA3Miw5NywxMDQwLDY1LDEwNjgsOTgsMTA0Miw2NiwxMDg5LDk5LDEwNTcsNjcsMTA3NywxMDEsMTA0NSw2OSwxMDUzLDcyLDMwNSwxMDUsMTA1MCw3NSw5MjEsNzMsMTA1Miw3NywxMDg2LDExMSwxMDU0LDc5LDEwMDksMTEyLDEwODgsMTEyLDEwNTYsODAsMTA3NSwxMTQsMTA1OCw4NCwyMTUsMTIwLDEwOTMsMTIwLDEwNjEsODgsMTA5MSwxMjEsMTA1OSw4OSw2NTI4MywzNSw2NTI5Miw0NCw2NTMwNyw1OV0sImtvIjpbODIxMSw0NSw2NTM3NCwxMjYsNjUzMDYsNTgsNjUyODEsMzMsODI0NSw5NiwxODAsOTYsMTI0OTQsNDcsMTA0Nyw1MSwxMDczLDU0LDEwNzIsOTcsMTA0MCw2NSwxMDY4LDk4LDEwNDIsNjYsMTA4OSw5OSwxMDU3LDY3LDEwNzcsMTAxLDEwNDUsNjksMTA1Myw3MiwzMDUsMTA1LDEwNTAsNzUsOTIxLDczLDEwNTIsNzcsMTA4NiwxMTEsMTA1NCw3OSwxMDA5LDExMiwxMDg4LDExMiwxMDU2LDgwLDEwNzUsMTE0LDEwNTgsODQsMjE1LDEyMCwxMDkzLDEyMCwxMDYxLDg4LDEwOTEsMTIxLDEwNTksODksNjUyODMsMzUsNjUyODgsNDAsNjUyODksNDEsNjUyOTIsNDQsNjUzMDcsNTksNjUzMTEsNjNdLCJwbCI6WzY1Mzc0LDEyNiw2NTMwNiw1OCw2NTI4MSwzMyw4MjE2LDk2LDgyMTcsOTYsODI0NSw5NiwxODAsOTYsMTI0OTQsNDcsMTA0Nyw1MSwxMDczLDU0LDEwNzIsOTcsMTA0MCw2NSwxMDY4LDk4LDEwNDIsNjYsMTA4OSw5OSwxMDU3LDY3LDEwNzcsMTAxLDEwNDUsNjksMTA1Myw3MiwzMDUsMTA1LDEwNTAsNzUsOTIxLDczLDEwNTIsNzcsMTA4NiwxMTEsMTA1NCw3OSwxMDA5LDExMiwxMDg4LDExMiwxMDU2LDgwLDEwNzUsMTE0LDEwNTgsODQsMjE1LDEyMCwxMDkzLDEyMCwxMDYxLDg4LDEwOTEsMTIxLDEwNTksODksNjUyODMsMzUsNjUyODgsNDAsNjUyODksNDEsNjUyOTIsNDQsNjUzMDcsNTksNjUzMTEsNjNdLCJwdC1CUiI6WzY1Mzc0LDEyNiw2NTMwNiw1OCw2NTI4MSwzMyw4MjE2LDk2LDgyMTcsOTYsODI0NSw5NiwxODAsOTYsMTI0OTQsNDcsMTA0Nyw1MSwxMDczLDU0LDEwNzIsOTcsMTA0MCw2NSwxMDY4LDk4LDEwNDIsNjYsMTA4OSw5OSwxMDU3LDY3LDEwNzcsMTAxLDEwNDUsNjksMTA1Myw3MiwzMDUsMTA1LDEwNTAsNzUsOTIxLDczLDEwNTIsNzcsMTA4NiwxMTEsMTA1NCw3OSwxMDA5LDExMiwxMDg4LDExMiwxMDU2LDgwLDEwNzUsMTE0LDEwNTgsODQsMjE1LDEyMCwxMDkzLDEyMCwxMDYxLDg4LDEwOTEsMTIxLDEwNTksODksNjUyODMsMzUsNjUyODgsNDAsNjUyODksNDEsNjUyOTIsNDQsNjUzMDcsNTksNjUzMTEsNjNdLCJxcHMtcGxvYyI6WzE2MCwzMiw4MjExLDQ1LDY1Mzc0LDEyNiw2NTMwNiw1OCw2NTI4MSwzMyw4MjE2LDk2LDgyMTcsOTYsODI0NSw5NiwxODAsOTYsMTI0OTQsNDcsMTA0Nyw1MSwxMDczLDU0LDEwNzIsOTcsMTA0MCw2NSwxMDY4LDk4LDEwNDIsNjYsMTA4OSw5OSwxMDU3LDY3LDEwNzcsMTAxLDEwNDUsNjksMTA1Myw3MiwzMDUsMTA1LDEwNTAsNzUsOTIxLDczLDEwNTIsNzcsMTA4NiwxMTEsMTA1NCw3OSwxMDg4LDExMiwxMDU2LDgwLDEwNzUsMTE0LDEwNTgsODQsMjE1LDEyMCwxMDkzLDEyMCwxMDYxLDg4LDEwOTEsMTIxLDEwNTksODksNjUyODMsMzUsNjUyODgsNDAsNjUyODksNDEsNjUyOTIsNDQsNjUzMDcsNTksNjUzMTEsNjNdLCJydSI6WzY1Mzc0LDEyNiw2NTMwNiw1OCw2NTI4MSwzMyw4MjE2LDk2LDgyMTcsOTYsODI0NSw5NiwxODAsOTYsMTI0OTQsNDcsMzA1LDEwNSw5MjEsNzMsMTAwOSwxMTIsMjE1LDEyMCw2NTI4MywzNSw2NTI4OCw0MCw2NTI4OSw0MSw2NTI5Miw0NCw2NTMwNyw1OSw2NTMxMSw2M10sInRyIjpbMTYwLDMyLDgyMTEsNDUsNjUzNzQsMTI2LDY1MzA2LDU4LDY1MjgxLDMzLDgyNDUsOTYsMTgwLDk2LDEyNDk0LDQ3LDEwNDcsNTEsMTA3Myw1NCwxMDcyLDk3LDEwNDAsNjUsMTA2OCw5OCwxMDQyLDY2LDEwODksOTksMTA1Nyw2NywxMDc3LDEwMSwxMDQ1LDY5LDEwNTMsNzIsMTA1MCw3NSw5MjEsNzMsMTA1Miw3NywxMDg2LDExMSwxMDU0LDc5LDEwMDksMTEyLDEwODgsMTEyLDEwNTYsODAsMTA3NSwxMTQsMTA1OCw4NCwyMTUsMTIwLDEwOTMsMTIwLDEwNjEsODgsMTA5MSwxMjEsMTA1OSw4OSw2NTI4MywzNSw2NTI4OCw0MCw2NTI4OSw0MSw2NTI5Miw0NCw2NTMwNyw1OSw2NTMxMSw2M10sInpoLWhhbnMiOls2NTM3NCwxMjYsNjUzMDYsNTgsNjUyODEsMzMsODI0NSw5NiwxODAsOTYsMTI0OTQsNDcsMTA0Nyw1MSwxMDczLDU0LDEwNzIsOTcsMTA0MCw2NSwxMDY4LDk4LDEwNDIsNjYsMTA4OSw5OSwxMDU3LDY3LDEwNzcsMTAxLDEwNDUsNjksMTA1Myw3MiwzMDUsMTA1LDEwNTAsNzUsOTIxLDczLDEwNTIsNzcsMTA4NiwxMTEsMTA1NCw3OSwxMDA5LDExMiwxMDg4LDExMiwxMDU2LDgwLDEwNzUsMTE0LDEwNTgsODQsMjE1LDEyMCwxMDkzLDEyMCwxMDYxLDg4LDEwOTEsMTIxLDEwNTksODksNjUyODgsNDAsNjUyODksNDFdLCJ6aC1oYW50IjpbODIxMSw0NSw2NTM3NCwxMjYsMTgwLDk2LDEyNDk0LDQ3LDEwNDcsNTEsMTA3Myw1NCwxMDcyLDk3LDEwNDAsNjUsMTA2OCw5OCwxMDQyLDY2LDEwODksOTksMTA1Nyw2NywxMDc3LDEwMSwxMDQ1LDY5LDEwNTMsNzIsMzA1LDEwNSwxMDUwLDc1LDkyMSw3MywxMDUyLDc3LDEwODYsMTExLDEwNTQsNzksMTAwOSwxMTIsMTA4OCwxMTIsMTA1Niw4MCwxMDc1LDExNCwxMDU4LDg0LDIxNSwxMjAsMTA5MywxMjAsMTA2MSw4OCwxMDkxLDEyMSwxMDU5LDg5LDY1MjgzLDM1LDY1MzA3LDU5XX0nKSksY2UuY2FjaGU9bmV3IGNsYXNze2NvbnN0cnVjdG9yKGUpe3RoaXMuY29tcHV0ZUZuPWUsdGhpcy5sYXN0Q2FjaGU9dm9pZCAwLHRoaXMubGFzdEFyZ0tleT12b2lkIDB9Z2V0KGUpe3ZhciB0PUpTT04uc3RyaW5naWZ5KGUpO3JldHVybiB0aGlzLmxhc3RBcmdLZXkhPT10JiYodGhpcy5sYXN0QXJnS2V5PXQsdGhpcy5sYXN0Q2FjaGU9dGhpcy5jb21wdXRlRm4oZSkpLHRoaXMubGFzdENhY2hlfX0oZT0+e2Z1bmN0aW9uIHQodCl7Y29uc3Qgcj1uZXcgTWFwO2ZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSs9MilyLnNldCh0W2VdLHRbZSsxXSk7cmV0dXJuIHJ9Y29uc3Qgcj1CLmFtYmlndW91c0NoYXJhY3RlckRhdGEuZ2V0VmFsdWUoKTtsZXQgbj1lLmZpbHRlcihlPT4hZS5zdGFydHNXaXRoKCJfIikmJmUgaW4gciksaT12b2lkIDA7Zm9yKGNvbnN0IG8gb2Ygbj0wPT09bi5sZW5ndGg/WyJfZGVmYXVsdCJdOm4pe2NvbnN0IGE9dChyW29dKTtpPWZ1bmN0aW9uKGUsdCl7aWYoIWUpcmV0dXJuIHQ7Y29uc3Qgcj1uZXcgTWFwO2Zvcih2YXJbbixpXW9mIGUpdC5oYXMobikmJnIuc2V0KG4saSk7cmV0dXJuIHJ9KGksYSl9Y29uc3QgYT1mdW5jdGlvbihlLHQpe2NvbnN0IHI9bmV3IE1hcChlKTtmb3IodmFyW24saV1vZiB0KXIuc2V0KG4saSk7cmV0dXJuIHJ9KHQoci5fY29tbW9uKSxpKTtyZXR1cm4gbmV3IGNlKGEpfSksY2UuX2xvY2FsZXM9bmV3IGllKCgpPT5PYmplY3Qua2V5cyhjZS5hbWJpZ3VvdXNDaGFyYWN0ZXJEYXRhLmdldFZhbHVlKCkpLmZpbHRlcihlPT4hZS5zdGFydHNXaXRoKCJfIikpKTtjbGFzcyB1ZXtzdGF0aWMgZ2V0UmF3RGF0YSgpe3JldHVybiBKU09OLnBhcnNlKCJbOSwxMCwxMSwxMiwxMywzMiwxMjcsMTYwLDE3Myw4NDcsMTU2NCw0NDQ3LDQ0NDgsNjA2OCw2MDY5LDYxNTUsNjE1Niw2MTU3LDYxNTgsNzM1NSw3MzU2LDgxOTIsODE5Myw4MTk0LDgxOTUsODE5Niw4MTk3LDgxOTgsODE5OSw4MjAwLDgyMDEsODIwMiw4MjAzLDgyMDQsODIwNSw4MjA2LDgyMDcsODIzNCw4MjM1LDgyMzYsODIzNyw4MjM4LDgyMzksODI4Nyw4Mjg4LDgyODksODI5MCw4MjkxLDgyOTIsODI5Myw4Mjk0LDgyOTUsODI5Niw4Mjk3LDgyOTgsODI5OSw4MzAwLDgzMDEsODMwMiw4MzAzLDEwMjQwLDEyMjg4LDEyNjQ0LDY1MDI0LDY1MDI1LDY1MDI2LDY1MDI3LDY1MDI4LDY1MDI5LDY1MDMwLDY1MDMxLDY1MDMyLDY1MDMzLDY1MDM0LDY1MDM1LDY1MDM2LDY1MDM3LDY1MDM4LDY1MDM5LDY1Mjc5LDY1NDQwLDY1NTIwLDY1NTIxLDY1NTIyLDY1NTIzLDY1NTI0LDY1NTI1LDY1NTI2LDY1NTI3LDY1NTI4LDY1NTMyLDc4ODQ0LDExOTE1NSwxMTkxNTYsMTE5MTU3LDExOTE1OCwxMTkxNTksMTE5MTYwLDExOTE2MSwxMTkxNjIsOTE3NTA0LDkxNzUwNSw5MTc1MDYsOTE3NTA3LDkxNzUwOCw5MTc1MDksOTE3NTEwLDkxNzUxMSw5MTc1MTIsOTE3NTEzLDkxNzUxNCw5MTc1MTUsOTE3NTE2LDkxNzUxNyw5MTc1MTgsOTE3NTE5LDkxNzUyMCw5MTc1MjEsOTE3NTIyLDkxNzUyMyw5MTc1MjQsOTE3NTI1LDkxNzUyNiw5MTc1MjcsOTE3NTI4LDkxNzUyOSw5MTc1MzAsOTE3NTMxLDkxNzUzMiw5MTc1MzMsOTE3NTM0LDkxNzUzNSw5MTc1MzYsOTE3NTM3LDkxNzUzOCw5MTc1MzksOTE3NTQwLDkxNzU0MSw5MTc1NDIsOTE3NTQzLDkxNzU0NCw5MTc1NDUsOTE3NTQ2LDkxNzU0Nyw5MTc1NDgsOTE3NTQ5LDkxNzU1MCw5MTc1NTEsOTE3NTUyLDkxNzU1Myw5MTc1NTQsOTE3NTU1LDkxNzU1Niw5MTc1NTcsOTE3NTU4LDkxNzU1OSw5MTc1NjAsOTE3NTYxLDkxNzU2Miw5MTc1NjMsOTE3NTY0LDkxNzU2NSw5MTc1NjYsOTE3NTY3LDkxNzU2OCw5MTc1NjksOTE3NTcwLDkxNzU3MSw5MTc1NzIsOTE3NTczLDkxNzU3NCw5MTc1NzUsOTE3NTc2LDkxNzU3Nyw5MTc1NzgsOTE3NTc5LDkxNzU4MCw5MTc1ODEsOTE3NTgyLDkxNzU4Myw5MTc1ODQsOTE3NTg1LDkxNzU4Niw5MTc1ODcsOTE3NTg4LDkxNzU4OSw5MTc1OTAsOTE3NTkxLDkxNzU5Miw5MTc1OTMsOTE3NTk0LDkxNzU5NSw5MTc1OTYsOTE3NTk3LDkxNzU5OCw5MTc1OTksOTE3NjAwLDkxNzYwMSw5MTc2MDIsOTE3NjAzLDkxNzYwNCw5MTc2MDUsOTE3NjA2LDkxNzYwNyw5MTc2MDgsOTE3NjA5LDkxNzYxMCw5MTc2MTEsOTE3NjEyLDkxNzYxMyw5MTc2MTQsOTE3NjE1LDkxNzYxNiw5MTc2MTcsOTE3NjE4LDkxNzYxOSw5MTc2MjAsOTE3NjIxLDkxNzYyMiw5MTc2MjMsOTE3NjI0LDkxNzYyNSw5MTc2MjYsOTE3NjI3LDkxNzYyOCw5MTc2MjksOTE3NjMwLDkxNzYzMSw5MTc3NjAsOTE3NzYxLDkxNzc2Miw5MTc3NjMsOTE3NzY0LDkxNzc2NSw5MTc3NjYsOTE3NzY3LDkxNzc2OCw5MTc3NjksOTE3NzcwLDkxNzc3MSw5MTc3NzIsOTE3NzczLDkxNzc3NCw5MTc3NzUsOTE3Nzc2LDkxNzc3Nyw5MTc3NzgsOTE3Nzc5LDkxNzc4MCw5MTc3ODEsOTE3NzgyLDkxNzc4Myw5MTc3ODQsOTE3Nzg1LDkxNzc4Niw5MTc3ODcsOTE3Nzg4LDkxNzc4OSw5MTc3OTAsOTE3NzkxLDkxNzc5Miw5MTc3OTMsOTE3Nzk0LDkxNzc5NSw5MTc3OTYsOTE3Nzk3LDkxNzc5OCw5MTc3OTksOTE3ODAwLDkxNzgwMSw5MTc4MDIsOTE3ODAzLDkxNzgwNCw5MTc4MDUsOTE3ODA2LDkxNzgwNyw5MTc4MDgsOTE3ODA5LDkxNzgxMCw5MTc4MTEsOTE3ODEyLDkxNzgxMyw5MTc4MTQsOTE3ODE1LDkxNzgxNiw5MTc4MTcsOTE3ODE4LDkxNzgxOSw5MTc4MjAsOTE3ODIxLDkxNzgyMiw5MTc4MjMsOTE3ODI0LDkxNzgyNSw5MTc4MjYsOTE3ODI3LDkxNzgyOCw5MTc4MjksOTE3ODMwLDkxNzgzMSw5MTc4MzIsOTE3ODMzLDkxNzgzNCw5MTc4MzUsOTE3ODM2LDkxNzgzNyw5MTc4MzgsOTE3ODM5LDkxNzg0MCw5MTc4NDEsOTE3ODQyLDkxNzg0Myw5MTc4NDQsOTE3ODQ1LDkxNzg0Niw5MTc4NDcsOTE3ODQ4LDkxNzg0OSw5MTc4NTAsOTE3ODUxLDkxNzg1Miw5MTc4NTMsOTE3ODU0LDkxNzg1NSw5MTc4NTYsOTE3ODU3LDkxNzg1OCw5MTc4NTksOTE3ODYwLDkxNzg2MSw5MTc4NjIsOTE3ODYzLDkxNzg2NCw5MTc4NjUsOTE3ODY2LDkxNzg2Nyw5MTc4NjgsOTE3ODY5LDkxNzg3MCw5MTc4NzEsOTE3ODcyLDkxNzg3Myw5MTc4NzQsOTE3ODc1LDkxNzg3Niw5MTc4NzcsOTE3ODc4LDkxNzg3OSw5MTc4ODAsOTE3ODgxLDkxNzg4Miw5MTc4ODMsOTE3ODg0LDkxNzg4NSw5MTc4ODYsOTE3ODg3LDkxNzg4OCw5MTc4ODksOTE3ODkwLDkxNzg5MSw5MTc4OTIsOTE3ODkzLDkxNzg5NCw5MTc4OTUsOTE3ODk2LDkxNzg5Nyw5MTc4OTgsOTE3ODk5LDkxNzkwMCw5MTc5MDEsOTE3OTAyLDkxNzkwMyw5MTc5MDQsOTE3OTA1LDkxNzkwNiw5MTc5MDcsOTE3OTA4LDkxNzkwOSw5MTc5MTAsOTE3OTExLDkxNzkxMiw5MTc5MTMsOTE3OTE0LDkxNzkxNSw5MTc5MTYsOTE3OTE3LDkxNzkxOCw5MTc5MTksOTE3OTIwLDkxNzkyMSw5MTc5MjIsOTE3OTIzLDkxNzkyNCw5MTc5MjUsOTE3OTI2LDkxNzkyNyw5MTc5MjgsOTE3OTI5LDkxNzkzMCw5MTc5MzEsOTE3OTMyLDkxNzkzMyw5MTc5MzQsOTE3OTM1LDkxNzkzNiw5MTc5MzcsOTE3OTM4LDkxNzkzOSw5MTc5NDAsOTE3OTQxLDkxNzk0Miw5MTc5NDMsOTE3OTQ0LDkxNzk0NSw5MTc5NDYsOTE3OTQ3LDkxNzk0OCw5MTc5NDksOTE3OTUwLDkxNzk1MSw5MTc5NTIsOTE3OTUzLDkxNzk1NCw5MTc5NTUsOTE3OTU2LDkxNzk1Nyw5MTc5NTgsOTE3OTU5LDkxNzk2MCw5MTc5NjEsOTE3OTYyLDkxNzk2Myw5MTc5NjQsOTE3OTY1LDkxNzk2Niw5MTc5NjcsOTE3OTY4LDkxNzk2OSw5MTc5NzAsOTE3OTcxLDkxNzk3Miw5MTc5NzMsOTE3OTc0LDkxNzk3NSw5MTc5NzYsOTE3OTc3LDkxNzk3OCw5MTc5NzksOTE3OTgwLDkxNzk4MSw5MTc5ODIsOTE3OTgzLDkxNzk4NCw5MTc5ODUsOTE3OTg2LDkxNzk4Nyw5MTc5ODgsOTE3OTg5LDkxNzk5MCw5MTc5OTEsOTE3OTkyLDkxNzk5Myw5MTc5OTQsOTE3OTk1LDkxNzk5Niw5MTc5OTcsOTE3OTk4LDkxNzk5OV0iKX1zdGF0aWMgZ2V0RGF0YSgpe3JldHVybiB0aGlzLl9kYXRhfHwodGhpcy5fZGF0YT1uZXcgU2V0KHVlLmdldFJhd0RhdGEoKSkpLHRoaXMuX2RhdGF9c3RhdGljIGlzSW52aXNpYmxlQ2hhcmFjdGVyKGUpe3JldHVybiB1ZS5nZXREYXRhKCkuaGFzKGUpfXN0YXRpYyBnZXQgY29kZVBvaW50cygpe3JldHVybiB1ZS5nZXREYXRhKCl9fXVlLl9kYXRhPXZvaWQgMDtjbGFzcyBkZXtjb25zdHJ1Y3RvcihlLHQscixuKXt0aGlzLnZzV29ya2VyPWUsdGhpcy5yZXE9dCx0aGlzLm1ldGhvZD1yLHRoaXMuYXJncz1uLHRoaXMudHlwZT0wfX1jbGFzcyBmZXtjb25zdHJ1Y3RvcihlLHQscixuKXt0aGlzLnZzV29ya2VyPWUsdGhpcy5zZXE9dCx0aGlzLnJlcz1yLHRoaXMuZXJyPW4sdGhpcy50eXBlPTF9fWNsYXNzIG1le2NvbnN0cnVjdG9yKGUsdCxyLG4pe3RoaXMudnNXb3JrZXI9ZSx0aGlzLnJlcT10LHRoaXMuZXZlbnROYW1lPXIsdGhpcy5hcmc9bix0aGlzLnR5cGU9Mn19Y2xhc3MgZ2V7Y29uc3RydWN0b3IoZSx0LHIpe3RoaXMudnNXb3JrZXI9ZSx0aGlzLnJlcT10LHRoaXMuZXZlbnQ9cix0aGlzLnR5cGU9M319Y2xhc3MgYmV7Y29uc3RydWN0b3IoZSx0KXt0aGlzLnZzV29ya2VyPWUsdGhpcy5yZXE9dCx0aGlzLnR5cGU9NH19Y2xhc3MgQ2V7Y29uc3RydWN0b3IoZSl7dGhpcy5fd29ya2VySWQ9LTEsdGhpcy5faGFuZGxlcj1lLHRoaXMuX2xhc3RTZW50UmVxPTAsdGhpcy5fcGVuZGluZ1JlcGxpZXM9T2JqZWN0LmNyZWF0ZShudWxsKSx0aGlzLl9wZW5kaW5nRW1pdHRlcnM9bmV3IE1hcCx0aGlzLl9wZW5kaW5nRXZlbnRzPW5ldyBNYXB9c2V0V29ya2VySWQoZSl7dGhpcy5fd29ya2VySWQ9ZX1zZW5kTWVzc2FnZShyLG4pe2NvbnN0IGk9U3RyaW5nKCsrdGhpcy5fbGFzdFNlbnRSZXEpO3JldHVybiBuZXcgUHJvbWlzZSgoZSx0KT0+e3RoaXMuX3BlbmRpbmdSZXBsaWVzW2ldPXtyZXNvbHZlOmUscmVqZWN0OnR9LHRoaXMuX3NlbmQobmV3IGRlKHRoaXMuX3dvcmtlcklkLGkscixuKSl9KX1saXN0ZW4oZSx0KXtsZXQgcj1udWxsO2NvbnN0IG49bmV3IHRlKHtvbkZpcnN0TGlzdGVuZXJBZGQ6KCk9PntyPVN0cmluZygrK3RoaXMuX2xhc3RTZW50UmVxKSx0aGlzLl9wZW5kaW5nRW1pdHRlcnMuc2V0KHIsbiksdGhpcy5fc2VuZChuZXcgbWUodGhpcy5fd29ya2VySWQscixlLHQpKX0sb25MYXN0TGlzdGVuZXJSZW1vdmU6KCk9Pnt0aGlzLl9wZW5kaW5nRW1pdHRlcnMuZGVsZXRlKHIpLHRoaXMuX3NlbmQobmV3IGJlKHRoaXMuX3dvcmtlcklkLHIpKSxyPW51bGx9fSk7cmV0dXJuIG4uZXZlbnR9aGFuZGxlTWVzc2FnZShlKXtlJiZlLnZzV29ya2VyJiYoLTEhPT10aGlzLl93b3JrZXJJZCYmZS52c1dvcmtlciE9PXRoaXMuX3dvcmtlcklkfHx0aGlzLl9oYW5kbGVNZXNzYWdlKGUpKX1faGFuZGxlTWVzc2FnZShlKXtzd2l0Y2goZS50eXBlKXtjYXNlIDE6cmV0dXJuIHRoaXMuX2hhbmRsZVJlcGx5TWVzc2FnZShlKTtjYXNlIDA6cmV0dXJuIHRoaXMuX2hhbmRsZVJlcXVlc3RNZXNzYWdlKGUpO2Nhc2UgMjpyZXR1cm4gdGhpcy5faGFuZGxlU3Vic2NyaWJlRXZlbnRNZXNzYWdlKGUpO2Nhc2UgMzpyZXR1cm4gdGhpcy5faGFuZGxlRXZlbnRNZXNzYWdlKGUpO2Nhc2UgNDpyZXR1cm4gdGhpcy5faGFuZGxlVW5zdWJzY3JpYmVFdmVudE1lc3NhZ2UoZSl9fV9oYW5kbGVSZXBseU1lc3NhZ2Uocil7aWYodGhpcy5fcGVuZGluZ1JlcGxpZXNbci5zZXFdKXtsZXQgdD10aGlzLl9wZW5kaW5nUmVwbGllc1tyLnNlcV07aWYoZGVsZXRlIHRoaXMuX3BlbmRpbmdSZXBsaWVzW3Iuc2VxXSxyLmVycil7bGV0IGU9ci5lcnI7cmV0dXJuIHIuZXJyLiRpc0Vycm9yJiYoKGU9bmV3IEVycm9yKS5uYW1lPXIuZXJyLm5hbWUsZS5tZXNzYWdlPXIuZXJyLm1lc3NhZ2UsZS5zdGFjaz1yLmVyci5zdGFjayksdm9pZCB0LnJlamVjdChlKX10LnJlc29sdmUoci5yZXMpfWVsc2UgY29uc29sZS53YXJuKCJHb3QgcmVwbHkgdG8gdW5rbm93biBzZXEiKX1faGFuZGxlUmVxdWVzdE1lc3NhZ2UoZSl7bGV0IHQ9ZS5yZXEscj10aGlzLl9oYW5kbGVyLmhhbmRsZU1lc3NhZ2UoZS5tZXRob2QsZS5hcmdzKTtyLnRoZW4oZT0+e3RoaXMuX3NlbmQobmV3IGZlKHRoaXMuX3dvcmtlcklkLHQsZSx2b2lkIDApKX0sZT0+e2UuZGV0YWlsIGluc3RhbmNlb2YgRXJyb3ImJihlLmRldGFpbD11KGUuZGV0YWlsKSksdGhpcy5fc2VuZChuZXcgZmUodGhpcy5fd29ya2VySWQsdCx2b2lkIDAsdShlKSkpfSl9X2hhbmRsZVN1YnNjcmliZUV2ZW50TWVzc2FnZShlKXtjb25zdCB0PWUucmVxO2U9dGhpcy5faGFuZGxlci5oYW5kbGVFdmVudChlLmV2ZW50TmFtZSxlLmFyZykoZT0+e3RoaXMuX3NlbmQobmV3IGdlKHRoaXMuX3dvcmtlcklkLHQsZSkpfSk7dGhpcy5fcGVuZGluZ0V2ZW50cy5zZXQodCxlKX1faGFuZGxlRXZlbnRNZXNzYWdlKGUpe3RoaXMuX3BlbmRpbmdFbWl0dGVycy5oYXMoZS5yZXEpP3RoaXMuX3BlbmRpbmdFbWl0dGVycy5nZXQoZS5yZXEpLmZpcmUoZS5ldmVudCk6Y29uc29sZS53YXJuKCJHb3QgZXZlbnQgZm9yIHVua25vd24gcmVxIil9X2hhbmRsZVVuc3Vic2NyaWJlRXZlbnRNZXNzYWdlKGUpe3RoaXMuX3BlbmRpbmdFdmVudHMuaGFzKGUucmVxKT8odGhpcy5fcGVuZGluZ0V2ZW50cy5nZXQoZS5yZXEpLmRpc3Bvc2UoKSx0aGlzLl9wZW5kaW5nRXZlbnRzLmRlbGV0ZShlLnJlcSkpOmNvbnNvbGUud2FybigiR290IHVuc3Vic2NyaWJlIGZvciB1bmtub3duIHJlcSIpfV9zZW5kKHQpe2xldCByPVtdO2lmKDA9PT10LnR5cGUpZm9yKGxldCBlPTA7ZTx0LmFyZ3MubGVuZ3RoO2UrKyl0LmFyZ3NbZV1pbnN0YW5jZW9mIEFycmF5QnVmZmVyJiZyLnB1c2godC5hcmdzW2VdKTtlbHNlIDE9PT10LnR5cGUmJnQucmVzIGluc3RhbmNlb2YgQXJyYXlCdWZmZXImJnIucHVzaCh0LnJlcyk7dGhpcy5faGFuZGxlci5zZW5kTWVzc2FnZSh0LHIpfX1mdW5jdGlvbiBwZShlKXtyZXR1cm4ibyI9PT1lWzBdJiYibiI9PT1lWzFdJiZzZShlLmNoYXJDb2RlQXQoMikpfWZ1bmN0aW9uIHdlKGUpe3JldHVybi9eb25EeW5hbWljLy50ZXN0KGUpJiZzZShlLmNoYXJDb2RlQXQoOSkpfWZ1bmN0aW9uIF9lKGUscixuKXtsZXQgdD17fTtmb3IoY29uc3QgaSBvZiBlKXdlKGkpP3RbaV09KHQ9PmZ1bmN0aW9uKGUpe3JldHVybiBuKHQsZSl9KShpKTpwZShpKT90W2ldPW4oaSx2b2lkIDApOnRbaV09KHQ9PmZ1bmN0aW9uKCl7dmFyIGU9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDApO3JldHVybiByKHQsZSl9KShpKTtyZXR1cm4gdH1jbGFzcyB2ZXtjb25zdHJ1Y3RvcihyLGUpe3RoaXMuX3JlcXVlc3RIYW5kbGVyRmFjdG9yeT1lLHRoaXMuX3JlcXVlc3RIYW5kbGVyPW51bGwsdGhpcy5fcHJvdG9jb2w9bmV3IENlKHtzZW5kTWVzc2FnZTooZSx0KT0+e3IoZSx0KX0saGFuZGxlTWVzc2FnZTooZSx0KT0+dGhpcy5faGFuZGxlTWVzc2FnZShlLHQpLGhhbmRsZUV2ZW50OihlLHQpPT50aGlzLl9oYW5kbGVFdmVudChlLHQpfSl9b25tZXNzYWdlKGUpe3RoaXMuX3Byb3RvY29sLmhhbmRsZU1lc3NhZ2UoZSl9X2hhbmRsZU1lc3NhZ2UoZSx0KXtpZigiJGluaXRpYWxpemUiPT09ZSlyZXR1cm4gdGhpcy5pbml0aWFsaXplKHRbMF0sdFsxXSx0WzJdLHRbM10pO2lmKCF0aGlzLl9yZXF1ZXN0SGFuZGxlcnx8ImZ1bmN0aW9uIiE9dHlwZW9mIHRoaXMuX3JlcXVlc3RIYW5kbGVyW2VdKXJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoIk1pc3NpbmcgcmVxdWVzdEhhbmRsZXIgb3IgbWV0aG9kOiAiK2UpKTt0cnl7cmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLl9yZXF1ZXN0SGFuZGxlcltlXS5hcHBseSh0aGlzLl9yZXF1ZXN0SGFuZGxlcix0KSl9Y2F0Y2goZSl7cmV0dXJuIFByb21pc2UucmVqZWN0KGUpfX1faGFuZGxlRXZlbnQoZSx0KXtpZighdGhpcy5fcmVxdWVzdEhhbmRsZXIpdGhyb3cgbmV3IEVycm9yKCJNaXNzaW5nIHJlcXVlc3RIYW5kbGVyIik7aWYod2UoZSkpe3Q9dGhpcy5fcmVxdWVzdEhhbmRsZXJbZV0uY2FsbCh0aGlzLl9yZXF1ZXN0SGFuZGxlcix0KTtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCl0aHJvdyBuZXcgRXJyb3IoYE1pc3NpbmcgZHluYW1pYyBldmVudCAke2V9IG9uIHJlcXVlc3QgaGFuZGxlci5gKTtyZXR1cm4gdH1pZihwZShlKSl7dD10aGlzLl9yZXF1ZXN0SGFuZGxlcltlXTtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCl0aHJvdyBuZXcgRXJyb3IoYE1pc3NpbmcgZXZlbnQgJHtlfSBvbiByZXF1ZXN0IGhhbmRsZXIuYCk7cmV0dXJuIHR9dGhyb3cgbmV3IEVycm9yKCJNYWxmb3JtZWQgZXZlbnQgbmFtZSAiK2UpfWluaXRpYWxpemUoZSx0LG4scil7dGhpcy5fcHJvdG9jb2wuc2V0V29ya2VySWQoZSk7Y29uc3QgaT1fZShyLChlLHQpPT50aGlzLl9wcm90b2NvbC5zZW5kTWVzc2FnZShlLHQpLChlLHQpPT50aGlzLl9wcm90b2NvbC5saXN0ZW4oZSx0KSk7cmV0dXJuIHRoaXMuX3JlcXVlc3RIYW5kbGVyRmFjdG9yeT8odGhpcy5fcmVxdWVzdEhhbmRsZXI9dGhpcy5fcmVxdWVzdEhhbmRsZXJGYWN0b3J5KGkpLFByb21pc2UucmVzb2x2ZShyZSh0aGlzLl9yZXF1ZXN0SGFuZGxlcikpKToodCYmKHZvaWQgMCE9PXQuYmFzZVVybCYmZGVsZXRlIHQuYmFzZVVybCx2b2lkIDAhPT10LnBhdGhzJiZ2b2lkIDAhPT10LnBhdGhzLnZzJiZkZWxldGUgdC5wYXRocy52cyx0LnRydXN0ZWRUeXBlc1BvbGljeSxkZWxldGUgdC50cnVzdGVkVHlwZXNQb2xpY3ksdC5jYXRjaEVycm9yPSEwLEQucmVxdWlyZS5jb25maWcodCkpLG5ldyBQcm9taXNlKCh0LHIpPT57Y29uc3QgZT1ELnJlcXVpcmU7ZShbbl0sZT0+e3RoaXMuX3JlcXVlc3RIYW5kbGVyPWUuY3JlYXRlKGkpLHRoaXMuX3JlcXVlc3RIYW5kbGVyP3QocmUodGhpcy5fcmVxdWVzdEhhbmRsZXIpKTpyKG5ldyBFcnJvcigiTm8gUmVxdWVzdEhhbmRsZXIhIikpfSxyKX0pKX19Y2xhc3MgeWV7Y29uc3RydWN0b3IoZSx0LHIsbil7dGhpcy5vcmlnaW5hbFN0YXJ0PWUsdGhpcy5vcmlnaW5hbExlbmd0aD10LHRoaXMubW9kaWZpZWRTdGFydD1yLHRoaXMubW9kaWZpZWRMZW5ndGg9bn1nZXRPcmlnaW5hbEVuZCgpe3JldHVybiB0aGlzLm9yaWdpbmFsU3RhcnQrdGhpcy5vcmlnaW5hbExlbmd0aH1nZXRNb2RpZmllZEVuZCgpe3JldHVybiB0aGlzLm1vZGlmaWVkU3RhcnQrdGhpcy5tb2RpZmllZExlbmd0aH19ZnVuY3Rpb24gTGUoZSx0KXtyZXR1cm4odDw8NSktdCtlfDB9Y2xhc3MgU2V7Y29uc3RydWN0b3IoZSl7dGhpcy5zb3VyY2U9ZX1nZXRFbGVtZW50cygpe2NvbnN0IHI9dGhpcy5zb3VyY2Usbj1uZXcgSW50MzJBcnJheShyLmxlbmd0aCk7Zm9yKGxldCBlPTAsdD1yLmxlbmd0aDtlPHQ7ZSsrKW5bZV09ci5jaGFyQ29kZUF0KGUpO3JldHVybiBufX1jbGFzcyBOZXtzdGF0aWMgQXNzZXJ0KGUsdCl7aWYoIWUpdGhyb3cgbmV3IEVycm9yKHQpfX1jbGFzcyBFZXtzdGF0aWMgQ29weSh0LHIsbixpLGEpe2ZvcihsZXQgZT0wO2U8YTtlKyspbltpK2VdPXRbcitlXX1zdGF0aWMgQ29weTIodCxyLG4saSxhKXtmb3IobGV0IGU9MDtlPGE7ZSsrKW5baStlXT10W3IrZV19fWNsYXNzIEFle2NvbnN0cnVjdG9yKCl7dGhpcy5tX2NoYW5nZXM9W10sdGhpcy5tX29yaWdpbmFsU3RhcnQ9MTA3Mzc0MTgyNCx0aGlzLm1fbW9kaWZpZWRTdGFydD0xMDczNzQxODI0LHRoaXMubV9vcmlnaW5hbENvdW50PTAsdGhpcy5tX21vZGlmaWVkQ291bnQ9MH1NYXJrTmV4dENoYW5nZSgpeygwPHRoaXMubV9vcmlnaW5hbENvdW50fHwwPHRoaXMubV9tb2RpZmllZENvdW50KSYmdGhpcy5tX2NoYW5nZXMucHVzaChuZXcgeWUodGhpcy5tX29yaWdpbmFsU3RhcnQsdGhpcy5tX29yaWdpbmFsQ291bnQsdGhpcy5tX21vZGlmaWVkU3RhcnQsdGhpcy5tX21vZGlmaWVkQ291bnQpKSx0aGlzLm1fb3JpZ2luYWxDb3VudD0wLHRoaXMubV9tb2RpZmllZENvdW50PTAsdGhpcy5tX29yaWdpbmFsU3RhcnQ9MTA3Mzc0MTgyNCx0aGlzLm1fbW9kaWZpZWRTdGFydD0xMDczNzQxODI0fUFkZE9yaWdpbmFsRWxlbWVudChlLHQpe3RoaXMubV9vcmlnaW5hbFN0YXJ0PU1hdGgubWluKHRoaXMubV9vcmlnaW5hbFN0YXJ0LGUpLHRoaXMubV9tb2RpZmllZFN0YXJ0PU1hdGgubWluKHRoaXMubV9tb2RpZmllZFN0YXJ0LHQpLHRoaXMubV9vcmlnaW5hbENvdW50Kyt9QWRkTW9kaWZpZWRFbGVtZW50KGUsdCl7dGhpcy5tX29yaWdpbmFsU3RhcnQ9TWF0aC5taW4odGhpcy5tX29yaWdpbmFsU3RhcnQsZSksdGhpcy5tX21vZGlmaWVkU3RhcnQ9TWF0aC5taW4odGhpcy5tX21vZGlmaWVkU3RhcnQsdCksdGhpcy5tX21vZGlmaWVkQ291bnQrK31nZXRDaGFuZ2VzKCl7cmV0dXJuKDA8dGhpcy5tX29yaWdpbmFsQ291bnR8fDA8dGhpcy5tX21vZGlmaWVkQ291bnQpJiZ0aGlzLk1hcmtOZXh0Q2hhbmdlKCksdGhpcy5tX2NoYW5nZXN9Z2V0UmV2ZXJzZUNoYW5nZXMoKXtyZXR1cm4oMDx0aGlzLm1fb3JpZ2luYWxDb3VudHx8MDx0aGlzLm1fbW9kaWZpZWRDb3VudCkmJnRoaXMuTWFya05leHRDaGFuZ2UoKSx0aGlzLm1fY2hhbmdlcy5yZXZlcnNlKCksdGhpcy5tX2NoYW5nZXN9fWNsYXNzIGtle2NvbnN0cnVjdG9yKGUsdCxyPW51bGwpe3RoaXMuQ29udGludWVQcm9jZXNzaW5nUHJlZGljYXRlPXIsdGhpcy5fb3JpZ2luYWxTZXF1ZW5jZT1lLHRoaXMuX21vZGlmaWVkU2VxdWVuY2U9dDt2YXJbcixlLG5dPWtlLl9nZXRFbGVtZW50cyhlKSxbdCxpLGFdPWtlLl9nZXRFbGVtZW50cyh0KTt0aGlzLl9oYXNTdHJpbmdzPW4mJmEsdGhpcy5fb3JpZ2luYWxTdHJpbmdFbGVtZW50cz1yLHRoaXMuX29yaWdpbmFsRWxlbWVudHNPckhhc2g9ZSx0aGlzLl9tb2RpZmllZFN0cmluZ0VsZW1lbnRzPXQsdGhpcy5fbW9kaWZpZWRFbGVtZW50c09ySGFzaD1pLHRoaXMubV9mb3J3YXJkSGlzdG9yeT1bXSx0aGlzLm1fcmV2ZXJzZUhpc3Rvcnk9W119c3RhdGljIF9pc1N0cmluZ0FycmF5KGUpe3JldHVybiAwPGUubGVuZ3RoJiYic3RyaW5nIj09dHlwZW9mIGVbMF19c3RhdGljIF9nZXRFbGVtZW50cyhlKXt2YXIgcj1lLmdldEVsZW1lbnRzKCk7aWYoa2UuX2lzU3RyaW5nQXJyYXkocikpe2NvbnN0IG49bmV3IEludDMyQXJyYXkoci5sZW5ndGgpO2ZvcihsZXQgZT0wLHQ9ci5sZW5ndGg7ZTx0O2UrKyluW2VdPWZ1bmN0aW9uKHIsbil7bj1MZSgxNDk0MTcsbik7Zm9yKGxldCBlPTAsdD1yLmxlbmd0aDtlPHQ7ZSsrKW49TGUoci5jaGFyQ29kZUF0KGUpLG4pO3JldHVybiBufShyW2VdLDApO3JldHVybltyLG4sITBdfXJldHVybiByIGluc3RhbmNlb2YgSW50MzJBcnJheT9bW10sciwhMV06W1tdLG5ldyBJbnQzMkFycmF5KHIpLCExXX1FbGVtZW50c0FyZUVxdWFsKGUsdCl7cmV0dXJuIHRoaXMuX29yaWdpbmFsRWxlbWVudHNPckhhc2hbZV09PT10aGlzLl9tb2RpZmllZEVsZW1lbnRzT3JIYXNoW3RdJiYoIXRoaXMuX2hhc1N0cmluZ3N8fHRoaXMuX29yaWdpbmFsU3RyaW5nRWxlbWVudHNbZV09PT10aGlzLl9tb2RpZmllZFN0cmluZ0VsZW1lbnRzW3RdKX1FbGVtZW50c0FyZVN0cmljdEVxdWFsKGUsdCl7cmV0dXJuISF0aGlzLkVsZW1lbnRzQXJlRXF1YWwoZSx0KSYma2UuX2dldFN0cmljdEVsZW1lbnQodGhpcy5fb3JpZ2luYWxTZXF1ZW5jZSxlKT09PWtlLl9nZXRTdHJpY3RFbGVtZW50KHRoaXMuX21vZGlmaWVkU2VxdWVuY2UsdCl9c3RhdGljIF9nZXRTdHJpY3RFbGVtZW50KGUsdCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGUuZ2V0U3RyaWN0RWxlbWVudD9lLmdldFN0cmljdEVsZW1lbnQodCk6bnVsbH1PcmlnaW5hbEVsZW1lbnRzQXJlRXF1YWwoZSx0KXtyZXR1cm4gdGhpcy5fb3JpZ2luYWxFbGVtZW50c09ySGFzaFtlXT09PXRoaXMuX29yaWdpbmFsRWxlbWVudHNPckhhc2hbdF0mJighdGhpcy5faGFzU3RyaW5nc3x8dGhpcy5fb3JpZ2luYWxTdHJpbmdFbGVtZW50c1tlXT09PXRoaXMuX29yaWdpbmFsU3RyaW5nRWxlbWVudHNbdF0pfU1vZGlmaWVkRWxlbWVudHNBcmVFcXVhbChlLHQpe3JldHVybiB0aGlzLl9tb2RpZmllZEVsZW1lbnRzT3JIYXNoW2VdPT09dGhpcy5fbW9kaWZpZWRFbGVtZW50c09ySGFzaFt0XSYmKCF0aGlzLl9oYXNTdHJpbmdzfHx0aGlzLl9tb2RpZmllZFN0cmluZ0VsZW1lbnRzW2VdPT09dGhpcy5fbW9kaWZpZWRTdHJpbmdFbGVtZW50c1t0XSl9Q29tcHV0ZURpZmYoZSl7cmV0dXJuIHRoaXMuX0NvbXB1dGVEaWZmKDAsdGhpcy5fb3JpZ2luYWxFbGVtZW50c09ySGFzaC5sZW5ndGgtMSwwLHRoaXMuX21vZGlmaWVkRWxlbWVudHNPckhhc2gubGVuZ3RoLTEsZSl9X0NvbXB1dGVEaWZmKGUsdCxyLG4saSl7dmFyIGE9WyExXTtsZXQgbz10aGlzLkNvbXB1dGVEaWZmUmVjdXJzaXZlKGUsdCxyLG4sYSk7cmV0dXJuIGkmJihvPXRoaXMuUHJldHRpZnlDaGFuZ2VzKG8pKSx7cXVpdEVhcmx5OmFbMF0sY2hhbmdlczpvfX1Db21wdXRlRGlmZlJlY3Vyc2l2ZSh0LHIsbixpLGEpe2ZvcihhWzBdPSExO3Q8PXImJm48PWkmJnRoaXMuRWxlbWVudHNBcmVFcXVhbCh0LG4pOyl0KyssbisrO2Zvcig7dDw9ciYmbjw9aSYmdGhpcy5FbGVtZW50c0FyZUVxdWFsKHIsaSk7KXItLSxpLS07aWYocjx0fHxpPG4pe2xldCBlO3JldHVybiBlPW48PWk/KE5lLkFzc2VydCh0PT09cisxLCJvcmlnaW5hbFN0YXJ0IHNob3VsZCBvbmx5IGJlIG9uZSBtb3JlIHRoYW4gb3JpZ2luYWxFbmQiKSxbbmV3IHllKHQsMCxuLGktbisxKV0pOnQ8PXI/KE5lLkFzc2VydChuPT09aSsxLCJtb2RpZmllZFN0YXJ0IHNob3VsZCBvbmx5IGJlIG9uZSBtb3JlIHRoYW4gbW9kaWZpZWRFbmQiKSxbbmV3IHllKHQsci10KzEsbiwwKV0pOihOZS5Bc3NlcnQodD09PXIrMSwib3JpZ2luYWxTdGFydCBzaG91bGQgb25seSBiZSBvbmUgbW9yZSB0aGFuIG9yaWdpbmFsRW5kIiksTmUuQXNzZXJ0KG49PT1pKzEsIm1vZGlmaWVkU3RhcnQgc2hvdWxkIG9ubHkgYmUgb25lIG1vcmUgdGhhbiBtb2RpZmllZEVuZCIpLFtdKX12YXIgbz1bMF0scz1bMF0sbD10aGlzLkNvbXB1dGVSZWN1cnNpb25Qb2ludCh0LHIsbixpLG8scyxhKSxvPW9bMF0scz1zWzBdO2lmKG51bGwhPT1sKXJldHVybiBsO2lmKGFbMF0pcmV0dXJuW25ldyB5ZSh0LHItdCsxLG4saS1uKzEpXTt7bD10aGlzLkNvbXB1dGVEaWZmUmVjdXJzaXZlKHQsbyxuLHMsYSk7bGV0IGU9W107cmV0dXJuIGU9YVswXT9bbmV3IHllKG8rMSxyLShvKzEpKzEscysxLGktKHMrMSkrMSldOnRoaXMuQ29tcHV0ZURpZmZSZWN1cnNpdmUobysxLHIscysxLGksYSksdGhpcy5Db25jYXRlbmF0ZUNoYW5nZXMobCxlKX19V0FMS1RSQUNFKGMscix1LGQsZixtLGcsYixlLEMsdCxwLHcsbixfLHYseSxMKXtsZXQgUz1udWxsLGk9bmV3IEFlLE49cixFPXUsYT13WzBdLXZbMF0tZCxvPS0xMDczNzQxODI0LHM9dGhpcy5tX2ZvcndhcmRIaXN0b3J5Lmxlbmd0aC0xO2Rve3ZhciBsPWErYzthPWw9PT1OfHxsPEUmJmVbbC0xXTxlW2wrMV0/KG49KHQ9ZVtsKzFdKS1hLWQsdDxvJiZpLk1hcmtOZXh0Q2hhbmdlKCksbz10LGkuQWRkTW9kaWZpZWRFbGVtZW50KHQrMSxuKSxsKzEtYyk6KG49KHQ9ZVtsLTFdKzEpLWEtZCx0PG8mJmkuTWFya05leHRDaGFuZ2UoKSxvPXQtMSxpLkFkZE9yaWdpbmFsRWxlbWVudCh0LG4rMSksbC0xLWMpLDA8PXMmJihjPShlPXRoaXMubV9mb3J3YXJkSGlzdG9yeVtzXSlbMF0sTj0xLEU9ZS5sZW5ndGgtMSl9d2hpbGUoLTE8PS0tcyk7aWYocj1pLmdldFJldmVyc2VDaGFuZ2VzKCksTFswXSl7bGV0IGU9d1swXSsxLHQ9dlswXSsxO2lmKG51bGwhPT1yJiYwPHIubGVuZ3RoKXtjb25zdCBBPXJbci5sZW5ndGgtMV07ZT1NYXRoLm1heChlLEEuZ2V0T3JpZ2luYWxFbmQoKSksdD1NYXRoLm1heCh0LEEuZ2V0TW9kaWZpZWRFbmQoKSl9Uz1bbmV3IHllKGUscC1lKzEsdCxfLXQrMSldfWVsc2V7aT1uZXcgQWUsTj1tLEU9ZyxhPXdbMF0tdlswXS1iLG89MTA3Mzc0MTgyNCxzPXk/dGhpcy5tX3JldmVyc2VIaXN0b3J5Lmxlbmd0aC0xOnRoaXMubV9yZXZlcnNlSGlzdG9yeS5sZW5ndGgtMjtkb3t2YXIgaD1hK2Y7YT1oPT09Tnx8aDxFJiZDW2gtMV0+PUNbaCsxXT8obj0odD1DW2grMV0tMSktYS1iLHQ+byYmaS5NYXJrTmV4dENoYW5nZSgpLG89dCsxLGkuQWRkT3JpZ2luYWxFbGVtZW50KHQrMSxuKzEpLGgrMS1mKToobj0odD1DW2gtMV0pLWEtYix0Pm8mJmkuTWFya05leHRDaGFuZ2UoKSxvPXQsaS5BZGRNb2RpZmllZEVsZW1lbnQodCsxLG4rMSksaC0xLWYpLDA8PXMmJihmPShDPXRoaXMubV9yZXZlcnNlSGlzdG9yeVtzXSlbMF0sTj0xLEU9Qy5sZW5ndGgtMSl9d2hpbGUoLTE8PS0tcyk7Uz1pLmdldENoYW5nZXMoKX1yZXR1cm4gdGhpcy5Db25jYXRlbmF0ZUNoYW5nZXMocixTKX1Db21wdXRlUmVjdXJzaW9uUG9pbnQoaSxhLG0sZyxiLEMscCl7bGV0IG89MCxzPTAsbD0wLHc9MCxoPTAsXz0wO2ktLSxtLS0sQ1tiWzBdPTBdPTAsdGhpcy5tX2ZvcndhcmRIaXN0b3J5PVtdLHRoaXMubV9yZXZlcnNlSGlzdG9yeT1bXTt2YXIgZT1hLWkrKGctbSksdj0xK2U7Y29uc3QgYz1uZXcgSW50MzJBcnJheSh2KSx1PW5ldyBJbnQzMkFycmF5KHYpO3ZhciBkPWctbSxmPWEtaSx5PWktbSxMPWEtZyxTPShmLWQpJTI9PTA7Y1tkXT1pLHVbZl09YSxwWzBdPSExO2ZvcihsZXQgbj0xO248PWUvMisxO24rKyl7bGV0IHQ9MCxyPTA7bD10aGlzLkNsaXBEaWFnb25hbEJvdW5kKGQtbixuLGQsdiksdz10aGlzLkNsaXBEaWFnb25hbEJvdW5kKGQrbixuLGQsdik7Zm9yKGxldCBlPWw7ZTw9dztlKz0yKXtvPWU9PT1sfHxlPHcmJmNbZS0xXTxjW2UrMV0/Y1tlKzFdOmNbZS0xXSsxLHM9by0oZS1kKS15O2Zvcih2YXIgTj1vO288YSYmczxnJiZ0aGlzLkVsZW1lbnRzQXJlRXF1YWwobysxLHMrMSk7KW8rKyxzKys7aWYoKGNbZV09bykrcz50K3ImJih0PW8scj1zKSwhUyYmTWF0aC5hYnMoZS1mKTw9bi0xJiZvPj11W2VdKXJldHVybiBiWzBdPW8sQ1swXT1zLE48PXVbZV0mJm48PTE0NDg/dGhpcy5XQUxLVFJBQ0UoZCxsLHcseSxmLGgsXyxMLGMsdSxvLGEsYixzLGcsQyxTLHApOm51bGx9dmFyIEU9KHQtaSsoci1tKS1uKS8yO2lmKG51bGwhPT10aGlzLkNvbnRpbnVlUHJvY2Vzc2luZ1ByZWRpY2F0ZSYmIXRoaXMuQ29udGludWVQcm9jZXNzaW5nUHJlZGljYXRlKHQsRSkpcmV0dXJuIHBbMF09ITAsYlswXT10LENbMF09ciwwPEUmJm48PTE0NDg/dGhpcy5XQUxLVFJBQ0UoZCxsLHcseSxmLGgsXyxMLGMsdSxvLGEsYixzLGcsQyxTLHApOihpKyssbSsrLFtuZXcgeWUoaSxhLWkrMSxtLGctbSsxKV0pO2g9dGhpcy5DbGlwRGlhZ29uYWxCb3VuZChmLW4sbixmLHYpLF89dGhpcy5DbGlwRGlhZ29uYWxCb3VuZChmK24sbixmLHYpO2ZvcihsZXQgZT1oO2U8PV87ZSs9Mil7bz1lPT09aHx8ZTxfJiZ1W2UtMV0+PXVbZSsxXT91W2UrMV0tMTp1W2UtMV0scz1vLShlLWYpLUw7Zm9yKHZhciBBPW87bz5pJiZzPm0mJnRoaXMuRWxlbWVudHNBcmVFcXVhbChvLHMpOylvLS0scy0tO2lmKHVbZV09byxTJiZNYXRoLmFicyhlLWQpPD1uJiZvPD1jW2VdKXJldHVybiBiWzBdPW8sQ1swXT1zLEE+PWNbZV0mJm48PTE0NDg/dGhpcy5XQUxLVFJBQ0UoZCxsLHcseSxmLGgsXyxMLGMsdSxvLGEsYixzLGcsQyxTLHApOm51bGx9aWYobjw9MTQ0Nyl7bGV0IGU9bmV3IEludDMyQXJyYXkody1sKzIpO2VbMF09ZC1sKzEsRWUuQ29weTIoYyxsLGUsMSx3LWwrMSksdGhpcy5tX2ZvcndhcmRIaXN0b3J5LnB1c2goZSksKGU9bmV3IEludDMyQXJyYXkoXy1oKzIpKVswXT1mLWgrMSxFZS5Db3B5Mih1LGgsZSwxLF8taCsxKSx0aGlzLm1fcmV2ZXJzZUhpc3RvcnkucHVzaChlKX19cmV0dXJuIHRoaXMuV0FMS1RSQUNFKGQsbCx3LHksZixoLF8sTCxjLHUsbyxhLGIscyxnLEMsUyxwKX1QcmV0dGlmeUNoYW5nZXMoYSl7Zm9yKGxldCBlPTA7ZTxhLmxlbmd0aDtlKyspe2NvbnN0IHQ9YVtlXTtmb3IodmFyIHU9ZTxhLmxlbmd0aC0xP2FbZSsxXS5vcmlnaW5hbFN0YXJ0OnRoaXMuX29yaWdpbmFsRWxlbWVudHNPckhhc2gubGVuZ3RoLGQ9ZTxhLmxlbmd0aC0xP2FbZSsxXS5tb2RpZmllZFN0YXJ0OnRoaXMuX21vZGlmaWVkRWxlbWVudHNPckhhc2gubGVuZ3RoLGY9MDx0Lm9yaWdpbmFsTGVuZ3RoLG09MDx0Lm1vZGlmaWVkTGVuZ3RoO3Qub3JpZ2luYWxTdGFydCt0Lm9yaWdpbmFsTGVuZ3RoPHUmJnQubW9kaWZpZWRTdGFydCt0Lm1vZGlmaWVkTGVuZ3RoPGQmJighZnx8dGhpcy5PcmlnaW5hbEVsZW1lbnRzQXJlRXF1YWwodC5vcmlnaW5hbFN0YXJ0LHQub3JpZ2luYWxTdGFydCt0Lm9yaWdpbmFsTGVuZ3RoKSkmJighbXx8dGhpcy5Nb2RpZmllZEVsZW1lbnRzQXJlRXF1YWwodC5tb2RpZmllZFN0YXJ0LHQubW9kaWZpZWRTdGFydCt0Lm1vZGlmaWVkTGVuZ3RoKSk7KXt2YXIgZz10aGlzLkVsZW1lbnRzQXJlU3RyaWN0RXF1YWwodC5vcmlnaW5hbFN0YXJ0LHQubW9kaWZpZWRTdGFydCk7aWYodGhpcy5FbGVtZW50c0FyZVN0cmljdEVxdWFsKHQub3JpZ2luYWxTdGFydCt0Lm9yaWdpbmFsTGVuZ3RoLHQubW9kaWZpZWRTdGFydCt0Lm1vZGlmaWVkTGVuZ3RoKSYmIWcpYnJlYWs7dC5vcmlnaW5hbFN0YXJ0KyssdC5tb2RpZmllZFN0YXJ0Kyt9dmFyIGI9W251bGxdO2U8YS5sZW5ndGgtMSYmdGhpcy5DaGFuZ2VzT3ZlcmxhcChhW2VdLGFbZSsxXSxiKSYmKGFbZV09YlswXSxhLnNwbGljZShlKzEsMSksZS0tKX1mb3IobGV0IGU9YS5sZW5ndGgtMTswPD1lO2UtLSl7Y29uc3QgaD1hW2VdO2xldCB0PTAscj0wOzA8ZSYmKGw9YVtlLTFdLHQ9bC5vcmlnaW5hbFN0YXJ0K2wub3JpZ2luYWxMZW5ndGgscj1sLm1vZGlmaWVkU3RhcnQrbC5tb2RpZmllZExlbmd0aCk7dmFyIEM9MDxoLm9yaWdpbmFsTGVuZ3RoLHA9MDxoLm1vZGlmaWVkTGVuZ3RoO2xldCBuPTAsaT10aGlzLl9ib3VuZGFyeVNjb3JlKGgub3JpZ2luYWxTdGFydCxoLm9yaWdpbmFsTGVuZ3RoLGgubW9kaWZpZWRTdGFydCxoLm1vZGlmaWVkTGVuZ3RoKTtmb3IobGV0IGU9MTs7ZSsrKXt2YXIgbz1oLm9yaWdpbmFsU3RhcnQtZSxzPWgubW9kaWZpZWRTdGFydC1lO2lmKG88dHx8czxyKWJyZWFrO2lmKEMmJiF0aGlzLk9yaWdpbmFsRWxlbWVudHNBcmVFcXVhbChvLG8raC5vcmlnaW5hbExlbmd0aCkpYnJlYWs7aWYocCYmIXRoaXMuTW9kaWZpZWRFbGVtZW50c0FyZUVxdWFsKHMscytoLm1vZGlmaWVkTGVuZ3RoKSlicmVhaztvPShvPT09dCYmcz09PXI/NTowKSt0aGlzLl9ib3VuZGFyeVNjb3JlKG8saC5vcmlnaW5hbExlbmd0aCxzLGgubW9kaWZpZWRMZW5ndGgpO28+aSYmKGk9byxuPWUpfWgub3JpZ2luYWxTdGFydC09bixoLm1vZGlmaWVkU3RhcnQtPW47dmFyIGw9W251bGxdOzA8ZSYmdGhpcy5DaGFuZ2VzT3ZlcmxhcChhW2UtMV0sYVtlXSxsKSYmKGFbZS0xXT1sWzBdLGEuc3BsaWNlKGUsMSksZSsrKX1pZih0aGlzLl9oYXNTdHJpbmdzKWZvcihsZXQgZT0xLHQ9YS5sZW5ndGg7ZTx0O2UrKyl7Y29uc3QgaT1hW2UtMV0sYz1hW2VdO3ZhciB3PWMub3JpZ2luYWxTdGFydC1pLm9yaWdpbmFsU3RhcnQtaS5vcmlnaW5hbExlbmd0aCxfPWkub3JpZ2luYWxTdGFydCx2PWMub3JpZ2luYWxTdGFydCtjLm9yaWdpbmFsTGVuZ3RoLHI9di1fLG49aS5tb2RpZmllZFN0YXJ0LHk9Yy5tb2RpZmllZFN0YXJ0K2MubW9kaWZpZWRMZW5ndGgsTD15LW47dzw1JiZyPDIwJiZMPDIwJiYoKF89dGhpcy5fZmluZEJldHRlckNvbnRpZ3VvdXNTZXF1ZW5jZShfLHIsbixMLHcpKSYmKFtyLG5dPV8scj09PWkub3JpZ2luYWxTdGFydCtpLm9yaWdpbmFsTGVuZ3RoJiZuPT09aS5tb2RpZmllZFN0YXJ0K2kubW9kaWZpZWRMZW5ndGh8fChpLm9yaWdpbmFsTGVuZ3RoPXItaS5vcmlnaW5hbFN0YXJ0LGkubW9kaWZpZWRMZW5ndGg9bi1pLm1vZGlmaWVkU3RhcnQsYy5vcmlnaW5hbFN0YXJ0PXIrdyxjLm1vZGlmaWVkU3RhcnQ9bit3LGMub3JpZ2luYWxMZW5ndGg9di1jLm9yaWdpbmFsU3RhcnQsYy5tb2RpZmllZExlbmd0aD15LWMubW9kaWZpZWRTdGFydCkpKX1yZXR1cm4gYX1fZmluZEJldHRlckNvbnRpZ3VvdXNTZXF1ZW5jZShlLHQscixuLGkpe2lmKHQ8aXx8bjxpKXJldHVybiBudWxsO3ZhciBhPWUrdC1pKzEsYz1yK24taSsxO2xldCBvPTAscz0wLGw9MDtmb3IobGV0IHQ9ZTt0PGE7dCsrKWZvcihsZXQgZT1yO2U8YztlKyspe3ZhciBoPXRoaXMuX2NvbnRpZ3VvdXNTZXF1ZW5jZVNjb3JlKHQsZSxpKTswPGgmJmg+byYmKG89aCxzPXQsbD1lKX1yZXR1cm4gMDxvP1tzLGxdOm51bGx9X2NvbnRpZ3VvdXNTZXF1ZW5jZVNjb3JlKHQscixuKXtsZXQgaT0wO2ZvcihsZXQgZT0wO2U8bjtlKyspe2lmKCF0aGlzLkVsZW1lbnRzQXJlRXF1YWwodCtlLHIrZSkpcmV0dXJuIDA7aSs9dGhpcy5fb3JpZ2luYWxTdHJpbmdFbGVtZW50c1t0K2VdLmxlbmd0aH1yZXR1cm4gaX1fT3JpZ2luYWxJc0JvdW5kYXJ5KGUpe3JldHVybiBlPD0wfHxlPj10aGlzLl9vcmlnaW5hbEVsZW1lbnRzT3JIYXNoLmxlbmd0aC0xfHx0aGlzLl9oYXNTdHJpbmdzJiYvXlxzKiQvLnRlc3QodGhpcy5fb3JpZ2luYWxTdHJpbmdFbGVtZW50c1tlXSl9X09yaWdpbmFsUmVnaW9uSXNCb3VuZGFyeShlLHQpe2lmKHRoaXMuX09yaWdpbmFsSXNCb3VuZGFyeShlKXx8dGhpcy5fT3JpZ2luYWxJc0JvdW5kYXJ5KGUtMSkpcmV0dXJuITA7aWYoMDx0KXtlPWUrdDtpZih0aGlzLl9PcmlnaW5hbElzQm91bmRhcnkoZS0xKXx8dGhpcy5fT3JpZ2luYWxJc0JvdW5kYXJ5KGUpKXJldHVybiEwfXJldHVybiExfV9Nb2RpZmllZElzQm91bmRhcnkoZSl7cmV0dXJuIGU8PTB8fGU+PXRoaXMuX21vZGlmaWVkRWxlbWVudHNPckhhc2gubGVuZ3RoLTF8fHRoaXMuX2hhc1N0cmluZ3MmJi9eXHMqJC8udGVzdCh0aGlzLl9tb2RpZmllZFN0cmluZ0VsZW1lbnRzW2VdKX1fTW9kaWZpZWRSZWdpb25Jc0JvdW5kYXJ5KGUsdCl7aWYodGhpcy5fTW9kaWZpZWRJc0JvdW5kYXJ5KGUpfHx0aGlzLl9Nb2RpZmllZElzQm91bmRhcnkoZS0xKSlyZXR1cm4hMDtpZigwPHQpe2U9ZSt0O2lmKHRoaXMuX01vZGlmaWVkSXNCb3VuZGFyeShlLTEpfHx0aGlzLl9Nb2RpZmllZElzQm91bmRhcnkoZSkpcmV0dXJuITB9cmV0dXJuITF9X2JvdW5kYXJ5U2NvcmUoZSx0LHIsbil7cmV0dXJuKHRoaXMuX09yaWdpbmFsUmVnaW9uSXNCb3VuZGFyeShlLHQpPzE6MCkrKHRoaXMuX01vZGlmaWVkUmVnaW9uSXNCb3VuZGFyeShyLG4pPzE6MCl9Q29uY2F0ZW5hdGVDaGFuZ2VzKGUsdCl7dmFyIHI9W107aWYoMD09PWUubGVuZ3RofHwwPT09dC5sZW5ndGgpcmV0dXJuIDA8dC5sZW5ndGg/dDplO2lmKHRoaXMuQ2hhbmdlc092ZXJsYXAoZVtlLmxlbmd0aC0xXSx0WzBdLHIpKXtjb25zdCBuPW5ldyBBcnJheShlLmxlbmd0aCt0Lmxlbmd0aC0xKTtyZXR1cm4gRWUuQ29weShlLDAsbiwwLGUubGVuZ3RoLTEpLG5bZS5sZW5ndGgtMV09clswXSxFZS5Db3B5KHQsMSxuLGUubGVuZ3RoLHQubGVuZ3RoLTEpLG59cmV0dXJuIHI9bmV3IEFycmF5KGUubGVuZ3RoK3QubGVuZ3RoKSxFZS5Db3B5KGUsMCxyLDAsZS5sZW5ndGgpLEVlLkNvcHkodCwwLHIsZS5sZW5ndGgsdC5sZW5ndGgpLHJ9Q2hhbmdlc092ZXJsYXAocixuLGkpe2lmKE5lLkFzc2VydChyLm9yaWdpbmFsU3RhcnQ8PW4ub3JpZ2luYWxTdGFydCwiTGVmdCBjaGFuZ2UgaXMgbm90IGxlc3MgdGhhbiBvciBlcXVhbCB0byByaWdodCBjaGFuZ2UiKSxOZS5Bc3NlcnQoci5tb2RpZmllZFN0YXJ0PD1uLm1vZGlmaWVkU3RhcnQsIkxlZnQgY2hhbmdlIGlzIG5vdCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gcmlnaHQgY2hhbmdlIiksci5vcmlnaW5hbFN0YXJ0K3Iub3JpZ2luYWxMZW5ndGg+PW4ub3JpZ2luYWxTdGFydHx8ci5tb2RpZmllZFN0YXJ0K3IubW9kaWZpZWRMZW5ndGg+PW4ubW9kaWZpZWRTdGFydCl7dmFyIGE9ci5vcmlnaW5hbFN0YXJ0O2xldCBlPXIub3JpZ2luYWxMZW5ndGg7dmFyIG89ci5tb2RpZmllZFN0YXJ0O2xldCB0PXIubW9kaWZpZWRMZW5ndGg7cmV0dXJuIHIub3JpZ2luYWxTdGFydCtyLm9yaWdpbmFsTGVuZ3RoPj1uLm9yaWdpbmFsU3RhcnQmJihlPW4ub3JpZ2luYWxTdGFydCtuLm9yaWdpbmFsTGVuZ3RoLXIub3JpZ2luYWxTdGFydCksci5tb2RpZmllZFN0YXJ0K3IubW9kaWZpZWRMZW5ndGg+PW4ubW9kaWZpZWRTdGFydCYmKHQ9bi5tb2RpZmllZFN0YXJ0K24ubW9kaWZpZWRMZW5ndGgtci5tb2RpZmllZFN0YXJ0KSxpWzBdPW5ldyB5ZShhLGUsbyx0KSwhMH1yZXR1cm4gaVswXT1udWxsLCExfUNsaXBEaWFnb25hbEJvdW5kKGUsdCxyLG4pe2lmKDA8PWUmJmU8bilyZXR1cm4gZTt0PXQlMj09MDtyZXR1cm4gZTwwP3Q9PShyJTI9PTApPzA6MTp0PT0oKG4tci0xKSUyPT0wKT9uLTE6bi0yfX1sZXQgeGU7aWYodm9pZCAwIT09RC52c2NvZGUmJnZvaWQgMCE9PUQudnNjb2RlLnByb2Nlc3Mpe2NvbnN0IEtyPUQudnNjb2RlLnByb2Nlc3M7eGU9e2dldCBwbGF0Zm9ybSgpe3JldHVybiBLci5wbGF0Zm9ybX0sZ2V0IGFyY2goKXtyZXR1cm4gS3IuYXJjaH0sZ2V0IGVudigpe3JldHVybiBLci5lbnZ9LGN3ZCgpe3JldHVybiBLci5jd2QoKX19fWVsc2UgeGU9InVuZGVmaW5lZCIhPXR5cGVvZiBwcm9jZXNzP3tnZXQgcGxhdGZvcm0oKXtyZXR1cm4gcHJvY2Vzcy5wbGF0Zm9ybX0sZ2V0IGFyY2goKXtyZXR1cm4gcHJvY2Vzcy5hcmNofSxnZXQgZW52KCl7cmV0dXJuIHByb2Nlc3MuZW52fSxjd2QoKXtyZXR1cm4gcHJvY2Vzcy5lbnYuVlNDT0RFX0NXRHx8cHJvY2Vzcy5jd2QoKX19OntnZXQgcGxhdGZvcm0oKXtyZXR1cm4gTz8id2luMzIiOkY/ImRhcndpbiI6ImxpbnV4In0sZ2V0IGFyY2goKXt9LGdldCBlbnYoKXtyZXR1cm57fX0sY3dkKCl7cmV0dXJuIi8ifX07Y29uc3QgTWU9eGUuY3dkLEtlPXhlLmVudjt2YXIgUGUsUmUsdD14ZS5wbGF0Zm9ybTtjbGFzcyBEZSBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKGUsdCxyKXtsZXQgbjsic3RyaW5nIj09dHlwZW9mIHQmJjA9PT10LmluZGV4T2YoIm5vdCAiKT8obj0ibXVzdCBub3QgYmUiLHQ9dC5yZXBsYWNlKC9ebm90IC8sIiIpKTpuPSJtdXN0IGJlIjt2YXIgaT0tMSE9PWUuaW5kZXhPZigiLiIpPyJwcm9wZXJ0eSI6ImFyZ3VtZW50IixlPWBUaGUgIiR7ZX0iICR7aX0gJHtufSBvZiB0eXBlIGArdDtzdXBlcihlKz0iLiBSZWNlaXZlZCB0eXBlICIrdHlwZW9mIHIpLHRoaXMuY29kZT0iRVJSX0lOVkFMSURfQVJHX1RZUEUifX1mdW5jdGlvbiBnKGUsdCl7aWYoInN0cmluZyIhPXR5cGVvZiBlKXRocm93IG5ldyBEZSh0LCJzdHJpbmciLGUpfWZ1bmN0aW9uIGQoZSl7cmV0dXJuIDQ3PT09ZXx8OTI9PT1lfWZ1bmN0aW9uIEllKGUpe3JldHVybiA0Nz09PWV9ZnVuY3Rpb24gVmUoZSl7cmV0dXJuIDY1PD1lJiZlPD05MHx8OTc8PWUmJmU8PTEyMn1mdW5jdGlvbiBPZSh0LHIsbixpKXtsZXQgYT0iIixvPTAscz0tMSxsPTAsaD0wO2ZvcihsZXQgZT0wO2U8PXQubGVuZ3RoOysrZSl7aWYoZTx0Lmxlbmd0aCloPXQuY2hhckNvZGVBdChlKTtlbHNle2lmKGkoaCkpYnJlYWs7aD00N31pZihpKGgpKXtpZihzIT09ZS0xJiYxIT09bClpZigyPT09bCl7aWYoYS5sZW5ndGg8Mnx8MiE9PW98fDQ2IT09YS5jaGFyQ29kZUF0KGEubGVuZ3RoLTEpfHw0NiE9PWEuY2hhckNvZGVBdChhLmxlbmd0aC0yKSl7aWYoMjxhLmxlbmd0aCl7dmFyIGM9YS5sYXN0SW5kZXhPZihuKTtvPS0xPT09Yz8oYT0iIiwwKTooYT1hLnNsaWNlKDAsYykpLmxlbmd0aC0xLWEubGFzdEluZGV4T2Yobikscz1lLGw9MDtjb250aW51ZX1pZigwIT09YS5sZW5ndGgpe2E9IiIsbz0wLHM9ZSxsPTA7Y29udGludWV9fXImJihhKz0wPGEubGVuZ3RoP24rIi4uIjoiLi4iLG89Mil9ZWxzZSAwPGEubGVuZ3RoP2ErPSIiK24rdC5zbGljZShzKzEsZSk6YT10LnNsaWNlKHMrMSxlKSxvPWUtcy0xO3M9ZSxsPTB9ZWxzZSA0Nj09PWgmJi0xIT09bD8rK2w6bD0tMX1yZXR1cm4gYX1mdW5jdGlvbiBGZShlLHQpe2lmKG51bGw9PT10fHwib2JqZWN0IiE9dHlwZW9mIHQpdGhyb3cgbmV3IERlKCJwYXRoT2JqZWN0IiwiT2JqZWN0Iix0KTt2YXIgcj10LmRpcnx8dC5yb290LG49dC5iYXNlfHwiIisodC5uYW1lfHwiIikrKHQuZXh0fHwiIik7cmV0dXJuIHI/cj09PXQucm9vdD8iIityK246IiIrcitlK246bn1jb25zdCBUZT17cmVzb2x2ZSguLi5hKXtsZXQgbz0iIixzPSIiLGw9ITE7Zm9yKGxldCB0PWEubGVuZ3RoLTE7LTE8PXQ7dC0tKXtsZXQgcjtpZigwPD10KXtpZihnKHI9YVt0XSwicGF0aCIpLDA9PT1yLmxlbmd0aCljb250aW51ZX1lbHNlIDA9PT1vLmxlbmd0aD9yPU1lKCk6KHZvaWQgMD09PShyPUtlWyI9IitvXXx8TWUoKSl8fHIuc2xpY2UoMCwyKS50b0xvd2VyQ2FzZSgpIT09by50b0xvd2VyQ2FzZSgpJiY5Mj09PXIuY2hhckNvZGVBdCgyKSkmJihyPW8rIlxcIik7dmFyIGg9ci5sZW5ndGg7bGV0IG49MCxpPSIiLGU9ITE7dmFyIGM9ci5jaGFyQ29kZUF0KDApO2lmKDE9PT1oKWQoYykmJihuPTEsZT0hMCk7ZWxzZSBpZihkKGMpKWlmKGU9ITAsZChyLmNoYXJDb2RlQXQoMSkpKXtsZXQgZT0yLHQ9ZTtmb3IoO2U8aCYmIWQoci5jaGFyQ29kZUF0KGUpKTspZSsrO2lmKGU8aCYmZSE9PXQpe3ZhciB1PXIuc2xpY2UodCxlKTtmb3IodD1lO2U8aCYmZChyLmNoYXJDb2RlQXQoZSkpOyllKys7aWYoZTxoJiZlIT09dCl7Zm9yKHQ9ZTtlPGgmJiFkKHIuY2hhckNvZGVBdChlKSk7KWUrKztlIT09aCYmZT09PXR8fChpPWBcXFxcJHt1fVxcYCtyLnNsaWNlKHQsZSksbj1lKX19fWVsc2Ugbj0xO2Vsc2UgVmUoYykmJjU4PT09ci5jaGFyQ29kZUF0KDEpJiYoaT1yLnNsaWNlKDAsMiksKG49Mik8aCYmZChyLmNoYXJDb2RlQXQoMikpJiYoZT0hMCxuPTMpKTtpZigwPGkubGVuZ3RoKWlmKDA8by5sZW5ndGgpe2lmKGkudG9Mb3dlckNhc2UoKSE9PW8udG9Mb3dlckNhc2UoKSljb250aW51ZX1lbHNlIG89aTtpZihsKXtpZigwPG8ubGVuZ3RoKWJyZWFrfWVsc2UgaWYocz1yLnNsaWNlKG4pKyJcXCIrcywobD1lKSYmMDxvLmxlbmd0aClicmVha31yZXR1cm4gcz1PZShzLCFsLCJcXCIsZCksbD9vKyJcXCIrczoiIitvK3N8fCIuIn0sbm9ybWFsaXplKHIpe2cociwicGF0aCIpO3ZhciBuPXIubGVuZ3RoO2lmKDA9PT1uKXJldHVybiIuIjtsZXQgaT0wLGEsZT0hMTt2YXIgdD1yLmNoYXJDb2RlQXQoMCk7aWYoMT09PW4pcmV0dXJuIEllKHQpPyJcXCI6cjtpZihkKHQpKWlmKGU9ITAsZChyLmNoYXJDb2RlQXQoMSkpKXtsZXQgZT0yLHQ9ZTtmb3IoO2U8biYmIWQoci5jaGFyQ29kZUF0KGUpKTspZSsrO2lmKGU8biYmZSE9PXQpe3ZhciBvPXIuc2xpY2UodCxlKTtmb3IodD1lO2U8biYmZChyLmNoYXJDb2RlQXQoZSkpOyllKys7aWYoZTxuJiZlIT09dCl7Zm9yKHQ9ZTtlPG4mJiFkKHIuY2hhckNvZGVBdChlKSk7KWUrKztpZihlPT09bilyZXR1cm5gXFxcXCR7b31cXCR7ci5zbGljZSh0KX1cXGA7ZSE9PXQmJihhPWBcXFxcJHtvfVxcYCtyLnNsaWNlKHQsZSksaT1lKX19fWVsc2UgaT0xO2Vsc2UgVmUodCkmJjU4PT09ci5jaGFyQ29kZUF0KDEpJiYoYT1yLnNsaWNlKDAsMiksKGk9Mik8biYmZChyLmNoYXJDb2RlQXQoMikpJiYoZT0hMCxpPTMpKTtsZXQgcz1pPG4/T2Uoci5zbGljZShpKSwhZSwiXFwiLGQpOiIiO3JldHVybiAwPChzPTAhPT1zLmxlbmd0aHx8ZT9zOiIuIikubGVuZ3RoJiZkKHIuY2hhckNvZGVBdChuLTEpKSYmKHMrPSJcXCIpLHZvaWQgMD09PWE/ZT8iXFwiK3M6czplP2ErIlxcIitzOiIiK2Erc30saXNBYnNvbHV0ZShlKXtnKGUsInBhdGgiKTt2YXIgdD1lLmxlbmd0aDtpZigwPT09dClyZXR1cm4hMTt2YXIgcj1lLmNoYXJDb2RlQXQoMCk7cmV0dXJuIGQocil8fDI8dCYmVmUocikmJjU4PT09ZS5jaGFyQ29kZUF0KDEpJiZkKGUuY2hhckNvZGVBdCgyKSl9LGpvaW4oLi4udCl7aWYoMD09PXQubGVuZ3RoKXJldHVybiIuIjtsZXQgcixuO2ZvcihsZXQgZT0wO2U8dC5sZW5ndGg7KytlKXt2YXIgaT10W2VdO2coaSwicGF0aCIpLDA8aS5sZW5ndGgmJih2b2lkIDA9PT1yP3I9bj1pOnIrPSJcXCIraSl9aWYodm9pZCAwPT09cilyZXR1cm4iLiI7bGV0IGU9ITAsYT0wO3ZhciBvO2lmKCJzdHJpbmciPT10eXBlb2YgbiYmZChuLmNoYXJDb2RlQXQoMCkpJiYoKythLDE8KG89bi5sZW5ndGgpJiZkKG4uY2hhckNvZGVBdCgxKSkmJigrK2EsMjxvJiYoZChuLmNoYXJDb2RlQXQoMikpPysrYTplPSExKSkpLGUpe2Zvcig7YTxyLmxlbmd0aCYmZChyLmNoYXJDb2RlQXQoYSkpOylhKys7Mjw9YSYmKHI9IlxcIityLnNsaWNlKGEpKX1yZXR1cm4gVGUubm9ybWFsaXplKHIpfSxyZWxhdGl2ZShlLHQpe2lmKGcoZSwiZnJvbSIpLGcodCwidG8iKSxlPT09dClyZXR1cm4iIjtjb25zdCBjPVRlLnJlc29sdmUoZSkscj1UZS5yZXNvbHZlKHQpO2lmKGM9PT1yKXJldHVybiIiO2lmKChlPWMudG9Mb3dlckNhc2UoKSk9PT0odD1yLnRvTG93ZXJDYXNlKCkpKXJldHVybiIiO2xldCBuPTA7Zm9yKDtuPGUubGVuZ3RoJiY5Mj09PWUuY2hhckNvZGVBdChuKTspbisrO2xldCBpPWUubGVuZ3RoO2Zvcig7aS0xPm4mJjkyPT09ZS5jaGFyQ29kZUF0KGktMSk7KWktLTt2YXIgdT1pLW47bGV0IGE9MDtmb3IoO2E8dC5sZW5ndGgmJjkyPT09dC5jaGFyQ29kZUF0KGEpOylhKys7bGV0IG89dC5sZW5ndGg7Zm9yKDtvLTE+YSYmOTI9PT10LmNoYXJDb2RlQXQoby0xKTspby0tO3ZhciBkPW8tYSxzPXU8ZD91OmQ7bGV0IGw9LTEsaD0wO2Zvcig7aDxzO2grKyl7dmFyIGY9ZS5jaGFyQ29kZUF0KG4raCk7aWYoZiE9PXQuY2hhckNvZGVBdChhK2gpKWJyZWFrOzkyPT09ZiYmKGw9aCl9aWYoaCE9PXMpe2lmKC0xPT09bClyZXR1cm4gcn1lbHNle2lmKHM8ZCl7aWYoOTI9PT10LmNoYXJDb2RlQXQoYStoKSlyZXR1cm4gci5zbGljZShhK2grMSk7aWYoMj09PWgpcmV0dXJuIHIuc2xpY2UoYStoKX1zPHUmJig5Mj09PWUuY2hhckNvZGVBdChuK2gpP2w9aDoyPT09aCYmKGw9MykpLC0xPT09bCYmKGw9MCl9bGV0IG09IiI7Zm9yKGg9bitsKzE7aDw9aTsrK2gpaCE9PWkmJjkyIT09ZS5jaGFyQ29kZUF0KGgpfHwobSs9MD09PW0ubGVuZ3RoPyIuLiI6IlxcLi4iKTtyZXR1cm4gYSs9bCwwPG0ubGVuZ3RoPyIiK20rci5zbGljZShhLG8pOig5Mj09PXIuY2hhckNvZGVBdChhKSYmKythLHIuc2xpY2UoYSxvKSl9LHRvTmFtZXNwYWNlZFBhdGgoZSl7aWYoInN0cmluZyIhPXR5cGVvZiBlKXJldHVybiBlO2lmKDA9PT1lLmxlbmd0aClyZXR1cm4iIjtjb25zdCB0PVRlLnJlc29sdmUoZSk7aWYodC5sZW5ndGg8PTIpcmV0dXJuIGU7aWYoOTI9PT10LmNoYXJDb2RlQXQoMCkpe2lmKDkyPT09dC5jaGFyQ29kZUF0KDEpKXt2YXIgcj10LmNoYXJDb2RlQXQoMik7aWYoNjMhPT1yJiY0NiE9PXIpcmV0dXJuIlxcXFw/XFxVTkNcXCIrdC5zbGljZSgyKX19ZWxzZSBpZihWZSh0LmNoYXJDb2RlQXQoMCkpJiY1OD09PXQuY2hhckNvZGVBdCgxKSYmOTI9PT10LmNoYXJDb2RlQXQoMikpcmV0dXJuIlxcXFw/XFwiK3Q7cmV0dXJuIGV9LGRpcm5hbWUocil7ZyhyLCJwYXRoIik7dmFyIG49ci5sZW5ndGg7aWYoMD09PW4pcmV0dXJuIi4iO2xldCBpPS0xLGE9MDt2YXIgZT1yLmNoYXJDb2RlQXQoMCk7aWYoMT09PW4pcmV0dXJuIGQoZSk/cjoiLiI7aWYoZChlKSl7aWYoaT1hPTEsZChyLmNoYXJDb2RlQXQoMSkpKXtsZXQgZT0yLHQ9ZTtmb3IoO2U8biYmIWQoci5jaGFyQ29kZUF0KGUpKTspZSsrO2lmKGU8biYmZSE9PXQpe2Zvcih0PWU7ZTxuJiZkKHIuY2hhckNvZGVBdChlKSk7KWUrKztpZihlPG4mJmUhPT10KXtmb3IodD1lO2U8biYmIWQoci5jaGFyQ29kZUF0KGUpKTspZSsrO2lmKGU9PT1uKXJldHVybiByO2UhPT10JiYoaT1hPWUrMSl9fX19ZWxzZSBWZShlKSYmNTg9PT1yLmNoYXJDb2RlQXQoMSkmJihpPTI8biYmZChyLmNoYXJDb2RlQXQoMikpPzM6MixhPWkpO2xldCB0PS0xLG89ITA7Zm9yKGxldCBlPW4tMTtlPj1hOy0tZSlpZihkKHIuY2hhckNvZGVBdChlKSkpe2lmKCFvKXt0PWU7YnJlYWt9fWVsc2Ugbz0hMTtpZigtMT09PXQpe2lmKC0xPT09aSlyZXR1cm4iLiI7dD1pfXJldHVybiByLnNsaWNlKDAsdCl9LGJhc2VuYW1lKHIsbil7dm9pZCAwIT09biYmZyhuLCJleHQiKSxnKHIsInBhdGgiKTtsZXQgaT0wLGE9LTEsbz0hMCxzO2lmKDI8PXIubGVuZ3RoJiZWZShyLmNoYXJDb2RlQXQoMCkpJiY1OD09PXIuY2hhckNvZGVBdCgxKSYmKGk9Miksdm9pZCAwIT09biYmMDxuLmxlbmd0aCYmbi5sZW5ndGg8PXIubGVuZ3RoKXtpZihuPT09cilyZXR1cm4iIjtsZXQgZT1uLmxlbmd0aC0xLHQ9LTE7Zm9yKHM9ci5sZW5ndGgtMTtzPj1pOy0tcyl7dmFyIGw9ci5jaGFyQ29kZUF0KHMpO2lmKGQobCkpe2lmKCFvKXtpPXMrMTticmVha319ZWxzZS0xPT09dCYmKG89ITEsdD1zKzEpLDA8PWUmJihsPT09bi5jaGFyQ29kZUF0KGUpPy0xPT0tLWUmJihhPXMpOihlPS0xLGE9dCkpfXJldHVybiBpPT09YT9hPXQ6LTE9PT1hJiYoYT1yLmxlbmd0aCksci5zbGljZShpLGEpfWZvcihzPXIubGVuZ3RoLTE7cz49aTstLXMpaWYoZChyLmNoYXJDb2RlQXQocykpKXtpZighbyl7aT1zKzE7YnJlYWt9fWVsc2UtMT09PWEmJihvPSExLGE9cysxKTtyZXR1cm4tMT09PWE/IiI6ci5zbGljZShpLGEpfSxleHRuYW1lKHQpe2codCwicGF0aCIpO2xldCByPTAsbj0tMSxpPTAsYT0tMSxvPSEwLHM9MDsyPD10Lmxlbmd0aCYmNTg9PT10LmNoYXJDb2RlQXQoMSkmJlZlKHQuY2hhckNvZGVBdCgwKSkmJihyPWk9Mik7Zm9yKGxldCBlPXQubGVuZ3RoLTE7ZT49cjstLWUpe3ZhciBsPXQuY2hhckNvZGVBdChlKTtpZihkKGwpKXtpZihvKWNvbnRpbnVlO2k9ZSsxO2JyZWFrfS0xPT09YSYmKG89ITEsYT1lKzEpLDQ2PT09bD8tMT09PW4/bj1lOjEhPT1zJiYocz0xKTotMSE9PW4mJihzPS0xKX1yZXR1cm4tMT09PW58fC0xPT09YXx8MD09PXN8fDE9PT1zJiZuPT09YS0xJiZuPT09aSsxPyIiOnQuc2xpY2UobixhKX0sZm9ybWF0OkZlLmJpbmQobnVsbCwiXFwiKSxwYXJzZShyKXtnKHIsInBhdGgiKTtjb25zdCBlPXtyb290OiIiLGRpcjoiIixiYXNlOiIiLGV4dDoiIixuYW1lOiIifTtpZigwPT09ci5sZW5ndGgpcmV0dXJuIGU7dmFyIG49ci5sZW5ndGg7bGV0IGk9MCx0PXIuY2hhckNvZGVBdCgwKTtpZigxPT09bilyZXR1cm4gZCh0KT9lLnJvb3Q9ZS5kaXI9cjplLmJhc2U9ZS5uYW1lPXIsZTtpZihkKHQpKXtpZihpPTEsZChyLmNoYXJDb2RlQXQoMSkpKXtsZXQgZT0yLHQ9ZTtmb3IoO2U8biYmIWQoci5jaGFyQ29kZUF0KGUpKTspZSsrO2lmKGU8biYmZSE9PXQpe2Zvcih0PWU7ZTxuJiZkKHIuY2hhckNvZGVBdChlKSk7KWUrKztpZihlPG4mJmUhPT10KXtmb3IodD1lO2U8biYmIWQoci5jaGFyQ29kZUF0KGUpKTspZSsrO2U9PT1uP2k9ZTplIT09dCYmKGk9ZSsxKX19fX1lbHNlIGlmKFZlKHQpJiY1OD09PXIuY2hhckNvZGVBdCgxKSl7aWYobjw9MilyZXR1cm4gZS5yb290PWUuZGlyPXIsZTtpZihpPTIsZChyLmNoYXJDb2RlQXQoMikpKXtpZigzPT09bilyZXR1cm4gZS5yb290PWUuZGlyPXIsZTtpPTN9fTA8aSYmKGUucm9vdD1yLnNsaWNlKDAsaSkpO2xldCBhPS0xLG89aSxzPS0xLGM9ITAsbD1yLmxlbmd0aC0xLGg9MDtmb3IoO2w+PWk7LS1sKXtpZihkKHQ9ci5jaGFyQ29kZUF0KGwpKSl7aWYoYyljb250aW51ZTtvPWwrMTticmVha30tMT09PXMmJihjPSExLHM9bCsxKSw0Nj09PXQ/LTE9PT1hP2E9bDoxIT09aCYmKGg9MSk6LTEhPT1hJiYoaD0tMSl9cmV0dXJuLTEhPT1zJiYoLTE9PT1hfHwwPT09aHx8MT09PWgmJmE9PT1zLTEmJmE9PT1vKzE/ZS5iYXNlPWUubmFtZT1yLnNsaWNlKG8scyk6KGUubmFtZT1yLnNsaWNlKG8sYSksZS5iYXNlPXIuc2xpY2UobyxzKSxlLmV4dD1yLnNsaWNlKGEscykpKSwwPG8mJm8hPT1pP2UuZGlyPXIuc2xpY2UoMCxvLTEpOmUuZGlyPWUucm9vdCxlfSxzZXA6IlxcIixkZWxpbWl0ZXI6IjsiLHdpbjMyOm51bGwscG9zaXg6bnVsbH0sQmU9e3Jlc29sdmUoLi4udCl7bGV0IHI9IiIsbj0hMTtmb3IobGV0IGU9dC5sZW5ndGgtMTstMTw9ZSYmIW47ZS0tKXtjb25zdCBpPTA8PWU/dFtlXTpNZSgpO2coaSwicGF0aCIpLDAhPT1pLmxlbmd0aCYmKHI9aSsiLyIrcixuPTQ3PT09aS5jaGFyQ29kZUF0KDApKX1yZXR1cm4gcj1PZShyLCFuLCIvIixJZSksbj8iLyIrcjowPHIubGVuZ3RoP3I6Ii4ifSxub3JtYWxpemUoZSl7aWYoZyhlLCJwYXRoIiksMD09PWUubGVuZ3RoKXJldHVybiIuIjt2YXIgdD00Nz09PWUuY2hhckNvZGVBdCgwKSxyPTQ3PT09ZS5jaGFyQ29kZUF0KGUubGVuZ3RoLTEpO3JldHVybiAwPT09KGU9T2UoZSwhdCwiLyIsSWUpKS5sZW5ndGg/dD8iLyI6cj8iLi8iOiIuIjoociYmKGUrPSIvIiksdD8iLyIrZTplKX0saXNBYnNvbHV0ZShlKXtyZXR1cm4gZyhlLCJwYXRoIiksMDxlLmxlbmd0aCYmNDc9PT1lLmNoYXJDb2RlQXQoMCl9LGpvaW4oLi4udCl7aWYoMD09PXQubGVuZ3RoKXJldHVybiIuIjtsZXQgcjtmb3IobGV0IGU9MDtlPHQubGVuZ3RoOysrZSl7dmFyIG49dFtlXTtnKG4sInBhdGgiKSwwPG4ubGVuZ3RoJiYodm9pZCAwPT09cj9yPW46cis9Ii8iK24pfXJldHVybiB2b2lkIDA9PT1yPyIuIjpCZS5ub3JtYWxpemUocil9LHJlbGF0aXZlKGUsdCl7aWYoZyhlLCJmcm9tIiksZyh0LCJ0byIpLGU9PT10KXJldHVybiIiO2lmKChlPUJlLnJlc29sdmUoZSkpPT09KHQ9QmUucmVzb2x2ZSh0KSkpcmV0dXJuIiI7dmFyIHI9ZS5sZW5ndGgsbj1yLTEsaT10Lmxlbmd0aC0xLGE9bjxpP246aTtsZXQgbz0tMSxzPTA7Zm9yKDtzPGE7cysrKXt2YXIgbD1lLmNoYXJDb2RlQXQoMStzKTtpZihsIT09dC5jaGFyQ29kZUF0KDErcykpYnJlYWs7NDc9PT1sJiYobz1zKX1pZihzPT09YSlpZihhPGkpe2lmKDQ3PT09dC5jaGFyQ29kZUF0KDErcykpcmV0dXJuIHQuc2xpY2UoMStzKzEpO2lmKDA9PT1zKXJldHVybiB0LnNsaWNlKDErcyl9ZWxzZSBhPG4mJig0Nz09PWUuY2hhckNvZGVBdCgxK3MpP289czowPT09cyYmKG89MCkpO2xldCBoPSIiO2ZvcihzPTErbysxO3M8PXI7KytzKXMhPT1yJiY0NyE9PWUuY2hhckNvZGVBdChzKXx8KGgrPTA9PT1oLmxlbmd0aD8iLi4iOiIvLi4iKTtyZXR1cm4iIitoK3Quc2xpY2UoMStvKX0sdG9OYW1lc3BhY2VkUGF0aChlKXtyZXR1cm4gZX0sZGlybmFtZSh0KXtpZihnKHQsInBhdGgiKSwwPT09dC5sZW5ndGgpcmV0dXJuIi4iO3ZhciBlPTQ3PT09dC5jaGFyQ29kZUF0KDApO2xldCByPS0xLG49ITA7Zm9yKGxldCBlPXQubGVuZ3RoLTE7MTw9ZTstLWUpaWYoNDc9PT10LmNoYXJDb2RlQXQoZSkpe2lmKCFuKXtyPWU7YnJlYWt9fWVsc2Ugbj0hMTtyZXR1cm4tMT09PXI/ZT8iLyI6Ii4iOmUmJjE9PT1yPyIvLyI6dC5zbGljZSgwLHIpfSxiYXNlbmFtZShyLG4pe3ZvaWQgMCE9PW4mJmcobiwiZXh0IiksZyhyLCJwYXRoIik7bGV0IGk9MCxhPS0xLG89ITAscztpZih2b2lkIDAhPT1uJiYwPG4ubGVuZ3RoJiZuLmxlbmd0aDw9ci5sZW5ndGgpe2lmKG49PT1yKXJldHVybiIiO2xldCBlPW4ubGVuZ3RoLTEsdD0tMTtmb3Iocz1yLmxlbmd0aC0xOzA8PXM7LS1zKXt2YXIgbD1yLmNoYXJDb2RlQXQocyk7aWYoNDc9PT1sKXtpZighbyl7aT1zKzE7YnJlYWt9fWVsc2UtMT09PXQmJihvPSExLHQ9cysxKSwwPD1lJiYobD09PW4uY2hhckNvZGVBdChlKT8tMT09LS1lJiYoYT1zKTooZT0tMSxhPXQpKX1yZXR1cm4gaT09PWE/YT10Oi0xPT09YSYmKGE9ci5sZW5ndGgpLHIuc2xpY2UoaSxhKX1mb3Iocz1yLmxlbmd0aC0xOzA8PXM7LS1zKWlmKDQ3PT09ci5jaGFyQ29kZUF0KHMpKXtpZighbyl7aT1zKzE7YnJlYWt9fWVsc2UtMT09PWEmJihvPSExLGE9cysxKTtyZXR1cm4tMT09PWE/IiI6ci5zbGljZShpLGEpfSxleHRuYW1lKHQpe2codCwicGF0aCIpO2xldCByPS0xLG49MCxpPS0xLGE9ITAsbz0wO2ZvcihsZXQgZT10Lmxlbmd0aC0xOzA8PWU7LS1lKXt2YXIgcz10LmNoYXJDb2RlQXQoZSk7aWYoNDc9PT1zKXtpZihhKWNvbnRpbnVlO249ZSsxO2JyZWFrfS0xPT09aSYmKGE9ITEsaT1lKzEpLDQ2PT09cz8tMT09PXI/cj1lOjEhPT1vJiYobz0xKTotMSE9PXImJihvPS0xKX1yZXR1cm4tMT09PXJ8fC0xPT09aXx8MD09PW98fDE9PT1vJiZyPT09aS0xJiZyPT09bisxPyIiOnQuc2xpY2UocixpKX0sZm9ybWF0OkZlLmJpbmQobnVsbCwiLyIpLHBhcnNlKGUpe2coZSwicGF0aCIpO2NvbnN0IHQ9e3Jvb3Q6IiIsZGlyOiIiLGJhc2U6IiIsZXh0OiIiLG5hbWU6IiJ9O2lmKDA9PT1lLmxlbmd0aClyZXR1cm4gdDt2YXIgcj00Nz09PWUuY2hhckNvZGVBdCgwKTtsZXQgbixpPShuPXI/KHQucm9vdD0iLyIsMSk6MCwtMSksYT0wLG89LTEscz0hMCxsPWUubGVuZ3RoLTEsaD0wO2Zvcig7bD49bjstLWwpe3ZhciBjPWUuY2hhckNvZGVBdChsKTtpZig0Nz09PWMpe2lmKHMpY29udGludWU7YT1sKzE7YnJlYWt9LTE9PT1vJiYocz0hMSxvPWwrMSksNDY9PT1jPy0xPT09aT9pPWw6MSE9PWgmJihoPTEpOi0xIT09aSYmKGg9LTEpfWlmKC0xIT09byl7Y29uc3Qgbj0wPT09YSYmcj8xOmE7LTE9PT1pfHwwPT09aHx8MT09PWgmJmk9PT1vLTEmJmk9PT1hKzE/dC5iYXNlPXQubmFtZT1lLnNsaWNlKG4sbyk6KHQubmFtZT1lLnNsaWNlKG4saSksdC5iYXNlPWUuc2xpY2UobixvKSx0LmV4dD1lLnNsaWNlKGksbykpfXJldHVybiAwPGE/dC5kaXI9ZS5zbGljZSgwLGEtMSk6ciYmKHQuZGlyPSIvIiksdH0sc2VwOiIvIixkZWxpbWl0ZXI6IjoiLHdpbjMyOm51bGwscG9zaXg6bnVsbH0sVWU9KEJlLndpbjMyPVRlLndpbjMyPVRlLEJlLnBvc2l4PVRlLnBvc2l4PUJlLCgid2luMzIiPT09dD9UZTpCZSkubm9ybWFsaXplLCgid2luMzIiPT09dD9UZTpCZSkucmVzb2x2ZSwoIndpbjMyIj09PXQ/VGU6QmUpLnJlbGF0aXZlLCgid2luMzIiPT09dD9UZTpCZSkuZGlybmFtZSwoIndpbjMyIj09PXQ/VGU6QmUpLmJhc2VuYW1lLCgid2luMzIiPT09dD9UZTpCZSkuZXh0bmFtZSwoIndpbjMyIj09PXQ/VGU6QmUpLnNlcCwvXlx3W1x3XGQrLi1dKiQvKSxxZT0vXlwvLyxIZT0vXlwvXC8vO2Z1bmN0aW9uIHplKGUsdCl7aWYoIWUuc2NoZW1lJiZ0KXRocm93IG5ldyBFcnJvcihgW1VyaUVycm9yXTogU2NoZW1lIGlzIG1pc3Npbmc6IHtzY2hlbWU6ICIiLCBhdXRob3JpdHk6ICIke2UuYXV0aG9yaXR5fSIsIHBhdGg6ICIke2UucGF0aH0iLCBxdWVyeTogIiR7ZS5xdWVyeX0iLCBmcmFnbWVudDogIiR7ZS5mcmFnbWVudH0ifWApO2lmKGUuc2NoZW1lJiYhVWUudGVzdChlLnNjaGVtZSkpdGhyb3cgbmV3IEVycm9yKCJbVXJpRXJyb3JdOiBTY2hlbWUgY29udGFpbnMgaWxsZWdhbCBjaGFyYWN0ZXJzLiIpO2lmKGUucGF0aClpZihlLmF1dGhvcml0eSl7aWYoIXFlLnRlc3QoZS5wYXRoKSl0aHJvdyBuZXcgRXJyb3IoJ1tVcmlFcnJvcl06IElmIGEgVVJJIGNvbnRhaW5zIGFuIGF1dGhvcml0eSBjb21wb25lbnQsIHRoZW4gdGhlIHBhdGggY29tcG9uZW50IG11c3QgZWl0aGVyIGJlIGVtcHR5IG9yIGJlZ2luIHdpdGggYSBzbGFzaCAoIi8iKSBjaGFyYWN0ZXInKX1lbHNlIGlmKEhlLnRlc3QoZS5wYXRoKSl0aHJvdyBuZXcgRXJyb3IoJ1tVcmlFcnJvcl06IElmIGEgVVJJIGRvZXMgbm90IGNvbnRhaW4gYW4gYXV0aG9yaXR5IGNvbXBvbmVudCwgdGhlbiB0aGUgcGF0aCBjYW5ub3QgYmVnaW4gd2l0aCB0d28gc2xhc2ggY2hhcmFjdGVycyAoIi8vIiknKX1jb25zdCBXZT0iLyIsamU9L14oKFteOi8/I10rPyk6KT8oXC9cLyhbXi8/I10qKSk/KFtePyNdKikoXD8oW14jXSopKT8oIyguKikpPy87Y2xhc3MgJGV7Y29uc3RydWN0b3IoZSx0LHIsbixpLGE9ITEpe3ZhciBvOyJvYmplY3QiPT10eXBlb2YgZT8odGhpcy5zY2hlbWU9ZS5zY2hlbWV8fCIiLHRoaXMuYXV0aG9yaXR5PWUuYXV0aG9yaXR5fHwiIix0aGlzLnBhdGg9ZS5wYXRofHwiIix0aGlzLnF1ZXJ5PWUucXVlcnl8fCIiLHRoaXMuZnJhZ21lbnQ9ZS5mcmFnbWVudHx8IiIpOih0aGlzLnNjaGVtZT0obz1hLChlPWUpfHxvP2U6ImZpbGUiKSx0aGlzLmF1dGhvcml0eT10fHwiIix0aGlzLnBhdGg9ZnVuY3Rpb24oZSx0KXtzd2l0Y2goZSl7Y2FzZSJodHRwcyI6Y2FzZSJodHRwIjpjYXNlImZpbGUiOnQ/dFswXSE9PVdlJiYodD1XZSt0KTp0PVdlfXJldHVybiB0fSh0aGlzLnNjaGVtZSxyfHwiIiksdGhpcy5xdWVyeT1ufHwiIix0aGlzLmZyYWdtZW50PWl8fCIiLHplKHRoaXMsYSkpfXN0YXRpYyBpc1VyaShlKXtyZXR1cm4gZSBpbnN0YW5jZW9mICRlfHwhIWUmJigic3RyaW5nIj09dHlwZW9mIGUuYXV0aG9yaXR5JiYic3RyaW5nIj09dHlwZW9mIGUuZnJhZ21lbnQmJiJzdHJpbmciPT10eXBlb2YgZS5wYXRoJiYic3RyaW5nIj09dHlwZW9mIGUucXVlcnkmJiJzdHJpbmciPT10eXBlb2YgZS5zY2hlbWUmJiJzdHJpbmciPT10eXBlb2YgZS5mc1BhdGgmJiJmdW5jdGlvbiI9PXR5cGVvZiBlLndpdGgmJiJmdW5jdGlvbiI9PXR5cGVvZiBlLnRvU3RyaW5nKX1nZXQgZnNQYXRoKCl7cmV0dXJuIFhlKHRoaXMsITEpfXdpdGgoZSl7aWYoIWUpcmV0dXJuIHRoaXM7bGV0e3NjaGVtZTp0LGF1dGhvcml0eTpyLHBhdGg6bixxdWVyeTppLGZyYWdtZW50OmF9PWU7cmV0dXJuIHZvaWQgMD09PXQ/dD10aGlzLnNjaGVtZTpudWxsPT09dCYmKHQ9IiIpLHZvaWQgMD09PXI/cj10aGlzLmF1dGhvcml0eTpudWxsPT09ciYmKHI9IiIpLHZvaWQgMD09PW4/bj10aGlzLnBhdGg6bnVsbD09PW4mJihuPSIiKSx2b2lkIDA9PT1pP2k9dGhpcy5xdWVyeTpudWxsPT09aSYmKGk9IiIpLHZvaWQgMD09PWE/YT10aGlzLmZyYWdtZW50Om51bGw9PT1hJiYoYT0iIiksdD09PXRoaXMuc2NoZW1lJiZyPT09dGhpcy5hdXRob3JpdHkmJm49PT10aGlzLnBhdGgmJmk9PT10aGlzLnF1ZXJ5JiZhPT09dGhpcy5mcmFnbWVudD90aGlzOm5ldyBKZSh0LHIsbixpLGEpfXN0YXRpYyBwYXJzZShlLHQ9ITEpe2U9amUuZXhlYyhlKTtyZXR1cm4gZT9uZXcgSmUoZVsyXXx8IiIscnQoZVs0XXx8IiIpLHJ0KGVbNV18fCIiKSxydChlWzddfHwiIikscnQoZVs5XXx8IiIpLHQpOm5ldyBKZSgiIiwiIiwiIiwiIiwiIil9c3RhdGljIGZpbGUoZSl7bGV0IHQ9IiI7dmFyIHI7cmV0dXJuKGU9Tz9lLnJlcGxhY2UoL1xcL2csV2UpOmUpWzBdPT09V2UmJmVbMV09PT1XZSYmKGU9LTE9PT0ocj1lLmluZGV4T2YoV2UsMikpPyh0PWUuc3Vic3RyaW5nKDIpLFdlKToodD1lLnN1YnN0cmluZygyLHIpLGUuc3Vic3RyaW5nKHIpfHxXZSkpLG5ldyBKZSgiZmlsZSIsdCxlLCIiLCIiKX1zdGF0aWMgZnJvbShlKXtlPW5ldyBKZShlLnNjaGVtZSxlLmF1dGhvcml0eSxlLnBhdGgsZS5xdWVyeSxlLmZyYWdtZW50KTtyZXR1cm4gemUoZSwhMCksZX1zdGF0aWMgam9pblBhdGgoZSwuLi50KXtpZighZS5wYXRoKXRocm93IG5ldyBFcnJvcigiW1VyaUVycm9yXTogY2Fubm90IGNhbGwgam9pblBhdGggb24gVVJJIHdpdGhvdXQgcGF0aCIpO2xldCByO3JldHVybiByPU8mJiJmaWxlIj09PWUuc2NoZW1lPyRlLmZpbGUoVGUuam9pbihYZShlLCEwKSwuLi50KSkucGF0aDpCZS5qb2luKGUucGF0aCwuLi50KSxlLndpdGgoe3BhdGg6cn0pfXRvU3RyaW5nKGU9ITEpe3JldHVybiBldCh0aGlzLGUpfXRvSlNPTigpe3JldHVybiB0aGlzfXN0YXRpYyByZXZpdmUoZSl7aWYoZSl7aWYoZSBpbnN0YW5jZW9mICRlKXJldHVybiBlO3tjb25zdCB0PW5ldyBKZShlKTtyZXR1cm4gdC5fZm9ybWF0dGVkPWUuZXh0ZXJuYWwsdC5fZnNQYXRoPWUuX3NlcD09PUdlP2UuZnNQYXRoOm51bGwsdH19cmV0dXJuIGV9fWNvbnN0IEdlPU8/MTp2b2lkIDA7Y2xhc3MgSmUgZXh0ZW5kcyAkZXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5fZm9ybWF0dGVkPW51bGwsdGhpcy5fZnNQYXRoPW51bGx9Z2V0IGZzUGF0aCgpe3JldHVybiB0aGlzLl9mc1BhdGh8fCh0aGlzLl9mc1BhdGg9WGUodGhpcywhMSkpLHRoaXMuX2ZzUGF0aH10b1N0cmluZyhlPSExKXtyZXR1cm4gZT9ldCh0aGlzLCEwKToodGhpcy5fZm9ybWF0dGVkfHwodGhpcy5fZm9ybWF0dGVkPWV0KHRoaXMsITEpKSx0aGlzLl9mb3JtYXR0ZWQpfXRvSlNPTigpe2NvbnN0IGU9eyRtaWQ6MX07cmV0dXJuIHRoaXMuX2ZzUGF0aCYmKGUuZnNQYXRoPXRoaXMuX2ZzUGF0aCxlLl9zZXA9R2UpLHRoaXMuX2Zvcm1hdHRlZCYmKGUuZXh0ZXJuYWw9dGhpcy5fZm9ybWF0dGVkKSx0aGlzLnBhdGgmJihlLnBhdGg9dGhpcy5wYXRoKSx0aGlzLnNjaGVtZSYmKGUuc2NoZW1lPXRoaXMuc2NoZW1lKSx0aGlzLmF1dGhvcml0eSYmKGUuYXV0aG9yaXR5PXRoaXMuYXV0aG9yaXR5KSx0aGlzLnF1ZXJ5JiYoZS5xdWVyeT10aGlzLnF1ZXJ5KSx0aGlzLmZyYWdtZW50JiYoZS5mcmFnbWVudD10aGlzLmZyYWdtZW50KSxlfX1jb25zdCBRZT17WzU4XToiJTNBIiw0NzoiJTJGIiw2MzoiJTNGIiwzNToiJTIzIiw5MToiJTVCIiw5MzoiJTVEIiw2NDoiJTQwIiwzMzoiJTIxIiwzNjoiJTI0IiwzODoiJTI2IiwzOToiJTI3Iiw0MDoiJTI4Iiw0MToiJTI5Iiw0MjoiJTJBIiw0MzoiJTJCIiw0NDoiJTJDIiw1OToiJTNCIiw2MToiJTNEIiwzMjoiJTIwIn07ZnVuY3Rpb24gWWUodCxyKXtsZXQgbj12b2lkIDAsaT0tMTtmb3IobGV0IGU9MDtlPHQubGVuZ3RoO2UrKyl7dmFyIGE9dC5jaGFyQ29kZUF0KGUpOzk3PD1hJiZhPD0xMjJ8fDY1PD1hJiZhPD05MHx8NDg8PWEmJmE8PTU3fHw0NT09PWF8fDQ2PT09YXx8OTU9PT1hfHwxMjY9PT1hfHxyJiY0Nz09PWE/KC0xIT09aSYmKG4rPWVuY29kZVVSSUNvbXBvbmVudCh0LnN1YnN0cmluZyhpLGUpKSxpPS0xKSx2b2lkIDAhPT1uJiYobis9dC5jaGFyQXQoZSkpKToodm9pZCAwPT09biYmKG49dC5zdWJzdHIoMCxlKSksdm9pZCAwIT09KGE9UWVbYV0pPygtMSE9PWkmJihuKz1lbmNvZGVVUklDb21wb25lbnQodC5zdWJzdHJpbmcoaSxlKSksaT0tMSksbis9YSk6LTE9PT1pJiYoaT1lKSl9cmV0dXJuLTEhPT1pJiYobis9ZW5jb2RlVVJJQ29tcG9uZW50KHQuc3Vic3RyaW5nKGkpKSksdm9pZCAwIT09bj9uOnR9ZnVuY3Rpb24gWmUodCl7bGV0IHI9dm9pZCAwO2ZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSsrKXt2YXIgbj10LmNoYXJDb2RlQXQoZSk7MzU9PT1ufHw2Mz09PW4/KHZvaWQgMD09PXImJihyPXQuc3Vic3RyKDAsZSkpLHIrPVFlW25dKTp2b2lkIDAhPT1yJiYocis9dFtlXSl9cmV0dXJuIHZvaWQgMCE9PXI/cjp0fWZ1bmN0aW9uIFhlKGUsdCl7bGV0IHI7cmV0dXJuIHI9ZS5hdXRob3JpdHkmJjE8ZS5wYXRoLmxlbmd0aCYmImZpbGUiPT09ZS5zY2hlbWU/Ii8vIitlLmF1dGhvcml0eStlLnBhdGg6NDc9PT1lLnBhdGguY2hhckNvZGVBdCgwKSYmKDY1PD1lLnBhdGguY2hhckNvZGVBdCgxKSYmZS5wYXRoLmNoYXJDb2RlQXQoMSk8PTkwfHw5Nzw9ZS5wYXRoLmNoYXJDb2RlQXQoMSkmJmUucGF0aC5jaGFyQ29kZUF0KDEpPD0xMjIpJiY1OD09PWUucGF0aC5jaGFyQ29kZUF0KDIpP3Q/ZS5wYXRoLnN1YnN0cigxKTplLnBhdGhbMV0udG9Mb3dlckNhc2UoKStlLnBhdGguc3Vic3RyKDIpOmUucGF0aCxyPU8/ci5yZXBsYWNlKC9cLy9nLCJcXCIpOnJ9ZnVuY3Rpb24gZXQoZSx0KXtjb25zdCByPXQ/WmU6WWU7bGV0IG49IiIse3NjaGVtZTppLGF1dGhvcml0eTphLHBhdGg6byxxdWVyeTpzLGZyYWdtZW50Omx9PWU7aWYoaSYmKG49bitpKyI6IiksIWEmJiJmaWxlIiE9PWl8fChuPShuKz1XZSkrV2UpLGEpe2xldCBlPWEuaW5kZXhPZigiQCIpO2lmKC0xIT09ZSl7Y29uc3QgaD1hLnN1YnN0cigwLGUpO2E9YS5zdWJzdHIoZSsxKSwtMT09PShlPWguaW5kZXhPZigiOiIpKT9uKz1yKGgsITEpOm49KG49bityKGguc3Vic3RyKDAsZSksITEpKyI6IikrcihoLnN1YnN0cihlKzEpLCExKSxuKz0iQCJ9YT1hLnRvTG93ZXJDYXNlKCksLTE9PT0oZT1hLmluZGV4T2YoIjoiKSk/bis9cihhLCExKTpuPShuKz1yKGEuc3Vic3RyKDAsZSksITEpKSthLnN1YnN0cihlKX1yZXR1cm4gbyYmKDM8PW8ubGVuZ3RoJiY0Nz09PW8uY2hhckNvZGVBdCgwKSYmNTg9PT1vLmNoYXJDb2RlQXQoMik/NjU8PShlPW8uY2hhckNvZGVBdCgxKSkmJmU8PTkwJiYobz1gLyR7U3RyaW5nLmZyb21DaGFyQ29kZShlKzMyKX06YCtvLnN1YnN0cigzKSk6Mjw9by5sZW5ndGgmJjU4PT09by5jaGFyQ29kZUF0KDEpJiYoNjU8PShlPW8uY2hhckNvZGVBdCgwKSkmJmU8PTkwJiYobz1TdHJpbmcuZnJvbUNoYXJDb2RlKGUrMzIpKyI6IitvLnN1YnN0cigyKSkpLG4rPXIobywhMCkpLHMmJihuPShuKz0iPyIpK3IocywhMSkpLG49bD8obis9IiMiKSsodD9sOlllKGwsITEpKTpufWNvbnN0IHR0PS8oJVswLTlBLVphLXpdWzAtOUEtWmEtel0pKy9nO2Z1bmN0aW9uIHJ0KGUpe3JldHVybiBlLm1hdGNoKHR0KT9lLnJlcGxhY2UodHQsZT0+ZnVuY3Rpb24gdChyKXt0cnl7cmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChyKX1jYXRjaChlKXtyZXR1cm4gMzxyLmxlbmd0aD9yLnN1YnN0cigwLDMpK3Qoci5zdWJzdHIoMykpOnJ9fShlKSk6ZX1jbGFzcyBudHtjb25zdHJ1Y3RvcihlLHQpe3RoaXMubGluZU51bWJlcj1lLHRoaXMuY29sdW1uPXR9d2l0aChlPXRoaXMubGluZU51bWJlcix0PXRoaXMuY29sdW1uKXtyZXR1cm4gZT09PXRoaXMubGluZU51bWJlciYmdD09PXRoaXMuY29sdW1uP3RoaXM6bmV3IG50KGUsdCl9ZGVsdGEoZT0wLHQ9MCl7cmV0dXJuIHRoaXMud2l0aCh0aGlzLmxpbmVOdW1iZXIrZSx0aGlzLmNvbHVtbit0KX1lcXVhbHMoZSl7cmV0dXJuIG50LmVxdWFscyh0aGlzLGUpfXN0YXRpYyBlcXVhbHMoZSx0KXtyZXR1cm4hZSYmIXR8fCEhZSYmISF0JiZlLmxpbmVOdW1iZXI9PT10LmxpbmVOdW1iZXImJmUuY29sdW1uPT09dC5jb2x1bW59aXNCZWZvcmUoZSl7cmV0dXJuIG50LmlzQmVmb3JlKHRoaXMsZSl9c3RhdGljIGlzQmVmb3JlKGUsdCl7cmV0dXJuIGUubGluZU51bWJlcjx0LmxpbmVOdW1iZXJ8fCEodC5saW5lTnVtYmVyPGUubGluZU51bWJlcikmJmUuY29sdW1uPHQuY29sdW1ufWlzQmVmb3JlT3JFcXVhbChlKXtyZXR1cm4gbnQuaXNCZWZvcmVPckVxdWFsKHRoaXMsZSl9c3RhdGljIGlzQmVmb3JlT3JFcXVhbChlLHQpe3JldHVybiBlLmxpbmVOdW1iZXI8dC5saW5lTnVtYmVyfHwhKHQubGluZU51bWJlcjxlLmxpbmVOdW1iZXIpJiZlLmNvbHVtbjw9dC5jb2x1bW59c3RhdGljIGNvbXBhcmUoZSx0KXt2YXIgcj0wfGUubGluZU51bWJlcixuPTB8dC5saW5lTnVtYmVyO3JldHVybiByIT1uP3ItbjooMHxlLmNvbHVtbiktKDB8dC5jb2x1bW4pfWNsb25lKCl7cmV0dXJuIG5ldyBudCh0aGlzLmxpbmVOdW1iZXIsdGhpcy5jb2x1bW4pfXRvU3RyaW5nKCl7cmV0dXJuIigiK3RoaXMubGluZU51bWJlcisiLCIrdGhpcy5jb2x1bW4rIikifXN0YXRpYyBsaWZ0KGUpe3JldHVybiBuZXcgbnQoZS5saW5lTnVtYmVyLGUuY29sdW1uKX1zdGF0aWMgaXNJUG9zaXRpb24oZSl7cmV0dXJuIGUmJiJudW1iZXIiPT10eXBlb2YgZS5saW5lTnVtYmVyJiYibnVtYmVyIj09dHlwZW9mIGUuY29sdW1ufX1jbGFzcyBwe2NvbnN0cnVjdG9yKGUsdCxyLG4pe3I8ZXx8ZT09PXImJm48dD8odGhpcy5zdGFydExpbmVOdW1iZXI9cix0aGlzLnN0YXJ0Q29sdW1uPW4sdGhpcy5lbmRMaW5lTnVtYmVyPWUsdGhpcy5lbmRDb2x1bW49dCk6KHRoaXMuc3RhcnRMaW5lTnVtYmVyPWUsdGhpcy5zdGFydENvbHVtbj10LHRoaXMuZW5kTGluZU51bWJlcj1yLHRoaXMuZW5kQ29sdW1uPW4pfWlzRW1wdHkoKXtyZXR1cm4gcC5pc0VtcHR5KHRoaXMpfXN0YXRpYyBpc0VtcHR5KGUpe3JldHVybiBlLnN0YXJ0TGluZU51bWJlcj09PWUuZW5kTGluZU51bWJlciYmZS5zdGFydENvbHVtbj09PWUuZW5kQ29sdW1ufWNvbnRhaW5zUG9zaXRpb24oZSl7cmV0dXJuIHAuY29udGFpbnNQb3NpdGlvbih0aGlzLGUpfXN0YXRpYyBjb250YWluc1Bvc2l0aW9uKGUsdCl7cmV0dXJuISh0LmxpbmVOdW1iZXI8ZS5zdGFydExpbmVOdW1iZXJ8fHQubGluZU51bWJlcj5lLmVuZExpbmVOdW1iZXIpJiYoISh0LmxpbmVOdW1iZXI9PT1lLnN0YXJ0TGluZU51bWJlciYmdC5jb2x1bW48ZS5zdGFydENvbHVtbikmJiEodC5saW5lTnVtYmVyPT09ZS5lbmRMaW5lTnVtYmVyJiZ0LmNvbHVtbj5lLmVuZENvbHVtbikpfXN0YXRpYyBzdHJpY3RDb250YWluc1Bvc2l0aW9uKGUsdCl7cmV0dXJuISh0LmxpbmVOdW1iZXI8ZS5zdGFydExpbmVOdW1iZXJ8fHQubGluZU51bWJlcj5lLmVuZExpbmVOdW1iZXIpJiYoISh0LmxpbmVOdW1iZXI9PT1lLnN0YXJ0TGluZU51bWJlciYmdC5jb2x1bW48PWUuc3RhcnRDb2x1bW4pJiYhKHQubGluZU51bWJlcj09PWUuZW5kTGluZU51bWJlciYmdC5jb2x1bW4+PWUuZW5kQ29sdW1uKSl9Y29udGFpbnNSYW5nZShlKXtyZXR1cm4gcC5jb250YWluc1JhbmdlKHRoaXMsZSl9c3RhdGljIGNvbnRhaW5zUmFuZ2UoZSx0KXtyZXR1cm4hKHQuc3RhcnRMaW5lTnVtYmVyPGUuc3RhcnRMaW5lTnVtYmVyfHx0LmVuZExpbmVOdW1iZXI8ZS5zdGFydExpbmVOdW1iZXIpJiYoISh0LnN0YXJ0TGluZU51bWJlcj5lLmVuZExpbmVOdW1iZXJ8fHQuZW5kTGluZU51bWJlcj5lLmVuZExpbmVOdW1iZXIpJiYoISh0LnN0YXJ0TGluZU51bWJlcj09PWUuc3RhcnRMaW5lTnVtYmVyJiZ0LnN0YXJ0Q29sdW1uPGUuc3RhcnRDb2x1bW4pJiYhKHQuZW5kTGluZU51bWJlcj09PWUuZW5kTGluZU51bWJlciYmdC5lbmRDb2x1bW4+ZS5lbmRDb2x1bW4pKSl9c3RyaWN0Q29udGFpbnNSYW5nZShlKXtyZXR1cm4gcC5zdHJpY3RDb250YWluc1JhbmdlKHRoaXMsZSl9c3RhdGljIHN0cmljdENvbnRhaW5zUmFuZ2UoZSx0KXtyZXR1cm4hKHQuc3RhcnRMaW5lTnVtYmVyPGUuc3RhcnRMaW5lTnVtYmVyfHx0LmVuZExpbmVOdW1iZXI8ZS5zdGFydExpbmVOdW1iZXIpJiYoISh0LnN0YXJ0TGluZU51bWJlcj5lLmVuZExpbmVOdW1iZXJ8fHQuZW5kTGluZU51bWJlcj5lLmVuZExpbmVOdW1iZXIpJiYoISh0LnN0YXJ0TGluZU51bWJlcj09PWUuc3RhcnRMaW5lTnVtYmVyJiZ0LnN0YXJ0Q29sdW1uPD1lLnN0YXJ0Q29sdW1uKSYmISh0LmVuZExpbmVOdW1iZXI9PT1lLmVuZExpbmVOdW1iZXImJnQuZW5kQ29sdW1uPj1lLmVuZENvbHVtbikpKX1wbHVzUmFuZ2UoZSl7cmV0dXJuIHAucGx1c1JhbmdlKHRoaXMsZSl9c3RhdGljIHBsdXNSYW5nZShlLHQpe2xldCByLG4saSxhO3JldHVybiBuPXQuc3RhcnRMaW5lTnVtYmVyPGUuc3RhcnRMaW5lTnVtYmVyPyhyPXQuc3RhcnRMaW5lTnVtYmVyLHQuc3RhcnRDb2x1bW4pOnQuc3RhcnRMaW5lTnVtYmVyPT09ZS5zdGFydExpbmVOdW1iZXI/KHI9dC5zdGFydExpbmVOdW1iZXIsTWF0aC5taW4odC5zdGFydENvbHVtbixlLnN0YXJ0Q29sdW1uKSk6KHI9ZS5zdGFydExpbmVOdW1iZXIsZS5zdGFydENvbHVtbiksYT10LmVuZExpbmVOdW1iZXI+ZS5lbmRMaW5lTnVtYmVyPyhpPXQuZW5kTGluZU51bWJlcix0LmVuZENvbHVtbik6dC5lbmRMaW5lTnVtYmVyPT09ZS5lbmRMaW5lTnVtYmVyPyhpPXQuZW5kTGluZU51bWJlcixNYXRoLm1heCh0LmVuZENvbHVtbixlLmVuZENvbHVtbikpOihpPWUuZW5kTGluZU51bWJlcixlLmVuZENvbHVtbiksbmV3IHAocixuLGksYSl9aW50ZXJzZWN0UmFuZ2VzKGUpe3JldHVybiBwLmludGVyc2VjdFJhbmdlcyh0aGlzLGUpfXN0YXRpYyBpbnRlcnNlY3RSYW5nZXMoZSx0KXtsZXQgcj1lLnN0YXJ0TGluZU51bWJlcixuPWUuc3RhcnRDb2x1bW4saT1lLmVuZExpbmVOdW1iZXIsYT1lLmVuZENvbHVtbjt2YXIgZT10LnN0YXJ0TGluZU51bWJlcixvPXQuc3RhcnRDb2x1bW4scz10LmVuZExpbmVOdW1iZXIsdD10LmVuZENvbHVtbjtyZXR1cm4gcjxlPyhyPWUsbj1vKTpyPT09ZSYmKG49TWF0aC5tYXgobixvKSksaT5zPyhpPXMsYT10KTppPT09cyYmKGE9TWF0aC5taW4oYSx0KSkscj5pfHxyPT09aSYmbj5hP251bGw6bmV3IHAocixuLGksYSl9ZXF1YWxzUmFuZ2UoZSl7cmV0dXJuIHAuZXF1YWxzUmFuZ2UodGhpcyxlKX1zdGF0aWMgZXF1YWxzUmFuZ2UoZSx0KXtyZXR1cm4hIWUmJiEhdCYmZS5zdGFydExpbmVOdW1iZXI9PT10LnN0YXJ0TGluZU51bWJlciYmZS5zdGFydENvbHVtbj09PXQuc3RhcnRDb2x1bW4mJmUuZW5kTGluZU51bWJlcj09PXQuZW5kTGluZU51bWJlciYmZS5lbmRDb2x1bW49PT10LmVuZENvbHVtbn1nZXRFbmRQb3NpdGlvbigpe3JldHVybiBwLmdldEVuZFBvc2l0aW9uKHRoaXMpfXN0YXRpYyBnZXRFbmRQb3NpdGlvbihlKXtyZXR1cm4gbmV3IG50KGUuZW5kTGluZU51bWJlcixlLmVuZENvbHVtbil9Z2V0U3RhcnRQb3NpdGlvbigpe3JldHVybiBwLmdldFN0YXJ0UG9zaXRpb24odGhpcyl9c3RhdGljIGdldFN0YXJ0UG9zaXRpb24oZSl7cmV0dXJuIG5ldyBudChlLnN0YXJ0TGluZU51bWJlcixlLnN0YXJ0Q29sdW1uKX10b1N0cmluZygpe3JldHVybiJbIit0aGlzLnN0YXJ0TGluZU51bWJlcisiLCIrdGhpcy5zdGFydENvbHVtbisiIC0+ICIrdGhpcy5lbmRMaW5lTnVtYmVyKyIsIit0aGlzLmVuZENvbHVtbisiXSJ9c2V0RW5kUG9zaXRpb24oZSx0KXtyZXR1cm4gbmV3IHAodGhpcy5zdGFydExpbmVOdW1iZXIsdGhpcy5zdGFydENvbHVtbixlLHQpfXNldFN0YXJ0UG9zaXRpb24oZSx0KXtyZXR1cm4gbmV3IHAoZSx0LHRoaXMuZW5kTGluZU51bWJlcix0aGlzLmVuZENvbHVtbil9Y29sbGFwc2VUb1N0YXJ0KCl7cmV0dXJuIHAuY29sbGFwc2VUb1N0YXJ0KHRoaXMpfXN0YXRpYyBjb2xsYXBzZVRvU3RhcnQoZSl7cmV0dXJuIG5ldyBwKGUuc3RhcnRMaW5lTnVtYmVyLGUuc3RhcnRDb2x1bW4sZS5zdGFydExpbmVOdW1iZXIsZS5zdGFydENvbHVtbil9c3RhdGljIGZyb21Qb3NpdGlvbnMoZSx0PWUpe3JldHVybiBuZXcgcChlLmxpbmVOdW1iZXIsZS5jb2x1bW4sdC5saW5lTnVtYmVyLHQuY29sdW1uKX1zdGF0aWMgbGlmdChlKXtyZXR1cm4gZT9uZXcgcChlLnN0YXJ0TGluZU51bWJlcixlLnN0YXJ0Q29sdW1uLGUuZW5kTGluZU51bWJlcixlLmVuZENvbHVtbik6bnVsbH1zdGF0aWMgaXNJUmFuZ2UoZSl7cmV0dXJuIGUmJiJudW1iZXIiPT10eXBlb2YgZS5zdGFydExpbmVOdW1iZXImJiJudW1iZXIiPT10eXBlb2YgZS5zdGFydENvbHVtbiYmIm51bWJlciI9PXR5cGVvZiBlLmVuZExpbmVOdW1iZXImJiJudW1iZXIiPT10eXBlb2YgZS5lbmRDb2x1bW59c3RhdGljIGFyZUludGVyc2VjdGluZ09yVG91Y2hpbmcoZSx0KXtyZXR1cm4hKGUuZW5kTGluZU51bWJlcjx0LnN0YXJ0TGluZU51bWJlcnx8ZS5lbmRMaW5lTnVtYmVyPT09dC5zdGFydExpbmVOdW1iZXImJmUuZW5kQ29sdW1uPHQuc3RhcnRDb2x1bW4pJiYhKHQuZW5kTGluZU51bWJlcjxlLnN0YXJ0TGluZU51bWJlcnx8dC5lbmRMaW5lTnVtYmVyPT09ZS5zdGFydExpbmVOdW1iZXImJnQuZW5kQ29sdW1uPGUuc3RhcnRDb2x1bW4pfXN0YXRpYyBhcmVJbnRlcnNlY3RpbmcoZSx0KXtyZXR1cm4hKGUuZW5kTGluZU51bWJlcjx0LnN0YXJ0TGluZU51bWJlcnx8ZS5lbmRMaW5lTnVtYmVyPT09dC5zdGFydExpbmVOdW1iZXImJmUuZW5kQ29sdW1uPD10LnN0YXJ0Q29sdW1uKSYmISh0LmVuZExpbmVOdW1iZXI8ZS5zdGFydExpbmVOdW1iZXJ8fHQuZW5kTGluZU51bWJlcj09PWUuc3RhcnRMaW5lTnVtYmVyJiZ0LmVuZENvbHVtbjw9ZS5zdGFydENvbHVtbil9c3RhdGljIGNvbXBhcmVSYW5nZXNVc2luZ1N0YXJ0cyhlLHQpe3ZhciByLG4saSxhLG8scztyZXR1cm4gZSYmdD8ocj0wfGUuc3RhcnRMaW5lTnVtYmVyKT09KG49MHx0LnN0YXJ0TGluZU51bWJlcik/KGk9MHxlLnN0YXJ0Q29sdW1uKT09KGE9MHx0LnN0YXJ0Q29sdW1uKT8obz0wfGUuZW5kTGluZU51bWJlcikhPShzPTB8dC5lbmRMaW5lTnVtYmVyKT9vLXM6KDB8ZS5lbmRDb2x1bW4pLSgwfHQuZW5kQ29sdW1uKTppLWE6ci1uOihlPzE6MCktKHQ/MTowKX1zdGF0aWMgY29tcGFyZVJhbmdlc1VzaW5nRW5kcyhlLHQpe3JldHVybiBlLmVuZExpbmVOdW1iZXI9PT10LmVuZExpbmVOdW1iZXI/ZS5lbmRDb2x1bW49PT10LmVuZENvbHVtbj9lLnN0YXJ0TGluZU51bWJlcj09PXQuc3RhcnRMaW5lTnVtYmVyP2Uuc3RhcnRDb2x1bW4tdC5zdGFydENvbHVtbjplLnN0YXJ0TGluZU51bWJlci10LnN0YXJ0TGluZU51bWJlcjplLmVuZENvbHVtbi10LmVuZENvbHVtbjplLmVuZExpbmVOdW1iZXItdC5lbmRMaW5lTnVtYmVyfXN0YXRpYyBzcGFuc011bHRpcGxlTGluZXMoZSl7cmV0dXJuIGUuZW5kTGluZU51bWJlcj5lLnN0YXJ0TGluZU51bWJlcn10b0pTT04oKXtyZXR1cm4gdGhpc319ZnVuY3Rpb24gaXQoZSx0LHIsbil7Y29uc3QgaT1uZXcga2UoZSx0LHIpO3JldHVybiBpLkNvbXB1dGVEaWZmKG4pfWNsYXNzIGF0e2NvbnN0cnVjdG9yKHIpe2NvbnN0IG49W10saT1bXTtmb3IobGV0IGU9MCx0PXIubGVuZ3RoO2U8dDtlKyspbltlXT1jdChyW2VdLDEpLGlbZV09dXQocltlXSwxKTt0aGlzLmxpbmVzPXIsdGhpcy5fc3RhcnRDb2x1bW5zPW4sdGhpcy5fZW5kQ29sdW1ucz1pfWdldEVsZW1lbnRzKCl7Y29uc3Qgcj1bXTtmb3IobGV0IGU9MCx0PXRoaXMubGluZXMubGVuZ3RoO2U8dDtlKyspcltlXT10aGlzLmxpbmVzW2VdLnN1YnN0cmluZyh0aGlzLl9zdGFydENvbHVtbnNbZV0tMSx0aGlzLl9lbmRDb2x1bW5zW2VdLTEpO3JldHVybiByfWdldFN0cmljdEVsZW1lbnQoZSl7cmV0dXJuIHRoaXMubGluZXNbZV19Z2V0U3RhcnRMaW5lTnVtYmVyKGUpe3JldHVybiBlKzF9Z2V0RW5kTGluZU51bWJlcihlKXtyZXR1cm4gZSsxfWNyZWF0ZUNoYXJTZXF1ZW5jZShlLHIsbil7Y29uc3QgaT1bXSxhPVtdLG89W107bGV0IHM9MDtmb3IobGV0IHQ9cjt0PD1uO3QrKyl7Y29uc3QgYz10aGlzLmxpbmVzW3RdO3ZhciBsPWU/dGhpcy5fc3RhcnRDb2x1bW5zW3RdOjEsaD1lP3RoaXMuX2VuZENvbHVtbnNbdF06Yy5sZW5ndGgrMTtmb3IobGV0IGU9bDtlPGg7ZSsrKWlbc109Yy5jaGFyQ29kZUF0KGUtMSksYVtzXT10KzEsb1tzXT1lLHMrK31yZXR1cm4gbmV3IG90KGksYSxvKX19Y2xhc3Mgb3R7Y29uc3RydWN0b3IoZSx0LHIpe3RoaXMuX2NoYXJDb2Rlcz1lLHRoaXMuX2xpbmVOdW1iZXJzPXQsdGhpcy5fY29sdW1ucz1yfWdldEVsZW1lbnRzKCl7cmV0dXJuIHRoaXMuX2NoYXJDb2Rlc31nZXRTdGFydExpbmVOdW1iZXIoZSl7cmV0dXJuIHRoaXMuX2xpbmVOdW1iZXJzW2VdfWdldFN0YXJ0Q29sdW1uKGUpe3JldHVybiB0aGlzLl9jb2x1bW5zW2VdfWdldEVuZExpbmVOdW1iZXIoZSl7cmV0dXJuIHRoaXMuX2xpbmVOdW1iZXJzW2VdfWdldEVuZENvbHVtbihlKXtyZXR1cm4gdGhpcy5fY29sdW1uc1tlXSsxfX1jbGFzcyBzdHtjb25zdHJ1Y3RvcihlLHQscixuLGksYSxvLHMpe3RoaXMub3JpZ2luYWxTdGFydExpbmVOdW1iZXI9ZSx0aGlzLm9yaWdpbmFsU3RhcnRDb2x1bW49dCx0aGlzLm9yaWdpbmFsRW5kTGluZU51bWJlcj1yLHRoaXMub3JpZ2luYWxFbmRDb2x1bW49bix0aGlzLm1vZGlmaWVkU3RhcnRMaW5lTnVtYmVyPWksdGhpcy5tb2RpZmllZFN0YXJ0Q29sdW1uPWEsdGhpcy5tb2RpZmllZEVuZExpbmVOdW1iZXI9byx0aGlzLm1vZGlmaWVkRW5kQ29sdW1uPXN9c3RhdGljIGNyZWF0ZUZyb21EaWZmQ2hhbmdlKGUsdCxyKXtsZXQgbixpLGEsbyxzLGwsaCxjO3JldHVybiBvPTA9PT1lLm9yaWdpbmFsTGVuZ3RoPyhuPTAsaT0wLGE9MCk6KG49dC5nZXRTdGFydExpbmVOdW1iZXIoZS5vcmlnaW5hbFN0YXJ0KSxpPXQuZ2V0U3RhcnRDb2x1bW4oZS5vcmlnaW5hbFN0YXJ0KSxhPXQuZ2V0RW5kTGluZU51bWJlcihlLm9yaWdpbmFsU3RhcnQrZS5vcmlnaW5hbExlbmd0aC0xKSx0LmdldEVuZENvbHVtbihlLm9yaWdpbmFsU3RhcnQrZS5vcmlnaW5hbExlbmd0aC0xKSksYz0wPT09ZS5tb2RpZmllZExlbmd0aD8ocz0wLGw9MCxoPTApOihzPXIuZ2V0U3RhcnRMaW5lTnVtYmVyKGUubW9kaWZpZWRTdGFydCksbD1yLmdldFN0YXJ0Q29sdW1uKGUubW9kaWZpZWRTdGFydCksaD1yLmdldEVuZExpbmVOdW1iZXIoZS5tb2RpZmllZFN0YXJ0K2UubW9kaWZpZWRMZW5ndGgtMSksci5nZXRFbmRDb2x1bW4oZS5tb2RpZmllZFN0YXJ0K2UubW9kaWZpZWRMZW5ndGgtMSkpLG5ldyBzdChuLGksYSxvLHMsbCxoLGMpfX1jbGFzcyBsdHtjb25zdHJ1Y3RvcihlLHQscixuLGkpe3RoaXMub3JpZ2luYWxTdGFydExpbmVOdW1iZXI9ZSx0aGlzLm9yaWdpbmFsRW5kTGluZU51bWJlcj10LHRoaXMubW9kaWZpZWRTdGFydExpbmVOdW1iZXI9cix0aGlzLm1vZGlmaWVkRW5kTGluZU51bWJlcj1uLHRoaXMuY2hhckNoYW5nZXM9aX1zdGF0aWMgY3JlYXRlRnJvbURpZmZSZXN1bHQoZSx0LG4saSxhLGMsdSl7bGV0IHIsbyxzLGwsaD12b2lkIDA7aWYobz0wPT09dC5vcmlnaW5hbExlbmd0aD8ocj1uLmdldFN0YXJ0TGluZU51bWJlcih0Lm9yaWdpbmFsU3RhcnQpLTEsMCk6KHI9bi5nZXRTdGFydExpbmVOdW1iZXIodC5vcmlnaW5hbFN0YXJ0KSxuLmdldEVuZExpbmVOdW1iZXIodC5vcmlnaW5hbFN0YXJ0K3Qub3JpZ2luYWxMZW5ndGgtMSkpLGw9MD09PXQubW9kaWZpZWRMZW5ndGg/KHM9aS5nZXRTdGFydExpbmVOdW1iZXIodC5tb2RpZmllZFN0YXJ0KS0xLDApOihzPWkuZ2V0U3RhcnRMaW5lTnVtYmVyKHQubW9kaWZpZWRTdGFydCksaS5nZXRFbmRMaW5lTnVtYmVyKHQubW9kaWZpZWRTdGFydCt0Lm1vZGlmaWVkTGVuZ3RoLTEpKSxjJiYwPHQub3JpZ2luYWxMZW5ndGgmJnQub3JpZ2luYWxMZW5ndGg8MjAmJjA8dC5tb2RpZmllZExlbmd0aCYmdC5tb2RpZmllZExlbmd0aDwyMCYmYSgpKXt2YXIgZD1uLmNyZWF0ZUNoYXJTZXF1ZW5jZShlLHQub3JpZ2luYWxTdGFydCx0Lm9yaWdpbmFsU3RhcnQrdC5vcmlnaW5hbExlbmd0aC0xKSxmPWkuY3JlYXRlQ2hhclNlcXVlbmNlKGUsdC5tb2RpZmllZFN0YXJ0LHQubW9kaWZpZWRTdGFydCt0Lm1vZGlmaWVkTGVuZ3RoLTEpO2xldCByPWl0KGQsZixhLCEwKS5jaGFuZ2VzO3UmJihyPWZ1bmN0aW9uKHIpe2lmKHIubGVuZ3RoPD0xKXJldHVybiByO2NvbnN0IG49W3JbMF1dO2xldCBpPW5bMF07Zm9yKGxldCBlPTEsdD1yLmxlbmd0aDtlPHQ7ZSsrKXt2YXIgYT1yW2VdLG89YS5vcmlnaW5hbFN0YXJ0LShpLm9yaWdpbmFsU3RhcnQraS5vcmlnaW5hbExlbmd0aCkscz1hLm1vZGlmaWVkU3RhcnQtKGkubW9kaWZpZWRTdGFydCtpLm1vZGlmaWVkTGVuZ3RoKTtNYXRoLm1pbihvLHMpPDM/KGkub3JpZ2luYWxMZW5ndGg9YS5vcmlnaW5hbFN0YXJ0K2Eub3JpZ2luYWxMZW5ndGgtaS5vcmlnaW5hbFN0YXJ0LGkubW9kaWZpZWRMZW5ndGg9YS5tb2RpZmllZFN0YXJ0K2EubW9kaWZpZWRMZW5ndGgtaS5tb2RpZmllZFN0YXJ0KToobi5wdXNoKGEpLGk9YSl9cmV0dXJuIG59KHIpKSxoPVtdO2ZvcihsZXQgZT0wLHQ9ci5sZW5ndGg7ZTx0O2UrKyloLnB1c2goc3QuY3JlYXRlRnJvbURpZmZDaGFuZ2UocltlXSxkLGYpKX1yZXR1cm4gbmV3IGx0KHIsbyxzLGwsaCl9fWNsYXNzIGh0e2NvbnN0cnVjdG9yKGUsdCxyKXt0aGlzLnNob3VsZENvbXB1dGVDaGFyQ2hhbmdlcz1yLnNob3VsZENvbXB1dGVDaGFyQ2hhbmdlcyx0aGlzLnNob3VsZFBvc3RQcm9jZXNzQ2hhckNoYW5nZXM9ci5zaG91bGRQb3N0UHJvY2Vzc0NoYXJDaGFuZ2VzLHRoaXMuc2hvdWxkSWdub3JlVHJpbVdoaXRlc3BhY2U9ci5zaG91bGRJZ25vcmVUcmltV2hpdGVzcGFjZSx0aGlzLnNob3VsZE1ha2VQcmV0dHlEaWZmPXIuc2hvdWxkTWFrZVByZXR0eURpZmYsdGhpcy5vcmlnaW5hbExpbmVzPWUsdGhpcy5tb2RpZmllZExpbmVzPXQsdGhpcy5vcmlnaW5hbD1uZXcgYXQoZSksdGhpcy5tb2RpZmllZD1uZXcgYXQodCksdGhpcy5jb250aW51ZUxpbmVEaWZmPWR0KHIubWF4Q29tcHV0YXRpb25UaW1lKSx0aGlzLmNvbnRpbnVlQ2hhckRpZmY9ZHQoMD09PXIubWF4Q29tcHV0YXRpb25UaW1lPzA6TWF0aC5taW4oci5tYXhDb21wdXRhdGlvblRpbWUsNWUzKSl9Y29tcHV0ZURpZmYoKXtpZigxPT09dGhpcy5vcmlnaW5hbC5saW5lcy5sZW5ndGgmJjA9PT10aGlzLm9yaWdpbmFsLmxpbmVzWzBdLmxlbmd0aClyZXR1cm4gMT09PXRoaXMubW9kaWZpZWQubGluZXMubGVuZ3RoJiYwPT09dGhpcy5tb2RpZmllZC5saW5lc1swXS5sZW5ndGg/e3F1aXRFYXJseTohMSxjaGFuZ2VzOltdfTp7cXVpdEVhcmx5OiExLGNoYW5nZXM6W3tvcmlnaW5hbFN0YXJ0TGluZU51bWJlcjoxLG9yaWdpbmFsRW5kTGluZU51bWJlcjoxLG1vZGlmaWVkU3RhcnRMaW5lTnVtYmVyOjEsbW9kaWZpZWRFbmRMaW5lTnVtYmVyOnRoaXMubW9kaWZpZWQubGluZXMubGVuZ3RoLGNoYXJDaGFuZ2VzOlt7bW9kaWZpZWRFbmRDb2x1bW46MCxtb2RpZmllZEVuZExpbmVOdW1iZXI6MCxtb2RpZmllZFN0YXJ0Q29sdW1uOjAsbW9kaWZpZWRTdGFydExpbmVOdW1iZXI6MCxvcmlnaW5hbEVuZENvbHVtbjowLG9yaWdpbmFsRW5kTGluZU51bWJlcjowLG9yaWdpbmFsU3RhcnRDb2x1bW46MCxvcmlnaW5hbFN0YXJ0TGluZU51bWJlcjowfV19XX07aWYoMT09PXRoaXMubW9kaWZpZWQubGluZXMubGVuZ3RoJiYwPT09dGhpcy5tb2RpZmllZC5saW5lc1swXS5sZW5ndGgpcmV0dXJue3F1aXRFYXJseTohMSxjaGFuZ2VzOlt7b3JpZ2luYWxTdGFydExpbmVOdW1iZXI6MSxvcmlnaW5hbEVuZExpbmVOdW1iZXI6dGhpcy5vcmlnaW5hbC5saW5lcy5sZW5ndGgsbW9kaWZpZWRTdGFydExpbmVOdW1iZXI6MSxtb2RpZmllZEVuZExpbmVOdW1iZXI6MSxjaGFyQ2hhbmdlczpbe21vZGlmaWVkRW5kQ29sdW1uOjAsbW9kaWZpZWRFbmRMaW5lTnVtYmVyOjAsbW9kaWZpZWRTdGFydENvbHVtbjowLG1vZGlmaWVkU3RhcnRMaW5lTnVtYmVyOjAsb3JpZ2luYWxFbmRDb2x1bW46MCxvcmlnaW5hbEVuZExpbmVOdW1iZXI6MCxvcmlnaW5hbFN0YXJ0Q29sdW1uOjAsb3JpZ2luYWxTdGFydExpbmVOdW1iZXI6MH1dfV19O3ZhciBlPWl0KHRoaXMub3JpZ2luYWwsdGhpcy5tb2RpZmllZCx0aGlzLmNvbnRpbnVlTGluZURpZmYsdGhpcy5zaG91bGRNYWtlUHJldHR5RGlmZikscj1lLmNoYW5nZXMsZT1lLnF1aXRFYXJseTtpZih0aGlzLnNob3VsZElnbm9yZVRyaW1XaGl0ZXNwYWNlKXtjb25zdCBmPVtdO2ZvcihsZXQgZT0wLHQ9ci5sZW5ndGg7ZTx0O2UrKylmLnB1c2gobHQuY3JlYXRlRnJvbURpZmZSZXN1bHQodGhpcy5zaG91bGRJZ25vcmVUcmltV2hpdGVzcGFjZSxyW2VdLHRoaXMub3JpZ2luYWwsdGhpcy5tb2RpZmllZCx0aGlzLmNvbnRpbnVlQ2hhckRpZmYsdGhpcy5zaG91bGRDb21wdXRlQ2hhckNoYW5nZXMsdGhpcy5zaG91bGRQb3N0UHJvY2Vzc0NoYXJDaGFuZ2VzKSk7cmV0dXJue3F1aXRFYXJseTplLGNoYW5nZXM6Zn19Y29uc3Qgbj1bXTtsZXQgaT0wLGE9MDtmb3IobGV0IGU9LTEsdD1yLmxlbmd0aDtlPHQ7ZSsrKXtmb3IodmFyIG89ZSsxPHQ/cltlKzFdOm51bGwsdT1vP28ub3JpZ2luYWxTdGFydDp0aGlzLm9yaWdpbmFsTGluZXMubGVuZ3RoLGQ9bz9vLm1vZGlmaWVkU3RhcnQ6dGhpcy5tb2RpZmllZExpbmVzLmxlbmd0aDtpPHUmJmE8ZDspe2NvbnN0IGg9dGhpcy5vcmlnaW5hbExpbmVzW2ldLGM9dGhpcy5tb2RpZmllZExpbmVzW2FdO2lmKGghPT1jKXt7bGV0IGU9Y3QoaCwxKSx0PWN0KGMsMSk7Zm9yKDsxPGUmJjE8dDspe2lmKGguY2hhckNvZGVBdChlLTIpIT09Yy5jaGFyQ29kZUF0KHQtMikpYnJlYWs7ZS0tLHQtLX0oMTxlfHwxPHQpJiZ0aGlzLl9wdXNoVHJpbVdoaXRlc3BhY2VDaGFyQ2hhbmdlKG4saSsxLDEsZSxhKzEsMSx0KX17bGV0IGU9dXQoaCwxKSx0PXV0KGMsMSk7Zm9yKHZhciBzPWgubGVuZ3RoKzEsbD1jLmxlbmd0aCsxO2U8cyYmdDxsOyl7aWYoaC5jaGFyQ29kZUF0KGUtMSkhPT1oLmNoYXJDb2RlQXQodC0xKSlicmVhaztlKyssdCsrfShlPHN8fHQ8bCkmJnRoaXMuX3B1c2hUcmltV2hpdGVzcGFjZUNoYXJDaGFuZ2UobixpKzEsZSxzLGErMSx0LGwpfX1pKyssYSsrfW8mJihuLnB1c2gobHQuY3JlYXRlRnJvbURpZmZSZXN1bHQodGhpcy5zaG91bGRJZ25vcmVUcmltV2hpdGVzcGFjZSxvLHRoaXMub3JpZ2luYWwsdGhpcy5tb2RpZmllZCx0aGlzLmNvbnRpbnVlQ2hhckRpZmYsdGhpcy5zaG91bGRDb21wdXRlQ2hhckNoYW5nZXMsdGhpcy5zaG91bGRQb3N0UHJvY2Vzc0NoYXJDaGFuZ2VzKSksaSs9by5vcmlnaW5hbExlbmd0aCxhKz1vLm1vZGlmaWVkTGVuZ3RoKX1yZXR1cm57cXVpdEVhcmx5OmUsY2hhbmdlczpufX1fcHVzaFRyaW1XaGl0ZXNwYWNlQ2hhckNoYW5nZSh0LHIsbixpLGEsbyxzKXtpZighdGhpcy5fbWVyZ2VUcmltV2hpdGVzcGFjZUNoYXJDaGFuZ2UodCxyLG4saSxhLG8scykpe2xldCBlPXZvaWQgMDt0aGlzLnNob3VsZENvbXB1dGVDaGFyQ2hhbmdlcyYmKGU9W25ldyBzdChyLG4scixpLGEsbyxhLHMpXSksdC5wdXNoKG5ldyBsdChyLHIsYSxhLGUpKX19X21lcmdlVHJpbVdoaXRlc3BhY2VDaGFyQ2hhbmdlKGUsdCxyLG4saSxhLG8pe3ZhciBzPWUubGVuZ3RoO2lmKDA9PT1zKXJldHVybiExO2NvbnN0IGw9ZVtzLTFdO3JldHVybiAwIT09bC5vcmlnaW5hbEVuZExpbmVOdW1iZXImJjAhPT1sLm1vZGlmaWVkRW5kTGluZU51bWJlciYmKGwub3JpZ2luYWxFbmRMaW5lTnVtYmVyKzE9PT10JiZsLm1vZGlmaWVkRW5kTGluZU51bWJlcisxPT09aSYmKGwub3JpZ2luYWxFbmRMaW5lTnVtYmVyPXQsbC5tb2RpZmllZEVuZExpbmVOdW1iZXI9aSx0aGlzLnNob3VsZENvbXB1dGVDaGFyQ2hhbmdlcyYmbC5jaGFyQ2hhbmdlcyYmbC5jaGFyQ2hhbmdlcy5wdXNoKG5ldyBzdCh0LHIsdCxuLGksYSxpLG8pKSwhMCkpfX1mdW5jdGlvbiBjdChlLHQpe2U9ZnVuY3Rpb24ocil7Zm9yKGxldCBlPTAsdD1yLmxlbmd0aDtlPHQ7ZSsrKXt2YXIgbj1yLmNoYXJDb2RlQXQoZSk7aWYoMzIhPT1uJiY5IT09bilyZXR1cm4gZX1yZXR1cm4tMX0oZSk7cmV0dXJuLTE9PT1lP3Q6ZSsxfWZ1bmN0aW9uIHV0KGUsdCl7ZT1mdW5jdGlvbih0LHI9dC5sZW5ndGgtMSl7Zm9yKGxldCBlPXI7MDw9ZTtlLS0pe3ZhciBuPXQuY2hhckNvZGVBdChlKTtpZigzMiE9PW4mJjkhPT1uKXJldHVybiBlfXJldHVybi0xfShlKTtyZXR1cm4tMT09PWU/dDplKzJ9ZnVuY3Rpb24gZHQoZSl7aWYoMD09PWUpcmV0dXJuKCk9PiEwO2NvbnN0IHQ9RGF0ZS5ub3coKTtyZXR1cm4oKT0+RGF0ZS5ub3coKS10PGV9ZnVuY3Rpb24gZnQoZSl7cmV0dXJuIGU8MD8wOjI1NTxlPzI1NTowfGV9ZnVuY3Rpb24gbXQoZSl7cmV0dXJuIGU8MD8wOjQyOTQ5NjcyOTU8ZT80Mjk0OTY3Mjk1OjB8ZX1jbGFzcyBndHtjb25zdHJ1Y3RvcihlKXt0aGlzLnZhbHVlcz1lLHRoaXMucHJlZml4U3VtPW5ldyBVaW50MzJBcnJheShlLmxlbmd0aCksdGhpcy5wcmVmaXhTdW1WYWxpZEluZGV4PW5ldyBJbnQzMkFycmF5KDEpLHRoaXMucHJlZml4U3VtVmFsaWRJbmRleFswXT0tMX1pbnNlcnRWYWx1ZXMoZSx0KXtlPW10KGUpO2NvbnN0IHI9dGhpcy52YWx1ZXMsbj10aGlzLnByZWZpeFN1bTt2YXIgaT10Lmxlbmd0aDtyZXR1cm4gMCE9PWkmJih0aGlzLnZhbHVlcz1uZXcgVWludDMyQXJyYXkoci5sZW5ndGgraSksdGhpcy52YWx1ZXMuc2V0KHIuc3ViYXJyYXkoMCxlKSwwKSx0aGlzLnZhbHVlcy5zZXQoci5zdWJhcnJheShlKSxlK2kpLHRoaXMudmFsdWVzLnNldCh0LGUpLGUtMTx0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF0mJih0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF09ZS0xKSx0aGlzLnByZWZpeFN1bT1uZXcgVWludDMyQXJyYXkodGhpcy52YWx1ZXMubGVuZ3RoKSwwPD10aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF0mJnRoaXMucHJlZml4U3VtLnNldChuLnN1YmFycmF5KDAsdGhpcy5wcmVmaXhTdW1WYWxpZEluZGV4WzBdKzEpKSwhMCl9c2V0VmFsdWUoZSx0KXtyZXR1cm4gZT1tdChlKSx0PW10KHQpLHRoaXMudmFsdWVzW2VdIT09dCYmKHRoaXMudmFsdWVzW2VdPXQsZS0xPHRoaXMucHJlZml4U3VtVmFsaWRJbmRleFswXSYmKHRoaXMucHJlZml4U3VtVmFsaWRJbmRleFswXT1lLTEpLCEwKX1yZW1vdmVWYWx1ZXMoZSx0KXtlPW10KGUpLHQ9bXQodCk7Y29uc3Qgcj10aGlzLnZhbHVlcyxuPXRoaXMucHJlZml4U3VtO2lmKGU+PXIubGVuZ3RoKXJldHVybiExO3ZhciBpPXIubGVuZ3RoLWU7cmV0dXJuIDAhPT0odD1pPD10P2k6dCkmJih0aGlzLnZhbHVlcz1uZXcgVWludDMyQXJyYXkoci5sZW5ndGgtdCksdGhpcy52YWx1ZXMuc2V0KHIuc3ViYXJyYXkoMCxlKSwwKSx0aGlzLnZhbHVlcy5zZXQoci5zdWJhcnJheShlK3QpLGUpLHRoaXMucHJlZml4U3VtPW5ldyBVaW50MzJBcnJheSh0aGlzLnZhbHVlcy5sZW5ndGgpLGUtMTx0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF0mJih0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF09ZS0xKSwwPD10aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF0mJnRoaXMucHJlZml4U3VtLnNldChuLnN1YmFycmF5KDAsdGhpcy5wcmVmaXhTdW1WYWxpZEluZGV4WzBdKzEpKSwhMCl9Z2V0VG90YWxTdW0oKXtyZXR1cm4gMD09PXRoaXMudmFsdWVzLmxlbmd0aD8wOnRoaXMuX2dldFByZWZpeFN1bSh0aGlzLnZhbHVlcy5sZW5ndGgtMSl9Z2V0UHJlZml4U3VtKGUpe3JldHVybiBlPDA/MDooZT1tdChlKSx0aGlzLl9nZXRQcmVmaXhTdW0oZSkpfV9nZXRQcmVmaXhTdW0odCl7aWYodDw9dGhpcy5wcmVmaXhTdW1WYWxpZEluZGV4WzBdKXJldHVybiB0aGlzLnByZWZpeFN1bVt0XTtsZXQgcj10aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF0rMTswPT09ciYmKHRoaXMucHJlZml4U3VtWzBdPXRoaXMudmFsdWVzWzBdLHIrKyksdD49dGhpcy52YWx1ZXMubGVuZ3RoJiYodD10aGlzLnZhbHVlcy5sZW5ndGgtMSk7Zm9yKGxldCBlPXI7ZTw9dDtlKyspdGhpcy5wcmVmaXhTdW1bZV09dGhpcy5wcmVmaXhTdW1bZS0xXSt0aGlzLnZhbHVlc1tlXTtyZXR1cm4gdGhpcy5wcmVmaXhTdW1WYWxpZEluZGV4WzBdPU1hdGgubWF4KHRoaXMucHJlZml4U3VtVmFsaWRJbmRleFswXSx0KSx0aGlzLnByZWZpeFN1bVt0XX1nZXRJbmRleE9mKGUpe2U9TWF0aC5mbG9vcihlKSx0aGlzLmdldFRvdGFsU3VtKCk7bGV0IHQ9MCxyPXRoaXMudmFsdWVzLmxlbmd0aC0xLG49MDt2YXIgaTtsZXQgYT0wO2Zvcig7dDw9cjspaWYobj10KyhyLXQpLzJ8MCxpPXRoaXMucHJlZml4U3VtW25dLGU8KGE9aS10aGlzLnZhbHVlc1tuXSkpcj1uLTE7ZWxzZXtpZighKGk8PWUpKWJyZWFrO3Q9bisxfXJldHVybiBuZXcgYnQobixlLWEpfX1jbGFzcyBidHtjb25zdHJ1Y3RvcihlLHQpe3RoaXMuaW5kZXg9ZSx0aGlzLnJlbWFpbmRlcj10LHRoaXMuX3ByZWZpeFN1bUluZGV4T2ZSZXN1bHRCcmFuZD12b2lkIDAsdGhpcy5pbmRleD1lLHRoaXMucmVtYWluZGVyPXR9fWNvbnN0IEN0PWZ1bmN0aW9uKGU9IiIpe2xldCB0PSIoLT9cXGQqXFwuXFxkXFx3Kil8KFteIjtmb3IoY29uc3QgciBvZiJgfiFAIyQlXiYqKCktPStbe119XFx8OzonXCIsLjw+Lz8iKTA8PWUuaW5kZXhPZihyKXx8KHQrPSJcXCIrcik7cmV0dXJuIHQrPSJcXHNdKykiLG5ldyBSZWdFeHAodCwiZyIpfSgpO2NvbnN0IHB0PXttYXhMZW46MWUzLHdpbmRvd1NpemU6MTUsdGltZUJ1ZGdldDoxNTB9O2Z1bmN0aW9uIHd0KHQscixuLGksYT1wdCl7aWYobi5sZW5ndGg+YS5tYXhMZW4pe2xldCBlPXQtYS5tYXhMZW4vMjtyZXR1cm4gZTwwP2U9MDppKz1lLHd0KHQscixuPW4uc3Vic3RyaW5nKGUsdCthLm1heExlbi8yKSxpLGEpfXZhciB1PURhdGUubm93KCksbz10LTEtaTtsZXQgcz0tMSxsPW51bGw7Zm9yKGxldCBlPTE7IShEYXRlLm5vdygpLXU+PWEudGltZUJ1ZGdldCk7ZSsrKXt2YXIgaD1vLWEud2luZG93U2l6ZSplLGM9KHIubGFzdEluZGV4PU1hdGgubWF4KDAsaCksZnVuY3Rpb24oZSx0LHIsbil7dmFyIGk7Zm9yKDtpPWUuZXhlYyh0KTspe3ZhciBhPWkuaW5kZXh8fDA7aWYoYTw9ciYmZS5sYXN0SW5kZXg+PXIpcmV0dXJuIGk7aWYoMDxuJiZuPGEpcmV0dXJuIG51bGx9cmV0dXJuIG51bGx9KHIsbixvLHMpKTtpZighYyYmbClicmVhaztpZihsPWMsaDw9MClicmVhaztzPWh9cmV0dXJuIGw/KHQ9e3dvcmQ6bFswXSxzdGFydENvbHVtbjppKzErbC5pbmRleCxlbmRDb2x1bW46aSsxK2wuaW5kZXgrbFswXS5sZW5ndGh9LHIubGFzdEluZGV4PTAsdCk6bnVsbH1jbGFzcyBfdHtjb25zdHJ1Y3RvcihlKXtlPWZ0KGUpO3RoaXMuX2RlZmF1bHRWYWx1ZT1lLHRoaXMuX2FzY2lpTWFwPV90Ll9jcmVhdGVBc2NpaU1hcChlKSx0aGlzLl9tYXA9bmV3IE1hcH1zdGF0aWMgX2NyZWF0ZUFzY2lpTWFwKHQpe2NvbnN0IHI9bmV3IFVpbnQ4QXJyYXkoMjU2KTtmb3IobGV0IGU9MDtlPDI1NjtlKyspcltlXT10O3JldHVybiByfXNldChlLHQpe3Q9ZnQodCk7MDw9ZSYmZTwyNTY/dGhpcy5fYXNjaWlNYXBbZV09dDp0aGlzLl9tYXAuc2V0KGUsdCl9Z2V0KGUpe3JldHVybiAwPD1lJiZlPDI1Nj90aGlzLl9hc2NpaU1hcFtlXTp0aGlzLl9tYXAuZ2V0KGUpfHx0aGlzLl9kZWZhdWx0VmFsdWV9fWNsYXNzIHZ0e2NvbnN0cnVjdG9yKHIsbixpKXtjb25zdCBhPW5ldyBVaW50OEFycmF5KHIqbik7Zm9yKGxldCBlPTAsdD1yKm47ZTx0O2UrKylhW2VdPWk7dGhpcy5fZGF0YT1hLHRoaXMucm93cz1yLHRoaXMuY29scz1ufWdldChlLHQpe3JldHVybiB0aGlzLl9kYXRhW2UqdGhpcy5jb2xzK3RdfXNldChlLHQscil7dGhpcy5fZGF0YVtlKnRoaXMuY29scyt0XT1yfX1jbGFzcyB5dHtjb25zdHJ1Y3RvcihyKXtsZXQgbj0wLGk9MDtmb3IobGV0IGU9MCx0PXIubGVuZ3RoO2U8dDtlKyspe3ZhclthLG8sc109cltlXTtvPm4mJihuPW8pLHM+KGk9YT5pP2E6aSkmJihpPXMpfW4rKyxpKys7Y29uc3QgbD1uZXcgdnQoaSxuLDApO2ZvcihsZXQgZT0wLHQ9ci5sZW5ndGg7ZTx0O2UrKyl7dmFyW2gsYyx1XT1yW2VdO2wuc2V0KGgsYyx1KX10aGlzLl9zdGF0ZXM9bCx0aGlzLl9tYXhDaGFyQ29kZT1ufW5leHRTdGF0ZShlLHQpe3JldHVybiB0PDB8fHQ+PXRoaXMuX21heENoYXJDb2RlPzA6dGhpcy5fc3RhdGVzLmdldChlLHQpfX1sZXQgTHQ9bnVsbDtsZXQgU3Q9bnVsbDtjbGFzcyBOdHtzdGF0aWMgX2NyZWF0ZUxpbmsoZSx0LHIsbixpKXtsZXQgYT1pLTE7ZG97dmFyIG89dC5jaGFyQ29kZUF0KGEpO2lmKDIhPT1lLmdldChvKSlicmVha313aGlsZSgtLWE+bik7dmFyIHM7cmV0dXJuIDA8biYmKGk9dC5jaGFyQ29kZUF0KG4tMSkscz10LmNoYXJDb2RlQXQoYSksKDQwPT09aSYmNDE9PT1zfHw5MT09PWkmJjkzPT09c3x8MTIzPT09aSYmMTI1PT09cykmJmEtLSkse3JhbmdlOntzdGFydExpbmVOdW1iZXI6cixzdGFydENvbHVtbjpuKzEsZW5kTGluZU51bWJlcjpyLGVuZENvbHVtbjphKzJ9LHVybDp0LnN1YnN0cmluZyhuLGErMSl9fXN0YXRpYyBjb21wdXRlTGlua3ModCx1PUx0PW51bGw9PT1MdD9uZXcgeXQoW1sxLDEwNCwyXSxbMSw3MiwyXSxbMSwxMDIsNl0sWzEsNzAsNl0sWzIsMTE2LDNdLFsyLDg0LDNdLFszLDExNiw0XSxbMyw4NCw0XSxbNCwxMTIsNV0sWzQsODAsNV0sWzUsMTE1LDldLFs1LDgzLDldLFs1LDU4LDEwXSxbNiwxMDUsN10sWzYsNzMsN10sWzcsMTA4LDhdLFs3LDc2LDhdLFs4LDEwMSw5XSxbOCw2OSw5XSxbOSw1OCwxMF0sWzEwLDQ3LDExXSxbMTEsNDcsMTJdXSk6THQpe2NvbnN0IGQ9ZnVuY3Rpb24oKXtpZihudWxsPT09U3Qpe1N0PW5ldyBfdCgwKTt2YXIgdD0iIFx0PD4nXCLjgIHjgILvvaHvvaTvvIzvvI7vvJrvvJvigJjjgIjjgIzjgI7jgJTvvIjvvLvvvZvvvaLvvaPvvZ3vvL3vvInjgJXjgI/jgI3jgInigJnvvYDvvZ7igKYiO2ZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSsrKVN0LnNldCh0LmNoYXJDb2RlQXQoZSksMSk7Zm9yKGxldCBlPTA7ZTwiLiw7Ii5sZW5ndGg7ZSsrKVN0LnNldCgiLiw7Ii5jaGFyQ29kZUF0KGUpLDIpfXJldHVybiBTdH0oKSxmPVtdO2ZvcihsZXQgYz0xLGU9dC5nZXRMaW5lQ291bnQoKTtjPD1lO2MrKyl7Y29uc3QgYj10LmdldExpbmVDb250ZW50KGMpO3ZhciBtPWIubGVuZ3RoO2xldCByPTAsbj0wLGk9MCxhPTEsbz0hMSxzPSExLGw9ITEsaD0hMTtmb3IoO3I8bTspe2xldCB0PSExO3ZhciBnPWIuY2hhckNvZGVBdChyKTtpZigxMz09PWEpe2xldCBlO3N3aXRjaChnKXtjYXNlIDQwOm89ITAsZT0wO2JyZWFrO2Nhc2UgNDE6ZT1vPzA6MTticmVhaztjYXNlIDkxOmw9ITAscz0hMCxlPTA7YnJlYWs7Y2FzZSA5MzpsPSExLGU9cz8wOjE7YnJlYWs7Y2FzZSAxMjM6aD0hMCxlPTA7YnJlYWs7Y2FzZSAxMjU6ZT1oPzA6MTticmVhaztjYXNlIDM5OmU9MzQ9PT1pfHw5Nj09PWk/MDoxO2JyZWFrO2Nhc2UgMzQ6ZT0zOT09PWl8fDk2PT09aT8wOjE7YnJlYWs7Y2FzZSA5NjplPTM5PT09aXx8MzQ9PT1pPzA6MTticmVhaztjYXNlIDQyOmU9NDI9PT1pPzE6MDticmVhaztjYXNlIDEyNDplPTEyND09PWk/MTowO2JyZWFrO2Nhc2UgMzI6ZT1sPzA6MTticmVhaztkZWZhdWx0OmU9ZC5nZXQoZyl9MT09PWUmJihmLnB1c2goTnQuX2NyZWF0ZUxpbmsoZCxiLGMsbixyKSksdD0hMCl9ZWxzZSBpZigxMj09PWEpe2xldCBlOzE9PT0oZT05MT09PWc/KHM9ITAsMCk6ZC5nZXQoZykpP3Q9ITA6YT0xM31lbHNlIDA9PT0oYT11Lm5leHRTdGF0ZShhLGcpKSYmKHQ9ITApO3QmJihhPTEsbz0hMSxzPSExLGg9ITEsbj1yKzEsaT1nKSxyKyt9MTM9PT1hJiZmLnB1c2goTnQuX2NyZWF0ZUxpbmsoZCxiLGMsbixtKSl9cmV0dXJuIGZ9fWNsYXNzIEV0e2NvbnN0cnVjdG9yKCl7dGhpcy5fZGVmYXVsdFZhbHVlU2V0PVtbInRydWUiLCJmYWxzZSJdLFsiVHJ1ZSIsIkZhbHNlIl0sWyJQcml2YXRlIiwiUHVibGljIiwiRnJpZW5kIiwiUmVhZE9ubHkiLCJQYXJ0aWFsIiwiUHJvdGVjdGVkIiwiV3JpdGVPbmx5Il0sWyJwdWJsaWMiLCJwcm90ZWN0ZWQiLCJwcml2YXRlIl1dfW5hdmlnYXRlVmFsdWVTZXQoZSx0LHIsbixpKXtpZihlJiZ0KXt0PXRoaXMuZG9OYXZpZ2F0ZVZhbHVlU2V0KHQsaSk7aWYodClyZXR1cm57cmFuZ2U6ZSx2YWx1ZTp0fX1pZihyJiZuKXtlPXRoaXMuZG9OYXZpZ2F0ZVZhbHVlU2V0KG4saSk7aWYoZSlyZXR1cm57cmFuZ2U6cix2YWx1ZTplfX1yZXR1cm4gbnVsbH1kb05hdmlnYXRlVmFsdWVTZXQoZSx0KXt2YXIgcj10aGlzLm51bWJlclJlcGxhY2UoZSx0KTtyZXR1cm4gbnVsbCE9PXI/cjp0aGlzLnRleHRSZXBsYWNlKGUsdCl9bnVtYmVyUmVwbGFjZShlLHQpe3ZhciByPU1hdGgucG93KDEwLGUubGVuZ3RoLShlLmxhc3RJbmRleE9mKCIuIikrMSkpO2xldCBuPU51bWJlcihlKTtlPXBhcnNlRmxvYXQoZSk7cmV0dXJuIWlzTmFOKG4pJiYhaXNOYU4oZSkmJm49PT1lJiYoMCE9PW58fHQpPyhuPU1hdGguZmxvb3IobipyKSxuKz10P3I6LXIsU3RyaW5nKG4vcikpOm51bGx9dGV4dFJlcGxhY2UoZSx0KXtyZXR1cm4gdGhpcy52YWx1ZVNldHNSZXBsYWNlKHRoaXMuX2RlZmF1bHRWYWx1ZVNldCxlLHQpfXZhbHVlU2V0c1JlcGxhY2UocixuLGkpe2xldCBhPW51bGw7Zm9yKGxldCBlPTAsdD1yLmxlbmd0aDtudWxsPT09YSYmZTx0O2UrKylhPXRoaXMudmFsdWVTZXRSZXBsYWNlKHJbZV0sbixpKTtyZXR1cm4gYX12YWx1ZVNldFJlcGxhY2UoZSx0LHIpe2xldCBuPWUuaW5kZXhPZih0KTtyZXR1cm4gMDw9bj8oKG4rPXI/MTotMSk8MD9uPWUubGVuZ3RoLTE6biU9ZS5sZW5ndGgsZVtuXSk6bnVsbH19RXQuSU5TVEFOQ0U9bmV3IEV0O2NvbnN0IEF0PU9iamVjdC5mcmVlemUoZnVuY3Rpb24oZSx0KXtjb25zdCByPXNldFRpbWVvdXQoZS5iaW5kKHQpLDApO3JldHVybntkaXNwb3NlKCl7Y2xlYXJUaW1lb3V0KHIpfX19KTsoUmU9UGU9UGV8fHt9KS5pc0NhbmNlbGxhdGlvblRva2VuPWZ1bmN0aW9uKGUpe3JldHVybiBlPT09UmUuTm9uZXx8ZT09PVJlLkNhbmNlbGxlZHx8KGUgaW5zdGFuY2VvZiBrdHx8ISghZXx8Im9iamVjdCIhPXR5cGVvZiBlKSYmKCJib29sZWFuIj09dHlwZW9mIGUuaXNDYW5jZWxsYXRpb25SZXF1ZXN0ZWQmJiJmdW5jdGlvbiI9PXR5cGVvZiBlLm9uQ2FuY2VsbGF0aW9uUmVxdWVzdGVkKSl9LFJlLk5vbmU9T2JqZWN0LmZyZWV6ZSh7aXNDYW5jZWxsYXRpb25SZXF1ZXN0ZWQ6ITEsb25DYW5jZWxsYXRpb25SZXF1ZXN0ZWQ6UXQuTm9uZX0pLFJlLkNhbmNlbGxlZD1PYmplY3QuZnJlZXplKHtpc0NhbmNlbGxhdGlvblJlcXVlc3RlZDohMCxvbkNhbmNlbGxhdGlvblJlcXVlc3RlZDpBdH0pO2NsYXNzIGt0e2NvbnN0cnVjdG9yKCl7dGhpcy5faXNDYW5jZWxsZWQ9ITEsdGhpcy5fZW1pdHRlcj1udWxsfWNhbmNlbCgpe3RoaXMuX2lzQ2FuY2VsbGVkfHwodGhpcy5faXNDYW5jZWxsZWQ9ITAsdGhpcy5fZW1pdHRlciYmKHRoaXMuX2VtaXR0ZXIuZmlyZSh2b2lkIDApLHRoaXMuZGlzcG9zZSgpKSl9Z2V0IGlzQ2FuY2VsbGF0aW9uUmVxdWVzdGVkKCl7cmV0dXJuIHRoaXMuX2lzQ2FuY2VsbGVkfWdldCBvbkNhbmNlbGxhdGlvblJlcXVlc3RlZCgpe3JldHVybiB0aGlzLl9pc0NhbmNlbGxlZD9BdDoodGhpcy5fZW1pdHRlcnx8KHRoaXMuX2VtaXR0ZXI9bmV3IHRlKSx0aGlzLl9lbWl0dGVyLmV2ZW50KX1kaXNwb3NlKCl7dGhpcy5fZW1pdHRlciYmKHRoaXMuX2VtaXR0ZXIuZGlzcG9zZSgpLHRoaXMuX2VtaXR0ZXI9bnVsbCl9fWNsYXNzIHh0e2NvbnN0cnVjdG9yKGUpe3RoaXMuX3Rva2VuPXZvaWQgMCx0aGlzLl9wYXJlbnRMaXN0ZW5lcj12b2lkIDAsdGhpcy5fcGFyZW50TGlzdGVuZXI9ZSYmZS5vbkNhbmNlbGxhdGlvblJlcXVlc3RlZCh0aGlzLmNhbmNlbCx0aGlzKX1nZXQgdG9rZW4oKXtyZXR1cm4gdGhpcy5fdG9rZW58fCh0aGlzLl90b2tlbj1uZXcga3QpLHRoaXMuX3Rva2VufWNhbmNlbCgpe3RoaXMuX3Rva2VuP3RoaXMuX3Rva2VuIGluc3RhbmNlb2Yga3QmJnRoaXMuX3Rva2VuLmNhbmNlbCgpOnRoaXMuX3Rva2VuPVBlLkNhbmNlbGxlZH1kaXNwb3NlKGU9ITEpe2UmJnRoaXMuY2FuY2VsKCksdGhpcy5fcGFyZW50TGlzdGVuZXImJnRoaXMuX3BhcmVudExpc3RlbmVyLmRpc3Bvc2UoKSx0aGlzLl90b2tlbj90aGlzLl90b2tlbiBpbnN0YW5jZW9mIGt0JiZ0aGlzLl90b2tlbi5kaXNwb3NlKCk6dGhpcy5fdG9rZW49UGUuTm9uZX19Y2xhc3MgTXR7Y29uc3RydWN0b3IoKXt0aGlzLl9rZXlDb2RlVG9TdHI9W10sdGhpcy5fc3RyVG9LZXlDb2RlPU9iamVjdC5jcmVhdGUobnVsbCl9ZGVmaW5lKGUsdCl7dGhpcy5fa2V5Q29kZVRvU3RyW2VdPXQsdGhpcy5fc3RyVG9LZXlDb2RlW3QudG9Mb3dlckNhc2UoKV09ZX1rZXlDb2RlVG9TdHIoZSl7cmV0dXJuIHRoaXMuX2tleUNvZGVUb1N0cltlXX1zdHJUb0tleUNvZGUoZSl7cmV0dXJuIHRoaXMuX3N0clRvS2V5Q29kZVtlLnRvTG93ZXJDYXNlKCldfHwwfX1jb25zdCBLdD1uZXcgTXQsUHQ9bmV3IE10LFJ0PW5ldyBNdCxEdD1uZXcgQXJyYXkoMjMwKSxJdD17fSxWdD1bXSxPdD1PYmplY3QuY3JlYXRlKG51bGwpLEZ0PU9iamVjdC5jcmVhdGUobnVsbCksVHQ9W10sQnQ9W107Zm9yKGxldCBlPTA7ZTw9MTkzO2UrKylUdFtlXT0tMTtmb3IobGV0IGU9MDtlPD0xMjc7ZSsrKUJ0W2VdPS0xO3tsZXQgZT1bXSx0PVtdO2Zvcihjb25zdCBQciBvZltbMCwxLDAsIk5vbmUiLDAsInVua25vd24iLDAsIlZLX1VOS05PV04iLCIiLCIiXSxbMCwxLDEsIkh5cGVyIiwwLCIiLDAsIiIsIiIsIiJdLFswLDEsMiwiU3VwZXIiLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSwzLCJGbiIsMCwiIiwwLCIiLCIiLCIiXSxbMCwxLDQsIkZuTG9jayIsMCwiIiwwLCIiLCIiLCIiXSxbMCwxLDUsIlN1c3BlbmQiLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSw2LCJSZXN1bWUiLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSw3LCJUdXJibyIsMCwiIiwwLCIiLCIiLCIiXSxbMCwxLDgsIlNsZWVwIiwwLCIiLDAsIlZLX1NMRUVQIiwiIiwiIl0sWzAsMSw5LCJXYWtlVXAiLDAsIiIsMCwiIiwiIiwiIl0sWzMxLDAsMTAsIktleUEiLDMxLCJBIiw2NSwiVktfQSIsIiIsIiJdLFszMiwwLDExLCJLZXlCIiwzMiwiQiIsNjYsIlZLX0IiLCIiLCIiXSxbMzMsMCwxMiwiS2V5QyIsMzMsIkMiLDY3LCJWS19DIiwiIiwiIl0sWzM0LDAsMTMsIktleUQiLDM0LCJEIiw2OCwiVktfRCIsIiIsIiJdLFszNSwwLDE0LCJLZXlFIiwzNSwiRSIsNjksIlZLX0UiLCIiLCIiXSxbMzYsMCwxNSwiS2V5RiIsMzYsIkYiLDcwLCJWS19GIiwiIiwiIl0sWzM3LDAsMTYsIktleUciLDM3LCJHIiw3MSwiVktfRyIsIiIsIiJdLFszOCwwLDE3LCJLZXlIIiwzOCwiSCIsNzIsIlZLX0giLCIiLCIiXSxbMzksMCwxOCwiS2V5SSIsMzksIkkiLDczLCJWS19JIiwiIiwiIl0sWzQwLDAsMTksIktleUoiLDQwLCJKIiw3NCwiVktfSiIsIiIsIiJdLFs0MSwwLDIwLCJLZXlLIiw0MSwiSyIsNzUsIlZLX0siLCIiLCIiXSxbNDIsMCwyMSwiS2V5TCIsNDIsIkwiLDc2LCJWS19MIiwiIiwiIl0sWzQzLDAsMjIsIktleU0iLDQzLCJNIiw3NywiVktfTSIsIiIsIiJdLFs0NCwwLDIzLCJLZXlOIiw0NCwiTiIsNzgsIlZLX04iLCIiLCIiXSxbNDUsMCwyNCwiS2V5TyIsNDUsIk8iLDc5LCJWS19PIiwiIiwiIl0sWzQ2LDAsMjUsIktleVAiLDQ2LCJQIiw4MCwiVktfUCIsIiIsIiJdLFs0NywwLDI2LCJLZXlRIiw0NywiUSIsODEsIlZLX1EiLCIiLCIiXSxbNDgsMCwyNywiS2V5UiIsNDgsIlIiLDgyLCJWS19SIiwiIiwiIl0sWzQ5LDAsMjgsIktleVMiLDQ5LCJTIiw4MywiVktfUyIsIiIsIiJdLFs1MCwwLDI5LCJLZXlUIiw1MCwiVCIsODQsIlZLX1QiLCIiLCIiXSxbNTEsMCwzMCwiS2V5VSIsNTEsIlUiLDg1LCJWS19VIiwiIiwiIl0sWzUyLDAsMzEsIktleVYiLDUyLCJWIiw4NiwiVktfViIsIiIsIiJdLFs1MywwLDMyLCJLZXlXIiw1MywiVyIsODcsIlZLX1ciLCIiLCIiXSxbNTQsMCwzMywiS2V5WCIsNTQsIlgiLDg4LCJWS19YIiwiIiwiIl0sWzU1LDAsMzQsIktleVkiLDU1LCJZIiw4OSwiVktfWSIsIiIsIiJdLFs1NiwwLDM1LCJLZXlaIiw1NiwiWiIsOTAsIlZLX1oiLCIiLCIiXSxbMjIsMCwzNiwiRGlnaXQxIiwyMiwiMSIsNDksIlZLXzEiLCIiLCIiXSxbMjMsMCwzNywiRGlnaXQyIiwyMywiMiIsNTAsIlZLXzIiLCIiLCIiXSxbMjQsMCwzOCwiRGlnaXQzIiwyNCwiMyIsNTEsIlZLXzMiLCIiLCIiXSxbMjUsMCwzOSwiRGlnaXQ0IiwyNSwiNCIsNTIsIlZLXzQiLCIiLCIiXSxbMjYsMCw0MCwiRGlnaXQ1IiwyNiwiNSIsNTMsIlZLXzUiLCIiLCIiXSxbMjcsMCw0MSwiRGlnaXQ2IiwyNywiNiIsNTQsIlZLXzYiLCIiLCIiXSxbMjgsMCw0MiwiRGlnaXQ3IiwyOCwiNyIsNTUsIlZLXzciLCIiLCIiXSxbMjksMCw0MywiRGlnaXQ4IiwyOSwiOCIsNTYsIlZLXzgiLCIiLCIiXSxbMzAsMCw0NCwiRGlnaXQ5IiwzMCwiOSIsNTcsIlZLXzkiLCIiLCIiXSxbMjEsMCw0NSwiRGlnaXQwIiwyMSwiMCIsNDgsIlZLXzAiLCIiLCIiXSxbMywxLDQ2LCJFbnRlciIsMywiRW50ZXIiLDEzLCJWS19SRVRVUk4iLCIiLCIiXSxbOSwxLDQ3LCJFc2NhcGUiLDksIkVzY2FwZSIsMjcsIlZLX0VTQ0FQRSIsIiIsIiJdLFsxLDEsNDgsIkJhY2tzcGFjZSIsMSwiQmFja3NwYWNlIiw4LCJWS19CQUNLIiwiIiwiIl0sWzIsMSw0OSwiVGFiIiwyLCJUYWIiLDksIlZLX1RBQiIsIiIsIiJdLFsxMCwxLDUwLCJTcGFjZSIsMTAsIlNwYWNlIiwzMiwiVktfU1BBQ0UiLCIiLCIiXSxbODMsMCw1MSwiTWludXMiLDgzLCItIiwxODksIlZLX09FTV9NSU5VUyIsIi0iLCJPRU1fTUlOVVMiXSxbODEsMCw1MiwiRXF1YWwiLDgxLCI9IiwxODcsIlZLX09FTV9QTFVTIiwiPSIsIk9FTV9QTFVTIl0sWzg3LDAsNTMsIkJyYWNrZXRMZWZ0Iiw4NywiWyIsMjE5LCJWS19PRU1fNCIsIlsiLCJPRU1fNCJdLFs4OSwwLDU0LCJCcmFja2V0UmlnaHQiLDg5LCJdIiwyMjEsIlZLX09FTV82IiwiXSIsIk9FTV82Il0sWzg4LDAsNTUsIkJhY2tzbGFzaCIsODgsIlxcIiwyMjAsIlZLX09FTV81IiwiXFwiLCJPRU1fNSJdLFswLDAsNTYsIkludGxIYXNoIiwwLCIiLDAsIiIsIiIsIiJdLFs4MCwwLDU3LCJTZW1pY29sb24iLDgwLCI7IiwxODYsIlZLX09FTV8xIiwiOyIsIk9FTV8xIl0sWzkwLDAsNTgsIlF1b3RlIiw5MCwiJyIsMjIyLCJWS19PRU1fNyIsIiciLCJPRU1fNyJdLFs4NiwwLDU5LCJCYWNrcXVvdGUiLDg2LCJgIiwxOTIsIlZLX09FTV8zIiwiYCIsIk9FTV8zIl0sWzgyLDAsNjAsIkNvbW1hIiw4MiwiLCIsMTg4LCJWS19PRU1fQ09NTUEiLCIsIiwiT0VNX0NPTU1BIl0sWzg0LDAsNjEsIlBlcmlvZCIsODQsIi4iLDE5MCwiVktfT0VNX1BFUklPRCIsIi4iLCJPRU1fUEVSSU9EIl0sWzg1LDAsNjIsIlNsYXNoIiw4NSwiLyIsMTkxLCJWS19PRU1fMiIsIi8iLCJPRU1fMiJdLFs4LDEsNjMsIkNhcHNMb2NrIiw4LCJDYXBzTG9jayIsMjAsIlZLX0NBUElUQUwiLCIiLCIiXSxbNTksMSw2NCwiRjEiLDU5LCJGMSIsMTEyLCJWS19GMSIsIiIsIiJdLFs2MCwxLDY1LCJGMiIsNjAsIkYyIiwxMTMsIlZLX0YyIiwiIiwiIl0sWzYxLDEsNjYsIkYzIiw2MSwiRjMiLDExNCwiVktfRjMiLCIiLCIiXSxbNjIsMSw2NywiRjQiLDYyLCJGNCIsMTE1LCJWS19GNCIsIiIsIiJdLFs2MywxLDY4LCJGNSIsNjMsIkY1IiwxMTYsIlZLX0Y1IiwiIiwiIl0sWzY0LDEsNjksIkY2Iiw2NCwiRjYiLDExNywiVktfRjYiLCIiLCIiXSxbNjUsMSw3MCwiRjciLDY1LCJGNyIsMTE4LCJWS19GNyIsIiIsIiJdLFs2NiwxLDcxLCJGOCIsNjYsIkY4IiwxMTksIlZLX0Y4IiwiIiwiIl0sWzY3LDEsNzIsIkY5Iiw2NywiRjkiLDEyMCwiVktfRjkiLCIiLCIiXSxbNjgsMSw3MywiRjEwIiw2OCwiRjEwIiwxMjEsIlZLX0YxMCIsIiIsIiJdLFs2OSwxLDc0LCJGMTEiLDY5LCJGMTEiLDEyMiwiVktfRjExIiwiIiwiIl0sWzcwLDEsNzUsIkYxMiIsNzAsIkYxMiIsMTIzLCJWS19GMTIiLCIiLCIiXSxbMCwxLDc2LCJQcmludFNjcmVlbiIsMCwiIiwwLCIiLCIiLCIiXSxbNzksMSw3NywiU2Nyb2xsTG9jayIsNzksIlNjcm9sbExvY2siLDE0NSwiVktfU0NST0xMIiwiIiwiIl0sWzcsMSw3OCwiUGF1c2UiLDcsIlBhdXNlQnJlYWsiLDE5LCJWS19QQVVTRSIsIiIsIiJdLFsxOSwxLDc5LCJJbnNlcnQiLDE5LCJJbnNlcnQiLDQ1LCJWS19JTlNFUlQiLCIiLCIiXSxbMTQsMSw4MCwiSG9tZSIsMTQsIkhvbWUiLDM2LCJWS19IT01FIiwiIiwiIl0sWzExLDEsODEsIlBhZ2VVcCIsMTEsIlBhZ2VVcCIsMzMsIlZLX1BSSU9SIiwiIiwiIl0sWzIwLDEsODIsIkRlbGV0ZSIsMjAsIkRlbGV0ZSIsNDYsIlZLX0RFTEVURSIsIiIsIiJdLFsxMywxLDgzLCJFbmQiLDEzLCJFbmQiLDM1LCJWS19FTkQiLCIiLCIiXSxbMTIsMSw4NCwiUGFnZURvd24iLDEyLCJQYWdlRG93biIsMzQsIlZLX05FWFQiLCIiLCIiXSxbMTcsMSw4NSwiQXJyb3dSaWdodCIsMTcsIlJpZ2h0QXJyb3ciLDM5LCJWS19SSUdIVCIsIlJpZ2h0IiwiIl0sWzE1LDEsODYsIkFycm93TGVmdCIsMTUsIkxlZnRBcnJvdyIsMzcsIlZLX0xFRlQiLCJMZWZ0IiwiIl0sWzE4LDEsODcsIkFycm93RG93biIsMTgsIkRvd25BcnJvdyIsNDAsIlZLX0RPV04iLCJEb3duIiwiIl0sWzE2LDEsODgsIkFycm93VXAiLDE2LCJVcEFycm93IiwzOCwiVktfVVAiLCJVcCIsIiJdLFs3OCwxLDg5LCJOdW1Mb2NrIiw3OCwiTnVtTG9jayIsMTQ0LCJWS19OVU1MT0NLIiwiIiwiIl0sWzEwOCwxLDkwLCJOdW1wYWREaXZpZGUiLDEwOCwiTnVtUGFkX0RpdmlkZSIsMTExLCJWS19ESVZJREUiLCIiLCIiXSxbMTAzLDEsOTEsIk51bXBhZE11bHRpcGx5IiwxMDMsIk51bVBhZF9NdWx0aXBseSIsMTA2LCJWS19NVUxUSVBMWSIsIiIsIiJdLFsxMDYsMSw5MiwiTnVtcGFkU3VidHJhY3QiLDEwNiwiTnVtUGFkX1N1YnRyYWN0IiwxMDksIlZLX1NVQlRSQUNUIiwiIiwiIl0sWzEwNCwxLDkzLCJOdW1wYWRBZGQiLDEwNCwiTnVtUGFkX0FkZCIsMTA3LCJWS19BREQiLCIiLCIiXSxbMywxLDk0LCJOdW1wYWRFbnRlciIsMywiIiwwLCIiLCIiLCIiXSxbOTQsMSw5NSwiTnVtcGFkMSIsOTQsIk51bVBhZDEiLDk3LCJWS19OVU1QQUQxIiwiIiwiIl0sWzk1LDEsOTYsIk51bXBhZDIiLDk1LCJOdW1QYWQyIiw5OCwiVktfTlVNUEFEMiIsIiIsIiJdLFs5NiwxLDk3LCJOdW1wYWQzIiw5NiwiTnVtUGFkMyIsOTksIlZLX05VTVBBRDMiLCIiLCIiXSxbOTcsMSw5OCwiTnVtcGFkNCIsOTcsIk51bVBhZDQiLDEwMCwiVktfTlVNUEFENCIsIiIsIiJdLFs5OCwxLDk5LCJOdW1wYWQ1Iiw5OCwiTnVtUGFkNSIsMTAxLCJWS19OVU1QQUQ1IiwiIiwiIl0sWzk5LDEsMTAwLCJOdW1wYWQ2Iiw5OSwiTnVtUGFkNiIsMTAyLCJWS19OVU1QQUQ2IiwiIiwiIl0sWzEwMCwxLDEwMSwiTnVtcGFkNyIsMTAwLCJOdW1QYWQ3IiwxMDMsIlZLX05VTVBBRDciLCIiLCIiXSxbMTAxLDEsMTAyLCJOdW1wYWQ4IiwxMDEsIk51bVBhZDgiLDEwNCwiVktfTlVNUEFEOCIsIiIsIiJdLFsxMDIsMSwxMDMsIk51bXBhZDkiLDEwMiwiTnVtUGFkOSIsMTA1LCJWS19OVU1QQUQ5IiwiIiwiIl0sWzkzLDEsMTA0LCJOdW1wYWQwIiw5MywiTnVtUGFkMCIsOTYsIlZLX05VTVBBRDAiLCIiLCIiXSxbMTA3LDEsMTA1LCJOdW1wYWREZWNpbWFsIiwxMDcsIk51bVBhZF9EZWNpbWFsIiwxMTAsIlZLX0RFQ0lNQUwiLCIiLCIiXSxbOTIsMCwxMDYsIkludGxCYWNrc2xhc2giLDkyLCJPRU1fMTAyIiwyMjYsIlZLX09FTV8xMDIiLCIiLCIiXSxbNTgsMSwxMDcsIkNvbnRleHRNZW51Iiw1OCwiQ29udGV4dE1lbnUiLDkzLCIiLCIiLCIiXSxbMCwxLDEwOCwiUG93ZXIiLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSwxMDksIk51bXBhZEVxdWFsIiwwLCIiLDAsIiIsIiIsIiJdLFs3MSwxLDExMCwiRjEzIiw3MSwiRjEzIiwxMjQsIlZLX0YxMyIsIiIsIiJdLFs3MiwxLDExMSwiRjE0Iiw3MiwiRjE0IiwxMjUsIlZLX0YxNCIsIiIsIiJdLFs3MywxLDExMiwiRjE1Iiw3MywiRjE1IiwxMjYsIlZLX0YxNSIsIiIsIiJdLFs3NCwxLDExMywiRjE2Iiw3NCwiRjE2IiwxMjcsIlZLX0YxNiIsIiIsIiJdLFs3NSwxLDExNCwiRjE3Iiw3NSwiRjE3IiwxMjgsIlZLX0YxNyIsIiIsIiJdLFs3NiwxLDExNSwiRjE4Iiw3NiwiRjE4IiwxMjksIlZLX0YxOCIsIiIsIiJdLFs3NywxLDExNiwiRjE5Iiw3NywiRjE5IiwxMzAsIlZLX0YxOSIsIiIsIiJdLFswLDEsMTE3LCJGMjAiLDAsIiIsMCwiVktfRjIwIiwiIiwiIl0sWzAsMSwxMTgsIkYyMSIsMCwiIiwwLCJWS19GMjEiLCIiLCIiXSxbMCwxLDExOSwiRjIyIiwwLCIiLDAsIlZLX0YyMiIsIiIsIiJdLFswLDEsMTIwLCJGMjMiLDAsIiIsMCwiVktfRjIzIiwiIiwiIl0sWzAsMSwxMjEsIkYyNCIsMCwiIiwwLCJWS19GMjQiLCIiLCIiXSxbMCwxLDEyMiwiT3BlbiIsMCwiIiwwLCIiLCIiLCIiXSxbMCwxLDEyMywiSGVscCIsMCwiIiwwLCIiLCIiLCIiXSxbMCwxLDEyNCwiU2VsZWN0IiwwLCIiLDAsIiIsIiIsIiJdLFswLDEsMTI1LCJBZ2FpbiIsMCwiIiwwLCIiLCIiLCIiXSxbMCwxLDEyNiwiVW5kbyIsMCwiIiwwLCIiLCIiLCIiXSxbMCwxLDEyNywiQ3V0IiwwLCIiLDAsIiIsIiIsIiJdLFswLDEsMTI4LCJDb3B5IiwwLCIiLDAsIiIsIiIsIiJdLFswLDEsMTI5LCJQYXN0ZSIsMCwiIiwwLCIiLCIiLCIiXSxbMCwxLDEzMCwiRmluZCIsMCwiIiwwLCIiLCIiLCIiXSxbMCwxLDEzMSwiQXVkaW9Wb2x1bWVNdXRlIiwxMTIsIkF1ZGlvVm9sdW1lTXV0ZSIsMTczLCJWS19WT0xVTUVfTVVURSIsIiIsIiJdLFswLDEsMTMyLCJBdWRpb1ZvbHVtZVVwIiwxMTMsIkF1ZGlvVm9sdW1lVXAiLDE3NSwiVktfVk9MVU1FX1VQIiwiIiwiIl0sWzAsMSwxMzMsIkF1ZGlvVm9sdW1lRG93biIsMTE0LCJBdWRpb1ZvbHVtZURvd24iLDE3NCwiVktfVk9MVU1FX0RPV04iLCIiLCIiXSxbMTA1LDEsMTM0LCJOdW1wYWRDb21tYSIsMTA1LCJOdW1QYWRfU2VwYXJhdG9yIiwxMDgsIlZLX1NFUEFSQVRPUiIsIiIsIiJdLFsxMTAsMCwxMzUsIkludGxSbyIsMTEwLCJBQk5UX0MxIiwxOTMsIlZLX0FCTlRfQzEiLCIiLCIiXSxbMCwxLDEzNiwiS2FuYU1vZGUiLDAsIiIsMCwiIiwiIiwiIl0sWzAsMCwxMzcsIkludGxZZW4iLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSwxMzgsIkNvbnZlcnQiLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSwxMzksIk5vbkNvbnZlcnQiLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSwxNDAsIkxhbmcxIiwwLCIiLDAsIiIsIiIsIiJdLFswLDEsMTQxLCJMYW5nMiIsMCwiIiwwLCIiLCIiLCIiXSxbMCwxLDE0MiwiTGFuZzMiLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSwxNDMsIkxhbmc0IiwwLCIiLDAsIiIsIiIsIiJdLFswLDEsMTQ0LCJMYW5nNSIsMCwiIiwwLCIiLCIiLCIiXSxbMCwxLDE0NSwiQWJvcnQiLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSwxNDYsIlByb3BzIiwwLCIiLDAsIiIsIiIsIiJdLFswLDEsMTQ3LCJOdW1wYWRQYXJlbkxlZnQiLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSwxNDgsIk51bXBhZFBhcmVuUmlnaHQiLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSwxNDksIk51bXBhZEJhY2tzcGFjZSIsMCwiIiwwLCIiLCIiLCIiXSxbMCwxLDE1MCwiTnVtcGFkTWVtb3J5U3RvcmUiLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSwxNTEsIk51bXBhZE1lbW9yeVJlY2FsbCIsMCwiIiwwLCIiLCIiLCIiXSxbMCwxLDE1MiwiTnVtcGFkTWVtb3J5Q2xlYXIiLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSwxNTMsIk51bXBhZE1lbW9yeUFkZCIsMCwiIiwwLCIiLCIiLCIiXSxbMCwxLDE1NCwiTnVtcGFkTWVtb3J5U3VidHJhY3QiLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSwxNTUsIk51bXBhZENsZWFyIiwxMjYsIkNsZWFyIiwxMiwiVktfQ0xFQVIiLCIiLCIiXSxbMCwxLDE1NiwiTnVtcGFkQ2xlYXJFbnRyeSIsMCwiIiwwLCIiLCIiLCIiXSxbNSwxLDAsIiIsNSwiQ3RybCIsMTcsIlZLX0NPTlRST0wiLCIiLCIiXSxbNCwxLDAsIiIsNCwiU2hpZnQiLDE2LCJWS19TSElGVCIsIiIsIiJdLFs2LDEsMCwiIiw2LCJBbHQiLDE4LCJWS19NRU5VIiwiIiwiIl0sWzU3LDEsMCwiIiw1NywiTWV0YSIsMCwiVktfQ09NTUFORCIsIiIsIiJdLFs1LDEsMTU3LCJDb250cm9sTGVmdCIsNSwiIiwwLCJWS19MQ09OVFJPTCIsIiIsIiJdLFs0LDEsMTU4LCJTaGlmdExlZnQiLDQsIiIsMCwiVktfTFNISUZUIiwiIiwiIl0sWzYsMSwxNTksIkFsdExlZnQiLDYsIiIsMCwiVktfTE1FTlUiLCIiLCIiXSxbNTcsMSwxNjAsIk1ldGFMZWZ0Iiw1NywiIiwwLCJWS19MV0lOIiwiIiwiIl0sWzUsMSwxNjEsIkNvbnRyb2xSaWdodCIsNSwiIiwwLCJWS19SQ09OVFJPTCIsIiIsIiJdLFs0LDEsMTYyLCJTaGlmdFJpZ2h0Iiw0LCIiLDAsIlZLX1JTSElGVCIsIiIsIiJdLFs2LDEsMTYzLCJBbHRSaWdodCIsNiwiIiwwLCJWS19STUVOVSIsIiIsIiJdLFs1NywxLDE2NCwiTWV0YVJpZ2h0Iiw1NywiIiwwLCJWS19SV0lOIiwiIiwiIl0sWzAsMSwxNjUsIkJyaWdodG5lc3NVcCIsMCwiIiwwLCIiLCIiLCIiXSxbMCwxLDE2NiwiQnJpZ2h0bmVzc0Rvd24iLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSwxNjcsIk1lZGlhUGxheSIsMCwiIiwwLCIiLCIiLCIiXSxbMCwxLDE2OCwiTWVkaWFSZWNvcmQiLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSwxNjksIk1lZGlhRmFzdEZvcndhcmQiLDAsIiIsMCwiIiwiIiwiIl0sWzAsMSwxNzAsIk1lZGlhUmV3aW5kIiwwLCIiLDAsIiIsIiIsIiJdLFsxMTQsMSwxNzEsIk1lZGlhVHJhY2tOZXh0IiwxMTksIk1lZGlhVHJhY2tOZXh0IiwxNzYsIlZLX01FRElBX05FWFRfVFJBQ0siLCIiLCIiXSxbMTE1LDEsMTcyLCJNZWRpYVRyYWNrUHJldmlvdXMiLDEyMCwiTWVkaWFUcmFja1ByZXZpb3VzIiwxNzcsIlZLX01FRElBX1BSRVZfVFJBQ0siLCIiLCIiXSxbMTE2LDEsMTczLCJNZWRpYVN0b3AiLDEyMSwiTWVkaWFTdG9wIiwxNzgsIlZLX01FRElBX1NUT1AiLCIiLCIiXSxbMCwxLDE3NCwiRWplY3QiLDAsIiIsMCwiIiwiIiwiIl0sWzExNywxLDE3NSwiTWVkaWFQbGF5UGF1c2UiLDEyMiwiTWVkaWFQbGF5UGF1c2UiLDE3OSwiVktfTUVESUFfUExBWV9QQVVTRSIsIiIsIiJdLFswLDEsMTc2LCJNZWRpYVNlbGVjdCIsMTIzLCJMYXVuY2hNZWRpYVBsYXllciIsMTgxLCJWS19NRURJQV9MQVVOQ0hfTUVESUFfU0VMRUNUIiwiIiwiIl0sWzAsMSwxNzcsIkxhdW5jaE1haWwiLDEyNCwiTGF1bmNoTWFpbCIsMTgwLCJWS19NRURJQV9MQVVOQ0hfTUFJTCIsIiIsIiJdLFswLDEsMTc4LCJMYXVuY2hBcHAyIiwxMjUsIkxhdW5jaEFwcDIiLDE4MywiVktfTUVESUFfTEFVTkNIX0FQUDIiLCIiLCIiXSxbMCwxLDE3OSwiTGF1bmNoQXBwMSIsMCwiIiwwLCJWS19NRURJQV9MQVVOQ0hfQVBQMSIsIiIsIiJdLFswLDEsMTgwLCJTZWxlY3RUYXNrIiwwLCIiLDAsIiIsIiIsIiJdLFswLDEsMTgxLCJMYXVuY2hTY3JlZW5TYXZlciIsMCwiIiwwLCIiLCIiLCIiXSxbMCwxLDE4MiwiQnJvd3NlclNlYXJjaCIsMTE1LCJCcm93c2VyU2VhcmNoIiwxNzAsIlZLX0JST1dTRVJfU0VBUkNIIiwiIiwiIl0sWzAsMSwxODMsIkJyb3dzZXJIb21lIiwxMTYsIkJyb3dzZXJIb21lIiwxNzIsIlZLX0JST1dTRVJfSE9NRSIsIiIsIiJdLFsxMTIsMSwxODQsIkJyb3dzZXJCYWNrIiwxMTcsIkJyb3dzZXJCYWNrIiwxNjYsIlZLX0JST1dTRVJfQkFDSyIsIiIsIiJdLFsxMTMsMSwxODUsIkJyb3dzZXJGb3J3YXJkIiwxMTgsIkJyb3dzZXJGb3J3YXJkIiwxNjcsIlZLX0JST1dTRVJfRk9SV0FSRCIsIiIsIiJdLFswLDEsMTg2LCJCcm93c2VyU3RvcCIsMCwiIiwwLCJWS19CUk9XU0VSX1NUT1AiLCIiLCIiXSxbMCwxLDE4NywiQnJvd3NlclJlZnJlc2giLDAsIiIsMCwiVktfQlJPV1NFUl9SRUZSRVNIIiwiIiwiIl0sWzAsMSwxODgsIkJyb3dzZXJGYXZvcml0ZXMiLDAsIiIsMCwiVktfQlJPV1NFUl9GQVZPUklURVMiLCIiLCIiXSxbMCwxLDE4OSwiWm9vbVRvZ2dsZSIsMCwiIiwwLCIiLCIiLCIiXSxbMCwxLDE5MCwiTWFpbFJlcGx5IiwwLCIiLDAsIiIsIiIsIiJdLFswLDEsMTkxLCJNYWlsRm9yd2FyZCIsMCwiIiwwLCIiLCIiLCIiXSxbMCwxLDE5MiwiTWFpbFNlbmQiLDAsIiIsMCwiIiwiIiwiIl0sWzEwOSwxLDAsIiIsMTA5LCJLZXlJbkNvbXBvc2l0aW9uIiwyMjksIiIsIiIsIiJdLFsxMTEsMSwwLCIiLDExMSwiQUJOVF9DMiIsMTk0LCJWS19BQk5UX0MyIiwiIiwiIl0sWzkxLDEsMCwiIiw5MSwiT0VNXzgiLDIyMywiVktfT0VNXzgiLCIiLCIiXSxbMCwxLDAsIiIsMCwiIiwwLCJWS19LQU5BIiwiIiwiIl0sWzAsMSwwLCIiLDAsIiIsMCwiVktfSEFOR1VMIiwiIiwiIl0sWzAsMSwwLCIiLDAsIiIsMCwiVktfSlVOSkEiLCIiLCIiXSxbMCwxLDAsIiIsMCwiIiwwLCJWS19GSU5BTCIsIiIsIiJdLFswLDEsMCwiIiwwLCIiLDAsIlZLX0hBTkpBIiwiIiwiIl0sWzAsMSwwLCIiLDAsIiIsMCwiVktfS0FOSkkiLCIiLCIiXSxbMCwxLDAsIiIsMCwiIiwwLCJWS19DT05WRVJUIiwiIiwiIl0sWzAsMSwwLCIiLDAsIiIsMCwiVktfTk9OQ09OVkVSVCIsIiIsIiJdLFswLDEsMCwiIiwwLCIiLDAsIlZLX0FDQ0VQVCIsIiIsIiJdLFswLDEsMCwiIiwwLCIiLDAsIlZLX01PREVDSEFOR0UiLCIiLCIiXSxbMCwxLDAsIiIsMCwiIiwwLCJWS19TRUxFQ1QiLCIiLCIiXSxbMCwxLDAsIiIsMCwiIiwwLCJWS19QUklOVCIsIiIsIiJdLFswLDEsMCwiIiwwLCIiLDAsIlZLX0VYRUNVVEUiLCIiLCIiXSxbMCwxLDAsIiIsMCwiIiwwLCJWS19TTkFQU0hPVCIsIiIsIiJdLFswLDEsMCwiIiwwLCIiLDAsIlZLX0hFTFAiLCIiLCIiXSxbMCwxLDAsIiIsMCwiIiwwLCJWS19BUFBTIiwiIiwiIl0sWzAsMSwwLCIiLDAsIiIsMCwiVktfUFJPQ0VTU0tFWSIsIiIsIiJdLFswLDEsMCwiIiwwLCIiLDAsIlZLX1BBQ0tFVCIsIiIsIiJdLFswLDEsMCwiIiwwLCIiLDAsIlZLX0RCRV9TQkNTQ0hBUiIsIiIsIiJdLFswLDEsMCwiIiwwLCIiLDAsIlZLX0RCRV9EQkNTQ0hBUiIsIiIsIiJdLFswLDEsMCwiIiwwLCIiLDAsIlZLX0FUVE4iLCIiLCIiXSxbMCwxLDAsIiIsMCwiIiwwLCJWS19DUlNFTCIsIiIsIiJdLFswLDEsMCwiIiwwLCIiLDAsIlZLX0VYU0VMIiwiIiwiIl0sWzAsMSwwLCIiLDAsIiIsMCwiVktfRVJFT0YiLCIiLCIiXSxbMCwxLDAsIiIsMCwiIiwwLCJWS19QTEFZIiwiIiwiIl0sWzAsMSwwLCIiLDAsIiIsMCwiVktfWk9PTSIsIiIsIiJdLFswLDEsMCwiIiwwLCIiLDAsIlZLX05PTkFNRSIsIiIsIiJdLFswLDEsMCwiIiwwLCIiLDAsIlZLX1BBMSIsIiIsIiJdLFswLDEsMCwiIiwwLCIiLDAsIlZLX09FTV9DTEVBUiIsIiIsIiJdXSl7Y29uc3RbLFJyLERyLElyLFZyLE9yLEZyLFRyLEJyLFVyXT1QcjtpZih0W0RyXXx8KHRbRHJdPSEwLFZ0W0RyXT1JcixPdFtJcl09RHIsRnRbSXIudG9Mb3dlckNhc2UoKV09RHIsUnImJjAhPT0oVHRbRHJdPVZyKSYmMyE9PVZyJiY1IT09VnImJjQhPT1WciYmNiE9PVZyJiY1NyE9PVZyJiYoQnRbVnJdPURyKSksIWVbVnJdKXtpZihlW1ZyXT0hMCwhT3IpdGhyb3cgbmV3IEVycm9yKGBTdHJpbmcgcmVwcmVzZW50YXRpb24gbWlzc2luZyBmb3Iga2V5IGNvZGUgJHtWcn0gYXJvdW5kIHNjYW4gY29kZSBgK0lyKTtLdC5kZWZpbmUoVnIsT3IpLFB0LmRlZmluZShWcixCcnx8T3IpLFJ0LmRlZmluZShWcixVcnx8QnJ8fE9yKX1GciYmKER0W0ZyXT1WciksVHImJihJdFtUcl09VnIpfUJ0WzNdPTQ2fWNsYXNzIFV0IGV4dGVuZHMgcHtjb25zdHJ1Y3RvcihlLHQscixuKXtzdXBlcihlLHQscixuKSx0aGlzLnNlbGVjdGlvblN0YXJ0TGluZU51bWJlcj1lLHRoaXMuc2VsZWN0aW9uU3RhcnRDb2x1bW49dCx0aGlzLnBvc2l0aW9uTGluZU51bWJlcj1yLHRoaXMucG9zaXRpb25Db2x1bW49bn10b1N0cmluZygpe3JldHVybiJbIit0aGlzLnNlbGVjdGlvblN0YXJ0TGluZU51bWJlcisiLCIrdGhpcy5zZWxlY3Rpb25TdGFydENvbHVtbisiIC0+ICIrdGhpcy5wb3NpdGlvbkxpbmVOdW1iZXIrIiwiK3RoaXMucG9zaXRpb25Db2x1bW4rIl0ifWVxdWFsc1NlbGVjdGlvbihlKXtyZXR1cm4gVXQuc2VsZWN0aW9uc0VxdWFsKHRoaXMsZSl9c3RhdGljIHNlbGVjdGlvbnNFcXVhbChlLHQpe3JldHVybiBlLnNlbGVjdGlvblN0YXJ0TGluZU51bWJlcj09PXQuc2VsZWN0aW9uU3RhcnRMaW5lTnVtYmVyJiZlLnNlbGVjdGlvblN0YXJ0Q29sdW1uPT09dC5zZWxlY3Rpb25TdGFydENvbHVtbiYmZS5wb3NpdGlvbkxpbmVOdW1iZXI9PT10LnBvc2l0aW9uTGluZU51bWJlciYmZS5wb3NpdGlvbkNvbHVtbj09PXQucG9zaXRpb25Db2x1bW59Z2V0RGlyZWN0aW9uKCl7cmV0dXJuIHRoaXMuc2VsZWN0aW9uU3RhcnRMaW5lTnVtYmVyPT09dGhpcy5zdGFydExpbmVOdW1iZXImJnRoaXMuc2VsZWN0aW9uU3RhcnRDb2x1bW49PT10aGlzLnN0YXJ0Q29sdW1uPzA6MX1zZXRFbmRQb3NpdGlvbihlLHQpe3JldHVybiAwPT09dGhpcy5nZXREaXJlY3Rpb24oKT9uZXcgVXQodGhpcy5zdGFydExpbmVOdW1iZXIsdGhpcy5zdGFydENvbHVtbixlLHQpOm5ldyBVdChlLHQsdGhpcy5zdGFydExpbmVOdW1iZXIsdGhpcy5zdGFydENvbHVtbil9Z2V0UG9zaXRpb24oKXtyZXR1cm4gbmV3IG50KHRoaXMucG9zaXRpb25MaW5lTnVtYmVyLHRoaXMucG9zaXRpb25Db2x1bW4pfWdldFNlbGVjdGlvblN0YXJ0KCl7cmV0dXJuIG5ldyBudCh0aGlzLnNlbGVjdGlvblN0YXJ0TGluZU51bWJlcix0aGlzLnNlbGVjdGlvblN0YXJ0Q29sdW1uKX1zZXRTdGFydFBvc2l0aW9uKGUsdCl7cmV0dXJuIDA9PT10aGlzLmdldERpcmVjdGlvbigpP25ldyBVdChlLHQsdGhpcy5lbmRMaW5lTnVtYmVyLHRoaXMuZW5kQ29sdW1uKTpuZXcgVXQodGhpcy5lbmRMaW5lTnVtYmVyLHRoaXMuZW5kQ29sdW1uLGUsdCl9c3RhdGljIGZyb21Qb3NpdGlvbnMoZSx0PWUpe3JldHVybiBuZXcgVXQoZS5saW5lTnVtYmVyLGUuY29sdW1uLHQubGluZU51bWJlcix0LmNvbHVtbil9c3RhdGljIGZyb21SYW5nZShlLHQpe3JldHVybiAwPT09dD9uZXcgVXQoZS5zdGFydExpbmVOdW1iZXIsZS5zdGFydENvbHVtbixlLmVuZExpbmVOdW1iZXIsZS5lbmRDb2x1bW4pOm5ldyBVdChlLmVuZExpbmVOdW1iZXIsZS5lbmRDb2x1bW4sZS5zdGFydExpbmVOdW1iZXIsZS5zdGFydENvbHVtbil9c3RhdGljIGxpZnRTZWxlY3Rpb24oZSl7cmV0dXJuIG5ldyBVdChlLnNlbGVjdGlvblN0YXJ0TGluZU51bWJlcixlLnNlbGVjdGlvblN0YXJ0Q29sdW1uLGUucG9zaXRpb25MaW5lTnVtYmVyLGUucG9zaXRpb25Db2x1bW4pfXN0YXRpYyBzZWxlY3Rpb25zQXJyRXF1YWwocixuKXtpZihyJiYhbnx8IXImJm4pcmV0dXJuITE7aWYoIXImJiFuKXJldHVybiEwO2lmKHIubGVuZ3RoIT09bi5sZW5ndGgpcmV0dXJuITE7Zm9yKGxldCBlPTAsdD1yLmxlbmd0aDtlPHQ7ZSsrKWlmKCF0aGlzLnNlbGVjdGlvbnNFcXVhbChyW2VdLG5bZV0pKXJldHVybiExO3JldHVybiEwfXN0YXRpYyBpc0lTZWxlY3Rpb24oZSl7cmV0dXJuIGUmJiJudW1iZXIiPT10eXBlb2YgZS5zZWxlY3Rpb25TdGFydExpbmVOdW1iZXImJiJudW1iZXIiPT10eXBlb2YgZS5zZWxlY3Rpb25TdGFydENvbHVtbiYmIm51bWJlciI9PXR5cGVvZiBlLnBvc2l0aW9uTGluZU51bWJlciYmIm51bWJlciI9PXR5cGVvZiBlLnBvc2l0aW9uQ29sdW1ufXN0YXRpYyBjcmVhdGVXaXRoRGlyZWN0aW9uKGUsdCxyLG4saSl7cmV0dXJuIDA9PT1pP25ldyBVdChlLHQscixuKTpuZXcgVXQocixuLGUsdCl9fXZhciBxdCxIdCx6dCxXdCxqdCwkdCxHdCxKdCxRdCxZdCxadD1mdW5jdGlvbihlLG8scyxsKXtyZXR1cm4gbmV3KHM9c3x8UHJvbWlzZSkoZnVuY3Rpb24ocix0KXtmdW5jdGlvbiBuKGUpe3RyeXthKGwubmV4dChlKSl9Y2F0Y2goZSl7dChlKX19ZnVuY3Rpb24gaShlKXt0cnl7YShsLnRocm93KGUpKX1jYXRjaChlKXt0KGUpfX1mdW5jdGlvbiBhKGUpe3ZhciB0O2UuZG9uZT9yKGUudmFsdWUpOigodD1lLnZhbHVlKWluc3RhbmNlb2Ygcz90Om5ldyBzKGZ1bmN0aW9uKGUpe2UodCl9KSkudGhlbihuLGkpfWEoKGw9bC5hcHBseShlLG98fFtdKSkubmV4dCgpKX0pfTtjbGFzcyBYdCBleHRlbmRzIEx7Y29uc3RydWN0b3IoZSx0LHIpe3N1cGVyKCksdGhpcy5fcmVnaXN0cnk9ZSx0aGlzLl9sYW5ndWFnZUlkPXQsdGhpcy5fZmFjdG9yeT1yLHRoaXMuX2lzRGlzcG9zZWQ9ITEsdGhpcy5fcmVzb2x2ZVByb21pc2U9bnVsbCx0aGlzLl9pc1Jlc29sdmVkPSExfWdldCBpc1Jlc29sdmVkKCl7cmV0dXJuIHRoaXMuX2lzUmVzb2x2ZWR9ZGlzcG9zZSgpe3RoaXMuX2lzRGlzcG9zZWQ9ITAsc3VwZXIuZGlzcG9zZSgpfXJlc29sdmUoKXtyZXR1cm4gWnQodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe3JldHVybiB0aGlzLl9yZXNvbHZlUHJvbWlzZXx8KHRoaXMuX3Jlc29sdmVQcm9taXNlPXRoaXMuX2NyZWF0ZSgpKSx0aGlzLl9yZXNvbHZlUHJvbWlzZX0pfV9jcmVhdGUoKXtyZXR1cm4gWnQodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe3ZhciBlPXlpZWxkIFByb21pc2UucmVzb2x2ZSh0aGlzLl9mYWN0b3J5LmNyZWF0ZVRva2VuaXphdGlvblN1cHBvcnQoKSk7dGhpcy5faXNSZXNvbHZlZD0hMCxlJiYhdGhpcy5faXNEaXNwb3NlZCYmdGhpcy5fcmVnaXN0ZXIodGhpcy5fcmVnaXN0cnkucmVnaXN0ZXIodGhpcy5fbGFuZ3VhZ2VJZCxlKSl9KX19Y2xhc3MgaXtjb25zdHJ1Y3RvcihlLHQscil7dGhpcy5pZD1lLHRoaXMuZGVmaW5pdGlvbj10LHRoaXMuZGVzY3JpcHRpb249cixpLl9hbGxDb2RpY29ucy5wdXNoKHRoaXMpfWdldCBjbGFzc05hbWVzKCl7cmV0dXJuImNvZGljb24gY29kaWNvbi0iK3RoaXMuaWR9Z2V0IGNsYXNzTmFtZXNBcnJheSgpe3JldHVyblsiY29kaWNvbiIsImNvZGljb24tIit0aGlzLmlkXX1nZXQgY3NzU2VsZWN0b3IoKXtyZXR1cm4iLmNvZGljb24uY29kaWNvbi0iK3RoaXMuaWR9c3RhdGljIGdldEFsbCgpe3JldHVybiBpLl9hbGxDb2RpY29uc319aS5fYWxsQ29kaWNvbnM9W10saS5hZGQ9bmV3IGkoImFkZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2MCJ9KSxpLnBsdXM9bmV3IGkoInBsdXMiLGkuYWRkLmRlZmluaXRpb24pLGkuZ2lzdE5ldz1uZXcgaSgiZ2lzdC1uZXciLGkuYWRkLmRlZmluaXRpb24pLGkucmVwb0NyZWF0ZT1uZXcgaSgicmVwby1jcmVhdGUiLGkuYWRkLmRlZmluaXRpb24pLGkubGlnaHRidWxiPW5ldyBpKCJsaWdodGJ1bGIiLHtmb250Q2hhcmFjdGVyOiJcXGVhNjEifSksaS5saWdodEJ1bGI9bmV3IGkoImxpZ2h0LWJ1bGIiLHtmb250Q2hhcmFjdGVyOiJcXGVhNjEifSksaS5yZXBvPW5ldyBpKCJyZXBvIix7Zm9udENoYXJhY3RlcjoiXFxlYTYyIn0pLGkucmVwb0RlbGV0ZT1uZXcgaSgicmVwby1kZWxldGUiLHtmb250Q2hhcmFjdGVyOiJcXGVhNjIifSksaS5naXN0Rm9yaz1uZXcgaSgiZ2lzdC1mb3JrIix7Zm9udENoYXJhY3RlcjoiXFxlYTYzIn0pLGkucmVwb0ZvcmtlZD1uZXcgaSgicmVwby1mb3JrZWQiLHtmb250Q2hhcmFjdGVyOiJcXGVhNjMifSksaS5naXRQdWxsUmVxdWVzdD1uZXcgaSgiZ2l0LXB1bGwtcmVxdWVzdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2NCJ9KSxpLmdpdFB1bGxSZXF1ZXN0QWJhbmRvbmVkPW5ldyBpKCJnaXQtcHVsbC1yZXF1ZXN0LWFiYW5kb25lZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2NCJ9KSxpLnJlY29yZEtleXM9bmV3IGkoInJlY29yZC1rZXlzIix7Zm9udENoYXJhY3RlcjoiXFxlYTY1In0pLGkua2V5Ym9hcmQ9bmV3IGkoImtleWJvYXJkIix7Zm9udENoYXJhY3RlcjoiXFxlYTY1In0pLGkudGFnPW5ldyBpKCJ0YWciLHtmb250Q2hhcmFjdGVyOiJcXGVhNjYifSksaS50YWdBZGQ9bmV3IGkoInRhZy1hZGQiLHtmb250Q2hhcmFjdGVyOiJcXGVhNjYifSksaS50YWdSZW1vdmU9bmV3IGkoInRhZy1yZW1vdmUiLHtmb250Q2hhcmFjdGVyOiJcXGVhNjYifSksaS5wZXJzb249bmV3IGkoInBlcnNvbiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2NyJ9KSxpLnBlcnNvbkZvbGxvdz1uZXcgaSgicGVyc29uLWZvbGxvdyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2NyJ9KSxpLnBlcnNvbk91dGxpbmU9bmV3IGkoInBlcnNvbi1vdXRsaW5lIix7Zm9udENoYXJhY3RlcjoiXFxlYTY3In0pLGkucGVyc29uRmlsbGVkPW5ldyBpKCJwZXJzb24tZmlsbGVkIix7Zm9udENoYXJhY3RlcjoiXFxlYTY3In0pLGkuZ2l0QnJhbmNoPW5ldyBpKCJnaXQtYnJhbmNoIix7Zm9udENoYXJhY3RlcjoiXFxlYTY4In0pLGkuZ2l0QnJhbmNoQ3JlYXRlPW5ldyBpKCJnaXQtYnJhbmNoLWNyZWF0ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2OCJ9KSxpLmdpdEJyYW5jaERlbGV0ZT1uZXcgaSgiZ2l0LWJyYW5jaC1kZWxldGUiLHtmb250Q2hhcmFjdGVyOiJcXGVhNjgifSksaS5zb3VyY2VDb250cm9sPW5ldyBpKCJzb3VyY2UtY29udHJvbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2OCJ9KSxpLm1pcnJvcj1uZXcgaSgibWlycm9yIix7Zm9udENoYXJhY3RlcjoiXFxlYTY5In0pLGkubWlycm9yUHVibGljPW5ldyBpKCJtaXJyb3ItcHVibGljIix7Zm9udENoYXJhY3RlcjoiXFxlYTY5In0pLGkuc3Rhcj1uZXcgaSgic3RhciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2YSJ9KSxpLnN0YXJBZGQ9bmV3IGkoInN0YXItYWRkIix7Zm9udENoYXJhY3RlcjoiXFxlYTZhIn0pLGkuc3RhckRlbGV0ZT1uZXcgaSgic3Rhci1kZWxldGUiLHtmb250Q2hhcmFjdGVyOiJcXGVhNmEifSksaS5zdGFyRW1wdHk9bmV3IGkoInN0YXItZW1wdHkiLHtmb250Q2hhcmFjdGVyOiJcXGVhNmEifSksaS5jb21tZW50PW5ldyBpKCJjb21tZW50Iix7Zm9udENoYXJhY3RlcjoiXFxlYTZiIn0pLGkuY29tbWVudEFkZD1uZXcgaSgiY29tbWVudC1hZGQiLHtmb250Q2hhcmFjdGVyOiJcXGVhNmIifSksaS5hbGVydD1uZXcgaSgiYWxlcnQiLHtmb250Q2hhcmFjdGVyOiJcXGVhNmMifSksaS53YXJuaW5nPW5ldyBpKCJ3YXJuaW5nIix7Zm9udENoYXJhY3RlcjoiXFxlYTZjIn0pLGkuc2VhcmNoPW5ldyBpKCJzZWFyY2giLHtmb250Q2hhcmFjdGVyOiJcXGVhNmQifSksaS5zZWFyY2hTYXZlPW5ldyBpKCJzZWFyY2gtc2F2ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2ZCJ9KSxpLmxvZ091dD1uZXcgaSgibG9nLW91dCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2ZSJ9KSxpLnNpZ25PdXQ9bmV3IGkoInNpZ24tb3V0Iix7Zm9udENoYXJhY3RlcjoiXFxlYTZlIn0pLGkubG9nSW49bmV3IGkoImxvZy1pbiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2ZiJ9KSxpLnNpZ25Jbj1uZXcgaSgic2lnbi1pbiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2ZiJ9KSxpLmV5ZT1uZXcgaSgiZXllIix7Zm9udENoYXJhY3RlcjoiXFxlYTcwIn0pLGkuZXllVW53YXRjaD1uZXcgaSgiZXllLXVud2F0Y2giLHtmb250Q2hhcmFjdGVyOiJcXGVhNzAifSksaS5leWVXYXRjaD1uZXcgaSgiZXllLXdhdGNoIix7Zm9udENoYXJhY3RlcjoiXFxlYTcwIn0pLGkuY2lyY2xlRmlsbGVkPW5ldyBpKCJjaXJjbGUtZmlsbGVkIix7Zm9udENoYXJhY3RlcjoiXFxlYTcxIn0pLGkucHJpbWl0aXZlRG90PW5ldyBpKCJwcmltaXRpdmUtZG90Iix7Zm9udENoYXJhY3RlcjoiXFxlYTcxIn0pLGkuY2xvc2VEaXJ0eT1uZXcgaSgiY2xvc2UtZGlydHkiLHtmb250Q2hhcmFjdGVyOiJcXGVhNzEifSksaS5kZWJ1Z0JyZWFrcG9pbnQ9bmV3IGkoImRlYnVnLWJyZWFrcG9pbnQiLHtmb250Q2hhcmFjdGVyOiJcXGVhNzEifSksaS5kZWJ1Z0JyZWFrcG9pbnREaXNhYmxlZD1uZXcgaSgiZGVidWctYnJlYWtwb2ludC1kaXNhYmxlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3MSJ9KSxpLmRlYnVnSGludD1uZXcgaSgiZGVidWctaGludCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3MSJ9KSxpLnByaW1pdGl2ZVNxdWFyZT1uZXcgaSgicHJpbWl0aXZlLXNxdWFyZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3MiJ9KSxpLmVkaXQ9bmV3IGkoImVkaXQiLHtmb250Q2hhcmFjdGVyOiJcXGVhNzMifSksaS5wZW5jaWw9bmV3IGkoInBlbmNpbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3MyJ9KSxpLmluZm89bmV3IGkoImluZm8iLHtmb250Q2hhcmFjdGVyOiJcXGVhNzQifSksaS5pc3N1ZU9wZW5lZD1uZXcgaSgiaXNzdWUtb3BlbmVkIix7Zm9udENoYXJhY3RlcjoiXFxlYTc0In0pLGkuZ2lzdFByaXZhdGU9bmV3IGkoImdpc3QtcHJpdmF0ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3NSJ9KSxpLmdpdEZvcmtQcml2YXRlPW5ldyBpKCJnaXQtZm9yay1wcml2YXRlIix7Zm9udENoYXJhY3RlcjoiXFxlYTc1In0pLGkubG9jaz1uZXcgaSgibG9jayIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3NSJ9KSxpLm1pcnJvclByaXZhdGU9bmV3IGkoIm1pcnJvci1wcml2YXRlIix7Zm9udENoYXJhY3RlcjoiXFxlYTc1In0pLGkuY2xvc2U9bmV3IGkoImNsb3NlIix7Zm9udENoYXJhY3RlcjoiXFxlYTc2In0pLGkucmVtb3ZlQ2xvc2U9bmV3IGkoInJlbW92ZS1jbG9zZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3NiJ9KSxpLng9bmV3IGkoIngiLHtmb250Q2hhcmFjdGVyOiJcXGVhNzYifSksaS5yZXBvU3luYz1uZXcgaSgicmVwby1zeW5jIix7Zm9udENoYXJhY3RlcjoiXFxlYTc3In0pLGkuc3luYz1uZXcgaSgic3luYyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3NyJ9KSxpLmNsb25lPW5ldyBpKCJjbG9uZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3OCJ9KSxpLmRlc2t0b3BEb3dubG9hZD1uZXcgaSgiZGVza3RvcC1kb3dubG9hZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3OCJ9KSxpLmJlYWtlcj1uZXcgaSgiYmVha2VyIix7Zm9udENoYXJhY3RlcjoiXFxlYTc5In0pLGkubWljcm9zY29wZT1uZXcgaSgibWljcm9zY29wZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3OSJ9KSxpLnZtPW5ldyBpKCJ2bSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3YSJ9KSxpLmRldmljZURlc2t0b3A9bmV3IGkoImRldmljZS1kZXNrdG9wIix7Zm9udENoYXJhY3RlcjoiXFxlYTdhIn0pLGkuZmlsZT1uZXcgaSgiZmlsZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3YiJ9KSxpLmZpbGVUZXh0PW5ldyBpKCJmaWxlLXRleHQiLHtmb250Q2hhcmFjdGVyOiJcXGVhN2IifSksaS5tb3JlPW5ldyBpKCJtb3JlIix7Zm9udENoYXJhY3RlcjoiXFxlYTdjIn0pLGkuZWxsaXBzaXM9bmV3IGkoImVsbGlwc2lzIix7Zm9udENoYXJhY3RlcjoiXFxlYTdjIn0pLGkua2ViYWJIb3Jpem9udGFsPW5ldyBpKCJrZWJhYi1ob3Jpem9udGFsIix7Zm9udENoYXJhY3RlcjoiXFxlYTdjIn0pLGkubWFpbFJlcGx5PW5ldyBpKCJtYWlsLXJlcGx5Iix7Zm9udENoYXJhY3RlcjoiXFxlYTdkIn0pLGkucmVwbHk9bmV3IGkoInJlcGx5Iix7Zm9udENoYXJhY3RlcjoiXFxlYTdkIn0pLGkub3JnYW5pemF0aW9uPW5ldyBpKCJvcmdhbml6YXRpb24iLHtmb250Q2hhcmFjdGVyOiJcXGVhN2UifSksaS5vcmdhbml6YXRpb25GaWxsZWQ9bmV3IGkoIm9yZ2FuaXphdGlvbi1maWxsZWQiLHtmb250Q2hhcmFjdGVyOiJcXGVhN2UifSksaS5vcmdhbml6YXRpb25PdXRsaW5lPW5ldyBpKCJvcmdhbml6YXRpb24tb3V0bGluZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3ZSJ9KSxpLm5ld0ZpbGU9bmV3IGkoIm5ldy1maWxlIix7Zm9udENoYXJhY3RlcjoiXFxlYTdmIn0pLGkuZmlsZUFkZD1uZXcgaSgiZmlsZS1hZGQiLHtmb250Q2hhcmFjdGVyOiJcXGVhN2YifSksaS5uZXdGb2xkZXI9bmV3IGkoIm5ldy1mb2xkZXIiLHtmb250Q2hhcmFjdGVyOiJcXGVhODAifSksaS5maWxlRGlyZWN0b3J5Q3JlYXRlPW5ldyBpKCJmaWxlLWRpcmVjdG9yeS1jcmVhdGUiLHtmb250Q2hhcmFjdGVyOiJcXGVhODAifSksaS50cmFzaD1uZXcgaSgidHJhc2giLHtmb250Q2hhcmFjdGVyOiJcXGVhODEifSksaS50cmFzaGNhbj1uZXcgaSgidHJhc2hjYW4iLHtmb250Q2hhcmFjdGVyOiJcXGVhODEifSksaS5oaXN0b3J5PW5ldyBpKCJoaXN0b3J5Iix7Zm9udENoYXJhY3RlcjoiXFxlYTgyIn0pLGkuY2xvY2s9bmV3IGkoImNsb2NrIix7Zm9udENoYXJhY3RlcjoiXFxlYTgyIn0pLGkuZm9sZGVyPW5ldyBpKCJmb2xkZXIiLHtmb250Q2hhcmFjdGVyOiJcXGVhODMifSksaS5maWxlRGlyZWN0b3J5PW5ldyBpKCJmaWxlLWRpcmVjdG9yeSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4MyJ9KSxpLnN5bWJvbEZvbGRlcj1uZXcgaSgic3ltYm9sLWZvbGRlciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4MyJ9KSxpLmxvZ29HaXRodWI9bmV3IGkoImxvZ28tZ2l0aHViIix7Zm9udENoYXJhY3RlcjoiXFxlYTg0In0pLGkubWFya0dpdGh1Yj1uZXcgaSgibWFyay1naXRodWIiLHtmb250Q2hhcmFjdGVyOiJcXGVhODQifSksaS5naXRodWI9bmV3IGkoImdpdGh1YiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4NCJ9KSxpLnRlcm1pbmFsPW5ldyBpKCJ0ZXJtaW5hbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4NSJ9KSxpLmNvbnNvbGU9bmV3IGkoImNvbnNvbGUiLHtmb250Q2hhcmFjdGVyOiJcXGVhODUifSksaS5yZXBsPW5ldyBpKCJyZXBsIix7Zm9udENoYXJhY3RlcjoiXFxlYTg1In0pLGkuemFwPW5ldyBpKCJ6YXAiLHtmb250Q2hhcmFjdGVyOiJcXGVhODYifSksaS5zeW1ib2xFdmVudD1uZXcgaSgic3ltYm9sLWV2ZW50Iix7Zm9udENoYXJhY3RlcjoiXFxlYTg2In0pLGkuZXJyb3I9bmV3IGkoImVycm9yIix7Zm9udENoYXJhY3RlcjoiXFxlYTg3In0pLGkuc3RvcD1uZXcgaSgic3RvcCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4NyJ9KSxpLnZhcmlhYmxlPW5ldyBpKCJ2YXJpYWJsZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4OCJ9KSxpLnN5bWJvbFZhcmlhYmxlPW5ldyBpKCJzeW1ib2wtdmFyaWFibGUiLHtmb250Q2hhcmFjdGVyOiJcXGVhODgifSksaS5hcnJheT1uZXcgaSgiYXJyYXkiLHtmb250Q2hhcmFjdGVyOiJcXGVhOGEifSksaS5zeW1ib2xBcnJheT1uZXcgaSgic3ltYm9sLWFycmF5Iix7Zm9udENoYXJhY3RlcjoiXFxlYThhIn0pLGkuc3ltYm9sTW9kdWxlPW5ldyBpKCJzeW1ib2wtbW9kdWxlIix7Zm9udENoYXJhY3RlcjoiXFxlYThiIn0pLGkuc3ltYm9sUGFja2FnZT1uZXcgaSgic3ltYm9sLXBhY2thZ2UiLHtmb250Q2hhcmFjdGVyOiJcXGVhOGIifSksaS5zeW1ib2xOYW1lc3BhY2U9bmV3IGkoInN5bWJvbC1uYW1lc3BhY2UiLHtmb250Q2hhcmFjdGVyOiJcXGVhOGIifSksaS5zeW1ib2xPYmplY3Q9bmV3IGkoInN5bWJvbC1vYmplY3QiLHtmb250Q2hhcmFjdGVyOiJcXGVhOGIifSksaS5zeW1ib2xNZXRob2Q9bmV3IGkoInN5bWJvbC1tZXRob2QiLHtmb250Q2hhcmFjdGVyOiJcXGVhOGMifSksaS5zeW1ib2xGdW5jdGlvbj1uZXcgaSgic3ltYm9sLWZ1bmN0aW9uIix7Zm9udENoYXJhY3RlcjoiXFxlYThjIn0pLGkuc3ltYm9sQ29uc3RydWN0b3I9bmV3IGkoInN5bWJvbC1jb25zdHJ1Y3RvciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4YyJ9KSxpLnN5bWJvbEJvb2xlYW49bmV3IGkoInN5bWJvbC1ib29sZWFuIix7Zm9udENoYXJhY3RlcjoiXFxlYThmIn0pLGkuc3ltYm9sTnVsbD1uZXcgaSgic3ltYm9sLW51bGwiLHtmb250Q2hhcmFjdGVyOiJcXGVhOGYifSksaS5zeW1ib2xOdW1lcmljPW5ldyBpKCJzeW1ib2wtbnVtZXJpYyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE5MCJ9KSxpLnN5bWJvbE51bWJlcj1uZXcgaSgic3ltYm9sLW51bWJlciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE5MCJ9KSxpLnN5bWJvbFN0cnVjdHVyZT1uZXcgaSgic3ltYm9sLXN0cnVjdHVyZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE5MSJ9KSxpLnN5bWJvbFN0cnVjdD1uZXcgaSgic3ltYm9sLXN0cnVjdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE5MSJ9KSxpLnN5bWJvbFBhcmFtZXRlcj1uZXcgaSgic3ltYm9sLXBhcmFtZXRlciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE5MiJ9KSxpLnN5bWJvbFR5cGVQYXJhbWV0ZXI9bmV3IGkoInN5bWJvbC10eXBlLXBhcmFtZXRlciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE5MiJ9KSxpLnN5bWJvbEtleT1uZXcgaSgic3ltYm9sLWtleSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE5MyJ9KSxpLnN5bWJvbFRleHQ9bmV3IGkoInN5bWJvbC10ZXh0Iix7Zm9udENoYXJhY3RlcjoiXFxlYTkzIn0pLGkuc3ltYm9sUmVmZXJlbmNlPW5ldyBpKCJzeW1ib2wtcmVmZXJlbmNlIix7Zm9udENoYXJhY3RlcjoiXFxlYTk0In0pLGkuZ29Ub0ZpbGU9bmV3IGkoImdvLXRvLWZpbGUiLHtmb250Q2hhcmFjdGVyOiJcXGVhOTQifSksaS5zeW1ib2xFbnVtPW5ldyBpKCJzeW1ib2wtZW51bSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE5NSJ9KSxpLnN5bWJvbFZhbHVlPW5ldyBpKCJzeW1ib2wtdmFsdWUiLHtmb250Q2hhcmFjdGVyOiJcXGVhOTUifSksaS5zeW1ib2xSdWxlcj1uZXcgaSgic3ltYm9sLXJ1bGVyIix7Zm9udENoYXJhY3RlcjoiXFxlYTk2In0pLGkuc3ltYm9sVW5pdD1uZXcgaSgic3ltYm9sLXVuaXQiLHtmb250Q2hhcmFjdGVyOiJcXGVhOTYifSksaS5hY3RpdmF0ZUJyZWFrcG9pbnRzPW5ldyBpKCJhY3RpdmF0ZS1icmVha3BvaW50cyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE5NyJ9KSxpLmFyY2hpdmU9bmV3IGkoImFyY2hpdmUiLHtmb250Q2hhcmFjdGVyOiJcXGVhOTgifSksaS5hcnJvd0JvdGg9bmV3IGkoImFycm93LWJvdGgiLHtmb250Q2hhcmFjdGVyOiJcXGVhOTkifSksaS5hcnJvd0Rvd249bmV3IGkoImFycm93LWRvd24iLHtmb250Q2hhcmFjdGVyOiJcXGVhOWEifSksaS5hcnJvd0xlZnQ9bmV3IGkoImFycm93LWxlZnQiLHtmb250Q2hhcmFjdGVyOiJcXGVhOWIifSksaS5hcnJvd1JpZ2h0PW5ldyBpKCJhcnJvdy1yaWdodCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE5YyJ9KSxpLmFycm93U21hbGxEb3duPW5ldyBpKCJhcnJvdy1zbWFsbC1kb3duIix7Zm9udENoYXJhY3RlcjoiXFxlYTlkIn0pLGkuYXJyb3dTbWFsbExlZnQ9bmV3IGkoImFycm93LXNtYWxsLWxlZnQiLHtmb250Q2hhcmFjdGVyOiJcXGVhOWUifSksaS5hcnJvd1NtYWxsUmlnaHQ9bmV3IGkoImFycm93LXNtYWxsLXJpZ2h0Iix7Zm9udENoYXJhY3RlcjoiXFxlYTlmIn0pLGkuYXJyb3dTbWFsbFVwPW5ldyBpKCJhcnJvdy1zbWFsbC11cCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFhMCJ9KSxpLmFycm93VXA9bmV3IGkoImFycm93LXVwIix7Zm9udENoYXJhY3RlcjoiXFxlYWExIn0pLGkuYmVsbD1uZXcgaSgiYmVsbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFhMiJ9KSxpLmJvbGQ9bmV3IGkoImJvbGQiLHtmb250Q2hhcmFjdGVyOiJcXGVhYTMifSksaS5ib29rPW5ldyBpKCJib29rIix7Zm9udENoYXJhY3RlcjoiXFxlYWE0In0pLGkuYm9va21hcms9bmV3IGkoImJvb2ttYXJrIix7Zm9udENoYXJhY3RlcjoiXFxlYWE1In0pLGkuZGVidWdCcmVha3BvaW50Q29uZGl0aW9uYWxVbnZlcmlmaWVkPW5ldyBpKCJkZWJ1Zy1icmVha3BvaW50LWNvbmRpdGlvbmFsLXVudmVyaWZpZWQiLHtmb250Q2hhcmFjdGVyOiJcXGVhYTYifSksaS5kZWJ1Z0JyZWFrcG9pbnRDb25kaXRpb25hbD1uZXcgaSgiZGVidWctYnJlYWtwb2ludC1jb25kaXRpb25hbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFhNyJ9KSxpLmRlYnVnQnJlYWtwb2ludENvbmRpdGlvbmFsRGlzYWJsZWQ9bmV3IGkoImRlYnVnLWJyZWFrcG9pbnQtY29uZGl0aW9uYWwtZGlzYWJsZWQiLHtmb250Q2hhcmFjdGVyOiJcXGVhYTcifSksaS5kZWJ1Z0JyZWFrcG9pbnREYXRhVW52ZXJpZmllZD1uZXcgaSgiZGVidWctYnJlYWtwb2ludC1kYXRhLXVudmVyaWZpZWQiLHtmb250Q2hhcmFjdGVyOiJcXGVhYTgifSksaS5kZWJ1Z0JyZWFrcG9pbnREYXRhPW5ldyBpKCJkZWJ1Zy1icmVha3BvaW50LWRhdGEiLHtmb250Q2hhcmFjdGVyOiJcXGVhYTkifSksaS5kZWJ1Z0JyZWFrcG9pbnREYXRhRGlzYWJsZWQ9bmV3IGkoImRlYnVnLWJyZWFrcG9pbnQtZGF0YS1kaXNhYmxlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFhOSJ9KSxpLmRlYnVnQnJlYWtwb2ludExvZ1VudmVyaWZpZWQ9bmV3IGkoImRlYnVnLWJyZWFrcG9pbnQtbG9nLXVudmVyaWZpZWQiLHtmb250Q2hhcmFjdGVyOiJcXGVhYWEifSksaS5kZWJ1Z0JyZWFrcG9pbnRMb2c9bmV3IGkoImRlYnVnLWJyZWFrcG9pbnQtbG9nIix7Zm9udENoYXJhY3RlcjoiXFxlYWFiIn0pLGkuZGVidWdCcmVha3BvaW50TG9nRGlzYWJsZWQ9bmV3IGkoImRlYnVnLWJyZWFrcG9pbnQtbG9nLWRpc2FibGVkIix7Zm9udENoYXJhY3RlcjoiXFxlYWFiIn0pLGkuYnJpZWZjYXNlPW5ldyBpKCJicmllZmNhc2UiLHtmb250Q2hhcmFjdGVyOiJcXGVhYWMifSksaS5icm9hZGNhc3Q9bmV3IGkoImJyb2FkY2FzdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFhZCJ9KSxpLmJyb3dzZXI9bmV3IGkoImJyb3dzZXIiLHtmb250Q2hhcmFjdGVyOiJcXGVhYWUifSksaS5idWc9bmV3IGkoImJ1ZyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFhZiJ9KSxpLmNhbGVuZGFyPW5ldyBpKCJjYWxlbmRhciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFiMCJ9KSxpLmNhc2VTZW5zaXRpdmU9bmV3IGkoImNhc2Utc2Vuc2l0aXZlIix7Zm9udENoYXJhY3RlcjoiXFxlYWIxIn0pLGkuY2hlY2s9bmV3IGkoImNoZWNrIix7Zm9udENoYXJhY3RlcjoiXFxlYWIyIn0pLGkuY2hlY2tsaXN0PW5ldyBpKCJjaGVja2xpc3QiLHtmb250Q2hhcmFjdGVyOiJcXGVhYjMifSksaS5jaGV2cm9uRG93bj1uZXcgaSgiY2hldnJvbi1kb3duIix7Zm9udENoYXJhY3RlcjoiXFxlYWI0In0pLGkuZHJvcERvd25CdXR0b249bmV3IGkoImRyb3AtZG93bi1idXR0b24iLGkuY2hldnJvbkRvd24uZGVmaW5pdGlvbiksaS5jaGV2cm9uTGVmdD1uZXcgaSgiY2hldnJvbi1sZWZ0Iix7Zm9udENoYXJhY3RlcjoiXFxlYWI1In0pLGkuY2hldnJvblJpZ2h0PW5ldyBpKCJjaGV2cm9uLXJpZ2h0Iix7Zm9udENoYXJhY3RlcjoiXFxlYWI2In0pLGkuY2hldnJvblVwPW5ldyBpKCJjaGV2cm9uLXVwIix7Zm9udENoYXJhY3RlcjoiXFxlYWI3In0pLGkuY2hyb21lQ2xvc2U9bmV3IGkoImNocm9tZS1jbG9zZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFiOCJ9KSxpLmNocm9tZU1heGltaXplPW5ldyBpKCJjaHJvbWUtbWF4aW1pemUiLHtmb250Q2hhcmFjdGVyOiJcXGVhYjkifSksaS5jaHJvbWVNaW5pbWl6ZT1uZXcgaSgiY2hyb21lLW1pbmltaXplIix7Zm9udENoYXJhY3RlcjoiXFxlYWJhIn0pLGkuY2hyb21lUmVzdG9yZT1uZXcgaSgiY2hyb21lLXJlc3RvcmUiLHtmb250Q2hhcmFjdGVyOiJcXGVhYmIifSksaS5jaXJjbGVPdXRsaW5lPW5ldyBpKCJjaXJjbGUtb3V0bGluZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFiYyJ9KSxpLmRlYnVnQnJlYWtwb2ludFVudmVyaWZpZWQ9bmV3IGkoImRlYnVnLWJyZWFrcG9pbnQtdW52ZXJpZmllZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFiYyJ9KSxpLmNpcmNsZVNsYXNoPW5ldyBpKCJjaXJjbGUtc2xhc2giLHtmb250Q2hhcmFjdGVyOiJcXGVhYmQifSksaS5jaXJjdWl0Qm9hcmQ9bmV3IGkoImNpcmN1aXQtYm9hcmQiLHtmb250Q2hhcmFjdGVyOiJcXGVhYmUifSksaS5jbGVhckFsbD1uZXcgaSgiY2xlYXItYWxsIix7Zm9udENoYXJhY3RlcjoiXFxlYWJmIn0pLGkuY2xpcHB5PW5ldyBpKCJjbGlwcHkiLHtmb250Q2hhcmFjdGVyOiJcXGVhYzAifSksaS5jbG9zZUFsbD1uZXcgaSgiY2xvc2UtYWxsIix7Zm9udENoYXJhY3RlcjoiXFxlYWMxIn0pLGkuY2xvdWREb3dubG9hZD1uZXcgaSgiY2xvdWQtZG93bmxvYWQiLHtmb250Q2hhcmFjdGVyOiJcXGVhYzIifSksaS5jbG91ZFVwbG9hZD1uZXcgaSgiY2xvdWQtdXBsb2FkIix7Zm9udENoYXJhY3RlcjoiXFxlYWMzIn0pLGkuY29kZT1uZXcgaSgiY29kZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFjNCJ9KSxpLmNvbGxhcHNlQWxsPW5ldyBpKCJjb2xsYXBzZS1hbGwiLHtmb250Q2hhcmFjdGVyOiJcXGVhYzUifSksaS5jb2xvck1vZGU9bmV3IGkoImNvbG9yLW1vZGUiLHtmb250Q2hhcmFjdGVyOiJcXGVhYzYifSksaS5jb21tZW50RGlzY3Vzc2lvbj1uZXcgaSgiY29tbWVudC1kaXNjdXNzaW9uIix7Zm9udENoYXJhY3RlcjoiXFxlYWM3In0pLGkuY29tcGFyZUNoYW5nZXM9bmV3IGkoImNvbXBhcmUtY2hhbmdlcyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFmZCJ9KSxpLmNyZWRpdENhcmQ9bmV3IGkoImNyZWRpdC1jYXJkIix7Zm9udENoYXJhY3RlcjoiXFxlYWM5In0pLGkuZGFzaD1uZXcgaSgiZGFzaCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFjYyJ9KSxpLmRhc2hib2FyZD1uZXcgaSgiZGFzaGJvYXJkIix7Zm9udENoYXJhY3RlcjoiXFxlYWNkIn0pLGkuZGF0YWJhc2U9bmV3IGkoImRhdGFiYXNlIix7Zm9udENoYXJhY3RlcjoiXFxlYWNlIn0pLGkuZGVidWdDb250aW51ZT1uZXcgaSgiZGVidWctY29udGludWUiLHtmb250Q2hhcmFjdGVyOiJcXGVhY2YifSksaS5kZWJ1Z0Rpc2Nvbm5lY3Q9bmV3IGkoImRlYnVnLWRpc2Nvbm5lY3QiLHtmb250Q2hhcmFjdGVyOiJcXGVhZDAifSksaS5kZWJ1Z1BhdXNlPW5ldyBpKCJkZWJ1Zy1wYXVzZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFkMSJ9KSxpLmRlYnVnUmVzdGFydD1uZXcgaSgiZGVidWctcmVzdGFydCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFkMiJ9KSxpLmRlYnVnU3RhcnQ9bmV3IGkoImRlYnVnLXN0YXJ0Iix7Zm9udENoYXJhY3RlcjoiXFxlYWQzIn0pLGkuZGVidWdTdGVwSW50bz1uZXcgaSgiZGVidWctc3RlcC1pbnRvIix7Zm9udENoYXJhY3RlcjoiXFxlYWQ0In0pLGkuZGVidWdTdGVwT3V0PW5ldyBpKCJkZWJ1Zy1zdGVwLW91dCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFkNSJ9KSxpLmRlYnVnU3RlcE92ZXI9bmV3IGkoImRlYnVnLXN0ZXAtb3ZlciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFkNiJ9KSxpLmRlYnVnU3RvcD1uZXcgaSgiZGVidWctc3RvcCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFkNyJ9KSxpLmRlYnVnPW5ldyBpKCJkZWJ1ZyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFkOCJ9KSxpLmRldmljZUNhbWVyYVZpZGVvPW5ldyBpKCJkZXZpY2UtY2FtZXJhLXZpZGVvIix7Zm9udENoYXJhY3RlcjoiXFxlYWQ5In0pLGkuZGV2aWNlQ2FtZXJhPW5ldyBpKCJkZXZpY2UtY2FtZXJhIix7Zm9udENoYXJhY3RlcjoiXFxlYWRhIn0pLGkuZGV2aWNlTW9iaWxlPW5ldyBpKCJkZXZpY2UtbW9iaWxlIix7Zm9udENoYXJhY3RlcjoiXFxlYWRiIn0pLGkuZGlmZkFkZGVkPW5ldyBpKCJkaWZmLWFkZGVkIix7Zm9udENoYXJhY3RlcjoiXFxlYWRjIn0pLGkuZGlmZklnbm9yZWQ9bmV3IGkoImRpZmYtaWdub3JlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFkZCJ9KSxpLmRpZmZNb2RpZmllZD1uZXcgaSgiZGlmZi1tb2RpZmllZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFkZSJ9KSxpLmRpZmZSZW1vdmVkPW5ldyBpKCJkaWZmLXJlbW92ZWQiLHtmb250Q2hhcmFjdGVyOiJcXGVhZGYifSksaS5kaWZmUmVuYW1lZD1uZXcgaSgiZGlmZi1yZW5hbWVkIix7Zm9udENoYXJhY3RlcjoiXFxlYWUwIn0pLGkuZGlmZj1uZXcgaSgiZGlmZiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFlMSJ9KSxpLmRpc2NhcmQ9bmV3IGkoImRpc2NhcmQiLHtmb250Q2hhcmFjdGVyOiJcXGVhZTIifSksaS5lZGl0b3JMYXlvdXQ9bmV3IGkoImVkaXRvci1sYXlvdXQiLHtmb250Q2hhcmFjdGVyOiJcXGVhZTMifSksaS5lbXB0eVdpbmRvdz1uZXcgaSgiZW1wdHktd2luZG93Iix7Zm9udENoYXJhY3RlcjoiXFxlYWU0In0pLGkuZXhjbHVkZT1uZXcgaSgiZXhjbHVkZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFlNSJ9KSxpLmV4dGVuc2lvbnM9bmV3IGkoImV4dGVuc2lvbnMiLHtmb250Q2hhcmFjdGVyOiJcXGVhZTYifSksaS5leWVDbG9zZWQ9bmV3IGkoImV5ZS1jbG9zZWQiLHtmb250Q2hhcmFjdGVyOiJcXGVhZTcifSksaS5maWxlQmluYXJ5PW5ldyBpKCJmaWxlLWJpbmFyeSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFlOCJ9KSxpLmZpbGVDb2RlPW5ldyBpKCJmaWxlLWNvZGUiLHtmb250Q2hhcmFjdGVyOiJcXGVhZTkifSksaS5maWxlTWVkaWE9bmV3IGkoImZpbGUtbWVkaWEiLHtmb250Q2hhcmFjdGVyOiJcXGVhZWEifSksaS5maWxlUGRmPW5ldyBpKCJmaWxlLXBkZiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFlYiJ9KSxpLmZpbGVTdWJtb2R1bGU9bmV3IGkoImZpbGUtc3VibW9kdWxlIix7Zm9udENoYXJhY3RlcjoiXFxlYWVjIn0pLGkuZmlsZVN5bWxpbmtEaXJlY3Rvcnk9bmV3IGkoImZpbGUtc3ltbGluay1kaXJlY3RvcnkiLHtmb250Q2hhcmFjdGVyOiJcXGVhZWQifSksaS5maWxlU3ltbGlua0ZpbGU9bmV3IGkoImZpbGUtc3ltbGluay1maWxlIix7Zm9udENoYXJhY3RlcjoiXFxlYWVlIn0pLGkuZmlsZVppcD1uZXcgaSgiZmlsZS16aXAiLHtmb250Q2hhcmFjdGVyOiJcXGVhZWYifSksaS5maWxlcz1uZXcgaSgiZmlsZXMiLHtmb250Q2hhcmFjdGVyOiJcXGVhZjAifSksaS5maWx0ZXI9bmV3IGkoImZpbHRlciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFmMSJ9KSxpLmZsYW1lPW5ldyBpKCJmbGFtZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFmMiJ9KSxpLmZvbGREb3duPW5ldyBpKCJmb2xkLWRvd24iLHtmb250Q2hhcmFjdGVyOiJcXGVhZjMifSksaS5mb2xkVXA9bmV3IGkoImZvbGQtdXAiLHtmb250Q2hhcmFjdGVyOiJcXGVhZjQifSksaS5mb2xkPW5ldyBpKCJmb2xkIix7Zm9udENoYXJhY3RlcjoiXFxlYWY1In0pLGkuZm9sZGVyQWN0aXZlPW5ldyBpKCJmb2xkZXItYWN0aXZlIix7Zm9udENoYXJhY3RlcjoiXFxlYWY2In0pLGkuZm9sZGVyT3BlbmVkPW5ldyBpKCJmb2xkZXItb3BlbmVkIix7Zm9udENoYXJhY3RlcjoiXFxlYWY3In0pLGkuZ2Vhcj1uZXcgaSgiZ2VhciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFmOCJ9KSxpLmdpZnQ9bmV3IGkoImdpZnQiLHtmb250Q2hhcmFjdGVyOiJcXGVhZjkifSksaS5naXN0U2VjcmV0PW5ldyBpKCJnaXN0LXNlY3JldCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFmYSJ9KSxpLmdpc3Q9bmV3IGkoImdpc3QiLHtmb250Q2hhcmFjdGVyOiJcXGVhZmIifSksaS5naXRDb21taXQ9bmV3IGkoImdpdC1jb21taXQiLHtmb250Q2hhcmFjdGVyOiJcXGVhZmMifSksaS5naXRDb21wYXJlPW5ldyBpKCJnaXQtY29tcGFyZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFmZCJ9KSxpLmdpdE1lcmdlPW5ldyBpKCJnaXQtbWVyZ2UiLHtmb250Q2hhcmFjdGVyOiJcXGVhZmUifSksaS5naXRodWJBY3Rpb249bmV3IGkoImdpdGh1Yi1hY3Rpb24iLHtmb250Q2hhcmFjdGVyOiJcXGVhZmYifSksaS5naXRodWJBbHQ9bmV3IGkoImdpdGh1Yi1hbHQiLHtmb250Q2hhcmFjdGVyOiJcXGViMDAifSksaS5nbG9iZT1uZXcgaSgiZ2xvYmUiLHtmb250Q2hhcmFjdGVyOiJcXGViMDEifSksaS5ncmFiYmVyPW5ldyBpKCJncmFiYmVyIix7Zm9udENoYXJhY3RlcjoiXFxlYjAyIn0pLGkuZ3JhcGg9bmV3IGkoImdyYXBoIix7Zm9udENoYXJhY3RlcjoiXFxlYjAzIn0pLGkuZ3JpcHBlcj1uZXcgaSgiZ3JpcHBlciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIwNCJ9KSxpLmhlYXJ0PW5ldyBpKCJoZWFydCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIwNSJ9KSxpLmhvbWU9bmV3IGkoImhvbWUiLHtmb250Q2hhcmFjdGVyOiJcXGViMDYifSksaS5ob3Jpem9udGFsUnVsZT1uZXcgaSgiaG9yaXpvbnRhbC1ydWxlIix7Zm9udENoYXJhY3RlcjoiXFxlYjA3In0pLGkuaHVib3Q9bmV3IGkoImh1Ym90Iix7Zm9udENoYXJhY3RlcjoiXFxlYjA4In0pLGkuaW5ib3g9bmV3IGkoImluYm94Iix7Zm9udENoYXJhY3RlcjoiXFxlYjA5In0pLGkuaXNzdWVDbG9zZWQ9bmV3IGkoImlzc3VlLWNsb3NlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJhNCJ9KSxpLmlzc3VlUmVvcGVuZWQ9bmV3IGkoImlzc3VlLXJlb3BlbmVkIix7Zm9udENoYXJhY3RlcjoiXFxlYjBiIn0pLGkuaXNzdWVzPW5ldyBpKCJpc3N1ZXMiLHtmb250Q2hhcmFjdGVyOiJcXGViMGMifSksaS5pdGFsaWM9bmV3IGkoIml0YWxpYyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIwZCJ9KSxpLmplcnNleT1uZXcgaSgiamVyc2V5Iix7Zm9udENoYXJhY3RlcjoiXFxlYjBlIn0pLGkuanNvbj1uZXcgaSgianNvbiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIwZiJ9KSxpLmtlYmFiVmVydGljYWw9bmV3IGkoImtlYmFiLXZlcnRpY2FsIix7Zm9udENoYXJhY3RlcjoiXFxlYjEwIn0pLGkua2V5PW5ldyBpKCJrZXkiLHtmb250Q2hhcmFjdGVyOiJcXGViMTEifSksaS5sYXc9bmV3IGkoImxhdyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIxMiJ9KSxpLmxpZ2h0YnVsYkF1dG9maXg9bmV3IGkoImxpZ2h0YnVsYi1hdXRvZml4Iix7Zm9udENoYXJhY3RlcjoiXFxlYjEzIn0pLGkubGlua0V4dGVybmFsPW5ldyBpKCJsaW5rLWV4dGVybmFsIix7Zm9udENoYXJhY3RlcjoiXFxlYjE0In0pLGkubGluaz1uZXcgaSgibGluayIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIxNSJ9KSxpLmxpc3RPcmRlcmVkPW5ldyBpKCJsaXN0LW9yZGVyZWQiLHtmb250Q2hhcmFjdGVyOiJcXGViMTYifSksaS5saXN0VW5vcmRlcmVkPW5ldyBpKCJsaXN0LXVub3JkZXJlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIxNyJ9KSxpLmxpdmVTaGFyZT1uZXcgaSgibGl2ZS1zaGFyZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIxOCJ9KSxpLmxvYWRpbmc9bmV3IGkoImxvYWRpbmciLHtmb250Q2hhcmFjdGVyOiJcXGViMTkifSksaS5sb2NhdGlvbj1uZXcgaSgibG9jYXRpb24iLHtmb250Q2hhcmFjdGVyOiJcXGViMWEifSksaS5tYWlsUmVhZD1uZXcgaSgibWFpbC1yZWFkIix7Zm9udENoYXJhY3RlcjoiXFxlYjFiIn0pLGkubWFpbD1uZXcgaSgibWFpbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIxYyJ9KSxpLm1hcmtkb3duPW5ldyBpKCJtYXJrZG93biIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIxZCJ9KSxpLm1lZ2FwaG9uZT1uZXcgaSgibWVnYXBob25lIix7Zm9udENoYXJhY3RlcjoiXFxlYjFlIn0pLGkubWVudGlvbj1uZXcgaSgibWVudGlvbiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIxZiJ9KSxpLm1pbGVzdG9uZT1uZXcgaSgibWlsZXN0b25lIix7Zm9udENoYXJhY3RlcjoiXFxlYjIwIn0pLGkubW9ydGFyQm9hcmQ9bmV3IGkoIm1vcnRhci1ib2FyZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIyMSJ9KSxpLm1vdmU9bmV3IGkoIm1vdmUiLHtmb250Q2hhcmFjdGVyOiJcXGViMjIifSksaS5tdWx0aXBsZVdpbmRvd3M9bmV3IGkoIm11bHRpcGxlLXdpbmRvd3MiLHtmb250Q2hhcmFjdGVyOiJcXGViMjMifSksaS5tdXRlPW5ldyBpKCJtdXRlIix7Zm9udENoYXJhY3RlcjoiXFxlYjI0In0pLGkubm9OZXdsaW5lPW5ldyBpKCJuby1uZXdsaW5lIix7Zm9udENoYXJhY3RlcjoiXFxlYjI1In0pLGkubm90ZT1uZXcgaSgibm90ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIyNiJ9KSxpLm9jdG9mYWNlPW5ldyBpKCJvY3RvZmFjZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIyNyJ9KSxpLm9wZW5QcmV2aWV3PW5ldyBpKCJvcGVuLXByZXZpZXciLHtmb250Q2hhcmFjdGVyOiJcXGViMjgifSksaS5wYWNrYWdlXz1uZXcgaSgicGFja2FnZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIyOSJ9KSxpLnBhaW50Y2FuPW5ldyBpKCJwYWludGNhbiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIyYSJ9KSxpLnBpbj1uZXcgaSgicGluIix7Zm9udENoYXJhY3RlcjoiXFxlYjJiIn0pLGkucGxheT1uZXcgaSgicGxheSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIyYyJ9KSxpLnJ1bj1uZXcgaSgicnVuIix7Zm9udENoYXJhY3RlcjoiXFxlYjJjIn0pLGkucGx1Zz1uZXcgaSgicGx1ZyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIyZCJ9KSxpLnByZXNlcnZlQ2FzZT1uZXcgaSgicHJlc2VydmUtY2FzZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIyZSJ9KSxpLnByZXZpZXc9bmV3IGkoInByZXZpZXciLHtmb250Q2hhcmFjdGVyOiJcXGViMmYifSksaS5wcm9qZWN0PW5ldyBpKCJwcm9qZWN0Iix7Zm9udENoYXJhY3RlcjoiXFxlYjMwIn0pLGkucHVsc2U9bmV3IGkoInB1bHNlIix7Zm9udENoYXJhY3RlcjoiXFxlYjMxIn0pLGkucXVlc3Rpb249bmV3IGkoInF1ZXN0aW9uIix7Zm9udENoYXJhY3RlcjoiXFxlYjMyIn0pLGkucXVvdGU9bmV3IGkoInF1b3RlIix7Zm9udENoYXJhY3RlcjoiXFxlYjMzIn0pLGkucmFkaW9Ub3dlcj1uZXcgaSgicmFkaW8tdG93ZXIiLHtmb250Q2hhcmFjdGVyOiJcXGViMzQifSksaS5yZWFjdGlvbnM9bmV3IGkoInJlYWN0aW9ucyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIzNSJ9KSxpLnJlZmVyZW5jZXM9bmV3IGkoInJlZmVyZW5jZXMiLHtmb250Q2hhcmFjdGVyOiJcXGViMzYifSksaS5yZWZyZXNoPW5ldyBpKCJyZWZyZXNoIix7Zm9udENoYXJhY3RlcjoiXFxlYjM3In0pLGkucmVnZXg9bmV3IGkoInJlZ2V4Iix7Zm9udENoYXJhY3RlcjoiXFxlYjM4In0pLGkucmVtb3RlRXhwbG9yZXI9bmV3IGkoInJlbW90ZS1leHBsb3JlciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIzOSJ9KSxpLnJlbW90ZT1uZXcgaSgicmVtb3RlIix7Zm9udENoYXJhY3RlcjoiXFxlYjNhIn0pLGkucmVtb3ZlPW5ldyBpKCJyZW1vdmUiLHtmb250Q2hhcmFjdGVyOiJcXGViM2IifSksaS5yZXBsYWNlQWxsPW5ldyBpKCJyZXBsYWNlLWFsbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIzYyJ9KSxpLnJlcGxhY2U9bmV3IGkoInJlcGxhY2UiLHtmb250Q2hhcmFjdGVyOiJcXGViM2QifSksaS5yZXBvQ2xvbmU9bmV3IGkoInJlcG8tY2xvbmUiLHtmb250Q2hhcmFjdGVyOiJcXGViM2UifSksaS5yZXBvRm9yY2VQdXNoPW5ldyBpKCJyZXBvLWZvcmNlLXB1c2giLHtmb250Q2hhcmFjdGVyOiJcXGViM2YifSksaS5yZXBvUHVsbD1uZXcgaSgicmVwby1wdWxsIix7Zm9udENoYXJhY3RlcjoiXFxlYjQwIn0pLGkucmVwb1B1c2g9bmV3IGkoInJlcG8tcHVzaCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI0MSJ9KSxpLnJlcG9ydD1uZXcgaSgicmVwb3J0Iix7Zm9udENoYXJhY3RlcjoiXFxlYjQyIn0pLGkucmVxdWVzdENoYW5nZXM9bmV3IGkoInJlcXVlc3QtY2hhbmdlcyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI0MyJ9KSxpLnJvY2tldD1uZXcgaSgicm9ja2V0Iix7Zm9udENoYXJhY3RlcjoiXFxlYjQ0In0pLGkucm9vdEZvbGRlck9wZW5lZD1uZXcgaSgicm9vdC1mb2xkZXItb3BlbmVkIix7Zm9udENoYXJhY3RlcjoiXFxlYjQ1In0pLGkucm9vdEZvbGRlcj1uZXcgaSgicm9vdC1mb2xkZXIiLHtmb250Q2hhcmFjdGVyOiJcXGViNDYifSksaS5yc3M9bmV3IGkoInJzcyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI0NyJ9KSxpLnJ1Ynk9bmV3IGkoInJ1YnkiLHtmb250Q2hhcmFjdGVyOiJcXGViNDgifSksaS5zYXZlQWxsPW5ldyBpKCJzYXZlLWFsbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI0OSJ9KSxpLnNhdmVBcz1uZXcgaSgic2F2ZS1hcyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI0YSJ9KSxpLnNhdmU9bmV3IGkoInNhdmUiLHtmb250Q2hhcmFjdGVyOiJcXGViNGIifSksaS5zY3JlZW5GdWxsPW5ldyBpKCJzY3JlZW4tZnVsbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI0YyJ9KSxpLnNjcmVlbk5vcm1hbD1uZXcgaSgic2NyZWVuLW5vcm1hbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI0ZCJ9KSxpLnNlYXJjaFN0b3A9bmV3IGkoInNlYXJjaC1zdG9wIix7Zm9udENoYXJhY3RlcjoiXFxlYjRlIn0pLGkuc2VydmVyPW5ldyBpKCJzZXJ2ZXIiLHtmb250Q2hhcmFjdGVyOiJcXGViNTAifSksaS5zZXR0aW5nc0dlYXI9bmV3IGkoInNldHRpbmdzLWdlYXIiLHtmb250Q2hhcmFjdGVyOiJcXGViNTEifSksaS5zZXR0aW5ncz1uZXcgaSgic2V0dGluZ3MiLHtmb250Q2hhcmFjdGVyOiJcXGViNTIifSksaS5zaGllbGQ9bmV3IGkoInNoaWVsZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI1MyJ9KSxpLnNtaWxleT1uZXcgaSgic21pbGV5Iix7Zm9udENoYXJhY3RlcjoiXFxlYjU0In0pLGkuc29ydFByZWNlZGVuY2U9bmV3IGkoInNvcnQtcHJlY2VkZW5jZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI1NSJ9KSxpLnNwbGl0SG9yaXpvbnRhbD1uZXcgaSgic3BsaXQtaG9yaXpvbnRhbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI1NiJ9KSxpLnNwbGl0VmVydGljYWw9bmV3IGkoInNwbGl0LXZlcnRpY2FsIix7Zm9udENoYXJhY3RlcjoiXFxlYjU3In0pLGkuc3F1aXJyZWw9bmV3IGkoInNxdWlycmVsIix7Zm9udENoYXJhY3RlcjoiXFxlYjU4In0pLGkuc3RhckZ1bGw9bmV3IGkoInN0YXItZnVsbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI1OSJ9KSxpLnN0YXJIYWxmPW5ldyBpKCJzdGFyLWhhbGYiLHtmb250Q2hhcmFjdGVyOiJcXGViNWEifSksaS5zeW1ib2xDbGFzcz1uZXcgaSgic3ltYm9sLWNsYXNzIix7Zm9udENoYXJhY3RlcjoiXFxlYjViIn0pLGkuc3ltYm9sQ29sb3I9bmV3IGkoInN5bWJvbC1jb2xvciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI1YyJ9KSxpLnN5bWJvbEN1c3RvbUNvbG9yPW5ldyBpKCJzeW1ib2wtY3VzdG9tY29sb3IiLHtmb250Q2hhcmFjdGVyOiJcXGViNWMifSksaS5zeW1ib2xDb25zdGFudD1uZXcgaSgic3ltYm9sLWNvbnN0YW50Iix7Zm9udENoYXJhY3RlcjoiXFxlYjVkIn0pLGkuc3ltYm9sRW51bU1lbWJlcj1uZXcgaSgic3ltYm9sLWVudW0tbWVtYmVyIix7Zm9udENoYXJhY3RlcjoiXFxlYjVlIn0pLGkuc3ltYm9sRmllbGQ9bmV3IGkoInN5bWJvbC1maWVsZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI1ZiJ9KSxpLnN5bWJvbEZpbGU9bmV3IGkoInN5bWJvbC1maWxlIix7Zm9udENoYXJhY3RlcjoiXFxlYjYwIn0pLGkuc3ltYm9sSW50ZXJmYWNlPW5ldyBpKCJzeW1ib2wtaW50ZXJmYWNlIix7Zm9udENoYXJhY3RlcjoiXFxlYjYxIn0pLGkuc3ltYm9sS2V5d29yZD1uZXcgaSgic3ltYm9sLWtleXdvcmQiLHtmb250Q2hhcmFjdGVyOiJcXGViNjIifSksaS5zeW1ib2xNaXNjPW5ldyBpKCJzeW1ib2wtbWlzYyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI2MyJ9KSxpLnN5bWJvbE9wZXJhdG9yPW5ldyBpKCJzeW1ib2wtb3BlcmF0b3IiLHtmb250Q2hhcmFjdGVyOiJcXGViNjQifSksaS5zeW1ib2xQcm9wZXJ0eT1uZXcgaSgic3ltYm9sLXByb3BlcnR5Iix7Zm9udENoYXJhY3RlcjoiXFxlYjY1In0pLGkud3JlbmNoPW5ldyBpKCJ3cmVuY2giLHtmb250Q2hhcmFjdGVyOiJcXGViNjUifSksaS53cmVuY2hTdWJhY3Rpb249bmV3IGkoIndyZW5jaC1zdWJhY3Rpb24iLHtmb250Q2hhcmFjdGVyOiJcXGViNjUifSksaS5zeW1ib2xTbmlwcGV0PW5ldyBpKCJzeW1ib2wtc25pcHBldCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI2NiJ9KSxpLnRhc2tsaXN0PW5ldyBpKCJ0YXNrbGlzdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI2NyJ9KSxpLnRlbGVzY29wZT1uZXcgaSgidGVsZXNjb3BlIix7Zm9udENoYXJhY3RlcjoiXFxlYjY4In0pLGkudGV4dFNpemU9bmV3IGkoInRleHQtc2l6ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI2OSJ9KSxpLnRocmVlQmFycz1uZXcgaSgidGhyZWUtYmFycyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI2YSJ9KSxpLnRodW1ic2Rvd249bmV3IGkoInRodW1ic2Rvd24iLHtmb250Q2hhcmFjdGVyOiJcXGViNmIifSksaS50aHVtYnN1cD1uZXcgaSgidGh1bWJzdXAiLHtmb250Q2hhcmFjdGVyOiJcXGViNmMifSksaS50b29scz1uZXcgaSgidG9vbHMiLHtmb250Q2hhcmFjdGVyOiJcXGViNmQifSksaS50cmlhbmdsZURvd249bmV3IGkoInRyaWFuZ2xlLWRvd24iLHtmb250Q2hhcmFjdGVyOiJcXGViNmUifSksaS50cmlhbmdsZUxlZnQ9bmV3IGkoInRyaWFuZ2xlLWxlZnQiLHtmb250Q2hhcmFjdGVyOiJcXGViNmYifSksaS50cmlhbmdsZVJpZ2h0PW5ldyBpKCJ0cmlhbmdsZS1yaWdodCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI3MCJ9KSxpLnRyaWFuZ2xlVXA9bmV3IGkoInRyaWFuZ2xlLXVwIix7Zm9udENoYXJhY3RlcjoiXFxlYjcxIn0pLGkudHdpdHRlcj1uZXcgaSgidHdpdHRlciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI3MiJ9KSxpLnVuZm9sZD1uZXcgaSgidW5mb2xkIix7Zm9udENoYXJhY3RlcjoiXFxlYjczIn0pLGkudW5sb2NrPW5ldyBpKCJ1bmxvY2siLHtmb250Q2hhcmFjdGVyOiJcXGViNzQifSksaS51bm11dGU9bmV3IGkoInVubXV0ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI3NSJ9KSxpLnVudmVyaWZpZWQ9bmV3IGkoInVudmVyaWZpZWQiLHtmb250Q2hhcmFjdGVyOiJcXGViNzYifSksaS52ZXJpZmllZD1uZXcgaSgidmVyaWZpZWQiLHtmb250Q2hhcmFjdGVyOiJcXGViNzcifSksaS52ZXJzaW9ucz1uZXcgaSgidmVyc2lvbnMiLHtmb250Q2hhcmFjdGVyOiJcXGViNzgifSksaS52bUFjdGl2ZT1uZXcgaSgidm0tYWN0aXZlIix7Zm9udENoYXJhY3RlcjoiXFxlYjc5In0pLGkudm1PdXRsaW5lPW5ldyBpKCJ2bS1vdXRsaW5lIix7Zm9udENoYXJhY3RlcjoiXFxlYjdhIn0pLGkudm1SdW5uaW5nPW5ldyBpKCJ2bS1ydW5uaW5nIix7Zm9udENoYXJhY3RlcjoiXFxlYjdiIn0pLGkud2F0Y2g9bmV3IGkoIndhdGNoIix7Zm9udENoYXJhY3RlcjoiXFxlYjdjIn0pLGkud2hpdGVzcGFjZT1uZXcgaSgid2hpdGVzcGFjZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI3ZCJ9KSxpLndob2xlV29yZD1uZXcgaSgid2hvbGUtd29yZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI3ZSJ9KSxpLndpbmRvdz1uZXcgaSgid2luZG93Iix7Zm9udENoYXJhY3RlcjoiXFxlYjdmIn0pLGkud29yZFdyYXA9bmV3IGkoIndvcmQtd3JhcCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI4MCJ9KSxpLnpvb21Jbj1uZXcgaSgiem9vbS1pbiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI4MSJ9KSxpLnpvb21PdXQ9bmV3IGkoInpvb20tb3V0Iix7Zm9udENoYXJhY3RlcjoiXFxlYjgyIn0pLGkubGlzdEZpbHRlcj1uZXcgaSgibGlzdC1maWx0ZXIiLHtmb250Q2hhcmFjdGVyOiJcXGViODMifSksaS5saXN0RmxhdD1uZXcgaSgibGlzdC1mbGF0Iix7Zm9udENoYXJhY3RlcjoiXFxlYjg0In0pLGkubGlzdFNlbGVjdGlvbj1uZXcgaSgibGlzdC1zZWxlY3Rpb24iLHtmb250Q2hhcmFjdGVyOiJcXGViODUifSksaS5zZWxlY3Rpb249bmV3IGkoInNlbGVjdGlvbiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI4NSJ9KSxpLmxpc3RUcmVlPW5ldyBpKCJsaXN0LXRyZWUiLHtmb250Q2hhcmFjdGVyOiJcXGViODYifSksaS5kZWJ1Z0JyZWFrcG9pbnRGdW5jdGlvblVudmVyaWZpZWQ9bmV3IGkoImRlYnVnLWJyZWFrcG9pbnQtZnVuY3Rpb24tdW52ZXJpZmllZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI4NyJ9KSxpLmRlYnVnQnJlYWtwb2ludEZ1bmN0aW9uPW5ldyBpKCJkZWJ1Zy1icmVha3BvaW50LWZ1bmN0aW9uIix7Zm9udENoYXJhY3RlcjoiXFxlYjg4In0pLGkuZGVidWdCcmVha3BvaW50RnVuY3Rpb25EaXNhYmxlZD1uZXcgaSgiZGVidWctYnJlYWtwb2ludC1mdW5jdGlvbi1kaXNhYmxlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI4OCJ9KSxpLmRlYnVnU3RhY2tmcmFtZUFjdGl2ZT1uZXcgaSgiZGVidWctc3RhY2tmcmFtZS1hY3RpdmUiLHtmb250Q2hhcmFjdGVyOiJcXGViODkifSksaS5kZWJ1Z1N0YWNrZnJhbWVEb3Q9bmV3IGkoImRlYnVnLXN0YWNrZnJhbWUtZG90Iix7Zm9udENoYXJhY3RlcjoiXFxlYjhhIn0pLGkuZGVidWdTdGFja2ZyYW1lPW5ldyBpKCJkZWJ1Zy1zdGFja2ZyYW1lIix7Zm9udENoYXJhY3RlcjoiXFxlYjhiIn0pLGkuZGVidWdTdGFja2ZyYW1lRm9jdXNlZD1uZXcgaSgiZGVidWctc3RhY2tmcmFtZS1mb2N1c2VkIix7Zm9udENoYXJhY3RlcjoiXFxlYjhiIn0pLGkuZGVidWdCcmVha3BvaW50VW5zdXBwb3J0ZWQ9bmV3IGkoImRlYnVnLWJyZWFrcG9pbnQtdW5zdXBwb3J0ZWQiLHtmb250Q2hhcmFjdGVyOiJcXGViOGMifSksaS5zeW1ib2xTdHJpbmc9bmV3IGkoInN5bWJvbC1zdHJpbmciLHtmb250Q2hhcmFjdGVyOiJcXGViOGQifSksaS5kZWJ1Z1JldmVyc2VDb250aW51ZT1uZXcgaSgiZGVidWctcmV2ZXJzZS1jb250aW51ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI4ZSJ9KSxpLmRlYnVnU3RlcEJhY2s9bmV3IGkoImRlYnVnLXN0ZXAtYmFjayIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI4ZiJ9KSxpLmRlYnVnUmVzdGFydEZyYW1lPW5ldyBpKCJkZWJ1Zy1yZXN0YXJ0LWZyYW1lIix7Zm9udENoYXJhY3RlcjoiXFxlYjkwIn0pLGkuY2FsbEluY29taW5nPW5ldyBpKCJjYWxsLWluY29taW5nIix7Zm9udENoYXJhY3RlcjoiXFxlYjkyIn0pLGkuY2FsbE91dGdvaW5nPW5ldyBpKCJjYWxsLW91dGdvaW5nIix7Zm9udENoYXJhY3RlcjoiXFxlYjkzIn0pLGkubWVudT1uZXcgaSgibWVudSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI5NCJ9KSxpLmV4cGFuZEFsbD1uZXcgaSgiZXhwYW5kLWFsbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI5NSJ9KSxpLmZlZWRiYWNrPW5ldyBpKCJmZWVkYmFjayIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI5NiJ9KSxpLmdyb3VwQnlSZWZUeXBlPW5ldyBpKCJncm91cC1ieS1yZWYtdHlwZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI5NyJ9KSxpLnVuZ3JvdXBCeVJlZlR5cGU9bmV3IGkoInVuZ3JvdXAtYnktcmVmLXR5cGUiLHtmb250Q2hhcmFjdGVyOiJcXGViOTgifSksaS5hY2NvdW50PW5ldyBpKCJhY2NvdW50Iix7Zm9udENoYXJhY3RlcjoiXFxlYjk5In0pLGkuYmVsbERvdD1uZXcgaSgiYmVsbC1kb3QiLHtmb250Q2hhcmFjdGVyOiJcXGViOWEifSksaS5kZWJ1Z0NvbnNvbGU9bmV3IGkoImRlYnVnLWNvbnNvbGUiLHtmb250Q2hhcmFjdGVyOiJcXGViOWIifSksaS5saWJyYXJ5PW5ldyBpKCJsaWJyYXJ5Iix7Zm9udENoYXJhY3RlcjoiXFxlYjljIn0pLGkub3V0cHV0PW5ldyBpKCJvdXRwdXQiLHtmb250Q2hhcmFjdGVyOiJcXGViOWQifSksaS5ydW5BbGw9bmV3IGkoInJ1bi1hbGwiLHtmb250Q2hhcmFjdGVyOiJcXGViOWUifSksaS5zeW5jSWdub3JlZD1uZXcgaSgic3luYy1pZ25vcmVkIix7Zm9udENoYXJhY3RlcjoiXFxlYjlmIn0pLGkucGlubmVkPW5ldyBpKCJwaW5uZWQiLHtmb250Q2hhcmFjdGVyOiJcXGViYTAifSksaS5naXRodWJJbnZlcnRlZD1uZXcgaSgiZ2l0aHViLWludmVydGVkIix7Zm9udENoYXJhY3RlcjoiXFxlYmExIn0pLGkuZGVidWdBbHQ9bmV3IGkoImRlYnVnLWFsdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI5MSJ9KSxpLnNlcnZlclByb2Nlc3M9bmV3IGkoInNlcnZlci1wcm9jZXNzIix7Zm9udENoYXJhY3RlcjoiXFxlYmEyIn0pLGkuc2VydmVyRW52aXJvbm1lbnQ9bmV3IGkoInNlcnZlci1lbnZpcm9ubWVudCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJhMyJ9KSxpLnBhc3M9bmV3IGkoInBhc3MiLHtmb250Q2hhcmFjdGVyOiJcXGViYTQifSksaS5zdG9wQ2lyY2xlPW5ldyBpKCJzdG9wLWNpcmNsZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJhNSJ9KSxpLnBsYXlDaXJjbGU9bmV3IGkoInBsYXktY2lyY2xlIix7Zm9udENoYXJhY3RlcjoiXFxlYmE2In0pLGkucmVjb3JkPW5ldyBpKCJyZWNvcmQiLHtmb250Q2hhcmFjdGVyOiJcXGViYTcifSksaS5kZWJ1Z0FsdFNtYWxsPW5ldyBpKCJkZWJ1Zy1hbHQtc21hbGwiLHtmb250Q2hhcmFjdGVyOiJcXGViYTgifSksaS52bUNvbm5lY3Q9bmV3IGkoInZtLWNvbm5lY3QiLHtmb250Q2hhcmFjdGVyOiJcXGViYTkifSksaS5jbG91ZD1uZXcgaSgiY2xvdWQiLHtmb250Q2hhcmFjdGVyOiJcXGViYWEifSksaS5tZXJnZT1uZXcgaSgibWVyZ2UiLHtmb250Q2hhcmFjdGVyOiJcXGViYWIifSksaS5leHBvcnRJY29uPW5ldyBpKCJleHBvcnQiLHtmb250Q2hhcmFjdGVyOiJcXGViYWMifSksaS5ncmFwaExlZnQ9bmV3IGkoImdyYXBoLWxlZnQiLHtmb250Q2hhcmFjdGVyOiJcXGViYWQifSksaS5tYWduZXQ9bmV3IGkoIm1hZ25ldCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJhZSJ9KSxpLm5vdGVib29rPW5ldyBpKCJub3RlYm9vayIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJhZiJ9KSxpLnJlZG89bmV3IGkoInJlZG8iLHtmb250Q2hhcmFjdGVyOiJcXGViYjAifSksaS5jaGVja0FsbD1uZXcgaSgiY2hlY2stYWxsIix7Zm9udENoYXJhY3RlcjoiXFxlYmIxIn0pLGkucGlubmVkRGlydHk9bmV3IGkoInBpbm5lZC1kaXJ0eSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJiMiJ9KSxpLnBhc3NGaWxsZWQ9bmV3IGkoInBhc3MtZmlsbGVkIix7Zm9udENoYXJhY3RlcjoiXFxlYmIzIn0pLGkuY2lyY2xlTGFyZ2VGaWxsZWQ9bmV3IGkoImNpcmNsZS1sYXJnZS1maWxsZWQiLHtmb250Q2hhcmFjdGVyOiJcXGViYjQifSksaS5jaXJjbGVMYXJnZU91dGxpbmU9bmV3IGkoImNpcmNsZS1sYXJnZS1vdXRsaW5lIix7Zm9udENoYXJhY3RlcjoiXFxlYmI1In0pLGkuY29tYmluZT1uZXcgaSgiY29tYmluZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJiNiJ9KSxpLmdhdGhlcj1uZXcgaSgiZ2F0aGVyIix7Zm9udENoYXJhY3RlcjoiXFxlYmI2In0pLGkudGFibGU9bmV3IGkoInRhYmxlIix7Zm9udENoYXJhY3RlcjoiXFxlYmI3In0pLGkudmFyaWFibGVHcm91cD1uZXcgaSgidmFyaWFibGUtZ3JvdXAiLHtmb250Q2hhcmFjdGVyOiJcXGViYjgifSksaS50eXBlSGllcmFyY2h5PW5ldyBpKCJ0eXBlLWhpZXJhcmNoeSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJiOSJ9KSxpLnR5cGVIaWVyYXJjaHlTdWI9bmV3IGkoInR5cGUtaGllcmFyY2h5LXN1YiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJiYSJ9KSxpLnR5cGVIaWVyYXJjaHlTdXBlcj1uZXcgaSgidHlwZS1oaWVyYXJjaHktc3VwZXIiLHtmb250Q2hhcmFjdGVyOiJcXGViYmIifSksaS5naXRQdWxsUmVxdWVzdENyZWF0ZT1uZXcgaSgiZ2l0LXB1bGwtcmVxdWVzdC1jcmVhdGUiLHtmb250Q2hhcmFjdGVyOiJcXGViYmMifSksaS5ydW5BYm92ZT1uZXcgaSgicnVuLWFib3ZlIix7Zm9udENoYXJhY3RlcjoiXFxlYmJkIn0pLGkucnVuQmVsb3c9bmV3IGkoInJ1bi1iZWxvdyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJiZSJ9KSxpLm5vdGVib29rVGVtcGxhdGU9bmV3IGkoIm5vdGVib29rLXRlbXBsYXRlIix7Zm9udENoYXJhY3RlcjoiXFxlYmJmIn0pLGkuZGVidWdSZXJ1bj1uZXcgaSgiZGVidWctcmVydW4iLHtmb250Q2hhcmFjdGVyOiJcXGViYzAifSksaS53b3Jrc3BhY2VUcnVzdGVkPW5ldyBpKCJ3b3Jrc3BhY2UtdHJ1c3RlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJjMSJ9KSxpLndvcmtzcGFjZVVudHJ1c3RlZD1uZXcgaSgid29ya3NwYWNlLXVudHJ1c3RlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJjMiJ9KSxpLndvcmtzcGFjZVVuc3BlY2lmaWVkPW5ldyBpKCJ3b3Jrc3BhY2UtdW5zcGVjaWZpZWQiLHtmb250Q2hhcmFjdGVyOiJcXGViYzMifSksaS50ZXJtaW5hbENtZD1uZXcgaSgidGVybWluYWwtY21kIix7Zm9udENoYXJhY3RlcjoiXFxlYmM0In0pLGkudGVybWluYWxEZWJpYW49bmV3IGkoInRlcm1pbmFsLWRlYmlhbiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJjNSJ9KSxpLnRlcm1pbmFsTGludXg9bmV3IGkoInRlcm1pbmFsLWxpbnV4Iix7Zm9udENoYXJhY3RlcjoiXFxlYmM2In0pLGkudGVybWluYWxQb3dlcnNoZWxsPW5ldyBpKCJ0ZXJtaW5hbC1wb3dlcnNoZWxsIix7Zm9udENoYXJhY3RlcjoiXFxlYmM3In0pLGkudGVybWluYWxUbXV4PW5ldyBpKCJ0ZXJtaW5hbC10bXV4Iix7Zm9udENoYXJhY3RlcjoiXFxlYmM4In0pLGkudGVybWluYWxVYnVudHU9bmV3IGkoInRlcm1pbmFsLXVidW50dSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJjOSJ9KSxpLnRlcm1pbmFsQmFzaD1uZXcgaSgidGVybWluYWwtYmFzaCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJjYSJ9KSxpLmFycm93U3dhcD1uZXcgaSgiYXJyb3ctc3dhcCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJjYiJ9KSxpLmNvcHk9bmV3IGkoImNvcHkiLHtmb250Q2hhcmFjdGVyOiJcXGViY2MifSksaS5wZXJzb25BZGQ9bmV3IGkoInBlcnNvbi1hZGQiLHtmb250Q2hhcmFjdGVyOiJcXGViY2QifSksaS5maWx0ZXJGaWxsZWQ9bmV3IGkoImZpbHRlci1maWxsZWQiLHtmb250Q2hhcmFjdGVyOiJcXGViY2UifSksaS53YW5kPW5ldyBpKCJ3YW5kIix7Zm9udENoYXJhY3RlcjoiXFxlYmNmIn0pLGkuZGVidWdMaW5lQnlMaW5lPW5ldyBpKCJkZWJ1Zy1saW5lLWJ5LWxpbmUiLHtmb250Q2hhcmFjdGVyOiJcXGViZDAifSksaS5pbnNwZWN0PW5ldyBpKCJpbnNwZWN0Iix7Zm9udENoYXJhY3RlcjoiXFxlYmQxIn0pLGkubGF5ZXJzPW5ldyBpKCJsYXllcnMiLHtmb250Q2hhcmFjdGVyOiJcXGViZDIifSksaS5sYXllcnNEb3Q9bmV3IGkoImxheWVycy1kb3QiLHtmb250Q2hhcmFjdGVyOiJcXGViZDMifSksaS5sYXllcnNBY3RpdmU9bmV3IGkoImxheWVycy1hY3RpdmUiLHtmb250Q2hhcmFjdGVyOiJcXGViZDQifSksaS5jb21wYXNzPW5ldyBpKCJjb21wYXNzIix7Zm9udENoYXJhY3RlcjoiXFxlYmQ1In0pLGkuY29tcGFzc0RvdD1uZXcgaSgiY29tcGFzcy1kb3QiLHtmb250Q2hhcmFjdGVyOiJcXGViZDYifSksaS5jb21wYXNzQWN0aXZlPW5ldyBpKCJjb21wYXNzLWFjdGl2ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJkNyJ9KSxpLmF6dXJlPW5ldyBpKCJhenVyZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJkOCJ9KSxpLmlzc3VlRHJhZnQ9bmV3IGkoImlzc3VlLWRyYWZ0Iix7Zm9udENoYXJhY3RlcjoiXFxlYmQ5In0pLGkuZ2l0UHVsbFJlcXVlc3RDbG9zZWQ9bmV3IGkoImdpdC1wdWxsLXJlcXVlc3QtY2xvc2VkIix7Zm9udENoYXJhY3RlcjoiXFxlYmRhIn0pLGkuZ2l0UHVsbFJlcXVlc3REcmFmdD1uZXcgaSgiZ2l0LXB1bGwtcmVxdWVzdC1kcmFmdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJkYiJ9KSxpLmRlYnVnQWxsPW5ldyBpKCJkZWJ1Zy1hbGwiLHtmb250Q2hhcmFjdGVyOiJcXGViZGMifSksaS5kZWJ1Z0NvdmVyYWdlPW5ldyBpKCJkZWJ1Zy1jb3ZlcmFnZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJkZCJ9KSxpLnJ1bkVycm9ycz1uZXcgaSgicnVuLWVycm9ycyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJkZSJ9KSxpLmZvbGRlckxpYnJhcnk9bmV3IGkoImZvbGRlci1saWJyYXJ5Iix7Zm9udENoYXJhY3RlcjoiXFxlYmRmIn0pLGkuZGVidWdDb250aW51ZVNtYWxsPW5ldyBpKCJkZWJ1Zy1jb250aW51ZS1zbWFsbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJlMCJ9KSxpLmJlYWtlclN0b3A9bmV3IGkoImJlYWtlci1zdG9wIix7Zm9udENoYXJhY3RlcjoiXFxlYmUxIn0pLGkuZ3JhcGhMaW5lPW5ldyBpKCJncmFwaC1saW5lIix7Zm9udENoYXJhY3RlcjoiXFxlYmUyIn0pLGkuZ3JhcGhTY2F0dGVyPW5ldyBpKCJncmFwaC1zY2F0dGVyIix7Zm9udENoYXJhY3RlcjoiXFxlYmUzIn0pLGkucGllQ2hhcnQ9bmV3IGkoInBpZS1jaGFydCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJlNCJ9KSxpLmJyYWNrZXQ9bmV3IGkoImJyYWNrZXQiLGkuanNvbi5kZWZpbml0aW9uKSxpLmJyYWNrZXREb3Q9bmV3IGkoImJyYWNrZXQtZG90Iix7Zm9udENoYXJhY3RlcjoiXFxlYmU1In0pLGkuYnJhY2tldEVycm9yPW5ldyBpKCJicmFja2V0LWVycm9yIix7Zm9udENoYXJhY3RlcjoiXFxlYmU2In0pLGkubG9ja1NtYWxsPW5ldyBpKCJsb2NrLXNtYWxsIix7Zm9udENoYXJhY3RlcjoiXFxlYmU3In0pLGkuYXp1cmVEZXZvcHM9bmV3IGkoImF6dXJlLWRldm9wcyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJlOCJ9KSxpLnZlcmlmaWVkRmlsbGVkPW5ldyBpKCJ2ZXJpZmllZC1maWxsZWQiLHtmb250Q2hhcmFjdGVyOiJcXGViZTkifSksaS5uZXdMaW5lPW5ldyBpKCJuZXdsaW5lIix7Zm9udENoYXJhY3RlcjoiXFxlYmVhIn0pLGkubGF5b3V0PW5ldyBpKCJsYXlvdXQiLHtmb250Q2hhcmFjdGVyOiJcXGViZWIifSksaS5sYXlvdXRBY3Rpdml0eWJhckxlZnQ9bmV3IGkoImxheW91dC1hY3Rpdml0eWJhci1sZWZ0Iix7Zm9udENoYXJhY3RlcjoiXFxlYmVjIn0pLGkubGF5b3V0QWN0aXZpdHliYXJSaWdodD1uZXcgaSgibGF5b3V0LWFjdGl2aXR5YmFyLXJpZ2h0Iix7Zm9udENoYXJhY3RlcjoiXFxlYmVkIn0pLGkubGF5b3V0UGFuZWxMZWZ0PW5ldyBpKCJsYXlvdXQtcGFuZWwtbGVmdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJlZSJ9KSxpLmxheW91dFBhbmVsQ2VudGVyPW5ldyBpKCJsYXlvdXQtcGFuZWwtY2VudGVyIix7Zm9udENoYXJhY3RlcjoiXFxlYmVmIn0pLGkubGF5b3V0UGFuZWxKdXN0aWZ5PW5ldyBpKCJsYXlvdXQtcGFuZWwtanVzdGlmeSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJmMCJ9KSxpLmxheW91dFBhbmVsUmlnaHQ9bmV3IGkoImxheW91dC1wYW5lbC1yaWdodCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJmMSJ9KSxpLmxheW91dFBhbmVsPW5ldyBpKCJsYXlvdXQtcGFuZWwiLHtmb250Q2hhcmFjdGVyOiJcXGViZjIifSksaS5sYXlvdXRTaWRlYmFyTGVmdD1uZXcgaSgibGF5b3V0LXNpZGViYXItbGVmdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJmMyJ9KSxpLmxheW91dFNpZGViYXJSaWdodD1uZXcgaSgibGF5b3V0LXNpZGViYXItcmlnaHQiLHtmb250Q2hhcmFjdGVyOiJcXGViZjQifSksaS5sYXlvdXRTdGF0dXNiYXI9bmV3IGkoImxheW91dC1zdGF0dXNiYXIiLHtmb250Q2hhcmFjdGVyOiJcXGViZjUifSksaS5sYXlvdXRNZW51YmFyPW5ldyBpKCJsYXlvdXQtbWVudWJhciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJmNiJ9KSxpLmxheW91dENlbnRlcmVkPW5ldyBpKCJsYXlvdXQtY2VudGVyZWQiLHtmb250Q2hhcmFjdGVyOiJcXGViZjcifSksaS50YXJnZXQ9bmV3IGkoInRhcmdldCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJmOCJ9KSxpLmluZGVudD1uZXcgaSgiaW5kZW50Iix7Zm9udENoYXJhY3RlcjoiXFxlYmY5In0pLGkucmVjb3JkU21hbGw9bmV3IGkoInJlY29yZC1zbWFsbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJmYSJ9KSxpLmVycm9yU21hbGw9bmV3IGkoImVycm9yLXNtYWxsIix7Zm9udENoYXJhY3RlcjoiXFxlYmZiIn0pLGkuYXJyb3dDaXJjbGVEb3duPW5ldyBpKCJhcnJvdy1jaXJjbGUtZG93biIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJmYyJ9KSxpLmFycm93Q2lyY2xlTGVmdD1uZXcgaSgiYXJyb3ctY2lyY2xlLWxlZnQiLHtmb250Q2hhcmFjdGVyOiJcXGViZmQifSksaS5hcnJvd0NpcmNsZVJpZ2h0PW5ldyBpKCJhcnJvdy1jaXJjbGUtcmlnaHQiLHtmb250Q2hhcmFjdGVyOiJcXGViZmUifSksaS5hcnJvd0NpcmNsZVVwPW5ldyBpKCJhcnJvdy1jaXJjbGUtdXAiLHtmb250Q2hhcmFjdGVyOiJcXGViZmYifSksaS5kaWFsb2dFcnJvcj1uZXcgaSgiZGlhbG9nLWVycm9yIixpLmVycm9yLmRlZmluaXRpb24pLGkuZGlhbG9nV2FybmluZz1uZXcgaSgiZGlhbG9nLXdhcm5pbmciLGkud2FybmluZy5kZWZpbml0aW9uKSxpLmRpYWxvZ0luZm89bmV3IGkoImRpYWxvZy1pbmZvIixpLmluZm8uZGVmaW5pdGlvbiksaS5kaWFsb2dDbG9zZT1uZXcgaSgiZGlhbG9nLWNsb3NlIixpLmNsb3NlLmRlZmluaXRpb24pLGkudHJlZUl0ZW1FeHBhbmRlZD1uZXcgaSgidHJlZS1pdGVtLWV4cGFuZGVkIixpLmNoZXZyb25Eb3duLmRlZmluaXRpb24pLGkudHJlZUZpbHRlck9uVHlwZU9uPW5ldyBpKCJ0cmVlLWZpbHRlci1vbi10eXBlLW9uIixpLmxpc3RGaWx0ZXIuZGVmaW5pdGlvbiksaS50cmVlRmlsdGVyT25UeXBlT2ZmPW5ldyBpKCJ0cmVlLWZpbHRlci1vbi10eXBlLW9mZiIsaS5saXN0U2VsZWN0aW9uLmRlZmluaXRpb24pLGkudHJlZUZpbHRlckNsZWFyPW5ldyBpKCJ0cmVlLWZpbHRlci1jbGVhciIsaS5jbG9zZS5kZWZpbml0aW9uKSxpLnRyZWVJdGVtTG9hZGluZz1uZXcgaSgidHJlZS1pdGVtLWxvYWRpbmciLGkubG9hZGluZy5kZWZpbml0aW9uKSxpLm1lbnVTZWxlY3Rpb249bmV3IGkoIm1lbnUtc2VsZWN0aW9uIixpLmNoZWNrLmRlZmluaXRpb24pLGkubWVudVN1Ym1lbnU9bmV3IGkoIm1lbnUtc3VibWVudSIsaS5jaGV2cm9uUmlnaHQuZGVmaW5pdGlvbiksaS5tZW51QmFyTW9yZT1uZXcgaSgibWVudWJhci1tb3JlIixpLm1vcmUuZGVmaW5pdGlvbiksaS5zY3JvbGxiYXJCdXR0b25MZWZ0PW5ldyBpKCJzY3JvbGxiYXItYnV0dG9uLWxlZnQiLGkudHJpYW5nbGVMZWZ0LmRlZmluaXRpb24pLGkuc2Nyb2xsYmFyQnV0dG9uUmlnaHQ9bmV3IGkoInNjcm9sbGJhci1idXR0b24tcmlnaHQiLGkudHJpYW5nbGVSaWdodC5kZWZpbml0aW9uKSxpLnNjcm9sbGJhckJ1dHRvblVwPW5ldyBpKCJzY3JvbGxiYXItYnV0dG9uLXVwIixpLnRyaWFuZ2xlVXAuZGVmaW5pdGlvbiksaS5zY3JvbGxiYXJCdXR0b25Eb3duPW5ldyBpKCJzY3JvbGxiYXItYnV0dG9uLWRvd24iLGkudHJpYW5nbGVEb3duLmRlZmluaXRpb24pLGkudG9vbEJhck1vcmU9bmV3IGkoInRvb2xiYXItbW9yZSIsaS5tb3JlLmRlZmluaXRpb24pLGkucXVpY2tJbnB1dEJhY2s9bmV3IGkoInF1aWNrLWlucHV0LWJhY2siLGkuYXJyb3dMZWZ0LmRlZmluaXRpb24pO3t2YXIgRTsoRT1xdD1xdHx8e30pLmljb25OYW1lU2VnbWVudD0iW0EtWmEtejAtOV0rIixFLmljb25OYW1lRXhwcmVzc2lvbj0iW0EtWmEtejAtOS1dKyIsRS5pY29uTW9kaWZpZXJFeHByZXNzaW9uPSJ+W0EtWmEtel0rIixFLmljb25OYW1lQ2hhcmFjdGVyPSJbQS1aYS16MC05fi1dIjtjb25zdCBxcj1uZXcgUmVnRXhwKGBeKCR7RS5pY29uTmFtZUV4cHJlc3Npb259KSgke0UuaWNvbk1vZGlmaWVyRXhwcmVzc2lvbn0pPyRgKTtmdW5jdGlvbiBlcihlKXtpZihlIGluc3RhbmNlb2YgaSlyZXR1cm5bImNvZGljb24iLCJjb2RpY29uLSIrZS5pZF07ZT1xci5leGVjKGUuaWQpO2lmKCFlKXJldHVybiBlcihpLmVycm9yKTtsZXRbLHQscl09ZTtjb25zdCBuPVsiY29kaWNvbiIsImNvZGljb24tIit0XTtyZXR1cm4gciYmbi5wdXNoKCJjb2RpY29uLW1vZGlmaWVyLSIrci5zdWJzdHIoMSkpLG59RS5hc0NsYXNzTmFtZUFycmF5PWVyLEUuYXNDbGFzc05hbWU9ZnVuY3Rpb24oZSl7cmV0dXJuIGVyKGUpLmpvaW4oIiAiKX0sRS5hc0NTU1NlbGVjdG9yPWZ1bmN0aW9uKGUpe3JldHVybiIuIitlcihlKS5qb2luKCIuIil9fWNsYXNzIHRye2NvbnN0cnVjdG9yKGUsdCxyKXt0aGlzLl90b2tlbkJyYW5kPXZvaWQgMCx0aGlzLm9mZnNldD1lLHRoaXMudHlwZT10LHRoaXMubGFuZ3VhZ2U9cn10b1N0cmluZygpe3JldHVybiIoIit0aGlzLm9mZnNldCsiLCAiK3RoaXMudHlwZSsiKSJ9fWNsYXNzIHJye2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5fdG9rZW5pemF0aW9uUmVzdWx0QnJhbmQ9dm9pZCAwLHRoaXMudG9rZW5zPWUsdGhpcy5lbmRTdGF0ZT10fX1jbGFzcyBucntjb25zdHJ1Y3RvcihlLHQpe3RoaXMuX2VuY29kZWRUb2tlbml6YXRpb25SZXN1bHRCcmFuZD12b2lkIDAsdGhpcy50b2tlbnM9ZSx0aGlzLmVuZFN0YXRlPXR9fXtWPXt9O2NvbnN0IHI9bmV3IE1hcCxuPShyLnNldCgwLGkuc3ltYm9sTWV0aG9kKSxyLnNldCgxLGkuc3ltYm9sRnVuY3Rpb24pLHIuc2V0KDIsaS5zeW1ib2xDb25zdHJ1Y3Rvciksci5zZXQoMyxpLnN5bWJvbEZpZWxkKSxyLnNldCg0LGkuc3ltYm9sVmFyaWFibGUpLHIuc2V0KDUsaS5zeW1ib2xDbGFzcyksci5zZXQoNixpLnN5bWJvbFN0cnVjdCksci5zZXQoNyxpLnN5bWJvbEludGVyZmFjZSksci5zZXQoOCxpLnN5bWJvbE1vZHVsZSksci5zZXQoOSxpLnN5bWJvbFByb3BlcnR5KSxyLnNldCgxMCxpLnN5bWJvbEV2ZW50KSxyLnNldCgxMSxpLnN5bWJvbE9wZXJhdG9yKSxyLnNldCgxMixpLnN5bWJvbFVuaXQpLHIuc2V0KDEzLGkuc3ltYm9sVmFsdWUpLHIuc2V0KDE1LGkuc3ltYm9sRW51bSksci5zZXQoMTQsaS5zeW1ib2xDb25zdGFudCksci5zZXQoMTUsaS5zeW1ib2xFbnVtKSxyLnNldCgxNixpLnN5bWJvbEVudW1NZW1iZXIpLHIuc2V0KDE3LGkuc3ltYm9sS2V5d29yZCksci5zZXQoMjcsaS5zeW1ib2xTbmlwcGV0KSxyLnNldCgxOCxpLnN5bWJvbFRleHQpLHIuc2V0KDE5LGkuc3ltYm9sQ29sb3IpLHIuc2V0KDIwLGkuc3ltYm9sRmlsZSksci5zZXQoMjEsaS5zeW1ib2xSZWZlcmVuY2UpLHIuc2V0KDIyLGkuc3ltYm9sQ3VzdG9tQ29sb3IpLHIuc2V0KDIzLGkuc3ltYm9sRm9sZGVyKSxyLnNldCgyNCxpLnN5bWJvbFR5cGVQYXJhbWV0ZXIpLHIuc2V0KDI1LGkuYWNjb3VudCksci5zZXQoMjYsaS5pc3N1ZXMpLFYudG9JY29uPWZ1bmN0aW9uKGUpe2xldCB0PXIuZ2V0KGUpO3JldHVybiB0fHwoY29uc29sZS5pbmZvKCJObyBjb2RpY29uIGZvdW5kIGZvciBDb21wbGV0aW9uSXRlbUtpbmQgIitlKSx0PWkuc3ltYm9sUHJvcGVydHkpLHR9LG5ldyBNYXApO24uc2V0KCJtZXRob2QiLDApLG4uc2V0KCJmdW5jdGlvbiIsMSksbi5zZXQoImNvbnN0cnVjdG9yIiwyKSxuLnNldCgiZmllbGQiLDMpLG4uc2V0KCJ2YXJpYWJsZSIsNCksbi5zZXQoImNsYXNzIiw1KSxuLnNldCgic3RydWN0Iiw2KSxuLnNldCgiaW50ZXJmYWNlIiw3KSxuLnNldCgibW9kdWxlIiw4KSxuLnNldCgicHJvcGVydHkiLDkpLG4uc2V0KCJldmVudCIsMTApLG4uc2V0KCJvcGVyYXRvciIsMTEpLG4uc2V0KCJ1bml0IiwxMiksbi5zZXQoInZhbHVlIiwxMyksbi5zZXQoImNvbnN0YW50IiwxNCksbi5zZXQoImVudW0iLDE1KSxuLnNldCgiZW51bS1tZW1iZXIiLDE2KSxuLnNldCgiZW51bU1lbWJlciIsMTYpLG4uc2V0KCJrZXl3b3JkIiwxNyksbi5zZXQoInNuaXBwZXQiLDI3KSxuLnNldCgidGV4dCIsMTgpLG4uc2V0KCJjb2xvciIsMTkpLG4uc2V0KCJmaWxlIiwyMCksbi5zZXQoInJlZmVyZW5jZSIsMjEpLG4uc2V0KCJjdXN0b21jb2xvciIsMjIpLG4uc2V0KCJmb2xkZXIiLDIzKSxuLnNldCgidHlwZS1wYXJhbWV0ZXIiLDI0KSxuLnNldCgidHlwZVBhcmFtZXRlciIsMjQpLG4uc2V0KCJhY2NvdW50IiwyNSksbi5zZXQoImlzc3VlIiwyNiksVi5mcm9tU3RyaW5nPWZ1bmN0aW9uKGUsdCl7bGV0IHI9bi5nZXQoZSk7cmV0dXJuIHI9dm9pZCAwIT09cnx8dD9yOjl9fXtlPXt9O2NvbnN0IGE9bmV3IE1hcDthLnNldCgwLGkuc3ltYm9sRmlsZSksYS5zZXQoMSxpLnN5bWJvbE1vZHVsZSksYS5zZXQoMixpLnN5bWJvbE5hbWVzcGFjZSksYS5zZXQoMyxpLnN5bWJvbFBhY2thZ2UpLGEuc2V0KDQsaS5zeW1ib2xDbGFzcyksYS5zZXQoNSxpLnN5bWJvbE1ldGhvZCksYS5zZXQoNixpLnN5bWJvbFByb3BlcnR5KSxhLnNldCg3LGkuc3ltYm9sRmllbGQpLGEuc2V0KDgsaS5zeW1ib2xDb25zdHJ1Y3RvciksYS5zZXQoOSxpLnN5bWJvbEVudW0pLGEuc2V0KDEwLGkuc3ltYm9sSW50ZXJmYWNlKSxhLnNldCgxMSxpLnN5bWJvbEZ1bmN0aW9uKSxhLnNldCgxMixpLnN5bWJvbFZhcmlhYmxlKSxhLnNldCgxMyxpLnN5bWJvbENvbnN0YW50KSxhLnNldCgxNCxpLnN5bWJvbFN0cmluZyksYS5zZXQoMTUsaS5zeW1ib2xOdW1iZXIpLGEuc2V0KDE2LGkuc3ltYm9sQm9vbGVhbiksYS5zZXQoMTcsaS5zeW1ib2xBcnJheSksYS5zZXQoMTgsaS5zeW1ib2xPYmplY3QpLGEuc2V0KDE5LGkuc3ltYm9sS2V5KSxhLnNldCgyMCxpLnN5bWJvbE51bGwpLGEuc2V0KDIxLGkuc3ltYm9sRW51bU1lbWJlciksYS5zZXQoMjIsaS5zeW1ib2xTdHJ1Y3QpLGEuc2V0KDIzLGkuc3ltYm9sRXZlbnQpLGEuc2V0KDI0LGkuc3ltYm9sT3BlcmF0b3IpLGEuc2V0KDI1LGkuc3ltYm9sVHlwZVBhcmFtZXRlciksZS50b0ljb249ZnVuY3Rpb24oZSl7bGV0IHQ9YS5nZXQoZSk7cmV0dXJuIHR8fChjb25zb2xlLmluZm8oIk5vIGNvZGljb24gZm91bmQgZm9yIFN5bWJvbEtpbmQgIitlKSx0PWkuc3ltYm9sUHJvcGVydHkpLHR9fShHdHx8e30pLmlzPWZ1bmN0aW9uKGUpe3JldHVybiEoIWV8fCJvYmplY3QiIT10eXBlb2YgZSkmJigic3RyaW5nIj09dHlwZW9mIGUuaWQmJiJzdHJpbmciPT10eXBlb2YgZS50aXRsZSl9LG5ldyBjbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMuX21hcD1uZXcgTWFwLHRoaXMuX2ZhY3Rvcmllcz1uZXcgTWFwLHRoaXMuX29uRGlkQ2hhbmdlPW5ldyB0ZSx0aGlzLm9uRGlkQ2hhbmdlPXRoaXMuX29uRGlkQ2hhbmdlLmV2ZW50LHRoaXMuX2NvbG9yTWFwPW51bGx9ZmlyZShlKXt0aGlzLl9vbkRpZENoYW5nZS5maXJlKHtjaGFuZ2VkTGFuZ3VhZ2VzOmUsY2hhbmdlZENvbG9yTWFwOiExfSl9cmVnaXN0ZXIoZSx0KXtyZXR1cm4gdGhpcy5fbWFwLnNldChlLHQpLHRoaXMuZmlyZShbZV0pLHYoKCk9Pnt0aGlzLl9tYXAuZ2V0KGUpPT09dCYmKHRoaXMuX21hcC5kZWxldGUoZSksdGhpcy5maXJlKFtlXSkpfSl9cmVnaXN0ZXJGYWN0b3J5KHQsZSl7dmFyIHI7bnVsbCE9PShyPXRoaXMuX2ZhY3Rvcmllcy5nZXQodCkpJiZ2b2lkIDAhPT1yJiZyLmRpc3Bvc2UoKTtjb25zdCBuPW5ldyBYdCh0aGlzLHQsZSk7cmV0dXJuIHRoaXMuX2ZhY3Rvcmllcy5zZXQodCxuKSx2KCgpPT57Y29uc3QgZT10aGlzLl9mYWN0b3JpZXMuZ2V0KHQpO2UmJmU9PT1uJiYodGhpcy5fZmFjdG9yaWVzLmRlbGV0ZSh0KSxlLmRpc3Bvc2UoKSl9KX1nZXRPckNyZWF0ZShyKXtyZXR1cm4gWnQodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe3ZhciBlPXRoaXMuZ2V0KHIpO2lmKGUpcmV0dXJuIGU7Y29uc3QgdD10aGlzLl9mYWN0b3JpZXMuZ2V0KHIpO3JldHVybiF0fHx0LmlzUmVzb2x2ZWQ/bnVsbDooeWllbGQgdC5yZXNvbHZlKCksdGhpcy5nZXQocikpfSl9Z2V0KGUpe3JldHVybiB0aGlzLl9tYXAuZ2V0KGUpfHxudWxsfWlzUmVzb2x2ZWQoZSl7aWYodGhpcy5nZXQoZSkpcmV0dXJuITA7ZT10aGlzLl9mYWN0b3JpZXMuZ2V0KGUpO3JldHVybiEoZSYmIWUuaXNSZXNvbHZlZCl9c2V0Q29sb3JNYXAoZSl7dGhpcy5fY29sb3JNYXA9ZSx0aGlzLl9vbkRpZENoYW5nZS5maXJlKHtjaGFuZ2VkTGFuZ3VhZ2VzOkFycmF5LmZyb20odGhpcy5fbWFwLmtleXMoKSksY2hhbmdlZENvbG9yTWFwOiEwfSl9Z2V0Q29sb3JNYXAoKXtyZXR1cm4gdGhpcy5fY29sb3JNYXB9Z2V0RGVmYXVsdEJhY2tncm91bmQoKXtyZXR1cm4gdGhpcy5fY29sb3JNYXAmJjI8dGhpcy5fY29sb3JNYXAubGVuZ3RoP3RoaXMuX2NvbG9yTWFwWzJdOm51bGx9fSwodD1IdD1IdHx8e30pW3QuRGVwZW5kc09uS2JMYXlvdXQ9LTFdPSJEZXBlbmRzT25LYkxheW91dCIsdFt0LlVua25vd249MF09IlVua25vd24iLHRbdC5CYWNrc3BhY2U9MV09IkJhY2tzcGFjZSIsdFt0LlRhYj0yXT0iVGFiIix0W3QuRW50ZXI9M109IkVudGVyIix0W3QuU2hpZnQ9NF09IlNoaWZ0Iix0W3QuQ3RybD01XT0iQ3RybCIsdFt0LkFsdD02XT0iQWx0Iix0W3QuUGF1c2VCcmVhaz03XT0iUGF1c2VCcmVhayIsdFt0LkNhcHNMb2NrPThdPSJDYXBzTG9jayIsdFt0LkVzY2FwZT05XT0iRXNjYXBlIix0W3QuU3BhY2U9MTBdPSJTcGFjZSIsdFt0LlBhZ2VVcD0xMV09IlBhZ2VVcCIsdFt0LlBhZ2VEb3duPTEyXT0iUGFnZURvd24iLHRbdC5FbmQ9MTNdPSJFbmQiLHRbdC5Ib21lPTE0XT0iSG9tZSIsdFt0LkxlZnRBcnJvdz0xNV09IkxlZnRBcnJvdyIsdFt0LlVwQXJyb3c9MTZdPSJVcEFycm93Iix0W3QuUmlnaHRBcnJvdz0xN109IlJpZ2h0QXJyb3ciLHRbdC5Eb3duQXJyb3c9MThdPSJEb3duQXJyb3ciLHRbdC5JbnNlcnQ9MTldPSJJbnNlcnQiLHRbdC5EZWxldGU9MjBdPSJEZWxldGUiLHRbdC5EaWdpdDA9MjFdPSJEaWdpdDAiLHRbdC5EaWdpdDE9MjJdPSJEaWdpdDEiLHRbdC5EaWdpdDI9MjNdPSJEaWdpdDIiLHRbdC5EaWdpdDM9MjRdPSJEaWdpdDMiLHRbdC5EaWdpdDQ9MjVdPSJEaWdpdDQiLHRbdC5EaWdpdDU9MjZdPSJEaWdpdDUiLHRbdC5EaWdpdDY9MjddPSJEaWdpdDYiLHRbdC5EaWdpdDc9MjhdPSJEaWdpdDciLHRbdC5EaWdpdDg9MjldPSJEaWdpdDgiLHRbdC5EaWdpdDk9MzBdPSJEaWdpdDkiLHRbdC5LZXlBPTMxXT0iS2V5QSIsdFt0LktleUI9MzJdPSJLZXlCIix0W3QuS2V5Qz0zM109IktleUMiLHRbdC5LZXlEPTM0XT0iS2V5RCIsdFt0LktleUU9MzVdPSJLZXlFIix0W3QuS2V5Rj0zNl09IktleUYiLHRbdC5LZXlHPTM3XT0iS2V5RyIsdFt0LktleUg9MzhdPSJLZXlIIix0W3QuS2V5ST0zOV09IktleUkiLHRbdC5LZXlKPTQwXT0iS2V5SiIsdFt0LktleUs9NDFdPSJLZXlLIix0W3QuS2V5TD00Ml09IktleUwiLHRbdC5LZXlNPTQzXT0iS2V5TSIsdFt0LktleU49NDRdPSJLZXlOIix0W3QuS2V5Tz00NV09IktleU8iLHRbdC5LZXlQPTQ2XT0iS2V5UCIsdFt0LktleVE9NDddPSJLZXlRIix0W3QuS2V5Uj00OF09IktleVIiLHRbdC5LZXlTPTQ5XT0iS2V5UyIsdFt0LktleVQ9NTBdPSJLZXlUIix0W3QuS2V5VT01MV09IktleVUiLHRbdC5LZXlWPTUyXT0iS2V5ViIsdFt0LktleVc9NTNdPSJLZXlXIix0W3QuS2V5WD01NF09IktleVgiLHRbdC5LZXlZPTU1XT0iS2V5WSIsdFt0LktleVo9NTZdPSJLZXlaIix0W3QuTWV0YT01N109Ik1ldGEiLHRbdC5Db250ZXh0TWVudT01OF09IkNvbnRleHRNZW51Iix0W3QuRjE9NTldPSJGMSIsdFt0LkYyPTYwXT0iRjIiLHRbdC5GMz02MV09IkYzIix0W3QuRjQ9NjJdPSJGNCIsdFt0LkY1PTYzXT0iRjUiLHRbdC5GNj02NF09IkY2Iix0W3QuRjc9NjVdPSJGNyIsdFt0LkY4PTY2XT0iRjgiLHRbdC5GOT02N109IkY5Iix0W3QuRjEwPTY4XT0iRjEwIix0W3QuRjExPTY5XT0iRjExIix0W3QuRjEyPTcwXT0iRjEyIix0W3QuRjEzPTcxXT0iRjEzIix0W3QuRjE0PTcyXT0iRjE0Iix0W3QuRjE1PTczXT0iRjE1Iix0W3QuRjE2PTc0XT0iRjE2Iix0W3QuRjE3PTc1XT0iRjE3Iix0W3QuRjE4PTc2XT0iRjE4Iix0W3QuRjE5PTc3XT0iRjE5Iix0W3QuTnVtTG9jaz03OF09Ik51bUxvY2siLHRbdC5TY3JvbGxMb2NrPTc5XT0iU2Nyb2xsTG9jayIsdFt0LlNlbWljb2xvbj04MF09IlNlbWljb2xvbiIsdFt0LkVxdWFsPTgxXT0iRXF1YWwiLHRbdC5Db21tYT04Ml09IkNvbW1hIix0W3QuTWludXM9ODNdPSJNaW51cyIsdFt0LlBlcmlvZD04NF09IlBlcmlvZCIsdFt0LlNsYXNoPTg1XT0iU2xhc2giLHRbdC5CYWNrcXVvdGU9ODZdPSJCYWNrcXVvdGUiLHRbdC5CcmFja2V0TGVmdD04N109IkJyYWNrZXRMZWZ0Iix0W3QuQmFja3NsYXNoPTg4XT0iQmFja3NsYXNoIix0W3QuQnJhY2tldFJpZ2h0PTg5XT0iQnJhY2tldFJpZ2h0Iix0W3QuUXVvdGU9OTBdPSJRdW90ZSIsdFt0Lk9FTV84PTkxXT0iT0VNXzgiLHRbdC5JbnRsQmFja3NsYXNoPTkyXT0iSW50bEJhY2tzbGFzaCIsdFt0Lk51bXBhZDA9OTNdPSJOdW1wYWQwIix0W3QuTnVtcGFkMT05NF09Ik51bXBhZDEiLHRbdC5OdW1wYWQyPTk1XT0iTnVtcGFkMiIsdFt0Lk51bXBhZDM9OTZdPSJOdW1wYWQzIix0W3QuTnVtcGFkND05N109Ik51bXBhZDQiLHRbdC5OdW1wYWQ1PTk4XT0iTnVtcGFkNSIsdFt0Lk51bXBhZDY9OTldPSJOdW1wYWQ2Iix0W3QuTnVtcGFkNz0xMDBdPSJOdW1wYWQ3Iix0W3QuTnVtcGFkOD0xMDFdPSJOdW1wYWQ4Iix0W3QuTnVtcGFkOT0xMDJdPSJOdW1wYWQ5Iix0W3QuTnVtcGFkTXVsdGlwbHk9MTAzXT0iTnVtcGFkTXVsdGlwbHkiLHRbdC5OdW1wYWRBZGQ9MTA0XT0iTnVtcGFkQWRkIix0W3QuTlVNUEFEX1NFUEFSQVRPUj0xMDVdPSJOVU1QQURfU0VQQVJBVE9SIix0W3QuTnVtcGFkU3VidHJhY3Q9MTA2XT0iTnVtcGFkU3VidHJhY3QiLHRbdC5OdW1wYWREZWNpbWFsPTEwN109Ik51bXBhZERlY2ltYWwiLHRbdC5OdW1wYWREaXZpZGU9MTA4XT0iTnVtcGFkRGl2aWRlIix0W3QuS0VZX0lOX0NPTVBPU0lUSU9OPTEwOV09IktFWV9JTl9DT01QT1NJVElPTiIsdFt0LkFCTlRfQzE9MTEwXT0iQUJOVF9DMSIsdFt0LkFCTlRfQzI9MTExXT0iQUJOVF9DMiIsdFt0LkF1ZGlvVm9sdW1lTXV0ZT0xMTJdPSJBdWRpb1ZvbHVtZU11dGUiLHRbdC5BdWRpb1ZvbHVtZVVwPTExM109IkF1ZGlvVm9sdW1lVXAiLHRbdC5BdWRpb1ZvbHVtZURvd249MTE0XT0iQXVkaW9Wb2x1bWVEb3duIix0W3QuQnJvd3NlclNlYXJjaD0xMTVdPSJCcm93c2VyU2VhcmNoIix0W3QuQnJvd3NlckhvbWU9MTE2XT0iQnJvd3NlckhvbWUiLHRbdC5Ccm93c2VyQmFjaz0xMTddPSJCcm93c2VyQmFjayIsdFt0LkJyb3dzZXJGb3J3YXJkPTExOF09IkJyb3dzZXJGb3J3YXJkIix0W3QuTWVkaWFUcmFja05leHQ9MTE5XT0iTWVkaWFUcmFja05leHQiLHRbdC5NZWRpYVRyYWNrUHJldmlvdXM9MTIwXT0iTWVkaWFUcmFja1ByZXZpb3VzIix0W3QuTWVkaWFTdG9wPTEyMV09Ik1lZGlhU3RvcCIsdFt0Lk1lZGlhUGxheVBhdXNlPTEyMl09Ik1lZGlhUGxheVBhdXNlIix0W3QuTGF1bmNoTWVkaWFQbGF5ZXI9MTIzXT0iTGF1bmNoTWVkaWFQbGF5ZXIiLHRbdC5MYXVuY2hNYWlsPTEyNF09IkxhdW5jaE1haWwiLHRbdC5MYXVuY2hBcHAyPTEyNV09IkxhdW5jaEFwcDIiLHRbdC5DbGVhcj0xMjZdPSJDbGVhciIsdFt0Lk1BWF9WQUxVRT0xMjddPSJNQVhfVkFMVUUiLChRdD16dD16dHx8e30pW1F0LlRyYWNlPTBdPSJUcmFjZSIsUXRbUXQuRGVidWc9MV09IkRlYnVnIixRdFtRdC5JbmZvPTJdPSJJbmZvIixRdFtRdC5XYXJuaW5nPTNdPSJXYXJuaW5nIixRdFtRdC5FcnJvcj00XT0iRXJyb3IiLFF0W1F0LkNyaXRpY2FsPTVdPSJDcml0aWNhbCIsUXRbUXQuT2ZmPTZdPSJPZmYiLChFPVd0PVd0fHx7fSlbRS5QYXJhZ3JhcGg9MF09IlBhcmFncmFwaCIsRVtFLkJyZWFrPTFdPSJCcmVhayIsKGU9anQ9anR8fHt9KVtlLkhpbnQ9MV09IkhpbnQiLGVbZS5JbmZvPTJdPSJJbmZvIixlW2UuV2FybmluZz00XT0iV2FybmluZyIsZVtlLkVycm9yPThdPSJFcnJvciIsKEd0PSR0PSR0fHx7fSlbR3QuVW5uZWNlc3Nhcnk9MV09IlVubmVjZXNzYXJ5IixHdFtHdC5EZXByZWNhdGVkPTJdPSJEZXByZWNhdGVkIiwoUXQ9SnQ9SnR8fHt9KVtRdC5MVFI9MF09IkxUUiIsUXRbUXQuUlRMPTFdPSJSVEwiO2NsYXNzIGlye2NvbnN0cnVjdG9yKCl7dGhpc1tZdF09IkxpbmtlZE1hcCIsdGhpcy5fbWFwPW5ldyBNYXAsdGhpcy5faGVhZD12b2lkIDAsdGhpcy5fdGFpbD12b2lkIDAsdGhpcy5fc2l6ZT0wLHRoaXMuX3N0YXRlPTB9Y2xlYXIoKXt0aGlzLl9tYXAuY2xlYXIoKSx0aGlzLl9oZWFkPXZvaWQgMCx0aGlzLl90YWlsPXZvaWQgMCx0aGlzLl9zaXplPTAsdGhpcy5fc3RhdGUrK31pc0VtcHR5KCl7cmV0dXJuIXRoaXMuX2hlYWQmJiF0aGlzLl90YWlsfWdldCBzaXplKCl7cmV0dXJuIHRoaXMuX3NpemV9Z2V0IGZpcnN0KCl7dmFyIGU7cmV0dXJuIG51bGw9PT0oZT10aGlzLl9oZWFkKXx8dm9pZCAwPT09ZT92b2lkIDA6ZS52YWx1ZX1nZXQgbGFzdCgpe3ZhciBlO3JldHVybiBudWxsPT09KGU9dGhpcy5fdGFpbCl8fHZvaWQgMD09PWU/dm9pZCAwOmUudmFsdWV9aGFzKGUpe3JldHVybiB0aGlzLl9tYXAuaGFzKGUpfWdldChlLHQ9MCl7ZT10aGlzLl9tYXAuZ2V0KGUpO2lmKGUpcmV0dXJuIDAhPT10JiZ0aGlzLnRvdWNoKGUsdCksZS52YWx1ZX1zZXQoZSx0LHI9MCl7bGV0IG49dGhpcy5fbWFwLmdldChlKTtpZihuKW4udmFsdWU9dCwwIT09ciYmdGhpcy50b3VjaChuLHIpO2Vsc2V7c3dpdGNoKG49e2tleTplLHZhbHVlOnQsbmV4dDp2b2lkIDAscHJldmlvdXM6dm9pZCAwfSxyKXtjYXNlIDA6dGhpcy5hZGRJdGVtTGFzdChuKTticmVhaztjYXNlIDE6dGhpcy5hZGRJdGVtRmlyc3Qobik7YnJlYWs7ZGVmYXVsdDp0aGlzLmFkZEl0ZW1MYXN0KG4pfXRoaXMuX21hcC5zZXQoZSxuKSx0aGlzLl9zaXplKyt9cmV0dXJuIHRoaXN9ZGVsZXRlKGUpe3JldHVybiEhdGhpcy5yZW1vdmUoZSl9cmVtb3ZlKGUpe3ZhciB0PXRoaXMuX21hcC5nZXQoZSk7aWYodClyZXR1cm4gdGhpcy5fbWFwLmRlbGV0ZShlKSx0aGlzLnJlbW92ZUl0ZW0odCksdGhpcy5fc2l6ZS0tLHQudmFsdWV9c2hpZnQoKXtpZih0aGlzLl9oZWFkfHx0aGlzLl90YWlsKXtpZighdGhpcy5faGVhZHx8IXRoaXMuX3RhaWwpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGxpc3QiKTt2YXIgZT10aGlzLl9oZWFkO3JldHVybiB0aGlzLl9tYXAuZGVsZXRlKGUua2V5KSx0aGlzLnJlbW92ZUl0ZW0oZSksdGhpcy5fc2l6ZS0tLGUudmFsdWV9fWZvckVhY2goZSx0KXt2YXIgcj10aGlzLl9zdGF0ZTtsZXQgbj10aGlzLl9oZWFkO2Zvcig7bjspe2lmKCh0P2UuYmluZCh0KTplKShuLnZhbHVlLG4ua2V5LHRoaXMpLHRoaXMuX3N0YXRlIT09cil0aHJvdyBuZXcgRXJyb3IoIkxpbmtlZE1hcCBnb3QgbW9kaWZpZWQgZHVyaW5nIGl0ZXJhdGlvbi4iKTtuPW4ubmV4dH19a2V5cygpe2NvbnN0IHQ9dGhpcyxyPXRoaXMuX3N0YXRlO2xldCBuPXRoaXMuX2hlYWQ7Y29uc3QgZT17W1N5bWJvbC5pdGVyYXRvcl0oKXtyZXR1cm4gZX0sbmV4dCgpe2lmKHQuX3N0YXRlIT09cil0aHJvdyBuZXcgRXJyb3IoIkxpbmtlZE1hcCBnb3QgbW9kaWZpZWQgZHVyaW5nIGl0ZXJhdGlvbi4iKTt2YXIgZTtyZXR1cm4gbj8oZT17dmFsdWU6bi5rZXksZG9uZTohMX0sbj1uLm5leHQsZSk6e3ZhbHVlOnZvaWQgMCxkb25lOiEwfX19O3JldHVybiBlfXZhbHVlcygpe2NvbnN0IHQ9dGhpcyxyPXRoaXMuX3N0YXRlO2xldCBuPXRoaXMuX2hlYWQ7Y29uc3QgZT17W1N5bWJvbC5pdGVyYXRvcl0oKXtyZXR1cm4gZX0sbmV4dCgpe2lmKHQuX3N0YXRlIT09cil0aHJvdyBuZXcgRXJyb3IoIkxpbmtlZE1hcCBnb3QgbW9kaWZpZWQgZHVyaW5nIGl0ZXJhdGlvbi4iKTt2YXIgZTtyZXR1cm4gbj8oZT17dmFsdWU6bi52YWx1ZSxkb25lOiExfSxuPW4ubmV4dCxlKTp7dmFsdWU6dm9pZCAwLGRvbmU6ITB9fX07cmV0dXJuIGV9ZW50cmllcygpe2NvbnN0IHQ9dGhpcyxyPXRoaXMuX3N0YXRlO2xldCBuPXRoaXMuX2hlYWQ7Y29uc3QgZT17W1N5bWJvbC5pdGVyYXRvcl0oKXtyZXR1cm4gZX0sbmV4dCgpe2lmKHQuX3N0YXRlIT09cil0aHJvdyBuZXcgRXJyb3IoIkxpbmtlZE1hcCBnb3QgbW9kaWZpZWQgZHVyaW5nIGl0ZXJhdGlvbi4iKTt2YXIgZTtyZXR1cm4gbj8oZT17dmFsdWU6W24ua2V5LG4udmFsdWVdLGRvbmU6ITF9LG49bi5uZXh0LGUpOnt2YWx1ZTp2b2lkIDAsZG9uZTohMH19fTtyZXR1cm4gZX1bKFl0PVN5bWJvbC50b1N0cmluZ1RhZyxTeW1ib2wuaXRlcmF0b3IpXSgpe3JldHVybiB0aGlzLmVudHJpZXMoKX10cmltT2xkKHIpe2lmKCEocj49dGhpcy5zaXplKSlpZigwIT09cil7bGV0IGU9dGhpcy5faGVhZCx0PXRoaXMuc2l6ZTtmb3IoO2UmJnQ+cjspdGhpcy5fbWFwLmRlbGV0ZShlLmtleSksZT1lLm5leHQsdC0tO3RoaXMuX2hlYWQ9ZSx0aGlzLl9zaXplPXQsZSYmKGUucHJldmlvdXM9dm9pZCAwKSx0aGlzLl9zdGF0ZSsrfWVsc2UgdGhpcy5jbGVhcigpfWFkZEl0ZW1GaXJzdChlKXtpZih0aGlzLl9oZWFkfHx0aGlzLl90YWlsKXtpZighdGhpcy5faGVhZCl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgbGlzdCIpO2UubmV4dD10aGlzLl9oZWFkLHRoaXMuX2hlYWQucHJldmlvdXM9ZX1lbHNlIHRoaXMuX3RhaWw9ZTt0aGlzLl9oZWFkPWUsdGhpcy5fc3RhdGUrK31hZGRJdGVtTGFzdChlKXtpZih0aGlzLl9oZWFkfHx0aGlzLl90YWlsKXtpZighdGhpcy5fdGFpbCl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgbGlzdCIpO2UucHJldmlvdXM9dGhpcy5fdGFpbCx0aGlzLl90YWlsLm5leHQ9ZX1lbHNlIHRoaXMuX2hlYWQ9ZTt0aGlzLl90YWlsPWUsdGhpcy5fc3RhdGUrK31yZW1vdmVJdGVtKGUpe2lmKGU9PT10aGlzLl9oZWFkJiZlPT09dGhpcy5fdGFpbCl0aGlzLl9oZWFkPXZvaWQgMCx0aGlzLl90YWlsPXZvaWQgMDtlbHNlIGlmKGU9PT10aGlzLl9oZWFkKXtpZighZS5uZXh0KXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBsaXN0Iik7ZS5uZXh0LnByZXZpb3VzPXZvaWQgMCx0aGlzLl9oZWFkPWUubmV4dH1lbHNlIGlmKGU9PT10aGlzLl90YWlsKXtpZighZS5wcmV2aW91cyl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgbGlzdCIpO2UucHJldmlvdXMubmV4dD12b2lkIDAsdGhpcy5fdGFpbD1lLnByZXZpb3VzfWVsc2V7Y29uc3QgdD1lLm5leHQscj1lLnByZXZpb3VzO2lmKCF0fHwhcil0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgbGlzdCIpOyh0LnByZXZpb3VzPXIpLm5leHQ9dH1lLm5leHQ9dm9pZCAwLGUucHJldmlvdXM9dm9pZCAwLHRoaXMuX3N0YXRlKyt9dG91Y2goZSx0KXtpZighdGhpcy5faGVhZHx8IXRoaXMuX3RhaWwpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGxpc3QiKTtpZigxPT09dHx8Mj09PXQpaWYoMT09PXQpe2lmKGUhPT10aGlzLl9oZWFkKXtjb25zdCByPWUubmV4dCxuPWUucHJldmlvdXM7ZT09PXRoaXMuX3RhaWw/KG4ubmV4dD12b2lkIDAsdGhpcy5fdGFpbD1uKTooci5wcmV2aW91cz1uKS5uZXh0PXIsZS5wcmV2aW91cz12b2lkIDAsZS5uZXh0PXRoaXMuX2hlYWQsdGhpcy5faGVhZC5wcmV2aW91cz1lLHRoaXMuX2hlYWQ9ZSx0aGlzLl9zdGF0ZSsrfX1lbHNlIGlmKDI9PT10JiZlIT09dGhpcy5fdGFpbCl7Y29uc3QgaT1lLm5leHQsYT1lLnByZXZpb3VzO2U9PT10aGlzLl9oZWFkPyhpLnByZXZpb3VzPXZvaWQgMCx0aGlzLl9oZWFkPWkpOihpLnByZXZpb3VzPWEpLm5leHQ9aSxlLm5leHQ9dm9pZCAwLGUucHJldmlvdXM9dGhpcy5fdGFpbCx0aGlzLl90YWlsLm5leHQ9ZSx0aGlzLl90YWlsPWUsdGhpcy5fc3RhdGUrK319dG9KU09OKCl7Y29uc3Qgcj1bXTtyZXR1cm4gdGhpcy5mb3JFYWNoKChlLHQpPT57ci5wdXNoKFt0LGVdKX0pLHJ9ZnJvbUpTT04oZSl7dGhpcy5jbGVhcigpO2Zvcih2YXJbdCxyXW9mIGUpdGhpcy5zZXQodCxyKX19ZnVuY3Rpb24gYXIoZSx0LHIpe2lmKCFyfHxyLmxlbmd0aDx0Lmxlbmd0aClyZXR1cm4gbnVsbDtsZXQgbjt2YXIgaSxhO3JldHVybihuPWU/KGU9cixhPShpPXQpLmxlbmd0aCwhKGkubGVuZ3RoPmUubGVuZ3RoKSYmMD09PWFlKGUsaSwwLGEpKTowPT09ci5pbmRleE9mKHQpKT8wPHQubGVuZ3RoP1t7c3RhcnQ6MCxlbmQ6dC5sZW5ndGh9XTpbXTpudWxsfWFyLmJpbmQodm9pZCAwLCExKSxhci5iaW5kKHZvaWQgMCwhMCk7Y29uc3Qgb3I9bmV3IFNldDsiKClbXXt9PD5gJ1wiLS87OiwuPyEiLnNwbGl0KCIiKS5mb3JFYWNoKGU9Pm9yLmFkZChlLmNoYXJDb2RlQXQoMCkpKSxuZXcgY2xhc3MgZXh0ZW5kcyBpcntjb25zdHJ1Y3RvcihlLHQ9MSl7c3VwZXIoKSx0aGlzLl9saW1pdD1lLHRoaXMuX3JhdGlvPU1hdGgubWluKE1hdGgubWF4KDAsdCksMSl9Z2V0IGxpbWl0KCl7cmV0dXJuIHRoaXMuX2xpbWl0fXNldCBsaW1pdChlKXt0aGlzLl9saW1pdD1lLHRoaXMuY2hlY2tUcmltKCl9Z2V0KGUsdD0yKXtyZXR1cm4gc3VwZXIuZ2V0KGUsdCl9cGVlayhlKXtyZXR1cm4gc3VwZXIuZ2V0KGUsMCl9c2V0KGUsdCl7cmV0dXJuIHN1cGVyLnNldChlLHQsMiksdGhpcy5jaGVja1RyaW0oKSx0aGlzfWNoZWNrVHJpbSgpe3RoaXMuc2l6ZT50aGlzLl9saW1pdCYmdGhpcy50cmltT2xkKE1hdGgucm91bmQodGhpcy5fbGltaXQqdGhpcy5fcmF0aW8pKX19KDFlNCk7ZnVuY3Rpb24gc3IoKXtjb25zdCB0PVtdLHI9W107Zm9yKGxldCBlPTA7ZTw9MTI4O2UrKylyW2VdPTA7Zm9yKGxldCBlPTA7ZTw9MTI4O2UrKyl0LnB1c2goci5zbGljZSgwKSk7cmV0dXJuIHR9ZnVuY3Rpb24gbHIodCl7Y29uc3Qgcj1bXTtmb3IobGV0IGU9MDtlPD10O2UrKylyW2VdPTA7cmV0dXJuIHJ9bHIoMjU2KSxscigyNTYpLHNyKCksc3IoKSxzcigpO3ZhciBocixjcix1cixFPW5ldyBSZWdFeHAoYFxcJFxcKCR7cXQuaWNvbk5hbWVFeHByZXNzaW9ufSg/OiR7cXQuaWNvbk1vZGlmaWVyRXhwcmVzc2lvbn0pP1xcKWAsImciKTtuZXcgUmVnRXhwKHF0Lmljb25OYW1lQ2hhcmFjdGVyKTtjb25zdCBkcj1uZXcgUmVnRXhwKCIoXFxcXCk/IitFLnNvdXJjZSwiZyIpO25ldyBSZWdFeHAoIlxcXFwiK0Uuc291cmNlLCJnIiksbmV3IFJlZ0V4cChgKFxccyk/KFxcXFwpPyR7RS5zb3VyY2V9KFxccyk/YCwiZyIpO2NsYXNzIGZye2NvbnN0cnVjdG9yKGU9IiIsdD0hMSl7aWYodGhpcy52YWx1ZT1lLCJzdHJpbmciIT10eXBlb2YgdGhpcy52YWx1ZSl0aHJvdyhlPSJ2YWx1ZSIpP25ldyBFcnJvcigiSWxsZWdhbCBhcmd1bWVudDogIitlKTpuZXcgRXJyb3IoIklsbGVnYWwgYXJndW1lbnQiKTsiYm9vbGVhbiI9PXR5cGVvZiB0Pyh0aGlzLmlzVHJ1c3RlZD10LHRoaXMuc3VwcG9ydFRoZW1lSWNvbnM9ITEsdGhpcy5zdXBwb3J0SHRtbD0hMSk6KHRoaXMuaXNUcnVzdGVkPW51bGwhPT0oZT10LmlzVHJ1c3RlZCkmJnZvaWQgMCE9PWU/ZTp2b2lkIDAsdGhpcy5zdXBwb3J0VGhlbWVJY29ucz1udWxsIT09KGU9dC5zdXBwb3J0VGhlbWVJY29ucykmJnZvaWQgMCE9PWUmJmUsdGhpcy5zdXBwb3J0SHRtbD1udWxsIT09KGU9dC5zdXBwb3J0SHRtbCkmJnZvaWQgMCE9PWUmJmUpfWFwcGVuZFRleHQoZSx0PTApe3JldHVybiB0aGlzLnZhbHVlKz0odGhpcy5zdXBwb3J0VGhlbWVJY29ucz9lLnJlcGxhY2UoZHIsKGUsdCk9PnQ/ZToiXFwiK2UpOmUpLnJlcGxhY2UoL1tcXGAqX3t9W1xdKCkjK1wtIV0vZywiXFwkJiIpLnJlcGxhY2UoLyhbIFx0XSspL2csKGUsdCk9PiImbmJzcDsiLnJlcGVhdCh0Lmxlbmd0aCkpLnJlcGxhY2UoL1w+L2dtLCJcXD4iKS5yZXBsYWNlKC9cbi9nLDE9PT10PyJcXFxuIjoiXG5cbiIpLHRoaXN9YXBwZW5kTWFya2Rvd24oZSl7cmV0dXJuIHRoaXMudmFsdWUrPWUsdGhpc31hcHBlbmRDb2RlYmxvY2soZSx0KXtyZXR1cm4gdGhpcy52YWx1ZSs9IlxuYGBgIix0aGlzLnZhbHVlKz1lLHRoaXMudmFsdWUrPSJcbiIsdGhpcy52YWx1ZSs9dCx0aGlzLnZhbHVlKz0iXG5gYGBcbiIsdGhpc319ZnVuY3Rpb24gbXIoZSl7aWYoaHIuc2VydmljZUlkcy5oYXMoZSkpcmV0dXJuIGhyLnNlcnZpY2VJZHMuZ2V0KGUpO2Z1bmN0aW9uIGkoZSx0LHIpe2lmKDMhPT1hcmd1bWVudHMubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiQElTZXJ2aWNlTmFtZS1kZWNvcmF0b3IgY2FuIG9ubHkgYmUgdXNlZCB0byBkZWNvcmF0ZSBhIHBhcmFtZXRlciIpO3ZhciBuO249aSxyPXIsKGU9ZSlbaHIuRElfVEFSR0VUXT09PWU/ZVtoci5ESV9ERVBFTkRFTkNJRVNdLnB1c2goe2lkOm4saW5kZXg6cn0pOihlW2hyLkRJX0RFUEVOREVOQ0lFU109W3tpZDpuLGluZGV4OnJ9XSxlW2hyLkRJX1RBUkdFVF09ZSl9cmV0dXJuIGkudG9TdHJpbmc9KCk9PmUsaHIuc2VydmljZUlkcy5zZXQoZSxpKSxpLDF9KGNyPWhyPWhyfHx7fSkuc2VydmljZUlkcz1uZXcgTWFwLGNyLkRJX1RBUkdFVD0iJGRpJHRhcmdldCIsY3IuRElfREVQRU5ERU5DSUVTPSIkZGkkZGVwZW5kZW5jaWVzIixjci5nZXRTZXJ2aWNlRGVwZW5kZW5jaWVzPWZ1bmN0aW9uKGUpe3JldHVybiBlW2NyLkRJX0RFUEVOREVOQ0lFU118fFtdfSxtcigiaW5zdGFudGlhdGlvblNlcnZpY2UiKSxtcigibG9nU2VydmljZSIpLG1yKCJsb2dnZXJTZXJ2aWNlIiksKGU9dXI9dXJ8fHt9KVtlLlRyYWNlPTBdPSJUcmFjZSIsZVtlLkRlYnVnPTFdPSJEZWJ1ZyIsZVtlLkluZm89Ml09IkluZm8iLGVbZS5XYXJuaW5nPTNdPSJXYXJuaW5nIixlW2UuRXJyb3I9NF09IkVycm9yIixlW2UuQ3JpdGljYWw9NV09IkNyaXRpY2FsIixlW2UuT2ZmPTZdPSJPZmYiO2NvbnN0IGdyPXVyLkluZm87Y2xhc3MgYnIgZXh0ZW5kcyBMe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLmxldmVsPWdyLHRoaXMuX29uRGlkQ2hhbmdlTG9nTGV2ZWw9dGhpcy5fcmVnaXN0ZXIobmV3IHRlKSx0aGlzLm9uRGlkQ2hhbmdlTG9nTGV2ZWw9dGhpcy5fb25EaWRDaGFuZ2VMb2dMZXZlbC5ldmVudH1zZXRMZXZlbChlKXt0aGlzLmxldmVsIT09ZSYmKHRoaXMubGV2ZWw9ZSx0aGlzLl9vbkRpZENoYW5nZUxvZ0xldmVsLmZpcmUodGhpcy5sZXZlbCkpfWdldExldmVsKCl7cmV0dXJuIHRoaXMubGV2ZWx9fWNsYXNzIENyIGV4dGVuZHMgYnJ7Y29uc3RydWN0b3IoZT1ncil7c3VwZXIoKSx0aGlzLnNldExldmVsKGUpfXRyYWNlKGUsLi4udCl7dGhpcy5nZXRMZXZlbCgpPD11ci5UcmFjZSYmY29uc29sZS5sb2coIiVjVFJBQ0UiLCJjb2xvcjogIzg4OCIsZSwuLi50KX1kZWJ1ZyhlLC4uLnQpe3RoaXMuZ2V0TGV2ZWwoKTw9dXIuRGVidWcmJmNvbnNvbGUubG9nKCIlY0RFQlVHIiwiYmFja2dyb3VuZDogI2VlZTsgY29sb3I6ICM4ODgiLGUsLi4udCl9aW5mbyhlLC4uLnQpe3RoaXMuZ2V0TGV2ZWwoKTw9dXIuSW5mbyYmY29uc29sZS5sb2coIiVjIElORk8iLCJjb2xvcjogIzMzZiIsZSwuLi50KX13YXJuKGUsLi4udCl7dGhpcy5nZXRMZXZlbCgpPD11ci5XYXJuaW5nJiZjb25zb2xlLmxvZygiJWMgV0FSTiIsImNvbG9yOiAjOTkzIixlLC4uLnQpfWVycm9yKGUsLi4udCl7dGhpcy5nZXRMZXZlbCgpPD11ci5FcnJvciYmY29uc29sZS5sb2coIiVjICBFUlIiLCJjb2xvcjogI2YzMyIsZSwuLi50KX1jcml0aWNhbChlLC4uLnQpe3RoaXMuZ2V0TGV2ZWwoKTw9dXIuQ3JpdGljYWwmJmNvbnNvbGUubG9nKCIlY0NSSVRJIiwiYmFja2dyb3VuZDogI2YzMzsgY29sb3I6IHdoaXRlIixlLC4uLnQpfWRpc3Bvc2UoKXt9Zmx1c2goKXt9fWNsYXNzIHBye3N0YXRpYyBjaG9yZChlLHQpe3JldHVybihlfCg2NTUzNSZ0KTw8MTY+Pj4wKT4+PjB9fWZ1bmN0aW9uIHdyKGUsdCxyLG4saSl7cmV0dXJuIGZ1bmN0aW9uKGUsdCxyLG4pe2lmKDA9PT1yKXJldHVybiAxO3ZhciBpPXQuY2hhckNvZGVBdChyLTEpO2lmKDAhPT1lLmdldChpKSlyZXR1cm4gMTtpZigxMz09PWl8fDEwPT09aSlyZXR1cm4gMTtpZigwPG4pe2k9dC5jaGFyQ29kZUF0KHIpO2lmKDAhPT1lLmdldChpKSlyZXR1cm4gMX1yZXR1cm59KGUsdCxuLGkpJiZmdW5jdGlvbihlLHQscixuLGkpe2lmKG4raT09PXIpcmV0dXJuIDE7aWYocj10LmNoYXJDb2RlQXQobitpKSwwIT09ZS5nZXQocikpcmV0dXJuIDE7aWYoMTM9PT1yfHwxMD09PXIpcmV0dXJuIDE7aWYoMDxpKXtyPXQuY2hhckNvZGVBdChuK2ktMSk7aWYoMCE9PWUuZ2V0KHIpKXJldHVybiAxfXJldHVybn0oZSx0LHIsbixpKX1wci5DdHJsQ21kPTIwNDgscHIuU2hpZnQ9MTAyNCxwci5BbHQ9NTEyLHByLldpbkN0cmw9MjU2O2NsYXNzIF9ye2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5fd29yZFNlcGFyYXRvcnM9ZSx0aGlzLl9zZWFyY2hSZWdleD10LHRoaXMuX3ByZXZNYXRjaFN0YXJ0SW5kZXg9LTEsdGhpcy5fcHJldk1hdGNoTGVuZ3RoPTB9cmVzZXQoZSl7dGhpcy5fc2VhcmNoUmVnZXgubGFzdEluZGV4PWUsdGhpcy5fcHJldk1hdGNoU3RhcnRJbmRleD0tMSx0aGlzLl9wcmV2TWF0Y2hMZW5ndGg9MH1uZXh0KGUpe3ZhciB0PWUubGVuZ3RoO2xldCByO2Rve2lmKHRoaXMuX3ByZXZNYXRjaFN0YXJ0SW5kZXgrdGhpcy5fcHJldk1hdGNoTGVuZ3RoPT09dClyZXR1cm4gbnVsbDtpZighKHI9dGhpcy5fc2VhcmNoUmVnZXguZXhlYyhlKSkpcmV0dXJuIG51bGw7dmFyIG49ci5pbmRleCxpPXJbMF0ubGVuZ3RoO2lmKG4hPT10aGlzLl9wcmV2TWF0Y2hTdGFydEluZGV4fHxpIT09dGhpcy5fcHJldk1hdGNoTGVuZ3RoKXtpZih0aGlzLl9wcmV2TWF0Y2hTdGFydEluZGV4PW4sdGhpcy5fcHJldk1hdGNoTGVuZ3RoPWksIXRoaXMuX3dvcmRTZXBhcmF0b3JzfHx3cih0aGlzLl93b3JkU2VwYXJhdG9ycyxlLHQsbixpKSlyZXR1cm4gcn1lbHNle2lmKDAhPT1pKXJldHVybiBudWxsOzY1NTM1PGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1lLmNoYXJDb2RlQXQocik7aWYobGUobikmJnIrMTx0KXt0PWUuY2hhckNvZGVBdChyKzEpO2lmKDU2MzIwPD0oZT10KSYmZTw9NTczNDMpcmV0dXJuIHQtNTYzMjArKG4tNTUyOTY8PDEwKSs2NTUzNn1yZXR1cm4gbn0oZSx0LHRoaXMuX3NlYXJjaFJlZ2V4Lmxhc3RJbmRleCk/dGhpcy5fc2VhcmNoUmVnZXgubGFzdEluZGV4Kz0yOnRoaXMuX3NlYXJjaFJlZ2V4Lmxhc3RJbmRleCs9MX19d2hpbGUocik7cmV0dXJuIG51bGx9fWNsYXNzIHZye3N0YXRpYyBjb21wdXRlVW5pY29kZUhpZ2hsaWdodHModCxjLGUpe3ZhciB1PWU/ZS5zdGFydExpbmVOdW1iZXI6MSxkPWU/ZS5lbmRMaW5lTnVtYmVyOnQuZ2V0TGluZUNvdW50KCk7Y29uc3Qgbj1uZXcgeXIoYyk7dmFyIGksZT1uLmdldENhbmRpZGF0ZUNvZGVQb2ludHMoKTtsZXQgcjtyPSJhbGxOb25CYXNpY0FzY2lpIj09PWU/bmV3IFJlZ0V4cCgiW15cXHRcXG5cXHJcXHgyMC1cXHg3RV0iLCJnIik6bmV3IFJlZ0V4cCgiIitmdW5jdGlvbihlKXtlPWBbJHtlLm1hcChlPT5TdHJpbmcuZnJvbUNvZGVQb2ludChlKSkuam9pbigiIikucmVwbGFjZSgvW1xcXHtcfVwqXCtcP1x8XF5cJFwuXFtcXVwoXCldL2csIlxcJCYiKX1dYDtyZXR1cm4gZX0oQXJyYXkuZnJvbShlKSksImciKTtjb25zdCBhPW5ldyBfcihudWxsLHIpLG89W107bGV0IGY9ITEsbT0wLGc9MCxiPTA7ZTpmb3IobGV0IHI9dSxlPWQ7cjw9ZTtyKyspe2NvbnN0IGg9dC5nZXRMaW5lQ29udGVudChyKTt2YXIgQz1oLmxlbmd0aDthLnJlc2V0KDApO2Rve2lmKGk9YS5uZXh0KGgpKXtsZXQgZT1pLmluZGV4LHQ9aS5pbmRleCtpWzBdLmxlbmd0aDswPGUmJmxlKGguY2hhckNvZGVBdChlLTEpKSYmZS0tLHQrMTxDJiZsZShoLmNoYXJDb2RlQXQodC0xKSkmJnQrKzt2YXIgcz1oLnN1YnN0cmluZyhlLHQpLGw9d3QoZSsxLEN0LGgsMCkscz1uLnNob3VsZEhpZ2hsaWdodE5vbkJhc2ljQVNDSUkocyxsP2wud29yZDpudWxsKTtpZigwIT09cyl7aWYoMz09PXMpbSsrO2Vsc2UgaWYoMj09PXMpZysrO2Vsc2V7aWYoMSE9PXMpdGhyb3cgbD12b2lkIDAsW2w9IlVucmVhY2hhYmxlIl09W10sbmV3IEVycm9yKGwpO2IrK31pZigxZTM8PW8ubGVuZ3RoKXtmPSEwO2JyZWFrIGV9by5wdXNoKG5ldyBwKHIsZSsxLHIsdCsxKSl9fX13aGlsZShpKX1yZXR1cm57cmFuZ2VzOm8saGFzTW9yZTpmLGFtYmlndW91c0NoYXJhY3RlckNvdW50Om0saW52aXNpYmxlQ2hhcmFjdGVyQ291bnQ6Zyxub25CYXNpY0FzY2lpQ2hhcmFjdGVyQ291bnQ6Yn19c3RhdGljIGNvbXB1dGVVbmljb2RlSGlnaGxpZ2h0UmVhc29uKGUsdCl7Y29uc3Qgcj1uZXcgeXIodCk7c3dpdGNoKHIuc2hvdWxkSGlnaGxpZ2h0Tm9uQmFzaWNBU0NJSShlLG51bGwpKXtjYXNlIDA6cmV0dXJuIG51bGw7Y2FzZSAyOnJldHVybntraW5kOjF9O2Nhc2UgMzp7Y29uc3QgYT1lLmNvZGVQb2ludEF0KDApO3ZhciBuPXIuYW1iaWd1b3VzQ2hhcmFjdGVycy5nZXRQcmltYXJ5Q29uZnVzYWJsZShhKSxpPWNlLmdldExvY2FsZXMoKS5maWx0ZXIoZT0+IWNlLmdldEluc3RhbmNlKG5ldyBTZXQoWy4uLnQuYWxsb3dlZExvY2FsZXMsZV0pKS5pc0FtYmlndW91cyhhKSk7cmV0dXJue2tpbmQ6MCxjb25mdXNhYmxlV2l0aDpTdHJpbmcuZnJvbUNvZGVQb2ludChuKSxub3RBbWJpZ3VvdXNJbkxvY2FsZXM6aX19Y2FzZSAxOnJldHVybntraW5kOjJ9fX19Y2xhc3MgeXJ7Y29uc3RydWN0b3IoZSl7dGhpcy5vcHRpb25zPWUsdGhpcy5hbGxvd2VkQ29kZVBvaW50cz1uZXcgU2V0KGUuYWxsb3dlZENvZGVQb2ludHMpLHRoaXMuYW1iaWd1b3VzQ2hhcmFjdGVycz1jZS5nZXRJbnN0YW5jZShuZXcgU2V0KGUuYWxsb3dlZExvY2FsZXMpKX1nZXRDYW5kaWRhdGVDb2RlUG9pbnRzKCl7aWYodGhpcy5vcHRpb25zLm5vbkJhc2ljQVNDSUkpcmV0dXJuImFsbE5vbkJhc2ljQXNjaWkiO2NvbnN0IGU9bmV3IFNldDtpZih0aGlzLm9wdGlvbnMuaW52aXNpYmxlQ2hhcmFjdGVycylmb3IoY29uc3QgdCBvZiB1ZS5jb2RlUG9pbnRzKUxyKFN0cmluZy5mcm9tQ29kZVBvaW50KHQpKXx8ZS5hZGQodCk7aWYodGhpcy5vcHRpb25zLmFtYmlndW91c0NoYXJhY3RlcnMpZm9yKGNvbnN0IHIgb2YgdGhpcy5hbWJpZ3VvdXNDaGFyYWN0ZXJzLmdldENvbmZ1c2FibGVDb2RlUG9pbnRzKCkpZS5hZGQocik7Zm9yKGNvbnN0IG4gb2YgdGhpcy5hbGxvd2VkQ29kZVBvaW50cyllLmRlbGV0ZShuKTtyZXR1cm4gZX1zaG91bGRIaWdobGlnaHROb25CYXNpY0FTQ0lJKGUsdCl7Y29uc3Qgcj1lLmNvZGVQb2ludEF0KDApO2lmKHRoaXMuYWxsb3dlZENvZGVQb2ludHMuaGFzKHIpKXJldHVybiAwO2lmKHRoaXMub3B0aW9ucy5ub25CYXNpY0FTQ0lJKXJldHVybiAxO2xldCBuPSExLGk9ITE7aWYodClmb3IodmFyIGEgb2YgdCl7Y29uc3Qgcj1hLmNvZGVQb2ludEF0KDApO2E9YTthPWhlLnRlc3QoYSk7bj1ufHxhLGF8fHRoaXMuYW1iaWd1b3VzQ2hhcmFjdGVycy5pc0FtYmlndW91cyhyKXx8dWUuaXNJbnZpc2libGVDaGFyYWN0ZXIocil8fChpPSEwKX1yZXR1cm4hbiYmaT8wOnRoaXMub3B0aW9ucy5pbnZpc2libGVDaGFyYWN0ZXJzJiYhTHIoZSkmJnVlLmlzSW52aXNpYmxlQ2hhcmFjdGVyKHIpPzI6dGhpcy5vcHRpb25zLmFtYmlndW91c0NoYXJhY3RlcnMmJnRoaXMuYW1iaWd1b3VzQ2hhcmFjdGVycy5pc0FtYmlndW91cyhyKT8zOjB9fWZ1bmN0aW9uIExyKGUpe3JldHVybiIgIj09PWV8fCJcbiI9PT1lfHwiXHQiPT09ZX12YXIgU3I9ZnVuY3Rpb24oZSxvLHMsbCl7cmV0dXJuIG5ldyhzPXN8fFByb21pc2UpKGZ1bmN0aW9uKHIsdCl7ZnVuY3Rpb24gbihlKXt0cnl7YShsLm5leHQoZSkpfWNhdGNoKGUpe3QoZSl9fWZ1bmN0aW9uIGkoZSl7dHJ5e2EobC50aHJvdyhlKSl9Y2F0Y2goZSl7dChlKX19ZnVuY3Rpb24gYShlKXt2YXIgdDtlLmRvbmU/cihlLnZhbHVlKTooKHQ9ZS52YWx1ZSlpbnN0YW5jZW9mIHM/dDpuZXcgcyhmdW5jdGlvbihlKXtlKHQpfSkpLnRoZW4obixpKX1hKChsPWwuYXBwbHkoZSxvfHxbXSkpLm5leHQoKSl9KX07Y2xhc3MgTnIgZXh0ZW5kcyBjbGFzc3tjb25zdHJ1Y3RvcihlLHQscixuKXt0aGlzLl91cmk9ZSx0aGlzLl9saW5lcz10LHRoaXMuX2VvbD1yLHRoaXMuX3ZlcnNpb25JZD1uLHRoaXMuX2xpbmVTdGFydHM9bnVsbCx0aGlzLl9jYWNoZWRUZXh0VmFsdWU9bnVsbH1kaXNwb3NlKCl7dGhpcy5fbGluZXMubGVuZ3RoPTB9Z2V0IHZlcnNpb24oKXtyZXR1cm4gdGhpcy5fdmVyc2lvbklkfWdldFRleHQoKXtyZXR1cm4gbnVsbD09PXRoaXMuX2NhY2hlZFRleHRWYWx1ZSYmKHRoaXMuX2NhY2hlZFRleHRWYWx1ZT10aGlzLl9saW5lcy5qb2luKHRoaXMuX2VvbCkpLHRoaXMuX2NhY2hlZFRleHRWYWx1ZX1vbkV2ZW50cyhlKXtlLmVvbCYmZS5lb2whPT10aGlzLl9lb2wmJih0aGlzLl9lb2w9ZS5lb2wsdGhpcy5fbGluZVN0YXJ0cz1udWxsKTtmb3IoY29uc3QgdCBvZiBlLmNoYW5nZXMpdGhpcy5fYWNjZXB0RGVsZXRlUmFuZ2UodC5yYW5nZSksdGhpcy5fYWNjZXB0SW5zZXJ0VGV4dChuZXcgbnQodC5yYW5nZS5zdGFydExpbmVOdW1iZXIsdC5yYW5nZS5zdGFydENvbHVtbiksdC50ZXh0KTt0aGlzLl92ZXJzaW9uSWQ9ZS52ZXJzaW9uSWQsdGhpcy5fY2FjaGVkVGV4dFZhbHVlPW51bGx9X2Vuc3VyZUxpbmVTdGFydHMoKXtpZighdGhpcy5fbGluZVN0YXJ0cyl7dmFyIHQ9dGhpcy5fZW9sLmxlbmd0aCxyPXRoaXMuX2xpbmVzLmxlbmd0aDtjb25zdCBuPW5ldyBVaW50MzJBcnJheShyKTtmb3IobGV0IGU9MDtlPHI7ZSsrKW5bZV09dGhpcy5fbGluZXNbZV0ubGVuZ3RoK3Q7dGhpcy5fbGluZVN0YXJ0cz1uZXcgZ3Qobil9fV9zZXRMaW5lVGV4dChlLHQpe3RoaXMuX2xpbmVzW2VdPXQsdGhpcy5fbGluZVN0YXJ0cyYmdGhpcy5fbGluZVN0YXJ0cy5zZXRWYWx1ZShlLHRoaXMuX2xpbmVzW2VdLmxlbmd0aCt0aGlzLl9lb2wubGVuZ3RoKX1fYWNjZXB0RGVsZXRlUmFuZ2UoZSl7aWYoZS5zdGFydExpbmVOdW1iZXI9PT1lLmVuZExpbmVOdW1iZXIpcmV0dXJuIGUuc3RhcnRDb2x1bW49PT1lLmVuZENvbHVtbj92b2lkIDA6dm9pZCB0aGlzLl9zZXRMaW5lVGV4dChlLnN0YXJ0TGluZU51bWJlci0xLHRoaXMuX2xpbmVzW2Uuc3RhcnRMaW5lTnVtYmVyLTFdLnN1YnN0cmluZygwLGUuc3RhcnRDb2x1bW4tMSkrdGhpcy5fbGluZXNbZS5zdGFydExpbmVOdW1iZXItMV0uc3Vic3RyaW5nKGUuZW5kQ29sdW1uLTEpKTt0aGlzLl9zZXRMaW5lVGV4dChlLnN0YXJ0TGluZU51bWJlci0xLHRoaXMuX2xpbmVzW2Uuc3RhcnRMaW5lTnVtYmVyLTFdLnN1YnN0cmluZygwLGUuc3RhcnRDb2x1bW4tMSkrdGhpcy5fbGluZXNbZS5lbmRMaW5lTnVtYmVyLTFdLnN1YnN0cmluZyhlLmVuZENvbHVtbi0xKSksdGhpcy5fbGluZXMuc3BsaWNlKGUuc3RhcnRMaW5lTnVtYmVyLGUuZW5kTGluZU51bWJlci1lLnN0YXJ0TGluZU51bWJlciksdGhpcy5fbGluZVN0YXJ0cyYmdGhpcy5fbGluZVN0YXJ0cy5yZW1vdmVWYWx1ZXMoZS5zdGFydExpbmVOdW1iZXIsZS5lbmRMaW5lTnVtYmVyLWUuc3RhcnRMaW5lTnVtYmVyKX1fYWNjZXB0SW5zZXJ0VGV4dCh0LGUpe2lmKDAhPT1lLmxlbmd0aCl7Y29uc3Qgcj1lLnNwbGl0KC9cclxufFxyfFxuLyk7aWYoMSE9PXIubGVuZ3RoKXtyW3IubGVuZ3RoLTFdKz10aGlzLl9saW5lc1t0LmxpbmVOdW1iZXItMV0uc3Vic3RyaW5nKHQuY29sdW1uLTEpLHRoaXMuX3NldExpbmVUZXh0KHQubGluZU51bWJlci0xLHRoaXMuX2xpbmVzW3QubGluZU51bWJlci0xXS5zdWJzdHJpbmcoMCx0LmNvbHVtbi0xKStyWzBdKTtjb25zdCBuPW5ldyBVaW50MzJBcnJheShyLmxlbmd0aC0xKTtmb3IobGV0IGU9MTtlPHIubGVuZ3RoO2UrKyl0aGlzLl9saW5lcy5zcGxpY2UodC5saW5lTnVtYmVyK2UtMSwwLHJbZV0pLG5bZS0xXT1yW2VdLmxlbmd0aCt0aGlzLl9lb2wubGVuZ3RoO3RoaXMuX2xpbmVTdGFydHMmJnRoaXMuX2xpbmVTdGFydHMuaW5zZXJ0VmFsdWVzKHQubGluZU51bWJlcixuKX1lbHNlIHRoaXMuX3NldExpbmVUZXh0KHQubGluZU51bWJlci0xLHRoaXMuX2xpbmVzW3QubGluZU51bWJlci0xXS5zdWJzdHJpbmcoMCx0LmNvbHVtbi0xKStyWzBdK3RoaXMuX2xpbmVzW3QubGluZU51bWJlci0xXS5zdWJzdHJpbmcodC5jb2x1bW4tMSkpfX19e2dldCB1cmkoKXtyZXR1cm4gdGhpcy5fdXJpfWdldCBlb2woKXtyZXR1cm4gdGhpcy5fZW9sfWdldFZhbHVlKCl7cmV0dXJuIHRoaXMuZ2V0VGV4dCgpfWdldExpbmVzQ29udGVudCgpe3JldHVybiB0aGlzLl9saW5lcy5zbGljZSgwKX1nZXRMaW5lQ291bnQoKXtyZXR1cm4gdGhpcy5fbGluZXMubGVuZ3RofWdldExpbmVDb250ZW50KGUpe3JldHVybiB0aGlzLl9saW5lc1tlLTFdfWdldFdvcmRBdFBvc2l0aW9uKGUsdCl7dD13dChlLmNvbHVtbixmdW5jdGlvbih0KXtsZXQgcj1DdDtpZih0JiZ0IGluc3RhbmNlb2YgUmVnRXhwKWlmKHQuZ2xvYmFsKXI9dDtlbHNle2xldCBlPSJnIjt0Lmlnbm9yZUNhc2UmJihlKz0iaSIpLHQubXVsdGlsaW5lJiYoZSs9Im0iKSx0LnVuaWNvZGUmJihlKz0idSIpLHI9bmV3IFJlZ0V4cCh0LnNvdXJjZSxlKX1yZXR1cm4gci5sYXN0SW5kZXg9MCxyfSh0KSx0aGlzLl9saW5lc1tlLmxpbmVOdW1iZXItMV0sMCk7cmV0dXJuIHQ/bmV3IHAoZS5saW5lTnVtYmVyLHQuc3RhcnRDb2x1bW4sZS5saW5lTnVtYmVyLHQuZW5kQ29sdW1uKTpudWxsfXdvcmRzKHQpe2NvbnN0IHI9dGhpcy5fbGluZXMsbj10aGlzLl93b3JkZW5pemUuYmluZCh0aGlzKTtsZXQgaT0wLGE9IiIsbz0wLHM9W107cmV0dXJueypbU3ltYm9sLml0ZXJhdG9yXSgpe2Zvcig7OylpZihvPHMubGVuZ3RoKXt2YXIgZT1hLnN1YnN0cmluZyhzW29dLnN0YXJ0LHNbb10uZW5kKTtvKz0xLHlpZWxkIGV9ZWxzZXtpZighKGk8ci5sZW5ndGgpKWJyZWFrO2E9cltpXSxzPW4oYSx0KSxvPTAsaSs9MX19fX1nZXRMaW5lV29yZHMoZSx0KXtjb25zdCByPXRoaXMuX2xpbmVzW2UtMV07Y29uc3Qgbj1bXTtmb3IoY29uc3QgaSBvZiB0aGlzLl93b3JkZW5pemUocix0KSluLnB1c2goe3dvcmQ6ci5zdWJzdHJpbmcoaS5zdGFydCxpLmVuZCksc3RhcnRDb2x1bW46aS5zdGFydCsxLGVuZENvbHVtbjppLmVuZCsxfSk7cmV0dXJuIG59X3dvcmRlbml6ZShlLHQpe2NvbnN0IHI9W107dmFyIG47Zm9yKHQubGFzdEluZGV4PTA7KG49dC5leGVjKGUpKSYmMCE9PW5bMF0ubGVuZ3RoOylyLnB1c2goe3N0YXJ0Om4uaW5kZXgsZW5kOm4uaW5kZXgrblswXS5sZW5ndGh9KTtyZXR1cm4gcn1nZXRWYWx1ZUluUmFuZ2UoZSl7aWYoKGU9dGhpcy5fdmFsaWRhdGVSYW5nZShlKSkuc3RhcnRMaW5lTnVtYmVyPT09ZS5lbmRMaW5lTnVtYmVyKXJldHVybiB0aGlzLl9saW5lc1tlLnN0YXJ0TGluZU51bWJlci0xXS5zdWJzdHJpbmcoZS5zdGFydENvbHVtbi0xLGUuZW5kQ29sdW1uLTEpO3ZhciB0PXRoaXMuX2VvbCxyPWUuc3RhcnRMaW5lTnVtYmVyLTEsbj1lLmVuZExpbmVOdW1iZXItMTtjb25zdCBpPVtdO2kucHVzaCh0aGlzLl9saW5lc1tyXS5zdWJzdHJpbmcoZS5zdGFydENvbHVtbi0xKSk7Zm9yKGxldCBlPTErcjtlPG47ZSsrKWkucHVzaCh0aGlzLl9saW5lc1tlXSk7cmV0dXJuIGkucHVzaCh0aGlzLl9saW5lc1tuXS5zdWJzdHJpbmcoMCxlLmVuZENvbHVtbi0xKSksaS5qb2luKHQpfW9mZnNldEF0KGUpe3JldHVybiBlPXRoaXMuX3ZhbGlkYXRlUG9zaXRpb24oZSksdGhpcy5fZW5zdXJlTGluZVN0YXJ0cygpLHRoaXMuX2xpbmVTdGFydHMuZ2V0UHJlZml4U3VtKGUubGluZU51bWJlci0yKSsoZS5jb2x1bW4tMSl9cG9zaXRpb25BdChlKXtlPU1hdGguZmxvb3IoZSksZT1NYXRoLm1heCgwLGUpLHRoaXMuX2Vuc3VyZUxpbmVTdGFydHMoKTt2YXIgZT10aGlzLl9saW5lU3RhcnRzLmdldEluZGV4T2YoZSksdD10aGlzLl9saW5lc1tlLmluZGV4XS5sZW5ndGg7cmV0dXJue2xpbmVOdW1iZXI6MStlLmluZGV4LGNvbHVtbjoxK01hdGgubWluKGUucmVtYWluZGVyLHQpfX1fdmFsaWRhdGVSYW5nZShlKXt2YXIgdD10aGlzLl92YWxpZGF0ZVBvc2l0aW9uKHtsaW5lTnVtYmVyOmUuc3RhcnRMaW5lTnVtYmVyLGNvbHVtbjplLnN0YXJ0Q29sdW1ufSkscj10aGlzLl92YWxpZGF0ZVBvc2l0aW9uKHtsaW5lTnVtYmVyOmUuZW5kTGluZU51bWJlcixjb2x1bW46ZS5lbmRDb2x1bW59KTtyZXR1cm4gdC5saW5lTnVtYmVyIT09ZS5zdGFydExpbmVOdW1iZXJ8fHQuY29sdW1uIT09ZS5zdGFydENvbHVtbnx8ci5saW5lTnVtYmVyIT09ZS5lbmRMaW5lTnVtYmVyfHxyLmNvbHVtbiE9PWUuZW5kQ29sdW1uP3tzdGFydExpbmVOdW1iZXI6dC5saW5lTnVtYmVyLHN0YXJ0Q29sdW1uOnQuY29sdW1uLGVuZExpbmVOdW1iZXI6ci5saW5lTnVtYmVyLGVuZENvbHVtbjpyLmNvbHVtbn06ZX1fdmFsaWRhdGVQb3NpdGlvbihlKXtpZighbnQuaXNJUG9zaXRpb24oZSkpdGhyb3cgbmV3IEVycm9yKCJiYWQgcG9zaXRpb24iKTtsZXR7bGluZU51bWJlcjp0LGNvbHVtbjpyfT1lLG49ITE7dmFyIGk7cmV0dXJuIHQ8MT8odD0xLHI9MSxuPSEwKTp0PnRoaXMuX2xpbmVzLmxlbmd0aD8odD10aGlzLl9saW5lcy5sZW5ndGgscj10aGlzLl9saW5lc1t0LTFdLmxlbmd0aCsxLG49ITApOihpPXRoaXMuX2xpbmVzW3QtMV0ubGVuZ3RoKzEscjwxPyhyPTEsbj0hMCk6cj5pJiYocj1pLG49ITApKSxuP3tsaW5lTnVtYmVyOnQsY29sdW1uOnJ9OmV9fWNsYXNzIEVye2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5faG9zdD1lLHRoaXMuX21vZGVscz1PYmplY3QuY3JlYXRlKG51bGwpLHRoaXMuX2ZvcmVpZ25Nb2R1bGVGYWN0b3J5PXQsdGhpcy5fZm9yZWlnbk1vZHVsZT1udWxsfWRpc3Bvc2UoKXt0aGlzLl9tb2RlbHM9T2JqZWN0LmNyZWF0ZShudWxsKX1fZ2V0TW9kZWwoZSl7cmV0dXJuIHRoaXMuX21vZGVsc1tlXX1fZ2V0TW9kZWxzKCl7Y29uc3QgdD1bXTtyZXR1cm4gT2JqZWN0LmtleXModGhpcy5fbW9kZWxzKS5mb3JFYWNoKGU9PnQucHVzaCh0aGlzLl9tb2RlbHNbZV0pKSx0fWFjY2VwdE5ld01vZGVsKGUpe3RoaXMuX21vZGVsc1tlLnVybF09bmV3IE5yKCRlLnBhcnNlKGUudXJsKSxlLmxpbmVzLGUuRU9MLGUudmVyc2lvbklkKX1hY2NlcHRNb2RlbENoYW5nZWQoZSx0KXtpZih0aGlzLl9tb2RlbHNbZV0pe2NvbnN0IHI9dGhpcy5fbW9kZWxzW2VdO3Iub25FdmVudHModCl9fWFjY2VwdFJlbW92ZWRNb2RlbChlKXt0aGlzLl9tb2RlbHNbZV0mJmRlbGV0ZSB0aGlzLl9tb2RlbHNbZV19Y29tcHV0ZVVuaWNvZGVIaWdobGlnaHRzKHQscixuKXtyZXR1cm4gU3IodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe3ZhciBlPXRoaXMuX2dldE1vZGVsKHQpO3JldHVybiBlP3ZyLmNvbXB1dGVVbmljb2RlSGlnaGxpZ2h0cyhlLHIsbik6e3JhbmdlczpbXSxoYXNNb3JlOiExLGFtYmlndW91c0NoYXJhY3RlckNvdW50OjAsaW52aXNpYmxlQ2hhcmFjdGVyQ291bnQ6MCxub25CYXNpY0FzY2lpQ2hhcmFjdGVyQ291bnQ6MH19KX1jb21wdXRlRGlmZihhLG8scyxsKXtyZXR1cm4gU3IodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe2NvbnN0IGU9dGhpcy5fZ2V0TW9kZWwoYSksdD10aGlzLl9nZXRNb2RlbChvKTtpZighZXx8IXQpcmV0dXJuIG51bGw7dmFyIHI9ZS5nZXRMaW5lc0NvbnRlbnQoKSxuPXQuZ2V0TGluZXNDb250ZW50KCk7Y29uc3QgaT1uZXcgaHQocixuLHtzaG91bGRDb21wdXRlQ2hhckNoYW5nZXM6ITAsc2hvdWxkUG9zdFByb2Nlc3NDaGFyQ2hhbmdlczohMCxzaG91bGRJZ25vcmVUcmltV2hpdGVzcGFjZTpzLHNob3VsZE1ha2VQcmV0dHlEaWZmOiEwLG1heENvbXB1dGF0aW9uVGltZTpsfSk7cj1pLmNvbXB1dGVEaWZmKCksbj0hKDA8ci5jaGFuZ2VzLmxlbmd0aCkmJnRoaXMuX21vZGVsc0FyZUlkZW50aWNhbChlLHQpO3JldHVybntxdWl0RWFybHk6ci5xdWl0RWFybHksaWRlbnRpY2FsOm4sY2hhbmdlczpyLmNoYW5nZXN9fSl9X21vZGVsc0FyZUlkZW50aWNhbCh0LHIpe3ZhciBuPXQuZ2V0TGluZUNvdW50KCk7aWYobiE9PXIuZ2V0TGluZUNvdW50KCkpcmV0dXJuITE7Zm9yKGxldCBlPTE7ZTw9bjtlKyspaWYodC5nZXRMaW5lQ29udGVudChlKSE9PXIuZ2V0TGluZUNvbnRlbnQoZSkpcmV0dXJuITE7cmV0dXJuITB9Y29tcHV0ZU1vcmVNaW5pbWFsRWRpdHMoZCxmKXtyZXR1cm4gU3IodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe2NvbnN0IGU9dGhpcy5fZ2V0TW9kZWwoZCk7aWYoIWUpcmV0dXJuIGY7Y29uc3QgdD1bXTtsZXQgcj12b2lkIDA7Zm9yKHZhcntyYW5nZTpuLHRleHQ6aSxlb2w6YX1vZiBmPWYuc2xpY2UoMCkuc29ydCgoZSx0KT0+e3JldHVybiBlLnJhbmdlJiZ0LnJhbmdlP3AuY29tcGFyZVJhbmdlc1VzaW5nU3RhcnRzKGUucmFuZ2UsdC5yYW5nZSk6KGUucmFuZ2U/MDoxKS0odC5yYW5nZT8wOjEpfSkpaWYoIm51bWJlciI9PXR5cGVvZiBhJiYocj1hKSwhcC5pc0VtcHR5KG4pfHxpKXthPWUuZ2V0VmFsdWVJblJhbmdlKG4pO2lmKGEhPT0oaT1pLnJlcGxhY2UoL1xyXG58XG58XHIvZyxlLmVvbCkpKWlmKE1hdGgubWF4KGkubGVuZ3RoLGEubGVuZ3RoKT5Fci5fZGlmZkxpbWl0KXQucHVzaCh7cmFuZ2U6bix0ZXh0Oml9KTtlbHNle2E9YSxjPWksdT0hMTt2YXIgYT1uZXcga2UobmV3IFNlKGEpLG5ldyBTZShjKSkuQ29tcHV0ZURpZmYodSkuY2hhbmdlcyxvPWUub2Zmc2V0QXQocC5saWZ0KG4pLmdldFN0YXJ0UG9zaXRpb24oKSk7Zm9yKGNvbnN0IGggb2YgYSl7dmFyIHM9ZS5wb3NpdGlvbkF0KG8raC5vcmlnaW5hbFN0YXJ0KSxsPWUucG9zaXRpb25BdChvK2gub3JpZ2luYWxTdGFydCtoLm9yaWdpbmFsTGVuZ3RoKSxzPXt0ZXh0Omkuc3Vic3RyKGgubW9kaWZpZWRTdGFydCxoLm1vZGlmaWVkTGVuZ3RoKSxyYW5nZTp7c3RhcnRMaW5lTnVtYmVyOnMubGluZU51bWJlcixzdGFydENvbHVtbjpzLmNvbHVtbixlbmRMaW5lTnVtYmVyOmwubGluZU51bWJlcixlbmRDb2x1bW46bC5jb2x1bW59fTtlLmdldFZhbHVlSW5SYW5nZShzLnJhbmdlKSE9PXMudGV4dCYmdC5wdXNoKHMpfX19dmFyIGMsdTtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIHImJnQucHVzaCh7ZW9sOnIsdGV4dDoiIixyYW5nZTp7c3RhcnRMaW5lTnVtYmVyOjAsc3RhcnRDb2x1bW46MCxlbmRMaW5lTnVtYmVyOjAsZW5kQ29sdW1uOjB9fSksdH0pfWNvbXB1dGVMaW5rcyh0KXtyZXR1cm4gU3IodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe3ZhciBlPXRoaXMuX2dldE1vZGVsKHQpO3JldHVybiBlPyhlPWUpJiYiZnVuY3Rpb24iPT10eXBlb2YgZS5nZXRMaW5lQ291bnQmJiJmdW5jdGlvbiI9PXR5cGVvZiBlLmdldExpbmVDb250ZW50P050LmNvbXB1dGVMaW5rcyhlKTpbXTpudWxsfSl9dGV4dHVhbFN1Z2dlc3QobyxzLGwsaCl7cmV0dXJuIFNyKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtjb25zdCBlPW5ldyBxKCEwKTt2YXIgdD1uZXcgUmVnRXhwKGwsaCk7Y29uc3Qgcj1uZXcgU2V0O2U6Zm9yKHZhciBuIG9mIG8pe2NvbnN0IGE9dGhpcy5fZ2V0TW9kZWwobik7aWYoYSlmb3IodmFyIGkgb2YgYS53b3Jkcyh0KSlpZihpIT09cyYmaXNOYU4oTnVtYmVyKGkpKSYmKHIuYWRkKGkpLHIuc2l6ZT5Fci5fc3VnZ2VzdGlvbnNMaW1pdCkpYnJlYWsgZX1yZXR1cm57d29yZHM6QXJyYXkuZnJvbShyKSxkdXJhdGlvbjplLmVsYXBzZWQoKX19KX1jb21wdXRlV29yZFJhbmdlcyh0LGEsbyxzKXtyZXR1cm4gU3IodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe2NvbnN0IGU9dGhpcy5fZ2V0TW9kZWwodCk7aWYoIWUpcmV0dXJuIE9iamVjdC5jcmVhdGUobnVsbCk7dmFyIHI9bmV3IFJlZ0V4cChvLHMpO2NvbnN0IG49T2JqZWN0LmNyZWF0ZShudWxsKTtmb3IobGV0IHQ9YS5zdGFydExpbmVOdW1iZXI7dDxhLmVuZExpbmVOdW1iZXI7dCsrKWZvcihjb25zdCBpIG9mIGUuZ2V0TGluZVdvcmRzKHQscikpaWYoaXNOYU4oTnVtYmVyKGkud29yZCkpKXtsZXQgZT1uW2kud29yZF07ZXx8KGU9W10sbltpLndvcmRdPWUpLGUucHVzaCh7c3RhcnRMaW5lTnVtYmVyOnQsc3RhcnRDb2x1bW46aS5zdGFydENvbHVtbixlbmRMaW5lTnVtYmVyOnQsZW5kQ29sdW1uOmkuZW5kQ29sdW1ufSl9cmV0dXJuIG59KX1uYXZpZ2F0ZVZhbHVlU2V0KGksYSxvLHMsbCl7cmV0dXJuIFNyKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtjb25zdCBlPXRoaXMuX2dldE1vZGVsKGkpO2lmKCFlKXJldHVybiBudWxsO3ZhciB0PW5ldyBSZWdFeHAocyxsKSxyPShhLnN0YXJ0Q29sdW1uPT09YS5lbmRDb2x1bW4mJihhPXtzdGFydExpbmVOdW1iZXI6YS5zdGFydExpbmVOdW1iZXIsc3RhcnRDb2x1bW46YS5zdGFydENvbHVtbixlbmRMaW5lTnVtYmVyOmEuZW5kTGluZU51bWJlcixlbmRDb2x1bW46YS5lbmRDb2x1bW4rMX0pLGUuZ2V0VmFsdWVJblJhbmdlKGEpKSx0PWUuZ2V0V29yZEF0UG9zaXRpb24oe2xpbmVOdW1iZXI6YS5zdGFydExpbmVOdW1iZXIsY29sdW1uOmEuc3RhcnRDb2x1bW59LHQpO2lmKCF0KXJldHVybiBudWxsO3ZhciBuPWUuZ2V0VmFsdWVJblJhbmdlKHQpO3JldHVybiBFdC5JTlNUQU5DRS5uYXZpZ2F0ZVZhbHVlU2V0KGEscix0LG4sbyl9KX1sb2FkRm9yZWlnbk1vZHVsZShlLHQscil7cj1uZShyLChlLHQpPT50aGlzLl9ob3N0LmZocihlLHQpKTtyZXR1cm4gdGhpcy5fZm9yZWlnbk1vZHVsZUZhY3Rvcnk/KHRoaXMuX2ZvcmVpZ25Nb2R1bGU9dGhpcy5fZm9yZWlnbk1vZHVsZUZhY3Rvcnkoe2hvc3Q6cixnZXRNaXJyb3JNb2RlbHM6KCk9PnRoaXMuX2dldE1vZGVscygpfSx0KSxQcm9taXNlLnJlc29sdmUocmUodGhpcy5fZm9yZWlnbk1vZHVsZSkpKTpQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoIlVuZXhwZWN0ZWQgdXNhZ2UiKSl9Zm1yKGUsdCl7aWYoIXRoaXMuX2ZvcmVpZ25Nb2R1bGV8fCJmdW5jdGlvbiIhPXR5cGVvZiB0aGlzLl9mb3JlaWduTW9kdWxlW2VdKXJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoIk1pc3NpbmcgcmVxdWVzdEhhbmRsZXIgb3IgbWV0aG9kOiAiK2UpKTt0cnl7cmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLl9mb3JlaWduTW9kdWxlW2VdLmFwcGx5KHRoaXMuX2ZvcmVpZ25Nb2R1bGUsdCkpfWNhdGNoKGUpe3JldHVybiBQcm9taXNlLnJlamVjdChlKX19fUVyLl9kaWZmTGltaXQ9MWU1LEVyLl9zdWdnZXN0aW9uc0xpbWl0PTFlNCwiZnVuY3Rpb24iPT10eXBlb2YgaW1wb3J0U2NyaXB0cyYmKEQubW9uYWNvPXtlZGl0b3I6dm9pZCAwLGxhbmd1YWdlczp2b2lkIDAsZXh0cmE6dm9pZCAwLENhbmNlbGxhdGlvblRva2VuU291cmNlOnh0LEVtaXR0ZXI6dGUsS2V5Q29kZTpIdCxLZXlNb2Q6cHIsUG9zaXRpb246bnQsUmFuZ2U6cCxTZWxlY3Rpb246VXQsVXJpOiRlLFRva2VuOnRyLE1hcmtkb3duU3RyaW5nOmZyLE1hcmtkb3duU3RyaW5nVGV4dE5ld2xpbmVTdHlsZTpXdCxEaXNwb3NhYmxlOkwsRGlzcG9zYWJsZVN0b3JlOnksRXJyb3JIYW5kbGVyOmwsQWJzdHJhY3RMb2dnZXI6YnIsQ29uc29sZUxvZ2dlcjpDcixUb2tlbml6YXRpb25SZXN1bHQ6cnIsRW5jb2RlZFRva2VuaXphdGlvblJlc3VsdDpucixTZWxlY3Rpb25EaXJlY3Rpb246SnQsTWFya2VyU2V2ZXJpdHk6anQsTWFya2VyVGFnOiR0LExvZ0xldmVsOnp0LGVycm9ySGFuZGxlcjpofSk7bGV0IEFyPSExO2Z1bmN0aW9uIGtyKHQpe2lmKCFBcil7QXI9ITA7Y29uc3Qgcj1uZXcgdmUoZT0+e3NlbGYucG9zdE1lc3NhZ2UoZSl9LGU9Pm5ldyBFcihlLHQpKTtzZWxmLm9ubWVzc2FnZT1lPT57ci5vbm1lc3NhZ2UoZS5kYXRhKX19fXJldHVybiBzZWxmLm9ubWVzc2FnZT1lPT57QXJ8fGtyKG51bGwpfSxzLmluaXRpYWxpemU9a3IsT2JqZWN0LmRlZmluZVByb3BlcnR5KHMsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHN9KHt9KTsKCg==', null, false);
|
|
32
32
|
/* eslint-enable */
|
|
33
33
|
|
|
34
34
|
const workerLoaders = {
|