Skip to content

Instantly share code, notes, and snippets.

@timelyportfolio
Last active March 21, 2017 21:16
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save timelyportfolio/6390d391bb1959efe9893ab9e9309779 to your computer and use it in GitHub Desktop.
Save timelyportfolio/6390d391bb1959efe9893ab9e9309779 to your computer and use it in GitHub Desktop.
rd3fc with shiny.semantic
license: mit

Playing in R with shiny.semantic and rd3fc.


Code

# devtools::install_github("Appsilon/shiny.semantic")

library(rd3fc)
library(shiny.semantic)
library(htmltools)
library(quantmod)
library(pipeR)

getSymbols("IWM", from="2016-12-31")
getSymbols("SPY", from="2016-12-31")

cs_iwm <- chart_Series(IWM, name=NA)
cs_spy <- chart_Series(SPY, name=NA)

# use card example from shiny.semantic
card <- function(img_tag=NULL, title_left ="Title", title_right = "" ) {
  div(
    class = "ui card",
    div(
      class = "content", 
      div(class = "right floated meta", title_right),
      title_left
    ),
    div(
      class = "image",
      img_tag
    ),
    div(
      class = "content",
      span(
        class = "right floated",
        uiicon("heart outline like"),
        "17 likes"
      ),
      uiicon("comment"),
      "3 comments"
    ),
    div(class = "extra content", 
     div(
      class = "ui large transparent left icon input",
      uiicon("heart ouline"), 
      tags$input(type = "text", placeholder = "Add Comment...")
    )
   )
  )
}

tagList(
  div(
    class = "ui grid",
    div(
      class = "row",
      div(class = "four wide column",
        card(
          chartseries(cs_spy, width="100%", height=200),
          "SPY",
          "2017-03-21"
        )
      ),
      div(class = "four wide column",
        card(chartseries(
          cs_iwm, width="100%", height=200),
          "IWM",
          "2017-03-21"
        )
      )
    )
  ),
  rmarkdown::html_dependency_jquery(),
  shiny.semantic:::getDeps()
) %>>%
  browsable()

Thanks

Thanks RStudio for htmltools.

Thanks Mike Bostock for d3.js.

Thanks to Colin, Chris, and others at Scott Logic for d3fc

Thanks for the Semantic UI team.

This file has been truncated, but you can view the full file.
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<script src="data:application/x-javascript;base64,IWZ1bmN0aW9uIGUodCxuLHIpe2Z1bmN0aW9uIHMobyx1KXtpZighbltvXSl7aWYoIXRbb10pe3ZhciBjPSJmdW5jdGlvbiI9PXR5cGVvZiByZXF1aXJlJiZyZXF1aXJlO2lmKCF1JiZjKXJldHVybiBjKG8sITApO2lmKGkpcmV0dXJuIGkobywhMCk7dmFyIGY9bmV3IEVycm9yKCJDYW5ub3QgZmluZCBtb2R1bGUgJyIrbysiJyIpO3Rocm93IGYuY29kZT0iTU9EVUxFX05PVF9GT1VORCIsZn12YXIgYT1uW29dPXtleHBvcnRzOnt9fTt0W29dWzBdLmNhbGwoYS5leHBvcnRzLGZ1bmN0aW9uKG4pe3ZhciByPXRbb11bMV1bbl07cmV0dXJuIHMocj9yOm4pfSxhLGEuZXhwb3J0cyxlLHQsbixyKX1yZXR1cm4gbltvXS5leHBvcnRzfWZvcih2YXIgaT0iZnVuY3Rpb24iPT10eXBlb2YgcmVxdWlyZSYmcmVxdWlyZSxvPTA7bzxyLmxlbmd0aDtvKyspcyhyW29dKTtyZXR1cm4gc30oezE6W2Z1bmN0aW9uKHQsbixyKXsoZnVuY3Rpb24obil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGRlZmluZSh0LG4sZSl7dFtuXXx8T2JqZWN0W3JdKHQsbix7d3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwLHZhbHVlOmV9KX1pZih0KDI5NSksdCgyOTYpLHQoMiksbi5fYmFiZWxQb2x5ZmlsbCl0aHJvdyBuZXcgRXJyb3IoIm9ubHkgb25lIGluc3RhbmNlIG9mIGJhYmVsLXBvbHlmaWxsIGlzIGFsbG93ZWQiKTtuLl9iYWJlbFBvbHlmaWxsPSEwO3ZhciByPSJkZWZpbmVQcm9wZXJ0eSI7ZGVmaW5lKFN0cmluZy5wcm90b3R5cGUsInBhZExlZnQiLCIiLnBhZFN0YXJ0KSxkZWZpbmUoU3RyaW5nLnByb3RvdHlwZSwicGFkUmlnaHQiLCIiLnBhZEVuZCksInBvcCxyZXZlcnNlLHNoaWZ0LGtleXMsdmFsdWVzLGVudHJpZXMsaW5kZXhPZixldmVyeSxzb21lLGZvckVhY2gsbWFwLGZpbHRlcixmaW5kLGZpbmRJbmRleCxpbmNsdWRlcyxqb2luLHNsaWNlLGNvbmNhdCxwdXNoLHNwbGljZSx1bnNoaWZ0LHNvcnQsbGFzdEluZGV4T2YscmVkdWNlLHJlZHVjZVJpZ2h0LGNvcHlXaXRoaW4sZmlsbCIuc3BsaXQoIiwiKS5mb3JFYWNoKGZ1bmN0aW9uKHQpe1tdW3RdJiZkZWZpbmUoQXJyYXksdCxGdW5jdGlvbi5jYWxsLmJpbmQoW11bdF0pKX0pfSkuY2FsbCh0aGlzLCJ1bmRlZmluZWQiIT10eXBlb2YgZ2xvYmFsP2dsb2JhbDoidW5kZWZpbmVkIiE9dHlwZW9mIHNlbGY/c2VsZjoidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6e30pfSx7MjoyLDI5NToyOTUsMjk2OjI5Nn1dLDI6W2Z1bmN0aW9uKHQsbixyKXt0KDExOSksbi5leHBvcnRzPXQoMjMpLlJlZ0V4cC5lc2NhcGV9LHsxMTk6MTE5LDIzOjIzfV0sMzpbZnVuY3Rpb24odCxuLHIpe24uZXhwb3J0cz1mdW5jdGlvbih0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCl0aHJvdyBUeXBlRXJyb3IodCsiIGlzIG5vdCBhIGZ1bmN0aW9uISIpO3JldHVybiB0fX0se31dLDQ6W2Z1bmN0aW9uKHQsbixyKXt2YXIgZT10KDE4KTtuLmV4cG9ydHM9ZnVuY3Rpb24odCxuKXtpZigibnVtYmVyIiE9dHlwZW9mIHQmJiJOdW1iZXIiIT1lKHQpKXRocm93IFR5cGVFcnJvcihuKTtyZXR1cm4rdH19LHsxODoxOH1dLDU6W2Z1bmN0aW9uKHQsbixyKXt2YXIgZT10KDExNykoInVuc2NvcGFibGVzIiksaT1BcnJheS5wcm90b3R5cGU7dm9pZCAwPT1pW2VdJiZ0KDQwKShpLGUse30pLG4uZXhwb3J0cz1mdW5jdGlvbih0KXtpW2VdW3RdPSEwfX0sezExNzoxMTcsNDA6NDB9XSw2OltmdW5jdGlvbih0LG4scil7bi5leHBvcnRzPWZ1bmN0aW9uKHQsbixyLGUpe2lmKCEodCBpbnN0YW5jZW9mIG4pfHx2b2lkIDAhPT1lJiZlIGluIHQpdGhyb3cgVHlwZUVycm9yKHIrIjogaW5jb3JyZWN0IGludm9jYXRpb24hIik7cmV0dXJuIHR9fSx7fV0sNzpbZnVuY3Rpb24odCxuLHIpe3ZhciBlPXQoNDkpO24uZXhwb3J0cz1mdW5jdGlvbih0KXtpZighZSh0KSl0aHJvdyBUeXBlRXJyb3IodCsiIGlzIG5vdCBhbiBvYmplY3QhIik7cmV0dXJuIHR9fSx7NDk6NDl9XSw4OltmdW5jdGlvbih0LG4scil7InVzZSBzdHJpY3QiO3ZhciBlPXQoMTA5KSxpPXQoMTA1KSxvPXQoMTA4KTtuLmV4cG9ydHM9W10uY29weVdpdGhpbnx8ZnVuY3Rpb24gY29weVdpdGhpbih0LG4pe3ZhciByPWUodGhpcyksdT1vKHIubGVuZ3RoKSxjPWkodCx1KSxmPWkobix1KSxhPWFyZ3VtZW50cy5sZW5ndGg+Mj9hcmd1bWVudHNbMl06dm9pZCAwLHM9TWF0aC5taW4oKHZvaWQgMD09PWE/dTppKGEsdSkpLWYsdS1jKSxsPTE7Zm9yKGY8YyYmYzxmK3MmJihsPS0xLGYrPXMtMSxjKz1zLTEpO3MtLSA+MDspZiBpbiByP3JbY109cltmXTpkZWxldGUgcltjXSxjKz1sLGYrPWw7cmV0dXJuIHJ9fSx7MTA1OjEwNSwxMDg6MTA4LDEwOToxMDl9XSw5OltmdW5jdGlvbih0LG4scil7InVzZSBzdHJpY3QiO3ZhciBlPXQoMTA5KSxpPXQoMTA1KSxvPXQoMTA4KTtuLmV4cG9ydHM9ZnVuY3Rpb24gZmlsbCh0KXtmb3IodmFyIG49ZSh0aGlzKSxyPW8obi5sZW5ndGgpLHU9YXJndW1lbnRzLmxlbmd0aCxjPWkodT4xP2FyZ3VtZW50c1sxXTp2b2lkIDAsciksZj11PjI/YXJndW1lbnRzWzJdOnZvaWQgMCxhPXZvaWQgMD09PWY/cjppKGYscik7YT5jOyluW2MrK109dDtyZXR1cm4gbn19LHsxMDU6MTA1LDEwODoxMDgsMTA5OjEwOX1dLDEwOltmdW5jdGlvbih0LG4scil7dmFyIGU9dCgzNyk7bi5leHBvcnRzPWZ1bmN0aW9uKHQsbil7dmFyIHI9W107cmV0dXJuIGUodCwhMSxyLnB1c2gscixuKSxyfX0sezM3OjM3fV0sMTE6W2Z1bmN0aW9uKHQsbixyKXt2YXIgZT10KDEwNyksaT10KDEwOCksbz10KDEwNSk7bi5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihuLHIsdSl7dmFyIGMsZj1lKG4pLGE9aShmLmxlbmd0aCkscz1vKHUsYSk7aWYodCYmciE9cil7Zm9yKDthPnM7KWlmKGM9ZltzKytdLGMhPWMpcmV0dXJuITB9ZWxzZSBmb3IoO2E+cztzKyspaWYoKHR8fHMgaW4gZikmJmZbc109PT1yKXJldHVybiB0fHxzfHwwO3JldHVybiF0JiYtMX19fSx7MTA1OjEwNSwxMDc6MTA3LDEwODoxMDh9XSwxMjpbZnVuY3Rpb24odCxuLHIpe3ZhciBlPXQoMjUpLGk9dCg0NSksbz10KDEwOSksdT10KDEwOCksYz10KDE1KTtuLmV4cG9ydHM9ZnVuY3Rpb24odCxuKXt2YXIgcj0xPT10LGY9Mj09dCxhPTM9PXQscz00PT10LGw9Nj09dCxoPTU9PXR8fGwsdj1ufHxjO3JldHVybiBmdW5jdGlvbihuLGMscCl7Zm9yKHZhciBkLHksZz1vKG4pLGI9aShnKSx4PWUoYyxwLDMpLG09dShiLmxlbmd0aCksdz0wLFM9cj92KG4sbSk6Zj92KG4sMCk6dm9pZCAwO20+dzt3KyspaWYoKGh8fHcgaW4gYikmJihkPWJbd10seT14KGQsdyxnKSx0KSlpZihyKVNbd109eTtlbHNlIGlmKHkpc3dpdGNoKHQpe2Nhc2UgMzpyZXR1cm4hMDtjYXNlIDU6cmV0dXJuIGQ7Y2FzZSA2OnJldHVybiB3O2Nhc2UgMjpTLnB1c2goZCl9ZWxzZSBpZihzKXJldHVybiExO3JldHVybiBsPy0xOmF8fHM/czpTfX19LHsxMDg6MTA4LDEwOToxMDksMTU6MTUsMjU6MjUsNDU6NDV9XSwxMzpbZnVuY3Rpb24odCxuLHIpe3ZhciBlPXQoMyksaT10KDEwOSksbz10KDQ1KSx1PXQoMTA4KTtuLmV4cG9ydHM9ZnVuY3Rpb24odCxuLHIsYyxmKXtlKG4pO3ZhciBhPWkodCkscz1vKGEpLGw9dShhLmxlbmd0aCksaD1mP2wtMTowLHY9Zj8tMToxO2lmKHI8Milmb3IoOzspe2lmKGggaW4gcyl7Yz1zW2hdLGgrPXY7YnJlYWt9aWYoaCs9dixmP2g8MDpsPD1oKXRocm93IFR5cGVFcnJvcigiUmVkdWNlIG9mIGVtcHR5IGFycmF5IHdpdGggbm8gaW5pdGlhbCB2YWx1ZSIpfWZvcig7Zj9oPj0wOmw+aDtoKz12KWggaW4gcyYmKGM9bihjLHNbaF0saCxhKSk7cmV0dXJuIGN9fSx7MTA4OjEwOCwxMDk6MTA5LDM6Myw0NTo0NX1dLDE0OltmdW5jdGlvbih0LG4scil7dmFyIGU9dCg0OSksaT10KDQ3KSxvPXQoMTE3KSgic3BlY2llcyIpO24uZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgbjtyZXR1cm4gaSh0KSYmKG49dC5jb25zdHJ1Y3RvciwiZnVuY3Rpb24iIT10eXBlb2Ygbnx8biE9PUFycmF5JiYhaShuLnByb3RvdHlwZSl8fChuPXZvaWQgMCksZShuKSYmKG49bltvXSxudWxsPT09biYmKG49dm9pZCAwKSkpLHZvaWQgMD09PW4/QXJyYXk6bn19LHsxMTc6MTE3LDQ3OjQ3LDQ5OjQ5fV0sMTU6W2Z1bmN0aW9uKHQsbixyKXt2YXIgZT10KDE0KTtuLmV4cG9ydHM9ZnVuY3Rpb24odCxuKXtyZXR1cm4gbmV3KGUodCkpKG4pfX0sezE0OjE0fV0sMTY6W2Z1bmN0aW9uKHQsbixyKXsidXNlIHN0cmljdCI7dmFyIGU9dCgzKSxpPXQoNDkpLG89dCg0NCksdT1bXS5zbGljZSxjPXt9LGY9ZnVuY3Rpb24odCxuLHIpe2lmKCEobiBpbiBjKSl7Zm9yKHZhciBlPVtdLGk9MDtpPG47aSsrKWVbaV09ImFbIitpKyJdIjtjW25dPUZ1bmN0aW9uKCJGLGEiLCJyZXR1cm4gbmV3IEYoIitlLmpvaW4oIiwiKSsiKSIpfXJldHVybiBjW25dKHQscil9O24uZXhwb3J0cz1GdW5jdGlvbi5iaW5kfHxmdW5jdGlvbiBiaW5kKHQpe3ZhciBuPWUodGhpcykscj11LmNhbGwoYXJndW1lbnRzLDEpLGM9ZnVuY3Rpb24oKXt2YXIgZT1yLmNvbmNhdCh1LmNhbGwoYXJndW1lbnRzKSk7cmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBjP2YobixlLmxlbmd0aCxlKTpvKG4sZSx0KX07cmV0dXJuIGkobi5wcm90b3R5cGUpJiYoYy5wcm90b3R5cGU9bi5wcm90b3R5cGUpLGN9fSx7MzozLDQ0OjQ0LDQ5OjQ5fV0sMTc6W2Z1bmN0aW9uKHQsbixyKXt2YXIgZT10KDE4KSxpPXQoMTE3KSgidG9TdHJpbmdUYWciKSxvPSJBcmd1bWVudHMiPT1lKGZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50c30oKSksdT1mdW5jdGlvbih0LG4pe3RyeXtyZXR1cm4gdFtuXX1jYXRjaCh0KXt9fTtuLmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIG4scixjO3JldHVybiB2b2lkIDA9PT10PyJVbmRlZmluZWQiOm51bGw9PT10PyJOdWxsIjoic3RyaW5nIj09dHlwZW9mKHI9dShuPU9iamVjdCh0KSxpKSk/cjpvP2Uobik6Ik9iamVjdCI9PShjPWUobikpJiYiZnVuY3Rpb24iPT10eXBlb2Ygbi5jYWxsZWU/IkFyZ3VtZW50cyI6Y319LHsxMTc6MTE3LDE4OjE4fV0sMTg6W2Z1bmN0aW9uKHQsbixyKXt2YXIgZT17fS50b1N0cmluZztuLmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIGUuY2FsbCh0KS5zbGljZSg4LC0xKX19LHt9XSwxOTpbZnVuY3Rpb24odCxuLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgZT10KDY3KS5mLGk9dCg2Niksbz10KDg2KSx1PXQoMjUpLGM9dCg2KSxmPXQoMjcpLGE9dCgzNykscz10KDUzKSxsPXQoNTUpLGg9dCg5MSksdj10KDI4KSxwPXQoNjIpLmZhc3RLZXksZD12PyJfcyI6InNpemUiLHk9ZnVuY3Rpb24odCxuKXt2YXIgcixlPXAobik7aWYoIkYiIT09ZSlyZXR1cm4gdC5faVtlXTtmb3Iocj10Ll9mO3I7cj1yLm4paWYoci5rPT1uKXJldHVybiByfTtuLmV4cG9ydHM9e2dldENvbnN0cnVjdG9yOmZ1bmN0aW9uKHQsbixyLHMpe3ZhciBsPXQoZnVuY3Rpb24odCxlKXtjKHQsbCxuLCJfaSIpLHQuX2k9aShudWxsKSx0Ll9mPXZvaWQgMCx0Ll9sPXZvaWQgMCx0W2RdPTAsdm9pZCAwIT1lJiZhKGUscix0W3NdLHQpfSk7cmV0dXJuIG8obC5wcm90b3R5cGUse2NsZWFyOmZ1bmN0aW9uIGNsZWFyKCl7Zm9yKHZhciB0PXRoaXMsbj10Ll9pLHI9dC5fZjtyO3I9ci5uKXIucj0hMCxyLnAmJihyLnA9ci5wLm49dm9pZCAwKSxkZWxldGUgbltyLmldO3QuX2Y9dC5fbD12b2lkIDAsdFtkXT0wfSxkZWxldGU6ZnVuY3Rpb24odCl7dmFyIG49dGhpcyxyPXkobix0KTtpZihyKXt2YXIgZT1yLm4saT1yLnA7ZGVsZXRlIG4uX2lbci5pXSxyLnI9ITAsaSYmKGkubj1lKSxlJiYoZS5wPWkpLG4uX2Y9PXImJihuLl9mPWUpLG4uX2w9PXImJihuLl9sPWkpLG5bZF0tLX1yZXR1cm4hIXJ9LGZvckVhY2g6ZnVuY3Rpb24gZm9yRWFjaCh0KXtjKHRoaXMsbCwiZm9yRWFjaCIpO2Zvcih2YXIgbixyPXUodCxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCwzKTtuPW4/bi5uOnRoaXMuX2Y7KWZvcihyKG4udixuLmssdGhpcyk7biYmbi5yOyluPW4ucH0saGFzOmZ1bmN0aW9uIGhhcyh0KXtyZXR1cm4hIXkodGhpcyx0KX19KSx2JiZlKGwucHJvdG90eXBlLCJzaXplIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGYodGhpc1tkXSl9fSksbH0sZGVmOmZ1bmN0aW9uKHQsbixyKXt2YXIgZSxpLG89eSh0LG4pO3JldHVybiBvP28udj1yOih0Ll9sPW89e2k6aT1wKG4sITApLGs6bix2OnIscDplPXQuX2wsbjp2b2lkIDAscjohMX0sdC5fZnx8KHQuX2Y9byksZSYmKGUubj1vKSx0W2RdKyssIkYiIT09aSYmKHQuX2lbaV09bykpLHR9LGdldEVudHJ5Onksc2V0U3Ryb25nOmZ1bmN0aW9uKHQsbixyKXtzKHQsbixmdW5jdGlvbih0LG4pe3RoaXMuX3Q9dCx0aGlzLl9rPW4sdGhpcy5fbD12b2lkIDB9LGZ1bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXMsbj10Ll9rLHI9dC5fbDtyJiZyLnI7KXI9ci5wO3JldHVybiB0Ll90JiYodC5fbD1yPXI/ci5uOnQuX3QuX2YpPyJrZXlzIj09bj9sKDAsci5rKToidmFsdWVzIj09bj9sKDAsci52KTpsKDAsW3IuayxyLnZdKToodC5fdD12b2lkIDAsbCgxKSl9LHI/ImVudHJpZXMiOiJ2YWx1ZXMiLCFyLCEwKSxoKG4pfX19LHsyNToyNSwyNzoyNywyODoyOCwzNzozNyw1Mzo1Myw1NTo1NSw2OjYsNjI6NjIsNjY6NjYsNjc6NjcsODY6ODYsOTE6OTF9XSwyMDpbZnVuY3Rpb24odCxuLHIpe3ZhciBlPXQoMTcpLGk9dCgxMCk7bi5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbiB0b0pTT04oKXtpZihlKHRoaXMpIT10KXRocm93IFR5cGVFcnJvcih0KyIjdG9KU09OIGlzbid0IGdlbmVyaWMiKTtyZXR1cm4gaSh0aGlzKX19fSx7MTA6MTAsMTc6MTd9XSwyMTpbZnVuY3Rpb24odCxuLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgZT10KDg2KSxpPXQoNjIpLmdldFdlYWssbz10KDcpLHU9dCg0OSksYz10KDYpLGY9dCgzNyksYT10KDEyKSxzPXQoMzkpLGw9YSg1KSxoPWEoNiksdj0wLHA9ZnVuY3Rpb24odCl7cmV0dXJuIHQuX2x8fCh0Ll9sPW5ldyBkKX0sZD1mdW5jdGlvbigpe3RoaXMuYT1bXX0seT1mdW5jdGlvbih0LG4pe3JldHVybiBsKHQuYSxmdW5jdGlvbih0KXtyZXR1cm4gdFswXT09PW59KX07ZC5wcm90b3R5cGU9e2dldDpmdW5jdGlvbih0KXt2YXIgbj15KHRoaXMsdCk7aWYobilyZXR1cm4gblsxXX0saGFzOmZ1bmN0aW9uKHQpe3JldHVybiEheSh0aGlzLHQpfSxzZXQ6ZnVuY3Rpb24odCxuKXt2YXIgcj15KHRoaXMsdCk7cj9yWzFdPW46dGhpcy5hLnB1c2goW3Qsbl0pfSxkZWxldGU6ZnVuY3Rpb24odCl7dmFyIG49aCh0aGlzLmEsZnVuY3Rpb24obil7cmV0dXJuIG5bMF09PT10fSk7cmV0dXJufm4mJnRoaXMuYS5zcGxpY2UobiwxKSwhIX5ufX0sbi5leHBvcnRzPXtnZXRDb25zdHJ1Y3RvcjpmdW5jdGlvbih0LG4scixvKXt2YXIgYT10KGZ1bmN0aW9uKHQsZSl7Yyh0LGEsbiwiX2kiKSx0Ll9pPXYrKyx0Ll9sPXZvaWQgMCx2b2lkIDAhPWUmJmYoZSxyLHRbb10sdCl9KTtyZXR1cm4gZShhLnByb3RvdHlwZSx7ZGVsZXRlOmZ1bmN0aW9uKHQpe2lmKCF1KHQpKXJldHVybiExO3ZhciBuPWkodCk7cmV0dXJuIG49PT0hMD9wKHRoaXMpLmRlbGV0ZSh0KTpuJiZzKG4sdGhpcy5faSkmJmRlbGV0ZSBuW3RoaXMuX2ldfSxoYXM6ZnVuY3Rpb24gaGFzKHQpe2lmKCF1KHQpKXJldHVybiExO3ZhciBuPWkodCk7cmV0dXJuIG49PT0hMD9wKHRoaXMpLmhhcyh0KTpuJiZzKG4sdGhpcy5faSl9fSksYX0sZGVmOmZ1bmN0aW9uKHQsbixyKXt2YXIgZT1pKG8obiksITApO3JldHVybiBlPT09ITA/cCh0KS5zZXQobixyKTplW3QuX2ldPXIsdH0sdWZzdG9yZTpwfX0sezEyOjEyLDM3OjM3LDM5OjM5LDQ5OjQ5LDY6Niw2Mjo2Miw3OjcsODY6ODZ9XSwyMjpbZnVuY3Rpb24odCxuLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgZT10KDM4KSxpPXQoMzIpLG89dCg4NyksdT10KDg2KSxjPXQoNjIpLGY9dCgzNyksYT10KDYpLHM9dCg0OSksbD10KDM0KSxoPXQoNTQpLHY9dCg5MikscD10KDQzKTtuLmV4cG9ydHM9ZnVuY3Rpb24odCxuLHIsZCx5LGcpe3ZhciBiPWVbdF0seD1iLG09eT8ic2V0IjoiYWRkIix3PXgmJngucHJvdG90eXBlLFM9e30sXz1mdW5jdGlvbih0KXt2YXIgbj13W3RdO28odyx0LCJkZWxldGUiPT10P2Z1bmN0aW9uKHQpe3JldHVybiEoZyYmIXModCkpJiZuLmNhbGwodGhpcywwPT09dD8wOnQpfToiaGFzIj09dD9mdW5jdGlvbiBoYXModCl7cmV0dXJuIShnJiYhcyh0KSkmJm4uY2FsbCh0aGlzLDA9PT10PzA6dCl9OiJnZXQiPT10P2Z1bmN0aW9uIGdldCh0KXtyZXR1cm4gZyYmIXModCk/dm9pZCAwOm4uY2FsbCh0aGlzLDA9PT10PzA6dCl9OiJhZGQiPT10P2Z1bmN0aW9uIGFkZCh0KXtyZXR1cm4gbi5jYWxsKHRoaXMsMD09PXQ/MDp0KSx0aGlzfTpmdW5jdGlvbiBzZXQodCxyKXtyZXR1cm4gbi5jYWxsKHRoaXMsMD09PXQ/MDp0LHIpLHRoaXN9KX07aWYoImZ1bmN0aW9uIj09dHlwZW9mIHgmJihnfHx3LmZvckVhY2gmJiFsKGZ1bmN0aW9uKCl7KG5ldyB4KS5lbnRyaWVzKCkubmV4dCgpfSkpKXt2YXIgRT1uZXcgeCxPPUVbbV0oZz97fTotMCwxKSE9RSxGPWwoZnVuY3Rpb24oKXtFLmhhcygxKX0pLFA9aChmdW5jdGlvbih0KXtuZXcgeCh0KX0pLE09IWcmJmwoZnVuY3Rpb24oKXtmb3IodmFyIHQ9bmV3IHgsbj01O24tLTspdFttXShuLG4pO3JldHVybiF0LmhhcygtMCl9KTtQfHwoeD1uKGZ1bmN0aW9uKG4scil7YShuLHgsdCk7dmFyIGU9cChuZXcgYixuLHgpO3JldHVybiB2b2lkIDAhPXImJmYocix5LGVbbV0sZSksZX0pLHgucHJvdG90eXBlPXcsdy5jb25zdHJ1Y3Rvcj14KSwoRnx8TSkmJihfKCJkZWxldGUiKSxfKCJoYXMiKSx5JiZfKCJnZXQiKSksKE18fE8pJiZfKG0pLGcmJncuY2xlYXImJmRlbGV0ZSB3LmNsZWFyfWVsc2UgeD1kLmdldENvbnN0cnVjdG9yKG4sdCx5LG0pLHUoeC5wcm90b3R5cGUsciksYy5ORUVEPSEwO3JldHVybiB2KHgsdCksU1t0XT14LGkoaS5HK2kuVytpLkYqKHghPWIpLFMpLGd8fGQuc2V0U3Ryb25nKHgsdCx5KSx4fX0sezMyOjMyLDM0OjM0LDM3OjM3LDM4OjM4LDQzOjQzLDQ5OjQ5LDU0OjU0LDY6Niw2Mjo2Miw4Njo4Niw4Nzo4Nyw5Mjo5Mn1dLDIzOltmdW5jdGlvbih0LG4scil7dmFyIGU9bi5leHBvcnRzPXt2ZXJzaW9uOiIyLjQuMCJ9OyJudW1iZXIiPT10eXBlb2YgX19lJiYoX19lPWUpfSx7fV0sMjQ6W2Z1bmN0aW9uKHQsbixyKXsidXNlIHN0cmljdCI7dmFyIGU9dCg2NyksaT10KDg1KTtuLmV4cG9ydHM9ZnVuY3Rpb24odCxuLHIpe24gaW4gdD9lLmYodCxuLGkoMCxyKSk6dFtuXT1yfX0sezY3OjY3LDg1Ojg1fV0sMjU6W2Z1bmN0aW9uKHQsbixyKXt2YXIgZT10KDMpO24uZXhwb3J0cz1mdW5jdGlvbih0LG4scil7aWYoZSh0KSx2b2lkIDA9PT1uKXJldHVybiB0O3N3aXRjaChyKXtjYXNlIDE6cmV0dXJuIGZ1bmN0aW9uKHIpe3JldHVybiB0LmNhbGwobixyKX07Y2FzZSAyOnJldHVybiBmdW5jdGlvbihyLGUpe3JldHVybiB0LmNhbGwobixyLGUpfTtjYXNlIDM6cmV0dXJuIGZ1bmN0aW9uKHIsZSxpKXtyZXR1cm4gdC5jYWxsKG4scixlLGkpfX1yZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdC5hcHBseShuLGFyZ3VtZW50cyl9fX0sezM6M31dLDI2OltmdW5jdGlvbih0LG4scil7InVzZSBzdHJpY3QiO3ZhciBlPXQoNyksaT10KDExMCksbz0ibnVtYmVyIjtuLmV4cG9ydHM9ZnVuY3Rpb24odCl7aWYoInN0cmluZyIhPT10JiZ0IT09byYmImRlZmF1bHQiIT09dCl0aHJvdyBUeXBlRXJyb3IoIkluY29ycmVjdCBoaW50Iik7cmV0dXJuIGkoZSh0aGlzKSx0IT1vKX19LHsxMTA6MTEwLDc6N31dLDI3OltmdW5jdGlvbih0LG4scil7bi5leHBvcnRzPWZ1bmN0aW9uKHQpe2lmKHZvaWQgMD09dCl0aHJvdyBUeXBlRXJyb3IoIkNhbid0IGNhbGwgbWV0aG9kIG9uICAiK3QpO3JldHVybiB0fX0se31dLDI4OltmdW5jdGlvbih0LG4scil7bi5leHBvcnRzPSF0KDM0KShmdW5jdGlvbigpe3JldHVybiA3IT1PYmplY3QuZGVmaW5lUHJvcGVydHkoe30sImEiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gN319KS5hfSl9LHszNDozNH1dLDI5OltmdW5jdGlvbih0LG4scil7dmFyIGU9dCg0OSksaT10KDM4KS5kb2N1bWVudCxvPWUoaSkmJmUoaS5jcmVhdGVFbGVtZW50KTtuLmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIG8/aS5jcmVhdGVFbGVtZW50KHQpOnt9fX0sezM4OjM4LDQ5OjQ5fV0sMzA6W2Z1bmN0aW9uKHQsbixyKXtuLmV4cG9ydHM9ImNvbnN0cnVjdG9yLGhhc093blByb3BlcnR5LGlzUHJvdG90eXBlT2YscHJvcGVydHlJc0VudW1lcmFibGUsdG9Mb2NhbGVTdHJpbmcsdG9TdHJpbmcsdmFsdWVPZiIuc3BsaXQoIiwiKX0se31dLDMxOltmdW5jdGlvbih0LG4scil7dmFyIGU9dCg3NiksaT10KDczKSxvPXQoNzcpO24uZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgbj1lKHQpLHI9aS5mO2lmKHIpZm9yKHZhciB1LGM9cih0KSxmPW8uZixhPTA7Yy5sZW5ndGg+YTspZi5jYWxsKHQsdT1jW2ErK10pJiZuLnB1c2godSk7cmV0dXJuIG59fSx7NzM6NzMsNzY6NzYsNzc6Nzd9XSwzMjpbZnVuY3Rpb24odCxuLHIpe3ZhciBlPXQoMzgpLGk9dCgyMyksbz10KDQwKSx1PXQoODcpLGM9dCgyNSksZj0icHJvdG90eXBlIixhPWZ1bmN0aW9uKHQsbixyKXt2YXIgcyxsLGgsdixwPXQmYS5GLGQ9dCZhLkcseT10JmEuUyxnPXQmYS5QLGI9dCZhLkIseD1kP2U6eT9lW25dfHwoZVtuXT17fSk6KGVbbl18fHt9KVtmXSxtPWQ/aTppW25dfHwoaVtuXT17fSksdz1tW2ZdfHwobVtmXT17fSk7ZCYmKHI9bik7Zm9yKHMgaW4gcilsPSFwJiZ4JiZ2b2lkIDAhPT14W3NdLGg9KGw/eDpyKVtzXSx2PWImJmw/YyhoLGUpOmcmJiJmdW5jdGlvbiI9PXR5cGVvZiBoP2MoRnVuY3Rpb24uY2FsbCxoKTpoLHgmJnUoeCxzLGgsdCZhLlUpLG1bc10hPWgmJm8obSxzLHYpLGcmJndbc10hPWgmJih3W3NdPWgpfTtlLmNvcmU9aSxhLkY9MSxhLkc9MixhLlM9NCxhLlA9OCxhLkI9MTYsYS5XPTMyLGEuVT02NCxhLlI9MTI4LG4uZXhwb3J0cz1hfSx7MjM6MjMsMjU6MjUsMzg6MzgsNDA6NDAsODc6ODd9XSwzMzpbZnVuY3Rpb24odCxuLHIpe3ZhciBlPXQoMTE3KSgibWF0Y2giKTtuLmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIG49Ly4vO3RyeXsiLy4vIlt0XShuKX1jYXRjaChyKXt0cnl7cmV0dXJuIG5bZV09ITEsISIvLi8iW3RdKG4pfWNhdGNoKHQpe319cmV0dXJuITB9fSx7MTE3OjExN31dLDM0OltmdW5jdGlvbih0LG4scil7bi5leHBvcnRzPWZ1bmN0aW9uKHQpe3RyeXtyZXR1cm4hIXQoKX1jYXRjaCh0KXtyZXR1cm4hMH19fSx7fV0sMzU6W2Z1bmN0aW9uKHQsbixyKXsidXNlIHN0cmljdCI7dmFyIGU9dCg0MCksaT10KDg3KSxvPXQoMzQpLHU9dCgyNyksYz10KDExNyk7bi5leHBvcnRzPWZ1bmN0aW9uKHQsbixyKXt2YXIgZj1jKHQpLGE9cih1LGYsIiJbdF0pLHM9YVswXSxsPWFbMV07byhmdW5jdGlvbigpe3ZhciBuPXt9O3JldHVybiBuW2ZdPWZ1bmN0aW9uKCl7cmV0dXJuIDd9LDchPSIiW3RdKG4pfSkmJihpKFN0cmluZy5wcm90b3R5cGUsdCxzKSxlKFJlZ0V4cC5wcm90b3R5cGUsZiwyPT1uP2Z1bmN0aW9uKHQsbil7cmV0dXJuIGwuY2FsbCh0LHRoaXMsbil9OmZ1bmN0aW9uKHQpe3JldHVybiBsLmNhbGwodCx0aGlzKX0pKX19LHsxMTc6MTE3LDI3OjI3LDM0OjM0LDQwOjQwLDg3Ojg3fV0sMzY6W2Z1bmN0aW9uKHQsbixyKXsidXNlIHN0cmljdCI7dmFyIGU9dCg3KTtuLmV4cG9ydHM9ZnVuY3Rpb24oKXt2YXIgdD1lKHRoaXMpLG49IiI7cmV0dXJuIHQuZ2xvYmFsJiYobis9ImciKSx0Lmlnbm9yZUNhc2UmJihuKz0iaSIpLHQubXVsdGlsaW5lJiYobis9Im0iKSx0LnVuaWNvZGUmJihuKz0idSIpLHQuc3RpY2t5JiYobis9InkiKSxufX0sezc6N31dLDM3OltmdW5jdGlvbih0LG4scil7dmFyIGU9dCgyNSksaT10KDUxKSxvPXQoNDYpLHU9dCg3KSxjPXQoMTA4KSxmPXQoMTE4KSxhPXt9LHM9e30scj1uLmV4cG9ydHM9ZnVuY3Rpb24odCxuLHIsbCxoKXt2YXIgdixwLGQseSxnPWg/ZnVuY3Rpb24oKXtyZXR1cm4gdH06Zih0KSxiPWUocixsLG4/MjoxKSx4PTA7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGcpdGhyb3cgVHlwZUVycm9yKHQrIiBpcyBub3QgaXRlcmFibGUhIik7aWYobyhnKSl7Zm9yKHY9Yyh0Lmxlbmd0aCk7dj54O3grKylpZih5PW4/Yih1KHA9dFt4XSlbMF0scFsxXSk6Yih0W3hdKSx5PT09YXx8eT09PXMpcmV0dXJuIHl9ZWxzZSBmb3IoZD1nLmNhbGwodCk7IShwPWQubmV4dCgpKS5kb25lOylpZih5PWkoZCxiLHAudmFsdWUsbikseT09PWF8fHk9PT1zKXJldHVybiB5fTtyLkJSRUFLPWEsci5SRVRVUk49c30sezEwODoxMDgsMTE4OjExOCwyNToyNSw0Njo0Niw1MTo1MSw3Ojd9XSwzODpbZnVuY3Rpb24odCxuLHIpe3ZhciBlPW4uZXhwb3J0cz0idW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyYmd2luZG93Lk1hdGg9PU1hdGg/d2luZG93OiJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZiYmc2VsZi5NYXRoPT1NYXRoP3NlbGY6RnVuY3Rpb24oInJldHVybiB0aGlzIikoKTsibnVtYmVyIj09dHlwZW9mIF9fZyYmKF9fZz1lKX0se31dLDM5OltmdW5jdGlvbih0LG4scil7dmFyIGU9e30uaGFzT3duUHJvcGVydHk7bi5leHBvcnRzPWZ1bmN0aW9uKHQsbil7cmV0dXJuIGUuY2FsbCh0LG4pfX0se31dLDQwOltmdW5jdGlvbih0LG4scil7dmFyIGU9dCg2NyksaT10KDg1KTtuLmV4cG9ydHM9dCgyOCk/ZnVuY3Rpb24odCxuLHIpe3JldHVybiBlLmYodCxuLGkoMSxyKSl9OmZ1bmN0aW9uKHQsbixyKXtyZXR1cm4gdFtuXT1yLHR9fSx7Mjg6MjgsNjc6NjcsODU6ODV9XSw0MTpbZnVuY3Rpb24odCxuLHIpe24uZXhwb3J0cz10KDM4KS5kb2N1bWVudCYmZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50fSx7Mzg6Mzh9XSw0MjpbZnVuY3Rpb24odCxuLHIpe24uZXhwb3J0cz0hdCgyOCkmJiF0KDM0KShmdW5jdGlvbigpe3JldHVybiA3IT1PYmplY3QuZGVmaW5lUHJvcGVydHkodCgyOSkoImRpdiIpLCJhIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDd9fSkuYX0pfSx7Mjg6MjgsMjk6MjksMzQ6MzR9XSw0MzpbZnVuY3Rpb24odCxuLHIpe3ZhciBlPXQoNDkpLGk9dCg5MCkuc2V0O24uZXhwb3J0cz1mdW5jdGlvbih0LG4scil7dmFyIG8sdT1uLmNvbnN0cnVjdG9yO3JldHVybiB1IT09ciYmImZ1bmN0aW9uIj09dHlwZW9mIHUmJihvPXUucHJvdG90eXBlKSE9PXIucHJvdG90eXBlJiZlKG8pJiZpJiZpKHQsbyksdH19LHs0OTo0OSw5MDo5MH1dLDQ0OltmdW5jdGlvbih0LG4scil7bi5leHBvcnRzPWZ1bmN0aW9uKHQsbixyKXt2YXIgZT12b2lkIDA9PT1yO3N3aXRjaChuLmxlbmd0aCl7Y2FzZSAwOnJldHVybiBlP3QoKTp0LmNhbGwocik7Y2FzZSAxOnJldHVybiBlP3QoblswXSk6dC5jYWxsKHIsblswXSk7Y2FzZSAyOnJldHVybiBlP3QoblswXSxuWzFdKTp0LmNhbGwocixuWzBdLG5bMV0pO2Nhc2UgMzpyZXR1cm4gZT90KG5bMF0sblsxXSxuWzJdKTp0LmNhbGwocixuWzBdLG5bMV0sblsyXSk7Y2FzZSA0OnJldHVybiBlP3QoblswXSxuWzFdLG5bMl0sblszXSk6dC5jYWxsKHIsblswXSxuWzFdLG5bMl0sblszXSl9cmV0dXJuIHQuYXBwbHkocixuKX19LHt9XSw0NTpbZnVuY3Rpb24odCxuLHIpe3ZhciBlPXQoMTgpO24uZXhwb3J0cz1PYmplY3QoInoiKS5wcm9wZXJ0eUlzRW51bWVyYWJsZSgwKT9PYmplY3Q6ZnVuY3Rpb24odCl7cmV0dXJuIlN0cmluZyI9PWUodCk/dC5zcGxpdCgiIik6T2JqZWN0KHQpfX0sezE4OjE4fV0sNDY6W2Z1bmN0aW9uKHQsbixyKXt2YXIgZT10KDU2KSxpPXQoMTE3KSgiaXRlcmF0b3IiKSxvPUFycmF5LnByb3RvdHlwZTtuLmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIHZvaWQgMCE9PXQmJihlLkFycmF5PT09dHx8b1tpXT09PXQpfX0sezExNzoxMTcsNTY6NTZ9XSw0NzpbZnVuY3Rpb24odCxuLHIpe3ZhciBlPXQoMTgpO24uZXhwb3J0cz1BcnJheS5pc0FycmF5fHxmdW5jdGlvbiBpc0FycmF5KHQpe3JldHVybiJBcnJheSI9PWUodCl9fSx7MTg6MTh9XSw0ODpbZnVuY3Rpb24odCxuLHIpe3ZhciBlPXQoNDkpLGk9TWF0aC5mbG9vcjtuLmV4cG9ydHM9ZnVuY3Rpb24gaXNJbnRlZ2VyKHQpe3JldHVybiFlKHQpJiZpc0Zpbml0ZSh0KSYmaSh0KT09PXR9fSx7NDk6NDl9XSw0OTpbZnVuY3Rpb24odCxuLHIpe24uZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIHQ/bnVsbCE9PXQ6ImZ1bmN0aW9uIj09dHlwZW9mIHR9fSx7fV0sNTA6W2Z1bmN0aW9uKHQsbixyKXt2YXIgZT10KDQ5KSxpPXQoMTgpLG89dCgxMTcpKCJtYXRjaCIpO24uZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgbjtyZXR1cm4gZSh0KSYmKHZvaWQgMCE9PShuPXRbb10pPyEhbjoiUmVnRXhwIj09aSh0KSl9fSx7MTE3OjExNywxODoxOCw0OTo0OX1dLDUxOltmdW5jdGlvbih0LG4scil7dmFyIGU9dCg3KTtuLmV4cG9ydHM9ZnVuY3Rpb24odCxuLHIsaSl7dHJ5e3JldHVybiBpP24oZShyKVswXSxyWzFdKTpuKHIpfWNhdGNoKG4pe3ZhciBvPXQucmV0dXJuO3Rocm93IHZvaWQgMCE9PW8mJmUoby5jYWxsKHQpKSxufX19LHs3Ojd9XSw1MjpbZnVuY3Rpb24odCxuLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgZT10KDY2KSxpPXQoODUpLG89dCg5MiksdT17fTt0KDQwKSh1LHQoMTE3KSgiaXRlcmF0b3IiKSxmdW5jdGlvbigpe3JldHVybiB0aGlzfSksbi5leHBvcnRzPWZ1bmN0aW9uKHQsbixyKXt0LnByb3RvdHlwZT1lKHUse25leHQ6aSgxLHIpfSksbyh0LG4rIiBJdGVyYXRvciIpfX0sezExNzoxMTcsNDA6NDAsNjY6NjYsODU6ODUsOTI6OTJ9XSw1MzpbZnVuY3Rpb24odCxuLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgZT10KDU4KSxpPXQoMzIpLG89dCg4NyksdT10KDQwKSxjPXQoMzkpLGY9dCg1NiksYT10KDUyKSxzPXQoOTIpLGw9dCg3NCksaD10KDExNykoIml0ZXJhdG9yIiksdj0hKFtdLmtleXMmJiJuZXh0ImluW10ua2V5cygpKSxwPSJAQGl0ZXJhdG9yIixkPSJrZXlzIix5PSJ2YWx1ZXMiLGc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc307bi5leHBvcnRzPWZ1bmN0aW9uKHQsbixyLGIseCxtLHcpe2EocixuLGIpO3ZhciBTLF8sRSxPPWZ1bmN0aW9uKHQpe2lmKCF2JiZ0IGluIEEpcmV0dXJuIEFbdF07c3dpdGNoKHQpe2Nhc2UgZDpyZXR1cm4gZnVuY3Rpb24ga2V5cygpe3JldHVybiBuZXcgcih0aGlzLHQpfTtjYXNlIHk6cmV0dXJuIGZ1bmN0aW9uIHZhbHVlcygpe3JldHVybiBuZXcgcih0aGlzLHQpfX1yZXR1cm4gZnVuY3Rpb24gZW50cmllcygpe3JldHVybiBuZXcgcih0aGlzLHQpfX0sRj1uKyIgSXRlcmF0b3IiLFA9eD09eSxNPSExLEE9dC5wcm90b3R5cGUsST1BW2hdfHxBW3BdfHx4JiZBW3hdLGo9SXx8Tyh4KSxOPXg/UD9PKCJlbnRyaWVzIik6ajp2b2lkIDAsaz0iQXJyYXkiPT1uP0EuZW50cmllc3x8STpJO2lmKGsmJihFPWwoay5jYWxsKG5ldyB0KSksRSE9PU9iamVjdC5wcm90b3R5cGUmJihzKEUsRiwhMCksZXx8YyhFLGgpfHx1KEUsaCxnKSkpLFAmJkkmJkkubmFtZSE9PXkmJihNPSEwLGo9ZnVuY3Rpb24gdmFsdWVzKCl7cmV0dXJuIEkuY2FsbCh0aGlzKX0pLGUmJiF3fHwhdiYmIU0mJkFbaF18fHUoQSxoLGopLGZbbl09aixmW0ZdPWcseClpZihTPXt2YWx1ZXM6UD9qOk8oeSksa2V5czptP2o6TyhkKSxlbnRyaWVzOk59LHcpZm9yKF8gaW4gUylfIGluIEF8fG8oQSxfLFNbX10pO2Vsc2UgaShpLlAraS5GKih2fHxNKSxuLFMpO3JldHVybiBTfX0sezExNzoxMTcsMzI6MzIsMzk6MzksNDA6NDAsNTI6NTIsNTY6NTYsNTg6NTgsNzQ6NzQsODc6ODcsOTI6OTJ9XSw1NDpbZnVuY3Rpb24odCxuLHIpe3ZhciBlPXQoMTE3KSgiaXRlcmF0b3IiKSxpPSExO3RyeXt2YXIgbz1bN11bZV0oKTtvLnJldHVybj1mdW5jdGlvbigpe2k9ITB9LEFycmF5LmZyb20obyxmdW5jdGlvbigpe3Rocm93IDJ9KX1jYXRjaCh0KXt9bi5leHBvcnRzPWZ1bmN0aW9uKHQsbil7aWYoIW4mJiFpKXJldHVybiExO3ZhciByPSExO3RyeXt2YXIgbz1bN10sdT1vW2VdKCk7dS5uZXh0PWZ1bmN0aW9uKCl7cmV0dXJue2RvbmU6cj0hMH19LG9bZV09ZnVuY3Rpb24oKXtyZXR1cm4gdX0sdChvKX1jYXRjaCh0KXt9cmV0dXJuIHJ9fSx7MTE3OjExN31dLDU1OltmdW5jdGlvbih0LG4scil7bi5leHBvcnRzPWZ1bmN0aW9uKHQsbil7cmV0dXJue3ZhbHVlOm4sZG9uZTohIXR9fX0se31dLDU2OltmdW5jdGlvbih0LG4scil7bi5leHBvcnRzPXt9fSx7fV0sNTc6W2Z1bmN0aW9uKHQsbixyKXt2YXIgZT10KDc2KSxpPXQoMTA3KTtuLmV4cG9ydHM9ZnVuY3Rpb24odCxuKXtmb3IodmFyIHIsbz1pKHQpLHU9ZShvKSxjPXUubGVuZ3RoLGY9MDtjPmY7KWlmKG9bcj11W2YrK11dPT09bilyZXR1cm4gcn19LHsxMDc6MTA3LDc2Ojc2fV0sNTg6W2Z1bmN0aW9uKHQsbixyKXtuLmV4cG9ydHM9ITF9LHt9XSw1OTpbZnVuY3Rpb24odCxuLHIpe3ZhciBlPU1hdGguZXhwbTE7bi5leHBvcnRzPSFlfHxlKDEwKT4yMjAyNS40NjU3OTQ4MDY3MTh8fGUoMTApPDIyMDI1LjQ2NTc5NDgwNjcxOHx8ZSgtMmUtMTcpIT0tMmUtMTc/ZnVuY3Rpb24gZXhwbTEodCl7cmV0dXJuIDA9PSh0PSt0KT90OnQ+LTFlLTYmJnQ8MWUtNj90K3QqdC8yOk1hdGguZXhwKHQpLTF9OmV9LHt9XSw2MDpbZnVuY3Rpb24odCxuLHIpe24uZXhwb3J0cz1NYXRoLmxvZzFwfHxmdW5jdGlvbiBsb2cxcCh0KXtyZXR1cm4odD0rdCk+LTFlLTgmJnQ8MWUtOD90LXQqdC8yOk1hdGgubG9nKDErdCl9fSx7fV0sNjE6W2Z1bmN0aW9uKHQsbixyKXtuLmV4cG9ydHM9TWF0aC5zaWdufHxmdW5jdGlvbiBzaWduKHQpe3JldHVybiAwPT0odD0rdCl8fHQhPXQ/dDp0PDA/LTE6MX19LHt9XSw2MjpbZnVuY3Rpb24odCxuLHIpe3ZhciBlPXQoMTE0KSgibWV0YSIpLGk9dCg0OSksbz10KDM5KSx1PXQoNjcpLmYsYz0wLGY9T2JqZWN0LmlzRXh0ZW5zaWJsZXx8ZnVuY3Rpb24oKXtyZXR1cm4hMH0sYT0hdCgzNCkoZnVuY3Rpb24oKXtyZXR1cm4gZihPYmplY3QucHJldmVudEV4dGVuc2lvbnMoe30pKX0pLHM9ZnVuY3Rpb24odCl7dSh0LGUse3ZhbHVlOntpOiJPIisgKytjLHc6e319fSl9LGw9ZnVuY3Rpb24odCxuKXtpZighaSh0KSlyZXR1cm4ic3ltYm9sIj09dHlwZW9mIHQ/dDooInN0cmluZyI9PXR5cGVvZiB0PyJTIjoiUCIpK3Q7aWYoIW8odCxlKSl7aWYoIWYodCkpcmV0dXJuIkYiO2lmKCFuKXJldHVybiJFIjtzKHQpfXJldHVybiB0W2VdLml9LGg9ZnVuY3Rpb24odCxuKXtpZighbyh0LGUpKXtpZighZih0KSlyZXR1cm4hMDtpZighbilyZXR1cm4hMTtzKHQpfXJldHVybiB0W2VdLnd9LHY9ZnVuY3Rpb24odCl7cmV0dXJuIGEmJnAuTkVFRCYmZih0KSYmIW8odCxlKSYmcyh0KSx0fSxwPW4uZXhwb3J0cz17S0VZOmUsTkVFRDohMSxmYXN0S2V5OmwsZ2V0V2VhazpoLG9uRnJlZXplOnZ9fSx7MTE0OjExNCwzNDozNCwzOTozOSw0OTo0OSw2Nzo2N31dLDYzOltmdW5jdGlvbih0LG4scil7dmFyIGU9dCgxNDkpLGk9dCgzMiksbz10KDk0KSgibWV0YWRhdGEiKSx1PW8uc3RvcmV8fChvLnN0b3JlPW5ldyh0KDI1NSkpKSxjPWZ1bmN0aW9uKHQsbixyKXt2YXIgaT11LmdldCh0KTtpZighaSl7aWYoIXIpcmV0dXJuO3Uuc2V0KHQsaT1uZXcgZSl9dmFyIG89aS5nZXQobik7aWYoIW8pe2lmKCFyKXJldHVybjtpLnNldChuLG89bmV3IGUpfXJldHVybiBvfSxmPWZ1bmN0aW9uKHQsbixyKXt2YXIgZT1jKG4sciwhMSk7cmV0dXJuIHZvaWQgMCE9PWUmJmUuaGFzKHQpfSxhPWZ1bmN0aW9uKHQsbixyKXt2YXIgZT1jKG4sciwhMSk7cmV0dXJuIHZvaWQgMD09PWU/dm9pZCAwOmUuZ2V0KHQpfSxzPWZ1bmN0aW9uKHQsbixyLGUpe2MocixlLCEwKS5zZXQodCxuKX0sbD1mdW5jdGlvbih0LG4pe3ZhciByPWModCxuLCExKSxlPVtdO3JldHVybiByJiZyLmZvckVhY2goZnVuY3Rpb24odCxuKXtlLnB1c2gobil9KSxlfSxoPWZ1bmN0aW9uKHQpe3JldHVybiB2b2lkIDA9PT10fHwic3ltYm9sIj09dHlwZW9mIHQ/dDpTdHJpbmcodCl9LHY9ZnVuY3Rpb24odCl7aShpLlMsIlJlZmxlY3QiLHQpfTtuLmV4cG9ydHM9e3N0b3JlOnUsbWFwOmMsaGFzOmYsZ2V0OmEsc2V0OnMsa2V5czpsLGtleTpoLGV4cDp2fX0sezE0OToxNDksMjU1OjI1NSwzMjozMiw5NDo5NH1dLDY0OltmdW5jdGlvbih0LG4scil7dmFyIGU9dCgzOCksaT10KDEwNCkuc2V0LG89ZS5NdXRhdGlvbk9ic2VydmVyfHxlLldlYktpdE11dGF0aW9uT2JzZXJ2ZXIsdT1lLnByb2Nlc3MsYz1lLlByb21pc2UsZj0icHJvY2VzcyI9PXQoMTgpKHUpO24uZXhwb3J0cz1mdW5jdGlvbigpe3ZhciB0LG4scixhPWZ1bmN0aW9uKCl7dmFyIGUsaTtmb3IoZiYmKGU9dS5kb21haW4pJiZlLmV4aXQoKTt0Oyl7aT10LmZuLHQ9dC5uZXh0O3RyeXtpKCl9Y2F0Y2goZSl7dGhyb3cgdD9yKCk6bj12b2lkIDAsZX19bj12b2lkIDAsZSYmZS5lbnRlcigpfTtpZihmKXI9ZnVuY3Rpb24oKXt1Lm5leHRUaWNrKGEpfTtlbHNlIGlmKG8pe3ZhciBzPSEwLGw9ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIiIpO25ldyBvKGEpLm9ic2VydmUobCx7Y2hhcmFjdGVyRGF0YTohMH0pLHI9ZnVuY3Rpb24oKXtsLmRhdGE9cz0hc319ZWxzZSBpZihjJiZjLnJlc29sdmUpe3ZhciBoPWMucmVzb2x2ZSgpO3I9ZnVuY3Rpb24oKXtoLnRoZW4oYSl9fWVsc2Ugcj1mdW5jdGlvbigpe2kuY2FsbChlLGEpfTtyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIGk9e2ZuOmUsbmV4dDp2b2lkIDB9O24mJihuLm5leHQ9aSksdHx8KHQ9aSxyKCkpLG49aX19fSx7MTA0OjEwNCwxODoxOCwzODozOH1dLDY1OltmdW5jdGlvbih0LG4scil7InVzZSBzdHJpY3QiO3ZhciBlPXQoNzYpLGk9dCg3Myksbz10KDc3KSx1PXQoMTA5KSxjPXQoNDUpLGY9T2JqZWN0LmFzc2lnbjtuLmV4cG9ydHM9IWZ8fHQoMzQpKGZ1bmN0aW9uKCl7dmFyIHQ9e30sbj17fSxyPVN5bWJvbCgpLGU9ImFiY2RlZmdoaWprbG1ub3BxcnN0IjtyZXR1cm4gdFtyXT03LGUuc3BsaXQoIiIpLmZvckVhY2goZnVuY3Rpb24odCl7blt0XT10fSksNyE9Zih7fSx0KVtyXXx8T2JqZWN0LmtleXMoZih7fSxuKSkuam9pbigiIikhPWV9KT9mdW5jdGlvbiBhc3NpZ24odCxuKXtmb3IodmFyIHI9dSh0KSxmPWFyZ3VtZW50cy5sZW5ndGgsYT0xLHM9aS5mLGw9by5mO2Y+YTspZm9yKHZhciBoLHY9Yyhhcmd1bWVudHNbYSsrXSkscD1zP2UodikuY29uY2F0KHModikpOmUodiksZD1wLmxlbmd0aCx5PTA7ZD55OylsLmNhbGwodixoPXBbeSsrXSkmJihyW2hdPXZbaF0pO3JldHVybiByfTpmfSx7MTA5OjEwOSwzNDozNCw0NTo0NSw3Mzo3Myw3Njo3Niw3Nzo3N31dLDY2OltmdW5jdGlvbih0LG4scil7dmFyIGU9dCg3KSxpPXQoNjgpLG89dCgzMCksdT10KDkzKSgiSUVfUFJPVE8iKSxjPWZ1bmN0aW9uKCl7fSxmPSJwcm90b3R5cGUiLGE9ZnVuY3Rpb24oKXt2YXIgbixyPXQoMjkpKCJpZnJhbWUiKSxlPW8ubGVuZ3RoLGk9IjwiLHU9Ij4iO2ZvcihyLnN0eWxlLmRpc3BsYXk9Im5vbmUiLHQoNDEpLmFwcGVuZENoaWxkKHIpLHIuc3JjPSJqYXZhc2NyaXB0OiIsbj1yLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQsbi5vcGVuKCksbi53cml0ZShpKyJzY3JpcHQiK3UrImRvY3VtZW50LkY9T2JqZWN0IitpKyIvc2NyaXB0Iit1KSxuLmNsb3NlKCksYT1uLkY7ZS0tOylkZWxldGUgYVtmXVtvW2VdXTtyZXR1cm4gYSgpfTtuLmV4cG9ydHM9T2JqZWN0LmNyZWF0ZXx8ZnVuY3Rpb24gY3JlYXRlKHQsbil7dmFyIHI7cmV0dXJuIG51bGwhPT10PyhjW2ZdPWUodCkscj1uZXcgYyxjW2ZdPW51bGwsclt1XT10KTpyPWEoKSx2b2lkIDA9PT1uP3I6aShyLG4pfX0sezI5OjI5LDMwOjMwLDQxOjQxLDY4OjY4LDc6Nyw5Mzo5M31dLDY3OltmdW5jdGlvbih0LG4scil7dmFyIGU9dCg3KSxpPXQoNDIpLG89dCgxMTApLHU9T2JqZWN0LmRlZmluZVByb3BlcnR5O3IuZj10KDI4KT9PYmplY3QuZGVmaW5lUHJvcGVydHk6ZnVuY3Rpb24gZGVmaW5lUHJvcGVydHkodCxuLHIpe2lmKGUodCksbj1vKG4sITApLGUociksaSl0cnl7cmV0dXJuIHUodCxuLHIpfWNhdGNoKHQpe31pZigiZ2V0ImluIHJ8fCJzZXQiaW4gcil0aHJvdyBUeXBlRXJyb3IoIkFjY2Vzc29ycyBub3Qgc3VwcG9ydGVkISIpO3JldHVybiJ2YWx1ZSJpbiByJiYodFtuXT1yLnZhbHVlKSx0fX0sezExMDoxMTAsMjg6MjgsNDI6NDIsNzo3fV0sNjg6W2Z1bmN0aW9uKHQsbixyKXt2YXIgZT10KDY3KSxpPXQoNyksbz10KDc2KTtuLmV4cG9ydHM9dCgyOCk/T2JqZWN0LmRlZmluZVByb3BlcnRpZXM6ZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyh0LG4pe2kodCk7Zm9yKHZhciByLHU9byhuKSxjPXUubGVuZ3RoLGY9MDtjPmY7KWUuZih0LHI9dVtmKytdLG5bcl0pO3JldHVybiB0fX0sezI4OjI4LDY3OjY3LDc6Nyw3Njo3Nn1dLDY5OltmdW5jdGlvbih0LG4scil7bi5leHBvcnRzPXQoNTgpfHwhdCgzNCkoZnVuY3Rpb24oKXt2YXIgbj1NYXRoLnJhbmRvbSgpO19fZGVmaW5lU2V0dGVyX18uY2FsbChudWxsLG4sZnVuY3Rpb24oKXt9KSxkZWxldGUgdCgzOClbbl19KX0sezM0OjM0LDM4OjM4LDU4OjU4fV0sNzA6W2Z1bmN0aW9uKHQsbixyKXt2YXIgZT10KDc3KSxpPXQoODUpLG89dCgxMDcpLHU9dCgxMTApLGM9dCgzOSksZj10KDQyKSxhPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7ci5mPXQoMjgpP2E6ZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbil7aWYodD1vKHQpLG49dShuLCEwKSxmKXRyeXtyZXR1cm4gYSh0LG4pfWNhdGNoKHQpe31pZihjKHQsbikpcmV0dXJuIGkoIWUuZi5jYWxsKHQsbiksdFtuXSl9fSx7MTA3OjEwNywxMTA6MTEwLDI4OjI4LDM5OjM5LDQyOjQyLDc3Ojc3LDg1Ojg1fV0sNzE6W2Z1bmN0aW9uKHQsbixyKXt2YXIgZT10KDEwNyksaT10KDcyKS5mLG89e30udG9TdHJpbmcsdT0ib2JqZWN0Ij09dHlwZW9mIHdpbmRvdyYmd2luZG93JiZPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcz9PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh3aW5kb3cpOltdLGM9ZnVuY3Rpb24odCl7dHJ5e3JldHVybiBpKHQpfWNhdGNoKHQpe3JldHVybiB1LnNsaWNlKCl9fTtuLmV4cG9ydHMuZj1mdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eU5hbWVzKHQpe3JldHVybiB1JiYiW29iamVjdCBXaW5kb3ddIj09by5jYWxsKHQpP2ModCk6aShlKHQpKX19LHsxMDc6MTA3LDcyOjcyfV0sNzI6W2Z1bmN0aW9uKHQsbixyKXt2YXIgZT10KDc1KSxpPXQoMzApLmNvbmNhdCgibGVuZ3RoIiwicHJvdG90eXBlIik7ci5mPU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzfHxmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eU5hbWVzKHQpe3JldHVybiBlKHQsaSl9fSx7MzA6MzAsNzU6NzV9XSw3MzpbZnVuY3Rpb24odCxuLHIpe3IuZj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzfSx7fV0sNzQ6W2Z1bmN0aW9uKHQsbixyKXt2YXIgZT10KDM5KSxpPXQoMTA5KSxvPXQoOTMpKCJJRV9QUk9UTyIpLHU9T2JqZWN0LnByb3RvdHlwZTtuLmV4cG9ydHM9T2JqZWN0LmdldFByb3RvdHlwZU9mfHxmdW5jdGlvbih0KXtyZXR1cm4gdD1pKHQpLGUodCxvKT90W29dOiJmdW5jdGlvbiI9PXR5cGVvZiB0LmNvbnN0cnVjdG9yJiZ0IGluc3RhbmNlb2YgdC5jb25zdHJ1Y3Rvcj90LmNvbnN0cnVjdG9yLnByb3RvdHlwZTp0IGluc3RhbmNlb2YgT2JqZWN0P3U6bnVsbH19LHsxMDk6MTA5LDM5OjM5LDkzOjkzfV0sNzU6W2Z1bmN0aW9uKHQsbixyKXt2YXIgZT10KDM5KSxpPXQoMTA3KSxvPXQoMTEpKCExKSx1PXQoOTMpKCJJRV9QUk9UTyIpO24uZXhwb3J0cz1mdW5jdGlvbih0LG4pe3ZhciByLGM9aSh0KSxmPTAsYT1bXTtmb3IociBpbiBjKXIhPXUmJmUoYyxyKSYmYS5wdXNoKHIpO2Zvcig7bi5sZW5ndGg+ZjspZShjLHI9bltmKytdKSYmKH5vKGEscil8fGEucHVzaChyKSk7cmV0dXJuIGF9fSx7MTA3OjEwNywxMToxMSwzOTozOSw5Mzo5M31dLDc2OltmdW5jdGlvbih0LG4scil7dmFyIGU9dCg3NSksaT10KDMwKTtuLmV4cG9ydHM9T2JqZWN0LmtleXN8fGZ1bmN0aW9uIGtleXModCl7cmV0dXJuIGUodCxpKX19LHszMDozMCw3NTo3NX1dLDc3OltmdW5jdGlvbih0LG4scil7ci5mPXt9LnByb3BlcnR5SXNFbnVtZXJhYmxlfSx7fV0sNzg6W2Z1bmN0aW9uKHQsbixyKXt2YXIgZT10KDMyKSxpPXQoMjMpLG89dCgzNCk7bi5leHBvcnRzPWZ1bmN0aW9uKHQsbil7dmFyIHI9KGkuT2JqZWN0fHx7fSlbdF18fE9iamVjdFt0XSx1PXt9O3VbdF09bihyKSxlKGUuUytlLkYqbyhmdW5jdGlvbigpe3IoMSl9KSwiT2JqZWN0Iix1KX19LHsyMzoyMywzMjozMiwzNDozNH1dLDc5OltmdW5jdGlvbih0LG4scil7dmFyIGU9dCg3NiksaT10KDEwNyksbz10KDc3KS5mO24uZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24obil7Zm9yKHZhciByLHU9aShuKSxjPWUodSksZj1jLmxlbmd0aCxhPTAscz1bXTtmPmE7KW8uY2FsbCh1LHI9Y1thKytdKSYmcy5wdXNoKHQ/W3IsdVtyXV06dVtyXSk7cmV0dXJuIHN9fX0sezEwNzoxMDcsNzY6NzYsNzc6Nzd9XSw4MDpbZnVuY3Rpb24odCxuLHIpe3ZhciBlPXQoNzIpLGk9dCg3Myksbz10KDcpLHU9dCgzOCkuUmVmbGVjdDtuLmV4cG9ydHM9dSYmdS5vd25LZXlzfHxmdW5jdGlvbiBvd25LZXlzKHQpe3ZhciBuPWUuZihvKHQpKSxyPWkuZjtyZXR1cm4gcj9uLmNvbmNhdChyKHQpKTpufX0sezM4OjM4LDc6Nyw3Mjo3Miw3Mzo3M31dLDgxOltmdW5jdGlvbih0LG4scil7dmFyIGU9dCgzOCkucGFyc2VGbG9hdCxpPXQoMTAyKS50cmltO24uZXhwb3J0cz0xL2UodCgxMDMpKyItMCIpIT09LSgxLzApP2Z1bmN0aW9uIHBhcnNlRmxvYXQodCl7dmFyIG49aShTdHJpbmcodCksMykscj1lKG4pO3JldHVybiAwPT09ciYmIi0iPT1uLmNoYXJBdCgwKT8tMDpyfTplfSx7MTAyOjEwMiwxMDM6MTAzLDM4OjM4fV0sODI6W2Z1bmN0aW9uKHQsbixyKXt2YXIgZT10KDM4KS5wYXJzZUludCxpPXQoMTAyKS50cmltLG89dCgxMDMpLHU9L15bXC0rXT8wW3hYXS87bi5leHBvcnRzPTghPT1lKG8rIjA4Iil8fDIyIT09ZShvKyIweDE2Iik/ZnVuY3Rpb24gcGFyc2VJbnQodCxuKXt2YXIgcj1pKFN0cmluZyh0KSwzKTtyZXR1cm4gZShyLG4+Pj4wfHwodS50ZXN0KHIpPzE2OjEwKSl9OmV9LHsxMDI6MTAyLDEwMzoxMDMsMzg6Mzh9XSw4MzpbZnVuY3Rpb24odCxuLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgZT10KDg0KSxpPXQoNDQpLG89dCgzKTtuLmV4cG9ydHM9ZnVuY3Rpb24oKXtmb3IodmFyIHQ9byh0aGlzKSxuPWFyZ3VtZW50cy5sZW5ndGgscj1BcnJheShuKSx1PTAsYz1lLl8sZj0hMTtuPnU7KShyW3VdPWFyZ3VtZW50c1t1KytdKT09PWMmJihmPSEwKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZSxvPXRoaXMsdT1hcmd1bWVudHMubGVuZ3RoLGE9MCxzPTA7aWYoIWYmJiF1KXJldHVybiBpKHQscixvKTtpZihlPXIuc2xpY2UoKSxmKWZvcig7bj5hO2ErKyllW2FdPT09YyYmKGVbYV09YXJndW1lbnRzW3MrK10pO2Zvcig7dT5zOyllLnB1c2goYXJndW1lbnRzW3MrK10pO3JldHVybiBpKHQsZSxvKX19fSx7MzozLDQ0OjQ0LDg0Ojg0fV0sODQ6W2Z1bmN0aW9uKHQsbixyKXtuLmV4cG9ydHM9dCgzOCl9LHszODozOH1dLDg1OltmdW5jdGlvbih0LG4scil7bi5leHBvcnRzPWZ1bmN0aW9uKHQsbil7cmV0dXJue2VudW1lcmFibGU6ISgxJnQpLGNvbmZpZ3VyYWJsZTohKDImdCksd3JpdGFibGU6ISg0JnQpLHZhbHVlOm59fX0se31dLDg2OltmdW5jdGlvbih0LG4scil7dmFyIGU9dCg4Nyk7bi5leHBvcnRzPWZ1bmN0aW9uKHQsbixyKXtmb3IodmFyIGkgaW4gbillKHQsaSxuW2ldLHIpO3JldHVybiB0fX0sezg3Ojg3fV0sODc6W2Z1bmN0aW9uKHQsbixyKXt2YXIgZT10KDM4KSxpPXQoNDApLG89dCgzOSksdT10KDExNCkoInNyYyIpLGM9InRvU3RyaW5nIixmPUZ1bmN0aW9uW2NdLGE9KCIiK2YpLnNwbGl0KGMpO3QoMjMpLmluc3BlY3RTb3VyY2U9ZnVuY3Rpb24odCl7cmV0dXJuIGYuY2FsbCh0KX0sKG4uZXhwb3J0cz1mdW5jdGlvbih0LG4scixjKXt2YXIgZj0iZnVuY3Rpb24iPT10eXBlb2YgcjtmJiYobyhyLCJuYW1lIil8fGkociwibmFtZSIsbikpLHRbbl0hPT1yJiYoZiYmKG8ocix1KXx8aShyLHUsdFtuXT8iIit0W25dOmEuam9pbihTdHJpbmcobikpKSksdD09PWU/dFtuXT1yOmM/dFtuXT90W25dPXI6aSh0LG4scik6KGRlbGV0ZSB0W25dLGkodCxuLHIpKSl9KShGdW5jdGlvbi5wcm90b3R5cGUsYyxmdW5jdGlvbiB0b1N0cmluZygpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzJiZ0aGlzW3VdfHxmLmNhbGwodGhpcyl9KX0sezExNDoxMTQsMjM6MjMsMzg6MzgsMzk6MzksNDA6NDB9XSw4ODpbZnVuY3Rpb24odCxuLHIpe24uZXhwb3J0cz1mdW5jdGlvbih0LG4pe3ZhciByPW49PT1PYmplY3Qobik/ZnVuY3Rpb24odCl7cmV0dXJuIG5bdF19Om47cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiBTdHJpbmcobikucmVwbGFjZSh0LHIpfX19LHt9XSw4OTpbZnVuY3Rpb24odCxuLHIpe24uZXhwb3J0cz1PYmplY3QuaXN8fGZ1bmN0aW9uIGlzKHQsbil7cmV0dXJuIHQ9PT1uPzAhPT10fHwxL3Q9PT0xL246dCE9dCYmbiE9bn19LHt9XSw5MDpbZnVuY3Rpb24odCxuLHIpe3ZhciBlPXQoNDkpLGk9dCg3KSxvPWZ1bmN0aW9uKHQsbil7aWYoaSh0KSwhZShuKSYmbnVsbCE9PW4pdGhyb3cgVHlwZUVycm9yKG4rIjogY2FuJ3Qgc2V0IGFzIHByb3RvdHlwZSEiKX07bi5leHBvcnRzPXtzZXQ6T2JqZWN0LnNldFByb3RvdHlwZU9mfHwoIl9fcHJvdG9fXyJpbnt9P2Z1bmN0aW9uKG4scixlKXt0cnl7ZT10KDI1KShGdW5jdGlvbi5jYWxsLHQoNzApLmYoT2JqZWN0LnByb3RvdHlwZSwiX19wcm90b19fIikuc2V0LDIpLGUobixbXSkscj0hKG4gaW5zdGFuY2VvZiBBcnJheSl9Y2F0Y2godCl7cj0hMH1yZXR1cm4gZnVuY3Rpb24gc2V0UHJvdG90eXBlT2YodCxuKXtyZXR1cm4gbyh0LG4pLHI/dC5fX3Byb3RvX189bjplKHQsbiksdH19KHt9LCExKTp2b2lkIDApLGNoZWNrOm99fSx7MjU6MjUsNDk6NDksNzo3LDcwOjcwfV0sOTE6W2Z1bmN0aW9uKHQsbixyKXsidXNlIHN0cmljdCI7dmFyIGU9dCgzOCksaT10KDY3KSxvPXQoMjgpLHU9dCgxMTcpKCJzcGVjaWVzIik7bi5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBuPWVbdF07byYmbiYmIW5bdV0mJmkuZihuLHUse2NvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc319KX19LHsxMTc6MTE3LDI4OjI4LDM4OjM4LDY3OjY3fV0sOTI6W2Z1bmN0aW9uKHQsbixyKXt2YXIgZT10KDY3KS5mLGk9dCgzOSksbz10KDExNykoInRvU3RyaW5nVGFnIik7bi5leHBvcnRzPWZ1bmN0aW9uKHQsbixyKXt0JiYhaSh0PXI/dDp0LnByb3RvdHlwZSxvKSYmZSh0LG8se2NvbmZpZ3VyYWJsZTohMCx2YWx1ZTpufSl9fSx7MTE3OjExNywzOTozOSw2Nzo2N31dLDkzOltmdW5jdGlvbih0LG4scil7dmFyIGU9dCg5NCkoImtleXMiKSxpPXQoMTE0KTtuLmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIGVbdF18fChlW3RdPWkodCkpfX0sezExNDoxMTQsOTQ6OTR9XSw5NDpbZnVuY3Rpb24odCxuLHIpe3ZhciBlPXQoMzgpLGk9Il9fY29yZS1qc19zaGFyZWRfXyIsbz1lW2ldfHwoZVtpXT17fSk7bi5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiBvW3RdfHwob1t0XT17fSl9fSx7Mzg6Mzh9XSw5NTpbZnVuY3Rpb24odCxuLHIpe3ZhciBlPXQoNyksaT10KDMpLG89dCgxMTcpKCJzcGVjaWVzIik7bi5leHBvcnRzPWZ1bmN0aW9uKHQsbil7dmFyIHIsdT1lKHQpLmNvbnN0cnVjdG9yO3JldHVybiB2b2lkIDA9PT11fHx2b2lkIDA9PShyPWUodSlbb10pP246aShyKX19LHsxMTc6MTE3LDM6Myw3Ojd9XSw5NjpbZnVuY3Rpb24odCxuLHIpe3ZhciBlPXQoMzQpO24uZXhwb3J0cz1mdW5jdGlvbih0LG4pe3JldHVybiEhdCYmZShmdW5jdGlvbigpe24/dC5jYWxsKG51bGwsZnVuY3Rpb24oKXt9LDEpOnQuY2FsbChudWxsKX0pfX0sezM0OjM0fV0sOTc6W2Z1bmN0aW9uKHQsbixyKXt2YXIgZT10KDEwNiksaT10KDI3KTtuLmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKG4scil7dmFyIG8sdSxjPVN0cmluZyhpKG4pKSxmPWUociksYT1jLmxlbmd0aDtyZXR1cm4gZjwwfHxmPj1hP3Q/IiI6dm9pZCAwOihvPWMuY2hhckNvZGVBdChmKSxvPDU1Mjk2fHxvPjU2MzE5fHxmKzE9PT1hfHwodT1jLmNoYXJDb2RlQXQoZisxKSk8NTYzMjB8fHU+NTczNDM/dD9jLmNoYXJBdChmKTpvOnQ/Yy5zbGljZShmLGYrMik6KG8tNTUyOTY8PDEwKSsodS01NjMyMCkrNjU1MzYpfX19LHsxMDY6MTA2LDI3OjI3fV0sOTg6W2Z1bmN0aW9uKHQsbixyKXt2YXIgZT10KDUwKSxpPXQoMjcpO24uZXhwb3J0cz1mdW5jdGlvbih0LG4scil7aWYoZShuKSl0aHJvdyBUeXBlRXJyb3IoIlN0cmluZyMiK3IrIiBkb2Vzbid0IGFjY2VwdCByZWdleCEiKTtyZXR1cm4gU3RyaW5nKGkodCkpfX0sezI3OjI3LDUwOjUwfV0sOTk6W2Z1bmN0aW9uKHQsbixyKXt2YXIgZT10KDMyKSxpPXQoMzQpLG89dCgyNyksdT0vIi9nLGM9ZnVuY3Rpb24odCxuLHIsZSl7dmFyIGk9U3RyaW5nKG8odCkpLGM9IjwiK247cmV0dXJuIiIhPT1yJiYoYys9IiAiK3IrJz0iJytTdHJpbmcoZSkucmVwbGFjZSh1LCImcXVvdDsiKSsnIicpLGMrIj4iK2krIjwvIituKyI+In07bi5leHBvcnRzPWZ1bmN0aW9uKHQsbil7dmFyIHI9e307clt0XT1uKGMpLGUoZS5QK2UuRippKGZ1bmN0aW9uKCl7dmFyIG49IiJbdF0oJyInKTtyZXR1cm4gbiE9PW4udG9Mb3dlckNhc2UoKXx8bi5zcGxpdCgnIicpLmxlbmd0aD4zfSksIlN0cmluZyIscil9fSx7Mjc6MjcsMzI6MzIsMzQ6MzR9XSwxMDA6W2Z1bmN0aW9uKHQsbixyKXt2YXIgZT10KDEwOCksaT10KDEwMSksbz10KDI3KTtuLmV4cG9ydHM9ZnVuY3Rpb24odCxuLHIsdSl7dmFyIGM9U3RyaW5nKG8odCkpLGY9Yy5sZW5ndGgsYT12b2lkIDA9PT1yPyIgIjpTdHJpbmcocikscz1lKG4pO2lmKHM8PWZ8fCIiPT1hKXJldHVybiBjO3ZhciBsPXMtZixoPWkuY2FsbChhLE1hdGguY2VpbChsL2EubGVuZ3RoKSk7cmV0dXJuIGgubGVuZ3RoPmwmJihoPWguc2xpY2UoMCxsKSksdT9oK2M6YytofX0sezEwMToxMDEsMTA4OjEwOCwyNzoyN31dLDEwMTpbZnVuY3Rpb24odCxuLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgZT10KDEwNiksaT10KDI3KTtuLmV4cG9ydHM9ZnVuY3Rpb24gcmVwZWF0KHQpe3ZhciBuPVN0cmluZyhpKHRoaXMpKSxyPSIiLG89ZSh0KTtpZihvPDB8fG89PTEvMCl0aHJvdyBSYW5nZUVycm9yKCJDb3VudCBjYW4ndCBiZSBuZWdhdGl2ZSIpO2Zvcig7bz4wOyhvPj4+PTEpJiYobis9bikpMSZvJiYocis9bik7cmV0dXJuIHJ9fSx7MTA2OjEwNiwyNzoyN31dLDEwMjpbZnVuY3Rpb24odCxuLHIpe3ZhciBlPXQoMzIpLGk9dCgyNyksbz10KDM0KSx1PXQoMTAzKSxjPSJbIit1KyJdIixmPSLigIvChSIsYT1SZWdFeHAoIl4iK2MrYysiKiIpLHM9UmVnRXhwKGMrYysiKiQiKSxsPWZ1bmN0aW9uKHQsbixyKXt2YXIgaT17fSxjPW8oZnVuY3Rpb24oKXtyZXR1cm4hIXVbdF0oKXx8Zlt0XSgpIT1mfSksYT1pW3RdPWM/bihoKTp1W3RdO3ImJihpW3JdPWEpLGUoZS5QK2UuRipjLCJTdHJpbmciLGkpfSxoPWwudHJpbT1mdW5jdGlvbih0LG4pe3JldHVybiB0PVN0cmluZyhpKHQpKSwxJm4mJih0PXQucmVwbGFjZShhLCIiKSksMiZuJiYodD10LnJlcGxhY2UocywiIikpLHR9O24uZXhwb3J0cz1sfSx7MTAzOjEwMywyNzoyNywzMjozMiwzNDozNH1dLDEwMzpbZnVuY3Rpb24odCxuLHIpe24uZXhwb3J0cz0iXHRcblx2XGZcciDCoOGagOGgjuKAgOKAgeKAguKAg+KAhOKAheKAhuKAh+KAiOKAieKAiuKAr+KBn+OAgFx1MjAyOFx1MjAyOVx1ZmVmZiJ9LHt9XSwxMDQ6W2Z1bmN0aW9uKHQsbixyKXt2YXIgZSxpLG8sdT10KDI1KSxjPXQoNDQpLGY9dCg0MSksYT10KDI5KSxzPXQoMzgpLGw9cy5wcm9jZXNzLGg9cy5zZXRJbW1lZGlhdGUsdj1zLmNsZWFySW1tZWRpYXRlLHA9cy5NZXNzYWdlQ2hhbm5lbCxkPTAseT17fSxnPSJvbnJlYWR5c3RhdGVjaGFuZ2UiLGI9ZnVuY3Rpb24oKXt2YXIgdD0rdGhpcztpZih5Lmhhc093blByb3BlcnR5KHQpKXt2YXIgbj15W3RdO2RlbGV0ZSB5W3RdLG4oKX19LHg9ZnVuY3Rpb24odCl7Yi5jYWxsKHQuZGF0YSl9O2gmJnZ8fChoPWZ1bmN0aW9uIHNldEltbWVkaWF0ZSh0KXtmb3IodmFyIG49W10scj0xO2FyZ3VtZW50cy5sZW5ndGg+cjspbi5wdXNoKGFyZ3VtZW50c1tyKytdKTtyZXR1cm4geVsrK2RdPWZ1bmN0aW9uKCl7YygiZnVuY3Rpb24iPT10eXBlb2YgdD90OkZ1bmN0aW9uKHQpLG4pfSxlKGQpLGR9LHY9ZnVuY3Rpb24gY2xlYXJJbW1lZGlhdGUodCl7ZGVsZXRlIHlbdF19LCJwcm9jZXNzIj09dCgxOCkobCk/ZT1mdW5jdGlvbih0KXtsLm5leHRUaWNrKHUoYix0LDEpKX06cD8oaT1uZXcgcCxvPWkucG9ydDIsaS5wb3J0MS5vbm1lc3NhZ2U9eCxlPXUoby5wb3N0TWVzc2FnZSxvLDEpKTpzLmFkZEV2ZW50TGlzdGVuZXImJiJmdW5jdGlvbiI9PXR5cGVvZiBwb3N0TWVzc2FnZSYmIXMuaW1wb3J0U2NyaXB0cz8oZT1mdW5jdGlvbih0KXtzLnBvc3RNZXNzYWdlKHQrIiIsIioiKX0scy5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIix4LCExKSk6ZT1nIGluIGEoInNjcmlwdCIpP2Z1bmN0aW9uKHQpe2YuYXBwZW5kQ2hpbGQoYSgic2NyaXB0IikpW2ddPWZ1bmN0aW9uKCl7Zi5yZW1vdmVDaGlsZCh0aGlzKSxiLmNhbGwodCl9fTpmdW5jdGlvbih0KXtzZXRUaW1lb3V0KHUoYix0LDEpLDApfSksbi5leHBvcnRzPXtzZXQ6aCxjbGVhcjp2fX0sezE4OjE4LDI1OjI1LDI5OjI5LDM4OjM4LDQxOjQxLDQ0OjQ0fV0sMTA1OltmdW5jdGlvbih0LG4scil7dmFyIGU9dCgxMDYpLGk9TWF0aC5tYXgsbz1NYXRoLm1pbjtuLmV4cG9ydHM9ZnVuY3Rpb24odCxuKXtyZXR1cm4gdD1lKHQpLHQ8MD9pKHQrbiwwKTpvKHQsbil9fSx7MTA2OjEwNn1dLDEwNjpbZnVuY3Rpb24odCxuLHIpe3ZhciBlPU1hdGguY2VpbCxpPU1hdGguZmxvb3I7bi5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiBpc05hTih0PSt0KT8wOih0PjA/aTplKSh0KX19LHt9XSwxMDc6W2Z1bmN0aW9uKHQsbixyKXt2YXIgZT10KDQ1KSxpPXQoMjcpO24uZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gZShpKHQpKX19LHsyNzoyNyw0NTo0NX1dLDEwODpbZnVuY3Rpb24odCxuLHIpe3ZhciBlPXQoMTA2KSxpPU1hdGgubWluO24uZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gdD4wP2koZSh0KSw5MDA3MTk5MjU0NzQwOTkxKTowfX0sezEwNjoxMDZ9XSwxMDk6W2Z1bmN0aW9uKHQsbixyKXt2YXIgZT10KDI3KTtuLmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdChlKHQpKX19LHsyNzoyN31dLDExMDpbZnVuY3Rpb24odCxuLHIpe3ZhciBlPXQoNDkpO24uZXhwb3J0cz1mdW5jdGlvbih0LG4pe2lmKCFlKHQpKXJldHVybiB0O3ZhciByLGk7aWYobiYmImZ1bmN0aW9uIj09dHlwZW9mKHI9dC50b1N0cmluZykmJiFlKGk9ci5jYWxsKHQpKSlyZXR1cm4gaTtpZigiZnVuY3Rpb24iPT10eXBlb2Yocj10LnZhbHVlT2YpJiYhZShpPXIuY2FsbCh0KSkpcmV0dXJuIGk7aWYoIW4mJiJmdW5jdGlvbiI9PXR5cGVvZihyPXQudG9TdHJpbmcpJiYhZShpPXIuY2FsbCh0KSkpcmV0dXJuIGk7dGhyb3cgVHlwZUVycm9yKCJDYW4ndCBjb252ZXJ0IG9iamVjdCB0byBwcmltaXRpdmUgdmFsdWUiKX19LHs0OTo0OX1dLDExMTpbZnVuY3Rpb24odCxuLHIpeyJ1c2Ugc3RyaWN0IjtpZih0KDI4KSl7dmFyIGU9dCg1OCksaT10KDM4KSxvPXQoMzQpLHU9dCgzMiksYz10KDExMyksZj10KDExMiksYT10KDI1KSxzPXQoNiksbD10KDg1KSxoPXQoNDApLHY9dCg4NikscD10KDEwNiksZD10KDEwOCkseT10KDEwNSksZz10KDExMCksYj10KDM5KSx4PXQoODkpLG09dCgxNyksdz10KDQ5KSxTPXQoMTA5KSxfPXQoNDYpLEU9dCg2NiksTz10KDc0KSxGPXQoNzIpLmYsUD10KDExOCksTT10KDExNCksQT10KDExNyksST10KDEyKSxqPXQoMTEpLE49dCg5NSksaz10KDEzMCksUj10KDU2KSxUPXQoNTQpLEw9dCg5MSksQz10KDkpLFU9dCg4KSxHPXQoNjcpLEQ9dCg3MCksVz1HLmYsQj1ELmYsVj1pLlJhbmdlRXJyb3Isej1pLlR5cGVFcnJvcixLPWkuVWludDhBcnJheSxKPSJBcnJheUJ1ZmZlciIsWT0iU2hhcmVkIitKLHE9IkJZVEVTX1BFUl9FTEVNRU5UIixYPSJwcm90b3R5cGUiLCQ9QXJyYXlbWF0sSD1mLkFycmF5QnVmZmVyLFo9Zi5EYXRhVmlldyxRPUkoMCksdHQ9SSgyKSxudD1JKDMpLHJ0PUkoNCksZXQ9SSg1KSxpdD1JKDYpLG90PWooITApLHV0PWooITEpLGN0PWsudmFsdWVzLGZ0PWsua2V5cyxhdD1rLmVudHJpZXMsc3Q9JC5sYXN0SW5kZXhPZixsdD0kLnJlZHVjZSxodD0kLnJlZHVjZVJpZ2h0LHZ0PSQuam9pbixwdD0kLnNvcnQsZHQ9JC5zbGljZSx5dD0kLnRvU3RyaW5nLGd0PSQudG9Mb2NhbGVTdHJpbmcsYnQ9QSgiaXRlcmF0b3IiKSx4dD1BKCJ0b1N0cmluZ1RhZyIpLG10PU0oInR5cGVkX2NvbnN0cnVjdG9yIiksd3Q9TSgiZGVmX2NvbnN0cnVjdG9yIiksU3Q9Yy5DT05TVFIsX3Q9Yy5UWVBFRCxFdD1jLlZJRVcsT3Q9Ildyb25nIGxlbmd0aCEiLEZ0PUkoMSxmdW5jdGlvbih0LG4pe3JldHVybiBOdChOKHQsdFt3dF0pLG4pfSksUHQ9byhmdW5jdGlvbigpe3JldHVybiAxPT09bmV3IEsobmV3IFVpbnQxNkFycmF5KFsxXSkuYnVmZmVyKVswXX0pLE10PSEhSyYmISFLW1hdLnNldCYmbyhmdW5jdGlvbigpe25ldyBLKDEpLnNldCh7fSl9KSxBdD1mdW5jdGlvbih0LG4pe2lmKHZvaWQgMD09PXQpdGhyb3cgeihPdCk7dmFyIHI9K3QsZT1kKHQpO2lmKG4mJiF4KHIsZSkpdGhyb3cgVihPdCk7cmV0dXJuIGV9LEl0PWZ1bmN0aW9uKHQsbil7dmFyIHI9cCh0KTtpZihyPDB8fHIlbil0aHJvdyBWKCJXcm9uZyBvZmZzZXQhIik7cmV0dXJuIHJ9LGp0PWZ1bmN0aW9uKHQpe2lmKHcodCkmJl90IGluIHQpcmV0dXJuIHQ7dGhyb3cgeih0KyIgaXMgbm90IGEgdHlwZWQgYXJyYXkhIil9LE50PWZ1bmN0aW9uKHQsbil7aWYoISh3KHQpJiZtdCBpbiB0KSl0aHJvdyB6KCJJdCBpcyBub3QgYSB0eXBlZCBhcnJheSBjb25zdHJ1Y3RvciEiKTtyZXR1cm4gbmV3IHQobil9LGt0PWZ1bmN0aW9uKHQsbil7cmV0dXJuIFJ0KE4odCx0W3d0XSksbil9LFJ0PWZ1bmN0aW9uKHQsbil7Zm9yKHZhciByPTAsZT1uLmxlbmd0aCxpPU50KHQsZSk7ZT5yOylpW3JdPW5bcisrXTtyZXR1cm4gaX0sVHQ9ZnVuY3Rpb24odCxuLHIpe1codCxuLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZFtyXX19KX0sTHQ9ZnVuY3Rpb24gZnJvbSh0KXt2YXIgbixyLGUsaSxvLHUsYz1TKHQpLGY9YXJndW1lbnRzLmxlbmd0aCxzPWY+MT9hcmd1bWVudHNbMV06dm9pZCAwLGw9dm9pZCAwIT09cyxoPVAoYyk7aWYodm9pZCAwIT1oJiYhXyhoKSl7Zm9yKHU9aC5jYWxsKGMpLGU9W10sbj0wOyEobz11Lm5leHQoKSkuZG9uZTtuKyspZS5wdXNoKG8udmFsdWUpO2M9ZX1mb3IobCYmZj4yJiYocz1hKHMsYXJndW1lbnRzWzJdLDIpKSxuPTAscj1kKGMubGVuZ3RoKSxpPU50KHRoaXMscik7cj5uO24rKylpW25dPWw/cyhjW25dLG4pOmNbbl07cmV0dXJuIGl9LEN0PWZ1bmN0aW9uIG9mKCl7Zm9yKHZhciB0PTAsbj1hcmd1bWVudHMubGVuZ3RoLHI9TnQodGhpcyxuKTtuPnQ7KXJbdF09YXJndW1lbnRzW3QrK107cmV0dXJuIHJ9LFV0PSEhSyYmbyhmdW5jdGlvbigpe2d0LmNhbGwobmV3IEsoMSkpfSksR3Q9ZnVuY3Rpb24gdG9Mb2NhbGVTdHJpbmcoKXtyZXR1cm4gZ3QuYXBwbHkoVXQ/ZHQuY2FsbChqdCh0aGlzKSk6anQodGhpcyksYXJndW1lbnRzKX0sRHQ9e2NvcHlXaXRoaW46ZnVuY3Rpb24gY29weVdpdGhpbih0LG4pe3JldHVybiBVLmNhbGwoanQodGhpcyksdCxuLGFyZ3VtZW50cy5sZW5ndGg+Mj9hcmd1bWVudHNbMl06dm9pZCAwKX0sZXZlcnk6ZnVuY3Rpb24gZXZlcnkodCl7cmV0dXJuIHJ0KGp0KHRoaXMpLHQsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApfSxmaWxsOmZ1bmN0aW9uIGZpbGwodCl7cmV0dXJuIEMuYXBwbHkoanQodGhpcyksYXJndW1lbnRzKX0sZmlsdGVyOmZ1bmN0aW9uIGZpbHRlcih0KXtyZXR1cm4ga3QodGhpcyx0dChqdCh0aGlzKSx0LGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKSl9LGZpbmQ6ZnVuY3Rpb24gZmluZCh0KXtyZXR1cm4gZXQoanQodGhpcyksdCxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCl9LGZpbmRJbmRleDpmdW5jdGlvbiBmaW5kSW5kZXgodCl7CnJldHVybiBpdChqdCh0aGlzKSx0LGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKX0sZm9yRWFjaDpmdW5jdGlvbiBmb3JFYWNoKHQpe1EoanQodGhpcyksdCxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCl9LGluZGV4T2Y6ZnVuY3Rpb24gaW5kZXhPZih0KXtyZXR1cm4gdXQoanQodGhpcyksdCxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCl9LGluY2x1ZGVzOmZ1bmN0aW9uIGluY2x1ZGVzKHQpe3JldHVybiBvdChqdCh0aGlzKSx0LGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKX0sam9pbjpmdW5jdGlvbiBqb2luKHQpe3JldHVybiB2dC5hcHBseShqdCh0aGlzKSxhcmd1bWVudHMpfSxsYXN0SW5kZXhPZjpmdW5jdGlvbiBsYXN0SW5kZXhPZih0KXtyZXR1cm4gc3QuYXBwbHkoanQodGhpcyksYXJndW1lbnRzKX0sbWFwOmZ1bmN0aW9uIG1hcCh0KXtyZXR1cm4gRnQoanQodGhpcyksdCxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCl9LHJlZHVjZTpmdW5jdGlvbiByZWR1Y2UodCl7cmV0dXJuIGx0LmFwcGx5KGp0KHRoaXMpLGFyZ3VtZW50cyl9LHJlZHVjZVJpZ2h0OmZ1bmN0aW9uIHJlZHVjZVJpZ2h0KHQpe3JldHVybiBodC5hcHBseShqdCh0aGlzKSxhcmd1bWVudHMpfSxyZXZlcnNlOmZ1bmN0aW9uIHJldmVyc2UoKXtmb3IodmFyIHQsbj10aGlzLHI9anQobikubGVuZ3RoLGU9TWF0aC5mbG9vcihyLzIpLGk9MDtpPGU7KXQ9bltpXSxuW2krK109blstLXJdLG5bcl09dDtyZXR1cm4gbn0sc29tZTpmdW5jdGlvbiBzb21lKHQpe3JldHVybiBudChqdCh0aGlzKSx0LGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKX0sc29ydDpmdW5jdGlvbiBzb3J0KHQpe3JldHVybiBwdC5jYWxsKGp0KHRoaXMpLHQpfSxzdWJhcnJheTpmdW5jdGlvbiBzdWJhcnJheSh0LG4pe3ZhciByPWp0KHRoaXMpLGU9ci5sZW5ndGgsaT15KHQsZSk7cmV0dXJuIG5ldyhOKHIsclt3dF0pKShyLmJ1ZmZlcixyLmJ5dGVPZmZzZXQraSpyLkJZVEVTX1BFUl9FTEVNRU5ULGQoKHZvaWQgMD09PW4/ZTp5KG4sZSkpLWkpKX19LFd0PWZ1bmN0aW9uIHNsaWNlKHQsbil7cmV0dXJuIGt0KHRoaXMsZHQuY2FsbChqdCh0aGlzKSx0LG4pKX0sQnQ9ZnVuY3Rpb24gc2V0KHQpe2p0KHRoaXMpO3ZhciBuPUl0KGFyZ3VtZW50c1sxXSwxKSxyPXRoaXMubGVuZ3RoLGU9Uyh0KSxpPWQoZS5sZW5ndGgpLG89MDtpZihpK24+cil0aHJvdyBWKE90KTtmb3IoO288aTspdGhpc1tuK29dPWVbbysrXX0sVnQ9e2VudHJpZXM6ZnVuY3Rpb24gZW50cmllcygpe3JldHVybiBhdC5jYWxsKGp0KHRoaXMpKX0sa2V5czpmdW5jdGlvbiBrZXlzKCl7cmV0dXJuIGZ0LmNhbGwoanQodGhpcykpfSx2YWx1ZXM6ZnVuY3Rpb24gdmFsdWVzKCl7cmV0dXJuIGN0LmNhbGwoanQodGhpcykpfX0senQ9ZnVuY3Rpb24odCxuKXtyZXR1cm4gdyh0KSYmdFtfdF0mJiJzeW1ib2wiIT10eXBlb2YgbiYmbiBpbiB0JiZTdHJpbmcoK24pPT1TdHJpbmcobil9LEt0PWZ1bmN0aW9uIGdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pe3JldHVybiB6dCh0LG49ZyhuLCEwKSk/bCgyLHRbbl0pOkIodCxuKX0sSnQ9ZnVuY3Rpb24gZGVmaW5lUHJvcGVydHkodCxuLHIpe3JldHVybiEoenQodCxuPWcobiwhMCkpJiZ3KHIpJiZiKHIsInZhbHVlIikpfHxiKHIsImdldCIpfHxiKHIsInNldCIpfHxyLmNvbmZpZ3VyYWJsZXx8YihyLCJ3cml0YWJsZSIpJiYhci53cml0YWJsZXx8YihyLCJlbnVtZXJhYmxlIikmJiFyLmVudW1lcmFibGU/Vyh0LG4scik6KHRbbl09ci52YWx1ZSx0KX07U3R8fChELmY9S3QsRy5mPUp0KSx1KHUuUyt1LkYqIVN0LCJPYmplY3QiLHtnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I6S3QsZGVmaW5lUHJvcGVydHk6SnR9KSxvKGZ1bmN0aW9uKCl7eXQuY2FsbCh7fSl9KSYmKHl0PWd0PWZ1bmN0aW9uIHRvU3RyaW5nKCl7cmV0dXJuIHZ0LmNhbGwodGhpcyl9KTt2YXIgWXQ9dih7fSxEdCk7dihZdCxWdCksaChZdCxidCxWdC52YWx1ZXMpLHYoWXQse3NsaWNlOld0LHNldDpCdCxjb25zdHJ1Y3RvcjpmdW5jdGlvbigpe30sdG9TdHJpbmc6eXQsdG9Mb2NhbGVTdHJpbmc6R3R9KSxUdChZdCwiYnVmZmVyIiwiYiIpLFR0KFl0LCJieXRlT2Zmc2V0IiwibyIpLFR0KFl0LCJieXRlTGVuZ3RoIiwibCIpLFR0KFl0LCJsZW5ndGgiLCJlIiksVyhZdCx4dCx7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXNbX3RdfX0pLG4uZXhwb3J0cz1mdW5jdGlvbih0LG4scixmKXtmPSEhZjt2YXIgYT10KyhmPyJDbGFtcGVkIjoiIikrIkFycmF5IixsPSJVaW50OEFycmF5IiE9YSx2PSJnZXQiK3QscD0ic2V0Iit0LHk9aVthXSxnPXl8fHt9LGI9eSYmTyh5KSx4PSF5fHwhYy5BQlYsUz17fSxfPXkmJnlbWF0sUD1mdW5jdGlvbih0LHIpe3ZhciBlPXQuX2Q7cmV0dXJuIGUudlt2XShyKm4rZS5vLFB0KX0sTT1mdW5jdGlvbih0LHIsZSl7dmFyIGk9dC5fZDtmJiYoZT0oZT1NYXRoLnJvdW5kKGUpKTwwPzA6ZT4yNTU/MjU1OjI1NSZlKSxpLnZbcF0ocipuK2kubyxlLFB0KX0sQT1mdW5jdGlvbih0LG4pe1codCxuLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gUCh0aGlzLG4pfSxzZXQ6ZnVuY3Rpb24odCl7cmV0dXJuIE0odGhpcyxuLHQpfSxlbnVtZXJhYmxlOiEwfSl9O3g/KHk9cihmdW5jdGlvbih0LHIsZSxpKXtzKHQseSxhLCJfZCIpO3ZhciBvLHUsYyxmLGw9MCx2PTA7aWYodyhyKSl7aWYoIShyIGluc3RhbmNlb2YgSHx8KGY9bShyKSk9PUp8fGY9PVkpKXJldHVybiBfdCBpbiByP1J0KHkscik6THQuY2FsbCh5LHIpO289cix2PUl0KGUsbik7dmFyIHA9ci5ieXRlTGVuZ3RoO2lmKHZvaWQgMD09PWkpe2lmKHAlbil0aHJvdyBWKE90KTtpZih1PXAtdix1PDApdGhyb3cgVihPdCl9ZWxzZSBpZih1PWQoaSkqbix1K3Y+cCl0aHJvdyBWKE90KTtjPXUvbn1lbHNlIGM9QXQociwhMCksdT1jKm4sbz1uZXcgSCh1KTtmb3IoaCh0LCJfZCIse2I6byxvOnYsbDp1LGU6Yyx2Om5ldyBaKG8pfSk7bDxjOylBKHQsbCsrKX0pLF89eVtYXT1FKFl0KSxoKF8sImNvbnN0cnVjdG9yIix5KSk6VChmdW5jdGlvbih0KXtuZXcgeShudWxsKSxuZXcgeSh0KX0sITApfHwoeT1yKGZ1bmN0aW9uKHQscixlLGkpe3ModCx5LGEpO3ZhciBvO3JldHVybiB3KHIpP3IgaW5zdGFuY2VvZiBIfHwobz1tKHIpKT09Snx8bz09WT92b2lkIDAhPT1pP25ldyBnKHIsSXQoZSxuKSxpKTp2b2lkIDAhPT1lP25ldyBnKHIsSXQoZSxuKSk6bmV3IGcocik6X3QgaW4gcj9SdCh5LHIpOkx0LmNhbGwoeSxyKTpuZXcgZyhBdChyLGwpKX0pLFEoYiE9PUZ1bmN0aW9uLnByb3RvdHlwZT9GKGcpLmNvbmNhdChGKGIpKTpGKGcpLGZ1bmN0aW9uKHQpe3QgaW4geXx8aCh5LHQsZ1t0XSl9KSx5W1hdPV8sZXx8KF8uY29uc3RydWN0b3I9eSkpO3ZhciBJPV9bYnRdLGo9ISFJJiYoInZhbHVlcyI9PUkubmFtZXx8dm9pZCAwPT1JLm5hbWUpLE49VnQudmFsdWVzO2goeSxtdCwhMCksaChfLF90LGEpLGgoXyxFdCwhMCksaChfLHd0LHkpLChmP25ldyB5KDEpW3h0XT09YTp4dCBpbiBfKXx8VyhfLHh0LHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gYX19KSxTW2FdPXksdSh1LkcrdS5XK3UuRiooeSE9ZyksUyksdSh1LlMsYSx7QllURVNfUEVSX0VMRU1FTlQ6bixmcm9tOkx0LG9mOkN0fSkscSBpbiBffHxoKF8scSxuKSx1KHUuUCxhLER0KSxMKGEpLHUodS5QK3UuRipNdCxhLHtzZXQ6QnR9KSx1KHUuUCt1LkYqIWosYSxWdCksdSh1LlArdS5GKihfLnRvU3RyaW5nIT15dCksYSx7dG9TdHJpbmc6eXR9KSx1KHUuUCt1LkYqbyhmdW5jdGlvbigpe25ldyB5KDEpLnNsaWNlKCl9KSxhLHtzbGljZTpXdH0pLHUodS5QK3UuRioobyhmdW5jdGlvbigpe3JldHVyblsxLDJdLnRvTG9jYWxlU3RyaW5nKCkhPW5ldyB5KFsxLDJdKS50b0xvY2FsZVN0cmluZygpfSl8fCFvKGZ1bmN0aW9uKCl7Xy50b0xvY2FsZVN0cmluZy5jYWxsKFsxLDJdKX0pKSxhLHt0b0xvY2FsZVN0cmluZzpHdH0pLFJbYV09aj9JOk4sZXx8anx8aChfLGJ0LE4pfX1lbHNlIG4uZXhwb3J0cz1mdW5jdGlvbigpe319LHsxMDU6MTA1LDEwNjoxMDYsMTA4OjEwOCwxMDk6MTA5LDExOjExLDExMDoxMTAsMTEyOjExMiwxMTM6MTEzLDExNDoxMTQsMTE3OjExNywxMTg6MTE4LDEyOjEyLDEzMDoxMzAsMTc6MTcsMjU6MjUsMjg6MjgsMzI6MzIsMzQ6MzQsMzg6MzgsMzk6MzksNDA6NDAsNDY6NDYsNDk6NDksNTQ6NTQsNTY6NTYsNTg6NTgsNjo2LDY2OjY2LDY3OjY3LDcwOjcwLDcyOjcyLDc0Ojc0LDg6OCw4NTo4NSw4Njo4Niw4OTo4OSw5OjksOTE6OTEsOTU6OTV9XSwxMTI6W2Z1bmN0aW9uKHQsbixyKXsidXNlIHN0cmljdCI7dmFyIGU9dCgzOCksaT10KDI4KSxvPXQoNTgpLHU9dCgxMTMpLGM9dCg0MCksZj10KDg2KSxhPXQoMzQpLHM9dCg2KSxsPXQoMTA2KSxoPXQoMTA4KSx2PXQoNzIpLmYscD10KDY3KS5mLGQ9dCg5KSx5PXQoOTIpLGc9IkFycmF5QnVmZmVyIixiPSJEYXRhVmlldyIseD0icHJvdG90eXBlIixtPSJXcm9uZyBsZW5ndGghIix3PSJXcm9uZyBpbmRleCEiLFM9ZVtnXSxfPWVbYl0sRT1lLk1hdGgsTz1lLlJhbmdlRXJyb3IsRj1lLkluZmluaXR5LFA9UyxNPUUuYWJzLEE9RS5wb3csST1FLmZsb29yLGo9RS5sb2csTj1FLkxOMixrPSJidWZmZXIiLFI9ImJ5dGVMZW5ndGgiLFQ9ImJ5dGVPZmZzZXQiLEw9aT8iX2IiOmssQz1pPyJfbCI6UixVPWk/Il9vIjpULEc9ZnVuY3Rpb24odCxuLHIpe3ZhciBlLGksbyx1PUFycmF5KHIpLGM9OCpyLW4tMSxmPSgxPDxjKS0xLGE9Zj4+MSxzPTIzPT09bj9BKDIsLTI0KS1BKDIsLTc3KTowLGw9MCxoPXQ8MHx8MD09PXQmJjEvdDwwPzE6MDtmb3IodD1NKHQpLHQhPXR8fHQ9PT1GPyhpPXQhPXQ/MTowLGU9Zik6KGU9SShqKHQpL04pLHQqKG89QSgyLC1lKSk8MSYmKGUtLSxvKj0yKSx0Kz1lK2E+PTE/cy9vOnMqQSgyLDEtYSksdCpvPj0yJiYoZSsrLG8vPTIpLGUrYT49Zj8oaT0wLGU9Zik6ZSthPj0xPyhpPSh0Km8tMSkqQSgyLG4pLGUrPWEpOihpPXQqQSgyLGEtMSkqQSgyLG4pLGU9MCkpO24+PTg7dVtsKytdPTI1NSZpLGkvPTI1NixuLT04KTtmb3IoZT1lPDxufGksYys9bjtjPjA7dVtsKytdPTI1NSZlLGUvPTI1NixjLT04KTtyZXR1cm4gdVstLWxdfD0xMjgqaCx1fSxEPWZ1bmN0aW9uKHQsbixyKXt2YXIgZSxpPTgqci1uLTEsbz0oMTw8aSktMSx1PW8+PjEsYz1pLTcsZj1yLTEsYT10W2YtLV0scz0xMjcmYTtmb3IoYT4+PTc7Yz4wO3M9MjU2KnMrdFtmXSxmLS0sYy09OCk7Zm9yKGU9cyYoMTw8LWMpLTEscz4+PS1jLGMrPW47Yz4wO2U9MjU2KmUrdFtmXSxmLS0sYy09OCk7aWYoMD09PXMpcz0xLXU7ZWxzZXtpZihzPT09bylyZXR1cm4gZT9OYU46YT8tRjpGO2UrPUEoMixuKSxzLT11fXJldHVybihhPy0xOjEpKmUqQSgyLHMtbil9LFc9ZnVuY3Rpb24odCl7cmV0dXJuIHRbM108PDI0fHRbMl08PDE2fHRbMV08PDh8dFswXX0sQj1mdW5jdGlvbih0KXtyZXR1cm5bMjU1JnRdfSxWPWZ1bmN0aW9uKHQpe3JldHVyblsyNTUmdCx0Pj44JjI1NV19LHo9ZnVuY3Rpb24odCl7cmV0dXJuWzI1NSZ0LHQ+PjgmMjU1LHQ+PjE2JjI1NSx0Pj4yNCYyNTVdfSxLPWZ1bmN0aW9uKHQpe3JldHVybiBHKHQsNTIsOCl9LEo9ZnVuY3Rpb24odCl7cmV0dXJuIEcodCwyMyw0KX0sWT1mdW5jdGlvbih0LG4scil7cCh0W3hdLG4se2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzW3JdfX0pfSxxPWZ1bmN0aW9uKHQsbixyLGUpe3ZhciBpPStyLG89bChpKTtpZihpIT1vfHxvPDB8fG8rbj50W0NdKXRocm93IE8odyk7dmFyIHU9dFtMXS5fYixjPW8rdFtVXSxmPXUuc2xpY2UoYyxjK24pO3JldHVybiBlP2Y6Zi5yZXZlcnNlKCl9LFg9ZnVuY3Rpb24odCxuLHIsZSxpLG8pe3ZhciB1PStyLGM9bCh1KTtpZih1IT1jfHxjPDB8fGMrbj50W0NdKXRocm93IE8odyk7Zm9yKHZhciBmPXRbTF0uX2IsYT1jK3RbVV0scz1lKCtpKSxoPTA7aDxuO2grKylmW2EraF09c1tvP2g6bi1oLTFdfSwkPWZ1bmN0aW9uKHQsbil7cyh0LFMsZyk7dmFyIHI9K24sZT1oKHIpO2lmKHIhPWUpdGhyb3cgTyhtKTtyZXR1cm4gZX07aWYodS5BQlYpe2lmKCFhKGZ1bmN0aW9uKCl7bmV3IFN9KXx8IWEoZnVuY3Rpb24oKXtuZXcgUyguNSl9KSl7Uz1mdW5jdGlvbiBBcnJheUJ1ZmZlcih0KXtyZXR1cm4gbmV3IFAoJCh0aGlzLHQpKX07Zm9yKHZhciBILFo9U1t4XT1QW3hdLFE9dihQKSx0dD0wO1EubGVuZ3RoPnR0OykoSD1RW3R0KytdKWluIFN8fGMoUyxILFBbSF0pO298fChaLmNvbnN0cnVjdG9yPVMpfXZhciBudD1uZXcgXyhuZXcgUygyKSkscnQ9X1t4XS5zZXRJbnQ4O250LnNldEludDgoMCwyMTQ3NDgzNjQ4KSxudC5zZXRJbnQ4KDEsMjE0NzQ4MzY0OSksIW50LmdldEludDgoMCkmJm50LmdldEludDgoMSl8fGYoX1t4XSx7c2V0SW50ODpmdW5jdGlvbiBzZXRJbnQ4KHQsbil7cnQuY2FsbCh0aGlzLHQsbjw8MjQ+PjI0KX0sc2V0VWludDg6ZnVuY3Rpb24gc2V0VWludDgodCxuKXtydC5jYWxsKHRoaXMsdCxuPDwyND4+MjQpfX0sITApfWVsc2UgUz1mdW5jdGlvbiBBcnJheUJ1ZmZlcih0KXt2YXIgbj0kKHRoaXMsdCk7dGhpcy5fYj1kLmNhbGwoQXJyYXkobiksMCksdGhpc1tDXT1ufSxfPWZ1bmN0aW9uIERhdGFWaWV3KHQsbixyKXtzKHRoaXMsXyxiKSxzKHQsUyxiKTt2YXIgZT10W0NdLGk9bChuKTtpZihpPDB8fGk+ZSl0aHJvdyBPKCJXcm9uZyBvZmZzZXQhIik7aWYocj12b2lkIDA9PT1yP2UtaTpoKHIpLGkrcj5lKXRocm93IE8obSk7dGhpc1tMXT10LHRoaXNbVV09aSx0aGlzW0NdPXJ9LGkmJihZKFMsUiwiX2wiKSxZKF8saywiX2IiKSxZKF8sUiwiX2wiKSxZKF8sVCwiX28iKSksZihfW3hdLHtnZXRJbnQ4OmZ1bmN0aW9uIGdldEludDgodCl7cmV0dXJuIHEodGhpcywxLHQpWzBdPDwyND4+MjR9LGdldFVpbnQ4OmZ1bmN0aW9uIGdldFVpbnQ4KHQpe3JldHVybiBxKHRoaXMsMSx0KVswXX0sZ2V0SW50MTY6ZnVuY3Rpb24gZ2V0SW50MTYodCl7dmFyIG49cSh0aGlzLDIsdCxhcmd1bWVudHNbMV0pO3JldHVybihuWzFdPDw4fG5bMF0pPDwxNj4+MTZ9LGdldFVpbnQxNjpmdW5jdGlvbiBnZXRVaW50MTYodCl7dmFyIG49cSh0aGlzLDIsdCxhcmd1bWVudHNbMV0pO3JldHVybiBuWzFdPDw4fG5bMF19LGdldEludDMyOmZ1bmN0aW9uIGdldEludDMyKHQpe3JldHVybiBXKHEodGhpcyw0LHQsYXJndW1lbnRzWzFdKSl9LGdldFVpbnQzMjpmdW5jdGlvbiBnZXRVaW50MzIodCl7cmV0dXJuIFcocSh0aGlzLDQsdCxhcmd1bWVudHNbMV0pKT4+PjB9LGdldEZsb2F0MzI6ZnVuY3Rpb24gZ2V0RmxvYXQzMih0KXtyZXR1cm4gRChxKHRoaXMsNCx0LGFyZ3VtZW50c1sxXSksMjMsNCl9LGdldEZsb2F0NjQ6ZnVuY3Rpb24gZ2V0RmxvYXQ2NCh0KXtyZXR1cm4gRChxKHRoaXMsOCx0LGFyZ3VtZW50c1sxXSksNTIsOCl9LHNldEludDg6ZnVuY3Rpb24gc2V0SW50OCh0LG4pe1godGhpcywxLHQsQixuKX0sc2V0VWludDg6ZnVuY3Rpb24gc2V0VWludDgodCxuKXtYKHRoaXMsMSx0LEIsbil9LHNldEludDE2OmZ1bmN0aW9uIHNldEludDE2KHQsbil7WCh0aGlzLDIsdCxWLG4sYXJndW1lbnRzWzJdKX0sc2V0VWludDE2OmZ1bmN0aW9uIHNldFVpbnQxNih0LG4pe1godGhpcywyLHQsVixuLGFyZ3VtZW50c1syXSl9LHNldEludDMyOmZ1bmN0aW9uIHNldEludDMyKHQsbil7WCh0aGlzLDQsdCx6LG4sYXJndW1lbnRzWzJdKX0sc2V0VWludDMyOmZ1bmN0aW9uIHNldFVpbnQzMih0LG4pe1godGhpcyw0LHQseixuLGFyZ3VtZW50c1syXSl9LHNldEZsb2F0MzI6ZnVuY3Rpb24gc2V0RmxvYXQzMih0LG4pe1godGhpcyw0LHQsSixuLGFyZ3VtZW50c1syXSl9LHNldEZsb2F0NjQ6ZnVuY3Rpb24gc2V0RmxvYXQ2NCh0LG4pe1godGhpcyw4LHQsSyxuLGFyZ3VtZW50c1syXSl9fSk7eShTLGcpLHkoXyxiKSxjKF9beF0sdS5WSUVXLCEwKSxyW2ddPVMscltiXT1ffSx7MTA2OjEwNiwxMDg6MTA4LDExMzoxMTMsMjg6MjgsMzQ6MzQsMzg6MzgsNDA6NDAsNTg6NTgsNjo2LDY3OjY3LDcyOjcyLDg2Ojg2LDk6OSw5Mjo5Mn1dLDExMzpbZnVuY3Rpb24odCxuLHIpe2Zvcih2YXIgZSxpPXQoMzgpLG89dCg0MCksdT10KDExNCksYz11KCJ0eXBlZF9hcnJheSIpLGY9dSgidmlldyIpLGE9ISghaS5BcnJheUJ1ZmZlcnx8IWkuRGF0YVZpZXcpLHM9YSxsPTAsaD05LHY9IkludDhBcnJheSxVaW50OEFycmF5LFVpbnQ4Q2xhbXBlZEFycmF5LEludDE2QXJyYXksVWludDE2QXJyYXksSW50MzJBcnJheSxVaW50MzJBcnJheSxGbG9hdDMyQXJyYXksRmxvYXQ2NEFycmF5Ii5zcGxpdCgiLCIpO2w8aDspKGU9aVt2W2wrK11dKT8obyhlLnByb3RvdHlwZSxjLCEwKSxvKGUucHJvdG90eXBlLGYsITApKTpzPSExO24uZXhwb3J0cz17QUJWOmEsQ09OU1RSOnMsVFlQRUQ6YyxWSUVXOmZ9fSx7MTE0OjExNCwzODozOCw0MDo0MH1dLDExNDpbZnVuY3Rpb24odCxuLHIpe3ZhciBlPTAsaT1NYXRoLnJhbmRvbSgpO24uZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4iU3ltYm9sKCIuY29uY2F0KHZvaWQgMD09PXQ/IiI6dCwiKV8iLCgrK2UraSkudG9TdHJpbmcoMzYpKX19LHt9XSwxMTU6W2Z1bmN0aW9uKHQsbixyKXt2YXIgZT10KDM4KSxpPXQoMjMpLG89dCg1OCksdT10KDExNiksYz10KDY3KS5mO24uZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgbj1pLlN5bWJvbHx8KGkuU3ltYm9sPW8/e306ZS5TeW1ib2x8fHt9KTsiXyI9PXQuY2hhckF0KDApfHx0IGluIG58fGMobix0LHt2YWx1ZTp1LmYodCl9KX19LHsxMTY6MTE2LDIzOjIzLDM4OjM4LDU4OjU4LDY3OjY3fV0sMTE2OltmdW5jdGlvbih0LG4scil7ci5mPXQoMTE3KX0sezExNzoxMTd9XSwxMTc6W2Z1bmN0aW9uKHQsbixyKXt2YXIgZT10KDk0KSgid2tzIiksaT10KDExNCksbz10KDM4KS5TeW1ib2wsdT0iZnVuY3Rpb24iPT10eXBlb2YgbyxjPW4uZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gZVt0XXx8KGVbdF09dSYmb1t0XXx8KHU/bzppKSgiU3ltYm9sLiIrdCkpfTtjLnN0b3JlPWV9LHsxMTQ6MTE0LDM4OjM4LDk0Ojk0fV0sMTE4OltmdW5jdGlvbih0LG4scil7dmFyIGU9dCgxNyksaT10KDExNykoIml0ZXJhdG9yIiksbz10KDU2KTtuLmV4cG9ydHM9dCgyMykuZ2V0SXRlcmF0b3JNZXRob2Q9ZnVuY3Rpb24odCl7aWYodm9pZCAwIT10KXJldHVybiB0W2ldfHx0WyJAQGl0ZXJhdG9yIl18fG9bZSh0KV19fSx7MTE3OjExNywxNzoxNywyMzoyMyw1Njo1Nn1dLDExOTpbZnVuY3Rpb24odCxuLHIpe3ZhciBlPXQoMzIpLGk9dCg4OCkoL1tcXF4kKis/LigpfFtcXXt9XS9nLCJcXCQmIik7ZShlLlMsIlJlZ0V4cCIse2VzY2FwZTpmdW5jdGlvbiBlc2NhcGUodCl7cmV0dXJuIGkodCl9fSl9LHszMjozMiw4ODo4OH1dLDEyMDpbZnVuY3Rpb24odCxuLHIpe3ZhciBlPXQoMzIpO2UoZS5QLCJBcnJheSIse2NvcHlXaXRoaW46dCg4KX0pLHQoNSkoImNvcHlXaXRoaW4iKX0sezMyOjMyLDU6NSw4Ojh9XSwxMjE6W2Z1bmN0aW9uKHQsbixyKXsidXNlIHN0cmljdCI7dmFyIGU9dCgzMiksaT10KDEyKSg0KTtlKGUuUCtlLkYqIXQoOTYpKFtdLmV2ZXJ5LCEwKSwiQXJyYXkiLHtldmVyeTpmdW5jdGlvbiBldmVyeSh0KXtyZXR1cm4gaSh0aGlzLHQsYXJndW1lbnRzWzFdKX19KX0sezEyOjEyLDMyOjMyLDk2Ojk2fV0sMTIyOltmdW5jdGlvbih0LG4scil7dmFyIGU9dCgzMik7ZShlLlAsIkFycmF5Iix7ZmlsbDp0KDkpfSksdCg1KSgiZmlsbCIpfSx7MzI6MzIsNTo1LDk6OX1dLDEyMzpbZnVuY3Rpb24odCxuLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgZT10KDMyKSxpPXQoMTIpKDIpO2UoZS5QK2UuRiohdCg5NikoW10uZmlsdGVyLCEwKSwiQXJyYXkiLHtmaWx0ZXI6ZnVuY3Rpb24gZmlsdGVyKHQpe3JldHVybiBpKHRoaXMsdCxhcmd1bWVudHNbMV0pfX0pfSx7MTI6MTIsMzI6MzIsOTY6OTZ9XSwxMjQ6W2Z1bmN0aW9uKHQsbixyKXsidXNlIHN0cmljdCI7dmFyIGU9dCgzMiksaT10KDEyKSg2KSxvPSJmaW5kSW5kZXgiLHU9ITA7byBpbltdJiZBcnJheSgxKVtvXShmdW5jdGlvbigpe3U9ITF9KSxlKGUuUCtlLkYqdSwiQXJyYXkiLHtmaW5kSW5kZXg6ZnVuY3Rpb24gZmluZEluZGV4KHQpe3JldHVybiBpKHRoaXMsdCxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCl9fSksdCg1KShvKX0sezEyOjEyLDMyOjMyLDU6NX1dLDEyNTpbZnVuY3Rpb24odCxuLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgZT10KDMyKSxpPXQoMTIpKDUpLG89ImZpbmQiLHU9ITA7byBpbltdJiZBcnJheSgxKVtvXShmdW5jdGlvbigpe3U9ITF9KSxlKGUuUCtlLkYqdSwiQXJyYXkiLHtmaW5kOmZ1bmN0aW9uIGZpbmQodCl7cmV0dXJuIGkodGhpcyx0LGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKX19KSx0KDUpKG8pfSx7MTI6MTIsMzI6MzIsNTo1fV0sMTI2OltmdW5jdGlvbih0LG4scil7InVzZSBzdHJpY3QiO3ZhciBlPXQoMzIpLGk9dCgxMikoMCksbz10KDk2KShbXS5mb3JFYWNoLCEwKTtlKGUuUCtlLkYqIW8sIkFycmF5Iix7Zm9yRWFjaDpmdW5jdGlvbiBmb3JFYWNoKHQpe3JldHVybiBpKHRoaXMsdCxhcmd1bWVudHNbMV0pfX0pfSx7MTI6MTIsMzI6MzIsOTY6OTZ9XSwxMjc6W2Z1bmN0aW9uKHQsbixyKXsidXNlIHN0cmljdCI7dmFyIGU9dCgyNSksaT10KDMyKSxvPXQoMTA5KSx1PXQoNTEpLGM9dCg0NiksZj10KDEwOCksYT10KDI0KSxzPXQoMTE4KTtpKGkuUytpLkYqIXQoNTQpKGZ1bmN0aW9uKHQpe0FycmF5LmZyb20odCl9KSwiQXJyYXkiLHtmcm9tOmZ1bmN0aW9uIGZyb20odCl7dmFyIG4scixpLGwsaD1vKHQpLHY9ImZ1bmN0aW9uIj09dHlwZW9mIHRoaXM/dGhpczpBcnJheSxwPWFyZ3VtZW50cy5sZW5ndGgsZD1wPjE/YXJndW1lbnRzWzFdOnZvaWQgMCx5PXZvaWQgMCE9PWQsZz0wLGI9cyhoKTtpZih5JiYoZD1lKGQscD4yP2FyZ3VtZW50c1syXTp2b2lkIDAsMikpLHZvaWQgMD09Ynx8dj09QXJyYXkmJmMoYikpZm9yKG49ZihoLmxlbmd0aCkscj1uZXcgdihuKTtuPmc7ZysrKWEocixnLHk/ZChoW2ddLGcpOmhbZ10pO2Vsc2UgZm9yKGw9Yi5jYWxsKGgpLHI9bmV3IHY7IShpPWwubmV4dCgpKS5kb25lO2crKylhKHIsZyx5P3UobCxkLFtpLnZhbHVlLGddLCEwKTppLnZhbHVlKTtyZXR1cm4gci5sZW5ndGg9ZyxyfX0pfSx7MTA4OjEwOCwxMDk6MTA5LDExODoxMTgsMjQ6MjQsMjU6MjUsMzI6MzIsNDY6NDYsNTE6NTEsNTQ6NTR9XSwxMjg6W2Z1bmN0aW9uKHQsbixyKXsidXNlIHN0cmljdCI7dmFyIGU9dCgzMiksaT10KDExKSghMSksbz1bXS5pbmRleE9mLHU9ISFvJiYxL1sxXS5pbmRleE9mKDEsLTApPDA7ZShlLlArZS5GKih1fHwhdCg5NikobykpLCJBcnJheSIse2luZGV4T2Y6ZnVuY3Rpb24gaW5kZXhPZih0KXtyZXR1cm4gdT9vLmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8MDppKHRoaXMsdCxhcmd1bWVudHNbMV0pfX0pfSx7MTE6MTEsMzI6MzIsOTY6OTZ9XSwxMjk6W2Z1bmN0aW9uKHQsbixyKXt2YXIgZT10KDMyKTtlKGUuUywiQXJyYXkiLHtpc0FycmF5OnQoNDcpfSl9LHszMjozMiw0Nzo0N31dLDEzMDpbZnVuY3Rpb24odCxuLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgZT10KDUpLGk9dCg1NSksbz10KDU2KSx1PXQoMTA3KTtuLmV4cG9ydHM9dCg1MykoQXJyYXksIkFycmF5IixmdW5jdGlvbih0LG4pe3RoaXMuX3Q9dSh0KSx0aGlzLl9pPTAsdGhpcy5faz1ufSxmdW5jdGlvbigpe3ZhciB0PXRoaXMuX3Qsbj10aGlzLl9rLHI9dGhpcy5faSsrO3JldHVybiF0fHxyPj10Lmxlbmd0aD8odGhpcy5fdD12b2lkIDAsaSgxKSk6ImtleXMiPT1uP2koMCxyKToidmFsdWVzIj09bj9pKDAsdFtyXSk6aSgwLFtyLHRbcl1dKX0sInZhbHVlcyIpLG8uQXJndW1lbnRzPW8uQXJyYXksZSgia2V5cyIpLGUoInZhbHVlcyIpLGUoImVudHJpZXMiKX0sezEwNzoxMDcsNTo1LDUzOjUzLDU1OjU1LDU2OjU2fV0sMTMxOltmdW5jdGlvbih0LG4scil7InVzZSBzdHJpY3QiO3ZhciBlPXQoMzIpLGk9dCgxMDcpLG89W10uam9pbjtlKGUuUCtlLkYqKHQoNDUpIT1PYmplY3R8fCF0KDk2KShvKSksIkFycmF5Iix7am9pbjpmdW5jdGlvbiBqb2luKHQpe3JldHVybiBvLmNhbGwoaSh0aGlzKSx2b2lkIDA9PT10PyIsIjp0KX19KX0sezEwNzoxMDcsMzI6MzIsNDU6NDUsOTY6OTZ9XSwxMzI6W2Z1bmN0aW9uKHQsbixyKXsidXNlIHN0cmljdCI7dmFyIGU9dCgzMiksaT10KDEwNyksbz10KDEwNiksdT10KDEwOCksYz1bXS5sYXN0SW5kZXhPZixmPSEhYyYmMS9bMV0ubGFzdEluZGV4T2YoMSwtMCk8MDtlKGUuUCtlLkYqKGZ8fCF0KDk2KShjKSksIkFycmF5Iix7bGFzdEluZGV4T2Y6ZnVuY3Rpb24gbGFzdEluZGV4T2YodCl7aWYoZilyZXR1cm4gYy5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fDA7dmFyIG49aSh0aGlzKSxyPXUobi5sZW5ndGgpLGU9ci0xO2Zvcihhcmd1bWVudHMubGVuZ3RoPjEmJihlPU1hdGgubWluKGUsbyhhcmd1bWVudHNbMV0pKSksZTwwJiYoZT1yK2UpO2U+PTA7ZS0tKWlmKGUgaW4gbiYmbltlXT09PXQpcmV0dXJuIGV8fDA7cmV0dXJuLTF9fSl9LHsxMDY6MTA2LDEwNzoxMDcsMTA4OjEwOCwzMjozMiw5Njo5Nn1dLDEzMzpbZnVuY3Rpb24odCxuLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgZT10KDMyKSxpPXQoMTIpKDEpO2UoZS5QK2UuRiohdCg5NikoW10ubWFwLCEwKSwiQXJyYXkiLHttYXA6ZnVuY3Rpb24gbWFwKHQpe3JldHVybiBpKHRoaXMsdCxhcmd1bWVudHNbMV0pfX0pfSx7MTI6MTIsMzI6MzIsOTY6OTZ9XSwxMzQ6W2Z1bmN0aW9uKHQsbixyKXsidXNlIHN0cmljdCI7dmFyIGU9dCgzMiksaT10KDI0KTtlKGUuUytlLkYqdCgzNCkoZnVuY3Rpb24oKXtmdW5jdGlvbiBGKCl7fXJldHVybiEoQXJyYXkub2YuY2FsbChGKWluc3RhbmNlb2YgRil9KSwiQXJyYXkiLHtvZjpmdW5jdGlvbiBvZigpe2Zvcih2YXIgdD0wLG49YXJndW1lbnRzLmxlbmd0aCxyPW5ldygiZnVuY3Rpb24iPT10eXBlb2YgdGhpcz90aGlzOkFycmF5KShuKTtuPnQ7KWkocix0LGFyZ3VtZW50c1t0KytdKTtyZXR1cm4gci5sZW5ndGg9bixyfX0pfSx7MjQ6MjQsMzI6MzIsMzQ6MzR9XSwxMzU6W2Z1bmN0aW9uKHQsbixyKXsidXNlIHN0cmljdCI7dmFyIGU9dCgzMiksaT10KDEzKTtlKGUuUCtlLkYqIXQoOTYpKFtdLnJlZHVjZVJpZ2h0LCEwKSwiQXJyYXkiLHtyZWR1Y2VSaWdodDpmdW5jdGlvbiByZWR1Y2VSaWdodCh0KXtyZXR1cm4gaSh0aGlzLHQsYXJndW1lbnRzLmxlbmd0aCxhcmd1bWVudHNbMV0sITApfX0pfSx7MTM6MTMsMzI6MzIsOTY6OTZ9XSwxMzY6W2Z1bmN0aW9uKHQsbixyKXsidXNlIHN0cmljdCI7dmFyIGU9dCgzMiksaT10KDEzKTtlKGUuUCtlLkYqIXQoOTYpKFtdLnJlZHVjZSwhMCksIkFycmF5Iix7cmVkdWNlOmZ1bmN0aW9uIHJlZHVjZSh0KXtyZXR1cm4gaSh0aGlzLHQsYXJndW1lbnRzLmxlbmd0aCxhcmd1bWVudHNbMV0sITEpfX0pfSx7MTM6MTMsMzI6MzIsOTY6OTZ9XSwxMzc6W2Z1bmN0aW9uKHQsbixyKXsidXNlIHN0cmljdCI7dmFyIGU9dCgzMiksaT10KDQxKSxvPXQoMTgpLHU9dCgxMDUpLGM9dCgxMDgpLGY9W10uc2xpY2U7ZShlLlArZS5GKnQoMzQpKGZ1bmN0aW9uKCl7aSYmZi5jYWxsKGkpfSksIkFycmF5Iix7c2xpY2U6ZnVuY3Rpb24gc2xpY2UodCxuKXt2YXIgcj1jKHRoaXMubGVuZ3RoKSxlPW8odGhpcyk7aWYobj12b2lkIDA9PT1uP3I6biwiQXJyYXkiPT1lKXJldHVybiBmLmNhbGwodGhpcyx0LG4pO2Zvcih2YXIgaT11KHQsciksYT11KG4scikscz1jKGEtaSksbD1BcnJheShzKSxoPTA7aDxzO2grKylsW2hdPSJTdHJpbmciPT1lP3RoaXMuY2hhckF0KGkraCk6dGhpc1tpK2hdO3JldHVybiBsfX0pfSx7MTA1OjEwNSwxMDg6MTA4LDE4OjE4LDMyOjMyLDM0OjM0LDQxOjQxfV0sMTM4OltmdW5jdGlvbih0LG4scil7InVzZSBzdHJpY3QiO3ZhciBlPXQoMzIpLGk9dCgxMikoMyk7ZShlLlArZS5GKiF0KDk2KShbXS5zb21lLCEwKSwiQXJyYXkiLHtzb21lOmZ1bmN0aW9uIHNvbWUodCl7cmV0dXJuIGkodGhpcyx0LGFyZ3VtZW50c1sxXSl9fSl9LHsxMjoxMiwzMjozMiw5Njo5Nn1dLDEzOTpbZnVuY3Rpb24odCxuLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgZT10KDMyKSxpPXQoMyksbz10KDEwOSksdT10KDM0KSxjPVtdLnNvcnQsZj1bMSwyLDNdO2UoZS5QK2UuRioodShmdW5jdGlvbigpe2Yuc29ydCh2b2lkIDApfSl8fCF1KGZ1bmN0aW9uKCl7Zi5zb3J0KG51bGwpfSl8fCF0KDk2KShjKSksIkFycmF5Iix7c29ydDpmdW5jdGlvbiBzb3J0KHQpe3JldHVybiB2b2lkIDA9PT10P2MuY2FsbChvKHRoaXMpKTpjLmNhbGwobyh0aGlzKSxpKHQpKX19KX0sezEwOToxMDksMzozLDMyOjMyLDM0OjM0LDk2Ojk2fV0sMTQwOltmdW5jdGlvbih0LG4scil7dCg5MSkoIkFycmF5Iil9LHs5MTo5MX1dLDE0MTpbZnVuY3Rpb24odCxuLHIpe3ZhciBlPXQoMzIpO2UoZS5TLCJEYXRlIix7bm93OmZ1bmN0aW9uKCl7cmV0dXJuKG5ldyBEYXRlKS5nZXRUaW1lKCl9fSl9LHszMjozMn1dLDE0MjpbZnVuY3Rpb24odCxuLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgZT10KDMyKSxpPXQoMzQpLG89RGF0ZS5wcm90b3R5cGUuZ2V0VGltZSx1PWZ1bmN0aW9uKHQpe3JldHVybiB0Pjk/dDoiMCIrdH07ZShlLlArZS5GKihpKGZ1bmN0aW9uKCl7cmV0dXJuIjAzODUtMDctMjVUMDc6MDY6MzkuOTk5WiIhPW5ldyBEYXRlKC01ZTEzLTEpLnRvSVNPU3RyaW5nKCl9KXx8IWkoZnVuY3Rpb24oKXtuZXcgRGF0ZShOYU4pLnRvSVNPU3RyaW5nKCl9KSksIkRhdGUiLHt0b0lTT1N0cmluZzpmdW5jdGlvbiB0b0lTT1N0cmluZygpe2lmKCFpc0Zpbml0ZShvLmNhbGwodGhpcykpKXRocm93IFJhbmdlRXJyb3IoIkludmFsaWQgdGltZSB2YWx1ZSIpO3ZhciB0PXRoaXMsbj10LmdldFVUQ0Z1bGxZZWFyKCkscj10LmdldFVUQ01pbGxpc2Vjb25kcygpLGU9bjwwPyItIjpuPjk5OTk/IisiOiIiO3JldHVybiBlKygiMDAwMDAiK01hdGguYWJzKG4pKS5zbGljZShlPy02Oi00KSsiLSIrdSh0LmdldFVUQ01vbnRoKCkrMSkrIi0iK3UodC5nZXRVVENEYXRlKCkpKyJUIit1KHQuZ2V0VVRDSG91cnMoKSkrIjoiK3UodC5nZXRVVENNaW51dGVzKCkpKyI6Iit1KHQuZ2V0VVRDU2Vjb25kcygpKSsiLiIrKHI+OTk/cjoiMCIrdShyKSkrIloifX0pfSx7MzI6MzIsMzQ6MzR9XSwxNDM6W2Z1bmN0aW9uKHQsbixyKXsidXNlIHN0cmljdCI7dmFyIGU9dCgzMiksaT10KDEwOSksbz10KDExMCk7ZShlLlArZS5GKnQoMzQpKGZ1bmN0aW9uKCl7cmV0dXJuIG51bGwhPT1uZXcgRGF0ZShOYU4pLnRvSlNPTigpfHwxIT09RGF0ZS5wcm90b3R5cGUudG9KU09OLmNhbGwoe3RvSVNPU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIDF9fSl9KSwiRGF0ZSIse3RvSlNPTjpmdW5jdGlvbiB0b0pTT04odCl7dmFyIG49aSh0aGlzKSxyPW8obik7cmV0dXJuIm51bWJlciIhPXR5cGVvZiByfHxpc0Zpbml0ZShyKT9uLnRvSVNPU3RyaW5nKCk6bnVsbH19KX0sezEwOToxMDksMTEwOjExMCwzMjozMiwzNDozNH1dLDE0NDpbZnVuY3Rpb24odCxuLHIpe3ZhciBlPXQoMTE3KSgidG9QcmltaXRpdmUiKSxpPURhdGUucHJvdG90eXBlO2UgaW4gaXx8dCg0MCkoaSxlLHQoMjYpKX0sezExNzoxMTcsMjY6MjYsNDA6NDB9XSwxNDU6W2Z1bmN0aW9uKHQsbixyKXt2YXIgZT1EYXRlLnByb3RvdHlwZSxpPSJJbnZhbGlkIERhdGUiLG89InRvU3RyaW5nIix1PWVbb10sYz1lLmdldFRpbWU7bmV3IERhdGUoTmFOKSsiIiE9aSYmdCg4NykoZSxvLGZ1bmN0aW9uIHRvU3RyaW5nKCl7dmFyIHQ9Yy5jYWxsKHRoaXMpO3JldHVybiB0PT09dD91LmNhbGwodGhpcyk6aX0pfSx7ODc6ODd9XSwxNDY6W2Z1bmN0aW9uKHQsbixyKXt2YXIgZT10KDMyKTtlKGUuUCwiRnVuY3Rpb24iLHtiaW5kOnQoMTYpfSl9LHsxNjoxNiwzMjozMn1dLDE0NzpbZnVuY3Rpb24odCxuLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgZT10KDQ5KSxpPXQoNzQpLG89dCgxMTcpKCJoYXNJbnN0YW5jZSIpLHU9RnVuY3Rpb24ucHJvdG90eXBlO28gaW4gdXx8dCg2NykuZih1LG8se3ZhbHVlOmZ1bmN0aW9uKHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0aGlzfHwhZSh0KSlyZXR1cm4hMTtpZighZSh0aGlzLnByb3RvdHlwZSkpcmV0dXJuIHQgaW5zdGFuY2VvZiB0aGlzO2Zvcig7dD1pKHQpOylpZih0aGlzLnByb3RvdHlwZT09PXQpcmV0dXJuITA7cmV0dXJuITF9fSl9LHsxMTc6MTE3LDQ5OjQ5LDY3OjY3LDc0Ojc0fV0sMTQ4OltmdW5jdGlvbih0LG4scil7dmFyIGU9dCg2NykuZixpPXQoODUpLG89dCgzOSksdT1GdW5jdGlvbi5wcm90b3R5cGUsYz0vXlxzKmZ1bmN0aW9uIChbXiAoXSopLyxmPSJuYW1lIixhPU9iamVjdC5pc0V4dGVuc2libGV8fGZ1bmN0aW9uKCl7cmV0dXJuITB9O2YgaW4gdXx8dCgyOCkmJmUodSxmLHtjb25maWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7dHJ5e3ZhciB0PXRoaXMsbj0oIiIrdCkubWF0Y2goYylbMV07cmV0dXJuIG8odCxmKXx8IWEodCl8fGUodCxmLGkoNSxuKSksbn1jYXRjaCh0KXtyZXR1cm4iIn19fSl9LHsyODoyOCwzOTozOSw2Nzo2Nyw4NTo4NX1dLDE0OTpbZnVuY3Rpb24odCxuLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgZT10KDE5KTtuLmV4cG9ydHM9dCgyMikoIk1hcCIsZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uIE1hcCgpe3JldHVybiB0KHRoaXMsYXJndW1lbnRzLmxlbmd0aD4wP2FyZ3VtZW50c1swXTp2b2lkIDApfX0se2dldDpmdW5jdGlvbiBnZXQodCl7dmFyIG49ZS5nZXRFbnRyeSh0aGlzLHQpO3JldHVybiBuJiZuLnZ9LHNldDpmdW5jdGlvbiBzZXQodCxuKXtyZXR1cm4gZS5kZWYodGhpcywwPT09dD8wOnQsbil9fSxlLCEwKX0sezE5OjE5LDIyOjIyfV0sMTUwOltmdW5jdGlvbih0LG4scil7dmFyIGU9dCgzMiksaT10KDYwKSxvPU1hdGguc3FydCx1PU1hdGguYWNvc2g7ZShlLlMrZS5GKiEodSYmNzEwPT1NYXRoLmZsb29yKHUoTnVtYmVyLk1BWF9WQUxVRSkpJiZ1KDEvMCk9PTEvMCksIk1hdGgiLHthY29zaDpmdW5jdGlvbiBhY29zaCh0KXtyZXR1cm4odD0rdCk8MT9OYU46dD45NDkwNjI2NS42MjQyNTE1Nj9NYXRoLmxvZyh0KStNYXRoLkxOMjppKHQtMStvKHQtMSkqbyh0KzEpKX19KX0sezMyOjMyLDYwOjYwfV0sMTUxOltmdW5jdGlvbih0LG4scil7ZnVuY3Rpb24gYXNpbmgodCl7cmV0dXJuIGlzRmluaXRlKHQ9K3QpJiYwIT10P3Q8MD8tYXNpbmgoLXQpOk1hdGgubG9nKHQrTWF0aC5zcXJ0KHQqdCsxKSk6dH12YXIgZT10KDMyKSxpPU1hdGguYXNpbmg7ZShlLlMrZS5GKiEoaSYmMS9pKDApPjApLCJNYXRoIix7YXNpbmg6YXNpbmh9KX0sezMyOjMyfV0sMTUyOltmdW5jdGlvbih0LG4scil7dmFyIGU9dCgzMiksaT1NYXRoLmF0YW5oO2UoZS5TK2UuRiohKGkmJjEvaSgtMCk8MCksIk1hdGgiLHthdGFuaDpmdW5jdGlvbiBhdGFuaCh0KXtyZXR1cm4gMD09KHQ9K3QpP3Q6TWF0aC5sb2coKDErdCkvKDEtdCkpLzJ9fSl9LHszMjozMn1dLDE1MzpbZnVuY3Rpb24odCxuLHIpe3ZhciBlPXQoMzIpLGk9dCg2MSk7ZShlLlMsIk1hdGgiLHtjYnJ0OmZ1bmN0aW9uIGNicnQodCl7cmV0dXJuIGkodD0rdCkqTWF0aC5wb3coTWF0aC5hYnModCksMS8zKX19KX0sezMyOjMyLDYxOjYxfV0sMTU0OltmdW5jdGlvbih0LG4scil7dmFyIGU9dCgzMik7ZShlLlMsIk1hdGgiLHtjbHozMjpmdW5jdGlvbiBjbHozMih0KXtyZXR1cm4odD4+Pj0wKT8zMS1NYXRoLmZsb29yKE1hdGgubG9nKHQrLjUpKk1hdGguTE9HMkUpOjMyfX0pfSx7MzI6MzJ9XSwxNTU6W2Z1bmN0aW9uKHQsbixyKXt2YXIgZT10KDMyKSxpPU1hdGguZXhwO2UoZS5TLCJNYXRoIix7Y29zaDpmdW5jdGlvbiBjb3NoKHQpe3JldHVybihpKHQ9K3QpK2koLXQpKS8yfX0pfSx7MzI6MzJ9XSwxNTY6W2Z1bmN0aW9uKHQsbixyKXt2YXIgZT10KDMyKSxpPXQoNTkpO2UoZS5TK2UuRiooaSE9TWF0aC5leHBtMSksIk1hdGgiLHtleHBtMTppfSl9LHszMjozMiw1OTo1OX1dLDE1NzpbZnVuY3Rpb24odCxuLHIpe3ZhciBlPXQoMzIpLGk9dCg2MSksbz1NYXRoLnBvdyx1PW8oMiwtNTIpLGM9bygyLC0yMyksZj1vKDIsMTI3KSooMi1jKSxhPW8oMiwtMTI2KSxzPWZ1bmN0aW9uKHQpe3JldHVybiB0KzEvdS0xL3V9O2UoZS5TLCJNYXRoIix7ZnJvdW5kOmZ1bmN0aW9uIGZyb3VuZCh0KXt2YXIgbixyLGU9TWF0aC5hYnModCksbz1pKHQpO3JldHVybiBlPGE/bypzKGUvYS9jKSphKmM6KG49KDErYy91KSplLHI9bi0obi1lKSxyPmZ8fHIhPXI/byooMS8wKTpvKnIpfX0pfSx7MzI6MzIsNjE6NjF9XSwxNTg6W2Z1bmN0aW9uKHQsbixyKXt2YXIgZT10KDMyKSxpPU1hdGguYWJzO2UoZS5TLCJNYXRoIix7aHlwb3Q6ZnVuY3Rpb24gaHlwb3QodCxuKXtmb3IodmFyIHIsZSxvPTAsdT0wLGM9YXJndW1lbnRzLmxlbmd0aCxmPTA7dTxjOylyPWkoYXJndW1lbnRzW3UrK10pLGY8cj8oZT1mL3Isbz1vKmUqZSsxLGY9cik6cj4wPyhlPXIvZixvKz1lKmUpOm8rPXI7cmV0dXJuIGY9PT0xLzA/MS8wOmYqTWF0aC5zcXJ0KG8pfX0pfSx7MzI6MzJ9XSwxNTk6W2Z1bmN0aW9uKHQsbixyKXt2YXIgZT10KDMyKSxpPU1hdGguaW11bDtlKGUuUytlLkYqdCgzNCkoZnVuY3Rpb24oKXtyZXR1cm4gaSg0Mjk0OTY3Mjk1LDUpIT0tNXx8MiE9aS5sZW5ndGh9KSwiTWF0aCIse2ltdWw6ZnVuY3Rpb24gaW11bCh0LG4pe3ZhciByPTY1NTM1LGU9K3QsaT0rbixvPXImZSx1PXImaTtyZXR1cm4gMHxvKnUrKChyJmU+Pj4xNikqdStvKihyJmk+Pj4xNik8PDE2Pj4+MCl9fSl9LHszMjozMiwzNDozNH1dLDE2MDpbZnVuY3Rpb24odCxuLHIpe3ZhciBlPXQoMzIpO2UoZS5TLCJNYXRoIix7bG9nMTA6ZnVuY3Rpb24gbG9nMTAodCl7cmV0dXJuIE1hdGgubG9nKHQpL01hdGguTE4xMH19KX0sezMyOjMyfV0sMTYxOltmdW5jdGlvbih0LG4scil7dmFyIGU9dCgzMik7ZShlLlMsIk1hdGgiLHtsb2cxcDp0KDYwKX0pfSx7MzI6MzIsNjA6NjB9XSwxNjI6W2Z1bmN0aW9uKHQsbixyKXt2YXIgZT10KDMyKTtlKGUuUywiTWF0aCIse2xvZzI6ZnVuY3Rpb24gbG9nMih0KXtyZXR1cm4gTWF0aC5sb2codCkvTWF0aC5MTjJ9fSl9LHszMjozMn1dLDE2MzpbZnVuY3Rpb24odCxuLHIpe3ZhciBlPXQoMzIpO2UoZS5TLCJNYXRoIix7c2lnbjp0KDYxKX0pfSx7MzI6MzIsNjE6NjF9XSwxNjQ6W2Z1bmN0aW9uKHQsbixyKXt2YXIgZT10KDMyKSxpPXQoNTkpLG89TWF0aC5leHA7ZShlLlMrZS5GKnQoMzQpKGZ1bmN0aW9uKCl7cmV0dXJuIU1hdGguc2luaCgtMmUtMTcpIT0tMmUtMTd9KSwiTWF0aCIse3Npbmg6ZnVuY3Rpb24gc2luaCh0KXtyZXR1cm4gTWF0aC5hYnModD0rdCk8MT8oaSh0KS1pKC10KSkvMjoobyh0LTEpLW8oLXQtMSkpKihNYXRoLkUvMil9fSl9LHszMjozMiwzNDozNCw1OTo1OX1dLDE2NTpbZnVuY3Rpb24odCxuLHIpe3ZhciBlPXQoMzIpLGk9dCg1OSksbz1NYXRoLmV4cDtlKGUuUywiTWF0aCIse3Rhbmg6ZnVuY3Rpb24gdGFuaCh0KXt2YXIgbj1pKHQ9K3QpLHI9aSgtdCk7cmV0dXJuIG49PTEvMD8xOnI9PTEvMD8tMToobi1yKS8obyh0KStvKC10KSl9fSl9LHszMjozMiw1OTo1OX1dLDE2NjpbZnVuY3Rpb24odCxuLHIpe3ZhciBlPXQoMzIpO2UoZS5TLCJNYXRoIix7dHJ1bmM6ZnVuY3Rpb24gdHJ1bmModCl7cmV0dXJuKHQ+MD9NYXRoLmZsb29yOk1hdGguY2VpbCkodCl9fSl9LHszMjozMn1dLDE2NzpbZnVuY3Rpb24odCxuLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgZT10KDM4KSxpPXQoMzkpLG89dCgxOCksdT10KDQzKSxjPXQoMTEwKSxmPXQoMzQpLGE9dCg3MikuZixzPXQoNzApLmYsbD10KDY3KS5mLGg9dCgxMDIpLnRyaW0sdj0iTnVtYmVyIixwPWVbdl0sZD1wLHk9cC5wcm90b3R5cGUsZz1vKHQoNjYpKHkpKT09dixiPSJ0cmltImluIFN0cmluZy5wcm90b3R5cGUseD1mdW5jdGlvbih0KXt2YXIgbj1jKHQsITEpO2lmKCJzdHJpbmciPT10eXBlb2YgbiYmbi5sZW5ndGg+Mil7bj1iP24udHJpbSgpOmgobiwzKTt2YXIgcixlLGksbz1uLmNoYXJDb2RlQXQoMCk7aWYoNDM9PT1vfHw0NT09PW8pe2lmKHI9bi5jaGFyQ29kZUF0KDIpLDg4PT09cnx8MTIwPT09cilyZXR1cm4gTmFOfWVsc2UgaWYoNDg9PT1vKXtzd2l0Y2gobi5jaGFyQ29kZUF0KDEpKXtjYXNlIDY2OmNhc2UgOTg6ZT0yLGk9NDk7YnJlYWs7Y2FzZSA3OTpjYXNlIDExMTplPTgsaT01NTticmVhaztkZWZhdWx0OnJldHVybitufWZvcih2YXIgdSxmPW4uc2xpY2UoMiksYT0wLHM9Zi5sZW5ndGg7YTxzO2ErKylpZih1PWYuY2hhckNvZGVBdChhKSx1PDQ4fHx1PmkpcmV0dXJuIE5hTjtyZXR1cm4gcGFyc2VJbnQoZixlKX19cmV0dXJuK259O2lmKCFwKCIgMG8xIil8fCFwKCIwYjEiKXx8cCgiKzB4MSIpKXtwPWZ1bmN0aW9uIE51bWJlcih0KXt2YXIgbj1hcmd1bWVudHMubGVuZ3RoPDE/MDp0LHI9dGhpcztyZXR1cm4gciBpbnN0YW5jZW9mIHAmJihnP2YoZnVuY3Rpb24oKXt5LnZhbHVlT2YuY2FsbChyKX0pOm8ocikhPXYpP3UobmV3IGQoeChuKSkscixwKTp4KG4pfTtmb3IodmFyIG0sdz10KDI4KT9hKGQpOiJNQVhfVkFMVUUsTUlOX1ZBTFVFLE5hTixORUdBVElWRV9JTkZJTklUWSxQT1NJVElWRV9JTkZJTklUWSxFUFNJTE9OLGlzRmluaXRlLGlzSW50ZWdlcixpc05hTixpc1NhZmVJbnRlZ2VyLE1BWF9TQUZFX0lOVEVHRVIsTUlOX1NBRkVfSU5URUdFUixwYXJzZUZsb2F0LHBhcnNlSW50LGlzSW50ZWdlciIuc3BsaXQoIiwiKSxTPTA7dy5sZW5ndGg+UztTKyspaShkLG09d1tTXSkmJiFpKHAsbSkmJmwocCxtLHMoZCxtKSk7cC5wcm90b3R5cGU9eSx5LmNvbnN0cnVjdG9yPXAsdCg4NykoZSx2LHApfX0sezEwMjoxMDIsMTEwOjExMCwxODoxOCwyODoyOCwzNDozNCwzODozOCwzOTozOSw0Mzo0Myw2Njo2Niw2Nzo2Nyw3MDo3MCw3Mjo3Miw4Nzo4N31dLDE2ODpbZnVuY3Rpb24odCxuLHIpe3ZhciBlPXQoMzIpO2UoZS5TLCJOdW1iZXIiLHtFUFNJTE9OOk1hdGgucG93KDIsLTUyKX0pfSx7MzI6MzJ9XSwxNjk6W2Z1bmN0aW9uKHQsbixyKXt2YXIgZT10KDMyKSxpPXQoMzgpLmlzRmluaXRlO2UoZS5TLCJOdW1iZXIiLHtpc0Zpbml0ZTpmdW5jdGlvbiBpc0Zpbml0ZSh0KXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIHQmJmkodCl9fSl9LHszMjozMiwzODozOH1dLDE3MDpbZnVuY3Rpb24odCxuLHIpe3ZhciBlPXQoMzIpO2UoZS5TLCJOdW1iZXIiLHtpc0ludGVnZXI6dCg0OCl9KX0sezMyOjMyLDQ4OjQ4fV0sMTcxOltmdW5jdGlvbih0LG4scil7dmFyIGU9dCgzMik7ZShlLlMsIk51bWJlciIse2lzTmFOOmZ1bmN0aW9uIGlzTmFOKHQpe3JldHVybiB0IT10fX0pfSx7MzI6MzJ9XSwxNzI6W2Z1bmN0aW9uKHQsbixyKXt2YXIgZT10KDMyKSxpPXQoNDgpLG89TWF0aC5hYnM7ZShlLlMsIk51bWJlciIse2lzU2FmZUludGVnZXI6ZnVuY3Rpb24gaXNTYWZlSW50ZWdlcih0KXtyZXR1cm4gaSh0KSYmbyh0KTw9OTAwNzE5OTI1NDc0MDk5MX19KX0sezMyOjMyLDQ4OjQ4fV0sMTczOltmdW5jdGlvbih0LG4scil7dmFyIGU9dCgzMik7ZShlLlMsIk51bWJlciIse01BWF9TQUZFX0lOVEVHRVI6OTAwNzE5OTI1NDc0MDk5MX0pfSx7MzI6MzJ9XSwxNzQ6W2Z1bmN0aW9uKHQsbixyKXt2YXIgZT10KDMyKTtlKGUuUywiTnVtYmVyIix7TUlOX1NBRkVfSU5URUdFUjotOTAwNzE5OTI1NDc0MDk5MX0pfSx7MzI6MzJ9XSwxNzU6W2Z1bmN0aW9uKHQsbixyKXt2YXIgZT10KDMyKSxpPXQoODEpO2UoZS5TK2UuRiooTnVtYmVyLnBhcnNlRmxvYXQhPWkpLCJOdW1iZXIiLHtwYXJzZUZsb2F0Oml9KX0sezMyOjMyLDgxOjgxfV0sMTc2OltmdW5jdGlvbih0LG4scil7dmFyIGU9dCgzMiksaT10KDgyKTtlKGUuUytlLkYqKE51bWJlci5wYXJzZUludCE9aSksIk51bWJlciIse3BhcnNlSW50Oml9KX0sezMyOjMyLDgyOjgyfV0sMTc3OltmdW5jdGlvbih0LG4scil7InVzZSBzdHJpY3QiO3ZhciBlPXQoMzIpLGk9dCgxMDYpLG89dCg0KSx1PXQoMTAxKSxjPTEuLnRvRml4ZWQsZj1NYXRoLmZsb29yLGE9WzAsMCwwLDAsMCwwXSxzPSJOdW1iZXIudG9GaXhlZDogaW5jb3JyZWN0IGludm9jYXRpb24hIixsPSIwIixoPWZ1bmN0aW9uKHQsbil7Zm9yKHZhciByPS0xLGU9bjsrK3I8NjspZSs9dCphW3JdLGFbcl09ZSUxZTcsZT1mKGUvMWU3KX0sdj1mdW5jdGlvbih0KXtmb3IodmFyIG49NixyPTA7LS1uPj0wOylyKz1hW25dLGFbbl09ZihyL3QpLHI9ciV0KjFlN30scD1mdW5jdGlvbigpe2Zvcih2YXIgdD02LG49IiI7LS10Pj0wOylpZigiIiE9PW58fDA9PT10fHwwIT09YVt0XSl7dmFyIHI9U3RyaW5nKGFbdF0pO249IiI9PT1uP3I6bit1LmNhbGwobCw3LXIubGVuZ3RoKStyfXJldHVybiBufSxkPWZ1bmN0aW9uKHQsbixyKXtyZXR1cm4gMD09PW4/cjpuJTI9PT0xP2QodCxuLTEscip0KTpkKHQqdCxuLzIscil9LHk9ZnVuY3Rpb24odCl7Zm9yKHZhciBuPTAscj10O3I+PTQwOTY7KW4rPTEyLHIvPTQwOTY7Zm9yKDtyPj0yOyluKz0xLHIvPTI7cmV0dXJuIG59O2UoZS5QK2UuRiooISFjJiYoIjAuMDAwIiE9PThlLTUudG9GaXhlZCgzKXx8IjEiIT09LjkudG9GaXhlZCgwKXx8IjEuMjUiIT09MS4yNTUudG9GaXhlZCgyKXx8IjEwMDAwMDAwMDAwMDAwMDAxMjgiIT09KDB4ZGUwYjZiM2E3NjQwMDgwKS50b0ZpeGVkKDApKXx8IXQoMzQpKGZ1bmN0aW9uKCl7Yy5jYWxsKHt9KX0pKSwiTnVtYmVyIix7dG9GaXhlZDpmdW5jdGlvbiB0b0ZpeGVkKHQpe3ZhciBuLHIsZSxjLGY9byh0aGlzLHMpLGE9aSh0KSxnPSIiLGI9bDtpZihhPDB8fGE+MjApdGhyb3cgUmFuZ2VFcnJvcihzKTtpZihmIT1mKXJldHVybiJOYU4iO2lmKGY8PS0xZTIxfHxmPj0xZTIxKXJldHVybiBTdHJpbmcoZik7aWYoZjwwJiYoZz0iLSIsZj0tZiksZj4xZS0yMSlpZihuPXkoZipkKDIsNjksMSkpLTY5LHI9bjwwP2YqZCgyLC1uLDEpOmYvZCgyLG4sMSkscio9NDUwMzU5OTYyNzM3MDQ5NixuPTUyLW4sbj4wKXtmb3IoaCgwLHIpLGU9YTtlPj03OyloKDFlNywwKSxlLT03O2ZvcihoKGQoMTAsZSwxKSwwKSxlPW4tMTtlPj0yMzspdigxPDwyMyksZS09MjM7digxPDxlKSxoKDEsMSksdigyKSxiPXAoKX1lbHNlIGgoMCxyKSxoKDE8PC1uLDApLGI9cCgpK3UuY2FsbChsLGEpO3JldHVybiBhPjA/KGM9Yi5sZW5ndGgsYj1nKyhjPD1hPyIwLiIrdS5jYWxsKGwsYS1jKStiOmIuc2xpY2UoMCxjLWEpKyIuIitiLnNsaWNlKGMtYSkpKTpiPWcrYixifX0pfSx7MTAxOjEwMSwxMDY6MTA2LDMyOjMyLDM0OjM0LDQ6NH1dLDE3ODpbZnVuY3Rpb24odCxuLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgZT10KDMyKSxpPXQoMzQpLG89dCg0KSx1PTEuLnRvUHJlY2lzaW9uO2UoZS5QK2UuRiooaShmdW5jdGlvbigpe3JldHVybiIxIiE9PXUuY2FsbCgxLHZvaWQgMCl9KXx8IWkoZnVuY3Rpb24oKXt1LmNhbGwoe30pfSkpLCJOdW1iZXIiLHt0b1ByZWNpc2lvbjpmdW5jdGlvbiB0b1ByZWNpc2lvbih0KXt2YXIgbj1vKHRoaXMsIk51bWJlciN0b1ByZWNpc2lvbjogaW5jb3JyZWN0IGludm9jYXRpb24hIik7cmV0dXJuIHZvaWQgMD09PXQ/dS5jYWxsKG4pOnUuY2FsbChuLHQpfX0pfSx7MzI6MzIsMzQ6MzQsNDo0fV0sMTc5OltmdW5jdGlvbih0LG4scil7dmFyIGU9dCgzMik7ZShlLlMrZS5GLCJPYmplY3QiLHthc3NpZ246dCg2NSl9KX0sezMyOjMyLDY1OjY1fV0sMTgwOltmdW5jdGlvbih0LG4scil7dmFyIGU9dCgzMik7ZShlLlMsIk9iamVjdCIse2NyZWF0ZTp0KDY2KX0pfSx7MzI6MzIsNjY6NjZ9XSwxODE6W2Z1bmN0aW9uKHQsbixyKXt2YXIgZT10KDMyKTtlKGUuUytlLkYqIXQoMjgpLCJPYmplY3QiLHtkZWZpbmVQcm9wZXJ0aWVzOnQoNjgpfSl9LHsyODoyOCwzMjozMiw2ODo2OH1dLDE4MjpbZnVuY3Rpb24odCxuLHIpe3ZhciBlPXQoMzIpO2UoZS5TK2UuRiohdCgyOCksIk9iamVjdCIse2RlZmluZVByb3BlcnR5OnQoNjcpLmZ9KX0sezI4OjI4LDMyOjMyLDY3OjY3fV0sMTgzOltmdW5jdGlvbih0LG4scil7dmFyIGU9dCg0OSksaT10KDYyKS5vbkZyZWV6ZTt0KDc4KSgiZnJlZXplIixmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24gZnJlZXplKG4pe3JldHVybiB0JiZlKG4pP3QoaShuKSk6bn19KX0sezQ5OjQ5LDYyOjYyLDc4Ojc4fV0sMTg0OltmdW5jdGlvbih0LG4scil7dmFyIGU9dCgxMDcpLGk9dCg3MCkuZjt0KDc4KSgiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIixmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKXtyZXR1cm4gaShlKHQpLG4pfX0pfSx7MTA3OjEwNyw3MDo3MCw3ODo3OH1dLDE4NTpbZnVuY3Rpb24odCxuLHIpe3QoNzgpKCJnZXRPd25Qcm9wZXJ0eU5hbWVzIixmdW5jdGlvbigpe3JldHVybiB0KDcxKS5mfSl9LHs3MTo3MSw3ODo3OH1dLDE4NjpbZnVuY3Rpb24odCxuLHIpe3ZhciBlPXQoMTA5KSxpPXQoNzQpO3QoNzgpKCJnZXRQcm90b3R5cGVPZiIsZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24gZ2V0UHJvdG90eXBlT2YodCl7cmV0dXJuIGkoZSh0KSl9fSl9LHsxMDk6MTA5LDc0Ojc0LDc4Ojc4fV0sMTg3OltmdW5jdGlvbih0LG4scil7dmFyIGU9dCg0OSk7dCg3OCkoImlzRXh0ZW5zaWJsZSIsZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uIGlzRXh0ZW5zaWJsZShuKXtyZXR1cm4hIWUobikmJighdHx8dChuKSl9fSl9LHs0OTo0OSw3ODo3OH1dLDE4ODpbZnVuY3Rpb24odCxuLHIpe3ZhciBlPXQoNDkpO3QoNzgpKCJpc0Zyb3plbiIsZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uIGlzRnJvemVuKG4pe3JldHVybiFlKG4pfHwhIXQmJnQobil9fSl9LHs0OTo0OSw3ODo3OH1dLDE4OTpbZnVuY3Rpb24odCxuLHIpe3ZhciBlPXQoNDkpO3QoNzgpKCJpc1NlYWxlZCIsZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uIGlzU2VhbGVkKG4pe3JldHVybiFlKG4pfHwhIXQmJnQobil9fSl9LHs0OTo0OSw3ODo3OH1dLDE5MDpbZnVuY3Rpb24odCxuLHIpe3ZhciBlPXQoMzIpO2UoZS5TLCJPYmplY3QiLHtpczp0KDg5KX0pfSx7MzI6MzIsODk6ODl9XSwxOTE6W2Z1bmN0aW9uKHQsbixyKXt2YXIgZT10KDEwOSksaT10KDc2KTt0KDc4KSgia2V5cyIsZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24ga2V5cyh0KXtyZXR1cm4gaShlKHQpKX19KX0sezEwOToxMDksNzY6NzYsNzg6Nzh9XSwxOTI6W2Z1bmN0aW9uKHQsbixyKXt2YXIgZT10KDQ5KSxpPXQoNjIpLm9uRnJlZXplO3QoNzgpKCJwcmV2ZW50RXh0ZW5zaW9ucyIsZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uIHByZXZlbnRFeHRlbnNpb25zKG4pe3JldHVybiB0JiZlKG4pP3QoaShuKSk6bn19KX0sezQ5OjQ5LDYyOjYyLDc4Ojc4fV0sMTkzOltmdW5jdGlvbih0LG4scil7dmFyIGU9dCg0OSksaT10KDYyKS5vbkZyZWV6ZTt0KDc4KSgic2VhbCIsZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uIHNlYWwobil7cmV0dXJuIHQmJmUobik/dChpKG4pKTpufX0pfSx7NDk6NDksNjI6NjIsNzg6Nzh9XSwxOTQ6W2Z1bmN0aW9uKHQsbixyKXt2YXIgZT10KDMyKTtlKGUuUywiT2JqZWN0Iix7c2V0UHJvdG90eXBlT2Y6dCg5MCkuc2V0fSl9LHszMjozMiw5MDo5MH1dLDE5NTpbZnVuY3Rpb24odCxuLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgZT10KDE3KSxpPXt9O2lbdCgxMTcpKCJ0b1N0cmluZ1RhZyIpXT0ieiIsaSsiIiE9IltvYmplY3Qgel0iJiZ0KDg3KShPYmplY3QucHJvdG90eXBlLCJ0b1N0cmluZyIsZnVuY3Rpb24gdG9TdHJpbmcoKXtyZXR1cm4iW29iamVjdCAiK2UodGhpcykrIl0ifSwhMCl9LHsxMTc6MTE3LDE3OjE3LDg3Ojg3fV0sMTk2OltmdW5jdGlvbih0LG4scil7dmFyIGU9dCgzMiksaT10KDgxKTtlKGUuRytlLkYqKHBhcnNlRmxvYXQhPWkpLHtwYXJzZUZsb2F0Oml9KX0sezMyOjMyLDgxOjgxfV0sMTk3OltmdW5jdGlvbih0LG4scil7dmFyIGU9dCgzMiksaT10KDgyKTtlKGUuRytlLkYqKHBhcnNlSW50IT1pKSx7cGFyc2VJbnQ6aX0pfSx7MzI6MzIsODI6ODJ9XSwxOTg6W2Z1bmN0aW9uKHQsbixyKXsidXNlIHN0cmljdCI7dmFyIGUsaSxvLHU9dCg1OCksYz10KDM4KSxmPXQoMjUpLGE9dCgxNykscz10KDMyKSxsPXQoNDkpLGg9dCgzKSx2PXQoNikscD10KDM3KSxkPXQoOTUpLHk9dCgxMDQpLnNldCxnPXQoNjQpKCksYj0iUHJvbWlzZSIseD1jLlR5cGVFcnJvcixtPWMucHJvY2Vzcyx3PWNbYl0sbT1jLnByb2Nlc3MsUz0icHJvY2VzcyI9PWEobSksXz1mdW5jdGlvbigpe30sRT0hIWZ1bmN0aW9uKCl7dHJ5e3ZhciBuPXcucmVzb2x2ZSgxKSxyPShuLmNvbnN0cnVjdG9yPXt9KVt0KDExNykoInNwZWNpZXMiKV09ZnVuY3Rpb24odCl7dChfLF8pfTtyZXR1cm4oU3x8ImZ1bmN0aW9uIj09dHlwZW9mIFByb21pc2VSZWplY3Rpb25FdmVudCkmJm4udGhlbihfKWluc3RhbmNlb2Ygcn1jYXRjaCh0KXt9fSgpLE89ZnVuY3Rpb24odCxuKXtyZXR1cm4gdD09PW58fHQ9PT13JiZuPT09b30sRj1mdW5jdGlvbih0KXt2YXIgbjtyZXR1cm4hKCFsKHQpfHwiZnVuY3Rpb24iIT10eXBlb2Yobj10LnRoZW4pKSYmbn0sUD1mdW5jdGlvbih0KXtyZXR1cm4gTyh3LHQpP25ldyBNKHQpOm5ldyBpKHQpfSxNPWk9ZnVuY3Rpb24odCl7dmFyIG4scjt0aGlzLnByb21pc2U9bmV3IHQoZnVuY3Rpb24odCxlKXtpZih2b2lkIDAhPT1ufHx2b2lkIDAhPT1yKXRocm93IHgoIkJhZCBQcm9taXNlIGNvbnN0cnVjdG9yIik7bj10LHI9ZX0pLHRoaXMucmVzb2x2ZT1oKG4pLHRoaXMucmVqZWN0PWgocil9LEE9ZnVuY3Rpb24odCl7dHJ5e3QoKX1jYXRjaCh0KXtyZXR1cm57ZXJyb3I6dH19fSxJPWZ1bmN0aW9uKHQsbil7aWYoIXQuX24pe3QuX249ITA7dmFyIHI9dC5fYztnKGZ1bmN0aW9uKCl7Zm9yKHZhciBlPXQuX3YsaT0xPT10Ll9zLG89MCx1PWZ1bmN0aW9uKG4pe3ZhciByLG8sdT1pP24ub2s6bi5mYWlsLGM9bi5yZXNvbHZlLGY9bi5yZWplY3QsYT1uLmRvbWFpbjt0cnl7dT8oaXx8KDI9PXQuX2gmJmsodCksdC5faD0xKSx1PT09ITA/cj1lOihhJiZhLmVudGVyKCkscj11KGUpLGEmJmEuZXhpdCgpKSxyPT09bi5wcm9taXNlP2YoeCgiUHJvbWlzZS1jaGFpbiBjeWNsZSIpKToobz1GKHIpKT9vLmNhbGwocixjLGYpOmMocikpOmYoZSl9Y2F0Y2godCl7Zih0KX19O3IubGVuZ3RoPm87KXUocltvKytdKTt0Ll9jPVtdLHQuX249ITEsbiYmIXQuX2gmJmoodCl9KX19LGo9ZnVuY3Rpb24odCl7eS5jYWxsKGMsZnVuY3Rpb24oKXt2YXIgbixyLGUsaT10Ll92O2lmKE4odCkmJihuPUEoZnVuY3Rpb24oKXtTP20uZW1pdCgidW5oYW5kbGVkUmVqZWN0aW9uIixpLHQpOihyPWMub251bmhhbmRsZWRyZWplY3Rpb24pP3Ioe3Byb21pc2U6dCxyZWFzb246aX0pOihlPWMuY29uc29sZSkmJmUuZXJyb3ImJmUuZXJyb3IoIlVuaGFuZGxlZCBwcm9taXNlIHJlamVjdGlvbiIsaSl9KSx0Ll9oPVN8fE4odCk/MjoxKSx0Ll9hPXZvaWQgMCxuKXRocm93IG4uZXJyb3J9KX0sTj1mdW5jdGlvbih0KXtpZigxPT10Ll9oKXJldHVybiExO2Zvcih2YXIgbixyPXQuX2F8fHQuX2MsZT0wO3IubGVuZ3RoPmU7KWlmKG49cltlKytdLG4uZmFpbHx8IU4obi5wcm9taXNlKSlyZXR1cm4hMTtyZXR1cm4hMH0saz1mdW5jdGlvbih0KXt5LmNhbGwoYyxmdW5jdGlvbigpe3ZhciBuO1M/bS5lbWl0KCJyZWplY3Rpb25IYW5kbGVkIix0KToobj1jLm9ucmVqZWN0aW9uaGFuZGxlZCkmJm4oe3Byb21pc2U6dCxyZWFzb246dC5fdn0pfSl9LFI9ZnVuY3Rpb24odCl7dmFyIG49dGhpcztuLl9kfHwobi5fZD0hMCxuPW4uX3d8fG4sbi5fdj10LG4uX3M9MixuLl9hfHwobi5fYT1uLl9jLnNsaWNlKCkpLEkobiwhMCkpfSxUPWZ1bmN0aW9uKHQpe3ZhciBuLHI9dGhpcztpZighci5fZCl7ci5fZD0hMCxyPXIuX3d8fHI7dHJ5e2lmKHI9PT10KXRocm93IHgoIlByb21pc2UgY2FuJ3QgYmUgcmVzb2x2ZWQgaXRzZWxmIik7KG49Rih0KSk/ZyhmdW5jdGlvbigpe3ZhciBlPXtfdzpyLF9kOiExfTt0cnl7bi5jYWxsKHQsZihULGUsMSksZihSLGUsMSkpfWNhdGNoKHQpe1IuY2FsbChlLHQpfX0pOihyLl92PXQsci5fcz0xLEkociwhMSkpfWNhdGNoKHQpe1IuY2FsbCh7X3c6cixfZDohMX0sdCl9fX07RXx8KHc9ZnVuY3Rpb24gUHJvbWlzZSh0KXt2KHRoaXMsdyxiLCJfaCIpLGgodCksZS5jYWxsKHRoaXMpO3RyeXt0KGYoVCx0aGlzLDEpLGYoUix0aGlzLDEpKX1jYXRjaCh0KXtSLmNhbGwodGhpcyx0KX19LGU9ZnVuY3Rpb24gUHJvbWlzZSh0KXt0aGlzLl9jPVtdLHRoaXMuX2E9dm9pZCAwLHRoaXMuX3M9MCx0aGlzLl9kPSExLHRoaXMuX3Y9dm9pZCAwLHRoaXMuX2g9MCx0aGlzLl9uPSExfSxlLnByb3RvdHlwZT10KDg2KSh3LnByb3RvdHlwZSx7dGhlbjpmdW5jdGlvbiB0aGVuKHQsbil7dmFyIHI9UChkKHRoaXMsdykpO3JldHVybiByLm9rPSJmdW5jdGlvbiIhPXR5cGVvZiB0fHx0LHIuZmFpbD0iZnVuY3Rpb24iPT10eXBlb2YgbiYmbixyLmRvbWFpbj1TP20uZG9tYWluOnZvaWQgMCx0aGlzLl9jLnB1c2gociksdGhpcy5fYSYmdGhpcy5fYS5wdXNoKHIpLHRoaXMuX3MmJkkodGhpcywhMSksci5wcm9taXNlfSxjYXRjaDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy50aGVuKHZvaWQgMCx0KX19KSxNPWZ1bmN0aW9uKCl7dmFyIHQ9bmV3IGU7dGhpcy5wcm9taXNlPXQsdGhpcy5yZXNvbHZlPWYoVCx0LDEpLHRoaXMucmVqZWN0PWYoUix0LDEpfSkscyhzLkcrcy5XK3MuRiohRSx7UHJvbWlzZTp3fSksdCg5MikodyxiKSx0KDkxKShiKSxvPXQoMjMpW2JdLHMocy5TK3MuRiohRSxiLHtyZWplY3Q6ZnVuY3Rpb24gcmVqZWN0KHQpe3ZhciBuPVAodGhpcykscj1uLnJlamVjdDtyZXR1cm4gcih0KSxuLnByb21pc2V9fSkscyhzLlMrcy5GKih1fHwhRSksYix7cmVzb2x2ZTpmdW5jdGlvbiByZXNvbHZlKHQpe2lmKHQgaW5zdGFuY2VvZiB3JiZPKHQuY29uc3RydWN0b3IsdGhpcykpcmV0dXJuIHQ7dmFyIG49UCh0aGlzKSxyPW4ucmVzb2x2ZTtyZXR1cm4gcih0KSxuLnByb21pc2V9fSkscyhzLlMrcy5GKiEoRSYmdCg1NCkoZnVuY3Rpb24odCl7dy5hbGwodCkuY2F0Y2goXyl9KSksYix7YWxsOmZ1bmN0aW9uIGFsbCh0KXt2YXIgbj10aGlzLHI9UChuKSxlPXIucmVzb2x2ZSxpPXIucmVqZWN0LG89QShmdW5jdGlvbigpe3ZhciByPVtdLG89MCx1PTE7cCh0LCExLGZ1bmN0aW9uKHQpe3ZhciBjPW8rKyxmPSExO3IucHVzaCh2b2lkIDApLHUrKyxuLnJlc29sdmUodCkudGhlbihmdW5jdGlvbih0KXtmfHwoZj0hMCxyW2NdPXQsLS11fHxlKHIpKX0saSl9KSwtLXV8fGUocil9KTtyZXR1cm4gbyYmaShvLmVycm9yKSxyLnByb21pc2V9LHJhY2U6ZnVuY3Rpb24gcmFjZSh0KXt2YXIgbj10aGlzLHI9UChuKSxlPXIucmVqZWN0LGk9QShmdW5jdGlvbigpe3AodCwhMSxmdW5jdGlvbih0KXtuLnJlc29sdmUodCkudGhlbihyLnJlc29sdmUsZSl9KX0pO3JldHVybiBpJiZlKGkuZXJyb3IpLHIucHJvbWlzZX19KX0sezEwNDoxMDQsMTE3OjExNywxNzoxNywyMzoyMywyNToyNSwzOjMsMzI6MzIsMzc6MzcsMzg6MzgsNDk6NDksNTQ6NTQsNTg6NTgsNjo2LDY0OjY0LDg2Ojg2LDkxOjkxLDkyOjkyLDk1Ojk1fV0sMTk5OltmdW5jdGlvbih0LG4scil7dmFyIGU9dCgzMiksaT10KDMpLG89dCg3KSx1PSh0KDM4KS5SZWZsZWN0fHx7fSkuYXBwbHksYz1GdW5jdGlvbi5hcHBseTtlKGUuUytlLkYqIXQoMzQpKGZ1bmN0aW9uKCl7dShmdW5jdGlvbigpe30pfSksIlJlZmxlY3QiLHthcHBseTpmdW5jdGlvbiBhcHBseSh0LG4scil7dmFyIGU9aSh0KSxmPW8ocik7cmV0dXJuIHU/dShlLG4sZik6Yy5jYWxsKGUsbixmKX19KX0sezM6MywzMjozMiwzNDozNCwzODozOCw3Ojd9XSwyMDA6W2Z1bmN0aW9uKHQsbixyKXt2YXIgZT10KDMyKSxpPXQoNjYpLG89dCgzKSx1PXQoNyksYz10KDQ5KSxmPXQoMzQpLGE9dCgxNikscz0odCgzOCkuUmVmbGVjdHx8e30pLmNvbnN0cnVjdCxsPWYoZnVuY3Rpb24oKXtmdW5jdGlvbiBGKCl7fXJldHVybiEocyhmdW5jdGlvbigpe30sW10sRilpbnN0YW5jZW9mIEYpfSksaD0hZihmdW5jdGlvbigpe3MoZnVuY3Rpb24oKXt9KX0pO2UoZS5TK2UuRioobHx8aCksIlJlZmxlY3QiLHtjb25zdHJ1Y3Q6ZnVuY3Rpb24gY29uc3RydWN0KHQsbil7byh0KSx1KG4pO3ZhciByPWFyZ3VtZW50cy5sZW5ndGg8Mz90Om8oYXJndW1lbnRzWzJdKTtpZihoJiYhbClyZXR1cm4gcyh0LG4scik7aWYodD09cil7c3dpdGNoKG4ubGVuZ3RoKXtjYXNlIDA6cmV0dXJuIG5ldyB0O2Nhc2UgMTpyZXR1cm4gbmV3IHQoblswXSk7Y2FzZSAyOnJldHVybiBuZXcgdChuWzBdLG5bMV0pO2Nhc2UgMzpyZXR1cm4gbmV3IHQoblswXSxuWzFdLG5bMl0pO2Nhc2UgNDpyZXR1cm4gbmV3IHQoblswXSxuWzFdLG5bMl0sblszXSl9dmFyIGU9W251bGxdO3JldHVybiBlLnB1c2guYXBwbHkoZSxuKSxuZXcoYS5hcHBseSh0LGUpKX12YXIgZj1yLnByb3RvdHlwZSx2PWkoYyhmKT9mOk9iamVjdC5wcm90b3R5cGUpLHA9RnVuY3Rpb24uYXBwbHkuY2FsbCh0LHYsbik7cmV0dXJuIGMocCk/cDp2fX0pfSx7MTY6MTYsMzozLDMyOjMyLDM0OjM0LDM4OjM4LDQ5OjQ5LDY2OjY2LDc6N31dLDIwMTpbZnVuY3Rpb24odCxuLHIpe3ZhciBlPXQoNjcpLGk9dCgzMiksbz10KDcpLHU9dCgxMTApO2koaS5TK2kuRip0KDM0KShmdW5jdGlvbigpe1JlZmxlY3QuZGVmaW5lUHJvcGVydHkoZS5mKHt9LDEse3ZhbHVlOjF9KSwxLHt2YWx1ZToyfSl9KSwiUmVmbGVjdCIse2RlZmluZVByb3BlcnR5OmZ1bmN0aW9uIGRlZmluZVByb3BlcnR5KHQsbixyKXtvKHQpLG49dShuLCEwKSxvKHIpO3RyeXtyZXR1cm4gZS5mKHQsbixyKSwhMH1jYXRjaCh0KXtyZXR1cm4hMX19fSl9LHsxMTA6MTEwLDMyOjMyLDM0OjM0LDY3OjY3LDc6N31dLDIwMjpbZnVuY3Rpb24odCxuLHIpe3ZhciBlPXQoMzIpLGk9dCg3MCkuZixvPXQoNyk7ZShlLlMsIlJlZmxlY3QiLHtkZWxldGVQcm9wZXJ0eTpmdW5jdGlvbiBkZWxldGVQcm9wZXJ0eSh0LG4pe3ZhciByPWkobyh0KSxuKTtyZXR1cm4hKHImJiFyLmNvbmZpZ3VyYWJsZSkmJmRlbGV0ZSB0W25dfX0pfSx7MzI6MzIsNzo3LDcwOjcwfV0sMjAzOltmdW5jdGlvbih0LG4scil7InVzZSBzdHJpY3QiO3ZhciBlPXQoMzIpLGk9dCg3KSxvPWZ1bmN0aW9uKHQpe3RoaXMuX3Q9aSh0KSx0aGlzLl9pPTA7dmFyIG4scj10aGlzLl9rPVtdO2ZvcihuIGluIHQpci5wdXNoKG4pfTt0KDUyKShvLCJPYmplY3QiLGZ1bmN0aW9uKCl7dmFyIHQsbj10aGlzLHI9bi5faztkbyBpZihuLl9pPj1yLmxlbmd0aClyZXR1cm57dmFsdWU6dm9pZCAwLGRvbmU6ITB9O3doaWxlKCEoKHQ9cltuLl9pKytdKWluIG4uX3QpKTtyZXR1cm57dmFsdWU6dCxkb25lOiExfX0pLGUoZS5TLCJSZWZsZWN0Iix7ZW51bWVyYXRlOmZ1bmN0aW9uIGVudW1lcmF0ZSh0KXtyZXR1cm4gbmV3IG8odCl9fSl9LHszMjozMiw1Mjo1Miw3Ojd9XSwyMDQ6W2Z1bmN0aW9uKHQsbixyKXt2YXIgZT10KDcwKSxpPXQoMzIpLG89dCg3KTtpKGkuUywiUmVmbGVjdCIse2dldE93blByb3BlcnR5RGVzY3JpcHRvcjpmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKXtyZXR1cm4gZS5mKG8odCksbil9fSl9LHszMjozMiw3OjcsNzA6NzB9XSwyMDU6W2Z1bmN0aW9uKHQsbixyKXt2YXIgZT10KDMyKSxpPXQoNzQpLG89dCg3KTtlKGUuUywiUmVmbGVjdCIse2dldFByb3RvdHlwZU9mOmZ1bmN0aW9uIGdldFByb3RvdHlwZU9mKHQpe3JldHVybiBpKG8odCkpfX0pfSx7MzI6MzIsNzo3LDc0Ojc0fV0sMjA2OltmdW5jdGlvbih0LG4scil7ZnVuY3Rpb24gZ2V0KHQsbil7dmFyIHIsdSxhPWFyZ3VtZW50cy5sZW5ndGg8Mz90OmFyZ3VtZW50c1syXTtyZXR1cm4gZih0KT09PWE/dFtuXToocj1lLmYodCxuKSk/byhyLCJ2YWx1ZSIpP3IudmFsdWU6dm9pZCAwIT09ci5nZXQ/ci5nZXQuY2FsbChhKTp2b2lkIDA6Yyh1PWkodCkpP2dldCh1LG4sYSk6dm9pZCAwfXZhciBlPXQoNzApLGk9dCg3NCksbz10KDM5KSx1PXQoMzIpLGM9dCg0OSksZj10KDcpO3UodS5TLCJSZWZsZWN0Iix7Z2V0OmdldH0pfSx7MzI6MzIsMzk6MzksNDk6NDksNzo3LDcwOjcwLDc0Ojc0fV0sMjA3OltmdW5jdGlvbih0LG4scil7dmFyIGU9dCgzMik7ZShlLlMsIlJlZmxlY3QiLHtoYXM6ZnVuY3Rpb24gaGFzKHQsbil7cmV0dXJuIG4gaW4gdDsKfX0pfSx7MzI6MzJ9XSwyMDg6W2Z1bmN0aW9uKHQsbixyKXt2YXIgZT10KDMyKSxpPXQoNyksbz1PYmplY3QuaXNFeHRlbnNpYmxlO2UoZS5TLCJSZWZsZWN0Iix7aXNFeHRlbnNpYmxlOmZ1bmN0aW9uIGlzRXh0ZW5zaWJsZSh0KXtyZXR1cm4gaSh0KSwhb3x8byh0KX19KX0sezMyOjMyLDc6N31dLDIwOTpbZnVuY3Rpb24odCxuLHIpe3ZhciBlPXQoMzIpO2UoZS5TLCJSZWZsZWN0Iix7b3duS2V5czp0KDgwKX0pfSx7MzI6MzIsODA6ODB9XSwyMTA6W2Z1bmN0aW9uKHQsbixyKXt2YXIgZT10KDMyKSxpPXQoNyksbz1PYmplY3QucHJldmVudEV4dGVuc2lvbnM7ZShlLlMsIlJlZmxlY3QiLHtwcmV2ZW50RXh0ZW5zaW9uczpmdW5jdGlvbiBwcmV2ZW50RXh0ZW5zaW9ucyh0KXtpKHQpO3RyeXtyZXR1cm4gbyYmbyh0KSwhMH1jYXRjaCh0KXtyZXR1cm4hMX19fSl9LHszMjozMiw3Ojd9XSwyMTE6W2Z1bmN0aW9uKHQsbixyKXt2YXIgZT10KDMyKSxpPXQoOTApO2kmJmUoZS5TLCJSZWZsZWN0Iix7c2V0UHJvdG90eXBlT2Y6ZnVuY3Rpb24gc2V0UHJvdG90eXBlT2YodCxuKXtpLmNoZWNrKHQsbik7dHJ5e3JldHVybiBpLnNldCh0LG4pLCEwfWNhdGNoKHQpe3JldHVybiExfX19KX0sezMyOjMyLDkwOjkwfV0sMjEyOltmdW5jdGlvbih0LG4scil7ZnVuY3Rpb24gc2V0KHQsbixyKXt2YXIgYyxsLGg9YXJndW1lbnRzLmxlbmd0aDw0P3Q6YXJndW1lbnRzWzNdLHY9aS5mKGEodCksbik7aWYoIXYpe2lmKHMobD1vKHQpKSlyZXR1cm4gc2V0KGwsbixyLGgpO3Y9ZigwKX1yZXR1cm4gdSh2LCJ2YWx1ZSIpPyEodi53cml0YWJsZT09PSExfHwhcyhoKSkmJihjPWkuZihoLG4pfHxmKDApLGMudmFsdWU9cixlLmYoaCxuLGMpLCEwKTp2b2lkIDAhPT12LnNldCYmKHYuc2V0LmNhbGwoaCxyKSwhMCl9dmFyIGU9dCg2NyksaT10KDcwKSxvPXQoNzQpLHU9dCgzOSksYz10KDMyKSxmPXQoODUpLGE9dCg3KSxzPXQoNDkpO2MoYy5TLCJSZWZsZWN0Iix7c2V0OnNldH0pfSx7MzI6MzIsMzk6MzksNDk6NDksNjc6NjcsNzo3LDcwOjcwLDc0Ojc0LDg1Ojg1fV0sMjEzOltmdW5jdGlvbih0LG4scil7dmFyIGU9dCgzOCksaT10KDQzKSxvPXQoNjcpLmYsdT10KDcyKS5mLGM9dCg1MCksZj10KDM2KSxhPWUuUmVnRXhwLHM9YSxsPWEucHJvdG90eXBlLGg9L2EvZyx2PS9hL2cscD1uZXcgYShoKSE9PWg7aWYodCgyOCkmJighcHx8dCgzNCkoZnVuY3Rpb24oKXtyZXR1cm4gdlt0KDExNykoIm1hdGNoIildPSExLGEoaCkhPWh8fGEodik9PXZ8fCIvYS9pIiE9YShoLCJpIil9KSkpe2E9ZnVuY3Rpb24gUmVnRXhwKHQsbil7dmFyIHI9dGhpcyBpbnN0YW5jZW9mIGEsZT1jKHQpLG89dm9pZCAwPT09bjtyZXR1cm4hciYmZSYmdC5jb25zdHJ1Y3Rvcj09PWEmJm8/dDppKHA/bmV3IHMoZSYmIW8/dC5zb3VyY2U6dCxuKTpzKChlPXQgaW5zdGFuY2VvZiBhKT90LnNvdXJjZTp0LGUmJm8/Zi5jYWxsKHQpOm4pLHI/dGhpczpsLGEpfTtmb3IodmFyIGQ9KGZ1bmN0aW9uKHQpe3QgaW4gYXx8byhhLHQse2NvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gc1t0XX0sc2V0OmZ1bmN0aW9uKG4pe3NbdF09bn19KX0pLHk9dShzKSxnPTA7eS5sZW5ndGg+ZzspZCh5W2crK10pO2wuY29uc3RydWN0b3I9YSxhLnByb3RvdHlwZT1sLHQoODcpKGUsIlJlZ0V4cCIsYSl9dCg5MSkoIlJlZ0V4cCIpfSx7MTE3OjExNywyODoyOCwzNDozNCwzNjozNiwzODozOCw0Mzo0Myw1MDo1MCw2Nzo2Nyw3Mjo3Miw4Nzo4Nyw5MTo5MX1dLDIxNDpbZnVuY3Rpb24odCxuLHIpe3QoMjgpJiYiZyIhPS8uL2cuZmxhZ3MmJnQoNjcpLmYoUmVnRXhwLnByb3RvdHlwZSwiZmxhZ3MiLHtjb25maWd1cmFibGU6ITAsZ2V0OnQoMzYpfSl9LHsyODoyOCwzNjozNiw2Nzo2N31dLDIxNTpbZnVuY3Rpb24odCxuLHIpe3QoMzUpKCJtYXRjaCIsMSxmdW5jdGlvbih0LG4scil7cmV0dXJuW2Z1bmN0aW9uIG1hdGNoKHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgZT10KHRoaXMpLGk9dm9pZCAwPT1yP3ZvaWQgMDpyW25dO3JldHVybiB2b2lkIDAhPT1pP2kuY2FsbChyLGUpOm5ldyBSZWdFeHAocilbbl0oU3RyaW5nKGUpKX0scl19KX0sezM1OjM1fV0sMjE2OltmdW5jdGlvbih0LG4scil7dCgzNSkoInJlcGxhY2UiLDIsZnVuY3Rpb24odCxuLHIpe3JldHVybltmdW5jdGlvbiByZXBsYWNlKGUsaSl7InVzZSBzdHJpY3QiO3ZhciBvPXQodGhpcyksdT12b2lkIDA9PWU/dm9pZCAwOmVbbl07cmV0dXJuIHZvaWQgMCE9PXU/dS5jYWxsKGUsbyxpKTpyLmNhbGwoU3RyaW5nKG8pLGUsaSl9LHJdfSl9LHszNTozNX1dLDIxNzpbZnVuY3Rpb24odCxuLHIpe3QoMzUpKCJzZWFyY2giLDEsZnVuY3Rpb24odCxuLHIpe3JldHVybltmdW5jdGlvbiBzZWFyY2gocil7InVzZSBzdHJpY3QiO3ZhciBlPXQodGhpcyksaT12b2lkIDA9PXI/dm9pZCAwOnJbbl07cmV0dXJuIHZvaWQgMCE9PWk/aS5jYWxsKHIsZSk6bmV3IFJlZ0V4cChyKVtuXShTdHJpbmcoZSkpfSxyXX0pfSx7MzU6MzV9XSwyMTg6W2Z1bmN0aW9uKHQsbixyKXt0KDM1KSgic3BsaXQiLDIsZnVuY3Rpb24obixyLGUpeyJ1c2Ugc3RyaWN0Ijt2YXIgaT10KDUwKSxvPWUsdT1bXS5wdXNoLGM9InNwbGl0IixmPSJsZW5ndGgiLGE9Imxhc3RJbmRleCI7aWYoImMiPT0iYWJiYyJbY10oLyhiKSovKVsxXXx8NCE9InRlc3QiW2NdKC8oPzopLywtMSlbZl18fDIhPSJhYiJbY10oLyg/OmFiKSovKVtmXXx8NCE9Ii4iW2NdKC8oLj8pKC4/KS8pW2ZdfHwiLiJbY10oLygpKCkvKVtmXT4xfHwiIltjXSgvLj8vKVtmXSl7dmFyIHM9dm9pZCAwPT09LygpPz8vLmV4ZWMoIiIpWzFdO2U9ZnVuY3Rpb24odCxuKXt2YXIgcj1TdHJpbmcodGhpcyk7aWYodm9pZCAwPT09dCYmMD09PW4pcmV0dXJuW107aWYoIWkodCkpcmV0dXJuIG8uY2FsbChyLHQsbik7dmFyIGUsYyxsLGgsdixwPVtdLGQ9KHQuaWdub3JlQ2FzZT8iaSI6IiIpKyh0Lm11bHRpbGluZT8ibSI6IiIpKyh0LnVuaWNvZGU/InUiOiIiKSsodC5zdGlja3k/InkiOiIiKSx5PTAsZz12b2lkIDA9PT1uPzQyOTQ5NjcyOTU6bj4+PjAsYj1uZXcgUmVnRXhwKHQuc291cmNlLGQrImciKTtmb3Ioc3x8KGU9bmV3IFJlZ0V4cCgiXiIrYi5zb3VyY2UrIiQoPyFcXHMpIixkKSk7KGM9Yi5leGVjKHIpKSYmKGw9Yy5pbmRleCtjWzBdW2ZdLCEobD55JiYocC5wdXNoKHIuc2xpY2UoeSxjLmluZGV4KSksIXMmJmNbZl0+MSYmY1swXS5yZXBsYWNlKGUsZnVuY3Rpb24oKXtmb3Iodj0xO3Y8YXJndW1lbnRzW2ZdLTI7disrKXZvaWQgMD09PWFyZ3VtZW50c1t2XSYmKGNbdl09dm9pZCAwKX0pLGNbZl0+MSYmYy5pbmRleDxyW2ZdJiZ1LmFwcGx5KHAsYy5zbGljZSgxKSksaD1jWzBdW2ZdLHk9bCxwW2ZdPj1nKSkpOyliW2FdPT09Yy5pbmRleCYmYlthXSsrO3JldHVybiB5PT09cltmXT8haCYmYi50ZXN0KCIiKXx8cC5wdXNoKCIiKTpwLnB1c2goci5zbGljZSh5KSkscFtmXT5nP3Auc2xpY2UoMCxnKTpwfX1lbHNlIjAiW2NdKHZvaWQgMCwwKVtmXSYmKGU9ZnVuY3Rpb24odCxuKXtyZXR1cm4gdm9pZCAwPT09dCYmMD09PW4/W106by5jYWxsKHRoaXMsdCxuKX0pO3JldHVybltmdW5jdGlvbiBzcGxpdCh0LGkpe3ZhciBvPW4odGhpcyksdT12b2lkIDA9PXQ/dm9pZCAwOnRbcl07cmV0dXJuIHZvaWQgMCE9PXU/dS5jYWxsKHQsbyxpKTplLmNhbGwoU3RyaW5nKG8pLHQsaSl9LGVdfSl9LHszNTozNSw1MDo1MH1dLDIxOTpbZnVuY3Rpb24odCxuLHIpeyJ1c2Ugc3RyaWN0Ijt0KDIxNCk7dmFyIGU9dCg3KSxpPXQoMzYpLG89dCgyOCksdT0idG9TdHJpbmciLGM9Ly4vW3VdLGY9ZnVuY3Rpb24obil7dCg4NykoUmVnRXhwLnByb3RvdHlwZSx1LG4sITApfTt0KDM0KShmdW5jdGlvbigpe3JldHVybiIvYS9iIiE9Yy5jYWxsKHtzb3VyY2U6ImEiLGZsYWdzOiJiIn0pfSk/ZihmdW5jdGlvbiB0b1N0cmluZygpe3ZhciB0PWUodGhpcyk7cmV0dXJuIi8iLmNvbmNhdCh0LnNvdXJjZSwiLyIsImZsYWdzImluIHQ/dC5mbGFnczohbyYmdCBpbnN0YW5jZW9mIFJlZ0V4cD9pLmNhbGwodCk6dm9pZCAwKX0pOmMubmFtZSE9dSYmZihmdW5jdGlvbiB0b1N0cmluZygpe3JldHVybiBjLmNhbGwodGhpcyl9KX0sezIxNDoyMTQsMjg6MjgsMzQ6MzQsMzY6MzYsNzo3LDg3Ojg3fV0sMjIwOltmdW5jdGlvbih0LG4scil7InVzZSBzdHJpY3QiO3ZhciBlPXQoMTkpO24uZXhwb3J0cz10KDIyKSgiU2V0IixmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24gU2V0KCl7cmV0dXJuIHQodGhpcyxhcmd1bWVudHMubGVuZ3RoPjA/YXJndW1lbnRzWzBdOnZvaWQgMCl9fSx7YWRkOmZ1bmN0aW9uIGFkZCh0KXtyZXR1cm4gZS5kZWYodGhpcyx0PTA9PT10PzA6dCx0KX19LGUpfSx7MTk6MTksMjI6MjJ9XSwyMjE6W2Z1bmN0aW9uKHQsbixyKXsidXNlIHN0cmljdCI7dCg5OSkoImFuY2hvciIsZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uIGFuY2hvcihuKXtyZXR1cm4gdCh0aGlzLCJhIiwibmFtZSIsbil9fSl9LHs5OTo5OX1dLDIyMjpbZnVuY3Rpb24odCxuLHIpeyJ1c2Ugc3RyaWN0Ijt0KDk5KSgiYmlnIixmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24gYmlnKCl7cmV0dXJuIHQodGhpcywiYmlnIiwiIiwiIil9fSl9LHs5OTo5OX1dLDIyMzpbZnVuY3Rpb24odCxuLHIpeyJ1c2Ugc3RyaWN0Ijt0KDk5KSgiYmxpbmsiLGZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbiBibGluaygpe3JldHVybiB0KHRoaXMsImJsaW5rIiwiIiwiIil9fSl9LHs5OTo5OX1dLDIyNDpbZnVuY3Rpb24odCxuLHIpeyJ1c2Ugc3RyaWN0Ijt0KDk5KSgiYm9sZCIsZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uIGJvbGQoKXtyZXR1cm4gdCh0aGlzLCJiIiwiIiwiIil9fSl9LHs5OTo5OX1dLDIyNTpbZnVuY3Rpb24odCxuLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgZT10KDMyKSxpPXQoOTcpKCExKTtlKGUuUCwiU3RyaW5nIix7Y29kZVBvaW50QXQ6ZnVuY3Rpb24gY29kZVBvaW50QXQodCl7cmV0dXJuIGkodGhpcyx0KX19KX0sezMyOjMyLDk3Ojk3fV0sMjI2OltmdW5jdGlvbih0LG4scil7InVzZSBzdHJpY3QiO3ZhciBlPXQoMzIpLGk9dCgxMDgpLG89dCg5OCksdT0iZW5kc1dpdGgiLGM9IiJbdV07ZShlLlArZS5GKnQoMzMpKHUpLCJTdHJpbmciLHtlbmRzV2l0aDpmdW5jdGlvbiBlbmRzV2l0aCh0KXt2YXIgbj1vKHRoaXMsdCx1KSxyPWFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwLGU9aShuLmxlbmd0aCksZj12b2lkIDA9PT1yP2U6TWF0aC5taW4oaShyKSxlKSxhPVN0cmluZyh0KTtyZXR1cm4gYz9jLmNhbGwobixhLGYpOm4uc2xpY2UoZi1hLmxlbmd0aCxmKT09PWF9fSl9LHsxMDg6MTA4LDMyOjMyLDMzOjMzLDk4Ojk4fV0sMjI3OltmdW5jdGlvbih0LG4scil7InVzZSBzdHJpY3QiO3QoOTkpKCJmaXhlZCIsZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uIGZpeGVkKCl7cmV0dXJuIHQodGhpcywidHQiLCIiLCIiKX19KX0sezk5Ojk5fV0sMjI4OltmdW5jdGlvbih0LG4scil7InVzZSBzdHJpY3QiO3QoOTkpKCJmb250Y29sb3IiLGZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbiBmb250Y29sb3Iobil7cmV0dXJuIHQodGhpcywiZm9udCIsImNvbG9yIixuKX19KX0sezk5Ojk5fV0sMjI5OltmdW5jdGlvbih0LG4scil7InVzZSBzdHJpY3QiO3QoOTkpKCJmb250c2l6ZSIsZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uIGZvbnRzaXplKG4pe3JldHVybiB0KHRoaXMsImZvbnQiLCJzaXplIixuKX19KX0sezk5Ojk5fV0sMjMwOltmdW5jdGlvbih0LG4scil7dmFyIGU9dCgzMiksaT10KDEwNSksbz1TdHJpbmcuZnJvbUNoYXJDb2RlLHU9U3RyaW5nLmZyb21Db2RlUG9pbnQ7ZShlLlMrZS5GKighIXUmJjEhPXUubGVuZ3RoKSwiU3RyaW5nIix7ZnJvbUNvZGVQb2ludDpmdW5jdGlvbiBmcm9tQ29kZVBvaW50KHQpe2Zvcih2YXIgbixyPVtdLGU9YXJndW1lbnRzLmxlbmd0aCx1PTA7ZT51Oyl7aWYobj0rYXJndW1lbnRzW3UrK10saShuLDExMTQxMTEpIT09bil0aHJvdyBSYW5nZUVycm9yKG4rIiBpcyBub3QgYSB2YWxpZCBjb2RlIHBvaW50Iik7ci5wdXNoKG48NjU1MzY/byhuKTpvKCgobi09NjU1MzYpPj4xMCkrNTUyOTYsbiUxMDI0KzU2MzIwKSl9cmV0dXJuIHIuam9pbigiIil9fSl9LHsxMDU6MTA1LDMyOjMyfV0sMjMxOltmdW5jdGlvbih0LG4scil7InVzZSBzdHJpY3QiO3ZhciBlPXQoMzIpLGk9dCg5OCksbz0iaW5jbHVkZXMiO2UoZS5QK2UuRip0KDMzKShvKSwiU3RyaW5nIix7aW5jbHVkZXM6ZnVuY3Rpb24gaW5jbHVkZXModCl7cmV0dXJuISF+aSh0aGlzLHQsbykuaW5kZXhPZih0LGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKX19KX0sezMyOjMyLDMzOjMzLDk4Ojk4fV0sMjMyOltmdW5jdGlvbih0LG4scil7InVzZSBzdHJpY3QiO3QoOTkpKCJpdGFsaWNzIixmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24gaXRhbGljcygpe3JldHVybiB0KHRoaXMsImkiLCIiLCIiKX19KX0sezk5Ojk5fV0sMjMzOltmdW5jdGlvbih0LG4scil7InVzZSBzdHJpY3QiO3ZhciBlPXQoOTcpKCEwKTt0KDUzKShTdHJpbmcsIlN0cmluZyIsZnVuY3Rpb24odCl7dGhpcy5fdD1TdHJpbmcodCksdGhpcy5faT0wfSxmdW5jdGlvbigpe3ZhciB0LG49dGhpcy5fdCxyPXRoaXMuX2k7cmV0dXJuIHI+PW4ubGVuZ3RoP3t2YWx1ZTp2b2lkIDAsZG9uZTohMH06KHQ9ZShuLHIpLHRoaXMuX2krPXQubGVuZ3RoLHt2YWx1ZTp0LGRvbmU6ITF9KX0pfSx7NTM6NTMsOTc6OTd9XSwyMzQ6W2Z1bmN0aW9uKHQsbixyKXsidXNlIHN0cmljdCI7dCg5OSkoImxpbmsiLGZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbiBsaW5rKG4pe3JldHVybiB0KHRoaXMsImEiLCJocmVmIixuKX19KX0sezk5Ojk5fV0sMjM1OltmdW5jdGlvbih0LG4scil7dmFyIGU9dCgzMiksaT10KDEwNyksbz10KDEwOCk7ZShlLlMsIlN0cmluZyIse3JhdzpmdW5jdGlvbiByYXcodCl7Zm9yKHZhciBuPWkodC5yYXcpLHI9byhuLmxlbmd0aCksZT1hcmd1bWVudHMubGVuZ3RoLHU9W10sYz0wO3I+YzspdS5wdXNoKFN0cmluZyhuW2MrK10pKSxjPGUmJnUucHVzaChTdHJpbmcoYXJndW1lbnRzW2NdKSk7cmV0dXJuIHUuam9pbigiIil9fSl9LHsxMDc6MTA3LDEwODoxMDgsMzI6MzJ9XSwyMzY6W2Z1bmN0aW9uKHQsbixyKXt2YXIgZT10KDMyKTtlKGUuUCwiU3RyaW5nIix7cmVwZWF0OnQoMTAxKX0pfSx7MTAxOjEwMSwzMjozMn1dLDIzNzpbZnVuY3Rpb24odCxuLHIpeyJ1c2Ugc3RyaWN0Ijt0KDk5KSgic21hbGwiLGZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbiBzbWFsbCgpe3JldHVybiB0KHRoaXMsInNtYWxsIiwiIiwiIil9fSl9LHs5OTo5OX1dLDIzODpbZnVuY3Rpb24odCxuLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgZT10KDMyKSxpPXQoMTA4KSxvPXQoOTgpLHU9InN0YXJ0c1dpdGgiLGM9IiJbdV07ZShlLlArZS5GKnQoMzMpKHUpLCJTdHJpbmciLHtzdGFydHNXaXRoOmZ1bmN0aW9uIHN0YXJ0c1dpdGgodCl7dmFyIG49byh0aGlzLHQsdSkscj1pKE1hdGgubWluKGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwLG4ubGVuZ3RoKSksZT1TdHJpbmcodCk7cmV0dXJuIGM/Yy5jYWxsKG4sZSxyKTpuLnNsaWNlKHIscitlLmxlbmd0aCk9PT1lfX0pfSx7MTA4OjEwOCwzMjozMiwzMzozMyw5ODo5OH1dLDIzOTpbZnVuY3Rpb24odCxuLHIpeyJ1c2Ugc3RyaWN0Ijt0KDk5KSgic3RyaWtlIixmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24gc3RyaWtlKCl7cmV0dXJuIHQodGhpcywic3RyaWtlIiwiIiwiIil9fSl9LHs5OTo5OX1dLDI0MDpbZnVuY3Rpb24odCxuLHIpeyJ1c2Ugc3RyaWN0Ijt0KDk5KSgic3ViIixmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24gc3ViKCl7cmV0dXJuIHQodGhpcywic3ViIiwiIiwiIil9fSl9LHs5OTo5OX1dLDI0MTpbZnVuY3Rpb24odCxuLHIpeyJ1c2Ugc3RyaWN0Ijt0KDk5KSgic3VwIixmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24gc3VwKCl7cmV0dXJuIHQodGhpcywic3VwIiwiIiwiIil9fSl9LHs5OTo5OX1dLDI0MjpbZnVuY3Rpb24odCxuLHIpeyJ1c2Ugc3RyaWN0Ijt0KDEwMikoInRyaW0iLGZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbiB0cmltKCl7cmV0dXJuIHQodGhpcywzKX19KX0sezEwMjoxMDJ9XSwyNDM6W2Z1bmN0aW9uKHQsbixyKXsidXNlIHN0cmljdCI7dmFyIGU9dCgzOCksaT10KDM5KSxvPXQoMjgpLHU9dCgzMiksYz10KDg3KSxmPXQoNjIpLktFWSxhPXQoMzQpLHM9dCg5NCksbD10KDkyKSxoPXQoMTE0KSx2PXQoMTE3KSxwPXQoMTE2KSxkPXQoMTE1KSx5PXQoNTcpLGc9dCgzMSksYj10KDQ3KSx4PXQoNyksbT10KDEwNyksdz10KDExMCksUz10KDg1KSxfPXQoNjYpLEU9dCg3MSksTz10KDcwKSxGPXQoNjcpLFA9dCg3NiksTT1PLmYsQT1GLmYsST1FLmYsaj1lLlN5bWJvbCxOPWUuSlNPTixrPU4mJk4uc3RyaW5naWZ5LFI9InByb3RvdHlwZSIsVD12KCJfaGlkZGVuIiksTD12KCJ0b1ByaW1pdGl2ZSIpLEM9e30ucHJvcGVydHlJc0VudW1lcmFibGUsVT1zKCJzeW1ib2wtcmVnaXN0cnkiKSxHPXMoInN5bWJvbHMiKSxEPXMoIm9wLXN5bWJvbHMiKSxXPU9iamVjdFtSXSxCPSJmdW5jdGlvbiI9PXR5cGVvZiBqLFY9ZS5RT2JqZWN0LHo9IVZ8fCFWW1JdfHwhVltSXS5maW5kQ2hpbGQsSz1vJiZhKGZ1bmN0aW9uKCl7cmV0dXJuIDchPV8oQSh7fSwiYSIse2dldDpmdW5jdGlvbigpe3JldHVybiBBKHRoaXMsImEiLHt2YWx1ZTo3fSkuYX19KSkuYX0pP2Z1bmN0aW9uKHQsbixyKXt2YXIgZT1NKFcsbik7ZSYmZGVsZXRlIFdbbl0sQSh0LG4sciksZSYmdCE9PVcmJkEoVyxuLGUpfTpBLEo9ZnVuY3Rpb24odCl7dmFyIG49R1t0XT1fKGpbUl0pO3JldHVybiBuLl9rPXQsbn0sWT1CJiYic3ltYm9sIj09dHlwZW9mIGouaXRlcmF0b3I/ZnVuY3Rpb24odCl7cmV0dXJuInN5bWJvbCI9PXR5cGVvZiB0fTpmdW5jdGlvbih0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIGp9LHE9ZnVuY3Rpb24gZGVmaW5lUHJvcGVydHkodCxuLHIpe3JldHVybiB0PT09VyYmcShELG4scikseCh0KSxuPXcobiwhMCkseChyKSxpKEcsbik/KHIuZW51bWVyYWJsZT8oaSh0LFQpJiZ0W1RdW25dJiYodFtUXVtuXT0hMSkscj1fKHIse2VudW1lcmFibGU6UygwLCExKX0pKTooaSh0LFQpfHxBKHQsVCxTKDEse30pKSx0W1RdW25dPSEwKSxLKHQsbixyKSk6QSh0LG4scil9LFg9ZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyh0LG4pe3godCk7Zm9yKHZhciByLGU9ZyhuPW0obikpLGk9MCxvPWUubGVuZ3RoO28+aTspcSh0LHI9ZVtpKytdLG5bcl0pO3JldHVybiB0fSwkPWZ1bmN0aW9uIGNyZWF0ZSh0LG4pe3JldHVybiB2b2lkIDA9PT1uP18odCk6WChfKHQpLG4pfSxIPWZ1bmN0aW9uIHByb3BlcnR5SXNFbnVtZXJhYmxlKHQpe3ZhciBuPUMuY2FsbCh0aGlzLHQ9dyh0LCEwKSk7cmV0dXJuISh0aGlzPT09VyYmaShHLHQpJiYhaShELHQpKSYmKCEobnx8IWkodGhpcyx0KXx8IWkoRyx0KXx8aSh0aGlzLFQpJiZ0aGlzW1RdW3RdKXx8bil9LFo9ZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbil7aWYodD1tKHQpLG49dyhuLCEwKSx0IT09V3x8IWkoRyxuKXx8aShELG4pKXt2YXIgcj1NKHQsbik7cmV0dXJuIXJ8fCFpKEcsbil8fGkodCxUKSYmdFtUXVtuXXx8KHIuZW51bWVyYWJsZT0hMCkscn19LFE9ZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlOYW1lcyh0KXtmb3IodmFyIG4scj1JKG0odCkpLGU9W10sbz0wO3IubGVuZ3RoPm87KWkoRyxuPXJbbysrXSl8fG49PVR8fG49PWZ8fGUucHVzaChuKTtyZXR1cm4gZX0sdHQ9ZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlTeW1ib2xzKHQpe2Zvcih2YXIgbixyPXQ9PT1XLGU9SShyP0Q6bSh0KSksbz1bXSx1PTA7ZS5sZW5ndGg+dTspIWkoRyxuPWVbdSsrXSl8fHImJiFpKFcsbil8fG8ucHVzaChHW25dKTtyZXR1cm4gb307Qnx8KGo9ZnVuY3Rpb24gU3ltYm9sKCl7aWYodGhpcyBpbnN0YW5jZW9mIGopdGhyb3cgVHlwZUVycm9yKCJTeW1ib2wgaXMgbm90IGEgY29uc3RydWN0b3IhIik7dmFyIHQ9aChhcmd1bWVudHMubGVuZ3RoPjA/YXJndW1lbnRzWzBdOnZvaWQgMCksbj1mdW5jdGlvbihyKXt0aGlzPT09VyYmbi5jYWxsKEQsciksaSh0aGlzLFQpJiZpKHRoaXNbVF0sdCkmJih0aGlzW1RdW3RdPSExKSxLKHRoaXMsdCxTKDEscikpfTtyZXR1cm4gbyYmeiYmSyhXLHQse2NvbmZpZ3VyYWJsZTohMCxzZXQ6bn0pLEoodCl9LGMoaltSXSwidG9TdHJpbmciLGZ1bmN0aW9uIHRvU3RyaW5nKCl7cmV0dXJuIHRoaXMuX2t9KSxPLmY9WixGLmY9cSx0KDcyKS5mPUUuZj1RLHQoNzcpLmY9SCx0KDczKS5mPXR0LG8mJiF0KDU4KSYmYyhXLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsSCwhMCkscC5mPWZ1bmN0aW9uKHQpe3JldHVybiBKKHYodCkpfSksdSh1LkcrdS5XK3UuRiohQix7U3ltYm9sOmp9KTtmb3IodmFyIG50PSJoYXNJbnN0YW5jZSxpc0NvbmNhdFNwcmVhZGFibGUsaXRlcmF0b3IsbWF0Y2gscmVwbGFjZSxzZWFyY2gsc3BlY2llcyxzcGxpdCx0b1ByaW1pdGl2ZSx0b1N0cmluZ1RhZyx1bnNjb3BhYmxlcyIuc3BsaXQoIiwiKSxydD0wO250Lmxlbmd0aD5ydDspdihudFtydCsrXSk7Zm9yKHZhciBudD1QKHYuc3RvcmUpLHJ0PTA7bnQubGVuZ3RoPnJ0OylkKG50W3J0KytdKTt1KHUuUyt1LkYqIUIsIlN5bWJvbCIse2ZvcjpmdW5jdGlvbih0KXtyZXR1cm4gaShVLHQrPSIiKT9VW3RdOlVbdF09aih0KX0sa2V5Rm9yOmZ1bmN0aW9uIGtleUZvcih0KXtpZihZKHQpKXJldHVybiB5KFUsdCk7dGhyb3cgVHlwZUVycm9yKHQrIiBpcyBub3QgYSBzeW1ib2whIil9LHVzZVNldHRlcjpmdW5jdGlvbigpe3o9ITB9LHVzZVNpbXBsZTpmdW5jdGlvbigpe3o9ITF9fSksdSh1LlMrdS5GKiFCLCJPYmplY3QiLHtjcmVhdGU6JCxkZWZpbmVQcm9wZXJ0eTpxLGRlZmluZVByb3BlcnRpZXM6WCxnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I6WixnZXRPd25Qcm9wZXJ0eU5hbWVzOlEsZ2V0T3duUHJvcGVydHlTeW1ib2xzOnR0fSksTiYmdSh1LlMrdS5GKighQnx8YShmdW5jdGlvbigpe3ZhciB0PWooKTtyZXR1cm4iW251bGxdIiE9ayhbdF0pfHwie30iIT1rKHthOnR9KXx8Int9IiE9ayhPYmplY3QodCkpfSkpLCJKU09OIix7c3RyaW5naWZ5OmZ1bmN0aW9uIHN0cmluZ2lmeSh0KXtpZih2b2lkIDAhPT10JiYhWSh0KSl7Zm9yKHZhciBuLHIsZT1bdF0saT0xO2FyZ3VtZW50cy5sZW5ndGg+aTspZS5wdXNoKGFyZ3VtZW50c1tpKytdKTtyZXR1cm4gbj1lWzFdLCJmdW5jdGlvbiI9PXR5cGVvZiBuJiYocj1uKSwhciYmYihuKXx8KG49ZnVuY3Rpb24odCxuKXtpZihyJiYobj1yLmNhbGwodGhpcyx0LG4pKSwhWShuKSlyZXR1cm4gbn0pLGVbMV09bixrLmFwcGx5KE4sZSl9fX0pLGpbUl1bTF18fHQoNDApKGpbUl0sTCxqW1JdLnZhbHVlT2YpLGwoaiwiU3ltYm9sIiksbChNYXRoLCJNYXRoIiwhMCksbChlLkpTT04sIkpTT04iLCEwKX0sezEwNzoxMDcsMTEwOjExMCwxMTQ6MTE0LDExNToxMTUsMTE2OjExNiwxMTc6MTE3LDI4OjI4LDMxOjMxLDMyOjMyLDM0OjM0LDM4OjM4LDM5OjM5LDQwOjQwLDQ3OjQ3LDU3OjU3LDU4OjU4LDYyOjYyLDY2OjY2LDY3OjY3LDc6Nyw3MDo3MCw3MTo3MSw3Mjo3Miw3Mzo3Myw3Njo3Niw3Nzo3Nyw4NTo4NSw4Nzo4Nyw5Mjo5Miw5NDo5NH1dLDI0NDpbZnVuY3Rpb24odCxuLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgZT10KDMyKSxpPXQoMTEzKSxvPXQoMTEyKSx1PXQoNyksYz10KDEwNSksZj10KDEwOCksYT10KDQ5KSxzPXQoMzgpLkFycmF5QnVmZmVyLGw9dCg5NSksaD1vLkFycmF5QnVmZmVyLHY9by5EYXRhVmlldyxwPWkuQUJWJiZzLmlzVmlldyxkPWgucHJvdG90eXBlLnNsaWNlLHk9aS5WSUVXLGc9IkFycmF5QnVmZmVyIjtlKGUuRytlLlcrZS5GKihzIT09aCkse0FycmF5QnVmZmVyOmh9KSxlKGUuUytlLkYqIWkuQ09OU1RSLGcse2lzVmlldzpmdW5jdGlvbiBpc1ZpZXcodCl7cmV0dXJuIHAmJnAodCl8fGEodCkmJnkgaW4gdH19KSxlKGUuUCtlLlUrZS5GKnQoMzQpKGZ1bmN0aW9uKCl7cmV0dXJuIW5ldyBoKDIpLnNsaWNlKDEsdm9pZCAwKS5ieXRlTGVuZ3RofSksZyx7c2xpY2U6ZnVuY3Rpb24gc2xpY2UodCxuKXtpZih2b2lkIDAhPT1kJiZ2b2lkIDA9PT1uKXJldHVybiBkLmNhbGwodSh0aGlzKSx0KTtmb3IodmFyIHI9dSh0aGlzKS5ieXRlTGVuZ3RoLGU9Yyh0LHIpLGk9Yyh2b2lkIDA9PT1uP3I6bixyKSxvPW5ldyhsKHRoaXMsaCkpKGYoaS1lKSksYT1uZXcgdih0aGlzKSxzPW5ldyB2KG8pLHA9MDtlPGk7KXMuc2V0VWludDgocCsrLGEuZ2V0VWludDgoZSsrKSk7cmV0dXJuIG99fSksdCg5MSkoZyl9LHsxMDU6MTA1LDEwODoxMDgsMTEyOjExMiwxMTM6MTEzLDMyOjMyLDM0OjM0LDM4OjM4LDQ5OjQ5LDc6Nyw5MTo5MSw5NTo5NX1dLDI0NTpbZnVuY3Rpb24odCxuLHIpe3ZhciBlPXQoMzIpO2UoZS5HK2UuVytlLkYqIXQoMTEzKS5BQlYse0RhdGFWaWV3OnQoMTEyKS5EYXRhVmlld30pfSx7MTEyOjExMiwxMTM6MTEzLDMyOjMyfV0sMjQ2OltmdW5jdGlvbih0LG4scil7dCgxMTEpKCJGbG9hdDMyIiw0LGZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbiBGbG9hdDMyQXJyYXkobixyLGUpe3JldHVybiB0KHRoaXMsbixyLGUpfX0pfSx7MTExOjExMX1dLDI0NzpbZnVuY3Rpb24odCxuLHIpe3QoMTExKSgiRmxvYXQ2NCIsOCxmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24gRmxvYXQ2NEFycmF5KG4scixlKXtyZXR1cm4gdCh0aGlzLG4scixlKX19KX0sezExMToxMTF9XSwyNDg6W2Z1bmN0aW9uKHQsbixyKXt0KDExMSkoIkludDE2IiwyLGZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbiBJbnQxNkFycmF5KG4scixlKXtyZXR1cm4gdCh0aGlzLG4scixlKX19KX0sezExMToxMTF9XSwyNDk6W2Z1bmN0aW9uKHQsbixyKXt0KDExMSkoIkludDMyIiw0LGZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbiBJbnQzMkFycmF5KG4scixlKXtyZXR1cm4gdCh0aGlzLG4scixlKX19KX0sezExMToxMTF9XSwyNTA6W2Z1bmN0aW9uKHQsbixyKXt0KDExMSkoIkludDgiLDEsZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uIEludDhBcnJheShuLHIsZSl7cmV0dXJuIHQodGhpcyxuLHIsZSl9fSl9LHsxMTE6MTExfV0sMjUxOltmdW5jdGlvbih0LG4scil7dCgxMTEpKCJVaW50MTYiLDIsZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uIFVpbnQxNkFycmF5KG4scixlKXtyZXR1cm4gdCh0aGlzLG4scixlKX19KX0sezExMToxMTF9XSwyNTI6W2Z1bmN0aW9uKHQsbixyKXt0KDExMSkoIlVpbnQzMiIsNCxmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24gVWludDMyQXJyYXkobixyLGUpe3JldHVybiB0KHRoaXMsbixyLGUpfX0pfSx7MTExOjExMX1dLDI1MzpbZnVuY3Rpb24odCxuLHIpe3QoMTExKSgiVWludDgiLDEsZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uIFVpbnQ4QXJyYXkobixyLGUpe3JldHVybiB0KHRoaXMsbixyLGUpfX0pfSx7MTExOjExMX1dLDI1NDpbZnVuY3Rpb24odCxuLHIpe3QoMTExKSgiVWludDgiLDEsZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uIFVpbnQ4Q2xhbXBlZEFycmF5KG4scixlKXtyZXR1cm4gdCh0aGlzLG4scixlKX19LCEwKX0sezExMToxMTF9XSwyNTU6W2Z1bmN0aW9uKHQsbixyKXsidXNlIHN0cmljdCI7dmFyIGUsaT10KDEyKSgwKSxvPXQoODcpLHU9dCg2MiksYz10KDY1KSxmPXQoMjEpLGE9dCg0OSkscz11LmdldFdlYWssbD1PYmplY3QuaXNFeHRlbnNpYmxlLGg9Zi51ZnN0b3JlLHY9e30scD1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24gV2Vha01hcCgpe3JldHVybiB0KHRoaXMsYXJndW1lbnRzLmxlbmd0aD4wP2FyZ3VtZW50c1swXTp2b2lkIDApfX0sZD17Z2V0OmZ1bmN0aW9uIGdldCh0KXtpZihhKHQpKXt2YXIgbj1zKHQpO3JldHVybiBuPT09ITA/aCh0aGlzKS5nZXQodCk6bj9uW3RoaXMuX2ldOnZvaWQgMH19LHNldDpmdW5jdGlvbiBzZXQodCxuKXtyZXR1cm4gZi5kZWYodGhpcyx0LG4pfX0seT1uLmV4cG9ydHM9dCgyMikoIldlYWtNYXAiLHAsZCxmLCEwLCEwKTs3IT0obmV3IHkpLnNldCgoT2JqZWN0LmZyZWV6ZXx8T2JqZWN0KSh2KSw3KS5nZXQodikmJihlPWYuZ2V0Q29uc3RydWN0b3IocCksYyhlLnByb3RvdHlwZSxkKSx1Lk5FRUQ9ITAsaShbImRlbGV0ZSIsImhhcyIsImdldCIsInNldCJdLGZ1bmN0aW9uKHQpe3ZhciBuPXkucHJvdG90eXBlLHI9blt0XTtvKG4sdCxmdW5jdGlvbihuLGkpe2lmKGEobikmJiFsKG4pKXt0aGlzLl9mfHwodGhpcy5fZj1uZXcgZSk7dmFyIG89dGhpcy5fZlt0XShuLGkpO3JldHVybiJzZXQiPT10P3RoaXM6b31yZXR1cm4gci5jYWxsKHRoaXMsbixpKX0pfSkpfSx7MTI6MTIsMjE6MjEsMjI6MjIsNDk6NDksNjI6NjIsNjU6NjUsODc6ODd9XSwyNTY6W2Z1bmN0aW9uKHQsbixyKXsidXNlIHN0cmljdCI7dmFyIGU9dCgyMSk7dCgyMikoIldlYWtTZXQiLGZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbiBXZWFrU2V0KCl7cmV0dXJuIHQodGhpcyxhcmd1bWVudHMubGVuZ3RoPjA/YXJndW1lbnRzWzBdOnZvaWQgMCl9fSx7YWRkOmZ1bmN0aW9uIGFkZCh0KXtyZXR1cm4gZS5kZWYodGhpcyx0LCEwKX19LGUsITEsITApfSx7MjE6MjEsMjI6MjJ9XSwyNTc6W2Z1bmN0aW9uKHQsbixyKXsidXNlIHN0cmljdCI7dmFyIGU9dCgzMiksaT10KDExKSghMCk7ZShlLlAsIkFycmF5Iix7aW5jbHVkZXM6ZnVuY3Rpb24gaW5jbHVkZXModCl7cmV0dXJuIGkodGhpcyx0LGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKX19KSx0KDUpKCJpbmNsdWRlcyIpfSx7MTE6MTEsMzI6MzIsNTo1fV0sMjU4OltmdW5jdGlvbih0LG4scil7dmFyIGU9dCgzMiksaT10KDY0KSgpLG89dCgzOCkucHJvY2Vzcyx1PSJwcm9jZXNzIj09dCgxOCkobyk7ZShlLkcse2FzYXA6ZnVuY3Rpb24gYXNhcCh0KXt2YXIgbj11JiZvLmRvbWFpbjtpKG4/bi5iaW5kKHQpOnQpfX0pfSx7MTg6MTgsMzI6MzIsMzg6MzgsNjQ6NjR9XSwyNTk6W2Z1bmN0aW9uKHQsbixyKXt2YXIgZT10KDMyKSxpPXQoMTgpO2UoZS5TLCJFcnJvciIse2lzRXJyb3I6ZnVuY3Rpb24gaXNFcnJvcih0KXtyZXR1cm4iRXJyb3IiPT09aSh0KX19KX0sezE4OjE4LDMyOjMyfV0sMjYwOltmdW5jdGlvbih0LG4scil7dmFyIGU9dCgzMik7ZShlLlArZS5SLCJNYXAiLHt0b0pTT046dCgyMCkoIk1hcCIpfSl9LHsyMDoyMCwzMjozMn1dLDI2MTpbZnVuY3Rpb24odCxuLHIpe3ZhciBlPXQoMzIpO2UoZS5TLCJNYXRoIix7aWFkZGg6ZnVuY3Rpb24gaWFkZGgodCxuLHIsZSl7dmFyIGk9dD4+PjAsbz1uPj4+MCx1PXI+Pj4wO3JldHVybiBvKyhlPj4+MCkrKChpJnV8KGl8dSkmfihpK3U+Pj4wKSk+Pj4zMSl8MH19KX0sezMyOjMyfV0sMjYyOltmdW5jdGlvbih0LG4scil7dmFyIGU9dCgzMik7ZShlLlMsIk1hdGgiLHtpbXVsaDpmdW5jdGlvbiBpbXVsaCh0LG4pe3ZhciByPTY1NTM1LGU9K3QsaT0rbixvPWUmcix1PWkmcixjPWU+PjE2LGY9aT4+MTYsYT0oYyp1Pj4+MCkrKG8qdT4+PjE2KTtyZXR1cm4gYypmKyhhPj4xNikrKChvKmY+Pj4wKSsoYSZyKT4+MTYpfX0pfSx7MzI6MzJ9XSwyNjM6W2Z1bmN0aW9uKHQsbixyKXt2YXIgZT10KDMyKTtlKGUuUywiTWF0aCIse2lzdWJoOmZ1bmN0aW9uIGlzdWJoKHQsbixyLGUpe3ZhciBpPXQ+Pj4wLG89bj4+PjAsdT1yPj4+MDtyZXR1cm4gby0oZT4+PjApLSgofmkmdXx+KGledSkmaS11Pj4+MCk+Pj4zMSl8MH19KX0sezMyOjMyfV0sMjY0OltmdW5jdGlvbih0LG4scil7dmFyIGU9dCgzMik7ZShlLlMsIk1hdGgiLHt1bXVsaDpmdW5jdGlvbiB1bXVsaCh0LG4pe3ZhciByPTY1NTM1LGU9K3QsaT0rbixvPWUmcix1PWkmcixjPWU+Pj4xNixmPWk+Pj4xNixhPShjKnU+Pj4wKSsobyp1Pj4+MTYpO3JldHVybiBjKmYrKGE+Pj4xNikrKChvKmY+Pj4wKSsoYSZyKT4+PjE2KX19KX0sezMyOjMyfV0sMjY1OltmdW5jdGlvbih0LG4scil7InVzZSBzdHJpY3QiO3ZhciBlPXQoMzIpLGk9dCgxMDkpLG89dCgzKSx1PXQoNjcpO3QoMjgpJiZlKGUuUCt0KDY5KSwiT2JqZWN0Iix7X19kZWZpbmVHZXR0ZXJfXzpmdW5jdGlvbiBfX2RlZmluZUdldHRlcl9fKHQsbil7dS5mKGkodGhpcyksdCx7Z2V0Om8obiksZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KX19KX0sezEwOToxMDksMjg6MjgsMzozLDMyOjMyLDY3OjY3LDY5OjY5fV0sMjY2OltmdW5jdGlvbih0LG4scil7InVzZSBzdHJpY3QiO3ZhciBlPXQoMzIpLGk9dCgxMDkpLG89dCgzKSx1PXQoNjcpO3QoMjgpJiZlKGUuUCt0KDY5KSwiT2JqZWN0Iix7X19kZWZpbmVTZXR0ZXJfXzpmdW5jdGlvbiBfX2RlZmluZVNldHRlcl9fKHQsbil7dS5mKGkodGhpcyksdCx7c2V0Om8obiksZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KX19KX0sezEwOToxMDksMjg6MjgsMzozLDMyOjMyLDY3OjY3LDY5OjY5fV0sMjY3OltmdW5jdGlvbih0LG4scil7dmFyIGU9dCgzMiksaT10KDc5KSghMCk7ZShlLlMsIk9iamVjdCIse2VudHJpZXM6ZnVuY3Rpb24gZW50cmllcyh0KXtyZXR1cm4gaSh0KX19KX0sezMyOjMyLDc5Ojc5fV0sMjY4OltmdW5jdGlvbih0LG4scil7dmFyIGU9dCgzMiksaT10KDgwKSxvPXQoMTA3KSx1PXQoNzApLGM9dCgyNCk7ZShlLlMsIk9iamVjdCIse2dldE93blByb3BlcnR5RGVzY3JpcHRvcnM6ZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyh0KXtmb3IodmFyIG4scj1vKHQpLGU9dS5mLGY9aShyKSxhPXt9LHM9MDtmLmxlbmd0aD5zOyljKGEsbj1mW3MrK10sZShyLG4pKTtyZXR1cm4gYX19KX0sezEwNzoxMDcsMjQ6MjQsMzI6MzIsNzA6NzAsODA6ODB9XSwyNjk6W2Z1bmN0aW9uKHQsbixyKXsidXNlIHN0cmljdCI7dmFyIGU9dCgzMiksaT10KDEwOSksbz10KDExMCksdT10KDc0KSxjPXQoNzApLmY7dCgyOCkmJmUoZS5QK3QoNjkpLCJPYmplY3QiLHtfX2xvb2t1cEdldHRlcl9fOmZ1bmN0aW9uIF9fbG9va3VwR2V0dGVyX18odCl7dmFyIG4scj1pKHRoaXMpLGU9byh0LCEwKTtkbyBpZihuPWMocixlKSlyZXR1cm4gbi5nZXQ7d2hpbGUocj11KHIpKX19KX0sezEwOToxMDksMTEwOjExMCwyODoyOCwzMjozMiw2OTo2OSw3MDo3MCw3NDo3NH1dLDI3MDpbZnVuY3Rpb24odCxuLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgZT10KDMyKSxpPXQoMTA5KSxvPXQoMTEwKSx1PXQoNzQpLGM9dCg3MCkuZjt0KDI4KSYmZShlLlArdCg2OSksIk9iamVjdCIse19fbG9va3VwU2V0dGVyX186ZnVuY3Rpb24gX19sb29rdXBTZXR0ZXJfXyh0KXt2YXIgbixyPWkodGhpcyksZT1vKHQsITApO2RvIGlmKG49YyhyLGUpKXJldHVybiBuLnNldDt3aGlsZShyPXUocikpfX0pfSx7MTA5OjEwOSwxMTA6MTEwLDI4OjI4LDMyOjMyLDY5OjY5LDcwOjcwLDc0Ojc0fV0sMjcxOltmdW5jdGlvbih0LG4scil7dmFyIGU9dCgzMiksaT10KDc5KSghMSk7ZShlLlMsIk9iamVjdCIse3ZhbHVlczpmdW5jdGlvbiB2YWx1ZXModCl7cmV0dXJuIGkodCl9fSl9LHszMjozMiw3OTo3OX1dLDI3MjpbZnVuY3Rpb24odCxuLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgZT10KDMyKSxpPXQoMzgpLG89dCgyMyksdT10KDY0KSgpLGM9dCgxMTcpKCJvYnNlcnZhYmxlIiksZj10KDMpLGE9dCg3KSxzPXQoNiksbD10KDg2KSxoPXQoNDApLHY9dCgzNykscD12LlJFVFVSTixkPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3ZvaWQgMDpmKHQpfSx5PWZ1bmN0aW9uKHQpe3ZhciBuPXQuX2M7biYmKHQuX2M9dm9pZCAwLG4oKSl9LGc9ZnVuY3Rpb24odCl7cmV0dXJuIHZvaWQgMD09PXQuX299LGI9ZnVuY3Rpb24odCl7Zyh0KXx8KHQuX289dm9pZCAwLHkodCkpfSx4PWZ1bmN0aW9uKHQsbil7YSh0KSx0aGlzLl9jPXZvaWQgMCx0aGlzLl9vPXQsdD1uZXcgbSh0aGlzKTt0cnl7dmFyIHI9bih0KSxlPXI7bnVsbCE9ciYmKCJmdW5jdGlvbiI9PXR5cGVvZiByLnVuc3Vic2NyaWJlP3I9ZnVuY3Rpb24oKXtlLnVuc3Vic2NyaWJlKCl9OmYociksdGhpcy5fYz1yKX1jYXRjaChuKXtyZXR1cm4gdm9pZCB0LmVycm9yKG4pfWcodGhpcykmJnkodGhpcyl9O3gucHJvdG90eXBlPWwoe30se3Vuc3Vic2NyaWJlOmZ1bmN0aW9uIHVuc3Vic2NyaWJlKCl7Yih0aGlzKX19KTt2YXIgbT1mdW5jdGlvbih0KXt0aGlzLl9zPXR9O20ucHJvdG90eXBlPWwoe30se25leHQ6ZnVuY3Rpb24gbmV4dCh0KXt2YXIgbj10aGlzLl9zO2lmKCFnKG4pKXt2YXIgcj1uLl9vO3RyeXt2YXIgZT1kKHIubmV4dCk7aWYoZSlyZXR1cm4gZS5jYWxsKHIsdCl9Y2F0Y2godCl7dHJ5e2Iobil9ZmluYWxseXt0aHJvdyB0fX19fSxlcnJvcjpmdW5jdGlvbiBlcnJvcih0KXt2YXIgbj10aGlzLl9zO2lmKGcobikpdGhyb3cgdDt2YXIgcj1uLl9vO24uX289dm9pZCAwO3RyeXt2YXIgZT1kKHIuZXJyb3IpO2lmKCFlKXRocm93IHQ7dD1lLmNhbGwocix0KX1jYXRjaCh0KXt0cnl7eShuKX1maW5hbGx5e3Rocm93IHR9fXJldHVybiB5KG4pLHR9LGNvbXBsZXRlOmZ1bmN0aW9uIGNvbXBsZXRlKHQpe3ZhciBuPXRoaXMuX3M7aWYoIWcobikpe3ZhciByPW4uX287bi5fbz12b2lkIDA7dHJ5e3ZhciBlPWQoci5jb21wbGV0ZSk7dD1lP2UuY2FsbChyLHQpOnZvaWQgMH1jYXRjaCh0KXt0cnl7eShuKX1maW5hbGx5e3Rocm93IHR9fXJldHVybiB5KG4pLHR9fX0pO3ZhciB3PWZ1bmN0aW9uIE9ic2VydmFibGUodCl7cyh0aGlzLHcsIk9ic2VydmFibGUiLCJfZiIpLl9mPWYodCl9O2wody5wcm90b3R5cGUse3N1YnNjcmliZTpmdW5jdGlvbiBzdWJzY3JpYmUodCl7cmV0dXJuIG5ldyB4KHQsdGhpcy5fZil9LGZvckVhY2g6ZnVuY3Rpb24gZm9yRWFjaCh0KXt2YXIgbj10aGlzO3JldHVybiBuZXcoby5Qcm9taXNlfHxpLlByb21pc2UpKGZ1bmN0aW9uKHIsZSl7Zih0KTt2YXIgaT1uLnN1YnNjcmliZSh7bmV4dDpmdW5jdGlvbihuKXt0cnl7cmV0dXJuIHQobil9Y2F0Y2godCl7ZSh0KSxpLnVuc3Vic2NyaWJlKCl9fSxlcnJvcjplLGNvbXBsZXRlOnJ9KX0pfX0pLGwodyx7ZnJvbTpmdW5jdGlvbiBmcm9tKHQpe3ZhciBuPSJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzP3RoaXM6dyxyPWQoYSh0KVtjXSk7aWYocil7dmFyIGU9YShyLmNhbGwodCkpO3JldHVybiBlLmNvbnN0cnVjdG9yPT09bj9lOm5ldyBuKGZ1bmN0aW9uKHQpe3JldHVybiBlLnN1YnNjcmliZSh0KX0pfXJldHVybiBuZXcgbihmdW5jdGlvbihuKXt2YXIgcj0hMTtyZXR1cm4gdShmdW5jdGlvbigpe2lmKCFyKXt0cnl7aWYodih0LCExLGZ1bmN0aW9uKHQpe2lmKG4ubmV4dCh0KSxyKXJldHVybiBwfSk9PT1wKXJldHVybn1jYXRjaCh0KXtpZihyKXRocm93IHQ7cmV0dXJuIHZvaWQgbi5lcnJvcih0KX1uLmNvbXBsZXRlKCl9fSksZnVuY3Rpb24oKXtyPSEwfX0pfSxvZjpmdW5jdGlvbiBvZigpe2Zvcih2YXIgdD0wLG49YXJndW1lbnRzLmxlbmd0aCxyPUFycmF5KG4pO3Q8bjspclt0XT1hcmd1bWVudHNbdCsrXTtyZXR1cm4gbmV3KCJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzP3RoaXM6dykoZnVuY3Rpb24odCl7dmFyIG49ITE7cmV0dXJuIHUoZnVuY3Rpb24oKXtpZighbil7Zm9yKHZhciBlPTA7ZTxyLmxlbmd0aDsrK2UpaWYodC5uZXh0KHJbZV0pLG4pcmV0dXJuO3QuY29tcGxldGUoKX19KSxmdW5jdGlvbigpe249ITB9fSl9fSksaCh3LnByb3RvdHlwZSxjLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxlKGUuRyx7T2JzZXJ2YWJsZTp3fSksdCg5MSkoIk9ic2VydmFibGUiKX0sezExNzoxMTcsMjM6MjMsMzozLDMyOjMyLDM3OjM3LDM4OjM4LDQwOjQwLDY6Niw2NDo2NCw3OjcsODY6ODYsOTE6OTF9XSwyNzM6W2Z1bmN0aW9uKHQsbixyKXt2YXIgZT10KDYzKSxpPXQoNyksbz1lLmtleSx1PWUuc2V0O2UuZXhwKHtkZWZpbmVNZXRhZGF0YTpmdW5jdGlvbiBkZWZpbmVNZXRhZGF0YSh0LG4scixlKXt1KHQsbixpKHIpLG8oZSkpfX0pfSx7NjM6NjMsNzo3fV0sMjc0OltmdW5jdGlvbih0LG4scil7dmFyIGU9dCg2MyksaT10KDcpLG89ZS5rZXksdT1lLm1hcCxjPWUuc3RvcmU7ZS5leHAoe2RlbGV0ZU1ldGFkYXRhOmZ1bmN0aW9uIGRlbGV0ZU1ldGFkYXRhKHQsbil7dmFyIHI9YXJndW1lbnRzLmxlbmd0aDwzP3ZvaWQgMDpvKGFyZ3VtZW50c1syXSksZT11KGkobiksciwhMSk7aWYodm9pZCAwPT09ZXx8IWUuZGVsZXRlKHQpKXJldHVybiExO2lmKGUuc2l6ZSlyZXR1cm4hMDt2YXIgZj1jLmdldChuKTtyZXR1cm4gZi5kZWxldGUociksISFmLnNpemV8fGMuZGVsZXRlKG4pfX0pfSx7NjM6NjMsNzo3fV0sMjc1OltmdW5jdGlvbih0LG4scil7dmFyIGU9dCgyMjApLGk9dCgxMCksbz10KDYzKSx1PXQoNyksYz10KDc0KSxmPW8ua2V5cyxhPW8ua2V5LHM9ZnVuY3Rpb24odCxuKXt2YXIgcj1mKHQsbiksbz1jKHQpO2lmKG51bGw9PT1vKXJldHVybiByO3ZhciB1PXMobyxuKTtyZXR1cm4gdS5sZW5ndGg/ci5sZW5ndGg/aShuZXcgZShyLmNvbmNhdCh1KSkpOnU6cn07by5leHAoe2dldE1ldGFkYXRhS2V5czpmdW5jdGlvbiBnZXRNZXRhZGF0YUtleXModCl7cmV0dXJuIHModSh0KSxhcmd1bWVudHMubGVuZ3RoPDI/dm9pZCAwOmEoYXJndW1lbnRzWzFdKSl9fSl9LHsxMDoxMCwyMjA6MjIwLDYzOjYzLDc6Nyw3NDo3NH1dLDI3NjpbZnVuY3Rpb24odCxuLHIpe3ZhciBlPXQoNjMpLGk9dCg3KSxvPXQoNzQpLHU9ZS5oYXMsYz1lLmdldCxmPWUua2V5LGE9ZnVuY3Rpb24odCxuLHIpe3ZhciBlPXUodCxuLHIpO2lmKGUpcmV0dXJuIGModCxuLHIpO3ZhciBpPW8obik7cmV0dXJuIG51bGwhPT1pP2EodCxpLHIpOnZvaWQgMH07ZS5leHAoe2dldE1ldGFkYXRhOmZ1bmN0aW9uIGdldE1ldGFkYXRhKHQsbil7cmV0dXJuIGEodCxpKG4pLGFyZ3VtZW50cy5sZW5ndGg8Mz92b2lkIDA6Zihhcmd1bWVudHNbMl0pKX19KX0sezYzOjYzLDc6Nyw3NDo3NH1dLDI3NzpbZnVuY3Rpb24odCxuLHIpe3ZhciBlPXQoNjMpLGk9dCg3KSxvPWUua2V5cyx1PWUua2V5O2UuZXhwKHtnZXRPd25NZXRhZGF0YUtleXM6ZnVuY3Rpb24gZ2V0T3duTWV0YWRhdGFLZXlzKHQpe3JldHVybiBvKGkodCksYXJndW1lbnRzLmxlbmd0aDwyP3ZvaWQgMDp1KGFyZ3VtZW50c1sxXSkpfX0pfSx7NjM6NjMsNzo3fV0sMjc4OltmdW5jdGlvbih0LG4scil7dmFyIGU9dCg2MyksaT10KDcpLG89ZS5nZXQsdT1lLmtleTtlLmV4cCh7Z2V0T3duTWV0YWRhdGE6ZnVuY3Rpb24gZ2V0T3duTWV0YWRhdGEodCxuKXtyZXR1cm4gbyh0LGkobiksYXJndW1lbnRzLmxlbmd0aDwzP3ZvaWQgMDp1KGFyZ3VtZW50c1syXSkpfX0pfSx7NjM6NjMsNzo3fV0sMjc5OltmdW5jdGlvbih0LG4scil7dmFyIGU9dCg2MyksaT10KDcpLG89dCg3NCksdT1lLmhhcyxjPWUua2V5LGY9ZnVuY3Rpb24odCxuLHIpe3ZhciBlPXUodCxuLHIpO2lmKGUpcmV0dXJuITA7dmFyIGk9byhuKTtyZXR1cm4gbnVsbCE9PWkmJmYodCxpLHIpfTtlLmV4cCh7aGFzTWV0YWRhdGE6ZnVuY3Rpb24gaGFzTWV0YWRhdGEodCxuKXtyZXR1cm4gZih0LGkobiksYXJndW1lbnRzLmxlbmd0aDwzP3ZvaWQgMDpjKGFyZ3VtZW50c1syXSkpfX0pfSx7NjM6NjMsNzo3LDc0Ojc0fV0sMjgwOltmdW5jdGlvbih0LG4scil7dmFyIGU9dCg2MyksaT10KDcpLG89ZS5oYXMsdT1lLmtleTtlLmV4cCh7aGFzT3duTWV0YWRhdGE6ZnVuY3Rpb24gaGFzT3duTWV0YWRhdGEodCxuKXtyZXR1cm4gbyh0LGkobiksYXJndW1lbnRzLmxlbmd0aDwzP3ZvaWQgMDp1KGFyZ3VtZW50c1syXSkpfX0pfSx7NjM6NjMsNzo3fV0sMjgxOltmdW5jdGlvbih0LG4scil7dmFyIGU9dCg2MyksaT10KDcpLG89dCgzKSx1PWUua2V5LGM9ZS5zZXQ7ZS5leHAoe21ldGFkYXRhOmZ1bmN0aW9uIG1ldGFkYXRhKHQsbil7cmV0dXJuIGZ1bmN0aW9uIGRlY29yYXRvcihyLGUpe2ModCxuLCh2b2lkIDAhPT1lP2k6bykociksdShlKSl9fX0pfSx7MzozLDYzOjYzLDc6N31dLDI4MjpbZnVuY3Rpb24odCxuLHIpe3ZhciBlPXQoMzIpO2UoZS5QK2UuUiwiU2V0Iix7dG9KU09OOnQoMjApKCJTZXQiKX0pfSx7MjA6MjAsMzI6MzJ9XSwyODM6W2Z1bmN0aW9uKHQsbixyKXsidXNlIHN0cmljdCI7dmFyIGU9dCgzMiksaT10KDk3KSghMCk7ZShlLlAsIlN0cmluZyIse2F0OmZ1bmN0aW9uIGF0KHQpe3JldHVybiBpKHRoaXMsdCl9fSl9LHszMjozMiw5Nzo5N31dLDI4NDpbZnVuY3Rpb24odCxuLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgZT10KDMyKSxpPXQoMjcpLG89dCgxMDgpLHU9dCg1MCksYz10KDM2KSxmPVJlZ0V4cC5wcm90b3R5cGUsYT1mdW5jdGlvbih0LG4pe3RoaXMuX3I9dCx0aGlzLl9zPW59O3QoNTIpKGEsIlJlZ0V4cCBTdHJpbmciLGZ1bmN0aW9uIG5leHQoKXt2YXIgdD10aGlzLl9yLmV4ZWModGhpcy5fcyk7cmV0dXJue3ZhbHVlOnQsZG9uZTpudWxsPT09dH19KSxlKGUuUCwiU3RyaW5nIix7bWF0Y2hBbGw6ZnVuY3Rpb24gbWF0Y2hBbGwodCl7aWYoaSh0aGlzKSwhdSh0KSl0aHJvdyBUeXBlRXJyb3IodCsiIGlzIG5vdCBhIHJlZ2V4cCEiKTt2YXIgbj1TdHJpbmcodGhpcykscj0iZmxhZ3MiaW4gZj9TdHJpbmcodC5mbGFncyk6Yy5jYWxsKHQpLGU9bmV3IFJlZ0V4cCh0LnNvdXJjZSx+ci5pbmRleE9mKCJnIik/cjoiZyIrcik7cmV0dXJuIGUubGFzdEluZGV4PW8odC5sYXN0SW5kZXgpLG5ldyBhKGUsbil9fSl9LHsxMDg6MTA4LDI3OjI3LDMyOjMyLDM2OjM2LDUwOjUwLDUyOjUyfV0sMjg1OltmdW5jdGlvbih0LG4scil7InVzZSBzdHJpY3QiO3ZhciBlPXQoMzIpLGk9dCgxMDApO2UoZS5QLCJTdHJpbmciLHtwYWRFbmQ6ZnVuY3Rpb24gcGFkRW5kKHQpe3JldHVybiBpKHRoaXMsdCxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCwhMSl9fSl9LHsxMDA6MTAwLDMyOjMyfV0sMjg2OltmdW5jdGlvbih0LG4scil7InVzZSBzdHJpY3QiO3ZhciBlPXQoMzIpLGk9dCgxMDApO2UoZS5QLCJTdHJpbmciLHtwYWRTdGFydDpmdW5jdGlvbiBwYWRTdGFydCh0KXtyZXR1cm4gaSh0aGlzLHQsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDAsITApfX0pfSx7MTAwOjEwMCwzMjozMn1dLDI4NzpbZnVuY3Rpb24odCxuLHIpeyJ1c2Ugc3RyaWN0Ijt0KDEwMikoInRyaW1MZWZ0IixmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24gdHJpbUxlZnQoKXtyZXR1cm4gdCh0aGlzLDEpfX0sInRyaW1TdGFydCIpfSx7MTAyOjEwMn1dLDI4ODpbZnVuY3Rpb24odCxuLHIpeyJ1c2Ugc3RyaWN0Ijt0KDEwMikoInRyaW1SaWdodCIsZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uIHRyaW1SaWdodCgpe3JldHVybiB0KHRoaXMsMil9fSwidHJpbUVuZCIpfSx7MTAyOjEwMn1dLDI4OTpbZnVuY3Rpb24odCxuLHIpe3QoMTE1KSgiYXN5bmNJdGVyYXRvciIpfSx7MTE1OjExNX1dLDI5MDpbZnVuY3Rpb24odCxuLHIpe3QoMTE1KSgib2JzZXJ2YWJsZSIpfSx7MTE1OjExNX1dLDI5MTpbZnVuY3Rpb24odCxuLHIpe3ZhciBlPXQoMzIpO2UoZS5TLCJTeXN0ZW0iLHtnbG9iYWw6dCgzOCl9KX0sezMyOjMyLDM4OjM4fV0sMjkyOltmdW5jdGlvbih0LG4scil7Zm9yKHZhciBlPXQoMTMwKSxpPXQoODcpLG89dCgzOCksdT10KDQwKSxjPXQoNTYpLGY9dCgxMTcpLGE9ZigiaXRlcmF0b3IiKSxzPWYoInRvU3RyaW5nVGFnIiksbD1jLkFycmF5LGg9WyJOb2RlTGlzdCIsIkRPTVRva2VuTGlzdCIsIk1lZGlhTGlzdCIsIlN0eWxlU2hlZXRMaXN0IiwiQ1NTUnVsZUxpc3QiXSx2PTA7djw1O3YrKyl7dmFyIHAsZD1oW3ZdLHk9b1tkXSxnPXkmJnkucHJvdG90eXBlO2lmKGcpe2dbYV18fHUoZyxhLGwpLGdbc118fHUoZyxzLGQpLGNbZF09bDtmb3IocCBpbiBlKWdbcF18fGkoZyxwLGVbcF0sITApfX19LHsxMTc6MTE3LDEzMDoxMzAsMzg6MzgsNDA6NDAsNTY6NTYsODc6ODd9XSwyOTM6W2Z1bmN0aW9uKHQsbixyKXt2YXIgZT10KDMyKSxpPXQoMTA0KTtlKGUuRytlLkIse3NldEltbWVkaWF0ZTppLnNldCxjbGVhckltbWVkaWF0ZTppLmNsZWFyfSl9LHsxMDQ6MTA0LDMyOjMyfV0sMjk0OltmdW5jdGlvbih0LG4scil7dmFyIGU9dCgzOCksaT10KDMyKSxvPXQoNDQpLHU9dCg4MyksYz1lLm5hdmlnYXRvcixmPSEhYyYmL01TSUUgLlwuLy50ZXN0KGMudXNlckFnZW50KSxhPWZ1bmN0aW9uKHQpe3JldHVybiBmP2Z1bmN0aW9uKG4scil7cmV0dXJuIHQobyh1LFtdLnNsaWNlLmNhbGwoYXJndW1lbnRzLDIpLCJmdW5jdGlvbiI9PXR5cGVvZiBuP246RnVuY3Rpb24obikpLHIpfTp0fTtpKGkuRytpLkIraS5GKmYse3NldFRpbWVvdXQ6YShlLnNldFRpbWVvdXQpLHNldEludGVydmFsOmEoZS5zZXRJbnRlcnZhbCl9KX0sezMyOjMyLDM4OjM4LDQ0OjQ0LDgzOjgzfV0sMjk1OltmdW5jdGlvbih0LG4scil7dCgyNDMpLHQoMTgwKSx0KDE4MiksdCgxODEpLHQoMTg0KSx0KDE4NiksdCgxOTEpLHQoMTg1KSx0KDE4MyksdCgxOTMpLHQoMTkyKSx0KDE4OCksdCgxODkpLHQoMTg3KSx0KDE3OSksdCgxOTApLHQoMTk0KSx0KDE5NSksdCgxNDYpLHQoMTQ4KSx0KDE0NyksdCgxOTcpLHQoMTk2KSx0KDE2NyksdCgxNzcpLHQoMTc4KSx0KDE2OCksdCgxNjkpLHQoMTcwKSx0KDE3MSksdCgxNzIpLHQoMTczKSx0KDE3NCksdCgxNzUpLHQoMTc2KSx0KDE1MCksdCgxNTEpLHQoMTUyKSx0KDE1MyksdCgxNTQpLHQoMTU1KSx0KDE1NiksdCgxNTcpLHQoMTU4KSx0KDE1OSksdCgxNjApLHQoMTYxKSx0KDE2MiksdCgxNjMpLHQoMTY0KSx0KDE2NSksdCgxNjYpLHQoMjMwKSx0KDIzNSksdCgyNDIpLHQoMjMzKSx0KDIyNSksdCgyMjYpLHQoMjMxKSx0KDIzNiksdCgyMzgpLHQoMjIxKSx0KDIyMiksdCgyMjMpLHQoMjI0KSx0KDIyNyksdCgyMjgpLHQoMjI5KSx0KDIzMiksdCgyMzQpLHQoMjM3KSx0KDIzOSksdCgyNDApLHQoMjQxKSx0KDE0MSksdCgxNDMpLHQoMTQyKSx0KDE0NSksdCgxNDQpLHQoMTI5KSx0KDEyNyksdCgxMzQpLHQoMTMxKSx0KDEzNyksdCgxMzkpLHQoMTI2KSx0KDEzMyksdCgxMjMpLHQoMTM4KSx0KDEyMSksdCgxMzYpLHQoMTM1KSx0KDEyOCksdCgxMzIpLHQoMTIwKSx0KDEyMiksdCgxMjUpLHQoMTI0KSx0KDE0MCksdCgxMzApLHQoMjEzKSx0KDIxOSksdCgyMTQpLHQoMjE1KSx0KDIxNiksdCgyMTcpLHQoMjE4KSx0KDE5OCksdCgxNDkpLHQoMjIwKSx0KDI1NSksdCgyNTYpLHQoMjQ0KSx0KDI0NSksdCgyNTApLHQoMjUzKSx0KDI1NCksdCgyNDgpLHQoMjUxKSx0KDI0OSksdCgyNTIpLHQoMjQ2KSx0KDI0NyksdCgxOTkpLHQoMjAwKSx0KDIwMSksdCgyMDIpLHQoMjAzKSx0KDIwNiksdCgyMDQpLHQoMjA1KSx0KDIwNyksdCgyMDgpLHQoMjA5KSx0KDIxMCksdCgyMTIpLHQoMjExKSx0KDI1NyksdCgyODMpLHQoMjg2KSx0KDI4NSksdCgyODcpLHQoMjg4KSx0KDI4NCksdCgyODkpLHQoMjkwKSx0KDI2OCksdCgyNzEpLHQoMjY3KSx0KDI2NSksdCgyNjYpLHQoMjY5KSx0KDI3MCksdCgyNjApLHQoMjgyKSx0KDI5MSksdCgyNTkpLHQoMjYxKSx0KDI2MyksdCgyNjIpLHQoMjY0KSx0KDI3MyksdCgyNzQpLHQoMjc2KSx0KDI3NSksdCgyNzgpLHQoMjc3KSx0KDI3OSksdCgyODApLHQoMjgxKSx0KDI1OCksdCgyNzIpLHQoMjk0KSx0KDI5MyksdCgyOTIpLG4uZXhwb3J0cz10KDIzKX0sezEyMDoxMjAsMTIxOjEyMSwxMjI6MTIyLDEyMzoxMjMsMTI0OjEyNCwxMjU6MTI1LDEyNjoxMjYsMTI3OjEyNywxMjg6MTI4LDEyOToxMjksMTMwOjEzMCwxMzE6MTMxLDEzMjoxMzIsMTMzOjEzMywxMzQ6MTM0LDEzNToxMzUsMTM2OjEzNiwxMzc6MTM3LDEzODoxMzgsMTM5OjEzOSwxNDA6MTQwLDE0MToxNDEsMTQyOjE0MiwxNDM6MTQzLDE0NDoxNDQsMTQ1OjE0NSwxNDY6MTQ2LDE0NzoxNDcsMTQ4OjE0OCwxNDk6MTQ5LDE1MDoxNTAsMTUxOjE1MSwxNTI6MTUyLDE1MzoxNTMsMTU0OjE1NCwxNTU6MTU1LDE1NjoxNTYsMTU3OjE1NywxNTg6MTU4LDE1OToxNTksMTYwOjE2MCwxNjE6MTYxLDE2MjoxNjIsMTYzOjE2MywxNjQ6MTY0LDE2NToxNjUsMTY2OjE2NiwxNjc6MTY3LDE2ODoxNjgsMTY5OjE2OSwxNzA6MTcwLDE3MToxNzEsMTcyOjE3MiwxNzM6MTczLDE3NDoxNzQsMTc1OjE3NSwxNzY6MTc2LDE3NzoxNzcsMTc4OjE3OCwxNzk6MTc5LDE4MDoxODAsMTgxOjE4MSwxODI6MTgyLDE4MzoxODMsMTg0OjE4NCwxODU6MTg1LDE4NjoxODYsMTg3OjE4NywxODg6MTg4LDE4OToxODksMTkwOjE5MCwxOTE6MTkxLDE5MjoxOTIsMTkzOjE5MywxOTQ6MTk0LDE5NToxOTUsMTk2OjE5NiwxOTc6MTk3LDE5ODoxOTgsMTk5OjE5OSwyMDA6MjAwLDIwMToyMDEsMjAyOjIwMiwyMDM6MjAzLDIwNDoyMDQsMjA1OjIwNSwyMDY6MjA2LDIwNzoyMDcsMjA4OjIwOCwyMDk6MjA5LDIxMDoyMTAsMjExOjIxMSwyMTI6MjEyLDIxMzoyMTMsMjE0OjIxNCwyMTU6MjE1LDIxNjoyMTYsMjE3OjIxNywyMTg6MjE4LDIxOToyMTksMjIwOjIyMCwyMjE6MjIxLDIyMjoyMjIsMjIzOjIyMywyMjQ6MjI0LDIyNToyMjUsMjI2OjIyNiwyMjc6MjI3LDIyODoyMjgsMjI5OjIyOSwyMzoyMywyMzA6MjMwLDIzMToyMzEsMjMyOjIzMiwyMzM6MjMzLDIzNDoyMzQsMjM1OjIzNSwyMzY6MjM2LDIzNzoyMzcsMjM4OjIzOCwyMzk6MjM5LDI0MDoyNDAsMjQxOjI0MSwyNDI6MjQyLDI0MzoyNDMsMjQ0OjI0NCwyNDU6MjQ1LDI0NjoyNDYsMjQ3OjI0NywyNDg6MjQ4LDI0OToyNDksMjUwOjI1MCwyNTE6MjUxLDI1MjoyNTIsMjUzOjI1MywyNTQ6MjU0LDI1NToyNTUsMjU2OjI1NiwyNTc6MjU3LDI1ODoyNTgsMjU5OjI1OSwyNjA6MjYwLDI2MToyNjEsMjYyOjI2MiwyNjM6MjYzLDI2NDoyNjQsMjY1OjI2NSwyNjY6MjY2LDI2NzoyNjcsMjY4OjI2OCwyNjk6MjY5LDI3MDoyNzAsMjcxOjI3MSwyNzI6MjcyLDI3MzoyNzMsMjc0OjI3NCwyNzU6Mjc1LDI3NjoyNzYsMjc3OjI3NywyNzg6Mjc4LDI3OToyNzksMjgwOjI4MCwyODE6MjgxLDI4MjoyODIsMjgzOjI4MywyODQ6Mjg0LDI4NToyODUsMjg2OjI4NiwyODc6Mjg3LDI4ODoyODgsMjg5OjI4OSwyOTA6MjkwLDI5MToyOTEsMjkyOjI5MiwyOTM6MjkzLDI5NDoyOTR9XSwyOTY6W2Z1bmN0aW9uKHQsbixyKXsoZnVuY3Rpb24odCl7IWZ1bmN0aW9uKHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiB3cmFwKHQsbixyLGUpe3ZhciBpPW4mJm4ucHJvdG90eXBlIGluc3RhbmNlb2YgR2VuZXJhdG9yP246R2VuZXJhdG9yLG89T2JqZWN0LmNyZWF0ZShpLnByb3RvdHlwZSksdT1uZXcgQ29udGV4dChlfHxbXSk7cmV0dXJuIG8uX2ludm9rZT1tYWtlSW52b2tlTWV0aG9kKHQscix1KSxvfWZ1bmN0aW9uIHRyeUNhdGNoKHQsbixyKXt0cnl7cmV0dXJue3R5cGU6Im5vcm1hbCIsYXJnOnQuY2FsbChuLHIpfX1jYXRjaCh0KXtyZXR1cm57dHlwZToidGhyb3ciLGFyZzp0fX19ZnVuY3Rpb24gR2VuZXJhdG9yKCl7fWZ1bmN0aW9uIEdlbmVyYXRvckZ1bmN0aW9uKCl7fWZ1bmN0aW9uIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKCl7fWZ1bmN0aW9uIGRlZmluZUl0ZXJhdG9yTWV0aG9kcyh0KXtbIm5leHQiLCJ0aHJvdyIsInJldHVybiJdLmZvckVhY2goZnVuY3Rpb24obil7dFtuXT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5faW52b2tlKG4sdCl9fSl9ZnVuY3Rpb24gQXN5bmNJdGVyYXRvcih0KXtmdW5jdGlvbiBpbnZva2UobixyLGUsbyl7dmFyIHU9dHJ5Q2F0Y2godFtuXSx0LHIpO2lmKCJ0aHJvdyIhPT11LnR5cGUpe3ZhciBjPXUuYXJnLGY9Yy52YWx1ZTtyZXR1cm4gZiYmIm9iamVjdCI9PXR5cGVvZiBmJiZpLmNhbGwoZiwiX19hd2FpdCIpP1Byb21pc2UucmVzb2x2ZShmLl9fYXdhaXQpLnRoZW4oZnVuY3Rpb24odCl7aW52b2tlKCJuZXh0Iix0LGUsbyl9LGZ1bmN0aW9uKHQpe2ludm9rZSgidGhyb3ciLHQsZSxvKX0pOlByb21pc2UucmVzb2x2ZShmKS50aGVuKGZ1bmN0aW9uKHQpe2MudmFsdWU9dCxlKGMpfSxvKX1vKHUuYXJnKX1mdW5jdGlvbiBlbnF1ZXVlKHQscil7ZnVuY3Rpb24gY2FsbEludm9rZVdpdGhNZXRob2RBbmRBcmcoKXtyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24obixlKXtpbnZva2UodCxyLG4sZSl9KX1yZXR1cm4gbj1uP24udGhlbihjYWxsSW52b2tlV2l0aE1ldGhvZEFuZEFyZyxjYWxsSW52b2tlV2l0aE1ldGhvZEFuZEFyZyk6Y2FsbEludm9rZVdpdGhNZXRob2RBbmRBcmcoKX0ib2JqZWN0Ij09dHlwZW9mIHByb2Nlc3MmJnByb2Nlc3MuZG9tYWluJiYoaW52b2tlPXByb2Nlc3MuZG9tYWluLmJpbmQoaW52b2tlKSk7dmFyIG47dGhpcy5faW52b2tlPWVucXVldWV9ZnVuY3Rpb24gbWFrZUludm9rZU1ldGhvZCh0LG4sZSl7dmFyIGk9cztyZXR1cm4gZnVuY3Rpb24gaW52b2tlKG8sdSl7aWYoaT09PWgpdGhyb3cgbmV3IEVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBydW5uaW5nIik7aWYoaT09PXYpe2lmKCJ0aHJvdyI9PT1vKXRocm93IHU7cmV0dXJuIGRvbmVSZXN1bHQoKX1mb3IoOzspe3ZhciBjPWUuZGVsZWdhdGU7aWYoYyl7aWYoInJldHVybiI9PT1vfHwidGhyb3ciPT09byYmYy5pdGVyYXRvcltvXT09PXIpe2UuZGVsZWdhdGU9bnVsbDt2YXIgZj1jLml0ZXJhdG9yLnJldHVybjtpZihmKXt2YXIgYT10cnlDYXRjaChmLGMuaXRlcmF0b3IsdSk7aWYoInRocm93Ij09PWEudHlwZSl7bz0idGhyb3ciLHU9YS5hcmc7Y29udGludWV9fWlmKCJyZXR1cm4iPT09byljb250aW51ZX12YXIgYT10cnlDYXRjaChjLml0ZXJhdG9yW29dLGMuaXRlcmF0b3IsdSk7aWYoInRocm93Ij09PWEudHlwZSl7ZS5kZWxlZ2F0ZT1udWxsLG89InRocm93Iix1PWEuYXJnO2NvbnRpbnVlfW89Im5leHQiLHU9cjt2YXIgZD1hLmFyZztpZighZC5kb25lKXJldHVybiBpPWwsZDtlW2MucmVzdWx0TmFtZV09ZC52YWx1ZSxlLm5leHQ9Yy5uZXh0TG9jLGUuZGVsZWdhdGU9bnVsbH1pZigibmV4dCI9PT1vKWUuc2VudD1lLl9zZW50PXU7ZWxzZSBpZigidGhyb3ciPT09byl7aWYoaT09PXMpdGhyb3cgaT12LHU7ZS5kaXNwYXRjaEV4Y2VwdGlvbih1KSYmKG89Im5leHQiLHU9cil9ZWxzZSJyZXR1cm4iPT09byYmZS5hYnJ1cHQoInJldHVybiIsdSk7aT1oO3ZhciBhPXRyeUNhdGNoKHQsbixlKTtpZigibm9ybWFsIj09PWEudHlwZSl7aT1lLmRvbmU/djpsO3ZhciBkPXt2YWx1ZTphLmFyZyxkb25lOmUuZG9uZX07aWYoYS5hcmchPT1wKXJldHVybiBkO2UuZGVsZWdhdGUmJiJuZXh0Ij09PW8mJih1PXIpfWVsc2UidGhyb3ciPT09YS50eXBlJiYoaT12LG89InRocm93Iix1PWEuYXJnKX19fWZ1bmN0aW9uIHB1c2hUcnlFbnRyeSh0KXt2YXIgbj17dHJ5TG9jOnRbMF19OzEgaW4gdCYmKG4uY2F0Y2hMb2M9dFsxXSksMiBpbiB0JiYobi5maW5hbGx5TG9jPXRbMl0sbi5hZnRlckxvYz10WzNdKSx0aGlzLnRyeUVudHJpZXMucHVzaChuKX1mdW5jdGlvbiByZXNldFRyeUVudHJ5KHQpe3ZhciBuPXQuY29tcGxldGlvbnx8e307bi50eXBlPSJub3JtYWwiLGRlbGV0ZSBuLmFyZyx0LmNvbXBsZXRpb249bn1mdW5jdGlvbiBDb250ZXh0KHQpe3RoaXMudHJ5RW50cmllcz1be3RyeUxvYzoicm9vdCJ9XSx0LmZvckVhY2gocHVzaFRyeUVudHJ5LHRoaXMpLHRoaXMucmVzZXQoITApfWZ1bmN0aW9uIHZhbHVlcyh0KXtpZih0KXt2YXIgbj10W3VdO2lmKG4pcmV0dXJuIG4uY2FsbCh0KTtpZigiZnVuY3Rpb24iPT10eXBlb2YgdC5uZXh0KXJldHVybiB0O2lmKCFpc05hTih0Lmxlbmd0aCkpe3ZhciBlPS0xLG89ZnVuY3Rpb24gbmV4dCgpe2Zvcig7KytlPHQubGVuZ3RoOylpZihpLmNhbGwodCxlKSlyZXR1cm4gbmV4dC52YWx1ZT10W2VdLG5leHQuZG9uZT0hMSxuZXh0O3JldHVybiBuZXh0LnZhbHVlPXIsbmV4dC5kb25lPSEwLG5leHR9O3JldHVybiBvLm5leHQ9b319cmV0dXJue25leHQ6ZG9uZVJlc3VsdH19ZnVuY3Rpb24gZG9uZVJlc3VsdCgpe3JldHVybnt2YWx1ZTpyLGRvbmU6ITB9fXZhciByLGU9T2JqZWN0LnByb3RvdHlwZSxpPWUuaGFzT3duUHJvcGVydHksbz0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sP1N5bWJvbDp7fSx1PW8uaXRlcmF0b3J8fCJAQGl0ZXJhdG9yIixjPW8udG9TdHJpbmdUYWd8fCJAQHRvU3RyaW5nVGFnIixmPSJvYmplY3QiPT10eXBlb2YgbixhPXQucmVnZW5lcmF0b3JSdW50aW1lO2lmKGEpcmV0dXJuIHZvaWQoZiYmKG4uZXhwb3J0cz1hKSk7YT10LnJlZ2VuZXJhdG9yUnVudGltZT1mP24uZXhwb3J0czp7fSxhLndyYXA9d3JhcDt2YXIgcz0ic3VzcGVuZGVkU3RhcnQiLGw9InN1c3BlbmRlZFlpZWxkIixoPSJleGVjdXRpbmciLHY9ImNvbXBsZXRlZCIscD17fSxkPXt9O2RbdV09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc307dmFyIHk9T2JqZWN0LmdldFByb3RvdHlwZU9mLGc9eSYmeSh5KHZhbHVlcyhbXSkpKTtnJiZnIT09ZSYmaS5jYWxsKGcsdSkmJihkPWcpO3ZhciBiPUdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLnByb3RvdHlwZT1HZW5lcmF0b3IucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZCk7R2VuZXJhdG9yRnVuY3Rpb24ucHJvdG90eXBlPWIuY29uc3RydWN0b3I9R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUsR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY29uc3RydWN0b3I9R2VuZXJhdG9yRnVuY3Rpb24sR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGVbY109R2VuZXJhdG9yRnVuY3Rpb24uZGlzcGxheU5hbWU9IkdlbmVyYXRvckZ1bmN0aW9uIixhLmlzR2VuZXJhdG9yRnVuY3Rpb249ZnVuY3Rpb24odCl7dmFyIG49ImZ1bmN0aW9uIj09dHlwZW9mIHQmJnQuY29uc3RydWN0b3I7cmV0dXJuISFuJiYobj09PUdlbmVyYXRvckZ1bmN0aW9ufHwiR2VuZXJhdG9yRnVuY3Rpb24iPT09KG4uZGlzcGxheU5hbWV8fG4ubmFtZSkpfSxhLm1hcms9ZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YodCxHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSk6KHQuX19wcm90b19fPUdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLGMgaW4gdHx8KHRbY109IkdlbmVyYXRvckZ1bmN0aW9uIikpLHQucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoYiksdH0sYS5hd3JhcD1mdW5jdGlvbih0KXtyZXR1cm57X19hd2FpdDp0fX0sZGVmaW5lSXRlcmF0b3JNZXRob2RzKEFzeW5jSXRlcmF0b3IucHJvdG90eXBlKSxhLkFzeW5jSXRlcmF0b3I9QXN5bmNJdGVyYXRvcixhLmFzeW5jPWZ1bmN0aW9uKHQsbixyLGUpe3ZhciBpPW5ldyBBc3luY0l0ZXJhdG9yKHdyYXAodCxuLHIsZSkpO3JldHVybiBhLmlzR2VuZXJhdG9yRnVuY3Rpb24obik/aTppLm5leHQoKS50aGVuKGZ1bmN0aW9uKHQpe3JldHVybiB0LmRvbmU/dC52YWx1ZTppLm5leHQoKX0pfSxkZWZpbmVJdGVyYXRvck1ldGhvZHMoYiksYltjXT0iR2VuZXJhdG9yIixiLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIltvYmplY3QgR2VuZXJhdG9yXSJ9LGEua2V5cz1mdW5jdGlvbih0KXt2YXIgbj1bXTtmb3IodmFyIHIgaW4gdCluLnB1c2gocik7cmV0dXJuIG4ucmV2ZXJzZSgpLGZ1bmN0aW9uIG5leHQoKXtmb3IoO24ubGVuZ3RoOyl7dmFyIHI9bi5wb3AoKTtpZihyIGluIHQpcmV0dXJuIG5leHQudmFsdWU9cixuZXh0LmRvbmU9ITEsbmV4dH1yZXR1cm4gbmV4dC5kb25lPSEwLG5leHR9fSxhLnZhbHVlcz12YWx1ZXMsQ29udGV4dC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOkNvbnRleHQscmVzZXQ6ZnVuY3Rpb24odCl7aWYodGhpcy5wcmV2PTAsdGhpcy5uZXh0PTAsdGhpcy5zZW50PXRoaXMuX3NlbnQ9cix0aGlzLmRvbmU9ITEsdGhpcy5kZWxlZ2F0ZT1udWxsLHRoaXMudHJ5RW50cmllcy5mb3JFYWNoKHJlc2V0VHJ5RW50cnkpLCF0KWZvcih2YXIgbiBpbiB0aGlzKSJ0Ij09PW4uY2hhckF0KDApJiZpLmNhbGwodGhpcyxuKSYmIWlzTmFOKCtuLnNsaWNlKDEpKSYmKHRoaXNbbl09cil9LHN0b3A6ZnVuY3Rpb24oKXt0aGlzLmRvbmU9ITA7dmFyIHQ9dGhpcy50cnlFbnRyaWVzWzBdLG49dC5jb21wbGV0aW9uO2lmKCJ0aHJvdyI9PT1uLnR5cGUpdGhyb3cgbi5hcmc7cmV0dXJuIHRoaXMucnZhbH0sZGlzcGF0Y2hFeGNlcHRpb246ZnVuY3Rpb24odCl7ZnVuY3Rpb24gaGFuZGxlKHIsZSl7cmV0dXJuIG8udHlwZT0idGhyb3ciLG8uYXJnPXQsbi5uZXh0PXIsISFlfWlmKHRoaXMuZG9uZSl0aHJvdyB0O2Zvcih2YXIgbj10aGlzLHI9dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO3I+PTA7LS1yKXt2YXIgZT10aGlzLnRyeUVudHJpZXNbcl0sbz1lLmNvbXBsZXRpb247CmlmKCJyb290Ij09PWUudHJ5TG9jKXJldHVybiBoYW5kbGUoImVuZCIpO2lmKGUudHJ5TG9jPD10aGlzLnByZXYpe3ZhciB1PWkuY2FsbChlLCJjYXRjaExvYyIpLGM9aS5jYWxsKGUsImZpbmFsbHlMb2MiKTtpZih1JiZjKXtpZih0aGlzLnByZXY8ZS5jYXRjaExvYylyZXR1cm4gaGFuZGxlKGUuY2F0Y2hMb2MsITApO2lmKHRoaXMucHJldjxlLmZpbmFsbHlMb2MpcmV0dXJuIGhhbmRsZShlLmZpbmFsbHlMb2MpfWVsc2UgaWYodSl7aWYodGhpcy5wcmV2PGUuY2F0Y2hMb2MpcmV0dXJuIGhhbmRsZShlLmNhdGNoTG9jLCEwKX1lbHNle2lmKCFjKXRocm93IG5ldyBFcnJvcigidHJ5IHN0YXRlbWVudCB3aXRob3V0IGNhdGNoIG9yIGZpbmFsbHkiKTtpZih0aGlzLnByZXY8ZS5maW5hbGx5TG9jKXJldHVybiBoYW5kbGUoZS5maW5hbGx5TG9jKX19fX0sYWJydXB0OmZ1bmN0aW9uKHQsbil7Zm9yKHZhciByPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTtyPj0wOy0tcil7dmFyIGU9dGhpcy50cnlFbnRyaWVzW3JdO2lmKGUudHJ5TG9jPD10aGlzLnByZXYmJmkuY2FsbChlLCJmaW5hbGx5TG9jIikmJnRoaXMucHJldjxlLmZpbmFsbHlMb2Mpe3ZhciBvPWU7YnJlYWt9fW8mJigiYnJlYWsiPT09dHx8ImNvbnRpbnVlIj09PXQpJiZvLnRyeUxvYzw9biYmbjw9by5maW5hbGx5TG9jJiYobz1udWxsKTt2YXIgdT1vP28uY29tcGxldGlvbjp7fTtyZXR1cm4gdS50eXBlPXQsdS5hcmc9bixvP3RoaXMubmV4dD1vLmZpbmFsbHlMb2M6dGhpcy5jb21wbGV0ZSh1KSxwfSxjb21wbGV0ZTpmdW5jdGlvbih0LG4pe2lmKCJ0aHJvdyI9PT10LnR5cGUpdGhyb3cgdC5hcmc7ImJyZWFrIj09PXQudHlwZXx8ImNvbnRpbnVlIj09PXQudHlwZT90aGlzLm5leHQ9dC5hcmc6InJldHVybiI9PT10LnR5cGU/KHRoaXMucnZhbD10LmFyZyx0aGlzLm5leHQ9ImVuZCIpOiJub3JtYWwiPT09dC50eXBlJiZuJiYodGhpcy5uZXh0PW4pfSxmaW5pc2g6ZnVuY3Rpb24odCl7Zm9yKHZhciBuPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTtuPj0wOy0tbil7dmFyIHI9dGhpcy50cnlFbnRyaWVzW25dO2lmKHIuZmluYWxseUxvYz09PXQpcmV0dXJuIHRoaXMuY29tcGxldGUoci5jb21wbGV0aW9uLHIuYWZ0ZXJMb2MpLHJlc2V0VHJ5RW50cnkocikscH19LGNhdGNoOmZ1bmN0aW9uKHQpe2Zvcih2YXIgbj10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7bj49MDstLW4pe3ZhciByPXRoaXMudHJ5RW50cmllc1tuXTtpZihyLnRyeUxvYz09PXQpe3ZhciBlPXIuY29tcGxldGlvbjtpZigidGhyb3ciPT09ZS50eXBlKXt2YXIgaT1lLmFyZztyZXNldFRyeUVudHJ5KHIpfXJldHVybiBpfX10aHJvdyBuZXcgRXJyb3IoImlsbGVnYWwgY2F0Y2ggYXR0ZW1wdCIpfSxkZWxlZ2F0ZVlpZWxkOmZ1bmN0aW9uKHQsbixyKXtyZXR1cm4gdGhpcy5kZWxlZ2F0ZT17aXRlcmF0b3I6dmFsdWVzKHQpLHJlc3VsdE5hbWU6bixuZXh0TG9jOnJ9LHB9fX0oIm9iamVjdCI9PXR5cGVvZiB0P3Q6Im9iamVjdCI9PXR5cGVvZiB3aW5kb3c/d2luZG93OiJvYmplY3QiPT10eXBlb2Ygc2VsZj9zZWxmOnRoaXMpfSkuY2FsbCh0aGlzLCJ1bmRlZmluZWQiIT10eXBlb2YgZ2xvYmFsP2dsb2JhbDoidW5kZWZpbmVkIiE9dHlwZW9mIHNlbGY/c2VsZjoidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6e30pfSx7fV19LHt9LFsxXSk7Cg=="></script>
<script src="data:application/x-javascript;base64,Ly8gaHR0cHM6Ly9kM2pzLm9yZyBWZXJzaW9uIDQuNy4wLiBDb3B5cmlnaHQgMjAxNyBNaWtlIEJvc3RvY2suCihmdW5jdGlvbih0LG4peyJvYmplY3QiPT10eXBlb2YgZXhwb3J0cyYmInVuZGVmaW5lZCIhPXR5cGVvZiBtb2R1bGU/bihleHBvcnRzKToiZnVuY3Rpb24iPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZShbImV4cG9ydHMiXSxuKTpuKHQuZDM9dC5kM3x8e30pfSkodGhpcyxmdW5jdGlvbih0KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbih0KXtyZXR1cm4gZnVuY3Rpb24obixlKXtyZXR1cm4gcXModChuKSxlKX19ZnVuY3Rpb24gZSh0LG4pe3JldHVyblt0LG5dfWZ1bmN0aW9uIHIodCxuLGUpe3ZhciByPU1hdGguYWJzKG4tdCkvTWF0aC5tYXgoMCxlKSxpPU1hdGgucG93KDEwLE1hdGguZmxvb3IoTWF0aC5sb2cocikvTWF0aC5MTjEwKSksbz1yL2k7cmV0dXJuIG8+PUtzP2kqPTEwOm8+PXRmP2kqPTU6bz49bmYmJihpKj0yKSxuPHQ/LWk6aX1mdW5jdGlvbiBpKHQpe3JldHVybiB0Lmxlbmd0aH1mdW5jdGlvbiBvKHQpe3JldHVybiJ0cmFuc2xhdGUoIit0KyIsMCkifWZ1bmN0aW9uIHUodCl7cmV0dXJuInRyYW5zbGF0ZSgwLCIrdCsiKSJ9ZnVuY3Rpb24gYSh0KXt2YXIgbj10LmJhbmR3aWR0aCgpLzI7cmV0dXJuIHQucm91bmQoKSYmKG49TWF0aC5yb3VuZChuKSksZnVuY3Rpb24oZSl7cmV0dXJuIHQoZSkrbn19ZnVuY3Rpb24gYygpe3JldHVybiF0aGlzLl9fYXhpc31mdW5jdGlvbiBzKHQsbil7ZnVuY3Rpb24gZShlKXt2YXIgbz1udWxsPT1zP24udGlja3M/bi50aWNrcy5hcHBseShuLGkpOm4uZG9tYWluKCk6cyx1PW51bGw9PWY/bi50aWNrRm9ybWF0P24udGlja0Zvcm1hdC5hcHBseShuLGkpOmJmOmYsZz1NYXRoLm1heChsLDApK3AseT1uLnJhbmdlKCksbT15WzBdKy41LHg9eVt5Lmxlbmd0aC0xXSsuNSxiPShuLmJhbmR3aWR0aD9hOmJmKShuLmNvcHkoKSksdz1lLnNlbGVjdGlvbj9lLnNlbGVjdGlvbigpOmUsTT13LnNlbGVjdEFsbCgiLmRvbWFpbiIpLmRhdGEoW251bGxdKSxUPXcuc2VsZWN0QWxsKCIudGljayIpLmRhdGEobyxuKS5vcmRlcigpLGs9VC5leGl0KCksUz1ULmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJ0aWNrIiksTj1ULnNlbGVjdCgibGluZSIpLEU9VC5zZWxlY3QoInRleHQiKTtNPU0ubWVyZ2UoTS5lbnRlcigpLmluc2VydCgicGF0aCIsIi50aWNrIikuYXR0cigiY2xhc3MiLCJkb21haW4iKS5hdHRyKCJzdHJva2UiLCIjMDAwIikpLFQ9VC5tZXJnZShTKSxOPU4ubWVyZ2UoUy5hcHBlbmQoImxpbmUiKS5hdHRyKCJzdHJva2UiLCIjMDAwIikuYXR0cihyKyIyIixkKmwpLmF0dHIodisiMSIsLjUpLmF0dHIodisiMiIsLjUpKSxFPUUubWVyZ2UoUy5hcHBlbmQoInRleHQiKS5hdHRyKCJmaWxsIiwiIzAwMCIpLmF0dHIocixkKmcpLmF0dHIodiwuNSkuYXR0cigiZHkiLHQ9PT13Zj8iMGVtIjp0PT09VGY/IjAuNzFlbSI6IjAuMzJlbSIpKSxlIT09dyYmKE09TS50cmFuc2l0aW9uKGUpLFQ9VC50cmFuc2l0aW9uKGUpLE49Ti50cmFuc2l0aW9uKGUpLEU9RS50cmFuc2l0aW9uKGUpLGs9ay50cmFuc2l0aW9uKGUpLmF0dHIoIm9wYWNpdHkiLFNmKS5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKHQpe3JldHVybiBpc0Zpbml0ZSh0PWIodCkpP18odCk6dGhpcy5nZXRBdHRyaWJ1dGUoInRyYW5zZm9ybSIpfSksUy5hdHRyKCJvcGFjaXR5IixTZikuYXR0cigidHJhbnNmb3JtIixmdW5jdGlvbih0KXt2YXIgbj10aGlzLnBhcmVudE5vZGUuX19heGlzO3JldHVybiBfKG4mJmlzRmluaXRlKG49bih0KSk/bjpiKHQpKX0pKSxrLnJlbW92ZSgpLE0uYXR0cigiZCIsdD09PWtmfHx0PT1NZj8iTSIrZCpoKyIsIittKyJIMC41ViIreCsiSCIrZCpoOiJNIittKyIsIitkKmgrIlYwLjVIIit4KyJWIitkKmgpLFQuYXR0cigib3BhY2l0eSIsMSkuYXR0cigidHJhbnNmb3JtIixmdW5jdGlvbih0KXtyZXR1cm4gXyhiKHQpKX0pLE4uYXR0cihyKyIyIixkKmwpLEUuYXR0cihyLGQqZykudGV4dCh1KSx3LmZpbHRlcihjKS5hdHRyKCJmaWxsIiwibm9uZSIpLmF0dHIoImZvbnQtc2l6ZSIsMTApLmF0dHIoImZvbnQtZmFtaWx5Iiwic2Fucy1zZXJpZiIpLmF0dHIoInRleHQtYW5jaG9yIix0PT09TWY/InN0YXJ0Ijp0PT09a2Y/ImVuZCI6Im1pZGRsZSIpLHcuZWFjaChmdW5jdGlvbigpe3RoaXMuX19heGlzPWJ9KX12YXIgcixpPVtdLHM9bnVsbCxmPW51bGwsbD02LGg9NixwPTMsZD10PT09d2Z8fHQ9PT1rZj8tMToxLHY9dD09PWtmfHx0PT09TWY/KHI9IngiLCJ5Iik6KHI9InkiLCJ4IiksXz10PT09d2Z8fHQ9PT1UZj9vOnU7cmV0dXJuIGUuc2NhbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49dCxlKTpufSxlLnRpY2tzPWZ1bmN0aW9uKCl7cmV0dXJuIGk9eGYuY2FsbChhcmd1bWVudHMpLGV9LGUudGlja0FyZ3VtZW50cz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT1udWxsPT10P1tdOnhmLmNhbGwodCksZSk6aS5zbGljZSgpfSxlLnRpY2tWYWx1ZXM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9bnVsbD09dD9udWxsOnhmLmNhbGwodCksZSk6cyYmcy5zbGljZSgpfSxlLnRpY2tGb3JtYXQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGY9dCxlKTpmfSxlLnRpY2tTaXplPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhsPWg9K3QsZSk6bH0sZS50aWNrU2l6ZUlubmVyPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhsPSt0LGUpOmx9LGUudGlja1NpemVPdXRlcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaD0rdCxlKTpofSxlLnRpY2tQYWRkaW5nPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhwPSt0LGUpOnB9LGV9ZnVuY3Rpb24gZih0KXtyZXR1cm4gcyh3Zix0KX1mdW5jdGlvbiBsKHQpe3JldHVybiBzKE1mLHQpfWZ1bmN0aW9uIGgodCl7cmV0dXJuIHMoVGYsdCl9ZnVuY3Rpb24gcCh0KXtyZXR1cm4gcyhrZix0KX1mdW5jdGlvbiBkKCl7Zm9yKHZhciB0LG49MCxlPWFyZ3VtZW50cy5sZW5ndGgscj17fTtuPGU7KytuKXtpZighKHQ9YXJndW1lbnRzW25dKyIiKXx8dCBpbiByKXRocm93IG5ldyBFcnJvcigiaWxsZWdhbCB0eXBlOiAiK3QpO3JbdF09W119cmV0dXJuIG5ldyB2KHIpfWZ1bmN0aW9uIHYodCl7dGhpcy5fPXR9ZnVuY3Rpb24gXyh0LG4pe3JldHVybiB0LnRyaW0oKS5zcGxpdCgvXnxccysvKS5tYXAoZnVuY3Rpb24odCl7dmFyIGU9IiIscj10LmluZGV4T2YoIi4iKTtpZihyPj0wJiYoZT10LnNsaWNlKHIrMSksdD10LnNsaWNlKDAscikpLHQmJiFuLmhhc093blByb3BlcnR5KHQpKXRocm93IG5ldyBFcnJvcigidW5rbm93biB0eXBlOiAiK3QpO3JldHVybnt0eXBlOnQsbmFtZTplfX0pfWZ1bmN0aW9uIGcodCxuKXtmb3IodmFyIGUscj0wLGk9dC5sZW5ndGg7cjxpOysrcilpZigoZT10W3JdKS5uYW1lPT09bilyZXR1cm4gZS52YWx1ZX1mdW5jdGlvbiB5KHQsbixlKXtmb3IodmFyIHI9MCxpPXQubGVuZ3RoO3I8aTsrK3IpaWYodFtyXS5uYW1lPT09bil7dFtyXT1OZix0PXQuc2xpY2UoMCxyKS5jb25jYXQodC5zbGljZShyKzEpKTticmVha31yZXR1cm4gbnVsbCE9ZSYmdC5wdXNoKHtuYW1lOm4sdmFsdWU6ZX0pLHR9ZnVuY3Rpb24gbSh0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbj10aGlzLm93bmVyRG9jdW1lbnQsZT10aGlzLm5hbWVzcGFjZVVSSTtyZXR1cm4gZT09PUVmJiZuLmRvY3VtZW50RWxlbWVudC5uYW1lc3BhY2VVUkk9PT1FZj9uLmNyZWF0ZUVsZW1lbnQodCk6bi5jcmVhdGVFbGVtZW50TlMoZSx0KX19ZnVuY3Rpb24geCh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vd25lckRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyh0LnNwYWNlLHQubG9jYWwpfX1mdW5jdGlvbiBiKCl7cmV0dXJuIG5ldyB3fWZ1bmN0aW9uIHcoKXt0aGlzLl89IkAiKygrK1BmKS50b1N0cmluZygzNil9ZnVuY3Rpb24gTSh0LG4sZSl7cmV0dXJuIHQ9VCh0LG4sZSksZnVuY3Rpb24obil7dmFyIGU9bi5yZWxhdGVkVGFyZ2V0O2UmJihlPT09dGhpc3x8OCZlLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKHRoaXMpKXx8dC5jYWxsKHRoaXMsbil9fWZ1bmN0aW9uIFQobixlLHIpe3JldHVybiBmdW5jdGlvbihpKXt2YXIgbz10LmV2ZW50O3QuZXZlbnQ9aTt0cnl7bi5jYWxsKHRoaXMsdGhpcy5fX2RhdGFfXyxlLHIpfWZpbmFsbHl7dC5ldmVudD1vfX19ZnVuY3Rpb24gayh0KXtyZXR1cm4gdC50cmltKCkuc3BsaXQoL158XHMrLykubWFwKGZ1bmN0aW9uKHQpe3ZhciBuPSIiLGU9dC5pbmRleE9mKCIuIik7cmV0dXJuIGU+PTAmJihuPXQuc2xpY2UoZSsxKSx0PXQuc2xpY2UoMCxlKSkse3R5cGU6dCxuYW1lOm59fSl9ZnVuY3Rpb24gUyh0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbj10aGlzLl9fb247aWYobil7Zm9yKHZhciBlLHI9MCxpPS0xLG89bi5sZW5ndGg7cjxvOysrcillPW5bcl0sdC50eXBlJiZlLnR5cGUhPT10LnR5cGV8fGUubmFtZSE9PXQubmFtZT9uWysraV09ZTp0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIoZS50eXBlLGUubGlzdGVuZXIsZS5jYXB0dXJlKTsrK2k/bi5sZW5ndGg9aTpkZWxldGUgdGhpcy5fX29ufX19ZnVuY3Rpb24gTih0LG4sZSl7dmFyIHI9RGYuaGFzT3duUHJvcGVydHkodC50eXBlKT9NOlQ7cmV0dXJuIGZ1bmN0aW9uKGksbyx1KXt2YXIgYSxjPXRoaXMuX19vbixzPXIobixvLHUpO2lmKGMpZm9yKHZhciBmPTAsbD1jLmxlbmd0aDtmPGw7KytmKWlmKChhPWNbZl0pLnR5cGU9PT10LnR5cGUmJmEubmFtZT09PXQubmFtZSlyZXR1cm4gdGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKGEudHlwZSxhLmxpc3RlbmVyLGEuY2FwdHVyZSksdGhpcy5hZGRFdmVudExpc3RlbmVyKGEudHlwZSxhLmxpc3RlbmVyPXMsYS5jYXB0dXJlPWUpLHZvaWQoYS52YWx1ZT1uKTt0aGlzLmFkZEV2ZW50TGlzdGVuZXIodC50eXBlLHMsZSksYT17dHlwZTp0LnR5cGUsbmFtZTp0Lm5hbWUsdmFsdWU6bixsaXN0ZW5lcjpzLGNhcHR1cmU6ZX0sYz9jLnB1c2goYSk6dGhpcy5fX29uPVthXX19ZnVuY3Rpb24gRShuLGUscixpKXt2YXIgbz10LmV2ZW50O24uc291cmNlRXZlbnQ9dC5ldmVudCx0LmV2ZW50PW47dHJ5e3JldHVybiBlLmFwcGx5KHIsaSl9ZmluYWxseXt0LmV2ZW50PW99fWZ1bmN0aW9uIEEoKXt9ZnVuY3Rpb24gQygpe3JldHVybltdfWZ1bmN0aW9uIHoodCxuKXt0aGlzLm93bmVyRG9jdW1lbnQ9dC5vd25lckRvY3VtZW50LHRoaXMubmFtZXNwYWNlVVJJPXQubmFtZXNwYWNlVVJJLHRoaXMuX25leHQ9bnVsbCx0aGlzLl9wYXJlbnQ9dCx0aGlzLl9fZGF0YV9fPW59ZnVuY3Rpb24gUCh0LG4sZSxyLGksbyl7Zm9yKHZhciB1LGE9MCxjPW4ubGVuZ3RoLHM9by5sZW5ndGg7YTxzOysrYSkodT1uW2FdKT8odS5fX2RhdGFfXz1vW2FdLHJbYV09dSk6ZVthXT1uZXcgeih0LG9bYV0pO2Zvcig7YTxjOysrYSkodT1uW2FdKSYmKGlbYV09dSl9ZnVuY3Rpb24gUih0LG4sZSxyLGksbyx1KXt2YXIgYSxjLHMsZj17fSxsPW4ubGVuZ3RoLGg9by5sZW5ndGgscD1uZXcgQXJyYXkobCk7Zm9yKGE9MDthPGw7KythKShjPW5bYV0pJiYocFthXT1zPUdmK3UuY2FsbChjLGMuX19kYXRhX18sYSxuKSxzIGluIGY/aVthXT1jOmZbc109Yyk7Zm9yKGE9MDthPGg7KythKXM9R2YrdS5jYWxsKHQsb1thXSxhLG8pLChjPWZbc10pPyhyW2FdPWMsYy5fX2RhdGFfXz1vW2FdLGZbc109bnVsbCk6ZVthXT1uZXcgeih0LG9bYV0pO2ZvcihhPTA7YTxsOysrYSkoYz1uW2FdKSYmZltwW2FdXT09PWMmJihpW2FdPWMpfWZ1bmN0aW9uIEwodCxuKXtyZXR1cm4gdDxuPy0xOnQ+bj8xOnQ+PW4/MDpOYU59ZnVuY3Rpb24gcSh0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnJlbW92ZUF0dHJpYnV0ZSh0KX19ZnVuY3Rpb24gVSh0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnJlbW92ZUF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCl9fWZ1bmN0aW9uIEQodCxuKXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnNldEF0dHJpYnV0ZSh0LG4pfX1mdW5jdGlvbiBPKHQsbil7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5zZXRBdHRyaWJ1dGVOUyh0LnNwYWNlLHQubG9jYWwsbil9fWZ1bmN0aW9uIEYodCxuKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT1uLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtudWxsPT1lP3RoaXMucmVtb3ZlQXR0cmlidXRlKHQpOnRoaXMuc2V0QXR0cmlidXRlKHQsZSl9fWZ1bmN0aW9uIEkodCxuKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT1uLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtudWxsPT1lP3RoaXMucmVtb3ZlQXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsKTp0aGlzLnNldEF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCxlKX19ZnVuY3Rpb24gWSh0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KHQpfX1mdW5jdGlvbiBCKHQsbixlKXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnN0eWxlLnNldFByb3BlcnR5KHQsbixlKX19ZnVuY3Rpb24gaih0LG4sZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHI9bi5hcHBseSh0aGlzLGFyZ3VtZW50cyk7bnVsbD09cj90aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KHQpOnRoaXMuc3R5bGUuc2V0UHJvcGVydHkodCxyLGUpfX1mdW5jdGlvbiBIKHQpe3JldHVybiBmdW5jdGlvbigpe2RlbGV0ZSB0aGlzW3RdfX1mdW5jdGlvbiBYKHQsbil7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpc1t0XT1ufX1mdW5jdGlvbiBWKHQsbil7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9bi5hcHBseSh0aGlzLGFyZ3VtZW50cyk7bnVsbD09ZT9kZWxldGUgdGhpc1t0XTp0aGlzW3RdPWV9fWZ1bmN0aW9uIFcodCl7cmV0dXJuIHQudHJpbSgpLnNwbGl0KC9efFxzKy8pfWZ1bmN0aW9uICQodCl7cmV0dXJuIHQuY2xhc3NMaXN0fHxuZXcgWih0KX1mdW5jdGlvbiBaKHQpe3RoaXMuX25vZGU9dCx0aGlzLl9uYW1lcz1XKHQuZ2V0QXR0cmlidXRlKCJjbGFzcyIpfHwiIil9ZnVuY3Rpb24gRyh0LG4pe2Zvcih2YXIgZT0kKHQpLHI9LTEsaT1uLmxlbmd0aDsrK3I8aTspZS5hZGQobltyXSl9ZnVuY3Rpb24gSih0LG4pe2Zvcih2YXIgZT0kKHQpLHI9LTEsaT1uLmxlbmd0aDsrK3I8aTspZS5yZW1vdmUobltyXSl9ZnVuY3Rpb24gUSh0KXtyZXR1cm4gZnVuY3Rpb24oKXtHKHRoaXMsdCl9fWZ1bmN0aW9uIEsodCl7cmV0dXJuIGZ1bmN0aW9uKCl7Sih0aGlzLHQpfX1mdW5jdGlvbiB0dCh0LG4pe3JldHVybiBmdW5jdGlvbigpeyhuLmFwcGx5KHRoaXMsYXJndW1lbnRzKT9HOkopKHRoaXMsdCl9fWZ1bmN0aW9uIG50KCl7dGhpcy50ZXh0Q29udGVudD0iIn1mdW5jdGlvbiBldCh0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnRleHRDb250ZW50PXR9fWZ1bmN0aW9uIHJ0KHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBuPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO3RoaXMudGV4dENvbnRlbnQ9bnVsbD09bj8iIjpufX1mdW5jdGlvbiBpdCgpe3RoaXMuaW5uZXJIVE1MPSIifWZ1bmN0aW9uIG90KHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMuaW5uZXJIVE1MPXR9fWZ1bmN0aW9uIHV0KHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBuPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO3RoaXMuaW5uZXJIVE1MPW51bGw9PW4/IiI6bn19ZnVuY3Rpb24gYXQoKXt0aGlzLm5leHRTaWJsaW5nJiZ0aGlzLnBhcmVudE5vZGUuYXBwZW5kQ2hpbGQodGhpcyl9ZnVuY3Rpb24gY3QoKXt0aGlzLnByZXZpb3VzU2libGluZyYmdGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZSh0aGlzLHRoaXMucGFyZW50Tm9kZS5maXJzdENoaWxkKX1mdW5jdGlvbiBzdCgpe3JldHVybiBudWxsfWZ1bmN0aW9uIGZ0KCl7dmFyIHQ9dGhpcy5wYXJlbnROb2RlO3QmJnQucmVtb3ZlQ2hpbGQodGhpcyl9ZnVuY3Rpb24gbHQodCxuLGUpe3ZhciByPXNsKHQpLGk9ci5DdXN0b21FdmVudDtpP2k9bmV3IGkobixlKTooaT1yLmRvY3VtZW50LmNyZWF0ZUV2ZW50KCJFdmVudCIpLGU/KGkuaW5pdEV2ZW50KG4sZS5idWJibGVzLGUuY2FuY2VsYWJsZSksaS5kZXRhaWw9ZS5kZXRhaWwpOmkuaW5pdEV2ZW50KG4sITEsITEpKSx0LmRpc3BhdGNoRXZlbnQoaSl9ZnVuY3Rpb24gaHQodCxuKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gbHQodGhpcyx0LG4pfX1mdW5jdGlvbiBwdCh0LG4pe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBsdCh0aGlzLHQsbi5hcHBseSh0aGlzLGFyZ3VtZW50cykpfX1mdW5jdGlvbiBkdCh0LG4pe3RoaXMuX2dyb3Vwcz10LHRoaXMuX3BhcmVudHM9bn1mdW5jdGlvbiB2dCgpe3JldHVybiBuZXcgZHQoW1tkb2N1bWVudC5kb2N1bWVudEVsZW1lbnRdXSx3bCl9ZnVuY3Rpb24gX3QoKXt0LmV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpfWZ1bmN0aW9uIGd0KHQsbil7dmFyIGU9dC5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQscj1NbCh0KS5vbigiZHJhZ3N0YXJ0LmRyYWciLG51bGwpO24mJihyLm9uKCJjbGljay5kcmFnIixObCwhMCksc2V0VGltZW91dChmdW5jdGlvbigpe3Iub24oImNsaWNrLmRyYWciLG51bGwpfSwwKSksIm9uc2VsZWN0c3RhcnQiaW4gZT9yLm9uKCJzZWxlY3RzdGFydC5kcmFnIixudWxsKTooZS5zdHlsZS5Nb3pVc2VyU2VsZWN0PWUuX19ub3NlbGVjdCxkZWxldGUgZS5fX25vc2VsZWN0KX1mdW5jdGlvbiB5dCh0LG4sZSxyLGksbyx1LGEsYyxzKXt0aGlzLnRhcmdldD10LHRoaXMudHlwZT1uLHRoaXMuc3ViamVjdD1lLHRoaXMuaWRlbnRpZmllcj1yLHRoaXMuYWN0aXZlPWksdGhpcy54PW8sdGhpcy55PXUsdGhpcy5keD1hLHRoaXMuZHk9Yyx0aGlzLl89c31mdW5jdGlvbiBtdCgpe3JldHVybiF0LmV2ZW50LmJ1dHRvbn1mdW5jdGlvbiB4dCgpe3JldHVybiB0aGlzLnBhcmVudE5vZGV9ZnVuY3Rpb24gYnQobil7cmV0dXJuIG51bGw9PW4/e3g6dC5ldmVudC54LHk6dC5ldmVudC55fTpufWZ1bmN0aW9uIHd0KHQsbil7dmFyIGU9T2JqZWN0LmNyZWF0ZSh0LnByb3RvdHlwZSk7Zm9yKHZhciByIGluIG4pZVtyXT1uW3JdO3JldHVybiBlfWZ1bmN0aW9uIE10KCl7fWZ1bmN0aW9uIFR0KHQpe3ZhciBuO3JldHVybiB0PSh0KyIiKS50cmltKCkudG9Mb3dlckNhc2UoKSwobj1EbC5leGVjKHQpKT8obj1wYXJzZUludChuWzFdLDE2KSxuZXcgQXQobj4+OCYxNXxuPj40JjI0MCxuPj40JjE1fDI0MCZuLCgxNSZuKTw8NHwxNSZuLDEpKToobj1PbC5leGVjKHQpKT9rdChwYXJzZUludChuWzFdLDE2KSk6KG49RmwuZXhlYyh0KSk/bmV3IEF0KG5bMV0sblsyXSxuWzNdLDEpOihuPUlsLmV4ZWModCkpP25ldyBBdCgyNTUqblsxXS8xMDAsMjU1Km5bMl0vMTAwLDI1NSpuWzNdLzEwMCwxKToobj1ZbC5leGVjKHQpKT9TdChuWzFdLG5bMl0sblszXSxuWzRdKToobj1CbC5leGVjKHQpKT9TdCgyNTUqblsxXS8xMDAsMjU1Km5bMl0vMTAwLDI1NSpuWzNdLzEwMCxuWzRdKToobj1qbC5leGVjKHQpKT9DdChuWzFdLG5bMl0vMTAwLG5bM10vMTAwLDEpOihuPUhsLmV4ZWModCkpP0N0KG5bMV0sblsyXS8xMDAsblszXS8xMDAsbls0XSk6WGwuaGFzT3duUHJvcGVydHkodCk/a3QoWGxbdF0pOiJ0cmFuc3BhcmVudCI9PT10P25ldyBBdChOYU4sTmFOLE5hTiwwKTpudWxsfWZ1bmN0aW9uIGt0KHQpe3JldHVybiBuZXcgQXQodD4+MTYmMjU1LHQ+PjgmMjU1LDI1NSZ0LDEpfWZ1bmN0aW9uIFN0KHQsbixlLHIpe3JldHVybiByPD0wJiYodD1uPWU9TmFOKSxuZXcgQXQodCxuLGUscil9ZnVuY3Rpb24gTnQodCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBNdHx8KHQ9VHQodCkpLHQ/KHQ9dC5yZ2IoKSxuZXcgQXQodC5yLHQuZyx0LmIsdC5vcGFjaXR5KSk6bmV3IEF0fWZ1bmN0aW9uIEV0KHQsbixlLHIpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9OdCh0KTpuZXcgQXQodCxuLGUsbnVsbD09cj8xOnIpfWZ1bmN0aW9uIEF0KHQsbixlLHIpe3RoaXMucj0rdCx0aGlzLmc9K24sdGhpcy5iPStlLHRoaXMub3BhY2l0eT0rcn1mdW5jdGlvbiBDdCh0LG4sZSxyKXtyZXR1cm4gcjw9MD90PW49ZT1OYU46ZTw9MHx8ZT49MT90PW49TmFOOm48PTAmJih0PU5hTiksbmV3IFJ0KHQsbixlLHIpfWZ1bmN0aW9uIHp0KHQpe2lmKHQgaW5zdGFuY2VvZiBSdClyZXR1cm4gbmV3IFJ0KHQuaCx0LnMsdC5sLHQub3BhY2l0eSk7aWYodCBpbnN0YW5jZW9mIE10fHwodD1UdCh0KSksIXQpcmV0dXJuIG5ldyBSdDtpZih0IGluc3RhbmNlb2YgUnQpcmV0dXJuIHQ7dD10LnJnYigpO3ZhciBuPXQuci8yNTUsZT10LmcvMjU1LHI9dC5iLzI1NSxpPU1hdGgubWluKG4sZSxyKSxvPU1hdGgubWF4KG4sZSxyKSx1PU5hTixhPW8taSxjPShvK2kpLzI7cmV0dXJuIGE/KHU9bj09PW8/KGUtcikvYSs2KihlPHIpOmU9PT1vPyhyLW4pL2ErMjoobi1lKS9hKzQsYS89YzwuNT9vK2k6Mi1vLWksdSo9NjApOmE9Yz4wJiZjPDE/MDp1LG5ldyBSdCh1LGEsYyx0Lm9wYWNpdHkpfWZ1bmN0aW9uIFB0KHQsbixlLHIpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD96dCh0KTpuZXcgUnQodCxuLGUsbnVsbD09cj8xOnIpfWZ1bmN0aW9uIFJ0KHQsbixlLHIpe3RoaXMuaD0rdCx0aGlzLnM9K24sdGhpcy5sPStlLHRoaXMub3BhY2l0eT0rcn1mdW5jdGlvbiBMdCh0LG4sZSl7cmV0dXJuIDI1NSoodDw2MD9uKyhlLW4pKnQvNjA6dDwxODA/ZTp0PDI0MD9uKyhlLW4pKigyNDAtdCkvNjA6bil9ZnVuY3Rpb24gcXQodCl7aWYodCBpbnN0YW5jZW9mIER0KXJldHVybiBuZXcgRHQodC5sLHQuYSx0LmIsdC5vcGFjaXR5KTtpZih0IGluc3RhbmNlb2YgSHQpe3ZhciBuPXQuaCpWbDtyZXR1cm4gbmV3IER0KHQubCxNYXRoLmNvcyhuKSp0LmMsTWF0aC5zaW4obikqdC5jLHQub3BhY2l0eSl9dCBpbnN0YW5jZW9mIEF0fHwodD1OdCh0KSk7dmFyIGU9WXQodC5yKSxyPVl0KHQuZyksaT1ZdCh0LmIpLG89T3QoKC40MTI0NTY0KmUrLjM1NzU3NjEqcisuMTgwNDM3NSppKS9abCksdT1PdCgoLjIxMjY3MjkqZSsuNzE1MTUyMipyKy4wNzIxNzUqaSkvR2wpO3JldHVybiBuZXcgRHQoMTE2KnUtMTYsNTAwKihvLXUpLDIwMCoodS1PdCgoLjAxOTMzMzkqZSsuMTE5MTkyKnIrLjk1MDMwNDEqaSkvSmwpKSx0Lm9wYWNpdHkpfWZ1bmN0aW9uIFV0KHQsbixlLHIpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9xdCh0KTpuZXcgRHQodCxuLGUsbnVsbD09cj8xOnIpfWZ1bmN0aW9uIER0KHQsbixlLHIpe3RoaXMubD0rdCx0aGlzLmE9K24sdGhpcy5iPStlLHRoaXMub3BhY2l0eT0rcn1mdW5jdGlvbiBPdCh0KXtyZXR1cm4gdD5uaD9NYXRoLnBvdyh0LDEvMyk6dC90aCtRbH1mdW5jdGlvbiBGdCh0KXtyZXR1cm4gdD5LbD90KnQqdDp0aCoodC1RbCl9ZnVuY3Rpb24gSXQodCl7cmV0dXJuIDI1NSoodDw9LjAwMzEzMDg/MTIuOTIqdDoxLjA1NSpNYXRoLnBvdyh0LDEvMi40KS0uMDU1KX1mdW5jdGlvbiBZdCh0KXtyZXR1cm4odC89MjU1KTw9LjA0MDQ1P3QvMTIuOTI6TWF0aC5wb3coKHQrLjA1NSkvMS4wNTUsMi40KX1mdW5jdGlvbiBCdCh0KXtpZih0IGluc3RhbmNlb2YgSHQpcmV0dXJuIG5ldyBIdCh0LmgsdC5jLHQubCx0Lm9wYWNpdHkpO3QgaW5zdGFuY2VvZiBEdHx8KHQ9cXQodCkpO3ZhciBuPU1hdGguYXRhbjIodC5iLHQuYSkqV2w7cmV0dXJuIG5ldyBIdChuPDA/biszNjA6bixNYXRoLnNxcnQodC5hKnQuYSt0LmIqdC5iKSx0LmwsdC5vcGFjaXR5KX1mdW5jdGlvbiBqdCh0LG4sZSxyKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/QnQodCk6bmV3IEh0KHQsbixlLG51bGw9PXI/MTpyKX1mdW5jdGlvbiBIdCh0LG4sZSxyKXt0aGlzLmg9K3QsdGhpcy5jPStuLHRoaXMubD0rZSx0aGlzLm9wYWNpdHk9K3J9ZnVuY3Rpb24gWHQodCl7aWYodCBpbnN0YW5jZW9mIFd0KXJldHVybiBuZXcgV3QodC5oLHQucyx0LmwsdC5vcGFjaXR5KTt0IGluc3RhbmNlb2YgQXR8fCh0PU50KHQpKTt2YXIgbj10LnIvMjU1LGU9dC5nLzI1NSxyPXQuYi8yNTUsaT0oc2gqcithaCpuLWNoKmUpLyhzaCthaC1jaCksbz1yLWksdT0odWgqKGUtaSktaWgqbykvb2gsYT1NYXRoLnNxcnQodSp1K28qbykvKHVoKmkqKDEtaSkpLGM9YT9NYXRoLmF0YW4yKHUsbykqV2wtMTIwOk5hTjtyZXR1cm4gbmV3IFd0KGM8MD9jKzM2MDpjLGEsaSx0Lm9wYWNpdHkpfWZ1bmN0aW9uIFZ0KHQsbixlLHIpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9YdCh0KTpuZXcgV3QodCxuLGUsbnVsbD09cj8xOnIpfWZ1bmN0aW9uIFd0KHQsbixlLHIpe3RoaXMuaD0rdCx0aGlzLnM9K24sdGhpcy5sPStlLHRoaXMub3BhY2l0eT0rcn1mdW5jdGlvbiAkdCh0LG4sZSxyLGkpe3ZhciBvPXQqdCx1PW8qdDtyZXR1cm4oKDEtMyp0KzMqby11KSpuKyg0LTYqbyszKnUpKmUrKDErMyp0KzMqby0zKnUpKnIrdSppKS82fWZ1bmN0aW9uIFp0KHQsbil7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiB0K2Uqbn19ZnVuY3Rpb24gR3QodCxuLGUpe3JldHVybiB0PU1hdGgucG93KHQsZSksbj1NYXRoLnBvdyhuLGUpLXQsZT0xL2UsZnVuY3Rpb24ocil7cmV0dXJuIE1hdGgucG93KHQrcipuLGUpfX1mdW5jdGlvbiBKdCh0LG4pe3ZhciBlPW4tdDtyZXR1cm4gZT9adCh0LGU+MTgwfHxlPC0xODA/ZS0zNjAqTWF0aC5yb3VuZChlLzM2MCk6ZSk6eWgoaXNOYU4odCk/bjp0KX1mdW5jdGlvbiBRdCh0KXtyZXR1cm4gMT09PSh0PSt0KT9LdDpmdW5jdGlvbihuLGUpe3JldHVybiBlLW4/R3QobixlLHQpOnloKGlzTmFOKG4pP2U6bil9fWZ1bmN0aW9uIEt0KHQsbil7dmFyIGU9bi10O3JldHVybiBlP1p0KHQsZSk6eWgoaXNOYU4odCk/bjp0KX1mdW5jdGlvbiB0bih0KXtyZXR1cm4gZnVuY3Rpb24obil7dmFyIGUscixpPW4ubGVuZ3RoLG89bmV3IEFycmF5KGkpLHU9bmV3IEFycmF5KGkpLGE9bmV3IEFycmF5KGkpO2ZvcihlPTA7ZTxpOysrZSlyPUV0KG5bZV0pLG9bZV09ci5yfHwwLHVbZV09ci5nfHwwLGFbZV09ci5ifHwwO3JldHVybiBvPXQobyksdT10KHUpLGE9dChhKSxyLm9wYWNpdHk9MSxmdW5jdGlvbih0KXtyZXR1cm4gci5yPW8odCksci5nPXUodCksci5iPWEodCkscisiIn19fWZ1bmN0aW9uIG5uKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0fX1mdW5jdGlvbiBlbih0KXtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIHQobikrIiJ9fWZ1bmN0aW9uIHJuKHQpe3JldHVybiJub25lIj09PXQ/UGg6KGZofHwoZmg9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiRElWIiksbGg9ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LGhoPWRvY3VtZW50LmRlZmF1bHRWaWV3KSxmaC5zdHlsZS50cmFuc2Zvcm09dCx0PWhoLmdldENvbXB1dGVkU3R5bGUobGguYXBwZW5kQ2hpbGQoZmgpLG51bGwpLmdldFByb3BlcnR5VmFsdWUoInRyYW5zZm9ybSIpLGxoLnJlbW92ZUNoaWxkKGZoKSx0PXQuc2xpY2UoNywtMSkuc3BsaXQoIiwiKSxSaCgrdFswXSwrdFsxXSwrdFsyXSwrdFszXSwrdFs0XSwrdFs1XSkpfWZ1bmN0aW9uIG9uKHQpe3JldHVybiBudWxsPT10P1BoOihwaHx8KHBoPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCJnIikpLHBoLnNldEF0dHJpYnV0ZSgidHJhbnNmb3JtIix0KSwodD1waC50cmFuc2Zvcm0uYmFzZVZhbC5jb25zb2xpZGF0ZSgpKT8odD10Lm1hdHJpeCxSaCh0LmEsdC5iLHQuYyx0LmQsdC5lLHQuZikpOlBoKX1mdW5jdGlvbiB1bih0LG4sZSxyKXtmdW5jdGlvbiBpKHQpe3JldHVybiB0Lmxlbmd0aD90LnBvcCgpKyIgIjoiIn1mdW5jdGlvbiBvKHQscixpLG8sdSxhKXtpZih0IT09aXx8ciE9PW8pe3ZhciBjPXUucHVzaCgidHJhbnNsYXRlKCIsbnVsbCxuLG51bGwsZSk7YS5wdXNoKHtpOmMtNCx4OlRoKHQsaSl9LHtpOmMtMix4OlRoKHIsbyl9KX1lbHNlKGl8fG8pJiZ1LnB1c2goInRyYW5zbGF0ZSgiK2krbitvK2UpfWZ1bmN0aW9uIHUodCxuLGUsbyl7dCE9PW4/KHQtbj4xODA/bis9MzYwOm4tdD4xODAmJih0Kz0zNjApLG8ucHVzaCh7aTplLnB1c2goaShlKSsicm90YXRlKCIsbnVsbCxyKS0yLHg6VGgodCxuKX0pKTpuJiZlLnB1c2goaShlKSsicm90YXRlKCIrbityKX1mdW5jdGlvbiBhKHQsbixlLG8pe3QhPT1uP28ucHVzaCh7aTplLnB1c2goaShlKSsic2tld1goIixudWxsLHIpLTIseDpUaCh0LG4pfSk6biYmZS5wdXNoKGkoZSkrInNrZXdYKCIrbityKX1mdW5jdGlvbiBjKHQsbixlLHIsbyx1KXtpZih0IT09ZXx8biE9PXIpe3ZhciBhPW8ucHVzaChpKG8pKyJzY2FsZSgiLG51bGwsIiwiLG51bGwsIikiKTt1LnB1c2goe2k6YS00LHg6VGgodCxlKX0se2k6YS0yLHg6VGgobixyKX0pfWVsc2UgMT09PWUmJjE9PT1yfHxvLnB1c2goaShvKSsic2NhbGUoIitlKyIsIityKyIpIil9cmV0dXJuIGZ1bmN0aW9uKG4sZSl7dmFyIHI9W10saT1bXTtyZXR1cm4gbj10KG4pLGU9dChlKSxvKG4udHJhbnNsYXRlWCxuLnRyYW5zbGF0ZVksZS50cmFuc2xhdGVYLGUudHJhbnNsYXRlWSxyLGkpLHUobi5yb3RhdGUsZS5yb3RhdGUscixpKSxhKG4uc2tld1gsZS5za2V3WCxyLGkpLGMobi5zY2FsZVgsbi5zY2FsZVksZS5zY2FsZVgsZS5zY2FsZVkscixpKSxuPWU9bnVsbCxmdW5jdGlvbih0KXtmb3IodmFyIG4sZT0tMSxvPWkubGVuZ3RoOysrZTxvOylyWyhuPWlbZV0pLmldPW4ueCh0KTtyZXR1cm4gci5qb2luKCIiKX19fWZ1bmN0aW9uIGFuKHQpe3JldHVybigodD1NYXRoLmV4cCh0KSkrMS90KS8yfWZ1bmN0aW9uIGNuKHQpe3JldHVybigodD1NYXRoLmV4cCh0KSktMS90KS8yfWZ1bmN0aW9uIHNuKHQpe3JldHVybigodD1NYXRoLmV4cCgyKnQpKS0xKS8odCsxKX1mdW5jdGlvbiBmbih0KXtyZXR1cm4gZnVuY3Rpb24obixlKXt2YXIgcj10KChuPVB0KG4pKS5oLChlPVB0KGUpKS5oKSxpPUt0KG4ucyxlLnMpLG89S3Qobi5sLGUubCksdT1LdChuLm9wYWNpdHksZS5vcGFjaXR5KTtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIG4uaD1yKHQpLG4ucz1pKHQpLG4ubD1vKHQpLG4ub3BhY2l0eT11KHQpLG4rIiJ9fX1mdW5jdGlvbiBsbih0LG4pe3ZhciBlPUt0KCh0PVV0KHQpKS5sLChuPVV0KG4pKS5sKSxyPUt0KHQuYSxuLmEpLGk9S3QodC5iLG4uYiksbz1LdCh0Lm9wYWNpdHksbi5vcGFjaXR5KTtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIHQubD1lKG4pLHQuYT1yKG4pLHQuYj1pKG4pLHQub3BhY2l0eT1vKG4pLHQrIiJ9fWZ1bmN0aW9uIGhuKHQpe3JldHVybiBmdW5jdGlvbihuLGUpe3ZhciByPXQoKG49anQobikpLmgsKGU9anQoZSkpLmgpLGk9S3Qobi5jLGUuYyksbz1LdChuLmwsZS5sKSx1PUt0KG4ub3BhY2l0eSxlLm9wYWNpdHkpO3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gbi5oPXIodCksbi5jPWkodCksbi5sPW8odCksbi5vcGFjaXR5PXUodCksbisiIn19fWZ1bmN0aW9uIHBuKHQpe3JldHVybiBmdW5jdGlvbiBuKGUpe2Z1bmN0aW9uIHIobixyKXt2YXIgaT10KChuPVZ0KG4pKS5oLChyPVZ0KHIpKS5oKSxvPUt0KG4ucyxyLnMpLHU9S3Qobi5sLHIubCksYT1LdChuLm9wYWNpdHksci5vcGFjaXR5KTtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIG4uaD1pKHQpLG4ucz1vKHQpLG4ubD11KE1hdGgucG93KHQsZSkpLG4ub3BhY2l0eT1hKHQpLG4rIiJ9fXJldHVybiBlPStlLHIuZ2FtbWE9bixyfSgxKX1mdW5jdGlvbiBkbigpe3JldHVybiBLaHx8KGVwKHZuKSxLaD1ucC5ub3coKSt0cCl9ZnVuY3Rpb24gdm4oKXtLaD0wfWZ1bmN0aW9uIF9uKCl7dGhpcy5fY2FsbD10aGlzLl90aW1lPXRoaXMuX25leHQ9bnVsbH1mdW5jdGlvbiBnbih0LG4sZSl7dmFyIHI9bmV3IF9uO3JldHVybiByLnJlc3RhcnQodCxuLGUpLHJ9ZnVuY3Rpb24geW4oKXtkbigpLCsrJGg7Zm9yKHZhciB0LG49ZGg7bjspKHQ9S2gtbi5fdGltZSk+PTAmJm4uX2NhbGwuY2FsbChudWxsLHQpLG49bi5fbmV4dDstLSRofWZ1bmN0aW9uIG1uKCl7S2g9KFFoPW5wLm5vdygpKSt0cCwkaD1aaD0wO3RyeXt5bigpfWZpbmFsbHl7JGg9MCxibigpLEtoPTB9fWZ1bmN0aW9uIHhuKCl7dmFyIHQ9bnAubm93KCksbj10LVFoO24+SmgmJih0cC09bixRaD10KX1mdW5jdGlvbiBibigpe2Zvcih2YXIgdCxuLGU9ZGgscj0xLzA7ZTspZS5fY2FsbD8ocj5lLl90aW1lJiYocj1lLl90aW1lKSx0PWUsZT1lLl9uZXh0KToobj1lLl9uZXh0LGUuX25leHQ9bnVsbCxlPXQ/dC5fbmV4dD1uOmRoPW4pO3ZoPXQsd24ocil9ZnVuY3Rpb24gd24odCl7aWYoISRoKXtaaCYmKFpoPWNsZWFyVGltZW91dChaaCkpO3ZhciBuPXQtS2g7bj4yND8odDwxLzAmJihaaD1zZXRUaW1lb3V0KG1uLG4pKSxHaCYmKEdoPWNsZWFySW50ZXJ2YWwoR2gpKSk6KEdofHwoUWg9S2gsR2g9c2V0SW50ZXJ2YWwoeG4sSmgpKSwkaD0xLGVwKG1uKSl9fWZ1bmN0aW9uIE1uKHQsbil7dmFyIGU9dC5fX3RyYW5zaXRpb247aWYoIWV8fCEoZT1lW25dKXx8ZS5zdGF0ZT5hcCl0aHJvdyBuZXcgRXJyb3IoInRvbyBsYXRlIik7cmV0dXJuIGV9ZnVuY3Rpb24gVG4odCxuKXt2YXIgZT10Ll9fdHJhbnNpdGlvbjtpZighZXx8IShlPWVbbl0pfHxlLnN0YXRlPnNwKXRocm93IG5ldyBFcnJvcigidG9vIGxhdGUiKTtyZXR1cm4gZX1mdW5jdGlvbiBrbih0LG4pe3ZhciBlPXQuX190cmFuc2l0aW9uO2lmKCFlfHwhKGU9ZVtuXSkpdGhyb3cgbmV3IEVycm9yKCJ0b28gbGF0ZSIpO3JldHVybiBlfWZ1bmN0aW9uIFNuKHQsbixlKXtmdW5jdGlvbiByKHQpe2Uuc3RhdGU9Y3AsZS50aW1lci5yZXN0YXJ0KGksZS5kZWxheSxlLnRpbWUpLGUuZGVsYXk8PXQmJmkodC1lLmRlbGF5KX1mdW5jdGlvbiBpKHIpe3ZhciBzLGYsbCxoO2lmKGUuc3RhdGUhPT1jcClyZXR1cm4gdSgpO2ZvcihzIGluIGMpaWYoaD1jW3NdLGgubmFtZT09PWUubmFtZSl7aWYoaC5zdGF0ZT09PWZwKXJldHVybiBycChpKTtoLnN0YXRlPT09bHA/KGguc3RhdGU9cHAsaC50aW1lci5zdG9wKCksaC5vbi5jYWxsKCJpbnRlcnJ1cHQiLHQsdC5fX2RhdGFfXyxoLmluZGV4LGguZ3JvdXApLGRlbGV0ZSBjW3NdKTorczxuJiYoaC5zdGF0ZT1wcCxoLnRpbWVyLnN0b3AoKSxkZWxldGUgY1tzXSl9aWYocnAoZnVuY3Rpb24oKXtlLnN0YXRlPT09ZnAmJihlLnN0YXRlPWxwLGUudGltZXIucmVzdGFydChvLGUuZGVsYXksZS50aW1lKSxvKHIpKX0pLGUuc3RhdGU9c3AsZS5vbi5jYWxsKCJzdGFydCIsdCx0Ll9fZGF0YV9fLGUuaW5kZXgsZS5ncm91cCksZS5zdGF0ZT09PXNwKXtmb3IoZS5zdGF0ZT1mcCxhPW5ldyBBcnJheShsPWUudHdlZW4ubGVuZ3RoKSxzPTAsZj0tMTtzPGw7KytzKShoPWUudHdlZW5bc10udmFsdWUuY2FsbCh0LHQuX19kYXRhX18sZS5pbmRleCxlLmdyb3VwKSkmJihhWysrZl09aCk7YS5sZW5ndGg9ZisxfX1mdW5jdGlvbiBvKG4pe2Zvcih2YXIgcj1uPGUuZHVyYXRpb24/ZS5lYXNlLmNhbGwobnVsbCxuL2UuZHVyYXRpb24pOihlLnRpbWVyLnJlc3RhcnQodSksZS5zdGF0ZT1ocCwxKSxpPS0xLG89YS5sZW5ndGg7KytpPG87KWFbaV0uY2FsbChudWxsLHIpO2Uuc3RhdGU9PT1ocCYmKGUub24uY2FsbCgiZW5kIix0LHQuX19kYXRhX18sZS5pbmRleCxlLmdyb3VwKSx1KCkpfWZ1bmN0aW9uIHUoKXtlLnN0YXRlPXBwLGUudGltZXIuc3RvcCgpLGRlbGV0ZSBjW25dO2Zvcih2YXIgciBpbiBjKXJldHVybjtkZWxldGUgdC5fX3RyYW5zaXRpb259dmFyIGEsYz10Ll9fdHJhbnNpdGlvbjtjW25dPWUsZS50aW1lcj1nbihyLDAsZS50aW1lKX1mdW5jdGlvbiBObih0LG4pe3ZhciBlLHI7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGk9VG4odGhpcyx0KSxvPWkudHdlZW47aWYobyE9PWUpe3I9ZT1vO2Zvcih2YXIgdT0wLGE9ci5sZW5ndGg7dTxhOysrdSlpZihyW3VdLm5hbWU9PT1uKXtyPXIuc2xpY2UoKSxyLnNwbGljZSh1LDEpO2JyZWFrfX1pLnR3ZWVuPXJ9fWZ1bmN0aW9uIEVuKHQsbixlKXt2YXIgcixpO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlKXRocm93IG5ldyBFcnJvcjtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbz1Ubih0aGlzLHQpLHU9by50d2VlbjtpZih1IT09cil7aT0ocj11KS5zbGljZSgpO2Zvcih2YXIgYT17bmFtZTpuLHZhbHVlOmV9LGM9MCxzPWkubGVuZ3RoO2M8czsrK2MpaWYoaVtjXS5uYW1lPT09bil7aVtjXT1hO2JyZWFrfWM9PT1zJiZpLnB1c2goYSl9by50d2Vlbj1pfX1mdW5jdGlvbiBBbih0LG4sZSl7dmFyIHI9dC5faWQ7cmV0dXJuIHQuZWFjaChmdW5jdGlvbigpe3ZhciB0PVRuKHRoaXMscik7KHQudmFsdWV8fCh0LnZhbHVlPXt9KSlbbl09ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KSxmdW5jdGlvbih0KXtyZXR1cm4ga24odCxyKS52YWx1ZVtuXX19ZnVuY3Rpb24gQ24odCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5yZW1vdmVBdHRyaWJ1dGUodCl9fWZ1bmN0aW9uIHpuKHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMucmVtb3ZlQXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsKX19ZnVuY3Rpb24gUG4odCxuLGUpe3ZhciByLGk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG89dGhpcy5nZXRBdHRyaWJ1dGUodCk7cmV0dXJuIG89PT1lP251bGw6bz09PXI/aTppPW4ocj1vLGUpfX1mdW5jdGlvbiBSbih0LG4sZSl7dmFyIHIsaTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbz10aGlzLmdldEF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCk7cmV0dXJuIG89PT1lP251bGw6bz09PXI/aTppPW4ocj1vLGUpfX1mdW5jdGlvbiBMbih0LG4sZSl7dmFyIHIsaSxvO3JldHVybiBmdW5jdGlvbigpe3ZhciB1LGE9ZSh0aGlzKTtyZXR1cm4gbnVsbD09YT92b2lkIHRoaXMucmVtb3ZlQXR0cmlidXRlKHQpOih1PXRoaXMuZ2V0QXR0cmlidXRlKHQpLHU9PT1hP251bGw6dT09PXImJmE9PT1pP286bz1uKHI9dSxpPWEpKX19ZnVuY3Rpb24gcW4odCxuLGUpe3ZhciByLGksbztyZXR1cm4gZnVuY3Rpb24oKXt2YXIgdSxhPWUodGhpcyk7cmV0dXJuIG51bGw9PWE/dm9pZCB0aGlzLnJlbW92ZUF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCk6KHU9dGhpcy5nZXRBdHRyaWJ1dGVOUyh0LnNwYWNlLHQubG9jYWwpLHU9PT1hP251bGw6dT09PXImJmE9PT1pP286bz1uKHI9dSxpPWEpKX19ZnVuY3Rpb24gVW4odCxuKXtmdW5jdGlvbiBlKCl7dmFyIGU9dGhpcyxyPW4uYXBwbHkoZSxhcmd1bWVudHMpO3JldHVybiByJiZmdW5jdGlvbihuKXtlLnNldEF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCxyKG4pKX19cmV0dXJuIGUuX3ZhbHVlPW4sZX1mdW5jdGlvbiBEbih0LG4pe2Z1bmN0aW9uIGUoKXt2YXIgZT10aGlzLHI9bi5hcHBseShlLGFyZ3VtZW50cyk7cmV0dXJuIHImJmZ1bmN0aW9uKG4pe2Uuc2V0QXR0cmlidXRlKHQscihuKSl9fXJldHVybiBlLl92YWx1ZT1uLGV9ZnVuY3Rpb24gT24odCxuKXtyZXR1cm4gZnVuY3Rpb24oKXtNbih0aGlzLHQpLmRlbGF5PStuLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19ZnVuY3Rpb24gRm4odCxuKXtyZXR1cm4gbj0rbixmdW5jdGlvbigpe01uKHRoaXMsdCkuZGVsYXk9bn19ZnVuY3Rpb24gSW4odCxuKXtyZXR1cm4gZnVuY3Rpb24oKXtUbih0aGlzLHQpLmR1cmF0aW9uPStuLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19ZnVuY3Rpb24gWW4odCxuKXtyZXR1cm4gbj0rbixmdW5jdGlvbigpe1RuKHRoaXMsdCkuZHVyYXRpb249bn19ZnVuY3Rpb24gQm4odCxuKXtpZigiZnVuY3Rpb24iIT10eXBlb2Ygbil0aHJvdyBuZXcgRXJyb3I7cmV0dXJuIGZ1bmN0aW9uKCl7VG4odGhpcyx0KS5lYXNlPW59fWZ1bmN0aW9uIGpuKHQpe3JldHVybih0KyIiKS50cmltKCkuc3BsaXQoL158XHMrLykuZXZlcnkoZnVuY3Rpb24odCl7dmFyIG49dC5pbmRleE9mKCIuIik7cmV0dXJuIG4+PTAmJih0PXQuc2xpY2UoMCxuKSksIXR8fCJzdGFydCI9PT10fSl9ZnVuY3Rpb24gSG4odCxuLGUpe3ZhciByLGksbz1qbihuKT9NbjpUbjtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgdT1vKHRoaXMsdCksYT11Lm9uO2EhPT1yJiYoaT0ocj1hKS5jb3B5KCkpLm9uKG4sZSksdS5vbj1pfX1mdW5jdGlvbiBYbih0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbj10aGlzLnBhcmVudE5vZGU7Zm9yKHZhciBlIGluIHRoaXMuX190cmFuc2l0aW9uKWlmKCtlIT09dClyZXR1cm47biYmbi5yZW1vdmVDaGlsZCh0aGlzKX19ZnVuY3Rpb24gVm4odCxuKXt2YXIgZSxyLGk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG89c2wodGhpcykuZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLG51bGwpLHU9by5nZXRQcm9wZXJ0eVZhbHVlKHQpLGE9KHRoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkodCksby5nZXRQcm9wZXJ0eVZhbHVlKHQpKTtyZXR1cm4gdT09PWE/bnVsbDp1PT09ZSYmYT09PXI/aTppPW4oZT11LHI9YSl9fWZ1bmN0aW9uIFduKHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkodCl9fWZ1bmN0aW9uICRuKHQsbixlKXt2YXIgcixpO3JldHVybiBmdW5jdGlvbigpe3ZhciBvPXNsKHRoaXMpLmdldENvbXB1dGVkU3R5bGUodGhpcyxudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKHQpO3JldHVybiBvPT09ZT9udWxsOm89PT1yP2k6aT1uKHI9byxlKX19ZnVuY3Rpb24gWm4odCxuLGUpe3ZhciByLGksbztyZXR1cm4gZnVuY3Rpb24oKXt2YXIgdT1zbCh0aGlzKS5nZXRDb21wdXRlZFN0eWxlKHRoaXMsbnVsbCksYT11LmdldFByb3BlcnR5VmFsdWUodCksYz1lKHRoaXMpO3JldHVybiBudWxsPT1jJiYodGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eSh0KSxjPXUuZ2V0UHJvcGVydHlWYWx1ZSh0KSksYT09PWM/bnVsbDphPT09ciYmYz09PWk/bzpvPW4ocj1hLGk9Yyl9fWZ1bmN0aW9uIEduKHQsbixlKXtmdW5jdGlvbiByKCl7dmFyIHI9dGhpcyxpPW4uYXBwbHkocixhcmd1bWVudHMpO3JldHVybiBpJiZmdW5jdGlvbihuKXtyLnN0eWxlLnNldFByb3BlcnR5KHQsaShuKSxlKX19cmV0dXJuIHIuX3ZhbHVlPW4scn1mdW5jdGlvbiBKbih0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnRleHRDb250ZW50PXR9fWZ1bmN0aW9uIFFuKHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBuPXQodGhpcyk7dGhpcy50ZXh0Q29udGVudD1udWxsPT1uPyIiOm59fWZ1bmN0aW9uIEtuKHQsbixlLHIpe3RoaXMuX2dyb3Vwcz10LHRoaXMuX3BhcmVudHM9bix0aGlzLl9uYW1lPWUsdGhpcy5faWQ9cn1mdW5jdGlvbiB0ZSh0KXtyZXR1cm4gdnQoKS50cmFuc2l0aW9uKHQpfWZ1bmN0aW9uIG5lKCl7cmV0dXJuKytVcH1mdW5jdGlvbiBlZSh0KXtyZXR1cm4rdH1mdW5jdGlvbiByZSh0KXtyZXR1cm4gdCp0fWZ1bmN0aW9uIGllKHQpe3JldHVybiB0KigyLXQpfWZ1bmN0aW9uIG9lKHQpe3JldHVybigodCo9Mik8PTE/dCp0Oi0tdCooMi10KSsxKS8yfWZ1bmN0aW9uIHVlKHQpe3JldHVybiB0KnQqdH1mdW5jdGlvbiBhZSh0KXtyZXR1cm4tLXQqdCp0KzF9ZnVuY3Rpb24gY2UodCl7cmV0dXJuKCh0Kj0yKTw9MT90KnQqdDoodC09MikqdCp0KzIpLzJ9ZnVuY3Rpb24gc2UodCl7cmV0dXJuIDEtTWF0aC5jb3ModCpqcCl9ZnVuY3Rpb24gZmUodCl7cmV0dXJuIE1hdGguc2luKHQqanApfWZ1bmN0aW9uIGxlKHQpe3JldHVybigxLU1hdGguY29zKEJwKnQpKS8yfWZ1bmN0aW9uIGhlKHQpe3JldHVybiBNYXRoLnBvdygyLDEwKnQtMTApfWZ1bmN0aW9uIHBlKHQpe3JldHVybiAxLU1hdGgucG93KDIsLTEwKnQpfWZ1bmN0aW9uIGRlKHQpe3JldHVybigodCo9Mik8PTE/TWF0aC5wb3coMiwxMCp0LTEwKToyLU1hdGgucG93KDIsMTAtMTAqdCkpLzJ9ZnVuY3Rpb24gdmUodCl7cmV0dXJuIDEtTWF0aC5zcXJ0KDEtdCp0KX1mdW5jdGlvbiBfZSh0KXtyZXR1cm4gTWF0aC5zcXJ0KDEtIC0tdCp0KX1mdW5jdGlvbiBnZSh0KXtyZXR1cm4oKHQqPTIpPD0xPzEtTWF0aC5zcXJ0KDEtdCp0KTpNYXRoLnNxcnQoMS0odC09MikqdCkrMSkvMn1mdW5jdGlvbiB5ZSh0KXtyZXR1cm4gMS1tZSgxLXQpfWZ1bmN0aW9uIG1lKHQpe3JldHVybih0PSt0KTxIcD9LcCp0KnQ6dDxWcD9LcCoodC09WHApKnQrV3A6dDxacD9LcCoodC09JHApKnQrR3A6S3AqKHQtPUpwKSp0K1FwfWZ1bmN0aW9uIHhlKHQpe3JldHVybigodCo9Mik8PTE/MS1tZSgxLXQpOm1lKHQtMSkrMSkvMn1mdW5jdGlvbiBiZSh0LG4pe2Zvcih2YXIgZTshKGU9dC5fX3RyYW5zaXRpb24pfHwhKGU9ZVtuXSk7KWlmKCEodD10LnBhcmVudE5vZGUpKXJldHVybiBmZC50aW1lPWRuKCksZmQ7cmV0dXJuIGV9ZnVuY3Rpb24gd2UoKXt0LmV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpfWZ1bmN0aW9uIE1lKHQpe3JldHVybnt0eXBlOnR9fWZ1bmN0aW9uIFRlKCl7cmV0dXJuIXQuZXZlbnQuYnV0dG9ufWZ1bmN0aW9uIGtlKCl7dmFyIHQ9dGhpcy5vd25lclNWR0VsZW1lbnR8fHRoaXM7cmV0dXJuW1swLDBdLFt0LndpZHRoLmJhc2VWYWwudmFsdWUsdC5oZWlnaHQuYmFzZVZhbC52YWx1ZV1dfWZ1bmN0aW9uIFNlKHQpe2Zvcig7IXQuX19icnVzaDspaWYoISh0PXQucGFyZW50Tm9kZSkpcmV0dXJuO3JldHVybiB0Ll9fYnJ1c2h9ZnVuY3Rpb24gTmUodCl7cmV0dXJuIHRbMF1bMF09PT10WzFdWzBdfHx0WzBdWzFdPT09dFsxXVsxXX1mdW5jdGlvbiBFZSh0KXt2YXIgbj10Ll9fYnJ1c2g7cmV0dXJuIG4/bi5kaW0ub3V0cHV0KG4uc2VsZWN0aW9uKTpudWxsfWZ1bmN0aW9uIEFlKCl7cmV0dXJuIHplKGJkKX1mdW5jdGlvbiBDZSgpe3JldHVybiB6ZSh3ZCl9ZnVuY3Rpb24gemUobil7ZnVuY3Rpb24gZSh0KXt2YXIgZT10LnByb3BlcnR5KCJfX2JydXNoIixhKS5zZWxlY3RBbGwoIi5vdmVybGF5IikuZGF0YShbTWUoIm92ZXJsYXkiKV0pO2UuZW50ZXIoKS5hcHBlbmQoInJlY3QiKS5hdHRyKCJjbGFzcyIsIm92ZXJsYXkiKS5hdHRyKCJwb2ludGVyLWV2ZW50cyIsImFsbCIpLmF0dHIoImN1cnNvciIsVGQub3ZlcmxheSkubWVyZ2UoZSkuZWFjaChmdW5jdGlvbigpe3ZhciB0PVNlKHRoaXMpLmV4dGVudDtNbCh0aGlzKS5hdHRyKCJ4Iix0WzBdWzBdKS5hdHRyKCJ5Iix0WzBdWzFdKS5hdHRyKCJ3aWR0aCIsdFsxXVswXS10WzBdWzBdKS5hdHRyKCJoZWlnaHQiLHRbMV1bMV0tdFswXVsxXSl9KSx0LnNlbGVjdEFsbCgiLnNlbGVjdGlvbiIpLmRhdGEoW01lKCJzZWxlY3Rpb24iKV0pLmVudGVyKCkuYXBwZW5kKCJyZWN0IikuYXR0cigiY2xhc3MiLCJzZWxlY3Rpb24iKS5hdHRyKCJjdXJzb3IiLFRkLnNlbGVjdGlvbikuYXR0cigiZmlsbCIsIiM3NzciKS5hdHRyKCJmaWxsLW9wYWNpdHkiLC4zKS5hdHRyKCJzdHJva2UiLCIjZmZmIikuYXR0cigic2hhcGUtcmVuZGVyaW5nIiwiY3Jpc3BFZGdlcyIpO3ZhciBpPXQuc2VsZWN0QWxsKCIuaGFuZGxlIikuZGF0YShuLmhhbmRsZXMsZnVuY3Rpb24odCl7cmV0dXJuIHQudHlwZX0pO2kuZXhpdCgpLnJlbW92ZSgpLGkuZW50ZXIoKS5hcHBlbmQoInJlY3QiKS5hdHRyKCJjbGFzcyIsZnVuY3Rpb24odCl7cmV0dXJuImhhbmRsZSBoYW5kbGUtLSIrdC50eXBlfSkuYXR0cigiY3Vyc29yIixmdW5jdGlvbih0KXtyZXR1cm4gVGRbdC50eXBlXX0pLHQuZWFjaChyKS5hdHRyKCJmaWxsIiwibm9uZSIpLmF0dHIoInBvaW50ZXItZXZlbnRzIiwiYWxsIikuc3R5bGUoIi13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvciIsInJnYmEoMCwwLDAsMCkiKS5vbigibW91c2Vkb3duLmJydXNoIHRvdWNoc3RhcnQuYnJ1c2giLHUpfWZ1bmN0aW9uIHIoKXt2YXIgdD1NbCh0aGlzKSxuPVNlKHRoaXMpLnNlbGVjdGlvbjtuPyh0LnNlbGVjdEFsbCgiLnNlbGVjdGlvbiIpLnN0eWxlKCJkaXNwbGF5IixudWxsKS5hdHRyKCJ4IixuWzBdWzBdKS5hdHRyKCJ5IixuWzBdWzFdKS5hdHRyKCJ3aWR0aCIsblsxXVswXS1uWzBdWzBdKS5hdHRyKCJoZWlnaHQiLG5bMV1bMV0tblswXVsxXSksdC5zZWxlY3RBbGwoIi5oYW5kbGUiKS5zdHlsZSgiZGlzcGxheSIsbnVsbCkuYXR0cigieCIsZnVuY3Rpb24odCl7cmV0dXJuImUiPT09dC50eXBlW3QudHlwZS5sZW5ndGgtMV0/blsxXVswXS1oLzI6blswXVswXS1oLzJ9KS5hdHRyKCJ5IixmdW5jdGlvbih0KXtyZXR1cm4icyI9PT10LnR5cGVbMF0/blsxXVsxXS1oLzI6blswXVsxXS1oLzJ9KS5hdHRyKCJ3aWR0aCIsZnVuY3Rpb24odCl7cmV0dXJuIm4iPT09dC50eXBlfHwicyI9PT10LnR5cGU/blsxXVswXS1uWzBdWzBdK2g6aH0pLmF0dHIoImhlaWdodCIsZnVuY3Rpb24odCl7cmV0dXJuImUiPT09dC50eXBlfHwidyI9PT10LnR5cGU/blsxXVsxXS1uWzBdWzFdK2g6aH0pKTp0LnNlbGVjdEFsbCgiLnNlbGVjdGlvbiwuaGFuZGxlIikuc3R5bGUoImRpc3BsYXkiLCJub25lIikuYXR0cigieCIsbnVsbCkuYXR0cigieSIsbnVsbCkuYXR0cigid2lkdGgiLG51bGwpLmF0dHIoImhlaWdodCIsbnVsbCl9ZnVuY3Rpb24gaSh0LG4pe3JldHVybiB0Ll9fYnJ1c2guZW1pdHRlcnx8bmV3IG8odCxuKX1mdW5jdGlvbiBvKHQsbil7dGhpcy50aGF0PXQsdGhpcy5hcmdzPW4sdGhpcy5zdGF0ZT10Ll9fYnJ1c2gsdGhpcy5hY3RpdmU9MH1mdW5jdGlvbiB1KCl7ZnVuY3Rpb24gZSgpe3ZhciB0PVlmKFQpOyFVfHx3fHxNfHwoTWF0aC5hYnModFswXS1PWzBdKT5NYXRoLmFicyh0WzFdLU9bMV0pP009ITA6dz0hMCksTz10LGI9ITAsX2QoKSxvKCl9ZnVuY3Rpb24gbygpe3ZhciB0O3N3aXRjaChtPU9bMF0tRFswXSx4PU9bMV0tRFsxXSxTKXtjYXNlIHlkOmNhc2UgZ2Q6TiYmKG09TWF0aC5tYXgoUC1sLE1hdGgubWluKEwtdixtKSksaD1sK20sXz12K20pLEUmJih4PU1hdGgubWF4KFItcCxNYXRoLm1pbihxLWcseCkpLGQ9cCt4LHk9Zyt4KTticmVhaztjYXNlIG1kOk48MD8obT1NYXRoLm1heChQLWwsTWF0aC5taW4oTC1sLG0pKSxoPWwrbSxfPXYpOk4+MCYmKG09TWF0aC5tYXgoUC12LE1hdGgubWluKEwtdixtKSksaD1sLF89dittKSxFPDA/KHg9TWF0aC5tYXgoUi1wLE1hdGgubWluKHEtcCx4KSksZD1wK3gseT1nKTpFPjAmJih4PU1hdGgubWF4KFItZyxNYXRoLm1pbihxLWcseCkpLGQ9cCx5PWcreCk7YnJlYWs7Y2FzZSB4ZDpOJiYoaD1NYXRoLm1heChQLE1hdGgubWluKEwsbC1tKk4pKSxfPU1hdGgubWF4KFAsTWF0aC5taW4oTCx2K20qTikpKSxFJiYoZD1NYXRoLm1heChSLE1hdGgubWluKHEscC14KkUpKSx5PU1hdGgubWF4KFIsTWF0aC5taW4ocSxnK3gqRSkpKX1fPGgmJihOKj0tMSx0PWwsbD12LHY9dCx0PWgsaD1fLF89dCxrIGluIGtkJiZZLmF0dHIoImN1cnNvciIsVGRbaz1rZFtrXV0pKSx5PGQmJihFKj0tMSx0PXAscD1nLGc9dCx0PWQsZD15LHk9dCxrIGluIFNkJiZZLmF0dHIoImN1cnNvciIsVGRbaz1TZFtrXV0pKSxBLnNlbGVjdGlvbiYmKHo9QS5zZWxlY3Rpb24pLHcmJihoPXpbMF1bMF0sXz16WzFdWzBdKSxNJiYoZD16WzBdWzFdLHk9elsxXVsxXSkselswXVswXT09PWgmJnpbMF1bMV09PT1kJiZ6WzFdWzBdPT09XyYmelsxXVsxXT09PXl8fChBLnNlbGVjdGlvbj1bW2gsZF0sW18seV1dLHIuY2FsbChUKSxGLmJydXNoKCkpfWZ1bmN0aW9uIHUoKXtpZih3ZSgpLHQuZXZlbnQudG91Y2hlcyl7aWYodC5ldmVudC50b3VjaGVzLmxlbmd0aClyZXR1cm47YyYmY2xlYXJUaW1lb3V0KGMpLGM9c2V0VGltZW91dChmdW5jdGlvbigpe2M9bnVsbH0sNTAwKSxJLm9uKCJ0b3VjaG1vdmUuYnJ1c2ggdG91Y2hlbmQuYnJ1c2ggdG91Y2hjYW5jZWwuYnJ1c2giLG51bGwpfWVsc2UgZ3QodC5ldmVudC52aWV3LGIpLEIub24oImtleWRvd24uYnJ1c2gga2V5dXAuYnJ1c2ggbW91c2Vtb3ZlLmJydXNoIG1vdXNldXAuYnJ1c2giLG51bGwpO0kuYXR0cigicG9pbnRlci1ldmVudHMiLCJhbGwiKSxZLmF0dHIoImN1cnNvciIsVGQub3ZlcmxheSksQS5zZWxlY3Rpb24mJih6PUEuc2VsZWN0aW9uKSxOZSh6KSYmKEEuc2VsZWN0aW9uPW51bGwsci5jYWxsKFQpKSxGLmVuZCgpfWZ1bmN0aW9uIGEoKXtzd2l0Y2godC5ldmVudC5rZXlDb2RlKXtjYXNlIDE2OlU9TiYmRTticmVhaztjYXNlIDE4OlM9PT1tZCYmKE4mJih2PV8tbSpOLGw9aCttKk4pLEUmJihnPXkteCpFLHA9ZCt4KkUpLFM9eGQsbygpKTticmVhaztjYXNlIDMyOlMhPT1tZCYmUyE9PXhkfHwoTjwwP3Y9Xy1tOk4+MCYmKGw9aC1tKSxFPDA/Zz15LXg6RT4wJiYocD1kLXgpLFM9eWQsWS5hdHRyKCJjdXJzb3IiLFRkLnNlbGVjdGlvbiksbygpKTticmVhaztkZWZhdWx0OnJldHVybn1fZCgpfWZ1bmN0aW9uIHMoKXtzd2l0Y2godC5ldmVudC5rZXlDb2RlKXtjYXNlIDE2OlUmJih3PU09VT0hMSxvKCkpO2JyZWFrO2Nhc2UgMTg6Uz09PXhkJiYoTjwwP3Y9XzpOPjAmJihsPWgpLEU8MD9nPXk6RT4wJiYocD1kKSxTPW1kLG8oKSk7YnJlYWs7Y2FzZSAzMjpTPT09eWQmJih0LmV2ZW50LmFsdEtleT8oTiYmKHY9Xy1tKk4sbD1oK20qTiksRSYmKGc9eS14KkUscD1kK3gqRSksUz14ZCk6KE48MD92PV86Tj4wJiYobD1oKSxFPDA/Zz15OkU+MCYmKHA9ZCksUz1tZCksWS5hdHRyKCJjdXJzb3IiLFRkW2tdKSxvKCkpO2JyZWFrO2RlZmF1bHQ6cmV0dXJufV9kKCl9aWYodC5ldmVudC50b3VjaGVzKXtpZih0LmV2ZW50LmNoYW5nZWRUb3VjaGVzLmxlbmd0aDx0LmV2ZW50LnRvdWNoZXMubGVuZ3RoKXJldHVybiBfZCgpfWVsc2UgaWYoYylyZXR1cm47aWYoZi5hcHBseSh0aGlzLGFyZ3VtZW50cykpe3ZhciBsLGgscCxkLHYsXyxnLHksbSx4LGIsdyxNLFQ9dGhpcyxrPXQuZXZlbnQudGFyZ2V0Ll9fZGF0YV9fLnR5cGUsUz0ic2VsZWN0aW9uIj09PSh0LmV2ZW50Lm1ldGFLZXk/az0ib3ZlcmxheSI6ayk/Z2Q6dC5ldmVudC5hbHRLZXk/eGQ6bWQsTj1uPT09d2Q/bnVsbDpOZFtrXSxFPW49PT1iZD9udWxsOkVkW2tdLEE9U2UoVCksQz1BLmV4dGVudCx6PUEuc2VsZWN0aW9uLFA9Q1swXVswXSxSPUNbMF1bMV0sTD1DWzFdWzBdLHE9Q1sxXVsxXSxVPU4mJkUmJnQuZXZlbnQuc2hpZnRLZXksRD1ZZihUKSxPPUQsRj1pKFQsYXJndW1lbnRzKS5iZWZvcmVzdGFydCgpOyJvdmVybGF5Ij09PWs/QS5zZWxlY3Rpb249ej1bW2w9bj09PXdkP1A6RFswXSxwPW49PT1iZD9SOkRbMV1dLFt2PW49PT13ZD9MOmwsZz1uPT09YmQ/cTpwXV06KGw9elswXVswXSxwPXpbMF1bMV0sdj16WzFdWzBdLGc9elsxXVsxXSksaD1sLGQ9cCxfPXYseT1nO3ZhciBJPU1sKFQpLmF0dHIoInBvaW50ZXItZXZlbnRzIiwibm9uZSIpLFk9SS5zZWxlY3RBbGwoIi5vdmVybGF5IikuYXR0cigiY3Vyc29yIixUZFtrXSk7aWYodC5ldmVudC50b3VjaGVzKUkub24oInRvdWNobW92ZS5icnVzaCIsZSwhMCkub24oInRvdWNoZW5kLmJydXNoIHRvdWNoY2FuY2VsLmJydXNoIix1LCEwKTtlbHNle3ZhciBCPU1sKHQuZXZlbnQudmlldykub24oImtleWRvd24uYnJ1c2giLGEsITApLm9uKCJrZXl1cC5icnVzaCIscywhMCkub24oIm1vdXNlbW92ZS5icnVzaCIsZSwhMCkub24oIm1vdXNldXAuYnJ1c2giLHUsITApO0VsKHQuZXZlbnQudmlldyl9d2UoKSx2cChUKSxyLmNhbGwoVCksRi5zdGFydCgpfX1mdW5jdGlvbiBhKCl7dmFyIHQ9dGhpcy5fX2JydXNofHx7c2VsZWN0aW9uOm51bGx9O3JldHVybiB0LmV4dGVudD1zLmFwcGx5KHRoaXMsYXJndW1lbnRzKSx0LmRpbT1uLHR9dmFyIGMscz1rZSxmPVRlLGw9ZChlLCJzdGFydCIsImJydXNoIiwiZW5kIiksaD02O3JldHVybiBlLm1vdmU9ZnVuY3Rpb24odCxlKXt0LnNlbGVjdGlvbj90Lm9uKCJzdGFydC5icnVzaCIsZnVuY3Rpb24oKXtpKHRoaXMsYXJndW1lbnRzKS5iZWZvcmVzdGFydCgpLnN0YXJ0KCl9KS5vbigiaW50ZXJydXB0LmJydXNoIGVuZC5icnVzaCIsZnVuY3Rpb24oKXtpKHRoaXMsYXJndW1lbnRzKS5lbmQoKX0pLnR3ZWVuKCJicnVzaCIsZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3Uuc2VsZWN0aW9uPTE9PT10JiZOZShzKT9udWxsOmYodCksci5jYWxsKG8pLGEuYnJ1c2goKX12YXIgbz10aGlzLHU9by5fX2JydXNoLGE9aShvLGFyZ3VtZW50cyksYz11LnNlbGVjdGlvbixzPW4uaW5wdXQoImZ1bmN0aW9uIj09dHlwZW9mIGU/ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk6ZSx1LmV4dGVudCksZj1BaChjLHMpO3JldHVybiBjJiZzP3Q6dCgxKX0pOnQuZWFjaChmdW5jdGlvbigpe3ZhciB0PXRoaXMsbz1hcmd1bWVudHMsdT10Ll9fYnJ1c2gsYT1uLmlucHV0KCJmdW5jdGlvbiI9PXR5cGVvZiBlP2UuYXBwbHkodCxvKTplLHUuZXh0ZW50KSxjPWkodCxvKS5iZWZvcmVzdGFydCgpO3ZwKHQpLHUuc2VsZWN0aW9uPW51bGw9PWF8fE5lKGEpP251bGw6YSxyLmNhbGwodCksYy5zdGFydCgpLmJydXNoKCkuZW5kKCl9KX0sby5wcm90b3R5cGU9e2JlZm9yZXN0YXJ0OmZ1bmN0aW9uKCl7cmV0dXJuIDE9PT0rK3RoaXMuYWN0aXZlJiYodGhpcy5zdGF0ZS5lbWl0dGVyPXRoaXMsdGhpcy5zdGFydGluZz0hMCksdGhpc30sc3RhcnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zdGFydGluZyYmKHRoaXMuc3RhcnRpbmc9ITEsdGhpcy5lbWl0KCJzdGFydCIpKSx0aGlzfSxicnVzaDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVtaXQoImJydXNoIiksdGhpc30sZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIDA9PT0tLXRoaXMuYWN0aXZlJiYoZGVsZXRlIHRoaXMuc3RhdGUuZW1pdHRlcix0aGlzLmVtaXQoImVuZCIpKSx0aGlzfSxlbWl0OmZ1bmN0aW9uKHQpe0UobmV3IHZkKGUsdCxuLm91dHB1dCh0aGlzLnN0YXRlLnNlbGVjdGlvbikpLGwuYXBwbHksbCxbdCx0aGlzLnRoYXQsdGhpcy5hcmdzXSl9fSxlLmV4dGVudD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz0iZnVuY3Rpb24iPT10eXBlb2YgdD90OmRkKFtbK3RbMF1bMF0sK3RbMF1bMV1dLFsrdFsxXVswXSwrdFsxXVsxXV1dKSxlKTpzfSxlLmZpbHRlcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZj0iZnVuY3Rpb24iPT10eXBlb2YgdD90OmRkKCEhdCksZSk6Zn0sZS5oYW5kbGVTaXplPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhoPSt0LGUpOmh9LGUub249ZnVuY3Rpb24oKXt2YXIgdD1sLm9uLmFwcGx5KGwsYXJndW1lbnRzKTtyZXR1cm4gdD09PWw/ZTp0fSxlfWZ1bmN0aW9uIFBlKHQpe3JldHVybiBmdW5jdGlvbihuLGUpe3JldHVybiB0KG4uc291cmNlLnZhbHVlK24udGFyZ2V0LnZhbHVlLGUuc291cmNlLnZhbHVlK2UudGFyZ2V0LnZhbHVlKX19ZnVuY3Rpb24gUmUoKXt0aGlzLl94MD10aGlzLl95MD10aGlzLl94MT10aGlzLl95MT1udWxsLHRoaXMuXz0iIn1mdW5jdGlvbiBMZSgpe3JldHVybiBuZXcgUmV9ZnVuY3Rpb24gcWUodCl7cmV0dXJuIHQuc291cmNlfWZ1bmN0aW9uIFVlKHQpe3JldHVybiB0LnRhcmdldH1mdW5jdGlvbiBEZSh0KXtyZXR1cm4gdC5yYWRpdXN9ZnVuY3Rpb24gT2UodCl7cmV0dXJuIHQuc3RhcnRBbmdsZX1mdW5jdGlvbiBGZSh0KXtyZXR1cm4gdC5lbmRBbmdsZX1mdW5jdGlvbiBJZSgpe31mdW5jdGlvbiBZZSh0LG4pe3ZhciBlPW5ldyBJZTtpZih0IGluc3RhbmNlb2YgSWUpdC5lYWNoKGZ1bmN0aW9uKHQsbil7ZS5zZXQobix0KX0pO2Vsc2UgaWYoQXJyYXkuaXNBcnJheSh0KSl7dmFyIHIsaT0tMSxvPXQubGVuZ3RoO2lmKG51bGw9PW4pZm9yKDsrK2k8bzspZS5zZXQoaSx0W2ldKTtlbHNlIGZvcig7KytpPG87KWUuc2V0KG4ocj10W2ldLGksdCkscil9ZWxzZSBpZih0KWZvcih2YXIgdSBpbiB0KWUuc2V0KHUsdFt1XSk7cmV0dXJuIGV9ZnVuY3Rpb24gQmUoKXtyZXR1cm57fX1mdW5jdGlvbiBqZSh0LG4sZSl7dFtuXT1lfWZ1bmN0aW9uIEhlKCl7cmV0dXJuIFllKCl9ZnVuY3Rpb24gWGUodCxuLGUpe3Quc2V0KG4sZSl9ZnVuY3Rpb24gVmUoKXt9ZnVuY3Rpb24gV2UodCxuKXt2YXIgZT1uZXcgVmU7aWYodCBpbnN0YW5jZW9mIFZlKXQuZWFjaChmdW5jdGlvbih0KXtlLmFkZCh0KX0pO2Vsc2UgaWYodCl7dmFyIHI9LTEsaT10Lmxlbmd0aDtpZihudWxsPT1uKWZvcig7KytyPGk7KWUuYWRkKHRbcl0pO2Vsc2UgZm9yKDsrK3I8aTspZS5hZGQobih0W3JdLHIsdCkpfXJldHVybiBlfWZ1bmN0aW9uICRlKHQpe3JldHVybiBuZXcgRnVuY3Rpb24oImQiLCJyZXR1cm4geyIrdC5tYXAoZnVuY3Rpb24odCxuKXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkodCkrIjogZFsiK24rIl0ifSkuam9pbigiLCIpKyJ9Iil9ZnVuY3Rpb24gWmUodCxuKXt2YXIgZT0kZSh0KTtyZXR1cm4gZnVuY3Rpb24ocixpKXtyZXR1cm4gbihlKHIpLGksdCl9fWZ1bmN0aW9uIEdlKHQpe3ZhciBuPU9iamVjdC5jcmVhdGUobnVsbCksZT1bXTtyZXR1cm4gdC5mb3JFYWNoKGZ1bmN0aW9uKHQpe2Zvcih2YXIgciBpbiB0KXIgaW4gbnx8ZS5wdXNoKG5bcl09cil9KSxlfWZ1bmN0aW9uIEplKHQsbixlLHIpe2lmKGlzTmFOKG4pfHxpc05hTihlKSlyZXR1cm4gdDt2YXIgaSxvLHUsYSxjLHMsZixsLGgscD10Ll9yb290LGQ9e2RhdGE6cn0sdj10Ll94MCxfPXQuX3kwLGc9dC5feDEseT10Ll95MTtpZighcClyZXR1cm4gdC5fcm9vdD1kLHQ7Zm9yKDtwLmxlbmd0aDspaWYoKHM9bj49KG89KHYrZykvMikpP3Y9bzpnPW8sKGY9ZT49KHU9KF8reSkvMikpP189dTp5PXUsaT1wLCEocD1wW2w9Zjw8MXxzXSkpcmV0dXJuIGlbbF09ZCx0O2lmKGE9K3QuX3guY2FsbChudWxsLHAuZGF0YSksYz0rdC5feS5jYWxsKG51bGwscC5kYXRhKSxuPT09YSYmZT09PWMpcmV0dXJuIGQubmV4dD1wLGk/aVtsXT1kOnQuX3Jvb3Q9ZCx0O2RvIGk9aT9pW2xdPW5ldyBBcnJheSg0KTp0Ll9yb290PW5ldyBBcnJheSg0KSwocz1uPj0obz0oditnKS8yKSk/dj1vOmc9bywoZj1lPj0odT0oXyt5KS8yKSk/Xz11Onk9dTt3aGlsZSgobD1mPDwxfHMpPT09KGg9KGM+PXUpPDwxfGE+PW8pKTtyZXR1cm4gaVtoXT1wLGlbbF09ZCx0fWZ1bmN0aW9uIFFlKHQpe3ZhciBuLGUscixpLG89dC5sZW5ndGgsdT1uZXcgQXJyYXkobyksYT1uZXcgQXJyYXkobyksYz0xLzAscz0xLzAsZj0tKDEvMCksbD0tKDEvMCk7Zm9yKGU9MDtlPG87KytlKWlzTmFOKHI9K3RoaXMuX3guY2FsbChudWxsLG49dFtlXSkpfHxpc05hTihpPSt0aGlzLl95LmNhbGwobnVsbCxuKSl8fCh1W2VdPXIsYVtlXT1pLHI8YyYmKGM9cikscj5mJiYoZj1yKSxpPHMmJihzPWkpLGk+bCYmKGw9aSkpO2ZvcihmPGMmJihjPXRoaXMuX3gwLGY9dGhpcy5feDEpLGw8cyYmKHM9dGhpcy5feTAsbD10aGlzLl95MSksdGhpcy5jb3ZlcihjLHMpLmNvdmVyKGYsbCksZT0wO2U8bzsrK2UpSmUodGhpcyx1W2VdLGFbZV0sdFtlXSk7cmV0dXJuIHRoaXN9ZnVuY3Rpb24gS2UodCl7Zm9yKHZhciBuPTAsZT10Lmxlbmd0aDtuPGU7KytuKXRoaXMucmVtb3ZlKHRbbl0pO3JldHVybiB0aGlzfWZ1bmN0aW9uIHRyKHQpe3JldHVybiB0WzBdfWZ1bmN0aW9uIG5yKHQpe3JldHVybiB0WzFdfWZ1bmN0aW9uIGVyKHQsbixlKXt2YXIgcj1uZXcgcnIobnVsbD09bj90cjpuLG51bGw9PWU/bnI6ZSxOYU4sTmFOLE5hTixOYU4pO3JldHVybiBudWxsPT10P3I6ci5hZGRBbGwodCl9ZnVuY3Rpb24gcnIodCxuLGUscixpLG8pe3RoaXMuX3g9dCx0aGlzLl95PW4sdGhpcy5feDA9ZSx0aGlzLl95MD1yLHRoaXMuX3gxPWksdGhpcy5feTE9byx0aGlzLl9yb290PXZvaWQgMH1mdW5jdGlvbiBpcih0KXtmb3IodmFyIG49e2RhdGE6dC5kYXRhfSxlPW47dD10Lm5leHQ7KWU9ZS5uZXh0PXtkYXRhOnQuZGF0YX07cmV0dXJuIG59ZnVuY3Rpb24gb3IodCl7cmV0dXJuIHQueCt0LnZ4fWZ1bmN0aW9uIHVyKHQpe3JldHVybiB0LnkrdC52eX1mdW5jdGlvbiBhcih0KXtyZXR1cm4gdC5pbmRleH1mdW5jdGlvbiBjcih0LG4pe3ZhciBlPXQuZ2V0KG4pO2lmKCFlKXRocm93IG5ldyBFcnJvcigibWlzc2luZzogIituKTtyZXR1cm4gZX1mdW5jdGlvbiBzcih0KXtyZXR1cm4gdC54fWZ1bmN0aW9uIGZyKHQpe3JldHVybiB0Lnl9ZnVuY3Rpb24gbHIodCl7cmV0dXJuIG5ldyBocih0KX1mdW5jdGlvbiBocih0KXtpZighKG49WXYuZXhlYyh0KSkpdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIGZvcm1hdDogIit0KTt2YXIgbixlPW5bMV18fCIgIixyPW5bMl18fCI+IixpPW5bM118fCItIixvPW5bNF18fCIiLHU9ISFuWzVdLGE9bls2XSYmK25bNl0sYz0hIW5bN10scz1uWzhdJiYrbls4XS5zbGljZSgxKSxmPW5bOV18fCIiOyJuIj09PWY/KGM9ITAsZj0iZyIpOkl2W2ZdfHwoZj0iIiksKHV8fCIwIj09PWUmJiI9Ij09PXIpJiYodT0hMCxlPSIwIixyPSI9IiksdGhpcy5maWxsPWUsdGhpcy5hbGlnbj1yLHRoaXMuc2lnbj1pLHRoaXMuc3ltYm9sPW8sdGhpcy56ZXJvPXUsdGhpcy53aWR0aD1hLHRoaXMuY29tbWE9Yyx0aGlzLnByZWNpc2lvbj1zLHRoaXMudHlwZT1mfWZ1bmN0aW9uIHByKG4pewpyZXR1cm4gQnY9WHYobiksdC5mb3JtYXQ9QnYuZm9ybWF0LHQuZm9ybWF0UHJlZml4PUJ2LmZvcm1hdFByZWZpeCxCdn1mdW5jdGlvbiBkcigpe3RoaXMucmVzZXQoKX1mdW5jdGlvbiB2cih0LG4sZSl7dmFyIHI9dC5zPW4rZSxpPXItbixvPXItaTt0LnQ9bi1vKyhlLWkpfWZ1bmN0aW9uIF9yKHQpe3JldHVybiB0PjE/MDp0PC0xP0NfOk1hdGguYWNvcyh0KX1mdW5jdGlvbiBncih0KXtyZXR1cm4gdD4xP3pfOnQ8LTE/LXpfOk1hdGguYXNpbih0KX1mdW5jdGlvbiB5cih0KXtyZXR1cm4odD1IXyh0LzIpKSp0fWZ1bmN0aW9uIG1yKCl7fWZ1bmN0aW9uIHhyKHQsbil7dCYmWl8uaGFzT3duUHJvcGVydHkodC50eXBlKSYmWl9bdC50eXBlXSh0LG4pfWZ1bmN0aW9uIGJyKHQsbixlKXt2YXIgcixpPS0xLG89dC5sZW5ndGgtZTtmb3Iobi5saW5lU3RhcnQoKTsrK2k8bzspcj10W2ldLG4ucG9pbnQoclswXSxyWzFdLHJbMl0pO24ubGluZUVuZCgpfWZ1bmN0aW9uIHdyKHQsbil7dmFyIGU9LTEscj10Lmxlbmd0aDtmb3Iobi5wb2x5Z29uU3RhcnQoKTsrK2U8cjspYnIodFtlXSxuLDEpO24ucG9seWdvbkVuZCgpfWZ1bmN0aW9uIE1yKCl7S18ucG9pbnQ9a3J9ZnVuY3Rpb24gVHIoKXtTcihHdixKdil9ZnVuY3Rpb24ga3IodCxuKXtLXy5wb2ludD1TcixHdj10LEp2PW4sdCo9cV8sbio9cV8sUXY9dCxLdj1GXyhuPW4vMitQXyksdF89SF8obil9ZnVuY3Rpb24gU3IodCxuKXt0Kj1xXyxuKj1xXyxuPW4vMitQXzt2YXIgZT10LVF2LHI9ZT49MD8xOi0xLGk9ciplLG89Rl8obiksdT1IXyhuKSxhPXRfKnUsYz1LdipvK2EqRl8oaSkscz1hKnIqSF8oaSk7Sl8uYWRkKE9fKHMsYykpLFF2PXQsS3Y9byx0Xz11fWZ1bmN0aW9uIE5yKHQpe3JldHVybltPXyh0WzFdLHRbMF0pLGdyKHRbMl0pXX1mdW5jdGlvbiBFcih0KXt2YXIgbj10WzBdLGU9dFsxXSxyPUZfKGUpO3JldHVybltyKkZfKG4pLHIqSF8obiksSF8oZSldfWZ1bmN0aW9uIEFyKHQsbil7cmV0dXJuIHRbMF0qblswXSt0WzFdKm5bMV0rdFsyXSpuWzJdfWZ1bmN0aW9uIENyKHQsbil7cmV0dXJuW3RbMV0qblsyXS10WzJdKm5bMV0sdFsyXSpuWzBdLXRbMF0qblsyXSx0WzBdKm5bMV0tdFsxXSpuWzBdXX1mdW5jdGlvbiB6cih0LG4pe3RbMF0rPW5bMF0sdFsxXSs9blsxXSx0WzJdKz1uWzJdfWZ1bmN0aW9uIFByKHQsbil7cmV0dXJuW3RbMF0qbix0WzFdKm4sdFsyXSpuXX1mdW5jdGlvbiBScih0KXt2YXIgbj1WXyh0WzBdKnRbMF0rdFsxXSp0WzFdK3RbMl0qdFsyXSk7dFswXS89bix0WzFdLz1uLHRbMl0vPW59ZnVuY3Rpb24gTHIodCxuKXtzXy5wdXNoKGZfPVtuXz10LHJfPXRdKSxuPGVfJiYoZV89biksbj5pXyYmKGlfPW4pfWZ1bmN0aW9uIHFyKHQsbil7dmFyIGU9RXIoW3QqcV8sbipxX10pO2lmKGNfKXt2YXIgcj1DcihjXyxlKSxpPVtyWzFdLC1yWzBdLDBdLG89Q3IoaSxyKTtScihvKSxvPU5yKG8pO3ZhciB1LGE9dC1vXyxjPWE+MD8xOi0xLHM9b1swXSpMXypjLGY9VV8oYSk+MTgwO2ZeKGMqb188cyYmczxjKnQpPyh1PW9bMV0qTF8sdT5pXyYmKGlfPXUpKToocz0ocyszNjApJTM2MC0xODAsZl4oYypvXzxzJiZzPGMqdCk/KHU9LW9bMV0qTF8sdTxlXyYmKGVfPXUpKToobjxlXyYmKGVfPW4pLG4+aV8mJihpXz1uKSkpLGY/dDxvXz9ZcihuXyx0KT5ZcihuXyxyXykmJihyXz10KTpZcih0LHJfKT5ZcihuXyxyXykmJihuXz10KTpyXz49bl8/KHQ8bl8mJihuXz10KSx0PnJfJiYocl89dCkpOnQ+b18/WXIobl8sdCk+WXIobl8scl8pJiYocl89dCk6WXIodCxyXyk+WXIobl8scl8pJiYobl89dCl9ZWxzZSBzXy5wdXNoKGZfPVtuXz10LHJfPXRdKTtuPGVfJiYoZV89biksbj5pXyYmKGlfPW4pLGNfPWUsb189dH1mdW5jdGlvbiBVcigpe2VnLnBvaW50PXFyfWZ1bmN0aW9uIERyKCl7Zl9bMF09bl8sZl9bMV09cl8sZWcucG9pbnQ9THIsY189bnVsbH1mdW5jdGlvbiBPcih0LG4pe2lmKGNfKXt2YXIgZT10LW9fO25nLmFkZChVXyhlKT4xODA/ZSsoZT4wPzM2MDotMzYwKTplKX1lbHNlIHVfPXQsYV89bjtLXy5wb2ludCh0LG4pLHFyKHQsbil9ZnVuY3Rpb24gRnIoKXtLXy5saW5lU3RhcnQoKX1mdW5jdGlvbiBJcigpe09yKHVfLGFfKSxLXy5saW5lRW5kKCksVV8obmcpPkVfJiYobl89LShyXz0xODApKSxmX1swXT1uXyxmX1sxXT1yXyxjXz1udWxsfWZ1bmN0aW9uIFlyKHQsbil7cmV0dXJuKG4tPXQpPDA/biszNjA6bn1mdW5jdGlvbiBCcih0LG4pe3JldHVybiB0WzBdLW5bMF19ZnVuY3Rpb24ganIodCxuKXtyZXR1cm4gdFswXTw9dFsxXT90WzBdPD1uJiZuPD10WzFdOm48dFswXXx8dFsxXTxufWZ1bmN0aW9uIEhyKHQsbil7dCo9cV8sbio9cV87dmFyIGU9Rl8obik7WHIoZSpGXyh0KSxlKkhfKHQpLEhfKG4pKX1mdW5jdGlvbiBYcih0LG4sZSl7KytsXyxwXys9KHQtcF8pL2xfLGRfKz0obi1kXykvbF8sdl8rPShlLXZfKS9sX31mdW5jdGlvbiBWcigpe2lnLnBvaW50PVdyfWZ1bmN0aW9uIFdyKHQsbil7dCo9cV8sbio9cV87dmFyIGU9Rl8obik7VF89ZSpGXyh0KSxrXz1lKkhfKHQpLFNfPUhfKG4pLGlnLnBvaW50PSRyLFhyKFRfLGtfLFNfKX1mdW5jdGlvbiAkcih0LG4pe3QqPXFfLG4qPXFfO3ZhciBlPUZfKG4pLHI9ZSpGXyh0KSxpPWUqSF8odCksbz1IXyhuKSx1PU9fKFZfKCh1PWtfKm8tU18qaSkqdSsodT1TXypyLVRfKm8pKnUrKHU9VF8qaS1rXypyKSp1KSxUXypyK2tfKmkrU18qbyk7aF8rPXUsX18rPXUqKFRfKyhUXz1yKSksZ18rPXUqKGtfKyhrXz1pKSkseV8rPXUqKFNfKyhTXz1vKSksWHIoVF8sa18sU18pfWZ1bmN0aW9uIFpyKCl7aWcucG9pbnQ9SHJ9ZnVuY3Rpb24gR3IoKXtpZy5wb2ludD1Rcn1mdW5jdGlvbiBKcigpe0tyKHdfLE1fKSxpZy5wb2ludD1Icn1mdW5jdGlvbiBRcih0LG4pe3dfPXQsTV89bix0Kj1xXyxuKj1xXyxpZy5wb2ludD1Lcjt2YXIgZT1GXyhuKTtUXz1lKkZfKHQpLGtfPWUqSF8odCksU189SF8obiksWHIoVF8sa18sU18pfWZ1bmN0aW9uIEtyKHQsbil7dCo9cV8sbio9cV87dmFyIGU9Rl8obikscj1lKkZfKHQpLGk9ZSpIXyh0KSxvPUhfKG4pLHU9a18qby1TXyppLGE9U18qci1UXypvLGM9VF8qaS1rXypyLHM9Vl8odSp1K2EqYStjKmMpLGY9Z3IocyksbD1zJiYtZi9zO21fKz1sKnUseF8rPWwqYSxiXys9bCpjLGhfKz1mLF9fKz1mKihUXysoVF89cikpLGdfKz1mKihrXysoa189aSkpLHlfKz1mKihTXysoU189bykpLFhyKFRfLGtfLFNfKX1mdW5jdGlvbiB0aSh0LG4pe3JldHVyblt0PkNfP3QtUl86dDwtQ18/dCtSXzp0LG5dfWZ1bmN0aW9uIG5pKHQsbixlKXtyZXR1cm4odCU9Ul8pP258fGU/YWcocmkodCksaWkobixlKSk6cmkodCk6bnx8ZT9paShuLGUpOnRpfWZ1bmN0aW9uIGVpKHQpe3JldHVybiBmdW5jdGlvbihuLGUpe3JldHVybiBuKz10LFtuPkNfP24tUl86bjwtQ18/bitSXzpuLGVdfX1mdW5jdGlvbiByaSh0KXt2YXIgbj1laSh0KTtyZXR1cm4gbi5pbnZlcnQ9ZWkoLXQpLG59ZnVuY3Rpb24gaWkodCxuKXtmdW5jdGlvbiBlKHQsbil7dmFyIGU9Rl8obiksYT1GXyh0KSplLGM9SF8odCkqZSxzPUhfKG4pLGY9cypyK2EqaTtyZXR1cm5bT18oYypvLWYqdSxhKnItcyppKSxncihmKm8rYyp1KV19dmFyIHI9Rl8odCksaT1IXyh0KSxvPUZfKG4pLHU9SF8obik7cmV0dXJuIGUuaW52ZXJ0PWZ1bmN0aW9uKHQsbil7dmFyIGU9Rl8obiksYT1GXyh0KSplLGM9SF8odCkqZSxzPUhfKG4pLGY9cypvLWMqdTtyZXR1cm5bT18oYypvK3MqdSxhKnIrZippKSxncihmKnItYSppKV19LGV9ZnVuY3Rpb24gb2kodCxuLGUscixpLG8pe2lmKGUpe3ZhciB1PUZfKG4pLGE9SF8obiksYz1yKmU7bnVsbD09aT8oaT1uK3IqUl8sbz1uLWMvMik6KGk9dWkodSxpKSxvPXVpKHUsbyksKHI+MD9pPG86aT5vKSYmKGkrPXIqUl8pKTtmb3IodmFyIHMsZj1pO3I+MD9mPm86ZjxvO2YtPWMpcz1OcihbdSwtYSpGXyhmKSwtYSpIXyhmKV0pLHQucG9pbnQoc1swXSxzWzFdKX19ZnVuY3Rpb24gdWkodCxuKXtuPUVyKG4pLG5bMF0tPXQsUnIobik7dmFyIGU9X3IoLW5bMV0pO3JldHVybigoLW5bMl08MD8tZTplKStSXy1FXyklUl99ZnVuY3Rpb24gYWkodCxuLGUscil7dGhpcy54PXQsdGhpcy56PW4sdGhpcy5vPWUsdGhpcy5lPXIsdGhpcy52PSExLHRoaXMubj10aGlzLnA9bnVsbH1mdW5jdGlvbiBjaSh0KXtpZihuPXQubGVuZ3RoKXtmb3IodmFyIG4sZSxyPTAsaT10WzBdOysrcjxuOylpLm49ZT10W3JdLGUucD1pLGk9ZTtpLm49ZT10WzBdLGUucD1pfX1mdW5jdGlvbiBzaSh0LG4sZSxyKXtmdW5jdGlvbiBpKGksbyl7cmV0dXJuIHQ8PWkmJmk8PWUmJm48PW8mJm88PXJ9ZnVuY3Rpb24gbyhpLG8sYSxzKXt2YXIgZj0wLGw9MDtpZihudWxsPT1pfHwoZj11KGksYSkpIT09KGw9dShvLGEpKXx8YyhpLG8pPDBeYT4wKXtkbyBzLnBvaW50KDA9PT1mfHwzPT09Zj90OmUsZj4xP3I6bik7d2hpbGUoKGY9KGYrYSs0KSU0KSE9PWwpfWVsc2Ugcy5wb2ludChvWzBdLG9bMV0pfWZ1bmN0aW9uIHUocixpKXtyZXR1cm4gVV8oclswXS10KTxFXz9pPjA/MDozOlVfKHJbMF0tZSk8RV8/aT4wPzI6MTpVXyhyWzFdLW4pPEVfP2k+MD8xOjA6aT4wPzM6Mn1mdW5jdGlvbiBhKHQsbil7cmV0dXJuIGModC54LG4ueCl9ZnVuY3Rpb24gYyh0LG4pe3ZhciBlPXUodCwxKSxyPXUobiwxKTtyZXR1cm4gZSE9PXI/ZS1yOjA9PT1lP25bMV0tdFsxXToxPT09ZT90WzBdLW5bMF06Mj09PWU/dFsxXS1uWzFdOm5bMF0tdFswXX1yZXR1cm4gZnVuY3Rpb24odSl7ZnVuY3Rpb24gYyh0LG4pe2kodCxuKSYmUy5wb2ludCh0LG4pfWZ1bmN0aW9uIHMoKXtmb3IodmFyIG49MCxlPTAsaT1fLmxlbmd0aDtlPGk7KytlKWZvcih2YXIgbyx1LGE9X1tlXSxjPTEscz1hLmxlbmd0aCxmPWFbMF0sbD1mWzBdLGg9ZlsxXTtjPHM7KytjKW89bCx1PWgsZj1hW2NdLGw9ZlswXSxoPWZbMV0sdTw9cj9oPnImJihsLW8pKihyLXUpPihoLXUpKih0LW8pJiYrK246aDw9ciYmKGwtbykqKHItdSk8KGgtdSkqKHQtbykmJi0tbjtyZXR1cm4gbn1mdW5jdGlvbiBmKCl7Uz1OLHY9W10sXz1bXSxrPSEwfWZ1bmN0aW9uIGwoKXt2YXIgdD1zKCksbj1rJiZ0LGU9KHY9aGYodikpLmxlbmd0aDsobnx8ZSkmJih1LnBvbHlnb25TdGFydCgpLG4mJih1LmxpbmVTdGFydCgpLG8obnVsbCxudWxsLDEsdSksdS5saW5lRW5kKCkpLGUmJlRnKHYsYSx0LG8sdSksdS5wb2x5Z29uRW5kKCkpLFM9dSx2PV89Zz1udWxsfWZ1bmN0aW9uIGgoKXtFLnBvaW50PWQsXyYmXy5wdXNoKGc9W10pLFQ9ITAsTT0hMSxiPXc9TmFOfWZ1bmN0aW9uIHAoKXt2JiYoZCh5LG0pLHgmJk0mJk4ucmVqb2luKCksdi5wdXNoKE4ucmVzdWx0KCkpKSxFLnBvaW50PWMsTSYmUy5saW5lRW5kKCl9ZnVuY3Rpb24gZChvLHUpe3ZhciBhPWkobyx1KTtpZihfJiZnLnB1c2goW28sdV0pLFQpeT1vLG09dSx4PWEsVD0hMSxhJiYoUy5saW5lU3RhcnQoKSxTLnBvaW50KG8sdSkpO2Vsc2UgaWYoYSYmTSlTLnBvaW50KG8sdSk7ZWxzZXt2YXIgYz1bYj1NYXRoLm1heChTZyxNYXRoLm1pbihrZyxiKSksdz1NYXRoLm1heChTZyxNYXRoLm1pbihrZyx3KSldLHM9W289TWF0aC5tYXgoU2csTWF0aC5taW4oa2csbykpLHU9TWF0aC5tYXgoU2csTWF0aC5taW4oa2csdSkpXTt3ZyhjLHMsdCxuLGUscik/KE18fChTLmxpbmVTdGFydCgpLFMucG9pbnQoY1swXSxjWzFdKSksUy5wb2ludChzWzBdLHNbMV0pLGF8fFMubGluZUVuZCgpLGs9ITEpOmEmJihTLmxpbmVTdGFydCgpLFMucG9pbnQobyx1KSxrPSExKX1iPW8sdz11LE09YX12YXIgdixfLGcseSxtLHgsYix3LE0sVCxrLFM9dSxOPWJnKCksRT17cG9pbnQ6YyxsaW5lU3RhcnQ6aCxsaW5lRW5kOnAscG9seWdvblN0YXJ0OmYscG9seWdvbkVuZDpsfTtyZXR1cm4gRX19ZnVuY3Rpb24gZmkoKXt6Zy5wb2ludD1oaSx6Zy5saW5lRW5kPWxpfWZ1bmN0aW9uIGxpKCl7emcucG9pbnQ9emcubGluZUVuZD1tcn1mdW5jdGlvbiBoaSh0LG4pe3QqPXFfLG4qPXFfLGNnPXQsc2c9SF8obiksZmc9Rl8obiksemcucG9pbnQ9cGl9ZnVuY3Rpb24gcGkodCxuKXt0Kj1xXyxuKj1xXzt2YXIgZT1IXyhuKSxyPUZfKG4pLGk9VV8odC1jZyksbz1GXyhpKSx1PUhfKGkpLGE9cip1LGM9ZmcqZS1zZypyKm8scz1zZyplK2ZnKnIqbztDZy5hZGQoT18oVl8oYSphK2MqYykscykpLGNnPXQsc2c9ZSxmZz1yfWZ1bmN0aW9uIGRpKHQsbil7cmV0dXJuISghdHx8IURnLmhhc093blByb3BlcnR5KHQudHlwZSkpJiZEZ1t0LnR5cGVdKHQsbil9ZnVuY3Rpb24gdmkodCxuKXtyZXR1cm4gMD09PXFnKHQsbil9ZnVuY3Rpb24gX2kodCxuKXt2YXIgZT1xZyh0WzBdLHRbMV0pO3JldHVybiBxZyh0WzBdLG4pK3FnKG4sdFsxXSk8PWUrRV99ZnVuY3Rpb24gZ2kodCxuKXtyZXR1cm4hIUFnKHQubWFwKHlpKSxtaShuKSl9ZnVuY3Rpb24geWkodCl7cmV0dXJuIHQ9dC5tYXAobWkpLHQucG9wKCksdH1mdW5jdGlvbiBtaSh0KXtyZXR1cm5bdFswXSpxXyx0WzFdKnFfXX1mdW5jdGlvbiB4aSh0LG4sZSl7dmFyIHI9UXModCxuLUVfLGUpLmNvbmNhdChuKTtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIHIubWFwKGZ1bmN0aW9uKG4pe3JldHVyblt0LG5dfSl9fWZ1bmN0aW9uIGJpKHQsbixlKXt2YXIgcj1Rcyh0LG4tRV8sZSkuY29uY2F0KG4pO3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gci5tYXAoZnVuY3Rpb24obil7cmV0dXJuW24sdF19KX19ZnVuY3Rpb24gd2koKXtmdW5jdGlvbiB0KCl7cmV0dXJue3R5cGU6Ik11bHRpTGluZVN0cmluZyIsY29vcmRpbmF0ZXM6bigpfX1mdW5jdGlvbiBuKCl7cmV0dXJuIFFzKElfKG8vXykqXyxpLF8pLm1hcChoKS5jb25jYXQoUXMoSV8ocy9nKSpnLGMsZykubWFwKHApKS5jb25jYXQoUXMoSV8oci9kKSpkLGUsZCkuZmlsdGVyKGZ1bmN0aW9uKHQpe3JldHVybiBVXyh0JV8pPkVffSkubWFwKGYpKS5jb25jYXQoUXMoSV8oYS92KSp2LHUsdikuZmlsdGVyKGZ1bmN0aW9uKHQpe3JldHVybiBVXyh0JWcpPkVffSkubWFwKGwpKX12YXIgZSxyLGksbyx1LGEsYyxzLGYsbCxoLHAsZD0xMCx2PWQsXz05MCxnPTM2MCx5PTIuNTtyZXR1cm4gdC5saW5lcz1mdW5jdGlvbigpe3JldHVybiBuKCkubWFwKGZ1bmN0aW9uKHQpe3JldHVybnt0eXBlOiJMaW5lU3RyaW5nIixjb29yZGluYXRlczp0fX0pfSx0Lm91dGxpbmU9ZnVuY3Rpb24oKXtyZXR1cm57dHlwZToiUG9seWdvbiIsY29vcmRpbmF0ZXM6W2gobykuY29uY2F0KHAoYykuc2xpY2UoMSksaChpKS5yZXZlcnNlKCkuc2xpY2UoMSkscChzKS5yZXZlcnNlKCkuc2xpY2UoMSkpXX19LHQuZXh0ZW50PWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3QuZXh0ZW50TWFqb3IobikuZXh0ZW50TWlub3Iobik6dC5leHRlbnRNaW5vcigpfSx0LmV4dGVudE1ham9yPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPStuWzBdWzBdLGk9K25bMV1bMF0scz0rblswXVsxXSxjPStuWzFdWzFdLG8+aSYmKG49byxvPWksaT1uKSxzPmMmJihuPXMscz1jLGM9biksdC5wcmVjaXNpb24oeSkpOltbbyxzXSxbaSxjXV19LHQuZXh0ZW50TWlub3I9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9K25bMF1bMF0sZT0rblsxXVswXSxhPStuWzBdWzFdLHU9K25bMV1bMV0scj5lJiYobj1yLHI9ZSxlPW4pLGE+dSYmKG49YSxhPXUsdT1uKSx0LnByZWNpc2lvbih5KSk6W1tyLGFdLFtlLHVdXX0sdC5zdGVwPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3Quc3RlcE1ham9yKG4pLnN0ZXBNaW5vcihuKTp0LnN0ZXBNaW5vcigpfSx0LnN0ZXBNYWpvcj1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oXz0rblswXSxnPStuWzFdLHQpOltfLGddfSx0LnN0ZXBNaW5vcj1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZD0rblswXSx2PStuWzFdLHQpOltkLHZdfSx0LnByZWNpc2lvbj1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oeT0rbixmPXhpKGEsdSw5MCksbD1iaShyLGUseSksaD14aShzLGMsOTApLHA9YmkobyxpLHkpLHQpOnl9LHQuZXh0ZW50TWFqb3IoW1stMTgwLC05MCtFX10sWzE4MCw5MC1FX11dKS5leHRlbnRNaW5vcihbWy0xODAsLTgwLUVfXSxbMTgwLDgwK0VfXV0pfWZ1bmN0aW9uIE1pKCl7cmV0dXJuIHdpKCkoKX1mdW5jdGlvbiBUaSgpe2pnLnBvaW50PWtpfWZ1bmN0aW9uIGtpKHQsbil7amcucG9pbnQ9U2ksbGc9cGc9dCxoZz1kZz1ufWZ1bmN0aW9uIFNpKHQsbil7QmcuYWRkKGRnKnQtcGcqbikscGc9dCxkZz1ufWZ1bmN0aW9uIE5pKCl7U2kobGcsaGcpfWZ1bmN0aW9uIEVpKHQsbil7dDxIZyYmKEhnPXQpLHQ+VmcmJihWZz10KSxuPFhnJiYoWGc9biksbj5XZyYmKFdnPW4pfWZ1bmN0aW9uIEFpKHQsbil7WmcrPXQsR2crPW4sKytKZ31mdW5jdGlvbiBDaSgpe2l5LnBvaW50PXppfWZ1bmN0aW9uIHppKHQsbil7aXkucG9pbnQ9UGksQWkoZ2c9dCx5Zz1uKX1mdW5jdGlvbiBQaSh0LG4pe3ZhciBlPXQtZ2cscj1uLXlnLGk9Vl8oZSplK3Iqcik7UWcrPWkqKGdnK3QpLzIsS2crPWkqKHlnK24pLzIsdHkrPWksQWkoZ2c9dCx5Zz1uKX1mdW5jdGlvbiBSaSgpe2l5LnBvaW50PUFpfWZ1bmN0aW9uIExpKCl7aXkucG9pbnQ9VWl9ZnVuY3Rpb24gcWkoKXtEaSh2ZyxfZyl9ZnVuY3Rpb24gVWkodCxuKXtpeS5wb2ludD1EaSxBaSh2Zz1nZz10LF9nPXlnPW4pfWZ1bmN0aW9uIERpKHQsbil7dmFyIGU9dC1nZyxyPW4teWcsaT1WXyhlKmUrcipyKTtRZys9aSooZ2crdCkvMixLZys9aSooeWcrbikvMix0eSs9aSxpPXlnKnQtZ2cqbixueSs9aSooZ2crdCksZXkrPWkqKHlnK24pLHJ5Kz0zKmksQWkoZ2c9dCx5Zz1uKX1mdW5jdGlvbiBPaSh0KXt0aGlzLl9jb250ZXh0PXR9ZnVuY3Rpb24gRmkodCxuKXtseS5wb2ludD1JaSx1eT1jeT10LGF5PXN5PW59ZnVuY3Rpb24gSWkodCxuKXtjeS09dCxzeS09bixmeS5hZGQoVl8oY3kqY3krc3kqc3kpKSxjeT10LHN5PW59ZnVuY3Rpb24gWWkoKXt0aGlzLl9zdHJpbmc9W119ZnVuY3Rpb24gQmkodCl7cmV0dXJuIm0wLCIrdCsiYSIrdCsiLCIrdCsiIDAgMSwxIDAsIistMip0KyJhIit0KyIsIit0KyIgMCAxLDEgMCwiKzIqdCsieiJ9ZnVuY3Rpb24gamkodCl7cmV0dXJuIHQubGVuZ3RoPjF9ZnVuY3Rpb24gSGkodCxuKXtyZXR1cm4oKHQ9dC54KVswXTwwP3RbMV0tel8tRV86el8tdFsxXSktKChuPW4ueClbMF08MD9uWzFdLXpfLUVfOnpfLW5bMV0pfWZ1bmN0aW9uIFhpKHQpe3ZhciBuLGU9TmFOLHI9TmFOLGk9TmFOO3JldHVybntsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0LmxpbmVTdGFydCgpLG49MX0scG9pbnQ6ZnVuY3Rpb24obyx1KXt2YXIgYT1vPjA/Q186LUNfLGM9VV8oby1lKTtVXyhjLUNfKTxFXz8odC5wb2ludChlLHI9KHIrdSkvMj4wP3pfOi16XyksdC5wb2ludChpLHIpLHQubGluZUVuZCgpLHQubGluZVN0YXJ0KCksdC5wb2ludChhLHIpLHQucG9pbnQobyxyKSxuPTApOmkhPT1hJiZjPj1DXyYmKFVfKGUtaSk8RV8mJihlLT1pKkVfKSxVXyhvLWEpPEVfJiYoby09YSpFXykscj1WaShlLHIsbyx1KSx0LnBvaW50KGksciksdC5saW5lRW5kKCksdC5saW5lU3RhcnQoKSx0LnBvaW50KGEsciksbj0wKSx0LnBvaW50KGU9byxyPXUpLGk9YX0sbGluZUVuZDpmdW5jdGlvbigpe3QubGluZUVuZCgpLGU9cj1OYU59LGNsZWFuOmZ1bmN0aW9uKCl7cmV0dXJuIDItbn19fWZ1bmN0aW9uIFZpKHQsbixlLHIpe3ZhciBpLG8sdT1IXyh0LWUpO3JldHVybiBVXyh1KT5FXz9EXygoSF8obikqKG89Rl8ocikpKkhfKGUpLUhfKHIpKihpPUZfKG4pKSpIXyh0KSkvKGkqbyp1KSk6KG4rcikvMn1mdW5jdGlvbiBXaSh0LG4sZSxyKXt2YXIgaTtpZihudWxsPT10KWk9ZSp6XyxyLnBvaW50KC1DXyxpKSxyLnBvaW50KDAsaSksci5wb2ludChDXyxpKSxyLnBvaW50KENfLDApLHIucG9pbnQoQ18sLWkpLHIucG9pbnQoMCwtaSksci5wb2ludCgtQ18sLWkpLHIucG9pbnQoLUNfLDApLHIucG9pbnQoLUNfLGkpO2Vsc2UgaWYoVV8odFswXS1uWzBdKT5FXyl7dmFyIG89dFswXTxuWzBdP0NfOi1DXztpPWUqby8yLHIucG9pbnQoLW8saSksci5wb2ludCgwLGkpLHIucG9pbnQobyxpKX1lbHNlIHIucG9pbnQoblswXSxuWzFdKX1mdW5jdGlvbiAkaSh0KXtyZXR1cm4gZnVuY3Rpb24obil7dmFyIGU9bmV3IFppO2Zvcih2YXIgciBpbiB0KWVbcl09dFtyXTtyZXR1cm4gZS5zdHJlYW09bixlfX1mdW5jdGlvbiBaaSgpe31mdW5jdGlvbiBHaSh0LG4sZSl7dmFyIHI9blsxXVswXS1uWzBdWzBdLGk9blsxXVsxXS1uWzBdWzFdLG89dC5jbGlwRXh0ZW50JiZ0LmNsaXBFeHRlbnQoKTt0LnNjYWxlKDE1MCkudHJhbnNsYXRlKFswLDBdKSxudWxsIT1vJiZ0LmNsaXBFeHRlbnQobnVsbCksR18oZSx0LnN0cmVhbSgkZykpO3ZhciB1PSRnLnJlc3VsdCgpLGE9TWF0aC5taW4oci8odVsxXVswXS11WzBdWzBdKSxpLyh1WzFdWzFdLXVbMF1bMV0pKSxjPStuWzBdWzBdKyhyLWEqKHVbMV1bMF0rdVswXVswXSkpLzIscz0rblswXVsxXSsoaS1hKih1WzFdWzFdK3VbMF1bMV0pKS8yO3JldHVybiBudWxsIT1vJiZ0LmNsaXBFeHRlbnQobyksdC5zY2FsZSgxNTAqYSkudHJhbnNsYXRlKFtjLHNdKX1mdW5jdGlvbiBKaSh0LG4sZSl7cmV0dXJuIEdpKHQsW1swLDBdLG5dLGUpfWZ1bmN0aW9uIFFpKHQpe3JldHVybiAkaSh7cG9pbnQ6ZnVuY3Rpb24obixlKXtuPXQobixlKSx0aGlzLnN0cmVhbS5wb2ludChuWzBdLG5bMV0pfX0pfWZ1bmN0aW9uIEtpKHQsbil7ZnVuY3Rpb24gZShyLGksbyx1LGEsYyxzLGYsbCxoLHAsZCx2LF8pe3ZhciBnPXMtcix5PWYtaSxtPWcqZyt5Knk7aWYobT40Km4mJnYtLSl7dmFyIHg9dStoLGI9YStwLHc9YytkLE09Vl8oeCp4K2IqYit3KncpLFQ9Z3Iody89TSksaz1VXyhVXyh3KS0xKTxFX3x8VV8oby1sKTxFXz8obytsKS8yOk9fKGIseCksUz10KGssVCksTj1TWzBdLEU9U1sxXSxBPU4tcixDPUUtaSx6PXkqQS1nKkM7KHoqei9tPm58fFVfKChnKkEreSpDKS9tLS41KT4uM3x8dSpoK2EqcCtjKmQ8eXkpJiYoZShyLGksbyx1LGEsYyxOLEUsayx4Lz1NLGIvPU0sdyx2LF8pLF8ucG9pbnQoTixFKSxlKE4sRSxrLHgsYix3LHMsZixsLGgscCxkLHYsXykpfX1yZXR1cm4gZnVuY3Rpb24obil7ZnVuY3Rpb24gcihlLHIpe2U9dChlLHIpLG4ucG9pbnQoZVswXSxlWzFdKX1mdW5jdGlvbiBpKCl7Zz1OYU4sdy5wb2ludD1vLG4ubGluZVN0YXJ0KCl9ZnVuY3Rpb24gbyhyLGkpe3ZhciBvPUVyKFtyLGldKSx1PXQocixpKTtlKGcseSxfLG0seCxiLGc9dVswXSx5PXVbMV0sXz1yLG09b1swXSx4PW9bMV0sYj1vWzJdLGd5LG4pLG4ucG9pbnQoZyx5KX1mdW5jdGlvbiB1KCl7dy5wb2ludD1yLG4ubGluZUVuZCgpfWZ1bmN0aW9uIGEoKXtpKCksdy5wb2ludD1jLHcubGluZUVuZD1zfWZ1bmN0aW9uIGModCxuKXtvKGY9dCxuKSxsPWcsaD15LHA9bSxkPXgsdj1iLHcucG9pbnQ9b31mdW5jdGlvbiBzKCl7ZShnLHksXyxtLHgsYixsLGgsZixwLGQsdixneSxuKSx3LmxpbmVFbmQ9dSx1KCl9dmFyIGYsbCxoLHAsZCx2LF8sZyx5LG0seCxiLHc9e3BvaW50OnIsbGluZVN0YXJ0OmksbGluZUVuZDp1LHBvbHlnb25TdGFydDpmdW5jdGlvbigpe24ucG9seWdvblN0YXJ0KCksdy5saW5lU3RhcnQ9YX0scG9seWdvbkVuZDpmdW5jdGlvbigpe24ucG9seWdvbkVuZCgpLHcubGluZVN0YXJ0PWl9fTtyZXR1cm4gd319ZnVuY3Rpb24gdG8odCl7cmV0dXJuIG5vKGZ1bmN0aW9uKCl7cmV0dXJuIHR9KSgpfWZ1bmN0aW9uIG5vKHQpe2Z1bmN0aW9uIG4odCl7cmV0dXJuIHQ9Zih0WzBdKnFfLHRbMV0qcV8pLFt0WzBdKl8rYSxjLXRbMV0qX119ZnVuY3Rpb24gZSh0KXtyZXR1cm4gdD1mLmludmVydCgodFswXS1hKS9fLChjLXRbMV0pL18pLHQmJlt0WzBdKkxfLHRbMV0qTF9dfWZ1bmN0aW9uIHIodCxuKXtyZXR1cm4gdD11KHQsbiksW3RbMF0qXythLGMtdFsxXSpfXX1mdW5jdGlvbiBpKCl7Zj1hZyhzPW5pKGIsdyxNKSx1KTt2YXIgdD11KG0seCk7cmV0dXJuIGE9Zy10WzBdKl8sYz15K3RbMV0qXyxvKCl9ZnVuY3Rpb24gbygpe3JldHVybiBkPXY9bnVsbCxufXZhciB1LGEsYyxzLGYsbCxoLHAsZCx2LF89MTUwLGc9NDgwLHk9MjUwLG09MCx4PTAsYj0wLHc9MCxNPTAsVD1udWxsLGs9ZHksUz1udWxsLE49SWcsRT0uNSxBPW15KHIsRSk7cmV0dXJuIG4uc3RyZWFtPWZ1bmN0aW9uKHQpe3JldHVybiBkJiZ2PT09dD9kOmQ9eHkoayhzLEEoTih2PXQpKSkpfSxuLmNsaXBBbmdsZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaz0rdD92eShUPXQqcV8sNipxXyk6KFQ9bnVsbCxkeSksbygpKTpUKkxffSxuLmNsaXBFeHRlbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KE49bnVsbD09dD8oUz1sPWg9cD1udWxsLElnKTpzaShTPSt0WzBdWzBdLGw9K3RbMF1bMV0saD0rdFsxXVswXSxwPSt0WzFdWzFdKSxvKCkpOm51bGw9PVM/bnVsbDpbW1MsbF0sW2gscF1dfSxuLnNjYWxlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhfPSt0LGkoKSk6X30sbi50cmFuc2xhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGc9K3RbMF0seT0rdFsxXSxpKCkpOltnLHldfSxuLmNlbnRlcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obT10WzBdJTM2MCpxXyx4PXRbMV0lMzYwKnFfLGkoKSk6W20qTF8seCpMX119LG4ucm90YXRlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhiPXRbMF0lMzYwKnFfLHc9dFsxXSUzNjAqcV8sTT10Lmxlbmd0aD4yP3RbMl0lMzYwKnFfOjAsaSgpKTpbYipMXyx3KkxfLE0qTF9dfSxuLnByZWNpc2lvbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oQT1teShyLEU9dCp0KSxvKCkpOlZfKEUpfSxuLmZpdEV4dGVudD1mdW5jdGlvbih0LGUpe3JldHVybiBHaShuLHQsZSl9LG4uZml0U2l6ZT1mdW5jdGlvbih0LGUpe3JldHVybiBKaShuLHQsZSl9LGZ1bmN0aW9uKCl7cmV0dXJuIHU9dC5hcHBseSh0aGlzLGFyZ3VtZW50cyksbi5pbnZlcnQ9dS5pbnZlcnQmJmUsaSgpfX1mdW5jdGlvbiBlbyh0KXt2YXIgbj0wLGU9Q18vMyxyPW5vKHQpLGk9cihuLGUpO3JldHVybiBpLnBhcmFsbGVscz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD9yKG49dFswXSpxXyxlPXRbMV0qcV8pOltuKkxfLGUqTF9dfSxpfWZ1bmN0aW9uIHJvKHQpe2Z1bmN0aW9uIG4odCxuKXtyZXR1cm5bdCplLEhfKG4pL2VdfXZhciBlPUZfKHQpO3JldHVybiBuLmludmVydD1mdW5jdGlvbih0LG4pe3JldHVyblt0L2UsZ3IobiplKV19LG59ZnVuY3Rpb24gaW8odCxuKXtmdW5jdGlvbiBlKHQsbil7dmFyIGU9Vl8oby0yKmkqSF8obikpL2k7cmV0dXJuW2UqSF8odCo9aSksdS1lKkZfKHQpXX12YXIgcj1IXyh0KSxpPShyK0hfKG4pKS8yO2lmKFVfKGkpPEVfKXJldHVybiBybyh0KTt2YXIgbz0xK3IqKDIqaS1yKSx1PVZfKG8pL2k7cmV0dXJuIGUuaW52ZXJ0PWZ1bmN0aW9uKHQsbil7dmFyIGU9dS1uO3JldHVybltPXyh0LFVfKGUpKS9pKlhfKGUpLGdyKChvLSh0KnQrZSplKSppKmkpLygyKmkpKV19LGV9ZnVuY3Rpb24gb28odCl7dmFyIG49dC5sZW5ndGg7cmV0dXJue3BvaW50OmZ1bmN0aW9uKGUscil7Zm9yKHZhciBpPS0xOysraTxuOyl0W2ldLnBvaW50KGUscil9LHNwaGVyZTpmdW5jdGlvbigpe2Zvcih2YXIgZT0tMTsrK2U8bjspdFtlXS5zcGhlcmUoKX0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7Zm9yKHZhciBlPS0xOysrZTxuOyl0W2VdLmxpbmVTdGFydCgpfSxsaW5lRW5kOmZ1bmN0aW9uKCl7Zm9yKHZhciBlPS0xOysrZTxuOyl0W2VdLmxpbmVFbmQoKX0scG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7Zm9yKHZhciBlPS0xOysrZTxuOyl0W2VdLnBvbHlnb25TdGFydCgpfSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7Zm9yKHZhciBlPS0xOysrZTxuOyl0W2VdLnBvbHlnb25FbmQoKX19fWZ1bmN0aW9uIHVvKHQpe3JldHVybiBmdW5jdGlvbihuLGUpe3ZhciByPUZfKG4pLGk9Rl8oZSksbz10KHIqaSk7cmV0dXJuW28qaSpIXyhuKSxvKkhfKGUpXX19ZnVuY3Rpb24gYW8odCl7cmV0dXJuIGZ1bmN0aW9uKG4sZSl7dmFyIHI9Vl8obipuK2UqZSksaT10KHIpLG89SF8oaSk7cmV0dXJuW09fKG4qbyxyKkZfKGkpKSxncihyJiZlKm8vcildfX1mdW5jdGlvbiBjbyh0LG4pe3JldHVyblt0LEJfKFdfKCh6XytuKS8yKSldfWZ1bmN0aW9uIHNvKHQpe3ZhciBuLGU9dG8odCkscj1lLnNjYWxlLGk9ZS50cmFuc2xhdGUsbz1lLmNsaXBFeHRlbnQ7cmV0dXJuIGUuc2NhbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHIodCksbiYmZS5jbGlwRXh0ZW50KG51bGwpLGUpOnIoKX0sZS50cmFuc2xhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGkodCksbiYmZS5jbGlwRXh0ZW50KG51bGwpLGUpOmkoKX0sZS5jbGlwRXh0ZW50PWZ1bmN0aW9uKHQpe2lmKCFhcmd1bWVudHMubGVuZ3RoKXJldHVybiBuP251bGw6bygpO2lmKG49bnVsbD09dCl7dmFyIHU9Q18qcigpLGE9aSgpO3Q9W1thWzBdLXUsYVsxXS11XSxbYVswXSt1LGFbMV0rdV1dfXJldHVybiBvKHQpLGV9LGUuY2xpcEV4dGVudChudWxsKX1mdW5jdGlvbiBmbyh0KXtyZXR1cm4gV18oKHpfK3QpLzIpfWZ1bmN0aW9uIGxvKHQsbil7ZnVuY3Rpb24gZSh0LG4pe28+MD9uPC16XytFXyYmKG49LXpfK0VfKTpuPnpfLUVfJiYobj16Xy1FXyk7dmFyIGU9by9qXyhmbyhuKSxpKTtyZXR1cm5bZSpIXyhpKnQpLG8tZSpGXyhpKnQpXX12YXIgcj1GXyh0KSxpPXQ9PT1uP0hfKHQpOkJfKHIvRl8obikpL0JfKGZvKG4pL2ZvKHQpKSxvPXIqal8oZm8odCksaSkvaTtyZXR1cm4gaT8oZS5pbnZlcnQ9ZnVuY3Rpb24odCxuKXt2YXIgZT1vLW4scj1YXyhpKSpWXyh0KnQrZSplKTtyZXR1cm5bT18odCxVXyhlKSkvaSpYXyhlKSwyKkRfKGpfKG8vciwxL2kpKS16X119LGUpOmNvfWZ1bmN0aW9uIGhvKHQsbil7cmV0dXJuW3Qsbl19ZnVuY3Rpb24gcG8odCxuKXtmdW5jdGlvbiBlKHQsbil7dmFyIGU9by1uLHI9aSp0O3JldHVybltlKkhfKHIpLG8tZSpGXyhyKV19dmFyIHI9Rl8odCksaT10PT09bj9IXyh0KTooci1GXyhuKSkvKG4tdCksbz1yL2krdDtyZXR1cm4gVV8oaSk8RV8/aG86KGUuaW52ZXJ0PWZ1bmN0aW9uKHQsbil7dmFyIGU9by1uO3JldHVybltPXyh0LFVfKGUpKS9pKlhfKGUpLG8tWF8oaSkqVl8odCp0K2UqZSldfSxlKX1mdW5jdGlvbiB2byh0LG4pe3ZhciBlPUZfKG4pLHI9Rl8odCkqZTtyZXR1cm5bZSpIXyh0KS9yLEhfKG4pL3JdfWZ1bmN0aW9uIF9vKHQsbixlLHIpe3JldHVybiAxPT09dCYmMT09PW4mJjA9PT1lJiYwPT09cj9JZzokaSh7cG9pbnQ6ZnVuY3Rpb24oaSxvKXt0aGlzLnN0cmVhbS5wb2ludChpKnQrZSxvKm4rcil9fSl9ZnVuY3Rpb24gZ28odCxuKXtyZXR1cm5bRl8obikqSF8odCksSF8obildfWZ1bmN0aW9uIHlvKHQsbil7dmFyIGU9Rl8obikscj0xK0ZfKHQpKmU7cmV0dXJuW2UqSF8odCkvcixIXyhuKS9yXX1mdW5jdGlvbiBtbyh0LG4pe3JldHVybltCXyhXXygoel8rbikvMikpLC10XX1mdW5jdGlvbiB4byh0LG4pe3JldHVybiB0LnBhcmVudD09PW4ucGFyZW50PzE6Mn1mdW5jdGlvbiBibyh0KXtyZXR1cm4gdC5yZWR1Y2Uod28sMCkvdC5sZW5ndGh9ZnVuY3Rpb24gd28odCxuKXtyZXR1cm4gdCtuLnh9ZnVuY3Rpb24gTW8odCl7cmV0dXJuIDErdC5yZWR1Y2UoVG8sMCl9ZnVuY3Rpb24gVG8odCxuKXtyZXR1cm4gTWF0aC5tYXgodCxuLnkpfWZ1bmN0aW9uIGtvKHQpe2Zvcih2YXIgbjtuPXQuY2hpbGRyZW47KXQ9blswXTtyZXR1cm4gdH1mdW5jdGlvbiBTbyh0KXtmb3IodmFyIG47bj10LmNoaWxkcmVuOyl0PW5bbi5sZW5ndGgtMV07cmV0dXJuIHR9ZnVuY3Rpb24gTm8odCl7dmFyIG49MCxlPXQuY2hpbGRyZW4scj1lJiZlLmxlbmd0aDtpZihyKWZvcig7LS1yPj0wOyluKz1lW3JdLnZhbHVlO2Vsc2Ugbj0xO3QudmFsdWU9bn1mdW5jdGlvbiBFbyh0LG4pe2lmKHQ9PT1uKXJldHVybiB0O3ZhciBlPXQuYW5jZXN0b3JzKCkscj1uLmFuY2VzdG9ycygpLGk9bnVsbDtmb3IodD1lLnBvcCgpLG49ci5wb3AoKTt0PT09bjspaT10LHQ9ZS5wb3AoKSxuPXIucG9wKCk7cmV0dXJuIGl9ZnVuY3Rpb24gQW8odCxuKXt2YXIgZSxyLGksbyx1LGE9bmV3IExvKHQpLGM9K3QudmFsdWUmJihhLnZhbHVlPXQudmFsdWUpLHM9W2FdO2ZvcihudWxsPT1uJiYobj16byk7ZT1zLnBvcCgpOylpZihjJiYoZS52YWx1ZT0rZS5kYXRhLnZhbHVlKSwoaT1uKGUuZGF0YSkpJiYodT1pLmxlbmd0aCkpZm9yKGUuY2hpbGRyZW49bmV3IEFycmF5KHUpLG89dS0xO28+PTA7LS1vKXMucHVzaChyPWUuY2hpbGRyZW5bb109bmV3IExvKGlbb10pKSxyLnBhcmVudD1lLHIuZGVwdGg9ZS5kZXB0aCsxO3JldHVybiBhLmVhY2hCZWZvcmUoUm8pfWZ1bmN0aW9uIENvKCl7cmV0dXJuIEFvKHRoaXMpLmVhY2hCZWZvcmUoUG8pfWZ1bmN0aW9uIHpvKHQpe3JldHVybiB0LmNoaWxkcmVufWZ1bmN0aW9uIFBvKHQpe3QuZGF0YT10LmRhdGEuZGF0YX1mdW5jdGlvbiBSbyh0KXt2YXIgbj0wO2RvIHQuaGVpZ2h0PW47d2hpbGUoKHQ9dC5wYXJlbnQpJiZ0LmhlaWdodDwrK24pfWZ1bmN0aW9uIExvKHQpe3RoaXMuZGF0YT10LHRoaXMuZGVwdGg9dGhpcy5oZWlnaHQ9MCx0aGlzLnBhcmVudD1udWxsfWZ1bmN0aW9uIHFvKHQpe3RoaXMuXz10LHRoaXMubmV4dD1udWxsfWZ1bmN0aW9uIFVvKHQsbil7dmFyIGU9bi54LXQueCxyPW4ueS10LnksaT10LnItbi5yO3JldHVybiBpKmkrMWUtNj5lKmUrcipyfWZ1bmN0aW9uIERvKHQsbil7dmFyIGUscixpLG89bnVsbCx1PXQuaGVhZDtzd2l0Y2gobi5sZW5ndGgpe2Nhc2UgMTplPU9vKG5bMF0pO2JyZWFrO2Nhc2UgMjplPUZvKG5bMF0sblsxXSk7YnJlYWs7Y2FzZSAzOmU9SW8oblswXSxuWzFdLG5bMl0pfWZvcig7dTspaT11Ll8scj11Lm5leHQsZSYmVW8oZSxpKT9vPXU6KG8/KHQudGFpbD1vLG8ubmV4dD1udWxsKTp0LmhlYWQ9dC50YWlsPW51bGwsbi5wdXNoKGkpLGU9RG8odCxuKSxuLnBvcCgpLHQuaGVhZD8odS5uZXh0PXQuaGVhZCx0LmhlYWQ9dSk6KHUubmV4dD1udWxsLHQuaGVhZD10LnRhaWw9dSksbz10LnRhaWwsby5uZXh0PXIpLHU9cjtyZXR1cm4gdC50YWlsPW8sZX1mdW5jdGlvbiBPbyh0KXtyZXR1cm57eDp0LngseTp0Lnkscjp0LnJ9fWZ1bmN0aW9uIEZvKHQsbil7dmFyIGU9dC54LHI9dC55LGk9dC5yLG89bi54LHU9bi55LGE9bi5yLGM9by1lLHM9dS1yLGY9YS1pLGw9TWF0aC5zcXJ0KGMqYytzKnMpO3JldHVybnt4OihlK28rYy9sKmYpLzIseToocit1K3MvbCpmKS8yLHI6KGwraSthKS8yfX1mdW5jdGlvbiBJbyh0LG4sZSl7dmFyIHI9dC54LGk9dC55LG89dC5yLHU9bi54LGE9bi55LGM9bi5yLHM9ZS54LGY9ZS55LGw9ZS5yLGg9Miooci11KSxwPTIqKGktYSksZD0yKihjLW8pLHY9cipyK2kqaS1vKm8tdSp1LWEqYStjKmMsXz0yKihyLXMpLGc9MiooaS1mKSx5PTIqKGwtbyksbT1yKnIraSppLW8qby1zKnMtZipmK2wqbCx4PV8qcC1oKmcsYj0ocCptLWcqdikveC1yLHc9KGcqZC1wKnkpL3gsTT0oXyp2LWgqbSkveC1pLFQ9KGgqeS1fKmQpL3gsaz13KncrVCpULTEsUz0yKihiKncrTSpUK28pLE49YipiK00qTS1vKm8sRT0oLVMtTWF0aC5zcXJ0KFMqUy00KmsqTikpLygyKmspO3JldHVybnt4OmIrdypFK3IseTpNK1QqRStpLHI6RX19ZnVuY3Rpb24gWW8odCxuLGUpe3ZhciByPXQueCxpPXQueSxvPW4ucitlLnIsdT10LnIrZS5yLGE9bi54LXIsYz1uLnktaSxzPWEqYStjKmM7aWYocyl7dmFyIGY9LjUrKCh1Kj11KS0obyo9bykpLygyKnMpLGw9TWF0aC5zcXJ0KE1hdGgubWF4KDAsMipvKih1K3MpLSh1LT1zKSp1LW8qbykpLygyKnMpO2UueD1yK2YqYStsKmMsZS55PWkrZipjLWwqYX1lbHNlIGUueD1yK3UsZS55PWl9ZnVuY3Rpb24gQm8odCxuKXt2YXIgZT1uLngtdC54LHI9bi55LXQueSxpPXQucituLnI7cmV0dXJuIGkqaS0xZS02PmUqZStyKnJ9ZnVuY3Rpb24gam8odCxuKXtmb3IodmFyIGU9dC5fLnI7dCE9PW47KWUrPTIqKHQ9dC5uZXh0KS5fLnI7cmV0dXJuIGUtbi5fLnJ9ZnVuY3Rpb24gSG8odCxuLGUpe3ZhciByPXQuXyxpPXQubmV4dC5fLG89ci5yK2kucix1PShyLngqaS5yK2kueCpyLnIpL28tbixhPShyLnkqaS5yK2kueSpyLnIpL28tZTtyZXR1cm4gdSp1K2EqYX1mdW5jdGlvbiBYbyh0KXt0aGlzLl89dCx0aGlzLm5leHQ9bnVsbCx0aGlzLnByZXZpb3VzPW51bGx9ZnVuY3Rpb24gVm8odCl7aWYoIShpPXQubGVuZ3RoKSlyZXR1cm4gMDt2YXIgbixlLHIsaTtpZihuPXRbMF0sbi54PTAsbi55PTAsIShpPjEpKXJldHVybiBuLnI7aWYoZT10WzFdLG4ueD0tZS5yLGUueD1uLnIsZS55PTAsIShpPjIpKXJldHVybiBuLnIrZS5yO1lvKGUsbixyPXRbMl0pO3ZhciBvLHUsYSxjLHMsZixsLGg9bi5yKm4ucixwPWUuciplLnIsZD1yLnIqci5yLHY9aCtwK2QsXz1oKm4ueCtwKmUueCtkKnIueCxnPWgqbi55K3AqZS55K2Qqci55O249bmV3IFhvKG4pLGU9bmV3IFhvKGUpLHI9bmV3IFhvKHIpLG4ubmV4dD1yLnByZXZpb3VzPWUsZS5uZXh0PW4ucHJldmlvdXM9cixyLm5leHQ9ZS5wcmV2aW91cz1uO3Q6Zm9yKGE9MzthPGk7KythKXtZbyhuLl8sZS5fLHI9dFthXSkscj1uZXcgWG8ociksYz1lLm5leHQscz1uLnByZXZpb3VzLGY9ZS5fLnIsbD1uLl8ucjtkbyBpZihmPD1sKXtpZihCbyhjLl8sci5fKSl7ZituLl8ucitlLl8ucj5qbyhjLGUpP249YzplPWMsbi5uZXh0PWUsZS5wcmV2aW91cz1uLC0tYTtjb250aW51ZSB0fWYrPWMuXy5yLGM9Yy5uZXh0fWVsc2V7aWYoQm8ocy5fLHIuXykpe2pvKG4scyk+bCtuLl8ucitlLl8ucj9uPXM6ZT1zLG4ubmV4dD1lLGUucHJldmlvdXM9biwtLWE7Y29udGludWUgdH1sKz1zLl8ucixzPXMucHJldmlvdXN9d2hpbGUoYyE9PXMubmV4dCk7Zm9yKHIucHJldmlvdXM9bixyLm5leHQ9ZSxuLm5leHQ9ZS5wcmV2aW91cz1lPXIsdis9ZD1yLl8ucipyLl8ucixfKz1kKnIuXy54LGcrPWQqci5fLnksaD1IbyhuLG89Xy92LHU9Zy92KTsocj1yLm5leHQpIT09ZTspKGQ9SG8ocixvLHUpKTxoJiYobj1yLGg9ZCk7ZT1uLm5leHR9Zm9yKG49W2UuX10scj1lOyhyPXIubmV4dCkhPT1lOyluLnB1c2goci5fKTtmb3Iocj1HeShuKSxhPTA7YTxpOysrYSluPXRbYV0sbi54LT1yLngsbi55LT1yLnk7cmV0dXJuIHIucn1mdW5jdGlvbiBXbyh0KXtyZXR1cm4gbnVsbD09dD9udWxsOiRvKHQpfWZ1bmN0aW9uICRvKHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0KXRocm93IG5ldyBFcnJvcjtyZXR1cm4gdH1mdW5jdGlvbiBabygpe3JldHVybiAwfWZ1bmN0aW9uIEdvKHQpe3JldHVybiBNYXRoLnNxcnQodC52YWx1ZSl9ZnVuY3Rpb24gSm8odCl7cmV0dXJuIGZ1bmN0aW9uKG4pe24uY2hpbGRyZW58fChuLnI9TWF0aC5tYXgoMCwrdChuKXx8MCkpfX1mdW5jdGlvbiBRbyh0LG4pe3JldHVybiBmdW5jdGlvbihlKXtpZihyPWUuY2hpbGRyZW4pe3ZhciByLGksbyx1PXIubGVuZ3RoLGE9dChlKSpufHwwO2lmKGEpZm9yKGk9MDtpPHU7KytpKXJbaV0ucis9YTtpZihvPVZvKHIpLGEpZm9yKGk9MDtpPHU7KytpKXJbaV0uci09YTtlLnI9bythfX19ZnVuY3Rpb24gS28odCl7cmV0dXJuIGZ1bmN0aW9uKG4pe3ZhciBlPW4ucGFyZW50O24ucio9dCxlJiYobi54PWUueCt0Km4ueCxuLnk9ZS55K3Qqbi55KX19ZnVuY3Rpb24gdHUodCl7cmV0dXJuIHQuaWR9ZnVuY3Rpb24gbnUodCl7cmV0dXJuIHQucGFyZW50SWR9ZnVuY3Rpb24gZXUodCxuKXtyZXR1cm4gdC5wYXJlbnQ9PT1uLnBhcmVudD8xOjJ9ZnVuY3Rpb24gcnUodCl7dmFyIG49dC5jaGlsZHJlbjtyZXR1cm4gbj9uWzBdOnQudH1mdW5jdGlvbiBpdSh0KXt2YXIgbj10LmNoaWxkcmVuO3JldHVybiBuP25bbi5sZW5ndGgtMV06dC50fWZ1bmN0aW9uIG91KHQsbixlKXt2YXIgcj1lLyhuLmktdC5pKTtuLmMtPXIsbi5zKz1lLHQuYys9cixuLnorPWUsbi5tKz1lfWZ1bmN0aW9uIHV1KHQpe2Zvcih2YXIgbixlPTAscj0wLGk9dC5jaGlsZHJlbixvPWkubGVuZ3RoOy0tbz49MDspbj1pW29dLG4ueis9ZSxuLm0rPWUsZSs9bi5zKyhyKz1uLmMpfWZ1bmN0aW9uIGF1KHQsbixlKXtyZXR1cm4gdC5hLnBhcmVudD09PW4ucGFyZW50P3QuYTplfWZ1bmN0aW9uIGN1KHQsbil7dGhpcy5fPXQsdGhpcy5wYXJlbnQ9bnVsbCx0aGlzLmNoaWxkcmVuPW51bGwsdGhpcy5BPW51bGwsdGhpcy5hPXRoaXMsdGhpcy56PTAsdGhpcy5tPTAsdGhpcy5jPTAsdGhpcy5zPTAsdGhpcy50PW51bGwsdGhpcy5pPW59ZnVuY3Rpb24gc3UodCl7Zm9yKHZhciBuLGUscixpLG8sdT1uZXcgY3UodCwwKSxhPVt1XTtuPWEucG9wKCk7KWlmKHI9bi5fLmNoaWxkcmVuKWZvcihuLmNoaWxkcmVuPW5ldyBBcnJheShvPXIubGVuZ3RoKSxpPW8tMTtpPj0wOy0taSlhLnB1c2goZT1uLmNoaWxkcmVuW2ldPW5ldyBjdShyW2ldLGkpKSxlLnBhcmVudD1uO3JldHVybih1LnBhcmVudD1uZXcgY3UobnVsbCwwKSkuY2hpbGRyZW49W3VdLHV9ZnVuY3Rpb24gZnUodCxuLGUscixpLG8pe2Zvcih2YXIgdSxhLGMscyxmLGwsaCxwLGQsdixfLGc9W10seT1uLmNoaWxkcmVuLG09MCx4PTAsYj15Lmxlbmd0aCx3PW4udmFsdWU7bTxiOyl7Yz1pLWUscz1vLXI7ZG8gZj15W3grK10udmFsdWU7d2hpbGUoIWYmJng8Yik7Zm9yKGw9aD1mLHY9TWF0aC5tYXgocy9jLGMvcykvKHcqdCksXz1mKmYqdixkPU1hdGgubWF4KGgvXyxfL2wpO3g8YjsrK3gpe2lmKGYrPWE9eVt4XS52YWx1ZSxhPGwmJihsPWEpLGE+aCYmKGg9YSksXz1mKmYqdixwPU1hdGgubWF4KGgvXyxfL2wpLHA+ZCl7Zi09YTticmVha31kPXB9Zy5wdXNoKHU9e3ZhbHVlOmYsZGljZTpjPHMsY2hpbGRyZW46eS5zbGljZShtLHgpfSksdS5kaWNlP25tKHUsZSxyLGksdz9yKz1zKmYvdzpvKTpjbSh1LGUscix3P2UrPWMqZi93Omksbyksdy09ZixtPXh9cmV0dXJuIGd9ZnVuY3Rpb24gbHUodCxuKXtyZXR1cm4gdFswXS1uWzBdfHx0WzFdLW5bMV19ZnVuY3Rpb24gaHUodCl7Zm9yKHZhciBuPXQubGVuZ3RoLGU9WzAsMV0scj0yLGk9MjtpPG47KytpKXtmb3IoO3I+MSYmZ20odFtlW3ItMl1dLHRbZVtyLTFdXSx0W2ldKTw9MDspLS1yO2VbcisrXT1pfXJldHVybiBlLnNsaWNlKDAscil9ZnVuY3Rpb24gcHUodCl7aWYoISh0Pj0xKSl0aHJvdyBuZXcgRXJyb3I7dGhpcy5fc2l6ZT10LHRoaXMuX2NhbGw9dGhpcy5fZXJyb3I9bnVsbCx0aGlzLl90YXNrcz1bXSx0aGlzLl9kYXRhPVtdLHRoaXMuX3dhaXRpbmc9dGhpcy5fYWN0aXZlPXRoaXMuX2VuZGVkPXRoaXMuX3N0YXJ0PTB9ZnVuY3Rpb24gZHUodCl7aWYoIXQuX3N0YXJ0KXRyeXt2dSh0KX1jYXRjaChuKXtpZih0Ll90YXNrc1t0Ll9lbmRlZCt0Ll9hY3RpdmUtMV0pZ3UodCxuKTtlbHNlIGlmKCF0Ll9kYXRhKXRocm93IG59fWZ1bmN0aW9uIHZ1KHQpe2Zvcig7dC5fc3RhcnQ9dC5fd2FpdGluZyYmdC5fYWN0aXZlPHQuX3NpemU7KXt2YXIgbj10Ll9lbmRlZCt0Ll9hY3RpdmUsZT10Ll90YXNrc1tuXSxyPWUubGVuZ3RoLTEsaT1lW3JdO2Vbcl09X3UodCxuKSwtLXQuX3dhaXRpbmcsKyt0Ll9hY3RpdmUsZT1pLmFwcGx5KG51bGwsZSksdC5fdGFza3Nbbl0mJih0Ll90YXNrc1tuXT1lfHx3bSl9fWZ1bmN0aW9uIF91KHQsbil7cmV0dXJuIGZ1bmN0aW9uKGUscil7dC5fdGFza3Nbbl0mJigtLXQuX2FjdGl2ZSwrK3QuX2VuZGVkLHQuX3Rhc2tzW25dPW51bGwsbnVsbD09dC5fZXJyb3ImJihudWxsIT1lP2d1KHQsZSk6KHQuX2RhdGFbbl09cix0Ll93YWl0aW5nP2R1KHQpOnl1KHQpKSkpfX1mdW5jdGlvbiBndSh0LG4pe3ZhciBlLHI9dC5fdGFza3MubGVuZ3RoO2Zvcih0Ll9lcnJvcj1uLHQuX2RhdGE9dm9pZCAwLHQuX3dhaXRpbmc9TmFOOy0tcj49MDspaWYoKGU9dC5fdGFza3Nbcl0pJiYodC5fdGFza3Nbcl09bnVsbCxlLmFib3J0KSl0cnl7ZS5hYm9ydCgpfWNhdGNoKHQpe310Ll9hY3RpdmU9TmFOLHl1KHQpfWZ1bmN0aW9uIHl1KHQpe2lmKCF0Ll9hY3RpdmUmJnQuX2NhbGwpe3ZhciBuPXQuX2RhdGE7dC5fZGF0YT12b2lkIDAsdC5fY2FsbCh0Ll9lcnJvcixuKX19ZnVuY3Rpb24gbXUodCl7cmV0dXJuIG5ldyBwdShhcmd1bWVudHMubGVuZ3RoPyt0OjEvMCl9ZnVuY3Rpb24geHUodCl7cmV0dXJuIGZ1bmN0aW9uKG4sZSl7dChudWxsPT1uP2U6bnVsbCl9fWZ1bmN0aW9uIGJ1KHQpe3ZhciBuPXQucmVzcG9uc2VUeXBlO3JldHVybiBuJiYidGV4dCIhPT1uP3QucmVzcG9uc2U6dC5yZXNwb25zZVRleHR9ZnVuY3Rpb24gd3UodCxuKXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIHQoZS5yZXNwb25zZVRleHQsbil9fWZ1bmN0aW9uIE11KHQpe2Z1bmN0aW9uIG4obil7dmFyIG89bisiIix1PWUuZ2V0KG8pO2lmKCF1KXtpZihpIT09WW0pcmV0dXJuIGk7ZS5zZXQobyx1PXIucHVzaChuKSl9cmV0dXJuIHRbKHUtMSkldC5sZW5ndGhdfXZhciBlPVllKCkscj1bXSxpPVltO3JldHVybiB0PW51bGw9PXQ/W106SW0uY2FsbCh0KSxuLmRvbWFpbj1mdW5jdGlvbih0KXtpZighYXJndW1lbnRzLmxlbmd0aClyZXR1cm4gci5zbGljZSgpO3I9W10sZT1ZZSgpO2Zvcih2YXIgaSxvLHU9LTEsYT10Lmxlbmd0aDsrK3U8YTspZS5oYXMobz0oaT10W3VdKSsiIil8fGUuc2V0KG8sci5wdXNoKGkpKTtyZXR1cm4gbn0sbi5yYW5nZT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1JbS5jYWxsKGUpLG4pOnQuc2xpY2UoKX0sbi51bmtub3duPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPXQsbik6aX0sbi5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIE11KCkuZG9tYWluKHIpLnJhbmdlKHQpLnVua25vd24oaSl9LG59ZnVuY3Rpb24gVHUoKXtmdW5jdGlvbiB0KCl7dmFyIHQ9aSgpLmxlbmd0aCxyPXVbMV08dVswXSxsPXVbci0wXSxoPXVbMS1yXTtuPShoLWwpL01hdGgubWF4KDEsdC1jKzIqcyksYSYmKG49TWF0aC5mbG9vcihuKSksbCs9KGgtbC1uKih0LWMpKSpmLGU9biooMS1jKSxhJiYobD1NYXRoLnJvdW5kKGwpLGU9TWF0aC5yb3VuZChlKSk7dmFyIHA9UXModCkubWFwKGZ1bmN0aW9uKHQpe3JldHVybiBsK24qdH0pO3JldHVybiBvKHI/cC5yZXZlcnNlKCk6cCl9dmFyIG4sZSxyPU11KCkudW5rbm93bih2b2lkIDApLGk9ci5kb21haW4sbz1yLnJhbmdlLHU9WzAsMV0sYT0hMSxjPTAscz0wLGY9LjU7cmV0dXJuIGRlbGV0ZSByLnVua25vd24sci5kb21haW49ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGkobiksdCgpKTppKCl9LHIucmFuZ2U9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHU9WytuWzBdLCtuWzFdXSx0KCkpOnUuc2xpY2UoKX0sci5yYW5nZVJvdW5kPWZ1bmN0aW9uKG4pe3JldHVybiB1PVsrblswXSwrblsxXV0sYT0hMCx0KCl9LHIuYmFuZHdpZHRoPWZ1bmN0aW9uKCl7cmV0dXJuIGV9LHIuc3RlcD1mdW5jdGlvbigpe3JldHVybiBufSxyLnJvdW5kPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPSEhbix0KCkpOmF9LHIucGFkZGluZz1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz1zPU1hdGgubWF4KDAsTWF0aC5taW4oMSxuKSksdCgpKTpjfSxyLnBhZGRpbmdJbm5lcj1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz1NYXRoLm1heCgwLE1hdGgubWluKDEsbikpLHQoKSk6Y30sci5wYWRkaW5nT3V0ZXI9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9TWF0aC5tYXgoMCxNYXRoLm1pbigxLG4pKSx0KCkpOnN9LHIuYWxpZ249ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGY9TWF0aC5tYXgoMCxNYXRoLm1pbigxLG4pKSx0KCkpOmZ9LHIuY29weT1mdW5jdGlvbigpe3JldHVybiBUdSgpLmRvbWFpbihpKCkpLnJhbmdlKHUpLnJvdW5kKGEpLnBhZGRpbmdJbm5lcihjKS5wYWRkaW5nT3V0ZXIocykuYWxpZ24oZil9LHQoKX1mdW5jdGlvbiBrdSh0KXt2YXIgbj10LmNvcHk7cmV0dXJuIHQucGFkZGluZz10LnBhZGRpbmdPdXRlcixkZWxldGUgdC5wYWRkaW5nSW5uZXIsZGVsZXRlIHQucGFkZGluZ091dGVyLHQuY29weT1mdW5jdGlvbigpe3JldHVybiBrdShuKCkpfSx0fWZ1bmN0aW9uIFN1KCl7cmV0dXJuIGt1KFR1KCkucGFkZGluZ0lubmVyKDEpKX1mdW5jdGlvbiBOdSh0LG4pe3JldHVybihuLT10PSt0KT9mdW5jdGlvbihlKXtyZXR1cm4oZS10KS9ufTpCbShuKX1mdW5jdGlvbiBFdSh0KXtyZXR1cm4gZnVuY3Rpb24obixlKXt2YXIgcj10KG49K24sZT0rZSk7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiB0PD1uPzA6dD49ZT8xOnIodCl9fX1mdW5jdGlvbiBBdSh0KXtyZXR1cm4gZnVuY3Rpb24obixlKXt2YXIgcj10KG49K24sZT0rZSk7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiB0PD0wP246dD49MT9lOnIodCl9fX1mdW5jdGlvbiBDdSh0LG4sZSxyKXt2YXIgaT10WzBdLG89dFsxXSx1PW5bMF0sYT1uWzFdO3JldHVybiBvPGk/KGk9ZShvLGkpLHU9cihhLHUpKTooaT1lKGksbyksdT1yKHUsYSkpLGZ1bmN0aW9uKHQpe3JldHVybiB1KGkodCkpfX1mdW5jdGlvbiB6dSh0LG4sZSxyKXt2YXIgaT1NYXRoLm1pbih0Lmxlbmd0aCxuLmxlbmd0aCktMSxvPW5ldyBBcnJheShpKSx1PW5ldyBBcnJheShpKSxhPS0xO2Zvcih0W2ldPHRbMF0mJih0PXQuc2xpY2UoKS5yZXZlcnNlKCksbj1uLnNsaWNlKCkucmV2ZXJzZSgpKTsrK2E8aTspb1thXT1lKHRbYV0sdFthKzFdKSx1W2FdPXIoblthXSxuW2ErMV0pO3JldHVybiBmdW5jdGlvbihuKXt2YXIgZT1Pcyh0LG4sMSxpKS0xO3JldHVybiB1W2VdKG9bZV0obikpfX1mdW5jdGlvbiBQdSh0LG4pe3JldHVybiBuLmRvbWFpbih0LmRvbWFpbigpKS5yYW5nZSh0LnJhbmdlKCkpLmludGVycG9sYXRlKHQuaW50ZXJwb2xhdGUoKSkuY2xhbXAodC5jbGFtcCgpKX1mdW5jdGlvbiBSdSh0LG4pe2Z1bmN0aW9uIGUoKXtyZXR1cm4gaT1NYXRoLm1pbihhLmxlbmd0aCxjLmxlbmd0aCk+Mj96dTpDdSxvPXU9bnVsbCxyfWZ1bmN0aW9uIHIobil7cmV0dXJuKG98fChvPWkoYSxjLGY/RXUodCk6dCxzKSkpKCtuKX12YXIgaSxvLHUsYT1IbSxjPUhtLHM9QWgsZj0hMTtyZXR1cm4gci5pbnZlcnQ9ZnVuY3Rpb24odCl7cmV0dXJuKHV8fCh1PWkoYyxhLE51LGY/QXUobik6bikpKSgrdCl9LHIuZG9tYWluPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPUZtLmNhbGwodCxqbSksZSgpKTphLnNsaWNlKCl9LHIucmFuZ2U9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGM9SW0uY2FsbCh0KSxlKCkpOmMuc2xpY2UoKX0sci5yYW5nZVJvdW5kPWZ1bmN0aW9uKHQpe3JldHVybiBjPUltLmNhbGwodCkscz1DaCxlKCl9LHIuY2xhbXA9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGY9ISF0LGUoKSk6Zn0sci5pbnRlcnBvbGF0ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz10LGUoKSk6c30sZSgpfWZ1bmN0aW9uIEx1KHQpe3ZhciBuPXQuZG9tYWluO3JldHVybiB0LnRpY2tzPWZ1bmN0aW9uKHQpe3ZhciBlPW4oKTtyZXR1cm4gZWYoZVswXSxlW2UubGVuZ3RoLTFdLG51bGw9PXQ/MTA6dCl9LHQudGlja0Zvcm1hdD1mdW5jdGlvbih0LGUpe3JldHVybiBYbShuKCksdCxlKX0sdC5uaWNlPWZ1bmN0aW9uKGUpe3ZhciBpPW4oKSxvPWkubGVuZ3RoLTEsdT1udWxsPT1lPzEwOmUsYT1pWzBdLGM9aVtvXSxzPXIoYSxjLHUpO3JldHVybiBzJiYocz1yKE1hdGguZmxvb3IoYS9zKSpzLE1hdGguY2VpbChjL3MpKnMsdSksaVswXT1NYXRoLmZsb29yKGEvcykqcyxpW29dPU1hdGguY2VpbChjL3MpKnMsbihpKSksdH0sdH1mdW5jdGlvbiBxdSgpe3ZhciB0PVJ1KE51LFRoKTtyZXR1cm4gdC5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIFB1KHQscXUoKSl9LEx1KHQpfWZ1bmN0aW9uIFV1KCl7ZnVuY3Rpb24gdCh0KXtyZXR1cm4rdH12YXIgbj1bMCwxXTtyZXR1cm4gdC5pbnZlcnQ9dCx0LmRvbWFpbj10LnJhbmdlPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPUZtLmNhbGwoZSxqbSksdCk6bi5zbGljZSgpfSx0LmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gVXUoKS5kb21haW4obil9LEx1KHQpfWZ1bmN0aW9uIER1KHQsbil7cmV0dXJuKG49TWF0aC5sb2cobi90KSk/ZnVuY3Rpb24oZSl7cmV0dXJuIE1hdGgubG9nKGUvdCkvbn06Qm0obil9ZnVuY3Rpb24gT3UodCxuKXtyZXR1cm4gdDwwP2Z1bmN0aW9uKGUpe3JldHVybi1NYXRoLnBvdygtbixlKSpNYXRoLnBvdygtdCwxLWUpfTpmdW5jdGlvbihlKXtyZXR1cm4gTWF0aC5wb3cobixlKSpNYXRoLnBvdyh0LDEtZSl9fWZ1bmN0aW9uIEZ1KHQpe3JldHVybiBpc0Zpbml0ZSh0KT8rKCIxZSIrdCk6dDwwPzA6dH1mdW5jdGlvbiBJdSh0KXtyZXR1cm4gMTA9PT10P0Z1OnQ9PT1NYXRoLkU/TWF0aC5leHA6ZnVuY3Rpb24obil7cmV0dXJuIE1hdGgucG93KHQsbil9fWZ1bmN0aW9uIFl1KHQpe3JldHVybiB0PT09TWF0aC5FP01hdGgubG9nOjEwPT09dCYmTWF0aC5sb2cxMHx8Mj09PXQmJk1hdGgubG9nMnx8KHQ9TWF0aC5sb2codCksZnVuY3Rpb24obil7cmV0dXJuIE1hdGgubG9nKG4pL3R9KX1mdW5jdGlvbiBCdSh0KXtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuLXQoLW4pfX1mdW5jdGlvbiBqdSgpe2Z1bmN0aW9uIG4oKXtyZXR1cm4gbz1ZdShpKSx1PUl1KGkpLHIoKVswXTwwJiYobz1CdShvKSx1PUJ1KHUpKSxlfXZhciBlPVJ1KER1LE91KS5kb21haW4oWzEsMTBdKSxyPWUuZG9tYWluLGk9MTAsbz1ZdSgxMCksdT1JdSgxMCk7cmV0dXJuIGUuYmFzZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0rdCxuKCkpOml9LGUuZG9tYWluPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyKHQpLG4oKSk6cigpfSxlLnRpY2tzPWZ1bmN0aW9uKHQpe3ZhciBuLGU9cigpLGE9ZVswXSxjPWVbZS5sZW5ndGgtMV07KG49YzxhKSYmKGg9YSxhPWMsYz1oKTt2YXIgcyxmLGwsaD1vKGEpLHA9byhjKSxkPW51bGw9PXQ/MTA6K3Qsdj1bXTtpZighKGklMSkmJnAtaDxkKXtpZihoPU1hdGgucm91bmQoaCktMSxwPU1hdGgucm91bmQocCkrMSxhPjApe2Zvcig7aDxwOysraClmb3IoZj0xLHM9dShoKTtmPGk7KytmKWlmKGw9cypmLCEobDxhKSl7aWYobD5jKWJyZWFrO3YucHVzaChsKX19ZWxzZSBmb3IoO2g8cDsrK2gpZm9yKGY9aS0xLHM9dShoKTtmPj0xOy0tZilpZihsPXMqZiwhKGw8YSkpe2lmKGw+YylicmVhazt2LnB1c2gobCl9fWVsc2Ugdj1lZihoLHAsTWF0aC5taW4ocC1oLGQpKS5tYXAodSk7cmV0dXJuIG4/di5yZXZlcnNlKCk6dn0sZS50aWNrRm9ybWF0PWZ1bmN0aW9uKG4scil7aWYobnVsbD09ciYmKHI9MTA9PT1pPyIuMGUiOiIsIiksImZ1bmN0aW9uIiE9dHlwZW9mIHImJihyPXQuZm9ybWF0KHIpKSxuPT09MS8wKXJldHVybiByO251bGw9PW4mJihuPTEwKTt2YXIgYT1NYXRoLm1heCgxLGkqbi9lLnRpY2tzKCkubGVuZ3RoKTtyZXR1cm4gZnVuY3Rpb24odCl7dmFyIG49dC91KE1hdGgucm91bmQobyh0KSkpO3JldHVybiBuKmk8aS0uNSYmKG4qPWkpLG48PWE/cih0KToiIn19LGUubmljZT1mdW5jdGlvbigpe3JldHVybiByKFZtKHIoKSx7Zmxvb3I6ZnVuY3Rpb24odCl7cmV0dXJuIHUoTWF0aC5mbG9vcihvKHQpKSl9LGNlaWw6ZnVuY3Rpb24odCl7cmV0dXJuIHUoTWF0aC5jZWlsKG8odCkpKX19KSl9LGUuY29weT1mdW5jdGlvbigpe3JldHVybiBQdShlLGp1KCkuYmFzZShpKSl9LGV9ZnVuY3Rpb24gSHUodCxuKXtyZXR1cm4gdDwwPy1NYXRoLnBvdygtdCxuKTpNYXRoLnBvdyh0LG4pfWZ1bmN0aW9uIFh1KCl7ZnVuY3Rpb24gdCh0LG4pe3JldHVybihuPUh1KG4sZSktKHQ9SHUodCxlKSkpP2Z1bmN0aW9uKHIpe3JldHVybihIdShyLGUpLXQpL259OkJtKG4pfWZ1bmN0aW9uIG4odCxuKXtyZXR1cm4gbj1IdShuLGUpLSh0PUh1KHQsZSkpLGZ1bmN0aW9uKHIpe3JldHVybiBIdSh0K24qciwxL2UpfX12YXIgZT0xLHI9UnUodCxuKSxpPXIuZG9tYWluO3JldHVybiByLmV4cG9uZW50PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPSt0LGkoaSgpKSk6ZX0sci5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIFB1KHIsWHUoKS5leHBvbmVudChlKSl9LEx1KHIpfWZ1bmN0aW9uIFZ1KCl7cmV0dXJuIFh1KCkuZXhwb25lbnQoLjUpfWZ1bmN0aW9uIFd1KCl7ZnVuY3Rpb24gdCgpe3ZhciB0PTAsbz1NYXRoLm1heCgxLHIubGVuZ3RoKTtmb3IoaT1uZXcgQXJyYXkoby0xKTsrK3Q8bzspaVt0LTFdPXVmKGUsdC9vKTtyZXR1cm4gbn1mdW5jdGlvbiBuKHQpe2lmKCFpc05hTih0PSt0KSlyZXR1cm4gcltPcyhpLHQpXX12YXIgZT1bXSxyPVtdLGk9W107cmV0dXJuIG4uaW52ZXJ0RXh0ZW50PWZ1bmN0aW9uKHQpe3ZhciBuPXIuaW5kZXhPZih0KTtyZXR1cm4gbjwwP1tOYU4sTmFOXTpbbj4wP2lbbi0xXTplWzBdLG48aS5sZW5ndGg/aVtuXTplW2UubGVuZ3RoLTFdXX0sbi5kb21haW49ZnVuY3Rpb24obil7aWYoIWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGUuc2xpY2UoKTtlPVtdO2Zvcih2YXIgcixpPTAsbz1uLmxlbmd0aDtpPG87KytpKXI9bltpXSxudWxsPT1yfHxpc05hTihyPStyKXx8ZS5wdXNoKHIpO3JldHVybiBlLnNvcnQocXMpLHQoKX0sbi5yYW5nZT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj1JbS5jYWxsKG4pLHQoKSk6ci5zbGljZSgpfSxuLnF1YW50aWxlcz1mdW5jdGlvbigpe3JldHVybiBpLnNsaWNlKCl9LG4uY29weT1mdW5jdGlvbigpe3JldHVybiBXdSgpLmRvbWFpbihlKS5yYW5nZShyKX0sbn1mdW5jdGlvbiAkdSgpe2Z1bmN0aW9uIHQodCl7aWYodDw9dClyZXR1cm4gdVtPcyhvLHQsMCxpKV19ZnVuY3Rpb24gbigpe3ZhciBuPS0xO2ZvcihvPW5ldyBBcnJheShpKTsrK248aTspb1tuXT0oKG4rMSkqci0obi1pKSplKS8oaSsxKTtyZXR1cm4gdH12YXIgZT0wLHI9MSxpPTEsbz1bLjVdLHU9WzAsMV07cmV0dXJuIHQuZG9tYWluPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPSt0WzBdLHI9K3RbMV0sbigpKTpbZSxyXX0sdC5yYW5nZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0odT1JbS5jYWxsKHQpKS5sZW5ndGgtMSxuKCkpOnUuc2xpY2UoKX0sdC5pbnZlcnRFeHRlbnQ9ZnVuY3Rpb24odCl7dmFyIG49dS5pbmRleE9mKHQpO3JldHVybiBuPDA/W05hTixOYU5dOm48MT9bZSxvWzBdXTpuPj1pP1tvW2ktMV0scl06W29bbi0xXSxvW25dXX0sdC5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuICR1KCkuZG9tYWluKFtlLHJdKS5yYW5nZSh1KX0sTHUodCl9ZnVuY3Rpb24gWnUoKXtmdW5jdGlvbiB0KHQpe2lmKHQ8PXQpcmV0dXJuIGVbT3Mobix0LDAscildfXZhciBuPVsuNV0sZT1bMCwxXSxyPTE7cmV0dXJuIHQuZG9tYWluPWZ1bmN0aW9uKGkpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPUltLmNhbGwoaSkscj1NYXRoLm1pbihuLmxlbmd0aCxlLmxlbmd0aC0xKSx0KTpuLnNsaWNlKCl9LHQucmFuZ2U9ZnVuY3Rpb24oaSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9SW0uY2FsbChpKSxyPU1hdGgubWluKG4ubGVuZ3RoLGUubGVuZ3RoLTEpLHQpOmUuc2xpY2UoKX0sdC5pbnZlcnRFeHRlbnQ9ZnVuY3Rpb24odCl7dmFyIHI9ZS5pbmRleE9mKHQpO3JldHVybltuW3ItMV0sbltyXV19LHQuY29weT1mdW5jdGlvbigpe3JldHVybiBadSgpLmRvbWFpbihuKS5yYW5nZShlKX0sdH1mdW5jdGlvbiBHdSh0LG4sZSxyKXtmdW5jdGlvbiBpKG4pe3JldHVybiB0KG49bmV3IERhdGUoK24pKSxufXJldHVybiBpLmZsb29yPWksaS5jZWlsPWZ1bmN0aW9uKGUpe3JldHVybiB0KGU9bmV3IERhdGUoZS0xKSksbihlLDEpLHQoZSksZX0saS5yb3VuZD1mdW5jdGlvbih0KXt2YXIgbj1pKHQpLGU9aS5jZWlsKHQpO3JldHVybiB0LW48ZS10P246ZX0saS5vZmZzZXQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbih0PW5ldyBEYXRlKCt0KSxudWxsPT1lPzE6TWF0aC5mbG9vcihlKSksdH0saS5yYW5nZT1mdW5jdGlvbihlLHIsbyl7dmFyIHU9W107aWYoZT1pLmNlaWwoZSksbz1udWxsPT1vPzE6TWF0aC5mbG9vcihvKSwhKGU8ciYmbz4wKSlyZXR1cm4gdTtkbyB1LnB1c2gobmV3IERhdGUoK2UpKTt3aGlsZShuKGUsbyksdChlKSxlPHIpO3JldHVybiB1fSxpLmZpbHRlcj1mdW5jdGlvbihlKXtyZXR1cm4gR3UoZnVuY3Rpb24obil7aWYobj49bilmb3IoO3QobiksIWUobik7KW4uc2V0VGltZShuLTEpfSxmdW5jdGlvbih0LHIpe2lmKHQ+PXQpZm9yKDstLXI+PTA7KWZvcig7bih0LDEpLCFlKHQpOyk7fSl9LGUmJihpLmNvdW50PWZ1bmN0aW9uKG4scil7cmV0dXJuIFdtLnNldFRpbWUoK24pLCRtLnNldFRpbWUoK3IpLHQoV20pLHQoJG0pLE1hdGguZmxvb3IoZShXbSwkbSkpfSxpLmV2ZXJ5PWZ1bmN0aW9uKHQpe3JldHVybiB0PU1hdGguZmxvb3IodCksaXNGaW5pdGUodCkmJnQ+MD90PjE/aS5maWx0ZXIocj9mdW5jdGlvbihuKXtyZXR1cm4gcihuKSV0PT09MH06ZnVuY3Rpb24obil7cmV0dXJuIGkuY291bnQoMCxuKSV0PT09MH0pOmk6bnVsbH0pLGl9ZnVuY3Rpb24gSnUodCl7cmV0dXJuIEd1KGZ1bmN0aW9uKG4pe24uc2V0RGF0ZShuLmdldERhdGUoKS0obi5nZXREYXkoKSs3LXQpJTcpLG4uc2V0SG91cnMoMCwwLDAsMCl9LGZ1bmN0aW9uKHQsbil7dC5zZXREYXRlKHQuZ2V0RGF0ZSgpKzcqbil9LGZ1bmN0aW9uKHQsbil7cmV0dXJuKG4tdC0obi5nZXRUaW1lem9uZU9mZnNldCgpLXQuZ2V0VGltZXpvbmVPZmZzZXQoKSkqUW0pL254fSl9ZnVuY3Rpb24gUXUodCl7cmV0dXJuIEd1KGZ1bmN0aW9uKG4pe24uc2V0VVRDRGF0ZShuLmdldFVUQ0RhdGUoKS0obi5nZXRVVENEYXkoKSs3LXQpJTcpLG4uc2V0VVRDSG91cnMoMCwwLDAsMCl9LGZ1bmN0aW9uKHQsbil7dC5zZXRVVENEYXRlKHQuZ2V0VVRDRGF0ZSgpKzcqbil9LGZ1bmN0aW9uKHQsbil7cmV0dXJuKG4tdCkvbnh9KX1mdW5jdGlvbiBLdSh0KXtpZigwPD10LnkmJnQueTwxMDApe3ZhciBuPW5ldyBEYXRlKC0xLHQubSx0LmQsdC5ILHQuTSx0LlMsdC5MKTtyZXR1cm4gbi5zZXRGdWxsWWVhcih0LnkpLG59cmV0dXJuIG5ldyBEYXRlKHQueSx0Lm0sdC5kLHQuSCx0Lk0sdC5TLHQuTCl9ZnVuY3Rpb24gdGEodCl7aWYoMDw9dC55JiZ0Lnk8MTAwKXt2YXIgbj1uZXcgRGF0ZShEYXRlLlVUQygtMSx0Lm0sdC5kLHQuSCx0Lk0sdC5TLHQuTCkpO3JldHVybiBuLnNldFVUQ0Z1bGxZZWFyKHQueSksbn1yZXR1cm4gbmV3IERhdGUoRGF0ZS5VVEModC55LHQubSx0LmQsdC5ILHQuTSx0LlMsdC5MKSl9ZnVuY3Rpb24gbmEodCl7cmV0dXJue3k6dCxtOjAsZDoxLEg6MCxNOjAsUzowLEw6MH19ZnVuY3Rpb24gZWEodCl7ZnVuY3Rpb24gbih0LG4pe3JldHVybiBmdW5jdGlvbihlKXt2YXIgcixpLG8sdT1bXSxhPS0xLGM9MCxzPXQubGVuZ3RoO2ZvcihlIGluc3RhbmNlb2YgRGF0ZXx8KGU9bmV3IERhdGUoK2UpKTsrK2E8czspMzc9PT10LmNoYXJDb2RlQXQoYSkmJih1LnB1c2godC5zbGljZShjLGEpKSxudWxsIT0oaT1LeFtyPXQuY2hhckF0KCsrYSldKT9yPXQuY2hhckF0KCsrYSk6aT0iZSI9PT1yPyIgIjoiMCIsKG89bltyXSkmJihyPW8oZSxpKSksdS5wdXNoKHIpLGM9YSsxKTtyZXR1cm4gdS5wdXNoKHQuc2xpY2UoYyxhKSksdS5qb2luKCIiKX19ZnVuY3Rpb24gZSh0LG4pe3JldHVybiBmdW5jdGlvbihlKXt2YXIgaT1uYSgxOTAwKTtpZihyKGksdCxlKz0iIiwwKSE9ZS5sZW5ndGgpcmV0dXJuIG51bGw7aWYoInAiaW4gaSYmKGkuSD1pLkglMTIrMTIqaS5wKSwiVyJpbiBpfHwiVSJpbiBpKXsidyJpbiBpfHwoaS53PSJXImluIGk/MTowKTt2YXIgbz0iWiJpbiBpP3RhKG5hKGkueSkpLmdldFVUQ0RheSgpOm4obmEoaS55KSkuZ2V0RGF5KCk7aS5tPTAsaS5kPSJXImluIGk/KGkudys2KSU3KzcqaS5XLShvKzUpJTc6aS53KzcqaS5VLShvKzYpJTd9cmV0dXJuIloiaW4gaT8oaS5IKz1pLlovMTAwfDAsaS5NKz1pLlolMTAwLHRhKGkpKTpuKGkpfX1mdW5jdGlvbiByKHQsbixlLHIpewpmb3IodmFyIGksbyx1PTAsYT1uLmxlbmd0aCxjPWUubGVuZ3RoO3U8YTspe2lmKHI+PWMpcmV0dXJuLTE7aWYoaT1uLmNoYXJDb2RlQXQodSsrKSwzNz09PWkpe2lmKGk9bi5jaGFyQXQodSsrKSxvPUJbaSBpbiBLeD9uLmNoYXJBdCh1KyspOmldLCFvfHwocj1vKHQsZSxyKSk8MClyZXR1cm4tMX1lbHNlIGlmKGkhPWUuY2hhckNvZGVBdChyKyspKXJldHVybi0xfXJldHVybiByfWZ1bmN0aW9uIGkodCxuLGUpe3ZhciByPUMuZXhlYyhuLnNsaWNlKGUpKTtyZXR1cm4gcj8odC5wPXpbclswXS50b0xvd2VyQ2FzZSgpXSxlK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBvKHQsbixlKXt2YXIgcj1MLmV4ZWMobi5zbGljZShlKSk7cmV0dXJuIHI/KHQudz1xW3JbMF0udG9Mb3dlckNhc2UoKV0sZStyWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gdSh0LG4sZSl7dmFyIHI9UC5leGVjKG4uc2xpY2UoZSkpO3JldHVybiByPyh0Lnc9UltyWzBdLnRvTG93ZXJDYXNlKCldLGUrclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIGEodCxuLGUpe3ZhciByPU8uZXhlYyhuLnNsaWNlKGUpKTtyZXR1cm4gcj8odC5tPUZbclswXS50b0xvd2VyQ2FzZSgpXSxlK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBjKHQsbixlKXt2YXIgcj1VLmV4ZWMobi5zbGljZShlKSk7cmV0dXJuIHI/KHQubT1EW3JbMF0udG9Mb3dlckNhc2UoKV0sZStyWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gcyh0LG4sZSl7cmV0dXJuIHIodCx3LG4sZSl9ZnVuY3Rpb24gZih0LG4sZSl7cmV0dXJuIHIodCxNLG4sZSl9ZnVuY3Rpb24gbCh0LG4sZSl7cmV0dXJuIHIodCxULG4sZSl9ZnVuY3Rpb24gaCh0KXtyZXR1cm4gTlt0LmdldERheSgpXX1mdW5jdGlvbiBwKHQpe3JldHVybiBTW3QuZ2V0RGF5KCldfWZ1bmN0aW9uIGQodCl7cmV0dXJuIEFbdC5nZXRNb250aCgpXX1mdW5jdGlvbiB2KHQpe3JldHVybiBFW3QuZ2V0TW9udGgoKV19ZnVuY3Rpb24gXyh0KXtyZXR1cm4ga1srKHQuZ2V0SG91cnMoKT49MTIpXX1mdW5jdGlvbiBnKHQpe3JldHVybiBOW3QuZ2V0VVRDRGF5KCldfWZ1bmN0aW9uIHkodCl7cmV0dXJuIFNbdC5nZXRVVENEYXkoKV19ZnVuY3Rpb24gbSh0KXtyZXR1cm4gQVt0LmdldFVUQ01vbnRoKCldfWZ1bmN0aW9uIHgodCl7cmV0dXJuIEVbdC5nZXRVVENNb250aCgpXX1mdW5jdGlvbiBiKHQpe3JldHVybiBrWysodC5nZXRVVENIb3VycygpPj0xMildfXZhciB3PXQuZGF0ZVRpbWUsTT10LmRhdGUsVD10LnRpbWUsaz10LnBlcmlvZHMsUz10LmRheXMsTj10LnNob3J0RGF5cyxFPXQubW9udGhzLEE9dC5zaG9ydE1vbnRocyxDPW9hKGspLHo9dWEoayksUD1vYShTKSxSPXVhKFMpLEw9b2EoTikscT11YShOKSxVPW9hKEUpLEQ9dWEoRSksTz1vYShBKSxGPXVhKEEpLEk9e2E6aCxBOnAsYjpkLEI6dixjOm51bGwsZDpiYSxlOmJhLEg6d2EsSTpNYSxqOlRhLEw6a2EsbTpTYSxNOk5hLHA6XyxTOkVhLFU6QWEsdzpDYSxXOnphLHg6bnVsbCxYOm51bGwseTpQYSxZOlJhLFo6TGEsIiUiOlphfSxZPXthOmcsQTp5LGI6bSxCOngsYzpudWxsLGQ6cWEsZTpxYSxIOlVhLEk6RGEsajpPYSxMOkZhLG06SWEsTTpZYSxwOmIsUzpCYSxVOmphLHc6SGEsVzpYYSx4Om51bGwsWDpudWxsLHk6VmEsWTpXYSxaOiRhLCIlIjpaYX0sQj17YTpvLEE6dSxiOmEsQjpjLGM6cyxkOmRhLGU6ZGEsSDpfYSxJOl9hLGo6dmEsTDptYSxtOnBhLE06Z2EscDppLFM6eWEsVTpjYSx3OmFhLFc6c2EseDpmLFg6bCx5OmxhLFk6ZmEsWjpoYSwiJSI6eGF9O3JldHVybiBJLng9bihNLEkpLEkuWD1uKFQsSSksSS5jPW4odyxJKSxZLng9bihNLFkpLFkuWD1uKFQsWSksWS5jPW4odyxZKSx7Zm9ybWF0OmZ1bmN0aW9uKHQpe3ZhciBlPW4odCs9IiIsSSk7cmV0dXJuIGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdH0sZX0scGFyc2U6ZnVuY3Rpb24odCl7dmFyIG49ZSh0Kz0iIixLdSk7cmV0dXJuIG4udG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdH0sbn0sdXRjRm9ybWF0OmZ1bmN0aW9uKHQpe3ZhciBlPW4odCs9IiIsWSk7cmV0dXJuIGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdH0sZX0sdXRjUGFyc2U6ZnVuY3Rpb24odCl7dmFyIG49ZSh0LHRhKTtyZXR1cm4gbi50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0fSxufX19ZnVuY3Rpb24gcmEodCxuLGUpe3ZhciByPXQ8MD8iLSI6IiIsaT0ocj8tdDp0KSsiIixvPWkubGVuZ3RoO3JldHVybiByKyhvPGU/bmV3IEFycmF5KGUtbysxKS5qb2luKG4pK2k6aSl9ZnVuY3Rpb24gaWEodCl7cmV0dXJuIHQucmVwbGFjZShlYiwiXFwkJiIpfWZ1bmN0aW9uIG9hKHQpe3JldHVybiBuZXcgUmVnRXhwKCJeKD86Iit0Lm1hcChpYSkuam9pbigifCIpKyIpIiwiaSIpfWZ1bmN0aW9uIHVhKHQpe2Zvcih2YXIgbj17fSxlPS0xLHI9dC5sZW5ndGg7KytlPHI7KW5bdFtlXS50b0xvd2VyQ2FzZSgpXT1lO3JldHVybiBufWZ1bmN0aW9uIGFhKHQsbixlKXt2YXIgcj10Yi5leGVjKG4uc2xpY2UoZSxlKzEpKTtyZXR1cm4gcj8odC53PStyWzBdLGUrclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIGNhKHQsbixlKXt2YXIgcj10Yi5leGVjKG4uc2xpY2UoZSkpO3JldHVybiByPyh0LlU9K3JbMF0sZStyWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gc2EodCxuLGUpe3ZhciByPXRiLmV4ZWMobi5zbGljZShlKSk7cmV0dXJuIHI/KHQuVz0rclswXSxlK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBmYSh0LG4sZSl7dmFyIHI9dGIuZXhlYyhuLnNsaWNlKGUsZSs0KSk7cmV0dXJuIHI/KHQueT0rclswXSxlK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBsYSh0LG4sZSl7dmFyIHI9dGIuZXhlYyhuLnNsaWNlKGUsZSsyKSk7cmV0dXJuIHI/KHQueT0rclswXSsoK3JbMF0+Njg/MTkwMDoyZTMpLGUrclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIGhhKHQsbixlKXt2YXIgcj0vXihaKXwoWystXVxkXGQpKD86XDo/KFxkXGQpKT8vLmV4ZWMobi5zbGljZShlLGUrNikpO3JldHVybiByPyh0Llo9clsxXT8wOi0oclsyXSsoclszXXx8IjAwIikpLGUrclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIHBhKHQsbixlKXt2YXIgcj10Yi5leGVjKG4uc2xpY2UoZSxlKzIpKTtyZXR1cm4gcj8odC5tPXJbMF0tMSxlK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBkYSh0LG4sZSl7dmFyIHI9dGIuZXhlYyhuLnNsaWNlKGUsZSsyKSk7cmV0dXJuIHI/KHQuZD0rclswXSxlK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiB2YSh0LG4sZSl7dmFyIHI9dGIuZXhlYyhuLnNsaWNlKGUsZSszKSk7cmV0dXJuIHI/KHQubT0wLHQuZD0rclswXSxlK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBfYSh0LG4sZSl7dmFyIHI9dGIuZXhlYyhuLnNsaWNlKGUsZSsyKSk7cmV0dXJuIHI/KHQuSD0rclswXSxlK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBnYSh0LG4sZSl7dmFyIHI9dGIuZXhlYyhuLnNsaWNlKGUsZSsyKSk7cmV0dXJuIHI/KHQuTT0rclswXSxlK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiB5YSh0LG4sZSl7dmFyIHI9dGIuZXhlYyhuLnNsaWNlKGUsZSsyKSk7cmV0dXJuIHI/KHQuUz0rclswXSxlK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBtYSh0LG4sZSl7dmFyIHI9dGIuZXhlYyhuLnNsaWNlKGUsZSszKSk7cmV0dXJuIHI/KHQuTD0rclswXSxlK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiB4YSh0LG4sZSl7dmFyIHI9bmIuZXhlYyhuLnNsaWNlKGUsZSsxKSk7cmV0dXJuIHI/ZStyWzBdLmxlbmd0aDotMX1mdW5jdGlvbiBiYSh0LG4pe3JldHVybiByYSh0LmdldERhdGUoKSxuLDIpfWZ1bmN0aW9uIHdhKHQsbil7cmV0dXJuIHJhKHQuZ2V0SG91cnMoKSxuLDIpfWZ1bmN0aW9uIE1hKHQsbil7cmV0dXJuIHJhKHQuZ2V0SG91cnMoKSUxMnx8MTIsbiwyKX1mdW5jdGlvbiBUYSh0LG4pe3JldHVybiByYSgxK2N4LmNvdW50KFN4KHQpLHQpLG4sMyl9ZnVuY3Rpb24ga2EodCxuKXtyZXR1cm4gcmEodC5nZXRNaWxsaXNlY29uZHMoKSxuLDMpfWZ1bmN0aW9uIFNhKHQsbil7cmV0dXJuIHJhKHQuZ2V0TW9udGgoKSsxLG4sMil9ZnVuY3Rpb24gTmEodCxuKXtyZXR1cm4gcmEodC5nZXRNaW51dGVzKCksbiwyKX1mdW5jdGlvbiBFYSh0LG4pe3JldHVybiByYSh0LmdldFNlY29uZHMoKSxuLDIpfWZ1bmN0aW9uIEFhKHQsbil7cmV0dXJuIHJhKGZ4LmNvdW50KFN4KHQpLHQpLG4sMil9ZnVuY3Rpb24gQ2EodCl7cmV0dXJuIHQuZ2V0RGF5KCl9ZnVuY3Rpb24gemEodCxuKXtyZXR1cm4gcmEobHguY291bnQoU3godCksdCksbiwyKX1mdW5jdGlvbiBQYSh0LG4pe3JldHVybiByYSh0LmdldEZ1bGxZZWFyKCklMTAwLG4sMil9ZnVuY3Rpb24gUmEodCxuKXtyZXR1cm4gcmEodC5nZXRGdWxsWWVhcigpJTFlNCxuLDQpfWZ1bmN0aW9uIExhKHQpe3ZhciBuPXQuZ2V0VGltZXpvbmVPZmZzZXQoKTtyZXR1cm4obj4wPyItIjoobio9LTEsIisiKSkrcmEobi82MHwwLCIwIiwyKStyYShuJTYwLCIwIiwyKX1mdW5jdGlvbiBxYSh0LG4pe3JldHVybiByYSh0LmdldFVUQ0RhdGUoKSxuLDIpfWZ1bmN0aW9uIFVhKHQsbil7cmV0dXJuIHJhKHQuZ2V0VVRDSG91cnMoKSxuLDIpfWZ1bmN0aW9uIERhKHQsbil7cmV0dXJuIHJhKHQuZ2V0VVRDSG91cnMoKSUxMnx8MTIsbiwyKX1mdW5jdGlvbiBPYSh0LG4pe3JldHVybiByYSgxK1B4LmNvdW50KEd4KHQpLHQpLG4sMyl9ZnVuY3Rpb24gRmEodCxuKXtyZXR1cm4gcmEodC5nZXRVVENNaWxsaXNlY29uZHMoKSxuLDMpfWZ1bmN0aW9uIElhKHQsbil7cmV0dXJuIHJhKHQuZ2V0VVRDTW9udGgoKSsxLG4sMil9ZnVuY3Rpb24gWWEodCxuKXtyZXR1cm4gcmEodC5nZXRVVENNaW51dGVzKCksbiwyKX1mdW5jdGlvbiBCYSh0LG4pe3JldHVybiByYSh0LmdldFVUQ1NlY29uZHMoKSxuLDIpfWZ1bmN0aW9uIGphKHQsbil7cmV0dXJuIHJhKEx4LmNvdW50KEd4KHQpLHQpLG4sMil9ZnVuY3Rpb24gSGEodCl7cmV0dXJuIHQuZ2V0VVRDRGF5KCl9ZnVuY3Rpb24gWGEodCxuKXtyZXR1cm4gcmEocXguY291bnQoR3godCksdCksbiwyKX1mdW5jdGlvbiBWYSh0LG4pe3JldHVybiByYSh0LmdldFVUQ0Z1bGxZZWFyKCklMTAwLG4sMil9ZnVuY3Rpb24gV2EodCxuKXtyZXR1cm4gcmEodC5nZXRVVENGdWxsWWVhcigpJTFlNCxuLDQpfWZ1bmN0aW9uICRhKCl7cmV0dXJuIiswMDAwIn1mdW5jdGlvbiBaYSgpe3JldHVybiIlIn1mdW5jdGlvbiBHYShuKXtyZXR1cm4gSng9ZWEobiksdC50aW1lRm9ybWF0PUp4LmZvcm1hdCx0LnRpbWVQYXJzZT1KeC5wYXJzZSx0LnV0Y0Zvcm1hdD1KeC51dGNGb3JtYXQsdC51dGNQYXJzZT1KeC51dGNQYXJzZSxKeH1mdW5jdGlvbiBKYSh0KXtyZXR1cm4gdC50b0lTT1N0cmluZygpfWZ1bmN0aW9uIFFhKHQpe3ZhciBuPW5ldyBEYXRlKHQpO3JldHVybiBpc05hTihuKT9udWxsOm59ZnVuY3Rpb24gS2EodCl7cmV0dXJuIG5ldyBEYXRlKHQpfWZ1bmN0aW9uIHRjKHQpe3JldHVybiB0IGluc3RhbmNlb2YgRGF0ZT8rdDorbmV3IERhdGUoK3QpfWZ1bmN0aW9uIG5jKHQsbixlLGksbyx1LGEsYyxzKXtmdW5jdGlvbiBmKHIpe3JldHVybihhKHIpPHI/djp1KHIpPHI/XzpvKHIpPHI/ZzppKHIpPHI/eTpuKHIpPHI/ZShyKTxyP206eDp0KHIpPHI/Yjp3KShyKX1mdW5jdGlvbiBsKG4sZSxpLG8pe2lmKG51bGw9PW4mJihuPTEwKSwibnVtYmVyIj09dHlwZW9mIG4pe3ZhciB1PU1hdGguYWJzKGktZSkvbixhPVVzKGZ1bmN0aW9uKHQpe3JldHVybiB0WzJdfSkucmlnaHQoTSx1KTthPT09TS5sZW5ndGg/KG89cihlL2hiLGkvaGIsbiksbj10KTphPyhhPU1bdS9NW2EtMV1bMl08TVthXVsyXS91P2EtMTphXSxvPWFbMV0sbj1hWzBdKToobz1yKGUsaSxuKSxuPWMpfXJldHVybiBudWxsPT1vP246bi5ldmVyeShvKX12YXIgaD1SdShOdSxUaCkscD1oLmludmVydCxkPWguZG9tYWluLHY9cygiLiVMIiksXz1zKCI6JVMiKSxnPXMoIiVJOiVNIikseT1zKCIlSSAlcCIpLG09cygiJWEgJWQiKSx4PXMoIiViICVkIiksYj1zKCIlQiIpLHc9cygiJVkiKSxNPVtbYSwxLHViXSxbYSw1LDUqdWJdLFthLDE1LDE1KnViXSxbYSwzMCwzMCp1Yl0sW3UsMSxhYl0sW3UsNSw1KmFiXSxbdSwxNSwxNSphYl0sW3UsMzAsMzAqYWJdLFtvLDEsY2JdLFtvLDMsMypjYl0sW28sNiw2KmNiXSxbbywxMiwxMipjYl0sW2ksMSxzYl0sW2ksMiwyKnNiXSxbZSwxLGZiXSxbbiwxLGxiXSxbbiwzLDMqbGJdLFt0LDEsaGJdXTtyZXR1cm4gaC5pbnZlcnQ9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBEYXRlKHAodCkpfSxoLmRvbWFpbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD9kKEZtLmNhbGwodCx0YykpOmQoKS5tYXAoS2EpfSxoLnRpY2tzPWZ1bmN0aW9uKHQsbil7dmFyIGUscj1kKCksaT1yWzBdLG89cltyLmxlbmd0aC0xXSx1PW88aTtyZXR1cm4gdSYmKGU9aSxpPW8sbz1lKSxlPWwodCxpLG8sbiksZT1lP2UucmFuZ2UoaSxvKzEpOltdLHU/ZS5yZXZlcnNlKCk6ZX0saC50aWNrRm9ybWF0PWZ1bmN0aW9uKHQsbil7cmV0dXJuIG51bGw9PW4/ZjpzKG4pfSxoLm5pY2U9ZnVuY3Rpb24odCxuKXt2YXIgZT1kKCk7cmV0dXJuKHQ9bCh0LGVbMF0sZVtlLmxlbmd0aC0xXSxuKSk/ZChWbShlLHQpKTpofSxoLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gUHUoaCxuYyh0LG4sZSxpLG8sdSxhLGMscykpfSxofWZ1bmN0aW9uIGVjKHQpe3ZhciBuPXQubGVuZ3RoO3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gdFtNYXRoLm1heCgwLE1hdGgubWluKG4tMSxNYXRoLmZsb29yKGUqbikpKV19fWZ1bmN0aW9uIHJjKHQpe2Z1bmN0aW9uIG4obil7dmFyIG89KG4tZSkvKHItZSk7cmV0dXJuIHQoaT9NYXRoLm1heCgwLE1hdGgubWluKDEsbykpOm8pfXZhciBlPTAscj0xLGk9ITE7cmV0dXJuIG4uZG9tYWluPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPSt0WzBdLHI9K3RbMV0sbik6W2Uscl19LG4uY2xhbXA9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9ISF0LG4pOml9LG4uaW50ZXJwb2xhdG9yPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PWUsbik6dH0sbi5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIHJjKHQpLmRvbWFpbihbZSxyXSkuY2xhbXAoaSl9LEx1KG4pfWZ1bmN0aW9uIGljKHQpe3JldHVybiB0PjE/MDp0PC0xP09iOk1hdGguYWNvcyh0KX1mdW5jdGlvbiBvYyh0KXtyZXR1cm4gdD49MT9GYjp0PD0tMT8tRmI6TWF0aC5hc2luKHQpfWZ1bmN0aW9uIHVjKHQpe3JldHVybiB0LmlubmVyUmFkaXVzfWZ1bmN0aW9uIGFjKHQpe3JldHVybiB0Lm91dGVyUmFkaXVzfWZ1bmN0aW9uIGNjKHQpe3JldHVybiB0LnN0YXJ0QW5nbGV9ZnVuY3Rpb24gc2ModCl7cmV0dXJuIHQuZW5kQW5nbGV9ZnVuY3Rpb24gZmModCl7cmV0dXJuIHQmJnQucGFkQW5nbGV9ZnVuY3Rpb24gbGModCxuLGUscixpLG8sdSxhKXt2YXIgYz1lLXQscz1yLW4sZj11LWksbD1hLW8saD0oZioobi1vKS1sKih0LWkpKS8obCpjLWYqcyk7cmV0dXJuW3QraCpjLG4raCpzXX1mdW5jdGlvbiBoYyh0LG4sZSxyLGksbyx1KXt2YXIgYT10LWUsYz1uLXIscz0odT9vOi1vKS9VYihhKmErYypjKSxmPXMqYyxsPS1zKmEsaD10K2YscD1uK2wsZD1lK2Ysdj1yK2wsXz0oaCtkKS8yLGc9KHArdikvMix5PWQtaCxtPXYtcCx4PXkqeSttKm0sYj1pLW8sdz1oKnYtZCpwLE09KG08MD8tMToxKSpVYihSYigwLGIqYip4LXcqdykpLFQ9KHcqbS15Kk0pL3gsaz0oLXcqeS1tKk0pL3gsUz0odyptK3kqTSkveCxOPSgtdyp5K20qTSkveCxFPVQtXyxBPWstZyxDPVMtXyx6PU4tZztyZXR1cm4gRSpFK0EqQT5DKkMreip6JiYoVD1TLGs9Tikse2N4OlQsY3k6ayx4MDE6LWYseTAxOi1sLHgxMTpUKihpL2ItMSkseTExOmsqKGkvYi0xKX19ZnVuY3Rpb24gcGModCl7dGhpcy5fY29udGV4dD10fWZ1bmN0aW9uIGRjKHQpe3JldHVybiB0WzBdfWZ1bmN0aW9uIHZjKHQpe3JldHVybiB0WzFdfWZ1bmN0aW9uIF9jKHQpe3RoaXMuX2N1cnZlPXR9ZnVuY3Rpb24gZ2ModCl7ZnVuY3Rpb24gbihuKXtyZXR1cm4gbmV3IF9jKHQobikpfXJldHVybiBuLl9jdXJ2ZT10LG59ZnVuY3Rpb24geWModCl7dmFyIG49dC5jdXJ2ZTtyZXR1cm4gdC5hbmdsZT10LngsZGVsZXRlIHQueCx0LnJhZGl1cz10LnksZGVsZXRlIHQueSx0LmN1cnZlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP24oZ2ModCkpOm4oKS5fY3VydmV9LHR9ZnVuY3Rpb24gbWModCxuLGUpe3QuX2NvbnRleHQuYmV6aWVyQ3VydmVUbygoMip0Ll94MCt0Ll94MSkvMywoMip0Ll95MCt0Ll95MSkvMywodC5feDArMip0Ll94MSkvMywodC5feTArMip0Ll95MSkvMywodC5feDArNCp0Ll94MStuKS82LCh0Ll95MCs0KnQuX3kxK2UpLzYpfWZ1bmN0aW9uIHhjKHQpe3RoaXMuX2NvbnRleHQ9dH1mdW5jdGlvbiBiYyh0KXt0aGlzLl9jb250ZXh0PXR9ZnVuY3Rpb24gd2ModCl7dGhpcy5fY29udGV4dD10fWZ1bmN0aW9uIE1jKHQsbil7dGhpcy5fYmFzaXM9bmV3IHhjKHQpLHRoaXMuX2JldGE9bn1mdW5jdGlvbiBUYyh0LG4sZSl7dC5fY29udGV4dC5iZXppZXJDdXJ2ZVRvKHQuX3gxK3QuX2sqKHQuX3gyLXQuX3gwKSx0Ll95MSt0Ll9rKih0Ll95Mi10Ll95MCksdC5feDIrdC5fayoodC5feDEtbiksdC5feTIrdC5fayoodC5feTEtZSksdC5feDIsdC5feTIpfWZ1bmN0aW9uIGtjKHQsbil7dGhpcy5fY29udGV4dD10LHRoaXMuX2s9KDEtbikvNn1mdW5jdGlvbiBTYyh0LG4pe3RoaXMuX2NvbnRleHQ9dCx0aGlzLl9rPSgxLW4pLzZ9ZnVuY3Rpb24gTmModCxuKXt0aGlzLl9jb250ZXh0PXQsdGhpcy5faz0oMS1uKS82fWZ1bmN0aW9uIEVjKHQsbixlKXt2YXIgcj10Ll94MSxpPXQuX3kxLG89dC5feDIsdT10Ll95MjtpZih0Ll9sMDFfYT5EYil7dmFyIGE9Mip0Ll9sMDFfMmErMyp0Ll9sMDFfYSp0Ll9sMTJfYSt0Ll9sMTJfMmEsYz0zKnQuX2wwMV9hKih0Ll9sMDFfYSt0Ll9sMTJfYSk7cj0ociphLXQuX3gwKnQuX2wxMl8yYSt0Ll94Mip0Ll9sMDFfMmEpL2MsaT0oaSphLXQuX3kwKnQuX2wxMl8yYSt0Ll95Mip0Ll9sMDFfMmEpL2N9aWYodC5fbDIzX2E+RGIpe3ZhciBzPTIqdC5fbDIzXzJhKzMqdC5fbDIzX2EqdC5fbDEyX2ErdC5fbDEyXzJhLGY9Myp0Ll9sMjNfYSoodC5fbDIzX2ErdC5fbDEyX2EpO289KG8qcyt0Ll94MSp0Ll9sMjNfMmEtbip0Ll9sMTJfMmEpL2YsdT0odSpzK3QuX3kxKnQuX2wyM18yYS1lKnQuX2wxMl8yYSkvZn10Ll9jb250ZXh0LmJlemllckN1cnZlVG8ocixpLG8sdSx0Ll94Mix0Ll95Mil9ZnVuY3Rpb24gQWModCxuKXt0aGlzLl9jb250ZXh0PXQsdGhpcy5fYWxwaGE9bn1mdW5jdGlvbiBDYyh0LG4pe3RoaXMuX2NvbnRleHQ9dCx0aGlzLl9hbHBoYT1ufWZ1bmN0aW9uIHpjKHQsbil7dGhpcy5fY29udGV4dD10LHRoaXMuX2FscGhhPW59ZnVuY3Rpb24gUGModCl7dGhpcy5fY29udGV4dD10fWZ1bmN0aW9uIFJjKHQpe3JldHVybiB0PDA/LTE6MX1mdW5jdGlvbiBMYyh0LG4sZSl7dmFyIHI9dC5feDEtdC5feDAsaT1uLXQuX3gxLG89KHQuX3kxLXQuX3kwKS8ocnx8aTwwJiYtMCksdT0oZS10Ll95MSkvKGl8fHI8MCYmLTApLGE9KG8qaSt1KnIpLyhyK2kpO3JldHVybihSYyhvKStSYyh1KSkqTWF0aC5taW4oTWF0aC5hYnMobyksTWF0aC5hYnModSksLjUqTWF0aC5hYnMoYSkpfHwwfWZ1bmN0aW9uIHFjKHQsbil7dmFyIGU9dC5feDEtdC5feDA7cmV0dXJuIGU/KDMqKHQuX3kxLXQuX3kwKS9lLW4pLzI6bn1mdW5jdGlvbiBVYyh0LG4sZSl7dmFyIHI9dC5feDAsaT10Ll95MCxvPXQuX3gxLHU9dC5feTEsYT0oby1yKS8zO3QuX2NvbnRleHQuYmV6aWVyQ3VydmVUbyhyK2EsaSthKm4sby1hLHUtYSplLG8sdSl9ZnVuY3Rpb24gRGModCl7dGhpcy5fY29udGV4dD10fWZ1bmN0aW9uIE9jKHQpe3RoaXMuX2NvbnRleHQ9bmV3IEZjKHQpfWZ1bmN0aW9uIEZjKHQpe3RoaXMuX2NvbnRleHQ9dH1mdW5jdGlvbiBJYyh0KXtyZXR1cm4gbmV3IERjKHQpfWZ1bmN0aW9uIFljKHQpe3JldHVybiBuZXcgT2ModCl9ZnVuY3Rpb24gQmModCl7dGhpcy5fY29udGV4dD10fWZ1bmN0aW9uIGpjKHQpe3ZhciBuLGUscj10Lmxlbmd0aC0xLGk9bmV3IEFycmF5KHIpLG89bmV3IEFycmF5KHIpLHU9bmV3IEFycmF5KHIpO2ZvcihpWzBdPTAsb1swXT0yLHVbMF09dFswXSsyKnRbMV0sbj0xO248ci0xOysrbilpW25dPTEsb1tuXT00LHVbbl09NCp0W25dKzIqdFtuKzFdO2ZvcihpW3ItMV09MixvW3ItMV09Nyx1W3ItMV09OCp0W3ItMV0rdFtyXSxuPTE7bjxyOysrbillPWlbbl0vb1tuLTFdLG9bbl0tPWUsdVtuXS09ZSp1W24tMV07Zm9yKGlbci0xXT11W3ItMV0vb1tyLTFdLG49ci0yO24+PTA7LS1uKWlbbl09KHVbbl0taVtuKzFdKS9vW25dO2ZvcihvW3ItMV09KHRbcl0raVtyLTFdKS8yLG49MDtuPHItMTsrK24pb1tuXT0yKnRbbisxXS1pW24rMV07cmV0dXJuW2ksb119ZnVuY3Rpb24gSGModCxuKXt0aGlzLl9jb250ZXh0PXQsdGhpcy5fdD1ufWZ1bmN0aW9uIFhjKHQpe3JldHVybiBuZXcgSGModCwwKX1mdW5jdGlvbiBWYyh0KXtyZXR1cm4gbmV3IEhjKHQsMSl9ZnVuY3Rpb24gV2ModCxuKXtyZXR1cm4gdFtuXX1mdW5jdGlvbiAkYyh0KXtmb3IodmFyIG4sZT0wLHI9LTEsaT10Lmxlbmd0aDsrK3I8aTspKG49K3Rbcl1bMV0pJiYoZSs9bik7cmV0dXJuIGV9ZnVuY3Rpb24gWmModCl7cmV0dXJuIHRbMF19ZnVuY3Rpb24gR2ModCl7cmV0dXJuIHRbMV19ZnVuY3Rpb24gSmMoKXt0aGlzLl89bnVsbH1mdW5jdGlvbiBRYyh0KXt0LlU9dC5DPXQuTD10LlI9dC5QPXQuTj1udWxsfWZ1bmN0aW9uIEtjKHQsbil7dmFyIGU9bixyPW4uUixpPWUuVTtpP2kuTD09PWU/aS5MPXI6aS5SPXI6dC5fPXIsci5VPWksZS5VPXIsZS5SPXIuTCxlLlImJihlLlIuVT1lKSxyLkw9ZX1mdW5jdGlvbiB0cyh0LG4pe3ZhciBlPW4scj1uLkwsaT1lLlU7aT9pLkw9PT1lP2kuTD1yOmkuUj1yOnQuXz1yLHIuVT1pLGUuVT1yLGUuTD1yLlIsZS5MJiYoZS5MLlU9ZSksci5SPWV9ZnVuY3Rpb24gbnModCl7Zm9yKDt0Lkw7KXQ9dC5MO3JldHVybiB0fWZ1bmN0aW9uIGVzKHQsbixlLHIpe3ZhciBpPVtudWxsLG51bGxdLG89V3cucHVzaChpKS0xO3JldHVybiBpLmxlZnQ9dCxpLnJpZ2h0PW4sZSYmaXMoaSx0LG4sZSksciYmaXMoaSxuLHQsciksWHdbdC5pbmRleF0uaGFsZmVkZ2VzLnB1c2gobyksWHdbbi5pbmRleF0uaGFsZmVkZ2VzLnB1c2gobyksaX1mdW5jdGlvbiBycyh0LG4sZSl7dmFyIHI9W24sZV07cmV0dXJuIHIubGVmdD10LHJ9ZnVuY3Rpb24gaXModCxuLGUscil7dFswXXx8dFsxXT90LmxlZnQ9PT1lP3RbMV09cjp0WzBdPXI6KHRbMF09cix0LmxlZnQ9bix0LnJpZ2h0PWUpfWZ1bmN0aW9uIG9zKHQsbixlLHIsaSl7dmFyIG8sdT10WzBdLGE9dFsxXSxjPXVbMF0scz11WzFdLGY9YVswXSxsPWFbMV0saD0wLHA9MSxkPWYtYyx2PWwtcztpZihvPW4tYyxkfHwhKG8+MCkpe2lmKG8vPWQsZDwwKXtpZihvPGgpcmV0dXJuO288cCYmKHA9byl9ZWxzZSBpZihkPjApe2lmKG8+cClyZXR1cm47bz5oJiYoaD1vKX1pZihvPXItYyxkfHwhKG88MCkpe2lmKG8vPWQsZDwwKXtpZihvPnApcmV0dXJuO28+aCYmKGg9byl9ZWxzZSBpZihkPjApe2lmKG88aClyZXR1cm47bzxwJiYocD1vKX1pZihvPWUtcyx2fHwhKG8+MCkpe2lmKG8vPXYsdjwwKXtpZihvPGgpcmV0dXJuO288cCYmKHA9byl9ZWxzZSBpZih2PjApe2lmKG8+cClyZXR1cm47bz5oJiYoaD1vKX1pZihvPWktcyx2fHwhKG88MCkpe2lmKG8vPXYsdjwwKXtpZihvPnApcmV0dXJuO28+aCYmKGg9byl9ZWxzZSBpZih2PjApe2lmKG88aClyZXR1cm47bzxwJiYocD1vKX1yZXR1cm4hKGg+MHx8cDwxKXx8KGg+MCYmKHRbMF09W2MraCpkLHMraCp2XSkscDwxJiYodFsxXT1bYytwKmQscytwKnZdKSwhMCl9fX19fWZ1bmN0aW9uIHVzKHQsbixlLHIsaSl7dmFyIG89dFsxXTtpZihvKXJldHVybiEwO3ZhciB1LGEsYz10WzBdLHM9dC5sZWZ0LGY9dC5yaWdodCxsPXNbMF0saD1zWzFdLHA9ZlswXSxkPWZbMV0sdj0obCtwKS8yLF89KGgrZCkvMjtpZihkPT09aCl7aWYodjxufHx2Pj1yKXJldHVybjtpZihsPnApe2lmKGMpe2lmKGNbMV0+PWkpcmV0dXJufWVsc2UgYz1bdixlXTtvPVt2LGldfWVsc2V7aWYoYyl7aWYoY1sxXTxlKXJldHVybn1lbHNlIGM9W3YsaV07bz1bdixlXX19ZWxzZSBpZih1PShsLXApLyhkLWgpLGE9Xy11KnYsdTwtMXx8dT4xKWlmKGw+cCl7aWYoYyl7aWYoY1sxXT49aSlyZXR1cm59ZWxzZSBjPVsoZS1hKS91LGVdO289WyhpLWEpL3UsaV19ZWxzZXtpZihjKXtpZihjWzFdPGUpcmV0dXJufWVsc2UgYz1bKGktYSkvdSxpXTtvPVsoZS1hKS91LGVdfWVsc2UgaWYoaDxkKXtpZihjKXtpZihjWzBdPj1yKXJldHVybn1lbHNlIGM9W24sdSpuK2FdO289W3IsdSpyK2FdfWVsc2V7aWYoYyl7aWYoY1swXTxuKXJldHVybn1lbHNlIGM9W3IsdSpyK2FdO289W24sdSpuK2FdfXJldHVybiB0WzBdPWMsdFsxXT1vLCEwfWZ1bmN0aW9uIGFzKHQsbixlLHIpe2Zvcih2YXIgaSxvPVd3Lmxlbmd0aDtvLS07KXVzKGk9V3dbb10sdCxuLGUscikmJm9zKGksdCxuLGUscikmJihNYXRoLmFicyhpWzBdWzBdLWlbMV1bMF0pPkd3fHxNYXRoLmFicyhpWzBdWzFdLWlbMV1bMV0pPkd3KXx8ZGVsZXRlIFd3W29dfWZ1bmN0aW9uIGNzKHQpe3JldHVybiBYd1t0LmluZGV4XT17c2l0ZTp0LGhhbGZlZGdlczpbXX19ZnVuY3Rpb24gc3ModCxuKXt2YXIgZT10LnNpdGUscj1uLmxlZnQsaT1uLnJpZ2h0O3JldHVybiBlPT09aSYmKGk9cixyPWUpLGk/TWF0aC5hdGFuMihpWzFdLXJbMV0saVswXS1yWzBdKTooZT09PXI/KHI9blsxXSxpPW5bMF0pOihyPW5bMF0saT1uWzFdKSxNYXRoLmF0YW4yKHJbMF0taVswXSxpWzFdLXJbMV0pKX1mdW5jdGlvbiBmcyh0LG4pe3JldHVybiBuWysobi5sZWZ0IT09dC5zaXRlKV19ZnVuY3Rpb24gbHModCxuKXtyZXR1cm4gblsrKG4ubGVmdD09PXQuc2l0ZSldfWZ1bmN0aW9uIGhzKCl7Zm9yKHZhciB0LG4sZSxyLGk9MCxvPVh3Lmxlbmd0aDtpPG87KytpKWlmKCh0PVh3W2ldKSYmKHI9KG49dC5oYWxmZWRnZXMpLmxlbmd0aCkpe3ZhciB1PW5ldyBBcnJheShyKSxhPW5ldyBBcnJheShyKTtmb3IoZT0wO2U8cjsrK2UpdVtlXT1lLGFbZV09c3ModCxXd1tuW2VdXSk7Zm9yKHUuc29ydChmdW5jdGlvbih0LG4pe3JldHVybiBhW25dLWFbdF19KSxlPTA7ZTxyOysrZSlhW2VdPW5bdVtlXV07Zm9yKGU9MDtlPHI7KytlKW5bZV09YVtlXX19ZnVuY3Rpb24gcHModCxuLGUscil7dmFyIGksbyx1LGEsYyxzLGYsbCxoLHAsZCx2LF89WHcubGVuZ3RoLGc9ITA7Zm9yKGk9MDtpPF87KytpKWlmKG89WHdbaV0pe2Zvcih1PW8uc2l0ZSxjPW8uaGFsZmVkZ2VzLGE9Yy5sZW5ndGg7YS0tOylXd1tjW2FdXXx8Yy5zcGxpY2UoYSwxKTtmb3IoYT0wLHM9Yy5sZW5ndGg7YTxzOylwPWxzKG8sV3dbY1thXV0pLGQ9cFswXSx2PXBbMV0sZj1mcyhvLFd3W2NbKythJXNdXSksbD1mWzBdLGg9ZlsxXSwoTWF0aC5hYnMoZC1sKT5Hd3x8TWF0aC5hYnModi1oKT5HdykmJihjLnNwbGljZShhLDAsV3cucHVzaChycyh1LHAsTWF0aC5hYnMoZC10KTxHdyYmci12Pkd3P1t0LE1hdGguYWJzKGwtdCk8R3c/aDpyXTpNYXRoLmFicyh2LXIpPEd3JiZlLWQ+R3c/W01hdGguYWJzKGgtcik8R3c/bDplLHJdOk1hdGguYWJzKGQtZSk8R3cmJnYtbj5Hdz9bZSxNYXRoLmFicyhsLWUpPEd3P2g6bl06TWF0aC5hYnModi1uKTxHdyYmZC10Pkd3P1tNYXRoLmFicyhoLW4pPEd3P2w6dCxuXTpudWxsKSktMSksKytzKTtzJiYoZz0hMSl9aWYoZyl7dmFyIHksbSx4LGI9MS8wO2ZvcihpPTAsZz1udWxsO2k8XzsrK2kpKG89WHdbaV0pJiYodT1vLnNpdGUseT11WzBdLXQsbT11WzFdLW4seD15KnkrbSptLHg8YiYmKGI9eCxnPW8pKTtpZihnKXt2YXIgdz1bdCxuXSxNPVt0LHJdLFQ9W2Uscl0saz1bZSxuXTtnLmhhbGZlZGdlcy5wdXNoKFd3LnB1c2gocnModT1nLnNpdGUsdyxNKSktMSxXdy5wdXNoKHJzKHUsTSxUKSktMSxXdy5wdXNoKHJzKHUsVCxrKSktMSxXdy5wdXNoKHJzKHUsayx3KSktMSl9fWZvcihpPTA7aTxfOysraSkobz1Yd1tpXSkmJihvLmhhbGZlZGdlcy5sZW5ndGh8fGRlbGV0ZSBYd1tpXSl9ZnVuY3Rpb24gZHMoKXtRYyh0aGlzKSx0aGlzLng9dGhpcy55PXRoaXMuYXJjPXRoaXMuc2l0ZT10aGlzLmN5PW51bGx9ZnVuY3Rpb24gdnModCl7dmFyIG49dC5QLGU9dC5OO2lmKG4mJmUpe3ZhciByPW4uc2l0ZSxpPXQuc2l0ZSxvPWUuc2l0ZTtpZihyIT09byl7dmFyIHU9aVswXSxhPWlbMV0sYz1yWzBdLXUscz1yWzFdLWEsZj1vWzBdLXUsbD1vWzFdLWEsaD0yKihjKmwtcypmKTtpZighKGg+PS1Kdykpe3ZhciBwPWMqYytzKnMsZD1mKmYrbCpsLHY9KGwqcC1zKmQpL2gsXz0oYypkLWYqcCkvaCxnPSR3LnBvcCgpfHxuZXcgZHM7Zy5hcmM9dCxnLnNpdGU9aSxnLng9dit1LGcueT0oZy5jeT1fK2EpK01hdGguc3FydCh2KnYrXypfKSx0LmNpcmNsZT1nO2Zvcih2YXIgeT1udWxsLG09VncuXzttOylpZihnLnk8bS55fHxnLnk9PT1tLnkmJmcueDw9bS54KXtpZighbS5MKXt5PW0uUDticmVha31tPW0uTH1lbHNle2lmKCFtLlIpe3k9bTticmVha31tPW0uUn1Wdy5pbnNlcnQoeSxnKSx5fHwoanc9Zyl9fX19ZnVuY3Rpb24gX3ModCl7dmFyIG49dC5jaXJjbGU7biYmKG4uUHx8KGp3PW4uTiksVncucmVtb3ZlKG4pLCR3LnB1c2gobiksUWMobiksdC5jaXJjbGU9bnVsbCl9ZnVuY3Rpb24gZ3MoKXtRYyh0aGlzKSx0aGlzLmVkZ2U9dGhpcy5zaXRlPXRoaXMuY2lyY2xlPW51bGx9ZnVuY3Rpb24geXModCl7dmFyIG49WncucG9wKCl8fG5ldyBncztyZXR1cm4gbi5zaXRlPXQsbn1mdW5jdGlvbiBtcyh0KXtfcyh0KSxIdy5yZW1vdmUodCksWncucHVzaCh0KSxRYyh0KX1mdW5jdGlvbiB4cyh0KXt2YXIgbj10LmNpcmNsZSxlPW4ueCxyPW4uY3ksaT1bZSxyXSxvPXQuUCx1PXQuTixhPVt0XTttcyh0KTtmb3IodmFyIGM9bztjLmNpcmNsZSYmTWF0aC5hYnMoZS1jLmNpcmNsZS54KTxHdyYmTWF0aC5hYnMoci1jLmNpcmNsZS5jeSk8R3c7KW89Yy5QLGEudW5zaGlmdChjKSxtcyhjKSxjPW87YS51bnNoaWZ0KGMpLF9zKGMpO2Zvcih2YXIgcz11O3MuY2lyY2xlJiZNYXRoLmFicyhlLXMuY2lyY2xlLngpPEd3JiZNYXRoLmFicyhyLXMuY2lyY2xlLmN5KTxHdzspdT1zLk4sYS5wdXNoKHMpLG1zKHMpLHM9dTthLnB1c2gocyksX3Mocyk7dmFyIGYsbD1hLmxlbmd0aDtmb3IoZj0xO2Y8bDsrK2Ypcz1hW2ZdLGM9YVtmLTFdLGlzKHMuZWRnZSxjLnNpdGUscy5zaXRlLGkpO2M9YVswXSxzPWFbbC0xXSxzLmVkZ2U9ZXMoYy5zaXRlLHMuc2l0ZSxudWxsLGkpLHZzKGMpLHZzKHMpfWZ1bmN0aW9uIGJzKHQpe2Zvcih2YXIgbixlLHIsaSxvPXRbMF0sdT10WzFdLGE9SHcuXzthOylpZihyPXdzKGEsdSktbyxyPkd3KWE9YS5MO2Vsc2V7aWYoaT1vLU1zKGEsdSksIShpPkd3KSl7cj4tR3c/KG49YS5QLGU9YSk6aT4tR3c/KG49YSxlPWEuTik6bj1lPWE7YnJlYWt9aWYoIWEuUil7bj1hO2JyZWFrfWE9YS5SfWNzKHQpO3ZhciBjPXlzKHQpO2lmKEh3Lmluc2VydChuLGMpLG58fGUpe2lmKG49PT1lKXJldHVybiBfcyhuKSxlPXlzKG4uc2l0ZSksSHcuaW5zZXJ0KGMsZSksYy5lZGdlPWUuZWRnZT1lcyhuLnNpdGUsYy5zaXRlKSx2cyhuKSx2b2lkIHZzKGUpO2lmKCFlKXJldHVybiB2b2lkKGMuZWRnZT1lcyhuLnNpdGUsYy5zaXRlKSk7X3MobiksX3MoZSk7dmFyIHM9bi5zaXRlLGY9c1swXSxsPXNbMV0saD10WzBdLWYscD10WzFdLWwsZD1lLnNpdGUsdj1kWzBdLWYsXz1kWzFdLWwsZz0yKihoKl8tcCp2KSx5PWgqaCtwKnAsbT12KnYrXypfLHg9WyhfKnktcCptKS9nK2YsKGgqbS12KnkpL2crbF07aXMoZS5lZGdlLHMsZCx4KSxjLmVkZ2U9ZXMocyx0LG51bGwseCksZS5lZGdlPWVzKHQsZCxudWxsLHgpLHZzKG4pLHZzKGUpfX1mdW5jdGlvbiB3cyh0LG4pe3ZhciBlPXQuc2l0ZSxyPWVbMF0saT1lWzFdLG89aS1uO2lmKCFvKXJldHVybiByO3ZhciB1PXQuUDtpZighdSlyZXR1cm4tKDEvMCk7ZT11LnNpdGU7dmFyIGE9ZVswXSxjPWVbMV0scz1jLW47aWYoIXMpcmV0dXJuIGE7dmFyIGY9YS1yLGw9MS9vLTEvcyxoPWYvcztyZXR1cm4gbD8oLWgrTWF0aC5zcXJ0KGgqaC0yKmwqKGYqZi8oLTIqcyktYytzLzIraS1vLzIpKSkvbCtyOihyK2EpLzJ9ZnVuY3Rpb24gTXModCxuKXt2YXIgZT10Lk47aWYoZSlyZXR1cm4gd3MoZSxuKTt2YXIgcj10LnNpdGU7cmV0dXJuIHJbMV09PT1uP3JbMF06MS8wfWZ1bmN0aW9uIFRzKHQsbixlKXtyZXR1cm4odFswXS1lWzBdKSooblsxXS10WzFdKS0odFswXS1uWzBdKSooZVsxXS10WzFdKX1mdW5jdGlvbiBrcyh0LG4pe3JldHVybiBuWzFdLXRbMV18fG5bMF0tdFswXX1mdW5jdGlvbiBTcyh0LG4pe3ZhciBlLHIsaSxvPXQuc29ydChrcykucG9wKCk7Zm9yKFd3PVtdLFh3PW5ldyBBcnJheSh0Lmxlbmd0aCksSHc9bmV3IEpjLFZ3PW5ldyBKYzs7KWlmKGk9ancsbyYmKCFpfHxvWzFdPGkueXx8b1sxXT09PWkueSYmb1swXTxpLngpKW9bMF09PT1lJiZvWzFdPT09cnx8KGJzKG8pLGU9b1swXSxyPW9bMV0pLG89dC5wb3AoKTtlbHNle2lmKCFpKWJyZWFrO3hzKGkuYXJjKX1pZihocygpLG4pe3ZhciB1PStuWzBdWzBdLGE9K25bMF1bMV0sYz0rblsxXVswXSxzPStuWzFdWzFdO2FzKHUsYSxjLHMpLHBzKHUsYSxjLHMpfXRoaXMuZWRnZXM9V3csdGhpcy5jZWxscz1YdyxIdz1Wdz1Xdz1Ydz1udWxsfWZ1bmN0aW9uIE5zKHQsbixlKXt0aGlzLnRhcmdldD10LHRoaXMudHlwZT1uLHRoaXMudHJhbnNmb3JtPWV9ZnVuY3Rpb24gRXModCxuLGUpe3RoaXMuaz10LHRoaXMueD1uLHRoaXMueT1lfWZ1bmN0aW9uIEFzKHQpe3JldHVybiB0Ll9fem9vbXx8dE19ZnVuY3Rpb24gQ3MoKXt0LmV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpfWZ1bmN0aW9uIHpzKCl7cmV0dXJuIXQuZXZlbnQuYnV0dG9ufWZ1bmN0aW9uIFBzKCl7dmFyIHQsbixlPXRoaXM7cmV0dXJuIGUgaW5zdGFuY2VvZiBTVkdFbGVtZW50PyhlPWUub3duZXJTVkdFbGVtZW50fHxlLHQ9ZS53aWR0aC5iYXNlVmFsLnZhbHVlLG49ZS5oZWlnaHQuYmFzZVZhbC52YWx1ZSk6KHQ9ZS5jbGllbnRXaWR0aCxuPWUuY2xpZW50SGVpZ2h0KSxbWzAsMF0sW3Qsbl1dfWZ1bmN0aW9uIFJzKCl7cmV0dXJuIHRoaXMuX196b29tfHx0TX12YXIgTHM9IjQuNy4wIixxcz1mdW5jdGlvbih0LG4pe3JldHVybiB0PG4/LTE6dD5uPzE6dD49bj8wOk5hTn0sVXM9ZnVuY3Rpb24odCl7cmV0dXJuIDE9PT10Lmxlbmd0aCYmKHQ9bih0KSkse2xlZnQ6ZnVuY3Rpb24obixlLHIsaSl7Zm9yKG51bGw9PXImJihyPTApLG51bGw9PWkmJihpPW4ubGVuZ3RoKTtyPGk7KXt2YXIgbz1yK2k+Pj4xO3QobltvXSxlKTwwP3I9bysxOmk9b31yZXR1cm4gcn0scmlnaHQ6ZnVuY3Rpb24obixlLHIsaSl7Zm9yKG51bGw9PXImJihyPTApLG51bGw9PWkmJihpPW4ubGVuZ3RoKTtyPGk7KXt2YXIgbz1yK2k+Pj4xO3QobltvXSxlKT4wP2k9bzpyPW8rMX1yZXR1cm4gcn19fSxEcz1VcyhxcyksT3M9RHMucmlnaHQsRnM9RHMubGVmdCxJcz1mdW5jdGlvbih0LG4pe251bGw9PW4mJihuPWUpO2Zvcih2YXIgcj0wLGk9dC5sZW5ndGgtMSxvPXRbMF0sdT1uZXcgQXJyYXkoaTwwPzA6aSk7cjxpOyl1W3JdPW4obyxvPXRbKytyXSk7cmV0dXJuIHV9LFlzPWZ1bmN0aW9uKHQsbixyKXt2YXIgaSxvLHUsYSxjPXQubGVuZ3RoLHM9bi5sZW5ndGgsZj1uZXcgQXJyYXkoYypzKTtmb3IobnVsbD09ciYmKHI9ZSksaT11PTA7aTxjOysraSlmb3IoYT10W2ldLG89MDtvPHM7KytvLCsrdSlmW3VdPXIoYSxuW29dKTtyZXR1cm4gZn0sQnM9ZnVuY3Rpb24odCxuKXtyZXR1cm4gbjx0Py0xOm4+dD8xOm4+PXQ/MDpOYU59LGpzPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT09dD9OYU46K3R9LEhzPWZ1bmN0aW9uKHQsbil7dmFyIGUscixpPXQubGVuZ3RoLG89MCx1PTAsYT0tMSxjPTA7aWYobnVsbD09bilmb3IoOysrYTxpOylpc05hTihlPWpzKHRbYV0pKXx8KHI9ZS1vLG8rPXIvKytjLHUrPXIqKGUtbykpO2Vsc2UgZm9yKDsrK2E8aTspaXNOYU4oZT1qcyhuKHRbYV0sYSx0KSkpfHwocj1lLW8sbys9ci8rK2MsdSs9ciooZS1vKSk7aWYoYz4xKXJldHVybiB1LyhjLTEpfSxYcz1mdW5jdGlvbih0LG4pe3ZhciBlPUhzKHQsbik7cmV0dXJuIGU/TWF0aC5zcXJ0KGUpOmV9LFZzPWZ1bmN0aW9uKHQsbil7dmFyIGUscixpLG89LTEsdT10Lmxlbmd0aDtpZihudWxsPT1uKXtmb3IoOysrbzx1OylpZihudWxsIT0ocj10W29dKSYmcj49cil7ZT1pPXI7YnJlYWt9Zm9yKDsrK288dTspbnVsbCE9KHI9dFtvXSkmJihlPnImJihlPXIpLGk8ciYmKGk9cikpfWVsc2V7Zm9yKDsrK288dTspaWYobnVsbCE9KHI9bih0W29dLG8sdCkpJiZyPj1yKXtlPWk9cjticmVha31mb3IoOysrbzx1OyludWxsIT0ocj1uKHRbb10sbyx0KSkmJihlPnImJihlPXIpLGk8ciYmKGk9cikpfXJldHVybltlLGldfSxXcz1BcnJheS5wcm90b3R5cGUsJHM9V3Muc2xpY2UsWnM9V3MubWFwLEdzPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0fX0sSnM9ZnVuY3Rpb24odCl7cmV0dXJuIHR9LFFzPWZ1bmN0aW9uKHQsbixlKXt0PSt0LG49K24sZT0oaT1hcmd1bWVudHMubGVuZ3RoKTwyPyhuPXQsdD0wLDEpOmk8Mz8xOitlO2Zvcih2YXIgcj0tMSxpPTB8TWF0aC5tYXgoMCxNYXRoLmNlaWwoKG4tdCkvZSkpLG89bmV3IEFycmF5KGkpOysrcjxpOylvW3JdPXQrciplO3JldHVybiBvfSxLcz1NYXRoLnNxcnQoNTApLHRmPU1hdGguc3FydCgxMCksbmY9TWF0aC5zcXJ0KDIpLGVmPWZ1bmN0aW9uKHQsbixlKXt2YXIgaT1yKHQsbixlKTtyZXR1cm4gUXMoTWF0aC5jZWlsKHQvaSkqaSxNYXRoLmZsb29yKG4vaSkqaStpLzIsaSl9LHJmPWZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLmNlaWwoTWF0aC5sb2codC5sZW5ndGgpL01hdGguTE4yKSsxfSxvZj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dmFyIGksbyx1PXQubGVuZ3RoLGE9bmV3IEFycmF5KHUpO2ZvcihpPTA7aTx1OysraSlhW2ldPW4odFtpXSxpLHQpO3ZhciBjPWUoYSkscz1jWzBdLGY9Y1sxXSxsPXIoYSxzLGYpO0FycmF5LmlzQXJyYXkobCl8fChsPWVmKHMsZixsKSk7Zm9yKHZhciBoPWwubGVuZ3RoO2xbMF08PXM7KWwuc2hpZnQoKSwtLWg7Zm9yKDtsW2gtMV0+PWY7KWwucG9wKCksLS1oO3ZhciBwLGQ9bmV3IEFycmF5KGgrMSk7Zm9yKGk9MDtpPD1oOysraSlwPWRbaV09W10scC54MD1pPjA/bFtpLTFdOnMscC54MT1pPGg/bFtpXTpmO2ZvcihpPTA7aTx1OysraSlvPWFbaV0sczw9byYmbzw9ZiYmZFtPcyhsLG8sMCxoKV0ucHVzaCh0W2ldKTtyZXR1cm4gZH12YXIgbj1KcyxlPVZzLHI9cmY7cmV0dXJuIHQudmFsdWU9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZTpHcyhlKSx0KTpufSx0LmRvbWFpbj1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT0iZnVuY3Rpb24iPT10eXBlb2Ygbj9uOkdzKFtuWzBdLG5bMV1dKSx0KTplfSx0LnRocmVzaG9sZHM9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9ImZ1bmN0aW9uIj09dHlwZW9mIG4/bjpHcyhBcnJheS5pc0FycmF5KG4pPyRzLmNhbGwobik6biksdCk6cn0sdH0sdWY9ZnVuY3Rpb24odCxuLGUpe2lmKG51bGw9PWUmJihlPWpzKSxyPXQubGVuZ3RoKXtpZigobj0rbik8PTB8fHI8MilyZXR1cm4rZSh0WzBdLDAsdCk7aWYobj49MSlyZXR1cm4rZSh0W3ItMV0sci0xLHQpO3ZhciByLGk9KHItMSkqbixvPU1hdGguZmxvb3IoaSksdT0rZSh0W29dLG8sdCk7cmV0dXJuIHUrKCtlKHRbbysxXSxvKzEsdCktdSkqKGktbyl9fSxhZj1mdW5jdGlvbih0LG4sZSl7cmV0dXJuIHQ9WnMuY2FsbCh0LGpzKS5zb3J0KHFzKSxNYXRoLmNlaWwoKGUtbikvKDIqKHVmKHQsLjc1KS11Zih0LC4yNSkpKk1hdGgucG93KHQubGVuZ3RoLC0xLzMpKSl9LGNmPWZ1bmN0aW9uKHQsbixlKXtyZXR1cm4gTWF0aC5jZWlsKChlLW4pLygzLjUqWHModCkqTWF0aC5wb3codC5sZW5ndGgsLTEvMykpKX0sc2Y9ZnVuY3Rpb24odCxuKXt2YXIgZSxyLGk9LTEsbz10Lmxlbmd0aDtpZihudWxsPT1uKXtmb3IoOysraTxvOylpZihudWxsIT0ocj10W2ldKSYmcj49cil7ZT1yO2JyZWFrfWZvcig7KytpPG87KW51bGwhPShyPXRbaV0pJiZyPmUmJihlPXIpfWVsc2V7Zm9yKDsrK2k8bzspaWYobnVsbCE9KHI9bih0W2ldLGksdCkpJiZyPj1yKXtlPXI7YnJlYWt9Zm9yKDsrK2k8bzspbnVsbCE9KHI9bih0W2ldLGksdCkpJiZyPmUmJihlPXIpfXJldHVybiBlfSxmZj1mdW5jdGlvbih0LG4pe3ZhciBlLHI9MCxpPXQubGVuZ3RoLG89LTEsdT1pO2lmKG51bGw9PW4pZm9yKDsrK288aTspaXNOYU4oZT1qcyh0W29dKSk/LS11OnIrPWU7ZWxzZSBmb3IoOysrbzxpOylpc05hTihlPWpzKG4odFtvXSxvLHQpKSk/LS11OnIrPWU7aWYodSlyZXR1cm4gci91fSxsZj1mdW5jdGlvbih0LG4pe3ZhciBlLHI9W10saT10Lmxlbmd0aCxvPS0xO2lmKG51bGw9PW4pZm9yKDsrK288aTspaXNOYU4oZT1qcyh0W29dKSl8fHIucHVzaChlKTtlbHNlIGZvcig7KytvPGk7KWlzTmFOKGU9anMobih0W29dLG8sdCkpKXx8ci5wdXNoKGUpO3JldHVybiB1ZihyLnNvcnQocXMpLC41KX0saGY9ZnVuY3Rpb24odCl7Zm9yKHZhciBuLGUscixpPXQubGVuZ3RoLG89LTEsdT0wOysrbzxpOyl1Kz10W29dLmxlbmd0aDtmb3IoZT1uZXcgQXJyYXkodSk7LS1pPj0wOylmb3Iocj10W2ldLG49ci5sZW5ndGg7LS1uPj0wOyllWy0tdV09cltuXTtyZXR1cm4gZX0scGY9ZnVuY3Rpb24odCxuKXt2YXIgZSxyLGk9LTEsbz10Lmxlbmd0aDtpZihudWxsPT1uKXtmb3IoOysraTxvOylpZihudWxsIT0ocj10W2ldKSYmcj49cil7ZT1yO2JyZWFrfWZvcig7KytpPG87KW51bGwhPShyPXRbaV0pJiZlPnImJihlPXIpfWVsc2V7Zm9yKDsrK2k8bzspaWYobnVsbCE9KHI9bih0W2ldLGksdCkpJiZyPj1yKXtlPXI7YnJlYWt9Zm9yKDsrK2k8bzspbnVsbCE9KHI9bih0W2ldLGksdCkpJiZlPnImJihlPXIpfXJldHVybiBlfSxkZj1mdW5jdGlvbih0LG4pe2Zvcih2YXIgZT1uLmxlbmd0aCxyPW5ldyBBcnJheShlKTtlLS07KXJbZV09dFtuW2VdXTtyZXR1cm4gcn0sdmY9ZnVuY3Rpb24odCxuKXtpZihlPXQubGVuZ3RoKXt2YXIgZSxyLGk9MCxvPTAsdT10W29dO2ZvcihufHwobj1xcyk7KytpPGU7KShuKHI9dFtpXSx1KTwwfHwwIT09bih1LHUpKSYmKHU9cixvPWkpO3JldHVybiAwPT09bih1LHUpP286dm9pZCAwfX0sX2Y9ZnVuY3Rpb24odCxuLGUpe2Zvcih2YXIgcixpLG89KG51bGw9PWU/dC5sZW5ndGg6ZSktKG49bnVsbD09bj8wOituKTtvOylpPU1hdGgucmFuZG9tKCkqby0tfDAscj10W28rbl0sdFtvK25dPXRbaStuXSx0W2krbl09cjtyZXR1cm4gdH0sZ2Y9ZnVuY3Rpb24odCxuKXt2YXIgZSxyPTAsaT10Lmxlbmd0aCxvPS0xO2lmKG51bGw9PW4pZm9yKDsrK288aTspKGU9K3Rbb10pJiYocis9ZSk7ZWxzZSBmb3IoOysrbzxpOykoZT0rbih0W29dLG8sdCkpJiYocis9ZSk7cmV0dXJuIHJ9LHlmPWZ1bmN0aW9uKHQpe2lmKCEobz10Lmxlbmd0aCkpcmV0dXJuW107Zm9yKHZhciBuPS0xLGU9cGYodCxpKSxyPW5ldyBBcnJheShlKTsrK248ZTspZm9yKHZhciBvLHU9LTEsYT1yW25dPW5ldyBBcnJheShvKTsrK3U8bzspYVt1XT10W3VdW25dO3JldHVybiByfSxtZj1mdW5jdGlvbigpe3JldHVybiB5Zihhcmd1bWVudHMpfSx4Zj1BcnJheS5wcm90b3R5cGUuc2xpY2UsYmY9ZnVuY3Rpb24odCl7cmV0dXJuIHR9LHdmPTEsTWY9MixUZj0zLGtmPTQsU2Y9MWUtNixOZj17dmFsdWU6ZnVuY3Rpb24oKXt9fTt2LnByb3RvdHlwZT1kLnByb3RvdHlwZT17Y29uc3RydWN0b3I6dixvbjpmdW5jdGlvbih0LG4pe3ZhciBlLHI9dGhpcy5fLGk9Xyh0KyIiLHIpLG89LTEsdT1pLmxlbmd0aDt7aWYoIShhcmd1bWVudHMubGVuZ3RoPDIpKXtpZihudWxsIT1uJiYiZnVuY3Rpb24iIT10eXBlb2Ygbil0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgY2FsbGJhY2s6ICIrbik7Zm9yKDsrK288dTspaWYoZT0odD1pW29dKS50eXBlKXJbZV09eShyW2VdLHQubmFtZSxuKTtlbHNlIGlmKG51bGw9PW4pZm9yKGUgaW4gcilyW2VdPXkocltlXSx0Lm5hbWUsbnVsbCk7cmV0dXJuIHRoaXN9Zm9yKDsrK288dTspaWYoKGU9KHQ9aVtvXSkudHlwZSkmJihlPWcocltlXSx0Lm5hbWUpKSlyZXR1cm4gZX19LGNvcHk6ZnVuY3Rpb24oKXt2YXIgdD17fSxuPXRoaXMuXztmb3IodmFyIGUgaW4gbil0W2VdPW5bZV0uc2xpY2UoKTtyZXR1cm4gbmV3IHYodCl9LGNhbGw6ZnVuY3Rpb24odCxuKXtpZigoZT1hcmd1bWVudHMubGVuZ3RoLTIpPjApZm9yKHZhciBlLHIsaT1uZXcgQXJyYXkoZSksbz0wO288ZTsrK28paVtvXT1hcmd1bWVudHNbbysyXTtpZighdGhpcy5fLmhhc093blByb3BlcnR5KHQpKXRocm93IG5ldyBFcnJvcigidW5rbm93biB0eXBlOiAiK3QpO2ZvcihyPXRoaXMuX1t0XSxvPTAsZT1yLmxlbmd0aDtvPGU7KytvKXJbb10udmFsdWUuYXBwbHkobixpKX0sYXBwbHk6ZnVuY3Rpb24odCxuLGUpe2lmKCF0aGlzLl8uaGFzT3duUHJvcGVydHkodCkpdGhyb3cgbmV3IEVycm9yKCJ1bmtub3duIHR5cGU6ICIrdCk7Zm9yKHZhciByPXRoaXMuX1t0XSxpPTAsbz1yLmxlbmd0aDtpPG87KytpKXJbaV0udmFsdWUuYXBwbHkobixlKX19O3ZhciBFZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIsQWY9e3N2ZzoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHhodG1sOkVmLHhsaW5rOiJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIix4bWw6Imh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAveG1sbnMvIn0sQ2Y9ZnVuY3Rpb24odCl7dmFyIG49dCs9IiIsZT1uLmluZGV4T2YoIjoiKTtyZXR1cm4gZT49MCYmInhtbG5zIiE9PShuPXQuc2xpY2UoMCxlKSkmJih0PXQuc2xpY2UoZSsxKSksQWYuaGFzT3duUHJvcGVydHkobik/e3NwYWNlOkFmW25dLGxvY2FsOnR9OnR9LHpmPWZ1bmN0aW9uKHQpe3ZhciBuPUNmKHQpO3JldHVybihuLmxvY2FsP3g6bSkobil9LFBmPTA7dy5wcm90b3R5cGU9Yi5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOncsZ2V0OmZ1bmN0aW9uKHQpe2Zvcih2YXIgbj10aGlzLl87IShuIGluIHQpOylpZighKHQ9dC5wYXJlbnROb2RlKSlyZXR1cm47cmV0dXJuIHRbbl19LHNldDpmdW5jdGlvbih0LG4pe3JldHVybiB0W3RoaXMuX109bn0scmVtb3ZlOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl8gaW4gdCYmZGVsZXRlIHRbdGhpcy5fXX0sdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ffX07dmFyIFJmPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0aGlzLm1hdGNoZXModCl9fTtpZigidW5kZWZpbmVkIiE9dHlwZW9mIGRvY3VtZW50KXt2YXIgTGY9ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O2lmKCFMZi5tYXRjaGVzKXt2YXIgcWY9TGYud2Via2l0TWF0Y2hlc1NlbGVjdG9yfHxMZi5tc01hdGNoZXNTZWxlY3Rvcnx8TGYubW96TWF0Y2hlc1NlbGVjdG9yfHxMZi5vTWF0Y2hlc1NlbGVjdG9yO1JmPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBxZi5jYWxsKHRoaXMsdCl9fX19dmFyIFVmPVJmLERmPXt9O2lmKHQuZXZlbnQ9bnVsbCwidW5kZWZpbmVkIiE9dHlwZW9mIGRvY3VtZW50KXsib25tb3VzZWVudGVyImluIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudHx8KERmPXttb3VzZWVudGVyOiJtb3VzZW92ZXIiLG1vdXNlbGVhdmU6Im1vdXNlb3V0In0pfXZhciBPZj1mdW5jdGlvbih0LG4sZSl7dmFyIHIsaSxvPWsodCsiIiksdT1vLmxlbmd0aDt7aWYoIShhcmd1bWVudHMubGVuZ3RoPDIpKXtmb3IoYT1uP046UyxudWxsPT1lJiYoZT0hMSkscj0wO3I8dTsrK3IpdGhpcy5lYWNoKGEob1tyXSxuLGUpKTtyZXR1cm4gdGhpc312YXIgYT10aGlzLm5vZGUoKS5fX29uO2lmKGEpZm9yKHZhciBjLHM9MCxmPWEubGVuZ3RoO3M8ZjsrK3MpZm9yKHI9MCxjPWFbc107cjx1OysrcilpZigoaT1vW3JdKS50eXBlPT09Yy50eXBlJiZpLm5hbWU9PT1jLm5hbWUpcmV0dXJuIGMudmFsdWV9fSxGZj1mdW5jdGlvbigpe2Zvcih2YXIgbixlPXQuZXZlbnQ7bj1lLnNvdXJjZUV2ZW50OyllPW47cmV0dXJuIGV9LElmPWZ1bmN0aW9uKHQsbil7dmFyIGU9dC5vd25lclNWR0VsZW1lbnR8fHQ7aWYoZS5jcmVhdGVTVkdQb2ludCl7dmFyIHI9ZS5jcmVhdGVTVkdQb2ludCgpO3JldHVybiByLng9bi5jbGllbnRYLHIueT1uLmNsaWVudFkscj1yLm1hdHJpeFRyYW5zZm9ybSh0LmdldFNjcmVlbkNUTSgpLmludmVyc2UoKSksW3IueCxyLnldfXZhciBpPXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7cmV0dXJuW24uY2xpZW50WC1pLmxlZnQtdC5jbGllbnRMZWZ0LG4uY2xpZW50WS1pLnRvcC10LmNsaWVudFRvcF19LFlmPWZ1bmN0aW9uKHQpe3ZhciBuPUZmKCk7cmV0dXJuIG4uY2hhbmdlZFRvdWNoZXMmJihuPW4uY2hhbmdlZFRvdWNoZXNbMF0pLElmKHQsbil9LEJmPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P0E6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5xdWVyeVNlbGVjdG9yKHQpfX0samY9ZnVuY3Rpb24odCl7ImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PUJmKHQpKTtmb3IodmFyIG49dGhpcy5fZ3JvdXBzLGU9bi5sZW5ndGgscj1uZXcgQXJyYXkoZSksaT0wO2k8ZTsrK2kpZm9yKHZhciBvLHUsYT1uW2ldLGM9YS5sZW5ndGgscz1yW2ldPW5ldyBBcnJheShjKSxmPTA7ZjxjOysrZikobz1hW2ZdKSYmKHU9dC5jYWxsKG8sby5fX2RhdGFfXyxmLGEpKSYmKCJfX2RhdGFfXyJpbiBvJiYodS5fX2RhdGFfXz1vLl9fZGF0YV9fKSxzW2ZdPXUpO3JldHVybiBuZXcgZHQocix0aGlzLl9wYXJlbnRzKX0sSGY9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/QzpmdW5jdGlvbigpe3JldHVybiB0aGlzLnF1ZXJ5U2VsZWN0b3JBbGwodCl9fSxYZj1mdW5jdGlvbih0KXsiZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9SGYodCkpO2Zvcih2YXIgbj10aGlzLl9ncm91cHMsZT1uLmxlbmd0aCxyPVtdLGk9W10sbz0wO288ZTsrK28pZm9yKHZhciB1LGE9bltvXSxjPWEubGVuZ3RoLHM9MDtzPGM7KytzKSh1PWFbc10pJiYoci5wdXNoKHQuY2FsbCh1LHUuX19kYXRhX18scyxhKSksaS5wdXNoKHUpKTtyZXR1cm4gbmV3IGR0KHIsaSl9LFZmPWZ1bmN0aW9uKHQpeyJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD1VZih0KSk7Zm9yKHZhciBuPXRoaXMuX2dyb3VwcyxlPW4ubGVuZ3RoLHI9bmV3IEFycmF5KGUpLGk9MDtpPGU7KytpKWZvcih2YXIgbyx1PW5baV0sYT11Lmxlbmd0aCxjPXJbaV09W10scz0wO3M8YTsrK3MpKG89dVtzXSkmJnQuY2FsbChvLG8uX19kYXRhX18scyx1KSYmYy5wdXNoKG8pO3JldHVybiBuZXcgZHQocix0aGlzLl9wYXJlbnRzKX0sV2Y9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBBcnJheSh0Lmxlbmd0aCl9LCRmPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBkdCh0aGlzLl9lbnRlcnx8dGhpcy5fZ3JvdXBzLm1hcChXZiksdGhpcy5fcGFyZW50cyl9O3oucHJvdG90eXBlPXtjb25zdHJ1Y3Rvcjp6LGFwcGVuZENoaWxkOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9wYXJlbnQuaW5zZXJ0QmVmb3JlKHQsdGhpcy5fbmV4dCl9LGluc2VydEJlZm9yZTpmdW5jdGlvbih0LG4pe3JldHVybiB0aGlzLl9wYXJlbnQuaW5zZXJ0QmVmb3JlKHQsbil9LHF1ZXJ5U2VsZWN0b3I6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3BhcmVudC5xdWVyeVNlbGVjdG9yKHQpfSxxdWVyeVNlbGVjdG9yQWxsOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9wYXJlbnQucXVlcnlTZWxlY3RvckFsbCh0KX19O3ZhciBaZj1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19LEdmPSIkIixKZj1mdW5jdGlvbih0LG4pe2lmKCF0KXJldHVybiBwPW5ldyBBcnJheSh0aGlzLnNpemUoKSkscz0tMSx0aGlzLmVhY2goZnVuY3Rpb24odCl7cFsrK3NdPXR9KSxwO3ZhciBlPW4/UjpQLHI9dGhpcy5fcGFyZW50cyxpPXRoaXMuX2dyb3VwczsiZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9WmYodCkpO2Zvcih2YXIgbz1pLmxlbmd0aCx1PW5ldyBBcnJheShvKSxhPW5ldyBBcnJheShvKSxjPW5ldyBBcnJheShvKSxzPTA7czxvOysrcyl7dmFyIGY9cltzXSxsPWlbc10saD1sLmxlbmd0aCxwPXQuY2FsbChmLGYmJmYuX19kYXRhX18scyxyKSxkPXAubGVuZ3RoLHY9YVtzXT1uZXcgQXJyYXkoZCksXz11W3NdPW5ldyBBcnJheShkKTtlKGYsbCx2LF8sY1tzXT1uZXcgQXJyYXkoaCkscCxuKTtmb3IodmFyIGcseSxtPTAseD0wO208ZDsrK20paWYoZz12W21dKXtmb3IobT49eCYmKHg9bSsxKTshKHk9X1t4XSkmJisreDxkOyk7Zy5fbmV4dD15fHxudWxsfX1yZXR1cm4gdT1uZXcgZHQodSxyKSx1Ll9lbnRlcj1hLHUuX2V4aXQ9Yyx1fSxRZj1mdW5jdGlvbigpe3JldHVybiBuZXcgZHQodGhpcy5fZXhpdHx8dGhpcy5fZ3JvdXBzLm1hcChXZiksdGhpcy5fcGFyZW50cyl9LEtmPWZ1bmN0aW9uKHQpe2Zvcih2YXIgbj10aGlzLl9ncm91cHMsZT10Ll9ncm91cHMscj1uLmxlbmd0aCxpPWUubGVuZ3RoLG89TWF0aC5taW4ocixpKSx1PW5ldyBBcnJheShyKSxhPTA7YTxvOysrYSlmb3IodmFyIGMscz1uW2FdLGY9ZVthXSxsPXMubGVuZ3RoLGg9dVthXT1uZXcgQXJyYXkobCkscD0wO3A8bDsrK3ApKGM9c1twXXx8ZltwXSkmJihoW3BdPWMpO2Zvcig7YTxyOysrYSl1W2FdPW5bYV07cmV0dXJuIG5ldyBkdCh1LHRoaXMuX3BhcmVudHMpfSx0bD1mdW5jdGlvbigpe2Zvcih2YXIgdD10aGlzLl9ncm91cHMsbj0tMSxlPXQubGVuZ3RoOysrbjxlOylmb3IodmFyIHIsaT10W25dLG89aS5sZW5ndGgtMSx1PWlbb107LS1vPj0wOykocj1pW29dKSYmKHUmJnUhPT1yLm5leHRTaWJsaW5nJiZ1LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHIsdSksdT1yKTtyZXR1cm4gdGhpc30sbmw9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gbihuLGUpe3JldHVybiBuJiZlP3Qobi5fX2RhdGFfXyxlLl9fZGF0YV9fKTohbi0hZX10fHwodD1MKTtmb3IodmFyIGU9dGhpcy5fZ3JvdXBzLHI9ZS5sZW5ndGgsaT1uZXcgQXJyYXkociksbz0wO288cjsrK28pe2Zvcih2YXIgdSxhPWVbb10sYz1hLmxlbmd0aCxzPWlbb109bmV3IEFycmF5KGMpLGY9MDtmPGM7KytmKSh1PWFbZl0pJiYoc1tmXT11KTtzLnNvcnQobil9cmV0dXJuIG5ldyBkdChpLHRoaXMuX3BhcmVudHMpLm9yZGVyKCl9LGVsPWZ1bmN0aW9uKCl7dmFyIHQ9YXJndW1lbnRzWzBdO3JldHVybiBhcmd1bWVudHNbMF09dGhpcyx0LmFwcGx5KG51bGwsYXJndW1lbnRzKSx0aGlzfSxybD1mdW5jdGlvbigpe3ZhciB0PW5ldyBBcnJheSh0aGlzLnNpemUoKSksbj0tMTtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dFsrK25dPXRoaXN9KSx0fSxpbD1mdW5jdGlvbigpe2Zvcih2YXIgdD10aGlzLl9ncm91cHMsbj0wLGU9dC5sZW5ndGg7bjxlOysrbilmb3IodmFyIHI9dFtuXSxpPTAsbz1yLmxlbmd0aDtpPG87KytpKXt2YXIgdT1yW2ldO2lmKHUpcmV0dXJuIHV9cmV0dXJuIG51bGx9LG9sPWZ1bmN0aW9uKCl7dmFyIHQ9MDtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7Kyt0fSksdH0sdWw9ZnVuY3Rpb24oKXtyZXR1cm4hdGhpcy5ub2RlKCl9LGFsPWZ1bmN0aW9uKHQpe2Zvcih2YXIgbj10aGlzLl9ncm91cHMsZT0wLHI9bi5sZW5ndGg7ZTxyOysrZSlmb3IodmFyIGksbz1uW2VdLHU9MCxhPW8ubGVuZ3RoO3U8YTsrK3UpKGk9b1t1XSkmJnQuY2FsbChpLGkuX19kYXRhX18sdSxvKTtyZXR1cm4gdGhpc30sY2w9ZnVuY3Rpb24odCxuKXt2YXIgZT1DZih0KTtpZihhcmd1bWVudHMubGVuZ3RoPDIpe3ZhciByPXRoaXMubm9kZSgpO3JldHVybiBlLmxvY2FsP3IuZ2V0QXR0cmlidXRlTlMoZS5zcGFjZSxlLmxvY2FsKTpyLmdldEF0dHJpYnV0ZShlKX1yZXR1cm4gdGhpcy5lYWNoKChudWxsPT1uP2UubG9jYWw/VTpxOiJmdW5jdGlvbiI9PXR5cGVvZiBuP2UubG9jYWw/STpGOmUubG9jYWw/TzpEKShlLG4pKX0sc2w9ZnVuY3Rpb24odCl7cmV0dXJuIHQub3duZXJEb2N1bWVudCYmdC5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3fHx0LmRvY3VtZW50JiZ0fHx0LmRlZmF1bHRWaWV3fSxmbD1mdW5jdGlvbih0LG4sZSl7dmFyIHI7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg+MT90aGlzLmVhY2goKG51bGw9PW4/WToiZnVuY3Rpb24iPT10eXBlb2Ygbj9qOkIpKHQsbixudWxsPT1lPyIiOmUpKTpzbChyPXRoaXMubm9kZSgpKS5nZXRDb21wdXRlZFN0eWxlKHIsbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSh0KX0sbGw9ZnVuY3Rpb24odCxuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD4xP3RoaXMuZWFjaCgobnVsbD09bj9IOiJmdW5jdGlvbiI9PXR5cGVvZiBuP1Y6WCkodCxuKSk6dGhpcy5ub2RlKClbdF19O1oucHJvdG90eXBlPXthZGQ6ZnVuY3Rpb24odCl7dGhpcy5fbmFtZXMuaW5kZXhPZih0KTwwJiYodGhpcy5fbmFtZXMucHVzaCh0KSx0aGlzLl9ub2RlLnNldEF0dHJpYnV0ZSgiY2xhc3MiLHRoaXMuX25hbWVzLmpvaW4oIiAiKSkpfSxyZW1vdmU6ZnVuY3Rpb24odCl7dmFyIG49dGhpcy5fbmFtZXMuaW5kZXhPZih0KTtuPj0wJiYodGhpcy5fbmFtZXMuc3BsaWNlKG4sMSksdGhpcy5fbm9kZS5zZXRBdHRyaWJ1dGUoImNsYXNzIix0aGlzLl9uYW1lcy5qb2luKCIgIikpKX0sY29udGFpbnM6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX25hbWVzLmluZGV4T2YodCk+PTB9fTt2YXIgaGw9ZnVuY3Rpb24odCxuKXt2YXIgZT1XKHQrIiIpO2lmKGFyZ3VtZW50cy5sZW5ndGg8Mil7Zm9yKHZhciByPSQodGhpcy5ub2RlKCkpLGk9LTEsbz1lLmxlbmd0aDsrK2k8bzspaWYoIXIuY29udGFpbnMoZVtpXSkpcmV0dXJuITE7cmV0dXJuITB9cmV0dXJuIHRoaXMuZWFjaCgoImZ1bmN0aW9uIj09dHlwZW9mIG4/dHQ6bj9ROkspKGUsbikpfSxwbD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLmVhY2gobnVsbD09dD9udDooImZ1bmN0aW9uIj09dHlwZW9mIHQ/cnQ6ZXQpKHQpKTp0aGlzLm5vZGUoKS50ZXh0Q29udGVudH0sZGw9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5lYWNoKG51bGw9PXQ/aXQ6KCJmdW5jdGlvbiI9PXR5cGVvZiB0P3V0Om90KSh0KSk6dGhpcy5ub2RlKCkuaW5uZXJIVE1MfSx2bD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmVhY2goYXQpfSxfbD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmVhY2goY3QpfSxnbD1mdW5jdGlvbih0KXt2YXIgbj0iZnVuY3Rpb24iPT10eXBlb2YgdD90OnpmKHQpO3JldHVybiB0aGlzLnNlbGVjdChmdW5jdGlvbigpe3JldHVybiB0aGlzLmFwcGVuZENoaWxkKG4uYXBwbHkodGhpcyxhcmd1bWVudHMpKX0pfSx5bD1mdW5jdGlvbih0LG4pe3ZhciBlPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6emYodCkscj1udWxsPT1uP3N0OiJmdW5jdGlvbiI9PXR5cGVvZiBuP246QmYobik7cmV0dXJuIHRoaXMuc2VsZWN0KGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW5zZXJ0QmVmb3JlKGUuYXBwbHkodGhpcyxhcmd1bWVudHMpLHIuYXBwbHkodGhpcyxhcmd1bWVudHMpfHxudWxsKX0pfSxtbD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmVhY2goZnQpfSx4bD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLnByb3BlcnR5KCJfX2RhdGFfXyIsdCk6dGhpcy5ub2RlKCkuX19kYXRhX199LGJsPWZ1bmN0aW9uKHQsbil7cmV0dXJuIHRoaXMuZWFjaCgoImZ1bmN0aW9uIj09dHlwZW9mIG4/cHQ6aHQpKHQsbikpfSx3bD1bbnVsbF07ZHQucHJvdG90eXBlPXZ0LnByb3RvdHlwZT17Y29uc3RydWN0b3I6ZHQsc2VsZWN0OmpmLHNlbGVjdEFsbDpYZixmaWx0ZXI6VmYsZGF0YTpKZixlbnRlcjokZixleGl0OlFmLG1lcmdlOktmLG9yZGVyOnRsLHNvcnQ6bmwsY2FsbDplbCxub2RlczpybCxub2RlOmlsLHNpemU6b2wsZW1wdHk6dWwsZWFjaDphbCxhdHRyOmNsLHN0eWxlOmZsLHByb3BlcnR5OmxsLGNsYXNzZWQ6aGwsdGV4dDpwbCxodG1sOmRsLHJhaXNlOnZsLGxvd2VyOl9sLGFwcGVuZDpnbCxpbnNlcnQ6eWwscmVtb3ZlOm1sLGRhdHVtOnhsLG9uOk9mLGRpc3BhdGNoOmJsfTt2YXIgTWw9ZnVuY3Rpb24odCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0P25ldyBkdChbW2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3IodCldXSxbZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50XSk6bmV3IGR0KFtbdF1dLHdsKX0sVGw9ZnVuY3Rpb24odCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0P25ldyBkdChbZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCh0KV0sW2RvY3VtZW50LmRvY3VtZW50RWxlbWVudF0pOm5ldyBkdChbbnVsbD09dD9bXTp0XSx3bCl9LGtsPWZ1bmN0aW9uKHQsbixlKXthcmd1bWVudHMubGVuZ3RoPDMmJihlPW4sbj1GZigpLmNoYW5nZWRUb3VjaGVzKTtmb3IodmFyIHIsaT0wLG89bj9uLmxlbmd0aDowO2k8bzsrK2kpaWYoKHI9bltpXSkuaWRlbnRpZmllcj09PWUpcmV0dXJuIElmKHQscik7cmV0dXJuIG51bGx9LFNsPWZ1bmN0aW9uKHQsbil7bnVsbD09biYmKG49RmYoKS50b3VjaGVzKTtmb3IodmFyIGU9MCxyPW4/bi5sZW5ndGg6MCxpPW5ldyBBcnJheShyKTtlPHI7KytlKWlbZV09SWYodCxuW2VdKTtyZXR1cm4gaX0sTmw9ZnVuY3Rpb24oKXt0LmV2ZW50LnByZXZlbnREZWZhdWx0KCksdC5ldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKX0sRWw9ZnVuY3Rpb24odCl7dmFyIG49dC5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsZT1NbCh0KS5vbigiZHJhZ3N0YXJ0LmRyYWciLE5sLCEwKTsib25zZWxlY3RzdGFydCJpbiBuP2Uub24oInNlbGVjdHN0YXJ0LmRyYWciLE5sLCEwKToobi5fX25vc2VsZWN0PW4uc3R5bGUuTW96VXNlclNlbGVjdCxuLnN0eWxlLk1velVzZXJTZWxlY3Q9Im5vbmUiKX0sQWw9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fTt5dC5wcm90b3R5cGUub249ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl8ub24uYXBwbHkodGhpcy5fLGFyZ3VtZW50cyk7cmV0dXJuIHQ9PT10aGlzLl8/dGhpczp0fTt2YXIgQ2w9ZnVuY3Rpb24oKXtmdW5jdGlvbiBuKHQpe3Qub24oIm1vdXNlZG93bi5kcmFnIixlKS5vbigidG91Y2hzdGFydC5kcmFnIixvKS5vbigidG91Y2htb3ZlLmRyYWciLHUpLm9uKCJ0b3VjaGVuZC5kcmFnIHRvdWNoY2FuY2VsLmRyYWciLGEpLnN0eWxlKCItd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3IiLCJyZ2JhKDAsMCwwLDApIil9ZnVuY3Rpb24gZSgpe2lmKCFmJiZsLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl7dmFyIG49YygibW91c2UiLGguYXBwbHkodGhpcyxhcmd1bWVudHMpLFlmLHRoaXMsYXJndW1lbnRzKTtuJiYoTWwodC5ldmVudC52aWV3KS5vbigibW91c2Vtb3ZlLmRyYWciLHIsITApLm9uKCJtb3VzZXVwLmRyYWciLGksITApLEVsKHQuZXZlbnQudmlldyksX3QoKSxzPSExLG4oInN0YXJ0IikpfX1mdW5jdGlvbiByKCl7TmwoKSxzPSEwLHYubW91c2UoImRyYWciKX1mdW5jdGlvbiBpKCl7TWwodC5ldmVudC52aWV3KS5vbigibW91c2Vtb3ZlLmRyYWcgbW91c2V1cC5kcmFnIixudWxsKSxndCh0LmV2ZW50LnZpZXcscyksTmwoKSx2Lm1vdXNlKCJlbmQiKX1mdW5jdGlvbiBvKCl7aWYobC5hcHBseSh0aGlzLGFyZ3VtZW50cykpe3ZhciBuLGUscj10LmV2ZW50LmNoYW5nZWRUb3VjaGVzLGk9aC5hcHBseSh0aGlzLGFyZ3VtZW50cyksbz1yLmxlbmd0aDtmb3Iobj0wO248bzsrK24pKGU9YyhyW25dLmlkZW50aWZpZXIsaSxrbCx0aGlzLGFyZ3VtZW50cykpJiYoX3QoKSxlKCJzdGFydCIpKX19ZnVuY3Rpb24gdSgpe3ZhciBuLGUscj10LmV2ZW50LmNoYW5nZWRUb3VjaGVzLGk9ci5sZW5ndGg7Zm9yKG49MDtuPGk7KytuKShlPXZbcltuXS5pZGVudGlmaWVyXSkmJihObCgpLGUoImRyYWciKSl9ZnVuY3Rpb24gYSgpe3ZhciBuLGUscj10LmV2ZW50LmNoYW5nZWRUb3VjaGVzLGk9ci5sZW5ndGg7Zm9yKGYmJmNsZWFyVGltZW91dChmKSxmPXNldFRpbWVvdXQoZnVuY3Rpb24oKXtmPW51bGx9LDUwMCksCm49MDtuPGk7KytuKShlPXZbcltuXS5pZGVudGlmaWVyXSkmJihfdCgpLGUoImVuZCIpKX1mdW5jdGlvbiBjKGUscixpLG8sdSl7dmFyIGEsYyxzLGY9aShyLGUpLGw9Xy5jb3B5KCk7aWYoRShuZXcgeXQobiwiYmVmb3Jlc3RhcnQiLGEsZSxnLGZbMF0sZlsxXSwwLDAsbCksZnVuY3Rpb24oKXtyZXR1cm4gbnVsbCE9KHQuZXZlbnQuc3ViamVjdD1hPXAuYXBwbHkobyx1KSkmJihjPWEueC1mWzBdfHwwLHM9YS55LWZbMV18fDAsITApfSkpcmV0dXJuIGZ1bmN0aW9uIHQoaCl7dmFyIHAsZD1mO3N3aXRjaChoKXtjYXNlInN0YXJ0Ijp2W2VdPXQscD1nKys7YnJlYWs7Y2FzZSJlbmQiOmRlbGV0ZSB2W2VdLC0tZztjYXNlImRyYWciOmY9aShyLGUpLHA9Z31FKG5ldyB5dChuLGgsYSxlLHAsZlswXStjLGZbMV0rcyxmWzBdLWRbMF0sZlsxXS1kWzFdLGwpLGwuYXBwbHksbCxbaCxvLHVdKX19dmFyIHMsZixsPW10LGg9eHQscD1idCx2PXt9LF89ZCgic3RhcnQiLCJkcmFnIiwiZW5kIiksZz0wO3JldHVybiBuLmZpbHRlcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obD0iZnVuY3Rpb24iPT10eXBlb2YgdD90OkFsKCEhdCksbik6bH0sbi5jb250YWluZXI9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGg9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpBbCh0KSxuKTpofSxuLnN1YmplY3Q9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHA9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpBbCh0KSxuKTpwfSxuLm9uPWZ1bmN0aW9uKCl7dmFyIHQ9Xy5vbi5hcHBseShfLGFyZ3VtZW50cyk7cmV0dXJuIHQ9PT1fP246dH0sbn0semw9ZnVuY3Rpb24odCxuLGUpe3QucHJvdG90eXBlPW4ucHJvdG90eXBlPWUsZS5jb25zdHJ1Y3Rvcj10fSxQbD0uNyxSbD0xL1BsLExsPSJcXHMqKFsrLV0/XFxkKylcXHMqIixxbD0iXFxzKihbKy1dP1xcZCpcXC4/XFxkKyg/OltlRV1bKy1dP1xcZCspPylcXHMqIixVbD0iXFxzKihbKy1dP1xcZCpcXC4/XFxkKyg/OltlRV1bKy1dP1xcZCspPyklXFxzKiIsRGw9L14jKFswLTlhLWZdezN9KSQvLE9sPS9eIyhbMC05YS1mXXs2fSkkLyxGbD1uZXcgUmVnRXhwKCJecmdiXFwoIitbTGwsTGwsTGxdKyJcXCkkIiksSWw9bmV3IFJlZ0V4cCgiXnJnYlxcKCIrW1VsLFVsLFVsXSsiXFwpJCIpLFlsPW5ldyBSZWdFeHAoIl5yZ2JhXFwoIitbTGwsTGwsTGwscWxdKyJcXCkkIiksQmw9bmV3IFJlZ0V4cCgiXnJnYmFcXCgiK1tVbCxVbCxVbCxxbF0rIlxcKSQiKSxqbD1uZXcgUmVnRXhwKCJeaHNsXFwoIitbcWwsVWwsVWxdKyJcXCkkIiksSGw9bmV3IFJlZ0V4cCgiXmhzbGFcXCgiK1txbCxVbCxVbCxxbF0rIlxcKSQiKSxYbD17YWxpY2VibHVlOjE1NzkyMzgzLGFudGlxdWV3aGl0ZToxNjQ0NDM3NSxhcXVhOjY1NTM1LGFxdWFtYXJpbmU6ODM4ODU2NCxhenVyZToxNTc5NDE3NSxiZWlnZToxNjExOTI2MCxiaXNxdWU6MTY3NzAyNDQsYmxhY2s6MCxibGFuY2hlZGFsbW9uZDoxNjc3MjA0NSxibHVlOjI1NSxibHVldmlvbGV0OjkwNTUyMDIsYnJvd246MTA4MjQyMzQsYnVybHl3b29kOjE0NTk2MjMxLGNhZGV0Ymx1ZTo2MjY2NTI4LGNoYXJ0cmV1c2U6ODM4ODM1MixjaG9jb2xhdGU6MTM3ODk0NzAsY29yYWw6MTY3NDQyNzIsY29ybmZsb3dlcmJsdWU6NjU5MTk4MSxjb3Juc2lsazoxNjc3NTM4OCxjcmltc29uOjE0NDIzMTAwLGN5YW46NjU1MzUsZGFya2JsdWU6MTM5LGRhcmtjeWFuOjM1NzIzLGRhcmtnb2xkZW5yb2Q6MTIwOTI5MzksZGFya2dyYXk6MTExMTkwMTcsZGFya2dyZWVuOjI1NjAwLGRhcmtncmV5OjExMTE5MDE3LGRhcmtraGFraToxMjQzMzI1OSxkYXJrbWFnZW50YTo5MTA5NjQzLGRhcmtvbGl2ZWdyZWVuOjU1OTc5OTksZGFya29yYW5nZToxNjc0NzUyMCxkYXJrb3JjaGlkOjEwMDQwMDEyLGRhcmtyZWQ6OTEwOTUwNCxkYXJrc2FsbW9uOjE1MzA4NDEwLGRhcmtzZWFncmVlbjo5NDE5OTE5LGRhcmtzbGF0ZWJsdWU6NDczNDM0NyxkYXJrc2xhdGVncmF5OjMxMDA0OTUsZGFya3NsYXRlZ3JleTozMTAwNDk1LGRhcmt0dXJxdW9pc2U6NTI5NDUsZGFya3Zpb2xldDo5Njk5NTM5LGRlZXBwaW5rOjE2NzE2OTQ3LGRlZXBza3libHVlOjQ5MTUxLGRpbWdyYXk6NjkwODI2NSxkaW1ncmV5OjY5MDgyNjUsZG9kZ2VyYmx1ZToyMDAzMTk5LGZpcmVicmljazoxMTY3NDE0NixmbG9yYWx3aGl0ZToxNjc3NTkyMCxmb3Jlc3RncmVlbjoyMjYzODQyLGZ1Y2hzaWE6MTY3MTE5MzUsZ2FpbnNib3JvOjE0NDc0NDYwLGdob3N0d2hpdGU6MTYzMTY2NzEsZ29sZDoxNjc2NjcyMCxnb2xkZW5yb2Q6MTQzMjkxMjAsZ3JheTo4NDIxNTA0LGdyZWVuOjMyNzY4LGdyZWVueWVsbG93OjExNDAzMDU1LGdyZXk6ODQyMTUwNCxob25leWRldzoxNTc5NDE2MCxob3RwaW5rOjE2NzM4NzQwLGluZGlhbnJlZDoxMzQ1ODUyNCxpbmRpZ286NDkxNTMzMCxpdm9yeToxNjc3NzIwMCxraGFraToxNTc4NzY2MCxsYXZlbmRlcjoxNTEzMjQxMCxsYXZlbmRlcmJsdXNoOjE2NzczMzY1LGxhd25ncmVlbjo4MTkwOTc2LGxlbW9uY2hpZmZvbjoxNjc3NTg4NSxsaWdodGJsdWU6MTEzOTMyNTQsbGlnaHRjb3JhbDoxNTc2MTUzNixsaWdodGN5YW46MTQ3NDU1OTksbGlnaHRnb2xkZW5yb2R5ZWxsb3c6MTY0NDgyMTAsbGlnaHRncmF5OjEzODgyMzIzLGxpZ2h0Z3JlZW46OTQ5ODI1NixsaWdodGdyZXk6MTM4ODIzMjMsbGlnaHRwaW5rOjE2NzU4NDY1LGxpZ2h0c2FsbW9uOjE2NzUyNzYyLGxpZ2h0c2VhZ3JlZW46MjE0Mjg5MCxsaWdodHNreWJsdWU6ODkwMDM0NixsaWdodHNsYXRlZ3JheTo3ODMzNzUzLGxpZ2h0c2xhdGVncmV5Ojc4MzM3NTMsbGlnaHRzdGVlbGJsdWU6MTE1ODQ3MzQsbGlnaHR5ZWxsb3c6MTY3NzcxODQsbGltZTo2NTI4MCxsaW1lZ3JlZW46MzMyOTMzMCxsaW5lbjoxNjQ0NTY3MCxtYWdlbnRhOjE2NzExOTM1LG1hcm9vbjo4Mzg4NjA4LG1lZGl1bWFxdWFtYXJpbmU6NjczNzMyMixtZWRpdW1ibHVlOjIwNSxtZWRpdW1vcmNoaWQ6MTIyMTE2NjcsbWVkaXVtcHVycGxlOjk2NjI2ODMsbWVkaXVtc2VhZ3JlZW46Mzk3ODA5NyxtZWRpdW1zbGF0ZWJsdWU6ODA4Nzc5MCxtZWRpdW1zcHJpbmdncmVlbjo2NDE1NCxtZWRpdW10dXJxdW9pc2U6NDc3MjMwMCxtZWRpdW12aW9sZXRyZWQ6MTMwNDcxNzMsbWlkbmlnaHRibHVlOjE2NDQ5MTIsbWludGNyZWFtOjE2MTIxODUwLG1pc3R5cm9zZToxNjc3MDI3Myxtb2NjYXNpbjoxNjc3MDIyOSxuYXZham93aGl0ZToxNjc2ODY4NSxuYXZ5OjEyOCxvbGRsYWNlOjE2NjQzNTU4LG9saXZlOjg0MjEzNzYsb2xpdmVkcmFiOjcwNDg3Mzksb3JhbmdlOjE2NzUzOTIwLG9yYW5nZXJlZDoxNjcyOTM0NCxvcmNoaWQ6MTQzMTU3MzQscGFsZWdvbGRlbnJvZDoxNTY1NzEzMCxwYWxlZ3JlZW46MTAwMjU4ODAscGFsZXR1cnF1b2lzZToxMTUyOTk2NixwYWxldmlvbGV0cmVkOjE0MzgxMjAzLHBhcGF5YXdoaXA6MTY3NzMwNzcscGVhY2hwdWZmOjE2NzY3NjczLHBlcnU6MTM0Njg5OTEscGluazoxNjc2MTAzNSxwbHVtOjE0NTI0NjM3LHBvd2RlcmJsdWU6MTE1OTE5MTAscHVycGxlOjgzODg3MzYscmViZWNjYXB1cnBsZTo2Njk3ODgxLHJlZDoxNjcxMTY4MCxyb3N5YnJvd246MTIzNTc1MTkscm95YWxibHVlOjQyODY5NDUsc2FkZGxlYnJvd246OTEyNzE4NyxzYWxtb246MTY0MTY4ODIsc2FuZHlicm93bjoxNjAzMjg2NCxzZWFncmVlbjozMDUwMzI3LHNlYXNoZWxsOjE2Nzc0NjM4LHNpZW5uYToxMDUwNjc5NyxzaWx2ZXI6MTI2MzIyNTYsc2t5Ymx1ZTo4OTAwMzMxLHNsYXRlYmx1ZTo2OTcwMDYxLHNsYXRlZ3JheTo3MzcyOTQ0LHNsYXRlZ3JleTo3MzcyOTQ0LHNub3c6MTY3NzU5MzAsc3ByaW5nZ3JlZW46NjU0MDcsc3RlZWxibHVlOjQ2MjA5ODAsdGFuOjEzODA4NzgwLHRlYWw6MzI4OTYsdGhpc3RsZToxNDIwNDg4OCx0b21hdG86MTY3MzcwOTUsdHVycXVvaXNlOjQyNTE4NTYsdmlvbGV0OjE1NjMxMDg2LHdoZWF0OjE2MTEzMzMxLHdoaXRlOjE2Nzc3MjE1LHdoaXRlc21va2U6MTYxMTkyODUseWVsbG93OjE2Nzc2OTYwLHllbGxvd2dyZWVuOjEwMTQ1MDc0fTt6bChNdCxUdCx7ZGlzcGxheWFibGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZ2IoKS5kaXNwbGF5YWJsZSgpfSx0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJnYigpKyIifX0pLHpsKEF0LEV0LHd0KE10LHticmlnaHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdD1udWxsPT10P1JsOk1hdGgucG93KFJsLHQpLG5ldyBBdCh0aGlzLnIqdCx0aGlzLmcqdCx0aGlzLmIqdCx0aGlzLm9wYWNpdHkpfSxkYXJrZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9bnVsbD09dD9QbDpNYXRoLnBvdyhQbCx0KSxuZXcgQXQodGhpcy5yKnQsdGhpcy5nKnQsdGhpcy5iKnQsdGhpcy5vcGFjaXR5KX0scmdiOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LGRpc3BsYXlhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIDA8PXRoaXMuciYmdGhpcy5yPD0yNTUmJjA8PXRoaXMuZyYmdGhpcy5nPD0yNTUmJjA8PXRoaXMuYiYmdGhpcy5iPD0yNTUmJjA8PXRoaXMub3BhY2l0eSYmdGhpcy5vcGFjaXR5PD0xfSx0b1N0cmluZzpmdW5jdGlvbigpe3ZhciB0PXRoaXMub3BhY2l0eTtyZXR1cm4gdD1pc05hTih0KT8xOk1hdGgubWF4KDAsTWF0aC5taW4oMSx0KSksKDE9PT10PyJyZ2IoIjoicmdiYSgiKStNYXRoLm1heCgwLE1hdGgubWluKDI1NSxNYXRoLnJvdW5kKHRoaXMucil8fDApKSsiLCAiK01hdGgubWF4KDAsTWF0aC5taW4oMjU1LE1hdGgucm91bmQodGhpcy5nKXx8MCkpKyIsICIrTWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZCh0aGlzLmIpfHwwKSkrKDE9PT10PyIpIjoiLCAiK3QrIikiKX19KSksemwoUnQsUHQsd3QoTXQse2JyaWdodGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0PW51bGw9PXQ/Umw6TWF0aC5wb3coUmwsdCksbmV3IFJ0KHRoaXMuaCx0aGlzLnMsdGhpcy5sKnQsdGhpcy5vcGFjaXR5KX0sZGFya2VyOmZ1bmN0aW9uKHQpe3JldHVybiB0PW51bGw9PXQ/UGw6TWF0aC5wb3coUGwsdCksbmV3IFJ0KHRoaXMuaCx0aGlzLnMsdGhpcy5sKnQsdGhpcy5vcGFjaXR5KX0scmdiOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5oJTM2MCszNjAqKHRoaXMuaDwwKSxuPWlzTmFOKHQpfHxpc05hTih0aGlzLnMpPzA6dGhpcy5zLGU9dGhpcy5sLHI9ZSsoZTwuNT9lOjEtZSkqbixpPTIqZS1yO3JldHVybiBuZXcgQXQoTHQodD49MjQwP3QtMjQwOnQrMTIwLGksciksTHQodCxpLHIpLEx0KHQ8MTIwP3QrMjQwOnQtMTIwLGksciksdGhpcy5vcGFjaXR5KX0sZGlzcGxheWFibGU6ZnVuY3Rpb24oKXtyZXR1cm4oMDw9dGhpcy5zJiZ0aGlzLnM8PTF8fGlzTmFOKHRoaXMucykpJiYwPD10aGlzLmwmJnRoaXMubDw9MSYmMDw9dGhpcy5vcGFjaXR5JiZ0aGlzLm9wYWNpdHk8PTF9fSkpO3ZhciBWbD1NYXRoLlBJLzE4MCxXbD0xODAvTWF0aC5QSSwkbD0xOCxabD0uOTUwNDcsR2w9MSxKbD0xLjA4ODgzLFFsPTQvMjksS2w9Ni8yOSx0aD0zKktsKktsLG5oPUtsKktsKktsO3psKER0LFV0LHd0KE10LHticmlnaHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gbmV3IER0KHRoaXMubCskbCoobnVsbD09dD8xOnQpLHRoaXMuYSx0aGlzLmIsdGhpcy5vcGFjaXR5KX0sZGFya2VyOmZ1bmN0aW9uKHQpe3JldHVybiBuZXcgRHQodGhpcy5sLSRsKihudWxsPT10PzE6dCksdGhpcy5hLHRoaXMuYix0aGlzLm9wYWNpdHkpfSxyZ2I6ZnVuY3Rpb24oKXt2YXIgdD0odGhpcy5sKzE2KS8xMTYsbj1pc05hTih0aGlzLmEpP3Q6dCt0aGlzLmEvNTAwLGU9aXNOYU4odGhpcy5iKT90OnQtdGhpcy5iLzIwMDtyZXR1cm4gdD1HbCpGdCh0KSxuPVpsKkZ0KG4pLGU9SmwqRnQoZSksbmV3IEF0KEl0KDMuMjQwNDU0MipuLTEuNTM3MTM4NSp0LS40OTg1MzE0KmUpLEl0KC0uOTY5MjY2Km4rMS44NzYwMTA4KnQrLjA0MTU1NiplKSxJdCguMDU1NjQzNCpuLS4yMDQwMjU5KnQrMS4wNTcyMjUyKmUpLHRoaXMub3BhY2l0eSl9fSkpLHpsKEh0LGp0LHd0KE10LHticmlnaHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gbmV3IEh0KHRoaXMuaCx0aGlzLmMsdGhpcy5sKyRsKihudWxsPT10PzE6dCksdGhpcy5vcGFjaXR5KX0sZGFya2VyOmZ1bmN0aW9uKHQpe3JldHVybiBuZXcgSHQodGhpcy5oLHRoaXMuYyx0aGlzLmwtJGwqKG51bGw9PXQ/MTp0KSx0aGlzLm9wYWNpdHkpfSxyZ2I6ZnVuY3Rpb24oKXtyZXR1cm4gcXQodGhpcykucmdiKCl9fSkpO3ZhciBlaD0tLjE0ODYxLHJoPTEuNzgyNzcsaWg9LS4yOTIyNyxvaD0tLjkwNjQ5LHVoPTEuOTcyOTQsYWg9dWgqb2gsY2g9dWgqcmgsc2g9cmgqaWgtb2gqZWg7emwoV3QsVnQsd3QoTXQse2JyaWdodGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0PW51bGw9PXQ/Umw6TWF0aC5wb3coUmwsdCksbmV3IFd0KHRoaXMuaCx0aGlzLnMsdGhpcy5sKnQsdGhpcy5vcGFjaXR5KX0sZGFya2VyOmZ1bmN0aW9uKHQpe3JldHVybiB0PW51bGw9PXQ/UGw6TWF0aC5wb3coUGwsdCksbmV3IFd0KHRoaXMuaCx0aGlzLnMsdGhpcy5sKnQsdGhpcy5vcGFjaXR5KX0scmdiOmZ1bmN0aW9uKCl7dmFyIHQ9aXNOYU4odGhpcy5oKT8wOih0aGlzLmgrMTIwKSpWbCxuPSt0aGlzLmwsZT1pc05hTih0aGlzLnMpPzA6dGhpcy5zKm4qKDEtbikscj1NYXRoLmNvcyh0KSxpPU1hdGguc2luKHQpO3JldHVybiBuZXcgQXQoMjU1KihuK2UqKGVoKnIrcmgqaSkpLDI1NSoobitlKihpaCpyK29oKmkpKSwyNTUqKG4rZSoodWgqcikpLHRoaXMub3BhY2l0eSl9fSkpO3ZhciBmaCxsaCxoaCxwaCxkaCx2aCxfaD1mdW5jdGlvbih0KXt2YXIgbj10Lmxlbmd0aC0xO3JldHVybiBmdW5jdGlvbihlKXt2YXIgcj1lPD0wP2U9MDplPj0xPyhlPTEsbi0xKTpNYXRoLmZsb29yKGUqbiksaT10W3JdLG89dFtyKzFdO3JldHVybiAkdCgoZS1yL24pKm4scj4wP3Rbci0xXToyKmktbyxpLG8scjxuLTE/dFtyKzJdOjIqby1pKX19LGdoPWZ1bmN0aW9uKHQpe3ZhciBuPXQubGVuZ3RoO3JldHVybiBmdW5jdGlvbihlKXt2YXIgcj1NYXRoLmZsb29yKCgoZSU9MSk8MD8rK2U6ZSkqbik7cmV0dXJuICR0KChlLXIvbikqbix0WyhyK24tMSklbl0sdFtyJW5dLHRbKHIrMSklbl0sdFsocisyKSVuXSl9fSx5aD1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19LG1oPWZ1bmN0aW9uIHQobil7ZnVuY3Rpb24gZSh0LG4pe3ZhciBlPXIoKHQ9RXQodCkpLnIsKG49RXQobikpLnIpLGk9cih0Lmcsbi5nKSxvPXIodC5iLG4uYiksdT1LdCh0Lm9wYWNpdHksbi5vcGFjaXR5KTtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIHQucj1lKG4pLHQuZz1pKG4pLHQuYj1vKG4pLHQub3BhY2l0eT11KG4pLHQrIiJ9fXZhciByPVF0KG4pO3JldHVybiBlLmdhbW1hPXQsZX0oMSkseGg9dG4oX2gpLGJoPXRuKGdoKSx3aD1mdW5jdGlvbih0LG4pe3ZhciBlLHI9bj9uLmxlbmd0aDowLGk9dD9NYXRoLm1pbihyLHQubGVuZ3RoKTowLG89bmV3IEFycmF5KHIpLHU9bmV3IEFycmF5KHIpO2ZvcihlPTA7ZTxpOysrZSlvW2VdPUFoKHRbZV0sbltlXSk7Zm9yKDtlPHI7KytlKXVbZV09bltlXTtyZXR1cm4gZnVuY3Rpb24odCl7Zm9yKGU9MDtlPGk7KytlKXVbZV09b1tlXSh0KTtyZXR1cm4gdX19LE1oPWZ1bmN0aW9uKHQsbil7dmFyIGU9bmV3IERhdGU7cmV0dXJuIHQ9K3Qsbi09dCxmdW5jdGlvbihyKXtyZXR1cm4gZS5zZXRUaW1lKHQrbipyKSxlfX0sVGg9ZnVuY3Rpb24odCxuKXtyZXR1cm4gdD0rdCxuLT10LGZ1bmN0aW9uKGUpe3JldHVybiB0K24qZX19LGtoPWZ1bmN0aW9uKHQsbil7dmFyIGUscj17fSxpPXt9O251bGwhPT10JiYib2JqZWN0Ij09dHlwZW9mIHR8fCh0PXt9KSxudWxsIT09biYmIm9iamVjdCI9PXR5cGVvZiBufHwobj17fSk7Zm9yKGUgaW4gbillIGluIHQ/cltlXT1BaCh0W2VdLG5bZV0pOmlbZV09bltlXTtyZXR1cm4gZnVuY3Rpb24odCl7Zm9yKGUgaW4gcilpW2VdPXJbZV0odCk7cmV0dXJuIGl9fSxTaD0vWy0rXT8oPzpcZCtcLj9cZCp8XC4/XGQrKSg/OltlRV1bLStdP1xkKyk/L2csTmg9bmV3IFJlZ0V4cChTaC5zb3VyY2UsImciKSxFaD1mdW5jdGlvbih0LG4pe3ZhciBlLHIsaSxvPVNoLmxhc3RJbmRleD1OaC5sYXN0SW5kZXg9MCx1PS0xLGE9W10sYz1bXTtmb3IodCs9IiIsbis9IiI7KGU9U2guZXhlYyh0KSkmJihyPU5oLmV4ZWMobikpOykoaT1yLmluZGV4KT5vJiYoaT1uLnNsaWNlKG8saSksYVt1XT9hW3VdKz1pOmFbKyt1XT1pKSwoZT1lWzBdKT09PShyPXJbMF0pP2FbdV0/YVt1XSs9cjphWysrdV09cjooYVsrK3VdPW51bGwsYy5wdXNoKHtpOnUseDpUaChlLHIpfSkpLG89TmgubGFzdEluZGV4O3JldHVybiBvPG4ubGVuZ3RoJiYoaT1uLnNsaWNlKG8pLGFbdV0/YVt1XSs9aTphWysrdV09aSksYS5sZW5ndGg8Mj9jWzBdP2VuKGNbMF0ueCk6bm4obik6KG49Yy5sZW5ndGgsZnVuY3Rpb24odCl7Zm9yKHZhciBlLHI9MDtyPG47KytyKWFbKGU9Y1tyXSkuaV09ZS54KHQpO3JldHVybiBhLmpvaW4oIiIpfSl9LEFoPWZ1bmN0aW9uKHQsbil7dmFyIGUscj10eXBlb2YgbjtyZXR1cm4gbnVsbD09bnx8ImJvb2xlYW4iPT09cj95aChuKTooIm51bWJlciI9PT1yP1RoOiJzdHJpbmciPT09cj8oZT1UdChuKSk/KG49ZSxtaCk6RWg6biBpbnN0YW5jZW9mIFR0P21oOm4gaW5zdGFuY2VvZiBEYXRlP01oOkFycmF5LmlzQXJyYXkobik/d2g6aXNOYU4obik/a2g6VGgpKHQsbil9LENoPWZ1bmN0aW9uKHQsbil7cmV0dXJuIHQ9K3Qsbi09dCxmdW5jdGlvbihlKXtyZXR1cm4gTWF0aC5yb3VuZCh0K24qZSl9fSx6aD0xODAvTWF0aC5QSSxQaD17dHJhbnNsYXRlWDowLHRyYW5zbGF0ZVk6MCxyb3RhdGU6MCxza2V3WDowLHNjYWxlWDoxLHNjYWxlWToxfSxSaD1mdW5jdGlvbih0LG4sZSxyLGksbyl7dmFyIHUsYSxjO3JldHVybih1PU1hdGguc3FydCh0KnQrbipuKSkmJih0Lz11LG4vPXUpLChjPXQqZStuKnIpJiYoZS09dCpjLHItPW4qYyksKGE9TWF0aC5zcXJ0KGUqZStyKnIpKSYmKGUvPWEsci89YSxjLz1hKSx0KnI8biplJiYodD0tdCxuPS1uLGM9LWMsdT0tdSkse3RyYW5zbGF0ZVg6aSx0cmFuc2xhdGVZOm8scm90YXRlOk1hdGguYXRhbjIobix0KSp6aCxza2V3WDpNYXRoLmF0YW4oYykqemgsc2NhbGVYOnUsc2NhbGVZOmF9fSxMaD11bihybiwicHgsICIsInB4KSIsImRlZykiKSxxaD11bihvbiwiLCAiLCIpIiwiKSIpLFVoPU1hdGguU1FSVDIsRGg9MixPaD00LEZoPTFlLTEyLEloPWZ1bmN0aW9uKHQsbil7dmFyIGUscixpPXRbMF0sbz10WzFdLHU9dFsyXSxhPW5bMF0sYz1uWzFdLHM9blsyXSxmPWEtaSxsPWMtbyxoPWYqZitsKmw7aWYoaDxGaClyPU1hdGgubG9nKHMvdSkvVWgsZT1mdW5jdGlvbih0KXtyZXR1cm5baSt0KmYsbyt0KmwsdSpNYXRoLmV4cChVaCp0KnIpXX07ZWxzZXt2YXIgcD1NYXRoLnNxcnQoaCksZD0ocypzLXUqdStPaCpoKS8oMip1KkRoKnApLHY9KHMqcy11KnUtT2gqaCkvKDIqcypEaCpwKSxfPU1hdGgubG9nKE1hdGguc3FydChkKmQrMSktZCk7cj0oTWF0aC5sb2coTWF0aC5zcXJ0KHYqdisxKS12KS1fKS9VaCxlPWZ1bmN0aW9uKHQpe3ZhciBuPXQqcixlPWFuKF8pLGE9dS8oRGgqcCkqKGUqc24oVWgqbitfKS1jbihfKSk7cmV0dXJuW2krYSpmLG8rYSpsLHUqZS9hbihVaCpuK18pXX19cmV0dXJuIGUuZHVyYXRpb249MWUzKnIsZX0sWWg9Zm4oSnQpLEJoPWZuKEt0KSxqaD1obihKdCksSGg9aG4oS3QpLFhoPXBuKEp0KSxWaD1wbihLdCksV2g9ZnVuY3Rpb24odCxuKXtmb3IodmFyIGU9bmV3IEFycmF5KG4pLHI9MDtyPG47KytyKWVbcl09dChyLyhuLTEpKTtyZXR1cm4gZX0sJGg9MCxaaD0wLEdoPTAsSmg9MWUzLFFoPTAsS2g9MCx0cD0wLG5wPSJvYmplY3QiPT10eXBlb2YgcGVyZm9ybWFuY2UmJnBlcmZvcm1hbmNlLm5vdz9wZXJmb3JtYW5jZTpEYXRlLGVwPSJmdW5jdGlvbiI9PXR5cGVvZiByZXF1ZXN0QW5pbWF0aW9uRnJhbWU/cmVxdWVzdEFuaW1hdGlvbkZyYW1lOmZ1bmN0aW9uKHQpe3NldFRpbWVvdXQodCwxNyl9O19uLnByb3RvdHlwZT1nbi5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOl9uLHJlc3RhcnQ6ZnVuY3Rpb24odCxuLGUpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0KXRocm93IG5ldyBUeXBlRXJyb3IoImNhbGxiYWNrIGlzIG5vdCBhIGZ1bmN0aW9uIik7ZT0obnVsbD09ZT9kbigpOitlKSsobnVsbD09bj8wOituKSx0aGlzLl9uZXh0fHx2aD09PXRoaXN8fCh2aD92aC5fbmV4dD10aGlzOmRoPXRoaXMsdmg9dGhpcyksdGhpcy5fY2FsbD10LHRoaXMuX3RpbWU9ZSx3bigpfSxzdG9wOmZ1bmN0aW9uKCl7dGhpcy5fY2FsbCYmKHRoaXMuX2NhbGw9bnVsbCx0aGlzLl90aW1lPTEvMCx3bigpKX19O3ZhciBycD1mdW5jdGlvbih0LG4sZSl7dmFyIHI9bmV3IF9uO3JldHVybiBuPW51bGw9PW4/MDorbixyLnJlc3RhcnQoZnVuY3Rpb24oZSl7ci5zdG9wKCksdChlK24pfSxuLGUpLHJ9LGlwPWZ1bmN0aW9uKHQsbixlKXt2YXIgcj1uZXcgX24saT1uO3JldHVybiBudWxsPT1uPyhyLnJlc3RhcnQodCxuLGUpLHIpOihuPStuLGU9bnVsbD09ZT9kbigpOitlLHIucmVzdGFydChmdW5jdGlvbiBvKHUpe3UrPWksci5yZXN0YXJ0KG8saSs9bixlKSx0KHUpfSxuLGUpLHIpfSxvcD1kKCJzdGFydCIsImVuZCIsImludGVycnVwdCIpLHVwPVtdLGFwPTAsY3A9MSxzcD0yLGZwPTMsbHA9NCxocD01LHBwPTYsZHA9ZnVuY3Rpb24odCxuLGUscixpLG8pe3ZhciB1PXQuX190cmFuc2l0aW9uO2lmKHUpe2lmKGUgaW4gdSlyZXR1cm59ZWxzZSB0Ll9fdHJhbnNpdGlvbj17fTtTbih0LGUse25hbWU6bixpbmRleDpyLGdyb3VwOmksb246b3AsdHdlZW46dXAsdGltZTpvLnRpbWUsZGVsYXk6by5kZWxheSxkdXJhdGlvbjpvLmR1cmF0aW9uLGVhc2U6by5lYXNlLHRpbWVyOm51bGwsc3RhdGU6YXB9KX0sdnA9ZnVuY3Rpb24odCxuKXt2YXIgZSxyLGksbz10Ll9fdHJhbnNpdGlvbix1PSEwO2lmKG8pe249bnVsbD09bj9udWxsOm4rIiI7Zm9yKGkgaW4gbykoZT1vW2ldKS5uYW1lPT09bj8ocj1lLnN0YXRlPnNwJiZlLnN0YXRlPGhwLGUuc3RhdGU9cHAsZS50aW1lci5zdG9wKCksciYmZS5vbi5jYWxsKCJpbnRlcnJ1cHQiLHQsdC5fX2RhdGFfXyxlLmluZGV4LGUuZ3JvdXApLGRlbGV0ZSBvW2ldKTp1PSExO3UmJmRlbGV0ZSB0Ll9fdHJhbnNpdGlvbn19LF9wPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2cCh0aGlzLHQpfSl9LGdwPWZ1bmN0aW9uKHQsbil7dmFyIGU9dGhpcy5faWQ7aWYodCs9IiIsYXJndW1lbnRzLmxlbmd0aDwyKXtmb3IodmFyIHIsaT1rbih0aGlzLm5vZGUoKSxlKS50d2VlbixvPTAsdT1pLmxlbmd0aDtvPHU7KytvKWlmKChyPWlbb10pLm5hbWU9PT10KXJldHVybiByLnZhbHVlO3JldHVybiBudWxsfXJldHVybiB0aGlzLmVhY2goKG51bGw9PW4/Tm46RW4pKGUsdCxuKSl9LHlwPWZ1bmN0aW9uKHQsbil7dmFyIGU7cmV0dXJuKCJudW1iZXIiPT10eXBlb2Ygbj9UaDpuIGluc3RhbmNlb2YgVHQ/bWg6KGU9VHQobikpPyhuPWUsbWgpOkVoKSh0LG4pfSxtcD1mdW5jdGlvbih0LG4pe3ZhciBlPUNmKHQpLHI9InRyYW5zZm9ybSI9PT1lP3FoOnlwO3JldHVybiB0aGlzLmF0dHJUd2Vlbih0LCJmdW5jdGlvbiI9PXR5cGVvZiBuPyhlLmxvY2FsP3FuOkxuKShlLHIsQW4odGhpcywiYXR0ci4iK3QsbikpOm51bGw9PW4/KGUubG9jYWw/em46Q24pKGUpOihlLmxvY2FsP1JuOlBuKShlLHIsbikpfSx4cD1mdW5jdGlvbih0LG4pe3ZhciBlPSJhdHRyLiIrdDtpZihhcmd1bWVudHMubGVuZ3RoPDIpcmV0dXJuKGU9dGhpcy50d2VlbihlKSkmJmUuX3ZhbHVlO2lmKG51bGw9PW4pcmV0dXJuIHRoaXMudHdlZW4oZSxudWxsKTtpZigiZnVuY3Rpb24iIT10eXBlb2Ygbil0aHJvdyBuZXcgRXJyb3I7dmFyIHI9Q2YodCk7cmV0dXJuIHRoaXMudHdlZW4oZSwoci5sb2NhbD9VbjpEbikocixuKSl9LGJwPWZ1bmN0aW9uKHQpe3ZhciBuPXRoaXMuX2lkO3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMuZWFjaCgoImZ1bmN0aW9uIj09dHlwZW9mIHQ/T246Rm4pKG4sdCkpOmtuKHRoaXMubm9kZSgpLG4pLmRlbGF5fSx3cD1mdW5jdGlvbih0KXt2YXIgbj10aGlzLl9pZDtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLmVhY2goKCJmdW5jdGlvbiI9PXR5cGVvZiB0P0luOlluKShuLHQpKTprbih0aGlzLm5vZGUoKSxuKS5kdXJhdGlvbn0sTXA9ZnVuY3Rpb24odCl7dmFyIG49dGhpcy5faWQ7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5lYWNoKEJuKG4sdCkpOmtuKHRoaXMubm9kZSgpLG4pLmVhc2V9LFRwPWZ1bmN0aW9uKHQpeyJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD1VZih0KSk7Zm9yKHZhciBuPXRoaXMuX2dyb3VwcyxlPW4ubGVuZ3RoLHI9bmV3IEFycmF5KGUpLGk9MDtpPGU7KytpKWZvcih2YXIgbyx1PW5baV0sYT11Lmxlbmd0aCxjPXJbaV09W10scz0wO3M8YTsrK3MpKG89dVtzXSkmJnQuY2FsbChvLG8uX19kYXRhX18scyx1KSYmYy5wdXNoKG8pO3JldHVybiBuZXcgS24ocix0aGlzLl9wYXJlbnRzLHRoaXMuX25hbWUsdGhpcy5faWQpfSxrcD1mdW5jdGlvbih0KXtpZih0Ll9pZCE9PXRoaXMuX2lkKXRocm93IG5ldyBFcnJvcjtmb3IodmFyIG49dGhpcy5fZ3JvdXBzLGU9dC5fZ3JvdXBzLHI9bi5sZW5ndGgsaT1lLmxlbmd0aCxvPU1hdGgubWluKHIsaSksdT1uZXcgQXJyYXkociksYT0wO2E8bzsrK2EpZm9yKHZhciBjLHM9blthXSxmPWVbYV0sbD1zLmxlbmd0aCxoPXVbYV09bmV3IEFycmF5KGwpLHA9MDtwPGw7KytwKShjPXNbcF18fGZbcF0pJiYoaFtwXT1jKTtmb3IoO2E8cjsrK2EpdVthXT1uW2FdO3JldHVybiBuZXcgS24odSx0aGlzLl9wYXJlbnRzLHRoaXMuX25hbWUsdGhpcy5faWQpfSxTcD1mdW5jdGlvbih0LG4pe3ZhciBlPXRoaXMuX2lkO3JldHVybiBhcmd1bWVudHMubGVuZ3RoPDI/a24odGhpcy5ub2RlKCksZSkub24ub24odCk6dGhpcy5lYWNoKEhuKGUsdCxuKSl9LE5wPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub24oImVuZC5yZW1vdmUiLFhuKHRoaXMuX2lkKSl9LEVwPWZ1bmN0aW9uKHQpe3ZhciBuPXRoaXMuX25hbWUsZT10aGlzLl9pZDsiZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9QmYodCkpO2Zvcih2YXIgcj10aGlzLl9ncm91cHMsaT1yLmxlbmd0aCxvPW5ldyBBcnJheShpKSx1PTA7dTxpOysrdSlmb3IodmFyIGEsYyxzPXJbdV0sZj1zLmxlbmd0aCxsPW9bdV09bmV3IEFycmF5KGYpLGg9MDtoPGY7KytoKShhPXNbaF0pJiYoYz10LmNhbGwoYSxhLl9fZGF0YV9fLGgscykpJiYoIl9fZGF0YV9fImluIGEmJihjLl9fZGF0YV9fPWEuX19kYXRhX18pLGxbaF09YyxkcChsW2hdLG4sZSxoLGwsa24oYSxlKSkpO3JldHVybiBuZXcgS24obyx0aGlzLl9wYXJlbnRzLG4sZSl9LEFwPWZ1bmN0aW9uKHQpe3ZhciBuPXRoaXMuX25hbWUsZT10aGlzLl9pZDsiZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9SGYodCkpO2Zvcih2YXIgcj10aGlzLl9ncm91cHMsaT1yLmxlbmd0aCxvPVtdLHU9W10sYT0wO2E8aTsrK2EpZm9yKHZhciBjLHM9clthXSxmPXMubGVuZ3RoLGw9MDtsPGY7KytsKWlmKGM9c1tsXSl7Zm9yKHZhciBoLHA9dC5jYWxsKGMsYy5fX2RhdGFfXyxsLHMpLGQ9a24oYyxlKSx2PTAsXz1wLmxlbmd0aDt2PF87Kyt2KShoPXBbdl0pJiZkcChoLG4sZSx2LHAsZCk7by5wdXNoKHApLHUucHVzaChjKX1yZXR1cm4gbmV3IEtuKG8sdSxuLGUpfSxDcD12dC5wcm90b3R5cGUuY29uc3RydWN0b3IsenA9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IENwKHRoaXMuX2dyb3Vwcyx0aGlzLl9wYXJlbnRzKX0sUHA9ZnVuY3Rpb24odCxuLGUpe3ZhciByPSJ0cmFuc2Zvcm0iPT0odCs9IiIpP0xoOnlwO3JldHVybiBudWxsPT1uP3RoaXMuc3R5bGVUd2Vlbih0LFZuKHQscikpLm9uKCJlbmQuc3R5bGUuIit0LFduKHQpKTp0aGlzLnN0eWxlVHdlZW4odCwiZnVuY3Rpb24iPT10eXBlb2Ygbj9abih0LHIsQW4odGhpcywic3R5bGUuIit0LG4pKTokbih0LHIsbiksZSl9LFJwPWZ1bmN0aW9uKHQsbixlKXt2YXIgcj0ic3R5bGUuIisodCs9IiIpO2lmKGFyZ3VtZW50cy5sZW5ndGg8MilyZXR1cm4ocj10aGlzLnR3ZWVuKHIpKSYmci5fdmFsdWU7aWYobnVsbD09bilyZXR1cm4gdGhpcy50d2VlbihyLG51bGwpO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBuKXRocm93IG5ldyBFcnJvcjtyZXR1cm4gdGhpcy50d2VlbihyLEduKHQsbixudWxsPT1lPyIiOmUpKX0sTHA9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMudHdlZW4oInRleHQiLCJmdW5jdGlvbiI9PXR5cGVvZiB0P1FuKEFuKHRoaXMsInRleHQiLHQpKTpKbihudWxsPT10PyIiOnQrIiIpKX0scXA9ZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpcy5fbmFtZSxuPXRoaXMuX2lkLGU9bmUoKSxyPXRoaXMuX2dyb3VwcyxpPXIubGVuZ3RoLG89MDtvPGk7KytvKWZvcih2YXIgdSxhPXJbb10sYz1hLmxlbmd0aCxzPTA7czxjOysrcylpZih1PWFbc10pe3ZhciBmPWtuKHUsbik7ZHAodSx0LGUscyxhLHt0aW1lOmYudGltZStmLmRlbGF5K2YuZHVyYXRpb24sZGVsYXk6MCxkdXJhdGlvbjpmLmR1cmF0aW9uLGVhc2U6Zi5lYXNlfSl9cmV0dXJuIG5ldyBLbihyLHRoaXMuX3BhcmVudHMsdCxlKX0sVXA9MCxEcD12dC5wcm90b3R5cGU7S24ucHJvdG90eXBlPXRlLnByb3RvdHlwZT17Y29uc3RydWN0b3I6S24sc2VsZWN0OkVwLHNlbGVjdEFsbDpBcCxmaWx0ZXI6VHAsbWVyZ2U6a3Asc2VsZWN0aW9uOnpwLHRyYW5zaXRpb246cXAsY2FsbDpEcC5jYWxsLG5vZGVzOkRwLm5vZGVzLG5vZGU6RHAubm9kZSxzaXplOkRwLnNpemUsZW1wdHk6RHAuZW1wdHksZWFjaDpEcC5lYWNoLG9uOlNwLGF0dHI6bXAsYXR0clR3ZWVuOnhwLHN0eWxlOlBwLHN0eWxlVHdlZW46UnAsdGV4dDpMcCxyZW1vdmU6TnAsdHdlZW46Z3AsZGVsYXk6YnAsZHVyYXRpb246d3AsZWFzZTpNcH07dmFyIE9wPTMsRnA9ZnVuY3Rpb24gdChuKXtmdW5jdGlvbiBlKHQpe3JldHVybiBNYXRoLnBvdyh0LG4pfXJldHVybiBuPStuLGUuZXhwb25lbnQ9dCxlfShPcCksSXA9ZnVuY3Rpb24gdChuKXtmdW5jdGlvbiBlKHQpe3JldHVybiAxLU1hdGgucG93KDEtdCxuKX1yZXR1cm4gbj0rbixlLmV4cG9uZW50PXQsZX0oT3ApLFlwPWZ1bmN0aW9uIHQobil7ZnVuY3Rpb24gZSh0KXtyZXR1cm4oKHQqPTIpPD0xP01hdGgucG93KHQsbik6Mi1NYXRoLnBvdygyLXQsbikpLzJ9cmV0dXJuIG49K24sZS5leHBvbmVudD10LGV9KE9wKSxCcD1NYXRoLlBJLGpwPUJwLzIsSHA9NC8xMSxYcD02LzExLFZwPTgvMTEsV3A9Ljc1LCRwPTkvMTEsWnA9MTAvMTEsR3A9LjkzNzUsSnA9MjEvMjIsUXA9NjMvNjQsS3A9MS9IcC9IcCx0ZD0xLjcwMTU4LG5kPWZ1bmN0aW9uIHQobil7ZnVuY3Rpb24gZSh0KXtyZXR1cm4gdCp0KigobisxKSp0LW4pfXJldHVybiBuPStuLGUub3ZlcnNob290PXQsZX0odGQpLGVkPWZ1bmN0aW9uIHQobil7ZnVuY3Rpb24gZSh0KXtyZXR1cm4tLXQqdCooKG4rMSkqdCtuKSsxfXJldHVybiBuPStuLGUub3ZlcnNob290PXQsZX0odGQpLHJkPWZ1bmN0aW9uIHQobil7ZnVuY3Rpb24gZSh0KXtyZXR1cm4oKHQqPTIpPDE/dCp0KigobisxKSp0LW4pOih0LT0yKSp0KigobisxKSp0K24pKzIpLzJ9cmV0dXJuIG49K24sZS5vdmVyc2hvb3Q9dCxlfSh0ZCksaWQ9MipNYXRoLlBJLG9kPTEsdWQ9LjMsYWQ9ZnVuY3Rpb24gdChuLGUpe2Z1bmN0aW9uIHIodCl7cmV0dXJuIG4qTWF0aC5wb3coMiwxMCotLXQpKk1hdGguc2luKChpLXQpL2UpfXZhciBpPU1hdGguYXNpbigxLyhuPU1hdGgubWF4KDEsbikpKSooZS89aWQpO3JldHVybiByLmFtcGxpdHVkZT1mdW5jdGlvbihuKXtyZXR1cm4gdChuLGUqaWQpfSxyLnBlcmlvZD1mdW5jdGlvbihlKXtyZXR1cm4gdChuLGUpfSxyfShvZCx1ZCksY2Q9ZnVuY3Rpb24gdChuLGUpe2Z1bmN0aW9uIHIodCl7cmV0dXJuIDEtbipNYXRoLnBvdygyLC0xMCoodD0rdCkpKk1hdGguc2luKCh0K2kpL2UpfXZhciBpPU1hdGguYXNpbigxLyhuPU1hdGgubWF4KDEsbikpKSooZS89aWQpO3JldHVybiByLmFtcGxpdHVkZT1mdW5jdGlvbihuKXtyZXR1cm4gdChuLGUqaWQpfSxyLnBlcmlvZD1mdW5jdGlvbihlKXtyZXR1cm4gdChuLGUpfSxyfShvZCx1ZCksc2Q9ZnVuY3Rpb24gdChuLGUpe2Z1bmN0aW9uIHIodCl7cmV0dXJuKCh0PTIqdC0xKTwwP24qTWF0aC5wb3coMiwxMCp0KSpNYXRoLnNpbigoaS10KS9lKToyLW4qTWF0aC5wb3coMiwtMTAqdCkqTWF0aC5zaW4oKGkrdCkvZSkpLzJ9dmFyIGk9TWF0aC5hc2luKDEvKG49TWF0aC5tYXgoMSxuKSkpKihlLz1pZCk7cmV0dXJuIHIuYW1wbGl0dWRlPWZ1bmN0aW9uKG4pe3JldHVybiB0KG4sZSppZCl9LHIucGVyaW9kPWZ1bmN0aW9uKGUpe3JldHVybiB0KG4sZSl9LHJ9KG9kLHVkKSxmZD17dGltZTpudWxsLGRlbGF5OjAsZHVyYXRpb246MjUwLGVhc2U6Y2V9LGxkPWZ1bmN0aW9uKHQpe3ZhciBuLGU7dCBpbnN0YW5jZW9mIEtuPyhuPXQuX2lkLHQ9dC5fbmFtZSk6KG49bmUoKSwoZT1mZCkudGltZT1kbigpLHQ9bnVsbD09dD9udWxsOnQrIiIpO2Zvcih2YXIgcj10aGlzLl9ncm91cHMsaT1yLmxlbmd0aCxvPTA7bzxpOysrbylmb3IodmFyIHUsYT1yW29dLGM9YS5sZW5ndGgscz0wO3M8YzsrK3MpKHU9YVtzXSkmJmRwKHUsdCxuLHMsYSxlfHxiZSh1LG4pKTtyZXR1cm4gbmV3IEtuKHIsdGhpcy5fcGFyZW50cyx0LG4pfTt2dC5wcm90b3R5cGUuaW50ZXJydXB0PV9wLHZ0LnByb3RvdHlwZS50cmFuc2l0aW9uPWxkO3ZhciBoZD1bbnVsbF0scGQ9ZnVuY3Rpb24odCxuKXt2YXIgZSxyLGk9dC5fX3RyYW5zaXRpb247aWYoaSl7bj1udWxsPT1uP251bGw6bisiIjtmb3IociBpbiBpKWlmKChlPWlbcl0pLnN0YXRlPmNwJiZlLm5hbWU9PT1uKXJldHVybiBuZXcgS24oW1t0XV0saGQsbiwrcil9cmV0dXJuIG51bGx9LGRkPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0fX0sdmQ9ZnVuY3Rpb24odCxuLGUpe3RoaXMudGFyZ2V0PXQsdGhpcy50eXBlPW4sdGhpcy5zZWxlY3Rpb249ZX0sX2Q9ZnVuY3Rpb24oKXt0LmV2ZW50LnByZXZlbnREZWZhdWx0KCksdC5ldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKX0sZ2Q9e25hbWU6ImRyYWcifSx5ZD17bmFtZToic3BhY2UifSxtZD17bmFtZToiaGFuZGxlIn0seGQ9e25hbWU6ImNlbnRlciJ9LGJkPXtuYW1lOiJ4IixoYW5kbGVzOlsiZSIsInciXS5tYXAoTWUpLGlucHV0OmZ1bmN0aW9uKHQsbil7cmV0dXJuIHQmJltbdFswXSxuWzBdWzFdXSxbdFsxXSxuWzFdWzFdXV19LG91dHB1dDpmdW5jdGlvbih0KXtyZXR1cm4gdCYmW3RbMF1bMF0sdFsxXVswXV19fSx3ZD17bmFtZToieSIsaGFuZGxlczpbIm4iLCJzIl0ubWFwKE1lKSxpbnB1dDpmdW5jdGlvbih0LG4pe3JldHVybiB0JiZbW25bMF1bMF0sdFswXV0sW25bMV1bMF0sdFsxXV1dfSxvdXRwdXQ6ZnVuY3Rpb24odCl7cmV0dXJuIHQmJlt0WzBdWzFdLHRbMV1bMV1dfX0sTWQ9e25hbWU6Inh5IixoYW5kbGVzOlsibiIsImUiLCJzIiwidyIsIm53IiwibmUiLCJzZSIsInN3Il0ubWFwKE1lKSxpbnB1dDpmdW5jdGlvbih0KXtyZXR1cm4gdH0sb3V0cHV0OmZ1bmN0aW9uKHQpe3JldHVybiB0fX0sVGQ9e292ZXJsYXk6ImNyb3NzaGFpciIsc2VsZWN0aW9uOiJtb3ZlIixuOiJucy1yZXNpemUiLGU6ImV3LXJlc2l6ZSIsczoibnMtcmVzaXplIix3OiJldy1yZXNpemUiLG53OiJud3NlLXJlc2l6ZSIsbmU6Im5lc3ctcmVzaXplIixzZToibndzZS1yZXNpemUiLHN3OiJuZXN3LXJlc2l6ZSJ9LGtkPXtlOiJ3Iix3OiJlIixudzoibmUiLG5lOiJudyIsc2U6InN3Iixzdzoic2UifSxTZD17bjoicyIsczoibiIsbnc6InN3IixuZToic2UiLHNlOiJuZSIsc3c6Im53In0sTmQ9e292ZXJsYXk6MSxzZWxlY3Rpb246MSxuOm51bGwsZToxLHM6bnVsbCx3Oi0xLG53Oi0xLG5lOjEsc2U6MSxzdzotMX0sRWQ9e292ZXJsYXk6MSxzZWxlY3Rpb246MSxuOi0xLGU6bnVsbCxzOjEsdzpudWxsLG53Oi0xLG5lOi0xLHNlOjEsc3c6MX0sQWQ9ZnVuY3Rpb24oKXtyZXR1cm4gemUoTWQpfSxDZD1NYXRoLmNvcyx6ZD1NYXRoLnNpbixQZD1NYXRoLlBJLFJkPVBkLzIsTGQ9MipQZCxxZD1NYXRoLm1heCxVZD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dmFyIG8sdSxhLGMscyxmLGw9dC5sZW5ndGgsaD1bXSxwPVFzKGwpLGQ9W10sdj1bXSxfPXYuZ3JvdXBzPW5ldyBBcnJheShsKSxnPW5ldyBBcnJheShsKmwpO2ZvcihvPTAscz0tMTsrK3M8bDspe2Zvcih1PTAsZj0tMTsrK2Y8bDspdSs9dFtzXVtmXTtoLnB1c2godSksZC5wdXNoKFFzKGwpKSxvKz11fWZvcihlJiZwLnNvcnQoZnVuY3Rpb24odCxuKXtyZXR1cm4gZShoW3RdLGhbbl0pfSksciYmZC5mb3JFYWNoKGZ1bmN0aW9uKG4sZSl7bi5zb3J0KGZ1bmN0aW9uKG4saSl7cmV0dXJuIHIodFtlXVtuXSx0W2VdW2ldKX0pfSksbz1xZCgwLExkLW4qbCkvbyxjPW8/bjpMZC9sLHU9MCxzPS0xOysrczxsOyl7Zm9yKGE9dSxmPS0xOysrZjxsOyl7dmFyIHk9cFtzXSxtPWRbeV1bZl0seD10W3ldW21dLGI9dSx3PXUrPXgqbztnW20qbCt5XT17aW5kZXg6eSxzdWJpbmRleDptLHN0YXJ0QW5nbGU6YixlbmRBbmdsZTp3LHZhbHVlOnh9fV9beV09e2luZGV4Onksc3RhcnRBbmdsZTphLGVuZEFuZ2xlOnUsdmFsdWU6aFt5XX0sdSs9Y31mb3Iocz0tMTsrK3M8bDspZm9yKGY9cy0xOysrZjxsOyl7dmFyIE09Z1tmKmwrc10sVD1nW3MqbCtmXTsoTS52YWx1ZXx8VC52YWx1ZSkmJnYucHVzaChNLnZhbHVlPFQudmFsdWU/e3NvdXJjZTpULHRhcmdldDpNfTp7c291cmNlOk0sdGFyZ2V0OlR9KX1yZXR1cm4gaT92LnNvcnQoaSk6dn12YXIgbj0wLGU9bnVsbCxyPW51bGwsaT1udWxsO3JldHVybiB0LnBhZEFuZ2xlPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPXFkKDAsZSksdCk6bn0sdC5zb3J0R3JvdXBzPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPW4sdCk6ZX0sdC5zb3J0U3ViZ3JvdXBzPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPW4sdCk6cn0sdC5zb3J0Q2hvcmRzPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhudWxsPT1uP2k9bnVsbDooaT1QZShuKSkuXz1uLHQpOmkmJmkuX30sdH0sRGQ9QXJyYXkucHJvdG90eXBlLnNsaWNlLE9kPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0fX0sRmQ9TWF0aC5QSSxJZD0yKkZkLFlkPTFlLTYsQmQ9SWQtWWQ7UmUucHJvdG90eXBlPUxlLnByb3RvdHlwZT17Y29uc3RydWN0b3I6UmUsbW92ZVRvOmZ1bmN0aW9uKHQsbil7dGhpcy5fKz0iTSIrKHRoaXMuX3gwPXRoaXMuX3gxPSt0KSsiLCIrKHRoaXMuX3kwPXRoaXMuX3kxPStuKX0sY2xvc2VQYXRoOmZ1bmN0aW9uKCl7bnVsbCE9PXRoaXMuX3gxJiYodGhpcy5feDE9dGhpcy5feDAsdGhpcy5feTE9dGhpcy5feTAsdGhpcy5fKz0iWiIpfSxsaW5lVG86ZnVuY3Rpb24odCxuKXt0aGlzLl8rPSJMIisodGhpcy5feDE9K3QpKyIsIisodGhpcy5feTE9K24pfSxxdWFkcmF0aWNDdXJ2ZVRvOmZ1bmN0aW9uKHQsbixlLHIpe3RoaXMuXys9IlEiKyArdCsiLCIrICtuKyIsIisodGhpcy5feDE9K2UpKyIsIisodGhpcy5feTE9K3IpfSxiZXppZXJDdXJ2ZVRvOmZ1bmN0aW9uKHQsbixlLHIsaSxvKXt0aGlzLl8rPSJDIisgK3QrIiwiKyArbisiLCIrICtlKyIsIisgK3IrIiwiKyh0aGlzLl94MT0raSkrIiwiKyh0aGlzLl95MT0rbyl9LGFyY1RvOmZ1bmN0aW9uKHQsbixlLHIsaSl7dD0rdCxuPStuLGU9K2Uscj0rcixpPStpO3ZhciBvPXRoaXMuX3gxLHU9dGhpcy5feTEsYT1lLXQsYz1yLW4scz1vLXQsZj11LW4sbD1zKnMrZipmO2lmKGk8MCl0aHJvdyBuZXcgRXJyb3IoIm5lZ2F0aXZlIHJhZGl1czogIitpKTtpZihudWxsPT09dGhpcy5feDEpdGhpcy5fKz0iTSIrKHRoaXMuX3gxPXQpKyIsIisodGhpcy5feTE9bik7ZWxzZSBpZihsPllkKWlmKE1hdGguYWJzKGYqYS1jKnMpPllkJiZpKXt2YXIgaD1lLW8scD1yLXUsZD1hKmErYypjLHY9aCpoK3AqcCxfPU1hdGguc3FydChkKSxnPU1hdGguc3FydChsKSx5PWkqTWF0aC50YW4oKEZkLU1hdGguYWNvcygoZCtsLXYpLygyKl8qZykpKS8yKSxtPXkvZyx4PXkvXztNYXRoLmFicyhtLTEpPllkJiYodGhpcy5fKz0iTCIrKHQrbSpzKSsiLCIrKG4rbSpmKSksdGhpcy5fKz0iQSIraSsiLCIraSsiLDAsMCwiKyArKGYqaD5zKnApKyIsIisodGhpcy5feDE9dCt4KmEpKyIsIisodGhpcy5feTE9bit4KmMpfWVsc2UgdGhpcy5fKz0iTCIrKHRoaXMuX3gxPXQpKyIsIisodGhpcy5feTE9bik7ZWxzZTt9LGFyYzpmdW5jdGlvbih0LG4sZSxyLGksbyl7dD0rdCxuPStuLGU9K2U7dmFyIHU9ZSpNYXRoLmNvcyhyKSxhPWUqTWF0aC5zaW4ociksYz10K3Uscz1uK2EsZj0xXm8sbD1vP3ItaTppLXI7aWYoZTwwKXRocm93IG5ldyBFcnJvcigibmVnYXRpdmUgcmFkaXVzOiAiK2UpO251bGw9PT10aGlzLl94MT90aGlzLl8rPSJNIitjKyIsIitzOihNYXRoLmFicyh0aGlzLl94MS1jKT5ZZHx8TWF0aC5hYnModGhpcy5feTEtcyk+WWQpJiYodGhpcy5fKz0iTCIrYysiLCIrcyksZSYmKGw+QmQ/dGhpcy5fKz0iQSIrZSsiLCIrZSsiLDAsMSwiK2YrIiwiKyh0LXUpKyIsIisobi1hKSsiQSIrZSsiLCIrZSsiLDAsMSwiK2YrIiwiKyh0aGlzLl94MT1jKSsiLCIrKHRoaXMuX3kxPXMpOihsPDAmJihsPWwlSWQrSWQpLHRoaXMuXys9IkEiK2UrIiwiK2UrIiwwLCIrICsobD49RmQpKyIsIitmKyIsIisodGhpcy5feDE9dCtlKk1hdGguY29zKGkpKSsiLCIrKHRoaXMuX3kxPW4rZSpNYXRoLnNpbihpKSkpKX0scmVjdDpmdW5jdGlvbih0LG4sZSxyKXt0aGlzLl8rPSJNIisodGhpcy5feDA9dGhpcy5feDE9K3QpKyIsIisodGhpcy5feTA9dGhpcy5feTE9K24pKyJoIisgK2UrInYiKyArcisiaCIrLWUrIloifSx0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiB0aGlzLl99fTt2YXIgamQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7dmFyIHQsYT1EZC5jYWxsKGFyZ3VtZW50cyksYz1uLmFwcGx5KHRoaXMsYSkscz1lLmFwcGx5KHRoaXMsYSksZj0rci5hcHBseSh0aGlzLChhWzBdPWMsYSkpLGw9aS5hcHBseSh0aGlzLGEpLVJkLGg9by5hcHBseSh0aGlzLGEpLVJkLHA9ZipDZChsKSxkPWYqemQobCksdj0rci5hcHBseSh0aGlzLChhWzBdPXMsYSkpLF89aS5hcHBseSh0aGlzLGEpLVJkLGc9by5hcHBseSh0aGlzLGEpLVJkO2lmKHV8fCh1PXQ9TGUoKSksdS5tb3ZlVG8ocCxkKSx1LmFyYygwLDAsZixsLGgpLGw9PT1fJiZoPT09Z3x8KHUucXVhZHJhdGljQ3VydmVUbygwLDAsdipDZChfKSx2KnpkKF8pKSx1LmFyYygwLDAsdixfLGcpKSx1LnF1YWRyYXRpY0N1cnZlVG8oMCwwLHAsZCksdS5jbG9zZVBhdGgoKSx0KXJldHVybiB1PW51bGwsdCsiInx8bnVsbH12YXIgbj1xZSxlPVVlLHI9RGUsaT1PZSxvPUZlLHU9bnVsbDtyZXR1cm4gdC5yYWRpdXM9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9ImZ1bmN0aW9uIj09dHlwZW9mIG4/bjpPZCgrbiksdCk6cn0sdC5zdGFydEFuZ2xlPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPSJmdW5jdGlvbiI9PXR5cGVvZiBuP246T2QoK24pLHQpOml9LHQuZW5kQW5nbGU9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89ImZ1bmN0aW9uIj09dHlwZW9mIG4/bjpPZCgrbiksdCk6b30sdC5zb3VyY2U9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49ZSx0KTpufSx0LnRhcmdldD1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT1uLHQpOmV9LHQuY29udGV4dD1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT1udWxsPT1uP251bGw6bix0KTp1fSx0fSxIZD0iJCI7SWUucHJvdG90eXBlPVllLnByb3RvdHlwZT17Y29uc3RydWN0b3I6SWUsaGFzOmZ1bmN0aW9uKHQpe3JldHVybiBIZCt0IGluIHRoaXN9LGdldDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpc1tIZCt0XX0sc2V0OmZ1bmN0aW9uKHQsbil7cmV0dXJuIHRoaXNbSGQrdF09bix0aGlzfSxyZW1vdmU6ZnVuY3Rpb24odCl7dmFyIG49SGQrdDtyZXR1cm4gbiBpbiB0aGlzJiZkZWxldGUgdGhpc1tuXX0sY2xlYXI6ZnVuY3Rpb24oKXtmb3IodmFyIHQgaW4gdGhpcyl0WzBdPT09SGQmJmRlbGV0ZSB0aGlzW3RdfSxrZXlzOmZ1bmN0aW9uKCl7dmFyIHQ9W107Zm9yKHZhciBuIGluIHRoaXMpblswXT09PUhkJiZ0LnB1c2gobi5zbGljZSgxKSk7cmV0dXJuIHR9LHZhbHVlczpmdW5jdGlvbigpe3ZhciB0PVtdO2Zvcih2YXIgbiBpbiB0aGlzKW5bMF09PT1IZCYmdC5wdXNoKHRoaXNbbl0pO3JldHVybiB0fSxlbnRyaWVzOmZ1bmN0aW9uKCl7dmFyIHQ9W107Zm9yKHZhciBuIGluIHRoaXMpblswXT09PUhkJiZ0LnB1c2goe2tleTpuLnNsaWNlKDEpLHZhbHVlOnRoaXNbbl19KTtyZXR1cm4gdH0sc2l6ZTpmdW5jdGlvbigpe3ZhciB0PTA7Zm9yKHZhciBuIGluIHRoaXMpblswXT09PUhkJiYrK3Q7cmV0dXJuIHR9LGVtcHR5OmZ1bmN0aW9uKCl7Zm9yKHZhciB0IGluIHRoaXMpaWYodFswXT09PUhkKXJldHVybiExO3JldHVybiEwfSxlYWNoOmZ1bmN0aW9uKHQpe2Zvcih2YXIgbiBpbiB0aGlzKW5bMF09PT1IZCYmdCh0aGlzW25dLG4uc2xpY2UoMSksdGhpcyl9fTt2YXIgWGQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KG4saSx1LGEpe2lmKGk+PW8ubGVuZ3RoKXJldHVybiBudWxsIT1yP3Iobik6bnVsbCE9ZT9uLnNvcnQoZSk6bjtmb3IodmFyIGMscyxmLGw9LTEsaD1uLmxlbmd0aCxwPW9baSsrXSxkPVllKCksdj11KCk7KytsPGg7KShmPWQuZ2V0KGM9cChzPW5bbF0pKyIiKSk/Zi5wdXNoKHMpOmQuc2V0KGMsW3NdKTtyZXR1cm4gZC5lYWNoKGZ1bmN0aW9uKG4sZSl7YSh2LGUsdChuLGksdSxhKSl9KSx2fWZ1bmN0aW9uIG4odCxlKXtpZigrK2U+by5sZW5ndGgpcmV0dXJuIHQ7dmFyIGksYT11W2UtMV07cmV0dXJuIG51bGwhPXImJmU+PW8ubGVuZ3RoP2k9dC5lbnRyaWVzKCk6KGk9W10sdC5lYWNoKGZ1bmN0aW9uKHQscil7aS5wdXNoKHtrZXk6cix2YWx1ZXM6bih0LGUpfSl9KSksbnVsbCE9YT9pLnNvcnQoZnVuY3Rpb24odCxuKXtyZXR1cm4gYSh0LmtleSxuLmtleSl9KTppfXZhciBlLHIsaSxvPVtdLHU9W107cmV0dXJuIGk9e29iamVjdDpmdW5jdGlvbihuKXtyZXR1cm4gdChuLDAsQmUsamUpfSxtYXA6ZnVuY3Rpb24obil7cmV0dXJuIHQobiwwLEhlLFhlKX0sZW50cmllczpmdW5jdGlvbihlKXtyZXR1cm4gbih0KGUsMCxIZSxYZSksMCl9LGtleTpmdW5jdGlvbih0KXtyZXR1cm4gby5wdXNoKHQpLGl9LHNvcnRLZXlzOmZ1bmN0aW9uKHQpe3JldHVybiB1W28ubGVuZ3RoLTFdPXQsaX0sc29ydFZhbHVlczpmdW5jdGlvbih0KXtyZXR1cm4gZT10LGl9LHJvbGx1cDpmdW5jdGlvbih0KXtyZXR1cm4gcj10LGl9fX0sVmQ9WWUucHJvdG90eXBlO1ZlLnByb3RvdHlwZT1XZS5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOlZlLGhhczpWZC5oYXMsYWRkOmZ1bmN0aW9uKHQpe3JldHVybiB0Kz0iIix0aGlzW0hkK3RdPXQsdGhpc30scmVtb3ZlOlZkLnJlbW92ZSxjbGVhcjpWZC5jbGVhcix2YWx1ZXM6VmQua2V5cyxzaXplOlZkLnNpemUsZW1wdHk6VmQuZW1wdHksZWFjaDpWZC5lYWNofTt2YXIgV2Q9ZnVuY3Rpb24odCl7dmFyIG49W107Zm9yKHZhciBlIGluIHQpbi5wdXNoKGUpO3JldHVybiBufSwkZD1mdW5jdGlvbih0KXt2YXIgbj1bXTtmb3IodmFyIGUgaW4gdCluLnB1c2godFtlXSk7cmV0dXJuIG59LFpkPWZ1bmN0aW9uKHQpe3ZhciBuPVtdO2Zvcih2YXIgZSBpbiB0KW4ucHVzaCh7a2V5OmUsdmFsdWU6dFtlXX0pO3JldHVybiBufSxHZD1mdW5jdGlvbih0KXtmdW5jdGlvbiBuKHQsbil7dmFyIHIsaSxvPWUodCxmdW5jdGlvbih0LGUpe2lmKHIpcmV0dXJuIHIodCxlLTEpO2k9dCxyPW4/WmUodCxuKTokZSh0KX0pO3JldHVybiBvLmNvbHVtbnM9aSxvfWZ1bmN0aW9uIGUodCxuKXtmdW5jdGlvbiBlKCl7aWYoZj49cylyZXR1cm4gdTtpZihpKXJldHVybiBpPSExLG87dmFyIG4sZT1mO2lmKDM0PT09dC5jaGFyQ29kZUF0KGUpKXtmb3IodmFyIHI9ZTtyKys8czspaWYoMzQ9PT10LmNoYXJDb2RlQXQocikpe2lmKDM0IT09dC5jaGFyQ29kZUF0KHIrMSkpYnJlYWs7KytyfXJldHVybiBmPXIrMixuPXQuY2hhckNvZGVBdChyKzEpLDEzPT09bj8oaT0hMCwxMD09PXQuY2hhckNvZGVBdChyKzIpJiYrK2YpOjEwPT09biYmKGk9ITApLHQuc2xpY2UoZSsxLHIpLnJlcGxhY2UoLyIiL2csJyInKX1mb3IoO2Y8czspe3ZhciBhPTE7aWYobj10LmNoYXJDb2RlQXQoZisrKSwxMD09PW4paT0hMDtlbHNlIGlmKDEzPT09bilpPSEwLDEwPT09dC5jaGFyQ29kZUF0KGYpJiYoKytmLCsrYSk7ZWxzZSBpZihuIT09Yyljb250aW51ZTtyZXR1cm4gdC5zbGljZShlLGYtYSl9cmV0dXJuIHQuc2xpY2UoZSl9Zm9yKHZhciByLGksbz17fSx1PXt9LGE9W10scz10Lmxlbmd0aCxmPTAsbD0wOyhyPWUoKSkhPT11Oyl7Zm9yKHZhciBoPVtdO3IhPT1vJiZyIT09dTspaC5wdXNoKHIpLHI9ZSgpO24mJm51bGw9PShoPW4oaCxsKyspKXx8YS5wdXNoKGgpfXJldHVybiBhfWZ1bmN0aW9uIHIobixlKXtyZXR1cm4gbnVsbD09ZSYmKGU9R2UobikpLFtlLm1hcCh1KS5qb2luKHQpXS5jb25jYXQobi5tYXAoZnVuY3Rpb24obil7cmV0dXJuIGUubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB1KG5bdF0pfSkuam9pbih0KX0pKS5qb2luKCJcbiIpfWZ1bmN0aW9uIGkodCl7cmV0dXJuIHQubWFwKG8pLmpvaW4oIlxuIil9ZnVuY3Rpb24gbyhuKXtyZXR1cm4gbi5tYXAodSkuam9pbih0KX1mdW5jdGlvbiB1KHQpe3JldHVybiBudWxsPT10PyIiOmEudGVzdCh0Kz0iIik/JyInK3QucmVwbGFjZSgvXCIvZywnIiInKSsnIic6dH12YXIgYT1uZXcgUmVnRXhwKCdbIicrdCsiXG5dIiksYz10LmNoYXJDb2RlQXQoMCk7cmV0dXJue3BhcnNlOm4scGFyc2VSb3dzOmUsZm9ybWF0OnIsZm9ybWF0Um93czppfX0sSmQ9R2QoIiwiKSxRZD1KZC5wYXJzZSxLZD1KZC5wYXJzZVJvd3MsdHY9SmQuZm9ybWF0LG52PUpkLmZvcm1hdFJvd3MsZXY9R2QoIlx0IikscnY9ZXYucGFyc2UsaXY9ZXYucGFyc2VSb3dzLG92PWV2LmZvcm1hdCx1dj1ldi5mb3JtYXRSb3dzLGF2PWZ1bmN0aW9uKHQsbil7ZnVuY3Rpb24gZSgpe3ZhciBlLGksbz1yLmxlbmd0aCx1PTAsYT0wO2ZvcihlPTA7ZTxvOysrZSlpPXJbZV0sdSs9aS54LGErPWkueTtmb3IodT11L28tdCxhPWEvby1uLGU9MDtlPG87KytlKWk9cltlXSxpLngtPXUsaS55LT1hfXZhciByO3JldHVybiBudWxsPT10JiYodD0wKSxudWxsPT1uJiYobj0wKSxlLmluaXRpYWxpemU9ZnVuY3Rpb24odCl7cj10fSxlLng9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9K24sZSk6dH0sZS55PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPSt0LGUpOm59LGV9LGN2PWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0fX0sc3Y9ZnVuY3Rpb24oKXtyZXR1cm4gMWUtNiooTWF0aC5yYW5kb20oKS0uNSl9LGZ2PWZ1bmN0aW9uKHQpe3ZhciBuPSt0aGlzLl94LmNhbGwobnVsbCx0KSxlPSt0aGlzLl95LmNhbGwobnVsbCx0KTtyZXR1cm4gSmUodGhpcy5jb3ZlcihuLGUpLG4sZSx0KX0sbHY9ZnVuY3Rpb24odCxuKXtpZihpc05hTih0PSt0KXx8aXNOYU4obj0rbikpcmV0dXJuIHRoaXM7dmFyIGU9dGhpcy5feDAscj10aGlzLl95MCxpPXRoaXMuX3gxLG89dGhpcy5feTE7aWYoaXNOYU4oZSkpaT0oZT1NYXRoLmZsb29yKHQpKSsxLG89KHI9TWF0aC5mbG9vcihuKSkrMTtlbHNle2lmKCEoZT50fHx0Pml8fHI+bnx8bj5vKSlyZXR1cm4gdGhpczt2YXIgdSxhLGM9aS1lLHM9dGhpcy5fcm9vdDtzd2l0Y2goYT0objwocitvKS8yKTw8MXx0PChlK2kpLzIpe2Nhc2UgMDpkbyB1PW5ldyBBcnJheSg0KSx1W2FdPXMscz11O3doaWxlKGMqPTIsaT1lK2Msbz1yK2MsdD5pfHxuPm8pO2JyZWFrO2Nhc2UgMTpkbyB1PW5ldyBBcnJheSg0KSx1W2FdPXMscz11O3doaWxlKGMqPTIsZT1pLWMsbz1yK2MsZT50fHxuPm8pO2JyZWFrO2Nhc2UgMjpkbyB1PW5ldyBBcnJheSg0KSx1W2FdPXMscz11O3doaWxlKGMqPTIsaT1lK2Mscj1vLWMsdD5pfHxyPm4pO2JyZWFrO2Nhc2UgMzpkbyB1PW5ldyBBcnJheSg0KSx1W2FdPXMscz11O3doaWxlKGMqPTIsZT1pLWMscj1vLWMsZT50fHxyPm4pfXRoaXMuX3Jvb3QmJnRoaXMuX3Jvb3QubGVuZ3RoJiYodGhpcy5fcm9vdD1zKX1yZXR1cm4gdGhpcy5feDA9ZSx0aGlzLl95MD1yLHRoaXMuX3gxPWksdGhpcy5feTE9byx0aGlzfSxodj1mdW5jdGlvbigpe3ZhciB0PVtdO3JldHVybiB0aGlzLnZpc2l0KGZ1bmN0aW9uKG4pe2lmKCFuLmxlbmd0aClkbyB0LnB1c2gobi5kYXRhKTt3aGlsZShuPW4ubmV4dCl9KSx0fSxwdj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLmNvdmVyKCt0WzBdWzBdLCt0WzBdWzFdKS5jb3ZlcigrdFsxXVswXSwrdFsxXVsxXSk6aXNOYU4odGhpcy5feDApP3ZvaWQgMDpbW3RoaXMuX3gwLHRoaXMuX3kwXSxbdGhpcy5feDEsdGhpcy5feTFdXX0sZHY9ZnVuY3Rpb24odCxuLGUscixpKXt0aGlzLm5vZGU9dCx0aGlzLngwPW4sdGhpcy55MD1lLHRoaXMueDE9cix0aGlzLnkxPWl9LHZ2PWZ1bmN0aW9uKHQsbixlKXt2YXIgcixpLG8sdSxhLGMscyxmPXRoaXMuX3gwLGw9dGhpcy5feTAsaD10aGlzLl94MSxwPXRoaXMuX3kxLGQ9W10sdj10aGlzLl9yb290O2Zvcih2JiZkLnB1c2gobmV3IGR2KHYsZixsLGgscCkpLG51bGw9PWU/ZT0xLzA6KGY9dC1lLGw9bi1lLGg9dCtlLHA9bitlLGUqPWUpO2M9ZC5wb3AoKTspaWYoISghKHY9Yy5ub2RlKXx8KGk9Yy54MCk+aHx8KG89Yy55MCk+cHx8KHU9Yy54MSk8Znx8KGE9Yy55MSk8bCkpaWYodi5sZW5ndGgpe3ZhciBfPShpK3UpLzIsZz0obythKS8yO2QucHVzaChuZXcgZHYodlszXSxfLGcsdSxhKSxuZXcgZHYodlsyXSxpLGcsXyxhKSxuZXcgZHYodlsxXSxfLG8sdSxnKSxuZXcgZHYodlswXSxpLG8sXyxnKSksKHM9KG4+PWcpPDwxfHQ+PV8pJiYoYz1kW2QubGVuZ3RoLTFdLGRbZC5sZW5ndGgtMV09ZFtkLmxlbmd0aC0xLXNdLGRbZC5sZW5ndGgtMS1zXT1jKX1lbHNle3ZhciB5PXQtK3RoaXMuX3guY2FsbChudWxsLHYuZGF0YSksbT1uLSt0aGlzLl95LmNhbGwobnVsbCx2LmRhdGEpLHg9eSp5K20qbTtpZih4PGUpe3ZhciBiPU1hdGguc3FydChlPXgpO2Y9dC1iLGw9bi1iLGg9dCtiLHA9bitiLHI9di5kYXRhfX1yZXR1cm4gcn0sX3Y9ZnVuY3Rpb24odCl7aWYoaXNOYU4obz0rdGhpcy5feC5jYWxsKG51bGwsdCkpfHxpc05hTih1PSt0aGlzLl95LmNhbGwobnVsbCx0KSkpcmV0dXJuIHRoaXM7dmFyIG4sZSxyLGksbyx1LGEsYyxzLGYsbCxoLHA9dGhpcy5fcm9vdCxkPXRoaXMuX3gwLHY9dGhpcy5feTAsXz10aGlzLl94MSxnPXRoaXMuX3kxO2lmKCFwKXJldHVybiB0aGlzO2lmKHAubGVuZ3RoKWZvcig7Oyl7aWYoKHM9bz49KGE9KGQrXykvMikpP2Q9YTpfPWEsKGY9dT49KGM9KHYrZykvMikpP3Y9YzpnPWMsbj1wLCEocD1wW2w9Zjw8MXxzXSkpcmV0dXJuIHRoaXM7aWYoIXAubGVuZ3RoKWJyZWFrOyhuW2wrMSYzXXx8bltsKzImM118fG5bbCszJjNdKSYmKGU9bixoPWwpfWZvcig7cC5kYXRhIT09dDspaWYocj1wLCEocD1wLm5leHQpKXJldHVybiB0aGlzO3JldHVybihpPXAubmV4dCkmJmRlbGV0ZSBwLm5leHQscj8oaT9yLm5leHQ9aTpkZWxldGUgci5uZXh0LHRoaXMpOm4/KGk/bltsXT1pOmRlbGV0ZSBuW2xdLChwPW5bMF18fG5bMV18fG5bMl18fG5bM10pJiZwPT09KG5bM118fG5bMl18fG5bMV18fG5bMF0pJiYhcC5sZW5ndGgmJihlP2VbaF09cDp0aGlzLl9yb290PXApLHRoaXMpOih0aGlzLl9yb290PWksdGhpcyl9LGd2PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3Jvb3R9LHl2PWZ1bmN0aW9uKCl7dmFyIHQ9MDtyZXR1cm4gdGhpcy52aXNpdChmdW5jdGlvbihuKXtpZighbi5sZW5ndGgpZG8rK3Q7d2hpbGUobj1uLm5leHQpfSksdH0sbXY9ZnVuY3Rpb24odCl7dmFyIG4sZSxyLGksbyx1LGE9W10sYz10aGlzLl9yb290O2ZvcihjJiZhLnB1c2gobmV3IGR2KGMsdGhpcy5feDAsdGhpcy5feTAsdGhpcy5feDEsdGhpcy5feTEpKTtuPWEucG9wKCk7KWlmKCF0KGM9bi5ub2RlLHI9bi54MCxpPW4ueTAsbz1uLngxLHU9bi55MSkmJmMubGVuZ3RoKXt2YXIgcz0ocitvKS8yLGY9KGkrdSkvMjsoZT1jWzNdKSYmYS5wdXNoKG5ldyBkdihlLHMsZixvLHUpKSwoZT1jWzJdKSYmYS5wdXNoKG5ldyBkdihlLHIsZixzLHUpKSwoZT1jWzFdKSYmYS5wdXNoKG5ldyBkdihlLHMsaSxvLGYpKSwoZT1jWzBdKSYmYS5wdXNoKG5ldyBkdihlLHIsaSxzLGYpKX1yZXR1cm4gdGhpc30seHY9ZnVuY3Rpb24odCl7dmFyIG4sZT1bXSxyPVtdO2Zvcih0aGlzLl9yb290JiZlLnB1c2gobmV3IGR2KHRoaXMuX3Jvb3QsdGhpcy5feDAsdGhpcy5feTAsdGhpcy5feDEsdGhpcy5feTEpKTtuPWUucG9wKCk7KXt2YXIgaT1uLm5vZGU7aWYoaS5sZW5ndGgpe3ZhciBvLHU9bi54MCxhPW4ueTAsYz1uLngxLHM9bi55MSxmPSh1K2MpLzIsbD0oYStzKS8yOyhvPWlbMF0pJiZlLnB1c2gobmV3IGR2KG8sdSxhLGYsbCkpLChvPWlbMV0pJiZlLnB1c2gobmV3IGR2KG8sZixhLGMsbCkpLChvPWlbMl0pJiZlLnB1c2gobmV3IGR2KG8sdSxsLGYscykpLChvPWlbM10pJiZlLnB1c2gobmV3IGR2KG8sZixsLGMscykpfXIucHVzaChuKX1mb3IoO249ci5wb3AoKTspdChuLm5vZGUsbi54MCxuLnkwLG4ueDEsbi55MSk7cmV0dXJuIHRoaXN9LGJ2PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0aGlzLl94PXQsdGhpcyk6dGhpcy5feH0sd3Y9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHRoaXMuX3k9dCx0aGlzKTp0aGlzLl95fSxNdj1lci5wcm90b3R5cGU9cnIucHJvdG90eXBlO012LmNvcHk9ZnVuY3Rpb24oKXt2YXIgdCxuLGU9bmV3IHJyKHRoaXMuX3gsdGhpcy5feSx0aGlzLl94MCx0aGlzLl95MCx0aGlzLl94MSx0aGlzLl95MSkscj10aGlzLl9yb290O2lmKCFyKXJldHVybiBlO2lmKCFyLmxlbmd0aClyZXR1cm4gZS5fcm9vdD1pcihyKSxlO2Zvcih0PVt7c291cmNlOnIsdGFyZ2V0OmUuX3Jvb3Q9bmV3IEFycmF5KDQpfV07cj10LnBvcCgpOylmb3IodmFyIGk9MDtpPDQ7KytpKShuPXIuc291cmNlW2ldKSYmKG4ubGVuZ3RoP3QucHVzaCh7c291cmNlOm4sdGFyZ2V0OnIudGFyZ2V0W2ldPW5ldyBBcnJheSg0KX0pOnIudGFyZ2V0W2ldPWlyKG4pKTtyZXR1cm4gZX0sTXYuYWRkPWZ2LE12LmFkZEFsbD1RZSxNdi5jb3Zlcj1sdixNdi5kYXRhPWh2LE12LmV4dGVudD1wdixNdi5maW5kPXZ2LE12LnJlbW92ZT1fdixNdi5yZW1vdmVBbGw9S2UsTXYucm9vdD1ndixNdi5zaXplPXl2LE12LnZpc2l0PW12LE12LnZpc2l0QWZ0ZXI9eHYsTXYueD1idixNdi55PXd2O3ZhciBUdixrdj1mdW5jdGlvbih0KXtmdW5jdGlvbiBuKCl7ZnVuY3Rpb24gdCh0LG4sZSxyLGkpe3ZhciBvPXQuZGF0YSxhPXQucixwPWwrYTt7aWYoIW8pcmV0dXJuIG4+cytwfHxyPHMtcHx8ZT5mK3B8fGk8Zi1wO2lmKG8uaW5kZXg+Yy5pbmRleCl7dmFyIGQ9cy1vLngtby52eCx2PWYtby55LW8udnksXz1kKmQrdip2O188cCpwJiYoMD09PWQmJihkPXN2KCksXys9ZCpkKSwwPT09diYmKHY9c3YoKSxfKz12KnYpLF89KHAtKF89TWF0aC5zcXJ0KF8pKSkvXyp1LGMudngrPShkKj1fKSoocD0oYSo9YSkvKGgrYSkpLGMudnkrPSh2Kj1fKSpwLG8udngtPWQqKHA9MS1wKSxvLnZ5LT12KnApfX19Zm9yKHZhciBuLHIsYyxzLGYsbCxoLHA9aS5sZW5ndGgsZD0wO2Q8YTsrK2QpZm9yKHI9ZXIoaSxvcix1cikudmlzaXRBZnRlcihlKSxuPTA7bjxwOysrbiljPWlbbl0sbD1vW2MuaW5kZXhdLGg9bCpsLHM9Yy54K2MudngsZj1jLnkrYy52eSxyLnZpc2l0KHQpfWZ1bmN0aW9uIGUodCl7aWYodC5kYXRhKXJldHVybiB0LnI9b1t0LmRhdGEuaW5kZXhdO2Zvcih2YXIgbj10LnI9MDtuPDQ7KytuKXRbbl0mJnRbbl0ucj50LnImJih0LnI9dFtuXS5yKX1mdW5jdGlvbiByKCl7aWYoaSl7dmFyIG4sZSxyPWkubGVuZ3RoO2ZvcihvPW5ldyBBcnJheShyKSxuPTA7bjxyOysrbillPWlbbl0sb1tlLmluZGV4XT0rdChlLG4saSl9fXZhciBpLG8sdT0xLGE9MTtyZXR1cm4iZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9Y3YobnVsbD09dD8xOit0KSksbi5pbml0aWFsaXplPWZ1bmN0aW9uKHQpe2k9dCxyKCl9LG4uaXRlcmF0aW9ucz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT0rdCxuKTphfSxuLnN0cmVuZ3RoPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PSt0LG4pOnV9LG4ucmFkaXVzPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PSJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6Y3YoK2UpLHIoKSxuKTp0fSxufSxTdj1mdW5jdGlvbih0KXtmdW5jdGlvbiBuKHQpe3JldHVybiAxL01hdGgubWluKHNbdC5zb3VyY2UuaW5kZXhdLHNbdC50YXJnZXQuaW5kZXhdKX1mdW5jdGlvbiBlKG4pe2Zvcih2YXIgZT0wLHI9dC5sZW5ndGg7ZTxkOysrZSlmb3IodmFyIGksbyxjLHMsbCxoLHAsdj0wO3Y8cjsrK3YpaT10W3ZdLG89aS5zb3VyY2UsYz1pLnRhcmdldCxzPWMueCtjLnZ4LW8ueC1vLnZ4fHxzdigpLGw9Yy55K2Mudnktby55LW8udnl8fHN2KCksaD1NYXRoLnNxcnQocypzK2wqbCksaD0oaC1hW3ZdKS9oKm4qdVt2XSxzKj1oLGwqPWgsYy52eC09cyoocD1mW3ZdKSxjLnZ5LT1sKnAsby52eCs9cyoocD0xLXApLG8udnkrPWwqcH1mdW5jdGlvbiByKCl7aWYoYyl7dmFyIG4sZSxyPWMubGVuZ3RoLGg9dC5sZW5ndGgscD1ZZShjLGwpO2ZvcihuPTAscz1uZXcgQXJyYXkocik7bjxoOysrbillPXRbbl0sZS5pbmRleD1uLCJvYmplY3QiIT10eXBlb2YgZS5zb3VyY2UmJihlLnNvdXJjZT1jcihwLGUuc291cmNlKSksIm9iamVjdCIhPXR5cGVvZiBlLnRhcmdldCYmKGUudGFyZ2V0PWNyKHAsZS50YXJnZXQpKSxzW2Uuc291cmNlLmluZGV4XT0oc1tlLnNvdXJjZS5pbmRleF18fDApKzEsc1tlLnRhcmdldC5pbmRleF09KHNbZS50YXJnZXQuaW5kZXhdfHwwKSsxO2ZvcihuPTAsZj1uZXcgQXJyYXkoaCk7bjxoOysrbillPXRbbl0sZltuXT1zW2Uuc291cmNlLmluZGV4XS8oc1tlLnNvdXJjZS5pbmRleF0rc1tlLnRhcmdldC5pbmRleF0pO3U9bmV3IEFycmF5KGgpLGkoKSxhPW5ldyBBcnJheShoKSxvKCl9fWZ1bmN0aW9uIGkoKXtpZihjKWZvcih2YXIgbj0wLGU9dC5sZW5ndGg7bjxlOysrbil1W25dPStoKHRbbl0sbix0KX1mdW5jdGlvbiBvKCl7aWYoYylmb3IodmFyIG49MCxlPXQubGVuZ3RoO248ZTsrK24pYVtuXT0rcCh0W25dLG4sdCl9dmFyIHUsYSxjLHMsZixsPWFyLGg9bixwPWN2KDMwKSxkPTE7cmV0dXJuIG51bGw9PXQmJih0PVtdKSxlLmluaXRpYWxpemU9ZnVuY3Rpb24odCl7Yz10LHIoKX0sZS5saW5rcz1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1uLHIoKSxlKTp0fSxlLmlkPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhsPXQsZSk6bH0sZS5pdGVyYXRpb25zPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhkPSt0LGUpOmR9LGUuc3RyZW5ndGg9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGg9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpjdigrdCksaSgpLGUpOmh9LGUuZGlzdGFuY2U9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHA9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpjdigrdCksbygpLGUpOnB9LGV9LE52PTEwLEV2PU1hdGguUEkqKDMtTWF0aC5zcXJ0KDUpKSxBdj1mdW5jdGlvbih0KXtmdW5jdGlvbiBuKCl7ZSgpLHAuY2FsbCgidGljayIsbyksdTxhJiYoaC5zdG9wKCkscC5jYWxsKCJlbmQiLG8pKX1mdW5jdGlvbiBlKCl7dmFyIG4sZSxyPXQubGVuZ3RoO2Zvcih1Kz0ocy11KSpjLGwuZWFjaChmdW5jdGlvbih0KXt0KHUpfSksbj0wO248cjsrK24pZT10W25dLG51bGw9PWUuZng/ZS54Kz1lLnZ4Kj1mOihlLng9ZS5meCxlLnZ4PTApLApudWxsPT1lLmZ5P2UueSs9ZS52eSo9ZjooZS55PWUuZnksZS52eT0wKX1mdW5jdGlvbiByKCl7Zm9yKHZhciBuLGU9MCxyPXQubGVuZ3RoO2U8cjsrK2Upe2lmKG49dFtlXSxuLmluZGV4PWUsaXNOYU4obi54KXx8aXNOYU4obi55KSl7dmFyIGk9TnYqTWF0aC5zcXJ0KGUpLG89ZSpFdjtuLng9aSpNYXRoLmNvcyhvKSxuLnk9aSpNYXRoLnNpbihvKX0oaXNOYU4obi52eCl8fGlzTmFOKG4udnkpKSYmKG4udng9bi52eT0wKX19ZnVuY3Rpb24gaShuKXtyZXR1cm4gbi5pbml0aWFsaXplJiZuLmluaXRpYWxpemUodCksbn12YXIgbyx1PTEsYT0uMDAxLGM9MS1NYXRoLnBvdyhhLDEvMzAwKSxzPTAsZj0uNixsPVllKCksaD1nbihuKSxwPWQoInRpY2siLCJlbmQiKTtyZXR1cm4gbnVsbD09dCYmKHQ9W10pLHIoKSxvPXt0aWNrOmUscmVzdGFydDpmdW5jdGlvbigpe3JldHVybiBoLnJlc3RhcnQobiksb30sc3RvcDpmdW5jdGlvbigpe3JldHVybiBoLnN0b3AoKSxvfSxub2RlczpmdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1uLHIoKSxsLmVhY2goaSksbyk6dH0sYWxwaGE6ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHU9K3Qsbyk6dX0sYWxwaGFNaW46ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9K3Qsbyk6YX0sYWxwaGFEZWNheTpmdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz0rdCxvKTorY30sYWxwaGFUYXJnZXQ6ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9K3Qsbyk6c30sdmVsb2NpdHlEZWNheTpmdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZj0xLXQsbyk6MS1mfSxmb3JjZTpmdW5jdGlvbih0LG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPjE/KG51bGw9PW4/bC5yZW1vdmUodCk6bC5zZXQodCxpKG4pKSxvKTpsLmdldCh0KX0sZmluZDpmdW5jdGlvbihuLGUscil7dmFyIGksbyx1LGEsYyxzPTAsZj10Lmxlbmd0aDtmb3IobnVsbD09cj9yPTEvMDpyKj1yLHM9MDtzPGY7KytzKWE9dFtzXSxpPW4tYS54LG89ZS1hLnksdT1pKmkrbypvLHU8ciYmKGM9YSxyPXUpO3JldHVybiBjfSxvbjpmdW5jdGlvbih0LG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPjE/KHAub24odCxuKSxvKTpwLm9uKHQpfX19LEN2PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt2YXIgbixhPWkubGVuZ3RoLGM9ZXIoaSxzcixmcikudmlzaXRBZnRlcihlKTtmb3IodT10LG49MDtuPGE7KytuKW89aVtuXSxjLnZpc2l0KHIpfWZ1bmN0aW9uIG4oKXtpZihpKXt2YXIgdCxuLGU9aS5sZW5ndGg7Zm9yKGE9bmV3IEFycmF5KGUpLHQ9MDt0PGU7Kyt0KW49aVt0XSxhW24uaW5kZXhdPStjKG4sdCxpKX19ZnVuY3Rpb24gZSh0KXt2YXIgbixlLHIsaSxvLHU9MDtpZih0Lmxlbmd0aCl7Zm9yKHI9aT1vPTA7bzw0Oysrbykobj10W29dKSYmKGU9bi52YWx1ZSkmJih1Kz1lLHIrPWUqbi54LGkrPWUqbi55KTt0Lng9ci91LHQueT1pL3V9ZWxzZXtuPXQsbi54PW4uZGF0YS54LG4ueT1uLmRhdGEueTtkbyB1Kz1hW24uZGF0YS5pbmRleF07d2hpbGUobj1uLm5leHQpfXQudmFsdWU9dX1mdW5jdGlvbiByKHQsbixlLHIpe2lmKCF0LnZhbHVlKXJldHVybiEwO3ZhciBpPXQueC1vLngsYz10Lnktby55LGg9ci1uLHA9aSppK2MqYztpZihoKmgvbDxwKXJldHVybiBwPGYmJigwPT09aSYmKGk9c3YoKSxwKz1pKmkpLDA9PT1jJiYoYz1zdigpLHArPWMqYykscDxzJiYocD1NYXRoLnNxcnQocypwKSksby52eCs9aSp0LnZhbHVlKnUvcCxvLnZ5Kz1jKnQudmFsdWUqdS9wKSwhMDtpZighKHQubGVuZ3RofHxwPj1mKSl7KHQuZGF0YSE9PW98fHQubmV4dCkmJigwPT09aSYmKGk9c3YoKSxwKz1pKmkpLDA9PT1jJiYoYz1zdigpLHArPWMqYykscDxzJiYocD1NYXRoLnNxcnQocypwKSkpO2RvIHQuZGF0YSE9PW8mJihoPWFbdC5kYXRhLmluZGV4XSp1L3Asby52eCs9aSpoLG8udnkrPWMqaCk7d2hpbGUodD10Lm5leHQpfX12YXIgaSxvLHUsYSxjPWN2KC0zMCkscz0xLGY9MS8wLGw9LjgxO3JldHVybiB0LmluaXRpYWxpemU9ZnVuY3Rpb24odCl7aT10LG4oKX0sdC5zdHJlbmd0aD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz0iZnVuY3Rpb24iPT10eXBlb2YgZT9lOmN2KCtlKSxuKCksdCk6Y30sdC5kaXN0YW5jZU1pbj1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz1uKm4sdCk6TWF0aC5zcXJ0KHMpfSx0LmRpc3RhbmNlTWF4PWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhmPW4qbix0KTpNYXRoLnNxcnQoZil9LHQudGhldGE9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGw9bipuLHQpOk1hdGguc3FydChsKX0sdH0senY9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gbih0KXtmb3IodmFyIG4sZT0wLHU9ci5sZW5ndGg7ZTx1OysrZSluPXJbZV0sbi52eCs9KG9bZV0tbi54KSppW2VdKnR9ZnVuY3Rpb24gZSgpe2lmKHIpe3ZhciBuLGU9ci5sZW5ndGg7Zm9yKGk9bmV3IEFycmF5KGUpLG89bmV3IEFycmF5KGUpLG49MDtuPGU7KytuKWlbbl09aXNOYU4ob1tuXT0rdChyW25dLG4scikpPzA6K3UocltuXSxuLHIpfX12YXIgcixpLG8sdT1jdiguMSk7cmV0dXJuImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PWN2KG51bGw9PXQ/MDordCkpLG4uaW5pdGlhbGl6ZT1mdW5jdGlvbih0KXtyPXQsZSgpfSxuLnN0cmVuZ3RoPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6Y3YoK3QpLGUoKSxuKTp1fSxuLng9ZnVuY3Rpb24ocil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ImZ1bmN0aW9uIj09dHlwZW9mIHI/cjpjdigrciksZSgpLG4pOnR9LG59LFB2PWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIG4odCl7Zm9yKHZhciBuLGU9MCx1PXIubGVuZ3RoO2U8dTsrK2Upbj1yW2VdLG4udnkrPShvW2VdLW4ueSkqaVtlXSp0fWZ1bmN0aW9uIGUoKXtpZihyKXt2YXIgbixlPXIubGVuZ3RoO2ZvcihpPW5ldyBBcnJheShlKSxvPW5ldyBBcnJheShlKSxuPTA7bjxlOysrbilpW25dPWlzTmFOKG9bbl09K3QocltuXSxuLHIpKT8wOit1KHJbbl0sbixyKX19dmFyIHIsaSxvLHU9Y3YoLjEpO3JldHVybiJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD1jdihudWxsPT10PzA6K3QpKSxuLmluaXRpYWxpemU9ZnVuY3Rpb24odCl7cj10LGUoKX0sbi5zdHJlbmd0aD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OmN2KCt0KSxlKCksbik6dX0sbi55PWZ1bmN0aW9uKHIpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PSJmdW5jdGlvbiI9PXR5cGVvZiByP3I6Y3YoK3IpLGUoKSxuKTp0fSxufSxSdj1mdW5jdGlvbih0LG4pe2lmKChlPSh0PW4/dC50b0V4cG9uZW50aWFsKG4tMSk6dC50b0V4cG9uZW50aWFsKCkpLmluZGV4T2YoImUiKSk8MClyZXR1cm4gbnVsbDt2YXIgZSxyPXQuc2xpY2UoMCxlKTtyZXR1cm5bci5sZW5ndGg+MT9yWzBdK3Iuc2xpY2UoMik6ciwrdC5zbGljZShlKzEpXX0sTHY9ZnVuY3Rpb24odCl7cmV0dXJuIHQ9UnYoTWF0aC5hYnModCkpLHQ/dFsxXTpOYU59LHF2PWZ1bmN0aW9uKHQsbil7cmV0dXJuIGZ1bmN0aW9uKGUscil7Zm9yKHZhciBpPWUubGVuZ3RoLG89W10sdT0wLGE9dFswXSxjPTA7aT4wJiZhPjAmJihjK2ErMT5yJiYoYT1NYXRoLm1heCgxLHItYykpLG8ucHVzaChlLnN1YnN0cmluZyhpLT1hLGkrYSkpLCEoKGMrPWErMSk+cikpOylhPXRbdT0odSsxKSV0Lmxlbmd0aF07cmV0dXJuIG8ucmV2ZXJzZSgpLmpvaW4obil9fSxVdj1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIG4ucmVwbGFjZSgvWzAtOV0vZyxmdW5jdGlvbihuKXtyZXR1cm4gdFsrbl19KX19LER2PWZ1bmN0aW9uKHQsbil7dD10LnRvUHJlY2lzaW9uKG4pO3Q6Zm9yKHZhciBlLHI9dC5sZW5ndGgsaT0xLG89LTE7aTxyOysraSlzd2l0Y2godFtpXSl7Y2FzZSIuIjpvPWU9aTticmVhaztjYXNlIjAiOjA9PT1vJiYobz1pKSxlPWk7YnJlYWs7Y2FzZSJlIjpicmVhayB0O2RlZmF1bHQ6bz4wJiYobz0wKX1yZXR1cm4gbz4wP3Quc2xpY2UoMCxvKSt0LnNsaWNlKGUrMSk6dH0sT3Y9ZnVuY3Rpb24odCxuKXt2YXIgZT1Sdih0LG4pO2lmKCFlKXJldHVybiB0KyIiO3ZhciByPWVbMF0saT1lWzFdLG89aS0oVHY9MypNYXRoLm1heCgtOCxNYXRoLm1pbig4LE1hdGguZmxvb3IoaS8zKSkpKSsxLHU9ci5sZW5ndGg7cmV0dXJuIG89PT11P3I6bz51P3IrbmV3IEFycmF5KG8tdSsxKS5qb2luKCIwIik6bz4wP3Iuc2xpY2UoMCxvKSsiLiIrci5zbGljZShvKToiMC4iK25ldyBBcnJheSgxLW8pLmpvaW4oIjAiKStSdih0LE1hdGgubWF4KDAsbitvLTEpKVswXX0sRnY9ZnVuY3Rpb24odCxuKXt2YXIgZT1Sdih0LG4pO2lmKCFlKXJldHVybiB0KyIiO3ZhciByPWVbMF0saT1lWzFdO3JldHVybiBpPDA/IjAuIituZXcgQXJyYXkoLWkpLmpvaW4oIjAiKStyOnIubGVuZ3RoPmkrMT9yLnNsaWNlKDAsaSsxKSsiLiIrci5zbGljZShpKzEpOnIrbmV3IEFycmF5KGktci5sZW5ndGgrMikuam9pbigiMCIpfSxJdj17IiI6RHYsIiUiOmZ1bmN0aW9uKHQsbil7cmV0dXJuKDEwMCp0KS50b0ZpeGVkKG4pfSxiOmZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLnJvdW5kKHQpLnRvU3RyaW5nKDIpfSxjOmZ1bmN0aW9uKHQpe3JldHVybiB0KyIifSxkOmZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLnJvdW5kKHQpLnRvU3RyaW5nKDEwKX0sZTpmdW5jdGlvbih0LG4pe3JldHVybiB0LnRvRXhwb25lbnRpYWwobil9LGY6ZnVuY3Rpb24odCxuKXtyZXR1cm4gdC50b0ZpeGVkKG4pfSxnOmZ1bmN0aW9uKHQsbil7cmV0dXJuIHQudG9QcmVjaXNpb24obil9LG86ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGgucm91bmQodCkudG9TdHJpbmcoOCl9LHA6ZnVuY3Rpb24odCxuKXtyZXR1cm4gRnYoMTAwKnQsbil9LHI6RnYsczpPdixYOmZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLnJvdW5kKHQpLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpfSx4OmZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLnJvdW5kKHQpLnRvU3RyaW5nKDE2KX19LFl2PS9eKD86KC4pPyhbPD49Xl0pKT8oWytcLVwoIF0pPyhbJCNdKT8oMCk/KFxkKyk/KCwpPyhcLlxkKyk/KFthLXolXSk/JC9pO2xyLnByb3RvdHlwZT1oci5wcm90b3R5cGUsaHIucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZmlsbCt0aGlzLmFsaWduK3RoaXMuc2lnbit0aGlzLnN5bWJvbCsodGhpcy56ZXJvPyIwIjoiIikrKG51bGw9PXRoaXMud2lkdGg/IiI6TWF0aC5tYXgoMSwwfHRoaXMud2lkdGgpKSsodGhpcy5jb21tYT8iLCI6IiIpKyhudWxsPT10aGlzLnByZWNpc2lvbj8iIjoiLiIrTWF0aC5tYXgoMCwwfHRoaXMucHJlY2lzaW9uKSkrdGhpcy50eXBlfTt2YXIgQnYsanY9ZnVuY3Rpb24odCl7cmV0dXJuIHR9LEh2PVsieSIsInoiLCJhIiwiZiIsInAiLCJuIiwiwrUiLCJtIiwiIiwiayIsIk0iLCJHIiwiVCIsIlAiLCJFIiwiWiIsIlkiXSxYdj1mdW5jdGlvbih0KXtmdW5jdGlvbiBuKHQpe2Z1bmN0aW9uIG4odCl7dmFyIG4saSxzLG09dix4PV87aWYoImMiPT09ZCl4PWcodCkreCx0PSIiO2Vsc2V7dD0rdDt2YXIgYj10PDA7aWYodD1nKE1hdGguYWJzKHQpLHApLGImJjA9PT0rdCYmKGI9ITEpLG09KGI/IigiPT09Yz9jOiItIjoiLSI9PT1jfHwiKCI9PT1jPyIiOmMpK20seD14KygicyI9PT1kP0h2WzgrVHYvM106IiIpKyhiJiYiKCI9PT1jPyIpIjoiIikseSlmb3Iobj0tMSxpPXQubGVuZ3RoOysrbjxpOylpZihzPXQuY2hhckNvZGVBdChuKSw0OD5zfHxzPjU3KXt4PSg0Nj09PXM/byt0LnNsaWNlKG4rMSk6dC5zbGljZShuKSkreCx0PXQuc2xpY2UoMCxuKTticmVha319aCYmIWYmJih0PXIodCwxLzApKTt2YXIgdz1tLmxlbmd0aCt0Lmxlbmd0aCt4Lmxlbmd0aCxNPXc8bD9uZXcgQXJyYXkobC13KzEpLmpvaW4oZSk6IiI7c3dpdGNoKGgmJmYmJih0PXIoTSt0LE0ubGVuZ3RoP2wteC5sZW5ndGg6MS8wKSxNPSIiKSxhKXtjYXNlIjwiOnQ9bSt0K3grTTticmVhaztjYXNlIj0iOnQ9bStNK3QreDticmVhaztjYXNlIl4iOnQ9TS5zbGljZSgwLHc9TS5sZW5ndGg+PjEpK20rdCt4K00uc2xpY2Uodyk7YnJlYWs7ZGVmYXVsdDp0PU0rbSt0K3h9cmV0dXJuIHUodCl9dD1scih0KTt2YXIgZT10LmZpbGwsYT10LmFsaWduLGM9dC5zaWduLHM9dC5zeW1ib2wsZj10Lnplcm8sbD10LndpZHRoLGg9dC5jb21tYSxwPXQucHJlY2lzaW9uLGQ9dC50eXBlLHY9IiQiPT09cz9pWzBdOiIjIj09PXMmJi9bYm94WF0vLnRlc3QoZCk/IjAiK2QudG9Mb3dlckNhc2UoKToiIixfPSIkIj09PXM/aVsxXTovWyVwXS8udGVzdChkKT8iJSI6IiIsZz1JdltkXSx5PSFkfHwvW2RlZmdwcnMlXS8udGVzdChkKTtyZXR1cm4gcD1udWxsPT1wP2Q/NjoxMjovW2dwcnNdLy50ZXN0KGQpP01hdGgubWF4KDEsTWF0aC5taW4oMjEscCkpOk1hdGgubWF4KDAsTWF0aC5taW4oMjAscCkpLG4udG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdCsiIn0sbn1mdW5jdGlvbiBlKHQsZSl7dmFyIHI9bigodD1scih0KSx0LnR5cGU9ImYiLHQpKSxpPTMqTWF0aC5tYXgoLTgsTWF0aC5taW4oOCxNYXRoLmZsb29yKEx2KGUpLzMpKSksbz1NYXRoLnBvdygxMCwtaSksdT1Idls4K2kvM107cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiByKG8qdCkrdX19dmFyIHI9dC5ncm91cGluZyYmdC50aG91c2FuZHM/cXYodC5ncm91cGluZyx0LnRob3VzYW5kcyk6anYsaT10LmN1cnJlbmN5LG89dC5kZWNpbWFsLHU9dC5udW1lcmFscz9Vdih0Lm51bWVyYWxzKTpqdjtyZXR1cm57Zm9ybWF0Om4sZm9ybWF0UHJlZml4OmV9fTtwcih7ZGVjaW1hbDoiLiIsdGhvdXNhbmRzOiIsIixncm91cGluZzpbM10sY3VycmVuY3k6WyIkIiwiIl19KTt2YXIgVnY9ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGgubWF4KDAsLUx2KE1hdGguYWJzKHQpKSl9LFd2PWZ1bmN0aW9uKHQsbil7cmV0dXJuIE1hdGgubWF4KDAsMypNYXRoLm1heCgtOCxNYXRoLm1pbig4LE1hdGguZmxvb3IoTHYobikvMykpKS1MdihNYXRoLmFicyh0KSkpfSwkdj1mdW5jdGlvbih0LG4pe3JldHVybiB0PU1hdGguYWJzKHQpLG49TWF0aC5hYnMobiktdCxNYXRoLm1heCgwLEx2KG4pLUx2KHQpKSsxfSxadj1mdW5jdGlvbigpe3JldHVybiBuZXcgZHJ9O2RyLnByb3RvdHlwZT17Y29uc3RydWN0b3I6ZHIscmVzZXQ6ZnVuY3Rpb24oKXt0aGlzLnM9dGhpcy50PTB9LGFkZDpmdW5jdGlvbih0KXt2cihOXyx0LHRoaXMudCksdnIodGhpcyxOXy5zLHRoaXMucyksdGhpcy5zP3RoaXMudCs9Tl8udDp0aGlzLnM9Tl8udH0sdmFsdWVPZjpmdW5jdGlvbigpe3JldHVybiB0aGlzLnN9fTt2YXIgR3YsSnYsUXYsS3YsdF8sbl8sZV8scl8saV8sb18sdV8sYV8sY18sc18sZl8sbF8saF8scF8sZF8sdl8sX18sZ18seV8sbV8seF8sYl8sd18sTV8sVF8sa18sU18sTl89bmV3IGRyLEVfPTFlLTYsQV89MWUtMTIsQ189TWF0aC5QSSx6Xz1DXy8yLFBfPUNfLzQsUl89MipDXyxMXz0xODAvQ18scV89Q18vMTgwLFVfPU1hdGguYWJzLERfPU1hdGguYXRhbixPXz1NYXRoLmF0YW4yLEZfPU1hdGguY29zLElfPU1hdGguY2VpbCxZXz1NYXRoLmV4cCxCXz1NYXRoLmxvZyxqXz1NYXRoLnBvdyxIXz1NYXRoLnNpbixYXz1NYXRoLnNpZ258fGZ1bmN0aW9uKHQpe3JldHVybiB0PjA/MTp0PDA/LTE6MH0sVl89TWF0aC5zcXJ0LFdfPU1hdGgudGFuLCRfPXtGZWF0dXJlOmZ1bmN0aW9uKHQsbil7eHIodC5nZW9tZXRyeSxuKX0sRmVhdHVyZUNvbGxlY3Rpb246ZnVuY3Rpb24odCxuKXtmb3IodmFyIGU9dC5mZWF0dXJlcyxyPS0xLGk9ZS5sZW5ndGg7KytyPGk7KXhyKGVbcl0uZ2VvbWV0cnksbil9fSxaXz17U3BoZXJlOmZ1bmN0aW9uKHQsbil7bi5zcGhlcmUoKX0sUG9pbnQ6ZnVuY3Rpb24odCxuKXt0PXQuY29vcmRpbmF0ZXMsbi5wb2ludCh0WzBdLHRbMV0sdFsyXSl9LE11bHRpUG9pbnQ6ZnVuY3Rpb24odCxuKXtmb3IodmFyIGU9dC5jb29yZGluYXRlcyxyPS0xLGk9ZS5sZW5ndGg7KytyPGk7KXQ9ZVtyXSxuLnBvaW50KHRbMF0sdFsxXSx0WzJdKX0sTGluZVN0cmluZzpmdW5jdGlvbih0LG4pe2JyKHQuY29vcmRpbmF0ZXMsbiwwKX0sTXVsdGlMaW5lU3RyaW5nOmZ1bmN0aW9uKHQsbil7Zm9yKHZhciBlPXQuY29vcmRpbmF0ZXMscj0tMSxpPWUubGVuZ3RoOysrcjxpOylicihlW3JdLG4sMCl9LFBvbHlnb246ZnVuY3Rpb24odCxuKXt3cih0LmNvb3JkaW5hdGVzLG4pfSxNdWx0aVBvbHlnb246ZnVuY3Rpb24odCxuKXtmb3IodmFyIGU9dC5jb29yZGluYXRlcyxyPS0xLGk9ZS5sZW5ndGg7KytyPGk7KXdyKGVbcl0sbil9LEdlb21ldHJ5Q29sbGVjdGlvbjpmdW5jdGlvbih0LG4pe2Zvcih2YXIgZT10Lmdlb21ldHJpZXMscj0tMSxpPWUubGVuZ3RoOysrcjxpOyl4cihlW3JdLG4pfX0sR189ZnVuY3Rpb24odCxuKXt0JiYkXy5oYXNPd25Qcm9wZXJ0eSh0LnR5cGUpPyRfW3QudHlwZV0odCxuKTp4cih0LG4pfSxKXz1adigpLFFfPVp2KCksS189e3BvaW50Om1yLGxpbmVTdGFydDptcixsaW5lRW5kOm1yLHBvbHlnb25TdGFydDpmdW5jdGlvbigpe0pfLnJlc2V0KCksS18ubGluZVN0YXJ0PU1yLEtfLmxpbmVFbmQ9VHJ9LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXt2YXIgdD0rSl87UV8uYWRkKHQ8MD9SXyt0OnQpLHRoaXMubGluZVN0YXJ0PXRoaXMubGluZUVuZD10aGlzLnBvaW50PW1yfSxzcGhlcmU6ZnVuY3Rpb24oKXtRXy5hZGQoUl8pfX0sdGc9ZnVuY3Rpb24odCl7cmV0dXJuIFFfLnJlc2V0KCksR18odCxLXyksMipRX30sbmc9WnYoKSxlZz17cG9pbnQ6THIsbGluZVN0YXJ0OlVyLGxpbmVFbmQ6RHIscG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7ZWcucG9pbnQ9T3IsZWcubGluZVN0YXJ0PUZyLGVnLmxpbmVFbmQ9SXIsbmcucmVzZXQoKSxLXy5wb2x5Z29uU3RhcnQoKX0scG9seWdvbkVuZDpmdW5jdGlvbigpe0tfLnBvbHlnb25FbmQoKSxlZy5wb2ludD1McixlZy5saW5lU3RhcnQ9VXIsZWcubGluZUVuZD1EcixKXzwwPyhuXz0tKHJfPTE4MCksZV89LShpXz05MCkpOm5nPkVfP2lfPTkwOm5nPC1FXyYmKGVfPS05MCksZl9bMF09bl8sZl9bMV09cl99fSxyZz1mdW5jdGlvbih0KXt2YXIgbixlLHIsaSxvLHUsYTtpZihpXz1yXz0tKG5fPWVfPTEvMCksc189W10sR18odCxlZyksZT1zXy5sZW5ndGgpe2ZvcihzXy5zb3J0KEJyKSxuPTEscj1zX1swXSxvPVtyXTtuPGU7KytuKWk9c19bbl0sanIocixpWzBdKXx8anIocixpWzFdKT8oWXIoclswXSxpWzFdKT5ZcihyWzBdLHJbMV0pJiYoclsxXT1pWzFdKSxZcihpWzBdLHJbMV0pPllyKHJbMF0sclsxXSkmJihyWzBdPWlbMF0pKTpvLnB1c2gocj1pKTtmb3IodT0tKDEvMCksZT1vLmxlbmd0aC0xLG49MCxyPW9bZV07bjw9ZTtyPWksKytuKWk9b1tuXSwoYT1ZcihyWzFdLGlbMF0pKT51JiYodT1hLG5fPWlbMF0scl89clsxXSl9cmV0dXJuIHNfPWZfPW51bGwsbl89PT0xLzB8fGVfPT09MS8wP1tbTmFOLE5hTl0sW05hTixOYU5dXTpbW25fLGVfXSxbcl8saV9dXX0saWc9e3NwaGVyZTptcixwb2ludDpIcixsaW5lU3RhcnQ6VnIsbGluZUVuZDpacixwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24oKXtpZy5saW5lU3RhcnQ9R3IsaWcubGluZUVuZD1Kcn0scG9seWdvbkVuZDpmdW5jdGlvbigpe2lnLmxpbmVTdGFydD1WcixpZy5saW5lRW5kPVpyfX0sb2c9ZnVuY3Rpb24odCl7bF89aF89cF89ZF89dl89X189Z189eV89bV89eF89Yl89MCxHXyh0LGlnKTt2YXIgbj1tXyxlPXhfLHI9Yl8saT1uKm4rZSplK3IqcjtyZXR1cm4gaTxBXyYmKG49X18sZT1nXyxyPXlfLGhfPEVfJiYobj1wXyxlPWRfLHI9dl8pLGk9bipuK2UqZStyKnIsaTxBXyk/W05hTixOYU5dOltPXyhlLG4pKkxfLGdyKHIvVl8oaSkpKkxfXX0sdWc9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fSxhZz1mdW5jdGlvbih0LG4pe2Z1bmN0aW9uIGUoZSxyKXtyZXR1cm4gZT10KGUsciksbihlWzBdLGVbMV0pfXJldHVybiB0LmludmVydCYmbi5pbnZlcnQmJihlLmludmVydD1mdW5jdGlvbihlLHIpe3JldHVybiBlPW4uaW52ZXJ0KGUsciksZSYmdC5pbnZlcnQoZVswXSxlWzFdKX0pLGV9O3RpLmludmVydD10aTt2YXIgY2csc2csZmcsbGcsaGcscGcsZGcsdmcsX2csZ2cseWcsbWc9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gbihuKXtyZXR1cm4gbj10KG5bMF0qcV8sblsxXSpxXyksblswXSo9TF8sblsxXSo9TF8sbn1yZXR1cm4gdD1uaSh0WzBdKnFfLHRbMV0qcV8sdC5sZW5ndGg+Mj90WzJdKnFfOjApLG4uaW52ZXJ0PWZ1bmN0aW9uKG4pe3JldHVybiBuPXQuaW52ZXJ0KG5bMF0qcV8sblsxXSpxXyksblswXSo9TF8sblsxXSo9TF8sbn0sbn0seGc9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsbil7ZS5wdXNoKHQ9cih0LG4pKSx0WzBdKj1MXyx0WzFdKj1MX31mdW5jdGlvbiBuKCl7dmFyIHQ9aS5hcHBseSh0aGlzLGFyZ3VtZW50cyksbj1vLmFwcGx5KHRoaXMsYXJndW1lbnRzKSpxXyxjPXUuYXBwbHkodGhpcyxhcmd1bWVudHMpKnFfO3JldHVybiBlPVtdLHI9bmkoLXRbMF0qcV8sLXRbMV0qcV8sMCkuaW52ZXJ0LG9pKGEsbixjLDEpLHQ9e3R5cGU6IlBvbHlnb24iLGNvb3JkaW5hdGVzOltlXX0sZT1yPW51bGwsdH12YXIgZSxyLGk9dWcoWzAsMF0pLG89dWcoOTApLHU9dWcoNiksYT17cG9pbnQ6dH07cmV0dXJuIG4uY2VudGVyPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6dWcoWyt0WzBdLCt0WzFdXSksbik6aX0sbi5yYWRpdXM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDp1ZygrdCksbik6b30sbi5wcmVjaXNpb249ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHU9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDp1ZygrdCksbik6dX0sbn0sYmc9ZnVuY3Rpb24oKXt2YXIgdCxuPVtdO3JldHVybntwb2ludDpmdW5jdGlvbihuLGUpe3QucHVzaChbbixlXSl9LGxpbmVTdGFydDpmdW5jdGlvbigpe24ucHVzaCh0PVtdKX0sbGluZUVuZDptcixyZWpvaW46ZnVuY3Rpb24oKXtuLmxlbmd0aD4xJiZuLnB1c2gobi5wb3AoKS5jb25jYXQobi5zaGlmdCgpKSl9LHJlc3VsdDpmdW5jdGlvbigpe3ZhciBlPW47cmV0dXJuIG49W10sdD1udWxsLGV9fX0sd2c9ZnVuY3Rpb24odCxuLGUscixpLG8pe3ZhciB1LGE9dFswXSxjPXRbMV0scz1uWzBdLGY9blsxXSxsPTAsaD0xLHA9cy1hLGQ9Zi1jO2lmKHU9ZS1hLHB8fCEodT4wKSl7aWYodS89cCxwPDApe2lmKHU8bClyZXR1cm47dTxoJiYoaD11KX1lbHNlIGlmKHA+MCl7aWYodT5oKXJldHVybjt1PmwmJihsPXUpfWlmKHU9aS1hLHB8fCEodTwwKSl7aWYodS89cCxwPDApe2lmKHU+aClyZXR1cm47dT5sJiYobD11KX1lbHNlIGlmKHA+MCl7aWYodTxsKXJldHVybjt1PGgmJihoPXUpfWlmKHU9ci1jLGR8fCEodT4wKSl7aWYodS89ZCxkPDApe2lmKHU8bClyZXR1cm47dTxoJiYoaD11KX1lbHNlIGlmKGQ+MCl7aWYodT5oKXJldHVybjt1PmwmJihsPXUpfWlmKHU9by1jLGR8fCEodTwwKSl7aWYodS89ZCxkPDApe2lmKHU+aClyZXR1cm47dT5sJiYobD11KX1lbHNlIGlmKGQ+MCl7aWYodTxsKXJldHVybjt1PGgmJihoPXUpfXJldHVybiBsPjAmJih0WzBdPWErbCpwLHRbMV09YytsKmQpLGg8MSYmKG5bMF09YStoKnAsblsxXT1jK2gqZCksITB9fX19fSxNZz1mdW5jdGlvbih0LG4pe3JldHVybiBVXyh0WzBdLW5bMF0pPEVfJiZVXyh0WzFdLW5bMV0pPEVffSxUZz1mdW5jdGlvbih0LG4sZSxyLGkpe3ZhciBvLHUsYT1bXSxjPVtdO2lmKHQuZm9yRWFjaChmdW5jdGlvbih0KXtpZighKChuPXQubGVuZ3RoLTEpPD0wKSl7dmFyIG4sZSxyPXRbMF0sdT10W25dO2lmKE1nKHIsdSkpe2ZvcihpLmxpbmVTdGFydCgpLG89MDtvPG47KytvKWkucG9pbnQoKHI9dFtvXSlbMF0sclsxXSk7cmV0dXJuIHZvaWQgaS5saW5lRW5kKCl9YS5wdXNoKGU9bmV3IGFpKHIsdCxudWxsLCEwKSksYy5wdXNoKGUubz1uZXcgYWkocixudWxsLGUsITEpKSxhLnB1c2goZT1uZXcgYWkodSx0LG51bGwsITEpKSxjLnB1c2goZS5vPW5ldyBhaSh1LG51bGwsZSwhMCkpfX0pLGEubGVuZ3RoKXtmb3IoYy5zb3J0KG4pLGNpKGEpLGNpKGMpLG89MCx1PWMubGVuZ3RoO288dTsrK28pY1tvXS5lPWU9IWU7Zm9yKHZhciBzLGYsbD1hWzBdOzspe2Zvcih2YXIgaD1sLHA9ITA7aC52OylpZigoaD1oLm4pPT09bClyZXR1cm47cz1oLnosaS5saW5lU3RhcnQoKTtkb3tpZihoLnY9aC5vLnY9ITAsaC5lKXtpZihwKWZvcihvPTAsdT1zLmxlbmd0aDtvPHU7KytvKWkucG9pbnQoKGY9c1tvXSlbMF0sZlsxXSk7ZWxzZSByKGgueCxoLm4ueCwxLGkpO2g9aC5ufWVsc2V7aWYocClmb3Iocz1oLnAueixvPXMubGVuZ3RoLTE7bz49MDstLW8paS5wb2ludCgoZj1zW29dKVswXSxmWzFdKTtlbHNlIHIoaC54LGgucC54LC0xLGkpO2g9aC5wfWg9aC5vLHM9aC56LHA9IXB9d2hpbGUoIWgudik7aS5saW5lRW5kKCl9fX0sa2c9MWU5LFNnPS1rZyxOZz1mdW5jdGlvbigpe3ZhciB0LG4sZSxyPTAsaT0wLG89OTYwLHU9NTAwO3JldHVybiBlPXtzdHJlYW06ZnVuY3Rpb24oZSl7cmV0dXJuIHQmJm49PT1lP3Q6dD1zaShyLGksbyx1KShuPWUpfSxleHRlbnQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9K2FbMF1bMF0saT0rYVswXVsxXSxvPSthWzFdWzBdLHU9K2FbMV1bMV0sdD1uPW51bGwsZSk6W1tyLGldLFtvLHVdXX19fSxFZz1adigpLEFnPWZ1bmN0aW9uKHQsbil7dmFyIGU9blswXSxyPW5bMV0saT1bSF8oZSksLUZfKGUpLDBdLG89MCx1PTA7RWcucmVzZXQoKTtmb3IodmFyIGE9MCxjPXQubGVuZ3RoO2E8YzsrK2EpaWYoZj0ocz10W2FdKS5sZW5ndGgpZm9yKHZhciBzLGYsbD1zW2YtMV0saD1sWzBdLHA9bFsxXS8yK1BfLGQ9SF8ocCksdj1GXyhwKSxfPTA7XzxmOysrXyxoPXksZD14LHY9YixsPWcpe3ZhciBnPXNbX10seT1nWzBdLG09Z1sxXS8yK1BfLHg9SF8obSksYj1GXyhtKSx3PXktaCxNPXc+PTA/MTotMSxUPU0qdyxrPVQ+Q18sUz1kKng7aWYoRWcuYWRkKE9fKFMqTSpIXyhUKSx2KmIrUypGXyhUKSkpLG8rPWs/dytNKlJfOncsa15oPj1lXnk+PWUpe3ZhciBOPUNyKEVyKGwpLEVyKGcpKTtScihOKTt2YXIgRT1DcihpLE4pO1JyKEUpO3ZhciBBPShrXnc+PTA/LTE6MSkqZ3IoRVsyXSk7KHI+QXx8cj09PUEmJihOWzBdfHxOWzFdKSkmJih1Kz1rXnc+PTA/MTotMSl9fXJldHVybihvPC1FX3x8bzxFXyYmRWc8LUVfKV4xJnV9LENnPVp2KCksemc9e3NwaGVyZTptcixwb2ludDptcixsaW5lU3RhcnQ6ZmksbGluZUVuZDptcixwb2x5Z29uU3RhcnQ6bXIscG9seWdvbkVuZDptcn0sUGc9ZnVuY3Rpb24odCl7cmV0dXJuIENnLnJlc2V0KCksR18odCx6ZyksK0NnfSxSZz1bbnVsbCxudWxsXSxMZz17dHlwZToiTGluZVN0cmluZyIsY29vcmRpbmF0ZXM6Umd9LHFnPWZ1bmN0aW9uKHQsbil7cmV0dXJuIFJnWzBdPXQsUmdbMV09bixQZyhMZyl9LFVnPXtGZWF0dXJlOmZ1bmN0aW9uKHQsbil7cmV0dXJuIGRpKHQuZ2VvbWV0cnksbil9LEZlYXR1cmVDb2xsZWN0aW9uOmZ1bmN0aW9uKHQsbil7Zm9yKHZhciBlPXQuZmVhdHVyZXMscj0tMSxpPWUubGVuZ3RoOysrcjxpOylpZihkaShlW3JdLmdlb21ldHJ5LG4pKXJldHVybiEwO3JldHVybiExfX0sRGc9e1NwaGVyZTpmdW5jdGlvbigpe3JldHVybiEwfSxQb2ludDpmdW5jdGlvbih0LG4pe3JldHVybiB2aSh0LmNvb3JkaW5hdGVzLG4pfSxNdWx0aVBvaW50OmZ1bmN0aW9uKHQsbil7Zm9yKHZhciBlPXQuY29vcmRpbmF0ZXMscj0tMSxpPWUubGVuZ3RoOysrcjxpOylpZih2aShlW3JdLG4pKXJldHVybiEwO3JldHVybiExfSxMaW5lU3RyaW5nOmZ1bmN0aW9uKHQsbil7cmV0dXJuIF9pKHQuY29vcmRpbmF0ZXMsbil9LE11bHRpTGluZVN0cmluZzpmdW5jdGlvbih0LG4pe2Zvcih2YXIgZT10LmNvb3JkaW5hdGVzLHI9LTEsaT1lLmxlbmd0aDsrK3I8aTspaWYoX2koZVtyXSxuKSlyZXR1cm4hMDtyZXR1cm4hMX0sUG9seWdvbjpmdW5jdGlvbih0LG4pe3JldHVybiBnaSh0LmNvb3JkaW5hdGVzLG4pfSxNdWx0aVBvbHlnb246ZnVuY3Rpb24odCxuKXtmb3IodmFyIGU9dC5jb29yZGluYXRlcyxyPS0xLGk9ZS5sZW5ndGg7KytyPGk7KWlmKGdpKGVbcl0sbikpcmV0dXJuITA7cmV0dXJuITF9LEdlb21ldHJ5Q29sbGVjdGlvbjpmdW5jdGlvbih0LG4pe2Zvcih2YXIgZT10Lmdlb21ldHJpZXMscj0tMSxpPWUubGVuZ3RoOysrcjxpOylpZihkaShlW3JdLG4pKXJldHVybiEwO3JldHVybiExfX0sT2c9ZnVuY3Rpb24odCxuKXtyZXR1cm4odCYmVWcuaGFzT3duUHJvcGVydHkodC50eXBlKT9VZ1t0LnR5cGVdOmRpKSh0LG4pfSxGZz1mdW5jdGlvbih0LG4pe3ZhciBlPXRbMF0qcV8scj10WzFdKnFfLGk9blswXSpxXyxvPW5bMV0qcV8sdT1GXyhyKSxhPUhfKHIpLGM9Rl8obykscz1IXyhvKSxmPXUqRl8oZSksbD11KkhfKGUpLGg9YypGXyhpKSxwPWMqSF8oaSksZD0yKmdyKFZfKHlyKG8tcikrdSpjKnlyKGktZSkpKSx2PUhfKGQpLF89ZD9mdW5jdGlvbih0KXt2YXIgbj1IXyh0Kj1kKS92LGU9SF8oZC10KS92LHI9ZSpmK24qaCxpPWUqbCtuKnAsbz1lKmErbipzO3JldHVybltPXyhpLHIpKkxfLE9fKG8sVl8ocipyK2kqaSkpKkxfXX06ZnVuY3Rpb24oKXtyZXR1cm5bZSpMXyxyKkxfXX07cmV0dXJuIF8uZGlzdGFuY2U9ZCxffSxJZz1mdW5jdGlvbih0KXtyZXR1cm4gdH0sWWc9WnYoKSxCZz1adigpLGpnPXtwb2ludDptcixsaW5lU3RhcnQ6bXIsbGluZUVuZDptcixwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24oKXtqZy5saW5lU3RhcnQ9VGksamcubGluZUVuZD1OaX0scG9seWdvbkVuZDpmdW5jdGlvbigpe2pnLmxpbmVTdGFydD1qZy5saW5lRW5kPWpnLnBvaW50PW1yLFlnLmFkZChVXyhCZykpLEJnLnJlc2V0KCl9LHJlc3VsdDpmdW5jdGlvbigpe3ZhciB0PVlnLzI7cmV0dXJuIFlnLnJlc2V0KCksdH19LEhnPTEvMCxYZz1IZyxWZz0tSGcsV2c9VmcsJGc9e3BvaW50OkVpLGxpbmVTdGFydDptcixsaW5lRW5kOm1yLHBvbHlnb25TdGFydDptcixwb2x5Z29uRW5kOm1yLHJlc3VsdDpmdW5jdGlvbigpe3ZhciB0PVtbSGcsWGddLFtWZyxXZ11dO3JldHVybiBWZz1XZz0tKFhnPUhnPTEvMCksdH19LFpnPTAsR2c9MCxKZz0wLFFnPTAsS2c9MCx0eT0wLG55PTAsZXk9MCxyeT0wLGl5PXtwb2ludDpBaSxsaW5lU3RhcnQ6Q2ksbGluZUVuZDpSaSxwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24oKXtpeS5saW5lU3RhcnQ9TGksaXkubGluZUVuZD1xaX0scG9seWdvbkVuZDpmdW5jdGlvbigpe2l5LnBvaW50PUFpLGl5LmxpbmVTdGFydD1DaSxpeS5saW5lRW5kPVJpfSxyZXN1bHQ6ZnVuY3Rpb24oKXt2YXIgdD1yeT9bbnkvcnksZXkvcnldOnR5P1tRZy90eSxLZy90eV06Smc/W1pnL0pnLEdnL0pnXTpbTmFOLE5hTl07cmV0dXJuIFpnPUdnPUpnPVFnPUtnPXR5PW55PWV5PXJ5PTAsdH19O09pLnByb3RvdHlwZT17X3JhZGl1czo0LjUscG9pbnRSYWRpdXM6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3JhZGl1cz10LHRoaXN9LHBvbHlnb25TdGFydDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9MH0scG9seWdvbkVuZDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9TmFOfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7MD09PXRoaXMuX2xpbmUmJnRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCksdGhpcy5fcG9pbnQ9TmFOfSxwb2ludDpmdW5jdGlvbih0LG4pe3N3aXRjaCh0aGlzLl9wb2ludCl7Y2FzZSAwOnRoaXMuX2NvbnRleHQubW92ZVRvKHQsbiksdGhpcy5fcG9pbnQ9MTticmVhaztjYXNlIDE6dGhpcy5fY29udGV4dC5saW5lVG8odCxuKTticmVhaztkZWZhdWx0OnRoaXMuX2NvbnRleHQubW92ZVRvKHQrdGhpcy5fcmFkaXVzLG4pLHRoaXMuX2NvbnRleHQuYXJjKHQsbix0aGlzLl9yYWRpdXMsMCxSXyl9fSxyZXN1bHQ6bXJ9O3ZhciBveSx1eSxheSxjeSxzeSxmeT1adigpLGx5PXtwb2ludDptcixsaW5lU3RhcnQ6ZnVuY3Rpb24oKXtseS5wb2ludD1GaX0sbGluZUVuZDpmdW5jdGlvbigpe295JiZJaSh1eSxheSksbHkucG9pbnQ9bXJ9LHBvbHlnb25TdGFydDpmdW5jdGlvbigpe295PSEwfSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7b3k9bnVsbH0scmVzdWx0OmZ1bmN0aW9uKCl7dmFyIHQ9K2Z5O3JldHVybiBmeS5yZXNldCgpLHR9fTtZaS5wcm90b3R5cGU9e19jaXJjbGU6QmkoNC41KSxwb2ludFJhZGl1czpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fY2lyY2xlPUJpKHQpLHRoaXN9LHBvbHlnb25TdGFydDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9MH0scG9seWdvbkVuZDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9TmFOfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7MD09PXRoaXMuX2xpbmUmJnRoaXMuX3N0cmluZy5wdXNoKCJaIiksdGhpcy5fcG9pbnQ9TmFOfSxwb2ludDpmdW5jdGlvbih0LG4pe3N3aXRjaCh0aGlzLl9wb2ludCl7Y2FzZSAwOnRoaXMuX3N0cmluZy5wdXNoKCJNIix0LCIsIixuKSx0aGlzLl9wb2ludD0xO2JyZWFrO2Nhc2UgMTp0aGlzLl9zdHJpbmcucHVzaCgiTCIsdCwiLCIsbik7YnJlYWs7ZGVmYXVsdDp0aGlzLl9zdHJpbmcucHVzaCgiTSIsdCwiLCIsbix0aGlzLl9jaXJjbGUpfX0scmVzdWx0OmZ1bmN0aW9uKCl7aWYodGhpcy5fc3RyaW5nLmxlbmd0aCl7dmFyIHQ9dGhpcy5fc3RyaW5nLmpvaW4oIiIpO3JldHVybiB0aGlzLl9zdHJpbmc9W10sdH19fTt2YXIgaHk9ZnVuY3Rpb24odCxuKXtmdW5jdGlvbiBlKHQpe3JldHVybiB0JiYoImZ1bmN0aW9uIj09dHlwZW9mIG8mJmkucG9pbnRSYWRpdXMoK28uYXBwbHkodGhpcyxhcmd1bWVudHMpKSxHXyh0LHIoaSkpKSxpLnJlc3VsdCgpfXZhciByLGksbz00LjU7cmV0dXJuIGUuYXJlYT1mdW5jdGlvbih0KXtyZXR1cm4gR18odCxyKGpnKSksamcucmVzdWx0KCl9LGUubWVhc3VyZT1mdW5jdGlvbih0KXtyZXR1cm4gR18odCxyKGx5KSksbHkucmVzdWx0KCl9LGUuYm91bmRzPWZ1bmN0aW9uKHQpe3JldHVybiBHXyh0LHIoJGcpKSwkZy5yZXN1bHQoKX0sZS5jZW50cm9pZD1mdW5jdGlvbih0KXtyZXR1cm4gR18odCxyKGl5KSksaXkucmVzdWx0KCl9LGUucHJvamVjdGlvbj1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj1udWxsPT1uPyh0PW51bGwsSWcpOih0PW4pLnN0cmVhbSxlKTp0fSxlLmNvbnRleHQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9bnVsbD09dD8obj1udWxsLG5ldyBZaSk6bmV3IE9pKG49dCksImZ1bmN0aW9uIiE9dHlwZW9mIG8mJmkucG9pbnRSYWRpdXMobyksZSk6bn0sZS5wb2ludFJhZGl1cz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz0iZnVuY3Rpb24iPT10eXBlb2YgdD90OihpLnBvaW50UmFkaXVzKCt0KSwrdCksZSk6b30sZS5wcm9qZWN0aW9uKHQpLmNvbnRleHQobil9LHB5PWZ1bmN0aW9uKHQsbixlLHIpe3JldHVybiBmdW5jdGlvbihpLG8pe2Z1bmN0aW9uIHUobixlKXt2YXIgcj1pKG4sZSk7dChuPXJbMF0sZT1yWzFdKSYmby5wb2ludChuLGUpfWZ1bmN0aW9uIGEodCxuKXt2YXIgZT1pKHQsbik7Xy5wb2ludChlWzBdLGVbMV0pfWZ1bmN0aW9uIGMoKXtiLnBvaW50PWEsXy5saW5lU3RhcnQoKX1mdW5jdGlvbiBzKCl7Yi5wb2ludD11LF8ubGluZUVuZCgpfWZ1bmN0aW9uIGYodCxuKXt2LnB1c2goW3Qsbl0pO3ZhciBlPWkodCxuKTttLnBvaW50KGVbMF0sZVsxXSl9ZnVuY3Rpb24gbCgpe20ubGluZVN0YXJ0KCksdj1bXX1mdW5jdGlvbiBoKCl7Zih2WzBdWzBdLHZbMF1bMV0pLG0ubGluZUVuZCgpO3ZhciB0LG4sZSxyLGk9bS5jbGVhbigpLHU9eS5yZXN1bHQoKSxhPXUubGVuZ3RoO2lmKHYucG9wKCkscC5wdXNoKHYpLHY9bnVsbCxhKWlmKDEmaSl7aWYoZT11WzBdLChuPWUubGVuZ3RoLTEpPjApe2Zvcih4fHwoby5wb2x5Z29uU3RhcnQoKSx4PSEwKSxvLmxpbmVTdGFydCgpLHQ9MDt0PG47Kyt0KW8ucG9pbnQoKHI9ZVt0XSlbMF0sclsxXSk7by5saW5lRW5kKCl9fWVsc2UgYT4xJiYyJmkmJnUucHVzaCh1LnBvcCgpLmNvbmNhdCh1LnNoaWZ0KCkpKSxkLnB1c2godS5maWx0ZXIoamkpKX12YXIgcCxkLHYsXz1uKG8pLGc9aS5pbnZlcnQoclswXSxyWzFdKSx5PWJnKCksbT1uKHkpLHg9ITEsYj17cG9pbnQ6dSxsaW5lU3RhcnQ6YyxsaW5lRW5kOnMscG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7Yi5wb2ludD1mLGIubGluZVN0YXJ0PWwsYi5saW5lRW5kPWgsZD1bXSxwPVtdfSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7Yi5wb2ludD11LGIubGluZVN0YXJ0PWMsYi5saW5lRW5kPXMsZD1oZihkKTt2YXIgdD1BZyhwLGcpO2QubGVuZ3RoPyh4fHwoby5wb2x5Z29uU3RhcnQoKSx4PSEwKSxUZyhkLEhpLHQsZSxvKSk6dCYmKHh8fChvLnBvbHlnb25TdGFydCgpLHg9ITApLG8ubGluZVN0YXJ0KCksZShudWxsLG51bGwsMSxvKSxvLmxpbmVFbmQoKSkseCYmKG8ucG9seWdvbkVuZCgpLHg9ITEpLGQ9cD1udWxsfSxzcGhlcmU6ZnVuY3Rpb24oKXtvLnBvbHlnb25TdGFydCgpLG8ubGluZVN0YXJ0KCksZShudWxsLG51bGwsMSxvKSxvLmxpbmVFbmQoKSxvLnBvbHlnb25FbmQoKX19O3JldHVybiBifX0sZHk9cHkoZnVuY3Rpb24oKXtyZXR1cm4hMH0sWGksV2ksWy1DXywtel9dKSx2eT1mdW5jdGlvbih0LG4pe2Z1bmN0aW9uIGUoZSxyLGksbyl7b2kobyx0LG4saSxlLHIpfWZ1bmN0aW9uIHIodCxuKXtyZXR1cm4gRl8odCkqRl8obik+YX1mdW5jdGlvbiBpKHQpe3ZhciBuLGUsaSxhLGY7cmV0dXJue2xpbmVTdGFydDpmdW5jdGlvbigpe2E9aT0hMSxmPTF9LHBvaW50OmZ1bmN0aW9uKGwsaCl7dmFyIHAsZD1bbCxoXSx2PXIobCxoKSxfPWM/dj8wOnUobCxoKTp2P3UobCsobDwwP0NfOi1DXyksaCk6MDtpZighbiYmKGE9aT12KSYmdC5saW5lU3RhcnQoKSx2IT09aSYmKHA9byhuLGQpLChNZyhuLHApfHxNZyhkLHApKSYmKGRbMF0rPUVfLGRbMV0rPUVfLHY9cihkWzBdLGRbMV0pKSksdiE9PWkpZj0wLHY/KHQubGluZVN0YXJ0KCkscD1vKGQsbiksdC5wb2ludChwWzBdLHBbMV0pKToocD1vKG4sZCksdC5wb2ludChwWzBdLHBbMV0pLHQubGluZUVuZCgpKSxuPXA7ZWxzZSBpZihzJiZuJiZjXnYpe3ZhciBnO18mZXx8IShnPW8oZCxuLCEwKSl8fChmPTAsYz8odC5saW5lU3RhcnQoKSx0LnBvaW50KGdbMF1bMF0sZ1swXVsxXSksdC5wb2ludChnWzFdWzBdLGdbMV1bMV0pLHQubGluZUVuZCgpKToodC5wb2ludChnWzFdWzBdLGdbMV1bMV0pLHQubGluZUVuZCgpLHQubGluZVN0YXJ0KCksdC5wb2ludChnWzBdWzBdLGdbMF1bMV0pKSl9IXZ8fG4mJk1nKG4sZCl8fHQucG9pbnQoZFswXSxkWzFdKSxuPWQsaT12LGU9X30sbGluZUVuZDpmdW5jdGlvbigpe2kmJnQubGluZUVuZCgpLG49bnVsbH0sY2xlYW46ZnVuY3Rpb24oKXtyZXR1cm4gZnwoYSYmaSk8PDF9fX1mdW5jdGlvbiBvKHQsbixlKXt2YXIgcj1Fcih0KSxpPUVyKG4pLG89WzEsMCwwXSx1PUNyKHIsaSksYz1Bcih1LHUpLHM9dVswXSxmPWMtcypzO2lmKCFmKXJldHVybiFlJiZ0O3ZhciBsPWEqYy9mLGg9LWEqcy9mLHA9Q3Iobyx1KSxkPVByKG8sbCk7enIoZCxQcih1LGgpKTt2YXIgdj1wLF89QXIoZCx2KSxnPUFyKHYsdikseT1fKl8tZyooQXIoZCxkKS0xKTtpZighKHk8MCkpe3ZhciBtPVZfKHkpLHg9UHIodiwoLV8tbSkvZyk7aWYoenIoeCxkKSx4PU5yKHgpLCFlKXJldHVybiB4O3ZhciBiLHc9dFswXSxNPW5bMF0sVD10WzFdLGs9blsxXTtNPHcmJihiPXcsdz1NLE09Yik7dmFyIFM9TS13LE49VV8oUy1DXyk8RV8sRT1OfHxTPEVfO2lmKCFOJiZrPFQmJihiPVQsVD1rLGs9YiksRT9OP1Qraz4wXnhbMV08KFVfKHhbMF0tdyk8RV8/VDprKTpUPD14WzFdJiZ4WzFdPD1rOlM+Q19eKHc8PXhbMF0mJnhbMF08PU0pKXt2YXIgQT1Qcih2LCgtXyttKS9nKTtyZXR1cm4genIoQSxkKSxbeCxOcihBKV19fX1mdW5jdGlvbiB1KG4sZSl7dmFyIHI9Yz90OkNfLXQsaT0wO3JldHVybiBuPC1yP2l8PTE6bj5yJiYoaXw9MiksZTwtcj9pfD00OmU+ciYmKGl8PTgpLGl9dmFyIGE9Rl8odCksYz1hPjAscz1VXyhhKT5FXztyZXR1cm4gcHkocixpLGUsYz9bMCwtdF06Wy1DXyx0LUNfXSl9LF95PWZ1bmN0aW9uKHQpe3JldHVybntzdHJlYW06JGkodCl9fTtaaS5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOlppLHBvaW50OmZ1bmN0aW9uKHQsbil7dGhpcy5zdHJlYW0ucG9pbnQodCxuKX0sc3BoZXJlOmZ1bmN0aW9uKCl7dGhpcy5zdHJlYW0uc3BoZXJlKCl9LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuc3RyZWFtLmxpbmVTdGFydCgpfSxsaW5lRW5kOmZ1bmN0aW9uKCl7dGhpcy5zdHJlYW0ubGluZUVuZCgpfSxwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLnN0cmVhbS5wb2x5Z29uU3RhcnQoKX0scG9seWdvbkVuZDpmdW5jdGlvbigpe3RoaXMuc3RyZWFtLnBvbHlnb25FbmQoKX19O3ZhciBneT0xNix5eT1GXygzMCpxXyksbXk9ZnVuY3Rpb24odCxuKXtyZXR1cm4rbj9LaSh0LG4pOlFpKHQpfSx4eT0kaSh7cG9pbnQ6ZnVuY3Rpb24odCxuKXt0aGlzLnN0cmVhbS5wb2ludCh0KnFfLG4qcV8pfX0pLGJ5PWZ1bmN0aW9uKCl7cmV0dXJuIGVvKGlvKS5zY2FsZSgxNTUuNDI0KS5jZW50ZXIoWzAsMzMuNjQ0Ml0pfSx3eT1mdW5jdGlvbigpe3JldHVybiBieSgpLnBhcmFsbGVscyhbMjkuNSw0NS41XSkuc2NhbGUoMTA3MCkudHJhbnNsYXRlKFs0ODAsMjUwXSkucm90YXRlKFs5NiwwXSkuY2VudGVyKFstLjYsMzguN10pfSxNeT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dmFyIG49dFswXSxlPXRbMV07cmV0dXJuIGE9bnVsbCxpLnBvaW50KG4sZSksYXx8KG8ucG9pbnQobixlKSxhKXx8KHUucG9pbnQobixlKSxhKX1mdW5jdGlvbiBuKCl7cmV0dXJuIGU9cj1udWxsLHR9dmFyIGUscixpLG8sdSxhLGM9d3koKSxzPWJ5KCkucm90YXRlKFsxNTQsMF0pLmNlbnRlcihbLTIsNTguNV0pLnBhcmFsbGVscyhbNTUsNjVdKSxmPWJ5KCkucm90YXRlKFsxNTcsMF0pLmNlbnRlcihbLTMsMTkuOV0pLnBhcmFsbGVscyhbOCwxOF0pLGw9e3BvaW50OmZ1bmN0aW9uKHQsbil7YT1bdCxuXX19O3JldHVybiB0LmludmVydD1mdW5jdGlvbih0KXt2YXIgbj1jLnNjYWxlKCksZT1jLnRyYW5zbGF0ZSgpLHI9KHRbMF0tZVswXSkvbixpPSh0WzFdLWVbMV0pL247cmV0dXJuKGk+PS4xMiYmaTwuMjM0JiZyPj0tLjQyNSYmcjwtLjIxND9zOmk+PS4xNjYmJmk8LjIzNCYmcj49LS4yMTQmJnI8LS4xMTU/ZjpjKS5pbnZlcnQodCl9LHQuc3RyZWFtPWZ1bmN0aW9uKHQpe3JldHVybiBlJiZyPT09dD9lOmU9b28oW2Muc3RyZWFtKHI9dCkscy5zdHJlYW0odCksZi5zdHJlYW0odCldKX0sdC5wcmVjaXNpb249ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGMucHJlY2lzaW9uKHQpLHMucHJlY2lzaW9uKHQpLGYucHJlY2lzaW9uKHQpLG4oKSk6Yy5wcmVjaXNpb24oKX0sdC5zY2FsZT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYy5zY2FsZShuKSxzLnNjYWxlKC4zNSpuKSxmLnNjYWxlKG4pLHQudHJhbnNsYXRlKGMudHJhbnNsYXRlKCkpKTpjLnNjYWxlKCl9LHQudHJhbnNsYXRlPWZ1bmN0aW9uKHQpe2lmKCFhcmd1bWVudHMubGVuZ3RoKXJldHVybiBjLnRyYW5zbGF0ZSgpO3ZhciBlPWMuc2NhbGUoKSxyPSt0WzBdLGE9K3RbMV07cmV0dXJuIGk9Yy50cmFuc2xhdGUodCkuY2xpcEV4dGVudChbW3ItLjQ1NSplLGEtLjIzOCplXSxbcisuNDU1KmUsYSsuMjM4KmVdXSkuc3RyZWFtKGwpLG89cy50cmFuc2xhdGUoW3ItLjMwNyplLGErLjIwMSplXSkuY2xpcEV4dGVudChbW3ItLjQyNSplK0VfLGErLjEyKmUrRV9dLFtyLS4yMTQqZS1FXyxhKy4yMzQqZS1FX11dKS5zdHJlYW0obCksdT1mLnRyYW5zbGF0ZShbci0uMjA1KmUsYSsuMjEyKmVdKS5jbGlwRXh0ZW50KFtbci0uMjE0KmUrRV8sYSsuMTY2KmUrRV9dLFtyLS4xMTUqZS1FXyxhKy4yMzQqZS1FX11dKS5zdHJlYW0obCksbigpfSx0LmZpdEV4dGVudD1mdW5jdGlvbihuLGUpe3JldHVybiBHaSh0LG4sZSl9LHQuZml0U2l6ZT1mdW5jdGlvbihuLGUpe3JldHVybiBKaSh0LG4sZSl9LHQuc2NhbGUoMTA3MCl9LFR5PXVvKGZ1bmN0aW9uKHQpe3JldHVybiBWXygyLygxK3QpKX0pO1R5LmludmVydD1hbyhmdW5jdGlvbih0KXtyZXR1cm4gMipncih0LzIpfSk7dmFyIGt5PWZ1bmN0aW9uKCl7cmV0dXJuIHRvKFR5KS5zY2FsZSgxMjQuNzUpLmNsaXBBbmdsZSgxNzkuOTk5KX0sU3k9dW8oZnVuY3Rpb24odCl7cmV0dXJuKHQ9X3IodCkpJiZ0L0hfKHQpfSk7U3kuaW52ZXJ0PWFvKGZ1bmN0aW9uKHQpe3JldHVybiB0fSk7dmFyIE55PWZ1bmN0aW9uKCl7cmV0dXJuIHRvKFN5KS5zY2FsZSg3OS40MTg4KS5jbGlwQW5nbGUoMTc5Ljk5OSl9O2NvLmludmVydD1mdW5jdGlvbih0LG4pe3JldHVyblt0LDIqRF8oWV8obikpLXpfXX07dmFyIEV5PWZ1bmN0aW9uKCl7cmV0dXJuIHNvKGNvKS5zY2FsZSg5NjEvUl8pfSxBeT1mdW5jdGlvbigpe3JldHVybiBlbyhsbykuc2NhbGUoMTA5LjUpLnBhcmFsbGVscyhbMzAsMzBdKX07aG8uaW52ZXJ0PWhvO3ZhciBDeT1mdW5jdGlvbigpe3JldHVybiB0byhobykuc2NhbGUoMTUyLjYzKX0senk9ZnVuY3Rpb24oKXtyZXR1cm4gZW8ocG8pLnNjYWxlKDEzMS4xNTQpLmNlbnRlcihbMCwxMy45Mzg5XSl9O3ZvLmludmVydD1hbyhEXyk7dmFyIFB5PWZ1bmN0aW9uKCl7cmV0dXJuIHRvKHZvKS5zY2FsZSgxNDQuMDQ5KS5jbGlwQW5nbGUoNjApfSxSeT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXtyZXR1cm4gaT1vPW51bGwsdX12YXIgbixlLHIsaSxvLHUsYT0xLGM9MCxzPTAsZj0xLGw9MSxoPUlnLHA9bnVsbCxkPUlnO3JldHVybiB1PXtzdHJlYW06ZnVuY3Rpb24odCl7cmV0dXJuIGkmJm89PT10P2k6aT1oKGQobz10KSl9LGNsaXBFeHRlbnQ6ZnVuY3Rpb24oaSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGQ9bnVsbD09aT8ocD1uPWU9cj1udWxsLElnKTpzaShwPStpWzBdWzBdLG49K2lbMF1bMV0sZT0raVsxXVswXSxyPStpWzFdWzFdKSx0KCkpOm51bGw9PXA/bnVsbDpbW3Asbl0sW2Uscl1dfSxzY2FsZTpmdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaD1fbygoYT0rbikqZixhKmwsYyxzKSx0KCkpOmF9LHRyYW5zbGF0ZTpmdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaD1fbyhhKmYsYSpsLGM9K25bMF0scz0rblsxXSksdCgpKTpbYyxzXX0scmVmbGVjdFg6ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGg9X28oYSooZj1uPy0xOjEpLGEqbCxjLHMpLHQoKSk6ZjwwfSxyZWZsZWN0WTpmdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaD1fbyhhKmYsYSoobD1uPy0xOjEpLGMscyksdCgpKTpsPDB9LGZpdEV4dGVudDpmdW5jdGlvbih0LG4pe3JldHVybiBHaSh1LHQsbil9LGZpdFNpemU6ZnVuY3Rpb24odCxuKXtyZXR1cm4gSmkodSx0LG4pfX19O2dvLmludmVydD1hbyhncik7dmFyIEx5PWZ1bmN0aW9uKCl7cmV0dXJuIHRvKGdvKS5zY2FsZSgyNDkuNSkuY2xpcEFuZ2xlKDkwK0VfKX07eW8uaW52ZXJ0PWFvKGZ1bmN0aW9uKHQpe3JldHVybiAyKkRfKHQpfSk7dmFyIHF5PWZ1bmN0aW9uKCl7cmV0dXJuIHRvKHlvKS5zY2FsZSgyNTApLmNsaXBBbmdsZSgxNDIpfTttby5pbnZlcnQ9ZnVuY3Rpb24odCxuKXtyZXR1cm5bLW4sMipEXyhZXyh0KSktel9dfTt2YXIgVXk9ZnVuY3Rpb24oKXt2YXIgdD1zbyhtbyksbj10LmNlbnRlcixlPXQucm90YXRlO3JldHVybiB0LmNlbnRlcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD9uKFstdFsxXSx0WzBdXSk6KHQ9bigpLFt0WzFdLC10WzBdXSl9LHQucm90YXRlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP2UoW3RbMF0sdFsxXSx0Lmxlbmd0aD4yP3RbMl0rOTA6OTBdKToodD1lKCksW3RbMF0sdFsxXSx0WzJdLTkwXSl9LGUoWzAsMCw5MF0pLnNjYWxlKDE1OS4xNTUpfSxEeT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dmFyIG8sdT0wO3QuZWFjaEFmdGVyKGZ1bmN0aW9uKHQpe3ZhciBlPXQuY2hpbGRyZW47ZT8odC54PWJvKGUpLHQueT1NbyhlKSk6KHQueD1vP3UrPW4odCxvKTowLHQueT0wLG89dCl9KTt2YXIgYT1rbyh0KSxjPVNvKHQpLHM9YS54LW4oYSxjKS8yLGY9Yy54K24oYyxhKS8yO3JldHVybiB0LmVhY2hBZnRlcihpP2Z1bmN0aW9uKG4pe24ueD0obi54LXQueCkqZSxuLnk9KHQueS1uLnkpKnJ9OmZ1bmN0aW9uKG4pe24ueD0obi54LXMpLyhmLXMpKmUsbi55PSgxLSh0Lnk/bi55L3QueToxKSkqcn0pfXZhciBuPXhvLGU9MSxyPTEsaT0hMTtyZXR1cm4gdC5zZXBhcmF0aW9uPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPWUsdCk6bn0sdC5zaXplPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPSExLGU9K25bMF0scj0rblsxXSx0KTppP251bGw6W2Uscl19LHQubm9kZVNpemU9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9ITAsZT0rblswXSxyPStuWzFdLHQpOmk/W2Uscl06bnVsbH0sdH0sT3k9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lYWNoQWZ0ZXIoTm8pfSxGeT1mdW5jdGlvbih0KXt2YXIgbixlLHIsaSxvPXRoaXMsdT1bb107ZG8gZm9yKG49dS5yZXZlcnNlKCksdT1bXTtvPW4ucG9wKCk7KWlmKHQobyksZT1vLmNoaWxkcmVuKWZvcihyPTAsaT1lLmxlbmd0aDtyPGk7KytyKXUucHVzaChlW3JdKTt3aGlsZSh1Lmxlbmd0aCk7cmV0dXJuIHRoaXN9LEl5PWZ1bmN0aW9uKHQpe2Zvcih2YXIgbixlLHI9dGhpcyxpPVtyXTtyPWkucG9wKCk7KWlmKHQociksbj1yLmNoaWxkcmVuKWZvcihlPW4ubGVuZ3RoLTE7ZT49MDstLWUpaS5wdXNoKG5bZV0pO3JldHVybiB0aGlzfSxZeT1mdW5jdGlvbih0KXtmb3IodmFyIG4sZSxyLGk9dGhpcyxvPVtpXSx1PVtdO2k9by5wb3AoKTspaWYodS5wdXNoKGkpLG49aS5jaGlsZHJlbilmb3IoZT0wLHI9bi5sZW5ndGg7ZTxyOysrZSlvLnB1c2gobltlXSk7Zm9yKDtpPXUucG9wKCk7KXQoaSk7cmV0dXJuIHRoaXN9LEJ5PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmVhY2hBZnRlcihmdW5jdGlvbihuKXtmb3IodmFyIGU9K3Qobi5kYXRhKXx8MCxyPW4uY2hpbGRyZW4saT1yJiZyLmxlbmd0aDstLWk+PTA7KWUrPXJbaV0udmFsdWU7bi52YWx1ZT1lfSl9LGp5PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmVhY2hCZWZvcmUoZnVuY3Rpb24obil7bi5jaGlsZHJlbiYmbi5jaGlsZHJlbi5zb3J0KHQpfSl9LEh5PWZ1bmN0aW9uKHQpe2Zvcih2YXIgbj10aGlzLGU9RW8obix0KSxyPVtuXTtuIT09ZTspbj1uLnBhcmVudCxyLnB1c2gobik7Zm9yKHZhciBpPXIubGVuZ3RoO3QhPT1lOylyLnNwbGljZShpLDAsdCksdD10LnBhcmVudDtyZXR1cm4gcn0sWHk9ZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpcyxuPVt0XTt0PXQucGFyZW50OyluLnB1c2godCk7cmV0dXJuIG59LFZ5PWZ1bmN0aW9uKCl7dmFyIHQ9W107cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihuKXt0LnB1c2gobil9KSx0fSxXeT1mdW5jdGlvbigpe3ZhciB0PVtdO3JldHVybiB0aGlzLmVhY2hCZWZvcmUoZnVuY3Rpb24obil7bi5jaGlsZHJlbnx8dC5wdXNoKG4pfSksdH0sJHk9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLG49W107cmV0dXJuIHQuZWFjaChmdW5jdGlvbihlKXtlIT09dCYmbi5wdXNoKHtzb3VyY2U6ZS5wYXJlbnQsdGFyZ2V0OmV9KX0pLG59O0xvLnByb3RvdHlwZT1Bby5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOkxvLGNvdW50Ok95LGVhY2g6RnksZWFjaEFmdGVyOll5LGVhY2hCZWZvcmU6SXksc3VtOkJ5LHNvcnQ6ankscGF0aDpIeSxhbmNlc3RvcnM6WHksZGVzY2VuZGFudHM6VnksbGVhdmVzOld5LGxpbmtzOiR5LGNvcHk6Q299O3ZhciBaeT1mdW5jdGlvbih0KXtmb3IodmFyIG4sZT0odD10LnNsaWNlKCkpLmxlbmd0aCxyPW51bGwsaT1yO2U7KXt2YXIgbz1uZXcgcW8odFtlLTFdKTtpPWk/aS5uZXh0PW86cj1vLHRbbl09dFstLWVdfXJldHVybntoZWFkOnIsdGFpbDppfX0sR3k9ZnVuY3Rpb24odCl7cmV0dXJuIERvKFp5KHQpLFtdKX0sSnk9ZnVuY3Rpb24odCl7cmV0dXJuIFZvKHQpLHR9LFF5PWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0fX0sS3k9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3JldHVybiB0Lng9ZS8yLHQueT1yLzIsbj90LmVhY2hCZWZvcmUoSm8obikpLmVhY2hBZnRlcihRbyhpLC41KSkuZWFjaEJlZm9yZShLbygxKSk6dC5lYWNoQmVmb3JlKEpvKEdvKSkuZWFjaEFmdGVyKFFvKFpvLDEpKS5lYWNoQWZ0ZXIoUW8oaSx0LnIvTWF0aC5taW4oZSxyKSkpLmVhY2hCZWZvcmUoS28oTWF0aC5taW4oZSxyKS8oMip0LnIpKSksdH12YXIgbj1udWxsLGU9MSxyPTEsaT1abztyZXR1cm4gdC5yYWRpdXM9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49V28oZSksdCk6bn0sdC5zaXplPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPStuWzBdLHI9K25bMV0sdCk6W2Uscl19LHQucGFkZGluZz1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0iZnVuY3Rpb24iPT10eXBlb2Ygbj9uOlF5KCtuKSx0KTppfSx0fSx0bT1mdW5jdGlvbih0KXt0LngwPU1hdGgucm91bmQodC54MCksdC55MD1NYXRoLnJvdW5kKHQueTApLHQueDE9TWF0aC5yb3VuZCh0LngxKSx0LnkxPU1hdGgucm91bmQodC55MSl9LG5tPWZ1bmN0aW9uKHQsbixlLHIsaSl7Zm9yKHZhciBvLHU9dC5jaGlsZHJlbixhPS0xLGM9dS5sZW5ndGgscz10LnZhbHVlJiYoci1uKS90LnZhbHVlOysrYTxjOylvPXVbYV0sby55MD1lLG8ueTE9aSxvLngwPW4sby54MT1uKz1vLnZhbHVlKnN9LGVtPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt2YXIgdT10LmhlaWdodCsxO3JldHVybiB0LngwPXQueTA9aSx0LngxPWUsdC55MT1yL3UsdC5lYWNoQmVmb3JlKG4ocix1KSksbyYmdC5lYWNoQmVmb3JlKHRtKSx0fWZ1bmN0aW9uIG4odCxuKXtyZXR1cm4gZnVuY3Rpb24oZSl7ZS5jaGlsZHJlbiYmbm0oZSxlLngwLHQqKGUuZGVwdGgrMSkvbixlLngxLHQqKGUuZGVwdGgrMikvbik7dmFyIHI9ZS54MCxvPWUueTAsdT1lLngxLWksYT1lLnkxLWk7dTxyJiYocj11PShyK3UpLzIpLGE8byYmKG89YT0obythKS8yKSxlLngwPXIsZS55MD1vLGUueDE9dSxlLnkxPWF9fXZhciBlPTEscj0xLGk9MCxvPSExO3JldHVybiB0LnJvdW5kPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPSEhbix0KTpvfSx0LnNpemU9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9K25bMF0scj0rblsxXSx0KTpbZSxyXX0sdC5wYWRkaW5nPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPStuLHQpOml9LHR9LHJtPSIkIixpbT17ZGVwdGg6LTF9LG9tPXt9LHVtPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt2YXIgcixpLG8sdSxhLGMscyxmPXQubGVuZ3RoLGw9bmV3IEFycmF5KGYpLGg9e307Zm9yKGk9MDtpPGY7KytpKXI9dFtpXSxhPWxbaV09bmV3IExvKHIpLG51bGwhPShjPW4ocixpLHQpKSYmKGMrPSIiKSYmKHM9cm0rKGEuaWQ9YyksaFtzXT1zIGluIGg/b206YSk7Zm9yKGk9MDtpPGY7KytpKWlmKGE9bFtpXSxjPWUodFtpXSxpLHQpLG51bGwhPWMmJihjKz0iIikpe2lmKHU9aFtybStjXSwhdSl0aHJvdyBuZXcgRXJyb3IoIm1pc3Npbmc6ICIrYyk7aWYodT09PW9tKXRocm93IG5ldyBFcnJvcigiYW1iaWd1b3VzOiAiK2MpO3UuY2hpbGRyZW4/dS5jaGlsZHJlbi5wdXNoKGEpOnUuY2hpbGRyZW49W2FdLGEucGFyZW50PXV9ZWxzZXtpZihvKXRocm93IG5ldyBFcnJvcigibXVsdGlwbGUgcm9vdHMiKTtvPWF9aWYoIW8pdGhyb3cgbmV3IEVycm9yKCJubyByb290Iik7aWYoby5wYXJlbnQ9aW0sby5lYWNoQmVmb3JlKGZ1bmN0aW9uKHQpe3QuZGVwdGg9dC5wYXJlbnQuZGVwdGgrMSwtLWZ9KS5lYWNoQmVmb3JlKFJvKSxvLnBhcmVudD1udWxsLGY+MCl0aHJvdyBuZXcgRXJyb3IoImN5Y2xlIik7cmV0dXJuIG99dmFyIG49dHUsZT1udTtyZXR1cm4gdC5pZD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0kbyhlKSx0KTpufSx0LnBhcmVudElkPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPSRvKG4pLHQpOmV9LHR9O2N1LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKExvLnByb3RvdHlwZSk7dmFyIGFtPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt2YXIgcj1zdSh0KTtpZihyLmVhY2hBZnRlcihuKSxyLnBhcmVudC5tPS1yLnosci5lYWNoQmVmb3JlKGUpLGMpdC5lYWNoQmVmb3JlKGkpO2Vsc2V7dmFyIHM9dCxmPXQsbD10O3QuZWFjaEJlZm9yZShmdW5jdGlvbih0KXt0Lng8cy54JiYocz10KSx0Lng+Zi54JiYoZj10KSx0LmRlcHRoPmwuZGVwdGgmJihsPXQpfSk7dmFyIGg9cz09PWY/MTpvKHMsZikvMixwPWgtcy54LGQ9dS8oZi54K2grcCksdj1hLyhsLmRlcHRofHwxKTt0LmVhY2hCZWZvcmUoZnVuY3Rpb24odCl7dC54PSh0LngrcCkqZCx0Lnk9dC5kZXB0aCp2fSl9cmV0dXJuIHR9ZnVuY3Rpb24gbih0KXt2YXIgbj10LmNoaWxkcmVuLGU9dC5wYXJlbnQuY2hpbGRyZW4saT10Lmk/ZVt0LmktMV06bnVsbDtpZihuKXt1dSh0KTt2YXIgdT0oblswXS56K25bbi5sZW5ndGgtMV0ueikvMjtpPyh0Lno9aS56K28odC5fLGkuXyksdC5tPXQuei11KTp0Lno9dX1lbHNlIGkmJih0Lno9aS56K28odC5fLGkuXykpO3QucGFyZW50LkE9cih0LGksdC5wYXJlbnQuQXx8ZVswXSl9ZnVuY3Rpb24gZSh0KXt0Ll8ueD10LnordC5wYXJlbnQubSx0Lm0rPXQucGFyZW50Lm19ZnVuY3Rpb24gcih0LG4sZSl7aWYobil7Zm9yKHZhciByLGk9dCx1PXQsYT1uLGM9aS5wYXJlbnQuY2hpbGRyZW5bMF0scz1pLm0sZj11Lm0sbD1hLm0saD1jLm07YT1pdShhKSxpPXJ1KGkpLGEmJmk7KWM9cnUoYyksdT1pdSh1KSx1LmE9dCxyPWEueitsLWkuei1zK28oYS5fLGkuXykscj4wJiYob3UoYXUoYSx0LGUpLHQscikscys9cixmKz1yKSxsKz1hLm0scys9aS5tLGgrPWMubSxmKz11Lm07YSYmIWl1KHUpJiYodS50PWEsdS5tKz1sLWYpLGkmJiFydShjKSYmKGMudD1pLGMubSs9cy1oLGU9dCl9cmV0dXJuIGV9ZnVuY3Rpb24gaSh0KXt0LngqPXUsdC55PXQuZGVwdGgqYX12YXIgbz1ldSx1PTEsYT0xLGM9bnVsbDtyZXR1cm4gdC5zZXBhcmF0aW9uPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPW4sdCk6b30sdC5zaXplPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhjPSExLHU9K25bMF0sYT0rblsxXSx0KTpjP251bGw6W3UsYV19LHQubm9kZVNpemU9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGM9ITAsdT0rblswXSxhPStuWzFdLHQpOmM/W3UsYV06bnVsbH0sdH0sY209ZnVuY3Rpb24odCxuLGUscixpKXtmb3IodmFyIG8sdT10LmNoaWxkcmVuLGE9LTEsYz11Lmxlbmd0aCxzPXQudmFsdWUmJihpLWUpL3QudmFsdWU7KythPGM7KW89dVthXSxvLngwPW4sby54MT1yLG8ueTA9ZSxvLnkxPWUrPW8udmFsdWUqc30sc209KDErTWF0aC5zcXJ0KDUpKS8yLGZtPWZ1bmN0aW9uIHQobil7ZnVuY3Rpb24gZSh0LGUscixpLG8pe2Z1KG4sdCxlLHIsaSxvKX1yZXR1cm4gZS5yYXRpbz1mdW5jdGlvbihuKXtyZXR1cm4gdCgobj0rbik+MT9uOjEpfSxlfShzbSksbG09ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3JldHVybiB0LngwPXQueTA9MCx0LngxPWksdC55MT1vLHQuZWFjaEJlZm9yZShuKSx1PVswXSxyJiZ0LmVhY2hCZWZvcmUodG0pLHR9ZnVuY3Rpb24gbih0KXt2YXIgbj11W3QuZGVwdGhdLHI9dC54MCtuLGk9dC55MCtuLG89dC54MS1uLGg9dC55MS1uO288ciYmKHI9bz0ocitvKS8yKSxoPGkmJihpPWg9KGkraCkvMiksdC54MD1yLHQueTA9aSx0LngxPW8sdC55MT1oLHQuY2hpbGRyZW4mJihuPXVbdC5kZXB0aCsxXT1hKHQpLzIscis9bCh0KS1uLGkrPWModCktbixvLT1zKHQpLW4saC09Zih0KS1uLG88ciYmKHI9bz0ocitvKS8yKSxoPGkmJihpPWg9KGkraCkvMiksZSh0LHIsaSxvLGgpKX12YXIgZT1mbSxyPSExLGk9MSxvPTEsdT1bMF0sYT1abyxjPVpvLHM9Wm8sZj1abyxsPVpvO3JldHVybiB0LnJvdW5kPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPSEhbix0KTpyfSx0LnNpemU9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9K25bMF0sbz0rblsxXSx0KTpbaSxvXX0sdC50aWxlPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPSRvKG4pLHQpOmV9LHQucGFkZGluZz1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90LnBhZGRpbmdJbm5lcihuKS5wYWRkaW5nT3V0ZXIobik6dC5wYWRkaW5nSW5uZXIoKX0sdC5wYWRkaW5nSW5uZXI9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9ImZ1bmN0aW9uIj09dHlwZW9mIG4/bjpReSgrbiksdCk6YX0sdC5wYWRkaW5nT3V0ZXI9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dC5wYWRkaW5nVG9wKG4pLnBhZGRpbmdSaWdodChuKS5wYWRkaW5nQm90dG9tKG4pLnBhZGRpbmdMZWZ0KG4pOnQucGFkZGluZ1RvcCgpfSx0LnBhZGRpbmdUb3A9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGM9ImZ1bmN0aW9uIj09dHlwZW9mIG4/bjpReSgrbiksdCk6Y30sdC5wYWRkaW5nUmlnaHQ9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9ImZ1bmN0aW9uIj09dHlwZW9mIG4/bjpReSgrbiksdCk6c30sdC5wYWRkaW5nQm90dG9tPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhmPSJmdW5jdGlvbiI9PXR5cGVvZiBuP246UXkoK24pLHQpOmZ9LHQucGFkZGluZ0xlZnQ9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGw9ImZ1bmN0aW9uIj09dHlwZW9mIG4/bjpReSgrbiksdCk6bH0sdH0saG09ZnVuY3Rpb24odCxuLGUscixpKXtmdW5jdGlvbiBvKHQsbixlLHIsaSx1LGEpe2lmKHQ+PW4tMSl7dmFyIHM9Y1t0XTtyZXR1cm4gcy54MD1yLHMueTA9aSxzLngxPXUscy55MT1hLHZvaWQgMH1mb3IodmFyIGw9Zlt0XSxoPWUvMitsLHA9dCsxLGQ9bi0xO3A8ZDspe3ZhciB2PXArZD4+PjE7Zlt2XTxoP3A9disxOmQ9dn12YXIgXz1mW3BdLWwsZz1lLV87aWYoYS1pPnUtcil7dmFyIHk9KGkqZythKl8pL2U7byh0LHAsXyxyLGksdSx5KSxvKHAsbixnLHIseSx1LGEpfWVsc2V7dmFyIG09KHIqZyt1Kl8pL2U7byh0LHAsXyxyLGksbSxhKSxvKHAsbixnLG0saSx1LGEpfX12YXIgdSxhLGM9dC5jaGlsZHJlbixzPWMubGVuZ3RoLGY9bmV3IEFycmF5KHMrMSk7Zm9yKGZbMF09YT11PTA7dTxzOysrdSlmW3UrMV09YSs9Y1t1XS52YWx1ZTtvKDAscyx0LnZhbHVlLG4sZSxyLGkpfSxwbT1mdW5jdGlvbih0LG4sZSxyLGkpeygxJnQuZGVwdGg/Y206bm0pKHQsbixlLHIsaSl9LGRtPWZ1bmN0aW9uIHQobil7ZnVuY3Rpb24gZSh0LGUscixpLG8pe2lmKCh1PXQuX3NxdWFyaWZ5KSYmdS5yYXRpbz09PW4pZm9yKHZhciB1LGEsYyxzLGYsbD0tMSxoPXUubGVuZ3RoLHA9dC52YWx1ZTsrK2w8aDspe2ZvcihhPXVbbF0sYz1hLmNoaWxkcmVuLHM9YS52YWx1ZT0wLGY9Yy5sZW5ndGg7czxmOysrcylhLnZhbHVlKz1jW3NdLnZhbHVlO2EuZGljZT9ubShhLGUscixpLHIrPShvLXIpKmEudmFsdWUvcCk6Y20oYSxlLHIsZSs9KGktZSkqYS52YWx1ZS9wLG8pLHAtPWEudmFsdWV9ZWxzZSB0Ll9zcXVhcmlmeT11PWZ1KG4sdCxlLHIsaSxvKSx1LnJhdGlvPW59cmV0dXJuIGUucmF0aW89ZnVuY3Rpb24obil7cmV0dXJuIHQoKG49K24pPjE/bjoxKX0sZX0oc20pLHZtPWZ1bmN0aW9uKHQpe2Zvcih2YXIgbixlPS0xLHI9dC5sZW5ndGgsaT10W3ItMV0sbz0wOysrZTxyOyluPWksaT10W2VdLG8rPW5bMV0qaVswXS1uWzBdKmlbMV07cmV0dXJuIG8vMgp9LF9tPWZ1bmN0aW9uKHQpe2Zvcih2YXIgbixlLHI9LTEsaT10Lmxlbmd0aCxvPTAsdT0wLGE9dFtpLTFdLGM9MDsrK3I8aTspbj1hLGE9dFtyXSxjKz1lPW5bMF0qYVsxXS1hWzBdKm5bMV0sbys9KG5bMF0rYVswXSkqZSx1Kz0oblsxXSthWzFdKSplO3JldHVybiBjKj0zLFtvL2MsdS9jXX0sZ209ZnVuY3Rpb24odCxuLGUpe3JldHVybihuWzBdLXRbMF0pKihlWzFdLXRbMV0pLShuWzFdLXRbMV0pKihlWzBdLXRbMF0pfSx5bT1mdW5jdGlvbih0KXtpZigoZT10Lmxlbmd0aCk8MylyZXR1cm4gbnVsbDt2YXIgbixlLHI9bmV3IEFycmF5KGUpLGk9bmV3IEFycmF5KGUpO2ZvcihuPTA7bjxlOysrbilyW25dPVsrdFtuXVswXSwrdFtuXVsxXSxuXTtmb3Ioci5zb3J0KGx1KSxuPTA7bjxlOysrbilpW25dPVtyW25dWzBdLC1yW25dWzFdXTt2YXIgbz1odShyKSx1PWh1KGkpLGE9dVswXT09PW9bMF0sYz11W3UubGVuZ3RoLTFdPT09b1tvLmxlbmd0aC0xXSxzPVtdO2ZvcihuPW8ubGVuZ3RoLTE7bj49MDstLW4pcy5wdXNoKHRbcltvW25dXVsyXV0pO2ZvcihuPSthO248dS5sZW5ndGgtYzsrK24pcy5wdXNoKHRbclt1W25dXVsyXV0pO3JldHVybiBzfSxtbT1mdW5jdGlvbih0LG4pe2Zvcih2YXIgZSxyLGk9dC5sZW5ndGgsbz10W2ktMV0sdT1uWzBdLGE9blsxXSxjPW9bMF0scz1vWzFdLGY9ITEsbD0wO2w8aTsrK2wpbz10W2xdLGU9b1swXSxyPW9bMV0scj5hIT1zPmEmJnU8KGMtZSkqKGEtcikvKHMtcikrZSYmKGY9IWYpLGM9ZSxzPXI7cmV0dXJuIGZ9LHhtPWZ1bmN0aW9uKHQpe2Zvcih2YXIgbixlLHI9LTEsaT10Lmxlbmd0aCxvPXRbaS0xXSx1PW9bMF0sYT1vWzFdLGM9MDsrK3I8aTspbj11LGU9YSxvPXRbcl0sdT1vWzBdLGE9b1sxXSxuLT11LGUtPWEsYys9TWF0aC5zcXJ0KG4qbitlKmUpO3JldHVybiBjfSxibT1bXS5zbGljZSx3bT17fTtwdS5wcm90b3R5cGU9bXUucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpwdSxkZWZlcjpmdW5jdGlvbih0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdHx8dGhpcy5fY2FsbCl0aHJvdyBuZXcgRXJyb3I7aWYobnVsbCE9dGhpcy5fZXJyb3IpcmV0dXJuIHRoaXM7dmFyIG49Ym0uY2FsbChhcmd1bWVudHMsMSk7cmV0dXJuIG4ucHVzaCh0KSwrK3RoaXMuX3dhaXRpbmcsdGhpcy5fdGFza3MucHVzaChuKSxkdSh0aGlzKSx0aGlzfSxhYm9ydDpmdW5jdGlvbigpe3JldHVybiBudWxsPT10aGlzLl9lcnJvciYmZ3UodGhpcyxuZXcgRXJyb3IoImFib3J0IikpLHRoaXN9LGF3YWl0OmZ1bmN0aW9uKHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0fHx0aGlzLl9jYWxsKXRocm93IG5ldyBFcnJvcjtyZXR1cm4gdGhpcy5fY2FsbD1mdW5jdGlvbihuLGUpe3QuYXBwbHkobnVsbCxbbl0uY29uY2F0KGUpKX0seXUodGhpcyksdGhpc30sYXdhaXRBbGw6ZnVuY3Rpb24odCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHR8fHRoaXMuX2NhbGwpdGhyb3cgbmV3IEVycm9yO3JldHVybiB0aGlzLl9jYWxsPXQseXUodGhpcyksdGhpc319O3ZhciBNbT1mdW5jdGlvbih0LG4pe3JldHVybiB0PW51bGw9PXQ/MDordCxuPW51bGw9PW4/MTorbiwxPT09YXJndW1lbnRzLmxlbmd0aD8obj10LHQ9MCk6bi09dCxmdW5jdGlvbigpe3JldHVybiBNYXRoLnJhbmRvbSgpKm4rdH19LFRtPWZ1bmN0aW9uKHQsbil7dmFyIGUscjtyZXR1cm4gdD1udWxsPT10PzA6K3Qsbj1udWxsPT1uPzE6K24sZnVuY3Rpb24oKXt2YXIgaTtpZihudWxsIT1lKWk9ZSxlPW51bGw7ZWxzZSBkbyBlPTIqTWF0aC5yYW5kb20oKS0xLGk9MipNYXRoLnJhbmRvbSgpLTEscj1lKmUraSppO3doaWxlKCFyfHxyPjEpO3JldHVybiB0K24qaSpNYXRoLnNxcnQoLTIqTWF0aC5sb2cocikvcil9fSxrbT1mdW5jdGlvbigpe3ZhciB0PVRtLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gTWF0aC5leHAodCgpKX19LFNtPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbigpe2Zvcih2YXIgbj0wLGU9MDtlPHQ7KytlKW4rPU1hdGgucmFuZG9tKCk7cmV0dXJuIG59fSxObT1mdW5jdGlvbih0KXt2YXIgbj1TbSh0KTtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gbigpL3R9fSxFbT1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4tTWF0aC5sb2coMS1NYXRoLnJhbmRvbSgpKS90fX0sQW09ZnVuY3Rpb24odCxuKXtmdW5jdGlvbiBlKHQpe3ZhciBuLGU9cy5zdGF0dXM7aWYoIWUmJmJ1KHMpfHxlPj0yMDAmJmU8MzAwfHwzMDQ9PT1lKXtpZihvKXRyeXtuPW8uY2FsbChyLHMpfWNhdGNoKHQpe3JldHVybiB2b2lkIGEuY2FsbCgiZXJyb3IiLHIsdCl9ZWxzZSBuPXM7YS5jYWxsKCJsb2FkIixyLG4pfWVsc2UgYS5jYWxsKCJlcnJvciIscix0KX12YXIgcixpLG8sdSxhPWQoImJlZm9yZXNlbmQiLCJwcm9ncmVzcyIsImxvYWQiLCJlcnJvciIpLGM9WWUoKSxzPW5ldyBYTUxIdHRwUmVxdWVzdCxmPW51bGwsbD1udWxsLGg9MDtpZigidW5kZWZpbmVkIj09dHlwZW9mIFhEb21haW5SZXF1ZXN0fHwid2l0aENyZWRlbnRpYWxzImluIHN8fCEvXihodHRwKHMpPzopP1wvXC8vLnRlc3QodCl8fChzPW5ldyBYRG9tYWluUmVxdWVzdCksIm9ubG9hZCJpbiBzP3Mub25sb2FkPXMub25lcnJvcj1zLm9udGltZW91dD1lOnMub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKHQpe3MucmVhZHlTdGF0ZT4zJiZlKHQpfSxzLm9ucHJvZ3Jlc3M9ZnVuY3Rpb24odCl7YS5jYWxsKCJwcm9ncmVzcyIscix0KX0scj17aGVhZGVyOmZ1bmN0aW9uKHQsbil7cmV0dXJuIHQ9KHQrIiIpLnRvTG93ZXJDYXNlKCksYXJndW1lbnRzLmxlbmd0aDwyP2MuZ2V0KHQpOihudWxsPT1uP2MucmVtb3ZlKHQpOmMuc2V0KHQsbisiIikscil9LG1pbWVUeXBlOmZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPW51bGw9PXQ/bnVsbDp0KyIiLHIpOml9LHJlc3BvbnNlVHlwZTpmdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT10LHIpOnV9LHRpbWVvdXQ6ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGg9K3Qscik6aH0sdXNlcjpmdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aDwxP2Y6KGY9bnVsbD09dD9udWxsOnQrIiIscil9LHBhc3N3b3JkOmZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPDE/bDoobD1udWxsPT10P251bGw6dCsiIixyKX0scmVzcG9uc2U6ZnVuY3Rpb24odCl7cmV0dXJuIG89dCxyfSxnZXQ6ZnVuY3Rpb24odCxuKXtyZXR1cm4gci5zZW5kKCJHRVQiLHQsbil9LHBvc3Q6ZnVuY3Rpb24odCxuKXtyZXR1cm4gci5zZW5kKCJQT1NUIix0LG4pfSxzZW5kOmZ1bmN0aW9uKG4sZSxvKXtyZXR1cm4gcy5vcGVuKG4sdCwhMCxmLGwpLG51bGw9PWl8fGMuaGFzKCJhY2NlcHQiKXx8Yy5zZXQoImFjY2VwdCIsaSsiLCovKiIpLHMuc2V0UmVxdWVzdEhlYWRlciYmYy5lYWNoKGZ1bmN0aW9uKHQsbil7cy5zZXRSZXF1ZXN0SGVhZGVyKG4sdCl9KSxudWxsIT1pJiZzLm92ZXJyaWRlTWltZVR5cGUmJnMub3ZlcnJpZGVNaW1lVHlwZShpKSxudWxsIT11JiYocy5yZXNwb25zZVR5cGU9dSksaD4wJiYocy50aW1lb3V0PWgpLG51bGw9PW8mJiJmdW5jdGlvbiI9PXR5cGVvZiBlJiYobz1lLGU9bnVsbCksbnVsbCE9byYmMT09PW8ubGVuZ3RoJiYobz14dShvKSksbnVsbCE9byYmci5vbigiZXJyb3IiLG8pLm9uKCJsb2FkIixmdW5jdGlvbih0KXtvKG51bGwsdCl9KSxhLmNhbGwoImJlZm9yZXNlbmQiLHIscykscy5zZW5kKG51bGw9PWU/bnVsbDplKSxyfSxhYm9ydDpmdW5jdGlvbigpe3JldHVybiBzLmFib3J0KCkscn0sb246ZnVuY3Rpb24oKXt2YXIgdD1hLm9uLmFwcGx5KGEsYXJndW1lbnRzKTtyZXR1cm4gdD09PWE/cjp0fX0sbnVsbCE9bil7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIG4pdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIGNhbGxiYWNrOiAiK24pO3JldHVybiByLmdldChuKX1yZXR1cm4gcn0sQ209ZnVuY3Rpb24odCxuKXtyZXR1cm4gZnVuY3Rpb24oZSxyKXt2YXIgaT1BbShlKS5taW1lVHlwZSh0KS5yZXNwb25zZShuKTtpZihudWxsIT1yKXtpZigiZnVuY3Rpb24iIT10eXBlb2Ygcil0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgY2FsbGJhY2s6ICIrcik7cmV0dXJuIGkuZ2V0KHIpfXJldHVybiBpfX0sem09Q20oInRleHQvaHRtbCIsZnVuY3Rpb24odCl7cmV0dXJuIGRvY3VtZW50LmNyZWF0ZVJhbmdlKCkuY3JlYXRlQ29udGV4dHVhbEZyYWdtZW50KHQucmVzcG9uc2VUZXh0KX0pLFBtPUNtKCJhcHBsaWNhdGlvbi9qc29uIixmdW5jdGlvbih0KXtyZXR1cm4gSlNPTi5wYXJzZSh0LnJlc3BvbnNlVGV4dCl9KSxSbT1DbSgidGV4dC9wbGFpbiIsZnVuY3Rpb24odCl7cmV0dXJuIHQucmVzcG9uc2VUZXh0fSksTG09Q20oImFwcGxpY2F0aW9uL3htbCIsZnVuY3Rpb24odCl7dmFyIG49dC5yZXNwb25zZVhNTDtpZighbil0aHJvdyBuZXcgRXJyb3IoInBhcnNlIGVycm9yIik7cmV0dXJuIG59KSxxbT1mdW5jdGlvbih0LG4pe3JldHVybiBmdW5jdGlvbihlLHIsaSl7YXJndW1lbnRzLmxlbmd0aDwzJiYoaT1yLHI9bnVsbCk7dmFyIG89QW0oZSkubWltZVR5cGUodCk7cmV0dXJuIG8ucm93PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP28ucmVzcG9uc2Uod3UobixyPXQpKTpyfSxvLnJvdyhyKSxpP28uZ2V0KGkpOm99fSxVbT1xbSgidGV4dC9jc3YiLFFkKSxEbT1xbSgidGV4dC90YWItc2VwYXJhdGVkLXZhbHVlcyIscnYpLE9tPUFycmF5LnByb3RvdHlwZSxGbT1PbS5tYXAsSW09T20uc2xpY2UsWW09e25hbWU6ImltcGxpY2l0In0sQm09ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fSxqbT1mdW5jdGlvbih0KXtyZXR1cm4rdH0sSG09WzAsMV0sWG09ZnVuY3Rpb24obixlLGkpe3ZhciBvLHU9blswXSxhPW5bbi5sZW5ndGgtMV0sYz1yKHUsYSxudWxsPT1lPzEwOmUpO3N3aXRjaChpPWxyKG51bGw9PWk/IixmIjppKSxpLnR5cGUpe2Nhc2UicyI6dmFyIHM9TWF0aC5tYXgoTWF0aC5hYnModSksTWF0aC5hYnMoYSkpO3JldHVybiBudWxsIT1pLnByZWNpc2lvbnx8aXNOYU4obz1XdihjLHMpKXx8KGkucHJlY2lzaW9uPW8pLHQuZm9ybWF0UHJlZml4KGkscyk7Y2FzZSIiOmNhc2UiZSI6Y2FzZSJnIjpjYXNlInAiOmNhc2UiciI6bnVsbCE9aS5wcmVjaXNpb258fGlzTmFOKG89JHYoYyxNYXRoLm1heChNYXRoLmFicyh1KSxNYXRoLmFicyhhKSkpKXx8KGkucHJlY2lzaW9uPW8tKCJlIj09PWkudHlwZSkpO2JyZWFrO2Nhc2UiZiI6Y2FzZSIlIjpudWxsIT1pLnByZWNpc2lvbnx8aXNOYU4obz1WdihjKSl8fChpLnByZWNpc2lvbj1vLTIqKCIlIj09PWkudHlwZSkpfXJldHVybiB0LmZvcm1hdChpKX0sVm09ZnVuY3Rpb24odCxuKXt0PXQuc2xpY2UoKTt2YXIgZSxyPTAsaT10Lmxlbmd0aC0xLG89dFtyXSx1PXRbaV07cmV0dXJuIHU8byYmKGU9cixyPWksaT1lLGU9byxvPXUsdT1lKSx0W3JdPW4uZmxvb3IobyksdFtpXT1uLmNlaWwodSksdH0sV209bmV3IERhdGUsJG09bmV3IERhdGUsWm09R3UoZnVuY3Rpb24oKXt9LGZ1bmN0aW9uKHQsbil7dC5zZXRUaW1lKCt0K24pfSxmdW5jdGlvbih0LG4pe3JldHVybiBuLXR9KTtabS5ldmVyeT1mdW5jdGlvbih0KXtyZXR1cm4gdD1NYXRoLmZsb29yKHQpLGlzRmluaXRlKHQpJiZ0PjA/dD4xP0d1KGZ1bmN0aW9uKG4pe24uc2V0VGltZShNYXRoLmZsb29yKG4vdCkqdCl9LGZ1bmN0aW9uKG4sZSl7bi5zZXRUaW1lKCtuK2UqdCl9LGZ1bmN0aW9uKG4sZSl7cmV0dXJuKGUtbikvdH0pOlptOm51bGx9O3ZhciBHbT1abS5yYW5nZSxKbT0xZTMsUW09NmU0LEttPTM2ZTUsdHg9ODY0ZTUsbng9NjA0OGU1LGV4PUd1KGZ1bmN0aW9uKHQpe3Quc2V0VGltZShNYXRoLmZsb29yKHQvSm0pKkptKX0sZnVuY3Rpb24odCxuKXt0LnNldFRpbWUoK3QrbipKbSl9LGZ1bmN0aW9uKHQsbil7cmV0dXJuKG4tdCkvSm19LGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldFVUQ1NlY29uZHMoKX0pLHJ4PWV4LnJhbmdlLGl4PUd1KGZ1bmN0aW9uKHQpe3Quc2V0VGltZShNYXRoLmZsb29yKHQvUW0pKlFtKX0sZnVuY3Rpb24odCxuKXt0LnNldFRpbWUoK3QrbipRbSl9LGZ1bmN0aW9uKHQsbil7cmV0dXJuKG4tdCkvUW19LGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldE1pbnV0ZXMoKX0pLG94PWl4LnJhbmdlLHV4PUd1KGZ1bmN0aW9uKHQpe3ZhciBuPXQuZ2V0VGltZXpvbmVPZmZzZXQoKSpRbSVLbTtuPDAmJihuKz1LbSksdC5zZXRUaW1lKE1hdGguZmxvb3IoKCt0LW4pL0ttKSpLbStuKX0sZnVuY3Rpb24odCxuKXt0LnNldFRpbWUoK3QrbipLbSl9LGZ1bmN0aW9uKHQsbil7cmV0dXJuKG4tdCkvS219LGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldEhvdXJzKCl9KSxheD11eC5yYW5nZSxjeD1HdShmdW5jdGlvbih0KXt0LnNldEhvdXJzKDAsMCwwLDApfSxmdW5jdGlvbih0LG4pe3Quc2V0RGF0ZSh0LmdldERhdGUoKStuKX0sZnVuY3Rpb24odCxuKXtyZXR1cm4obi10LShuLmdldFRpbWV6b25lT2Zmc2V0KCktdC5nZXRUaW1lem9uZU9mZnNldCgpKSpRbSkvdHh9LGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldERhdGUoKS0xfSksc3g9Y3gucmFuZ2UsZng9SnUoMCksbHg9SnUoMSksaHg9SnUoMikscHg9SnUoMyksZHg9SnUoNCksdng9SnUoNSksX3g9SnUoNiksZ3g9ZngucmFuZ2UseXg9bHgucmFuZ2UsbXg9aHgucmFuZ2UseHg9cHgucmFuZ2UsYng9ZHgucmFuZ2Usd3g9dngucmFuZ2UsTXg9X3gucmFuZ2UsVHg9R3UoZnVuY3Rpb24odCl7dC5zZXREYXRlKDEpLHQuc2V0SG91cnMoMCwwLDAsMCl9LGZ1bmN0aW9uKHQsbil7dC5zZXRNb250aCh0LmdldE1vbnRoKCkrbil9LGZ1bmN0aW9uKHQsbil7cmV0dXJuIG4uZ2V0TW9udGgoKS10LmdldE1vbnRoKCkrMTIqKG4uZ2V0RnVsbFllYXIoKS10LmdldEZ1bGxZZWFyKCkpfSxmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRNb250aCgpfSksa3g9VHgucmFuZ2UsU3g9R3UoZnVuY3Rpb24odCl7dC5zZXRNb250aCgwLDEpLHQuc2V0SG91cnMoMCwwLDAsMCl9LGZ1bmN0aW9uKHQsbil7dC5zZXRGdWxsWWVhcih0LmdldEZ1bGxZZWFyKCkrbil9LGZ1bmN0aW9uKHQsbil7cmV0dXJuIG4uZ2V0RnVsbFllYXIoKS10LmdldEZ1bGxZZWFyKCl9LGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldEZ1bGxZZWFyKCl9KTtTeC5ldmVyeT1mdW5jdGlvbih0KXtyZXR1cm4gaXNGaW5pdGUodD1NYXRoLmZsb29yKHQpKSYmdD4wP0d1KGZ1bmN0aW9uKG4pe24uc2V0RnVsbFllYXIoTWF0aC5mbG9vcihuLmdldEZ1bGxZZWFyKCkvdCkqdCksbi5zZXRNb250aCgwLDEpLG4uc2V0SG91cnMoMCwwLDAsMCl9LGZ1bmN0aW9uKG4sZSl7bi5zZXRGdWxsWWVhcihuLmdldEZ1bGxZZWFyKCkrZSp0KX0pOm51bGx9O3ZhciBOeD1TeC5yYW5nZSxFeD1HdShmdW5jdGlvbih0KXt0LnNldFVUQ1NlY29uZHMoMCwwKX0sZnVuY3Rpb24odCxuKXt0LnNldFRpbWUoK3QrbipRbSl9LGZ1bmN0aW9uKHQsbil7cmV0dXJuKG4tdCkvUW19LGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldFVUQ01pbnV0ZXMoKX0pLEF4PUV4LnJhbmdlLEN4PUd1KGZ1bmN0aW9uKHQpe3Quc2V0VVRDTWludXRlcygwLDAsMCl9LGZ1bmN0aW9uKHQsbil7dC5zZXRUaW1lKCt0K24qS20pfSxmdW5jdGlvbih0LG4pe3JldHVybihuLXQpL0ttfSxmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRVVENIb3VycygpfSkseng9Q3gucmFuZ2UsUHg9R3UoZnVuY3Rpb24odCl7dC5zZXRVVENIb3VycygwLDAsMCwwKX0sZnVuY3Rpb24odCxuKXt0LnNldFVUQ0RhdGUodC5nZXRVVENEYXRlKCkrbil9LGZ1bmN0aW9uKHQsbil7cmV0dXJuKG4tdCkvdHh9LGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldFVUQ0RhdGUoKS0xfSksUng9UHgucmFuZ2UsTHg9UXUoMCkscXg9UXUoMSksVXg9UXUoMiksRHg9UXUoMyksT3g9UXUoNCksRng9UXUoNSksSXg9UXUoNiksWXg9THgucmFuZ2UsQng9cXgucmFuZ2Usang9VXgucmFuZ2UsSHg9RHgucmFuZ2UsWHg9T3gucmFuZ2UsVng9RngucmFuZ2UsV3g9SXgucmFuZ2UsJHg9R3UoZnVuY3Rpb24odCl7dC5zZXRVVENEYXRlKDEpLHQuc2V0VVRDSG91cnMoMCwwLDAsMCl9LGZ1bmN0aW9uKHQsbil7dC5zZXRVVENNb250aCh0LmdldFVUQ01vbnRoKCkrbil9LGZ1bmN0aW9uKHQsbil7cmV0dXJuIG4uZ2V0VVRDTW9udGgoKS10LmdldFVUQ01vbnRoKCkrMTIqKG4uZ2V0VVRDRnVsbFllYXIoKS10LmdldFVUQ0Z1bGxZZWFyKCkpfSxmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRVVENNb250aCgpfSksWng9JHgucmFuZ2UsR3g9R3UoZnVuY3Rpb24odCl7dC5zZXRVVENNb250aCgwLDEpLHQuc2V0VVRDSG91cnMoMCwwLDAsMCl9LGZ1bmN0aW9uKHQsbil7dC5zZXRVVENGdWxsWWVhcih0LmdldFVUQ0Z1bGxZZWFyKCkrbil9LGZ1bmN0aW9uKHQsbil7cmV0dXJuIG4uZ2V0VVRDRnVsbFllYXIoKS10LmdldFVUQ0Z1bGxZZWFyKCl9LGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldFVUQ0Z1bGxZZWFyKCl9KTtHeC5ldmVyeT1mdW5jdGlvbih0KXtyZXR1cm4gaXNGaW5pdGUodD1NYXRoLmZsb29yKHQpKSYmdD4wP0d1KGZ1bmN0aW9uKG4pe24uc2V0VVRDRnVsbFllYXIoTWF0aC5mbG9vcihuLmdldFVUQ0Z1bGxZZWFyKCkvdCkqdCksbi5zZXRVVENNb250aCgwLDEpLG4uc2V0VVRDSG91cnMoMCwwLDAsMCl9LGZ1bmN0aW9uKG4sZSl7bi5zZXRVVENGdWxsWWVhcihuLmdldFVUQ0Z1bGxZZWFyKCkrZSp0KX0pOm51bGx9O3ZhciBKeCxReD1HeC5yYW5nZSxLeD17Ii0iOiIiLF86IiAiLDA6IjAifSx0Yj0vXlxzKlxkKy8sbmI9L14lLyxlYj0vW1xcXF5cJFwqXCtcP1x8XFtcXVwoXClcLlx7XH1dL2c7R2Eoe2RhdGVUaW1lOiIleCwgJVgiLGRhdGU6IiUtbS8lLWQvJVkiLHRpbWU6IiUtSTolTTolUyAlcCIscGVyaW9kczpbIkFNIiwiUE0iXSxkYXlzOlsiU3VuZGF5IiwiTW9uZGF5IiwiVHVlc2RheSIsIldlZG5lc2RheSIsIlRodXJzZGF5IiwiRnJpZGF5IiwiU2F0dXJkYXkiXSxzaG9ydERheXM6WyJTdW4iLCJNb24iLCJUdWUiLCJXZWQiLCJUaHUiLCJGcmkiLCJTYXQiXSxtb250aHM6WyJKYW51YXJ5IiwiRmVicnVhcnkiLCJNYXJjaCIsIkFwcmlsIiwiTWF5IiwiSnVuZSIsIkp1bHkiLCJBdWd1c3QiLCJTZXB0ZW1iZXIiLCJPY3RvYmVyIiwiTm92ZW1iZXIiLCJEZWNlbWJlciJdLHNob3J0TW9udGhzOlsiSmFuIiwiRmViIiwiTWFyIiwiQXByIiwiTWF5IiwiSnVuIiwiSnVsIiwiQXVnIiwiU2VwIiwiT2N0IiwiTm92IiwiRGVjIl19KTt2YXIgcmI9IiVZLSVtLSVkVCVIOiVNOiVTLiVMWiIsaWI9RGF0ZS5wcm90b3R5cGUudG9JU09TdHJpbmc/SmE6dC51dGNGb3JtYXQocmIpLG9iPStuZXcgRGF0ZSgiMjAwMC0wMS0wMVQwMDowMDowMC4wMDBaIik/UWE6dC51dGNQYXJzZShyYiksdWI9MWUzLGFiPTYwKnViLGNiPTYwKmFiLHNiPTI0KmNiLGZiPTcqc2IsbGI9MzAqc2IsaGI9MzY1KnNiLHBiPWZ1bmN0aW9uKCl7cmV0dXJuIG5jKFN4LFR4LGZ4LGN4LHV4LGl4LGV4LFptLHQudGltZUZvcm1hdCkuZG9tYWluKFtuZXcgRGF0ZSgyZTMsMCwxKSxuZXcgRGF0ZSgyZTMsMCwyKV0pfSxkYj1mdW5jdGlvbigpe3JldHVybiBuYyhHeCwkeCxMeCxQeCxDeCxFeCxleCxabSx0LnV0Y0Zvcm1hdCkuZG9tYWluKFtEYXRlLlVUQygyZTMsMCwxKSxEYXRlLlVUQygyZTMsMCwyKV0pfSx2Yj1mdW5jdGlvbih0KXtyZXR1cm4gdC5tYXRjaCgvLns2fS9nKS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIiMiK3R9KX0sX2I9dmIoIjFmNzdiNGZmN2YwZTJjYTAyY2Q2MjcyODk0NjdiZDhjNTY0YmUzNzdjMjdmN2Y3ZmJjYmQyMjE3YmVjZiIpLGdiPXZiKCIzOTNiNzk1MjU0YTM2YjZlY2Y5YzllZGU2Mzc5Mzk4Y2EyNTJiNWNmNmJjZWRiOWM4YzZkMzFiZDllMzllN2JhNTJlN2NiOTQ4NDNjMzlhZDQ5NGFkNjYxNmJlNzk2OWM3YjQxNzNhNTUxOTRjZTZkYmRkZTllZDYiKSx5Yj12YigiMzE4MmJkNmJhZWQ2OWVjYWUxYzZkYmVmZTY1NTBkZmQ4ZDNjZmRhZTZiZmRkMGEyMzFhMzU0NzRjNDc2YTFkOTliYzdlOWMwNzU2YmIxOWU5YWM4YmNiZGRjZGFkYWViNjM2MzYzOTY5Njk2YmRiZGJkZDlkOWQ5IiksbWI9dmIoIjFmNzdiNGFlYzdlOGZmN2YwZWZmYmI3ODJjYTAyYzk4ZGY4YWQ2MjcyOGZmOTg5Njk0NjdiZGM1YjBkNThjNTY0YmM0OWM5NGUzNzdjMmY3YjZkMjdmN2Y3ZmM3YzdjN2JjYmQyMmRiZGI4ZDE3YmVjZjllZGFlNSIpLHhiPVZoKFZ0KDMwMCwuNSwwKSxWdCgtMjQwLC41LDEpKSxiYj1WaChWdCgtMTAwLC43NSwuMzUpLFZ0KDgwLDEuNSwuOCkpLHdiPVZoKFZ0KDI2MCwuNzUsLjM1KSxWdCg4MCwxLjUsLjgpKSxNYj1WdCgpLFRiPWZ1bmN0aW9uKHQpeyh0PDB8fHQ+MSkmJih0LT1NYXRoLmZsb29yKHQpKTt2YXIgbj1NYXRoLmFicyh0LS41KTtyZXR1cm4gTWIuaD0zNjAqdC0xMDAsTWIucz0xLjUtMS41Km4sTWIubD0uOC0uOSpuLE1iKyIifSxrYj1lYyh2YigiNDQwMTU0NDQwMjU2NDUwNDU3NDUwNTU5NDYwNzVhNDYwODVjNDYwYTVkNDYwYjVlNDcwZDYwNDcwZTYxNDcxMDYzNDcxMTY0NDcxMzY1NDgxNDY3NDgxNjY4NDgxNzY5NDgxODZhNDgxYTZjNDgxYjZkNDgxYzZlNDgxZDZmNDgxZjcwNDgyMDcxNDgyMTczNDgyMzc0NDgyNDc1NDgyNTc2NDgyNjc3NDgyODc4NDgyOTc5NDcyYTdhNDcyYzdhNDcyZDdiNDcyZTdjNDcyZjdkNDYzMDdlNDYzMjdlNDYzMzdmNDYzNDgwNDUzNTgxNDUzNzgxNDUzODgyNDQzOTgzNDQzYTgzNDQzYjg0NDMzZDg0NDMzZTg1NDIzZjg1NDI0MDg2NDI0MTg2NDE0Mjg3NDE0NDg3NDA0NTg4NDA0Njg4M2Y0Nzg4M2Y0ODg5M2U0OTg5M2U0YTg5M2U0YzhhM2Q0ZDhhM2Q0ZThhM2M0ZjhhM2M1MDhiM2I1MThiM2I1MjhiM2E1MzhiM2E1NDhjMzk1NThjMzk1NjhjMzg1ODhjMzg1OThjMzc1YThjMzc1YjhkMzY1YzhkMzY1ZDhkMzU1ZThkMzU1ZjhkMzQ2MDhkMzQ2MThkMzM2MjhkMzM2MzhkMzI2NDhlMzI2NThlMzE2NjhlMzE2NzhlMzE2ODhlMzA2OThlMzA2YThlMmY2YjhlMmY2YzhlMmU2ZDhlMmU2ZThlMmU2ZjhlMmQ3MDhlMmQ3MThlMmM3MThlMmM3MjhlMmM3MzhlMmI3NDhlMmI3NThlMmE3NjhlMmE3NzhlMmE3ODhlMjk3OThlMjk3YThlMjk3YjhlMjg3YzhlMjg3ZDhlMjc3ZThlMjc3ZjhlMjc4MDhlMjY4MThlMjY4MjhlMjY4MjhlMjU4MzhlMjU4NDhlMjU4NThlMjQ4NjhlMjQ4NzhlMjM4ODhlMjM4OThlMjM4YThkMjI4YjhkMjI4YzhkMjI4ZDhkMjE4ZThkMjE4ZjhkMjE5MDhkMjE5MThjMjA5MjhjMjA5MjhjMjA5MzhjMWY5NDhjMWY5NThiMWY5NjhiMWY5NzhiMWY5ODhiMWY5OThhMWY5YThhMWU5YjhhMWU5Yzg5MWU5ZDg5MWY5ZTg5MWY5Zjg4MWZhMDg4MWZhMTg4MWZhMTg3MWZhMjg3MjBhMzg2MjBhNDg2MjFhNTg1MjFhNjg1MjJhNzg1MjJhODg0MjNhOTgzMjRhYTgzMjVhYjgyMjVhYzgyMjZhZDgxMjdhZDgxMjhhZTgwMjlhZjdmMmFiMDdmMmNiMTdlMmRiMjdkMmViMzdjMmZiNDdjMzFiNTdiMzJiNjdhMzRiNjc5MzViNzc5MzdiODc4MzhiOTc3M2FiYTc2M2JiYjc1M2RiYzc0M2ZiYzczNDBiZDcyNDJiZTcxNDRiZjcwNDZjMDZmNDhjMTZlNGFjMTZkNGNjMjZjNGVjMzZiNTBjNDZhNTJjNTY5NTRjNTY4NTZjNjY3NThjNzY1NWFjODY0NWNjODYzNWVjOTYyNjBjYTYwNjNjYjVmNjVjYjVlNjdjYzVjNjljZDViNmNjZDVhNmVjZTU4NzBjZjU3NzNkMDU2NzVkMDU0NzdkMTUzN2FkMTUxN2NkMjUwN2ZkMzRlODFkMzRkODRkNDRiODZkNTQ5ODlkNTQ4OGJkNjQ2OGVkNjQ1OTBkNzQzOTNkNzQxOTVkODQwOThkODNlOWJkOTNjOWRkOTNiYTBkYTM5YTJkYTM3YTVkYjM2YThkYjM0YWFkYzMyYWRkYzMwYjBkZDJmYjJkZDJkYjVkZTJiYjhkZTI5YmFkZTI4YmRkZjI2YzBkZjI1YzJkZjIzYzVlMDIxYzhlMDIwY2FlMTFmY2RlMTFkZDBlMTFjZDJlMjFiZDVlMjFhZDhlMjE5ZGFlMzE5ZGRlMzE4ZGZlMzE4ZTJlNDE4ZTVlNDE5ZTdlNDE5ZWFlNTFhZWNlNTFiZWZlNTFjZjFlNTFkZjRlNjFlZjZlNjIwZjhlNjIxZmJlNzIzZmRlNzI1IikpLFNiPWVjKHZiKCIwMDAwMDQwMTAwMDUwMTAxMDYwMTAxMDgwMjAxMDkwMjAyMGIwMjAyMGQwMzAzMGYwMzAzMTIwNDA0MTQwNTA0MTYwNjA1MTgwNjA1MWEwNzA2MWMwODA3MWUwOTA3MjAwYTA4MjIwYjA5MjQwYzA5MjYwZDBhMjkwZTBiMmIxMDBiMmQxMTBjMmYxMjBkMzExMzBkMzQxNDBlMzYxNTBlMzgxNjBmM2IxODBmM2QxOTEwM2YxYTEwNDIxYzEwNDQxZDExNDcxZTExNDkyMDExNGIyMTExNGUyMjExNTAyNDEyNTMyNTEyNTUyNzEyNTgyOTExNWEyYTExNWMyYzExNWYyZDExNjEyZjExNjMzMTExNjUzMzEwNjczNDEwNjkzNjEwNmIzODEwNmMzOTBmNmUzYjBmNzAzZDBmNzEzZjBmNzI0MDBmNzQ0MjBmNzU0NDBmNzY0NTEwNzc0NzEwNzg0OTEwNzg0YTEwNzk0YzExN2E0ZTExN2I0ZjEyN2I1MTEyN2M1MjEzN2M1NDEzN2Q1NjE0N2Q1NzE1N2U1OTE1N2U1YTE2N2U1YzE2N2Y1ZDE3N2Y1ZjE4N2Y2MDE4ODA2MjE5ODA2NDFhODA2NTFhODA2NzFiODA2ODFjODE2YTFjODE2YjFkODE2ZDFkODE2ZTFlODE3MDFmODE3MjFmODE3MzIwODE3NTIxODE3NjIxODE3ODIyODE3OTIyODI3YjIzODI3YzIzODI3ZTI0ODI4MDI1ODI4MTI1ODE4MzI2ODE4NDI2ODE4NjI3ODE4ODI3ODE4OTI4ODE4YjI5ODE4YzI5ODE4ZTJhODE5MDJhODE5MTJiODE5MzJiODA5NDJjODA5NjJjODA5ODJkODA5OTJkODA5YjJlN2Y5YzJlN2Y5ZTJmN2ZhMDJmN2ZhMTMwN2VhMzMwN2VhNTMxN2VhNjMxN2RhODMyN2RhYTMzN2RhYjMzN2NhZDM0N2NhZTM0N2JiMDM1N2JiMjM1N2JiMzM2N2FiNTM2N2FiNzM3NzliODM3NzliYTM4NzhiYzM5NzhiZDM5NzdiZjNhNzdjMDNhNzZjMjNiNzVjNDNjNzVjNTNjNzRjNzNkNzNjODNlNzNjYTNlNzJjYzNmNzFjZDQwNzFjZjQwNzBkMDQxNmZkMjQyNmZkMzQzNmVkNTQ0NmRkNjQ1NmNkODQ1NmNkOTQ2NmJkYjQ3NmFkYzQ4NjlkZTQ5NjhkZjRhNjhlMDRjNjdlMjRkNjZlMzRlNjVlNDRmNjRlNTUwNjRlNzUyNjNlODUzNjJlOTU0NjJlYTU2NjFlYjU3NjBlYzU4NjBlZDVhNWZlZTViNWVlZjVkNWVmMDVmNWVmMTYwNWRmMjYyNWRmMjY0NWNmMzY1NWNmNDY3NWNmNDY5NWNmNTZiNWNmNjZjNWNmNjZlNWNmNzcwNWNmNzcyNWNmODc0NWNmODc2NWNmOTc4NWRmOTc5NWRmOTdiNWRmYTdkNWVmYTdmNWVmYTgxNWZmYjgzNWZmYjg1NjBmYjg3NjFmYzg5NjFmYzhhNjJmYzhjNjNmYzhlNjRmYzkwNjVmZDkyNjZmZDk0NjdmZDk2NjhmZDk4NjlmZDlhNmFmZDliNmJmZTlkNmNmZTlmNmRmZWExNmVmZWEzNmZmZWE1NzFmZWE3NzJmZWE5NzNmZWFhNzRmZWFjNzZmZWFlNzdmZWIwNzhmZWIyN2FmZWI0N2JmZWI2N2NmZWI3N2VmZWI5N2ZmZWJiODFmZWJkODJmZWJmODRmZWMxODVmZWMyODdmZWM0ODhmZWM2OGFmZWM4OGNmZWNhOGRmZWNjOGZmZWNkOTBmZWNmOTJmZWQxOTRmZWQzOTVmZWQ1OTdmZWQ3OTlmZWQ4OWFmZGRhOWNmZGRjOWVmZGRlYTBmZGUwYTFmZGUyYTNmZGUzYTVmZGU1YTdmZGU3YTlmZGU5YWFmZGViYWNmY2VjYWVmY2VlYjBmY2YwYjJmY2YyYjRmY2Y0YjZmY2Y2YjhmY2Y3YjlmY2Y5YmJmY2ZiYmRmY2ZkYmYiKSksTmI9ZWModmIoIjAwMDAwNDAxMDAwNTAxMDEwNjAxMDEwODAyMDEwYTAyMDIwYzAyMDIwZTAzMDIxMDA0MDMxMjA0MDMxNDA1MDQxNzA2MDQxOTA3MDUxYjA4MDUxZDA5MDYxZjBhMDcyMjBiMDcyNDBjMDgyNjBkMDgyOTBlMDkyYjEwMDkyZDExMGEzMDEyMGEzMjE0MGIzNDE1MGIzNzE2MGIzOTE4MGMzYzE5MGMzZTFiMGM0MTFjMGM0MzFlMGM0NTFmMGM0ODIxMGM0YTIzMGM0YzI0MGM0ZjI2MGM1MTI4MGI1MzI5MGI1NTJiMGI1NzJkMGI1OTJmMGE1YjMxMGE1YzMyMGE1ZTM0MGE1ZjM2MDk2MTM4MDk2MjM5MDk2MzNiMDk2NDNkMDk2NTNlMDk2NjQwMGE2NzQyMGE2ODQ0MGE2ODQ1MGE2OTQ3MGI2YTQ5MGI2YTRhMGM2YjRjMGM2YjRkMGQ2YzRmMGQ2YzUxMGU2YzUyMGU2ZDU0MGY2ZDU1MGY2ZDU3MTA2ZTU5MTA2ZTVhMTE2ZTVjMTI2ZTVkMTI2ZTVmMTM2ZTYxMTM2ZTYyMTQ2ZTY0MTU2ZTY1MTU2ZTY3MTY2ZTY5MTY2ZTZhMTc2ZTZjMTg2ZTZkMTg2ZTZmMTk2ZTcxMTk2ZTcyMWE2ZTc0MWE2ZTc1MWI2ZTc3MWM2ZDc4MWM2ZDdhMWQ2ZDdjMWQ2ZDdkMWU2ZDdmMWU2YzgwMWY2YzgyMjA2Yzg0MjA2Yjg1MjE2Yjg3MjE2Yjg4MjI2YThhMjI2YThjMjM2OThkMjM2OThmMjQ2OTkwMjU2ODkyMjU2ODkzMjY2Nzk1MjY2Nzk3Mjc2Njk4Mjc2NjlhMjg2NTliMjk2NDlkMjk2NDlmMmE2M2EwMmE2M2EyMmI2MmEzMmM2MWE1MmM2MGE2MmQ2MGE4MmU1ZmE5MmU1ZWFiMmY1ZWFkMzA1ZGFlMzA1Y2IwMzE1YmIxMzI1YWIzMzI1YWI0MzM1OWI2MzQ1OGI3MzU1N2I5MzU1NmJhMzY1NWJjMzc1NGJkMzg1M2JmMzk1MmMwM2E1MWMxM2E1MGMzM2I0ZmM0M2M0ZWM2M2Q0ZGM3M2U0Y2M4M2Y0YmNhNDA0YWNiNDE0OWNjNDI0OGNlNDM0N2NmNDQ0NmQwNDU0NWQyNDY0NGQzNDc0M2Q0NDg0MmQ1NGE0MWQ3NGIzZmQ4NGMzZWQ5NGQzZGRhNGUzY2RiNTAzYmRkNTEzYWRlNTIzOGRmNTMzN2UwNTUzNmUxNTYzNWUyNTczNGUzNTkzM2U0NWEzMWU1NWMzMGU2NWQyZmU3NWUyZWU4NjAyZGU5NjEyYmVhNjMyYWViNjQyOWViNjYyOGVjNjcyNmVkNjkyNWVlNmEyNGVmNmMyM2VmNmUyMWYwNmYyMGYxNzExZmYxNzMxZGYyNzQxY2YzNzYxYmYzNzgxOWY0NzkxOGY1N2IxN2Y1N2QxNWY2N2UxNGY2ODAxM2Y3ODIxMmY3ODQxMGY4ODUwZmY4ODcwZWY4ODkwY2Y5OGIwYmY5OGMwYWY5OGUwOWZhOTAwOGZhOTIwN2ZhOTQwN2ZiOTYwNmZiOTcwNmZiOTkwNmZiOWIwNmZiOWQwN2ZjOWYwN2ZjYTEwOGZjYTMwOWZjYTUwYWZjYTYwY2ZjYTgwZGZjYWEwZmZjYWMxMWZjYWUxMmZjYjAxNGZjYjIxNmZjYjQxOGZiYjYxYWZiYjgxZGZiYmExZmZiYmMyMWZiYmUyM2ZhYzAyNmZhYzIyOGZhYzQyYWZhYzYyZGY5YzcyZmY5YzkzMmY5Y2IzNWY4Y2QzN2Y4Y2YzYWY3ZDEzZGY3ZDM0MGY2ZDU0M2Y2ZDc0NmY1ZDk0OWY1ZGI0Y2Y0ZGQ0ZmY0ZGY1M2Y0ZTE1NmYzZTM1YWYzZTU1ZGYyZTY2MWYyZTg2NWYyZWE2OWYxZWM2ZGYxZWQ3MWYxZWY3NWYxZjE3OWYyZjI3ZGYyZjQ4MmYzZjU4NmYzZjY4YWY0Zjg4ZWY1Zjk5MmY2ZmE5NmY4ZmI5YWY5ZmM5ZGZhZmRhMWZjZmZhNCIpKSxFYj1lYyh2YigiMGQwODg3MTAwNzg4MTMwNzg5MTYwNzhhMTkwNjhjMWIwNjhkMWQwNjhlMjAwNjhmMjIwNjkwMjQwNjkxMjYwNTkxMjgwNTkyMmEwNTkzMmMwNTk0MmUwNTk1MmYwNTk2MzEwNTk3MzMwNTk3MzUwNDk4MzcwNDk5MzgwNDlhM2EwNDlhM2MwNDliM2UwNDljM2YwNDljNDEwNDlkNDMwMzllNDQwMzllNDYwMzlmNDgwMzlmNDkwM2EwNGIwM2ExNGMwMmExNGUwMmEyNTAwMmEyNTEwMmEzNTMwMmEzNTUwMmE0NTYwMWE0NTgwMWE0NTkwMWE1NWIwMWE1NWMwMWE2NWUwMWE2NjAwMWE2NjEwMGE3NjMwMGE3NjQwMGE3NjYwMGE3NjcwMGE4NjkwMGE4NmEwMGE4NmMwMGE4NmUwMGE4NmYwMGE4NzEwMGE4NzIwMWE4NzQwMWE4NzUwMWE4NzcwMWE4NzgwMWE4N2EwMmE4N2IwMmE4N2QwM2E4N2UwM2E4ODAwNGE4ODEwNGE3ODMwNWE3ODQwNWE3ODYwNmE2ODcwN2E2ODgwOGE2OGEwOWE1OGIwYWE1OGQwYmE1OGUwY2E0OGYwZGE0OTEwZWEzOTIwZmEzOTQxMGEyOTUxMWExOTYxM2ExOTgxNGEwOTkxNTlmOWExNjlmOWMxNzllOWQxODlkOWUxOTlkYTAxYTljYTExYjliYTIxZDlhYTMxZTlhYTUxZjk5YTYyMDk4YTcyMTk3YTgyMjk2YWEyMzk1YWIyNDk0YWMyNjk0YWQyNzkzYWUyODkyYjAyOTkxYjEyYTkwYjIyYjhmYjMyYzhlYjQyZThkYjUyZjhjYjYzMDhiYjczMThhYjgzMjg5YmEzMzg4YmIzNDg4YmMzNTg3YmQzNzg2YmUzODg1YmYzOTg0YzAzYTgzYzEzYjgyYzIzYzgxYzMzZDgwYzQzZTdmYzU0MDdlYzY0MTdkYzc0MjdjYzg0MzdiYzk0NDdhY2E0NTdhY2I0Njc5Y2M0Nzc4Y2M0OTc3Y2Q0YTc2Y2U0Yjc1Y2Y0Yzc0ZDA0ZDczZDE0ZTcyZDI0ZjcxZDM1MTcxZDQ1MjcwZDU1MzZmZDU1NDZlZDY1NTZkZDc1NjZjZDg1NzZiZDk1ODZhZGE1YTZhZGE1YjY5ZGI1YzY4ZGM1ZDY3ZGQ1ZTY2ZGU1ZjY1ZGU2MTY0ZGY2MjYzZTA2MzYzZTE2NDYyZTI2NTYxZTI2NjYwZTM2ODVmZTQ2OTVlZTU2YTVkZTU2YjVkZTY2YzVjZTc2ZTViZTc2ZjVhZTg3MDU5ZTk3MTU4ZTk3MjU3ZWE3NDU3ZWI3NTU2ZWI3NjU1ZWM3NzU0ZWQ3OTUzZWQ3YTUyZWU3YjUxZWY3YzUxZWY3ZTUwZjA3ZjRmZjA4MDRlZjE4MTRkZjE4MzRjZjI4NDRiZjM4NTRiZjM4NzRhZjQ4ODQ5ZjQ4OTQ4ZjU4YjQ3ZjU4YzQ2ZjY4ZDQ1ZjY4ZjQ0Zjc5MDQ0Zjc5MTQzZjc5MzQyZjg5NDQxZjg5NTQwZjk5NzNmZjk5ODNlZjk5YTNlZmE5YjNkZmE5YzNjZmE5ZTNiZmI5ZjNhZmJhMTM5ZmJhMjM4ZmNhMzM4ZmNhNTM3ZmNhNjM2ZmNhODM1ZmNhOTM0ZmRhYjMzZmRhYzMzZmRhZTMyZmRhZjMxZmRiMTMwZmRiMjJmZmRiNDJmZmRiNTJlZmViNzJkZmViODJjZmViYTJjZmViYjJiZmViZDJhZmViZTJhZmVjMDI5ZmRjMjI5ZmRjMzI4ZmRjNTI3ZmRjNjI3ZmRjODI3ZmRjYTI2ZmRjYjI2ZmNjZDI1ZmNjZTI1ZmNkMDI1ZmNkMjI1ZmJkMzI0ZmJkNTI0ZmJkNzI0ZmFkODI0ZmFkYTI0ZjlkYzI0ZjlkZDI1ZjhkZjI1ZjhlMTI1ZjdlMjI1ZjdlNDI1ZjZlNjI2ZjZlODI2ZjVlOTI2ZjVlYjI3ZjRlZDI3ZjNlZTI3ZjNmMDI3ZjJmMjI3ZjFmNDI2ZjFmNTI1ZjBmNzI0ZjBmOTIxIikpLEFiPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0fX0sQ2I9TWF0aC5hYnMsemI9TWF0aC5hdGFuMixQYj1NYXRoLmNvcyxSYj1NYXRoLm1heCxMYj1NYXRoLm1pbixxYj1NYXRoLnNpbixVYj1NYXRoLnNxcnQsRGI9MWUtMTIsT2I9TWF0aC5QSSxGYj1PYi8yLEliPTIqT2IsWWI9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7dmFyIHQscyxmPStuLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxsPStlLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxoPW8uYXBwbHkodGhpcyxhcmd1bWVudHMpLUZiLHA9dS5hcHBseSh0aGlzLGFyZ3VtZW50cyktRmIsZD1DYihwLWgpLHY9cD5oO2lmKGN8fChjPXQ9TGUoKSksbDxmJiYocz1sLGw9ZixmPXMpLGw+RGIpaWYoZD5JYi1EYiljLm1vdmVUbyhsKlBiKGgpLGwqcWIoaCkpLGMuYXJjKDAsMCxsLGgscCwhdiksZj5EYiYmKGMubW92ZVRvKGYqUGIocCksZipxYihwKSksYy5hcmMoMCwwLGYscCxoLHYpKTtlbHNle3ZhciBfLGcseT1oLG09cCx4PWgsYj1wLHc9ZCxNPWQsVD1hLmFwcGx5KHRoaXMsYXJndW1lbnRzKS8yLGs9VD5EYiYmKGk/K2kuYXBwbHkodGhpcyxhcmd1bWVudHMpOlViKGYqZitsKmwpKSxTPUxiKENiKGwtZikvMiwrci5hcHBseSh0aGlzLGFyZ3VtZW50cykpLE49UyxFPVM7aWYoaz5EYil7dmFyIEE9b2Moay9mKnFiKFQpKSxDPW9jKGsvbCpxYihUKSk7KHctPTIqQSk+RGI/KEEqPXY/MTotMSx4Kz1BLGItPUEpOih3PTAseD1iPShoK3ApLzIpLChNLT0yKkMpPkRiPyhDKj12PzE6LTEseSs9QyxtLT1DKTooTT0wLHk9bT0oaCtwKS8yKX12YXIgej1sKlBiKHkpLFA9bCpxYih5KSxSPWYqUGIoYiksTD1mKnFiKGIpO2lmKFM+RGIpe3ZhciBxPWwqUGIobSksVT1sKnFiKG0pLEQ9ZipQYih4KSxPPWYqcWIoeCk7aWYoZDxPYil7dmFyIEY9dz5EYj9sYyh6LFAsRCxPLHEsVSxSLEwpOltSLExdLEk9ei1GWzBdLFk9UC1GWzFdLEI9cS1GWzBdLGo9VS1GWzFdLEg9MS9xYihpYygoSSpCK1kqaikvKFViKEkqSStZKlkpKlViKEIqQitqKmopKSkvMiksWD1VYihGWzBdKkZbMF0rRlsxXSpGWzFdKTtOPUxiKFMsKGYtWCkvKEgtMSkpLEU9TGIoUywobC1YKS8oSCsxKSl9fU0+RGI/RT5EYj8oXz1oYyhELE8seixQLGwsRSx2KSxnPWhjKHEsVSxSLEwsbCxFLHYpLGMubW92ZVRvKF8uY3grXy54MDEsXy5jeStfLnkwMSksRTxTP2MuYXJjKF8uY3gsXy5jeSxFLHpiKF8ueTAxLF8ueDAxKSx6YihnLnkwMSxnLngwMSksIXYpOihjLmFyYyhfLmN4LF8uY3ksRSx6YihfLnkwMSxfLngwMSksemIoXy55MTEsXy54MTEpLCF2KSxjLmFyYygwLDAsbCx6YihfLmN5K18ueTExLF8uY3grXy54MTEpLHpiKGcuY3krZy55MTEsZy5jeCtnLngxMSksIXYpLGMuYXJjKGcuY3gsZy5jeSxFLHpiKGcueTExLGcueDExKSx6YihnLnkwMSxnLngwMSksIXYpKSk6KGMubW92ZVRvKHosUCksYy5hcmMoMCwwLGwseSxtLCF2KSk6Yy5tb3ZlVG8oeixQKSxmPkRiJiZ3PkRiP04+RGI/KF89aGMoUixMLHEsVSxmLC1OLHYpLGc9aGMoeixQLEQsTyxmLC1OLHYpLGMubGluZVRvKF8uY3grXy54MDEsXy5jeStfLnkwMSksTjxTP2MuYXJjKF8uY3gsXy5jeSxOLHpiKF8ueTAxLF8ueDAxKSx6YihnLnkwMSxnLngwMSksIXYpOihjLmFyYyhfLmN4LF8uY3ksTix6YihfLnkwMSxfLngwMSksemIoXy55MTEsXy54MTEpLCF2KSxjLmFyYygwLDAsZix6YihfLmN5K18ueTExLF8uY3grXy54MTEpLHpiKGcuY3krZy55MTEsZy5jeCtnLngxMSksdiksYy5hcmMoZy5jeCxnLmN5LE4semIoZy55MTEsZy54MTEpLHpiKGcueTAxLGcueDAxKSwhdikpKTpjLmFyYygwLDAsZixiLHgsdik6Yy5saW5lVG8oUixMKX1lbHNlIGMubW92ZVRvKDAsMCk7aWYoYy5jbG9zZVBhdGgoKSx0KXJldHVybiBjPW51bGwsdCsiInx8bnVsbH12YXIgbj11YyxlPWFjLHI9QWIoMCksaT1udWxsLG89Y2MsdT1zYyxhPWZjLGM9bnVsbDtyZXR1cm4gdC5jZW50cm9pZD1mdW5jdGlvbigpe3ZhciB0PSgrbi5hcHBseSh0aGlzLGFyZ3VtZW50cykrICtlLmFwcGx5KHRoaXMsYXJndW1lbnRzKSkvMixyPSgrby5hcHBseSh0aGlzLGFyZ3VtZW50cykrICt1LmFwcGx5KHRoaXMsYXJndW1lbnRzKSkvMi1PYi8yO3JldHVybltQYihyKSp0LHFiKHIpKnRdfSx0LmlubmVyUmFkaXVzPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPSJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6QWIoK2UpLHQpOm59LHQub3V0ZXJSYWRpdXM9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9ImZ1bmN0aW9uIj09dHlwZW9mIG4/bjpBYigrbiksdCk6ZX0sdC5jb3JuZXJSYWRpdXM9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9ImZ1bmN0aW9uIj09dHlwZW9mIG4/bjpBYigrbiksdCk6cn0sdC5wYWRSYWRpdXM9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9bnVsbD09bj9udWxsOiJmdW5jdGlvbiI9PXR5cGVvZiBuP246QWIoK24pLHQpOml9LHQuc3RhcnRBbmdsZT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz0iZnVuY3Rpb24iPT10eXBlb2Ygbj9uOkFiKCtuKSx0KTpvfSx0LmVuZEFuZ2xlPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PSJmdW5jdGlvbiI9PXR5cGVvZiBuP246QWIoK24pLHQpOnV9LHQucGFkQW5nbGU9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9ImZ1bmN0aW9uIj09dHlwZW9mIG4/bjpBYigrbiksdCk6YX0sdC5jb250ZXh0PWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhjPW51bGw9PW4/bnVsbDpuLHQpOmN9LHR9O3BjLnByb3RvdHlwZT17YXJlYVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxhcmVhRW5kOmZ1bmN0aW9uKCl7dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXsodGhpcy5fbGluZXx8MCE9PXRoaXMuX2xpbmUmJjE9PT10aGlzLl9wb2ludCkmJnRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCksdGhpcy5fbGluZT0xLXRoaXMuX2xpbmV9LHBvaW50OmZ1bmN0aW9uKHQsbil7c3dpdGNoKHQ9K3Qsbj0rbix0aGlzLl9wb2ludCl7Y2FzZSAwOnRoaXMuX3BvaW50PTEsdGhpcy5fbGluZT90aGlzLl9jb250ZXh0LmxpbmVUbyh0LG4pOnRoaXMuX2NvbnRleHQubW92ZVRvKHQsbik7YnJlYWs7Y2FzZSAxOnRoaXMuX3BvaW50PTI7ZGVmYXVsdDp0aGlzLl9jb250ZXh0LmxpbmVUbyh0LG4pfX19O3ZhciBCYj1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IHBjKHQpfSxqYj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dmFyIGEsYyxzLGY9dC5sZW5ndGgsbD0hMTtmb3IobnVsbD09aSYmKHU9byhzPUxlKCkpKSxhPTA7YTw9ZjsrK2EpIShhPGYmJnIoYz10W2FdLGEsdCkpPT09bCYmKChsPSFsKT91LmxpbmVTdGFydCgpOnUubGluZUVuZCgpKSxsJiZ1LnBvaW50KCtuKGMsYSx0KSwrZShjLGEsdCkpO2lmKHMpcmV0dXJuIHU9bnVsbCxzKyIifHxudWxsfXZhciBuPWRjLGU9dmMscj1BYighMCksaT1udWxsLG89QmIsdT1udWxsO3JldHVybiB0Lng9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZTpBYigrZSksdCk6bn0sdC55PWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPSJmdW5jdGlvbiI9PXR5cGVvZiBuP246QWIoK24pLHQpOmV9LHQuZGVmaW5lZD1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj0iZnVuY3Rpb24iPT10eXBlb2Ygbj9uOkFiKCEhbiksdCk6cn0sdC5jdXJ2ZT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz1uLG51bGwhPWkmJih1PW8oaSkpLHQpOm99LHQuY29udGV4dD1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obnVsbD09bj9pPXU9bnVsbDp1PW8oaT1uKSx0KTppfSx0fSxIYj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dmFyIG4sZixsLGgscCxkPXQubGVuZ3RoLHY9ITEsXz1uZXcgQXJyYXkoZCksZz1uZXcgQXJyYXkoZCk7Zm9yKG51bGw9PWEmJihzPWMocD1MZSgpKSksbj0wO248PWQ7KytuKXtpZighKG48ZCYmdShoPXRbbl0sbix0KSk9PT12KWlmKHY9IXYpZj1uLHMuYXJlYVN0YXJ0KCkscy5saW5lU3RhcnQoKTtlbHNle2ZvcihzLmxpbmVFbmQoKSxzLmxpbmVTdGFydCgpLGw9bi0xO2w+PWY7LS1sKXMucG9pbnQoX1tsXSxnW2xdKTtzLmxpbmVFbmQoKSxzLmFyZWFFbmQoKX12JiYoX1tuXT0rZShoLG4sdCksZ1tuXT0raShoLG4sdCkscy5wb2ludChyPytyKGgsbix0KTpfW25dLG8/K28oaCxuLHQpOmdbbl0pKX1pZihwKXJldHVybiBzPW51bGwscCsiInx8bnVsbH1mdW5jdGlvbiBuKCl7cmV0dXJuIGpiKCkuZGVmaW5lZCh1KS5jdXJ2ZShjKS5jb250ZXh0KGEpfXZhciBlPWRjLHI9bnVsbCxpPUFiKDApLG89dmMsdT1BYighMCksYT1udWxsLGM9QmIscz1udWxsO3JldHVybiB0Lng9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9ImZ1bmN0aW9uIj09dHlwZW9mIG4/bjpBYigrbikscj1udWxsLHQpOmV9LHQueDA9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9ImZ1bmN0aW9uIj09dHlwZW9mIG4/bjpBYigrbiksdCk6ZX0sdC54MT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj1udWxsPT1uP251bGw6ImZ1bmN0aW9uIj09dHlwZW9mIG4/bjpBYigrbiksdCk6cn0sdC55PWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPSJmdW5jdGlvbiI9PXR5cGVvZiBuP246QWIoK24pLG89bnVsbCx0KTppfSx0LnkwPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPSJmdW5jdGlvbiI9PXR5cGVvZiBuP246QWIoK24pLHQpOml9LHQueTE9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89bnVsbD09bj9udWxsOiJmdW5jdGlvbiI9PXR5cGVvZiBuP246QWIoK24pLHQpOm99LHQubGluZVgwPXQubGluZVkwPWZ1bmN0aW9uKCl7cmV0dXJuIG4oKS54KGUpLnkoaSl9LHQubGluZVkxPWZ1bmN0aW9uKCl7cmV0dXJuIG4oKS54KGUpLnkobyl9LHQubGluZVgxPWZ1bmN0aW9uKCl7cmV0dXJuIG4oKS54KHIpLnkoaSl9LHQuZGVmaW5lZD1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT0iZnVuY3Rpb24iPT10eXBlb2Ygbj9uOkFiKCEhbiksdCk6dX0sdC5jdXJ2ZT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz1uLG51bGwhPWEmJihzPWMoYSkpLHQpOmN9LHQuY29udGV4dD1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obnVsbD09bj9hPXM9bnVsbDpzPWMoYT1uKSx0KTphfSx0fSxYYj1mdW5jdGlvbih0LG4pe3JldHVybiBuPHQ/LTE6bj50PzE6bj49dD8wOk5hTn0sVmI9ZnVuY3Rpb24odCl7cmV0dXJuIHR9LFdiPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt2YXIgYSxjLHMsZixsLGg9dC5sZW5ndGgscD0wLGQ9bmV3IEFycmF5KGgpLHY9bmV3IEFycmF5KGgpLF89K2kuYXBwbHkodGhpcyxhcmd1bWVudHMpLGc9TWF0aC5taW4oSWIsTWF0aC5tYXgoLUliLG8uYXBwbHkodGhpcyxhcmd1bWVudHMpLV8pKSx5PU1hdGgubWluKE1hdGguYWJzKGcpL2gsdS5hcHBseSh0aGlzLGFyZ3VtZW50cykpLG09eSooZzwwPy0xOjEpO2ZvcihhPTA7YTxoOysrYSkobD12W2RbYV09YV09K24odFthXSxhLHQpKT4wJiYocCs9bCk7Zm9yKG51bGwhPWU/ZC5zb3J0KGZ1bmN0aW9uKHQsbil7cmV0dXJuIGUodlt0XSx2W25dKX0pOm51bGwhPXImJmQuc29ydChmdW5jdGlvbihuLGUpe3JldHVybiByKHRbbl0sdFtlXSl9KSxhPTAscz1wPyhnLWgqbSkvcDowO2E8aDsrK2EsXz1mKWM9ZFthXSxsPXZbY10sZj1fKyhsPjA/bCpzOjApK20sdltjXT17ZGF0YTp0W2NdLGluZGV4OmEsdmFsdWU6bCxzdGFydEFuZ2xlOl8sZW5kQW5nbGU6ZixwYWRBbmdsZTp5fTtyZXR1cm4gdn12YXIgbj1WYixlPVhiLHI9bnVsbCxpPUFiKDApLG89QWIoSWIpLHU9QWIoMCk7cmV0dXJuIHQudmFsdWU9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZTpBYigrZSksdCk6bn0sdC5zb3J0VmFsdWVzPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPW4scj1udWxsLHQpOmV9LHQuc29ydD1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj1uLGU9bnVsbCx0KTpyfSx0LnN0YXJ0QW5nbGU9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9ImZ1bmN0aW9uIj09dHlwZW9mIG4/bjpBYigrbiksdCk6aX0sdC5lbmRBbmdsZT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz0iZnVuY3Rpb24iPT10eXBlb2Ygbj9uOkFiKCtuKSx0KTpvfSx0LnBhZEFuZ2xlPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PSJmdW5jdGlvbiI9PXR5cGVvZiBuP246QWIoK24pLHQpOnV9LHR9LCRiPWdjKEJiKTtfYy5wcm90b3R5cGU9e2FyZWFTdGFydDpmdW5jdGlvbigpe3RoaXMuX2N1cnZlLmFyZWFTdGFydCgpfSxhcmVhRW5kOmZ1bmN0aW9uKCl7dGhpcy5fY3VydmUuYXJlYUVuZCgpfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9jdXJ2ZS5saW5lU3RhcnQoKX0sbGluZUVuZDpmdW5jdGlvbigpe3RoaXMuX2N1cnZlLmxpbmVFbmQoKX0scG9pbnQ6ZnVuY3Rpb24odCxuKXt0aGlzLl9jdXJ2ZS5wb2ludChuKk1hdGguc2luKHQpLG4qLU1hdGguY29zKHQpKX19O3ZhciBaYj1mdW5jdGlvbigpe3JldHVybiB5YyhqYigpLmN1cnZlKCRiKSl9LEdiPWZ1bmN0aW9uKCl7dmFyIHQ9SGIoKS5jdXJ2ZSgkYiksbj10LmN1cnZlLGU9dC5saW5lWDAscj10LmxpbmVYMSxpPXQubGluZVkwLG89dC5saW5lWTE7cmV0dXJuIHQuYW5nbGU9dC54LGRlbGV0ZSB0LngsdC5zdGFydEFuZ2xlPXQueDAsZGVsZXRlIHQueDAsdC5lbmRBbmdsZT10LngxLGRlbGV0ZSB0LngxLHQucmFkaXVzPXQueSxkZWxldGUgdC55LHQuaW5uZXJSYWRpdXM9dC55MCxkZWxldGUgdC55MCx0Lm91dGVyUmFkaXVzPXQueTEsZGVsZXRlIHQueTEsdC5saW5lU3RhcnRBbmdsZT1mdW5jdGlvbigpe3JldHVybiB5YyhlKCkpfSxkZWxldGUgdC5saW5lWDAsdC5saW5lRW5kQW5nbGU9ZnVuY3Rpb24oKXtyZXR1cm4geWMocigpKX0sZGVsZXRlIHQubGluZVgxLHQubGluZUlubmVyUmFkaXVzPWZ1bmN0aW9uKCl7cmV0dXJuIHljKGkoKSl9LGRlbGV0ZSB0LmxpbmVZMCx0LmxpbmVPdXRlclJhZGl1cz1mdW5jdGlvbigpe3JldHVybiB5YyhvKCkpfSxkZWxldGUgdC5saW5lWTEsdC5jdXJ2ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD9uKGdjKHQpKTpuKCkuX2N1cnZlfSx0fSxKYj17ZHJhdzpmdW5jdGlvbih0LG4pe3ZhciBlPU1hdGguc3FydChuL09iKTt0Lm1vdmVUbyhlLDApLHQuYXJjKDAsMCxlLDAsSWIpfX0sUWI9e2RyYXc6ZnVuY3Rpb24odCxuKXt2YXIgZT1NYXRoLnNxcnQobi81KS8yO3QubW92ZVRvKC0zKmUsLWUpLHQubGluZVRvKC1lLC1lKSx0LmxpbmVUbygtZSwtMyplKSx0LmxpbmVUbyhlLC0zKmUpLHQubGluZVRvKGUsLWUpLHQubGluZVRvKDMqZSwtZSksdC5saW5lVG8oMyplLGUpLHQubGluZVRvKGUsZSksdC5saW5lVG8oZSwzKmUpLHQubGluZVRvKC1lLDMqZSksdC5saW5lVG8oLWUsZSksdC5saW5lVG8oLTMqZSxlKSx0LmNsb3NlUGF0aCgpfX0sS2I9TWF0aC5zcXJ0KDEvMyksdHc9MipLYixudz17ZHJhdzpmdW5jdGlvbih0LG4pe3ZhciBlPU1hdGguc3FydChuL3R3KSxyPWUqS2I7dC5tb3ZlVG8oMCwtZSksdC5saW5lVG8ociwwKSx0LmxpbmVUbygwLGUpLHQubGluZVRvKC1yLDApLHQuY2xvc2VQYXRoKCl9fSxldz0uODkwODEzMDkxNTI5Mjg1Mixydz1NYXRoLnNpbihPYi8xMCkvTWF0aC5zaW4oNypPYi8xMCksaXc9TWF0aC5zaW4oSWIvMTApKnJ3LG93PS1NYXRoLmNvcyhJYi8xMCkqcncsdXc9e2RyYXc6ZnVuY3Rpb24odCxuKXt2YXIgZT1NYXRoLnNxcnQobipldykscj1pdyplLGk9b3cqZTt0Lm1vdmVUbygwLC1lKSx0LmxpbmVUbyhyLGkpO2Zvcih2YXIgbz0xO288NTsrK28pe3ZhciB1PUliKm8vNSxhPU1hdGguY29zKHUpLGM9TWF0aC5zaW4odSk7dC5saW5lVG8oYyplLC1hKmUpLHQubGluZVRvKGEqci1jKmksYypyK2EqaSl9dC5jbG9zZVBhdGgoKX19LGF3PXtkcmF3OmZ1bmN0aW9uKHQsbil7dmFyIGU9TWF0aC5zcXJ0KG4pLHI9LWUvMjt0LnJlY3QocixyLGUsZSl9fSxjdz1NYXRoLnNxcnQoMyksc3c9e2RyYXc6ZnVuY3Rpb24odCxuKXt2YXIgZT0tTWF0aC5zcXJ0KG4vKDMqY3cpKTt0Lm1vdmVUbygwLDIqZSksdC5saW5lVG8oLWN3KmUsLWUpLHQubGluZVRvKGN3KmUsLWUpLHQuY2xvc2VQYXRoKCl9fSxmdz0tLjUsbHc9TWF0aC5zcXJ0KDMpLzIsaHc9MS9NYXRoLnNxcnQoMTIpLHB3PTMqKGh3LzIrMSksZHc9e2RyYXc6ZnVuY3Rpb24odCxuKXt2YXIgZT1NYXRoLnNxcnQobi9wdykscj1lLzIsaT1lKmh3LG89cix1PWUqaHcrZSxhPS1vLGM9dTt0Lm1vdmVUbyhyLGkpLHQubGluZVRvKG8sdSksdC5saW5lVG8oYSxjKSx0LmxpbmVUbyhmdypyLWx3KmksbHcqcitmdyppKSx0LmxpbmVUbyhmdypvLWx3KnUsbHcqbytmdyp1KSx0LmxpbmVUbyhmdyphLWx3KmMsbHcqYStmdypjKSx0LmxpbmVUbyhmdypyK2x3KmksZncqaS1sdypyKSx0LmxpbmVUbyhmdypvK2x3KnUsZncqdS1sdypvKSx0LmxpbmVUbyhmdyphK2x3KmMsZncqYy1sdyphKSx0LmNsb3NlUGF0aCgpfX0sdnc9W0piLFFiLG53LGF3LHV3LHN3LGR3XSxfdz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt2YXIgdDtpZihyfHwocj10PUxlKCkpLG4uYXBwbHkodGhpcyxhcmd1bWVudHMpLmRyYXcociwrZS5hcHBseSh0aGlzLGFyZ3VtZW50cykpLHQpcmV0dXJuIHI9bnVsbCx0KyIifHxudWxsfXZhciBuPUFiKEpiKSxlPUFiKDY0KSxyPW51bGw7cmV0dXJuIHQudHlwZT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0iZnVuY3Rpb24iPT10eXBlb2YgZT9lOkFiKGUpLHQpOm59LHQuc2l6ZT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT0iZnVuY3Rpb24iPT10eXBlb2Ygbj9uOkFiKCtuKSx0KTplfSx0LmNvbnRleHQ9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9bnVsbD09bj9udWxsOm4sdCk6cn0sdH0sZ3c9ZnVuY3Rpb24oKXt9O3hjLnByb3RvdHlwZT17YXJlYVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxhcmVhRW5kOmZ1bmN0aW9uKCl7dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3gwPXRoaXMuX3gxPXRoaXMuX3kwPXRoaXMuX3kxPU5hTix0aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDM6bWModGhpcyx0aGlzLl94MSx0aGlzLl95MSk7Y2FzZSAyOnRoaXMuX2NvbnRleHQubGluZVRvKHRoaXMuX3gxLHRoaXMuX3kxKX0odGhpcy5fbGluZXx8MCE9PXRoaXMuX2xpbmUmJjE9PT10aGlzLl9wb2ludCkmJnRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCksdGhpcy5fbGluZT0xLXRoaXMuX2xpbmV9LHBvaW50OmZ1bmN0aW9uKHQsbil7c3dpdGNoKHQ9K3Qsbj0rbix0aGlzLl9wb2ludCl7Y2FzZSAwOnRoaXMuX3BvaW50PTEsdGhpcy5fbGluZT90aGlzLl9jb250ZXh0LmxpbmVUbyh0LG4pOnRoaXMuX2NvbnRleHQubW92ZVRvKHQsbik7YnJlYWs7Y2FzZSAxOnRoaXMuX3BvaW50PTI7YnJlYWs7Y2FzZSAyOnRoaXMuX3BvaW50PTMsdGhpcy5fY29udGV4dC5saW5lVG8oKDUqdGhpcy5feDArdGhpcy5feDEpLzYsKDUqdGhpcy5feTArdGhpcy5feTEpLzYpO2RlZmF1bHQ6bWModGhpcyx0LG4pfXRoaXMuX3gwPXRoaXMuX3gxLHRoaXMuX3gxPXQsdGhpcy5feTA9dGhpcy5feTEsdGhpcy5feTE9bn19O3ZhciB5dz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IHhjKHQpfTtiYy5wcm90b3R5cGU9e2FyZWFTdGFydDpndyxhcmVhRW5kOmd3LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3gwPXRoaXMuX3gxPXRoaXMuX3gyPXRoaXMuX3gzPXRoaXMuX3g0PXRoaXMuX3kwPXRoaXMuX3kxPXRoaXMuX3kyPXRoaXMuX3kzPXRoaXMuX3k0PU5hTix0aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDE6dGhpcy5fY29udGV4dC5tb3ZlVG8odGhpcy5feDIsdGhpcy5feTIpLHRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCk7YnJlYWs7Y2FzZSAyOnRoaXMuX2NvbnRleHQubW92ZVRvKCh0aGlzLl94MisyKnRoaXMuX3gzKS8zLCh0aGlzLl95MisyKnRoaXMuX3kzKS8zKSx0aGlzLl9jb250ZXh0LmxpbmVUbygodGhpcy5feDMrMip0aGlzLl94MikvMywodGhpcy5feTMrMip0aGlzLl95MikvMyksdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKTticmVhaztjYXNlIDM6dGhpcy5wb2ludCh0aGlzLl94Mix0aGlzLl95MiksdGhpcy5wb2ludCh0aGlzLl94Myx0aGlzLl95MyksdGhpcy5wb2ludCh0aGlzLl94NCx0aGlzLl95NCl9fSxwb2ludDpmdW5jdGlvbih0LG4pe3N3aXRjaCh0PSt0LG49K24sdGhpcy5fcG9pbnQpe2Nhc2UgMDp0aGlzLl9wb2ludD0xLHRoaXMuX3gyPXQsdGhpcy5feTI9bjticmVhaztjYXNlIDE6dGhpcy5fcG9pbnQ9Mix0aGlzLl94Mz10LHRoaXMuX3kzPW47YnJlYWs7Y2FzZSAyOnRoaXMuX3BvaW50PTMsdGhpcy5feDQ9dCx0aGlzLl95ND1uLHRoaXMuX2NvbnRleHQubW92ZVRvKCh0aGlzLl94MCs0KnRoaXMuX3gxK3QpLzYsKHRoaXMuX3kwKzQqdGhpcy5feTErbikvNik7YnJlYWs7ZGVmYXVsdDptYyh0aGlzLHQsbil9dGhpcy5feDA9dGhpcy5feDEsdGhpcy5feDE9dCx0aGlzLl95MD10aGlzLl95MSx0aGlzLl95MT1ufX07dmFyIG13PWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgYmModCl9O3djLnByb3RvdHlwZT17YXJlYVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxhcmVhRW5kOmZ1bmN0aW9uKCl7dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3gwPXRoaXMuX3gxPXRoaXMuX3kwPXRoaXMuX3kxPU5hTix0aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7KHRoaXMuX2xpbmV8fDAhPT10aGlzLl9saW5lJiYzPT09dGhpcy5fcG9pbnQpJiZ0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpLHRoaXMuX2xpbmU9MS10aGlzLl9saW5lfSxwb2ludDpmdW5jdGlvbih0LG4pe3N3aXRjaCh0PSt0LG49K24sdGhpcy5fcG9pbnQpe2Nhc2UgMDp0aGlzLl9wb2ludD0xO2JyZWFrO2Nhc2UgMTp0aGlzLl9wb2ludD0yO2JyZWFrO2Nhc2UgMjp0aGlzLl9wb2ludD0zO3ZhciBlPSh0aGlzLl94MCs0KnRoaXMuX3gxK3QpLzYscj0odGhpcy5feTArNCp0aGlzLl95MStuKS82O3RoaXMuX2xpbmU/dGhpcy5fY29udGV4dC5saW5lVG8oZSxyKTp0aGlzLl9jb250ZXh0Lm1vdmVUbyhlLHIpO2JyZWFrO2Nhc2UgMzp0aGlzLl9wb2ludD00O2RlZmF1bHQ6bWModGhpcyx0LG4pfXRoaXMuX3gwPXRoaXMuX3gxLHRoaXMuX3gxPXQsdGhpcy5feTA9dGhpcy5feTEsdGhpcy5feTE9bn19O3ZhciB4dz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IHdjKHQpfTtNYy5wcm90b3R5cGU9e2xpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3g9W10sdGhpcy5feT1bXSx0aGlzLl9iYXNpcy5saW5lU3RhcnQoKX0sbGluZUVuZDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX3gsbj10aGlzLl95LGU9dC5sZW5ndGgtMTtpZihlPjApZm9yKHZhciByLGk9dFswXSxvPW5bMF0sdT10W2VdLWksYT1uW2VdLW8sYz0tMTsrK2M8PWU7KXI9Yy9lLHRoaXMuX2Jhc2lzLnBvaW50KHRoaXMuX2JldGEqdFtjXSsoMS10aGlzLl9iZXRhKSooaStyKnUpLHRoaXMuX2JldGEqbltjXSsoMS10aGlzLl9iZXRhKSoobytyKmEpKTt0aGlzLl94PXRoaXMuX3k9bnVsbCx0aGlzLl9iYXNpcy5saW5lRW5kKCl9LHBvaW50OmZ1bmN0aW9uKHQsbil7dGhpcy5feC5wdXNoKCt0KSx0aGlzLl95LnB1c2goK24pfX07dmFyIGJ3PWZ1bmN0aW9uIHQobil7ZnVuY3Rpb24gZSh0KXtyZXR1cm4gMT09PW4/bmV3IHhjKHQpOm5ldyBNYyh0LG4pfXJldHVybiBlLmJldGE9ZnVuY3Rpb24obil7cmV0dXJuIHQoK24pfSxlfSguODUpO2tjLnByb3RvdHlwZT17YXJlYVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxhcmVhRW5kOmZ1bmN0aW9uKCl7dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3gwPXRoaXMuX3gxPXRoaXMuX3gyPXRoaXMuX3kwPXRoaXMuX3kxPXRoaXMuX3kyPU5hTix0aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDI6dGhpcy5fY29udGV4dC5saW5lVG8odGhpcy5feDIsdGhpcy5feTIpO2JyZWFrO2Nhc2UgMzpUYyh0aGlzLHRoaXMuX3gxLHRoaXMuX3kxKX0odGhpcy5fbGluZXx8MCE9PXRoaXMuX2xpbmUmJjE9PT10aGlzLl9wb2ludCkmJnRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCksdGhpcy5fbGluZT0xLXRoaXMuX2xpbmV9LHBvaW50OmZ1bmN0aW9uKHQsbil7c3dpdGNoKHQ9K3Qsbj0rbix0aGlzLl9wb2ludCl7Y2FzZSAwOnRoaXMuX3BvaW50PTEsdGhpcy5fbGluZT90aGlzLl9jb250ZXh0LmxpbmVUbyh0LG4pOnRoaXMuX2NvbnRleHQubW92ZVRvKHQsbik7YnJlYWs7Y2FzZSAxOnRoaXMuX3BvaW50PTIsdGhpcy5feDE9dCx0aGlzLl95MT1uO2JyZWFrO2Nhc2UgMjp0aGlzLl9wb2ludD0zO2RlZmF1bHQ6VGModGhpcyx0LG4pfXRoaXMuX3gwPXRoaXMuX3gxLHRoaXMuX3gxPXRoaXMuX3gyLHRoaXMuX3gyPXQsdGhpcy5feTA9dGhpcy5feTEsdGhpcy5feTE9dGhpcy5feTIsdGhpcy5feTI9bn19O3ZhciB3dz1mdW5jdGlvbiB0KG4pe2Z1bmN0aW9uIGUodCl7cmV0dXJuIG5ldyBrYyh0LG4pfXJldHVybiBlLnRlbnNpb249ZnVuY3Rpb24obil7cmV0dXJuIHQoK24pfSxlfSgwKTtTYy5wcm90b3R5cGU9e2FyZWFTdGFydDpndyxhcmVhRW5kOmd3LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3gwPXRoaXMuX3gxPXRoaXMuX3gyPXRoaXMuX3gzPXRoaXMuX3g0PXRoaXMuX3g1PXRoaXMuX3kwPXRoaXMuX3kxPXRoaXMuX3kyPXRoaXMuX3kzPXRoaXMuX3k0PXRoaXMuX3k1PU5hTix0aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDE6dGhpcy5fY29udGV4dC5tb3ZlVG8odGhpcy5feDMsdGhpcy5feTMpLHRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCk7YnJlYWs7Y2FzZSAyOnRoaXMuX2NvbnRleHQubGluZVRvKHRoaXMuX3gzLHRoaXMuX3kzKSx0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpO2JyZWFrO2Nhc2UgMzp0aGlzLnBvaW50KHRoaXMuX3gzLHRoaXMuX3kzKSx0aGlzLnBvaW50KHRoaXMuX3g0LHRoaXMuX3k0KSx0aGlzLnBvaW50KHRoaXMuX3g1LHRoaXMuX3k1KX19LHBvaW50OmZ1bmN0aW9uKHQsbil7c3dpdGNoKHQ9K3Qsbj0rbix0aGlzLl9wb2ludCl7Y2FzZSAwOnRoaXMuX3BvaW50PTEsdGhpcy5feDM9dCx0aGlzLl95Mz1uO2JyZWFrO2Nhc2UgMTp0aGlzLl9wb2ludD0yLHRoaXMuX2NvbnRleHQubW92ZVRvKHRoaXMuX3g0PXQsdGhpcy5feTQ9bik7YnJlYWs7Y2FzZSAyOnRoaXMuX3BvaW50PTMsdGhpcy5feDU9dCx0aGlzLl95NT1uO2JyZWFrO2RlZmF1bHQ6VGModGhpcyx0LG4pfXRoaXMuX3gwPXRoaXMuX3gxLHRoaXMuX3gxPXRoaXMuX3gyLHRoaXMuX3gyPXQsdGhpcy5feTA9dGhpcy5feTEsdGhpcy5feTE9dGhpcy5feTIsdGhpcy5feTI9bn19O3ZhciBNdz1mdW5jdGlvbiB0KG4pe2Z1bmN0aW9uIGUodCl7cmV0dXJuIG5ldyBTYyh0LG4pfXJldHVybiBlLnRlbnNpb249ZnVuY3Rpb24obil7cmV0dXJuIHQoK24pfSxlfSgwKTtOYy5wcm90b3R5cGU9e2FyZWFTdGFydDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9MH0sYXJlYUVuZDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9TmFOfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl94MD10aGlzLl94MT10aGlzLl94Mj10aGlzLl95MD10aGlzLl95MT10aGlzLl95Mj1OYU4sdGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpeyh0aGlzLl9saW5lfHwwIT09dGhpcy5fbGluZSYmMz09PXRoaXMuX3BvaW50KSYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKSx0aGlzLl9saW5lPTEtdGhpcy5fbGluZX0scG9pbnQ6ZnVuY3Rpb24odCxuKXtzd2l0Y2godD0rdCxuPStuLHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fcG9pbnQ9MTticmVhaztjYXNlIDE6dGhpcy5fcG9pbnQ9MjticmVhaztjYXNlIDI6dGhpcy5fcG9pbnQ9Myx0aGlzLl9saW5lP3RoaXMuX2NvbnRleHQubGluZVRvKHRoaXMuX3gyLHRoaXMuX3kyKTp0aGlzLl9jb250ZXh0Lm1vdmVUbyh0aGlzLl94Mix0aGlzLl95Mik7YnJlYWs7Y2FzZSAzOnRoaXMuX3BvaW50PTQ7ZGVmYXVsdDpUYyh0aGlzLHQsbil9dGhpcy5feDA9dGhpcy5feDEsdGhpcy5feDE9dGhpcy5feDIsdGhpcy5feDI9dCx0aGlzLl95MD10aGlzLl95MSx0aGlzLl95MT10aGlzLl95Mix0aGlzLl95Mj1ufX07dmFyIFR3PWZ1bmN0aW9uIHQobil7ZnVuY3Rpb24gZSh0KXtyZXR1cm4gbmV3IE5jKHQsbil9cmV0dXJuIGUudGVuc2lvbj1mdW5jdGlvbihuKXtyZXR1cm4gdCgrbil9LGV9KDApO0FjLnByb3RvdHlwZT17YXJlYVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxhcmVhRW5kOmZ1bmN0aW9uKCl7dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3gwPXRoaXMuX3gxPXRoaXMuX3gyPXRoaXMuX3kwPXRoaXMuX3kxPXRoaXMuX3kyPU5hTix0aGlzLl9sMDFfYT10aGlzLl9sMTJfYT10aGlzLl9sMjNfYT10aGlzLl9sMDFfMmE9dGhpcy5fbDEyXzJhPXRoaXMuX2wyM18yYT10aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDI6dGhpcy5fY29udGV4dC5saW5lVG8odGhpcy5feDIsdGhpcy5feTIpO2JyZWFrO2Nhc2UgMzp0aGlzLnBvaW50KHRoaXMuX3gyLHRoaXMuX3kyKX0odGhpcy5fbGluZXx8MCE9PXRoaXMuX2xpbmUmJjE9PT10aGlzLl9wb2ludCkmJnRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCksdGhpcy5fbGluZT0xLXRoaXMuX2xpbmV9LHBvaW50OmZ1bmN0aW9uKHQsbil7aWYodD0rdCxuPStuLHRoaXMuX3BvaW50KXt2YXIgZT10aGlzLl94Mi10LHI9dGhpcy5feTItbjt0aGlzLl9sMjNfYT1NYXRoLnNxcnQodGhpcy5fbDIzXzJhPU1hdGgucG93KGUqZStyKnIsdGhpcy5fYWxwaGEpKX1zd2l0Y2godGhpcy5fcG9pbnQpe2Nhc2UgMDp0aGlzLl9wb2ludD0xLHRoaXMuX2xpbmU/dGhpcy5fY29udGV4dC5saW5lVG8odCxuKTp0aGlzLl9jb250ZXh0Lm1vdmVUbyh0LG4pO2JyZWFrO2Nhc2UgMTp0aGlzLl9wb2ludD0yO2JyZWFrO2Nhc2UgMjp0aGlzLl9wb2ludD0zCjtkZWZhdWx0OkVjKHRoaXMsdCxuKX10aGlzLl9sMDFfYT10aGlzLl9sMTJfYSx0aGlzLl9sMTJfYT10aGlzLl9sMjNfYSx0aGlzLl9sMDFfMmE9dGhpcy5fbDEyXzJhLHRoaXMuX2wxMl8yYT10aGlzLl9sMjNfMmEsdGhpcy5feDA9dGhpcy5feDEsdGhpcy5feDE9dGhpcy5feDIsdGhpcy5feDI9dCx0aGlzLl95MD10aGlzLl95MSx0aGlzLl95MT10aGlzLl95Mix0aGlzLl95Mj1ufX07dmFyIGt3PWZ1bmN0aW9uIHQobil7ZnVuY3Rpb24gZSh0KXtyZXR1cm4gbj9uZXcgQWModCxuKTpuZXcga2ModCwwKX1yZXR1cm4gZS5hbHBoYT1mdW5jdGlvbihuKXtyZXR1cm4gdCgrbil9LGV9KC41KTtDYy5wcm90b3R5cGU9e2FyZWFTdGFydDpndyxhcmVhRW5kOmd3LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3gwPXRoaXMuX3gxPXRoaXMuX3gyPXRoaXMuX3gzPXRoaXMuX3g0PXRoaXMuX3g1PXRoaXMuX3kwPXRoaXMuX3kxPXRoaXMuX3kyPXRoaXMuX3kzPXRoaXMuX3k0PXRoaXMuX3k1PU5hTix0aGlzLl9sMDFfYT10aGlzLl9sMTJfYT10aGlzLl9sMjNfYT10aGlzLl9sMDFfMmE9dGhpcy5fbDEyXzJhPXRoaXMuX2wyM18yYT10aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDE6dGhpcy5fY29udGV4dC5tb3ZlVG8odGhpcy5feDMsdGhpcy5feTMpLHRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCk7YnJlYWs7Y2FzZSAyOnRoaXMuX2NvbnRleHQubGluZVRvKHRoaXMuX3gzLHRoaXMuX3kzKSx0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpO2JyZWFrO2Nhc2UgMzp0aGlzLnBvaW50KHRoaXMuX3gzLHRoaXMuX3kzKSx0aGlzLnBvaW50KHRoaXMuX3g0LHRoaXMuX3k0KSx0aGlzLnBvaW50KHRoaXMuX3g1LHRoaXMuX3k1KX19LHBvaW50OmZ1bmN0aW9uKHQsbil7aWYodD0rdCxuPStuLHRoaXMuX3BvaW50KXt2YXIgZT10aGlzLl94Mi10LHI9dGhpcy5feTItbjt0aGlzLl9sMjNfYT1NYXRoLnNxcnQodGhpcy5fbDIzXzJhPU1hdGgucG93KGUqZStyKnIsdGhpcy5fYWxwaGEpKX1zd2l0Y2godGhpcy5fcG9pbnQpe2Nhc2UgMDp0aGlzLl9wb2ludD0xLHRoaXMuX3gzPXQsdGhpcy5feTM9bjticmVhaztjYXNlIDE6dGhpcy5fcG9pbnQ9Mix0aGlzLl9jb250ZXh0Lm1vdmVUbyh0aGlzLl94ND10LHRoaXMuX3k0PW4pO2JyZWFrO2Nhc2UgMjp0aGlzLl9wb2ludD0zLHRoaXMuX3g1PXQsdGhpcy5feTU9bjticmVhaztkZWZhdWx0OkVjKHRoaXMsdCxuKX10aGlzLl9sMDFfYT10aGlzLl9sMTJfYSx0aGlzLl9sMTJfYT10aGlzLl9sMjNfYSx0aGlzLl9sMDFfMmE9dGhpcy5fbDEyXzJhLHRoaXMuX2wxMl8yYT10aGlzLl9sMjNfMmEsdGhpcy5feDA9dGhpcy5feDEsdGhpcy5feDE9dGhpcy5feDIsdGhpcy5feDI9dCx0aGlzLl95MD10aGlzLl95MSx0aGlzLl95MT10aGlzLl95Mix0aGlzLl95Mj1ufX07dmFyIFN3PWZ1bmN0aW9uIHQobil7ZnVuY3Rpb24gZSh0KXtyZXR1cm4gbj9uZXcgQ2ModCxuKTpuZXcgU2ModCwwKX1yZXR1cm4gZS5hbHBoYT1mdW5jdGlvbihuKXtyZXR1cm4gdCgrbil9LGV9KC41KTt6Yy5wcm90b3R5cGU9e2FyZWFTdGFydDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9MH0sYXJlYUVuZDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9TmFOfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl94MD10aGlzLl94MT10aGlzLl94Mj10aGlzLl95MD10aGlzLl95MT10aGlzLl95Mj1OYU4sdGhpcy5fbDAxX2E9dGhpcy5fbDEyX2E9dGhpcy5fbDIzX2E9dGhpcy5fbDAxXzJhPXRoaXMuX2wxMl8yYT10aGlzLl9sMjNfMmE9dGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpeyh0aGlzLl9saW5lfHwwIT09dGhpcy5fbGluZSYmMz09PXRoaXMuX3BvaW50KSYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKSx0aGlzLl9saW5lPTEtdGhpcy5fbGluZX0scG9pbnQ6ZnVuY3Rpb24odCxuKXtpZih0PSt0LG49K24sdGhpcy5fcG9pbnQpe3ZhciBlPXRoaXMuX3gyLXQscj10aGlzLl95Mi1uO3RoaXMuX2wyM19hPU1hdGguc3FydCh0aGlzLl9sMjNfMmE9TWF0aC5wb3coZSplK3Iqcix0aGlzLl9hbHBoYSkpfXN3aXRjaCh0aGlzLl9wb2ludCl7Y2FzZSAwOnRoaXMuX3BvaW50PTE7YnJlYWs7Y2FzZSAxOnRoaXMuX3BvaW50PTI7YnJlYWs7Y2FzZSAyOnRoaXMuX3BvaW50PTMsdGhpcy5fbGluZT90aGlzLl9jb250ZXh0LmxpbmVUbyh0aGlzLl94Mix0aGlzLl95Mik6dGhpcy5fY29udGV4dC5tb3ZlVG8odGhpcy5feDIsdGhpcy5feTIpO2JyZWFrO2Nhc2UgMzp0aGlzLl9wb2ludD00O2RlZmF1bHQ6RWModGhpcyx0LG4pfXRoaXMuX2wwMV9hPXRoaXMuX2wxMl9hLHRoaXMuX2wxMl9hPXRoaXMuX2wyM19hLHRoaXMuX2wwMV8yYT10aGlzLl9sMTJfMmEsdGhpcy5fbDEyXzJhPXRoaXMuX2wyM18yYSx0aGlzLl94MD10aGlzLl94MSx0aGlzLl94MT10aGlzLl94Mix0aGlzLl94Mj10LHRoaXMuX3kwPXRoaXMuX3kxLHRoaXMuX3kxPXRoaXMuX3kyLHRoaXMuX3kyPW59fTt2YXIgTnc9ZnVuY3Rpb24gdChuKXtmdW5jdGlvbiBlKHQpe3JldHVybiBuP25ldyB6Yyh0LG4pOm5ldyBOYyh0LDApfXJldHVybiBlLmFscGhhPWZ1bmN0aW9uKG4pe3JldHVybiB0KCtuKX0sZX0oLjUpO1BjLnByb3RvdHlwZT17YXJlYVN0YXJ0Omd3LGFyZWFFbmQ6Z3csbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpe3RoaXMuX3BvaW50JiZ0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpfSxwb2ludDpmdW5jdGlvbih0LG4pe3Q9K3Qsbj0rbix0aGlzLl9wb2ludD90aGlzLl9jb250ZXh0LmxpbmVUbyh0LG4pOih0aGlzLl9wb2ludD0xLHRoaXMuX2NvbnRleHQubW92ZVRvKHQsbikpfX07dmFyIEV3PWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgUGModCl9O0RjLnByb3RvdHlwZT17YXJlYVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxhcmVhRW5kOmZ1bmN0aW9uKCl7dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3gwPXRoaXMuX3gxPXRoaXMuX3kwPXRoaXMuX3kxPXRoaXMuX3QwPU5hTix0aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDI6dGhpcy5fY29udGV4dC5saW5lVG8odGhpcy5feDEsdGhpcy5feTEpO2JyZWFrO2Nhc2UgMzpVYyh0aGlzLHRoaXMuX3QwLHFjKHRoaXMsdGhpcy5fdDApKX0odGhpcy5fbGluZXx8MCE9PXRoaXMuX2xpbmUmJjE9PT10aGlzLl9wb2ludCkmJnRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCksdGhpcy5fbGluZT0xLXRoaXMuX2xpbmV9LHBvaW50OmZ1bmN0aW9uKHQsbil7dmFyIGU9TmFOO2lmKHQ9K3Qsbj0rbix0IT09dGhpcy5feDF8fG4hPT10aGlzLl95MSl7c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fcG9pbnQ9MSx0aGlzLl9saW5lP3RoaXMuX2NvbnRleHQubGluZVRvKHQsbik6dGhpcy5fY29udGV4dC5tb3ZlVG8odCxuKTticmVhaztjYXNlIDE6dGhpcy5fcG9pbnQ9MjticmVhaztjYXNlIDI6dGhpcy5fcG9pbnQ9MyxVYyh0aGlzLHFjKHRoaXMsZT1MYyh0aGlzLHQsbikpLGUpO2JyZWFrO2RlZmF1bHQ6VWModGhpcyx0aGlzLl90MCxlPUxjKHRoaXMsdCxuKSl9dGhpcy5feDA9dGhpcy5feDEsdGhpcy5feDE9dCx0aGlzLl95MD10aGlzLl95MSx0aGlzLl95MT1uLHRoaXMuX3QwPWV9fX0sKE9jLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKERjLnByb3RvdHlwZSkpLnBvaW50PWZ1bmN0aW9uKHQsbil7RGMucHJvdG90eXBlLnBvaW50LmNhbGwodGhpcyxuLHQpfSxGYy5wcm90b3R5cGU9e21vdmVUbzpmdW5jdGlvbih0LG4pe3RoaXMuX2NvbnRleHQubW92ZVRvKG4sdCl9LGNsb3NlUGF0aDpmdW5jdGlvbigpe3RoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCl9LGxpbmVUbzpmdW5jdGlvbih0LG4pe3RoaXMuX2NvbnRleHQubGluZVRvKG4sdCl9LGJlemllckN1cnZlVG86ZnVuY3Rpb24odCxuLGUscixpLG8pe3RoaXMuX2NvbnRleHQuYmV6aWVyQ3VydmVUbyhuLHQscixlLG8saSl9fSxCYy5wcm90b3R5cGU9e2FyZWFTdGFydDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9MH0sYXJlYUVuZDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9TmFOfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl94PVtdLHRoaXMuX3k9W119LGxpbmVFbmQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl94LG49dGhpcy5feSxlPXQubGVuZ3RoO2lmKGUpaWYodGhpcy5fbGluZT90aGlzLl9jb250ZXh0LmxpbmVUbyh0WzBdLG5bMF0pOnRoaXMuX2NvbnRleHQubW92ZVRvKHRbMF0sblswXSksMj09PWUpdGhpcy5fY29udGV4dC5saW5lVG8odFsxXSxuWzFdKTtlbHNlIGZvcih2YXIgcj1qYyh0KSxpPWpjKG4pLG89MCx1PTE7dTxlOysrbywrK3UpdGhpcy5fY29udGV4dC5iZXppZXJDdXJ2ZVRvKHJbMF1bb10saVswXVtvXSxyWzFdW29dLGlbMV1bb10sdFt1XSxuW3VdKTsodGhpcy5fbGluZXx8MCE9PXRoaXMuX2xpbmUmJjE9PT1lKSYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKSx0aGlzLl9saW5lPTEtdGhpcy5fbGluZSx0aGlzLl94PXRoaXMuX3k9bnVsbH0scG9pbnQ6ZnVuY3Rpb24odCxuKXt0aGlzLl94LnB1c2goK3QpLHRoaXMuX3kucHVzaCgrbil9fTt2YXIgQXc9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBCYyh0KX07SGMucHJvdG90eXBlPXthcmVhU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPTB9LGFyZWFFbmQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPU5hTn0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5feD10aGlzLl95PU5hTix0aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7MDx0aGlzLl90JiZ0aGlzLl90PDEmJjI9PT10aGlzLl9wb2ludCYmdGhpcy5fY29udGV4dC5saW5lVG8odGhpcy5feCx0aGlzLl95KSwodGhpcy5fbGluZXx8MCE9PXRoaXMuX2xpbmUmJjE9PT10aGlzLl9wb2ludCkmJnRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCksdGhpcy5fbGluZT49MCYmKHRoaXMuX3Q9MS10aGlzLl90LHRoaXMuX2xpbmU9MS10aGlzLl9saW5lKX0scG9pbnQ6ZnVuY3Rpb24odCxuKXtzd2l0Y2godD0rdCxuPStuLHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fcG9pbnQ9MSx0aGlzLl9saW5lP3RoaXMuX2NvbnRleHQubGluZVRvKHQsbik6dGhpcy5fY29udGV4dC5tb3ZlVG8odCxuKTticmVhaztjYXNlIDE6dGhpcy5fcG9pbnQ9MjtkZWZhdWx0OmlmKHRoaXMuX3Q8PTApdGhpcy5fY29udGV4dC5saW5lVG8odGhpcy5feCxuKSx0aGlzLl9jb250ZXh0LmxpbmVUbyh0LG4pO2Vsc2V7dmFyIGU9dGhpcy5feCooMS10aGlzLl90KSt0KnRoaXMuX3Q7dGhpcy5fY29udGV4dC5saW5lVG8oZSx0aGlzLl95KSx0aGlzLl9jb250ZXh0LmxpbmVUbyhlLG4pfX10aGlzLl94PXQsdGhpcy5feT1ufX07dmFyIEN3PWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgSGModCwuNSl9LHp3PUFycmF5LnByb3RvdHlwZS5zbGljZSxQdz1mdW5jdGlvbih0LG4pe2lmKChyPXQubGVuZ3RoKT4xKWZvcih2YXIgZSxyLGk9MSxvPXRbblswXV0sdT1vLmxlbmd0aDtpPHI7KytpKXtlPW8sbz10W25baV1dO2Zvcih2YXIgYT0wO2E8dTsrK2Epb1thXVsxXSs9b1thXVswXT1pc05hTihlW2FdWzFdKT9lW2FdWzBdOmVbYV1bMV19fSxSdz1mdW5jdGlvbih0KXtmb3IodmFyIG49dC5sZW5ndGgsZT1uZXcgQXJyYXkobik7LS1uPj0wOyllW25dPW47cmV0dXJuIGV9LEx3PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt2YXIgbyx1LGE9bi5hcHBseSh0aGlzLGFyZ3VtZW50cyksYz10Lmxlbmd0aCxzPWEubGVuZ3RoLGY9bmV3IEFycmF5KHMpO2ZvcihvPTA7bzxzOysrbyl7Zm9yKHZhciBsLGg9YVtvXSxwPWZbb109bmV3IEFycmF5KGMpLGQ9MDtkPGM7KytkKXBbZF09bD1bMCwraSh0W2RdLGgsZCx0KV0sbC5kYXRhPXRbZF07cC5rZXk9aH1mb3Iobz0wLHU9ZShmKTtvPHM7KytvKWZbdVtvXV0uaW5kZXg9bztyZXR1cm4gcihmLHUpLGZ9dmFyIG49QWIoW10pLGU9Uncscj1QdyxpPVdjO3JldHVybiB0LmtleXM9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZTpBYih6dy5jYWxsKGUpKSx0KTpufSx0LnZhbHVlPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPSJmdW5jdGlvbiI9PXR5cGVvZiBuP246QWIoK24pLHQpOml9LHQub3JkZXI9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9bnVsbD09bj9SdzoiZnVuY3Rpb24iPT10eXBlb2Ygbj9uOkFiKHp3LmNhbGwobikpLHQpOmV9LHQub2Zmc2V0PWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPW51bGw9PW4/UHc6bix0KTpyfSx0fSxxdz1mdW5jdGlvbih0LG4pe2lmKChyPXQubGVuZ3RoKT4wKXtmb3IodmFyIGUscixpLG89MCx1PXRbMF0ubGVuZ3RoO288dTsrK28pe2ZvcihpPWU9MDtlPHI7KytlKWkrPXRbZV1bb11bMV18fDA7aWYoaSlmb3IoZT0wO2U8cjsrK2UpdFtlXVtvXVsxXS89aX1Qdyh0LG4pfX0sVXc9ZnVuY3Rpb24odCxuKXtpZigoZT10Lmxlbmd0aCk+MCl7Zm9yKHZhciBlLHI9MCxpPXRbblswXV0sbz1pLmxlbmd0aDtyPG87KytyKXtmb3IodmFyIHU9MCxhPTA7dTxlOysrdSlhKz10W3VdW3JdWzFdfHwwO2lbcl1bMV0rPWlbcl1bMF09LWEvMn1Qdyh0LG4pfX0sRHc9ZnVuY3Rpb24odCxuKXtpZigoaT10Lmxlbmd0aCk+MCYmKHI9KGU9dFtuWzBdXSkubGVuZ3RoKT4wKXtmb3IodmFyIGUscixpLG89MCx1PTE7dTxyOysrdSl7Zm9yKHZhciBhPTAsYz0wLHM9MDthPGk7KythKXtmb3IodmFyIGY9dFtuW2FdXSxsPWZbdV1bMV18fDAsaD1mW3UtMV1bMV18fDAscD0obC1oKS8yLGQ9MDtkPGE7KytkKXt2YXIgdj10W25bZF1dO3ArPSh2W3VdWzFdfHwwKS0odlt1LTFdWzFdfHwwKX1jKz1sLHMrPXAqbH1lW3UtMV1bMV0rPWVbdS0xXVswXT1vLGMmJihvLT1zL2MpfWVbdS0xXVsxXSs9ZVt1LTFdWzBdPW8sUHcodCxuKX19LE93PWZ1bmN0aW9uKHQpe3ZhciBuPXQubWFwKCRjKTtyZXR1cm4gUncodCkuc29ydChmdW5jdGlvbih0LGUpe3JldHVybiBuW3RdLW5bZV19KX0sRnc9ZnVuY3Rpb24odCl7cmV0dXJuIE93KHQpLnJldmVyc2UoKX0sSXc9ZnVuY3Rpb24odCl7dmFyIG4sZSxyPXQubGVuZ3RoLGk9dC5tYXAoJGMpLG89UncodCkuc29ydChmdW5jdGlvbih0LG4pe3JldHVybiBpW25dLWlbdF19KSx1PTAsYT0wLGM9W10scz1bXTtmb3Iobj0wO248cjsrK24pZT1vW25dLHU8YT8odSs9aVtlXSxjLnB1c2goZSkpOihhKz1pW2VdLHMucHVzaChlKSk7cmV0dXJuIHMucmV2ZXJzZSgpLmNvbmNhdChjKX0sWXc9ZnVuY3Rpb24odCl7cmV0dXJuIFJ3KHQpLnJldmVyc2UoKX0sQnc9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fTtKYy5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOkpjLGluc2VydDpmdW5jdGlvbih0LG4pe3ZhciBlLHIsaTtpZih0KXtpZihuLlA9dCxuLk49dC5OLHQuTiYmKHQuTi5QPW4pLHQuTj1uLHQuUil7Zm9yKHQ9dC5SO3QuTDspdD10Lkw7dC5MPW59ZWxzZSB0LlI9bjtlPXR9ZWxzZSB0aGlzLl8/KHQ9bnModGhpcy5fKSxuLlA9bnVsbCxuLk49dCx0LlA9dC5MPW4sZT10KToobi5QPW4uTj1udWxsLHRoaXMuXz1uLGU9bnVsbCk7Zm9yKG4uTD1uLlI9bnVsbCxuLlU9ZSxuLkM9ITAsdD1uO2UmJmUuQzspcj1lLlUsZT09PXIuTD8oaT1yLlIsaSYmaS5DPyhlLkM9aS5DPSExLHIuQz0hMCx0PXIpOih0PT09ZS5SJiYoS2ModGhpcyxlKSx0PWUsZT10LlUpLGUuQz0hMSxyLkM9ITAsdHModGhpcyxyKSkpOihpPXIuTCxpJiZpLkM/KGUuQz1pLkM9ITEsci5DPSEwLHQ9cik6KHQ9PT1lLkwmJih0cyh0aGlzLGUpLHQ9ZSxlPXQuVSksZS5DPSExLHIuQz0hMCxLYyh0aGlzLHIpKSksZT10LlU7dGhpcy5fLkM9ITF9LHJlbW92ZTpmdW5jdGlvbih0KXt0Lk4mJih0Lk4uUD10LlApLHQuUCYmKHQuUC5OPXQuTiksdC5OPXQuUD1udWxsO3ZhciBuLGUscixpPXQuVSxvPXQuTCx1PXQuUjtpZihlPW8/dT9ucyh1KTpvOnUsaT9pLkw9PT10P2kuTD1lOmkuUj1lOnRoaXMuXz1lLG8mJnU/KHI9ZS5DLGUuQz10LkMsZS5MPW8sby5VPWUsZSE9PXU/KGk9ZS5VLGUuVT10LlUsdD1lLlIsaS5MPXQsZS5SPXUsdS5VPWUpOihlLlU9aSxpPWUsdD1lLlIpKToocj10LkMsdD1lKSx0JiYodC5VPWkpLCFyKXtpZih0JiZ0LkMpcmV0dXJuIHZvaWQodC5DPSExKTtkb3tpZih0PT09dGhpcy5fKWJyZWFrO2lmKHQ9PT1pLkwpe2lmKG49aS5SLG4uQyYmKG4uQz0hMSxpLkM9ITAsS2ModGhpcyxpKSxuPWkuUiksbi5MJiZuLkwuQ3x8bi5SJiZuLlIuQyl7bi5SJiZuLlIuQ3x8KG4uTC5DPSExLG4uQz0hMCx0cyh0aGlzLG4pLG49aS5SKSxuLkM9aS5DLGkuQz1uLlIuQz0hMSxLYyh0aGlzLGkpLHQ9dGhpcy5fO2JyZWFrfX1lbHNlIGlmKG49aS5MLG4uQyYmKG4uQz0hMSxpLkM9ITAsdHModGhpcyxpKSxuPWkuTCksbi5MJiZuLkwuQ3x8bi5SJiZuLlIuQyl7bi5MJiZuLkwuQ3x8KG4uUi5DPSExLG4uQz0hMCxLYyh0aGlzLG4pLG49aS5MKSxuLkM9aS5DLGkuQz1uLkwuQz0hMSx0cyh0aGlzLGkpLHQ9dGhpcy5fO2JyZWFrfW4uQz0hMCx0PWksaT1pLlV9d2hpbGUoIXQuQyk7dCYmKHQuQz0hMSl9fX07dmFyIGp3LEh3LFh3LFZ3LFd3LCR3PVtdLFp3PVtdLEd3PTFlLTYsSnc9MWUtMTI7U3MucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpTcyxwb2x5Z29uczpmdW5jdGlvbigpe3ZhciB0PXRoaXMuZWRnZXM7cmV0dXJuIHRoaXMuY2VsbHMubWFwKGZ1bmN0aW9uKG4pe3ZhciBlPW4uaGFsZmVkZ2VzLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZnMobix0W2VdKX0pO3JldHVybiBlLmRhdGE9bi5zaXRlLmRhdGEsZX0pfSx0cmlhbmdsZXM6ZnVuY3Rpb24oKXt2YXIgdD1bXSxuPXRoaXMuZWRnZXM7cmV0dXJuIHRoaXMuY2VsbHMuZm9yRWFjaChmdW5jdGlvbihlLHIpe2lmKG89KGk9ZS5oYWxmZWRnZXMpLmxlbmd0aClmb3IodmFyIGksbyx1LGE9ZS5zaXRlLGM9LTEscz1uW2lbby0xXV0sZj1zLmxlZnQ9PT1hP3MucmlnaHQ6cy5sZWZ0OysrYzxvOyl1PWYscz1uW2lbY11dLGY9cy5sZWZ0PT09YT9zLnJpZ2h0OnMubGVmdCx1JiZmJiZyPHUuaW5kZXgmJnI8Zi5pbmRleCYmVHMoYSx1LGYpPDAmJnQucHVzaChbYS5kYXRhLHUuZGF0YSxmLmRhdGFdKX0pLHR9LGxpbmtzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWRnZXMuZmlsdGVyKGZ1bmN0aW9uKHQpe3JldHVybiB0LnJpZ2h0fSkubWFwKGZ1bmN0aW9uKHQpe3JldHVybntzb3VyY2U6dC5sZWZ0LmRhdGEsdGFyZ2V0OnQucmlnaHQuZGF0YX19KX0sZmluZDpmdW5jdGlvbih0LG4sZSl7Zm9yKHZhciByLGksbz10aGlzLHU9by5fZm91bmR8fDAsYT1vLmNlbGxzLmxlbmd0aDshKGk9by5jZWxsc1t1XSk7KWlmKCsrdT49YSlyZXR1cm4gbnVsbDt2YXIgYz10LWkuc2l0ZVswXSxzPW4taS5zaXRlWzFdLGY9YypjK3MqcztkbyBpPW8uY2VsbHNbcj11XSx1PW51bGwsaS5oYWxmZWRnZXMuZm9yRWFjaChmdW5jdGlvbihlKXt2YXIgcj1vLmVkZ2VzW2VdLGE9ci5sZWZ0O2lmKGEhPT1pLnNpdGUmJmF8fChhPXIucmlnaHQpKXt2YXIgYz10LWFbMF0scz1uLWFbMV0sbD1jKmMrcypzO2w8ZiYmKGY9bCx1PWEuaW5kZXgpfX0pO3doaWxlKG51bGwhPT11KTtyZXR1cm4gby5fZm91bmQ9cixudWxsPT1lfHxmPD1lKmU/aS5zaXRlOm51bGx9fTt2YXIgUXc9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3JldHVybiBuZXcgU3ModC5tYXAoZnVuY3Rpb24ocixpKXt2YXIgbz1bTWF0aC5yb3VuZChuKHIsaSx0KS9HdykqR3csTWF0aC5yb3VuZChlKHIsaSx0KS9HdykqR3ddO3JldHVybiBvLmluZGV4PWksby5kYXRhPXIsb30pLHIpfXZhciBuPVpjLGU9R2Mscj1udWxsO3JldHVybiB0LnBvbHlnb25zPWZ1bmN0aW9uKG4pe3JldHVybiB0KG4pLnBvbHlnb25zKCl9LHQubGlua3M9ZnVuY3Rpb24obil7cmV0dXJuIHQobikubGlua3MoKX0sdC50cmlhbmdsZXM9ZnVuY3Rpb24obil7cmV0dXJuIHQobikudHJpYW5nbGVzKCl9LHQueD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0iZnVuY3Rpb24iPT10eXBlb2YgZT9lOkJ3KCtlKSx0KTpufSx0Lnk9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9ImZ1bmN0aW9uIj09dHlwZW9mIG4/bjpCdygrbiksdCk6ZX0sdC5leHRlbnQ9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9bnVsbD09bj9udWxsOltbK25bMF1bMF0sK25bMF1bMV1dLFsrblsxXVswXSwrblsxXVsxXV1dLHQpOnImJltbclswXVswXSxyWzBdWzFdXSxbclsxXVswXSxyWzFdWzFdXV19LHQuc2l6ZT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj1udWxsPT1uP251bGw6W1swLDBdLFsrblswXSwrblsxXV1dLHQpOnImJltyWzFdWzBdLXJbMF1bMF0sclsxXVsxXS1yWzBdWzFdXX0sdH0sS3c9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fTtFcy5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOkVzLHNjYWxlOmZ1bmN0aW9uKHQpe3JldHVybiAxPT09dD90aGlzOm5ldyBFcyh0aGlzLmsqdCx0aGlzLngsdGhpcy55KX0sdHJhbnNsYXRlOmZ1bmN0aW9uKHQsbil7cmV0dXJuIDA9PT10JjA9PT1uP3RoaXM6bmV3IEVzKHRoaXMuayx0aGlzLngrdGhpcy5rKnQsdGhpcy55K3RoaXMuaypuKX0sYXBwbHk6ZnVuY3Rpb24odCl7cmV0dXJuW3RbMF0qdGhpcy5rK3RoaXMueCx0WzFdKnRoaXMuayt0aGlzLnldfSxhcHBseVg6ZnVuY3Rpb24odCl7cmV0dXJuIHQqdGhpcy5rK3RoaXMueH0sYXBwbHlZOmZ1bmN0aW9uKHQpe3JldHVybiB0KnRoaXMuayt0aGlzLnl9LGludmVydDpmdW5jdGlvbih0KXtyZXR1cm5bKHRbMF0tdGhpcy54KS90aGlzLmssKHRbMV0tdGhpcy55KS90aGlzLmtdfSxpbnZlcnRYOmZ1bmN0aW9uKHQpe3JldHVybih0LXRoaXMueCkvdGhpcy5rfSxpbnZlcnRZOmZ1bmN0aW9uKHQpe3JldHVybih0LXRoaXMueSkvdGhpcy5rfSxyZXNjYWxlWDpmdW5jdGlvbih0KXtyZXR1cm4gdC5jb3B5KCkuZG9tYWluKHQucmFuZ2UoKS5tYXAodGhpcy5pbnZlcnRYLHRoaXMpLm1hcCh0LmludmVydCx0KSl9LHJlc2NhbGVZOmZ1bmN0aW9uKHQpe3JldHVybiB0LmNvcHkoKS5kb21haW4odC5yYW5nZSgpLm1hcCh0aGlzLmludmVydFksdGhpcykubWFwKHQuaW52ZXJ0LHQpKX0sdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4idHJhbnNsYXRlKCIrdGhpcy54KyIsIit0aGlzLnkrIikgc2NhbGUoIit0aGlzLmsrIikifX07dmFyIHRNPW5ldyBFcygxLDAsMCk7QXMucHJvdG90eXBlPUVzLnByb3RvdHlwZTt2YXIgbk09ZnVuY3Rpb24oKXt0LmV2ZW50LnByZXZlbnREZWZhdWx0KCksdC5ldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKX0sZU09ZnVuY3Rpb24oKXtmdW5jdGlvbiBuKHQpe3Qub24oIndoZWVsLnpvb20iLHMpLm9uKCJtb3VzZWRvd24uem9vbSIsZikub24oImRibGNsaWNrLnpvb20iLGwpLm9uKCJ0b3VjaHN0YXJ0Lnpvb20iLGgpLm9uKCJ0b3VjaG1vdmUuem9vbSIscCkub24oInRvdWNoZW5kLnpvb20gdG91Y2hjYW5jZWwuem9vbSIsdikuc3R5bGUoIi13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvciIsInJnYmEoMCwwLDAsMCkiKS5wcm9wZXJ0eSgiX196b29tIixScyl9ZnVuY3Rpb24gZSh0LG4pe3JldHVybiBuPU1hdGgubWF4KHgsTWF0aC5taW4oYixuKSksbj09PXQuaz90Om5ldyBFcyhuLHQueCx0LnkpfWZ1bmN0aW9uIHIodCxuLGUpe3ZhciByPW5bMF0tZVswXSp0LmssaT1uWzFdLWVbMV0qdC5rO3JldHVybiByPT09dC54JiZpPT09dC55P3Q6bmV3IEVzKHQuayxyLGkpfWZ1bmN0aW9uIGkodCxuKXt2YXIgZT10LmludmVydFgoblswXVswXSktdyxyPXQuaW52ZXJ0WChuWzFdWzBdKS1NLGk9dC5pbnZlcnRZKG5bMF1bMV0pLVQsbz10LmludmVydFkoblsxXVsxXSktaztyZXR1cm4gdC50cmFuc2xhdGUocj5lPyhlK3IpLzI6TWF0aC5taW4oMCxlKXx8TWF0aC5tYXgoMCxyKSxvPmk/KGkrbykvMjpNYXRoLm1pbigwLGkpfHxNYXRoLm1heCgwLG8pKX1mdW5jdGlvbiBvKHQpe3JldHVyblsoK3RbMF1bMF0rICt0WzFdWzBdKS8yLCgrdFswXVsxXSsgK3RbMV1bMV0pLzJdfWZ1bmN0aW9uIHUodCxuLGUpe3Qub24oInN0YXJ0Lnpvb20iLGZ1bmN0aW9uKCl7YSh0aGlzLGFyZ3VtZW50cykuc3RhcnQoKX0pLm9uKCJpbnRlcnJ1cHQuem9vbSBlbmQuem9vbSIsZnVuY3Rpb24oKXthKHRoaXMsYXJndW1lbnRzKS5lbmQoKX0pLnR3ZWVuKCJ6b29tIixmdW5jdGlvbigpe3ZhciB0PXRoaXMscj1hcmd1bWVudHMsaT1hKHQsciksdT1tLmFwcGx5KHQsciksYz1lfHxvKHUpLHM9TWF0aC5tYXgodVsxXVswXS11WzBdWzBdLHVbMV1bMV0tdVswXVsxXSksZj10Ll9fem9vbSxsPSJmdW5jdGlvbiI9PXR5cGVvZiBuP24uYXBwbHkodCxyKTpuLGg9TihmLmludmVydChjKS5jb25jYXQocy9mLmspLGwuaW52ZXJ0KGMpLmNvbmNhdChzL2wuaykpO3JldHVybiBmdW5jdGlvbih0KXtpZigxPT09dCl0PWw7ZWxzZXt2YXIgbj1oKHQpLGU9cy9uWzJdO3Q9bmV3IEVzKGUsY1swXS1uWzBdKmUsY1sxXS1uWzFdKmUpfWkuem9vbShudWxsLHQpfX0pfWZ1bmN0aW9uIGEodCxuKXtmb3IodmFyIGUscj0wLGk9QS5sZW5ndGg7cjxpOysrcilpZigoZT1BW3JdKS50aGF0PT09dClyZXR1cm4gZTtyZXR1cm4gbmV3IGModCxuKX1mdW5jdGlvbiBjKHQsbil7dGhpcy50aGF0PXQsdGhpcy5hcmdzPW4sdGhpcy5pbmRleD0tMSx0aGlzLmFjdGl2ZT0wLHRoaXMuZXh0ZW50PW0uYXBwbHkodCxuKX1mdW5jdGlvbiBzKCl7ZnVuY3Rpb24gbigpe28ud2hlZWw9bnVsbCxvLmVuZCgpfWlmKHkuYXBwbHkodGhpcyxhcmd1bWVudHMpKXt2YXIgbz1hKHRoaXMsYXJndW1lbnRzKSx1PXRoaXMuX196b29tLGM9TWF0aC5tYXgoeCxNYXRoLm1pbihiLHUuaypNYXRoLnBvdygyLC10LmV2ZW50LmRlbHRhWSoodC5ldmVudC5kZWx0YU1vZGU/MTIwOjEpLzUwMCkpKSxzPVlmKHRoaXMpO2lmKG8ud2hlZWwpby5tb3VzZVswXVswXT09PXNbMF0mJm8ubW91c2VbMF1bMV09PT1zWzFdfHwoby5tb3VzZVsxXT11LmludmVydChvLm1vdXNlWzBdPXMpKSxjbGVhclRpbWVvdXQoby53aGVlbCk7ZWxzZXtpZih1Lms9PT1jKXJldHVybjtvLm1vdXNlPVtzLHUuaW52ZXJ0KHMpXSx2cCh0aGlzKSxvLnN0YXJ0KCl9bk0oKSxvLndoZWVsPXNldFRpbWVvdXQobixQKSxvLnpvb20oIm1vdXNlIixpKHIoZSh1LGMpLG8ubW91c2VbMF0sby5tb3VzZVsxXSksby5leHRlbnQpKX19ZnVuY3Rpb24gZigpe2Z1bmN0aW9uIG4oKXtuTSgpLG8ubW92ZWQ9ITAsby56b29tKCJtb3VzZSIsaShyKG8udGhhdC5fX3pvb20sby5tb3VzZVswXT1ZZihvLnRoYXQpLG8ubW91c2VbMV0pLG8uZXh0ZW50KSl9ZnVuY3Rpb24gZSgpe3Uub24oIm1vdXNlbW92ZS56b29tIG1vdXNldXAuem9vbSIsbnVsbCksZ3QodC5ldmVudC52aWV3LG8ubW92ZWQpLG5NKCksby5lbmQoKX1pZighZyYmeS5hcHBseSh0aGlzLGFyZ3VtZW50cykpe3ZhciBvPWEodGhpcyxhcmd1bWVudHMpLHU9TWwodC5ldmVudC52aWV3KS5vbigibW91c2Vtb3ZlLnpvb20iLG4sITApLm9uKCJtb3VzZXVwLnpvb20iLGUsITApLGM9WWYodGhpcyk7RWwodC5ldmVudC52aWV3KSxDcygpLG8ubW91c2U9W2MsdGhpcy5fX3pvb20uaW52ZXJ0KGMpXSx2cCh0aGlzKSxvLnN0YXJ0KCl9fWZ1bmN0aW9uIGwoKXtpZih5LmFwcGx5KHRoaXMsYXJndW1lbnRzKSl7dmFyIG89dGhpcy5fX3pvb20sYT1ZZih0aGlzKSxjPW8uaW52ZXJ0KGEpLHM9by5rKih0LmV2ZW50LnNoaWZ0S2V5Py41OjIpLGY9aShyKGUobyxzKSxhLGMpLG0uYXBwbHkodGhpcyxhcmd1bWVudHMpKTtuTSgpLFM+MD9NbCh0aGlzKS50cmFuc2l0aW9uKCkuZHVyYXRpb24oUykuY2FsbCh1LGYsYSk6TWwodGhpcykuY2FsbChuLnRyYW5zZm9ybSxmKX19ZnVuY3Rpb24gaCgpe2lmKHkuYXBwbHkodGhpcyxhcmd1bWVudHMpKXt2YXIgbixlLHIsaSxvPWEodGhpcyxhcmd1bWVudHMpLHU9dC5ldmVudC5jaGFuZ2VkVG91Y2hlcyxjPXUubGVuZ3RoO2ZvcihDcygpLGU9MDtlPGM7KytlKXI9dVtlXSxpPWtsKHRoaXMsdSxyLmlkZW50aWZpZXIpLGk9W2ksdGhpcy5fX3pvb20uaW52ZXJ0KGkpLHIuaWRlbnRpZmllcl0sby50b3VjaDA/by50b3VjaDF8fChvLnRvdWNoMT1pKTooby50b3VjaDA9aSxuPSEwKTtpZihfJiYoXz1jbGVhclRpbWVvdXQoXyksIW8udG91Y2gxKSlyZXR1cm4gby5lbmQoKSxpPU1sKHRoaXMpLm9uKCJkYmxjbGljay56b29tIiksdm9pZChpJiZpLmFwcGx5KHRoaXMsYXJndW1lbnRzKSk7biYmKF89c2V0VGltZW91dChmdW5jdGlvbigpe189bnVsbH0seiksdnAodGhpcyksby5zdGFydCgpKX19ZnVuY3Rpb24gcCgpe3ZhciBuLG8sdSxjLHM9YSh0aGlzLGFyZ3VtZW50cyksZj10LmV2ZW50LmNoYW5nZWRUb3VjaGVzLGw9Zi5sZW5ndGg7Zm9yKG5NKCksXyYmKF89Y2xlYXJUaW1lb3V0KF8pKSxuPTA7bjxsOysrbilvPWZbbl0sdT1rbCh0aGlzLGYsby5pZGVudGlmaWVyKSxzLnRvdWNoMCYmcy50b3VjaDBbMl09PT1vLmlkZW50aWZpZXI/cy50b3VjaDBbMF09dTpzLnRvdWNoMSYmcy50b3VjaDFbMl09PT1vLmlkZW50aWZpZXImJihzLnRvdWNoMVswXT11KTtpZihvPXMudGhhdC5fX3pvb20scy50b3VjaDEpe3ZhciBoPXMudG91Y2gwWzBdLHA9cy50b3VjaDBbMV0sZD1zLnRvdWNoMVswXSx2PXMudG91Y2gxWzFdLGc9KGc9ZFswXS1oWzBdKSpnKyhnPWRbMV0taFsxXSkqZyx5PSh5PXZbMF0tcFswXSkqeSsoeT12WzFdLXBbMV0pKnk7bz1lKG8sTWF0aC5zcXJ0KGcveSkpLHU9WyhoWzBdK2RbMF0pLzIsKGhbMV0rZFsxXSkvMl0sYz1bKHBbMF0rdlswXSkvMiwocFsxXSt2WzFdKS8yXX1lbHNle2lmKCFzLnRvdWNoMClyZXR1cm47dT1zLnRvdWNoMFswXSxjPXMudG91Y2gwWzFdfXMuem9vbSgidG91Y2giLGkocihvLHUsYykscy5leHRlbnQpKX1mdW5jdGlvbiB2KCl7dmFyIG4sZSxyPWEodGhpcyxhcmd1bWVudHMpLGk9dC5ldmVudC5jaGFuZ2VkVG91Y2hlcyxvPWkubGVuZ3RoO2ZvcihDcygpLGcmJmNsZWFyVGltZW91dChnKSxnPXNldFRpbWVvdXQoZnVuY3Rpb24oKXtnPW51bGx9LHopLG49MDtuPG87KytuKWU9aVtuXSxyLnRvdWNoMCYmci50b3VjaDBbMl09PT1lLmlkZW50aWZpZXI/ZGVsZXRlIHIudG91Y2gwOnIudG91Y2gxJiZyLnRvdWNoMVsyXT09PWUuaWRlbnRpZmllciYmZGVsZXRlIHIudG91Y2gxO3IudG91Y2gxJiYhci50b3VjaDAmJihyLnRvdWNoMD1yLnRvdWNoMSxkZWxldGUgci50b3VjaDEpLHIudG91Y2gwfHxyLmVuZCgpfXZhciBfLGcseT16cyxtPVBzLHg9MCxiPTEvMCx3PS1iLE09YixUPXcsaz1NLFM9MjUwLE49SWgsQT1bXSxDPWQoInN0YXJ0Iiwiem9vbSIsImVuZCIpLHo9NTAwLFA9MTUwO3JldHVybiBuLnRyYW5zZm9ybT1mdW5jdGlvbih0LG4pe3ZhciBlPXQuc2VsZWN0aW9uP3Quc2VsZWN0aW9uKCk6dDtlLnByb3BlcnR5KCJfX3pvb20iLFJzKSx0IT09ZT91KHQsbik6ZS5pbnRlcnJ1cHQoKS5lYWNoKGZ1bmN0aW9uKCl7YSh0aGlzLGFyZ3VtZW50cykuc3RhcnQoKS56b29tKG51bGwsImZ1bmN0aW9uIj09dHlwZW9mIG4/bi5hcHBseSh0aGlzLGFyZ3VtZW50cyk6bikuZW5kKCl9KX0sbi5zY2FsZUJ5PWZ1bmN0aW9uKHQsZSl7bi5zY2FsZVRvKHQsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fX3pvb20uayooImZ1bmN0aW9uIj09dHlwZW9mIGU/ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk6ZSl9KX0sbi5zY2FsZVRvPWZ1bmN0aW9uKHQsdSl7bi50cmFuc2Zvcm0odCxmdW5jdGlvbigpe3ZhciB0PW0uYXBwbHkodGhpcyxhcmd1bWVudHMpLG49dGhpcy5fX3pvb20sYT1vKHQpLGM9bi5pbnZlcnQoYSk7cmV0dXJuIGkocihlKG4sImZ1bmN0aW9uIj09dHlwZW9mIHU/dS5hcHBseSh0aGlzLGFyZ3VtZW50cyk6dSksYSxjKSx0KX0pfSxuLnRyYW5zbGF0ZUJ5PWZ1bmN0aW9uKHQsZSxyKXtuLnRyYW5zZm9ybSh0LGZ1bmN0aW9uKCl7cmV0dXJuIGkodGhpcy5fX3pvb20udHJhbnNsYXRlKCJmdW5jdGlvbiI9PXR5cGVvZiBlP2UuYXBwbHkodGhpcyxhcmd1bWVudHMpOmUsImZ1bmN0aW9uIj09dHlwZW9mIHI/ci5hcHBseSh0aGlzLGFyZ3VtZW50cyk6ciksbS5hcHBseSh0aGlzLGFyZ3VtZW50cykpfSl9LGMucHJvdG90eXBlPXtzdGFydDpmdW5jdGlvbigpe3JldHVybiAxPT09Kyt0aGlzLmFjdGl2ZSYmKHRoaXMuaW5kZXg9QS5wdXNoKHRoaXMpLTEsdGhpcy5lbWl0KCJzdGFydCIpKSx0aGlzfSx6b29tOmZ1bmN0aW9uKHQsbil7cmV0dXJuIHRoaXMubW91c2UmJiJtb3VzZSIhPT10JiYodGhpcy5tb3VzZVsxXT1uLmludmVydCh0aGlzLm1vdXNlWzBdKSksdGhpcy50b3VjaDAmJiJ0b3VjaCIhPT10JiYodGhpcy50b3VjaDBbMV09bi5pbnZlcnQodGhpcy50b3VjaDBbMF0pKSx0aGlzLnRvdWNoMSYmInRvdWNoIiE9PXQmJih0aGlzLnRvdWNoMVsxXT1uLmludmVydCh0aGlzLnRvdWNoMVswXSkpLHRoaXMudGhhdC5fX3pvb209bix0aGlzLmVtaXQoInpvb20iKSx0aGlzfSxlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gMD09PS0tdGhpcy5hY3RpdmUmJihBLnNwbGljZSh0aGlzLmluZGV4LDEpLHRoaXMuaW5kZXg9LTEsdGhpcy5lbWl0KCJlbmQiKSksdGhpc30sZW1pdDpmdW5jdGlvbih0KXtFKG5ldyBOcyhuLHQsdGhpcy50aGF0Ll9fem9vbSksQy5hcHBseSxDLFt0LHRoaXMudGhhdCx0aGlzLmFyZ3NdKX19LG4uZmlsdGVyPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh5PSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6S3coISF0KSxuKTp5fSxuLmV4dGVudD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obT0iZnVuY3Rpb24iPT10eXBlb2YgdD90Okt3KFtbK3RbMF1bMF0sK3RbMF1bMV1dLFsrdFsxXVswXSwrdFsxXVsxXV1dKSxuKTptfSxuLnNjYWxlRXh0ZW50PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh4PSt0WzBdLGI9K3RbMV0sbik6W3gsYl19LG4udHJhbnNsYXRlRXh0ZW50PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh3PSt0WzBdWzBdLE09K3RbMV1bMF0sVD0rdFswXVsxXSxrPSt0WzFdWzFdLG4pOltbdyxUXSxbTSxrXV19LG4uZHVyYXRpb249ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KFM9K3Qsbik6U30sbi5pbnRlcnBvbGF0ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oTj10LG4pOk59LG4ub249ZnVuY3Rpb24oKXt2YXIgdD1DLm9uLmFwcGx5KEMsYXJndW1lbnRzKTtyZXR1cm4gdD09PUM/bjp0fSxufTt0LnZlcnNpb249THMsdC5iaXNlY3Q9T3MsdC5iaXNlY3RSaWdodD1Pcyx0LmJpc2VjdExlZnQ9RnMsdC5hc2NlbmRpbmc9cXMsdC5iaXNlY3Rvcj1Vcyx0LmNyb3NzPVlzLHQuZGVzY2VuZGluZz1Ccyx0LmRldmlhdGlvbj1Ycyx0LmV4dGVudD1Wcyx0Lmhpc3RvZ3JhbT1vZix0LnRocmVzaG9sZEZyZWVkbWFuRGlhY29uaXM9YWYsdC50aHJlc2hvbGRTY290dD1jZix0LnRocmVzaG9sZFN0dXJnZXM9cmYsdC5tYXg9c2YsdC5tZWFuPWZmLHQubWVkaWFuPWxmLHQubWVyZ2U9aGYsdC5taW49cGYsdC5wYWlycz1Jcyx0LnBlcm11dGU9ZGYsdC5xdWFudGlsZT11Zix0LnJhbmdlPVFzLHQuc2Nhbj12Zix0LnNodWZmbGU9X2YsdC5zdW09Z2YsdC50aWNrcz1lZix0LnRpY2tTdGVwPXIsdC50cmFuc3Bvc2U9eWYsdC52YXJpYW5jZT1Icyx0LnppcD1tZix0LmF4aXNUb3A9Zix0LmF4aXNSaWdodD1sLHQuYXhpc0JvdHRvbT1oLHQuYXhpc0xlZnQ9cCx0LmJydXNoPUFkLHQuYnJ1c2hYPUFlLHQuYnJ1c2hZPUNlLHQuYnJ1c2hTZWxlY3Rpb249RWUsdC5jaG9yZD1VZCx0LnJpYmJvbj1qZCx0Lm5lc3Q9WGQsdC5zZXQ9V2UsdC5tYXA9WWUsdC5rZXlzPVdkLHQudmFsdWVzPSRkLHQuZW50cmllcz1aZCx0LmNvbG9yPVR0LHQucmdiPUV0LHQuaHNsPVB0LHQubGFiPVV0LHQuaGNsPWp0LHQuY3ViZWhlbGl4PVZ0LHQuZGlzcGF0Y2g9ZCx0LmRyYWc9Q2wsdC5kcmFnRGlzYWJsZT1FbCx0LmRyYWdFbmFibGU9Z3QsdC5kc3ZGb3JtYXQ9R2QsdC5jc3ZQYXJzZT1RZCx0LmNzdlBhcnNlUm93cz1LZCx0LmNzdkZvcm1hdD10dix0LmNzdkZvcm1hdFJvd3M9bnYsdC50c3ZQYXJzZT1ydix0LnRzdlBhcnNlUm93cz1pdix0LnRzdkZvcm1hdD1vdix0LnRzdkZvcm1hdFJvd3M9dXYsdC5lYXNlTGluZWFyPWVlLHQuZWFzZVF1YWQ9b2UsdC5lYXNlUXVhZEluPXJlLHQuZWFzZVF1YWRPdXQ9aWUsdC5lYXNlUXVhZEluT3V0PW9lLHQuZWFzZUN1YmljPWNlLHQuZWFzZUN1YmljSW49dWUsdC5lYXNlQ3ViaWNPdXQ9YWUsdC5lYXNlQ3ViaWNJbk91dD1jZSx0LmVhc2VQb2x5PVlwLHQuZWFzZVBvbHlJbj1GcCx0LmVhc2VQb2x5T3V0PUlwLHQuZWFzZVBvbHlJbk91dD1ZcCx0LmVhc2VTaW49bGUsdC5lYXNlU2luSW49c2UsdC5lYXNlU2luT3V0PWZlLHQuZWFzZVNpbkluT3V0PWxlLHQuZWFzZUV4cD1kZSx0LmVhc2VFeHBJbj1oZSx0LmVhc2VFeHBPdXQ9cGUsdC5lYXNlRXhwSW5PdXQ9ZGUsdC5lYXNlQ2lyY2xlPWdlLHQuZWFzZUNpcmNsZUluPXZlLHQuZWFzZUNpcmNsZU91dD1fZSx0LmVhc2VDaXJjbGVJbk91dD1nZSx0LmVhc2VCb3VuY2U9bWUsdC5lYXNlQm91bmNlSW49eWUsdC5lYXNlQm91bmNlT3V0PW1lLHQuZWFzZUJvdW5jZUluT3V0PXhlLHQuZWFzZUJhY2s9cmQsdC5lYXNlQmFja0luPW5kLHQuZWFzZUJhY2tPdXQ9ZWQsdC5lYXNlQmFja0luT3V0PXJkLHQuZWFzZUVsYXN0aWM9Y2QsdC5lYXNlRWxhc3RpY0luPWFkLHQuZWFzZUVsYXN0aWNPdXQ9Y2QsdC5lYXNlRWxhc3RpY0luT3V0PXNkLHQuZm9yY2VDZW50ZXI9YXYsdC5mb3JjZUNvbGxpZGU9a3YsdC5mb3JjZUxpbms9U3YsdC5mb3JjZU1hbnlCb2R5PUN2LHQuZm9yY2VTaW11bGF0aW9uPUF2LHQuZm9yY2VYPXp2LHQuZm9yY2VZPVB2LHQuZm9ybWF0RGVmYXVsdExvY2FsZT1wcix0LmZvcm1hdExvY2FsZT1Ydix0LmZvcm1hdFNwZWNpZmllcj1scix0LnByZWNpc2lvbkZpeGVkPVZ2LHQucHJlY2lzaW9uUHJlZml4PVd2LHQucHJlY2lzaW9uUm91bmQ9JHYsdC5nZW9BcmVhPXRnLHQuZ2VvQm91bmRzPXJnLHQuZ2VvQ2VudHJvaWQ9b2csdC5nZW9DaXJjbGU9eGcsdC5nZW9DbGlwRXh0ZW50PU5nLHQuZ2VvQ29udGFpbnM9T2csdC5nZW9EaXN0YW5jZT1xZyx0Lmdlb0dyYXRpY3VsZT13aSx0Lmdlb0dyYXRpY3VsZTEwPU1pLHQuZ2VvSW50ZXJwb2xhdGU9RmcsdC5nZW9MZW5ndGg9UGcsdC5nZW9QYXRoPWh5LHQuZ2VvQWxiZXJzPXd5LHQuZ2VvQWxiZXJzVXNhPU15LHQuZ2VvQXppbXV0aGFsRXF1YWxBcmVhPWt5LHQuZ2VvQXppbXV0aGFsRXF1YWxBcmVhUmF3PVR5LHQuZ2VvQXppbXV0aGFsRXF1aWRpc3RhbnQ9TnksdC5nZW9BemltdXRoYWxFcXVpZGlzdGFudFJhdz1TeSx0Lmdlb0NvbmljQ29uZm9ybWFsPUF5LHQuZ2VvQ29uaWNDb25mb3JtYWxSYXc9bG8sdC5nZW9Db25pY0VxdWFsQXJlYT1ieSx0Lmdlb0NvbmljRXF1YWxBcmVhUmF3PWlvLHQuZ2VvQ29uaWNFcXVpZGlzdGFudD16eSx0Lmdlb0NvbmljRXF1aWRpc3RhbnRSYXc9cG8sdC5nZW9FcXVpcmVjdGFuZ3VsYXI9Q3ksdC5nZW9FcXVpcmVjdGFuZ3VsYXJSYXc9aG8sdC5nZW9Hbm9tb25pYz1QeSx0Lmdlb0dub21vbmljUmF3PXZvLHQuZ2VvSWRlbnRpdHk9UnksdC5nZW9Qcm9qZWN0aW9uPXRvLHQuZ2VvUHJvamVjdGlvbk11dGF0b3I9bm8sdC5nZW9NZXJjYXRvcj1FeSx0Lmdlb01lcmNhdG9yUmF3PWNvLHQuZ2VvT3J0aG9ncmFwaGljPUx5LHQuZ2VvT3J0aG9ncmFwaGljUmF3PWdvLHQuZ2VvU3RlcmVvZ3JhcGhpYz1xeSx0Lmdlb1N0ZXJlb2dyYXBoaWNSYXc9eW8sdC5nZW9UcmFuc3ZlcnNlTWVyY2F0b3I9VXksdC5nZW9UcmFuc3ZlcnNlTWVyY2F0b3JSYXc9bW8sdC5nZW9Sb3RhdGlvbj1tZyx0Lmdlb1N0cmVhbT1HXyx0Lmdlb1RyYW5zZm9ybT1feSx0LmNsdXN0ZXI9RHksdC5oaWVyYXJjaHk9QW8sdC5wYWNrPUt5LHQucGFja1NpYmxpbmdzPUp5LHQucGFja0VuY2xvc2U9R3ksdC5wYXJ0aXRpb249ZW0sdC5zdHJhdGlmeT11bSx0LnRyZWU9YW0sdC50cmVlbWFwPWxtLHQudHJlZW1hcEJpbmFyeT1obSx0LnRyZWVtYXBEaWNlPW5tLHQudHJlZW1hcFNsaWNlPWNtLHQudHJlZW1hcFNsaWNlRGljZT1wbSx0LnRyZWVtYXBTcXVhcmlmeT1mbSx0LnRyZWVtYXBSZXNxdWFyaWZ5PWRtLHQuaW50ZXJwb2xhdGU9QWgsdC5pbnRlcnBvbGF0ZUFycmF5PXdoLHQuaW50ZXJwb2xhdGVCYXNpcz1faCx0LmludGVycG9sYXRlQmFzaXNDbG9zZWQ9Z2gsdC5pbnRlcnBvbGF0ZURhdGU9TWgsdC5pbnRlcnBvbGF0ZU51bWJlcj1UaCx0LmludGVycG9sYXRlT2JqZWN0PWtoLHQuaW50ZXJwb2xhdGVSb3VuZD1DaCx0LmludGVycG9sYXRlU3RyaW5nPUVoLHQuaW50ZXJwb2xhdGVUcmFuc2Zvcm1Dc3M9TGgsdC5pbnRlcnBvbGF0ZVRyYW5zZm9ybVN2Zz1xaCx0LmludGVycG9sYXRlWm9vbT1JaCx0LmludGVycG9sYXRlUmdiPW1oLHQuaW50ZXJwb2xhdGVSZ2JCYXNpcz14aCx0LmludGVycG9sYXRlUmdiQmFzaXNDbG9zZWQ9YmgsdC5pbnRlcnBvbGF0ZUhzbD1ZaCx0LmludGVycG9sYXRlSHNsTG9uZz1CaCx0LmludGVycG9sYXRlTGFiPWxuLHQuaW50ZXJwb2xhdGVIY2w9amgsdC5pbnRlcnBvbGF0ZUhjbExvbmc9SGgsdC5pbnRlcnBvbGF0ZUN1YmVoZWxpeD1YaCx0LmludGVycG9sYXRlQ3ViZWhlbGl4TG9uZz1WaCx0LnF1YW50aXplPVdoLHQucGF0aD1MZSx0LnBvbHlnb25BcmVhPXZtLHQucG9seWdvbkNlbnRyb2lkPV9tLHQucG9seWdvbkh1bGw9eW07dC5wb2x5Z29uQ29udGFpbnM9bW0sdC5wb2x5Z29uTGVuZ3RoPXhtLHQucXVhZHRyZWU9ZXIsdC5xdWV1ZT1tdSx0LnJhbmRvbVVuaWZvcm09TW0sdC5yYW5kb21Ob3JtYWw9VG0sdC5yYW5kb21Mb2dOb3JtYWw9a20sdC5yYW5kb21CYXRlcz1ObSx0LnJhbmRvbUlyd2luSGFsbD1TbSx0LnJhbmRvbUV4cG9uZW50aWFsPUVtLHQucmVxdWVzdD1BbSx0Lmh0bWw9em0sdC5qc29uPVBtLHQudGV4dD1SbSx0LnhtbD1MbSx0LmNzdj1VbSx0LnRzdj1EbSx0LnNjYWxlQmFuZD1UdSx0LnNjYWxlUG9pbnQ9U3UsdC5zY2FsZUlkZW50aXR5PVV1LHQuc2NhbGVMaW5lYXI9cXUsdC5zY2FsZUxvZz1qdSx0LnNjYWxlT3JkaW5hbD1NdSx0LnNjYWxlSW1wbGljaXQ9WW0sdC5zY2FsZVBvdz1YdSx0LnNjYWxlU3FydD1WdSx0LnNjYWxlUXVhbnRpbGU9V3UsdC5zY2FsZVF1YW50aXplPSR1LHQuc2NhbGVUaHJlc2hvbGQ9WnUsdC5zY2FsZVRpbWU9cGIsdC5zY2FsZVV0Yz1kYix0LnNjaGVtZUNhdGVnb3J5MTA9X2IsdC5zY2hlbWVDYXRlZ29yeTIwYj1nYix0LnNjaGVtZUNhdGVnb3J5MjBjPXliLHQuc2NoZW1lQ2F0ZWdvcnkyMD1tYix0LmludGVycG9sYXRlQ3ViZWhlbGl4RGVmYXVsdD14Yix0LmludGVycG9sYXRlUmFpbmJvdz1UYix0LmludGVycG9sYXRlV2FybT1iYix0LmludGVycG9sYXRlQ29vbD13Yix0LmludGVycG9sYXRlVmlyaWRpcz1rYix0LmludGVycG9sYXRlTWFnbWE9U2IsdC5pbnRlcnBvbGF0ZUluZmVybm89TmIsdC5pbnRlcnBvbGF0ZVBsYXNtYT1FYix0LnNjYWxlU2VxdWVudGlhbD1yYyx0LmNyZWF0b3I9emYsdC5sb2NhbD1iLHQubWF0Y2hlcj1VZix0Lm1vdXNlPVlmLHQubmFtZXNwYWNlPUNmLHQubmFtZXNwYWNlcz1BZix0LnNlbGVjdD1NbCx0LnNlbGVjdEFsbD1UbCx0LnNlbGVjdGlvbj12dCx0LnNlbGVjdG9yPUJmLHQuc2VsZWN0b3JBbGw9SGYsdC50b3VjaD1rbCx0LnRvdWNoZXM9U2wsdC53aW5kb3c9c2wsdC5jdXN0b21FdmVudD1FLHQuYXJjPVliLHQuYXJlYT1IYix0LmxpbmU9amIsdC5waWU9V2IsdC5yYWRpYWxBcmVhPUdiLHQucmFkaWFsTGluZT1aYix0LnN5bWJvbD1fdyx0LnN5bWJvbHM9dncsdC5zeW1ib2xDaXJjbGU9SmIsdC5zeW1ib2xDcm9zcz1RYix0LnN5bWJvbERpYW1vbmQ9bncsdC5zeW1ib2xTcXVhcmU9YXcsdC5zeW1ib2xTdGFyPXV3LHQuc3ltYm9sVHJpYW5nbGU9c3csdC5zeW1ib2xXeWU9ZHcsdC5jdXJ2ZUJhc2lzQ2xvc2VkPW13LHQuY3VydmVCYXNpc09wZW49eHcsdC5jdXJ2ZUJhc2lzPXl3LHQuY3VydmVCdW5kbGU9YncsdC5jdXJ2ZUNhcmRpbmFsQ2xvc2VkPU13LHQuY3VydmVDYXJkaW5hbE9wZW49VHcsdC5jdXJ2ZUNhcmRpbmFsPXd3LHQuY3VydmVDYXRtdWxsUm9tQ2xvc2VkPVN3LHQuY3VydmVDYXRtdWxsUm9tT3Blbj1Odyx0LmN1cnZlQ2F0bXVsbFJvbT1rdyx0LmN1cnZlTGluZWFyQ2xvc2VkPUV3LHQuY3VydmVMaW5lYXI9QmIsdC5jdXJ2ZU1vbm90b25lWD1JYyx0LmN1cnZlTW9ub3RvbmVZPVljLHQuY3VydmVOYXR1cmFsPUF3LHQuY3VydmVTdGVwPUN3LHQuY3VydmVTdGVwQWZ0ZXI9VmMsdC5jdXJ2ZVN0ZXBCZWZvcmU9WGMsdC5zdGFjaz1Mdyx0LnN0YWNrT2Zmc2V0RXhwYW5kPXF3LHQuc3RhY2tPZmZzZXROb25lPVB3LHQuc3RhY2tPZmZzZXRTaWxob3VldHRlPVV3LHQuc3RhY2tPZmZzZXRXaWdnbGU9RHcsdC5zdGFja09yZGVyQXNjZW5kaW5nPU93LHQuc3RhY2tPcmRlckRlc2NlbmRpbmc9RncsdC5zdGFja09yZGVySW5zaWRlT3V0PUl3LHQuc3RhY2tPcmRlck5vbmU9UncsdC5zdGFja09yZGVyUmV2ZXJzZT1Zdyx0LnRpbWVJbnRlcnZhbD1HdSx0LnRpbWVNaWxsaXNlY29uZD1abSx0LnRpbWVNaWxsaXNlY29uZHM9R20sdC51dGNNaWxsaXNlY29uZD1abSx0LnV0Y01pbGxpc2Vjb25kcz1HbSx0LnRpbWVTZWNvbmQ9ZXgsdC50aW1lU2Vjb25kcz1yeCx0LnV0Y1NlY29uZD1leCx0LnV0Y1NlY29uZHM9cngsdC50aW1lTWludXRlPWl4LHQudGltZU1pbnV0ZXM9b3gsdC50aW1lSG91cj11eCx0LnRpbWVIb3Vycz1heCx0LnRpbWVEYXk9Y3gsdC50aW1lRGF5cz1zeCx0LnRpbWVXZWVrPWZ4LHQudGltZVdlZWtzPWd4LHQudGltZVN1bmRheT1meCx0LnRpbWVTdW5kYXlzPWd4LHQudGltZU1vbmRheT1seCx0LnRpbWVNb25kYXlzPXl4LHQudGltZVR1ZXNkYXk9aHgsdC50aW1lVHVlc2RheXM9bXgsdC50aW1lV2VkbmVzZGF5PXB4LHQudGltZVdlZG5lc2RheXM9eHgsdC50aW1lVGh1cnNkYXk9ZHgsdC50aW1lVGh1cnNkYXlzPWJ4LHQudGltZUZyaWRheT12eCx0LnRpbWVGcmlkYXlzPXd4LHQudGltZVNhdHVyZGF5PV94LHQudGltZVNhdHVyZGF5cz1NeCx0LnRpbWVNb250aD1UeCx0LnRpbWVNb250aHM9a3gsdC50aW1lWWVhcj1TeCx0LnRpbWVZZWFycz1OeCx0LnV0Y01pbnV0ZT1FeCx0LnV0Y01pbnV0ZXM9QXgsdC51dGNIb3VyPUN4LHQudXRjSG91cnM9engsdC51dGNEYXk9UHgsdC51dGNEYXlzPVJ4LHQudXRjV2Vlaz1MeCx0LnV0Y1dlZWtzPVl4LHQudXRjU3VuZGF5PUx4LHQudXRjU3VuZGF5cz1ZeCx0LnV0Y01vbmRheT1xeCx0LnV0Y01vbmRheXM9QngsdC51dGNUdWVzZGF5PVV4LHQudXRjVHVlc2RheXM9angsdC51dGNXZWRuZXNkYXk9RHgsdC51dGNXZWRuZXNkYXlzPUh4LHQudXRjVGh1cnNkYXk9T3gsdC51dGNUaHVyc2RheXM9WHgsdC51dGNGcmlkYXk9RngsdC51dGNGcmlkYXlzPVZ4LHQudXRjU2F0dXJkYXk9SXgsdC51dGNTYXR1cmRheXM9V3gsdC51dGNNb250aD0keCx0LnV0Y01vbnRocz1aeCx0LnV0Y1llYXI9R3gsdC51dGNZZWFycz1ReCx0LnRpbWVGb3JtYXREZWZhdWx0TG9jYWxlPUdhLHQudGltZUZvcm1hdExvY2FsZT1lYSx0Lmlzb0Zvcm1hdD1pYix0Lmlzb1BhcnNlPW9iLHQubm93PWRuLHQudGltZXI9Z24sdC50aW1lckZsdXNoPXluLHQudGltZW91dD1ycCx0LmludGVydmFsPWlwLHQudHJhbnNpdGlvbj10ZSx0LmFjdGl2ZT1wZCx0LmludGVycnVwdD12cCx0LnZvcm9ub2k9UXcsdC56b29tPWVNLHQuem9vbVRyYW5zZm9ybT1Bcyx0Lnpvb21JZGVudGl0eT10TSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSl9KTs="></script>
<script src="data:application/x-javascript;base64,IWZ1bmN0aW9uKHQsbil7Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzJiYidW5kZWZpbmVkIiE9dHlwZW9mIG1vZHVsZT9uKGV4cG9ydHMscmVxdWlyZSgiZDMtYXJyYXkiKSxyZXF1aXJlKCJkMy1zY2FsZSIpLHJlcXVpcmUoImQzLXRpbWUiKSxyZXF1aXJlKCJkMy1yYW5kb20iKSxyZXF1aXJlKCJkMy1yZXF1ZXN0IikscmVxdWlyZSgiZDMtcGF0aCIpLHJlcXVpcmUoImQzLXNlbGVjdGlvbiIpLHJlcXVpcmUoImQzLXNoYXBlIikscmVxdWlyZSgiZDMtZGlzcGF0Y2giKSk6ImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoWyJleHBvcnRzIiwiZDMtYXJyYXkiLCJkMy1zY2FsZSIsImQzLXRpbWUiLCJkMy1yYW5kb20iLCJkMy1yZXF1ZXN0IiwiZDMtcGF0aCIsImQzLXNlbGVjdGlvbiIsImQzLXNoYXBlIiwiZDMtZGlzcGF0Y2giXSxuKTpuKHQuZmM9dC5mY3x8e30sdC5kMyx0LmQzLHQuZDMsdC5kMyx0LmQzLHQuZDMsdC5kMyx0LmQzLHQuZDMpfSh0aGlzLGZ1bmN0aW9uKHQsbixlLHIsaSxvLHUsYSxjLGwpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBmKHQpe3JldHVybiB0fWZ1bmN0aW9uIGgodCl7fWZ1bmN0aW9uIHModCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpmdW5jdGlvbigpe3JldHVybiB0fX1mdW5jdGlvbiBkKHQpe3JldHVybiJudW1iZXIiPT10eXBlb2YgdCYmaXNOYU4odCk/dm9pZCAwOnR9ZnVuY3Rpb24gZyh0LG4sZSl7dmFyIHI9dC5tYXAoZnVuY3Rpb24odCl7cmV0dXJuW24odCksdF19KSxpPWZ1bmN0aW9uKHQpe3JldHVybiB0IGluc3RhbmNlb2YgRGF0ZT90LmdldFRpbWUoKTp0fSxvPXIucmVkdWNlKGZ1bmN0aW9uKHQsbil7cmV0dXJuIDA9PT10LmZpbHRlcihmdW5jdGlvbih0KXtyZXR1cm4gaSh0WzBdKT09PWkoblswXSl9KS5sZW5ndGgmJnQucHVzaChuKSx0fSxbXSk7cmV0dXJuIG8ubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0WzFdfSl9ZnVuY3Rpb24gdih0KXt2YXIgbj10aGlzO2FyZ3VtZW50cy5sZW5ndGh8fCh0PWUuc2NhbGVJZGVudGl0eSgpKTt2YXIgcj1RKCksaT1mdW5jdGlvbihuKXt2YXIgZT10LmRvbWFpbigpLGk9dC5yYW5nZSgpLG89ci5kaXN0YW5jZShlWzBdLGVbMV0pLHU9ci5kaXN0YW5jZShlWzBdLG4pLGE9dS9vLGM9YSooaVsxXS1pWzBdKStpWzBdO3JldHVybiBjfTtyZXR1cm4gaS5pbnZlcnQ9ZnVuY3Rpb24obil7dmFyIGU9dC5kb21haW4oKSxpPXQucmFuZ2UoKSxvPShuLWlbMF0pLyhpWzFdLWlbMF0pLHU9ci5kaXN0YW5jZShlWzBdLGVbMV0pLGE9byp1O3JldHVybiByLm9mZnNldChlWzBdLGEpfSxpLmRvbWFpbj1mdW5jdGlvbigpe2lmKCFhcmd1bWVudHMubGVuZ3RoKXJldHVybiB0LmRvbWFpbigpO3ZhciBuPWFyZ3VtZW50cy5sZW5ndGg8PTA/dm9pZCAwOmFyZ3VtZW50c1swXSxlPXIuY2xhbXBVcChuWzBdKSxvPXIuY2xhbXBEb3duKG5bMV0pO3JldHVybiB0LmRvbWFpbihbZSxvXSksaX0saS5uaWNlPWZ1bmN0aW9uKCl7dC5uaWNlKCk7dmFyIG49dC5kb21haW4oKSxlPXIuY2xhbXBVcChuWzBdKSxvPXIuY2xhbXBEb3duKG5bMV0pO3JldHVybiB0LmRvbWFpbihbZSxvXSksaX0saS50aWNrcz1mdW5jdGlvbigpe2Zvcih2YXIgZT1hcmd1bWVudHMubGVuZ3RoLHI9QXJyYXkoZSksbz0wO288ZTtvKyspcltvXT1hcmd1bWVudHNbb107dmFyIHU9dC50aWNrcy5hcHBseShuLHIpO3JldHVybiBnKHUsaSxpLmRvbWFpbigpKX0saS5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIHYodC5jb3B5KCkpLmRpc2NvbnRpbnVpdHlQcm92aWRlcihyLmNvcHkoKSl9LGkuZGlzY29udGludWl0eVByb3ZpZGVyPWZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9YXJndW1lbnRzLmxlbmd0aDw9MD92b2lkIDA6YXJndW1lbnRzWzBdLGkpOnJ9LFQoaSx0LE0oInJhbmdlIiwicmFuZ2VSb3VuZCIsImludGVycG9sYXRlIiwiY2xhbXAiLCJ0aWNrRm9ybWF0IikpLGl9ZnVuY3Rpb24gcCh0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdD90OmZ1bmN0aW9uKCl7cmV0dXJuIHR9fWZ1bmN0aW9uIG0oKXt2YXIgdD1hcmd1bWVudHM7cmV0dXJuIGZ1bmN0aW9uKG4sZSl7Zm9yKHZhciByPTAsaT10Lmxlbmd0aDtyPGk7cisrKWlmKG51bGw9PXRbcl0obixlKSlyZXR1cm4hMTtyZXR1cm4hMH19ZnVuY3Rpb24geSgpe3ZhciB0PWFyZ3VtZW50cztyZXR1cm4gZnVuY3Rpb24obixlKXtmb3IodmFyIHI9MCxpPXQubGVuZ3RoO3I8aTtyKyspaWYobnVsbD09dFtyXShuLGUpKXJldHVybiExO3JldHVybiEwfX12YXIgYj1mdW5jdGlvbih0LG4sZSl7dmFyIHI9bltlXTtpZigiZnVuY3Rpb24iIT10eXBlb2Ygcil0aHJvdyBuZXcgRXJyb3IoIkF0dGVtcHQgdG8gcmViaW5kICIrZSsiIHdoaWNoIGlzbid0IGEgZnVuY3Rpb24gb24gdGhlIHNvdXJjZSBvYmplY3QiKTtyZXR1cm4gZnVuY3Rpb24oKXtmb3IodmFyIGU9YXJndW1lbnRzLmxlbmd0aCxpPUFycmF5KGUpLG89MDtvPGU7bysrKWlbb109YXJndW1lbnRzW29dO3ZhciB1PXIuYXBwbHkobixpKTtyZXR1cm4gdT09PW4/dDp1fX0sdz1mdW5jdGlvbih0LG4pe2Zvcih2YXIgZT1hcmd1bWVudHMubGVuZ3RoLHI9QXJyYXkoZT4yP2UtMjowKSxpPTI7aTxlO2krKylyW2ktMl09YXJndW1lbnRzW2ldO3ZhciBvPSEwLHU9ITEsYT12b2lkIDA7dHJ5e2Zvcih2YXIgYyxsPXJbU3ltYm9sLml0ZXJhdG9yXSgpOyEobz0oYz1sLm5leHQoKSkuZG9uZSk7bz0hMCl7dmFyIGY9Yy52YWx1ZTt0W2ZdPWIodCxuLGYpfX1jYXRjaCh0KXt1PSEwLGE9dH1maW5hbGx5e3RyeXshbyYmbC5yZXR1cm4mJmwucmV0dXJuKCl9ZmluYWxseXtpZih1KXRocm93IGF9fXJldHVybiB0fSx4PWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gdC5yZWR1Y2UoZnVuY3Rpb24odCxuKXtyZXR1cm4gdCYmbih0KX0sbil9fSxUPWZ1bmN0aW9uKHQsbil7Zm9yKHZhciBlPWFyZ3VtZW50cy5sZW5ndGgscj1BcnJheShlPjI/ZS0yOjApLGk9MjtpPGU7aSsrKXJbaS0yXT1hcmd1bWVudHNbaV07dmFyIG89eChyKSx1PSEwLGE9ITEsYz12b2lkIDA7dHJ5e2Zvcih2YXIgbCxmPU9iamVjdC5rZXlzKG4pW1N5bWJvbC5pdGVyYXRvcl0oKTshKHU9KGw9Zi5uZXh0KCkpLmRvbmUpO3U9ITApe3ZhciBoPWwudmFsdWUscz1vKGgpO3MmJih0W3NdPWIodCxuLGgpKX19Y2F0Y2godCl7YT0hMCxjPXR9ZmluYWxseXt0cnl7IXUmJmYucmV0dXJuJiZmLnJldHVybigpfWZpbmFsbHl7aWYoYSl0aHJvdyBjfX1yZXR1cm4gdH0sRT1mdW5jdGlvbih0KXtyZXR1cm4gdC5tYXAoZnVuY3Rpb24odCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0P25ldyBSZWdFeHAoIl4iK3QrIiQiKTp0fSl9LFM9ZnVuY3Rpb24oKXtmb3IodmFyIHQ9YXJndW1lbnRzLmxlbmd0aCxuPUFycmF5KHQpLGU9MDtlPHQ7ZSsrKW5bZV09YXJndW1lbnRzW2VdO3JldHVybiBuPUUobiksZnVuY3Rpb24odCl7cmV0dXJuIG4uZXZlcnkoZnVuY3Rpb24obil7cmV0dXJuIW4udGVzdCh0KX0pJiZ0fX0sTT1mdW5jdGlvbigpe2Zvcih2YXIgdD1hcmd1bWVudHMubGVuZ3RoLG49QXJyYXkodCksZT0wO2U8dDtlKyspbltlXT1hcmd1bWVudHNbZV07cmV0dXJuIG49RShuKSxmdW5jdGlvbih0KXtyZXR1cm4gbi5zb21lKGZ1bmN0aW9uKG4pe3JldHVybiBuLnRlc3QodCl9KSYmdH19LGs9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiB0W25dfX0sTD1mdW5jdGlvbih0KXtyZXR1cm4gdFswXS50b1VwcGVyQ2FzZSgpK3Quc2xpY2UoMSl9LEE9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiB0K0wobil9fSxIPWZ1bmN0aW9uKCl7dmFyIHQ9ZnVuY3Rpb24oKXtyZXR1cm4gMTB9LG49aCxlPWYscj1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbCE9dH0saT1mdW5jdGlvbihpKXt2YXIgbz10LmFwcGx5KHRoaXMsYXJndW1lbnRzKSx1PWkuc2xpY2UoMCxvKS5tYXAoZSk7cmV0dXJuIGkubWFwKGZ1bmN0aW9uKHQsaSl7cmV0dXJuIGk+PW8mJih1LnNoaWZ0KCksdS5wdXNoKGUodCxpKSkpLGk8by0xfHx1LnNvbWUoZnVuY3Rpb24odCl7cmV0dXJuIXIodCl9KT9uKHZvaWQgMCxpKTpuKHUsaSl9KX07cmV0dXJuIGkucGVyaW9kPWZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9cyhhcmd1bWVudHMubGVuZ3RoPD0wP3ZvaWQgMDphcmd1bWVudHNbMF0pLGkpOnR9LGkuYWNjdW11bGF0b3I9ZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj1hcmd1bWVudHMubGVuZ3RoPD0wP3ZvaWQgMDphcmd1bWVudHNbMF0saSk6bn0saS5kZWZpbmVkPWZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9YXJndW1lbnRzLmxlbmd0aDw9MD92b2lkIDA6YXJndW1lbnRzWzBdLGkpOnJ9LGkudmFsdWU9ZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT1hcmd1bWVudHMubGVuZ3RoPD0wP3ZvaWQgMDphcmd1bWVudHNbMF0saSk6ZX0saX0sTz1mdW5jdGlvbigpe3ZhciB0PTIsZT1IKCkuYWNjdW11bGF0b3IoZnVuY3Rpb24oZSl7dmFyIHI9ZSYmbi5kZXZpYXRpb24oZSksaT1lJiZuLm1lYW4oZSk7cmV0dXJue2F2ZXJhZ2U6aSx1cHBlcjpkKGkrdCpyKSxsb3dlcjpkKGktdCpyKX19KSxyPWZ1bmN0aW9uKHQpe3JldHVybiBlKHQpfTtyZXR1cm4gci5tdWx0aXBsaWVyPWZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9YXJndW1lbnRzLmxlbmd0aDw9MD92b2lkIDA6YXJndW1lbnRzWzBdLHIpOnR9LHcocixlLCJwZXJpb2QiLCJ2YWx1ZSIpLHJ9LF89ZnVuY3Rpb24oKXt2YXIgdD1mLGU9ZnVuY3Rpb24oKXtyZXR1cm4gOX0scj1mdW5jdGlvbih0KXt2YXIgZT1bXTtyZXR1cm4gZnVuY3Rpb24ocil7dmFyIGk9dm9pZCAwO3JldHVybiBlLmxlbmd0aDx0JiYobnVsbCE9cj9lLnB1c2gocik6ZT1bXSksZS5sZW5ndGg+PXQmJihpPW4ubWVhbihlKSksaX19LGk9ZnVuY3Rpb24obil7dmFyIGk9ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyksbz0yLyhpKzEpLHU9cihpKSxhPXZvaWQgMDtyZXR1cm4gbi5tYXAoZnVuY3Rpb24obixlKXt2YXIgcj10KG4sZSk7cmV0dXJuIGE9dm9pZCAwPT09YT91KHIpOnIqbysoMS1vKSphLGQoYSl9KX07cmV0dXJuIGkucGVyaW9kPWZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9cyhhcmd1bWVudHMubGVuZ3RoPD0wP3ZvaWQgMDphcmd1bWVudHNbMF0pLGkpOmV9LGkudmFsdWU9ZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1hcmd1bWVudHMubGVuZ3RoPD0wP3ZvaWQgMDphcmd1bWVudHNbMF0saSk6dH0saX0sQz1mdW5jdGlvbigpe3ZhciB0PWYsZT1fKCkucGVyaW9kKDEyKSxyPV8oKS5wZXJpb2QoMjYpLGk9XygpLnBlcmlvZCg5KSxvPWZ1bmN0aW9uKG8pe2UudmFsdWUodCksci52YWx1ZSh0KTt2YXIgdT1uLnppcChlKG8pLHIobykpLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdm9pZCAwIT09dFswXSYmdm9pZCAwIT09dFsxXT90WzBdLXRbMV06dm9pZCAwfSksYT1pKHUpO3JldHVybiBuLnppcCh1LGEpLm1hcChmdW5jdGlvbih0KXtyZXR1cm57bWFjZDp0WzBdLHNpZ25hbDp0WzFdLGRpdmVyZ2VuY2U6dm9pZCAwIT09dFswXSYmdm9pZCAwIT09dFsxXT90WzBdLXRbMV06dm9pZCAwfX0pfTtyZXR1cm4gby52YWx1ZT1mdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PWFyZ3VtZW50cy5sZW5ndGg8PTA/dm9pZCAwOmFyZ3VtZW50c1swXSxvKTp0fSxUKG8sZSxrKHtwZXJpb2Q6ImZhc3RQZXJpb2QifSkpLFQobyxyLGsoe3BlcmlvZDoic2xvd1BlcmlvZCJ9KSksVChvLGksayh7cGVyaW9kOiJzaWduYWxQZXJpb2QifSkpLG99LEQ9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24odCl7cmV0dXJuIHR5cGVvZiB0fTpmdW5jdGlvbih0KXtyZXR1cm4gdCYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmdC5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmdCE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIHR9LE49ZnVuY3Rpb24odCxuKXtpZighKHQgaW5zdGFuY2VvZiBuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0sST1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxuKXtmb3IodmFyIGU9MDtlPG4ubGVuZ3RoO2UrKyl7dmFyIHI9bltlXTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LHIua2V5LHIpfX1yZXR1cm4gZnVuY3Rpb24obixlLHIpe3JldHVybiBlJiZ0KG4ucHJvdG90eXBlLGUpLHImJnQobixyKSxufX0oKSxWPWZ1bmN0aW9uKHQsbil7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIG4mJm51bGwhPT1uKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgIit0eXBlb2Ygbik7dC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShuJiZuLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOnQsZW51bWVyYWJsZTohMSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksbiYmKE9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YodCxuKTp0Ll9fcHJvdG9fXz1uKX0sUD1mdW5jdGlvbih0LG4pe2lmKCF0KXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIW58fCJvYmplY3QiIT10eXBlb2YgbiYmImZ1bmN0aW9uIiE9dHlwZW9mIG4/dDpufSx6PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LG4pe3ZhciBlPVtdLHI9ITAsaT0hMSxvPXZvaWQgMDt0cnl7Zm9yKHZhciB1LGE9dFtTeW1ib2wuaXRlcmF0b3JdKCk7IShyPSh1PWEubmV4dCgpKS5kb25lKSYmKGUucHVzaCh1LnZhbHVlKSwhbnx8ZS5sZW5ndGghPT1uKTtyPSEwKTt9Y2F0Y2godCl7aT0hMCxvPXR9ZmluYWxseXt0cnl7IXImJmEucmV0dXJuJiZhLnJldHVybigpfWZpbmFsbHl7aWYoaSl0aHJvdyBvfX1yZXR1cm4gZX1yZXR1cm4gZnVuY3Rpb24obixlKXtpZihBcnJheS5pc0FycmF5KG4pKXJldHVybiBuO2lmKFN5bWJvbC5pdGVyYXRvciBpbiBPYmplY3QobikpcmV0dXJuIHQobixlKTt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlIil9fSgpLFI9ZnVuY3Rpb24odCl7aWYoQXJyYXkuaXNBcnJheSh0KSl7Zm9yKHZhciBuPTAsZT1BcnJheSh0Lmxlbmd0aCk7bjx0Lmxlbmd0aDtuKyspZVtuXT10W25dO3JldHVybiBlfXJldHVybiBBcnJheS5mcm9tKHQpfSxGPWZ1bmN0aW9uKCl7dmFyIHQ9SCgpLnBlcmlvZCgxNCksZT1mdW5jdGlvbih0LG4pe3JldHVybiBuKyh0W3QubGVuZ3RoLTFdLW4pL3QubGVuZ3RofSxyPWZ1bmN0aW9uKHQpe3ZhciBuPXoodCwyKSxlPW5bMF0scj1uWzFdO3JldHVybiBlPHI/MDplLXJ9LGk9ZnVuY3Rpb24odCl7dmFyIG49eih0LDIpLGU9blswXSxyPW5bMV07cmV0dXJuIGU+cj8wOnItZX0sbz1mdW5jdGlvbih0LHIpe3JldHVybiB2b2lkIDAhPT1yP2UodCxyKTpuLm1lYW4odCl9LHU9ZnVuY3Rpb24oKXt2YXIgdD12b2lkIDAsZT12b2lkIDAsdT12b2lkIDA7cmV0dXJuIGZ1bmN0aW9uKGEpe2lmKCFhKXJldHVybiB2b2lkKHZvaWQgMCE9PXQmJih0PU5hTikpO2lmKHZvaWQgMD09PXQpcmV0dXJuIHZvaWQodD1hWzBdKTt2YXIgYz1uLnBhaXJzKFt0XS5jb25jYXQoUihhKSkpO2U9byhjLm1hcChyKSxlKSx1PW8oYy5tYXAoaSksdSk7dmFyIGw9aXNOYU4odCk/TmFOOnUvZTtyZXR1cm4gZCgxMDAtMTAwLygxK2wpKX19LGE9ZnVuY3Rpb24obil7dmFyIGU9dSgpO3JldHVybiB0LmFjY3VtdWxhdG9yKGUpLHQobil9O3JldHVybiB3KGEsdCwicGVyaW9kIiwidmFsdWUiKSxhfSxVPWZ1bmN0aW9uKCl7dmFyIHQ9SCgpLmFjY3VtdWxhdG9yKGZ1bmN0aW9uKHQpe3JldHVybiB0JiZuLm1lYW4odCl9KSxlPWZ1bmN0aW9uKG4pe3JldHVybiB0KG4pfTtyZXR1cm4gdyhlLHQsInBlcmlvZCIsInZhbHVlIiksZX0sQj1mdW5jdGlvbigpe3ZhciB0PWZ1bmN0aW9uKHQsbil7cmV0dXJuIHQuY2xvc2V9LGU9ZnVuY3Rpb24odCxuKXtyZXR1cm4gdC5oaWdofSxyPWZ1bmN0aW9uKHQsbil7cmV0dXJuIHQubG93fSxpPUgoKS5wZXJpb2QoNSkuZGVmaW5lZChmdW5jdGlvbihuKXtyZXR1cm4gbnVsbCE9dChuKSYmbnVsbCE9ZShuKSYmbnVsbCE9cihuKX0pLmFjY3VtdWxhdG9yKGZ1bmN0aW9uKGkpe3ZhciBvPWkmJm4ubWF4KGksZSksdT1pJiZuLm1pbihpLHIpLGE9aSYmMTAwKih0KGlbaS5sZW5ndGgtMV0pLXUpLyhvLXUpO3JldHVybiBkKGEpfSksbz1VKCkucGVyaW9kKDMpLHU9ZnVuY3Rpb24odCl7dmFyIG49aSh0KSxlPW8obik7cmV0dXJuIG4ubWFwKGZ1bmN0aW9uKHQsbil7cmV0dXJue2s6dCxkOmVbbl19fSl9O3JldHVybiB1LmNsb3NlVmFsdWU9ZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1hcmd1bWVudHMubGVuZ3RoPD0wP3ZvaWQgMDphcmd1bWVudHNbMF0sdSk6dH0sdS5oaWdoVmFsdWU9ZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT1hcmd1bWVudHMubGVuZ3RoPD0wP3ZvaWQgMDphcmd1bWVudHNbMF0sdSk6ZX0sdS5sb3dWYWx1ZT1mdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPWFyZ3VtZW50cy5sZW5ndGg8PTA/dm9pZCAwOmFyZ3VtZW50c1swXSx1KTpyfSxUKHUsaSxrKHtwZXJpb2Q6ImtQZXJpb2QifSkpLFQodSxvLGsoe3BlcmlvZDoiZFBlcmlvZCJ9KSksdX0scT1mdW5jdGlvbigpe3ZhciB0PWZ1bmN0aW9uKHQsbil7cmV0dXJuIHQudm9sdW1lfSxuPWZ1bmN0aW9uKHQsbil7cmV0dXJuIHQuY2xvc2V9LGU9XygpLnBlcmlvZCgxMykscj1IKCkucGVyaW9kKDIpLmRlZmluZWQoZnVuY3Rpb24oZSl7cmV0dXJuIG51bGwhPW4oZSkmJm51bGwhPXQoZSl9KS5hY2N1bXVsYXRvcihmdW5jdGlvbihlKXtyZXR1cm4gZSYmZCgobihlWzFdKS1uKGVbMF0pKSp0KGVbMV0pKX0pLGk9ZnVuY3Rpb24odCl7dmFyIG49cih0KTtyZXR1cm4gZShuKX07cmV0dXJuIGkudm9sdW1lVmFsdWU9ZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1hcmd1bWVudHMubGVuZ3RoPD0wP3ZvaWQgMDphcmd1bWVudHNbMF0saSk6dH0saS5jbG9zZVZhbHVlPWZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49YXJndW1lbnRzLmxlbmd0aDw9MD92b2lkIDA6YXJndW1lbnRzWzBdLGkpOm59LHcoaSxlLCJwZXJpb2QiKSxpfSxXPWZ1bmN0aW9uKCl7dmFyIHQ9LjEsbj1mLGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGUubWFwKGZ1bmN0aW9uKGUpe3ZhciByPWQobihlKSooMS10KSksaT1kKG4oZSkqKDErdCkpO3JldHVybntsb3dlcjpyLHVwcGVyOml9fSl9O3JldHVybiBlLmZhY3Rvcj1mdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PWFyZ3VtZW50cy5sZW5ndGg8PTA/dm9pZCAwOmFyZ3VtZW50c1swXSxlKTp0fSxlLnZhbHVlPWZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49YXJndW1lbnRzLmxlbmd0aDw9MD92b2lkIDA6YXJndW1lbnRzWzBdLGUpOm59LGV9LGo9ZnVuY3Rpb24oKXt2YXIgdD1mdW5jdGlvbih0LG4pe3JldHVybiB0LmNsb3NlfSxlPWZ1bmN0aW9uKHQsbil7cmV0dXJuIHQuaGlnaH0scj1mdW5jdGlvbih0LG4pe3JldHVybiB0Lmxvd30saT1fKCkucGVyaW9kKDEzKSxvPWZ1bmN0aW9uKG8pe3JldHVybiBpLnZhbHVlKHQpLG4uemlwKG8saShvKSkubWFwKGZ1bmN0aW9uKHQpe3ZhciBuPWQoZSh0WzBdKS10WzFdKSxpPWQocih0WzBdKS10WzFdKTtyZXR1cm57YnVsbFBvd2VyOm4sYmVhclBvd2VyOml9fSl9O3JldHVybiBvLmNsb3NlVmFsdWU9ZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1hcmd1bWVudHMubGVuZ3RoPD0wP3ZvaWQgMDphcmd1bWVudHNbMF0sbyk6dH0sby5oaWdoVmFsdWU9ZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT1hcmd1bWVudHMubGVuZ3RoPD0wP3ZvaWQgMDphcmd1bWVudHNbMF0sbyk6ZX0sby5sb3dWYWx1ZT1mdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPWFyZ3VtZW50cy5sZW5ndGg8PTA/dm9pZCAwOmFyZ3VtZW50c1swXSxvKTpyfSx3KG8saSwicGVyaW9kIiksb30sUT1mdW5jdGlvbigpe3ZhciB0PXt9O3JldHVybiB0LmRpc3RhbmNlPWZ1bmN0aW9uKHQsbil7cmV0dXJuIG4tdH0sdC5vZmZzZXQ9ZnVuY3Rpb24odCxuKXtyZXR1cm4gdCBpbnN0YW5jZW9mIERhdGU/bmV3IERhdGUodC5nZXRUaW1lKCkrbik6dCtufSx0LmNsYW1wVXA9ZnVuY3Rpb24odCl7cmV0dXJuIHR9LHQuY2xhbXBEb3duPWZ1bmN0aW9uKHQpe3JldHVybiB0fSx0LmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gdH0sdH0sRz1mdW5jdGlvbigpe3ZhciB0PTg2NGU1LG49NSp0LGU9Nyp0LGk9e30sbz1mdW5jdGlvbih0KXtyZXR1cm4gMD09PXQuZ2V0RGF5KCl8fDY9PT10LmdldERheSgpfTtyZXR1cm4gaS5jbGFtcERvd249ZnVuY3Rpb24odCl7aWYodCYmbyh0KSl7dmFyIG49MD09PXQuZ2V0RGF5KCk/MjoxLGU9ci50aW1lRGF5LmNlaWwodCk7cmV0dXJuIHIudGltZURheS5vZmZzZXQoZSwtbil9cmV0dXJuIHR9LGkuY2xhbXBVcD1mdW5jdGlvbih0KXtpZih0JiZvKHQpKXt2YXIgbj0wPT09dC5nZXREYXkoKT8xOjIsZT1yLnRpbWVEYXkuZmxvb3IodCk7cmV0dXJuIHIudGltZURheS5vZmZzZXQoZSxuKX1yZXR1cm4gdH0saS5kaXN0YW5jZT1mdW5jdGlvbih0LG8pe3Q9aS5jbGFtcFVwKHQpLG89aS5jbGFtcERvd24obyk7dmFyIHU9ci50aW1lU2F0dXJkYXkuY2VpbCh0KTtpZihvPHUpcmV0dXJuIG8uZ2V0VGltZSgpLXQuZ2V0VGltZSgpO3ZhciBhPXUuZ2V0VGltZSgpLXQuZ2V0VGltZSgpLGM9ci50aW1lU2F0dXJkYXkuY2VpbChvKSxsPWMuZ2V0VGltZSgpLW8uZ2V0VGltZSgpLGY9TWF0aC5yb3VuZCgoYy5nZXRUaW1lKCktdS5nZXRUaW1lKCkpL2UpO3JldHVybiBmKm4rYS1sfSxpLm9mZnNldD1mdW5jdGlvbih0LGUpe3ZhciB1PW8odCk/aS5jbGFtcFVwKHQpOnQ7aWYoMD09PWUpcmV0dXJuIHU7dmFyIGE9ZTwwLGM9ZT4wLGw9ZSxmPWE/ci50aW1lTW9uZGF5LmZsb29yKHUpOnIudGltZVNhdHVyZGF5LmNlaWwodSk7aWYobC09Zi5nZXRUaW1lKCktdS5nZXRUaW1lKCksYSYmbD4wfHxjJiZsPDApcmV0dXJuIG5ldyBEYXRlKHUuZ2V0VGltZSgpK2UpO3U9YT9mOnIudGltZURheS5vZmZzZXQoZiwyKTt2YXIgaD1NYXRoLmZsb29yKGwvbik7cmV0dXJuIHU9ci50aW1lRGF5Lm9mZnNldCh1LDcqaCksbC09aCpuLHU9bmV3IERhdGUodS5nZXRUaW1lKCkrbCl9LGkuY29weT1mdW5jdGlvbigpe3JldHVybiBpfSxpfSxZPWZ1bmN0aW9uKCl7Zm9yKHZhciB0PWFyZ3VtZW50cy5sZW5ndGgsbj1BcnJheSh0KSxlPTA7ZTx0O2UrKyluW2VdPWFyZ3VtZW50c1tlXTt2YXIgcj1mdW5jdGlvbih0LG4pe3JldHVybiB0Pm5bMF0mJnQ8blsxXX0saT1mdW5jdGlvbih0LG4pe3JldHVybiB0WzBdPj1uWzBdJiZ0WzFdPD1uWzFdfSxvPXt9O28uZGlzdGFuY2U9ZnVuY3Rpb24odCxlKXt0PW8uY2xhbXBVcCh0KSxlPW8uY2xhbXBEb3duKGUpO3ZhciByPW4uZmlsdGVyKGZ1bmN0aW9uKG4pe3JldHVybiBpKG4sW3QsZV0pfSksdT1yLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdFsxXS10WzBdfSk7cmV0dXJuIGUtdC11LnJlZHVjZShmdW5jdGlvbih0LG4pe3JldHVybiB0K259LDApfTt2YXIgdT1mdW5jdGlvbih0LG4pe3JldHVybiB0IGluc3RhbmNlb2YgRGF0ZT9uZXcgRGF0ZSh0LmdldFRpbWUoKStuKTp0K259O3JldHVybiBvLm9mZnNldD1mdW5jdGlvbih0LGUpe2lmKGU+MCl7dmFyIHI9ZnVuY3Rpb24oKXtmb3IodmFyIHI9by5jbGFtcFVwKHQpLGk9ZTtpPjA7KXt2YXIgYT1uLmZpbHRlcihmdW5jdGlvbih0KXtyZXR1cm4gdFswXT5yfSkuc29ydChmdW5jdGlvbih0LG4pe3JldHVybiB0WzBdLW5bMF19KTtpZihhLmxlbmd0aCl7dmFyIGM9YVswXSxsPWNbMF0tcjtsPmk/KHI9dShyLGkpLGk9MCk6KHI9Y1sxXSxpLT1sKX1lbHNlIHI9dShyLGkpLGk9MH1yZXR1cm57djpyfX0oKTtpZigib2JqZWN0Ij09PSgidW5kZWZpbmVkIj09dHlwZW9mIHI/InVuZGVmaW5lZCI6RChyKSkpcmV0dXJuIHIudn1lbHNle3ZhciBpPWZ1bmN0aW9uKCl7Zm9yKHZhciByPW8uY2xhbXBEb3duKHQpLGk9ZTtpPDA7KXt2YXIgYT1uLmZpbHRlcihmdW5jdGlvbih0KXtyZXR1cm4gdFsxXTxyfSkuc29ydChmdW5jdGlvbih0LG4pe3JldHVybiBuWzBdLXRbMF19KTtpZihhLmxlbmd0aCl7dmFyIGM9YVswXSxsPWNbMV0tcjtsPGk/KHI9dShyLGkpLGk9MCk6KHI9Y1swXSxpLT1sKX1lbHNlIHI9dShyLGkpLGk9MH1yZXR1cm57djpyfX0oKTtpZigib2JqZWN0Ij09PSgidW5kZWZpbmVkIj09dHlwZW9mIGk/InVuZGVmaW5lZCI6RChpKSkpcmV0dXJuIGkudn19LG8uY2xhbXBVcD1mdW5jdGlvbih0KXtyZXR1cm4gbi5yZWR1Y2UoZnVuY3Rpb24odCxuKXtyZXR1cm4gcih0LG4pP25bMV06dH0sdCl9LG8uY2xhbXBEb3duPWZ1bmN0aW9uKHQpe3JldHVybiBuLnJlZHVjZShmdW5jdGlvbih0LG4pe3JldHVybiByKHQsbik/blswXTp0fSx0KX0sby5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIG99LG99LFg9ZnVuY3Rpb24oKXt2YXIgdD1bZnVuY3Rpb24odCl7cmV0dXJuIHR9XSxlPVswLDBdLHI9InBlcmNlbnQiLGk9bnVsbCxvPVtdLHU9ZnVuY3Rpb24odSl7dmFyIGE9bmV3IEFycmF5KHUubGVuZ3RoKSxjPSEwLGw9ITEsZj12b2lkIDA7dHJ5e2Zvcih2YXIgaCxzPXRbU3ltYm9sLml0ZXJhdG9yXSgpOyEoYz0oaD1zLm5leHQoKSkuZG9uZSk7Yz0hMClmb3IodmFyIGQ9aC52YWx1ZSxnPTA7Zzx1Lmxlbmd0aDtnKyspe3ZhciB2PWQodVtnXSxnKTtBcnJheS5pc0FycmF5KHYpP2EucHVzaC5hcHBseShhLFIodikpOmEucHVzaCh2KX19Y2F0Y2godCl7bD0hMCxmPXR9ZmluYWxseXt0cnl7IWMmJnMucmV0dXJuJiZzLnJldHVybigpfWZpbmFsbHl7aWYobCl0aHJvdyBmfX12YXIgcD1bbi5taW4oYSksbi5tYXgoYSldO2lmKHBbMF09bnVsbD09cFswXT9uLm1pbihvKTpuLm1pbihbcFswXV0uY29uY2F0KFIobykpKSxwWzFdPW51bGw9PXBbMV0/bi5tYXgobyk6bi5tYXgoW3BbMV1dLmNvbmNhdChSKG8pKSksbnVsbCE9aSl7dmFyIG09TWF0aC5tYXgoTWF0aC5hYnMocFsxXS1pKSxNYXRoLmFicyhwWzBdLWkpKTtwWzBdPWktbSxwWzFdPWkrbX1zd2l0Y2gocil7Y2FzZSJkb21haW4iOnBbMF0tPWVbMF0scFsxXSs9ZVsxXTticmVhaztjYXNlInBlcmNlbnQiOnZhciB5PXBbMV0tcFswXTtwWzBdLT1lWzBdKnkscFsxXSs9ZVsxXSp5O2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJVbmtub3duIHBhZFVuaXQ6ICIrcil9cmV0dXJuIHB9O3JldHVybiB1LmFjY2Vzc29ycz1mdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PWFyZ3VtZW50cy5sZW5ndGg8PTA/dm9pZCAwOmFyZ3VtZW50c1swXSx1KTp0fSx1LnBhZD1mdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPWFyZ3VtZW50cy5sZW5ndGg8PTA/dm9pZCAwOmFyZ3VtZW50c1swXSx1KTplfSx1LnBhZFVuaXQ9ZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj1hcmd1bWVudHMubGVuZ3RoPD0wP3ZvaWQgMDphcmd1bWVudHNbMF0sdSk6cn0sdS5pbmNsdWRlPWZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89YXJndW1lbnRzLmxlbmd0aDw9MD92b2lkIDA6YXJndW1lbnRzWzBdLHUpOm99LHUuc3ltbWV0cmljYWxBYm91dD1mdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPWFyZ3VtZW50cy5sZW5ndGg8PTA/dm9pZCAwOmFyZ3VtZW50c1swXSx1KTppfSx1fSxaPWZ1bmN0aW9uKCl7dmFyIHQ9W10sbj1bMCwwXSxlPSJwZXJjZW50IixyPW51bGwsaT1bXSxvPVgoKSx1PWZ1bmN0aW9uKHUpe3ZhciBhPXQubWFwKGZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBuPXQuYXBwbHkodm9pZCAwLGFyZ3VtZW50cyk7cmV0dXJuIEFycmF5LmlzQXJyYXkobik/bi5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHQudmFsdWVPZigpfSk6bi52YWx1ZU9mKCl9fSk7cmV0dXJuIG8uYWNjZXNzb3JzKGEpLnBhZChuKS5wYWRVbml0KGUpLnN5bW1ldHJpY2FsQWJvdXQobnVsbCE9cj9yLnZhbHVlT2YoKTpudWxsKS5pbmNsdWRlKGkubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0LnZhbHVlT2YoKX0pKSxvKHUpLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gbmV3IERhdGUodCl9KX07cmV0dXJuIHUuYWNjZXNzb3JzPWZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9YXJndW1lbnRzLmxlbmd0aDw9MD92b2lkIDA6YXJndW1lbnRzWzBdLHUpOnR9LHUucGFkPWZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49YXJndW1lbnRzLmxlbmd0aDw9MD92b2lkIDA6YXJndW1lbnRzWzBdLHUpOm59LHUucGFkVW5pdD1mdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPWFyZ3VtZW50cy5sZW5ndGg8PTA/dm9pZCAwOmFyZ3VtZW50c1swXSx1KTplfSx1LmluY2x1ZGU9ZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT1hcmd1bWVudHMubGVuZ3RoPD0wP3ZvaWQgMDphcmd1bWVudHNbMF0sdSk6aX0sdS5zeW1tZXRyaWNhbEFib3V0PWZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9YXJndW1lbnRzLmxlbmd0aDw9MD92b2lkIDA6YXJndW1lbnRzWzBdLHUpOnJ9LHV9LEs9ZnVuY3Rpb24oKXt2YXIgdD0xLG49MjAsZT0uMSxyPS4xLG89aS5yYW5kb21Ob3JtYWwoKSx1PWZ1bmN0aW9uKGkpe2Zvcih2YXIgdT10L24sYT1bXSxjPTA7YzxuKzE7YysrKXthLnB1c2goaSk7dmFyIGw9bygpKk1hdGguc3FydCh1KSpyKyhlLXIqci8yKSp1O2kqPU1hdGguZXhwKGwpfXJldHVybiBhfTtyZXR1cm4gdS5wZXJpb2Q9ZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1hcmd1bWVudHMubGVuZ3RoPD0wP3ZvaWQgMDphcmd1bWVudHNbMF0sdSk6dH0sdS5zdGVwcz1mdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPWFyZ3VtZW50cy5sZW5ndGg8PTA/dm9pZCAwOmFyZ3VtZW50c1swXSx1KTpufSx1Lm11PWZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9YXJndW1lbnRzLmxlbmd0aDw9MD92b2lkIDA6YXJndW1lbnRzWzBdLHUpOmV9LHUuc2lnbWE9ZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj1hcmd1bWVudHMubGVuZ3RoPD0wP3ZvaWQgMDphcmd1bWVudHNbMF0sdSk6cn0sdS5yYW5kb21Ob3JtYWw9ZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz1hcmd1bWVudHMubGVuZ3RoPD0wP3ZvaWQgMDphcmd1bWVudHNbMF0sdSk6b30sdX0sJD1mdW5jdGlvbigpe3ZhciB0PW5ldyBEYXRlLG49MTAwLGU9ci50aW1lRGF5LG89MSx1PXIudGltZVllYXIsYT0xLGM9bnVsbCxsPWZ1bmN0aW9uKCl7dmFyIHQ9aS5yYW5kb21Ob3JtYWwoMSwuMSk7cmV0dXJuIE1hdGguY2VpbCgxZTMqdCgpKX0sZj1LKCksaD1mdW5jdGlvbih0KXt2YXIgbj11Lm9mZnNldCh0LGEpLXQ7cmV0dXJuKGUub2Zmc2V0KHQsbyktdCkvbn0scz1mdW5jdGlvbih0LG4pe3ZhciBlPWgodCkscj1mLnBlcmlvZChlKShuKSxpPXtkYXRlOnQsb3BlbjpyWzBdLGhpZ2g6TWF0aC5tYXguYXBwbHkoTWF0aCxyKSxsb3c6TWF0aC5taW4uYXBwbHkoTWF0aCxyKSxjbG9zZTpyW2Yuc3RlcHMoKV19O3JldHVybiBpLnZvbHVtZT1sKGkpLGl9LGQ9ZnVuY3Rpb24ocil7dmFyIGk9dm9pZCAwLHU9dm9pZCAwLGE9dm9pZCAwO2RvIGk9cj9lLm9mZnNldChyLmRhdGUsbyk6bmV3IERhdGUodC5nZXRUaW1lKCkpLHU9cj9yLmNsb3NlOm4scj1zKGksdSksYT1jJiYhYyhyKTt3aGlsZShhKTtyZXR1cm4gcn0sZz1mdW5jdGlvbigpe3ZhciB0PXZvaWQgMCxuPXt9O3JldHVybiBuLm5leHQ9ZnVuY3Rpb24oKXt2YXIgbj1kKHQpO3JldHVybiB0PW4sbn0sbi50YWtlPWZ1bmN0aW9uKHQpe3JldHVybiBuLnVudGlsKGZ1bmN0aW9uKG4sZSl7cmV0dXJuIXR8fHQ8MHx8ZT09PXR9KX0sbi51bnRpbD1mdW5jdGlvbihuKXtmb3IodmFyIGU9W10scj0wLGk9ZCh0KSxvPW4mJiFuKGkscik7bzspZS5wdXNoKGkpLHQ9aSxpPWQodCkscis9MSxvPW4mJiFuKGkscik7cmV0dXJuIGV9LG59LHY9ZnVuY3Rpb24odCl7cmV0dXJuIGcoKS50YWtlKHQpfTtyZXR1cm4gdi5zdHJlYW09Zyx2W1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXt2YXIgdD1nKCk7cmV0dXJue25leHQ6ZnVuY3Rpb24oKXtyZXR1cm57dmFsdWU6dC5uZXh0KCksZG9uZTohMX19fX0sdi5zdGFydERhdGU9ZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1hcmd1bWVudHMubGVuZ3RoPD0wP3ZvaWQgMDphcmd1bWVudHNbMF0sdik6dH0sdi5zdGFydFByaWNlPWZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49YXJndW1lbnRzLmxlbmd0aDw9MD92b2lkIDA6YXJndW1lbnRzWzBdLHYpOm59LHYuaW50ZXJ2YWw9ZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT1hcmd1bWVudHMubGVuZ3RoPD0wP3ZvaWQgMDphcmd1bWVudHNbMF0sdik6ZX0sdi5pbnRlcnZhbFN0ZXA9ZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz1hcmd1bWVudHMubGVuZ3RoPD0wP3ZvaWQgMDphcmd1bWVudHNbMF0sdik6b30sdi51bml0SW50ZXJ2YWw9ZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT1hcmd1bWVudHMubGVuZ3RoPD0wP3ZvaWQgMDphcmd1bWVudHNbMF0sdik6dX0sdi51bml0SW50ZXJ2YWxTdGVwPWZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9YXJndW1lbnRzLmxlbmd0aDw9MD92b2lkIDA6YXJndW1lbnRzWzBdLHYpOmF9LHYuZmlsdGVyPWZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGM9YXJndW1lbnRzLmxlbmd0aDw9MD92b2lkIDA6YXJndW1lbnRzWzBdLHYpOmN9LHYudm9sdW1lPWZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGw9cChhcmd1bWVudHMubGVuZ3RoPD0wP3ZvaWQgMDphcmd1bWVudHNbMF0pLHYpOmx9LHcodixmLCJzdGVwcyIsIm11Iiwic2lnbWEiKSx2fSxKPWZ1bmN0aW9uKHQpe3ZhciBuPXQuZGF0ZS5nZXREYXkoKTtyZXR1cm4hKDA9PT1ufHw2PT09bil9LHR0PWZ1bmN0aW9uKCl7dmFyIHQ9IkJUQy1VU0QiLG49bnVsbCxlPW51bGwscj1udWxsLGk9ZnVuY3Rpb24oaSl7dmFyIHU9W107bnVsbCE9biYmdS5wdXNoKCJzdGFydD0iK24udG9JU09TdHJpbmcoKSksbnVsbCE9ZSYmdS5wdXNoKCJlbmQ9IitlLnRvSVNPU3RyaW5nKCkpLG51bGwhPXImJnUucHVzaCgiZ3JhbnVsYXJpdHk9IityKTt2YXIgYT0iaHR0cHM6Ly9hcGkuZ2RheC5jb20vcHJvZHVjdHMvIit0KyIvY2FuZGxlcz8iK3Uuam9pbigiJiIpO28uanNvbihhLGZ1bmN0aW9uKHQsbil7cmV0dXJuIHQ/dm9pZCBpKHQpOihuPW4ubWFwKGZ1bmN0aW9uKHQpe3JldHVybntkYXRlOm5ldyBEYXRlKDFlMyp0WzBdKSxvcGVuOnRbM10saGlnaDp0WzJdLGxvdzp0WzFdLGNsb3NlOnRbNF0sdm9sdW1lOnRbNV19fSksdm9pZCBpKHQsbikpfSl9O3JldHVybiBpLnByb2R1Y3Q9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9bixpKTp0fSxpLnN0YXJ0PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPXQsaSk6bn0saS5lbmQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9dCxpKTplfSxpLmdyYW51bGFyaXR5PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPXQsaSk6cn0saX0sbnQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3JldHVybiB0WzBdLnRvTG93ZXJDYXNlKCkrdC5zdWJzdHIoMSl9dmFyIG49IllBSE9PIixlPSJHT09HIixyPW51bGwsaT1udWxsLHU9bnVsbCxhPW51bGwsYz0hMSxsPW51bGwsZj10LGg9ZnVuY3Rpb24odCl7dmFyIGg9W107bnVsbCE9ciYmaC5wdXNoKCJhcGlfa2V5PSIrciksbnVsbCE9aSYmaC5wdXNoKCJzdGFydF9kYXRlPSIraS50b0lTT1N0cmluZygpLnN1YnN0cmluZygwLDEwKSksbnVsbCE9dSYmaC5wdXNoKCJlbmRfZGF0ZT0iK3UudG9JU09TdHJpbmcoKS5zdWJzdHJpbmcoMCwxMCkpLG51bGwhPWEmJmgucHVzaCgicm93cz0iK2EpLGN8fGgucHVzaCgib3JkZXI9YXNjIiksbnVsbCE9bCYmaC5wdXNoKCJjb2xsYXBzZT0iK2wpO3ZhciBzPSJodHRwczovL3d3dy5xdWFuZGwuY29tL2FwaS92My9kYXRhc2V0cy8iK24rIi8iK2UrIi9kYXRhLmpzb24/IitoLmpvaW4oIiYiKTtvLmpzb24ocyxmdW5jdGlvbihuLGUpe2lmKG4pcmV0dXJuIHZvaWQgdChuKTt2YXIgcj1lLmRhdGFzZXRfZGF0YSxpPWZ8fGZ1bmN0aW9uKHQpe3JldHVybiB0fSxvPXIuY29sdW1uX25hbWVzLm1hcChmdW5jdGlvbih0LG4pe3JldHVybltuLGkodCldfSkuZmlsdGVyKGZ1bmN0aW9uKHQpe3JldHVybiB0WzFdfSksdT1yLmRhdGEubWFwKGZ1bmN0aW9uKHQpe3ZhciBuPXt9O3JldHVybiBvLmZvckVhY2goZnVuY3Rpb24oZSl7bltlWzFdXT0wPT09ZVswXT9uZXcgRGF0ZSh0W2VbMF1dKTp0W2VbMF1dfSksbn0pO3Qobix1KX0pfTtyZXR1cm4gaC5kYXRhYmFzZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj10LGgpOm59LGguZGF0YXNldD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT10LGgpOmV9LGguYXBpS2V5PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPXQsaCk6cn0saC5zdGFydD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT10LGgpOml9LGguZW5kPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PXQsaCk6dX0saC5yb3dzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPXQsaCk6YX0saC5kZXNjZW5kaW5nPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhjPXQsaCk6Y30saC5jb2xsYXBzZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obD10LGgpOmx9LGguY29sdW1uTmFtZU1hcD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZj10LGgpOmZ9LGguZGVmYXVsdENvbHVtbk5hbWVNYXA9dCxofSxldD1mdW5jdGlvbigpe3ZhciB0PTEwLGU9ZnVuY3Rpb24oZSl7cmV0dXJuIHQ8PTE/ZS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuW3RdfSk6bi5yYW5nZSgwLE1hdGguY2VpbChlLmxlbmd0aC90KSkubWFwKGZ1bmN0aW9uKG4pe3JldHVybiBlLnNsaWNlKG4qdCwobisxKSp0KX0pfTtyZXR1cm4gZS5idWNrZXRTaXplPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PW4sZSk6dH0sZX0scnQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3ZhciBlPXQubWFwKGZ1bmN0aW9uKHQpe3JldHVybltyKHQpLGkodCldfSksbz1uLnJhbmdlKDEsZS5sZW5ndGgtMSkubWFwKGZ1bmN0aW9uKHQpe3ZhciBuPWVbdC0xXSxyPWVbdF0saT1lW3QrMV0sbz0oblswXS1pWzBdKSooclsxXS1uWzFdKSx1PShuWzBdLXJbMF0pKihpWzFdLW5bMV0pO3JldHVybiBNYXRoLmFicyguNSpvKnUpfSk7cmV0dXJuIG99dmFyIGU9ZXQoKSxyPWZ1bmN0aW9uKHQpe3JldHVybiB0fSxpPWZ1bmN0aW9uKHQpe3JldHVybiB0fSxvPWZ1bmN0aW9uKHIpe2lmKGUuYnVja2V0U2l6ZSgpPj1yLmxlbmd0aClyZXR1cm4gcjt2YXIgaT10KHIpLG89ZShpKSx1PWUoci5zbGljZSgxLHIubGVuZ3RoLTEpKSxhPXUubWFwKGZ1bmN0aW9uKHQsZSl7dmFyIHI9b1tlXSxpPW4ubWF4KHIpLHU9ci5pbmRleE9mKGkpO3JldHVybiB0W3VdfSk7cmV0dXJuW10uY29uY2F0KFtyWzBdXSxhLFtyW3IubGVuZ3RoLTFdXSl9O3JldHVybiB3KG8sZSwiYnVja2V0U2l6ZSIpLG8ueD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj10LG8pOnJ9LG8ueT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT10LG8pOml9LG99LGl0PWZ1bmN0aW9uKCl7dmFyIHQ9ZnVuY3Rpb24odCl7cmV0dXJuIHR9LGU9ZnVuY3Rpb24odCl7cmV0dXJuIHR9LHI9ZXQoKSxpPWZ1bmN0aW9uKGkpe2lmKHIuYnVja2V0U2l6ZSgpPj1pLmxlbmd0aClyZXR1cm4gaTt2YXIgbz1yKGkuc2xpY2UoMSxpLmxlbmd0aC0xKSksdT1pWzBdLGE9aVtpLmxlbmd0aC0xXSxjPVtdLmNvbmNhdChbdV0sbyxbYV0pLGw9dCh1KSxmPWUodSksaD1vLm1hcChmdW5jdGlvbihyLGkpe3ZhciBvPW4ubWVhbihjW2krMV0sdCksdT1uLm1lYW4oY1tpKzFdLGUpLGE9ci5tYXAoZnVuY3Rpb24obil7cmV0dXJuW3QobiksZShuKV19KSxoPWEubWFwKGZ1bmN0aW9uKHQpe3ZhciBuPShsLW8pKih0WzFdLWYpLGU9KGwtdFswXSkqKHUtZik7cmV0dXJuIE1hdGguYWJzKC41Km4qZSl9KSxzPWguaW5kZXhPZihuLm1heChoKSksZD1hW3NdO3JldHVybiBsPWRbMF0sZj1kWzFdLHJbc119KTtyZXR1cm5bXS5jb25jYXQoW2lbMF1dLGgsW2lbaS5sZW5ndGgtMV1dKX07cmV0dXJuIHcoaSxyLCJidWNrZXRTaXplIiksaS54PWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PW4saSk6dH0saS55PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPXQsaSk6ZX0saX0sb3Q9ZnVuY3Rpb24oKXt2YXIgdD1ldCgpLGU9ZnVuY3Rpb24odCl7cmV0dXJuIHR9LHI9ZnVuY3Rpb24ocil7aWYodC5idWNrZXRTaXplKCk+ci5sZW5ndGgpcmV0dXJuIHI7dmFyIGk9bi5leHRlbnQocixlKSxvPXQoci5zbGljZSgxLHIubGVuZ3RoLTEpKSx1PW8ubWFwKGZ1bmN0aW9uKHQsbil7dmFyIHIsbyx1PXt9LGE9ITAsYz10Lm1hcChlKSxsPWMuZmlsdGVyKGZ1bmN0aW9uKHQpe3JldHVybiB0PT09aVswXXx8dD09PWlbMV19KS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIGMuaW5kZXhPZih0KX0pWzBdO3JldHVybiB2b2lkIDAhPT1sP3RbbF06KGMuZm9yRWFjaChmdW5jdGlvbih0LG4pe3ZvaWQgMD09PXVbdF0mJih1W3RdPTApLHVbdF0rKyx1W3RdPnVbcl18fHZvaWQgMD09PXI/KHI9dCxvPW4sYT0hMCk6dVt0XT09PXVbcl0mJihhPSExKX0pLGE/dFtvXTp0W01hdGguZmxvb3IodC5sZW5ndGgvMildKX0pO3JldHVybltdLmNvbmNhdChbclswXV0sdSxbcltyLmxlbmd0aC0xXV0pfTtyZXR1cm4gdyhyLHQsImJ1Y2tldFNpemUiKSxyLnZhbHVlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPXQscik6ZX0scn0sdXQ9ZnVuY3Rpb24odCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpmdW5jdGlvbigpe3JldHVybiB0fX0sYXQ9ZnVuY3Rpb24oKXt2YXIgdD1udWxsLG49ZnVuY3Rpb24odCl7cmV0dXJuIHQuZGF0ZX0sZT1mdW5jdGlvbih0KXtyZXR1cm4gdC5vcGVufSxyPWZ1bmN0aW9uKHQpe3JldHVybiB0LmhpZ2h9LGk9ZnVuY3Rpb24odCl7cmV0dXJuIHQubG93fSxvPWZ1bmN0aW9uKHQpe3JldHVybiB0LmNsb3NlfSxhPSJ2ZXJ0aWNhbCIsYz11dCgzKSxsPWZ1bmN0aW9uKGwpe3ZhciBmPXR8fHUucGF0aCgpO3JldHVybiBsLmZvckVhY2goZnVuY3Rpb24odCx1KXt2YXIgbD1uKHQsdSksaD1lKHQsdSkscz1yKHQsdSksZD1pKHQsdSksZz1vKHQsdSksdj1jKHQsdSkvMjsidmVydGljYWwiPT09YT8oZi5tb3ZlVG8obCxkKSxmLmxpbmVUbyhsLHMpLGYubW92ZVRvKGwsaCksZi5saW5lVG8obC12LGgpLGYubW92ZVRvKGwsZyksZi5saW5lVG8obCt2LGcpKTooZi5tb3ZlVG8oZCxsKSxmLmxpbmVUbyhzLGwpLGYubW92ZVRvKGgsbCksZi5saW5lVG8oaCxsK3YpLGYubW92ZVRvKGcsbCksZi5saW5lVG8oZyxsLXYpKX0pLHQ/bnVsbDpmLnRvU3RyaW5nKCl9O3JldHVybiBsLmNvbnRleHQ9ZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1hcmd1bWVudHMubGVuZ3RoPD0wP3ZvaWQgMDphcmd1bWVudHNbMF0sbCk6dH0sbC54PWZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49dXQoYXJndW1lbnRzLmxlbmd0aDw9MD92b2lkIDA6YXJndW1lbnRzWzBdKSxsKTpufSxsLm9wZW49ZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT11dChhcmd1bWVudHMubGVuZ3RoPD0wP3ZvaWQgMDphcmd1bWVudHNbMF0pLGwpOmV9LGwuaGlnaD1mdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPXV0KGFyZ3VtZW50cy5sZW5ndGg8PTA/dm9pZCAwOmFyZ3VtZW50c1swXSksbCk6cn0sbC5sb3c9ZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT11dChhcmd1bWVudHMubGVuZ3RoPD0wP3ZvaWQgMDphcmd1bWVudHNbMF0pLGwpOml9LGwuY2xvc2U9ZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz11dChhcmd1bWVudHMubGVuZ3RoPD0wP3ZvaWQgMDphcmd1bWVudHNbMF0pLGwpOm99LGwud2lkdGg9ZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz11dChhcmd1bWVudHMubGVuZ3RoPD0wP3ZvaWQgMDphcmd1bWVudHNbMF0pLGwpOmN9LGwub3JpZW50PWZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9YXJndW1lbnRzLmxlbmd0aDw9MD92b2lkIDA6YXJndW1lbnRzWzBdLGwpOmF9LGx9LGN0PWZ1bmN0aW9uKCl7dmFyIHQ9bnVsbCxuPWZ1bmN0aW9uKHQpe3JldHVybiB0Lnh9LGU9ZnVuY3Rpb24odCl7cmV0dXJuIHQueX0scj0iY2VudGVyIixpPSJjZW50ZXIiLG89ZnVuY3Rpb24odCl7cmV0dXJuIHQuaGVpZ2h0fSxhPXV0KDMpLGM9ZnVuY3Rpb24oYyxsKXt2YXIgZj10fHx1LnBhdGgoKTtyZXR1cm4gYy5mb3JFYWNoKGZ1bmN0aW9uKHQsdSl7dmFyIGM9bi5jYWxsKHRoaXMsdCxsfHx1KSxoPWUuY2FsbCh0aGlzLHQsbHx8dSkscz1vLmNhbGwodGhpcyx0LGx8fHUpLGQ9YS5jYWxsKHRoaXMsdCxsfHx1KSxnPXZvaWQgMDtzd2l0Y2gocil7Y2FzZSJsZWZ0IjpnPWQ7YnJlYWs7Y2FzZSJyaWdodCI6Zz0wO2JyZWFrO2Nhc2UiY2VudGVyIjpnPWQvMjticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiSW52YWxpZCBob3Jpem9udGFsIGFsaWdubWVudCAiK3IpfXZhciB2PXZvaWQgMDtzd2l0Y2goaSl7Y2FzZSJib3R0b20iOnY9LXM7YnJlYWs7Y2FzZSJ0b3AiOnY9MDticmVhaztjYXNlImNlbnRlciI6dj1zLzI7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgdmVydGljYWwgYWxpZ25tZW50ICIraSl9Zi5yZWN0KGMtZyxoLXYsZCxzKX0sdGhpcyksdD9udWxsOmYudG9TdHJpbmcoKX07cmV0dXJuIGMuY29udGV4dD1mdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PWFyZ3VtZW50cy5sZW5ndGg8PTA/dm9pZCAwOmFyZ3VtZW50c1swXSxjKTp0fSxjLng9ZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj11dChhcmd1bWVudHMubGVuZ3RoPD0wP3ZvaWQgMDphcmd1bWVudHNbMF0pLGMpOm59LGMueT1mdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPXV0KGFyZ3VtZW50cy5sZW5ndGg8PTA/dm9pZCAwOmFyZ3VtZW50c1swXSksYyk6ZX0sYy53aWR0aD1mdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPXV0KGFyZ3VtZW50cy5sZW5ndGg8PTA/dm9pZCAwOmFyZ3VtZW50c1swXSksYyk6YX0sYy5ob3Jpem9udGFsQWxpZ249ZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj1hcmd1bWVudHMubGVuZ3RoPD0wP3ZvaWQgMDphcmd1bWVudHNbMF0sYyk6cn0sYy5oZWlnaHQ9ZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz11dChhcmd1bWVudHMubGVuZ3RoPD0wP3ZvaWQgMDphcmd1bWVudHNbMF0pLGMpOm99LGMudmVydGljYWxBbGlnbj1mdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPWFyZ3VtZW50cy5sZW5ndGg8PTA/dm9pZCAwOmFyZ3VtZW50c1swXSxjKTppfSxjfSxsdD1mdW5jdGlvbigpe3ZhciB0PW51bGwsbj1mdW5jdGlvbih0KXtyZXR1cm4gdC5kYXRlfSxlPWZ1bmN0aW9uKHQpe3JldHVybiB0Lm9wZW59LHI9ZnVuY3Rpb24odCl7cmV0dXJuIHQuaGlnaH0saT1mdW5jdGlvbih0KXtyZXR1cm4gdC5sb3d9LG89ZnVuY3Rpb24odCl7cmV0dXJuIHQuY2xvc2V9LGE9dXQoMyksYz1mdW5jdGlvbihjKXt2YXIgbD10fHx1LnBhdGgoKTtyZXR1cm4gYy5mb3JFYWNoKGZ1bmN0aW9uKHQsdSl7dmFyIGM9bih0LHUpLGY9ZSh0LHUpLGg9cih0LHUpLHM9aSh0LHUpLGQ9byh0LHUpLGc9YSh0LHUpLHY9Zy8yO2wucmVjdChjLXYsZixnLGQtZiksbC5tb3ZlVG8oYyxNYXRoLm1pbihkLGYpKSxsLmxpbmVUbyhjLGgpLGwubW92ZVRvKGMsTWF0aC5tYXgoZCxmKSksbC5saW5lVG8oYyxzKX0pLHQ/bnVsbDpsLnRvU3RyaW5nKCl9O3JldHVybiBjLmNvbnRleHQ9ZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1hcmd1bWVudHMubGVuZ3RoPD0wP3ZvaWQgMDphcmd1bWVudHNbMF0sYyk6dH0sYy54PWZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49dXQoYXJndW1lbnRzLmxlbmd0aDw9MD92b2lkIDA6YXJndW1lbnRzWzBdKSxjKTpufSxjLm9wZW49ZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT11dChhcmd1bWVudHMubGVuZ3RoPD0wP3ZvaWQgMDphcmd1bWVudHNbMF0pLGMpOmV9LGMuaGlnaD1mdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPXV0KGFyZ3VtZW50cy5sZW5ndGg8PTA/dm9pZCAwOmFyZ3VtZW50c1swXSksYyk6cn0sYy5sb3c9ZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT11dChhcmd1bWVudHMubGVuZ3RoPD0wP3ZvaWQgMDphcmd1bWVudHNbMF0pLGMpOml9LGMuY2xvc2U9ZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz11dChhcmd1bWVudHMubGVuZ3RoPD0wP3ZvaWQgMDphcmd1bWVudHNbMF0pLGMpOm99LGMud2lkdGg9ZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT11dChhcmd1bWVudHMubGVuZ3RoPD0wP3ZvaWQgMDphcmd1bWVudHNbMF0pLGMpOmF9LGN9LGZ0PWZ1bmN0aW9uKCl7dmFyIHQ9bnVsbCxuPWZ1bmN0aW9uKHQpe3JldHVybiB0LnZhbHVlfSxlPWZ1bmN0aW9uKHQpe3JldHVybiB0Lm1lZGlhbn0scj1mdW5jdGlvbih0KXtyZXR1cm4gdC51cHBlclF1YXJ0aWxlfSxpPWZ1bmN0aW9uKHQpe3JldHVybiB0Lmxvd2VyUXVhcnRpbGV9LG89ZnVuY3Rpb24odCl7cmV0dXJuIHQuaGlnaH0sYT1mdW5jdGlvbih0KXtyZXR1cm4gdC5sb3d9LGM9InZlcnRpY2FsIixsPXV0KDUpLGY9dXQoLjUpLGg9ZnVuY3Rpb24oaCl7dmFyIHM9dHx8dS5wYXRoKCk7cmV0dXJuIGguZm9yRWFjaChmdW5jdGlvbih0LHUpe3ZhciBoPW4odCx1KSxkPWwodCx1KSxnPWQvMix2PWQqZih0LHUpLHA9di8yLG09byh0LHUpLHk9cih0LHUpLGI9ZSh0LHUpLHc9aSh0LHUpLHg9YSh0LHUpLFQ9dy15OyJ2ZXJ0aWNhbCI9PT1jPyhzLm1vdmVUbyhoLXAsbSkscy5saW5lVG8oaCtwLG0pLHMubW92ZVRvKGgsbSkscy5saW5lVG8oaCx5KSxzLnJlY3QoaC1nLHksZCxUKSxzLm1vdmVUbyhoLWcsYikscy5saW5lVG8oaCtnLGIpLHMubW92ZVRvKGgsdykscy5saW5lVG8oaCx4KSxzLm1vdmVUbyhoLXAseCkscy5saW5lVG8oaCtwLHgpKToocy5tb3ZlVG8oeCxoLXApLHMubGluZVRvKHgsaCtwKSxzLm1vdmVUbyh4LGgpLHMubGluZVRvKHcsaCkscy5yZWN0KHcsaC1nLC1ULGQpLHMubW92ZVRvKGIsaC1nKSxzLmxpbmVUbyhiLGgrZykscy5tb3ZlVG8oeSxoKSxzLmxpbmVUbyhtLGgpLHMubW92ZVRvKG0saC1wKSxzLmxpbmVUbyhtLGgrcCkpfSksdD9udWxsOnMudG9TdHJpbmcoKX07cmV0dXJuIGguY29udGV4dD1mdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PWFyZ3VtZW50cy5sZW5ndGg8PTA/dm9pZCAwOmFyZ3VtZW50c1swXSxoKTp0fSxoLnZhbHVlPWZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49dXQoYXJndW1lbnRzLmxlbmd0aDw9MD92b2lkIDA6YXJndW1lbnRzWzBdKSxoKTpufSxoLm1lZGlhbj1mdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPXV0KGFyZ3VtZW50cy5sZW5ndGg8PTA/dm9pZCAwOmFyZ3VtZW50c1swXSksaCk6ZX0saC51cHBlclF1YXJ0aWxlPWZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9dXQoYXJndW1lbnRzLmxlbmd0aDw9MD92b2lkIDA6YXJndW1lbnRzWzBdKSxoKTpyfSxoLmxvd2VyUXVhcnRpbGU9ZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT11dChhcmd1bWVudHMubGVuZ3RoPD0wP3ZvaWQgMDphcmd1bWVudHNbMF0pLGgpOml9LGguaGlnaD1mdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPXV0KGFyZ3VtZW50cy5sZW5ndGg8PTA/dm9pZCAwOmFyZ3VtZW50c1swXSksaCk6b30saC5sb3c9ZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT11dChhcmd1bWVudHMubGVuZ3RoPD0wP3ZvaWQgMDphcmd1bWVudHNbMF0pLGgpOmF9LGgud2lkdGg9ZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obD11dChhcmd1bWVudHMubGVuZ3RoPD0wP3ZvaWQgMDphcmd1bWVudHNbMF0pLGgpOmx9LGgub3JpZW50PWZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGM9YXJndW1lbnRzLmxlbmd0aDw9MD92b2lkIDA6YXJndW1lbnRzWzBdLGgpOmN9LGguY2FwPWZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGY9dXQoYXJndW1lbnRzLmxlbmd0aDw9MD92b2lkIDA6YXJndW1lbnRzWzBdKSxoKTpmfSxofSxodD1mdW5jdGlvbigpe3ZhciB0PW51bGwsbj1mdW5jdGlvbih0KXtyZXR1cm4gdC54fSxlPWZ1bmN0aW9uKHQpe3JldHVybiB0LmhpZ2h9LHI9ZnVuY3Rpb24odCl7cmV0dXJuIHQubG93fSxpPSJ2ZXJ0aWNhbCIsbz11dCg1KSxhPWZ1bmN0aW9uKGEpe3ZhciBjPXR8fHUucGF0aCgpO3JldHVybiBhLmZvckVhY2goZnVuY3Rpb24odCx1KXt2YXIgYT1uKHQsdSksbD1vKHQsdSksZj1sLzIsaD1lKHQsdSkscz1yKHQsdSk7InZlcnRpY2FsIj09PWk/KGMubW92ZVRvKGEtZixoKSxjLmxpbmVUbyhhK2YsaCksYy5tb3ZlVG8oYSxoKSxjLmxpbmVUbyhhLHMpLGMubW92ZVRvKGEtZixzKSxjLmxpbmVUbyhhK2YscykpOihjLm1vdmVUbyhzLGEtZiksYy5saW5lVG8ocyxhK2YpLGMubW92ZVRvKHMsYSksYy5saW5lVG8oaCxhKSxjLm1vdmVUbyhoLGEtZiksYy5saW5lVG8oaCxhK2YpKX0pLHQ/bnVsbDpjLnRvU3RyaW5nKCl9O3JldHVybiBhLmNvbnRleHQ9ZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1hcmd1bWVudHMubGVuZ3RoPD0wP3ZvaWQgMDphcmd1bWVudHNbMF0sYSk6dH0sYS52YWx1ZT1mdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPXV0KGFyZ3VtZW50cy5sZW5ndGg8PTA/dm9pZCAwOmFyZ3VtZW50c1swXSksYSk6bn0sYS5oaWdoPWZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9dXQoYXJndW1lbnRzLmxlbmd0aDw9MD92b2lkIDA6YXJndW1lbnRzWzBdKSxhKTplfSxhLmxvdz1mdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPXV0KGFyZ3VtZW50cy5sZW5ndGg8PTA/dm9pZCAwOmFyZ3VtZW50c1swXSksYSk6cn0sYS53aWR0aD1mdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPXV0KGFyZ3VtZW50cy5sZW5ndGg8PTA/dm9pZCAwOmFyZ3VtZW50c1swXSksYSk6b30sYS5vcmllbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT1hcmd1bWVudHMubGVuZ3RoPD0wP3ZvaWQgMDphcmd1bWVudHNbMF0sYSk6aX0sYX0sc3Q9ZnVuY3Rpb24odCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpmdW5jdGlvbigpe3JldHVybiB0fX0sZHQ9MWUtNixndD1mdW5jdGlvbih0LG4pe3Q9dHx8ImciO3ZhciBlPWZ1bmN0aW9uKHQsbil7cmV0dXJuIG59LHI9ZnVuY3Rpb24ocixpKXtpPWl8fGZ1bmN0aW9uKHQpe3JldHVybiB0fTt2YXIgbz1udWxsPT1uP3Q6dCsiLiIrbix1PXIuc2VsZWN0QWxsKG8pLmZpbHRlcihmdW5jdGlvbigpe3JldHVybiB0aGlzLnBhcmVudE5vZGU9PT1yLm5vZGUoKX0pLGM9dS5kYXRhKGksZSksbD1jLmVudGVyKCkuaW5zZXJ0KHQpLmF0dHIoImNsYXNzIixuKSxmPWMuZXhpdCgpO3JldHVybiBjPWMubWVyZ2UobCksYS5zZWxlY3Rpb24ucHJvdG90eXBlLnRyYW5zaXRpb24mJihsLnN0eWxlKCJvcGFjaXR5IixkdCksYy50cmFuc2l0aW9uKCkuc3R5bGUoIm9wYWNpdHkiLDEpLGYudHJhbnNpdGlvbigpLnN0eWxlKCJvcGFjaXR5IixkdCkpLGYucmVtb3ZlKCksYy5lbnRlcj1mdW5jdGlvbigpe3JldHVybiBsfSxjLmV4aXQ9ZnVuY3Rpb24oKXtyZXR1cm4gZn0sY307cmV0dXJuIHIuZWxlbWVudD1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1uLHIpOnR9LHIuY2xhc3NOYW1lPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPXQscik6bn0sci5rZXk9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9dCxyKTplfSxyfSx2dD1mdW5jdGlvbih0KXt2YXIgbj1mdW5jdGlvbigpe30sZT1mdW5jdGlvbigpe3JldHVyblswLDBdfSxyPWZ1bmN0aW9uKHQsbil7cmV0dXJuW3QueCx0LnldfSxpPXR8fGZ1bmN0aW9uKHQpe3JldHVybiB0fSxvPWZ1bmN0aW9uKCl7fSx1PWd0KCJnIiwibGFiZWwiKSxjPWZ1bmN0aW9uKHQpe3QuZWFjaChmdW5jdGlvbih0LGMsbCl7dmFyIGY9dShhLnNlbGVjdChsW2NdKSx0KS5jYWxsKG8pLGg9Zi5ub2RlcygpLHM9aC5tYXAoZnVuY3Rpb24odCxuKXt2YXIgaT1hLnNlbGVjdCh0KS5kYXR1bSgpLG89cihpLG4saCksdT1lKGksbixoKTtyZXR1cm57aGlkZGVuOiExLHg6b1swXSx5Om9bMV0sd2lkdGg6dVswXSxoZWlnaHQ6dVsxXX19KSxkPWkocyk7Zi5hdHRyKCJzdHlsZSIsZnVuY3Rpb24odCxuKXtyZXR1cm4iZGlzcGxheToiKyhkW25dLmhpZGRlbj8ibm9uZSI6ImluaGVyaXQiKX0pLmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24odCxuKXtyZXR1cm4idHJhbnNsYXRlKCIrZFtuXS54KyIsICIrZFtuXS55KyIpIn0pLmF0dHIoImxheW91dC13aWR0aCIsZnVuY3Rpb24odCxuKXtyZXR1cm4gZFtuXS53aWR0aH0pLmF0dHIoImxheW91dC1oZWlnaHQiLGZ1bmN0aW9uKHQsbil7cmV0dXJuIGRbbl0uaGVpZ2h0fSkuYXR0cigiYW5jaG9yLXgiLGZ1bmN0aW9uKHQsbixlKXtyZXR1cm4gcih0LG4sZSlbMF0tZFtuXS54fSkuYXR0cigiYW5jaG9yLXkiLGZ1bmN0aW9uKHQsbixlKXtyZXR1cm4gcih0LG4sZSlbMV0tZFtuXS55fSksZi5jYWxsKG8pLG4oZix0LGMpfSl9O3JldHVybiBUKGMsdSxNKCJrZXkiKSksVChjLGkpLGMuc2l6ZT1mdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPXN0KGFyZ3VtZW50cy5sZW5ndGg8PTA/dm9pZCAwOmFyZ3VtZW50c1swXSksYyk6ZX0sYy5wb3NpdGlvbj1mdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPXN0KGFyZ3VtZW50cy5sZW5ndGg8PTA/dm9pZCAwOmFyZ3VtZW50c1swXSksYyk6cn0sYy5jb21wb25lbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz1hcmd1bWVudHMubGVuZ3RoPD0wP3ZvaWQgMDphcmd1bWVudHNbMF0sYyk6b30sYy5kZWNvcmF0ZT1mdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPWFyZ3VtZW50cy5sZW5ndGg8PTA/dm9pZCAwOmFyZ3VtZW50c1swXSxjKTpufSxjfSxwdD1mdW5jdGlvbih0KXt2YXIgbj0yLGU9ZnVuY3Rpb24odCl7cmV0dXJuIHR9LHI9Z3QoInRleHQiKSxpPWd0KCJyZWN0Iiksbz1ndCgiY2lyY2xlIiksdT1mdW5jdGlvbih0KXt0LmVhY2goZnVuY3Rpb24odCx1LGMpe3ZhciBsPWNbdV0sZj1hLnNlbGVjdChsKSxoPU51bWJlcihsLmdldEF0dHJpYnV0ZSgibGF5b3V0LXdpZHRoIikpLHM9TnVtYmVyKGwuZ2V0QXR0cmlidXRlKCJsYXlvdXQtaGVpZ2h0IikpLGQ9aShmLFt0XSk7ZC5hdHRyKCJ3aWR0aCIsaCkuYXR0cigiaGVpZ2h0IixzKTt2YXIgZz1OdW1iZXIobC5nZXRBdHRyaWJ1dGUoImFuY2hvci14IikpLHY9TnVtYmVyKGwuZ2V0QXR0cmlidXRlKCJhbmNob3IteSIpKSxwPW8oZixbdF0pO3AuYXR0cigiciIsMikuYXR0cigiY3giLGcpLmF0dHIoImN5Iix2KTt2YXIgbT1yKGYsW3RdKTttLmVudGVyKCkuYXR0cigiZHkiLCIwLjllbSIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK24rIiwgIituKyIpIiksbS50ZXh0KGUpfSl9O3JldHVybiB1LnBhZGRpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj1hcmd1bWVudHMubGVuZ3RoPD0wP3ZvaWQgMDphcmd1bWVudHNbMF0sdSk6bn0sdS52YWx1ZT1mdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPXN0KGFyZ3VtZW50cy5sZW5ndGg8PTA/dm9pZCAwOmFyZ3VtZW50c1swXSksdSk6ZX0sdX0sbXQ9ZnVuY3Rpb24odCxuKXtyZXR1cm4hKHQueD49bi54K24ud2lkdGh8fHQueCt0LndpZHRoPD1uLnh8fHQueT49bi55K24uaGVpZ2h0fHx0LnkrdC5oZWlnaHQ8PW4ueSl9LHl0PWZ1bmN0aW9uKHQsbil7aWYobXQodCxuKSl7dmFyIGU9TWF0aC5tYXgodC54LG4ueCkscj1NYXRoLm1pbih0LngrdC53aWR0aCxuLngrbi53aWR0aCksaT1NYXRoLm1heCh0Lnksbi55KSxvPU1hdGgubWluKHQueSt0LmhlaWdodCxuLnkrbi5oZWlnaHQpO3JldHVybihyLWUpKihvLWkpfXJldHVybiAwfSxidD1mdW5jdGlvbih0LGUpe3JldHVybiBuLnN1bSh0Lm1hcChmdW5jdGlvbihuLHIpe3JldHVybiBlPT09cj8wOnl0KHRbZV0sbil9KSl9LHd0PWZ1bmN0aW9uKHQsbixlLHIsaSl7cmV0dXJue3g6dCx5Om4sd2lkdGg6ZSxoZWlnaHQ6cixsb2NhdGlvbjppfX0seHQ9ZnVuY3Rpb24odCl7dmFyIG49dC54LGU9dC55LHI9dC53aWR0aCxpPXQuaGVpZ2h0O3JldHVyblt3dChuLGUscixpLCJib3R0b20tcmlnaHQiKSx3dChuLXIsZSxyLGksImJvdHRvbS1sZWZ0Iiksd3Qobi1yLGUtaSxyLGksInRvcC1sZWZ0Iiksd3QobixlLWkscixpLCJ0b3AtcmlnaHQiKSx3dChuLGUtaS8yLHIsaSwibWlkZGxlLXJpZ2h0Iiksd3Qobi1yLzIsZSxyLGksImJvdHRvbS1jZW50ZXIiKSx3dChuLXIsZS1pLzIscixpLCJtaWRkbGUtbGVmdCIpLHd0KG4tci8yLGUtaSxyLGksInRvcC1jZW50ZXIiKV19LFR0PWZ1bmN0aW9uKHQsbixlKXtyZXR1cm5bXS5jb25jYXQoUih0LnNsaWNlKDAsbikpLFtlXSxSKHQuc2xpY2UobisxKSkpfSxFdD1mdW5jdGlvbih0LG4pe3JldHVybiB0PG59LFN0PWZ1bmN0aW9uIHQoKXt2YXIgZT1udWxsLHI9RXQsaT1mdW5jdGlvbigpe3JldHVybiAwfSxvPXZvaWQgMCx1PWZ1bmN0aW9uKHQsbil7cmV0dXJuIGUtaShvW25dLG4sbykraSh0LG4sVHQobyxuLHQpKX0sYT1mdW5jdGlvbiBhKGMsbCl7ZXx8KGU9bi5zdW0oby5tYXAoZnVuY3Rpb24odCxuKXtyZXR1cm4gaSh0LG4sbyl9KSkpO3ZhciBmPXUoYyxsKTtyZXR1cm4gcihmLGUpP3QoKS5sb2NhdGlvblNjb3JlKGkpLndpbm5pbmdTY29yZShyKS5zY29yZShmKS5yZWN0YW5nbGVzKFR0KG8sbCxjKSk6YX07cmV0dXJuIGEucmVjdGFuZ2xlcz1mdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPWFyZ3VtZW50cy5sZW5ndGg8PTA/dm9pZCAwOmFyZ3VtZW50c1swXSxhKTpvfSxhLnNjb3JlPWZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9YXJndW1lbnRzLmxlbmd0aDw9MD92b2lkIDA6YXJndW1lbnRzWzBdLGEpOmV9LGEud2lubmluZ1Njb3JlPWZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9YXJndW1lbnRzLmxlbmd0aDw9MD92b2lkIDA6YXJndW1lbnRzWzBdLA0KYSk6cn0sYS5sb2NhdGlvblNjb3JlPWZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9YXJndW1lbnRzLmxlbmd0aDw9MD92b2lkIDA6YXJndW1lbnRzWzBdLGEpOml9LGF9LE10PWZ1bmN0aW9uKCl7dmFyIHQ9dm9pZCAwLG49ZnVuY3Rpb24obil7cmV0dXJuIHQ/bi53aWR0aCpuLmhlaWdodC15dChuLHQpOjB9LGU9ZnVuY3Rpb24odCxlLHIpe3JldHVybiBidChyLGUpK24odCl9LHI9ZnVuY3Rpb24odCl7dmFyIG49U3QoKS5sb2NhdGlvblNjb3JlKGUpLnJlY3RhbmdsZXModCk7cmV0dXJuIHQuZm9yRWFjaChmdW5jdGlvbih0LGUpe3h0KHQpLmZvckVhY2goZnVuY3Rpb24odCxyKXtuPW4odCxlKX0pfSksbi5yZWN0YW5nbGVzKCl9O3JldHVybiByLmJvdW5kcz1mdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PWFyZ3VtZW50cy5sZW5ndGg8PTA/dm9pZCAwOmFyZ3VtZW50c1swXSxyKTp0fSxyfSxrdD1mdW5jdGlvbih0KXtyZXR1cm4gdFtMdCh0KV19LEx0PWZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqdC5sZW5ndGgpfSxBdD1mdW5jdGlvbigpe3ZhciB0PTFlMyxuPTEsZT12b2lkIDAscj1mdW5jdGlvbih0KXtzd2l0Y2godC5sb2NhdGlvbil7Y2FzZSJib3R0b20tcmlnaHQiOnJldHVybiAwO2Nhc2UibWlkZGxlLXJpZ2h0IjpjYXNlImJvdHRvbS1jZW50ZXIiOnJldHVybiB0LndpZHRoKnQuaGVpZ2h0Lzh9cmV0dXJuIHQud2lkdGgqdC5oZWlnaHQvNH0saT1mdW5jdGlvbih0KXtyZXR1cm4gZT90LndpZHRoKnQuaGVpZ2h0LXl0KHQsZSk6MH0sbz1mdW5jdGlvbih0LG4sZSl7cmV0dXJuIGJ0KGUsbikraSh0KStyKHQpfSx1PWZ1bmN0aW9uKGUpe2Zvcih2YXIgcj10LGk9ZnVuY3Rpb24odCxuKXtyZXR1cm4gTWF0aC5leHAoKG4tdCkvcik+TWF0aC5yYW5kb20oKX0sdT1TdCgpLmxvY2F0aW9uU2NvcmUobykud2lubmluZ1Njb3JlKGkpLnJlY3RhbmdsZXMoZSk7cj4wOyl7dmFyIGE9THQoZSksYz1rdCh4dChlW2FdKSk7dT11KGMsYSksci09bn1yZXR1cm4gdS5yZWN0YW5nbGVzKCl9O3JldHVybiB1LnRlbXBlcmF0dXJlPWZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9YXJndW1lbnRzLmxlbmd0aDw9MD92b2lkIDA6YXJndW1lbnRzWzBdLHUpOnR9LHUuY29vbGluZz1mdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPWFyZ3VtZW50cy5sZW5ndGg8PTA/dm9pZCAwOmFyZ3VtZW50c1swXSx1KTpufSx1LmJvdW5kcz1mdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPWFyZ3VtZW50cy5sZW5ndGg8PTA/dm9pZCAwOmFyZ3VtZW50c1swXSx1KTplfSx1fSxIdD1mdW5jdGlvbih0LGUpe3JldHVybiB0W24uc2Nhbih0LGUpXX0sT3Q9ZnVuY3Rpb24odCl7dD10fHxmdW5jdGlvbih0KXtyZXR1cm4gdH07dmFyIG49ZnVuY3Rpb24obil7bj10KG4pO2Zvcih2YXIgZT1mdW5jdGlvbigpe3ZhciB0PW4uZmlsdGVyKGZ1bmN0aW9uKHQpe3JldHVybiF0LmhpZGRlbn0pLGU9dC5tYXAoZnVuY3Rpb24obixlKXtyZXR1cm5bbixidCh0LGUpXX0pLHI9SHQoZSxmdW5jdGlvbih0LG4pe3JldHVybiBuWzFdLXRbMV19KTtyZXR1cm4gclsxXT4wP3ZvaWQoclswXS5oaWRkZW49ITApOiJicmVhayJ9Ozspe3ZhciByPWUoKTtpZigiYnJlYWsiPT09cilicmVha31yZXR1cm4gbn07cmV0dXJuIFQobix0KSxufSxfdD1mdW5jdGlvbigpe3ZhciB0PVswLDBdLG49ZnVuY3Rpb24obil7cmV0dXJuIG4ubWFwKGZ1bmN0aW9uKG4sZSl7dmFyIHI9bi54LGk9bi55O3JldHVybiByK24ud2lkdGg+dFswXSYmKHItPW4ud2lkdGgpLGkrbi5oZWlnaHQ+dFsxXSYmKGktPW4uaGVpZ2h0KSx7aGVpZ2h0Om4uaGVpZ2h0LHdpZHRoOm4ud2lkdGgseDpyLHk6aX19KX07cmV0dXJuIG4uYm91bmRzPWZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9YXJndW1lbnRzLmxlbmd0aDw9MD92b2lkIDA6YXJndW1lbnRzWzBdLG4pOnR9LG59LEN0PTFlLTYsRHQ9ZnVuY3Rpb24odCxuKXt0PXR8fCJnIjt2YXIgZT1mdW5jdGlvbih0LG4pe3JldHVybiBufSxyPW51bGwsaT1mdW5jdGlvbihpLG8pe289b3x8ZnVuY3Rpb24odCl7cmV0dXJuIHR9O3ZhciB1PWkuc2VsZWN0aW9uP2k6bnVsbDt1JiYoaT1pLnNlbGVjdGlvbigpKTt2YXIgYT1pLnNlbGVjdEFsbChmdW5jdGlvbih0LG4sZSl7cmV0dXJuIEFycmF5LmZyb20oZVtuXS5jaGlsZE5vZGVzKS5maWx0ZXIoZnVuY3Rpb24odCl7cmV0dXJuIDE9PT10Lm5vZGVUeXBlfSl9KS5maWx0ZXIobnVsbD09bj90OnQrIi4iK24pLGM9YS5kYXRhKG8sZSksbD1jLmVudGVyKCkuYXBwZW5kKHQpLmF0dHIoImNsYXNzIixuKSxmPWMuZXhpdCgpO2M9Yy5tZXJnZShsKTt2YXIgaD11fHxyO3JldHVybiBoPyhjPWMudHJhbnNpdGlvbihoKSxsLnN0eWxlKCJvcGFjaXR5IixDdCkudHJhbnNpdGlvbihoKS5zdHlsZSgib3BhY2l0eSIsMSksZj1mLnRyYW5zaXRpb24oaCkuc3R5bGUoIm9wYWNpdHkiLEN0KS5yZW1vdmUoKSk6Zi5yZW1vdmUoKSxjLmVudGVyPWZ1bmN0aW9uKCl7cmV0dXJuIGx9LGMuZXhpdD1mdW5jdGlvbigpe3JldHVybiBmfSxjfTtyZXR1cm4gaS5lbGVtZW50PWZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9YXJndW1lbnRzLmxlbmd0aDw9MD92b2lkIDA6YXJndW1lbnRzWzBdLGkpOnR9LGkuY2xhc3NOYW1lPWZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49YXJndW1lbnRzLmxlbmd0aDw9MD92b2lkIDA6YXJndW1lbnRzWzBdLGkpOm59LGkua2V5PWZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9YXJndW1lbnRzLmxlbmd0aDw9MD92b2lkIDA6YXJndW1lbnRzWzBdLGkpOmV9LGkudHJhbnNpdGlvbj1mdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPWFyZ3VtZW50cy5sZW5ndGg8PTA/dm9pZCAwOmFyZ3VtZW50c1swXSxpKTpyfSxpfSxOdD1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoZS5sZW5ndGg8PTEpcmV0dXJuIDEwO2Uuc29ydCgpO3ZhciByPW4ucGFpcnMoZSkubWFwKGZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLmFicyh0WzBdLXRbMV0pfSksaT1uLm1pbihyKTtyZXR1cm4gdCppfX0sSXQ9ZnVuY3Rpb24odCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpmdW5jdGlvbigpe3JldHVybiB0fX0sVnQ9ZnVuY3Rpb24oKXt2YXIgdD1lLnNjYWxlSWRlbnRpdHkoKSxuPWUuc2NhbGVJZGVudGl0eSgpLHI9ZnVuY3Rpb24oKXtyZXR1cm4gMH0saT1mdW5jdGlvbih0KXtyZXR1cm4gdC54fSxvPWZ1bmN0aW9uKHQpe3JldHVybiB0Lnl9LHU9ZnVuY3Rpb24oKXt9LGE9TnQoLjc1KSxjPSJ2ZXJ0aWNhbCIsbD1mdW5jdGlvbigpe307cmV0dXJuIGwuZGVmaW5lZD1mdW5jdGlvbih0LG4pe3JldHVybiBtKHIsaSxvKSh0LG4pfSxsLnZhbHVlcz1mdW5jdGlvbihlLHUpe2lmKCJ2ZXJ0aWNhbCI9PT1jKXt2YXIgYT1uKG8oZSx1KSksbD1uKHIoZSx1KSksZj10KGkoZSx1KSk7cmV0dXJue2Q6ZSx4OmYseTphLHkwOmwsaGVpZ2h0OmEtbCxvcmlnaW46W2YsYV0sYmFzZU9yaWdpbjpbZixsXSx0cmFuc3Bvc2VkWDpmLHRyYW5zcG9zZWRZOmF9fXZhciBoPXQobyhlLHUpKSxzPXQocihlLHUpKSxkPW4oaShlLHUpKTtyZXR1cm57ZDplLHg6ZCx5OmgseTA6cyxoZWlnaHQ6aC1zLG9yaWdpbjpbaCxkXSxiYXNlT3JpZ2luOltzLGRdLHRyYW5zcG9zZWRYOmgsdHJhbnNwb3NlZFk6ZH19LGwuZGVjb3JhdGU9ZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT1hcmd1bWVudHMubGVuZ3RoPD0wP3ZvaWQgMDphcmd1bWVudHNbMF0sbCk6dX0sbC54U2NhbGU9ZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1hcmd1bWVudHMubGVuZ3RoPD0wP3ZvaWQgMDphcmd1bWVudHNbMF0sbCk6dH0sbC55U2NhbGU9ZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj1hcmd1bWVudHMubGVuZ3RoPD0wP3ZvaWQgMDphcmd1bWVudHNbMF0sbCk6bn0sbC5iYXNlVmFsdWU9ZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj1JdChhcmd1bWVudHMubGVuZ3RoPD0wP3ZvaWQgMDphcmd1bWVudHNbMF0pLGwpOnJ9LGwuY3Jvc3NWYWx1ZT1mdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPUl0KGFyZ3VtZW50cy5sZW5ndGg8PTA/dm9pZCAwOmFyZ3VtZW50c1swXSksbCk6aX0sbC5tYWluVmFsdWU9ZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz1JdChhcmd1bWVudHMubGVuZ3RoPD0wP3ZvaWQgMDphcmd1bWVudHNbMF0pLGwpOm99LGwuYmFyV2lkdGg9ZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT1JdChhcmd1bWVudHMubGVuZ3RoPD0wP3ZvaWQgMDphcmd1bWVudHNbMF0pLGwpOmF9LGwub3JpZW50PWZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGM9YXJndW1lbnRzLmxlbmd0aDw9MD92b2lkIDA6YXJndW1lbnRzWzBdLGwpOmN9LGx9LFB0PSIjYzYwIix6dD0iIzZjMCIsUnQ9IiMwMDAiLEZ0PSIjZGRkIixVdD0iIzk5OSIsQnQ9e3JlZDpQdCxncmVlbjp6dCxibGFjazpSdCxncmF5OkZ0LGRhcmtHcmF5OlV0fSxxdD1mdW5jdGlvbigpe3ZhciB0PVZ0KCksbj1jLmxpbmUoKS5kZWZpbmVkKHQuZGVmaW5lZCkueChmdW5jdGlvbihuLGUpe3JldHVybiB0LnZhbHVlcyhuLGUpLnRyYW5zcG9zZWRYfSkueShmdW5jdGlvbihuLGUpe3JldHVybiB0LnZhbHVlcyhuLGUpLnRyYW5zcG9zZWRZfSksZT1EdCgicGF0aCIsImxpbmUiKSxyPWZ1bmN0aW9uKHIpe3Iuc2VsZWN0aW9uJiZlLnRyYW5zaXRpb24ociksci5lYWNoKGZ1bmN0aW9uKHIsaSxvKXt2YXIgdT1lKGEuc2VsZWN0KG9baV0pLFtyXSk7dS5hdHRyKCJkIixuKS5hdHRyKCJmaWxsIiwibm9uZSIpLmF0dHIoInN0cm9rZSIsQnQuYmxhY2spLHQuZGVjb3JhdGUoKSh1LHIsaSl9KX07cmV0dXJuIFQocix0LFMoImJhc2VWYWx1ZSIsImJhcldpZHRoIikpLHcocixlLCJrZXkiKSx3KHIsbiwiY3VydmUiKSxyfSxXdD1mdW5jdGlvbigpe3ZhciB0PVZ0KCksbj1jLmxpbmUoKS5kZWZpbmVkKHQuZGVmaW5lZCkueChmdW5jdGlvbihuLGUpe3JldHVybiB0LnZhbHVlcyhuLGUpLnRyYW5zcG9zZWRYfSkueShmdW5jdGlvbihuLGUpe3JldHVybiB0LnZhbHVlcyhuLGUpLnRyYW5zcG9zZWRZfSksZT1mdW5jdGlvbihlKXt2YXIgcj1uLmNvbnRleHQoKTtyLmJlZ2luUGF0aCgpLG4oZSksci5zdHJva2VTdHlsZT1CdC5ibGFjayx0LmRlY29yYXRlKCkocixlKSxyLnN0cm9rZSgpLHIuY2xvc2VQYXRoKCl9O3JldHVybiBUKGUsdCxTKCJiYXNlVmFsdWUiLCJiYXJXaWR0aCIpKSx3KGUsbiwiY3VydmUiLCJjb250ZXh0IiksZX0sanQ9ZnVuY3Rpb24oKXt2YXIgdD1jLnN5bWJvbCgpLG49VnQoKSxlPUR0KCJnIiwicG9pbnQiKSxyPWZ1bmN0aW9uKHQpe3JldHVybiJ0cmFuc2xhdGUoIit0WzBdKyIsICIrdFsxXSsiKSJ9LGk9ZnVuY3Rpb24oaSl7aS5zZWxlY3Rpb24mJmUudHJhbnNpdGlvbihpKSxpLmVhY2goZnVuY3Rpb24oaSxvLHUpe3ZhciBjPWkuZmlsdGVyKG4uZGVmaW5lZCksbD1lKGEuc2VsZWN0KHVbb10pLGMpO2wuZW50ZXIoKS5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHIobi52YWx1ZXModCxlKS5vcmlnaW4pfSkuYXR0cigiZmlsbCIsQnQuZ3JheSkuYXR0cigic3Ryb2tlIixCdC5ibGFjaykuYXBwZW5kKCJwYXRoIiksbC5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHIobi52YWx1ZXModCxlKS5vcmlnaW4pfSkuc2VsZWN0KCJwYXRoIikuYXR0cigiZCIsdCksbi5kZWNvcmF0ZSgpKGwsaSxvKX0pfTtyZXR1cm4gVChpLG4sUygiYmFzZVZhbHVlIiwiYmFyV2lkdGgiKSksdyhpLGUsImtleSIpLHcoaSx0LCJ0eXBlIiwic2l6ZSIpLGl9LFF0PWZ1bmN0aW9uKCl7dmFyIHQ9Yy5zeW1ib2woKSxuPVZ0KCksZT1mdW5jdGlvbihlKXt2YXIgcj1lLmZpbHRlcihuLmRlZmluZWQpLGk9dC5jb250ZXh0KCk7ci5mb3JFYWNoKGZ1bmN0aW9uKHIsbyl7aS5zYXZlKCk7dmFyIHU9bi52YWx1ZXMocixvKTtpLnRyYW5zbGF0ZSh1Lm9yaWdpblswXSx1Lm9yaWdpblsxXSksaS5iZWdpblBhdGgoKSx0KGUpLGkuc3Ryb2tlU3R5bGU9QnQuYmxhY2ssaS5maWxsU3R5bGU9QnQuZ3JheSxuLmRlY29yYXRlKCkoaSxyLG8pLGkuc3Ryb2tlKCksaS5maWxsKCksaS5jbG9zZVBhdGgoKSxpLnJlc3RvcmUoKX0pfTtyZXR1cm4gVChlLG4sUygiYmFzZVZhbHVlIiwiYmFyV2lkdGgiKSksdyhlLHQsInNpemUiLCJ0eXBlIiwiY29udGV4dCIpLGV9LEd0PWZ1bmN0aW9uKCl7dmFyIHQ9Y3QoKS54KDApLnkoMCksbj1WdCgpLGU9RHQoImciLCJiYXIiKSxyPWZ1bmN0aW9uKHQpe3JldHVybiJ2ZXJ0aWNhbCI9PT1uLm9yaWVudCgpP3QuaGVpZ2h0OnQud2lkdGh9LGk9ZnVuY3Rpb24odCl7cmV0dXJuInZlcnRpY2FsIj09PW4ub3JpZW50KCk/dC53aWR0aDp0LmhlaWdodH0sbz1mdW5jdGlvbih0KXtyZXR1cm4idHJhbnNsYXRlKCIrdFswXSsiLCAiK3RbMV0rIikifSx1PWZ1bmN0aW9uKHUpe3Uuc2VsZWN0aW9uJiZlLnRyYW5zaXRpb24odSksdS5lYWNoKGZ1bmN0aW9uKHUsYyxsKXt2YXIgZj1uLm9yaWVudCgpO2lmKCJ2ZXJ0aWNhbCIhPT1mJiYiaG9yaXpvbnRhbCIhPT1mKXRocm93IG5ldyBFcnJvcigiVGhlIGJhciBzZXJpZXMgZG9lcyBub3Qgc3VwcG9ydCBhbiBvcmllbnRhdGlvbiBvZiAiK2YpO3ZhciBoPXUuZmlsdGVyKG4uZGVmaW5lZCkscz1oLm1hcChuLnZhbHVlcyk7dC53aWR0aCgwKS5oZWlnaHQoMCksInZlcnRpY2FsIj09PW4ub3JpZW50KCk/KHQudmVydGljYWxBbGlnbigidG9wIiksdC5ob3Jpem9udGFsQWxpZ24oImNlbnRlciIpKToodC5ob3Jpem9udGFsQWxpZ24oInJpZ2h0IiksdC52ZXJ0aWNhbEFsaWduKCJjZW50ZXIiKSk7dmFyIGQ9bi5iYXJXaWR0aCgpKHMubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0Lnh9KSk7aSh0KShkKTt2YXIgZz1lKGEuc2VsZWN0KGxbY10pLGgpO2cuZW50ZXIoKS5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKHQsbil7cmV0dXJuIG8oc1tuXS5iYXNlT3JpZ2luKX0pLmF0dHIoImNsYXNzIiwiYmFyICIrbi5vcmllbnQoKSkuYXR0cigiZmlsbCIsQnQuZGFya0dyYXkpLmFwcGVuZCgicGF0aCIpLmF0dHIoImQiLGZ1bmN0aW9uKG4pe3JldHVybiB0KFtuXSl9KSxnLmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24odCxuKXtyZXR1cm4gbyhzW25dLm9yaWdpbil9KS5zZWxlY3QoInBhdGgiKS5hdHRyKCJkIixmdW5jdGlvbihuLGUpe3JldHVybiByKHQpKC1zW2VdLmhlaWdodCksdChbbl0pfSksbi5kZWNvcmF0ZSgpKGcsaCxjKX0pfTtyZXR1cm4gVCh1LG4pLHcodSxlLCJrZXkiKSx1fSxZdD1mdW5jdGlvbigpe3ZhciB0PVZ0KCksbj1jdCgpLngoMCkueSgwKSxlPWZ1bmN0aW9uKG4pe3JldHVybiJ2ZXJ0aWNhbCI9PT10Lm9yaWVudCgpP24uaGVpZ2h0Om4ud2lkdGh9LHI9ZnVuY3Rpb24obil7cmV0dXJuInZlcnRpY2FsIj09PXQub3JpZW50KCk/bi53aWR0aDpuLmhlaWdodH0saT1mdW5jdGlvbihpKXt2YXIgbz1uLmNvbnRleHQoKSx1PWkuZmlsdGVyKHQuZGVmaW5lZCksYT11Lm1hcCh0LnZhbHVlcyksYz10LmJhcldpZHRoKCkoYS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHQueH0pKTtyKG4pKGMpLCJ2ZXJ0aWNhbCI9PT10Lm9yaWVudCgpPyhuLnZlcnRpY2FsQWxpZ24oInRvcCIpLG4uaG9yaXpvbnRhbEFsaWduKCJjZW50ZXIiKSk6KG4uaG9yaXpvbnRhbEFsaWduKCJyaWdodCIpLG4udmVydGljYWxBbGlnbigiY2VudGVyIikpLGEuZm9yRWFjaChmdW5jdGlvbihyLGkpe28uc2F2ZSgpLG8uYmVnaW5QYXRoKCksby50cmFuc2xhdGUoci5vcmlnaW5bMF0sci5vcmlnaW5bMV0pLGUobikoLXIuaGVpZ2h0KSxuKFtyXSksby5maWxsU3R5bGU9QnQuZGFya0dyYXksdC5kZWNvcmF0ZSgpKG8sci5kLGkpLG8uZmlsbCgpLG8uY2xvc2VQYXRoKCksby5yZXN0b3JlKCl9KX07cmV0dXJuIFQoaSx0KSx3KGksbiwiY29udGV4dCIpLGl9LFh0PWZ1bmN0aW9uKCl7dmFyIHQ9ZS5zY2FsZUlkZW50aXR5KCksbj1lLnNjYWxlSWRlbnRpdHkoKSxyPWZ1bmN0aW9uKHQpe3JldHVybiB0LmhpZ2h9LGk9ZnVuY3Rpb24odCl7cmV0dXJuIHQubG93fSxvPWZ1bmN0aW9uKHQpe3JldHVybiB0LmNyb3NzfSx1PSJ2ZXJ0aWNhbCIsYT1OdCguNSksYz1mdW5jdGlvbigpe30sbD1mdW5jdGlvbigpe307cmV0dXJuIGwuZGVmaW5lZD1mdW5jdGlvbih0LG4pe3JldHVybiBtKGkscixvKSh0LG4pfSxsLmNvbXB1dGVCYXJXaWR0aD1mdW5jdGlvbihlKXt2YXIgcj0idmVydGljYWwiPT09dT90Om47cmV0dXJuIGEoZS5tYXAoZnVuY3Rpb24odCxuKXtyZXR1cm4gcihvKHQsbikpfSkpfSxsLnZhbHVlcz1mdW5jdGlvbihlLGEpe2lmKCJ2ZXJ0aWNhbCI9PT11KXt2YXIgYz1uKHIoZSxhKSk7cmV0dXJue29yaWdpbjpbdChvKGUsYSkpLGNdLGhpZ2g6MCxsb3c6bihpKGUsYSkpLWN9fXZhciBsPXQoaShlLGEpKTtyZXR1cm57b3JpZ2luOltsLG4obyhlLGEpKV0saGlnaDp0KHIoZSxhKSktbCxsb3c6MH19LGwuZGVjb3JhdGU9ZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz1hcmd1bWVudHMubGVuZ3RoPD0wP3ZvaWQgMDphcmd1bWVudHNbMF0sbCk6Y30sbC5vcmllbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT1hcmd1bWVudHMubGVuZ3RoPD0wP3ZvaWQgMDphcmd1bWVudHNbMF0sbCk6dX0sbC54U2NhbGU9ZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1hcmd1bWVudHMubGVuZ3RoPD0wP3ZvaWQgMDphcmd1bWVudHNbMF0sbCk6dH0sbC55U2NhbGU9ZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj1hcmd1bWVudHMubGVuZ3RoPD0wP3ZvaWQgMDphcmd1bWVudHNbMF0sbCk6bn0sbC5sb3dWYWx1ZT1mdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPUl0KGFyZ3VtZW50cy5sZW5ndGg8PTA/dm9pZCAwOmFyZ3VtZW50c1swXSksbCk6aX0sbC5oaWdoVmFsdWU9ZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj1JdChhcmd1bWVudHMubGVuZ3RoPD0wP3ZvaWQgMDphcmd1bWVudHNbMF0pLGwpOnJ9LGwuY3Jvc3NWYWx1ZT1mdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPUl0KGFyZ3VtZW50cy5sZW5ndGg8PTA/dm9pZCAwOmFyZ3VtZW50c1swXSksbCk6b30sbC5iYXJXaWR0aD1mdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPUl0KGFyZ3VtZW50cy5sZW5ndGg8PTA/dm9pZCAwOmFyZ3VtZW50c1swXSksbCk6YX0sbC5kZWNvcmF0ZT1mdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhjPWFyZ3VtZW50cy5sZW5ndGg8PTA/dm9pZCAwOmFyZ3VtZW50c1swXSxsKTpjfSxsfSxadD1mdW5jdGlvbigpe3ZhciB0PVh0KCksbj1EdCgiZyIsImVycm9yLWJhciIpLGU9aHQoKS52YWx1ZSgwKSxyPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gdC5zZWxlY3Rpb24/bi50cmFuc2l0aW9uKHQpOm59fSxpPWZ1bmN0aW9uKHQpe3JldHVybiJ0cmFuc2xhdGUoIit0Lm9yaWdpblswXSsiLCAiK3Qub3JpZ2luWzFdKyIpIn0sbz1mdW5jdGlvbihvKXtvLnNlbGVjdGlvbiYmbi50cmFuc2l0aW9uKG8pO3ZhciB1PXIobyk7by5lYWNoKGZ1bmN0aW9uKHIsbyxjKXt2YXIgbD1yLmZpbHRlcih0LmRlZmluZWQpLGY9bC5tYXAodC52YWx1ZXMpLGg9bihhLnNlbGVjdChjW29dKSxsKTtoLmVudGVyKCkuYXR0cigic3Ryb2tlIixCdC5ibGFjaykuYXR0cigiZmlsbCIsQnQuZ3JheSkuYXR0cigidHJhbnNmb3JtIixmdW5jdGlvbihuLGUpe3JldHVybiBpKHQudmFsdWVzKG4sZSkpKyIgc2NhbGUoMWUtNiwgMSkifSkuYXBwZW5kKCJwYXRoIik7dmFyIHM9dC5jb21wdXRlQmFyV2lkdGgobCk7ZS5vcmllbnQodC5vcmllbnQoKSkud2lkdGgocyksaC5lYWNoKGZ1bmN0aW9uKHQsbixyKXt2YXIgbz1mW25dO2UuaGlnaChvLmhpZ2gpLmxvdyhvLmxvdyksdShhLnNlbGVjdChyW25dKSkuYXR0cigidHJhbnNmb3JtIixpKG8pKyIgc2NhbGUoMSkiKS5zZWxlY3QoInBhdGgiKS5hdHRyKCJkIixlKFt0XSkpfSksdC5kZWNvcmF0ZSgpKGgscixvKX0pfTtyZXR1cm4gVChvLHQpLHcobyxuLCJrZXkiKSxvfSxLdD1mdW5jdGlvbigpe3ZhciB0PVh0KCksbj1odCgpLnZhbHVlKDApLGU9ZnVuY3Rpb24oZSl7dmFyIHI9ZS5maWx0ZXIodC5kZWZpbmVkKSxpPW4uY29udGV4dCgpLG89dC5jb21wdXRlQmFyV2lkdGgocik7bi5vcmllbnQodC5vcmllbnQoKSkud2lkdGgobyksci5mb3JFYWNoKGZ1bmN0aW9uKGUscil7aS5zYXZlKCk7dmFyIG89dC52YWx1ZXMoZSxyKTtpLnRyYW5zbGF0ZShvLm9yaWdpblswXSxvLm9yaWdpblsxXSksaS5iZWdpblBhdGgoKSxuLmhpZ2goby5oaWdoKS5sb3coby5sb3cpKFtlXSksaS5zdHJva2VTdHlsZT1CdC5ibGFjayxpLmZpbGxTdHlsZT1CdC5ncmF5LHQuZGVjb3JhdGUoKShpLGUsciksaS5zdHJva2UoKSxpLmZpbGwoKSxpLmNsb3NlUGF0aCgpLGkucmVzdG9yZSgpfSl9O3JldHVybiBUKGUsdCksdyhlLG4sImNvbnRleHQiKSxlfSwkdD1mdW5jdGlvbigpe3ZhciB0PVZ0KCksbj1jLmFyZWEoKS5kZWZpbmVkKHQuZGVmaW5lZCksZT1EdCgicGF0aCIsImFyZWEiKSxyPWZ1bmN0aW9uKHIpe3Iuc2VsZWN0aW9uJiZlLnRyYW5zaXRpb24ociksci5lYWNoKGZ1bmN0aW9uKHIsaSxvKXt2YXIgdT1yLm1hcCh0LnZhbHVlcyk7bi54KGZ1bmN0aW9uKHQsbil7cmV0dXJuIHVbbl0udHJhbnNwb3NlZFh9KS55KGZ1bmN0aW9uKHQsbil7cmV0dXJuIHVbbl0udHJhbnNwb3NlZFl9KTt2YXIgYz0idmVydGljYWwiPT09dC5vcmllbnQoKT8ieSI6IngiO25bYysiMCJdKGZ1bmN0aW9uKHQsbil7cmV0dXJuIHVbbl0ueTB9KSxuW2MrIjEiXShmdW5jdGlvbih0LG4pe3JldHVybiB1W25dLnl9KTt2YXIgbD1lKGEuc2VsZWN0KG9baV0pLFtyXSk7bC5hdHRyKCJkIixuKS5hdHRyKCJmaWxsIixCdC5ncmF5KSx0LmRlY29yYXRlKCkobCxyLGkpfSl9O3JldHVybiBUKHIsdCxTKCJiYXJXaWR0aCIpKSx3KHIsZSwia2V5IiksdyhyLG4sImN1cnZlIikscn0sSnQ9ZnVuY3Rpb24oKXt2YXIgdD1WdCgpLG49Yy5hcmVhKCkuZGVmaW5lZCh0LmRlZmluZWQpLGU9ZnVuY3Rpb24oZSl7dmFyIHI9bi5jb250ZXh0KCksaT1lLm1hcCh0LnZhbHVlcyk7bi54KGZ1bmN0aW9uKHQsbil7cmV0dXJuIGlbbl0udHJhbnNwb3NlZFh9KS55KGZ1bmN0aW9uKHQsbil7cmV0dXJuIGlbbl0udHJhbnNwb3NlZFl9KTt2YXIgbz0idmVydGljYWwiPT09dC5vcmllbnQoKT8ieSI6IngiO25bbysiMCJdKGZ1bmN0aW9uKHQsbil7cmV0dXJuIGlbbl0ueTB9KSxuW28rIjEiXShmdW5jdGlvbih0LG4pe3JldHVybiBpW25dLnl9KSxyLmJlZ2luUGF0aCgpLG4oZSksci5maWxsU3R5bGU9QnQuZ3JheSx0LmRlY29yYXRlKCkocixlKSxyLmZpbGwoKSxyLmNsb3NlUGF0aCgpfTtyZXR1cm4gVChlLHQsUygiYmFyV2lkdGgiKSksdyhlLG4sImN1cnZlIiwiY29udGV4dCIpLGV9LHRuPWZ1bmN0aW9uKCl7dmFyIHQ9ZS5zY2FsZUlkZW50aXR5KCksbj1lLnNjYWxlSWRlbnRpdHkoKSxyPWZ1bmN0aW9uKHQpe3JldHVybiB0LmRhdGV9LGk9ZnVuY3Rpb24odCl7cmV0dXJuIHQub3Blbn0sbz1mdW5jdGlvbih0KXtyZXR1cm4gdC5oaWdofSx1PWZ1bmN0aW9uKHQpe3JldHVybiB0Lmxvd30sYT1mdW5jdGlvbih0KXtyZXR1cm4gdC5jbG9zZX0sYz1OdCguNzUpLGw9ZnVuY3Rpb24oKXt9LGY9ZnVuY3Rpb24obixlKXtyZXR1cm4gdChyKG4sZSkpfSxoPWZ1bmN0aW9uKCl7fTtyZXR1cm4gaC53aWR0aD1mdW5jdGlvbih0KXtyZXR1cm4gYyh0Lm1hcChmKSl9LGguZGVmaW5lZD1mdW5jdGlvbih0LG4pe3JldHVybiBtKHIsaSx1LG8sYSkodCxuKX0saC52YWx1ZXM9ZnVuY3Rpb24odCxlKXt2YXIgcj1hKHQsZSksYz1pKHQsZSksbD0iIjtyZXR1cm4gcj5jP2w9InVwIjpyPGMmJihsPSJkb3duIikse2Nyb3NzOmYodCxlKSxvcGVuOm4oYyksaGlnaDpuKG8odCxlKSksbG93Om4odSh0LGUpKSxjbG9zZTpuKHIpLGRpcmVjdGlvbjpsfX0saC5kZWNvcmF0ZT1mdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhsPWFyZ3VtZW50cy5sZW5ndGg8PTA/dm9pZCAwOmFyZ3VtZW50c1swXSxoKTpsfSxoLnhTY2FsZT1mdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PWFyZ3VtZW50cy5sZW5ndGg8PTA/dm9pZCAwOmFyZ3VtZW50c1swXSxoKTp0fSxoLnlTY2FsZT1mdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPWFyZ3VtZW50cy5sZW5ndGg8PTA/dm9pZCAwOmFyZ3VtZW50c1swXSxoKTpufSxoLmNyb3NzVmFsdWU9ZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj1hcmd1bWVudHMubGVuZ3RoPD0wP3ZvaWQgMDphcmd1bWVudHNbMF0saCk6cn0saC5vcGVuVmFsdWU9ZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT1hcmd1bWVudHMubGVuZ3RoPD0wP3ZvaWQgMDphcmd1bWVudHNbMF0saCk6aX0saC5oaWdoVmFsdWU9ZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz1hcmd1bWVudHMubGVuZ3RoPD0wP3ZvaWQgMDphcmd1bWVudHNbMF0saCk6b30saC5sb3dWYWx1ZT1mdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PWFyZ3VtZW50cy5sZW5ndGg8PTA/dm9pZCAwOmFyZ3VtZW50c1swXSxoKTp1fSxoLnlWYWx1ZT1oLmNsb3NlVmFsdWU9ZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT1hcmd1bWVudHMubGVuZ3RoPD0wP3ZvaWQgMDphcmd1bWVudHNbMF0saCk6YX0saC5iYXJXaWR0aD1mdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhjPUl0KGFyZ3VtZW50cy5sZW5ndGg8PTA/dm9pZCAwOmFyZ3VtZW50c1swXSksaCk6Y30saH0sbm49ZnVuY3Rpb24odCxuKXt2YXIgZT10bigpLHI9RHQoImciLG4pLGk9ZnVuY3Rpb24odCl7cmV0dXJuInRyYW5zbGF0ZSgiK3QuY3Jvc3MrIiwgIit0LmhpZ2grIikifSxvPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gdC5zZWxlY3Rpb24/bi50cmFuc2l0aW9uKHQpOm59fSx1PWZ1bmN0aW9uKHUpe3Uuc2VsZWN0aW9uJiZyLnRyYW5zaXRpb24odSk7dmFyIGM9byh1KTt1LmVhY2goZnVuY3Rpb24obyx1LGwpe3ZhciBmPW8uZmlsdGVyKGUuZGVmaW5lZCk7dC53aWR0aChlLndpZHRoKGYpKTt2YXIgaD1yKGEuc2VsZWN0KGxbdV0pLGYpO2guZW50ZXIoKS5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKHQsbil7cmV0dXJuIGkoZS52YWx1ZXModCxuKSkrIiBzY2FsZSgxZS02LCAxKSJ9KS5hcHBlbmQoInBhdGgiKSxoLmVhY2goZnVuY3Rpb24ocixvLHUpe3ZhciBsPWUudmFsdWVzKHIsbyksZj0idXAiPT09bC5kaXJlY3Rpb24/QnQuZ3JlZW46QnQucmVkLGg9YyhhLnNlbGVjdCh1W29dKSkuYXR0cigiY2xhc3MiLG4rIiAiK2wuZGlyZWN0aW9uKS5hdHRyKCJzdHJva2UiLGYpLmF0dHIoImZpbGwiLGYpLmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24oKXtyZXR1cm4gaShsKSsiIHNjYWxlKDEpIn0pO3QueCgwKS5vcGVuKGZ1bmN0aW9uKCl7cmV0dXJuIGwub3Blbi1sLmhpZ2h9KS5oaWdoKDApLmxvdyhmdW5jdGlvbigpe3JldHVybiBsLmxvdy1sLmhpZ2h9KS5jbG9zZShmdW5jdGlvbigpe3JldHVybiBsLmNsb3NlLWwuaGlnaH0pLGguc2VsZWN0KCJwYXRoIikuYXR0cigiZCIsdChbcl0pKX0pLGUuZGVjb3JhdGUoKShoLG8sdSl9KX07cmV0dXJuIHcodSxyLCJrZXkiKSxUKHUsZSksdX0sZW49ZnVuY3Rpb24oKXtyZXR1cm4gbm4obHQoKSwiY2FuZGxlc3RpY2siKX0scm49ZnVuY3Rpb24odCl7dmFyIG49dG4oKSxlPWZ1bmN0aW9uKGUpe3ZhciByPWUuZmlsdGVyKG4uZGVmaW5lZCk7dC53aWR0aChuLndpZHRoKHIpKTt2YXIgaT10LmNvbnRleHQoKTtyLmZvckVhY2goZnVuY3Rpb24oZSxyKXtpLnNhdmUoKTt2YXIgbz1uLnZhbHVlcyhlLHIpO2kudHJhbnNsYXRlKG8uY3Jvc3Msby5oaWdoKSxpLmJlZ2luUGF0aCgpLHQueCgwKS5vcGVuKGZ1bmN0aW9uKCl7cmV0dXJuIG8ub3Blbi1vLmhpZ2h9KS5oaWdoKDApLmxvdyhmdW5jdGlvbigpe3JldHVybiBvLmxvdy1vLmhpZ2h9KS5jbG9zZShmdW5jdGlvbigpe3JldHVybiBvLmNsb3NlLW8uaGlnaH0pKFtlXSk7dmFyIHU9InVwIj09PW8uZGlyZWN0aW9uP0J0LmdyZWVuOkJ0LnJlZDtpLnN0cm9rZVN0eWxlPXUsaS5maWxsU3R5bGU9dSxuLmRlY29yYXRlKCkoaSxlLHIpLGkuc3Ryb2tlKCksaS5maWxsKCksaS5jbG9zZVBhdGgoKSxpLnJlc3RvcmUoKX0pfTtyZXR1cm4gdyhlLHQsImNvbnRleHQiKSxUKGUsbiksZX0sb249ZnVuY3Rpb24oKXtyZXR1cm4gcm4obHQoKSl9LHVuPWZ1bmN0aW9uKCl7dmFyIHQ9ZS5zY2FsZUlkZW50aXR5KCksbj1lLnNjYWxlSWRlbnRpdHkoKSxyPWZ1bmN0aW9uKHQpe3JldHVybiB0LnVwcGVyUXVhcnRpbGV9LGk9ZnVuY3Rpb24odCl7cmV0dXJuIHQubG93ZXJRdWFydGlsZX0sbz1mdW5jdGlvbih0KXtyZXR1cm4gdC5oaWdofSx1PWZ1bmN0aW9uKHQpe3JldHVybiB0Lmxvd30sYT1mdW5jdGlvbih0KXtyZXR1cm4gdC52YWx1ZX0sYz1mdW5jdGlvbih0KXtyZXR1cm4gdC5tZWRpYW59LGw9InZlcnRpY2FsIixmPU50KC41KSxoPWZ1bmN0aW9uKCl7fSxzPWZ1bmN0aW9uKCl7fTtyZXR1cm4gcy5kZWZpbmVkPWZ1bmN0aW9uKHQsbil7cmV0dXJuIG0odSxvLGkscixhLGMpKHQsbil9LHMuY29tcHV0ZUJhcldpZHRoPWZ1bmN0aW9uKGUpe3ZhciByPSJ2ZXJ0aWNhbCI9PT1sP3Q6bjtyZXR1cm4gZihlLm1hcChmdW5jdGlvbih0LG4pe3JldHVybiByKGEodCxuKSl9KSl9LHMudmFsdWVzPWZ1bmN0aW9uKGUsZil7aWYoInZlcnRpY2FsIj09PWwpe3ZhciBoPW4obyhlLGYpKTtyZXR1cm57b3JpZ2luOlt0KGEoZSxmKSksaF0saGlnaDowLHVwcGVyUXVhcnRpbGU6bihyKGUsZikpLWgsbWVkaWFuOm4oYyhlLGYpKS1oLGxvd2VyUXVhcnRpbGU6bihpKGUsZikpLWgsbG93Om4odShlLGYpKS1ofX12YXIgcz10KHUoZSxmKSk7cmV0dXJue29yaWdpbjpbcyxuKGEoZSxmKSldLGhpZ2g6dChvKGUsZikpLXMsdXBwZXJRdWFydGlsZTp0KHIoZSxmKSktcyxtZWRpYW46dChjKGUsZikpLXMsbG93ZXJRdWFydGlsZTp0KGkoZSxmKSktcyxsb3c6MH19LHMuZGVjb3JhdGU9ZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaD1hcmd1bWVudHMubGVuZ3RoPD0wP3ZvaWQgMDphcmd1bWVudHNbMF0scyk6aH0scy5vcmllbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obD1hcmd1bWVudHMubGVuZ3RoPD0wP3ZvaWQgMDphcmd1bWVudHNbMF0scyk6bH0scy54U2NhbGU9ZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1hcmd1bWVudHMubGVuZ3RoPD0wP3ZvaWQgMDphcmd1bWVudHNbMF0scyk6dH0scy55U2NhbGU9ZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj1hcmd1bWVudHMubGVuZ3RoPD0wP3ZvaWQgMDphcmd1bWVudHNbMF0scyk6bn0scy5sb3dlclF1YXJ0aWxlVmFsdWU9ZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT1JdChhcmd1bWVudHMubGVuZ3RoPD0wP3ZvaWQgMDphcmd1bWVudHNbMF0pLHMpOml9LHMudXBwZXJRdWFydGlsZVZhbHVlPWZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9SXQoYXJndW1lbnRzLmxlbmd0aDw9MD92b2lkIDA6YXJndW1lbnRzWzBdKSxzKTpyfSxzLmxvd1ZhbHVlPWZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHU9SXQoYXJndW1lbnRzLmxlbmd0aDw9MD92b2lkIDA6YXJndW1lbnRzWzBdKSxzKTp1fSxzLmhpZ2hWYWx1ZT1mdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPUl0KGFyZ3VtZW50cy5sZW5ndGg8PTA/dm9pZCAwOmFyZ3VtZW50c1swXSkscyk6b30scy5jcm9zc1ZhbHVlPWZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9SXQoYXJndW1lbnRzLmxlbmd0aDw9MD92b2lkIDA6YXJndW1lbnRzWzBdKSxzKTphfSxzLm1lZGlhblZhbHVlPWZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGM9SXQoYXJndW1lbnRzLmxlbmd0aDw9MD92b2lkIDA6YXJndW1lbnRzWzBdKSxzKTpjfSxzLmJhcldpZHRoPWZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGY9SXQoYXJndW1lbnRzLmxlbmd0aDw9MD92b2lkIDA6YXJndW1lbnRzWzBdKSxzKTpmfSxzLmRlY29yYXRlPWZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGg9YXJndW1lbnRzLmxlbmd0aDw9MD92b2lkIDA6YXJndW1lbnRzWzBdLHMpOmh9LHN9LGFuPWZ1bmN0aW9uKCl7dmFyIHQ9dW4oKSxuPUR0KCJnIiwiYm94LXBsb3QiKSxlPWZ0KCkudmFsdWUoMCkscj1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIHQuc2VsZWN0aW9uP24udHJhbnNpdGlvbih0KTpufX0saT1mdW5jdGlvbih0KXtyZXR1cm4idHJhbnNsYXRlKCIrdC5vcmlnaW5bMF0rIiwgIit0Lm9yaWdpblsxXSsiKSJ9LG89ZnVuY3Rpb24obyl7by5zZWxlY3Rpb24mJm4udHJhbnNpdGlvbihvKTt2YXIgdT1yKG8pO28uZWFjaChmdW5jdGlvbihyLG8sYyl7dmFyIGw9ci5maWx0ZXIodC5kZWZpbmVkKSxmPW4oYS5zZWxlY3QoY1tvXSksbCk7Zi5lbnRlcigpLmF0dHIoInN0cm9rZSIsQnQuYmxhY2spLmF0dHIoImZpbGwiLEJ0LmdyYXkpLmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24obixlKXtyZXR1cm4gaSh0LnZhbHVlcyhuLGUpKSsiIHNjYWxlKDFlLTYsIDEpIn0pLmFwcGVuZCgicGF0aCIpO3ZhciBoPXQuY29tcHV0ZUJhcldpZHRoKGwpO2Uub3JpZW50KHQub3JpZW50KCkpLndpZHRoKGgpLGYuZWFjaChmdW5jdGlvbihuLHIsbyl7dmFyIGM9dC52YWx1ZXMobixyKTtlLm1lZGlhbihjLm1lZGlhbikudXBwZXJRdWFydGlsZShjLnVwcGVyUXVhcnRpbGUpLmxvd2VyUXVhcnRpbGUoYy5sb3dlclF1YXJ0aWxlKS5oaWdoKGMuaGlnaCkubG93KGMubG93KSx1KGEuc2VsZWN0KG9bcl0pKS5hdHRyKCJ0cmFuc2Zvcm0iLGkoYykpLnNlbGVjdCgicGF0aCIpLmF0dHIoImQiLGUoW25dKSl9KSx0LmRlY29yYXRlKCkoZixyLG8pfSl9O3JldHVybiBUKG8sdCksdyhvLG4sImtleSIpLHcobyxlLCJjYXAiKSxvfSxjbj1mdW5jdGlvbigpe3ZhciB0PXVuKCksbj1mdCgpLnZhbHVlKDApLGU9ZnVuY3Rpb24oZSl7dmFyIHI9ZS5maWx0ZXIodC5kZWZpbmVkKSxpPW4uY29udGV4dCgpLG89dC5jb21wdXRlQmFyV2lkdGgocik7bi5vcmllbnQodC5vcmllbnQoKSkud2lkdGgobyksci5mb3JFYWNoKGZ1bmN0aW9uKGUscil7aS5zYXZlKCk7dmFyIG89dC52YWx1ZXMoZSxyKTtpLnRyYW5zbGF0ZShvLm9yaWdpblswXSxvLm9yaWdpblsxXSksaS5iZWdpblBhdGgoKSxuLm1lZGlhbihvLm1lZGlhbikudXBwZXJRdWFydGlsZShvLnVwcGVyUXVhcnRpbGUpLmxvd2VyUXVhcnRpbGUoby5sb3dlclF1YXJ0aWxlKS5oaWdoKG8uaGlnaCkubG93KG8ubG93KShbZV0pLGkuc3Ryb2tlU3R5bGU9QnQuYmxhY2ssaS5maWxsU3R5bGU9QnQuZ3JheSx0LmRlY29yYXRlKCkoaSxlLHIpLGkuc3Ryb2tlKCksaS5maWxsKCksaS5jbG9zZVBhdGgoKSxpLnJlc3RvcmUoKX0pfTtyZXR1cm4gVChlLHQpLHcoZSxuLCJjYXAiLCJjb250ZXh0IiksZX0sbG49ZnVuY3Rpb24oKXtyZXR1cm4gbm4oYXQoKSwib2hsYyIpfSxmbj1mdW5jdGlvbigpe3JldHVybiBybihhdCgpKX0saG49ZnVuY3Rpb24oKXt2YXIgdD1mdW5jdGlvbigpe30sbj1lLnNjYWxlSWRlbnRpdHkoKSxyPWUuc2NhbGVJZGVudGl0eSgpLGk9W10sbz1mdW5jdGlvbih0KXtyZXR1cm4gdH0sdT1mdW5jdGlvbih0LG4pe3JldHVybiBufSxhPWZ1bmN0aW9uKCl7fTtyZXR1cm4gYS5tYXBwaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89YXJndW1lbnRzLmxlbmd0aDw9MD92b2lkIDA6YXJndW1lbnRzWzBdLGEpOm99LGEua2V5PWZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHU9YXJndW1lbnRzLmxlbmd0aDw9MD92b2lkIDA6YXJndW1lbnRzWzBdLGEpOnV9LGEuc2VyaWVzPWZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9YXJndW1lbnRzLmxlbmd0aDw9MD92b2lkIDA6YXJndW1lbnRzWzBdLGEpOml9LGEueFNjYWxlPWZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49YXJndW1lbnRzLmxlbmd0aDw9MD92b2lkIDA6YXJndW1lbnRzWzBdLGEpOm59LGEueVNjYWxlPWZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9YXJndW1lbnRzLmxlbmd0aDw9MD92b2lkIDA6YXJndW1lbnRzWzBdLGEpOnJ9LGEuZGVjb3JhdGU9ZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1hcmd1bWVudHMubGVuZ3RoPD0wP3ZvaWQgMDphcmd1bWVudHNbMF0sYSk6dH0sYX0sc249ZnVuY3Rpb24oKXt2YXIgdD1obigpLG49RHQoImciKSxlPUR0KCJnIiwibXVsdGkiKSxyPWZ1bmN0aW9uKHIpe3Iuc2VsZWN0aW9uJiYoZS50cmFuc2l0aW9uKHIpLG4udHJhbnNpdGlvbihyKSk7dmFyIGk9dC5tYXBwaW5nKCksbz10LnNlcmllcygpLHU9dC54U2NhbGUoKSxjPXQueVNjYWxlKCk7ci5lYWNoKGZ1bmN0aW9uKHIsbCxmKXt2YXIgaD1lKGEuc2VsZWN0KGZbbF0pLG8pO2guZWFjaChmdW5jdGlvbih0LGUsbCl7dC54U2NhbGUodSkueVNjYWxlKGMpO3ZhciBmPWkocixlLG8pLGg9bihhLnNlbGVjdChsW2VdKSxbZl0pO2guY2FsbCh0KX0pO3ZhciBzPWguc2VsZWN0aW9uP2guc2VsZWN0aW9uKCk6aDtzLm9yZGVyKCksdC5kZWNvcmF0ZSgpKGgscixsKX0pfTtyZXR1cm4gVChyLHQpLHcocixlLCJrZXkiKSxyfSxkbj1mdW5jdGlvbigpe3ZhciB0PW51bGwsbj1obigpLGU9ZnVuY3Rpb24oZSl7dmFyIHI9bi5tYXBwaW5nKCksaT1uLnNlcmllcygpLG89bi54U2NhbGUoKSx1PW4ueVNjYWxlKCk7aS5mb3JFYWNoKGZ1bmN0aW9uKGEsYyl7dmFyIGw9cihlLGMsaSk7YS5jb250ZXh0KHQpLnhTY2FsZShvKS55U2NhbGUodSk7dmFyIGY9YS5kZWNvcmF0ZSgpO2EuZGVjb3JhdGUoZnVuY3Rpb24odCxyLGkpe24uZGVjb3JhdGUoKSh0LGUsYyksZih0LHIsaSl9KSxhKGwpLGEuZGVjb3JhdGUoZil9KX07cmV0dXJuIGUuY29udGV4dD1mdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PWFyZ3VtZW50cy5sZW5ndGg8PTA/dm9pZCAwOmFyZ3VtZW50c1swXSxlKTp0fSxUKGUsbiksZX0sZ249ZnVuY3Rpb24odCl7dmFyIHI9TnQoLjc1KSxpPWZ1bmN0aW9uKCl7fSxvPWUuc2NhbGVMaW5lYXIoKSx1PWUuc2NhbGVCYW5kKCksYT1mdW5jdGlvbigpe30sYz1mdW5jdGlvbihuKXtpZighbi5sZW5ndGgpcmV0dXJuIDA7dmFyIGU9blswXSxpPXQuY3Jvc3NWYWx1ZSgpLHU9ZnVuY3Rpb24odCxuKXtyZXR1cm4gbyhpKHQsbikpfSxhPXIoZS5tYXAodSkpO3JldHVybiBhfTtyZXR1cm4gYS5jb25maWd1cmVPZmZzZXRTY2FsZT1mdW5jdGlvbihlKXt2YXIgcj1jKGUpLGk9ci8yO3UuZG9tYWluKG4ucmFuZ2UoMCxlLmxlbmd0aCkpLnJhbmdlKFstaSxpXSksdC5iYXJXaWR0aCYmdC5iYXJXaWR0aCh1LmJhbmR3aWR0aCgpKX0sYS5vZmZzZXRTY2FsZT1mdW5jdGlvbigpe3JldHVybiB1fSxhLmdyb3VwV2lkdGg9ZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj1JdChhcmd1bWVudHMubGVuZ3RoPD0wP3ZvaWQgMDphcmd1bWVudHNbMF0pLGEpOnJ9LGEuZGVjb3JhdGU9ZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT1hcmd1bWVudHMubGVuZ3RoPD0wP3ZvaWQgMDphcmd1bWVudHNbMF0sYSk6aX0sYS54U2NhbGU9ZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz1hcmd1bWVudHMubGVuZ3RoPD0wP3ZvaWQgMDphcmd1bWVudHNbMF0sYSk6b30sVChhLHUsayh7cGFkZGluZ0lubmVyOiJzdWJQYWRkaW5nIn0pKSxhfSx2bj1mdW5jdGlvbih0KXt2YXIgbj1nbih0KSxlPUR0KCJnIiwiZ3JvdXBlZCIpLHI9ZnVuY3Rpb24ocil7ci5zZWxlY3Rpb24mJmUudHJhbnNpdGlvbihyKSxyLmVhY2goZnVuY3Rpb24ocixpLG8pe24uY29uZmlndXJlT2Zmc2V0U2NhbGUocik7dmFyIHU9ZShhLnNlbGVjdChvW2ldKSxyKTt1LmVudGVyKCkuYXBwZW5kKCJnIiksdS5zZWxlY3QoImciKS5lYWNoKGZ1bmN0aW9uKGUscixpKXt2YXIgbz1hLnNlbGVjdChpW3JdKSx1PWZ1bmN0aW9uKHQpe3JldHVybiBuLnhTY2FsZSgpKHQpK24ub2Zmc2V0U2NhbGUoKShyKStuLm9mZnNldFNjYWxlKCkuYmFuZHdpZHRoKCkvMn07dC54U2NhbGUodSksdC5kZWNvcmF0ZShmdW5jdGlvbih0LGUpe3JldHVybiBuLmRlY29yYXRlKCkodCxlLHIpfSksby5jYWxsKHQpfSl9KX07cmV0dXJuIFQocix0LFMoImRlY29yYXRlIiwieFNjYWxlIikpLFQocixuLFMoImNvbmZpZ3VyZU9mZnNldFNjYWxlIiwiY29uZmlndXJlT2Zmc2V0IikpLHJ9LHBuPWZ1bmN0aW9uKHQpe3ZhciBuPWduKHQpLGU9ZnVuY3Rpb24oZSl7bi5jb25maWd1cmVPZmZzZXRTY2FsZShlKSxlLmZvckVhY2goZnVuY3Rpb24oZSxyKXt2YXIgaT1mdW5jdGlvbih0KXtyZXR1cm4gbi54U2NhbGUoKSh0KStuLm9mZnNldFNjYWxlKCkocikrbi5vZmZzZXRTY2FsZSgpLmJhbmR3aWR0aCgpLzJ9O3QueFNjYWxlKGkpLHQuZGVjb3JhdGUoZnVuY3Rpb24odCxlKXtyZXR1cm4gbi5kZWNvcmF0ZSgpKHQsZSxyKX0pLHQoZSl9KX07cmV0dXJuIFQoZSx0LFMoImRlY29yYXRlIiwieFNjYWxlIikpLFQoZSxuLFMoImNvbmZpZ3VyZU9mZnNldFNjYWxlIiwiY29uZmlndXJlT2Zmc2V0IikpLGV9LG1uPWZ1bmN0aW9uKCl7dmFyIHQ9InZlcnRpY2FsIixuPXF0KCksZT1zbigpLHI9ZnVuY3Rpb24ocil7cmV0dXJuIHIuZWFjaChmdW5jdGlvbihyLGksbyl7InZlcnRpY2FsIj09PXQ/ZS5zZXJpZXMoclswXS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIG59KSkubWFwcGluZyhmdW5jdGlvbih0LG4pe3JldHVybiB0Lm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdFtuXX0pfSk6ZS5zZXJpZXMoci5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIG59KSkubWFwcGluZyhmdW5jdGlvbih0LG4pe3JldHVybiB0W25dfSksYS5zZWxlY3Qob1tpXSkuY2FsbChlKX0pfTtyZXR1cm4gci5zZXJpZXM9ZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj1hcmd1bWVudHMubGVuZ3RoPD0wP3ZvaWQgMDphcmd1bWVudHNbMF0scik6bn0sci5vcmllbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1hcmd1bWVudHMubGVuZ3RoPD0wP3ZvaWQgMDphcmd1bWVudHNbMF0scik6dH0sVChyLGUsUygic2VyaWVzIiwibWFwcGluZyIpKSxyfSx5bj1mdW5jdGlvbigpe3ZhciB0PSJ2ZXJ0aWNhbCIsbj1XdCgpLGU9ZG4oKSxyPWZ1bmN0aW9uKHIpeyJ2ZXJ0aWNhbCI9PT10P2Uuc2VyaWVzKHJbMF0ubWFwKGZ1bmN0aW9uKHQpe3JldHVybiBufSkpLm1hcHBpbmcoZnVuY3Rpb24odCxuKXtyZXR1cm4gdC5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHRbbl19KX0pOmUuc2VyaWVzKHIubWFwKGZ1bmN0aW9uKHQpe3JldHVybiBufSkpLm1hcHBpbmcoZnVuY3Rpb24odCxuKXtyZXR1cm4gdFtuXX0pLGUocil9O3JldHVybiByLnNlcmllcz1mdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPWFyZ3VtZW50cy5sZW5ndGg8PTA/dm9pZCAwOmFyZ3VtZW50c1swXSxyKTpufSxyLm9yaWVudD1mdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PWFyZ3VtZW50cy5sZW5ndGg8PTA/dm9pZCAwOmFyZ3VtZW50c1swXSxyKTp0fSxUKHIsZSxTKCJzZXJpZXMiLCJtYXBwaW5nIikpLHJ9LGJuPWZ1bmN0aW9uKHQpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdH19LHduPWZ1bmN0aW9uKCl7dmFyIHQ9ZS5zY2FsZUlkZW50aXR5KCksbj1lLnNjYWxlSWRlbnRpdHkoKSxyPSJob3Jpem9udGFsIixpPWZ1bmN0aW9uKHQpe3JldHVybiB0LmZyb219LG89ZnVuY3Rpb24odCl7cmV0dXJuIHQudG99LHU9ZnVuY3Rpb24oKXt9LGM9RHQoImciLCJhbm5vdGF0aW9uLWJhbmQiKSxsPWN0KCkuaG9yaXpvbnRhbEFsaWduKCJjZW50ZXIiKS52ZXJ0aWNhbEFsaWduKCJjZW50ZXIiKS54KDApLnkoMCksZj1mdW5jdGlvbihlKXtpZihlLnNlbGVjdGlvbiYmYy50cmFuc2l0aW9uKGUpLCJob3Jpem9udGFsIiE9PXImJiJ2ZXJ0aWNhbCIhPT1yKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBvcmllbnRhdGlvbiIpO3ZhciBmPSJob3Jpem9udGFsIj09PXIsaD1mP2Z1bmN0aW9uKHQsbil7cmV0dXJuInRyYW5zbGF0ZSgiK3QrIiwgIituKyIpIn06ZnVuY3Rpb24odCxuKXtyZXR1cm4idHJhbnNsYXRlKCIrbisiLCAiK3QrIikifSxzPWY/dDpuLGQ9Zj9uOnQsZz1zLnJhbmdlKCksdj1nWzFdLWdbMF0scD1mPyJoZWlnaHQiOiJ3aWR0aCIsbT1mPyJ3aWR0aCI6ImhlaWdodCIseT1mdW5jdGlvbigpe3JldHVybiBoKChnWzFdK2dbMF0pLzIsKGQoby5hcHBseSh2b2lkIDAsYXJndW1lbnRzKSkrZChpLmFwcGx5KHZvaWQgMCxhcmd1bWVudHMpKSkvMil9O2xbbV0odiksbFtwXShmdW5jdGlvbigpe3JldHVybiBkKG8uYXBwbHkodm9pZCAwLGFyZ3VtZW50cykpLWQoaS5hcHBseSh2b2lkIDAsYXJndW1lbnRzKSl9KSxlLmVhY2goZnVuY3Rpb24odCxuLGUpe3ZhciBpPWMoYS5zZWxlY3QoZVtuXSksdCk7aS5lbnRlcigpLmF0dHIoInRyYW5zZm9ybSIseSkuYXBwZW5kKCJwYXRoIikuY2xhc3NlZCgiYmFuZCIsITApLGkuYXR0cigiY2xhc3MiLCJhbm5vdGF0aW9uLWJhbmQgIityKS5hdHRyKCJ0cmFuc2Zvcm0iLHkpLnNlbGVjdCgicGF0aCIpLmF0dHIoImQiLGZ1bmN0aW9uKHQsbil7cmV0dXJuIGwoW3RdLG4pfSksdShpLHQsbil9KX07cmV0dXJuIGYueFNjYWxlPWZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9YXJndW1lbnRzLmxlbmd0aDw9MD92b2lkIDA6YXJndW1lbnRzWzBdLGYpOnR9LGYueVNjYWxlPWZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49YXJndW1lbnRzLmxlbmd0aDw9MD92b2lkIDA6YXJndW1lbnRzWzBdLGYpOm59LGYub3JpZW50PWZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9YXJndW1lbnRzLmxlbmd0aDw9MD92b2lkIDA6YXJndW1lbnRzWzBdLGYpOnJ9LGYuZGVjb3JhdGU9ZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT1hcmd1bWVudHMubGVuZ3RoPD0wP3ZvaWQgMDphcmd1bWVudHNbMF0sZik6dX0sZi5mcm9tVmFsdWU9ZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT1ibihhcmd1bWVudHMubGVuZ3RoPD0wP3ZvaWQgMDphcmd1bWVudHNbMF0pLGYpOml9LGYudG9WYWx1ZT1mdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPWJuKGFyZ3VtZW50cy5sZW5ndGg8PTA/dm9pZCAwOmFyZ3VtZW50c1swXSksZik6b30sZn0seG49ZnVuY3Rpb24oKXt2YXIgdD1lLnNjYWxlSWRlbnRpdHkoKSxuPWUuc2NhbGVJZGVudGl0eSgpLHI9ZnVuY3Rpb24odCl7cmV0dXJuIHR9LGk9cixvPWZ1bmN0aW9uKCl7fSx1PSJob3Jpem9udGFsIixjPUR0KCJnIiwiYW5ub3RhdGlvbi1saW5lIiksbD1mdW5jdGlvbihlKXtpZihlLnNlbGVjdGlvbiYmYy50cmFuc2l0aW9uKGUpLCJob3Jpem9udGFsIiE9PXUmJiJ2ZXJ0aWNhbCIhPT11KXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBvcmllbnRhdGlvbiIpO3ZhciBsPSJob3Jpem9udGFsIj09PXUsZj1sP2Z1bmN0aW9uKHQsbil7cmV0dXJuInRyYW5zbGF0ZSgiK3QrIiwgIituKyIpIn06ZnVuY3Rpb24odCxuKXtyZXR1cm4idHJhbnNsYXRlKCIrbisiLCAiK3QrIikifSxoPWw/IngyIjoieTIiLHM9bD90Om4sZD1sP246dCxnPWw/ImxlZnQtaGFuZGxlIjoiYm90dG9tLWhhbmRsZSIsdj1sPyJyaWdodC1oYW5kbGUiOiJ0b3AtaGFuZGxlIixwPWw/IjkiOiIwIixtPWw/IjAiOiI5Iix5PWw/IjAuMzJlbSI6IjAuNzFlbSIsYj1sPyJzdGFydCI6Im1pZGRsZSIsdz1zLnJhbmdlKCkseD1mdW5jdGlvbigpe3JldHVybiBmKHdbMF0sZChyLmFwcGx5KHZvaWQgMCxhcmd1bWVudHMpKSl9LFQ9d1sxXS13WzBdO2UuZWFjaChmdW5jdGlvbih0LG4sZSl7dmFyIHI9YyhhLnNlbGVjdChlW25dKSx0KSxsPXIuZW50ZXIoKS5hdHRyKCJ0cmFuc2Zvcm0iLHgpLnN0eWxlKCJzdHJva2UiLCIjYmJiIik7bC5hcHBlbmQoImxpbmUiKS5hdHRyKGgsVCksbC5hcHBlbmQoImciKS5jbGFzc2VkKGcsITApLnN0eWxlKCJzdHJva2UiLCJub25lIiksbC5hcHBlbmQoImciKS5jbGFzc2VkKHYsITApLnN0eWxlKCJzdHJva2UiLCJub25lIikuYXR0cigidHJhbnNmb3JtIixmKFQsMCkpLmFwcGVuZCgidGV4dCIpLmF0dHIoInRleHQtYW5jaG9yIixiKS5hdHRyKCJ4IixwKS5hdHRyKCJ5IixtKS5hdHRyKCJkeSIseSksci5hdHRyKCJjbGFzcyIsImFubm90YXRpb24tbGluZSAiK3UpLHIuYXR0cigidHJhbnNmb3JtIix4KSxyLnNlbGVjdCgibGluZSIpLmF0dHIoaCxUKSxyLnNlbGVjdCgiZy4iK3YpLmF0dHIoInRyYW5zZm9ybSIsZihULDApKSxyLnNlbGVjdCgidGV4dCIpLnRleHQoaSksbyhyLHQsbil9KX07cmV0dXJuIGwueFNjYWxlPWZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9YXJndW1lbnRzLmxlbmd0aDw9MD92b2lkIDA6YXJndW1lbnRzWzBdLGwpOnR9LGwueVNjYWxlPWZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49YXJndW1lbnRzLmxlbmd0aDw9MD92b2lkIDA6YXJndW1lbnRzWzBdLGwpOm59LGwudmFsdWU9ZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj1ibihhcmd1bWVudHMubGVuZ3RoPD0wP3ZvaWQgMDphcmd1bWVudHNbMF0pLGwpOnJ9LGwubGFiZWw9ZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT1ibihhcmd1bWVudHMubGVuZ3RoPD0wP3ZvaWQgMDphcmd1bWVudHNbMF0pLGwpOml9LGwuZGVjb3JhdGU9ZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz1hcmd1bWVudHMubGVuZ3RoPD0wP3ZvaWQgMDphcmd1bWVudHNbMF0sbCk6b30sbC5vcmllbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT1hcmd1bWVudHMubGVuZ3RoPD0wP3ZvaWQgMDphcmd1bWVudHNbMF0sbCk6dX0sbH0sVG49ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKGUubGVuZ3RoPD0xKXJldHVybiAxMDtlLnNvcnQoKTt2YXIgcj1uLnBhaXJzKGUpLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5hYnModFswXS10WzFdKX0pLGk9bi5taW4ocik7cmV0dXJuIHQqaX19LEVuPWZ1bmN0aW9uKHQpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdH19LFNuPWZ1bmN0aW9uKCl7dmFyIHQ9ZS5zY2FsZUlkZW50aXR5KCksbj1lLnNjYWxlSWRlbnRpdHkoKSxyPWZ1bmN0aW9uKCl7cmV0dXJuIDB9LGk9ZnVuY3Rpb24odCl7cmV0dXJuIHQueH0sbz1mdW5jdGlvbih0KXtyZXR1cm4gdC55fSx1PWZ1bmN0aW9uKCl7fSxhPVRuKC43NSksYz0idmVydGljYWwiLGw9ZnVuY3Rpb24oKXt9O3JldHVybiBsLmRlZmluZWQ9ZnVuY3Rpb24odCxuKXtyZXR1cm4geShyLGksbykodCxuKX0sbC52YWx1ZXM9ZnVuY3Rpb24oZSx1KXtpZigidmVydGljYWwiPT09Yyl7dmFyIGE9bihvKGUsdSkpLGw9bihyKGUsdSkpLGY9dChpKGUsdSkpO3JldHVybntkOmUseDpmLHk6YSx5MDpsLGhlaWdodDphLWwsb3JpZ2luOltmLGFdLGJhc2VPcmlnaW46W2YsbF0sdHJhbnNwb3NlZFg6Zix0cmFuc3Bvc2VkWTphfX12YXIgaD10KG8oZSx1KSkscz10KHIoZSx1KSksZD1uKGkoZSx1KSk7cmV0dXJue2Q6ZSx4OmQseTpoLHkwOnMsaGVpZ2h0OmgtcyxvcmlnaW46W2gsZF0sYmFzZU9yaWdpbjpbcyxkXSx0cmFuc3Bvc2VkWDpoLHRyYW5zcG9zZWRZOmR9fSxsLmRlY29yYXRlPWZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHU9YXJndW1lbnRzLmxlbmd0aDw9MD92b2lkIDA6YXJndW1lbnRzWzBdLGwpOnV9LGwueFNjYWxlPWZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9YXJndW1lbnRzLmxlbmd0aDw9MD92b2lkIDA6YXJndW1lbnRzWzBdLGwpOnR9LGwueVNjYWxlPWZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49YXJndW1lbnRzLmxlbmd0aDw9MD92b2lkIDA6YXJndW1lbnRzWzBdLGwpOm59LGwuYmFzZVZhbHVlPWZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9RW4oYXJndW1lbnRzLmxlbmd0aDw9MD92b2lkIDA6YXJndW1lbnRzWzBdKSxsKTpyfSxsLmNyb3NzVmFsdWU9ZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT1Fbihhcmd1bWVudHMubGVuZ3RoPD0wP3ZvaWQgMDphcmd1bWVudHNbMF0pLGwpOml9LGwubWFpblZhbHVlPWZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89RW4oYXJndW1lbnRzLmxlbmd0aDw9MD92b2lkIDA6YXJndW1lbnRzWzBdKSxsKTpvfSxsLmJhcldpZHRoPWZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9RW4oYXJndW1lbnRzLmxlbmd0aDw9MD92b2lkIDA6YXJndW1lbnRzWzBdKSxsKTphfSxsLm9yaWVudD1mdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhjPWFyZ3VtZW50cy5sZW5ndGg8PTA/dm9pZCAwOmFyZ3VtZW50c1swXSxsKTpjfSxsfSxNbj0iI2M2MCIsa249IiM2YzAiLExuPSIjMDAwIixBbj0iI2RkZCIsSG49IiM5OTkiLE9uPXtyZWQ6TW4sZ3JlZW46a24sYmxhY2s6TG4sZ3JheTpBbixkYXJrR3JheTpIbn0sX249ZnVuY3Rpb24oKXt2YXIgdD1jLnN5bWJvbCgpLG49U24oKSxlPUR0KCJnIiwicG9pbnQiKSxyPWZ1bmN0aW9uKHQpe3JldHVybiJ0cmFuc2xhdGUoIit0WzBdKyIsICIrdFsxXSsiKSJ9LGk9ZnVuY3Rpb24oaSl7aS5zZWxlY3Rpb24mJmUudHJhbnNpdGlvbihpKSxpLmVhY2goZnVuY3Rpb24oaSxvLHUpe3ZhciBjPWkuZmlsdGVyKG4uZGVmaW5lZCksbD1lKGEuc2VsZWN0KHVbb10pLGMpO2wuZW50ZXIoKS5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHIobi52YWx1ZXModCxlKS5vcmlnaW4pfSkuYXR0cigiZmlsbCIsT24uZ3JheSkuYXR0cigic3Ryb2tlIixPbi5ibGFjaykuYXBwZW5kKCJwYXRoIiksbC5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHIobi52YWx1ZXModCxlKS5vcmlnaW4pfSkuc2VsZWN0KCJwYXRoIikuYXR0cigiZCIsdCksbi5kZWNvcmF0ZSgpKGwsaSxvKX0pfTtyZXR1cm4gVChpLG4sUygiYmFzZVZhbHVlIiwiYmFyV2lkdGgiKSksdyhpLGUsImtleSIpLHcoaSx0LCJ0eXBlIiwic2l6ZSIpLGl9LENuPWZ1bmN0aW9uKCl7dmFyIHQ9ZnVuY3Rpb24oKXt9LG49ZS5zY2FsZUlkZW50aXR5KCkscj1lLnNjYWxlSWRlbnRpdHkoKSxpPVtdLG89ZnVuY3Rpb24odCl7cmV0dXJuIHR9LHU9ZnVuY3Rpb24odCxuKXtyZXR1cm4gbn0sYT1mdW5jdGlvbigpe307cmV0dXJuIGEubWFwcGluZz1mdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPWFyZ3VtZW50cy5sZW5ndGg8PTA/dm9pZCAwOmFyZ3VtZW50c1swXSxhKTpvfSxhLmtleT1mdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PWFyZ3VtZW50cy5sZW5ndGg8PTA/dm9pZCAwOmFyZ3VtZW50c1swXSxhKTp1fSxhLnNlcmllcz1mdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPWFyZ3VtZW50cy5sZW5ndGg8PTA/dm9pZCAwOmFyZ3VtZW50c1swXSxhKTppfSxhLnhTY2FsZT1mdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPWFyZ3VtZW50cy5sZW5ndGg8PTA/dm9pZCAwOmFyZ3VtZW50c1swXSxhKTpufSxhLnlTY2FsZT1mdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPWFyZ3VtZW50cy5sZW5ndGg8PTA/dm9pZCAwOmFyZ3VtZW50c1swXSxhKTpyfSxhLmRlY29yYXRlPWZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9YXJndW1lbnRzLmxlbmd0aDw9MD92b2lkIDA6YXJndW1lbnRzWzBdLGEpOnR9LGF9LERuPWZ1bmN0aW9uKCl7dmFyIHQ9Q24oKSxuPUR0KCJnIiksZT1EdCgiZyIsIm11bHRpIikscj1mdW5jdGlvbihyKXtyLnNlbGVjdGlvbiYmKGUudHJhbnNpdGlvbihyKSxuLnRyYW5zaXRpb24ocikpO3ZhciBpPXQubWFwcGluZygpLG89dC5zZXJpZXMoKSx1PXQueFNjYWxlKCksYz10LnlTY2FsZSgpO3IuZWFjaChmdW5jdGlvbihyLGwsZil7dmFyIGg9ZShhLnNlbGVjdChmW2xdKSxvKTtoLmVhY2goZnVuY3Rpb24odCxlLG8pe3QueFNjYWxlKHUpLnlTY2FsZShjKTt2YXIgbD1pKHIsdCxlKSxmPW4oYS5zZWxlY3Qob1tlXSksW2xdKTtmLmNhbGwodCl9KTt2YXIgcz1oLnNlbGVjdGlvbj9oLnNlbGVjdGlvbigpOmg7cy5vcmRlcigpLHQuZGVjb3JhdGUoKShoLHIsbCl9KX07cmV0dXJuIFQocix0KSx3KHIsZSwia2V5Iikscn0sTm49ZnVuY3Rpb24oKXt2YXIgdD1mdW5jdGlvbih0KXtyZXR1cm4gdC54fSxuPWZ1bmN0aW9uKHQpe3JldHVybiB0Lnl9LHI9ZS5zY2FsZUlkZW50aXR5KCksaT1lLnNjYWxlSWRlbnRpdHkoKSxvPWZ1bmN0aW9uKCl7fSx1PUR0KCJnIiwiYW5ub3RhdGlvbi1jcm9zc2hhaXIiKSxjPV9uKCksbD14bigpLGY9eG4oKS5vcmllbnQoInZlcnRpY2FsIiksaD1lLnNjYWxlSWRlbnRpdHkoKSxzPWUuc2NhbGVJZGVudGl0eSgpLGQ9RG4oKS5zZXJpZXMoW2wsZixjXSkueFNjYWxlKGgpLnlTY2FsZShzKS5tYXBwaW5nKGZ1bmN0aW9uKHQpe3JldHVyblt0XX0pLGc9ZnVuY3Rpb24oZSl7ZS5zZWxlY3Rpb24mJnUudHJhbnNpdGlvbihlKSxlLmVhY2goZnVuY3Rpb24oZSxnLHYpe3ZhciBwPXUoYS5zZWxlY3QodltnXSksZSk7cC5lbnRlcigpLnN0eWxlKCJwb2ludGVyLWV2ZW50cyIsIm5vbmUiKSxoLnJhbmdlKHIucmFuZ2UoKSkscy5yYW5nZShpLnJhbmdlKCkpLGMuY3Jvc3NWYWx1ZSh0KS5tYWluVmFsdWUobiksbC52YWx1ZShuKSxmLnZhbHVlKHQpLHAuY2FsbChkKSxvKHAsZSxnKX0pfTtnLng9ZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1hcmd1bWVudHMubGVuZ3RoPD0wP3ZvaWQgMDphcmd1bWVudHNbMF0sZyk6dH0sZy55PWZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49YXJndW1lbnRzLmxlbmd0aDw9MD92b2lkIDA6YXJndW1lbnRzWzBdLGcpOm59LGcueFNjYWxlPWZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9YXJndW1lbnRzLmxlbmd0aDw9MD92b2lkIDA6YXJndW1lbnRzWzBdLGcpOnJ9LGcueVNjYWxlPWZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9YXJndW1lbnRzLmxlbmd0aDw9MD92b2lkIDA6YXJndW1lbnRzWzBdLGcpOml9LGcuZGVjb3JhdGU9ZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz1hcmd1bWVudHMubGVuZ3RoPD0wP3ZvaWQgMDphcmd1bWVudHNbMF0sZyk6b307dmFyIHY9TSgibGFiZWwiKTtyZXR1cm4gVChnLGwsdixBKCJ5IikpLFQoZyxmLHYsQSgieCIpKSxnfSxJbj1mdW5jdGlvbigpe3ZhciB0PWUuc2NhbGVJZGVudGl0eSgpLG49MTAscj1udWxsLGk9ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbCE9cj9yOnQudGlja3M/dC50aWNrcyhuKTp0LmRvbWFpbigpfTtyZXR1cm4gaS5zY2FsZT1mdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PWFyZ3VtZW50cy5sZW5ndGg8PTA/dm9pZCAwOmFyZ3VtZW50c1swXSxpKTp0fSxpLnRpY2tzPWZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49YXJndW1lbnRzLmxlbmd0aDw9MD92b2lkIDA6YXJndW1lbnRzWzBdLGkpOm59LGkudGlja1ZhbHVlcz1mdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPWFyZ3VtZW50cy5sZW5ndGg8PTA/dm9pZCAwOmFyZ3VtZW50c1swXSxpKTpyfSxpfSxWbj1mdW5jdGlvbih0KXtyZXR1cm4gdH0sUG49ZnVuY3Rpb24oKXt2YXIgdD1mdW5jdGlvbigpe30sbj1mdW5jdGlvbigpe30sZT1JbigpLHI9SW4oKSxpPUR0KCJsaW5lIiwiZ3JpZGxpbmUteSIpLmtleShWbiksbz1EdCgibGluZSIsImdyaWRsaW5lLXgiKS5rZXkoVm4pLHU9ZnVuY3Rpb24odSl7dS5zZWxlY3Rpb24mJihpLnRyYW5zaXRpb24odSksby50cmFuc2l0aW9uKHUpKSx1LmVhY2goZnVuY3Rpb24odSxjLGwpe3ZhciBmPWxbY10saD1hLnNlbGVjdChsW2NdKSxzPWUuc2NhbGUoKSxkPXIuc2NhbGUoKSxnPWYuX194X3NjYWxlX198fHM7Zi5fX3hfc2NhbGVfXz1zLmNvcHkoKTt2YXIgdj1lKCkscD1pKGgsdik7cC5hdHRyKCJ4MSIscykuYXR0cigieDIiLHMpLmF0dHIoInkxIixkLnJhbmdlKClbMF0pLmF0dHIoInkyIixkLnJhbmdlKClbMV0pLmF0dHIoInN0cm9rZSIsIiNiYmIiKSxwLmVudGVyKCkuYXR0cigieDEiLGcpLmF0dHIoIngyIixnKS5hdHRyKCJ5MSIsZC5yYW5nZSgpWzBdKS5hdHRyKCJ5MiIsZC5yYW5nZSgpWzFdKSxwLmV4aXQoKS5hdHRyKCJ4MSIscykuYXR0cigieDIiLHMpLHQocCx2LGMpO3ZhciBtPWYuX195X3NjYWxlX198fGQ7Zi5fX3lfc2NhbGVfXz1kLmNvcHkoKTt2YXIgeT1yKCksYj1vKGgseSk7Yi5hdHRyKCJ5MSIsZCkuYXR0cigieTIiLGQpLmF0dHIoIngxIixzLnJhbmdlKClbMF0pLmF0dHIoIngyIixzLnJhbmdlKClbMV0pLmF0dHIoInN0cm9rZSIsIiNiYmIiKSxiLmVudGVyKCkuYXR0cigieTEiLG0pLmF0dHIoInkyIixtKS5hdHRyKCJ4MSIscy5yYW5nZSgpWzBdKS5hdHRyKCJ4MiIscy5yYW5nZSgpWzFdKSxiLmV4aXQoKS5hdHRyKCJ5MSIsZCkuYXR0cigieTIiLGQpLG4oYix5LGMpfSl9O3JldHVybiB1LnlEZWNvcmF0ZT1mdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPWFyZ3VtZW50cy5sZW5ndGg8PTA/dm9pZCAwOmFyZ3VtZW50c1swXSx1KTpufSx1LnhEZWNvcmF0ZT1mdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PWFyZ3VtZW50cy5sZW5ndGg8PTA/dm9pZCAwOmFyZ3VtZW50c1swXSx1KTp0fSxUKHUsaSxrKHtrZXk6InhLZXkifSkpLFQodSxvLGsoe2tleToieUtleSJ9KSksVCh1LGUsQSgieCIpKSxUKHUscixBKCJ5IikpLHV9LHpuPWZ1bmN0aW9uKHQpe3JldHVybiB0fSxSbj1mdW5jdGlvbiB0KG4sZSl7dmFyIHI9WzEwXSxpPW51bGwsbz1mdW5jdGlvbigpe30sdT1udWxsLGw9NixmPTYsaD0zLHM9Yy5saW5lKCksZD1EdCgiZyIsInRpY2siKS5rZXkoem4pLGc9RHQoInBhdGgiLCJkb21haW4iKSx2PWZ1bmN0aW9uKHQsbil7dmFyIGU9MDtyZXR1cm4gdC5iYW5kd2lkdGgmJihlPXQuYmFuZHdpZHRoKCkvMix0LnJvdW5kKCkmJihlPU1hdGgucm91bmQoZSkpKSxmdW5jdGlvbihyKXtyZXR1cm4gbih0KHIpK2UsMCl9fSxwPWZ1bmN0aW9uKHQsbil7cmV0dXJuIHkoKT8idHJhbnNsYXRlKCIrbisiLCAiK3QrIikiOiJ0cmFuc2xhdGUoIit0KyIsICIrbisiKSJ9LG09ZnVuY3Rpb24odCl7cmV0dXJuIHkoKT90Lm1hcChmdW5jdGlvbih0KXtyZXR1cm5bdFsxXSx0WzBdXX0pOnR9LHk9ZnVuY3Rpb24oKXtyZXR1cm4ibGVmdCI9PT1ufHwicmlnaHQiPT09bn0sYj1mdW5jdGlvbih0LG4scil7cmV0dXJuIGVbdF0/ZVt0XS5hcHBseShlLG4pOnJ9LHQ9ZnVuY3Rpb24odCl7dC5zZWxlY3Rpb24mJihkLnRyYW5zaXRpb24odCksZy50cmFuc2l0aW9uKHQpKSx0LmVhY2goZnVuY3Rpb24odCxjLHcpe3ZhciB4PXdbY10sVD1hLnNlbGVjdCh4KTt4Ll9fc2NhbGVfX3x8VC5hdHRyKCJmaWxsIiwibm9uZSIpLmF0dHIoImZvbnQtc2l6ZSIsMTApLmF0dHIoImZvbnQtZmFtaWx5Iiwic2Fucy1zZXJpZiIpLmF0dHIoInRleHQtYW5jaG9yIiwicmlnaHQiPT09bj8ic3RhcnQiOiJsZWZ0Ij09PW4/ImVuZCI6Im1pZGRsZSIpO3ZhciBFPXguX19zY2FsZV9ffHxlOw0KeC5fX3NjYWxlX189ZS5jb3B5KCk7dmFyIFM9bnVsbD09aT9iKCJ0aWNrcyIscixlLmRvbWFpbigpKTppLE09bnVsbD09dT9iKCJ0aWNrRm9ybWF0IixyLHpuKTp1LGs9ImJvdHRvbSI9PT1ufHwicmlnaHQiPT09bj8xOi0xLEw9ZS5yYW5nZSgpLEE9bShbW0xbMF0saypsXSxbTFswXSwwXSxbTFsxXSwwXSxbTFsxXSxrKmxdXSksSD1nKFQsW3RdKTtILmF0dHIoImQiLHMoQSkpLmF0dHIoInN0cm9rZSIsIiMwMDAiKTt2YXIgTz1kKFQsUyk7Ty5lbnRlcigpLmF0dHIoInRyYW5zZm9ybSIsdihFLHApKS5hcHBlbmQoInBhdGgiKS5hdHRyKCJzdHJva2UiLCIjMDAwIik7dmFyIF89ayooZitoKTtPLmVudGVyKCkuYXBwZW5kKCJ0ZXh0IikuYXR0cigidHJhbnNmb3JtIixwKDAsXykpLmF0dHIoImZpbGwiLCIjMDAwIiksTy5leGl0KCkuYXR0cigidHJhbnNmb3JtIix2KGUscCkpLE8uc2VsZWN0KCJwYXRoIikuYXR0cigiZCIsZnVuY3Rpb24odCl7cmV0dXJuIHMobShbWzAsMF0sWzAsaypmXV0pKX0pLE8uc2VsZWN0KCJ0ZXh0IikuYXR0cigidHJhbnNmb3JtIixwKDAsXykpLmF0dHIoImR5IixmdW5jdGlvbigpe3ZhciB0PSIwZW0iO3JldHVybiB5KCk/dD0iMC4zMmVtIjoiYm90dG9tIj09PW4mJih0PSIwLjcxZW0iKSx0fSkudGV4dChNKSxPLmF0dHIoInRyYW5zZm9ybSIsdihlLHApKSxvKE8sdCxjKX0pfTtyZXR1cm4gdC50aWNrRm9ybWF0PWZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHU9YXJndW1lbnRzLmxlbmd0aDw9MD92b2lkIDA6YXJndW1lbnRzWzBdLHQpOnV9LHQudGlja1NpemU9ZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZj1sPU51bWJlcihhcmd1bWVudHMubGVuZ3RoPD0wP3ZvaWQgMDphcmd1bWVudHNbMF0pLHQpOmZ9LHQudGlja1NpemVJbm5lcj1mdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhmPU51bWJlcihhcmd1bWVudHMubGVuZ3RoPD0wP3ZvaWQgMDphcmd1bWVudHNbMF0pLHQpOmZ9LHQudGlja1NpemVPdXRlcj1mdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhsPU51bWJlcihhcmd1bWVudHMubGVuZ3RoPD0wP3ZvaWQgMDphcmd1bWVudHNbMF0pLHQpOmx9LHQudGlja1BhZGRpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaD1hcmd1bWVudHMubGVuZ3RoPD0wP3ZvaWQgMDphcmd1bWVudHNbMF0sdCk6aH0sdC5kZWNvcmF0ZT1mdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPWFyZ3VtZW50cy5sZW5ndGg8PTA/dm9pZCAwOmFyZ3VtZW50c1swXSx0KTpvfSx0LnNjYWxlPWZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9YXJndW1lbnRzLmxlbmd0aDw9MD92b2lkIDA6YXJndW1lbnRzWzBdLHQpOmV9LHQudGlja3M9ZnVuY3Rpb24oKXtmb3IodmFyIG49YXJndW1lbnRzLmxlbmd0aCxlPUFycmF5KG4pLGk9MDtpPG47aSsrKWVbaV09YXJndW1lbnRzW2ldO3JldHVybiByPVtdLmNvbmNhdChlKSx0fSx0LnRpY2tBcmd1bWVudHM9ZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj1udWxsPT0oYXJndW1lbnRzLmxlbmd0aDw9MD92b2lkIDA6YXJndW1lbnRzWzBdKT9bXTpbXS5jb25jYXQoUihhcmd1bWVudHMubGVuZ3RoPD0wP3ZvaWQgMDphcmd1bWVudHNbMF0pKSx0KTpyLnNsaWNlKCl9LHQudGlja1ZhbHVlcz1mdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPW51bGw9PShhcmd1bWVudHMubGVuZ3RoPD0wP3ZvaWQgMDphcmd1bWVudHNbMF0pP1tdOltdLmNvbmNhdChSKGFyZ3VtZW50cy5sZW5ndGg8PTA/dm9pZCAwOmFyZ3VtZW50c1swXSkpLHQpOmkuc2xpY2UoKX0sdH0sRm49ZnVuY3Rpb24odCl7cmV0dXJuIFJuKCJ0b3AiLHQpfSxVbj1mdW5jdGlvbih0KXtyZXR1cm4gUm4oImJvdHRvbSIsdCl9LEJuPWZ1bmN0aW9uKHQpe3JldHVybiBSbigibGVmdCIsdCl9LHFuPWZ1bmN0aW9uKHQpe3JldHVybiBSbigicmlnaHQiLHQpfTshZnVuY3Rpb24odCxuKXtmdW5jdGlvbiBlKCl7dmFyIHQ9ay5zcGxpY2UoMCxrLmxlbmd0aCk7Zm9yKFh0PTA7dC5sZW5ndGg7KXQuc2hpZnQoKS5jYWxsKG51bGwsdC5zaGlmdCgpKX1mdW5jdGlvbiByKHQsbil7Zm9yKHZhciBlPTAscj10Lmxlbmd0aDtlPHI7ZSsrKXYodFtlXSxuKX1mdW5jdGlvbiBpKHQpe2Zvcih2YXIgbixlPTAscj10Lmxlbmd0aDtlPHI7ZSsrKW49dFtlXSxEKG4saXRbdShuKV0pfWZ1bmN0aW9uIG8odCl7cmV0dXJuIGZ1bmN0aW9uKG4pe1Z0KG4pJiYodihuLHQpLG90Lmxlbmd0aCYmcihuLnF1ZXJ5U2VsZWN0b3JBbGwob3QpLHQpKX19ZnVuY3Rpb24gdSh0KXt2YXIgbj1VdC5jYWxsKHQsImlzIiksZT10Lm5vZGVOYW1lLnRvVXBwZXJDYXNlKCkscj1hdC5jYWxsKHJ0LG4/dHQrbi50b1VwcGVyQ2FzZSgpOkorZSk7cmV0dXJuIG4mJi0xPHImJiFhKGUsbik/LTE6cn1mdW5jdGlvbiBhKHQsbil7cmV0dXJuLTE8b3QuaW5kZXhPZih0KydbaXM9IicrbisnIl0nKX1mdW5jdGlvbiBjKHQpe3ZhciBuPXQuY3VycmVudFRhcmdldCxlPXQuYXR0ckNoYW5nZSxyPXQuYXR0ck5hbWUsaT10LnRhcmdldCxvPXRbR118fDIsdT10W1hdfHwzO25uJiYoIWl8fGk9PT1uKSYmbltVXSYmInN0eWxlIiE9PXImJih0LnByZXZWYWx1ZSE9PXQubmV3VmFsdWV8fCIiPT09dC5uZXdWYWx1ZSYmKGU9PT1vfHxlPT09dSkpJiZuW1VdKHIsZT09PW8/bnVsbDp0LnByZXZWYWx1ZSxlPT09dT9udWxsOnQubmV3VmFsdWUpfWZ1bmN0aW9uIGwodCl7dmFyIG49byh0KTtyZXR1cm4gZnVuY3Rpb24odCl7ay5wdXNoKG4sdC50YXJnZXQpLFh0JiZjbGVhclRpbWVvdXQoWHQpLFh0PXNldFRpbWVvdXQoZSwxKX19ZnVuY3Rpb24gZih0KXt0biYmKHRuPSExLHQuY3VycmVudFRhcmdldC5yZW1vdmVFdmVudExpc3RlbmVyKEssZikpLG90Lmxlbmd0aCYmcigodC50YXJnZXR8fEUpLnF1ZXJ5U2VsZWN0b3JBbGwob3QpLHQuZGV0YWlsPT09Uj9SOlApLE50JiZkKCl9ZnVuY3Rpb24gaCh0LG4pe3ZhciBlPXRoaXM7V3QuY2FsbChlLHQsbiksTC5jYWxsKGUse3RhcmdldDplfSl9ZnVuY3Rpb24gcyh0LG4pe190KHQsbiksTz9PLm9ic2VydmUodCxHdCk6KEp0JiYodC5zZXRBdHRyaWJ1dGU9aCx0W0ldPUgodCksdFtWXSgkLEwpKSx0W1ZdKFosYykpLHRbal0mJm5uJiYodC5jcmVhdGVkPSEwLHRbal0oKSx0LmNyZWF0ZWQ9ITEpfWZ1bmN0aW9uIGQoKXtmb3IodmFyIHQsbj0wLGU9UHQubGVuZ3RoO248ZTtuKyspdD1QdFtuXSx1dC5jb250YWlucyh0KXx8KGUtLSxQdC5zcGxpY2Uobi0tLDEpLHYodCxSKSl9ZnVuY3Rpb24gZyh0KXt0aHJvdyBuZXcgRXJyb3IoIkEgIit0KyIgdHlwZSBpcyBhbHJlYWR5IHJlZ2lzdGVyZWQiKX1mdW5jdGlvbiB2KHQsbil7dmFyIGUscj11KHQpOy0xPHImJihDKHQsaXRbcl0pLHI9MCxuIT09UHx8dFtQXT9uPT09UiYmIXRbUl0mJih0W1BdPSExLHRbUl09ITAscj0xKToodFtSXT0hMSx0W1BdPSEwLHI9MSxOdCYmYXQuY2FsbChQdCx0KTwwJiZQdC5wdXNoKHQpKSxyJiYoZT10W24rel0pJiZlLmNhbGwodCkpfWZ1bmN0aW9uIHAoKXt9ZnVuY3Rpb24gbSh0LG4sZSl7dmFyIHI9ZSYmZVtGXXx8IiIsaT1uLnByb3RvdHlwZSxvPU90KGkpLHU9bi5vYnNlcnZlZEF0dHJpYnV0ZXN8fHN0LGE9e3Byb3RvdHlwZTpvfTtJdChvLGose3ZhbHVlOmZ1bmN0aW9uKCl7aWYoTXQpTXQ9ITE7ZWxzZSBpZighdGhpc1tidF0pe3RoaXNbYnRdPSEwLG5ldyBuKHRoaXMpLGlbal0mJmlbal0uY2FsbCh0aGlzKTt2YXIgdD1rdFtBdC5nZXQobildOygheHR8fHQuY3JlYXRlLmxlbmd0aD4xKSYmdyh0aGlzKX19fSksSXQobyxVLHt2YWx1ZTpmdW5jdGlvbih0KXstMTxhdC5jYWxsKHUsdCkmJmlbVV0uYXBwbHkodGhpcyxhcmd1bWVudHMpfX0pLGlbcV0mJkl0KG8sQix7dmFsdWU6aVtxXX0pLGlbV10mJkl0KG8sUSx7dmFsdWU6aVtXXX0pLHImJihhW0ZdPXIpLHQ9dC50b1VwcGVyQ2FzZSgpLGt0W3RdPXtjb25zdHJ1Y3RvcjpuLGNyZWF0ZTpyP1tyLEh0KHQpXTpbdF19LEF0LnNldChuLHQpLEVbTl0odC50b0xvd2VyQ2FzZSgpLGEpLHgodCksTHRbdF0ucigpfWZ1bmN0aW9uIHkodCl7dmFyIG49a3RbdC50b1VwcGVyQ2FzZSgpXTtyZXR1cm4gbiYmbi5jb25zdHJ1Y3Rvcn1mdW5jdGlvbiBiKHQpe3JldHVybiJzdHJpbmciPT10eXBlb2YgdD90OnQmJnQuaXN8fCIifWZ1bmN0aW9uIHcodCl7Zm9yKHZhciBuLGU9dFtVXSxyPWU/dC5hdHRyaWJ1dGVzOnN0LGk9ci5sZW5ndGg7aS0tOyluPXJbaV0sZS5jYWxsKHQsbi5uYW1lfHxuLm5vZGVOYW1lLG51bGwsbi52YWx1ZXx8bi5ub2RlVmFsdWUpfWZ1bmN0aW9uIHgodCl7cmV0dXJuIHQ9dC50b1VwcGVyQ2FzZSgpLHQgaW4gTHR8fChMdFt0XT17fSxMdFt0XS5wPW5ldyBTdChmdW5jdGlvbihuKXtMdFt0XS5yPW59KSksTHRbdF0ucH1mdW5jdGlvbiBUKCl7d3QmJmRlbGV0ZSB0LmN1c3RvbUVsZW1lbnRzLGh0KHQsImN1c3RvbUVsZW1lbnRzIix7Y29uZmlndXJhYmxlOiEwLHZhbHVlOm5ldyBwfSksaHQodCwiQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5Iix7Y29uZmlndXJhYmxlOiEwLHZhbHVlOnB9KTtmb3IodmFyIG49ZnVuY3Rpb24obil7dmFyIGU9dFtuXTtpZihlKXt0W25dPWZ1bmN0aW9uKHQpe3ZhciBuLHI7cmV0dXJuIHR8fCh0PXRoaXMpLHRbYnRdfHwoTXQ9ITAsbj1rdFtBdC5nZXQodC5jb25zdHJ1Y3RvcildLHI9eHQmJjE9PT1uLmNyZWF0ZS5sZW5ndGgsdD1yP1JlZmxlY3QuY29uc3RydWN0KGUsc3Qsbi5jb25zdHJ1Y3Rvcik6RS5jcmVhdGVFbGVtZW50LmFwcGx5KEUsbi5jcmVhdGUpLHRbYnRdPSEwLE10PSExLHJ8fHcodCkpLHR9LHRbbl0ucHJvdG90eXBlPWUucHJvdG90eXBlO3RyeXtlLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj10W25dfWNhdGNoKHIpe3l0PSEwLGh0KGUsYnQse3ZhbHVlOnRbbl19KX19fSxlPU0uZ2V0KC9eSFRNTFtBLVpdKlthLXpdLykscj1lLmxlbmd0aDtyLS07bihlW3JdKSk7RS5jcmVhdGVFbGVtZW50PWZ1bmN0aW9uKHQsbil7dmFyIGU9YihuKTtyZXR1cm4gZT9RdC5jYWxsKHRoaXMsdCxIdChlKSk6UXQuY2FsbCh0aGlzLHQpfSxadHx8KCR0PSEwLEVbTl0oIiIpKX12YXIgRT10LmRvY3VtZW50LFM9dC5PYmplY3QsTT1mdW5jdGlvbih0KXt2YXIgbixlLHIsaSxvPS9eW0EtWl0rW2Etel0vLHU9ZnVuY3Rpb24gdChuKXt2YXIgdCxlPVtdO2Zvcih0IGluIGMpbi50ZXN0KHQpJiZlLnB1c2godCk7cmV0dXJuIGV9LGE9ZnVuY3Rpb24odCxuKXtuPW4udG9Mb3dlckNhc2UoKSxuIGluIGN8fChjW3RdPShjW3RdfHxbXSkuY29uY2F0KG4pLGNbbl09Y1tuLnRvVXBwZXJDYXNlKCldPXQpfSxjPShTLmNyZWF0ZXx8UykobnVsbCksbD17fTtmb3IoZSBpbiB0KWZvcihpIGluIHRbZV0pZm9yKHI9dFtlXVtpXSxjW2ldPXIsbj0wO248ci5sZW5ndGg7bisrKWNbcltuXS50b0xvd2VyQ2FzZSgpXT1jW3Jbbl0udG9VcHBlckNhc2UoKV09aTtyZXR1cm4gbC5nZXQ9ZnVuY3Rpb24odCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0P2NbdF18fChvLnRlc3QodCk/W106IiIpOnUodCl9LGwuc2V0PWZ1bmN0aW9uKHQsbil7cmV0dXJuIG8udGVzdCh0KT9hKHQsbik6YShuLHQpLGx9LGx9KHtjb2xsZWN0aW9uczp7SFRNTEFsbENvbGxlY3Rpb246WyJhbGwiXSxIVE1MQ29sbGVjdGlvbjpbImZvcm1zIl0sSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246WyJlbGVtZW50cyJdLEhUTUxPcHRpb25zQ29sbGVjdGlvbjpbIm9wdGlvbnMiXX0sZWxlbWVudHM6e0VsZW1lbnQ6WyJlbGVtZW50Il0sSFRNTEFuY2hvckVsZW1lbnQ6WyJhIl0sSFRNTEFwcGxldEVsZW1lbnQ6WyJhcHBsZXQiXSxIVE1MQXJlYUVsZW1lbnQ6WyJhcmVhIl0sSFRNTEF0dGFjaG1lbnRFbGVtZW50OlsiYXR0YWNobWVudCJdLEhUTUxBdWRpb0VsZW1lbnQ6WyJhdWRpbyJdLEhUTUxCUkVsZW1lbnQ6WyJiciJdLEhUTUxCYXNlRWxlbWVudDpbImJhc2UiXSxIVE1MQm9keUVsZW1lbnQ6WyJib2R5Il0sSFRNTEJ1dHRvbkVsZW1lbnQ6WyJidXR0b24iXSxIVE1MQ2FudmFzRWxlbWVudDpbImNhbnZhcyJdLEhUTUxDb250ZW50RWxlbWVudDpbImNvbnRlbnQiXSxIVE1MRExpc3RFbGVtZW50OlsiZGwiXSxIVE1MRGF0YUVsZW1lbnQ6WyJkYXRhIl0sSFRNTERhdGFMaXN0RWxlbWVudDpbImRhdGFsaXN0Il0sSFRNTERldGFpbHNFbGVtZW50OlsiZGV0YWlscyJdLEhUTUxEaWFsb2dFbGVtZW50OlsiZGlhbG9nIl0sSFRNTERpcmVjdG9yeUVsZW1lbnQ6WyJkaXIiXSxIVE1MRGl2RWxlbWVudDpbImRpdiJdLEhUTUxEb2N1bWVudDpbImRvY3VtZW50Il0sSFRNTEVsZW1lbnQ6WyJlbGVtZW50IiwiYWJiciIsImFkZHJlc3MiLCJhcnRpY2xlIiwiYXNpZGUiLCJiIiwiYmRpIiwiYmRvIiwiY2l0ZSIsImNvZGUiLCJjb21tYW5kIiwiZGQiLCJkZm4iLCJkdCIsImVtIiwiZmlnY2FwdGlvbiIsImZpZ3VyZSIsImZvb3RlciIsImhlYWRlciIsImkiLCJrYmQiLCJtYXJrIiwibmF2Iiwibm9zY3JpcHQiLCJycCIsInJ0IiwicnVieSIsInMiLCJzYW1wIiwic2VjdGlvbiIsInNtYWxsIiwic3Ryb25nIiwic3ViIiwic3VtbWFyeSIsInN1cCIsInUiLCJ2YXIiLCJ3YnIiXSxIVE1MRW1iZWRFbGVtZW50OlsiZW1iZWQiXSxIVE1MRmllbGRTZXRFbGVtZW50OlsiZmllbGRzZXQiXSxIVE1MRm9udEVsZW1lbnQ6WyJmb250Il0sSFRNTEZvcm1FbGVtZW50OlsiZm9ybSJdLEhUTUxGcmFtZUVsZW1lbnQ6WyJmcmFtZSJdLEhUTUxGcmFtZVNldEVsZW1lbnQ6WyJmcmFtZXNldCJdLEhUTUxIUkVsZW1lbnQ6WyJociJdLEhUTUxIZWFkRWxlbWVudDpbImhlYWQiXSxIVE1MSGVhZGluZ0VsZW1lbnQ6WyJoMSIsImgyIiwiaDMiLCJoNCIsImg1IiwiaDYiXSxIVE1MSHRtbEVsZW1lbnQ6WyJodG1sIl0sSFRNTElGcmFtZUVsZW1lbnQ6WyJpZnJhbWUiXSxIVE1MSW1hZ2VFbGVtZW50OlsiaW1nIl0sSFRNTElucHV0RWxlbWVudDpbImlucHV0Il0sSFRNTEtleWdlbkVsZW1lbnQ6WyJrZXlnZW4iXSxIVE1MTElFbGVtZW50OlsibGkiXSxIVE1MTGFiZWxFbGVtZW50OlsibGFiZWwiXSxIVE1MTGVnZW5kRWxlbWVudDpbImxlZ2VuZCJdLEhUTUxMaW5rRWxlbWVudDpbImxpbmsiXSxIVE1MTWFwRWxlbWVudDpbIm1hcCJdLEhUTUxNYXJxdWVlRWxlbWVudDpbIm1hcnF1ZWUiXSxIVE1MTWVkaWFFbGVtZW50OlsibWVkaWEiXSxIVE1MTWVudUVsZW1lbnQ6WyJtZW51Il0sSFRNTE1lbnVJdGVtRWxlbWVudDpbIm1lbnVpdGVtIl0sSFRNTE1ldGFFbGVtZW50OlsibWV0YSJdLEhUTUxNZXRlckVsZW1lbnQ6WyJtZXRlciJdLEhUTUxNb2RFbGVtZW50OlsiZGVsIiwiaW5zIl0sSFRNTE9MaXN0RWxlbWVudDpbIm9sIl0sSFRNTE9iamVjdEVsZW1lbnQ6WyJvYmplY3QiXSxIVE1MT3B0R3JvdXBFbGVtZW50Olsib3B0Z3JvdXAiXSxIVE1MT3B0aW9uRWxlbWVudDpbIm9wdGlvbiJdLEhUTUxPdXRwdXRFbGVtZW50Olsib3V0cHV0Il0sSFRNTFBhcmFncmFwaEVsZW1lbnQ6WyJwIl0sSFRNTFBhcmFtRWxlbWVudDpbInBhcmFtIl0sSFRNTFBpY3R1cmVFbGVtZW50OlsicGljdHVyZSJdLEhUTUxQcmVFbGVtZW50OlsicHJlIl0sSFRNTFByb2dyZXNzRWxlbWVudDpbInByb2dyZXNzIl0sSFRNTFF1b3RlRWxlbWVudDpbImJsb2NrcXVvdGUiLCJxIiwicXVvdGUiXSxIVE1MU2NyaXB0RWxlbWVudDpbInNjcmlwdCJdLEhUTUxTZWxlY3RFbGVtZW50Olsic2VsZWN0Il0sSFRNTFNoYWRvd0VsZW1lbnQ6WyJzaGFkb3ciXSxIVE1MU2xvdEVsZW1lbnQ6WyJzbG90Il0sSFRNTFNvdXJjZUVsZW1lbnQ6WyJzb3VyY2UiXSxIVE1MU3BhbkVsZW1lbnQ6WyJzcGFuIl0sSFRNTFN0eWxlRWxlbWVudDpbInN0eWxlIl0sSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQ6WyJjYXB0aW9uIl0sSFRNTFRhYmxlQ2VsbEVsZW1lbnQ6WyJ0ZCIsInRoIl0sSFRNTFRhYmxlQ29sRWxlbWVudDpbImNvbCIsImNvbGdyb3VwIl0sSFRNTFRhYmxlRWxlbWVudDpbInRhYmxlIl0sSFRNTFRhYmxlUm93RWxlbWVudDpbInRyIl0sSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQ6WyJ0aGVhZCIsInRib2R5IiwidGZvb3QiXSxIVE1MVGVtcGxhdGVFbGVtZW50OlsidGVtcGxhdGUiXSxIVE1MVGV4dEFyZWFFbGVtZW50OlsidGV4dGFyZWEiXSxIVE1MVGltZUVsZW1lbnQ6WyJ0aW1lIl0sSFRNTFRpdGxlRWxlbWVudDpbInRpdGxlIl0sSFRNTFRyYWNrRWxlbWVudDpbInRyYWNrIl0sSFRNTFVMaXN0RWxlbWVudDpbInVsIl0sSFRNTFVua25vd25FbGVtZW50OlsidW5rbm93biIsInZoZ3JvdXB2IiwidmtleWdlbiJdLEhUTUxWaWRlb0VsZW1lbnQ6WyJ2aWRlbyJdfSxub2Rlczp7QXR0cjpbIm5vZGUiXSxBdWRpbzpbImF1ZGlvIl0sQ0RBVEFTZWN0aW9uOlsibm9kZSJdLENoYXJhY3RlckRhdGE6WyJub2RlIl0sQ29tbWVudDpbIiNjb21tZW50Il0sRG9jdW1lbnQ6WyIjZG9jdW1lbnQiXSxEb2N1bWVudEZyYWdtZW50OlsiI2RvY3VtZW50LWZyYWdtZW50Il0sRG9jdW1lbnRUeXBlOlsibm9kZSJdLEhUTUxEb2N1bWVudDpbIiNkb2N1bWVudCJdLEltYWdlOlsiaW1nIl0sT3B0aW9uOlsib3B0aW9uIl0sUHJvY2Vzc2luZ0luc3RydWN0aW9uOlsibm9kZSJdLFNoYWRvd1Jvb3Q6WyIjc2hhZG93LXJvb3QiXSxUZXh0OlsiI3RleHQiXSxYTUxEb2N1bWVudDpbInhtbCJdfX0pO258fChuPSJhdXRvIik7dmFyIGssTCxBLEgsTyxfLEMsRCxOPSJyZWdpc3RlckVsZW1lbnQiLEk9Il9fIitOKygxZTUqdC5NYXRoLnJhbmRvbSgpPj4wKSxWPSJhZGRFdmVudExpc3RlbmVyIixQPSJhdHRhY2hlZCIsej0iQ2FsbGJhY2siLFI9ImRldGFjaGVkIixGPSJleHRlbmRzIixVPSJhdHRyaWJ1dGVDaGFuZ2VkIit6LEI9UCt6LHE9ImNvbm5lY3RlZCIreixXPSJkaXNjb25uZWN0ZWQiK3osaj0iY3JlYXRlZCIreixRPVIreixHPSJBRERJVElPTiIsWT0iTU9ESUZJQ0FUSU9OIixYPSJSRU1PVkFMIixaPSJET01BdHRyTW9kaWZpZWQiLEs9IkRPTUNvbnRlbnRMb2FkZWQiLCQ9IkRPTVN1YnRyZWVNb2RpZmllZCIsSj0iPCIsdHQ9Ij0iLG50PS9eW0EtWl1bQS1aMC05XSooPzotW0EtWjAtOV0rKSskLyxldD1bIkFOTk9UQVRJT04tWE1MIiwiQ09MT1ItUFJPRklMRSIsIkZPTlQtRkFDRSIsIkZPTlQtRkFDRS1TUkMiLCJGT05ULUZBQ0UtVVJJIiwiRk9OVC1GQUNFLUZPUk1BVCIsIkZPTlQtRkFDRS1OQU1FIiwiTUlTU0lORy1HTFlQSCJdLHJ0PVtdLGl0PVtdLG90PSIiLHV0PUUuZG9jdW1lbnRFbGVtZW50LGF0PXJ0LmluZGV4T2Z8fGZ1bmN0aW9uKHQpe2Zvcih2YXIgbj10aGlzLmxlbmd0aDtuLS0mJnRoaXNbbl0hPT10Oyk7cmV0dXJuIG59LGN0PVMucHJvdG90eXBlLGx0PWN0Lmhhc093blByb3BlcnR5LGZ0PWN0LmlzUHJvdG90eXBlT2YsaHQ9Uy5kZWZpbmVQcm9wZXJ0eSxzdD1bXSxkdD1TLmdldE93blByb3BlcnR5RGVzY3JpcHRvcixndD1TLmdldE93blByb3BlcnR5TmFtZXMsdnQ9Uy5nZXRQcm90b3R5cGVPZixwdD1TLnNldFByb3RvdHlwZU9mLG10PSEhUy5fX3Byb3RvX18seXQ9ITEsYnQ9Il9fZHJlQ0V2MSIsd3Q9dC5jdXN0b21FbGVtZW50cyx4dD0iZm9yY2UiIT09biYmISEod3QmJnd0LmRlZmluZSYmd3QuZ2V0JiZ3dC53aGVuRGVmaW5lZCksVHQ9Uy5jcmVhdGV8fFMsRXQ9dC5NYXB8fGZ1bmN0aW9uKCl7dmFyIHQsbj1bXSxlPVtdO3JldHVybntnZXQ6ZnVuY3Rpb24odCl7cmV0dXJuIGVbYXQuY2FsbChuLHQpXX0sc2V0OmZ1bmN0aW9uKHIsaSl7dD1hdC5jYWxsKG4sciksdDwwP2Vbbi5wdXNoKHIpLTFdPWk6ZVt0XT1pfX19LFN0PXQuUHJvbWlzZXx8ZnVuY3Rpb24odCl7ZnVuY3Rpb24gbih0KXtmb3Iocj0hMDtlLmxlbmd0aDspZS5zaGlmdCgpKHQpfXZhciBlPVtdLHI9ITEsaT17Y2F0Y2g6ZnVuY3Rpb24oKXtyZXR1cm4gaX0sdGhlbjpmdW5jdGlvbih0KXtyZXR1cm4gZS5wdXNoKHQpLHImJnNldFRpbWVvdXQobiwxKSxpfX07cmV0dXJuIHQobiksaX0sTXQ9ITEsa3Q9VHQobnVsbCksTHQ9VHQobnVsbCksQXQ9bmV3IEV0LEh0PVN0cmluZyxPdD1TLmNyZWF0ZXx8ZnVuY3Rpb24gdChuKXtyZXR1cm4gbj8odC5wcm90b3R5cGU9bixuZXcgdCk6dGhpc30sX3Q9cHR8fChtdD9mdW5jdGlvbih0LG4pe3JldHVybiB0Ll9fcHJvdG9fXz1uLHR9Omd0JiZkdD9mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxuKXtmb3IodmFyIGUscj1ndChuKSxpPTAsbz1yLmxlbmd0aDtpPG87aSsrKWU9cltpXSxsdC5jYWxsKHQsZSl8fGh0KHQsZSxkdChuLGUpKX1yZXR1cm4gZnVuY3Rpb24obixlKXtkbyB0KG4sZSk7d2hpbGUoKGU9dnQoZSkpJiYhZnQuY2FsbChlLG4pKTtyZXR1cm4gbn19KCk6ZnVuY3Rpb24odCxuKXtmb3IodmFyIGUgaW4gbil0W2VdPW5bZV07cmV0dXJuIHR9KSxDdD10Lk11dGF0aW9uT2JzZXJ2ZXJ8fHQuV2ViS2l0TXV0YXRpb25PYnNlcnZlcixEdD0odC5IVE1MRWxlbWVudHx8dC5FbGVtZW50fHx0Lk5vZGUpLnByb3RvdHlwZSxOdD0hZnQuY2FsbChEdCx1dCksSXQ9TnQ/ZnVuY3Rpb24odCxuLGUpe3JldHVybiB0W25dPWUudmFsdWUsdH06aHQsVnQ9TnQ/ZnVuY3Rpb24odCl7cmV0dXJuIDE9PT10Lm5vZGVUeXBlfTpmdW5jdGlvbih0KXtyZXR1cm4gZnQuY2FsbChEdCx0KX0sUHQ9TnQmJltdLHp0PUR0LmF0dGFjaFNoYWRvdyxSdD1EdC5jbG9uZU5vZGUsRnQ9RHQuZGlzcGF0Y2hFdmVudCxVdD1EdC5nZXRBdHRyaWJ1dGUsQnQ9RHQuaGFzQXR0cmlidXRlLHF0PUR0LnJlbW92ZUF0dHJpYnV0ZSxXdD1EdC5zZXRBdHRyaWJ1dGUsanQ9RS5jcmVhdGVFbGVtZW50LFF0PWp0LEd0PUN0JiZ7YXR0cmlidXRlczohMCxjaGFyYWN0ZXJEYXRhOiEwLGF0dHJpYnV0ZU9sZFZhbHVlOiEwfSxZdD1DdHx8ZnVuY3Rpb24odCl7SnQ9ITEsdXQucmVtb3ZlRXZlbnRMaXN0ZW5lcihaLFl0KX0sWHQ9MCxadD1OIGluIEUsS3Q9ITAsJHQ9ITEsSnQ9ITAsdG49ITAsbm49ITA7aWYoWnR8fChwdHx8bXQ/KEM9ZnVuY3Rpb24odCxuKXtmdC5jYWxsKG4sdCl8fHModCxuKX0sRD1zKTooQz1mdW5jdGlvbih0LG4pe3RbSV18fCh0W0ldPVMoITApLHModCxuKSl9LEQ9QyksTnQ/KEp0PSExLGZ1bmN0aW9uKCl7dmFyIHQ9ZHQoRHQsViksbj10LnZhbHVlLGU9ZnVuY3Rpb24odCl7dmFyIG49bmV3IEN1c3RvbUV2ZW50KFose2J1YmJsZXM6ITB9KTtuLmF0dHJOYW1lPXQsbi5wcmV2VmFsdWU9VXQuY2FsbCh0aGlzLHQpLG4ubmV3VmFsdWU9bnVsbCxuW1hdPW4uYXR0ckNoYW5nZT0yLHF0LmNhbGwodGhpcyx0KSxGdC5jYWxsKHRoaXMsbil9LHI9ZnVuY3Rpb24gdChuLGUpe3ZhciByPUJ0LmNhbGwodGhpcyxuKSx0PXImJlV0LmNhbGwodGhpcyxuKSxpPW5ldyBDdXN0b21FdmVudChaLHtidWJibGVzOiEwfSk7V3QuY2FsbCh0aGlzLG4sZSksaS5hdHRyTmFtZT1uLGkucHJldlZhbHVlPXI/dDpudWxsLGkubmV3VmFsdWU9ZSxyP2lbWV09aS5hdHRyQ2hhbmdlPTE6aVtHXT1pLmF0dHJDaGFuZ2U9MCxGdC5jYWxsKHRoaXMsaSl9LGk9ZnVuY3Rpb24gdChuKXt2YXIgdCxlPW4uY3VycmVudFRhcmdldCxyPWVbSV0saT1uLnByb3BlcnR5TmFtZTtyLmhhc093blByb3BlcnR5KGkpJiYocj1yW2ldLHQ9bmV3IEN1c3RvbUV2ZW50KFose2J1YmJsZXM6ITB9KSx0LmF0dHJOYW1lPXIubmFtZSx0LnByZXZWYWx1ZT1yLnZhbHVlfHxudWxsLHQubmV3VmFsdWU9ci52YWx1ZT1lW2ldfHxudWxsLG51bGw9PXQucHJldlZhbHVlP3RbR109dC5hdHRyQ2hhbmdlPTA6dFtZXT10LmF0dHJDaGFuZ2U9MSxGdC5jYWxsKGUsdCkpfTt0LnZhbHVlPWZ1bmN0aW9uKHQsbyx1KXt0PT09WiYmdGhpc1tVXSYmdGhpcy5zZXRBdHRyaWJ1dGUhPT1yJiYodGhpc1tJXT17Y2xhc3NOYW1lOntuYW1lOiJjbGFzcyIsdmFsdWU6dGhpcy5jbGFzc05hbWV9fSx0aGlzLnNldEF0dHJpYnV0ZT1yLHRoaXMucmVtb3ZlQXR0cmlidXRlPWUsbi5jYWxsKHRoaXMsInByb3BlcnR5Y2hhbmdlIixpKSksbi5jYWxsKHRoaXMsdCxvLHUpfSxodChEdCxWLHQpfSgpKTpDdHx8KHV0W1ZdKFosWXQpLHV0LnNldEF0dHJpYnV0ZShJLDEpLHV0LnJlbW92ZUF0dHJpYnV0ZShJKSxKdCYmKEw9ZnVuY3Rpb24odCl7dmFyIG4sZSxyLGk9dGhpcztpZihpPT09dC50YXJnZXQpe249aVtJXSxpW0ldPWU9SChpKTtmb3IociBpbiBlKXtpZighKHIgaW4gbikpcmV0dXJuIEEoMCxpLHIsbltyXSxlW3JdLEcpO2lmKGVbcl0hPT1uW3JdKXJldHVybiBBKDEsaSxyLG5bcl0sZVtyXSxZKX1mb3IociBpbiBuKWlmKCEociBpbiBlKSlyZXR1cm4gQSgyLGkscixuW3JdLGVbcl0sWCl9fSxBPWZ1bmN0aW9uKHQsbixlLHIsaSxvKXt2YXIgdT17YXR0ckNoYW5nZTp0LGN1cnJlbnRUYXJnZXQ6bixhdHRyTmFtZTplLHByZXZWYWx1ZTpyLG5ld1ZhbHVlOml9O3Vbb109dCxjKHUpfSxIPWZ1bmN0aW9uKHQpe2Zvcih2YXIgbixlLHI9e30saT10LmF0dHJpYnV0ZXMsbz0wLHU9aS5sZW5ndGg7bzx1O28rKyluPWlbb10sZT1uLm5hbWUsInNldEF0dHJpYnV0ZSIhPT1lJiYocltlXT1uLnZhbHVlKTtyZXR1cm4gcn0pKSxFW05dPWZ1bmN0aW9uKHQsbil7aWYoZT10LnRvVXBwZXJDYXNlKCksS3QmJihLdD0hMSxDdD8oTz1mdW5jdGlvbih0LG4pe2Z1bmN0aW9uIGUodCxuKXtmb3IodmFyIGU9MCxyPXQubGVuZ3RoO2U8cjtuKHRbZSsrXSkpO31yZXR1cm4gbmV3IEN0KGZ1bmN0aW9uKHIpe2Zvcih2YXIgaSxvLHUsYT0wLGM9ci5sZW5ndGg7YTxjO2ErKylpPXJbYV0sImNoaWxkTGlzdCI9PT1pLnR5cGU/KGUoaS5hZGRlZE5vZGVzLHQpLGUoaS5yZW1vdmVkTm9kZXMsbikpOihvPWkudGFyZ2V0LG5uJiZvW1VdJiYic3R5bGUiIT09aS5hdHRyaWJ1dGVOYW1lJiYodT1VdC5jYWxsKG8saS5hdHRyaWJ1dGVOYW1lKSx1IT09aS5vbGRWYWx1ZSYmb1tVXShpLmF0dHJpYnV0ZU5hbWUsaS5vbGRWYWx1ZSx1KSkpfSl9KG8oUCksbyhSKSksXz1mdW5jdGlvbih0KXtyZXR1cm4gTy5vYnNlcnZlKHQse2NoaWxkTGlzdDohMCxzdWJ0cmVlOiEwfSksdH0sXyhFKSx6dCYmKER0LmF0dGFjaFNoYWRvdz1mdW5jdGlvbigpe3JldHVybiBfKHp0LmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9KSk6KGs9W10sRVtWXSgiRE9NTm9kZUluc2VydGVkIixsKFApKSxFW1ZdKCJET01Ob2RlUmVtb3ZlZCIsbChSKSkpLEVbVl0oSyxmKSxFW1ZdKCJyZWFkeXN0YXRlY2hhbmdlIixmKSxEdC5jbG9uZU5vZGU9ZnVuY3Rpb24odCl7dmFyIG49UnQuY2FsbCh0aGlzLCEhdCksZT11KG4pO3JldHVybi0xPGUmJkQobixpdFtlXSksdCYmb3QubGVuZ3RoJiZpKG4ucXVlcnlTZWxlY3RvckFsbChvdCkpLG59KSwkdClyZXR1cm4gJHQ9ITE7aWYoLTI8YXQuY2FsbChydCx0dCtlKSthdC5jYWxsKHJ0LEorZSkmJmcodCksIW50LnRlc3QoZSl8fC0xPGF0LmNhbGwoZXQsZSkpdGhyb3cgbmV3IEVycm9yKCJUaGUgdHlwZSAiK3QrIiBpcyBpbnZhbGlkIik7dmFyIGUsYSxjPWZ1bmN0aW9uKCl7cmV0dXJuIHM/RS5jcmVhdGVFbGVtZW50KGQsZSk6RS5jcmVhdGVFbGVtZW50KGQpfSxoPW58fGN0LHM9bHQuY2FsbChoLEYpLGQ9cz9uW0ZdLnRvVXBwZXJDYXNlKCk6ZTtyZXR1cm4gcyYmLTE8YXQuY2FsbChydCxKK2QpJiZnKGQpLGE9cnQucHVzaCgocz90dDpKKStlKS0xLG90PW90LmNvbmNhdChvdC5sZW5ndGg/IiwiOiIiLHM/ZCsnW2lzPSInK3QudG9Mb3dlckNhc2UoKSsnIl0nOmQpLGMucHJvdG90eXBlPWl0W2FdPWx0LmNhbGwoaCwicHJvdG90eXBlIik/aC5wcm90b3R5cGU6T3QoRHQpLG90Lmxlbmd0aCYmcihFLnF1ZXJ5U2VsZWN0b3JBbGwob3QpLFApLGN9LEUuY3JlYXRlRWxlbWVudD1RdD1mdW5jdGlvbih0LG4pe3ZhciBlPWIobikscj1lP2p0LmNhbGwoRSx0LEh0KGUpKTpqdC5jYWxsKEUsdCksaT0iIit0LG89YXQuY2FsbChydCwoZT90dDpKKSsoZXx8aSkudG9VcHBlckNhc2UoKSksdT0tMTxvO3JldHVybiBlJiYoci5zZXRBdHRyaWJ1dGUoImlzIixlPWUudG9Mb3dlckNhc2UoKSksdSYmKHU9YShpLnRvVXBwZXJDYXNlKCksZSkpKSxubj0hRS5jcmVhdGVFbGVtZW50LmlubmVySFRNTEhlbHBlcix1JiZEKHIsaXRbb10pLHJ9KSxwLnByb3RvdHlwZT17Y29uc3RydWN0b3I6cCxkZWZpbmU6eHQ/ZnVuY3Rpb24odCxuLGUpe2lmKGUpbSh0LG4sZSk7ZWxzZXt2YXIgcj10LnRvVXBwZXJDYXNlKCk7a3Rbcl09e2NvbnN0cnVjdG9yOm4sY3JlYXRlOltyXX0sQXQuc2V0KG4sciksd3QuZGVmaW5lKHQsbil9fTptLGdldDp4dD9mdW5jdGlvbih0KXtyZXR1cm4gd3QuZ2V0KHQpfHx5KHQpfTp5LHdoZW5EZWZpbmVkOnh0P2Z1bmN0aW9uKHQpe3JldHVybiBTdC5yYWNlKFt3dC53aGVuRGVmaW5lZCh0KSx4KHQpXSl9Onh9LHd0JiYiZm9yY2UiIT09bil0cnl7IWZ1bmN0aW9uKG4sZSxyKXtpZihlW0ZdPSJhIixuLnByb3RvdHlwZT1PdChIVE1MQW5jaG9yRWxlbWVudC5wcm90b3R5cGUpLG4ucHJvdG90eXBlLmNvbnN0cnVjdG9yPW4sdC5jdXN0b21FbGVtZW50cy5kZWZpbmUocixuLGUpLFV0LmNhbGwoRS5jcmVhdGVFbGVtZW50KCJhIix7aXM6cn0pLCJpcyIpIT09cnx8eHQmJlV0LmNhbGwobmV3IG4sImlzIikhPT1yKXRocm93IGV9KGZ1bmN0aW9uIHQoKXtyZXR1cm4gUmVmbGVjdC5jb25zdHJ1Y3QoSFRNTEFuY2hvckVsZW1lbnQsW10sdCl9LHt9LCJkb2N1bWVudC1yZWdpc3Rlci1lbGVtZW50LWEiKX1jYXRjaCh0KXtUKCl9ZWxzZSBUKCk7dHJ5e2p0LmNhbGwoRSwiYSIsImEiKX1jYXRjaCh0KXtIdD1mdW5jdGlvbih0KXtyZXR1cm57aXM6dH19fX0od2luZG93KTt2YXIgV249Il9fZDNmYy1lbGVtZW50c19fIixqbj1mdW5jdGlvbih0KXtyZXR1cm4gdFtXbl18fHt9fSxRbj1mdW5jdGlvbih0LG4pe3JldHVybiB2b2lkKHRbV25dPW4pfSxHbj1mdW5jdGlvbih0KXtyZXR1cm4gZGVsZXRlIHRbV25dfSxZbj1mdW5jdGlvbih0KXtyZXR1cm4iRDNGQy1HUk9VUCI9PT10LnRhZ05hbWU/W3RdLmNvbmNhdChSKHQucXVlcnlTZWxlY3RvckFsbCgiZDNmYy1jYW52YXMsIGQzZmMtZ3JvdXAsIGQzZmMtc3ZnIikpKTpbdF19LFhuPWZ1bmN0aW9uKHQpe2lmKCJEM0ZDLUdST1VQIiE9PXQudGFnTmFtZSl7dmFyIG49am4odCksZT1uLndpZHRoLHI9bi5oZWlnaHQsaT10LmNsaWVudFdpZHRoLG89dC5jbGllbnRIZWlnaHQsdT1pIT09ZXx8byE9PXI7UW4odCx7d2lkdGg6aSxoZWlnaHQ6byxyZXNpemVkOnV9KX19LFpuPWZ1bmN0aW9uKHQpe2lmKCJEM0ZDLUdST1VQIiE9PXQudGFnTmFtZSl7dmFyIG49am4odCksZT10LmNoaWxkTm9kZXNbMF07ZS5zZXRBdHRyaWJ1dGUoIndpZHRoIixuLndpZHRoKSxlLnNldEF0dHJpYnV0ZSgiaGVpZ2h0IixuLmhlaWdodCk7dmFyIHI9bmV3IEN1c3RvbUV2ZW50KCJtZWFzdXJlIix7ZGV0YWlsOm59KTt0LmRpc3BhdGNoRXZlbnQocil9fSxLbj1mdW5jdGlvbih0KXt2YXIgbj1qbih0KSxlPW5ldyBDdXN0b21FdmVudCgiZHJhdyIse2RldGFpbDpufSk7dC5kaXNwYXRjaEV2ZW50KGUpfSwkbj1mdW5jdGlvbih0KXt2YXIgbj10Lm1hcChZbikucmVkdWNlKGZ1bmN0aW9uKHQsbil7cmV0dXJuIHQuY29uY2F0KG4pfSk7bi5mb3JFYWNoKFhuKSxuLmZvckVhY2goWm4pLG4uZm9yRWFjaChLbil9LEpuPWZ1bmN0aW9uKHQpe3JldHVybiBqbih0Lm93bmVyRG9jdW1lbnQpLnF1ZXVlfHxbXX0sdGU9ZnVuY3Rpb24odCxuKXt2YXIgZT1qbih0Lm93bmVyRG9jdW1lbnQpLHI9ZS5yZXF1ZXN0SWQ7bnVsbD09ciYmKHI9cmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uKCl7dmFyIG49Sm4odCk7JG4obiksbmUodCl9KSksUW4odC5vd25lckRvY3VtZW50LHtxdWV1ZTpuLHJlcXVlc3RJZDpyfSl9LG5lPWZ1bmN0aW9uKHQpe3JldHVybiBHbih0Lm93bmVyRG9jdW1lbnQpfSxlZT1mdW5jdGlvbih0LG4pe3ZhciBlPXQ7ZG8gaWYoZS5wYXJlbnROb2RlPT09bilyZXR1cm4hMDt3aGlsZShlPWUucGFyZW50Tm9kZSk7cmV0dXJuITF9LHJlPWZ1bmN0aW9uKHQpe3ZhciBuPUpuKHQpLGU9bi5pbmRleE9mKHQpPi0xO2lmKCFlKXt2YXIgcj1uLnNvbWUoZnVuY3Rpb24obil7cmV0dXJuIGVlKHQsbil9KTtpZighcil7dmFyIGk9bi5maWx0ZXIoZnVuY3Rpb24obil7cmV0dXJuIWVlKG4sdCl9KTtpLnB1c2godCksdGUodCxpKX19fSxpZT1mdW5jdGlvbih0LG4pe3QuX19ub2RlX189bn0sb2U9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKG4pe2Z1bmN0aW9uIGUobil7dmFyIHIsaTtyZXR1cm4gTih0aGlzLGUpLGllKG49cj1QKHRoaXMsKGUuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoZSkpLmNhbGwodGhpcyxuKSksdCgpKSxpPW4sUChyLGkpfXJldHVybiBWKGUsbiksSShlLFt7a2V5OiJjb25uZWN0ZWRDYWxsYmFjayIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmFwcGVuZENoaWxkKHRoaXMuX19ub2RlX18pfX0se2tleToicmVxdWVzdFJlZHJhdyIsdmFsdWU6ZnVuY3Rpb24oKXtyZSh0aGlzKX19XSksZX0oSFRNTEVsZW1lbnQpfSx1ZT1vZShmdW5jdGlvbigpe3JldHVybiBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKX0pLGFlPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIG4odCl7dmFyIGUscjtyZXR1cm4gTih0aGlzLG4pLHI9dD1lPVAodGhpcywobi5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihuKSkuY2FsbCh0aGlzLHQpKSxQKGUscil9cmV0dXJuIFYobix0KSxJKG4sW3trZXk6InJlcXVlc3RSZWRyYXciLHZhbHVlOmZ1bmN0aW9uKCl7cmUodGhpcyl9fSx7a2V5OiJ1cGRhdGVBdXRvUmVzaXplIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXM7dGhpcy5hdXRvUmVzaXplPyhudWxsPT10aGlzLl9fYXV0b1Jlc2l6ZUxpc3RlbmVyX18mJih0aGlzLl9fYXV0b1Jlc2l6ZUxpc3RlbmVyX189ZnVuY3Rpb24oKXtyZXR1cm4gcmUodCl9KSxhZGRFdmVudExpc3RlbmVyKCJyZXNpemUiLHRoaXMuX19hdXRvUmVzaXplTGlzdGVuZXJfXykpOnJlbW92ZUV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsdGhpcy5fX2F1dG9SZXNpemVMaXN0ZW5lcl9fKX19LHtrZXk6ImF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjayIsdmFsdWU6ZnVuY3Rpb24odCl7c3dpdGNoKHQpe2Nhc2UiYXV0by1yZXNpemUiOnRoaXMudXBkYXRlQXV0b1Jlc2l6ZSgpfX19LHtrZXk6ImF1dG9SZXNpemUiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmhhc0F0dHJpYnV0ZSgiYXV0by1yZXNpemUiKSYmImZhbHNlIiE9PXRoaXMuZ2V0QXR0cmlidXRlKCJhdXRvLXJlc2l6ZSIpfSxzZXQ6ZnVuY3Rpb24odCl7dCYmIXRoaXMuYXV0b1Jlc2l6ZT90aGlzLnNldEF0dHJpYnV0ZSgiYXV0by1yZXNpemUiLCIiKTohdCYmdGhpcy5hdXRvUmVzaXplJiZ0aGlzLnJlbW92ZUF0dHJpYnV0ZSgiYXV0by1yZXNpemUiKSx0aGlzLnVwZGF0ZUF1dG9SZXNpemUoKX19XSxbe2tleToib2JzZXJ2ZWRBdHRyaWJ1dGVzIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm5bImF1dG8tcmVzaXplIl19fV0pLG59KEhUTUxFbGVtZW50KSxjZT1vZShmdW5jdGlvbigpe3JldHVybiBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwic3ZnIil9KSxsZT0iZDNmYy1jYW52YXMsZDNmYy1zdmd7cG9zaXRpb246cmVsYXRpdmV9ZDNmYy1jYW52YXM+Y2FudmFzLGQzZmMtc3ZnPnN2Z3twb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtyaWdodDowO2xlZnQ6MDtib3R0b206IDB9ZDNmYy1zdmc+c3Zne292ZXJmbG93OnZpc2libGV9IixmZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpO2ZlLnNldEF0dHJpYnV0ZSgidHlwZSIsInRleHQvY3NzIiksZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiaGVhZCIpLmFwcGVuZENoaWxkKGZlKSxmZS5zdHlsZVNoZWV0P2ZlLnN0eWxlU2hlZXQuY3NzVGV4dCs9bGU6ZmUudGV4dENvbnRlbnQrPWxlLGN1c3RvbUVsZW1lbnRzLmRlZmluZSgiZDNmYy1jYW52YXMiLHVlKSxjdXN0b21FbGVtZW50cy5kZWZpbmUoImQzZmMtZ3JvdXAiLGFlKSxjdXN0b21FbGVtZW50cy5kZWZpbmUoImQzZmMtc3ZnIixjZSk7dmFyIGhlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe3ZhciB0PWEubW91c2UodGhpcyk7ZS5jYWxsKCJwb2ludCIsdGhpcyxbe3g6dFswXSx5OnRbMV19XSl9ZnVuY3Rpb24gbigpe3ZvaWQgZS5jYWxsKCJwb2ludCIsdGhpcyxbXSl9dmFyIGU9bC5kaXNwYXRjaCgicG9pbnQiKSxyPWZ1bmN0aW9uKGUpe2Uub24oIm1vdXNlZW50ZXIucG9pbnRlciIsdCkub24oIm1vdXNlbW92ZS5wb2ludGVyIix0KS5vbigibW91c2VsZWF2ZS5wb2ludGVyIixuKX07cmV0dXJuIHcocixlLCJvbiIpLHJ9LHNlPWZ1bmN0aW9uKCl7dmFyIHQ9IiIsbj0idmVydGljYWwiLGU9ZnVuY3Rpb24odCxuKXtyZXR1cm4gTnVtYmVyKHRbbl0pfSxyPWZ1bmN0aW9uKG4pe3JldHVybiBPYmplY3Qua2V5cyhuWzBdKS5maWx0ZXIoZnVuY3Rpb24obil7cmV0dXJuIG4hPT10fSkubWFwKGZ1bmN0aW9uKHIpe3ZhciBpPW4uZmlsdGVyKGZ1bmN0aW9uKHQpe3JldHVybiB0W3JdfSkubWFwKGZ1bmN0aW9uKG4pe3ZhciBpPVtuW3RdLGUobixyKV07cmV0dXJuIGkuZGF0YT1uLGl9KTtyZXR1cm4gaS5rZXk9cixpfSl9LGk9ZnVuY3Rpb24obil7cmV0dXJuIG4ubWFwKGZ1bmN0aW9uKG4pe3ZhciByPU9iamVjdC5rZXlzKG4pLmZpbHRlcihmdW5jdGlvbihuKXtyZXR1cm4gbiE9PXR9KS5tYXAoZnVuY3Rpb24odCl7dmFyIHI9W3QsZShuLHQpXTtyZXR1cm4gci5kYXRhPW4scn0pO3JldHVybiByLmtleT1uW3RdLHJ9KX0sbz1mdW5jdGlvbih0KXtyZXR1cm4idmVydGljYWwiPT09bj9yKHQpOmkodCl9O3JldHVybiBvLmtleT1mdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PWFyZ3VtZW50cy5sZW5ndGg8PTA/dm9pZCAwOmFyZ3VtZW50c1swXSxvKTp0fSxvLnZhbHVlPWZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9YXJndW1lbnRzLmxlbmd0aDw9MD92b2lkIDA6YXJndW1lbnRzWzBdLG8pOmV9LG8ub3JpZW50PWZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49YXJndW1lbnRzLmxlbmd0aDw9MD92b2lkIDA6YXJndW1lbnRzWzBdLG8pOm59LG99LGRlPWZ1bmN0aW9uKHQpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdH19LGdlPWZ1bmN0aW9uKHQsbil7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHI9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOmUuc2NhbGVJZGVudGl0eSgpLGk9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOmUuc2NhbGVJZGVudGl0eSgpLG89ZGUoIiIpLHU9ZGUoIiIpLGM9InJpZ2h0IixsPSJib3R0b20iLGY9ZGUoIiIpLGg9cXQoKSxzPW51bGwsZD12b2lkIDAsZz1mdW5jdGlvbigpe30sdj1udWxsLHA9dm9pZCAwLG09ZnVuY3Rpb24oKXt9LHk9ZnVuY3Rpb24oKXt9LGI9ZnVuY3Rpb24odCl7c3dpdGNoKHQpe2Nhc2UiYm90dG9tIjpyZXR1cm4gVW4oKTtjYXNlInRvcCI6cmV0dXJuIEZuKCk7Y2FzZSJsZWZ0IjpyZXR1cm4gQm4oKTtjYXNlInJpZ2h0IjpyZXR1cm4gcW4oKX19LHc9YihsKSx4PWIoYyksRT1EdCgiZDNmYy1ncm91cCIsImNhcnRlc2lhbi1jaGFydCIpLE09ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiB0LnNlbGVjdGlvbj9uLnRyYW5zaXRpb24odCk6bn19LGs9ZnVuY3Rpb24oZSl7dmFyIGI9TShlKTtlLmVhY2goZnVuY3Rpb24oZSxULFMpe3ZhciBNPUUoYS5zZWxlY3QoU1tUXSksW2VdKTtNLmVudGVyKCkuYXR0cigic3R5bGUiLCJkaXNwbGF5OiBmbGV4OyBoZWlnaHQ6IDEwMCU7IHdpZHRoOiAxMDAlOyBmbGV4LWRpcmVjdGlvbjogY29sdW1uIikuYXR0cigiYXV0by1yZXNpemUiLCIiKS5odG1sKCI8ZGl2IGNsYXNzPSdjaGFydC1sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9J2hlaWdodDogIisoZj8yOjApKyJlbTsgbGluZS1oZWlnaHQ6IDJlbTsgdGV4dC1hbGlnbjogY2VudGVyOyBtYXJnaW4tIitjKyI6IDRlbSc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSdmbGV4OiAxOyBkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogIisoImJvdHRvbSI9PT1sPyJjb2x1bW4iOiJjb2x1bW4tcmV2ZXJzZSIpKyInPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT0nZmxleDogMTsgZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246ICIrKCJyaWdodCI9PT1jPyJyb3ciOiJyb3ctcmV2ZXJzZSIpKyInPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwiK3QrIiBjbGFzcz0ncGxvdC1hcmVhJyBzdHlsZT0nZmxleDogMTsgb3ZlcmZsb3c6IGhpZGRlbic+PC8iK3QrIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZDNmYy1zdmcgY2xhc3M9J3ktYXhpcycgc3R5bGU9J3dpZHRoOiAzZW0nPjwvZDNmYy1zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT0nd2lkdGg6IDFlbTsgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsganVzdGlmeS1jb250ZW50OiBjZW50ZXInPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSd5LWF4aXMtbGFiZWwnIHN0eWxlPSd0cmFuc2Zvcm06IHJvdGF0ZSgtOTBkZWcpJz48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGQzZmMtc3ZnIGNsYXNzPSd4LWF4aXMnIHN0eWxlPSdoZWlnaHQ6IDJlbTsgbWFyZ2luLSIrYysiOiA0ZW0nPjwvZDNmYy1zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSd4LWF4aXMtbGFiZWwnIHN0eWxlPSdoZWlnaHQ6IDFlbTsgbGluZS1oZWlnaHQ6IDFlbTsgdGV4dC1hbGlnbjogY2VudGVyOyBtYXJnaW4tIitjKyI6IDRlbSc+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PiIpLE0uc2VsZWN0KCIueS1heGlzLWxhYmVsIikudGV4dChvKGUpKSxNLnNlbGVjdCgiLngtYXhpcy1sYWJlbCIpLnRleHQodShlKSksTS5zZWxlY3QoIi5jaGFydC1sYWJlbCIpLnRleHQoZihlKSksTS5zZWxlY3QoIi55LWF4aXMiKS5vbigibWVhc3VyZSIsZnVuY3Rpb24odCxuLGUpe2lmKCJsZWZ0Ij09PWMpe3ZhciByPWEuZXZlbnQuZGV0YWlsLGk9ci53aWR0aCxvPXIuaGVpZ2h0O2Euc2VsZWN0KGVbbl0pLnNlbGVjdCgic3ZnIikuYXR0cigidmlld0JveCIsLWkrIiAwICIraSsiICIrbyl9fSkub24oImRyYXciLGZ1bmN0aW9uKHQsbixlKXtpZih4LnRpY2tGb3JtYXQodikuZGVjb3JhdGUobSkscCl7dmFyIHI7KHI9eCkudGlja3MuYXBwbHkocixSKHApKX1iKGEuc2VsZWN0KGVbbl0pKS5zZWxlY3QoInN2ZyIpLmNhbGwoeC5zY2FsZShpKSl9KSxNLnNlbGVjdCgiLngtYXhpcyIpLm9uKCJtZWFzdXJlIixmdW5jdGlvbih0LG4sZSl7aWYoInRvcCI9PT1sKXt2YXIgcj1hLmV2ZW50LmRldGFpbCxpPXIud2lkdGgsbz1yLmhlaWdodDthLnNlbGVjdChlW25dKS5zZWxlY3QoInN2ZyIpLmF0dHIoInZpZXdCb3giLCIwICIrLW8rIiAiK2krIiAiK28pfX0pLm9uKCJkcmF3IixmdW5jdGlvbih0LG4sZSl7aWYody50aWNrRm9ybWF0KHMpLmRlY29yYXRlKGcpLGQpe3ZhciBpOyhpPXcpLnRpY2tzLmFwcGx5KGksUihkKSl9YihhLnNlbGVjdChlW25dKSkuc2VsZWN0KCJzdmciKS5jYWxsKHcuc2NhbGUocikpfSksTS5zZWxlY3QoIi5wbG90LWFyZWEiKS5vbigibWVhc3VyZSIsZnVuY3Rpb24oKXt2YXIgdD1hLmV2ZW50LmRldGFpbCxuPXQud2lkdGgsZT10LmhlaWdodDtyLnJhbmdlKFswLG5dKSxpLnJhbmdlKFtlLDBdKX0pLm9uKCJkcmF3IixmdW5jdGlvbih0LGUsbyl7aC54U2NhbGUocikueVNjYWxlKGkpLG4odCxvW2VdLGgsYil9KSxNLmVhY2goZnVuY3Rpb24odCxuLGUpe3JldHVybiBlW25dLnJlcXVlc3RSZWRyYXcoKX0pLHkoTSxlLFQpfSl9LEw9UygvcmFuZ2VcdyovLC90aWNrRm9ybWF0Lyk7cmV0dXJuIFQoayxyLEwsQSgieCIpKSxUKGssaSxMLEEoInkiKSksay54VGlja0Zvcm1hdD1mdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPWFyZ3VtZW50cy5sZW5ndGg8PTA/dm9pZCAwOmFyZ3VtZW50c1swXSxrKTpzfSxrLnhUaWNrcz1mdW5jdGlvbigpe2Zvcih2YXIgdD1hcmd1bWVudHMubGVuZ3RoLG49QXJyYXkodCksZT0wO2U8dDtlKyspbltlXT1hcmd1bWVudHNbZV07cmV0dXJuIGQ9bixrfSxrLnhEZWNvcmF0ZT1mdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhnPWFyZ3VtZW50cy5sZW5ndGg8PTA/dm9pZCAwOmFyZ3VtZW50c1swXSxrKTpnfSxrLnlUaWNrRm9ybWF0PWZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHY9YXJndW1lbnRzLmxlbmd0aDw9MD92b2lkIDA6YXJndW1lbnRzWzBdLGspOnZ9LGsueVRpY2tzPWZ1bmN0aW9uKCl7Zm9yKHZhciB0PWFyZ3VtZW50cy5sZW5ndGgsbj1BcnJheSh0KSxlPTA7ZTx0O2UrKyluW2VdPWFyZ3VtZW50c1tlXTtyZXR1cm4gcD1uLGt9LGsueURlY29yYXRlPWZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG09YXJndW1lbnRzLmxlbmd0aDw9MD92b2lkIDA6YXJndW1lbnRzWzBdLGspOm19LGsueU9yaWVudD1mdW5jdGlvbigpe2lmKCFhcmd1bWVudHMubGVuZ3RoKXJldHVybiBjO3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg8PTA/dm9pZCAwOmFyZ3VtZW50c1swXTtyZXR1cm4gdCE9PWMmJih4PWIodCkpLGM9dCxrfSxrLnhPcmllbnQ9ZnVuY3Rpb24oKXtpZighYXJndW1lbnRzLmxlbmd0aClyZXR1cm4gbDt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPD0wP3ZvaWQgMDphcmd1bWVudHNbMF07cmV0dXJuIHQhPT1sJiYodz1iKHQpKSxsPXQsa30say5jaGFydExhYmVsPWZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGY9ZGUoYXJndW1lbnRzLmxlbmd0aDw9MD92b2lkIDA6YXJndW1lbnRzWzBdKSxrKTpmfSxrLnBsb3RBcmVhPWZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGg9YXJndW1lbnRzLmxlbmd0aDw9MD92b2lkIDA6YXJndW1lbnRzWzBdLGspOmh9LGsueExhYmVsPWZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHU9ZGUoYXJndW1lbnRzLmxlbmd0aDw9MD92b2lkIDA6YXJndW1lbnRzWzBdKSxrKTp1fSxrLnlMYWJlbD1mdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPWRlKGFyZ3VtZW50cy5sZW5ndGg8PTA/dm9pZCAwOmFyZ3VtZW50c1swXSksayk6b30say5kZWNvcmF0ZT1mdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh5PWFyZ3VtZW50cy5sZW5ndGg8PTA/dm9pZCAwOmFyZ3VtZW50c1swXSxrKTp5fSxrfX0sdmU9Z2UoImQzZmMtc3ZnIixmdW5jdGlvbih0LG4sZSxyKXtyKGEuc2VsZWN0KG4pKS5zZWxlY3QoInN2ZyIpLmNhbGwoZSl9KSxwZT1mdW5jdGlvbigpe3JldHVybiB2ZS5hcHBseSh2b2lkIDAsYXJndW1lbnRzKX0sbWU9Z2UoImQzZmMtY2FudmFzIixmdW5jdGlvbih0LG4sZSl7dmFyIHI9bi5jaGlsZE5vZGVzWzBdO2UuY29udGV4dChyLmdldENvbnRleHQoIjJkIikpLGUodCl9KSx5ZT1mdW5jdGlvbigpe3JldHVybiBtZS5hcHBseSh2b2lkIDAsYXJndW1lbnRzKX07dC5pbmRpY2F0b3JCb2xsaW5nZXJCYW5kcz1PLHQuaW5kaWNhdG9yRXhwb25lbnRpYWxNb3ZpbmdBdmVyYWdlPV8sdC5pbmRpY2F0b3JNYWNkPUMsdC5pbmRpY2F0b3JSZWxhdGl2ZVN0cmVuZ3RoSW5kZXg9Rix0LmluZGljYXRvclN0b2NoYXN0aWNPc2NpbGxhdG9yPUIsdC5pbmRpY2F0b3JGb3JjZUluZGV4PXEsdC5pbmRpY2F0b3JFbnZlbG9wZT1XLHQuaW5kaWNhdG9yRWxkZXJSYXk9aix0LmluZGljYXRvck1vdmluZ0F2ZXJhZ2U9VSx0LnNjYWxlRGlzY29udGludW91cz12LHQuZGlzY29udGludWl0eVNraXBXZWVrZW5kcz1HLHQuZGlzY29udGludWl0eUlkZW50aXR5PVEsdC5kaXNjb250aW51aXR5UmFuZ2U9WSx0LmV4dGVudExpbmVhcj1YLHQuZXh0ZW50RGF0ZT1aLHQucmFuZG9tRmluYW5jaWFsPSQsdC5yYW5kb21HZW9tZXRyaWNCcm93bmlhbk1vdGlvbj1LLHQucmFuZG9tU2tpcFdlZWtlbmRzPUosdC5mZWVkR2RheD10dCx0LmZlZWRRdWFuZGw9bnQsdC5idWNrZXQ9ZXQsdC5sYXJnZXN0VHJpYW5nbGVPbmVCdWNrZXQ9cnQsdC5sYXJnZXN0VHJpYW5nbGVUaHJlZUJ1Y2tldD1pdCx0Lm1vZGVNZWRpYW49b3QsdC5yZWJpbmQ9dyx0LnJlYmluZEFsbD1ULHQuZXhjbHVkZT1TLHQuaW5jbHVkZT1NLHQuaW5jbHVkZU1hcD1rLHQucHJlZml4PUEsdC5zaGFwZU9obGM9YXQsdC5zaGFwZUJhcj1jdCx0LnNoYXBlQ2FuZGxlc3RpY2s9bHQsdC5zaGFwZUJveFBsb3Q9ZnQsdC5zaGFwZUVycm9yQmFyPWh0LHQubGF5b3V0TGFiZWw9dnQsdC5sYXlvdXRUZXh0TGFiZWw9cHQsdC5sYXlvdXRHcmVlZHk9TXQsdC5sYXlvdXRBbm5lYWxpbmc9QXQsdC5sYXlvdXRSZW1vdmVPdmVybGFwcz1PdCx0LmxheW91dEJvdW5kaW5nQm94PV90LHQuZGF0YUpvaW49RHQsdC5lZmZlY3RpdmVseVplcm89Q3QsdC5zZXJpZXNGcmFjdGlvbmFsQmFyV2lkdGg9TnQsdC5zZXJpZXNTdmdMaW5lPXF0LHQuc2VyaWVzQ2FudmFzTGluZT1XdCx0LnNlcmllc1N2Z1BvaW50PWp0LHQuc2VyaWVzQ2FudmFzUG9pbnQ9UXQsdC5zZXJpZXNTdmdCYXI9R3QsdC5zZXJpZXNDYW52YXNCYXI9WXQsdC5zZXJpZXNTdmdFcnJvckJhcj1adCx0LnNlcmllc0NhbnZhc0Vycm9yQmFyPUt0LHQuc2VyaWVzU3ZnQXJlYT0kdCx0LnNlcmllc0NhbnZhc0FyZWE9SnQsdC5zZXJpZXNTdmdDYW5kbGVzdGljaz1lbix0LnNlcmllc0NhbnZhc0NhbmRsZXN0aWNrPW9uLHQuc2VyaWVzU3ZnQm94UGxvdD1hbix0LnNlcmllc0NhbnZhc0JveFBsb3Q9Y24sdC5zZXJpZXNTdmdPaGxjPWxuLHQuc2VyaWVzQ2FudmFzT2hsYz1mbix0LnNlcmllc1N2Z011bHRpPXNuLHQuc2VyaWVzQ2FudmFzTXVsdGk9ZG4sdC5zZXJpZXNTdmdHcm91cGVkPXZuLHQuc2VyaWVzQ2FudmFzR3JvdXBlZD1wbix0LnNlcmllc1N2Z1JlcGVhdD1tbix0LnNlcmllc0NhbnZhc1JlcGVhdD15bix0LmFubm90YXRpb25TdmdCYW5kPXduLHQuYW5ub3RhdGlvblN2Z0Nyb3NzaGFpcj1Obix0LmFubm90YXRpb25TdmdMaW5lPXhuLHQuYW5ub3RhdGlvblN2Z0dyaWRsaW5lPVBuLHQuYXhpc1RvcD1Gbix0LmF4aXNCb3R0b209VW4sdC5heGlzTGVmdD1Cbix0LmF4aXNSaWdodD1xbix0LnBvaW50ZXI9aGUsdC5ncm91cD1zZSx0LmNoYXJ0U3ZnQ2FydGVzaWFuPXBlLHQuY2hhcnRDYW52YXNDYXJ0ZXNpYW49eWUsT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pfSk7"></script>
<script src="data:application/x-javascript;base64,KGZ1bmN0aW9uKCkgew0KICAvLyBJZiB3aW5kb3cuSFRNTFdpZGdldHMgaXMgYWxyZWFkeSBkZWZpbmVkLCB0aGVuIHVzZSBpdDsgb3RoZXJ3aXNlIGNyZWF0ZSBhDQogIC8vIG5ldyBvYmplY3QuIFRoaXMgYWxsb3dzIHByZWNlZGluZyBjb2RlIHRvIHNldCBvcHRpb25zIHRoYXQgYWZmZWN0IHRoZQ0KICAvLyBpbml0aWFsaXphdGlvbiBwcm9jZXNzICh0aG91Z2ggbm9uZSBjdXJyZW50bHkgZXhpc3QpLg0KICB3aW5kb3cuSFRNTFdpZGdldHMgPSB3aW5kb3cuSFRNTFdpZGdldHMgfHwge307DQoNCiAgLy8gU2VlIGlmIHdlJ3JlIHJ1bm5pbmcgaW4gYSB2aWV3ZXIgcGFuZS4gSWYgbm90LCB3ZSdyZSBpbiBhIHdlYiBicm93c2VyLg0KICB2YXIgdmlld2VyTW9kZSA9IHdpbmRvdy5IVE1MV2lkZ2V0cy52aWV3ZXJNb2RlID0NCiAgICAgIC9cYnZpZXdlcl9wYW5lPTFcYi8udGVzdCh3aW5kb3cubG9jYXRpb24pOw0KDQogIC8vIFNlZSBpZiB3ZSdyZSBydW5uaW5nIGluIFNoaW55IG1vZGUuIElmIG5vdCwgaXQncyBhIHN0YXRpYyBkb2N1bWVudC4NCiAgLy8gTm90ZSB0aGF0IHN0YXRpYyB3aWRnZXRzIGNhbiBhcHBlYXIgaW4gYm90aCBTaGlueSBhbmQgc3RhdGljIG1vZGVzLCBidXQNCiAgLy8gb2J2aW91c2x5LCBTaGlueSB3aWRnZXRzIGNhbiBvbmx5IGFwcGVhciBpbiBTaGlueSBhcHBzL2RvY3VtZW50cy4NCiAgdmFyIHNoaW55TW9kZSA9IHdpbmRvdy5IVE1MV2lkZ2V0cy5zaGlueU1vZGUgPQ0KICAgICAgdHlwZW9mKHdpbmRvdy5TaGlueSkgIT09ICJ1bmRlZmluZWQiICYmICEhd2luZG93LlNoaW55Lm91dHB1dEJpbmRpbmdzOw0KDQogIC8vIFdlIGNhbid0IGNvdW50IG9uIGpRdWVyeSBiZWluZyBhdmFpbGFibGUsIHNvIHdlIGltcGxlbWVudCBvdXIgb3duDQogIC8vIHZlcnNpb24gaWYgbmVjZXNzYXJ5Lg0KICBmdW5jdGlvbiBxdWVyeVNlbGVjdG9yQWxsKHNjb3BlLCBzZWxlY3Rvcikgew0KICAgIGlmICh0eXBlb2YoalF1ZXJ5KSAhPT0gInVuZGVmaW5lZCIgJiYgc2NvcGUgaW5zdGFuY2VvZiBqUXVlcnkpIHsNCiAgICAgIHJldHVybiBzY29wZS5maW5kKHNlbGVjdG9yKTsNCiAgICB9DQogICAgaWYgKHNjb3BlLnF1ZXJ5U2VsZWN0b3JBbGwpIHsNCiAgICAgIHJldHVybiBzY29wZS5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yKTsNCiAgICB9DQogIH0NCg0KICBmdW5jdGlvbiBhc0FycmF5KHZhbHVlKSB7DQogICAgaWYgKHZhbHVlID09PSBudWxsKQ0KICAgICAgcmV0dXJuIFtdOw0KICAgIGlmICgkLmlzQXJyYXkodmFsdWUpKQ0KICAgICAgcmV0dXJuIHZhbHVlOw0KICAgIHJldHVybiBbdmFsdWVdOw0KICB9DQoNCiAgLy8gSW1wbGVtZW50IGpRdWVyeSdzIGV4dGVuZA0KICBmdW5jdGlvbiBleHRlbmQodGFyZ2V0IC8qLCAuLi4gKi8pIHsNCiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PSAxKSB7DQogICAgICByZXR1cm4gdGFyZ2V0Ow0KICAgIH0NCiAgICBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgew0KICAgICAgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsNCiAgICAgIGZvciAodmFyIHByb3AgaW4gc291cmNlKSB7DQogICAgICAgIGlmIChzb3VyY2UuaGFzT3duUHJvcGVydHkocHJvcCkpIHsNCiAgICAgICAgICB0YXJnZXRbcHJvcF0gPSBzb3VyY2VbcHJvcF07DQogICAgICAgIH0NCiAgICAgIH0NCiAgICB9DQogICAgcmV0dXJuIHRhcmdldDsNCiAgfQ0KDQogIC8vIElFOCBkb2Vzbid0IHN1cHBvcnQgQXJyYXkuZm9yRWFjaC4NCiAgZnVuY3Rpb24gZm9yRWFjaCh2YWx1ZXMsIGNhbGxiYWNrLCB0aGlzQXJnKSB7DQogICAgaWYgKHZhbHVlcy5mb3JFYWNoKSB7DQogICAgICB2YWx1ZXMuZm9yRWFjaChjYWxsYmFjaywgdGhpc0FyZyk7DQogICAgfSBlbHNlIHsNCiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdmFsdWVzLmxlbmd0aDsgaSsrKSB7DQogICAgICAgIGNhbGxiYWNrLmNhbGwodGhpc0FyZywgdmFsdWVzW2ldLCBpLCB2YWx1ZXMpOw0KICAgICAgfQ0KICAgIH0NCiAgfQ0KDQogIC8vIFJlcGxhY2VzIHRoZSBzcGVjaWZpZWQgbWV0aG9kIHdpdGggdGhlIHJldHVybiB2YWx1ZSBvZiBmdW5jU291cmNlLg0KICAvLw0KICAvLyBOb3RlIHRoYXQgZnVuY1NvdXJjZSBzaG91bGQgbm90IEJFIHRoZSBuZXcgbWV0aG9kLCBpdCBzaG91bGQgYmUgYSBmdW5jdGlvbg0KICAvLyB0aGF0IFJFVFVSTlMgdGhlIG5ldyBtZXRob2QuIGZ1bmNTb3VyY2UgcmVjZWl2ZXMgYSBzaW5nbGUgYXJndW1lbnQgdGhhdCBpcw0KICAvLyB0aGUgb3ZlcnJpZGRlbiBtZXRob2QsIGl0IGNhbiBiZSBjYWxsZWQgZnJvbSB0aGUgbmV3IG1ldGhvZC4gVGhlIG92ZXJyaWRkZW4NCiAgLy8gbWV0aG9kIGNhbiBiZSBjYWxsZWQgbGlrZSBhIHJlZ3VsYXIgZnVuY3Rpb24sIGl0IGhhcyB0aGUgdGFyZ2V0IHBlcm1hbmVudGx5DQogIC8vIGJvdW5kIHRvIGl0IHNvICJ0aGlzIiB3aWxsIHdvcmsgY29ycmVjdGx5Lg0KICBmdW5jdGlvbiBvdmVycmlkZU1ldGhvZCh0YXJnZXQsIG1ldGhvZE5hbWUsIGZ1bmNTb3VyY2UpIHsNCiAgICB2YXIgc3VwZXJGdW5jID0gdGFyZ2V0W21ldGhvZE5hbWVdIHx8IGZ1bmN0aW9uKCkge307DQogICAgdmFyIHN1cGVyRnVuY0JvdW5kID0gZnVuY3Rpb24oKSB7DQogICAgICByZXR1cm4gc3VwZXJGdW5jLmFwcGx5KHRhcmdldCwgYXJndW1lbnRzKTsNCiAgICB9Ow0KICAgIHRhcmdldFttZXRob2ROYW1lXSA9IGZ1bmNTb3VyY2Uoc3VwZXJGdW5jQm91bmQpOw0KICB9DQoNCiAgLy8gQWRkIGEgbWV0aG9kIHRvIGRlbGVnYXRvciB0aGF0LCB3aGVuIGludm9rZWQsIGNhbGxzDQogIC8vIGRlbGVnYXRlZS5tZXRob2ROYW1lLiBJZiB0aGVyZSBpcyBubyBzdWNoIG1ldGhvZCBvbg0KICAvLyB0aGUgZGVsZWdhdGVlLCBidXQgdGhlcmUgd2FzIG9uZSBvbiBkZWxlZ2F0b3IgYmVmb3JlDQogIC8vIGRlbGVnYXRlTWV0aG9kIHdhcyBjYWxsZWQsIHRoZW4gdGhlIG9yaWdpbmFsIHZlcnNpb24NCiAgLy8gaXMgaW52b2tlZCBpbnN0ZWFkLg0KICAvLyBGb3IgZXhhbXBsZToNCiAgLy8NCiAgLy8gdmFyIGEgPSB7DQogIC8vICAgbWV0aG9kMTogZnVuY3Rpb24oKSB7IGNvbnNvbGUubG9nKCdhMScpOyB9DQogIC8vICAgbWV0aG9kMjogZnVuY3Rpb24oKSB7IGNvbnNvbGUubG9nKCdhMicpOyB9DQogIC8vIH07DQogIC8vIHZhciBiID0gew0KICAvLyAgIG1ldGhvZDE6IGZ1bmN0aW9uKCkgeyBjb25zb2xlLmxvZygnYjEnKTsgfQ0KICAvLyB9Ow0KICAvLyBkZWxlZ2F0ZU1ldGhvZChhLCBiLCAibWV0aG9kMSIpOw0KICAvLyBkZWxlZ2F0ZU1ldGhvZChhLCBiLCAibWV0aG9kMiIpOw0KICAvLyBhLm1ldGhvZDEoKTsNCiAgLy8gYS5tZXRob2QyKCk7DQogIC8vDQogIC8vIFRoZSBvdXRwdXQgd291bGQgYmUgImIxIiwgImEyIi4NCiAgZnVuY3Rpb24gZGVsZWdhdGVNZXRob2QoZGVsZWdhdG9yLCBkZWxlZ2F0ZWUsIG1ldGhvZE5hbWUpIHsNCiAgICB2YXIgaW5oZXJpdGVkID0gZGVsZWdhdG9yW21ldGhvZE5hbWVdOw0KICAgIGRlbGVnYXRvclttZXRob2ROYW1lXSA9IGZ1bmN0aW9uKCkgew0KICAgICAgdmFyIHRhcmdldCA9IGRlbGVnYXRlZTsNCiAgICAgIHZhciBtZXRob2QgPSBkZWxlZ2F0ZWVbbWV0aG9kTmFtZV07DQoNCiAgICAgIC8vIFRoZSBtZXRob2QgZG9lc24ndCBleGlzdCBvbiB0aGUgZGVsZWdhdGVlLiBJbnN0ZWFkLA0KICAgICAgLy8gY2FsbCB0aGUgbWV0aG9kIG9uIHRoZSBkZWxlZ2F0b3IsIGlmIGl0IGV4aXN0cy4NCiAgICAgIGlmICghbWV0aG9kKSB7DQogICAgICAgIHRhcmdldCA9IGRlbGVnYXRvcjsNCiAgICAgICAgbWV0aG9kID0gaW5oZXJpdGVkOw0KICAgICAgfQ0KDQogICAgICBpZiAobWV0aG9kKSB7DQogICAgICAgIHJldHVybiBtZXRob2QuYXBwbHkodGFyZ2V0LCBhcmd1bWVudHMpOw0KICAgICAgfQ0KICAgIH07DQogIH0NCg0KICAvLyBJbXBsZW1lbnQgYSB2YWd1ZSBmYWNzaW1pbGllIG9mIGpRdWVyeSdzIGRhdGEgbWV0aG9kDQogIGZ1bmN0aW9uIGVsZW1lbnREYXRhKGVsLCBuYW1lLCB2YWx1ZSkgew0KICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09IDIpIHsNCiAgICAgIHJldHVybiBlbFsiaHRtbHdpZGdldF9kYXRhXyIgKyBuYW1lXTsNCiAgICB9IGVsc2UgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT0gMykgew0KICAgICAgZWxbImh0bWx3aWRnZXRfZGF0YV8iICsgbmFtZV0gPSB2YWx1ZTsNCiAgICAgIHJldHVybiBlbDsNCiAgICB9IGVsc2Ugew0KICAgICAgdGhyb3cgbmV3IEVycm9yKCJXcm9uZyBudW1iZXIgb2YgYXJndW1lbnRzIGZvciBlbGVtZW50RGF0YTogIiArDQogICAgICAgIGFyZ3VtZW50cy5sZW5ndGgpOw0KICAgIH0NCiAgfQ0KDQogIC8vIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMzQ0NjE3MC9lc2NhcGUtc3RyaW5nLWZvci11c2UtaW4tamF2YXNjcmlwdC1yZWdleA0KICBmdW5jdGlvbiBlc2NhcGVSZWdFeHAoc3RyKSB7DQogICAgcmV0dXJuIHN0ci5yZXBsYWNlKC9bXC1cW1xdXC9ce1x9XChcKVwqXCtcP1wuXFxcXlwkXHxdL2csICJcXCQmIik7DQogIH0NCg0KICBmdW5jdGlvbiBoYXNDbGFzcyhlbCwgY2xhc3NOYW1lKSB7DQogICAgdmFyIHJlID0gbmV3IFJlZ0V4cCgiXFxiIiArIGVzY2FwZVJlZ0V4cChjbGFzc05hbWUpICsgIlxcYiIpOw0KICAgIHJldHVybiByZS50ZXN0KGVsLmNsYXNzTmFtZSk7DQogIH0NCg0KICAvLyBlbGVtZW50cyAtIGFycmF5IChvciBhcnJheS1saWtlIG9iamVjdCkgb2YgSFRNTCBlbGVtZW50cw0KICAvLyBjbGFzc05hbWUgLSBjbGFzcyBuYW1lIHRvIHRlc3QgZm9yDQogIC8vIGluY2x1ZGUgLSBpZiB0cnVlLCBvbmx5IHJldHVybiBlbGVtZW50cyB3aXRoIGdpdmVuIGNsYXNzTmFtZTsNCiAgLy8gICBpZiBmYWxzZSwgb25seSByZXR1cm4gZWxlbWVudHMgKndpdGhvdXQqIGdpdmVuIGNsYXNzTmFtZQ0KICBmdW5jdGlvbiBmaWx0ZXJCeUNsYXNzKGVsZW1lbnRzLCBjbGFzc05hbWUsIGluY2x1ZGUpIHsNCiAgICB2YXIgcmVzdWx0cyA9IFtdOw0KICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWxlbWVudHMubGVuZ3RoOyBpKyspIHsNCiAgICAgIGlmIChoYXNDbGFzcyhlbGVtZW50c1tpXSwgY2xhc3NOYW1lKSA9PSBpbmNsdWRlKQ0KICAgICAgICByZXN1bHRzLnB1c2goZWxlbWVudHNbaV0pOw0KICAgIH0NCiAgICByZXR1cm4gcmVzdWx0czsNCiAgfQ0KDQogIGZ1bmN0aW9uIG9uKG9iaiwgZXZlbnROYW1lLCBmdW5jKSB7DQogICAgaWYgKG9iai5hZGRFdmVudExpc3RlbmVyKSB7DQogICAgICBvYmouYWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIGZ1bmMsIGZhbHNlKTsNCiAgICB9IGVsc2UgaWYgKG9iai5hdHRhY2hFdmVudCkgew0KICAgICAgb2JqLmF0dGFjaEV2ZW50KGV2ZW50TmFtZSwgZnVuYyk7DQogICAgfQ0KICB9DQoNCiAgZnVuY3Rpb24gb2ZmKG9iaiwgZXZlbnROYW1lLCBmdW5jKSB7DQogICAgaWYgKG9iai5yZW1vdmVFdmVudExpc3RlbmVyKQ0KICAgICAgb2JqLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCBmdW5jLCBmYWxzZSk7DQogICAgZWxzZSBpZiAob2JqLmRldGFjaEV2ZW50KSB7DQogICAgICBvYmouZGV0YWNoRXZlbnQoZXZlbnROYW1lLCBmdW5jKTsNCiAgICB9DQogIH0NCg0KICAvLyBUcmFuc2xhdGUgYXJyYXkgb2YgdmFsdWVzIHRvIHRvcC9yaWdodC9ib3R0b20vbGVmdCwgYXMgdXN1YWwgd2l0aA0KICAvLyB0aGUgInBhZGRpbmciIENTUyBwcm9wZXJ0eQ0KICAvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvcGFkZGluZw0KICBmdW5jdGlvbiB1bnBhY2tQYWRkaW5nKHZhbHVlKSB7DQogICAgaWYgKHR5cGVvZih2YWx1ZSkgPT09ICJudW1iZXIiKQ0KICAgICAgdmFsdWUgPSBbdmFsdWVdOw0KICAgIGlmICh2YWx1ZS5sZW5ndGggPT09IDEpIHsNCiAgICAgIHJldHVybiB7dG9wOiB2YWx1ZVswXSwgcmlnaHQ6IHZhbHVlWzBdLCBib3R0b206IHZhbHVlWzBdLCBsZWZ0OiB2YWx1ZVswXX07DQogICAgfQ0KICAgIGlmICh2YWx1ZS5sZW5ndGggPT09IDIpIHsNCiAgICAgIHJldHVybiB7dG9wOiB2YWx1ZVswXSwgcmlnaHQ6IHZhbHVlWzFdLCBib3R0b206IHZhbHVlWzBdLCBsZWZ0OiB2YWx1ZVsxXX07DQogICAgfQ0KICAgIGlmICh2YWx1ZS5sZW5ndGggPT09IDMpIHsNCiAgICAgIHJldHVybiB7dG9wOiB2YWx1ZVswXSwgcmlnaHQ6IHZhbHVlWzFdLCBib3R0b206IHZhbHVlWzJdLCBsZWZ0OiB2YWx1ZVsxXX07DQogICAgfQ0KICAgIGlmICh2YWx1ZS5sZW5ndGggPT09IDQpIHsNCiAgICAgIHJldHVybiB7dG9wOiB2YWx1ZVswXSwgcmlnaHQ6IHZhbHVlWzFdLCBib3R0b206IHZhbHVlWzJdLCBsZWZ0OiB2YWx1ZVszXX07DQogICAgfQ0KICB9DQoNCiAgLy8gQ29udmVydCBhbiB1bnBhY2tlZCBwYWRkaW5nIG9iamVjdCB0byBhIENTUyB2YWx1ZQ0KICBmdW5jdGlvbiBwYWRkaW5nVG9Dc3MocGFkZGluZ09iaikgew0KICAgIHJldHVybiBwYWRkaW5nT2JqLnRvcCArICJweCAiICsgcGFkZGluZ09iai5yaWdodCArICJweCAiICsgcGFkZGluZ09iai5ib3R0b20gKyAicHggIiArIHBhZGRpbmdPYmoubGVmdCArICJweCI7DQogIH0NCg0KICAvLyBNYWtlcyBhIG51bWJlciBzdWl0YWJsZSBmb3IgQ1NTDQogIGZ1bmN0aW9uIHB4KHgpIHsNCiAgICBpZiAodHlwZW9mKHgpID09PSAibnVtYmVyIikNCiAgICAgIHJldHVybiB4ICsgInB4IjsNCiAgICBlbHNlDQogICAgICByZXR1cm4geDsNCiAgfQ0KDQogIC8vIFJldHJpZXZlcyBydW50aW1lIHdpZGdldCBzaXppbmcgaW5mb3JtYXRpb24gZm9yIGFuIGVsZW1lbnQuDQogIC8vIFRoZSByZXR1cm4gdmFsdWUgaXMgZWl0aGVyIG51bGwsIG9yIGFuIG9iamVjdCB3aXRoIGZpbGwsIHBhZGRpbmcsDQogIC8vIGRlZmF1bHRXaWR0aCwgZGVmYXVsdEhlaWdodCBmaWVsZHMuDQogIGZ1bmN0aW9uIHNpemluZ1BvbGljeShlbCkgew0KICAgIHZhciBzaXppbmdFbCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoInNjcmlwdFtkYXRhLWZvcj0nIiArIGVsLmlkICsgIiddW3R5cGU9J2FwcGxpY2F0aW9uL2h0bWx3aWRnZXQtc2l6aW5nJ10iKTsNCiAgICBpZiAoIXNpemluZ0VsKQ0KICAgICAgcmV0dXJuIG51bGw7DQogICAgdmFyIHNwID0gSlNPTi5wYXJzZShzaXppbmdFbC50ZXh0Q29udGVudCB8fCBzaXppbmdFbC50ZXh0IHx8ICJ7fSIpOw0KICAgIGlmICh2aWV3ZXJNb2RlKSB7DQogICAgICByZXR1cm4gc3Audmlld2VyOw0KICAgIH0gZWxzZSB7DQogICAgICByZXR1cm4gc3AuYnJvd3NlcjsNCiAgICB9DQogIH0NCg0KICAvLyBAcGFyYW0gdGFza3MgQXJyYXkgb2Ygc3RyaW5ncyAob3IgZmFsc3kgdmFsdWUsIGluIHdoaWNoIGNhc2Ugbm8tb3ApLg0KICAvLyAgIEVhY2ggZWxlbWVudCBtdXN0IGJlIGEgdmFsaWQgSmF2YVNjcmlwdCBleHByZXNzaW9uIHRoYXQgeWllbGRzIGENCiAgLy8gICBmdW5jdGlvbi4gT3IsIGNhbiBiZSBhbiBhcnJheSBvZiBvYmplY3RzIHdpdGggImNvZGUiIGFuZCAiZGF0YSINCiAgLy8gICBwcm9wZXJ0aWVzOyBpbiB0aGlzIGNhc2UsIHRoZSAiY29kZSIgcHJvcGVydHkgc2hvdWxkIGJlIGEgc3RyaW5nDQogIC8vICAgb2YgSlMgdGhhdCdzIGFuIGV4cHIgdGhhdCB5aWVsZHMgYSBmdW5jdGlvbiwgYW5kICJkYXRhIiBzaG91bGQgYmUNCiAgLy8gICBhbiBvYmplY3QgdGhhdCB3aWxsIGJlIGFkZGVkIGFzIGFuIGFkZGl0aW9uYWwgYXJndW1lbnQgd2hlbiB0aGF0DQogIC8vICAgZnVuY3Rpb24gaXMgY2FsbGVkLg0KICAvLyBAcGFyYW0gdGFyZ2V0IFRoZSBvYmplY3QgdGhhdCB3aWxsIGJlICJ0aGlzIiBmb3IgZWFjaCBmdW5jdGlvbg0KICAvLyAgIGV4ZWN1dGlvbi4NCiAgLy8gQHBhcmFtIGFyZ3MgQXJyYXkgb2YgYXJndW1lbnRzIHRvIGJlIHBhc3NlZCB0byB0aGUgZnVuY3Rpb25zLiAoVGhlDQogIC8vICAgc2FtZSBhcmd1bWVudHMgd2lsbCBiZSBwYXNzZWQgdG8gYWxsIGZ1bmN0aW9ucy4pDQogIGZ1bmN0aW9uIGV2YWxBbmRSdW4odGFza3MsIHRhcmdldCwgYXJncykgew0KICAgIGlmICh0YXNrcykgew0KICAgICAgZm9yRWFjaCh0YXNrcywgZnVuY3Rpb24odGFzaykgew0KICAgICAgICB2YXIgdGhlc2VBcmdzID0gYXJnczsNCiAgICAgICAgaWYgKHR5cGVvZih0YXNrKSA9PT0gIm9iamVjdCIpIHsNCiAgICAgICAgICB0aGVzZUFyZ3MgPSB0aGVzZUFyZ3MuY29uY2F0KFt0YXNrLmRhdGFdKTsNCiAgICAgICAgICB0YXNrID0gdGFzay5jb2RlOw0KICAgICAgICB9DQogICAgICAgIHZhciB0YXNrRnVuYyA9IGV2YWwoIigiICsgdGFzayArICIpIik7DQogICAgICAgIGlmICh0eXBlb2YodGFza0Z1bmMpICE9PSAiZnVuY3Rpb24iKSB7DQogICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJUYXNrIG11c3QgYmUgYSBmdW5jdGlvbiEgU291cmNlOlxuIiArIHRhc2spOw0KICAgICAgICB9DQogICAgICAgIHRhc2tGdW5jLmFwcGx5KHRhcmdldCwgdGhlc2VBcmdzKTsNCiAgICAgIH0pOw0KICAgIH0NCiAgfQ0KDQogIGZ1bmN0aW9uIGluaXRTaXppbmcoZWwpIHsNCiAgICB2YXIgc2l6aW5nID0gc2l6aW5nUG9saWN5KGVsKTsNCiAgICBpZiAoIXNpemluZykNCiAgICAgIHJldHVybjsNCg0KICAgIHZhciBjZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaHRtbHdpZGdldF9jb250YWluZXIiKTsNCiAgICBpZiAoIWNlbCkNCiAgICAgIHJldHVybjsNCg0KICAgIGlmICh0eXBlb2Yoc2l6aW5nLnBhZGRpbmcpICE9PSAidW5kZWZpbmVkIikgew0KICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5tYXJnaW4gPSAiMCI7DQogICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLnBhZGRpbmcgPSBwYWRkaW5nVG9Dc3ModW5wYWNrUGFkZGluZyhzaXppbmcucGFkZGluZykpOw0KICAgIH0NCg0KICAgIGlmIChzaXppbmcuZmlsbCkgew0KICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdyA9ICJoaWRkZW4iOw0KICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS53aWR0aCA9ICIxMDAlIjsNCiAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUuaGVpZ2h0ID0gIjEwMCUiOw0KICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLndpZHRoID0gIjEwMCUiOw0KICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLmhlaWdodCA9ICIxMDAlIjsNCiAgICAgIGlmIChjZWwpIHsNCiAgICAgICAgY2VsLnN0eWxlLnBvc2l0aW9uID0gImFic29sdXRlIjsNCiAgICAgICAgdmFyIHBhZCA9IHVucGFja1BhZGRpbmcoc2l6aW5nLnBhZGRpbmcpOw0KICAgICAgICBjZWwuc3R5bGUudG9wID0gcGFkLnRvcCArICJweCI7DQogICAgICAgIGNlbC5zdHlsZS5yaWdodCA9IHBhZC5yaWdodCArICJweCI7DQogICAgICAgIGNlbC5zdHlsZS5ib3R0b20gPSBwYWQuYm90dG9tICsgInB4IjsNCiAgICAgICAgY2VsLnN0eWxlLmxlZnQgPSBwYWQubGVmdCArICJweCI7DQogICAgICAgIGVsLnN0eWxlLndpZHRoID0gIjEwMCUiOw0KICAgICAgICBlbC5zdHlsZS5oZWlnaHQgPSAiMTAwJSI7DQogICAgICB9DQoNCiAgICAgIHJldHVybiB7DQogICAgICAgIGdldFdpZHRoOiBmdW5jdGlvbigpIHsgcmV0dXJuIGNlbC5vZmZzZXRXaWR0aDsgfSwNCiAgICAgICAgZ2V0SGVpZ2h0OiBmdW5jdGlvbigpIHsgcmV0dXJuIGNlbC5vZmZzZXRIZWlnaHQ7IH0NCiAgICAgIH07DQoNCiAgICB9IGVsc2Ugew0KICAgICAgZWwuc3R5bGUud2lkdGggPSBweChzaXppbmcud2lkdGgpOw0KICAgICAgZWwuc3R5bGUuaGVpZ2h0ID0gcHgoc2l6aW5nLmhlaWdodCk7DQoNCiAgICAgIHJldHVybiB7DQogICAgICAgIGdldFdpZHRoOiBmdW5jdGlvbigpIHsgcmV0dXJuIGVsLm9mZnNldFdpZHRoOyB9LA0KICAgICAgICBnZXRIZWlnaHQ6IGZ1bmN0aW9uKCkgeyByZXR1cm4gZWwub2Zmc2V0SGVpZ2h0OyB9DQogICAgICB9Ow0KICAgIH0NCiAgfQ0KDQogIC8vIERlZmF1bHQgaW1wbGVtZW50YXRpb25zIGZvciBtZXRob2RzDQogIHZhciBkZWZhdWx0cyA9IHsNCiAgICBmaW5kOiBmdW5jdGlvbihzY29wZSkgew0KICAgICAgcmV0dXJuIHF1ZXJ5U2VsZWN0b3JBbGwoc2NvcGUsICIuIiArIHRoaXMubmFtZSk7DQogICAgfSwNCiAgICByZW5kZXJFcnJvcjogZnVuY3Rpb24oZWwsIGVycikgew0KICAgICAgdmFyICRlbCA9ICQoZWwpOw0KDQogICAgICB0aGlzLmNsZWFyRXJyb3IoZWwpOw0KDQogICAgICAvLyBBZGQgYWxsIHRoZXNlIGVycm9yIGNsYXNzZXMsIGFzIFNoaW55IGRvZXMNCiAgICAgIHZhciBlcnJDbGFzcyA9ICJzaGlueS1vdXRwdXQtZXJyb3IiOw0KICAgICAgaWYgKGVyci50eXBlICE9PSBudWxsKSB7DQogICAgICAgIC8vIHVzZSB0aGUgY2xhc3NlcyBvZiB0aGUgZXJyb3IgY29uZGl0aW9uIGFzIENTUyBjbGFzcyBuYW1lcw0KICAgICAgICBlcnJDbGFzcyA9IGVyckNsYXNzICsgIiAiICsgJC5tYXAoYXNBcnJheShlcnIudHlwZSksIGZ1bmN0aW9uKHR5cGUpIHsNCiAgICAgICAgICByZXR1cm4gZXJyQ2xhc3MgKyAiLSIgKyB0eXBlOw0KICAgICAgICB9KS5qb2luKCIgIik7DQogICAgICB9DQogICAgICBlcnJDbGFzcyA9IGVyckNsYXNzICsgIiBodG1sd2lkZ2V0cy1lcnJvciI7DQoNCiAgICAgIC8vIElzIGVsIGlubGluZSBvciBibG9jaz8gSWYgaW5saW5lIG9yIGlubGluZS1ibG9jaywganVzdCBkaXNwbGF5Om5vbmUgaXQNCiAgICAgIC8vIGFuZCBhZGQgYW4gaW5saW5lIGVycm9yLg0KICAgICAgdmFyIGRpc3BsYXkgPSAkZWwuY3NzKCJkaXNwbGF5Iik7DQogICAgICAkZWwuZGF0YSgicmVzdG9yZS1kaXNwbGF5LW1vZGUiLCBkaXNwbGF5KTsNCg0KICAgICAgaWYgKGRpc3BsYXkgPT09ICJpbmxpbmUiIHx8IGRpc3BsYXkgPT09ICJpbmxpbmUtYmxvY2siKSB7DQogICAgICAgICRlbC5oaWRlKCk7DQogICAgICAgIGlmIChlcnIubWVzc2FnZSAhPT0gIiIpIHsNCiAgICAgICAgICB2YXIgZXJyb3JTcGFuID0gJCgiPHNwYW4+IikuYWRkQ2xhc3MoZXJyQ2xhc3MpOw0KICAgICAgICAgIGVycm9yU3Bhbi50ZXh0KGVyci5tZXNzYWdlKTsNCiAgICAgICAgICAkZWwuYWZ0ZXIoZXJyb3JTcGFuKTsNCiAgICAgICAgfQ0KICAgICAgfSBlbHNlIGlmIChkaXNwbGF5ID09PSAiYmxvY2siKSB7DQogICAgICAgIC8vIElmIGJsb2NrLCBhZGQgYW4gZXJyb3IganVzdCBhZnRlciB0aGUgZWwsIHNldCB2aXNpYmlsaXR5Om5vbmUgb24gdGhlDQogICAgICAgIC8vIGVsLCBhbmQgcG9zaXRpb24gdGhlIGVycm9yIHRvIGJlIG9uIHRvcCBvZiB0aGUgZWwuDQogICAgICAgIC8vIE1hcmsgaXQgd2l0aCBhIHVuaXF1ZSBJRCBhbmQgQ1NTIGNsYXNzIHNvIHdlIGNhbiByZW1vdmUgaXQgbGF0ZXIuDQogICAgICAgICRlbC5jc3MoInZpc2liaWxpdHkiLCAiaGlkZGVuIik7DQogICAgICAgIGlmIChlcnIubWVzc2FnZSAhPT0gIiIpIHsNCiAgICAgICAgICB2YXIgZXJyb3JEaXYgPSAkKCI8ZGl2PiIpLmFkZENsYXNzKGVyckNsYXNzKS5jc3MoInBvc2l0aW9uIiwgImFic29sdXRlIikNCiAgICAgICAgICAgIC5jc3MoInRvcCIsIGVsLm9mZnNldFRvcCkNCiAgICAgICAgICAgIC5jc3MoImxlZnQiLCBlbC5vZmZzZXRMZWZ0KQ0KICAgICAgICAgICAgLy8gc2V0dGluZyB3aWR0aCBjYW4gcHVzaCBvdXQgdGhlIHBhZ2Ugc2l6ZSwgZm9yY2luZyBvdGhlcndpc2UNCiAgICAgICAgICAgIC8vIHVubmVjZXNzYXJ5IHNjcm9sbGJhcnMgdG8gYXBwZWFyIGFuZCBtYWtpbmcgaXQgaW1wb3NzaWJsZSBmb3INCiAgICAgICAgICAgIC8vIHRoZSBlbGVtZW50IHRvIHNocmluazsgc28gdXNlIG1heC13aWR0aCBpbnN0ZWFkDQogICAgICAgICAgICAuY3NzKCJtYXhXaWR0aCIsIGVsLm9mZnNldFdpZHRoKQ0KICAgICAgICAgICAgLmNzcygiaGVpZ2h0IiwgZWwub2Zmc2V0SGVpZ2h0KTsNCiAgICAgICAgICBlcnJvckRpdi50ZXh0KGVyci5tZXNzYWdlKTsNCiAgICAgICAgICAkZWwuYWZ0ZXIoZXJyb3JEaXYpOw0KDQogICAgICAgICAgLy8gUmVhbGx5IGR1bWIgd2F5IHRvIGtlZXAgdGhlIHNpemUvcG9zaXRpb24gb2YgdGhlIGVycm9yIGluIHN5bmMgd2l0aA0KICAgICAgICAgIC8vIHRoZSBwYXJlbnQgZWxlbWVudCBhcyB0aGUgd2luZG93IGlzIHJlc2l6ZWQgb3Igd2hhdGV2ZXIuDQogICAgICAgICAgdmFyIGludElkID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKSB7DQogICAgICAgICAgICBpZiAoIWVycm9yRGl2WzBdLnBhcmVudEVsZW1lbnQpIHsNCiAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChpbnRJZCk7DQogICAgICAgICAgICAgIHJldHVybjsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGVycm9yRGl2DQogICAgICAgICAgICAgIC5jc3MoInRvcCIsIGVsLm9mZnNldFRvcCkNCiAgICAgICAgICAgICAgLmNzcygibGVmdCIsIGVsLm9mZnNldExlZnQpDQogICAgICAgICAgICAgIC5jc3MoIm1heFdpZHRoIiwgZWwub2Zmc2V0V2lkdGgpDQogICAgICAgICAgICAgIC5jc3MoImhlaWdodCIsIGVsLm9mZnNldEhlaWdodCk7DQogICAgICAgICAgfSwgNTAwKTsNCiAgICAgICAgfQ0KICAgICAgfQ0KICAgIH0sDQogICAgY2xlYXJFcnJvcjogZnVuY3Rpb24oZWwpIHsNCiAgICAgIHZhciAkZWwgPSAkKGVsKTsNCiAgICAgIHZhciBkaXNwbGF5ID0gJGVsLmRhdGEoInJlc3RvcmUtZGlzcGxheS1tb2RlIik7DQogICAgICAkZWwuZGF0YSgicmVzdG9yZS1kaXNwbGF5LW1vZGUiLCBudWxsKTsNCg0KICAgICAgaWYgKGRpc3BsYXkgPT09ICJpbmxpbmUiIHx8IGRpc3BsYXkgPT09ICJpbmxpbmUtYmxvY2siKSB7DQogICAgICAgIGlmIChkaXNwbGF5KQ0KICAgICAgICAgICRlbC5jc3MoImRpc3BsYXkiLCBkaXNwbGF5KTsNCiAgICAgICAgJChlbC5uZXh0U2libGluZykuZmlsdGVyKCIuaHRtbHdpZGdldHMtZXJyb3IiKS5yZW1vdmUoKTsNCiAgICAgIH0gZWxzZSBpZiAoZGlzcGxheSA9PT0gImJsb2NrIil7DQogICAgICAgICRlbC5jc3MoInZpc2liaWxpdHkiLCAiaW5oZXJpdCIpOw0KICAgICAgICAkKGVsLm5leHRTaWJsaW5nKS5maWx0ZXIoIi5odG1sd2lkZ2V0cy1lcnJvciIpLnJlbW92ZSgpOw0KICAgICAgfQ0KICAgIH0sDQogICAgc2l6aW5nOiB7fQ0KICB9Ow0KDQogIC8vIENhbGxlZCBieSB3aWRnZXQgYmluZGluZ3MgdG8gcmVnaXN0ZXIgYSBuZXcgdHlwZSBvZiB3aWRnZXQuIFRoZSBkZWZpbml0aW9uDQogIC8vIG9iamVjdCBjYW4gY29udGFpbiB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6DQogIC8vIC0gbmFtZSAocmVxdWlyZWQpIC0gQSBzdHJpbmcgaW5kaWNhdGluZyB0aGUgYmluZGluZyBuYW1lLCB3aGljaCB3aWxsIGJlDQogIC8vICAgdXNlZCBieSBkZWZhdWx0IGFzIHRoZSBDU1MgY2xhc3NuYW1lIHRvIGxvb2sgZm9yLg0KICAvLyAtIGluaXRpYWxpemUgKG9wdGlvbmFsKSAtIEEgZnVuY3Rpb24oZWwpIHRoYXQgd2lsbCBiZSBjYWxsZWQgb25jZSBwZXINCiAgLy8gICB3aWRnZXQgZWxlbWVudDsgaWYgYSB2YWx1ZSBpcyByZXR1cm5lZCwgaXQgd2lsbCBiZSBwYXNzZWQgYXMgdGhlIHRoaXJkDQogIC8vICAgdmFsdWUgdG8gcmVuZGVyVmFsdWUuDQogIC8vIC0gcmVuZGVyVmFsdWUgKHJlcXVpcmVkKSAtIEEgZnVuY3Rpb24oZWwsIGRhdGEsIGluaXRWYWx1ZSkgdGhhdCB3aWxsIGJlDQogIC8vICAgY2FsbGVkIHdpdGggZGF0YS4gU3RhdGljIGNvbnRleHRzIHdpbGwgY2F1c2UgdGhpcyB0byBiZSBjYWxsZWQgb25jZSBwZXINCiAgLy8gICBlbGVtZW50OyBTaGlueSBhcHBzIHdpbGwgY2F1c2UgdGhpcyB0byBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMgcGVyDQogIC8vICAgZWxlbWVudCwgYXMgdGhlIGRhdGEgY2hhbmdlcy4NCiAgd2luZG93LkhUTUxXaWRnZXRzLndpZGdldCA9IGZ1bmN0aW9uKGRlZmluaXRpb24pIHsNCiAgICBpZiAoIWRlZmluaXRpb24ubmFtZSkgew0KICAgICAgdGhyb3cgbmV3IEVycm9yKCJXaWRnZXQgbXVzdCBoYXZlIGEgbmFtZSIpOw0KICAgIH0NCiAgICBpZiAoIWRlZmluaXRpb24udHlwZSkgew0KICAgICAgdGhyb3cgbmV3IEVycm9yKCJXaWRnZXQgbXVzdCBoYXZlIGEgdHlwZSIpOw0KICAgIH0NCiAgICAvLyBDdXJyZW50bHkgd2Ugb25seSBzdXBwb3J0IG91dHB1dCB3aWRnZXRzDQogICAgaWYgKGRlZmluaXRpb24udHlwZSAhPT0gIm91dHB1dCIpIHsNCiAgICAgIHRocm93IG5ldyBFcnJvcigiVW5yZWNvZ25pemVkIHdpZGdldCB0eXBlICciICsgZGVmaW5pdGlvbi50eXBlICsgIiciKTsNCiAgICB9DQogICAgLy8gVE9ETzogVmVyaWZ5IHRoYXQgLm5hbWUgaXMgYSB2YWxpZCBDU1MgY2xhc3NuYW1lDQoNCiAgICAvLyBTdXBwb3J0IG5ldy1zdHlsZSBpbnN0YW5jZS1ib3VuZCBkZWZpbml0aW9ucy4gT2xkLXN0eWxlIGNsYXNzLWJvdW5kDQogICAgLy8gZGVmaW5pdGlvbnMgaGF2ZSBvbmUgd2lkZ2V0ICJvYmplY3QiIHBlciB3aWRnZXQgcGVyIHR5cGUvY2xhc3Mgb2YNCiAgICAvLyB3aWRnZXQ7IHRoZSByZW5kZXJWYWx1ZSBhbmQgcmVzaXplIG1ldGhvZHMgb24gc3VjaCB3aWRnZXQgb2JqZWN0cw0KICAgIC8vIHRha2UgZWwgYW5kIGluc3RhbmNlIGFyZ3VtZW50cywgYmVjYXVzZSB0aGUgd2lkZ2V0IG9iamVjdCBjYW4ndA0KICAgIC8vIHN0b3JlIHRoZW0uIE5ldy1zdHlsZSBpbnN0YW5jZS1ib3VuZCBkZWZpbml0aW9ucyBoYXZlIG9uZSB3aWRnZXQNCiAgICAvLyBvYmplY3QgcGVyIHdpZGdldCBpbnN0YW5jZTsgdGhlIGRlZmluaXRpb24gdGhhdCdzIHBhc3NlZCBpbiBkb2Vzbid0DQogICAgLy8gcHJvdmlkZSByZW5kZXJWYWx1ZSBvciByZXNpemUgbWV0aG9kcyBhdCBhbGwsIGp1c3QgdGhlIHNpbmdsZSBtZXRob2QNCiAgICAvLyAgIGZhY3RvcnkoZWwsIHdpZHRoLCBoZWlnaHQpDQogICAgLy8gd2hpY2ggcmV0dXJucyBhbiBvYmplY3QgdGhhdCBoYXMgcmVuZGVyVmFsdWUoeCkgYW5kIHJlc2l6ZSh3LCBoKS4NCiAgICAvLyBUaGlzIGVuYWJsZXMgYSBmYXIgbW9yZSBuYXR1cmFsIHByb2dyYW1taW5nIHN0eWxlIGZvciB0aGUgd2lkZ2V0DQogICAgLy8gYXV0aG9yLCB3aG8gY2FuIHN0b3JlIHBlci1pbnN0YW5jZSBzdGF0ZSB1c2luZyBlaXRoZXIgT08tc3R5bGUNCiAgICAvLyBpbnN0YW5jZSBmaWVsZHMgb3IgZnVuY3Rpb25hbC1zdHlsZSBjbG9zdXJlIHZhcmlhYmxlcyAoSSBndWVzcyB0aGlzDQogICAgLy8gaXMgaW4gY29udHJhc3QgdG8gd2hhdCBjYW4gb25seSBiZSBjYWxsZWQgQy1zdHlsZSBwc2V1ZG8tT08gd2hpY2ggaXMNCiAgICAvLyB3aGF0IHdlIHJlcXVpcmVkIGJlZm9yZSkuDQogICAgaWYgKGRlZmluaXRpb24uZmFjdG9yeSkgew0KICAgICAgZGVmaW5pdGlvbiA9IGNyZWF0ZUxlZ2FjeURlZmluaXRpb25BZGFwdGVyKGRlZmluaXRpb24pOw0KICAgIH0NCg0KICAgIGlmICghZGVmaW5pdGlvbi5yZW5kZXJWYWx1ZSkgew0KICAgICAgdGhyb3cgbmV3IEVycm9yKCJXaWRnZXQgbXVzdCBoYXZlIGEgcmVuZGVyVmFsdWUgZnVuY3Rpb24iKTsNCiAgICB9DQoNCiAgICAvLyBGb3Igc3RhdGljIHJlbmRlcmluZyAobm9uLVNoaW55KSwgdXNlIGEgc2ltcGxlIHdpZGdldCByZWdpc3RyYXRpb24NCiAgICAvLyBzY2hlbWUuIFdlIGFsc28gdXNlIHRoaXMgc2NoZW1lIGZvciBTaGlueSBhcHBzL2RvY3VtZW50cyB0aGF0IGFsc28NCiAgICAvLyBjb250YWluIHN0YXRpYyB3aWRnZXRzLg0KICAgIHdpbmRvdy5IVE1MV2lkZ2V0cy53aWRnZXRzID0gd2luZG93LkhUTUxXaWRnZXRzLndpZGdldHMgfHwgW107DQogICAgLy8gTWVyZ2UgZGVmYXVsdHMgaW50byB0aGUgZGVmaW5pdGlvbjsgZG9uJ3QgbXV0YXRlIHRoZSBvcmlnaW5hbCBkZWZpbml0aW9uLg0KICAgIHZhciBzdGF0aWNCaW5kaW5nID0gZXh0ZW5kKHt9LCBkZWZhdWx0cywgZGVmaW5pdGlvbik7DQogICAgb3ZlcnJpZGVNZXRob2Qoc3RhdGljQmluZGluZywgImZpbmQiLCBmdW5jdGlvbihzdXBlcmZ1bmMpIHsNCiAgICAgIHJldHVybiBmdW5jdGlvbihzY29wZSkgew0KICAgICAgICB2YXIgcmVzdWx0cyA9IHN1cGVyZnVuYyhzY29wZSk7DQogICAgICAgIC8vIEZpbHRlciBvdXQgU2hpbnkgb3V0cHV0cywgd2Ugb25seSB3YW50IHRoZSBzdGF0aWMga2luZA0KICAgICAgICByZXR1cm4gZmlsdGVyQnlDbGFzcyhyZXN1bHRzLCAiaHRtbC13aWRnZXQtb3V0cHV0IiwgZmFsc2UpOw0KICAgICAgfTsNCiAgICB9KTsNCiAgICB3aW5kb3cuSFRNTFdpZGdldHMud2lkZ2V0cy5wdXNoKHN0YXRpY0JpbmRpbmcpOw0KDQogICAgaWYgKHNoaW55TW9kZSkgew0KICAgICAgLy8gU2hpbnkgaXMgcnVubmluZy4gUmVnaXN0ZXIgdGhlIGRlZmluaXRpb24gd2l0aCBhbiBvdXRwdXQgYmluZGluZy4NCiAgICAgIC8vIFRoZSBkZWZpbml0aW9uIGl0c2VsZiB3aWxsIG5vdCBiZSB0aGUgb3V0cHV0IGJpbmRpbmcsIGluc3RlYWQNCiAgICAgIC8vIHdlIHdpbGwgbWFrZSBhbiBvdXRwdXQgYmluZGluZyBvYmplY3QgdGhhdCBkZWxlZ2F0ZXMgdG8gdGhlDQogICAgICAvLyBkZWZpbml0aW9uLiBUaGlzIGlzIGJlY2F1c2Ugd2UgZm9vbGlzaGx5IHVzZWQgdGhlIHNhbWUgbWV0aG9kDQogICAgICAvLyBuYW1lIChyZW5kZXJWYWx1ZSkgZm9yIGh0bWx3aWRnZXRzIGRlZmluaXRpb24gYW5kIFNoaW55IGJpbmRpbmdzDQogICAgICAvLyBidXQgdGhleSBhY3R1YWxseSBoYXZlIHF1aXRlIGRpZmZlcmVudCBzZW1hbnRpY3MgKHRoZSBTaGlueQ0KICAgICAgLy8gYmluZGluZ3MgcmVjZWl2ZSBkYXRhIHRoYXQgaW5jbHVkZXMgbG90cyBvZiBtZXRhZGF0YSB0aGF0IGl0DQogICAgICAvLyBzdHJpcHMgb2ZmIGJlZm9yZSBjYWxsaW5nIGh0bWx3aWRnZXRzIHJlbmRlclZhbHVlKS4gV2UgY2FuJ3QNCiAgICAgIC8vIGp1c3QgaWdub3JlIHRoZSBkaWZmZXJlbmNlIGJlY2F1c2UgaW4gc29tZSB3aWRnZXRzIGl0J3MgaGVscGZ1bA0KICAgICAgLy8gdG8gY2FsbCB0aGlzLnJlbmRlclZhbHVlKCkgZnJvbSBpbnNpZGUgb2YgcmVzaXplKCksIGFuZCBpZg0KICAgICAgLy8gd2UncmUgbm90IGRlbGVnYXRpbmcsIHRoZW4gdGhhdCBjYWxsIHdpbGwgZ28gdG8gdGhlIFNoaW55DQogICAgICAvLyB2ZXJzaW9uIGluc3RlYWQgb2YgdGhlIGh0bWx3aWRnZXRzIHZlcnNpb24uDQoNCiAgICAgIC8vIE1lcmdlIGRlZmF1bHRzIHdpdGggZGVmaW5pdGlvbiwgd2l0aG91dCBtdXRhdGluZyBlaXRoZXIuDQogICAgICB2YXIgYmluZGluZ0RlZiA9IGV4dGVuZCh7fSwgZGVmYXVsdHMsIGRlZmluaXRpb24pOw0KDQogICAgICAvLyBUaGlzIG9iamVjdCB3aWxsIGJlIG91ciBhY3R1YWwgU2hpbnkgYmluZGluZy4NCiAgICAgIHZhciBzaGlueUJpbmRpbmcgPSBuZXcgU2hpbnkuT3V0cHV0QmluZGluZygpOw0KDQogICAgICAvLyBXaXRoIGEgZmV3IGV4Y2VwdGlvbnMsIHdlJ2xsIHdhbnQgdG8gc2ltcGx5IHVzZSB0aGUgYmluZGluZ0RlZidzDQogICAgICAvLyB2ZXJzaW9uIG9mIG1ldGhvZHMgaWYgdGhleSBhcmUgYXZhaWxhYmxlLCBvdGhlcndpc2UgZmFsbCBiYWNrIHRvDQogICAgICAvLyBTaGlueSdzIGRlZmF1bHRzLiBOT1RFOiBJZiBTaGlueSdzIG91dHB1dCBiaW5kaW5ncyBnYWluIGFkZGl0aW9uYWwNCiAgICAgIC8vIG1ldGhvZHMgaW4gdGhlIGZ1dHVyZSwgYW5kIHdlIHdhbnQgdGhlbSB0byBiZSBvdmVycmlkZWFibGUgYnkNCiAgICAgIC8vIEhUTUxXaWRnZXQgYmluZGluZyBkZWZpbml0aW9ucywgdGhlbiB3ZSdsbCBuZWVkIHRvIGFkZCB0aGVtIHRvIHRoaXMNCiAgICAgIC8vIGxpc3QuDQogICAgICBkZWxlZ2F0ZU1ldGhvZChzaGlueUJpbmRpbmcsIGJpbmRpbmdEZWYsICJnZXRJZCIpOw0KICAgICAgZGVsZWdhdGVNZXRob2Qoc2hpbnlCaW5kaW5nLCBiaW5kaW5nRGVmLCAib25WYWx1ZUNoYW5nZSIpOw0KICAgICAgZGVsZWdhdGVNZXRob2Qoc2hpbnlCaW5kaW5nLCBiaW5kaW5nRGVmLCAib25WYWx1ZUVycm9yIik7DQogICAgICBkZWxlZ2F0ZU1ldGhvZChzaGlueUJpbmRpbmcsIGJpbmRpbmdEZWYsICJyZW5kZXJFcnJvciIpOw0KICAgICAgZGVsZWdhdGVNZXRob2Qoc2hpbnlCaW5kaW5nLCBiaW5kaW5nRGVmLCAiY2xlYXJFcnJvciIpOw0KICAgICAgZGVsZWdhdGVNZXRob2Qoc2hpbnlCaW5kaW5nLCBiaW5kaW5nRGVmLCAic2hvd1Byb2dyZXNzIik7DQoNCiAgICAgIC8vIFRoZSBmaW5kLCByZW5kZXJWYWx1ZSwgYW5kIHJlc2l6ZSBhcmUgaGFuZGxlZCBkaWZmZXJlbnRseSwgYmVjYXVzZSB3ZQ0KICAgICAgLy8gd2FudCB0byBhY3R1YWxseSBkZWNvcmF0ZSB0aGUgYmVoYXZpb3Igb2YgdGhlIGJpbmRpbmdEZWYgbWV0aG9kcy4NCg0KICAgICAgc2hpbnlCaW5kaW5nLmZpbmQgPSBmdW5jdGlvbihzY29wZSkgew0KICAgICAgICB2YXIgcmVzdWx0cyA9IGJpbmRpbmdEZWYuZmluZChzY29wZSk7DQoNCiAgICAgICAgLy8gT25seSByZXR1cm4gZWxlbWVudHMgdGhhdCBhcmUgU2hpbnkgb3V0cHV0cywgbm90IHN0YXRpYyBvbmVzDQogICAgICAgIHZhciBkeW5hbWljUmVzdWx0cyA9IHJlc3VsdHMuZmlsdGVyKCIuaHRtbC13aWRnZXQtb3V0cHV0Iik7DQoNCiAgICAgICAgLy8gSXQncyBwb3NzaWJsZSB0aGF0IHdoYXRldmVyIGNhdXNlZCBTaGlueSB0byB0aGluayB0aGVyZSBtaWdodCBiZQ0KICAgICAgICAvLyBuZXcgZHluYW1pYyBvdXRwdXRzLCBhbHNvIGNhdXNlZCB0aGVyZSB0byBiZSBuZXcgc3RhdGljIG91dHB1dHMuDQogICAgICAgIC8vIFNpbmNlIHRoZXJlIG1pZ2h0IGJlIGxvdHMgb2YgZGlmZmVyZW50IGh0bWx3aWRnZXRzIGJpbmRpbmdzLCB3ZQ0KICAgICAgICAvLyBzY2hlZHVsZSBleGVjdXRpb24gZm9yIGxhdGVyLS1ubyBuZWVkIHRvIHN0YXRpY1JlbmRlciBtdWx0aXBsZQ0KICAgICAgICAvLyB0aW1lcy4NCiAgICAgICAgaWYgKHJlc3VsdHMubGVuZ3RoICE9PSBkeW5hbWljUmVzdWx0cy5sZW5ndGgpDQogICAgICAgICAgc2NoZWR1bGVTdGF0aWNSZW5kZXIoKTsNCg0KICAgICAgICByZXR1cm4gZHluYW1pY1Jlc3VsdHM7DQogICAgICB9Ow0KDQogICAgICAvLyBXcmFwIHJlbmRlclZhbHVlIHRvIGhhbmRsZSBpbml0aWFsaXphdGlvbiwgd2hpY2ggdW5mb3J0dW5hdGVseSBpc24ndA0KICAgICAgLy8gc3VwcG9ydGVkIG5hdGl2ZWx5IGJ5IFNoaW55IGF0IHRoZSB0aW1lIG9mIHRoaXMgd3JpdGluZy4NCg0KICAgICAgc2hpbnlCaW5kaW5nLnJlbmRlclZhbHVlID0gZnVuY3Rpb24oZWwsIGRhdGEpIHsNCiAgICAgICAgLy8gUmVzb2x2ZSBzdHJpbmdzIG1hcmtlZCBhcyBqYXZhc2NyaXB0IGxpdGVyYWxzIHRvIG9iamVjdHMNCiAgICAgICAgaWYgKCEoZGF0YS5ldmFscyBpbnN0YW5jZW9mIEFycmF5KSkgZGF0YS5ldmFscyA9IFtkYXRhLmV2YWxzXTsNCiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGRhdGEuZXZhbHMgJiYgaSA8IGRhdGEuZXZhbHMubGVuZ3RoOyBpKyspIHsNCiAgICAgICAgICB3aW5kb3cuSFRNTFdpZGdldHMuZXZhbHVhdGVTdHJpbmdNZW1iZXIoZGF0YS54LCBkYXRhLmV2YWxzW2ldKTsNCiAgICAgICAgfQ0KICAgICAgICBpZiAoIWJpbmRpbmdEZWYucmVuZGVyT25OdWxsVmFsdWUpIHsNCiAgICAgICAgICBpZiAoZGF0YS54ID09PSBudWxsKSB7DQogICAgICAgICAgICBlbC5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7DQogICAgICAgICAgICByZXR1cm47DQogICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgIGVsLnN0eWxlLnZpc2liaWxpdHkgPSAiaW5oZXJpdCI7DQogICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICAgIGlmICghZWxlbWVudERhdGEoZWwsICJpbml0aWFsaXplZCIpKSB7DQogICAgICAgICAgaW5pdFNpemluZyhlbCk7DQoNCiAgICAgICAgICBlbGVtZW50RGF0YShlbCwgImluaXRpYWxpemVkIiwgdHJ1ZSk7DQogICAgICAgICAgaWYgKGJpbmRpbmdEZWYuaW5pdGlhbGl6ZSkgew0KICAgICAgICAgICAgdmFyIHJlc3VsdCA9IGJpbmRpbmdEZWYuaW5pdGlhbGl6ZShlbCwgZWwub2Zmc2V0V2lkdGgsDQogICAgICAgICAgICAgIGVsLm9mZnNldEhlaWdodCk7DQogICAgICAgICAgICBlbGVtZW50RGF0YShlbCwgImluaXRfcmVzdWx0IiwgcmVzdWx0KTsNCiAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgU2hpbnkucmVuZGVyRGVwZW5kZW5jaWVzKGRhdGEuZGVwcyk7DQogICAgICAgIGJpbmRpbmdEZWYucmVuZGVyVmFsdWUoZWwsIGRhdGEueCwgZWxlbWVudERhdGEoZWwsICJpbml0X3Jlc3VsdCIpKTsNCiAgICAgICAgZXZhbEFuZFJ1bihkYXRhLmpzSG9va3MucmVuZGVyLCBlbGVtZW50RGF0YShlbCwgImluaXRfcmVzdWx0IiksIFtlbCwgZGF0YS54XSk7DQogICAgICB9Ow0KDQogICAgICAvLyBPbmx5IG92ZXJyaWRlIHJlc2l6ZSBpZiBiaW5kaW5nRGVmIGltcGxlbWVudHMgaXQNCiAgICAgIGlmIChiaW5kaW5nRGVmLnJlc2l6ZSkgew0KICAgICAgICBzaGlueUJpbmRpbmcucmVzaXplID0gZnVuY3Rpb24oZWwsIHdpZHRoLCBoZWlnaHQpIHsNCiAgICAgICAgICAvLyBTaGlueSBjYW4gY2FsbCByZXNpemUgYmVmb3JlIGluaXRpYWxpemUvcmVuZGVyVmFsdWUgaGF2ZSBiZWVuDQogICAgICAgICAgLy8gY2FsbGVkLCB3aGljaCBkb2Vzbid0IG1ha2Ugc2Vuc2UgZm9yIHdpZGdldHMuDQogICAgICAgICAgaWYgKGVsZW1lbnREYXRhKGVsLCAiaW5pdGlhbGl6ZWQiKSkgew0KICAgICAgICAgICAgYmluZGluZ0RlZi5yZXNpemUoZWwsIHdpZHRoLCBoZWlnaHQsIGVsZW1lbnREYXRhKGVsLCAiaW5pdF9yZXN1bHQiKSk7DQogICAgICAgICAgfQ0KICAgICAgICB9Ow0KICAgICAgfQ0KDQogICAgICBTaGlueS5vdXRwdXRCaW5kaW5ncy5yZWdpc3RlcihzaGlueUJpbmRpbmcsIGJpbmRpbmdEZWYubmFtZSk7DQogICAgfQ0KICB9Ow0KDQogIHZhciBzY2hlZHVsZVN0YXRpY1JlbmRlclRpbWVySWQgPSBudWxsOw0KICBmdW5jdGlvbiBzY2hlZHVsZVN0YXRpY1JlbmRlcigpIHsNCiAgICBpZiAoIXNjaGVkdWxlU3RhdGljUmVuZGVyVGltZXJJZCkgew0KICAgICAgc2NoZWR1bGVTdGF0aWNSZW5kZXJUaW1lcklkID0gc2V0VGltZW91dChmdW5jdGlvbigpIHsNCiAgICAgICAgc2NoZWR1bGVTdGF0aWNSZW5kZXJUaW1lcklkID0gbnVsbDsNCiAgICAgICAgd2luZG93LkhUTUxXaWRnZXRzLnN0YXRpY1JlbmRlcigpOw0KICAgICAgfSwgMSk7DQogICAgfQ0KICB9DQoNCiAgLy8gUmVuZGVyIHN0YXRpYyB3aWRnZXRzIGFmdGVyIHRoZSBkb2N1bWVudCBmaW5pc2hlcyBsb2FkaW5nDQogIC8vIFN0YXRpY2FsbHkgcmVuZGVyIGFsbCBlbGVtZW50cyB0aGF0IGFyZSBvZiB0aGlzIHdpZGdldCdzIGNsYXNzDQogIHdpbmRvdy5IVE1MV2lkZ2V0cy5zdGF0aWNSZW5kZXIgPSBmdW5jdGlvbigpIHsNCiAgICB2YXIgYmluZGluZ3MgPSB3aW5kb3cuSFRNTFdpZGdldHMud2lkZ2V0cyB8fCBbXTsNCiAgICBmb3JFYWNoKGJpbmRpbmdzLCBmdW5jdGlvbihiaW5kaW5nKSB7DQogICAgICB2YXIgbWF0Y2hlcyA9IGJpbmRpbmcuZmluZChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpOw0KICAgICAgZm9yRWFjaChtYXRjaGVzLCBmdW5jdGlvbihlbCkgew0KICAgICAgICB2YXIgc2l6ZU9iaiA9IGluaXRTaXppbmcoZWwsIGJpbmRpbmcpOw0KDQogICAgICAgIGlmIChoYXNDbGFzcyhlbCwgImh0bWwtd2lkZ2V0LXN0YXRpYy1ib3VuZCIpKQ0KICAgICAgICAgIHJldHVybjsNCiAgICAgICAgZWwuY2xhc3NOYW1lID0gZWwuY2xhc3NOYW1lICsgIiBodG1sLXdpZGdldC1zdGF0aWMtYm91bmQiOw0KDQogICAgICAgIHZhciBpbml0UmVzdWx0Ow0KICAgICAgICBpZiAoYmluZGluZy5pbml0aWFsaXplKSB7DQogICAgICAgICAgaW5pdFJlc3VsdCA9IGJpbmRpbmcuaW5pdGlhbGl6ZShlbCwNCiAgICAgICAgICAgIHNpemVPYmogPyBzaXplT2JqLmdldFdpZHRoKCkgOiBlbC5vZmZzZXRXaWR0aCwNCiAgICAgICAgICAgIHNpemVPYmogPyBzaXplT2JqLmdldEhlaWdodCgpIDogZWwub2Zmc2V0SGVpZ2h0DQogICAgICAgICAgKTsNCiAgICAgICAgICBlbGVtZW50RGF0YShlbCwgImluaXRfcmVzdWx0IiwgaW5pdFJlc3VsdCk7DQogICAgICAgIH0NCg0KICAgICAgICBpZiAoYmluZGluZy5yZXNpemUpIHsNCiAgICAgICAgICB2YXIgbGFzdFNpemUgPSB7fTsNCiAgICAgICAgICB2YXIgcmVzaXplSGFuZGxlciA9IGZ1bmN0aW9uKGUpIHsNCiAgICAgICAgICAgIHZhciBzaXplID0gew0KICAgICAgICAgICAgICB3OiBzaXplT2JqID8gc2l6ZU9iai5nZXRXaWR0aCgpIDogZWwub2Zmc2V0V2lkdGgsDQogICAgICAgICAgICAgIGg6IHNpemVPYmogPyBzaXplT2JqLmdldEhlaWdodCgpIDogZWwub2Zmc2V0SGVpZ2h0DQogICAgICAgICAgICB9Ow0KICAgICAgICAgICAgaWYgKHNpemUudyA9PT0gMCAmJiBzaXplLmggPT09IDApDQogICAgICAgICAgICAgIHJldHVybjsNCiAgICAgICAgICAgIGlmIChzaXplLncgPT09IGxhc3RTaXplLncgJiYgc2l6ZS5oID09PSBsYXN0U2l6ZS5oKQ0KICAgICAgICAgICAgICByZXR1cm47DQogICAgICAgICAgICBsYXN0U2l6ZSA9IHNpemU7DQogICAgICAgICAgICBiaW5kaW5nLnJlc2l6ZShlbCwgc2l6ZS53LCBzaXplLmgsIGluaXRSZXN1bHQpOw0KICAgICAgICAgIH07DQoNCiAgICAgICAgICBvbih3aW5kb3csICJyZXNpemUiLCByZXNpemVIYW5kbGVyKTsNCg0KICAgICAgICAgIC8vIFRoaXMgaXMgbmVlZGVkIGZvciBjYXNlcyB3aGVyZSB3ZSdyZSBydW5uaW5nIGluIGEgU2hpbnkNCiAgICAgICAgICAvLyBhcHAsIGJ1dCB0aGUgd2lkZ2V0IGl0c2VsZiBpcyBub3QgYSBTaGlueSBvdXRwdXQsIGJ1dA0KICAgICAgICAgIC8vIHJhdGhlciBhIHNpbXBsZSBzdGF0aWMgd2lkZ2V0LiBPbmUgZXhhbXBsZSBvZiB0aGlzIGlzDQogICAgICAgICAgLy8gYW4gcm1hcmtkb3duIGRvY3VtZW50IHRoYXQgaGFzIHJ1bnRpbWU6c2hpbnkgYW5kIHdpZGdldA0KICAgICAgICAgIC8vIHRoYXQgaXNuJ3QgaW4gYSByZW5kZXIgZnVuY3Rpb24uIFNoaW55IG9ubHkga25vd3MgdG8NCiAgICAgICAgICAvLyBjYWxsIHJlc2l6ZSBoYW5kbGVycyBmb3IgU2hpbnkgb3V0cHV0cywgbm90IGZvciBzdGF0aWMNCiAgICAgICAgICAvLyB3aWRnZXRzLCBzbyB3ZSBkbyBpdCBvdXJzZWx2ZXMuDQogICAgICAgICAgaWYgKHdpbmRvdy5qUXVlcnkpIHsNCiAgICAgICAgICAgIHdpbmRvdy5qUXVlcnkoZG9jdW1lbnQpLm9uKA0KICAgICAgICAgICAgICAic2hvd24uaHRtbHdpZGdldHMgc2hvd24uYnMudGFiLmh0bWx3aWRnZXRzIHNob3duLmJzLmNvbGxhcHNlLmh0bWx3aWRnZXRzIiwNCiAgICAgICAgICAgICAgcmVzaXplSGFuZGxlcg0KICAgICAgICAgICAgKTsNCiAgICAgICAgICAgIHdpbmRvdy5qUXVlcnkoZG9jdW1lbnQpLm9uKA0KICAgICAgICAgICAgICAiaGlkZGVuLmh0bWx3aWRnZXRzIGhpZGRlbi5icy50YWIuaHRtbHdpZGdldHMgaGlkZGVuLmJzLmNvbGxhcHNlLmh0bWx3aWRnZXRzIiwNCiAgICAgICAgICAgICAgcmVzaXplSGFuZGxlcg0KICAgICAgICAgICAgKTsNCiAgICAgICAgICB9DQoNCiAgICAgICAgICAvLyBUaGlzIGlzIG5lZWRlZCBmb3IgdGhlIHNwZWNpZmljIGNhc2Ugb2YgaW9zbGlkZXMsIHdoaWNoDQogICAgICAgICAgLy8gZmxpcHMgc2xpZGVzIGJldHdlZW4gZGlzcGxheTpub25lIGFuZCBkaXNwbGF5OmJsb2NrLg0KICAgICAgICAgIC8vIElkZWFsbHkgd2Ugd291bGQgbm90IGhhdmUgdG8gaGF2ZSBpb3NsaWRlLXNwZWNpZmljIGNvZGUNCiAgICAgICAgICAvLyBoZXJlLCBidXQgcmF0aGVyIGhhdmUgaW9zbGlkZXMgcmFpc2UgYSBnZW5lcmljIGV2ZW50LA0KICAgICAgICAgIC8vIGJ1dCB0aGUgcm1hcmtkb3duIHBhY2thZ2UganVzdCB3ZW50IHRvIENSQU4gc28gdGhlDQogICAgICAgICAgLy8gd2luZG93IHRvIGdldHRpbmcgdGhhdCBmaXhlZCBtYXkgYmUgbG9uZy4NCiAgICAgICAgICBpZiAod2luZG93LmFkZEV2ZW50TGlzdGVuZXIpIHsNCiAgICAgICAgICAgIC8vIEl0J3MgT0sgdG8gbGltaXQgdGhpcyB0byB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcg0KICAgICAgICAgICAgLy8gYnJvd3NlcnMgYmVjYXVzZSBpb3NsaWRlcyBpdHNlbGYgb25seSBzdXBwb3J0cw0KICAgICAgICAgICAgLy8gc3VjaCBicm93c2Vycy4NCiAgICAgICAgICAgIG9uKGRvY3VtZW50LCAic2xpZGVlbnRlciIsIHJlc2l6ZUhhbmRsZXIpOw0KICAgICAgICAgICAgb24oZG9jdW1lbnQsICJzbGlkZWxlYXZlIiwgcmVzaXplSGFuZGxlcik7DQogICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgdmFyIHNjcmlwdERhdGEgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJzY3JpcHRbZGF0YS1mb3I9JyIgKyBlbC5pZCArICInXVt0eXBlPSdhcHBsaWNhdGlvbi9qc29uJ10iKTsNCiAgICAgICAgaWYgKHNjcmlwdERhdGEpIHsNCiAgICAgICAgICB2YXIgZGF0YSA9IEpTT04ucGFyc2Uoc2NyaXB0RGF0YS50ZXh0Q29udGVudCB8fCBzY3JpcHREYXRhLnRleHQpOw0KICAgICAgICAgIC8vIFJlc29sdmUgc3RyaW5ncyBtYXJrZWQgYXMgamF2YXNjcmlwdCBsaXRlcmFscyB0byBvYmplY3RzDQogICAgICAgICAgaWYgKCEoZGF0YS5ldmFscyBpbnN0YW5jZW9mIEFycmF5KSkgZGF0YS5ldmFscyA9IFtkYXRhLmV2YWxzXTsNCiAgICAgICAgICBmb3IgKHZhciBrID0gMDsgZGF0YS5ldmFscyAmJiBrIDwgZGF0YS5ldmFscy5sZW5ndGg7IGsrKykgew0KICAgICAgICAgICAgd2luZG93LkhUTUxXaWRnZXRzLmV2YWx1YXRlU3RyaW5nTWVtYmVyKGRhdGEueCwgZGF0YS5ldmFsc1trXSk7DQogICAgICAgICAgfQ0KICAgICAgICAgIGJpbmRpbmcucmVuZGVyVmFsdWUoZWwsIGRhdGEueCwgaW5pdFJlc3VsdCk7DQogICAgICAgICAgZXZhbEFuZFJ1bihkYXRhLmpzSG9va3MucmVuZGVyLCBpbml0UmVzdWx0LCBbZWwsIGRhdGEueF0pOw0KICAgICAgICB9DQogICAgICB9KTsNCiAgICB9KTsNCg0KICAgIGludm9rZVBvc3RSZW5kZXJIYW5kbGVycygpOw0KICB9DQoNCiAgLy8gV2FpdCB1bnRpbCBhZnRlciB0aGUgZG9jdW1lbnQgaGFzIGxvYWRlZCB0byByZW5kZXIgdGhlIHdpZGdldHMuDQogIGlmIChkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKSB7DQogICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsIGZ1bmN0aW9uKCkgew0KICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsIGFyZ3VtZW50cy5jYWxsZWUsIGZhbHNlKTsNCiAgICAgIHdpbmRvdy5IVE1MV2lkZ2V0cy5zdGF0aWNSZW5kZXIoKTsNCiAgICB9LCBmYWxzZSk7DQogIH0gZWxzZSBpZiAoZG9jdW1lbnQuYXR0YWNoRXZlbnQpIHsNCiAgICBkb2N1bWVudC5hdHRhY2hFdmVudCgib25yZWFkeXN0YXRlY2hhbmdlIiwgZnVuY3Rpb24oKSB7DQogICAgICBpZiAoZG9jdW1lbnQucmVhZHlTdGF0ZSA9PT0gImNvbXBsZXRlIikgew0KICAgICAgICBkb2N1bWVudC5kZXRhY2hFdmVudCgib25yZWFkeXN0YXRlY2hhbmdlIiwgYXJndW1lbnRzLmNhbGxlZSk7DQogICAgICAgIHdpbmRvdy5IVE1MV2lkZ2V0cy5zdGF0aWNSZW5kZXIoKTsNCiAgICAgIH0NCiAgICB9KTsNCiAgfQ0KDQoNCiAgd2luZG93LkhUTUxXaWRnZXRzLmdldEF0dGFjaG1lbnRVcmwgPSBmdW5jdGlvbihkZXBuYW1lLCBrZXkpIHsNCiAgICAvLyBJZiBubyBrZXksIGRlZmF1bHQgdG8gdGhlIGZpcnN0IGl0ZW0NCiAgICBpZiAodHlwZW9mKGtleSkgPT09ICJ1bmRlZmluZWQiKQ0KICAgICAga2V5ID0gMTsNCg0KICAgIHZhciBsaW5rID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZGVwbmFtZSArICItIiArIGtleSArICItYXR0YWNobWVudCIpOw0KICAgIGlmICghbGluaykgew0KICAgICAgdGhyb3cgbmV3IEVycm9yKCJBdHRhY2htZW50ICIgKyBkZXBuYW1lICsgIi8iICsga2V5ICsgIiBub3QgZm91bmQgaW4gZG9jdW1lbnQiKTsNCiAgICB9DQogICAgcmV0dXJuIGxpbmsuZ2V0QXR0cmlidXRlKCJocmVmIik7DQogIH07DQoNCiAgd2luZG93LkhUTUxXaWRnZXRzLmRhdGFmcmFtZVRvRDMgPSBmdW5jdGlvbihkZikgew0KICAgIHZhciBuYW1lcyA9IFtdOw0KICAgIHZhciBsZW5ndGg7DQogICAgZm9yICh2YXIgbmFtZSBpbiBkZikgew0KICAgICAgICBpZiAoZGYuaGFzT3duUHJvcGVydHkobmFtZSkpDQogICAgICAgICAgICBuYW1lcy5wdXNoKG5hbWUpOw0KICAgICAgICBpZiAodHlwZW9mKGRmW25hbWVdKSAhPT0gIm9iamVjdCIgfHwgdHlwZW9mKGRmW25hbWVdLmxlbmd0aCkgPT09ICJ1bmRlZmluZWQiKSB7DQogICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkFsbCBmaWVsZHMgbXVzdCBiZSBhcnJheXMiKTsNCiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YobGVuZ3RoKSAhPT0gInVuZGVmaW5lZCIgJiYgbGVuZ3RoICE9PSBkZltuYW1lXS5sZW5ndGgpIHsNCiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiQWxsIGZpZWxkcyBtdXN0IGJlIGFycmF5cyBvZiB0aGUgc2FtZSBsZW5ndGgiKTsNCiAgICAgICAgfQ0KICAgICAgICBsZW5ndGggPSBkZltuYW1lXS5sZW5ndGg7DQogICAgfQ0KICAgIHZhciByZXN1bHRzID0gW107DQogICAgdmFyIGl0ZW07DQogICAgZm9yICh2YXIgcm93ID0gMDsgcm93IDwgbGVuZ3RoOyByb3crKykgew0KICAgICAgICBpdGVtID0ge307DQogICAgICAgIGZvciAodmFyIGNvbCA9IDA7IGNvbCA8IG5hbWVzLmxlbmd0aDsgY29sKyspIHsNCiAgICAgICAgICAgIGl0ZW1bbmFtZXNbY29sXV0gPSBkZltuYW1lc1tjb2xdXVtyb3ddOw0KICAgICAgICB9DQogICAgICAgIHJlc3VsdHMucHVzaChpdGVtKTsNCiAgICB9DQogICAgcmV0dXJuIHJlc3VsdHM7DQogIH07DQoNCiAgd2luZG93LkhUTUxXaWRnZXRzLnRyYW5zcG9zZUFycmF5MkQgPSBmdW5jdGlvbihhcnJheSkgew0KICAgICAgaWYgKGFycmF5Lmxlbmd0aCA9PT0gMCkgcmV0dXJuIGFycmF5Ow0KICAgICAgdmFyIG5ld0FycmF5ID0gYXJyYXlbMF0ubWFwKGZ1bmN0aW9uKGNvbCwgaSkgew0KICAgICAgICAgIHJldHVybiBhcnJheS5tYXAoZnVuY3Rpb24ocm93KSB7DQogICAgICAgICAgICAgIHJldHVybiByb3dbaV0NCiAgICAgICAgICB9KQ0KICAgICAgfSk7DQogICAgICByZXR1cm4gbmV3QXJyYXk7DQogIH07DQogIC8vIFNwbGl0IHZhbHVlIGF0IHNwbGl0Q2hhciwgYnV0IGFsbG93IHNwbGl0Q2hhciB0byBiZSBlc2NhcGVkDQogIC8vIHVzaW5nIGVzY2FwZUNoYXIuIEFueSBvdGhlciBjaGFyYWN0ZXJzIGVzY2FwZWQgYnkgZXNjYXBlQ2hhcg0KICAvLyB3aWxsIGJlIGluY2x1ZGVkIGFzIHVzdWFsIChpbmNsdWRpbmcgZXNjYXBlQ2hhciBpdHNlbGYpLg0KICBmdW5jdGlvbiBzcGxpdFdpdGhFc2NhcGUodmFsdWUsIHNwbGl0Q2hhciwgZXNjYXBlQ2hhcikgew0KICAgIHZhciByZXN1bHRzID0gW107DQogICAgdmFyIGVzY2FwZU1vZGUgPSBmYWxzZTsNCiAgICB2YXIgY3VycmVudFJlc3VsdCA9ICIiOw0KICAgIGZvciAodmFyIHBvcyA9IDA7IHBvcyA8IHZhbHVlLmxlbmd0aDsgcG9zKyspIHsNCiAgICAgIGlmICghZXNjYXBlTW9kZSkgew0KICAgICAgICBpZiAodmFsdWVbcG9zXSA9PT0gc3BsaXRDaGFyKSB7DQogICAgICAgICAgcmVzdWx0cy5wdXNoKGN1cnJlbnRSZXN1bHQpOw0KICAgICAgICAgIGN1cnJlbnRSZXN1bHQgPSAiIjsNCiAgICAgICAgfSBlbHNlIGlmICh2YWx1ZVtwb3NdID09PSBlc2NhcGVDaGFyKSB7DQogICAgICAgICAgZXNjYXBlTW9kZSA9IHRydWU7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgY3VycmVudFJlc3VsdCArPSB2YWx1ZVtwb3NdOw0KICAgICAgICB9DQogICAgICB9IGVsc2Ugew0KICAgICAgICBjdXJyZW50UmVzdWx0ICs9IHZhbHVlW3Bvc107DQogICAgICAgIGVzY2FwZU1vZGUgPSBmYWxzZTsNCiAgICAgIH0NCiAgICB9DQogICAgaWYgKGN1cnJlbnRSZXN1bHQgIT09ICIiKSB7DQogICAgICByZXN1bHRzLnB1c2goY3VycmVudFJlc3VsdCk7DQogICAgfQ0KICAgIHJldHVybiByZXN1bHRzOw0KICB9DQogIC8vIEZ1bmN0aW9uIGF1dGhvcmVkIGJ5IFlpaHVpL0pKIEFsbGFpcmUNCiAgd2luZG93LkhUTUxXaWRnZXRzLmV2YWx1YXRlU3RyaW5nTWVtYmVyID0gZnVuY3Rpb24obywgbWVtYmVyKSB7DQogICAgdmFyIHBhcnRzID0gc3BsaXRXaXRoRXNjYXBlKG1lbWJlciwgJy4nLCAnXFwnKTsNCiAgICBmb3IgKHZhciBpID0gMCwgbCA9IHBhcnRzLmxlbmd0aDsgaSA8IGw7IGkrKykgew0KICAgICAgdmFyIHBhcnQgPSBwYXJ0c1tpXTsNCiAgICAgIC8vIHBhcnQgbWF5IGJlIGEgY2hhcmFjdGVyIG9yICdudW1lcmljJyBtZW1iZXIgbmFtZQ0KICAgICAgaWYgKG8gIT09IG51bGwgJiYgdHlwZW9mIG8gPT09ICJvYmplY3QiICYmIHBhcnQgaW4gbykgew0KICAgICAgICBpZiAoaSA9PSAobCAtIDEpKSB7IC8vIGlmIHdlIGFyZSBhdCB0aGUgZW5kIG9mIHRoZSBsaW5lIHRoZW4gZXZhbHVsYXRlDQogICAgICAgICAgaWYgKHR5cGVvZiBvW3BhcnRdID09PSAic3RyaW5nIikNCiAgICAgICAgICAgIG9bcGFydF0gPSBldmFsKCIoIiArIG9bcGFydF0gKyAiKSIpOw0KICAgICAgICB9IGVsc2UgeyAvLyBvdGhlcndpc2UgY29udGludWUgdG8gbmV4dCBlbWJlZGRlZCBvYmplY3QNCiAgICAgICAgICBvID0gb1twYXJ0XTsNCiAgICAgICAgfQ0KICAgICAgfQ0KICAgIH0NCiAgfTsNCg0KICAvLyBSZXRyaWV2ZSB0aGUgSFRNTFdpZGdldCBpbnN0YW5jZSAoaS5lLiB0aGUgcmV0dXJuIHZhbHVlIG9mIGFuDQogIC8vIEhUTUxXaWRnZXQgYmluZGluZydzIGluaXRpYWxpemUoKSBvciBmYWN0b3J5KCkgZnVuY3Rpb24pDQogIC8vIGFzc29jaWF0ZWQgd2l0aCBhbiBlbGVtZW50LCBvciBudWxsIGlmIG5vbmUuDQogIHdpbmRvdy5IVE1MV2lkZ2V0cy5nZXRJbnN0YW5jZSA9IGZ1bmN0aW9uKGVsKSB7DQogICAgcmV0dXJuIGVsZW1lbnREYXRhKGVsLCAiaW5pdF9yZXN1bHQiKTsNCiAgfTsNCg0KICAvLyBGaW5kcyB0aGUgZmlyc3QgZWxlbWVudCBpbiB0aGUgc2NvcGUgdGhhdCBtYXRjaGVzIHRoZSBzZWxlY3RvciwNCiAgLy8gYW5kIHJldHVybnMgdGhlIEhUTUxXaWRnZXQgaW5zdGFuY2UgKGkuZS4gdGhlIHJldHVybiB2YWx1ZSBvZg0KICAvLyBhbiBIVE1MV2lkZ2V0IGJpbmRpbmcncyBpbml0aWFsaXplKCkgb3IgZmFjdG9yeSgpIGZ1bmN0aW9uKQ0KICAvLyBhc3NvY2lhdGVkIHdpdGggdGhhdCBlbGVtZW50LCBpZiBhbnkuIElmIG5vIGVsZW1lbnQgbWF0Y2hlcyB0aGUNCiAgLy8gc2VsZWN0b3IsIG9yIHRoZSBmaXJzdCBtYXRjaGluZyBlbGVtZW50IGhhcyBubyBIVE1MV2lkZ2V0DQogIC8vIGluc3RhbmNlIGFzc29jaWF0ZWQgd2l0aCBpdCwgdGhlbiBudWxsIGlzIHJldHVybmVkLg0KICAvLw0KICAvLyBUaGUgc2NvcGUgYXJndW1lbnQgaXMgb3B0aW9uYWwsIGFuZCBkZWZhdWx0cyB0byB3aW5kb3cuZG9jdW1lbnQuDQogIHdpbmRvdy5IVE1MV2lkZ2V0cy5maW5kID0gZnVuY3Rpb24oc2NvcGUsIHNlbGVjdG9yKSB7DQogICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT0gMSkgew0KICAgICAgc2VsZWN0b3IgPSBzY29wZTsNCiAgICAgIHNjb3BlID0gZG9jdW1lbnQ7DQogICAgfQ0KDQogICAgdmFyIGVsID0gc2NvcGUucXVlcnlTZWxlY3RvcihzZWxlY3Rvcik7DQogICAgaWYgKGVsID09PSBudWxsKSB7DQogICAgICByZXR1cm4gbnVsbDsNCiAgICB9IGVsc2Ugew0KICAgICAgcmV0dXJuIHdpbmRvdy5IVE1MV2lkZ2V0cy5nZXRJbnN0YW5jZShlbCk7DQogICAgfQ0KICB9Ow0KDQogIC8vIEZpbmRzIGFsbCBlbGVtZW50cyBpbiB0aGUgc2NvcGUgdGhhdCBtYXRjaCB0aGUgc2VsZWN0b3IsIGFuZA0KICAvLyByZXR1cm5zIHRoZSBIVE1MV2lkZ2V0IGluc3RhbmNlcyAoaS5lLiB0aGUgcmV0dXJuIHZhbHVlcyBvZg0KICAvLyBhbiBIVE1MV2lkZ2V0IGJpbmRpbmcncyBpbml0aWFsaXplKCkgb3IgZmFjdG9yeSgpIGZ1bmN0aW9uKQ0KICAvLyBhc3NvY2lhdGVkIHdpdGggdGhlIGVsZW1lbnRzLCBpbiBhbiBhcnJheS4gSWYgZWxlbWVudHMgdGhhdA0KICAvLyBtYXRjaCB0aGUgc2VsZWN0b3IgZG9uJ3QgaGF2ZSBhbiBhc3NvY2lhdGVkIEhUTUxXaWRnZXQNCiAgLy8gaW5zdGFuY2UsIHRoZSByZXR1cm5lZCBhcnJheSB3aWxsIGNvbnRhaW4gbnVsbHMuDQogIC8vDQogIC8vIFRoZSBzY29wZSBhcmd1bWVudCBpcyBvcHRpb25hbCwgYW5kIGRlZmF1bHRzIHRvIHdpbmRvdy5kb2N1bWVudC4NCiAgd2luZG93LkhUTUxXaWRnZXRzLmZpbmRBbGwgPSBmdW5jdGlvbihzY29wZSwgc2VsZWN0b3IpIHsNCiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PSAxKSB7DQogICAgICBzZWxlY3RvciA9IHNjb3BlOw0KICAgICAgc2NvcGUgPSBkb2N1bWVudDsNCiAgICB9DQoNCiAgICB2YXIgbm9kZXMgPSBzY29wZS5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yKTsNCiAgICB2YXIgcmVzdWx0cyA9IFtdOw0KICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbm9kZXMubGVuZ3RoOyBpKyspIHsNCiAgICAgIHJlc3VsdHMucHVzaCh3aW5kb3cuSFRNTFdpZGdldHMuZ2V0SW5zdGFuY2Uobm9kZXNbaV0pKTsNCiAgICB9DQogICAgcmV0dXJuIHJlc3VsdHM7DQogIH07DQoNCiAgdmFyIHBvc3RSZW5kZXJIYW5kbGVycyA9IFtdOw0KICBmdW5jdGlvbiBpbnZva2VQb3N0UmVuZGVySGFuZGxlcnMoKSB7DQogICAgd2hpbGUgKHBvc3RSZW5kZXJIYW5kbGVycy5sZW5ndGgpIHsNCiAgICAgIHZhciBoYW5kbGVyID0gcG9zdFJlbmRlckhhbmRsZXJzLnNoaWZ0KCk7DQogICAgICBpZiAoaGFuZGxlcikgew0KICAgICAgICBoYW5kbGVyKCk7DQogICAgICB9DQogICAgfQ0KICB9DQoNCiAgLy8gUmVnaXN0ZXIgdGhlIGdpdmVuIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIGJlIGludm9rZWQgYWZ0ZXIgdGhlDQogIC8vIG5leHQgdGltZSBzdGF0aWMgd2lkZ2V0cyBhcmUgcmVuZGVyZWQuDQogIHdpbmRvdy5IVE1MV2lkZ2V0cy5hZGRQb3N0UmVuZGVySGFuZGxlciA9IGZ1bmN0aW9uKGNhbGxiYWNrKSB7DQogICAgcG9zdFJlbmRlckhhbmRsZXJzLnB1c2goY2FsbGJhY2spOw0KICB9Ow0KDQogIC8vIFRha2VzIGEgbmV3LXN0eWxlIGluc3RhbmNlLWJvdW5kIGRlZmluaXRpb24sIGFuZCByZXR1cm5zIGFuDQogIC8vIG9sZC1zdHlsZSBjbGFzcy1ib3VuZCBkZWZpbml0aW9uLiBUaGlzIHNhdmVzIHVzIGZyb20gaGF2aW5nDQogIC8vIHRvIHJld3JpdGUgYWxsIHRoZSBsb2dpYyBpbiB0aGlzIGZpbGUgdG8gYWNjb21vZGF0ZSBib3RoDQogIC8vIHR5cGVzIG9mIGRlZmluaXRpb25zLg0KICBmdW5jdGlvbiBjcmVhdGVMZWdhY3lEZWZpbml0aW9uQWRhcHRlcihkZWZuKSB7DQogICAgdmFyIHJlc3VsdCA9IHsNCiAgICAgIG5hbWU6IGRlZm4ubmFtZSwNCiAgICAgIHR5cGU6IGRlZm4udHlwZSwNCiAgICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKGVsLCB3aWR0aCwgaGVpZ2h0KSB7DQogICAgICAgIHJldHVybiBkZWZuLmZhY3RvcnkoZWwsIHdpZHRoLCBoZWlnaHQpOw0KICAgICAgfSwNCiAgICAgIHJlbmRlclZhbHVlOiBmdW5jdGlvbihlbCwgeCwgaW5zdGFuY2UpIHsNCiAgICAgICAgcmV0dXJuIGluc3RhbmNlLnJlbmRlclZhbHVlKHgpOw0KICAgICAgfSwNCiAgICAgIHJlc2l6ZTogZnVuY3Rpb24oZWwsIHdpZHRoLCBoZWlnaHQsIGluc3RhbmNlKSB7DQogICAgICAgIHJldHVybiBpbnN0YW5jZS5yZXNpemUod2lkdGgsIGhlaWdodCk7DQogICAgICB9DQogICAgfTsNCg0KICAgIGlmIChkZWZuLmZpbmQpDQogICAgICByZXN1bHQuZmluZCA9IGRlZm4uZmluZDsNCiAgICBpZiAoZGVmbi5yZW5kZXJFcnJvcikNCiAgICAgIHJlc3VsdC5yZW5kZXJFcnJvciA9IGRlZm4ucmVuZGVyRXJyb3I7DQogICAgaWYgKGRlZm4uY2xlYXJFcnJvcikNCiAgICAgIHJlc3VsdC5jbGVhckVycm9yID0gZGVmbi5jbGVhckVycm9yOw0KDQogICAgcmV0dXJuIHJlc3VsdDsNCiAgfQ0KfSkoKTsNCg0K"></script>
<script src="data:application/x-javascript;base64,SFRNTFdpZGdldHMud2lkZ2V0KHsNCg0KICBuYW1lOiAnY2hhcnRzZXJpZXMnLA0KDQogIHR5cGU6ICdvdXRwdXQnLA0KDQogIGZhY3Rvcnk6IGZ1bmN0aW9uKGVsLCB3aWR0aCwgaGVpZ2h0KSB7DQoNCiAgICBmdW5jdGlvbiBjb252ZXJ0X2RhdGEoeCkgew0KICAgICAgdmFyIGRhdGEgPSB4LnhkYXRhLm1hcCggZnVuY3Rpb24oZCxpKSB7DQogICAgICAgIHZhciByb3cgPSB7fTsNCiAgICAgICAgcm93LmRhdGUgPSBuZXcgRGF0ZSh4LmRhdGVbaV0pIHx8IGk7DQogICAgICAgIHJvdy5vcGVuID0gZFswXTsNCiAgICAgICAgcm93LmhpZ2ggPSBkWzFdOw0KICAgICAgICByb3cubG93ID0gZFsyXTsNCiAgICAgICAgcm93LmNsb3NlID0gZFszXTsNCiAgICAgICAgcmV0dXJuIHJvdzsNCiAgICAgIH0pOw0KDQogICAgICByZXR1cm4gZGF0YTsNCiAgICB9DQoNCiAgICByZXR1cm4gew0KDQogICAgICByZW5kZXJWYWx1ZTogZnVuY3Rpb24oeCkgew0KDQogICAgICAgIHZhciBkYXRhID0gY29udmVydF9kYXRhKHgpOw0KDQogICAgICAgIC8vIGZyb20gaHR0cHM6Ly9kM2ZjLmlvL2ludHJvZHVjdGlvbi9nZXR0aW5nLXN0YXJ0ZWQuaHRtbA0KICAgICAgICAvLyAgd2l0aCBtaW5vciBtb2RpZmljYXRpb25zDQoNCiAgICAgICAgdmFyIHlFeHRlbnQgPSBmYy5leHRlbnRMaW5lYXIoKQ0KICAgICAgICAgIC5hY2Nlc3NvcnMoWw0KICAgICAgICAgICAgZnVuY3Rpb24oZCkgew0KICAgICAgICAgICAgICByZXR1cm4gZC5oaWdoOw0KICAgICAgICAgICAgfSwNCiAgICAgICAgICAgIGZ1bmN0aW9uKGQpIHsNCiAgICAgICAgICAgICAgcmV0dXJuIGQubG93Ow0KICAgICAgICAgICAgfQ0KICAgICAgICAgIF0pOw0KDQogICAgICAgIHZhciB4RXh0ZW50ID0gZmMuZXh0ZW50RGF0ZSgpDQogICAgICAgICAgLmFjY2Vzc29ycyhbZnVuY3Rpb24oZCkgew0KICAgICAgICAgICAgcmV0dXJuIGQuZGF0ZTsNCiAgICAgICAgICB9XSk7DQoNCiAgICAgICAgdmFyIGdyaWRsaW5lcyA9IGZjLmFubm90YXRpb25TdmdHcmlkbGluZSgpDQogICAgICAgICAgLnhEZWNvcmF0ZShmdW5jdGlvbihsaW5lcykgew0KICAgICAgICAgICAgbGluZXMNCiAgICAgICAgICAgICAgLnN0eWxlKCdzdHJva2Utd2lkdGgnLCAnMC4yNXB4JykNCiAgICAgICAgICAgICAgLnN0eWxlKCdzdHJva2UtZGFzaGFycmF5JywgMik7DQogICAgICAgICAgfSkNCiAgICAgICAgICAueURlY29yYXRlKGZ1bmN0aW9uKGxpbmVzKSB7DQogICAgICAgICAgICBsaW5lcw0KICAgICAgICAgICAgICAuc3R5bGUoJ3N0cm9rZS13aWR0aCcsICcwLjI1cHgnKQ0KICAgICAgICAgICAgICAuc3R5bGUoJ3N0cm9rZS1kYXNoYXJyYXknLCAyKTsNCiAgICAgICAgICB9KTsNCiAgICAgICAgdmFyIGNhbmRsZXN0aWNrID0gZmMuc2VyaWVzU3ZnQ2FuZGxlc3RpY2soKQ0KICAgICAgICAgIC5jcm9zc1ZhbHVlKGZ1bmN0aW9uKGQpIHtyZXR1cm4gbmV3IERhdGUoZC5kYXRlKX0pOw0KICAgICAgICB2YXIgbXVsdGkgPSBmYy5zZXJpZXNTdmdNdWx0aSgpDQogICAgICAgICAgLnNlcmllcyhbZ3JpZGxpbmVzLCBjYW5kbGVzdGlja10pOw0KDQogICAgICAgIHZhciB4U2NhbGUgPSBmYy5zY2FsZURpc2NvbnRpbnVvdXMoZDMuc2NhbGVUaW1lKCkpDQogICAgICAgICAgLmRpc2NvbnRpbnVpdHlQcm92aWRlcihmYy5kaXNjb250aW51aXR5U2tpcFdlZWtlbmRzKCkpOw0KICAgICAgICB2YXIgeVNjYWxlID0gZDMuc2NhbGVMaW5lYXIoKTsNCg0KICAgICAgICB2YXIgZmluZF9wb2ludCA9IGZ1bmN0aW9uKHB0KSB7DQogICAgICAgICAgdmFyIHJvdyA9IGQzLmJpc2VjdFJpZ2h0KA0KICAgICAgICAgICAgZGF0YS5tYXAoZnVuY3Rpb24ocm93KXtyZXR1cm4gcm93LmRhdGU7fSksDQogICAgICAgICAgICB4U2NhbGUuaW52ZXJ0KHB0LngpDQogICAgICAgICAgKTsNCiAgICAgICAgICBpZihyb3cgPT09IGRhdGEubGVuZ3RoKSByb3cgPSByb3cgLSAxOw0KICAgICAgICAgIHZhciBkYXRhX3ByaWNlID0gZGF0YVtyb3ddOw0KICAgICAgICAgIHJldHVybiBkYXRhX3ByaWNlOw0KICAgICAgICB9Ow0KDQogICAgICAgIHZhciBhcmVhID0gZmMuc2VyaWVzU3ZnQXJlYSgpDQogICAgICAgICAgLmNyb3NzVmFsdWUoZnVuY3Rpb24oZCl7IHJldHVybiBkLmRhdGU7IH0pDQogICAgICAgICAgLmJhc2VWYWx1ZShmdW5jdGlvbihkKXsgcmV0dXJuIGQuY2xvc2U7IH0pDQogICAgICAgICAgLnhTY2FsZSh4U2NhbGUpDQogICAgICAgICAgLnlTY2FsZSh5U2NhbGUpOw0KDQogICAgICAgIHZhciBjcm9zc2hhaXIgPSBmYy5hbm5vdGF0aW9uU3ZnQ3Jvc3NoYWlyKCkNCiAgICAgICAgICAueFNjYWxlKHhTY2FsZSkNCiAgICAgICAgICAueVNjYWxlKHlTY2FsZSkNCiAgICAgICAgICAueChmdW5jdGlvbihkKSB7DQogICAgICAgICAgICAvLyBkb24ndCBnbyBpbnRvIGxlZnQgYXhpcw0KICAgICAgICAgICAgcmV0dXJuIHhTY2FsZShkLmRhdGUpOw0KICAgICAgICAgIH0pDQogICAgICAgICAgLnkoZnVuY3Rpb24oZCkgew0KICAgICAgICAgICAgcmV0dXJuIHlTY2FsZShkLmNsb3NlKTsNCiAgICAgICAgICB9KQ0KICAgICAgICAgIC54TGFiZWwoZnVuY3Rpb24oZCkgew0KICAgICAgICAgICAgcmV0dXJuIGQzLnRpbWVGb3JtYXQoJyViICVkLCAlWScpKGQuZGF0ZSk7DQogICAgICAgICAgfSkNCiAgICAgICAgICAueUxhYmVsKGZ1bmN0aW9uKGQpIHsNCiAgICAgICAgICAgIHJldHVybiBkLmNsb3NlOw0KICAgICAgICAgIH0pDQogICAgICAgICAgLmRlY29yYXRlKGZ1bmN0aW9uKGVsLCBkYXRhKSB7DQogICAgICAgICAgICBlbC5zZWxlY3QoJy5yaWdodC1oYW5kbGUgdGV4dCcpDQogICAgICAgICAgICAgIC5hdHRyKCd0ZXh0LWFuY2hvcicsICdlbmQnKQ0KICAgICAgICAgICAgICAuYXR0cigneCcsIC0yKQ0KICAgICAgICAgICAgICAuYXR0cignZHknLCAnMWVtJykNCiAgICAgICAgICAgICAgLmF0dHIoJ2R4JywgJy0wLjMyZW0nKTsNCiAgICAgICAgICB9KTsNCg0KICAgICAgICB2YXIgZHJhd19jcm9zc2hhaXIgPSBmdW5jdGlvbigpIHsNCiAgICAgICAgICAvL2QzLmV2ZW50LnByZXZlbnREZWZhdWx0KCk7DQogICAgICAgICAgLy9kMy5ldmVudC5zdG9wUHJvcGFnYXRpb24oKTsNCiAgICAgICAgICB2YXIgY3Jvc3NoYWlyX2VsID0gZDMuc2VsZWN0KHRoaXMpLnNlbGVjdCgiLmQzZmMtY3Jvc3NoYWlyLWNvbnRhaW5lciIpOw0KICAgICAgICAgIHZhciBwdCA9IGQzLm1vdXNlKHRoaXMpIHx8IGQzLnRvdWNoKHRoaXMpOw0KICAgICAgICAgIHZhciBkYXRhID0gW2ZpbmRfcG9pbnQoeyB4OiBwdFswXSwgeTogcHRbMV0gfSldOw0KICAgICAgICAgIGNyb3NzaGFpcl9lbC5kYXR1bShkYXRhKTsNCiAgICAgICAgICBjcm9zc2hhaXJfZWwuY2FsbChjcm9zc2hhaXIpOw0KDQogICAgICAgICAgYXJlYS5tYWluVmFsdWUoZnVuY3Rpb24oKXsgcmV0dXJuIGRhdGFbMF0uY2xvc2UgfSk7DQogICAgICAgICAgZDMuc2VsZWN0KHRoaXMpLnNlbGVjdCgnLmNyb3NzaGFpci1hcmVhJykNCiAgICAgICAgICAgIC5jYWxsKGFyZWEpOw0KICAgICAgICB9Ow0KDQogICAgICAgIHZhciBjaGFydCA9IGZjLmNoYXJ0U3ZnQ2FydGVzaWFuKA0KICAgICAgICAgIHhTY2FsZSwNCiAgICAgICAgICB5U2NhbGUNCiAgICAgICAgKQ0KICAgICAgICAgIC55RG9tYWluKHlFeHRlbnQoZGF0YSkpDQogICAgICAgICAgLnhEb21haW4oeEV4dGVudChkYXRhKSkNCiAgICAgICAgICAuY2hhcnRMYWJlbCh4Lm5hbWUpDQogICAgICAgICAgLnBsb3RBcmVhKG11bHRpKQ0KICAgICAgICAgIC5kZWNvcmF0ZShmdW5jdGlvbihlbCl7DQogICAgICAgICAgICAvLyBsZWZ0IGFsaWduIGNoYXJ0IHRpdGxlDQogICAgICAgICAgICBlbC5zZWxlY3QoJy5jaGFydC1sYWJlbCcpDQogICAgICAgICAgICAgIC5zdHlsZSgndGV4dC1hbGlnbicsICdsZWZ0Jyk7DQoNCiAgICAgICAgICAgIHZhciBjcm9zc2hhaXJfZWwgPSBlbC5zZWxlY3QoIi5wbG90LWFyZWEgc3ZnIikNCiAgICAgICAgICAgICAgLmFwcGVuZCgiZyIpDQogICAgICAgICAgICAgIC5jbGFzc2VkKCJkM2ZjLWNyb3NzaGFpci1jb250YWluZXIiLCB0cnVlKTsNCg0KICAgICAgICAgICAgZWwuc2VsZWN0KCIucGxvdC1hcmVhIHN2ZyIpLmFwcGVuZCgnZycpDQogICAgICAgICAgICAgIC5jbGFzc2VkKCdjcm9zc2hhaXItYXJlYScsdHJ1ZSkNCiAgICAgICAgICAgICAgLmRhdHVtKGRhdGEpOw0KDQogICAgICAgICAgICAvL2VsLm9uKCJ0b3VjaHN0YXJ0IiwgZHJhd19jcm9zc2hhaXIpOw0KICAgICAgICAgICAgLy9lbC5vbigidG91Y2htb3ZlIiwgZHJhd19jcm9zc2hhaXIpOw0KICAgICAgICAgICAgZWwub24oIm1vdXNlb3ZlciIsIGRyYXdfY3Jvc3NoYWlyKTsNCiAgICAgICAgICAgIGVsLm9uKCJtb3VzZW1vdmUiLCBkcmF3X2Nyb3NzaGFpcik7DQoNCiAgICAgICAgICAgIHZhciBkcmFnID0gZDMuZHJhZygpDQogICAgICAgICAgICAgIC5vbigic3RhcnQiLCBkcmF3X2Nyb3NzaGFpcikNCiAgICAgICAgICAgICAgLm9uKCJkcmFnIiwgZHJhd19jcm9zc2hhaXIpOw0KDQogICAgICAgICAgICBlbC5jYWxsKGRyYWcpOw0KICAgICAgICAgIH0pOw0KDQogICAgICAgIGQzLnNlbGVjdChlbCkNCiAgICAgICAgICAuZGF0dW0oZGF0YSkNCiAgICAgICAgICAuY2FsbChjaGFydCk7DQoNCiAgICAgIH0sDQoNCiAgICAgIHJlc2l6ZTogZnVuY3Rpb24od2lkdGgsIGhlaWdodCkgew0KDQogICAgICAgIC8vIFRPRE86IGNvZGUgdG8gcmUtcmVuZGVyIHRoZSB3aWRnZXQgd2l0aCBhIG5ldyBzaXplDQoNCiAgICAgIH0NCg0KICAgIH07DQogIH0NCn0pOw0K"></script>
<script src="data:application/x-javascript;base64,LyohIGpRdWVyeSB2MS4xMS4zIHwgKGMpIDIwMDUsIDIwMTUgalF1ZXJ5IEZvdW5kYXRpb24sIEluYy4gfCBqcXVlcnkub3JnL2xpY2Vuc2UgKi8KIWZ1bmN0aW9uKGEsYil7Im9iamVjdCI9PXR5cGVvZiBtb2R1bGUmJiJvYmplY3QiPT10eXBlb2YgbW9kdWxlLmV4cG9ydHM/bW9kdWxlLmV4cG9ydHM9YS5kb2N1bWVudD9iKGEsITApOmZ1bmN0aW9uKGEpe2lmKCFhLmRvY3VtZW50KXRocm93IG5ldyBFcnJvcigialF1ZXJ5IHJlcXVpcmVzIGEgd2luZG93IHdpdGggYSBkb2N1bWVudCIpO3JldHVybiBiKGEpfTpiKGEpfSgidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6dGhpcyxmdW5jdGlvbihhLGIpe3ZhciBjPVtdLGQ9Yy5zbGljZSxlPWMuY29uY2F0LGY9Yy5wdXNoLGc9Yy5pbmRleE9mLGg9e30saT1oLnRvU3RyaW5nLGo9aC5oYXNPd25Qcm9wZXJ0eSxrPXt9LGw9IjEuMTEuMyIsbT1mdW5jdGlvbihhLGIpe3JldHVybiBuZXcgbS5mbi5pbml0KGEsYil9LG49L15bXHNcdUZFRkZceEEwXSt8W1xzXHVGRUZGXHhBMF0rJC9nLG89L14tbXMtLyxwPS8tKFtcZGEtel0pL2dpLHE9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYi50b1VwcGVyQ2FzZSgpfTttLmZuPW0ucHJvdG90eXBlPXtqcXVlcnk6bCxjb25zdHJ1Y3RvcjptLHNlbGVjdG9yOiIiLGxlbmd0aDowLHRvQXJyYXk6ZnVuY3Rpb24oKXtyZXR1cm4gZC5jYWxsKHRoaXMpfSxnZXQ6ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGwhPWE/MD5hP3RoaXNbYSt0aGlzLmxlbmd0aF06dGhpc1thXTpkLmNhbGwodGhpcyl9LHB1c2hTdGFjazpmdW5jdGlvbihhKXt2YXIgYj1tLm1lcmdlKHRoaXMuY29uc3RydWN0b3IoKSxhKTtyZXR1cm4gYi5wcmV2T2JqZWN0PXRoaXMsYi5jb250ZXh0PXRoaXMuY29udGV4dCxifSxlYWNoOmZ1bmN0aW9uKGEsYil7cmV0dXJuIG0uZWFjaCh0aGlzLGEsYil9LG1hcDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2sobS5tYXAodGhpcyxmdW5jdGlvbihiLGMpe3JldHVybiBhLmNhbGwoYixjLGIpfSkpfSxzbGljZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnB1c2hTdGFjayhkLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9LGZpcnN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZXEoMCl9LGxhc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lcSgtMSl9LGVxOmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMubGVuZ3RoLGM9K2ErKDA+YT9iOjApO3JldHVybiB0aGlzLnB1c2hTdGFjayhjPj0wJiZiPmM/W3RoaXNbY11dOltdKX0sZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHJldk9iamVjdHx8dGhpcy5jb25zdHJ1Y3RvcihudWxsKX0scHVzaDpmLHNvcnQ6Yy5zb3J0LHNwbGljZTpjLnNwbGljZX0sbS5leHRlbmQ9bS5mbi5leHRlbmQ9ZnVuY3Rpb24oKXt2YXIgYSxiLGMsZCxlLGYsZz1hcmd1bWVudHNbMF18fHt9LGg9MSxpPWFyZ3VtZW50cy5sZW5ndGgsaj0hMTtmb3IoImJvb2xlYW4iPT10eXBlb2YgZyYmKGo9ZyxnPWFyZ3VtZW50c1toXXx8e30saCsrKSwib2JqZWN0Ij09dHlwZW9mIGd8fG0uaXNGdW5jdGlvbihnKXx8KGc9e30pLGg9PT1pJiYoZz10aGlzLGgtLSk7aT5oO2grKylpZihudWxsIT0oZT1hcmd1bWVudHNbaF0pKWZvcihkIGluIGUpYT1nW2RdLGM9ZVtkXSxnIT09YyYmKGomJmMmJihtLmlzUGxhaW5PYmplY3QoYyl8fChiPW0uaXNBcnJheShjKSkpPyhiPyhiPSExLGY9YSYmbS5pc0FycmF5KGEpP2E6W10pOmY9YSYmbS5pc1BsYWluT2JqZWN0KGEpP2E6e30sZ1tkXT1tLmV4dGVuZChqLGYsYykpOnZvaWQgMCE9PWMmJihnW2RdPWMpKTtyZXR1cm4gZ30sbS5leHRlbmQoe2V4cGFuZG86ImpRdWVyeSIrKGwrTWF0aC5yYW5kb20oKSkucmVwbGFjZSgvXEQvZywiIiksaXNSZWFkeTohMCxlcnJvcjpmdW5jdGlvbihhKXt0aHJvdyBuZXcgRXJyb3IoYSl9LG5vb3A6ZnVuY3Rpb24oKXt9LGlzRnVuY3Rpb246ZnVuY3Rpb24oYSl7cmV0dXJuImZ1bmN0aW9uIj09PW0udHlwZShhKX0saXNBcnJheTpBcnJheS5pc0FycmF5fHxmdW5jdGlvbihhKXtyZXR1cm4iYXJyYXkiPT09bS50eXBlKGEpfSxpc1dpbmRvdzpmdW5jdGlvbihhKXtyZXR1cm4gbnVsbCE9YSYmYT09YS53aW5kb3d9LGlzTnVtZXJpYzpmdW5jdGlvbihhKXtyZXR1cm4hbS5pc0FycmF5KGEpJiZhLXBhcnNlRmxvYXQoYSkrMT49MH0saXNFbXB0eU9iamVjdDpmdW5jdGlvbihhKXt2YXIgYjtmb3IoYiBpbiBhKXJldHVybiExO3JldHVybiEwfSxpc1BsYWluT2JqZWN0OmZ1bmN0aW9uKGEpe3ZhciBiO2lmKCFhfHwib2JqZWN0IiE9PW0udHlwZShhKXx8YS5ub2RlVHlwZXx8bS5pc1dpbmRvdyhhKSlyZXR1cm4hMTt0cnl7aWYoYS5jb25zdHJ1Y3RvciYmIWouY2FsbChhLCJjb25zdHJ1Y3RvciIpJiYhai5jYWxsKGEuY29uc3RydWN0b3IucHJvdG90eXBlLCJpc1Byb3RvdHlwZU9mIikpcmV0dXJuITF9Y2F0Y2goYyl7cmV0dXJuITF9aWYoay5vd25MYXN0KWZvcihiIGluIGEpcmV0dXJuIGouY2FsbChhLGIpO2ZvcihiIGluIGEpO3JldHVybiB2b2lkIDA9PT1ifHxqLmNhbGwoYSxiKX0sdHlwZTpmdW5jdGlvbihhKXtyZXR1cm4gbnVsbD09YT9hKyIiOiJvYmplY3QiPT10eXBlb2YgYXx8ImZ1bmN0aW9uIj09dHlwZW9mIGE/aFtpLmNhbGwoYSldfHwib2JqZWN0Ijp0eXBlb2YgYX0sZ2xvYmFsRXZhbDpmdW5jdGlvbihiKXtiJiZtLnRyaW0oYikmJihhLmV4ZWNTY3JpcHR8fGZ1bmN0aW9uKGIpe2EuZXZhbC5jYWxsKGEsYil9KShiKX0sY2FtZWxDYXNlOmZ1bmN0aW9uKGEpe3JldHVybiBhLnJlcGxhY2UobywibXMtIikucmVwbGFjZShwLHEpfSxub2RlTmFtZTpmdW5jdGlvbihhLGIpe3JldHVybiBhLm5vZGVOYW1lJiZhLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT1iLnRvTG93ZXJDYXNlKCl9LGVhY2g6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGU9MCxmPWEubGVuZ3RoLGc9cihhKTtpZihjKXtpZihnKXtmb3IoO2Y+ZTtlKyspaWYoZD1iLmFwcGx5KGFbZV0sYyksZD09PSExKWJyZWFrfWVsc2UgZm9yKGUgaW4gYSlpZihkPWIuYXBwbHkoYVtlXSxjKSxkPT09ITEpYnJlYWt9ZWxzZSBpZihnKXtmb3IoO2Y+ZTtlKyspaWYoZD1iLmNhbGwoYVtlXSxlLGFbZV0pLGQ9PT0hMSlicmVha31lbHNlIGZvcihlIGluIGEpaWYoZD1iLmNhbGwoYVtlXSxlLGFbZV0pLGQ9PT0hMSlicmVhaztyZXR1cm4gYX0sdHJpbTpmdW5jdGlvbihhKXtyZXR1cm4gbnVsbD09YT8iIjooYSsiIikucmVwbGFjZShuLCIiKX0sbWFrZUFycmF5OmZ1bmN0aW9uKGEsYil7dmFyIGM9Ynx8W107cmV0dXJuIG51bGwhPWEmJihyKE9iamVjdChhKSk/bS5tZXJnZShjLCJzdHJpbmciPT10eXBlb2YgYT9bYV06YSk6Zi5jYWxsKGMsYSkpLGN9LGluQXJyYXk6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkO2lmKGIpe2lmKGcpcmV0dXJuIGcuY2FsbChiLGEsYyk7Zm9yKGQ9Yi5sZW5ndGgsYz1jPzA+Yz9NYXRoLm1heCgwLGQrYyk6YzowO2Q+YztjKyspaWYoYyBpbiBiJiZiW2NdPT09YSlyZXR1cm4gY31yZXR1cm4tMX0sbWVyZ2U6ZnVuY3Rpb24oYSxiKXt2YXIgYz0rYi5sZW5ndGgsZD0wLGU9YS5sZW5ndGg7d2hpbGUoYz5kKWFbZSsrXT1iW2QrK107aWYoYyE9PWMpd2hpbGUodm9pZCAwIT09YltkXSlhW2UrK109YltkKytdO3JldHVybiBhLmxlbmd0aD1lLGF9LGdyZXA6ZnVuY3Rpb24oYSxiLGMpe2Zvcih2YXIgZCxlPVtdLGY9MCxnPWEubGVuZ3RoLGg9IWM7Zz5mO2YrKylkPSFiKGFbZl0sZiksZCE9PWgmJmUucHVzaChhW2ZdKTtyZXR1cm4gZX0sbWFwOmZ1bmN0aW9uKGEsYixjKXt2YXIgZCxmPTAsZz1hLmxlbmd0aCxoPXIoYSksaT1bXTtpZihoKWZvcig7Zz5mO2YrKylkPWIoYVtmXSxmLGMpLG51bGwhPWQmJmkucHVzaChkKTtlbHNlIGZvcihmIGluIGEpZD1iKGFbZl0sZixjKSxudWxsIT1kJiZpLnB1c2goZCk7cmV0dXJuIGUuYXBwbHkoW10saSl9LGd1aWQ6MSxwcm94eTpmdW5jdGlvbihhLGIpe3ZhciBjLGUsZjtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGImJihmPWFbYl0sYj1hLGE9ZiksbS5pc0Z1bmN0aW9uKGEpPyhjPWQuY2FsbChhcmd1bWVudHMsMiksZT1mdW5jdGlvbigpe3JldHVybiBhLmFwcGx5KGJ8fHRoaXMsYy5jb25jYXQoZC5jYWxsKGFyZ3VtZW50cykpKX0sZS5ndWlkPWEuZ3VpZD1hLmd1aWR8fG0uZ3VpZCsrLGUpOnZvaWQgMH0sbm93OmZ1bmN0aW9uKCl7cmV0dXJuK25ldyBEYXRlfSxzdXBwb3J0Omt9KSxtLmVhY2goIkJvb2xlYW4gTnVtYmVyIFN0cmluZyBGdW5jdGlvbiBBcnJheSBEYXRlIFJlZ0V4cCBPYmplY3QgRXJyb3IiLnNwbGl0KCIgIiksZnVuY3Rpb24oYSxiKXtoWyJbb2JqZWN0ICIrYisiXSJdPWIudG9Mb3dlckNhc2UoKX0pO2Z1bmN0aW9uIHIoYSl7dmFyIGI9Imxlbmd0aCJpbiBhJiZhLmxlbmd0aCxjPW0udHlwZShhKTtyZXR1cm4iZnVuY3Rpb24iPT09Y3x8bS5pc1dpbmRvdyhhKT8hMToxPT09YS5ub2RlVHlwZSYmYj8hMDoiYXJyYXkiPT09Y3x8MD09PWJ8fCJudW1iZXIiPT10eXBlb2YgYiYmYj4wJiZiLTEgaW4gYX12YXIgcz1mdW5jdGlvbihhKXt2YXIgYixjLGQsZSxmLGcsaCxpLGosayxsLG0sbixvLHAscSxyLHMsdCx1PSJzaXp6bGUiKzEqbmV3IERhdGUsdj1hLmRvY3VtZW50LHc9MCx4PTAseT1oYSgpLHo9aGEoKSxBPWhhKCksQj1mdW5jdGlvbihhLGIpe3JldHVybiBhPT09YiYmKGw9ITApLDB9LEM9MTw8MzEsRD17fS5oYXNPd25Qcm9wZXJ0eSxFPVtdLEY9RS5wb3AsRz1FLnB1c2gsSD1FLnB1c2gsST1FLnNsaWNlLEo9ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9MCxkPWEubGVuZ3RoO2Q+YztjKyspaWYoYVtjXT09PWIpcmV0dXJuIGM7cmV0dXJuLTF9LEs9ImNoZWNrZWR8c2VsZWN0ZWR8YXN5bmN8YXV0b2ZvY3VzfGF1dG9wbGF5fGNvbnRyb2xzfGRlZmVyfGRpc2FibGVkfGhpZGRlbnxpc21hcHxsb29wfG11bHRpcGxlfG9wZW58cmVhZG9ubHl8cmVxdWlyZWR8c2NvcGVkIixMPSJbXFx4MjBcXHRcXHJcXG5cXGZdIixNPSIoPzpcXFxcLnxbXFx3LV18W15cXHgwMC1cXHhhMF0pKyIsTj1NLnJlcGxhY2UoInciLCJ3IyIpLE89IlxcWyIrTCsiKigiK00rIikoPzoiK0wrIiooWypeJHwhfl0/PSkiK0wrIiooPzonKCg/OlxcXFwufFteXFxcXCddKSopJ3xcIigoPzpcXFxcLnxbXlxcXFxcIl0pKilcInwoIitOKyIpKXwpIitMKyIqXFxdIixQPSI6KCIrTSsiKSg/OlxcKCgoJygoPzpcXFxcLnxbXlxcXFwnXSkqKSd8XCIoKD86XFxcXC58W15cXFxcXCJdKSopXCIpfCgoPzpcXFxcLnxbXlxcXFwoKVtcXF1dfCIrTysiKSopfC4qKVxcKXwpIixRPW5ldyBSZWdFeHAoTCsiKyIsImciKSxSPW5ldyBSZWdFeHAoIl4iK0wrIit8KCg/Ol58W15cXFxcXSkoPzpcXFxcLikqKSIrTCsiKyQiLCJnIiksUz1uZXcgUmVnRXhwKCJeIitMKyIqLCIrTCsiKiIpLFQ9bmV3IFJlZ0V4cCgiXiIrTCsiKihbPit+XXwiK0wrIikiK0wrIioiKSxVPW5ldyBSZWdFeHAoIj0iK0wrIiooW15cXF0nXCJdKj8pIitMKyIqXFxdIiwiZyIpLFY9bmV3IFJlZ0V4cChQKSxXPW5ldyBSZWdFeHAoIl4iK04rIiQiKSxYPXtJRDpuZXcgUmVnRXhwKCJeIygiK00rIikiKSxDTEFTUzpuZXcgUmVnRXhwKCJeXFwuKCIrTSsiKSIpLFRBRzpuZXcgUmVnRXhwKCJeKCIrTS5yZXBsYWNlKCJ3IiwidyoiKSsiKSIpLEFUVFI6bmV3IFJlZ0V4cCgiXiIrTyksUFNFVURPOm5ldyBSZWdFeHAoIl4iK1ApLENISUxEOm5ldyBSZWdFeHAoIl46KG9ubHl8Zmlyc3R8bGFzdHxudGh8bnRoLWxhc3QpLShjaGlsZHxvZi10eXBlKSg/OlxcKCIrTCsiKihldmVufG9kZHwoKFsrLV18KShcXGQqKW58KSIrTCsiKig/OihbKy1dfCkiK0wrIiooXFxkKyl8KSkiK0wrIipcXCl8KSIsImkiKSxib29sOm5ldyBSZWdFeHAoIl4oPzoiK0srIikkIiwiaSIpLG5lZWRzQ29udGV4dDpuZXcgUmVnRXhwKCJeIitMKyIqWz4rfl18OihldmVufG9kZHxlcXxndHxsdHxudGh8Zmlyc3R8bGFzdCkoPzpcXCgiK0wrIiooKD86LVxcZCk/XFxkKikiK0wrIipcXCl8KSg/PVteLV18JCkiLCJpIil9LFk9L14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWF8YnV0dG9uKSQvaSxaPS9eaFxkJC9pLCQ9L15bXntdK1x7XHMqXFtuYXRpdmUgXHcvLF89L14oPzojKFtcdy1dKyl8KFx3Kyl8XC4oW1x3LV0rKSkkLyxhYT0vWyt+XS8sYmE9Lyd8XFwvZyxjYT1uZXcgUmVnRXhwKCJcXFxcKFtcXGRhLWZdezEsNn0iK0wrIj98KCIrTCsiKXwuKSIsImlnIiksZGE9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPSIweCIrYi02NTUzNjtyZXR1cm4gZCE9PWR8fGM/YjowPmQ/U3RyaW5nLmZyb21DaGFyQ29kZShkKzY1NTM2KTpTdHJpbmcuZnJvbUNoYXJDb2RlKGQ+PjEwfDU1Mjk2LDEwMjMmZHw1NjMyMCl9LGVhPWZ1bmN0aW9uKCl7bSgpfTt0cnl7SC5hcHBseShFPUkuY2FsbCh2LmNoaWxkTm9kZXMpLHYuY2hpbGROb2RlcyksRVt2LmNoaWxkTm9kZXMubGVuZ3RoXS5ub2RlVHlwZX1jYXRjaChmYSl7SD17YXBwbHk6RS5sZW5ndGg/ZnVuY3Rpb24oYSxiKXtHLmFwcGx5KGEsSS5jYWxsKGIpKX06ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLmxlbmd0aCxkPTA7d2hpbGUoYVtjKytdPWJbZCsrXSk7YS5sZW5ndGg9Yy0xfX19ZnVuY3Rpb24gZ2EoYSxiLGQsZSl7dmFyIGYsaCxqLGssbCxvLHIscyx3LHg7aWYoKGI/Yi5vd25lckRvY3VtZW50fHxiOnYpIT09biYmbShiKSxiPWJ8fG4sZD1kfHxbXSxrPWIubm9kZVR5cGUsInN0cmluZyIhPXR5cGVvZiBhfHwhYXx8MSE9PWsmJjkhPT1rJiYxMSE9PWspcmV0dXJuIGQ7aWYoIWUmJnApe2lmKDExIT09ayYmKGY9Xy5leGVjKGEpKSlpZihqPWZbMV0pe2lmKDk9PT1rKXtpZihoPWIuZ2V0RWxlbWVudEJ5SWQoaiksIWh8fCFoLnBhcmVudE5vZGUpcmV0dXJuIGQ7aWYoaC5pZD09PWopcmV0dXJuIGQucHVzaChoKSxkfWVsc2UgaWYoYi5vd25lckRvY3VtZW50JiYoaD1iLm93bmVyRG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaikpJiZ0KGIsaCkmJmguaWQ9PT1qKXJldHVybiBkLnB1c2goaCksZH1lbHNle2lmKGZbMl0pcmV0dXJuIEguYXBwbHkoZCxiLmdldEVsZW1lbnRzQnlUYWdOYW1lKGEpKSxkO2lmKChqPWZbM10pJiZjLmdldEVsZW1lbnRzQnlDbGFzc05hbWUpcmV0dXJuIEguYXBwbHkoZCxiLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoaikpLGR9aWYoYy5xc2EmJighcXx8IXEudGVzdChhKSkpe2lmKHM9cj11LHc9Yix4PTEhPT1rJiZhLDE9PT1rJiYib2JqZWN0IiE9PWIubm9kZU5hbWUudG9Mb3dlckNhc2UoKSl7bz1nKGEpLChyPWIuZ2V0QXR0cmlidXRlKCJpZCIpKT9zPXIucmVwbGFjZShiYSwiXFwkJiIpOmIuc2V0QXR0cmlidXRlKCJpZCIscykscz0iW2lkPSciK3MrIiddICIsbD1vLmxlbmd0aDt3aGlsZShsLS0pb1tsXT1zK3JhKG9bbF0pO3c9YWEudGVzdChhKSYmcGEoYi5wYXJlbnROb2RlKXx8Yix4PW8uam9pbigiLCIpfWlmKHgpdHJ5e3JldHVybiBILmFwcGx5KGQsdy5xdWVyeVNlbGVjdG9yQWxsKHgpKSxkfWNhdGNoKHkpe31maW5hbGx5e3J8fGIucmVtb3ZlQXR0cmlidXRlKCJpZCIpfX19cmV0dXJuIGkoYS5yZXBsYWNlKFIsIiQxIiksYixkLGUpfWZ1bmN0aW9uIGhhKCl7dmFyIGE9W107ZnVuY3Rpb24gYihjLGUpe3JldHVybiBhLnB1c2goYysiICIpPmQuY2FjaGVMZW5ndGgmJmRlbGV0ZSBiW2Euc2hpZnQoKV0sYltjKyIgIl09ZX1yZXR1cm4gYn1mdW5jdGlvbiBpYShhKXtyZXR1cm4gYVt1XT0hMCxhfWZ1bmN0aW9uIGphKGEpe3ZhciBiPW4uY3JlYXRlRWxlbWVudCgiZGl2Iik7dHJ5e3JldHVybiEhYShiKX1jYXRjaChjKXtyZXR1cm4hMX1maW5hbGx5e2IucGFyZW50Tm9kZSYmYi5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGIpLGI9bnVsbH19ZnVuY3Rpb24ga2EoYSxiKXt2YXIgYz1hLnNwbGl0KCJ8IiksZT1hLmxlbmd0aDt3aGlsZShlLS0pZC5hdHRySGFuZGxlW2NbZV1dPWJ9ZnVuY3Rpb24gbGEoYSxiKXt2YXIgYz1iJiZhLGQ9YyYmMT09PWEubm9kZVR5cGUmJjE9PT1iLm5vZGVUeXBlJiYofmIuc291cmNlSW5kZXh8fEMpLSh+YS5zb3VyY2VJbmRleHx8Qyk7aWYoZClyZXR1cm4gZDtpZihjKXdoaWxlKGM9Yy5uZXh0U2libGluZylpZihjPT09YilyZXR1cm4tMTtyZXR1cm4gYT8xOi0xfWZ1bmN0aW9uIG1hKGEpe3JldHVybiBmdW5jdGlvbihiKXt2YXIgYz1iLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuImlucHV0Ij09PWMmJmIudHlwZT09PWF9fWZ1bmN0aW9uIG5hKGEpe3JldHVybiBmdW5jdGlvbihiKXt2YXIgYz1iLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuKCJpbnB1dCI9PT1jfHwiYnV0dG9uIj09PWMpJiZiLnR5cGU9PT1hfX1mdW5jdGlvbiBvYShhKXtyZXR1cm4gaWEoZnVuY3Rpb24oYil7cmV0dXJuIGI9K2IsaWEoZnVuY3Rpb24oYyxkKXt2YXIgZSxmPWEoW10sYy5sZW5ndGgsYiksZz1mLmxlbmd0aDt3aGlsZShnLS0pY1tlPWZbZ11dJiYoY1tlXT0hKGRbZV09Y1tlXSkpfSl9KX1mdW5jdGlvbiBwYShhKXtyZXR1cm4gYSYmInVuZGVmaW5lZCIhPXR5cGVvZiBhLmdldEVsZW1lbnRzQnlUYWdOYW1lJiZhfWM9Z2Euc3VwcG9ydD17fSxmPWdhLmlzWE1MPWZ1bmN0aW9uKGEpe3ZhciBiPWEmJihhLm93bmVyRG9jdW1lbnR8fGEpLmRvY3VtZW50RWxlbWVudDtyZXR1cm4gYj8iSFRNTCIhPT1iLm5vZGVOYW1lOiExfSxtPWdhLnNldERvY3VtZW50PWZ1bmN0aW9uKGEpe3ZhciBiLGUsZz1hP2Eub3duZXJEb2N1bWVudHx8YTp2O3JldHVybiBnIT09biYmOT09PWcubm9kZVR5cGUmJmcuZG9jdW1lbnRFbGVtZW50PyhuPWcsbz1nLmRvY3VtZW50RWxlbWVudCxlPWcuZGVmYXVsdFZpZXcsZSYmZSE9PWUudG9wJiYoZS5hZGRFdmVudExpc3RlbmVyP2UuYWRkRXZlbnRMaXN0ZW5lcigidW5sb2FkIixlYSwhMSk6ZS5hdHRhY2hFdmVudCYmZS5hdHRhY2hFdmVudCgib251bmxvYWQiLGVhKSkscD0hZihnKSxjLmF0dHJpYnV0ZXM9amEoZnVuY3Rpb24oYSl7cmV0dXJuIGEuY2xhc3NOYW1lPSJpIiwhYS5nZXRBdHRyaWJ1dGUoImNsYXNzTmFtZSIpfSksYy5nZXRFbGVtZW50c0J5VGFnTmFtZT1qYShmdW5jdGlvbihhKXtyZXR1cm4gYS5hcHBlbmRDaGlsZChnLmNyZWF0ZUNvbW1lbnQoIiIpKSwhYS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpLmxlbmd0aH0pLGMuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZT0kLnRlc3QoZy5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKSxjLmdldEJ5SWQ9amEoZnVuY3Rpb24oYSl7cmV0dXJuIG8uYXBwZW5kQ2hpbGQoYSkuaWQ9dSwhZy5nZXRFbGVtZW50c0J5TmFtZXx8IWcuZ2V0RWxlbWVudHNCeU5hbWUodSkubGVuZ3RofSksYy5nZXRCeUlkPyhkLmZpbmQuSUQ9ZnVuY3Rpb24oYSxiKXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIGIuZ2V0RWxlbWVudEJ5SWQmJnApe3ZhciBjPWIuZ2V0RWxlbWVudEJ5SWQoYSk7cmV0dXJuIGMmJmMucGFyZW50Tm9kZT9bY106W119fSxkLmZpbHRlci5JRD1mdW5jdGlvbihhKXt2YXIgYj1hLnJlcGxhY2UoY2EsZGEpO3JldHVybiBmdW5jdGlvbihhKXtyZXR1cm4gYS5nZXRBdHRyaWJ1dGUoImlkIik9PT1ifX0pOihkZWxldGUgZC5maW5kLklELGQuZmlsdGVyLklEPWZ1bmN0aW9uKGEpe3ZhciBiPWEucmVwbGFjZShjYSxkYSk7cmV0dXJuIGZ1bmN0aW9uKGEpe3ZhciBjPSJ1bmRlZmluZWQiIT10eXBlb2YgYS5nZXRBdHRyaWJ1dGVOb2RlJiZhLmdldEF0dHJpYnV0ZU5vZGUoImlkIik7cmV0dXJuIGMmJmMudmFsdWU9PT1ifX0pLGQuZmluZC5UQUc9Yy5nZXRFbGVtZW50c0J5VGFnTmFtZT9mdW5jdGlvbihhLGIpe3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgYi5nZXRFbGVtZW50c0J5VGFnTmFtZT9iLmdldEVsZW1lbnRzQnlUYWdOYW1lKGEpOmMucXNhP2IucXVlcnlTZWxlY3RvckFsbChhKTp2b2lkIDB9OmZ1bmN0aW9uKGEsYil7dmFyIGMsZD1bXSxlPTAsZj1iLmdldEVsZW1lbnRzQnlUYWdOYW1lKGEpO2lmKCIqIj09PWEpe3doaWxlKGM9ZltlKytdKTE9PT1jLm5vZGVUeXBlJiZkLnB1c2goYyk7cmV0dXJuIGR9cmV0dXJuIGZ9LGQuZmluZC5DTEFTUz1jLmdldEVsZW1lbnRzQnlDbGFzc05hbWUmJmZ1bmN0aW9uKGEsYil7cmV0dXJuIHA/Yi5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGEpOnZvaWQgMH0scj1bXSxxPVtdLChjLnFzYT0kLnRlc3QoZy5xdWVyeVNlbGVjdG9yQWxsKSkmJihqYShmdW5jdGlvbihhKXtvLmFwcGVuZENoaWxkKGEpLmlubmVySFRNTD0iPGEgaWQ9JyIrdSsiJz48L2E+PHNlbGVjdCBpZD0nIit1KyItXGZdJyBtc2FsbG93Y2FwdHVyZT0nJz48b3B0aW9uIHNlbGVjdGVkPScnPjwvb3B0aW9uPjwvc2VsZWN0PiIsYS5xdWVyeVNlbGVjdG9yQWxsKCJbbXNhbGxvd2NhcHR1cmVePScnXSIpLmxlbmd0aCYmcS5wdXNoKCJbKl4kXT0iK0wrIiooPzonJ3xcIlwiKSIpLGEucXVlcnlTZWxlY3RvckFsbCgiW3NlbGVjdGVkXSIpLmxlbmd0aHx8cS5wdXNoKCJcXFsiK0wrIiooPzp2YWx1ZXwiK0srIikiKSxhLnF1ZXJ5U2VsZWN0b3JBbGwoIltpZH49Iit1KyItXSIpLmxlbmd0aHx8cS5wdXNoKCJ+PSIpLGEucXVlcnlTZWxlY3RvckFsbCgiOmNoZWNrZWQiKS5sZW5ndGh8fHEucHVzaCgiOmNoZWNrZWQiKSxhLnF1ZXJ5U2VsZWN0b3JBbGwoImEjIit1KyIrKiIpLmxlbmd0aHx8cS5wdXNoKCIuIy4rWyt+XSIpfSksamEoZnVuY3Rpb24oYSl7dmFyIGI9Zy5jcmVhdGVFbGVtZW50KCJpbnB1dCIpO2Iuc2V0QXR0cmlidXRlKCJ0eXBlIiwiaGlkZGVuIiksYS5hcHBlbmRDaGlsZChiKS5zZXRBdHRyaWJ1dGUoIm5hbWUiLCJEIiksYS5xdWVyeVNlbGVjdG9yQWxsKCJbbmFtZT1kXSIpLmxlbmd0aCYmcS5wdXNoKCJuYW1lIitMKyIqWypeJHwhfl0/PSIpLGEucXVlcnlTZWxlY3RvckFsbCgiOmVuYWJsZWQiKS5sZW5ndGh8fHEucHVzaCgiOmVuYWJsZWQiLCI6ZGlzYWJsZWQiKSxhLnF1ZXJ5U2VsZWN0b3JBbGwoIiosOngiKSxxLnB1c2goIiwuKjoiKX0pKSwoYy5tYXRjaGVzU2VsZWN0b3I9JC50ZXN0KHM9by5tYXRjaGVzfHxvLndlYmtpdE1hdGNoZXNTZWxlY3Rvcnx8by5tb3pNYXRjaGVzU2VsZWN0b3J8fG8ub01hdGNoZXNTZWxlY3Rvcnx8by5tc01hdGNoZXNTZWxlY3RvcikpJiZqYShmdW5jdGlvbihhKXtjLmRpc2Nvbm5lY3RlZE1hdGNoPXMuY2FsbChhLCJkaXYiKSxzLmNhbGwoYSwiW3MhPScnXTp4Iiksci5wdXNoKCIhPSIsUCl9KSxxPXEubGVuZ3RoJiZuZXcgUmVnRXhwKHEuam9pbigifCIpKSxyPXIubGVuZ3RoJiZuZXcgUmVnRXhwKHIuam9pbigifCIpKSxiPSQudGVzdChvLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKSx0PWJ8fCQudGVzdChvLmNvbnRhaW5zKT9mdW5jdGlvbihhLGIpe3ZhciBjPTk9PT1hLm5vZGVUeXBlP2EuZG9jdW1lbnRFbGVtZW50OmEsZD1iJiZiLnBhcmVudE5vZGU7cmV0dXJuIGE9PT1kfHwhKCFkfHwxIT09ZC5ub2RlVHlwZXx8IShjLmNvbnRhaW5zP2MuY29udGFpbnMoZCk6YS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiYmMTYmYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihkKSkpfTpmdW5jdGlvbihhLGIpe2lmKGIpd2hpbGUoYj1iLnBhcmVudE5vZGUpaWYoYj09PWEpcmV0dXJuITA7cmV0dXJuITF9LEI9Yj9mdW5jdGlvbihhLGIpe2lmKGE9PT1iKXJldHVybiBsPSEwLDA7dmFyIGQ9IWEuY29tcGFyZURvY3VtZW50UG9zaXRpb24tIWIuY29tcGFyZURvY3VtZW50UG9zaXRpb247cmV0dXJuIGQ/ZDooZD0oYS5vd25lckRvY3VtZW50fHxhKT09PShiLm93bmVyRG9jdW1lbnR8fGIpP2EuY29tcGFyZURvY3VtZW50UG9zaXRpb24oYik6MSwxJmR8fCFjLnNvcnREZXRhY2hlZCYmYi5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihhKT09PWQ/YT09PWd8fGEub3duZXJEb2N1bWVudD09PXYmJnQodixhKT8tMTpiPT09Z3x8Yi5vd25lckRvY3VtZW50PT09diYmdCh2LGIpPzE6az9KKGssYSktSihrLGIpOjA6NCZkPy0xOjEpfTpmdW5jdGlvbihhLGIpe2lmKGE9PT1iKXJldHVybiBsPSEwLDA7dmFyIGMsZD0wLGU9YS5wYXJlbnROb2RlLGY9Yi5wYXJlbnROb2RlLGg9W2FdLGk9W2JdO2lmKCFlfHwhZilyZXR1cm4gYT09PWc/LTE6Yj09PWc/MTplPy0xOmY/MTprP0ooayxhKS1KKGssYik6MDtpZihlPT09ZilyZXR1cm4gbGEoYSxiKTtjPWE7d2hpbGUoYz1jLnBhcmVudE5vZGUpaC51bnNoaWZ0KGMpO2M9Yjt3aGlsZShjPWMucGFyZW50Tm9kZSlpLnVuc2hpZnQoYyk7d2hpbGUoaFtkXT09PWlbZF0pZCsrO3JldHVybiBkP2xhKGhbZF0saVtkXSk6aFtkXT09PXY/LTE6aVtkXT09PXY/MTowfSxnKTpufSxnYS5tYXRjaGVzPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGdhKGEsbnVsbCxudWxsLGIpfSxnYS5tYXRjaGVzU2VsZWN0b3I9ZnVuY3Rpb24oYSxiKXtpZigoYS5vd25lckRvY3VtZW50fHxhKSE9PW4mJm0oYSksYj1iLnJlcGxhY2UoVSwiPSckMSddIiksISghYy5tYXRjaGVzU2VsZWN0b3J8fCFwfHxyJiZyLnRlc3QoYil8fHEmJnEudGVzdChiKSkpdHJ5e3ZhciBkPXMuY2FsbChhLGIpO2lmKGR8fGMuZGlzY29ubmVjdGVkTWF0Y2h8fGEuZG9jdW1lbnQmJjExIT09YS5kb2N1bWVudC5ub2RlVHlwZSlyZXR1cm4gZH1jYXRjaChlKXt9cmV0dXJuIGdhKGIsbixudWxsLFthXSkubGVuZ3RoPjB9LGdhLmNvbnRhaW5zPWZ1bmN0aW9uKGEsYil7cmV0dXJuKGEub3duZXJEb2N1bWVudHx8YSkhPT1uJiZtKGEpLHQoYSxiKX0sZ2EuYXR0cj1mdW5jdGlvbihhLGIpeyhhLm93bmVyRG9jdW1lbnR8fGEpIT09biYmbShhKTt2YXIgZT1kLmF0dHJIYW5kbGVbYi50b0xvd2VyQ2FzZSgpXSxmPWUmJkQuY2FsbChkLmF0dHJIYW5kbGUsYi50b0xvd2VyQ2FzZSgpKT9lKGEsYiwhcCk6dm9pZCAwO3JldHVybiB2b2lkIDAhPT1mP2Y6Yy5hdHRyaWJ1dGVzfHwhcD9hLmdldEF0dHJpYnV0ZShiKTooZj1hLmdldEF0dHJpYnV0ZU5vZGUoYikpJiZmLnNwZWNpZmllZD9mLnZhbHVlOm51bGx9LGdhLmVycm9yPWZ1bmN0aW9uKGEpe3Rocm93IG5ldyBFcnJvcigiU3ludGF4IGVycm9yLCB1bnJlY29nbml6ZWQgZXhwcmVzc2lvbjogIithKX0sZ2EudW5pcXVlU29ydD1mdW5jdGlvbihhKXt2YXIgYixkPVtdLGU9MCxmPTA7aWYobD0hYy5kZXRlY3REdXBsaWNhdGVzLGs9IWMuc29ydFN0YWJsZSYmYS5zbGljZSgwKSxhLnNvcnQoQiksbCl7d2hpbGUoYj1hW2YrK10pYj09PWFbZl0mJihlPWQucHVzaChmKSk7d2hpbGUoZS0tKWEuc3BsaWNlKGRbZV0sMSl9cmV0dXJuIGs9bnVsbCxhfSxlPWdhLmdldFRleHQ9ZnVuY3Rpb24oYSl7dmFyIGIsYz0iIixkPTAsZj1hLm5vZGVUeXBlO2lmKGYpe2lmKDE9PT1mfHw5PT09Znx8MTE9PT1mKXtpZigic3RyaW5nIj09dHlwZW9mIGEudGV4dENvbnRlbnQpcmV0dXJuIGEudGV4dENvbnRlbnQ7Zm9yKGE9YS5maXJzdENoaWxkO2E7YT1hLm5leHRTaWJsaW5nKWMrPWUoYSl9ZWxzZSBpZigzPT09Znx8ND09PWYpcmV0dXJuIGEubm9kZVZhbHVlfWVsc2Ugd2hpbGUoYj1hW2QrK10pYys9ZShiKTtyZXR1cm4gY30sZD1nYS5zZWxlY3RvcnM9e2NhY2hlTGVuZ3RoOjUwLGNyZWF0ZVBzZXVkbzppYSxtYXRjaDpYLGF0dHJIYW5kbGU6e30sZmluZDp7fSxyZWxhdGl2ZTp7Ij4iOntkaXI6InBhcmVudE5vZGUiLGZpcnN0OiEwfSwiICI6e2RpcjoicGFyZW50Tm9kZSJ9LCIrIjp7ZGlyOiJwcmV2aW91c1NpYmxpbmciLGZpcnN0OiEwfSwifiI6e2RpcjoicHJldmlvdXNTaWJsaW5nIn19LHByZUZpbHRlcjp7QVRUUjpmdW5jdGlvbihhKXtyZXR1cm4gYVsxXT1hWzFdLnJlcGxhY2UoY2EsZGEpLGFbM109KGFbM118fGFbNF18fGFbNV18fCIiKS5yZXBsYWNlKGNhLGRhKSwifj0iPT09YVsyXSYmKGFbM109IiAiK2FbM10rIiAiKSxhLnNsaWNlKDAsNCl9LENISUxEOmZ1bmN0aW9uKGEpe3JldHVybiBhWzFdPWFbMV0udG9Mb3dlckNhc2UoKSwibnRoIj09PWFbMV0uc2xpY2UoMCwzKT8oYVszXXx8Z2EuZXJyb3IoYVswXSksYVs0XT0rKGFbNF0/YVs1XSsoYVs2XXx8MSk6MiooImV2ZW4iPT09YVszXXx8Im9kZCI9PT1hWzNdKSksYVs1XT0rKGFbN10rYVs4XXx8Im9kZCI9PT1hWzNdKSk6YVszXSYmZ2EuZXJyb3IoYVswXSksYX0sUFNFVURPOmZ1bmN0aW9uKGEpe3ZhciBiLGM9IWFbNl0mJmFbMl07cmV0dXJuIFguQ0hJTEQudGVzdChhWzBdKT9udWxsOihhWzNdP2FbMl09YVs0XXx8YVs1XXx8IiI6YyYmVi50ZXN0KGMpJiYoYj1nKGMsITApKSYmKGI9Yy5pbmRleE9mKCIpIixjLmxlbmd0aC1iKS1jLmxlbmd0aCkmJihhWzBdPWFbMF0uc2xpY2UoMCxiKSxhWzJdPWMuc2xpY2UoMCxiKSksYS5zbGljZSgwLDMpKX19LGZpbHRlcjp7VEFHOmZ1bmN0aW9uKGEpe3ZhciBiPWEucmVwbGFjZShjYSxkYSkudG9Mb3dlckNhc2UoKTtyZXR1cm4iKiI9PT1hP2Z1bmN0aW9uKCl7cmV0dXJuITB9OmZ1bmN0aW9uKGEpe3JldHVybiBhLm5vZGVOYW1lJiZhLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT1ifX0sQ0xBU1M6ZnVuY3Rpb24oYSl7dmFyIGI9eVthKyIgIl07cmV0dXJuIGJ8fChiPW5ldyBSZWdFeHAoIihefCIrTCsiKSIrYSsiKCIrTCsifCQpIikpJiZ5KGEsZnVuY3Rpb24oYSl7cmV0dXJuIGIudGVzdCgic3RyaW5nIj09dHlwZW9mIGEuY2xhc3NOYW1lJiZhLmNsYXNzTmFtZXx8InVuZGVmaW5lZCIhPXR5cGVvZiBhLmdldEF0dHJpYnV0ZSYmYS5nZXRBdHRyaWJ1dGUoImNsYXNzIil8fCIiKX0pfSxBVFRSOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gZnVuY3Rpb24oZCl7dmFyIGU9Z2EuYXR0cihkLGEpO3JldHVybiBudWxsPT1lPyIhPSI9PT1iOmI/KGUrPSIiLCI9Ij09PWI/ZT09PWM6IiE9Ij09PWI/ZSE9PWM6Il49Ij09PWI/YyYmMD09PWUuaW5kZXhPZihjKToiKj0iPT09Yj9jJiZlLmluZGV4T2YoYyk+LTE6IiQ9Ij09PWI/YyYmZS5zbGljZSgtYy5sZW5ndGgpPT09Yzoifj0iPT09Yj8oIiAiK2UucmVwbGFjZShRLCIgIikrIiAiKS5pbmRleE9mKGMpPi0xOiJ8PSI9PT1iP2U9PT1jfHxlLnNsaWNlKDAsYy5sZW5ndGgrMSk9PT1jKyItIjohMSk6ITB9fSxDSElMRDpmdW5jdGlvbihhLGIsYyxkLGUpe3ZhciBmPSJudGgiIT09YS5zbGljZSgwLDMpLGc9Imxhc3QiIT09YS5zbGljZSgtNCksaD0ib2YtdHlwZSI9PT1iO3JldHVybiAxPT09ZCYmMD09PWU/ZnVuY3Rpb24oYSl7cmV0dXJuISFhLnBhcmVudE5vZGV9OmZ1bmN0aW9uKGIsYyxpKXt2YXIgaixrLGwsbSxuLG8scD1mIT09Zz8ibmV4dFNpYmxpbmciOiJwcmV2aW91c1NpYmxpbmciLHE9Yi5wYXJlbnROb2RlLHI9aCYmYi5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpLHM9IWkmJiFoO2lmKHEpe2lmKGYpe3doaWxlKHApe2w9Yjt3aGlsZShsPWxbcF0paWYoaD9sLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT1yOjE9PT1sLm5vZGVUeXBlKXJldHVybiExO289cD0ib25seSI9PT1hJiYhbyYmIm5leHRTaWJsaW5nIn1yZXR1cm4hMH1pZihvPVtnP3EuZmlyc3RDaGlsZDpxLmxhc3RDaGlsZF0sZyYmcyl7az1xW3VdfHwocVt1XT17fSksaj1rW2FdfHxbXSxuPWpbMF09PT13JiZqWzFdLG09alswXT09PXcmJmpbMl0sbD1uJiZxLmNoaWxkTm9kZXNbbl07d2hpbGUobD0rK24mJmwmJmxbcF18fChtPW49MCl8fG8ucG9wKCkpaWYoMT09PWwubm9kZVR5cGUmJisrbSYmbD09PWIpe2tbYV09W3csbixtXTticmVha319ZWxzZSBpZihzJiYoaj0oYlt1XXx8KGJbdV09e30pKVthXSkmJmpbMF09PT13KW09alsxXTtlbHNlIHdoaWxlKGw9KytuJiZsJiZsW3BdfHwobT1uPTApfHxvLnBvcCgpKWlmKChoP2wubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PXI6MT09PWwubm9kZVR5cGUpJiYrK20mJihzJiYoKGxbdV18fChsW3VdPXt9KSlbYV09W3csbV0pLGw9PT1iKSlicmVhaztyZXR1cm4gbS09ZSxtPT09ZHx8bSVkPT09MCYmbS9kPj0wfX19LFBTRVVETzpmdW5jdGlvbihhLGIpe3ZhciBjLGU9ZC5wc2V1ZG9zW2FdfHxkLnNldEZpbHRlcnNbYS50b0xvd2VyQ2FzZSgpXXx8Z2EuZXJyb3IoInVuc3VwcG9ydGVkIHBzZXVkbzogIithKTtyZXR1cm4gZVt1XT9lKGIpOmUubGVuZ3RoPjE/KGM9W2EsYSwiIixiXSxkLnNldEZpbHRlcnMuaGFzT3duUHJvcGVydHkoYS50b0xvd2VyQ2FzZSgpKT9pYShmdW5jdGlvbihhLGMpe3ZhciBkLGY9ZShhLGIpLGc9Zi5sZW5ndGg7d2hpbGUoZy0tKWQ9SihhLGZbZ10pLGFbZF09IShjW2RdPWZbZ10pfSk6ZnVuY3Rpb24oYSl7cmV0dXJuIGUoYSwwLGMpfSk6ZX19LHBzZXVkb3M6e25vdDppYShmdW5jdGlvbihhKXt2YXIgYj1bXSxjPVtdLGQ9aChhLnJlcGxhY2UoUiwiJDEiKSk7cmV0dXJuIGRbdV0/aWEoZnVuY3Rpb24oYSxiLGMsZSl7dmFyIGYsZz1kKGEsbnVsbCxlLFtdKSxoPWEubGVuZ3RoO3doaWxlKGgtLSkoZj1nW2hdKSYmKGFbaF09IShiW2hdPWYpKX0pOmZ1bmN0aW9uKGEsZSxmKXtyZXR1cm4gYlswXT1hLGQoYixudWxsLGYsYyksYlswXT1udWxsLCFjLnBvcCgpfX0pLGhhczppYShmdW5jdGlvbihhKXtyZXR1cm4gZnVuY3Rpb24oYil7cmV0dXJuIGdhKGEsYikubGVuZ3RoPjB9fSksY29udGFpbnM6aWEoZnVuY3Rpb24oYSl7cmV0dXJuIGE9YS5yZXBsYWNlKGNhLGRhKSxmdW5jdGlvbihiKXtyZXR1cm4oYi50ZXh0Q29udGVudHx8Yi5pbm5lclRleHR8fGUoYikpLmluZGV4T2YoYSk+LTF9fSksbGFuZzppYShmdW5jdGlvbihhKXtyZXR1cm4gVy50ZXN0KGF8fCIiKXx8Z2EuZXJyb3IoInVuc3VwcG9ydGVkIGxhbmc6ICIrYSksYT1hLnJlcGxhY2UoY2EsZGEpLnRvTG93ZXJDYXNlKCksZnVuY3Rpb24oYil7dmFyIGM7ZG8gaWYoYz1wP2IubGFuZzpiLmdldEF0dHJpYnV0ZSgieG1sOmxhbmciKXx8Yi5nZXRBdHRyaWJ1dGUoImxhbmciKSlyZXR1cm4gYz1jLnRvTG93ZXJDYXNlKCksYz09PWF8fDA9PT1jLmluZGV4T2YoYSsiLSIpO3doaWxlKChiPWIucGFyZW50Tm9kZSkmJjE9PT1iLm5vZGVUeXBlKTtyZXR1cm4hMX19KSx0YXJnZXQ6ZnVuY3Rpb24oYil7dmFyIGM9YS5sb2NhdGlvbiYmYS5sb2NhdGlvbi5oYXNoO3JldHVybiBjJiZjLnNsaWNlKDEpPT09Yi5pZH0scm9vdDpmdW5jdGlvbihhKXtyZXR1cm4gYT09PW99LGZvY3VzOmZ1bmN0aW9uKGEpe3JldHVybiBhPT09bi5hY3RpdmVFbGVtZW50JiYoIW4uaGFzRm9jdXN8fG4uaGFzRm9jdXMoKSkmJiEhKGEudHlwZXx8YS5ocmVmfHx+YS50YWJJbmRleCl9LGVuYWJsZWQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuZGlzYWJsZWQ9PT0hMX0sZGlzYWJsZWQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuZGlzYWJsZWQ9PT0hMH0sY2hlY2tlZDpmdW5jdGlvbihhKXt2YXIgYj1hLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuImlucHV0Ij09PWImJiEhYS5jaGVja2VkfHwib3B0aW9uIj09PWImJiEhYS5zZWxlY3RlZH0sc2VsZWN0ZWQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEucGFyZW50Tm9kZSYmYS5wYXJlbnROb2RlLnNlbGVjdGVkSW5kZXgsYS5zZWxlY3RlZD09PSEwfSxlbXB0eTpmdW5jdGlvbihhKXtmb3IoYT1hLmZpcnN0Q2hpbGQ7YTthPWEubmV4dFNpYmxpbmcpaWYoYS5ub2RlVHlwZTw2KXJldHVybiExO3JldHVybiEwfSxwYXJlbnQ6ZnVuY3Rpb24oYSl7cmV0dXJuIWQucHNldWRvcy5lbXB0eShhKX0saGVhZGVyOmZ1bmN0aW9uKGEpe3JldHVybiBaLnRlc3QoYS5ub2RlTmFtZSl9LGlucHV0OmZ1bmN0aW9uKGEpe3JldHVybiBZLnRlc3QoYS5ub2RlTmFtZSl9LGJ1dHRvbjpmdW5jdGlvbihhKXt2YXIgYj1hLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuImlucHV0Ij09PWImJiJidXR0b24iPT09YS50eXBlfHwiYnV0dG9uIj09PWJ9LHRleHQ6ZnVuY3Rpb24oYSl7dmFyIGI7cmV0dXJuImlucHV0Ij09PWEubm9kZU5hbWUudG9Mb3dlckNhc2UoKSYmInRleHQiPT09YS50eXBlJiYobnVsbD09KGI9YS5nZXRBdHRyaWJ1dGUoInR5cGUiKSl8fCJ0ZXh0Ij09PWIudG9Mb3dlckNhc2UoKSl9LGZpcnN0Om9hKGZ1bmN0aW9uKCl7cmV0dXJuWzBdfSksbGFzdDpvYShmdW5jdGlvbihhLGIpe3JldHVybltiLTFdfSksZXE6b2EoZnVuY3Rpb24oYSxiLGMpe3JldHVyblswPmM/YytiOmNdfSksZXZlbjpvYShmdW5jdGlvbihhLGIpe2Zvcih2YXIgYz0wO2I+YztjKz0yKWEucHVzaChjKTtyZXR1cm4gYX0pLG9kZDpvYShmdW5jdGlvbihhLGIpe2Zvcih2YXIgYz0xO2I+YztjKz0yKWEucHVzaChjKTtyZXR1cm4gYX0pLGx0Om9hKGZ1bmN0aW9uKGEsYixjKXtmb3IodmFyIGQ9MD5jP2MrYjpjOy0tZD49MDspYS5wdXNoKGQpO3JldHVybiBhfSksZ3Q6b2EoZnVuY3Rpb24oYSxiLGMpe2Zvcih2YXIgZD0wPmM/YytiOmM7KytkPGI7KWEucHVzaChkKTtyZXR1cm4gYX0pfX0sZC5wc2V1ZG9zLm50aD1kLnBzZXVkb3MuZXE7Zm9yKGIgaW57cmFkaW86ITAsY2hlY2tib3g6ITAsZmlsZTohMCxwYXNzd29yZDohMCxpbWFnZTohMH0pZC5wc2V1ZG9zW2JdPW1hKGIpO2ZvcihiIGlue3N1Ym1pdDohMCxyZXNldDohMH0pZC5wc2V1ZG9zW2JdPW5hKGIpO2Z1bmN0aW9uIHFhKCl7fXFhLnByb3RvdHlwZT1kLmZpbHRlcnM9ZC5wc2V1ZG9zLGQuc2V0RmlsdGVycz1uZXcgcWEsZz1nYS50b2tlbml6ZT1mdW5jdGlvbihhLGIpe3ZhciBjLGUsZixnLGgsaSxqLGs9elthKyIgIl07aWYoaylyZXR1cm4gYj8wOmsuc2xpY2UoMCk7aD1hLGk9W10saj1kLnByZUZpbHRlcjt3aGlsZShoKXsoIWN8fChlPVMuZXhlYyhoKSkpJiYoZSYmKGg9aC5zbGljZShlWzBdLmxlbmd0aCl8fGgpLGkucHVzaChmPVtdKSksYz0hMSwoZT1ULmV4ZWMoaCkpJiYoYz1lLnNoaWZ0KCksZi5wdXNoKHt2YWx1ZTpjLHR5cGU6ZVswXS5yZXBsYWNlKFIsIiAiKX0pLGg9aC5zbGljZShjLmxlbmd0aCkpO2ZvcihnIGluIGQuZmlsdGVyKSEoZT1YW2ddLmV4ZWMoaCkpfHxqW2ddJiYhKGU9altnXShlKSl8fChjPWUuc2hpZnQoKSxmLnB1c2goe3ZhbHVlOmMsdHlwZTpnLG1hdGNoZXM6ZX0pLGg9aC5zbGljZShjLmxlbmd0aCkpO2lmKCFjKWJyZWFrfXJldHVybiBiP2gubGVuZ3RoOmg/Z2EuZXJyb3IoYSk6eihhLGkpLnNsaWNlKDApfTtmdW5jdGlvbiByYShhKXtmb3IodmFyIGI9MCxjPWEubGVuZ3RoLGQ9IiI7Yz5iO2IrKylkKz1hW2JdLnZhbHVlO3JldHVybiBkfWZ1bmN0aW9uIHNhKGEsYixjKXt2YXIgZD1iLmRpcixlPWMmJiJwYXJlbnROb2RlIj09PWQsZj14Kys7cmV0dXJuIGIuZmlyc3Q/ZnVuY3Rpb24oYixjLGYpe3doaWxlKGI9YltkXSlpZigxPT09Yi5ub2RlVHlwZXx8ZSlyZXR1cm4gYShiLGMsZil9OmZ1bmN0aW9uKGIsYyxnKXt2YXIgaCxpLGo9W3csZl07aWYoZyl7d2hpbGUoYj1iW2RdKWlmKCgxPT09Yi5ub2RlVHlwZXx8ZSkmJmEoYixjLGcpKXJldHVybiEwfWVsc2Ugd2hpbGUoYj1iW2RdKWlmKDE9PT1iLm5vZGVUeXBlfHxlKXtpZihpPWJbdV18fChiW3VdPXt9KSwoaD1pW2RdKSYmaFswXT09PXcmJmhbMV09PT1mKXJldHVybiBqWzJdPWhbMl07aWYoaVtkXT1qLGpbMl09YShiLGMsZykpcmV0dXJuITB9fX1mdW5jdGlvbiB0YShhKXtyZXR1cm4gYS5sZW5ndGg+MT9mdW5jdGlvbihiLGMsZCl7dmFyIGU9YS5sZW5ndGg7d2hpbGUoZS0tKWlmKCFhW2VdKGIsYyxkKSlyZXR1cm4hMTtyZXR1cm4hMH06YVswXX1mdW5jdGlvbiB1YShhLGIsYyl7Zm9yKHZhciBkPTAsZT1iLmxlbmd0aDtlPmQ7ZCsrKWdhKGEsYltkXSxjKTtyZXR1cm4gY31mdW5jdGlvbiB2YShhLGIsYyxkLGUpe2Zvcih2YXIgZixnPVtdLGg9MCxpPWEubGVuZ3RoLGo9bnVsbCE9YjtpPmg7aCsrKShmPWFbaF0pJiYoIWN8fGMoZixkLGUpKSYmKGcucHVzaChmKSxqJiZiLnB1c2goaCkpO3JldHVybiBnfWZ1bmN0aW9uIHdhKGEsYixjLGQsZSxmKXtyZXR1cm4gZCYmIWRbdV0mJihkPXdhKGQpKSxlJiYhZVt1XSYmKGU9d2EoZSxmKSksaWEoZnVuY3Rpb24oZixnLGgsaSl7dmFyIGosayxsLG09W10sbj1bXSxvPWcubGVuZ3RoLHA9Znx8dWEoYnx8IioiLGgubm9kZVR5cGU/W2hdOmgsW10pLHE9IWF8fCFmJiZiP3A6dmEocCxtLGEsaCxpKSxyPWM/ZXx8KGY/YTpvfHxkKT9bXTpnOnE7aWYoYyYmYyhxLHIsaCxpKSxkKXtqPXZhKHIsbiksZChqLFtdLGgsaSksaz1qLmxlbmd0aDt3aGlsZShrLS0pKGw9altrXSkmJihyW25ba11dPSEocVtuW2tdXT1sKSl9aWYoZil7aWYoZXx8YSl7aWYoZSl7aj1bXSxrPXIubGVuZ3RoO3doaWxlKGstLSkobD1yW2tdKSYmai5wdXNoKHFba109bCk7ZShudWxsLHI9W10saixpKX1rPXIubGVuZ3RoO3doaWxlKGstLSkobD1yW2tdKSYmKGo9ZT9KKGYsbCk6bVtrXSk+LTEmJihmW2pdPSEoZ1tqXT1sKSl9fWVsc2Ugcj12YShyPT09Zz9yLnNwbGljZShvLHIubGVuZ3RoKTpyKSxlP2UobnVsbCxnLHIsaSk6SC5hcHBseShnLHIpfSl9ZnVuY3Rpb24geGEoYSl7Zm9yKHZhciBiLGMsZSxmPWEubGVuZ3RoLGc9ZC5yZWxhdGl2ZVthWzBdLnR5cGVdLGg9Z3x8ZC5yZWxhdGl2ZVsiICJdLGk9Zz8xOjAsaz1zYShmdW5jdGlvbihhKXtyZXR1cm4gYT09PWJ9LGgsITApLGw9c2EoZnVuY3Rpb24oYSl7cmV0dXJuIEooYixhKT4tMX0saCwhMCksbT1bZnVuY3Rpb24oYSxjLGQpe3ZhciBlPSFnJiYoZHx8YyE9PWopfHwoKGI9Yykubm9kZVR5cGU/ayhhLGMsZCk6bChhLGMsZCkpO3JldHVybiBiPW51bGwsZX1dO2Y+aTtpKyspaWYoYz1kLnJlbGF0aXZlW2FbaV0udHlwZV0pbT1bc2EodGEobSksYyldO2Vsc2V7aWYoYz1kLmZpbHRlclthW2ldLnR5cGVdLmFwcGx5KG51bGwsYVtpXS5tYXRjaGVzKSxjW3VdKXtmb3IoZT0rK2k7Zj5lO2UrKylpZihkLnJlbGF0aXZlW2FbZV0udHlwZV0pYnJlYWs7cmV0dXJuIHdhKGk+MSYmdGEobSksaT4xJiZyYShhLnNsaWNlKDAsaS0xKS5jb25jYXQoe3ZhbHVlOiIgIj09PWFbaS0yXS50eXBlPyIqIjoiIn0pKS5yZXBsYWNlKFIsIiQxIiksYyxlPmkmJnhhKGEuc2xpY2UoaSxlKSksZj5lJiZ4YShhPWEuc2xpY2UoZSkpLGY+ZSYmcmEoYSkpfW0ucHVzaChjKX1yZXR1cm4gdGEobSl9ZnVuY3Rpb24geWEoYSxiKXt2YXIgYz1iLmxlbmd0aD4wLGU9YS5sZW5ndGg+MCxmPWZ1bmN0aW9uKGYsZyxoLGksayl7dmFyIGwsbSxvLHA9MCxxPSIwIixyPWYmJltdLHM9W10sdD1qLHU9Znx8ZSYmZC5maW5kLlRBRygiKiIsayksdj13Kz1udWxsPT10PzE6TWF0aC5yYW5kb20oKXx8LjEseD11Lmxlbmd0aDtmb3IoayYmKGo9ZyE9PW4mJmcpO3EhPT14JiZudWxsIT0obD11W3FdKTtxKyspe2lmKGUmJmwpe209MDt3aGlsZShvPWFbbSsrXSlpZihvKGwsZyxoKSl7aS5wdXNoKGwpO2JyZWFrfWsmJih3PXYpfWMmJigobD0hbyYmbCkmJnAtLSxmJiZyLnB1c2gobCkpfWlmKHArPXEsYyYmcSE9PXApe209MDt3aGlsZShvPWJbbSsrXSlvKHIscyxnLGgpO2lmKGYpe2lmKHA+MCl3aGlsZShxLS0pcltxXXx8c1txXXx8KHNbcV09Ri5jYWxsKGkpKTtzPXZhKHMpfUguYXBwbHkoaSxzKSxrJiYhZiYmcy5sZW5ndGg+MCYmcCtiLmxlbmd0aD4xJiZnYS51bmlxdWVTb3J0KGkpfXJldHVybiBrJiYodz12LGo9dCkscn07cmV0dXJuIGM/aWEoZik6Zn1yZXR1cm4gaD1nYS5jb21waWxlPWZ1bmN0aW9uKGEsYil7dmFyIGMsZD1bXSxlPVtdLGY9QVthKyIgIl07aWYoIWYpe2J8fChiPWcoYSkpLGM9Yi5sZW5ndGg7d2hpbGUoYy0tKWY9eGEoYltjXSksZlt1XT9kLnB1c2goZik6ZS5wdXNoKGYpO2Y9QShhLHlhKGUsZCkpLGYuc2VsZWN0b3I9YX1yZXR1cm4gZn0saT1nYS5zZWxlY3Q9ZnVuY3Rpb24oYSxiLGUsZil7dmFyIGksaixrLGwsbSxuPSJmdW5jdGlvbiI9PXR5cGVvZiBhJiZhLG89IWYmJmcoYT1uLnNlbGVjdG9yfHxhKTtpZihlPWV8fFtdLDE9PT1vLmxlbmd0aCl7aWYoaj1vWzBdPW9bMF0uc2xpY2UoMCksai5sZW5ndGg+MiYmIklEIj09PShrPWpbMF0pLnR5cGUmJmMuZ2V0QnlJZCYmOT09PWIubm9kZVR5cGUmJnAmJmQucmVsYXRpdmVbalsxXS50eXBlXSl7aWYoYj0oZC5maW5kLklEKGsubWF0Y2hlc1swXS5yZXBsYWNlKGNhLGRhKSxiKXx8W10pWzBdLCFiKXJldHVybiBlO24mJihiPWIucGFyZW50Tm9kZSksYT1hLnNsaWNlKGouc2hpZnQoKS52YWx1ZS5sZW5ndGgpfWk9WC5uZWVkc0NvbnRleHQudGVzdChhKT8wOmoubGVuZ3RoO3doaWxlKGktLSl7aWYoaz1qW2ldLGQucmVsYXRpdmVbbD1rLnR5cGVdKWJyZWFrO2lmKChtPWQuZmluZFtsXSkmJihmPW0oay5tYXRjaGVzWzBdLnJlcGxhY2UoY2EsZGEpLGFhLnRlc3QoalswXS50eXBlKSYmcGEoYi5wYXJlbnROb2RlKXx8YikpKXtpZihqLnNwbGljZShpLDEpLGE9Zi5sZW5ndGgmJnJhKGopLCFhKXJldHVybiBILmFwcGx5KGUsZiksZTticmVha319fXJldHVybihufHxoKGEsbykpKGYsYiwhcCxlLGFhLnRlc3QoYSkmJnBhKGIucGFyZW50Tm9kZSl8fGIpLGV9LGMuc29ydFN0YWJsZT11LnNwbGl0KCIiKS5zb3J0KEIpLmpvaW4oIiIpPT09dSxjLmRldGVjdER1cGxpY2F0ZXM9ISFsLG0oKSxjLnNvcnREZXRhY2hlZD1qYShmdW5jdGlvbihhKXtyZXR1cm4gMSZhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKG4uY3JlYXRlRWxlbWVudCgiZGl2IikpfSksamEoZnVuY3Rpb24oYSl7cmV0dXJuIGEuaW5uZXJIVE1MPSI8YSBocmVmPScjJz48L2E+IiwiIyI9PT1hLmZpcnN0Q2hpbGQuZ2V0QXR0cmlidXRlKCJocmVmIil9KXx8a2EoInR5cGV8aHJlZnxoZWlnaHR8d2lkdGgiLGZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gYz92b2lkIDA6YS5nZXRBdHRyaWJ1dGUoYiwidHlwZSI9PT1iLnRvTG93ZXJDYXNlKCk/MToyKX0pLGMuYXR0cmlidXRlcyYmamEoZnVuY3Rpb24oYSl7cmV0dXJuIGEuaW5uZXJIVE1MPSI8aW5wdXQvPiIsYS5maXJzdENoaWxkLnNldEF0dHJpYnV0ZSgidmFsdWUiLCIiKSwiIj09PWEuZmlyc3RDaGlsZC5nZXRBdHRyaWJ1dGUoInZhbHVlIil9KXx8a2EoInZhbHVlIixmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGN8fCJpbnB1dCIhPT1hLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk/dm9pZCAwOmEuZGVmYXVsdFZhbHVlfSksamEoZnVuY3Rpb24oYSl7cmV0dXJuIG51bGw9PWEuZ2V0QXR0cmlidXRlKCJkaXNhYmxlZCIpfSl8fGthKEssZnVuY3Rpb24oYSxiLGMpe3ZhciBkO3JldHVybiBjP3ZvaWQgMDphW2JdPT09ITA/Yi50b0xvd2VyQ2FzZSgpOihkPWEuZ2V0QXR0cmlidXRlTm9kZShiKSkmJmQuc3BlY2lmaWVkP2QudmFsdWU6bnVsbH0pLGdhfShhKTttLmZpbmQ9cyxtLmV4cHI9cy5zZWxlY3RvcnMsbS5leHByWyI6Il09bS5leHByLnBzZXVkb3MsbS51bmlxdWU9cy51bmlxdWVTb3J0LG0udGV4dD1zLmdldFRleHQsbS5pc1hNTERvYz1zLmlzWE1MLG0uY29udGFpbnM9cy5jb250YWluczt2YXIgdD1tLmV4cHIubWF0Y2gubmVlZHNDb250ZXh0LHU9L148KFx3KylccypcLz8+KD86PFwvXDE+fCkkLyx2PS9eLlteOiNcW1wuLF0qJC87ZnVuY3Rpb24gdyhhLGIsYyl7aWYobS5pc0Z1bmN0aW9uKGIpKXJldHVybiBtLmdyZXAoYSxmdW5jdGlvbihhLGQpe3JldHVybiEhYi5jYWxsKGEsZCxhKSE9PWN9KTtpZihiLm5vZGVUeXBlKXJldHVybiBtLmdyZXAoYSxmdW5jdGlvbihhKXtyZXR1cm4gYT09PWIhPT1jfSk7aWYoInN0cmluZyI9PXR5cGVvZiBiKXtpZih2LnRlc3QoYikpcmV0dXJuIG0uZmlsdGVyKGIsYSxjKTtiPW0uZmlsdGVyKGIsYSl9cmV0dXJuIG0uZ3JlcChhLGZ1bmN0aW9uKGEpe3JldHVybiBtLmluQXJyYXkoYSxiKT49MCE9PWN9KX1tLmZpbHRlcj1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9YlswXTtyZXR1cm4gYyYmKGE9Ijpub3QoIithKyIpIiksMT09PWIubGVuZ3RoJiYxPT09ZC5ub2RlVHlwZT9tLmZpbmQubWF0Y2hlc1NlbGVjdG9yKGQsYSk/W2RdOltdOm0uZmluZC5tYXRjaGVzKGEsbS5ncmVwKGIsZnVuY3Rpb24oYSl7cmV0dXJuIDE9PT1hLm5vZGVUeXBlfSkpfSxtLmZuLmV4dGVuZCh7ZmluZDpmdW5jdGlvbihhKXt2YXIgYixjPVtdLGQ9dGhpcyxlPWQubGVuZ3RoO2lmKCJzdHJpbmciIT10eXBlb2YgYSlyZXR1cm4gdGhpcy5wdXNoU3RhY2sobShhKS5maWx0ZXIoZnVuY3Rpb24oKXtmb3IoYj0wO2U+YjtiKyspaWYobS5jb250YWlucyhkW2JdLHRoaXMpKXJldHVybiEwfSkpO2ZvcihiPTA7ZT5iO2IrKyltLmZpbmQoYSxkW2JdLGMpO3JldHVybiBjPXRoaXMucHVzaFN0YWNrKGU+MT9tLnVuaXF1ZShjKTpjKSxjLnNlbGVjdG9yPXRoaXMuc2VsZWN0b3I/dGhpcy5zZWxlY3RvcisiICIrYTphLGN9LGZpbHRlcjpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2sodyh0aGlzLGF8fFtdLCExKSl9LG5vdDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2sodyh0aGlzLGF8fFtdLCEwKSl9LGlzOmZ1bmN0aW9uKGEpe3JldHVybiEhdyh0aGlzLCJzdHJpbmciPT10eXBlb2YgYSYmdC50ZXN0KGEpP20oYSk6YXx8W10sITEpLmxlbmd0aH19KTt2YXIgeCx5PWEuZG9jdW1lbnQsej0vXig/OlxzKig8W1x3XFddKz4pW14+XSp8IyhbXHctXSopKSQvLEE9bS5mbi5pbml0PWZ1bmN0aW9uKGEsYil7dmFyIGMsZDtpZighYSlyZXR1cm4gdGhpcztpZigic3RyaW5nIj09dHlwZW9mIGEpe2lmKGM9IjwiPT09YS5jaGFyQXQoMCkmJiI+Ij09PWEuY2hhckF0KGEubGVuZ3RoLTEpJiZhLmxlbmd0aD49Mz9bbnVsbCxhLG51bGxdOnouZXhlYyhhKSwhY3x8IWNbMV0mJmIpcmV0dXJuIWJ8fGIuanF1ZXJ5PyhifHx4KS5maW5kKGEpOnRoaXMuY29uc3RydWN0b3IoYikuZmluZChhKTtpZihjWzFdKXtpZihiPWIgaW5zdGFuY2VvZiBtP2JbMF06YixtLm1lcmdlKHRoaXMsbS5wYXJzZUhUTUwoY1sxXSxiJiZiLm5vZGVUeXBlP2Iub3duZXJEb2N1bWVudHx8Yjp5LCEwKSksdS50ZXN0KGNbMV0pJiZtLmlzUGxhaW5PYmplY3QoYikpZm9yKGMgaW4gYiltLmlzRnVuY3Rpb24odGhpc1tjXSk/dGhpc1tjXShiW2NdKTp0aGlzLmF0dHIoYyxiW2NdKTtyZXR1cm4gdGhpc31pZihkPXkuZ2V0RWxlbWVudEJ5SWQoY1syXSksZCYmZC5wYXJlbnROb2RlKXtpZihkLmlkIT09Y1syXSlyZXR1cm4geC5maW5kKGEpO3RoaXMubGVuZ3RoPTEsdGhpc1swXT1kfXJldHVybiB0aGlzLmNvbnRleHQ9eSx0aGlzLnNlbGVjdG9yPWEsdGhpc31yZXR1cm4gYS5ub2RlVHlwZT8odGhpcy5jb250ZXh0PXRoaXNbMF09YSx0aGlzLmxlbmd0aD0xLHRoaXMpOm0uaXNGdW5jdGlvbihhKT8idW5kZWZpbmVkIiE9dHlwZW9mIHgucmVhZHk/eC5yZWFkeShhKTphKG0pOih2b2lkIDAhPT1hLnNlbGVjdG9yJiYodGhpcy5zZWxlY3Rvcj1hLnNlbGVjdG9yLHRoaXMuY29udGV4dD1hLmNvbnRleHQpLG0ubWFrZUFycmF5KGEsdGhpcykpfTtBLnByb3RvdHlwZT1tLmZuLHg9bSh5KTt2YXIgQj0vXig/OnBhcmVudHN8cHJldig/OlVudGlsfEFsbCkpLyxDPXtjaGlsZHJlbjohMCxjb250ZW50czohMCxuZXh0OiEwLHByZXY6ITB9O20uZXh0ZW5kKHtkaXI6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPVtdLGU9YVtiXTt3aGlsZShlJiY5IT09ZS5ub2RlVHlwZSYmKHZvaWQgMD09PWN8fDEhPT1lLm5vZGVUeXBlfHwhbShlKS5pcyhjKSkpMT09PWUubm9kZVR5cGUmJmQucHVzaChlKSxlPWVbYl07cmV0dXJuIGR9LHNpYmxpbmc6ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9W107YTthPWEubmV4dFNpYmxpbmcpMT09PWEubm9kZVR5cGUmJmEhPT1iJiZjLnB1c2goYSk7cmV0dXJuIGN9fSksbS5mbi5leHRlbmQoe2hhczpmdW5jdGlvbihhKXt2YXIgYixjPW0oYSx0aGlzKSxkPWMubGVuZ3RoO3JldHVybiB0aGlzLmZpbHRlcihmdW5jdGlvbigpe2ZvcihiPTA7ZD5iO2IrKylpZihtLmNvbnRhaW5zKHRoaXMsY1tiXSkpcmV0dXJuITB9KX0sY2xvc2VzdDpmdW5jdGlvbihhLGIpe2Zvcih2YXIgYyxkPTAsZT10aGlzLmxlbmd0aCxmPVtdLGc9dC50ZXN0KGEpfHwic3RyaW5nIiE9dHlwZW9mIGE/bShhLGJ8fHRoaXMuY29udGV4dCk6MDtlPmQ7ZCsrKWZvcihjPXRoaXNbZF07YyYmYyE9PWI7Yz1jLnBhcmVudE5vZGUpaWYoYy5ub2RlVHlwZTwxMSYmKGc/Zy5pbmRleChjKT4tMToxPT09Yy5ub2RlVHlwZSYmbS5maW5kLm1hdGNoZXNTZWxlY3RvcihjLGEpKSl7Zi5wdXNoKGMpO2JyZWFrfXJldHVybiB0aGlzLnB1c2hTdGFjayhmLmxlbmd0aD4xP20udW5pcXVlKGYpOmYpfSxpbmRleDpmdW5jdGlvbihhKXtyZXR1cm4gYT8ic3RyaW5nIj09dHlwZW9mIGE/bS5pbkFycmF5KHRoaXNbMF0sbShhKSk6bS5pbkFycmF5KGEuanF1ZXJ5P2FbMF06YSx0aGlzKTp0aGlzWzBdJiZ0aGlzWzBdLnBhcmVudE5vZGU/dGhpcy5maXJzdCgpLnByZXZBbGwoKS5sZW5ndGg6LTF9LGFkZDpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLnB1c2hTdGFjayhtLnVuaXF1ZShtLm1lcmdlKHRoaXMuZ2V0KCksbShhLGIpKSkpfSxhZGRCYWNrOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmFkZChudWxsPT1hP3RoaXMucHJldk9iamVjdDp0aGlzLnByZXZPYmplY3QuZmlsdGVyKGEpKX19KTtmdW5jdGlvbiBEKGEsYil7ZG8gYT1hW2JdO3doaWxlKGEmJjEhPT1hLm5vZGVUeXBlKTtyZXR1cm4gYX1tLmVhY2goe3BhcmVudDpmdW5jdGlvbihhKXt2YXIgYj1hLnBhcmVudE5vZGU7cmV0dXJuIGImJjExIT09Yi5ub2RlVHlwZT9iOm51bGx9LHBhcmVudHM6ZnVuY3Rpb24oYSl7cmV0dXJuIG0uZGlyKGEsInBhcmVudE5vZGUiKX0scGFyZW50c1VudGlsOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gbS5kaXIoYSwicGFyZW50Tm9kZSIsYyl9LG5leHQ6ZnVuY3Rpb24oYSl7cmV0dXJuIEQoYSwibmV4dFNpYmxpbmciKX0scHJldjpmdW5jdGlvbihhKXtyZXR1cm4gRChhLCJwcmV2aW91c1NpYmxpbmciKX0sbmV4dEFsbDpmdW5jdGlvbihhKXtyZXR1cm4gbS5kaXIoYSwibmV4dFNpYmxpbmciKX0scHJldkFsbDpmdW5jdGlvbihhKXtyZXR1cm4gbS5kaXIoYSwicHJldmlvdXNTaWJsaW5nIil9LG5leHRVbnRpbDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIG0uZGlyKGEsIm5leHRTaWJsaW5nIixjKX0scHJldlVudGlsOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gbS5kaXIoYSwicHJldmlvdXNTaWJsaW5nIixjKX0sc2libGluZ3M6ZnVuY3Rpb24oYSl7cmV0dXJuIG0uc2libGluZygoYS5wYXJlbnROb2RlfHx7fSkuZmlyc3RDaGlsZCxhKX0sY2hpbGRyZW46ZnVuY3Rpb24oYSl7cmV0dXJuIG0uc2libGluZyhhLmZpcnN0Q2hpbGQpfSxjb250ZW50czpmdW5jdGlvbihhKXtyZXR1cm4gbS5ub2RlTmFtZShhLCJpZnJhbWUiKT9hLmNvbnRlbnREb2N1bWVudHx8YS5jb250ZW50V2luZG93LmRvY3VtZW50Om0ubWVyZ2UoW10sYS5jaGlsZE5vZGVzKX19LGZ1bmN0aW9uKGEsYil7bS5mblthXT1mdW5jdGlvbihjLGQpe3ZhciBlPW0ubWFwKHRoaXMsYixjKTtyZXR1cm4iVW50aWwiIT09YS5zbGljZSgtNSkmJihkPWMpLGQmJiJzdHJpbmciPT10eXBlb2YgZCYmKGU9bS5maWx0ZXIoZCxlKSksdGhpcy5sZW5ndGg+MSYmKENbYV18fChlPW0udW5pcXVlKGUpKSxCLnRlc3QoYSkmJihlPWUucmV2ZXJzZSgpKSksdGhpcy5wdXNoU3RhY2soZSl9fSk7dmFyIEU9L1xTKy9nLEY9e307ZnVuY3Rpb24gRyhhKXt2YXIgYj1GW2FdPXt9O3JldHVybiBtLmVhY2goYS5tYXRjaChFKXx8W10sZnVuY3Rpb24oYSxjKXtiW2NdPSEwfSksYn1tLkNhbGxiYWNrcz1mdW5jdGlvbihhKXthPSJzdHJpbmciPT10eXBlb2YgYT9GW2FdfHxHKGEpOm0uZXh0ZW5kKHt9LGEpO3ZhciBiLGMsZCxlLGYsZyxoPVtdLGk9IWEub25jZSYmW10saj1mdW5jdGlvbihsKXtmb3IoYz1hLm1lbW9yeSYmbCxkPSEwLGY9Z3x8MCxnPTAsZT1oLmxlbmd0aCxiPSEwO2gmJmU+ZjtmKyspaWYoaFtmXS5hcHBseShsWzBdLGxbMV0pPT09ITEmJmEuc3RvcE9uRmFsc2Upe2M9ITE7YnJlYWt9Yj0hMSxoJiYoaT9pLmxlbmd0aCYmaihpLnNoaWZ0KCkpOmM/aD1bXTprLmRpc2FibGUoKSl9LGs9e2FkZDpmdW5jdGlvbigpe2lmKGgpe3ZhciBkPWgubGVuZ3RoOyFmdW5jdGlvbiBmKGIpe20uZWFjaChiLGZ1bmN0aW9uKGIsYyl7dmFyIGQ9bS50eXBlKGMpOyJmdW5jdGlvbiI9PT1kP2EudW5pcXVlJiZrLmhhcyhjKXx8aC5wdXNoKGMpOmMmJmMubGVuZ3RoJiYic3RyaW5nIiE9PWQmJmYoYyl9KX0oYXJndW1lbnRzKSxiP2U9aC5sZW5ndGg6YyYmKGc9ZCxqKGMpKX1yZXR1cm4gdGhpc30scmVtb3ZlOmZ1bmN0aW9uKCl7cmV0dXJuIGgmJm0uZWFjaChhcmd1bWVudHMsZnVuY3Rpb24oYSxjKXt2YXIgZDt3aGlsZSgoZD1tLmluQXJyYXkoYyxoLGQpKT4tMSloLnNwbGljZShkLDEpLGImJihlPj1kJiZlLS0sZj49ZCYmZi0tKX0pLHRoaXN9LGhhczpmdW5jdGlvbihhKXtyZXR1cm4gYT9tLmluQXJyYXkoYSxoKT4tMTohKCFofHwhaC5sZW5ndGgpfSxlbXB0eTpmdW5jdGlvbigpe3JldHVybiBoPVtdLGU9MCx0aGlzfSxkaXNhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIGg9aT1jPXZvaWQgMCx0aGlzfSxkaXNhYmxlZDpmdW5jdGlvbigpe3JldHVybiFofSxsb2NrOmZ1bmN0aW9uKCl7cmV0dXJuIGk9dm9pZCAwLGN8fGsuZGlzYWJsZSgpLHRoaXN9LGxvY2tlZDpmdW5jdGlvbigpe3JldHVybiFpfSxmaXJlV2l0aDpmdW5jdGlvbihhLGMpe3JldHVybiFofHxkJiYhaXx8KGM9Y3x8W10sYz1bYSxjLnNsaWNlP2Muc2xpY2UoKTpjXSxiP2kucHVzaChjKTpqKGMpKSx0aGlzfSxmaXJlOmZ1bmN0aW9uKCl7cmV0dXJuIGsuZmlyZVdpdGgodGhpcyxhcmd1bWVudHMpLHRoaXN9LGZpcmVkOmZ1bmN0aW9uKCl7cmV0dXJuISFkfX07cmV0dXJuIGt9LG0uZXh0ZW5kKHtEZWZlcnJlZDpmdW5jdGlvbihhKXt2YXIgYj1bWyJyZXNvbHZlIiwiZG9uZSIsbS5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IiksInJlc29sdmVkIl0sWyJyZWplY3QiLCJmYWlsIixtLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSwicmVqZWN0ZWQiXSxbIm5vdGlmeSIsInByb2dyZXNzIixtLkNhbGxiYWNrcygibWVtb3J5IildXSxjPSJwZW5kaW5nIixkPXtzdGF0ZTpmdW5jdGlvbigpe3JldHVybiBjfSxhbHdheXM6ZnVuY3Rpb24oKXtyZXR1cm4gZS5kb25lKGFyZ3VtZW50cykuZmFpbChhcmd1bWVudHMpLHRoaXN9LHRoZW46ZnVuY3Rpb24oKXt2YXIgYT1hcmd1bWVudHM7cmV0dXJuIG0uRGVmZXJyZWQoZnVuY3Rpb24oYyl7bS5lYWNoKGIsZnVuY3Rpb24oYixmKXt2YXIgZz1tLmlzRnVuY3Rpb24oYVtiXSkmJmFbYl07ZVtmWzFdXShmdW5jdGlvbigpe3ZhciBhPWcmJmcuYXBwbHkodGhpcyxhcmd1bWVudHMpO2EmJm0uaXNGdW5jdGlvbihhLnByb21pc2UpP2EucHJvbWlzZSgpLmRvbmUoYy5yZXNvbHZlKS5mYWlsKGMucmVqZWN0KS5wcm9ncmVzcyhjLm5vdGlmeSk6Y1tmWzBdKyJXaXRoIl0odGhpcz09PWQ/Yy5wcm9taXNlKCk6dGhpcyxnP1thXTphcmd1bWVudHMpfSl9KSxhPW51bGx9KS5wcm9taXNlKCl9LHByb21pc2U6ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGwhPWE/bS5leHRlbmQoYSxkKTpkfX0sZT17fTtyZXR1cm4gZC5waXBlPWQudGhlbixtLmVhY2goYixmdW5jdGlvbihhLGYpe3ZhciBnPWZbMl0saD1mWzNdO2RbZlsxXV09Zy5hZGQsaCYmZy5hZGQoZnVuY3Rpb24oKXtjPWh9LGJbMV5hXVsyXS5kaXNhYmxlLGJbMl1bMl0ubG9jayksZVtmWzBdXT1mdW5jdGlvbigpe3JldHVybiBlW2ZbMF0rIldpdGgiXSh0aGlzPT09ZT9kOnRoaXMsYXJndW1lbnRzKSx0aGlzfSxlW2ZbMF0rIldpdGgiXT1nLmZpcmVXaXRofSksZC5wcm9taXNlKGUpLGEmJmEuY2FsbChlLGUpLGV9LHdoZW46ZnVuY3Rpb24oYSl7dmFyIGI9MCxjPWQuY2FsbChhcmd1bWVudHMpLGU9Yy5sZW5ndGgsZj0xIT09ZXx8YSYmbS5pc0Z1bmN0aW9uKGEucHJvbWlzZSk/ZTowLGc9MT09PWY/YTptLkRlZmVycmVkKCksaD1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIGZ1bmN0aW9uKGUpe2JbYV09dGhpcyxjW2FdPWFyZ3VtZW50cy5sZW5ndGg+MT9kLmNhbGwoYXJndW1lbnRzKTplLGM9PT1pP2cubm90aWZ5V2l0aChiLGMpOi0tZnx8Zy5yZXNvbHZlV2l0aChiLGMpfX0saSxqLGs7aWYoZT4xKWZvcihpPW5ldyBBcnJheShlKSxqPW5ldyBBcnJheShlKSxrPW5ldyBBcnJheShlKTtlPmI7YisrKWNbYl0mJm0uaXNGdW5jdGlvbihjW2JdLnByb21pc2UpP2NbYl0ucHJvbWlzZSgpLmRvbmUoaChiLGssYykpLmZhaWwoZy5yZWplY3QpLnByb2dyZXNzKGgoYixqLGkpKTotLWY7cmV0dXJuIGZ8fGcucmVzb2x2ZVdpdGgoayxjKSxnLnByb21pc2UoKX19KTt2YXIgSDttLmZuLnJlYWR5PWZ1bmN0aW9uKGEpe3JldHVybiBtLnJlYWR5LnByb21pc2UoKS5kb25lKGEpLHRoaXN9LG0uZXh0ZW5kKHtpc1JlYWR5OiExLHJlYWR5V2FpdDoxLGhvbGRSZWFkeTpmdW5jdGlvbihhKXthP20ucmVhZHlXYWl0Kys6bS5yZWFkeSghMCl9LHJlYWR5OmZ1bmN0aW9uKGEpe2lmKGE9PT0hMD8hLS1tLnJlYWR5V2FpdDohbS5pc1JlYWR5KXtpZigheS5ib2R5KXJldHVybiBzZXRUaW1lb3V0KG0ucmVhZHkpO20uaXNSZWFkeT0hMCxhIT09ITAmJi0tbS5yZWFkeVdhaXQ+MHx8KEgucmVzb2x2ZVdpdGgoeSxbbV0pLG0uZm4udHJpZ2dlckhhbmRsZXImJihtKHkpLnRyaWdnZXJIYW5kbGVyKCJyZWFkeSIpLG0oeSkub2ZmKCJyZWFkeSIpKSl9fX0pO2Z1bmN0aW9uIEkoKXt5LmFkZEV2ZW50TGlzdGVuZXI/KHkucmVtb3ZlRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsSiwhMSksYS5yZW1vdmVFdmVudExpc3RlbmVyKCJsb2FkIixKLCExKSk6KHkuZGV0YWNoRXZlbnQoIm9ucmVhZHlzdGF0ZWNoYW5nZSIsSiksYS5kZXRhY2hFdmVudCgib25sb2FkIixKKSl9ZnVuY3Rpb24gSigpeyh5LmFkZEV2ZW50TGlzdGVuZXJ8fCJsb2FkIj09PWV2ZW50LnR5cGV8fCJjb21wbGV0ZSI9PT15LnJlYWR5U3RhdGUpJiYoSSgpLG0ucmVhZHkoKSl9bS5yZWFkeS5wcm9taXNlPWZ1bmN0aW9uKGIpe2lmKCFIKWlmKEg9bS5EZWZlcnJlZCgpLCJjb21wbGV0ZSI9PT15LnJlYWR5U3RhdGUpc2V0VGltZW91dChtLnJlYWR5KTtlbHNlIGlmKHkuYWRkRXZlbnRMaXN0ZW5lcil5LmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLEosITEpLGEuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsSiwhMSk7ZWxzZXt5LmF0dGFjaEV2ZW50KCJvbnJlYWR5c3RhdGVjaGFuZ2UiLEopLGEuYXR0YWNoRXZlbnQoIm9ubG9hZCIsSik7dmFyIGM9ITE7dHJ5e2M9bnVsbD09YS5mcmFtZUVsZW1lbnQmJnkuZG9jdW1lbnRFbGVtZW50fWNhdGNoKGQpe31jJiZjLmRvU2Nyb2xsJiYhZnVuY3Rpb24gZSgpe2lmKCFtLmlzUmVhZHkpe3RyeXtjLmRvU2Nyb2xsKCJsZWZ0Iil9Y2F0Y2goYSl7cmV0dXJuIHNldFRpbWVvdXQoZSw1MCl9SSgpLG0ucmVhZHkoKX19KCl9cmV0dXJuIEgucHJvbWlzZShiKX07dmFyIEs9InVuZGVmaW5lZCIsTDtmb3IoTCBpbiBtKGspKWJyZWFrO2sub3duTGFzdD0iMCIhPT1MLGsuaW5saW5lQmxvY2tOZWVkc0xheW91dD0hMSxtKGZ1bmN0aW9uKCl7dmFyIGEsYixjLGQ7Yz15LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0sYyYmYy5zdHlsZSYmKGI9eS5jcmVhdGVFbGVtZW50KCJkaXYiKSxkPXkuY3JlYXRlRWxlbWVudCgiZGl2IiksZC5zdHlsZS5jc3NUZXh0PSJwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXI6MDt3aWR0aDowO2hlaWdodDowO3RvcDowO2xlZnQ6LTk5OTlweCIsYy5hcHBlbmRDaGlsZChkKS5hcHBlbmRDaGlsZChiKSx0eXBlb2YgYi5zdHlsZS56b29tIT09SyYmKGIuc3R5bGUuY3NzVGV4dD0iZGlzcGxheTppbmxpbmU7bWFyZ2luOjA7Ym9yZGVyOjA7cGFkZGluZzoxcHg7d2lkdGg6MXB4O3pvb206MSIsay5pbmxpbmVCbG9ja05lZWRzTGF5b3V0PWE9Mz09PWIub2Zmc2V0V2lkdGgsYSYmKGMuc3R5bGUuem9vbT0xKSksYy5yZW1vdmVDaGlsZChkKSl9KSxmdW5jdGlvbigpe3ZhciBhPXkuY3JlYXRlRWxlbWVudCgiZGl2Iik7aWYobnVsbD09ay5kZWxldGVFeHBhbmRvKXtrLmRlbGV0ZUV4cGFuZG89ITA7dHJ5e2RlbGV0ZSBhLnRlc3R9Y2F0Y2goYil7ay5kZWxldGVFeHBhbmRvPSExfX1hPW51bGx9KCksbS5hY2NlcHREYXRhPWZ1bmN0aW9uKGEpe3ZhciBiPW0ubm9EYXRhWyhhLm5vZGVOYW1lKyIgIikudG9Mb3dlckNhc2UoKV0sYz0rYS5ub2RlVHlwZXx8MTtyZXR1cm4gMSE9PWMmJjkhPT1jPyExOiFifHxiIT09ITAmJmEuZ2V0QXR0cmlidXRlKCJjbGFzc2lkIik9PT1ifTt2YXIgTT0vXig/Olx7W1x3XFddKlx9fFxbW1x3XFddKlxdKSQvLE49LyhbQS1aXSkvZztmdW5jdGlvbiBPKGEsYixjKXtpZih2b2lkIDA9PT1jJiYxPT09YS5ub2RlVHlwZSl7dmFyIGQ9ImRhdGEtIitiLnJlcGxhY2UoTiwiLSQxIikudG9Mb3dlckNhc2UoKTtpZihjPWEuZ2V0QXR0cmlidXRlKGQpLCJzdHJpbmciPT10eXBlb2YgYyl7dHJ5e2M9InRydWUiPT09Yz8hMDoiZmFsc2UiPT09Yz8hMToibnVsbCI9PT1jP251bGw6K2MrIiI9PT1jPytjOk0udGVzdChjKT9tLnBhcnNlSlNPTihjKTpjfWNhdGNoKGUpe31tLmRhdGEoYSxiLGMpfWVsc2UgYz12b2lkIDB9cmV0dXJuIGN9ZnVuY3Rpb24gUChhKXt2YXIgYjtmb3IoYiBpbiBhKWlmKCgiZGF0YSIhPT1ifHwhbS5pc0VtcHR5T2JqZWN0KGFbYl0pKSYmInRvSlNPTiIhPT1iKXJldHVybiExOwoKcmV0dXJuITB9ZnVuY3Rpb24gUShhLGIsZCxlKXtpZihtLmFjY2VwdERhdGEoYSkpe3ZhciBmLGcsaD1tLmV4cGFuZG8saT1hLm5vZGVUeXBlLGo9aT9tLmNhY2hlOmEsaz1pP2FbaF06YVtoXSYmaDtpZihrJiZqW2tdJiYoZXx8altrXS5kYXRhKXx8dm9pZCAwIT09ZHx8InN0cmluZyIhPXR5cGVvZiBiKXJldHVybiBrfHwoaz1pP2FbaF09Yy5wb3AoKXx8bS5ndWlkKys6aCksaltrXXx8KGpba109aT97fTp7dG9KU09OOm0ubm9vcH0pLCgib2JqZWN0Ij09dHlwZW9mIGJ8fCJmdW5jdGlvbiI9PXR5cGVvZiBiKSYmKGU/altrXT1tLmV4dGVuZChqW2tdLGIpOmpba10uZGF0YT1tLmV4dGVuZChqW2tdLmRhdGEsYikpLGc9altrXSxlfHwoZy5kYXRhfHwoZy5kYXRhPXt9KSxnPWcuZGF0YSksdm9pZCAwIT09ZCYmKGdbbS5jYW1lbENhc2UoYildPWQpLCJzdHJpbmciPT10eXBlb2YgYj8oZj1nW2JdLG51bGw9PWYmJihmPWdbbS5jYW1lbENhc2UoYildKSk6Zj1nLGZ9fWZ1bmN0aW9uIFIoYSxiLGMpe2lmKG0uYWNjZXB0RGF0YShhKSl7dmFyIGQsZSxmPWEubm9kZVR5cGUsZz1mP20uY2FjaGU6YSxoPWY/YVttLmV4cGFuZG9dOm0uZXhwYW5kbztpZihnW2hdKXtpZihiJiYoZD1jP2dbaF06Z1toXS5kYXRhKSl7bS5pc0FycmF5KGIpP2I9Yi5jb25jYXQobS5tYXAoYixtLmNhbWVsQ2FzZSkpOmIgaW4gZD9iPVtiXTooYj1tLmNhbWVsQ2FzZShiKSxiPWIgaW4gZD9bYl06Yi5zcGxpdCgiICIpKSxlPWIubGVuZ3RoO3doaWxlKGUtLSlkZWxldGUgZFtiW2VdXTtpZihjPyFQKGQpOiFtLmlzRW1wdHlPYmplY3QoZCkpcmV0dXJufShjfHwoZGVsZXRlIGdbaF0uZGF0YSxQKGdbaF0pKSkmJihmP20uY2xlYW5EYXRhKFthXSwhMCk6ay5kZWxldGVFeHBhbmRvfHxnIT1nLndpbmRvdz9kZWxldGUgZ1toXTpnW2hdPW51bGwpfX19bS5leHRlbmQoe2NhY2hlOnt9LG5vRGF0YTp7ImFwcGxldCAiOiEwLCJlbWJlZCAiOiEwLCJvYmplY3QgIjoiY2xzaWQ6RDI3Q0RCNkUtQUU2RC0xMWNmLTk2QjgtNDQ0NTUzNTQwMDAwIn0saGFzRGF0YTpmdW5jdGlvbihhKXtyZXR1cm4gYT1hLm5vZGVUeXBlP20uY2FjaGVbYVttLmV4cGFuZG9dXTphW20uZXhwYW5kb10sISFhJiYhUChhKX0sZGF0YTpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIFEoYSxiLGMpfSxyZW1vdmVEYXRhOmZ1bmN0aW9uKGEsYil7cmV0dXJuIFIoYSxiKX0sX2RhdGE6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBRKGEsYixjLCEwKX0sX3JlbW92ZURhdGE6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gUihhLGIsITApfX0pLG0uZm4uZXh0ZW5kKHtkYXRhOmZ1bmN0aW9uKGEsYil7dmFyIGMsZCxlLGY9dGhpc1swXSxnPWYmJmYuYXR0cmlidXRlcztpZih2b2lkIDA9PT1hKXtpZih0aGlzLmxlbmd0aCYmKGU9bS5kYXRhKGYpLDE9PT1mLm5vZGVUeXBlJiYhbS5fZGF0YShmLCJwYXJzZWRBdHRycyIpKSl7Yz1nLmxlbmd0aDt3aGlsZShjLS0pZ1tjXSYmKGQ9Z1tjXS5uYW1lLDA9PT1kLmluZGV4T2YoImRhdGEtIikmJihkPW0uY2FtZWxDYXNlKGQuc2xpY2UoNSkpLE8oZixkLGVbZF0pKSk7bS5fZGF0YShmLCJwYXJzZWRBdHRycyIsITApfXJldHVybiBlfXJldHVybiJvYmplY3QiPT10eXBlb2YgYT90aGlzLmVhY2goZnVuY3Rpb24oKXttLmRhdGEodGhpcyxhKX0pOmFyZ3VtZW50cy5sZW5ndGg+MT90aGlzLmVhY2goZnVuY3Rpb24oKXttLmRhdGEodGhpcyxhLGIpfSk6Zj9PKGYsYSxtLmRhdGEoZixhKSk6dm9pZCAwfSxyZW1vdmVEYXRhOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXttLnJlbW92ZURhdGEodGhpcyxhKX0pfX0pLG0uZXh0ZW5kKHtxdWV1ZTpmdW5jdGlvbihhLGIsYyl7dmFyIGQ7cmV0dXJuIGE/KGI9KGJ8fCJmeCIpKyJxdWV1ZSIsZD1tLl9kYXRhKGEsYiksYyYmKCFkfHxtLmlzQXJyYXkoYyk/ZD1tLl9kYXRhKGEsYixtLm1ha2VBcnJheShjKSk6ZC5wdXNoKGMpKSxkfHxbXSk6dm9pZCAwfSxkZXF1ZXVlOmZ1bmN0aW9uKGEsYil7Yj1ifHwiZngiO3ZhciBjPW0ucXVldWUoYSxiKSxkPWMubGVuZ3RoLGU9Yy5zaGlmdCgpLGY9bS5fcXVldWVIb29rcyhhLGIpLGc9ZnVuY3Rpb24oKXttLmRlcXVldWUoYSxiKX07ImlucHJvZ3Jlc3MiPT09ZSYmKGU9Yy5zaGlmdCgpLGQtLSksZSYmKCJmeCI9PT1iJiZjLnVuc2hpZnQoImlucHJvZ3Jlc3MiKSxkZWxldGUgZi5zdG9wLGUuY2FsbChhLGcsZikpLCFkJiZmJiZmLmVtcHR5LmZpcmUoKX0sX3F1ZXVlSG9va3M6ZnVuY3Rpb24oYSxiKXt2YXIgYz1iKyJxdWV1ZUhvb2tzIjtyZXR1cm4gbS5fZGF0YShhLGMpfHxtLl9kYXRhKGEsYyx7ZW1wdHk6bS5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IikuYWRkKGZ1bmN0aW9uKCl7bS5fcmVtb3ZlRGF0YShhLGIrInF1ZXVlIiksbS5fcmVtb3ZlRGF0YShhLGMpfSl9KX19KSxtLmZuLmV4dGVuZCh7cXVldWU6ZnVuY3Rpb24oYSxiKXt2YXIgYz0yO3JldHVybiJzdHJpbmciIT10eXBlb2YgYSYmKGI9YSxhPSJmeCIsYy0tKSxhcmd1bWVudHMubGVuZ3RoPGM/bS5xdWV1ZSh0aGlzWzBdLGEpOnZvaWQgMD09PWI/dGhpczp0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgYz1tLnF1ZXVlKHRoaXMsYSxiKTttLl9xdWV1ZUhvb2tzKHRoaXMsYSksImZ4Ij09PWEmJiJpbnByb2dyZXNzIiE9PWNbMF0mJm0uZGVxdWV1ZSh0aGlzLGEpfSl9LGRlcXVldWU6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe20uZGVxdWV1ZSh0aGlzLGEpfSl9LGNsZWFyUXVldWU6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMucXVldWUoYXx8ImZ4IixbXSl9LHByb21pc2U6ZnVuY3Rpb24oYSxiKXt2YXIgYyxkPTEsZT1tLkRlZmVycmVkKCksZj10aGlzLGc9dGhpcy5sZW5ndGgsaD1mdW5jdGlvbigpey0tZHx8ZS5yZXNvbHZlV2l0aChmLFtmXSl9OyJzdHJpbmciIT10eXBlb2YgYSYmKGI9YSxhPXZvaWQgMCksYT1hfHwiZngiO3doaWxlKGctLSljPW0uX2RhdGEoZltnXSxhKyJxdWV1ZUhvb2tzIiksYyYmYy5lbXB0eSYmKGQrKyxjLmVtcHR5LmFkZChoKSk7cmV0dXJuIGgoKSxlLnByb21pc2UoYil9fSk7dmFyIFM9L1srLV0/KD86XGQqXC58KVxkKyg/OltlRV1bKy1dP1xkK3wpLy5zb3VyY2UsVD1bIlRvcCIsIlJpZ2h0IiwiQm90dG9tIiwiTGVmdCJdLFU9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYT1ifHxhLCJub25lIj09PW0uY3NzKGEsImRpc3BsYXkiKXx8IW0uY29udGFpbnMoYS5vd25lckRvY3VtZW50LGEpfSxWPW0uYWNjZXNzPWZ1bmN0aW9uKGEsYixjLGQsZSxmLGcpe3ZhciBoPTAsaT1hLmxlbmd0aCxqPW51bGw9PWM7aWYoIm9iamVjdCI9PT1tLnR5cGUoYykpe2U9ITA7Zm9yKGggaW4gYyltLmFjY2VzcyhhLGIsaCxjW2hdLCEwLGYsZyl9ZWxzZSBpZih2b2lkIDAhPT1kJiYoZT0hMCxtLmlzRnVuY3Rpb24oZCl8fChnPSEwKSxqJiYoZz8oYi5jYWxsKGEsZCksYj1udWxsKTooaj1iLGI9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBqLmNhbGwobShhKSxjKX0pKSxiKSlmb3IoO2k+aDtoKyspYihhW2hdLGMsZz9kOmQuY2FsbChhW2hdLGgsYihhW2hdLGMpKSk7cmV0dXJuIGU/YTpqP2IuY2FsbChhKTppP2IoYVswXSxjKTpmfSxXPS9eKD86Y2hlY2tib3h8cmFkaW8pJC9pOyFmdW5jdGlvbigpe3ZhciBhPXkuY3JlYXRlRWxlbWVudCgiaW5wdXQiKSxiPXkuY3JlYXRlRWxlbWVudCgiZGl2IiksYz15LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtpZihiLmlubmVySFRNTD0iICA8bGluay8+PHRhYmxlPjwvdGFibGU+PGEgaHJlZj0nL2EnPmE8L2E+PGlucHV0IHR5cGU9J2NoZWNrYm94Jy8+IixrLmxlYWRpbmdXaGl0ZXNwYWNlPTM9PT1iLmZpcnN0Q2hpbGQubm9kZVR5cGUsay50Ym9keT0hYi5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGJvZHkiKS5sZW5ndGgsay5odG1sU2VyaWFsaXplPSEhYi5nZXRFbGVtZW50c0J5VGFnTmFtZSgibGluayIpLmxlbmd0aCxrLmh0bWw1Q2xvbmU9Ijw6bmF2PjwvOm5hdj4iIT09eS5jcmVhdGVFbGVtZW50KCJuYXYiKS5jbG9uZU5vZGUoITApLm91dGVySFRNTCxhLnR5cGU9ImNoZWNrYm94IixhLmNoZWNrZWQ9ITAsYy5hcHBlbmRDaGlsZChhKSxrLmFwcGVuZENoZWNrZWQ9YS5jaGVja2VkLGIuaW5uZXJIVE1MPSI8dGV4dGFyZWE+eDwvdGV4dGFyZWE+IixrLm5vQ2xvbmVDaGVja2VkPSEhYi5jbG9uZU5vZGUoITApLmxhc3RDaGlsZC5kZWZhdWx0VmFsdWUsYy5hcHBlbmRDaGlsZChiKSxiLmlubmVySFRNTD0iPGlucHV0IHR5cGU9J3JhZGlvJyBjaGVja2VkPSdjaGVja2VkJyBuYW1lPSd0Jy8+IixrLmNoZWNrQ2xvbmU9Yi5jbG9uZU5vZGUoITApLmNsb25lTm9kZSghMCkubGFzdENoaWxkLmNoZWNrZWQsay5ub0Nsb25lRXZlbnQ9ITAsYi5hdHRhY2hFdmVudCYmKGIuYXR0YWNoRXZlbnQoIm9uY2xpY2siLGZ1bmN0aW9uKCl7ay5ub0Nsb25lRXZlbnQ9ITF9KSxiLmNsb25lTm9kZSghMCkuY2xpY2soKSksbnVsbD09ay5kZWxldGVFeHBhbmRvKXtrLmRlbGV0ZUV4cGFuZG89ITA7dHJ5e2RlbGV0ZSBiLnRlc3R9Y2F0Y2goZCl7ay5kZWxldGVFeHBhbmRvPSExfX19KCksZnVuY3Rpb24oKXt2YXIgYixjLGQ9eS5jcmVhdGVFbGVtZW50KCJkaXYiKTtmb3IoYiBpbntzdWJtaXQ6ITAsY2hhbmdlOiEwLGZvY3VzaW46ITB9KWM9Im9uIitiLChrW2IrIkJ1YmJsZXMiXT1jIGluIGEpfHwoZC5zZXRBdHRyaWJ1dGUoYywidCIpLGtbYisiQnViYmxlcyJdPWQuYXR0cmlidXRlc1tjXS5leHBhbmRvPT09ITEpO2Q9bnVsbH0oKTt2YXIgWD0vXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYSkkL2ksWT0vXmtleS8sWj0vXig/Om1vdXNlfHBvaW50ZXJ8Y29udGV4dG1lbnUpfGNsaWNrLywkPS9eKD86Zm9jdXNpbmZvY3VzfGZvY3Vzb3V0Ymx1cikkLyxfPS9eKFteLl0qKSg/OlwuKC4rKXwpJC87ZnVuY3Rpb24gYWEoKXtyZXR1cm4hMH1mdW5jdGlvbiBiYSgpe3JldHVybiExfWZ1bmN0aW9uIGNhKCl7dHJ5e3JldHVybiB5LmFjdGl2ZUVsZW1lbnR9Y2F0Y2goYSl7fX1tLmV2ZW50PXtnbG9iYWw6e30sYWRkOmZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGYsZyxoLGksaixrLGwsbixvLHAscSxyPW0uX2RhdGEoYSk7aWYocil7Yy5oYW5kbGVyJiYoaT1jLGM9aS5oYW5kbGVyLGU9aS5zZWxlY3RvciksYy5ndWlkfHwoYy5ndWlkPW0uZ3VpZCsrKSwoZz1yLmV2ZW50cyl8fChnPXIuZXZlbnRzPXt9KSwoaz1yLmhhbmRsZSl8fChrPXIuaGFuZGxlPWZ1bmN0aW9uKGEpe3JldHVybiB0eXBlb2YgbT09PUt8fGEmJm0uZXZlbnQudHJpZ2dlcmVkPT09YS50eXBlP3ZvaWQgMDptLmV2ZW50LmRpc3BhdGNoLmFwcGx5KGsuZWxlbSxhcmd1bWVudHMpfSxrLmVsZW09YSksYj0oYnx8IiIpLm1hdGNoKEUpfHxbIiJdLGg9Yi5sZW5ndGg7d2hpbGUoaC0tKWY9Xy5leGVjKGJbaF0pfHxbXSxvPXE9ZlsxXSxwPShmWzJdfHwiIikuc3BsaXQoIi4iKS5zb3J0KCksbyYmKGo9bS5ldmVudC5zcGVjaWFsW29dfHx7fSxvPShlP2ouZGVsZWdhdGVUeXBlOmouYmluZFR5cGUpfHxvLGo9bS5ldmVudC5zcGVjaWFsW29dfHx7fSxsPW0uZXh0ZW5kKHt0eXBlOm8sb3JpZ1R5cGU6cSxkYXRhOmQsaGFuZGxlcjpjLGd1aWQ6Yy5ndWlkLHNlbGVjdG9yOmUsbmVlZHNDb250ZXh0OmUmJm0uZXhwci5tYXRjaC5uZWVkc0NvbnRleHQudGVzdChlKSxuYW1lc3BhY2U6cC5qb2luKCIuIil9LGkpLChuPWdbb10pfHwobj1nW29dPVtdLG4uZGVsZWdhdGVDb3VudD0wLGouc2V0dXAmJmouc2V0dXAuY2FsbChhLGQscCxrKSE9PSExfHwoYS5hZGRFdmVudExpc3RlbmVyP2EuYWRkRXZlbnRMaXN0ZW5lcihvLGssITEpOmEuYXR0YWNoRXZlbnQmJmEuYXR0YWNoRXZlbnQoIm9uIitvLGspKSksai5hZGQmJihqLmFkZC5jYWxsKGEsbCksbC5oYW5kbGVyLmd1aWR8fChsLmhhbmRsZXIuZ3VpZD1jLmd1aWQpKSxlP24uc3BsaWNlKG4uZGVsZWdhdGVDb3VudCsrLDAsbCk6bi5wdXNoKGwpLG0uZXZlbnQuZ2xvYmFsW29dPSEwKTthPW51bGx9fSxyZW1vdmU6ZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgZixnLGgsaSxqLGssbCxuLG8scCxxLHI9bS5oYXNEYXRhKGEpJiZtLl9kYXRhKGEpO2lmKHImJihrPXIuZXZlbnRzKSl7Yj0oYnx8IiIpLm1hdGNoKEUpfHxbIiJdLGo9Yi5sZW5ndGg7d2hpbGUoai0tKWlmKGg9Xy5leGVjKGJbal0pfHxbXSxvPXE9aFsxXSxwPShoWzJdfHwiIikuc3BsaXQoIi4iKS5zb3J0KCksbyl7bD1tLmV2ZW50LnNwZWNpYWxbb118fHt9LG89KGQ/bC5kZWxlZ2F0ZVR5cGU6bC5iaW5kVHlwZSl8fG8sbj1rW29dfHxbXSxoPWhbMl0mJm5ldyBSZWdFeHAoIihefFxcLikiK3Auam9pbigiXFwuKD86LipcXC58KSIpKyIoXFwufCQpIiksaT1mPW4ubGVuZ3RoO3doaWxlKGYtLSlnPW5bZl0sIWUmJnEhPT1nLm9yaWdUeXBlfHxjJiZjLmd1aWQhPT1nLmd1aWR8fGgmJiFoLnRlc3QoZy5uYW1lc3BhY2UpfHxkJiZkIT09Zy5zZWxlY3RvciYmKCIqKiIhPT1kfHwhZy5zZWxlY3Rvcil8fChuLnNwbGljZShmLDEpLGcuc2VsZWN0b3ImJm4uZGVsZWdhdGVDb3VudC0tLGwucmVtb3ZlJiZsLnJlbW92ZS5jYWxsKGEsZykpO2kmJiFuLmxlbmd0aCYmKGwudGVhcmRvd24mJmwudGVhcmRvd24uY2FsbChhLHAsci5oYW5kbGUpIT09ITF8fG0ucmVtb3ZlRXZlbnQoYSxvLHIuaGFuZGxlKSxkZWxldGUga1tvXSl9ZWxzZSBmb3IobyBpbiBrKW0uZXZlbnQucmVtb3ZlKGEsbytiW2pdLGMsZCwhMCk7bS5pc0VtcHR5T2JqZWN0KGspJiYoZGVsZXRlIHIuaGFuZGxlLG0uX3JlbW92ZURhdGEoYSwiZXZlbnRzIikpfX0sdHJpZ2dlcjpmdW5jdGlvbihiLGMsZCxlKXt2YXIgZixnLGgsaSxrLGwsbixvPVtkfHx5XSxwPWouY2FsbChiLCJ0eXBlIik/Yi50eXBlOmIscT1qLmNhbGwoYiwibmFtZXNwYWNlIik/Yi5uYW1lc3BhY2Uuc3BsaXQoIi4iKTpbXTtpZihoPWw9ZD1kfHx5LDMhPT1kLm5vZGVUeXBlJiY4IT09ZC5ub2RlVHlwZSYmISQudGVzdChwK20uZXZlbnQudHJpZ2dlcmVkKSYmKHAuaW5kZXhPZigiLiIpPj0wJiYocT1wLnNwbGl0KCIuIikscD1xLnNoaWZ0KCkscS5zb3J0KCkpLGc9cC5pbmRleE9mKCI6Iik8MCYmIm9uIitwLGI9YlttLmV4cGFuZG9dP2I6bmV3IG0uRXZlbnQocCwib2JqZWN0Ij09dHlwZW9mIGImJmIpLGIuaXNUcmlnZ2VyPWU/MjozLGIubmFtZXNwYWNlPXEuam9pbigiLiIpLGIubmFtZXNwYWNlX3JlPWIubmFtZXNwYWNlP25ldyBSZWdFeHAoIihefFxcLikiK3Euam9pbigiXFwuKD86LipcXC58KSIpKyIoXFwufCQpIik6bnVsbCxiLnJlc3VsdD12b2lkIDAsYi50YXJnZXR8fChiLnRhcmdldD1kKSxjPW51bGw9PWM/W2JdOm0ubWFrZUFycmF5KGMsW2JdKSxrPW0uZXZlbnQuc3BlY2lhbFtwXXx8e30sZXx8IWsudHJpZ2dlcnx8ay50cmlnZ2VyLmFwcGx5KGQsYykhPT0hMSkpe2lmKCFlJiYhay5ub0J1YmJsZSYmIW0uaXNXaW5kb3coZCkpe2ZvcihpPWsuZGVsZWdhdGVUeXBlfHxwLCQudGVzdChpK3ApfHwoaD1oLnBhcmVudE5vZGUpO2g7aD1oLnBhcmVudE5vZGUpby5wdXNoKGgpLGw9aDtsPT09KGQub3duZXJEb2N1bWVudHx8eSkmJm8ucHVzaChsLmRlZmF1bHRWaWV3fHxsLnBhcmVudFdpbmRvd3x8YSl9bj0wO3doaWxlKChoPW9bbisrXSkmJiFiLmlzUHJvcGFnYXRpb25TdG9wcGVkKCkpYi50eXBlPW4+MT9pOmsuYmluZFR5cGV8fHAsZj0obS5fZGF0YShoLCJldmVudHMiKXx8e30pW2IudHlwZV0mJm0uX2RhdGEoaCwiaGFuZGxlIiksZiYmZi5hcHBseShoLGMpLGY9ZyYmaFtnXSxmJiZmLmFwcGx5JiZtLmFjY2VwdERhdGEoaCkmJihiLnJlc3VsdD1mLmFwcGx5KGgsYyksYi5yZXN1bHQ9PT0hMSYmYi5wcmV2ZW50RGVmYXVsdCgpKTtpZihiLnR5cGU9cCwhZSYmIWIuaXNEZWZhdWx0UHJldmVudGVkKCkmJighay5fZGVmYXVsdHx8ay5fZGVmYXVsdC5hcHBseShvLnBvcCgpLGMpPT09ITEpJiZtLmFjY2VwdERhdGEoZCkmJmcmJmRbcF0mJiFtLmlzV2luZG93KGQpKXtsPWRbZ10sbCYmKGRbZ109bnVsbCksbS5ldmVudC50cmlnZ2VyZWQ9cDt0cnl7ZFtwXSgpfWNhdGNoKHIpe31tLmV2ZW50LnRyaWdnZXJlZD12b2lkIDAsbCYmKGRbZ109bCl9cmV0dXJuIGIucmVzdWx0fX0sZGlzcGF0Y2g6ZnVuY3Rpb24oYSl7YT1tLmV2ZW50LmZpeChhKTt2YXIgYixjLGUsZixnLGg9W10saT1kLmNhbGwoYXJndW1lbnRzKSxqPShtLl9kYXRhKHRoaXMsImV2ZW50cyIpfHx7fSlbYS50eXBlXXx8W10saz1tLmV2ZW50LnNwZWNpYWxbYS50eXBlXXx8e307aWYoaVswXT1hLGEuZGVsZWdhdGVUYXJnZXQ9dGhpcywhay5wcmVEaXNwYXRjaHx8ay5wcmVEaXNwYXRjaC5jYWxsKHRoaXMsYSkhPT0hMSl7aD1tLmV2ZW50LmhhbmRsZXJzLmNhbGwodGhpcyxhLGopLGI9MDt3aGlsZSgoZj1oW2IrK10pJiYhYS5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpKXthLmN1cnJlbnRUYXJnZXQ9Zi5lbGVtLGc9MDt3aGlsZSgoZT1mLmhhbmRsZXJzW2crK10pJiYhYS5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCgpKSghYS5uYW1lc3BhY2VfcmV8fGEubmFtZXNwYWNlX3JlLnRlc3QoZS5uYW1lc3BhY2UpKSYmKGEuaGFuZGxlT2JqPWUsYS5kYXRhPWUuZGF0YSxjPSgobS5ldmVudC5zcGVjaWFsW2Uub3JpZ1R5cGVdfHx7fSkuaGFuZGxlfHxlLmhhbmRsZXIpLmFwcGx5KGYuZWxlbSxpKSx2b2lkIDAhPT1jJiYoYS5yZXN1bHQ9Yyk9PT0hMSYmKGEucHJldmVudERlZmF1bHQoKSxhLnN0b3BQcm9wYWdhdGlvbigpKSl9cmV0dXJuIGsucG9zdERpc3BhdGNoJiZrLnBvc3REaXNwYXRjaC5jYWxsKHRoaXMsYSksYS5yZXN1bHR9fSxoYW5kbGVyczpmdW5jdGlvbihhLGIpe3ZhciBjLGQsZSxmLGc9W10saD1iLmRlbGVnYXRlQ291bnQsaT1hLnRhcmdldDtpZihoJiZpLm5vZGVUeXBlJiYoIWEuYnV0dG9ufHwiY2xpY2siIT09YS50eXBlKSlmb3IoO2khPXRoaXM7aT1pLnBhcmVudE5vZGV8fHRoaXMpaWYoMT09PWkubm9kZVR5cGUmJihpLmRpc2FibGVkIT09ITB8fCJjbGljayIhPT1hLnR5cGUpKXtmb3IoZT1bXSxmPTA7aD5mO2YrKylkPWJbZl0sYz1kLnNlbGVjdG9yKyIgIix2b2lkIDA9PT1lW2NdJiYoZVtjXT1kLm5lZWRzQ29udGV4dD9tKGMsdGhpcykuaW5kZXgoaSk+PTA6bS5maW5kKGMsdGhpcyxudWxsLFtpXSkubGVuZ3RoKSxlW2NdJiZlLnB1c2goZCk7ZS5sZW5ndGgmJmcucHVzaCh7ZWxlbTppLGhhbmRsZXJzOmV9KX1yZXR1cm4gaDxiLmxlbmd0aCYmZy5wdXNoKHtlbGVtOnRoaXMsaGFuZGxlcnM6Yi5zbGljZShoKX0pLGd9LGZpeDpmdW5jdGlvbihhKXtpZihhW20uZXhwYW5kb10pcmV0dXJuIGE7dmFyIGIsYyxkLGU9YS50eXBlLGY9YSxnPXRoaXMuZml4SG9va3NbZV07Z3x8KHRoaXMuZml4SG9va3NbZV09Zz1aLnRlc3QoZSk/dGhpcy5tb3VzZUhvb2tzOlkudGVzdChlKT90aGlzLmtleUhvb2tzOnt9KSxkPWcucHJvcHM/dGhpcy5wcm9wcy5jb25jYXQoZy5wcm9wcyk6dGhpcy5wcm9wcyxhPW5ldyBtLkV2ZW50KGYpLGI9ZC5sZW5ndGg7d2hpbGUoYi0tKWM9ZFtiXSxhW2NdPWZbY107cmV0dXJuIGEudGFyZ2V0fHwoYS50YXJnZXQ9Zi5zcmNFbGVtZW50fHx5KSwzPT09YS50YXJnZXQubm9kZVR5cGUmJihhLnRhcmdldD1hLnRhcmdldC5wYXJlbnROb2RlKSxhLm1ldGFLZXk9ISFhLm1ldGFLZXksZy5maWx0ZXI/Zy5maWx0ZXIoYSxmKTphfSxwcm9wczoiYWx0S2V5IGJ1YmJsZXMgY2FuY2VsYWJsZSBjdHJsS2V5IGN1cnJlbnRUYXJnZXQgZXZlbnRQaGFzZSBtZXRhS2V5IHJlbGF0ZWRUYXJnZXQgc2hpZnRLZXkgdGFyZ2V0IHRpbWVTdGFtcCB2aWV3IHdoaWNoIi5zcGxpdCgiICIpLGZpeEhvb2tzOnt9LGtleUhvb2tzOntwcm9wczoiY2hhciBjaGFyQ29kZSBrZXkga2V5Q29kZSIuc3BsaXQoIiAiKSxmaWx0ZXI6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gbnVsbD09YS53aGljaCYmKGEud2hpY2g9bnVsbCE9Yi5jaGFyQ29kZT9iLmNoYXJDb2RlOmIua2V5Q29kZSksYX19LG1vdXNlSG9va3M6e3Byb3BzOiJidXR0b24gYnV0dG9ucyBjbGllbnRYIGNsaWVudFkgZnJvbUVsZW1lbnQgb2Zmc2V0WCBvZmZzZXRZIHBhZ2VYIHBhZ2VZIHNjcmVlblggc2NyZWVuWSB0b0VsZW1lbnQiLnNwbGl0KCIgIiksZmlsdGVyOmZ1bmN0aW9uKGEsYil7dmFyIGMsZCxlLGY9Yi5idXR0b24sZz1iLmZyb21FbGVtZW50O3JldHVybiBudWxsPT1hLnBhZ2VYJiZudWxsIT1iLmNsaWVudFgmJihkPWEudGFyZ2V0Lm93bmVyRG9jdW1lbnR8fHksZT1kLmRvY3VtZW50RWxlbWVudCxjPWQuYm9keSxhLnBhZ2VYPWIuY2xpZW50WCsoZSYmZS5zY3JvbGxMZWZ0fHxjJiZjLnNjcm9sbExlZnR8fDApLShlJiZlLmNsaWVudExlZnR8fGMmJmMuY2xpZW50TGVmdHx8MCksYS5wYWdlWT1iLmNsaWVudFkrKGUmJmUuc2Nyb2xsVG9wfHxjJiZjLnNjcm9sbFRvcHx8MCktKGUmJmUuY2xpZW50VG9wfHxjJiZjLmNsaWVudFRvcHx8MCkpLCFhLnJlbGF0ZWRUYXJnZXQmJmcmJihhLnJlbGF0ZWRUYXJnZXQ9Zz09PWEudGFyZ2V0P2IudG9FbGVtZW50OmcpLGEud2hpY2h8fHZvaWQgMD09PWZ8fChhLndoaWNoPTEmZj8xOjImZj8zOjQmZj8yOjApLGF9fSxzcGVjaWFsOntsb2FkOntub0J1YmJsZTohMH0sZm9jdXM6e3RyaWdnZXI6ZnVuY3Rpb24oKXtpZih0aGlzIT09Y2EoKSYmdGhpcy5mb2N1cyl0cnl7cmV0dXJuIHRoaXMuZm9jdXMoKSwhMX1jYXRjaChhKXt9fSxkZWxlZ2F0ZVR5cGU6ImZvY3VzaW4ifSxibHVyOnt0cmlnZ2VyOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXM9PT1jYSgpJiZ0aGlzLmJsdXI/KHRoaXMuYmx1cigpLCExKTp2b2lkIDB9LGRlbGVnYXRlVHlwZToiZm9jdXNvdXQifSxjbGljazp7dHJpZ2dlcjpmdW5jdGlvbigpe3JldHVybiBtLm5vZGVOYW1lKHRoaXMsImlucHV0IikmJiJjaGVja2JveCI9PT10aGlzLnR5cGUmJnRoaXMuY2xpY2s/KHRoaXMuY2xpY2soKSwhMSk6dm9pZCAwfSxfZGVmYXVsdDpmdW5jdGlvbihhKXtyZXR1cm4gbS5ub2RlTmFtZShhLnRhcmdldCwiYSIpfX0sYmVmb3JldW5sb2FkOntwb3N0RGlzcGF0Y2g6ZnVuY3Rpb24oYSl7dm9pZCAwIT09YS5yZXN1bHQmJmEub3JpZ2luYWxFdmVudCYmKGEub3JpZ2luYWxFdmVudC5yZXR1cm5WYWx1ZT1hLnJlc3VsdCl9fX0sc2ltdWxhdGU6ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9bS5leHRlbmQobmV3IG0uRXZlbnQsYyx7dHlwZTphLGlzU2ltdWxhdGVkOiEwLG9yaWdpbmFsRXZlbnQ6e319KTtkP20uZXZlbnQudHJpZ2dlcihlLG51bGwsYik6bS5ldmVudC5kaXNwYXRjaC5jYWxsKGIsZSksZS5pc0RlZmF1bHRQcmV2ZW50ZWQoKSYmYy5wcmV2ZW50RGVmYXVsdCgpfX0sbS5yZW1vdmVFdmVudD15LnJlbW92ZUV2ZW50TGlzdGVuZXI/ZnVuY3Rpb24oYSxiLGMpe2EucmVtb3ZlRXZlbnRMaXN0ZW5lciYmYS5yZW1vdmVFdmVudExpc3RlbmVyKGIsYywhMSl9OmZ1bmN0aW9uKGEsYixjKXt2YXIgZD0ib24iK2I7YS5kZXRhY2hFdmVudCYmKHR5cGVvZiBhW2RdPT09SyYmKGFbZF09bnVsbCksYS5kZXRhY2hFdmVudChkLGMpKX0sbS5FdmVudD1mdW5jdGlvbihhLGIpe3JldHVybiB0aGlzIGluc3RhbmNlb2YgbS5FdmVudD8oYSYmYS50eXBlPyh0aGlzLm9yaWdpbmFsRXZlbnQ9YSx0aGlzLnR5cGU9YS50eXBlLHRoaXMuaXNEZWZhdWx0UHJldmVudGVkPWEuZGVmYXVsdFByZXZlbnRlZHx8dm9pZCAwPT09YS5kZWZhdWx0UHJldmVudGVkJiZhLnJldHVyblZhbHVlPT09ITE/YWE6YmEpOnRoaXMudHlwZT1hLGImJm0uZXh0ZW5kKHRoaXMsYiksdGhpcy50aW1lU3RhbXA9YSYmYS50aW1lU3RhbXB8fG0ubm93KCksdm9pZCh0aGlzW20uZXhwYW5kb109ITApKTpuZXcgbS5FdmVudChhLGIpfSxtLkV2ZW50LnByb3RvdHlwZT17aXNEZWZhdWx0UHJldmVudGVkOmJhLGlzUHJvcGFnYXRpb25TdG9wcGVkOmJhLGlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkOmJhLHByZXZlbnREZWZhdWx0OmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5vcmlnaW5hbEV2ZW50O3RoaXMuaXNEZWZhdWx0UHJldmVudGVkPWFhLGEmJihhLnByZXZlbnREZWZhdWx0P2EucHJldmVudERlZmF1bHQoKTphLnJldHVyblZhbHVlPSExKX0sc3RvcFByb3BhZ2F0aW9uOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5vcmlnaW5hbEV2ZW50O3RoaXMuaXNQcm9wYWdhdGlvblN0b3BwZWQ9YWEsYSYmKGEuc3RvcFByb3BhZ2F0aW9uJiZhLnN0b3BQcm9wYWdhdGlvbigpLGEuY2FuY2VsQnViYmxlPSEwKX0sc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5vcmlnaW5hbEV2ZW50O3RoaXMuaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQ9YWEsYSYmYS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24mJmEuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCksdGhpcy5zdG9wUHJvcGFnYXRpb24oKX19LG0uZWFjaCh7bW91c2VlbnRlcjoibW91c2VvdmVyIixtb3VzZWxlYXZlOiJtb3VzZW91dCIscG9pbnRlcmVudGVyOiJwb2ludGVyb3ZlciIscG9pbnRlcmxlYXZlOiJwb2ludGVyb3V0In0sZnVuY3Rpb24oYSxiKXttLmV2ZW50LnNwZWNpYWxbYV09e2RlbGVnYXRlVHlwZTpiLGJpbmRUeXBlOmIsaGFuZGxlOmZ1bmN0aW9uKGEpe3ZhciBjLGQ9dGhpcyxlPWEucmVsYXRlZFRhcmdldCxmPWEuaGFuZGxlT2JqO3JldHVybighZXx8ZSE9PWQmJiFtLmNvbnRhaW5zKGQsZSkpJiYoYS50eXBlPWYub3JpZ1R5cGUsYz1mLmhhbmRsZXIuYXBwbHkodGhpcyxhcmd1bWVudHMpLGEudHlwZT1iKSxjfX19KSxrLnN1Ym1pdEJ1YmJsZXN8fChtLmV2ZW50LnNwZWNpYWwuc3VibWl0PXtzZXR1cDpmdW5jdGlvbigpe3JldHVybiBtLm5vZGVOYW1lKHRoaXMsImZvcm0iKT8hMTp2b2lkIG0uZXZlbnQuYWRkKHRoaXMsImNsaWNrLl9zdWJtaXQga2V5cHJlc3MuX3N1Ym1pdCIsZnVuY3Rpb24oYSl7dmFyIGI9YS50YXJnZXQsYz1tLm5vZGVOYW1lKGIsImlucHV0Iil8fG0ubm9kZU5hbWUoYiwiYnV0dG9uIik/Yi5mb3JtOnZvaWQgMDtjJiYhbS5fZGF0YShjLCJzdWJtaXRCdWJibGVzIikmJihtLmV2ZW50LmFkZChjLCJzdWJtaXQuX3N1Ym1pdCIsZnVuY3Rpb24oYSl7YS5fc3VibWl0X2J1YmJsZT0hMH0pLG0uX2RhdGEoYywic3VibWl0QnViYmxlcyIsITApKX0pfSxwb3N0RGlzcGF0Y2g6ZnVuY3Rpb24oYSl7YS5fc3VibWl0X2J1YmJsZSYmKGRlbGV0ZSBhLl9zdWJtaXRfYnViYmxlLHRoaXMucGFyZW50Tm9kZSYmIWEuaXNUcmlnZ2VyJiZtLmV2ZW50LnNpbXVsYXRlKCJzdWJtaXQiLHRoaXMucGFyZW50Tm9kZSxhLCEwKSl9LHRlYXJkb3duOmZ1bmN0aW9uKCl7cmV0dXJuIG0ubm9kZU5hbWUodGhpcywiZm9ybSIpPyExOnZvaWQgbS5ldmVudC5yZW1vdmUodGhpcywiLl9zdWJtaXQiKX19KSxrLmNoYW5nZUJ1YmJsZXN8fChtLmV2ZW50LnNwZWNpYWwuY2hhbmdlPXtzZXR1cDpmdW5jdGlvbigpe3JldHVybiBYLnRlc3QodGhpcy5ub2RlTmFtZSk/KCgiY2hlY2tib3giPT09dGhpcy50eXBlfHwicmFkaW8iPT09dGhpcy50eXBlKSYmKG0uZXZlbnQuYWRkKHRoaXMsInByb3BlcnR5Y2hhbmdlLl9jaGFuZ2UiLGZ1bmN0aW9uKGEpeyJjaGVja2VkIj09PWEub3JpZ2luYWxFdmVudC5wcm9wZXJ0eU5hbWUmJih0aGlzLl9qdXN0X2NoYW5nZWQ9ITApfSksbS5ldmVudC5hZGQodGhpcywiY2xpY2suX2NoYW5nZSIsZnVuY3Rpb24oYSl7dGhpcy5fanVzdF9jaGFuZ2VkJiYhYS5pc1RyaWdnZXImJih0aGlzLl9qdXN0X2NoYW5nZWQ9ITEpLG0uZXZlbnQuc2ltdWxhdGUoImNoYW5nZSIsdGhpcyxhLCEwKX0pKSwhMSk6dm9pZCBtLmV2ZW50LmFkZCh0aGlzLCJiZWZvcmVhY3RpdmF0ZS5fY2hhbmdlIixmdW5jdGlvbihhKXt2YXIgYj1hLnRhcmdldDtYLnRlc3QoYi5ub2RlTmFtZSkmJiFtLl9kYXRhKGIsImNoYW5nZUJ1YmJsZXMiKSYmKG0uZXZlbnQuYWRkKGIsImNoYW5nZS5fY2hhbmdlIixmdW5jdGlvbihhKXshdGhpcy5wYXJlbnROb2RlfHxhLmlzU2ltdWxhdGVkfHxhLmlzVHJpZ2dlcnx8bS5ldmVudC5zaW11bGF0ZSgiY2hhbmdlIix0aGlzLnBhcmVudE5vZGUsYSwhMCl9KSxtLl9kYXRhKGIsImNoYW5nZUJ1YmJsZXMiLCEwKSl9KX0saGFuZGxlOmZ1bmN0aW9uKGEpe3ZhciBiPWEudGFyZ2V0O3JldHVybiB0aGlzIT09Ynx8YS5pc1NpbXVsYXRlZHx8YS5pc1RyaWdnZXJ8fCJyYWRpbyIhPT1iLnR5cGUmJiJjaGVja2JveCIhPT1iLnR5cGU/YS5oYW5kbGVPYmouaGFuZGxlci5hcHBseSh0aGlzLGFyZ3VtZW50cyk6dm9pZCAwfSx0ZWFyZG93bjpmdW5jdGlvbigpe3JldHVybiBtLmV2ZW50LnJlbW92ZSh0aGlzLCIuX2NoYW5nZSIpLCFYLnRlc3QodGhpcy5ub2RlTmFtZSl9fSksay5mb2N1c2luQnViYmxlc3x8bS5lYWNoKHtmb2N1czoiZm9jdXNpbiIsYmx1cjoiZm9jdXNvdXQifSxmdW5jdGlvbihhLGIpe3ZhciBjPWZ1bmN0aW9uKGEpe20uZXZlbnQuc2ltdWxhdGUoYixhLnRhcmdldCxtLmV2ZW50LmZpeChhKSwhMCl9O20uZXZlbnQuc3BlY2lhbFtiXT17c2V0dXA6ZnVuY3Rpb24oKXt2YXIgZD10aGlzLm93bmVyRG9jdW1lbnR8fHRoaXMsZT1tLl9kYXRhKGQsYik7ZXx8ZC5hZGRFdmVudExpc3RlbmVyKGEsYywhMCksbS5fZGF0YShkLGIsKGV8fDApKzEpfSx0ZWFyZG93bjpmdW5jdGlvbigpe3ZhciBkPXRoaXMub3duZXJEb2N1bWVudHx8dGhpcyxlPW0uX2RhdGEoZCxiKS0xO2U/bS5fZGF0YShkLGIsZSk6KGQucmVtb3ZlRXZlbnRMaXN0ZW5lcihhLGMsITApLG0uX3JlbW92ZURhdGEoZCxiKSl9fX0pLG0uZm4uZXh0ZW5kKHtvbjpmdW5jdGlvbihhLGIsYyxkLGUpe3ZhciBmLGc7aWYoIm9iamVjdCI9PXR5cGVvZiBhKXsic3RyaW5nIiE9dHlwZW9mIGImJihjPWN8fGIsYj12b2lkIDApO2ZvcihmIGluIGEpdGhpcy5vbihmLGIsYyxhW2ZdLGUpO3JldHVybiB0aGlzfWlmKG51bGw9PWMmJm51bGw9PWQ/KGQ9YixjPWI9dm9pZCAwKTpudWxsPT1kJiYoInN0cmluZyI9PXR5cGVvZiBiPyhkPWMsYz12b2lkIDApOihkPWMsYz1iLGI9dm9pZCAwKSksZD09PSExKWQ9YmE7ZWxzZSBpZighZClyZXR1cm4gdGhpcztyZXR1cm4gMT09PWUmJihnPWQsZD1mdW5jdGlvbihhKXtyZXR1cm4gbSgpLm9mZihhKSxnLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sZC5ndWlkPWcuZ3VpZHx8KGcuZ3VpZD1tLmd1aWQrKykpLHRoaXMuZWFjaChmdW5jdGlvbigpe20uZXZlbnQuYWRkKHRoaXMsYSxkLGMsYil9KX0sb25lOmZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiB0aGlzLm9uKGEsYixjLGQsMSl9LG9mZjpmdW5jdGlvbihhLGIsYyl7dmFyIGQsZTtpZihhJiZhLnByZXZlbnREZWZhdWx0JiZhLmhhbmRsZU9iailyZXR1cm4gZD1hLmhhbmRsZU9iaixtKGEuZGVsZWdhdGVUYXJnZXQpLm9mZihkLm5hbWVzcGFjZT9kLm9yaWdUeXBlKyIuIitkLm5hbWVzcGFjZTpkLm9yaWdUeXBlLGQuc2VsZWN0b3IsZC5oYW5kbGVyKSx0aGlzO2lmKCJvYmplY3QiPT10eXBlb2YgYSl7Zm9yKGUgaW4gYSl0aGlzLm9mZihlLGIsYVtlXSk7cmV0dXJuIHRoaXN9cmV0dXJuKGI9PT0hMXx8ImZ1bmN0aW9uIj09dHlwZW9mIGIpJiYoYz1iLGI9dm9pZCAwKSxjPT09ITEmJihjPWJhKSx0aGlzLmVhY2goZnVuY3Rpb24oKXttLmV2ZW50LnJlbW92ZSh0aGlzLGEsYyxiKX0pfSx0cmlnZ2VyOmZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe20uZXZlbnQudHJpZ2dlcihhLGIsdGhpcyl9KX0sdHJpZ2dlckhhbmRsZXI6ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzWzBdO3JldHVybiBjP20uZXZlbnQudHJpZ2dlcihhLGIsYywhMCk6dm9pZCAwfX0pO2Z1bmN0aW9uIGRhKGEpe3ZhciBiPWVhLnNwbGl0KCJ8IiksYz1hLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtpZihjLmNyZWF0ZUVsZW1lbnQpd2hpbGUoYi5sZW5ndGgpYy5jcmVhdGVFbGVtZW50KGIucG9wKCkpO3JldHVybiBjfXZhciBlYT0iYWJicnxhcnRpY2xlfGFzaWRlfGF1ZGlvfGJkaXxjYW52YXN8ZGF0YXxkYXRhbGlzdHxkZXRhaWxzfGZpZ2NhcHRpb258ZmlndXJlfGZvb3RlcnxoZWFkZXJ8aGdyb3VwfG1hcmt8bWV0ZXJ8bmF2fG91dHB1dHxwcm9ncmVzc3xzZWN0aW9ufHN1bW1hcnl8dGltZXx2aWRlbyIsZmE9LyBqUXVlcnlcZCs9Iig/Om51bGx8XGQrKSIvZyxnYT1uZXcgUmVnRXhwKCI8KD86IitlYSsiKVtcXHMvPl0iLCJpIiksaGE9L15ccysvLGlhPS88KD8hYXJlYXxicnxjb2x8ZW1iZWR8aHJ8aW1nfGlucHV0fGxpbmt8bWV0YXxwYXJhbSkoKFtcdzpdKylbXj5dKilcLz4vZ2ksamE9LzwoW1x3Ol0rKS8sa2E9Lzx0Ym9keS9pLGxhPS88fCYjP1x3KzsvLG1hPS88KD86c2NyaXB0fHN0eWxlfGxpbmspL2ksbmE9L2NoZWNrZWRccyooPzpbXj1dfD1ccyouY2hlY2tlZC4pL2ksb2E9L14kfFwvKD86amF2YXxlY21hKXNjcmlwdC9pLHBhPS9edHJ1ZVwvKC4qKS8scWE9L15ccyo8ISg/OlxbQ0RBVEFcW3wtLSl8KD86XF1cXXwtLSk+XHMqJC9nLHJhPXtvcHRpb246WzEsIjxzZWxlY3QgbXVsdGlwbGU9J211bHRpcGxlJz4iLCI8L3NlbGVjdD4iXSxsZWdlbmQ6WzEsIjxmaWVsZHNldD4iLCI8L2ZpZWxkc2V0PiJdLGFyZWE6WzEsIjxtYXA+IiwiPC9tYXA+Il0scGFyYW06WzEsIjxvYmplY3Q+IiwiPC9vYmplY3Q+Il0sdGhlYWQ6WzEsIjx0YWJsZT4iLCI8L3RhYmxlPiJdLHRyOlsyLCI8dGFibGU+PHRib2R5PiIsIjwvdGJvZHk+PC90YWJsZT4iXSxjb2w6WzIsIjx0YWJsZT48dGJvZHk+PC90Ym9keT48Y29sZ3JvdXA+IiwiPC9jb2xncm91cD48L3RhYmxlPiJdLHRkOlszLCI8dGFibGU+PHRib2R5Pjx0cj4iLCI8L3RyPjwvdGJvZHk+PC90YWJsZT4iXSxfZGVmYXVsdDprLmh0bWxTZXJpYWxpemU/WzAsIiIsIiJdOlsxLCJYPGRpdj4iLCI8L2Rpdj4iXX0sc2E9ZGEoeSksdGE9c2EuYXBwZW5kQ2hpbGQoeS5jcmVhdGVFbGVtZW50KCJkaXYiKSk7cmEub3B0Z3JvdXA9cmEub3B0aW9uLHJhLnRib2R5PXJhLnRmb290PXJhLmNvbGdyb3VwPXJhLmNhcHRpb249cmEudGhlYWQscmEudGg9cmEudGQ7ZnVuY3Rpb24gdWEoYSxiKXt2YXIgYyxkLGU9MCxmPXR5cGVvZiBhLmdldEVsZW1lbnRzQnlUYWdOYW1lIT09Sz9hLmdldEVsZW1lbnRzQnlUYWdOYW1lKGJ8fCIqIik6dHlwZW9mIGEucXVlcnlTZWxlY3RvckFsbCE9PUs/YS5xdWVyeVNlbGVjdG9yQWxsKGJ8fCIqIik6dm9pZCAwO2lmKCFmKWZvcihmPVtdLGM9YS5jaGlsZE5vZGVzfHxhO251bGwhPShkPWNbZV0pO2UrKykhYnx8bS5ub2RlTmFtZShkLGIpP2YucHVzaChkKTptLm1lcmdlKGYsdWEoZCxiKSk7cmV0dXJuIHZvaWQgMD09PWJ8fGImJm0ubm9kZU5hbWUoYSxiKT9tLm1lcmdlKFthXSxmKTpmfWZ1bmN0aW9uIHZhKGEpe1cudGVzdChhLnR5cGUpJiYoYS5kZWZhdWx0Q2hlY2tlZD1hLmNoZWNrZWQpfWZ1bmN0aW9uIHdhKGEsYil7cmV0dXJuIG0ubm9kZU5hbWUoYSwidGFibGUiKSYmbS5ub2RlTmFtZSgxMSE9PWIubm9kZVR5cGU/YjpiLmZpcnN0Q2hpbGQsInRyIik/YS5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGJvZHkiKVswXXx8YS5hcHBlbmRDaGlsZChhLm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGJvZHkiKSk6YX1mdW5jdGlvbiB4YShhKXtyZXR1cm4gYS50eXBlPShudWxsIT09bS5maW5kLmF0dHIoYSwidHlwZSIpKSsiLyIrYS50eXBlLGF9ZnVuY3Rpb24geWEoYSl7dmFyIGI9cGEuZXhlYyhhLnR5cGUpO3JldHVybiBiP2EudHlwZT1iWzFdOmEucmVtb3ZlQXR0cmlidXRlKCJ0eXBlIiksYX1mdW5jdGlvbiB6YShhLGIpe2Zvcih2YXIgYyxkPTA7bnVsbCE9KGM9YVtkXSk7ZCsrKW0uX2RhdGEoYywiZ2xvYmFsRXZhbCIsIWJ8fG0uX2RhdGEoYltkXSwiZ2xvYmFsRXZhbCIpKX1mdW5jdGlvbiBBYShhLGIpe2lmKDE9PT1iLm5vZGVUeXBlJiZtLmhhc0RhdGEoYSkpe3ZhciBjLGQsZSxmPW0uX2RhdGEoYSksZz1tLl9kYXRhKGIsZiksaD1mLmV2ZW50cztpZihoKXtkZWxldGUgZy5oYW5kbGUsZy5ldmVudHM9e307Zm9yKGMgaW4gaClmb3IoZD0wLGU9aFtjXS5sZW5ndGg7ZT5kO2QrKyltLmV2ZW50LmFkZChiLGMsaFtjXVtkXSl9Zy5kYXRhJiYoZy5kYXRhPW0uZXh0ZW5kKHt9LGcuZGF0YSkpfX1mdW5jdGlvbiBCYShhLGIpe3ZhciBjLGQsZTtpZigxPT09Yi5ub2RlVHlwZSl7aWYoYz1iLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCksIWsubm9DbG9uZUV2ZW50JiZiW20uZXhwYW5kb10pe2U9bS5fZGF0YShiKTtmb3IoZCBpbiBlLmV2ZW50cyltLnJlbW92ZUV2ZW50KGIsZCxlLmhhbmRsZSk7Yi5yZW1vdmVBdHRyaWJ1dGUobS5leHBhbmRvKX0ic2NyaXB0Ij09PWMmJmIudGV4dCE9PWEudGV4dD8oeGEoYikudGV4dD1hLnRleHQseWEoYikpOiJvYmplY3QiPT09Yz8oYi5wYXJlbnROb2RlJiYoYi5vdXRlckhUTUw9YS5vdXRlckhUTUwpLGsuaHRtbDVDbG9uZSYmYS5pbm5lckhUTUwmJiFtLnRyaW0oYi5pbm5lckhUTUwpJiYoYi5pbm5lckhUTUw9YS5pbm5lckhUTUwpKToiaW5wdXQiPT09YyYmVy50ZXN0KGEudHlwZSk/KGIuZGVmYXVsdENoZWNrZWQ9Yi5jaGVja2VkPWEuY2hlY2tlZCxiLnZhbHVlIT09YS52YWx1ZSYmKGIudmFsdWU9YS52YWx1ZSkpOiJvcHRpb24iPT09Yz9iLmRlZmF1bHRTZWxlY3RlZD1iLnNlbGVjdGVkPWEuZGVmYXVsdFNlbGVjdGVkOigiaW5wdXQiPT09Y3x8InRleHRhcmVhIj09PWMpJiYoYi5kZWZhdWx0VmFsdWU9YS5kZWZhdWx0VmFsdWUpfX1tLmV4dGVuZCh7Y2xvbmU6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGUsZixnLGgsaT1tLmNvbnRhaW5zKGEub3duZXJEb2N1bWVudCxhKTtpZihrLmh0bWw1Q2xvbmV8fG0uaXNYTUxEb2MoYSl8fCFnYS50ZXN0KCI8IithLm5vZGVOYW1lKyI+Iik/Zj1hLmNsb25lTm9kZSghMCk6KHRhLmlubmVySFRNTD1hLm91dGVySFRNTCx0YS5yZW1vdmVDaGlsZChmPXRhLmZpcnN0Q2hpbGQpKSwhKGsubm9DbG9uZUV2ZW50JiZrLm5vQ2xvbmVDaGVja2VkfHwxIT09YS5ub2RlVHlwZSYmMTEhPT1hLm5vZGVUeXBlfHxtLmlzWE1MRG9jKGEpKSlmb3IoZD11YShmKSxoPXVhKGEpLGc9MDtudWxsIT0oZT1oW2ddKTsrK2cpZFtnXSYmQmEoZSxkW2ddKTtpZihiKWlmKGMpZm9yKGg9aHx8dWEoYSksZD1kfHx1YShmKSxnPTA7bnVsbCE9KGU9aFtnXSk7ZysrKUFhKGUsZFtnXSk7ZWxzZSBBYShhLGYpO3JldHVybiBkPXVhKGYsInNjcmlwdCIpLGQubGVuZ3RoPjAmJnphKGQsIWkmJnVhKGEsInNjcmlwdCIpKSxkPWg9ZT1udWxsLGZ9LGJ1aWxkRnJhZ21lbnQ6ZnVuY3Rpb24oYSxiLGMsZCl7Zm9yKHZhciBlLGYsZyxoLGksaixsLG49YS5sZW5ndGgsbz1kYShiKSxwPVtdLHE9MDtuPnE7cSsrKWlmKGY9YVtxXSxmfHwwPT09ZilpZigib2JqZWN0Ij09PW0udHlwZShmKSltLm1lcmdlKHAsZi5ub2RlVHlwZT9bZl06Zik7ZWxzZSBpZihsYS50ZXN0KGYpKXtoPWh8fG8uYXBwZW5kQ2hpbGQoYi5jcmVhdGVFbGVtZW50KCJkaXYiKSksaT0oamEuZXhlYyhmKXx8WyIiLCIiXSlbMV0udG9Mb3dlckNhc2UoKSxsPXJhW2ldfHxyYS5fZGVmYXVsdCxoLmlubmVySFRNTD1sWzFdK2YucmVwbGFjZShpYSwiPCQxPjwvJDI+IikrbFsyXSxlPWxbMF07d2hpbGUoZS0tKWg9aC5sYXN0Q2hpbGQ7aWYoIWsubGVhZGluZ1doaXRlc3BhY2UmJmhhLnRlc3QoZikmJnAucHVzaChiLmNyZWF0ZVRleHROb2RlKGhhLmV4ZWMoZilbMF0pKSwhay50Ym9keSl7Zj0idGFibGUiIT09aXx8a2EudGVzdChmKT8iPHRhYmxlPiIhPT1sWzFdfHxrYS50ZXN0KGYpPzA6aDpoLmZpcnN0Q2hpbGQsZT1mJiZmLmNoaWxkTm9kZXMubGVuZ3RoO3doaWxlKGUtLSltLm5vZGVOYW1lKGo9Zi5jaGlsZE5vZGVzW2VdLCJ0Ym9keSIpJiYhai5jaGlsZE5vZGVzLmxlbmd0aCYmZi5yZW1vdmVDaGlsZChqKX1tLm1lcmdlKHAsaC5jaGlsZE5vZGVzKSxoLnRleHRDb250ZW50PSIiO3doaWxlKGguZmlyc3RDaGlsZCloLnJlbW92ZUNoaWxkKGguZmlyc3RDaGlsZCk7aD1vLmxhc3RDaGlsZH1lbHNlIHAucHVzaChiLmNyZWF0ZVRleHROb2RlKGYpKTtoJiZvLnJlbW92ZUNoaWxkKGgpLGsuYXBwZW5kQ2hlY2tlZHx8bS5ncmVwKHVhKHAsImlucHV0IiksdmEpLHE9MDt3aGlsZShmPXBbcSsrXSlpZigoIWR8fC0xPT09bS5pbkFycmF5KGYsZCkpJiYoZz1tLmNvbnRhaW5zKGYub3duZXJEb2N1bWVudCxmKSxoPXVhKG8uYXBwZW5kQ2hpbGQoZiksInNjcmlwdCIpLGcmJnphKGgpLGMpKXtlPTA7d2hpbGUoZj1oW2UrK10pb2EudGVzdChmLnR5cGV8fCIiKSYmYy5wdXNoKGYpfXJldHVybiBoPW51bGwsb30sY2xlYW5EYXRhOmZ1bmN0aW9uKGEsYil7Zm9yKHZhciBkLGUsZixnLGg9MCxpPW0uZXhwYW5kbyxqPW0uY2FjaGUsbD1rLmRlbGV0ZUV4cGFuZG8sbj1tLmV2ZW50LnNwZWNpYWw7bnVsbCE9KGQ9YVtoXSk7aCsrKWlmKChifHxtLmFjY2VwdERhdGEoZCkpJiYoZj1kW2ldLGc9ZiYmaltmXSkpe2lmKGcuZXZlbnRzKWZvcihlIGluIGcuZXZlbnRzKW5bZV0/bS5ldmVudC5yZW1vdmUoZCxlKTptLnJlbW92ZUV2ZW50KGQsZSxnLmhhbmRsZSk7altmXSYmKGRlbGV0ZSBqW2ZdLGw/ZGVsZXRlIGRbaV06dHlwZW9mIGQucmVtb3ZlQXR0cmlidXRlIT09Sz9kLnJlbW92ZUF0dHJpYnV0ZShpKTpkW2ldPW51bGwsYy5wdXNoKGYpKX19fSksbS5mbi5leHRlbmQoe3RleHQ6ZnVuY3Rpb24oYSl7cmV0dXJuIFYodGhpcyxmdW5jdGlvbihhKXtyZXR1cm4gdm9pZCAwPT09YT9tLnRleHQodGhpcyk6dGhpcy5lbXB0eSgpLmFwcGVuZCgodGhpc1swXSYmdGhpc1swXS5vd25lckRvY3VtZW50fHx5KS5jcmVhdGVUZXh0Tm9kZShhKSl9LG51bGwsYSxhcmd1bWVudHMubGVuZ3RoKX0sYXBwZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZG9tTWFuaXAoYXJndW1lbnRzLGZ1bmN0aW9uKGEpe2lmKDE9PT10aGlzLm5vZGVUeXBlfHwxMT09PXRoaXMubm9kZVR5cGV8fDk9PT10aGlzLm5vZGVUeXBlKXt2YXIgYj13YSh0aGlzLGEpO2IuYXBwZW5kQ2hpbGQoYSl9fSl9LHByZXBlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsZnVuY3Rpb24oYSl7aWYoMT09PXRoaXMubm9kZVR5cGV8fDExPT09dGhpcy5ub2RlVHlwZXx8OT09PXRoaXMubm9kZVR5cGUpe3ZhciBiPXdhKHRoaXMsYSk7Yi5pbnNlcnRCZWZvcmUoYSxiLmZpcnN0Q2hpbGQpfX0pfSxiZWZvcmU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsZnVuY3Rpb24oYSl7dGhpcy5wYXJlbnROb2RlJiZ0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGEsdGhpcyl9KX0sYWZ0ZXI6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsZnVuY3Rpb24oYSl7dGhpcy5wYXJlbnROb2RlJiZ0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGEsdGhpcy5uZXh0U2libGluZyl9KX0scmVtb3ZlOmZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjLGQ9YT9tLmZpbHRlcihhLHRoaXMpOnRoaXMsZT0wO251bGwhPShjPWRbZV0pO2UrKylifHwxIT09Yy5ub2RlVHlwZXx8bS5jbGVhbkRhdGEodWEoYykpLGMucGFyZW50Tm9kZSYmKGImJm0uY29udGFpbnMoYy5vd25lckRvY3VtZW50LGMpJiZ6YSh1YShjLCJzY3JpcHQiKSksYy5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGMpKTtyZXR1cm4gdGhpc30sZW1wdHk6ZnVuY3Rpb24oKXtmb3IodmFyIGEsYj0wO251bGwhPShhPXRoaXNbYl0pO2IrKyl7MT09PWEubm9kZVR5cGUmJm0uY2xlYW5EYXRhKHVhKGEsITEpKTt3aGlsZShhLmZpcnN0Q2hpbGQpYS5yZW1vdmVDaGlsZChhLmZpcnN0Q2hpbGQpO2Eub3B0aW9ucyYmbS5ub2RlTmFtZShhLCJzZWxlY3QiKSYmKGEub3B0aW9ucy5sZW5ndGg9MCl9cmV0dXJuIHRoaXN9LGNsb25lOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGE9bnVsbD09YT8hMTphLGI9bnVsbD09Yj9hOmIsdGhpcy5tYXAoZnVuY3Rpb24oKXtyZXR1cm4gbS5jbG9uZSh0aGlzLGEsYil9KX0saHRtbDpmdW5jdGlvbihhKXtyZXR1cm4gVih0aGlzLGZ1bmN0aW9uKGEpe3ZhciBiPXRoaXNbMF18fHt9LGM9MCxkPXRoaXMubGVuZ3RoO2lmKHZvaWQgMD09PWEpcmV0dXJuIDE9PT1iLm5vZGVUeXBlP2IuaW5uZXJIVE1MLnJlcGxhY2UoZmEsIiIpOnZvaWQgMDtpZighKCJzdHJpbmciIT10eXBlb2YgYXx8bWEudGVzdChhKXx8IWsuaHRtbFNlcmlhbGl6ZSYmZ2EudGVzdChhKXx8IWsubGVhZGluZ1doaXRlc3BhY2UmJmhhLnRlc3QoYSl8fHJhWyhqYS5leGVjKGEpfHxbIiIsIiJdKVsxXS50b0xvd2VyQ2FzZSgpXSkpe2E9YS5yZXBsYWNlKGlhLCI8JDE+PC8kMj4iKTt0cnl7Zm9yKDtkPmM7YysrKWI9dGhpc1tjXXx8e30sMT09PWIubm9kZVR5cGUmJihtLmNsZWFuRGF0YSh1YShiLCExKSksYi5pbm5lckhUTUw9YSk7Yj0wfWNhdGNoKGUpe319YiYmdGhpcy5lbXB0eSgpLmFwcGVuZChhKX0sbnVsbCxhLGFyZ3VtZW50cy5sZW5ndGgpfSxyZXBsYWNlV2l0aDpmdW5jdGlvbigpe3ZhciBhPWFyZ3VtZW50c1swXTtyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsZnVuY3Rpb24oYil7YT10aGlzLnBhcmVudE5vZGUsbS5jbGVhbkRhdGEodWEodGhpcykpLGEmJmEucmVwbGFjZUNoaWxkKGIsdGhpcyl9KSxhJiYoYS5sZW5ndGh8fGEubm9kZVR5cGUpP3RoaXM6dGhpcy5yZW1vdmUoKX0sZGV0YWNoOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnJlbW92ZShhLCEwKX0sZG9tTWFuaXA6ZnVuY3Rpb24oYSxiKXthPWUuYXBwbHkoW10sYSk7dmFyIGMsZCxmLGcsaCxpLGo9MCxsPXRoaXMubGVuZ3RoLG49dGhpcyxvPWwtMSxwPWFbMF0scT1tLmlzRnVuY3Rpb24ocCk7aWYocXx8bD4xJiYic3RyaW5nIj09dHlwZW9mIHAmJiFrLmNoZWNrQ2xvbmUmJm5hLnRlc3QocCkpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihjKXt2YXIgZD1uLmVxKGMpO3EmJihhWzBdPXAuY2FsbCh0aGlzLGMsZC5odG1sKCkpKSxkLmRvbU1hbmlwKGEsYil9KTtpZihsJiYoaT1tLmJ1aWxkRnJhZ21lbnQoYSx0aGlzWzBdLm93bmVyRG9jdW1lbnQsITEsdGhpcyksYz1pLmZpcnN0Q2hpbGQsMT09PWkuY2hpbGROb2Rlcy5sZW5ndGgmJihpPWMpLGMpKXtmb3IoZz1tLm1hcCh1YShpLCJzY3JpcHQiKSx4YSksZj1nLmxlbmd0aDtsPmo7aisrKWQ9aSxqIT09byYmKGQ9bS5jbG9uZShkLCEwLCEwKSxmJiZtLm1lcmdlKGcsdWEoZCwic2NyaXB0IikpKSxiLmNhbGwodGhpc1tqXSxkLGopO2lmKGYpZm9yKGg9Z1tnLmxlbmd0aC0xXS5vd25lckRvY3VtZW50LG0ubWFwKGcseWEpLGo9MDtmPmo7aisrKWQ9Z1tqXSxvYS50ZXN0KGQudHlwZXx8IiIpJiYhbS5fZGF0YShkLCJnbG9iYWxFdmFsIikmJm0uY29udGFpbnMoaCxkKSYmKGQuc3JjP20uX2V2YWxVcmwmJm0uX2V2YWxVcmwoZC5zcmMpOm0uZ2xvYmFsRXZhbCgoZC50ZXh0fHxkLnRleHRDb250ZW50fHxkLmlubmVySFRNTHx8IiIpLnJlcGxhY2UocWEsIiIpKSk7aT1jPW51bGx9cmV0dXJuIHRoaXN9fSksbS5lYWNoKHthcHBlbmRUbzoiYXBwZW5kIixwcmVwZW5kVG86InByZXBlbmQiLGluc2VydEJlZm9yZToiYmVmb3JlIixpbnNlcnRBZnRlcjoiYWZ0ZXIiLHJlcGxhY2VBbGw6InJlcGxhY2VXaXRoIn0sZnVuY3Rpb24oYSxiKXttLmZuW2FdPWZ1bmN0aW9uKGEpe2Zvcih2YXIgYyxkPTAsZT1bXSxnPW0oYSksaD1nLmxlbmd0aC0xO2g+PWQ7ZCsrKWM9ZD09PWg/dGhpczp0aGlzLmNsb25lKCEwKSxtKGdbZF0pW2JdKGMpLGYuYXBwbHkoZSxjLmdldCgpKTtyZXR1cm4gdGhpcy5wdXNoU3RhY2soZSl9fSk7dmFyIENhLERhPXt9O2Z1bmN0aW9uIEVhKGIsYyl7dmFyIGQsZT1tKGMuY3JlYXRlRWxlbWVudChiKSkuYXBwZW5kVG8oYy5ib2R5KSxmPWEuZ2V0RGVmYXVsdENvbXB1dGVkU3R5bGUmJihkPWEuZ2V0RGVmYXVsdENvbXB1dGVkU3R5bGUoZVswXSkpP2QuZGlzcGxheTptLmNzcyhlWzBdLCJkaXNwbGF5Iik7cmV0dXJuIGUuZGV0YWNoKCksZn1mdW5jdGlvbiBGYShhKXt2YXIgYj15LGM9RGFbYV07cmV0dXJuIGN8fChjPUVhKGEsYiksIm5vbmUiIT09YyYmY3x8KENhPShDYXx8bSgiPGlmcmFtZSBmcmFtZWJvcmRlcj0nMCcgd2lkdGg9JzAnIGhlaWdodD0nMCcvPiIpKS5hcHBlbmRUbyhiLmRvY3VtZW50RWxlbWVudCksYj0oQ2FbMF0uY29udGVudFdpbmRvd3x8Q2FbMF0uY29udGVudERvY3VtZW50KS5kb2N1bWVudCxiLndyaXRlKCksYi5jbG9zZSgpLGM9RWEoYSxiKSxDYS5kZXRhY2goKSksRGFbYV09YyksY30hZnVuY3Rpb24oKXt2YXIgYTtrLnNocmlua1dyYXBCbG9ja3M9ZnVuY3Rpb24oKXtpZihudWxsIT1hKXJldHVybiBhO2E9ITE7dmFyIGIsYyxkO3JldHVybiBjPXkuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSxjJiZjLnN0eWxlPyhiPXkuY3JlYXRlRWxlbWVudCgiZGl2IiksZD15LmNyZWF0ZUVsZW1lbnQoImRpdiIpLGQuc3R5bGUuY3NzVGV4dD0icG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyOjA7d2lkdGg6MDtoZWlnaHQ6MDt0b3A6MDtsZWZ0Oi05OTk5cHgiLGMuYXBwZW5kQ2hpbGQoZCkuYXBwZW5kQ2hpbGQoYiksdHlwZW9mIGIuc3R5bGUuem9vbSE9PUsmJihiLnN0eWxlLmNzc1RleHQ9Ii13ZWJraXQtYm94LXNpemluZzpjb250ZW50LWJveDstbW96LWJveC1zaXppbmc6Y29udGVudC1ib3g7Ym94LXNpemluZzpjb250ZW50LWJveDtkaXNwbGF5OmJsb2NrO21hcmdpbjowO2JvcmRlcjowO3BhZGRpbmc6MXB4O3dpZHRoOjFweDt6b29tOjEiLGIuYXBwZW5kQ2hpbGQoeS5jcmVhdGVFbGVtZW50KCJkaXYiKSkuc3R5bGUud2lkdGg9IjVweCIsYT0zIT09Yi5vZmZzZXRXaWR0aCksYy5yZW1vdmVDaGlsZChkKSxhKTp2b2lkIDB9fSgpO3ZhciBHYT0vXm1hcmdpbi8sSGE9bmV3IFJlZ0V4cCgiXigiK1MrIikoPyFweClbYS16JV0rJCIsImkiKSxJYSxKYSxLYT0vXih0b3B8cmlnaHR8Ym90dG9tfGxlZnQpJC87YS5nZXRDb21wdXRlZFN0eWxlPyhJYT1mdW5jdGlvbihiKXtyZXR1cm4gYi5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3Lm9wZW5lcj9iLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShiLG51bGwpOmEuZ2V0Q29tcHV0ZWRTdHlsZShiLG51bGwpfSxKYT1mdW5jdGlvbihhLGIsYyl7dmFyIGQsZSxmLGcsaD1hLnN0eWxlO3JldHVybiBjPWN8fElhKGEpLGc9Yz9jLmdldFByb3BlcnR5VmFsdWUoYil8fGNbYl06dm9pZCAwLGMmJigiIiE9PWd8fG0uY29udGFpbnMoYS5vd25lckRvY3VtZW50LGEpfHwoZz1tLnN0eWxlKGEsYikpLEhhLnRlc3QoZykmJkdhLnRlc3QoYikmJihkPWgud2lkdGgsZT1oLm1pbldpZHRoLGY9aC5tYXhXaWR0aCxoLm1pbldpZHRoPWgubWF4V2lkdGg9aC53aWR0aD1nLGc9Yy53aWR0aCxoLndpZHRoPWQsaC5taW5XaWR0aD1lLGgubWF4V2lkdGg9ZikpLHZvaWQgMD09PWc/ZzpnKyIifSk6eS5kb2N1bWVudEVsZW1lbnQuY3VycmVudFN0eWxlJiYoSWE9ZnVuY3Rpb24oYSl7cmV0dXJuIGEuY3VycmVudFN0eWxlfSxKYT1mdW5jdGlvbihhLGIsYyl7dmFyIGQsZSxmLGcsaD1hLnN0eWxlO3JldHVybiBjPWN8fElhKGEpLGc9Yz9jW2JdOnZvaWQgMCxudWxsPT1nJiZoJiZoW2JdJiYoZz1oW2JdKSxIYS50ZXN0KGcpJiYhS2EudGVzdChiKSYmKGQ9aC5sZWZ0LGU9YS5ydW50aW1lU3R5bGUsZj1lJiZlLmxlZnQsZiYmKGUubGVmdD1hLmN1cnJlbnRTdHlsZS5sZWZ0KSxoLmxlZnQ9ImZvbnRTaXplIj09PWI/IjFlbSI6ZyxnPWgucGl4ZWxMZWZ0KyJweCIsaC5sZWZ0PWQsZiYmKGUubGVmdD1mKSksdm9pZCAwPT09Zz9nOmcrIiJ8fCJhdXRvIn0pO2Z1bmN0aW9uIExhKGEsYil7cmV0dXJue2dldDpmdW5jdGlvbigpe3ZhciBjPWEoKTtpZihudWxsIT1jKXJldHVybiBjP3ZvaWQgZGVsZXRlIHRoaXMuZ2V0Oih0aGlzLmdldD1iKS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fX0hZnVuY3Rpb24oKXt2YXIgYixjLGQsZSxmLGcsaDtpZihiPXkuY3JlYXRlRWxlbWVudCgiZGl2IiksYi5pbm5lckhUTUw9IiAgPGxpbmsvPjx0YWJsZT48L3RhYmxlPjxhIGhyZWY9Jy9hJz5hPC9hPjxpbnB1dCB0eXBlPSdjaGVja2JveCcvPiIsZD1iLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJhIilbMF0sYz1kJiZkLnN0eWxlKXtjLmNzc1RleHQ9ImZsb2F0OmxlZnQ7b3BhY2l0eTouNSIsay5vcGFjaXR5PSIwLjUiPT09Yy5vcGFjaXR5LGsuY3NzRmxvYXQ9ISFjLmNzc0Zsb2F0LGIuc3R5bGUuYmFja2dyb3VuZENsaXA9ImNvbnRlbnQtYm94IixiLmNsb25lTm9kZSghMCkuc3R5bGUuYmFja2dyb3VuZENsaXA9IiIsay5jbGVhckNsb25lU3R5bGU9ImNvbnRlbnQtYm94Ij09PWIuc3R5bGUuYmFja2dyb3VuZENsaXAsay5ib3hTaXppbmc9IiI9PT1jLmJveFNpemluZ3x8IiI9PT1jLk1vekJveFNpemluZ3x8IiI9PT1jLldlYmtpdEJveFNpemluZyxtLmV4dGVuZChrLHtyZWxpYWJsZUhpZGRlbk9mZnNldHM6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbD09ZyYmaSgpLGd9LGJveFNpemluZ1JlbGlhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIG51bGw9PWYmJmkoKSxmfSxwaXhlbFBvc2l0aW9uOmZ1bmN0aW9uKCl7cmV0dXJuIG51bGw9PWUmJmkoKSxlfSxyZWxpYWJsZU1hcmdpblJpZ2h0OmZ1bmN0aW9uKCl7cmV0dXJuIG51bGw9PWgmJmkoKSxofX0pO2Z1bmN0aW9uIGkoKXt2YXIgYixjLGQsaTtjPXkuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSxjJiZjLnN0eWxlJiYoYj15LmNyZWF0ZUVsZW1lbnQoImRpdiIpLGQ9eS5jcmVhdGVFbGVtZW50KCJkaXYiKSxkLnN0eWxlLmNzc1RleHQ9InBvc2l0aW9uOmFic29sdXRlO2JvcmRlcjowO3dpZHRoOjA7aGVpZ2h0OjA7dG9wOjA7bGVmdDotOTk5OXB4IixjLmFwcGVuZENoaWxkKGQpLmFwcGVuZENoaWxkKGIpLGIuc3R5bGUuY3NzVGV4dD0iLXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7LW1vei1ib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym94LXNpemluZzpib3JkZXItYm94O2Rpc3BsYXk6YmxvY2s7bWFyZ2luLXRvcDoxJTt0b3A6MSU7Ym9yZGVyOjFweDtwYWRkaW5nOjFweDt3aWR0aDo0cHg7cG9zaXRpb246YWJzb2x1dGUiLGU9Zj0hMSxoPSEwLGEuZ2V0Q29tcHV0ZWRTdHlsZSYmKGU9IjElIiE9PShhLmdldENvbXB1dGVkU3R5bGUoYixudWxsKXx8e30pLnRvcCxmPSI0cHgiPT09KGEuZ2V0Q29tcHV0ZWRTdHlsZShiLG51bGwpfHx7d2lkdGg6IjRweCJ9KS53aWR0aCxpPWIuYXBwZW5kQ2hpbGQoeS5jcmVhdGVFbGVtZW50KCJkaXYiKSksaS5zdHlsZS5jc3NUZXh0PWIuc3R5bGUuY3NzVGV4dD0iLXdlYmtpdC1ib3gtc2l6aW5nOmNvbnRlbnQtYm94Oy1tb3otYm94LXNpemluZzpjb250ZW50LWJveDtib3gtc2l6aW5nOmNvbnRlbnQtYm94O2Rpc3BsYXk6YmxvY2s7bWFyZ2luOjA7Ym9yZGVyOjA7cGFkZGluZzowIixpLnN0eWxlLm1hcmdpblJpZ2h0PWkuc3R5bGUud2lkdGg9IjAiLGIuc3R5bGUud2lkdGg9IjFweCIsaD0hcGFyc2VGbG9hdCgoYS5nZXRDb21wdXRlZFN0eWxlKGksbnVsbCl8fHt9KS5tYXJnaW5SaWdodCksYi5yZW1vdmVDaGlsZChpKSksYi5pbm5lckhUTUw9Ijx0YWJsZT48dHI+PHRkPjwvdGQ+PHRkPnQ8L3RkPjwvdHI+PC90YWJsZT4iLGk9Yi5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGQiKSxpWzBdLnN0eWxlLmNzc1RleHQ9Im1hcmdpbjowO2JvcmRlcjowO3BhZGRpbmc6MDtkaXNwbGF5Om5vbmUiLGc9MD09PWlbMF0ub2Zmc2V0SGVpZ2h0LGcmJihpWzBdLnN0eWxlLmRpc3BsYXk9IiIsaVsxXS5zdHlsZS5kaXNwbGF5PSJub25lIixnPTA9PT1pWzBdLm9mZnNldEhlaWdodCksYy5yZW1vdmVDaGlsZChkKSl9fX0oKSxtLnN3YXA9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGUsZixnPXt9O2ZvcihmIGluIGIpZ1tmXT1hLnN0eWxlW2ZdLGEuc3R5bGVbZl09YltmXTtlPWMuYXBwbHkoYSxkfHxbXSk7Zm9yKGYgaW4gYilhLnN0eWxlW2ZdPWdbZl07cmV0dXJuIGV9O3ZhciBNYT0vYWxwaGFcKFteKV0qXCkvaSxOYT0vb3BhY2l0eVxzKj1ccyooW14pXSopLyxPYT0vXihub25lfHRhYmxlKD8hLWNbZWFdKS4rKS8sUGE9bmV3IFJlZ0V4cCgiXigiK1MrIikoLiopJCIsImkiKSxRYT1uZXcgUmVnRXhwKCJeKFsrLV0pPSgiK1MrIikiLCJpIiksUmE9e3Bvc2l0aW9uOiJhYnNvbHV0ZSIsdmlzaWJpbGl0eToiaGlkZGVuIixkaXNwbGF5OiJibG9jayJ9LFNhPXtsZXR0ZXJTcGFjaW5nOiIwIixmb250V2VpZ2h0OiI0MDAifSxUYT1bIldlYmtpdCIsIk8iLCJNb3oiLCJtcyJdO2Z1bmN0aW9uIFVhKGEsYil7aWYoYiBpbiBhKXJldHVybiBiO3ZhciBjPWIuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrYi5zbGljZSgxKSxkPWIsZT1UYS5sZW5ndGg7d2hpbGUoZS0tKWlmKGI9VGFbZV0rYyxiIGluIGEpcmV0dXJuIGI7cmV0dXJuIGR9ZnVuY3Rpb24gVmEoYSxiKXtmb3IodmFyIGMsZCxlLGY9W10sZz0wLGg9YS5sZW5ndGg7aD5nO2crKylkPWFbZ10sZC5zdHlsZSYmKGZbZ109bS5fZGF0YShkLCJvbGRkaXNwbGF5IiksYz1kLnN0eWxlLmRpc3BsYXksYj8oZltnXXx8Im5vbmUiIT09Y3x8KGQuc3R5bGUuZGlzcGxheT0iIiksIiI9PT1kLnN0eWxlLmRpc3BsYXkmJlUoZCkmJihmW2ddPW0uX2RhdGEoZCwib2xkZGlzcGxheSIsRmEoZC5ub2RlTmFtZSkpKSk6KGU9VShkKSwoYyYmIm5vbmUiIT09Y3x8IWUpJiZtLl9kYXRhKGQsIm9sZGRpc3BsYXkiLGU/YzptLmNzcyhkLCJkaXNwbGF5IikpKSk7Zm9yKGc9MDtoPmc7ZysrKWQ9YVtnXSxkLnN0eWxlJiYoYiYmIm5vbmUiIT09ZC5zdHlsZS5kaXNwbGF5JiYiIiE9PWQuc3R5bGUuZGlzcGxheXx8KGQuc3R5bGUuZGlzcGxheT1iP2ZbZ118fCIiOiJub25lIikpO3JldHVybiBhfWZ1bmN0aW9uIFdhKGEsYixjKXt2YXIgZD1QYS5leGVjKGIpO3JldHVybiBkP01hdGgubWF4KDAsZFsxXS0oY3x8MCkpKyhkWzJdfHwicHgiKTpifWZ1bmN0aW9uIFhhKGEsYixjLGQsZSl7Zm9yKHZhciBmPWM9PT0oZD8iYm9yZGVyIjoiY29udGVudCIpPzQ6IndpZHRoIj09PWI/MTowLGc9MDs0PmY7Zis9MikibWFyZ2luIj09PWMmJihnKz1tLmNzcyhhLGMrVFtmXSwhMCxlKSksZD8oImNvbnRlbnQiPT09YyYmKGctPW0uY3NzKGEsInBhZGRpbmciK1RbZl0sITAsZSkpLCJtYXJnaW4iIT09YyYmKGctPW0uY3NzKGEsImJvcmRlciIrVFtmXSsiV2lkdGgiLCEwLGUpKSk6KGcrPW0uY3NzKGEsInBhZGRpbmciK1RbZl0sITAsZSksInBhZGRpbmciIT09YyYmKGcrPW0uY3NzKGEsImJvcmRlciIrVFtmXSsiV2lkdGgiLCEwLGUpKSk7cmV0dXJuIGd9ZnVuY3Rpb24gWWEoYSxiLGMpe3ZhciBkPSEwLGU9IndpZHRoIj09PWI/YS5vZmZzZXRXaWR0aDphLm9mZnNldEhlaWdodCxmPUlhKGEpLGc9ay5ib3hTaXppbmcmJiJib3JkZXItYm94Ij09PW0uY3NzKGEsImJveFNpemluZyIsITEsZik7aWYoMD49ZXx8bnVsbD09ZSl7aWYoZT1KYShhLGIsZiksKDA+ZXx8bnVsbD09ZSkmJihlPWEuc3R5bGVbYl0pLEhhLnRlc3QoZSkpcmV0dXJuIGU7ZD1nJiYoay5ib3hTaXppbmdSZWxpYWJsZSgpfHxlPT09YS5zdHlsZVtiXSksZT1wYXJzZUZsb2F0KGUpfHwwfXJldHVybiBlK1hhKGEsYixjfHwoZz8iYm9yZGVyIjoiY29udGVudCIpLGQsZikrInB4In1tLmV4dGVuZCh7Y3NzSG9va3M6e29wYWNpdHk6e2dldDpmdW5jdGlvbihhLGIpe2lmKGIpe3ZhciBjPUphKGEsIm9wYWNpdHkiKTtyZXR1cm4iIj09PWM/IjEiOmN9fX19LGNzc051bWJlcjp7Y29sdW1uQ291bnQ6ITAsZmlsbE9wYWNpdHk6ITAsZmxleEdyb3c6ITAsZmxleFNocmluazohMCxmb250V2VpZ2h0OiEwLGxpbmVIZWlnaHQ6ITAsb3BhY2l0eTohMCxvcmRlcjohMCxvcnBoYW5zOiEwLHdpZG93czohMCx6SW5kZXg6ITAsem9vbTohMH0sY3NzUHJvcHM6eyJmbG9hdCI6ay5jc3NGbG9hdD8iY3NzRmxvYXQiOiJzdHlsZUZsb2F0In0sc3R5bGU6ZnVuY3Rpb24oYSxiLGMsZCl7aWYoYSYmMyE9PWEubm9kZVR5cGUmJjghPT1hLm5vZGVUeXBlJiZhLnN0eWxlKXt2YXIgZSxmLGcsaD1tLmNhbWVsQ2FzZShiKSxpPWEuc3R5bGU7aWYoYj1tLmNzc1Byb3BzW2hdfHwobS5jc3NQcm9wc1toXT1VYShpLGgpKSxnPW0uY3NzSG9va3NbYl18fG0uY3NzSG9va3NbaF0sdm9pZCAwPT09YylyZXR1cm4gZyYmImdldCJpbiBnJiZ2b2lkIDAhPT0oZT1nLmdldChhLCExLGQpKT9lOmlbYl07aWYoZj10eXBlb2YgYywic3RyaW5nIj09PWYmJihlPVFhLmV4ZWMoYykpJiYoYz0oZVsxXSsxKSplWzJdK3BhcnNlRmxvYXQobS5jc3MoYSxiKSksZj0ibnVtYmVyIiksbnVsbCE9YyYmYz09PWMmJigibnVtYmVyIiE9PWZ8fG0uY3NzTnVtYmVyW2hdfHwoYys9InB4Iiksay5jbGVhckNsb25lU3R5bGV8fCIiIT09Y3x8MCE9PWIuaW5kZXhPZigiYmFja2dyb3VuZCIpfHwoaVtiXT0iaW5oZXJpdCIpLCEoZyYmInNldCJpbiBnJiZ2b2lkIDA9PT0oYz1nLnNldChhLGMsZCkpKSkpdHJ5e2lbYl09Y31jYXRjaChqKXt9fX0sY3NzOmZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlLGYsZyxoPW0uY2FtZWxDYXNlKGIpO3JldHVybiBiPW0uY3NzUHJvcHNbaF18fChtLmNzc1Byb3BzW2hdPVVhKGEuc3R5bGUsaCkpLGc9bS5jc3NIb29rc1tiXXx8bS5jc3NIb29rc1toXSxnJiYiZ2V0ImluIGcmJihmPWcuZ2V0KGEsITAsYykpLHZvaWQgMD09PWYmJihmPUphKGEsYixkKSksIm5vcm1hbCI9PT1mJiZiIGluIFNhJiYoZj1TYVtiXSksIiI9PT1jfHxjPyhlPXBhcnNlRmxvYXQoZiksYz09PSEwfHxtLmlzTnVtZXJpYyhlKT9lfHwwOmYpOmZ9fSksbS5lYWNoKFsiaGVpZ2h0Iiwid2lkdGgiXSxmdW5jdGlvbihhLGIpe20uY3NzSG9va3NbYl09e2dldDpmdW5jdGlvbihhLGMsZCl7cmV0dXJuIGM/T2EudGVzdChtLmNzcyhhLCJkaXNwbGF5IikpJiYwPT09YS5vZmZzZXRXaWR0aD9tLnN3YXAoYSxSYSxmdW5jdGlvbigpe3JldHVybiBZYShhLGIsZCl9KTpZYShhLGIsZCk6dm9pZCAwfSxzZXQ6ZnVuY3Rpb24oYSxjLGQpe3ZhciBlPWQmJklhKGEpO3JldHVybiBXYShhLGMsZD9YYShhLGIsZCxrLmJveFNpemluZyYmImJvcmRlci1ib3giPT09bS5jc3MoYSwiYm94U2l6aW5nIiwhMSxlKSxlKTowKX19fSksay5vcGFjaXR5fHwobS5jc3NIb29rcy5vcGFjaXR5PXtnZXQ6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gTmEudGVzdCgoYiYmYS5jdXJyZW50U3R5bGU/YS5jdXJyZW50U3R5bGUuZmlsdGVyOmEuc3R5bGUuZmlsdGVyKXx8IiIpPy4wMSpwYXJzZUZsb2F0KFJlZ0V4cC4kMSkrIiI6Yj8iMSI6IiJ9LHNldDpmdW5jdGlvbihhLGIpe3ZhciBjPWEuc3R5bGUsZD1hLmN1cnJlbnRTdHlsZSxlPW0uaXNOdW1lcmljKGIpPyJhbHBoYShvcGFjaXR5PSIrMTAwKmIrIikiOiIiLGY9ZCYmZC5maWx0ZXJ8fGMuZmlsdGVyfHwiIjtjLnpvb209MSwoYj49MXx8IiI9PT1iKSYmIiI9PT1tLnRyaW0oZi5yZXBsYWNlKE1hLCIiKSkmJmMucmVtb3ZlQXR0cmlidXRlJiYoYy5yZW1vdmVBdHRyaWJ1dGUoImZpbHRlciIpLCIiPT09Ynx8ZCYmIWQuZmlsdGVyKXx8KGMuZmlsdGVyPU1hLnRlc3QoZik/Zi5yZXBsYWNlKE1hLGUpOmYrIiAiK2UpfX0pLG0uY3NzSG9va3MubWFyZ2luUmlnaHQ9TGEoay5yZWxpYWJsZU1hcmdpblJpZ2h0LGZ1bmN0aW9uKGEsYil7cmV0dXJuIGI/bS5zd2FwKGEse2Rpc3BsYXk6ImlubGluZS1ibG9jayJ9LEphLFthLCJtYXJnaW5SaWdodCJdKTp2b2lkIDB9KSxtLmVhY2goe21hcmdpbjoiIixwYWRkaW5nOiIiLGJvcmRlcjoiV2lkdGgifSxmdW5jdGlvbihhLGIpe20uY3NzSG9va3NbYStiXT17ZXhwYW5kOmZ1bmN0aW9uKGMpe2Zvcih2YXIgZD0wLGU9e30sZj0ic3RyaW5nIj09dHlwZW9mIGM/Yy5zcGxpdCgiICIpOltjXTs0PmQ7ZCsrKWVbYStUW2RdK2JdPWZbZF18fGZbZC0yXXx8ZlswXTtyZXR1cm4gZX19LEdhLnRlc3QoYSl8fChtLmNzc0hvb2tzW2ErYl0uc2V0PVdhKX0pLG0uZm4uZXh0ZW5kKHtjc3M6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gVih0aGlzLGZ1bmN0aW9uKGEsYixjKXt2YXIgZCxlLGY9e30sZz0wO2lmKG0uaXNBcnJheShiKSl7Zm9yKGQ9SWEoYSksZT1iLmxlbmd0aDtlPmc7ZysrKWZbYltnXV09bS5jc3MoYSxiW2ddLCExLGQpO3JldHVybiBmfXJldHVybiB2b2lkIDAhPT1jP20uc3R5bGUoYSxiLGMpOm0uY3NzKGEsYil9LGEsYixhcmd1bWVudHMubGVuZ3RoPjEpfSxzaG93OmZ1bmN0aW9uKCl7cmV0dXJuIFZhKHRoaXMsITApfSxoaWRlOmZ1bmN0aW9uKCl7cmV0dXJuIFZhKHRoaXMpfSx0b2dnbGU6ZnVuY3Rpb24oYSl7cmV0dXJuImJvb2xlYW4iPT10eXBlb2YgYT9hP3RoaXMuc2hvdygpOnRoaXMuaGlkZSgpOnRoaXMuZWFjaChmdW5jdGlvbigpe1UodGhpcyk/bSh0aGlzKS5zaG93KCk6bSh0aGlzKS5oaWRlKCl9KX19KTtmdW5jdGlvbiBaYShhLGIsYyxkLGUpewpyZXR1cm4gbmV3IFphLnByb3RvdHlwZS5pbml0KGEsYixjLGQsZSl9bS5Ud2Vlbj1aYSxaYS5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOlphLGluaXQ6ZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3RoaXMuZWxlbT1hLHRoaXMucHJvcD1jLHRoaXMuZWFzaW5nPWV8fCJzd2luZyIsdGhpcy5vcHRpb25zPWIsdGhpcy5zdGFydD10aGlzLm5vdz10aGlzLmN1cigpLHRoaXMuZW5kPWQsdGhpcy51bml0PWZ8fChtLmNzc051bWJlcltjXT8iIjoicHgiKX0sY3VyOmZ1bmN0aW9uKCl7dmFyIGE9WmEucHJvcEhvb2tzW3RoaXMucHJvcF07cmV0dXJuIGEmJmEuZ2V0P2EuZ2V0KHRoaXMpOlphLnByb3BIb29rcy5fZGVmYXVsdC5nZXQodGhpcyl9LHJ1bjpmdW5jdGlvbihhKXt2YXIgYixjPVphLnByb3BIb29rc1t0aGlzLnByb3BdO3JldHVybiB0aGlzLm9wdGlvbnMuZHVyYXRpb24/dGhpcy5wb3M9Yj1tLmVhc2luZ1t0aGlzLmVhc2luZ10oYSx0aGlzLm9wdGlvbnMuZHVyYXRpb24qYSwwLDEsdGhpcy5vcHRpb25zLmR1cmF0aW9uKTp0aGlzLnBvcz1iPWEsdGhpcy5ub3c9KHRoaXMuZW5kLXRoaXMuc3RhcnQpKmIrdGhpcy5zdGFydCx0aGlzLm9wdGlvbnMuc3RlcCYmdGhpcy5vcHRpb25zLnN0ZXAuY2FsbCh0aGlzLmVsZW0sdGhpcy5ub3csdGhpcyksYyYmYy5zZXQ/Yy5zZXQodGhpcyk6WmEucHJvcEhvb2tzLl9kZWZhdWx0LnNldCh0aGlzKSx0aGlzfX0sWmEucHJvdG90eXBlLmluaXQucHJvdG90eXBlPVphLnByb3RvdHlwZSxaYS5wcm9wSG9va3M9e19kZWZhdWx0OntnZXQ6ZnVuY3Rpb24oYSl7dmFyIGI7cmV0dXJuIG51bGw9PWEuZWxlbVthLnByb3BdfHxhLmVsZW0uc3R5bGUmJm51bGwhPWEuZWxlbS5zdHlsZVthLnByb3BdPyhiPW0uY3NzKGEuZWxlbSxhLnByb3AsIiIpLGImJiJhdXRvIiE9PWI/YjowKTphLmVsZW1bYS5wcm9wXX0sc2V0OmZ1bmN0aW9uKGEpe20uZnguc3RlcFthLnByb3BdP20uZnguc3RlcFthLnByb3BdKGEpOmEuZWxlbS5zdHlsZSYmKG51bGwhPWEuZWxlbS5zdHlsZVttLmNzc1Byb3BzW2EucHJvcF1dfHxtLmNzc0hvb2tzW2EucHJvcF0pP20uc3R5bGUoYS5lbGVtLGEucHJvcCxhLm5vdythLnVuaXQpOmEuZWxlbVthLnByb3BdPWEubm93fX19LFphLnByb3BIb29rcy5zY3JvbGxUb3A9WmEucHJvcEhvb2tzLnNjcm9sbExlZnQ9e3NldDpmdW5jdGlvbihhKXthLmVsZW0ubm9kZVR5cGUmJmEuZWxlbS5wYXJlbnROb2RlJiYoYS5lbGVtW2EucHJvcF09YS5ub3cpfX0sbS5lYXNpbmc9e2xpbmVhcjpmdW5jdGlvbihhKXtyZXR1cm4gYX0sc3dpbmc6ZnVuY3Rpb24oYSl7cmV0dXJuLjUtTWF0aC5jb3MoYSpNYXRoLlBJKS8yfX0sbS5meD1aYS5wcm90b3R5cGUuaW5pdCxtLmZ4LnN0ZXA9e307dmFyICRhLF9hLGFiPS9eKD86dG9nZ2xlfHNob3d8aGlkZSkkLyxiYj1uZXcgUmVnRXhwKCJeKD86KFsrLV0pPXwpKCIrUysiKShbYS16JV0qKSQiLCJpIiksY2I9L3F1ZXVlSG9va3MkLyxkYj1baWJdLGViPXsiKiI6W2Z1bmN0aW9uKGEsYil7dmFyIGM9dGhpcy5jcmVhdGVUd2VlbihhLGIpLGQ9Yy5jdXIoKSxlPWJiLmV4ZWMoYiksZj1lJiZlWzNdfHwobS5jc3NOdW1iZXJbYV0/IiI6InB4IiksZz0obS5jc3NOdW1iZXJbYV18fCJweCIhPT1mJiYrZCkmJmJiLmV4ZWMobS5jc3MoYy5lbGVtLGEpKSxoPTEsaT0yMDtpZihnJiZnWzNdIT09Zil7Zj1mfHxnWzNdLGU9ZXx8W10sZz0rZHx8MTtkbyBoPWh8fCIuNSIsZy89aCxtLnN0eWxlKGMuZWxlbSxhLGcrZik7d2hpbGUoaCE9PShoPWMuY3VyKCkvZCkmJjEhPT1oJiYtLWkpfXJldHVybiBlJiYoZz1jLnN0YXJ0PStnfHwrZHx8MCxjLnVuaXQ9ZixjLmVuZD1lWzFdP2crKGVbMV0rMSkqZVsyXTorZVsyXSksY31dfTtmdW5jdGlvbiBmYigpe3JldHVybiBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7JGE9dm9pZCAwfSksJGE9bS5ub3coKX1mdW5jdGlvbiBnYihhLGIpe3ZhciBjLGQ9e2hlaWdodDphfSxlPTA7Zm9yKGI9Yj8xOjA7ND5lO2UrPTItYiljPVRbZV0sZFsibWFyZ2luIitjXT1kWyJwYWRkaW5nIitjXT1hO3JldHVybiBiJiYoZC5vcGFjaXR5PWQud2lkdGg9YSksZH1mdW5jdGlvbiBoYihhLGIsYyl7Zm9yKHZhciBkLGU9KGViW2JdfHxbXSkuY29uY2F0KGViWyIqIl0pLGY9MCxnPWUubGVuZ3RoO2c+ZjtmKyspaWYoZD1lW2ZdLmNhbGwoYyxiLGEpKXJldHVybiBkfWZ1bmN0aW9uIGliKGEsYixjKXt2YXIgZCxlLGYsZyxoLGksaixsLG49dGhpcyxvPXt9LHA9YS5zdHlsZSxxPWEubm9kZVR5cGUmJlUoYSkscj1tLl9kYXRhKGEsImZ4c2hvdyIpO2MucXVldWV8fChoPW0uX3F1ZXVlSG9va3MoYSwiZngiKSxudWxsPT1oLnVucXVldWVkJiYoaC51bnF1ZXVlZD0wLGk9aC5lbXB0eS5maXJlLGguZW1wdHkuZmlyZT1mdW5jdGlvbigpe2gudW5xdWV1ZWR8fGkoKX0pLGgudW5xdWV1ZWQrKyxuLmFsd2F5cyhmdW5jdGlvbigpe24uYWx3YXlzKGZ1bmN0aW9uKCl7aC51bnF1ZXVlZC0tLG0ucXVldWUoYSwiZngiKS5sZW5ndGh8fGguZW1wdHkuZmlyZSgpfSl9KSksMT09PWEubm9kZVR5cGUmJigiaGVpZ2h0ImluIGJ8fCJ3aWR0aCJpbiBiKSYmKGMub3ZlcmZsb3c9W3Aub3ZlcmZsb3cscC5vdmVyZmxvd1gscC5vdmVyZmxvd1ldLGo9bS5jc3MoYSwiZGlzcGxheSIpLGw9Im5vbmUiPT09aj9tLl9kYXRhKGEsIm9sZGRpc3BsYXkiKXx8RmEoYS5ub2RlTmFtZSk6aiwiaW5saW5lIj09PWwmJiJub25lIj09PW0uY3NzKGEsImZsb2F0IikmJihrLmlubGluZUJsb2NrTmVlZHNMYXlvdXQmJiJpbmxpbmUiIT09RmEoYS5ub2RlTmFtZSk/cC56b29tPTE6cC5kaXNwbGF5PSJpbmxpbmUtYmxvY2siKSksYy5vdmVyZmxvdyYmKHAub3ZlcmZsb3c9ImhpZGRlbiIsay5zaHJpbmtXcmFwQmxvY2tzKCl8fG4uYWx3YXlzKGZ1bmN0aW9uKCl7cC5vdmVyZmxvdz1jLm92ZXJmbG93WzBdLHAub3ZlcmZsb3dYPWMub3ZlcmZsb3dbMV0scC5vdmVyZmxvd1k9Yy5vdmVyZmxvd1syXX0pKTtmb3IoZCBpbiBiKWlmKGU9YltkXSxhYi5leGVjKGUpKXtpZihkZWxldGUgYltkXSxmPWZ8fCJ0b2dnbGUiPT09ZSxlPT09KHE/ImhpZGUiOiJzaG93Iikpe2lmKCJzaG93IiE9PWV8fCFyfHx2b2lkIDA9PT1yW2RdKWNvbnRpbnVlO3E9ITB9b1tkXT1yJiZyW2RdfHxtLnN0eWxlKGEsZCl9ZWxzZSBqPXZvaWQgMDtpZihtLmlzRW1wdHlPYmplY3QobykpImlubGluZSI9PT0oIm5vbmUiPT09aj9GYShhLm5vZGVOYW1lKTpqKSYmKHAuZGlzcGxheT1qKTtlbHNle3I/ImhpZGRlbiJpbiByJiYocT1yLmhpZGRlbik6cj1tLl9kYXRhKGEsImZ4c2hvdyIse30pLGYmJihyLmhpZGRlbj0hcSkscT9tKGEpLnNob3coKTpuLmRvbmUoZnVuY3Rpb24oKXttKGEpLmhpZGUoKX0pLG4uZG9uZShmdW5jdGlvbigpe3ZhciBiO20uX3JlbW92ZURhdGEoYSwiZnhzaG93Iik7Zm9yKGIgaW4gbyltLnN0eWxlKGEsYixvW2JdKX0pO2ZvcihkIGluIG8pZz1oYihxP3JbZF06MCxkLG4pLGQgaW4gcnx8KHJbZF09Zy5zdGFydCxxJiYoZy5lbmQ9Zy5zdGFydCxnLnN0YXJ0PSJ3aWR0aCI9PT1kfHwiaGVpZ2h0Ij09PWQ/MTowKSl9fWZ1bmN0aW9uIGpiKGEsYil7dmFyIGMsZCxlLGYsZztmb3IoYyBpbiBhKWlmKGQ9bS5jYW1lbENhc2UoYyksZT1iW2RdLGY9YVtjXSxtLmlzQXJyYXkoZikmJihlPWZbMV0sZj1hW2NdPWZbMF0pLGMhPT1kJiYoYVtkXT1mLGRlbGV0ZSBhW2NdKSxnPW0uY3NzSG9va3NbZF0sZyYmImV4cGFuZCJpbiBnKXtmPWcuZXhwYW5kKGYpLGRlbGV0ZSBhW2RdO2ZvcihjIGluIGYpYyBpbiBhfHwoYVtjXT1mW2NdLGJbY109ZSl9ZWxzZSBiW2RdPWV9ZnVuY3Rpb24ga2IoYSxiLGMpe3ZhciBkLGUsZj0wLGc9ZGIubGVuZ3RoLGg9bS5EZWZlcnJlZCgpLmFsd2F5cyhmdW5jdGlvbigpe2RlbGV0ZSBpLmVsZW19KSxpPWZ1bmN0aW9uKCl7aWYoZSlyZXR1cm4hMTtmb3IodmFyIGI9JGF8fGZiKCksYz1NYXRoLm1heCgwLGouc3RhcnRUaW1lK2ouZHVyYXRpb24tYiksZD1jL2ouZHVyYXRpb258fDAsZj0xLWQsZz0wLGk9ai50d2VlbnMubGVuZ3RoO2k+ZztnKyspai50d2VlbnNbZ10ucnVuKGYpO3JldHVybiBoLm5vdGlmeVdpdGgoYSxbaixmLGNdKSwxPmYmJmk/YzooaC5yZXNvbHZlV2l0aChhLFtqXSksITEpfSxqPWgucHJvbWlzZSh7ZWxlbTphLHByb3BzOm0uZXh0ZW5kKHt9LGIpLG9wdHM6bS5leHRlbmQoITAse3NwZWNpYWxFYXNpbmc6e319LGMpLG9yaWdpbmFsUHJvcGVydGllczpiLG9yaWdpbmFsT3B0aW9uczpjLHN0YXJ0VGltZTokYXx8ZmIoKSxkdXJhdGlvbjpjLmR1cmF0aW9uLHR3ZWVuczpbXSxjcmVhdGVUd2VlbjpmdW5jdGlvbihiLGMpe3ZhciBkPW0uVHdlZW4oYSxqLm9wdHMsYixjLGoub3B0cy5zcGVjaWFsRWFzaW5nW2JdfHxqLm9wdHMuZWFzaW5nKTtyZXR1cm4gai50d2VlbnMucHVzaChkKSxkfSxzdG9wOmZ1bmN0aW9uKGIpe3ZhciBjPTAsZD1iP2oudHdlZW5zLmxlbmd0aDowO2lmKGUpcmV0dXJuIHRoaXM7Zm9yKGU9ITA7ZD5jO2MrKylqLnR3ZWVuc1tjXS5ydW4oMSk7cmV0dXJuIGI/aC5yZXNvbHZlV2l0aChhLFtqLGJdKTpoLnJlamVjdFdpdGgoYSxbaixiXSksdGhpc319KSxrPWoucHJvcHM7Zm9yKGpiKGssai5vcHRzLnNwZWNpYWxFYXNpbmcpO2c+ZjtmKyspaWYoZD1kYltmXS5jYWxsKGosYSxrLGoub3B0cykpcmV0dXJuIGQ7cmV0dXJuIG0ubWFwKGssaGIsaiksbS5pc0Z1bmN0aW9uKGoub3B0cy5zdGFydCkmJmoub3B0cy5zdGFydC5jYWxsKGEsaiksbS5meC50aW1lcihtLmV4dGVuZChpLHtlbGVtOmEsYW5pbTpqLHF1ZXVlOmoub3B0cy5xdWV1ZX0pKSxqLnByb2dyZXNzKGoub3B0cy5wcm9ncmVzcykuZG9uZShqLm9wdHMuZG9uZSxqLm9wdHMuY29tcGxldGUpLmZhaWwoai5vcHRzLmZhaWwpLmFsd2F5cyhqLm9wdHMuYWx3YXlzKX1tLkFuaW1hdGlvbj1tLmV4dGVuZChrYix7dHdlZW5lcjpmdW5jdGlvbihhLGIpe20uaXNGdW5jdGlvbihhKT8oYj1hLGE9WyIqIl0pOmE9YS5zcGxpdCgiICIpO2Zvcih2YXIgYyxkPTAsZT1hLmxlbmd0aDtlPmQ7ZCsrKWM9YVtkXSxlYltjXT1lYltjXXx8W10sZWJbY10udW5zaGlmdChiKX0scHJlZmlsdGVyOmZ1bmN0aW9uKGEsYil7Yj9kYi51bnNoaWZ0KGEpOmRiLnB1c2goYSl9fSksbS5zcGVlZD1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSYmIm9iamVjdCI9PXR5cGVvZiBhP20uZXh0ZW5kKHt9LGEpOntjb21wbGV0ZTpjfHwhYyYmYnx8bS5pc0Z1bmN0aW9uKGEpJiZhLGR1cmF0aW9uOmEsZWFzaW5nOmMmJmJ8fGImJiFtLmlzRnVuY3Rpb24oYikmJmJ9O3JldHVybiBkLmR1cmF0aW9uPW0uZngub2ZmPzA6Im51bWJlciI9PXR5cGVvZiBkLmR1cmF0aW9uP2QuZHVyYXRpb246ZC5kdXJhdGlvbiBpbiBtLmZ4LnNwZWVkcz9tLmZ4LnNwZWVkc1tkLmR1cmF0aW9uXTptLmZ4LnNwZWVkcy5fZGVmYXVsdCwobnVsbD09ZC5xdWV1ZXx8ZC5xdWV1ZT09PSEwKSYmKGQucXVldWU9ImZ4IiksZC5vbGQ9ZC5jb21wbGV0ZSxkLmNvbXBsZXRlPWZ1bmN0aW9uKCl7bS5pc0Z1bmN0aW9uKGQub2xkKSYmZC5vbGQuY2FsbCh0aGlzKSxkLnF1ZXVlJiZtLmRlcXVldWUodGhpcyxkLnF1ZXVlKX0sZH0sbS5mbi5leHRlbmQoe2ZhZGVUbzpmdW5jdGlvbihhLGIsYyxkKXtyZXR1cm4gdGhpcy5maWx0ZXIoVSkuY3NzKCJvcGFjaXR5IiwwKS5zaG93KCkuZW5kKCkuYW5pbWF0ZSh7b3BhY2l0eTpifSxhLGMsZCl9LGFuaW1hdGU6ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9bS5pc0VtcHR5T2JqZWN0KGEpLGY9bS5zcGVlZChiLGMsZCksZz1mdW5jdGlvbigpe3ZhciBiPWtiKHRoaXMsbS5leHRlbmQoe30sYSksZik7KGV8fG0uX2RhdGEodGhpcywiZmluaXNoIikpJiZiLnN0b3AoITApfTtyZXR1cm4gZy5maW5pc2g9ZyxlfHxmLnF1ZXVlPT09ITE/dGhpcy5lYWNoKGcpOnRoaXMucXVldWUoZi5xdWV1ZSxnKX0sc3RvcDpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9ZnVuY3Rpb24oYSl7dmFyIGI9YS5zdG9wO2RlbGV0ZSBhLnN0b3AsYihjKX07cmV0dXJuInN0cmluZyIhPXR5cGVvZiBhJiYoYz1iLGI9YSxhPXZvaWQgMCksYiYmYSE9PSExJiZ0aGlzLnF1ZXVlKGF8fCJmeCIsW10pLHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBiPSEwLGU9bnVsbCE9YSYmYSsicXVldWVIb29rcyIsZj1tLnRpbWVycyxnPW0uX2RhdGEodGhpcyk7aWYoZSlnW2VdJiZnW2VdLnN0b3AmJmQoZ1tlXSk7ZWxzZSBmb3IoZSBpbiBnKWdbZV0mJmdbZV0uc3RvcCYmY2IudGVzdChlKSYmZChnW2VdKTtmb3IoZT1mLmxlbmd0aDtlLS07KWZbZV0uZWxlbSE9PXRoaXN8fG51bGwhPWEmJmZbZV0ucXVldWUhPT1hfHwoZltlXS5hbmltLnN0b3AoYyksYj0hMSxmLnNwbGljZShlLDEpKTsoYnx8IWMpJiZtLmRlcXVldWUodGhpcyxhKX0pfSxmaW5pc2g6ZnVuY3Rpb24oYSl7cmV0dXJuIGEhPT0hMSYmKGE9YXx8ImZ4IiksdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGIsYz1tLl9kYXRhKHRoaXMpLGQ9Y1thKyJxdWV1ZSJdLGU9Y1thKyJxdWV1ZUhvb2tzIl0sZj1tLnRpbWVycyxnPWQ/ZC5sZW5ndGg6MDtmb3IoYy5maW5pc2g9ITAsbS5xdWV1ZSh0aGlzLGEsW10pLGUmJmUuc3RvcCYmZS5zdG9wLmNhbGwodGhpcywhMCksYj1mLmxlbmd0aDtiLS07KWZbYl0uZWxlbT09PXRoaXMmJmZbYl0ucXVldWU9PT1hJiYoZltiXS5hbmltLnN0b3AoITApLGYuc3BsaWNlKGIsMSkpO2ZvcihiPTA7Zz5iO2IrKylkW2JdJiZkW2JdLmZpbmlzaCYmZFtiXS5maW5pc2guY2FsbCh0aGlzKTtkZWxldGUgYy5maW5pc2h9KX19KSxtLmVhY2goWyJ0b2dnbGUiLCJzaG93IiwiaGlkZSJdLGZ1bmN0aW9uKGEsYil7dmFyIGM9bS5mbltiXTttLmZuW2JdPWZ1bmN0aW9uKGEsZCxlKXtyZXR1cm4gbnVsbD09YXx8ImJvb2xlYW4iPT10eXBlb2YgYT9jLmFwcGx5KHRoaXMsYXJndW1lbnRzKTp0aGlzLmFuaW1hdGUoZ2IoYiwhMCksYSxkLGUpfX0pLG0uZWFjaCh7c2xpZGVEb3duOmdiKCJzaG93Iiksc2xpZGVVcDpnYigiaGlkZSIpLHNsaWRlVG9nZ2xlOmdiKCJ0b2dnbGUiKSxmYWRlSW46e29wYWNpdHk6InNob3cifSxmYWRlT3V0OntvcGFjaXR5OiJoaWRlIn0sZmFkZVRvZ2dsZTp7b3BhY2l0eToidG9nZ2xlIn19LGZ1bmN0aW9uKGEsYil7bS5mblthXT1mdW5jdGlvbihhLGMsZCl7cmV0dXJuIHRoaXMuYW5pbWF0ZShiLGEsYyxkKX19KSxtLnRpbWVycz1bXSxtLmZ4LnRpY2s9ZnVuY3Rpb24oKXt2YXIgYSxiPW0udGltZXJzLGM9MDtmb3IoJGE9bS5ub3coKTtjPGIubGVuZ3RoO2MrKylhPWJbY10sYSgpfHxiW2NdIT09YXx8Yi5zcGxpY2UoYy0tLDEpO2IubGVuZ3RofHxtLmZ4LnN0b3AoKSwkYT12b2lkIDB9LG0uZngudGltZXI9ZnVuY3Rpb24oYSl7bS50aW1lcnMucHVzaChhKSxhKCk/bS5meC5zdGFydCgpOm0udGltZXJzLnBvcCgpfSxtLmZ4LmludGVydmFsPTEzLG0uZnguc3RhcnQ9ZnVuY3Rpb24oKXtfYXx8KF9hPXNldEludGVydmFsKG0uZngudGljayxtLmZ4LmludGVydmFsKSl9LG0uZnguc3RvcD1mdW5jdGlvbigpe2NsZWFySW50ZXJ2YWwoX2EpLF9hPW51bGx9LG0uZnguc3BlZWRzPXtzbG93OjYwMCxmYXN0OjIwMCxfZGVmYXVsdDo0MDB9LG0uZm4uZGVsYXk9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYT1tLmZ4P20uZnguc3BlZWRzW2FdfHxhOmEsYj1ifHwiZngiLHRoaXMucXVldWUoYixmdW5jdGlvbihiLGMpe3ZhciBkPXNldFRpbWVvdXQoYixhKTtjLnN0b3A9ZnVuY3Rpb24oKXtjbGVhclRpbWVvdXQoZCl9fSl9LGZ1bmN0aW9uKCl7dmFyIGEsYixjLGQsZTtiPXkuY3JlYXRlRWxlbWVudCgiZGl2IiksYi5zZXRBdHRyaWJ1dGUoImNsYXNzTmFtZSIsInQiKSxiLmlubmVySFRNTD0iICA8bGluay8+PHRhYmxlPjwvdGFibGU+PGEgaHJlZj0nL2EnPmE8L2E+PGlucHV0IHR5cGU9J2NoZWNrYm94Jy8+IixkPWIuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImEiKVswXSxjPXkuY3JlYXRlRWxlbWVudCgic2VsZWN0IiksZT1jLmFwcGVuZENoaWxkKHkuY3JlYXRlRWxlbWVudCgib3B0aW9uIikpLGE9Yi5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaW5wdXQiKVswXSxkLnN0eWxlLmNzc1RleHQ9InRvcDoxcHgiLGsuZ2V0U2V0QXR0cmlidXRlPSJ0IiE9PWIuY2xhc3NOYW1lLGsuc3R5bGU9L3RvcC8udGVzdChkLmdldEF0dHJpYnV0ZSgic3R5bGUiKSksay5ocmVmTm9ybWFsaXplZD0iL2EiPT09ZC5nZXRBdHRyaWJ1dGUoImhyZWYiKSxrLmNoZWNrT249ISFhLnZhbHVlLGsub3B0U2VsZWN0ZWQ9ZS5zZWxlY3RlZCxrLmVuY3R5cGU9ISF5LmNyZWF0ZUVsZW1lbnQoImZvcm0iKS5lbmN0eXBlLGMuZGlzYWJsZWQ9ITAsay5vcHREaXNhYmxlZD0hZS5kaXNhYmxlZCxhPXkuY3JlYXRlRWxlbWVudCgiaW5wdXQiKSxhLnNldEF0dHJpYnV0ZSgidmFsdWUiLCIiKSxrLmlucHV0PSIiPT09YS5nZXRBdHRyaWJ1dGUoInZhbHVlIiksYS52YWx1ZT0idCIsYS5zZXRBdHRyaWJ1dGUoInR5cGUiLCJyYWRpbyIpLGsucmFkaW9WYWx1ZT0idCI9PT1hLnZhbHVlfSgpO3ZhciBsYj0vXHIvZzttLmZuLmV4dGVuZCh7dmFsOmZ1bmN0aW9uKGEpe3ZhciBiLGMsZCxlPXRoaXNbMF07e2lmKGFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGQ9bS5pc0Z1bmN0aW9uKGEpLHRoaXMuZWFjaChmdW5jdGlvbihjKXt2YXIgZTsxPT09dGhpcy5ub2RlVHlwZSYmKGU9ZD9hLmNhbGwodGhpcyxjLG0odGhpcykudmFsKCkpOmEsbnVsbD09ZT9lPSIiOiJudW1iZXIiPT10eXBlb2YgZT9lKz0iIjptLmlzQXJyYXkoZSkmJihlPW0ubWFwKGUsZnVuY3Rpb24oYSl7cmV0dXJuIG51bGw9PWE/IiI6YSsiIn0pKSxiPW0udmFsSG9va3NbdGhpcy50eXBlXXx8bS52YWxIb29rc1t0aGlzLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCldLGImJiJzZXQiaW4gYiYmdm9pZCAwIT09Yi5zZXQodGhpcyxlLCJ2YWx1ZSIpfHwodGhpcy52YWx1ZT1lKSl9KTtpZihlKXJldHVybiBiPW0udmFsSG9va3NbZS50eXBlXXx8bS52YWxIb29rc1tlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCldLGImJiJnZXQiaW4gYiYmdm9pZCAwIT09KGM9Yi5nZXQoZSwidmFsdWUiKSk/YzooYz1lLnZhbHVlLCJzdHJpbmciPT10eXBlb2YgYz9jLnJlcGxhY2UobGIsIiIpOm51bGw9PWM/IiI6Yyl9fX0pLG0uZXh0ZW5kKHt2YWxIb29rczp7b3B0aW9uOntnZXQ6ZnVuY3Rpb24oYSl7dmFyIGI9bS5maW5kLmF0dHIoYSwidmFsdWUiKTtyZXR1cm4gbnVsbCE9Yj9iOm0udHJpbShtLnRleHQoYSkpfX0sc2VsZWN0OntnZXQ6ZnVuY3Rpb24oYSl7Zm9yKHZhciBiLGMsZD1hLm9wdGlvbnMsZT1hLnNlbGVjdGVkSW5kZXgsZj0ic2VsZWN0LW9uZSI9PT1hLnR5cGV8fDA+ZSxnPWY/bnVsbDpbXSxoPWY/ZSsxOmQubGVuZ3RoLGk9MD5lP2g6Zj9lOjA7aD5pO2krKylpZihjPWRbaV0sISghYy5zZWxlY3RlZCYmaSE9PWV8fChrLm9wdERpc2FibGVkP2MuZGlzYWJsZWQ6bnVsbCE9PWMuZ2V0QXR0cmlidXRlKCJkaXNhYmxlZCIpKXx8Yy5wYXJlbnROb2RlLmRpc2FibGVkJiZtLm5vZGVOYW1lKGMucGFyZW50Tm9kZSwib3B0Z3JvdXAiKSkpe2lmKGI9bShjKS52YWwoKSxmKXJldHVybiBiO2cucHVzaChiKX1yZXR1cm4gZ30sc2V0OmZ1bmN0aW9uKGEsYil7dmFyIGMsZCxlPWEub3B0aW9ucyxmPW0ubWFrZUFycmF5KGIpLGc9ZS5sZW5ndGg7d2hpbGUoZy0tKWlmKGQ9ZVtnXSxtLmluQXJyYXkobS52YWxIb29rcy5vcHRpb24uZ2V0KGQpLGYpPj0wKXRyeXtkLnNlbGVjdGVkPWM9ITB9Y2F0Y2goaCl7ZC5zY3JvbGxIZWlnaHR9ZWxzZSBkLnNlbGVjdGVkPSExO3JldHVybiBjfHwoYS5zZWxlY3RlZEluZGV4PS0xKSxlfX19fSksbS5lYWNoKFsicmFkaW8iLCJjaGVja2JveCJdLGZ1bmN0aW9uKCl7bS52YWxIb29rc1t0aGlzXT17c2V0OmZ1bmN0aW9uKGEsYil7cmV0dXJuIG0uaXNBcnJheShiKT9hLmNoZWNrZWQ9bS5pbkFycmF5KG0oYSkudmFsKCksYik+PTA6dm9pZCAwfX0say5jaGVja09ufHwobS52YWxIb29rc1t0aGlzXS5nZXQ9ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGw9PT1hLmdldEF0dHJpYnV0ZSgidmFsdWUiKT8ib24iOmEudmFsdWV9KX0pO3ZhciBtYixuYixvYj1tLmV4cHIuYXR0ckhhbmRsZSxwYj0vXig/OmNoZWNrZWR8c2VsZWN0ZWQpJC9pLHFiPWsuZ2V0U2V0QXR0cmlidXRlLHJiPWsuaW5wdXQ7bS5mbi5leHRlbmQoe2F0dHI6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gVih0aGlzLG0uYXR0cixhLGIsYXJndW1lbnRzLmxlbmd0aD4xKX0scmVtb3ZlQXR0cjpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7bS5yZW1vdmVBdHRyKHRoaXMsYSl9KX19KSxtLmV4dGVuZCh7YXR0cjpmdW5jdGlvbihhLGIsYyl7dmFyIGQsZSxmPWEubm9kZVR5cGU7aWYoYSYmMyE9PWYmJjghPT1mJiYyIT09ZilyZXR1cm4gdHlwZW9mIGEuZ2V0QXR0cmlidXRlPT09Sz9tLnByb3AoYSxiLGMpOigxPT09ZiYmbS5pc1hNTERvYyhhKXx8KGI9Yi50b0xvd2VyQ2FzZSgpLGQ9bS5hdHRySG9va3NbYl18fChtLmV4cHIubWF0Y2guYm9vbC50ZXN0KGIpP25iOm1iKSksdm9pZCAwPT09Yz9kJiYiZ2V0ImluIGQmJm51bGwhPT0oZT1kLmdldChhLGIpKT9lOihlPW0uZmluZC5hdHRyKGEsYiksbnVsbD09ZT92b2lkIDA6ZSk6bnVsbCE9PWM/ZCYmInNldCJpbiBkJiZ2b2lkIDAhPT0oZT1kLnNldChhLGMsYikpP2U6KGEuc2V0QXR0cmlidXRlKGIsYysiIiksYyk6dm9pZCBtLnJlbW92ZUF0dHIoYSxiKSl9LHJlbW92ZUF0dHI6ZnVuY3Rpb24oYSxiKXt2YXIgYyxkLGU9MCxmPWImJmIubWF0Y2goRSk7aWYoZiYmMT09PWEubm9kZVR5cGUpd2hpbGUoYz1mW2UrK10pZD1tLnByb3BGaXhbY118fGMsbS5leHByLm1hdGNoLmJvb2wudGVzdChjKT9yYiYmcWJ8fCFwYi50ZXN0KGMpP2FbZF09ITE6YVttLmNhbWVsQ2FzZSgiZGVmYXVsdC0iK2MpXT1hW2RdPSExOm0uYXR0cihhLGMsIiIpLGEucmVtb3ZlQXR0cmlidXRlKHFiP2M6ZCl9LGF0dHJIb29rczp7dHlwZTp7c2V0OmZ1bmN0aW9uKGEsYil7aWYoIWsucmFkaW9WYWx1ZSYmInJhZGlvIj09PWImJm0ubm9kZU5hbWUoYSwiaW5wdXQiKSl7dmFyIGM9YS52YWx1ZTtyZXR1cm4gYS5zZXRBdHRyaWJ1dGUoInR5cGUiLGIpLGMmJihhLnZhbHVlPWMpLGJ9fX19fSksbmI9e3NldDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGI9PT0hMT9tLnJlbW92ZUF0dHIoYSxjKTpyYiYmcWJ8fCFwYi50ZXN0KGMpP2Euc2V0QXR0cmlidXRlKCFxYiYmbS5wcm9wRml4W2NdfHxjLGMpOmFbbS5jYW1lbENhc2UoImRlZmF1bHQtIitjKV09YVtjXT0hMCxjfX0sbS5lYWNoKG0uZXhwci5tYXRjaC5ib29sLnNvdXJjZS5tYXRjaCgvXHcrL2cpLGZ1bmN0aW9uKGEsYil7dmFyIGM9b2JbYl18fG0uZmluZC5hdHRyO29iW2JdPXJiJiZxYnx8IXBiLnRlc3QoYik/ZnVuY3Rpb24oYSxiLGQpe3ZhciBlLGY7cmV0dXJuIGR8fChmPW9iW2JdLG9iW2JdPWUsZT1udWxsIT1jKGEsYixkKT9iLnRvTG93ZXJDYXNlKCk6bnVsbCxvYltiXT1mKSxlfTpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGM/dm9pZCAwOmFbbS5jYW1lbENhc2UoImRlZmF1bHQtIitiKV0/Yi50b0xvd2VyQ2FzZSgpOm51bGx9fSkscmImJnFifHwobS5hdHRySG9va3MudmFsdWU9e3NldDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIG0ubm9kZU5hbWUoYSwiaW5wdXQiKT92b2lkKGEuZGVmYXVsdFZhbHVlPWIpOm1iJiZtYi5zZXQoYSxiLGMpfX0pLHFifHwobWI9e3NldDpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YS5nZXRBdHRyaWJ1dGVOb2RlKGMpO3JldHVybiBkfHxhLnNldEF0dHJpYnV0ZU5vZGUoZD1hLm93bmVyRG9jdW1lbnQuY3JlYXRlQXR0cmlidXRlKGMpKSxkLnZhbHVlPWIrPSIiLCJ2YWx1ZSI9PT1jfHxiPT09YS5nZXRBdHRyaWJ1dGUoYyk/Yjp2b2lkIDB9fSxvYi5pZD1vYi5uYW1lPW9iLmNvb3Jkcz1mdW5jdGlvbihhLGIsYyl7dmFyIGQ7cmV0dXJuIGM/dm9pZCAwOihkPWEuZ2V0QXR0cmlidXRlTm9kZShiKSkmJiIiIT09ZC52YWx1ZT9kLnZhbHVlOm51bGx9LG0udmFsSG9va3MuYnV0dG9uPXtnZXQ6ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLmdldEF0dHJpYnV0ZU5vZGUoYik7cmV0dXJuIGMmJmMuc3BlY2lmaWVkP2MudmFsdWU6dm9pZCAwfSxzZXQ6bWIuc2V0fSxtLmF0dHJIb29rcy5jb250ZW50ZWRpdGFibGU9e3NldDpmdW5jdGlvbihhLGIsYyl7bWIuc2V0KGEsIiI9PT1iPyExOmIsYyl9fSxtLmVhY2goWyJ3aWR0aCIsImhlaWdodCJdLGZ1bmN0aW9uKGEsYil7bS5hdHRySG9va3NbYl09e3NldDpmdW5jdGlvbihhLGMpe3JldHVybiIiPT09Yz8oYS5zZXRBdHRyaWJ1dGUoYiwiYXV0byIpLGMpOnZvaWQgMH19fSkpLGsuc3R5bGV8fChtLmF0dHJIb29rcy5zdHlsZT17Z2V0OmZ1bmN0aW9uKGEpe3JldHVybiBhLnN0eWxlLmNzc1RleHR8fHZvaWQgMH0sc2V0OmZ1bmN0aW9uKGEsYil7cmV0dXJuIGEuc3R5bGUuY3NzVGV4dD1iKyIifX0pO3ZhciBzYj0vXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYXxidXR0b258b2JqZWN0KSQvaSx0Yj0vXig/OmF8YXJlYSkkL2k7bS5mbi5leHRlbmQoe3Byb3A6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gVih0aGlzLG0ucHJvcCxhLGIsYXJndW1lbnRzLmxlbmd0aD4xKX0scmVtb3ZlUHJvcDpmdW5jdGlvbihhKXtyZXR1cm4gYT1tLnByb3BGaXhbYV18fGEsdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dHJ5e3RoaXNbYV09dm9pZCAwLGRlbGV0ZSB0aGlzW2FdfWNhdGNoKGIpe319KX19KSxtLmV4dGVuZCh7cHJvcEZpeDp7ImZvciI6Imh0bWxGb3IiLCJjbGFzcyI6ImNsYXNzTmFtZSJ9LHByb3A6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGUsZixnPWEubm9kZVR5cGU7aWYoYSYmMyE9PWcmJjghPT1nJiYyIT09ZylyZXR1cm4gZj0xIT09Z3x8IW0uaXNYTUxEb2MoYSksZiYmKGI9bS5wcm9wRml4W2JdfHxiLGU9bS5wcm9wSG9va3NbYl0pLHZvaWQgMCE9PWM/ZSYmInNldCJpbiBlJiZ2b2lkIDAhPT0oZD1lLnNldChhLGMsYikpP2Q6YVtiXT1jOmUmJiJnZXQiaW4gZSYmbnVsbCE9PShkPWUuZ2V0KGEsYikpP2Q6YVtiXX0scHJvcEhvb2tzOnt0YWJJbmRleDp7Z2V0OmZ1bmN0aW9uKGEpe3ZhciBiPW0uZmluZC5hdHRyKGEsInRhYmluZGV4Iik7cmV0dXJuIGI/cGFyc2VJbnQoYiwxMCk6c2IudGVzdChhLm5vZGVOYW1lKXx8dGIudGVzdChhLm5vZGVOYW1lKSYmYS5ocmVmPzA6LTF9fX19KSxrLmhyZWZOb3JtYWxpemVkfHxtLmVhY2goWyJocmVmIiwic3JjIl0sZnVuY3Rpb24oYSxiKXttLnByb3BIb29rc1tiXT17Z2V0OmZ1bmN0aW9uKGEpe3JldHVybiBhLmdldEF0dHJpYnV0ZShiLDQpfX19KSxrLm9wdFNlbGVjdGVkfHwobS5wcm9wSG9va3Muc2VsZWN0ZWQ9e2dldDpmdW5jdGlvbihhKXt2YXIgYj1hLnBhcmVudE5vZGU7cmV0dXJuIGImJihiLnNlbGVjdGVkSW5kZXgsYi5wYXJlbnROb2RlJiZiLnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleCksbnVsbH19KSxtLmVhY2goWyJ0YWJJbmRleCIsInJlYWRPbmx5IiwibWF4TGVuZ3RoIiwiY2VsbFNwYWNpbmciLCJjZWxsUGFkZGluZyIsInJvd1NwYW4iLCJjb2xTcGFuIiwidXNlTWFwIiwiZnJhbWVCb3JkZXIiLCJjb250ZW50RWRpdGFibGUiXSxmdW5jdGlvbigpe20ucHJvcEZpeFt0aGlzLnRvTG93ZXJDYXNlKCldPXRoaXN9KSxrLmVuY3R5cGV8fChtLnByb3BGaXguZW5jdHlwZT0iZW5jb2RpbmciKTt2YXIgdWI9L1tcdFxyXG5cZl0vZzttLmZuLmV4dGVuZCh7YWRkQ2xhc3M6ZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGUsZixnLGg9MCxpPXRoaXMubGVuZ3RoLGo9InN0cmluZyI9PXR5cGVvZiBhJiZhO2lmKG0uaXNGdW5jdGlvbihhKSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGIpe20odGhpcykuYWRkQ2xhc3MoYS5jYWxsKHRoaXMsYix0aGlzLmNsYXNzTmFtZSkpfSk7aWYoailmb3IoYj0oYXx8IiIpLm1hdGNoKEUpfHxbXTtpPmg7aCsrKWlmKGM9dGhpc1toXSxkPTE9PT1jLm5vZGVUeXBlJiYoYy5jbGFzc05hbWU/KCIgIitjLmNsYXNzTmFtZSsiICIpLnJlcGxhY2UodWIsIiAiKToiICIpKXtmPTA7d2hpbGUoZT1iW2YrK10pZC5pbmRleE9mKCIgIitlKyIgIik8MCYmKGQrPWUrIiAiKTtnPW0udHJpbShkKSxjLmNsYXNzTmFtZSE9PWcmJihjLmNsYXNzTmFtZT1nKX1yZXR1cm4gdGhpc30scmVtb3ZlQ2xhc3M6ZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGUsZixnLGg9MCxpPXRoaXMubGVuZ3RoLGo9MD09PWFyZ3VtZW50cy5sZW5ndGh8fCJzdHJpbmciPT10eXBlb2YgYSYmYTtpZihtLmlzRnVuY3Rpb24oYSkpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihiKXttKHRoaXMpLnJlbW92ZUNsYXNzKGEuY2FsbCh0aGlzLGIsdGhpcy5jbGFzc05hbWUpKX0pO2lmKGopZm9yKGI9KGF8fCIiKS5tYXRjaChFKXx8W107aT5oO2grKylpZihjPXRoaXNbaF0sZD0xPT09Yy5ub2RlVHlwZSYmKGMuY2xhc3NOYW1lPygiICIrYy5jbGFzc05hbWUrIiAiKS5yZXBsYWNlKHViLCIgIik6IiIpKXtmPTA7d2hpbGUoZT1iW2YrK10pd2hpbGUoZC5pbmRleE9mKCIgIitlKyIgIik+PTApZD1kLnJlcGxhY2UoIiAiK2UrIiAiLCIgIik7Zz1hP20udHJpbShkKToiIixjLmNsYXNzTmFtZSE9PWcmJihjLmNsYXNzTmFtZT1nKX1yZXR1cm4gdGhpc30sdG9nZ2xlQ2xhc3M6ZnVuY3Rpb24oYSxiKXt2YXIgYz10eXBlb2YgYTtyZXR1cm4iYm9vbGVhbiI9PXR5cGVvZiBiJiYic3RyaW5nIj09PWM/Yj90aGlzLmFkZENsYXNzKGEpOnRoaXMucmVtb3ZlQ2xhc3MoYSk6dGhpcy5lYWNoKG0uaXNGdW5jdGlvbihhKT9mdW5jdGlvbihjKXttKHRoaXMpLnRvZ2dsZUNsYXNzKGEuY2FsbCh0aGlzLGMsdGhpcy5jbGFzc05hbWUsYiksYil9OmZ1bmN0aW9uKCl7aWYoInN0cmluZyI9PT1jKXt2YXIgYixkPTAsZT1tKHRoaXMpLGY9YS5tYXRjaChFKXx8W107d2hpbGUoYj1mW2QrK10pZS5oYXNDbGFzcyhiKT9lLnJlbW92ZUNsYXNzKGIpOmUuYWRkQ2xhc3MoYil9ZWxzZShjPT09S3x8ImJvb2xlYW4iPT09YykmJih0aGlzLmNsYXNzTmFtZSYmbS5fZGF0YSh0aGlzLCJfX2NsYXNzTmFtZV9fIix0aGlzLmNsYXNzTmFtZSksdGhpcy5jbGFzc05hbWU9dGhpcy5jbGFzc05hbWV8fGE9PT0hMT8iIjptLl9kYXRhKHRoaXMsIl9fY2xhc3NOYW1lX18iKXx8IiIpfSl9LGhhc0NsYXNzOmZ1bmN0aW9uKGEpe2Zvcih2YXIgYj0iICIrYSsiICIsYz0wLGQ9dGhpcy5sZW5ndGg7ZD5jO2MrKylpZigxPT09dGhpc1tjXS5ub2RlVHlwZSYmKCIgIit0aGlzW2NdLmNsYXNzTmFtZSsiICIpLnJlcGxhY2UodWIsIiAiKS5pbmRleE9mKGIpPj0wKXJldHVybiEwO3JldHVybiExfX0pLG0uZWFjaCgiYmx1ciBmb2N1cyBmb2N1c2luIGZvY3Vzb3V0IGxvYWQgcmVzaXplIHNjcm9sbCB1bmxvYWQgY2xpY2sgZGJsY2xpY2sgbW91c2Vkb3duIG1vdXNldXAgbW91c2Vtb3ZlIG1vdXNlb3ZlciBtb3VzZW91dCBtb3VzZWVudGVyIG1vdXNlbGVhdmUgY2hhbmdlIHNlbGVjdCBzdWJtaXQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBlcnJvciBjb250ZXh0bWVudSIuc3BsaXQoIiAiKSxmdW5jdGlvbihhLGIpe20uZm5bYl09ZnVuY3Rpb24oYSxjKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD4wP3RoaXMub24oYixudWxsLGEsYyk6dGhpcy50cmlnZ2VyKGIpfX0pLG0uZm4uZXh0ZW5kKHtob3ZlcjpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLm1vdXNlZW50ZXIoYSkubW91c2VsZWF2ZShifHxhKX0sYmluZDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIHRoaXMub24oYSxudWxsLGIsYyl9LHVuYmluZDpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLm9mZihhLG51bGwsYil9LGRlbGVnYXRlOmZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiB0aGlzLm9uKGIsYSxjLGQpfSx1bmRlbGVnYXRlOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/dGhpcy5vZmYoYSwiKioiKTp0aGlzLm9mZihiLGF8fCIqKiIsYyl9fSk7dmFyIHZiPW0ubm93KCksd2I9L1w/Lyx4Yj0vKCwpfChcW3x7KXwofXxdKXwiKD86W14iXFxcclxuXXxcXFsiXFxcL2JmbnJ0XXxcXHVbXGRhLWZBLUZdezR9KSoiXHMqOj98dHJ1ZXxmYWxzZXxudWxsfC0/KD8hMFxkKVxkKyg/OlwuXGQrfCkoPzpbZUVdWystXT9cZCt8KS9nO20ucGFyc2VKU09OPWZ1bmN0aW9uKGIpe2lmKGEuSlNPTiYmYS5KU09OLnBhcnNlKXJldHVybiBhLkpTT04ucGFyc2UoYisiIik7dmFyIGMsZD1udWxsLGU9bS50cmltKGIrIiIpO3JldHVybiBlJiYhbS50cmltKGUucmVwbGFjZSh4YixmdW5jdGlvbihhLGIsZSxmKXtyZXR1cm4gYyYmYiYmKGQ9MCksMD09PWQ/YTooYz1lfHxiLGQrPSFmLSFlLCIiKX0pKT9GdW5jdGlvbigicmV0dXJuICIrZSkoKTptLmVycm9yKCJJbnZhbGlkIEpTT046ICIrYil9LG0ucGFyc2VYTUw9ZnVuY3Rpb24oYil7dmFyIGMsZDtpZighYnx8InN0cmluZyIhPXR5cGVvZiBiKXJldHVybiBudWxsO3RyeXthLkRPTVBhcnNlcj8oZD1uZXcgRE9NUGFyc2VyLGM9ZC5wYXJzZUZyb21TdHJpbmcoYiwidGV4dC94bWwiKSk6KGM9bmV3IEFjdGl2ZVhPYmplY3QoIk1pY3Jvc29mdC5YTUxET00iKSxjLmFzeW5jPSJmYWxzZSIsYy5sb2FkWE1MKGIpKX1jYXRjaChlKXtjPXZvaWQgMH1yZXR1cm4gYyYmYy5kb2N1bWVudEVsZW1lbnQmJiFjLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJwYXJzZXJlcnJvciIpLmxlbmd0aHx8bS5lcnJvcigiSW52YWxpZCBYTUw6ICIrYiksY307dmFyIHliLHpiLEFiPS8jLiokLyxCYj0vKFs/Jl0pXz1bXiZdKi8sQ2I9L14oLio/KTpbIFx0XSooW15cclxuXSopXHI/JC9nbSxEYj0vXig/OmFib3V0fGFwcHxhcHAtc3RvcmFnZXwuKy1leHRlbnNpb258ZmlsZXxyZXN8d2lkZ2V0KTokLyxFYj0vXig/OkdFVHxIRUFEKSQvLEZiPS9eXC9cLy8sR2I9L14oW1x3ListXSs6KSg/OlwvXC8oPzpbXlwvPyNdKkB8KShbXlwvPyM6XSopKD86OihcZCspfCl8KS8sSGI9e30sSWI9e30sSmI9IiovIi5jb25jYXQoIioiKTt0cnl7emI9bG9jYXRpb24uaHJlZn1jYXRjaChLYil7emI9eS5jcmVhdGVFbGVtZW50KCJhIiksemIuaHJlZj0iIix6Yj16Yi5ocmVmfXliPUdiLmV4ZWMoemIudG9Mb3dlckNhc2UoKSl8fFtdO2Z1bmN0aW9uIExiKGEpe3JldHVybiBmdW5jdGlvbihiLGMpeyJzdHJpbmciIT10eXBlb2YgYiYmKGM9YixiPSIqIik7dmFyIGQsZT0wLGY9Yi50b0xvd2VyQ2FzZSgpLm1hdGNoKEUpfHxbXTtpZihtLmlzRnVuY3Rpb24oYykpd2hpbGUoZD1mW2UrK10pIisiPT09ZC5jaGFyQXQoMCk/KGQ9ZC5zbGljZSgxKXx8IioiLChhW2RdPWFbZF18fFtdKS51bnNoaWZ0KGMpKTooYVtkXT1hW2RdfHxbXSkucHVzaChjKX19ZnVuY3Rpb24gTWIoYSxiLGMsZCl7dmFyIGU9e30sZj1hPT09SWI7ZnVuY3Rpb24gZyhoKXt2YXIgaTtyZXR1cm4gZVtoXT0hMCxtLmVhY2goYVtoXXx8W10sZnVuY3Rpb24oYSxoKXt2YXIgaj1oKGIsYyxkKTtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIGp8fGZ8fGVbal0/Zj8hKGk9aik6dm9pZCAwOihiLmRhdGFUeXBlcy51bnNoaWZ0KGopLGcoaiksITEpfSksaX1yZXR1cm4gZyhiLmRhdGFUeXBlc1swXSl8fCFlWyIqIl0mJmcoIioiKX1mdW5jdGlvbiBOYihhLGIpe3ZhciBjLGQsZT1tLmFqYXhTZXR0aW5ncy5mbGF0T3B0aW9uc3x8e307Zm9yKGQgaW4gYil2b2lkIDAhPT1iW2RdJiYoKGVbZF0/YTpjfHwoYz17fSkpW2RdPWJbZF0pO3JldHVybiBjJiZtLmV4dGVuZCghMCxhLGMpLGF9ZnVuY3Rpb24gT2IoYSxiLGMpe3ZhciBkLGUsZixnLGg9YS5jb250ZW50cyxpPWEuZGF0YVR5cGVzO3doaWxlKCIqIj09PWlbMF0paS5zaGlmdCgpLHZvaWQgMD09PWUmJihlPWEubWltZVR5cGV8fGIuZ2V0UmVzcG9uc2VIZWFkZXIoIkNvbnRlbnQtVHlwZSIpKTtpZihlKWZvcihnIGluIGgpaWYoaFtnXSYmaFtnXS50ZXN0KGUpKXtpLnVuc2hpZnQoZyk7YnJlYWt9aWYoaVswXWluIGMpZj1pWzBdO2Vsc2V7Zm9yKGcgaW4gYyl7aWYoIWlbMF18fGEuY29udmVydGVyc1tnKyIgIitpWzBdXSl7Zj1nO2JyZWFrfWR8fChkPWcpfWY9Znx8ZH1yZXR1cm4gZj8oZiE9PWlbMF0mJmkudW5zaGlmdChmKSxjW2ZdKTp2b2lkIDB9ZnVuY3Rpb24gUGIoYSxiLGMsZCl7dmFyIGUsZixnLGgsaSxqPXt9LGs9YS5kYXRhVHlwZXMuc2xpY2UoKTtpZihrWzFdKWZvcihnIGluIGEuY29udmVydGVycylqW2cudG9Mb3dlckNhc2UoKV09YS5jb252ZXJ0ZXJzW2ddO2Y9ay5zaGlmdCgpO3doaWxlKGYpaWYoYS5yZXNwb25zZUZpZWxkc1tmXSYmKGNbYS5yZXNwb25zZUZpZWxkc1tmXV09YiksIWkmJmQmJmEuZGF0YUZpbHRlciYmKGI9YS5kYXRhRmlsdGVyKGIsYS5kYXRhVHlwZSkpLGk9ZixmPWsuc2hpZnQoKSlpZigiKiI9PT1mKWY9aTtlbHNlIGlmKCIqIiE9PWkmJmkhPT1mKXtpZihnPWpbaSsiICIrZl18fGpbIiogIitmXSwhZylmb3IoZSBpbiBqKWlmKGg9ZS5zcGxpdCgiICIpLGhbMV09PT1mJiYoZz1qW2krIiAiK2hbMF1dfHxqWyIqICIraFswXV0pKXtnPT09ITA/Zz1qW2VdOmpbZV0hPT0hMCYmKGY9aFswXSxrLnVuc2hpZnQoaFsxXSkpO2JyZWFrfWlmKGchPT0hMClpZihnJiZhWyJ0aHJvd3MiXSliPWcoYik7ZWxzZSB0cnl7Yj1nKGIpfWNhdGNoKGwpe3JldHVybntzdGF0ZToicGFyc2VyZXJyb3IiLGVycm9yOmc/bDoiTm8gY29udmVyc2lvbiBmcm9tICIraSsiIHRvICIrZn19fXJldHVybntzdGF0ZToic3VjY2VzcyIsZGF0YTpifX1tLmV4dGVuZCh7YWN0aXZlOjAsbGFzdE1vZGlmaWVkOnt9LGV0YWc6e30sYWpheFNldHRpbmdzOnt1cmw6emIsdHlwZToiR0VUIixpc0xvY2FsOkRiLnRlc3QoeWJbMV0pLGdsb2JhbDohMCxwcm9jZXNzRGF0YTohMCxhc3luYzohMCxjb250ZW50VHlwZToiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkOyBjaGFyc2V0PVVURi04IixhY2NlcHRzOnsiKiI6SmIsdGV4dDoidGV4dC9wbGFpbiIsaHRtbDoidGV4dC9odG1sIix4bWw6ImFwcGxpY2F0aW9uL3htbCwgdGV4dC94bWwiLGpzb246ImFwcGxpY2F0aW9uL2pzb24sIHRleHQvamF2YXNjcmlwdCJ9LGNvbnRlbnRzOnt4bWw6L3htbC8saHRtbDovaHRtbC8sanNvbjovanNvbi99LHJlc3BvbnNlRmllbGRzOnt4bWw6InJlc3BvbnNlWE1MIix0ZXh0OiJyZXNwb25zZVRleHQiLGpzb246InJlc3BvbnNlSlNPTiJ9LGNvbnZlcnRlcnM6eyIqIHRleHQiOlN0cmluZywidGV4dCBodG1sIjohMCwidGV4dCBqc29uIjptLnBhcnNlSlNPTiwidGV4dCB4bWwiOm0ucGFyc2VYTUx9LGZsYXRPcHRpb25zOnt1cmw6ITAsY29udGV4dDohMH19LGFqYXhTZXR1cDpmdW5jdGlvbihhLGIpe3JldHVybiBiP05iKE5iKGEsbS5hamF4U2V0dGluZ3MpLGIpOk5iKG0uYWpheFNldHRpbmdzLGEpfSxhamF4UHJlZmlsdGVyOkxiKEhiKSxhamF4VHJhbnNwb3J0OkxiKEliKSxhamF4OmZ1bmN0aW9uKGEsYil7Im9iamVjdCI9PXR5cGVvZiBhJiYoYj1hLGE9dm9pZCAwKSxiPWJ8fHt9O3ZhciBjLGQsZSxmLGcsaCxpLGosaz1tLmFqYXhTZXR1cCh7fSxiKSxsPWsuY29udGV4dHx8ayxuPWsuY29udGV4dCYmKGwubm9kZVR5cGV8fGwuanF1ZXJ5KT9tKGwpOm0uZXZlbnQsbz1tLkRlZmVycmVkKCkscD1tLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSxxPWsuc3RhdHVzQ29kZXx8e30scj17fSxzPXt9LHQ9MCx1PSJjYW5jZWxlZCIsdj17cmVhZHlTdGF0ZTowLGdldFJlc3BvbnNlSGVhZGVyOmZ1bmN0aW9uKGEpe3ZhciBiO2lmKDI9PT10KXtpZighail7aj17fTt3aGlsZShiPUNiLmV4ZWMoZikpaltiWzFdLnRvTG93ZXJDYXNlKCldPWJbMl19Yj1qW2EudG9Mb3dlckNhc2UoKV19cmV0dXJuIG51bGw9PWI/bnVsbDpifSxnZXRBbGxSZXNwb25zZUhlYWRlcnM6ZnVuY3Rpb24oKXtyZXR1cm4gMj09PXQ/ZjpudWxsfSxzZXRSZXF1ZXN0SGVhZGVyOmZ1bmN0aW9uKGEsYil7dmFyIGM9YS50b0xvd2VyQ2FzZSgpO3JldHVybiB0fHwoYT1zW2NdPXNbY118fGEsclthXT1iKSx0aGlzfSxvdmVycmlkZU1pbWVUeXBlOmZ1bmN0aW9uKGEpe3JldHVybiB0fHwoay5taW1lVHlwZT1hKSx0aGlzfSxzdGF0dXNDb2RlOmZ1bmN0aW9uKGEpe3ZhciBiO2lmKGEpaWYoMj50KWZvcihiIGluIGEpcVtiXT1bcVtiXSxhW2JdXTtlbHNlIHYuYWx3YXlzKGFbdi5zdGF0dXNdKTtyZXR1cm4gdGhpc30sYWJvcnQ6ZnVuY3Rpb24oYSl7dmFyIGI9YXx8dTtyZXR1cm4gaSYmaS5hYm9ydChiKSx4KDAsYiksdGhpc319O2lmKG8ucHJvbWlzZSh2KS5jb21wbGV0ZT1wLmFkZCx2LnN1Y2Nlc3M9di5kb25lLHYuZXJyb3I9di5mYWlsLGsudXJsPSgoYXx8ay51cmx8fHpiKSsiIikucmVwbGFjZShBYiwiIikucmVwbGFjZShGYix5YlsxXSsiLy8iKSxrLnR5cGU9Yi5tZXRob2R8fGIudHlwZXx8ay5tZXRob2R8fGsudHlwZSxrLmRhdGFUeXBlcz1tLnRyaW0oay5kYXRhVHlwZXx8IioiKS50b0xvd2VyQ2FzZSgpLm1hdGNoKEUpfHxbIiJdLG51bGw9PWsuY3Jvc3NEb21haW4mJihjPUdiLmV4ZWMoay51cmwudG9Mb3dlckNhc2UoKSksay5jcm9zc0RvbWFpbj0hKCFjfHxjWzFdPT09eWJbMV0mJmNbMl09PT15YlsyXSYmKGNbM118fCgiaHR0cDoiPT09Y1sxXT8iODAiOiI0NDMiKSk9PT0oeWJbM118fCgiaHR0cDoiPT09eWJbMV0/IjgwIjoiNDQzIikpKSksay5kYXRhJiZrLnByb2Nlc3NEYXRhJiYic3RyaW5nIiE9dHlwZW9mIGsuZGF0YSYmKGsuZGF0YT1tLnBhcmFtKGsuZGF0YSxrLnRyYWRpdGlvbmFsKSksTWIoSGIsayxiLHYpLDI9PT10KXJldHVybiB2O2g9bS5ldmVudCYmay5nbG9iYWwsaCYmMD09PW0uYWN0aXZlKysmJm0uZXZlbnQudHJpZ2dlcigiYWpheFN0YXJ0Iiksay50eXBlPWsudHlwZS50b1VwcGVyQ2FzZSgpLGsuaGFzQ29udGVudD0hRWIudGVzdChrLnR5cGUpLGU9ay51cmwsay5oYXNDb250ZW50fHwoay5kYXRhJiYoZT1rLnVybCs9KHdiLnRlc3QoZSk/IiYiOiI/Iikray5kYXRhLGRlbGV0ZSBrLmRhdGEpLGsuY2FjaGU9PT0hMSYmKGsudXJsPUJiLnRlc3QoZSk/ZS5yZXBsYWNlKEJiLCIkMV89Iit2YisrKTplKyh3Yi50ZXN0KGUpPyImIjoiPyIpKyJfPSIrdmIrKykpLGsuaWZNb2RpZmllZCYmKG0ubGFzdE1vZGlmaWVkW2VdJiZ2LnNldFJlcXVlc3RIZWFkZXIoIklmLU1vZGlmaWVkLVNpbmNlIixtLmxhc3RNb2RpZmllZFtlXSksbS5ldGFnW2VdJiZ2LnNldFJlcXVlc3RIZWFkZXIoIklmLU5vbmUtTWF0Y2giLG0uZXRhZ1tlXSkpLChrLmRhdGEmJmsuaGFzQ29udGVudCYmay5jb250ZW50VHlwZSE9PSExfHxiLmNvbnRlbnRUeXBlKSYmdi5zZXRSZXF1ZXN0SGVhZGVyKCJDb250ZW50LVR5cGUiLGsuY29udGVudFR5cGUpLHYuc2V0UmVxdWVzdEhlYWRlcigiQWNjZXB0IixrLmRhdGFUeXBlc1swXSYmay5hY2NlcHRzW2suZGF0YVR5cGVzWzBdXT9rLmFjY2VwdHNbay5kYXRhVHlwZXNbMF1dKygiKiIhPT1rLmRhdGFUeXBlc1swXT8iLCAiK0piKyI7IHE9MC4wMSI6IiIpOmsuYWNjZXB0c1siKiJdKTtmb3IoZCBpbiBrLmhlYWRlcnMpdi5zZXRSZXF1ZXN0SGVhZGVyKGQsay5oZWFkZXJzW2RdKTtpZihrLmJlZm9yZVNlbmQmJihrLmJlZm9yZVNlbmQuY2FsbChsLHYsayk9PT0hMXx8Mj09PXQpKXJldHVybiB2LmFib3J0KCk7dT0iYWJvcnQiO2ZvcihkIGlue3N1Y2Nlc3M6MSxlcnJvcjoxLGNvbXBsZXRlOjF9KXZbZF0oa1tkXSk7aWYoaT1NYihJYixrLGIsdikpe3YucmVhZHlTdGF0ZT0xLGgmJm4udHJpZ2dlcigiYWpheFNlbmQiLFt2LGtdKSxrLmFzeW5jJiZrLnRpbWVvdXQ+MCYmKGc9c2V0VGltZW91dChmdW5jdGlvbigpe3YuYWJvcnQoInRpbWVvdXQiKX0say50aW1lb3V0KSk7dHJ5e3Q9MSxpLnNlbmQocix4KX1jYXRjaCh3KXtpZighKDI+dCkpdGhyb3cgdzt4KC0xLHcpfX1lbHNlIHgoLTEsIk5vIFRyYW5zcG9ydCIpO2Z1bmN0aW9uIHgoYSxiLGMsZCl7dmFyIGoscixzLHUsdyx4PWI7MiE9PXQmJih0PTIsZyYmY2xlYXJUaW1lb3V0KGcpLGk9dm9pZCAwLGY9ZHx8IiIsdi5yZWFkeVN0YXRlPWE+MD80OjAsaj1hPj0yMDAmJjMwMD5hfHwzMDQ9PT1hLGMmJih1PU9iKGssdixjKSksdT1QYihrLHUsdixqKSxqPyhrLmlmTW9kaWZpZWQmJih3PXYuZ2V0UmVzcG9uc2VIZWFkZXIoIkxhc3QtTW9kaWZpZWQiKSx3JiYobS5sYXN0TW9kaWZpZWRbZV09dyksdz12LmdldFJlc3BvbnNlSGVhZGVyKCJldGFnIiksdyYmKG0uZXRhZ1tlXT13KSksMjA0PT09YXx8IkhFQUQiPT09ay50eXBlP3g9Im5vY29udGVudCI6MzA0PT09YT94PSJub3Rtb2RpZmllZCI6KHg9dS5zdGF0ZSxyPXUuZGF0YSxzPXUuZXJyb3Isaj0hcykpOihzPXgsKGF8fCF4KSYmKHg9ImVycm9yIiwwPmEmJihhPTApKSksdi5zdGF0dXM9YSx2LnN0YXR1c1RleHQ9KGJ8fHgpKyIiLGo/by5yZXNvbHZlV2l0aChsLFtyLHgsdl0pOm8ucmVqZWN0V2l0aChsLFt2LHgsc10pLHYuc3RhdHVzQ29kZShxKSxxPXZvaWQgMCxoJiZuLnRyaWdnZXIoaj8iYWpheFN1Y2Nlc3MiOiJhamF4RXJyb3IiLFt2LGssaj9yOnNdKSxwLmZpcmVXaXRoKGwsW3YseF0pLGgmJihuLnRyaWdnZXIoImFqYXhDb21wbGV0ZSIsW3Ysa10pLC0tbS5hY3RpdmV8fG0uZXZlbnQudHJpZ2dlcigiYWpheFN0b3AiKSkpfXJldHVybiB2fSxnZXRKU09OOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gbS5nZXQoYSxiLGMsImpzb24iKX0sZ2V0U2NyaXB0OmZ1bmN0aW9uKGEsYil7cmV0dXJuIG0uZ2V0KGEsdm9pZCAwLGIsInNjcmlwdCIpfX0pLG0uZWFjaChbImdldCIsInBvc3QiXSxmdW5jdGlvbihhLGIpe21bYl09ZnVuY3Rpb24oYSxjLGQsZSl7cmV0dXJuIG0uaXNGdW5jdGlvbihjKSYmKGU9ZXx8ZCxkPWMsYz12b2lkIDApLG0uYWpheCh7dXJsOmEsdHlwZTpiLGRhdGFUeXBlOmUsZGF0YTpjLHN1Y2Nlc3M6ZH0pfX0pLG0uX2V2YWxVcmw9ZnVuY3Rpb24oYSl7cmV0dXJuIG0uYWpheCh7dXJsOmEsdHlwZToiR0VUIixkYXRhVHlwZToic2NyaXB0Iixhc3luYzohMSxnbG9iYWw6ITEsInRocm93cyI6ITB9KX0sbS5mbi5leHRlbmQoe3dyYXBBbGw6ZnVuY3Rpb24oYSl7aWYobS5pc0Z1bmN0aW9uKGEpKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oYil7bSh0aGlzKS53cmFwQWxsKGEuY2FsbCh0aGlzLGIpKX0pO2lmKHRoaXNbMF0pe3ZhciBiPW0oYSx0aGlzWzBdLm93bmVyRG9jdW1lbnQpLmVxKDApLmNsb25lKCEwKTt0aGlzWzBdLnBhcmVudE5vZGUmJmIuaW5zZXJ0QmVmb3JlKHRoaXNbMF0pLGIubWFwKGZ1bmN0aW9uKCl7dmFyIGE9dGhpczt3aGlsZShhLmZpcnN0Q2hpbGQmJjE9PT1hLmZpcnN0Q2hpbGQubm9kZVR5cGUpYT1hLmZpcnN0Q2hpbGQ7cmV0dXJuIGF9KS5hcHBlbmQodGhpcyl9cmV0dXJuIHRoaXN9LHdyYXBJbm5lcjpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5lYWNoKG0uaXNGdW5jdGlvbihhKT9mdW5jdGlvbihiKXttKHRoaXMpLndyYXBJbm5lcihhLmNhbGwodGhpcyxiKSl9OmZ1bmN0aW9uKCl7dmFyIGI9bSh0aGlzKSxjPWIuY29udGVudHMoKTtjLmxlbmd0aD9jLndyYXBBbGwoYSk6Yi5hcHBlbmQoYSl9KX0sd3JhcDpmdW5jdGlvbihhKXt2YXIgYj1tLmlzRnVuY3Rpb24oYSk7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihjKXttKHRoaXMpLndyYXBBbGwoYj9hLmNhbGwodGhpcyxjKTphKX0pfSx1bndyYXA6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wYXJlbnQoKS5lYWNoKGZ1bmN0aW9uKCl7bS5ub2RlTmFtZSh0aGlzLCJib2R5Iil8fG0odGhpcykucmVwbGFjZVdpdGgodGhpcy5jaGlsZE5vZGVzKX0pLmVuZCgpfX0pLG0uZXhwci5maWx0ZXJzLmhpZGRlbj1mdW5jdGlvbihhKXtyZXR1cm4gYS5vZmZzZXRXaWR0aDw9MCYmYS5vZmZzZXRIZWlnaHQ8PTB8fCFrLnJlbGlhYmxlSGlkZGVuT2Zmc2V0cygpJiYibm9uZSI9PT0oYS5zdHlsZSYmYS5zdHlsZS5kaXNwbGF5fHxtLmNzcyhhLCJkaXNwbGF5IikpfSxtLmV4cHIuZmlsdGVycy52aXNpYmxlPWZ1bmN0aW9uKGEpe3JldHVybiFtLmV4cHIuZmlsdGVycy5oaWRkZW4oYSl9O3ZhciBRYj0vJTIwL2csUmI9L1xbXF0kLyxTYj0vXHI/XG4vZyxUYj0vXig/OnN1Ym1pdHxidXR0b258aW1hZ2V8cmVzZXR8ZmlsZSkkL2ksVWI9L14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWF8a2V5Z2VuKS9pO2Z1bmN0aW9uIFZiKGEsYixjLGQpe3ZhciBlO2lmKG0uaXNBcnJheShiKSltLmVhY2goYixmdW5jdGlvbihiLGUpe2N8fFJiLnRlc3QoYSk/ZChhLGUpOlZiKGErIlsiKygib2JqZWN0Ij09dHlwZW9mIGU/YjoiIikrIl0iLGUsYyxkKX0pO2Vsc2UgaWYoY3x8Im9iamVjdCIhPT1tLnR5cGUoYikpZChhLGIpO2Vsc2UgZm9yKGUgaW4gYilWYihhKyJbIitlKyJdIixiW2VdLGMsZCl9bS5wYXJhbT1mdW5jdGlvbihhLGIpe3ZhciBjLGQ9W10sZT1mdW5jdGlvbihhLGIpe2I9bS5pc0Z1bmN0aW9uKGIpP2IoKTpudWxsPT1iPyIiOmIsZFtkLmxlbmd0aF09ZW5jb2RlVVJJQ29tcG9uZW50KGEpKyI9IitlbmNvZGVVUklDb21wb25lbnQoYil9O2lmKHZvaWQgMD09PWImJihiPW0uYWpheFNldHRpbmdzJiZtLmFqYXhTZXR0aW5ncy50cmFkaXRpb25hbCksbS5pc0FycmF5KGEpfHxhLmpxdWVyeSYmIW0uaXNQbGFpbk9iamVjdChhKSltLmVhY2goYSxmdW5jdGlvbigpe2UodGhpcy5uYW1lLHRoaXMudmFsdWUpfSk7ZWxzZSBmb3IoYyBpbiBhKVZiKGMsYVtjXSxiLGUpO3JldHVybiBkLmpvaW4oIiYiKS5yZXBsYWNlKFFiLCIrIil9LG0uZm4uZXh0ZW5kKHtzZXJpYWxpemU6ZnVuY3Rpb24oKXtyZXR1cm4gbS5wYXJhbSh0aGlzLnNlcmlhbGl6ZUFycmF5KCkpfSxzZXJpYWxpemVBcnJheTpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1hcChmdW5jdGlvbigpe3ZhciBhPW0ucHJvcCh0aGlzLCJlbGVtZW50cyIpO3JldHVybiBhP20ubWFrZUFycmF5KGEpOnRoaXN9KS5maWx0ZXIoZnVuY3Rpb24oKXt2YXIgYT10aGlzLnR5cGU7cmV0dXJuIHRoaXMubmFtZSYmIW0odGhpcykuaXMoIjpkaXNhYmxlZCIpJiZVYi50ZXN0KHRoaXMubm9kZU5hbWUpJiYhVGIudGVzdChhKSYmKHRoaXMuY2hlY2tlZHx8IVcudGVzdChhKSl9KS5tYXAoZnVuY3Rpb24oYSxiKXt2YXIgYz1tKHRoaXMpLnZhbCgpO3JldHVybiBudWxsPT1jP251bGw6bS5pc0FycmF5KGMpP20ubWFwKGMsZnVuY3Rpb24oYSl7cmV0dXJue25hbWU6Yi5uYW1lLHZhbHVlOmEucmVwbGFjZShTYiwiXHJcbiIpfX0pOntuYW1lOmIubmFtZSx2YWx1ZTpjLnJlcGxhY2UoU2IsIlxyXG4iKX19KS5nZXQoKX19KSxtLmFqYXhTZXR0aW5ncy54aHI9dm9pZCAwIT09YS5BY3RpdmVYT2JqZWN0P2Z1bmN0aW9uKCl7cmV0dXJuIXRoaXMuaXNMb2NhbCYmL14oZ2V0fHBvc3R8aGVhZHxwdXR8ZGVsZXRlfG9wdGlvbnMpJC9pLnRlc3QodGhpcy50eXBlKSYmWmIoKXx8JGIoKX06WmI7dmFyIFdiPTAsWGI9e30sWWI9bS5hamF4U2V0dGluZ3MueGhyKCk7YS5hdHRhY2hFdmVudCYmYS5hdHRhY2hFdmVudCgib251bmxvYWQiLGZ1bmN0aW9uKCl7Zm9yKHZhciBhIGluIFhiKVhiW2FdKHZvaWQgMCwhMCl9KSxrLmNvcnM9ISFZYiYmIndpdGhDcmVkZW50aWFscyJpbiBZYixZYj1rLmFqYXg9ISFZYixZYiYmbS5hamF4VHJhbnNwb3J0KGZ1bmN0aW9uKGEpe2lmKCFhLmNyb3NzRG9tYWlufHxrLmNvcnMpe3ZhciBiO3JldHVybntzZW5kOmZ1bmN0aW9uKGMsZCl7dmFyIGUsZj1hLnhocigpLGc9KytXYjtpZihmLm9wZW4oYS50eXBlLGEudXJsLGEuYXN5bmMsYS51c2VybmFtZSxhLnBhc3N3b3JkKSxhLnhockZpZWxkcylmb3IoZSBpbiBhLnhockZpZWxkcylmW2VdPWEueGhyRmllbGRzW2VdO2EubWltZVR5cGUmJmYub3ZlcnJpZGVNaW1lVHlwZSYmZi5vdmVycmlkZU1pbWVUeXBlKGEubWltZVR5cGUpLGEuY3Jvc3NEb21haW58fGNbIlgtUmVxdWVzdGVkLVdpdGgiXXx8KGNbIlgtUmVxdWVzdGVkLVdpdGgiXT0iWE1MSHR0cFJlcXVlc3QiKTtmb3IoZSBpbiBjKXZvaWQgMCE9PWNbZV0mJmYuc2V0UmVxdWVzdEhlYWRlcihlLGNbZV0rIiIpO2Yuc2VuZChhLmhhc0NvbnRlbnQmJmEuZGF0YXx8bnVsbCksYj1mdW5jdGlvbihjLGUpe3ZhciBoLGksajtpZihiJiYoZXx8ND09PWYucmVhZHlTdGF0ZSkpaWYoZGVsZXRlIFhiW2ddLGI9dm9pZCAwLGYub25yZWFkeXN0YXRlY2hhbmdlPW0ubm9vcCxlKTQhPT1mLnJlYWR5U3RhdGUmJmYuYWJvcnQoKTtlbHNle2o9e30saD1mLnN0YXR1cywic3RyaW5nIj09dHlwZW9mIGYucmVzcG9uc2VUZXh0JiYoai50ZXh0PWYucmVzcG9uc2VUZXh0KTt0cnl7aT1mLnN0YXR1c1RleHR9Y2F0Y2goayl7aT0iIn1ofHwhYS5pc0xvY2FsfHxhLmNyb3NzRG9tYWluPzEyMjM9PT1oJiYoaD0yMDQpOmg9ai50ZXh0PzIwMDo0MDR9aiYmZChoLGksaixmLmdldEFsbFJlc3BvbnNlSGVhZGVycygpKX0sYS5hc3luYz80PT09Zi5yZWFkeVN0YXRlP3NldFRpbWVvdXQoYik6Zi5vbnJlYWR5c3RhdGVjaGFuZ2U9WGJbZ109YjpiKCl9LGFib3J0OmZ1bmN0aW9uKCl7YiYmYih2b2lkIDAsITApfX19fSk7ZnVuY3Rpb24gWmIoKXt0cnl7cmV0dXJuIG5ldyBhLlhNTEh0dHBSZXF1ZXN0fWNhdGNoKGIpe319ZnVuY3Rpb24gJGIoKXt0cnl7cmV0dXJuIG5ldyBhLkFjdGl2ZVhPYmplY3QoIk1pY3Jvc29mdC5YTUxIVFRQIil9Y2F0Y2goYil7fX1tLmFqYXhTZXR1cCh7YWNjZXB0czp7c2NyaXB0OiJ0ZXh0L2phdmFzY3JpcHQsIGFwcGxpY2F0aW9uL2phdmFzY3JpcHQsIGFwcGxpY2F0aW9uL2VjbWFzY3JpcHQsIGFwcGxpY2F0aW9uL3gtZWNtYXNjcmlwdCJ9LGNvbnRlbnRzOntzY3JpcHQ6Lyg/OmphdmF8ZWNtYSlzY3JpcHQvfSxjb252ZXJ0ZXJzOnsidGV4dCBzY3JpcHQiOmZ1bmN0aW9uKGEpe3JldHVybiBtLmdsb2JhbEV2YWwoYSksYX19fSksbS5hamF4UHJlZmlsdGVyKCJzY3JpcHQiLGZ1bmN0aW9uKGEpe3ZvaWQgMD09PWEuY2FjaGUmJihhLmNhY2hlPSExKSxhLmNyb3NzRG9tYWluJiYoYS50eXBlPSJHRVQiLGEuZ2xvYmFsPSExKX0pLG0uYWpheFRyYW5zcG9ydCgic2NyaXB0IixmdW5jdGlvbihhKXtpZihhLmNyb3NzRG9tYWluKXt2YXIgYixjPXkuaGVhZHx8bSgiaGVhZCIpWzBdfHx5LmRvY3VtZW50RWxlbWVudDtyZXR1cm57c2VuZDpmdW5jdGlvbihkLGUpe2I9eS5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKSxiLmFzeW5jPSEwLGEuc2NyaXB0Q2hhcnNldCYmKGIuY2hhcnNldD1hLnNjcmlwdENoYXJzZXQpLGIuc3JjPWEudXJsLGIub25sb2FkPWIub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKGEsYyl7KGN8fCFiLnJlYWR5U3RhdGV8fC9sb2FkZWR8Y29tcGxldGUvLnRlc3QoYi5yZWFkeVN0YXRlKSkmJihiLm9ubG9hZD1iLm9ucmVhZHlzdGF0ZWNoYW5nZT1udWxsLGIucGFyZW50Tm9kZSYmYi5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGIpLGI9bnVsbCxjfHxlKDIwMCwic3VjY2VzcyIpKX0sYy5pbnNlcnRCZWZvcmUoYixjLmZpcnN0Q2hpbGQpfSxhYm9ydDpmdW5jdGlvbigpe2ImJmIub25sb2FkKHZvaWQgMCwhMCl9fX19KTt2YXIgX2I9W10sYWM9Lyg9KVw/KD89JnwkKXxcP1w/LzttLmFqYXhTZXR1cCh7anNvbnA6ImNhbGxiYWNrIixqc29ucENhbGxiYWNrOmZ1bmN0aW9uKCl7dmFyIGE9X2IucG9wKCl8fG0uZXhwYW5kbysiXyIrdmIrKztyZXR1cm4gdGhpc1thXT0hMCxhfX0pLG0uYWpheFByZWZpbHRlcigianNvbiBqc29ucCIsZnVuY3Rpb24oYixjLGQpe3ZhciBlLGYsZyxoPWIuanNvbnAhPT0hMSYmKGFjLnRlc3QoYi51cmwpPyJ1cmwiOiJzdHJpbmciPT10eXBlb2YgYi5kYXRhJiYhKGIuY29udGVudFR5cGV8fCIiKS5pbmRleE9mKCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiKSYmYWMudGVzdChiLmRhdGEpJiYiZGF0YSIpO3JldHVybiBofHwianNvbnAiPT09Yi5kYXRhVHlwZXNbMF0/KGU9Yi5qc29ucENhbGxiYWNrPW0uaXNGdW5jdGlvbihiLmpzb25wQ2FsbGJhY2spP2IuanNvbnBDYWxsYmFjaygpOmIuanNvbnBDYWxsYmFjayxoP2JbaF09YltoXS5yZXBsYWNlKGFjLCIkMSIrZSk6Yi5qc29ucCE9PSExJiYoYi51cmwrPSh3Yi50ZXN0KGIudXJsKT8iJiI6Ij8iKStiLmpzb25wKyI9IitlKSxiLmNvbnZlcnRlcnNbInNjcmlwdCBqc29uIl09ZnVuY3Rpb24oKXtyZXR1cm4gZ3x8bS5lcnJvcihlKyIgd2FzIG5vdCBjYWxsZWQiKSxnWzBdfSxiLmRhdGFUeXBlc1swXT0ianNvbiIsZj1hW2VdLGFbZV09ZnVuY3Rpb24oKXtnPWFyZ3VtZW50c30sZC5hbHdheXMoZnVuY3Rpb24oKXthW2VdPWYsYltlXSYmKGIuanNvbnBDYWxsYmFjaz1jLmpzb25wQ2FsbGJhY2ssX2IucHVzaChlKSksZyYmbS5pc0Z1bmN0aW9uKGYpJiZmKGdbMF0pLGc9Zj12b2lkIDB9KSwic2NyaXB0Iik6dm9pZCAwfSksbS5wYXJzZUhUTUw9ZnVuY3Rpb24oYSxiLGMpe2lmKCFhfHwic3RyaW5nIiE9dHlwZW9mIGEpcmV0dXJuIG51bGw7ImJvb2xlYW4iPT10eXBlb2YgYiYmKGM9YixiPSExKSxiPWJ8fHk7dmFyIGQ9dS5leGVjKGEpLGU9IWMmJltdO3JldHVybiBkP1tiLmNyZWF0ZUVsZW1lbnQoZFsxXSldOihkPW0uYnVpbGRGcmFnbWVudChbYV0sYixlKSxlJiZlLmxlbmd0aCYmbShlKS5yZW1vdmUoKSxtLm1lcmdlKFtdLGQuY2hpbGROb2RlcykpfTt2YXIgYmM9bS5mbi5sb2FkO20uZm4ubG9hZD1mdW5jdGlvbihhLGIsYyl7aWYoInN0cmluZyIhPXR5cGVvZiBhJiZiYylyZXR1cm4gYmMuYXBwbHkodGhpcyxhcmd1bWVudHMpO3ZhciBkLGUsZixnPXRoaXMsaD1hLmluZGV4T2YoIiAiKTtyZXR1cm4gaD49MCYmKGQ9bS50cmltKGEuc2xpY2UoaCxhLmxlbmd0aCkpLGE9YS5zbGljZSgwLGgpKSxtLmlzRnVuY3Rpb24oYik/KGM9YixiPXZvaWQgMCk6YiYmIm9iamVjdCI9PXR5cGVvZiBiJiYoZj0iUE9TVCIpLGcubGVuZ3RoPjAmJm0uYWpheCh7dXJsOmEsdHlwZTpmLGRhdGFUeXBlOiJodG1sIixkYXRhOmJ9KS5kb25lKGZ1bmN0aW9uKGEpe2U9YXJndW1lbnRzLGcuaHRtbChkP20oIjxkaXY+IikuYXBwZW5kKG0ucGFyc2VIVE1MKGEpKS5maW5kKGQpOmEpfSkuY29tcGxldGUoYyYmZnVuY3Rpb24oYSxiKXtnLmVhY2goYyxlfHxbYS5yZXNwb25zZVRleHQsYixhXSl9KSx0aGlzfSxtLmVhY2goWyJhamF4U3RhcnQiLCJhamF4U3RvcCIsImFqYXhDb21wbGV0ZSIsImFqYXhFcnJvciIsImFqYXhTdWNjZXNzIiwiYWpheFNlbmQiXSxmdW5jdGlvbihhLGIpe20uZm5bYl09ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMub24oYixhKX19KSxtLmV4cHIuZmlsdGVycy5hbmltYXRlZD1mdW5jdGlvbihhKXtyZXR1cm4gbS5ncmVwKG0udGltZXJzLGZ1bmN0aW9uKGIpe3JldHVybiBhPT09Yi5lbGVtfSkubGVuZ3RofTt2YXIgY2M9YS5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7ZnVuY3Rpb24gZGMoYSl7cmV0dXJuIG0uaXNXaW5kb3coYSk/YTo5PT09YS5ub2RlVHlwZT9hLmRlZmF1bHRWaWV3fHxhLnBhcmVudFdpbmRvdzohMX1tLm9mZnNldD17c2V0T2Zmc2V0OmZ1bmN0aW9uKGEsYixjKXt2YXIgZCxlLGYsZyxoLGksaixrPW0uY3NzKGEsInBvc2l0aW9uIiksbD1tKGEpLG49e307InN0YXRpYyI9PT1rJiYoYS5zdHlsZS5wb3NpdGlvbj0icmVsYXRpdmUiKSxoPWwub2Zmc2V0KCksZj1tLmNzcyhhLCJ0b3AiKSxpPW0uY3NzKGEsImxlZnQiKSxqPSgiYWJzb2x1dGUiPT09a3x8ImZpeGVkIj09PWspJiZtLmluQXJyYXkoImF1dG8iLFtmLGldKT4tMSxqPyhkPWwucG9zaXRpb24oKSxnPWQudG9wLGU9ZC5sZWZ0KTooZz1wYXJzZUZsb2F0KGYpfHwwLGU9cGFyc2VGbG9hdChpKXx8MCksbS5pc0Z1bmN0aW9uKGIpJiYoYj1iLmNhbGwoYSxjLGgpKSxudWxsIT1iLnRvcCYmKG4udG9wPWIudG9wLWgudG9wK2cpLG51bGwhPWIubGVmdCYmKG4ubGVmdD1iLmxlZnQtaC5sZWZ0K2UpLCJ1c2luZyJpbiBiP2IudXNpbmcuY2FsbChhLG4pOmwuY3NzKG4pfX0sbS5mbi5leHRlbmQoe29mZnNldDpmdW5jdGlvbihhKXtpZihhcmd1bWVudHMubGVuZ3RoKXJldHVybiB2b2lkIDA9PT1hP3RoaXM6dGhpcy5lYWNoKGZ1bmN0aW9uKGIpe20ub2Zmc2V0LnNldE9mZnNldCh0aGlzLGEsYil9KTt2YXIgYixjLGQ9e3RvcDowLGxlZnQ6MH0sZT10aGlzWzBdLGY9ZSYmZS5vd25lckRvY3VtZW50O2lmKGYpcmV0dXJuIGI9Zi5kb2N1bWVudEVsZW1lbnQsbS5jb250YWlucyhiLGUpPyh0eXBlb2YgZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QhPT1LJiYoZD1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKSxjPWRjKGYpLHt0b3A6ZC50b3ArKGMucGFnZVlPZmZzZXR8fGIuc2Nyb2xsVG9wKS0oYi5jbGllbnRUb3B8fDApLGxlZnQ6ZC5sZWZ0KyhjLnBhZ2VYT2Zmc2V0fHxiLnNjcm9sbExlZnQpLShiLmNsaWVudExlZnR8fDApfSk6ZH0scG9zaXRpb246ZnVuY3Rpb24oKXtpZih0aGlzWzBdKXt2YXIgYSxiLGM9e3RvcDowLGxlZnQ6MH0sZD10aGlzWzBdO3JldHVybiJmaXhlZCI9PT1tLmNzcyhkLCJwb3NpdGlvbiIpP2I9ZC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTooYT10aGlzLm9mZnNldFBhcmVudCgpLGI9dGhpcy5vZmZzZXQoKSxtLm5vZGVOYW1lKGFbMF0sImh0bWwiKXx8KGM9YS5vZmZzZXQoKSksYy50b3ArPW0uY3NzKGFbMF0sImJvcmRlclRvcFdpZHRoIiwhMCksYy5sZWZ0Kz1tLmNzcyhhWzBdLCJib3JkZXJMZWZ0V2lkdGgiLCEwKSkse3RvcDpiLnRvcC1jLnRvcC1tLmNzcyhkLCJtYXJnaW5Ub3AiLCEwKSxsZWZ0OmIubGVmdC1jLmxlZnQtbS5jc3MoZCwibWFyZ2luTGVmdCIsITApfX19LG9mZnNldFBhcmVudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1hcChmdW5jdGlvbigpe3ZhciBhPXRoaXMub2Zmc2V0UGFyZW50fHxjYzt3aGlsZShhJiYhbS5ub2RlTmFtZShhLCJodG1sIikmJiJzdGF0aWMiPT09bS5jc3MoYSwicG9zaXRpb24iKSlhPWEub2Zmc2V0UGFyZW50O3JldHVybiBhfHxjY30pfX0pLG0uZWFjaCh7c2Nyb2xsTGVmdDoicGFnZVhPZmZzZXQiLHNjcm9sbFRvcDoicGFnZVlPZmZzZXQifSxmdW5jdGlvbihhLGIpe3ZhciBjPS9ZLy50ZXN0KGIpO20uZm5bYV09ZnVuY3Rpb24oZCl7cmV0dXJuIFYodGhpcyxmdW5jdGlvbihhLGQsZSl7dmFyIGY9ZGMoYSk7cmV0dXJuIHZvaWQgMD09PWU/Zj9iIGluIGY/ZltiXTpmLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudFtkXTphW2RdOnZvaWQoZj9mLnNjcm9sbFRvKGM/bShmKS5zY3JvbGxMZWZ0KCk6ZSxjP2U6bShmKS5zY3JvbGxUb3AoKSk6YVtkXT1lKX0sYSxkLGFyZ3VtZW50cy5sZW5ndGgsbnVsbCl9fSksbS5lYWNoKFsidG9wIiwibGVmdCJdLGZ1bmN0aW9uKGEsYil7bS5jc3NIb29rc1tiXT1MYShrLnBpeGVsUG9zaXRpb24sZnVuY3Rpb24oYSxjKXtyZXR1cm4gYz8oYz1KYShhLGIpLEhhLnRlc3QoYyk/bShhKS5wb3NpdGlvbigpW2JdKyJweCI6Yyk6dm9pZCAwfSl9KSxtLmVhY2goe0hlaWdodDoiaGVpZ2h0IixXaWR0aDoid2lkdGgifSxmdW5jdGlvbihhLGIpe20uZWFjaCh7cGFkZGluZzoiaW5uZXIiK2EsY29udGVudDpiLCIiOiJvdXRlciIrYX0sZnVuY3Rpb24oYyxkKXttLmZuW2RdPWZ1bmN0aW9uKGQsZSl7dmFyIGY9YXJndW1lbnRzLmxlbmd0aCYmKGN8fCJib29sZWFuIiE9dHlwZW9mIGQpLGc9Y3x8KGQ9PT0hMHx8ZT09PSEwPyJtYXJnaW4iOiJib3JkZXIiKTtyZXR1cm4gVih0aGlzLGZ1bmN0aW9uKGIsYyxkKXt2YXIgZTtyZXR1cm4gbS5pc1dpbmRvdyhiKT9iLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudFsiY2xpZW50IithXTo5PT09Yi5ub2RlVHlwZT8oZT1iLmRvY3VtZW50RWxlbWVudCxNYXRoLm1heChiLmJvZHlbInNjcm9sbCIrYV0sZVsic2Nyb2xsIithXSxiLmJvZHlbIm9mZnNldCIrYV0sZVsib2Zmc2V0IithXSxlWyJjbGllbnQiK2FdKSk6dm9pZCAwPT09ZD9tLmNzcyhiLGMsZyk6bS5zdHlsZShiLGMsZCxnKX0sYixmP2Q6dm9pZCAwLGYsbnVsbCl9fSl9KSxtLmZuLnNpemU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sZW5ndGh9LG0uZm4uYW5kU2VsZj1tLmZuLmFkZEJhY2ssImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZCYmZGVmaW5lKCJqcXVlcnkiLFtdLGZ1bmN0aW9uKCl7cmV0dXJuIG19KTt2YXIgZWM9YS5qUXVlcnksZmM9YS4kO3JldHVybiBtLm5vQ29uZmxpY3Q9ZnVuY3Rpb24oYil7cmV0dXJuIGEuJD09PW0mJihhLiQ9ZmMpLGImJmEualF1ZXJ5PT09bSYmKGEualF1ZXJ5PWVjKSxtfSx0eXBlb2YgYj09PUsmJihhLmpRdWVyeT1hLiQ9bSksbX0pOwo="></script>
<link href="data:text/css;charset=utf-8,%20%0A%40import%20url%28data%3Atext%2Fcss%3B%20charset%3Dutf%2D8%2C%2540font%252Dface%2520%257B%250A%2520%2520font%252Dfamily%253A%2520%2527Lato%2527%253B%250A%2520%2520font%252Dstyle%253A%2520normal%253B%250A%2520%2520font%252Dweight%253A%2520400%253B%250A%2520%2520src%253A%2520local%2528%2527Lato%2520Regular%2527%2529%252C%2520local%2528%2527Lato%252DRegular%2527%2529%252C%2520url%2528https%253A%252F%252Ffonts%252Egstatic%252Ecom%252Fs%252Flato%252Fv13%252Fv0SdcGFAl2aezM9Vq%255FaFTQ%252Ettf%2529%2520format%2528%2527truetype%2527%2529%253B%250A%257D%250A%2540font%252Dface%2520%257B%250A%2520%2520font%252Dfamily%253A%2520%2527Lato%2527%253B%250A%2520%2520font%252Dstyle%253A%2520normal%253B%250A%2520%2520font%252Dweight%253A%2520700%253B%250A%2520%2520src%253A%2520local%2528%2527Lato%2520Bold%2527%2529%252C%2520local%2528%2527Lato%252DBold%2527%2529%252C%2520url%2528https%253A%252F%252Ffonts%252Egstatic%252Ecom%252Fs%252Flato%252Fv13%252FDvlFBScY1r%252DFMtZSYIYoYw%252Ettf%2529%2520format%2528%2527truetype%2527%2529%253B%250A%257D%250A%2540font%252Dface%2520%257B%250A%2520%2520font%252Dfamily%253A%2520%2527Lato%2527%253B%250A%2520%2520font%252Dstyle%253A%2520italic%253B%250A%2520%2520font%252Dweight%253A%2520400%253B%250A%2520%2520src%253A%2520local%2528%2527Lato%2520Italic%2527%2529%252C%2520local%2528%2527Lato%252DItalic%2527%2529%252C%2520url%2528https%253A%252F%252Ffonts%252Egstatic%252Ecom%252Fs%252Flato%252Fv13%252FLqowQDslGv4DmUBAfWa2Vw%252Ettf%2529%2520format%2528%2527truetype%2527%2529%253B%250A%257D%250A%2540font%252Dface%2520%257B%250A%2520%2520font%252Dfamily%253A%2520%2527Lato%2527%253B%250A%2520%2520font%252Dstyle%253A%2520italic%253B%250A%2520%2520font%252Dweight%253A%2520700%253B%250A%2520%2520src%253A%2520local%2528%2527Lato%2520Bold%2520Italic%2527%2529%252C%2520local%2528%2527Lato%252DBoldItalic%2527%2529%252C%2520url%2528https%253A%252F%252Ffonts%252Egstatic%252Ecom%252Fs%252Flato%252Fv13%252FHkF%255FqI1x%255FnoxlxhrhMQYEKCWcynf%255FcDxXwCLxiixG1c%252Ettf%2529%2520format%2528%2527truetype%2527%2529%253B%250A%257D%250A%29%3B%2A%2C%3Aafter%2C%3Abefore%7Bbox%2Dsizing%3Ainherit%7Dhtml%7Bbox%2Dsizing%3Aborder%2Dbox%3Bfont%2Dfamily%3Asans%2Dserif%3B%2Dms%2Dtext%2Dsize%2Dadjust%3A100%25%3B%2Dwebkit%2Dtext%2Dsize%2Dadjust%3A100%25%7Dinput%5Btype%3Dtext%5D%2Cinput%5Btype%3Demail%5D%2Cinput%5Btype%3Dsearch%5D%2Cinput%5Btype%3Dpassword%5D%7B%2Dwebkit%2Dappearance%3Anone%3B%2Dmoz%2Dappearance%3Anone%7Darticle%2Caside%2Cdetails%2Cfigcaption%2Cfigure%2Cfooter%2Cheader%2Chgroup%2Cmain%2Cnav%2Csection%2Csummary%7Bdisplay%3Ablock%7Daudio%2Ccanvas%2Cprogress%2Cvideo%7Bdisplay%3Ainline%2Dblock%3Bvertical%2Dalign%3Abaseline%7Daudio%3Anot%28%5Bcontrols%5D%29%7Bdisplay%3Anone%3Bheight%3A0%7D%5Bhidden%5D%2Ctemplate%7Bdisplay%3Anone%7Da%7Bbackground%3A0%200%3Bcolor%3A%234183C4%3Btext%2Ddecoration%3Anone%7Da%3Aactive%2Ca%3Ahover%7Boutline%3A0%7Dabbr%5Btitle%5D%7Bborder%2Dbottom%3A1px%20dotted%7Db%2Coptgroup%2Cstrong%7Bfont%2Dweight%3A700%7Ddfn%7Bfont%2Dstyle%3Aitalic%7Dmark%7Bbackground%3A%23ff0%3Bcolor%3A%23000%7Dsmall%7Bfont%2Dsize%3A80%25%7Dsub%2Csup%7Bfont%2Dsize%3A75%25%3Bline%2Dheight%3A0%3Bposition%3Arelative%3Bvertical%2Dalign%3Abaseline%7Dsup%7Btop%3A%2D%2E5em%7Dsub%7Bbottom%3A%2D%2E25em%7Dimg%7Bborder%3A0%7Dsvg%3Anot%28%3Aroot%29%7Boverflow%3Ahidden%7Dfigure%7Bmargin%3A1em%2040px%7Dhr%7Bheight%3A0%7Dpre%2Ctextarea%7Boverflow%3Aauto%7Dcode%2Ckbd%2Cpre%2Csamp%7Bfont%2Dfamily%3Amonospace%2Cmonospace%3Bfont%2Dsize%3A1em%7Dbutton%2Cinput%2Coptgroup%2Cselect%2Ctextarea%7Bcolor%3Ainherit%3Bfont%3Ainherit%3Bmargin%3A0%7Dbutton%7Boverflow%3Avisible%7Dbutton%2Cselect%7Btext%2Dtransform%3Anone%7Dbutton%2Chtml%20input%5Btype%3Dbutton%5D%2Cinput%5Btype%3Dreset%5D%2Cinput%5Btype%3Dsubmit%5D%7B%2Dwebkit%2Dappearance%3Abutton%3Bcursor%3Apointer%7Dbutton%5Bdisabled%5D%2Chtml%20input%5Bdisabled%5D%7Bcursor%3Adefault%7Dbutton%3A%3A%2Dmoz%2Dfocus%2Dinner%2Cinput%3A%3A%2Dmoz%2Dfocus%2Dinner%7Bborder%3A0%3Bpadding%3A0%7Dinput%7Bline%2Dheight%3Anormal%7Dinput%5Btype%3Dcheckbox%5D%2Cinput%5Btype%3Dradio%5D%7Bbox%2Dsizing%3Aborder%2Dbox%3Bpadding%3A0%7Dinput%5Btype%3Dnumber%5D%3A%3A%2Dwebkit%2Dinner%2Dspin%2Dbutton%2Cinput%5Btype%3Dnumber%5D%3A%3A%2Dwebkit%2Douter%2Dspin%2Dbutton%7Bheight%3Aauto%7Dinput%5Btype%3Dsearch%5D%7B%2Dwebkit%2Dappearance%3Atextfield%7Dinput%5Btype%3Dsearch%5D%3A%3A%2Dwebkit%2Dsearch%2Dcancel%2Dbutton%2Cinput%5Btype%3Dsearch%5D%3A%3A%2Dwebkit%2Dsearch%2Ddecoration%7B%2Dwebkit%2Dappearance%3Anone%7Dfieldset%7Bborder%3A1px%20solid%20silver%3Bmargin%3A0%202px%3Bpadding%3A%2E35em%20%2E625em%20%2E75em%7Dlegend%7Bborder%3A0%3Bpadding%3A0%7Dtable%7Bborder%2Dcollapse%3Acollapse%3Bborder%2Dspacing%3A0%7Dtd%2Cth%7Bpadding%3A0%7Dbody%2Chtml%7Bheight%3A100%25%7Dhtml%7Bfont%2Dsize%3A14px%7Dbody%7Bmargin%3A0%3Bpadding%3A0%3Boverflow%2Dx%3Ahidden%3Bmin%2Dwidth%3A320px%3Bbackground%3A%23FFF%3Bfont%2Dfamily%3ALato%2C%27Helvetica%20Neue%27%2CArial%2CHelvetica%2Csans%2Dserif%3Bfont%2Dsize%3A14px%3Bline%2Dheight%3A1%2E4285em%3Bcolor%3Argba%280%2C0%2C0%2C%2E87%29%3Bfont%2Dsmoothing%3Aantialiased%7Dh1%2Ch2%2Ch3%2Ch4%2Ch5%7Bfont%2Dfamily%3ALato%2C%27Helvetica%20Neue%27%2CArial%2CHelvetica%2Csans%2Dserif%3Bline%2Dheight%3A1%2E2857em%3Bmargin%3Acalc%282rem%20%2D%20%2E14285em%29%200%201rem%3Bfont%2Dweight%3A700%3Bpadding%3A0%7Dh1%7Bmin%2Dheight%3A1rem%3Bfont%2Dsize%3A2rem%7Dh2%7Bfont%2Dsize%3A1%2E714rem%7Dh3%7Bfont%2Dsize%3A1%2E28rem%7Dh4%7Bfont%2Dsize%3A1%2E071rem%7Dh5%7Bfont%2Dsize%3A1rem%7Dh1%3Afirst%2Dchild%2Ch2%3Afirst%2Dchild%2Ch3%3Afirst%2Dchild%2Ch4%3Afirst%2Dchild%2Ch5%3Afirst%2Dchild%2Cp%3Afirst%2Dchild%7Bmargin%2Dtop%3A0%7Dh1%3Alast%2Dchild%2Ch2%3Alast%2Dchild%2Ch3%3Alast%2Dchild%2Ch4%3Alast%2Dchild%2Ch5%3Alast%2Dchild%2Cp%3Alast%2Dchild%7Bmargin%2Dbottom%3A0%7Dp%7Bmargin%3A0%200%201em%3Bline%2Dheight%3A1%2E4285em%7Da%3Ahover%7Bcolor%3A%231e70bf%3Btext%2Ddecoration%3Anone%7D%3A%3A%2Dwebkit%2Dselection%7Bbackground%2Dcolor%3A%23CCE2FF%3Bcolor%3Argba%280%2C0%2C0%2C%2E87%29%7D%3A%3A%2Dmoz%2Dselection%7Bbackground%2Dcolor%3A%23CCE2FF%3Bcolor%3Argba%280%2C0%2C0%2C%2E87%29%7D%3A%3Aselection%7Bbackground%2Dcolor%3A%23CCE2FF%3Bcolor%3Argba%280%2C0%2C0%2C%2E87%29%7Dinput%3A%3A%2Dwebkit%2Dselection%2Ctextarea%3A%3A%2Dwebkit%2Dselection%7Bbackground%2Dcolor%3Argba%28100%2C100%2C100%2C%2E4%29%3Bcolor%3Argba%280%2C0%2C0%2C%2E87%29%7Dinput%3A%3A%2Dmoz%2Dselection%2Ctextarea%3A%3A%2Dmoz%2Dselection%7Bbackground%2Dcolor%3Argba%28100%2C100%2C100%2C%2E4%29%3Bcolor%3Argba%280%2C0%2C0%2C%2E87%29%7Dinput%3A%3Aselection%2Ctextarea%3A%3Aselection%7Bbackground%2Dcolor%3Argba%28100%2C100%2C100%2C%2E4%29%3Bcolor%3Argba%280%2C0%2C0%2C%2E87%29%7D%2Eui%2Ebutton%7Bcursor%3Apointer%3Bdisplay%3Ainline%2Dblock%3Bmin%2Dheight%3A1em%3Boutline%3A0%3Bborder%3Anone%3Bvertical%2Dalign%3Abaseline%3Bbackground%3A%23E0E1E2%3Bcolor%3Argba%280%2C0%2C0%2C%2E6%29%3Bfont%2Dfamily%3ALato%2C%27Helvetica%20Neue%27%2CArial%2CHelvetica%2Csans%2Dserif%3Bmargin%3A0%20%2E25em%200%200%3Bpadding%3A%2E78571429em%201%2E5em%3Btext%2Dtransform%3Anone%3Btext%2Dshadow%3Anone%3Bfont%2Dweight%3A700%3Bline%2Dheight%3A1em%3Bfont%2Dstyle%3Anormal%3Btext%2Dalign%3Acenter%3Btext%2Ddecoration%3Anone%3Bborder%2Dradius%3A%2E28571429rem%3Bbox%2Dshadow%3A0%200%200%201px%20transparent%20inset%2C0%200%200%200%20rgba%2834%2C36%2C38%2C%2E15%29%20inset%3B%2Dwebkit%2Duser%2Dselect%3Anone%3B%2Dmoz%2Duser%2Dselect%3Anone%3B%2Dms%2Duser%2Dselect%3Anone%3Buser%2Dselect%3Anone%3B%2Dwebkit%2Dtransition%3Aopacity%20%2E1s%20ease%2Cbackground%2Dcolor%20%2E1s%20ease%2Ccolor%20%2E1s%20ease%2Cbox%2Dshadow%20%2E1s%20ease%2Cbackground%20%2E1s%20ease%3Btransition%3Aopacity%20%2E1s%20ease%2Cbackground%2Dcolor%20%2E1s%20ease%2Ccolor%20%2E1s%20ease%2Cbox%2Dshadow%20%2E1s%20ease%2Cbackground%20%2E1s%20ease%3Bwill%2Dchange%3A%27%27%3B%2Dwebkit%2Dtap%2Dhighlight%2Dcolor%3Atransparent%7D%2Eui%2Ebutton%3Ahover%7Bbackground%2Dcolor%3A%23CACBCD%3Bbackground%2Dimage%3Anone%3Bbox%2Dshadow%3A0%200%200%201px%20transparent%20inset%2C0%200%200%200%20rgba%2834%2C36%2C38%2C%2E15%29%20inset%3Bcolor%3Argba%280%2C0%2C0%2C%2E8%29%7D%2Eui%2Ebutton%3Ahover%20%2Eicon%7Bopacity%3A%2E85%7D%2Eui%2Ebutton%3Afocus%7Bbackground%2Dcolor%3A%23CACBCD%3Bcolor%3Argba%280%2C0%2C0%2C%2E8%29%3Bbackground%2Dimage%3A%27%27%21important%3Bbox%2Dshadow%3A%27%27%21important%7D%2Eui%2Ebutton%3Afocus%20%2Eicon%7Bopacity%3A%2E85%7D%2Eui%2Eactive%2Ebutton%3Aactive%2C%2Eui%2Ebutton%3Aactive%7Bbackground%2Dcolor%3A%23BABBBC%3Bbackground%2Dimage%3A%27%27%3Bcolor%3Argba%280%2C0%2C0%2C%2E9%29%3Bbox%2Dshadow%3A0%200%200%201px%20transparent%20inset%2Cnone%7D%2Eui%2Eactive%2Ebutton%7Bbackground%2Dcolor%3A%23C0C1C2%3Bbackground%2Dimage%3Anone%3Bbox%2Dshadow%3A0%200%200%201px%20transparent%20inset%3Bcolor%3Argba%280%2C0%2C0%2C%2E95%29%7D%2Eui%2Eactive%2Ebutton%3Ahover%7Bbackground%2Dcolor%3A%23C0C1C2%3Bbackground%2Dimage%3Anone%3Bcolor%3Argba%280%2C0%2C0%2C%2E95%29%7D%2Eui%2Eactive%2Ebutton%3Aactive%7Bbackground%2Dcolor%3A%23C0C1C2%3Bbackground%2Dimage%3Anone%7D%2Eui%2Eloading%2Eloading%2Eloading%2Eloading%2Eloading%2Eloading%2Ebutton%7Bposition%3Arelative%3Bcursor%3Adefault%3Btext%2Dshadow%3Anone%21important%3Bcolor%3Atransparent%21important%3Bopacity%3A1%3Bpointer%2Devents%3Aauto%3B%2Dwebkit%2Dtransition%3Aall%200s%20linear%2Copacity%20%2E1s%20ease%3Btransition%3Aall%200s%20linear%2Copacity%20%2E1s%20ease%7D%2Eui%2Eloading%2Ebutton%3Abefore%7Bposition%3Aabsolute%3Bcontent%3A%27%27%3Btop%3A50%25%3Bleft%3A50%25%3Bmargin%3A%2D%2E64285714em%200%200%20%2D%2E64285714em%3Bwidth%3A1%2E28571429em%3Bheight%3A1%2E28571429em%3Bborder%2Dradius%3A500rem%3Bborder%3A%2E2em%20solid%20rgba%280%2C0%2C0%2C%2E15%29%7D%2Eui%2Eloading%2Ebutton%3Aafter%7Bposition%3Aabsolute%3Bcontent%3A%27%27%3Btop%3A50%25%3Bleft%3A50%25%3Bmargin%3A%2D%2E64285714em%200%200%20%2D%2E64285714em%3Bwidth%3A1%2E28571429em%3Bheight%3A1%2E28571429em%3B%2Dwebkit%2Danimation%3Abutton%2Dspin%20%2E6s%20linear%3Banimation%3Abutton%2Dspin%20%2E6s%20linear%3B%2Dwebkit%2Danimation%2Diteration%2Dcount%3Ainfinite%3Banimation%2Diteration%2Dcount%3Ainfinite%3Bborder%2Dradius%3A500rem%3Bborder%2Dcolor%3A%23FFF%20transparent%20transparent%3Bborder%2Dstyle%3Asolid%3Bborder%2Dwidth%3A%2E2em%3Bbox%2Dshadow%3A0%200%200%201px%20transparent%7D%2Eui%2Elabeled%2Eicon%2Eloading%2Ebutton%20%2Eicon%7Bbackground%2Dcolor%3Atransparent%3Bbox%2Dshadow%3Anone%7D%40%2Dwebkit%2Dkeyframes%20button%2Dspin%7Bfrom%7B%2Dwebkit%2Dtransform%3Arotate%280%29%3Btransform%3Arotate%280%29%7Dto%7B%2Dwebkit%2Dtransform%3Arotate%28360deg%29%3Btransform%3Arotate%28360deg%29%7D%7D%40keyframes%20button%2Dspin%7Bfrom%7B%2Dwebkit%2Dtransform%3Arotate%280%29%3Btransform%3Arotate%280%29%7Dto%7B%2Dwebkit%2Dtransform%3Arotate%28360deg%29%3Btransform%3Arotate%28360deg%29%7D%7D%2Eui%2Ebasic%2Eloading%2Ebutton%3Anot%28%2Einverted%29%3Abefore%7Bborder%2Dcolor%3Argba%280%2C0%2C0%2C%2E1%29%7D%2Eui%2Ebasic%2Eloading%2Ebutton%3Anot%28%2Einverted%29%3Aafter%7Bborder%2Dtop%2Dcolor%3A%23767676%7D%2Eui%2Ebutton%3Adisabled%2C%2Eui%2Ebuttons%20%2Edisabled%2Ebutton%2C%2Eui%2Edisabled%2Eactive%2Ebutton%2C%2Eui%2Edisabled%2Ebutton%2C%2Eui%2Edisabled%2Ebutton%3Ahover%7Bcursor%3Adefault%3Bopacity%3A%2E45%21important%3Bbackground%2Dimage%3Anone%21important%3Bbox%2Dshadow%3Anone%21important%3Bpointer%2Devents%3Anone%21important%7D%2Eui%2Ebasic%2Ebuttons%20%2Eui%2Edisabled%2Ebutton%7Bborder%2Dcolor%3Argba%2834%2C36%2C38%2C%2E5%29%7D%2Eui%2Eanimated%2Ebutton%7Bposition%3Arelative%3Boverflow%3Ahidden%3Bpadding%2Dright%3A0%21important%3Bvertical%2Dalign%3Amiddle%3Bz%2Dindex%3A1%7D%2Eui%2Eanimated%2Ebutton%20%2Econtent%7Bwill%2Dchange%3Atransform%2Copacity%7D%2Eui%2Eanimated%2Ebutton%20%2Evisible%2Econtent%7Bposition%3Arelative%3Bmargin%2Dright%3A1%2E5em%3Bleft%3Aauto%3Bright%3A0%7D%2Eui%2Eanimated%2Ebutton%20%2Ehidden%2Econtent%7Bposition%3Aabsolute%3Bwidth%3A100%25%3Btop%3A50%25%3Bleft%3Aauto%3Bright%3A%2D100%25%3Bmargin%2Dtop%3A%2D%2E5em%7D%2Eui%2Eanimated%2Ebutton%20%2Ehidden%2Econtent%2C%2Eui%2Eanimated%2Ebutton%20%2Evisible%2Econtent%7B%2Dwebkit%2Dtransition%3Aright%20%2E3s%20ease%200s%3Btransition%3Aright%20%2E3s%20ease%200s%7D%2Eui%2Eanimated%2Ebutton%3Afocus%20%2Evisible%2Econtent%2C%2Eui%2Eanimated%2Ebutton%3Ahover%20%2Evisible%2Econtent%7Bleft%3Aauto%3Bright%3A200%25%7D%2Eui%2Eanimated%2Ebutton%3Afocus%20%2Ehidden%2Econtent%2C%2Eui%2Eanimated%2Ebutton%3Ahover%20%2Ehidden%2Econtent%7Bleft%3Aauto%3Bright%3A0%7D%2Eui%2Evertical%2Eanimated%2Ebutton%20%2Ehidden%2Econtent%2C%2Eui%2Evertical%2Eanimated%2Ebutton%20%2Evisible%2Econtent%7B%2Dwebkit%2Dtransition%3Atop%20%2E3s%20ease%2C%2Dwebkit%2Dtransform%20%2E3s%20ease%3Btransition%3Atop%20%2E3s%20ease%2C%2Dwebkit%2Dtransform%20%2E3s%20ease%3Btransition%3Atop%20%2E3s%20ease%2Ctransform%20%2E3s%20ease%3Btransition%3Atop%20%2E3s%20ease%2Ctransform%20%2E3s%20ease%2C%2Dwebkit%2Dtransform%20%2E3s%20ease%7D%2Eui%2Evertical%2Eanimated%2Ebutton%20%2Evisible%2Econtent%7B%2Dwebkit%2Dtransform%3AtranslateY%280%29%3B%2Dms%2Dtransform%3AtranslateY%280%29%3Btransform%3AtranslateY%280%29%3Bright%3Aauto%7D%2Eui%2Evertical%2Eanimated%2Ebutton%20%2Ehidden%2Econtent%7Btop%3A%2D50%25%3Bleft%3A0%3Bright%3Aauto%7D%2Eui%2Evertical%2Eanimated%2Ebutton%3Afocus%20%2Evisible%2Econtent%2C%2Eui%2Evertical%2Eanimated%2Ebutton%3Ahover%20%2Evisible%2Econtent%7B%2Dwebkit%2Dtransform%3AtranslateY%28200%25%29%3B%2Dms%2Dtransform%3AtranslateY%28200%25%29%3Btransform%3AtranslateY%28200%25%29%3Bright%3Aauto%7D%2Eui%2Evertical%2Eanimated%2Ebutton%3Afocus%20%2Ehidden%2Econtent%2C%2Eui%2Evertical%2Eanimated%2Ebutton%3Ahover%20%2Ehidden%2Econtent%7Btop%3A50%25%3Bright%3Aauto%7D%2Eui%2Efade%2Eanimated%2Ebutton%20%2Ehidden%2Econtent%2C%2Eui%2Efade%2Eanimated%2Ebutton%20%2Evisible%2Econtent%7B%2Dwebkit%2Dtransition%3Aopacity%20%2E3s%20ease%2C%2Dwebkit%2Dtransform%20%2E3s%20ease%3Btransition%3Aopacity%20%2E3s%20ease%2C%2Dwebkit%2Dtransform%20%2E3s%20ease%3Btransition%3Aopacity%20%2E3s%20ease%2Ctransform%20%2E3s%20ease%3Btransition%3Aopacity%20%2E3s%20ease%2Ctransform%20%2E3s%20ease%2C%2Dwebkit%2Dtransform%20%2E3s%20ease%7D%2Eui%2Efade%2Eanimated%2Ebutton%20%2Evisible%2Econtent%7Bleft%3Aauto%3Bright%3Aauto%3Bopacity%3A1%3B%2Dwebkit%2Dtransform%3Ascale%281%29%3B%2Dms%2Dtransform%3Ascale%281%29%3Btransform%3Ascale%281%29%7D%2Eui%2Efade%2Eanimated%2Ebutton%20%2Ehidden%2Econtent%7Bopacity%3A0%3Bleft%3A0%3Bright%3Aauto%3B%2Dwebkit%2Dtransform%3Ascale%281%2E5%29%3B%2Dms%2Dtransform%3Ascale%281%2E5%29%3Btransform%3Ascale%281%2E5%29%7D%2Eui%2Efade%2Eanimated%2Ebutton%3Afocus%20%2Evisible%2Econtent%2C%2Eui%2Efade%2Eanimated%2Ebutton%3Ahover%20%2Evisible%2Econtent%7Bleft%3Aauto%3Bright%3Aauto%3Bopacity%3A0%3B%2Dwebkit%2Dtransform%3Ascale%28%2E75%29%3B%2Dms%2Dtransform%3Ascale%28%2E75%29%3Btransform%3Ascale%28%2E75%29%7D%2Eui%2Efade%2Eanimated%2Ebutton%3Afocus%20%2Ehidden%2Econtent%2C%2Eui%2Efade%2Eanimated%2Ebutton%3Ahover%20%2Ehidden%2Econtent%7Bleft%3A0%3Bright%3Aauto%3Bopacity%3A1%3B%2Dwebkit%2Dtransform%3Ascale%281%29%3B%2Dms%2Dtransform%3Ascale%281%29%3Btransform%3Ascale%281%29%7D%2Eui%2Einverted%2Ebutton%7Bbox%2Dshadow%3A0%200%200%202px%20%23FFF%20inset%21important%3Bbackground%3A0%200%3Bcolor%3A%23FFF%3Btext%2Dshadow%3Anone%21important%7D%2Eui%2Einverted%2Ebuttons%20%2Ebutton%7Bmargin%3A0%200%200%20%2D2px%7D%2Eui%2Einverted%2Ebuttons%20%2Ebutton%3Afirst%2Dchild%7Bmargin%2Dleft%3A0%7D%2Eui%2Einverted%2Evertical%2Ebuttons%20%2Ebutton%7Bmargin%3A0%200%20%2D2px%7D%2Eui%2Einverted%2Evertical%2Ebuttons%20%2Ebutton%3Afirst%2Dchild%7Bmargin%2Dtop%3A0%7D%2Eui%2Einverted%2Ebutton%2Eactive%2C%2Eui%2Einverted%2Ebutton%3Afocus%2C%2Eui%2Einverted%2Ebutton%3Ahover%7Bbackground%3A%23FFF%3Bbox%2Dshadow%3A0%200%200%202px%20%23FFF%20inset%21important%3Bcolor%3Argba%280%2C0%2C0%2C%2E8%29%7D%2Eui%2Einverted%2Ebutton%2Eactive%3Afocus%7Bbackground%3A%23DCDDDE%3Bbox%2Dshadow%3A0%200%200%202px%20%23DCDDDE%20inset%21important%3Bcolor%3Argba%280%2C0%2C0%2C%2E8%29%7D%2Eui%2Elabeled%2Ebutton%3Anot%28%2Eicon%29%7Bdisplay%3A%2Dwebkit%2Dinline%2Dbox%3Bdisplay%3A%2Dwebkit%2Dinline%2Dflex%3Bdisplay%3A%2Dms%2Dinline%2Dflexbox%3Bdisplay%3Ainline%2Dflex%3B%2Dwebkit%2Dbox%2Dorient%3Ahorizontal%3B%2Dwebkit%2Dbox%2Ddirection%3Anormal%3B%2Dwebkit%2Dflex%2Ddirection%3Arow%3B%2Dms%2Dflex%2Ddirection%3Arow%3Bflex%2Ddirection%3Arow%3Bbackground%3A0%200%21important%3Bpadding%3A0%21important%3Bborder%3Anone%21important%3Bbox%2Dshadow%3Anone%21important%7D%2Eui%2Elabeled%2Ebutton%3E%2Ebutton%7Bmargin%3A0%7D%2Eui%2Elabeled%2Ebutton%3E%2Elabel%7Bdisplay%3A%2Dwebkit%2Dbox%3Bdisplay%3A%2Dwebkit%2Dflex%3Bdisplay%3A%2Dms%2Dflexbox%3Bdisplay%3Aflex%3B%2Dwebkit%2Dbox%2Dalign%3Acenter%3B%2Dwebkit%2Dalign%2Ditems%3Acenter%3B%2Dms%2Dflex%2Dalign%3Acenter%3Balign%2Ditems%3Acenter%3Bmargin%3A0%200%200%20%2D1px%21important%3Bpadding%3A%27%27%3Bfont%2Dsize%3A1em%3Bborder%2Dcolor%3Argba%2834%2C36%2C38%2C%2E15%29%7D%2Eui%2Elabeled%2Ebutton%3E%2Etag%2Elabel%3Abefore%7Bwidth%3A1%2E85em%3Bheight%3A1%2E85em%7D%2Eui%2Elabeled%2Ebutton%3Anot%28%5Bclass%2A%3D%22left%20labeled%22%5D%29%3E%2Ebutton%7Bborder%2Dtop%2Dright%2Dradius%3A0%3Bborder%2Dbottom%2Dright%2Dradius%3A0%7D%2Eui%2Elabeled%2Ebutton%3Anot%28%5Bclass%2A%3D%22left%20labeled%22%5D%29%3E%2Elabel%2C%2Eui%5Bclass%2A%3D%22left%20labeled%22%5D%2Ebutton%3E%2Ebutton%7Bborder%2Dtop%2Dleft%2Dradius%3A0%3Bborder%2Dbottom%2Dleft%2Dradius%3A0%7D%2Eui%5Bclass%2A%3D%22left%20labeled%22%5D%2Ebutton%3E%2Elabel%7Bborder%2Dtop%2Dright%2Dradius%3A0%3Bborder%2Dbottom%2Dright%2Dradius%3A0%7D%2Eui%2Efacebook%2Ebutton%7Bbackground%2Dcolor%3A%233B5998%3Bcolor%3A%23FFF%3Btext%2Dshadow%3Anone%3Bbackground%2Dimage%3Anone%3Bbox%2Dshadow%3A0%200%200%200%20rgba%2834%2C36%2C38%2C%2E15%29%20inset%7D%2Eui%2Efacebook%2Ebutton%3Ahover%7Bbackground%2Dcolor%3A%23304d8a%3Bcolor%3A%23FFF%3Btext%2Dshadow%3Anone%7D%2Eui%2Efacebook%2Ebutton%3Aactive%7Bbackground%2Dcolor%3A%232d4373%3Bcolor%3A%23FFF%3Btext%2Dshadow%3Anone%7D%2Eui%2Etwitter%2Ebutton%7Bbackground%2Dcolor%3A%2355ACEE%3Bcolor%3A%23FFF%3Btext%2Dshadow%3Anone%3Bbackground%2Dimage%3Anone%3Bbox%2Dshadow%3A0%200%200%200%20rgba%2834%2C36%2C38%2C%2E15%29%20inset%7D%2Eui%2Etwitter%2Ebutton%3Ahover%7Bbackground%2Dcolor%3A%2335a2f4%3Bcolor%3A%23FFF%3Btext%2Dshadow%3Anone%7D%2Eui%2Etwitter%2Ebutton%3Aactive%7Bbackground%2Dcolor%3A%232795e9%3Bcolor%3A%23FFF%3Btext%2Dshadow%3Anone%7D%2Eui%2Egoogle%2Eplus%2Ebutton%7Bbackground%2Dcolor%3A%23DD4B39%3Bcolor%3A%23FFF%3Btext%2Dshadow%3Anone%3Bbackground%2Dimage%3Anone%3Bbox%2Dshadow%3A0%200%200%200%20rgba%2834%2C36%2C38%2C%2E15%29%20inset%7D%2Eui%2Egoogle%2Eplus%2Ebutton%3Ahover%7Bbackground%2Dcolor%3A%23e0321c%3Bcolor%3A%23FFF%3Btext%2Dshadow%3Anone%7D%2Eui%2Egoogle%2Eplus%2Ebutton%3Aactive%7Bbackground%2Dcolor%3A%23c23321%3Bcolor%3A%23FFF%3Btext%2Dshadow%3Anone%7D%2Eui%2Elinkedin%2Ebutton%7Bbackground%2Dcolor%3A%231F88BE%3Bcolor%3A%23FFF%3Btext%2Dshadow%3Anone%7D%2Eui%2Elinkedin%2Ebutton%3Ahover%7Bbackground%2Dcolor%3A%23147baf%3Bcolor%3A%23FFF%3Btext%2Dshadow%3Anone%7D%2Eui%2Elinkedin%2Ebutton%3Aactive%7Bbackground%2Dcolor%3A%23186992%3Bcolor%3A%23FFF%3Btext%2Dshadow%3Anone%7D%2Eui%2Eyoutube%2Ebutton%7Bbackground%2Dcolor%3A%23CC181E%3Bcolor%3A%23FFF%3Btext%2Dshadow%3Anone%3Bbackground%2Dimage%3Anone%3Bbox%2Dshadow%3A0%200%200%200%20rgba%2834%2C36%2C38%2C%2E15%29%20inset%7D%2Eui%2Eyoutube%2Ebutton%3Ahover%7Bbackground%2Dcolor%3A%23bd0d13%3Bcolor%3A%23FFF%3Btext%2Dshadow%3Anone%7D%2Eui%2Eyoutube%2Ebutton%3Aactive%7Bbackground%2Dcolor%3A%239e1317%3Bcolor%3A%23FFF%3Btext%2Dshadow%3Anone%7D%2Eui%2Einstagram%2Ebutton%7Bbackground%2Dcolor%3A%2349769C%3Bcolor%3A%23FFF%3Btext%2Dshadow%3Anone%3Bbackground%2Dimage%3Anone%3Bbox%2Dshadow%3A0%200%200%200%20rgba%2834%2C36%2C38%2C%2E15%29%20inset%7D%2Eui%2Einstagram%2Ebutton%3Ahover%7Bbackground%2Dcolor%3A%233d698e%3Bcolor%3A%23FFF%3Btext%2Dshadow%3Anone%7D%2Eui%2Einstagram%2Ebutton%3Aactive%7Bbackground%2Dcolor%3A%23395c79%3Bcolor%3A%23FFF%3Btext%2Dshadow%3Anone%7D%2Eui%2Epinterest%2Ebutton%7Bbackground%2Dcolor%3A%23BD081C%3Bcolor%3A%23FFF%3Btext%2Dshadow%3Anone%3Bbackground%2Dimage%3Anone%3Bbox%2Dshadow%3A0%200%200%200%20rgba%2834%2C36%2C38%2C%2E15%29%20inset%7D%2Eui%2Epinterest%2Ebutton%3Ahover%7Bbackground%2Dcolor%3A%23ac0013%3Bcolor%3A%23FFF%3Btext%2Dshadow%3Anone%7D%2Eui%2Epinterest%2Ebutton%3Aactive%7Bbackground%2Dcolor%3A%238c0615%3Bcolor%3A%23FFF%3Btext%2Dshadow%3Anone%7D%2Eui%2Evk%2Ebutton%7Bbackground%2Dcolor%3A%234D7198%3Bcolor%3A%23FFF%3Bbackground%2Dimage%3Anone%3Bbox%2Dshadow%3A0%200%200%200%20rgba%2834%2C36%2C38%2C%2E15%29%20inset%7D%2Eui%2Evk%2Ebutton%3Ahover%7Bbackground%2Dcolor%3A%2341648a%3Bcolor%3A%23FFF%7D%2Eui%2Evk%2Ebutton%3Aactive%7Bbackground%2Dcolor%3A%233c5876%3Bcolor%3A%23FFF%7D%2Eui%2Ebutton%3E%2Eicon%3Anot%28%2Ebutton%29%7Bheight%3A%2E85714286em%3Bopacity%3A%2E8%3Bmargin%3A0%20%2E42857143em%200%20%2D%2E21428571em%3B%2Dwebkit%2Dtransition%3Aopacity%20%2E1s%20ease%3Btransition%3Aopacity%20%2E1s%20ease%3Bvertical%2Dalign%3A%27%27%3Bcolor%3A%27%27%7D%2Eui%2Ebutton%3Anot%28%2Eicon%29%3E%2Eicon%3Anot%28%2Ebutton%29%3Anot%28%2Edropdown%29%7Bmargin%3A0%20%2E42857143em%200%20%2D%2E21428571em%7D%2Eui%2Ebutton%3Anot%28%2Eicon%29%3E%2Eright%2Eicon%3Anot%28%2Ebutton%29%3Anot%28%2Edropdown%29%7Bmargin%3A0%20%2D%2E21428571em%200%20%2E42857143em%7D%2Eui%5Bclass%2A%3D%22left%20floated%22%5D%2Ebutton%2C%2Eui%5Bclass%2A%3D%22left%20floated%22%5D%2Ebuttons%7Bfloat%3Aleft%3Bmargin%2Dleft%3A0%3Bmargin%2Dright%3A%2E25em%7D%2Eui%5Bclass%2A%3D%22right%20floated%22%5D%2Ebutton%2C%2Eui%5Bclass%2A%3D%22right%20floated%22%5D%2Ebuttons%7Bfloat%3Aright%3Bmargin%2Dright%3A0%3Bmargin%2Dleft%3A%2E25em%7D%2Eui%2Ecompact%2Ebutton%2C%2Eui%2Ecompact%2Ebuttons%20%2Ebutton%7Bpadding%3A%2E58928571em%201%2E125em%7D%2Eui%2Ecompact%2Eicon%2Ebutton%2C%2Eui%2Ecompact%2Eicon%2Ebuttons%20%2Ebutton%7Bpadding%3A%2E58928571em%7D%2Eui%2Ecompact%2Elabeled%2Eicon%2Ebutton%2C%2Eui%2Ecompact%2Elabeled%2Eicon%2Ebuttons%20%2Ebutton%7Bpadding%3A%2E58928571em%203%2E69642857em%7D%2Eui%2Emini%2Ebutton%2C%2Eui%2Emini%2Ebuttons%20%2Ebutton%2C%2Eui%2Emini%2Ebuttons%20%2Eor%7Bfont%2Dsize%3A%2E78571429rem%7D%2Eui%2Etiny%2Ebutton%2C%2Eui%2Etiny%2Ebuttons%20%2Ebutton%2C%2Eui%2Etiny%2Ebuttons%20%2Eor%7Bfont%2Dsize%3A%2E85714286rem%7D%2Eui%2Esmall%2Ebutton%2C%2Eui%2Esmall%2Ebuttons%20%2Ebutton%2C%2Eui%2Esmall%2Ebuttons%20%2Eor%7Bfont%2Dsize%3A%2E92857143rem%7D%2Eui%2Ebutton%2C%2Eui%2Ebuttons%20%2Ebutton%2C%2Eui%2Ebuttons%20%2Eor%7Bfont%2Dsize%3A1rem%7D%2Eui%2Elarge%2Ebutton%2C%2Eui%2Elarge%2Ebuttons%20%2Ebutton%2C%2Eui%2Elarge%2Ebuttons%20%2Eor%7Bfont%2Dsize%3A1%2E14285714rem%7D%2Eui%2Ebig%2Ebutton%2C%2Eui%2Ebig%2Ebuttons%20%2Ebutton%2C%2Eui%2Ebig%2Ebuttons%20%2Eor%7Bfont%2Dsize%3A1%2E28571429rem%7D%2Eui%2Ehuge%2Ebutton%2C%2Eui%2Ehuge%2Ebuttons%20%2Ebutton%2C%2Eui%2Ehuge%2Ebuttons%20%2Eor%7Bfont%2Dsize%3A1%2E42857143rem%7D%2Eui%2Emassive%2Ebutton%2C%2Eui%2Emassive%2Ebuttons%20%2Ebutton%2C%2Eui%2Emassive%2Ebuttons%20%2Eor%7Bfont%2Dsize%3A1%2E71428571rem%7D%2Eui%2Eicon%2Ebutton%2C%2Eui%2Eicon%2Ebuttons%20%2Ebutton%7Bpadding%3A%2E78571429em%7D%2Eui%2Eicon%2Ebutton%3E%2Eicon%2C%2Eui%2Eicon%2Ebuttons%20%2Ebutton%3E%2Eicon%7Bopacity%3A%2E9%3Bmargin%3A0%3Bvertical%2Dalign%3Atop%7D%2Eui%2Ebasic%2Ebutton%2C%2Eui%2Ebasic%2Ebuttons%20%2Ebutton%7Bbackground%3A0%200%21important%3Bcolor%3Argba%280%2C0%2C0%2C%2E6%29%21important%3Bfont%2Dweight%3A400%3Bborder%2Dradius%3A%2E28571429rem%3Btext%2Dtransform%3Anone%3Btext%2Dshadow%3Anone%21important%3Bbox%2Dshadow%3A0%200%200%201px%20rgba%2834%2C36%2C38%2C%2E15%29%20inset%7D%2Eui%2Ebasic%2Ebuttons%7Bbox%2Dshadow%3Anone%3Bborder%3A1px%20solid%20rgba%2834%2C36%2C38%2C%2E15%29%3Bborder%2Dradius%3A%2E28571429rem%7D%2Eui%2Ebasic%2Ebutton%3Afocus%2C%2Eui%2Ebasic%2Ebutton%3Ahover%2C%2Eui%2Ebasic%2Ebuttons%20%2Ebutton%3Afocus%2C%2Eui%2Ebasic%2Ebuttons%20%2Ebutton%3Ahover%7Bbackground%3A%23FFF%21important%3Bcolor%3Argba%280%2C0%2C0%2C%2E8%29%21important%3Bbox%2Dshadow%3A0%200%200%201px%20rgba%2834%2C36%2C38%2C%2E35%29%20inset%2C0%200%200%200%20rgba%2834%2C36%2C38%2C%2E15%29%20inset%7D%2Eui%2Ebasic%2Ebutton%3Aactive%2C%2Eui%2Ebasic%2Ebuttons%20%2Ebutton%3Aactive%7Bbackground%3A%23F8F8F8%21important%3Bcolor%3Argba%280%2C0%2C0%2C%2E9%29%21important%3Bbox%2Dshadow%3A0%200%200%201px%20rgba%280%2C0%2C0%2C%2E15%29%20inset%2C0%201px%204px%200%20rgba%2834%2C36%2C38%2C%2E15%29%20inset%7D%2Eui%2Ebasic%2Eactive%2Ebutton%2C%2Eui%2Ebasic%2Ebuttons%20%2Eactive%2Ebutton%7Bbackground%3Argba%280%2C0%2C0%2C%2E05%29%21important%3Bbox%2Dshadow%3A%27%27%21important%3Bcolor%3Argba%280%2C0%2C0%2C%2E95%29%7D%2Eui%2Ebasic%2Eactive%2Ebutton%3Ahover%2C%2Eui%2Ebasic%2Ebuttons%20%2Eactive%2Ebutton%3Ahover%7Bbackground%2Dcolor%3Argba%280%2C0%2C0%2C%2E05%29%7D%2Eui%2Ebasic%2Ebuttons%20%2Ebutton%3Ahover%7Bbox%2Dshadow%3A0%200%200%201px%20rgba%2834%2C36%2C38%2C%2E35%29%20inset%2C0%200%200%200%20rgba%2834%2C36%2C38%2C%2E15%29%20inset%20inset%7D%2Eui%2Ebasic%2Ebuttons%20%2Ebutton%3Aactive%7Bbox%2Dshadow%3A0%200%200%201px%20rgba%280%2C0%2C0%2C%2E15%29%20inset%2C0%201px%204px%200%20rgba%2834%2C36%2C38%2C%2E15%29%20inset%20inset%7D%2Eui%2Ebasic%2Ebuttons%20%2Eactive%2Ebutton%7Bbox%2Dshadow%3Argba%2834%2C36%2C38%2C%2E35%29%20inset%7D%2Eui%2Ebasic%2Einverted%2Ebutton%2C%2Eui%2Ebasic%2Einverted%2Ebuttons%20%2Ebutton%7Bbackground%2Dcolor%3Atransparent%21important%3Bcolor%3A%23F9FAFB%21important%3Bbox%2Dshadow%3A0%200%200%202px%20rgba%28255%2C255%2C255%2C%2E5%29%20inset%21important%7D%2Eui%2Ebasic%2Einverted%2Ebutton%3Afocus%2C%2Eui%2Ebasic%2Einverted%2Ebutton%3Ahover%2C%2Eui%2Ebasic%2Einverted%2Ebuttons%20%2Ebutton%3Afocus%2C%2Eui%2Ebasic%2Einverted%2Ebuttons%20%2Ebutton%3Ahover%7Bcolor%3A%23FFF%21important%3Bbox%2Dshadow%3A0%200%200%202px%20%23fff%20inset%21important%7D%2Eui%2Ebasic%2Einverted%2Ebutton%3Aactive%2C%2Eui%2Ebasic%2Einverted%2Ebuttons%20%2Ebutton%3Aactive%7Bbackground%2Dcolor%3Argba%28255%2C255%2C255%2C%2E08%29%21important%3Bcolor%3A%23FFF%21important%3Bbox%2Dshadow%3A0%200%200%202px%20rgba%28255%2C255%2C255%2C%2E9%29%20inset%21important%7D%2Eui%2Ebasic%2Einverted%2Eactive%2Ebutton%2C%2Eui%2Ebasic%2Einverted%2Ebuttons%20%2Eactive%2Ebutton%7Bbackground%2Dcolor%3Argba%28255%2C255%2C255%2C%2E08%29%3Bcolor%3A%23FFF%3Btext%2Dshadow%3Anone%3Bbox%2Dshadow%3A0%200%200%202px%20rgba%28255%2C255%2C255%2C%2E7%29%20inset%7D%2Eui%2Ebasic%2Einverted%2Eactive%2Ebutton%3Ahover%2C%2Eui%2Ebasic%2Einverted%2Ebuttons%20%2Eactive%2Ebutton%3Ahover%7Bbackground%2Dcolor%3Argba%28255%2C255%2C255%2C%2E15%29%3Bbox%2Dshadow%3A0%200%200%202px%20%23fff%20inset%21important%7D%2Eui%2Ebasic%2Ebuttons%20%2Ebutton%7Bborder%2Dradius%3A0%3Bborder%2Dleft%3A1px%20solid%20rgba%2834%2C36%2C38%2C%2E15%29%3Bbox%2Dshadow%3Anone%7D%2Eui%2Ebasic%2Evertical%2Ebuttons%20%2Ebutton%7Bborder%2Dleft%3Anone%3Bborder%2Dleft%2Dwidth%3A0%3Bborder%2Dtop%3A1px%20solid%20rgba%2834%2C36%2C38%2C%2E15%29%7D%2Eui%2Ebasic%2Evertical%2Ebuttons%20%2Ebutton%3Afirst%2Dchild%7Bborder%2Dtop%2Dwidth%3A0%7D%2Eui%2Elabeled%2Eicon%2Ebutton%2C%2Eui%2Elabeled%2Eicon%2Ebuttons%20%2Ebutton%7Bposition%3Arelative%3Bpadding%2Dleft%3A4%2E07142857em%21important%3Bpadding%2Dright%3A1%2E5em%21important%7D%2Eui%2Elabeled%2Eicon%2Ebutton%3E%2Eicon%2C%2Eui%2Elabeled%2Eicon%2Ebuttons%3E%2Ebutton%3E%2Eicon%7Bposition%3Aabsolute%3Bheight%3A100%25%3Bline%2Dheight%3A1%3Bborder%2Dradius%3A0%3Bborder%2Dtop%2Dleft%2Dradius%3Ainherit%3Bborder%2Dbottom%2Dleft%2Dradius%3Ainherit%3Btext%2Dalign%3Acenter%3Bmargin%3A0%3Bwidth%3A2%2E57142857em%3Bbackground%2Dcolor%3Argba%280%2C0%2C0%2C%2E05%29%3Bcolor%3A%27%27%3Bbox%2Dshadow%3A%2D1px%200%200%200%20transparent%20inset%3Btop%3A0%3Bleft%3A0%7D%2Eui%5Bclass%2A%3D%22right%20labeled%22%5D%2Eicon%2Ebutton%7Bpadding%2Dright%3A4%2E07142857em%21important%3Bpadding%2Dleft%3A1%2E5em%21important%7D%2Eui%5Bclass%2A%3D%22right%20labeled%22%5D%2Eicon%2Ebutton%3E%2Eicon%7Bleft%3Aauto%3Bright%3A0%3Bborder%2Dradius%3A0%3Bborder%2Dtop%2Dright%2Dradius%3Ainherit%3Bborder%2Dbottom%2Dright%2Dradius%3Ainherit%3Bbox%2Dshadow%3A1px%200%200%200%20transparent%20inset%7D%2Eui%2Elabeled%2Eicon%2Ebutton%3E%2Eicon%3Aafter%2C%2Eui%2Elabeled%2Eicon%2Ebutton%3E%2Eicon%3Abefore%2C%2Eui%2Elabeled%2Eicon%2Ebuttons%3E%2Ebutton%3E%2Eicon%3Aafter%2C%2Eui%2Elabeled%2Eicon%2Ebuttons%3E%2Ebutton%3E%2Eicon%3Abefore%7Bdisplay%3Ablock%3Bposition%3Aabsolute%3Bwidth%3A100%25%3Btop%3A50%25%3Btext%2Dalign%3Acenter%3B%2Dwebkit%2Dtransform%3AtranslateY%28%2D50%25%29%3B%2Dms%2Dtransform%3AtranslateY%28%2D50%25%29%3Btransform%3AtranslateY%28%2D50%25%29%7D%2Eui%2Elabeled%2Eicon%2Ebuttons%20%2Ebutton%3E%2Eicon%7Bborder%2Dradius%3A0%7D%2Eui%2Elabeled%2Eicon%2Ebuttons%20%2Ebutton%3Afirst%2Dchild%3E%2Eicon%7Bborder%2Dtop%2Dleft%2Dradius%3A%2E28571429rem%3Bborder%2Dbottom%2Dleft%2Dradius%3A%2E28571429rem%7D%2Eui%2Elabeled%2Eicon%2Ebuttons%20%2Ebutton%3Alast%2Dchild%3E%2Eicon%7Bborder%2Dtop%2Dright%2Dradius%3A%2E28571429rem%3Bborder%2Dbottom%2Dright%2Dradius%3A%2E28571429rem%7D%2Eui%2Evertical%2Elabeled%2Eicon%2Ebuttons%20%2Ebutton%3Afirst%2Dchild%3E%2Eicon%7Bborder%2Dradius%3A%2E28571429rem%200%200%7D%2Eui%2Evertical%2Elabeled%2Eicon%2Ebuttons%20%2Ebutton%3Alast%2Dchild%3E%2Eicon%7Bborder%2Dradius%3A0%200%200%20%2E28571429rem%7D%2Eui%2Efluid%5Bclass%2A%3D%22left%20labeled%22%5D%2Eicon%2Ebutton%2C%2Eui%2Efluid%5Bclass%2A%3D%22right%20labeled%22%5D%2Eicon%2Ebutton%7Bpadding%2Dleft%3A1%2E5em%21important%3Bpadding%2Dright%3A1%2E5em%21important%7D%2Eui%2Ebutton%2Etoggle%2Eactive%2C%2Eui%2Ebuttons%20%2Ebutton%2Etoggle%2Eactive%2C%2Eui%2Etoggle%2Ebuttons%20%2Eactive%2Ebutton%7Bbackground%2Dcolor%3A%2321BA45%21important%3Bbox%2Dshadow%3Anone%21important%3Btext%2Dshadow%3Anone%3Bcolor%3A%23FFF%21important%7D%2Eui%2Ebutton%2Etoggle%2Eactive%3Ahover%7Bbackground%2Dcolor%3A%2316ab39%21important%3Btext%2Dshadow%3Anone%3Bcolor%3A%23FFF%21important%7D%2Eui%2Ecircular%2Ebutton%7Bborder%2Dradius%3A10em%7D%2Eui%2Ecircular%2Ebutton%3E%2Eicon%7Bwidth%3A1em%3Bvertical%2Dalign%3Abaseline%7D%2Eui%2Ebuttons%20%2Eor%7Bposition%3Arelative%3Bwidth%3A%2E3em%3Bheight%3A2%2E57142857em%3Bz%2Dindex%3A3%7D%2Eui%2Ebuttons%20%2Eor%3Abefore%7Bposition%3Aabsolute%3Btext%2Dalign%3Acenter%3Bborder%2Dradius%3A500rem%3Bcontent%3A%27or%27%3Btop%3A50%25%3Bleft%3A50%25%3Bbackground%2Dcolor%3A%23FFF%3Btext%2Dshadow%3Anone%3Bmargin%2Dtop%3A%2D%2E89285714em%3Bmargin%2Dleft%3A%2D%2E89285714em%3Bwidth%3A1%2E78571429em%3Bheight%3A1%2E78571429em%3Bline%2Dheight%3A1%2E78571429em%3Bcolor%3Argba%280%2C0%2C0%2C%2E4%29%3Bfont%2Dstyle%3Anormal%3Bfont%2Dweight%3A700%3Bbox%2Dshadow%3A0%200%200%201px%20transparent%20inset%7D%2Eui%2Ebuttons%20%2Eor%5Bdata%2Dtext%5D%3Abefore%7Bcontent%3Aattr%28data%2Dtext%29%7D%2Eui%2Efluid%2Ebuttons%20%2Eor%7Bwidth%3A0%21important%7D%2Eui%2Efluid%2Ebuttons%20%2Eor%3Aafter%7Bdisplay%3Anone%7D%2Eui%2Eattached%2Ebutton%7Bposition%3Arelative%3Bdisplay%3Ablock%3Bmargin%3A0%3Bborder%2Dradius%3A0%3Bbox%2Dshadow%3A0%200%200%201px%20rgba%2834%2C36%2C38%2C%2E15%29%21important%7D%2Eui%2Eattached%2Etop%2Ebutton%7Bborder%2Dradius%3A%2E28571429rem%20%2E28571429rem%200%200%7D%2Eui%2Eattached%2Ebottom%2Ebutton%7Bborder%2Dradius%3A0%200%20%2E28571429rem%20%2E28571429rem%7D%2Eui%2Eleft%2Eattached%2Ebutton%7Bdisplay%3Ainline%2Dblock%3Bborder%2Dleft%3Anone%3Btext%2Dalign%3Aright%3Bpadding%2Dright%3A%2E75em%3Bborder%2Dradius%3A%2E28571429rem%200%200%20%2E28571429rem%7D%2Eui%2Eright%2Eattached%2Ebutton%7Bdisplay%3Ainline%2Dblock%3Btext%2Dalign%3Aleft%3Bpadding%2Dleft%3A%2E75em%3Bborder%2Dradius%3A0%20%2E28571429rem%20%2E28571429rem%200%7D%2Eui%2Eattached%2Ebuttons%7Bposition%3Arelative%3Bdisplay%3A%2Dwebkit%2Dbox%3Bdisplay%3A%2Dwebkit%2Dflex%3Bdisplay%3A%2Dms%2Dflexbox%3Bdisplay%3Aflex%3Bborder%2Dradius%3A0%3Bwidth%3Aauto%21important%3Bz%2Dindex%3A2%3Bmargin%2Dleft%3A%2D1px%3Bmargin%2Dright%3A%2D1px%7D%2Eui%2Eattached%2Ebuttons%20%2Ebutton%7Bmargin%3A0%7D%2Eui%2Eattached%2Ebuttons%20%2Ebutton%3Afirst%2Dchild%2C%2Eui%2Eattached%2Ebuttons%20%2Ebutton%3Alast%2Dchild%7Bborder%2Dradius%3A0%7D%2Eui%5Bclass%2A%3D%22top%20attached%22%5D%2Ebuttons%7Bmargin%2Dbottom%3A%2D1px%3Bborder%2Dradius%3A%2E28571429rem%20%2E28571429rem%200%200%7D%2Eui%5Bclass%2A%3D%22top%20attached%22%5D%2Ebuttons%20%2Ebutton%3Afirst%2Dchild%7Bborder%2Dradius%3A%2E28571429rem%200%200%7D%2Eui%5Bclass%2A%3D%22top%20attached%22%5D%2Ebuttons%20%2Ebutton%3Alast%2Dchild%7Bborder%2Dradius%3A0%20%2E28571429rem%200%200%7D%2Eui%5Bclass%2A%3D%22bottom%20attached%22%5D%2Ebuttons%7Bmargin%2Dtop%3A%2D1px%3Bborder%2Dradius%3A0%200%20%2E28571429rem%20%2E28571429rem%7D%2Eui%5Bclass%2A%3D%22bottom%20attached%22%5D%2Ebuttons%20%2Ebutton%3Afirst%2Dchild%7Bborder%2Dradius%3A0%200%200%20%2E28571429rem%7D%2Eui%5Bclass%2A%3D%22bottom%20attached%22%5D%2Ebuttons%20%2Ebutton%3Alast%2Dchild%7Bborder%2Dradius%3A0%200%20%2E28571429rem%7D%2Eui%5Bclass%2A%3D%22left%20attached%22%5D%2Ebuttons%7Bdisplay%3A%2Dwebkit%2Dinline%2Dbox%3Bdisplay%3A%2Dwebkit%2Dinline%2Dflex%3Bdisplay%3A%2Dms%2Dinline%2Dflexbox%3Bdisplay%3Ainline%2Dflex%3Bmargin%2Dright%3A0%3Bmargin%2Dleft%3A%2D1px%3Bborder%2Dradius%3A0%20%2E28571429rem%20%2E28571429rem%200%7D%2Eui%5Bclass%2A%3D%22left%20attached%22%5D%2Ebuttons%20%2Ebutton%3Afirst%2Dchild%7Bmargin%2Dleft%3A%2D1px%3Bborder%2Dradius%3A0%20%2E28571429rem%200%200%7D%2Eui%5Bclass%2A%3D%22left%20attached%22%5D%2Ebuttons%20%2Ebutton%3Alast%2Dchild%7Bmargin%2Dleft%3A%2D1px%3Bborder%2Dradius%3A0%200%20%2E28571429rem%7D%2Eui%5Bclass%2A%3D%22right%20attached%22%5D%2Ebuttons%7Bdisplay%3A%2Dwebkit%2Dinline%2Dbox%3Bdisplay%3A%2Dwebkit%2Dinline%2Dflex%3Bdisplay%3A%2Dms%2Dinline%2Dflexbox%3Bdisplay%3Ainline%2Dflex%3Bmargin%2Dleft%3A0%3Bmargin%2Dright%3A%2D1px%3Bborder%2Dradius%3A%2E28571429rem%200%200%20%2E28571429rem%7D%2Eui%5Bclass%2A%3D%22right%20attached%22%5D%2Ebuttons%20%2Ebutton%3Afirst%2Dchild%7Bmargin%2Dleft%3A%2D1px%3Bborder%2Dradius%3A%2E28571429rem%200%200%7D%2Eui%5Bclass%2A%3D%22right%20attached%22%5D%2Ebuttons%20%2Ebutton%3Alast%2Dchild%7Bmargin%2Dleft%3A%2D1px%3Bborder%2Dradius%3A0%200%200%20%2E28571429rem%7D%2Eui%2Efluid%2Ebutton%2C%2Eui%2Efluid%2Ebuttons%7Bwidth%3A100%25%7D%2Eui%2Efluid%2Ebutton%7Bdisplay%3Ablock%7D%2Eui%2Etwo%2Ebuttons%7Bwidth%3A100%25%7D%2Eui%2Etwo%2Ebuttons%3E%2Ebutton%7Bwidth%3A50%25%7D%2Eui%2Ethree%2Ebuttons%7Bwidth%3A100%25%7D%2Eui%2Ethree%2Ebuttons%3E%2Ebutton%7Bwidth%3A33%2E333%25%7D%2Eui%2Efour%2Ebuttons%7Bwidth%3A100%25%7D%2Eui%2Efour%2Ebuttons%3E%2Ebutton%7Bwidth%3A25%25%7D%2Eui%2Efive%2Ebuttons%7Bwidth%3A100%25%7D%2Eui%2Efive%2Ebuttons%3E%2Ebutton%7Bwidth%3A20%25%7D%2Eui%2Esix%2Ebuttons%7Bwidth%3A100%25%7D%2Eui%2Esix%2Ebuttons%3E%2Ebutton%7Bwidth%3A16%2E666%25%7D%2Eui%2Eseven%2Ebuttons%7Bwidth%3A100%25%7D%2Eui%2Eseven%2Ebuttons%3E%2Ebutton%7Bwidth%3A14%2E285%25%7D%2Eui%2Eeight%2Ebuttons%7Bwidth%3A100%25%7D%2Eui%2Eeight%2Ebuttons%3E%2Ebutton%7Bwidth%3A12%2E5%25%7D%2Eui%2Enine%2Ebuttons%7Bwidth%3A100%25%7D%2Eui%2Enine%2Ebuttons%3E%2Ebutton%7Bwidth%3A11%2E11%25%7D%2Eui%2Eten%2Ebuttons%7Bwidth%3A100%25%7D%2Eui%2Eten%2Ebuttons%3E%2Ebutton%7Bwidth%3A10%25%7D%2Eui%2Eeleven%2Ebuttons%7Bwidth%3A100%25%7D%2Eui%2Eeleven%2Ebuttons%3E%2Ebutton%7Bwidth%3A9%2E09%25%7D%2Eui%2Etwelve%2Ebuttons%7Bwidth%3A100%25%7D%2Eui%2Etwelve%2Ebuttons%3E%2Ebutton%7Bwidth%3A8%2E3333%25%7D%2Eui%2Efluid%2Evertical%2Ebuttons%2C%2Eui%2Efluid%2Evertical%2Ebuttons%3E%2Ebutton%7Bdisplay%3A%2Dwebkit%2Dbox%3Bdisplay%3A%2Dwebkit%2Dflex%3Bdisplay%3A%2Dms%2Dflexbox%3Bdisplay%3Aflex%3Bwidth%3Aauto%7D%2Eui%2Etwo%2Evertical%2Ebuttons%3E%2Ebutton%7Bheight%3A50%25%7D%2Eui%2Ethree%2Evertical%2Ebuttons%3E%2Ebutton%7Bheight%3A33%2E333%25%7D%2Eui%2Efour%2Evertical%2Ebuttons%3E%2Ebutton%7Bheight%3A25%25%7D%2Eui%2Efive%2Evertical%2Ebuttons%3E%2Ebutton%7Bheight%3A20%25%7D%2Eui%2Esix%2Evertical%2Ebuttons%3E%2Ebutton%7Bheight%3A16%2E666%25%7D%2Eui%2Eseven%2Evertical%2Ebuttons%3E%2Ebutton%7Bheight%3A14%2E285%25%7D%2Eui%2Eeight%2Evertical%2Ebuttons%3E%2Ebutton%7Bheight%3A12%2E5%25%7D%2Eui%2Enine%2Evertical%2Ebuttons%3E%2Ebutton%7Bheight%3A11%2E11%25%7D%2Eui%2Eten%2Evertical%2Ebuttons%3E%2Ebutton%7Bheight%3A10%25%7D%2Eui%2Eeleven%2Evertical%2Ebuttons%3E%2Ebutton%7Bheight%3A9%2E09%25%7D%2Eui%2Etwelve%2Evertical%2Ebuttons%3E%2Ebutton%7Bheight%3A8%2E3333%25%7D%2Eui%2Eblack%2Ebutton%2C%2Eui%2Eblack%2Ebuttons%20%2Ebutton%7Bbackground%2Dcolor%3A%231B1C1D%3Bcolor%3A%23FFF%3Btext%2Dshadow%3Anone%3Bbackground%2Dimage%3Anone%7D%2Eui%2Eblack%2Ebutton%7Bbox%2Dshadow%3A0%200%200%200%20rgba%2834%2C36%2C38%2C%2E15%29%20inset%7D%2Eui%2Eblack%2Ebutton%3Ahover%2C%2Eui%2Eblack%2Ebuttons%20%2Ebutton%3Ahover%7Bbackground%2Dcolor%3A%2327292a%3Bcolor%3A%23FFF%3Btext%2Dshadow%3Anone%7D%2Eui%2Eblack%2Ebutton%3Afocus%2C%2Eui%2Eblack%2Ebuttons%20%2Ebutton%3Afocus%7Bbackground%2Dcolor%3A%232f3032%3Bcolor%3A%23FFF%3Btext%2Dshadow%3Anone%7D%2Eui%2Eblack%2Ebutton%3Aactive%2C%2Eui%2Eblack%2Ebuttons%20%2Ebutton%3Aactive%7Bbackground%2Dcolor%3A%23343637%3Bcolor%3A%23FFF%3Btext%2Dshadow%3Anone%7D%2Eui%2Eblack%2Eactive%2Ebutton%2C%2Eui%2Eblack%2Ebutton%20%2Eactive%2Ebutton%3Aactive%2C%2Eui%2Eblack%2Ebuttons%20%2Eactive%2Ebutton%2C%2Eui%2Eblack%2Ebuttons%20%2Eactive%2Ebutton%3Aactive%7Bbackground%2Dcolor%3A%230f0f10%3Bcolor%3A%23FFF%3Btext%2Dshadow%3Anone%7D%2Eui%2Ebasic%2Eblack%2Ebutton%2C%2Eui%2Ebasic%2Eblack%2Ebuttons%20%2Ebutton%7Bbox%2Dshadow%3A0%200%200%201px%20%231B1C1D%20inset%21important%3Bcolor%3A%231B1C1D%21important%7D%2Eui%2Ebasic%2Eblack%2Ebutton%3Ahover%2C%2Eui%2Ebasic%2Eblack%2Ebuttons%20%2Ebutton%3Ahover%7Bbackground%3A0%200%21important%3Bbox%2Dshadow%3A0%200%200%201px%20%2327292a%20inset%21important%3Bcolor%3A%2327292a%21important%7D%2Eui%2Ebasic%2Eblack%2Ebutton%3Afocus%2C%2Eui%2Ebasic%2Eblack%2Ebuttons%20%2Ebutton%3Afocus%7Bbackground%3A0%200%21important%3Bbox%2Dshadow%3A0%200%200%201px%20%232f3032%20inset%21important%3Bcolor%3A%2327292a%21important%7D%2Eui%2Ebasic%2Eblack%2Eactive%2Ebutton%2C%2Eui%2Ebasic%2Eblack%2Ebuttons%20%2Eactive%2Ebutton%7Bbackground%3A0%200%21important%3Bbox%2Dshadow%3A0%200%200%201px%20%230f0f10%20inset%21important%3Bcolor%3A%23343637%21important%7D%2Eui%2Ebasic%2Eblack%2Ebutton%3Aactive%2C%2Eui%2Ebasic%2Eblack%2Ebuttons%20%2Ebutton%3Aactive%7Bbox%2Dshadow%3A0%200%200%201px%20%23343637%20inset%21important%3Bcolor%3A%23343637%21important%7D%2Eui%2Ebuttons%3Anot%28%2Evertical%29%3E%2Ebasic%2Eblack%2Ebutton%3Anot%28%3Afirst%2Dchild%29%7Bmargin%2Dleft%3A%2D1px%7D%2Eui%2Einverted%2Eblack%2Ebutton%2C%2Eui%2Einverted%2Eblack%2Ebuttons%20%2Ebutton%7Bbackground%2Dcolor%3Atransparent%3Bbox%2Dshadow%3A0%200%200%202px%20%23D4D4D5%20inset%21important%3Bcolor%3A%23FFF%7D%2Eui%2Einverted%2Eblack%2Ebutton%2Eactive%2C%2Eui%2Einverted%2Eblack%2Ebutton%3Aactive%2C%2Eui%2Einverted%2Eblack%2Ebutton%3Afocus%2C%2Eui%2Einverted%2Eblack%2Ebutton%3Ahover%2C%2Eui%2Einverted%2Eblack%2Ebuttons%20%2Ebutton%2Eactive%2C%2Eui%2Einverted%2Eblack%2Ebuttons%20%2Ebutton%3Aactive%2C%2Eui%2Einverted%2Eblack%2Ebuttons%20%2Ebutton%3Afocus%2C%2Eui%2Einverted%2Eblack%2Ebuttons%20%2Ebutton%3Ahover%7Bbox%2Dshadow%3Anone%21important%3Bcolor%3A%23FFF%7D%2Eui%2Einverted%2Eblack%2Eactive%2Ebutton%2C%2Eui%2Einverted%2Eblack%2Ebutton%3Aactive%2C%2Eui%2Einverted%2Eblack%2Ebutton%3Afocus%2C%2Eui%2Einverted%2Eblack%2Ebutton%3Ahover%2C%2Eui%2Einverted%2Eblack%2Ebuttons%20%2Eactive%2Ebutton%2C%2Eui%2Einverted%2Eblack%2Ebuttons%20%2Ebutton%3Aactive%2C%2Eui%2Einverted%2Eblack%2Ebuttons%20%2Ebutton%3Afocus%2C%2Eui%2Einverted%2Eblack%2Ebuttons%20%2Ebutton%3Ahover%7Bbackground%2Dcolor%3A%23000%7D%2Eui%2Einverted%2Eblack%2Ebasic%2Ebutton%2C%2Eui%2Einverted%2Eblack%2Ebasic%2Ebuttons%20%2Ebutton%2C%2Eui%2Einverted%2Eblack%2Ebuttons%20%2Ebasic%2Ebutton%7Bbackground%2Dcolor%3Atransparent%3Bbox%2Dshadow%3A0%200%200%202px%20rgba%28255%2C255%2C255%2C%2E5%29%20inset%21important%3Bcolor%3A%23FFF%21important%7D%2Eui%2Einverted%2Eblack%2Ebasic%2Ebutton%3Ahover%2C%2Eui%2Einverted%2Eblack%2Ebasic%2Ebuttons%20%2Ebutton%3Ahover%2C%2Eui%2Einverted%2Eblack%2Ebuttons%20%2Ebasic%2Ebutton%3Ahover%7Bbox%2Dshadow%3A0%200%200%202px%20%23000%20inset%21important%3Bcolor%3A%23FFF%21important%7D%2Eui%2Einverted%2Eblack%2Ebasic%2Ebutton%3Afocus%2C%2Eui%2Einverted%2Eblack%2Ebasic%2Ebuttons%20%2Ebutton%3Afocus%7Bbox%2Dshadow%3A0%200%200%202px%20%23000%20inset%21important%3Bcolor%3A%23545454%21important%7D%2Eui%2Einverted%2Eblack%2Ebasic%2Eactive%2Ebutton%2C%2Eui%2Einverted%2Eblack%2Ebasic%2Ebutton%3Aactive%2C%2Eui%2Einverted%2Eblack%2Ebasic%2Ebuttons%20%2Eactive%2Ebutton%2C%2Eui%2Einverted%2Eblack%2Ebasic%2Ebuttons%20%2Ebutton%3Aactive%2C%2Eui%2Einverted%2Eblack%2Ebuttons%20%2Ebasic%2Eactive%2Ebutton%2C%2Eui%2Einverted%2Eblack%2Ebuttons%20%2Ebasic%2Ebutton%3Aactive%7Bbox%2Dshadow%3A0%200%200%202px%20%23000%20inset%21important%3Bcolor%3A%23FFF%21important%7D%2Eui%2Egrey%2Ebutton%2C%2Eui%2Egrey%2Ebuttons%20%2Ebutton%7Bbackground%2Dcolor%3A%23767676%3Bcolor%3A%23FFF%3Btext%2Dshadow%3Anone%3Bbackground%2Dimage%3Anone%7D%2Eui%2Egrey%2Ebutton%7Bbox%2Dshadow%3A0%200%200%200%20rgba%2834%2C36%2C38%2C%2E15%29%20inset%7D%2Eui%2Egrey%2Ebutton%3Ahover%2C%2Eui%2Egrey%2Ebuttons%20%2Ebutton%3Ahover%7Bbackground%2Dcolor%3A%23838383%3Bcolor%3A%23FFF%3Btext%2Dshadow%3Anone%7D%2Eui%2Egrey%2Ebutton%3Afocus%2C%2Eui%2Egrey%2Ebuttons%20%2Ebutton%3Afocus%7Bbackground%2Dcolor%3A%238a8a8a%3Bcolor%3A%23FFF%3Btext%2Dshadow%3Anone%7D%2Eui%2Egrey%2Ebutton%3Aactive%2C%2Eui%2Egrey%2Ebuttons%20%2Ebutton%3Aactive%7Bbackground%2Dcolor%3A%23909090%3Bcolor%3A%23FFF%3Btext%2Dshadow%3Anone%7D%2Eui%2Egrey%2Eactive%2Ebutton%2C%2Eui%2Egrey%2Ebutton%20%2Eactive%2Ebutton%3Aactive%2C%2Eui%2Egrey%2Ebuttons%20%2Eactive%2Ebutton%2C%2Eui%2Egrey%2Ebuttons%20%2Eactive%2Ebutton%3Aactive%7Bbackground%2Dcolor%3A%23696969%3Bcolor%3A%23FFF%3Btext%2Dshadow%3Anone%7D%2Eui%2Ebasic%2Egrey%2Ebutton%2C%2Eui%2Ebasic%2Egrey%2Ebuttons%20%2Ebutton%7Bbox%2Dshadow%3A0%200%200%201px%20%23767676%20inset%21important%3Bcolor%3A%23767676%21important%7D%2Eui%2Ebasic%2Egrey%2Ebutton%3Ahover%2C%2Eui%2Ebasic%2Egrey%2Ebuttons%20%2Ebutton%3Ahover%7Bbackground%3A0%200%21important%3Bbox%2Dshadow%3A0%200%200%201px%20%23838383%20inset%21important%3Bcolor%3A%23838383%21important%7D%2Eui%2Ebasic%2Egrey%2Ebutton%3Afocus%2C%2Eui%2Ebasic%2Egrey%2Ebuttons%20%2Ebutton%3Afocus%7Bbackground%3A0%200%21important%3Bbox%2Dshadow%3A0%200%200%201px%20%238a8a8a%20inset%21important%3Bcolor%3A%23838383%21important%7D%2Eui%2Ebasic%2Egrey%2Eactive%2Ebutton%2C%2Eui%2Ebasic%2Egrey%2Ebuttons%20%2Eactive%2Ebutton%7Bbackground%3A0%200%21important%3Bbox%2Dshadow%3A0%200%200%201px%20%23696969%20inset%21important%3Bcolor%3A%23909090%21important%7D%2Eui%2Ebasic%2Egrey%2Ebutton%3Aactive%2C%2Eui%2Ebasic%2Egrey%2Ebuttons%20%2Ebutton%3Aactive%7Bbox%2Dshadow%3A0%200%200%201px%20%23909090%20inset%21important%3Bcolor%3A%23909090%21important%7D%2Eui%2Ebuttons%3Anot%28%2Evertical%29%3E%2Ebasic%2Egrey%2Ebutton%3Anot%28%3Afirst%2Dchild%29%7Bmargin%2Dleft%3A%2D1px%7D%2Eui%2Einverted%2Egrey%2Ebutton%2C%2Eui%2Einverted%2Egrey%2Ebuttons%20%2Ebutton%7Bbackground%2Dcolor%3Atransparent%3Bbox%2Dshadow%3A0%200%200%202px%20%23D4D4D5%20inset%21important%3Bcolor%3A%23FFF%7D%2Eui%2Einverted%2Egrey%2Ebutton%2Eactive%2C%2Eui%2Einverted%2Egrey%2Ebutton%3Aactive%2C%2Eui%2Einverted%2Egrey%2Ebutton%3Afocus%2C%2Eui%2Einverted%2Egrey%2Ebutton%3Ahover%2C%2Eui%2Einverted%2Egrey%2Ebuttons%20%2Ebutton%2Eactive%2C%2Eui%2Einverted%2Egrey%2Ebuttons%20%2Ebutton%3Aactive%2C%2Eui%2Einverted%2Egrey%2Ebuttons%20%2Ebutton%3Afocus%2C%2Eui%2Einverted%2Egrey%2Ebuttons%20%2Ebutton%3Ahover%7Bbox%2Dshadow%3Anone%21important%3Bcolor%3Argba%280%2C0%2C0%2C%2E6%29%7D%2Eui%2Einverted%2Egrey%2Ebutton%3Ahover%2C%2Eui%2Einverted%2Egrey%2Ebuttons%20%2Ebutton%3Ahover%7Bbackground%2Dcolor%3A%23cfd0d2%7D%2Eui%2Einverted%2Egrey%2Ebutton%3Afocus%2C%2Eui%2Einverted%2Egrey%2Ebuttons%20%2Ebutton%3Afocus%7Bbackground%2Dcolor%3A%23c7c9cb%7D%2Eui%2Einverted%2Egrey%2Eactive%2Ebutton%2C%2Eui%2Einverted%2Egrey%2Ebuttons%20%2Eactive%2Ebutton%7Bbackground%2Dcolor%3A%23cfd0d2%7D%2Eui%2Einverted%2Egrey%2Ebutton%3Aactive%2C%2Eui%2Einverted%2Egrey%2Ebuttons%20%2Ebutton%3Aactive%7Bbackground%2Dcolor%3A%23c2c4c5%7D%2Eui%2Einverted%2Egrey%2Ebasic%2Ebutton%2C%2Eui%2Einverted%2Egrey%2Ebasic%2Ebuttons%20%2Ebutton%2C%2Eui%2Einverted%2Egrey%2Ebuttons%20%2Ebasic%2Ebutton%7Bbackground%2Dcolor%3Atransparent%3Bbox%2Dshadow%3A0%200%200%202px%20rgba%28255%2C255%2C255%2C%2E5%29%20inset%21important%3Bcolor%3A%23FFF%21important%7D%2Eui%2Einverted%2Egrey%2Ebasic%2Ebutton%3Ahover%2C%2Eui%2Einverted%2Egrey%2Ebasic%2Ebuttons%20%2Ebutton%3Ahover%2C%2Eui%2Einverted%2Egrey%2Ebuttons%20%2Ebasic%2Ebutton%3Ahover%7Bbox%2Dshadow%3A0%200%200%202px%20%23cfd0d2%20inset%21important%3Bcolor%3A%23FFF%21important%7D%2Eui%2Einverted%2Egrey%2Ebasic%2Ebutton%3Afocus%2C%2Eui%2Einverted%2Egrey%2Ebasic%2Ebuttons%20%2Ebutton%3Afocus%7Bbox%2Dshadow%3A0%200%200%202px%20%23c7c9cb%20inset%21important%3Bcolor%3A%23DCDDDE%21important%7D%2Eui%2Einverted%2Egrey%2Ebasic%2Eactive%2Ebutton%2C%2Eui%2Einverted%2Egrey%2Ebasic%2Ebuttons%20%2Eactive%2Ebutton%2C%2Eui%2Einverted%2Egrey%2Ebuttons%20%2Ebasic%2Eactive%2Ebutton%7Bbox%2Dshadow%3A0%200%200%202px%20%23cfd0d2%20inset%21important%3Bcolor%3A%23FFF%21important%7D%2Eui%2Einverted%2Egrey%2Ebasic%2Ebutton%3Aactive%2C%2Eui%2Einverted%2Egrey%2Ebasic%2Ebuttons%20%2Ebutton%3Aactive%2C%2Eui%2Einverted%2Egrey%2Ebuttons%20%2Ebasic%2Ebutton%3Aactive%7Bbox%2Dshadow%3A0%200%200%202px%20%23c2c4c5%20inset%21important%3Bcolor%3A%23FFF%21important%7D%2Eui%2Ebrown%2Ebutton%2C%2Eui%2Ebrown%2Ebuttons%20%2Ebutton%7Bbackground%2Dcolor%3A%23A5673F%3Bcolor%3A%23FFF%3Btext%2Dshadow%3Anone%3Bbackground%2Dimage%3Anone%7D%2Eui%2Ebrown%2Ebutton%7Bbox%2Dshadow%3A0%200%200%200%20rgba%2834%2C36%2C38%2C%2E15%29%20inset%7D%2Eui%2Ebrown%2Ebutton%3Ahover%2C%2Eui%2Ebrown%2Ebuttons%20%2Ebutton%3Ahover%7Bbackground%2Dcolor%3A%23975b33%3Bcolor%3A%23FFF%3Btext%2Dshadow%3Anone%7D%2Eui%2Ebrown%2Ebutton%3Afocus%2C%2Eui%2Ebrown%2Ebuttons%20%2Ebutton%3Afocus%7Bbackground%2Dcolor%3A%2390532b%3Bcolor%3A%23FFF%3Btext%2Dshadow%3Anone%7D%2Eui%2Ebrown%2Ebutton%3Aactive%2C%2Eui%2Ebrown%2Ebuttons%20%2Ebutton%3Aactive%7Bbackground%2Dcolor%3A%23805031%3Bcolor%3A%23FFF%3Btext%2Dshadow%3Anone%7D%2Eui%2Ebrown%2Eactive%2Ebutton%2C%2Eui%2Ebrown%2Ebutton%20%2Eactive%2Ebutton%3Aactive%2C%2Eui%2Ebrown%2Ebuttons%20%2Eactive%2Ebutton%2C%2Eui%2Ebrown%2Ebuttons%20%2Eactive%2Ebutton%3Aactive%7Bbackground%2Dcolor%3A%23995a31%3Bcolor%3A%23FFF%3Btext%2Dshadow%3Anone%7D%2Eui%2Ebasic%2Ebrown%2Ebutton%2C%2Eui%2Ebasic%2Ebrown%2Ebuttons%20%2Ebutton%7Bbox%2Dshadow%3A0%200%200%201px%20%23A5673F%20inset%21important%3Bcolor%3A%23A5673F%21important%7D%2Eui%2Ebasic%2Ebrown%2Ebutton%3Ahover%2C%2Eui%2Ebasic%2Ebrown%2Ebuttons%20%2Ebutton%3Ahover%7Bbackground%3A0%200%21important%3Bbox%2Dshadow%3A0%200%200%201px%20%23975b33%20inset%21important%3Bcolor%3A%23975b33%21important%7D%2Eui%2Ebasic%2Ebrown%2Ebutton%3Afocus%2C%2Eui%2Ebasic%2Ebrown%2Ebuttons%20%2Ebutton%3Afocus%7Bbackground%3A0%200%21important%3Bbox%2Dshadow%3A0%200%200%201px%20%2390532b%20inset%21important%3Bcolor%3A%23975b33%21important%7D%2Eui%2Ebasic%2Ebrown%2Eactive%2Ebutton%2C%2Eui%2Ebasic%2Ebrown%2Ebuttons%20%2Eactive%2Ebutton%7Bbackground%3A0%200%21important%3Bbox%2Dshadow%3A0%200%200%201px%20%23995a31%20inset%21important%3Bcolor%3A%23805031%21important%7D%2Eui%2Ebasic%2Ebrown%2Ebutton%3Aactive%2C%2Eui%2Ebasic%2Ebrown%2Ebuttons%20%2Ebutton%3Aactive%7Bbox%2Dshadow%3A0%200%200%201px%20%23805031%20inset%21important%3Bcolor%3A%23805031%21important%7D%2Eui%2Ebuttons%3Anot%28%2Evertical%29%3E%2Ebasic%2Ebrown%2Ebutton%3Anot%28%3Afirst%2Dchild%29%7Bmargin%2Dleft%3A%2D1px%7D%2Eui%2Einverted%2Ebrown%2Ebutton%2C%2Eui%2Einverted%2Ebrown%2Ebuttons%20%2Ebutton%7Bbackground%2Dcolor%3Atransparent%3Bbox%2Dshadow%3A0%200%200%202px%20%23D67C1C%20inset%21important%3Bcolor%3A%23D67C1C%7D%2Eui%2Einverted%2Ebrown%2Ebutton%2Eactive%2C%2Eui%2Einverted%2Ebrown%2Ebutton%3Aactive%2C%2Eui%2Einverted%2Ebrown%2Ebutton%3Afocus%2C%2Eui%2Einverted%2Ebrown%2Ebutton%3Ahover%2C%2Eui%2Einverted%2Ebrown%2Ebuttons%20%2Ebutton%2Eactive%2C%2Eui%2Einverted%2Ebrown%2Ebuttons%20%2Ebutton%3Aactive%2C%2Eui%2Einverted%2Ebrown%2Ebuttons%20%2Ebutton%3Afocus%2C%2Eui%2Einverted%2Ebrown%2Ebuttons%20%2Ebutton%3Ahover%7Bbox%2Dshadow%3Anone%21important%3Bcolor%3A%23FFF%7D%2Eui%2Einverted%2Ebrown%2Ebutton%3Ahover%2C%2Eui%2Einverted%2Ebrown%2Ebuttons%20%2Ebutton%3Ahover%7Bbackground%2Dcolor%3A%23c86f11%7D%2Eui%2Einverted%2Ebrown%2Ebutton%3Afocus%2C%2Eui%2Einverted%2Ebrown%2Ebuttons%20%2Ebutton%3Afocus%7Bbackground%2Dcolor%3A%23c16808%7D%2Eui%2Einverted%2Ebrown%2Eactive%2Ebutton%2C%2Eui%2Einverted%2Ebrown%2Ebuttons%20%2Eactive%2Ebutton%7Bbackground%2Dcolor%3A%23cc6f0d%7D%2Eui%2Einverted%2Ebrown%2Ebutton%3Aactive%2C%2Eui%2Einverted%2Ebrown%2Ebuttons%20%2Ebutton%3Aactive%7Bbackground%2Dcolor%3A%23a96216%7D%2Eui%2Einverted%2Ebrown%2Ebasic%2Ebutton%2C%2Eui%2Einverted%2Ebrown%2Ebasic%2Ebuttons%20%2Ebutton%2C%2Eui%2Einverted%2Ebrown%2Ebuttons%20%2Ebasic%2Ebutton%7Bbackground%2Dcolor%3Atransparent%3Bbox%2Dshadow%3A0%200%200%202px%20rgba%28255%2C255%2C255%2C%2E5%29%20inset%21important%3Bcolor%3A%23FFF%21important%7D%2Eui%2Einverted%2Ebrown%2Ebasic%2Ebutton%3Ahover%2C%2Eui%2Einverted%2Ebrown%2Ebasic%2Ebuttons%20%2Ebutton%3Ahover%2C%2Eui%2Einverted%2Ebrown%2Ebuttons%20%2Ebasic%2Ebutton%3Ahover%7Bbox%2Dshadow%3A0%200%200%202px%20%23c86f11%20inset%21important%3Bcolor%3A%23D67C1C%21important%7D%2Eui%2Einverted%2Ebrown%2Ebasic%2Ebutton%3Afocus%2C%2Eui%2Einverted%2Ebrown%2Ebasic%2Ebuttons%20%2Ebutton%3Afocus%7Bbox%2Dshadow%3A0%200%200%202px%20%23c16808%20inset%21important%3Bcolor%3A%23D67C1C%21important%7D%2Eui%2Einverted%2Ebrown%2Ebasic%2Eactive%2Ebutton%2C%2Eui%2Einverted%2Ebrown%2Ebasic%2Ebuttons%20%2Eactive%2Ebutton%2C%2Eui%2Einverted%2Ebrown%2Ebuttons%20%2Ebasic%2Eactive%2Ebutton%7Bbox%2Dshadow%3A0%200%200%202px%20%23cc6f0d%20inset%21important%3Bcolor%3A%23D67C1C%21important%7D%2Eui%2Einverted%2Ebrown%2Ebasic%2Ebutton%3Aactive%2C%2Eui%2Einverted%2Ebrown%2Ebasic%2Ebuttons%20%2Ebutton%3Aactive%2C%2Eui%2Einverted%2Ebrown%2Ebuttons%20%2Ebasic%2Ebutton%3Aactive%7Bbox%2Dshadow%3A0%200%200%202px%20%23a96216%20inset%21important%3Bcolor%3A%23D67C1C%21important%7D%2Eui%2Eblue%2Ebutton%2C%2Eui%2Eblue%2Ebuttons%20%2Ebutton%7Bbackground%2Dcolor%3A%232185D0%3Bcolor%3A%23FFF%3Btext%2Dshadow%3Anone%3Bbackground%2Dimage%3Anone%7D%2Eui%2Eblue%2Ebutton%7Bbox%2Dshadow%3A0%200%200%200%20rgba%2834%2C36%2C38%2C%2E15%29%20inset%7D%2Eui%2Eblue%2Ebutton%3Ahover%2C%2Eui%2Eblue%2Ebuttons%20%2Ebutton%3Ahover%7Bbackground%2Dcolor%3A%231678c2%3Bcolor%3A%23FFF%3Btext%2Dshadow%3Anone%7D%2Eui%2Eblue%2Ebutton%3Afocus%2C%2Eui%2Eblue%2Ebuttons%20%2Ebutton%3Afocus%7Bbackground%2Dcolor%3A%230d71bb%3Bcolor%3A%23FFF%3Btext%2Dshadow%3Anone%7D%2Eui%2Eblue%2Ebutton%3Aactive%2C%2Eui%2Eblue%2Ebuttons%20%2Ebutton%3Aactive%7Bbackground%2Dcolor%3A%231a69a4%3Bcolor%3A%23FFF%3Btext%2Dshadow%3Anone%7D%2Eui%2Eblue%2Eactive%2Ebutton%2C%2Eui%2Eblue%2Ebutton%20%2Eactive%2Ebutton%3Aactive%2C%2Eui%2Eblue%2Ebuttons%20%2Eactive%2Ebutton%2C%2Eui%2Eblue%2Ebuttons%20%2Eactive%2Ebutton%3Aactive%7Bbackground%2Dcolor%3A%231279c6%3Bcolor%3A%23FFF%3Btext%2Dshadow%3Anone%7D%2Eui%2Ebasic%2Eblue%2Ebutton%2C%2Eui%2Ebasic%2Eblue%2Ebuttons%20%2Ebutton%7Bbox%2Dshadow%3A0%200%200%201px%20%232185D0%20inset%21important%3Bcolor%3A%232185D0%21important%7D%2Eui%2Ebasic%2Eblue%2Ebutton%3Ahover%2C%2Eui%2Ebasic%2Eblue%2Ebuttons%20%2Ebutton%3Ahover%7Bbackground%3A0%200%21important%3Bbox%2Dshadow%3A0%200%200%201px%20%231678c2%20inset%21important%3Bcolor%3A%231678c2%21important%7D%2Eui%2Ebasic%2Eblue%2Ebutton%3Afocus%2C%2Eui%2Ebasic%2Eblue%2Ebuttons%20%2Ebutton%3Afocus%7Bbackground%3A0%200%21important%3Bbox%2Dshadow%3A0%200%200%201px%20%230d71bb%20inset%21important%3Bcolor%3A%231678c2%21important%7D%2Eui%2Ebasic%2Eblue%2Eactive%2Ebutton%2C%2Eui%2Ebasic%2Eblue%2Ebuttons%20%2Eactive%2Ebutton%7Bbackground%3A0%200%21important%3Bbox%2Dshadow%3A0%200%200%201px%20%231279c6%20inset%21important%3Bcolor%3A%231a69a4%21important%7D%2Eui%2Ebasic%2Eblue%2Ebutton%3Aactive%2C%2Eui%2Ebasic%2Eblue%2Ebuttons%20%2Ebutton%3Aactive%7Bbox%2Dshadow%3A0%200%200%201px%20%231a69a4%20inset%21important%3Bcolor%3A%231a69a4%21important%7D%2Eui%2Ebuttons%3Anot%28%2Evertical%29%3E%2Ebasic%2Eblue%2Ebutton%3Anot%28%3Afirst%2Dchild%29%7Bmargin%2Dleft%3A%2D1px%7D%2Eui%2Einverted%2Eblue%2Ebutton%2C%2Eui%2Einverted%2Eblue%2Ebuttons%20%2Ebutton%7Bbackground%2Dcolor%3Atransparent%3Bbox%2Dshadow%3A0%200%200%202px%20%2354C8FF%20inset%21important%3Bcolor%3A%2354C8FF%7D%2Eui%2Einverted%2Eblue%2Ebutton%2Eactive%2C%2Eui%2Einverted%2Eblue%2Ebutton%3Aactive%2C%2Eui%2Einverted%2Eblue%2Ebutton%3Afocus%2C%2Eui%2Einverted%2Eblue%2Ebutton%3Ahover%2C%2Eui%2Einverted%2Eblue%2Ebuttons%20%2Ebutton%2Eactive%2C%2Eui%2Einverted%2Eblue%2Ebuttons%20%2Ebutton%3Aactive%2C%2Eui%2Einverted%2Eblue%2Ebuttons%20%2Ebutton%3Afocus%2C%2Eui%2Einverted%2Eblue%2Ebuttons%20%2Ebutton%3Ahover%7Bbox%2Dshadow%3Anone%21important%3Bcolor%3A%23FFF%7D%2Eui%2Einverted%2Eblue%2Ebutton%3Ahover%2C%2Eui%2Einverted%2Eblue%2Ebuttons%20%2Ebutton%3Ahover%7Bbackground%2Dcolor%3A%233ac0ff%7D%2Eui%2Einverted%2Eblue%2Ebutton%3Afocus%2C%2Eui%2Einverted%2Eblue%2Ebuttons%20%2Ebutton%3Afocus%7Bbackground%2Dcolor%3A%232bbbff%7D%2Eui%2Einverted%2Eblue%2Eactive%2Ebutton%2C%2Eui%2Einverted%2Eblue%2Ebuttons%20%2Eactive%2Ebutton%7Bbackground%2Dcolor%3A%233ac0ff%7D%2Eui%2Einverted%2Eblue%2Ebutton%3Aactive%2C%2Eui%2Einverted%2Eblue%2Ebuttons%20%2Ebutton%3Aactive%7Bbackground%2Dcolor%3A%2321b8ff%7D%2Eui%2Einverted%2Eblue%2Ebasic%2Ebutton%2C%2Eui%2Einverted%2Eblue%2Ebasic%2Ebuttons%20%2Ebutton%2C%2Eui%2Einverted%2Eblue%2Ebuttons%20%2Ebasic%2Ebutton%7Bbackground%2Dcolor%3Atransparent%3Bbox%2Dshadow%3A0%200%200%202px%20rgba%28255%2C255%2C255%2C%2E5%29%20inset%21important%3Bcolor%3A%23FFF%21important%7D%2Eui%2Einverted%2Eblue%2Ebasic%2Ebutton%3Ahover%2C%2Eui%2Einverted%2Eblue%2Ebasic%2Ebuttons%20%2Ebutton%3Ahover%2C%2Eui%2Einverted%2Eblue%2Ebuttons%20%2Ebasic%2Ebutton%3Ahover%7Bbox%2Dshadow%3A0%200%200%202px%20%233ac0ff%20inset%21important%3Bcolor%3A%2354C8FF%21important%7D%2Eui%2Einverted%2Eblue%2Ebasic%2Ebutton%3Afocus%2C%2Eui%2Einverted%2Eblue%2Ebasic%2Ebuttons%20%2Ebutton%3Afocus%7Bbox%2Dshadow%3A0%200%200%202px%20%232bbbff%20inset%21important%3Bcolor%3A%2354C8FF%21important%7D%2Eui%2Einverted%2Eblue%2Ebasic%2Eactive%2Ebutton%2C%2Eui%2Einverted%2Eblue%2Ebasic%2Ebuttons%20%2Eactive%2Ebutton%2C%2Eui%2Einverted%2Eblue%2Ebuttons%20%2Ebasic%2Eactive%2Ebutton%7Bbox%2Dshadow%3A0%200%200%202px%20%233ac0ff%20inset%21important%3Bcolor%3A%2354C8FF%21important%7D%2Eui%2Einverted%2Eblue%2Ebasic%2Ebutton%3Aactive%2C%2Eui%2Einverted%2Eblue%2Ebasic%2Ebuttons%20%2Ebutton%3Aactive%2C%2Eui%2Einverted%2Eblue%2Ebuttons%20%2Ebasic%2Ebutton%3Aactive%7Bbox%2Dshadow%3A0%200%200%202px%20%2321b8ff%20inset%21important%3Bcolor%3A%2354C8FF%21important%7D%2Eui%2Egreen%2Ebutton%2C%2Eui%2Egreen%2Ebuttons%20%2Ebutton%7Bbackground%2Dcolor%3A%2321BA45%3Bcolor%3A%23FFF%3Btext%2Dshadow%3Anone%3Bbackground%2Dimage%3Anone%7D%2Eui%2Egreen%2Ebutton%7Bbox%2Dshadow%3A0%200%200%200%20rgba%2834%2C36%2C38%2C%2E15%29%20inset%7D%2Eui%2Egreen%2Ebutton%3Ahover%2C%2Eui%2Egreen%2Ebuttons%20%2Ebutton%3Ahover%7Bbackground%2Dcolor%3A%2316ab39%3Bcolor%3A%23FFF%3Btext%2Dshadow%3Anone%7D%2Eui%2Egreen%2Ebutton%3Afocus%2C%2Eui%2Egreen%2Ebuttons%20%2Ebutton%3Afocus%7Bbackground%2Dcolor%3A%230ea432%3Bcolor%3A%23FFF%3Btext%2Dshadow%3Anone%7D%2Eui%2Egreen%2Ebutton%3Aactive%2C%2Eui%2Egreen%2Ebuttons%20%2Ebutton%3Aactive%7Bbackground%2Dcolor%3A%23198f35%3Bcolor%3A%23FFF%3Btext%2Dshadow%3Anone%7D%2Eui%2Egreen%2Eactive%2Ebutton%2C%2Eui%2Egreen%2Ebutton%20%2Eactive%2Ebutton%3Aactive%2C%2Eui%2Egreen%2Ebuttons%20%2Eactive%2Ebutton%2C%2Eui%2Egreen%2Ebuttons%20%2Eactive%2Ebutton%3Aactive%7Bbackground%2Dcolor%3A%2313ae38%3Bcolor%3A%23FFF%3Btext%2Dshadow%3Anone%7D%2Eui%2Ebasic%2Egreen%2Ebutton%2C%2Eui%2Ebasic%2Egreen%2Ebuttons%20%2Ebutton%7Bbox%2Dshadow%3A0%200%200%201px%20%2321BA45%20inset%21important%3Bcolor%3A%2321BA45%21important%7D%2Eui%2Ebasic%2Egreen%2Ebutton%3Ahover%2C%2Eui%2Ebasic%2Egreen%2Ebuttons%20%2Ebutton%3Ahover%7Bbackground%3A0%200%21important%3Bbox%2Dshadow%3A0%200%200%201px%20%2316ab39%20inset%21important%3Bcolor%3A%2316ab39%21important%7D%2Eui%2Ebasic%2Egreen%2Ebutton%3Afocus%2C%2Eui%2Ebasic%2Egreen%2Ebuttons%20%2Ebutton%3Afocus%7Bbackground%3A0%200%21important%3Bbox%2Dshadow%3A0%200%200%201px%20%230ea432%20inset%21important%3Bcolor%3A%2316ab39%21important%7D%2Eui%2Ebasic%2Egreen%2Eactive%2Ebutton%2C%2Eui%2Ebasic%2Egreen%2Ebuttons%20%2Eactive%2Ebutton%7Bbackground%3A0%200%21important%3Bbox%2Dshadow%3A0%200%200%201px%20%2313ae38%20inset%21important%3Bcolor%3A%23198f35%21important%7D%2Eui%2Ebasic%2Egreen%2Ebutton%3Aactive%2C%2Eui%2Ebasic%2Egreen%2Ebuttons%20%2Ebutton%3Aactive%7Bbox%2Dshadow%3A0%200%200%201px%20%23198f35%20inset%21important%3Bcolor%3A%23198f35%21important%7D%2Eui%2Ebuttons%3Anot%28%2Evertical%29%3E%2Ebasic%2Egreen%2Ebutton%3Anot%28%3Afirst%2Dchild%29%7Bmargin%2Dleft%3A%2D1px%7D%2Eui%2Einverted%2Egreen%2Ebutton%2C%2Eui%2Einverted%2Egreen%2Ebuttons%20%2Ebutton%7Bbackground%2Dcolor%3Atransparent%3Bbox%2Dshadow%3A0%200%200%202px%20%232ECC40%20inset%21important%3Bcolor%3A%232ECC40%7D%2Eui%2Einverted%2Egreen%2Ebutton%2Eactive%2C%2Eui%2Einverted%2Egreen%2Ebutton%3Aactive%2C%2Eui%2Einverted%2Egreen%2Ebutton%3Afocus%2C%2Eui%2Einverted%2Egreen%2Ebutton%3Ahover%2C%2Eui%2Einverted%2Egreen%2Ebuttons%20%2Ebutton%2Eactive%2C%2Eui%2Einverted%2Egreen%2Ebuttons%20%2Ebutton%3Aactive%2C%2Eui%2Einverted%2Egreen%2Ebuttons%20%2Ebutton%3Afocus%2C%2Eui%2Einverted%2Egreen%2Ebuttons%20%2Ebutton%3Ahover%7Bbox%2Dshadow%3Anone%21important%3Bcolor%3A%23FFF%7D%2Eui%2Einverted%2Egreen%2Ebutton%3Ahover%2C%2Eui%2Einverted%2Egreen%2Ebuttons%20%2Ebutton%3Ahover%7Bbackground%2Dcolor%3A%2322be34%7D%2Eui%2Einverted%2Egreen%2Ebutton%3Afocus%2C%2Eui%2Einverted%2Egreen%2Ebuttons%20%2Ebutton%3Afocus%7Bbackground%2Dcolor%3A%2319b82b%7D%2Eui%2Einverted%2Egreen%2Eactive%2Ebutton%2C%2Eui%2Einverted%2Egreen%2Ebuttons%20%2Eactive%2Ebutton%7Bbackground%2Dcolor%3A%231fc231%7D%2Eui%2Einverted%2Egreen%2Ebutton%3Aactive%2C%2Eui%2Einverted%2Egreen%2Ebuttons%20%2Ebutton%3Aactive%7Bbackground%2Dcolor%3A%2325a233%7D%2Eui%2Einverted%2Egreen%2Ebasic%2Ebutton%2C%2Eui%2Einverted%2Egreen%2Ebasic%2Ebuttons%20%2Ebutton%2C%2Eui%2Einverted%2Egreen%2Ebuttons%20%2Ebasic%2Ebutton%7Bbackground%2Dcolor%3Atransparent%3Bbox%2Dshadow%3A0%200%200%202px%20rgba%28255%2C255%2C255%2C%2E5%29%20inset%21important%3Bcolor%3A%23FFF%21important%7D%2Eui%2Einverted%2Egreen%2Ebasic%2Ebutton%3Ahover%2C%2Eui%2Einverted%2Egreen%2Ebasic%2Ebuttons%20%2Ebutton%3Ahover%2C%2Eui%2Einverted%2Egreen%2Ebuttons%20%2Ebasic%2Ebutton%3Ahover%7Bbox%2Dshadow%3A0%200%200%202px%20%2322be34%20inset%21important%3Bcolor%3A%232ECC40%21important%7D%2Eui%2Einverted%2Egreen%2Ebasic%2Ebutton%3Afocus%2C%2Eui%2Einverted%2Egreen%2Ebasic%2Ebuttons%20%2Ebutton%3Afocus%7Bbox%2Dshadow%3A0%200%200%202px%20%2319b82b%20inset%21important%3Bcolor%3A%232ECC40%21important%7D%2Eui%2Einverted%2Egreen%2Ebasic%2Eactive%2Ebutton%2C%2Eui%2Einverted%2Egreen%2Ebasic%2Ebuttons%20%2Eactive%2Ebutton%2C%2Eui%2Einverted%2Egreen%2Ebuttons%20%2Ebasic%2Eactive%2Ebutton%7Bbox%2Dshadow%3A0%200%200%202px%20%231fc231%20inset%21important%3Bcolor%3A%232ECC40%21important%7D%2Eui%2Einverted%2Egreen%2Ebasic%2Ebutton%3Aactive%2C%2Eui%2Einverted%2Egreen%2Ebasic%2Ebuttons%20%2Ebutton%3Aactive%2C%2Eui%2Einverted%2Egreen%2Ebuttons%20%2Ebasic%2Ebutton%3Aactive%7Bbox%2Dshadow%3A0%200%200%202px%20%2325a233%20inset%21important%3Bcolor%3A%232ECC40%21important%7D%2Eui%2Eorange%2Ebutton%2C%2Eui%2Eorange%2Ebuttons%20%2Ebutton%7Bbackground%2Dcolor%3A%23F2711C%3Bcolor%3A%23FFF%3Btext%2Dshadow%3Anone%3Bbackground%2Dimage%3Anone%7D%2Eui%2Eorange%2Ebutton%7Bbox%2Dshadow%3A0%200%200%200%20rgba%2834%2C36%2C38%2C%2E15%29%20inset%7D%2Eui%2Eorange%2Ebutton%3Ahover%2C%2Eui%2Eorange%2Ebuttons%20%2Ebutton%3Ahover%7Bbackground%2Dcolor%3A%23f26202%3Bcolor%3A%23FFF%3Btext%2Dshadow%3Anone%7D%2Eui%2Eorange%2Ebutton%3Afocus%2C%2Eui%2Eorange%2Ebuttons%20%2Ebutton%3Afocus%7Bbackground%2Dcolor%3A%23e55b00%3Bcolor%3A%23FFF%3Btext%2Dshadow%3Anone%7D%2Eui%2Eorange%2Ebutton%3Aactive%2C%2Eui%2Eorange%2Ebuttons%20%2Ebutton%3Aactive%7Bbackground%2Dcolor%3A%23cf590c%3Bcolor%3A%23FFF%3Btext%2Dshadow%3Anone%7D%2Eui%2Eorange%2Eactive%2Ebutton%2C%2Eui%2Eorange%2Ebutton%20%2Eactive%2Ebutton%3Aactive%2C%2Eui%2Eorange%2Ebuttons%20%2Eactive%2Ebutton%2C%2Eui%2Eorange%2Ebuttons%20%2Eactive%2Ebutton%3Aactive%7Bbackground%2Dcolor%3A%23f56100%3Bcolor%3A%23FFF%3Btext%2Dshadow%3Anone%7D%2Eui%2Ebasic%2Eorange%2Ebutton%2C%2Eui%2Ebasic%2Eorange%2Ebuttons%20%2Ebutton%7Bbox%2Dshadow%3A0%200%200%201px%20%23F2711C%20inset%21important%3Bcolor%3A%23F2711C%21important%7D%2Eui%2Ebasic%2Eorange%2Ebutton%3Ahover%2C%2Eui%2Ebasic%2Eorange%2Ebuttons%20%2Ebutton%3Ahover%7Bbackground%3A0%200%21important%3Bbox%2Dshadow%3A0%200%200%201px%20%23f26202%20inset%21important%3Bcolor%3A%23f26202%21important%7D%2Eui%2Ebasic%2Eorange%2Ebutton%3Afocus%2C%2Eui%2Ebasic%2Eorange%2Ebuttons%20%2Ebutton%3Afocus%7Bbackground%3A0%200%21important%3Bbox%2Dshadow%3A0%200%200%201px%20%23e55b00%20inset%21important%3Bcolor%3A%23f26202%21important%7D%2Eui%2Ebasic%2Eorange%2Eactive%2Ebutton%2C%2Eui%2Ebasic%2Eorange%2Ebuttons%20%2Eactive%2Ebutton%7Bbackground%3A0%200%21important%3Bbox%2Dshadow%3A0%200%200%201px%20%23f56100%20inset%21important%3Bcolor%3A%23cf590c%21important%7D%2Eui%2Ebasic%2Eorange%2Ebutton%3Aactive%2C%2Eui%2Ebasic%2Eorange%2Ebuttons%20%2Ebutton%3Aactive%7Bbox%2Dshadow%3A0%200%200%201px%20%23cf590c%20inset%21important%3Bcolor%3A%23cf590c%21important%7D%2Eui%2Ebuttons%3Anot%28%2Evertical%29%3E%2Ebasic%2Eorange%2Ebutton%3Anot%28%3Afirst%2Dchild%29%7Bmargin%2Dleft%3A%2D1px%7D%2Eui%2Einverted%2Eorange%2Ebutton%2C%2Eui%2Einverted%2Eorange%2Ebuttons%20%2Ebutton%7Bbackground%2Dcolor%3Atransparent%3Bbox%2Dshadow%3A0%200%200%202px%20%23FF851B%20inset%21important%3Bcolor%3A%23FF851B%7D%2Eui%2Einverted%2Eorange%2Ebutton%2Eactive%2C%2Eui%2Einverted%2Eorange%2Ebutton%3Aactive%2C%2Eui%2Einverted%2Eorange%2Ebutton%3Afocus%2C%2Eui%2Einverted%2Eorange%2Ebutton%3Ahover%2C%2Eui%2Einverted%2Eorange%2Ebuttons%20%2Ebutton%2Eactive%2C%2Eui%2Einverted%2Eorange%2Ebuttons%20%2Ebutton%3Aactive%2C%2Eui%2Einverted%2Eorange%2Ebuttons%20%2Ebutton%3Afocus%2C%2Eui%2Einverted%2Eorange%2Ebuttons%20%2Ebutton%3Ahover%7Bbox%2Dshadow%3Anone%21important%3Bcolor%3A%23FFF%7D%2Eui%2Einverted%2Eorange%2Ebutton%3Ahover%2C%2Eui%2Einverted%2Eorange%2Ebuttons%20%2Ebutton%3Ahover%7Bbackground%2Dcolor%3A%23ff7701%7D%2Eui%2Einverted%2Eorange%2Ebutton%3Afocus%2C%2Eui%2Einverted%2Eorange%2Ebuttons%20%2Ebutton%3Afocus%7Bbackground%2Dcolor%3A%23f17000%7D%2Eui%2Einverted%2Eorange%2Eactive%2Ebutton%2C%2Eui%2Einverted%2Eorange%2Ebuttons%20%2Eactive%2Ebutton%7Bbackground%2Dcolor%3A%23ff7701%7D%2Eui%2Einverted%2Eorange%2Ebutton%3Aactive%2C%2Eui%2Einverted%2Eorange%2Ebuttons%20%2Ebutton%3Aactive%7Bbackground%2Dcolor%3A%23e76b00%7D%2Eui%2Einverted%2Eorange%2Ebasic%2Ebutton%2C%2Eui%2Einverted%2Eorange%2Ebasic%2Ebuttons%20%2Ebutton%2C%2Eui%2Einverted%2Eorange%2Ebuttons%20%2Ebasic%2Ebutton%7Bbackground%2Dcolor%3Atransparent%3Bbox%2Dshadow%3A0%200%200%202px%20rgba%28255%2C255%2C255%2C%2E5%29%20inset%21important%3Bcolor%3A%23FFF%21important%7D%2Eui%2Einverted%2Eorange%2Ebasic%2Ebutton%3Ahover%2C%2Eui%2Einverted%2Eorange%2Ebasic%2Ebuttons%20%2Ebutton%3Ahover%2C%2Eui%2Einverted%2Eorange%2Ebuttons%20%2Ebasic%2Ebutton%3Ahover%7Bbox%2Dshadow%3A0%200%200%202px%20%23ff7701%20inset%21important%3Bcolor%3A%23FF851B%21important%7D%2Eui%2Einverted%2Eorange%2Ebasic%2Ebutton%3Afocus%2C%2Eui%2Einverted%2Eorange%2Ebasic%2Ebuttons%20%2Ebutton%3Afocus%7Bbox%2Dshadow%3A0%200%200%202px%20%23f17000%20inset%21important%3Bcolor%3A%23FF851B%21important%7D%2Eui%2Einverted%2Eorange%2Ebasic%2Eactive%2Ebutton%2C%2Eui%2Einverted%2Eorange%2Ebasic%2Ebuttons%20%2Eactive%2Ebutton%2C%2Eui%2Einverted%2Eorange%2Ebuttons%20%2Ebasic%2Eactive%2Ebutton%7Bbox%2Dshadow%3A0%200%200%202px%20%23ff7701%20inset%21important%3Bcolor%3A%23FF851B%21important%7D%2Eui%2Einverted%2Eorange%2Ebasic%2Ebutton%3Aactive%2C%2Eui%2Einverted%2Eorange%2Ebasic%2Ebuttons%20%2Ebutton%3Aactive%2C%2Eui%2Einverted%2Eorange%2Ebuttons%20%2Ebasic%2Ebutton%3Aactive%7Bbox%2Dshadow%3A0%200%200%202px%20%23e76b00%20inset%21important%3Bcolor%3A%23FF851B%21important%7D%2Eui%2Epink%2Ebutton%2C%2Eui%2Epink%2Ebuttons%20%2Ebutton%7Bbackground%2Dcolor%3A%23E03997%3Bcolor%3A%23FFF%3Btext%2Dshadow%3Anone%3Bbackground%2Dimage%3Anone%7D%2Eui%2Epink%2Ebutton%7Bbox%2Dshadow%3A0%200%200%200%20rgba%2834%2C36%2C38%2C%2E15%29%20inset%7D%2Eui%2Epink%2Ebutton%3Ahover%2C%2Eui%2Epink%2Ebuttons%20%2Ebutton%3Ahover%7Bbackground%2Dcolor%3A%23e61a8d%3Bcolor%3A%23FFF%3Btext%2Dshadow%3Anone%7D%2Eui%2Epink%2Ebutton%3Afocus%2C%2Eui%2Epink%2Ebuttons%20%2Ebutton%3Afocus%7Bbackground%2Dcolor%3A%23e10f85%3Bcolor%3A%23FFF%3Btext%2Dshadow%3Anone%7D%2Eui%2Epink%2Ebutton%3Aactive%2C%2Eui%2Epink%2Ebuttons%20%2Ebutton%3Aactive%7Bbackground%2Dcolor%3A%23c71f7e%3Bcolor%3A%23FFF%3Btext%2Dshadow%3Anone%7D%2Eui%2Epink%2Eactive%2Ebutton%2C%2Eui%2Epink%2Ebutton%20%2Eactive%2Ebutton%3Aactive%2C%2Eui%2Epink%2Ebuttons%20%2Eactive%2Ebutton%2C%2Eui%2Epink%2Ebuttons%20%2Eactive%2Ebutton%3Aactive%7Bbackground%2Dcolor%3A%23ea158d%3Bcolor%3A%23FFF%3Btext%2Dshadow%3Anone%7D%2Eui%2Ebasic%2Epink%2Ebutton%2C%2Eui%2Ebasic%2Epink%2Ebuttons%20%2Ebutton%7Bbox%2Dshadow%3A0%200%200%201px%20%23E03997%20inset%21important%3Bcolor%3A%23E03997%21important%7D%2Eui%2Ebasic%2Epink%2Ebutton%3Ahover%2C%2Eui%2Ebasic%2Epink%2Ebuttons%20%2Ebutton%3Ahover%7Bbackground%3A0%200%21important%3Bbox%2Dshadow%3A0%200%200%201px%20%23e61a8d%20inset%21important%3Bcolor%3A%23e61a8d%21important%7D%2Eui%2Ebasic%2Epink%2Ebutton%3Afocus%2C%2Eui%2Ebasic%2Epink%2Ebuttons%20%2Ebutton%3Afocus%7Bbackground%3A0%200%21important%3Bbox%2Dshadow%3A0%200%200%201px%20%23e10f85%20inset%21important%3Bcolor%3A%23e61a8d%21important%7D%2Eui%2Ebasic%2Epink%2Eactive%2Ebutton%2C%2Eui%2Ebasic%2Epink%2Ebuttons%20%2Eactive%2Ebutton%7Bbackground%3A0%200%21important%3Bbox%2Dshadow%3A0%200%200%201px%20%23ea158d%20inset%21important%3Bcolor%3A%23c71f7e%21important%7D%2Eui%2Ebasic%2Epink%2Ebutton%3Aactive%2C%2Eui%2Ebasic%2Epink%2Ebuttons%20%2Ebutton%3Aactive%7Bbox%2Dshadow%3A0%200%200%201px%20%23c71f7e%20inset%21important%3Bcolor%3A%23c71f7e%21important%7D%2Eui%2Ebuttons%3Anot%28%2Evertical%29%3E%2Ebasic%2Epink%2Ebutton%3Anot%28%3Afirst%2Dchild%29%7Bmargin%2Dleft%3A%2D1px%7D%2Eui%2Einverted%2Epink%2Ebutton%2C%2Eui%2Einverted%2Epink%2Ebuttons%20%2Ebutton%7Bbackground%2Dcolor%3Atransparent%3Bbox%2Dshadow%3A0%200%200%202px%20%23FF8EDF%20inset%21important%3Bcolor%3A%23FF8EDF%7D%2Eui%2Einverted%2Epink%2Ebutton%2Eactive%2C%2Eui%2Einverted%2Epink%2Ebutton%3Aactive%2C%2Eui%2Einverted%2Epink%2Ebutton%3Afocus%2C%2Eui%2Einverted%2Epink%2Ebutton%3Ahover%2C%2Eui%2Einverted%2Epink%2Ebuttons%20%2Ebutton%2Eactive%2C%2Eui%2Einverted%2Epink%2Ebuttons%20%2Ebutton%3Aactive%2C%2Eui%2Einverted%2Epink%2Ebuttons%20%2Ebutton%3Afocus%2C%2Eui%2Einverted%2Epink%2Ebuttons%20%2Ebutton%3Ahover%7Bbox%2Dshadow%3Anone%21important%3Bcolor%3A%23FFF%7D%2Eui%2Einverted%2Epink%2Ebutton%3Ahover%2C%2Eui%2Einverted%2Epink%2Ebuttons%20%2Ebutton%3Ahover%7Bbackground%2Dcolor%3A%23ff74d8%7D%2Eui%2Einverted%2Epink%2Ebutton%3Afocus%2C%2Eui%2Einverted%2Epink%2Ebuttons%20%2Ebutton%3Afocus%7Bbackground%2Dcolor%3A%23ff65d3%7D%2Eui%2Einverted%2Epink%2Eactive%2Ebutton%2C%2Eui%2Einverted%2Epink%2Ebuttons%20%2Eactive%2Ebutton%7Bbackground%2Dcolor%3A%23ff74d8%7D%2Eui%2Einverted%2Epink%2Ebutton%3Aactive%2C%2Eui%2Einverted%2Epink%2Ebuttons%20%2Ebutton%3Aactive%7Bbackground%2Dcolor%3A%23ff5bd1%7D%2Eui%2Einverted%2Epink%2Ebasic%2Ebutton%2C%2Eui%2Einverted%2Epink%2Ebasic%2Ebuttons%20%2Ebutton%2C%2Eui%2Einverted%2Epink%2Ebuttons%20%2Ebasic%2Ebutton%7Bbackground%2Dcolor%3Atransparent%3Bbox%2Dshadow%3A0%200%200%202px%20rgba%28255%2C255%2C255%2C%2E5%29%20inset%21important%3Bcolor%3A%23FFF%21important%7D%2Eui%2Einverted%2Epink%2Ebasic%2Ebutton%3Ahover%2C%2Eui%2Einverted%2Epink%2Ebasic%2Ebuttons%20%2Ebutton%3Ahover%2C%2Eui%2Einverted%2Epink%2Ebuttons%20%2Ebasic%2Ebutton%3Ahover%7Bbox%2Dshadow%3A0%200%200%202px%20%23ff74d8%20inset%21important%3Bcolor%3A%23FF8EDF%21important%7D%2Eui%2Einverted%2Epink%2Ebasic%2Ebutton%3Afocus%2C%2Eui%2Einverted%2Epink%2Ebasic%2Ebuttons%20%2Ebutton%3Afocus%7Bbox%2Dshadow%3A0%200%200%202px%20%23ff65d3%20inset%21important%3Bcolor%3A%23FF8EDF%21important%7D%2Eui%2Einverted%2Epink%2Ebasic%2Eactive%2Ebutton%2C%2Eui%2Einverted%2Epink%2Ebasic%2Ebuttons%20%2Eactive%2Ebutton%2C%2Eui%2Einverted%2Epink%2Ebuttons%20%2Ebasic%2Eactive%2Ebutton%7Bbox%2Dshadow%3A0%200%200%202px%20%23ff74d8%20inset%21important%3Bcolor%3A%23FF8EDF%21important%7D%2Eui%2Einverted%2Epink%2Ebasic%2Ebutton%3Aactive%2C%2Eui%2Einverted%2Epink%2Ebasic%2Ebuttons%20%2Ebutton%3Aactive%2C%2Eui%2Einverted%2Epink%2Ebuttons%20%2Ebasic%2Ebutton%3Aactive%7Bbox%2Dshadow%3A0%200%200%202px%20%23ff5bd1%20inset%21important%3Bcolor%3A%23FF8EDF%21important%7D%2Eui%2Eviolet%2Ebutton%2C%2Eui%2Eviolet%2Ebuttons%20%2Ebutton%7Bbackground%2Dcolor%3A%236435C9%3Bcolor%3A%23FFF%3Btext%2Dshadow%3Anone%3Bbackground%2Dimage%3Anone%7D%2Eui%2Eviolet%2Ebutton%7Bbox%2Dshadow%3A0%200%200%200%20rgba%2834%2C36%2C38%2C%2E15%29%20inset%7D%2Eui%2Eviolet%2Ebutton%3Ahover%2C%2Eui%2Eviolet%2Ebuttons%20%2Ebutton%3Ahover%7Bbackground%2Dcolor%3A%235829bb%3Bcolor%3A%23FFF%3Btext%2Dshadow%3Anone%7D%2Eui%2Eviolet%2Ebutton%3Afocus%2C%2Eui%2Eviolet%2Ebuttons%20%2Ebutton%3Afocus%7Bbackground%2Dcolor%3A%234f20b5%3Bcolor%3A%23FFF%3Btext%2Dshadow%3Anone%7D%2Eui%2Eviolet%2Ebutton%3Aactive%2C%2Eui%2Eviolet%2Ebuttons%20%2Ebutton%3Aactive%7Bbackground%2Dcolor%3A%23502aa1%3Bcolor%3A%23FFF%3Btext%2Dshadow%3Anone%7D%2Eui%2Eviolet%2Eactive%2Ebutton%2C%2Eui%2Eviolet%2Ebutton%20%2Eactive%2Ebutton%3Aactive%2C%2Eui%2Eviolet%2Ebuttons%20%2Eactive%2Ebutton%2C%2Eui%2Eviolet%2Ebuttons%20%2Eactive%2Ebutton%3Aactive%7Bbackground%2Dcolor%3A%235626bf%3Bcolor%3A%23FFF%3Btext%2Dshadow%3Anone%7D%2Eui%2Ebasic%2Eviolet%2Ebutton%2C%2Eui%2Ebasic%2Eviolet%2Ebuttons%20%2Ebutton%7Bbox%2Dshadow%3A0%200%200%201px%20%236435C9%20inset%21important%3Bcolor%3A%236435C9%21important%7D%2Eui%2Ebasic%2Eviolet%2Ebutton%3Ahover%2C%2Eui%2Ebasic%2Eviolet%2Ebuttons%20%2Ebutton%3Ahover%7Bbackground%3A0%200%21important%3Bbox%2Dshadow%3A0%200%200%201px%20%235829bb%20inset%21important%3Bcolor%3A%235829bb%21important%7D%2Eui%2Ebasic%2Eviolet%2Ebutton%3Afocus%2C%2Eui%2Ebasic%2Eviolet%2Ebuttons%20%2Ebutton%3Afocus%7Bbackground%3A0%200%21important%3Bbox%2Dshadow%3A0%200%200%201px%20%234f20b5%20inset%21important%3Bcolor%3A%235829bb%21important%7D%2Eui%2Ebasic%2Eviolet%2Eactive%2Ebutton%2C%2Eui%2Ebasic%2Eviolet%2Ebuttons%20%2Eactive%2Ebutton%7Bbackground%3A0%200%21important%3Bbox%2Dshadow%3A0%200%200%201px%20%235626bf%20inset%21important%3Bcolor%3A%23502aa1%21important%7D%2Eui%2Ebasic%2Eviolet%2Ebutton%3Aactive%2C%2Eui%2Ebasic%2Eviolet%2Ebuttons%20%2Ebutton%3Aactive%7Bbox%2Dshadow%3A0%200%200%201px%20%23502aa1%20inset%21important%3Bcolor%3A%23502aa1%21important%7D%2Eui%2Ebuttons%3Anot%28%2Evertical%29%3E%2Ebasic%2Eviolet%2Ebutton%3Anot%28%3Afirst%2Dchild%29%7Bmargin%2Dleft%3A%2D1px%7D%2Eui%2Einverted%2Eviolet%2Ebutton%2C%2Eui%2Einverted%2Eviolet%2Ebuttons%20%2Ebutton%7Bbackground%2Dcolor%3Atransparent%3Bbox%2Dshadow%3A0%200%200%202px%20%23A291FB%20inset%21important%3Bcolor%3A%23A291FB%7D%2Eui%2Einverted%2Eviolet%2Ebutton%2Eactive%2C%2Eui%2Einverted%2Eviolet%2Ebutton%3Aactive%2C%2Eui%2Einverted%2Eviolet%2Ebutton%3Afocus%2C%2Eui%2Einverted%2Eviolet%2Ebutton%3Ahover%2C%2Eui%2Einverted%2Eviolet%2Ebuttons%20%2Ebutton%2Eactive%2C%2Eui%2Einverted%2Eviolet%2Ebuttons%20%2Ebutton%3Aactive%2C%2Eui%2Einverted%2Eviolet%2Ebuttons%20%2Ebutton%3Afocus%2C%2Eui%2Einverted%2Eviolet%2Ebuttons%20%2Ebutton%3Ahover%7Bbox%2Dshadow%3Anone%21important%3Bcolor%3A%23FFF%7D%2Eui%2Einverted%2Eviolet%2Ebutton%3Ahover%2C%2Eui%2Einverted%2Eviolet%2Ebuttons%20%2Ebutton%3Ahover%7Bbackground%2Dcolor%3A%238a73ff%7D%2Eui%2Einverted%2Eviolet%2Ebutton%3Afocus%2C%2Eui%2Einverted%2Eviolet%2Ebuttons%20%2Ebutton%3Afocus%7Bbackground%2Dcolor%3A%237d64ff%7D%2Eui%2Einverted%2Eviolet%2Eactive%2Ebutton%2C%2Eui%2Einverted%2Eviolet%2Ebuttons%20%2Eactive%2Ebutton%7Bbackground%2Dcolor%3A%238a73ff%7D%2Eui%2Einverted%2Eviolet%2Ebutton%3Aactive%2C%2Eui%2Einverted%2Eviolet%2Ebuttons%20%2Ebutton%3Aactive%7Bbackground%2Dcolor%3A%237860f9%7D%2Eui%2Einverted%2Eviolet%2Ebasic%2Ebutton%2C%2Eui%2Einverted%2Eviolet%2Ebasic%2Ebuttons%20%2Ebutton%2C%2Eui%2Einverted%2Eviolet%2Ebuttons%20%2Ebasic%2Ebutton%7Bbackground%2Dcolor%3Atransparent%3Bbox%2Dshadow%3A0%200%200%202px%20rgba%28255%2C255%2C255%2C%2E5%29%20inset%21important%3Bcolor%3A%23FFF%21important%7D%2Eui%2Einverted%2Eviolet%2Ebasic%2Ebutton%3Ahover%2C%2Eui%2Einverted%2Eviolet%2Ebasic%2Ebuttons%20%2Ebutton%3Ahover%2C%2Eui%2Einverted%2Eviolet%2Ebuttons%20%2Ebasic%2Ebutton%3Ahover%7Bbox%2Dshadow%3A0%200%200%202px%20%238a73ff%20inset%21important%3Bcolor%3A%23A291FB%21important%7D%2Eui%2Einverted%2Eviolet%2Ebasic%2Ebutton%3Afocus%2C%2Eui%2Einverted%2Eviolet%2Ebasic%2Ebuttons%20%2Ebutton%3Afocus%7Bbox%2Dshadow%3A0%200%200%202px%20%237d64ff%20inset%21important%3Bcolor%3A%23A291FB%21important%7D%2Eui%2Einverted%2Eviolet%2Ebasic%2Eactive%2Ebutton%2C%2Eui%2Einverted%2Eviolet%2Ebasic%2Ebuttons%20%2Eactive%2Ebutton%2C%2Eui%2Einverted%2Eviolet%2Ebuttons%20%2Ebasic%2Eactive%2Ebutton%7Bbox%2Dshadow%3A0%200%200%202px%20%238a73ff%20inset%21important%3Bcolor%3A%23A291FB%21important%7D%2Eui%2Einverted%2Eviolet%2Ebasic%2Ebutton%3Aactive%2C%2Eui%2Einverted%2Eviolet%2Ebasic%2Ebuttons%20%2Ebutton%3Aactive%2C%2Eui%2Einverted%2Eviolet%2Ebuttons%20%2Ebasic%2Ebutton%3Aactive%7Bbox%2Dshadow%3A0%200%200%202px%20%237860f9%20inset%21important%3Bcolor%3A%23A291FB%21important%7D%2Eui%2Epurple%2Ebutton%2C%2Eui%2Epurple%2Ebuttons%20%2Ebutton%7Bbackground%2Dcolor%3A%23A333C8%3Bcolor%3A%23FFF%3Btext%2Dshadow%3Anone%3Bbackground%2Dimage%3Anone%7D%2Eui%2Epurple%2Ebutton%7Bbox%2Dshadow%3A0%200%200%200%20rgba%2834%2C36%2C38%2C%2E15%29%20inset%7D%2Eui%2Epurple%2Ebutton%3Ahover%2C%2Eui%2Epurple%2Ebuttons%20%2Ebutton%3Ahover%7Bbackground%2Dcolor%3A%239627ba%3Bcolor%3A%23FFF%3Btext%2Dshadow%3Anone%7D%2Eui%2Epurple%2Ebutton%3Afocus%2C%2Eui%2Epurple%2Ebuttons%20%2Ebutton%3Afocus%7Bbackground%2Dcolor%3A%238f1eb4%3Bcolor%3A%23FFF%3Btext%2Dshadow%3Anone%7D%2Eui%2Epurple%2Ebutton%3Aactive%2C%2Eui%2Epurple%2Ebuttons%20%2Ebutton%3Aactive%7Bbackground%2Dcolor%3A%2382299f%3Bcolor%3A%23FFF%3Btext%2Dshadow%3Anone%7D%2Eui%2Epurple%2Eactive%2Ebutton%2C%2Eui%2Epurple%2Ebutton%20%2Eactive%2Ebutton%3Aactive%2C%2Eui%2Epurple%2Ebuttons%20%2Eactive%2Ebutton%2C%2Eui%2Epurple%2Ebuttons%20%2Eactive%2Ebutton%3Aactive%7Bbackground%2Dcolor%3A%239724be%3Bcolor%3A%23FFF%3Btext%2Dshadow%3Anone%7D%2Eui%2Ebasic%2Epurple%2Ebutton%2C%2Eui%2Ebasic%2Epurple%2Ebuttons%20%2Ebutton%7Bbox%2Dshadow%3A0%200%200%201px%20%23A333C8%20inset%21important%3Bcolor%3A%23A333C8%21important%7D%2Eui%2Ebasic%2Epurple%2Ebutton%3Ahover%2C%2Eui%2Ebasic%2Epurple%2Ebuttons%20%2Ebutton%3Ahover%7Bbackground%3A0%200%21important%3Bbox%2Dshadow%3A0%200%200%201px%20%239627ba%20inset%21important%3Bcolor%3A%239627ba%21important%7D%2Eui%2Ebasic%2Epurple%2Ebutton%3Afocus%2C%2Eui%2Ebasic%2Epurple%2Ebuttons%20%2Ebutton%3Afocus%7Bbackground%3A0%200%21important%3Bbox%2Dshadow%3A0%200%200%201px%20%238f1eb4%20inset%21important%3Bcolor%3A%239627ba%21important%7D%2Eui%2Ebasic%2Epurple%2Eactive%2Ebutton%2C%2Eui%2Ebasic%2Epurple%2Ebuttons%20%2Eactive%2Ebutton%7Bbackground%3A0%200%21important%3Bbox%2Dshadow%3A0%200%200%201px%20%239724be%20inset%21important%3Bcolor%3A%2382299f%21important%7D%2Eui%2Ebasic%2Epurple%2Ebutton%3Aactive%2C%2Eui%2Ebasic%2Epurple%2Ebuttons%20%2Ebutton%3Aactive%7Bbox%2Dshadow%3A0%200%200%201px%20%2382299f%20inset%21important%3Bcolor%3A%2382299f%21important%7D%2Eui%2Ebuttons%3Anot%28%2Evertical%29%3E%2Ebasic%2Epurple%2Ebutton%3Anot%28%3Afirst%2Dchild%29%7Bmargin%2Dleft%3A%2D1px%7D%2Eui%2Einverted%2Epurple%2Ebutton%2C%2Eui%2Einverted%2Epurple%2Ebuttons%20%2Ebutton%7Bbackground%2Dcolor%3Atransparent%3Bbox%2Dshadow%3A0%200%200%202px%20%23DC73FF%20inset%21important%3Bcolor%3A%23DC73FF%7D%2Eui%2Einverted%2Epurple%2Ebutton%2Eactive%2C%2Eui%2Einverted%2Epurple%2Ebutton%3Aactive%2C%2Eui%2Einverted%2Epurple%2Ebutton%3Afocus%2C%2Eui%2Einverted%2Epurple%2Ebutton%3Ahover%2C%2Eui%2Einverted%2Epurple%2Ebuttons%20%2Ebutton%2Eactive%2C%2Eui%2Einverted%2Epurple%2Ebuttons%20%2Ebutton%3Aactive%2C%2Eui%2Einverted%2Epurple%2Ebuttons%20%2Ebutton%3Afocus%2C%2Eui%2Einverted%2Epurple%2Ebuttons%20%2Ebutton%3Ahover%7Bbox%2Dshadow%3Anone%21important%3Bcolor%3A%23FFF%7D%2Eui%2Einverted%2Epurple%2Ebutton%3Ahover%2C%2Eui%2Einverted%2Epurple%2Ebuttons%20%2Ebutton%3Ahover%7Bbackground%2Dcolor%3A%23d65aff%7D%2Eui%2Einverted%2Epurple%2Ebutton%3Afocus%2C%2Eui%2Einverted%2Epurple%2Ebuttons%20%2Ebutton%3Afocus%7Bbackground%2Dcolor%3A%23d24aff%7D%2Eui%2Einverted%2Epurple%2Eactive%2Ebutton%2C%2Eui%2Einverted%2Epurple%2Ebuttons%20%2Eactive%2Ebutton%7Bbackground%2Dcolor%3A%23d65aff%7D%2Eui%2Einverted%2Epurple%2Ebutton%3Aactive%2C%2Eui%2Einverted%2Epurple%2Ebuttons%20%2Ebutton%3Aactive%7Bbackground%2Dcolor%3A%23cf40ff%7D%2Eui%2Einverted%2Epurple%2Ebasic%2Ebutton%2C%2Eui%2Einverted%2Epurple%2Ebasic%2Ebuttons%20%2Ebutton%2C%2Eui%2Einverted%2Epurple%2Ebuttons%20%2Ebasic%2Ebutton%7Bbackground%2Dcolor%3Atransparent%3Bbox%2Dshadow%3A0%200%200%202px%20rgba%28255%2C255%2C255%2C%2E5%29%20inset%21important%3Bcolor%3A%23FFF%21important%7D%2Eui%2Einverted%2Epurple%2Ebasic%2Ebutton%3Ahover%2C%2Eui%2Einverted%2Epurple%2Ebasic%2Ebuttons%20%2Ebutton%3Ahover%2C%2Eui%2Einverted%2Epurple%2Ebuttons%20%2Ebasic%2Ebutton%3Ahover%7Bbox%2Dshadow%3A0%200%200%202px%20%23d65aff%20inset%21important%3Bcolor%3A%23DC73FF%21important%7D%2Eui%2Einverted%2Epurple%2Ebasic%2Ebutton%3Afocus%2C%2Eui%2Einverted%2Epurple%2Ebasic%2Ebuttons%20%2Ebutton%3Afocus%7Bbox%2Dshadow%3A0%200%200%202px%20%23d24aff%20inset%21important%3Bcolor%3A%23DC73FF%21important%7D%2Eui%2Einverted%2Epurple%2Ebasic%2Eactive%2Ebutton%2C%2Eui%2Einverted%2Epurple%2Ebasic%2Ebuttons%20%2Eactive%2Ebutton%2C%2Eui%2Einverted%2Epurple%2Ebuttons%20%2Ebasic%2Eactive%2Ebutton%7Bbox%2Dshadow%3A0%200%200%202px%20%23d65aff%20inset%21important%3Bcolor%3A%23DC73FF%21important%7D%2Eui%2Einverted%2Epurple%2Ebasic%2Ebutton%3Aactive%2C%2Eui%2Einverted%2Epurple%2Ebasic%2Ebuttons%20%2Ebutton%3Aactive%2C%2Eui%2Einverted%2Epurple%2Ebuttons%20%2Ebasic%2Ebutton%3Aactive%7Bbox%2Dshadow%3A0%200%200%202px%20%23cf40ff%20inset%21important%3Bcolor%3A%23DC73FF%21important%7D%2Eui%2Ered%2Ebutton%2C%2Eui%2Ered%2Ebuttons%20%2Ebutton%7Bbackground%2Dcolor%3A%23DB2828%3Bcolor%3A%23FFF%3Btext%2Dshadow%3Anone%3Bbackground%2Dimage%3Anone%7D%2Eui%2Ered%2Ebutton%7Bbox%2Dshadow%3A0%200%200%200%20rgba%2834%2C36%2C38%2C%2E15%29%20inset%7D%2Eui%2Ered%2Ebutton%3Ahover%2C%2Eui%2Ered%2Ebuttons%20%2Ebutton%3Ahover%7Bbackground%2Dcolor%3A%23d01919%3Bcolor%3A%23FFF%3Btext%2Dshadow%3Anone%7D%2Eui%2Ered%2Ebutton%3Afocus%2C%2Eui%2Ered%2Ebuttons%20%2Ebutton%3Afocus%7Bbackground%2Dcolor%3A%23ca1010%3Bcolor%3A%23FFF%3Btext%2Dshadow%3Anone%7D%2Eui%2Ered%2Ebutton%3Aactive%2C%2Eui%2Ered%2Ebuttons%20%2Ebutton%3Aactive%7Bbackground%2Dcolor%3A%23b21e1e%3Bcolor%3A%23FFF%3Btext%2Dshadow%3Anone%7D%2Eui%2Ered%2Eactive%2Ebutton%2C%2Eui%2Ered%2Ebutton%20%2Eactive%2Ebutton%3Aactive%2C%2Eui%2Ered%2Ebuttons%20%2Eactive%2Ebutton%2C%2Eui%2Ered%2Ebuttons%20%2Eactive%2Ebutton%3Aactive%7Bbackground%2Dcolor%3A%23d41515%3Bcolor%3A%23FFF%3Btext%2Dshadow%3Anone%7D%2Eui%2Ebasic%2Ered%2Ebutton%2C%2Eui%2Ebasic%2Ered%2Ebuttons%20%2Ebutton%7Bbox%2Dshadow%3A0%200%200%201px%20%23DB2828%20inset%21important%3Bcolor%3A%23DB2828%21important%7D%2Eui%2Ebasic%2Ered%2Ebutton%3Ahover%2C%2Eui%2Ebasic%2Ered%2Ebuttons%20%2Ebutton%3Ahover%7Bbackground%3A0%200%21important%3Bbox%2Dshadow%3A0%200%200%201px%20%23d01919%20inset%21important%3Bcolor%3A%23d01919%21important%7D%2Eui%2Ebasic%2Ered%2Ebutton%3Afocus%2C%2Eui%2Ebasic%2Ered%2Ebuttons%20%2Ebutton%3Afocus%7Bbackground%3A0%200%21important%3Bbox%2Dshadow%3A0%200%200%201px%20%23ca1010%20inset%21important%3Bcolor%3A%23d01919%21important%7D%2Eui%2Ebasic%2Ered%2Eactive%2Ebutton%2C%2Eui%2Ebasic%2Ered%2Ebuttons%20%2Eactive%2Ebutton%7Bbackground%3A0%200%21important%3Bbox%2Dshadow%3A0%200%200%201px%20%23d41515%20inset%21important%3Bcolor%3A%23b21e1e%21important%7D%2Eui%2Ebasic%2Ered%2Ebutton%3Aactive%2C%2Eui%2Ebasic%2Ered%2Ebuttons%20%2Ebutton%3Aactive%7Bbox%2Dshadow%3A0%200%200%201px%20%23b21e1e%20inset%21important%3Bcolor%3A%23b21e1e%21important%7D%2Eui%2Ebuttons%3Anot%28%2Evertical%29%3E%2Ebasic%2Ered%2Ebutton%3Anot%28%3Afirst%2Dchild%29%7Bmargin%2Dleft%3A%2D1px%7D%2Eui%2Einverted%2Ered%2Ebutton%2C%2Eui%2Einverted%2Ered%2Ebuttons%20%2Ebutton%7Bbackground%2Dcolor%3Atransparent%3Bbox%2Dshadow%3A0%200%200%202px%20%23FF695E%20inset%21important%3Bcolor%3A%23FF695E%7D%2Eui%2Einverted%2Ered%2Ebutton%2Eactive%2C%2Eui%2Einverted%2Ered%2Ebutton%3Aactive%2C%2Eui%2Einverted%2Ered%2Ebutton%3Afocus%2C%2Eui%2Einverted%2Ered%2Ebutton%3Ahover%2C%2Eui%2Einverted%2Ered%2Ebuttons%20%2Ebutton%2Eactive%2C%2Eui%2Einverted%2Ered%2Ebuttons%20%2Ebutton%3Aactive%2C%2Eui%2Einverted%2Ered%2Ebuttons%20%2Ebutton%3Afocus%2C%2Eui%2Einverted%2Ered%2Ebuttons%20%2Ebutton%3Ahover%7Bbox%2Dshadow%3Anone%21important%3Bcolor%3A%23FFF%7D%2Eui%2Einverted%2Ered%2Ebutton%3Ahover%2C%2Eui%2Einverted%2Ered%2Ebuttons%20%2Ebutton%3Ahover%7Bbackground%2Dcolor%3A%23ff5144%7D%2Eui%2Einverted%2Ered%2Ebutton%3Afocus%2C%2Eui%2Einverted%2Ered%2Ebuttons%20%2Ebutton%3Afocus%7Bbackground%2Dcolor%3A%23ff4335%7D%2Eui%2Einverted%2Ered%2Eactive%2Ebutton%2C%2Eui%2Einverted%2Ered%2Ebuttons%20%2Eactive%2Ebutton%7Bbackground%2Dcolor%3A%23ff5144%7D%2Eui%2Einverted%2Ered%2Ebutton%3Aactive%2C%2Eui%2Einverted%2Ered%2Ebuttons%20%2Ebutton%3Aactive%7Bbackground%2Dcolor%3A%23ff392b%7D%2Eui%2Einverted%2Ered%2Ebasic%2Ebutton%2C%2Eui%2Einverted%2Ered%2Ebasic%2Ebuttons%20%2Ebutton%2C%2Eui%2Einverted%2Ered%2Ebuttons%20%2Ebasic%2Ebutton%7Bbackground%2Dcolor%3Atransparent%3Bbox%2Dshadow%3A0%200%200%202px%20rgba%28255%2C255%2C255%2C%2E5%29%20inset%21important%3Bcolor%3A%23FFF%21important%7D%2Eui%2Einverted%2Ered%2Ebasic%2Ebutton%3Ahover%2C%2Eui%2Einverted%2Ered%2Ebasic%2Ebuttons%20%2Ebutton%3Ahover%2C%2Eui%2Einverted%2Ered%2Ebuttons%20%2Ebasic%2Ebutton%3Ahover%7Bbox%2Dshadow%3A0%200%200%202px%20%23ff5144%20inset%21important%3Bcolor%3A%23FF695E%21important%7D%2Eui%2Einverted%2Ered%2Ebasic%2Ebutton%3Afocus%2C%2Eui%2Einverted%2Ered%2Ebasic%2Ebuttons%20%2Ebutton%3Afocus%7Bbox%2Dshadow%3A0%200%200%202px%20%23ff4335%20inset%21important%3Bcolor%3A%23FF695E%21important%7D%2Eui%2Einverted%2Ered%2Ebasic%2Eactive%2Ebutton%2C%2Eui%2Einverted%2Ered%2Ebasic%2Ebuttons%20%2Eactive%2Ebutton%2C%2Eui%2Einverted%2Ered%2Ebuttons%20%2Ebasic%2Eactive%2Ebutton%7Bbox%2Dshadow%3A0%200%200%202px%20%23ff5144%20inset%21important%3Bcolor%3A%23FF695E%21important%7D%2Eui%2Einverted%2Ered%2Ebasic%2Ebutton%3Aactive%2C%2Eui%2Einverted%2Ered%2Ebasic%2Ebuttons%20%2Ebutton%3Aactive%2C%2Eui%2Einverted%2Ered%2Ebuttons%20%2Ebasic%2Ebutton%3Aactive%7Bbox%2Dshadow%3A0%200%200%202px%20%23ff392b%20inset%21important%3Bcolor%3A%23FF695E%21important%7D%2Eui%2Eteal%2Ebutton%2C%2Eui%2Eteal%2Ebuttons%20%2Ebutton%7Bbackground%2Dcolor%3A%2300B5AD%3Bcolor%3A%23FFF%3Btext%2Dshadow%3Anone%3Bbackground%2Dimage%3Anone%7D%2Eui%2Eteal%2Ebutton%7Bbox%2Dshadow%3A0%200%200%200%20rgba%2834%2C36%2C38%2C%2E15%29%20inset%7D%2Eui%2Eteal%2Ebutton%3Ahover%2C%2Eui%2Eteal%2Ebuttons%20%2Ebutton%3Ahover%7Bbackground%2Dcolor%3A%23009c95%3Bcolor%3A%23FFF%3Btext%2Dshadow%3Anone%7D%2Eui%2Eteal%2Ebutton%3Afocus%2C%2Eui%2Eteal%2Ebuttons%20%2Ebutton%3Afocus%7Bbackground%2Dcolor%3A%23008c86%3Bcolor%3A%23FFF%3Btext%2Dshadow%3Anone%7D%2Eui%2Eteal%2Ebutton%3Aactive%2C%2Eui%2Eteal%2Ebuttons%20%2Ebutton%3Aactive%7Bbackground%2Dcolor%3A%2300827c%3Bcolor%3A%23FFF%3Btext%2Dshadow%3Anone%7D%2Eui%2Eteal%2Eactive%2Ebutton%2C%2Eui%2Eteal%2Ebutton%20%2Eactive%2Ebutton%3Aactive%2C%2Eui%2Eteal%2Ebuttons%20%2Eactive%2Ebutton%2C%2Eui%2Eteal%2Ebuttons%20%2Eactive%2Ebutton%3Aactive%7Bbackground%2Dcolor%3A%23009c95%3Bcolor%3A%23FFF%3Btext%2Dshadow%3Anone%7D%2Eui%2Ebasic%2Eteal%2Ebutton%2C%2Eui%2Ebasic%2Eteal%2Ebuttons%20%2Ebutton%7Bbox%2Dshadow%3A0%200%200%201px%20%2300B5AD%20inset%21important%3Bcolor%3A%2300B5AD%21important%7D%2Eui%2Ebasic%2Eteal%2Ebutton%3Ahover%2C%2Eui%2Ebasic%2Eteal%2Ebuttons%20%2Ebutton%3Ahover%7Bbackground%3A0%200%21important%3Bbox%2Dshadow%3A0%200%200%201px%20%23009c95%20inset%21important%3Bcolor%3A%23009c95%21important%7D%2Eui%2Ebasic%2Eteal%2Ebutton%3Afocus%2C%2Eui%2Ebasic%2Eteal%2Ebuttons%20%2Ebutton%3Afocus%7Bbackground%3A0%200%21important%3Bbox%2Dshadow%3A0%200%200%201px%20%23008c86%20inset%21important%3Bcolor%3A%23009c95%21important%7D%2Eui%2Ebasic%2Eteal%2Eactive%2Ebutton%2C%2Eui%2Ebasic%2Eteal%2Ebuttons%20%2Eactive%2Ebutton%7Bbackground%3A0%200%21important%3Bbox%2Dshadow%3A0%200%200%201px%20%23009c95%20inset%21important%3Bcolor%3A%2300827c%21important%7D%2Eui%2Ebasic%2Eteal%2Ebutton%3Aactive%2C%2Eui%2Ebasic%2Eteal%2Ebuttons%20%2Ebutton%3Aactive%7Bbox%2Dshadow%3A0%200%200%201px%20%2300827c%20inset%21important%3Bcolor%3A%2300827c%21important%7D%2Eui%2Ebuttons%3Anot%28%2Evertical%29%3E%2Ebasic%2Eteal%2Ebutton%3Anot%28%3Afirst%2Dchild%29%7Bmargin%2Dleft%3A%2D1px%7D%2Eui%2Einverted%2Eteal%2Ebutton%2C%2Eui%2Einverted%2Eteal%2Ebuttons%20%2Ebutton%7Bbackground%2Dcolor%3Atransparent%3Bbox%2Dshadow%3A0%200%200%202px%20%236DFFFF%20inset%21important%3Bcolor%3A%236DFFFF%7D%2Eui%2Einverted%2Eteal%2Ebutton%2Eactive%2C%2Eui%2Einverted%2Eteal%2Ebutton%3Aactive%2C%2Eui%2Einverted%2Eteal%2Ebutton%3Afocus%2C%2Eui%2Einverted%2Eteal%2Ebutton%3Ahover%2C%2Eui%2Einverted%2Eteal%2Ebuttons%20%2Ebutton%2Eactive%2C%2Eui%2Einverted%2Eteal%2Ebuttons%20%2Ebutton%3Aactive%2C%2Eui%2Einverted%2Eteal%2Ebuttons%20%2Ebutton%3Afocus%2C%2Eui%2Einverted%2Eteal%2Ebuttons%20%2Ebutton%3Ahover%7Bbox%2Dshadow%3Anone%21important%3Bcolor%3Argba%280%2C0%2C0%2C%2E6%29%7D%2Eui%2Einverted%2Eteal%2Ebutton%3Ahover%2C%2Eui%2Einverted%2Eteal%2Ebuttons%20%2Ebutton%3Ahover%7Bbackground%2Dcolor%3A%2354ffff%7D%2Eui%2Einverted%2Eteal%2Ebutton%3Afocus%2C%2Eui%2Einverted%2Eteal%2Ebuttons%20%2Ebutton%3Afocus%7Bbackground%2Dcolor%3A%234ff%7D%2Eui%2Einverted%2Eteal%2Eactive%2Ebutton%2C%2Eui%2Einverted%2Eteal%2Ebuttons%20%2Eactive%2Ebutton%7Bbackground%2Dcolor%3A%2354ffff%7D%2Eui%2Einverted%2Eteal%2Ebutton%3Aactive%2C%2Eui%2Einverted%2Eteal%2Ebuttons%20%2Ebutton%3Aactive%7Bbackground%2Dcolor%3A%233affff%7D%2Eui%2Einverted%2Eteal%2Ebasic%2Ebutton%2C%2Eui%2Einverted%2Eteal%2Ebasic%2Ebuttons%20%2Ebutton%2C%2Eui%2Einverted%2Eteal%2Ebuttons%20%2Ebasic%2Ebutton%7Bbackground%2Dcolor%3Atransparent%3Bbox%2Dshadow%3A0%200%200%202px%20rgba%28255%2C255%2C255%2C%2E5%29%20inset%21important%3Bcolor%3A%23FFF%21important%7D%2Eui%2Einverted%2Eteal%2Ebasic%2Ebutton%3Ahover%2C%2Eui%2Einverted%2Eteal%2Ebasic%2Ebuttons%20%2Ebutton%3Ahover%2C%2Eui%2Einverted%2Eteal%2Ebuttons%20%2Ebasic%2Ebutton%3Ahover%7Bbox%2Dshadow%3A0%200%200%202px%20%2354ffff%20inset%21important%3Bcolor%3A%236DFFFF%21important%7D%2Eui%2Einverted%2Eteal%2Ebasic%2Ebutton%3Afocus%2C%2Eui%2Einverted%2Eteal%2Ebasic%2Ebuttons%20%2Ebutton%3Afocus%7Bbox%2Dshadow%3A0%200%200%202px%20%234ff%20inset%21important%3Bcolor%3A%236DFFFF%21important%7D%2Eui%2Einverted%2Eteal%2Ebasic%2Eactive%2Ebutton%2C%2Eui%2Einverted%2Eteal%2Ebasic%2Ebuttons%20%2Eactive%2Ebutton%2C%2Eui%2Einverted%2Eteal%2Ebuttons%20%2Ebasic%2Eactive%2Ebutton%7Bbox%2Dshadow%3A0%200%200%202px%20%2354ffff%20inset%21important%3Bcolor%3A%236DFFFF%21important%7D%2Eui%2Einverted%2Eteal%2Ebasic%2Ebutton%3Aactive%2C%2Eui%2Einverted%2Eteal%2Ebasic%2Ebuttons%20%2Ebutton%3Aactive%2C%2Eui%2Einverted%2Eteal%2Ebuttons%20%2Ebasic%2Ebutton%3Aactive%7Bbox%2Dshadow%3A0%200%200%202px%20%233affff%20inset%21important%3Bcolor%3A%236DFFFF%21important%7D%2Eui%2Eolive%2Ebutton%2C%2Eui%2Eolive%2Ebuttons%20%2Ebutton%7Bbackground%2Dcolor%3A%23B5CC18%3Bcolor%3A%23FFF%3Btext%2Dshadow%3Anone%3Bbackground%2Dimage%3Anone%7D%2Eui%2Eolive%2Ebutton%7Bbox%2Dshadow%3A0%200%200%200%20rgba%2834%2C36%2C38%2C%2E15%29%20inset%7D%2Eui%2Eolive%2Ebutton%3Ahover%2C%2Eui%2Eolive%2Ebuttons%20%2Ebutton%3Ahover%7Bbackground%2Dcolor%3A%23a7bd0d%3Bcolor%3A%23FFF%3Btext%2Dshadow%3Anone%7D%2Eui%2Eolive%2Ebutton%3Afocus%2C%2Eui%2Eolive%2Ebuttons%20%2Ebutton%3Afocus%7Bbackground%2Dcolor%3A%23a0b605%3Bcolor%3A%23FFF%3Btext%2Dshadow%3Anone%7D%2Eui%2Eolive%2Ebutton%3Aactive%2C%2Eui%2Eolive%2Ebuttons%20%2Ebutton%3Aactive%7Bbackground%2Dcolor%3A%238d9e13%3Bcolor%3A%23FFF%3Btext%2Dshadow%3Anone%7D%2Eui%2Eolive%2Eactive%2Ebutton%2C%2Eui%2Eolive%2Ebutton%20%2Eactive%2Ebutton%3Aactive%2C%2Eui%2Eolive%2Ebuttons%20%2Eactive%2Ebutton%2C%2Eui%2Eolive%2Ebuttons%20%2Eactive%2Ebutton%3Aactive%7Bbackground%2Dcolor%3A%23aac109%3Bcolor%3A%23FFF%3Btext%2Dshadow%3Anone%7D%2Eui%2Ebasic%2Eolive%2Ebutton%2C%2Eui%2Ebasic%2Eolive%2Ebuttons%20%2Ebutton%7Bbox%2Dshadow%3A0%200%200%201px%20%23B5CC18%20inset%21important%3Bcolor%3A%23B5CC18%21important%7D%2Eui%2Ebasic%2Eolive%2Ebutton%3Ahover%2C%2Eui%2Ebasic%2Eolive%2Ebuttons%20%2Ebutton%3Ahover%7Bbackground%3A0%200%21important%3Bbox%2Dshadow%3A0%200%200%201px%20%23a7bd0d%20inset%21important%3Bcolor%3A%23a7bd0d%21important%7D%2Eui%2Ebasic%2Eolive%2Ebutton%3Afocus%2C%2Eui%2Ebasic%2Eolive%2Ebuttons%20%2Ebutton%3Afocus%7Bbackground%3A0%200%21important%3Bbox%2Dshadow%3A0%200%200%201px%20%23a0b605%20inset%21important%3Bcolor%3A%23a7bd0d%21important%7D%2Eui%2Ebasic%2Eolive%2Eactive%2Ebutton%2C%2Eui%2Ebasic%2Eolive%2Ebuttons%20%2Eactive%2Ebutton%7Bbackground%3A0%200%21important%3Bbox%2Dshadow%3A0%200%200%201px%20%23aac109%20inset%21important%3Bcolor%3A%238d9e13%21important%7D%2Eui%2Ebasic%2Eolive%2Ebutton%3Aactive%2C%2Eui%2Ebasic%2Eolive%2Ebuttons%20%2Ebutton%3Aactive%7Bbox%2Dshadow%3A0%200%200%201px%20%238d9e13%20inset%21important%3Bcolor%3A%238d9e13%21important%7D%2Eui%2Ebuttons%3Anot%28%2Evertical%29%3E%2Ebasic%2Eolive%2Ebutton%3Anot%28%3Afirst%2Dchild%29%7Bmargin%2Dleft%3A%2D1px%7D%2Eui%2Einverted%2Eolive%2Ebutton%2C%2Eui%2Einverted%2Eolive%2Ebuttons%20%2Ebutton%7Bbackground%2Dcolor%3Atransparent%3Bbox%2Dshadow%3A0%200%200%202px%20%23D9E778%20inset%21important%3Bcolor%3A%23D9E778%7D%2Eui%2Einverted%2Eolive%2Ebutton%2Eactive%2C%2Eui%2Einverted%2Eolive%2Ebutton%3Aactive%2C%2Eui%2Einverted%2Eolive%2Ebutton%3Afocus%2C%2Eui%2Einverted%2Eolive%2Ebutton%3Ahover%2C%2Eui%2Einverted%2Eolive%2Ebuttons%20%2Ebutton%2Eactive%2C%2Eui%2Einverted%2Eolive%2Ebuttons%20%2Ebutton%3Aactive%2C%2Eui%2Einverted%2Eolive%2Ebuttons%20%2Ebutton%3Afocus%2C%2Eui%2Einverted%2Eolive%2Ebuttons%20%2Ebutton%3Ahover%7Bbox%2Dshadow%3Anone%21important%3Bcolor%3Argba%280%2C0%2C0%2C%2E6%29%7D%2Eui%2Einverted%2Eolive%2Ebutton%3Ahover%2C%2Eui%2Einverted%2Eolive%2Ebuttons%20%2Ebutton%3Ahover%7Bbackground%2Dcolor%3A%23d8ea5c%7D%2Eui%2Einverted%2Eolive%2Ebutton%3Afocus%2C%2Eui%2Einverted%2Eolive%2Ebuttons%20%2Ebutton%3Afocus%7Bbackground%2Dcolor%3A%23daef47%7D%2Eui%2Einverted%2Eolive%2Eactive%2Ebutton%2C%2Eui%2Einverted%2Eolive%2Ebuttons%20%2Eactive%2Ebutton%7Bbackground%2Dcolor%3A%23daed59%7D%2Eui%2Einverted%2Eolive%2Ebutton%3Aactive%2C%2Eui%2Einverted%2Eolive%2Ebuttons%20%2Ebutton%3Aactive%7Bbackground%2Dcolor%3A%23cddf4d%7D%2Eui%2Einverted%2Eolive%2Ebasic%2Ebutton%2C%2Eui%2Einverted%2Eolive%2Ebasic%2Ebuttons%20%2Ebutton%2C%2Eui%2Einverted%2Eolive%2Ebuttons%20%2Ebasic%2Ebutton%7Bbackground%2Dcolor%3Atransparent%3Bbox%2Dshadow%3A0%200%200%202px%20rgba%28255%2C255%2C255%2C%2E5%29%20inset%21important%3Bcolor%3A%23FFF%21important%7D%2Eui%2Einverted%2Eolive%2Ebasic%2Ebutton%3Ahover%2C%2Eui%2Einverted%2Eolive%2Ebasic%2Ebuttons%20%2Ebutton%3Ahover%2C%2Eui%2Einverted%2Eolive%2Ebuttons%20%2Ebasic%2Ebutton%3Ahover%7Bbox%2Dshadow%3A0%200%200%202px%20%23d8ea5c%20inset%21important%3Bcolor%3A%23D9E778%21important%7D%2Eui%2Einverted%2Eolive%2Ebasic%2Ebutton%3Afocus%2C%2Eui%2Einverted%2Eolive%2Ebasic%2Ebuttons%20%2Ebutton%3Afocus%7Bbox%2Dshadow%3A0%200%200%202px%20%23daef47%20inset%21important%3Bcolor%3A%23D9E778%21important%7D%2Eui%2Einverted%2Eolive%2Ebasic%2Eactive%2Ebutton%2C%2Eui%2Einverted%2Eolive%2Ebasic%2Ebuttons%20%2Eactive%2Ebutton%2C%2Eui%2Einverted%2Eolive%2Ebuttons%20%2Ebasic%2Eactive%2Ebutton%7Bbox%2Dshadow%3A0%200%200%202px%20%23daed59%20inset%21important%3Bcolor%3A%23D9E778%21important%7D%2Eui%2Einverted%2Eolive%2Ebasic%2Ebutton%3Aactive%2C%2Eui%2Einverted%2Eolive%2Ebasic%2Ebuttons%20%2Ebutton%3Aactive%2C%2Eui%2Einverted%2Eolive%2Ebuttons%20%2Ebasic%2Ebutton%3Aactive%7Bbox%2Dshadow%3A0%200%200%202px%20%23cddf4d%20inset%21important%3Bcolor%3A%23D9E778%21important%7D%2Eui%2Eyellow%2Ebutton%2C%2Eui%2Eyellow%2Ebuttons%20%2Ebutton%7Bbackground%2Dcolor%3A%23FBBD08%3Bcolor%3A%23FFF%3Btext%2Dshadow%3Anone%3Bbackground%2Dimage%3Anone%7D%2Eui%2Eyellow%2Ebutton%7Bbox%2Dshadow%3A0%200%200%200%20rgba%2834%2C36%2C38%2C%2E15%29%20inset%7D%2Eui%2Eyellow%2Ebutton%3Ahover%2C%2Eui%2Eyellow%2Ebuttons%20%2Ebutton%3Ahover%7Bbackground%2Dcolor%3A%23eaae00%3Bcolor%3A%23FFF%3Btext%2Dshadow%3Anone%7D%2Eui%2Eyellow%2Ebutton%3Afocus%2C%2Eui%2Eyellow%2Ebuttons%20%2Ebutton%3Afocus%7Bbackground%2Dcolor%3A%23daa300%3Bcolor%3A%23FFF%3Btext%2Dshadow%3Anone%7D%2Eui%2Eyellow%2Ebutton%3Aactive%2C%2Eui%2Eyellow%2Ebuttons%20%2Ebutton%3Aactive%7Bbackground%2Dcolor%3A%23cd9903%3Bcolor%3A%23FFF%3Btext%2Dshadow%3Anone%7D%2Eui%2Eyellow%2Eactive%2Ebutton%2C%2Eui%2Eyellow%2Ebutton%20%2Eactive%2Ebutton%3Aactive%2C%2Eui%2Eyellow%2Ebuttons%20%2Eactive%2Ebutton%2C%2Eui%2Eyellow%2Ebuttons%20%2Eactive%2Ebutton%3Aactive%7Bbackground%2Dcolor%3A%23eaae00%3Bcolor%3A%23FFF%3Btext%2Dshadow%3Anone%7D%2Eui%2Ebasic%2Eyellow%2Ebutton%2C%2Eui%2Ebasic%2Eyellow%2Ebuttons%20%2Ebutton%7Bbox%2Dshadow%3A0%200%200%201px%20%23FBBD08%20inset%21important%3Bcolor%3A%23FBBD08%21important%7D%2Eui%2Ebasic%2Eyellow%2Ebutton%3Ahover%2C%2Eui%2Ebasic%2Eyellow%2Ebuttons%20%2Ebutton%3Ahover%7Bbackground%3A0%200%21important%3Bbox%2Dshadow%3A0%200%200%201px%20%23eaae00%20inset%21important%3Bcolor%3A%23eaae00%21important%7D%2Eui%2Ebasic%2Eyellow%2Ebutton%3Afocus%2C%2Eui%2Ebasic%2Eyellow%2Ebuttons%20%2Ebutton%3Afocus%7Bbackground%3A0%200%21important%3Bbox%2Dshadow%3A0%200%200%201px%20%23daa300%20inset%21important%3Bcolor%3A%23eaae00%21important%7D%2Eui%2Ebasic%2Eyellow%2Eactive%2Ebutton%2C%2Eui%2Ebasic%2Eyellow%2Ebuttons%20%2Eactive%2Ebutton%7Bbackground%3A0%200%21important%3Bbox%2Dshadow%3A0%200%200%201px%20%23eaae00%20inset%21important%3Bcolor%3A%23cd9903%21important%7D%2Eui%2Ebasic%2Eyellow%2Ebutton%3Aactive%2C%2Eui%2Ebasic%2Eyellow%2Ebuttons%20%2Ebutton%3Aactive%7Bbox%2Dshadow%3A0%200%200%201px%20%23cd9903%20inset%21important%3Bcolor%3A%23cd9903%21important%7D%2Eui%2Ebuttons%3Anot%28%2Evertical%29%3E%2Ebasic%2Eyellow%2Ebutton%3Anot%28%3Afirst%2Dchild%29%7Bmargin%2Dleft%3A%2D1px%7D%2Eui%2Einverted%2Eyellow%2Ebutton%2C%2Eui%2Einverted%2Eyellow%2Ebuttons%20%2Ebutton%7Bbackground%2Dcolor%3Atransparent%3Bbox%2Dshadow%3A0%200%200%202px%20%23FFE21F%20inset%21important%3Bcolor%3A%23FFE21F%7D%2Eui%2Einverted%2Eyellow%2Ebutton%2Eactive%2C%2Eui%2Einverted%2Eyellow%2Ebutton%3Aactive%2C%2Eui%2Einverted%2Eyellow%2Ebutton%3Afocus%2C%2Eui%2Einverted%2Eyellow%2Ebutton%3Ahover%2C%2Eui%2Einverted%2Eyellow%2Ebuttons%20%2Ebutton%2Eactive%2C%2Eui%2Einverted%2Eyellow%2Ebuttons%20%2Ebutton%3Aactive%2C%2Eui%2Einverted%2Eyellow%2Ebuttons%20%2Ebutton%3Afocus%2C%2Eui%2Einverted%2Eyellow%2Ebuttons%20%2Ebutton%3Ahover%7Bbox%2Dshadow%3Anone%21important%3Bcolor%3Argba%280%2C0%2C0%2C%2E6%29%7D%2Eui%2Einverted%2Eyellow%2Ebutton%3Ahover%2C%2Eui%2Einverted%2Eyellow%2Ebuttons%20%2Ebutton%3Ahover%7Bbackground%2Dcolor%3A%23ffdf05%7D%2Eui%2Einverted%2Eyellow%2Ebutton%3Afocus%2C%2Eui%2Einverted%2Eyellow%2Ebuttons%20%2Ebutton%3Afocus%7Bbackground%2Dcolor%3A%23f5d500%7D%2Eui%2Einverted%2Eyellow%2Eactive%2Ebutton%2C%2Eui%2Einverted%2Eyellow%2Ebuttons%20%2Eactive%2Ebutton%7Bbackground%2Dcolor%3A%23ffdf05%7D%2Eui%2Einverted%2Eyellow%2Ebutton%3Aactive%2C%2Eui%2Einverted%2Eyellow%2Ebuttons%20%2Ebutton%3Aactive%7Bbackground%2Dcolor%3A%23ebcd00%7D%2Eui%2Einverted%2Eyellow%2Ebasic%2Ebutton%2C%2Eui%2Einverted%2Eyellow%2Ebasic%2Ebuttons%20%2Ebutton%2C%2Eui%2Einverted%2Eyellow%2Ebuttons%20%2Ebasic%2Ebutton%7Bbackground%2Dcolor%3Atransparent%3Bbox%2Dshadow%3A0%200%200%202px%20rgba%28255%2C255%2C255%2C%2E5%29%20inset%21important%3Bcolor%3A%23FFF%21important%7D%2Eui%2Einverted%2Eyellow%2Ebasic%2Ebutton%3Ahover%2C%2Eui%2Einverted%2Eyellow%2Ebasic%2Ebuttons%20%2Ebutton%3Ahover%2C%2Eui%2Einverted%2Eyellow%2Ebuttons%20%2Ebasic%2Ebutton%3Ahover%7Bbox%2Dshadow%3A0%200%200%202px%20%23ffdf05%20inset%21important%3Bcolor%3A%23FFE21F%21important%7D%2Eui%2Einverted%2Eyellow%2Ebasic%2Ebutton%3Afocus%2C%2Eui%2Einverted%2Eyellow%2Ebasic%2Ebuttons%20%2Ebutton%3Afocus%7Bbox%2Dshadow%3A0%200%200%202px%20%23f5d500%20inset%21important%3Bcolor%3A%23FFE21F%21important%7D%2Eui%2Einverted%2Eyellow%2Ebasic%2Eactive%2Ebutton%2C%2Eui%2Einverted%2Eyellow%2Ebasic%2Ebuttons%20%2Eactive%2Ebutton%2C%2Eui%2Einverted%2Eyellow%2Ebuttons%20%2Ebasic%2Eactive%2Ebutton%7Bbox%2Dshadow%3A0%200%200%202px%20%23ffdf05%20inset%21important%3Bcolor%3A%23FFE21F%21important%7D%2Eui%2Einverted%2Eyellow%2Ebasic%2Ebutton%3Aactive%2C%2Eui%2Einverted%2Eyellow%2Ebasic%2Ebuttons%20%2Ebutton%3Aactive%2C%2Eui%2Einverted%2Eyellow%2Ebuttons%20%2Ebasic%2Ebutton%3Aactive%7Bbox%2Dshadow%3A0%200%200%202px%20%23ebcd00%20inset%21important%3Bcolor%3A%23FFE21F%21important%7D%2Eui%2Eprimary%2Ebutton%2C%2Eui%2Eprimary%2Ebuttons%20%2Ebutton%7Bbackground%2Dcolor%3A%232185D0%3Bcolor%3A%23FFF%3Btext%2Dshadow%3Anone%3Bbackground%2Dimage%3Anone%7D%2Eui%2Eprimary%2Ebutton%7Bbox%2Dshadow%3A0%200%200%200%20rgba%2834%2C36%2C38%2C%2E15%29%20inset%7D%2Eui%2Eprimary%2Ebutton%3Ahover%2C%2Eui%2Eprimary%2Ebuttons%20%2Ebutton%3Ahover%7Bbackground%2Dcolor%3A%231678c2%3Bcolor%3A%23FFF%3Btext%2Dshadow%3Anone%7D%2Eui%2Eprimary%2Ebutton%3Afocus%2C%2Eui%2Eprimary%2Ebuttons%20%2Ebutton%3Afocus%7Bbackground%2Dcolor%3A%230d71bb%3Bcolor%3A%23FFF%3Btext%2Dshadow%3Anone%7D%2Eui%2Eprimary%2Ebutton%3Aactive%2C%2Eui%2Eprimary%2Ebuttons%20%2Ebutton%3Aactive%7Bbackground%2Dcolor%3A%231a69a4%3Bcolor%3A%23FFF%3Btext%2Dshadow%3Anone%7D%2Eui%2Eprimary%2Eactive%2Ebutton%2C%2Eui%2Eprimary%2Ebutton%20%2Eactive%2Ebutton%3Aactive%2C%2Eui%2Eprimary%2Ebuttons%20%2Eactive%2Ebutton%2C%2Eui%2Eprimary%2Ebuttons%20%2Eactive%2Ebutton%3Aactive%7Bbackground%2Dcolor%3A%231279c6%3Bcolor%3A%23FFF%3Btext%2Dshadow%3Anone%7D%2Eui%2Ebasic%2Eprimary%2Ebutton%2C%2Eui%2Ebasic%2Eprimary%2Ebuttons%20%2Ebutton%7Bbox%2Dshadow%3A0%200%200%201px%20%232185D0%20inset%21important%3Bcolor%3A%232185D0%21important%7D%2Eui%2Ebasic%2Eprimary%2Ebutton%3Ahover%2C%2Eui%2Ebasic%2Eprimary%2Ebuttons%20%2Ebutton%3Ahover%7Bbackground%3A0%200%21important%3Bbox%2Dshadow%3A0%200%200%201px%20%231678c2%20inset%21important%3Bcolor%3A%231678c2%21important%7D%2Eui%2Ebasic%2Eprimary%2Ebutton%3Afocus%2C%2Eui%2Ebasic%2Eprimary%2Ebuttons%20%2Ebutton%3Afocus%7Bbackground%3A0%200%21important%3Bbox%2Dshadow%3A0%200%200%201px%20%230d71bb%20inset%21important%3Bcolor%3A%231678c2%21important%7D%2Eui%2Ebasic%2Eprimary%2Eactive%2Ebutton%2C%2Eui%2Ebasic%2Eprimary%2Ebuttons%20%2Eactive%2Ebutton%7Bbackground%3A0%200%21important%3Bbox%2Dshadow%3A0%200%200%201px%20%231279c6%20inset%21important%3Bcolor%3A%231a69a4%21important%7D%2Eui%2Ebasic%2Eprimary%2Ebutton%3Aactive%2C%2Eui%2Ebasic%2Eprimary%2Ebuttons%20%2Ebutton%3Aactive%7Bbox%2Dshadow%3A0%200%200%201px%20%231a69a4%20inset%21important%3Bcolor%3A%231a69a4%21important%7D%2Eui%2Esecondary%2Ebutton%2C%2Eui%2Esecondary%2Ebuttons%20%2Ebutton%7Bbackground%2Dcolor%3A%231B1C1D%3Bcolor%3A%23FFF%3Btext%2Dshadow%3Anone%3Bbackground%2Dimage%3Anone%7D%2Eui%2Esecondary%2Ebutton%7Bbox%2Dshadow%3A0%200%200%200%20rgba%2834%2C36%2C38%2C%2E15%29%20inset%7D%2Eui%2Esecondary%2Ebutton%3Ahover%2C%2Eui%2Esecondary%2Ebuttons%20%2Ebutton%3Ahover%7Bbackground%2Dcolor%3A%2327292a%3Bcolor%3A%23FFF%3Btext%2Dshadow%3Anone%7D%2Eui%2Esecondary%2Ebutton%3Afocus%2C%2Eui%2Esecondary%2Ebuttons%20%2Ebutton%3Afocus%7Bbackground%2Dcolor%3A%232e3032%3Bcolor%3A%23FFF%3Btext%2Dshadow%3Anone%7D%2Eui%2Esecondary%2Ebutton%3Aactive%2C%2Eui%2Esecondary%2Ebuttons%20%2Ebutton%3Aactive%7Bbackground%2Dcolor%3A%23343637%3Bcolor%3A%23FFF%3Btext%2Dshadow%3Anone%7D%2Eui%2Esecondary%2Eactive%2Ebutton%2C%2Eui%2Esecondary%2Ebutton%20%2Eactive%2Ebutton%3Aactive%2C%2Eui%2Esecondary%2Ebuttons%20%2Eactive%2Ebutton%2C%2Eui%2Esecondary%2Ebuttons%20%2Eactive%2Ebutton%3Aactive%7Bbackground%2Dcolor%3A%2327292a%3Bcolor%3A%23FFF%3Btext%2Dshadow%3Anone%7D%2Eui%2Ebasic%2Esecondary%2Ebutton%2C%2Eui%2Ebasic%2Esecondary%2Ebuttons%20%2Ebutton%7Bbox%2Dshadow%3A0%200%200%201px%20%231B1C1D%20inset%21important%3Bcolor%3A%231B1C1D%21important%7D%2Eui%2Ebasic%2Esecondary%2Ebutton%3Ahover%2C%2Eui%2Ebasic%2Esecondary%2Ebuttons%20%2Ebutton%3Ahover%7Bbackground%3A0%200%21important%3Bbox%2Dshadow%3A0%200%200%201px%20%2327292a%20inset%21important%3Bcolor%3A%2327292a%21important%7D%2Eui%2Ebasic%2Esecondary%2Ebutton%3Afocus%2C%2Eui%2Ebasic%2Esecondary%2Ebuttons%20%2Ebutton%3Afocus%7Bbackground%3A0%200%21important%3Bbox%2Dshadow%3A0%200%200%201px%20%232e3032%20inset%21important%3Bcolor%3A%2327292a%21important%7D%2Eui%2Ebasic%2Esecondary%2Eactive%2Ebutton%2C%2Eui%2Ebasic%2Esecondary%2Ebuttons%20%2Eactive%2Ebutton%7Bbackground%3A0%200%21important%3Bbox%2Dshadow%3A0%200%200%201px%20%2327292a%20inset%21important%3Bcolor%3A%23343637%21important%7D%2Eui%2Ebasic%2Esecondary%2Ebutton%3Aactive%2C%2Eui%2Ebasic%2Esecondary%2Ebuttons%20%2Ebutton%3Aactive%7Bbox%2Dshadow%3A0%200%200%201px%20%23343637%20inset%21important%3Bcolor%3A%23343637%21important%7D%2Eui%2Epositive%2Ebutton%2C%2Eui%2Epositive%2Ebuttons%20%2Ebutton%7Bbackground%2Dcolor%3A%2321BA45%3Bcolor%3A%23FFF%3Btext%2Dshadow%3Anone%3Bbackground%2Dimage%3Anone%7D%2Eui%2Epositive%2Ebutton%7Bbox%2Dshadow%3A0%200%200%200%20rgba%2834%2C36%2C38%2C%2E15%29%20inset%7D%2Eui%2Epositive%2Ebutton%3Ahover%2C%2Eui%2Epositive%2Ebuttons%20%2Ebutton%3Ahover%7Bbackground%2Dcolor%3A%2316ab39%3Bcolor%3A%23FFF%3Btext%2Dshadow%3Anone%7D%2Eui%2Epositive%2Ebutton%3Afocus%2C%2Eui%2Epositive%2Ebuttons%20%2Ebutton%3Afocus%7Bbackground%2Dcolor%3A%230ea432%3Bcolor%3A%23FFF%3Btext%2Dshadow%3Anone%7D%2Eui%2Epositive%2Ebutton%3Aactive%2C%2Eui%2Epositive%2Ebuttons%20%2Ebutton%3Aactive%7Bbackground%2Dcolor%3A%23198f35%3Bcolor%3A%23FFF%3Btext%2Dshadow%3Anone%7D%2Eui%2Epositive%2Eactive%2Ebutton%2C%2Eui%2Epositive%2Ebutton%20%2Eactive%2Ebutton%3Aactive%2C%2Eui%2Epositive%2Ebuttons%20%2Eactive%2Ebutton%2C%2Eui%2Epositive%2Ebuttons%20%2Eactive%2Ebutton%3Aactive%7Bbackground%2Dcolor%3A%2313ae38%3Bcolor%3A%23FFF%3Btext%2Dshadow%3Anone%7D%2Eui%2Ebasic%2Epositive%2Ebutton%2C%2Eui%2Ebasic%2Epositive%2Ebuttons%20%2Ebutton%7Bbox%2Dshadow%3A0%200%200%201px%20%2321BA45%20inset%21important%3Bcolor%3A%2321BA45%21important%7D%2Eui%2Ebasic%2Epositive%2Ebutton%3Ahover%2C%2Eui%2Ebasic%2Epositive%2Ebuttons%20%2Ebutton%3Ahover%7Bbackground%3A0%200%21important%3Bbox%2Dshadow%3A0%200%200%201px%20%2316ab39%20inset%21important%3Bcolor%3A%2316ab39%21important%7D%2Eui%2Ebasic%2Epositive%2Ebutton%3Afocus%2C%2Eui%2Ebasic%2Epositive%2Ebuttons%20%2Ebutton%3Afocus%7Bbackground%3A0%200%21important%3Bbox%2Dshadow%3A0%200%200%201px%20%230ea432%20inset%21important%3Bcolor%3A%2316ab39%21important%7D%2Eui%2Ebasic%2Epositive%2Eactive%2Ebutton%2C%2Eui%2Ebasic%2Epositive%2Ebuttons%20%2Eactive%2Ebutton%7Bbackground%3A0%200%21important%3Bbox%2Dshadow%3A0%200%200%201px%20%2313ae38%20inset%21important%3Bcolor%3A%23198f35%21important%7D%2Eui%2Ebasic%2Epositive%2Ebutton%3Aactive%2C%2Eui%2Ebasic%2Epositive%2Ebuttons%20%2Ebutton%3Aactive%7Bbox%2Dshadow%3A0%200%200%201px%20%23198f35%20inset%21important%3Bcolor%3A%23198f35%21important%7D%2Eui%2Enegative%2Ebutton%2C%2Eui%2Enegative%2Ebuttons%20%2Ebutton%7Bbackground%2Dcolor%3A%23DB2828%3Bcolor%3A%23FFF%3Btext%2Dshadow%3Anone%3Bbackground%2Dimage%3Anone%7D%2Eui%2Enegative%2Ebutton%7Bbox%2Dshadow%3A0%200%200%200%20rgba%2834%2C36%2C38%2C%2E15%29%20inset%7D%2Eui%2Enegative%2Ebutton%3Ahover%2C%2Eui%2Enegative%2Ebuttons%20%2Ebutton%3Ahover%7Bbackground%2Dcolor%3A%23d01919%3Bcolor%3A%23FFF%3Btext%2Dshadow%3Anone%7D%2Eui%2Enegative%2Ebutton%3Afocus%2C%2Eui%2Enegative%2Ebuttons%20%2Ebutton%3Afocus%7Bbackground%2Dcolor%3A%23ca1010%3Bcolor%3A%23FFF%3Btext%2Dshadow%3Anone%7D%2Eui%2Enegative%2Ebutton%3Aactive%2C%2Eui%2Enegative%2Ebuttons%20%2Ebutton%3Aactive%7Bbackground%2Dcolor%3A%23b21e1e%3Bcolor%3A%23FFF%3Btext%2Dshadow%3Anone%7D%2Eui%2Enegative%2Eactive%2Ebutton%2C%2Eui%2Enegative%2Ebutton%20%2Eactive%2Ebutton%3Aactive%2C%2Eui%2Enegative%2Ebuttons%20%2Eactive%2Ebutton%2C%2Eui%2Enegative%2Ebuttons%20%2Eactive%2Ebutton%3Aactive%7Bbackground%2Dcolor%3A%23d41515%3Bcolor%3A%23FFF%3Btext%2Dshadow%3Anone%7D%2Eui%2Ebasic%2Enegative%2Ebutton%2C%2Eui%2Ebasic%2Enegative%2Ebuttons%20%2Ebutton%7Bbox%2Dshadow%3A0%200%200%201px%20%23DB2828%20inset%21important%3Bcolor%3A%23DB2828%21important%7D%2Eui%2Ebasic%2Enegative%2Ebutton%3Ahover%2C%2Eui%2Ebasic%2Enegative%2Ebuttons%20%2Ebutton%3Ahover%7Bbackground%3A0%200%21important%3Bbox%2Dshadow%3A0%200%200%201px%20%23d01919%20inset%21important%3Bcolor%3A%23d01919%21important%7D%2Eui%2Ebasic%2Enegative%2Ebutton%3Afocus%2C%2Eui%2Ebasic%2Enegative%2Ebuttons%20%2Ebutton%3Afocus%7Bbackground%3A0%200%21important%3Bbox%2Dshadow%3A0%200%200%201px%20%23ca1010%20inset%21important%3Bcolor%3A%23d01919%21important%7D%2Eui%2Ebasic%2Enegative%2Eactive%2Ebutton%2C%2Eui%2Ebasic%2Enegative%2Ebuttons%20%2Eactive%2Ebutton%7Bbackground%3A0%200%21important%3Bbox%2Dshadow%3A0%200%200%201px%20%23d41515%20inset%21important%3Bcolor%3A%23b21e1e%21important%7D%2Eui%2Ebasic%2Enegative%2Ebutton%3Aactive%2C%2Eui%2Ebasic%2Enegative%2Ebuttons%20%2Ebutton%3Aactive%7Bbox%2Dshadow%3A0%200%200%201px%20%23b21e1e%20inset%21important%3Bcolor%3A%23b21e1e%21important%7D%2Eui%2Ebuttons%3Anot%28%2Evertical%29%3E%2Ebasic%2Eprimary%2Ebutton%3Anot%28%3Afirst%2Dchild%29%7Bmargin%2Dleft%3A%2D1px%7D%2Eui%2Ebuttons%7Bdisplay%3A%2Dwebkit%2Dinline%2Dbox%3Bdisplay%3A%2Dwebkit%2Dinline%2Dflex%3Bdisplay%3A%2Dms%2Dinline%2Dflexbox%3Bdisplay%3Ainline%2Dflex%3B%2Dwebkit%2Dbox%2Dorient%3Ahorizontal%3B%2Dwebkit%2Dbox%2Ddirection%3Anormal%3B%2Dwebkit%2Dflex%2Ddirection%3Arow%3B%2Dms%2Dflex%2Ddirection%3Arow%3Bflex%2Ddirection%3Arow%3Bfont%2Dsize%3A0%3Bvertical%2Dalign%3Abaseline%3Bmargin%3A0%20%2E25em%200%200%7D%2Eui%2Ebuttons%3Anot%28%2Ebasic%29%3Anot%28%2Einverted%29%7Bbox%2Dshadow%3Anone%7D%2Eui%2Ebuttons%3Aafter%7Bcontent%3A%22%2E%22%3Bdisplay%3Ablock%3Bheight%3A0%3Bclear%3Aboth%3Bvisibility%3Ahidden%7D%2Eui%2Ebuttons%20%2Ebutton%7B%2Dwebkit%2Dbox%2Dflex%3A1%3B%2Dwebkit%2Dflex%3A1%200%20auto%3B%2Dms%2Dflex%3A1%200%20auto%3Bflex%3A1%200%20auto%3Bborder%2Dradius%3A0%3Bmargin%3A0%7D%2Eui%2Ebuttons%3Anot%28%2Ebasic%29%3Anot%28%2Einverted%29%3E%2Ebutton%2C%2Eui%2Ebuttons%3E%2Eui%2Ebutton%3Anot%28%2Ebasic%29%3Anot%28%2Einverted%29%7Bbox%2Dshadow%3A0%200%200%201px%20transparent%20inset%2C0%200%200%200%20rgba%2834%2C36%2C38%2C%2E15%29%20inset%7D%2Eui%2Ebuttons%20%2Ebutton%3Afirst%2Dchild%7Bborder%2Dleft%3Anone%3Bmargin%2Dleft%3A0%3Bborder%2Dtop%2Dleft%2Dradius%3A%2E28571429rem%3Bborder%2Dbottom%2Dleft%2Dradius%3A%2E28571429rem%7D%2Eui%2Ebuttons%20%2Ebutton%3Alast%2Dchild%7Bborder%2Dtop%2Dright%2Dradius%3A%2E28571429rem%3Bborder%2Dbottom%2Dright%2Dradius%3A%2E28571429rem%7D%2Eui%2Evertical%2Ebuttons%7Bdisplay%3A%2Dwebkit%2Dinline%2Dbox%3Bdisplay%3A%2Dwebkit%2Dinline%2Dflex%3Bdisplay%3A%2Dms%2Dinline%2Dflexbox%3Bdisplay%3Ainline%2Dflex%3B%2Dwebkit%2Dbox%2Dorient%3Avertical%3B%2Dwebkit%2Dbox%2Ddirection%3Anormal%3B%2Dwebkit%2Dflex%2Ddirection%3Acolumn%3B%2Dms%2Dflex%2Ddirection%3Acolumn%3Bflex%2Ddirection%3Acolumn%7D%2Eui%2Evertical%2Ebuttons%20%2Ebutton%7Bdisplay%3Ablock%3Bfloat%3Anone%3Bwidth%3A100%25%3Bmargin%3A0%3Bbox%2Dshadow%3Anone%3Bborder%2Dradius%3A0%7D%2Eui%2Evertical%2Ebuttons%20%2Ebutton%3Afirst%2Dchild%7Bborder%2Dtop%2Dleft%2Dradius%3A%2E28571429rem%3Bborder%2Dtop%2Dright%2Dradius%3A%2E28571429rem%7D%2Eui%2Evertical%2Ebuttons%20%2Ebutton%3Alast%2Dchild%7Bmargin%2Dbottom%3A0%3Bborder%2Dbottom%2Dleft%2Dradius%3A%2E28571429rem%3Bborder%2Dbottom%2Dright%2Dradius%3A%2E28571429rem%7D%2Eui%2Evertical%2Ebuttons%20%2Ebutton%3Aonly%2Dchild%7Bborder%2Dradius%3A%2E28571429rem%7D%2Eui%2Econtainer%7Bdisplay%3Ablock%3Bmax%2Dwidth%3A100%25%21important%7D%40media%20only%20screen%20and%20%28max%2Dwidth%3A767px%29%7B%2Eui%2Econtainer%7Bwidth%3Aauto%21important%3Bmargin%2Dleft%3A1em%21important%3Bmargin%2Dright%3A1em%21important%7D%2Eui%2Egrid%2Econtainer%2C%2Eui%2Erelaxed%2Egrid%2Econtainer%2C%2Eui%2Every%2Erelaxed%2Egrid%2Econtainer%7Bwidth%3Aauto%21important%7D%7D%40media%20only%20screen%20and%20%28min%2Dwidth%3A768px%29%20and%20%28max%2Dwidth%3A991px%29%7B%2Eui%2Econtainer%7Bwidth%3A723px%3Bmargin%2Dleft%3Aauto%21important%3Bmargin%2Dright%3Aauto%21important%7D%2Eui%2Egrid%2Econtainer%7Bwidth%3Acalc%28723px%20%2B%202rem%29%21important%7D%2Eui%2Erelaxed%2Egrid%2Econtainer%7Bwidth%3Acalc%28723px%20%2B%203rem%29%21important%7D%2Eui%2Every%2Erelaxed%2Egrid%2Econtainer%7Bwidth%3Acalc%28723px%20%2B%205rem%29%21important%7D%7D%40media%20only%20screen%20and%20%28min%2Dwidth%3A992px%29%20and%20%28max%2Dwidth%3A1199px%29%7B%2Eui%2Econtainer%7Bwidth%3A933px%3Bmargin%2Dleft%3Aauto%21important%3Bmargin%2Dright%3Aauto%21important%7D%2Eui%2Egrid%2Econtainer%7Bwidth%3Acalc%28933px%20%2B%202rem%29%21important%7D%2Eui%2Erelaxed%2Egrid%2Econtainer%7Bwidth%3Acalc%28933px%20%2B%203rem%29%21important%7D%2Eui%2Every%2Erelaxed%2Egrid%2Econtainer%7Bwidth%3Acalc%28933px%20%2B%205rem%29%21important%7D%7D%40media%20only%20screen%20and%20%28min%2Dwidth%3A1200px%29%7B%2Eui%2Econtainer%7Bwidth%3A1127px%3Bmargin%2Dleft%3Aauto%21important%3Bmargin%2Dright%3Aauto%21important%7D%2Eui%2Egrid%2Econtainer%7Bwidth%3Acalc%281127px%20%2B%202rem%29%21important%7D%2Eui%2Erelaxed%2Egrid%2Econtainer%7Bwidth%3Acalc%281127px%20%2B%203rem%29%21important%7D%2Eui%2Every%2Erelaxed%2Egrid%2Econtainer%7Bwidth%3Acalc%281127px%20%2B%205rem%29%21important%7D%7D%2Eui%2Etext%2Econtainer%7Bfont%2Dfamily%3ALato%2C%27Helvetica%20Neue%27%2CArial%2CHelvetica%2Csans%2Dserif%3Bmax%2Dwidth%3A700px%21important%3Bline%2Dheight%3A1%2E5%3Bfont%2Dsize%3A1%2E14285714rem%7D%2Eui%2Efluid%2Econtainer%7Bwidth%3A100%25%7D%2Eui%5Bclass%2A%3D%22left%20aligned%22%5D%2Econtainer%7Btext%2Dalign%3Aleft%7D%2Eui%5Bclass%2A%3D%22center%20aligned%22%5D%2Econtainer%7Btext%2Dalign%3Acenter%7D%2Eui%5Bclass%2A%3D%22right%20aligned%22%5D%2Econtainer%7Btext%2Dalign%3Aright%7D%2Eui%2Ejustified%2Econtainer%7Btext%2Dalign%3Ajustify%3B%2Dwebkit%2Dhyphens%3Aauto%3B%2Dmoz%2Dhyphens%3Aauto%3B%2Dms%2Dhyphens%3Aauto%3Bhyphens%3Aauto%7D%2Eui%2Edivider%7Bmargin%3A1rem%200%3Bline%2Dheight%3A1%3Bheight%3A0%3Bfont%2Dweight%3A700%3Btext%2Dtransform%3Auppercase%3Bletter%2Dspacing%3A%2E05em%3Bcolor%3Argba%280%2C0%2C0%2C%2E85%29%3B%2Dwebkit%2Duser%2Dselect%3Anone%3B%2Dmoz%2Duser%2Dselect%3Anone%3B%2Dms%2Duser%2Dselect%3Anone%3Buser%2Dselect%3Anone%3B%2Dwebkit%2Dtap%2Dhighlight%2Dcolor%3Atransparent%3Bfont%2Dsize%3A1rem%7D%2Eui%2Edivider%3Anot%28%2Evertical%29%3Anot%28%2Ehorizontal%29%7Bborder%2Dtop%3A1px%20solid%20rgba%2834%2C36%2C38%2C%2E15%29%3Bborder%2Dbottom%3A1px%20solid%20rgba%28255%2C255%2C255%2C%2E1%29%7D%2Eui%2Egrid%3E%2Ecolumn%2B%2Edivider%2C%2Eui%2Egrid%3E%2Erow%3E%2Ecolumn%2B%2Edivider%7Bleft%3Aauto%7D%2Eui%2Ehorizontal%2Edivider%7Bdisplay%3Atable%3Bwhite%2Dspace%3Anowrap%3Bheight%3Aauto%3Bmargin%3A%27%27%3Bline%2Dheight%3A1%3Btext%2Dalign%3Acenter%7D%2Eui%2Ehorizontal%2Edivider%3Aafter%2C%2Eui%2Ehorizontal%2Edivider%3Abefore%7Bcontent%3A%27%27%3Bdisplay%3Atable%2Dcell%3Bposition%3Arelative%3Btop%3A50%25%3Bwidth%3A50%25%3Bbackground%2Drepeat%3Ano%2Drepeat%3Bbackground%2Dimage%3Aurl%28data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAABaAAAAACCAYAAACuTHuKAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyFpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw%2FeHBhY2tldCBiZWdpbj0i77u%2FIiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8%2BIDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDE0IDc5LjE1MTQ4MSwgMjAxMy8wMy8xMy0xMjowOToxNSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo1OThBRDY4OUNDMTYxMUU0OUE3NUVGOEJDMzMzMjE2NyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo1OThBRDY4QUNDMTYxMUU0OUE3NUVGOEJDMzMzMjE2NyI%2BIDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjU5OEFENjg3Q0MxNjExRTQ5QTc1RUY4QkMzMzMyMTY3IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjU5OEFENjg4Q0MxNjExRTQ5QTc1RUY4QkMzMzMyMTY3Ii8%2BIDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY%2BIDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8%2BVU513gAAADVJREFUeNrs0DENACAQBDBIWLGBJQby%2FmUcJn5sJXQmOQMAAAAAAJqt%2B2prAAAAAACg2xdgANk6BEVuJgyMAAAAAElFTkSuQmCC%29%7D%2Eui%2Ehorizontal%2Edivider%3Abefore%7Bbackground%2Dposition%3Aright%201em%20top%2050%25%7D%2Eui%2Ehorizontal%2Edivider%3Aafter%7Bbackground%2Dposition%3Aleft%201em%20top%2050%25%7D%2Eui%2Evertical%2Edivider%7Bposition%3Aabsolute%3Bz%2Dindex%3A2%3Btop%3A50%25%3Bleft%3A50%25%3Bmargin%3A0%3Bpadding%3A0%3Bwidth%3Aauto%3Bheight%3A50%25%3Bline%2Dheight%3A0%3Btext%2Dalign%3Acenter%3B%2Dwebkit%2Dtransform%3AtranslateX%28%2D50%25%29%3B%2Dms%2Dtransform%3AtranslateX%28%2D50%25%29%3Btransform%3AtranslateX%28%2D50%25%29%7D%2Eui%2Evertical%2Edivider%3Aafter%2C%2Eui%2Evertical%2Edivider%3Abefore%7Bposition%3Aabsolute%3Bleft%3A50%25%3Bcontent%3A%27%27%3Bz%2Dindex%3A3%3Bborder%2Dleft%3A1px%20solid%20rgba%2834%2C36%2C38%2C%2E15%29%3Bborder%2Dright%3A1px%20solid%20rgba%28255%2C255%2C255%2C%2E1%29%3Bwidth%3A0%3Bheight%3Acalc%28100%25%20%2D%201rem%29%7D%2Eui%2Evertical%2Edivider%3Abefore%7Btop%3A%2D100%25%7D%2Eui%2Evertical%2Edivider%3Aafter%7Btop%3Aauto%3Bbottom%3A0%7D%40media%20only%20screen%20and%20%28max%2Dwidth%3A767px%29%7B%2Eui%2Egrid%20%2Estackable%2Erow%20%2Eui%2Evertical%2Edivider%2C%2Eui%2Estackable%2Egrid%20%2Eui%2Evertical%2Edivider%7Bdisplay%3Atable%3Bwhite%2Dspace%3Anowrap%3Bheight%3Aauto%3Bmargin%3A%27%27%3Boverflow%3Ahidden%3Bline%2Dheight%3A1%3Btext%2Dalign%3Acenter%3Bposition%3Astatic%3Btop%3A0%3Bleft%3A0%3B%2Dwebkit%2Dtransform%3Anone%3B%2Dms%2Dtransform%3Anone%3Btransform%3Anone%7D%2Eui%2Egrid%20%2Estackable%2Erow%20%2Eui%2Evertical%2Edivider%3Aafter%2C%2Eui%2Egrid%20%2Estackable%2Erow%20%2Eui%2Evertical%2Edivider%3Abefore%2C%2Eui%2Estackable%2Egrid%20%2Eui%2Evertical%2Edivider%3Aafter%2C%2Eui%2Estackable%2Egrid%20%2Eui%2Evertical%2Edivider%3Abefore%7Bleft%3A0%3Bborder%2Dleft%3Anone%3Bborder%2Dright%3Anone%3Bcontent%3A%27%27%3Bdisplay%3Atable%2Dcell%3Bposition%3Arelative%3Btop%3A50%25%3Bwidth%3A50%25%3Bbackground%2Drepeat%3Ano%2Drepeat%3Bbackground%2Dimage%3Aurl%28data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAABaAAAAACCAYAAACuTHuKAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyFpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw%2FeHBhY2tldCBiZWdpbj0i77u%2FIiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8%2BIDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDE0IDc5LjE1MTQ4MSwgMjAxMy8wMy8xMy0xMjowOToxNSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo1OThBRDY4OUNDMTYxMUU0OUE3NUVGOEJDMzMzMjE2NyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo1OThBRDY4QUNDMTYxMUU0OUE3NUVGOEJDMzMzMjE2NyI%2BIDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjU5OEFENjg3Q0MxNjExRTQ5QTc1RUY4QkMzMzMyMTY3IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjU5OEFENjg4Q0MxNjExRTQ5QTc1RUY4QkMzMzMyMTY3Ii8%2BIDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY%2BIDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8%2BVU513gAAADVJREFUeNrs0DENACAQBDBIWLGBJQby%2FmUcJn5sJXQmOQMAAAAAAJqt%2B2prAAAAAACg2xdgANk6BEVuJgyMAAAAAElFTkSuQmCC%29%7D%2Eui%2Egrid%20%2Estackable%2Erow%20%2Eui%2Evertical%2Edivider%3Abefore%2C%2Eui%2Estackable%2Egrid%20%2Eui%2Evertical%2Edivider%3Abefore%7Bbackground%2Dposition%3Aright%201em%20top%2050%25%7D%2Eui%2Egrid%20%2Estackable%2Erow%20%2Eui%2Evertical%2Edivider%3Aafter%2C%2Eui%2Estackable%2Egrid%20%2Eui%2Evertical%2Edivider%3Aafter%7Bbackground%2Dposition%3Aleft%201em%20top%2050%25%7D%7D%2Eui%2Edivider%3E%2Eicon%7Bmargin%3A0%3Bfont%2Dsize%3A1rem%3Bheight%3A1em%3Bvertical%2Dalign%3Amiddle%7D%2Eui%2Ehidden%2Edivider%7Bborder%2Dcolor%3Atransparent%21important%7D%2Eui%2Ehidden%2Edivider%3Aafter%2C%2Eui%2Ehidden%2Edivider%3Abefore%7Bdisplay%3Anone%7D%2Eui%2Edivider%2Einverted%2C%2Eui%2Ehorizontal%2Einverted%2Edivider%2C%2Eui%2Evertical%2Einverted%2Edivider%7Bcolor%3A%23FFF%7D%2Eui%2Edivider%2Einverted%2C%2Eui%2Edivider%2Einverted%3Aafter%2C%2Eui%2Edivider%2Einverted%3Abefore%7Bborder%2Dtop%2Dcolor%3Argba%2834%2C36%2C38%2C%2E15%29%21important%3Bborder%2Dleft%2Dcolor%3Argba%2834%2C36%2C38%2C%2E15%29%21important%3Bborder%2Dbottom%2Dcolor%3Argba%28255%2C255%2C255%2C%2E15%29%21important%3Bborder%2Dright%2Dcolor%3Argba%28255%2C255%2C255%2C%2E15%29%21important%7D%2Eui%2Efitted%2Edivider%7Bmargin%3A0%7D%2Eui%2Eclearing%2Edivider%7Bclear%3Aboth%7D%2Eui%2Esection%2Edivider%7Bmargin%2Dtop%3A2rem%3Bmargin%2Dbottom%3A2rem%7Di%2Eflag%3Anot%28%2Eicon%29%7Bdisplay%3Ainline%2Dblock%3Bwidth%3A16px%3Bheight%3A11px%3Bline%2Dheight%3A11px%3Bvertical%2Dalign%3Abaseline%3Bmargin%3A0%20%2E5em%200%200%3Btext%2Ddecoration%3Ainherit%3Bspeak%3Anone%3Bfont%2Dsmoothing%3Aantialiased%3B%2Dwebkit%2Dbackface%2Dvisibility%3Ahidden%3Bbackface%2Dvisibility%3Ahidden%7Di%2Eflag%3Anot%28%2Eicon%29%3Abefore%7Bdisplay%3Ainline%2Dblock%3Bcontent%3A%27%27%3Bbackground%3Aurl%28data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAAHwAAAfeCAMAAAANs6rnAAADAFBMVEUAAAD9%2Ff319fX5%2Bfry8vMAAQD49%2FfnAQHeAAH9AQH2LS31Nzb4QD%2Fp6en6W1vi4%2BLvAQHt7%2B76SEj5UlL8enn4%2BD71AAH09Cgvpi%2FmQTzrTkroLzD1IiHuZl86rTr4cW%2FzFRRGskbDAAD6%2BVT52EPPzs4AhwD45XT7Z2X431tRt1EAA2HeW1fZ19fNAAG0AADXTEpIW6P56%2BgAAnv1zy1avFrWAQF%2ByHwAMADgbGvbNC0dnx7QPj0CBZAABagAdwDmfHlgf9tNb9XyzcwCCcP1h4LkHxwAPgAAIgC5xOL2paQBATn3urkyT5Nvw28AAUw7OjhJSEQLmQsBZgFZf8dXVlT03dz3wwX5kpLm2EqoueJIVJBTbbXluQagAgNQbaNxks7w60lmrvr%2F%2F%2F%2F36JF5eXfys0NkfrEAACbU2%2B4FCexcoVnzY0tlwGFtrGpnaGXg6fc1U6Z7uft3ieGGmuD5vWsAWwLAw8L8%2B3EvLS35%2BAj21wXD0eyWqtkOM5NVo%2FdfYrw5fruyUlRQlkrgxTR4rokAUAGXyZs%2FZrd0eMb0gTcBQ%2BzGLi1JVdZUktVLTLNmjfZpntszNaY%2FkDvikJE0PXv2k1IIyQcCYvdWosx1jbp7rOA%2Fjcs2Usux3bFPe%2FSkPDcAKuJV2lQeHh7KvEgDK7GRpfh6nPjdsLUASAEAABWt2UPh4wWQwftAlPU1b%2FOTvuCUn8UxzTDi0nEHgfwharDCr3ffmwZpudu7YXGAqM2KAgF86XpXnHYFTsDR6s8HU6Gen1rQHx103Pk%2FPvgrMss6hFiJjcXzWzCOiINQvPqlts2ysa0HInmen5sqXt5oattX0%2FgLovBob6HG7WiN0B40qvXJfHP3dA59eD52RDoyfS89pGC5fZkbc0EFwv2myfePfKWMIkeefy4CjbG8lTm9wxD1Qwx5y%2FcccRxsAQDU1JuTX1oXDAuY4Pz27bpzMHFlsyorjiDPZhYCit%2F5Qn5rafuZVo1JtdhjJyY%2FAAB9ZZhO19oWxMj1J1MAS0u4oVSMAAAAAXRSTlMAQObYZgAAaolJREFUeNrsnWtUVFUUgOcNCcM4DIgMjqg4ATHDY0IURJscUcHBtyMgpgSmKComRBYQgYaaZAlWSm%2B1KHsRhdELaWVkqFlUhkYrtLcaWq3ssVarvc%2B901CdTdRy9et%2BuSrtNN%2Bce%2B8Md9%2B9zz6yq6%2B%2B%2BtikmxiDB3t5eck4XI5chcyde8MNt93GG3PDXPhvWkQXHR09ahRvTFRHfkVUVGp71syZ06dPX75cNik1NTUrL%2B9GIDQiws%2BbKx8LzABWrRoz5oorHufKNwJyRJMI8OWqjs2bC%2FPzSysqKuLi4p6QXZ2alVUG5vCwMIO%2Fr4GQM%2BkVI0cOHz506MiplPxVpVyuVGqMsbEWvjxf35ifCn9tB8pBPik1q6zsxmYgzNfHx0jJ0e6WUzN%2FFeRms0IRGxxsieGN%2Baa7paWlEnjoFFB5TjYJ3CAPbWoO9PUJMSbIONx0YxgQCAQBgU%2Fy5a%2BC3NrcdUYRTMlVckQJB0ejAFKZvCisuamgOdAnZFgwLWfuf5BrdIeXWlXBwUmk3ONWKUpkNVllRUVNzQWZbXtCpkwJjibkHvdNfPltIP9Yc%2FTw0aOqpKSkWErucaP8%2FqyiIph5c1tb0JQpU0K48gNlS5B5QHZ29rwoUq7QHT2qo%2BW%2FtLDz7UbN5OsCA%2FfsCQK5Vwj3Kt1btAS%2BDubNmzRp0qZNm%2BZN4I15fOOrH3%2BswDnpSfltq6tqa2u%2FQ%2BB74zuQl%2BE5D8sBgkNCKHlR0RIE3gBwJW%2FMVLzaFXhEVbHANdw3uHolUFVVi3yH8r179058EvkCv5j48onIBMaVAFc%2Bddy4aWar2WwuiUHIMdOmqd3IJCQkJCQkJC4JlyEsGKGjkcZSvIXKb2nJz960adnZl3hjJk%2F44osJkydPjk5ISIgGeGNuRhYsWqTV6zGy0ckuCwD%2BIRrpSMstzCrLzUjJLWssTZGX8cZMyMvrOHOm%2FZgK7mVsNpuDK88T0Ai3kSj38%2FP7h2hkXmmaM7coNyIid0kavIFy3piuvMN54eFNNRaj0Qj37aP48nCGBtUKUW7w3NFaufKsJdaA3Fw%2Fv9wIW%2F7azYS88Ux4U1ON3sZw0PLIcI3K2tzca7Oi3GAQ3ZQ8P5dhMAj%2FLOUf9vDNTU2ba2Jh3sFJRu493AK3PL%2Btec%2BeXpCHGgz%2BnijCLOPQkhHh5wfD%2FCGaGzTI%2FxT3gmuHadfUHNSKMyflkZGRCo2quU2vQDm8qNuNcnrmvj7wNwg6uDOPtlvgjjk4OSQ4JClpSjB35ovywI3y3qaGhsNms%2ByyCJiQ6Aa48k2NFfm2iFyfQbm5wYfL47gRiw2vchGXy2Ym5JEIDGxo0GvNsiERcDBnrV%2B%2Fe%2Ffuc%2BfOrefeS6%2FtyE1JmZc7aFDudnmaqZ0rTwjFy5xNGyBmztw5kTaFSqfDiQ7B0zl%2F9uzZs2bBW%2BDLy%2BQpqZs35xr85dlxqfKCTt4YF0zHM3NXA18uXHAqPMpMPmTw4MFqDzIOL51dXF5enn%2FqVOmRI1FHnt3BG%2BNwOJ3OBoE6gCtH9u%2Ffb7ZazYhMQkJCQkJC4pLAbmEuu2wI8A1GLVRU89FH8GsI%2FIIf%2F7wxL1%2FOcMc%2B3NeZPHnixJtFIDh6XLb7KJCRkZISENA8Y9WY27jyseECkcDo1V7cMfY%2F5WFu48rXrVt3IyMsDMZMBfmhpUsDMLdjOD1y%2BBWEfMb7qEU2XLiCLw8wtfXJwxDyY8fEnEUQjEH50qVLQ0MdjhT%2F08OHQqzGlY8Zsy%2BTqT8YOrSKkEf4WfUstYWU0PKcwMAckI8fOU52Dia%2BJsKREur0PY3vhi%2FPhDntKyjYN3zo%2BPF8%2BZDjxSZDLN6J4o3obDUpf3%2FVvn0X9gWNHz98nEx9aOmaNX5w9%2BfwOT0U%2FoAvj7x75MjP4%2BO%2FBzchH9y0ptjgnwxmvIRn8eXHjtWE7RuZkzP0A7d8DcidDkdayOnxlHxGG5zLfW%2B99QHKa7lyr0ORdv%2Fk2eDuT15TkwPzvvABzHzO8GlMPt8QYbcbQT5n6DS%2BfOTIDzbEAxsuzJlT68097KH%2B%2Fg6XVcBsbSblgYEXhgcFPTkHXeqla%2BbPh6AlJGTKQ3MI%2BZAZY%2FaNHo3ym2%2F%2BYighj%2FC%2FG4YgCxYsiN9Py4M%2B%2BMAjx3PuZ4BYBy44Qt7m%2FqDFA1UJ%2FJkX9xnDl088BhecmCVjLjXi7e0NT1LOTQNkHDCq%2BehLry%2B%2F9JrypTfAGzNiP8QiHrhyzNMsWLCIwVwSEhISEhISl4Rf1H%2BGN0YrMHgw3BNbAd4YoaACmdBoJqKam7744ua%2ByGIOLUWam%2BF2CniZK8%2B1OW1yeUqKXGlLc2nMXPnm9vbNQEWZ3gHP5rk3md%2Bl3FgtRizIIpnXcZDuacvc8PkGuPOsjOHLnSlOuTzUpFQ6LWmEvL0psqdiW0WqNgASAmklXPm6Y%2B97qqwCF8m87Wfnz%2B%2FKhGCka9b6n2P5crncIWdyjcapUJDyX7dtLnQZfAYZHK03cHMsOGPRLchTQuvrm%2Bvr77qr%2BY47iGquCGcaYjJlIGmv8w97568VZdoMX59BKdaxw6fyI5YaoFChKjwI3D8B5KaWu%2B66A7jvvq1ENdfgABPe35oKgrGIyMhN2F25eVtFocvP18ff2TpyPCE%2Fhu6sgwfLwD75IJObWmDiwFmqpskPZ56RUWBMAex1CXx5kT7N19cnwFo9HqKRcYQc3UBR4WSUJ9hNFksa5ljqkii5Tq50Qg6owAgZgjqVqoR72Attob4%2Bvs7WMeCeM5QrX999ETkvoga5BZKADoXC8Xo%2F8rREeH9Go0Jlj7Xz5flOCHsirA8MBTclHxIhJMeGDRsxYsTgQd4gtycmmhJtKgumpgi50pXh0mhMJoXCZXfw5ZircerGsmcDZOQjpufg7MB7QHk0KwaLEeHLWfBnTkgwlzCIqKZ57NzHH5%2BKpV%2Fjpo0jxgBeiDcik5CQkJCQkLgkVLz22sWW1%2B47Xt5PBfcSRMcKHci1Lq%2BJ7AWwKpxb7PPrxFOnJpxvuTIKmTlT9oLrU6fzU8en9cJNZBRXXgpoWO06ZmO8ufJnny3raCyqF1%2BHK5%2FQYIVyDmtjBbJt20xZYhq8HLzkXTvvqq%2FfuZOQw0obqGEDAkJNlPxME6Qwqu%2B6A%2BHLX6%2BDWza4bdu2bTuwbboszuqEOCCte%2BcdUOiiouVZei3YdaEmk50rP38mLKytKyywuQe42DOdN%2BZUQ5rdnna8e9v2la%2B%2BWQXy12wddXWfOpftvKM3XJ63cyYhz8oSqvdMJlNoAjchUBwW1tUWGDj6N4QfKFY42ru7ixp6tm%2BvWl39JsizX7q1u%2FvWnY133NerCe%2Bl5FlZWSo96k2mAkIeDhNH%2B28Mrvx8%2B7Zff91WgfLqw29uXy7bW3%2FXTgCCpRdffPGnO7jyeakgRzfIC4ymaGrmbeC%2BjpZjSAVsB6qqqk%2BCvLwezDvvQ3766dY7plPyMuGwFxgJ%2Bbj3M9tmzz4ddOET5E01V16BbgSWzexhcjZv4Nb7br31PkpeVsbcOsiGmEZx5Rv3YVJNcNPy7YzyNgDkE9jncqd46PnybDjqnguOL5%2F2KvAm%2FGLw5VHs4%2B2ePcjxa034vpk5HeEW421au%2FZAyWHgKLnWha1P8cCVezTLgSeWyyQkJCQkJCQuCQmAN%2FwVnSA8iaSqwhhDACJ%2F8qUHfLA6gjdGhegBsYhJlgCP7%2BtSDtntS9lDWL48AAnF6i0%2FKn%2FyZbHI3QwvrrzXZuvNk%2BfBr174lzMgt9vPJrbMn19pOQEr5gm5n%2FuJLS6oIOSgRLYghBzWNOTlKcNzNLbwzMzMZiY%2FPh%2BYPeuh2GRS7nEP8%2BW%2BsKNPXT9V2a%2BX50Xm5Kxr7znWFLQhU2eVJaTYQ8%2BumQ%2FFXLNP4KJ1euV9Ttvpfha%2FK%2BSIo7jYSa%2BH2aw0h2fmbIZ8Q2Z8U15WCcgTTZVnK2fPqvz5IXjYT8sD22bPOk3LVUyetmVLMahVhDw%2FVS4PVyQ6LJlnyvJFucVyYvasE8nJIL%2Bmn5X3XSfQfRMth7QbzJxeD1OUWiqvimTyrHYdyKMhwWOZHTtrffL6pKTX%2BfKrZggJBCxIo4q3WvVaHaOVUc0%2F50plZlvens%2BbmuLzcTVHtN2ESZYTPyeBm5Kv8rhR%2Fl%2FHaEGuf0CbuaGprETF5PjxTrQAsUAyVz5X6DIhTp%2BQD2CMViksknLBswYmH4XEANcwuIlctoRPyJ5MA%2Fjyue5RdI5FODEsXyOtY5GQkJCQkLiEDBuBDEFYQQP39ofhXizBrwqbClTrMSDRblQDA4p8RmQIQPkNRiV8Oa5%2F9jSc4suhXVerXK7SyTWt0CZIPZDIB%2BQp4p%2FgH1FyFCtSbKhWUPKVK1uV8o2rlZqSkycpOZNu2eKOfC7L6PtuCDm6XREFBS62WttMy5UrVypQXqvuJ%2FK5brQ78pkolNAB%2BDS6IoqUOwpajA5wU%2FLVK6ta5SVVtRs1D3z9NSUH9%2BjRgYHx8YOGoXxCu8dNybUoDzX6%2BhoxGqHkVVWtyo21J1craHkoRnxYDecDFUo%2BKHe7%2B5crHcFbkxx0NDIO5Obq1bUnV24E%2BUlCjtHmlsCgLeBG%2Bf68YsZ1jOLvqZt9pcJ1nUurUAElhLzWXF118uRJkM8l5BHg9gl8660g%2FID7eKOcuUW48hEZeEX6XVdgKMAEjzc307C6ttasbV250mx9YC7I6aowHzjfw4SqsI%2BK%2B0DIh%2BBHwXDddRigA3z5SrjaFZqNGxUquNo5cl5V2P6PGN%2B76aeaK6G%2Fai7MsGy06swlVvNKNSBVhUlISEhISPx%2FqBA9%2FpgV4pGB5EbIDsg6HGMlV96f269%2B%2BU8Ri4pFI3jfLvbv4sDG2GwaMWLhy8cCGhZckCvv1W3hh473jVhU6JbjvQ0ZjeAYTYafIcIpRixkB2QFvj0V2YRYvbSt6WylJ1cjZgjw92SvMByTgfde%2Fg5qDMphwgo8NHp47k3J57dlnqj05Gqu3Mzu2FNTWeXO9ul8uU247wsFNymHg63A06IfOp5YSqJuytzTlQnpHLZKfbZaKJbKx5qdrO3l5VC1Qy%2BiEaPZjClc%2BQx42q7C86IfT8qb12TO7srcIPK9IN%2FeXlravh3KIEHOjTRChUvNKUQa%2FFQIPOlX4TWhJ9exqKE3WtcGYd67z81SY94DwHNA9grDSMOJbpWfEGmQeRgVXhNach2Les3srg2za58D7rnnnufmCKGQBtzDVJQcIw0DJI1coeL6EzLHotcoQD6HlnvcIL9czHvg1UTLWaQREWpwRxpkjoXNXE%2FmWNRtTWuueOSRR55joFyHJABmxkAiDSrHcpsZ8yclZI5FvV89dQ5yuYBMQkJCQkJC4pKw9S%2FwxowSiWFcwy3qeP5eN7cz6BX8OoYVkG1NYUAcEWoCHuLK7UgiwIpKuPJ7rxe4Frnlloe58ly5qy4RlrLXNTggaYFyZr07aAu2azUQcrGUJTk5eetWSo5S5GmAkjekWSxOOb6OxuIwo9wEBMUHGYNhSxSuXCsGaSxeIe7znv70KUSc%2FfX38l%2BnQe6I1TQkxya5Gra6UA5qv3ijMR7chPxeeM3HkDuRx1bwxsgZeQCLarR8uUVur3TYk5MSVVszFKLceF18QTy4Q4zczsW3PypoHwSeeeZBWq7MO3w8j%2BVhuJHsA7oIPZw8mHhsovG0rlq2G%2Fvrft71RVDXemDWbv7M2bTFN3AnKVcqsdSP5WGIMHpGrNESHJycHDKsduiFcbLds4CuDV90bViPcOU6sfWy%2BIighDjneMLr669Frud%2B1K4au6qt0reyy6dreNfrony9QBeoQf4fK77uvRYuc%2BR55OkVhHzk6a4LF7ZurR36kCAXQT%2Fo%2F2tV2O3iJ%2B1pBiUfazo%2BY1Vs5Ziu4NMXLkyT7f4zfHnfei%2BAK0cefvjhFSJEVON5KUAmISEhISEhcUl4922BD5H33nuPrOa6CXmS%2FTz%2Br2tdJkzIzY2JiRUryl9%2BWfb2t3%2BCLw8AhB5fbM8WcoynysqLK9%2BcK7cnprkjnz7yrxiEHF5O6LNF7NmCY1Dq3j7EQMjlcktsHUY%2BEBWCvFRR2JcOSm5wd0Qez5ePgPYBnuK2AFIeC%2FLkWIfGlZz8MkQRSG94eC%2BdP2HVXOBGOacPMG93SGs%2F8uRkR3ID%2FCXKYUVPTjhd8cWquZg7aDwl13vc5Oskp9UhyVs1DVvrVMnfMLlS2RsZ2Qv%2FDykXK8lQPoeUi276dWISxUDXlVy3tWHrN7JSVaGH%2FMIOspoL3AC5jqUcd0e6Fdj0AnDrTELO3FuTG1QNW0H%2BIVzmIvBp%2F%2BoHsporCHmSjFiuXOIWHwBe4ObnrklENxIDMLmA4KfkcLXn4BWXMxQg5PPcU4e3QMjFRwzCWwA5fq0hP4iQOZabn0TIiAUX8CMzAWoFP36tMb4RkElISEhISEhcElb0YeI3MdwuOff8Bd4YKKXIfU2Oux7QO0hOF1i%2B3B3VrHjUDezJluY4xJW%2F8if48oAA%2BbNySJkgRuMornxXo7U9tb2zU6wKA%2FmPSM%2FxRLvT0dzcJePgypX3uSvXNPDlJnm9HPfVw168hLwntbOzceHChWJVGJO3d0MLL5um%2BfMTzUe5d68pARiGFABvvfVWgRctF91TgvnyZcviOjpRLlaFrchCswvm1HD8%2BEPNh7jy4vC7RTcplwP1nohFy5WDGye%2BA90o355hT2OVZOEqne4sMfO8GyPRLcqJFm1CYziyRRvKOxd2onsHurHAa0VRtz0xBavsesN7m61HiZkXi2pfny%2F5cjlwlydi0ZGRD55vdKMcz%2FmxFoslxaFoyszMO0qEv3%2B4Kbl3qFF5lzIEzjfgnRRDr2MR3CD3RvkbwLbK5Fh7b2svV%2B7wRGFIM7dThwnkGtGdwJHzuhuveOyxHxk1F1ssdifI6c%2F5IwL38OUmZb1GuNqTkjhyzjqWP3%2FDqV%2B%2B5r9%2Bw8HXmn6v3tMnWVrHIiEhISEh8X8w8NzIDwPYHRK2nfhH12CGFwO3dBtQH7DnnyV3h%2FTIB3sd%2FEc5lJ%2Bhi8U1BQUJnD5gHPmnY1A6kt4XH%2BU2x95%2FlEegtEDYL9yYIPNJ8zQcgLbJhPxTvIPs7RVuIbm3xdtx1%2FPy%2FuUZDqdIGuA0yrSeKEyl1yp0XPlT1ytgTPVYKhpBeZrN5h19pF%2B54q95GK3n9%2Fp%2B5E%2FBmJISDV3xdcTbe3v5kSP92lV93SqUe37fnxyWx%2BhKSqx0NHIE2q2JZlr%2B1zzMoLSMPtdggDdf%2FhRWAep0rCpMxU1bzbS7XLFR%2FcuXlhwWOIocnvXXKIKQW1hyArqJAfyWXtMTXS5LjCevQyyicS9cYit4%2Fh5FcLi3LJHqJ%2BaRj7JYIGKY3r8c9ukE8C0A6gFFEe9EC3HINQJcOWZWGP3J%2F4JMQkJCQkJC4pJwvKf81Kkj57ux4iEOfibz91qxWnGnFWQiQOxEAMwEhM0IuHevwq23Vi%2BuZ5EtdOgaGsyujl27lpWWdizjyyflyidNUiLk%2BvOoXSLLgMWLn%2BDKc3NtcNPucAI2XMEfDXukIJ2L45Z1pC%2FmynUsxwIbwqQipe18ObMicenplFwu12hgBkqNSqMA%2BSkn7pFS1724Iy4uvWPZcq5cjpSVFSHriiaSctFNyuVyvV6Ju4wotDo8grscjd3dWQ1HG1NT0xs7OpbzD7scDrv4uF2vMvcrX5iOcjVfDp1eVbjSX19yuATk5xuX9fQs3tUT17E4Pa4xjivfi%2FL7%2F4AbDy7Ka%2FKwp%2Bl7ftBg1mv0Ffn52%2BB6Azm%2B42w4VHF4sBrTQU6162KBBr1MfOauxY1s3siOhWpCXqJRYQSg1R4%2BrDKDfHFHKbqB8vI47rkqyy9FUkXa%2BfJGZf7idMG9I52QK0tU2lhIROh0h%2FWCPF%2FbiG446iAn9mMByhhFRWXlXPmyZdpUcd6UXC9XmBVaSJvW6bSHtSCfuWtZY6pwlabqGtO58nxx6U4hotV1ENnCXcLVvhDeAiFXKrVaDb4W5PD0KJ%2Fp3h7liSd2EFHE3omMCW74GWLhNf5hr122Rs8sdTeWkJCQkJC4pNz32Q%2BfMcTSdN6Y0J6oUw9F%2FZwxU%2FyRzRtzLHTdOv9jx%2Fy3RwKw5Qi%2Fn9gY87C%2B%2BZzPnq17VqQetvTjyq90yBsaHPL6zs7OOKjw4cofLHQV3pjvKL0zJwzI4co%2FGDu2WpvWJ59zX11i4ouMnQBffpk91GQxWQqgsgjgy02uvLTIjPC0xByEL%2F88D5JErWkR7nwOzDyxXnC%2FSMp%2FdjjtdU5798Idu%2BC2r4crNzrCM4oDIjMs%2FcjVzeEzVo1p1YqplkSQi26Bcu7dq2tXXd31ju4dO7TaTp2Zf9jznflhqc5Hr85ENSFf2pY5Y8zHImMeB%2FmLHvl9fPmpzrhfL%2B7IBrmqY%2BVRLVdek1ZUZFi32VKRw%2BQbyC5pq8DL1pN%2FPA7lqBbchHw6KyRDdGeaz%2FBnHinsVsPUmZR8TZ%2BZD%2F94quzmcPho5OSMBuLj40cvouTMfaRTp0%2Ft5Ms97hxS3ozzbtWVsiAktUL2wrOeecPMjxBywY1E7aDk4qXG4MpPh8O0HyiCtOtk4OCVMPNwnLs4ff7Ml7OPt%2FvQU3IkR4CQfzBjxtjWdTU1NQcRkL%2Fw2msHkHIRrtwTiZDRSGZkpjhnBlc%2Bd%2B7QMk%2Fgc%2BUEmYSEhISEhMQl4QUgfsSCAwf2wg9z4univYgWyWfdcri5ml%2BjTp2aeb7FnWahOiBfhYgddWQvZGU9m5eRV1b20ksvwbb6V5J9wOSIEhsFreAW6TiE%2FezhkX83pEyWc%2BXVDCgxa7sbmAbysvq8gGIQ42reeYQcnEpQKxXQm4gvf70uxY772cfFXWy5mE7JWWnb6tWrx6zcsmX1VJS%2FlBdaDJPGlcTzomg5uJUqUo772ddBriZubfrF9It8%2BVXVzA3AdhZVIF%2BQlxdeHFEMCBuD0HJAA%2FJn%2BG2ZOh093d2NDT1rW%2BLSz1defIKQi%2B6QQet33812ogkVioR8sVFZAl8ODaGEqrVnniHk53sW%2Fvrrws6e9JaW8vLzawm5e94hw9bv3uIFM4dJ%2B%2BG8Gd9T8qc14FbQ8qhlce5kCZDOl48VzjfKd6P8QNmSJU2G4nm4bpxaMX87yhWsaq1%2F%2BVrBff5Iupovx2kDVVNG7D63xVt24KUldzQZrmPqFw5s4suxD5gC3P3L14ruysrztJy5QX4O5eXw8W4yFQur5jdRcrjg2MxVZB%2BwmcuysxfHsdkvvEjkWObiJ201Euwzaz3I8Wttv%2Ff37hQwV45fayvMmBopWYFQVWF90yz99xwblaBWR0vrWCQkJCQkJC4RnwH%2FlGMRF7owBgNkB%2BR%2F2LPFOu5PEcsNss%2B%2BAl4U%2BOmnn%2FjyRwXEVrteXLnNqbHLEXrPFoV84%2FvIPoE5sh%2FAjFaEljNpdzdrtEvIXXKXxbM638qXy5vDgECAbeI%2Bqq5vy%2BbEawg5uqutLf3INU6lxbNegi%2B%2FMU1%2B1iQu6P6%2BIAbkqHa6IIEDSwYshBwb%2FCZWH07EDsMP8uV2T%2BdnWPfA3U3cnheWknK2spI1bnqo8htBXudKdLga4H%2B1vMyX34lyq9XEuht7c%2BWJHjcld2aEhTk1uKQCV1TMUoMcD7nTYW%2BAXlqEfIggP9ZjATchj0lk7qQkcFNyVUpYsaqSvUMAxsQwuXDISDke9QdbejZcfKZfeTKuqxoPEFui6OVK%2FdnYt4KDk5DYGNjE5WOG0L3446mUHM52iwXUb9Dy5GR0g3oOKVe1wXWOQH%2FBoCdBPgOyfKhnTOPLHxNbWjMSuHILgMvKhuP0%2BXKNvm0f4wPGVQPaq%2F6PpS7eSAJffg0gvg7CLeRU%2F2nvfKm7sYSEhISExCVi8jv58xcsWsBYRKxRuQwRhyD97TLp%2Frk%2FMPm61MLD4UAkMGmSIKe7GyN8eW6uQoV7UUaY4OG9caDyqx8tPBopFOncT8mhhMwTaeznywufur5QLjf4%2BnCSBrT86qLCo%2BgGeQ0pN4huUg6rbD6FiMWI7mEDl0%2BahPZ44CAhD11jMQhuWi4GieieMiU4eoDySZMm1azLPyTIJ3DlS%2BfP9%2F%2FjpnPfHH5fAmEXGmE3H%2FtAZw7umneYfcHB%2B%2Fny0Pmx%2FiNZRMC6G5MZKIDobkzIr0b3%2Ffdfnb90AcrJHl%2BiGwICSs72JAF3SopKNVA5c99%2FEOwoJ3t8eaKRaUQSCNwodxhDHAOWwwWHR75mXeGh%2Byk5XO30fiyiXNhwCWbucgx45pMnulepTFwCfyN7fE19vN%2BoBndjQazSGhUJCQkJCYn%2FnSuRm29eAMDie37NxPrh4zE34k6O3EBGNTbA5eL0HKPkSwAhYpmXnZ3NlSd0n9G3VmOrsFX978ciR5REzzFqc4dIFrGsXbs2ezr%2FhVvabuzVta4SeoU9TkY1Qo6F6DlGyLMjuzZs6EL5JkLuZzm7J%2BzG3taxI3E%2FFjKqYW4Ndi4esDw7e3QXEL927QFSbjBUduUEBvb2ts64Yio5hrk1g4YNXJ4N8s%2B7uj6PX3vgwNrl5H4s%2Fie6WKRm015FjmFuBXYuHqB8V3b2ptEw9fh4WNhAydF9OjNInDk5hrkVw0b8C%2FkmkJ9GeTklj%2FCPPbEnMAzO%2BXDMn5BRDXMrOPviU%2FJ5m0AeD9xcTsmHRMAJ7219YKSYPyGjGuZWcXqOEUTBxZ4dOVr8qPHl0ccP6eBweyIWKqrRMDun5xglRxYt2g%2BQPUHOqefMve1xT8RCRjUOhtS5WEJCQkJC4n9mKiJu9UxVZw%2F2EhFKJhK4gQUSjQi74w9MvnHjxtWAWPXOlXsFAGJTYoPRGM2Vu%2FfFN1mA2IHKQdpl8feP7Tp58iQlN8E9kjEjA7c7CeHLo%2B1oxbbFWILzL%2BRdQr9XsNcScgy%2FDDanAeRECkPcDLIpvJfdx2kHJl%2B9ssrC3IO2fv01IQ8Ft8PpcNgcPlP6kyvCC%2B6OtCn%2Bhbyqyr1PCS2HM51mg1bMAZi8GUXK8yITj2fmcTogE4wDeazghpmfJOTYgzrN4XCBe0oIKVeqOnp6GrUK1b%2BQ13YJHYZPfD2XlgcbXI4MFxx1b0quBPLLyvIVKmBg8mmra2tru5IGDXsd3JTchBexIWSKAdyEfJRJuM5fB6Kjk64ZmJx9vKvgHZwE%2BHJvk8nPKO5qBMTw5e7mx8lJwADlA%2Bg4zL7WxC8vhKh7%2FXMHZAkJCQmJ39k796CoqjCAtw%2BXMnHb0kBsIRBSCBQ2kDC01YUK3EgyNxbTIpUiFDAtTKUsF1ax0tSsmWrpsSFmDZklYdGGGY8ktLLUtIeVlZU9rLHsMfV9595laeZ866E%2F6J%2Fzc6qZut3fnrt34X57vodE0m8MQCDbfMnixcTeiFgH5N9D6LkutHwOoGR8UXsjQh2QB3RalbkuUbex8wjKYW6DkvFF7Y2IdEDG83zHpk3UxhZ3wHkE5dNQPhSg9kZEOiDjecrLk8GdGptaPHBQX%2BToDqP2RkQ6ION5KrvzHx80t6M2dX9tH%2BT5zB1G7Y0IdEDG81ROy%2B%2FK%2FzBz4MDaa786U1BeDnM6mDuM2hsR6ICM8u78%2FDlQH%2FP4eeftP19YDiNCwA3g3kgMVy7QAZmNO%2BnG2pyTO3CPRVQ%2BZUoYA%2FdGKHmgAzIt7%2BpU6oKOzTxroKgcbrgidsdBxMaVi3RAxvN0lquTVu44OU5QjjzLgKBjNC%2FSoDsg07NW5Dx7iUQikUj6AWqCJDmtwN%2BxE%2BAd043%2FBVHnsoi4hSZITmDTSBYsuGHixImQxsWVD3VUrUSWIatXC8mFJkhOWDDxmknIY8gkbksvyyxNIUiBtcDqycJy1U1GLO29ZnNAh9oUbp2xxmIoWam6xeXMXVyMbpBTuwjaKsy6WmiC%2FZNKbkm%2FZdEig36l4r5zrZh8tBW%2FJ3cWhbnwm%2FphYyi5rkJXWGio0Gv1fLnlhxEjftAt6v5RYYCQ%2FNI8VinhfDZIjYoRV74Qs64WmvR6cuWzDdqCwDx7MTmoyRqVwHuegyhdia%2Fklg8ZLBbbqMA8ezE5S2wMXqMyfuKKx5DX2PClx64iSvpzzyYmUZJMnReYwwoQcvh444dtBfAYXx72QwE5iZKWT8Vq%2BE3%2BjWSuXP3RxaD6iW2Q8%2BwlEolEIvnf0KpjHf1dvv5rVINZQRcEq3UhpjpqELrHlxrVBOKaEOI8uvQ8otaFlvdSa0FORjWPvPzAy2RUg%2BcxzEtISMjjzMUn8ZmQUMCIeIJENbZBNjqq0cLTdVpCtMcTGQnlB4LyC9LZ86NaXR7J%2FZ80iAHdepbxRcqj041p4Wk%2BD5xHTJ4XcAeVa8Ft05MZX3o4IiHabYoOD0%2BLvCTyYlG53x1UrtOCe6CJzPgyaTT6hMh0vTuc066LYlMr5EYBkBtFpiG%2B9vwDwE0DB17%2FKHD%2FeCJo0EdHhnv07nRPgqBcaOb9a4%2BA%2B34A1EHlEHW4fca8cIx8BBCYeY9yAPzKKyDk0Og7radVmKhcINJQ5%2BP6v5fhyvGjersa%2Bcg%2BYBKJRCKR9C96IPcMhI5GsgJMoGbeGwCtRcXhcIjJZ0HIYsnGYITcY8nC%2BduMBQhf%2Fu%2FIR1Su0dhGDcYHKYxGCPkCBuzv7Jk0aSIh7x35iMo1gCUKH%2BLIaCRrIVMzN8jHc%2BVMTXQ3pjBpYOWDlQ2e84LJUc16PPHl2t5ucTlgGYVuMitsAsgDm2YreftqONdFvW9wtMvgEPGVn4PugeTeCO5AsWtD70Bh5T0e0rc9FhNeKsc5zE3tjYREzY2IGMRKOS7D8iGy8v5Mco%2BFltuY%2BzwWsZBFNIob5TFCkY8IoXiPOAarV5WQm83YgRsrWYDhMQKRj6AcfsJlB3oX8%2BXw73sV4vHlco9FIpFIJJL%2FDYdj7NgdO5Rf1jExdjs3kUchBhkD8I45GmWtGa%2BkVrDsCiF5%2BKxZNuv69evhrwy7wXApV25FMgC6qj4qNNQGz7dbV2696fC2ZYJZYVen%2BzQ6a4bDkZFoMfjSaqgUJrQmK1X13Bx4a6jRvmzZVmeK970U75WC8kvceW54ejYa4Wk%2FPTJvKi1X3Tv48qM2e%2FXq1U5np9M73VWeIipPz5un1dlsBn10dFoedz%2BsVyRE7rEkwdfOq1e%2F1%2Bl0elO95V7Byw7zLOf5tDqDxReZlkDLVTe5x2I0grwzpTXW5XUdOSAuz0vTrrcZ1%2BsjoxP4l%2F1fbkIeh3Kv1zuntby8%2FMj0yYLytHT%2FefPC53HlNWWsQP04csGlRF%2BCbHPi6hSXC%2Fxffjlt7WTBfTWfTpeYaLMlZur1nmju3b6prJf70uN8%2Bbba5LVr53iPAF%2BWr71ZbOU6nR2HrALJDXr97UQ7CKU8HzlOyTdkQNpnyuqUlLXT1659RkjuSVKK5V9hdLm5crXziApfPnbszKsmq1MkgdMkEolEIpH0GxcoLPbD7aSDBL6E5H4Duaxgz0rz7j%2Ba31QLWcTk6Qz%2FrJVnufJshhK2mM1ceV2JpcRREvopVLPcBGOxReXz0gD%2FrBVCDj3KkET87jeRK4%2By2HKzc%2B25zVCvfXi%2BsBzS19LSFDctD7iHJXJjtQyLrSAqt6Gh%2Bfqy8s45ZZNF5QkAumm5FcR0BzT1sjtyCgob6lemTC8%2FUP7eZPGssIQE3KAgtzDM9lyF9Ywd3BvOvnDLvoXtzSvnTy9vabt%2BsnAdC0DsjRARC9GiecV1KdCpd3pbddv1N4vXsURHB90b0aFadQNGoksy2FHubWtra71ZuI4FoPdGVLnqpuUrQY3u%2BXMe%2FPLBTlE53u0JQfdGDGzhwVd%2BIX68kRRkvqCcTZDcFHRvRBtIi0X4clbjosQsyGkSiUQikUj6jeY%2FLvzssws%2Fax6jdu4koxoj%2B3WOjzvn8465Zaba1hgR7f35oD2poaHBtkUdBc6XpwMaRLcBCOHKF3xk7TVDXky%2BY322Fb%2F4VaaSE3KMavSg1llqa2sJ%2BYkTe0zq0xY8b9mE5J815FrXQx%2BwzExMosucSUY1enAHlQMVur5lhb0Xd%2Fijj7Y0HM7MdLz8siPzFTKqYcuy1O7fX8uX15fUn9j5UbMyxT1R8LJ%2F9Gtz84%2FNGZn3Ou7oBDkZ1ZhwTZb9pHyppmLnzp2%2FZo4jBu7Ts%2Brx%2FU4vK8vLfIWMakx4PYPITyw9AW71fsuYKSxXZ%2FTn5cXc%2BwoZ1ZjArchP58th3SU9z%2FZxgnLVDYwGORXVgFx7CvmeUHDDIz7SICZPVEf9s5cAciqqUVZeCxDyX%2FE8%2FhMJvudjAnssCBXV1FTGAV1kVJP1CjtR4DwSiUQikUj6jSV%2B1In2%2FJpTxIgkAdxHpJn01AOaWbNmzx6pEA9w5aueA%2BqRjUgWN7Pf2jkHKAegjWq%2BqJxNE4l3FsUCfHnov2tU4oi6h3vQij1X77hDUN6pYSStB3lqaixfrmHU1yvRCCUfnJhL1bHQfZ0rjRqt1VoBj4fO%2BCZSDpe8fk29FqjkyqOwrCCXrGOhuxvv2xcXarWyjC9Srl%2Bjr1hTAceQcqxoyGZu0bHzS0Z64X3aN2VKRmWcnpAb8f2GZW9cs1GrJ%2BVYTlGguMXl8UVFXq814yR0Bs7vIuQs%2BtwIaqSSqmNJVt2AqLwIcEIu2VPHjh27YwApx%2FPScqxjuaen45low4Mlyufb6YRX4D3Clz%2BhfL7XMOrqsrhyc2tP1zFArPIef6wxmprw759z8xuBOKBShXfMKzW4V1OzyT%2B%2B6jSJRCKRSCQC9F9342sDsNnRvGPgd3nNphriPKS8QAXSvqAbWAhXPlIlHonlyjexSZREl2RaDk6wKv8bIVetAEwL58trYBhkq7e4mNMlmWb%2FbQobFLhf6qbORr7t6voWVz9yBiF3OufOLS7mdEkmWTJbfYJUaKLrWAqrllYZyMBiU1mpd4PDZi5Gt7i8l9sVRK6rymnfAm5Svtw711GRAXLxmfczAu5UVxC5Tre0vT2HlOMYzFav2epyoVtU%2Fv7evXs3BzjO%2FbI%2FHeep%2Bis6Sq8g5Mu9ruLijr5U3j%2F06pNPPvmCwkMPvXABJfe7KfnFZesAsvKelquAni%2BfClupeT3jZAk5e3FE5T0pf%2BiSqxkXMPjyQCxyBcCXs0IXWXkvkUgkEsn%2FwVQAuxGrEwu4v6vXHx7%2F2eMX%2Ffgg1tVfQVTVv9jDwwwxeTqSt3ev8pzClU93aB12h6Uqp6Qy3e3O2cWVf61w61uMVYJylOIISfr5bDAUVBTk5h6GjlVlwIV8OSif37vX%2FQEiLi%2FdPGJBXeOeoe%2BvO87vdNvssNhh9Hr7rqXwQsuqt1ByN5QfDVXsovK0ESO%2BLan4tPG9sDBC3u7Y1dBQaGuHlZfeU3rdVZQ8bDFQ9MEH774rKL89HS75xMaNny5dCEU0P3HlH5VUJHXllLRX5ZTtumdLGbnyxcjQvsjzoG6pvbGu8dMuWDm%2FsH18O%2BtRhiN2kmMzl51q5e%2BC%2FAkheU1Z6fLNQ080Nu4Je%2F84Me1%2FWUlhTsmunJKqnKqtmc6coO95mBvc4nIIQ8LDiorCjh8%2FSsgvamfrBua3prpWT%2BbK33rrgw%2Fce%2FdWg1pYvkkJQzZvZnX11MpzcpTF7yq8Z0thO%2B%2BYh99S%2BIAhKFfDkKC7v%2F4xUsBkgL%2Fyh4FVjCeQ0yQSiUQikfQbf%2F8V4AtAeB9G%2FBiaAdVvMP5UALn4lEnxY%2BiB%2B%2BBU%2BYuQ01MmxY%2BhZtV7lb0bcvPmzFx194ktLZt7YgNL5OkpWDaKz7z3opuU406DB87t8xn0eree3ytMr0EcBdkO1GtLhOX5%2BS7FfW0qIfe4PT5futvngZ5qWiMp19nSV9pYVliS%2BMz7I7FMfS0lB7spVOvxmEywcloOnYqtVhu4xeX50xQ3Lb%2BjuxPwpzjOGcCV63DFgAkINQmv%2FDe4zf18Qc7FZ%2FPs6cyxrIUTgUms5%2FXuxyZNEJMHPmlB5NPU3Ep8CZRc7TXOXoKg%2FJkv8AdbAIF59ny5ygSV0yQSiUQikfQb1wbAfO%2BvgvQT84%2BH5LZlNWiBb44B5O98OuNr9ux4YEMIWXmfB6jTIel5LJ2d3ymIyuORkTp9aLy3g5KDFKzRynTIGnISJao%2FRPokj40NhUfOn%2Ffz5fDM7un54%2FZF0iNRVPfJD4XlGCxt%2FbZkW5Kto5Yr1zAMdrue7m7M5J2qW1yO7pISIwDl3bRcV5BrL6C7GzO5TnWLy8H9Q4nDlmSrDSaHKDA7Ww%2FuYBHLd0zdJ%2FlsXxxc8QJj3FdEYXu2xe6w2%2By2XPxjz7Xy5Tqgj%2FIZ8SOTGjqM%2B%2FYjhPzcUf4ZM3S6mQnl36nub0RXHo%2Fpj7kbahmEXGDWikkHGMDOEJQ3CcxREZm1wlqJHesV1UgkEolEIukvsHPxrNc0gdbFvGPuBDSna2AW9EUINzfqBsTI6lfZr34x%2BZAhmuc1agPhiIgYrnz79u0aq2Y7E1xzDV%2B%2BFGAbDXrclThdUG7WPKKJUIfmEXLQasyaawBoKEvJc3JylPn1Q6LMfZQz92XDaHmiRnEHkReaQsFuhKtoFZNrgEdOMWtFg0TQx6jywkKlKSy8f1FjheSvPd97tPkDE4jWyhGA0ln5smFj%2BPLCwkKlJy2MHhSUa4AH6M7FgYglIvgx1%2BSAHN0gnxthHi32nkdF6B7QqfMZTx%2FHXdV4uMV1wwwrgJdeglbZlLxKuexzI0TlY80gN6jusUHl6IbuxSsoeVUVcxvhDTLHCMrNukcMyt0%2BbhxffhF8vHWJBrjZgRV8%2BXWFQM8NJyofPdr0tKmnjyFfDphiQjEvDOHKV6yYP%2F%2F1yi6gW5kyKZFIJBKJpN%2F4JMC7CN3dGEkiM76ezgKWMNgxYvLvVd5gKHK6uzE9Fx8n4i9CRrBjBOXoRN4BQE7tsSi9wljGF5kng%2BUwQ4eKZ4XpBWbVs%2B7GyjFYVU%2FLmTuMOIbKCsP8G5YBNGUA2d1YeX30XPwFkJwDbpSf1xc5qtGNcrK7sXJtsKqekk%2BaVITuMOIYIisskPkEcqq7MXNrzzuflE8CObrD%2BjTzHgj0%2BCK7GyvHKNsctDwMEK%2B8%2FwRvc%2BQt5J1fyO7Gyusjq%2Bqz4KrvZu4leIywnPEOg5LD3W5gdnKPZcJE%2F91eBMeIyt9V%2BEWF7G6stAo7HeDLEaXpmKy8l0gkEomknzEMdpyy%2FmTJjOOBrLBLm7hNq0ICMyYBwW8gz9Ccuv7k5MiRe9WssHmb453HuN9em1USGWJyg91yyvqTAZ3eeGceZoX95Eo9Mm0AXz58eOYGc%2BY4hqD8DMMov5uKNLAJcWt8%2FObo6M2xqZ8TbZPHonzRIkV%2Bb7KY3JJrCbhBTgUWB7yxLleqN58KLN6%2B%2B%2FXXczMz7a8zXnpbcOWD%2FW410qBrXWJdGFnQcrtWbyPk5MoDbpBTUc00tvIjUyCqIeXWxMR9fZKfqZ3LsgtZY%2BCrIy8mSkk%2Bj43dHBn%2Bfuq1B4hSEi2QabNlKrUsWqPYyoeYwI1q7JwVzpfP8cY6f8Jjfpqx5PN8Um7bt8%2FG3Ca9mPxcbQbOLMXV4%2FK58mPx8d40tW%2Fxl6kurtykZahuQbklxBfoBAZw09ZmXAqHqMfUfN7ElYcixh5Ok0gkEolE0m%2Bcy4A8LjWR%2B7%2FOWtEBakUwpm1UCMmfqK9fuHEjbpCswXLaCf911ooO61gCmxZGIfkqNvvheZ%2Fn%2BbrGxsa6rP86a0X375ktJeJyD1wpo6eOkAvNWtn5aT3ChtUsWFB%2Fi7D8EZ%2BlsivJt71xNyUvoGetBMZX7vRzyy07xeRPgHxXqK6rW%2Btz797dyJcXaAqoWSsBeY%2B6T%2FK67T79ri1G33ZSHlXAmbVCygFB%2BS0b6%2BrqPD6jsdKzm5ALzVoZY21ubs5E7gUyvxGTr6lDO9C4e9UqkAvMWiGOgUITorsxLUcmQs18HRTs3zdBeNaKeK0LjVKcMjYmZjQn75WYtULXusjuxhKJRCKR%2FB9EDBo0XItApIE7JMT3qmoooiSwB%2B1u%2FLCCkHw49A6GZ32LBR6MM6wZfLlANPLicyq33nrrt1tvXSXixlZc2XDSbCssblhERgxfjmL7kCF2UGsp%2Ba2MG2%2B8cZvTtVVYPkRjs5nNUNpOytGdi89nBVTEgnJUA3e97PVuXyV42bOjdBnWqAxzsn7csMQxlNxyDns2dNByvxu58Qlx%2BXrYDhuWYaLkepDblL0QO9UHbPGiEQBLSQOKnhWSX1aQbdZZMiIiEh2mHeNoueVsdA90YMRCyZkaWTxUVG41G7Sm3AYoO9oxLnkMWVVfgBHBED1AyQPuxWFi8pCCqET4EBvBjfKZZNqaIXfwOQV6So45c9RGEc3p2dkZIDch45IJuZoyB5DyqYGYJhy4Qkw%2BdmxMkjodciZAzMjtmY8L8OX%2FGtkiJ0hKJBKJRNKfpPbC5Zox47%2F2%2FtyE4EgXdfiBmFypPUGKAL58DkLvsTB5NVDGwBlzYvKOUchcoAM5ny9Hadx331Xmwx4LJS8rBe9yNnjvoKA8FdcceOrlrjzOgA9v0EI3iSWkdPPlpe5KT7XHA39Vi8o75iJs3Wee%2BVXHZdwn3CFm8%2BBzPkyO%2BHA42RoA5R7oQ%2ByuLnNXH10nuPKhCmHIkrAmfo36OVB4n5%2BcPAXcROX95SD3uaur3TCqZh3KxVfeAXyF8FceNZjJh50ENyWH95vNWTy47uDRvq08jPHss%2FyVx7FvBpIyMuLwITq0m5og6WFUeoTlHbhutnBGCFlEExl54EA4BCNENHIxyNfBug8edJcePXpQcOXs892z9CauXOkFiPEQEE6Mr%2FQPuAQOCspd%2BGON0cQg6lh677FwV67MdJG9wiQSiUQi%2BT%2B4HVB%2FWV9cQ%2BRDnKUQomZEEOXA8EedV5A14fEmMbl70exqRkv61rIWvrxnML0ZMkIiuD2h6nULdYV7FLq3bj0gJh%2FZkj6ipaXlEFDadmgAX84KbObWwlbD8OF8eVZ9yZ499zG2ubyCQcPti7ZtA7nTeai1ra2tjJCjuzg2thjclHxhhSI%2FvNXZKvr0WuOOH1HW4vQeanW1ti13XsyXg7s2dsOG1A4MGrjbX2%2Fq7tPV47KdXvHn9prqshZY%2BKFDy71tH39MrDwK3ukNsbW1qbWXUfKswvvqcdmuVnCLy1taSg85vW1t4Ha1UfKIQbXFtbXFHSAfzpfDNV8Jy14ObuHn9k3VhxAXrBvgy0NGwabnoOJUtvAQUt69DZbN3FP7IG8D0L2OlA%2FC%2B7yjA90hw2O48i5YdqnqFpVf3sKAxbeVeksJuRnudrVzH8CV529zbluuREyAoFz9DoUB%2F%2BDLQ3pV4UH%2BGLdL8pGjMmKR%2FMPeuQdFWUUB3H2ASgJBEEUSaRAQrCKQRIkhG5W4lBRuBBaEgpHGS4wei7RgLWiSFFEIkhYiRRpKkFBJ2ZSRaBo6VjOWj7Amelg208P%2B6Jz7fctScw9dm4b64%2F6m6R8%2F%2BXH3%2B3a9Z88950gkEonkP%2BLzz99w9Ao7NXXqP52dFgtEnnoI4FTwk%2FImn6Z3FIZ83p88newD5pgbF8ttTlpVVdX%2FAFDHqeAn5XCkpukgMPTQlxde6MKVzy5G6QE2MG%2FDhvhI7sphQnoH5EtWcyr4afkDDz1gV0%2BcuPoU75qpUNsdFh4eE4YFC7tn3UXI94O7jqjgJ%2BS9B5sONinqjx8a%2BoKSh8eFmc3hMY%2FvpuUdw%2B4LTEbBvlGonsjUh37ZyZfHwLqhSj6i1ozy1%2Fn3vM%2FuDjZBE2Ix%2BQj1L6Q8PDzMOcJZG6GdRcs7mPs8fzi1Jip%2F6P2JAFOPKo9Q5ObdUx%2Fny%2FeD%2BzzPVDMetOptukJIPs2hJuWzl7PnHHn3ySc3hHLlHXWTLkiM0Op7bTdfeiukQoTkLqDeaYeQD0%2Bm3IBw32r3rEgwufc2RV815RxOhU09czN0CPvCDl8OxDIiEa78009%2FvPW2x24E1DyMRCKRSCSSMWPTmlNr1qzZdOH5mxjcitwJDPYNJDmJwN29evMuhZWxVneDWAn44gcWb21p8Q%2BGynGAL08A4uKCguJYMzCuvGHRIl1DTcPOnTXV9Xpn50YxeUsQSj091wHPUXKULsNhMTAbhC%2Ff3A6FD%2B0p1Y3WdjiGXxMpJHfVMDwnKUf3S0aRr8hhg0l8uSHVrobqAo1G39hY4Oxs6WyMFZK7M7du0iRwA%2F3cb50TQO2bc8cdOeCm5SntSnlRTadVUD6lCbDZJp1ns9mio23ccaS1CUbTMnNEyN3fGy8xGn3L%2BfL66oWN6LYWWq2NkWKprZtZFcR5LliFQey3j7sW55qLi93dU1IMKfGGp7nyndUpDUrZRX1np7CcVWC4uKCbkG8vzZ2bmZs7J8VSGm%2BZm5nOldc0WnQ6vdXqodXP3WUVk%2F9wqA1xmdx2Cmj7kTsAqGA52DNzLSmgT7Hs4%2B7tYdm69kqrtbMBzq81hgrJT13O8JykHIrjxucZpZbi4rlzizNz0zLT0jK5I1Hq4SWvh3daY2NlI%2FQKe0tIDst9GZg5E%2F6Ha%2BfGYTMik5IiQwcyQkPT992SvpL%2FCWeNjV2phDWhbxkM4yQSiUQikYwZzwzz8MMw9v5L7m7n5Yf%2FBHc7NhEguiTT8jdUDl0O5IznFrxGH3pA4XKEK7%2FCRnRJHl3%2BPKMNiwtyPPkn%2B6Pz2sCs%2Bh%2Fgy6Pz6C7JtHyEm8iN3B%2Ft4X5z73CvMFdibEpehAOjqNzhpuQeHlf1LrXpmZuWX5nnOlwwHSgsV90u0N2YkDcthWa8eWaz2Wg0mmvJmS1LVbdeXO5wk3KPK3sv%2FSQcAjVyfCXWn%2Be5q25xud1Nj5S%2FP8%2Bjt%2BLk%2BxAlIpR8ytIRnXZLxOSKO4ru8YXyq%2FKO7xlmgF9usjTZPs%2FmW2i%2FLCZn7%2B%2BAUXt8PZbXA98fZK1Dtm177l7uZ0Eeq2VTR%2BoIynfcDtw5eo%2Bv%2B3dt2nSvA678RicneSpMIpFIJJL%2FiImOSIO85gqF64BbTxH%2FVq8EYGewDwjF0dFici8GRBqjyKMBHMdy86FP8qHynpqLHxQU1FPPaBSVu7lhmsPTbTS5Ug58X%2FMC9%2BT5C85w5aANCQlptCKd1nnnJJ%2Fkdv4ocuZu%2ByS5z7VvVc54Wh6whLnF5WrrtdHlbNmwN%2Bxb9T4%2Fqrk9KATcQBQS8Jq4HKMcWs6ikTZ0J5%2B6HaIaSh4w7L49SlDur7idyagWA4L72vYng3vVaoxqCPkIt6gcOxeDG6NaWn6oeb9rX3Jy1ChRzb56qxXc1k7kLcF7jl2JYd2jnhw8DGNwDLhsOqphclg3qnESzT2CcjcAO8%2FRcqd8IKCOjmqYvL4e7rqV0UnJ6a7EtNzJ6dcv%2F6ZzMX6sQeH%2BvHnz7mGMk0gkEolEMmZ8jHiwvsXPPAOHVXjXvII8q7AGoKYeIPZBkmLyFYAG0T0PcOWWgj%2BRxpUbnU0JpkR%2FPwCKd6eJy5Xd844dO%2Fjy81PVon8%2FrAr2m8mVO5v8TW5eCb6sZPgc5DnM7UzLvbyMEeZUT1b1P9mXkJvd%2FI1GdGNLL2F5Tg5zg%2FyZHYTcmGhMNfuCm6y8H2%2BKSHTzVd3QT0xMDu4c5tai%2FAqu3N9s9DdG%2BKGblCf4s%2FutFGuHnYsc3dodz5ByY4IpwewLbrLyXqtGXWqOxSAuV%2F7OM6Q8ONhoxoVPpivvtX%2BenX8OcuXvUHLskuYofSfup96xbkJOPe3KPPsdAFd%2BrADJtdPAHQbJFk6tnP6E%2B%2FJLd9a3%2BAqAK392DbIJwVzLJq48wtXVbMYWyIg8FSaRSCQSyVjSfXbfiRP7Tnffo3x3%2BNI%2FncdyyfrCCVMLqx6PBEIBIfnTRkNra6Bx78CSJUsGBgb48kWLDCVaDaAvCSTmsTyRaElNtZhKq6pSHlm4cKFYjmV3bUJMTFxcTHpGerpzeoYTX%2B7al23QmM06Q362gS%2BfmOoVHOwf7LewsnJGYaGg%2FERrYm1tYu1RVKcnaflyjaGv3znBc5KXvj%2B%2FhL8t3p0IIVVC3JHKJ5qbmwcrxeQDgXuOHt3eejwdSHo6g5BrXLUmz0kXX5zqYdDy5QsT0%2BLi0mr3PFHYDDwhJj%2B9fuDs2Ywlx9Odwf10egl%2FWwz0%2B%2Fo%2BUnlUS81juWtucXd3VWl3YeHb2y17CsUyDbesH8jIyFDWDXInQu6qPfZISvyHpa4GQh5ZBXe7shDoy65YKiy3u7Ug13PlHhpDdr%2B2IT6%2BxqN%2FQYk%2BkJQ%2FAe4nKysqCgXl80CO6iRUw8r5cvfs%2FEBni0UfuCA%2FkJLDutH95JOQVRWVs7c3rh4h5DpdSb8rRiOu%2B%2Fv1lHzJQqByxoxCRCzNwT7WXnIaZrR5LEggwJWHApA9vmUecs%2B8cRKJRCKRSMaMXQz8xthZizEJ98yE%2FUyYOrZAJKoRkzcUNDS0D0%2BHdOXKs%2FFUGKDMa3iRiGp0Og3xc0g5fKVbXWP%2FrpyS5y8FqTo0b8qNfHlxVZVdrRWVtxe0g5yuUWHyBQuaHEwhOqkVLD%2FAgGniB2LF5EVlZdU1djctd9fQ1zD5cpPetHYttpYCoL2TCJsbqqura9jDEgEYSLndTbTimr38559%2FVtzi8on%2B9nqjyeSJLyc4e%2BhudxPy6%2BesBVT3ZlF5sKc6L5468YXy5ORWk8mUqBDOHdB%2BFGbelyMngPLfaCM9q56Sz2I5NaK7sdDPEZhVT8jDRnY3nib8c2jEZ9U7TTjf0VsEkDPvJRKJRCL5f3EFMoHVsTyEcPMwxyEPE3ranoZ5iegntmiXxjHUQEweDcThsavgy4GXuXmYQHfIwxgG8FvaoYwMJ67cy0vTrsFTQuyY0FRBOYRAy3D%2F4wkdjLy58scTa%2BPiamvhe%2BEZ2Z8kzSDkfpoGjX2vJSyH8MsX916TfCj5aaOpttYE8qRZR7oeTx9Njm7iIA9RowLygKjzziPlA8btmIcBeWt3dytfrgEayKiGrlEBOZsyQ698T8bZs%2BlLnk56On%2F9%2BvwkJ37M19BQg1QjNbMJHWdi%2B8WToqJcXMhZ9bcsyZgBy4ZshGXu3LlJ5MprqKiGlk8BOdvtk7Pq5y1R3V1d%2BfldXfx77u%2Brq9HhwS1gwjXTxeT3QdB9MbonP0TL0Y1ZmOyut4mXfaYfyJ1V90xh%2BcinnZCzJAysXvkVCLmfrsFZedqvuYYjJ6dDThuPvAxw5X9Jw%2FDl06Z5bPaAVonTFcZJJBKJRCIZM2YiX7K2xQzuFIs7HSNbEN41zgqYZsED365i8riguBVBK2Ji%2FPxg9IjvdK588dB3Cu8gfPmiRRpETXS4i8mDLg8Jqwuou5g1Zgrny4eYtH2o6R2YnkLJE1MBRa0VlSeE1IXlBKxm7t2UnNmHAu6wofwn3jVr07yCzQluxcrQmuLZgi97GC5cce%2B%2BmHjZ0f3VHQFRHQcPfnDwJ36CB4pNzG5V8QAkeMTk0%2BLCfH0V9w046IW45%2B989VXTUNQdNtsoclx5FXNviBeUx%2BB2l60buOYu8p63d%2By02XZ2fUDKA6sOHGidA%2B5zkjvcM0FO3POD7baOZtsqGyWfGldrmBNYGx4%2BCwf1hL8uJvdDNXPD1puQBx1Efrd1gRvkRI7F35RwjjmWqX5hbLTQxbOuAfjyjzrY0w73%2FSBAyekcCy23Bxl3MfjyHz5CfrIjcywSiUQikfy%2FuNPOawp0P7ELGecDdJdkBqvgF5MHqYQgAXw56ybm6FxMd0lmPA8IylUrQHa6OnEU%2BdnOt4QcpQhRRE%2FKmRvlZ7jnp4pxbOby3NzMeCAlltu6temNkTwjLlfdtBzcc%2FQ6XUF8PMzO5MqdNQx7jsUgJL8efm488CFCbPavLwb3cvy5czZUEnKtZmT1u7icuRm7SDkAY30KYOHE1FD9SLe4HNWqe9eHs6mRpfHxcyyWORtI%2BbstykjVA4zlglGqH4ZLamKGyI38qj7ppxk%2FO3F%2FwQNrN7zLuB54N1JIPgFTn44TX9MFopGZfPmBtYD6G4jK7YOkECI3MhyMqJOnhKZMSiQSiUQiGTMi7aiFpeQESceBL24eRocolSwFiJA8thTpATIzM9evDyUnSLKYBccpLuPL%2F0mORaP8HR1AlJKgHKyoXYbbLULu%2BDmYY8kVkieajYDJTgw96NE1%2BlF3esqkTnF3dCi7ZzH5BOwJ5ejxNZ2W25ZW2LQILY8eam4eytOeg9zhHlXeu7TiqYpeeKT48le3FhVl7e2y2d7eX1a2LWuTsNyxcb%2BGlOuWgvypCr2elmdl5XVFv%2F12Rdm2bWVi8gTlfieqzOLL8W3U%2B9RTtl4PsBPyrKysnQ1dzTXV24TlOnuEpWe4c6Ma%2F2Xs1lwzyq15tgjkZVszMrZuE5dH9vTswTf4%2BiWMe7hy5Y0GfuQaQo5kIWWAmHxEvTzZldge0UxX4MuxUSKySWGcRCKRSCSSMSMWGRGy8K5Z9xzjlVfgP4Sqh7nuYYb4BMnIKoVHkCf4zaaeO4ZstVhatsJ4%2FJYPyXoYZcojy8MIylGKPAlQcpRuyc3dAqzb8iFZDwNVODCgT3yC5JOlexjK8qsiCTm4v%2Bvr%2B27dlnWE%2FDqshwE34MJmbYgQ4QjutICRL28BeUHy%2FNx1ACHHepjLvdvafHxcJgvLR7r1tHxL0bH5849l0XKcIOndNuXSNp%2FJMLNFWO5wjyb%2FbmBwMP07Wo71MN7ehw%2F7%2BHAq%2BAlcElPV4Bujb68JXPnWli1bik76%2BJzc8ty65yg5NIJQpsdzKvjFKu8JOTzkc6OANHi7r%2FuQrIcBN%2FDvVt6%2FAu%2B0opAAZB3Ald923%2FDT%2Fu9W3rMPtg8dcOXYdORlhjwVJpFIJBLJGDPhrV2bAehUykKXWO4JodmbN488E8H94neYZxlC8okJ2xsQVkOdWc2Vzy7eW7K4f3smkALw5VtVipCsNWI7GS8%2Fkw4hG1KhvANOUHWkpMRXApS8iKF88ysoPx8mSJo0ZK8wVb4fTm%2FtZ25aztTHjpUBwvIEk5tvdyYUrKc0NlqrI%2FnyFCAe3Rs6N1QSclTDwJxjW89BbtSZPH2%2FsVZWdgKV3BA5dPvx48fPKqSnn3Ui5VkWrd4C7m3CKwd3t7Juq5X%2Fko73wpTa%2B8oUHBgGQ%2BZYsrYWFGzdJp5jOT%2FY0zdRud9kmmMCpDnUUhtMc0wlcizAsaKiY%2BeQ5hgf7JvozMQeiIEvd7ipHMurLMcCgFpYfqEfe39XpyBWKz%2BXquZY1CTLv5djmRbLsGeS%2BXKWPR795Bj7YFuDyByLRCKRSCRjzbN21iD8f4dDGAH2Md%2Br%2FmYu%2Fm3YnEdMjjGGY7t%2FL1eel1dXF7TiSDdQ3j34GpljcXRAfkxQjlL77ouSL62rCzlypLucMUjUNOgQNWnQKyaHFe%2Fd%2B8DeveAeXd7dnXMkZ3CwvPwMfxgM67SWk8O%2BwnYbLyrf%2B0BDWUNQzyjypUxenhOwqnzwzEa%2B3MsNtPhQuIjnWCDLEaGhOxer8gqQl5dHDa5aFTVIyP1xyau9vVe7iOZYMFCsC7oAeujWhawmp30GqPJBnGe%2F8QQhx5c7KicniuiSTB7MIiMWVV5RUbc6AB%2B1wTOvUXIvzFhcoLZK9pwgJF9TVLY3qGZbTUjPtldeeXXbvXz5U6tRfmIjQNxzD2UBHkoXc49AMXkWPu1B6tNOyStAnlMO6hMnQM9P8LD39xTIMWG38avF5Pixdq8Drhw%2F1pA7FYieY5BkefHFG2%2B8Grjp6nESiUQikUjGjNBbsVIeSuUZ%2FInQociIryB510y%2F9U8Ry21C8tnLH30DuPnm54G25%2Fnyvbq9exzHmMzc73ATogEiYqHlB5Yo9fLAYUKu0%2BgH4mKAMCBmOj9R5HcVWtWZLaLytWsfuYq529raDh3mr1y%2FfcCRhzHwd69%2BdZffjfgAdx8Wkx8ogArmQyBm%2Buu48vXQTVpZd3h4eNhdxNa5ru5y77sH4ZTQoI%2F3KeGVF6z1PrwD5IcP77hO4OSYgQgali3z9j45f9Dn5IMnReUFWLd9BzTYBfczfPm02pjhdc%2BaBSvny1fXeXvffRJ%2B0smHROUH1qalvftuX9%2B7SdfC2PnbuCv%2Fc1QTyJUHL4NAzQeBE0o%2Bh0XlG9SC%2Bc2fEfJpcbBsdd3Uyi%2BMKWfP%2BUXX4oeGWNCAFfMFw%2FNrki5lcnqePb3y8Ufs7zT2K9wkJo9lqOde53ETdo52YgrcT7jr2LkwiFhulBGLRCKRSCRjjB7xANSxz7xr1D9W50KXrORds4lx%2FTBCcq1AxbyHMSJiyH5Ne30oV94CsA6%2FyBxR%2BQi1lpBru7qGlGv0jdZGQs6kSDy0eZotJkdzRMRi54igICoacR3q6upi7lw4w9TI3Z9ZCoBcBYslt1RY%2Fj1Lmi3WUnLDENi1sOx6OD71Hn92psZe9k%2FNY6HabDmDOwTdemLl8LKblWVbL7r2Ulqus7z9toXI1VByXdP3Eb1NrI4lkCs3Dg0N6XrA3Qmb8kuvJuR4X5qa0C0uhyfNZmuKttF7cle4xIO95HRAYFFvuEWhWEjuwZ5zd5s7uFFOlP3PxWVfhG4mp1u9scGhon2dPQSiEXePnvr6%2BjdZ3A%2FcxJU73mkAJafn2QcCXPn6ffv2hd74Ih2NoJwxe5hxEolEIpFIxoxdpX8%2Fq%2F5h5HYV4szERDtqC2QxeXsuFbE45IsXj%2ByBzJd7IUQHZFreYHFELJTc3nkZoeQotc9S9xSWg330%2FMmpoI6OOxTgvModJ4ktOED%2BHFpeYxmuvDeQUyanKPvHayFoIIOPJmdobmXzODd5TS2bYZOQkDqTKGx3uK%2FlBw0eIG%2B6zwYxwJXRWgg%2BBOXgPnqe2ivskqmE3OG%2BlZY727Tw%2BkW768XlI9zESPnpMeHKnBVk96yv%2BXI6D0PLS0e4Cfl47IBsn0w5Aa7hz8WfP3%2F%2Bgw%2B%2B8MIL33777YNOYvKGoyPn2U8V6YDMly8AkpOVX0FQvvlrqFJx1Knw5X9ugMyX%2F4VxEolEIpFIxoxkZL4D3jU4KBvP60%2BcSEcj1Y2IFegE3uoUk%2Fcr7Ef6%2BrjyyYmJqQyl0RI3IKifq5AGtLe3vyUo78vOzs7Pz8c90Hy%2B%2FLLUBDUWwmDInyt%2FbfGKYXJyVpwRkn%2Fa2tfX9w3y6aef%2FsqXB5sSFVKRxBt417x%2BpBxYkBxhwgKA8t%2BE5LNMSnR3gSeWlydsJPbkI%2FuJuRPyuiPw6gVGGAYDf90oJn88EdxuqnuyFyV3uPWUvKtrwf79ySX5fa2Dg%2BJy1Y37cn9CTs9acci3b98IT02Je%2F%2FGs%2BsF5SfxQakDVgMfr%2BDKsyxKazyVn4iXHW72%2FAdLWjfCASZB%2BeBidQhPFLAq6CRd0l8G0FX1H6vPucoZQTkjSCGEkKt9Mxhl3E4K1rS0vUhpD2OfmBw46YAvVxuGrFHgy%2BFjDVmpMk4ikUgkEsmYYbG3LkaIHl%2Bvq3ytwrume2DliRP7Tnfj8ANgnpB8kS73mMJWZA1%2Ff4YohfcAd3%2B2stXQ2tpqKGXzHhYuFJQv0hSgtwXYsqWFkIMU2Yjw5btrE2Ji4uJiMioHsrMzMgTlsC3WQxvdopaiLbTc4Qa48tOtiXG1ibVHM2Y0r1g1WHmPYPG7yVmjy20BSDkMs1cxAuZa3jUDxu1Hj5a2Hp9ROfR9jrDc6J8IEUFvT0890LOSe41AxHJ6z8LjZyuXHJ9R2NzcPFgovHItHOZipUtQSnLr6Cs3wMoN%2Ffwqn4ULKzNmFBYWDt53eLDwJeHKe%2Fc3djA3yLmFU1932%2B%2F3XVQ0gvIMdCcl5Tc354vL7cseRf4He%2BceFGUVBXD2wUaJEK8QjMhcAsQHu1AGYfGIcnFJKSRBdKVgNwpTCqMU0lACtqI0pCI1K5xMrdyhEDArrHiE0cPUnJ5GZmWNkdNLZ6pz7n602tyzXRlz%2BuP%2Bmmb4Y%2F1%2Bez92dc%2Be13qXezsht1kM6EZWrxaU6%2FxqlI4xhJKf9Gr%2FgS%2FHt7cFTo%2B3PlNM%2FsqjQ016DL4cOTbED9yTTwecO102ITLHIpFIJBLJGeRcRGU8C6G2DJz4Lz521nMLPzYAK5YAc9iuSTF5IKDShUeFhUFdVeilXPlkwNVXz5VvgD2UZYUM3PgoKMdqLpU6IJTNsaXkIJ0%2F1O07jpDD4OXCSARqWsImCssDVOpQ7xAs1QmZyJe73CC%2Fk5KnMHl0aIio%2FCyY8QVyODdmGmi5q8t5DF9eBvJIpAVqeUIF5ELRCMpdbhxmQMpbWNEelBGJy11uQn7xZOZW%2BstJeXY2k%2BeOBvlFYrcdhgd7a4x0VRjKr3W5oR7uOb48G%2BTRwKnIw6BoUWd0ukm5y41yaup1KsihVBEOEiIqh1e7zkhXhTH5%2FBMmgRHyeex3DrTAW01Ujstv%2FdKGysL48qERh8o0MLKD%2F%2Bs5wLaLEA%2BJRCKRSCRnjIudLPHUEFOJxXpUcHc%2B5A3gMUqSRUw%2BmRFZpGLRyH3D7VGJczjgoyg8xgbstkwTk7OA4GBjWPhBjEaeE%2BhRIeRNIIfHGIBMYTm67fP3XmIfuGAULVfc5HbIuG4byOEx6M60iGUalmCI07i54Om9g3a6O4e5Dx5Et3u5tze6Mw1ics8iaEUIs9c%2F3dMTcvczWZ705OLYgwNH2eRiWq6BezM7k5BTEUvjHrt%2BcLAEIxZCjvf8KHMT8phumw0THQZDEzR%2FNW0idJzunIP2PT2DRweo7pyzo%2Fxdmx6J7ZAxTYp7tqHJNDtTVI7ByIA9pATcIBfYMknIFXemxdckfnIWjERnqcdcAEwV2DJJyJuc73CLweHbJHhy%2BGsNA5E5nr6sq37qcLdMxpyUY%2FHc5CGRSCQSieSMsQG54gqtUWlOFYpY6Mf8%2FWWlmLwSKdPonF23F4lELMRjEHq6MZGeQDQ69sUvIReIWM5On5UW7uOT6%2BwRyN12CvI6tRrc%2BFW1QMRCnDxHleMTgG5ALypHd51GB27cFEjIXW5Sbjaa%2FQMGFe47bTmWs2cN9Q5h6i2KuO3YkOJ%2FwSiyO5%2FekahWQ1FXbW1%2BDHe21Ml5mAg3d2eQMWrwOTF5GLpHG7XoLiXkAl31N0TqgXgEJmHEi%2F3OLw3DBAfI0V2aP52SK26k3IPDHMiurGDMAVYMCMrDxsONN2qzs%2FMBrtzXNU%2BMlF%2BJb%2B9TnW6s9NSnFccAxHcprlliQHl5udzHIpFIJBLJ%2F4vPGN9%2B5qvMACXnei5hsGE6IlGNmLwGqa7RqFT4aYUvLwPuuusuSAskJISN58vT00%2BMa84SlFcjvWl%2BOCiNksMk1bFjOzsLCmJDQvjym06ekjxSXN6bkNCQ4weo3chzmztzC2APOV%2F%2BUF5lpcPRjdTV1XXHicv3JezIaQD3SHUELe8cHzpQEJJIyOPqlj2ErELuWTVNWL4joX0H7P2A%2B66NIEfoFnQ2Ng7oExMTY%2Bfy5Se4ReXfgntHwvgdaclatZaQX3FHairIH1zrVu5ST5mySizBcye4dxSNj01IM2rdywsGBvTxiYk7%2BfIpjjpgGYC3f1mMkPw%2BlHd1LTCj28%2FPjTw4Pj44PnHnziSuXHNyVOMrJH%2BuGu474KcFKHkKEB1dAOC0NP4ymPC%2Fv7nwD%2FX39hKTY2IFZnuVRzD4cmAKzEEE5iJCeRiJRCKRSCRnjPglCm4mF%2BtPJt6DgzIYlDEXECxP%2BptIgCsP8h5iRAhg5cqTkb8X%2FwnLT5iaTMmV8WjsYwolHw8MDaWN3S4od7lpOXNbreCm5GoVEnnkSKSamG5My6MZRFWY3hvU9qut1qvt0JYUsoKUFx4pLDRGqoXlr%2Fd1dDQhNsDSNJ0vhztut778stV%2BKSXXolujKSzUqVvUWkH5hifq66EJ5F6g9uWX743hy%2BG33WP95BPrUUg7JpJyjQbuYCQnD0PKO1xuUj6CvdKs1uYfITOQRMiHMd14YvL40FgIfIGdVDSiD8EX2oqjK45uQzk3eTP1tkceeeTjjz%2F%2BFrj%2B%2Bo89xbq2WJQBXTzOtq2JfDm4lUQvKb%2F11luXL1%2BOzwAQlONlAUy0MPhyJ4lJCCH%2Fr6Ybx684keZmD4lEIpFIJP%2FkVcYGRHgvmsh%2BNcE9DYyVSH19%2FRTusFmETN64NsuV7WqBhtxddfA18RRBOUgRNpaZkGMCJd1VkkYlBBY2tcJ85ubW2rXicpf73jV8ObhVUXRJmiJPTVmY0go09771oJjcs0jZasH2aszwJAcMR5ElaYo8tb8%2FdeGDa3tbezvfWisuRzW63csVNy1v6W9NXbu2trW3%2Ba21cWLyBSe4f%2BDLR6I8DAPQRCrNgdmI1v7cftiheOutnaJy35MjjXJKrrnkX5rfU1L7W5sh91batbxrg7Dc5Sbl%2BJhx5D57Rf7gMnipdXZ2di3fQMgFKr5oObppeUpqdj8sKWru3QH3XkzuqvcqZ5BPcP4Yen0lygG2O1%2FBYziQJWl3XnONXKYvkUgkEgkJZg%2BceBEzvsT4bjhVYWc5S7nCwwD4CpYrj3MSo1ShH%2BN%2BEG1dRPe60PIwfDDrLaCGTcV1mCq6lYxA%2FoF9Z3HlRZ3Rjae6QXJEBuyXARax4yfzT16pUlXmA7W1hu%2FtjYeIz%2F%2BdY60BdGDhZld9YaSa3lUf14dydBcdtS%2FKGcmV90%2BYub9Ab2ducTm6Mb9F97HEdfeZbOC2VIFarbVx5VBLl7U%2FKMh%2BDtGdT88KiyxsAbmWkjc5j43qYoftZuLkWXjyEegWld8NK4dgBVBLS9ECoMiTktfu3rfoiNbUlHlPKV%2B%2BANxWb7o7X2TzI9VV37voSHGlJRP2jZRu4l9nPx6b7s4f7ubHGNvuVrNpHs5NpuWdi8jufFp%2BMnz5ro1989jYZJybzJcfO%2Fc%2Fqgpb%2FU6M0tPPmvplS79EIpFIJP%2F67%2Fkkj2FyzTUPTJp72WXfToWacURMXuRkAdvjGMv94Lf4o7ORJUtYKHRoMVde3dDQALXyETU7EFH5AtcHqUR%2BpPHRXZHpEApFRmIopC84xJfvS95XvaO6ayT0CXzWJSb31WILCeLrm0g1tqcvwlDIavX27om3lnAfc1n1PmhIKe8qB%2FlnhJwoJUubla5TJ9Jd9T6NixoDGu3edmsPPIaQt7d3VftOqAG3uBzdUTmBukQy0jiUHuUDaqvVDh%2BOD1EnT6hK6OrqgnMTcrKaKy09UG28moo0Ft81Nlrf2AixkN0aHxy0hS9v%2F74K5Mx9qr9zbBi7GiIN%2FslLAvzt9vj4np7zzz9k5z7BqdUJ348fcn8rKL9yPuYPlBSG1zlexKCyEqt9hN1%2BzkfbDhFPcOqOhvH7htx%2FfiYmv941thiewmgvfo%2BKFUMhq%2FX8Cw%2FdsI2Sw2amHV1OPhOUuxrmsaHlsknc2z42OgpCIb0eQqGe%2BGCu3NNz%2B6Tt%2F0VV2OJDLBSaM8cZCm3xkEgkEolE8k%2B0iN%2FISZNynK33HgKcts57Leta1yQk6FjVCH89BrJlMXADu7DIPDFBuQrQxcaqWcf8BHL88l1ItJtBZSA15xiN5kDxHItWNSRntTKEHD7ojR07NihIjxcm5WZzYEC4eVaUcI4lFpfpNzTEJjUAyQ1zya0k4AY5Jm8oeYA5MMOYnp4TJZxjuSjZ1fTzwM6k7YR83LiCICCeTN7gBGRzgDHQ22z0Ec6xJMGxgaQk1vaUPJfcSoLy4HgMqSi5vzl8ljEjMMdHOMfip9IA2qQHtHT%2FCQ4hRnkwyPHC1ATkjIwobx9zRgCRY6HmgGkfeMBP60YOMUVBUDDIWfKGnICMr%2FYMH%2FEcy0gNk8fG%2BtEnZyFVMLKEXVhgArKg3BeJmLtdab0nh5AVsFc7u%2FAZ7bxnQ8i2INtkS79EIpFIJHwu%2Bv16ZTEkPZVYPPLxIyIWco9ienLr5GvdTiWeo3CDAj%2F4yEnPUalOuSoMVldWdY4bQ68pHJK6l4NUpSKqwig55E8W6a3%2BIVX7HwE5t19BOXK83p1cleaTBnKiKoyQRzY26kv0JSEjRiSu37%2Bcuy%2FvayeFhcoPdNilcbrF5WFWfajVjpOVz78wlvtV9Shg3ORrff2unTwOf6Z3tjA3BhbCJ7daG%2FU9o0efn1h1vO4qrvwCYN1NwLox%2BDMhd7lF5V7peqseDg7m1BdfTOHK0T3q8nXgHsWeh8jOFtHRynZ7SNWv7z354ovvvsuXr2dMyEnzXc8Q2tkiwllRYQmf3vHwww%2BnIHz5OYh%2FxujRGQHsx9MWsUz6%2FYqrbrnqb7jy0f%2FgTEQstFwikUgkEolAbuSMXEd81wpyC%2BO05VjEd60EQoPMLwz3OZaMjADyOkTp0diC3LFBQHAwlB7xLxwd5fPLm4j7HAukd%2FyJiIWUN4YVopuWQ0QV4JS7y7EE6gL9w72N3hixCMvNJWnmAnTTJ7c2BrzJcJdjMevgnhvV2iiIWITlxsZQYwGqFy8m5JFWfYlT7i7HkqEL944yB6ZhxCIsX5dr3aXIgwm53im%2F5U23ORazMSeHjFhEIg1aju5b3OdY0meNIK8z3EjjvGirvoed%2FJbh51gEIg3iwlFDb7Uzn2NhF77qFkTmWCQSiUQi4XPnfVjkzaq8sQVlqscwMT7j6fmM0YeKWOg9DYwdDE%2ByKsyVBLreg8P5uv6ion6dmYhYCDlakS6EkE8GrnWfBDrbrOudObPIOOtUIpbra24DYE5a23Lg1qlUVRiyGWp1qDzM2YEZ6t6ZWWA%2FxYhl7NYnDte0dRBBA8rRPO7ayWMu2Dzqckruk2EsyspaYJxFBBak%2FDDs4WlzJ8dFgevUcHCYmHUNlWMB%2B4wZC4zpEFiIy4O2toEb5BCxUFVhmyeve029bt2oPbTc33%2BWccHdd8%2FMSReT4%2B0qKSnpeaKtbeWIQ4cO9XiRVWGvafxeU%2FvWXH6du734YH%2FmmZk5gacWscQmKZEGWRU2Zhz8P0qZFUZeJ90485kfsnLShxexkFVhF9Ss862Zr8wKo68DZ59x94Kc4UUs9GpKzqww7nU2egIbT2tVGLbayFlhEolEIpGQzDbMdrLaybBnhQ1xDBk4JibPZuQjBsNsrvydIZRpYVz5viHaW1uqDv4gKF%2B2DLwHWo7jLTDw5Q6gr%2FzIkdccOC9sutAGSXF5C4wmaqHl4HQcbj1sLjzcZLHYpnHlKm1bW9vjyJo1K2ruEZTjuQ1IkTv5rsJdTeVNLYcpuSoyWlWhuNdUP%2F6OqHwZHByYvcKd%2FPDh2m5TaXWhxUDI19WoVAvRDayoFpbnGw4weZFbecQ8h667ttBg4M8Kg1FnR4qZu3PFmjWPx4nJ81HcAm63v3Pb4SOWpojs6kJDpoUr1xw50sbc7OBrxOSrQQ4cbynC9zoh77bZHIWH%2B%2Fp2RfZmglxkg6SgXMEAEO%2FzGFzQU13Y11e4K5OSH2tvb6%2Bqqvr%2B%2B4MrDkLVmqeY%2FGQIOWCzlZfbLMgmrhyBOWvbj353ejvvnUMQpwE3A3JWmEQikUgkHD5HLgTOO28P4jFMNigrXbyEcywofwOYhYR%2FCOzhRyzdfaVxcSpNXEy%2Bg4hYNpSVmUxlZSvDiRwLKX%2F%2FZwYtdzgWFnd3q1TwgabYZCPklRpVZUp2KJFjoeTv%2F7u8ybSwyabS5FvyTcW2acTJNZqybJAL51hQ%2Fv6%2Fy7srFvo15Ws0FkNFcQUlT5k3DyLOEHSfTnllsclkqjBpNCZTX1%2BfyULIs4FUwT4WcTkLPpWP5X5%2Bal%2FRPhZx%2BR9%2FuDn5woUVJpNOZzIVw02wiPWxiMv%2FcCePa7IVmywGnbo002KyGTaJV5eJv9rdyR0VNoMa5KWOPpCfrqqwDxBnjgX%2Bfhsc5EcsFSNHdtt0aosF7jvIz2RVWAwyfdrIkdNuhqhFRiwSiUQikXBYCECoUexbzDB5iEIXbw1%2BLfoN5ELIT5SVlSkJCv64rutOuLJSFUYWb82f%2FGFB58wsUblKtXJlylBuJMLthZ1VYc%2BRxVvjoJIotxmWTewfEJPDmaEHmakBk5sLb95MjgbAx%2BBD5ufm7gf3wId7BDe%2Fw7mRVCRlClkVNm5MUBBrBR9DnByfXkFz1oy7s5pza14Vk5elpNSn1KcyYOEmdeHNY1gx3J6foDCLKN5ix55x90Bu7uN77xeVA4p7bWocVRU2Pwj2qv8UPEjIoX5qc0EuDMXOai6Y%2FMEHe58SkhfDKw3cOiU9YSLkY5bnBu3ZE7zlp8uv48uv%2B7AAjj1jIPfDxz8Ql8PrHA7t2iBJVYU9sic4GG46VZi1pWUmHju3Zu8HhJxY0Aj33bVBkh6%2F%2FNNP4EY5tdelM7egbS9D9OQArH40AeVA37%2BNXwamEnPgB7YM3g88xTjtVWHKAOZrPCQSiUQikfyTfcdjvvwy5vf2x156jOExTF5SgMuIX2d12oSNGzemOW5n3Mj91Nl%2BfMqXX8b92M6%2BiAS48m8U3maIfXrd2ZCenABTbm8Eli7ly1dvxCc4obKuzmbbvTt%2FGleOVmQvIij%2FcmNGckNGw6dLb0wYb43ddz%2F%2FCeIE3uSE3YY7AAMtZ26GmPx42oFPP3VsPLD0xnar1Qpy4gkmwxM0GO5wOFIMN5NyRS386bWpMtvRnb2yb%2BnSYm2sXzH3D%2B1Oc3z6aeXGAyDv6CTkX21tY%2FzGaHtd7FX6%2FO3OX%2FfSdpiv3M6V%2F9idf%2BC4oQ7l3ZR8CfbDAMHI4qA5gnLmBor9koiTx9Tl5zu3GHYe7Ow0bCLkLvfiYEH57ehGXng%2B6fmlhNzA3KtWrersvKeUkDM3UwvLH3O%2Bv5Xjk3J0Z2auWkVukFwylhGkPAVBOXA%2Fg440Ymw2pWYNb30mX47ccMOcIU5fjmU64KwJ2yQ3SEokEolEwiX5AAYEX7YrxdTTT9MmSsESc7PvxoyNOZVQwQ4Lp%2FkfDrV%2BWiSHbOlHeS%2Fg2kUpJr9wVmB4FEwYMxjq6%2BvX8OVqTYQK0NHlZqybmxEEsFZyEdabMwLTMSAora%2BoqCdOPqEc7boAN%2BVmN0RGA3okPj5ev01IbktzNDRAQFCaWd%2FhuJc4uYqdXO0Pbnf7WGAvSb%2FGTFSF0QGB7UBmZr2p%2F97MTW7GJhv9yXIz7F2Cjob1uv4F6vXrt29fL9a7FGPDreaZQH1vkcWNXKMxetPlZvhlP%2BwdLdfF7sId8jM8BeXgLgV3f6%2FNtqCIK%2FdDN5PT5WZft%2BQ2A187ad4vLHfuk8d3SaYnvTBGZxxBlpvhq90VLbGBZyJMh3jAYmGnR2i5Tmc8B9zkrLBGoATpQbzETn5iOODpyb%2FtGqccXu1nflaYcxHWhAi4sJwVJpFIJBIJn3sVXgZeBzyGSQqSDYxO9PK69NJLxeQmJK%2FClLcVqOTKL1KYxJg7lytXVahMKpPGxCpu%2FIoE5XkoVWk6kEpu0%2FrEZCQBGA%2FETuLKK%2FKchAWEhoSEThSUsxPn5bmRb9%2FXDlQh0GZcdYwvV%2BVp8nR5W9k%2Bdb9dwvKKikoQm0wd8zq48rh5%2BUBtbW0psMowjSs35SFbn4Bzjx4dMklMDnddpTF1dFSo1fMI%2BZR52ehW5LXcMDpbBcdWb9WuhHMDvaLyygoTO3keyLnt%2BtMdB3YzZiO7PblyEzv3yvoQXCuTNFdI%2FnJeJZq3VnbMA%2Fjyxa7kDTnMLELDXuXs3L4TJmSdihzuOdBEyV1uKhoZnREeFhrKjr1zJywAFZTji33o1c6XD364GdgzxMUeHMrZwQF28IiZYvLXkXuQd5DhVoXBX2vAxIkXTZq7fTuMGPE4XbgGhU1leEgkEolEIuFtfnzK6xbl88%2Fwd94vGyIwvGQ8ILzz%2Ftnkh4f6WLjysxS8gEsBrlz1heoLzfPwH1xFp%2F6rvTMGbSIK43h7OWqX5DiTwVx5HCSUZkhDqVBQVIomBRdxiYTDwSEO2gMzGQvN0HSVYOlSsPQgEJzkHMxQCElXsZg9U%2BZyk7i4%2BX%2FvLqDyXnhc1%2Febsv3y3d0j35fvvfsupWfee8SDWjzz%2FkY458UuEJJKW1aJK596nucDu4CZLDXJyBchd73QrWkCeYoQUrSQIKIiEMkTnuab%2FleayOX1ppT89SfPg9z3x5SHD%2FhyMqCMBt1udyUritwHJ%2F30TTQkKm0p%2BdY2cV0W0l2AMkcsH43OIN%2FJ5rjyhK%2F7yRNjyJ7chtw9L39A5JY%2FjuBHbqfhPhtBLZZ%2FRty%2F%2BsMeawJl2tIz7%2F3seHaaY5Uvt%2F6KfIUrN%2F6pWJ59k5aPs2Pmni%2FvDuAWyjOPMoVU2HjD2zoygfTMe6%2FozY%2BcRM%2FEDljmy9fD5aIDs2EYRLqFUc6V11HiMLjVCF3f0UID3IfSLUa0QRAg8hiISqESmP0xs6BQKBQKheJ%2FXlAM9mvOtjxco%2FIxdTNKo4CcfB8ssSSkVqtUludsN7u6ij5w5Vq9riW%2BUD6CnqQc%2FR18X5CxiUD%2BEpzfCYLzoFoVHOk36%2Fl8XYvyKFN%2FLC13zCTshk3ItkD%2BphpsTCxrcu%2F33h5fnoT8nTYFDoJ3%2BrJyxwnvFCHE3hLI4d7AaY%2FJ%2B6cCub65trapHdFNdaBzX1KO9kSYbxPiQi7cboa8eM6uMHNxSUsk6DUHDVOuVmO9EeqG3LVIKe4w%2Fc7%2BFKDNEnIhLW8xt%2BFakMd9CVkPvR1wSjk4OL0tK2%2B1mNtAYk64BcHbJ7u7h4fH4Cc45t7zV5o%2Bu%2BYg%2BV1K%2FtwB0QMHcuJ5LLcwf0d88n6IxX1E6TDkIqeduovmJfjBqoK4PRa6cwusgiZlAah5LAqFQqFQKBQKhUIRiz9saq7hLAJxTgAAAABJRU5ErkJggg%3D%3D%29%20%2D108px%20%2D1976px%20no%2Drepeat%3Bwidth%3A16px%3Bheight%3A11px%7Di%2Eflag%2Ead%3Abefore%2Ci%2Eflag%2Eandorra%3Abefore%7Bbackground%2Dposition%3A0%200%7Di%2Eflag%2Eae%3Abefore%2Ci%2Eflag%2Euae%3Abefore%2Ci%2Eflag%2Eunited%2Earab%2Eemirates%3Abefore%7Bbackground%2Dposition%3A0%20%2D26px%7Di%2Eflag%2Eaf%3Abefore%2Ci%2Eflag%2Eafghanistan%3Abefore%7Bbackground%2Dposition%3A0%20%2D52px%7Di%2Eflag%2Eag%3Abefore%2Ci%2Eflag%2Eantigua%3Abefore%7Bbackground%2Dposition%3A0%20%2D78px%7Di%2Eflag%2Eai%3Abefore%2Ci%2Eflag%2Eanguilla%3Abefore%7Bbackground%2Dposition%3A0%20%2D104px%7Di%2Eflag%2Eal%3Abefore%2Ci%2Eflag%2Ealbania%3Abefore%7Bbackground%2Dposition%3A0%20%2D130px%7Di%2Eflag%2Eam%3Abefore%2Ci%2Eflag%2Earmenia%3Abefore%7Bbackground%2Dposition%3A0%20%2D156px%7Di%2Eflag%2Ean%3Abefore%2Ci%2Eflag%2Enetherlands%2Eantilles%3Abefore%7Bbackground%2Dposition%3A0%20%2D182px%7Di%2Eflag%2Eangola%3Abefore%2Ci%2Eflag%2Eao%3Abefore%7Bbackground%2Dposition%3A0%20%2D208px%7Di%2Eflag%2Ear%3Abefore%2Ci%2Eflag%2Eargentina%3Abefore%7Bbackground%2Dposition%3A0%20%2D234px%7Di%2Eflag%2Eamerican%2Esamoa%3Abefore%2Ci%2Eflag%2Eas%3Abefore%7Bbackground%2Dposition%3A0%20%2D260px%7Di%2Eflag%2Eat%3Abefore%2Ci%2Eflag%2Eaustria%3Abefore%7Bbackground%2Dposition%3A0%20%2D286px%7Di%2Eflag%2Eau%3Abefore%2Ci%2Eflag%2Eaustralia%3Abefore%7Bbackground%2Dposition%3A0%20%2D312px%7Di%2Eflag%2Earuba%3Abefore%2Ci%2Eflag%2Eaw%3Abefore%7Bbackground%2Dposition%3A0%20%2D338px%7Di%2Eflag%2Ealand%2Eislands%3Abefore%2Ci%2Eflag%2Eax%3Abefore%7Bbackground%2Dposition%3A0%20%2D364px%7Di%2Eflag%2Eaz%3Abefore%2Ci%2Eflag%2Eazerbaijan%3Abefore%7Bbackground%2Dposition%3A0%20%2D390px%7Di%2Eflag%2Eba%3Abefore%2Ci%2Eflag%2Ebosnia%3Abefore%7Bbackground%2Dposition%3A0%20%2D416px%7Di%2Eflag%2Ebarbados%3Abefore%2Ci%2Eflag%2Ebb%3Abefore%7Bbackground%2Dposition%3A0%20%2D442px%7Di%2Eflag%2Ebangladesh%3Abefore%2Ci%2Eflag%2Ebd%3Abefore%7Bbackground%2Dposition%3A0%20%2D468px%7Di%2Eflag%2Ebe%3Abefore%2Ci%2Eflag%2Ebelgium%3Abefore%7Bbackground%2Dposition%3A0%20%2D494px%7Di%2Eflag%2Ebf%3Abefore%2Ci%2Eflag%2Eburkina%2Efaso%3Abefore%7Bbackground%2Dposition%3A0%20%2D520px%7Di%2Eflag%2Ebg%3Abefore%2Ci%2Eflag%2Ebulgaria%3Abefore%7Bbackground%2Dposition%3A0%20%2D546px%7Di%2Eflag%2Ebahrain%3Abefore%2Ci%2Eflag%2Ebh%3Abefore%7Bbackground%2Dposition%3A0%20%2D572px%7Di%2Eflag%2Ebi%3Abefore%2Ci%2Eflag%2Eburundi%3Abefore%7Bbackground%2Dposition%3A0%20%2D598px%7Di%2Eflag%2Ebenin%3Abefore%2Ci%2Eflag%2Ebj%3Abefore%7Bbackground%2Dposition%3A0%20%2D624px%7Di%2Eflag%2Ebermuda%3Abefore%2Ci%2Eflag%2Ebm%3Abefore%7Bbackground%2Dposition%3A0%20%2D650px%7Di%2Eflag%2Ebn%3Abefore%2Ci%2Eflag%2Ebrunei%3Abefore%7Bbackground%2Dposition%3A0%20%2D676px%7Di%2Eflag%2Ebo%3Abefore%2Ci%2Eflag%2Ebolivia%3Abefore%7Bbackground%2Dposition%3A0%20%2D702px%7Di%2Eflag%2Ebr%3Abefore%2Ci%2Eflag%2Ebrazil%3Abefore%7Bbackground%2Dposition%3A0%20%2D728px%7Di%2Eflag%2Ebahamas%3Abefore%2Ci%2Eflag%2Ebs%3Abefore%7Bbackground%2Dposition%3A0%20%2D754px%7Di%2Eflag%2Ebhutan%3Abefore%2Ci%2Eflag%2Ebt%3Abefore%7Bbackground%2Dposition%3A0%20%2D780px%7Di%2Eflag%2Ebouvet%2Eisland%3Abefore%2Ci%2Eflag%2Ebv%3Abefore%7Bbackground%2Dposition%3A0%20%2D806px%7Di%2Eflag%2Ebotswana%3Abefore%2Ci%2Eflag%2Ebw%3Abefore%7Bbackground%2Dposition%3A0%20%2D832px%7Di%2Eflag%2Ebelarus%3Abefore%2Ci%2Eflag%2Eby%3Abefore%7Bbackground%2Dposition%3A0%20%2D858px%7Di%2Eflag%2Ebelize%3Abefore%2Ci%2Eflag%2Ebz%3Abefore%7Bbackground%2Dposition%3A0%20%2D884px%7Di%2Eflag%2Eca%3Abefore%2Ci%2Eflag%2Ecanada%3Abefore%7Bbackground%2Dposition%3A0%20%2D910px%7Di%2Eflag%2Ecc%3Abefore%2Ci%2Eflag%2Ecocos%2Eislands%3Abefore%7Bbackground%2Dposition%3A0%20%2D962px%7Di%2Eflag%2Ecd%3Abefore%2Ci%2Eflag%2Econgo%3Abefore%7Bbackground%2Dposition%3A0%20%2D988px%7Di%2Eflag%2Ecentral%2Eafrican%2Erepublic%3Abefore%2Ci%2Eflag%2Ecf%3Abefore%7Bbackground%2Dposition%3A0%20%2D1014px%7Di%2Eflag%2Ecg%3Abefore%2Ci%2Eflag%2Econgo%2Ebrazzaville%3Abefore%7Bbackground%2Dposition%3A0%20%2D1040px%7Di%2Eflag%2Ech%3Abefore%2Ci%2Eflag%2Eswitzerland%3Abefore%7Bbackground%2Dposition%3A0%20%2D1066px%7Di%2Eflag%2Eci%3Abefore%2Ci%2Eflag%2Ecote%2Edivoire%3Abefore%7Bbackground%2Dposition%3A0%20%2D1092px%7Di%2Eflag%2Eck%3Abefore%2Ci%2Eflag%2Ecook%2Eislands%3Abefore%7Bbackground%2Dposition%3A0%20%2D1118px%7Di%2Eflag%2Echile%3Abefore%2Ci%2Eflag%2Ecl%3Abefore%7Bbackground%2Dposition%3A0%20%2D1144px%7Di%2Eflag%2Ecameroon%3Abefore%2Ci%2Eflag%2Ecm%3Abefore%7Bbackground%2Dposition%3A0%20%2D1170px%7Di%2Eflag%2Echina%3Abefore%2Ci%2Eflag%2Ecn%3Abefore%7Bbackground%2Dposition%3A0%20%2D1196px%7Di%2Eflag%2Eco%3Abefore%2Ci%2Eflag%2Ecolombia%3Abefore%7Bbackground%2Dposition%3A0%20%2D1222px%7Di%2Eflag%2Ecosta%2Erica%3Abefore%2Ci%2Eflag%2Ecr%3Abefore%7Bbackground%2Dposition%3A0%20%2D1248px%7Di%2Eflag%2Ecs%3Abefore%2Ci%2Eflag%2Eserbia%3Abefore%7Bbackground%2Dposition%3A0%20%2D1274px%7Di%2Eflag%2Ecu%3Abefore%2Ci%2Eflag%2Ecuba%3Abefore%7Bbackground%2Dposition%3A0%20%2D1300px%7Di%2Eflag%2Ecape%2Everde%3Abefore%2Ci%2Eflag%2Ecv%3Abefore%7Bbackground%2Dposition%3A0%20%2D1326px%7Di%2Eflag%2Echristmas%2Eisland%3Abefore%2Ci%2Eflag%2Ecx%3Abefore%7Bbackground%2Dposition%3A0%20%2D1352px%7Di%2Eflag%2Ecy%3Abefore%2Ci%2Eflag%2Ecyprus%3Abefore%7Bbackground%2Dposition%3A0%20%2D1378px%7Di%2Eflag%2Ecz%3Abefore%2Ci%2Eflag%2Eczech%2Erepublic%3Abefore%7Bbackground%2Dposition%3A0%20%2D1404px%7Di%2Eflag%2Ede%3Abefore%2Ci%2Eflag%2Egermany%3Abefore%7Bbackground%2Dposition%3A0%20%2D1430px%7Di%2Eflag%2Edj%3Abefore%2Ci%2Eflag%2Edjibouti%3Abefore%7Bbackground%2Dposition%3A0%20%2D1456px%7Di%2Eflag%2Edenmark%3Abefore%2Ci%2Eflag%2Edk%3Abefore%7Bbackground%2Dposition%3A0%20%2D1482px%7Di%2Eflag%2Edm%3Abefore%2Ci%2Eflag%2Edominica%3Abefore%7Bbackground%2Dposition%3A0%20%2D1508px%7Di%2Eflag%2Edo%3Abefore%2Ci%2Eflag%2Edominican%2Erepublic%3Abefore%7Bbackground%2Dposition%3A0%20%2D1534px%7Di%2Eflag%2Ealgeria%3Abefore%2Ci%2Eflag%2Edz%3Abefore%7Bbackground%2Dposition%3A0%20%2D1560px%7Di%2Eflag%2Eec%3Abefore%2Ci%2Eflag%2Eecuador%3Abefore%7Bbackground%2Dposition%3A0%20%2D1586px%7Di%2Eflag%2Eee%3Abefore%2Ci%2Eflag%2Eestonia%3Abefore%7Bbackground%2Dposition%3A0%20%2D1612px%7Di%2Eflag%2Eeg%3Abefore%2Ci%2Eflag%2Eegypt%3Abefore%7Bbackground%2Dposition%3A0%20%2D1638px%7Di%2Eflag%2Eeh%3Abefore%2Ci%2Eflag%2Ewestern%2Esahara%3Abefore%7Bbackground%2Dposition%3A0%20%2D1664px%7Di%2Eflag%2Eer%3Abefore%2Ci%2Eflag%2Eeritrea%3Abefore%7Bbackground%2Dposition%3A0%20%2D1716px%7Di%2Eflag%2Ees%3Abefore%2Ci%2Eflag%2Espain%3Abefore%7Bbackground%2Dposition%3A0%20%2D1742px%7Di%2Eflag%2Eet%3Abefore%2Ci%2Eflag%2Eethiopia%3Abefore%7Bbackground%2Dposition%3A0%20%2D1768px%7Di%2Eflag%2Eeu%3Abefore%2Ci%2Eflag%2Eeuropean%2Eunion%3Abefore%7Bbackground%2Dposition%3A0%20%2D1794px%7Di%2Eflag%2Efi%3Abefore%2Ci%2Eflag%2Efinland%3Abefore%7Bbackground%2Dposition%3A0%20%2D1846px%7Di%2Eflag%2Efiji%3Abefore%2Ci%2Eflag%2Efj%3Abefore%7Bbackground%2Dposition%3A0%20%2D1872px%7Di%2Eflag%2Efalkland%2Eislands%3Abefore%2Ci%2Eflag%2Efk%3Abefore%7Bbackground%2Dposition%3A0%20%2D1898px%7Di%2Eflag%2Efm%3Abefore%2Ci%2Eflag%2Emicronesia%3Abefore%7Bbackground%2Dposition%3A0%20%2D1924px%7Di%2Eflag%2Efaroe%2Eislands%3Abefore%2Ci%2Eflag%2Efo%3Abefore%7Bbackground%2Dposition%3A0%20%2D1950px%7Di%2Eflag%2Efr%3Abefore%2Ci%2Eflag%2Efrance%3Abefore%7Bbackground%2Dposition%3A0%20%2D1976px%7Di%2Eflag%2Ega%3Abefore%2Ci%2Eflag%2Egabon%3Abefore%7Bbackground%2Dposition%3A%2D36px%200%7Di%2Eflag%2Egb%3Abefore%2Ci%2Eflag%2Eunited%2Ekingdom%3Abefore%7Bbackground%2Dposition%3A%2D36px%20%2D26px%7Di%2Eflag%2Egd%3Abefore%2Ci%2Eflag%2Egrenada%3Abefore%7Bbackground%2Dposition%3A%2D36px%20%2D52px%7Di%2Eflag%2Ege%3Abefore%2Ci%2Eflag%2Egeorgia%3Abefore%7Bbackground%2Dposition%3A%2D36px%20%2D78px%7Di%2Eflag%2Efrench%2Eguiana%3Abefore%2Ci%2Eflag%2Egf%3Abefore%7Bbackground%2Dposition%3A%2D36px%20%2D104px%7Di%2Eflag%2Egh%3Abefore%2Ci%2Eflag%2Eghana%3Abefore%7Bbackground%2Dposition%3A%2D36px%20%2D130px%7Di%2Eflag%2Egi%3Abefore%2Ci%2Eflag%2Egibraltar%3Abefore%7Bbackground%2Dposition%3A%2D36px%20%2D156px%7Di%2Eflag%2Egl%3Abefore%2Ci%2Eflag%2Egreenland%3Abefore%7Bbackground%2Dposition%3A%2D36px%20%2D182px%7Di%2Eflag%2Egambia%3Abefore%2Ci%2Eflag%2Egm%3Abefore%7Bbackground%2Dposition%3A%2D36px%20%2D208px%7Di%2Eflag%2Egn%3Abefore%2Ci%2Eflag%2Eguinea%3Abefore%7Bbackground%2Dposition%3A%2D36px%20%2D234px%7Di%2Eflag%2Egp%3Abefore%2Ci%2Eflag%2Eguadeloupe%3Abefore%7Bbackground%2Dposition%3A%2D36px%20%2D260px%7Di%2Eflag%2Eequatorial%2Eguinea%3Abefore%2Ci%2Eflag%2Egq%3Abefore%7Bbackground%2Dposition%3A%2D36px%20%2D286px%7Di%2Eflag%2Egr%3Abefore%2Ci%2Eflag%2Egreece%3Abefore%7Bbackground%2Dposition%3A%2D36px%20%2D312px%7Di%2Eflag%2Egs%3Abefore%2Ci%2Eflag%2Esandwich%2Eislands%3Abefore%7Bbackground%2Dposition%3A%2D36px%20%2D338px%7Di%2Eflag%2Egt%3Abefore%2Ci%2Eflag%2Eguatemala%3Abefore%7Bbackground%2Dposition%3A%2D36px%20%2D364px%7Di%2Eflag%2Egu%3Abefore%2Ci%2Eflag%2Eguam%3Abefore%7Bbackground%2Dposition%3A%2D36px%20%2D390px%7Di%2Eflag%2Eguinea%2Dbissau%3Abefore%2Ci%2Eflag%2Egw%3Abefore%7Bbackground%2Dposition%3A%2D36px%20%2D416px%7Di%2Eflag%2Eguyana%3Abefore%2Ci%2Eflag%2Egy%3Abefore%7Bbackground%2Dposition%3A%2D36px%20%2D442px%7Di%2Eflag%2Ehk%3Abefore%2Ci%2Eflag%2Ehong%2Ekong%3Abefore%7Bbackground%2Dposition%3A%2D36px%20%2D468px%7Di%2Eflag%2Eheard%2Eisland%3Abefore%2Ci%2Eflag%2Ehm%3Abefore%7Bbackground%2Dposition%3A%2D36px%20%2D494px%7Di%2Eflag%2Ehn%3Abefore%2Ci%2Eflag%2Ehonduras%3Abefore%7Bbackground%2Dposition%3A%2D36px%20%2D520px%7Di%2Eflag%2Ecroatia%3Abefore%2Ci%2Eflag%2Ehr%3Abefore%7Bbackground%2Dposition%3A%2D36px%20%2D546px%7Di%2Eflag%2Ehaiti%3Abefore%2Ci%2Eflag%2Eht%3Abefore%7Bbackground%2Dposition%3A%2D36px%20%2D572px%7Di%2Eflag%2Ehu%3Abefore%2Ci%2Eflag%2Ehungary%3Abefore%7Bbackground%2Dposition%3A%2D36px%20%2D598px%7Di%2Eflag%2Eid%3Abefore%2Ci%2Eflag%2Eindonesia%3Abefore%7Bbackground%2Dposition%3A%2D36px%20%2D624px%7Di%2Eflag%2Eie%3Abefore%2Ci%2Eflag%2Eireland%3Abefore%7Bbackground%2Dposition%3A%2D36px%20%2D650px%7Di%2Eflag%2Eil%3Abefore%2Ci%2Eflag%2Eisrael%3Abefore%7Bbackground%2Dposition%3A%2D36px%20%2D676px%7Di%2Eflag%2Ein%3Abefore%2Ci%2Eflag%2Eindia%3Abefore%7Bbackground%2Dposition%3A%2D36px%20%2D702px%7Di%2Eflag%2Eindian%2Eocean%2Eterritory%3Abefore%2Ci%2Eflag%2Eio%3Abefore%7Bbackground%2Dposition%3A%2D36px%20%2D728px%7Di%2Eflag%2Eiq%3Abefore%2Ci%2Eflag%2Eiraq%3Abefore%7Bbackground%2Dposition%3A%2D36px%20%2D754px%7Di%2Eflag%2Eir%3Abefore%2Ci%2Eflag%2Eiran%3Abefore%7Bbackground%2Dposition%3A%2D36px%20%2D780px%7Di%2Eflag%2Eiceland%3Abefore%2Ci%2Eflag%2Eis%3Abefore%7Bbackground%2Dposition%3A%2D36px%20%2D806px%7Di%2Eflag%2Eit%3Abefore%2Ci%2Eflag%2Eitaly%3Abefore%7Bbackground%2Dposition%3A%2D36px%20%2D832px%7Di%2Eflag%2Ejamaica%3Abefore%2Ci%2Eflag%2Ejm%3Abefore%7Bbackground%2Dposition%3A%2D36px%20%2D858px%7Di%2Eflag%2Ejo%3Abefore%2Ci%2Eflag%2Ejordan%3Abefore%7Bbackground%2Dposition%3A%2D36px%20%2D884px%7Di%2Eflag%2Ejapan%3Abefore%2Ci%2Eflag%2Ejp%3Abefore%7Bbackground%2Dposition%3A%2D36px%20%2D910px%7Di%2Eflag%2Eke%3Abefore%2Ci%2Eflag%2Ekenya%3Abefore%7Bbackground%2Dposition%3A%2D36px%20%2D936px%7Di%2Eflag%2Ekg%3Abefore%2Ci%2Eflag%2Ekyrgyzstan%3Abefore%7Bbackground%2Dposition%3A%2D36px%20%2D962px%7Di%2Eflag%2Ecambodia%3Abefore%2Ci%2Eflag%2Ekh%3Abefore%7Bbackground%2Dposition%3A%2D36px%20%2D988px%7Di%2Eflag%2Eki%3Abefore%2Ci%2Eflag%2Ekiribati%3Abefore%7Bbackground%2Dposition%3A%2D36px%20%2D1014px%7Di%2Eflag%2Ecomoros%3Abefore%2Ci%2Eflag%2Ekm%3Abefore%7Bbackground%2Dposition%3A%2D36px%20%2D1040px%7Di%2Eflag%2Ekn%3Abefore%2Ci%2Eflag%2Esaint%2Ekitts%2Eand%2Enevis%3Abefore%7Bbackground%2Dposition%3A%2D36px%20%2D1066px%7Di%2Eflag%2Ekp%3Abefore%2Ci%2Eflag%2Enorth%2Ekorea%3Abefore%7Bbackground%2Dposition%3A%2D36px%20%2D1092px%7Di%2Eflag%2Ekr%3Abefore%2Ci%2Eflag%2Esouth%2Ekorea%3Abefore%7Bbackground%2Dposition%3A%2D36px%20%2D1118px%7Di%2Eflag%2Ekuwait%3Abefore%2Ci%2Eflag%2Ekw%3Abefore%7Bbackground%2Dposition%3A%2D36px%20%2D1144px%7Di%2Eflag%2Ecayman%2Eislands%3Abefore%2Ci%2Eflag%2Eky%3Abefore%7Bbackground%2Dposition%3A%2D36px%20%2D1170px%7Di%2Eflag%2Ekazakhstan%3Abefore%2Ci%2Eflag%2Ekz%3Abefore%7Bbackground%2Dposition%3A%2D36px%20%2D1196px%7Di%2Eflag%2Ela%3Abefore%2Ci%2Eflag%2Elaos%3Abefore%7Bbackground%2Dposition%3A%2D36px%20%2D1222px%7Di%2Eflag%2Elb%3Abefore%2Ci%2Eflag%2Elebanon%3Abefore%7Bbackground%2Dposition%3A%2D36px%20%2D1248px%7Di%2Eflag%2Elc%3Abefore%2Ci%2Eflag%2Esaint%2Elucia%3Abefore%7Bbackground%2Dposition%3A%2D36px%20%2D1274px%7Di%2Eflag%2Eli%3Abefore%2Ci%2Eflag%2Eliechtenstein%3Abefore%7Bbackground%2Dposition%3A%2D36px%20%2D1300px%7Di%2Eflag%2Elk%3Abefore%2Ci%2Eflag%2Esri%2Elanka%3Abefore%7Bbackground%2Dposition%3A%2D36px%20%2D1326px%7Di%2Eflag%2Eliberia%3Abefore%2Ci%2Eflag%2Elr%3Abefore%7Bbackground%2Dposition%3A%2D36px%20%2D1352px%7Di%2Eflag%2Elesotho%3Abefore%2Ci%2Eflag%2Els%3Abefore%7Bbackground%2Dposition%3A%2D36px%20%2D1378px%7Di%2Eflag%2Elithuania%3Abefore%2Ci%2Eflag%2Elt%3Abefore%7Bbackground%2Dposition%3A%2D36px%20%2D1404px%7Di%2Eflag%2Elu%3Abefore%2Ci%2Eflag%2Eluxembourg%3Abefore%7Bbackground%2Dposition%3A%2D36px%20%2D1430px%7Di%2Eflag%2Elatvia%3Abefore%2Ci%2Eflag%2Elv%3Abefore%7Bbackground%2Dposition%3A%2D36px%20%2D1456px%7Di%2Eflag%2Elibya%3Abefore%2Ci%2Eflag%2Ely%3Abefore%7Bbackground%2Dposition%3A%2D36px%20%2D1482px%7Di%2Eflag%2Ema%3Abefore%2Ci%2Eflag%2Emorocco%3Abefore%7Bbackground%2Dposition%3A%2D36px%20%2D1508px%7Di%2Eflag%2Emc%3Abefore%2Ci%2Eflag%2Emonaco%3Abefore%7Bbackground%2Dposition%3A%2D36px%20%2D1534px%7Di%2Eflag%2Emd%3Abefore%2Ci%2Eflag%2Emoldova%3Abefore%7Bbackground%2Dposition%3A%2D36px%20%2D1560px%7Di%2Eflag%2Eme%3Abefore%2Ci%2Eflag%2Emontenegro%3Abefore%7Bbackground%2Dposition%3A%2D36px%20%2D1586px%7Di%2Eflag%2Emadagascar%3Abefore%2Ci%2Eflag%2Emg%3Abefore%7Bbackground%2Dposition%3A%2D36px%20%2D1613px%7Di%2Eflag%2Emarshall%2Eislands%3Abefore%2Ci%2Eflag%2Emh%3Abefore%7Bbackground%2Dposition%3A%2D36px%20%2D1639px%7Di%2Eflag%2Emacedonia%3Abefore%2Ci%2Eflag%2Emk%3Abefore%7Bbackground%2Dposition%3A%2D36px%20%2D1665px%7Di%2Eflag%2Emali%3Abefore%2Ci%2Eflag%2Eml%3Abefore%7Bbackground%2Dposition%3A%2D36px%20%2D1691px%7Di%2Eflag%2Eburma%3Abefore%2Ci%2Eflag%2Emm%3Abefore%2Ci%2Eflag%2Emyanmar%3Abefore%7Bbackground%2Dposition%3A%2D36px%20%2D1717px%7Di%2Eflag%2Emn%3Abefore%2Ci%2Eflag%2Emongolia%3Abefore%7Bbackground%2Dposition%3A%2D36px%20%2D1743px%7Di%2Eflag%2Emacau%3Abefore%2Ci%2Eflag%2Emo%3Abefore%7Bbackground%2Dposition%3A%2D36px%20%2D1769px%7Di%2Eflag%2Emp%3Abefore%2Ci%2Eflag%2Enorthern%2Emariana%2Eislands%3Abefore%7Bbackground%2Dposition%3A%2D36px%20%2D1795px%7Di%2Eflag%2Emartinique%3Abefore%2Ci%2Eflag%2Emq%3Abefore%7Bbackground%2Dposition%3A%2D36px%20%2D1821px%7Di%2Eflag%2Emauritania%3Abefore%2Ci%2Eflag%2Emr%3Abefore%7Bbackground%2Dposition%3A%2D36px%20%2D1847px%7Di%2Eflag%2Emontserrat%3Abefore%2Ci%2Eflag%2Ems%3Abefore%7Bbackground%2Dposition%3A%2D36px%20%2D1873px%7Di%2Eflag%2Emalta%3Abefore%2Ci%2Eflag%2Emt%3Abefore%7Bbackground%2Dposition%3A%2D36px%20%2D1899px%7Di%2Eflag%2Emauritius%3Abefore%2Ci%2Eflag%2Emu%3Abefore%7Bbackground%2Dposition%3A%2D36px%20%2D1925px%7Di%2Eflag%2Emaldives%3Abefore%2Ci%2Eflag%2Emv%3Abefore%7Bbackground%2Dposition%3A%2D36px%20%2D1951px%7Di%2Eflag%2Emalawi%3Abefore%2Ci%2Eflag%2Emw%3Abefore%7Bbackground%2Dposition%3A%2D36px%20%2D1977px%7Di%2Eflag%2Emexico%3Abefore%2Ci%2Eflag%2Emx%3Abefore%7Bbackground%2Dposition%3A%2D72px%200%7Di%2Eflag%2Emalaysia%3Abefore%2Ci%2Eflag%2Emy%3Abefore%7Bbackground%2Dposition%3A%2D72px%20%2D26px%7Di%2Eflag%2Emozambique%3Abefore%2Ci%2Eflag%2Emz%3Abefore%7Bbackground%2Dposition%3A%2D72px%20%2D52px%7Di%2Eflag%2Ena%3Abefore%2Ci%2Eflag%2Enamibia%3Abefore%7Bbackground%2Dposition%3A%2D72px%20%2D78px%7Di%2Eflag%2Enc%3Abefore%2Ci%2Eflag%2Enew%2Ecaledonia%3Abefore%7Bbackground%2Dposition%3A%2D72px%20%2D104px%7Di%2Eflag%2Ene%3Abefore%2Ci%2Eflag%2Eniger%3Abefore%7Bbackground%2Dposition%3A%2D72px%20%2D130px%7Di%2Eflag%2Enf%3Abefore%2Ci%2Eflag%2Enorfolk%2Eisland%3Abefore%7Bbackground%2Dposition%3A%2D72px%20%2D156px%7Di%2Eflag%2Eng%3Abefore%2Ci%2Eflag%2Enigeria%3Abefore%7Bbackground%2Dposition%3A%2D72px%20%2D182px%7Di%2Eflag%2Eni%3Abefore%2Ci%2Eflag%2Enicaragua%3Abefore%7Bbackground%2Dposition%3A%2D72px%20%2D208px%7Di%2Eflag%2Enetherlands%3Abefore%2Ci%2Eflag%2Enl%3Abefore%7Bbackground%2Dposition%3A%2D72px%20%2D234px%7Di%2Eflag%2Eno%3Abefore%2Ci%2Eflag%2Enorway%3Abefore%7Bbackground%2Dposition%3A%2D72px%20%2D260px%7Di%2Eflag%2Enepal%3Abefore%2Ci%2Eflag%2Enp%3Abefore%7Bbackground%2Dposition%3A%2D72px%20%2D286px%7Di%2Eflag%2Enauru%3Abefore%2Ci%2Eflag%2Enr%3Abefore%7Bbackground%2Dposition%3A%2D72px%20%2D312px%7Di%2Eflag%2Eniue%3Abefore%2Ci%2Eflag%2Enu%3Abefore%7Bbackground%2Dposition%3A%2D72px%20%2D338px%7Di%2Eflag%2Enew%2Ezealand%3Abefore%2Ci%2Eflag%2Enz%3Abefore%7Bbackground%2Dposition%3A%2D72px%20%2D364px%7Di%2Eflag%2Eom%3Abefore%2Ci%2Eflag%2Eoman%3Abefore%7Bbackground%2Dposition%3A%2D72px%20%2D390px%7Di%2Eflag%2Epa%3Abefore%2Ci%2Eflag%2Epanama%3Abefore%7Bbackground%2Dposition%3A%2D72px%20%2D416px%7Di%2Eflag%2Epe%3Abefore%2Ci%2Eflag%2Eperu%3Abefore%7Bbackground%2Dposition%3A%2D72px%20%2D442px%7Di%2Eflag%2Efrench%2Epolynesia%3Abefore%2Ci%2Eflag%2Epf%3Abefore%7Bbackground%2Dposition%3A%2D72px%20%2D468px%7Di%2Eflag%2Enew%2Eguinea%3Abefore%2Ci%2Eflag%2Epg%3Abefore%7Bbackground%2Dposition%3A%2D72px%20%2D494px%7Di%2Eflag%2Eph%3Abefore%2Ci%2Eflag%2Ephilippines%3Abefore%7Bbackground%2Dposition%3A%2D72px%20%2D520px%7Di%2Eflag%2Epakistan%3Abefore%2Ci%2Eflag%2Epk%3Abefore%7Bbackground%2Dposition%3A%2D72px%20%2D546px%7Di%2Eflag%2Epl%3Abefore%2Ci%2Eflag%2Epoland%3Abefore%7Bbackground%2Dposition%3A%2D72px%20%2D572px%7Di%2Eflag%2Epm%3Abefore%2Ci%2Eflag%2Esaint%2Epierre%3Abefore%7Bbackground%2Dposition%3A%2D72px%20%2D598px%7Di%2Eflag%2Epitcairn%2Eislands%3Abefore%2Ci%2Eflag%2Epn%3Abefore%7Bbackground%2Dposition%3A%2D72px%20%2D624px%7Di%2Eflag%2Epr%3Abefore%2Ci%2Eflag%2Epuerto%2Erico%3Abefore%7Bbackground%2Dposition%3A%2D72px%20%2D650px%7Di%2Eflag%2Epalestine%3Abefore%2Ci%2Eflag%2Eps%3Abefore%7Bbackground%2Dposition%3A%2D72px%20%2D676px%7Di%2Eflag%2Eportugal%3Abefore%2Ci%2Eflag%2Ept%3Abefore%7Bbackground%2Dposition%3A%2D72px%20%2D702px%7Di%2Eflag%2Epalau%3Abefore%2Ci%2Eflag%2Epw%3Abefore%7Bbackground%2Dposition%3A%2D72px%20%2D728px%7Di%2Eflag%2Eparaguay%3Abefore%2Ci%2Eflag%2Epy%3Abefore%7Bbackground%2Dposition%3A%2D72px%20%2D754px%7Di%2Eflag%2Eqa%3Abefore%2Ci%2Eflag%2Eqatar%3Abefore%7Bbackground%2Dposition%3A%2D72px%20%2D780px%7Di%2Eflag%2Ere%3Abefore%2Ci%2Eflag%2Ereunion%3Abefore%7Bbackground%2Dposition%3A%2D72px%20%2D806px%7Di%2Eflag%2Ero%3Abefore%2Ci%2Eflag%2Eromania%3Abefore%7Bbackground%2Dposition%3A%2D72px%20%2D832px%7Di%2Eflag%2Ers%3Abefore%2Ci%2Eflag%2Eserbia%3Abefore%7Bbackground%2Dposition%3A%2D72px%20%2D858px%7Di%2Eflag%2Eru%3Abefore%2Ci%2Eflag%2Erussia%3Abefore%7Bbackground%2Dposition%3A%2D72px%20%2D884px%7Di%2Eflag%2Erw%3Abefore%2Ci%2Eflag%2Erwanda%3Abefore%7Bbackground%2Dposition%3A%2D72px%20%2D910px%7Di%2Eflag%2Esa%3Abefore%2Ci%2Eflag%2Esaudi%2Earabia%3Abefore%7Bbackground%2Dposition%3A%2D72px%20%2D936px%7Di%2Eflag%2Esb%3Abefore%2Ci%2Eflag%2Esolomon%2Eislands%3Abefore%7Bbackground%2Dposition%3A%2D72px%20%2D962px%7Di%2Eflag%2Esc%3Abefore%2Ci%2Eflag%2Eseychelles%3Abefore%7Bbackground%2Dposition%3A%2D72px%20%2D988px%7Di%2Eflag%2Egb%2Esct%3Abefore%2Ci%2Eflag%2Escotland%3Abefore%7Bbackground%2Dposition%3A%2D72px%20%2D1014px%7Di%2Eflag%2Esd%3Abefore%2Ci%2Eflag%2Esudan%3Abefore%7Bbackground%2Dposition%3A%2D72px%20%2D1040px%7Di%2Eflag%2Ese%3Abefore%2Ci%2Eflag%2Esweden%3Abefore%7Bbackground%2Dposition%3A%2D72px%20%2D1066px%7Di%2Eflag%2Esg%3Abefore%2Ci%2Eflag%2Esingapore%3Abefore%7Bbackground%2Dposition%3A%2D72px%20%2D1092px%7Di%2Eflag%2Esaint%2Ehelena%3Abefore%2Ci%2Eflag%2Esh%3Abefore%7Bbackground%2Dposition%3A%2D72px%20%2D1118px%7Di%2Eflag%2Esi%3Abefore%2Ci%2Eflag%2Eslovenia%3Abefore%7Bbackground%2Dposition%3A%2D72px%20%2D1144px%7Di%2Eflag%2Ejan%2Emayen%3Abefore%2Ci%2Eflag%2Esj%3Abefore%2Ci%2Eflag%2Esvalbard%3Abefore%7Bbackground%2Dposition%3A%2D72px%20%2D1170px%7Di%2Eflag%2Esk%3Abefore%2Ci%2Eflag%2Eslovakia%3Abefore%7Bbackground%2Dposition%3A%2D72px%20%2D1196px%7Di%2Eflag%2Esierra%2Eleone%3Abefore%2Ci%2Eflag%2Esl%3Abefore%7Bbackground%2Dposition%3A%2D72px%20%2D1222px%7Di%2Eflag%2Esan%2Emarino%3Abefore%2Ci%2Eflag%2Esm%3Abefore%7Bbackground%2Dposition%3A%2D72px%20%2D1248px%7Di%2Eflag%2Esenegal%3Abefore%2Ci%2Eflag%2Esn%3Abefore%7Bbackground%2Dposition%3A%2D72px%20%2D1274px%7Di%2Eflag%2Eso%3Abefore%2Ci%2Eflag%2Esomalia%3Abefore%7Bbackground%2Dposition%3A%2D72px%20%2D1300px%7Di%2Eflag%2Esr%3Abefore%2Ci%2Eflag%2Esuriname%3Abefore%7Bbackground%2Dposition%3A%2D72px%20%2D1326px%7Di%2Eflag%2Esao%2Etome%3Abefore%2Ci%2Eflag%2Est%3Abefore%7Bbackground%2Dposition%3A%2D72px%20%2D1352px%7Di%2Eflag%2Eel%2Esalvador%3Abefore%2Ci%2Eflag%2Esv%3Abefore%7Bbackground%2Dposition%3A%2D72px%20%2D1378px%7Di%2Eflag%2Esy%3Abefore%2Ci%2Eflag%2Esyria%3Abefore%7Bbackground%2Dposition%3A%2D72px%20%2D1404px%7Di%2Eflag%2Eswaziland%3Abefore%2Ci%2Eflag%2Esz%3Abefore%7Bbackground%2Dposition%3A%2D72px%20%2D1430px%7Di%2Eflag%2Ecaicos%2Eislands%3Abefore%2Ci%2Eflag%2Etc%3Abefore%7Bbackground%2Dposition%3A%2D72px%20%2D1456px%7Di%2Eflag%2Echad%3Abefore%2Ci%2Eflag%2Etd%3Abefore%7Bbackground%2Dposition%3A%2D72px%20%2D1482px%7Di%2Eflag%2Efrench%2Eterritories%3Abefore%2Ci%2Eflag%2Etf%3Abefore%7Bbackground%2Dposition%3A%2D72px%20%2D1508px%7Di%2Eflag%2Etg%3Abefore%2Ci%2Eflag%2Etogo%3Abefore%7Bbackground%2Dposition%3A%2D72px%20%2D1534px%7Di%2Eflag%2Eth%3Abefore%2Ci%2Eflag%2Ethailand%3Abefore%7Bbackground%2Dposition%3A%2D72px%20%2D1560px%7Di%2Eflag%2Etajikistan%3Abefore%2Ci%2Eflag%2Etj%3Abefore%7Bbackground%2Dposition%3A%2D72px%20%2D1586px%7Di%2Eflag%2Etk%3Abefore%2Ci%2Eflag%2Etokelau%3Abefore%7Bbackground%2Dposition%3A%2D72px%20%2D1612px%7Di%2Eflag%2Etimorleste%3Abefore%2Ci%2Eflag%2Etl%3Abefore%7Bbackground%2Dposition%3A%2D72px%20%2D1638px%7Di%2Eflag%2Etm%3Abefore%2Ci%2Eflag%2Eturkmenistan%3Abefore%7Bbackground%2Dposition%3A%2D72px%20%2D1664px%7Di%2Eflag%2Etn%3Abefore%2Ci%2Eflag%2Etunisia%3Abefore%7Bbackground%2Dposition%3A%2D72px%20%2D1690px%7Di%2Eflag%2Eto%3Abefore%2Ci%2Eflag%2Etonga%3Abefore%7Bbackground%2Dposition%3A%2D72px%20%2D1716px%7Di%2Eflag%2Etr%3Abefore%2Ci%2Eflag%2Eturkey%3Abefore%7Bbackground%2Dposition%3A%2D72px%20%2D1742px%7Di%2Eflag%2Etrinidad%3Abefore%2Ci%2Eflag%2Ett%3Abefore%7Bbackground%2Dposition%3A%2D72px%20%2D1768px%7Di%2Eflag%2Etuvalu%3Abefore%2Ci%2Eflag%2Etv%3Abefore%7Bbackground%2Dposition%3A%2D72px%20%2D1794px%7Di%2Eflag%2Etaiwan%3Abefore%2Ci%2Eflag%2Etw%3Abefore%7Bbackground%2Dposition%3A%2D72px%20%2D1820px%7Di%2Eflag%2Etanzania%3Abefore%2Ci%2Eflag%2Etz%3Abefore%7Bbackground%2Dposition%3A%2D72px%20%2D1846px%7Di%2Eflag%2Eua%3Abefore%2Ci%2Eflag%2Eukraine%3Abefore%7Bbackground%2Dposition%3A%2D72px%20%2D1872px%7Di%2Eflag%2Eug%3Abefore%2Ci%2Eflag%2Euganda%3Abefore%7Bbackground%2Dposition%3A%2D72px%20%2D1898px%7Di%2Eflag%2Eum%3Abefore%2Ci%2Eflag%2Eus%2Eminor%2Eislands%3Abefore%7Bbackground%2Dposition%3A%2D72px%20%2D1924px%7Di%2Eflag%2Eamerica%3Abefore%2Ci%2Eflag%2Eunited%2Estates%3Abefore%2Ci%2Eflag%2Eus%3Abefore%7Bbackground%2Dposition%3A%2D72px%20%2D1950px%7Di%2Eflag%2Euruguay%3Abefore%2Ci%2Eflag%2Euy%3Abefore%7Bbackground%2Dposition%3A%2D72px%20%2D1976px%7Di%2Eflag%2Euz%3Abefore%2Ci%2Eflag%2Euzbekistan%3Abefore%7Bbackground%2Dposition%3A%2D108px%200%7Di%2Eflag%2Eva%3Abefore%2Ci%2Eflag%2Evatican%2Ecity%3Abefore%7Bbackground%2Dposition%3A%2D108px%20%2D26px%7Di%2Eflag%2Esaint%2Evincent%3Abefore%2Ci%2Eflag%2Evc%3Abefore%7Bbackground%2Dposition%3A%2D108px%20%2D52px%7Di%2Eflag%2Eve%3Abefore%2Ci%2Eflag%2Evenezuela%3Abefore%7Bbackground%2Dposition%3A%2D108px%20%2D78px%7Di%2Eflag%2Ebritish%2Evirgin%2Eislands%3Abefore%2Ci%2Eflag%2Evg%3Abefore%7Bbackground%2Dposition%3A%2D108px%20%2D104px%7Di%2Eflag%2Eus%2Evirgin%2Eislands%3Abefore%2Ci%2Eflag%2Evi%3Abefore%7Bbackground%2Dposition%3A%2D108px%20%2D130px%7Di%2Eflag%2Evietnam%3Abefore%2Ci%2Eflag%2Evn%3Abefore%7Bbackground%2Dposition%3A%2D108px%20%2D156px%7Di%2Eflag%2Evanuatu%3Abefore%2Ci%2Eflag%2Evu%3Abefore%7Bbackground%2Dposition%3A%2D108px%20%2D182px%7Di%2Eflag%2Egb%2Ewls%3Abefore%2Ci%2Eflag%2Ewales%3Abefore%7Bbackground%2Dposition%3A%2D108px%20%2D208px%7Di%2Eflag%2Ewallis%2Eand%2Efutuna%3Abefore%2Ci%2Eflag%2Ewf%3Abefore%7Bbackground%2Dposition%3A%2D108px%20%2D234px%7Di%2Eflag%2Esamoa%3Abefore%2Ci%2Eflag%2Ews%3Abefore%7Bbackground%2Dposition%3A%2D108px%20%2D260px%7Di%2Eflag%2Eye%3Abefore%2Ci%2Eflag%2Eyemen%3Abefore%7Bbackground%2Dposition%3A%2D108px%20%2D286px%7Di%2Eflag%2Emayotte%3Abefore%2Ci%2Eflag%2Eyt%3Abefore%7Bbackground%2Dposition%3A%2D108px%20%2D312px%7Di%2Eflag%2Esouth%2Eafrica%3Abefore%2Ci%2Eflag%2Eza%3Abefore%7Bbackground%2Dposition%3A%2D108px%20%2D338px%7Di%2Eflag%2Ezambia%3Abefore%2Ci%2Eflag%2Ezm%3Abefore%7Bbackground%2Dposition%3A%2D108px%20%2D364px%7Di%2Eflag%2Ezimbabwe%3Abefore%2Ci%2Eflag%2Ezw%3Abefore%7Bbackground%2Dposition%3A%2D108px%20%2D390px%7D%2Eui%2Eheader%7Bborder%3Anone%3Bmargin%3Acalc%282rem%20%2D%20%2E14285em%29%200%201rem%3Bpadding%3A0%3Bfont%2Dfamily%3ALato%2C%27Helvetica%20Neue%27%2CArial%2CHelvetica%2Csans%2Dserif%3Bfont%2Dweight%3A700%3Bline%2Dheight%3A1%2E2857em%3Btext%2Dtransform%3Anone%3Bcolor%3Argba%280%2C0%2C0%2C%2E87%29%7D%2Eui%2Eheader%3Afirst%2Dchild%7Bmargin%2Dtop%3A%2D%2E14285em%7D%2Eui%2Eheader%3Alast%2Dchild%7Bmargin%2Dbottom%3A0%7D%2Eui%2Eheader%20%2Esub%2Eheader%7Bdisplay%3Ablock%3Bfont%2Dweight%3A400%3Bpadding%3A0%3Bmargin%3A0%3Bline%2Dheight%3A1%2E2em%3Bcolor%3Argba%280%2C0%2C0%2C%2E6%29%7D%2Eui%2Eheader%3E%2Eicon%7Bdisplay%3Atable%2Dcell%3Bopacity%3A1%3Bfont%2Dsize%3A1%2E5em%3Bpadding%2Dtop%3A%2E14285em%3Bvertical%2Dalign%3Amiddle%7D%2Eui%2Eheader%20%2Eicon%3Aonly%2Dchild%7Bdisplay%3Ainline%2Dblock%3Bpadding%3A0%3Bmargin%2Dright%3A%2E75rem%7D%2Eui%2Eheader%3E%2Eimage%2C%2Eui%2Eheader%3Eimg%7Bdisplay%3Ainline%2Dblock%3Bmargin%2Dtop%3A%2E14285em%3Bwidth%3A2%2E5em%3Bheight%3Aauto%3Bvertical%2Dalign%3Amiddle%7D%2Eui%2Eheader%3E%2Eimage%3Aonly%2Dchild%2C%2Eui%2Eheader%3Eimg%3Aonly%2Dchild%7Bmargin%2Dright%3A%2E75rem%7D%2Eui%2Eheader%20%2Econtent%7Bdisplay%3Ainline%2Dblock%3Bvertical%2Dalign%3Atop%7D%2Eui%2Eheader%3E%2Eimage%2B%2Econtent%2C%2Eui%2Eheader%3Eimg%2B%2Econtent%7Bpadding%2Dleft%3A%2E75rem%3Bvertical%2Dalign%3Amiddle%7D%2Eui%2Eheader%3E%2Eicon%2B%2Econtent%7Bpadding%2Dleft%3A%2E75rem%3Bdisplay%3Atable%2Dcell%3Bvertical%2Dalign%3Amiddle%7D%2Eui%2Eheader%20%2Eui%2Elabel%7Bfont%2Dsize%3A%27%27%3Bmargin%2Dleft%3A%2E5rem%3Bvertical%2Dalign%3Amiddle%7D%2Eui%2Eheader%2Bp%7Bmargin%2Dtop%3A0%7Dh1%2Eui%2Eheader%7Bfont%2Dsize%3A2rem%7Dh2%2Eui%2Eheader%7Bfont%2Dsize%3A1%2E714rem%7Dh3%2Eui%2Eheader%7Bfont%2Dsize%3A1%2E28rem%7Dh4%2Eui%2Eheader%7Bfont%2Dsize%3A1%2E071rem%7Dh5%2Eui%2Eheader%7Bfont%2Dsize%3A1rem%7Dh1%2Eui%2Eheader%20%2Esub%2Eheader%2Ch2%2Eui%2Eheader%20%2Esub%2Eheader%7Bfont%2Dsize%3A1%2E14285714rem%7Dh3%2Eui%2Eheader%20%2Esub%2Eheader%2Ch4%2Eui%2Eheader%20%2Esub%2Eheader%7Bfont%2Dsize%3A1rem%7Dh5%2Eui%2Eheader%20%2Esub%2Eheader%7Bfont%2Dsize%3A%2E92857143rem%7D%2Eui%2Ehuge%2Eheader%7Bmin%2Dheight%3A1em%3Bfont%2Dsize%3A2em%7D%2Eui%2Elarge%2Eheader%7Bfont%2Dsize%3A1%2E714em%7D%2Eui%2Emedium%2Eheader%7Bfont%2Dsize%3A1%2E28em%7D%2Eui%2Esmall%2Eheader%7Bfont%2Dsize%3A1%2E071em%7D%2Eui%2Etiny%2Eheader%7Bfont%2Dsize%3A1em%7D%2Eui%2Ehuge%2Eheader%20%2Esub%2Eheader%2C%2Eui%2Elarge%2Eheader%20%2Esub%2Eheader%7Bfont%2Dsize%3A1%2E14285714rem%7D%2Eui%2Eheader%20%2Esub%2Eheader%2C%2Eui%2Esmall%2Eheader%20%2Esub%2Eheader%7Bfont%2Dsize%3A1rem%7D%2Eui%2Etiny%2Eheader%20%2Esub%2Eheader%7Bfont%2Dsize%3A%2E92857143rem%7D%2Eui%2Esmall%2Esub%2Eheader%7Bfont%2Dsize%3A%2E78571429em%7D%2Eui%2Esub%2Eheader%7Bpadding%3A0%3Bmargin%2Dbottom%3A%2E14285714rem%3Bfont%2Dweight%3A700%3Btext%2Dtransform%3Auppercase%3Bcolor%3A%27%27%3Bfont%2Dsize%3A%2E85714286em%7D%2Eui%2Elarge%2Esub%2Eheader%7Bfont%2Dsize%3A%2E92857143em%7D%2Eui%2Ehuge%2Esub%2Eheader%7Bfont%2Dsize%3A1em%7D%2Eui%2Eicon%2Eheader%7Bdisplay%3Ainline%2Dblock%3Btext%2Dalign%3Acenter%3Bmargin%3A2rem%200%201rem%7D%2Eui%2Eicon%2Eheader%3Aafter%7Bcontent%3A%27%27%3Bdisplay%3Ablock%3Bheight%3A0%3Bclear%3Aboth%3Bvisibility%3Ahidden%7D%2Eui%2Eicon%2Eheader%3Afirst%2Dchild%7Bmargin%2Dtop%3A0%7D%2Eui%2Eicon%2Eheader%20%2Eicon%7Bfloat%3Anone%3Bdisplay%3Ablock%3Bwidth%3Aauto%3Bheight%3Aauto%3Bline%2Dheight%3A1%3Bpadding%3A0%3Bfont%2Dsize%3A3em%3Bmargin%3A0%20auto%20%2E5rem%3Bopacity%3A1%7D%2Eui%2Eicon%2Eheader%20%2Econtent%7Bdisplay%3Ablock%3Bpadding%3A0%7D%2Eui%2Eicon%2Eheader%20%2Ecircular%2Eicon%2C%2Eui%2Eicon%2Eheader%20%2Esquare%2Eicon%7Bfont%2Dsize%3A2em%7D%2Eui%2Eblock%2Eicon%2Eheader%20%2Eicon%7Bmargin%2Dbottom%3A0%7D%2Eui%2Eicon%2Eheader%2Ealigned%7Bmargin%2Dleft%3Aauto%3Bmargin%2Dright%3Aauto%3Bdisplay%3Ablock%7D%2Eui%2Edisabled%2Eheader%7Bopacity%3A%2E45%7D%2Eui%2Einverted%2Eheader%7Bcolor%3A%23FFF%7D%2Eui%2Einverted%2Eheader%20%2Esub%2Eheader%7Bcolor%3Argba%28255%2C255%2C255%2C%2E8%29%7D%2Eui%2Einverted%2Eattached%2Eheader%7Bbackground%3A%2Dwebkit%2Dlinear%2Dgradient%28transparent%2Crgba%280%2C0%2C0%2C%2E05%29%29%20%23545454%3Bbackground%3Alinear%2Dgradient%28transparent%2Crgba%280%2C0%2C0%2C%2E05%29%29%20%23545454%3Bbox%2Dshadow%3Anone%3Bborder%2Dcolor%3Atransparent%7D%2Eui%2Einverted%2Eblock%2Eheader%7Bbackground%3A%2Dwebkit%2Dlinear%2Dgradient%28transparent%2Crgba%280%2C0%2C0%2C%2E05%29%29%20%23545454%3Bbackground%3Alinear%2Dgradient%28transparent%2Crgba%280%2C0%2C0%2C%2E05%29%29%20%23545454%3Bbox%2Dshadow%3Anone%3Bborder%2Dbottom%3Anone%7D%2Eui%2Ered%2Eheader%7Bcolor%3A%23DB2828%21important%7Da%2Eui%2Ered%2Eheader%3Ahover%7Bcolor%3A%23d01919%21important%7D%2Eui%2Ered%2Edividing%2Eheader%7Bborder%2Dbottom%3A2px%20solid%20%23DB2828%7D%2Eui%2Einverted%2Ered%2Eheader%7Bcolor%3A%23FF695E%21important%7Da%2Eui%2Einverted%2Ered%2Eheader%3Ahover%7Bcolor%3A%23ff5144%21important%7D%2Eui%2Eorange%2Eheader%7Bcolor%3A%23F2711C%21important%7Da%2Eui%2Eorange%2Eheader%3Ahover%7Bcolor%3A%23f26202%21important%7D%2Eui%2Eorange%2Edividing%2Eheader%7Bborder%2Dbottom%3A2px%20solid%20%23F2711C%7D%2Eui%2Einverted%2Eorange%2Eheader%7Bcolor%3A%23FF851B%21important%7Da%2Eui%2Einverted%2Eorange%2Eheader%3Ahover%7Bcolor%3A%23ff7701%21important%7D%2Eui%2Eolive%2Eheader%7Bcolor%3A%23B5CC18%21important%7Da%2Eui%2Eolive%2Eheader%3Ahover%7Bcolor%3A%23a7bd0d%21important%7D%2Eui%2Eolive%2Edividing%2Eheader%7Bborder%2Dbottom%3A2px%20solid%20%23B5CC18%7D%2Eui%2Einverted%2Eolive%2Eheader%7Bcolor%3A%23D9E778%21important%7Da%2Eui%2Einverted%2Eolive%2Eheader%3Ahover%7Bcolor%3A%23d8ea5c%21important%7D%2Eui%2Eyellow%2Eheader%7Bcolor%3A%23FBBD08%21important%7Da%2Eui%2Eyellow%2Eheader%3Ahover%7Bcolor%3A%23eaae00%21important%7D%2Eui%2Eyellow%2Edividing%2Eheader%7Bborder%2Dbottom%3A2px%20solid%20%23FBBD08%7D%2Eui%2Einverted%2Eyellow%2Eheader%7Bcolor%3A%23FFE21F%21important%7Da%2Eui%2Einverted%2Eyellow%2Eheader%3Ahover%7Bcolor%3A%23ffdf05%21important%7D%2Eui%2Egreen%2Eheader%7Bcolor%3A%2321BA45%21important%7Da%2Eui%2Egreen%2Eheader%3Ahover%7Bcolor%3A%2316ab39%21important%7D%2Eui%2Egreen%2Edividing%2Eheader%7Bborder%2Dbottom%3A2px%20solid%20%2321BA45%7D%2Eui%2Einverted%2Egreen%2Eheader%7Bcolor%3A%232ECC40%21important%7Da%2Eui%2Einverted%2Egreen%2Eheader%3Ahover%7Bcolor%3A%2322be34%21important%7D%2Eui%2Eteal%2Eheader%7Bcolor%3A%2300B5AD%21important%7Da%2Eui%2Eteal%2Eheader%3Ahover%7Bcolor%3A%23009c95%21important%7D%2Eui%2Eteal%2Edividing%2Eheader%7Bborder%2Dbottom%3A2px%20solid%20%2300B5AD%7D%2Eui%2Einverted%2Eteal%2Eheader%7Bcolor%3A%236DFFFF%21important%7Da%2Eui%2Einverted%2Eteal%2Eheader%3Ahover%7Bcolor%3A%2354ffff%21important%7D%2Eui%2Eblue%2Eheader%7Bcolor%3A%232185D0%21important%7Da%2Eui%2Eblue%2Eheader%3Ahover%7Bcolor%3A%231678c2%21important%7D%2Eui%2Eblue%2Edividing%2Eheader%7Bborder%2Dbottom%3A2px%20solid%20%232185D0%7D%2Eui%2Einverted%2Eblue%2Eheader%7Bcolor%3A%2354C8FF%21important%7Da%2Eui%2Einverted%2Eblue%2Eheader%3Ahover%7Bcolor%3A%233ac0ff%21important%7D%2Eui%2Eviolet%2Eheader%7Bcolor%3A%236435C9%21important%7Da%2Eui%2Eviolet%2Eheader%3Ahover%7Bcolor%3A%235829bb%21important%7D%2Eui%2Eviolet%2Edividing%2Eheader%7Bborder%2Dbottom%3A2px%20solid%20%236435C9%7D%2Eui%2Einverted%2Eviolet%2Eheader%7Bcolor%3A%23A291FB%21important%7Da%2Eui%2Einverted%2Eviolet%2Eheader%3Ahover%7Bcolor%3A%238a73ff%21important%7D%2Eui%2Epurple%2Eheader%7Bcolor%3A%23A333C8%21important%7Da%2Eui%2Epurple%2Eheader%3Ahover%7Bcolor%3A%239627ba%21important%7D%2Eui%2Epurple%2Edividing%2Eheader%7Bborder%2Dbottom%3A2px%20solid%20%23A333C8%7D%2Eui%2Einverted%2Epurple%2Eheader%7Bcolor%3A%23DC73FF%21important%7Da%2Eui%2Einverted%2Epurple%2Eheader%3Ahover%7Bcolor%3A%23d65aff%21important%7D%2Eui%2Epink%2Eheader%7Bcolor%3A%23E03997%21important%7Da%2Eui%2Epink%2Eheader%3Ahover%7Bcolor%3A%23e61a8d%21important%7D%2Eui%2Epink%2Edividing%2Eheader%7Bborder%2Dbottom%3A2px%20solid%20%23E03997%7D%2Eui%2Einverted%2Epink%2Eheader%7Bcolor%3A%23FF8EDF%21important%7Da%2Eui%2Einverted%2Epink%2Eheader%3Ahover%7Bcolor%3A%23ff74d8%21important%7D%2Eui%2Ebrown%2Eheader%7Bcolor%3A%23A5673F%21important%7Da%2Eui%2Ebrown%2Eheader%3Ahover%7Bcolor%3A%23975b33%21important%7D%2Eui%2Ebrown%2Edividing%2Eheader%7Bborder%2Dbottom%3A2px%20solid%20%23A5673F%7D%2Eui%2Einverted%2Ebrown%2Eheader%7Bcolor%3A%23D67C1C%21important%7Da%2Eui%2Einverted%2Ebrown%2Eheader%3Ahover%7Bcolor%3A%23c86f11%21important%7D%2Eui%2Egrey%2Eheader%7Bcolor%3A%23767676%21important%7Da%2Eui%2Egrey%2Eheader%3Ahover%7Bcolor%3A%23838383%21important%7D%2Eui%2Egrey%2Edividing%2Eheader%7Bborder%2Dbottom%3A2px%20solid%20%23767676%7D%2Eui%2Einverted%2Egrey%2Eheader%7Bcolor%3A%23DCDDDE%21important%7Da%2Eui%2Einverted%2Egrey%2Eheader%3Ahover%7Bcolor%3A%23cfd0d2%21important%7D%2Eui%2Eleft%2Ealigned%2Eheader%7Btext%2Dalign%3Aleft%7D%2Eui%2Eright%2Ealigned%2Eheader%7Btext%2Dalign%3Aright%7D%2Eui%2Ecenter%2Ealigned%2Eheader%2C%2Eui%2Ecentered%2Eheader%7Btext%2Dalign%3Acenter%7D%2Eui%2Ejustified%2Eheader%7Btext%2Dalign%3Ajustify%7D%2Eui%2Ejustified%2Eheader%3Aafter%7Bdisplay%3Ainline%2Dblock%3Bcontent%3A%27%27%3Bwidth%3A100%25%7D%2Eui%2Efloated%2Eheader%2C%2Eui%5Bclass%2A%3D%22left%20floated%22%5D%2Eheader%7Bfloat%3Aleft%3Bmargin%2Dtop%3A0%3Bmargin%2Dright%3A%2E5em%7D%2Eui%5Bclass%2A%3D%22right%20floated%22%5D%2Eheader%7Bfloat%3Aright%3Bmargin%2Dtop%3A0%3Bmargin%2Dleft%3A%2E5em%7D%2Eui%2Efitted%2Eheader%7Bpadding%3A0%7D%2Eui%2Edividing%2Eheader%7Bpadding%2Dbottom%3A%2E21428571rem%3Bborder%2Dbottom%3A1px%20solid%20rgba%2834%2C36%2C38%2C%2E15%29%7D%2Eui%2Edividing%2Eheader%20%2Esub%2Eheader%7Bpadding%2Dbottom%3A%2E21428571rem%7D%2Eui%2Edividing%2Eheader%20%2Eicon%7Bmargin%2Dbottom%3A0%7D%2Eui%2Einverted%2Edividing%2Eheader%7Bborder%2Dbottom%2Dcolor%3Argba%28255%2C255%2C255%2C%2E1%29%7D%2Eui%2Eblock%2Eheader%7Bbackground%3A%23F3F4F5%3Bpadding%3A%2E78571429rem%201rem%3Bbox%2Dshadow%3Anone%3Bborder%3A1px%20solid%20%23D4D4D5%3Bborder%2Dradius%3A%2E28571429rem%7D%2Eui%2Etiny%2Eblock%2Eheader%7Bfont%2Dsize%3A%2E85714286rem%7D%2Eui%2Esmall%2Eblock%2Eheader%7Bfont%2Dsize%3A%2E92857143rem%7D%2Eui%2Eblock%2Eheader%3Anot%28h1%29%3Anot%28h2%29%3Anot%28h3%29%3Anot%28h4%29%3Anot%28h5%29%3Anot%28h6%29%7Bfont%2Dsize%3A1rem%7D%2Eui%2Elarge%2Eblock%2Eheader%7Bfont%2Dsize%3A1%2E14285714rem%7D%2Eui%2Ehuge%2Eblock%2Eheader%7Bfont%2Dsize%3A1%2E42857143rem%7D%2Eui%2Eattached%2Eheader%7Bbackground%3A%23FFF%3Bpadding%3A%2E78571429rem%201rem%3Bmargin%2Dleft%3A%2D1px%3Bmargin%2Dright%3A%2D1px%3Bbox%2Dshadow%3Anone%3Bborder%3A1px%20solid%20%23D4D4D5%7D%2Eui%2Eattached%2Eblock%2Eheader%7Bbackground%3A%23F3F4F5%7D%2Eui%2Eattached%3Anot%28%2Etop%29%3Anot%28%2Ebottom%29%2Eheader%7Bmargin%2Dtop%3A0%3Bmargin%2Dbottom%3A0%3Bborder%2Dtop%3Anone%3Bborder%2Dradius%3A0%7D%2Eui%2Etop%2Eattached%2Eheader%7Bmargin%2Dbottom%3A0%3Bborder%2Dradius%3A%2E28571429rem%20%2E28571429rem%200%200%7D%2Eui%2Ebottom%2Eattached%2Eheader%7Bmargin%2Dtop%3A0%3Bborder%2Dtop%3Anone%3Bborder%2Dradius%3A0%200%20%2E28571429rem%20%2E28571429rem%7D%2Eui%2Etiny%2Eattached%2Eheader%7Bfont%2Dsize%3A%2E85714286em%7D%2Eui%2Esmall%2Eattached%2Eheader%7Bfont%2Dsize%3A%2E92857143em%7D%2Eui%2Eattached%2Eheader%3Anot%28h1%29%3Anot%28h2%29%3Anot%28h3%29%3Anot%28h4%29%3Anot%28h5%29%3Anot%28h6%29%7Bfont%2Dsize%3A1em%7D%2Eui%2Elarge%2Eattached%2Eheader%7Bfont%2Dsize%3A1%2E14285714em%7D%2Eui%2Ehuge%2Eattached%2Eheader%7Bfont%2Dsize%3A1%2E42857143em%7D%2Eui%2Eheader%3Anot%28h1%29%3Anot%28h2%29%3Anot%28h3%29%3Anot%28h4%29%3Anot%28h5%29%3Anot%28h6%29%7Bfont%2Dsize%3A1%2E28em%7D%40font%2Dface%7Bfont%2Dfamily%3AIcons%3Bsrc%3Aurl%28data%3Aapplication%2Fvnd%2Ems%2Dfontobject%3Bbase64%2C5ioBAAAqAQACAAIABAAAAAAAAAAAAAAAAAABAJABAAAEAExQAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAALnUM0gAAAAAAAAAAAAAAAAAAAAAAABYARgBvAG4AdABBAHcAZQBzAG8AbQBlAAAADgBSAGUAZwB1AGwAYQByAAAAJABWAGUAcgBzAGkAbwBuACAANAAuADYALgAzACAAMgAwADEANgAAACYARgBvAG4AdABBAHcAZQBzAG8AbQBlACAAUgBlAGcAdQBsAGEAcgAAAAAAQlNHUAAAAAAAAAAAAAAAAAAAAAADAfuUASn4ASn8AO%2FKFM3pjM%2FSEVmjRApN5UYeAHiZoKQ%2BsJvend4XEADGjylbHBQxybVI0e2miS1BKUbg1dmcMhjml2mXhSnfulUZJ%2BsmYQuOO2Oa2m5iJLwnOs%2BupSt6QVCge3Vfylw71byEHM10gtByW6nskMkTXEMwWO%2FqJ76q4cIrleE9jHC2Jy1Yhlq3hPnZ099Ir62yWqsUJM%2B%2BLjWB6f%2BYzqAqDP5W9lzvwDKlbKuJV0yn0fZWPcLbvC%2FTNXhfcp%2BZU4mhGVT7o04Utiy7HEtnoRC65JIJIOUGxJaTXlDjSXR0ZpmGRF73WNgEgsafwXPFR0zhd3iy9g4onbl%2BrKCh6V4P%2FqynK0i5sqZLLDk5WHGsDxZz6ZFaMEk%2B%2Fc8aEBBU4YgE%2FAjgY0EH%2BZp1oq0x6ZVLikpqAFQnSuMDGBzBBlRgkwUYLM8KWkDSBxA8QgDqAISKEKGKIIUKKKMKOIWIY1QprM1i9ukRN2cVU%2FP4oYSuQUIN4%2FwAi2HUu4pTEsT3p3xd56jMnM26pqrWHJatlDWWUsqMqtbNcYEDK9wDJ7K2WKCjqmotU5QmuZ0Byw0IKEBWi86GZdbv4ElaNQQgUFCupZ%2Fx2A06bUPbejoQYU3BJPC4HzpTg1j%2BcO5QdDGz4pIppDYpVHFDWhqQYoMEb1RI6oHlEIIqHQNJcglwiwRUIoETBu0R0QN4NRGoLyemLBYs1xel39glS1QKoEUdKbmLx7dKATIkDke1nGU%2F2r3I6BCEshuVZghFAzPkmbaFovRQRiV85VVh%2B5lOHj5l51QAN8OfhbMzEBOjg0Czpx36QlBOYl7L3djK84yrjcM3JGjJWIjbRjJAxOzOY2owyTgSRQ5%2FvQ0SwOI697OJBc3mxuG%2BnNDODizeu1zAxTz88hQUWrz%2FANTpWwa8xqTqKzg7weTqJ6r%2FeTXzeK0GxK3Yqk7o1Dtcb2GgtOcNAfBp7PU8PDzgaAqCpcKr64giTuWVgqwibTiQQfiO3xyVspqZvw2pyhAr8DdCtVuALy%2FCzBcgHy77sfE5W3EPtHshekwCPzPkvGUTsjMNb1AdBbkprZPOMapyekYNyQaiowsGg1K8Bk2jGDQ5xSKNN%2FDrw24GoGw4PtFBBlW1mXfagD6GcLyOBpES%2FWPdtHVOSXrRUSmanBYEI0I9jePebh3PNYmc8NAtQpZdAXOQzhYGSvzwkkfQhKTJYU1d0TKEq9yjAdFJ6jMGsgdNlqaUyB%2BQBL5YICOuUtr9iFqKV4ENkGVI69ZpOBQ5gGS46WcenlEMoI7Z2BNrjAWM919eCTjqXHbLfoAMKpQJ0FIPYFpksQ%2FdJ%2BSkamknTjawRuElCvS6OV4kr2MrMRuRqkUsuIZAlXAdRpN%2BsVeqzxptlgnjnp5cfZgDSLZgn4xdqgFgSGI0UZTtg4IbpTAYtNAeBtavE6Au7W3%2FMZHL6Q7XtahUEOm9d2WvNAJToFEGdPR0ATqOMmOBOCRC2%2BDFu0MmHITwO1YWWRKZ%2Bw7K8G0jYHBQOFgD%2BTlRwUX3kqWTjvofy08gzY5Ye%2FNs%2Fis5BTyIjYycTRILSPsl0CqE7RQty2hYgXQCmL5C%2F5sG6CIny8Pr0kVdmrB08cjupaRhjSMoSYPNQFMC78VxMAKLAYKGzzizhBqFiuzeZoJYTjRKPGQ0THtPhEEQ4kg8o3kMxtkwCbEJKg6WZRhRz5nfNyD9EE2%2BY371MGjaabcEGYbiISWITWhCATcMHbDPCwMH0yoMIKPukAgdTEQEAwIWjg0w%2FG5Yf5ecMdH6MBjyHmRmSLsncogyMFdYsYeoDMAilGEV7Dehu5sVN6e%2Fk1ckeTJVpdJxLrBUaBtCJpzLIRamFsMxiWbFFzaU%2Fh4qVJYNqktLPpaCqNAcAAYIigHwrLT5lsYvMNR%2FYCZGJY5BHYupwSHXu1tnkAmRLF2FCMT3WHg9xmGgBd0QL4MoLKgTTFtNhGKeL8kJuA1ZYZTqZk66qrjKwmjNQ9JZnxSp4mwUBgYCA%2Fke9YwIyVMFNtWXK6rOSE4KRKiwnNUwQ1xSknzVGI1u9ksGWyjdCRvCNQKKM0mXHLxx4dGaGIjvLCQBrNw2i9GSaNxzh8QH%2BqtUMbivN6bqWYaWFdiR57nM5ORjBRcFUqCqFxs5Vr%2FDtFb0kASLk61miWSedmdnrzEr0Ra8UqiGQu%2F7LUrFowo9BJT7NRa4od7bLBZIpQuaT0gfKZN0kv4nzaB1L3AujbNppwyZcFAm%2FPFJIu0iUSUe%2FDoenq%2BqyhnonUhEmwoqAAjgqfF8iJkAfJR3G9IRIjaRb1PUs2ZIx6JGyXajhdkgsGiLVh6yvYY0WnPQS0zTkzGc0NToDbquj15XgH4V8i2hYF44NL3tfBQdJMVPASpPMuZIM4OnMCJ3Qyhy5cyRD2CpcdrNJBLTjsf8DciRCOjugMGtVjIqFzChKdootwAW4AX0gd6UNZk0AJlADqIBjCh881IIH3%2FP8QHde6T8lKB3VR1PSPyqQR8kExjB5cQbgXFJU57LxjQY7Exmig4ncdBOZqwdfvwDtectB9BAEYAz%2BkAdY8%2FXtO%2FAwNevL6Pxl8yvtPCgDhwjeMwIXp8NhcEfIbcnjwtLB8buIec9f19yBk9IkLVC%2F11F9L%2F3dQUdx2US4S%2BNJCPyjPK9PXTVdLKB%2F3QxulAgyoSJ5gINp1NUR%2FheIEndBytJZauEbOSl2uoARAOhKMVZbMkWZciORASgVKN6K2gAR%2F4N3FIGgIEvIeHc6RbgI%2B4DgiKUGGbD5pyxBALcOaSY7oXI2lUQuaBR8wbQ%2FKFehb8F2JziR3PyTBbm5oaaxPRUfA%2FPBVcnq4Qj%2FskrwiSAbqJYlPHvo%2BN9HZ9NgWbqi8lm5Q4aMDT17DMMNMvC6pJjkhyfDnZHwHwKoq%2BNqMorgVOkdS0G75Maf2vhUvhHHgm37j59bFLakcuqX5SBZL%2FOgigj0TPORcl%2B6wMMVvhtNu5VLEWabeSK4SNCJcuXiI5%2BTIJr1g49rHItUzuRp8yhVHzZu%2FQdTvQxDRspMYBmBG9r7ivtYMouP3rTUNjmgO31AGS50aqjIOWrHBM5Nk2fIb6wukg0NuZU%2FcIJl%2BGaK%2BsYdV9dJjFs3j2wm3WwObx%2BzJ47TlVz00kqJw6GjvPG3hINgGitsxJfgtyyy5pGeCqCGSPRlo7LR5q43FsdWcHAAV4ROF2LObChR4TZhZyA8z6W4GxgWbAjMhUe3kgTIxUmrAusIJAotZKVq2fM9Lsz%2B0zy8zf3kVpRUKQnOeFk7DJ20%2BvgShomJwmjF45uFhcuKGMdERhA2IwLAFVMZMGUJIDpfHC%2FjGeoliLgr8pLnUvyoiOwEHX0ygJAfcwpXIyFsVJZuaXFqBIFQ1D6DzsUlreBnVU7%2FBsJAD7KsUED9IgjmTNsML42vKyd1UFLRhRWqSKldJdalROEVzxd0e%2Br0rYE59Cg1yiN7tl1ohTucPpn5DR7Os4VzSB8JwmUgPR5X1mh7FOjAlFHhEoes43KC%2F2P4hFjWjzIVSmpiC4TC%2FJUx5HV4vSSYki1OY%2FVGKlVwWSggEaRwD8AfnZkvqQuauRxdawuPn%2BUSDjy1qowunK9VRc5S59HIc%2FeARdJMjss7hstXzTriwDLo5KJwpTdJYIBMHKlYrFk1JIlTBh20FnKSi3bN%2BnijnQy6aC2P7qGG9JdmTGpUVkcF%2BppOBHm%2BICl8YI6FTkyzY3%2Fku5mhUyOOTa3dCAdHUceenCnEpGGnh1abv64GFpVf0MJLXiNY8BJXZ2%2BkdPSLZd9CymFeZDc9PzGBwQU0dR%2B%2Flzk1tXqQ4FbYhJcrwQuw2l7YajNQ8soktqeyJ7IWdW%2FJhFQcDgyZfH8GjYAnTWddYmHZGwTkgvFeJOIiIBpGiiWLnwwcSZp1TP%2FtXaQ0UyhB%2BhyO%2BRKGwRpONb7J7JohAzGymh890OCl9HtvhO9pcotQL3HgQ7wQIV42F7aJay%2B6wKjO3dK93Z3sTUhtewmF44IqrXgEn2KP6hdBFKmbkhTOk9qZUHyH%2F%2FOkNN%2BNCq9KZOw3OZRcES%2BV75cfTLhB5WGMeuYiArXH6Nm8V6THJbR%2BNU0INtsLO4xDpIR5xCtV7%2FIlSAUxu5W2iwmCip68RnBkOUJ%2FVs8qGqiRijzxaXQMg51NT%2F4TFX1ZHqrpDVJP0Sfw0eO5ENvF0hTtPfexvrbwqWux%2B3ZTNOLAYCnpURjTHOGhSRFuU6Rei9frJ7hLoUnbEVI0zx3JefIAq%2FcgQt%2BFWfm3wsyeC7QLFO2k4pH2iPrAFNRn3QkQjLvSVV9ACA%2FD1KSaw2Rxwn5I0ZvWgiCGDIBHAqZ8LRKFiSrBCXT0jZWCN6eNCKPDlDbxIToeqjkCdUzixf3vtSf%2B0rHOpeMAbXYvIdNgf4DXBRtTQSdfButjSvXeJQeb4fhwnbjyay2EeaMN0oOJdq0YxBQiEQhi5lMhHI1%2B3E2rJI10DkO3raa5Vcr8MB8k2iBnUJuew%2FnYMDFGIEoipEokZQ%2F%2BktV4fkSn4JF5G8T8QBlWTPXvikYVMrritrUZFltkeljz%2FbETvdAaqB54KZe7I8kuMi4Z2GMwEQiGWBBCedm4LDKgdTULKbioowkfmVUjhLgc9CJ2F82avrQaToZOYIzw8z8nnuTZFj9n4iCgDRH70Li%2FExwdnlAtjMdRuOGX2ZBxrum4TlDpIP3mgJc9PCVfZGPNR4bJSO1ML1RQKkoNvGVjLdwWqaxHvbW1c0qjTDRTBu9OcHZYjSAc5i7484B2Wnp%2B8TJHkKlh1cM0xjX0iR4Vl2rr5ZZZcdmVsaqxalUQ9hf3uG96FXVfSDc5vCUDZ8V5DiDfCdProGd4yk8rKBwYQmBJYGdaXaF%2B5dn58V1dGS8%2F8urZBENSzaQDVD%2BgsDtue9wNYZBJ%2BGp7SSozVuZQhRUQfv3%2BD4g9UInBIPZhXEM4mELIAqGiHzx9OjWGIcISYD0fSRUQhACaIUuqhtCCpy%2FAckOm4rwMpS6l0MZgSNQS0pHKhihaUExicpB8NYVJypEdyiI4dw6BJMGRqsg34SERBAKqbHb2F28D3PTyaFSt4pEVZB2TlkeGRGYwiVFVCPjwSRVbCcII7p9Y%2B5kfTdqBrgrcPuPYsSz0mIU12h3f8F7%2FbPYHInaFT4Fw2o2usDhU%2BnwKBN53lxCXoOpKGjnsG5GoyuKNG4QM0d6Sdv2zKZCVtVCrk305C5FG8epPhEij%2FOp84LPRfRQwjYF0vJw%2BotnW5jNTNX7MglW8yD9XSfgViGvaFtvsa8zx%2F3UpRKE%2BU%2FOpdEX1b5c2aOa%2F6SebJdmJUKUBJRBOr8V8dRAXFGdT%2BL9ueBRppuH4H3C91gtcYAeIoEtoQp96RMJEWOtS1EEXDRPuBhQ4gYBbEZQvbwFhT0qJwnoHxnxi%2ByaXijSyh2ZBO2Hk1uDG7SmhLWQx1qS0Un%2BwOhMD%2BehU7V5NhEert8rjC3GXiD%2BC%2BDuCJXxc0mzIPSfkw0iGwqyZCyV2FGKQH9boH%2BmptB%2BsHBc03FChnH1hED8oGYg3DOlcXp1FhaqvgyV%2BDgmgZmiEiBFxfsRSMEe6Xj9ZjBjXa6pYQcXzGCZbATYn2RlKCkTTUOVYGLL7%2FaOCXPtc5GecNfsKIBvohh0c8UDpl%2Frt5DC76ptv5CFl17Lsp%2FBCCASwAqQSPRojiQY%2BNMjP7kidC2lJJeKn5FS5QGMyC4SR0B5k9KaTzZibtyPodTYdmvwWtwEJrNo2ij1QTBMQBjEsC6SNEZEHnPQqRMNxTMcdiKgxer4UK2NxkygnqxmN9tMYnLK9DqjNLZrc7mrOG4Bg00egWikWZbKbOw5HogqiiifthvY9RlBQAx4CYUiizYH5PkAprnGnMNrJwlxA5%2FV50An10E%2FJwW0ZjJspFV2oCVQLvcAXB3CS9pGQghI0T7NUSBlj0RkHxZrLhu%2FYb6Oh76cktTbKgRviHMUBvmfG5%2FJwFTOdjqcTUqSpRYaSv7SI8bwKzFakn7LTYfiNqsFRoTeUTBUNvonbsmObHI5CCIRMvKbIKQmGqhj%2FJmUVvhMMd8a5AqxMfS3SXhTQ%2FTc%2BEy%2FIMAi1%2FYrJjqEPVPTvgShq9td6t%2F%2BqhggMa4LRTlADXmrqfnLMlvZ47dIQ8U0WU2ObFazF8N%2B5jy5qZAklj8lUBcy2kjUZiibC1MaC9xdKjSDymPwvdMyi%2BEGn5IFIWQJbrjyeI0fnwjnUcefmURHjQ2SEVJfSs0mp87QONeWDSJDmijghQK4uG1jIVos2gzrN%2B0W7jCjGqyRAWMZtObhoMHDTBzcKRjbaNJg8rNmHSZ1QbLVD%2FokW%2BOofKIvq48LE9lNF8fh8YtK%2BRZgdfmoN3rK4FHajCMONbNyJnC6IDHWZMGJFo%2BfPZIJtAzfw9etEcbXoIfrEAprGUeHYUv5bLL8W51j5SOB120KOrAf5JEQeG7DxiQwnRqwcGsVE4RAxITJVxZh3%2FDlN9gK6MApx%2BAIjpvQ0FIG49lvYM%2F7wtJzs00oyjkhh4Zzm61DOR4c5wNeN0ZPv9Ig5HcowYGpjIwqh53EUXsOEQJZJoNCCZjx%2FghpCYBIgtO6oy4BBSTD3fyFQiaVulx7ulST7EkCxaLmmW5PRkd%2BpBGXxaBTTheykq0gkjPfnyMnEAtICGfOry3C0QCnFEhbOxIQ9yZfhsyZy0IKC%2FNIPuOMgiEAyLq0iFYrwalQXjfQtsaCOx5Cc8DIfaZiUbJWZnaEco3cCg0QJkUJMYEATpOQ%2BzHDQ8%2BraNwMqcYuIEiN%2F0SWF9jj6ttxr7jGV%2FsAAc4rN5VDmC6mBew5qx6JvPaVIG1VXgMhyNsRozJFA8gDi8b%2FXgMlFnPQfmFzhC6AE2kLMOc6fz1ctaWQqL852ug6FygElw%2BMmhXXHYq2ypsAEkE0J6%2FCD%2FHTFM6lju%2B5r5ci3VQnC%2FxOFxTp%2BCk54NRJfNB0MHk4C04cN2EXW4qBeCyFI9M0ADeySgLUAMUhmdRBe8VQNQSoANggOuxqttnCASpvph11nVNTqjuURLb0clCzzsskEqrrY2qbzYKmlFLXCyFrMg78Ia9NUrLPBybkeVhwi51WlUIWw%2BsyzeV5lAasCjBRjNpRbN4mDi6VgMZb4nJjpig8QWLB1seFXYlikYzZBH1T7ygxfDGh64IofpSGzjB4ymrAxPy%2FxZA6wcqZOBBBPOqrpOCyY0y%2BRaEsbLcC9OGrpTSDqTO%2B1egBJbt0AvXm4iZ0ZDIEbXGrqIOzaLHUDm%2BszbRdXWkJ9IcnCEWLp0IlN4Eb61lTigItWsghpIcI3dgOdNnEgbcEg1mxUQCML03BIMWWfYHlH7Ff3e7ZZjs5y2w7UCspfSHTz39%2BEJOvOcHNFhW2FFiqLqtqQ6ApsdF8iE5dKA2TYgZmpZb%2BGTbkhbitqEQsvoUEoYD7jAwSr0UFg0r0XT4Ke2wBW9HPB%2F1Rx5zMJ4FDC5qp0Gf7A445aHl6himlF4H0FxXS6KMkbg7yISk9hIG%2Bn8HSVOZ3SSDKGKPNsxgfgrb420LQdNhVMB1wBB12shtQoidTOSmqSNdLbKkwlNoDEpGKMxQfF6GsyVLjjSVgW2Uj6ozdW8UTdWCBfDZRLYzSpntuKNheXDaSazmEwbXPmY6Bt8PU87gt1MDaznX72CP8VOAcV%2FZZP8NquDkSVWrB7ZtWbKq1TgDxNVrzS7uBnKpTjRsT4B0RKH2rZ8WCS8dW17IOZ1QtDmo5cxz%2FBrxDG4WK73VKLDH6CoVtfAPvK9SH%2F6Og4PYGKwaZ0Ntf1F7TBRK30ceJAnguAWnTlco%2F%2Fwcg5oMSX4jONim3lCKhPgB6fDX5bUJIFAZQHU2gNLuJtaReHgST1WJONr4qAjhAW%2FhFRaM%2FuVDabdkKiQ2ZSCIHi0ywEJQvLRqA49oFBRRCCtLH2NEsZfzDIbdgdrf2A5QewFdn1X1Z8RMymFIAogo5iGm1VLFAwji8Rhp5TPXdtaM5ThJfoLAbKVnq%2BdYif7G%2BIJyrYTFDqwzktgRymVRiwKBIG%2FjZ%2BTQ94XS5DKrB5%2BU3U7qPnHZZbH7lbjg1sYnUwWAMy5Hy39cz9kKVmQcnsaKNWEQj%2BCtODUdgTvkPJZQSWAjpcOwkQMJu8JbP5mdMRGFXOlwsnJRZQWWi3KsKIqdpsJYEi9YJsKSAXxFs4WK32e3YIAmSStuk%2FRhXiA3kCqZIQaKzvKeN8O4pxQQPzeidAdAnc3Utq78a1jCO05hUsYpCPy7sDAhOBUQI1AzKuZLZVQYNQQzZ0I612lQkZdqQu1AZQaIjhI4WSROEq3vPhlaRFa2BQ6oSEVBnQMrx0vSVsyVGDiJClfEuT7bIfRlGC0Wjb9wSqlAmcwSZcmEZIA3TDK2g4UQ%2BYLhoUyh4kIcy%2FwNb66HDtr3uoR1ukIMlj9HSq38QWP5x8owDonDh8sirOGIHOuFkWMQYkedTi8DoirOeuyZzXICLhSUXzHoLhLqLYJxSjABKmkpAGFJGxZh1HrHCdC4eeIWboy7GTgRH69ADBFYQIeKgEoNBXhHB2PLgVZBPsiMAORQFSp06fXF42HUALiq60KfOU82ek6aMTIi0x8YaKFAzyfWKfkhF54Q5JrkrjPsXkkcT0R06J16W7m6QKnNnaEGhdNsBqmyyAl5jCqI27hJcO2xATCFro1AMAkXqA7qOMrj4SjTwqbkgirzs9STLBu4bTm8pCAROuurHlaD5qgiqEs4eONKuisCSxpaa4msWxOPsRFW3mg1mC%2FRG7yoeaRGYeIFB2d0%2BpeuG1ETohOl3xRTwmNj1%2BJESUeErdDD8PAfMktPZ7Ybe4%2BNSRo%2BpUl7TemmyxhzGlWHOMoQ7NOsLyyMAR2NUYb7qIJ20aTgoHGudShoZoI0oPaoWnMw%2FcxstWkCSqMhPmMoeLLcrT7RDhwTJciQjln%2BRCOMRqUeKbYU1vysyeguDvoC2IOj7BSF0RNbYtNeTHmNdr6oCet0A8nwaVaAgQQ0UQfTF%2B9oNWHy1paYQBeW2LhQgpGOZAtJAlD82WA7PDMQJri%2Bwq7RWgWRe02atH1LJghIUC9HwlKmUxWA%2Fw%2F4HtDJTxEObWf4BfiI8THtwEm9C1CMV3FeSzmA9OMDOZUO47xzstQCQ5p9OLXZ%2BzuoRAIHs5ul1cDdPpiWj62rjk5kDAhH86XTHGhvxvt7V6%2BAZ3Ctw1o8WDzwrGBv%2BVoMfv9xAvwPP3Ecn5NE5%2B4rVUz6hwFJdZhREBjCuGC7UpC9KYVzPjrYXdsiKAKj6gvU89FiFGr3Laf8GtaEQq4yFAoTIaboAK%2B6Fj1%2BLalMoPB1%2Fx%2BGksKtQ7jDJe3GqZiImNgr6f7%2F8Pcz%2BeR8DKpKdOQJjP0UBl12ewEePJIgbqM9KHy3Tq%2Fz4pKOjCGKCI0KyJ4gYtiNVN9aZGAWoHNa%2BjHBmDmFXC%2F9%2BfV6PmufOwp5roanxjk7FYiazo15CvPCXfJJ77ce6te3YklzzaHOAsb1qOA7vNEXesYK44b7XNwl1SJqL%2B6dIybFitV%2BdRkn7RGDYoGbbtWjSvYKuLJXbKNemY%2FPg%2FFRm8PwwLC07Z2OzZpCUbIH3JCOsmtrOBu9GYhs7E8GHV6MhAiCMGFCSp0mYlT7JPDhgTpNDWtSFJSfsseBKra1YUCSDJDPPXkGM9StCFBSLpHUCgZQ9yuqBIp%2BlH4Lpjrxt5%2FaK0N2zjoJfASZPSBs2tQ6NuazmZGBYPk2Enrh8VopDVcfW2yJJQi3kXY%2BAodjodjr0RsG3jM%2FJYZysTLU0jCHoJqCcWi63EafLevd5qbQjSoKZ4sq6js9shCKAAiWmUMCA5Y5j5fIYQc%2BATxox0FzQgQKJQ0A0D2A6TgTxaHB3wTAJ7lNgJav8mSM7LPDkDuQBwMAULQ4HimCWRosnOh1FWcqguAOodvlmQ3J4UDKVtiyk7gQjfoN38MixEaJ0ssmWI4eLaB8xk%2BoiM7QbmK3qFDrfXYI9yY1yyQQn5bxBQ9Ye1VEIz%2BIhGdHYsMRnIPNl5H8o6nL51YelGphj%2B0YxuMGxjIbWbXHkuwyNFPWE5G2gDrAKo0CjieUyVM5zalQQJYJjlAKqjAEJgFOxb%2BUvzOAxMSpIupPBvncZE7MZar0ozP4BpiVQR30URR2lVnoNNPFBQM%2B7jAQM4yFpMQ9c7YRPAnB54URCPGJjvLWS4QT6WmDwMBw8YI0X6i%2FIG0LBMRnNBSrTmExmEyYzATkFQRmw4AlA1HRQcPIdwsx0EeRfdDpQJFSqT4JEdvIMPp%2BI82hegJ%2BKvIY7kr4o0qN8roWYqoGslFByCI%2F0c4nREjoNuzNKm0zm3BAiUipzCI%2FOkOKWNhODsmRx4WKBLLZEJMgldR9BiQhKm7JKIxUzTjPoOyVeaJAMyjR%2BzmjRHE7zzyvrVYn5
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment