CWM-144 キレイ好きなオクチ 3 腰が引けちゃうお掃除フェラとトリハダもんの直後責め

品番: CWM-144

発売日: 2012-06-22

収録時間: 120分

監督: 一ノ瀬くるみ

メーカー:

ワープエンタテインメント

レーベル:

Washing machine

シリーズ:

キレイ好きなオクチ

ジャンル:

ギャルごっくん企画フェラパイズリDVDトースターハイビジョン

おすすめ

W3siaWQiOiJleG9jX2pfTV8zMDB4MTAwIiwiYWRzcG90Ijoial9NXzMwMHgxMDAiLCJ3ZWlnaHQiOiIzIiwiZmNhcCI6ZmFsc2UsInNjaGVkdWxlIjpmYWxzZSwibWF4V2lkdGgiOiI3NjgiLCJtaW5XaWR0aCI6ZmFsc2UsInRpbWV6b25lIjpmYWxzZSwiZXhjbHVkZSI6ZmFsc2UsImRvbWFpbiI6ZmFsc2UsImNvZGUiOiI8c2NyaXB0IGFzeW5jIHR5cGU9XCJhcHBsaWNhdGlvblwvamF2YXNjcmlwdFwiIHNyYz1cImh0dHBzOlwvXC9hLm1hZ3Nydi5jb21cL2FkLXByb3ZpZGVyLmpzXCI+PFwvc2NyaXB0PiBcclxuIDxpbnMgY2xhc3M9XCJlYXM2YTk3ODg4ZTEwXCIgZGF0YS16b25laWQ9XCI1NjY1NjEwXCI+PFwvaW5zPiBcclxuIDxzY3JpcHQ+KEFkUHJvdmlkZXIgPSB3aW5kb3cuQWRQcm92aWRlciB8fCBbXSkucHVzaCh7XCJzZXJ2ZVwiOiB7fX0pOzxcL3NjcmlwdD4ifSx7ImlkIjoianVpY19qX01fMzAweDEwMCIsImFkc3BvdCI6ImpfTV8zMDB4MTAwIiwid2VpZ2h0IjoiNSIsImZjYXAiOmZhbHNlLCJzY2hlZHVsZSI6ZmFsc2UsIm1heFdpZHRoIjoiNzY4IiwibWluV2lkdGgiOmZhbHNlLCJ0aW1lem9uZSI6ZmFsc2UsImV4Y2x1ZGUiOmZhbHNlLCJkb21haW4iOmZhbHNlLCJjb2RlIjoiPGlmcmFtZSBib3JkZXI9MCBmcmFtZWJvcmRlcj0wIG1hcmdpbmhlaWdodD0wIG1hcmdpbndpZHRoPTAgd2lkdGg9MzAwIGhlaWdodD0xMDAgc2Nyb2xsaW5nPW5vIGFsbG93dHJhbnNwYXJlbmN5PXRydWUgc3JjPVwvXC9hZHNlcnZlci5qdWljeWFkcy5jb21cL2Fkc2hvdy5waHA/YWR6b25lPTQ1MTczOT48XC9pZnJhbWU+In1d

出演者

碧しの
友田彩也香
坂野由梨
さとう遥希
このは
愛花沙也
藤咲葵
初美沙希
立花樹里亜
綾瀬みなみ

サンプル画像

おすすめ

W3siaWQiOiJleG9jX2pfTV8zMDB4MjUwIiwiYWRzcG90Ijoial9NXzMwMHgyNTAiLCJ3ZWlnaHQiOiIyIiwiZmNhcCI6ZmFsc2UsInNjaGVkdWxlIjpmYWxzZSwibWF4V2lkdGgiOiI3NjgiLCJtaW5XaWR0aCI6ZmFsc2UsInRpbWV6b25lIjpmYWxzZSwiZXhjbHVkZSI6ZmFsc2UsImRvbWFpbiI6ZmFsc2UsImNvZGUiOiI8c2NyaXB0IGFzeW5jIHR5cGU9XCJhcHBsaWNhdGlvblwvamF2YXNjcmlwdFwiIHNyYz1cImh0dHBzOlwvXC9hLm1hZ3Nydi5jb21cL2FkLXByb3ZpZGVyLmpzXCI+PFwvc2NyaXB0PiBcclxuIDxpbnMgY2xhc3M9XCJlYXM2YTk3ODg4ZTEwXCIgZGF0YS16b25laWQ9XCI1NjY1NjEyXCI+PFwvaW5zPiBcclxuIDxzY3JpcHQ+KEFkUHJvdmlkZXIgPSB3aW5kb3cuQWRQcm92aWRlciB8fCBbXSkucHVzaCh7XCJzZXJ2ZVwiOiB7fX0pOzxcL3NjcmlwdD4ifSx7ImlkIjoianVpY19qX01fMzAweDI1MCIsImFkc3BvdCI6ImpfTV8zMDB4MjUwIiwid2VpZ2h0IjoiMyIsImZjYXAiOmZhbHNlLCJzY2hlZHVsZSI6ZmFsc2UsIm1heFdpZHRoIjoiNzY4IiwibWluV2lkdGgiOmZhbHNlLCJ0aW1lem9uZSI6ZmFsc2UsImV4Y2x1ZGUiOmZhbHNlLCJkb21haW4iOmZhbHNlLCJjb2RlIjoiPCEtLSBKdWljeUFkcyB2My4xIC0tPlxyXG48c2NyaXB0IHR5cGU9XCJ0ZXh0XC9qYXZhc2NyaXB0XCIgZGF0YS1jZmFzeW5jPVwiZmFsc2VcIiBhc3luYyBzcmM9XCJodHRwczpcL1wvcG93ZXJlZGJ5LmphZHMuY29cL2pzXC9qYWRzLmpzXCI+PFwvc2NyaXB0PlxyXG48aW5zIGlkPVwiMzcxNzI2XCIgZGF0YS13aWR0aD1cIjMwMFwiIGRhdGEtaGVpZ2h0PVwiMjUwXCI+PFwvaW5zPlxyXG48c2NyaXB0IHR5cGU9XCJ0ZXh0XC9qYXZhc2NyaXB0XCIgZGF0YS1jZmFzeW5jPVwiZmFsc2VcIiBhc3luYz4oYWRzYnlqdWljeSA9IHdpbmRvdy5hZHNieWp1aWN5IHx8IFtdKS5wdXNoKHsnYWR6b25lJzozNzE3MjZ9KTs8XC9zY3JpcHQ+XHJcbjwhLS1KdWljeUFkcyBFTkQtLT4ifV0=
W3siaWQiOiJjbGljX2pfUE9QVU5ERVIiLCJhZHNwb3QiOiJqX1BPUFVOREVSIiwid2VpZ2h0IjoiNyIsImZjYXAiOmZhbHNlLCJzY2hlZHVsZSI6ZmFsc2UsIm1heFdpZHRoIjpmYWxzZSwibWluV2lkdGgiOmZhbHNlLCJ0aW1lem9uZSI6ZmFsc2UsImV4Y2x1ZGUiOmZhbHNlLCJkb21haW4iOmZhbHNlLCJjb2RlIjoiPHNjcmlwdCB0eXBlPVwidGV4dFwvamF2YXNjcmlwdFwiPiFmdW5jdGlvbigpe1widXNlIHN0cmljdFwiO2NvbnN0IHQ9XCJ6X2ZsZ2RhYmNwb2tyaW5ldXRtLlwvc1wiLGU9dFs0XSxuPXRbNl0sbz10WzddLHI9dFs4XSxzPXRbMTRdLGk9dFs1XSxjPXRbMTVdLGE9dFsxNl0sbD10WzEzXSx1PXRbMTBdLGg9dFsxMl0sZD10WzldLGc9dFsxN10sbT10WzE4XSxmPXRbMl0scD10WzNdLHc9dFswXSxiPXRbMV0sJD10WzIwXSx2PSguLi50KT0+dC5qb2luKFwiXCIpLEk9dihyLHApLFM9dihuLG8pLHk9dihpLGMsbyxhLGUpLEU9dihsLHMsZCxuLGUsYyksaz12KG8sbixzLHMsYyxoKSx4PXYoYixJLGIsUyxiLHksYiksaj12KGIsYiksQz12KHcsZixlLHAsdSxuLGksYyxpKSxOPXsyOnYoQyxkLHUsZCx0WzE2XSxkKSw5OnYoQyxrKSwxMDp2KEMsRSl9LE89dih3LGYsZSxyLHUsaSxjLHAsdSxuLGksYyxpKSxSPXsyOnYoTyx1LHMsSSxsLHIsdFsxMV0pLDk6dihPLGspLDEwOnYoTyxFKX0sXz12KHgsZyxsLG0sYyksQT12KHgsaSx1LG0sbixsLHMpLEQ9dihqLHIscyxlLGYsZSksVD12KGoscixzLGUsZixlLGosaSksTT12KEQsaixTKSxVPXYoRCxqLGMsYSksQj12KHRbMjFdLHIsaCxsLGQsZyksSj12KHRbMTldLHIsdSxtLCQpLFc9digkLGMscyksej12KGwsaSksVj12KGoscixzLGUsZixlLGosaCksSD1bXCJvb1wiLFwia2tcIixcImFhYVwiLFwiampqXCIsXCJmZXdoXCIsXCJhYXNoXCIsXCJxd2Rod1wiLFwid2Vnd2dzXCIsXCJoa2lpdXlyXCIsXCJuZmdyc3RkaFwiXSxLPTM2ZTUsUD0odCxlKT0+TWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKihlLXQrMSkpK3Q7ZnVuY3Rpb24gUSh0LGU9d2luZG93LG49ITEpe2xldCBvO3RyeXtpZihvPWVbdF0sIW8pcmV0dXJuITE7Y29uc3Qgbj1cIl9fc3RvcmFnZV90ZXN0X19cIjtyZXR1cm4gby5zZXRJdGVtKG4sbiksby5nZXRJdGVtKG4pLG8ucmVtb3ZlSXRlbShuKSwhMH1jYXRjaCh0KXtyZXR1cm4gQm9vbGVhbighbiYmZnVuY3Rpb24odCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBET01FeGNlcHRpb24mJigyMj09PXQuY29kZXx8MTAxND09PXQuY29kZXx8XCJRdW90YUV4Y2VlZGVkRXJyb3JcIj09PXQubmFtZXx8XCJOU19FUlJPUl9ET01fUVVPVEFfUkVBQ0hFRFwiPT09dC5uYW1lKX0odCkmJm8mJm8ubGVuZ3RoPjApfX1jb25zdCBxPXQ9PntpZihcIlwiPT09dCl0aHJvdyBuZXcgRXJyb3IoXCJLZXkgY2Fubm90IGJlIGVtcHR5XCIpfTtjbGFzcyBGe2NvbnN0cnVjdG9yKHQpe3RoaXMuc3RvcmFnZT10fWdldEl0ZW0odCl7cmV0dXJuIHRoaXMuc3RvcmFnZS5nZXRJdGVtKHQpfXNldEl0ZW0odCxlKXtxKHQpLHRoaXMuc3RvcmFnZS5zZXRJdGVtKHQsZSl9cmVtb3ZlSXRlbSh0KXt0aGlzLnN0b3JhZ2UucmVtb3ZlSXRlbSh0KX19Y2xhc3MgTHtjb25zdHJ1Y3Rvcih0KXt0aGlzLmRvYz10fWdldEl0ZW0odCl7Y29uc3QgZT1uZXcgUmVnRXhwKFwiKD86Xnw7IClcIit0LnJlcGxhY2UoXC8oW1xcLiQ/Knx7fVxcKFxcKVxcW1xcXVxcXFxcXFwvXFwrXl0pXC9nLFwiXFxcXCQxXCIpK1wiPShbXlwvO1wvXSopXCIpLmV4ZWModGhpcy5kb2MuY29va2llKTtyZXR1cm4gZT9kZWNvZGVVUklDb21wb25lbnQoZVsxXSk6bnVsbH1zZXRJdGVtKHQsZSl7cSh0KSx0aGlzLmRvYy5jb29raWU9YCR7dH09JHtlbmNvZGVVUklDb21wb25lbnQoZSl9OyBtYXgtYWdlPTM0NDcwMDAwOyBwYXRoPVwvO2B9cmVtb3ZlSXRlbSh0KXt0aGlzLmRvYy5jb29raWU9YCR7dH09MDsgbWF4LWFnZT0tMTsgcGF0aD1cLztgfX1jbGFzcyBHe2NvbnN0cnVjdG9yKHQpe3RoaXMud2luPXR9Z2V0SXRlbSh0KXtjb25zdCBlPXRoaXMud2luW3RdO3JldHVyblwib2JqZWN0XCI9PXR5cGVvZiBlP0pTT04uc3RyaW5naWZ5KGUpOnZvaWQgMCE9PWU/ZTpudWxsfXNldEl0ZW0odCxlKXtxKHQpLHRoaXMud2luW3RdPWV9cmVtb3ZlSXRlbSh0KXtkZWxldGUgdGhpcy53aW5bdF19fXZhciBYLFk7KHQ9Pntjb25zdCBlPVtuZXcgRyh0KV0sbj1cIm9uY29udGV4dHN0b3JlXCI7bGV0IG87UShcImxvY2FsU3RvcmFnZVwiLHQpJiZlLnB1c2gobmV3IEYodC5sb2NhbFN0b3JhZ2UpKSxRKFwic2Vzc2lvblN0b3JhZ2VcIix0KSYmZS5wdXNoKG5ldyBGKHQuc2Vzc2lvblN0b3JhZ2UpKSxmdW5jdGlvbih0PXdpbmRvdyl7dHJ5e3JldHVybiB0LmRvY3VtZW50LmNvb2tpZSx0Lm5hdmlnYXRvci5jb29raWVFbmFibGVkfWNhdGNoKHQpe3JldHVybiExfX0odCkmJmUucHVzaChuZXcgTCh0LmRvY3VtZW50KSl9KSh3aW5kb3cpLGZ1bmN0aW9uKHQpe3QuU0VVPVwic2V1XCIsdC5TTkM9XCJzbmNcIix0LlNTVD1cInNzdFwiLHQuU0tBPVwic2thXCJ9KFh8fChYPXt9KSksXCJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OS1fXCIuc3BsaXQoXCJcIiksZnVuY3Rpb24odCl7dC5Wb2NhYnVsYXJ5PVwidHBtbWh2MThcIix0LldlaWdodHM9XCJ0cG1taHcxOFwifShZfHwoWT17fSkpO1kuVm9jYWJ1bGFyeSxZLldlaWdodHM7Y29uc3QgWj10PT57Y29uc3RbZV09dC5zcGxpdChcIlwvXC9cIik7bGV0W24sbyxyXT1mdW5jdGlvbih0LGUpe2xldFtuLG8sLi4ucl09dC5zcGxpdChlKTtyZXR1cm4gbz1bbywuLi5yXS5qb2luKGUpLFtuLG8sQm9vbGVhbihyLmxlbmd0aCldfSh0LFwiP1wiKTt2YXIgcztyJiZmdW5jdGlvbih0LGUsbil7dHJ5e3JldHVybiB0KCl9Y2F0Y2godCl7aWYoZSlyZXR1cm4gZSh0KX19KCgoKT0+e3Rocm93IG5ldyBFcnJvcihcIlRoZSBVUkwgY29udGFpbnMgdW5lbmNvZGVkIGNoYXJhY3RlcnMuXCIpfSksXCJmdW5jdGlvblwiPT10eXBlb2YgaGFuZGxlRXhjZXB0aW9uP3Q9PntoYW5kbGVFeGNlcHRpb24odCl9OnMpO2NvbnN0W2ksLi4uY109bi5yZXBsYWNlKFwvXmh0dHBzPzpcXFwvXFxcL1wvLFwiXCIpLnNwbGl0KFwiXC9cIik7cmV0dXJue3Byb3RvY29sOmUsb3JpZ2luOm4sZG9tYWluOmkscGF0aDpjLmpvaW4oXCJcL1wiKSxzZWFyY2g6b319LHR0PSgpPT57Y29uc3QgdD1IW1AoMCxILmxlbmd0aC0xKV0sZT0hUCgwLDEpPyh0PT57bGV0IGU9XCJcIjtmb3IobGV0IG49MDtuPHQ7bisrKWUrPVN0cmluZy5mcm9tQ2hhckNvZGUoUCg5NywxMjIpKTtyZXR1cm4gZX0pKFAoMiw2KSk6UCgxLDk5OTk5OSk7cmV0dXJuYCR7dH09JHtlfWB9LGV0PSh0LGUsbik9Pntjb25zdCBvPSgodCxlKT0+KGUrdCkuc3BsaXQoXCJcIikucmVkdWNlKCgodCxlKT0+MzEqdCtlLmNoYXJDb2RlQXQoMCkmMzM1NTQ0MzEpLDE5KSkodCxlKSxyPSh0PT57bGV0IGU9dCU3MTM4NztyZXR1cm4oKT0+ZT0oMjMyNTEqZSsxMjM0NSklNzEzODd9KShvKTtyZXR1cm4gbi5zcGxpdChcIlwiKS5tYXAoKHQ9PigodCxlKT0+e2NvbnN0IG49dC5jaGFyQ29kZUF0KDApLG89bjw5N3x8bj4xMjI/bjo5Nysobi05NytlKCkpJTI2LHI9U3RyaW5nLmZyb21DaGFyQ29kZShvKTtyZXR1cm5cImlcIj09PXI/citcImlcIjpyfSkodCxyKSkpLmpvaW4oXCJcIil9LG50PSh0LGUpPT57dD10LnJlcGxhY2UoYD8ke3p9PSR7ZX0mYCxcIj9cIikucmVwbGFjZShgPyR7en09JHtlfWAsXCI/XCIpLnJlcGxhY2UoYCYke3p9PSR7ZX1gLFwiXCIpO2xldHtkb21haW46bixzZWFyY2g6byxvcmlnaW46cn09Wih0KSxzPW8/by5zcGxpdChcIiZcIik6W107Y29uc3QgaT1zLmxlbmd0aD40P1swLDJdOls1LDldO3MucHVzaCguLi4oKHQsZSk9Pntjb25zdCBuPVtdLG89UCh0LGUpO2ZvcihsZXQgdD0wO3Q8bzt0Kyspbi5wdXNoKHR0KCkpO3JldHVybiBufSkoLi4uaSkpLHM9KHQ9Pntjb25zdCBlPVsuLi50XTtsZXQgbj1lLmxlbmd0aDtmb3IoOzAhPT1uOyl7Y29uc3QgdD1NYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqbik7bi0tLFtlW25dLGVbdF1dPVtlW3RdLGVbbl1dfXJldHVybiBlfSkocyk7Y29uc3QgYz1ldChlLG4scy5qb2luKFwiJlwiKSksYT1QKDAscy5sZW5ndGgpLGw9Yy5zcGxpdChcIiZcIik7cmV0dXJuIGwuc3BsaWNlKGEsMCxgaWQ9JHtlfWApLHIucmVwbGFjZShuLG4rVykrXCI/XCIrbC5qb2luKFwiJlwiKX0sb3Q9dD0+KHQ9PnQ+PTE3MzEyNzZlNiYmdDw9MTczMTc5NDRlNXx8dD49MTczMjQ4NTZlNSYmdDw9MTczMzAwNGU2KSh0KT9QKHQtSyx0K0spOnQscnQ9dD0+e2NvbnN0IGU9bmV3IFJlZ0V4cChfK1wiPShcXFxcZCspKHIpP1wiKS5leGVjKHQubG9jYXRpb24uaHJlZiksbj1lJiZlWzFdJiYrZVsxXTtyZXR1cm4gbiYmIWlzTmFOKG4pPyhudWxsPT1lP3ZvaWQgMDplWzJdKT9vdChuKTpuOm90KERhdGUubm93KCkpfSxzdD1cImNsYWJkZnJcIjtmdW5jdGlvbiBpdCh0KXtpZighdClyZXR1cm4gbnVsbDtjb25zdCBlPXt9O3JldHVybiBPYmplY3Qua2V5cyh0KS5mb3JFYWNoKChuPT57Y29uc3Qgbz10W25dOyhmdW5jdGlvbih0KXtjb25zdCBlPW51bGw9PXQ/dm9pZCAwOnRbMF0sbj1udWxsPT10P3ZvaWQgMDp0WzFdO3JldHVyblwic3RyaW5nXCI9PXR5cGVvZiBlJiZOdW1iZXIuaXNGaW5pdGUobikmJm4+RGF0ZS5ub3coKX0pKG8pJiYoZVtuXT1vKX0pKSxlfWNvbnN0IGN0PSgoKT0+e3ZhciB0O2NvbnN0W2Usbl09ZnVuY3Rpb24oKXtpZihRKFwibG9jYWxTdG9yYWdlXCIpKXtjb25zdCB0PXdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShzdCk7cmV0dXJuW3Q/SlNPTi5wYXJzZSh0KTpudWxsLCExXX1yZXR1cm5bbnVsbCwhMF19KCksbz1udWxsIT09KHQ9aXQoZSkpJiZ2b2lkIDAhPT10P3Q6e307cmV0dXJuIG58fHdpbmRvdy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbShzdCxKU09OLnN0cmluZ2lmeShvKSkse2dldDp0PT5vW3RdLHNldDoodCxlLHIpPT57Y29uc3Qgcz1bZSxEYXRlLm5vdygpKzFlMypyXTtvW3RdPXMsbnx8d2luZG93LmxvY2FsU3RvcmFnZS5zZXRJdGVtKHN0LEpTT04uc3RyaW5naWZ5KG8pKX19fSkoKTtjb25zdCBhdD1bMSwzLDYsNSw4LDksMTAsMTEsMTIsMTMsMTRdO2xldCBsdDtjb25zdCB1dD1VaW50OEFycmF5O2xldCBodDtjbGFzcyBkdHtjb25zdHJ1Y3Rvcih0LGUsbixvLHIscyl7dGhpcy5pZD1lLHRoaXMudD1uLHRoaXMuYjZkPW8sdGhpcy52ZXI9cix0aGlzLmZidj1zLHRoaXMudG1yPW51bGwsdGhpcy5nZD10PT5odC53dS50aGVuKChlPT5lLnVybChodC5nZmNvKHQpKSkpLHRoaXMuYjZhYj10PT51dC5mcm9tKGF0b2IodCksKHQ9PnQuY2hhckNvZGVBdCgwKSkpLHRoaXMuZ2N1az0oKT0+YCR7aHQuaWR9JHtEfWAsdGhpcy5nZnU9dD0+YCR7ZnVuY3Rpb24odCxlKXtjb25zdCBuPW5ldyBSZWdFeHAoQStcIj0oW2EtejAtOS4tXSspJj9cIikuZXhlYyh0LmxvY2F0aW9uLmhyZWYpLG89biYmblsxXT9uWzFdOm51bGw7cmV0dXJuIGUmJm8/ZS5yZXBsYWNlKEosYC0ke299XC9gKTplfHxvfShsdCx0KX0/aWQ9JHtodC5pZH1gLHRoaXMuc2FzdD10PT4wIT09TnVtYmVyKHQpLGh0PXRoaXMsbHQ9dCx0aGlzLnd1PWh0Lml3YSgpLGx0W3RoaXMuaWQrVl09dGhpcy5pbnMoKSxodC5jY2x0KCksbHRbaHQuaWQrVV09bnR9aW4oKXt0aGlzLnNhc3QoaHQudCkmJiEwIT09bHRbUltodC50XV0mJihodC50bXImJmNsZWFyVGltZW91dChodC50bXIpLGh0LmFzdCgpKX1pbnMoKXtsdFt0aGlzLmdjZGsoKV09e307Y29uc3QgdD1hdC5tYXAoKHQ9Pmh0LmdkKHQpLnRoZW4oKGU9PihsdFtodC5nY2RrKCldW3RdPWUsZSkpKSkpO3JldHVybiBQcm9taXNlLmFsbCh0KS50aGVuKCh0PT4obHRbaHQuZ2N1aygpXT10LCEwKSkpfWNjbHQoKXtodC5zYXN0KGh0LnQpJiYodGhpcy50bXI9bHQuc2V0VGltZW91dCgoKCk9PiFsdFtOW2h0LnRdXSYmaHQuYXN0KCkpLDVlMykpfWdmY28odCl7Y29uc3R7bmF2aWdhdG9yOmV9PWx0LG49ZT9lLnVzZXJBZ2VudDpcIlwiLG89bHQubG9jYXRpb24uaG9zdG5hbWV8fFwiXCI7cmV0dXJuW2x0LmlubmVySGVpZ2h0LGx0LmlubmVyV2lkdGgsbHQuc2Vzc2lvblN0b3JhZ2U/MTowLHJ0KGx0KSwwLHQsby5zbGljZSgwLDEwMCksbi5zbGljZSgwLDE1KV0uam9pbihcIixcIil9YXN0KCl7aHQuc2FzdChodC50KSYmaHQuZ2QoaHQudCkudGhlbigodD0+e2x0W2h0LmlkK01dPWh0LnZlcjtjb25zdCBlPWx0LmRvY3VtZW50LG49ZS5jcmVhdGVFbGVtZW50KEIpLFtvXT1mdW5jdGlvbih0LGUpe2NvbnN0e2RvbWFpbjpuLHBhdGg6byxzZWFyY2g6cn09Wih0KSxzPWN0LmdldChuKTtyZXR1cm4gcz9bYCR7aT1zWzBdLChcL2h0dHBzPzpcXFwvXFxcL1wvLnRlc3QoaSk/XCJcIjpcImh0dHBzOlwvXC9cIikraX1cLyR7b30/JHtyfWAsITFdOlt0LCExXTt2YXIgaX0oaHQuZ2Z1KHQpKTtuLnNyYz1udChvLGh0LmlkKSxlLmhlYWQuYXBwZW5kQ2hpbGQobil9KSl9aXdhKCl7Y29uc3QgdD1XZWJBc3NlbWJseSxlPXQmJnQuaW5zdGFudGlhdGU7cmV0dXJuIGU/ZShodC5iNmFiKGh0LmI2ZCkse30pLnRoZW4oKCh7aW5zdGFuY2U6e2V4cG9ydHM6dH19KT0+e2NvbnN0IGU9dC5tZW1vcnksbj10LnVybCxvPW5ldyBUZXh0RW5jb2RlcixyPW5ldyBUZXh0RGVjb2RlcihcInV0Zi04XCIpO3JldHVybnt1cmw6dD0+e2NvbnN0IHM9by5lbmNvZGUodCksaT1uZXcgdXQoZS5idWZmZXIsMCxzLmxlbmd0aCk7aS5zZXQocyk7Y29uc3QgYz1pLmJ5dGVPZmZzZXQrcy5sZW5ndGgsYT1uKGkscy5sZW5ndGgsYyksbD1uZXcgdXQoZS5idWZmZXIsYyxhKTtyZXR1cm4gci5kZWNvZGUobCl9fX0pKTpQcm9taXNlLnJlc29sdmUodm9pZCAwKX1nY2RrKCl7cmV0dXJuYCR7dGhpcy5pZH0ke1R9YH19IWZ1bmN0aW9uKHQsZSxuLG8scixzKXtjb25zdCBpPW5ldyBkdCh3aW5kb3csXCIyMDQ3NDcwXCIsXCIyXCIsXCJBR0Z6YlFFQUFBQUJIQVZnQUFGXC9ZQU5cL2YzOEJmMkFEZjM5XC9BWDVnQVg4QVlBRlwvQVg4RENRZ0FBUUlCQUFNRUFBUUZBWEFCQVFFRkJnRUJnQUtBQWdZSkFYOEJRY0NJd0FJTEIyY0hCbTFsYlc5eWVRSUFBM1Z5YkFBREdWOWZhVzVrYVhKbFkzUmZablZ1WTNScGIyNWZkR0ZpYkdVQkFCQmZYMlZ5Y201dlgyeHZZMkYwYVc5dUFBY0pjM1JoWTJ0VFlYWmxBQVFNYzNSaFkydFNaWE4wYjNKbEFBVUtjM1JoWTJ0QmJHeHZZd0FHQ29jR0NDRUJBWDlCdUFoQnVBZ29BZ0JCRTJ4Qm9SeHFRWWZDMXk5d0lnQTJBZ0FnQUF1VEFRRUZmeEFBSUFFZ0FHdEJBV3B3SUFCcUlnUUVRRUVBSVFCQkF5RUJBMEFnQVVFRElBQkJBM0FpQnhzaEFSQUFJZ1pCRkhCQmtBaHFMUUFBSVFNQ2Z5QUZRUUFnQnh0RkJFQkJBQ0FHSUFGd0RRRWFJQVpCQm5CQmdBaHFMUUFBSVFNTFFRRUxJUVVnQUNBQ2FpQURRYXdJTFFBQWF6b0FBQ0FCUVFGcklRRWdBRUVCYWlJQUlBUkpEUUFMQ3lBQ0lBUnFDM0VDQTM4Q2ZnSkFJQUZCQUV3TkFBTkFJQVJCQVdvaEF5QUNJQVVnQUNBRWFpMEFBRUVzUm1vaUJVWUVRQ0FCSUFOTURRSURRQ0FBSUFOcU1BQUFJZ2RDTEZFTkF5QUdRZ3ArSUFkOFFqQjlJUVlnQTBFQmFpSURJQUZIRFFBTERBSUxJQU1oQkNBQklBTktEUUFMQ3lBR0M3Z0RBZ04rQjM4Z0FDQUJRUU1RQWlFRElBQWdBVUVGRUFJaEJVRzRDQ0FEUWJBSUtRTUFJZ1FnQXlBRVZCdEJxQWdvQWdBaUFFRXlhaUlCSUFGc1FlZ0hiSzJBSWdRZ0FFRU9haUlLSUFCQkJHc2dBMEtBZ1BIdHh6QlVJZ3NicllDbklBTkNcLzRcL01wXC9ZeFZrRVdkSEkyQWdBUUFCb1FBQm9nQWtMbzZOR0R0ODdPbHk4M0FBQkJCMEVLUVFnZ0EwS0EwTVdYZ3pKVUd5QURRb0NXb3AzbE1GUWlCaHRCQzBFTUlBWWJJQUpCQ0dvUUFTRUFFQUFhSXdCQkVHc2lBU1FBSUFCQkxqb0FBQ0FCUWVQZXRRTTJBZ3dnQUVFQmFpRUhRUUFoQUNBQlFReHFJZ3d0QUFBaUNBUkFBMEFnQUNBSGFpQUlPZ0FBSUF3Z0FFRUJhaUlBYWkwQUFDSUlEUUFMQ3lBQlFSQnFKQUFnQUNBSGFpRUJRYmdJSUFRZ0NxMkFJQVZDRzRaQ0FFS0FnSUFnUW9DQWdEQkNnSUNBQ0VLQWdJQVlJQVZDQ0ZFYlFvQ0FnQkpDZ0lEQURTQURRb0NJbDlxc01sUWJJQU5DZ0pETXBcL1l4VkJzZ0EwS0FtTWF1enpGVUd5QUdHeUFMRzRTRVBnSUFFQUFhUVFKQkJCQUFRUU53SWdBYklRWURRQ0FCUVM4NkFBQWdBQ0FKUmlFSElBWkJCU0FCUVFGcUVBRWhBU0FKUVFGcUlRa2dCMFVOQUFzZ0FTQUNhd3NFQUNNQUN3WUFJQUFrQUFzUUFDTUFJQUJyUVhCeElnQWtBQ0FBQ3dVQVFid0lDd3M3QXdCQmdBZ0xCcDZpcHF5eXRnQkJrQWdMRkorZ29hT2twYWVvcWFxcnJhNnZzTEd6dExXM0FFR29DQXNPQ2dBQUFEMEFBQURcL2h4b3dsUUU9XCIsXCI4XCIsXCIxLjAuNDAwXCIpO3dpbmRvd1tcInNtanRja3JuXCJdPSgpPT5pLmluKCl9KCl9KCk7PFwvc2NyaXB0PlxyXG48c2NyaXB0IGRhdGEtY2Zhc3luYz1cImZhbHNlXCIgdHlwZT1cInRleHRcL2phdmFzY3JpcHRcIiBzcmM9XCJcL1wvaXNvbGF0ZWRvdmVyY29tZXBhc3RlZC5jb21cL2Fhc1wvcjQ1ZFwvdmtpXC8yMDQ3NDY4XC8zZDkzMWQ1NC5qc1wiIGFzeW5jIG9uZXJyb3I9XCJzbWp0Y2tybigpXCI+PFwvc2NyaXB0PiJ9LHsiaWQiOiJleG9jX2pfUE9QVU5ERVIiLCJhZHNwb3QiOiJqX1BPUFVOREVSIiwid2VpZ2h0IjoiNiIsImZjYXAiOiIxIiwic2NoZWR1bGUiOmZhbHNlLCJtYXhXaWR0aCI6ZmFsc2UsIm1pbldpZHRoIjoiNzY4IiwidGltZXpvbmUiOmZhbHNlLCJleGNsdWRlIjpmYWxzZSwiZG9tYWluIjpmYWxzZSwiY29kZSI6IjxzY3JpcHQgdHlwZT1cImFwcGxpY2F0aW9uXC9qYXZhc2NyaXB0XCI+XHJcbihmdW5jdGlvbigpIHtcclxuICAgIGZ1bmN0aW9uIHJhbmRTdHIoZSx0KXtmb3IodmFyIG49XCJcIixyPXR8fFwiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5elwiLG89MDtvPGU7bysrKW4rPXIuY2hhckF0KE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSpyLmxlbmd0aCkpO3JldHVybiBufWZ1bmN0aW9uIGdlbmVyYXRlQ29udGVudCgpe3JldHVybiB2b2lkIDA9PT1nZW5lcmF0ZUNvbnRlbnQudmFsJiYoZ2VuZXJhdGVDb250ZW50LnZhbD1cImRvY3VtZW50LmRpc3BhdGNoRXZlbnQoXCIrcmFuZFN0cig0Kk1hdGgucmFuZG9tKCkrMykrXCIpO1wiKSxnZW5lcmF0ZUNvbnRlbnQudmFsfXRyeXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZG9jdW1lbnQuY3VycmVudFNjcmlwdCxcImlubmVySFRNTFwiLHtnZXQ6Z2VuZXJhdGVDb250ZW50fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGRvY3VtZW50LmN1cnJlbnRTY3JpcHQsXCJ0ZXh0Q29udGVudFwiLHtnZXQ6Z2VuZXJhdGVDb250ZW50fSl9Y2F0Y2goZSl7fTtcclxuXHJcbiAgICBcL1wvdmVyc2lvbiA3LjAuMFxyXG5cclxuICAgIHZhciBhZENvbmZpZyA9IHtcclxuICAgIFwiYWRzX2hvc3RcIjogXCJhLnBlbXNydi5jb21cIixcclxuICAgIFwic3luZGljYXRpb25faG9zdFwiOiBcInMucGVtc3J2LmNvbVwiLFxyXG4gICAgXCJpZHpvbmVcIjogNTY2NTYwOCxcclxuICAgIFwicG9wdXBfZmFsbGJhY2tcIjogZmFsc2UsXHJcbiAgICBcInBvcHVwX2ZvcmNlXCI6IGZhbHNlLFxyXG4gICAgXCJjaHJvbWVfZW5hYmxlZFwiOiB0cnVlLFxyXG4gICAgXCJuZXdfdGFiXCI6IGZhbHNlLFxyXG4gICAgXCJmcmVxdWVuY3lfcGVyaW9kXCI6IDcyMCxcclxuICAgIFwiZnJlcXVlbmN5X2NvdW50XCI6IDEsXHJcbiAgICBcInRyaWdnZXJfbWV0aG9kXCI6IDMsXHJcbiAgICBcInRyaWdnZXJfY2xhc3NcIjogXCJcIixcclxuICAgIFwidHJpZ2dlcl9kZWxheVwiOiAwLFxyXG4gICAgXCJjYXBwaW5nX2VuYWJsZWRcIjogdHJ1ZSxcclxuICAgIFwidGNmX2VuYWJsZWRcIjogdHJ1ZSxcclxuICAgIFwib25seV9pbmxpbmVcIjogZmFsc2VcclxufTtcclxuXHJcbndpbmRvdy5kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsfHwoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbD1kb2N1bWVudC5ib2R5LnF1ZXJ5U2VsZWN0b3JBbGw9T2JqZWN0LnF1ZXJ5U2VsZWN0b3JBbGw9ZnVuY3Rpb24oZSxvLHQsaSxuKXt2YXIgcj1kb2N1bWVudCxhPXIuY3JlYXRlU3R5bGVTaGVldCgpO2ZvcihuPXIuYWxsLG89W10sdD0oZT1lLnJlcGxhY2UoXC9cXFtmb3JcXGJcL2dpLFwiW2h0bWxGb3JcIikuc3BsaXQoXCIsXCIpKS5sZW5ndGg7dC0tOyl7Zm9yKGEuYWRkUnVsZShlW3RdLFwiazp2XCIpLGk9bi5sZW5ndGg7aS0tOyluW2ldLmN1cnJlbnRTdHlsZS5rJiZvLnB1c2gobltpXSk7YS5yZW1vdmVSdWxlKDApfXJldHVybiBvfSk7dmFyIHBvcE1hZ2ljPXt2ZXJzaW9uOjcsY29va2llX25hbWU6XCJcIix1cmw6XCJcIixjb25maWc6e30sb3Blbl9jb3VudDowLHRvcDpudWxsLGJyb3dzZXI6bnVsbCx2ZW5vcl9sb2FkZWQ6ITEsdmVub3I6ITEsdGNmRGF0YTpudWxsLGNvbmZpZ1RwbDp7YWRzX2hvc3Q6XCJcIixzeW5kaWNhdGlvbl9ob3N0OlwiXCIsaWR6b25lOlwiXCIsZnJlcXVlbmN5X3BlcmlvZDo3MjAsZnJlcXVlbmN5X2NvdW50OjEsdHJpZ2dlcl9tZXRob2Q6MSx0cmlnZ2VyX2NsYXNzOlwiXCIscG9wdXBfZm9yY2U6ITEscG9wdXBfZmFsbGJhY2s6ITEsY2hyb21lX2VuYWJsZWQ6ITAsbmV3X3RhYjohMSxjYXQ6XCJcIix0YWdzOlwiXCIsZWw6XCJcIixzdWI6XCJcIixzdWIyOlwiXCIsc3ViMzpcIlwiLG9ubHlfaW5saW5lOiExLHRyaWdnZXJfZGVsYXk6MCxjYXBwaW5nX2VuYWJsZWQ6ITAsdGNmX2VuYWJsZWQ6ITEsY29va2llY29uc2VudDohMCxzaG91bGRfZmlyZTpmdW5jdGlvbigpe3JldHVybiEwfSxvbl9yZWRpcmVjdDpudWxsfSxpbml0OmZ1bmN0aW9uKGUpe2lmKHZvaWQgMCE9PWUuaWR6b25lJiZlLmlkem9uZSl7dm9pZCAwPT09ZS5jdXN0b21UYXJnZXRpbmcmJihlLmN1c3RvbVRhcmdldGluZz1bXSksd2luZG93LmN1c3RvbVRhcmdldGluZz1lLmN1c3RvbVRhcmdldGluZ3x8bnVsbDt2YXIgbz1PYmplY3Qua2V5cyhlLmN1c3RvbVRhcmdldGluZykuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4gZS5zZWFyY2goXCJleF9cIik+PTB9KSk7Zm9yKHZhciB0IGluIG8ubGVuZ3RoJiZvLmZvckVhY2goZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuY29uZmlnVHBsW2VdPW51bGx9LmJpbmQodGhpcykpLHRoaXMuY29uZmlnVHBsKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0aGlzLmNvbmZpZ1RwbCx0KSYmKHZvaWQgMCE9PWVbdF0/dGhpcy5jb25maWdbdF09ZVt0XTp0aGlzLmNvbmZpZ1t0XT10aGlzLmNvbmZpZ1RwbFt0XSk7aWYodm9pZCAwIT09dGhpcy5jb25maWcuaWR6b25lJiZcIlwiIT09dGhpcy5jb25maWcuaWR6b25lKXshMCE9PXRoaXMuY29uZmlnLm9ubHlfaW5saW5lJiZ0aGlzLmxvYWRIb3N0ZWQoKTt2YXIgaT10aGlzO3RoaXMuY2hlY2tUQ0ZDb25zZW50KChmdW5jdGlvbigpe1wiY29tcGxldGVcIj09PWRvY3VtZW50LnJlYWR5U3RhdGU/aS5wcmVwYXJlUG9wV2FpdCgpOmkuYWRkRXZlbnRUb0VsZW1lbnQod2luZG93LFwibG9hZFwiLGkucHJlcGFyZVBvcCl9KSl9fX0sZ2V0Q291bnRGcm9tQ29va2llOmZ1bmN0aW9uKCl7aWYoIXRoaXMuY29uZmlnLmNvb2tpZWNvbnNlbnQpcmV0dXJuIDA7dmFyIGU9cG9wTWFnaWMuZ2V0Q29va2llKHBvcE1hZ2ljLmNvb2tpZV9uYW1lKSxvPXZvaWQgMD09PWU/MDpwYXJzZUludChlKTtyZXR1cm4gaXNOYU4obykmJihvPTApLG99LGdldExhc3RPcGVuZWRUaW1lRnJvbUNvb2tpZTpmdW5jdGlvbigpe3ZhciBlPXBvcE1hZ2ljLmdldENvb2tpZShwb3BNYWdpYy5jb29raWVfbmFtZSksbz1udWxsO2lmKHZvaWQgMCE9PWUpe3ZhciB0PWUuc3BsaXQoXCI7XCIpWzFdO289dD4wP3BhcnNlSW50KHQpOjB9cmV0dXJuIGlzTmFOKG8pJiYobz1udWxsKSxvfSxzaG91bGRTaG93OmZ1bmN0aW9uKCl7aWYoIXBvcE1hZ2ljLmNvbmZpZy5jYXBwaW5nX2VuYWJsZWQpe3ZhciBlPSEwLG89cG9wTWFnaWMuY29uZmlnLnNob3VsZF9maXJlO3RyeXtcImZ1bmN0aW9uXCI9PXR5cGVvZiBvJiYoZT1Cb29sZWFuKG8oKSkpfWNhdGNoKGUpe2NvbnNvbGUuZXJyb3IoXCJFcnJvciBleGVjdXRpbmcgc2hvdWxkIGZpcmUgY2FsbGJhY2sgZnVuY3Rpb246XCIsZSl9cmV0dXJuIGUmJjA9PT1wb3BNYWdpYy5vcGVuX2NvdW50fWlmKHBvcE1hZ2ljLm9wZW5fY291bnQ+PXBvcE1hZ2ljLmNvbmZpZy5mcmVxdWVuY3lfY291bnQpcmV0dXJuITE7dmFyIHQ9cG9wTWFnaWMuZ2V0Q291bnRGcm9tQ29va2llKCksaT1wb3BNYWdpYy5nZXRMYXN0T3BlbmVkVGltZUZyb21Db29raWUoKSxuPU1hdGguZmxvb3IoRGF0ZS5ub3coKVwvMWUzKSxyPWkrcG9wTWFnaWMuY29uZmlnLnRyaWdnZXJfZGVsYXk7cmV0dXJuIShpJiZyPm4pJiYocG9wTWFnaWMub3Blbl9jb3VudD10LCEodD49cG9wTWFnaWMuY29uZmlnLmZyZXF1ZW5jeV9jb3VudCkpfSx2ZW5vclNob3VsZFNob3c6ZnVuY3Rpb24oKXtyZXR1cm4gcG9wTWFnaWMudmVub3JfbG9hZGVkJiZcIjBcIj09PXBvcE1hZ2ljLnZlbm9yfSxzZXRBc09wZW5lZDpmdW5jdGlvbihlKXt2YXIgbz1lP2UudGFyZ2V0fHxlLnNyY0VsZW1lbnQ6bnVsbCx0PXtpZDpcIlwiLHRhZ05hbWU6XCJcIixjbGFzc2VzOlwiXCIsdGV4dDpcIlwiLGhyZWY6XCJcIixlbG06XCJcIn07dm9pZCAwIT09byYmbnVsbCE9byYmKHQ9e2lkOnZvaWQgMCE9PW8uaWQmJm51bGwhPW8uaWQ/by5pZDpcIlwiLHRhZ05hbWU6dm9pZCAwIT09by50YWdOYW1lJiZudWxsIT1vLnRhZ05hbWU/by50YWdOYW1lOlwiXCIsY2xhc3Nlczp2b2lkIDAhPT1vLmNsYXNzTGlzdCYmbnVsbCE9by5jbGFzc0xpc3Q/by5jbGFzc0xpc3Q6XCJcIix0ZXh0OnZvaWQgMCE9PW8ub3V0ZXJUZXh0JiZudWxsIT1vLm91dGVyVGV4dD9vLm91dGVyVGV4dDpcIlwiLGhyZWY6dm9pZCAwIT09by5ocmVmJiZudWxsIT1vLmhyZWY/by5ocmVmOlwiXCIsZWxtOm99KTt2YXIgaT1uZXcgQ3VzdG9tRXZlbnQoXCJjcmVhdGl2ZURpc3BsYXllZC1cIitwb3BNYWdpYy5jb25maWcuaWR6b25lLHtkZXRhaWw6dH0pO2lmKGRvY3VtZW50LmRpc3BhdGNoRXZlbnQoaSkscG9wTWFnaWMuY29uZmlnLmNhcHBpbmdfZW5hYmxlZCl7dmFyIG49MTtuPTAhPT1wb3BNYWdpYy5vcGVuX2NvdW50P3BvcE1hZ2ljLm9wZW5fY291bnQrMTpwb3BNYWdpYy5nZXRDb3VudEZyb21Db29raWUoKSsxO3ZhciByPU1hdGguZmxvb3IoRGF0ZS5ub3coKVwvMWUzKTtwb3BNYWdpYy5jb25maWcuY29va2llY29uc2VudCYmcG9wTWFnaWMuc2V0Q29va2llKHBvcE1hZ2ljLmNvb2tpZV9uYW1lLG4rXCI7XCIrcixwb3BNYWdpYy5jb25maWcuZnJlcXVlbmN5X3BlcmlvZCl9ZWxzZSsrcG9wTWFnaWMub3Blbl9jb3VudH0sbG9hZEhvc3RlZDpmdW5jdGlvbigpe3ZhciBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzY3JpcHRcIik7Zm9yKHZhciBvIGluIGUudHlwZT1cImFwcGxpY2F0aW9uXC9qYXZhc2NyaXB0XCIsZS5hc3luYz0hMCxlLnNyYz1cIlwvXC9cIit0aGlzLmNvbmZpZy5hZHNfaG9zdCtcIlwvcG9wdW5kZXIxMDAwLmpzXCIsZS5pZD1cInBvcG1hZ2ljbGRyXCIsdGhpcy5jb25maWcpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRoaXMuY29uZmlnLG8pJiZcImFkc19ob3N0XCIhPT1vJiZcInN5bmRpY2F0aW9uX2hvc3RcIiE9PW8mJmUuc2V0QXR0cmlidXRlKFwiZGF0YS1leG8tXCIrbyx0aGlzLmNvbmZpZ1tvXSk7dmFyIHQ9ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJib2R5XCIpLml0ZW0oMCk7dC5maXJzdENoaWxkP3QuaW5zZXJ0QmVmb3JlKGUsdC5maXJzdENoaWxkKTp0LmFwcGVuZENoaWxkKGUpfSxwcmVwYXJlUG9wV2FpdDpmdW5jdGlvbigpe3NldFRpbWVvdXQocG9wTWFnaWMucHJlcGFyZVBvcCw0MDApfSxwcmVwYXJlUG9wOmZ1bmN0aW9uKCl7aWYoXCJvYmplY3RcIiE9dHlwZW9mIGV4b0pzUG9wMTAxfHwhT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGV4b0pzUG9wMTAxLFwiYWRkXCIpKXtpZihwb3BNYWdpYy50b3A9c2VsZixwb3BNYWdpYy50b3AhPT1zZWxmKXRyeXt0b3AuZG9jdW1lbnQubG9jYXRpb24udG9TdHJpbmcoKSYmKHBvcE1hZ2ljLnRvcD10b3ApfWNhdGNoKGUpe31pZihwb3BNYWdpYy5jb29raWVfbmFtZT1cInpvbmUtY2FwLVwiK3BvcE1hZ2ljLmNvbmZpZy5pZHpvbmUscG9wTWFnaWMuY29uZmlnLmNhcHBpbmdfZW5hYmxlZHx8KGRvY3VtZW50LmNvb2tpZT1wb3BNYWdpYy5jb29raWVfbmFtZStcIj07ZXhwaXJlcz1UaHUsIDAxIEphbiAxOTcwIDAwOjAwOjAxIEdNVDsgcGF0aD1cL1wiKSxwb3BNYWdpYy5zaG91bGRTaG93KCkpe3ZhciBlPW5ldyBYTUxIdHRwUmVxdWVzdDtlLm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbigpe2UucmVhZHlTdGF0ZT09WE1MSHR0cFJlcXVlc3QuRE9ORSYmKHBvcE1hZ2ljLnZlbm9yX2xvYWRlZD0hMCwyMDA9PWUuc3RhdHVzP3BvcE1hZ2ljLnZlbm9yPWUucmVzcG9uc2VUZXh0OnBvcE1hZ2ljLnZlbm9yPVwiMFwiKX07dmFyIG89XCJodHRwczpcIiE9PWRvY3VtZW50LmxvY2F0aW9uLnByb3RvY29sJiZcImh0dHA6XCIhPT1kb2N1bWVudC5sb2NhdGlvbi5wcm90b2NvbD9cImh0dHBzOlwiOmRvY3VtZW50LmxvY2F0aW9uLnByb3RvY29sO2Uub3BlbihcIkdFVFwiLG8rXCJcL1wvXCIrcG9wTWFnaWMuY29uZmlnLnN5bmRpY2F0aW9uX2hvc3QrXCJcL3Zlbm9yLnBocFwiLCEwKTt0cnl7ZS5zZW5kKCl9Y2F0Y2goZSl7cG9wTWFnaWMudmVub3JfbG9hZGVkPSEwfX1pZihwb3BNYWdpYy5idWlsZFVybCgpLHBvcE1hZ2ljLmJyb3dzZXI9cG9wTWFnaWMuYnJvd3NlckRldGVjdG9yLmdldEJyb3dzZXJJbmZvKCkscG9wTWFnaWMuY29uZmlnLmNocm9tZV9lbmFibGVkfHwhcG9wTWFnaWMuYnJvd3Nlci5pc0Nocm9tZSl7dmFyIHQ9cG9wTWFnaWMuZ2V0UG9wTWV0aG9kKHBvcE1hZ2ljLmJyb3dzZXIpO3BvcE1hZ2ljLmFkZEV2ZW50KFwiY2xpY2tcIix0KX19fSxnZXRQb3BNZXRob2Q6ZnVuY3Rpb24oZSl7cmV0dXJuIHBvcE1hZ2ljLmNvbmZpZy5wb3B1cF9mb3JjZXx8cG9wTWFnaWMuY29uZmlnLnBvcHVwX2ZhbGxiYWNrJiZlLmlzQ2hyb21lJiZlLnZlcnNpb24+PTY4JiYhZS5pc01vYmlsZT9wb3BNYWdpYy5tZXRob2RzLnBvcHVwOmUuaXNNb2JpbGU/cG9wTWFnaWMubWV0aG9kcy5kZWZhdWx0OmUuaXNDaHJvbWU/cG9wTWFnaWMubWV0aG9kcy5jaHJvbWVUYWI6cG9wTWFnaWMubWV0aG9kcy5kZWZhdWx0fSxjaGVja1RDRkNvbnNlbnQ6ZnVuY3Rpb24oZSl7aWYodGhpcy5jb25maWcudGNmX2VuYWJsZWQmJlwiZnVuY3Rpb25cIj09dHlwZW9mIHdpbmRvdy5fX3RjZmFwaSl7dmFyIG89dGhpczt3aW5kb3cuX190Y2ZhcGkoXCJhZGRFdmVudExpc3RlbmVyXCIsMiwoZnVuY3Rpb24odCxpKXtpJiYoby50Y2ZEYXRhPXQsXCJ0Y2xvYWRlZFwiIT09dC5ldmVudFN0YXR1cyYmXCJ1c2VyYWN0aW9uY29tcGxldGVcIiE9PXQuZXZlbnRTdGF0dXN8fCh3aW5kb3cuX190Y2ZhcGkoXCJyZW1vdmVFdmVudExpc3RlbmVyXCIsMiwoZnVuY3Rpb24oKXt9KSx0Lmxpc3RlbmVySWQpLGUoKSkpfSkpfWVsc2UgZSgpfSxidWlsZFVybDpmdW5jdGlvbigpe3ZhciBlLG89XCJodHRwczpcIiE9PWRvY3VtZW50LmxvY2F0aW9uLnByb3RvY29sJiZcImh0dHA6XCIhPT1kb2N1bWVudC5sb2NhdGlvbi5wcm90b2NvbD9cImh0dHBzOlwiOmRvY3VtZW50LmxvY2F0aW9uLnByb3RvY29sLHQ9dG9wPT09c2VsZj9kb2N1bWVudC5VUkw6ZG9jdW1lbnQucmVmZXJyZXIsaT17dHlwZTpcImlubGluZVwiLG5hbWU6XCJwb3BNYWdpY1wiLHZlcjp0aGlzLnZlcnNpb259LG49XCJcIjtjdXN0b21UYXJnZXRpbmcmJk9iamVjdC5rZXlzKGN1c3RvbVRhcmdldGluZykubGVuZ3RoJiYoXCJvYmplY3RcIj09dHlwZW9mIGN1c3RvbVRhcmdldGluZz9PYmplY3Qua2V5cyhjdXN0b21UYXJnZXRpbmcpOmN1c3RvbVRhcmdldGluZykuZm9yRWFjaCgoZnVuY3Rpb24obyl7XCJvYmplY3RcIj09dHlwZW9mIGN1c3RvbVRhcmdldGluZz9lPWN1c3RvbVRhcmdldGluZ1tvXTpBcnJheS5pc0FycmF5KGN1c3RvbVRhcmdldGluZykmJihlPXNjcmlwdEVsLmdldEF0dHJpYnV0ZShvKSk7dmFyIHQ9by5yZXBsYWNlKFwiZGF0YS1leG8tXCIsXCJcIik7bis9XCImXCIrdCtcIj1cIitlfSkpO3ZhciByPXRoaXMudGNmRGF0YSYmdGhpcy50Y2ZEYXRhLmdkcHJBcHBsaWVzJiYhMD09PXRoaXMudGNmRGF0YS5nZHByQXBwbGllcz8xOjA7dGhpcy51cmw9bytcIlwvXC9cIit0aGlzLmNvbmZpZy5zeW5kaWNhdGlvbl9ob3N0K1wiXC92MVwvbGluay5waHA/Y2F0PVwiK3RoaXMuY29uZmlnLmNhdCtcIiZpZHpvbmU9XCIrdGhpcy5jb25maWcuaWR6b25lK1wiJnR5cGU9OCZwPVwiK2VuY29kZVVSSUNvbXBvbmVudCh0KStcIiZzdWI9XCIrdGhpcy5jb25maWcuc3ViKyhcIlwiIT09dGhpcy5jb25maWcuc3ViMj9cIiZzdWIyPVwiK3RoaXMuY29uZmlnLnN1YjI6XCJcIikrKFwiXCIhPT10aGlzLmNvbmZpZy5zdWIzP1wiJnN1YjM9XCIrdGhpcy5jb25maWcuc3ViMzpcIlwiKStcIiZibG9jaz0xJmVsPVwiK3RoaXMuY29uZmlnLmVsK1wiJnRhZ3M9XCIrdGhpcy5jb25maWcudGFncytcIiZzY3JfaW5mbz1cIitmdW5jdGlvbihlKXt2YXIgbz1lLnR5cGUrXCJ8XCIrZS5uYW1lK1wifFwiK2UudmVyO3JldHVybiBlbmNvZGVVUklDb21wb25lbnQoYnRvYShvKSl9KGkpK24rXCImZ2Rwcj1cIityK1wiJmNiPVwiK01hdGguZmxvb3IoMWU5Kk1hdGgucmFuZG9tKCkpLHRoaXMudGNmRGF0YSYmdGhpcy50Y2ZEYXRhLnRjU3RyaW5nP3RoaXMudXJsKz1cIiZnZHByX2NvbnNlbnQ9XCIrZW5jb2RlVVJJQ29tcG9uZW50KHRoaXMudGNmRGF0YS50Y1N0cmluZyk6dGhpcy51cmwrPVwiJmNvb2tpZWNvbnNlbnQ9XCIrdGhpcy5jb25maWcuY29va2llY29uc2VudH0sYWRkRXZlbnRUb0VsZW1lbnQ6ZnVuY3Rpb24oZSxvLHQpe2UuYWRkRXZlbnRMaXN0ZW5lcj9lLmFkZEV2ZW50TGlzdGVuZXIobyx0LCExKTplLmF0dGFjaEV2ZW50PyhlW1wiZVwiK28rdF09dCxlW28rdF09ZnVuY3Rpb24oKXtlW1wiZVwiK28rdF0od2luZG93LmV2ZW50KX0sZS5hdHRhY2hFdmVudChcIm9uXCIrbyxlW28rdF0pKTplW1wib25cIitvXT1lW1wiZVwiK28rdF19LGdldFRyaWdnZXJDbGFzc2VzOmZ1bmN0aW9uKCl7dmFyIGUsbz1bXTstMT09PXBvcE1hZ2ljLmNvbmZpZy50cmlnZ2VyX2NsYXNzLmluZGV4T2YoXCIsXCIpP2U9cG9wTWFnaWMuY29uZmlnLnRyaWdnZXJfY2xhc3Muc3BsaXQoXCIgXCIpOmU9cG9wTWFnaWMuY29uZmlnLnRyaWdnZXJfY2xhc3MucmVwbGFjZShcL1xcc1wvZyxcIlwiKS5zcGxpdChcIixcIik7Zm9yKHZhciB0PTA7dDxlLmxlbmd0aDt0KyspXCJcIiE9PWVbdF0mJm8ucHVzaChcIi5cIitlW3RdKTtyZXR1cm4gb30sYWRkRXZlbnQ6ZnVuY3Rpb24oZSxvKXt2YXIgdDtpZihcIjNcIiE9cG9wTWFnaWMuY29uZmlnLnRyaWdnZXJfbWV0aG9kKWlmKFwiMlwiIT1wb3BNYWdpYy5jb25maWcudHJpZ2dlcl9tZXRob2R8fFwiXCI9PXBvcE1hZ2ljLmNvbmZpZy50cmlnZ2VyX21ldGhvZClpZihcIjRcIiE9cG9wTWFnaWMuY29uZmlnLnRyaWdnZXJfbWV0aG9kfHxcIlwiPT1wb3BNYWdpYy5jb25maWcudHJpZ2dlcl9tZXRob2QpcG9wTWFnaWMuYWRkRXZlbnRUb0VsZW1lbnQoZG9jdW1lbnQsZSxvKTtlbHNle3ZhciBuPXBvcE1hZ2ljLmdldFRyaWdnZXJDbGFzc2VzKCk7cG9wTWFnaWMuYWRkRXZlbnRUb0VsZW1lbnQoZG9jdW1lbnQsZSwoZnVuY3Rpb24oZSl7bi5zb21lKChmdW5jdGlvbihvKXtyZXR1cm4gbnVsbCE9PWUudGFyZ2V0LmNsb3Nlc3Qobyl9KSl8fG8uY2FsbChlLnRhcmdldCxlKX0pKX1lbHNle3ZhciByPXBvcE1hZ2ljLmdldFRyaWdnZXJDbGFzc2VzKCk7Zm9yKHQ9ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChyLmpvaW4oXCIsIFwiKSksaT0wO2k8dC5sZW5ndGg7aSsrKXBvcE1hZ2ljLmFkZEV2ZW50VG9FbGVtZW50KHRbaV0sZSxvKX1lbHNlIGZvcih0PWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCJhXCIpLGk9MDtpPHQubGVuZ3RoO2krKylwb3BNYWdpYy5hZGRFdmVudFRvRWxlbWVudCh0W2ldLGUsbyl9LHNldENvb2tpZTpmdW5jdGlvbihlLG8sdCl7aWYoIXRoaXMuY29uZmlnLmNvb2tpZWNvbnNlbnQpcmV0dXJuITE7dD1wYXJzZUludCh0LDEwKTt2YXIgaT1uZXcgRGF0ZTtpLnNldE1pbnV0ZXMoaS5nZXRNaW51dGVzKCkrcGFyc2VJbnQodCkpO3ZhciBuPWVuY29kZVVSSUNvbXBvbmVudChvKStcIjsgZXhwaXJlcz1cIitpLnRvVVRDU3RyaW5nKCkrXCI7IHBhdGg9XC9cIjtkb2N1bWVudC5jb29raWU9ZStcIj1cIitufSxnZXRDb29raWU6ZnVuY3Rpb24oZSl7aWYoIXRoaXMuY29uZmlnLmNvb2tpZWNvbnNlbnQpcmV0dXJuITE7dmFyIG8sdCxpLG49ZG9jdW1lbnQuY29va2llLnNwbGl0KFwiO1wiKTtmb3Iobz0wO288bi5sZW5ndGg7bysrKWlmKHQ9bltvXS5zdWJzdHIoMCxuW29dLmluZGV4T2YoXCI9XCIpKSxpPW5bb10uc3Vic3RyKG5bb10uaW5kZXhPZihcIj1cIikrMSksKHQ9dC5yZXBsYWNlKFwvXlxccyt8XFxzKyRcL2csXCJcIikpPT09ZSlyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KGkpfSxyYW5kU3RyOmZ1bmN0aW9uKGUsbyl7Zm9yKHZhciB0PVwiXCIsaT1vfHxcIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5XCIsbj0wO248ZTtuKyspdCs9aS5jaGFyQXQoTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKmkubGVuZ3RoKSk7cmV0dXJuIHR9LGlzVmFsaWRVc2VyRXZlbnQ6ZnVuY3Rpb24oZSl7cmV0dXJuISghKFwiaXNUcnVzdGVkXCJpbiBlKXx8IWUuaXNUcnVzdGVkfHxcImllXCI9PT1wb3BNYWdpYy5icm93c2VyLm5hbWV8fFwic2FmYXJpXCI9PT1wb3BNYWdpYy5icm93c2VyLm5hbWUpfHwwIT1lLnNjcmVlblgmJjAhPWUuc2NyZWVuWX0saXNWYWxpZEhyZWY6ZnVuY3Rpb24oZSl7aWYodm9pZCAwPT09ZXx8XCJcIj09ZSlyZXR1cm4hMTtyZXR1cm4hXC9cXHM/amF2YXNjcmlwdFxccz86XC9pLnRlc3QoZSl9LGZpbmRMaW5rVG9PcGVuOmZ1bmN0aW9uKGUpe3ZhciBvPWUsdD0hMTt0cnl7Zm9yKHZhciBpPTA7aTwyMCYmIW8uZ2V0QXR0cmlidXRlKFwiaHJlZlwiKSYmbyE9PWRvY3VtZW50JiZcImh0bWxcIiE9PW8ubm9kZU5hbWUudG9Mb3dlckNhc2UoKTspbz1vLnBhcmVudE5vZGUsaSsrO3ZhciBuPW8uZ2V0QXR0cmlidXRlKFwidGFyZ2V0XCIpO24mJi0xIT09bi5pbmRleE9mKFwiX2JsYW5rXCIpfHwodD1vLmdldEF0dHJpYnV0ZShcImhyZWZcIikpfWNhdGNoKGUpe31yZXR1cm4gcG9wTWFnaWMuaXNWYWxpZEhyZWYodCl8fCh0PSExKSx0fHx3aW5kb3cubG9jYXRpb24uaHJlZn0sZ2V0UHVJZDpmdW5jdGlvbigpe3JldHVyblwib2tfXCIrTWF0aC5mbG9vcig4OTk5OTk5OSpNYXRoLnJhbmRvbSgpKzFlNyl9LGV4ZWN1dGVPblJlZGlyZWN0OmZ1bmN0aW9uKCl7dHJ5e3BvcE1hZ2ljLmNvbmZpZy5jYXBwaW5nX2VuYWJsZWR8fFwiZnVuY3Rpb25cIiE9dHlwZW9mIHBvcE1hZ2ljLmNvbmZpZy5vbl9yZWRpcmVjdHx8cG9wTWFnaWMuY29uZmlnLm9uX3JlZGlyZWN0KCl9Y2F0Y2goZSl7Y29uc29sZS5lcnJvcihcIkVycm9yIGV4ZWN1dGluZyBvbiByZWRpcmVjdCBjYWxsYmFjazpcIixlKX19LGJyb3dzZXJEZXRlY3Rvcjp7YnJvd3NlckRlZmluaXRpb25zOltbXCJmaXJlZm94XCIsXC9GaXJlZm94XFxcLyhbMC05Ll0rKSg/Olxcc3wkKVwvXSxbXCJvcGVyYVwiLFwvT3BlcmFcXFwvKFswLTkuXSspKD86XFxzfCQpXC9dLFtcIm9wZXJhXCIsXC9PUFJcXFwvKFswLTkuXSspKDo/XFxzfCQpJFwvXSxbXCJlZGdlXCIsXC9FZGcoPzplfClcXFwvKFswLTkuX10rKVwvXSxbXCJpZVwiLFwvVHJpZGVudFxcXC83XFwuMC4qcnY6KFswLTkuXSspXFwpLipHZWNrbyRcL10sW1wiaWVcIixcL01TSUVcXHMoWzAtOS5dKyk7LipUcmlkZW50XFxcL1s0LTddLjBcL10sW1wiaWVcIixcL01TSUVcXHMoN1xcLjApXC9dLFtcInNhZmFyaVwiLFwvVmVyc2lvblxcXC8oWzAtOS5fXSspLipTYWZhcmlcL10sW1wiY2hyb21lXCIsXC8oPyFDaHJvbS4qRWRnKD86ZXwpKUNocm9tKD86ZXxpdW0pXFxcLyhbMC05Ll0rKSg6P1xcc3wkKVwvXSxbXCJjaHJvbWVcIixcLyg/IUNocm9tLipPUFIpQ2hyb20oPzplfGl1bSlcXFwvKFswLTkuXSspKDo/XFxzfCQpXC9dLFtcImJiMTBcIixcL0JCMTA7XFxzVG91Y2guKlZlcnNpb25cXFwvKFswLTkuXSspXC9dLFtcImFuZHJvaWRcIixcL0FuZHJvaWRcXHMoWzAtOS5dKylcL10sW1wiaW9zXCIsXC9WZXJzaW9uXFxcLyhbMC05Ll9dKykuKk1vYmlsZS4qU2FmYXJpLipcL10sW1wieWFuZGV4YnJvd3NlclwiLFwvWWFCcm93c2VyXFxcLyhbMC05Ll9dKylcL10sW1wiY3Jpb3NcIixcL0NyaU9TXFxcLyhbMC05Ll0rKSg6P1xcc3wkKVwvXV0saXNDaHJvbWVPckNocm9taXVtOmZ1bmN0aW9uKCl7dmFyIGU9d2luZG93Lm5hdmlnYXRvcixvPShlLnVzZXJBZ2VudHx8XCJcIikudG9Mb3dlckNhc2UoKSx0PWUudmVuZG9yfHxcIlwiO2lmKC0xIT09by5pbmRleE9mKFwiY3Jpb3NcIikpcmV0dXJuITA7aWYoZS51c2VyQWdlbnREYXRhJiZBcnJheS5pc0FycmF5KGUudXNlckFnZW50RGF0YS5icmFuZHMpJiZlLnVzZXJBZ2VudERhdGEuYnJhbmRzLmxlbmd0aD4wKXt2YXIgaT1lLnVzZXJBZ2VudERhdGEuYnJhbmRzLG49aS5zb21lKChmdW5jdGlvbihlKXtyZXR1cm5cIkdvb2dsZSBDaHJvbWVcIj09PWUuYnJhbmR9KSkscj1pLnNvbWUoKGZ1bmN0aW9uKGUpe3JldHVyblwiQ2hyb21pdW1cIj09PWUuYnJhbmR9KSkmJjI9PT1pLmxlbmd0aDtyZXR1cm4gbnx8cn12YXIgYT0hIXdpbmRvdy5jaHJvbWUsYz0tMSE9PW8uaW5kZXhPZihcImVkZ1wiKSxwPSEhd2luZG93Lm9wcnx8LTEhPT1vLmluZGV4T2YoXCJvcHJcIikscz0hKCFlLmJyYXZlfHwhZS5icmF2ZS5pc0JyYXZlKSxnPS0xIT09by5pbmRleE9mKFwidml2YWxkaVwiKSxkPS0xIT09by5pbmRleE9mKFwieWFicm93c2VyXCIpLGw9LTEhPT1vLmluZGV4T2YoXCJzYW1zdW5nYnJvd3NlclwiKSx1PS0xIT09by5pbmRleE9mKFwidWNicm93c2VyXCIpO3JldHVybiBhJiZcIkdvb2dsZSBJbmMuXCI9PT10JiYhYyYmIXAmJiFzJiYhZyYmIWQmJiFsJiYhdX0sZ2V0QnJvd3NlckluZm86ZnVuY3Rpb24oKXt2YXIgZT13aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudCxvPXtuYW1lOlwib3RoZXJcIix2ZXJzaW9uOlwiMS4wXCIsdmVyc2lvbk51bWJlcjoxLGlzQ2hyb21lOnRoaXMuaXNDaHJvbWVPckNocm9taXVtKCksaXNNb2JpbGU6ISFlLm1hdGNoKFwvQW5kcm9pZHxCbGFja0JlcnJ5fGlQaG9uZXxpUGFkfGlQb2R8T3BlcmEgTWluaXxJRU1vYmlsZXxXZWJPU3xXaW5kb3dzIFBob25lXC9pKX07Zm9yKHZhciB0IGluIHRoaXMuYnJvd3NlckRlZmluaXRpb25zKXt2YXIgaT10aGlzLmJyb3dzZXJEZWZpbml0aW9uc1t0XTtpZihpWzFdLnRlc3QoZSkpe3ZhciBuPWlbMV0uZXhlYyhlKSxyPW4mJm5bMV0uc3BsaXQoXC9bLl9dXC8pLnNsaWNlKDAsMyksYT1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChyLDEpLmpvaW4oXCJcIil8fFwiMFwiO3ImJnIubGVuZ3RoPDMmJkFycmF5LnByb3RvdHlwZS5wdXNoLmFwcGx5KHIsMT09PXIubGVuZ3RoP1swLDBdOlswXSksby5uYW1lPWlbMF0sby52ZXJzaW9uPXIuam9pbihcIi5cIiksby52ZXJzaW9uTnVtYmVyPXBhcnNlRmxvYXQoclswXStcIi5cIithKTticmVha319cmV0dXJuIG99fSxtZXRob2RzOntkZWZhdWx0OmZ1bmN0aW9uKGUpe2lmKCFwb3BNYWdpYy5zaG91bGRTaG93KCl8fCFwb3BNYWdpYy52ZW5vclNob3VsZFNob3coKXx8IXBvcE1hZ2ljLmlzVmFsaWRVc2VyRXZlbnQoZSkpcmV0dXJuITA7dmFyIG89ZS50YXJnZXR8fGUuc3JjRWxlbWVudCx0PXBvcE1hZ2ljLmZpbmRMaW5rVG9PcGVuKG8pO3JldHVybiB3aW5kb3cub3Blbih0LFwiX2JsYW5rXCIpLHBvcE1hZ2ljLnNldEFzT3BlbmVkKGUpLHBvcE1hZ2ljLmV4ZWN1dGVPblJlZGlyZWN0KCkscG9wTWFnaWMudG9wLmRvY3VtZW50LmxvY2F0aW9uPXBvcE1hZ2ljLnVybCx2b2lkIDAhPT1lLnByZXZlbnREZWZhdWx0JiYoZS5wcmV2ZW50RGVmYXVsdCgpLGUuc3RvcFByb3BhZ2F0aW9uKCkpLCEwfSxjaHJvbWVUYWI6ZnVuY3Rpb24oZSl7aWYoIXBvcE1hZ2ljLnNob3VsZFNob3coKXx8IXBvcE1hZ2ljLnZlbm9yU2hvdWxkU2hvdygpfHwhcG9wTWFnaWMuaXNWYWxpZFVzZXJFdmVudChlKSlyZXR1cm4hMDtpZih2b2lkIDA9PT1lLnByZXZlbnREZWZhdWx0KXJldHVybiEwO2UucHJldmVudERlZmF1bHQoKSxlLnN0b3BQcm9wYWdhdGlvbigpO3ZhciBvPXRvcC53aW5kb3cuZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImFcIiksdD1lLnRhcmdldHx8ZS5zcmNFbGVtZW50O28uaHJlZj1wb3BNYWdpYy5maW5kTGlua1RvT3Blbih0KSxkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZShcImJvZHlcIilbMF0uYXBwZW5kQ2hpbGQobyk7dmFyIGk9bmV3IE1vdXNlRXZlbnQoXCJjbGlja1wiLHtidWJibGVzOiEwLGNhbmNlbGFibGU6ITAsdmlldzp3aW5kb3csc2NyZWVuWDowLHNjcmVlblk6MCxjbGllbnRYOjAsY2xpZW50WTowLGN0cmxLZXk6ITAsYWx0S2V5OiExLHNoaWZ0S2V5OiExLG1ldGFLZXk6ITAsYnV0dG9uOjB9KTtpLnByZXZlbnREZWZhdWx0PXZvaWQgMCxvLmRpc3BhdGNoRXZlbnQoaSksby5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKG8pLHBvcE1hZ2ljLmV4ZWN1dGVPblJlZGlyZWN0KCksd2luZG93Lm9wZW4ocG9wTWFnaWMudXJsLFwiX3NlbGZcIikscG9wTWFnaWMuc2V0QXNPcGVuZWQoZSl9LHBvcHVwOmZ1bmN0aW9uKGUpe2lmKCFwb3BNYWdpYy5zaG91bGRTaG93KCl8fCFwb3BNYWdpYy52ZW5vclNob3VsZFNob3coKXx8IXBvcE1hZ2ljLmlzVmFsaWRVc2VyRXZlbnQoZSkpcmV0dXJuITA7dmFyIG89XCJcIjtpZihwb3BNYWdpYy5jb25maWcucG9wdXBfZmFsbGJhY2smJiFwb3BNYWdpYy5jb25maWcucG9wdXBfZm9yY2Upe3ZhciB0PU1hdGgubWF4KE1hdGgucm91bmQoLjgqd2luZG93LmlubmVySGVpZ2h0KSwzMDApO289XCJtZW51YmFyPTEscmVzaXphYmxlPTEsd2lkdGg9XCIrTWF0aC5tYXgoTWF0aC5yb3VuZCguNyp3aW5kb3cuaW5uZXJXaWR0aCksMzAwKStcIixoZWlnaHQ9XCIrdCtcIix0b3A9XCIrKHdpbmRvdy5zY3JlZW5ZKzEwMCkrXCIsbGVmdD1cIisod2luZG93LnNjcmVlblgrMTAwKX12YXIgaT1kb2N1bWVudC5sb2NhdGlvbi5ocmVmLG49d2luZG93Lm9wZW4oaSxwb3BNYWdpYy5nZXRQdUlkKCksbyk7cG9wTWFnaWMuc2V0QXNPcGVuZWQoZSksc2V0VGltZW91dCgoZnVuY3Rpb24oKXtuLmxvY2F0aW9uLmhyZWY9cG9wTWFnaWMudXJsLHBvcE1hZ2ljLmV4ZWN1dGVPblJlZGlyZWN0KCl9KSwyMDApLHZvaWQgMCE9PWUucHJldmVudERlZmF1bHQmJihlLnByZXZlbnREZWZhdWx0KCksZS5zdG9wUHJvcGFnYXRpb24oKSl9fX07ICAgIHBvcE1hZ2ljLmluaXQoYWRDb25maWcpO1xyXG59KSgpO1xyXG5cclxuXHJcbjxcL3NjcmlwdD4ifSx7ImlkIjoiZXhvbV9qX1BPUFVOREVSIiwiYWRzcG90Ijoial9QT1BVTkRFUiIsIndlaWdodCI6IjYiLCJmY2FwIjoiMiIsInNjaGVkdWxlIjpmYWxzZSwibWF4V2lkdGgiOiI3NjgiLCJtaW5XaWR0aCI6ZmFsc2UsInRpbWV6b25lIjpmYWxzZSwiZXhjbHVkZSI6ZmFsc2UsImRvbWFpbiI6ZmFsc2UsImNvZGUiOiI8c2NyaXB0IHR5cGU9XCJhcHBsaWNhdGlvblwvamF2YXNjcmlwdFwiPlxyXG4oZnVuY3Rpb24oKSB7XHJcbiAgICBmdW5jdGlvbiByYW5kU3RyKGUsdCl7Zm9yKHZhciBuPVwiXCIscj10fHxcIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpcIixvPTA7bzxlO28rKyluKz1yLmNoYXJBdChNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqci5sZW5ndGgpKTtyZXR1cm4gbn1mdW5jdGlvbiBnZW5lcmF0ZUNvbnRlbnQoKXtyZXR1cm4gdm9pZCAwPT09Z2VuZXJhdGVDb250ZW50LnZhbCYmKGdlbmVyYXRlQ29udGVudC52YWw9XCJkb2N1bWVudC5kaXNwYXRjaEV2ZW50KFwiK3JhbmRTdHIoNCpNYXRoLnJhbmRvbSgpKzMpK1wiKTtcIiksZ2VuZXJhdGVDb250ZW50LnZhbH10cnl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGRvY3VtZW50LmN1cnJlbnRTY3JpcHQsXCJpbm5lckhUTUxcIix7Z2V0OmdlbmVyYXRlQ29udGVudH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkb2N1bWVudC5jdXJyZW50U2NyaXB0LFwidGV4dENvbnRlbnRcIix7Z2V0OmdlbmVyYXRlQ29udGVudH0pfWNhdGNoKGUpe307XHJcblxyXG4gICAgXC9cL3ZlcnNpb24gNy4wLjBcclxuXHJcbiAgICB2YXIgYWRDb25maWcgPSB7XHJcbiAgICBcImFkc19ob3N0XCI6IFwiYS5wZW1zcnYuY29tXCIsXHJcbiAgICBcInN5bmRpY2F0aW9uX2hvc3RcIjogXCJzLnBlbXNydi5jb21cIixcclxuICAgIFwiaWR6b25lXCI6IDU2NjU2NTgsXHJcbiAgICBcInBvcHVwX2ZhbGxiYWNrXCI6IGZhbHNlLFxyXG4gICAgXCJwb3B1cF9mb3JjZVwiOiBmYWxzZSxcclxuICAgIFwiY2hyb21lX2VuYWJsZWRcIjogdHJ1ZSxcclxuICAgIFwibmV3X3RhYlwiOiBmYWxzZSxcclxuICAgIFwiZnJlcXVlbmN5X3BlcmlvZFwiOiA3MjAsXHJcbiAgICBcImZyZXF1ZW5jeV9jb3VudFwiOiAxLFxyXG4gICAgXCJ0cmlnZ2VyX21ldGhvZFwiOiAzLFxyXG4gICAgXCJ0cmlnZ2VyX2NsYXNzXCI6IFwiXCIsXHJcbiAgICBcInRyaWdnZXJfZGVsYXlcIjogMCxcclxuICAgIFwiY2FwcGluZ19lbmFibGVkXCI6IHRydWUsXHJcbiAgICBcInRjZl9lbmFibGVkXCI6IHRydWUsXHJcbiAgICBcIm9ubHlfaW5saW5lXCI6IGZhbHNlXHJcbn07XHJcblxyXG53aW5kb3cuZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbHx8KGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGw9ZG9jdW1lbnQuYm9keS5xdWVyeVNlbGVjdG9yQWxsPU9iamVjdC5xdWVyeVNlbGVjdG9yQWxsPWZ1bmN0aW9uKGUsbyx0LGksbil7dmFyIHI9ZG9jdW1lbnQsYT1yLmNyZWF0ZVN0eWxlU2hlZXQoKTtmb3Iobj1yLmFsbCxvPVtdLHQ9KGU9ZS5yZXBsYWNlKFwvXFxbZm9yXFxiXC9naSxcIltodG1sRm9yXCIpLnNwbGl0KFwiLFwiKSkubGVuZ3RoO3QtLTspe2ZvcihhLmFkZFJ1bGUoZVt0XSxcIms6dlwiKSxpPW4ubGVuZ3RoO2ktLTspbltpXS5jdXJyZW50U3R5bGUuayYmby5wdXNoKG5baV0pO2EucmVtb3ZlUnVsZSgwKX1yZXR1cm4gb30pO3ZhciBwb3BNYWdpYz17dmVyc2lvbjo3LGNvb2tpZV9uYW1lOlwiXCIsdXJsOlwiXCIsY29uZmlnOnt9LG9wZW5fY291bnQ6MCx0b3A6bnVsbCxicm93c2VyOm51bGwsdmVub3JfbG9hZGVkOiExLHZlbm9yOiExLHRjZkRhdGE6bnVsbCxjb25maWdUcGw6e2Fkc19ob3N0OlwiXCIsc3luZGljYXRpb25faG9zdDpcIlwiLGlkem9uZTpcIlwiLGZyZXF1ZW5jeV9wZXJpb2Q6NzIwLGZyZXF1ZW5jeV9jb3VudDoxLHRyaWdnZXJfbWV0aG9kOjEsdHJpZ2dlcl9jbGFzczpcIlwiLHBvcHVwX2ZvcmNlOiExLHBvcHVwX2ZhbGxiYWNrOiExLGNocm9tZV9lbmFibGVkOiEwLG5ld190YWI6ITEsY2F0OlwiXCIsdGFnczpcIlwiLGVsOlwiXCIsc3ViOlwiXCIsc3ViMjpcIlwiLHN1YjM6XCJcIixvbmx5X2lubGluZTohMSx0cmlnZ2VyX2RlbGF5OjAsY2FwcGluZ19lbmFibGVkOiEwLHRjZl9lbmFibGVkOiExLGNvb2tpZWNvbnNlbnQ6ITAsc2hvdWxkX2ZpcmU6ZnVuY3Rpb24oKXtyZXR1cm4hMH0sb25fcmVkaXJlY3Q6bnVsbH0saW5pdDpmdW5jdGlvbihlKXtpZih2b2lkIDAhPT1lLmlkem9uZSYmZS5pZHpvbmUpe3ZvaWQgMD09PWUuY3VzdG9tVGFyZ2V0aW5nJiYoZS5jdXN0b21UYXJnZXRpbmc9W10pLHdpbmRvdy5jdXN0b21UYXJnZXRpbmc9ZS5jdXN0b21UYXJnZXRpbmd8fG51bGw7dmFyIG89T2JqZWN0LmtleXMoZS5jdXN0b21UYXJnZXRpbmcpLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIGUuc2VhcmNoKFwiZXhfXCIpPj0wfSkpO2Zvcih2YXIgdCBpbiBvLmxlbmd0aCYmby5mb3JFYWNoKGZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmNvbmZpZ1RwbFtlXT1udWxsfS5iaW5kKHRoaXMpKSx0aGlzLmNvbmZpZ1RwbClPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcy5jb25maWdUcGwsdCkmJih2b2lkIDAhPT1lW3RdP3RoaXMuY29uZmlnW3RdPWVbdF06dGhpcy5jb25maWdbdF09dGhpcy5jb25maWdUcGxbdF0pO2lmKHZvaWQgMCE9PXRoaXMuY29uZmlnLmlkem9uZSYmXCJcIiE9PXRoaXMuY29uZmlnLmlkem9uZSl7ITAhPT10aGlzLmNvbmZpZy5vbmx5X2lubGluZSYmdGhpcy5sb2FkSG9zdGVkKCk7dmFyIGk9dGhpczt0aGlzLmNoZWNrVENGQ29uc2VudCgoZnVuY3Rpb24oKXtcImNvbXBsZXRlXCI9PT1kb2N1bWVudC5yZWFkeVN0YXRlP2kucHJlcGFyZVBvcFdhaXQoKTppLmFkZEV2ZW50VG9FbGVtZW50KHdpbmRvdyxcImxvYWRcIixpLnByZXBhcmVQb3ApfSkpfX19LGdldENvdW50RnJvbUNvb2tpZTpmdW5jdGlvbigpe2lmKCF0aGlzLmNvbmZpZy5jb29raWVjb25zZW50KXJldHVybiAwO3ZhciBlPXBvcE1hZ2ljLmdldENvb2tpZShwb3BNYWdpYy5jb29raWVfbmFtZSksbz12b2lkIDA9PT1lPzA6cGFyc2VJbnQoZSk7cmV0dXJuIGlzTmFOKG8pJiYobz0wKSxvfSxnZXRMYXN0T3BlbmVkVGltZUZyb21Db29raWU6ZnVuY3Rpb24oKXt2YXIgZT1wb3BNYWdpYy5nZXRDb29raWUocG9wTWFnaWMuY29va2llX25hbWUpLG89bnVsbDtpZih2b2lkIDAhPT1lKXt2YXIgdD1lLnNwbGl0KFwiO1wiKVsxXTtvPXQ+MD9wYXJzZUludCh0KTowfXJldHVybiBpc05hTihvKSYmKG89bnVsbCksb30sc2hvdWxkU2hvdzpmdW5jdGlvbigpe2lmKCFwb3BNYWdpYy5jb25maWcuY2FwcGluZ19lbmFibGVkKXt2YXIgZT0hMCxvPXBvcE1hZ2ljLmNvbmZpZy5zaG91bGRfZmlyZTt0cnl7XCJmdW5jdGlvblwiPT10eXBlb2YgbyYmKGU9Qm9vbGVhbihvKCkpKX1jYXRjaChlKXtjb25zb2xlLmVycm9yKFwiRXJyb3IgZXhlY3V0aW5nIHNob3VsZCBmaXJlIGNhbGxiYWNrIGZ1bmN0aW9uOlwiLGUpfXJldHVybiBlJiYwPT09cG9wTWFnaWMub3Blbl9jb3VudH1pZihwb3BNYWdpYy5vcGVuX2NvdW50Pj1wb3BNYWdpYy5jb25maWcuZnJlcXVlbmN5X2NvdW50KXJldHVybiExO3ZhciB0PXBvcE1hZ2ljLmdldENvdW50RnJvbUNvb2tpZSgpLGk9cG9wTWFnaWMuZ2V0TGFzdE9wZW5lZFRpbWVGcm9tQ29va2llKCksbj1NYXRoLmZsb29yKERhdGUubm93KClcLzFlMykscj1pK3BvcE1hZ2ljLmNvbmZpZy50cmlnZ2VyX2RlbGF5O3JldHVybiEoaSYmcj5uKSYmKHBvcE1hZ2ljLm9wZW5fY291bnQ9dCwhKHQ+PXBvcE1hZ2ljLmNvbmZpZy5mcmVxdWVuY3lfY291bnQpKX0sdmVub3JTaG91bGRTaG93OmZ1bmN0aW9uKCl7cmV0dXJuIHBvcE1hZ2ljLnZlbm9yX2xvYWRlZCYmXCIwXCI9PT1wb3BNYWdpYy52ZW5vcn0sc2V0QXNPcGVuZWQ6ZnVuY3Rpb24oZSl7dmFyIG89ZT9lLnRhcmdldHx8ZS5zcmNFbGVtZW50Om51bGwsdD17aWQ6XCJcIix0YWdOYW1lOlwiXCIsY2xhc3NlczpcIlwiLHRleHQ6XCJcIixocmVmOlwiXCIsZWxtOlwiXCJ9O3ZvaWQgMCE9PW8mJm51bGwhPW8mJih0PXtpZDp2b2lkIDAhPT1vLmlkJiZudWxsIT1vLmlkP28uaWQ6XCJcIix0YWdOYW1lOnZvaWQgMCE9PW8udGFnTmFtZSYmbnVsbCE9by50YWdOYW1lP28udGFnTmFtZTpcIlwiLGNsYXNzZXM6dm9pZCAwIT09by5jbGFzc0xpc3QmJm51bGwhPW8uY2xhc3NMaXN0P28uY2xhc3NMaXN0OlwiXCIsdGV4dDp2b2lkIDAhPT1vLm91dGVyVGV4dCYmbnVsbCE9by5vdXRlclRleHQ/by5vdXRlclRleHQ6XCJcIixocmVmOnZvaWQgMCE9PW8uaHJlZiYmbnVsbCE9by5ocmVmP28uaHJlZjpcIlwiLGVsbTpvfSk7dmFyIGk9bmV3IEN1c3RvbUV2ZW50KFwiY3JlYXRpdmVEaXNwbGF5ZWQtXCIrcG9wTWFnaWMuY29uZmlnLmlkem9uZSx7ZGV0YWlsOnR9KTtpZihkb2N1bWVudC5kaXNwYXRjaEV2ZW50KGkpLHBvcE1hZ2ljLmNvbmZpZy5jYXBwaW5nX2VuYWJsZWQpe3ZhciBuPTE7bj0wIT09cG9wTWFnaWMub3Blbl9jb3VudD9wb3BNYWdpYy5vcGVuX2NvdW50KzE6cG9wTWFnaWMuZ2V0Q291bnRGcm9tQ29va2llKCkrMTt2YXIgcj1NYXRoLmZsb29yKERhdGUubm93KClcLzFlMyk7cG9wTWFnaWMuY29uZmlnLmNvb2tpZWNvbnNlbnQmJnBvcE1hZ2ljLnNldENvb2tpZShwb3BNYWdpYy5jb29raWVfbmFtZSxuK1wiO1wiK3IscG9wTWFnaWMuY29uZmlnLmZyZXF1ZW5jeV9wZXJpb2QpfWVsc2UrK3BvcE1hZ2ljLm9wZW5fY291bnR9LGxvYWRIb3N0ZWQ6ZnVuY3Rpb24oKXt2YXIgZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic2NyaXB0XCIpO2Zvcih2YXIgbyBpbiBlLnR5cGU9XCJhcHBsaWNhdGlvblwvamF2YXNjcmlwdFwiLGUuYXN5bmM9ITAsZS5zcmM9XCJcL1wvXCIrdGhpcy5jb25maWcuYWRzX2hvc3QrXCJcL3BvcHVuZGVyMTAwMC5qc1wiLGUuaWQ9XCJwb3BtYWdpY2xkclwiLHRoaXMuY29uZmlnKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0aGlzLmNvbmZpZyxvKSYmXCJhZHNfaG9zdFwiIT09byYmXCJzeW5kaWNhdGlvbl9ob3N0XCIhPT1vJiZlLnNldEF0dHJpYnV0ZShcImRhdGEtZXhvLVwiK28sdGhpcy5jb25maWdbb10pO3ZhciB0PWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiYm9keVwiKS5pdGVtKDApO3QuZmlyc3RDaGlsZD90Lmluc2VydEJlZm9yZShlLHQuZmlyc3RDaGlsZCk6dC5hcHBlbmRDaGlsZChlKX0scHJlcGFyZVBvcFdhaXQ6ZnVuY3Rpb24oKXtzZXRUaW1lb3V0KHBvcE1hZ2ljLnByZXBhcmVQb3AsNDAwKX0scHJlcGFyZVBvcDpmdW5jdGlvbigpe2lmKFwib2JqZWN0XCIhPXR5cGVvZiBleG9Kc1BvcDEwMXx8IU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChleG9Kc1BvcDEwMSxcImFkZFwiKSl7aWYocG9wTWFnaWMudG9wPXNlbGYscG9wTWFnaWMudG9wIT09c2VsZil0cnl7dG9wLmRvY3VtZW50LmxvY2F0aW9uLnRvU3RyaW5nKCkmJihwb3BNYWdpYy50b3A9dG9wKX1jYXRjaChlKXt9aWYocG9wTWFnaWMuY29va2llX25hbWU9XCJ6b25lLWNhcC1cIitwb3BNYWdpYy5jb25maWcuaWR6b25lLHBvcE1hZ2ljLmNvbmZpZy5jYXBwaW5nX2VuYWJsZWR8fChkb2N1bWVudC5jb29raWU9cG9wTWFnaWMuY29va2llX25hbWUrXCI9O2V4cGlyZXM9VGh1LCAwMSBKYW4gMTk3MCAwMDowMDowMSBHTVQ7IHBhdGg9XC9cIikscG9wTWFnaWMuc2hvdWxkU2hvdygpKXt2YXIgZT1uZXcgWE1MSHR0cFJlcXVlc3Q7ZS5vbnJlYWR5c3RhdGVjaGFuZ2U9ZnVuY3Rpb24oKXtlLnJlYWR5U3RhdGU9PVhNTEh0dHBSZXF1ZXN0LkRPTkUmJihwb3BNYWdpYy52ZW5vcl9sb2FkZWQ9ITAsMjAwPT1lLnN0YXR1cz9wb3BNYWdpYy52ZW5vcj1lLnJlc3BvbnNlVGV4dDpwb3BNYWdpYy52ZW5vcj1cIjBcIil9O3ZhciBvPVwiaHR0cHM6XCIhPT1kb2N1bWVudC5sb2NhdGlvbi5wcm90b2NvbCYmXCJodHRwOlwiIT09ZG9jdW1lbnQubG9jYXRpb24ucHJvdG9jb2w/XCJodHRwczpcIjpkb2N1bWVudC5sb2NhdGlvbi5wcm90b2NvbDtlLm9wZW4oXCJHRVRcIixvK1wiXC9cL1wiK3BvcE1hZ2ljLmNvbmZpZy5zeW5kaWNhdGlvbl9ob3N0K1wiXC92ZW5vci5waHBcIiwhMCk7dHJ5e2Uuc2VuZCgpfWNhdGNoKGUpe3BvcE1hZ2ljLnZlbm9yX2xvYWRlZD0hMH19aWYocG9wTWFnaWMuYnVpbGRVcmwoKSxwb3BNYWdpYy5icm93c2VyPXBvcE1hZ2ljLmJyb3dzZXJEZXRlY3Rvci5nZXRCcm93c2VySW5mbygpLHBvcE1hZ2ljLmNvbmZpZy5jaHJvbWVfZW5hYmxlZHx8IXBvcE1hZ2ljLmJyb3dzZXIuaXNDaHJvbWUpe3ZhciB0PXBvcE1hZ2ljLmdldFBvcE1ldGhvZChwb3BNYWdpYy5icm93c2VyKTtwb3BNYWdpYy5hZGRFdmVudChcImNsaWNrXCIsdCl9fX0sZ2V0UG9wTWV0aG9kOmZ1bmN0aW9uKGUpe3JldHVybiBwb3BNYWdpYy5jb25maWcucG9wdXBfZm9yY2V8fHBvcE1hZ2ljLmNvbmZpZy5wb3B1cF9mYWxsYmFjayYmZS5pc0Nocm9tZSYmZS52ZXJzaW9uPj02OCYmIWUuaXNNb2JpbGU/cG9wTWFnaWMubWV0aG9kcy5wb3B1cDplLmlzTW9iaWxlP3BvcE1hZ2ljLm1ldGhvZHMuZGVmYXVsdDplLmlzQ2hyb21lP3BvcE1hZ2ljLm1ldGhvZHMuY2hyb21lVGFiOnBvcE1hZ2ljLm1ldGhvZHMuZGVmYXVsdH0sY2hlY2tUQ0ZDb25zZW50OmZ1bmN0aW9uKGUpe2lmKHRoaXMuY29uZmlnLnRjZl9lbmFibGVkJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiB3aW5kb3cuX190Y2ZhcGkpe3ZhciBvPXRoaXM7d2luZG93Ll9fdGNmYXBpKFwiYWRkRXZlbnRMaXN0ZW5lclwiLDIsKGZ1bmN0aW9uKHQsaSl7aSYmKG8udGNmRGF0YT10LFwidGNsb2FkZWRcIiE9PXQuZXZlbnRTdGF0dXMmJlwidXNlcmFjdGlvbmNvbXBsZXRlXCIhPT10LmV2ZW50U3RhdHVzfHwod2luZG93Ll9fdGNmYXBpKFwicmVtb3ZlRXZlbnRMaXN0ZW5lclwiLDIsKGZ1bmN0aW9uKCl7fSksdC5saXN0ZW5lcklkKSxlKCkpKX0pKX1lbHNlIGUoKX0sYnVpbGRVcmw6ZnVuY3Rpb24oKXt2YXIgZSxvPVwiaHR0cHM6XCIhPT1kb2N1bWVudC5sb2NhdGlvbi5wcm90b2NvbCYmXCJodHRwOlwiIT09ZG9jdW1lbnQubG9jYXRpb24ucHJvdG9jb2w/XCJodHRwczpcIjpkb2N1bWVudC5sb2NhdGlvbi5wcm90b2NvbCx0PXRvcD09PXNlbGY/ZG9jdW1lbnQuVVJMOmRvY3VtZW50LnJlZmVycmVyLGk9e3R5cGU6XCJpbmxpbmVcIixuYW1lOlwicG9wTWFnaWNcIix2ZXI6dGhpcy52ZXJzaW9ufSxuPVwiXCI7Y3VzdG9tVGFyZ2V0aW5nJiZPYmplY3Qua2V5cyhjdXN0b21UYXJnZXRpbmcpLmxlbmd0aCYmKFwib2JqZWN0XCI9PXR5cGVvZiBjdXN0b21UYXJnZXRpbmc/T2JqZWN0LmtleXMoY3VzdG9tVGFyZ2V0aW5nKTpjdXN0b21UYXJnZXRpbmcpLmZvckVhY2goKGZ1bmN0aW9uKG8pe1wib2JqZWN0XCI9PXR5cGVvZiBjdXN0b21UYXJnZXRpbmc/ZT1jdXN0b21UYXJnZXRpbmdbb106QXJyYXkuaXNBcnJheShjdXN0b21UYXJnZXRpbmcpJiYoZT1zY3JpcHRFbC5nZXRBdHRyaWJ1dGUobykpO3ZhciB0PW8ucmVwbGFjZShcImRhdGEtZXhvLVwiLFwiXCIpO24rPVwiJlwiK3QrXCI9XCIrZX0pKTt2YXIgcj10aGlzLnRjZkRhdGEmJnRoaXMudGNmRGF0YS5nZHByQXBwbGllcyYmITA9PT10aGlzLnRjZkRhdGEuZ2RwckFwcGxpZXM/MTowO3RoaXMudXJsPW8rXCJcL1wvXCIrdGhpcy5jb25maWcuc3luZGljYXRpb25faG9zdCtcIlwvdjFcL2xpbmsucGhwP2NhdD1cIit0aGlzLmNvbmZpZy5jYXQrXCImaWR6b25lPVwiK3RoaXMuY29uZmlnLmlkem9uZStcIiZ0eXBlPTgmcD1cIitlbmNvZGVVUklDb21wb25lbnQodCkrXCImc3ViPVwiK3RoaXMuY29uZmlnLnN1YisoXCJcIiE9PXRoaXMuY29uZmlnLnN1YjI/XCImc3ViMj1cIit0aGlzLmNvbmZpZy5zdWIyOlwiXCIpKyhcIlwiIT09dGhpcy5jb25maWcuc3ViMz9cIiZzdWIzPVwiK3RoaXMuY29uZmlnLnN1YjM6XCJcIikrXCImYmxvY2s9MSZlbD1cIit0aGlzLmNvbmZpZy5lbCtcIiZ0YWdzPVwiK3RoaXMuY29uZmlnLnRhZ3MrXCImc2NyX2luZm89XCIrZnVuY3Rpb24oZSl7dmFyIG89ZS50eXBlK1wifFwiK2UubmFtZStcInxcIitlLnZlcjtyZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KGJ0b2EobykpfShpKStuK1wiJmdkcHI9XCIrcitcIiZjYj1cIitNYXRoLmZsb29yKDFlOSpNYXRoLnJhbmRvbSgpKSx0aGlzLnRjZkRhdGEmJnRoaXMudGNmRGF0YS50Y1N0cmluZz90aGlzLnVybCs9XCImZ2Rwcl9jb25zZW50PVwiK2VuY29kZVVSSUNvbXBvbmVudCh0aGlzLnRjZkRhdGEudGNTdHJpbmcpOnRoaXMudXJsKz1cIiZjb29raWVjb25zZW50PVwiK3RoaXMuY29uZmlnLmNvb2tpZWNvbnNlbnR9LGFkZEV2ZW50VG9FbGVtZW50OmZ1bmN0aW9uKGUsbyx0KXtlLmFkZEV2ZW50TGlzdGVuZXI/ZS5hZGRFdmVudExpc3RlbmVyKG8sdCwhMSk6ZS5hdHRhY2hFdmVudD8oZVtcImVcIitvK3RdPXQsZVtvK3RdPWZ1bmN0aW9uKCl7ZVtcImVcIitvK3RdKHdpbmRvdy5ldmVudCl9LGUuYXR0YWNoRXZlbnQoXCJvblwiK28sZVtvK3RdKSk6ZVtcIm9uXCIrb109ZVtcImVcIitvK3RdfSxnZXRUcmlnZ2VyQ2xhc3NlczpmdW5jdGlvbigpe3ZhciBlLG89W107LTE9PT1wb3BNYWdpYy5jb25maWcudHJpZ2dlcl9jbGFzcy5pbmRleE9mKFwiLFwiKT9lPXBvcE1hZ2ljLmNvbmZpZy50cmlnZ2VyX2NsYXNzLnNwbGl0KFwiIFwiKTplPXBvcE1hZ2ljLmNvbmZpZy50cmlnZ2VyX2NsYXNzLnJlcGxhY2UoXC9cXHNcL2csXCJcIikuc3BsaXQoXCIsXCIpO2Zvcih2YXIgdD0wO3Q8ZS5sZW5ndGg7dCsrKVwiXCIhPT1lW3RdJiZvLnB1c2goXCIuXCIrZVt0XSk7cmV0dXJuIG99LGFkZEV2ZW50OmZ1bmN0aW9uKGUsbyl7dmFyIHQ7aWYoXCIzXCIhPXBvcE1hZ2ljLmNvbmZpZy50cmlnZ2VyX21ldGhvZClpZihcIjJcIiE9cG9wTWFnaWMuY29uZmlnLnRyaWdnZXJfbWV0aG9kfHxcIlwiPT1wb3BNYWdpYy5jb25maWcudHJpZ2dlcl9tZXRob2QpaWYoXCI0XCIhPXBvcE1hZ2ljLmNvbmZpZy50cmlnZ2VyX21ldGhvZHx8XCJcIj09cG9wTWFnaWMuY29uZmlnLnRyaWdnZXJfbWV0aG9kKXBvcE1hZ2ljLmFkZEV2ZW50VG9FbGVtZW50KGRvY3VtZW50LGUsbyk7ZWxzZXt2YXIgbj1wb3BNYWdpYy5nZXRUcmlnZ2VyQ2xhc3NlcygpO3BvcE1hZ2ljLmFkZEV2ZW50VG9FbGVtZW50KGRvY3VtZW50LGUsKGZ1bmN0aW9uKGUpe24uc29tZSgoZnVuY3Rpb24obyl7cmV0dXJuIG51bGwhPT1lLnRhcmdldC5jbG9zZXN0KG8pfSkpfHxvLmNhbGwoZS50YXJnZXQsZSl9KSl9ZWxzZXt2YXIgcj1wb3BNYWdpYy5nZXRUcmlnZ2VyQ2xhc3NlcygpO2Zvcih0PWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoci5qb2luKFwiLCBcIikpLGk9MDtpPHQubGVuZ3RoO2krKylwb3BNYWdpYy5hZGRFdmVudFRvRWxlbWVudCh0W2ldLGUsbyl9ZWxzZSBmb3IodD1kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiYVwiKSxpPTA7aTx0Lmxlbmd0aDtpKyspcG9wTWFnaWMuYWRkRXZlbnRUb0VsZW1lbnQodFtpXSxlLG8pfSxzZXRDb29raWU6ZnVuY3Rpb24oZSxvLHQpe2lmKCF0aGlzLmNvbmZpZy5jb29raWVjb25zZW50KXJldHVybiExO3Q9cGFyc2VJbnQodCwxMCk7dmFyIGk9bmV3IERhdGU7aS5zZXRNaW51dGVzKGkuZ2V0TWludXRlcygpK3BhcnNlSW50KHQpKTt2YXIgbj1lbmNvZGVVUklDb21wb25lbnQobykrXCI7IGV4cGlyZXM9XCIraS50b1VUQ1N0cmluZygpK1wiOyBwYXRoPVwvXCI7ZG9jdW1lbnQuY29va2llPWUrXCI9XCIrbn0sZ2V0Q29va2llOmZ1bmN0aW9uKGUpe2lmKCF0aGlzLmNvbmZpZy5jb29raWVjb25zZW50KXJldHVybiExO3ZhciBvLHQsaSxuPWRvY3VtZW50LmNvb2tpZS5zcGxpdChcIjtcIik7Zm9yKG89MDtvPG4ubGVuZ3RoO28rKylpZih0PW5bb10uc3Vic3RyKDAsbltvXS5pbmRleE9mKFwiPVwiKSksaT1uW29dLnN1YnN0cihuW29dLmluZGV4T2YoXCI9XCIpKzEpLCh0PXQucmVwbGFjZShcL15cXHMrfFxccyskXC9nLFwiXCIpKT09PWUpcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChpKX0scmFuZFN0cjpmdW5jdGlvbihlLG8pe2Zvcih2YXIgdD1cIlwiLGk9b3x8XCJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OVwiLG49MDtuPGU7bisrKXQrPWkuY2hhckF0KE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSppLmxlbmd0aCkpO3JldHVybiB0fSxpc1ZhbGlkVXNlckV2ZW50OmZ1bmN0aW9uKGUpe3JldHVybiEoIShcImlzVHJ1c3RlZFwiaW4gZSl8fCFlLmlzVHJ1c3RlZHx8XCJpZVwiPT09cG9wTWFnaWMuYnJvd3Nlci5uYW1lfHxcInNhZmFyaVwiPT09cG9wTWFnaWMuYnJvd3Nlci5uYW1lKXx8MCE9ZS5zY3JlZW5YJiYwIT1lLnNjcmVlbll9LGlzVmFsaWRIcmVmOmZ1bmN0aW9uKGUpe2lmKHZvaWQgMD09PWV8fFwiXCI9PWUpcmV0dXJuITE7cmV0dXJuIVwvXFxzP2phdmFzY3JpcHRcXHM/OlwvaS50ZXN0KGUpfSxmaW5kTGlua1RvT3BlbjpmdW5jdGlvbihlKXt2YXIgbz1lLHQ9ITE7dHJ5e2Zvcih2YXIgaT0wO2k8MjAmJiFvLmdldEF0dHJpYnV0ZShcImhyZWZcIikmJm8hPT1kb2N1bWVudCYmXCJodG1sXCIhPT1vLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7KW89by5wYXJlbnROb2RlLGkrKzt2YXIgbj1vLmdldEF0dHJpYnV0ZShcInRhcmdldFwiKTtuJiYtMSE9PW4uaW5kZXhPZihcIl9ibGFua1wiKXx8KHQ9by5nZXRBdHRyaWJ1dGUoXCJocmVmXCIpKX1jYXRjaChlKXt9cmV0dXJuIHBvcE1hZ2ljLmlzVmFsaWRIcmVmKHQpfHwodD0hMSksdHx8d2luZG93LmxvY2F0aW9uLmhyZWZ9LGdldFB1SWQ6ZnVuY3Rpb24oKXtyZXR1cm5cIm9rX1wiK01hdGguZmxvb3IoODk5OTk5OTkqTWF0aC5yYW5kb20oKSsxZTcpfSxleGVjdXRlT25SZWRpcmVjdDpmdW5jdGlvbigpe3RyeXtwb3BNYWdpYy5jb25maWcuY2FwcGluZ19lbmFibGVkfHxcImZ1bmN0aW9uXCIhPXR5cGVvZiBwb3BNYWdpYy5jb25maWcub25fcmVkaXJlY3R8fHBvcE1hZ2ljLmNvbmZpZy5vbl9yZWRpcmVjdCgpfWNhdGNoKGUpe2NvbnNvbGUuZXJyb3IoXCJFcnJvciBleGVjdXRpbmcgb24gcmVkaXJlY3QgY2FsbGJhY2s6XCIsZSl9fSxicm93c2VyRGV0ZWN0b3I6e2Jyb3dzZXJEZWZpbml0aW9uczpbW1wiZmlyZWZveFwiLFwvRmlyZWZveFxcXC8oWzAtOS5dKykoPzpcXHN8JClcL10sW1wib3BlcmFcIixcL09wZXJhXFxcLyhbMC05Ll0rKSg/Olxcc3wkKVwvXSxbXCJvcGVyYVwiLFwvT1BSXFxcLyhbMC05Ll0rKSg6P1xcc3wkKSRcL10sW1wiZWRnZVwiLFwvRWRnKD86ZXwpXFxcLyhbMC05Ll9dKylcL10sW1wiaWVcIixcL1RyaWRlbnRcXFwvN1xcLjAuKnJ2OihbMC05Ll0rKVxcKS4qR2Vja28kXC9dLFtcImllXCIsXC9NU0lFXFxzKFswLTkuXSspOy4qVHJpZGVudFxcXC9bNC03XS4wXC9dLFtcImllXCIsXC9NU0lFXFxzKDdcXC4wKVwvXSxbXCJzYWZhcmlcIixcL1ZlcnNpb25cXFwvKFswLTkuX10rKS4qU2FmYXJpXC9dLFtcImNocm9tZVwiLFwvKD8hQ2hyb20uKkVkZyg/OmV8KSlDaHJvbSg/OmV8aXVtKVxcXC8oWzAtOS5dKykoOj9cXHN8JClcL10sW1wiY2hyb21lXCIsXC8oPyFDaHJvbS4qT1BSKUNocm9tKD86ZXxpdW0pXFxcLyhbMC05Ll0rKSg6P1xcc3wkKVwvXSxbXCJiYjEwXCIsXC9CQjEwO1xcc1RvdWNoLipWZXJzaW9uXFxcLyhbMC05Ll0rKVwvXSxbXCJhbmRyb2lkXCIsXC9BbmRyb2lkXFxzKFswLTkuXSspXC9dLFtcImlvc1wiLFwvVmVyc2lvblxcXC8oWzAtOS5fXSspLipNb2JpbGUuKlNhZmFyaS4qXC9dLFtcInlhbmRleGJyb3dzZXJcIixcL1lhQnJvd3NlclxcXC8oWzAtOS5fXSspXC9dLFtcImNyaW9zXCIsXC9DcmlPU1xcXC8oWzAtOS5dKykoOj9cXHN8JClcL11dLGlzQ2hyb21lT3JDaHJvbWl1bTpmdW5jdGlvbigpe3ZhciBlPXdpbmRvdy5uYXZpZ2F0b3Isbz0oZS51c2VyQWdlbnR8fFwiXCIpLnRvTG93ZXJDYXNlKCksdD1lLnZlbmRvcnx8XCJcIjtpZigtMSE9PW8uaW5kZXhPZihcImNyaW9zXCIpKXJldHVybiEwO2lmKGUudXNlckFnZW50RGF0YSYmQXJyYXkuaXNBcnJheShlLnVzZXJBZ2VudERhdGEuYnJhbmRzKSYmZS51c2VyQWdlbnREYXRhLmJyYW5kcy5sZW5ndGg+MCl7dmFyIGk9ZS51c2VyQWdlbnREYXRhLmJyYW5kcyxuPWkuc29tZSgoZnVuY3Rpb24oZSl7cmV0dXJuXCJHb29nbGUgQ2hyb21lXCI9PT1lLmJyYW5kfSkpLHI9aS5zb21lKChmdW5jdGlvbihlKXtyZXR1cm5cIkNocm9taXVtXCI9PT1lLmJyYW5kfSkpJiYyPT09aS5sZW5ndGg7cmV0dXJuIG58fHJ9dmFyIGE9ISF3aW5kb3cuY2hyb21lLGM9LTEhPT1vLmluZGV4T2YoXCJlZGdcIikscD0hIXdpbmRvdy5vcHJ8fC0xIT09by5pbmRleE9mKFwib3ByXCIpLHM9ISghZS5icmF2ZXx8IWUuYnJhdmUuaXNCcmF2ZSksZz0tMSE9PW8uaW5kZXhPZihcInZpdmFsZGlcIiksZD0tMSE9PW8uaW5kZXhPZihcInlhYnJvd3NlclwiKSxsPS0xIT09by5pbmRleE9mKFwic2Ftc3VuZ2Jyb3dzZXJcIiksdT0tMSE9PW8uaW5kZXhPZihcInVjYnJvd3NlclwiKTtyZXR1cm4gYSYmXCJHb29nbGUgSW5jLlwiPT09dCYmIWMmJiFwJiYhcyYmIWcmJiFkJiYhbCYmIXV9LGdldEJyb3dzZXJJbmZvOmZ1bmN0aW9uKCl7dmFyIGU9d2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQsbz17bmFtZTpcIm90aGVyXCIsdmVyc2lvbjpcIjEuMFwiLHZlcnNpb25OdW1iZXI6MSxpc0Nocm9tZTp0aGlzLmlzQ2hyb21lT3JDaHJvbWl1bSgpLGlzTW9iaWxlOiEhZS5tYXRjaChcL0FuZHJvaWR8QmxhY2tCZXJyeXxpUGhvbmV8aVBhZHxpUG9kfE9wZXJhIE1pbml8SUVNb2JpbGV8V2ViT1N8V2luZG93cyBQaG9uZVwvaSl9O2Zvcih2YXIgdCBpbiB0aGlzLmJyb3dzZXJEZWZpbml0aW9ucyl7dmFyIGk9dGhpcy5icm93c2VyRGVmaW5pdGlvbnNbdF07aWYoaVsxXS50ZXN0KGUpKXt2YXIgbj1pWzFdLmV4ZWMoZSkscj1uJiZuWzFdLnNwbGl0KFwvWy5fXVwvKS5zbGljZSgwLDMpLGE9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwociwxKS5qb2luKFwiXCIpfHxcIjBcIjtyJiZyLmxlbmd0aDwzJiZBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseShyLDE9PT1yLmxlbmd0aD9bMCwwXTpbMF0pLG8ubmFtZT1pWzBdLG8udmVyc2lvbj1yLmpvaW4oXCIuXCIpLG8udmVyc2lvbk51bWJlcj1wYXJzZUZsb2F0KHJbMF0rXCIuXCIrYSk7YnJlYWt9fXJldHVybiBvfX0sbWV0aG9kczp7ZGVmYXVsdDpmdW5jdGlvbihlKXtpZighcG9wTWFnaWMuc2hvdWxkU2hvdygpfHwhcG9wTWFnaWMudmVub3JTaG91bGRTaG93KCl8fCFwb3BNYWdpYy5pc1ZhbGlkVXNlckV2ZW50KGUpKXJldHVybiEwO3ZhciBvPWUudGFyZ2V0fHxlLnNyY0VsZW1lbnQsdD1wb3BNYWdpYy5maW5kTGlua1RvT3BlbihvKTtyZXR1cm4gd2luZG93Lm9wZW4odCxcIl9ibGFua1wiKSxwb3BNYWdpYy5zZXRBc09wZW5lZChlKSxwb3BNYWdpYy5leGVjdXRlT25SZWRpcmVjdCgpLHBvcE1hZ2ljLnRvcC5kb2N1bWVudC5sb2NhdGlvbj1wb3BNYWdpYy51cmwsdm9pZCAwIT09ZS5wcmV2ZW50RGVmYXVsdCYmKGUucHJldmVudERlZmF1bHQoKSxlLnN0b3BQcm9wYWdhdGlvbigpKSwhMH0sY2hyb21lVGFiOmZ1bmN0aW9uKGUpe2lmKCFwb3BNYWdpYy5zaG91bGRTaG93KCl8fCFwb3BNYWdpYy52ZW5vclNob3VsZFNob3coKXx8IXBvcE1hZ2ljLmlzVmFsaWRVc2VyRXZlbnQoZSkpcmV0dXJuITA7aWYodm9pZCAwPT09ZS5wcmV2ZW50RGVmYXVsdClyZXR1cm4hMDtlLnByZXZlbnREZWZhdWx0KCksZS5zdG9wUHJvcGFnYXRpb24oKTt2YXIgbz10b3Aud2luZG93LmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJhXCIpLHQ9ZS50YXJnZXR8fGUuc3JjRWxlbWVudDtvLmhyZWY9cG9wTWFnaWMuZmluZExpbmtUb09wZW4odCksZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJib2R5XCIpWzBdLmFwcGVuZENoaWxkKG8pO3ZhciBpPW5ldyBNb3VzZUV2ZW50KFwiY2xpY2tcIix7YnViYmxlczohMCxjYW5jZWxhYmxlOiEwLHZpZXc6d2luZG93LHNjcmVlblg6MCxzY3JlZW5ZOjAsY2xpZW50WDowLGNsaWVudFk6MCxjdHJsS2V5OiEwLGFsdEtleTohMSxzaGlmdEtleTohMSxtZXRhS2V5OiEwLGJ1dHRvbjowfSk7aS5wcmV2ZW50RGVmYXVsdD12b2lkIDAsby5kaXNwYXRjaEV2ZW50KGkpLG8ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChvKSxwb3BNYWdpYy5leGVjdXRlT25SZWRpcmVjdCgpLHdpbmRvdy5vcGVuKHBvcE1hZ2ljLnVybCxcIl9zZWxmXCIpLHBvcE1hZ2ljLnNldEFzT3BlbmVkKGUpfSxwb3B1cDpmdW5jdGlvbihlKXtpZighcG9wTWFnaWMuc2hvdWxkU2hvdygpfHwhcG9wTWFnaWMudmVub3JTaG91bGRTaG93KCl8fCFwb3BNYWdpYy5pc1ZhbGlkVXNlckV2ZW50KGUpKXJldHVybiEwO3ZhciBvPVwiXCI7aWYocG9wTWFnaWMuY29uZmlnLnBvcHVwX2ZhbGxiYWNrJiYhcG9wTWFnaWMuY29uZmlnLnBvcHVwX2ZvcmNlKXt2YXIgdD1NYXRoLm1heChNYXRoLnJvdW5kKC44KndpbmRvdy5pbm5lckhlaWdodCksMzAwKTtvPVwibWVudWJhcj0xLHJlc2l6YWJsZT0xLHdpZHRoPVwiK01hdGgubWF4KE1hdGgucm91bmQoLjcqd2luZG93LmlubmVyV2lkdGgpLDMwMCkrXCIsaGVpZ2h0PVwiK3QrXCIsdG9wPVwiKyh3aW5kb3cuc2NyZWVuWSsxMDApK1wiLGxlZnQ9XCIrKHdpbmRvdy5zY3JlZW5YKzEwMCl9dmFyIGk9ZG9jdW1lbnQubG9jYXRpb24uaHJlZixuPXdpbmRvdy5vcGVuKGkscG9wTWFnaWMuZ2V0UHVJZCgpLG8pO3BvcE1hZ2ljLnNldEFzT3BlbmVkKGUpLHNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7bi5sb2NhdGlvbi5ocmVmPXBvcE1hZ2ljLnVybCxwb3BNYWdpYy5leGVjdXRlT25SZWRpcmVjdCgpfSksMjAwKSx2b2lkIDAhPT1lLnByZXZlbnREZWZhdWx0JiYoZS5wcmV2ZW50RGVmYXVsdCgpLGUuc3RvcFByb3BhZ2F0aW9uKCkpfX19OyAgICBwb3BNYWdpYy5pbml0KGFkQ29uZmlnKTtcclxufSkoKTtcclxuXHJcblxyXG48XC9zY3JpcHQ+In1d