3NCUbh7cABzRyEMEXAcGCAozSuxvUTf75ms · data · bootstrap.bundle.min.js_1
{
    "bootstrap.bundle.min.js_1": "base64:KDEwKSl7ZT10LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3ZhciBuPU10KHQsInRvcCIpLGk9TXQodCwibGVmdCIpO2UudG9wKz1uLGUubGVmdCs9aSxlLmJvdHRvbSs9bixlLnJpZ2h0Kz1pfWVsc2UgZT10LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpfWNhdGNoKHQpe312YXIgbz17bGVmdDplLmxlZnQsdG9wOmUudG9wLHdpZHRoOmUucmlnaHQtZS5sZWZ0LGhlaWdodDplLmJvdHRvbS1lLnRvcH0scj0iSFRNTCI9PT10Lm5vZGVOYW1lP0J0KHQub3duZXJEb2N1bWVudCk6e30scz1yLndpZHRofHx0LmNsaWVudFdpZHRofHxvLnJpZ2h0LW8ubGVmdCxhPXIuaGVpZ2h0fHx0LmNsaWVudEhlaWdodHx8by5ib3R0b20tby50b3AsbD10Lm9mZnNldFdpZHRoLXMsYz10Lm9mZnNldEhlaWdodC1hO2lmKGx8fGMpe3ZhciBoPU50KHQpO2wtPVd0KGgsIngiKSxjLT1XdChoLCJ5Iiksby53aWR0aC09bCxvLmhlaWdodC09Y31yZXR1cm4gVnQobyl9ZnVuY3Rpb24genQodCxlKXt2YXIgbj0yPGFyZ3VtZW50cy5sZW5ndGgmJnZvaWQgMCE9PWFyZ3VtZW50c1syXSYmYXJndW1lbnRzWzJdLGk9SHQoMTApLG89IkhUTUwiPT09ZS5ub2RlTmFtZSxyPVl0KHQpLHM9WXQoZSksYT1MdCh0KSxsPU50KGUpLGM9cGFyc2VGbG9hdChsLmJvcmRlclRvcFdpZHRoLDEwKSxoPXBhcnNlRmxvYXQobC5ib3JkZXJMZWZ0V2lkdGgsMTApO24mJm8mJihzLnRvcD1NYXRoLm1heChzLnRvcCwwKSxzLmxlZnQ9TWF0aC5tYXgocy5sZWZ0LDApKTt2YXIgdT1WdCh7dG9wOnIudG9wLXMudG9wLWMsbGVmdDpyLmxlZnQtcy5sZWZ0LWgsd2lkdGg6ci53aWR0aCxoZWlnaHQ6ci5oZWlnaHR9KTtpZih1Lm1hcmdpblRvcD0wLHUubWFyZ2luTGVmdD0wLCFpJiZvKXt2YXIgZj1wYXJzZUZsb2F0KGwubWFyZ2luVG9wLDEwKSxkPXBhcnNlRmxvYXQobC5tYXJnaW5MZWZ0LDEwKTt1LnRvcC09Yy1mLHUuYm90dG9tLT1jLWYsdS5sZWZ0LT1oLWQsdS5yaWdodC09aC1kLHUubWFyZ2luVG9wPWYsdS5tYXJnaW5MZWZ0PWR9cmV0dXJuKGkmJiFuP2UuY29udGFpbnMoYSk6ZT09PWEmJiJCT0RZIiE9PWEubm9kZU5hbWUpJiYodT1mdW5jdGlvbih0LGUpe3ZhciBuPTI8YXJndW1lbnRzLmxlbmd0aCYmdm9pZCAwIT09YXJndW1lbnRzWzJdJiZhcmd1bWVudHNbMl0saT1NdChlLCJ0b3AiKSxvPU10KGUsImxlZnQiKSxyPW4/LTE6MTtyZXR1cm4gdC50b3ArPWkqcix0LmJvdHRvbSs9aSpyLHQubGVmdCs9bypyLHQucmlnaHQrPW8qcix0fSh1LGUpKSx1fWZ1bmN0aW9uIFh0KHQpe2lmKCF0fHwhdC5wYXJlbnRFbGVtZW50fHxIdCgpKXJldHVybiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7Zm9yKHZhciBlPXQucGFyZW50RWxlbWVudDtlJiYibm9uZSI9PT1OdChlLCJ0cmFuc2Zvcm0iKTspZT1lLnBhcmVudEVsZW1lbnQ7cmV0dXJuIGV8fGRvY3VtZW50LmRvY3VtZW50RWxlbWVudH1mdW5jdGlvbiBHdCh0LGUsbixpKXt2YXIgbz00PGFyZ3VtZW50cy5sZW5ndGgmJnZvaWQgMCE9PWFyZ3VtZW50c1s0XSYmYXJndW1lbnRzWzRdLHI9e3RvcDowLGxlZnQ6MH0scz1vP1h0KHQpOkZ0KHQsZSk7aWYoInZpZXdwb3J0Ij09PWkpcj1mdW5jdGlvbih0KXt2YXIgZT0xPGFyZ3VtZW50cy5sZW5ndGgmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSYmYXJndW1lbnRzWzFdLG49dC5vd25lckRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxpPXp0KHQsbiksbz1NYXRoLm1heChuLmNsaWVudFdpZHRoLHdpbmRvdy5pbm5lcldpZHRofHwwKSxyPU1hdGgubWF4KG4uY2xpZW50SGVpZ2h0LHdpbmRvdy5pbm5lckhlaWdodHx8MCkscz1lPzA6TXQobiksYT1lPzA6TXQobiwibGVmdCIpO3JldHVybiBWdCh7dG9wOnMtaS50b3AraS5tYXJnaW5Ub3AsbGVmdDphLWkubGVmdCtpLm1hcmdpbkxlZnQsd2lkdGg6byxoZWlnaHQ6cn0pfShzLG8pO2Vsc2V7dmFyIGE9dm9pZCAwOyJzY3JvbGxQYXJlbnQiPT09aT8iQk9EWSI9PT0oYT1MdChrdChlKSkpLm5vZGVOYW1lJiYoYT10Lm93bmVyRG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KTphPSJ3aW5kb3ciPT09aT90Lm93bmVyRG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50Omk7dmFyIGw9enQoYSxzLG8pO2lmKCJIVE1MIiE9PWEubm9kZU5hbWV8fGZ1bmN0aW9uIHQoZSl7dmFyIG49ZS5ub2RlTmFtZTtpZigiQk9EWSI9PT1ufHwiSFRNTCI9PT1uKXJldHVybiExO2lmKCJmaXhlZCI9PT1OdChlLCJwb3NpdGlvbiIpKXJldHVybiEwO3ZhciBpPWt0KGUpO3JldHVybiEhaSYmdChpKX0ocykpcj1sO2Vsc2V7dmFyIGM9QnQodC5vd25lckRvY3VtZW50KSxoPWMuaGVpZ2h0LHU9Yy53aWR0aDtyLnRvcCs9bC50b3AtbC5tYXJnaW5Ub3Asci5ib3R0b209aCtsLnRvcCxyLmxlZnQrPWwubGVmdC1sLm1hcmdpbkxlZnQsci5yaWdodD11K2wubGVmdH19dmFyIGY9Im51bWJlciI9PXR5cGVvZihuPW58fDApO3JldHVybiByLmxlZnQrPWY/bjpuLmxlZnR8fDAsci50b3ArPWY/bjpuLnRvcHx8MCxyLnJpZ2h0LT1mP246bi5yaWdodHx8MCxyLmJvdHRvbS09Zj9uOm4uYm90dG9tfHwwLHJ9ZnVuY3Rpb24gJHQodCxlLGksbixvKXt2YXIgcj01PGFyZ3VtZW50cy5sZW5ndGgmJnZvaWQgMCE9PWFyZ3VtZW50c1s1XT9hcmd1bWVudHNbNV06MDtpZigtMT09PXQuaW5kZXhPZigiYXV0byIpKXJldHVybiB0O3ZhciBzPUd0KGksbixyLG8pLGE9e3RvcDp7d2lkdGg6cy53aWR0aCxoZWlnaHQ6ZS50b3Atcy50b3B9LHJpZ2h0Ont3aWR0aDpzLnJpZ2h0LWUucmlnaHQsaGVpZ2h0OnMuaGVpZ2h0fSxib3R0b206e3dpZHRoOnMud2lkdGgsaGVpZ2h0OnMuYm90dG9tLWUuYm90dG9tfSxsZWZ0Ont3aWR0aDplLmxlZnQtcy5sZWZ0LGhlaWdodDpzLmhlaWdodH19LGw9T2JqZWN0LmtleXMoYSkubWFwKGZ1bmN0aW9uKHQpe3JldHVybiBRdCh7a2V5OnR9LGFbdF0se2FyZWE6KGU9YVt0XSxlLndpZHRoKmUuaGVpZ2h0KX0pO3ZhciBlfSkuc29ydChmdW5jdGlvbih0LGUpe3JldHVybiBlLmFyZWEtdC5hcmVhfSksYz1sLmZpbHRlcihmdW5jdGlvbih0KXt2YXIgZT10LndpZHRoLG49dC5oZWlnaHQ7cmV0dXJuIGU+PWkuY2xpZW50V2lkdGgmJm4+PWkuY2xpZW50SGVpZ2h0fSksaD0wPGMubGVuZ3RoP2NbMF0ua2V5OmxbMF0ua2V5LHU9dC5zcGxpdCgiLSIpWzFdO3JldHVybiBoKyh1PyItIit1OiIiKX1mdW5jdGlvbiBKdCh0LGUsbil7dmFyIGk9Mzxhcmd1bWVudHMubGVuZ3RoJiZ2b2lkIDAhPT1hcmd1bWVudHNbM10/YXJndW1lbnRzWzNdOm51bGw7cmV0dXJuIHp0KG4saT9YdChlKTpGdChlLG4pLGkpfWZ1bmN0aW9uIFp0KHQpe3ZhciBlPXQub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHQpLG49cGFyc2VGbG9hdChlLm1hcmdpblRvcHx8MCkrcGFyc2VGbG9hdChlLm1hcmdpbkJvdHRvbXx8MCksaT1wYXJzZUZsb2F0KGUubWFyZ2luTGVmdHx8MCkrcGFyc2VGbG9hdChlLm1hcmdpblJpZ2h0fHwwKTtyZXR1cm57d2lkdGg6dC5vZmZzZXRXaWR0aCtpLGhlaWdodDp0Lm9mZnNldEhlaWdodCtufX1mdW5jdGlvbiB0ZSh0KXt2YXIgZT17bGVmdDoicmlnaHQiLHJpZ2h0OiJsZWZ0Iixib3R0b206InRvcCIsdG9wOiJib3R0b20ifTtyZXR1cm4gdC5yZXBsYWNlKC9sZWZ0fHJpZ2h0fGJvdHRvbXx0b3AvZyxmdW5jdGlvbih0KXtyZXR1cm4gZVt0XX0pfWZ1bmN0aW9uIGVlKHQsZSxuKXtuPW4uc3BsaXQoIi0iKVswXTt2YXIgaT1adCh0KSxvPXt3aWR0aDppLndpZHRoLGhlaWdodDppLmhlaWdodH0scj0tMSE9PVsicmlnaHQiLCJsZWZ0Il0uaW5kZXhPZihuKSxzPXI/InRvcCI6ImxlZnQiLGE9cj8ibGVmdCI6InRvcCIsbD1yPyJoZWlnaHQiOiJ3aWR0aCIsYz1yPyJ3aWR0aCI6ImhlaWdodCI7cmV0dXJuIG9bc109ZVtzXStlW2xdLzItaVtsXS8yLG9bYV09bj09PWE/ZVthXS1pW2NdOmVbdGUoYSldLG99ZnVuY3Rpb24gbmUodCxlKXtyZXR1cm4gQXJyYXkucHJvdG90eXBlLmZpbmQ/dC5maW5kKGUpOnQuZmlsdGVyKGUpWzBdfWZ1bmN0aW9uIGllKHQsbixlKXtyZXR1cm4odm9pZCAwPT09ZT90OnQuc2xpY2UoMCxmdW5jdGlvbih0LGUsbil7aWYoQXJyYXkucHJvdG90eXBlLmZpbmRJbmRleClyZXR1cm4gdC5maW5kSW5kZXgoZnVuY3Rpb24odCl7cmV0dXJuIHRbZV09PT1ufSk7dmFyIGk9bmUodCxmdW5jdGlvbih0KXtyZXR1cm4gdFtlXT09PW59KTtyZXR1cm4gdC5pbmRleE9mKGkpfSh0LCJuYW1lIixlKSkpLmZvckVhY2goZnVuY3Rpb24odCl7dC5mdW5jdGlvbiYmY29uc29sZS53YXJuKCJgbW9kaWZpZXIuZnVuY3Rpb25gIGlzIGRlcHJlY2F0ZWQsIHVzZSBgbW9kaWZpZXIuZm5gISIpO3ZhciBlPXQuZnVuY3Rpb258fHQuZm47dC5lbmFibGVkJiZPdChlKSYmKG4ub2Zmc2V0cy5wb3BwZXI9VnQobi5vZmZzZXRzLnBvcHBlciksbi5vZmZzZXRzLnJlZmVyZW5jZT1WdChuLm9mZnNldHMucmVmZXJlbmNlKSxuPWUobix0KSl9KSxufWZ1bmN0aW9uIG9lKHQsbil7cmV0dXJuIHQuc29tZShmdW5jdGlvbih0KXt2YXIgZT10Lm5hbWU7cmV0dXJuIHQuZW5hYmxlZCYmZT09PW59KX1mdW5jdGlvbiByZSh0KXtmb3IodmFyIGU9WyExLCJtcyIsIldlYmtpdCIsIk1veiIsIk8iXSxuPXQuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrdC5zbGljZSgxKSxpPTA7aTxlLmxlbmd0aDtpKyspe3ZhciBvPWVbaV0scj1vPyIiK28rbjp0O2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgZG9jdW1lbnQuYm9keS5zdHlsZVtyXSlyZXR1cm4gcn1yZXR1cm4gbnVsbH1mdW5jdGlvbiBzZSh0KXt2YXIgZT10Lm93bmVyRG9jdW1lbnQ7cmV0dXJuIGU/ZS5kZWZhdWx0Vmlldzp3aW5kb3d9ZnVuY3Rpb24gYWUodCxlLG4saSl7bi51cGRhdGVCb3VuZD1pLHNlKHQpLmFkZEV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsbi51cGRhdGVCb3VuZCx7cGFzc2l2ZTohMH0pO3ZhciBvPUx0KHQpO3JldHVybiBmdW5jdGlvbiB0KGUsbixpLG8pe3ZhciByPSJCT0RZIj09PWUubm9kZU5hbWUscz1yP2Uub3duZXJEb2N1bWVudC5kZWZhdWx0VmlldzplO3MuYWRkRXZlbnRMaXN0ZW5lcihuLGkse3Bhc3NpdmU6ITB9KSxyfHx0KEx0KHMucGFyZW50Tm9kZSksbixpLG8pLG8ucHVzaChzKX0obywic2Nyb2xsIixuLnVwZGF0ZUJvdW5kLG4uc2Nyb2xsUGFyZW50cyksbi5zY3JvbGxFbGVtZW50PW8sbi5ldmVudHNFbmFibGVkPSEwLG59ZnVuY3Rpb24gbGUoKXt2YXIgdCxlO3RoaXMuc3RhdGUuZXZlbnRzRW5hYmxlZCYmKGNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMuc2NoZWR1bGVVcGRhdGUpLHRoaXMuc3RhdGU9KHQ9dGhpcy5yZWZlcmVuY2UsZT10aGlzLnN0YXRlLHNlKHQpLnJlbW92ZUV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsZS51cGRhdGVCb3VuZCksZS5zY3JvbGxQYXJlbnRzLmZvckVhY2goZnVuY3Rpb24odCl7dC5yZW1vdmVFdmVudExpc3RlbmVyKCJzY3JvbGwiLGUudXBkYXRlQm91bmQpfSksZS51cGRhdGVCb3VuZD1udWxsLGUuc2Nyb2xsUGFyZW50cz1bXSxlLnNjcm9sbEVsZW1lbnQ9bnVsbCxlLmV2ZW50c0VuYWJsZWQ9ITEsZSkpfWZ1bmN0aW9uIGNlKHQpe3JldHVybiIiIT09dCYmIWlzTmFOKHBhcnNlRmxvYXQodCkpJiZpc0Zpbml0ZSh0KX1mdW5jdGlvbiBoZShuLGkpe09iamVjdC5rZXlzKGkpLmZvckVhY2goZnVuY3Rpb24odCl7dmFyIGU9IiI7LTEhPT1bIndpZHRoIiwiaGVpZ2h0IiwidG9wIiwicmlnaHQiLCJib3R0b20iLCJsZWZ0Il0uaW5kZXhPZih0KSYmY2UoaVt0XSkmJihlPSJweCIpLG4uc3R5bGVbdF09aVt0XStlfSl9dmFyIHVlPVR0JiYvRmlyZWZveC9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7ZnVuY3Rpb24gZmUodCxlLG4pe3ZhciBpPW5lKHQsZnVuY3Rpb24odCl7cmV0dXJuIHQubmFtZT09PWV9KSxvPSEhaSYmdC5zb21lKGZ1bmN0aW9uKHQpe3JldHVybiB0Lm5hbWU9PT1uJiZ0LmVuYWJsZWQmJnQub3JkZXI8aS5vcmRlcn0pO2lmKCFvKXt2YXIgcj0iYCIrZSsiYCIscz0iYCIrbisiYCI7Y29uc29sZS53YXJuKHMrIiBtb2RpZmllciBpcyByZXF1aXJlZCBieSAiK3IrIiBtb2RpZmllciBpbiBvcmRlciB0byB3b3JrLCBiZSBzdXJlIHRvIGluY2x1ZGUgaXQgYmVmb3JlICIrcisiISIpfXJldHVybiBvfXZhciBkZT1bImF1dG8tc3RhcnQiLCJhdXRvIiwiYXV0by1lbmQiLCJ0b3Atc3RhcnQiLCJ0b3AiLCJ0b3AtZW5kIiwicmlnaHQtc3RhcnQiLCJyaWdodCIsInJpZ2h0LWVuZCIsImJvdHRvbS1lbmQiLCJib3R0b20iLCJib3R0b20tc3RhcnQiLCJsZWZ0LWVuZCIsImxlZnQiLCJsZWZ0LXN0YXJ0Il0scGU9ZGUuc2xpY2UoMyk7ZnVuY3Rpb24gbWUodCl7dmFyIGU9MTxhcmd1bWVudHMubGVuZ3RoJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0mJmFyZ3VtZW50c1sxXSxuPXBlLmluZGV4T2YodCksaT1wZS5zbGljZShuKzEpLmNvbmNhdChwZS5zbGljZSgwLG4pKTtyZXR1cm4gZT9pLnJldmVyc2UoKTppfXZhciBnZT0iZmxpcCIsX2U9ImNsb2Nrd2lzZSIsdmU9ImNvdW50ZXJjbG9ja3dpc2UiO2Z1bmN0aW9uIHllKHQsbyxyLGUpe3ZhciBzPVswLDBdLGE9LTEhPT1bInJpZ2h0IiwibGVmdCJdLmluZGV4T2YoZSksbj10LnNwbGl0KC8oXCt8XC0pLykubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0LnRyaW0oKX0pLGk9bi5pbmRleE9mKG5lKG4sZnVuY3Rpb24odCl7cmV0dXJuLTEhPT10LnNlYXJjaCgvLHxccy8pfSkpO25baV0mJi0xPT09bltpXS5pbmRleE9mKCIsIikmJmNvbnNvbGUud2FybigiT2Zmc2V0cyBzZXBhcmF0ZWQgYnkgd2hpdGUgc3BhY2UocykgYXJlIGRlcHJlY2F0ZWQsIHVzZSBhIGNvbW1hICgsKSBpbnN0ZWFkLiIpO3ZhciBsPS9ccyosXHMqfFxzKy8sYz0tMSE9PWk/W24uc2xpY2UoMCxpKS5jb25jYXQoW25baV0uc3BsaXQobClbMF1dKSxbbltpXS5zcGxpdChsKVsxXV0uY29uY2F0KG4uc2xpY2UoaSsxKSldOltuXTtyZXR1cm4oYz1jLm1hcChmdW5jdGlvbih0LGUpe3ZhciBuPSgxPT09ZT8hYTphKT8iaGVpZ2h0Ijoid2lkdGgiLGk9ITE7cmV0dXJuIHQucmVkdWNlKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIiI9PT10W3QubGVuZ3RoLTFdJiYtMSE9PVsiKyIsIi0iXS5pbmRleE9mKGUpPyh0W3QubGVuZ3RoLTFdPWUsaT0hMCx0KTppPyh0W3QubGVuZ3RoLTFdKz1lLGk9ITEsdCk6dC5jb25jYXQoZSl9LFtdKS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKHQsZSxuLGkpe3ZhciBvPXQubWF0Y2goLygoPzpcLXxcKyk/XGQqXC4/XGQqKSguKikvKSxyPStvWzFdLHM9b1syXTtpZighcilyZXR1cm4gdDtpZigwIT09cy5pbmRleE9mKCIlIikpcmV0dXJuInZoIiE9PXMmJiJ2dyIhPT1zP3I6KCJ2aCI9PT1zP01hdGgubWF4KGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQsd2luZG93LmlubmVySGVpZ2h0fHwwKTpNYXRoLm1heChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGgsd2luZG93LmlubmVyV2lkdGh8fDApKS8xMDAqcjt2YXIgYT12b2lkIDA7c3dpdGNoKHMpe2Nhc2UiJXAiOmE9bjticmVhaztjYXNlIiUiOmNhc2UiJXIiOmRlZmF1bHQ6YT1pfXJldHVybiBWdChhKVtlXS8xMDAqcn0odCxuLG8scil9KX0pKS5mb3JFYWNoKGZ1bmN0aW9uKG4saSl7bi5mb3JFYWNoKGZ1bmN0aW9uKHQsZSl7Y2UodCkmJihzW2ldKz10KigiLSI9PT1uW2UtMV0/LTE6MSkpfSl9KSxzfXZhciBFZT17cGxhY2VtZW50OiJib3R0b20iLHBvc2l0aW9uRml4ZWQ6ITEsZXZlbnRzRW5hYmxlZDohMCxyZW1vdmVPbkRlc3Ryb3k6ITEsb25DcmVhdGU6ZnVuY3Rpb24oKXt9LG9uVXBkYXRlOmZ1bmN0aW9uKCl7fSxtb2RpZmllcnM6e3NoaWZ0OntvcmRlcjoxMDAsZW5hYmxlZDohMCxmbjpmdW5jdGlvbih0KXt2YXIgZT10LnBsYWNlbWVudCxuPWUuc3BsaXQoIi0iKVswXSxpPWUuc3BsaXQoIi0iKVsxXTtpZihpKXt2YXIgbz10Lm9mZnNldHMscj1vLnJlZmVyZW5jZSxzPW8ucG9wcGVyLGE9LTEhPT1bImJvdHRvbSIsInRvcCJdLmluZGV4T2YobiksbD1hPyJsZWZ0IjoidG9wIixjPWE/IndpZHRoIjoiaGVpZ2h0IixoPXtzdGFydDpLdCh7fSxsLHJbbF0pLGVuZDpLdCh7fSxsLHJbbF0rcltjXS1zW2NdKX07dC5vZmZzZXRzLnBvcHBlcj1RdCh7fSxzLGhbaV0pfXJldHVybiB0fX0sb2Zmc2V0OntvcmRlcjoyMDAsZW5hYmxlZDohMCxmbjpmdW5jdGlvbih0LGUpe3ZhciBuPWUub2Zmc2V0LGk9dC5wbGFjZW1lbnQsbz10Lm9mZnNldHMscj1vLnBvcHBlcixzPW8ucmVmZXJlbmNlLGE9aS5zcGxpdCgiLSIpWzBdLGw9dm9pZCAwO3JldHVybiBsPWNlKCtuKT9bK24sMF06eWUobixyLHMsYSksImxlZnQiPT09YT8oci50b3ArPWxbMF0sci5sZWZ0LT1sWzFdKToicmlnaHQiPT09YT8oci50b3ArPWxbMF0sci5sZWZ0Kz1sWzFdKToidG9wIj09PWE/KHIubGVmdCs9bFswXSxyLnRvcC09bFsxXSk6ImJvdHRvbSI9PT1hJiYoci5sZWZ0Kz1sWzBdLHIudG9wKz1sWzFdKSx0LnBvcHBlcj1yLHR9LG9mZnNldDowfSxwcmV2ZW50T3ZlcmZsb3c6e29yZGVyOjMwMCxlbmFibGVkOiEwLGZuOmZ1bmN0aW9uKHQsaSl7dmFyIGU9aS5ib3VuZGFyaWVzRWxlbWVudHx8anQodC5pbnN0YW5jZS5wb3BwZXIpO3QuaW5zdGFuY2UucmVmZXJlbmNlPT09ZSYmKGU9anQoZSkpO3ZhciBuPXJlKCJ0cmFuc2Zvcm0iKSxvPXQuaW5zdGFuY2UucG9wcGVyLnN0eWxlLHI9by50b3Ascz1vLmxlZnQsYT1vW25dO28udG9wPSIiLG8ubGVmdD0iIixvW25dPSIiO3ZhciBsPUd0KHQuaW5zdGFuY2UucG9wcGVyLHQuaW5zdGFuY2UucmVmZXJlbmNlLGkucGFkZGluZyxlLHQucG9zaXRpb25GaXhlZCk7by50b3A9cixvLmxlZnQ9cyxvW25dPWEsaS5ib3VuZGFyaWVzPWw7dmFyIGM9aS5wcmlvcml0eSxoPXQub2Zmc2V0cy5wb3BwZXIsdT17cHJpbWFyeTpmdW5jdGlvbih0KXt2YXIgZT1oW3RdO3JldHVybiBoW3RdPGxbdF0mJiFpLmVzY2FwZVdpdGhSZWZlcmVuY2UmJihlPU1hdGgubWF4KGhbdF0sbFt0XSkpLEt0KHt9LHQsZSl9LHNlY29uZGFyeTpmdW5jdGlvbih0KXt2YXIgZT0icmlnaHQiPT09dD8ibGVmdCI6InRvcCIsbj1oW2VdO3JldHVybiBoW3RdPmxbdF0mJiFpLmVzY2FwZVdpdGhSZWZlcmVuY2UmJihuPU1hdGgubWluKGhbZV0sbFt0XS0oInJpZ2h0Ij09PXQ/aC53aWR0aDpoLmhlaWdodCkpKSxLdCh7fSxlLG4pfX07cmV0dXJuIGMuZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgZT0tMSE9PVsibGVmdCIsInRvcCJdLmluZGV4T2YodCk/InByaW1hcnkiOiJzZWNvbmRhcnkiO2g9UXQoe30saCx1W2VdKHQpKX0pLHQub2Zmc2V0cy5wb3BwZXI9aCx0fSxwcmlvcml0eTpbImxlZnQiLCJyaWdodCIsInRvcCIsImJvdHRvbSJdLHBhZGRpbmc6NSxib3VuZGFyaWVzRWxlbWVudDoic2Nyb2xsUGFyZW50In0sa2VlcFRvZ2V0aGVyOntvcmRlcjo0MDAsZW5hYmxlZDohMCxmbjpmdW5jdGlvbih0KXt2YXIgZT10Lm9mZnNldHMsbj1lLnBvcHBlcixpPWUucmVmZXJlbmNlLG89dC5wbGFjZW1lbnQuc3BsaXQoIi0iKVswXSxyPU1hdGguZmxvb3Iscz0tMSE9PVsidG9wIiwiYm90dG9tIl0uaW5kZXhPZihvKSxhPXM/InJpZ2h0IjoiYm90dG9tIixsPXM/ImxlZnQiOiJ0b3AiLGM9cz8id2lkdGgiOiJoZWlnaHQiO3JldHVybiBuW2FdPHIoaVtsXSkmJih0Lm9mZnNldHMucG9wcGVyW2xdPXIoaVtsXSktbltjXSksbltsXT5yKGlbYV0pJiYodC5vZmZzZXRzLnBvcHBlcltsXT1yKGlbYV0pKSx0fX0sYXJyb3c6e29yZGVyOjUwMCxlbmFibGVkOiEwLGZuOmZ1bmN0aW9uKHQsZSl7dmFyIG47aWYoIWZlKHQuaW5zdGFuY2UubW9kaWZpZXJzLCJhcnJvdyIsImtlZXBUb2dldGhlciIpKXJldHVybiB0O3ZhciBpPWUuZWxlbWVudDtpZigic3RyaW5nIj09dHlwZW9mIGkpe2lmKCEoaT10Lmluc3RhbmNlLnBvcHBlci5xdWVyeVNlbGVjdG9yKGkpKSlyZXR1cm4gdH1lbHNlIGlmKCF0Lmluc3RhbmNlLnBvcHBlci5jb250YWlucyhpKSlyZXR1cm4gY29uc29sZS53YXJuKCJXQVJOSU5HOiBgYXJyb3cuZWxlbWVudGAgbXVzdCBiZSBjaGlsZCBvZiBpdHMgcG9wcGVyIGVsZW1lbnQhIiksdDt2YXIgbz10LnBsYWNlbWVudC5zcGxpdCgiLSIpWzBdLHI9dC5vZmZzZXRzLHM9ci5wb3BwZXIsYT1yLnJlZmVyZW5jZSxsPS0xIT09WyJsZWZ0IiwicmlnaHQiXS5pbmRleE9mKG8pLGM9bD8iaGVpZ2h0Ijoid2lkdGgiLGg9bD8iVG9wIjoiTGVmdCIsdT1oLnRvTG93ZXJDYXNlKCksZj1sPyJsZWZ0IjoidG9wIixkPWw/ImJvdHRvbSI6InJpZ2h0IixwPVp0KGkpW2NdO2FbZF0tcDxzW3VdJiYodC5vZmZzZXRzLnBvcHBlclt1XS09c1t1XS0oYVtkXS1wKSksYVt1XStwPnNbZF0mJih0Lm9mZnNldHMucG9wcGVyW3VdKz1hW3VdK3Atc1tkXSksdC5vZmZzZXRzLnBvcHBlcj1WdCh0Lm9mZnNldHMucG9wcGVyKTt2YXIgbT1hW3VdK2FbY10vMi1wLzIsZz1OdCh0Lmluc3RhbmNlLnBvcHBlciksXz1wYXJzZUZsb2F0KGdbIm1hcmdpbiIraF0sMTApLHY9cGFyc2VGbG9hdChnWyJib3JkZXIiK2grIldpZHRoIl0sMTApLHk9bS10Lm9mZnNldHMucG9wcGVyW3VdLV8tdjtyZXR1cm4geT1NYXRoLm1heChNYXRoLm1pbihzW2NdLXAseSksMCksdC5hcnJvd0VsZW1lbnQ9aSx0Lm9mZnNldHMuYXJyb3c9KEt0KG49e30sdSxNYXRoLnJvdW5kKHkpKSxLdChuLGYsIiIpLG4pLHR9LGVsZW1lbnQ6Ilt4LWFycm93XSJ9LGZsaXA6e29yZGVyOjYwMCxlbmFibGVkOiEwLGZuOmZ1bmN0aW9uKHAsbSl7aWYob2UocC5pbnN0YW5jZS5tb2RpZmllcnMsImlubmVyIikpcmV0dXJuIHA7aWYocC5mbGlwcGVkJiZwLnBsYWNlbWVudD09PXAub3JpZ2luYWxQbGFjZW1lbnQpcmV0dXJuIHA7dmFyIGc9R3QocC5pbnN0YW5jZS5wb3BwZXIscC5pbnN0YW5jZS5yZWZlcmVuY2UsbS5wYWRkaW5nLG0uYm91bmRhcmllc0VsZW1lbnQscC5wb3NpdGlvbkZpeGVkKSxfPXAucGxhY2VtZW50LnNwbGl0KCItIilbMF0sdj10ZShfKSx5PXAucGxhY2VtZW50LnNwbGl0KCItIilbMV18fCIiLEU9W107c3dpdGNoKG0uYmVoYXZpb3Ipe2Nhc2UgZ2U6RT1bXyx2XTticmVhaztjYXNlIF9lOkU9bWUoXyk7YnJlYWs7Y2FzZSB2ZTpFPW1lKF8sITApO2JyZWFrO2RlZmF1bHQ6RT1tLmJlaGF2aW9yfXJldHVybiBFLmZvckVhY2goZnVuY3Rpb24odCxlKXtpZihfIT09dHx8RS5sZW5ndGg9PT1lKzEpcmV0dXJuIHA7Xz1wLnBsYWNlbWVudC5zcGxpdCgiLSIpWzBdLHY9dGUoXyk7dmFyIG4saT1wLm9mZnNldHMucG9wcGVyLG89cC5vZmZzZXRzLnJlZmVyZW5jZSxyPU1hdGguZmxvb3Iscz0ibGVmdCI9PT1fJiZyKGkucmlnaHQpPnIoby5sZWZ0KXx8InJpZ2h0Ij09PV8mJnIoaS5sZWZ0KTxyKG8ucmlnaHQpfHwidG9wIj09PV8mJnIoaS5ib3R0b20pPnIoby50b3ApfHwiYm90dG9tIj09PV8mJnIoaS50b3ApPHIoby5ib3R0b20pLGE9cihpLmxlZnQpPHIoZy5sZWZ0KSxsPXIoaS5yaWdodCk+cihnLnJpZ2h0KSxjPXIoaS50b3ApPHIoZy50b3ApLGg9cihpLmJvdHRvbSk+cihnLmJvdHRvbSksdT0ibGVmdCI9PT1fJiZhfHwicmlnaHQiPT09XyYmbHx8InRvcCI9PT1fJiZjfHwiYm90dG9tIj09PV8mJmgsZj0tMSE9PVsidG9wIiwiYm90dG9tIl0uaW5kZXhPZihfKSxkPSEhbS5mbGlwVmFyaWF0aW9ucyYmKGYmJiJzdGFydCI9PT15JiZhfHxmJiYiZW5kIj09PXkmJmx8fCFmJiYic3RhcnQiPT09eSYmY3x8IWYmJiJlbmQiPT09eSYmaCk7KHN8fHV8fGQpJiYocC5mbGlwcGVkPSEwLChzfHx1KSYmKF89RVtlKzFdKSxkJiYoeT0iZW5kIj09PShuPXkpPyJzdGFydCI6InN0YXJ0Ij09PW4/ImVuZCI6bikscC5wbGFjZW1lbnQ9XysoeT8iLSIreToiIikscC5vZmZzZXRzLnBvcHBlcj1RdCh7fSxwLm9mZnNldHMucG9wcGVyLGVlKHAuaW5zdGFuY2UucG9wcGVyLHAub2Zmc2V0cy5yZWZlcmVuY2UscC5wbGFjZW1lbnQpKSxwPWllKHAuaW5zdGFuY2UubW9kaWZpZXJzLHAsImZsaXAiKSl9KSxwfSxiZWhhdmlvcjoiZmxpcCIscGFkZGluZzo1LGJvdW5kYXJpZXNFbGVtZW50OiJ2aWV3cG9ydCJ9LGlubmVyOntvcmRlcjo3MDAsZW5hYmxlZDohMSxmbjpmdW5jdGlvbih0KXt2YXIgZT10LnBsYWNlbWVudCxuPWUuc3BsaXQoIi0iKVswXSxpPXQub2Zmc2V0cyxvPWkucG9wcGVyLHI9aS5yZWZlcmVuY2Uscz0tMSE9PVsibGVmdCIsInJpZ2h0Il0uaW5kZXhPZihuKSxhPS0xPT09WyJ0b3AiLCJsZWZ0Il0uaW5kZXhPZihuKTtyZXR1cm4gb1tzPyJsZWZ0IjoidG9wIl09cltuXS0oYT9vW3M/IndpZHRoIjoiaGVpZ2h0Il06MCksdC5wbGFjZW1lbnQ9dGUoZSksdC5vZmZzZXRzLnBvcHBlcj1WdChvKSx0fX0saGlkZTp7b3JkZXI6ODAwLGVuYWJsZWQ6ITAsZm46ZnVuY3Rpb24odCl7aWYoIWZlKHQuaW5zdGFuY2UubW9kaWZpZXJzLCJoaWRlIiwicHJldmVudE92ZXJmbG93IikpcmV0dXJuIHQ7dmFyIGU9dC5vZmZzZXRzLnJlZmVyZW5jZSxuPW5lKHQuaW5zdGFuY2UubW9kaWZpZXJzLGZ1bmN0aW9uKHQpe3JldHVybiJwcmV2ZW50T3ZlcmZsb3ciPT09dC5uYW1lfSkuYm91bmRhcmllcztpZihlLmJvdHRvbTxuLnRvcHx8ZS5sZWZ0Pm4ucmlnaHR8fGUudG9wPm4uYm90dG9tfHxlLnJpZ2h0PG4ubGVmdCl7aWYoITA9PT10LmhpZGUpcmV0dXJuIHQ7dC5oaWRlPSEwLHQuYXR0cmlidXRlc1sieC1vdXQtb2YtYm91bmRhcmllcyJdPSIifWVsc2V7aWYoITE9PT10LmhpZGUpcmV0dXJuIHQ7dC5oaWRlPSExLHQuYXR0cmlidXRlc1sieC1vdXQtb2YtYm91bmRhcmllcyJdPSExfXJldHVybiB0fX0sY29tcHV0ZVN0eWxlOntvcmRlcjo4NTAsZW5hYmxlZDohMCxmbjpmdW5jdGlvbih0LGUpe3ZhciBuPWUueCxpPWUueSxvPXQub2Zmc2V0cy5wb3BwZXIscj1uZSh0Lmluc3RhbmNlLm1vZGlmaWVycyxmdW5jdGlvbih0KXtyZXR1cm4iYXBwbHlTdHlsZSI9PT10Lm5hbWV9KS5ncHVBY2NlbGVyYXRpb247dm9pZCAwIT09ciYmY29uc29sZS53YXJuKCJXQVJOSU5HOiBgZ3B1QWNjZWxlcmF0aW9uYCBvcHRpb24gbW92ZWQgdG8gYGNvbXB1dGVTdHlsZWAgbW9kaWZpZXIgYW5kIHdpbGwgbm90IGJlIHN1cHBvcnRlZCBpbiBmdXR1cmUgdmVyc2lvbnMgb2YgUG9wcGVyLmpzISIpO3ZhciBzLGEsbCxjLGgsdSxmLGQscCxtLGcsXyx2LHksRT12b2lkIDAhPT1yP3I6ZS5ncHVBY2NlbGVyYXRpb24sYj1qdCh0Lmluc3RhbmNlLnBvcHBlciksdz1ZdChiKSxDPXtwb3NpdGlvbjpvLnBvc2l0aW9ufSxUPShzPXQsYT13aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbzwyfHwhdWUsbD1zLm9mZnNldHMsYz1sLnBvcHBlcixoPWwucmVmZXJlbmNlLHU9TWF0aC5yb3VuZCxmPU1hdGguZmxvb3IsZD1mdW5jdGlvbih0KXtyZXR1cm4gdH0scD11KGgud2lkdGgpLG09dShjLndpZHRoKSxnPS0xIT09WyJsZWZ0IiwicmlnaHQiXS5pbmRleE9mKHMucGxhY2VtZW50KSxfPS0xIT09cy5wbGFjZW1lbnQuaW5kZXhPZigiLSIpLHk9YT91OmQse2xlZnQ6KHY9YT9nfHxffHxwJTI9PW0lMj91OmY6ZCkocCUyPT0xJiZtJTI9PTEmJiFfJiZhP2MubGVmdC0xOmMubGVmdCksdG9wOnkoYy50b3ApLGJvdHRvbTp5KGMuYm90dG9tKSxyaWdodDp2KGMucmlnaHQpfSksUz0iYm90dG9tIj09PW4/InRvcCI6ImJvdHRvbSIsRD0icmlnaHQiPT09aT8ibGVmdCI6InJpZ2h0IixJPXJlKCJ0cmFuc2Zvcm0iKSxBPXZvaWQgMCxPPXZvaWQgMDtpZihPPSJib3R0b20iPT09Uz8iSFRNTCI9PT1iLm5vZGVOYW1lPy1iLmNsaWVudEhlaWdodCtULmJvdHRvbTotdy5oZWlnaHQrVC5ib3R0b206VC50b3AsQT0icmlnaHQiPT09RD8iSFRNTCI9PT1iLm5vZGVOYW1lPy1iLmNsaWVudFdpZHRoK1QucmlnaHQ6LXcud2lkdGgrVC5yaWdodDpULmxlZnQsRSYmSSlDW0ldPSJ0cmFuc2xhdGUzZCgiK0ErInB4LCAiK08rInB4LCAwKSIsQ1tTXT0wLENbRF09MCxDLndpbGxDaGFuZ2U9InRyYW5zZm9ybSI7ZWxzZXt2YXIgTj0iYm90dG9tIj09PVM/LTE6MSxrPSJyaWdodCI9PT1EPy0xOjE7Q1tTXT1PKk4sQ1tEXT1BKmssQy53aWxsQ2hhbmdlPVMrIiwgIitEfXZhciBMPXsieC1wbGFjZW1lbnQiOnQucGxhY2VtZW50fTtyZXR1cm4gdC5hdHRyaWJ1dGVzPVF0KHt9LEwsdC5hdHRyaWJ1dGVzKSx0LnN0eWxlcz1RdCh7fSxDLHQuc3R5bGVzKSx0LmFycm93U3R5bGVzPVF0KHt9LHQub2Zmc2V0cy5hcnJvdyx0LmFycm93U3R5bGVzKSx0fSxncHVBY2NlbGVyYXRpb246ITAseDoiYm90dG9tIix5OiJyaWdodCJ9LGFwcGx5U3R5bGU6e29yZGVyOjkwMCxlbmFibGVkOiEwLGZuOmZ1bmN0aW9uKHQpe3ZhciBlLG47cmV0dXJuIGhlKHQuaW5zdGFuY2UucG9wcGVyLHQuc3R5bGVzKSxlPXQuaW5zdGFuY2UucG9wcGVyLG49dC5hdHRyaWJ1dGVzLE9iamVjdC5rZXlzKG4pLmZvckVhY2goZnVuY3Rpb24odCl7ITEhPT1uW3RdP2Uuc2V0QXR0cmlidXRlKHQsblt0XSk6ZS5yZW1vdmVBdHRyaWJ1dGUodCl9KSx0LmFycm93RWxlbWVudCYmT2JqZWN0LmtleXModC5hcnJvd1N0eWxlcykubGVuZ3RoJiZoZSh0LmFycm93RWxlbWVudCx0LmFycm93U3R5bGVzKSx0fSxvbkxvYWQ6ZnVuY3Rpb24odCxlLG4saSxvKXt2YXIgcj1KdChvLGUsdCxuLnBvc2l0aW9uRml4ZWQpLHM9JHQobi5wbGFjZW1lbnQscixlLHQsbi5tb2RpZmllcnMuZmxpcC5ib3VuZGFyaWVzRWxlbWVudCxuLm1vZGlmaWVycy5mbGlwLnBhZGRpbmcpO3JldHVybiBlLnNldEF0dHJpYnV0ZSgieC1wbGFjZW1lbnQiLHMpLGhlKGUse3Bvc2l0aW9uOm4ucG9zaXRpb25GaXhlZD8iZml4ZWQiOiJhYnNvbHV0ZSJ9KSxufSxncHVBY2NlbGVyYXRpb246dm9pZCAwfX19LGJlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gcih0LGUpe3ZhciBuPXRoaXMsaT0yPGFyZ3VtZW50cy5sZW5ndGgmJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06e307IWZ1bmN0aW9uKHQsZSl7aWYoISh0IGluc3RhbmNlb2YgZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsciksdGhpcy5zY2hlZHVsZVVwZGF0ZT1mdW5jdGlvbigpe3JldHVybiByZXF1ZXN0QW5pbWF0aW9uRnJhbWUobi51cGRhdGUpfSx0aGlzLnVwZGF0ZT1BdCh0aGlzLnVwZGF0ZS5iaW5kKHRoaXMpKSx0aGlzLm9wdGlvbnM9UXQoe30sci5EZWZhdWx0cyxpKSx0aGlzLnN0YXRlPXtpc0Rlc3Ryb3llZDohMSxpc0NyZWF0ZWQ6ITEsc2Nyb2xsUGFyZW50czpbXX0sdGhpcy5yZWZlcmVuY2U9dCYmdC5qcXVlcnk/dFswXTp0LHRoaXMucG9wcGVyPWUmJmUuanF1ZXJ5P2VbMF06ZSx0aGlzLm9wdGlvbnMubW9kaWZpZXJzPXt9LE9iamVjdC5rZXlzKFF0KHt9LHIuRGVmYXVsdHMubW9kaWZpZXJzLGkubW9kaWZpZXJzKSkuZm9yRWFjaChmdW5jdGlvbih0KXtuLm9wdGlvbnMubW9kaWZpZXJzW3RdPVF0KHt9LHIuRGVmYXVsdHMubW9kaWZpZXJzW3RdfHx7fSxpLm1vZGlmaWVycz9pLm1vZGlmaWVyc1t0XTp7fSl9KSx0aGlzLm1vZGlmaWVycz1PYmplY3Qua2V5cyh0aGlzLm9wdGlvbnMubW9kaWZpZXJzKS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIFF0KHtuYW1lOnR9LG4ub3B0aW9ucy5tb2RpZmllcnNbdF0pfSkuc29ydChmdW5jdGlvbih0LGUpe3JldHVybiB0Lm9yZGVyLWUub3JkZXJ9KSx0aGlzLm1vZGlmaWVycy5mb3JFYWNoKGZ1bmN0aW9uKHQpe3QuZW5hYmxlZCYmT3QodC5vbkxvYWQpJiZ0Lm9uTG9hZChuLnJlZmVyZW5jZSxuLnBvcHBlcixuLm9wdGlvbnMsdCxuLnN0YXRlKX0pLHRoaXMudXBkYXRlKCk7dmFyIG89dGhpcy5vcHRpb25zLmV2ZW50c0VuYWJsZWQ7byYmdGhpcy5lbmFibGVFdmVudExpc3RlbmVycygpLHRoaXMuc3RhdGUuZXZlbnRzRW5hYmxlZD1vfXJldHVybiBxdChyLFt7a2V5OiJ1cGRhdGUiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKCl7aWYoIXRoaXMuc3RhdGUuaXNEZXN0cm95ZWQpe3ZhciB0PXtpbnN0YW5jZTp0aGlzLHN0eWxlczp7fSxhcnJvd1N0eWxlczp7fSxhdHRyaWJ1dGVzOnt9LGZsaXBwZWQ6ITEsb2Zmc2V0czp7fX07dC5vZmZzZXRzLnJlZmVyZW5jZT1KdCh0aGlzLnN0YXRlLHRoaXMucG9wcGVyLHRoaXMucmVmZXJlbmNlLHRoaXMub3B0aW9ucy5wb3NpdGlvbkZpeGVkKSx0LnBsYWNlbWVudD0kdCh0aGlzLm9wdGlvbnMucGxhY2VtZW50LHQub2Zmc2V0cy5yZWZlcmVuY2UsdGhpcy5wb3BwZXIsdGhpcy5yZWZlcmVuY2UsdGhpcy5vcHRpb25zLm1vZGlmaWVycy5mbGlwLmJvdW5kYXJpZXNFbGVtZW50LHRoaXMub3B0aW9ucy5tb2RpZmllcnMuZmxpcC5wYWRkaW5nKSx0Lm9yaWdpbmFsUGxhY2VtZW50PXQucGxhY2VtZW50LHQucG9zaXRpb25GaXhlZD10aGlzLm9wdGlvbnMucG9zaXRpb25GaXhlZCx0Lm9mZnNldHMucG9wcGVyPWVlKHRoaXMucG9wcGVyLHQub2Zmc2V0cy5yZWZlcmVuY2UsdC5wbGFjZW1lbnQpLHQub2Zmc2V0cy5wb3BwZXIucG9zaXRpb249dGhpcy5vcHRpb25zLnBvc2l0aW9uRml4ZWQ/ImZpeGVkIjoiYWJzb2x1dGUiLHQ9aWUodGhpcy5tb2RpZmllcnMsdCksdGhpcy5zdGF0ZS5pc0NyZWF0ZWQ/dGhpcy5vcHRpb25zLm9uVXBkYXRlKHQpOih0aGlzLnN0YXRlLmlzQ3JlYXRlZD0hMCx0aGlzLm9wdGlvbnMub25DcmVhdGUodCkpfX0uY2FsbCh0aGlzKX19LHtrZXk6ImRlc3Ryb3kiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc3RhdGUuaXNEZXN0cm95ZWQ9ITAsb2UodGhpcy5tb2RpZmllcnMsImFwcGx5U3R5bGUiKSYmKHRoaXMucG9wcGVyLnJlbW92ZUF0dHJpYnV0ZSgieC1wbGFjZW1lbnQiKSx0aGlzLnBvcHBlci5zdHlsZS5wb3NpdGlvbj0iIix0aGlzLnBvcHBlci5zdHlsZS50b3A9IiIsdGhpcy5wb3BwZXIuc3R5bGUubGVmdD0iIix0aGlzLnBvcHBlci5zdHlsZS5yaWdodD0iIix0aGlzLnBvcHBlci5zdHlsZS5ib3R0b209IiIsdGhpcy5wb3BwZXIuc3R5bGUud2lsbENoYW5nZT0iIix0aGlzLnBvcHBlci5zdHlsZVtyZSgidHJhbnNmb3JtIildPSIiKSx0aGlzLmRpc2FibGVFdmVudExpc3RlbmVycygpLHRoaXMub3B0aW9ucy5yZW1vdmVPbkRlc3Ryb3kmJnRoaXMucG9wcGVyLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5wb3BwZXIpLHRoaXN9LmNhbGwodGhpcyl9fSx7a2V5OiJlbmFibGVFdmVudExpc3RlbmVycyIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnN0YXRlLmV2ZW50c0VuYWJsZWR8fCh0aGlzLnN0YXRlPWFlKHRoaXMucmVmZXJlbmNlLHRoaXMub3B0aW9ucyx0aGlzLnN0YXRlLHRoaXMuc2NoZWR1bGVVcGRhdGUpKX0uY2FsbCh0aGlzKX19LHtrZXk6ImRpc2FibGVFdmVudExpc3RlbmVycyIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gbGUuY2FsbCh0aGlzKX19XSkscn0oKTtiZS5VdGlscz0oInVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c/d2luZG93Omdsb2JhbCkuUG9wcGVyVXRpbHMsYmUucGxhY2VtZW50cz1kZSxiZS5EZWZhdWx0cz1FZTt2YXIgd2U9ImRyb3Bkb3duIixDZT0iYnMuZHJvcGRvd24iLFRlPSIuIitDZSxTZT0iLmRhdGEtYXBpIixEZT1wLmZuW3dlXSxJZT1uZXcgUmVnRXhwKCIzOHw0MHwyNyIpLEFlPXtISURFOiJoaWRlIitUZSxISURERU46ImhpZGRlbiIrVGUsU0hPVzoic2hvdyIrVGUsU0hPV046InNob3duIitUZSxDTElDSzoiY2xpY2siK1RlLENMSUNLX0RBVEFfQVBJOiJjbGljayIrVGUrU2UsS0VZRE9XTl9EQVRBX0FQSToia2V5ZG93biIrVGUrU2UsS0VZVVBfREFUQV9BUEk6ImtleXVwIitUZStTZX0sT2U9ImRpc2FibGVkIixOZT0ic2hvdyIsa2U9ImRyb3B1cCIsTGU9ImRyb3ByaWdodCIseGU9ImRyb3BsZWZ0IixQZT0iZHJvcGRvd24tbWVudS1yaWdodCIsSGU9InBvc2l0aW9uLXN0YXRpYyIsamU9J1tkYXRhLXRvZ2dsZT0iZHJvcGRvd24iXScsUmU9Ii5kcm9wZG93biBmb3JtIixGZT0iLmRyb3Bkb3duLW1lbnUiLE1lPSIubmF2YmFyLW5hdiIsV2U9Ii5kcm9wZG93bi1tZW51IC5kcm9wZG93bi1pdGVtOm5vdCguZGlzYWJsZWQpOm5vdCg6ZGlzYWJsZWQpIixVZT0idG9wLXN0YXJ0IixCZT0idG9wLWVuZCIscWU9ImJvdHRvbS1zdGFydCIsS2U9ImJvdHRvbS1lbmQiLFFlPSJyaWdodC1zdGFydCIsVmU9ImxlZnQtc3RhcnQiLFllPXtvZmZzZXQ6MCxmbGlwOiEwLGJvdW5kYXJ5OiJzY3JvbGxQYXJlbnQiLHJlZmVyZW5jZToidG9nZ2xlIixkaXNwbGF5OiJkeW5hbWljIn0semU9e29mZnNldDoiKG51bWJlcnxzdHJpbmd8ZnVuY3Rpb24pIixmbGlwOiJib29sZWFuIixib3VuZGFyeToiKHN0cmluZ3xlbGVtZW50KSIscmVmZXJlbmNlOiIoc3RyaW5nfGVsZW1lbnQpIixkaXNwbGF5OiJzdHJpbmcifSxYZT1mdW5jdGlvbigpe2Z1bmN0aW9uIGModCxlKXt0aGlzLl9lbGVtZW50PXQsdGhpcy5fcG9wcGVyPW51bGwsdGhpcy5fY29uZmlnPXRoaXMuX2dldENvbmZpZyhlKSx0aGlzLl9tZW51PXRoaXMuX2dldE1lbnVFbGVtZW50KCksdGhpcy5faW5OYXZiYXI9dGhpcy5fZGV0ZWN0TmF2YmFyKCksdGhpcy5fYWRkRXZlbnRMaXN0ZW5lcnMoKX12YXIgdD1jLnByb3RvdHlwZTtyZXR1cm4gdC50b2dnbGU9ZnVuY3Rpb24oKXtpZighdGhpcy5fZWxlbWVudC5kaXNhYmxlZCYmIXAodGhpcy5fZWxlbWVudCkuaGFzQ2xhc3MoT2UpKXt2YXIgdD1jLl9nZXRQYXJlbnRGcm9tRWxlbWVudCh0aGlzLl9lbGVtZW50KSxlPXAodGhpcy5fbWVudSkuaGFzQ2xhc3MoTmUpO2lmKGMuX2NsZWFyTWVudXMoKSwhZSl7dmFyIG49e3JlbGF0ZWRUYXJnZXQ6dGhpcy5fZWxlbWVudH0saT1wLkV2ZW50KEFlLlNIT1csbik7aWYocCh0KS50cmlnZ2VyKGkpLCFpLmlzRGVmYXVsdFByZXZlbnRlZCgpKXtpZighdGhpcy5faW5OYXZiYXIpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgYmUpdGhyb3cgbmV3IFR5cGVFcnJvcigiQm9vdHN0cmFwJ3MgZHJvcGRvd25zIHJlcXVpcmUgUG9wcGVyLmpzIChodHRwczovL3BvcHBlci5qcy5vcmcvKSIpO3ZhciBvPXRoaXMuX2VsZW1lbnQ7InBhcmVudCI9PT10aGlzLl9jb25maWcucmVmZXJlbmNlP289dDptLmlzRWxlbWVudCh0aGlzLl9jb25maWcucmVmZXJlbmNlKSYmKG89dGhpcy5fY29uZmlnLnJlZmVyZW5jZSwidW5kZWZpbmVkIiE9dHlwZW9mIHRoaXMuX2NvbmZpZy5yZWZlcmVuY2UuanF1ZXJ5JiYobz10aGlzLl9jb25maWcucmVmZXJlbmNlWzBdKSksInNjcm9sbFBhcmVudCIhPT10aGlzLl9jb25maWcuYm91bmRhcnkmJnAodCkuYWRkQ2xhc3MoSGUpLHRoaXMuX3BvcHBlcj1uZXcgYmUobyx0aGlzLl9tZW51LHRoaXMuX2dldFBvcHBlckNvbmZpZygpKX0ib250b3VjaHN0YXJ0ImluIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCYmMD09PXAodCkuY2xvc2VzdChNZSkubGVuZ3RoJiZwKGRvY3VtZW50LmJvZHkpLmNoaWxkcmVuKCkub24oIm1vdXNlb3ZlciIsbnVsbCxwLm5vb3ApLHRoaXMuX2VsZW1lbnQuZm9jdXMoKSx0aGlzLl9lbGVtZW50LnNldEF0dHJpYnV0ZSgiYXJpYS1leHBhbmRlZCIsITApLHAodGhpcy5fbWVudSkudG9nZ2xlQ2xhc3MoTmUpLHAodCkudG9nZ2xlQ2xhc3MoTmUpLnRyaWdnZXIocC5FdmVudChBZS5TSE9XTixuKSl9fX19LHQuc2hvdz1mdW5jdGlvbigpe2lmKCEodGhpcy5fZWxlbWVudC5kaXNhYmxlZHx8cCh0aGlzLl9lbGVtZW50KS5oYXNDbGFzcyhPZSl8fHAodGhpcy5fbWVudSkuaGFzQ2xhc3MoTmUpKSl7dmFyIHQ9e3JlbGF0ZWRUYXJnZXQ6dGhpcy5fZWxlbWVudH0sZT1wLkV2ZW50KEFlLlNIT1csdCksbj1jLl9nZXRQYXJlbnRGcm9tRWxlbWVudCh0aGlzLl9lbGVtZW50KTtwKG4pLnRyaWdnZXIoZSksZS5pc0RlZmF1bHRQcmV2ZW50ZWQoKXx8KHAodGhpcy5fbWVudSkudG9nZ2xlQ2xhc3MoTmUpLHAobikudG9nZ2xlQ2xhc3MoTmUpLnRyaWdnZXIocC5FdmVudChBZS5TSE9XTix0KSkpfX0sdC5oaWRlPWZ1bmN0aW9uKCl7aWYoIXRoaXMuX2VsZW1lbnQuZGlzYWJsZWQmJiFwKHRoaXMuX2VsZW1lbnQpLmhhc0NsYXNzKE9lKSYmcCh0aGlzLl9tZW51KS5oYXNDbGFzcyhOZSkpe3ZhciB0PXtyZWxhdGVkVGFyZ2V0OnRoaXMuX2VsZW1lbnR9LGU9cC5FdmVudChBZS5ISURFLHQpLG49Yy5fZ2V0UGFyZW50RnJvbUVsZW1lbnQodGhpcy5fZWxlbWVudCk7cChuKS50cmlnZ2VyKGUpLGUuaXNEZWZhdWx0UHJldmVudGVkKCl8fChwKHRoaXMuX21lbnUpLnRvZ2dsZUNsYXNzKE5lKSxwKG4pLnRvZ2dsZUNsYXNzKE5lKS50cmlnZ2VyKHAuRXZlbnQoQWUuSElEREVOLHQpKSl9fSx0LmRpc3Bvc2U9ZnVuY3Rpb24oKXtwLnJlbW92ZURhdGEodGhpcy5fZWxlbWVudCxDZSkscCh0aGlzLl9lbGVtZW50KS5vZmYoVGUpLHRoaXMuX2VsZW1lbnQ9bnVsbCwodGhpcy5fbWVudT1udWxsKSE9PXRoaXMuX3BvcHBlciYmKHRoaXMuX3BvcHBlci5kZXN0cm95KCksdGhpcy5fcG9wcGVyPW51bGwpfSx0LnVwZGF0ZT1mdW5jdGlvbigpe3RoaXMuX2luTmF2YmFyPXRoaXMuX2RldGVjdE5hdmJhcigpLG51bGwhPT10aGlzLl9wb3BwZXImJnRoaXMuX3BvcHBlci5zY2hlZHVsZVVwZGF0ZSgpfSx0Ll9hZGRFdmVudExpc3RlbmVycz1mdW5jdGlvbigpe3ZhciBlPXRoaXM7cCh0aGlzLl9lbGVtZW50KS5vbihBZS5DTElDSyxmdW5jdGlvbih0KXt0LnByZXZlbnREZWZhdWx0KCksdC5zdG9wUHJvcGFnYXRpb24oKSxlLnRvZ2dsZSgpfSl9LHQuX2dldENvbmZpZz1mdW5jdGlvbih0KXtyZXR1cm4gdD1sKHt9LHRoaXMuY29uc3RydWN0b3IuRGVmYXVsdCxwKHRoaXMuX2VsZW1lbnQpLmRhdGEoKSx0KSxtLnR5cGVDaGVja0NvbmZpZyh3ZSx0LHRoaXMuY29uc3RydWN0b3IuRGVmYXVsdFR5cGUpLHR9LHQuX2dldE1lbnVFbGVtZW50PWZ1bmN0aW9uKCl7aWYoIXRoaXMuX21lbnUpe3ZhciB0PWMuX2dldFBhcmVudEZyb21FbGVtZW50KHRoaXMuX2VsZW1lbnQpO3QmJih0aGlzLl9tZW51PXQucXVlcnlTZWxlY3RvcihGZSkpfXJldHVybiB0aGlzLl9tZW51fSx0Ll9nZXRQbGFjZW1lbnQ9ZnVuY3Rpb24oKXt2YXIgdD1wKHRoaXMuX2VsZW1lbnQucGFyZW50Tm9kZSksZT1xZTtyZXR1cm4gdC5oYXNDbGFzcyhrZSk/KGU9VWUscCh0aGlzLl9tZW51KS5oYXNDbGFzcyhQZSkmJihlPUJlKSk6dC5oYXNDbGFzcyhMZSk/ZT1RZTp0Lmhhc0NsYXNzKHhlKT9lPVZlOnAodGhpcy5fbWVudSkuaGFzQ2xhc3MoUGUpJiYoZT1LZSksZX0sdC5fZGV0ZWN0TmF2YmFyPWZ1bmN0aW9uKCl7cmV0dXJuIDA8cCh0aGlzLl9lbGVtZW50KS5jbG9zZXN0KCIubmF2YmFyIikubGVuZ3RofSx0Ll9nZXRPZmZzZXQ9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9e307cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMuX2NvbmZpZy5vZmZzZXQ/dC5mbj1mdW5jdGlvbih0KXtyZXR1cm4gdC5vZmZzZXRzPWwoe30sdC5vZmZzZXRzLGUuX2NvbmZpZy5vZmZzZXQodC5vZmZzZXRzLGUuX2VsZW1lbnQpfHx7fSksdH06dC5vZmZzZXQ9dGhpcy5fY29uZmlnLm9mZnNldCx0fSx0Ll9nZXRQb3BwZXJDb25maWc9ZnVuY3Rpb24oKXt2YXIgdD17cGxhY2VtZW50OnRoaXMuX2dldFBsYWNlbWVudCgpLG1vZGlmaWVyczp7b2Zmc2V0OnRoaXMuX2dldE9mZnNldCgpLGZsaXA6e2VuYWJsZWQ6dGhpcy5fY29uZmlnLmZsaXB9LHByZXZlbnRPdmVyZmxvdzp7Ym91bmRhcmllc0VsZW1lbnQ6dGhpcy5fY29uZmlnLmJvdW5kYXJ5fX19O3JldHVybiJzdGF0aWMiPT09dGhpcy5fY29uZmlnLmRpc3BsYXkmJih0Lm1vZGlmaWVycy5hcHBseVN0eWxlPXtlbmFibGVkOiExfSksdH0sYy5falF1ZXJ5SW50ZXJmYWNlPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgdD1wKHRoaXMpLmRhdGEoQ2UpO2lmKHR8fCh0PW5ldyBjKHRoaXMsIm9iamVjdCI9PXR5cGVvZiBlP2U6bnVsbCkscCh0aGlzKS5kYXRhKENlLHQpKSwic3RyaW5nIj09dHlwZW9mIGUpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgdFtlXSl0aHJvdyBuZXcgVHlwZUVycm9yKCdObyBtZXRob2QgbmFtZWQgIicrZSsnIicpO3RbZV0oKX19KX0sYy5fY2xlYXJNZW51cz1mdW5jdGlvbih0KXtpZighdHx8MyE9PXQud2hpY2gmJigia2V5dXAiIT09dC50eXBlfHw5PT09dC53aGljaCkpZm9yKHZhciBlPVtdLnNsaWNlLmNhbGwoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChqZSkpLG49MCxpPWUubGVuZ3RoO248aTtuKyspe3ZhciBvPWMuX2dldFBhcmVudEZyb21FbGVtZW50KGVbbl0pLHI9cChlW25dKS5kYXRhKENlKSxzPXtyZWxhdGVkVGFyZ2V0OmVbbl19O2lmKHQmJiJjbGljayI9PT10LnR5cGUmJihzLmNsaWNrRXZlbnQ9dCkscil7dmFyIGE9ci5fbWVudTtpZihwKG8pLmhhc0NsYXNzKE5lKSYmISh0JiYoImNsaWNrIj09PXQudHlwZSYmL2lucHV0fHRleHRhcmVhL2k="
}

Changelog:

{
    "2020.04.17 15:38": "base64:KDEwKSl7ZT10LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3ZhciBuPU10KHQsInRvcCIpLGk9TXQodCwibGVmdCIpO2UudG9wKz1uLGUubGVmdCs9aSxlLmJvdHRvbSs9bixlLnJpZ2h0Kz1pfWVsc2UgZT10LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpfWNhdGNoKHQpe312YXIgbz17bGVmdDplLmxlZnQsdG9wOmUudG9wLHdpZHRoOmUucmlnaHQtZS5sZWZ0LGhlaWdodDplLmJvdHRvbS1lLnRvcH0scj0iSFRNTCI9PT10Lm5vZGVOYW1lP0J0KHQub3duZXJEb2N1bWVudCk6e30scz1yLndpZHRofHx0LmNsaWVudFdpZHRofHxvLnJpZ2h0LW8ubGVmdCxhPXIuaGVpZ2h0fHx0LmNsaWVudEhlaWdodHx8by5ib3R0b20tby50b3AsbD10Lm9mZnNldFdpZHRoLXMsYz10Lm9mZnNldEhlaWdodC1hO2lmKGx8fGMpe3ZhciBoPU50KHQpO2wtPVd0KGgsIngiKSxjLT1XdChoLCJ5Iiksby53aWR0aC09bCxvLmhlaWdodC09Y31yZXR1cm4gVnQobyl9ZnVuY3Rpb24genQodCxlKXt2YXIgbj0yPGFyZ3VtZW50cy5sZW5ndGgmJnZvaWQgMCE9PWFyZ3VtZW50c1syXSYmYXJndW1lbnRzWzJdLGk9SHQoMTApLG89IkhUTUwiPT09ZS5ub2RlTmFtZSxyPVl0KHQpLHM9WXQoZSksYT1MdCh0KSxsPU50KGUpLGM9cGFyc2VGbG9hdChsLmJvcmRlclRvcFdpZHRoLDEwKSxoPXBhcnNlRmxvYXQobC5ib3JkZXJMZWZ0V2lkdGgsMTApO24mJm8mJihzLnRvcD1NYXRoLm1heChzLnRvcCwwKSxzLmxlZnQ9TWF0aC5tYXgocy5sZWZ0LDApKTt2YXIgdT1WdCh7dG9wOnIudG9wLXMudG9wLWMsbGVmdDpyLmxlZnQtcy5sZWZ0LWgsd2lkdGg6ci53aWR0aCxoZWlnaHQ6ci5oZWlnaHR9KTtpZih1Lm1hcmdpblRvcD0wLHUubWFyZ2luTGVmdD0wLCFpJiZvKXt2YXIgZj1wYXJzZUZsb2F0KGwubWFyZ2luVG9wLDEwKSxkPXBhcnNlRmxvYXQobC5tYXJnaW5MZWZ0LDEwKTt1LnRvcC09Yy1mLHUuYm90dG9tLT1jLWYsdS5sZWZ0LT1oLWQsdS5yaWdodC09aC1kLHUubWFyZ2luVG9wPWYsdS5tYXJnaW5MZWZ0PWR9cmV0dXJuKGkmJiFuP2UuY29udGFpbnMoYSk6ZT09PWEmJiJCT0RZIiE9PWEubm9kZU5hbWUpJiYodT1mdW5jdGlvbih0LGUpe3ZhciBuPTI8YXJndW1lbnRzLmxlbmd0aCYmdm9pZCAwIT09YXJndW1lbnRzWzJdJiZhcmd1bWVudHNbMl0saT1NdChlLCJ0b3AiKSxvPU10KGUsImxlZnQiKSxyPW4/LTE6MTtyZXR1cm4gdC50b3ArPWkqcix0LmJvdHRvbSs9aSpyLHQubGVmdCs9bypyLHQucmlnaHQrPW8qcix0fSh1LGUpKSx1fWZ1bmN0aW9uIFh0KHQpe2lmKCF0fHwhdC5wYXJlbnRFbGVtZW50fHxIdCgpKXJldHVybiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7Zm9yKHZhciBlPXQucGFyZW50RWxlbWVudDtlJiYibm9uZSI9PT1OdChlLCJ0cmFuc2Zvcm0iKTspZT1lLnBhcmVudEVsZW1lbnQ7cmV0dXJuIGV8fGRvY3VtZW50LmRvY3VtZW50RWxlbWVudH1mdW5jdGlvbiBHdCh0LGUsbixpKXt2YXIgbz00PGFyZ3VtZW50cy5sZW5ndGgmJnZvaWQgMCE9PWFyZ3VtZW50c1s0XSYmYXJndW1lbnRzWzRdLHI9e3RvcDowLGxlZnQ6MH0scz1vP1h0KHQpOkZ0KHQsZSk7aWYoInZpZXdwb3J0Ij09PWkpcj1mdW5jdGlvbih0KXt2YXIgZT0xPGFyZ3VtZW50cy5sZW5ndGgmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSYmYXJndW1lbnRzWzFdLG49dC5vd25lckRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxpPXp0KHQsbiksbz1NYXRoLm1heChuLmNsaWVudFdpZHRoLHdpbmRvdy5pbm5lcldpZHRofHwwKSxyPU1hdGgubWF4KG4uY2xpZW50SGVpZ2h0LHdpbmRvdy5pbm5lckhlaWdodHx8MCkscz1lPzA6TXQobiksYT1lPzA6TXQobiwibGVmdCIpO3JldHVybiBWdCh7dG9wOnMtaS50b3AraS5tYXJnaW5Ub3AsbGVmdDphLWkubGVmdCtpLm1hcmdpbkxlZnQsd2lkdGg6byxoZWlnaHQ6cn0pfShzLG8pO2Vsc2V7dmFyIGE9dm9pZCAwOyJzY3JvbGxQYXJlbnQiPT09aT8iQk9EWSI9PT0oYT1MdChrdChlKSkpLm5vZGVOYW1lJiYoYT10Lm93bmVyRG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KTphPSJ3aW5kb3ciPT09aT90Lm93bmVyRG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50Omk7dmFyIGw9enQoYSxzLG8pO2lmKCJIVE1MIiE9PWEubm9kZU5hbWV8fGZ1bmN0aW9uIHQoZSl7dmFyIG49ZS5ub2RlTmFtZTtpZigiQk9EWSI9PT1ufHwiSFRNTCI9PT1uKXJldHVybiExO2lmKCJmaXhlZCI9PT1OdChlLCJwb3NpdGlvbiIpKXJldHVybiEwO3ZhciBpPWt0KGUpO3JldHVybiEhaSYmdChpKX0ocykpcj1sO2Vsc2V7dmFyIGM9QnQodC5vd25lckRvY3VtZW50KSxoPWMuaGVpZ2h0LHU9Yy53aWR0aDtyLnRvcCs9bC50b3AtbC5tYXJnaW5Ub3Asci5ib3R0b209aCtsLnRvcCxyLmxlZnQrPWwubGVmdC1sLm1hcmdpbkxlZnQsci5yaWdodD11K2wubGVmdH19dmFyIGY9Im51bWJlciI9PXR5cGVvZihuPW58fDApO3JldHVybiByLmxlZnQrPWY/bjpuLmxlZnR8fDAsci50b3ArPWY/bjpuLnRvcHx8MCxyLnJpZ2h0LT1mP246bi5yaWdodHx8MCxyLmJvdHRvbS09Zj9uOm4uYm90dG9tfHwwLHJ9ZnVuY3Rpb24gJHQodCxlLGksbixvKXt2YXIgcj01PGFyZ3VtZW50cy5sZW5ndGgmJnZvaWQgMCE9PWFyZ3VtZW50c1s1XT9hcmd1bWVudHNbNV06MDtpZigtMT09PXQuaW5kZXhPZigiYXV0byIpKXJldHVybiB0O3ZhciBzPUd0KGksbixyLG8pLGE9e3RvcDp7d2lkdGg6cy53aWR0aCxoZWlnaHQ6ZS50b3Atcy50b3B9LHJpZ2h0Ont3aWR0aDpzLnJpZ2h0LWUucmlnaHQsaGVpZ2h0OnMuaGVpZ2h0fSxib3R0b206e3dpZHRoOnMud2lkdGgsaGVpZ2h0OnMuYm90dG9tLWUuYm90dG9tfSxsZWZ0Ont3aWR0aDplLmxlZnQtcy5sZWZ0LGhlaWdodDpzLmhlaWdodH19LGw9T2JqZWN0LmtleXMoYSkubWFwKGZ1bmN0aW9uKHQpe3JldHVybiBRdCh7a2V5OnR9LGFbdF0se2FyZWE6KGU9YVt0XSxlLndpZHRoKmUuaGVpZ2h0KX0pO3ZhciBlfSkuc29ydChmdW5jdGlvbih0LGUpe3JldHVybiBlLmFyZWEtdC5hcmVhfSksYz1sLmZpbHRlcihmdW5jdGlvbih0KXt2YXIgZT10LndpZHRoLG49dC5oZWlnaHQ7cmV0dXJuIGU+PWkuY2xpZW50V2lkdGgmJm4+PWkuY2xpZW50SGVpZ2h0fSksaD0wPGMubGVuZ3RoP2NbMF0ua2V5OmxbMF0ua2V5LHU9dC5zcGxpdCgiLSIpWzFdO3JldHVybiBoKyh1PyItIit1OiIiKX1mdW5jdGlvbiBKdCh0LGUsbil7dmFyIGk9Mzxhcmd1bWVudHMubGVuZ3RoJiZ2b2lkIDAhPT1hcmd1bWVudHNbM10/YXJndW1lbnRzWzNdOm51bGw7cmV0dXJuIHp0KG4saT9YdChlKTpGdChlLG4pLGkpfWZ1bmN0aW9uIFp0KHQpe3ZhciBlPXQub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHQpLG49cGFyc2VGbG9hdChlLm1hcmdpblRvcHx8MCkrcGFyc2VGbG9hdChlLm1hcmdpbkJvdHRvbXx8MCksaT1wYXJzZUZsb2F0KGUubWFyZ2luTGVmdHx8MCkrcGFyc2VGbG9hdChlLm1hcmdpblJpZ2h0fHwwKTtyZXR1cm57d2lkdGg6dC5vZmZzZXRXaWR0aCtpLGhlaWdodDp0Lm9mZnNldEhlaWdodCtufX1mdW5jdGlvbiB0ZSh0KXt2YXIgZT17bGVmdDoicmlnaHQiLHJpZ2h0OiJsZWZ0Iixib3R0b206InRvcCIsdG9wOiJib3R0b20ifTtyZXR1cm4gdC5yZXBsYWNlKC9sZWZ0fHJpZ2h0fGJvdHRvbXx0b3AvZyxmdW5jdGlvbih0KXtyZXR1cm4gZVt0XX0pfWZ1bmN0aW9uIGVlKHQsZSxuKXtuPW4uc3BsaXQoIi0iKVswXTt2YXIgaT1adCh0KSxvPXt3aWR0aDppLndpZHRoLGhlaWdodDppLmhlaWdodH0scj0tMSE9PVsicmlnaHQiLCJsZWZ0Il0uaW5kZXhPZihuKSxzPXI/InRvcCI6ImxlZnQiLGE9cj8ibGVmdCI6InRvcCIsbD1yPyJoZWlnaHQiOiJ3aWR0aCIsYz1yPyJ3aWR0aCI6ImhlaWdodCI7cmV0dXJuIG9bc109ZVtzXStlW2xdLzItaVtsXS8yLG9bYV09bj09PWE/ZVthXS1pW2NdOmVbdGUoYSldLG99ZnVuY3Rpb24gbmUodCxlKXtyZXR1cm4gQXJyYXkucHJvdG90eXBlLmZpbmQ/dC5maW5kKGUpOnQuZmlsdGVyKGUpWzBdfWZ1bmN0aW9uIGllKHQsbixlKXtyZXR1cm4odm9pZCAwPT09ZT90OnQuc2xpY2UoMCxmdW5jdGlvbih0LGUsbil7aWYoQXJyYXkucHJvdG90eXBlLmZpbmRJbmRleClyZXR1cm4gdC5maW5kSW5kZXgoZnVuY3Rpb24odCl7cmV0dXJuIHRbZV09PT1ufSk7dmFyIGk9bmUodCxmdW5jdGlvbih0KXtyZXR1cm4gdFtlXT09PW59KTtyZXR1cm4gdC5pbmRleE9mKGkpfSh0LCJuYW1lIixlKSkpLmZvckVhY2goZnVuY3Rpb24odCl7dC5mdW5jdGlvbiYmY29uc29sZS53YXJuKCJgbW9kaWZpZXIuZnVuY3Rpb25gIGlzIGRlcHJlY2F0ZWQsIHVzZSBgbW9kaWZpZXIuZm5gISIpO3ZhciBlPXQuZnVuY3Rpb258fHQuZm47dC5lbmFibGVkJiZPdChlKSYmKG4ub2Zmc2V0cy5wb3BwZXI9VnQobi5vZmZzZXRzLnBvcHBlciksbi5vZmZzZXRzLnJlZmVyZW5jZT1WdChuLm9mZnNldHMucmVmZXJlbmNlKSxuPWUobix0KSl9KSxufWZ1bmN0aW9uIG9lKHQsbil7cmV0dXJuIHQuc29tZShmdW5jdGlvbih0KXt2YXIgZT10Lm5hbWU7cmV0dXJuIHQuZW5hYmxlZCYmZT09PW59KX1mdW5jdGlvbiByZSh0KXtmb3IodmFyIGU9WyExLCJtcyIsIldlYmtpdCIsIk1veiIsIk8iXSxuPXQuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrdC5zbGljZSgxKSxpPTA7aTxlLmxlbmd0aDtpKyspe3ZhciBvPWVbaV0scj1vPyIiK28rbjp0O2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgZG9jdW1lbnQuYm9keS5zdHlsZVtyXSlyZXR1cm4gcn1yZXR1cm4gbnVsbH1mdW5jdGlvbiBzZSh0KXt2YXIgZT10Lm93bmVyRG9jdW1lbnQ7cmV0dXJuIGU/ZS5kZWZhdWx0Vmlldzp3aW5kb3d9ZnVuY3Rpb24gYWUodCxlLG4saSl7bi51cGRhdGVCb3VuZD1pLHNlKHQpLmFkZEV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsbi51cGRhdGVCb3VuZCx7cGFzc2l2ZTohMH0pO3ZhciBvPUx0KHQpO3JldHVybiBmdW5jdGlvbiB0KGUsbixpLG8pe3ZhciByPSJCT0RZIj09PWUubm9kZU5hbWUscz1yP2Uub3duZXJEb2N1bWVudC5kZWZhdWx0VmlldzplO3MuYWRkRXZlbnRMaXN0ZW5lcihuLGkse3Bhc3NpdmU6ITB9KSxyfHx0KEx0KHMucGFyZW50Tm9kZSksbixpLG8pLG8ucHVzaChzKX0obywic2Nyb2xsIixuLnVwZGF0ZUJvdW5kLG4uc2Nyb2xsUGFyZW50cyksbi5zY3JvbGxFbGVtZW50PW8sbi5ldmVudHNFbmFibGVkPSEwLG59ZnVuY3Rpb24gbGUoKXt2YXIgdCxlO3RoaXMuc3RhdGUuZXZlbnRzRW5hYmxlZCYmKGNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMuc2NoZWR1bGVVcGRhdGUpLHRoaXMuc3RhdGU9KHQ9dGhpcy5yZWZlcmVuY2UsZT10aGlzLnN0YXRlLHNlKHQpLnJlbW92ZUV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsZS51cGRhdGVCb3VuZCksZS5zY3JvbGxQYXJlbnRzLmZvckVhY2goZnVuY3Rpb24odCl7dC5yZW1vdmVFdmVudExpc3RlbmVyKCJzY3JvbGwiLGUudXBkYXRlQm91bmQpfSksZS51cGRhdGVCb3VuZD1udWxsLGUuc2Nyb2xsUGFyZW50cz1bXSxlLnNjcm9sbEVsZW1lbnQ9bnVsbCxlLmV2ZW50c0VuYWJsZWQ9ITEsZSkpfWZ1bmN0aW9uIGNlKHQpe3JldHVybiIiIT09dCYmIWlzTmFOKHBhcnNlRmxvYXQodCkpJiZpc0Zpbml0ZSh0KX1mdW5jdGlvbiBoZShuLGkpe09iamVjdC5rZXlzKGkpLmZvckVhY2goZnVuY3Rpb24odCl7dmFyIGU9IiI7LTEhPT1bIndpZHRoIiwiaGVpZ2h0IiwidG9wIiwicmlnaHQiLCJib3R0b20iLCJsZWZ0Il0uaW5kZXhPZih0KSYmY2UoaVt0XSkmJihlPSJweCIpLG4uc3R5bGVbdF09aVt0XStlfSl9dmFyIHVlPVR0JiYvRmlyZWZveC9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7ZnVuY3Rpb24gZmUodCxlLG4pe3ZhciBpPW5lKHQsZnVuY3Rpb24odCl7cmV0dXJuIHQubmFtZT09PWV9KSxvPSEhaSYmdC5zb21lKGZ1bmN0aW9uKHQpe3JldHVybiB0Lm5hbWU9PT1uJiZ0LmVuYWJsZWQmJnQub3JkZXI8aS5vcmRlcn0pO2lmKCFvKXt2YXIgcj0iYCIrZSsiYCIscz0iYCIrbisiYCI7Y29uc29sZS53YXJuKHMrIiBtb2RpZmllciBpcyByZXF1aXJlZCBieSAiK3IrIiBtb2RpZmllciBpbiBvcmRlciB0byB3b3JrLCBiZSBzdXJlIHRvIGluY2x1ZGUgaXQgYmVmb3JlICIrcisiISIpfXJldHVybiBvfXZhciBkZT1bImF1dG8tc3RhcnQiLCJhdXRvIiwiYXV0by1lbmQiLCJ0b3Atc3RhcnQiLCJ0b3AiLCJ0b3AtZW5kIiwicmlnaHQtc3RhcnQiLCJyaWdodCIsInJpZ2h0LWVuZCIsImJvdHRvbS1lbmQiLCJib3R0b20iLCJib3R0b20tc3RhcnQiLCJsZWZ0LWVuZCIsImxlZnQiLCJsZWZ0LXN0YXJ0Il0scGU9ZGUuc2xpY2UoMyk7ZnVuY3Rpb24gbWUodCl7dmFyIGU9MTxhcmd1bWVudHMubGVuZ3RoJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0mJmFyZ3VtZW50c1sxXSxuPXBlLmluZGV4T2YodCksaT1wZS5zbGljZShuKzEpLmNvbmNhdChwZS5zbGljZSgwLG4pKTtyZXR1cm4gZT9pLnJldmVyc2UoKTppfXZhciBnZT0iZmxpcCIsX2U9ImNsb2Nrd2lzZSIsdmU9ImNvdW50ZXJjbG9ja3dpc2UiO2Z1bmN0aW9uIHllKHQsbyxyLGUpe3ZhciBzPVswLDBdLGE9LTEhPT1bInJpZ2h0IiwibGVmdCJdLmluZGV4T2YoZSksbj10LnNwbGl0KC8oXCt8XC0pLykubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0LnRyaW0oKX0pLGk9bi5pbmRleE9mKG5lKG4sZnVuY3Rpb24odCl7cmV0dXJuLTEhPT10LnNlYXJjaCgvLHxccy8pfSkpO25baV0mJi0xPT09bltpXS5pbmRleE9mKCIsIikmJmNvbnNvbGUud2FybigiT2Zmc2V0cyBzZXBhcmF0ZWQgYnkgd2hpdGUgc3BhY2UocykgYXJlIGRlcHJlY2F0ZWQsIHVzZSBhIGNvbW1hICgsKSBpbnN0ZWFkLiIpO3ZhciBsPS9ccyosXHMqfFxzKy8sYz0tMSE9PWk/W24uc2xpY2UoMCxpKS5jb25jYXQoW25baV0uc3BsaXQobClbMF1dKSxbbltpXS5zcGxpdChsKVsxXV0uY29uY2F0KG4uc2xpY2UoaSsxKSldOltuXTtyZXR1cm4oYz1jLm1hcChmdW5jdGlvbih0LGUpe3ZhciBuPSgxPT09ZT8hYTphKT8iaGVpZ2h0Ijoid2lkdGgiLGk9ITE7cmV0dXJuIHQucmVkdWNlKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIiI9PT10W3QubGVuZ3RoLTFdJiYtMSE9PVsiKyIsIi0iXS5pbmRleE9mKGUpPyh0W3QubGVuZ3RoLTFdPWUsaT0hMCx0KTppPyh0W3QubGVuZ3RoLTFdKz1lLGk9ITEsdCk6dC5jb25jYXQoZSl9LFtdKS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKHQsZSxuLGkpe3ZhciBvPXQubWF0Y2goLygoPzpcLXxcKyk/XGQqXC4/XGQqKSguKikvKSxyPStvWzFdLHM9b1syXTtpZighcilyZXR1cm4gdDtpZigwIT09cy5pbmRleE9mKCIlIikpcmV0dXJuInZoIiE9PXMmJiJ2dyIhPT1zP3I6KCJ2aCI9PT1zP01hdGgubWF4KGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQsd2luZG93LmlubmVySGVpZ2h0fHwwKTpNYXRoLm1heChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGgsd2luZG93LmlubmVyV2lkdGh8fDApKS8xMDAqcjt2YXIgYT12b2lkIDA7c3dpdGNoKHMpe2Nhc2UiJXAiOmE9bjticmVhaztjYXNlIiUiOmNhc2UiJXIiOmRlZmF1bHQ6YT1pfXJldHVybiBWdChhKVtlXS8xMDAqcn0odCxuLG8scil9KX0pKS5mb3JFYWNoKGZ1bmN0aW9uKG4saSl7bi5mb3JFYWNoKGZ1bmN0aW9uKHQsZSl7Y2UodCkmJihzW2ldKz10KigiLSI9PT1uW2UtMV0/LTE6MSkpfSl9KSxzfXZhciBFZT17cGxhY2VtZW50OiJib3R0b20iLHBvc2l0aW9uRml4ZWQ6ITEsZXZlbnRzRW5hYmxlZDohMCxyZW1vdmVPbkRlc3Ryb3k6ITEsb25DcmVhdGU6ZnVuY3Rpb24oKXt9LG9uVXBkYXRlOmZ1bmN0aW9uKCl7fSxtb2RpZmllcnM6e3NoaWZ0OntvcmRlcjoxMDAsZW5hYmxlZDohMCxmbjpmdW5jdGlvbih0KXt2YXIgZT10LnBsYWNlbWVudCxuPWUuc3BsaXQoIi0iKVswXSxpPWUuc3BsaXQoIi0iKVsxXTtpZihpKXt2YXIgbz10Lm9mZnNldHMscj1vLnJlZmVyZW5jZSxzPW8ucG9wcGVyLGE9LTEhPT1bImJvdHRvbSIsInRvcCJdLmluZGV4T2YobiksbD1hPyJsZWZ0IjoidG9wIixjPWE/IndpZHRoIjoiaGVpZ2h0IixoPXtzdGFydDpLdCh7fSxsLHJbbF0pLGVuZDpLdCh7fSxsLHJbbF0rcltjXS1zW2NdKX07dC5vZmZzZXRzLnBvcHBlcj1RdCh7fSxzLGhbaV0pfXJldHVybiB0fX0sb2Zmc2V0OntvcmRlcjoyMDAsZW5hYmxlZDohMCxmbjpmdW5jdGlvbih0LGUpe3ZhciBuPWUub2Zmc2V0LGk9dC5wbGFjZW1lbnQsbz10Lm9mZnNldHMscj1vLnBvcHBlcixzPW8ucmVmZXJlbmNlLGE9aS5zcGxpdCgiLSIpWzBdLGw9dm9pZCAwO3JldHVybiBsPWNlKCtuKT9bK24sMF06eWUobixyLHMsYSksImxlZnQiPT09YT8oci50b3ArPWxbMF0sci5sZWZ0LT1sWzFdKToicmlnaHQiPT09YT8oci50b3ArPWxbMF0sci5sZWZ0Kz1sWzFdKToidG9wIj09PWE/KHIubGVmdCs9bFswXSxyLnRvcC09bFsxXSk6ImJvdHRvbSI9PT1hJiYoci5sZWZ0Kz1sWzBdLHIudG9wKz1sWzFdKSx0LnBvcHBlcj1yLHR9LG9mZnNldDowfSxwcmV2ZW50T3ZlcmZsb3c6e29yZGVyOjMwMCxlbmFibGVkOiEwLGZuOmZ1bmN0aW9uKHQsaSl7dmFyIGU9aS5ib3VuZGFyaWVzRWxlbWVudHx8anQodC5pbnN0YW5jZS5wb3BwZXIpO3QuaW5zdGFuY2UucmVmZXJlbmNlPT09ZSYmKGU9anQoZSkpO3ZhciBuPXJlKCJ0cmFuc2Zvcm0iKSxvPXQuaW5zdGFuY2UucG9wcGVyLnN0eWxlLHI9by50b3Ascz1vLmxlZnQsYT1vW25dO28udG9wPSIiLG8ubGVmdD0iIixvW25dPSIiO3ZhciBsPUd0KHQuaW5zdGFuY2UucG9wcGVyLHQuaW5zdGFuY2UucmVmZXJlbmNlLGkucGFkZGluZyxlLHQucG9zaXRpb25GaXhlZCk7by50b3A9cixvLmxlZnQ9cyxvW25dPWEsaS5ib3VuZGFyaWVzPWw7dmFyIGM9aS5wcmlvcml0eSxoPXQub2Zmc2V0cy5wb3BwZXIsdT17cHJpbWFyeTpmdW5jdGlvbih0KXt2YXIgZT1oW3RdO3JldHVybiBoW3RdPGxbdF0mJiFpLmVzY2FwZVdpdGhSZWZlcmVuY2UmJihlPU1hdGgubWF4KGhbdF0sbFt0XSkpLEt0KHt9LHQsZSl9LHNlY29uZGFyeTpmdW5jdGlvbih0KXt2YXIgZT0icmlnaHQiPT09dD8ibGVmdCI6InRvcCIsbj1oW2VdO3JldHVybiBoW3RdPmxbdF0mJiFpLmVzY2FwZVdpdGhSZWZlcmVuY2UmJihuPU1hdGgubWluKGhbZV0sbFt0XS0oInJpZ2h0Ij09PXQ/aC53aWR0aDpoLmhlaWdodCkpKSxLdCh7fSxlLG4pfX07cmV0dXJuIGMuZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgZT0tMSE9PVsibGVmdCIsInRvcCJdLmluZGV4T2YodCk/InByaW1hcnkiOiJzZWNvbmRhcnkiO2g9UXQoe30saCx1W2VdKHQpKX0pLHQub2Zmc2V0cy5wb3BwZXI9aCx0fSxwcmlvcml0eTpbImxlZnQiLCJyaWdodCIsInRvcCIsImJvdHRvbSJdLHBhZGRpbmc6NSxib3VuZGFyaWVzRWxlbWVudDoic2Nyb2xsUGFyZW50In0sa2VlcFRvZ2V0aGVyOntvcmRlcjo0MDAsZW5hYmxlZDohMCxmbjpmdW5jdGlvbih0KXt2YXIgZT10Lm9mZnNldHMsbj1lLnBvcHBlcixpPWUucmVmZXJlbmNlLG89dC5wbGFjZW1lbnQuc3BsaXQoIi0iKVswXSxyPU1hdGguZmxvb3Iscz0tMSE9PVsidG9wIiwiYm90dG9tIl0uaW5kZXhPZihvKSxhPXM/InJpZ2h0IjoiYm90dG9tIixsPXM/ImxlZnQiOiJ0b3AiLGM9cz8id2lkdGgiOiJoZWlnaHQiO3JldHVybiBuW2FdPHIoaVtsXSkmJih0Lm9mZnNldHMucG9wcGVyW2xdPXIoaVtsXSktbltjXSksbltsXT5yKGlbYV0pJiYodC5vZmZzZXRzLnBvcHBlcltsXT1yKGlbYV0pKSx0fX0sYXJyb3c6e29yZGVyOjUwMCxlbmFibGVkOiEwLGZuOmZ1bmN0aW9uKHQsZSl7dmFyIG47aWYoIWZlKHQuaW5zdGFuY2UubW9kaWZpZXJzLCJhcnJvdyIsImtlZXBUb2dldGhlciIpKXJldHVybiB0O3ZhciBpPWUuZWxlbWVudDtpZigic3RyaW5nIj09dHlwZW9mIGkpe2lmKCEoaT10Lmluc3RhbmNlLnBvcHBlci5xdWVyeVNlbGVjdG9yKGkpKSlyZXR1cm4gdH1lbHNlIGlmKCF0Lmluc3RhbmNlLnBvcHBlci5jb250YWlucyhpKSlyZXR1cm4gY29uc29sZS53YXJuKCJXQVJOSU5HOiBgYXJyb3cuZWxlbWVudGAgbXVzdCBiZSBjaGlsZCBvZiBpdHMgcG9wcGVyIGVsZW1lbnQhIiksdDt2YXIgbz10LnBsYWNlbWVudC5zcGxpdCgiLSIpWzBdLHI9dC5vZmZzZXRzLHM9ci5wb3BwZXIsYT1yLnJlZmVyZW5jZSxsPS0xIT09WyJsZWZ0IiwicmlnaHQiXS5pbmRleE9mKG8pLGM9bD8iaGVpZ2h0Ijoid2lkdGgiLGg9bD8iVG9wIjoiTGVmdCIsdT1oLnRvTG93ZXJDYXNlKCksZj1sPyJsZWZ0IjoidG9wIixkPWw/ImJvdHRvbSI6InJpZ2h0IixwPVp0KGkpW2NdO2FbZF0tcDxzW3VdJiYodC5vZmZzZXRzLnBvcHBlclt1XS09c1t1XS0oYVtkXS1wKSksYVt1XStwPnNbZF0mJih0Lm9mZnNldHMucG9wcGVyW3VdKz1hW3VdK3Atc1tkXSksdC5vZmZzZXRzLnBvcHBlcj1WdCh0Lm9mZnNldHMucG9wcGVyKTt2YXIgbT1hW3VdK2FbY10vMi1wLzIsZz1OdCh0Lmluc3RhbmNlLnBvcHBlciksXz1wYXJzZUZsb2F0KGdbIm1hcmdpbiIraF0sMTApLHY9cGFyc2VGbG9hdChnWyJib3JkZXIiK2grIldpZHRoIl0sMTApLHk9bS10Lm9mZnNldHMucG9wcGVyW3VdLV8tdjtyZXR1cm4geT1NYXRoLm1heChNYXRoLm1pbihzW2NdLXAseSksMCksdC5hcnJvd0VsZW1lbnQ9aSx0Lm9mZnNldHMuYXJyb3c9KEt0KG49e30sdSxNYXRoLnJvdW5kKHkpKSxLdChuLGYsIiIpLG4pLHR9LGVsZW1lbnQ6Ilt4LWFycm93XSJ9LGZsaXA6e29yZGVyOjYwMCxlbmFibGVkOiEwLGZuOmZ1bmN0aW9uKHAsbSl7aWYob2UocC5pbnN0YW5jZS5tb2RpZmllcnMsImlubmVyIikpcmV0dXJuIHA7aWYocC5mbGlwcGVkJiZwLnBsYWNlbWVudD09PXAub3JpZ2luYWxQbGFjZW1lbnQpcmV0dXJuIHA7dmFyIGc9R3QocC5pbnN0YW5jZS5wb3BwZXIscC5pbnN0YW5jZS5yZWZlcmVuY2UsbS5wYWRkaW5nLG0uYm91bmRhcmllc0VsZW1lbnQscC5wb3NpdGlvbkZpeGVkKSxfPXAucGxhY2VtZW50LnNwbGl0KCItIilbMF0sdj10ZShfKSx5PXAucGxhY2VtZW50LnNwbGl0KCItIilbMV18fCIiLEU9W107c3dpdGNoKG0uYmVoYXZpb3Ipe2Nhc2UgZ2U6RT1bXyx2XTticmVhaztjYXNlIF9lOkU9bWUoXyk7YnJlYWs7Y2FzZSB2ZTpFPW1lKF8sITApO2JyZWFrO2RlZmF1bHQ6RT1tLmJlaGF2aW9yfXJldHVybiBFLmZvckVhY2goZnVuY3Rpb24odCxlKXtpZihfIT09dHx8RS5sZW5ndGg9PT1lKzEpcmV0dXJuIHA7Xz1wLnBsYWNlbWVudC5zcGxpdCgiLSIpWzBdLHY9dGUoXyk7dmFyIG4saT1wLm9mZnNldHMucG9wcGVyLG89cC5vZmZzZXRzLnJlZmVyZW5jZSxyPU1hdGguZmxvb3Iscz0ibGVmdCI9PT1fJiZyKGkucmlnaHQpPnIoby5sZWZ0KXx8InJpZ2h0Ij09PV8mJnIoaS5sZWZ0KTxyKG8ucmlnaHQpfHwidG9wIj09PV8mJnIoaS5ib3R0b20pPnIoby50b3ApfHwiYm90dG9tIj09PV8mJnIoaS50b3ApPHIoby5ib3R0b20pLGE9cihpLmxlZnQpPHIoZy5sZWZ0KSxsPXIoaS5yaWdodCk+cihnLnJpZ2h0KSxjPXIoaS50b3ApPHIoZy50b3ApLGg9cihpLmJvdHRvbSk+cihnLmJvdHRvbSksdT0ibGVmdCI9PT1fJiZhfHwicmlnaHQiPT09XyYmbHx8InRvcCI9PT1fJiZjfHwiYm90dG9tIj09PV8mJmgsZj0tMSE9PVsidG9wIiwiYm90dG9tIl0uaW5kZXhPZihfKSxkPSEhbS5mbGlwVmFyaWF0aW9ucyYmKGYmJiJzdGFydCI9PT15JiZhfHxmJiYiZW5kIj09PXkmJmx8fCFmJiYic3RhcnQiPT09eSYmY3x8IWYmJiJlbmQiPT09eSYmaCk7KHN8fHV8fGQpJiYocC5mbGlwcGVkPSEwLChzfHx1KSYmKF89RVtlKzFdKSxkJiYoeT0iZW5kIj09PShuPXkpPyJzdGFydCI6InN0YXJ0Ij09PW4/ImVuZCI6bikscC5wbGFjZW1lbnQ9XysoeT8iLSIreToiIikscC5vZmZzZXRzLnBvcHBlcj1RdCh7fSxwLm9mZnNldHMucG9wcGVyLGVlKHAuaW5zdGFuY2UucG9wcGVyLHAub2Zmc2V0cy5yZWZlcmVuY2UscC5wbGFjZW1lbnQpKSxwPWllKHAuaW5zdGFuY2UubW9kaWZpZXJzLHAsImZsaXAiKSl9KSxwfSxiZWhhdmlvcjoiZmxpcCIscGFkZGluZzo1LGJvdW5kYXJpZXNFbGVtZW50OiJ2aWV3cG9ydCJ9LGlubmVyOntvcmRlcjo3MDAsZW5hYmxlZDohMSxmbjpmdW5jdGlvbih0KXt2YXIgZT10LnBsYWNlbWVudCxuPWUuc3BsaXQoIi0iKVswXSxpPXQub2Zmc2V0cyxvPWkucG9wcGVyLHI9aS5yZWZlcmVuY2Uscz0tMSE9PVsibGVmdCIsInJpZ2h0Il0uaW5kZXhPZihuKSxhPS0xPT09WyJ0b3AiLCJsZWZ0Il0uaW5kZXhPZihuKTtyZXR1cm4gb1tzPyJsZWZ0IjoidG9wIl09cltuXS0oYT9vW3M/IndpZHRoIjoiaGVpZ2h0Il06MCksdC5wbGFjZW1lbnQ9dGUoZSksdC5vZmZzZXRzLnBvcHBlcj1WdChvKSx0fX0saGlkZTp7b3JkZXI6ODAwLGVuYWJsZWQ6ITAsZm46ZnVuY3Rpb24odCl7aWYoIWZlKHQuaW5zdGFuY2UubW9kaWZpZXJzLCJoaWRlIiwicHJldmVudE92ZXJmbG93IikpcmV0dXJuIHQ7dmFyIGU9dC5vZmZzZXRzLnJlZmVyZW5jZSxuPW5lKHQuaW5zdGFuY2UubW9kaWZpZXJzLGZ1bmN0aW9uKHQpe3JldHVybiJwcmV2ZW50T3ZlcmZsb3ciPT09dC5uYW1lfSkuYm91bmRhcmllcztpZihlLmJvdHRvbTxuLnRvcHx8ZS5sZWZ0Pm4ucmlnaHR8fGUudG9wPm4uYm90dG9tfHxlLnJpZ2h0PG4ubGVmdCl7aWYoITA9PT10LmhpZGUpcmV0dXJuIHQ7dC5oaWRlPSEwLHQuYXR0cmlidXRlc1sieC1vdXQtb2YtYm91bmRhcmllcyJdPSIifWVsc2V7aWYoITE9PT10LmhpZGUpcmV0dXJuIHQ7dC5oaWRlPSExLHQuYXR0cmlidXRlc1sieC1vdXQtb2YtYm91bmRhcmllcyJdPSExfXJldHVybiB0fX0sY29tcHV0ZVN0eWxlOntvcmRlcjo4NTAsZW5hYmxlZDohMCxmbjpmdW5jdGlvbih0LGUpe3ZhciBuPWUueCxpPWUueSxvPXQub2Zmc2V0cy5wb3BwZXIscj1uZSh0Lmluc3RhbmNlLm1vZGlmaWVycyxmdW5jdGlvbih0KXtyZXR1cm4iYXBwbHlTdHlsZSI9PT10Lm5hbWV9KS5ncHVBY2NlbGVyYXRpb247dm9pZCAwIT09ciYmY29uc29sZS53YXJuKCJXQVJOSU5HOiBgZ3B1QWNjZWxlcmF0aW9uYCBvcHRpb24gbW92ZWQgdG8gYGNvbXB1dGVTdHlsZWAgbW9kaWZpZXIgYW5kIHdpbGwgbm90IGJlIHN1cHBvcnRlZCBpbiBmdXR1cmUgdmVyc2lvbnMgb2YgUG9wcGVyLmpzISIpO3ZhciBzLGEsbCxjLGgsdSxmLGQscCxtLGcsXyx2LHksRT12b2lkIDAhPT1yP3I6ZS5ncHVBY2NlbGVyYXRpb24sYj1qdCh0Lmluc3RhbmNlLnBvcHBlciksdz1ZdChiKSxDPXtwb3NpdGlvbjpvLnBvc2l0aW9ufSxUPShzPXQsYT13aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbzwyfHwhdWUsbD1zLm9mZnNldHMsYz1sLnBvcHBlcixoPWwucmVmZXJlbmNlLHU9TWF0aC5yb3VuZCxmPU1hdGguZmxvb3IsZD1mdW5jdGlvbih0KXtyZXR1cm4gdH0scD11KGgud2lkdGgpLG09dShjLndpZHRoKSxnPS0xIT09WyJsZWZ0IiwicmlnaHQiXS5pbmRleE9mKHMucGxhY2VtZW50KSxfPS0xIT09cy5wbGFjZW1lbnQuaW5kZXhPZigiLSIpLHk9YT91OmQse2xlZnQ6KHY9YT9nfHxffHxwJTI9PW0lMj91OmY6ZCkocCUyPT0xJiZtJTI9PTEmJiFfJiZhP2MubGVmdC0xOmMubGVmdCksdG9wOnkoYy50b3ApLGJvdHRvbTp5KGMuYm90dG9tKSxyaWdodDp2KGMucmlnaHQpfSksUz0iYm90dG9tIj09PW4/InRvcCI6ImJvdHRvbSIsRD0icmlnaHQiPT09aT8ibGVmdCI6InJpZ2h0IixJPXJlKCJ0cmFuc2Zvcm0iKSxBPXZvaWQgMCxPPXZvaWQgMDtpZihPPSJib3R0b20iPT09Uz8iSFRNTCI9PT1iLm5vZGVOYW1lPy1iLmNsaWVudEhlaWdodCtULmJvdHRvbTotdy5oZWlnaHQrVC5ib3R0b206VC50b3AsQT0icmlnaHQiPT09RD8iSFRNTCI9PT1iLm5vZGVOYW1lPy1iLmNsaWVudFdpZHRoK1QucmlnaHQ6LXcud2lkdGgrVC5yaWdodDpULmxlZnQsRSYmSSlDW0ldPSJ0cmFuc2xhdGUzZCgiK0ErInB4LCAiK08rInB4LCAwKSIsQ1tTXT0wLENbRF09MCxDLndpbGxDaGFuZ2U9InRyYW5zZm9ybSI7ZWxzZXt2YXIgTj0iYm90dG9tIj09PVM/LTE6MSxrPSJyaWdodCI9PT1EPy0xOjE7Q1tTXT1PKk4sQ1tEXT1BKmssQy53aWxsQ2hhbmdlPVMrIiwgIitEfXZhciBMPXsieC1wbGFjZW1lbnQiOnQucGxhY2VtZW50fTtyZXR1cm4gdC5hdHRyaWJ1dGVzPVF0KHt9LEwsdC5hdHRyaWJ1dGVzKSx0LnN0eWxlcz1RdCh7fSxDLHQuc3R5bGVzKSx0LmFycm93U3R5bGVzPVF0KHt9LHQub2Zmc2V0cy5hcnJvdyx0LmFycm93U3R5bGVzKSx0fSxncHVBY2NlbGVyYXRpb246ITAseDoiYm90dG9tIix5OiJyaWdodCJ9LGFwcGx5U3R5bGU6e29yZGVyOjkwMCxlbmFibGVkOiEwLGZuOmZ1bmN0aW9uKHQpe3ZhciBlLG47cmV0dXJuIGhlKHQuaW5zdGFuY2UucG9wcGVyLHQuc3R5bGVzKSxlPXQuaW5zdGFuY2UucG9wcGVyLG49dC5hdHRyaWJ1dGVzLE9iamVjdC5rZXlzKG4pLmZvckVhY2goZnVuY3Rpb24odCl7ITEhPT1uW3RdP2Uuc2V0QXR0cmlidXRlKHQsblt0XSk6ZS5yZW1vdmVBdHRyaWJ1dGUodCl9KSx0LmFycm93RWxlbWVudCYmT2JqZWN0LmtleXModC5hcnJvd1N0eWxlcykubGVuZ3RoJiZoZSh0LmFycm93RWxlbWVudCx0LmFycm93U3R5bGVzKSx0fSxvbkxvYWQ6ZnVuY3Rpb24odCxlLG4saSxvKXt2YXIgcj1KdChvLGUsdCxuLnBvc2l0aW9uRml4ZWQpLHM9JHQobi5wbGFjZW1lbnQscixlLHQsbi5tb2RpZmllcnMuZmxpcC5ib3VuZGFyaWVzRWxlbWVudCxuLm1vZGlmaWVycy5mbGlwLnBhZGRpbmcpO3JldHVybiBlLnNldEF0dHJpYnV0ZSgieC1wbGFjZW1lbnQiLHMpLGhlKGUse3Bvc2l0aW9uOm4ucG9zaXRpb25GaXhlZD8iZml4ZWQiOiJhYnNvbHV0ZSJ9KSxufSxncHVBY2NlbGVyYXRpb246dm9pZCAwfX19LGJlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gcih0LGUpe3ZhciBuPXRoaXMsaT0yPGFyZ3VtZW50cy5sZW5ndGgmJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06e307IWZ1bmN0aW9uKHQsZSl7aWYoISh0IGluc3RhbmNlb2YgZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsciksdGhpcy5zY2hlZHVsZVVwZGF0ZT1mdW5jdGlvbigpe3JldHVybiByZXF1ZXN0QW5pbWF0aW9uRnJhbWUobi51cGRhdGUpfSx0aGlzLnVwZGF0ZT1BdCh0aGlzLnVwZGF0ZS5iaW5kKHRoaXMpKSx0aGlzLm9wdGlvbnM9UXQoe30sci5EZWZhdWx0cyxpKSx0aGlzLnN0YXRlPXtpc0Rlc3Ryb3llZDohMSxpc0NyZWF0ZWQ6ITEsc2Nyb2xsUGFyZW50czpbXX0sdGhpcy5yZWZlcmVuY2U9dCYmdC5qcXVlcnk/dFswXTp0LHRoaXMucG9wcGVyPWUmJmUuanF1ZXJ5P2VbMF06ZSx0aGlzLm9wdGlvbnMubW9kaWZpZXJzPXt9LE9iamVjdC5rZXlzKFF0KHt9LHIuRGVmYXVsdHMubW9kaWZpZXJzLGkubW9kaWZpZXJzKSkuZm9yRWFjaChmdW5jdGlvbih0KXtuLm9wdGlvbnMubW9kaWZpZXJzW3RdPVF0KHt9LHIuRGVmYXVsdHMubW9kaWZpZXJzW3RdfHx7fSxpLm1vZGlmaWVycz9pLm1vZGlmaWVyc1t0XTp7fSl9KSx0aGlzLm1vZGlmaWVycz1PYmplY3Qua2V5cyh0aGlzLm9wdGlvbnMubW9kaWZpZXJzKS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIFF0KHtuYW1lOnR9LG4ub3B0aW9ucy5tb2RpZmllcnNbdF0pfSkuc29ydChmdW5jdGlvbih0LGUpe3JldHVybiB0Lm9yZGVyLWUub3JkZXJ9KSx0aGlzLm1vZGlmaWVycy5mb3JFYWNoKGZ1bmN0aW9uKHQpe3QuZW5hYmxlZCYmT3QodC5vbkxvYWQpJiZ0Lm9uTG9hZChuLnJlZmVyZW5jZSxuLnBvcHBlcixuLm9wdGlvbnMsdCxuLnN0YXRlKX0pLHRoaXMudXBkYXRlKCk7dmFyIG89dGhpcy5vcHRpb25zLmV2ZW50c0VuYWJsZWQ7byYmdGhpcy5lbmFibGVFdmVudExpc3RlbmVycygpLHRoaXMuc3RhdGUuZXZlbnRzRW5hYmxlZD1vfXJldHVybiBxdChyLFt7a2V5OiJ1cGRhdGUiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKCl7aWYoIXRoaXMuc3RhdGUuaXNEZXN0cm95ZWQpe3ZhciB0PXtpbnN0YW5jZTp0aGlzLHN0eWxlczp7fSxhcnJvd1N0eWxlczp7fSxhdHRyaWJ1dGVzOnt9LGZsaXBwZWQ6ITEsb2Zmc2V0czp7fX07dC5vZmZzZXRzLnJlZmVyZW5jZT1KdCh0aGlzLnN0YXRlLHRoaXMucG9wcGVyLHRoaXMucmVmZXJlbmNlLHRoaXMub3B0aW9ucy5wb3NpdGlvbkZpeGVkKSx0LnBsYWNlbWVudD0kdCh0aGlzLm9wdGlvbnMucGxhY2VtZW50LHQub2Zmc2V0cy5yZWZlcmVuY2UsdGhpcy5wb3BwZXIsdGhpcy5yZWZlcmVuY2UsdGhpcy5vcHRpb25zLm1vZGlmaWVycy5mbGlwLmJvdW5kYXJpZXNFbGVtZW50LHRoaXMub3B0aW9ucy5tb2RpZmllcnMuZmxpcC5wYWRkaW5nKSx0Lm9yaWdpbmFsUGxhY2VtZW50PXQucGxhY2VtZW50LHQucG9zaXRpb25GaXhlZD10aGlzLm9wdGlvbnMucG9zaXRpb25GaXhlZCx0Lm9mZnNldHMucG9wcGVyPWVlKHRoaXMucG9wcGVyLHQub2Zmc2V0cy5yZWZlcmVuY2UsdC5wbGFjZW1lbnQpLHQub2Zmc2V0cy5wb3BwZXIucG9zaXRpb249dGhpcy5vcHRpb25zLnBvc2l0aW9uRml4ZWQ/ImZpeGVkIjoiYWJzb2x1dGUiLHQ9aWUodGhpcy5tb2RpZmllcnMsdCksdGhpcy5zdGF0ZS5pc0NyZWF0ZWQ/dGhpcy5vcHRpb25zLm9uVXBkYXRlKHQpOih0aGlzLnN0YXRlLmlzQ3JlYXRlZD0hMCx0aGlzLm9wdGlvbnMub25DcmVhdGUodCkpfX0uY2FsbCh0aGlzKX19LHtrZXk6ImRlc3Ryb3kiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc3RhdGUuaXNEZXN0cm95ZWQ9ITAsb2UodGhpcy5tb2RpZmllcnMsImFwcGx5U3R5bGUiKSYmKHRoaXMucG9wcGVyLnJlbW92ZUF0dHJpYnV0ZSgieC1wbGFjZW1lbnQiKSx0aGlzLnBvcHBlci5zdHlsZS5wb3NpdGlvbj0iIix0aGlzLnBvcHBlci5zdHlsZS50b3A9IiIsdGhpcy5wb3BwZXIuc3R5bGUubGVmdD0iIix0aGlzLnBvcHBlci5zdHlsZS5yaWdodD0iIix0aGlzLnBvcHBlci5zdHlsZS5ib3R0b209IiIsdGhpcy5wb3BwZXIuc3R5bGUud2lsbENoYW5nZT0iIix0aGlzLnBvcHBlci5zdHlsZVtyZSgidHJhbnNmb3JtIildPSIiKSx0aGlzLmRpc2FibGVFdmVudExpc3RlbmVycygpLHRoaXMub3B0aW9ucy5yZW1vdmVPbkRlc3Ryb3kmJnRoaXMucG9wcGVyLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5wb3BwZXIpLHRoaXN9LmNhbGwodGhpcyl9fSx7a2V5OiJlbmFibGVFdmVudExpc3RlbmVycyIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnN0YXRlLmV2ZW50c0VuYWJsZWR8fCh0aGlzLnN0YXRlPWFlKHRoaXMucmVmZXJlbmNlLHRoaXMub3B0aW9ucyx0aGlzLnN0YXRlLHRoaXMuc2NoZWR1bGVVcGRhdGUpKX0uY2FsbCh0aGlzKX19LHtrZXk6ImRpc2FibGVFdmVudExpc3RlbmVycyIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gbGUuY2FsbCh0aGlzKX19XSkscn0oKTtiZS5VdGlscz0oInVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c/d2luZG93Omdsb2JhbCkuUG9wcGVyVXRpbHMsYmUucGxhY2VtZW50cz1kZSxiZS5EZWZhdWx0cz1FZTt2YXIgd2U9ImRyb3Bkb3duIixDZT0iYnMuZHJvcGRvd24iLFRlPSIuIitDZSxTZT0iLmRhdGEtYXBpIixEZT1wLmZuW3dlXSxJZT1uZXcgUmVnRXhwKCIzOHw0MHwyNyIpLEFlPXtISURFOiJoaWRlIitUZSxISURERU46ImhpZGRlbiIrVGUsU0hPVzoic2hvdyIrVGUsU0hPV046InNob3duIitUZSxDTElDSzoiY2xpY2siK1RlLENMSUNLX0RBVEFfQVBJOiJjbGljayIrVGUrU2UsS0VZRE9XTl9EQVRBX0FQSToia2V5ZG93biIrVGUrU2UsS0VZVVBfREFUQV9BUEk6ImtleXVwIitUZStTZX0sT2U9ImRpc2FibGVkIixOZT0ic2hvdyIsa2U9ImRyb3B1cCIsTGU9ImRyb3ByaWdodCIseGU9ImRyb3BsZWZ0IixQZT0iZHJvcGRvd24tbWVudS1yaWdodCIsSGU9InBvc2l0aW9uLXN0YXRpYyIsamU9J1tkYXRhLXRvZ2dsZT0iZHJvcGRvd24iXScsUmU9Ii5kcm9wZG93biBmb3JtIixGZT0iLmRyb3Bkb3duLW1lbnUiLE1lPSIubmF2YmFyLW5hdiIsV2U9Ii5kcm9wZG93bi1tZW51IC5kcm9wZG93bi1pdGVtOm5vdCguZGlzYWJsZWQpOm5vdCg6ZGlzYWJsZWQpIixVZT0idG9wLXN0YXJ0IixCZT0idG9wLWVuZCIscWU9ImJvdHRvbS1zdGFydCIsS2U9ImJvdHRvbS1lbmQiLFFlPSJyaWdodC1zdGFydCIsVmU9ImxlZnQtc3RhcnQiLFllPXtvZmZzZXQ6MCxmbGlwOiEwLGJvdW5kYXJ5OiJzY3JvbGxQYXJlbnQiLHJlZmVyZW5jZToidG9nZ2xlIixkaXNwbGF5OiJkeW5hbWljIn0semU9e29mZnNldDoiKG51bWJlcnxzdHJpbmd8ZnVuY3Rpb24pIixmbGlwOiJib29sZWFuIixib3VuZGFyeToiKHN0cmluZ3xlbGVtZW50KSIscmVmZXJlbmNlOiIoc3RyaW5nfGVsZW1lbnQpIixkaXNwbGF5OiJzdHJpbmcifSxYZT1mdW5jdGlvbigpe2Z1bmN0aW9uIGModCxlKXt0aGlzLl9lbGVtZW50PXQsdGhpcy5fcG9wcGVyPW51bGwsdGhpcy5fY29uZmlnPXRoaXMuX2dldENvbmZpZyhlKSx0aGlzLl9tZW51PXRoaXMuX2dldE1lbnVFbGVtZW50KCksdGhpcy5faW5OYXZiYXI9dGhpcy5fZGV0ZWN0TmF2YmFyKCksdGhpcy5fYWRkRXZlbnRMaXN0ZW5lcnMoKX12YXIgdD1jLnByb3RvdHlwZTtyZXR1cm4gdC50b2dnbGU9ZnVuY3Rpb24oKXtpZighdGhpcy5fZWxlbWVudC5kaXNhYmxlZCYmIXAodGhpcy5fZWxlbWVudCkuaGFzQ2xhc3MoT2UpKXt2YXIgdD1jLl9nZXRQYXJlbnRGcm9tRWxlbWVudCh0aGlzLl9lbGVtZW50KSxlPXAodGhpcy5fbWVudSkuaGFzQ2xhc3MoTmUpO2lmKGMuX2NsZWFyTWVudXMoKSwhZSl7dmFyIG49e3JlbGF0ZWRUYXJnZXQ6dGhpcy5fZWxlbWVudH0saT1wLkV2ZW50KEFlLlNIT1csbik7aWYocCh0KS50cmlnZ2VyKGkpLCFpLmlzRGVmYXVsdFByZXZlbnRlZCgpKXtpZighdGhpcy5faW5OYXZiYXIpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgYmUpdGhyb3cgbmV3IFR5cGVFcnJvcigiQm9vdHN0cmFwJ3MgZHJvcGRvd25zIHJlcXVpcmUgUG9wcGVyLmpzIChodHRwczovL3BvcHBlci5qcy5vcmcvKSIpO3ZhciBvPXRoaXMuX2VsZW1lbnQ7InBhcmVudCI9PT10aGlzLl9jb25maWcucmVmZXJlbmNlP289dDptLmlzRWxlbWVudCh0aGlzLl9jb25maWcucmVmZXJlbmNlKSYmKG89dGhpcy5fY29uZmlnLnJlZmVyZW5jZSwidW5kZWZpbmVkIiE9dHlwZW9mIHRoaXMuX2NvbmZpZy5yZWZlcmVuY2UuanF1ZXJ5JiYobz10aGlzLl9jb25maWcucmVmZXJlbmNlWzBdKSksInNjcm9sbFBhcmVudCIhPT10aGlzLl9jb25maWcuYm91bmRhcnkmJnAodCkuYWRkQ2xhc3MoSGUpLHRoaXMuX3BvcHBlcj1uZXcgYmUobyx0aGlzLl9tZW51LHRoaXMuX2dldFBvcHBlckNvbmZpZygpKX0ib250b3VjaHN0YXJ0ImluIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCYmMD09PXAodCkuY2xvc2VzdChNZSkubGVuZ3RoJiZwKGRvY3VtZW50LmJvZHkpLmNoaWxkcmVuKCkub24oIm1vdXNlb3ZlciIsbnVsbCxwLm5vb3ApLHRoaXMuX2VsZW1lbnQuZm9jdXMoKSx0aGlzLl9lbGVtZW50LnNldEF0dHJpYnV0ZSgiYXJpYS1leHBhbmRlZCIsITApLHAodGhpcy5fbWVudSkudG9nZ2xlQ2xhc3MoTmUpLHAodCkudG9nZ2xlQ2xhc3MoTmUpLnRyaWdnZXIocC5FdmVudChBZS5TSE9XTixuKSl9fX19LHQuc2hvdz1mdW5jdGlvbigpe2lmKCEodGhpcy5fZWxlbWVudC5kaXNhYmxlZHx8cCh0aGlzLl9lbGVtZW50KS5oYXNDbGFzcyhPZSl8fHAodGhpcy5fbWVudSkuaGFzQ2xhc3MoTmUpKSl7dmFyIHQ9e3JlbGF0ZWRUYXJnZXQ6dGhpcy5fZWxlbWVudH0sZT1wLkV2ZW50KEFlLlNIT1csdCksbj1jLl9nZXRQYXJlbnRGcm9tRWxlbWVudCh0aGlzLl9lbGVtZW50KTtwKG4pLnRyaWdnZXIoZSksZS5pc0RlZmF1bHRQcmV2ZW50ZWQoKXx8KHAodGhpcy5fbWVudSkudG9nZ2xlQ2xhc3MoTmUpLHAobikudG9nZ2xlQ2xhc3MoTmUpLnRyaWdnZXIocC5FdmVudChBZS5TSE9XTix0KSkpfX0sdC5oaWRlPWZ1bmN0aW9uKCl7aWYoIXRoaXMuX2VsZW1lbnQuZGlzYWJsZWQmJiFwKHRoaXMuX2VsZW1lbnQpLmhhc0NsYXNzKE9lKSYmcCh0aGlzLl9tZW51KS5oYXNDbGFzcyhOZSkpe3ZhciB0PXtyZWxhdGVkVGFyZ2V0OnRoaXMuX2VsZW1lbnR9LGU9cC5FdmVudChBZS5ISURFLHQpLG49Yy5fZ2V0UGFyZW50RnJvbUVsZW1lbnQodGhpcy5fZWxlbWVudCk7cChuKS50cmlnZ2VyKGUpLGUuaXNEZWZhdWx0UHJldmVudGVkKCl8fChwKHRoaXMuX21lbnUpLnRvZ2dsZUNsYXNzKE5lKSxwKG4pLnRvZ2dsZUNsYXNzKE5lKS50cmlnZ2VyKHAuRXZlbnQoQWUuSElEREVOLHQpKSl9fSx0LmRpc3Bvc2U9ZnVuY3Rpb24oKXtwLnJlbW92ZURhdGEodGhpcy5fZWxlbWVudCxDZSkscCh0aGlzLl9lbGVtZW50KS5vZmYoVGUpLHRoaXMuX2VsZW1lbnQ9bnVsbCwodGhpcy5fbWVudT1udWxsKSE9PXRoaXMuX3BvcHBlciYmKHRoaXMuX3BvcHBlci5kZXN0cm95KCksdGhpcy5fcG9wcGVyPW51bGwpfSx0LnVwZGF0ZT1mdW5jdGlvbigpe3RoaXMuX2luTmF2YmFyPXRoaXMuX2RldGVjdE5hdmJhcigpLG51bGwhPT10aGlzLl9wb3BwZXImJnRoaXMuX3BvcHBlci5zY2hlZHVsZVVwZGF0ZSgpfSx0Ll9hZGRFdmVudExpc3RlbmVycz1mdW5jdGlvbigpe3ZhciBlPXRoaXM7cCh0aGlzLl9lbGVtZW50KS5vbihBZS5DTElDSyxmdW5jdGlvbih0KXt0LnByZXZlbnREZWZhdWx0KCksdC5zdG9wUHJvcGFnYXRpb24oKSxlLnRvZ2dsZSgpfSl9LHQuX2dldENvbmZpZz1mdW5jdGlvbih0KXtyZXR1cm4gdD1sKHt9LHRoaXMuY29uc3RydWN0b3IuRGVmYXVsdCxwKHRoaXMuX2VsZW1lbnQpLmRhdGEoKSx0KSxtLnR5cGVDaGVja0NvbmZpZyh3ZSx0LHRoaXMuY29uc3RydWN0b3IuRGVmYXVsdFR5cGUpLHR9LHQuX2dldE1lbnVFbGVtZW50PWZ1bmN0aW9uKCl7aWYoIXRoaXMuX21lbnUpe3ZhciB0PWMuX2dldFBhcmVudEZyb21FbGVtZW50KHRoaXMuX2VsZW1lbnQpO3QmJih0aGlzLl9tZW51PXQucXVlcnlTZWxlY3RvcihGZSkpfXJldHVybiB0aGlzLl9tZW51fSx0Ll9nZXRQbGFjZW1lbnQ9ZnVuY3Rpb24oKXt2YXIgdD1wKHRoaXMuX2VsZW1lbnQucGFyZW50Tm9kZSksZT1xZTtyZXR1cm4gdC5oYXNDbGFzcyhrZSk/KGU9VWUscCh0aGlzLl9tZW51KS5oYXNDbGFzcyhQZSkmJihlPUJlKSk6dC5oYXNDbGFzcyhMZSk/ZT1RZTp0Lmhhc0NsYXNzKHhlKT9lPVZlOnAodGhpcy5fbWVudSkuaGFzQ2xhc3MoUGUpJiYoZT1LZSksZX0sdC5fZGV0ZWN0TmF2YmFyPWZ1bmN0aW9uKCl7cmV0dXJuIDA8cCh0aGlzLl9lbGVtZW50KS5jbG9zZXN0KCIubmF2YmFyIikubGVuZ3RofSx0Ll9nZXRPZmZzZXQ9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9e307cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMuX2NvbmZpZy5vZmZzZXQ/dC5mbj1mdW5jdGlvbih0KXtyZXR1cm4gdC5vZmZzZXRzPWwoe30sdC5vZmZzZXRzLGUuX2NvbmZpZy5vZmZzZXQodC5vZmZzZXRzLGUuX2VsZW1lbnQpfHx7fSksdH06dC5vZmZzZXQ9dGhpcy5fY29uZmlnLm9mZnNldCx0fSx0Ll9nZXRQb3BwZXJDb25maWc9ZnVuY3Rpb24oKXt2YXIgdD17cGxhY2VtZW50OnRoaXMuX2dldFBsYWNlbWVudCgpLG1vZGlmaWVyczp7b2Zmc2V0OnRoaXMuX2dldE9mZnNldCgpLGZsaXA6e2VuYWJsZWQ6dGhpcy5fY29uZmlnLmZsaXB9LHByZXZlbnRPdmVyZmxvdzp7Ym91bmRhcmllc0VsZW1lbnQ6dGhpcy5fY29uZmlnLmJvdW5kYXJ5fX19O3JldHVybiJzdGF0aWMiPT09dGhpcy5fY29uZmlnLmRpc3BsYXkmJih0Lm1vZGlmaWVycy5hcHBseVN0eWxlPXtlbmFibGVkOiExfSksdH0sYy5falF1ZXJ5SW50ZXJmYWNlPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgdD1wKHRoaXMpLmRhdGEoQ2UpO2lmKHR8fCh0PW5ldyBjKHRoaXMsIm9iamVjdCI9PXR5cGVvZiBlP2U6bnVsbCkscCh0aGlzKS5kYXRhKENlLHQpKSwic3RyaW5nIj09dHlwZW9mIGUpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgdFtlXSl0aHJvdyBuZXcgVHlwZUVycm9yKCdObyBtZXRob2QgbmFtZWQgIicrZSsnIicpO3RbZV0oKX19KX0sYy5fY2xlYXJNZW51cz1mdW5jdGlvbih0KXtpZighdHx8MyE9PXQud2hpY2gmJigia2V5dXAiIT09dC50eXBlfHw5PT09dC53aGljaCkpZm9yKHZhciBlPVtdLnNsaWNlLmNhbGwoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChqZSkpLG49MCxpPWUubGVuZ3RoO248aTtuKyspe3ZhciBvPWMuX2dldFBhcmVudEZyb21FbGVtZW50KGVbbl0pLHI9cChlW25dKS5kYXRhKENlKSxzPXtyZWxhdGVkVGFyZ2V0OmVbbl19O2lmKHQmJiJjbGljayI9PT10LnR5cGUmJihzLmNsaWNrRXZlbnQ9dCkscil7dmFyIGE9ci5fbWVudTtpZihwKG8pLmhhc0NsYXNzKE5lKSYmISh0JiYoImNsaWNrIj09PXQudHlwZSYmL2lucHV0fHRleHRhcmVhL2k=",
    "2020.04.17 15:37": "base64:KDEwKSl7ZT10LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3ZhciBuPU10KHQsInRvcCIpLGk9TXQodCwibGVmdCIpO2UudG9wKz1uLGUubGVmdCs9aSxlLmJvdHRvbSs9bixlLnJpZ2h0Kz1pfWVsc2UgZT10LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpfWNhdGNoKHQpe312YXIgbz17bGVmdDplLmxlZnQsdG9wOmUudG9wLHdpZHRoOmUucmlnaHQtZS5sZWZ0LGhlaWdodDplLmJvdHRvbS1lLnRvcH0scj0iSFRNTCI9PT10Lm5vZGVOYW1lP0J0KHQub3duZXJEb2N1bWVudCk6e30scz1yLndpZHRofHx0LmNsaWVudFdpZHRofHxvLnJpZ2h0LW8ubGVmdCxhPXIuaGVpZ2h0fHx0LmNsaWVudEhlaWdodHx8by5ib3R0b20tby50b3AsbD10Lm9mZnNldFdpZHRoLXMsYz10Lm9mZnNldEhlaWdodC1hO2lmKGx8fGMpe3ZhciBoPU50KHQpO2wtPVd0KGgsIngiKSxjLT1XdChoLCJ5Iiksby53aWR0aC09bCxvLmhlaWdodC09Y31yZXR1cm4gVnQobyl9ZnVuY3Rpb24genQodCxlKXt2YXIgbj0yPGFyZ3VtZW50cy5sZW5ndGgmJnZvaWQgMCE9PWFyZ3VtZW50c1syXSYmYXJndW1lbnRzWzJdLGk9SHQoMTApLG89IkhUTUwiPT09ZS5ub2RlTmFtZSxyPVl0KHQpLHM9WXQoZSksYT1MdCh0KSxsPU50KGUpLGM9cGFyc2VGbG9hdChsLmJvcmRlclRvcFdpZHRoLDEwKSxoPXBhcnNlRmxvYXQobC5ib3JkZXJMZWZ0V2lkdGgsMTApO24mJm8mJihzLnRvcD1NYXRoLm1heChzLnRvcCwwKSxzLmxlZnQ9TWF0aC5tYXgocy5sZWZ0LDApKTt2YXIgdT1WdCh7dG9wOnIudG9wLXMudG9wLWMsbGVmdDpyLmxlZnQtcy5sZWZ0LWgsd2lkdGg6ci53aWR0aCxoZWlnaHQ6ci5oZWlnaHR9KTtpZih1Lm1hcmdpblRvcD0wLHUubWFyZ2luTGVmdD0wLCFpJiZvKXt2YXIgZj1wYXJzZUZsb2F0KGwubWFyZ2luVG9wLDEwKSxkPXBhcnNlRmxvYXQobC5tYXJnaW5MZWZ0LDEwKTt1LnRvcC09Yy1mLHUuYm90dG9tLT1jLWYsdS5sZWZ0LT1oLWQsdS5yaWdodC09aC1kLHUubWFyZ2luVG9wPWYsdS5tYXJnaW5MZWZ0PWR9cmV0dXJuKGkmJiFuP2UuY29udGFpbnMoYSk6ZT09PWEmJiJCT0RZIiE9PWEubm9kZU5hbWUpJiYodT1mdW5jdGlvbih0LGUpe3ZhciBuPTI8YXJndW1lbnRzLmxlbmd0aCYmdm9pZCAwIT09YXJndW1lbnRzWzJdJiZhcmd1bWVudHNbMl0saT1NdChlLCJ0b3AiKSxvPU10KGUsImxlZnQiKSxyPW4/LTE6MTtyZXR1cm4gdC50b3ArPWkqcix0LmJvdHRvbSs9aSpyLHQubGVmdCs9bypyLHQucmlnaHQrPW8qcix0fSh1LGUpKSx1fWZ1bmN0aW9uIFh0KHQpe2lmKCF0fHwhdC5wYXJlbnRFbGVtZW50fHxIdCgpKXJldHVybiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7Zm9yKHZhciBlPXQucGFyZW50RWxlbWVudDtlJiYibm9uZSI9PT1OdChlLCJ0cmFuc2Zvcm0iKTspZT1lLnBhcmVudEVsZW1lbnQ7cmV0dXJuIGV8fGRvY3VtZW50LmRvY3VtZW50RWxlbWVudH1mdW5jdGlvbiBHdCh0LGUsbixpKXt2YXIgbz00PGFyZ3VtZW50cy5sZW5ndGgmJnZvaWQgMCE9PWFyZ3VtZW50c1s0XSYmYXJndW1lbnRzWzRdLHI9e3RvcDowLGxlZnQ6MH0scz1vP1h0KHQpOkZ0KHQsZSk7aWYoInZpZXdwb3J0Ij09PWkpcj1mdW5jdGlvbih0KXt2YXIgZT0xPGFyZ3VtZW50cy5sZW5ndGgmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSYmYXJndW1lbnRzWzFdLG49dC5vd25lckRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxpPXp0KHQsbiksbz1NYXRoLm1heChuLmNsaWVudFdpZHRoLHdpbmRvdy5pbm5lcldpZHRofHwwKSxyPU1hdGgubWF4KG4uY2xpZW50SGVpZ2h0LHdpbmRvdy5pbm5lckhlaWdodHx8MCkscz1lPzA6TXQobiksYT1lPzA6TXQobiwibGVmdCIpO3JldHVybiBWdCh7dG9wOnMtaS50b3AraS5tYXJnaW5Ub3AsbGVmdDphLWkubGVmdCtpLm1hcmdpbkxlZnQsd2lkdGg6byxoZWlnaHQ6cn0pfShzLG8pO2Vsc2V7dmFyIGE9dm9pZCAwOyJzY3JvbGxQYXJlbnQiPT09aT8iQk9EWSI9PT0oYT1MdChrdChlKSkpLm5vZGVOYW1lJiYoYT10Lm93bmVyRG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KTphPSJ3aW5kb3ciPT09aT90Lm93bmVyRG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50Omk7dmFyIGw9enQoYSxzLG8pO2lmKCJIVE1MIiE9PWEubm9kZU5hbWV8fGZ1bmN0aW9uIHQoZSl7dmFyIG49ZS5ub2RlTmFtZTtpZigiQk9EWSI9PT1ufHwiSFRNTCI9PT1uKXJldHVybiExO2lmKCJmaXhlZCI9PT1OdChlLCJwb3NpdGlvbiIpKXJldHVybiEwO3ZhciBpPWt0KGUpO3JldHVybiEhaSYmdChpKX0ocykpcj1sO2Vsc2V7dmFyIGM9QnQodC5vd25lckRvY3VtZW50KSxoPWMuaGVpZ2h0LHU9Yy53aWR0aDtyLnRvcCs9bC50b3AtbC5tYXJnaW5Ub3Asci5ib3R0b209aCtsLnRvcCxyLmxlZnQrPWwubGVmdC1sLm1hcmdpbkxlZnQsci5yaWdodD11K2wubGVmdH19dmFyIGY9Im51bWJlciI9PXR5cGVvZihuPW58fDApO3JldHVybiByLmxlZnQrPWY/bjpuLmxlZnR8fDAsci50b3ArPWY/bjpuLnRvcHx8MCxyLnJpZ2h0LT1mP246bi5yaWdodHx8MCxyLmJvdHRvbS09Zj9uOm4uYm90dG9tfHwwLHJ9ZnVuY3Rpb24gJHQodCxlLGksbixvKXt2YXIgcj01PGFyZ3VtZW50cy5sZW5ndGgmJnZvaWQgMCE9PWFyZ3VtZW50c1s1XT9hcmd1bWVudHNbNV06MDtpZigtMT09PXQuaW5kZXhPZigiYXV0byIpKXJldHVybiB0O3ZhciBzPUd0KGksbixyLG8pLGE9e3RvcDp7d2lkdGg6cy53aWR0aCxoZWlnaHQ6ZS50b3Atcy50b3B9LHJpZ2h0Ont3aWR0aDpzLnJpZ2h0LWUucmlnaHQsaGVpZ2h0OnMuaGVpZ2h0fSxib3R0b206e3dpZHRoOnMud2lkdGgsaGVpZ2h0OnMuYm90dG9tLWUuYm90dG9tfSxsZWZ0Ont3aWR0aDplLmxlZnQtcy5sZWZ0LGhlaWdodDpzLmhlaWdodH19LGw9T2JqZWN0LmtleXMoYSkubWFwKGZ1bmN0aW9uKHQpe3JldHVybiBRdCh7a2V5OnR9LGFbdF0se2FyZWE6KGU9YVt0XSxlLndpZHRoKmUuaGVpZ2h0KX0pO3ZhciBlfSkuc29ydChmdW5jdGlvbih0LGUpe3JldHVybiBlLmFyZWEtdC5hcmVhfSksYz1sLmZpbHRlcihmdW5jdGlvbih0KXt2YXIgZT10LndpZHRoLG49dC5oZWlnaHQ7cmV0dXJuIGU+PWkuY2xpZW50V2lkdGgmJm4+PWkuY2xpZW50SGVpZ2h0fSksaD0wPGMubGVuZ3RoP2NbMF0ua2V5OmxbMF0ua2V5LHU9dC5zcGxpdCgiLSIpWzFdO3JldHVybiBoKyh1PyItIit1OiIiKX1mdW5jdGlvbiBKdCh0LGUsbil7dmFyIGk9Mzxhcmd1bWVudHMubGVuZ3RoJiZ2b2lkIDAhPT1hcmd1bWVudHNbM10/YXJndW1lbnRzWzNdOm51bGw7cmV0dXJuIHp0KG4saT9YdChlKTpGdChlLG4pLGkpfWZ1bmN0aW9uIFp0KHQpe3ZhciBlPXQub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHQpLG49cGFyc2VGbG9hdChlLm1hcmdpblRvcHx8MCkrcGFyc2VGbG9hdChlLm1hcmdpbkJvdHRvbXx8MCksaT1wYXJzZUZsb2F0KGUubWFyZ2luTGVmdHx8MCkrcGFyc2VGbG9hdChlLm1hcmdpblJpZ2h0fHwwKTtyZXR1cm57d2lkdGg6dC5vZmZzZXRXaWR0aCtpLGhlaWdodDp0Lm9mZnNldEhlaWdodCtufX1mdW5jdGlvbiB0ZSh0KXt2YXIgZT17bGVmdDoicmlnaHQiLHJpZ2h0OiJsZWZ0Iixib3R0b206InRvcCIsdG9wOiJib3R0b20ifTtyZXR1cm4gdC5yZXBsYWNlKC9sZWZ0fHJpZ2h0fGJvdHRvbXx0b3AvZyxmdW5jdGlvbih0KXtyZXR1cm4gZVt0XX0pfWZ1bmN0aW9uIGVlKHQsZSxuKXtuPW4uc3BsaXQoIi0iKVswXTt2YXIgaT1adCh0KSxvPXt3aWR0aDppLndpZHRoLGhlaWdodDppLmhlaWdodH0scj0tMSE9PVsicmlnaHQiLCJsZWZ0Il0uaW5kZXhPZihuKSxzPXI/InRvcCI6ImxlZnQiLGE9cj8ibGVmdCI6InRvcCIsbD1yPyJoZWlnaHQiOiJ3aWR0aCIsYz1yPyJ3aWR0aCI6ImhlaWdodCI7cmV0dXJuIG9bc109ZVtzXStlW2xdLzItaVtsXS8yLG9bYV09bj09PWE/ZVthXS1pW2NdOmVbdGUoYSldLG99ZnVuY3Rpb24gbmUodCxlKXtyZXR1cm4gQXJyYXkucHJvdG90eXBlLmZpbmQ/dC5maW5kKGUpOnQuZmlsdGVyKGUpWzBdfWZ1bmN0aW9uIGllKHQsbixlKXtyZXR1cm4odm9pZCAwPT09ZT90OnQuc2xpY2UoMCxmdW5jdGlvbih0LGUsbil7aWYoQXJyYXkucHJvdG90eXBlLmZpbmRJbmRleClyZXR1cm4gdC5maW5kSW5kZXgoZnVuY3Rpb24odCl7cmV0dXJuIHRbZV09PT1ufSk7dmFyIGk9bmUodCxmdW5jdGlvbih0KXtyZXR1cm4gdFtlXT09PW59KTtyZXR1cm4gdC5pbmRleE9mKGkpfSh0LCJuYW1lIixlKSkpLmZvckVhY2goZnVuY3Rpb24odCl7dC5mdW5jdGlvbiYmY29uc29sZS53YXJuKCJgbW9kaWZpZXIuZnVuY3Rpb25gIGlzIGRlcHJlY2F0ZWQsIHVzZSBgbW9kaWZpZXIuZm5gISIpO3ZhciBlPXQuZnVuY3Rpb258fHQuZm47dC5lbmFibGVkJiZPdChlKSYmKG4ub2Zmc2V0cy5wb3BwZXI9VnQobi5vZmZzZXRzLnBvcHBlciksbi5vZmZzZXRzLnJlZmVyZW5jZT1WdChuLm9mZnNldHMucmVmZXJlbmNlKSxuPWUobix0KSl9KSxufWZ1bmN0aW9uIG9lKHQsbil7cmV0dXJuIHQuc29tZShmdW5jdGlvbih0KXt2YXIgZT10Lm5hbWU7cmV0dXJuIHQuZW5hYmxlZCYmZT09PW59KX1mdW5jdGlvbiByZSh0KXtmb3IodmFyIGU9WyExLCJtcyIsIldlYmtpdCIsIk1veiIsIk8iXSxuPXQuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrdC5zbGljZSgxKSxpPTA7aTxlLmxlbmd0aDtpKyspe3ZhciBvPWVbaV0scj1vPyIiK28rbjp0O2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgZG9jdW1lbnQuYm9keS5zdHlsZVtyXSlyZXR1cm4gcn1yZXR1cm4gbnVsbH1mdW5jdGlvbiBzZSh0KXt2YXIgZT10Lm93bmVyRG9jdW1lbnQ7cmV0dXJuIGU/ZS5kZWZhdWx0Vmlldzp3aW5kb3d9ZnVuY3Rpb24gYWUodCxlLG4saSl7bi51cGRhdGVCb3VuZD1pLHNlKHQpLmFkZEV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsbi51cGRhdGVCb3VuZCx7cGFzc2l2ZTohMH0pO3ZhciBvPUx0KHQpO3JldHVybiBmdW5jdGlvbiB0KGUsbixpLG8pe3ZhciByPSJCT0RZIj09PWUubm9kZU5hbWUscz1yP2Uub3duZXJEb2N1bWVudC5kZWZhdWx0VmlldzplO3MuYWRkRXZlbnRMaXN0ZW5lcihuLGkse3Bhc3NpdmU6ITB9KSxyfHx0KEx0KHMucGFyZW50Tm9kZSksbixpLG8pLG8ucHVzaChzKX0obywic2Nyb2xsIixuLnVwZGF0ZUJvdW5kLG4uc2Nyb2xsUGFyZW50cyksbi5zY3JvbGxFbGVtZW50PW8sbi5ldmVudHNFbmFibGVkPSEwLG59ZnVuY3Rpb24gbGUoKXt2YXIgdCxlO3RoaXMuc3RhdGUuZXZlbnRzRW5hYmxlZCYmKGNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMuc2NoZWR1bGVVcGRhdGUpLHRoaXMuc3RhdGU9KHQ9dGhpcy5yZWZlcmVuY2UsZT10aGlzLnN0YXRlLHNlKHQpLnJlbW92ZUV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsZS51cGRhdGVCb3VuZCksZS5zY3JvbGxQYXJlbnRzLmZvckVhY2goZnVuY3Rpb24odCl7dC5yZW1vdmVFdmVudExpc3RlbmVyKCJzY3JvbGwiLGUudXBkYXRlQm91bmQpfSksZS51cGRhdGVCb3VuZD1udWxsLGUuc2Nyb2xsUGFyZW50cz1bXSxlLnNjcm9sbEVsZW1lbnQ9bnVsbCxlLmV2ZW50c0VuYWJsZWQ9ITEsZSkpfWZ1bmN0aW9uIGNlKHQpe3JldHVybiIiIT09dCYmIWlzTmFOKHBhcnNlRmxvYXQodCkpJiZpc0Zpbml0ZSh0KX1mdW5jdGlvbiBoZShuLGkpe09iamVjdC5rZXlzKGkpLmZvckVhY2goZnVuY3Rpb24odCl7dmFyIGU9IiI7LTEhPT1bIndpZHRoIiwiaGVpZ2h0IiwidG9wIiwicmlnaHQiLCJib3R0b20iLCJsZWZ0Il0uaW5kZXhPZih0KSYmY2UoaVt0XSkmJihlPSJweCIpLG4uc3R5bGVbdF09aVt0XStlfSl9dmFyIHVlPVR0JiYvRmlyZWZveC9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7ZnVuY3Rpb24gZmUodCxlLG4pe3ZhciBpPW5lKHQsZnVuY3Rpb24odCl7cmV0dXJuIHQubmFtZT09PWV9KSxvPSEhaSYmdC5zb21lKGZ1bmN0aW9uKHQpe3JldHVybiB0Lm5hbWU9PT1uJiZ0LmVuYWJsZWQmJnQub3JkZXI8aS5vcmRlcn0pO2lmKCFvKXt2YXIgcj0iYCIrZSsiYCIscz0iYCIrbisiYCI7Y29uc29sZS53YXJuKHMrIiBtb2RpZmllciBpcyByZXF1aXJlZCBieSAiK3IrIiBtb2RpZmllciBpbiBvcmRlciB0byB3b3JrLCBiZSBzdXJlIHRvIGluY2x1ZGUgaXQgYmVmb3JlICIrcisiISIpfXJldHVybiBvfXZhciBkZT1bImF1dG8tc3RhcnQiLCJhdXRvIiwiYXV0by1lbmQiLCJ0b3Atc3RhcnQiLCJ0b3AiLCJ0b3AtZW5kIiwicmlnaHQtc3RhcnQiLCJyaWdodCIsInJpZ2h0LWVuZCIsImJvdHRvbS1lbmQiLCJib3R0b20iLCJib3R0b20tc3RhcnQiLCJsZWZ0LWVuZCIsImxlZnQiLCJsZWZ0LXN0YXJ0Il0scGU9ZGUuc2xpY2UoMyk7ZnVuY3Rpb24gbWUodCl7dmFyIGU9MTxhcmd1bWVudHMubGVuZ3RoJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0mJmFyZ3VtZW50c1sxXSxuPXBlLmluZGV4T2YodCksaT1wZS5zbGljZShuKzEpLmNvbmNhdChwZS5zbGljZSgwLG4pKTtyZXR1cm4gZT9pLnJldmVyc2UoKTppfXZhciBnZT0iZmxpcCIsX2U9ImNsb2Nrd2lzZSIsdmU9ImNvdW50ZXJjbG9ja3dpc2UiO2Z1bmN0aW9uIHllKHQsbyxyLGUpe3ZhciBzPVswLDBdLGE9LTEhPT1bInJpZ2h0IiwibGVmdCJdLmluZGV4T2YoZSksbj10LnNwbGl0KC8oXCt8XC0pLykubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0LnRyaW0oKX0pLGk9bi5pbmRleE9mKG5lKG4sZnVuY3Rpb24odCl7cmV0dXJuLTEhPT10LnNlYXJjaCgvLHxccy8pfSkpO25baV0mJi0xPT09bltpXS5pbmRleE9mKCIsIikmJmNvbnNvbGUud2FybigiT2Zmc2V0cyBzZXBhcmF0ZWQgYnkgd2hpdGUgc3BhY2UocykgYXJlIGRlcHJlY2F0ZWQsIHVzZSBhIGNvbW1hICgsKSBpbnN0ZWFkLiIpO3ZhciBsPS9ccyosXHMqfFxzKy8sYz0tMSE9PWk/W24uc2xpY2UoMCxpKS5jb25jYXQoW25baV0uc3BsaXQobClbMF1dKSxbbltpXS5zcGxpdChsKVsxXV0uY29uY2F0KG4uc2xpY2UoaSsxKSldOltuXTtyZXR1cm4oYz1jLm1hcChmdW5jdGlvbih0LGUpe3ZhciBuPSgxPT09ZT8hYTphKT8iaGVpZ2h0Ijoid2lkdGgiLGk9ITE7cmV0dXJuIHQucmVkdWNlKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIiI9PT10W3QubGVuZ3RoLTFdJiYtMSE9PVsiKyIsIi0iXS5pbmRleE9mKGUpPyh0W3QubGVuZ3RoLTFdPWUsaT0hMCx0KTppPyh0W3QubGVuZ3RoLTFdKz1lLGk9ITEsdCk6dC5jb25jYXQoZSl9LFtdKS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKHQsZSxuLGkpe3ZhciBvPXQubWF0Y2goLygoPzpcLXxcKyk/XGQqXC4/XGQqKSguKikvKSxyPStvWzFdLHM9b1syXTtpZighcilyZXR1cm4gdDtpZigwIT09cy5pbmRleE9mKCIlIikpcmV0dXJuInZoIiE9PXMmJiJ2dyIhPT1zP3I6KCJ2aCI9PT1zP01hdGgubWF4KGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQsd2luZG93LmlubmVySGVpZ2h0fHwwKTpNYXRoLm1heChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGgsd2luZG93LmlubmVyV2lkdGh8fDApKS8xMDAqcjt2YXIgYT12b2lkIDA7c3dpdGNoKHMpe2Nhc2UiJXAiOmE9bjticmVhaztjYXNlIiUiOmNhc2UiJXIiOmRlZmF1bHQ6YT1pfXJldHVybiBWdChhKVtlXS8xMDAqcn0odCxuLG8scil9KX0pKS5mb3JFYWNoKGZ1bmN0aW9uKG4saSl7bi5mb3JFYWNoKGZ1bmN0aW9uKHQsZSl7Y2UodCkmJihzW2ldKz10KigiLSI9PT1uW2UtMV0/LTE6MSkpfSl9KSxzfXZhciBFZT17cGxhY2VtZW50OiJib3R0b20iLHBvc2l0aW9uRml4ZWQ6ITEsZXZlbnRzRW5hYmxlZDohMCxyZW1vdmVPbkRlc3Ryb3k6ITEsb25DcmVhdGU6ZnVuY3Rpb24oKXt9LG9uVXBkYXRlOmZ1bmN0aW9uKCl7fSxtb2RpZmllcnM6e3NoaWZ0OntvcmRlcjoxMDAsZW5hYmxlZDohMCxmbjpmdW5jdGlvbih0KXt2YXIgZT10LnBsYWNlbWVudCxuPWUuc3BsaXQoIi0iKVswXSxpPWUuc3BsaXQoIi0iKVsxXTtpZihpKXt2YXIgbz10Lm9mZnNldHMscj1vLnJlZmVyZW5jZSxzPW8ucG9wcGVyLGE9LTEhPT1bImJvdHRvbSIsInRvcCJdLmluZGV4T2YobiksbD1hPyJsZWZ0IjoidG9wIixjPWE/IndpZHRoIjoiaGVpZ2h0IixoPXtzdGFydDpLdCh7fSxsLHJbbF0pLGVuZDpLdCh7fSxsLHJbbF0rcltjXS1zW2NdKX07dC5vZmZzZXRzLnBvcHBlcj1RdCh7fSxzLGhbaV0pfXJldHVybiB0fX0sb2Zmc2V0OntvcmRlcjoyMDAsZW5hYmxlZDohMCxmbjpmdW5jdGlvbih0LGUpe3ZhciBuPWUub2Zmc2V0LGk9dC5wbGFjZW1lbnQsbz10Lm9mZnNldHMscj1vLnBvcHBlcixzPW8ucmVmZXJlbmNlLGE9aS5zcGxpdCgiLSIpWzBdLGw9dm9pZCAwO3JldHVybiBsPWNlKCtuKT9bK24sMF06eWUobixyLHMsYSksImxlZnQiPT09YT8oci50b3ArPWxbMF0sci5sZWZ0LT1sWzFdKToicmlnaHQiPT09YT8oci50b3ArPWxbMF0sci5sZWZ0Kz1sWzFdKToidG9wIj09PWE/KHIubGVmdCs9bFswXSxyLnRvcC09bFsxXSk6ImJvdHRvbSI9PT1hJiYoci5sZWZ0Kz1sWzBdLHIudG9wKz1sWzFdKSx0LnBvcHBlcj1yLHR9LG9mZnNldDowfSxwcmV2ZW50T3ZlcmZsb3c6e29yZGVyOjMwMCxlbmFibGVkOiEwLGZuOmZ1bmN0aW9uKHQsaSl7dmFyIGU9aS5ib3VuZGFyaWVzRWxlbWVudHx8anQodC5pbnN0YW5jZS5wb3BwZXIpO3QuaW5zdGFuY2UucmVmZXJlbmNlPT09ZSYmKGU9anQoZSkpO3ZhciBuPXJlKCJ0cmFuc2Zvcm0iKSxvPXQuaW5zdGFuY2UucG9wcGVyLnN0eWxlLHI9by50b3Ascz1vLmxlZnQsYT1vW25dO28udG9wPSIiLG8ubGVmdD0iIixvW25dPSIiO3ZhciBsPUd0KHQuaW5zdGFuY2UucG9wcGVyLHQuaW5zdGFuY2UucmVmZXJlbmNlLGkucGFkZGluZyxlLHQucG9zaXRpb25GaXhlZCk7by50b3A9cixvLmxlZnQ9cyxvW25dPWEsaS5ib3VuZGFyaWVzPWw7dmFyIGM9aS5wcmlvcml0eSxoPXQub2Zmc2V0cy5wb3BwZXIsdT17cHJpbWFyeTpmdW5jdGlvbih0KXt2YXIgZT1oW3RdO3JldHVybiBoW3RdPGxbdF0mJiFpLmVzY2FwZVdpdGhSZWZlcmVuY2UmJihlPU1hdGgubWF4KGhbdF0sbFt0XSkpLEt0KHt9LHQsZSl9LHNlY29uZGFyeTpmdW5jdGlvbih0KXt2YXIgZT0icmlnaHQiPT09dD8ibGVmdCI6InRvcCIsbj1oW2VdO3JldHVybiBoW3RdPmxbdF0mJiFpLmVzY2FwZVdpdGhSZWZlcmVuY2UmJihuPU1hdGgubWluKGhbZV0sbFt0XS0oInJpZ2h0Ij09PXQ/aC53aWR0aDpoLmhlaWdodCkpKSxLdCh7fSxlLG4pfX07cmV0dXJuIGMuZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgZT0tMSE9PVsibGVmdCIsInRvcCJdLmluZGV4T2YodCk/InByaW1hcnkiOiJzZWNvbmRhcnkiO2g9UXQoe30saCx1W2VdKHQpKX0pLHQub2Zmc2V0cy5wb3BwZXI9aCx0fSxwcmlvcml0eTpbImxlZnQiLCJyaWdodCIsInRvcCIsImJvdHRvbSJdLHBhZGRpbmc6NSxib3VuZGFyaWVzRWxlbWVudDoic2Nyb2xsUGFyZW50In0sa2VlcFRvZ2V0aGVyOntvcmRlcjo0MDAsZW5hYmxlZDohMCxmbjpmdW5jdGlvbih0KXt2YXIgZT10Lm9mZnNldHMsbj1lLnBvcHBlcixpPWUucmVmZXJlbmNlLG89dC5wbGFjZW1lbnQuc3BsaXQoIi0iKVswXSxyPU1hdGguZmxvb3Iscz0tMSE9PVsidG9wIiwiYm90dG9tIl0uaW5kZXhPZihvKSxhPXM/InJpZ2h0IjoiYm90dG9tIixsPXM/ImxlZnQiOiJ0b3AiLGM9cz8id2lkdGgiOiJoZWlnaHQiO3JldHVybiBuW2FdPHIoaVtsXSkmJih0Lm9mZnNldHMucG9wcGVyW2xdPXIoaVtsXSktbltjXSksbltsXT5yKGlbYV0pJiYodC5vZmZzZXRzLnBvcHBlcltsXT1yKGlbYV0pKSx0fX0sYXJyb3c6e29yZGVyOjUwMCxlbmFibGVkOiEwLGZuOmZ1bmN0aW9uKHQsZSl7dmFyIG47aWYoIWZlKHQuaW5zdGFuY2UubW9kaWZpZXJzLCJhcnJvdyIsImtlZXBUb2dldGhlciIpKXJldHVybiB0O3ZhciBpPWUuZWxlbWVudDtpZigic3RyaW5nIj09dHlwZW9mIGkpe2lmKCEoaT10Lmluc3RhbmNlLnBvcHBlci5xdWVyeVNlbGVjdG9yKGkpKSlyZXR1cm4gdH1lbHNlIGlmKCF0Lmluc3RhbmNlLnBvcHBlci5jb250YWlucyhpKSlyZXR1cm4gY29uc29sZS53YXJuKCJXQVJOSU5HOiBgYXJyb3cuZWxlbWVudGAgbXVzdCBiZSBjaGlsZCBvZiBpdHMgcG9wcGVyIGVsZW1lbnQhIiksdDt2YXIgbz10LnBsYWNlbWVudC5zcGxpdCgiLSIpWzBdLHI9dC5vZmZzZXRzLHM9ci5wb3BwZXIsYT1yLnJlZmVyZW5jZSxsPS0xIT09WyJsZWZ0IiwicmlnaHQiXS5pbmRleE9mKG8pLGM9bD8iaGVpZ2h0Ijoid2lkdGgiLGg9bD8iVG9wIjoiTGVmdCIsdT1oLnRvTG93ZXJDYXNlKCksZj1sPyJsZWZ0IjoidG9wIixkPWw/ImJvdHRvbSI6InJpZ2h0IixwPVp0KGkpW2NdO2FbZF0tcDxzW3VdJiYodC5vZmZzZXRzLnBvcHBlclt1XS09c1t1XS0oYVtkXS1wKSksYVt1XStwPnNbZF0mJih0Lm9mZnNldHMucG9wcGVyW3VdKz1hW3VdK3Atc1tkXSksdC5vZmZzZXRzLnBvcHBlcj1WdCh0Lm9mZnNldHMucG9wcGVyKTt2YXIgbT1hW3VdK2FbY10vMi1wLzIsZz1OdCh0Lmluc3RhbmNlLnBvcHBlciksXz1wYXJzZUZsb2F0KGdbIm1hcmdpbiIraF0sMTApLHY9cGFyc2VGbG9hdChnWyJib3JkZXIiK2grIldpZHRoIl0sMTApLHk9bS10Lm9mZnNldHMucG9wcGVyW3VdLV8tdjtyZXR1cm4geT1NYXRoLm1heChNYXRoLm1pbihzW2NdLXAseSksMCksdC5hcnJvd0VsZW1lbnQ9aSx0Lm9mZnNldHMuYXJyb3c9KEt0KG49e30sdSxNYXRoLnJvdW5kKHkpKSxLdChuLGYsIiIpLG4pLHR9LGVsZW1lbnQ6Ilt4LWFycm93XSJ9LGZsaXA6e29yZGVyOjYwMCxlbmFibGVkOiEwLGZuOmZ1bmN0aW9uKHAsbSl7aWYob2UocC5pbnN0YW5jZS5tb2RpZmllcnMsImlubmVyIikpcmV0dXJuIHA7aWYocC5mbGlwcGVkJiZwLnBsYWNlbWVudD09PXAub3JpZ2luYWxQbGFjZW1lbnQpcmV0dXJuIHA7dmFyIGc9R3QocC5pbnN0YW5jZS5wb3BwZXIscC5pbnN0YW5jZS5yZWZlcmVuY2UsbS5wYWRkaW5nLG0uYm91bmRhcmllc0VsZW1lbnQscC5wb3NpdGlvbkZpeGVkKSxfPXAucGxhY2VtZW50LnNwbGl0KCItIilbMF0sdj10ZShfKSx5PXAucGxhY2VtZW50LnNwbGl0KCItIilbMV18fCIiLEU9W107c3dpdGNoKG0uYmVoYXZpb3Ipe2Nhc2UgZ2U6RT1bXyx2XTticmVhaztjYXNlIF9lOkU9bWUoXyk7YnJlYWs7Y2FzZSB2ZTpFPW1lKF8sITApO2JyZWFrO2RlZmF1bHQ6RT1tLmJlaGF2aW9yfXJldHVybiBFLmZvckVhY2goZnVuY3Rpb24odCxlKXtpZihfIT09dHx8RS5sZW5ndGg9PT1lKzEpcmV0dXJuIHA7Xz1wLnBsYWNlbWVudC5zcGxpdCgiLSIpWzBdLHY9dGUoXyk7dmFyIG4saT1wLm9mZnNldHMucG9wcGVyLG89cC5vZmZzZXRzLnJlZmVyZW5jZSxyPU1hdGguZmxvb3Iscz0ibGVmdCI9PT1fJiZyKGkucmlnaHQpPnIoby5sZWZ0KXx8InJpZ2h0Ij09PV8mJnIoaS5sZWZ0KTxyKG8ucmlnaHQpfHwidG9wIj09PV8mJnIoaS5ib3R0b20pPnIoby50b3ApfHwiYm90dG9tIj09PV8mJnIoaS50b3ApPHIoby5ib3R0b20pLGE9cihpLmxlZnQpPHIoZy5sZWZ0KSxsPXIoaS5yaWdodCk+cihnLnJpZ2h0KSxjPXIoaS50b3ApPHIoZy50b3ApLGg9cihpLmJvdHRvbSk+cihnLmJvdHRvbSksdT0ibGVmdCI9PT1fJiZhfHwicmlnaHQiPT09XyYmbHx8InRvcCI9PT1fJiZjfHwiYm90dG9tIj09PV8mJmgsZj0tMSE9PVsidG9wIiwiYm90dG9tIl0uaW5kZXhPZihfKSxkPSEhbS5mbGlwVmFyaWF0aW9ucyYmKGYmJiJzdGFydCI9PT15JiZhfHxmJiYiZW5kIj09PXkmJmx8fCFmJiYic3RhcnQiPT09eSYmY3x8IWYmJiJlbmQiPT09eSYmaCk7KHN8fHV8fGQpJiYocC5mbGlwcGVkPSEwLChzfHx1KSYmKF89RVtlKzFdKSxkJiYoeT0iZW5kIj09PShuPXkpPyJzdGFydCI6InN0YXJ0Ij09PW4/ImVuZCI6bikscC5wbGFjZW1lbnQ9XysoeT8iLSIreToiIikscC5vZmZzZXRzLnBvcHBlcj1RdCh7fSxwLm9mZnNldHMucG9wcGVyLGVlKHAuaW5zdGFuY2UucG9wcGVyLHAub2Zmc2V0cy5yZWZlcmVuY2UscC5wbGFjZW1lbnQpKSxwPWllKHAuaW5zdGFuY2UubW9kaWZpZXJzLHAsImZsaXAiKSl9KSxwfSxiZWhhdmlvcjoiZmxpcCIscGFkZGluZzo1LGJvdW5kYXJpZXNFbGVtZW50OiJ2aWV3cG9ydCJ9LGlubmVyOntvcmRlcjo3MDAsZW5hYmxlZDohMSxmbjpmdW5jdGlvbih0KXt2YXIgZT10LnBsYWNlbWVudCxuPWUuc3BsaXQoIi0iKVswXSxpPXQub2Zmc2V0cyxvPWkucG9wcGVyLHI9aS5yZWZlcmVuY2Uscz0tMSE9PVsibGVmdCIsInJpZ2h0Il0uaW5kZXhPZihuKSxhPS0xPT09WyJ0b3AiLCJsZWZ0Il0uaW5kZXhPZihuKTtyZXR1cm4gb1tzPyJsZWZ0IjoidG9wIl09cltuXS0oYT9vW3M/IndpZHRoIjoiaGVpZ2h0Il06MCksdC5wbGFjZW1lbnQ9dGUoZSksdC5vZmZzZXRzLnBvcHBlcj1WdChvKSx0fX0saGlkZTp7b3JkZXI6ODAwLGVuYWJsZWQ6ITAsZm46ZnVuY3Rpb24odCl7aWYoIWZlKHQuaW5zdGFuY2UubW9kaWZpZXJzLCJoaWRlIiwicHJldmVudE92ZXJmbG93IikpcmV0dXJuIHQ7dmFyIGU9dC5vZmZzZXRzLnJlZmVyZW5jZSxuPW5lKHQuaW5zdGFuY2UubW9kaWZpZXJzLGZ1bmN0aW9uKHQpe3JldHVybiJwcmV2ZW50T3ZlcmZsb3ciPT09dC5uYW1lfSkuYm91bmRhcmllcztpZihlLmJvdHRvbTxuLnRvcHx8ZS5sZWZ0Pm4ucmlnaHR8fGUudG9wPm4uYm90dG9tfHxlLnJpZ2h0PG4ubGVmdCl7aWYoITA9PT10LmhpZGUpcmV0dXJuIHQ7dC5oaWRlPSEwLHQuYXR0cmlidXRlc1sieC1vdXQtb2YtYm91bmRhcmllcyJdPSIifWVsc2V7aWYoITE9PT10LmhpZGUpcmV0dXJuIHQ7dC5oaWRlPSExLHQuYXR0cmlidXRlc1sieC1vdXQtb2YtYm91bmRhcmllcyJdPSExfXJldHVybiB0fX0sY29tcHV0ZVN0eWxlOntvcmRlcjo4NTAsZW5hYmxlZDohMCxmbjpmdW5jdGlvbih0LGUpe3ZhciBuPWUueCxpPWUueSxvPXQub2Zmc2V0cy5wb3BwZXIscj1uZSh0Lmluc3RhbmNlLm1vZGlmaWVycyxmdW5jdGlvbih0KXtyZXR1cm4iYXBwbHlTdHlsZSI9PT10Lm5hbWV9KS5ncHVBY2NlbGVyYXRpb247dm9pZCAwIT09ciYmY29uc29sZS53YXJuKCJXQVJOSU5HOiBgZ3B1QWNjZWxlcmF0aW9uYCBvcHRpb24gbW92ZWQgdG8gYGNvbXB1dGVTdHlsZWAgbW9kaWZpZXIgYW5kIHdpbGwgbm90IGJlIHN1cHBvcnRlZCBpbiBmdXR1cmUgdmVyc2lvbnMgb2YgUG9wcGVyLmpzISIpO3ZhciBzLGEsbCxjLGgsdSxmLGQscCxtLGcsXyx2LHksRT12b2lkIDAhPT1yP3I6ZS5ncHVBY2NlbGVyYXRpb24sYj1qdCh0Lmluc3RhbmNlLnBvcHBlciksdz1ZdChiKSxDPXtwb3NpdGlvbjpvLnBvc2l0aW9ufSxUPShzPXQsYT13aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbzwyfHwhdWUsbD1zLm9mZnNldHMsYz1sLnBvcHBlcixoPWwucmVmZXJlbmNlLHU9TWF0aC5yb3VuZCxmPU1hdGguZmxvb3IsZD1mdW5jdGlvbih0KXtyZXR1cm4gdH0scD11KGgud2lkdGgpLG09dShjLndpZHRoKSxnPS0xIT09WyJsZWZ0IiwicmlnaHQiXS5pbmRleE9mKHMucGxhY2VtZW50KSxfPS0xIT09cy5wbGFjZW1lbnQuaW5kZXhPZigiLSIpLHk9YT91OmQse2xlZnQ6KHY9YT9nfHxffHxwJTI9PW0lMj91OmY6ZCkocCUyPT0xJiZtJTI9PTEmJiFfJiZhP2MubGVmdC0xOmMubGVmdCksdG9wOnkoYy50b3ApLGJvdHRvbTp5KGMuYm90dG9tKSxyaWdodDp2KGMucmlnaHQpfSksUz0iYm90dG9tIj09PW4/InRvcCI6ImJvdHRvbSIsRD0icmlnaHQiPT09aT8ibGVmdCI6InJpZ2h0IixJPXJlKCJ0cmFuc2Zvcm0iKSxBPXZvaWQgMCxPPXZvaWQgMDtpZihPPSJib3R0b20iPT09Uz8iSFRNTCI9PT1iLm5vZGVOYW1lPy1iLmNsaWVudEhlaWdodCtULmJvdHRvbTotdy5oZWlnaHQrVC5ib3R0b206VC50b3AsQT0icmlnaHQiPT09RD8iSFRNTCI9PT1iLm5vZGVOYW1lPy1iLmNsaWVudFdpZHRoK1QucmlnaHQ6LXcud2lkdGgrVC5yaWdodDpULmxlZnQsRSYmSSlDW0ldPSJ0cmFuc2xhdGUzZCgiK0ErInB4LCAiK08rInB4LCAwKSIsQ1tTXT0wLENbRF09MCxDLndpbGxDaGFuZ2U9InRyYW5zZm9ybSI7ZWxzZXt2YXIgTj0iYm90dG9tIj09PVM/LTE6MSxrPSJyaWdodCI9PT1EPy0xOjE7Q1tTXT1PKk4sQ1tEXT1BKmssQy53aWxsQ2hhbmdlPVMrIiwgIitEfXZhciBMPXsieC1wbGFjZW1lbnQiOnQucGxhY2VtZW50fTtyZXR1cm4gdC5hdHRyaWJ1dGVzPVF0KHt9LEwsdC5hdHRyaWJ1dGVzKSx0LnN0eWxlcz1RdCh7fSxDLHQuc3R5bGVzKSx0LmFycm93U3R5bGVzPVF0KHt9LHQub2Zmc2V0cy5hcnJvdyx0LmFycm93U3R5bGVzKSx0fSxncHVBY2NlbGVyYXRpb246ITAseDoiYm90dG9tIix5OiJyaWdodCJ9LGFwcGx5U3R5bGU6e29yZGVyOjkwMCxlbmFibGVkOiEwLGZuOmZ1bmN0aW9uKHQpe3ZhciBlLG47cmV0dXJuIGhlKHQuaW5zdGFuY2UucG9wcGVyLHQuc3R5bGVzKSxlPXQuaW5zdGFuY2UucG9wcGVyLG49dC5hdHRyaWJ1dGVzLE9iamVjdC5rZXlzKG4pLmZvckVhY2goZnVuY3Rpb24odCl7ITEhPT1uW3RdP2Uuc2V0QXR0cmlidXRlKHQsblt0XSk6ZS5yZW1vdmVBdHRyaWJ1dGUodCl9KSx0LmFycm93RWxlbWVudCYmT2JqZWN0LmtleXModC5hcnJvd1N0eWxlcykubGVuZ3RoJiZoZSh0LmFycm93RWxlbWVudCx0LmFycm93U3R5bGVzKSx0fSxvbkxvYWQ6ZnVuY3Rpb24odCxlLG4saSxvKXt2YXIgcj1KdChvLGUsdCxuLnBvc2l0aW9uRml4ZWQpLHM9JHQobi5wbGFjZW1lbnQscixlLHQsbi5tb2RpZmllcnMuZmxpcC5ib3VuZGFyaWVzRWxlbWVudCxuLm1vZGlmaWVycy5mbGlwLnBhZGRpbmcpO3JldHVybiBlLnNldEF0dHJpYnV0ZSgieC1wbGFjZW1lbnQiLHMpLGhlKGUse3Bvc2l0aW9uOm4ucG9zaXRpb25GaXhlZD8iZml4ZWQiOiJhYnNvbHV0ZSJ9KSxufSxncHVBY2NlbGVyYXRpb246dm9pZCAwfX19LGJlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gcih0LGUpe3ZhciBuPXRoaXMsaT0yPGFyZ3VtZW50cy5sZW5ndGgmJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06e307IWZ1bmN0aW9uKHQsZSl7aWYoISh0IGluc3RhbmNlb2YgZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsciksdGhpcy5zY2hlZHVsZVVwZGF0ZT1mdW5jdGlvbigpe3JldHVybiByZXF1ZXN0QW5pbWF0aW9uRnJhbWUobi51cGRhdGUpfSx0aGlzLnVwZGF0ZT1BdCh0aGlzLnVwZGF0ZS5iaW5kKHRoaXMpKSx0aGlzLm9wdGlvbnM9UXQoe30sci5EZWZhdWx0cyxpKSx0aGlzLnN0YXRlPXtpc0Rlc3Ryb3llZDohMSxpc0NyZWF0ZWQ6ITEsc2Nyb2xsUGFyZW50czpbXX0sdGhpcy5yZWZlcmVuY2U9dCYmdC5qcXVlcnk/dFswXTp0LHRoaXMucG9wcGVyPWUmJmUuanF1ZXJ5P2VbMF06ZSx0aGlzLm9wdGlvbnMubW9kaWZpZXJzPXt9LE9iamVjdC5rZXlzKFF0KHt9LHIuRGVmYXVsdHMubW9kaWZpZXJzLGkubW9kaWZpZXJzKSkuZm9yRWFjaChmdW5jdGlvbih0KXtuLm9wdGlvbnMubW9kaWZpZXJzW3RdPVF0KHt9LHIuRGVmYXVsdHMubW9kaWZpZXJzW3RdfHx7fSxpLm1vZGlmaWVycz9pLm1vZGlmaWVyc1t0XTp7fSl9KSx0aGlzLm1vZGlmaWVycz1PYmplY3Qua2V5cyh0aGlzLm9wdGlvbnMubW9kaWZpZXJzKS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIFF0KHtuYW1lOnR9LG4ub3B0aW9ucy5tb2RpZmllcnNbdF0pfSkuc29ydChmdW5jdGlvbih0LGUpe3JldHVybiB0Lm9yZGVyLWUub3JkZXJ9KSx0aGlzLm1vZGlmaWVycy5mb3JFYWNoKGZ1bmN0aW9uKHQpe3QuZW5hYmxlZCYmT3QodC5vbkxvYWQpJiZ0Lm9uTG9hZChuLnJlZmVyZW5jZSxuLnBvcHBlcixuLm9wdGlvbnMsdCxuLnN0YXRlKX0pLHRoaXMudXBkYXRlKCk7dmFyIG89dGhpcy5vcHRpb25zLmV2ZW50c0VuYWJsZWQ7byYmdGhpcy5lbmFibGVFdmVudExpc3RlbmVycygpLHRoaXMuc3RhdGUuZXZlbnRzRW5hYmxlZD1vfXJldHVybiBxdChyLFt7a2V5OiJ1cGRhdGUiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKCl7aWYoIXRoaXMuc3RhdGUuaXNEZXN0cm95ZWQpe3ZhciB0PXtpbnN0YW5jZTp0aGlzLHN0eWxlczp7fSxhcnJvd1N0eWxlczp7fSxhdHRyaWJ1dGVzOnt9LGZsaXBwZWQ6ITEsb2Zmc2V0czp7fX07dC5vZmZzZXRzLnJlZmVyZW5jZT1KdCh0aGlzLnN0YXRlLHRoaXMucG9wcGVyLHRoaXMucmVmZXJlbmNlLHRoaXMub3B0aW9ucy5wb3NpdGlvbkZpeGVkKSx0LnBsYWNlbWVudD0kdCh0aGlzLm9wdGlvbnMucGxhY2VtZW50LHQub2Zmc2V0cy5yZWZlcmVuY2UsdGhpcy5wb3BwZXIsdGhpcy5yZWZlcmVuY2UsdGhpcy5vcHRpb25zLm1vZGlmaWVycy5mbGlwLmJvdW5kYXJpZXNFbGVtZW50LHRoaXMub3B0aW9ucy5tb2RpZmllcnMuZmxpcC5wYWRkaW5nKSx0Lm9yaWdpbmFsUGxhY2VtZW50PXQucGxhY2VtZW50LHQucG9zaXRpb25GaXhlZD10aGlzLm9wdGlvbnMucG9zaXRpb25GaXhlZCx0Lm9mZnNldHMucG9wcGVyPWVlKHRoaXMucG9wcGVyLHQub2Zmc2V0cy5yZWZlcmVuY2UsdC5wbGFjZW1lbnQpLHQub2Zmc2V0cy5wb3BwZXIucG9zaXRpb249dGhpcy5vcHRpb25zLnBvc2l0aW9uRml4ZWQ/ImZpeGVkIjoiYWJzb2x1dGUiLHQ9aWUodGhpcy5tb2RpZmllcnMsdCksdGhpcy5zdGF0ZS5pc0NyZWF0ZWQ/dGhpcy5vcHRpb25zLm9uVXBkYXRlKHQpOih0aGlzLnN0YXRlLmlzQ3JlYXRlZD0hMCx0aGlzLm9wdGlvbnMub25DcmVhdGUodCkpfX0uY2FsbCh0aGlzKX19LHtrZXk6ImRlc3Ryb3kiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc3RhdGUuaXNEZXN0cm95ZWQ9ITAsb2UodGhpcy5tb2RpZmllcnMsImFwcGx5U3R5bGUiKSYmKHRoaXMucG9wcGVyLnJlbW92ZUF0dHJpYnV0ZSgieC1wbGFjZW1lbnQiKSx0aGlzLnBvcHBlci5zdHlsZS5wb3NpdGlvbj0iIix0aGlzLnBvcHBlci5zdHlsZS50b3A9IiIsdGhpcy5wb3BwZXIuc3R5bGUubGVmdD0iIix0aGlzLnBvcHBlci5zdHlsZS5yaWdodD0iIix0aGlzLnBvcHBlci5zdHlsZS5ib3R0b209IiIsdGhpcy5wb3BwZXIuc3R5bGUud2lsbENoYW5nZT0iIix0aGlzLnBvcHBlci5zdHlsZVtyZSgidHJhbnNmb3JtIildPSIiKSx0aGlzLmRpc2FibGVFdmVudExpc3RlbmVycygpLHRoaXMub3B0aW9ucy5yZW1vdmVPbkRlc3Ryb3kmJnRoaXMucG9wcGVyLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5wb3BwZXIpLHRoaXN9LmNhbGwodGhpcyl9fSx7a2V5OiJlbmFibGVFdmVudExpc3RlbmVycyIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnN0YXRlLmV2ZW50c0VuYWJsZWR8fCh0aGlzLnN0YXRlPWFlKHRoaXMucmVmZXJlbmNlLHRoaXMub3B0aW9ucyx0aGlzLnN0YXRlLHRoaXMuc2NoZWR1bGVVcGRhdGUpKX0uY2FsbCh0aGlzKX19LHtrZXk6ImRpc2FibGVFdmVudExpc3RlbmVycyIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gbGUuY2FsbCh0aGlzKX19XSkscn0oKTtiZS5VdGlscz0oInVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c/d2luZG93Omdsb2JhbCkuUG9wcGVyVXRpbHMsYmUucGxhY2VtZW50cz1kZSxiZS5EZWZhdWx0cz1FZTt2YXIgd2U9ImRyb3Bkb3duIixDZT0iYnMuZHJvcGRvd24iLFRlPSIuIitDZSxTZT0iLmRhdGEtYXBpIixEZT1wLmZuW3dlXSxJZT1uZXcgUmVnRXhwKCIzOHw0MHwyNyIpLEFlPXtISURFOiJoaWRlIitUZSxISURERU46ImhpZGRlbiIrVGUsU0hPVzoic2hvdyIrVGUsU0hPV046InNob3duIitUZSxDTElDSzoiY2xpY2siK1RlLENMSUNLX0RBVEFfQVBJOiJjbGljayIrVGUrU2UsS0VZRE9XTl9EQVRBX0FQSToia2V5ZG93biIrVGUrU2UsS0VZVVBfREFUQV9BUEk6ImtleXVwIitUZStTZX0sT2U9ImRpc2FibGVkIixOZT0ic2hvdyIsa2U9ImRyb3B1cCIsTGU9ImRyb3ByaWdodCIseGU9ImRyb3BsZWZ0IixQZT0iZHJvcGRvd24tbWVudS1yaWdodCIsSGU9InBvc2l0aW9uLXN0YXRpYyIsamU9J1tkYXRhLXRvZ2dsZT0iZHJvcGRvd24iXScsUmU9Ii5kcm9wZG93biBmb3JtIixGZT0iLmRyb3Bkb3duLW1lbnUiLE1lPSIubmF2YmFyLW5hdiIsV2U9Ii5kcm9wZG93bi1tZW51IC5kcm9wZG93bi1pdGVtOm5vdCguZGlzYWJsZWQpOm5vdCg6ZGlzYWJsZWQpIixVZT0idG9wLXN0YXJ0IixCZT0idG9wLWVuZCIscWU9ImJvdHRvbS1zdGFydCIsS2U9ImJvdHRvbS1lbmQiLFFlPSJyaWdodC1zdGFydCIsVmU9ImxlZnQtc3RhcnQiLFllPXtvZmZzZXQ6MCxmbGlwOiEwLGJvdW5kYXJ5OiJzY3JvbGxQYXJlbnQiLHJlZmVyZW5jZToidG9nZ2xlIixkaXNwbGF5OiJkeW5hbWljIn0semU9e29mZnNldDoiKG51bWJlcnxzdHJpbmd8ZnVuY3Rpb24pIixmbGlwOiJib29sZWFuIixib3VuZGFyeToiKHN0cmluZ3xlbGVtZW50KSIscmVmZXJlbmNlOiIoc3RyaW5nfGVsZW1lbnQpIixkaXNwbGF5OiJzdHJpbmcifSxYZT1mdW5jdGlvbigpe2Z1bmN0aW9uIGModCxlKXt0aGlzLl9lbGVtZW50PXQsdGhpcy5fcG9wcGVyPW51bGwsdGhpcy5fY29uZmlnPXRoaXMuX2dldENvbmZpZyhlKSx0aGlzLl9tZW51PXRoaXMuX2dldE1lbnVFbGVtZW50KCksdGhpcy5faW5OYXZiYXI9dGhpcy5fZGV0ZWN0TmF2YmFyKCksdGhpcy5fYWRkRXZlbnRMaXN0ZW5lcnMoKX12YXIgdD1jLnByb3RvdHlwZTtyZXR1cm4gdC50b2dnbGU9ZnVuY3Rpb24oKXtpZighdGhpcy5fZWxlbWVudC5kaXNhYmxlZCYmIXAodGhpcy5fZWxlbWVudCkuaGFzQ2xhc3MoT2UpKXt2YXIgdD1jLl9nZXRQYXJlbnRGcm9tRWxlbWVudCh0aGlzLl9lbGVtZW50KSxlPXAodGhpcy5fbWVudSkuaGFzQ2xhc3MoTmUpO2lmKGMuX2NsZWFyTWVudXMoKSwhZSl7dmFyIG49e3JlbGF0ZWRUYXJnZXQ6dGhpcy5fZWxlbWVudH0saT1wLkV2ZW50KEFlLlNIT1csbik7aWYocCh0KS50cmlnZ2VyKGkpLCFpLmlzRGVmYXVsdFByZXZlbnRlZCgpKXtpZighdGhpcy5faW5OYXZiYXIpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgYmUpdGhyb3cgbmV3IFR5cGVFcnJvcigiQm9vdHN0cmFwJ3MgZHJvcGRvd25zIHJlcXVpcmUgUG9wcGVyLmpzIChodHRwczovL3BvcHBlci5qcy5vcmcvKSIpO3ZhciBvPXRoaXMuX2VsZW1lbnQ7InBhcmVudCI9PT10aGlzLl9jb25maWcucmVmZXJlbmNlP289dDptLmlzRWxlbWVudCh0aGlzLl9jb25maWcucmVmZXJlbmNlKSYmKG89dGhpcy5fY29uZmlnLnJlZmVyZW5jZSwidW5kZWZpbmVkIiE9dHlwZW9mIHRoaXMuX2NvbmZpZy5yZWZlcmVuY2UuanF1ZXJ5JiYobz10aGlzLl9jb25maWcucmVmZXJlbmNlWzBdKSksInNjcm9sbFBhcmVudCIhPT10aGlzLl9jb25maWcuYm91bmRhcnkmJnAodCkuYWRkQ2xhc3MoSGUpLHRoaXMuX3BvcHBlcj1uZXcgYmUobyx0aGlzLl9tZW51LHRoaXMuX2dldFBvcHBlckNvbmZpZygpKX0ib250b3VjaHN0YXJ0ImluIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCYmMD09PXAodCkuY2xvc2VzdChNZSkubGVuZ3RoJiZwKGRvY3VtZW50LmJvZHkpLmNoaWxkcmVuKCkub24oIm1vdXNlb3ZlciIsbnVsbCxwLm5vb3ApLHRoaXMuX2VsZW1lbnQuZm9jdXMoKSx0aGlzLl9lbGVtZW50LnNldEF0dHJpYnV0ZSgiYXJpYS1leHBhbmRlZCIsITApLHAodGhpcy5fbWVudSkudG9nZ2xlQ2xhc3MoTmUpLHAodCkudG9nZ2xlQ2xhc3MoTmUpLnRyaWdnZXIocC5FdmVudChBZS5TSE9XTixuKSl9fX19LHQuc2hvdz1mdW5jdGlvbigpe2lmKCEodGhpcy5fZWxlbWVudC5kaXNhYmxlZHx8cCh0aGlzLl9lbGVtZW50KS5oYXNDbGFzcyhPZSl8fHAodGhpcy5fbWVudSkuaGFzQ2xhc3MoTmUpKSl7dmFyIHQ9e3JlbGF0ZWRUYXJnZXQ6dGhpcy5fZWxlbWVudH0sZT1wLkV2ZW50KEFlLlNIT1csdCksbj1jLl9nZXRQYXJlbnRGcm9tRWxlbWVudCh0aGlzLl9lbGVtZW50KTtwKG4pLnRyaWdnZXIoZSksZS5pc0RlZmF1bHRQcmV2ZW50ZWQoKXx8KHAodGhpcy5fbWVudSkudG9nZ2xlQ2xhc3MoTmUpLHAobikudG9nZ2xlQ2xhc3MoTmUpLnRyaWdnZXIocC5FdmVudChBZS5TSE9XTix0KSkpfX0sdC5oaWRlPWZ1bmN0aW9uKCl7aWYoIXRoaXMuX2VsZW1lbnQuZGlzYWJsZWQmJiFwKHRoaXMuX2VsZW1lbnQpLmhhc0NsYXNzKE9lKSYmcCh0aGlzLl9tZW51KS5oYXNDbGFzcyhOZSkpe3ZhciB0PXtyZWxhdGVkVGFyZ2V0OnRoaXMuX2VsZW1lbnR9LGU9cC5FdmVudChBZS5ISURFLHQpLG49Yy5fZ2V0UGFyZW50RnJvbUVsZW1lbnQodGhpcy5fZWxlbWVudCk7cChuKS50cmlnZ2VyKGUpLGUuaXNEZWZhdWx0UHJldmVudGVkKCl8fChwKHRoaXMuX21lbnUpLnRvZ2dsZUNsYXNzKE5lKSxwKG4pLnRvZ2dsZUNsYXNzKE5lKS50cmlnZ2VyKHAuRXZlbnQoQWUuSElEREVOLHQpKSl9fSx0LmRpc3Bvc2U9ZnVuY3Rpb24oKXtwLnJlbW92ZURhdGEodGhpcy5fZWxlbWVudCxDZSkscCh0aGlzLl9lbGVtZW50KS5vZmYoVGUpLHRoaXMuX2VsZW1lbnQ9bnVsbCwodGhpcy5fbWVudT1udWxsKSE9PXRoaXMuX3BvcHBlciYmKHRoaXMuX3BvcHBlci5kZXN0cm95KCksdGhpcy5fcG9wcGVyPW51bGwpfSx0LnVwZGF0ZT1mdW5jdGlvbigpe3RoaXMuX2luTmF2YmFyPXRoaXMuX2RldGVjdE5hdmJhcigpLG51bGwhPT10aGlzLl9wb3BwZXImJnRoaXMuX3BvcHBlci5zY2hlZHVsZVVwZGF0ZSgpfSx0Ll9hZGRFdmVudExpc3RlbmVycz1mdW5jdGlvbigpe3ZhciBlPXRoaXM7cCh0aGlzLl9lbGVtZW50KS5vbihBZS5DTElDSyxmdW5jdGlvbih0KXt0LnByZXZlbnREZWZhdWx0KCksdC5zdG9wUHJvcGFnYXRpb24oKSxlLnRvZ2dsZSgpfSl9LHQuX2dldENvbmZpZz1mdW5jdGlvbih0KXtyZXR1cm4gdD1sKHt9LHRoaXMuY29uc3RydWN0b3IuRGVmYXVsdCxwKHRoaXMuX2VsZW1lbnQpLmRhdGEoKSx0KSxtLnR5cGVDaGVja0NvbmZpZyh3ZSx0LHRoaXMuY29uc3RydWN0b3IuRGVmYXVsdFR5cGUpLHR9LHQuX2dldE1lbnVFbGVtZW50PWZ1bmN0aW9uKCl7aWYoIXRoaXMuX21lbnUpe3ZhciB0PWMuX2dldFBhcmVudEZyb21FbGVtZW50KHRoaXMuX2VsZW1lbnQpO3QmJih0aGlzLl9tZW51PXQucXVlcnlTZWxlY3RvcihGZSkpfXJldHVybiB0aGlzLl9tZW51fSx0Ll9nZXRQbGFjZW1lbnQ9ZnVuY3Rpb24oKXt2YXIgdD1wKHRoaXMuX2VsZW1lbnQucGFyZW50Tm9kZSksZT1xZTtyZXR1cm4gdC5oYXNDbGFzcyhrZSk/KGU9VWUscCh0aGlzLl9tZW51KS5oYXNDbGFzcyhQZSkmJihlPUJlKSk6dC5oYXNDbGFzcyhMZSk/ZT1RZTp0Lmhhc0NsYXNzKHhlKT9lPVZlOnAodGhpcy5fbWVudSkuaGFzQ2xhc3MoUGUpJiYoZT1LZSksZX0sdC5fZGV0ZWN0TmF2YmFyPWZ1bmN0aW9uKCl7cmV0dXJuIDA8cCh0aGlzLl9lbGVtZW50KS5jbG9zZXN0KCIubmF2YmFyIikubGVuZ3RofSx0Ll9nZXRPZmZzZXQ9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9e307cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMuX2NvbmZpZy5vZmZzZXQ/dC5mbj1mdW5jdGlvbih0KXtyZXR1cm4gdC5vZmZzZXRzPWwoe30sdC5vZmZzZXRzLGUuX2NvbmZpZy5vZmZzZXQodC5vZmZzZXRzLGUuX2VsZW1lbnQpfHx7fSksdH06dC5vZmZzZXQ9dGhpcy5fY29uZmlnLm9mZnNldCx0fSx0Ll9nZXRQb3BwZXJDb25maWc9ZnVuY3Rpb24oKXt2YXIgdD17cGxhY2VtZW50OnRoaXMuX2dldFBsYWNlbWVudCgpLG1vZGlmaWVyczp7b2Zmc2V0OnRoaXMuX2dldE9mZnNldCgpLGZsaXA6e2VuYWJsZWQ6dGhpcy5fY29uZmlnLmZsaXB9LHByZXZlbnRPdmVyZmxvdzp7Ym91bmRhcmllc0VsZW1lbnQ6dGhpcy5fY29uZmlnLmJvdW5kYXJ5fX19O3JldHVybiJzdGF0aWMiPT09dGhpcy5fY29uZmlnLmRpc3BsYXkmJih0Lm1vZGlmaWVycy5hcHBseVN0eWxlPXtlbmFibGVkOiExfSksdH0sYy5falF1ZXJ5SW50ZXJmYWNlPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgdD1wKHRoaXMpLmRhdGEoQ2UpO2lmKHR8fCh0PW5ldyBjKHRoaXMsIm9iamVjdCI9PXR5cGVvZiBlP2U6bnVsbCkscCh0aGlzKS5kYXRhKENlLHQpKSwic3RyaW5nIj09dHlwZW9mIGUpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgdFtlXSl0aHJvdyBuZXcgVHlwZUVycm9yKCdObyBtZXRob2QgbmFtZWQgIicrZSsnIicpO3RbZV0oKX19KX0sYy5fY2xlYXJNZW51cz1mdW5jdGlvbih0KXtpZighdHx8MyE9PXQud2hpY2gmJigia2V5dXAiIT09dC50eXBlfHw5PT09dC53aGljaCkpZm9yKHZhciBlPVtdLnNsaWNlLmNhbGwoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChqZSkpLG49MCxpPWUubGVuZ3RoO248aTtuKyspe3ZhciBvPWMuX2dldFBhcmVudEZyb21FbGVtZW50KGVbbl0pLHI9cChlW25dKS5kYXRhKENlKSxzPXtyZWxhdGVkVGFyZ2V0OmVbbl19O2lmKHQmJiJjbGljayI9PT10LnR5cGUmJihzLmNsaWNrRXZlbnQ9dCkscil7dmFyIGE9ci5fbWVudTtpZihwKG8pLmhhc0NsYXNzKE5lKSYmISh0JiYoImNsaWNrIj09PXQudHlwZSYmL2lucHV0fHRleHRhcmVhL2k="
}

github/deemru/w8io/169f3d6 
2.18 ms