Skip to content

Instantly share code, notes, and snippets.

@sachsmc
Last active February 15, 2016 19:31
Show Gist options
  • Select an option

  • Save sachsmc/4814836d96d3d825a67e to your computer and use it in GitHub Desktop.

Select an option

Save sachsmc/4814836d96d3d825a67e to your computer and use it in GitHub Desktop.
DC Moving Violations Feb 2010
license: mit
library(sp)
library(rgdal)
download.file("https://drive.google.com/uc?id=0B3bjEjYnux8nYzBPU1F4VkdlWFk&export=download",
destfile = "tmp.zip")
unzip("tmp.zip")
moving <- readOGR(".", layer = "MovingViol_Feb2010")
summary(moving@data)
# convert to lat/long
moving2 <- spTransform(moving, CRS("+proj=longlat"))
library(leaflet)
leaflet(moving2) %>% addProviderTiles("CartoDB.Positron") %>%
addMarkers(popup = ~as.character(TICKETTYPE), clusterOptions = markerClusterOptions())
This file has been truncated, but you can view the full file.
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="generator" content="pandoc" />
<title></title>
<script src="data:application/x-javascript;base64,KGZ1bmN0aW9uKCkgewogIC8vIElmIHdpbmRvdy5IVE1MV2lkZ2V0cyBpcyBhbHJlYWR5IGRlZmluZWQsIHRoZW4gdXNlIGl0OyBvdGhlcndpc2UgY3JlYXRlIGEKICAvLyBuZXcgb2JqZWN0LiBUaGlzIGFsbG93cyBwcmVjZWRpbmcgY29kZSB0byBzZXQgb3B0aW9ucyB0aGF0IGFmZmVjdCB0aGUKICAvLyBpbml0aWFsaXphdGlvbiBwcm9jZXNzICh0aG91Z2ggbm9uZSBjdXJyZW50bHkgZXhpc3QpLgogIHdpbmRvdy5IVE1MV2lkZ2V0cyA9IHdpbmRvdy5IVE1MV2lkZ2V0cyB8fCB7fTsKCiAgLy8gU2VlIGlmIHdlJ3JlIHJ1bm5pbmcgaW4gYSB2aWV3ZXIgcGFuZS4gSWYgbm90LCB3ZSdyZSBpbiBhIHdlYiBicm93c2VyLgogIHZhciB2aWV3ZXJNb2RlID0gd2luZG93LkhUTUxXaWRnZXRzLnZpZXdlck1vZGUgPQogICAgICAvXGJ2aWV3ZXJfcGFuZT0xXGIvLnRlc3Qod2luZG93LmxvY2F0aW9uKTsKCiAgLy8gU2VlIGlmIHdlJ3JlIHJ1bm5pbmcgaW4gU2hpbnkgbW9kZS4gSWYgbm90LCBpdCdzIGEgc3RhdGljIGRvY3VtZW50LgogIC8vIE5vdGUgdGhhdCBzdGF0aWMgd2lkZ2V0cyBjYW4gYXBwZWFyIGluIGJvdGggU2hpbnkgYW5kIHN0YXRpYyBtb2RlcywgYnV0CiAgLy8gb2J2aW91c2x5LCBTaGlueSB3aWRnZXRzIGNhbiBvbmx5IGFwcGVhciBpbiBTaGlueSBhcHBzL2RvY3VtZW50cy4KICB2YXIgc2hpbnlNb2RlID0gd2luZG93LkhUTUxXaWRnZXRzLnNoaW55TW9kZSA9CiAgICAgIHR5cGVvZih3aW5kb3cuU2hpbnkpICE9PSAidW5kZWZpbmVkIiAmJiAhIXdpbmRvdy5TaGlueS5vdXRwdXRCaW5kaW5nczsKCiAgLy8gV2UgY2FuJ3QgY291bnQgb24galF1ZXJ5IGJlaW5nIGF2YWlsYWJsZSwgc28gd2UgaW1wbGVtZW50IG91ciBvd24KICAvLyB2ZXJzaW9uIGlmIG5lY2Vzc2FyeS4KICBmdW5jdGlvbiBxdWVyeVNlbGVjdG9yQWxsKHNjb3BlLCBzZWxlY3RvcikgewogICAgaWYgKHR5cGVvZihqUXVlcnkpICE9PSAidW5kZWZpbmVkIiAmJiBzY29wZSBpbnN0YW5jZW9mIGpRdWVyeSkgewogICAgICByZXR1cm4gc2NvcGUuZmluZChzZWxlY3Rvcik7CiAgICB9CiAgICBpZiAoc2NvcGUucXVlcnlTZWxlY3RvckFsbCkgewogICAgICByZXR1cm4gc2NvcGUucXVlcnlTZWxlY3RvckFsbChzZWxlY3Rvcik7CiAgICB9CiAgfQoKICBmdW5jdGlvbiBhc0FycmF5KHZhbHVlKSB7CiAgICBpZiAodmFsdWUgPT09IG51bGwpCiAgICAgIHJldHVybiBbXTsKICAgIGlmICgkLmlzQXJyYXkodmFsdWUpKQogICAgICByZXR1cm4gdmFsdWU7CiAgICByZXR1cm4gW3ZhbHVlXTsKICB9CgogIC8vIEltcGxlbWVudCBqUXVlcnkncyBleHRlbmQKICBmdW5jdGlvbiBleHRlbmQodGFyZ2V0IC8qLCAuLi4gKi8pIHsKICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09IDEpIHsKICAgICAgcmV0dXJuIHRhcmdldDsKICAgIH0KICAgIGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7CiAgICAgIHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07CiAgICAgIGZvciAodmFyIHByb3AgaW4gc291cmNlKSB7CiAgICAgICAgaWYgKHNvdXJjZS5oYXNPd25Qcm9wZXJ0eShwcm9wKSkgewogICAgICAgICAgdGFyZ2V0W3Byb3BdID0gc291cmNlW3Byb3BdOwogICAgICAgIH0KICAgICAgfQogICAgfQogICAgcmV0dXJuIHRhcmdldDsKICB9CgogIC8vIElFOCBkb2Vzbid0IHN1cHBvcnQgQXJyYXkuZm9yRWFjaC4KICBmdW5jdGlvbiBmb3JFYWNoKHZhbHVlcywgY2FsbGJhY2ssIHRoaXNBcmcpIHsKICAgIGlmICh2YWx1ZXMuZm9yRWFjaCkgewogICAgICB2YWx1ZXMuZm9yRWFjaChjYWxsYmFjaywgdGhpc0FyZyk7CiAgICB9IGVsc2UgewogICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHZhbHVlcy5sZW5ndGg7IGkrKykgewogICAgICAgIGNhbGxiYWNrLmNhbGwodGhpc0FyZywgdmFsdWVzW2ldLCBpLCB2YWx1ZXMpOwogICAgICB9CiAgICB9CiAgfQoKICAvLyBSZXBsYWNlcyB0aGUgc3BlY2lmaWVkIG1ldGhvZCB3aXRoIHRoZSByZXR1cm4gdmFsdWUgb2YgZnVuY1NvdXJjZS4KICAvLwogIC8vIE5vdGUgdGhhdCBmdW5jU291cmNlIHNob3VsZCBub3QgQkUgdGhlIG5ldyBtZXRob2QsIGl0IHNob3VsZCBiZSBhIGZ1bmN0aW9uCiAgLy8gdGhhdCBSRVRVUk5TIHRoZSBuZXcgbWV0aG9kLiBmdW5jU291cmNlIHJlY2VpdmVzIGEgc2luZ2xlIGFyZ3VtZW50IHRoYXQgaXMKICAvLyB0aGUgb3ZlcnJpZGRlbiBtZXRob2QsIGl0IGNhbiBiZSBjYWxsZWQgZnJvbSB0aGUgbmV3IG1ldGhvZC4gVGhlIG92ZXJyaWRkZW4KICAvLyBtZXRob2QgY2FuIGJlIGNhbGxlZCBsaWtlIGEgcmVndWxhciBmdW5jdGlvbiwgaXQgaGFzIHRoZSB0YXJnZXQgcGVybWFuZW50bHkKICAvLyBib3VuZCB0byBpdCBzbyAidGhpcyIgd2lsbCB3b3JrIGNvcnJlY3RseS4KICBmdW5jdGlvbiBvdmVycmlkZU1ldGhvZCh0YXJnZXQsIG1ldGhvZE5hbWUsIGZ1bmNTb3VyY2UpIHsKICAgIHZhciBzdXBlckZ1bmMgPSB0YXJnZXRbbWV0aG9kTmFtZV0gfHwgZnVuY3Rpb24oKSB7fTsKICAgIHZhciBzdXBlckZ1bmNCb3VuZCA9IGZ1bmN0aW9uKCkgewogICAgICByZXR1cm4gc3VwZXJGdW5jLmFwcGx5KHRhcmdldCwgYXJndW1lbnRzKTsKICAgIH07CiAgICB0YXJnZXRbbWV0aG9kTmFtZV0gPSBmdW5jU291cmNlKHN1cGVyRnVuY0JvdW5kKTsKICB9CgogIC8vIEltcGxlbWVudCBhIHZhZ3VlIGZhY3NpbWlsaWUgb2YgalF1ZXJ5J3MgZGF0YSBtZXRob2QKICBmdW5jdGlvbiBlbGVtZW50RGF0YShlbCwgbmFtZSwgdmFsdWUpIHsKICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09IDIpIHsKICAgICAgcmV0dXJuIGVsWyJodG1sd2lkZ2V0X2RhdGFfIiArIG5hbWVdOwogICAgfSBlbHNlIGlmIChhcmd1bWVudHMubGVuZ3RoID09IDMpIHsKICAgICAgZWxbImh0bWx3aWRnZXRfZGF0YV8iICsgbmFtZV0gPSB2YWx1ZTsKICAgICAgcmV0dXJuIGVsOwogICAgfSBlbHNlIHsKICAgICAgdGhyb3cgbmV3IEVycm9yKCJXcm9uZyBudW1iZXIgb2YgYXJndW1lbnRzIGZvciBlbGVtZW50RGF0YTogIiArCiAgICAgICAgYXJndW1lbnRzLmxlbmd0aCk7CiAgICB9CiAgfQoKICAvLyBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzM0NDYxNzAvZXNjYXBlLXN0cmluZy1mb3ItdXNlLWluLWphdmFzY3JpcHQtcmVnZXgKICBmdW5jdGlvbiBlc2NhcGVSZWdFeHAoc3RyKSB7CiAgICByZXR1cm4gc3RyLnJlcGxhY2UoL1tcLVxbXF1cL1x7XH1cKFwpXCpcK1w/XC5cXFxeXCRcfF0vZywgIlxcJCYiKTsKICB9CgogIGZ1bmN0aW9uIGhhc0NsYXNzKGVsLCBjbGFzc05hbWUpIHsKICAgIHZhciByZSA9IG5ldyBSZWdFeHAoIlxcYiIgKyBlc2NhcGVSZWdFeHAoY2xhc3NOYW1lKSArICJcXGIiKTsKICAgIHJldHVybiByZS50ZXN0KGVsLmNsYXNzTmFtZSk7CiAgfQoKICAvLyBlbGVtZW50cyAtIGFycmF5IChvciBhcnJheS1saWtlIG9iamVjdCkgb2YgSFRNTCBlbGVtZW50cwogIC8vIGNsYXNzTmFtZSAtIGNsYXNzIG5hbWUgdG8gdGVzdCBmb3IKICAvLyBpbmNsdWRlIC0gaWYgdHJ1ZSwgb25seSByZXR1cm4gZWxlbWVudHMgd2l0aCBnaXZlbiBjbGFzc05hbWU7CiAgLy8gICBpZiBmYWxzZSwgb25seSByZXR1cm4gZWxlbWVudHMgKndpdGhvdXQqIGdpdmVuIGNsYXNzTmFtZQogIGZ1bmN0aW9uIGZpbHRlckJ5Q2xhc3MoZWxlbWVudHMsIGNsYXNzTmFtZSwgaW5jbHVkZSkgewogICAgdmFyIHJlc3VsdHMgPSBbXTsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWxlbWVudHMubGVuZ3RoOyBpKyspIHsKICAgICAgaWYgKGhhc0NsYXNzKGVsZW1lbnRzW2ldLCBjbGFzc05hbWUpID09IGluY2x1ZGUpCiAgICAgICAgcmVzdWx0cy5wdXNoKGVsZW1lbnRzW2ldKTsKICAgIH0KICAgIHJldHVybiByZXN1bHRzOwogIH0KCiAgZnVuY3Rpb24gb24ob2JqLCBldmVudE5hbWUsIGZ1bmMpIHsKICAgIGlmIChvYmouYWRkRXZlbnRMaXN0ZW5lcikgewogICAgICBvYmouYWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIGZ1bmMsIGZhbHNlKTsKICAgIH0gZWxzZSBpZiAob2JqLmF0dGFjaEV2ZW50KSB7CiAgICAgIG9iai5hdHRhY2hFdmVudChldmVudE5hbWUsIGZ1bmMpOwogICAgfQogIH0KCiAgZnVuY3Rpb24gb2ZmKG9iaiwgZXZlbnROYW1lLCBmdW5jKSB7CiAgICBpZiAob2JqLnJlbW92ZUV2ZW50TGlzdGVuZXIpCiAgICAgIG9iai5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgZnVuYywgZmFsc2UpOwogICAgZWxzZSBpZiAob2JqLmRldGFjaEV2ZW50KSB7CiAgICAgIG9iai5kZXRhY2hFdmVudChldmVudE5hbWUsIGZ1bmMpOwogICAgfQogIH0KCiAgLy8gVHJhbnNsYXRlIGFycmF5IG9mIHZhbHVlcyB0byB0b3AvcmlnaHQvYm90dG9tL2xlZnQsIGFzIHVzdWFsIHdpdGgKICAvLyB0aGUgInBhZGRpbmciIENTUyBwcm9wZXJ0eQogIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9wYWRkaW5nCiAgZnVuY3Rpb24gdW5wYWNrUGFkZGluZyh2YWx1ZSkgewogICAgaWYgKHR5cGVvZih2YWx1ZSkgPT09ICJudW1iZXIiKQogICAgICB2YWx1ZSA9IFt2YWx1ZV07CiAgICBpZiAodmFsdWUubGVuZ3RoID09PSAxKSB7CiAgICAgIHJldHVybiB7dG9wOiB2YWx1ZVswXSwgcmlnaHQ6IHZhbHVlWzBdLCBib3R0b206IHZhbHVlWzBdLCBsZWZ0OiB2YWx1ZVswXX07CiAgICB9CiAgICBpZiAodmFsdWUubGVuZ3RoID09PSAyKSB7CiAgICAgIHJldHVybiB7dG9wOiB2YWx1ZVswXSwgcmlnaHQ6IHZhbHVlWzFdLCBib3R0b206IHZhbHVlWzBdLCBsZWZ0OiB2YWx1ZVsxXX07CiAgICB9CiAgICBpZiAodmFsdWUubGVuZ3RoID09PSAzKSB7CiAgICAgIHJldHVybiB7dG9wOiB2YWx1ZVswXSwgcmlnaHQ6IHZhbHVlWzFdLCBib3R0b206IHZhbHVlWzJdLCBsZWZ0OiB2YWx1ZVsxXX07CiAgICB9CiAgICBpZiAodmFsdWUubGVuZ3RoID09PSA0KSB7CiAgICAgIHJldHVybiB7dG9wOiB2YWx1ZVswXSwgcmlnaHQ6IHZhbHVlWzFdLCBib3R0b206IHZhbHVlWzJdLCBsZWZ0OiB2YWx1ZVszXX07CiAgICB9CiAgfQoKICAvLyBDb252ZXJ0IGFuIHVucGFja2VkIHBhZGRpbmcgb2JqZWN0IHRvIGEgQ1NTIHZhbHVlCiAgZnVuY3Rpb24gcGFkZGluZ1RvQ3NzKHBhZGRpbmdPYmopIHsKICAgIHJldHVybiBwYWRkaW5nT2JqLnRvcCArICJweCAiICsgcGFkZGluZ09iai5yaWdodCArICJweCAiICsgcGFkZGluZ09iai5ib3R0b20gKyAicHggIiArIHBhZGRpbmdPYmoubGVmdCArICJweCI7CiAgfQoKICAvLyBNYWtlcyBhIG51bWJlciBzdWl0YWJsZSBmb3IgQ1NTCiAgZnVuY3Rpb24gcHgoeCkgewogICAgaWYgKHR5cGVvZih4KSA9PT0gIm51bWJlciIpCiAgICAgIHJldHVybiB4ICsgInB4IjsKICAgIGVsc2UKICAgICAgcmV0dXJuIHg7CiAgfQoKICAvLyBSZXRyaWV2ZXMgcnVudGltZSB3aWRnZXQgc2l6aW5nIGluZm9ybWF0aW9uIGZvciBhbiBlbGVtZW50LgogIC8vIFRoZSByZXR1cm4gdmFsdWUgaXMgZWl0aGVyIG51bGwsIG9yIGFuIG9iamVjdCB3aXRoIGZpbGwsIHBhZGRpbmcsCiAgLy8gZGVmYXVsdFdpZHRoLCBkZWZhdWx0SGVpZ2h0IGZpZWxkcy4KICBmdW5jdGlvbiBzaXppbmdQb2xpY3koZWwpIHsKICAgIHZhciBzaXppbmdFbCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoInNjcmlwdFtkYXRhLWZvcj0nIiArIGVsLmlkICsgIiddW3R5cGU9J2FwcGxpY2F0aW9uL2h0bWx3aWRnZXQtc2l6aW5nJ10iKTsKICAgIGlmICghc2l6aW5nRWwpCiAgICAgIHJldHVybiBudWxsOwogICAgdmFyIHNwID0gSlNPTi5wYXJzZShzaXppbmdFbC50ZXh0Q29udGVudCB8fCBzaXppbmdFbC50ZXh0IHx8ICJ7fSIpOwogICAgaWYgKHZpZXdlck1vZGUpIHsKICAgICAgcmV0dXJuIHNwLnZpZXdlcjsKICAgIH0gZWxzZSB7CiAgICAgIHJldHVybiBzcC5icm93c2VyOwogICAgfQogIH0KCiAgZnVuY3Rpb24gaW5pdFNpemluZyhlbCkgewogICAgdmFyIHNpemluZyA9IHNpemluZ1BvbGljeShlbCk7CiAgICBpZiAoIXNpemluZykKICAgICAgcmV0dXJuOwoKICAgIHZhciBjZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaHRtbHdpZGdldF9jb250YWluZXIiKTsKICAgIGlmICghY2VsKQogICAgICByZXR1cm47CgogICAgaWYgKHR5cGVvZihzaXppbmcucGFkZGluZykgIT09ICJ1bmRlZmluZWQiKSB7CiAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUubWFyZ2luID0gIjAiOwogICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLnBhZGRpbmcgPSBwYWRkaW5nVG9Dc3ModW5wYWNrUGFkZGluZyhzaXppbmcucGFkZGluZykpOwogICAgfQoKICAgIGlmIChzaXppbmcuZmlsbCkgewogICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93ID0gImhpZGRlbiI7CiAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUud2lkdGggPSAiMTAwJSI7CiAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUuaGVpZ2h0ID0gIjEwMCUiOwogICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUud2lkdGggPSAiMTAwJSI7CiAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5oZWlnaHQgPSAiMTAwJSI7CiAgICAgIGlmIChjZWwpIHsKICAgICAgICBjZWwuc3R5bGUucG9zaXRpb24gPSAiYWJzb2x1dGUiOwogICAgICAgIHZhciBwYWQgPSB1bnBhY2tQYWRkaW5nKHNpemluZy5wYWRkaW5nKTsKICAgICAgICBjZWwuc3R5bGUudG9wID0gcGFkLnRvcCArICJweCI7CiAgICAgICAgY2VsLnN0eWxlLnJpZ2h0ID0gcGFkLnJpZ2h0ICsgInB4IjsKICAgICAgICBjZWwuc3R5bGUuYm90dG9tID0gcGFkLmJvdHRvbSArICJweCI7CiAgICAgICAgY2VsLnN0eWxlLmxlZnQgPSBwYWQubGVmdCArICJweCI7CiAgICAgICAgZWwuc3R5bGUud2lkdGggPSAiMTAwJSI7CiAgICAgICAgZWwuc3R5bGUuaGVpZ2h0ID0gIjEwMCUiOwogICAgICB9CgogICAgICByZXR1cm4gewogICAgICAgIGdldFdpZHRoOiBmdW5jdGlvbigpIHsgcmV0dXJuIGNlbC5vZmZzZXRXaWR0aDsgfSwKICAgICAgICBnZXRIZWlnaHQ6IGZ1bmN0aW9uKCkgeyByZXR1cm4gY2VsLm9mZnNldEhlaWdodDsgfQogICAgICB9OwoKICAgIH0gZWxzZSB7CiAgICAgIGVsLnN0eWxlLndpZHRoID0gcHgoc2l6aW5nLndpZHRoKTsKICAgICAgZWwuc3R5bGUuaGVpZ2h0ID0gcHgoc2l6aW5nLmhlaWdodCk7CgogICAgICByZXR1cm4gewogICAgICAgIGdldFdpZHRoOiBmdW5jdGlvbigpIHsgcmV0dXJuIGVsLm9mZnNldFdpZHRoOyB9LAogICAgICAgIGdldEhlaWdodDogZnVuY3Rpb24oKSB7IHJldHVybiBlbC5vZmZzZXRIZWlnaHQ7IH0KICAgICAgfTsKICAgIH0KICB9CgogIC8vIERlZmF1bHQgaW1wbGVtZW50YXRpb25zIGZvciBtZXRob2RzCiAgdmFyIGRlZmF1bHRzID0gewogICAgZmluZDogZnVuY3Rpb24oc2NvcGUpIHsKICAgICAgcmV0dXJuIHF1ZXJ5U2VsZWN0b3JBbGwoc2NvcGUsICIuIiArIHRoaXMubmFtZSk7CiAgICB9LAogICAgcmVuZGVyRXJyb3I6IGZ1bmN0aW9uKGVsLCBlcnIpIHsKICAgICAgdmFyICRlbCA9ICQoZWwpOwoKICAgICAgdGhpcy5jbGVhckVycm9yKGVsKTsKCiAgICAgIC8vIEFkZCBhbGwgdGhlc2UgZXJyb3IgY2xhc3NlcywgYXMgU2hpbnkgZG9lcwogICAgICB2YXIgZXJyQ2xhc3MgPSAic2hpbnktb3V0cHV0LWVycm9yIjsKICAgICAgaWYgKGVyci50eXBlICE9PSBudWxsKSB7CiAgICAgICAgLy8gdXNlIHRoZSBjbGFzc2VzIG9mIHRoZSBlcnJvciBjb25kaXRpb24gYXMgQ1NTIGNsYXNzIG5hbWVzCiAgICAgICAgZXJyQ2xhc3MgPSBlcnJDbGFzcyArICIgIiArICQubWFwKGFzQXJyYXkoZXJyLnR5cGUpLCBmdW5jdGlvbih0eXBlKSB7CiAgICAgICAgICByZXR1cm4gZXJyQ2xhc3MgKyAiLSIgKyB0eXBlOwogICAgICAgIH0pLmpvaW4oIiAiKTsKICAgICAgfQogICAgICBlcnJDbGFzcyA9IGVyckNsYXNzICsgIiBodG1sd2lkZ2V0cy1lcnJvciI7CgogICAgICAvLyBJcyBlbCBpbmxpbmUgb3IgYmxvY2s/IElmIGlubGluZSBvciBpbmxpbmUtYmxvY2ssIGp1c3QgZGlzcGxheTpub25lIGl0CiAgICAgIC8vIGFuZCBhZGQgYW4gaW5saW5lIGVycm9yLgogICAgICB2YXIgZGlzcGxheSA9ICRlbC5jc3MoImRpc3BsYXkiKTsKICAgICAgJGVsLmRhdGEoInJlc3RvcmUtZGlzcGxheS1tb2RlIiwgZGlzcGxheSk7CgogICAgICBpZiAoZGlzcGxheSA9PT0gImlubGluZSIgfHwgZGlzcGxheSA9PT0gImlubGluZS1ibG9jayIpIHsKICAgICAgICAkZWwuaGlkZSgpOwogICAgICAgIGlmIChlcnIubWVzc2FnZSAhPT0gIiIpIHsKICAgICAgICAgIHZhciBlcnJvclNwYW4gPSAkKCI8c3Bhbj4iKS5hZGRDbGFzcyhlcnJDbGFzcyk7CiAgICAgICAgICBlcnJvclNwYW4udGV4dChlcnIubWVzc2FnZSk7CiAgICAgICAgICAkZWwuYWZ0ZXIoZXJyb3JTcGFuKTsKICAgICAgICB9CiAgICAgIH0gZWxzZSBpZiAoZGlzcGxheSA9PT0gImJsb2NrIikgewogICAgICAgIC8vIElmIGJsb2NrLCBhZGQgYW4gZXJyb3IganVzdCBhZnRlciB0aGUgZWwsIHNldCB2aXNpYmlsaXR5Om5vbmUgb24gdGhlCiAgICAgICAgLy8gZWwsIGFuZCBwb3NpdGlvbiB0aGUgZXJyb3IgdG8gYmUgb24gdG9wIG9mIHRoZSBlbC4KICAgICAgICAvLyBNYXJrIGl0IHdpdGggYSB1bmlxdWUgSUQgYW5kIENTUyBjbGFzcyBzbyB3ZSBjYW4gcmVtb3ZlIGl0IGxhdGVyLgogICAgICAgICRlbC5jc3MoInZpc2liaWxpdHkiLCAiaGlkZGVuIik7CiAgICAgICAgaWYgKGVyci5tZXNzYWdlICE9PSAiIikgewogICAgICAgICAgdmFyIGVycm9yRGl2ID0gJCgiPGRpdj4iKS5hZGRDbGFzcyhlcnJDbGFzcykuY3NzKCJwb3NpdGlvbiIsICJhYnNvbHV0ZSIpCiAgICAgICAgICAgIC5jc3MoInRvcCIsIGVsLm9mZnNldFRvcCkKICAgICAgICAgICAgLmNzcygibGVmdCIsIGVsLm9mZnNldExlZnQpCiAgICAgICAgICAgIC8vIHNldHRpbmcgd2lkdGggY2FuIHB1c2ggb3V0IHRoZSBwYWdlIHNpemUsIGZvcmNpbmcgb3RoZXJ3aXNlCiAgICAgICAgICAgIC8vIHVubmVjZXNzYXJ5IHNjcm9sbGJhcnMgdG8gYXBwZWFyIGFuZCBtYWtpbmcgaXQgaW1wb3NzaWJsZSBmb3IKICAgICAgICAgICAgLy8gdGhlIGVsZW1lbnQgdG8gc2hyaW5rOyBzbyB1c2UgbWF4LXdpZHRoIGluc3RlYWQKICAgICAgICAgICAgLmNzcygibWF4V2lkdGgiLCBlbC5vZmZzZXRXaWR0aCkKICAgICAgICAgICAgLmNzcygiaGVpZ2h0IiwgZWwub2Zmc2V0SGVpZ2h0KTsKICAgICAgICAgIGVycm9yRGl2LnRleHQoZXJyLm1lc3NhZ2UpOwogICAgICAgICAgJGVsLmFmdGVyKGVycm9yRGl2KTsKCiAgICAgICAgICAvLyBSZWFsbHkgZHVtYiB3YXkgdG8ga2VlcCB0aGUgc2l6ZS9wb3NpdGlvbiBvZiB0aGUgZXJyb3IgaW4gc3luYyB3aXRoCiAgICAgICAgICAvLyB0aGUgcGFyZW50IGVsZW1lbnQgYXMgdGhlIHdpbmRvdyBpcyByZXNpemVkIG9yIHdoYXRldmVyLgogICAgICAgICAgdmFyIGludElkID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGlmICghZXJyb3JEaXZbMF0ucGFyZW50RWxlbWVudCkgewogICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoaW50SWQpOwogICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgICAgICBlcnJvckRpdgogICAgICAgICAgICAgIC5jc3MoInRvcCIsIGVsLm9mZnNldFRvcCkKICAgICAgICAgICAgICAuY3NzKCJsZWZ0IiwgZWwub2Zmc2V0TGVmdCkKICAgICAgICAgICAgICAuY3NzKCJtYXhXaWR0aCIsIGVsLm9mZnNldFdpZHRoKQogICAgICAgICAgICAgIC5jc3MoImhlaWdodCIsIGVsLm9mZnNldEhlaWdodCk7CiAgICAgICAgICB9LCA1MDApOwogICAgICAgIH0KICAgICAgfQogICAgfSwKICAgIGNsZWFyRXJyb3I6IGZ1bmN0aW9uKGVsKSB7CiAgICAgIHZhciAkZWwgPSAkKGVsKTsKICAgICAgdmFyIGRpc3BsYXkgPSAkZWwuZGF0YSgicmVzdG9yZS1kaXNwbGF5LW1vZGUiKTsKICAgICAgJGVsLmRhdGEoInJlc3RvcmUtZGlzcGxheS1tb2RlIiwgbnVsbCk7CgogICAgICBpZiAoZGlzcGxheSA9PT0gImlubGluZSIgfHwgZGlzcGxheSA9PT0gImlubGluZS1ibG9jayIpIHsKICAgICAgICBpZiAoZGlzcGxheSkKICAgICAgICAgICRlbC5jc3MoImRpc3BsYXkiLCBkaXNwbGF5KTsKICAgICAgICAkKGVsLm5leHRTaWJsaW5nKS5maWx0ZXIoIi5odG1sd2lkZ2V0cy1lcnJvciIpLnJlbW92ZSgpOwogICAgICB9IGVsc2UgaWYgKGRpc3BsYXkgPT09ICJibG9jayIpewogICAgICAgICRlbC5jc3MoInZpc2liaWxpdHkiLCAiaW5oZXJpdCIpOwogICAgICAgICQoZWwubmV4dFNpYmxpbmcpLmZpbHRlcigiLmh0bWx3aWRnZXRzLWVycm9yIikucmVtb3ZlKCk7CiAgICAgIH0KICAgIH0sCiAgICBzaXppbmc6IHt9CiAgfTsKCiAgLy8gQ2FsbGVkIGJ5IHdpZGdldCBiaW5kaW5ncyB0byByZWdpc3RlciBhIG5ldyB0eXBlIG9mIHdpZGdldC4gVGhlIGRlZmluaXRpb24KICAvLyBvYmplY3QgY2FuIGNvbnRhaW4gdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOgogIC8vIC0gbmFtZSAocmVxdWlyZWQpIC0gQSBzdHJpbmcgaW5kaWNhdGluZyB0aGUgYmluZGluZyBuYW1lLCB3aGljaCB3aWxsIGJlCiAgLy8gICB1c2VkIGJ5IGRlZmF1bHQgYXMgdGhlIENTUyBjbGFzc25hbWUgdG8gbG9vayBmb3IuCiAgLy8gLSBpbml0aWFsaXplIChvcHRpb25hbCkgLSBBIGZ1bmN0aW9uKGVsKSB0aGF0IHdpbGwgYmUgY2FsbGVkIG9uY2UgcGVyCiAgLy8gICB3aWRnZXQgZWxlbWVudDsgaWYgYSB2YWx1ZSBpcyByZXR1cm5lZCwgaXQgd2lsbCBiZSBwYXNzZWQgYXMgdGhlIHRoaXJkCiAgLy8gICB2YWx1ZSB0byByZW5kZXJWYWx1ZS4KICAvLyAtIHJlbmRlclZhbHVlIChyZXF1aXJlZCkgLSBBIGZ1bmN0aW9uKGVsLCBkYXRhLCBpbml0VmFsdWUpIHRoYXQgd2lsbCBiZQogIC8vICAgY2FsbGVkIHdpdGggZGF0YS4gU3RhdGljIGNvbnRleHRzIHdpbGwgY2F1c2UgdGhpcyB0byBiZSBjYWxsZWQgb25jZSBwZXIKICAvLyAgIGVsZW1lbnQ7IFNoaW55IGFwcHMgd2lsbCBjYXVzZSB0aGlzIHRvIGJlIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyBwZXIKICAvLyAgIGVsZW1lbnQsIGFzIHRoZSBkYXRhIGNoYW5nZXMuCiAgd2luZG93LkhUTUxXaWRnZXRzLndpZGdldCA9IGZ1bmN0aW9uKGRlZmluaXRpb24pIHsKICAgIGlmICghZGVmaW5pdGlvbi5uYW1lKSB7CiAgICAgIHRocm93IG5ldyBFcnJvcigiV2lkZ2V0IG11c3QgaGF2ZSBhIG5hbWUiKTsKICAgIH0KICAgIGlmICghZGVmaW5pdGlvbi50eXBlKSB7CiAgICAgIHRocm93IG5ldyBFcnJvcigiV2lkZ2V0IG11c3QgaGF2ZSBhIHR5cGUiKTsKICAgIH0KICAgIC8vIEN1cnJlbnRseSB3ZSBvbmx5IHN1cHBvcnQgb3V0cHV0IHdpZGdldHMKICAgIGlmIChkZWZpbml0aW9uLnR5cGUgIT09ICJvdXRwdXQiKSB7CiAgICAgIHRocm93IG5ldyBFcnJvcigiVW5yZWNvZ25pemVkIHdpZGdldCB0eXBlICciICsgZGVmaW5pdGlvbi50eXBlICsgIiciKTsKICAgIH0KICAgIC8vIFRPRE86IFZlcmlmeSB0aGF0IC5uYW1lIGlzIGEgdmFsaWQgQ1NTIGNsYXNzbmFtZQogICAgaWYgKCFkZWZpbml0aW9uLnJlbmRlclZhbHVlKSB7CiAgICAgIHRocm93IG5ldyBFcnJvcigiV2lkZ2V0IG11c3QgaGF2ZSBhIHJlbmRlclZhbHVlIGZ1bmN0aW9uIik7CiAgICB9CgogICAgLy8gRm9yIHN0YXRpYyByZW5kZXJpbmcgKG5vbi1TaGlueSksIHVzZSBhIHNpbXBsZSB3aWRnZXQgcmVnaXN0cmF0aW9uCiAgICAvLyBzY2hlbWUuIFdlIGFsc28gdXNlIHRoaXMgc2NoZW1lIGZvciBTaGlueSBhcHBzL2RvY3VtZW50cyB0aGF0IGFsc28KICAgIC8vIGNvbnRhaW4gc3RhdGljIHdpZGdldHMuCiAgICB3aW5kb3cuSFRNTFdpZGdldHMud2lkZ2V0cyA9IHdpbmRvdy5IVE1MV2lkZ2V0cy53aWRnZXRzIHx8IFtdOwogICAgLy8gTWVyZ2UgZGVmYXVsdHMgaW50byB0aGUgZGVmaW5pdGlvbjsgZG9uJ3QgbXV0YXRlIHRoZSBvcmlnaW5hbCBkZWZpbml0aW9uLgogICAgdmFyIHN0YXRpY0JpbmRpbmcgPSBleHRlbmQoe30sIGRlZmF1bHRzLCBkZWZpbml0aW9uKTsKICAgIG92ZXJyaWRlTWV0aG9kKHN0YXRpY0JpbmRpbmcsICJmaW5kIiwgZnVuY3Rpb24oc3VwZXJmdW5jKSB7CiAgICAgIHJldHVybiBmdW5jdGlvbihzY29wZSkgewogICAgICAgIHZhciByZXN1bHRzID0gc3VwZXJmdW5jKHNjb3BlKTsKICAgICAgICAvLyBGaWx0ZXIgb3V0IFNoaW55IG91dHB1dHMsIHdlIG9ubHkgd2FudCB0aGUgc3RhdGljIGtpbmQKICAgICAgICByZXR1cm4gZmlsdGVyQnlDbGFzcyhyZXN1bHRzLCAiaHRtbC13aWRnZXQtb3V0cHV0IiwgZmFsc2UpOwogICAgICB9OwogICAgfSk7CiAgICB3aW5kb3cuSFRNTFdpZGdldHMud2lkZ2V0cy5wdXNoKHN0YXRpY0JpbmRpbmcpOwoKICAgIGlmIChzaGlueU1vZGUpIHsKICAgICAgLy8gU2hpbnkgaXMgcnVubmluZy4gUmVnaXN0ZXIgdGhlIGRlZmluaXRpb24gYXMgYW4gb3V0cHV0IGJpbmRpbmcuCgogICAgICAvLyBNZXJnZSBkZWZhdWx0cyBpbnRvIHRoZSBkZWZpbml0aW9uOyBkb24ndCBtdXRhdGUgdGhlIG9yaWdpbmFsIGRlZmluaXRpb24uCiAgICAgIC8vIFRoZSBiYXNlIG9iamVjdCBpcyBhIFNoaW55IG91dHB1dCBiaW5kaW5nIGlmIHdlJ3JlIHJ1bm5pbmcgaW4gU2hpbnkgbW9kZSwKICAgICAgLy8gb3IgYW4gZW1wdHkgb2JqZWN0IGlmIHdlJ3JlIG5vdC4KICAgICAgdmFyIHNoaW55QmluZGluZyA9IGV4dGVuZChuZXcgU2hpbnkuT3V0cHV0QmluZGluZygpLCBkZWZhdWx0cywgZGVmaW5pdGlvbik7CgogICAgICAvLyBXcmFwIHJlbmRlclZhbHVlIHRvIGhhbmRsZSBpbml0aWFsaXphdGlvbiwgd2hpY2ggdW5mb3J0dW5hdGVseSBpc24ndAogICAgICAvLyBzdXBwb3J0ZWQgbmF0aXZlbHkgYnkgU2hpbnkgYXQgdGhlIHRpbWUgb2YgdGhpcyB3cml0aW5nLgoKICAgICAgLy8gTkI6IHNoaW55QmluZGluZy5pbml0aWFsaXplIG1heSBiZSB1bmRlZmluZWQsIGFzIGl0J3Mgb3B0aW9uYWwuCgogICAgICAvLyBSZW5hbWUgaW5pdGlhbGl6ZSB0byBtYWtlIHN1cmUgaXQgaXNuJ3QgY2FsbGVkIGJ5IGEgZnV0dXJlIHZlcnNpb24KICAgICAgLy8gb2YgU2hpbnkgdGhhdCBkb2VzIHN1cHBvcnQgaW5pdGlhbGl6ZSBkaXJlY3RseS4KICAgICAgc2hpbnlCaW5kaW5nLl9odG1sd2lkZ2V0c19pbml0aWFsaXplID0gc2hpbnlCaW5kaW5nLmluaXRpYWxpemU7CiAgICAgIGRlbGV0ZSBzaGlueUJpbmRpbmcuaW5pdGlhbGl6ZTsKCiAgICAgIG92ZXJyaWRlTWV0aG9kKHNoaW55QmluZGluZywgImZpbmQiLCBmdW5jdGlvbihzdXBlcmZ1bmMpIHsKICAgICAgICByZXR1cm4gZnVuY3Rpb24oc2NvcGUpIHsKCiAgICAgICAgICB2YXIgcmVzdWx0cyA9IHN1cGVyZnVuYyhzY29wZSk7CgogICAgICAgICAgLy8gT25seSByZXR1cm4gZWxlbWVudHMgdGhhdCBhcmUgU2hpbnkgb3V0cHV0cywgbm90IHN0YXRpYyBvbmVzCiAgICAgICAgICB2YXIgZHluYW1pY1Jlc3VsdHMgPSByZXN1bHRzLmZpbHRlcigiLmh0bWwtd2lkZ2V0LW91dHB1dCIpOwoKICAgICAgICAgIC8vIEl0J3MgcG9zc2libGUgdGhhdCB3aGF0ZXZlciBjYXVzZWQgU2hpbnkgdG8gdGhpbmsgdGhlcmUgbWlnaHQgYmUKICAgICAgICAgIC8vIG5ldyBkeW5hbWljIG91dHB1dHMsIGFsc28gY2F1c2VkIHRoZXJlIHRvIGJlIG5ldyBzdGF0aWMgb3V0cHV0cy4KICAgICAgICAgIC8vIFNpbmNlIHRoZXJlIG1pZ2h0IGJlIGxvdHMgb2YgZGlmZmVyZW50IGh0bWx3aWRnZXRzIGJpbmRpbmdzLCB3ZQogICAgICAgICAgLy8gc2NoZWR1bGUgZXhlY3V0aW9uIGZvciBsYXRlci0tbm8gbmVlZCB0byBzdGF0aWNSZW5kZXIgbXVsdGlwbGUKICAgICAgICAgIC8vIHRpbWVzLgogICAgICAgICAgaWYgKHJlc3VsdHMubGVuZ3RoICE9PSBkeW5hbWljUmVzdWx0cy5sZW5ndGgpCiAgICAgICAgICAgIHNjaGVkdWxlU3RhdGljUmVuZGVyKCk7CgogICAgICAgICAgcmV0dXJuIGR5bmFtaWNSZXN1bHRzOwogICAgICAgIH07CiAgICAgIH0pOwoKICAgICAgb3ZlcnJpZGVNZXRob2Qoc2hpbnlCaW5kaW5nLCAicmVuZGVyVmFsdWUiLCBmdW5jdGlvbihzdXBlcmZ1bmMpIHsKICAgICAgICByZXR1cm4gZnVuY3Rpb24oZWwsIGRhdGEpIHsKICAgICAgICAgIC8vIFJlc29sdmUgc3RyaW5ncyBtYXJrZWQgYXMgamF2YXNjcmlwdCBsaXRlcmFscyB0byBvYmplY3RzCiAgICAgICAgICBpZiAoIShkYXRhLmV2YWxzIGluc3RhbmNlb2YgQXJyYXkpKSBkYXRhLmV2YWxzID0gW2RhdGEuZXZhbHNdOwogICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGRhdGEuZXZhbHMgJiYgaSA8IGRhdGEuZXZhbHMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgd2luZG93LkhUTUxXaWRnZXRzLmV2YWx1YXRlU3RyaW5nTWVtYmVyKGRhdGEueCwgZGF0YS5ldmFsc1tpXSk7CiAgICAgICAgICB9CiAgICAgICAgICBpZiAoIXRoaXMucmVuZGVyT25OdWxsVmFsdWUpIHsKICAgICAgICAgICAgaWYgKGRhdGEueCA9PT0gbnVsbCkgewogICAgICAgICAgICAgIGVsLnN0eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVuIjsKICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgZWwuc3R5bGUudmlzaWJpbGl0eSA9ICJpbmhlcml0IjsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgICAgaWYgKCFlbGVtZW50RGF0YShlbCwgImluaXRpYWxpemVkIikpIHsKICAgICAgICAgICAgaW5pdFNpemluZyhlbCk7CgogICAgICAgICAgICBlbGVtZW50RGF0YShlbCwgImluaXRpYWxpemVkIiwgdHJ1ZSk7CiAgICAgICAgICAgIGlmICh0aGlzLl9odG1sd2lkZ2V0c19pbml0aWFsaXplKSB7CiAgICAgICAgICAgICAgdmFyIHJlc3VsdCA9IHRoaXMuX2h0bWx3aWRnZXRzX2luaXRpYWxpemUoZWwsIGVsLm9mZnNldFdpZHRoLAogICAgICAgICAgICAgICAgZWwub2Zmc2V0SGVpZ2h0KTsKICAgICAgICAgICAgICBlbGVtZW50RGF0YShlbCwgImluaXRfcmVzdWx0IiwgcmVzdWx0KTsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgICAgU2hpbnkucmVuZGVyRGVwZW5kZW5jaWVzKGRhdGEuZGVwcyk7CiAgICAgICAgICBzdXBlcmZ1bmMoZWwsIGRhdGEueCwgZWxlbWVudERhdGEoZWwsICJpbml0X3Jlc3VsdCIpKTsKICAgICAgICB9OwogICAgICB9KTsKCiAgICAgIG92ZXJyaWRlTWV0aG9kKHNoaW55QmluZGluZywgInJlc2l6ZSIsIGZ1bmN0aW9uKHN1cGVyZnVuYykgewogICAgICAgIHJldHVybiBmdW5jdGlvbihlbCwgd2lkdGgsIGhlaWdodCkgewogICAgICAgICAgLy8gU2hpbnkgY2FuIGNhbGwgcmVzaXplIGJlZm9yZSBpbml0aWFsaXplL3JlbmRlclZhbHVlIGhhdmUgYmVlbgogICAgICAgICAgLy8gY2FsbGVkLCB3aGljaCBkb2Vzbid0IG1ha2Ugc2Vuc2UgZm9yIHdpZGdldHMuCiAgICAgICAgICBpZiAoZWxlbWVudERhdGEoZWwsICJpbml0aWFsaXplZCIpKSB7CiAgICAgICAgICAgIHN1cGVyZnVuYyhlbCwgd2lkdGgsIGhlaWdodCwgZWxlbWVudERhdGEoZWwsICJpbml0X3Jlc3VsdCIpKTsKICAgICAgICAgIH0KICAgICAgICB9OwogICAgICB9KTsKCiAgICAgIFNoaW55Lm91dHB1dEJpbmRpbmdzLnJlZ2lzdGVyKHNoaW55QmluZGluZywgc2hpbnlCaW5kaW5nLm5hbWUpOwogICAgfQogIH07CgogIHZhciBzY2hlZHVsZVN0YXRpY1JlbmRlclRpbWVySWQgPSBudWxsOwogIGZ1bmN0aW9uIHNjaGVkdWxlU3RhdGljUmVuZGVyKCkgewogICAgaWYgKCFzY2hlZHVsZVN0YXRpY1JlbmRlclRpbWVySWQpIHsKICAgICAgc2NoZWR1bGVTdGF0aWNSZW5kZXJUaW1lcklkID0gc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgICBzY2hlZHVsZVN0YXRpY1JlbmRlclRpbWVySWQgPSBudWxsOwogICAgICAgIHdpbmRvdy5IVE1MV2lkZ2V0cy5zdGF0aWNSZW5kZXIoKTsKICAgICAgfSwgMSk7CiAgICB9CiAgfQoKICAvLyBSZW5kZXIgc3RhdGljIHdpZGdldHMgYWZ0ZXIgdGhlIGRvY3VtZW50IGZpbmlzaGVzIGxvYWRpbmcKICAvLyBTdGF0aWNhbGx5IHJlbmRlciBhbGwgZWxlbWVudHMgdGhhdCBhcmUgb2YgdGhpcyB3aWRnZXQncyBjbGFzcwogIHdpbmRvdy5IVE1MV2lkZ2V0cy5zdGF0aWNSZW5kZXIgPSBmdW5jdGlvbigpIHsKICAgIHZhciBiaW5kaW5ncyA9IHdpbmRvdy5IVE1MV2lkZ2V0cy53aWRnZXRzIHx8IFtdOwogICAgZm9yRWFjaChiaW5kaW5ncywgZnVuY3Rpb24oYmluZGluZykgewogICAgICB2YXIgbWF0Y2hlcyA9IGJpbmRpbmcuZmluZChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpOwogICAgICBmb3JFYWNoKG1hdGNoZXMsIGZ1bmN0aW9uKGVsKSB7CiAgICAgICAgdmFyIHNpemVPYmogPSBpbml0U2l6aW5nKGVsLCBiaW5kaW5nKTsKCiAgICAgICAgaWYgKGhhc0NsYXNzKGVsLCAiaHRtbC13aWRnZXQtc3RhdGljLWJvdW5kIikpCiAgICAgICAgICByZXR1cm47CiAgICAgICAgZWwuY2xhc3NOYW1lID0gZWwuY2xhc3NOYW1lICsgIiBodG1sLXdpZGdldC1zdGF0aWMtYm91bmQiOwoKICAgICAgICB2YXIgaW5pdFJlc3VsdDsKICAgICAgICBpZiAoYmluZGluZy5pbml0aWFsaXplKSB7CiAgICAgICAgICBpbml0UmVzdWx0ID0gYmluZGluZy5pbml0aWFsaXplKGVsLAogICAgICAgICAgICBzaXplT2JqID8gc2l6ZU9iai5nZXRXaWR0aCgpIDogZWwub2Zmc2V0V2lkdGgsCiAgICAgICAgICAgIHNpemVPYmogPyBzaXplT2JqLmdldEhlaWdodCgpIDogZWwub2Zmc2V0SGVpZ2h0CiAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgaWYgKGJpbmRpbmcucmVzaXplKSB7CiAgICAgICAgICB2YXIgbGFzdFNpemUgPSB7fTsKICAgICAgICAgIHZhciByZXNpemVIYW5kbGVyID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICB2YXIgc2l6ZSA9IHsKICAgICAgICAgICAgICB3OiBzaXplT2JqID8gc2l6ZU9iai5nZXRXaWR0aCgpIDogZWwub2Zmc2V0V2lkdGgsCiAgICAgICAgICAgICAgaDogc2l6ZU9iaiA/IHNpemVPYmouZ2V0SGVpZ2h0KCkgOiBlbC5vZmZzZXRIZWlnaHQKICAgICAgICAgICAgfTsKICAgICAgICAgICAgaWYgKHNpemUudyA9PT0gMCAmJiBzaXplLmggPT09IDApCiAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICBpZiAoc2l6ZS53ID09PSBsYXN0U2l6ZS53ICYmIHNpemUuaCA9PT0gbGFzdFNpemUuaCkKICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIGxhc3RTaXplID0gc2l6ZTsKICAgICAgICAgICAgYmluZGluZy5yZXNpemUoZWwsIHNpemUudywgc2l6ZS5oLCBpbml0UmVzdWx0KTsKICAgICAgICAgIH07CgogICAgICAgICAgb24od2luZG93LCAicmVzaXplIiwgcmVzaXplSGFuZGxlcik7CgogICAgICAgICAgLy8gVGhpcyBpcyBuZWVkZWQgZm9yIGNhc2VzIHdoZXJlIHdlJ3JlIHJ1bm5pbmcgaW4gYSBTaGlueQogICAgICAgICAgLy8gYXBwLCBidXQgdGhlIHdpZGdldCBpdHNlbGYgaXMgbm90IGEgU2hpbnkgb3V0cHV0LCBidXQKICAgICAgICAgIC8vIHJhdGhlciBhIHNpbXBsZSBzdGF0aWMgd2lkZ2V0LiBPbmUgZXhhbXBsZSBvZiB0aGlzIGlzCiAgICAgICAgICAvLyBhbiBybWFya2Rvd24gZG9jdW1lbnQgdGhhdCBoYXMgcnVudGltZTpzaGlueSBhbmQgd2lkZ2V0CiAgICAgICAgICAvLyB0aGF0IGlzbid0IGluIGEgcmVuZGVyIGZ1bmN0aW9uLiBTaGlueSBvbmx5IGtub3dzIHRvCiAgICAgICAgICAvLyBjYWxsIHJlc2l6ZSBoYW5kbGVycyBmb3IgU2hpbnkgb3V0cHV0cywgbm90IGZvciBzdGF0aWMKICAgICAgICAgIC8vIHdpZGdldHMsIHNvIHdlIGRvIGl0IG91cnNlbHZlcy4KICAgICAgICAgIGlmICh3aW5kb3cualF1ZXJ5KSB7CiAgICAgICAgICAgIHdpbmRvdy5qUXVlcnkoZG9jdW1lbnQpLm9uKCJzaG93biIsIHJlc2l6ZUhhbmRsZXIpOwogICAgICAgICAgICB3aW5kb3cualF1ZXJ5KGRvY3VtZW50KS5vbigiaGlkZGVuIiwgcmVzaXplSGFuZGxlcik7CiAgICAgICAgICB9CgogICAgICAgICAgLy8gVGhpcyBpcyBuZWVkZWQgZm9yIHRoZSBzcGVjaWZpYyBjYXNlIG9mIGlvc2xpZGVzLCB3aGljaAogICAgICAgICAgLy8gZmxpcHMgc2xpZGVzIGJldHdlZW4gZGlzcGxheTpub25lIGFuZCBkaXNwbGF5OmJsb2NrLgogICAgICAgICAgLy8gSWRlYWxseSB3ZSB3b3VsZCBub3QgaGF2ZSB0byBoYXZlIGlvc2xpZGUtc3BlY2lmaWMgY29kZQogICAgICAgICAgLy8gaGVyZSwgYnV0IHJhdGhlciBoYXZlIGlvc2xpZGVzIHJhaXNlIGEgZ2VuZXJpYyBldmVudCwKICAgICAgICAgIC8vIGJ1dCB0aGUgcm1hcmtkb3duIHBhY2thZ2UganVzdCB3ZW50IHRvIENSQU4gc28gdGhlCiAgICAgICAgICAvLyB3aW5kb3cgdG8gZ2V0dGluZyB0aGF0IGZpeGVkIG1heSBiZSBsb25nLgogICAgICAgICAgaWYgKHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKSB7CiAgICAgICAgICAgIC8vIEl0J3MgT0sgdG8gbGltaXQgdGhpcyB0byB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcgogICAgICAgICAgICAvLyBicm93c2VycyBiZWNhdXNlIGlvc2xpZGVzIGl0c2VsZiBvbmx5IHN1cHBvcnRzCiAgICAgICAgICAgIC8vIHN1Y2ggYnJvd3NlcnMuCiAgICAgICAgICAgIG9uKGRvY3VtZW50LCAic2xpZGVlbnRlciIsIHJlc2l6ZUhhbmRsZXIpOwogICAgICAgICAgICBvbihkb2N1bWVudCwgInNsaWRlbGVhdmUiLCByZXNpemVIYW5kbGVyKTsKICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHZhciBzY3JpcHREYXRhID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcigic2NyaXB0W2RhdGEtZm9yPSciICsgZWwuaWQgKyAiJ11bdHlwZT0nYXBwbGljYXRpb24vanNvbiddIik7CiAgICAgICAgaWYgKHNjcmlwdERhdGEpIHsKICAgICAgICAgIHZhciBkYXRhID0gSlNPTi5wYXJzZShzY3JpcHREYXRhLnRleHRDb250ZW50IHx8IHNjcmlwdERhdGEudGV4dCk7CiAgICAgICAgICAvLyBSZXNvbHZlIHN0cmluZ3MgbWFya2VkIGFzIGphdmFzY3JpcHQgbGl0ZXJhbHMgdG8gb2JqZWN0cwogICAgICAgICAgaWYgKCEoZGF0YS5ldmFscyBpbnN0YW5jZW9mIEFycmF5KSkgZGF0YS5ldmFscyA9IFtkYXRhLmV2YWxzXTsKICAgICAgICAgIGZvciAodmFyIGsgPSAwOyBkYXRhLmV2YWxzICYmIGsgPCBkYXRhLmV2YWxzLmxlbmd0aDsgaysrKSB7CiAgICAgICAgICAgIHdpbmRvdy5IVE1MV2lkZ2V0cy5ldmFsdWF0ZVN0cmluZ01lbWJlcihkYXRhLngsIGRhdGEuZXZhbHNba10pOwogICAgICAgICAgfQogICAgICAgICAgYmluZGluZy5yZW5kZXJWYWx1ZShlbCwgZGF0YS54LCBpbml0UmVzdWx0KTsKICAgICAgICB9CiAgICAgIH0pOwogICAgfSk7CiAgfQoKICAvLyBXYWl0IHVudGlsIGFmdGVyIHRoZSBkb2N1bWVudCBoYXMgbG9hZGVkIHRvIHJlbmRlciB0aGUgd2lkZ2V0cy4KICBpZiAoZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcikgewogICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsIGZ1bmN0aW9uKCkgewogICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIiwgYXJndW1lbnRzLmNhbGxlZSwgZmFsc2UpOwogICAgICB3aW5kb3cuSFRNTFdpZGdldHMuc3RhdGljUmVuZGVyKCk7CiAgICB9LCBmYWxzZSk7CiAgfSBlbHNlIGlmIChkb2N1bWVudC5hdHRhY2hFdmVudCkgewogICAgZG9jdW1lbnQuYXR0YWNoRXZlbnQoIm9ucmVhZHlzdGF0ZWNoYW5nZSIsIGZ1bmN0aW9uKCkgewogICAgICBpZiAoZG9jdW1lbnQucmVhZHlTdGF0ZSA9PT0gImNvbXBsZXRlIikgewogICAgICAgIGRvY3VtZW50LmRldGFjaEV2ZW50KCJvbnJlYWR5c3RhdGVjaGFuZ2UiLCBhcmd1bWVudHMuY2FsbGVlKTsKICAgICAgICB3aW5kb3cuSFRNTFdpZGdldHMuc3RhdGljUmVuZGVyKCk7CiAgICAgIH0KICAgIH0pOwogIH0KCgogIHdpbmRvdy5IVE1MV2lkZ2V0cy5nZXRBdHRhY2htZW50VXJsID0gZnVuY3Rpb24oZGVwbmFtZSwga2V5KSB7CiAgICAvLyBJZiBubyBrZXksIGRlZmF1bHQgdG8gdGhlIGZpcnN0IGl0ZW0KICAgIGlmICh0eXBlb2Yoa2V5KSA9PT0gInVuZGVmaW5lZCIpCiAgICAgIGtleSA9IDE7CgogICAgdmFyIGxpbmsgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChkZXBuYW1lICsgIi0iICsga2V5ICsgIi1hdHRhY2htZW50Iik7CiAgICBpZiAoIWxpbmspIHsKICAgICAgdGhyb3cgbmV3IEVycm9yKCJBdHRhY2htZW50ICIgKyBkZXBuYW1lICsgIi8iICsga2V5ICsgIiBub3QgZm91bmQgaW4gZG9jdW1lbnQiKTsKICAgIH0KICAgIHJldHVybiBsaW5rLmdldEF0dHJpYnV0ZSgiaHJlZiIpOwogIH07CgogIHdpbmRvdy5IVE1MV2lkZ2V0cy5kYXRhZnJhbWVUb0QzID0gZnVuY3Rpb24oZGYpIHsKICAgIHZhciBuYW1lcyA9IFtdOwogICAgdmFyIGxlbmd0aDsKICAgIGZvciAodmFyIG5hbWUgaW4gZGYpIHsKICAgICAgICBpZiAoZGYuaGFzT3duUHJvcGVydHkobmFtZSkpCiAgICAgICAgICAgIG5hbWVzLnB1c2gobmFtZSk7CiAgICAgICAgaWYgKHR5cGVvZihkZltuYW1lXSkgIT09ICJvYmplY3QiIHx8IHR5cGVvZihkZltuYW1lXS5sZW5ndGgpID09PSAidW5kZWZpbmVkIikgewogICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkFsbCBmaWVsZHMgbXVzdCBiZSBhcnJheXMiKTsKICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZihsZW5ndGgpICE9PSAidW5kZWZpbmVkIiAmJiBsZW5ndGggIT09IGRmW25hbWVdLmxlbmd0aCkgewogICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkFsbCBmaWVsZHMgbXVzdCBiZSBhcnJheXMgb2YgdGhlIHNhbWUgbGVuZ3RoIik7CiAgICAgICAgfQogICAgICAgIGxlbmd0aCA9IGRmW25hbWVdLmxlbmd0aDsKICAgIH0KICAgIHZhciByZXN1bHRzID0gW107CiAgICB2YXIgaXRlbTsKICAgIGZvciAodmFyIHJvdyA9IDA7IHJvdyA8IGxlbmd0aDsgcm93KyspIHsKICAgICAgICBpdGVtID0ge307CiAgICAgICAgZm9yICh2YXIgY29sID0gMDsgY29sIDwgbmFtZXMubGVuZ3RoOyBjb2wrKykgewogICAgICAgICAgICBpdGVtW25hbWVzW2NvbF1dID0gZGZbbmFtZXNbY29sXV1bcm93XTsKICAgICAgICB9CiAgICAgICAgcmVzdWx0cy5wdXNoKGl0ZW0pOwogICAgfQogICAgcmV0dXJuIHJlc3VsdHM7CiAgfTsKCiAgd2luZG93LkhUTUxXaWRnZXRzLnRyYW5zcG9zZUFycmF5MkQgPSBmdW5jdGlvbihhcnJheSkgewogICAgICB2YXIgbmV3QXJyYXkgPSBhcnJheVswXS5tYXAoZnVuY3Rpb24oY29sLCBpKSB7CiAgICAgICAgICByZXR1cm4gYXJyYXkubWFwKGZ1bmN0aW9uKHJvdykgewogICAgICAgICAgICAgIHJldHVybiByb3dbaV0KICAgICAgICAgIH0pCiAgICAgIH0pOwogICAgICByZXR1cm4gbmV3QXJyYXk7CiAgfTsKICAvLyBTcGxpdCB2YWx1ZSBhdCBzcGxpdENoYXIsIGJ1dCBhbGxvdyBzcGxpdENoYXIgdG8gYmUgZXNjYXBlZAogIC8vIHVzaW5nIGVzY2FwZUNoYXIuIEFueSBvdGhlciBjaGFyYWN0ZXJzIGVzY2FwZWQgYnkgZXNjYXBlQ2hhcgogIC8vIHdpbGwgYmUgaW5jbHVkZWQgYXMgdXN1YWwgKGluY2x1ZGluZyBlc2NhcGVDaGFyIGl0c2VsZikuCiAgZnVuY3Rpb24gc3BsaXRXaXRoRXNjYXBlKHZhbHVlLCBzcGxpdENoYXIsIGVzY2FwZUNoYXIpIHsKICAgIHZhciByZXN1bHRzID0gW107CiAgICB2YXIgZXNjYXBlTW9kZSA9IGZhbHNlOwogICAgdmFyIGN1cnJlbnRSZXN1bHQgPSAiIjsKICAgIGZvciAodmFyIHBvcyA9IDA7IHBvcyA8IHZhbHVlLmxlbmd0aDsgcG9zKyspIHsKICAgICAgaWYgKCFlc2NhcGVNb2RlKSB7CiAgICAgICAgaWYgKHZhbHVlW3Bvc10gPT09IHNwbGl0Q2hhcikgewogICAgICAgICAgcmVzdWx0cy5wdXNoKGN1cnJlbnRSZXN1bHQpOwogICAgICAgICAgY3VycmVudFJlc3VsdCA9ICIiOwogICAgICAgIH0gZWxzZSBpZiAodmFsdWVbcG9zXSA9PT0gZXNjYXBlQ2hhcikgewogICAgICAgICAgZXNjYXBlTW9kZSA9IHRydWU7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIGN1cnJlbnRSZXN1bHQgKz0gdmFsdWVbcG9zXTsKICAgICAgICB9CiAgICAgIH0gZWxzZSB7CiAgICAgICAgY3VycmVudFJlc3VsdCArPSB2YWx1ZVtwb3NdOwogICAgICAgIGVzY2FwZU1vZGUgPSBmYWxzZTsKICAgICAgfQogICAgfQogICAgaWYgKGN1cnJlbnRSZXN1bHQgIT09ICIiKSB7CiAgICAgIHJlc3VsdHMucHVzaChjdXJyZW50UmVzdWx0KTsKICAgIH0KICAgIHJldHVybiByZXN1bHRzOwogIH0KICAvLyBGdW5jdGlvbiBhdXRob3JlZCBieSBZaWh1aS9KSiBBbGxhaXJlCiAgd2luZG93LkhUTUxXaWRnZXRzLmV2YWx1YXRlU3RyaW5nTWVtYmVyID0gZnVuY3Rpb24obywgbWVtYmVyKSB7CiAgICB2YXIgcGFydHMgPSBzcGxpdFdpdGhFc2NhcGUobWVtYmVyLCAnLicsICdcXCcpOwogICAgZm9yICh2YXIgaSA9IDAsIGwgPSBwYXJ0cy5sZW5ndGg7IGkgPCBsOyBpKyspIHsKICAgICAgdmFyIHBhcnQgPSBwYXJ0c1tpXTsKICAgICAgLy8gcGFydCBtYXkgYmUgYSBjaGFyYWN0ZXIgb3IgJ251bWVyaWMnIG1lbWJlciBuYW1lCiAgICAgIGlmIChvICE9PSBudWxsICYmIHR5cGVvZiBvID09PSAib2JqZWN0IiAmJiBwYXJ0IGluIG8pIHsKICAgICAgICBpZiAoaSA9PSAobCAtIDEpKSB7IC8vIGlmIHdlIGFyZSBhdCB0aGUgZW5kIG9mIHRoZSBsaW5lIHRoZW4gZXZhbHVsYXRlCiAgICAgICAgICBpZiAodHlwZW9mIG9bcGFydF0gPT09ICJzdHJpbmciKQogICAgICAgICAgICBvW3BhcnRdID0gZXZhbCgiKCIgKyBvW3BhcnRdICsgIikiKTsKICAgICAgICB9IGVsc2UgeyAvLyBvdGhlcndpc2UgY29udGludWUgdG8gbmV4dCBlbWJlZGRlZCBvYmplY3QKICAgICAgICAgIG8gPSBvW3BhcnRdOwogICAgICAgIH0KICAgICAgfQogICAgfQogIH07Cn0pKCk7Cgo="></script>
<script src="data:application/x-javascript;base64,LyohIGpRdWVyeSB2MS4xMS4xIHwgKGMpIDIwMDUsIDIwMTQgalF1ZXJ5IEZvdW5kYXRpb24sIEluYy4gfCBqcXVlcnkub3JnL2xpY2Vuc2UgKi8KIWZ1bmN0aW9uKGEsYil7Im9iamVjdCI9PXR5cGVvZiBtb2R1bGUmJiJvYmplY3QiPT10eXBlb2YgbW9kdWxlLmV4cG9ydHM/bW9kdWxlLmV4cG9ydHM9YS5kb2N1bWVudD9iKGEsITApOmZ1bmN0aW9uKGEpe2lmKCFhLmRvY3VtZW50KXRocm93IG5ldyBFcnJvcigialF1ZXJ5IHJlcXVpcmVzIGEgd2luZG93IHdpdGggYSBkb2N1bWVudCIpO3JldHVybiBiKGEpfTpiKGEpfSgidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6dGhpcyxmdW5jdGlvbihhLGIpe3ZhciBjPVtdLGQ9Yy5zbGljZSxlPWMuY29uY2F0LGY9Yy5wdXNoLGc9Yy5pbmRleE9mLGg9e30saT1oLnRvU3RyaW5nLGo9aC5oYXNPd25Qcm9wZXJ0eSxrPXt9LGw9IjEuMTEuMSIsbT1mdW5jdGlvbihhLGIpe3JldHVybiBuZXcgbS5mbi5pbml0KGEsYil9LG49L15bXHNcdUZFRkZceEEwXSt8W1xzXHVGRUZGXHhBMF0rJC9nLG89L14tbXMtLyxwPS8tKFtcZGEtel0pL2dpLHE9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYi50b1VwcGVyQ2FzZSgpfTttLmZuPW0ucHJvdG90eXBlPXtqcXVlcnk6bCxjb25zdHJ1Y3RvcjptLHNlbGVjdG9yOiIiLGxlbmd0aDowLHRvQXJyYXk6ZnVuY3Rpb24oKXtyZXR1cm4gZC5jYWxsKHRoaXMpfSxnZXQ6ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGwhPWE/MD5hP3RoaXNbYSt0aGlzLmxlbmd0aF06dGhpc1thXTpkLmNhbGwodGhpcyl9LHB1c2hTdGFjazpmdW5jdGlvbihhKXt2YXIgYj1tLm1lcmdlKHRoaXMuY29uc3RydWN0b3IoKSxhKTtyZXR1cm4gYi5wcmV2T2JqZWN0PXRoaXMsYi5jb250ZXh0PXRoaXMuY29udGV4dCxifSxlYWNoOmZ1bmN0aW9uKGEsYil7cmV0dXJuIG0uZWFjaCh0aGlzLGEsYil9LG1hcDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2sobS5tYXAodGhpcyxmdW5jdGlvbihiLGMpe3JldHVybiBhLmNhbGwoYixjLGIpfSkpfSxzbGljZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnB1c2hTdGFjayhkLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9LGZpcnN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZXEoMCl9LGxhc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lcSgtMSl9LGVxOmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMubGVuZ3RoLGM9K2ErKDA+YT9iOjApO3JldHVybiB0aGlzLnB1c2hTdGFjayhjPj0wJiZiPmM/W3RoaXNbY11dOltdKX0sZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHJldk9iamVjdHx8dGhpcy5jb25zdHJ1Y3RvcihudWxsKX0scHVzaDpmLHNvcnQ6Yy5zb3J0LHNwbGljZTpjLnNwbGljZX0sbS5leHRlbmQ9bS5mbi5leHRlbmQ9ZnVuY3Rpb24oKXt2YXIgYSxiLGMsZCxlLGYsZz1hcmd1bWVudHNbMF18fHt9LGg9MSxpPWFyZ3VtZW50cy5sZW5ndGgsaj0hMTtmb3IoImJvb2xlYW4iPT10eXBlb2YgZyYmKGo9ZyxnPWFyZ3VtZW50c1toXXx8e30saCsrKSwib2JqZWN0Ij09dHlwZW9mIGd8fG0uaXNGdW5jdGlvbihnKXx8KGc9e30pLGg9PT1pJiYoZz10aGlzLGgtLSk7aT5oO2grKylpZihudWxsIT0oZT1hcmd1bWVudHNbaF0pKWZvcihkIGluIGUpYT1nW2RdLGM9ZVtkXSxnIT09YyYmKGomJmMmJihtLmlzUGxhaW5PYmplY3QoYyl8fChiPW0uaXNBcnJheShjKSkpPyhiPyhiPSExLGY9YSYmbS5pc0FycmF5KGEpP2E6W10pOmY9YSYmbS5pc1BsYWluT2JqZWN0KGEpP2E6e30sZ1tkXT1tLmV4dGVuZChqLGYsYykpOnZvaWQgMCE9PWMmJihnW2RdPWMpKTtyZXR1cm4gZ30sbS5leHRlbmQoe2V4cGFuZG86ImpRdWVyeSIrKGwrTWF0aC5yYW5kb20oKSkucmVwbGFjZSgvXEQvZywiIiksaXNSZWFkeTohMCxlcnJvcjpmdW5jdGlvbihhKXt0aHJvdyBuZXcgRXJyb3IoYSl9LG5vb3A6ZnVuY3Rpb24oKXt9LGlzRnVuY3Rpb246ZnVuY3Rpb24oYSl7cmV0dXJuImZ1bmN0aW9uIj09PW0udHlwZShhKX0saXNBcnJheTpBcnJheS5pc0FycmF5fHxmdW5jdGlvbihhKXtyZXR1cm4iYXJyYXkiPT09bS50eXBlKGEpfSxpc1dpbmRvdzpmdW5jdGlvbihhKXtyZXR1cm4gbnVsbCE9YSYmYT09YS53aW5kb3d9LGlzTnVtZXJpYzpmdW5jdGlvbihhKXtyZXR1cm4hbS5pc0FycmF5KGEpJiZhLXBhcnNlRmxvYXQoYSk+PTB9LGlzRW1wdHlPYmplY3Q6ZnVuY3Rpb24oYSl7dmFyIGI7Zm9yKGIgaW4gYSlyZXR1cm4hMTtyZXR1cm4hMH0saXNQbGFpbk9iamVjdDpmdW5jdGlvbihhKXt2YXIgYjtpZighYXx8Im9iamVjdCIhPT1tLnR5cGUoYSl8fGEubm9kZVR5cGV8fG0uaXNXaW5kb3coYSkpcmV0dXJuITE7dHJ5e2lmKGEuY29uc3RydWN0b3ImJiFqLmNhbGwoYSwiY29uc3RydWN0b3IiKSYmIWouY2FsbChhLmNvbnN0cnVjdG9yLnByb3RvdHlwZSwiaXNQcm90b3R5cGVPZiIpKXJldHVybiExfWNhdGNoKGMpe3JldHVybiExfWlmKGsub3duTGFzdClmb3IoYiBpbiBhKXJldHVybiBqLmNhbGwoYSxiKTtmb3IoYiBpbiBhKTtyZXR1cm4gdm9pZCAwPT09Ynx8ai5jYWxsKGEsYil9LHR5cGU6ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGw9PWE/YSsiIjoib2JqZWN0Ij09dHlwZW9mIGF8fCJmdW5jdGlvbiI9PXR5cGVvZiBhP2hbaS5jYWxsKGEpXXx8Im9iamVjdCI6dHlwZW9mIGF9LGdsb2JhbEV2YWw6ZnVuY3Rpb24oYil7YiYmbS50cmltKGIpJiYoYS5leGVjU2NyaXB0fHxmdW5jdGlvbihiKXthLmV2YWwuY2FsbChhLGIpfSkoYil9LGNhbWVsQ2FzZTpmdW5jdGlvbihhKXtyZXR1cm4gYS5yZXBsYWNlKG8sIm1zLSIpLnJlcGxhY2UocCxxKX0sbm9kZU5hbWU6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5ub2RlTmFtZSYmYS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09Yi50b0xvd2VyQ2FzZSgpfSxlYWNoOmZ1bmN0aW9uKGEsYixjKXt2YXIgZCxlPTAsZj1hLmxlbmd0aCxnPXIoYSk7aWYoYyl7aWYoZyl7Zm9yKDtmPmU7ZSsrKWlmKGQ9Yi5hcHBseShhW2VdLGMpLGQ9PT0hMSlicmVha31lbHNlIGZvcihlIGluIGEpaWYoZD1iLmFwcGx5KGFbZV0sYyksZD09PSExKWJyZWFrfWVsc2UgaWYoZyl7Zm9yKDtmPmU7ZSsrKWlmKGQ9Yi5jYWxsKGFbZV0sZSxhW2VdKSxkPT09ITEpYnJlYWt9ZWxzZSBmb3IoZSBpbiBhKWlmKGQ9Yi5jYWxsKGFbZV0sZSxhW2VdKSxkPT09ITEpYnJlYWs7cmV0dXJuIGF9LHRyaW06ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGw9PWE/IiI6KGErIiIpLnJlcGxhY2UobiwiIil9LG1ha2VBcnJheTpmdW5jdGlvbihhLGIpe3ZhciBjPWJ8fFtdO3JldHVybiBudWxsIT1hJiYocihPYmplY3QoYSkpP20ubWVyZ2UoYywic3RyaW5nIj09dHlwZW9mIGE/W2FdOmEpOmYuY2FsbChjLGEpKSxjfSxpbkFycmF5OmZ1bmN0aW9uKGEsYixjKXt2YXIgZDtpZihiKXtpZihnKXJldHVybiBnLmNhbGwoYixhLGMpO2ZvcihkPWIubGVuZ3RoLGM9Yz8wPmM/TWF0aC5tYXgoMCxkK2MpOmM6MDtkPmM7YysrKWlmKGMgaW4gYiYmYltjXT09PWEpcmV0dXJuIGN9cmV0dXJuLTF9LG1lcmdlOmZ1bmN0aW9uKGEsYil7dmFyIGM9K2IubGVuZ3RoLGQ9MCxlPWEubGVuZ3RoO3doaWxlKGM+ZClhW2UrK109YltkKytdO2lmKGMhPT1jKXdoaWxlKHZvaWQgMCE9PWJbZF0pYVtlKytdPWJbZCsrXTtyZXR1cm4gYS5sZW5ndGg9ZSxhfSxncmVwOmZ1bmN0aW9uKGEsYixjKXtmb3IodmFyIGQsZT1bXSxmPTAsZz1hLmxlbmd0aCxoPSFjO2c+ZjtmKyspZD0hYihhW2ZdLGYpLGQhPT1oJiZlLnB1c2goYVtmXSk7cmV0dXJuIGV9LG1hcDpmdW5jdGlvbihhLGIsYyl7dmFyIGQsZj0wLGc9YS5sZW5ndGgsaD1yKGEpLGk9W107aWYoaClmb3IoO2c+ZjtmKyspZD1iKGFbZl0sZixjKSxudWxsIT1kJiZpLnB1c2goZCk7ZWxzZSBmb3IoZiBpbiBhKWQ9YihhW2ZdLGYsYyksbnVsbCE9ZCYmaS5wdXNoKGQpO3JldHVybiBlLmFwcGx5KFtdLGkpfSxndWlkOjEscHJveHk6ZnVuY3Rpb24oYSxiKXt2YXIgYyxlLGY7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBiJiYoZj1hW2JdLGI9YSxhPWYpLG0uaXNGdW5jdGlvbihhKT8oYz1kLmNhbGwoYXJndW1lbnRzLDIpLGU9ZnVuY3Rpb24oKXtyZXR1cm4gYS5hcHBseShifHx0aGlzLGMuY29uY2F0KGQuY2FsbChhcmd1bWVudHMpKSl9LGUuZ3VpZD1hLmd1aWQ9YS5ndWlkfHxtLmd1aWQrKyxlKTp2b2lkIDB9LG5vdzpmdW5jdGlvbigpe3JldHVybituZXcgRGF0ZX0sc3VwcG9ydDprfSksbS5lYWNoKCJCb29sZWFuIE51bWJlciBTdHJpbmcgRnVuY3Rpb24gQXJyYXkgRGF0ZSBSZWdFeHAgT2JqZWN0IEVycm9yIi5zcGxpdCgiICIpLGZ1bmN0aW9uKGEsYil7aFsiW29iamVjdCAiK2IrIl0iXT1iLnRvTG93ZXJDYXNlKCl9KTtmdW5jdGlvbiByKGEpe3ZhciBiPWEubGVuZ3RoLGM9bS50eXBlKGEpO3JldHVybiJmdW5jdGlvbiI9PT1jfHxtLmlzV2luZG93KGEpPyExOjE9PT1hLm5vZGVUeXBlJiZiPyEwOiJhcnJheSI9PT1jfHwwPT09Ynx8Im51bWJlciI9PXR5cGVvZiBiJiZiPjAmJmItMSBpbiBhfXZhciBzPWZ1bmN0aW9uKGEpe3ZhciBiLGMsZCxlLGYsZyxoLGksaixrLGwsbSxuLG8scCxxLHIscyx0LHU9InNpenpsZSIrLW5ldyBEYXRlLHY9YS5kb2N1bWVudCx3PTAseD0wLHk9Z2IoKSx6PWdiKCksQT1nYigpLEI9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYT09PWImJihsPSEwKSwwfSxDPSJ1bmRlZmluZWQiLEQ9MTw8MzEsRT17fS5oYXNPd25Qcm9wZXJ0eSxGPVtdLEc9Ri5wb3AsSD1GLnB1c2gsST1GLnB1c2gsSj1GLnNsaWNlLEs9Ri5pbmRleE9mfHxmdW5jdGlvbihhKXtmb3IodmFyIGI9MCxjPXRoaXMubGVuZ3RoO2M+YjtiKyspaWYodGhpc1tiXT09PWEpcmV0dXJuIGI7cmV0dXJuLTF9LEw9ImNoZWNrZWR8c2VsZWN0ZWR8YXN5bmN8YXV0b2ZvY3VzfGF1dG9wbGF5fGNvbnRyb2xzfGRlZmVyfGRpc2FibGVkfGhpZGRlbnxpc21hcHxsb29wfG11bHRpcGxlfG9wZW58cmVhZG9ubHl8cmVxdWlyZWR8c2NvcGVkIixNPSJbXFx4MjBcXHRcXHJcXG5cXGZdIixOPSIoPzpcXFxcLnxbXFx3LV18W15cXHgwMC1cXHhhMF0pKyIsTz1OLnJlcGxhY2UoInciLCJ3IyIpLFA9IlxcWyIrTSsiKigiK04rIikoPzoiK00rIiooWypeJHwhfl0/PSkiK00rIiooPzonKCg/OlxcXFwufFteXFxcXCddKSopJ3xcIigoPzpcXFxcLnxbXlxcXFxcIl0pKilcInwoIitPKyIpKXwpIitNKyIqXFxdIixRPSI6KCIrTisiKSg/OlxcKCgoJygoPzpcXFxcLnxbXlxcXFwnXSkqKSd8XCIoKD86XFxcXC58W15cXFxcXCJdKSopXCIpfCgoPzpcXFxcLnxbXlxcXFwoKVtcXF1dfCIrUCsiKSopfC4qKVxcKXwpIixSPW5ldyBSZWdFeHAoIl4iK00rIit8KCg/Ol58W15cXFxcXSkoPzpcXFxcLikqKSIrTSsiKyQiLCJnIiksUz1uZXcgUmVnRXhwKCJeIitNKyIqLCIrTSsiKiIpLFQ9bmV3IFJlZ0V4cCgiXiIrTSsiKihbPit+XXwiK00rIikiK00rIioiKSxVPW5ldyBSZWdFeHAoIj0iK00rIiooW15cXF0nXCJdKj8pIitNKyIqXFxdIiwiZyIpLFY9bmV3IFJlZ0V4cChRKSxXPW5ldyBSZWdFeHAoIl4iK08rIiQiKSxYPXtJRDpuZXcgUmVnRXhwKCJeIygiK04rIikiKSxDTEFTUzpuZXcgUmVnRXhwKCJeXFwuKCIrTisiKSIpLFRBRzpuZXcgUmVnRXhwKCJeKCIrTi5yZXBsYWNlKCJ3IiwidyoiKSsiKSIpLEFUVFI6bmV3IFJlZ0V4cCgiXiIrUCksUFNFVURPOm5ldyBSZWdFeHAoIl4iK1EpLENISUxEOm5ldyBSZWdFeHAoIl46KG9ubHl8Zmlyc3R8bGFzdHxudGh8bnRoLWxhc3QpLShjaGlsZHxvZi10eXBlKSg/OlxcKCIrTSsiKihldmVufG9kZHwoKFsrLV18KShcXGQqKW58KSIrTSsiKig/OihbKy1dfCkiK00rIiooXFxkKyl8KSkiK00rIipcXCl8KSIsImkiKSxib29sOm5ldyBSZWdFeHAoIl4oPzoiK0wrIikkIiwiaSIpLG5lZWRzQ29udGV4dDpuZXcgUmVnRXhwKCJeIitNKyIqWz4rfl18OihldmVufG9kZHxlcXxndHxsdHxudGh8Zmlyc3R8bGFzdCkoPzpcXCgiK00rIiooKD86LVxcZCk/XFxkKikiK00rIipcXCl8KSg/PVteLV18JCkiLCJpIil9LFk9L14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWF8YnV0dG9uKSQvaSxaPS9eaFxkJC9pLCQ9L15bXntdK1x7XHMqXFtuYXRpdmUgXHcvLF89L14oPzojKFtcdy1dKyl8KFx3Kyl8XC4oW1x3LV0rKSkkLyxhYj0vWyt+XS8sYmI9Lyd8XFwvZyxjYj1uZXcgUmVnRXhwKCJcXFxcKFtcXGRhLWZdezEsNn0iK00rIj98KCIrTSsiKXwuKSIsImlnIiksZGI9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPSIweCIrYi02NTUzNjtyZXR1cm4gZCE9PWR8fGM/YjowPmQ/U3RyaW5nLmZyb21DaGFyQ29kZShkKzY1NTM2KTpTdHJpbmcuZnJvbUNoYXJDb2RlKGQ+PjEwfDU1Mjk2LDEwMjMmZHw1NjMyMCl9O3RyeXtJLmFwcGx5KEY9Si5jYWxsKHYuY2hpbGROb2Rlcyksdi5jaGlsZE5vZGVzKSxGW3YuY2hpbGROb2Rlcy5sZW5ndGhdLm5vZGVUeXBlfWNhdGNoKGViKXtJPXthcHBseTpGLmxlbmd0aD9mdW5jdGlvbihhLGIpe0guYXBwbHkoYSxKLmNhbGwoYikpfTpmdW5jdGlvbihhLGIpe3ZhciBjPWEubGVuZ3RoLGQ9MDt3aGlsZShhW2MrK109YltkKytdKTthLmxlbmd0aD1jLTF9fX1mdW5jdGlvbiBmYihhLGIsZCxlKXt2YXIgZixoLGosayxsLG8scixzLHcseDtpZigoYj9iLm93bmVyRG9jdW1lbnR8fGI6dikhPT1uJiZtKGIpLGI9Ynx8bixkPWR8fFtdLCFhfHwic3RyaW5nIiE9dHlwZW9mIGEpcmV0dXJuIGQ7aWYoMSE9PShrPWIubm9kZVR5cGUpJiY5IT09aylyZXR1cm5bXTtpZihwJiYhZSl7aWYoZj1fLmV4ZWMoYSkpaWYoaj1mWzFdKXtpZig5PT09ayl7aWYoaD1iLmdldEVsZW1lbnRCeUlkKGopLCFofHwhaC5wYXJlbnROb2RlKXJldHVybiBkO2lmKGguaWQ9PT1qKXJldHVybiBkLnB1c2goaCksZH1lbHNlIGlmKGIub3duZXJEb2N1bWVudCYmKGg9Yi5vd25lckRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGopKSYmdChiLGgpJiZoLmlkPT09ailyZXR1cm4gZC5wdXNoKGgpLGR9ZWxzZXtpZihmWzJdKXJldHVybiBJLmFwcGx5KGQsYi5nZXRFbGVtZW50c0J5VGFnTmFtZShhKSksZDtpZigoaj1mWzNdKSYmYy5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lJiZiLmdldEVsZW1lbnRzQnlDbGFzc05hbWUpcmV0dXJuIEkuYXBwbHkoZCxiLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoaikpLGR9aWYoYy5xc2EmJighcXx8IXEudGVzdChhKSkpe2lmKHM9cj11LHc9Yix4PTk9PT1rJiZhLDE9PT1rJiYib2JqZWN0IiE9PWIubm9kZU5hbWUudG9Mb3dlckNhc2UoKSl7bz1nKGEpLChyPWIuZ2V0QXR0cmlidXRlKCJpZCIpKT9zPXIucmVwbGFjZShiYiwiXFwkJiIpOmIuc2V0QXR0cmlidXRlKCJpZCIscykscz0iW2lkPSciK3MrIiddICIsbD1vLmxlbmd0aDt3aGlsZShsLS0pb1tsXT1zK3FiKG9bbF0pO3c9YWIudGVzdChhKSYmb2IoYi5wYXJlbnROb2RlKXx8Yix4PW8uam9pbigiLCIpfWlmKHgpdHJ5e3JldHVybiBJLmFwcGx5KGQsdy5xdWVyeVNlbGVjdG9yQWxsKHgpKSxkfWNhdGNoKHkpe31maW5hbGx5e3J8fGIucmVtb3ZlQXR0cmlidXRlKCJpZCIpfX19cmV0dXJuIGkoYS5yZXBsYWNlKFIsIiQxIiksYixkLGUpfWZ1bmN0aW9uIGdiKCl7dmFyIGE9W107ZnVuY3Rpb24gYihjLGUpe3JldHVybiBhLnB1c2goYysiICIpPmQuY2FjaGVMZW5ndGgmJmRlbGV0ZSBiW2Euc2hpZnQoKV0sYltjKyIgIl09ZX1yZXR1cm4gYn1mdW5jdGlvbiBoYihhKXtyZXR1cm4gYVt1XT0hMCxhfWZ1bmN0aW9uIGliKGEpe3ZhciBiPW4uY3JlYXRlRWxlbWVudCgiZGl2Iik7dHJ5e3JldHVybiEhYShiKX1jYXRjaChjKXtyZXR1cm4hMX1maW5hbGx5e2IucGFyZW50Tm9kZSYmYi5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGIpLGI9bnVsbH19ZnVuY3Rpb24gamIoYSxiKXt2YXIgYz1hLnNwbGl0KCJ8IiksZT1hLmxlbmd0aDt3aGlsZShlLS0pZC5hdHRySGFuZGxlW2NbZV1dPWJ9ZnVuY3Rpb24ga2IoYSxiKXt2YXIgYz1iJiZhLGQ9YyYmMT09PWEubm9kZVR5cGUmJjE9PT1iLm5vZGVUeXBlJiYofmIuc291cmNlSW5kZXh8fEQpLSh+YS5zb3VyY2VJbmRleHx8RCk7aWYoZClyZXR1cm4gZDtpZihjKXdoaWxlKGM9Yy5uZXh0U2libGluZylpZihjPT09YilyZXR1cm4tMTtyZXR1cm4gYT8xOi0xfWZ1bmN0aW9uIGxiKGEpe3JldHVybiBmdW5jdGlvbihiKXt2YXIgYz1iLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuImlucHV0Ij09PWMmJmIudHlwZT09PWF9fWZ1bmN0aW9uIG1iKGEpe3JldHVybiBmdW5jdGlvbihiKXt2YXIgYz1iLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuKCJpbnB1dCI9PT1jfHwiYnV0dG9uIj09PWMpJiZiLnR5cGU9PT1hfX1mdW5jdGlvbiBuYihhKXtyZXR1cm4gaGIoZnVuY3Rpb24oYil7cmV0dXJuIGI9K2IsaGIoZnVuY3Rpb24oYyxkKXt2YXIgZSxmPWEoW10sYy5sZW5ndGgsYiksZz1mLmxlbmd0aDt3aGlsZShnLS0pY1tlPWZbZ11dJiYoY1tlXT0hKGRbZV09Y1tlXSkpfSl9KX1mdW5jdGlvbiBvYihhKXtyZXR1cm4gYSYmdHlwZW9mIGEuZ2V0RWxlbWVudHNCeVRhZ05hbWUhPT1DJiZhfWM9ZmIuc3VwcG9ydD17fSxmPWZiLmlzWE1MPWZ1bmN0aW9uKGEpe3ZhciBiPWEmJihhLm93bmVyRG9jdW1lbnR8fGEpLmRvY3VtZW50RWxlbWVudDtyZXR1cm4gYj8iSFRNTCIhPT1iLm5vZGVOYW1lOiExfSxtPWZiLnNldERvY3VtZW50PWZ1bmN0aW9uKGEpe3ZhciBiLGU9YT9hLm93bmVyRG9jdW1lbnR8fGE6dixnPWUuZGVmYXVsdFZpZXc7cmV0dXJuIGUhPT1uJiY5PT09ZS5ub2RlVHlwZSYmZS5kb2N1bWVudEVsZW1lbnQ/KG49ZSxvPWUuZG9jdW1lbnRFbGVtZW50LHA9IWYoZSksZyYmZyE9PWcudG9wJiYoZy5hZGRFdmVudExpc3RlbmVyP2cuYWRkRXZlbnRMaXN0ZW5lcigidW5sb2FkIixmdW5jdGlvbigpe20oKX0sITEpOmcuYXR0YWNoRXZlbnQmJmcuYXR0YWNoRXZlbnQoIm9udW5sb2FkIixmdW5jdGlvbigpe20oKX0pKSxjLmF0dHJpYnV0ZXM9aWIoZnVuY3Rpb24oYSl7cmV0dXJuIGEuY2xhc3NOYW1lPSJpIiwhYS5nZXRBdHRyaWJ1dGUoImNsYXNzTmFtZSIpfSksYy5nZXRFbGVtZW50c0J5VGFnTmFtZT1pYihmdW5jdGlvbihhKXtyZXR1cm4gYS5hcHBlbmRDaGlsZChlLmNyZWF0ZUNvbW1lbnQoIiIpKSwhYS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpLmxlbmd0aH0pLGMuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZT0kLnRlc3QoZS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKSYmaWIoZnVuY3Rpb24oYSl7cmV0dXJuIGEuaW5uZXJIVE1MPSI8ZGl2IGNsYXNzPSdhJz48L2Rpdj48ZGl2IGNsYXNzPSdhIGknPjwvZGl2PiIsYS5maXJzdENoaWxkLmNsYXNzTmFtZT0iaSIsMj09PWEuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgiaSIpLmxlbmd0aH0pLGMuZ2V0QnlJZD1pYihmdW5jdGlvbihhKXtyZXR1cm4gby5hcHBlbmRDaGlsZChhKS5pZD11LCFlLmdldEVsZW1lbnRzQnlOYW1lfHwhZS5nZXRFbGVtZW50c0J5TmFtZSh1KS5sZW5ndGh9KSxjLmdldEJ5SWQ/KGQuZmluZC5JRD1mdW5jdGlvbihhLGIpe2lmKHR5cGVvZiBiLmdldEVsZW1lbnRCeUlkIT09QyYmcCl7dmFyIGM9Yi5nZXRFbGVtZW50QnlJZChhKTtyZXR1cm4gYyYmYy5wYXJlbnROb2RlP1tjXTpbXX19LGQuZmlsdGVyLklEPWZ1bmN0aW9uKGEpe3ZhciBiPWEucmVwbGFjZShjYixkYik7cmV0dXJuIGZ1bmN0aW9uKGEpe3JldHVybiBhLmdldEF0dHJpYnV0ZSgiaWQiKT09PWJ9fSk6KGRlbGV0ZSBkLmZpbmQuSUQsZC5maWx0ZXIuSUQ9ZnVuY3Rpb24oYSl7dmFyIGI9YS5yZXBsYWNlKGNiLGRiKTtyZXR1cm4gZnVuY3Rpb24oYSl7dmFyIGM9dHlwZW9mIGEuZ2V0QXR0cmlidXRlTm9kZSE9PUMmJmEuZ2V0QXR0cmlidXRlTm9kZSgiaWQiKTtyZXR1cm4gYyYmYy52YWx1ZT09PWJ9fSksZC5maW5kLlRBRz1jLmdldEVsZW1lbnRzQnlUYWdOYW1lP2Z1bmN0aW9uKGEsYil7cmV0dXJuIHR5cGVvZiBiLmdldEVsZW1lbnRzQnlUYWdOYW1lIT09Qz9iLmdldEVsZW1lbnRzQnlUYWdOYW1lKGEpOnZvaWQgMH06ZnVuY3Rpb24oYSxiKXt2YXIgYyxkPVtdLGU9MCxmPWIuZ2V0RWxlbWVudHNCeVRhZ05hbWUoYSk7aWYoIioiPT09YSl7d2hpbGUoYz1mW2UrK10pMT09PWMubm9kZVR5cGUmJmQucHVzaChjKTtyZXR1cm4gZH1yZXR1cm4gZn0sZC5maW5kLkNMQVNTPWMuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSYmZnVuY3Rpb24oYSxiKXtyZXR1cm4gdHlwZW9mIGIuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSE9PUMmJnA/Yi5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGEpOnZvaWQgMH0scj1bXSxxPVtdLChjLnFzYT0kLnRlc3QoZS5xdWVyeVNlbGVjdG9yQWxsKSkmJihpYihmdW5jdGlvbihhKXthLmlubmVySFRNTD0iPHNlbGVjdCBtc2FsbG93Y2xpcD0nJz48b3B0aW9uIHNlbGVjdGVkPScnPjwvb3B0aW9uPjwvc2VsZWN0PiIsYS5xdWVyeVNlbGVjdG9yQWxsKCJbbXNhbGxvd2NsaXBePScnXSIpLmxlbmd0aCYmcS5wdXNoKCJbKl4kXT0iK00rIiooPzonJ3xcIlwiKSIpLGEucXVlcnlTZWxlY3RvckFsbCgiW3NlbGVjdGVkXSIpLmxlbmd0aHx8cS5wdXNoKCJcXFsiK00rIiooPzp2YWx1ZXwiK0wrIikiKSxhLnF1ZXJ5U2VsZWN0b3JBbGwoIjpjaGVja2VkIikubGVuZ3RofHxxLnB1c2goIjpjaGVja2VkIil9KSxpYihmdW5jdGlvbihhKXt2YXIgYj1lLmNyZWF0ZUVsZW1lbnQoImlucHV0Iik7Yi5zZXRBdHRyaWJ1dGUoInR5cGUiLCJoaWRkZW4iKSxhLmFwcGVuZENoaWxkKGIpLnNldEF0dHJpYnV0ZSgibmFtZSIsIkQiKSxhLnF1ZXJ5U2VsZWN0b3JBbGwoIltuYW1lPWRdIikubGVuZ3RoJiZxLnB1c2goIm5hbWUiK00rIipbKl4kfCF+XT89IiksYS5xdWVyeVNlbGVjdG9yQWxsKCI6ZW5hYmxlZCIpLmxlbmd0aHx8cS5wdXNoKCI6ZW5hYmxlZCIsIjpkaXNhYmxlZCIpLGEucXVlcnlTZWxlY3RvckFsbCgiKiw6eCIpLHEucHVzaCgiLC4qOiIpfSkpLChjLm1hdGNoZXNTZWxlY3Rvcj0kLnRlc3Qocz1vLm1hdGNoZXN8fG8ud2Via2l0TWF0Y2hlc1NlbGVjdG9yfHxvLm1vek1hdGNoZXNTZWxlY3Rvcnx8by5vTWF0Y2hlc1NlbGVjdG9yfHxvLm1zTWF0Y2hlc1NlbGVjdG9yKSkmJmliKGZ1bmN0aW9uKGEpe2MuZGlzY29ubmVjdGVkTWF0Y2g9cy5jYWxsKGEsImRpdiIpLHMuY2FsbChhLCJbcyE9JyddOngiKSxyLnB1c2goIiE9IixRKX0pLHE9cS5sZW5ndGgmJm5ldyBSZWdFeHAocS5qb2luKCJ8IikpLHI9ci5sZW5ndGgmJm5ldyBSZWdFeHAoci5qb2luKCJ8IikpLGI9JC50ZXN0KG8uY29tcGFyZURvY3VtZW50UG9zaXRpb24pLHQ9Ynx8JC50ZXN0KG8uY29udGFpbnMpP2Z1bmN0aW9uKGEsYil7dmFyIGM9OT09PWEubm9kZVR5cGU/YS5kb2N1bWVudEVsZW1lbnQ6YSxkPWImJmIucGFyZW50Tm9kZTtyZXR1cm4gYT09PWR8fCEoIWR8fDEhPT1kLm5vZGVUeXBlfHwhKGMuY29udGFpbnM/Yy5jb250YWlucyhkKTphLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uJiYxNiZhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGQpKSl9OmZ1bmN0aW9uKGEsYil7aWYoYil3aGlsZShiPWIucGFyZW50Tm9kZSlpZihiPT09YSlyZXR1cm4hMDtyZXR1cm4hMX0sQj1iP2Z1bmN0aW9uKGEsYil7aWYoYT09PWIpcmV0dXJuIGw9ITAsMDt2YXIgZD0hYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbi0hYi5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbjtyZXR1cm4gZD9kOihkPShhLm93bmVyRG9jdW1lbnR8fGEpPT09KGIub3duZXJEb2N1bWVudHx8Yik/YS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihiKToxLDEmZHx8IWMuc29ydERldGFjaGVkJiZiLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGEpPT09ZD9hPT09ZXx8YS5vd25lckRvY3VtZW50PT09diYmdCh2LGEpPy0xOmI9PT1lfHxiLm93bmVyRG9jdW1lbnQ9PT12JiZ0KHYsYik/MTprP0suY2FsbChrLGEpLUsuY2FsbChrLGIpOjA6NCZkPy0xOjEpfTpmdW5jdGlvbihhLGIpe2lmKGE9PT1iKXJldHVybiBsPSEwLDA7dmFyIGMsZD0wLGY9YS5wYXJlbnROb2RlLGc9Yi5wYXJlbnROb2RlLGg9W2FdLGk9W2JdO2lmKCFmfHwhZylyZXR1cm4gYT09PWU/LTE6Yj09PWU/MTpmPy0xOmc/MTprP0suY2FsbChrLGEpLUsuY2FsbChrLGIpOjA7aWYoZj09PWcpcmV0dXJuIGtiKGEsYik7Yz1hO3doaWxlKGM9Yy5wYXJlbnROb2RlKWgudW5zaGlmdChjKTtjPWI7d2hpbGUoYz1jLnBhcmVudE5vZGUpaS51bnNoaWZ0KGMpO3doaWxlKGhbZF09PT1pW2RdKWQrKztyZXR1cm4gZD9rYihoW2RdLGlbZF0pOmhbZF09PT12Py0xOmlbZF09PT12PzE6MH0sZSk6bn0sZmIubWF0Y2hlcz1mdW5jdGlvbihhLGIpe3JldHVybiBmYihhLG51bGwsbnVsbCxiKX0sZmIubWF0Y2hlc1NlbGVjdG9yPWZ1bmN0aW9uKGEsYil7aWYoKGEub3duZXJEb2N1bWVudHx8YSkhPT1uJiZtKGEpLGI9Yi5yZXBsYWNlKFUsIj0nJDEnXSIpLCEoIWMubWF0Y2hlc1NlbGVjdG9yfHwhcHx8ciYmci50ZXN0KGIpfHxxJiZxLnRlc3QoYikpKXRyeXt2YXIgZD1zLmNhbGwoYSxiKTtpZihkfHxjLmRpc2Nvbm5lY3RlZE1hdGNofHxhLmRvY3VtZW50JiYxMSE9PWEuZG9jdW1lbnQubm9kZVR5cGUpcmV0dXJuIGR9Y2F0Y2goZSl7fXJldHVybiBmYihiLG4sbnVsbCxbYV0pLmxlbmd0aD4wfSxmYi5jb250YWlucz1mdW5jdGlvbihhLGIpe3JldHVybihhLm93bmVyRG9jdW1lbnR8fGEpIT09biYmbShhKSx0KGEsYil9LGZiLmF0dHI9ZnVuY3Rpb24oYSxiKXsoYS5vd25lckRvY3VtZW50fHxhKSE9PW4mJm0oYSk7dmFyIGU9ZC5hdHRySGFuZGxlW2IudG9Mb3dlckNhc2UoKV0sZj1lJiZFLmNhbGwoZC5hdHRySGFuZGxlLGIudG9Mb3dlckNhc2UoKSk/ZShhLGIsIXApOnZvaWQgMDtyZXR1cm4gdm9pZCAwIT09Zj9mOmMuYXR0cmlidXRlc3x8IXA/YS5nZXRBdHRyaWJ1dGUoYik6KGY9YS5nZXRBdHRyaWJ1dGVOb2RlKGIpKSYmZi5zcGVjaWZpZWQ/Zi52YWx1ZTpudWxsfSxmYi5lcnJvcj1mdW5jdGlvbihhKXt0aHJvdyBuZXcgRXJyb3IoIlN5bnRheCBlcnJvciwgdW5yZWNvZ25pemVkIGV4cHJlc3Npb246ICIrYSl9LGZiLnVuaXF1ZVNvcnQ9ZnVuY3Rpb24oYSl7dmFyIGIsZD1bXSxlPTAsZj0wO2lmKGw9IWMuZGV0ZWN0RHVwbGljYXRlcyxrPSFjLnNvcnRTdGFibGUmJmEuc2xpY2UoMCksYS5zb3J0KEIpLGwpe3doaWxlKGI9YVtmKytdKWI9PT1hW2ZdJiYoZT1kLnB1c2goZikpO3doaWxlKGUtLSlhLnNwbGljZShkW2VdLDEpfXJldHVybiBrPW51bGwsYX0sZT1mYi5nZXRUZXh0PWZ1bmN0aW9uKGEpe3ZhciBiLGM9IiIsZD0wLGY9YS5ub2RlVHlwZTtpZihmKXtpZigxPT09Znx8OT09PWZ8fDExPT09Zil7aWYoInN0cmluZyI9PXR5cGVvZiBhLnRleHRDb250ZW50KXJldHVybiBhLnRleHRDb250ZW50O2ZvcihhPWEuZmlyc3RDaGlsZDthO2E9YS5uZXh0U2libGluZyljKz1lKGEpfWVsc2UgaWYoMz09PWZ8fDQ9PT1mKXJldHVybiBhLm5vZGVWYWx1ZX1lbHNlIHdoaWxlKGI9YVtkKytdKWMrPWUoYik7cmV0dXJuIGN9LGQ9ZmIuc2VsZWN0b3JzPXtjYWNoZUxlbmd0aDo1MCxjcmVhdGVQc2V1ZG86aGIsbWF0Y2g6WCxhdHRySGFuZGxlOnt9LGZpbmQ6e30scmVsYXRpdmU6eyI+Ijp7ZGlyOiJwYXJlbnROb2RlIixmaXJzdDohMH0sIiAiOntkaXI6InBhcmVudE5vZGUifSwiKyI6e2RpcjoicHJldmlvdXNTaWJsaW5nIixmaXJzdDohMH0sIn4iOntkaXI6InByZXZpb3VzU2libGluZyJ9fSxwcmVGaWx0ZXI6e0FUVFI6ZnVuY3Rpb24oYSl7cmV0dXJuIGFbMV09YVsxXS5yZXBsYWNlKGNiLGRiKSxhWzNdPShhWzNdfHxhWzRdfHxhWzVdfHwiIikucmVwbGFjZShjYixkYiksIn49Ij09PWFbMl0mJihhWzNdPSIgIithWzNdKyIgIiksYS5zbGljZSgwLDQpfSxDSElMRDpmdW5jdGlvbihhKXtyZXR1cm4gYVsxXT1hWzFdLnRvTG93ZXJDYXNlKCksIm50aCI9PT1hWzFdLnNsaWNlKDAsMyk/KGFbM118fGZiLmVycm9yKGFbMF0pLGFbNF09KyhhWzRdP2FbNV0rKGFbNl18fDEpOjIqKCJldmVuIj09PWFbM118fCJvZGQiPT09YVszXSkpLGFbNV09KyhhWzddK2FbOF18fCJvZGQiPT09YVszXSkpOmFbM10mJmZiLmVycm9yKGFbMF0pLGF9LFBTRVVETzpmdW5jdGlvbihhKXt2YXIgYixjPSFhWzZdJiZhWzJdO3JldHVybiBYLkNISUxELnRlc3QoYVswXSk/bnVsbDooYVszXT9hWzJdPWFbNF18fGFbNV18fCIiOmMmJlYudGVzdChjKSYmKGI9ZyhjLCEwKSkmJihiPWMuaW5kZXhPZigiKSIsYy5sZW5ndGgtYiktYy5sZW5ndGgpJiYoYVswXT1hWzBdLnNsaWNlKDAsYiksYVsyXT1jLnNsaWNlKDAsYikpLGEuc2xpY2UoMCwzKSl9fSxmaWx0ZXI6e1RBRzpmdW5jdGlvbihhKXt2YXIgYj1hLnJlcGxhY2UoY2IsZGIpLnRvTG93ZXJDYXNlKCk7cmV0dXJuIioiPT09YT9mdW5jdGlvbigpe3JldHVybiEwfTpmdW5jdGlvbihhKXtyZXR1cm4gYS5ub2RlTmFtZSYmYS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09Yn19LENMQVNTOmZ1bmN0aW9uKGEpe3ZhciBiPXlbYSsiICJdO3JldHVybiBifHwoYj1uZXcgUmVnRXhwKCIoXnwiK00rIikiK2ErIigiK00rInwkKSIpKSYmeShhLGZ1bmN0aW9uKGEpe3JldHVybiBiLnRlc3QoInN0cmluZyI9PXR5cGVvZiBhLmNsYXNzTmFtZSYmYS5jbGFzc05hbWV8fHR5cGVvZiBhLmdldEF0dHJpYnV0ZSE9PUMmJmEuZ2V0QXR0cmlidXRlKCJjbGFzcyIpfHwiIil9KX0sQVRUUjpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGZ1bmN0aW9uKGQpe3ZhciBlPWZiLmF0dHIoZCxhKTtyZXR1cm4gbnVsbD09ZT8iIT0iPT09YjpiPyhlKz0iIiwiPSI9PT1iP2U9PT1jOiIhPSI9PT1iP2UhPT1jOiJePSI9PT1iP2MmJjA9PT1lLmluZGV4T2YoYyk6Iio9Ij09PWI/YyYmZS5pbmRleE9mKGMpPi0xOiIkPSI9PT1iP2MmJmUuc2xpY2UoLWMubGVuZ3RoKT09PWM6In49Ij09PWI/KCIgIitlKyIgIikuaW5kZXhPZihjKT4tMToifD0iPT09Yj9lPT09Y3x8ZS5zbGljZSgwLGMubGVuZ3RoKzEpPT09YysiLSI6ITEpOiEwfX0sQ0hJTEQ6ZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgZj0ibnRoIiE9PWEuc2xpY2UoMCwzKSxnPSJsYXN0IiE9PWEuc2xpY2UoLTQpLGg9Im9mLXR5cGUiPT09YjtyZXR1cm4gMT09PWQmJjA9PT1lP2Z1bmN0aW9uKGEpe3JldHVybiEhYS5wYXJlbnROb2RlfTpmdW5jdGlvbihiLGMsaSl7dmFyIGosayxsLG0sbixvLHA9ZiE9PWc/Im5leHRTaWJsaW5nIjoicHJldmlvdXNTaWJsaW5nIixxPWIucGFyZW50Tm9kZSxyPWgmJmIubm9kZU5hbWUudG9Mb3dlckNhc2UoKSxzPSFpJiYhaDtpZihxKXtpZihmKXt3aGlsZShwKXtsPWI7d2hpbGUobD1sW3BdKWlmKGg/bC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09cjoxPT09bC5ub2RlVHlwZSlyZXR1cm4hMTtvPXA9Im9ubHkiPT09YSYmIW8mJiJuZXh0U2libGluZyJ9cmV0dXJuITB9aWYobz1bZz9xLmZpcnN0Q2hpbGQ6cS5sYXN0Q2hpbGRdLGcmJnMpe2s9cVt1XXx8KHFbdV09e30pLGo9a1thXXx8W10sbj1qWzBdPT09dyYmalsxXSxtPWpbMF09PT13JiZqWzJdLGw9biYmcS5jaGlsZE5vZGVzW25dO3doaWxlKGw9KytuJiZsJiZsW3BdfHwobT1uPTApfHxvLnBvcCgpKWlmKDE9PT1sLm5vZGVUeXBlJiYrK20mJmw9PT1iKXtrW2FdPVt3LG4sbV07YnJlYWt9fWVsc2UgaWYocyYmKGo9KGJbdV18fChiW3VdPXt9KSlbYV0pJiZqWzBdPT09dyltPWpbMV07ZWxzZSB3aGlsZShsPSsrbiYmbCYmbFtwXXx8KG09bj0wKXx8by5wb3AoKSlpZigoaD9sLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT1yOjE9PT1sLm5vZGVUeXBlKSYmKyttJiYocyYmKChsW3VdfHwobFt1XT17fSkpW2FdPVt3LG1dKSxsPT09YikpYnJlYWs7cmV0dXJuIG0tPWUsbT09PWR8fG0lZD09PTAmJm0vZD49MH19fSxQU0VVRE86ZnVuY3Rpb24oYSxiKXt2YXIgYyxlPWQucHNldWRvc1thXXx8ZC5zZXRGaWx0ZXJzW2EudG9Mb3dlckNhc2UoKV18fGZiLmVycm9yKCJ1bnN1cHBvcnRlZCBwc2V1ZG86ICIrYSk7cmV0dXJuIGVbdV0/ZShiKTplLmxlbmd0aD4xPyhjPVthLGEsIiIsYl0sZC5zZXRGaWx0ZXJzLmhhc093blByb3BlcnR5KGEudG9Mb3dlckNhc2UoKSk/aGIoZnVuY3Rpb24oYSxjKXt2YXIgZCxmPWUoYSxiKSxnPWYubGVuZ3RoO3doaWxlKGctLSlkPUsuY2FsbChhLGZbZ10pLGFbZF09IShjW2RdPWZbZ10pfSk6ZnVuY3Rpb24oYSl7cmV0dXJuIGUoYSwwLGMpfSk6ZX19LHBzZXVkb3M6e25vdDpoYihmdW5jdGlvbihhKXt2YXIgYj1bXSxjPVtdLGQ9aChhLnJlcGxhY2UoUiwiJDEiKSk7cmV0dXJuIGRbdV0/aGIoZnVuY3Rpb24oYSxiLGMsZSl7dmFyIGYsZz1kKGEsbnVsbCxlLFtdKSxoPWEubGVuZ3RoO3doaWxlKGgtLSkoZj1nW2hdKSYmKGFbaF09IShiW2hdPWYpKX0pOmZ1bmN0aW9uKGEsZSxmKXtyZXR1cm4gYlswXT1hLGQoYixudWxsLGYsYyksIWMucG9wKCl9fSksaGFzOmhiKGZ1bmN0aW9uKGEpe3JldHVybiBmdW5jdGlvbihiKXtyZXR1cm4gZmIoYSxiKS5sZW5ndGg+MH19KSxjb250YWluczpoYihmdW5jdGlvbihhKXtyZXR1cm4gZnVuY3Rpb24oYil7cmV0dXJuKGIudGV4dENvbnRlbnR8fGIuaW5uZXJUZXh0fHxlKGIpKS5pbmRleE9mKGEpPi0xfX0pLGxhbmc6aGIoZnVuY3Rpb24oYSl7cmV0dXJuIFcudGVzdChhfHwiIil8fGZiLmVycm9yKCJ1bnN1cHBvcnRlZCBsYW5nOiAiK2EpLGE9YS5yZXBsYWNlKGNiLGRiKS50b0xvd2VyQ2FzZSgpLGZ1bmN0aW9uKGIpe3ZhciBjO2RvIGlmKGM9cD9iLmxhbmc6Yi5nZXRBdHRyaWJ1dGUoInhtbDpsYW5nIil8fGIuZ2V0QXR0cmlidXRlKCJsYW5nIikpcmV0dXJuIGM9Yy50b0xvd2VyQ2FzZSgpLGM9PT1hfHwwPT09Yy5pbmRleE9mKGErIi0iKTt3aGlsZSgoYj1iLnBhcmVudE5vZGUpJiYxPT09Yi5ub2RlVHlwZSk7cmV0dXJuITF9fSksdGFyZ2V0OmZ1bmN0aW9uKGIpe3ZhciBjPWEubG9jYXRpb24mJmEubG9jYXRpb24uaGFzaDtyZXR1cm4gYyYmYy5zbGljZSgxKT09PWIuaWR9LHJvb3Q6ZnVuY3Rpb24oYSl7cmV0dXJuIGE9PT1vfSxmb2N1czpmdW5jdGlvbihhKXtyZXR1cm4gYT09PW4uYWN0aXZlRWxlbWVudCYmKCFuLmhhc0ZvY3VzfHxuLmhhc0ZvY3VzKCkpJiYhIShhLnR5cGV8fGEuaHJlZnx8fmEudGFiSW5kZXgpfSxlbmFibGVkOmZ1bmN0aW9uKGEpe3JldHVybiBhLmRpc2FibGVkPT09ITF9LGRpc2FibGVkOmZ1bmN0aW9uKGEpe3JldHVybiBhLmRpc2FibGVkPT09ITB9LGNoZWNrZWQ6ZnVuY3Rpb24oYSl7dmFyIGI9YS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3JldHVybiJpbnB1dCI9PT1iJiYhIWEuY2hlY2tlZHx8Im9wdGlvbiI9PT1iJiYhIWEuc2VsZWN0ZWR9LHNlbGVjdGVkOmZ1bmN0aW9uKGEpe3JldHVybiBhLnBhcmVudE5vZGUmJmEucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4LGEuc2VsZWN0ZWQ9PT0hMH0sZW1wdHk6ZnVuY3Rpb24oYSl7Zm9yKGE9YS5maXJzdENoaWxkO2E7YT1hLm5leHRTaWJsaW5nKWlmKGEubm9kZVR5cGU8NilyZXR1cm4hMTtyZXR1cm4hMH0scGFyZW50OmZ1bmN0aW9uKGEpe3JldHVybiFkLnBzZXVkb3MuZW1wdHkoYSl9LGhlYWRlcjpmdW5jdGlvbihhKXtyZXR1cm4gWi50ZXN0KGEubm9kZU5hbWUpfSxpbnB1dDpmdW5jdGlvbihhKXtyZXR1cm4gWS50ZXN0KGEubm9kZU5hbWUpfSxidXR0b246ZnVuY3Rpb24oYSl7dmFyIGI9YS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3JldHVybiJpbnB1dCI9PT1iJiYiYnV0dG9uIj09PWEudHlwZXx8ImJ1dHRvbiI9PT1ifSx0ZXh0OmZ1bmN0aW9uKGEpe3ZhciBiO3JldHVybiJpbnB1dCI9PT1hLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkmJiJ0ZXh0Ij09PWEudHlwZSYmKG51bGw9PShiPWEuZ2V0QXR0cmlidXRlKCJ0eXBlIikpfHwidGV4dCI9PT1iLnRvTG93ZXJDYXNlKCkpfSxmaXJzdDpuYihmdW5jdGlvbigpe3JldHVyblswXX0pLGxhc3Q6bmIoZnVuY3Rpb24oYSxiKXtyZXR1cm5bYi0xXX0pLGVxOm5iKGZ1bmN0aW9uKGEsYixjKXtyZXR1cm5bMD5jP2MrYjpjXX0pLGV2ZW46bmIoZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9MDtiPmM7Yys9MilhLnB1c2goYyk7cmV0dXJuIGF9KSxvZGQ6bmIoZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9MTtiPmM7Yys9MilhLnB1c2goYyk7cmV0dXJuIGF9KSxsdDpuYihmdW5jdGlvbihhLGIsYyl7Zm9yKHZhciBkPTA+Yz9jK2I6YzstLWQ+PTA7KWEucHVzaChkKTtyZXR1cm4gYX0pLGd0Om5iKGZ1bmN0aW9uKGEsYixjKXtmb3IodmFyIGQ9MD5jP2MrYjpjOysrZDxiOylhLnB1c2goZCk7cmV0dXJuIGF9KX19LGQucHNldWRvcy5udGg9ZC5wc2V1ZG9zLmVxO2ZvcihiIGlue3JhZGlvOiEwLGNoZWNrYm94OiEwLGZpbGU6ITAscGFzc3dvcmQ6ITAsaW1hZ2U6ITB9KWQucHNldWRvc1tiXT1sYihiKTtmb3IoYiBpbntzdWJtaXQ6ITAscmVzZXQ6ITB9KWQucHNldWRvc1tiXT1tYihiKTtmdW5jdGlvbiBwYigpe31wYi5wcm90b3R5cGU9ZC5maWx0ZXJzPWQucHNldWRvcyxkLnNldEZpbHRlcnM9bmV3IHBiLGc9ZmIudG9rZW5pemU9ZnVuY3Rpb24oYSxiKXt2YXIgYyxlLGYsZyxoLGksaixrPXpbYSsiICJdO2lmKGspcmV0dXJuIGI/MDprLnNsaWNlKDApO2g9YSxpPVtdLGo9ZC5wcmVGaWx0ZXI7d2hpbGUoaCl7KCFjfHwoZT1TLmV4ZWMoaCkpKSYmKGUmJihoPWguc2xpY2UoZVswXS5sZW5ndGgpfHxoKSxpLnB1c2goZj1bXSkpLGM9ITEsKGU9VC5leGVjKGgpKSYmKGM9ZS5zaGlmdCgpLGYucHVzaCh7dmFsdWU6Yyx0eXBlOmVbMF0ucmVwbGFjZShSLCIgIil9KSxoPWguc2xpY2UoYy5sZW5ndGgpKTtmb3IoZyBpbiBkLmZpbHRlcikhKGU9WFtnXS5leGVjKGgpKXx8altnXSYmIShlPWpbZ10oZSkpfHwoYz1lLnNoaWZ0KCksZi5wdXNoKHt2YWx1ZTpjLHR5cGU6ZyxtYXRjaGVzOmV9KSxoPWguc2xpY2UoYy5sZW5ndGgpKTtpZighYylicmVha31yZXR1cm4gYj9oLmxlbmd0aDpoP2ZiLmVycm9yKGEpOnooYSxpKS5zbGljZSgwKX07ZnVuY3Rpb24gcWIoYSl7Zm9yKHZhciBiPTAsYz1hLmxlbmd0aCxkPSIiO2M+YjtiKyspZCs9YVtiXS52YWx1ZTtyZXR1cm4gZH1mdW5jdGlvbiByYihhLGIsYyl7dmFyIGQ9Yi5kaXIsZT1jJiYicGFyZW50Tm9kZSI9PT1kLGY9eCsrO3JldHVybiBiLmZpcnN0P2Z1bmN0aW9uKGIsYyxmKXt3aGlsZShiPWJbZF0paWYoMT09PWIubm9kZVR5cGV8fGUpcmV0dXJuIGEoYixjLGYpfTpmdW5jdGlvbihiLGMsZyl7dmFyIGgsaSxqPVt3LGZdO2lmKGcpe3doaWxlKGI9YltkXSlpZigoMT09PWIubm9kZVR5cGV8fGUpJiZhKGIsYyxnKSlyZXR1cm4hMH1lbHNlIHdoaWxlKGI9YltkXSlpZigxPT09Yi5ub2RlVHlwZXx8ZSl7aWYoaT1iW3VdfHwoYlt1XT17fSksKGg9aVtkXSkmJmhbMF09PT13JiZoWzFdPT09ZilyZXR1cm4galsyXT1oWzJdO2lmKGlbZF09aixqWzJdPWEoYixjLGcpKXJldHVybiEwfX19ZnVuY3Rpb24gc2IoYSl7cmV0dXJuIGEubGVuZ3RoPjE/ZnVuY3Rpb24oYixjLGQpe3ZhciBlPWEubGVuZ3RoO3doaWxlKGUtLSlpZighYVtlXShiLGMsZCkpcmV0dXJuITE7cmV0dXJuITB9OmFbMF19ZnVuY3Rpb24gdGIoYSxiLGMpe2Zvcih2YXIgZD0wLGU9Yi5sZW5ndGg7ZT5kO2QrKylmYihhLGJbZF0sYyk7cmV0dXJuIGN9ZnVuY3Rpb24gdWIoYSxiLGMsZCxlKXtmb3IodmFyIGYsZz1bXSxoPTAsaT1hLmxlbmd0aCxqPW51bGwhPWI7aT5oO2grKykoZj1hW2hdKSYmKCFjfHxjKGYsZCxlKSkmJihnLnB1c2goZiksaiYmYi5wdXNoKGgpKTtyZXR1cm4gZ31mdW5jdGlvbiB2YihhLGIsYyxkLGUsZil7cmV0dXJuIGQmJiFkW3VdJiYoZD12YihkKSksZSYmIWVbdV0mJihlPXZiKGUsZikpLGhiKGZ1bmN0aW9uKGYsZyxoLGkpe3ZhciBqLGssbCxtPVtdLG49W10sbz1nLmxlbmd0aCxwPWZ8fHRiKGJ8fCIqIixoLm5vZGVUeXBlP1toXTpoLFtdKSxxPSFhfHwhZiYmYj9wOnViKHAsbSxhLGgsaSkscj1jP2V8fChmP2E6b3x8ZCk/W106ZzpxO2lmKGMmJmMocSxyLGgsaSksZCl7aj11YihyLG4pLGQoaixbXSxoLGkpLGs9ai5sZW5ndGg7d2hpbGUoay0tKShsPWpba10pJiYocltuW2tdXT0hKHFbbltrXV09bCkpfWlmKGYpe2lmKGV8fGEpe2lmKGUpe2o9W10saz1yLmxlbmd0aDt3aGlsZShrLS0pKGw9cltrXSkmJmoucHVzaChxW2tdPWwpO2UobnVsbCxyPVtdLGosaSl9az1yLmxlbmd0aDt3aGlsZShrLS0pKGw9cltrXSkmJihqPWU/Sy5jYWxsKGYsbCk6bVtrXSk+LTEmJihmW2pdPSEoZ1tqXT1sKSl9fWVsc2Ugcj11YihyPT09Zz9yLnNwbGljZShvLHIubGVuZ3RoKTpyKSxlP2UobnVsbCxnLHIsaSk6SS5hcHBseShnLHIpfSl9ZnVuY3Rpb24gd2IoYSl7Zm9yKHZhciBiLGMsZSxmPWEubGVuZ3RoLGc9ZC5yZWxhdGl2ZVthWzBdLnR5cGVdLGg9Z3x8ZC5yZWxhdGl2ZVsiICJdLGk9Zz8xOjAsaz1yYihmdW5jdGlvbihhKXtyZXR1cm4gYT09PWJ9LGgsITApLGw9cmIoZnVuY3Rpb24oYSl7cmV0dXJuIEsuY2FsbChiLGEpPi0xfSxoLCEwKSxtPVtmdW5jdGlvbihhLGMsZCl7cmV0dXJuIWcmJihkfHxjIT09ail8fCgoYj1jKS5ub2RlVHlwZT9rKGEsYyxkKTpsKGEsYyxkKSl9XTtmPmk7aSsrKWlmKGM9ZC5yZWxhdGl2ZVthW2ldLnR5cGVdKW09W3JiKHNiKG0pLGMpXTtlbHNle2lmKGM9ZC5maWx0ZXJbYVtpXS50eXBlXS5hcHBseShudWxsLGFbaV0ubWF0Y2hlcyksY1t1XSl7Zm9yKGU9KytpO2Y+ZTtlKyspaWYoZC5yZWxhdGl2ZVthW2VdLnR5cGVdKWJyZWFrO3JldHVybiB2YihpPjEmJnNiKG0pLGk+MSYmcWIoYS5zbGljZSgwLGktMSkuY29uY2F0KHt2YWx1ZToiICI9PT1hW2ktMl0udHlwZT8iKiI6IiJ9KSkucmVwbGFjZShSLCIkMSIpLGMsZT5pJiZ3YihhLnNsaWNlKGksZSkpLGY+ZSYmd2IoYT1hLnNsaWNlKGUpKSxmPmUmJnFiKGEpKX1tLnB1c2goYyl9cmV0dXJuIHNiKG0pfWZ1bmN0aW9uIHhiKGEsYil7dmFyIGM9Yi5sZW5ndGg+MCxlPWEubGVuZ3RoPjAsZj1mdW5jdGlvbihmLGcsaCxpLGspe3ZhciBsLG0sbyxwPTAscT0iMCIscj1mJiZbXSxzPVtdLHQ9aix1PWZ8fGUmJmQuZmluZC5UQUcoIioiLGspLHY9dys9bnVsbD09dD8xOk1hdGgucmFuZG9tKCl8fC4xLHg9dS5sZW5ndGg7Zm9yKGsmJihqPWchPT1uJiZnKTtxIT09eCYmbnVsbCE9KGw9dVtxXSk7cSsrKXtpZihlJiZsKXttPTA7d2hpbGUobz1hW20rK10paWYobyhsLGcsaCkpe2kucHVzaChsKTticmVha31rJiYodz12KX1jJiYoKGw9IW8mJmwpJiZwLS0sZiYmci5wdXNoKGwpKX1pZihwKz1xLGMmJnEhPT1wKXttPTA7d2hpbGUobz1iW20rK10pbyhyLHMsZyxoKTtpZihmKXtpZihwPjApd2hpbGUocS0tKXJbcV18fHNbcV18fChzW3FdPUcuY2FsbChpKSk7cz11YihzKX1JLmFwcGx5KGkscyksayYmIWYmJnMubGVuZ3RoPjAmJnArYi5sZW5ndGg+MSYmZmIudW5pcXVlU29ydChpKX1yZXR1cm4gayYmKHc9dixqPXQpLHJ9O3JldHVybiBjP2hiKGYpOmZ9cmV0dXJuIGg9ZmIuY29tcGlsZT1mdW5jdGlvbihhLGIpe3ZhciBjLGQ9W10sZT1bXSxmPUFbYSsiICJdO2lmKCFmKXtifHwoYj1nKGEpKSxjPWIubGVuZ3RoO3doaWxlKGMtLSlmPXdiKGJbY10pLGZbdV0/ZC5wdXNoKGYpOmUucHVzaChmKTtmPUEoYSx4YihlLGQpKSxmLnNlbGVjdG9yPWF9cmV0dXJuIGZ9LGk9ZmIuc2VsZWN0PWZ1bmN0aW9uKGEsYixlLGYpe3ZhciBpLGosayxsLG0sbj0iZnVuY3Rpb24iPT10eXBlb2YgYSYmYSxvPSFmJiZnKGE9bi5zZWxlY3Rvcnx8YSk7aWYoZT1lfHxbXSwxPT09by5sZW5ndGgpe2lmKGo9b1swXT1vWzBdLnNsaWNlKDApLGoubGVuZ3RoPjImJiJJRCI9PT0oaz1qWzBdKS50eXBlJiZjLmdldEJ5SWQmJjk9PT1iLm5vZGVUeXBlJiZwJiZkLnJlbGF0aXZlW2pbMV0udHlwZV0pe2lmKGI9KGQuZmluZC5JRChrLm1hdGNoZXNbMF0ucmVwbGFjZShjYixkYiksYil8fFtdKVswXSwhYilyZXR1cm4gZTtuJiYoYj1iLnBhcmVudE5vZGUpLGE9YS5zbGljZShqLnNoaWZ0KCkudmFsdWUubGVuZ3RoKX1pPVgubmVlZHNDb250ZXh0LnRlc3QoYSk/MDpqLmxlbmd0aDt3aGlsZShpLS0pe2lmKGs9altpXSxkLnJlbGF0aXZlW2w9ay50eXBlXSlicmVhaztpZigobT1kLmZpbmRbbF0pJiYoZj1tKGsubWF0Y2hlc1swXS5yZXBsYWNlKGNiLGRiKSxhYi50ZXN0KGpbMF0udHlwZSkmJm9iKGIucGFyZW50Tm9kZSl8fGIpKSl7aWYoai5zcGxpY2UoaSwxKSxhPWYubGVuZ3RoJiZxYihqKSwhYSlyZXR1cm4gSS5hcHBseShlLGYpLGU7YnJlYWt9fX1yZXR1cm4obnx8aChhLG8pKShmLGIsIXAsZSxhYi50ZXN0KGEpJiZvYihiLnBhcmVudE5vZGUpfHxiKSxlfSxjLnNvcnRTdGFibGU9dS5zcGxpdCgiIikuc29ydChCKS5qb2luKCIiKT09PXUsYy5kZXRlY3REdXBsaWNhdGVzPSEhbCxtKCksYy5zb3J0RGV0YWNoZWQ9aWIoZnVuY3Rpb24oYSl7cmV0dXJuIDEmYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihuLmNyZWF0ZUVsZW1lbnQoImRpdiIpKX0pLGliKGZ1bmN0aW9uKGEpe3JldHVybiBhLmlubmVySFRNTD0iPGEgaHJlZj0nIyc+PC9hPiIsIiMiPT09YS5maXJzdENoaWxkLmdldEF0dHJpYnV0ZSgiaHJlZiIpfSl8fGpiKCJ0eXBlfGhyZWZ8aGVpZ2h0fHdpZHRoIixmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGM/dm9pZCAwOmEuZ2V0QXR0cmlidXRlKGIsInR5cGUiPT09Yi50b0xvd2VyQ2FzZSgpPzE6Mil9KSxjLmF0dHJpYnV0ZXMmJmliKGZ1bmN0aW9uKGEpe3JldHVybiBhLmlubmVySFRNTD0iPGlucHV0Lz4iLGEuZmlyc3RDaGlsZC5zZXRBdHRyaWJ1dGUoInZhbHVlIiwiIiksIiI9PT1hLmZpcnN0Q2hpbGQuZ2V0QXR0cmlidXRlKCJ2YWx1ZSIpfSl8fGpiKCJ2YWx1ZSIsZnVuY3Rpb24oYSxiLGMpe3JldHVybiBjfHwiaW5wdXQiIT09YS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpP3ZvaWQgMDphLmRlZmF1bHRWYWx1ZX0pLGliKGZ1bmN0aW9uKGEpe3JldHVybiBudWxsPT1hLmdldEF0dHJpYnV0ZSgiZGlzYWJsZWQiKX0pfHxqYihMLGZ1bmN0aW9uKGEsYixjKXt2YXIgZDtyZXR1cm4gYz92b2lkIDA6YVtiXT09PSEwP2IudG9Mb3dlckNhc2UoKTooZD1hLmdldEF0dHJpYnV0ZU5vZGUoYikpJiZkLnNwZWNpZmllZD9kLnZhbHVlOm51bGx9KSxmYn0oYSk7bS5maW5kPXMsbS5leHByPXMuc2VsZWN0b3JzLG0uZXhwclsiOiJdPW0uZXhwci5wc2V1ZG9zLG0udW5pcXVlPXMudW5pcXVlU29ydCxtLnRleHQ9cy5nZXRUZXh0LG0uaXNYTUxEb2M9cy5pc1hNTCxtLmNvbnRhaW5zPXMuY29udGFpbnM7dmFyIHQ9bS5leHByLm1hdGNoLm5lZWRzQ29udGV4dCx1PS9ePChcdyspXHMqXC8/Pig/OjxcL1wxPnwpJC8sdj0vXi5bXjojXFtcLixdKiQvO2Z1bmN0aW9uIHcoYSxiLGMpe2lmKG0uaXNGdW5jdGlvbihiKSlyZXR1cm4gbS5ncmVwKGEsZnVuY3Rpb24oYSxkKXtyZXR1cm4hIWIuY2FsbChhLGQsYSkhPT1jfSk7aWYoYi5ub2RlVHlwZSlyZXR1cm4gbS5ncmVwKGEsZnVuY3Rpb24oYSl7cmV0dXJuIGE9PT1iIT09Y30pO2lmKCJzdHJpbmciPT10eXBlb2YgYil7aWYodi50ZXN0KGIpKXJldHVybiBtLmZpbHRlcihiLGEsYyk7Yj1tLmZpbHRlcihiLGEpfXJldHVybiBtLmdyZXAoYSxmdW5jdGlvbihhKXtyZXR1cm4gbS5pbkFycmF5KGEsYik+PTAhPT1jfSl9bS5maWx0ZXI9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWJbMF07cmV0dXJuIGMmJihhPSI6bm90KCIrYSsiKSIpLDE9PT1iLmxlbmd0aCYmMT09PWQubm9kZVR5cGU/bS5maW5kLm1hdGNoZXNTZWxlY3RvcihkLGEpP1tkXTpbXTptLmZpbmQubWF0Y2hlcyhhLG0uZ3JlcChiLGZ1bmN0aW9uKGEpe3JldHVybiAxPT09YS5ub2RlVHlwZX0pKX0sbS5mbi5leHRlbmQoe2ZpbmQ6ZnVuY3Rpb24oYSl7dmFyIGIsYz1bXSxkPXRoaXMsZT1kLmxlbmd0aDtpZigic3RyaW5nIiE9dHlwZW9mIGEpcmV0dXJuIHRoaXMucHVzaFN0YWNrKG0oYSkuZmlsdGVyKGZ1bmN0aW9uKCl7Zm9yKGI9MDtlPmI7YisrKWlmKG0uY29udGFpbnMoZFtiXSx0aGlzKSlyZXR1cm4hMH0pKTtmb3IoYj0wO2U+YjtiKyspbS5maW5kKGEsZFtiXSxjKTtyZXR1cm4gYz10aGlzLnB1c2hTdGFjayhlPjE/bS51bmlxdWUoYyk6YyksYy5zZWxlY3Rvcj10aGlzLnNlbGVjdG9yP3RoaXMuc2VsZWN0b3IrIiAiK2E6YSxjfSxmaWx0ZXI6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKHcodGhpcyxhfHxbXSwhMSkpfSxub3Q6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKHcodGhpcyxhfHxbXSwhMCkpfSxpczpmdW5jdGlvbihhKXtyZXR1cm4hIXcodGhpcywic3RyaW5nIj09dHlwZW9mIGEmJnQudGVzdChhKT9tKGEpOmF8fFtdLCExKS5sZW5ndGh9fSk7dmFyIHgseT1hLmRvY3VtZW50LHo9L14oPzpccyooPFtcd1xXXSs+KVtePl0qfCMoW1x3LV0qKSkkLyxBPW0uZm4uaW5pdD1mdW5jdGlvbihhLGIpe3ZhciBjLGQ7aWYoIWEpcmV0dXJuIHRoaXM7aWYoInN0cmluZyI9PXR5cGVvZiBhKXtpZihjPSI8Ij09PWEuY2hhckF0KDApJiYiPiI9PT1hLmNoYXJBdChhLmxlbmd0aC0xKSYmYS5sZW5ndGg+PTM/W251bGwsYSxudWxsXTp6LmV4ZWMoYSksIWN8fCFjWzFdJiZiKXJldHVybiFifHxiLmpxdWVyeT8oYnx8eCkuZmluZChhKTp0aGlzLmNvbnN0cnVjdG9yKGIpLmZpbmQoYSk7aWYoY1sxXSl7aWYoYj1iIGluc3RhbmNlb2YgbT9iWzBdOmIsbS5tZXJnZSh0aGlzLG0ucGFyc2VIVE1MKGNbMV0sYiYmYi5ub2RlVHlwZT9iLm93bmVyRG9jdW1lbnR8fGI6eSwhMCkpLHUudGVzdChjWzFdKSYmbS5pc1BsYWluT2JqZWN0KGIpKWZvcihjIGluIGIpbS5pc0Z1bmN0aW9uKHRoaXNbY10pP3RoaXNbY10oYltjXSk6dGhpcy5hdHRyKGMsYltjXSk7cmV0dXJuIHRoaXN9aWYoZD15LmdldEVsZW1lbnRCeUlkKGNbMl0pLGQmJmQucGFyZW50Tm9kZSl7aWYoZC5pZCE9PWNbMl0pcmV0dXJuIHguZmluZChhKTt0aGlzLmxlbmd0aD0xLHRoaXNbMF09ZH1yZXR1cm4gdGhpcy5jb250ZXh0PXksdGhpcy5zZWxlY3Rvcj1hLHRoaXN9cmV0dXJuIGEubm9kZVR5cGU/KHRoaXMuY29udGV4dD10aGlzWzBdPWEsdGhpcy5sZW5ndGg9MSx0aGlzKTptLmlzRnVuY3Rpb24oYSk/InVuZGVmaW5lZCIhPXR5cGVvZiB4LnJlYWR5P3gucmVhZHkoYSk6YShtKToodm9pZCAwIT09YS5zZWxlY3RvciYmKHRoaXMuc2VsZWN0b3I9YS5zZWxlY3Rvcix0aGlzLmNvbnRleHQ9YS5jb250ZXh0KSxtLm1ha2VBcnJheShhLHRoaXMpKX07QS5wcm90b3R5cGU9bS5mbix4PW0oeSk7dmFyIEI9L14oPzpwYXJlbnRzfHByZXYoPzpVbnRpbHxBbGwpKS8sQz17Y2hpbGRyZW46ITAsY29udGVudHM6ITAsbmV4dDohMCxwcmV2OiEwfTttLmV4dGVuZCh7ZGlyOmZ1bmN0aW9uKGEsYixjKXt2YXIgZD1bXSxlPWFbYl07d2hpbGUoZSYmOSE9PWUubm9kZVR5cGUmJih2b2lkIDA9PT1jfHwxIT09ZS5ub2RlVHlwZXx8IW0oZSkuaXMoYykpKTE9PT1lLm5vZGVUeXBlJiZkLnB1c2goZSksZT1lW2JdO3JldHVybiBkfSxzaWJsaW5nOmZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPVtdO2E7YT1hLm5leHRTaWJsaW5nKTE9PT1hLm5vZGVUeXBlJiZhIT09YiYmYy5wdXNoKGEpO3JldHVybiBjfX0pLG0uZm4uZXh0ZW5kKHtoYXM6ZnVuY3Rpb24oYSl7dmFyIGIsYz1tKGEsdGhpcyksZD1jLmxlbmd0aDtyZXR1cm4gdGhpcy5maWx0ZXIoZnVuY3Rpb24oKXtmb3IoYj0wO2Q+YjtiKyspaWYobS5jb250YWlucyh0aGlzLGNbYl0pKXJldHVybiEwfSl9LGNsb3Nlc3Q6ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGMsZD0wLGU9dGhpcy5sZW5ndGgsZj1bXSxnPXQudGVzdChhKXx8InN0cmluZyIhPXR5cGVvZiBhP20oYSxifHx0aGlzLmNvbnRleHQpOjA7ZT5kO2QrKylmb3IoYz10aGlzW2RdO2MmJmMhPT1iO2M9Yy5wYXJlbnROb2RlKWlmKGMubm9kZVR5cGU8MTEmJihnP2cuaW5kZXgoYyk+LTE6MT09PWMubm9kZVR5cGUmJm0uZmluZC5tYXRjaGVzU2VsZWN0b3IoYyxhKSkpe2YucHVzaChjKTticmVha31yZXR1cm4gdGhpcy5wdXNoU3RhY2soZi5sZW5ndGg+MT9tLnVuaXF1ZShmKTpmKX0saW5kZXg6ZnVuY3Rpb24oYSl7cmV0dXJuIGE/InN0cmluZyI9PXR5cGVvZiBhP20uaW5BcnJheSh0aGlzWzBdLG0oYSkpOm0uaW5BcnJheShhLmpxdWVyeT9hWzBdOmEsdGhpcyk6dGhpc1swXSYmdGhpc1swXS5wYXJlbnROb2RlP3RoaXMuZmlyc3QoKS5wcmV2QWxsKCkubGVuZ3RoOi0xfSxhZGQ6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2sobS51bmlxdWUobS5tZXJnZSh0aGlzLmdldCgpLG0oYSxiKSkpKX0sYWRkQmFjazpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5hZGQobnVsbD09YT90aGlzLnByZXZPYmplY3Q6dGhpcy5wcmV2T2JqZWN0LmZpbHRlcihhKSl9fSk7ZnVuY3Rpb24gRChhLGIpe2RvIGE9YVtiXTt3aGlsZShhJiYxIT09YS5ub2RlVHlwZSk7cmV0dXJuIGF9bS5lYWNoKHtwYXJlbnQ6ZnVuY3Rpb24oYSl7dmFyIGI9YS5wYXJlbnROb2RlO3JldHVybiBiJiYxMSE9PWIubm9kZVR5cGU/YjpudWxsfSxwYXJlbnRzOmZ1bmN0aW9uKGEpe3JldHVybiBtLmRpcihhLCJwYXJlbnROb2RlIil9LHBhcmVudHNVbnRpbDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIG0uZGlyKGEsInBhcmVudE5vZGUiLGMpfSxuZXh0OmZ1bmN0aW9uKGEpe3JldHVybiBEKGEsIm5leHRTaWJsaW5nIil9LHByZXY6ZnVuY3Rpb24oYSl7cmV0dXJuIEQoYSwicHJldmlvdXNTaWJsaW5nIil9LG5leHRBbGw6ZnVuY3Rpb24oYSl7cmV0dXJuIG0uZGlyKGEsIm5leHRTaWJsaW5nIil9LHByZXZBbGw6ZnVuY3Rpb24oYSl7cmV0dXJuIG0uZGlyKGEsInByZXZpb3VzU2libGluZyIpfSxuZXh0VW50aWw6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBtLmRpcihhLCJuZXh0U2libGluZyIsYyl9LHByZXZVbnRpbDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIG0uZGlyKGEsInByZXZpb3VzU2libGluZyIsYyl9LHNpYmxpbmdzOmZ1bmN0aW9uKGEpe3JldHVybiBtLnNpYmxpbmcoKGEucGFyZW50Tm9kZXx8e30pLmZpcnN0Q2hpbGQsYSl9LGNoaWxkcmVuOmZ1bmN0aW9uKGEpe3JldHVybiBtLnNpYmxpbmcoYS5maXJzdENoaWxkKX0sY29udGVudHM6ZnVuY3Rpb24oYSl7cmV0dXJuIG0ubm9kZU5hbWUoYSwiaWZyYW1lIik/YS5jb250ZW50RG9jdW1lbnR8fGEuY29udGVudFdpbmRvdy5kb2N1bWVudDptLm1lcmdlKFtdLGEuY2hpbGROb2Rlcyl9fSxmdW5jdGlvbihhLGIpe20uZm5bYV09ZnVuY3Rpb24oYyxkKXt2YXIgZT1tLm1hcCh0aGlzLGIsYyk7cmV0dXJuIlVudGlsIiE9PWEuc2xpY2UoLTUpJiYoZD1jKSxkJiYic3RyaW5nIj09dHlwZW9mIGQmJihlPW0uZmlsdGVyKGQsZSkpLHRoaXMubGVuZ3RoPjEmJihDW2FdfHwoZT1tLnVuaXF1ZShlKSksQi50ZXN0KGEpJiYoZT1lLnJldmVyc2UoKSkpLHRoaXMucHVzaFN0YWNrKGUpfX0pO3ZhciBFPS9cUysvZyxGPXt9O2Z1bmN0aW9uIEcoYSl7dmFyIGI9RlthXT17fTtyZXR1cm4gbS5lYWNoKGEubWF0Y2goRSl8fFtdLGZ1bmN0aW9uKGEsYyl7YltjXT0hMH0pLGJ9bS5DYWxsYmFja3M9ZnVuY3Rpb24oYSl7YT0ic3RyaW5nIj09dHlwZW9mIGE/RlthXXx8RyhhKTptLmV4dGVuZCh7fSxhKTt2YXIgYixjLGQsZSxmLGcsaD1bXSxpPSFhLm9uY2UmJltdLGo9ZnVuY3Rpb24obCl7Zm9yKGM9YS5tZW1vcnkmJmwsZD0hMCxmPWd8fDAsZz0wLGU9aC5sZW5ndGgsYj0hMDtoJiZlPmY7ZisrKWlmKGhbZl0uYXBwbHkobFswXSxsWzFdKT09PSExJiZhLnN0b3BPbkZhbHNlKXtjPSExO2JyZWFrfWI9ITEsaCYmKGk/aS5sZW5ndGgmJmooaS5zaGlmdCgpKTpjP2g9W106ay5kaXNhYmxlKCkpfSxrPXthZGQ6ZnVuY3Rpb24oKXtpZihoKXt2YXIgZD1oLmxlbmd0aDshZnVuY3Rpb24gZihiKXttLmVhY2goYixmdW5jdGlvbihiLGMpe3ZhciBkPW0udHlwZShjKTsiZnVuY3Rpb24iPT09ZD9hLnVuaXF1ZSYmay5oYXMoYyl8fGgucHVzaChjKTpjJiZjLmxlbmd0aCYmInN0cmluZyIhPT1kJiZmKGMpfSl9KGFyZ3VtZW50cyksYj9lPWgubGVuZ3RoOmMmJihnPWQsaihjKSl9cmV0dXJuIHRoaXN9LHJlbW92ZTpmdW5jdGlvbigpe3JldHVybiBoJiZtLmVhY2goYXJndW1lbnRzLGZ1bmN0aW9uKGEsYyl7dmFyIGQ7d2hpbGUoKGQ9bS5pbkFycmF5KGMsaCxkKSk+LTEpaC5zcGxpY2UoZCwxKSxiJiYoZT49ZCYmZS0tLGY+PWQmJmYtLSl9KSx0aGlzfSxoYXM6ZnVuY3Rpb24oYSl7cmV0dXJuIGE/bS5pbkFycmF5KGEsaCk+LTE6ISghaHx8IWgubGVuZ3RoKX0sZW1wdHk6ZnVuY3Rpb24oKXtyZXR1cm4gaD1bXSxlPTAsdGhpc30sZGlzYWJsZTpmdW5jdGlvbigpe3JldHVybiBoPWk9Yz12b2lkIDAsdGhpc30sZGlzYWJsZWQ6ZnVuY3Rpb24oKXtyZXR1cm4haH0sbG9jazpmdW5jdGlvbigpe3JldHVybiBpPXZvaWQgMCxjfHxrLmRpc2FibGUoKSx0aGlzfSxsb2NrZWQ6ZnVuY3Rpb24oKXtyZXR1cm4haX0sZmlyZVdpdGg6ZnVuY3Rpb24oYSxjKXtyZXR1cm4haHx8ZCYmIWl8fChjPWN8fFtdLGM9W2EsYy5zbGljZT9jLnNsaWNlKCk6Y10sYj9pLnB1c2goYyk6aihjKSksdGhpc30sZmlyZTpmdW5jdGlvbigpe3JldHVybiBrLmZpcmVXaXRoKHRoaXMsYXJndW1lbnRzKSx0aGlzfSxmaXJlZDpmdW5jdGlvbigpe3JldHVybiEhZH19O3JldHVybiBrfSxtLmV4dGVuZCh7RGVmZXJyZWQ6ZnVuY3Rpb24oYSl7dmFyIGI9W1sicmVzb2x2ZSIsImRvbmUiLG0uQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLCJyZXNvbHZlZCJdLFsicmVqZWN0IiwiZmFpbCIsbS5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IiksInJlamVjdGVkIl0sWyJub3RpZnkiLCJwcm9ncmVzcyIsbS5DYWxsYmFja3MoIm1lbW9yeSIpXV0sYz0icGVuZGluZyIsZD17c3RhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gY30sYWx3YXlzOmZ1bmN0aW9uKCl7cmV0dXJuIGUuZG9uZShhcmd1bWVudHMpLmZhaWwoYXJndW1lbnRzKSx0aGlzfSx0aGVuOmZ1bmN0aW9uKCl7dmFyIGE9YXJndW1lbnRzO3JldHVybiBtLkRlZmVycmVkKGZ1bmN0aW9uKGMpe20uZWFjaChiLGZ1bmN0aW9uKGIsZil7dmFyIGc9bS5pc0Z1bmN0aW9uKGFbYl0pJiZhW2JdO2VbZlsxXV0oZnVuY3Rpb24oKXt2YXIgYT1nJiZnLmFwcGx5KHRoaXMsYXJndW1lbnRzKTthJiZtLmlzRnVuY3Rpb24oYS5wcm9taXNlKT9hLnByb21pc2UoKS5kb25lKGMucmVzb2x2ZSkuZmFpbChjLnJlamVjdCkucHJvZ3Jlc3MoYy5ub3RpZnkpOmNbZlswXSsiV2l0aCJdKHRoaXM9PT1kP2MucHJvbWlzZSgpOnRoaXMsZz9bYV06YXJndW1lbnRzKX0pfSksYT1udWxsfSkucHJvbWlzZSgpfSxwcm9taXNlOmZ1bmN0aW9uKGEpe3JldHVybiBudWxsIT1hP20uZXh0ZW5kKGEsZCk6ZH19LGU9e307cmV0dXJuIGQucGlwZT1kLnRoZW4sbS5lYWNoKGIsZnVuY3Rpb24oYSxmKXt2YXIgZz1mWzJdLGg9ZlszXTtkW2ZbMV1dPWcuYWRkLGgmJmcuYWRkKGZ1bmN0aW9uKCl7Yz1ofSxiWzFeYV1bMl0uZGlzYWJsZSxiWzJdWzJdLmxvY2spLGVbZlswXV09ZnVuY3Rpb24oKXtyZXR1cm4gZVtmWzBdKyJXaXRoIl0odGhpcz09PWU/ZDp0aGlzLGFyZ3VtZW50cyksdGhpc30sZVtmWzBdKyJXaXRoIl09Zy5maXJlV2l0aH0pLGQucHJvbWlzZShlKSxhJiZhLmNhbGwoZSxlKSxlfSx3aGVuOmZ1bmN0aW9uKGEpe3ZhciBiPTAsYz1kLmNhbGwoYXJndW1lbnRzKSxlPWMubGVuZ3RoLGY9MSE9PWV8fGEmJm0uaXNGdW5jdGlvbihhLnByb21pc2UpP2U6MCxnPTE9PT1mP2E6bS5EZWZlcnJlZCgpLGg9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBmdW5jdGlvbihlKXtiW2FdPXRoaXMsY1thXT1hcmd1bWVudHMubGVuZ3RoPjE/ZC5jYWxsKGFyZ3VtZW50cyk6ZSxjPT09aT9nLm5vdGlmeVdpdGgoYixjKTotLWZ8fGcucmVzb2x2ZVdpdGgoYixjKX19LGksaixrO2lmKGU+MSlmb3IoaT1uZXcgQXJyYXkoZSksaj1uZXcgQXJyYXkoZSksaz1uZXcgQXJyYXkoZSk7ZT5iO2IrKyljW2JdJiZtLmlzRnVuY3Rpb24oY1tiXS5wcm9taXNlKT9jW2JdLnByb21pc2UoKS5kb25lKGgoYixrLGMpKS5mYWlsKGcucmVqZWN0KS5wcm9ncmVzcyhoKGIsaixpKSk6LS1mO3JldHVybiBmfHxnLnJlc29sdmVXaXRoKGssYyksZy5wcm9taXNlKCl9fSk7dmFyIEg7bS5mbi5yZWFkeT1mdW5jdGlvbihhKXtyZXR1cm4gbS5yZWFkeS5wcm9taXNlKCkuZG9uZShhKSx0aGlzfSxtLmV4dGVuZCh7aXNSZWFkeTohMSxyZWFkeVdhaXQ6MSxob2xkUmVhZHk6ZnVuY3Rpb24oYSl7YT9tLnJlYWR5V2FpdCsrOm0ucmVhZHkoITApfSxyZWFkeTpmdW5jdGlvbihhKXtpZihhPT09ITA/IS0tbS5yZWFkeVdhaXQ6IW0uaXNSZWFkeSl7aWYoIXkuYm9keSlyZXR1cm4gc2V0VGltZW91dChtLnJlYWR5KTttLmlzUmVhZHk9ITAsYSE9PSEwJiYtLW0ucmVhZHlXYWl0PjB8fChILnJlc29sdmVXaXRoKHksW21dKSxtLmZuLnRyaWdnZXJIYW5kbGVyJiYobSh5KS50cmlnZ2VySGFuZGxlcigicmVhZHkiKSxtKHkpLm9mZigicmVhZHkiKSkpfX19KTtmdW5jdGlvbiBJKCl7eS5hZGRFdmVudExpc3RlbmVyPyh5LnJlbW92ZUV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLEosITEpLGEucmVtb3ZlRXZlbnRMaXN0ZW5lcigibG9hZCIsSiwhMSkpOih5LmRldGFjaEV2ZW50KCJvbnJlYWR5c3RhdGVjaGFuZ2UiLEopLGEuZGV0YWNoRXZlbnQoIm9ubG9hZCIsSikpfWZ1bmN0aW9uIEooKXsoeS5hZGRFdmVudExpc3RlbmVyfHwibG9hZCI9PT1ldmVudC50eXBlfHwiY29tcGxldGUiPT09eS5yZWFkeVN0YXRlKSYmKEkoKSxtLnJlYWR5KCkpfW0ucmVhZHkucHJvbWlzZT1mdW5jdGlvbihiKXtpZighSClpZihIPW0uRGVmZXJyZWQoKSwiY29tcGxldGUiPT09eS5yZWFkeVN0YXRlKXNldFRpbWVvdXQobS5yZWFkeSk7ZWxzZSBpZih5LmFkZEV2ZW50TGlzdGVuZXIpeS5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIixKLCExKSxhLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLEosITEpO2Vsc2V7eS5hdHRhY2hFdmVudCgib25yZWFkeXN0YXRlY2hhbmdlIixKKSxhLmF0dGFjaEV2ZW50KCJvbmxvYWQiLEopO3ZhciBjPSExO3RyeXtjPW51bGw9PWEuZnJhbWVFbGVtZW50JiZ5LmRvY3VtZW50RWxlbWVudH1jYXRjaChkKXt9YyYmYy5kb1Njcm9sbCYmIWZ1bmN0aW9uIGUoKXtpZighbS5pc1JlYWR5KXt0cnl7Yy5kb1Njcm9sbCgibGVmdCIpfWNhdGNoKGEpe3JldHVybiBzZXRUaW1lb3V0KGUsNTApfUkoKSxtLnJlYWR5KCl9fSgpfXJldHVybiBILnByb21pc2UoYil9O3ZhciBLPSJ1bmRlZmluZWQiLEw7Zm9yKEwgaW4gbShrKSlicmVhaztrLm93bkxhc3Q9IjAiIT09TCxrLmlubGluZUJsb2NrTmVlZHNMYXlvdXQ9ITEsbShmdW5jdGlvbigpe3ZhciBhLGIsYyxkO2M9eS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdLGMmJmMuc3R5bGUmJihiPXkuY3JlYXRlRWxlbWVudCgiZGl2IiksZD15LmNyZWF0ZUVsZW1lbnQoImRpdiIpLGQuc3R5bGUuY3NzVGV4dD0icG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyOjA7d2lkdGg6MDtoZWlnaHQ6MDt0b3A6MDtsZWZ0Oi05OTk5cHgiLGMuYXBwZW5kQ2hpbGQoZCkuYXBwZW5kQ2hpbGQoYiksdHlwZW9mIGIuc3R5bGUuem9vbSE9PUsmJihiLnN0eWxlLmNzc1RleHQ9ImRpc3BsYXk6aW5saW5lO21hcmdpbjowO2JvcmRlcjowO3BhZGRpbmc6MXB4O3dpZHRoOjFweDt6b29tOjEiLGsuaW5saW5lQmxvY2tOZWVkc0xheW91dD1hPTM9PT1iLm9mZnNldFdpZHRoLGEmJihjLnN0eWxlLnpvb209MSkpLGMucmVtb3ZlQ2hpbGQoZCkpfSksZnVuY3Rpb24oKXt2YXIgYT15LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2lmKG51bGw9PWsuZGVsZXRlRXhwYW5kbyl7ay5kZWxldGVFeHBhbmRvPSEwO3RyeXtkZWxldGUgYS50ZXN0fWNhdGNoKGIpe2suZGVsZXRlRXhwYW5kbz0hMX19YT1udWxsfSgpLG0uYWNjZXB0RGF0YT1mdW5jdGlvbihhKXt2YXIgYj1tLm5vRGF0YVsoYS5ub2RlTmFtZSsiICIpLnRvTG93ZXJDYXNlKCldLGM9K2Eubm9kZVR5cGV8fDE7cmV0dXJuIDEhPT1jJiY5IT09Yz8hMTohYnx8YiE9PSEwJiZhLmdldEF0dHJpYnV0ZSgiY2xhc3NpZCIpPT09Yn07dmFyIE09L14oPzpce1tcd1xXXSpcfXxcW1tcd1xXXSpcXSkkLyxOPS8oW0EtWl0pL2c7ZnVuY3Rpb24gTyhhLGIsYyl7aWYodm9pZCAwPT09YyYmMT09PWEubm9kZVR5cGUpe3ZhciBkPSJkYXRhLSIrYi5yZXBsYWNlKE4sIi0kMSIpLnRvTG93ZXJDYXNlKCk7aWYoYz1hLmdldEF0dHJpYnV0ZShkKSwic3RyaW5nIj09dHlwZW9mIGMpe3RyeXtjPSJ0cnVlIj09PWM/ITA6ImZhbHNlIj09PWM/ITE6Im51bGwiPT09Yz9udWxsOitjKyIiPT09Yz8rYzpNLnRlc3QoYyk/bS5wYXJzZUpTT04oYyk6Y31jYXRjaChlKXt9bS5kYXRhKGEsYixjKX1lbHNlIGM9dm9pZCAwfXJldHVybiBjfWZ1bmN0aW9uIFAoYSl7dmFyIGI7Zm9yKGIgaW4gYSlpZigoImRhdGEiIT09Ynx8IW0uaXNFbXB0eU9iamVjdChhW2JdKSkmJiJ0b0pTT04iIT09YilyZXR1cm4hMTtyZXR1cm4hMH1mdW5jdGlvbiBRKGEsYixkLGUpe2lmKG0uYWNjZXB0RGF0YShhKSl7dmFyIGYsZyxoPW0uZXhwYW5kbyxpPWEubm9kZVR5cGUsaj1pP20uY2FjaGU6YSxrPWk/YVtoXTphW2hdJiZoOwppZihrJiZqW2tdJiYoZXx8altrXS5kYXRhKXx8dm9pZCAwIT09ZHx8InN0cmluZyIhPXR5cGVvZiBiKXJldHVybiBrfHwoaz1pP2FbaF09Yy5wb3AoKXx8bS5ndWlkKys6aCksaltrXXx8KGpba109aT97fTp7dG9KU09OOm0ubm9vcH0pLCgib2JqZWN0Ij09dHlwZW9mIGJ8fCJmdW5jdGlvbiI9PXR5cGVvZiBiKSYmKGU/altrXT1tLmV4dGVuZChqW2tdLGIpOmpba10uZGF0YT1tLmV4dGVuZChqW2tdLmRhdGEsYikpLGc9altrXSxlfHwoZy5kYXRhfHwoZy5kYXRhPXt9KSxnPWcuZGF0YSksdm9pZCAwIT09ZCYmKGdbbS5jYW1lbENhc2UoYildPWQpLCJzdHJpbmciPT10eXBlb2YgYj8oZj1nW2JdLG51bGw9PWYmJihmPWdbbS5jYW1lbENhc2UoYildKSk6Zj1nLGZ9fWZ1bmN0aW9uIFIoYSxiLGMpe2lmKG0uYWNjZXB0RGF0YShhKSl7dmFyIGQsZSxmPWEubm9kZVR5cGUsZz1mP20uY2FjaGU6YSxoPWY/YVttLmV4cGFuZG9dOm0uZXhwYW5kbztpZihnW2hdKXtpZihiJiYoZD1jP2dbaF06Z1toXS5kYXRhKSl7bS5pc0FycmF5KGIpP2I9Yi5jb25jYXQobS5tYXAoYixtLmNhbWVsQ2FzZSkpOmIgaW4gZD9iPVtiXTooYj1tLmNhbWVsQ2FzZShiKSxiPWIgaW4gZD9bYl06Yi5zcGxpdCgiICIpKSxlPWIubGVuZ3RoO3doaWxlKGUtLSlkZWxldGUgZFtiW2VdXTtpZihjPyFQKGQpOiFtLmlzRW1wdHlPYmplY3QoZCkpcmV0dXJufShjfHwoZGVsZXRlIGdbaF0uZGF0YSxQKGdbaF0pKSkmJihmP20uY2xlYW5EYXRhKFthXSwhMCk6ay5kZWxldGVFeHBhbmRvfHxnIT1nLndpbmRvdz9kZWxldGUgZ1toXTpnW2hdPW51bGwpfX19bS5leHRlbmQoe2NhY2hlOnt9LG5vRGF0YTp7ImFwcGxldCAiOiEwLCJlbWJlZCAiOiEwLCJvYmplY3QgIjoiY2xzaWQ6RDI3Q0RCNkUtQUU2RC0xMWNmLTk2QjgtNDQ0NTUzNTQwMDAwIn0saGFzRGF0YTpmdW5jdGlvbihhKXtyZXR1cm4gYT1hLm5vZGVUeXBlP20uY2FjaGVbYVttLmV4cGFuZG9dXTphW20uZXhwYW5kb10sISFhJiYhUChhKX0sZGF0YTpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIFEoYSxiLGMpfSxyZW1vdmVEYXRhOmZ1bmN0aW9uKGEsYil7cmV0dXJuIFIoYSxiKX0sX2RhdGE6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBRKGEsYixjLCEwKX0sX3JlbW92ZURhdGE6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gUihhLGIsITApfX0pLG0uZm4uZXh0ZW5kKHtkYXRhOmZ1bmN0aW9uKGEsYil7dmFyIGMsZCxlLGY9dGhpc1swXSxnPWYmJmYuYXR0cmlidXRlcztpZih2b2lkIDA9PT1hKXtpZih0aGlzLmxlbmd0aCYmKGU9bS5kYXRhKGYpLDE9PT1mLm5vZGVUeXBlJiYhbS5fZGF0YShmLCJwYXJzZWRBdHRycyIpKSl7Yz1nLmxlbmd0aDt3aGlsZShjLS0pZ1tjXSYmKGQ9Z1tjXS5uYW1lLDA9PT1kLmluZGV4T2YoImRhdGEtIikmJihkPW0uY2FtZWxDYXNlKGQuc2xpY2UoNSkpLE8oZixkLGVbZF0pKSk7bS5fZGF0YShmLCJwYXJzZWRBdHRycyIsITApfXJldHVybiBlfXJldHVybiJvYmplY3QiPT10eXBlb2YgYT90aGlzLmVhY2goZnVuY3Rpb24oKXttLmRhdGEodGhpcyxhKX0pOmFyZ3VtZW50cy5sZW5ndGg+MT90aGlzLmVhY2goZnVuY3Rpb24oKXttLmRhdGEodGhpcyxhLGIpfSk6Zj9PKGYsYSxtLmRhdGEoZixhKSk6dm9pZCAwfSxyZW1vdmVEYXRhOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXttLnJlbW92ZURhdGEodGhpcyxhKX0pfX0pLG0uZXh0ZW5kKHtxdWV1ZTpmdW5jdGlvbihhLGIsYyl7dmFyIGQ7cmV0dXJuIGE/KGI9KGJ8fCJmeCIpKyJxdWV1ZSIsZD1tLl9kYXRhKGEsYiksYyYmKCFkfHxtLmlzQXJyYXkoYyk/ZD1tLl9kYXRhKGEsYixtLm1ha2VBcnJheShjKSk6ZC5wdXNoKGMpKSxkfHxbXSk6dm9pZCAwfSxkZXF1ZXVlOmZ1bmN0aW9uKGEsYil7Yj1ifHwiZngiO3ZhciBjPW0ucXVldWUoYSxiKSxkPWMubGVuZ3RoLGU9Yy5zaGlmdCgpLGY9bS5fcXVldWVIb29rcyhhLGIpLGc9ZnVuY3Rpb24oKXttLmRlcXVldWUoYSxiKX07ImlucHJvZ3Jlc3MiPT09ZSYmKGU9Yy5zaGlmdCgpLGQtLSksZSYmKCJmeCI9PT1iJiZjLnVuc2hpZnQoImlucHJvZ3Jlc3MiKSxkZWxldGUgZi5zdG9wLGUuY2FsbChhLGcsZikpLCFkJiZmJiZmLmVtcHR5LmZpcmUoKX0sX3F1ZXVlSG9va3M6ZnVuY3Rpb24oYSxiKXt2YXIgYz1iKyJxdWV1ZUhvb2tzIjtyZXR1cm4gbS5fZGF0YShhLGMpfHxtLl9kYXRhKGEsYyx7ZW1wdHk6bS5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IikuYWRkKGZ1bmN0aW9uKCl7bS5fcmVtb3ZlRGF0YShhLGIrInF1ZXVlIiksbS5fcmVtb3ZlRGF0YShhLGMpfSl9KX19KSxtLmZuLmV4dGVuZCh7cXVldWU6ZnVuY3Rpb24oYSxiKXt2YXIgYz0yO3JldHVybiJzdHJpbmciIT10eXBlb2YgYSYmKGI9YSxhPSJmeCIsYy0tKSxhcmd1bWVudHMubGVuZ3RoPGM/bS5xdWV1ZSh0aGlzWzBdLGEpOnZvaWQgMD09PWI/dGhpczp0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgYz1tLnF1ZXVlKHRoaXMsYSxiKTttLl9xdWV1ZUhvb2tzKHRoaXMsYSksImZ4Ij09PWEmJiJpbnByb2dyZXNzIiE9PWNbMF0mJm0uZGVxdWV1ZSh0aGlzLGEpfSl9LGRlcXVldWU6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe20uZGVxdWV1ZSh0aGlzLGEpfSl9LGNsZWFyUXVldWU6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMucXVldWUoYXx8ImZ4IixbXSl9LHByb21pc2U6ZnVuY3Rpb24oYSxiKXt2YXIgYyxkPTEsZT1tLkRlZmVycmVkKCksZj10aGlzLGc9dGhpcy5sZW5ndGgsaD1mdW5jdGlvbigpey0tZHx8ZS5yZXNvbHZlV2l0aChmLFtmXSl9OyJzdHJpbmciIT10eXBlb2YgYSYmKGI9YSxhPXZvaWQgMCksYT1hfHwiZngiO3doaWxlKGctLSljPW0uX2RhdGEoZltnXSxhKyJxdWV1ZUhvb2tzIiksYyYmYy5lbXB0eSYmKGQrKyxjLmVtcHR5LmFkZChoKSk7cmV0dXJuIGgoKSxlLnByb21pc2UoYil9fSk7dmFyIFM9L1srLV0/KD86XGQqXC58KVxkKyg/OltlRV1bKy1dP1xkK3wpLy5zb3VyY2UsVD1bIlRvcCIsIlJpZ2h0IiwiQm90dG9tIiwiTGVmdCJdLFU9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYT1ifHxhLCJub25lIj09PW0uY3NzKGEsImRpc3BsYXkiKXx8IW0uY29udGFpbnMoYS5vd25lckRvY3VtZW50LGEpfSxWPW0uYWNjZXNzPWZ1bmN0aW9uKGEsYixjLGQsZSxmLGcpe3ZhciBoPTAsaT1hLmxlbmd0aCxqPW51bGw9PWM7aWYoIm9iamVjdCI9PT1tLnR5cGUoYykpe2U9ITA7Zm9yKGggaW4gYyltLmFjY2VzcyhhLGIsaCxjW2hdLCEwLGYsZyl9ZWxzZSBpZih2b2lkIDAhPT1kJiYoZT0hMCxtLmlzRnVuY3Rpb24oZCl8fChnPSEwKSxqJiYoZz8oYi5jYWxsKGEsZCksYj1udWxsKTooaj1iLGI9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBqLmNhbGwobShhKSxjKX0pKSxiKSlmb3IoO2k+aDtoKyspYihhW2hdLGMsZz9kOmQuY2FsbChhW2hdLGgsYihhW2hdLGMpKSk7cmV0dXJuIGU/YTpqP2IuY2FsbChhKTppP2IoYVswXSxjKTpmfSxXPS9eKD86Y2hlY2tib3h8cmFkaW8pJC9pOyFmdW5jdGlvbigpe3ZhciBhPXkuY3JlYXRlRWxlbWVudCgiaW5wdXQiKSxiPXkuY3JlYXRlRWxlbWVudCgiZGl2IiksYz15LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtpZihiLmlubmVySFRNTD0iICA8bGluay8+PHRhYmxlPjwvdGFibGU+PGEgaHJlZj0nL2EnPmE8L2E+PGlucHV0IHR5cGU9J2NoZWNrYm94Jy8+IixrLmxlYWRpbmdXaGl0ZXNwYWNlPTM9PT1iLmZpcnN0Q2hpbGQubm9kZVR5cGUsay50Ym9keT0hYi5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGJvZHkiKS5sZW5ndGgsay5odG1sU2VyaWFsaXplPSEhYi5nZXRFbGVtZW50c0J5VGFnTmFtZSgibGluayIpLmxlbmd0aCxrLmh0bWw1Q2xvbmU9Ijw6bmF2PjwvOm5hdj4iIT09eS5jcmVhdGVFbGVtZW50KCJuYXYiKS5jbG9uZU5vZGUoITApLm91dGVySFRNTCxhLnR5cGU9ImNoZWNrYm94IixhLmNoZWNrZWQ9ITAsYy5hcHBlbmRDaGlsZChhKSxrLmFwcGVuZENoZWNrZWQ9YS5jaGVja2VkLGIuaW5uZXJIVE1MPSI8dGV4dGFyZWE+eDwvdGV4dGFyZWE+IixrLm5vQ2xvbmVDaGVja2VkPSEhYi5jbG9uZU5vZGUoITApLmxhc3RDaGlsZC5kZWZhdWx0VmFsdWUsYy5hcHBlbmRDaGlsZChiKSxiLmlubmVySFRNTD0iPGlucHV0IHR5cGU9J3JhZGlvJyBjaGVja2VkPSdjaGVja2VkJyBuYW1lPSd0Jy8+IixrLmNoZWNrQ2xvbmU9Yi5jbG9uZU5vZGUoITApLmNsb25lTm9kZSghMCkubGFzdENoaWxkLmNoZWNrZWQsay5ub0Nsb25lRXZlbnQ9ITAsYi5hdHRhY2hFdmVudCYmKGIuYXR0YWNoRXZlbnQoIm9uY2xpY2siLGZ1bmN0aW9uKCl7ay5ub0Nsb25lRXZlbnQ9ITF9KSxiLmNsb25lTm9kZSghMCkuY2xpY2soKSksbnVsbD09ay5kZWxldGVFeHBhbmRvKXtrLmRlbGV0ZUV4cGFuZG89ITA7dHJ5e2RlbGV0ZSBiLnRlc3R9Y2F0Y2goZCl7ay5kZWxldGVFeHBhbmRvPSExfX19KCksZnVuY3Rpb24oKXt2YXIgYixjLGQ9eS5jcmVhdGVFbGVtZW50KCJkaXYiKTtmb3IoYiBpbntzdWJtaXQ6ITAsY2hhbmdlOiEwLGZvY3VzaW46ITB9KWM9Im9uIitiLChrW2IrIkJ1YmJsZXMiXT1jIGluIGEpfHwoZC5zZXRBdHRyaWJ1dGUoYywidCIpLGtbYisiQnViYmxlcyJdPWQuYXR0cmlidXRlc1tjXS5leHBhbmRvPT09ITEpO2Q9bnVsbH0oKTt2YXIgWD0vXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYSkkL2ksWT0vXmtleS8sWj0vXig/Om1vdXNlfHBvaW50ZXJ8Y29udGV4dG1lbnUpfGNsaWNrLywkPS9eKD86Zm9jdXNpbmZvY3VzfGZvY3Vzb3V0Ymx1cikkLyxfPS9eKFteLl0qKSg/OlwuKC4rKXwpJC87ZnVuY3Rpb24gYWIoKXtyZXR1cm4hMH1mdW5jdGlvbiBiYigpe3JldHVybiExfWZ1bmN0aW9uIGNiKCl7dHJ5e3JldHVybiB5LmFjdGl2ZUVsZW1lbnR9Y2F0Y2goYSl7fX1tLmV2ZW50PXtnbG9iYWw6e30sYWRkOmZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGYsZyxoLGksaixrLGwsbixvLHAscSxyPW0uX2RhdGEoYSk7aWYocil7Yy5oYW5kbGVyJiYoaT1jLGM9aS5oYW5kbGVyLGU9aS5zZWxlY3RvciksYy5ndWlkfHwoYy5ndWlkPW0uZ3VpZCsrKSwoZz1yLmV2ZW50cyl8fChnPXIuZXZlbnRzPXt9KSwoaz1yLmhhbmRsZSl8fChrPXIuaGFuZGxlPWZ1bmN0aW9uKGEpe3JldHVybiB0eXBlb2YgbT09PUt8fGEmJm0uZXZlbnQudHJpZ2dlcmVkPT09YS50eXBlP3ZvaWQgMDptLmV2ZW50LmRpc3BhdGNoLmFwcGx5KGsuZWxlbSxhcmd1bWVudHMpfSxrLmVsZW09YSksYj0oYnx8IiIpLm1hdGNoKEUpfHxbIiJdLGg9Yi5sZW5ndGg7d2hpbGUoaC0tKWY9Xy5leGVjKGJbaF0pfHxbXSxvPXE9ZlsxXSxwPShmWzJdfHwiIikuc3BsaXQoIi4iKS5zb3J0KCksbyYmKGo9bS5ldmVudC5zcGVjaWFsW29dfHx7fSxvPShlP2ouZGVsZWdhdGVUeXBlOmouYmluZFR5cGUpfHxvLGo9bS5ldmVudC5zcGVjaWFsW29dfHx7fSxsPW0uZXh0ZW5kKHt0eXBlOm8sb3JpZ1R5cGU6cSxkYXRhOmQsaGFuZGxlcjpjLGd1aWQ6Yy5ndWlkLHNlbGVjdG9yOmUsbmVlZHNDb250ZXh0OmUmJm0uZXhwci5tYXRjaC5uZWVkc0NvbnRleHQudGVzdChlKSxuYW1lc3BhY2U6cC5qb2luKCIuIil9LGkpLChuPWdbb10pfHwobj1nW29dPVtdLG4uZGVsZWdhdGVDb3VudD0wLGouc2V0dXAmJmouc2V0dXAuY2FsbChhLGQscCxrKSE9PSExfHwoYS5hZGRFdmVudExpc3RlbmVyP2EuYWRkRXZlbnRMaXN0ZW5lcihvLGssITEpOmEuYXR0YWNoRXZlbnQmJmEuYXR0YWNoRXZlbnQoIm9uIitvLGspKSksai5hZGQmJihqLmFkZC5jYWxsKGEsbCksbC5oYW5kbGVyLmd1aWR8fChsLmhhbmRsZXIuZ3VpZD1jLmd1aWQpKSxlP24uc3BsaWNlKG4uZGVsZWdhdGVDb3VudCsrLDAsbCk6bi5wdXNoKGwpLG0uZXZlbnQuZ2xvYmFsW29dPSEwKTthPW51bGx9fSxyZW1vdmU6ZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgZixnLGgsaSxqLGssbCxuLG8scCxxLHI9bS5oYXNEYXRhKGEpJiZtLl9kYXRhKGEpO2lmKHImJihrPXIuZXZlbnRzKSl7Yj0oYnx8IiIpLm1hdGNoKEUpfHxbIiJdLGo9Yi5sZW5ndGg7d2hpbGUoai0tKWlmKGg9Xy5leGVjKGJbal0pfHxbXSxvPXE9aFsxXSxwPShoWzJdfHwiIikuc3BsaXQoIi4iKS5zb3J0KCksbyl7bD1tLmV2ZW50LnNwZWNpYWxbb118fHt9LG89KGQ/bC5kZWxlZ2F0ZVR5cGU6bC5iaW5kVHlwZSl8fG8sbj1rW29dfHxbXSxoPWhbMl0mJm5ldyBSZWdFeHAoIihefFxcLikiK3Auam9pbigiXFwuKD86LipcXC58KSIpKyIoXFwufCQpIiksaT1mPW4ubGVuZ3RoO3doaWxlKGYtLSlnPW5bZl0sIWUmJnEhPT1nLm9yaWdUeXBlfHxjJiZjLmd1aWQhPT1nLmd1aWR8fGgmJiFoLnRlc3QoZy5uYW1lc3BhY2UpfHxkJiZkIT09Zy5zZWxlY3RvciYmKCIqKiIhPT1kfHwhZy5zZWxlY3Rvcil8fChuLnNwbGljZShmLDEpLGcuc2VsZWN0b3ImJm4uZGVsZWdhdGVDb3VudC0tLGwucmVtb3ZlJiZsLnJlbW92ZS5jYWxsKGEsZykpO2kmJiFuLmxlbmd0aCYmKGwudGVhcmRvd24mJmwudGVhcmRvd24uY2FsbChhLHAsci5oYW5kbGUpIT09ITF8fG0ucmVtb3ZlRXZlbnQoYSxvLHIuaGFuZGxlKSxkZWxldGUga1tvXSl9ZWxzZSBmb3IobyBpbiBrKW0uZXZlbnQucmVtb3ZlKGEsbytiW2pdLGMsZCwhMCk7bS5pc0VtcHR5T2JqZWN0KGspJiYoZGVsZXRlIHIuaGFuZGxlLG0uX3JlbW92ZURhdGEoYSwiZXZlbnRzIikpfX0sdHJpZ2dlcjpmdW5jdGlvbihiLGMsZCxlKXt2YXIgZixnLGgsaSxrLGwsbixvPVtkfHx5XSxwPWouY2FsbChiLCJ0eXBlIik/Yi50eXBlOmIscT1qLmNhbGwoYiwibmFtZXNwYWNlIik/Yi5uYW1lc3BhY2Uuc3BsaXQoIi4iKTpbXTtpZihoPWw9ZD1kfHx5LDMhPT1kLm5vZGVUeXBlJiY4IT09ZC5ub2RlVHlwZSYmISQudGVzdChwK20uZXZlbnQudHJpZ2dlcmVkKSYmKHAuaW5kZXhPZigiLiIpPj0wJiYocT1wLnNwbGl0KCIuIikscD1xLnNoaWZ0KCkscS5zb3J0KCkpLGc9cC5pbmRleE9mKCI6Iik8MCYmIm9uIitwLGI9YlttLmV4cGFuZG9dP2I6bmV3IG0uRXZlbnQocCwib2JqZWN0Ij09dHlwZW9mIGImJmIpLGIuaXNUcmlnZ2VyPWU/MjozLGIubmFtZXNwYWNlPXEuam9pbigiLiIpLGIubmFtZXNwYWNlX3JlPWIubmFtZXNwYWNlP25ldyBSZWdFeHAoIihefFxcLikiK3Euam9pbigiXFwuKD86LipcXC58KSIpKyIoXFwufCQpIik6bnVsbCxiLnJlc3VsdD12b2lkIDAsYi50YXJnZXR8fChiLnRhcmdldD1kKSxjPW51bGw9PWM/W2JdOm0ubWFrZUFycmF5KGMsW2JdKSxrPW0uZXZlbnQuc3BlY2lhbFtwXXx8e30sZXx8IWsudHJpZ2dlcnx8ay50cmlnZ2VyLmFwcGx5KGQsYykhPT0hMSkpe2lmKCFlJiYhay5ub0J1YmJsZSYmIW0uaXNXaW5kb3coZCkpe2ZvcihpPWsuZGVsZWdhdGVUeXBlfHxwLCQudGVzdChpK3ApfHwoaD1oLnBhcmVudE5vZGUpO2g7aD1oLnBhcmVudE5vZGUpby5wdXNoKGgpLGw9aDtsPT09KGQub3duZXJEb2N1bWVudHx8eSkmJm8ucHVzaChsLmRlZmF1bHRWaWV3fHxsLnBhcmVudFdpbmRvd3x8YSl9bj0wO3doaWxlKChoPW9bbisrXSkmJiFiLmlzUHJvcGFnYXRpb25TdG9wcGVkKCkpYi50eXBlPW4+MT9pOmsuYmluZFR5cGV8fHAsZj0obS5fZGF0YShoLCJldmVudHMiKXx8e30pW2IudHlwZV0mJm0uX2RhdGEoaCwiaGFuZGxlIiksZiYmZi5hcHBseShoLGMpLGY9ZyYmaFtnXSxmJiZmLmFwcGx5JiZtLmFjY2VwdERhdGEoaCkmJihiLnJlc3VsdD1mLmFwcGx5KGgsYyksYi5yZXN1bHQ9PT0hMSYmYi5wcmV2ZW50RGVmYXVsdCgpKTtpZihiLnR5cGU9cCwhZSYmIWIuaXNEZWZhdWx0UHJldmVudGVkKCkmJighay5fZGVmYXVsdHx8ay5fZGVmYXVsdC5hcHBseShvLnBvcCgpLGMpPT09ITEpJiZtLmFjY2VwdERhdGEoZCkmJmcmJmRbcF0mJiFtLmlzV2luZG93KGQpKXtsPWRbZ10sbCYmKGRbZ109bnVsbCksbS5ldmVudC50cmlnZ2VyZWQ9cDt0cnl7ZFtwXSgpfWNhdGNoKHIpe31tLmV2ZW50LnRyaWdnZXJlZD12b2lkIDAsbCYmKGRbZ109bCl9cmV0dXJuIGIucmVzdWx0fX0sZGlzcGF0Y2g6ZnVuY3Rpb24oYSl7YT1tLmV2ZW50LmZpeChhKTt2YXIgYixjLGUsZixnLGg9W10saT1kLmNhbGwoYXJndW1lbnRzKSxqPShtLl9kYXRhKHRoaXMsImV2ZW50cyIpfHx7fSlbYS50eXBlXXx8W10saz1tLmV2ZW50LnNwZWNpYWxbYS50eXBlXXx8e307aWYoaVswXT1hLGEuZGVsZWdhdGVUYXJnZXQ9dGhpcywhay5wcmVEaXNwYXRjaHx8ay5wcmVEaXNwYXRjaC5jYWxsKHRoaXMsYSkhPT0hMSl7aD1tLmV2ZW50LmhhbmRsZXJzLmNhbGwodGhpcyxhLGopLGI9MDt3aGlsZSgoZj1oW2IrK10pJiYhYS5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpKXthLmN1cnJlbnRUYXJnZXQ9Zi5lbGVtLGc9MDt3aGlsZSgoZT1mLmhhbmRsZXJzW2crK10pJiYhYS5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCgpKSghYS5uYW1lc3BhY2VfcmV8fGEubmFtZXNwYWNlX3JlLnRlc3QoZS5uYW1lc3BhY2UpKSYmKGEuaGFuZGxlT2JqPWUsYS5kYXRhPWUuZGF0YSxjPSgobS5ldmVudC5zcGVjaWFsW2Uub3JpZ1R5cGVdfHx7fSkuaGFuZGxlfHxlLmhhbmRsZXIpLmFwcGx5KGYuZWxlbSxpKSx2b2lkIDAhPT1jJiYoYS5yZXN1bHQ9Yyk9PT0hMSYmKGEucHJldmVudERlZmF1bHQoKSxhLnN0b3BQcm9wYWdhdGlvbigpKSl9cmV0dXJuIGsucG9zdERpc3BhdGNoJiZrLnBvc3REaXNwYXRjaC5jYWxsKHRoaXMsYSksYS5yZXN1bHR9fSxoYW5kbGVyczpmdW5jdGlvbihhLGIpe3ZhciBjLGQsZSxmLGc9W10saD1iLmRlbGVnYXRlQ291bnQsaT1hLnRhcmdldDtpZihoJiZpLm5vZGVUeXBlJiYoIWEuYnV0dG9ufHwiY2xpY2siIT09YS50eXBlKSlmb3IoO2khPXRoaXM7aT1pLnBhcmVudE5vZGV8fHRoaXMpaWYoMT09PWkubm9kZVR5cGUmJihpLmRpc2FibGVkIT09ITB8fCJjbGljayIhPT1hLnR5cGUpKXtmb3IoZT1bXSxmPTA7aD5mO2YrKylkPWJbZl0sYz1kLnNlbGVjdG9yKyIgIix2b2lkIDA9PT1lW2NdJiYoZVtjXT1kLm5lZWRzQ29udGV4dD9tKGMsdGhpcykuaW5kZXgoaSk+PTA6bS5maW5kKGMsdGhpcyxudWxsLFtpXSkubGVuZ3RoKSxlW2NdJiZlLnB1c2goZCk7ZS5sZW5ndGgmJmcucHVzaCh7ZWxlbTppLGhhbmRsZXJzOmV9KX1yZXR1cm4gaDxiLmxlbmd0aCYmZy5wdXNoKHtlbGVtOnRoaXMsaGFuZGxlcnM6Yi5zbGljZShoKX0pLGd9LGZpeDpmdW5jdGlvbihhKXtpZihhW20uZXhwYW5kb10pcmV0dXJuIGE7dmFyIGIsYyxkLGU9YS50eXBlLGY9YSxnPXRoaXMuZml4SG9va3NbZV07Z3x8KHRoaXMuZml4SG9va3NbZV09Zz1aLnRlc3QoZSk/dGhpcy5tb3VzZUhvb2tzOlkudGVzdChlKT90aGlzLmtleUhvb2tzOnt9KSxkPWcucHJvcHM/dGhpcy5wcm9wcy5jb25jYXQoZy5wcm9wcyk6dGhpcy5wcm9wcyxhPW5ldyBtLkV2ZW50KGYpLGI9ZC5sZW5ndGg7d2hpbGUoYi0tKWM9ZFtiXSxhW2NdPWZbY107cmV0dXJuIGEudGFyZ2V0fHwoYS50YXJnZXQ9Zi5zcmNFbGVtZW50fHx5KSwzPT09YS50YXJnZXQubm9kZVR5cGUmJihhLnRhcmdldD1hLnRhcmdldC5wYXJlbnROb2RlKSxhLm1ldGFLZXk9ISFhLm1ldGFLZXksZy5maWx0ZXI/Zy5maWx0ZXIoYSxmKTphfSxwcm9wczoiYWx0S2V5IGJ1YmJsZXMgY2FuY2VsYWJsZSBjdHJsS2V5IGN1cnJlbnRUYXJnZXQgZXZlbnRQaGFzZSBtZXRhS2V5IHJlbGF0ZWRUYXJnZXQgc2hpZnRLZXkgdGFyZ2V0IHRpbWVTdGFtcCB2aWV3IHdoaWNoIi5zcGxpdCgiICIpLGZpeEhvb2tzOnt9LGtleUhvb2tzOntwcm9wczoiY2hhciBjaGFyQ29kZSBrZXkga2V5Q29kZSIuc3BsaXQoIiAiKSxmaWx0ZXI6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gbnVsbD09YS53aGljaCYmKGEud2hpY2g9bnVsbCE9Yi5jaGFyQ29kZT9iLmNoYXJDb2RlOmIua2V5Q29kZSksYX19LG1vdXNlSG9va3M6e3Byb3BzOiJidXR0b24gYnV0dG9ucyBjbGllbnRYIGNsaWVudFkgZnJvbUVsZW1lbnQgb2Zmc2V0WCBvZmZzZXRZIHBhZ2VYIHBhZ2VZIHNjcmVlblggc2NyZWVuWSB0b0VsZW1lbnQiLnNwbGl0KCIgIiksZmlsdGVyOmZ1bmN0aW9uKGEsYil7dmFyIGMsZCxlLGY9Yi5idXR0b24sZz1iLmZyb21FbGVtZW50O3JldHVybiBudWxsPT1hLnBhZ2VYJiZudWxsIT1iLmNsaWVudFgmJihkPWEudGFyZ2V0Lm93bmVyRG9jdW1lbnR8fHksZT1kLmRvY3VtZW50RWxlbWVudCxjPWQuYm9keSxhLnBhZ2VYPWIuY2xpZW50WCsoZSYmZS5zY3JvbGxMZWZ0fHxjJiZjLnNjcm9sbExlZnR8fDApLShlJiZlLmNsaWVudExlZnR8fGMmJmMuY2xpZW50TGVmdHx8MCksYS5wYWdlWT1iLmNsaWVudFkrKGUmJmUuc2Nyb2xsVG9wfHxjJiZjLnNjcm9sbFRvcHx8MCktKGUmJmUuY2xpZW50VG9wfHxjJiZjLmNsaWVudFRvcHx8MCkpLCFhLnJlbGF0ZWRUYXJnZXQmJmcmJihhLnJlbGF0ZWRUYXJnZXQ9Zz09PWEudGFyZ2V0P2IudG9FbGVtZW50OmcpLGEud2hpY2h8fHZvaWQgMD09PWZ8fChhLndoaWNoPTEmZj8xOjImZj8zOjQmZj8yOjApLGF9fSxzcGVjaWFsOntsb2FkOntub0J1YmJsZTohMH0sZm9jdXM6e3RyaWdnZXI6ZnVuY3Rpb24oKXtpZih0aGlzIT09Y2IoKSYmdGhpcy5mb2N1cyl0cnl7cmV0dXJuIHRoaXMuZm9jdXMoKSwhMX1jYXRjaChhKXt9fSxkZWxlZ2F0ZVR5cGU6ImZvY3VzaW4ifSxibHVyOnt0cmlnZ2VyOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXM9PT1jYigpJiZ0aGlzLmJsdXI/KHRoaXMuYmx1cigpLCExKTp2b2lkIDB9LGRlbGVnYXRlVHlwZToiZm9jdXNvdXQifSxjbGljazp7dHJpZ2dlcjpmdW5jdGlvbigpe3JldHVybiBtLm5vZGVOYW1lKHRoaXMsImlucHV0IikmJiJjaGVja2JveCI9PT10aGlzLnR5cGUmJnRoaXMuY2xpY2s/KHRoaXMuY2xpY2soKSwhMSk6dm9pZCAwfSxfZGVmYXVsdDpmdW5jdGlvbihhKXtyZXR1cm4gbS5ub2RlTmFtZShhLnRhcmdldCwiYSIpfX0sYmVmb3JldW5sb2FkOntwb3N0RGlzcGF0Y2g6ZnVuY3Rpb24oYSl7dm9pZCAwIT09YS5yZXN1bHQmJmEub3JpZ2luYWxFdmVudCYmKGEub3JpZ2luYWxFdmVudC5yZXR1cm5WYWx1ZT1hLnJlc3VsdCl9fX0sc2ltdWxhdGU6ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9bS5leHRlbmQobmV3IG0uRXZlbnQsYyx7dHlwZTphLGlzU2ltdWxhdGVkOiEwLG9yaWdpbmFsRXZlbnQ6e319KTtkP20uZXZlbnQudHJpZ2dlcihlLG51bGwsYik6bS5ldmVudC5kaXNwYXRjaC5jYWxsKGIsZSksZS5pc0RlZmF1bHRQcmV2ZW50ZWQoKSYmYy5wcmV2ZW50RGVmYXVsdCgpfX0sbS5yZW1vdmVFdmVudD15LnJlbW92ZUV2ZW50TGlzdGVuZXI/ZnVuY3Rpb24oYSxiLGMpe2EucmVtb3ZlRXZlbnRMaXN0ZW5lciYmYS5yZW1vdmVFdmVudExpc3RlbmVyKGIsYywhMSl9OmZ1bmN0aW9uKGEsYixjKXt2YXIgZD0ib24iK2I7YS5kZXRhY2hFdmVudCYmKHR5cGVvZiBhW2RdPT09SyYmKGFbZF09bnVsbCksYS5kZXRhY2hFdmVudChkLGMpKX0sbS5FdmVudD1mdW5jdGlvbihhLGIpe3JldHVybiB0aGlzIGluc3RhbmNlb2YgbS5FdmVudD8oYSYmYS50eXBlPyh0aGlzLm9yaWdpbmFsRXZlbnQ9YSx0aGlzLnR5cGU9YS50eXBlLHRoaXMuaXNEZWZhdWx0UHJldmVudGVkPWEuZGVmYXVsdFByZXZlbnRlZHx8dm9pZCAwPT09YS5kZWZhdWx0UHJldmVudGVkJiZhLnJldHVyblZhbHVlPT09ITE/YWI6YmIpOnRoaXMudHlwZT1hLGImJm0uZXh0ZW5kKHRoaXMsYiksdGhpcy50aW1lU3RhbXA9YSYmYS50aW1lU3RhbXB8fG0ubm93KCksdm9pZCh0aGlzW20uZXhwYW5kb109ITApKTpuZXcgbS5FdmVudChhLGIpfSxtLkV2ZW50LnByb3RvdHlwZT17aXNEZWZhdWx0UHJldmVudGVkOmJiLGlzUHJvcGFnYXRpb25TdG9wcGVkOmJiLGlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkOmJiLHByZXZlbnREZWZhdWx0OmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5vcmlnaW5hbEV2ZW50O3RoaXMuaXNEZWZhdWx0UHJldmVudGVkPWFiLGEmJihhLnByZXZlbnREZWZhdWx0P2EucHJldmVudERlZmF1bHQoKTphLnJldHVyblZhbHVlPSExKX0sc3RvcFByb3BhZ2F0aW9uOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5vcmlnaW5hbEV2ZW50O3RoaXMuaXNQcm9wYWdhdGlvblN0b3BwZWQ9YWIsYSYmKGEuc3RvcFByb3BhZ2F0aW9uJiZhLnN0b3BQcm9wYWdhdGlvbigpLGEuY2FuY2VsQnViYmxlPSEwKX0sc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5vcmlnaW5hbEV2ZW50O3RoaXMuaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQ9YWIsYSYmYS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24mJmEuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCksdGhpcy5zdG9wUHJvcGFnYXRpb24oKX19LG0uZWFjaCh7bW91c2VlbnRlcjoibW91c2VvdmVyIixtb3VzZWxlYXZlOiJtb3VzZW91dCIscG9pbnRlcmVudGVyOiJwb2ludGVyb3ZlciIscG9pbnRlcmxlYXZlOiJwb2ludGVyb3V0In0sZnVuY3Rpb24oYSxiKXttLmV2ZW50LnNwZWNpYWxbYV09e2RlbGVnYXRlVHlwZTpiLGJpbmRUeXBlOmIsaGFuZGxlOmZ1bmN0aW9uKGEpe3ZhciBjLGQ9dGhpcyxlPWEucmVsYXRlZFRhcmdldCxmPWEuaGFuZGxlT2JqO3JldHVybighZXx8ZSE9PWQmJiFtLmNvbnRhaW5zKGQsZSkpJiYoYS50eXBlPWYub3JpZ1R5cGUsYz1mLmhhbmRsZXIuYXBwbHkodGhpcyxhcmd1bWVudHMpLGEudHlwZT1iKSxjfX19KSxrLnN1Ym1pdEJ1YmJsZXN8fChtLmV2ZW50LnNwZWNpYWwuc3VibWl0PXtzZXR1cDpmdW5jdGlvbigpe3JldHVybiBtLm5vZGVOYW1lKHRoaXMsImZvcm0iKT8hMTp2b2lkIG0uZXZlbnQuYWRkKHRoaXMsImNsaWNrLl9zdWJtaXQga2V5cHJlc3MuX3N1Ym1pdCIsZnVuY3Rpb24oYSl7dmFyIGI9YS50YXJnZXQsYz1tLm5vZGVOYW1lKGIsImlucHV0Iil8fG0ubm9kZU5hbWUoYiwiYnV0dG9uIik/Yi5mb3JtOnZvaWQgMDtjJiYhbS5fZGF0YShjLCJzdWJtaXRCdWJibGVzIikmJihtLmV2ZW50LmFkZChjLCJzdWJtaXQuX3N1Ym1pdCIsZnVuY3Rpb24oYSl7YS5fc3VibWl0X2J1YmJsZT0hMH0pLG0uX2RhdGEoYywic3VibWl0QnViYmxlcyIsITApKX0pfSxwb3N0RGlzcGF0Y2g6ZnVuY3Rpb24oYSl7YS5fc3VibWl0X2J1YmJsZSYmKGRlbGV0ZSBhLl9zdWJtaXRfYnViYmxlLHRoaXMucGFyZW50Tm9kZSYmIWEuaXNUcmlnZ2VyJiZtLmV2ZW50LnNpbXVsYXRlKCJzdWJtaXQiLHRoaXMucGFyZW50Tm9kZSxhLCEwKSl9LHRlYXJkb3duOmZ1bmN0aW9uKCl7cmV0dXJuIG0ubm9kZU5hbWUodGhpcywiZm9ybSIpPyExOnZvaWQgbS5ldmVudC5yZW1vdmUodGhpcywiLl9zdWJtaXQiKX19KSxrLmNoYW5nZUJ1YmJsZXN8fChtLmV2ZW50LnNwZWNpYWwuY2hhbmdlPXtzZXR1cDpmdW5jdGlvbigpe3JldHVybiBYLnRlc3QodGhpcy5ub2RlTmFtZSk/KCgiY2hlY2tib3giPT09dGhpcy50eXBlfHwicmFkaW8iPT09dGhpcy50eXBlKSYmKG0uZXZlbnQuYWRkKHRoaXMsInByb3BlcnR5Y2hhbmdlLl9jaGFuZ2UiLGZ1bmN0aW9uKGEpeyJjaGVja2VkIj09PWEub3JpZ2luYWxFdmVudC5wcm9wZXJ0eU5hbWUmJih0aGlzLl9qdXN0X2NoYW5nZWQ9ITApfSksbS5ldmVudC5hZGQodGhpcywiY2xpY2suX2NoYW5nZSIsZnVuY3Rpb24oYSl7dGhpcy5fanVzdF9jaGFuZ2VkJiYhYS5pc1RyaWdnZXImJih0aGlzLl9qdXN0X2NoYW5nZWQ9ITEpLG0uZXZlbnQuc2ltdWxhdGUoImNoYW5nZSIsdGhpcyxhLCEwKX0pKSwhMSk6dm9pZCBtLmV2ZW50LmFkZCh0aGlzLCJiZWZvcmVhY3RpdmF0ZS5fY2hhbmdlIixmdW5jdGlvbihhKXt2YXIgYj1hLnRhcmdldDtYLnRlc3QoYi5ub2RlTmFtZSkmJiFtLl9kYXRhKGIsImNoYW5nZUJ1YmJsZXMiKSYmKG0uZXZlbnQuYWRkKGIsImNoYW5nZS5fY2hhbmdlIixmdW5jdGlvbihhKXshdGhpcy5wYXJlbnROb2RlfHxhLmlzU2ltdWxhdGVkfHxhLmlzVHJpZ2dlcnx8bS5ldmVudC5zaW11bGF0ZSgiY2hhbmdlIix0aGlzLnBhcmVudE5vZGUsYSwhMCl9KSxtLl9kYXRhKGIsImNoYW5nZUJ1YmJsZXMiLCEwKSl9KX0saGFuZGxlOmZ1bmN0aW9uKGEpe3ZhciBiPWEudGFyZ2V0O3JldHVybiB0aGlzIT09Ynx8YS5pc1NpbXVsYXRlZHx8YS5pc1RyaWdnZXJ8fCJyYWRpbyIhPT1iLnR5cGUmJiJjaGVja2JveCIhPT1iLnR5cGU/YS5oYW5kbGVPYmouaGFuZGxlci5hcHBseSh0aGlzLGFyZ3VtZW50cyk6dm9pZCAwfSx0ZWFyZG93bjpmdW5jdGlvbigpe3JldHVybiBtLmV2ZW50LnJlbW92ZSh0aGlzLCIuX2NoYW5nZSIpLCFYLnRlc3QodGhpcy5ub2RlTmFtZSl9fSksay5mb2N1c2luQnViYmxlc3x8bS5lYWNoKHtmb2N1czoiZm9jdXNpbiIsYmx1cjoiZm9jdXNvdXQifSxmdW5jdGlvbihhLGIpe3ZhciBjPWZ1bmN0aW9uKGEpe20uZXZlbnQuc2ltdWxhdGUoYixhLnRhcmdldCxtLmV2ZW50LmZpeChhKSwhMCl9O20uZXZlbnQuc3BlY2lhbFtiXT17c2V0dXA6ZnVuY3Rpb24oKXt2YXIgZD10aGlzLm93bmVyRG9jdW1lbnR8fHRoaXMsZT1tLl9kYXRhKGQsYik7ZXx8ZC5hZGRFdmVudExpc3RlbmVyKGEsYywhMCksbS5fZGF0YShkLGIsKGV8fDApKzEpfSx0ZWFyZG93bjpmdW5jdGlvbigpe3ZhciBkPXRoaXMub3duZXJEb2N1bWVudHx8dGhpcyxlPW0uX2RhdGEoZCxiKS0xO2U/bS5fZGF0YShkLGIsZSk6KGQucmVtb3ZlRXZlbnRMaXN0ZW5lcihhLGMsITApLG0uX3JlbW92ZURhdGEoZCxiKSl9fX0pLG0uZm4uZXh0ZW5kKHtvbjpmdW5jdGlvbihhLGIsYyxkLGUpe3ZhciBmLGc7aWYoIm9iamVjdCI9PXR5cGVvZiBhKXsic3RyaW5nIiE9dHlwZW9mIGImJihjPWN8fGIsYj12b2lkIDApO2ZvcihmIGluIGEpdGhpcy5vbihmLGIsYyxhW2ZdLGUpO3JldHVybiB0aGlzfWlmKG51bGw9PWMmJm51bGw9PWQ/KGQ9YixjPWI9dm9pZCAwKTpudWxsPT1kJiYoInN0cmluZyI9PXR5cGVvZiBiPyhkPWMsYz12b2lkIDApOihkPWMsYz1iLGI9dm9pZCAwKSksZD09PSExKWQ9YmI7ZWxzZSBpZighZClyZXR1cm4gdGhpcztyZXR1cm4gMT09PWUmJihnPWQsZD1mdW5jdGlvbihhKXtyZXR1cm4gbSgpLm9mZihhKSxnLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sZC5ndWlkPWcuZ3VpZHx8KGcuZ3VpZD1tLmd1aWQrKykpLHRoaXMuZWFjaChmdW5jdGlvbigpe20uZXZlbnQuYWRkKHRoaXMsYSxkLGMsYil9KX0sb25lOmZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiB0aGlzLm9uKGEsYixjLGQsMSl9LG9mZjpmdW5jdGlvbihhLGIsYyl7dmFyIGQsZTtpZihhJiZhLnByZXZlbnREZWZhdWx0JiZhLmhhbmRsZU9iailyZXR1cm4gZD1hLmhhbmRsZU9iaixtKGEuZGVsZWdhdGVUYXJnZXQpLm9mZihkLm5hbWVzcGFjZT9kLm9yaWdUeXBlKyIuIitkLm5hbWVzcGFjZTpkLm9yaWdUeXBlLGQuc2VsZWN0b3IsZC5oYW5kbGVyKSx0aGlzO2lmKCJvYmplY3QiPT10eXBlb2YgYSl7Zm9yKGUgaW4gYSl0aGlzLm9mZihlLGIsYVtlXSk7cmV0dXJuIHRoaXN9cmV0dXJuKGI9PT0hMXx8ImZ1bmN0aW9uIj09dHlwZW9mIGIpJiYoYz1iLGI9dm9pZCAwKSxjPT09ITEmJihjPWJiKSx0aGlzLmVhY2goZnVuY3Rpb24oKXttLmV2ZW50LnJlbW92ZSh0aGlzLGEsYyxiKX0pfSx0cmlnZ2VyOmZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe20uZXZlbnQudHJpZ2dlcihhLGIsdGhpcyl9KX0sdHJpZ2dlckhhbmRsZXI6ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzWzBdO3JldHVybiBjP20uZXZlbnQudHJpZ2dlcihhLGIsYywhMCk6dm9pZCAwfX0pO2Z1bmN0aW9uIGRiKGEpe3ZhciBiPWViLnNwbGl0KCJ8IiksYz1hLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtpZihjLmNyZWF0ZUVsZW1lbnQpd2hpbGUoYi5sZW5ndGgpYy5jcmVhdGVFbGVtZW50KGIucG9wKCkpO3JldHVybiBjfXZhciBlYj0iYWJicnxhcnRpY2xlfGFzaWRlfGF1ZGlvfGJkaXxjYW52YXN8ZGF0YXxkYXRhbGlzdHxkZXRhaWxzfGZpZ2NhcHRpb258ZmlndXJlfGZvb3RlcnxoZWFkZXJ8aGdyb3VwfG1hcmt8bWV0ZXJ8bmF2fG91dHB1dHxwcm9ncmVzc3xzZWN0aW9ufHN1bW1hcnl8dGltZXx2aWRlbyIsZmI9LyBqUXVlcnlcZCs9Iig/Om51bGx8XGQrKSIvZyxnYj1uZXcgUmVnRXhwKCI8KD86IitlYisiKVtcXHMvPl0iLCJpIiksaGI9L15ccysvLGliPS88KD8hYXJlYXxicnxjb2x8ZW1iZWR8aHJ8aW1nfGlucHV0fGxpbmt8bWV0YXxwYXJhbSkoKFtcdzpdKylbXj5dKilcLz4vZ2ksamI9LzwoW1x3Ol0rKS8sa2I9Lzx0Ym9keS9pLGxiPS88fCYjP1x3KzsvLG1iPS88KD86c2NyaXB0fHN0eWxlfGxpbmspL2ksbmI9L2NoZWNrZWRccyooPzpbXj1dfD1ccyouY2hlY2tlZC4pL2ksb2I9L14kfFwvKD86amF2YXxlY21hKXNjcmlwdC9pLHBiPS9edHJ1ZVwvKC4qKS8scWI9L15ccyo8ISg/OlxbQ0RBVEFcW3wtLSl8KD86XF1cXXwtLSk+XHMqJC9nLHJiPXtvcHRpb246WzEsIjxzZWxlY3QgbXVsdGlwbGU9J211bHRpcGxlJz4iLCI8L3NlbGVjdD4iXSxsZWdlbmQ6WzEsIjxmaWVsZHNldD4iLCI8L2ZpZWxkc2V0PiJdLGFyZWE6WzEsIjxtYXA+IiwiPC9tYXA+Il0scGFyYW06WzEsIjxvYmplY3Q+IiwiPC9vYmplY3Q+Il0sdGhlYWQ6WzEsIjx0YWJsZT4iLCI8L3RhYmxlPiJdLHRyOlsyLCI8dGFibGU+PHRib2R5PiIsIjwvdGJvZHk+PC90YWJsZT4iXSxjb2w6WzIsIjx0YWJsZT48dGJvZHk+PC90Ym9keT48Y29sZ3JvdXA+IiwiPC9jb2xncm91cD48L3RhYmxlPiJdLHRkOlszLCI8dGFibGU+PHRib2R5Pjx0cj4iLCI8L3RyPjwvdGJvZHk+PC90YWJsZT4iXSxfZGVmYXVsdDprLmh0bWxTZXJpYWxpemU/WzAsIiIsIiJdOlsxLCJYPGRpdj4iLCI8L2Rpdj4iXX0sc2I9ZGIoeSksdGI9c2IuYXBwZW5kQ2hpbGQoeS5jcmVhdGVFbGVtZW50KCJkaXYiKSk7cmIub3B0Z3JvdXA9cmIub3B0aW9uLHJiLnRib2R5PXJiLnRmb290PXJiLmNvbGdyb3VwPXJiLmNhcHRpb249cmIudGhlYWQscmIudGg9cmIudGQ7ZnVuY3Rpb24gdWIoYSxiKXt2YXIgYyxkLGU9MCxmPXR5cGVvZiBhLmdldEVsZW1lbnRzQnlUYWdOYW1lIT09Sz9hLmdldEVsZW1lbnRzQnlUYWdOYW1lKGJ8fCIqIik6dHlwZW9mIGEucXVlcnlTZWxlY3RvckFsbCE9PUs/YS5xdWVyeVNlbGVjdG9yQWxsKGJ8fCIqIik6dm9pZCAwO2lmKCFmKWZvcihmPVtdLGM9YS5jaGlsZE5vZGVzfHxhO251bGwhPShkPWNbZV0pO2UrKykhYnx8bS5ub2RlTmFtZShkLGIpP2YucHVzaChkKTptLm1lcmdlKGYsdWIoZCxiKSk7cmV0dXJuIHZvaWQgMD09PWJ8fGImJm0ubm9kZU5hbWUoYSxiKT9tLm1lcmdlKFthXSxmKTpmfWZ1bmN0aW9uIHZiKGEpe1cudGVzdChhLnR5cGUpJiYoYS5kZWZhdWx0Q2hlY2tlZD1hLmNoZWNrZWQpfWZ1bmN0aW9uIHdiKGEsYil7cmV0dXJuIG0ubm9kZU5hbWUoYSwidGFibGUiKSYmbS5ub2RlTmFtZSgxMSE9PWIubm9kZVR5cGU/YjpiLmZpcnN0Q2hpbGQsInRyIik/YS5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGJvZHkiKVswXXx8YS5hcHBlbmRDaGlsZChhLm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGJvZHkiKSk6YX1mdW5jdGlvbiB4YihhKXtyZXR1cm4gYS50eXBlPShudWxsIT09bS5maW5kLmF0dHIoYSwidHlwZSIpKSsiLyIrYS50eXBlLGF9ZnVuY3Rpb24geWIoYSl7dmFyIGI9cGIuZXhlYyhhLnR5cGUpO3JldHVybiBiP2EudHlwZT1iWzFdOmEucmVtb3ZlQXR0cmlidXRlKCJ0eXBlIiksYX1mdW5jdGlvbiB6YihhLGIpe2Zvcih2YXIgYyxkPTA7bnVsbCE9KGM9YVtkXSk7ZCsrKW0uX2RhdGEoYywiZ2xvYmFsRXZhbCIsIWJ8fG0uX2RhdGEoYltkXSwiZ2xvYmFsRXZhbCIpKX1mdW5jdGlvbiBBYihhLGIpe2lmKDE9PT1iLm5vZGVUeXBlJiZtLmhhc0RhdGEoYSkpe3ZhciBjLGQsZSxmPW0uX2RhdGEoYSksZz1tLl9kYXRhKGIsZiksaD1mLmV2ZW50cztpZihoKXtkZWxldGUgZy5oYW5kbGUsZy5ldmVudHM9e307Zm9yKGMgaW4gaClmb3IoZD0wLGU9aFtjXS5sZW5ndGg7ZT5kO2QrKyltLmV2ZW50LmFkZChiLGMsaFtjXVtkXSl9Zy5kYXRhJiYoZy5kYXRhPW0uZXh0ZW5kKHt9LGcuZGF0YSkpfX1mdW5jdGlvbiBCYihhLGIpe3ZhciBjLGQsZTtpZigxPT09Yi5ub2RlVHlwZSl7aWYoYz1iLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCksIWsubm9DbG9uZUV2ZW50JiZiW20uZXhwYW5kb10pe2U9bS5fZGF0YShiKTtmb3IoZCBpbiBlLmV2ZW50cyltLnJlbW92ZUV2ZW50KGIsZCxlLmhhbmRsZSk7Yi5yZW1vdmVBdHRyaWJ1dGUobS5leHBhbmRvKX0ic2NyaXB0Ij09PWMmJmIudGV4dCE9PWEudGV4dD8oeGIoYikudGV4dD1hLnRleHQseWIoYikpOiJvYmplY3QiPT09Yz8oYi5wYXJlbnROb2RlJiYoYi5vdXRlckhUTUw9YS5vdXRlckhUTUwpLGsuaHRtbDVDbG9uZSYmYS5pbm5lckhUTUwmJiFtLnRyaW0oYi5pbm5lckhUTUwpJiYoYi5pbm5lckhUTUw9YS5pbm5lckhUTUwpKToiaW5wdXQiPT09YyYmVy50ZXN0KGEudHlwZSk/KGIuZGVmYXVsdENoZWNrZWQ9Yi5jaGVja2VkPWEuY2hlY2tlZCxiLnZhbHVlIT09YS52YWx1ZSYmKGIudmFsdWU9YS52YWx1ZSkpOiJvcHRpb24iPT09Yz9iLmRlZmF1bHRTZWxlY3RlZD1iLnNlbGVjdGVkPWEuZGVmYXVsdFNlbGVjdGVkOigiaW5wdXQiPT09Y3x8InRleHRhcmVhIj09PWMpJiYoYi5kZWZhdWx0VmFsdWU9YS5kZWZhdWx0VmFsdWUpfX1tLmV4dGVuZCh7Y2xvbmU6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGUsZixnLGgsaT1tLmNvbnRhaW5zKGEub3duZXJEb2N1bWVudCxhKTtpZihrLmh0bWw1Q2xvbmV8fG0uaXNYTUxEb2MoYSl8fCFnYi50ZXN0KCI8IithLm5vZGVOYW1lKyI+Iik/Zj1hLmNsb25lTm9kZSghMCk6KHRiLmlubmVySFRNTD1hLm91dGVySFRNTCx0Yi5yZW1vdmVDaGlsZChmPXRiLmZpcnN0Q2hpbGQpKSwhKGsubm9DbG9uZUV2ZW50JiZrLm5vQ2xvbmVDaGVja2VkfHwxIT09YS5ub2RlVHlwZSYmMTEhPT1hLm5vZGVUeXBlfHxtLmlzWE1MRG9jKGEpKSlmb3IoZD11YihmKSxoPXViKGEpLGc9MDtudWxsIT0oZT1oW2ddKTsrK2cpZFtnXSYmQmIoZSxkW2ddKTtpZihiKWlmKGMpZm9yKGg9aHx8dWIoYSksZD1kfHx1YihmKSxnPTA7bnVsbCE9KGU9aFtnXSk7ZysrKUFiKGUsZFtnXSk7ZWxzZSBBYihhLGYpO3JldHVybiBkPXViKGYsInNjcmlwdCIpLGQubGVuZ3RoPjAmJnpiKGQsIWkmJnViKGEsInNjcmlwdCIpKSxkPWg9ZT1udWxsLGZ9LGJ1aWxkRnJhZ21lbnQ6ZnVuY3Rpb24oYSxiLGMsZCl7Zm9yKHZhciBlLGYsZyxoLGksaixsLG49YS5sZW5ndGgsbz1kYihiKSxwPVtdLHE9MDtuPnE7cSsrKWlmKGY9YVtxXSxmfHwwPT09ZilpZigib2JqZWN0Ij09PW0udHlwZShmKSltLm1lcmdlKHAsZi5ub2RlVHlwZT9bZl06Zik7ZWxzZSBpZihsYi50ZXN0KGYpKXtoPWh8fG8uYXBwZW5kQ2hpbGQoYi5jcmVhdGVFbGVtZW50KCJkaXYiKSksaT0oamIuZXhlYyhmKXx8WyIiLCIiXSlbMV0udG9Mb3dlckNhc2UoKSxsPXJiW2ldfHxyYi5fZGVmYXVsdCxoLmlubmVySFRNTD1sWzFdK2YucmVwbGFjZShpYiwiPCQxPjwvJDI+IikrbFsyXSxlPWxbMF07d2hpbGUoZS0tKWg9aC5sYXN0Q2hpbGQ7aWYoIWsubGVhZGluZ1doaXRlc3BhY2UmJmhiLnRlc3QoZikmJnAucHVzaChiLmNyZWF0ZVRleHROb2RlKGhiLmV4ZWMoZilbMF0pKSwhay50Ym9keSl7Zj0idGFibGUiIT09aXx8a2IudGVzdChmKT8iPHRhYmxlPiIhPT1sWzFdfHxrYi50ZXN0KGYpPzA6aDpoLmZpcnN0Q2hpbGQsZT1mJiZmLmNoaWxkTm9kZXMubGVuZ3RoO3doaWxlKGUtLSltLm5vZGVOYW1lKGo9Zi5jaGlsZE5vZGVzW2VdLCJ0Ym9keSIpJiYhai5jaGlsZE5vZGVzLmxlbmd0aCYmZi5yZW1vdmVDaGlsZChqKX1tLm1lcmdlKHAsaC5jaGlsZE5vZGVzKSxoLnRleHRDb250ZW50PSIiO3doaWxlKGguZmlyc3RDaGlsZCloLnJlbW92ZUNoaWxkKGguZmlyc3RDaGlsZCk7aD1vLmxhc3RDaGlsZH1lbHNlIHAucHVzaChiLmNyZWF0ZVRleHROb2RlKGYpKTtoJiZvLnJlbW92ZUNoaWxkKGgpLGsuYXBwZW5kQ2hlY2tlZHx8bS5ncmVwKHViKHAsImlucHV0IiksdmIpLHE9MDt3aGlsZShmPXBbcSsrXSlpZigoIWR8fC0xPT09bS5pbkFycmF5KGYsZCkpJiYoZz1tLmNvbnRhaW5zKGYub3duZXJEb2N1bWVudCxmKSxoPXViKG8uYXBwZW5kQ2hpbGQoZiksInNjcmlwdCIpLGcmJnpiKGgpLGMpKXtlPTA7d2hpbGUoZj1oW2UrK10pb2IudGVzdChmLnR5cGV8fCIiKSYmYy5wdXNoKGYpfXJldHVybiBoPW51bGwsb30sY2xlYW5EYXRhOmZ1bmN0aW9uKGEsYil7Zm9yKHZhciBkLGUsZixnLGg9MCxpPW0uZXhwYW5kbyxqPW0uY2FjaGUsbD1rLmRlbGV0ZUV4cGFuZG8sbj1tLmV2ZW50LnNwZWNpYWw7bnVsbCE9KGQ9YVtoXSk7aCsrKWlmKChifHxtLmFjY2VwdERhdGEoZCkpJiYoZj1kW2ldLGc9ZiYmaltmXSkpe2lmKGcuZXZlbnRzKWZvcihlIGluIGcuZXZlbnRzKW5bZV0/bS5ldmVudC5yZW1vdmUoZCxlKTptLnJlbW92ZUV2ZW50KGQsZSxnLmhhbmRsZSk7altmXSYmKGRlbGV0ZSBqW2ZdLGw/ZGVsZXRlIGRbaV06dHlwZW9mIGQucmVtb3ZlQXR0cmlidXRlIT09Sz9kLnJlbW92ZUF0dHJpYnV0ZShpKTpkW2ldPW51bGwsYy5wdXNoKGYpKX19fSksbS5mbi5leHRlbmQoe3RleHQ6ZnVuY3Rpb24oYSl7cmV0dXJuIFYodGhpcyxmdW5jdGlvbihhKXtyZXR1cm4gdm9pZCAwPT09YT9tLnRleHQodGhpcyk6dGhpcy5lbXB0eSgpLmFwcGVuZCgodGhpc1swXSYmdGhpc1swXS5vd25lckRvY3VtZW50fHx5KS5jcmVhdGVUZXh0Tm9kZShhKSl9LG51bGwsYSxhcmd1bWVudHMubGVuZ3RoKX0sYXBwZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZG9tTWFuaXAoYXJndW1lbnRzLGZ1bmN0aW9uKGEpe2lmKDE9PT10aGlzLm5vZGVUeXBlfHwxMT09PXRoaXMubm9kZVR5cGV8fDk9PT10aGlzLm5vZGVUeXBlKXt2YXIgYj13Yih0aGlzLGEpO2IuYXBwZW5kQ2hpbGQoYSl9fSl9LHByZXBlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsZnVuY3Rpb24oYSl7aWYoMT09PXRoaXMubm9kZVR5cGV8fDExPT09dGhpcy5ub2RlVHlwZXx8OT09PXRoaXMubm9kZVR5cGUpe3ZhciBiPXdiKHRoaXMsYSk7Yi5pbnNlcnRCZWZvcmUoYSxiLmZpcnN0Q2hpbGQpfX0pfSxiZWZvcmU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsZnVuY3Rpb24oYSl7dGhpcy5wYXJlbnROb2RlJiZ0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGEsdGhpcyl9KX0sYWZ0ZXI6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsZnVuY3Rpb24oYSl7dGhpcy5wYXJlbnROb2RlJiZ0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGEsdGhpcy5uZXh0U2libGluZyl9KX0scmVtb3ZlOmZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjLGQ9YT9tLmZpbHRlcihhLHRoaXMpOnRoaXMsZT0wO251bGwhPShjPWRbZV0pO2UrKylifHwxIT09Yy5ub2RlVHlwZXx8bS5jbGVhbkRhdGEodWIoYykpLGMucGFyZW50Tm9kZSYmKGImJm0uY29udGFpbnMoYy5vd25lckRvY3VtZW50LGMpJiZ6Yih1YihjLCJzY3JpcHQiKSksYy5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGMpKTtyZXR1cm4gdGhpc30sZW1wdHk6ZnVuY3Rpb24oKXtmb3IodmFyIGEsYj0wO251bGwhPShhPXRoaXNbYl0pO2IrKyl7MT09PWEubm9kZVR5cGUmJm0uY2xlYW5EYXRhKHViKGEsITEpKTt3aGlsZShhLmZpcnN0Q2hpbGQpYS5yZW1vdmVDaGlsZChhLmZpcnN0Q2hpbGQpO2Eub3B0aW9ucyYmbS5ub2RlTmFtZShhLCJzZWxlY3QiKSYmKGEub3B0aW9ucy5sZW5ndGg9MCl9cmV0dXJuIHRoaXN9LGNsb25lOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGE9bnVsbD09YT8hMTphLGI9bnVsbD09Yj9hOmIsdGhpcy5tYXAoZnVuY3Rpb24oKXtyZXR1cm4gbS5jbG9uZSh0aGlzLGEsYil9KX0saHRtbDpmdW5jdGlvbihhKXtyZXR1cm4gVih0aGlzLGZ1bmN0aW9uKGEpe3ZhciBiPXRoaXNbMF18fHt9LGM9MCxkPXRoaXMubGVuZ3RoO2lmKHZvaWQgMD09PWEpcmV0dXJuIDE9PT1iLm5vZGVUeXBlP2IuaW5uZXJIVE1MLnJlcGxhY2UoZmIsIiIpOnZvaWQgMDtpZighKCJzdHJpbmciIT10eXBlb2YgYXx8bWIudGVzdChhKXx8IWsuaHRtbFNlcmlhbGl6ZSYmZ2IudGVzdChhKXx8IWsubGVhZGluZ1doaXRlc3BhY2UmJmhiLnRlc3QoYSl8fHJiWyhqYi5leGVjKGEpfHxbIiIsIiJdKVsxXS50b0xvd2VyQ2FzZSgpXSkpe2E9YS5yZXBsYWNlKGliLCI8JDE+PC8kMj4iKTt0cnl7Zm9yKDtkPmM7YysrKWI9dGhpc1tjXXx8e30sMT09PWIubm9kZVR5cGUmJihtLmNsZWFuRGF0YSh1YihiLCExKSksYi5pbm5lckhUTUw9YSk7Yj0wfWNhdGNoKGUpe319YiYmdGhpcy5lbXB0eSgpLmFwcGVuZChhKX0sbnVsbCxhLGFyZ3VtZW50cy5sZW5ndGgpfSxyZXBsYWNlV2l0aDpmdW5jdGlvbigpe3ZhciBhPWFyZ3VtZW50c1swXTtyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsZnVuY3Rpb24oYil7YT10aGlzLnBhcmVudE5vZGUsbS5jbGVhbkRhdGEodWIodGhpcykpLGEmJmEucmVwbGFjZUNoaWxkKGIsdGhpcyl9KSxhJiYoYS5sZW5ndGh8fGEubm9kZVR5cGUpP3RoaXM6dGhpcy5yZW1vdmUoKX0sZGV0YWNoOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnJlbW92ZShhLCEwKX0sZG9tTWFuaXA6ZnVuY3Rpb24oYSxiKXthPWUuYXBwbHkoW10sYSk7dmFyIGMsZCxmLGcsaCxpLGo9MCxsPXRoaXMubGVuZ3RoLG49dGhpcyxvPWwtMSxwPWFbMF0scT1tLmlzRnVuY3Rpb24ocCk7aWYocXx8bD4xJiYic3RyaW5nIj09dHlwZW9mIHAmJiFrLmNoZWNrQ2xvbmUmJm5iLnRlc3QocCkpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihjKXt2YXIgZD1uLmVxKGMpO3EmJihhWzBdPXAuY2FsbCh0aGlzLGMsZC5odG1sKCkpKSxkLmRvbU1hbmlwKGEsYil9KTtpZihsJiYoaT1tLmJ1aWxkRnJhZ21lbnQoYSx0aGlzWzBdLm93bmVyRG9jdW1lbnQsITEsdGhpcyksYz1pLmZpcnN0Q2hpbGQsMT09PWkuY2hpbGROb2Rlcy5sZW5ndGgmJihpPWMpLGMpKXtmb3IoZz1tLm1hcCh1YihpLCJzY3JpcHQiKSx4YiksZj1nLmxlbmd0aDtsPmo7aisrKWQ9aSxqIT09byYmKGQ9bS5jbG9uZShkLCEwLCEwKSxmJiZtLm1lcmdlKGcsdWIoZCwic2NyaXB0IikpKSxiLmNhbGwodGhpc1tqXSxkLGopO2lmKGYpZm9yKGg9Z1tnLmxlbmd0aC0xXS5vd25lckRvY3VtZW50LG0ubWFwKGcseWIpLGo9MDtmPmo7aisrKWQ9Z1tqXSxvYi50ZXN0KGQudHlwZXx8IiIpJiYhbS5fZGF0YShkLCJnbG9iYWxFdmFsIikmJm0uY29udGFpbnMoaCxkKSYmKGQuc3JjP20uX2V2YWxVcmwmJm0uX2V2YWxVcmwoZC5zcmMpOm0uZ2xvYmFsRXZhbCgoZC50ZXh0fHxkLnRleHRDb250ZW50fHxkLmlubmVySFRNTHx8IiIpLnJlcGxhY2UocWIsIiIpKSk7aT1jPW51bGx9cmV0dXJuIHRoaXN9fSksbS5lYWNoKHthcHBlbmRUbzoiYXBwZW5kIixwcmVwZW5kVG86InByZXBlbmQiLGluc2VydEJlZm9yZToiYmVmb3JlIixpbnNlcnRBZnRlcjoiYWZ0ZXIiLHJlcGxhY2VBbGw6InJlcGxhY2VXaXRoIn0sZnVuY3Rpb24oYSxiKXttLmZuW2FdPWZ1bmN0aW9uKGEpe2Zvcih2YXIgYyxkPTAsZT1bXSxnPW0oYSksaD1nLmxlbmd0aC0xO2g+PWQ7ZCsrKWM9ZD09PWg/dGhpczp0aGlzLmNsb25lKCEwKSxtKGdbZF0pW2JdKGMpLGYuYXBwbHkoZSxjLmdldCgpKTtyZXR1cm4gdGhpcy5wdXNoU3RhY2soZSl9fSk7dmFyIENiLERiPXt9O2Z1bmN0aW9uIEViKGIsYyl7dmFyIGQsZT1tKGMuY3JlYXRlRWxlbWVudChiKSkuYXBwZW5kVG8oYy5ib2R5KSxmPWEuZ2V0RGVmYXVsdENvbXB1dGVkU3R5bGUmJihkPWEuZ2V0RGVmYXVsdENvbXB1dGVkU3R5bGUoZVswXSkpP2QuZGlzcGxheTptLmNzcyhlWzBdLCJkaXNwbGF5Iik7cmV0dXJuIGUuZGV0YWNoKCksZn1mdW5jdGlvbiBGYihhKXt2YXIgYj15LGM9RGJbYV07cmV0dXJuIGN8fChjPUViKGEsYiksIm5vbmUiIT09YyYmY3x8KENiPShDYnx8bSgiPGlmcmFtZSBmcmFtZWJvcmRlcj0nMCcgd2lkdGg9JzAnIGhlaWdodD0nMCcvPiIpKS5hcHBlbmRUbyhiLmRvY3VtZW50RWxlbWVudCksYj0oQ2JbMF0uY29udGVudFdpbmRvd3x8Q2JbMF0uY29udGVudERvY3VtZW50KS5kb2N1bWVudCxiLndyaXRlKCksYi5jbG9zZSgpLGM9RWIoYSxiKSxDYi5kZXRhY2goKSksRGJbYV09YyksY30hZnVuY3Rpb24oKXt2YXIgYTtrLnNocmlua1dyYXBCbG9ja3M9ZnVuY3Rpb24oKXtpZihudWxsIT1hKXJldHVybiBhO2E9ITE7dmFyIGIsYyxkO3JldHVybiBjPXkuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSxjJiZjLnN0eWxlPyhiPXkuY3JlYXRlRWxlbWVudCgiZGl2IiksZD15LmNyZWF0ZUVsZW1lbnQoImRpdiIpLGQuc3R5bGUuY3NzVGV4dD0icG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyOjA7d2lkdGg6MDtoZWlnaHQ6MDt0b3A6MDtsZWZ0Oi05OTk5cHgiLGMuYXBwZW5kQ2hpbGQoZCkuYXBwZW5kQ2hpbGQoYiksdHlwZW9mIGIuc3R5bGUuem9vbSE9PUsmJihiLnN0eWxlLmNzc1RleHQ9Ii13ZWJraXQtYm94LXNpemluZzpjb250ZW50LWJveDstbW96LWJveC1zaXppbmc6Y29udGVudC1ib3g7Ym94LXNpemluZzpjb250ZW50LWJveDtkaXNwbGF5OmJsb2NrO21hcmdpbjowO2JvcmRlcjowO3BhZGRpbmc6MXB4O3dpZHRoOjFweDt6b29tOjEiLGIuYXBwZW5kQ2hpbGQoeS5jcmVhdGVFbGVtZW50KCJkaXYiKSkuc3R5bGUud2lkdGg9IjVweCIsYT0zIT09Yi5vZmZzZXRXaWR0aCksYy5yZW1vdmVDaGlsZChkKSxhKTp2b2lkIDB9fSgpO3ZhciBHYj0vXm1hcmdpbi8sSGI9bmV3IFJlZ0V4cCgiXigiK1MrIikoPyFweClbYS16JV0rJCIsImkiKSxJYixKYixLYj0vXih0b3B8cmlnaHR8Ym90dG9tfGxlZnQpJC87YS5nZXRDb21wdXRlZFN0eWxlPyhJYj1mdW5jdGlvbihhKXtyZXR1cm4gYS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoYSxudWxsKX0sSmI9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGUsZixnLGg9YS5zdHlsZTtyZXR1cm4gYz1jfHxJYihhKSxnPWM/Yy5nZXRQcm9wZXJ0eVZhbHVlKGIpfHxjW2JdOnZvaWQgMCxjJiYoIiIhPT1nfHxtLmNvbnRhaW5zKGEub3duZXJEb2N1bWVudCxhKXx8KGc9bS5zdHlsZShhLGIpKSxIYi50ZXN0KGcpJiZHYi50ZXN0KGIpJiYoZD1oLndpZHRoLGU9aC5taW5XaWR0aCxmPWgubWF4V2lkdGgsaC5taW5XaWR0aD1oLm1heFdpZHRoPWgud2lkdGg9ZyxnPWMud2lkdGgsaC53aWR0aD1kLGgubWluV2lkdGg9ZSxoLm1heFdpZHRoPWYpKSx2b2lkIDA9PT1nP2c6ZysiIn0pOnkuZG9jdW1lbnRFbGVtZW50LmN1cnJlbnRTdHlsZSYmKEliPWZ1bmN0aW9uKGEpe3JldHVybiBhLmN1cnJlbnRTdHlsZX0sSmI9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGUsZixnLGg9YS5zdHlsZTtyZXR1cm4gYz1jfHxJYihhKSxnPWM/Y1tiXTp2b2lkIDAsbnVsbD09ZyYmaCYmaFtiXSYmKGc9aFtiXSksSGIudGVzdChnKSYmIUtiLnRlc3QoYikmJihkPWgubGVmdCxlPWEucnVudGltZVN0eWxlLGY9ZSYmZS5sZWZ0LGYmJihlLmxlZnQ9YS5jdXJyZW50U3R5bGUubGVmdCksaC5sZWZ0PSJmb250U2l6ZSI9PT1iPyIxZW0iOmcsZz1oLnBpeGVsTGVmdCsicHgiLGgubGVmdD1kLGYmJihlLmxlZnQ9ZikpLHZvaWQgMD09PWc/ZzpnKyIifHwiYXV0byJ9KTtmdW5jdGlvbiBMYihhLGIpe3JldHVybntnZXQ6ZnVuY3Rpb24oKXt2YXIgYz1hKCk7aWYobnVsbCE9YylyZXR1cm4gYz92b2lkIGRlbGV0ZSB0aGlzLmdldDoodGhpcy5nZXQ9YikuYXBwbHkodGhpcyxhcmd1bWVudHMpfX19IWZ1bmN0aW9uKCl7dmFyIGIsYyxkLGUsZixnLGg7aWYoYj15LmNyZWF0ZUVsZW1lbnQoImRpdiIpLGIuaW5uZXJIVE1MPSIgIDxsaW5rLz48dGFibGU+PC90YWJsZT48YSBocmVmPScvYSc+YTwvYT48aW5wdXQgdHlwZT0nY2hlY2tib3gnLz4iLGQ9Yi5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYSIpWzBdLGM9ZCYmZC5zdHlsZSl7Yy5jc3NUZXh0PSJmbG9hdDpsZWZ0O29wYWNpdHk6LjUiLGsub3BhY2l0eT0iMC41Ij09PWMub3BhY2l0eSxrLmNzc0Zsb2F0PSEhYy5jc3NGbG9hdCxiLnN0eWxlLmJhY2tncm91bmRDbGlwPSJjb250ZW50LWJveCIsYi5jbG9uZU5vZGUoITApLnN0eWxlLmJhY2tncm91bmRDbGlwPSIiLGsuY2xlYXJDbG9uZVN0eWxlPSJjb250ZW50LWJveCI9PT1iLnN0eWxlLmJhY2tncm91bmRDbGlwLGsuYm94U2l6aW5nPSIiPT09Yy5ib3hTaXppbmd8fCIiPT09Yy5Nb3pCb3hTaXppbmd8fCIiPT09Yy5XZWJraXRCb3hTaXppbmcsbS5leHRlbmQoayx7cmVsaWFibGVIaWRkZW5PZmZzZXRzOmZ1bmN0aW9uKCl7cmV0dXJuIG51bGw9PWcmJmkoKSxnfSxib3hTaXppbmdSZWxpYWJsZTpmdW5jdGlvbigpe3JldHVybiBudWxsPT1mJiZpKCksZn0scGl4ZWxQb3NpdGlvbjpmdW5jdGlvbigpe3JldHVybiBudWxsPT1lJiZpKCksZX0scmVsaWFibGVNYXJnaW5SaWdodDpmdW5jdGlvbigpe3JldHVybiBudWxsPT1oJiZpKCksaH19KTtmdW5jdGlvbiBpKCl7dmFyIGIsYyxkLGk7Yz15LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0sYyYmYy5zdHlsZSYmKGI9eS5jcmVhdGVFbGVtZW50KCJkaXYiKSxkPXkuY3JlYXRlRWxlbWVudCgiZGl2IiksZC5zdHlsZS5jc3NUZXh0PSJwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXI6MDt3aWR0aDowO2hlaWdodDowO3RvcDowO2xlZnQ6LTk5OTlweCIsYy5hcHBlbmRDaGlsZChkKS5hcHBlbmRDaGlsZChiKSxiLnN0eWxlLmNzc1RleHQ9Ii13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94Oy1tb3otYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveDtkaXNwbGF5OmJsb2NrO21hcmdpbi10b3A6MSU7dG9wOjElO2JvcmRlcjoxcHg7cGFkZGluZzoxcHg7d2lkdGg6NHB4O3Bvc2l0aW9uOmFic29sdXRlIixlPWY9ITEsaD0hMCxhLmdldENvbXB1dGVkU3R5bGUmJihlPSIxJSIhPT0oYS5nZXRDb21wdXRlZFN0eWxlKGIsbnVsbCl8fHt9KS50b3AsZj0iNHB4Ij09PShhLmdldENvbXB1dGVkU3R5bGUoYixudWxsKXx8e3dpZHRoOiI0cHgifSkud2lkdGgsaT1iLmFwcGVuZENoaWxkKHkuY3JlYXRlRWxlbWVudCgiZGl2IikpLGkuc3R5bGUuY3NzVGV4dD1iLnN0eWxlLmNzc1RleHQ9Ii13ZWJraXQtYm94LXNpemluZzpjb250ZW50LWJveDstbW96LWJveC1zaXppbmc6Y29udGVudC1ib3g7Ym94LXNpemluZzpjb250ZW50LWJveDtkaXNwbGF5OmJsb2NrO21hcmdpbjowO2JvcmRlcjowO3BhZGRpbmc6MCIsaS5zdHlsZS5tYXJnaW5SaWdodD1pLnN0eWxlLndpZHRoPSIwIixiLnN0eWxlLndpZHRoPSIxcHgiLGg9IXBhcnNlRmxvYXQoKGEuZ2V0Q29tcHV0ZWRTdHlsZShpLG51bGwpfHx7fSkubWFyZ2luUmlnaHQpKSxiLmlubmVySFRNTD0iPHRhYmxlPjx0cj48dGQ+PC90ZD48dGQ+dDwvdGQ+PC90cj48L3RhYmxlPiIsaT1iLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZCIpLGlbMF0uc3R5bGUuY3NzVGV4dD0ibWFyZ2luOjA7Ym9yZGVyOjA7cGFkZGluZzowO2Rpc3BsYXk6bm9uZSIsZz0wPT09aVswXS5vZmZzZXRIZWlnaHQsZyYmKGlbMF0uc3R5bGUuZGlzcGxheT0iIixpWzFdLnN0eWxlLmRpc3BsYXk9Im5vbmUiLGc9MD09PWlbMF0ub2Zmc2V0SGVpZ2h0KSxjLnJlbW92ZUNoaWxkKGQpKX19fSgpLG0uc3dhcD1mdW5jdGlvbihhLGIsYyxkKXt2YXIgZSxmLGc9e307Zm9yKGYgaW4gYilnW2ZdPWEuc3R5bGVbZl0sYS5zdHlsZVtmXT1iW2ZdO2U9Yy5hcHBseShhLGR8fFtdKTtmb3IoZiBpbiBiKWEuc3R5bGVbZl09Z1tmXTtyZXR1cm4gZX07dmFyIE1iPS9hbHBoYVwoW14pXSpcKS9pLE5iPS9vcGFjaXR5XHMqPVxzKihbXildKikvLE9iPS9eKG5vbmV8dGFibGUoPyEtY1tlYV0pLispLyxQYj1uZXcgUmVnRXhwKCJeKCIrUysiKSguKikkIiwiaSIpLFFiPW5ldyBSZWdFeHAoIl4oWystXSk9KCIrUysiKSIsImkiKSxSYj17cG9zaXRpb246ImFic29sdXRlIix2aXNpYmlsaXR5OiJoaWRkZW4iLGRpc3BsYXk6ImJsb2NrIn0sU2I9e2xldHRlclNwYWNpbmc6IjAiLGZvbnRXZWlnaHQ6IjQwMCJ9LFRiPVsiV2Via2l0IiwiTyIsIk1veiIsIm1zIl07ZnVuY3Rpb24gVWIoYSxiKXtpZihiIGluIGEpcmV0dXJuIGI7dmFyIGM9Yi5jaGFyQXQoMCkudG9VcHBlckNhc2UoKStiLnNsaWNlKDEpLGQ9YixlPVRiLmxlbmd0aDt3aGlsZShlLS0paWYoYj1UYltlXStjLGIgaW4gYSlyZXR1cm4gYjtyZXR1cm4gZH1mdW5jdGlvbiBWYihhLGIpe2Zvcih2YXIgYyxkLGUsZj1bXSxnPTAsaD1hLmxlbmd0aDtoPmc7ZysrKWQ9YVtnXSxkLnN0eWxlJiYoZltnXT1tLl9kYXRhKGQsIm9sZGRpc3BsYXkiKSxjPWQuc3R5bGUuZGlzcGxheSxiPyhmW2ddfHwibm9uZSIhPT1jfHwoZC5zdHlsZS5kaXNwbGF5PSIiKSwiIj09PWQuc3R5bGUuZGlzcGxheSYmVShkKSYmKGZbZ109bS5fZGF0YShkLCJvbGRkaXNwbGF5IixGYihkLm5vZGVOYW1lKSkpKTooZT1VKGQpLChjJiYibm9uZSIhPT1jfHwhZSkmJm0uX2RhdGEoZCwib2xkZGlzcGxheSIsZT9jOm0uY3NzKGQsImRpc3BsYXkiKSkpKTtmb3IoZz0wO2g+ZztnKyspZD1hW2ddLGQuc3R5bGUmJihiJiYibm9uZSIhPT1kLnN0eWxlLmRpc3BsYXkmJiIiIT09ZC5zdHlsZS5kaXNwbGF5fHwoZC5zdHlsZS5kaXNwbGF5PWI/ZltnXXx8IiI6Im5vbmUiKSk7cmV0dXJuIGF9ZnVuY3Rpb24gV2IoYSxiLGMpe3ZhciBkPVBiLmV4ZWMoYik7cmV0dXJuIGQ/TWF0aC5tYXgoMCxkWzFdLShjfHwwKSkrKGRbMl18fCJweCIpOmJ9ZnVuY3Rpb24gWGIoYSxiLGMsZCxlKXtmb3IodmFyIGY9Yz09PShkPyJib3JkZXIiOiJjb250ZW50Iik/NDoid2lkdGgiPT09Yj8xOjAsZz0wOzQ+ZjtmKz0yKSJtYXJnaW4iPT09YyYmKGcrPW0uY3NzKGEsYytUW2ZdLCEwLGUpKSxkPygiY29udGVudCI9PT1jJiYoZy09bS5jc3MoYSwicGFkZGluZyIrVFtmXSwhMCxlKSksIm1hcmdpbiIhPT1jJiYoZy09bS5jc3MoYSwiYm9yZGVyIitUW2ZdKyJXaWR0aCIsITAsZSkpKTooZys9bS5jc3MoYSwicGFkZGluZyIrVFtmXSwhMCxlKSwicGFkZGluZyIhPT1jJiYoZys9bS5jc3MoYSwiYm9yZGVyIitUW2ZdKyJXaWR0aCIsITAsZSkpKTtyZXR1cm4gZ31mdW5jdGlvbiBZYihhLGIsYyl7dmFyIGQ9ITAsZT0id2lkdGgiPT09Yj9hLm9mZnNldFdpZHRoOmEub2Zmc2V0SGVpZ2h0LGY9SWIoYSksZz1rLmJveFNpemluZyYmImJvcmRlci1ib3giPT09bS5jc3MoYSwiYm94U2l6aW5nIiwhMSxmKTtpZigwPj1lfHxudWxsPT1lKXtpZihlPUpiKGEsYixmKSwoMD5lfHxudWxsPT1lKSYmKGU9YS5zdHlsZVtiXSksSGIudGVzdChlKSlyZXR1cm4gZTtkPWcmJihrLmJveFNpemluZ1JlbGlhYmxlKCl8fGU9PT1hLnN0eWxlW2JdKSxlPXBhcnNlRmxvYXQoZSl8fDB9cmV0dXJuIGUrWGIoYSxiLGN8fChnPyJib3JkZXIiOiJjb250ZW50IiksZCxmKSsicHgifW0uZXh0ZW5kKHtjc3NIb29rczp7b3BhY2l0eTp7Z2V0OmZ1bmN0aW9uKGEsYil7aWYoYil7dmFyIGM9SmIoYSwib3BhY2l0eSIpO3JldHVybiIiPT09Yz8iMSI6Y319fX0sY3NzTnVtYmVyOntjb2x1bW5Db3VudDohMCxmaWxsT3BhY2l0eTohMCxmbGV4R3JvdzohMCxmbGV4U2hyaW5rOiEwLGZvbnRXZWlnaHQ6ITAsbGluZUhlaWdodDohMCxvcGFjaXR5OiEwLG9yZGVyOiEwLG9ycGhhbnM6ITAsd2lkb3dzOiEwLHpJbmRleDohMCx6b29tOiEwfSxjc3NQcm9wczp7ImZsb2F0IjprLmNzc0Zsb2F0PyJjc3NGbG9hdCI6InN0eWxlRmxvYXQifSxzdHlsZTpmdW5jdGlvbihhLGIsYyxkKXtpZihhJiYzIT09YS5ub2RlVHlwZSYmOCE9PWEubm9kZVR5cGUmJmEuc3R5bGUpe3ZhciBlLGYsZyxoPW0uY2FtZWxDYXNlKGIpLGk9YS5zdHlsZTtpZihiPW0uY3NzUHJvcHNbaF18fChtLmNzc1Byb3BzW2hdPVViKGksaCkpLGc9bS5jc3NIb29rc1tiXXx8bS5jc3NIb29rc1toXSx2b2lkIDA9PT1jKXJldHVybiBnJiYiZ2V0ImluIGcmJnZvaWQgMCE9PShlPWcuZ2V0KGEsITEsZCkpP2U6aVtiXTtpZihmPXR5cGVvZiBjLCJzdHJpbmciPT09ZiYmKGU9UWIuZXhlYyhjKSkmJihjPShlWzFdKzEpKmVbMl0rcGFyc2VGbG9hdChtLmNzcyhhLGIpKSxmPSJudW1iZXIiKSxudWxsIT1jJiZjPT09YyYmKCJudW1iZXIiIT09Znx8bS5jc3NOdW1iZXJbaF18fChjKz0icHgiKSxrLmNsZWFyQ2xvbmVTdHlsZXx8IiIhPT1jfHwwIT09Yi5pbmRleE9mKCJiYWNrZ3JvdW5kIil8fChpW2JdPSJpbmhlcml0IiksIShnJiYic2V0ImluIGcmJnZvaWQgMD09PShjPWcuc2V0KGEsYyxkKSkpKSl0cnl7aVtiXT1jfWNhdGNoKGope319fSxjc3M6ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGUsZixnLGg9bS5jYW1lbENhc2UoYik7cmV0dXJuIGI9bS5jc3NQcm9wc1toXXx8KG0uY3NzUHJvcHNbaF09VWIoYS5zdHlsZSxoKSksZz1tLmNzc0hvb2tzW2JdfHxtLmNzc0hvb2tzW2hdLGcmJiJnZXQiaW4gZyYmKGY9Zy5nZXQoYSwhMCxjKSksdm9pZCAwPT09ZiYmKGY9SmIoYSxiLGQpKSwibm9ybWFsIj09PWYmJmIgaW4gU2ImJihmPVNiW2JdKSwiIj09PWN8fGM/KGU9cGFyc2VGbG9hdChmKSxjPT09ITB8fG0uaXNOdW1lcmljKGUpP2V8fDA6Zik6Zn19KSxtLmVhY2goWyJoZWlnaHQiLCJ3aWR0aCJdLGZ1bmN0aW9uKGEsYil7bS5jc3NIb29rc1tiXT17Z2V0OmZ1bmN0aW9uKGEsYyxkKXtyZXR1cm4gYz9PYi50ZXN0KG0uY3NzKGEsImRpc3BsYXkiKSkmJjA9PT1hLm9mZnNldFdpZHRoP20uc3dhcChhLFJiLGZ1bmN0aW9uKCl7cmV0dXJuIFliKGEsYixkKX0pOlliKGEsYixkKTp2b2lkIDB9LHNldDpmdW5jdGlvbihhLGMsZCl7dmFyIGU9ZCYmSWIoYSk7cmV0dXJuIFdiKGEsYyxkP1hiKGEsYixkLGsuYm94U2l6aW5nJiYiYm9yZGVyLWJveCI9PT1tLmNzcyhhLCJib3hTaXppbmciLCExLGUpLGUpOjApfX19KSxrLm9wYWNpdHl8fChtLmNzc0hvb2tzLm9wYWNpdHk9e2dldDpmdW5jdGlvbihhLGIpe3JldHVybiBOYi50ZXN0KChiJiZhLmN1cnJlbnRTdHlsZT9hLmN1cnJlbnRTdHlsZS5maWx0ZXI6YS5zdHlsZS5maWx0ZXIpfHwiIik/LjAxKnBhcnNlRmxvYXQoUmVnRXhwLiQxKSsiIjpiPyIxIjoiIn0sc2V0OmZ1bmN0aW9uKGEsYil7dmFyIGM9YS5zdHlsZSxkPWEuY3VycmVudFN0eWxlLGU9bS5pc051bWVyaWMoYik/ImFscGhhKG9wYWNpdHk9IisxMDAqYisiKSI6IiIsZj1kJiZkLmZpbHRlcnx8Yy5maWx0ZXJ8fCIiO2Muem9vbT0xLChiPj0xfHwiIj09PWIpJiYiIj09PW0udHJpbShmLnJlcGxhY2UoTWIsIiIpKSYmYy5yZW1vdmVBdHRyaWJ1dGUmJihjLnJlbW92ZUF0dHJpYnV0ZSgiZmlsdGVyIiksIiI9PT1ifHxkJiYhZC5maWx0ZXIpfHwoYy5maWx0ZXI9TWIudGVzdChmKT9mLnJlcGxhY2UoTWIsZSk6ZisiICIrZSl9fSksbS5jc3NIb29rcy5tYXJnaW5SaWdodD1MYihrLnJlbGlhYmxlTWFyZ2luUmlnaHQsZnVuY3Rpb24oYSxiKXtyZXR1cm4gYj9tLnN3YXAoYSx7ZGlzcGxheToiaW5saW5lLWJsb2NrIn0sSmIsW2EsIm1hcmdpblJpZ2h0Il0pOnZvaWQgMH0pLG0uZWFjaCh7bWFyZ2luOiIiLHBhZGRpbmc6IiIsYm9yZGVyOiJXaWR0aCJ9LGZ1bmN0aW9uKGEsYil7bS5jc3NIb29rc1thK2JdPXtleHBhbmQ6ZnVuY3Rpb24oYyl7Zm9yKHZhciBkPTAsZT17fSxmPSJzdHJpbmciPT10eXBlb2YgYz9jLnNwbGl0KCIgIik6W2NdOzQ+ZDtkKyspZVthK1RbZF0rYl09ZltkXXx8ZltkLTJdfHxmWzBdO3JldHVybiBlfX0sR2IudGVzdChhKXx8KG0uY3NzSG9va3NbYStiXS5zZXQ9V2IpfSksbS5mbi5leHRlbmQoe2NzczpmdW5jdGlvbihhLGIpe3JldHVybiBWKHRoaXMsZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGUsZj17fSxnPTA7aWYobS5pc0FycmF5KGIpKXtmb3IoZD1JYihhKSxlPWIubGVuZ3RoO2U+ZztnKyspZltiW2ddXT1tLmNzcyhhLGJbZ10sITEsZCk7cmV0dXJuIGZ9cmV0dXJuIHZvaWQgMCE9PWM/bS5zdHlsZShhLGIsYyk6bS5jc3MoYSxiKX0sYSxiLGFyZ3VtZW50cy5sZW5ndGg+MSl9LHNob3c6ZnVuY3Rpb24oKXtyZXR1cm4gVmIodGhpcywhMCl9LGhpZGU6ZnVuY3Rpb24oKXtyZXR1cm4gVmIodGhpcyl9LHRvZ2dsZTpmdW5jdGlvbihhKXtyZXR1cm4iYm9vbGVhbiI9PXR5cGVvZiBhP2E/dGhpcy5zaG93KCk6dGhpcy5oaWRlKCk6dGhpcy5lYWNoKGZ1bmN0aW9uKCl7VSh0aGlzKT9tKHRoaXMpLnNob3coKTptKHRoaXMpLmhpZGUoKX0pfX0pO2Z1bmN0aW9uIFpiKGEsYixjLGQsZSl7cmV0dXJuIG5ldyBaYi5wcm90b3R5cGUuaW5pdChhLGIsYyxkLGUpfW0uVHdlZW49WmIsWmIucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpaYixpbml0OmZ1bmN0aW9uKGEsYixjLGQsZSxmKXt0aGlzLmVsZW09YSx0aGlzLnByb3A9Yyx0aGlzLmVhc2luZz1lfHwic3dpbmciLHRoaXMub3B0aW9ucz1iLHRoaXMuc3RhcnQ9dGhpcy5ub3c9dGhpcy5jdXIoKSx0aGlzLmVuZD1kLHRoaXMudW5pdD1mfHwobS5jc3NOdW1iZXJbY10/IiI6InB4IikKfSxjdXI6ZnVuY3Rpb24oKXt2YXIgYT1aYi5wcm9wSG9va3NbdGhpcy5wcm9wXTtyZXR1cm4gYSYmYS5nZXQ/YS5nZXQodGhpcyk6WmIucHJvcEhvb2tzLl9kZWZhdWx0LmdldCh0aGlzKX0scnVuOmZ1bmN0aW9uKGEpe3ZhciBiLGM9WmIucHJvcEhvb2tzW3RoaXMucHJvcF07cmV0dXJuIHRoaXMucG9zPWI9dGhpcy5vcHRpb25zLmR1cmF0aW9uP20uZWFzaW5nW3RoaXMuZWFzaW5nXShhLHRoaXMub3B0aW9ucy5kdXJhdGlvbiphLDAsMSx0aGlzLm9wdGlvbnMuZHVyYXRpb24pOmEsdGhpcy5ub3c9KHRoaXMuZW5kLXRoaXMuc3RhcnQpKmIrdGhpcy5zdGFydCx0aGlzLm9wdGlvbnMuc3RlcCYmdGhpcy5vcHRpb25zLnN0ZXAuY2FsbCh0aGlzLmVsZW0sdGhpcy5ub3csdGhpcyksYyYmYy5zZXQ/Yy5zZXQodGhpcyk6WmIucHJvcEhvb2tzLl9kZWZhdWx0LnNldCh0aGlzKSx0aGlzfX0sWmIucHJvdG90eXBlLmluaXQucHJvdG90eXBlPVpiLnByb3RvdHlwZSxaYi5wcm9wSG9va3M9e19kZWZhdWx0OntnZXQ6ZnVuY3Rpb24oYSl7dmFyIGI7cmV0dXJuIG51bGw9PWEuZWxlbVthLnByb3BdfHxhLmVsZW0uc3R5bGUmJm51bGwhPWEuZWxlbS5zdHlsZVthLnByb3BdPyhiPW0uY3NzKGEuZWxlbSxhLnByb3AsIiIpLGImJiJhdXRvIiE9PWI/YjowKTphLmVsZW1bYS5wcm9wXX0sc2V0OmZ1bmN0aW9uKGEpe20uZnguc3RlcFthLnByb3BdP20uZnguc3RlcFthLnByb3BdKGEpOmEuZWxlbS5zdHlsZSYmKG51bGwhPWEuZWxlbS5zdHlsZVttLmNzc1Byb3BzW2EucHJvcF1dfHxtLmNzc0hvb2tzW2EucHJvcF0pP20uc3R5bGUoYS5lbGVtLGEucHJvcCxhLm5vdythLnVuaXQpOmEuZWxlbVthLnByb3BdPWEubm93fX19LFpiLnByb3BIb29rcy5zY3JvbGxUb3A9WmIucHJvcEhvb2tzLnNjcm9sbExlZnQ9e3NldDpmdW5jdGlvbihhKXthLmVsZW0ubm9kZVR5cGUmJmEuZWxlbS5wYXJlbnROb2RlJiYoYS5lbGVtW2EucHJvcF09YS5ub3cpfX0sbS5lYXNpbmc9e2xpbmVhcjpmdW5jdGlvbihhKXtyZXR1cm4gYX0sc3dpbmc6ZnVuY3Rpb24oYSl7cmV0dXJuLjUtTWF0aC5jb3MoYSpNYXRoLlBJKS8yfX0sbS5meD1aYi5wcm90b3R5cGUuaW5pdCxtLmZ4LnN0ZXA9e307dmFyICRiLF9iLGFjPS9eKD86dG9nZ2xlfHNob3d8aGlkZSkkLyxiYz1uZXcgUmVnRXhwKCJeKD86KFsrLV0pPXwpKCIrUysiKShbYS16JV0qKSQiLCJpIiksY2M9L3F1ZXVlSG9va3MkLyxkYz1baWNdLGVjPXsiKiI6W2Z1bmN0aW9uKGEsYil7dmFyIGM9dGhpcy5jcmVhdGVUd2VlbihhLGIpLGQ9Yy5jdXIoKSxlPWJjLmV4ZWMoYiksZj1lJiZlWzNdfHwobS5jc3NOdW1iZXJbYV0/IiI6InB4IiksZz0obS5jc3NOdW1iZXJbYV18fCJweCIhPT1mJiYrZCkmJmJjLmV4ZWMobS5jc3MoYy5lbGVtLGEpKSxoPTEsaT0yMDtpZihnJiZnWzNdIT09Zil7Zj1mfHxnWzNdLGU9ZXx8W10sZz0rZHx8MTtkbyBoPWh8fCIuNSIsZy89aCxtLnN0eWxlKGMuZWxlbSxhLGcrZik7d2hpbGUoaCE9PShoPWMuY3VyKCkvZCkmJjEhPT1oJiYtLWkpfXJldHVybiBlJiYoZz1jLnN0YXJ0PStnfHwrZHx8MCxjLnVuaXQ9ZixjLmVuZD1lWzFdP2crKGVbMV0rMSkqZVsyXTorZVsyXSksY31dfTtmdW5jdGlvbiBmYygpe3JldHVybiBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7JGI9dm9pZCAwfSksJGI9bS5ub3coKX1mdW5jdGlvbiBnYyhhLGIpe3ZhciBjLGQ9e2hlaWdodDphfSxlPTA7Zm9yKGI9Yj8xOjA7ND5lO2UrPTItYiljPVRbZV0sZFsibWFyZ2luIitjXT1kWyJwYWRkaW5nIitjXT1hO3JldHVybiBiJiYoZC5vcGFjaXR5PWQud2lkdGg9YSksZH1mdW5jdGlvbiBoYyhhLGIsYyl7Zm9yKHZhciBkLGU9KGVjW2JdfHxbXSkuY29uY2F0KGVjWyIqIl0pLGY9MCxnPWUubGVuZ3RoO2c+ZjtmKyspaWYoZD1lW2ZdLmNhbGwoYyxiLGEpKXJldHVybiBkfWZ1bmN0aW9uIGljKGEsYixjKXt2YXIgZCxlLGYsZyxoLGksaixsLG49dGhpcyxvPXt9LHA9YS5zdHlsZSxxPWEubm9kZVR5cGUmJlUoYSkscj1tLl9kYXRhKGEsImZ4c2hvdyIpO2MucXVldWV8fChoPW0uX3F1ZXVlSG9va3MoYSwiZngiKSxudWxsPT1oLnVucXVldWVkJiYoaC51bnF1ZXVlZD0wLGk9aC5lbXB0eS5maXJlLGguZW1wdHkuZmlyZT1mdW5jdGlvbigpe2gudW5xdWV1ZWR8fGkoKX0pLGgudW5xdWV1ZWQrKyxuLmFsd2F5cyhmdW5jdGlvbigpe24uYWx3YXlzKGZ1bmN0aW9uKCl7aC51bnF1ZXVlZC0tLG0ucXVldWUoYSwiZngiKS5sZW5ndGh8fGguZW1wdHkuZmlyZSgpfSl9KSksMT09PWEubm9kZVR5cGUmJigiaGVpZ2h0ImluIGJ8fCJ3aWR0aCJpbiBiKSYmKGMub3ZlcmZsb3c9W3Aub3ZlcmZsb3cscC5vdmVyZmxvd1gscC5vdmVyZmxvd1ldLGo9bS5jc3MoYSwiZGlzcGxheSIpLGw9Im5vbmUiPT09aj9tLl9kYXRhKGEsIm9sZGRpc3BsYXkiKXx8RmIoYS5ub2RlTmFtZSk6aiwiaW5saW5lIj09PWwmJiJub25lIj09PW0uY3NzKGEsImZsb2F0IikmJihrLmlubGluZUJsb2NrTmVlZHNMYXlvdXQmJiJpbmxpbmUiIT09RmIoYS5ub2RlTmFtZSk/cC56b29tPTE6cC5kaXNwbGF5PSJpbmxpbmUtYmxvY2siKSksYy5vdmVyZmxvdyYmKHAub3ZlcmZsb3c9ImhpZGRlbiIsay5zaHJpbmtXcmFwQmxvY2tzKCl8fG4uYWx3YXlzKGZ1bmN0aW9uKCl7cC5vdmVyZmxvdz1jLm92ZXJmbG93WzBdLHAub3ZlcmZsb3dYPWMub3ZlcmZsb3dbMV0scC5vdmVyZmxvd1k9Yy5vdmVyZmxvd1syXX0pKTtmb3IoZCBpbiBiKWlmKGU9YltkXSxhYy5leGVjKGUpKXtpZihkZWxldGUgYltkXSxmPWZ8fCJ0b2dnbGUiPT09ZSxlPT09KHE/ImhpZGUiOiJzaG93Iikpe2lmKCJzaG93IiE9PWV8fCFyfHx2b2lkIDA9PT1yW2RdKWNvbnRpbnVlO3E9ITB9b1tkXT1yJiZyW2RdfHxtLnN0eWxlKGEsZCl9ZWxzZSBqPXZvaWQgMDtpZihtLmlzRW1wdHlPYmplY3QobykpImlubGluZSI9PT0oIm5vbmUiPT09aj9GYihhLm5vZGVOYW1lKTpqKSYmKHAuZGlzcGxheT1qKTtlbHNle3I/ImhpZGRlbiJpbiByJiYocT1yLmhpZGRlbik6cj1tLl9kYXRhKGEsImZ4c2hvdyIse30pLGYmJihyLmhpZGRlbj0hcSkscT9tKGEpLnNob3coKTpuLmRvbmUoZnVuY3Rpb24oKXttKGEpLmhpZGUoKX0pLG4uZG9uZShmdW5jdGlvbigpe3ZhciBiO20uX3JlbW92ZURhdGEoYSwiZnhzaG93Iik7Zm9yKGIgaW4gbyltLnN0eWxlKGEsYixvW2JdKX0pO2ZvcihkIGluIG8pZz1oYyhxP3JbZF06MCxkLG4pLGQgaW4gcnx8KHJbZF09Zy5zdGFydCxxJiYoZy5lbmQ9Zy5zdGFydCxnLnN0YXJ0PSJ3aWR0aCI9PT1kfHwiaGVpZ2h0Ij09PWQ/MTowKSl9fWZ1bmN0aW9uIGpjKGEsYil7dmFyIGMsZCxlLGYsZztmb3IoYyBpbiBhKWlmKGQ9bS5jYW1lbENhc2UoYyksZT1iW2RdLGY9YVtjXSxtLmlzQXJyYXkoZikmJihlPWZbMV0sZj1hW2NdPWZbMF0pLGMhPT1kJiYoYVtkXT1mLGRlbGV0ZSBhW2NdKSxnPW0uY3NzSG9va3NbZF0sZyYmImV4cGFuZCJpbiBnKXtmPWcuZXhwYW5kKGYpLGRlbGV0ZSBhW2RdO2ZvcihjIGluIGYpYyBpbiBhfHwoYVtjXT1mW2NdLGJbY109ZSl9ZWxzZSBiW2RdPWV9ZnVuY3Rpb24ga2MoYSxiLGMpe3ZhciBkLGUsZj0wLGc9ZGMubGVuZ3RoLGg9bS5EZWZlcnJlZCgpLmFsd2F5cyhmdW5jdGlvbigpe2RlbGV0ZSBpLmVsZW19KSxpPWZ1bmN0aW9uKCl7aWYoZSlyZXR1cm4hMTtmb3IodmFyIGI9JGJ8fGZjKCksYz1NYXRoLm1heCgwLGouc3RhcnRUaW1lK2ouZHVyYXRpb24tYiksZD1jL2ouZHVyYXRpb258fDAsZj0xLWQsZz0wLGk9ai50d2VlbnMubGVuZ3RoO2k+ZztnKyspai50d2VlbnNbZ10ucnVuKGYpO3JldHVybiBoLm5vdGlmeVdpdGgoYSxbaixmLGNdKSwxPmYmJmk/YzooaC5yZXNvbHZlV2l0aChhLFtqXSksITEpfSxqPWgucHJvbWlzZSh7ZWxlbTphLHByb3BzOm0uZXh0ZW5kKHt9LGIpLG9wdHM6bS5leHRlbmQoITAse3NwZWNpYWxFYXNpbmc6e319LGMpLG9yaWdpbmFsUHJvcGVydGllczpiLG9yaWdpbmFsT3B0aW9uczpjLHN0YXJ0VGltZTokYnx8ZmMoKSxkdXJhdGlvbjpjLmR1cmF0aW9uLHR3ZWVuczpbXSxjcmVhdGVUd2VlbjpmdW5jdGlvbihiLGMpe3ZhciBkPW0uVHdlZW4oYSxqLm9wdHMsYixjLGoub3B0cy5zcGVjaWFsRWFzaW5nW2JdfHxqLm9wdHMuZWFzaW5nKTtyZXR1cm4gai50d2VlbnMucHVzaChkKSxkfSxzdG9wOmZ1bmN0aW9uKGIpe3ZhciBjPTAsZD1iP2oudHdlZW5zLmxlbmd0aDowO2lmKGUpcmV0dXJuIHRoaXM7Zm9yKGU9ITA7ZD5jO2MrKylqLnR3ZWVuc1tjXS5ydW4oMSk7cmV0dXJuIGI/aC5yZXNvbHZlV2l0aChhLFtqLGJdKTpoLnJlamVjdFdpdGgoYSxbaixiXSksdGhpc319KSxrPWoucHJvcHM7Zm9yKGpjKGssai5vcHRzLnNwZWNpYWxFYXNpbmcpO2c+ZjtmKyspaWYoZD1kY1tmXS5jYWxsKGosYSxrLGoub3B0cykpcmV0dXJuIGQ7cmV0dXJuIG0ubWFwKGssaGMsaiksbS5pc0Z1bmN0aW9uKGoub3B0cy5zdGFydCkmJmoub3B0cy5zdGFydC5jYWxsKGEsaiksbS5meC50aW1lcihtLmV4dGVuZChpLHtlbGVtOmEsYW5pbTpqLHF1ZXVlOmoub3B0cy5xdWV1ZX0pKSxqLnByb2dyZXNzKGoub3B0cy5wcm9ncmVzcykuZG9uZShqLm9wdHMuZG9uZSxqLm9wdHMuY29tcGxldGUpLmZhaWwoai5vcHRzLmZhaWwpLmFsd2F5cyhqLm9wdHMuYWx3YXlzKX1tLkFuaW1hdGlvbj1tLmV4dGVuZChrYyx7dHdlZW5lcjpmdW5jdGlvbihhLGIpe20uaXNGdW5jdGlvbihhKT8oYj1hLGE9WyIqIl0pOmE9YS5zcGxpdCgiICIpO2Zvcih2YXIgYyxkPTAsZT1hLmxlbmd0aDtlPmQ7ZCsrKWM9YVtkXSxlY1tjXT1lY1tjXXx8W10sZWNbY10udW5zaGlmdChiKX0scHJlZmlsdGVyOmZ1bmN0aW9uKGEsYil7Yj9kYy51bnNoaWZ0KGEpOmRjLnB1c2goYSl9fSksbS5zcGVlZD1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSYmIm9iamVjdCI9PXR5cGVvZiBhP20uZXh0ZW5kKHt9LGEpOntjb21wbGV0ZTpjfHwhYyYmYnx8bS5pc0Z1bmN0aW9uKGEpJiZhLGR1cmF0aW9uOmEsZWFzaW5nOmMmJmJ8fGImJiFtLmlzRnVuY3Rpb24oYikmJmJ9O3JldHVybiBkLmR1cmF0aW9uPW0uZngub2ZmPzA6Im51bWJlciI9PXR5cGVvZiBkLmR1cmF0aW9uP2QuZHVyYXRpb246ZC5kdXJhdGlvbiBpbiBtLmZ4LnNwZWVkcz9tLmZ4LnNwZWVkc1tkLmR1cmF0aW9uXTptLmZ4LnNwZWVkcy5fZGVmYXVsdCwobnVsbD09ZC5xdWV1ZXx8ZC5xdWV1ZT09PSEwKSYmKGQucXVldWU9ImZ4IiksZC5vbGQ9ZC5jb21wbGV0ZSxkLmNvbXBsZXRlPWZ1bmN0aW9uKCl7bS5pc0Z1bmN0aW9uKGQub2xkKSYmZC5vbGQuY2FsbCh0aGlzKSxkLnF1ZXVlJiZtLmRlcXVldWUodGhpcyxkLnF1ZXVlKX0sZH0sbS5mbi5leHRlbmQoe2ZhZGVUbzpmdW5jdGlvbihhLGIsYyxkKXtyZXR1cm4gdGhpcy5maWx0ZXIoVSkuY3NzKCJvcGFjaXR5IiwwKS5zaG93KCkuZW5kKCkuYW5pbWF0ZSh7b3BhY2l0eTpifSxhLGMsZCl9LGFuaW1hdGU6ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9bS5pc0VtcHR5T2JqZWN0KGEpLGY9bS5zcGVlZChiLGMsZCksZz1mdW5jdGlvbigpe3ZhciBiPWtjKHRoaXMsbS5leHRlbmQoe30sYSksZik7KGV8fG0uX2RhdGEodGhpcywiZmluaXNoIikpJiZiLnN0b3AoITApfTtyZXR1cm4gZy5maW5pc2g9ZyxlfHxmLnF1ZXVlPT09ITE/dGhpcy5lYWNoKGcpOnRoaXMucXVldWUoZi5xdWV1ZSxnKX0sc3RvcDpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9ZnVuY3Rpb24oYSl7dmFyIGI9YS5zdG9wO2RlbGV0ZSBhLnN0b3AsYihjKX07cmV0dXJuInN0cmluZyIhPXR5cGVvZiBhJiYoYz1iLGI9YSxhPXZvaWQgMCksYiYmYSE9PSExJiZ0aGlzLnF1ZXVlKGF8fCJmeCIsW10pLHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBiPSEwLGU9bnVsbCE9YSYmYSsicXVldWVIb29rcyIsZj1tLnRpbWVycyxnPW0uX2RhdGEodGhpcyk7aWYoZSlnW2VdJiZnW2VdLnN0b3AmJmQoZ1tlXSk7ZWxzZSBmb3IoZSBpbiBnKWdbZV0mJmdbZV0uc3RvcCYmY2MudGVzdChlKSYmZChnW2VdKTtmb3IoZT1mLmxlbmd0aDtlLS07KWZbZV0uZWxlbSE9PXRoaXN8fG51bGwhPWEmJmZbZV0ucXVldWUhPT1hfHwoZltlXS5hbmltLnN0b3AoYyksYj0hMSxmLnNwbGljZShlLDEpKTsoYnx8IWMpJiZtLmRlcXVldWUodGhpcyxhKX0pfSxmaW5pc2g6ZnVuY3Rpb24oYSl7cmV0dXJuIGEhPT0hMSYmKGE9YXx8ImZ4IiksdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGIsYz1tLl9kYXRhKHRoaXMpLGQ9Y1thKyJxdWV1ZSJdLGU9Y1thKyJxdWV1ZUhvb2tzIl0sZj1tLnRpbWVycyxnPWQ/ZC5sZW5ndGg6MDtmb3IoYy5maW5pc2g9ITAsbS5xdWV1ZSh0aGlzLGEsW10pLGUmJmUuc3RvcCYmZS5zdG9wLmNhbGwodGhpcywhMCksYj1mLmxlbmd0aDtiLS07KWZbYl0uZWxlbT09PXRoaXMmJmZbYl0ucXVldWU9PT1hJiYoZltiXS5hbmltLnN0b3AoITApLGYuc3BsaWNlKGIsMSkpO2ZvcihiPTA7Zz5iO2IrKylkW2JdJiZkW2JdLmZpbmlzaCYmZFtiXS5maW5pc2guY2FsbCh0aGlzKTtkZWxldGUgYy5maW5pc2h9KX19KSxtLmVhY2goWyJ0b2dnbGUiLCJzaG93IiwiaGlkZSJdLGZ1bmN0aW9uKGEsYil7dmFyIGM9bS5mbltiXTttLmZuW2JdPWZ1bmN0aW9uKGEsZCxlKXtyZXR1cm4gbnVsbD09YXx8ImJvb2xlYW4iPT10eXBlb2YgYT9jLmFwcGx5KHRoaXMsYXJndW1lbnRzKTp0aGlzLmFuaW1hdGUoZ2MoYiwhMCksYSxkLGUpfX0pLG0uZWFjaCh7c2xpZGVEb3duOmdjKCJzaG93Iiksc2xpZGVVcDpnYygiaGlkZSIpLHNsaWRlVG9nZ2xlOmdjKCJ0b2dnbGUiKSxmYWRlSW46e29wYWNpdHk6InNob3cifSxmYWRlT3V0OntvcGFjaXR5OiJoaWRlIn0sZmFkZVRvZ2dsZTp7b3BhY2l0eToidG9nZ2xlIn19LGZ1bmN0aW9uKGEsYil7bS5mblthXT1mdW5jdGlvbihhLGMsZCl7cmV0dXJuIHRoaXMuYW5pbWF0ZShiLGEsYyxkKX19KSxtLnRpbWVycz1bXSxtLmZ4LnRpY2s9ZnVuY3Rpb24oKXt2YXIgYSxiPW0udGltZXJzLGM9MDtmb3IoJGI9bS5ub3coKTtjPGIubGVuZ3RoO2MrKylhPWJbY10sYSgpfHxiW2NdIT09YXx8Yi5zcGxpY2UoYy0tLDEpO2IubGVuZ3RofHxtLmZ4LnN0b3AoKSwkYj12b2lkIDB9LG0uZngudGltZXI9ZnVuY3Rpb24oYSl7bS50aW1lcnMucHVzaChhKSxhKCk/bS5meC5zdGFydCgpOm0udGltZXJzLnBvcCgpfSxtLmZ4LmludGVydmFsPTEzLG0uZnguc3RhcnQ9ZnVuY3Rpb24oKXtfYnx8KF9iPXNldEludGVydmFsKG0uZngudGljayxtLmZ4LmludGVydmFsKSl9LG0uZnguc3RvcD1mdW5jdGlvbigpe2NsZWFySW50ZXJ2YWwoX2IpLF9iPW51bGx9LG0uZnguc3BlZWRzPXtzbG93OjYwMCxmYXN0OjIwMCxfZGVmYXVsdDo0MDB9LG0uZm4uZGVsYXk9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYT1tLmZ4P20uZnguc3BlZWRzW2FdfHxhOmEsYj1ifHwiZngiLHRoaXMucXVldWUoYixmdW5jdGlvbihiLGMpe3ZhciBkPXNldFRpbWVvdXQoYixhKTtjLnN0b3A9ZnVuY3Rpb24oKXtjbGVhclRpbWVvdXQoZCl9fSl9LGZ1bmN0aW9uKCl7dmFyIGEsYixjLGQsZTtiPXkuY3JlYXRlRWxlbWVudCgiZGl2IiksYi5zZXRBdHRyaWJ1dGUoImNsYXNzTmFtZSIsInQiKSxiLmlubmVySFRNTD0iICA8bGluay8+PHRhYmxlPjwvdGFibGU+PGEgaHJlZj0nL2EnPmE8L2E+PGlucHV0IHR5cGU9J2NoZWNrYm94Jy8+IixkPWIuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImEiKVswXSxjPXkuY3JlYXRlRWxlbWVudCgic2VsZWN0IiksZT1jLmFwcGVuZENoaWxkKHkuY3JlYXRlRWxlbWVudCgib3B0aW9uIikpLGE9Yi5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaW5wdXQiKVswXSxkLnN0eWxlLmNzc1RleHQ9InRvcDoxcHgiLGsuZ2V0U2V0QXR0cmlidXRlPSJ0IiE9PWIuY2xhc3NOYW1lLGsuc3R5bGU9L3RvcC8udGVzdChkLmdldEF0dHJpYnV0ZSgic3R5bGUiKSksay5ocmVmTm9ybWFsaXplZD0iL2EiPT09ZC5nZXRBdHRyaWJ1dGUoImhyZWYiKSxrLmNoZWNrT249ISFhLnZhbHVlLGsub3B0U2VsZWN0ZWQ9ZS5zZWxlY3RlZCxrLmVuY3R5cGU9ISF5LmNyZWF0ZUVsZW1lbnQoImZvcm0iKS5lbmN0eXBlLGMuZGlzYWJsZWQ9ITAsay5vcHREaXNhYmxlZD0hZS5kaXNhYmxlZCxhPXkuY3JlYXRlRWxlbWVudCgiaW5wdXQiKSxhLnNldEF0dHJpYnV0ZSgidmFsdWUiLCIiKSxrLmlucHV0PSIiPT09YS5nZXRBdHRyaWJ1dGUoInZhbHVlIiksYS52YWx1ZT0idCIsYS5zZXRBdHRyaWJ1dGUoInR5cGUiLCJyYWRpbyIpLGsucmFkaW9WYWx1ZT0idCI9PT1hLnZhbHVlfSgpO3ZhciBsYz0vXHIvZzttLmZuLmV4dGVuZCh7dmFsOmZ1bmN0aW9uKGEpe3ZhciBiLGMsZCxlPXRoaXNbMF07e2lmKGFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGQ9bS5pc0Z1bmN0aW9uKGEpLHRoaXMuZWFjaChmdW5jdGlvbihjKXt2YXIgZTsxPT09dGhpcy5ub2RlVHlwZSYmKGU9ZD9hLmNhbGwodGhpcyxjLG0odGhpcykudmFsKCkpOmEsbnVsbD09ZT9lPSIiOiJudW1iZXIiPT10eXBlb2YgZT9lKz0iIjptLmlzQXJyYXkoZSkmJihlPW0ubWFwKGUsZnVuY3Rpb24oYSl7cmV0dXJuIG51bGw9PWE/IiI6YSsiIn0pKSxiPW0udmFsSG9va3NbdGhpcy50eXBlXXx8bS52YWxIb29rc1t0aGlzLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCldLGImJiJzZXQiaW4gYiYmdm9pZCAwIT09Yi5zZXQodGhpcyxlLCJ2YWx1ZSIpfHwodGhpcy52YWx1ZT1lKSl9KTtpZihlKXJldHVybiBiPW0udmFsSG9va3NbZS50eXBlXXx8bS52YWxIb29rc1tlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCldLGImJiJnZXQiaW4gYiYmdm9pZCAwIT09KGM9Yi5nZXQoZSwidmFsdWUiKSk/YzooYz1lLnZhbHVlLCJzdHJpbmciPT10eXBlb2YgYz9jLnJlcGxhY2UobGMsIiIpOm51bGw9PWM/IiI6Yyl9fX0pLG0uZXh0ZW5kKHt2YWxIb29rczp7b3B0aW9uOntnZXQ6ZnVuY3Rpb24oYSl7dmFyIGI9bS5maW5kLmF0dHIoYSwidmFsdWUiKTtyZXR1cm4gbnVsbCE9Yj9iOm0udHJpbShtLnRleHQoYSkpfX0sc2VsZWN0OntnZXQ6ZnVuY3Rpb24oYSl7Zm9yKHZhciBiLGMsZD1hLm9wdGlvbnMsZT1hLnNlbGVjdGVkSW5kZXgsZj0ic2VsZWN0LW9uZSI9PT1hLnR5cGV8fDA+ZSxnPWY/bnVsbDpbXSxoPWY/ZSsxOmQubGVuZ3RoLGk9MD5lP2g6Zj9lOjA7aD5pO2krKylpZihjPWRbaV0sISghYy5zZWxlY3RlZCYmaSE9PWV8fChrLm9wdERpc2FibGVkP2MuZGlzYWJsZWQ6bnVsbCE9PWMuZ2V0QXR0cmlidXRlKCJkaXNhYmxlZCIpKXx8Yy5wYXJlbnROb2RlLmRpc2FibGVkJiZtLm5vZGVOYW1lKGMucGFyZW50Tm9kZSwib3B0Z3JvdXAiKSkpe2lmKGI9bShjKS52YWwoKSxmKXJldHVybiBiO2cucHVzaChiKX1yZXR1cm4gZ30sc2V0OmZ1bmN0aW9uKGEsYil7dmFyIGMsZCxlPWEub3B0aW9ucyxmPW0ubWFrZUFycmF5KGIpLGc9ZS5sZW5ndGg7d2hpbGUoZy0tKWlmKGQ9ZVtnXSxtLmluQXJyYXkobS52YWxIb29rcy5vcHRpb24uZ2V0KGQpLGYpPj0wKXRyeXtkLnNlbGVjdGVkPWM9ITB9Y2F0Y2goaCl7ZC5zY3JvbGxIZWlnaHR9ZWxzZSBkLnNlbGVjdGVkPSExO3JldHVybiBjfHwoYS5zZWxlY3RlZEluZGV4PS0xKSxlfX19fSksbS5lYWNoKFsicmFkaW8iLCJjaGVja2JveCJdLGZ1bmN0aW9uKCl7bS52YWxIb29rc1t0aGlzXT17c2V0OmZ1bmN0aW9uKGEsYil7cmV0dXJuIG0uaXNBcnJheShiKT9hLmNoZWNrZWQ9bS5pbkFycmF5KG0oYSkudmFsKCksYik+PTA6dm9pZCAwfX0say5jaGVja09ufHwobS52YWxIb29rc1t0aGlzXS5nZXQ9ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGw9PT1hLmdldEF0dHJpYnV0ZSgidmFsdWUiKT8ib24iOmEudmFsdWV9KX0pO3ZhciBtYyxuYyxvYz1tLmV4cHIuYXR0ckhhbmRsZSxwYz0vXig/OmNoZWNrZWR8c2VsZWN0ZWQpJC9pLHFjPWsuZ2V0U2V0QXR0cmlidXRlLHJjPWsuaW5wdXQ7bS5mbi5leHRlbmQoe2F0dHI6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gVih0aGlzLG0uYXR0cixhLGIsYXJndW1lbnRzLmxlbmd0aD4xKX0scmVtb3ZlQXR0cjpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7bS5yZW1vdmVBdHRyKHRoaXMsYSl9KX19KSxtLmV4dGVuZCh7YXR0cjpmdW5jdGlvbihhLGIsYyl7dmFyIGQsZSxmPWEubm9kZVR5cGU7aWYoYSYmMyE9PWYmJjghPT1mJiYyIT09ZilyZXR1cm4gdHlwZW9mIGEuZ2V0QXR0cmlidXRlPT09Sz9tLnByb3AoYSxiLGMpOigxPT09ZiYmbS5pc1hNTERvYyhhKXx8KGI9Yi50b0xvd2VyQ2FzZSgpLGQ9bS5hdHRySG9va3NbYl18fChtLmV4cHIubWF0Y2guYm9vbC50ZXN0KGIpP25jOm1jKSksdm9pZCAwPT09Yz9kJiYiZ2V0ImluIGQmJm51bGwhPT0oZT1kLmdldChhLGIpKT9lOihlPW0uZmluZC5hdHRyKGEsYiksbnVsbD09ZT92b2lkIDA6ZSk6bnVsbCE9PWM/ZCYmInNldCJpbiBkJiZ2b2lkIDAhPT0oZT1kLnNldChhLGMsYikpP2U6KGEuc2V0QXR0cmlidXRlKGIsYysiIiksYyk6dm9pZCBtLnJlbW92ZUF0dHIoYSxiKSl9LHJlbW92ZUF0dHI6ZnVuY3Rpb24oYSxiKXt2YXIgYyxkLGU9MCxmPWImJmIubWF0Y2goRSk7aWYoZiYmMT09PWEubm9kZVR5cGUpd2hpbGUoYz1mW2UrK10pZD1tLnByb3BGaXhbY118fGMsbS5leHByLm1hdGNoLmJvb2wudGVzdChjKT9yYyYmcWN8fCFwYy50ZXN0KGMpP2FbZF09ITE6YVttLmNhbWVsQ2FzZSgiZGVmYXVsdC0iK2MpXT1hW2RdPSExOm0uYXR0cihhLGMsIiIpLGEucmVtb3ZlQXR0cmlidXRlKHFjP2M6ZCl9LGF0dHJIb29rczp7dHlwZTp7c2V0OmZ1bmN0aW9uKGEsYil7aWYoIWsucmFkaW9WYWx1ZSYmInJhZGlvIj09PWImJm0ubm9kZU5hbWUoYSwiaW5wdXQiKSl7dmFyIGM9YS52YWx1ZTtyZXR1cm4gYS5zZXRBdHRyaWJ1dGUoInR5cGUiLGIpLGMmJihhLnZhbHVlPWMpLGJ9fX19fSksbmM9e3NldDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGI9PT0hMT9tLnJlbW92ZUF0dHIoYSxjKTpyYyYmcWN8fCFwYy50ZXN0KGMpP2Euc2V0QXR0cmlidXRlKCFxYyYmbS5wcm9wRml4W2NdfHxjLGMpOmFbbS5jYW1lbENhc2UoImRlZmF1bHQtIitjKV09YVtjXT0hMCxjfX0sbS5lYWNoKG0uZXhwci5tYXRjaC5ib29sLnNvdXJjZS5tYXRjaCgvXHcrL2cpLGZ1bmN0aW9uKGEsYil7dmFyIGM9b2NbYl18fG0uZmluZC5hdHRyO29jW2JdPXJjJiZxY3x8IXBjLnRlc3QoYik/ZnVuY3Rpb24oYSxiLGQpe3ZhciBlLGY7cmV0dXJuIGR8fChmPW9jW2JdLG9jW2JdPWUsZT1udWxsIT1jKGEsYixkKT9iLnRvTG93ZXJDYXNlKCk6bnVsbCxvY1tiXT1mKSxlfTpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGM/dm9pZCAwOmFbbS5jYW1lbENhc2UoImRlZmF1bHQtIitiKV0/Yi50b0xvd2VyQ2FzZSgpOm51bGx9fSkscmMmJnFjfHwobS5hdHRySG9va3MudmFsdWU9e3NldDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIG0ubm9kZU5hbWUoYSwiaW5wdXQiKT92b2lkKGEuZGVmYXVsdFZhbHVlPWIpOm1jJiZtYy5zZXQoYSxiLGMpfX0pLHFjfHwobWM9e3NldDpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YS5nZXRBdHRyaWJ1dGVOb2RlKGMpO3JldHVybiBkfHxhLnNldEF0dHJpYnV0ZU5vZGUoZD1hLm93bmVyRG9jdW1lbnQuY3JlYXRlQXR0cmlidXRlKGMpKSxkLnZhbHVlPWIrPSIiLCJ2YWx1ZSI9PT1jfHxiPT09YS5nZXRBdHRyaWJ1dGUoYyk/Yjp2b2lkIDB9fSxvYy5pZD1vYy5uYW1lPW9jLmNvb3Jkcz1mdW5jdGlvbihhLGIsYyl7dmFyIGQ7cmV0dXJuIGM/dm9pZCAwOihkPWEuZ2V0QXR0cmlidXRlTm9kZShiKSkmJiIiIT09ZC52YWx1ZT9kLnZhbHVlOm51bGx9LG0udmFsSG9va3MuYnV0dG9uPXtnZXQ6ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLmdldEF0dHJpYnV0ZU5vZGUoYik7cmV0dXJuIGMmJmMuc3BlY2lmaWVkP2MudmFsdWU6dm9pZCAwfSxzZXQ6bWMuc2V0fSxtLmF0dHJIb29rcy5jb250ZW50ZWRpdGFibGU9e3NldDpmdW5jdGlvbihhLGIsYyl7bWMuc2V0KGEsIiI9PT1iPyExOmIsYyl9fSxtLmVhY2goWyJ3aWR0aCIsImhlaWdodCJdLGZ1bmN0aW9uKGEsYil7bS5hdHRySG9va3NbYl09e3NldDpmdW5jdGlvbihhLGMpe3JldHVybiIiPT09Yz8oYS5zZXRBdHRyaWJ1dGUoYiwiYXV0byIpLGMpOnZvaWQgMH19fSkpLGsuc3R5bGV8fChtLmF0dHJIb29rcy5zdHlsZT17Z2V0OmZ1bmN0aW9uKGEpe3JldHVybiBhLnN0eWxlLmNzc1RleHR8fHZvaWQgMH0sc2V0OmZ1bmN0aW9uKGEsYil7cmV0dXJuIGEuc3R5bGUuY3NzVGV4dD1iKyIifX0pO3ZhciBzYz0vXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYXxidXR0b258b2JqZWN0KSQvaSx0Yz0vXig/OmF8YXJlYSkkL2k7bS5mbi5leHRlbmQoe3Byb3A6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gVih0aGlzLG0ucHJvcCxhLGIsYXJndW1lbnRzLmxlbmd0aD4xKX0scmVtb3ZlUHJvcDpmdW5jdGlvbihhKXtyZXR1cm4gYT1tLnByb3BGaXhbYV18fGEsdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dHJ5e3RoaXNbYV09dm9pZCAwLGRlbGV0ZSB0aGlzW2FdfWNhdGNoKGIpe319KX19KSxtLmV4dGVuZCh7cHJvcEZpeDp7ImZvciI6Imh0bWxGb3IiLCJjbGFzcyI6ImNsYXNzTmFtZSJ9LHByb3A6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGUsZixnPWEubm9kZVR5cGU7aWYoYSYmMyE9PWcmJjghPT1nJiYyIT09ZylyZXR1cm4gZj0xIT09Z3x8IW0uaXNYTUxEb2MoYSksZiYmKGI9bS5wcm9wRml4W2JdfHxiLGU9bS5wcm9wSG9va3NbYl0pLHZvaWQgMCE9PWM/ZSYmInNldCJpbiBlJiZ2b2lkIDAhPT0oZD1lLnNldChhLGMsYikpP2Q6YVtiXT1jOmUmJiJnZXQiaW4gZSYmbnVsbCE9PShkPWUuZ2V0KGEsYikpP2Q6YVtiXX0scHJvcEhvb2tzOnt0YWJJbmRleDp7Z2V0OmZ1bmN0aW9uKGEpe3ZhciBiPW0uZmluZC5hdHRyKGEsInRhYmluZGV4Iik7cmV0dXJuIGI/cGFyc2VJbnQoYiwxMCk6c2MudGVzdChhLm5vZGVOYW1lKXx8dGMudGVzdChhLm5vZGVOYW1lKSYmYS5ocmVmPzA6LTF9fX19KSxrLmhyZWZOb3JtYWxpemVkfHxtLmVhY2goWyJocmVmIiwic3JjIl0sZnVuY3Rpb24oYSxiKXttLnByb3BIb29rc1tiXT17Z2V0OmZ1bmN0aW9uKGEpe3JldHVybiBhLmdldEF0dHJpYnV0ZShiLDQpfX19KSxrLm9wdFNlbGVjdGVkfHwobS5wcm9wSG9va3Muc2VsZWN0ZWQ9e2dldDpmdW5jdGlvbihhKXt2YXIgYj1hLnBhcmVudE5vZGU7cmV0dXJuIGImJihiLnNlbGVjdGVkSW5kZXgsYi5wYXJlbnROb2RlJiZiLnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleCksbnVsbH19KSxtLmVhY2goWyJ0YWJJbmRleCIsInJlYWRPbmx5IiwibWF4TGVuZ3RoIiwiY2VsbFNwYWNpbmciLCJjZWxsUGFkZGluZyIsInJvd1NwYW4iLCJjb2xTcGFuIiwidXNlTWFwIiwiZnJhbWVCb3JkZXIiLCJjb250ZW50RWRpdGFibGUiXSxmdW5jdGlvbigpe20ucHJvcEZpeFt0aGlzLnRvTG93ZXJDYXNlKCldPXRoaXN9KSxrLmVuY3R5cGV8fChtLnByb3BGaXguZW5jdHlwZT0iZW5jb2RpbmciKTt2YXIgdWM9L1tcdFxyXG5cZl0vZzttLmZuLmV4dGVuZCh7YWRkQ2xhc3M6ZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGUsZixnLGg9MCxpPXRoaXMubGVuZ3RoLGo9InN0cmluZyI9PXR5cGVvZiBhJiZhO2lmKG0uaXNGdW5jdGlvbihhKSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGIpe20odGhpcykuYWRkQ2xhc3MoYS5jYWxsKHRoaXMsYix0aGlzLmNsYXNzTmFtZSkpfSk7aWYoailmb3IoYj0oYXx8IiIpLm1hdGNoKEUpfHxbXTtpPmg7aCsrKWlmKGM9dGhpc1toXSxkPTE9PT1jLm5vZGVUeXBlJiYoYy5jbGFzc05hbWU/KCIgIitjLmNsYXNzTmFtZSsiICIpLnJlcGxhY2UodWMsIiAiKToiICIpKXtmPTA7d2hpbGUoZT1iW2YrK10pZC5pbmRleE9mKCIgIitlKyIgIik8MCYmKGQrPWUrIiAiKTtnPW0udHJpbShkKSxjLmNsYXNzTmFtZSE9PWcmJihjLmNsYXNzTmFtZT1nKX1yZXR1cm4gdGhpc30scmVtb3ZlQ2xhc3M6ZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGUsZixnLGg9MCxpPXRoaXMubGVuZ3RoLGo9MD09PWFyZ3VtZW50cy5sZW5ndGh8fCJzdHJpbmciPT10eXBlb2YgYSYmYTtpZihtLmlzRnVuY3Rpb24oYSkpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihiKXttKHRoaXMpLnJlbW92ZUNsYXNzKGEuY2FsbCh0aGlzLGIsdGhpcy5jbGFzc05hbWUpKX0pO2lmKGopZm9yKGI9KGF8fCIiKS5tYXRjaChFKXx8W107aT5oO2grKylpZihjPXRoaXNbaF0sZD0xPT09Yy5ub2RlVHlwZSYmKGMuY2xhc3NOYW1lPygiICIrYy5jbGFzc05hbWUrIiAiKS5yZXBsYWNlKHVjLCIgIik6IiIpKXtmPTA7d2hpbGUoZT1iW2YrK10pd2hpbGUoZC5pbmRleE9mKCIgIitlKyIgIik+PTApZD1kLnJlcGxhY2UoIiAiK2UrIiAiLCIgIik7Zz1hP20udHJpbShkKToiIixjLmNsYXNzTmFtZSE9PWcmJihjLmNsYXNzTmFtZT1nKX1yZXR1cm4gdGhpc30sdG9nZ2xlQ2xhc3M6ZnVuY3Rpb24oYSxiKXt2YXIgYz10eXBlb2YgYTtyZXR1cm4iYm9vbGVhbiI9PXR5cGVvZiBiJiYic3RyaW5nIj09PWM/Yj90aGlzLmFkZENsYXNzKGEpOnRoaXMucmVtb3ZlQ2xhc3MoYSk6dGhpcy5lYWNoKG0uaXNGdW5jdGlvbihhKT9mdW5jdGlvbihjKXttKHRoaXMpLnRvZ2dsZUNsYXNzKGEuY2FsbCh0aGlzLGMsdGhpcy5jbGFzc05hbWUsYiksYil9OmZ1bmN0aW9uKCl7aWYoInN0cmluZyI9PT1jKXt2YXIgYixkPTAsZT1tKHRoaXMpLGY9YS5tYXRjaChFKXx8W107d2hpbGUoYj1mW2QrK10pZS5oYXNDbGFzcyhiKT9lLnJlbW92ZUNsYXNzKGIpOmUuYWRkQ2xhc3MoYil9ZWxzZShjPT09S3x8ImJvb2xlYW4iPT09YykmJih0aGlzLmNsYXNzTmFtZSYmbS5fZGF0YSh0aGlzLCJfX2NsYXNzTmFtZV9fIix0aGlzLmNsYXNzTmFtZSksdGhpcy5jbGFzc05hbWU9dGhpcy5jbGFzc05hbWV8fGE9PT0hMT8iIjptLl9kYXRhKHRoaXMsIl9fY2xhc3NOYW1lX18iKXx8IiIpfSl9LGhhc0NsYXNzOmZ1bmN0aW9uKGEpe2Zvcih2YXIgYj0iICIrYSsiICIsYz0wLGQ9dGhpcy5sZW5ndGg7ZD5jO2MrKylpZigxPT09dGhpc1tjXS5ub2RlVHlwZSYmKCIgIit0aGlzW2NdLmNsYXNzTmFtZSsiICIpLnJlcGxhY2UodWMsIiAiKS5pbmRleE9mKGIpPj0wKXJldHVybiEwO3JldHVybiExfX0pLG0uZWFjaCgiYmx1ciBmb2N1cyBmb2N1c2luIGZvY3Vzb3V0IGxvYWQgcmVzaXplIHNjcm9sbCB1bmxvYWQgY2xpY2sgZGJsY2xpY2sgbW91c2Vkb3duIG1vdXNldXAgbW91c2Vtb3ZlIG1vdXNlb3ZlciBtb3VzZW91dCBtb3VzZWVudGVyIG1vdXNlbGVhdmUgY2hhbmdlIHNlbGVjdCBzdWJtaXQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBlcnJvciBjb250ZXh0bWVudSIuc3BsaXQoIiAiKSxmdW5jdGlvbihhLGIpe20uZm5bYl09ZnVuY3Rpb24oYSxjKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD4wP3RoaXMub24oYixudWxsLGEsYyk6dGhpcy50cmlnZ2VyKGIpfX0pLG0uZm4uZXh0ZW5kKHtob3ZlcjpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLm1vdXNlZW50ZXIoYSkubW91c2VsZWF2ZShifHxhKX0sYmluZDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIHRoaXMub24oYSxudWxsLGIsYyl9LHVuYmluZDpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLm9mZihhLG51bGwsYil9LGRlbGVnYXRlOmZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiB0aGlzLm9uKGIsYSxjLGQpfSx1bmRlbGVnYXRlOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/dGhpcy5vZmYoYSwiKioiKTp0aGlzLm9mZihiLGF8fCIqKiIsYyl9fSk7dmFyIHZjPW0ubm93KCksd2M9L1w/Lyx4Yz0vKCwpfChcW3x7KXwofXxdKXwiKD86W14iXFxcclxuXXxcXFsiXFxcL2JmbnJ0XXxcXHVbXGRhLWZBLUZdezR9KSoiXHMqOj98dHJ1ZXxmYWxzZXxudWxsfC0/KD8hMFxkKVxkKyg/OlwuXGQrfCkoPzpbZUVdWystXT9cZCt8KS9nO20ucGFyc2VKU09OPWZ1bmN0aW9uKGIpe2lmKGEuSlNPTiYmYS5KU09OLnBhcnNlKXJldHVybiBhLkpTT04ucGFyc2UoYisiIik7dmFyIGMsZD1udWxsLGU9bS50cmltKGIrIiIpO3JldHVybiBlJiYhbS50cmltKGUucmVwbGFjZSh4YyxmdW5jdGlvbihhLGIsZSxmKXtyZXR1cm4gYyYmYiYmKGQ9MCksMD09PWQ/YTooYz1lfHxiLGQrPSFmLSFlLCIiKX0pKT9GdW5jdGlvbigicmV0dXJuICIrZSkoKTptLmVycm9yKCJJbnZhbGlkIEpTT046ICIrYil9LG0ucGFyc2VYTUw9ZnVuY3Rpb24oYil7dmFyIGMsZDtpZighYnx8InN0cmluZyIhPXR5cGVvZiBiKXJldHVybiBudWxsO3RyeXthLkRPTVBhcnNlcj8oZD1uZXcgRE9NUGFyc2VyLGM9ZC5wYXJzZUZyb21TdHJpbmcoYiwidGV4dC94bWwiKSk6KGM9bmV3IEFjdGl2ZVhPYmplY3QoIk1pY3Jvc29mdC5YTUxET00iKSxjLmFzeW5jPSJmYWxzZSIsYy5sb2FkWE1MKGIpKX1jYXRjaChlKXtjPXZvaWQgMH1yZXR1cm4gYyYmYy5kb2N1bWVudEVsZW1lbnQmJiFjLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJwYXJzZXJlcnJvciIpLmxlbmd0aHx8bS5lcnJvcigiSW52YWxpZCBYTUw6ICIrYiksY307dmFyIHljLHpjLEFjPS8jLiokLyxCYz0vKFs/Jl0pXz1bXiZdKi8sQ2M9L14oLio/KTpbIFx0XSooW15cclxuXSopXHI/JC9nbSxEYz0vXig/OmFib3V0fGFwcHxhcHAtc3RvcmFnZXwuKy1leHRlbnNpb258ZmlsZXxyZXN8d2lkZ2V0KTokLyxFYz0vXig/OkdFVHxIRUFEKSQvLEZjPS9eXC9cLy8sR2M9L14oW1x3ListXSs6KSg/OlwvXC8oPzpbXlwvPyNdKkB8KShbXlwvPyM6XSopKD86OihcZCspfCl8KS8sSGM9e30sSWM9e30sSmM9IiovIi5jb25jYXQoIioiKTt0cnl7emM9bG9jYXRpb24uaHJlZn1jYXRjaChLYyl7emM9eS5jcmVhdGVFbGVtZW50KCJhIiksemMuaHJlZj0iIix6Yz16Yy5ocmVmfXljPUdjLmV4ZWMoemMudG9Mb3dlckNhc2UoKSl8fFtdO2Z1bmN0aW9uIExjKGEpe3JldHVybiBmdW5jdGlvbihiLGMpeyJzdHJpbmciIT10eXBlb2YgYiYmKGM9YixiPSIqIik7dmFyIGQsZT0wLGY9Yi50b0xvd2VyQ2FzZSgpLm1hdGNoKEUpfHxbXTtpZihtLmlzRnVuY3Rpb24oYykpd2hpbGUoZD1mW2UrK10pIisiPT09ZC5jaGFyQXQoMCk/KGQ9ZC5zbGljZSgxKXx8IioiLChhW2RdPWFbZF18fFtdKS51bnNoaWZ0KGMpKTooYVtkXT1hW2RdfHxbXSkucHVzaChjKX19ZnVuY3Rpb24gTWMoYSxiLGMsZCl7dmFyIGU9e30sZj1hPT09SWM7ZnVuY3Rpb24gZyhoKXt2YXIgaTtyZXR1cm4gZVtoXT0hMCxtLmVhY2goYVtoXXx8W10sZnVuY3Rpb24oYSxoKXt2YXIgaj1oKGIsYyxkKTtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIGp8fGZ8fGVbal0/Zj8hKGk9aik6dm9pZCAwOihiLmRhdGFUeXBlcy51bnNoaWZ0KGopLGcoaiksITEpfSksaX1yZXR1cm4gZyhiLmRhdGFUeXBlc1swXSl8fCFlWyIqIl0mJmcoIioiKX1mdW5jdGlvbiBOYyhhLGIpe3ZhciBjLGQsZT1tLmFqYXhTZXR0aW5ncy5mbGF0T3B0aW9uc3x8e307Zm9yKGQgaW4gYil2b2lkIDAhPT1iW2RdJiYoKGVbZF0/YTpjfHwoYz17fSkpW2RdPWJbZF0pO3JldHVybiBjJiZtLmV4dGVuZCghMCxhLGMpLGF9ZnVuY3Rpb24gT2MoYSxiLGMpe3ZhciBkLGUsZixnLGg9YS5jb250ZW50cyxpPWEuZGF0YVR5cGVzO3doaWxlKCIqIj09PWlbMF0paS5zaGlmdCgpLHZvaWQgMD09PWUmJihlPWEubWltZVR5cGV8fGIuZ2V0UmVzcG9uc2VIZWFkZXIoIkNvbnRlbnQtVHlwZSIpKTtpZihlKWZvcihnIGluIGgpaWYoaFtnXSYmaFtnXS50ZXN0KGUpKXtpLnVuc2hpZnQoZyk7YnJlYWt9aWYoaVswXWluIGMpZj1pWzBdO2Vsc2V7Zm9yKGcgaW4gYyl7aWYoIWlbMF18fGEuY29udmVydGVyc1tnKyIgIitpWzBdXSl7Zj1nO2JyZWFrfWR8fChkPWcpfWY9Znx8ZH1yZXR1cm4gZj8oZiE9PWlbMF0mJmkudW5zaGlmdChmKSxjW2ZdKTp2b2lkIDB9ZnVuY3Rpb24gUGMoYSxiLGMsZCl7dmFyIGUsZixnLGgsaSxqPXt9LGs9YS5kYXRhVHlwZXMuc2xpY2UoKTtpZihrWzFdKWZvcihnIGluIGEuY29udmVydGVycylqW2cudG9Mb3dlckNhc2UoKV09YS5jb252ZXJ0ZXJzW2ddO2Y9ay5zaGlmdCgpO3doaWxlKGYpaWYoYS5yZXNwb25zZUZpZWxkc1tmXSYmKGNbYS5yZXNwb25zZUZpZWxkc1tmXV09YiksIWkmJmQmJmEuZGF0YUZpbHRlciYmKGI9YS5kYXRhRmlsdGVyKGIsYS5kYXRhVHlwZSkpLGk9ZixmPWsuc2hpZnQoKSlpZigiKiI9PT1mKWY9aTtlbHNlIGlmKCIqIiE9PWkmJmkhPT1mKXtpZihnPWpbaSsiICIrZl18fGpbIiogIitmXSwhZylmb3IoZSBpbiBqKWlmKGg9ZS5zcGxpdCgiICIpLGhbMV09PT1mJiYoZz1qW2krIiAiK2hbMF1dfHxqWyIqICIraFswXV0pKXtnPT09ITA/Zz1qW2VdOmpbZV0hPT0hMCYmKGY9aFswXSxrLnVuc2hpZnQoaFsxXSkpO2JyZWFrfWlmKGchPT0hMClpZihnJiZhWyJ0aHJvd3MiXSliPWcoYik7ZWxzZSB0cnl7Yj1nKGIpfWNhdGNoKGwpe3JldHVybntzdGF0ZToicGFyc2VyZXJyb3IiLGVycm9yOmc/bDoiTm8gY29udmVyc2lvbiBmcm9tICIraSsiIHRvICIrZn19fXJldHVybntzdGF0ZToic3VjY2VzcyIsZGF0YTpifX1tLmV4dGVuZCh7YWN0aXZlOjAsbGFzdE1vZGlmaWVkOnt9LGV0YWc6e30sYWpheFNldHRpbmdzOnt1cmw6emMsdHlwZToiR0VUIixpc0xvY2FsOkRjLnRlc3QoeWNbMV0pLGdsb2JhbDohMCxwcm9jZXNzRGF0YTohMCxhc3luYzohMCxjb250ZW50VHlwZToiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkOyBjaGFyc2V0PVVURi04IixhY2NlcHRzOnsiKiI6SmMsdGV4dDoidGV4dC9wbGFpbiIsaHRtbDoidGV4dC9odG1sIix4bWw6ImFwcGxpY2F0aW9uL3htbCwgdGV4dC94bWwiLGpzb246ImFwcGxpY2F0aW9uL2pzb24sIHRleHQvamF2YXNjcmlwdCJ9LGNvbnRlbnRzOnt4bWw6L3htbC8saHRtbDovaHRtbC8sanNvbjovanNvbi99LHJlc3BvbnNlRmllbGRzOnt4bWw6InJlc3BvbnNlWE1MIix0ZXh0OiJyZXNwb25zZVRleHQiLGpzb246InJlc3BvbnNlSlNPTiJ9LGNvbnZlcnRlcnM6eyIqIHRleHQiOlN0cmluZywidGV4dCBodG1sIjohMCwidGV4dCBqc29uIjptLnBhcnNlSlNPTiwidGV4dCB4bWwiOm0ucGFyc2VYTUx9LGZsYXRPcHRpb25zOnt1cmw6ITAsY29udGV4dDohMH19LGFqYXhTZXR1cDpmdW5jdGlvbihhLGIpe3JldHVybiBiP05jKE5jKGEsbS5hamF4U2V0dGluZ3MpLGIpOk5jKG0uYWpheFNldHRpbmdzLGEpfSxhamF4UHJlZmlsdGVyOkxjKEhjKSxhamF4VHJhbnNwb3J0OkxjKEljKSxhamF4OmZ1bmN0aW9uKGEsYil7Im9iamVjdCI9PXR5cGVvZiBhJiYoYj1hLGE9dm9pZCAwKSxiPWJ8fHt9O3ZhciBjLGQsZSxmLGcsaCxpLGosaz1tLmFqYXhTZXR1cCh7fSxiKSxsPWsuY29udGV4dHx8ayxuPWsuY29udGV4dCYmKGwubm9kZVR5cGV8fGwuanF1ZXJ5KT9tKGwpOm0uZXZlbnQsbz1tLkRlZmVycmVkKCkscD1tLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSxxPWsuc3RhdHVzQ29kZXx8e30scj17fSxzPXt9LHQ9MCx1PSJjYW5jZWxlZCIsdj17cmVhZHlTdGF0ZTowLGdldFJlc3BvbnNlSGVhZGVyOmZ1bmN0aW9uKGEpe3ZhciBiO2lmKDI9PT10KXtpZighail7aj17fTt3aGlsZShiPUNjLmV4ZWMoZikpaltiWzFdLnRvTG93ZXJDYXNlKCldPWJbMl19Yj1qW2EudG9Mb3dlckNhc2UoKV19cmV0dXJuIG51bGw9PWI/bnVsbDpifSxnZXRBbGxSZXNwb25zZUhlYWRlcnM6ZnVuY3Rpb24oKXtyZXR1cm4gMj09PXQ/ZjpudWxsfSxzZXRSZXF1ZXN0SGVhZGVyOmZ1bmN0aW9uKGEsYil7dmFyIGM9YS50b0xvd2VyQ2FzZSgpO3JldHVybiB0fHwoYT1zW2NdPXNbY118fGEsclthXT1iKSx0aGlzfSxvdmVycmlkZU1pbWVUeXBlOmZ1bmN0aW9uKGEpe3JldHVybiB0fHwoay5taW1lVHlwZT1hKSx0aGlzfSxzdGF0dXNDb2RlOmZ1bmN0aW9uKGEpe3ZhciBiO2lmKGEpaWYoMj50KWZvcihiIGluIGEpcVtiXT1bcVtiXSxhW2JdXTtlbHNlIHYuYWx3YXlzKGFbdi5zdGF0dXNdKTtyZXR1cm4gdGhpc30sYWJvcnQ6ZnVuY3Rpb24oYSl7dmFyIGI9YXx8dTtyZXR1cm4gaSYmaS5hYm9ydChiKSx4KDAsYiksdGhpc319O2lmKG8ucHJvbWlzZSh2KS5jb21wbGV0ZT1wLmFkZCx2LnN1Y2Nlc3M9di5kb25lLHYuZXJyb3I9di5mYWlsLGsudXJsPSgoYXx8ay51cmx8fHpjKSsiIikucmVwbGFjZShBYywiIikucmVwbGFjZShGYyx5Y1sxXSsiLy8iKSxrLnR5cGU9Yi5tZXRob2R8fGIudHlwZXx8ay5tZXRob2R8fGsudHlwZSxrLmRhdGFUeXBlcz1tLnRyaW0oay5kYXRhVHlwZXx8IioiKS50b0xvd2VyQ2FzZSgpLm1hdGNoKEUpfHxbIiJdLG51bGw9PWsuY3Jvc3NEb21haW4mJihjPUdjLmV4ZWMoay51cmwudG9Mb3dlckNhc2UoKSksay5jcm9zc0RvbWFpbj0hKCFjfHxjWzFdPT09eWNbMV0mJmNbMl09PT15Y1syXSYmKGNbM118fCgiaHR0cDoiPT09Y1sxXT8iODAiOiI0NDMiKSk9PT0oeWNbM118fCgiaHR0cDoiPT09eWNbMV0/IjgwIjoiNDQzIikpKSksay5kYXRhJiZrLnByb2Nlc3NEYXRhJiYic3RyaW5nIiE9dHlwZW9mIGsuZGF0YSYmKGsuZGF0YT1tLnBhcmFtKGsuZGF0YSxrLnRyYWRpdGlvbmFsKSksTWMoSGMsayxiLHYpLDI9PT10KXJldHVybiB2O2g9ay5nbG9iYWwsaCYmMD09PW0uYWN0aXZlKysmJm0uZXZlbnQudHJpZ2dlcigiYWpheFN0YXJ0Iiksay50eXBlPWsudHlwZS50b1VwcGVyQ2FzZSgpLGsuaGFzQ29udGVudD0hRWMudGVzdChrLnR5cGUpLGU9ay51cmwsay5oYXNDb250ZW50fHwoay5kYXRhJiYoZT1rLnVybCs9KHdjLnRlc3QoZSk/IiYiOiI/Iikray5kYXRhLGRlbGV0ZSBrLmRhdGEpLGsuY2FjaGU9PT0hMSYmKGsudXJsPUJjLnRlc3QoZSk/ZS5yZXBsYWNlKEJjLCIkMV89Iit2YysrKTplKyh3Yy50ZXN0KGUpPyImIjoiPyIpKyJfPSIrdmMrKykpLGsuaWZNb2RpZmllZCYmKG0ubGFzdE1vZGlmaWVkW2VdJiZ2LnNldFJlcXVlc3RIZWFkZXIoIklmLU1vZGlmaWVkLVNpbmNlIixtLmxhc3RNb2RpZmllZFtlXSksbS5ldGFnW2VdJiZ2LnNldFJlcXVlc3RIZWFkZXIoIklmLU5vbmUtTWF0Y2giLG0uZXRhZ1tlXSkpLChrLmRhdGEmJmsuaGFzQ29udGVudCYmay5jb250ZW50VHlwZSE9PSExfHxiLmNvbnRlbnRUeXBlKSYmdi5zZXRSZXF1ZXN0SGVhZGVyKCJDb250ZW50LVR5cGUiLGsuY29udGVudFR5cGUpLHYuc2V0UmVxdWVzdEhlYWRlcigiQWNjZXB0IixrLmRhdGFUeXBlc1swXSYmay5hY2NlcHRzW2suZGF0YVR5cGVzWzBdXT9rLmFjY2VwdHNbay5kYXRhVHlwZXNbMF1dKygiKiIhPT1rLmRhdGFUeXBlc1swXT8iLCAiK0pjKyI7IHE9MC4wMSI6IiIpOmsuYWNjZXB0c1siKiJdKTtmb3IoZCBpbiBrLmhlYWRlcnMpdi5zZXRSZXF1ZXN0SGVhZGVyKGQsay5oZWFkZXJzW2RdKTtpZihrLmJlZm9yZVNlbmQmJihrLmJlZm9yZVNlbmQuY2FsbChsLHYsayk9PT0hMXx8Mj09PXQpKXJldHVybiB2LmFib3J0KCk7dT0iYWJvcnQiO2ZvcihkIGlue3N1Y2Nlc3M6MSxlcnJvcjoxLGNvbXBsZXRlOjF9KXZbZF0oa1tkXSk7aWYoaT1NYyhJYyxrLGIsdikpe3YucmVhZHlTdGF0ZT0xLGgmJm4udHJpZ2dlcigiYWpheFNlbmQiLFt2LGtdKSxrLmFzeW5jJiZrLnRpbWVvdXQ+MCYmKGc9c2V0VGltZW91dChmdW5jdGlvbigpe3YuYWJvcnQoInRpbWVvdXQiKX0say50aW1lb3V0KSk7dHJ5e3Q9MSxpLnNlbmQocix4KX1jYXRjaCh3KXtpZighKDI+dCkpdGhyb3cgdzt4KC0xLHcpfX1lbHNlIHgoLTEsIk5vIFRyYW5zcG9ydCIpO2Z1bmN0aW9uIHgoYSxiLGMsZCl7dmFyIGoscixzLHUsdyx4PWI7MiE9PXQmJih0PTIsZyYmY2xlYXJUaW1lb3V0KGcpLGk9dm9pZCAwLGY9ZHx8IiIsdi5yZWFkeVN0YXRlPWE+MD80OjAsaj1hPj0yMDAmJjMwMD5hfHwzMDQ9PT1hLGMmJih1PU9jKGssdixjKSksdT1QYyhrLHUsdixqKSxqPyhrLmlmTW9kaWZpZWQmJih3PXYuZ2V0UmVzcG9uc2VIZWFkZXIoIkxhc3QtTW9kaWZpZWQiKSx3JiYobS5sYXN0TW9kaWZpZWRbZV09dyksdz12LmdldFJlc3BvbnNlSGVhZGVyKCJldGFnIiksdyYmKG0uZXRhZ1tlXT13KSksMjA0PT09YXx8IkhFQUQiPT09ay50eXBlP3g9Im5vY29udGVudCI6MzA0PT09YT94PSJub3Rtb2RpZmllZCI6KHg9dS5zdGF0ZSxyPXUuZGF0YSxzPXUuZXJyb3Isaj0hcykpOihzPXgsKGF8fCF4KSYmKHg9ImVycm9yIiwwPmEmJihhPTApKSksdi5zdGF0dXM9YSx2LnN0YXR1c1RleHQ9KGJ8fHgpKyIiLGo/by5yZXNvbHZlV2l0aChsLFtyLHgsdl0pOm8ucmVqZWN0V2l0aChsLFt2LHgsc10pLHYuc3RhdHVzQ29kZShxKSxxPXZvaWQgMCxoJiZuLnRyaWdnZXIoaj8iYWpheFN1Y2Nlc3MiOiJhamF4RXJyb3IiLFt2LGssaj9yOnNdKSxwLmZpcmVXaXRoKGwsW3YseF0pLGgmJihuLnRyaWdnZXIoImFqYXhDb21wbGV0ZSIsW3Ysa10pLC0tbS5hY3RpdmV8fG0uZXZlbnQudHJpZ2dlcigiYWpheFN0b3AiKSkpfXJldHVybiB2fSxnZXRKU09OOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gbS5nZXQoYSxiLGMsImpzb24iKX0sZ2V0U2NyaXB0OmZ1bmN0aW9uKGEsYil7cmV0dXJuIG0uZ2V0KGEsdm9pZCAwLGIsInNjcmlwdCIpfX0pLG0uZWFjaChbImdldCIsInBvc3QiXSxmdW5jdGlvbihhLGIpe21bYl09ZnVuY3Rpb24oYSxjLGQsZSl7cmV0dXJuIG0uaXNGdW5jdGlvbihjKSYmKGU9ZXx8ZCxkPWMsYz12b2lkIDApLG0uYWpheCh7dXJsOmEsdHlwZTpiLGRhdGFUeXBlOmUsZGF0YTpjLHN1Y2Nlc3M6ZH0pfX0pLG0uZWFjaChbImFqYXhTdGFydCIsImFqYXhTdG9wIiwiYWpheENvbXBsZXRlIiwiYWpheEVycm9yIiwiYWpheFN1Y2Nlc3MiLCJhamF4U2VuZCJdLGZ1bmN0aW9uKGEsYil7bS5mbltiXT1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5vbihiLGEpfX0pLG0uX2V2YWxVcmw9ZnVuY3Rpb24oYSl7cmV0dXJuIG0uYWpheCh7dXJsOmEsdHlwZToiR0VUIixkYXRhVHlwZToic2NyaXB0Iixhc3luYzohMSxnbG9iYWw6ITEsInRocm93cyI6ITB9KX0sbS5mbi5leHRlbmQoe3dyYXBBbGw6ZnVuY3Rpb24oYSl7aWYobS5pc0Z1bmN0aW9uKGEpKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oYil7bSh0aGlzKS53cmFwQWxsKGEuY2FsbCh0aGlzLGIpKX0pO2lmKHRoaXNbMF0pe3ZhciBiPW0oYSx0aGlzWzBdLm93bmVyRG9jdW1lbnQpLmVxKDApLmNsb25lKCEwKTt0aGlzWzBdLnBhcmVudE5vZGUmJmIuaW5zZXJ0QmVmb3JlKHRoaXNbMF0pLGIubWFwKGZ1bmN0aW9uKCl7dmFyIGE9dGhpczt3aGlsZShhLmZpcnN0Q2hpbGQmJjE9PT1hLmZpcnN0Q2hpbGQubm9kZVR5cGUpYT1hLmZpcnN0Q2hpbGQ7cmV0dXJuIGF9KS5hcHBlbmQodGhpcyl9cmV0dXJuIHRoaXN9LHdyYXBJbm5lcjpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5lYWNoKG0uaXNGdW5jdGlvbihhKT9mdW5jdGlvbihiKXttKHRoaXMpLndyYXBJbm5lcihhLmNhbGwodGhpcyxiKSl9OmZ1bmN0aW9uKCl7dmFyIGI9bSh0aGlzKSxjPWIuY29udGVudHMoKTtjLmxlbmd0aD9jLndyYXBBbGwoYSk6Yi5hcHBlbmQoYSl9KX0sd3JhcDpmdW5jdGlvbihhKXt2YXIgYj1tLmlzRnVuY3Rpb24oYSk7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihjKXttKHRoaXMpLndyYXBBbGwoYj9hLmNhbGwodGhpcyxjKTphKX0pfSx1bndyYXA6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wYXJlbnQoKS5lYWNoKGZ1bmN0aW9uKCl7bS5ub2RlTmFtZSh0aGlzLCJib2R5Iil8fG0odGhpcykucmVwbGFjZVdpdGgodGhpcy5jaGlsZE5vZGVzKX0pLmVuZCgpfX0pLG0uZXhwci5maWx0ZXJzLmhpZGRlbj1mdW5jdGlvbihhKXtyZXR1cm4gYS5vZmZzZXRXaWR0aDw9MCYmYS5vZmZzZXRIZWlnaHQ8PTB8fCFrLnJlbGlhYmxlSGlkZGVuT2Zmc2V0cygpJiYibm9uZSI9PT0oYS5zdHlsZSYmYS5zdHlsZS5kaXNwbGF5fHxtLmNzcyhhLCJkaXNwbGF5IikpfSxtLmV4cHIuZmlsdGVycy52aXNpYmxlPWZ1bmN0aW9uKGEpe3JldHVybiFtLmV4cHIuZmlsdGVycy5oaWRkZW4oYSl9O3ZhciBRYz0vJTIwL2csUmM9L1xbXF0kLyxTYz0vXHI/XG4vZyxUYz0vXig/OnN1Ym1pdHxidXR0b258aW1hZ2V8cmVzZXR8ZmlsZSkkL2ksVWM9L14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWF8a2V5Z2VuKS9pO2Z1bmN0aW9uIFZjKGEsYixjLGQpe3ZhciBlO2lmKG0uaXNBcnJheShiKSltLmVhY2goYixmdW5jdGlvbihiLGUpe2N8fFJjLnRlc3QoYSk/ZChhLGUpOlZjKGErIlsiKygib2JqZWN0Ij09dHlwZW9mIGU/YjoiIikrIl0iLGUsYyxkKX0pO2Vsc2UgaWYoY3x8Im9iamVjdCIhPT1tLnR5cGUoYikpZChhLGIpO2Vsc2UgZm9yKGUgaW4gYilWYyhhKyJbIitlKyJdIixiW2VdLGMsZCl9bS5wYXJhbT1mdW5jdGlvbihhLGIpe3ZhciBjLGQ9W10sZT1mdW5jdGlvbihhLGIpe2I9bS5pc0Z1bmN0aW9uKGIpP2IoKTpudWxsPT1iPyIiOmIsZFtkLmxlbmd0aF09ZW5jb2RlVVJJQ29tcG9uZW50KGEpKyI9IitlbmNvZGVVUklDb21wb25lbnQoYil9O2lmKHZvaWQgMD09PWImJihiPW0uYWpheFNldHRpbmdzJiZtLmFqYXhTZXR0aW5ncy50cmFkaXRpb25hbCksbS5pc0FycmF5KGEpfHxhLmpxdWVyeSYmIW0uaXNQbGFpbk9iamVjdChhKSltLmVhY2goYSxmdW5jdGlvbigpe2UodGhpcy5uYW1lLHRoaXMudmFsdWUpfSk7ZWxzZSBmb3IoYyBpbiBhKVZjKGMsYVtjXSxiLGUpO3JldHVybiBkLmpvaW4oIiYiKS5yZXBsYWNlKFFjLCIrIil9LG0uZm4uZXh0ZW5kKHtzZXJpYWxpemU6ZnVuY3Rpb24oKXtyZXR1cm4gbS5wYXJhbSh0aGlzLnNlcmlhbGl6ZUFycmF5KCkpfSxzZXJpYWxpemVBcnJheTpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1hcChmdW5jdGlvbigpe3ZhciBhPW0ucHJvcCh0aGlzLCJlbGVtZW50cyIpO3JldHVybiBhP20ubWFrZUFycmF5KGEpOnRoaXN9KS5maWx0ZXIoZnVuY3Rpb24oKXt2YXIgYT10aGlzLnR5cGU7cmV0dXJuIHRoaXMubmFtZSYmIW0odGhpcykuaXMoIjpkaXNhYmxlZCIpJiZVYy50ZXN0KHRoaXMubm9kZU5hbWUpJiYhVGMudGVzdChhKSYmKHRoaXMuY2hlY2tlZHx8IVcudGVzdChhKSl9KS5tYXAoZnVuY3Rpb24oYSxiKXt2YXIgYz1tKHRoaXMpLnZhbCgpO3JldHVybiBudWxsPT1jP251bGw6bS5pc0FycmF5KGMpP20ubWFwKGMsZnVuY3Rpb24oYSl7cmV0dXJue25hbWU6Yi5uYW1lLHZhbHVlOmEucmVwbGFjZShTYywiXHJcbiIpfX0pOntuYW1lOmIubmFtZSx2YWx1ZTpjLnJlcGxhY2UoU2MsIlxyXG4iKX19KS5nZXQoKX19KSxtLmFqYXhTZXR0aW5ncy54aHI9dm9pZCAwIT09YS5BY3RpdmVYT2JqZWN0P2Z1bmN0aW9uKCl7cmV0dXJuIXRoaXMuaXNMb2NhbCYmL14oZ2V0fHBvc3R8aGVhZHxwdXR8ZGVsZXRlfG9wdGlvbnMpJC9pLnRlc3QodGhpcy50eXBlKSYmWmMoKXx8JGMoKX06WmM7dmFyIFdjPTAsWGM9e30sWWM9bS5hamF4U2V0dGluZ3MueGhyKCk7YS5BY3RpdmVYT2JqZWN0JiZtKGEpLm9uKCJ1bmxvYWQiLGZ1bmN0aW9uKCl7Zm9yKHZhciBhIGluIFhjKVhjW2FdKHZvaWQgMCwhMCl9KSxrLmNvcnM9ISFZYyYmIndpdGhDcmVkZW50aWFscyJpbiBZYyxZYz1rLmFqYXg9ISFZYyxZYyYmbS5hamF4VHJhbnNwb3J0KGZ1bmN0aW9uKGEpe2lmKCFhLmNyb3NzRG9tYWlufHxrLmNvcnMpe3ZhciBiO3JldHVybntzZW5kOmZ1bmN0aW9uKGMsZCl7dmFyIGUsZj1hLnhocigpLGc9KytXYztpZihmLm9wZW4oYS50eXBlLGEudXJsLGEuYXN5bmMsYS51c2VybmFtZSxhLnBhc3N3b3JkKSxhLnhockZpZWxkcylmb3IoZSBpbiBhLnhockZpZWxkcylmW2VdPWEueGhyRmllbGRzW2VdO2EubWltZVR5cGUmJmYub3ZlcnJpZGVNaW1lVHlwZSYmZi5vdmVycmlkZU1pbWVUeXBlKGEubWltZVR5cGUpLGEuY3Jvc3NEb21haW58fGNbIlgtUmVxdWVzdGVkLVdpdGgiXXx8KGNbIlgtUmVxdWVzdGVkLVdpdGgiXT0iWE1MSHR0cFJlcXVlc3QiKTtmb3IoZSBpbiBjKXZvaWQgMCE9PWNbZV0mJmYuc2V0UmVxdWVzdEhlYWRlcihlLGNbZV0rIiIpO2Yuc2VuZChhLmhhc0NvbnRlbnQmJmEuZGF0YXx8bnVsbCksYj1mdW5jdGlvbihjLGUpe3ZhciBoLGksajtpZihiJiYoZXx8ND09PWYucmVhZHlTdGF0ZSkpaWYoZGVsZXRlIFhjW2ddLGI9dm9pZCAwLGYub25yZWFkeXN0YXRlY2hhbmdlPW0ubm9vcCxlKTQhPT1mLnJlYWR5U3RhdGUmJmYuYWJvcnQoKTtlbHNle2o9e30saD1mLnN0YXR1cywic3RyaW5nIj09dHlwZW9mIGYucmVzcG9uc2VUZXh0JiYoai50ZXh0PWYucmVzcG9uc2VUZXh0KTt0cnl7aT1mLnN0YXR1c1RleHR9Y2F0Y2goayl7aT0iIn1ofHwhYS5pc0xvY2FsfHxhLmNyb3NzRG9tYWluPzEyMjM9PT1oJiYoaD0yMDQpOmg9ai50ZXh0PzIwMDo0MDR9aiYmZChoLGksaixmLmdldEFsbFJlc3BvbnNlSGVhZGVycygpKX0sYS5hc3luYz80PT09Zi5yZWFkeVN0YXRlP3NldFRpbWVvdXQoYik6Zi5vbnJlYWR5c3RhdGVjaGFuZ2U9WGNbZ109YjpiKCl9LGFib3J0OmZ1bmN0aW9uKCl7YiYmYih2b2lkIDAsITApfX19fSk7ZnVuY3Rpb24gWmMoKXt0cnl7cmV0dXJuIG5ldyBhLlhNTEh0dHBSZXF1ZXN0fWNhdGNoKGIpe319ZnVuY3Rpb24gJGMoKXt0cnl7cmV0dXJuIG5ldyBhLkFjdGl2ZVhPYmplY3QoIk1pY3Jvc29mdC5YTUxIVFRQIil9Y2F0Y2goYil7fX1tLmFqYXhTZXR1cCh7YWNjZXB0czp7c2NyaXB0OiJ0ZXh0L2phdmFzY3JpcHQsIGFwcGxpY2F0aW9uL2phdmFzY3JpcHQsIGFwcGxpY2F0aW9uL2VjbWFzY3JpcHQsIGFwcGxpY2F0aW9uL3gtZWNtYXNjcmlwdCJ9LGNvbnRlbnRzOntzY3JpcHQ6Lyg/OmphdmF8ZWNtYSlzY3JpcHQvfSxjb252ZXJ0ZXJzOnsidGV4dCBzY3JpcHQiOmZ1bmN0aW9uKGEpe3JldHVybiBtLmdsb2JhbEV2YWwoYSksYX19fSksbS5hamF4UHJlZmlsdGVyKCJzY3JpcHQiLGZ1bmN0aW9uKGEpe3ZvaWQgMD09PWEuY2FjaGUmJihhLmNhY2hlPSExKSxhLmNyb3NzRG9tYWluJiYoYS50eXBlPSJHRVQiLGEuZ2xvYmFsPSExKX0pLG0uYWpheFRyYW5zcG9ydCgic2NyaXB0IixmdW5jdGlvbihhKXtpZihhLmNyb3NzRG9tYWluKXt2YXIgYixjPXkuaGVhZHx8bSgiaGVhZCIpWzBdfHx5LmRvY3VtZW50RWxlbWVudDtyZXR1cm57c2VuZDpmdW5jdGlvbihkLGUpe2I9eS5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKSxiLmFzeW5jPSEwLGEuc2NyaXB0Q2hhcnNldCYmKGIuY2hhcnNldD1hLnNjcmlwdENoYXJzZXQpLGIuc3JjPWEudXJsLGIub25sb2FkPWIub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKGEsYyl7KGN8fCFiLnJlYWR5U3RhdGV8fC9sb2FkZWR8Y29tcGxldGUvLnRlc3QoYi5yZWFkeVN0YXRlKSkmJihiLm9ubG9hZD1iLm9ucmVhZHlzdGF0ZWNoYW5nZT1udWxsLGIucGFyZW50Tm9kZSYmYi5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGIpLGI9bnVsbCxjfHxlKDIwMCwic3VjY2VzcyIpKX0sYy5pbnNlcnRCZWZvcmUoYixjLmZpcnN0Q2hpbGQpfSxhYm9ydDpmdW5jdGlvbigpe2ImJmIub25sb2FkKHZvaWQgMCwhMCl9fX19KTt2YXIgX2M9W10sYWQ9Lyg9KVw/KD89JnwkKXxcP1w/LzttLmFqYXhTZXR1cCh7anNvbnA6ImNhbGxiYWNrIixqc29ucENhbGxiYWNrOmZ1bmN0aW9uKCl7dmFyIGE9X2MucG9wKCl8fG0uZXhwYW5kbysiXyIrdmMrKztyZXR1cm4gdGhpc1thXT0hMCxhfX0pLG0uYWpheFByZWZpbHRlcigianNvbiBqc29ucCIsZnVuY3Rpb24oYixjLGQpe3ZhciBlLGYsZyxoPWIuanNvbnAhPT0hMSYmKGFkLnRlc3QoYi51cmwpPyJ1cmwiOiJzdHJpbmciPT10eXBlb2YgYi5kYXRhJiYhKGIuY29udGVudFR5cGV8fCIiKS5pbmRleE9mKCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiKSYmYWQudGVzdChiLmRhdGEpJiYiZGF0YSIpO3JldHVybiBofHwianNvbnAiPT09Yi5kYXRhVHlwZXNbMF0/KGU9Yi5qc29ucENhbGxiYWNrPW0uaXNGdW5jdGlvbihiLmpzb25wQ2FsbGJhY2spP2IuanNvbnBDYWxsYmFjaygpOmIuanNvbnBDYWxsYmFjayxoP2JbaF09YltoXS5yZXBsYWNlKGFkLCIkMSIrZSk6Yi5qc29ucCE9PSExJiYoYi51cmwrPSh3Yy50ZXN0KGIudXJsKT8iJiI6Ij8iKStiLmpzb25wKyI9IitlKSxiLmNvbnZlcnRlcnNbInNjcmlwdCBqc29uIl09ZnVuY3Rpb24oKXtyZXR1cm4gZ3x8bS5lcnJvcihlKyIgd2FzIG5vdCBjYWxsZWQiKSxnWzBdfSxiLmRhdGFUeXBlc1swXT0ianNvbiIsZj1hW2VdLGFbZV09ZnVuY3Rpb24oKXtnPWFyZ3VtZW50c30sZC5hbHdheXMoZnVuY3Rpb24oKXthW2VdPWYsYltlXSYmKGIuanNvbnBDYWxsYmFjaz1jLmpzb25wQ2FsbGJhY2ssX2MucHVzaChlKSksZyYmbS5pc0Z1bmN0aW9uKGYpJiZmKGdbMF0pLGc9Zj12b2lkIDB9KSwic2NyaXB0Iik6dm9pZCAwfSksbS5wYXJzZUhUTUw9ZnVuY3Rpb24oYSxiLGMpe2lmKCFhfHwic3RyaW5nIiE9dHlwZW9mIGEpcmV0dXJuIG51bGw7ImJvb2xlYW4iPT10eXBlb2YgYiYmKGM9YixiPSExKSxiPWJ8fHk7dmFyIGQ9dS5leGVjKGEpLGU9IWMmJltdO3JldHVybiBkP1tiLmNyZWF0ZUVsZW1lbnQoZFsxXSldOihkPW0uYnVpbGRGcmFnbWVudChbYV0sYixlKSxlJiZlLmxlbmd0aCYmbShlKS5yZW1vdmUoKSxtLm1lcmdlKFtdLGQuY2hpbGROb2RlcykpfTt2YXIgYmQ9bS5mbi5sb2FkO20uZm4ubG9hZD1mdW5jdGlvbihhLGIsYyl7aWYoInN0cmluZyIhPXR5cGVvZiBhJiZiZClyZXR1cm4gYmQuYXBwbHkodGhpcyxhcmd1bWVudHMpO3ZhciBkLGUsZixnPXRoaXMsaD1hLmluZGV4T2YoIiAiKTtyZXR1cm4gaD49MCYmKGQ9bS50cmltKGEuc2xpY2UoaCxhLmxlbmd0aCkpLGE9YS5zbGljZSgwLGgpKSxtLmlzRnVuY3Rpb24oYik/KGM9YixiPXZvaWQgMCk6YiYmIm9iamVjdCI9PXR5cGVvZiBiJiYoZj0iUE9TVCIpLGcubGVuZ3RoPjAmJm0uYWpheCh7dXJsOmEsdHlwZTpmLGRhdGFUeXBlOiJodG1sIixkYXRhOmJ9KS5kb25lKGZ1bmN0aW9uKGEpe2U9YXJndW1lbnRzLGcuaHRtbChkP20oIjxkaXY+IikuYXBwZW5kKG0ucGFyc2VIVE1MKGEpKS5maW5kKGQpOmEpfSkuY29tcGxldGUoYyYmZnVuY3Rpb24oYSxiKXtnLmVhY2goYyxlfHxbYS5yZXNwb25zZVRleHQsYixhXSl9KSx0aGlzfSxtLmV4cHIuZmlsdGVycy5hbmltYXRlZD1mdW5jdGlvbihhKXtyZXR1cm4gbS5ncmVwKG0udGltZXJzLGZ1bmN0aW9uKGIpe3JldHVybiBhPT09Yi5lbGVtfSkubGVuZ3RofTt2YXIgY2Q9YS5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7ZnVuY3Rpb24gZGQoYSl7cmV0dXJuIG0uaXNXaW5kb3coYSk/YTo5PT09YS5ub2RlVHlwZT9hLmRlZmF1bHRWaWV3fHxhLnBhcmVudFdpbmRvdzohMX1tLm9mZnNldD17c2V0T2Zmc2V0OmZ1bmN0aW9uKGEsYixjKXt2YXIgZCxlLGYsZyxoLGksaixrPW0uY3NzKGEsInBvc2l0aW9uIiksbD1tKGEpLG49e307InN0YXRpYyI9PT1rJiYoYS5zdHlsZS5wb3NpdGlvbj0icmVsYXRpdmUiKSxoPWwub2Zmc2V0KCksZj1tLmNzcyhhLCJ0b3AiKSxpPW0uY3NzKGEsImxlZnQiKSxqPSgiYWJzb2x1dGUiPT09a3x8ImZpeGVkIj09PWspJiZtLmluQXJyYXkoImF1dG8iLFtmLGldKT4tMSxqPyhkPWwucG9zaXRpb24oKSxnPWQudG9wLGU9ZC5sZWZ0KTooZz1wYXJzZUZsb2F0KGYpfHwwLGU9cGFyc2VGbG9hdChpKXx8MCksbS5pc0Z1bmN0aW9uKGIpJiYoYj1iLmNhbGwoYSxjLGgpKSxudWxsIT1iLnRvcCYmKG4udG9wPWIudG9wLWgudG9wK2cpLG51bGwhPWIubGVmdCYmKG4ubGVmdD1iLmxlZnQtaC5sZWZ0K2UpLCJ1c2luZyJpbiBiP2IudXNpbmcuY2FsbChhLG4pOmwuY3NzKG4pfX0sbS5mbi5leHRlbmQoe29mZnNldDpmdW5jdGlvbihhKXtpZihhcmd1bWVudHMubGVuZ3RoKXJldHVybiB2b2lkIDA9PT1hP3RoaXM6dGhpcy5lYWNoKGZ1bmN0aW9uKGIpe20ub2Zmc2V0LnNldE9mZnNldCh0aGlzLGEsYil9KTt2YXIgYixjLGQ9e3RvcDowLGxlZnQ6MH0sZT10aGlzWzBdLGY9ZSYmZS5vd25lckRvY3VtZW50O2lmKGYpcmV0dXJuIGI9Zi5kb2N1bWVudEVsZW1lbnQsbS5jb250YWlucyhiLGUpPyh0eXBlb2YgZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QhPT1LJiYoZD1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKSxjPWRkKGYpLHt0b3A6ZC50b3ArKGMucGFnZVlPZmZzZXR8fGIuc2Nyb2xsVG9wKS0oYi5jbGllbnRUb3B8fDApLGxlZnQ6ZC5sZWZ0KyhjLnBhZ2VYT2Zmc2V0fHxiLnNjcm9sbExlZnQpLShiLmNsaWVudExlZnR8fDApfSk6ZH0scG9zaXRpb246ZnVuY3Rpb24oKXtpZih0aGlzWzBdKXt2YXIgYSxiLGM9e3RvcDowLGxlZnQ6MH0sZD10aGlzWzBdO3JldHVybiJmaXhlZCI9PT1tLmNzcyhkLCJwb3NpdGlvbiIpP2I9ZC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTooYT10aGlzLm9mZnNldFBhcmVudCgpLGI9dGhpcy5vZmZzZXQoKSxtLm5vZGVOYW1lKGFbMF0sImh0bWwiKXx8KGM9YS5vZmZzZXQoKSksYy50b3ArPW0uY3NzKGFbMF0sImJvcmRlclRvcFdpZHRoIiwhMCksYy5sZWZ0Kz1tLmNzcyhhWzBdLCJib3JkZXJMZWZ0V2lkdGgiLCEwKSkse3RvcDpiLnRvcC1jLnRvcC1tLmNzcyhkLCJtYXJnaW5Ub3AiLCEwKSxsZWZ0OmIubGVmdC1jLmxlZnQtbS5jc3MoZCwibWFyZ2luTGVmdCIsITApfX19LG9mZnNldFBhcmVudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1hcChmdW5jdGlvbigpe3ZhciBhPXRoaXMub2Zmc2V0UGFyZW50fHxjZDt3aGlsZShhJiYhbS5ub2RlTmFtZShhLCJodG1sIikmJiJzdGF0aWMiPT09bS5jc3MoYSwicG9zaXRpb24iKSlhPWEub2Zmc2V0UGFyZW50O3JldHVybiBhfHxjZH0pfX0pLG0uZWFjaCh7c2Nyb2xsTGVmdDoicGFnZVhPZmZzZXQiLHNjcm9sbFRvcDoicGFnZVlPZmZzZXQifSxmdW5jdGlvbihhLGIpe3ZhciBjPS9ZLy50ZXN0KGIpO20uZm5bYV09ZnVuY3Rpb24oZCl7cmV0dXJuIFYodGhpcyxmdW5jdGlvbihhLGQsZSl7dmFyIGY9ZGQoYSk7cmV0dXJuIHZvaWQgMD09PWU/Zj9iIGluIGY/ZltiXTpmLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudFtkXTphW2RdOnZvaWQoZj9mLnNjcm9sbFRvKGM/bShmKS5zY3JvbGxMZWZ0KCk6ZSxjP2U6bShmKS5zY3JvbGxUb3AoKSk6YVtkXT1lKX0sYSxkLGFyZ3VtZW50cy5sZW5ndGgsbnVsbCl9fSksbS5lYWNoKFsidG9wIiwibGVmdCJdLGZ1bmN0aW9uKGEsYil7bS5jc3NIb29rc1tiXT1MYihrLnBpeGVsUG9zaXRpb24sZnVuY3Rpb24oYSxjKXtyZXR1cm4gYz8oYz1KYihhLGIpLEhiLnRlc3QoYyk/bShhKS5wb3NpdGlvbigpW2JdKyJweCI6Yyk6dm9pZCAwfSl9KSxtLmVhY2goe0hlaWdodDoiaGVpZ2h0IixXaWR0aDoid2lkdGgifSxmdW5jdGlvbihhLGIpe20uZWFjaCh7cGFkZGluZzoiaW5uZXIiK2EsY29udGVudDpiLCIiOiJvdXRlciIrYX0sZnVuY3Rpb24oYyxkKXttLmZuW2RdPWZ1bmN0aW9uKGQsZSl7dmFyIGY9YXJndW1lbnRzLmxlbmd0aCYmKGN8fCJib29sZWFuIiE9dHlwZW9mIGQpLGc9Y3x8KGQ9PT0hMHx8ZT09PSEwPyJtYXJnaW4iOiJib3JkZXIiKTtyZXR1cm4gVih0aGlzLGZ1bmN0aW9uKGIsYyxkKXt2YXIgZTtyZXR1cm4gbS5pc1dpbmRvdyhiKT9iLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudFsiY2xpZW50IithXTo5PT09Yi5ub2RlVHlwZT8oZT1iLmRvY3VtZW50RWxlbWVudCxNYXRoLm1heChiLmJvZHlbInNjcm9sbCIrYV0sZVsic2Nyb2xsIithXSxiLmJvZHlbIm9mZnNldCIrYV0sZVsib2Zmc2V0IithXSxlWyJjbGllbnQiK2FdKSk6dm9pZCAwPT09ZD9tLmNzcyhiLGMsZyk6bS5zdHlsZShiLGMsZCxnKX0sYixmP2Q6dm9pZCAwLGYsbnVsbCl9fSl9KSxtLmZuLnNpemU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sZW5ndGh9LG0uZm4uYW5kU2VsZj1tLmZuLmFkZEJhY2ssImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZCYmZGVmaW5lKCJqcXVlcnkiLFtdLGZ1bmN0aW9uKCl7cmV0dXJuIG19KTt2YXIgZWQ9YS5qUXVlcnksZmQ9YS4kO3JldHVybiBtLm5vQ29uZmxpY3Q9ZnVuY3Rpb24oYil7cmV0dXJuIGEuJD09PW0mJihhLiQ9ZmQpLGImJmEualF1ZXJ5PT09bSYmKGEualF1ZXJ5PWVkKSxtfSx0eXBlb2YgYj09PUsmJihhLmpRdWVyeT1hLiQ9bSksbX0pOwo="></script>
<link href="data:text/css;charset=utf-8,%0A%2Eleaflet%2Dmap%2Dpane%2C%0A%2Eleaflet%2Dtile%2C%0A%2Eleaflet%2Dmarker%2Dicon%2C%0A%2Eleaflet%2Dmarker%2Dshadow%2C%0A%2Eleaflet%2Dtile%2Dpane%2C%0A%2Eleaflet%2Dtile%2Dcontainer%2C%0A%2Eleaflet%2Doverlay%2Dpane%2C%0A%2Eleaflet%2Dshadow%2Dpane%2C%0A%2Eleaflet%2Dmarker%2Dpane%2C%0A%2Eleaflet%2Dpopup%2Dpane%2C%0A%2Eleaflet%2Doverlay%2Dpane%20svg%2C%0A%2Eleaflet%2Dzoom%2Dbox%2C%0A%2Eleaflet%2Dimage%2Dlayer%2C%0A%2Eleaflet%2Dlayer%20%7B%0Aposition%3A%20absolute%3B%0Aleft%3A%200%3B%0Atop%3A%200%3B%0A%7D%0A%2Eleaflet%2Dcontainer%20%7B%0Aoverflow%3A%20hidden%3B%0A%2Dms%2Dtouch%2Daction%3A%20none%3B%0A%7D%0A%2Eleaflet%2Dtile%2C%0A%2Eleaflet%2Dmarker%2Dicon%2C%0A%2Eleaflet%2Dmarker%2Dshadow%20%7B%0A%2Dwebkit%2Duser%2Dselect%3A%20none%3B%0A%2Dmoz%2Duser%2Dselect%3A%20none%3B%0Auser%2Dselect%3A%20none%3B%0A%2Dwebkit%2Duser%2Ddrag%3A%20none%3B%0A%7D%0A%2Eleaflet%2Dmarker%2Dicon%2C%0A%2Eleaflet%2Dmarker%2Dshadow%20%7B%0Adisplay%3A%20block%3B%0A%7D%0A%0A%2Eleaflet%2Dcontainer%20img%20%7B%0Amax%2Dwidth%3A%20none%20%21important%3B%0A%7D%0A%0A%2Eleaflet%2Dcontainer%20img%2Eleaflet%2Dimage%2Dlayer%20%7B%0Amax%2Dwidth%3A%2015000px%20%21important%3B%0A%7D%0A%2Eleaflet%2Dtile%20%7B%0Afilter%3A%20inherit%3B%0Avisibility%3A%20hidden%3B%0A%7D%0A%2Eleaflet%2Dtile%2Dloaded%20%7B%0Avisibility%3A%20inherit%3B%0A%7D%0A%2Eleaflet%2Dzoom%2Dbox%20%7B%0Awidth%3A%200%3B%0Aheight%3A%200%3B%0A%7D%0A%0A%2Eleaflet%2Doverlay%2Dpane%20svg%20%7B%0A%2Dmoz%2Duser%2Dselect%3A%20none%3B%0A%7D%0A%2Eleaflet%2Dtile%2Dpane%20%7B%20z%2Dindex%3A%202%3B%20%7D%0A%2Eleaflet%2Dobjects%2Dpane%20%7B%20z%2Dindex%3A%203%3B%20%7D%0A%2Eleaflet%2Doverlay%2Dpane%20%7B%20z%2Dindex%3A%204%3B%20%7D%0A%2Eleaflet%2Dshadow%2Dpane%20%7B%20z%2Dindex%3A%205%3B%20%7D%0A%2Eleaflet%2Dmarker%2Dpane%20%7B%20z%2Dindex%3A%206%3B%20%7D%0A%2Eleaflet%2Dpopup%2Dpane%20%7B%20z%2Dindex%3A%207%3B%20%7D%0A%2Eleaflet%2Dvml%2Dshape%20%7B%0Awidth%3A%201px%3B%0Aheight%3A%201px%3B%0A%7D%0A%2Elvml%20%7B%0Abehavior%3A%20url%28%23default%23VML%29%3B%0Adisplay%3A%20inline%2Dblock%3B%0Aposition%3A%20absolute%3B%0A%7D%0A%0A%2Eleaflet%2Dcontrol%20%7B%0Aposition%3A%20relative%3B%0Az%2Dindex%3A%207%3B%0Apointer%2Devents%3A%20auto%3B%0A%7D%0A%2Eleaflet%2Dtop%2C%0A%2Eleaflet%2Dbottom%20%7B%0Aposition%3A%20absolute%3B%0Az%2Dindex%3A%201000%3B%0Apointer%2Devents%3A%20none%3B%0A%7D%0A%2Eleaflet%2Dtop%20%7B%0Atop%3A%200%3B%0A%7D%0A%2Eleaflet%2Dright%20%7B%0Aright%3A%200%3B%0A%7D%0A%2Eleaflet%2Dbottom%20%7B%0Abottom%3A%200%3B%0A%7D%0A%2Eleaflet%2Dleft%20%7B%0Aleft%3A%200%3B%0A%7D%0A%2Eleaflet%2Dcontrol%20%7B%0Afloat%3A%20left%3B%0Aclear%3A%20both%3B%0A%7D%0A%2Eleaflet%2Dright%20%2Eleaflet%2Dcontrol%20%7B%0Afloat%3A%20right%3B%0A%7D%0A%2Eleaflet%2Dtop%20%2Eleaflet%2Dcontrol%20%7B%0Amargin%2Dtop%3A%2010px%3B%0A%7D%0A%2Eleaflet%2Dbottom%20%2Eleaflet%2Dcontrol%20%7B%0Amargin%2Dbottom%3A%2010px%3B%0A%7D%0A%2Eleaflet%2Dleft%20%2Eleaflet%2Dcontrol%20%7B%0Amargin%2Dleft%3A%2010px%3B%0A%7D%0A%2Eleaflet%2Dright%20%2Eleaflet%2Dcontrol%20%7B%0Amargin%2Dright%3A%2010px%3B%0A%7D%0A%0A%2Eleaflet%2Dfade%2Danim%20%2Eleaflet%2Dtile%2C%0A%2Eleaflet%2Dfade%2Danim%20%2Eleaflet%2Dpopup%20%7B%0Aopacity%3A%200%3B%0A%2Dwebkit%2Dtransition%3A%20opacity%200%2E2s%20linear%3B%0A%2Dmoz%2Dtransition%3A%20opacity%200%2E2s%20linear%3B%0A%2Do%2Dtransition%3A%20opacity%200%2E2s%20linear%3B%0Atransition%3A%20opacity%200%2E2s%20linear%3B%0A%7D%0A%2Eleaflet%2Dfade%2Danim%20%2Eleaflet%2Dtile%2Dloaded%2C%0A%2Eleaflet%2Dfade%2Danim%20%2Eleaflet%2Dmap%2Dpane%20%2Eleaflet%2Dpopup%20%7B%0Aopacity%3A%201%3B%0A%7D%0A%2Eleaflet%2Dzoom%2Danim%20%2Eleaflet%2Dzoom%2Danimated%20%7B%0A%2Dwebkit%2Dtransition%3A%20%2Dwebkit%2Dtransform%200%2E25s%20cubic%2Dbezier%280%2C0%2C0%2E25%2C1%29%3B%0A%2Dmoz%2Dtransition%3A%20%2Dmoz%2Dtransform%200%2E25s%20cubic%2Dbezier%280%2C0%2C0%2E25%2C1%29%3B%0A%2Do%2Dtransition%3A%20%2Do%2Dtransform%200%2E25s%20cubic%2Dbezier%280%2C0%2C0%2E25%2C1%29%3B%0Atransition%3A%20transform%200%2E25s%20cubic%2Dbezier%280%2C0%2C0%2E25%2C1%29%3B%0A%7D%0A%2Eleaflet%2Dzoom%2Danim%20%2Eleaflet%2Dtile%2C%0A%2Eleaflet%2Dpan%2Danim%20%2Eleaflet%2Dtile%2C%0A%2Eleaflet%2Dtouching%20%2Eleaflet%2Dzoom%2Danimated%20%7B%0A%2Dwebkit%2Dtransition%3A%20none%3B%0A%2Dmoz%2Dtransition%3A%20none%3B%0A%2Do%2Dtransition%3A%20none%3B%0Atransition%3A%20none%3B%0A%7D%0A%2Eleaflet%2Dzoom%2Danim%20%2Eleaflet%2Dzoom%2Dhide%20%7B%0Avisibility%3A%20hidden%3B%0A%7D%0A%0A%2Eleaflet%2Dclickable%20%7B%0Acursor%3A%20pointer%3B%0A%7D%0A%2Eleaflet%2Dcontainer%20%7B%0Acursor%3A%20%2Dwebkit%2Dgrab%3B%0Acursor%3A%20%2Dmoz%2Dgrab%3B%0A%7D%0A%2Eleaflet%2Dpopup%2Dpane%2C%0A%2Eleaflet%2Dcontrol%20%7B%0Acursor%3A%20auto%3B%0A%7D%0A%2Eleaflet%2Ddragging%20%2Eleaflet%2Dcontainer%2C%0A%2Eleaflet%2Ddragging%20%2Eleaflet%2Dclickable%20%7B%0Acursor%3A%20move%3B%0Acursor%3A%20%2Dwebkit%2Dgrabbing%3B%0Acursor%3A%20%2Dmoz%2Dgrabbing%3B%0A%7D%0A%0A%2Eleaflet%2Dcontainer%20%7B%0Abackground%3A%20%23ddd%3B%0Aoutline%3A%200%3B%0A%7D%0A%2Eleaflet%2Dcontainer%20a%20%7B%0Acolor%3A%20%230078A8%3B%0A%7D%0A%2Eleaflet%2Dcontainer%20a%2Eleaflet%2Dactive%20%7B%0Aoutline%3A%202px%20solid%20orange%3B%0A%7D%0A%2Eleaflet%2Dzoom%2Dbox%20%7B%0Aborder%3A%202px%20dotted%20%2338f%3B%0Abackground%3A%20rgba%28255%2C255%2C255%2C0%2E5%29%3B%0A%7D%0A%0A%2Eleaflet%2Dcontainer%20%7B%0Afont%3A%2012px%2F1%2E5%20%22Helvetica%20Neue%22%2C%20Arial%2C%20Helvetica%2C%20sans%2Dserif%3B%0A%7D%0A%0A%2Eleaflet%2Dbar%20%7B%0Abox%2Dshadow%3A%200%201px%205px%20rgba%280%2C0%2C0%2C0%2E65%29%3B%0Aborder%2Dradius%3A%204px%3B%0A%7D%0A%2Eleaflet%2Dbar%20a%2C%0A%2Eleaflet%2Dbar%20a%3Ahover%20%7B%0Abackground%2Dcolor%3A%20%23fff%3B%0Aborder%2Dbottom%3A%201px%20solid%20%23ccc%3B%0Awidth%3A%2026px%3B%0Aheight%3A%2026px%3B%0Aline%2Dheight%3A%2026px%3B%0Adisplay%3A%20block%3B%0Atext%2Dalign%3A%20center%3B%0Atext%2Ddecoration%3A%20none%3B%0Acolor%3A%20black%3B%0A%7D%0A%2Eleaflet%2Dbar%20a%2C%0A%2Eleaflet%2Dcontrol%2Dlayers%2Dtoggle%20%7B%0Abackground%2Dposition%3A%2050%25%2050%25%3B%0Abackground%2Drepeat%3A%20no%2Drepeat%3B%0Adisplay%3A%20block%3B%0A%7D%0A%2Eleaflet%2Dbar%20a%3Ahover%20%7B%0Abackground%2Dcolor%3A%20%23f4f4f4%3B%0A%7D%0A%2Eleaflet%2Dbar%20a%3Afirst%2Dchild%20%7B%0Aborder%2Dtop%2Dleft%2Dradius%3A%204px%3B%0Aborder%2Dtop%2Dright%2Dradius%3A%204px%3B%0A%7D%0A%2Eleaflet%2Dbar%20a%3Alast%2Dchild%20%7B%0Aborder%2Dbottom%2Dleft%2Dradius%3A%204px%3B%0Aborder%2Dbottom%2Dright%2Dradius%3A%204px%3B%0Aborder%2Dbottom%3A%20none%3B%0A%7D%0A%2Eleaflet%2Dbar%20a%2Eleaflet%2Ddisabled%20%7B%0Acursor%3A%20default%3B%0Abackground%2Dcolor%3A%20%23f4f4f4%3B%0Acolor%3A%20%23bbb%3B%0A%7D%0A%2Eleaflet%2Dtouch%20%2Eleaflet%2Dbar%20a%20%7B%0Awidth%3A%2030px%3B%0Aheight%3A%2030px%3B%0Aline%2Dheight%3A%2030px%3B%0A%7D%0A%0A%2Eleaflet%2Dcontrol%2Dzoom%2Din%2C%0A%2Eleaflet%2Dcontrol%2Dzoom%2Dout%20%7B%0Afont%3A%20bold%2018px%20%27Lucida%20Console%27%2C%20Monaco%2C%20monospace%3B%0Atext%2Dindent%3A%201px%3B%0A%7D%0A%2Eleaflet%2Dcontrol%2Dzoom%2Dout%20%7B%0Afont%2Dsize%3A%2020px%3B%0A%7D%0A%2Eleaflet%2Dtouch%20%2Eleaflet%2Dcontrol%2Dzoom%2Din%20%7B%0Afont%2Dsize%3A%2022px%3B%0A%7D%0A%2Eleaflet%2Dtouch%20%2Eleaflet%2Dcontrol%2Dzoom%2Dout%20%7B%0Afont%2Dsize%3A%2024px%3B%0A%7D%0A%0A%2Eleaflet%2Dcontrol%2Dlayers%20%7B%0Abox%2Dshadow%3A%200%201px%205px%20rgba%280%2C0%2C0%2C0%2E4%29%3B%0Abackground%3A%20%23fff%3B%0Aborder%2Dradius%3A%205px%3B%0A%7D%0A%2Eleaflet%2Dcontrol%2Dlayers%2Dtoggle%20%7B%0Abackground%2Dimage%3A%20url%28data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAYAAACpSkzOAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAVbSURBVEiJrZZfSFt3FMe%2Fv3tvbmLUZleNKSHE%2FLGRiNbGRovTtrA9lcFkpcOnMvawwhhjrb3soQ8djGFhXMQNRqEvY3R9kJVuPpRRWQebcdKYxkaHqcHchKJ2rVo1WhNz%2F%2Fz2UOLUadVuv9fvOedzfuec3x9CKcV%2B1qVLlwgAdHV17cuR7AfU29tb43a73wWAVCr1Q0dHx8T%2FCuru7i5ubGw843K5ms1mMwBgdXUV6XQ6HI1Gb3Z2dj7%2Fz6C%2Bvr6T1dXVp6xWa%2Bl2%2Buzs7PLk5OTP7e3tv70S6Pr1647q6uoOt9vtYRjmpcnouo5UKiVPTk72nj17dmpPIEmS%2BIaGhnaPx3O8tLSU3ahRSotyudzrAGAymf4ghGQ36svLy5osywOxWKxPFMX8jqBbt241ejyed%2Bx2e9nWjPL5fK2iKC2UUiMAEELWDAbDEM%2Fz41ttZ2Zmnsmy%2FOPp06ejm0DXrl2rqK2tPeNyuQ7zPL9pi5qmVaytrZ3Qdf3gdiVhGOYvo9H4O8uyc1sSI%2Bl0enR8fPzmuXPn5sjt27ff8nq9bwiCYNpSJsPa2lqzqqr1AF7eJEDnOG7MaDSGCSHKRmFhYSGXTCZ%2FZd1u93dOp3NJEAS9ICqK4snlcm%2Fpuu4EQHaBAADRdf2gqqo1hJBllmUXCsLjx4%2BL7t69e4Ztamqaffjw4QepVOr5oUOHDKqqvqkoShAAvwfA1sVrmlataVqlqqqzvb29lnA43KwoymeEUoqenp7XdF3vW11dPX7s2DHi9XpfgfHPSiaTuHfvHjWbzQMMw7SfP39%2BkUSj0ZOU0qsA%2FEtLSwiHwygpKUFraysOHDiwL0Amk8Hg4CBWVlbQ3NwMi8UCAHFCyIesw%2BH43uFwuAwGg9lkMsHj8SCfzyMUCkFRFNhsNux2YDVNQzQaRSgUgsvlwtGjR2EyvZitbDbL9Pf3H2YDgcD8xMREk67rCZvN5iSEkLKyMrjdbsiyjJGREVgslh13NzU1hf7%2Bfui6jra2NlitVhBCQCmlo6OjoYGBASWbzX5BKKW4cuWKhRDyk67rJ4LBIFNRUbEeaHZ2FpFIBDabDS0tLSgqKipkiqGhITx58gTBYBBWq3XdZ25uDpFIhLIsO8jzfPuFCxeekTt37rQCuAqgfmVlBfF4HOXl5Thy5Ah4%2FsXgUUoRj8chyzIaGhoAALFYDB6PB36%2FH4S8OAH5fB4PHjzA%2FPw8%2FH4%2FSkpKACAB4CPW6%2FXeqKysrOI4rpjnedjtdmSzWUSjURgMBgiCAEIIrFYrHA4HxsfHsbi4iNbWVtjt9nWILMsYGhpCeXk5ampqYDQaC3AyPDxcSy5evPg2IaTL6XTO%2B3y%2BNkIIAwCKoiCRSEBVVTQ1Ne3Yo0wmg%2BHhYXAcB5%2FPB4PBUJBoMpkclGW5lFJ6mVBKIYpiMYDLHMedCgQCnCAI%2FoL1wsICEokEHA4H6uvr1ydQ13WMjY1hamoKPp8PgiBshE%2Fev38%2FoyjKLwA%2BlyTp%2BabbWxTFOgDfCIKAQCAQ4DiutNCjdDqNp0%2BfIhAIAABGRkZQWVkJl8u1Xj5N01Zjsdjw3NwcBfCxJEl%2FFmL%2F6z0SRZEAeJ8QIvp8vsWqqqqWgpbL5RCPxwEAfr9%2F%2FawAwPT0dDgejxfput4D4FtJkjYF3vGFFUWxHMCXRqPxcDAYtBYXF1dtZ5fNZmcikcijbDY7DuBTSZLmt7Pb9c8gimIbIeQrm82Wqaura2EYxggAlFI1Ho8PTk9PmymlnZIkhV4WZ0%2B%2FIFEUOQCdDMO8V19fn2NZ1hCLxaimaTcAdEuSpO4WY1%2F%2FOlEUnQC%2BBkABfCJJ0qO9%2Bv4NmO9xnZob3WcAAAAASUVORK5CYII%3D%29%3B%0Awidth%3A%2036px%3B%0Aheight%3A%2036px%3B%0A%7D%0A%2Eleaflet%2Dretina%20%2Eleaflet%2Dcontrol%2Dlayers%2Dtoggle%20%7B%0Abackground%2Dimage%3A%20url%28data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAADQAAAA0CAYAAADFeBvrAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAbrwAAG68BXhqRHAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAArPSURBVGiB3Zp7TFvXHce%2F916%2FeBhCDInJwDjGBhvjQHi5SclaKRL5Z1Wl%2FrEq%2FWNr11TJmkpMw900pLVrplJ1cadFarp0zdZmmpZpf3SqNrUKfSnKgwI2sQPGBmNjAsUOxCW8bGzfe8%2F%2BSEAkMfa1A5m075%2F2%2Bf3O%2BZ7X595zLkUIwf%2BT6EdRSWdnp7izs1P8KOqitnqE3n%2F%2F%2FQMajeYZAPD7%2FR8fPXr00lbWt2WGTp48qdRoNC%2Fs2bNHXVhYyALA%2FPy86Pr16wG%2F3%2F%2Fhq6%2B%2BGtqKejfdUGdnJ6XT6Q4bDIZWjUaTNLnf76fcbvdlr9d7vqura1MbsKmGTp8%2BXadWqw%2Fv3bu3UCQS8anKsixLX7t2bT4QCJw%2Ffvy4c7PasCmGTpw4Ia%2BqqnrRZDIZSkpK2ExiZ2dnRYODg%2B7R0dE%2Fv%2Fbaa4sP25aHNnT27Nkf6HS6QwaD4aF2TLfbzXu93gtHjhz5z8PkydrQqVOnKtVq9Y%2Fq6uqUubm5GY3KRopEIiKn0xkKBAJ%2FbW9v92WTI2NDnZ2dYoPB8ILRaGwoKyvjsqk0naamphiXyzXgdrs%2F7OrqSmQSm5GhM2fOHNBoNM%2FU1dVJKYoSFEgIEcVisWYAkEql%2FRRFCRpNQgjldDpjfr%2F%2F42PHjglmlyBDJ0%2BeVO7evfsndXV1FatMEaJEIqGOx%2BMHCCFyAKAoalEikVwSi8UBoTnm5%2BdFTqdzYnx8%2FC9C2JXS0CpT9Hr9gcrKypTb8HrxPJ%2B%2FsrJygOf53cn%2Bp2l6XCaTXaJpekloTp%2FPR3s8nkvp2LWhoXfffbderVYfbmhoKEjHlPVtjcVidSzLNhFCUj67URSVEIlENqlU6gQgKD%2FLsvTAwMBCIBA4%2F8orrziS5r3f0IkTJ%2BQ6ne6IyWQy7NixQ%2FCCZFm2NB6PP8Hz%2FHahMQBA0%2FR3EonkokgkCgqNmZmZEQ8ODrq9Xu%2FZ%2B9l1j6EPPvjgKZ1Od6impoYSmpzneVksFtvHcZxBaEwyMQzjlkqlPTRNrwiNGR4eJl6v98JLL73079XfKEIITp06VVlRUfHj%2Bvr6nZkwJR6P6xOJxH5CiCxTA8lEUdSKWCy%2BKpFIPEJjIpGIyOFw3JyYmDjX3t7uo86dO3fUaDQ2lJeXCzbCcdz2WCz2BM%2Fzpdk1PbVomg5KpdKLDMN8JzRmcnJS5HK5Bhi9Xv9RcXHx7V27dqUd6rtMMcfj8YOEkIKHa3bKeuQsy9bwPC9mGCZEUVTaTWNsbKzQbrc%2FRXV0dBAAMYVCcfnpp5%2BeKC4uTmrsfqY8KqVj161bt2SffPJJRTgcbgUgZVpbW3sIIQei0Wij0%2BksmZubW9DpdEsUdWdf4Hk%2BPxqNHmRZtgWA9NFZWZOU4zgdy7LFd0crDgCEEHz66aelX3zxxfcjkUg9gAmapg8zV65c8fX09PwpHo%2FzhJC22dnZ2oGBARQUFCwVFBTUxOPxQ4QQxf%2FAyD0ihBSxLFtDCCFerzdy%2Fvz5PcFg8CAhRAqgSy6XP%2Ffmm2%2BO3LNtd3R0VFEU9R6AgyKRiNfr9fS%2BffsgFj%2BS8420SiQS6Onpgcfj4VmWpQF8SQh5%2BZ133hldLSNaH%2FDss8%2BGGYYJ3Lhxg9jtdnpoaAiTk5NoampCdXX1IzewXiMjI7DZbJifn4dMJqPNZjNRqVQBjuPC68utjhA1MDDwPIDfASgG7vSGw%2BHA2NgYAEClUmH%2F%2Fv0oKip6pEbm5uZw9epV3LhxAwCg1WpRX1%2B%2FftbcAvCLhoaGjwAQyuFwGDmOOwOgNVnCcDiMvr4%2BzM3NQSaTwWg0orm5GTS9tUd6PM%2Bjv78fLpcLKysrKCoqQktLCxSKDZfzZYZhjjFarfYfKpWqmabppAslNzcXWq0WMpkMwWAQU1NTCAQCyM%2FPx7Zt27bEzMTEBD7%2F%2FHP4fD5QFIWGhgaYzWbk5uZuGMNxXPHXX39tYkwm07nh4eGZ3Nxcz%2Fbt27%2BXrDBFUVAoFNBoNIhEIggGg%2FD5fLh9%2BzaUSuWmbRqRSAQXL15EX18flpeXoVKp8OSTT0KpVGIVI8nk8%2Fn6uru7xYuLi3WrHDr07bffmvx%2Bf295eTktkUiSwlMsFkOlUqGkpAQzMzMIBoPwer0AAKVS%2BVBmHA4HvvrqK4RCIeTl5aG1tRU1NTUpO2t5eXn6s88%2BGx4fHzcDmKVp%2BjBFCMEbb7whW1xc%2FBWAXwJgKysrbS0tLY9TFCXaKBnP8xgaGoLb7QbHcSgtLcW%2BffsyNhYKhdDT04NgMAiGYWAwGFBbW5tyjRJC2L6%2Bvis%2Bn68Jd3bqt%2BVy%2BVuvv%2F76yoYcysvLi5nNZmm6Bi4sLMBmsyEUCkEsFkOv1%2BOxxx5LOw0TiQS%2B%2BeYbeDweJBIJKJVKNDU1oaAg9SNiKBRCb28vu7y8LEISDt1jqLu7ezuAt0Oh0IsjIyNUPB5HeXk5mpubIZWmfuqZmJiA3W7HysoKCgsLU7LrPqagsbERFRUVKfPHYjH09%2FdjcnISEokE1dXVUCqV%2FwLQ3tbWNvmAoe7u7ucBnMRdDrEsC6%2FXu5bAZDKhqqoq5eJMxy4BTHlAhBCMjo5icHAQqx2s0%2BkgEq2thiUAvwFwqq2tjaUuXLhQA%2BCPAL6fLOHCwgJcLhcWFxeFsADAg%2Byqra0FAAwNDQllygN55HI5jEZjqil5HcBPmerq6r%2Ft2LFjL8MwOclKSaVSlJWVQSKRIBQKwefzIRqNYufOnRsu3GTsmp6eFswUlmVht9ths9mQSCRQVVUFo9EImWzjF2OO4%2BROp1NPdXR0JAAsaLVat0ajeXzDCNyZxx6PBzdv3kROTg727t0LtVqdKgTRaBR2ux0A0NjYiJycpP22pkAggGvXrq11ml6vT7t%2Bp6en%2B10uVykhpIzq6OhoA%2FAegEqxWOxsamrKl8vllakShMNhDA8Pr1VqNpuRn5%2BfstJ0WlpaQm9v71pn1dTUpJ2S0Wh02mazTUajUTMAH4CXKUIILBaLDMAqh%2BiSkpIre%2FbsaWEYZsN5wfM8%2FH4%2FAoEAKIqCwWCAyWRKuWkkEyEEg4ODcLvdIIRArVZDo9Gk5ZDb7b4yNTW1xiEAb1mt1ns5ZLFYqnBntA5SFDVlNBqDu3btak7VoOXlZXg8HoTDYeTn56OlpUUwXEOhEPr6%2BrC0tASFQgG9Xo%2B8vLyUMeFweNDhcEg5jqsC8CWAl61Wa3IOrTP2HIDfA9iZk5PT29TUVJ6Tk7MrXeNGRkYghF0bMCWlkUQiMWe324cWFhZaAcwA%2BLnVav37%2FeU2PAq2WCyFALoAHAMQLSsrsxkMhpSPQ%2BnYJYApSeX3%2By%2BPjY3VANgG4AyATqvVOp%2BsbNrbB4vF0nw3SQPDMKP19fUxhUJhShWTjF0AMmEKAGBxcdFns9mWEolEHYABAMesVmt%2FqhhB1ykWi4UBcBzAbwHICwoKLjc2NtaKxeINX18JIZicnMTY2Bh4%2Fs6xGk3T0Gq1KC8vT7l5cBwXuX79et%2Fs7OzjAKIAfg3gtNVqTXvBltGFl8ViKQXwBwA%2FBPCdVqsd1mg0Sd90V7XKLgAZMwXAPwH8zGq1Cj7Iz%2BqO1WKxZMyudErGFKvV2p1pnqwvjbNhVzKlYko27Xroa%2F1s2LWqdEzJRpv2JUkm7BLKlGy0qZ%2FGCGFXJkzJRlvyNVYydkkkktxMmZKNtuzzsvvZBYADEEEGTMlGW%2F4B4Dp2ARkyJRv9F9vsxWD%2F43R9AAAAAElFTkSuQmCC%29%3B%0Abackground%2Dsize%3A%2026px%2026px%3B%0A%7D%0A%2Eleaflet%2Dtouch%20%2Eleaflet%2Dcontrol%2Dlayers%2Dtoggle%20%7B%0Awidth%3A%2044px%3B%0Aheight%3A%2044px%3B%0A%7D%0A%2Eleaflet%2Dcontrol%2Dlayers%20%2Eleaflet%2Dcontrol%2Dlayers%2Dlist%2C%0A%2Eleaflet%2Dcontrol%2Dlayers%2Dexpanded%20%2Eleaflet%2Dcontrol%2Dlayers%2Dtoggle%20%7B%0Adisplay%3A%20none%3B%0A%7D%0A%2Eleaflet%2Dcontrol%2Dlayers%2Dexpanded%20%2Eleaflet%2Dcontrol%2Dlayers%2Dlist%20%7B%0Adisplay%3A%20block%3B%0Aposition%3A%20relative%3B%0A%7D%0A%2Eleaflet%2Dcontrol%2Dlayers%2Dexpanded%20%7B%0Apadding%3A%206px%2010px%206px%206px%3B%0Acolor%3A%20%23333%3B%0Abackground%3A%20%23fff%3B%0A%7D%0A%2Eleaflet%2Dcontrol%2Dlayers%2Dselector%20%7B%0Amargin%2Dtop%3A%202px%3B%0Aposition%3A%20relative%3B%0Atop%3A%201px%3B%0A%7D%0A%2Eleaflet%2Dcontrol%2Dlayers%20label%20%7B%0Adisplay%3A%20block%3B%0A%7D%0A%2Eleaflet%2Dcontrol%2Dlayers%2Dseparator%20%7B%0Aheight%3A%200%3B%0Aborder%2Dtop%3A%201px%20solid%20%23ddd%3B%0Amargin%3A%205px%20%2D10px%205px%20%2D6px%3B%0A%7D%0A%0A%2Eleaflet%2Dcontainer%20%2Eleaflet%2Dcontrol%2Dattribution%20%7B%0Abackground%3A%20%23fff%3B%0Abackground%3A%20rgba%28255%2C%20255%2C%20255%2C%200%2E7%29%3B%0Amargin%3A%200%3B%0A%7D%0A%2Eleaflet%2Dcontrol%2Dattribution%2C%0A%2Eleaflet%2Dcontrol%2Dscale%2Dline%20%7B%0Apadding%3A%200%205px%3B%0Acolor%3A%20%23333%3B%0A%7D%0A%2Eleaflet%2Dcontrol%2Dattribution%20a%20%7B%0Atext%2Ddecoration%3A%20none%3B%0A%7D%0A%2Eleaflet%2Dcontrol%2Dattribution%20a%3Ahover%20%7B%0Atext%2Ddecoration%3A%20underline%3B%0A%7D%0A%2Eleaflet%2Dcontainer%20%2Eleaflet%2Dcontrol%2Dattribution%2C%0A%2Eleaflet%2Dcontainer%20%2Eleaflet%2Dcontrol%2Dscale%20%7B%0Afont%2Dsize%3A%2011px%3B%0A%7D%0A%2Eleaflet%2Dleft%20%2Eleaflet%2Dcontrol%2Dscale%20%7B%0Amargin%2Dleft%3A%205px%3B%0A%7D%0A%2Eleaflet%2Dbottom%20%2Eleaflet%2Dcontrol%2Dscale%20%7B%0Amargin%2Dbottom%3A%205px%3B%0A%7D%0A%2Eleaflet%2Dcontrol%2Dscale%2Dline%20%7B%0Aborder%3A%202px%20solid%20%23777%3B%0Aborder%2Dtop%3A%20none%3B%0Aline%2Dheight%3A%201%2E1%3B%0Apadding%3A%202px%205px%201px%3B%0Afont%2Dsize%3A%2011px%3B%0Awhite%2Dspace%3A%20nowrap%3B%0Aoverflow%3A%20hidden%3B%0A%2Dmoz%2Dbox%2Dsizing%3A%20content%2Dbox%3B%0Abox%2Dsizing%3A%20content%2Dbox%3B%0Abackground%3A%20%23fff%3B%0Abackground%3A%20rgba%28255%2C%20255%2C%20255%2C%200%2E5%29%3B%0A%7D%0A%2Eleaflet%2Dcontrol%2Dscale%2Dline%3Anot%28%3Afirst%2Dchild%29%20%7B%0Aborder%2Dtop%3A%202px%20solid%20%23777%3B%0Aborder%2Dbottom%3A%20none%3B%0Amargin%2Dtop%3A%20%2D2px%3B%0A%7D%0A%2Eleaflet%2Dcontrol%2Dscale%2Dline%3Anot%28%3Afirst%2Dchild%29%3Anot%28%3Alast%2Dchild%29%20%7B%0Aborder%2Dbottom%3A%202px%20solid%20%23777%3B%0A%7D%0A%2Eleaflet%2Dtouch%20%2Eleaflet%2Dcontrol%2Dattribution%2C%0A%2Eleaflet%2Dtouch%20%2Eleaflet%2Dcontrol%2Dlayers%2C%0A%2Eleaflet%2Dtouch%20%2Eleaflet%2Dbar%20%7B%0Abox%2Dshadow%3A%20none%3B%0A%7D%0A%2Eleaflet%2Dtouch%20%2Eleaflet%2Dcontrol%2Dlayers%2C%0A%2Eleaflet%2Dtouch%20%2Eleaflet%2Dbar%20%7B%0Aborder%3A%202px%20solid%20rgba%280%2C0%2C0%2C0%2E2%29%3B%0Abackground%2Dclip%3A%20padding%2Dbox%3B%0A%7D%0A%0A%2Eleaflet%2Dpopup%20%7B%0Aposition%3A%20absolute%3B%0Atext%2Dalign%3A%20center%3B%0A%7D%0A%2Eleaflet%2Dpopup%2Dcontent%2Dwrapper%20%7B%0Apadding%3A%201px%3B%0Atext%2Dalign%3A%20left%3B%0Aborder%2Dradius%3A%2012px%3B%0A%7D%0A%2Eleaflet%2Dpopup%2Dcontent%20%7B%0Amargin%3A%2013px%2019px%3B%0Aline%2Dheight%3A%201%2E4%3B%0A%7D%0A%2Eleaflet%2Dpopup%2Dcontent%20p%20%7B%0Amargin%3A%2018px%200%3B%0A%7D%0A%2Eleaflet%2Dpopup%2Dtip%2Dcontainer%20%7B%0Amargin%3A%200%20auto%3B%0Awidth%3A%2040px%3B%0Aheight%3A%2020px%3B%0Aposition%3A%20relative%3B%0Aoverflow%3A%20hidden%3B%0A%7D%0A%2Eleaflet%2Dpopup%2Dtip%20%7B%0Awidth%3A%2017px%3B%0Aheight%3A%2017px%3B%0Apadding%3A%201px%3B%0Amargin%3A%20%2D10px%20auto%200%3B%0A%2Dwebkit%2Dtransform%3A%20rotate%2845deg%29%3B%0A%2Dmoz%2Dtransform%3A%20rotate%2845deg%29%3B%0A%2Dms%2Dtransform%3A%20rotate%2845deg%29%3B%0A%2Do%2Dtransform%3A%20rotate%2845deg%29%3B%0Atransform%3A%20rotate%2845deg%29%3B%0A%7D%0A%2Eleaflet%2Dpopup%2Dcontent%2Dwrapper%2C%0A%2Eleaflet%2Dpopup%2Dtip%20%7B%0Abackground%3A%20white%3B%0Abox%2Dshadow%3A%200%203px%2014px%20rgba%280%2C0%2C0%2C0%2E4%29%3B%0A%7D%0A%2Eleaflet%2Dcontainer%20a%2Eleaflet%2Dpopup%2Dclose%2Dbutton%20%7B%0Aposition%3A%20absolute%3B%0Atop%3A%200%3B%0Aright%3A%200%3B%0Apadding%3A%204px%204px%200%200%3B%0Atext%2Dalign%3A%20center%3B%0Awidth%3A%2018px%3B%0Aheight%3A%2014px%3B%0Afont%3A%2016px%2F14px%20Tahoma%2C%20Verdana%2C%20sans%2Dserif%3B%0Acolor%3A%20%23c3c3c3%3B%0Atext%2Ddecoration%3A%20none%3B%0Afont%2Dweight%3A%20bold%3B%0Abackground%3A%20transparent%3B%0A%7D%0A%2Eleaflet%2Dcontainer%20a%2Eleaflet%2Dpopup%2Dclose%2Dbutton%3Ahover%20%7B%0Acolor%3A%20%23999%3B%0A%7D%0A%2Eleaflet%2Dpopup%2Dscrolled%20%7B%0Aoverflow%3A%20auto%3B%0Aborder%2Dbottom%3A%201px%20solid%20%23ddd%3B%0Aborder%2Dtop%3A%201px%20solid%20%23ddd%3B%0A%7D%0A%2Eleaflet%2Doldie%20%2Eleaflet%2Dpopup%2Dcontent%2Dwrapper%20%7B%0Azoom%3A%201%3B%0A%7D%0A%2Eleaflet%2Doldie%20%2Eleaflet%2Dpopup%2Dtip%20%7B%0Awidth%3A%2024px%3B%0Amargin%3A%200%20auto%3B%0A%2Dms%2Dfilter%3A%20%22progid%3ADXImageTransform%2EMicrosoft%2EMatrix%28M11%3D0%2E70710678%2C%20M12%3D0%2E70710678%2C%20M21%3D%2D0%2E70710678%2C%20M22%3D0%2E70710678%29%22%3B%0Afilter%3A%20progid%3ADXImageTransform%2EMicrosoft%2EMatrix%28M11%3D0%2E70710678%2C%20M12%3D0%2E70710678%2C%20M21%3D%2D0%2E70710678%2C%20M22%3D0%2E70710678%29%3B%0A%7D%0A%2Eleaflet%2Doldie%20%2Eleaflet%2Dpopup%2Dtip%2Dcontainer%20%7B%0Amargin%2Dtop%3A%20%2D1px%3B%0A%7D%0A%2Eleaflet%2Doldie%20%2Eleaflet%2Dcontrol%2Dzoom%2C%0A%2Eleaflet%2Doldie%20%2Eleaflet%2Dcontrol%2Dlayers%2C%0A%2Eleaflet%2Doldie%20%2Eleaflet%2Dpopup%2Dcontent%2Dwrapper%2C%0A%2Eleaflet%2Doldie%20%2Eleaflet%2Dpopup%2Dtip%20%7B%0Aborder%3A%201px%20solid%20%23999%3B%0A%7D%0A%0A%2Eleaflet%2Ddiv%2Dicon%20%7B%0Abackground%3A%20%23fff%3B%0Aborder%3A%201px%20solid%20%23666%3B%0A%7D%0A" rel="stylesheet" />
<script src="data:application/x-javascript;base64,LyoKIExlYWZsZXQsIGEgSmF2YVNjcmlwdCBsaWJyYXJ5IGZvciBtb2JpbGUtZnJpZW5kbHkgaW50ZXJhY3RpdmUgbWFwcy4gaHR0cDovL2xlYWZsZXRqcy5jb20KIChjKSAyMDEwLTIwMTMsIFZsYWRpbWlyIEFnYWZvbmtpbgogKGMpIDIwMTAtMjAxMSwgQ2xvdWRNYWRlCiovCiFmdW5jdGlvbih0LGUsaSl7dmFyIG49dC5MLG89e307by52ZXJzaW9uPSIwLjcuMyIsIm9iamVjdCI9PXR5cGVvZiBtb2R1bGUmJiJvYmplY3QiPT10eXBlb2YgbW9kdWxlLmV4cG9ydHM/bW9kdWxlLmV4cG9ydHM9bzoiZnVuY3Rpb24iPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kJiZkZWZpbmUobyksby5ub0NvbmZsaWN0PWZ1bmN0aW9uKCl7cmV0dXJuIHQuTD1uLHRoaXN9LHQuTD1vLG8uVXRpbD17ZXh0ZW5kOmZ1bmN0aW9uKHQpe3ZhciBlLGksbixvLHM9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpO2ZvcihpPTAsbj1zLmxlbmd0aDtuPmk7aSsrKXtvPXNbaV18fHt9O2ZvcihlIGluIG8pby5oYXNPd25Qcm9wZXJ0eShlKSYmKHRbZV09b1tlXSl9cmV0dXJuIHR9LGJpbmQ6ZnVuY3Rpb24odCxlKXt2YXIgaT1hcmd1bWVudHMubGVuZ3RoPjI/QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDIpOm51bGw7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHQuYXBwbHkoZSxpfHxhcmd1bWVudHMpfX0sc3RhbXA6ZnVuY3Rpb24oKXt2YXIgdD0wLGU9Il9sZWFmbGV0X2lkIjtyZXR1cm4gZnVuY3Rpb24oaSl7cmV0dXJuIGlbZV09aVtlXXx8Kyt0LGlbZV19fSgpLGludm9rZUVhY2g6ZnVuY3Rpb24odCxlLGkpe3ZhciBuLG87aWYoIm9iamVjdCI9PXR5cGVvZiB0KXtvPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywzKTtmb3IobiBpbiB0KWUuYXBwbHkoaSxbbix0W25dXS5jb25jYXQobykpO3JldHVybiEwfXJldHVybiExfSxsaW1pdEV4ZWNCeUludGVydmFsOmZ1bmN0aW9uKHQsZSxpKXt2YXIgbixvO3JldHVybiBmdW5jdGlvbiBzKCl7dmFyIGE9YXJndW1lbnRzO3JldHVybiBuP3ZvaWQobz0hMCk6KG49ITAsc2V0VGltZW91dChmdW5jdGlvbigpe249ITEsbyYmKHMuYXBwbHkoaSxhKSxvPSExKX0sZSksdm9pZCB0LmFwcGx5KGksYSkpfX0sZmFsc2VGbjpmdW5jdGlvbigpe3JldHVybiExfSxmb3JtYXROdW06ZnVuY3Rpb24odCxlKXt2YXIgaT1NYXRoLnBvdygxMCxlfHw1KTtyZXR1cm4gTWF0aC5yb3VuZCh0KmkpL2l9LHRyaW06ZnVuY3Rpb24odCl7cmV0dXJuIHQudHJpbT90LnRyaW0oKTp0LnJlcGxhY2UoL15ccyt8XHMrJC9nLCIiKX0sc3BsaXRXb3JkczpmdW5jdGlvbih0KXtyZXR1cm4gby5VdGlsLnRyaW0odCkuc3BsaXQoL1xzKy8pfSxzZXRPcHRpb25zOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQub3B0aW9ucz1vLmV4dGVuZCh7fSx0Lm9wdGlvbnMsZSksdC5vcHRpb25zfSxnZXRQYXJhbVN0cmluZzpmdW5jdGlvbih0LGUsaSl7dmFyIG49W107Zm9yKHZhciBvIGluIHQpbi5wdXNoKGVuY29kZVVSSUNvbXBvbmVudChpP28udG9VcHBlckNhc2UoKTpvKSsiPSIrZW5jb2RlVVJJQ29tcG9uZW50KHRbb10pKTtyZXR1cm4oZSYmLTEhPT1lLmluZGV4T2YoIj8iKT8iJiI6Ij8iKStuLmpvaW4oIiYiKX0sdGVtcGxhdGU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5yZXBsYWNlKC9ceyAqKFtcd19dKykgKlx9L2csZnVuY3Rpb24odCxuKXt2YXIgbz1lW25dO2lmKG89PT1pKXRocm93IG5ldyBFcnJvcigiTm8gdmFsdWUgcHJvdmlkZWQgZm9yIHZhcmlhYmxlICIrdCk7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIG8mJihvPW8oZSkpLG99KX0saXNBcnJheTpBcnJheS5pc0FycmF5fHxmdW5jdGlvbih0KXtyZXR1cm4iW29iamVjdCBBcnJheV0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfSxlbXB0eUltYWdlVXJsOiJkYXRhOmltYWdlL2dpZjtiYXNlNjQsUjBsR09EbGhBUUFCQUFEL0FDd0FBQUFBQVFBQkFBQUNBRHM9In0sZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUpe3ZhciBpLG4sbz1bIndlYmtpdCIsIm1veiIsIm8iLCJtcyJdO2ZvcihpPTA7aTxvLmxlbmd0aCYmIW47aSsrKW49dFtvW2ldK2VdO3JldHVybiBufWZ1bmN0aW9uIGkoZSl7dmFyIGk9K25ldyBEYXRlLG89TWF0aC5tYXgoMCwxNi0oaS1uKSk7cmV0dXJuIG49aStvLHQuc2V0VGltZW91dChlLG8pfXZhciBuPTAscz10LnJlcXVlc3RBbmltYXRpb25GcmFtZXx8ZSgiUmVxdWVzdEFuaW1hdGlvbkZyYW1lIil8fGksYT10LmNhbmNlbEFuaW1hdGlvbkZyYW1lfHxlKCJDYW5jZWxBbmltYXRpb25GcmFtZSIpfHxlKCJDYW5jZWxSZXF1ZXN0QW5pbWF0aW9uRnJhbWUiKXx8ZnVuY3Rpb24oZSl7dC5jbGVhclRpbWVvdXQoZSl9O28uVXRpbC5yZXF1ZXN0QW5pbUZyYW1lPWZ1bmN0aW9uKGUsbixhLHIpe3JldHVybiBlPW8uYmluZChlLG4pLGEmJnM9PT1pP3ZvaWQgZSgpOnMuY2FsbCh0LGUscil9LG8uVXRpbC5jYW5jZWxBbmltRnJhbWU9ZnVuY3Rpb24oZSl7ZSYmYS5jYWxsKHQsZSl9fSgpLG8uZXh0ZW5kPW8uVXRpbC5leHRlbmQsby5iaW5kPW8uVXRpbC5iaW5kLG8uc3RhbXA9by5VdGlsLnN0YW1wLG8uc2V0T3B0aW9ucz1vLlV0aWwuc2V0T3B0aW9ucyxvLkNsYXNzPWZ1bmN0aW9uKCl7fSxvLkNsYXNzLmV4dGVuZD1mdW5jdGlvbih0KXt2YXIgZT1mdW5jdGlvbigpe3RoaXMuaW5pdGlhbGl6ZSYmdGhpcy5pbml0aWFsaXplLmFwcGx5KHRoaXMsYXJndW1lbnRzKSx0aGlzLl9pbml0SG9va3MmJnRoaXMuY2FsbEluaXRIb29rcygpfSxpPWZ1bmN0aW9uKCl7fTtpLnByb3RvdHlwZT10aGlzLnByb3RvdHlwZTt2YXIgbj1uZXcgaTtuLmNvbnN0cnVjdG9yPWUsZS5wcm90b3R5cGU9bjtmb3IodmFyIHMgaW4gdGhpcyl0aGlzLmhhc093blByb3BlcnR5KHMpJiYicHJvdG90eXBlIiE9PXMmJihlW3NdPXRoaXNbc10pO3Quc3RhdGljcyYmKG8uZXh0ZW5kKGUsdC5zdGF0aWNzKSxkZWxldGUgdC5zdGF0aWNzKSx0LmluY2x1ZGVzJiYoby5VdGlsLmV4dGVuZC5hcHBseShudWxsLFtuXS5jb25jYXQodC5pbmNsdWRlcykpLGRlbGV0ZSB0LmluY2x1ZGVzKSx0Lm9wdGlvbnMmJm4ub3B0aW9ucyYmKHQub3B0aW9ucz1vLmV4dGVuZCh7fSxuLm9wdGlvbnMsdC5vcHRpb25zKSksby5leHRlbmQobix0KSxuLl9pbml0SG9va3M9W107dmFyIGE9dGhpcztyZXR1cm4gZS5fX3N1cGVyX189YS5wcm90b3R5cGUsbi5jYWxsSW5pdEhvb2tzPWZ1bmN0aW9uKCl7aWYoIXRoaXMuX2luaXRIb29rc0NhbGxlZCl7YS5wcm90b3R5cGUuY2FsbEluaXRIb29rcyYmYS5wcm90b3R5cGUuY2FsbEluaXRIb29rcy5jYWxsKHRoaXMpLHRoaXMuX2luaXRIb29rc0NhbGxlZD0hMDtmb3IodmFyIHQ9MCxlPW4uX2luaXRIb29rcy5sZW5ndGg7ZT50O3QrKyluLl9pbml0SG9va3NbdF0uY2FsbCh0aGlzKX19LGV9LG8uQ2xhc3MuaW5jbHVkZT1mdW5jdGlvbih0KXtvLmV4dGVuZCh0aGlzLnByb3RvdHlwZSx0KX0sby5DbGFzcy5tZXJnZU9wdGlvbnM9ZnVuY3Rpb24odCl7by5leHRlbmQodGhpcy5wcm90b3R5cGUub3B0aW9ucyx0KX0sby5DbGFzcy5hZGRJbml0SG9vaz1mdW5jdGlvbih0KXt2YXIgZT1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMSksaT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OmZ1bmN0aW9uKCl7dGhpc1t0XS5hcHBseSh0aGlzLGUpfTt0aGlzLnByb3RvdHlwZS5faW5pdEhvb2tzPXRoaXMucHJvdG90eXBlLl9pbml0SG9va3N8fFtdLHRoaXMucHJvdG90eXBlLl9pbml0SG9va3MucHVzaChpKX07dmFyIHM9Il9sZWFmbGV0X2V2ZW50cyI7by5NaXhpbj17fSxvLk1peGluLkV2ZW50cz17YWRkRXZlbnRMaXN0ZW5lcjpmdW5jdGlvbih0LGUsaSl7aWYoby5VdGlsLmludm9rZUVhY2godCx0aGlzLmFkZEV2ZW50TGlzdGVuZXIsdGhpcyxlLGkpKXJldHVybiB0aGlzO3ZhciBuLGEscixoLGwsdSxjLGQ9dGhpc1tzXT10aGlzW3NdfHx7fSxwPWkmJmkhPT10aGlzJiZvLnN0YW1wKGkpO2Zvcih0PW8uVXRpbC5zcGxpdFdvcmRzKHQpLG49MCxhPXQubGVuZ3RoO2E+bjtuKyspcj17YWN0aW9uOmUsY29udGV4dDppfHx0aGlzfSxoPXRbbl0scD8obD1oKyJfaWR4Iix1PWwrIl9sZW4iLGM9ZFtsXT1kW2xdfHx7fSxjW3BdfHwoY1twXT1bXSxkW3VdPShkW3VdfHwwKSsxKSxjW3BdLnB1c2gocikpOihkW2hdPWRbaF18fFtdLGRbaF0ucHVzaChyKSk7cmV0dXJuIHRoaXN9LGhhc0V2ZW50TGlzdGVuZXJzOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXNbc107cmV0dXJuISFlJiYodCBpbiBlJiZlW3RdLmxlbmd0aD4wfHx0KyJfaWR4ImluIGUmJmVbdCsiX2lkeF9sZW4iXT4wKX0scmVtb3ZlRXZlbnRMaXN0ZW5lcjpmdW5jdGlvbih0LGUsaSl7aWYoIXRoaXNbc10pcmV0dXJuIHRoaXM7aWYoIXQpcmV0dXJuIHRoaXMuY2xlYXJBbGxFdmVudExpc3RlbmVycygpO2lmKG8uVXRpbC5pbnZva2VFYWNoKHQsdGhpcy5yZW1vdmVFdmVudExpc3RlbmVyLHRoaXMsZSxpKSlyZXR1cm4gdGhpczt2YXIgbixhLHIsaCxsLHUsYyxkLHAsXz10aGlzW3NdLG09aSYmaSE9PXRoaXMmJm8uc3RhbXAoaSk7Zm9yKHQ9by5VdGlsLnNwbGl0V29yZHModCksbj0wLGE9dC5sZW5ndGg7YT5uO24rKylpZihyPXRbbl0sdT1yKyJfaWR4IixjPXUrIl9sZW4iLGQ9X1t1XSxlKXtpZihoPW0mJmQ/ZFttXTpfW3JdKXtmb3IobD1oLmxlbmd0aC0xO2w+PTA7bC0tKWhbbF0uYWN0aW9uIT09ZXx8aSYmaFtsXS5jb250ZXh0IT09aXx8KHA9aC5zcGxpY2UobCwxKSxwWzBdLmFjdGlvbj1vLlV0aWwuZmFsc2VGbik7aSYmZCYmMD09PWgubGVuZ3RoJiYoZGVsZXRlIGRbbV0sX1tjXS0tKX19ZWxzZSBkZWxldGUgX1tyXSxkZWxldGUgX1t1XSxkZWxldGUgX1tjXTtyZXR1cm4gdGhpc30sY2xlYXJBbGxFdmVudExpc3RlbmVyczpmdW5jdGlvbigpe3JldHVybiBkZWxldGUgdGhpc1tzXSx0aGlzfSxmaXJlRXZlbnQ6ZnVuY3Rpb24odCxlKXtpZighdGhpcy5oYXNFdmVudExpc3RlbmVycyh0KSlyZXR1cm4gdGhpczt2YXIgaSxuLGEscixoLGw9by5VdGlsLmV4dGVuZCh7fSxlLHt0eXBlOnQsdGFyZ2V0OnRoaXN9KSx1PXRoaXNbc107aWYodVt0XSlmb3IoaT11W3RdLnNsaWNlKCksbj0wLGE9aS5sZW5ndGg7YT5uO24rKylpW25dLmFjdGlvbi5jYWxsKGlbbl0uY29udGV4dCxsKTtyPXVbdCsiX2lkeCJdO2ZvcihoIGluIHIpaWYoaT1yW2hdLnNsaWNlKCkpZm9yKG49MCxhPWkubGVuZ3RoO2E+bjtuKyspaVtuXS5hY3Rpb24uY2FsbChpW25dLmNvbnRleHQsbCk7cmV0dXJuIHRoaXN9LGFkZE9uZVRpbWVFdmVudExpc3RlbmVyOmZ1bmN0aW9uKHQsZSxpKXtpZihvLlV0aWwuaW52b2tlRWFjaCh0LHRoaXMuYWRkT25lVGltZUV2ZW50TGlzdGVuZXIsdGhpcyxlLGkpKXJldHVybiB0aGlzO3ZhciBuPW8uYmluZChmdW5jdGlvbigpe3RoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcih0LGUsaSkucmVtb3ZlRXZlbnRMaXN0ZW5lcih0LG4saSl9LHRoaXMpO3JldHVybiB0aGlzLmFkZEV2ZW50TGlzdGVuZXIodCxlLGkpLmFkZEV2ZW50TGlzdGVuZXIodCxuLGkpfX0sby5NaXhpbi5FdmVudHMub249by5NaXhpbi5FdmVudHMuYWRkRXZlbnRMaXN0ZW5lcixvLk1peGluLkV2ZW50cy5vZmY9by5NaXhpbi5FdmVudHMucmVtb3ZlRXZlbnRMaXN0ZW5lcixvLk1peGluLkV2ZW50cy5vbmNlPW8uTWl4aW4uRXZlbnRzLmFkZE9uZVRpbWVFdmVudExpc3RlbmVyLG8uTWl4aW4uRXZlbnRzLmZpcmU9by5NaXhpbi5FdmVudHMuZmlyZUV2ZW50LGZ1bmN0aW9uKCl7dmFyIG49IkFjdGl2ZVhPYmplY3QiaW4gdCxzPW4mJiFlLmFkZEV2ZW50TGlzdGVuZXIsYT1uYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCkscj0tMSE9PWEuaW5kZXhPZigid2Via2l0IiksaD0tMSE9PWEuaW5kZXhPZigiY2hyb21lIiksbD0tMSE9PWEuaW5kZXhPZigicGhhbnRvbSIpLHU9LTEhPT1hLmluZGV4T2YoImFuZHJvaWQiKSxjPS0xIT09YS5zZWFyY2goImFuZHJvaWQgWzIzXSIpLGQ9LTEhPT1hLmluZGV4T2YoImdlY2tvIikscD10eXBlb2Ygb3JpZW50YXRpb24hPWkrIiIsXz10Lm5hdmlnYXRvciYmdC5uYXZpZ2F0b3IubXNQb2ludGVyRW5hYmxlZCYmdC5uYXZpZ2F0b3IubXNNYXhUb3VjaFBvaW50cyYmIXQuUG9pbnRlckV2ZW50LG09dC5Qb2ludGVyRXZlbnQmJnQubmF2aWdhdG9yLnBvaW50ZXJFbmFibGVkJiZ0Lm5hdmlnYXRvci5tYXhUb3VjaFBvaW50c3x8XyxmPSJkZXZpY2VQaXhlbFJhdGlvImluIHQmJnQuZGV2aWNlUGl4ZWxSYXRpbz4xfHwibWF0Y2hNZWRpYSJpbiB0JiZ0Lm1hdGNoTWVkaWEoIihtaW4tcmVzb2x1dGlvbjoxNDRkcGkpIikmJnQubWF0Y2hNZWRpYSgiKG1pbi1yZXNvbHV0aW9uOjE0NGRwaSkiKS5tYXRjaGVzLGc9ZS5kb2N1bWVudEVsZW1lbnQsdj1uJiYidHJhbnNpdGlvbiJpbiBnLnN0eWxlLHk9IldlYktpdENTU01hdHJpeCJpbiB0JiYibTExImluIG5ldyB0LldlYktpdENTU01hdHJpeCYmIWMsUD0iTW96UGVyc3BlY3RpdmUiaW4gZy5zdHlsZSxMPSJPVHJhbnNpdGlvbiJpbiBnLnN0eWxlLHg9IXQuTF9ESVNBQkxFXzNEJiYodnx8eXx8UHx8TCkmJiFsLHc9IXQuTF9OT19UT1VDSCYmIWwmJmZ1bmN0aW9uKCl7dmFyIHQ9Im9udG91Y2hzdGFydCI7aWYobXx8dCBpbiBnKXJldHVybiEwO3ZhciBpPWUuY3JlYXRlRWxlbWVudCgiZGl2Iiksbj0hMTtyZXR1cm4gaS5zZXRBdHRyaWJ1dGU/KGkuc2V0QXR0cmlidXRlKHQsInJldHVybjsiKSwiZnVuY3Rpb24iPT10eXBlb2YgaVt0XSYmKG49ITApLGkucmVtb3ZlQXR0cmlidXRlKHQpLGk9bnVsbCxuKTohMX0oKTtvLkJyb3dzZXI9e2llOm4saWVsdDk6cyx3ZWJraXQ6cixnZWNrbzpkJiYhciYmIXQub3BlcmEmJiFuLGFuZHJvaWQ6dSxhbmRyb2lkMjM6YyxjaHJvbWU6aCxpZTNkOnYsd2Via2l0M2Q6eSxnZWNrbzNkOlAsb3BlcmEzZDpMLGFueTNkOngsbW9iaWxlOnAsbW9iaWxlV2Via2l0OnAmJnIsbW9iaWxlV2Via2l0M2Q6cCYmeSxtb2JpbGVPcGVyYTpwJiZ0Lm9wZXJhLHRvdWNoOncsbXNQb2ludGVyOl8scG9pbnRlcjptLHJldGluYTpmfX0oKSxvLlBvaW50PWZ1bmN0aW9uKHQsZSxpKXt0aGlzLng9aT9NYXRoLnJvdW5kKHQpOnQsdGhpcy55PWk/TWF0aC5yb3VuZChlKTplfSxvLlBvaW50LnByb3RvdHlwZT17Y2xvbmU6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IG8uUG9pbnQodGhpcy54LHRoaXMueSl9LGFkZDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5jbG9uZSgpLl9hZGQoby5wb2ludCh0KSl9LF9hZGQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMueCs9dC54LHRoaXMueSs9dC55LHRoaXN9LHN1YnRyYWN0OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNsb25lKCkuX3N1YnRyYWN0KG8ucG9pbnQodCkpfSxfc3VidHJhY3Q6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMueC09dC54LHRoaXMueS09dC55LHRoaXN9LGRpdmlkZUJ5OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNsb25lKCkuX2RpdmlkZUJ5KHQpfSxfZGl2aWRlQnk6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMueC89dCx0aGlzLnkvPXQsdGhpc30sbXVsdGlwbHlCeTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5jbG9uZSgpLl9tdWx0aXBseUJ5KHQpfSxfbXVsdGlwbHlCeTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy54Kj10LHRoaXMueSo9dCx0aGlzfSxyb3VuZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNsb25lKCkuX3JvdW5kKCl9LF9yb3VuZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLng9TWF0aC5yb3VuZCh0aGlzLngpLHRoaXMueT1NYXRoLnJvdW5kKHRoaXMueSksdGhpc30sZmxvb3I6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jbG9uZSgpLl9mbG9vcigpfSxfZmxvb3I6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy54PU1hdGguZmxvb3IodGhpcy54KSx0aGlzLnk9TWF0aC5mbG9vcih0aGlzLnkpLHRoaXN9LGRpc3RhbmNlVG86ZnVuY3Rpb24odCl7dD1vLnBvaW50KHQpO3ZhciBlPXQueC10aGlzLngsaT10LnktdGhpcy55O3JldHVybiBNYXRoLnNxcnQoZSplK2kqaSl9LGVxdWFsczpmdW5jdGlvbih0KXtyZXR1cm4gdD1vLnBvaW50KHQpLHQueD09PXRoaXMueCYmdC55PT09dGhpcy55fSxjb250YWluczpmdW5jdGlvbih0KXtyZXR1cm4gdD1vLnBvaW50KHQpLE1hdGguYWJzKHQueCk8PU1hdGguYWJzKHRoaXMueCkmJk1hdGguYWJzKHQueSk8PU1hdGguYWJzKHRoaXMueSl9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIlBvaW50KCIrby5VdGlsLmZvcm1hdE51bSh0aGlzLngpKyIsICIrby5VdGlsLmZvcm1hdE51bSh0aGlzLnkpKyIpIn19LG8ucG9pbnQ9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB0IGluc3RhbmNlb2Ygby5Qb2ludD90Om8uVXRpbC5pc0FycmF5KHQpP25ldyBvLlBvaW50KHRbMF0sdFsxXSk6dD09PWl8fG51bGw9PT10P3Q6bmV3IG8uUG9pbnQodCxlLG4pfSxvLkJvdW5kcz1mdW5jdGlvbih0LGUpe2lmKHQpZm9yKHZhciBpPWU/W3QsZV06dCxuPTAsbz1pLmxlbmd0aDtvPm47bisrKXRoaXMuZXh0ZW5kKGlbbl0pfSxvLkJvdW5kcy5wcm90b3R5cGU9e2V4dGVuZDpmdW5jdGlvbih0KXtyZXR1cm4gdD1vLnBvaW50KHQpLHRoaXMubWlufHx0aGlzLm1heD8odGhpcy5taW4ueD1NYXRoLm1pbih0LngsdGhpcy5taW4ueCksdGhpcy5tYXgueD1NYXRoLm1heCh0LngsdGhpcy5tYXgueCksdGhpcy5taW4ueT1NYXRoLm1pbih0LnksdGhpcy5taW4ueSksdGhpcy5tYXgueT1NYXRoLm1heCh0LnksdGhpcy5tYXgueSkpOih0aGlzLm1pbj10LmNsb25lKCksdGhpcy5tYXg9dC5jbG9uZSgpKSx0aGlzfSxnZXRDZW50ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBvLlBvaW50KCh0aGlzLm1pbi54K3RoaXMubWF4LngpLzIsKHRoaXMubWluLnkrdGhpcy5tYXgueSkvMix0KX0sZ2V0Qm90dG9tTGVmdDpmdW5jdGlvbigpe3JldHVybiBuZXcgby5Qb2ludCh0aGlzLm1pbi54LHRoaXMubWF4LnkpfSxnZXRUb3BSaWdodDpmdW5jdGlvbigpe3JldHVybiBuZXcgby5Qb2ludCh0aGlzLm1heC54LHRoaXMubWluLnkpfSxnZXRTaXplOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWF4LnN1YnRyYWN0KHRoaXMubWluKX0sY29udGFpbnM6ZnVuY3Rpb24odCl7dmFyIGUsaTtyZXR1cm4gdD0ibnVtYmVyIj09dHlwZW9mIHRbMF18fHQgaW5zdGFuY2VvZiBvLlBvaW50P28ucG9pbnQodCk6by5ib3VuZHModCksdCBpbnN0YW5jZW9mIG8uQm91bmRzPyhlPXQubWluLGk9dC5tYXgpOmU9aT10LGUueD49dGhpcy5taW4ueCYmaS54PD10aGlzLm1heC54JiZlLnk+PXRoaXMubWluLnkmJmkueTw9dGhpcy5tYXgueX0saW50ZXJzZWN0czpmdW5jdGlvbih0KXt0PW8uYm91bmRzKHQpO3ZhciBlPXRoaXMubWluLGk9dGhpcy5tYXgsbj10Lm1pbixzPXQubWF4LGE9cy54Pj1lLngmJm4ueDw9aS54LHI9cy55Pj1lLnkmJm4ueTw9aS55O3JldHVybiBhJiZyfSxpc1ZhbGlkOmZ1bmN0aW9uKCl7cmV0dXJuISghdGhpcy5taW58fCF0aGlzLm1heCl9fSxvLmJvdW5kcz1mdW5jdGlvbih0LGUpe3JldHVybiF0fHx0IGluc3RhbmNlb2Ygby5Cb3VuZHM/dDpuZXcgby5Cb3VuZHModCxlKX0sby5UcmFuc2Zvcm1hdGlvbj1mdW5jdGlvbih0LGUsaSxuKXt0aGlzLl9hPXQsdGhpcy5fYj1lLHRoaXMuX2M9aSx0aGlzLl9kPW59LG8uVHJhbnNmb3JtYXRpb24ucHJvdG90eXBlPXt0cmFuc2Zvcm06ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5fdHJhbnNmb3JtKHQuY2xvbmUoKSxlKX0sX3RyYW5zZm9ybTpmdW5jdGlvbih0LGUpe3JldHVybiBlPWV8fDEsdC54PWUqKHRoaXMuX2EqdC54K3RoaXMuX2IpLHQueT1lKih0aGlzLl9jKnQueSt0aGlzLl9kKSx0fSx1bnRyYW5zZm9ybTpmdW5jdGlvbih0LGUpe3JldHVybiBlPWV8fDEsbmV3IG8uUG9pbnQoKHQueC9lLXRoaXMuX2IpL3RoaXMuX2EsKHQueS9lLXRoaXMuX2QpL3RoaXMuX2MpfX0sby5Eb21VdGlsPXtnZXQ6ZnVuY3Rpb24odCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0P2UuZ2V0RWxlbWVudEJ5SWQodCk6dH0sZ2V0U3R5bGU6ZnVuY3Rpb24odCxpKXt2YXIgbj10LnN0eWxlW2ldO2lmKCFuJiZ0LmN1cnJlbnRTdHlsZSYmKG49dC5jdXJyZW50U3R5bGVbaV0pLCghbnx8ImF1dG8iPT09bikmJmUuZGVmYXVsdFZpZXcpe3ZhciBvPWUuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZSh0LG51bGwpO249bz9vW2ldOm51bGx9cmV0dXJuImF1dG8iPT09bj9udWxsOm59LGdldFZpZXdwb3J0T2Zmc2V0OmZ1bmN0aW9uKHQpe3ZhciBpLG49MCxzPTAsYT10LHI9ZS5ib2R5LGg9ZS5kb2N1bWVudEVsZW1lbnQ7ZG97aWYobis9YS5vZmZzZXRUb3B8fDAscys9YS5vZmZzZXRMZWZ0fHwwLG4rPXBhcnNlSW50KG8uRG9tVXRpbC5nZXRTdHlsZShhLCJib3JkZXJUb3BXaWR0aCIpLDEwKXx8MCxzKz1wYXJzZUludChvLkRvbVV0aWwuZ2V0U3R5bGUoYSwiYm9yZGVyTGVmdFdpZHRoIiksMTApfHwwLGk9by5Eb21VdGlsLmdldFN0eWxlKGEsInBvc2l0aW9uIiksYS5vZmZzZXRQYXJlbnQ9PT1yJiYiYWJzb2x1dGUiPT09aSlicmVhaztpZigiZml4ZWQiPT09aSl7bis9ci5zY3JvbGxUb3B8fGguc2Nyb2xsVG9wfHwwLHMrPXIuc2Nyb2xsTGVmdHx8aC5zY3JvbGxMZWZ0fHwwO2JyZWFrfWlmKCJyZWxhdGl2ZSI9PT1pJiYhYS5vZmZzZXRMZWZ0KXt2YXIgbD1vLkRvbVV0aWwuZ2V0U3R5bGUoYSwid2lkdGgiKSx1PW8uRG9tVXRpbC5nZXRTdHlsZShhLCJtYXgtd2lkdGgiKSxjPWEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7KCJub25lIiE9PWx8fCJub25lIiE9PXUpJiYocys9Yy5sZWZ0K2EuY2xpZW50TGVmdCksbis9Yy50b3ArKHIuc2Nyb2xsVG9wfHxoLnNjcm9sbFRvcHx8MCk7YnJlYWt9YT1hLm9mZnNldFBhcmVudH13aGlsZShhKTthPXQ7ZG97aWYoYT09PXIpYnJlYWs7bi09YS5zY3JvbGxUb3B8fDAscy09YS5zY3JvbGxMZWZ0fHwwLGE9YS5wYXJlbnROb2RlfXdoaWxlKGEpO3JldHVybiBuZXcgby5Qb2ludChzLG4pfSxkb2N1bWVudElzTHRyOmZ1bmN0aW9uKCl7cmV0dXJuIG8uRG9tVXRpbC5fZG9jSXNMdHJDYWNoZWR8fChvLkRvbVV0aWwuX2RvY0lzTHRyQ2FjaGVkPSEwLG8uRG9tVXRpbC5fZG9jSXNMdHI9Imx0ciI9PT1vLkRvbVV0aWwuZ2V0U3R5bGUoZS5ib2R5LCJkaXJlY3Rpb24iKSksby5Eb21VdGlsLl9kb2NJc0x0cn0sY3JlYXRlOmZ1bmN0aW9uKHQsaSxuKXt2YXIgbz1lLmNyZWF0ZUVsZW1lbnQodCk7cmV0dXJuIG8uY2xhc3NOYW1lPWksbiYmbi5hcHBlbmRDaGlsZChvKSxvfSxoYXNDbGFzczpmdW5jdGlvbih0LGUpe2lmKHQuY2xhc3NMaXN0IT09aSlyZXR1cm4gdC5jbGFzc0xpc3QuY29udGFpbnMoZSk7dmFyIG49by5Eb21VdGlsLl9nZXRDbGFzcyh0KTtyZXR1cm4gbi5sZW5ndGg+MCYmbmV3IFJlZ0V4cCgiKF58XFxzKSIrZSsiKFxcc3wkKSIpLnRlc3Qobil9LGFkZENsYXNzOmZ1bmN0aW9uKHQsZSl7aWYodC5jbGFzc0xpc3QhPT1pKWZvcih2YXIgbj1vLlV0aWwuc3BsaXRXb3JkcyhlKSxzPTAsYT1uLmxlbmd0aDthPnM7cysrKXQuY2xhc3NMaXN0LmFkZChuW3NdKTtlbHNlIGlmKCFvLkRvbVV0aWwuaGFzQ2xhc3ModCxlKSl7dmFyIHI9by5Eb21VdGlsLl9nZXRDbGFzcyh0KTtvLkRvbVV0aWwuX3NldENsYXNzKHQsKHI/cisiICI6IiIpK2UpfX0scmVtb3ZlQ2xhc3M6ZnVuY3Rpb24odCxlKXt0LmNsYXNzTGlzdCE9PWk/dC5jbGFzc0xpc3QucmVtb3ZlKGUpOm8uRG9tVXRpbC5fc2V0Q2xhc3ModCxvLlV0aWwudHJpbSgoIiAiK28uRG9tVXRpbC5fZ2V0Q2xhc3ModCkrIiAiKS5yZXBsYWNlKCIgIitlKyIgIiwiICIpKSl9LF9zZXRDbGFzczpmdW5jdGlvbih0LGUpe3QuY2xhc3NOYW1lLmJhc2VWYWw9PT1pP3QuY2xhc3NOYW1lPWU6dC5jbGFzc05hbWUuYmFzZVZhbD1lfSxfZ2V0Q2xhc3M6ZnVuY3Rpb24odCl7cmV0dXJuIHQuY2xhc3NOYW1lLmJhc2VWYWw9PT1pP3QuY2xhc3NOYW1lOnQuY2xhc3NOYW1lLmJhc2VWYWx9LHNldE9wYWNpdHk6ZnVuY3Rpb24odCxlKXtpZigib3BhY2l0eSJpbiB0LnN0eWxlKXQuc3R5bGUub3BhY2l0eT1lO2Vsc2UgaWYoImZpbHRlciJpbiB0LnN0eWxlKXt2YXIgaT0hMSxuPSJEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5BbHBoYSI7dHJ5e2k9dC5maWx0ZXJzLml0ZW0obil9Y2F0Y2gobyl7aWYoMT09PWUpcmV0dXJufWU9TWF0aC5yb3VuZCgxMDAqZSksaT8oaS5FbmFibGVkPTEwMCE9PWUsaS5PcGFjaXR5PWUpOnQuc3R5bGUuZmlsdGVyKz0iIHByb2dpZDoiK24rIihvcGFjaXR5PSIrZSsiKSJ9fSx0ZXN0UHJvcDpmdW5jdGlvbih0KXtmb3IodmFyIGk9ZS5kb2N1bWVudEVsZW1lbnQuc3R5bGUsbj0wO248dC5sZW5ndGg7bisrKWlmKHRbbl1pbiBpKXJldHVybiB0W25dO3JldHVybiExfSxnZXRUcmFuc2xhdGVTdHJpbmc6ZnVuY3Rpb24odCl7dmFyIGU9by5Ccm93c2VyLndlYmtpdDNkLGk9InRyYW5zbGF0ZSIrKGU/IjNkIjoiIikrIigiLG49KGU/IiwwIjoiIikrIikiO3JldHVybiBpK3QueCsicHgsIit0LnkrInB4IitufSxnZXRTY2FsZVN0cmluZzpmdW5jdGlvbih0LGUpe3ZhciBpPW8uRG9tVXRpbC5nZXRUcmFuc2xhdGVTdHJpbmcoZS5hZGQoZS5tdWx0aXBseUJ5KC0xKnQpKSksbj0iIHNjYWxlKCIrdCsiKSAiO3JldHVybiBpK259LHNldFBvc2l0aW9uOmZ1bmN0aW9uKHQsZSxpKXt0Ll9sZWFmbGV0X3Bvcz1lLCFpJiZvLkJyb3dzZXIuYW55M2Q/dC5zdHlsZVtvLkRvbVV0aWwuVFJBTlNGT1JNXT1vLkRvbVV0aWwuZ2V0VHJhbnNsYXRlU3RyaW5nKGUpOih0LnN0eWxlLmxlZnQ9ZS54KyJweCIsdC5zdHlsZS50b3A9ZS55KyJweCIpfSxnZXRQb3NpdGlvbjpmdW5jdGlvbih0KXtyZXR1cm4gdC5fbGVhZmxldF9wb3N9fSxvLkRvbVV0aWwuVFJBTlNGT1JNPW8uRG9tVXRpbC50ZXN0UHJvcChbInRyYW5zZm9ybSIsIldlYmtpdFRyYW5zZm9ybSIsIk9UcmFuc2Zvcm0iLCJNb3pUcmFuc2Zvcm0iLCJtc1RyYW5zZm9ybSJdKSxvLkRvbVV0aWwuVFJBTlNJVElPTj1vLkRvbVV0aWwudGVzdFByb3AoWyJ3ZWJraXRUcmFuc2l0aW9uIiwidHJhbnNpdGlvbiIsIk9UcmFuc2l0aW9uIiwiTW96VHJhbnNpdGlvbiIsIm1zVHJhbnNpdGlvbiJdKSxvLkRvbVV0aWwuVFJBTlNJVElPTl9FTkQ9IndlYmtpdFRyYW5zaXRpb24iPT09by5Eb21VdGlsLlRSQU5TSVRJT058fCJPVHJhbnNpdGlvbiI9PT1vLkRvbVV0aWwuVFJBTlNJVElPTj9vLkRvbVV0aWwuVFJBTlNJVElPTisiRW5kIjoidHJhbnNpdGlvbmVuZCIsZnVuY3Rpb24oKXtpZigib25zZWxlY3RzdGFydCJpbiBlKW8uZXh0ZW5kKG8uRG9tVXRpbCx7ZGlzYWJsZVRleHRTZWxlY3Rpb246ZnVuY3Rpb24oKXtvLkRvbUV2ZW50Lm9uKHQsInNlbGVjdHN0YXJ0IixvLkRvbUV2ZW50LnByZXZlbnREZWZhdWx0KX0sZW5hYmxlVGV4dFNlbGVjdGlvbjpmdW5jdGlvbigpe28uRG9tRXZlbnQub2ZmKHQsInNlbGVjdHN0YXJ0IixvLkRvbUV2ZW50LnByZXZlbnREZWZhdWx0KX19KTtlbHNle3ZhciBpPW8uRG9tVXRpbC50ZXN0UHJvcChbInVzZXJTZWxlY3QiLCJXZWJraXRVc2VyU2VsZWN0IiwiT1VzZXJTZWxlY3QiLCJNb3pVc2VyU2VsZWN0IiwibXNVc2VyU2VsZWN0Il0pO28uZXh0ZW5kKG8uRG9tVXRpbCx7ZGlzYWJsZVRleHRTZWxlY3Rpb246ZnVuY3Rpb24oKXtpZihpKXt2YXIgdD1lLmRvY3VtZW50RWxlbWVudC5zdHlsZTt0aGlzLl91c2VyU2VsZWN0PXRbaV0sdFtpXT0ibm9uZSJ9fSxlbmFibGVUZXh0U2VsZWN0aW9uOmZ1bmN0aW9uKCl7aSYmKGUuZG9jdW1lbnRFbGVtZW50LnN0eWxlW2ldPXRoaXMuX3VzZXJTZWxlY3QsZGVsZXRlIHRoaXMuX3VzZXJTZWxlY3QpfX0pfW8uZXh0ZW5kKG8uRG9tVXRpbCx7ZGlzYWJsZUltYWdlRHJhZzpmdW5jdGlvbigpe28uRG9tRXZlbnQub24odCwiZHJhZ3N0YXJ0IixvLkRvbUV2ZW50LnByZXZlbnREZWZhdWx0KX0sZW5hYmxlSW1hZ2VEcmFnOmZ1bmN0aW9uKCl7by5Eb21FdmVudC5vZmYodCwiZHJhZ3N0YXJ0IixvLkRvbUV2ZW50LnByZXZlbnREZWZhdWx0KX19KX0oKSxvLkxhdExuZz1mdW5jdGlvbih0LGUsbil7aWYodD1wYXJzZUZsb2F0KHQpLGU9cGFyc2VGbG9hdChlKSxpc05hTih0KXx8aXNOYU4oZSkpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIExhdExuZyBvYmplY3Q6ICgiK3QrIiwgIitlKyIpIik7dGhpcy5sYXQ9dCx0aGlzLmxuZz1lLG4hPT1pJiYodGhpcy5hbHQ9cGFyc2VGbG9hdChuKSl9LG8uZXh0ZW5kKG8uTGF0TG5nLHtERUdfVE9fUkFEOk1hdGguUEkvMTgwLFJBRF9UT19ERUc6MTgwL01hdGguUEksTUFYX01BUkdJTjoxZS05fSksby5MYXRMbmcucHJvdG90eXBlPXtlcXVhbHM6ZnVuY3Rpb24odCl7aWYoIXQpcmV0dXJuITE7dD1vLmxhdExuZyh0KTt2YXIgZT1NYXRoLm1heChNYXRoLmFicyh0aGlzLmxhdC10LmxhdCksTWF0aC5hYnModGhpcy5sbmctdC5sbmcpKTtyZXR1cm4gZTw9by5MYXRMbmcuTUFYX01BUkdJTn0sdG9TdHJpbmc6ZnVuY3Rpb24odCl7cmV0dXJuIkxhdExuZygiK28uVXRpbC5mb3JtYXROdW0odGhpcy5sYXQsdCkrIiwgIitvLlV0aWwuZm9ybWF0TnVtKHRoaXMubG5nLHQpKyIpIn0sZGlzdGFuY2VUbzpmdW5jdGlvbih0KXt0PW8ubGF0TG5nKHQpO3ZhciBlPTYzNzgxMzcsaT1vLkxhdExuZy5ERUdfVE9fUkFELG49KHQubGF0LXRoaXMubGF0KSppLHM9KHQubG5nLXRoaXMubG5nKSppLGE9dGhpcy5sYXQqaSxyPXQubGF0KmksaD1NYXRoLnNpbihuLzIpLGw9TWF0aC5zaW4ocy8yKSx1PWgqaCtsKmwqTWF0aC5jb3MoYSkqTWF0aC5jb3Mocik7cmV0dXJuIDIqZSpNYXRoLmF0YW4yKE1hdGguc3FydCh1KSxNYXRoLnNxcnQoMS11KSl9LHdyYXA6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLmxuZztyZXR1cm4gdD10fHwtMTgwLGU9ZXx8MTgwLGk9KGkrZSklKGUtdCkrKHQ+aXx8aT09PWU/ZTp0KSxuZXcgby5MYXRMbmcodGhpcy5sYXQsaSl9fSxvLmxhdExuZz1mdW5jdGlvbih0LGUpe3JldHVybiB0IGluc3RhbmNlb2Ygby5MYXRMbmc/dDpvLlV0aWwuaXNBcnJheSh0KT8ibnVtYmVyIj09dHlwZW9mIHRbMF18fCJzdHJpbmciPT10eXBlb2YgdFswXT9uZXcgby5MYXRMbmcodFswXSx0WzFdLHRbMl0pOm51bGw6dD09PWl8fG51bGw9PT10P3Q6Im9iamVjdCI9PXR5cGVvZiB0JiYibGF0ImluIHQ/bmV3IG8uTGF0TG5nKHQubGF0LCJsbmciaW4gdD90LmxuZzp0Lmxvbik6ZT09PWk/bnVsbDpuZXcgby5MYXRMbmcodCxlKX0sby5MYXRMbmdCb3VuZHM9ZnVuY3Rpb24odCxlKXtpZih0KWZvcih2YXIgaT1lP1t0LGVdOnQsbj0wLG89aS5sZW5ndGg7bz5uO24rKyl0aGlzLmV4dGVuZChpW25dKX0sby5MYXRMbmdCb3VuZHMucHJvdG90eXBlPXtleHRlbmQ6ZnVuY3Rpb24odCl7aWYoIXQpcmV0dXJuIHRoaXM7dmFyIGU9by5sYXRMbmcodCk7cmV0dXJuIHQ9bnVsbCE9PWU/ZTpvLmxhdExuZ0JvdW5kcyh0KSx0IGluc3RhbmNlb2Ygby5MYXRMbmc/dGhpcy5fc291dGhXZXN0fHx0aGlzLl9ub3J0aEVhc3Q/KHRoaXMuX3NvdXRoV2VzdC5sYXQ9TWF0aC5taW4odC5sYXQsdGhpcy5fc291dGhXZXN0LmxhdCksdGhpcy5fc291dGhXZXN0LmxuZz1NYXRoLm1pbih0LmxuZyx0aGlzLl9zb3V0aFdlc3QubG5nKSx0aGlzLl9ub3J0aEVhc3QubGF0PU1hdGgubWF4KHQubGF0LHRoaXMuX25vcnRoRWFzdC5sYXQpLHRoaXMuX25vcnRoRWFzdC5sbmc9TWF0aC5tYXgodC5sbmcsdGhpcy5fbm9ydGhFYXN0LmxuZykpOih0aGlzLl9zb3V0aFdlc3Q9bmV3IG8uTGF0TG5nKHQubGF0LHQubG5nKSx0aGlzLl9ub3J0aEVhc3Q9bmV3IG8uTGF0TG5nKHQubGF0LHQubG5nKSk6dCBpbnN0YW5jZW9mIG8uTGF0TG5nQm91bmRzJiYodGhpcy5leHRlbmQodC5fc291dGhXZXN0KSx0aGlzLmV4dGVuZCh0Ll9ub3J0aEVhc3QpKSx0aGlzfSxwYWQ6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fc291dGhXZXN0LGk9dGhpcy5fbm9ydGhFYXN0LG49TWF0aC5hYnMoZS5sYXQtaS5sYXQpKnQscz1NYXRoLmFicyhlLmxuZy1pLmxuZykqdDtyZXR1cm4gbmV3IG8uTGF0TG5nQm91bmRzKG5ldyBvLkxhdExuZyhlLmxhdC1uLGUubG5nLXMpLG5ldyBvLkxhdExuZyhpLmxhdCtuLGkubG5nK3MpKX0sZ2V0Q2VudGVyOmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBvLkxhdExuZygodGhpcy5fc291dGhXZXN0LmxhdCt0aGlzLl9ub3J0aEVhc3QubGF0KS8yLCh0aGlzLl9zb3V0aFdlc3QubG5nK3RoaXMuX25vcnRoRWFzdC5sbmcpLzIpfSxnZXRTb3V0aFdlc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc291dGhXZXN0fSxnZXROb3J0aEVhc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbm9ydGhFYXN0fSxnZXROb3J0aFdlc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IG8uTGF0TG5nKHRoaXMuZ2V0Tm9ydGgoKSx0aGlzLmdldFdlc3QoKSl9LGdldFNvdXRoRWFzdDpmdW5jdGlvbigpe3JldHVybiBuZXcgby5MYXRMbmcodGhpcy5nZXRTb3V0aCgpLHRoaXMuZ2V0RWFzdCgpKX0sZ2V0V2VzdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9zb3V0aFdlc3QubG5nfSxnZXRTb3V0aDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9zb3V0aFdlc3QubGF0fSxnZXRFYXN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX25vcnRoRWFzdC5sbmd9LGdldE5vcnRoOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX25vcnRoRWFzdC5sYXR9LGNvbnRhaW5zOmZ1bmN0aW9uKHQpe3Q9Im51bWJlciI9PXR5cGVvZiB0WzBdfHx0IGluc3RhbmNlb2Ygby5MYXRMbmc/by5sYXRMbmcodCk6by5sYXRMbmdCb3VuZHModCk7dmFyIGUsaSxuPXRoaXMuX3NvdXRoV2VzdCxzPXRoaXMuX25vcnRoRWFzdDtyZXR1cm4gdCBpbnN0YW5jZW9mIG8uTGF0TG5nQm91bmRzPyhlPXQuZ2V0U291dGhXZXN0KCksaT10LmdldE5vcnRoRWFzdCgpKTplPWk9dCxlLmxhdD49bi5sYXQmJmkubGF0PD1zLmxhdCYmZS5sbmc+PW4ubG5nJiZpLmxuZzw9cy5sbmd9LGludGVyc2VjdHM6ZnVuY3Rpb24odCl7dD1vLmxhdExuZ0JvdW5kcyh0KTt2YXIgZT10aGlzLl9zb3V0aFdlc3QsaT10aGlzLl9ub3J0aEVhc3Qsbj10LmdldFNvdXRoV2VzdCgpLHM9dC5nZXROb3J0aEVhc3QoKSxhPXMubGF0Pj1lLmxhdCYmbi5sYXQ8PWkubGF0LHI9cy5sbmc+PWUubG5nJiZuLmxuZzw9aS5sbmc7cmV0dXJuIGEmJnJ9LHRvQkJveFN0cmluZzpmdW5jdGlvbigpe3JldHVyblt0aGlzLmdldFdlc3QoKSx0aGlzLmdldFNvdXRoKCksdGhpcy5nZXRFYXN0KCksdGhpcy5nZXROb3J0aCgpXS5qb2luKCIsIil9LGVxdWFsczpmdW5jdGlvbih0KXtyZXR1cm4gdD8odD1vLmxhdExuZ0JvdW5kcyh0KSx0aGlzLl9zb3V0aFdlc3QuZXF1YWxzKHQuZ2V0U291dGhXZXN0KCkpJiZ0aGlzLl9ub3J0aEVhc3QuZXF1YWxzKHQuZ2V0Tm9ydGhFYXN0KCkpKTohMX0saXNWYWxpZDpmdW5jdGlvbigpe3JldHVybiEoIXRoaXMuX3NvdXRoV2VzdHx8IXRoaXMuX25vcnRoRWFzdCl9fSxvLmxhdExuZ0JvdW5kcz1mdW5jdGlvbih0LGUpe3JldHVybiF0fHx0IGluc3RhbmNlb2Ygby5MYXRMbmdCb3VuZHM/dDpuZXcgby5MYXRMbmdCb3VuZHModCxlKX0sby5Qcm9qZWN0aW9uPXt9LG8uUHJvamVjdGlvbi5TcGhlcmljYWxNZXJjYXRvcj17TUFYX0xBVElUVURFOjg1LjA1MTEyODc3OTgscHJvamVjdDpmdW5jdGlvbih0KXt2YXIgZT1vLkxhdExuZy5ERUdfVE9fUkFELGk9dGhpcy5NQVhfTEFUSVRVREUsbj1NYXRoLm1heChNYXRoLm1pbihpLHQubGF0KSwtaSkscz10LmxuZyplLGE9biplO3JldHVybiBhPU1hdGgubG9nKE1hdGgudGFuKE1hdGguUEkvNCthLzIpKSxuZXcgby5Qb2ludChzLGEpfSx1bnByb2plY3Q6ZnVuY3Rpb24odCl7dmFyIGU9by5MYXRMbmcuUkFEX1RPX0RFRyxpPXQueCplLG49KDIqTWF0aC5hdGFuKE1hdGguZXhwKHQueSkpLU1hdGguUEkvMikqZTtyZXR1cm4gbmV3IG8uTGF0TG5nKG4saSl9fSxvLlByb2plY3Rpb24uTG9uTGF0PXtwcm9qZWN0OmZ1bmN0aW9uKHQpe3JldHVybiBuZXcgby5Qb2ludCh0LmxuZyx0LmxhdCl9LHVucHJvamVjdDpmdW5jdGlvbih0KXtyZXR1cm4gbmV3IG8uTGF0TG5nKHQueSx0LngpfX0sby5DUlM9e2xhdExuZ1RvUG9pbnQ6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLnByb2plY3Rpb24ucHJvamVjdCh0KSxuPXRoaXMuc2NhbGUoZSk7cmV0dXJuIHRoaXMudHJhbnNmb3JtYXRpb24uX3RyYW5zZm9ybShpLG4pfSxwb2ludFRvTGF0TG5nOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy5zY2FsZShlKSxuPXRoaXMudHJhbnNmb3JtYXRpb24udW50cmFuc2Zvcm0odCxpKTtyZXR1cm4gdGhpcy5wcm9qZWN0aW9uLnVucHJvamVjdChuKX0scHJvamVjdDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5wcm9qZWN0aW9uLnByb2plY3QodCl9LHNjYWxlOmZ1bmN0aW9uKHQpe3JldHVybiAyNTYqTWF0aC5wb3coMix0KX0sZ2V0U2l6ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLnNjYWxlKHQpO3JldHVybiBvLnBvaW50KGUsZSl9fSxvLkNSUy5TaW1wbGU9by5leHRlbmQoe30sby5DUlMse3Byb2plY3Rpb246by5Qcm9qZWN0aW9uLkxvbkxhdCx0cmFuc2Zvcm1hdGlvbjpuZXcgby5UcmFuc2Zvcm1hdGlvbigxLDAsLTEsMCksc2NhbGU6ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGgucG93KDIsdCl9fSksby5DUlMuRVBTRzM4NTc9by5leHRlbmQoe30sby5DUlMse2NvZGU6IkVQU0c6Mzg1NyIscHJvamVjdGlvbjpvLlByb2plY3Rpb24uU3BoZXJpY2FsTWVyY2F0b3IsdHJhbnNmb3JtYXRpb246bmV3IG8uVHJhbnNmb3JtYXRpb24oLjUvTWF0aC5QSSwuNSwtLjUvTWF0aC5QSSwuNSkscHJvamVjdDpmdW5jdGlvbih0KXt2YXIgZT10aGlzLnByb2plY3Rpb24ucHJvamVjdCh0KSxpPTYzNzgxMzc7cmV0dXJuIGUubXVsdGlwbHlCeShpKX19KSxvLkNSUy5FUFNHOTAwOTEzPW8uZXh0ZW5kKHt9LG8uQ1JTLkVQU0czODU3LHtjb2RlOiJFUFNHOjkwMDkxMyJ9KSxvLkNSUy5FUFNHNDMyNj1vLmV4dGVuZCh7fSxvLkNSUyx7Y29kZToiRVBTRzo0MzI2Iixwcm9qZWN0aW9uOm8uUHJvamVjdGlvbi5Mb25MYXQsdHJhbnNmb3JtYXRpb246bmV3IG8uVHJhbnNmb3JtYXRpb24oMS8zNjAsLjUsLTEvMzYwLC41KX0pLG8uTWFwPW8uQ2xhc3MuZXh0ZW5kKHtpbmNsdWRlczpvLk1peGluLkV2ZW50cyxvcHRpb25zOntjcnM6by5DUlMuRVBTRzM4NTcsZmFkZUFuaW1hdGlvbjpvLkRvbVV0aWwuVFJBTlNJVElPTiYmIW8uQnJvd3Nlci5hbmRyb2lkMjMsdHJhY2tSZXNpemU6ITAsbWFya2VyWm9vbUFuaW1hdGlvbjpvLkRvbVV0aWwuVFJBTlNJVElPTiYmby5Ccm93c2VyLmFueTNkfSxpbml0aWFsaXplOmZ1bmN0aW9uKHQsZSl7ZT1vLnNldE9wdGlvbnModGhpcyxlKSx0aGlzLl9pbml0Q29udGFpbmVyKHQpLHRoaXMuX2luaXRMYXlvdXQoKSx0aGlzLl9vblJlc2l6ZT1vLmJpbmQodGhpcy5fb25SZXNpemUsdGhpcyksdGhpcy5faW5pdEV2ZW50cygpLGUubWF4Qm91bmRzJiZ0aGlzLnNldE1heEJvdW5kcyhlLm1heEJvdW5kcyksZS5jZW50ZXImJmUuem9vbSE9PWkmJnRoaXMuc2V0VmlldyhvLmxhdExuZyhlLmNlbnRlciksZS56b29tLHtyZXNldDohMH0pLHRoaXMuX2hhbmRsZXJzPVtdLHRoaXMuX2xheWVycz17fSx0aGlzLl96b29tQm91bmRMYXllcnM9e30sdGhpcy5fdGlsZUxheWVyc051bT0wLHRoaXMuY2FsbEluaXRIb29rcygpLHRoaXMuX2FkZExheWVycyhlLmxheWVycyl9LHNldFZpZXc6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZT1lPT09aT90aGlzLmdldFpvb20oKTplLHRoaXMuX3Jlc2V0VmlldyhvLmxhdExuZyh0KSx0aGlzLl9saW1pdFpvb20oZSkpLHRoaXN9LHNldFpvb206ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5fbG9hZGVkP3RoaXMuc2V0Vmlldyh0aGlzLmdldENlbnRlcigpLHQse3pvb206ZX0pOih0aGlzLl96b29tPXRoaXMuX2xpbWl0Wm9vbSh0KSx0aGlzKX0sem9vbUluOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuc2V0Wm9vbSh0aGlzLl96b29tKyh0fHwxKSxlKX0sem9vbU91dDpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnNldFpvb20odGhpcy5fem9vbS0odHx8MSksZSl9LHNldFpvb21Bcm91bmQ6ZnVuY3Rpb24odCxlLGkpe3ZhciBuPXRoaXMuZ2V0Wm9vbVNjYWxlKGUpLHM9dGhpcy5nZXRTaXplKCkuZGl2aWRlQnkoMiksYT10IGluc3RhbmNlb2Ygby5Qb2ludD90OnRoaXMubGF0TG5nVG9Db250YWluZXJQb2ludCh0KSxyPWEuc3VidHJhY3QocykubXVsdGlwbHlCeSgxLTEvbiksaD10aGlzLmNvbnRhaW5lclBvaW50VG9MYXRMbmcocy5hZGQocikpO3JldHVybiB0aGlzLnNldFZpZXcoaCxlLHt6b29tOml9KX0sZml0Qm91bmRzOmZ1bmN0aW9uKHQsZSl7ZT1lfHx7fSx0PXQuZ2V0Qm91bmRzP3QuZ2V0Qm91bmRzKCk6by5sYXRMbmdCb3VuZHModCk7dmFyIGk9by5wb2ludChlLnBhZGRpbmdUb3BMZWZ0fHxlLnBhZGRpbmd8fFswLDBdKSxuPW8ucG9pbnQoZS5wYWRkaW5nQm90dG9tUmlnaHR8fGUucGFkZGluZ3x8WzAsMF0pLHM9dGhpcy5nZXRCb3VuZHNab29tKHQsITEsaS5hZGQobikpLGE9bi5zdWJ0cmFjdChpKS5kaXZpZGVCeSgyKSxyPXRoaXMucHJvamVjdCh0LmdldFNvdXRoV2VzdCgpLHMpLGg9dGhpcy5wcm9qZWN0KHQuZ2V0Tm9ydGhFYXN0KCkscyksbD10aGlzLnVucHJvamVjdChyLmFkZChoKS5kaXZpZGVCeSgyKS5hZGQoYSkscyk7cmV0dXJuIHM9ZSYmZS5tYXhab29tP01hdGgubWluKGUubWF4Wm9vbSxzKTpzLHRoaXMuc2V0VmlldyhsLHMsZSl9LGZpdFdvcmxkOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmZpdEJvdW5kcyhbWy05MCwtMTgwXSxbOTAsMTgwXV0sdCl9LHBhblRvOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuc2V0Vmlldyh0LHRoaXMuX3pvb20se3BhbjplfSl9LHBhbkJ5OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmZpcmUoIm1vdmVzdGFydCIpLHRoaXMuX3Jhd1BhbkJ5KG8ucG9pbnQodCkpLHRoaXMuZmlyZSgibW92ZSIpLHRoaXMuZmlyZSgibW92ZWVuZCIpfSxzZXRNYXhCb3VuZHM6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9by5sYXRMbmdCb3VuZHModCksdGhpcy5vcHRpb25zLm1heEJvdW5kcz10LHQ/KHRoaXMuX2xvYWRlZCYmdGhpcy5fcGFuSW5zaWRlTWF4Qm91bmRzKCksdGhpcy5vbigibW92ZWVuZCIsdGhpcy5fcGFuSW5zaWRlTWF4Qm91bmRzLHRoaXMpKTp0aGlzLm9mZigibW92ZWVuZCIsdGhpcy5fcGFuSW5zaWRlTWF4Qm91bmRzLHRoaXMpfSxwYW5JbnNpZGVCb3VuZHM6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLmdldENlbnRlcigpLG49dGhpcy5fbGltaXRDZW50ZXIoaSx0aGlzLl96b29tLHQpO3JldHVybiBpLmVxdWFscyhuKT90aGlzOnRoaXMucGFuVG8obixlKX0sYWRkTGF5ZXI6ZnVuY3Rpb24odCl7dmFyIGU9by5zdGFtcCh0KTtyZXR1cm4gdGhpcy5fbGF5ZXJzW2VdP3RoaXM6KHRoaXMuX2xheWVyc1tlXT10LCF0Lm9wdGlvbnN8fGlzTmFOKHQub3B0aW9ucy5tYXhab29tKSYmaXNOYU4odC5vcHRpb25zLm1pblpvb20pfHwodGhpcy5fem9vbUJvdW5kTGF5ZXJzW2VdPXQsdGhpcy5fdXBkYXRlWm9vbUxldmVscygpKSx0aGlzLm9wdGlvbnMuem9vbUFuaW1hdGlvbiYmby5UaWxlTGF5ZXImJnQgaW5zdGFuY2VvZiBvLlRpbGVMYXllciYmKHRoaXMuX3RpbGVMYXllcnNOdW0rKyx0aGlzLl90aWxlTGF5ZXJzVG9Mb2FkKyssdC5vbigibG9hZCIsdGhpcy5fb25UaWxlTGF5ZXJMb2FkLHRoaXMpKSx0aGlzLl9sb2FkZWQmJnRoaXMuX2xheWVyQWRkKHQpLHRoaXMpfSxyZW1vdmVMYXllcjpmdW5jdGlvbih0KXt2YXIgZT1vLnN0YW1wKHQpO3JldHVybiB0aGlzLl9sYXllcnNbZV0/KHRoaXMuX2xvYWRlZCYmdC5vblJlbW92ZSh0aGlzKSxkZWxldGUgdGhpcy5fbGF5ZXJzW2VdLHRoaXMuX2xvYWRlZCYmdGhpcy5maXJlKCJsYXllcnJlbW92ZSIse2xheWVyOnR9KSx0aGlzLl96b29tQm91bmRMYXllcnNbZV0mJihkZWxldGUgdGhpcy5fem9vbUJvdW5kTGF5ZXJzW2VdLHRoaXMuX3VwZGF0ZVpvb21MZXZlbHMoKSksdGhpcy5vcHRpb25zLnpvb21BbmltYXRpb24mJm8uVGlsZUxheWVyJiZ0IGluc3RhbmNlb2Ygby5UaWxlTGF5ZXImJih0aGlzLl90aWxlTGF5ZXJzTnVtLS0sdGhpcy5fdGlsZUxheWVyc1RvTG9hZC0tLHQub2ZmKCJsb2FkIix0aGlzLl9vblRpbGVMYXllckxvYWQsdGhpcykpLHRoaXMpOnRoaXN9LGhhc0xheWVyOmZ1bmN0aW9uKHQpe3JldHVybiB0P28uc3RhbXAodClpbiB0aGlzLl9sYXllcnM6ITF9LGVhY2hMYXllcjpmdW5jdGlvbih0LGUpe2Zvcih2YXIgaSBpbiB0aGlzLl9sYXllcnMpdC5jYWxsKGUsdGhpcy5fbGF5ZXJzW2ldKTtyZXR1cm4gdGhpc30saW52YWxpZGF0ZVNpemU6ZnVuY3Rpb24odCl7aWYoIXRoaXMuX2xvYWRlZClyZXR1cm4gdGhpczt0PW8uZXh0ZW5kKHthbmltYXRlOiExLHBhbjohMH0sdD09PSEwP3thbmltYXRlOiEwfTp0KTt2YXIgZT10aGlzLmdldFNpemUoKTt0aGlzLl9zaXplQ2hhbmdlZD0hMCx0aGlzLl9pbml0aWFsQ2VudGVyPW51bGw7dmFyIGk9dGhpcy5nZXRTaXplKCksbj1lLmRpdmlkZUJ5KDIpLnJvdW5kKCkscz1pLmRpdmlkZUJ5KDIpLnJvdW5kKCksYT1uLnN1YnRyYWN0KHMpO3JldHVybiBhLnh8fGEueT8odC5hbmltYXRlJiZ0LnBhbj90aGlzLnBhbkJ5KGEpOih0LnBhbiYmdGhpcy5fcmF3UGFuQnkoYSksdGhpcy5maXJlKCJtb3ZlIiksdC5kZWJvdW5jZU1vdmVlbmQ/KGNsZWFyVGltZW91dCh0aGlzLl9zaXplVGltZXIpLHRoaXMuX3NpemVUaW1lcj1zZXRUaW1lb3V0KG8uYmluZCh0aGlzLmZpcmUsdGhpcywibW92ZWVuZCIpLDIwMCkpOnRoaXMuZmlyZSgibW92ZWVuZCIpKSx0aGlzLmZpcmUoInJlc2l6ZSIse29sZFNpemU6ZSxuZXdTaXplOml9KSk6dGhpc30sYWRkSGFuZGxlcjpmdW5jdGlvbih0LGUpe2lmKCFlKXJldHVybiB0aGlzO3ZhciBpPXRoaXNbdF09bmV3IGUodGhpcyk7cmV0dXJuIHRoaXMuX2hhbmRsZXJzLnB1c2goaSksdGhpcy5vcHRpb25zW3RdJiZpLmVuYWJsZSgpLHRoaXN9LHJlbW92ZTpmdW5jdGlvbigpe3RoaXMuX2xvYWRlZCYmdGhpcy5maXJlKCJ1bmxvYWQiKSx0aGlzLl9pbml0RXZlbnRzKCJvZmYiKTt0cnl7ZGVsZXRlIHRoaXMuX2NvbnRhaW5lci5fbGVhZmxldH1jYXRjaCh0KXt0aGlzLl9jb250YWluZXIuX2xlYWZsZXQ9aX1yZXR1cm4gdGhpcy5fY2xlYXJQYW5lcygpLHRoaXMuX2NsZWFyQ29udHJvbFBvcyYmdGhpcy5fY2xlYXJDb250cm9sUG9zKCksdGhpcy5fY2xlYXJIYW5kbGVycygpLHRoaXN9LGdldENlbnRlcjpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9jaGVja0lmTG9hZGVkKCksdGhpcy5faW5pdGlhbENlbnRlciYmIXRoaXMuX21vdmVkKCk/dGhpcy5faW5pdGlhbENlbnRlcjp0aGlzLmxheWVyUG9pbnRUb0xhdExuZyh0aGlzLl9nZXRDZW50ZXJMYXllclBvaW50KCkpfSxnZXRab29tOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3pvb219LGdldEJvdW5kczpmdW5jdGlvbigpe3ZhciB0PXRoaXMuZ2V0UGl4ZWxCb3VuZHMoKSxlPXRoaXMudW5wcm9qZWN0KHQuZ2V0Qm90dG9tTGVmdCgpKSxpPXRoaXMudW5wcm9qZWN0KHQuZ2V0VG9wUmlnaHQoKSk7cmV0dXJuIG5ldyBvLkxhdExuZ0JvdW5kcyhlLGkpfSxnZXRNaW5ab29tOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub3B0aW9ucy5taW5ab29tPT09aT90aGlzLl9sYXllcnNNaW5ab29tPT09aT8wOnRoaXMuX2xheWVyc01pblpvb206dGhpcy5vcHRpb25zLm1pblpvb219LGdldE1heFpvb206ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vcHRpb25zLm1heFpvb209PT1pP3RoaXMuX2xheWVyc01heFpvb209PT1pPzEvMDp0aGlzLl9sYXllcnNNYXhab29tOnRoaXMub3B0aW9ucy5tYXhab29tfSxnZXRCb3VuZHNab29tOmZ1bmN0aW9uKHQsZSxpKXt0PW8ubGF0TG5nQm91bmRzKHQpO3ZhciBuLHM9dGhpcy5nZXRNaW5ab29tKCktKGU/MTowKSxhPXRoaXMuZ2V0TWF4Wm9vbSgpLHI9dGhpcy5nZXRTaXplKCksaD10LmdldE5vcnRoV2VzdCgpLGw9dC5nZXRTb3V0aEVhc3QoKSx1PSEwO2k9by5wb2ludChpfHxbMCwwXSk7ZG8gcysrLG49dGhpcy5wcm9qZWN0KGwscykuc3VidHJhY3QodGhpcy5wcm9qZWN0KGgscykpLmFkZChpKSx1PWU/bi54PHIueHx8bi55PHIueTpyLmNvbnRhaW5zKG4pO3doaWxlKHUmJmE+PXMpO3JldHVybiB1JiZlP251bGw6ZT9zOnMtMX0sZ2V0U2l6ZTpmdW5jdGlvbigpe3JldHVybighdGhpcy5fc2l6ZXx8dGhpcy5fc2l6ZUNoYW5nZWQpJiYodGhpcy5fc2l6ZT1uZXcgby5Qb2ludCh0aGlzLl9jb250YWluZXIuY2xpZW50V2lkdGgsdGhpcy5fY29udGFpbmVyLmNsaWVudEhlaWdodCksdGhpcy5fc2l6ZUNoYW5nZWQ9ITEpLHRoaXMuX3NpemUuY2xvbmUoKX0sZ2V0UGl4ZWxCb3VuZHM6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9nZXRUb3BMZWZ0UG9pbnQoKTtyZXR1cm4gbmV3IG8uQm91bmRzKHQsdC5hZGQodGhpcy5nZXRTaXplKCkpKX0sZ2V0UGl4ZWxPcmlnaW46ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY2hlY2tJZkxvYWRlZCgpLHRoaXMuX2luaXRpYWxUb3BMZWZ0UG9pbnR9LGdldFBhbmVzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3BhbmVzfSxnZXRDb250YWluZXI6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY29udGFpbmVyfSxnZXRab29tU2NhbGU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5vcHRpb25zLmNycztyZXR1cm4gZS5zY2FsZSh0KS9lLnNjYWxlKHRoaXMuX3pvb20pfSxnZXRTY2FsZVpvb206ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3pvb20rTWF0aC5sb2codCkvTWF0aC5MTjJ9LHByb2plY3Q6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZT1lPT09aT90aGlzLl96b29tOmUsdGhpcy5vcHRpb25zLmNycy5sYXRMbmdUb1BvaW50KG8ubGF0TG5nKHQpLGUpfSx1bnByb2plY3Q6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZT1lPT09aT90aGlzLl96b29tOmUsdGhpcy5vcHRpb25zLmNycy5wb2ludFRvTGF0TG5nKG8ucG9pbnQodCksZSl9LGxheWVyUG9pbnRUb0xhdExuZzpmdW5jdGlvbih0KXt2YXIgZT1vLnBvaW50KHQpLmFkZCh0aGlzLmdldFBpeGVsT3JpZ2luKCkpO3JldHVybiB0aGlzLnVucHJvamVjdChlKX0sbGF0TG5nVG9MYXllclBvaW50OmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMucHJvamVjdChvLmxhdExuZyh0KSkuX3JvdW5kKCk7cmV0dXJuIGUuX3N1YnRyYWN0KHRoaXMuZ2V0UGl4ZWxPcmlnaW4oKSl9LGNvbnRhaW5lclBvaW50VG9MYXllclBvaW50OmZ1bmN0aW9uKHQpe3JldHVybiBvLnBvaW50KHQpLnN1YnRyYWN0KHRoaXMuX2dldE1hcFBhbmVQb3MoKSl9LGxheWVyUG9pbnRUb0NvbnRhaW5lclBvaW50OmZ1bmN0aW9uKHQpe3JldHVybiBvLnBvaW50KHQpLmFkZCh0aGlzLl9nZXRNYXBQYW5lUG9zKCkpfSxjb250YWluZXJQb2ludFRvTGF0TG5nOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuY29udGFpbmVyUG9pbnRUb0xheWVyUG9pbnQoby5wb2ludCh0KSk7cmV0dXJuIHRoaXMubGF5ZXJQb2ludFRvTGF0TG5nKGUpfSxsYXRMbmdUb0NvbnRhaW5lclBvaW50OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmxheWVyUG9pbnRUb0NvbnRhaW5lclBvaW50KHRoaXMubGF0TG5nVG9MYXllclBvaW50KG8ubGF0TG5nKHQpKSl9LG1vdXNlRXZlbnRUb0NvbnRhaW5lclBvaW50OmZ1bmN0aW9uKHQpe3JldHVybiBvLkRvbUV2ZW50LmdldE1vdXNlUG9zaXRpb24odCx0aGlzLl9jb250YWluZXIpfSxtb3VzZUV2ZW50VG9MYXllclBvaW50OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNvbnRhaW5lclBvaW50VG9MYXllclBvaW50KHRoaXMubW91c2VFdmVudFRvQ29udGFpbmVyUG9pbnQodCkpfSxtb3VzZUV2ZW50VG9MYXRMbmc6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMubGF5ZXJQb2ludFRvTGF0TG5nKHRoaXMubW91c2VFdmVudFRvTGF5ZXJQb2ludCh0KSl9LF9pbml0Q29udGFpbmVyOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX2NvbnRhaW5lcj1vLkRvbVV0aWwuZ2V0KHQpO2lmKCFlKXRocm93IG5ldyBFcnJvcigiTWFwIGNvbnRhaW5lciBub3QgZm91bmQuIik7aWYoZS5fbGVhZmxldCl0aHJvdyBuZXcgRXJyb3IoIk1hcCBjb250YWluZXIgaXMgYWxyZWFkeSBpbml0aWFsaXplZC4iKTtlLl9sZWFmbGV0PSEwfSxfaW5pdExheW91dDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX2NvbnRhaW5lcjtvLkRvbVV0aWwuYWRkQ2xhc3ModCwibGVhZmxldC1jb250YWluZXIiKyhvLkJyb3dzZXIudG91Y2g/IiBsZWFmbGV0LXRvdWNoIjoiIikrKG8uQnJvd3Nlci5yZXRpbmE/IiBsZWFmbGV0LXJldGluYSI6IiIpKyhvLkJyb3dzZXIuaWVsdDk/IiBsZWFmbGV0LW9sZGllIjoiIikrKHRoaXMub3B0aW9ucy5mYWRlQW5pbWF0aW9uPyIgbGVhZmxldC1mYWRlLWFuaW0iOiIiKSk7dmFyIGU9by5Eb21VdGlsLmdldFN0eWxlKHQsInBvc2l0aW9uIik7ImFic29sdXRlIiE9PWUmJiJyZWxhdGl2ZSIhPT1lJiYiZml4ZWQiIT09ZSYmKHQuc3R5bGUucG9zaXRpb249InJlbGF0aXZlIiksdGhpcy5faW5pdFBhbmVzKCksdGhpcy5faW5pdENvbnRyb2xQb3MmJnRoaXMuX2luaXRDb250cm9sUG9zKCl9LF9pbml0UGFuZXM6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9wYW5lcz17fTt0aGlzLl9tYXBQYW5lPXQubWFwUGFuZT10aGlzLl9jcmVhdGVQYW5lKCJsZWFmbGV0LW1hcC1wYW5lIix0aGlzLl9jb250YWluZXIpLHRoaXMuX3RpbGVQYW5lPXQudGlsZVBhbmU9dGhpcy5fY3JlYXRlUGFuZSgibGVhZmxldC10aWxlLXBhbmUiLHRoaXMuX21hcFBhbmUpLHQub2JqZWN0c1BhbmU9dGhpcy5fY3JlYXRlUGFuZSgibGVhZmxldC1vYmplY3RzLXBhbmUiLHRoaXMuX21hcFBhbmUpLHQuc2hhZG93UGFuZT10aGlzLl9jcmVhdGVQYW5lKCJsZWFmbGV0LXNoYWRvdy1wYW5lIiksdC5vdmVybGF5UGFuZT10aGlzLl9jcmVhdGVQYW5lKCJsZWFmbGV0LW92ZXJsYXktcGFuZSIpLHQubWFya2VyUGFuZT10aGlzLl9jcmVhdGVQYW5lKCJsZWFmbGV0LW1hcmtlci1wYW5lIiksdC5wb3B1cFBhbmU9dGhpcy5fY3JlYXRlUGFuZSgibGVhZmxldC1wb3B1cC1wYW5lIik7dmFyIGU9IiBsZWFmbGV0LXpvb20taGlkZSI7dGhpcy5vcHRpb25zLm1hcmtlclpvb21BbmltYXRpb258fChvLkRvbVV0aWwuYWRkQ2xhc3ModC5tYXJrZXJQYW5lLGUpLG8uRG9tVXRpbC5hZGRDbGFzcyh0LnNoYWRvd1BhbmUsZSksby5Eb21VdGlsLmFkZENsYXNzKHQucG9wdXBQYW5lLGUpKX0sX2NyZWF0ZVBhbmU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gby5Eb21VdGlsLmNyZWF0ZSgiZGl2Iix0LGV8fHRoaXMuX3BhbmVzLm9iamVjdHNQYW5lKX0sX2NsZWFyUGFuZXM6ZnVuY3Rpb24oKXt0aGlzLl9jb250YWluZXIucmVtb3ZlQ2hpbGQodGhpcy5fbWFwUGFuZSl9LF9hZGRMYXllcnM6ZnVuY3Rpb24odCl7dD10P28uVXRpbC5pc0FycmF5KHQpP3Q6W3RdOltdO2Zvcih2YXIgZT0wLGk9dC5sZW5ndGg7aT5lO2UrKyl0aGlzLmFkZExheWVyKHRbZV0pfSxfcmVzZXRWaWV3OmZ1bmN0aW9uKHQsZSxpLG4pe3ZhciBzPXRoaXMuX3pvb20hPT1lO258fCh0aGlzLmZpcmUoIm1vdmVzdGFydCIpLHMmJnRoaXMuZmlyZSgiem9vbXN0YXJ0IikpLHRoaXMuX3pvb209ZSx0aGlzLl9pbml0aWFsQ2VudGVyPXQsdGhpcy5faW5pdGlhbFRvcExlZnRQb2ludD10aGlzLl9nZXROZXdUb3BMZWZ0UG9pbnQodCksaT90aGlzLl9pbml0aWFsVG9wTGVmdFBvaW50Ll9hZGQodGhpcy5fZ2V0TWFwUGFuZVBvcygpKTpvLkRvbVV0aWwuc2V0UG9zaXRpb24odGhpcy5fbWFwUGFuZSxuZXcgby5Qb2ludCgwLDApKSx0aGlzLl90aWxlTGF5ZXJzVG9Mb2FkPXRoaXMuX3RpbGVMYXllcnNOdW07dmFyIGE9IXRoaXMuX2xvYWRlZDt0aGlzLl9sb2FkZWQ9ITAsdGhpcy5maXJlKCJ2aWV3cmVzZXQiLHtoYXJkOiFpfSksYSYmKHRoaXMuZmlyZSgibG9hZCIpLHRoaXMuZWFjaExheWVyKHRoaXMuX2xheWVyQWRkLHRoaXMpKSx0aGlzLmZpcmUoIm1vdmUiKSwoc3x8bikmJnRoaXMuZmlyZSgiem9vbWVuZCIpLHRoaXMuZmlyZSgibW92ZWVuZCIse2hhcmQ6IWl9KX0sX3Jhd1BhbkJ5OmZ1bmN0aW9uKHQpe28uRG9tVXRpbC5zZXRQb3NpdGlvbih0aGlzLl9tYXBQYW5lLHRoaXMuX2dldE1hcFBhbmVQb3MoKS5zdWJ0cmFjdCh0KSl9LF9nZXRab29tU3BhbjpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldE1heFpvb20oKS10aGlzLmdldE1pblpvb20oKX0sX3VwZGF0ZVpvb21MZXZlbHM6ZnVuY3Rpb24oKXt2YXIgdCxlPTEvMCxuPS0xLzAsbz10aGlzLl9nZXRab29tU3BhbigpO2Zvcih0IGluIHRoaXMuX3pvb21Cb3VuZExheWVycyl7dmFyIHM9dGhpcy5fem9vbUJvdW5kTGF5ZXJzW3RdO2lzTmFOKHMub3B0aW9ucy5taW5ab29tKXx8KGU9TWF0aC5taW4oZSxzLm9wdGlvbnMubWluWm9vbSkpLGlzTmFOKHMub3B0aW9ucy5tYXhab29tKXx8KG49TWF0aC5tYXgobixzLm9wdGlvbnMubWF4Wm9vbSkpfXQ9PT1pP3RoaXMuX2xheWVyc01heFpvb209dGhpcy5fbGF5ZXJzTWluWm9vbT1pOih0aGlzLl9sYXllcnNNYXhab29tPW4sdGhpcy5fbGF5ZXJzTWluWm9vbT1lKSxvIT09dGhpcy5fZ2V0Wm9vbVNwYW4oKSYmdGhpcy5maXJlKCJ6b29tbGV2ZWxzY2hhbmdlIil9LF9wYW5JbnNpZGVNYXhCb3VuZHM6ZnVuY3Rpb24oKXt0aGlzLnBhbkluc2lkZUJvdW5kcyh0aGlzLm9wdGlvbnMubWF4Qm91bmRzKX0sX2NoZWNrSWZMb2FkZWQ6ZnVuY3Rpb24oKXtpZighdGhpcy5fbG9hZGVkKXRocm93IG5ldyBFcnJvcigiU2V0IG1hcCBjZW50ZXIgYW5kIHpvb20gZmlyc3QuIil9LF9pbml0RXZlbnRzOmZ1bmN0aW9uKGUpe2lmKG8uRG9tRXZlbnQpe2U9ZXx8Im9uIixvLkRvbUV2ZW50W2VdKHRoaXMuX2NvbnRhaW5lciwiY2xpY2siLHRoaXMuX29uTW91c2VDbGljayx0aGlzKTt2YXIgaSxuLHM9WyJkYmxjbGljayIsIm1vdXNlZG93biIsIm1vdXNldXAiLCJtb3VzZWVudGVyIiwibW91c2VsZWF2ZSIsIm1vdXNlbW92ZSIsImNvbnRleHRtZW51Il07Zm9yKGk9MCxuPXMubGVuZ3RoO24+aTtpKyspby5Eb21FdmVudFtlXSh0aGlzLl9jb250YWluZXIsc1tpXSx0aGlzLl9maXJlTW91c2VFdmVudCx0aGlzKTt0aGlzLm9wdGlvbnMudHJhY2tSZXNpemUmJm8uRG9tRXZlbnRbZV0odCwicmVzaXplIix0aGlzLl9vblJlc2l6ZSx0aGlzKX19LF9vblJlc2l6ZTpmdW5jdGlvbigpe28uVXRpbC5jYW5jZWxBbmltRnJhbWUodGhpcy5fcmVzaXplUmVxdWVzdCksdGhpcy5fcmVzaXplUmVxdWVzdD1vLlV0aWwucmVxdWVzdEFuaW1GcmFtZShmdW5jdGlvbigpe3RoaXMuaW52YWxpZGF0ZVNpemUoe2RlYm91bmNlTW92ZWVuZDohMH0pfSx0aGlzLCExLHRoaXMuX2NvbnRhaW5lcil9LF9vbk1vdXNlQ2xpY2s6ZnVuY3Rpb24odCl7IXRoaXMuX2xvYWRlZHx8IXQuX3NpbXVsYXRlZCYmKHRoaXMuZHJhZ2dpbmcmJnRoaXMuZHJhZ2dpbmcubW92ZWQoKXx8dGhpcy5ib3hab29tJiZ0aGlzLmJveFpvb20ubW92ZWQoKSl8fG8uRG9tRXZlbnQuX3NraXBwZWQodCl8fCh0aGlzLmZpcmUoInByZWNsaWNrIiksdGhpcy5fZmlyZU1vdXNlRXZlbnQodCkpfSxfZmlyZU1vdXNlRXZlbnQ6ZnVuY3Rpb24odCl7aWYodGhpcy5fbG9hZGVkJiYhby5Eb21FdmVudC5fc2tpcHBlZCh0KSl7dmFyIGU9dC50eXBlO2lmKGU9Im1vdXNlZW50ZXIiPT09ZT8ibW91c2VvdmVyIjoibW91c2VsZWF2ZSI9PT1lPyJtb3VzZW91dCI6ZSx0aGlzLmhhc0V2ZW50TGlzdGVuZXJzKGUpKXsiY29udGV4dG1lbnUiPT09ZSYmby5Eb21FdmVudC5wcmV2ZW50RGVmYXVsdCh0KTt2YXIgaT10aGlzLm1vdXNlRXZlbnRUb0NvbnRhaW5lclBvaW50KHQpLG49dGhpcy5jb250YWluZXJQb2ludFRvTGF5ZXJQb2ludChpKSxzPXRoaXMubGF5ZXJQb2ludFRvTGF0TG5nKG4pO3RoaXMuZmlyZShlLHtsYXRsbmc6cyxsYXllclBvaW50Om4sY29udGFpbmVyUG9pbnQ6aSxvcmlnaW5hbEV2ZW50OnR9KX19fSxfb25UaWxlTGF5ZXJMb2FkOmZ1bmN0aW9uKCl7dGhpcy5fdGlsZUxheWVyc1RvTG9hZC0tLHRoaXMuX3RpbGVMYXllcnNOdW0mJiF0aGlzLl90aWxlTGF5ZXJzVG9Mb2FkJiZ0aGlzLmZpcmUoInRpbGVsYXllcnNsb2FkIil9LF9jbGVhckhhbmRsZXJzOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PTAsZT10aGlzLl9oYW5kbGVycy5sZW5ndGg7ZT50O3QrKyl0aGlzLl9oYW5kbGVyc1t0XS5kaXNhYmxlKCl9LHdoZW5SZWFkeTpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLl9sb2FkZWQ/dC5jYWxsKGV8fHRoaXMsdGhpcyk6dGhpcy5vbigibG9hZCIsdCxlKSx0aGlzfSxfbGF5ZXJBZGQ6ZnVuY3Rpb24odCl7dC5vbkFkZCh0aGlzKSx0aGlzLmZpcmUoImxheWVyYWRkIix7bGF5ZXI6dH0pfSxfZ2V0TWFwUGFuZVBvczpmdW5jdGlvbigpe3JldHVybiBvLkRvbVV0aWwuZ2V0UG9zaXRpb24odGhpcy5fbWFwUGFuZSl9LF9tb3ZlZDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX2dldE1hcFBhbmVQb3MoKTtyZXR1cm4gdCYmIXQuZXF1YWxzKFswLDBdKX0sX2dldFRvcExlZnRQb2ludDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldFBpeGVsT3JpZ2luKCkuc3VidHJhY3QodGhpcy5fZ2V0TWFwUGFuZVBvcygpKX0sX2dldE5ld1RvcExlZnRQb2ludDpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMuZ2V0U2l6ZSgpLl9kaXZpZGVCeSgyKTtyZXR1cm4gdGhpcy5wcm9qZWN0KHQsZSkuX3N1YnRyYWN0KGkpLl9yb3VuZCgpfSxfbGF0TG5nVG9OZXdMYXllclBvaW50OmZ1bmN0aW9uKHQsZSxpKXt2YXIgbj10aGlzLl9nZXROZXdUb3BMZWZ0UG9pbnQoaSxlKS5hZGQodGhpcy5fZ2V0TWFwUGFuZVBvcygpKTtyZXR1cm4gdGhpcy5wcm9qZWN0KHQsZSkuX3N1YnRyYWN0KG4pfSxfZ2V0Q2VudGVyTGF5ZXJQb2ludDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbnRhaW5lclBvaW50VG9MYXllclBvaW50KHRoaXMuZ2V0U2l6ZSgpLl9kaXZpZGVCeSgyKSl9LF9nZXRDZW50ZXJPZmZzZXQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMubGF0TG5nVG9MYXllclBvaW50KHQpLnN1YnRyYWN0KHRoaXMuX2dldENlbnRlckxheWVyUG9pbnQoKSl9LF9saW1pdENlbnRlcjpmdW5jdGlvbih0LGUsaSl7aWYoIWkpcmV0dXJuIHQ7dmFyIG49dGhpcy5wcm9qZWN0KHQsZSkscz10aGlzLmdldFNpemUoKS5kaXZpZGVCeSgyKSxhPW5ldyBvLkJvdW5kcyhuLnN1YnRyYWN0KHMpLG4uYWRkKHMpKSxyPXRoaXMuX2dldEJvdW5kc09mZnNldChhLGksZSk7cmV0dXJuIHRoaXMudW5wcm9qZWN0KG4uYWRkKHIpLGUpfSxfbGltaXRPZmZzZXQ6ZnVuY3Rpb24odCxlKXtpZighZSlyZXR1cm4gdDt2YXIgaT10aGlzLmdldFBpeGVsQm91bmRzKCksbj1uZXcgby5Cb3VuZHMoaS5taW4uYWRkKHQpLGkubWF4LmFkZCh0KSk7cmV0dXJuIHQuYWRkKHRoaXMuX2dldEJvdW5kc09mZnNldChuLGUpKX0sX2dldEJvdW5kc09mZnNldDpmdW5jdGlvbih0LGUsaSl7dmFyIG49dGhpcy5wcm9qZWN0KGUuZ2V0Tm9ydGhXZXN0KCksaSkuc3VidHJhY3QodC5taW4pLHM9dGhpcy5wcm9qZWN0KGUuZ2V0U291dGhFYXN0KCksaSkuc3VidHJhY3QodC5tYXgpLGE9dGhpcy5fcmVib3VuZChuLngsLXMueCkscj10aGlzLl9yZWJvdW5kKG4ueSwtcy55KTtyZXR1cm4gbmV3IG8uUG9pbnQoYSxyKX0sX3JlYm91bmQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdCtlPjA/TWF0aC5yb3VuZCh0LWUpLzI6TWF0aC5tYXgoMCxNYXRoLmNlaWwodCkpLU1hdGgubWF4KDAsTWF0aC5mbG9vcihlKSl9LF9saW1pdFpvb206ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5nZXRNaW5ab29tKCksaT10aGlzLmdldE1heFpvb20oKTtyZXR1cm4gTWF0aC5tYXgoZSxNYXRoLm1pbihpLHQpKX19KSxvLm1hcD1mdW5jdGlvbih0LGUpe3JldHVybiBuZXcgby5NYXAodCxlKX0sby5Qcm9qZWN0aW9uLk1lcmNhdG9yPXtNQVhfTEFUSVRVREU6ODUuMDg0MDU5MTU1NixSX01JTk9SOjYzNTY3NTIuMzE0MjQ1MTc5LFJfTUFKT1I6NjM3ODEzNyxwcm9qZWN0OmZ1bmN0aW9uKHQpe3ZhciBlPW8uTGF0TG5nLkRFR19UT19SQUQsaT10aGlzLk1BWF9MQVRJVFVERSxuPU1hdGgubWF4KE1hdGgubWluKGksdC5sYXQpLC1pKSxzPXRoaXMuUl9NQUpPUixhPXRoaXMuUl9NSU5PUixyPXQubG5nKmUqcyxoPW4qZSxsPWEvcyx1PU1hdGguc3FydCgxLWwqbCksYz11Kk1hdGguc2luKGgpO2M9TWF0aC5wb3coKDEtYykvKDErYyksLjUqdSk7dmFyIGQ9TWF0aC50YW4oLjUqKC41Kk1hdGguUEktaCkpL2M7cmV0dXJuIGg9LXMqTWF0aC5sb2coZCksbmV3IG8uUG9pbnQocixoKX0sdW5wcm9qZWN0OmZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxpPW8uTGF0TG5nLlJBRF9UT19ERUcsbj10aGlzLlJfTUFKT1Iscz10aGlzLlJfTUlOT1IsYT10LngqaS9uLHI9cy9uLGg9TWF0aC5zcXJ0KDEtcipyKSxsPU1hdGguZXhwKC10LnkvbiksdT1NYXRoLlBJLzItMipNYXRoLmF0YW4obCksYz0xNSxkPTFlLTcscD1jLF89LjE7TWF0aC5hYnMoXyk+ZCYmLS1wPjA7KWU9aCpNYXRoLnNpbih1KSxfPU1hdGguUEkvMi0yKk1hdGguYXRhbihsKk1hdGgucG93KCgxLWUpLygxK2UpLC41KmgpKS11LHUrPV87CnJldHVybiBuZXcgby5MYXRMbmcodSppLGEpfX0sby5DUlMuRVBTRzMzOTU9by5leHRlbmQoe30sby5DUlMse2NvZGU6IkVQU0c6MzM5NSIscHJvamVjdGlvbjpvLlByb2plY3Rpb24uTWVyY2F0b3IsdHJhbnNmb3JtYXRpb246ZnVuY3Rpb24oKXt2YXIgdD1vLlByb2plY3Rpb24uTWVyY2F0b3IsZT10LlJfTUFKT1IsaT0uNS8oTWF0aC5QSSplKTtyZXR1cm4gbmV3IG8uVHJhbnNmb3JtYXRpb24oaSwuNSwtaSwuNSl9KCl9KSxvLlRpbGVMYXllcj1vLkNsYXNzLmV4dGVuZCh7aW5jbHVkZXM6by5NaXhpbi5FdmVudHMsb3B0aW9uczp7bWluWm9vbTowLG1heFpvb206MTgsdGlsZVNpemU6MjU2LHN1YmRvbWFpbnM6ImFiYyIsZXJyb3JUaWxlVXJsOiIiLGF0dHJpYnV0aW9uOiIiLHpvb21PZmZzZXQ6MCxvcGFjaXR5OjEsdW5sb2FkSW52aXNpYmxlVGlsZXM6by5Ccm93c2VyLm1vYmlsZSx1cGRhdGVXaGVuSWRsZTpvLkJyb3dzZXIubW9iaWxlfSxpbml0aWFsaXplOmZ1bmN0aW9uKHQsZSl7ZT1vLnNldE9wdGlvbnModGhpcyxlKSxlLmRldGVjdFJldGluYSYmby5Ccm93c2VyLnJldGluYSYmZS5tYXhab29tPjAmJihlLnRpbGVTaXplPU1hdGguZmxvb3IoZS50aWxlU2l6ZS8yKSxlLnpvb21PZmZzZXQrKyxlLm1pblpvb20+MCYmZS5taW5ab29tLS0sdGhpcy5vcHRpb25zLm1heFpvb20tLSksZS5ib3VuZHMmJihlLmJvdW5kcz1vLmxhdExuZ0JvdW5kcyhlLmJvdW5kcykpLHRoaXMuX3VybD10O3ZhciBpPXRoaXMub3B0aW9ucy5zdWJkb21haW5zOyJzdHJpbmciPT10eXBlb2YgaSYmKHRoaXMub3B0aW9ucy5zdWJkb21haW5zPWkuc3BsaXQoIiIpKX0sb25BZGQ6ZnVuY3Rpb24odCl7dGhpcy5fbWFwPXQsdGhpcy5fYW5pbWF0ZWQ9dC5fem9vbUFuaW1hdGVkLHRoaXMuX2luaXRDb250YWluZXIoKSx0Lm9uKHt2aWV3cmVzZXQ6dGhpcy5fcmVzZXQsbW92ZWVuZDp0aGlzLl91cGRhdGV9LHRoaXMpLHRoaXMuX2FuaW1hdGVkJiZ0Lm9uKHt6b29tYW5pbTp0aGlzLl9hbmltYXRlWm9vbSx6b29tZW5kOnRoaXMuX2VuZFpvb21BbmltfSx0aGlzKSx0aGlzLm9wdGlvbnMudXBkYXRlV2hlbklkbGV8fCh0aGlzLl9saW1pdGVkVXBkYXRlPW8uVXRpbC5saW1pdEV4ZWNCeUludGVydmFsKHRoaXMuX3VwZGF0ZSwxNTAsdGhpcyksdC5vbigibW92ZSIsdGhpcy5fbGltaXRlZFVwZGF0ZSx0aGlzKSksdGhpcy5fcmVzZXQoKSx0aGlzLl91cGRhdGUoKX0sYWRkVG86ZnVuY3Rpb24odCl7cmV0dXJuIHQuYWRkTGF5ZXIodGhpcyksdGhpc30sb25SZW1vdmU6ZnVuY3Rpb24odCl7dGhpcy5fY29udGFpbmVyLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5fY29udGFpbmVyKSx0Lm9mZih7dmlld3Jlc2V0OnRoaXMuX3Jlc2V0LG1vdmVlbmQ6dGhpcy5fdXBkYXRlfSx0aGlzKSx0aGlzLl9hbmltYXRlZCYmdC5vZmYoe3pvb21hbmltOnRoaXMuX2FuaW1hdGVab29tLHpvb21lbmQ6dGhpcy5fZW5kWm9vbUFuaW19LHRoaXMpLHRoaXMub3B0aW9ucy51cGRhdGVXaGVuSWRsZXx8dC5vZmYoIm1vdmUiLHRoaXMuX2xpbWl0ZWRVcGRhdGUsdGhpcyksdGhpcy5fY29udGFpbmVyPW51bGwsdGhpcy5fbWFwPW51bGx9LGJyaW5nVG9Gcm9udDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX21hcC5fcGFuZXMudGlsZVBhbmU7cmV0dXJuIHRoaXMuX2NvbnRhaW5lciYmKHQuYXBwZW5kQ2hpbGQodGhpcy5fY29udGFpbmVyKSx0aGlzLl9zZXRBdXRvWkluZGV4KHQsTWF0aC5tYXgpKSx0aGlzfSxicmluZ1RvQmFjazpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX21hcC5fcGFuZXMudGlsZVBhbmU7cmV0dXJuIHRoaXMuX2NvbnRhaW5lciYmKHQuaW5zZXJ0QmVmb3JlKHRoaXMuX2NvbnRhaW5lcix0LmZpcnN0Q2hpbGQpLHRoaXMuX3NldEF1dG9aSW5kZXgodCxNYXRoLm1pbikpLHRoaXN9LGdldEF0dHJpYnV0aW9uOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub3B0aW9ucy5hdHRyaWJ1dGlvbn0sZ2V0Q29udGFpbmVyOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NvbnRhaW5lcn0sc2V0T3BhY2l0eTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5vcHRpb25zLm9wYWNpdHk9dCx0aGlzLl9tYXAmJnRoaXMuX3VwZGF0ZU9wYWNpdHkoKSx0aGlzfSxzZXRaSW5kZXg6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMub3B0aW9ucy56SW5kZXg9dCx0aGlzLl91cGRhdGVaSW5kZXgoKSx0aGlzfSxzZXRVcmw6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5fdXJsPXQsZXx8dGhpcy5yZWRyYXcoKSx0aGlzfSxyZWRyYXc6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbWFwJiYodGhpcy5fcmVzZXQoe2hhcmQ6ITB9KSx0aGlzLl91cGRhdGUoKSksdGhpc30sX3VwZGF0ZVpJbmRleDpmdW5jdGlvbigpe3RoaXMuX2NvbnRhaW5lciYmdGhpcy5vcHRpb25zLnpJbmRleCE9PWkmJih0aGlzLl9jb250YWluZXIuc3R5bGUuekluZGV4PXRoaXMub3B0aW9ucy56SW5kZXgpfSxfc2V0QXV0b1pJbmRleDpmdW5jdGlvbih0LGUpe3ZhciBpLG4sbyxzPXQuY2hpbGRyZW4sYT0tZSgxLzAsLTEvMCk7Zm9yKG49MCxvPXMubGVuZ3RoO28+bjtuKyspc1tuXSE9PXRoaXMuX2NvbnRhaW5lciYmKGk9cGFyc2VJbnQoc1tuXS5zdHlsZS56SW5kZXgsMTApLGlzTmFOKGkpfHwoYT1lKGEsaSkpKTt0aGlzLm9wdGlvbnMuekluZGV4PXRoaXMuX2NvbnRhaW5lci5zdHlsZS56SW5kZXg9KGlzRmluaXRlKGEpP2E6MCkrZSgxLC0xKX0sX3VwZGF0ZU9wYWNpdHk6ZnVuY3Rpb24oKXt2YXIgdCxlPXRoaXMuX3RpbGVzO2lmKG8uQnJvd3Nlci5pZWx0OSlmb3IodCBpbiBlKW8uRG9tVXRpbC5zZXRPcGFjaXR5KGVbdF0sdGhpcy5vcHRpb25zLm9wYWNpdHkpO2Vsc2Ugby5Eb21VdGlsLnNldE9wYWNpdHkodGhpcy5fY29udGFpbmVyLHRoaXMub3B0aW9ucy5vcGFjaXR5KX0sX2luaXRDb250YWluZXI6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9tYXAuX3BhbmVzLnRpbGVQYW5lO2lmKCF0aGlzLl9jb250YWluZXIpe2lmKHRoaXMuX2NvbnRhaW5lcj1vLkRvbVV0aWwuY3JlYXRlKCJkaXYiLCJsZWFmbGV0LWxheWVyIiksdGhpcy5fdXBkYXRlWkluZGV4KCksdGhpcy5fYW5pbWF0ZWQpe3ZhciBlPSJsZWFmbGV0LXRpbGUtY29udGFpbmVyIjt0aGlzLl9iZ0J1ZmZlcj1vLkRvbVV0aWwuY3JlYXRlKCJkaXYiLGUsdGhpcy5fY29udGFpbmVyKSx0aGlzLl90aWxlQ29udGFpbmVyPW8uRG9tVXRpbC5jcmVhdGUoImRpdiIsZSx0aGlzLl9jb250YWluZXIpfWVsc2UgdGhpcy5fdGlsZUNvbnRhaW5lcj10aGlzLl9jb250YWluZXI7dC5hcHBlbmRDaGlsZCh0aGlzLl9jb250YWluZXIpLHRoaXMub3B0aW9ucy5vcGFjaXR5PDEmJnRoaXMuX3VwZGF0ZU9wYWNpdHkoKX19LF9yZXNldDpmdW5jdGlvbih0KXtmb3IodmFyIGUgaW4gdGhpcy5fdGlsZXMpdGhpcy5maXJlKCJ0aWxldW5sb2FkIix7dGlsZTp0aGlzLl90aWxlc1tlXX0pO3RoaXMuX3RpbGVzPXt9LHRoaXMuX3RpbGVzVG9Mb2FkPTAsdGhpcy5vcHRpb25zLnJldXNlVGlsZXMmJih0aGlzLl91bnVzZWRUaWxlcz1bXSksdGhpcy5fdGlsZUNvbnRhaW5lci5pbm5lckhUTUw9IiIsdGhpcy5fYW5pbWF0ZWQmJnQmJnQuaGFyZCYmdGhpcy5fY2xlYXJCZ0J1ZmZlcigpLHRoaXMuX2luaXRDb250YWluZXIoKX0sX2dldFRpbGVTaXplOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fbWFwLGU9dC5nZXRab29tKCkrdGhpcy5vcHRpb25zLnpvb21PZmZzZXQsaT10aGlzLm9wdGlvbnMubWF4TmF0aXZlWm9vbSxuPXRoaXMub3B0aW9ucy50aWxlU2l6ZTtyZXR1cm4gaSYmZT5pJiYobj1NYXRoLnJvdW5kKHQuZ2V0Wm9vbVNjYWxlKGUpL3QuZ2V0Wm9vbVNjYWxlKGkpKm4pKSxufSxfdXBkYXRlOmZ1bmN0aW9uKCl7aWYodGhpcy5fbWFwKXt2YXIgdD10aGlzLl9tYXAsZT10LmdldFBpeGVsQm91bmRzKCksaT10LmdldFpvb20oKSxuPXRoaXMuX2dldFRpbGVTaXplKCk7aWYoIShpPnRoaXMub3B0aW9ucy5tYXhab29tfHxpPHRoaXMub3B0aW9ucy5taW5ab29tKSl7dmFyIHM9by5ib3VuZHMoZS5taW4uZGl2aWRlQnkobikuX2Zsb29yKCksZS5tYXguZGl2aWRlQnkobikuX2Zsb29yKCkpO3RoaXMuX2FkZFRpbGVzRnJvbUNlbnRlck91dChzKSwodGhpcy5vcHRpb25zLnVubG9hZEludmlzaWJsZVRpbGVzfHx0aGlzLm9wdGlvbnMucmV1c2VUaWxlcykmJnRoaXMuX3JlbW92ZU90aGVyVGlsZXMocyl9fX0sX2FkZFRpbGVzRnJvbUNlbnRlck91dDpmdW5jdGlvbih0KXt2YXIgaSxuLHMsYT1bXSxyPXQuZ2V0Q2VudGVyKCk7Zm9yKGk9dC5taW4ueTtpPD10Lm1heC55O2krKylmb3Iobj10Lm1pbi54O248PXQubWF4Lng7bisrKXM9bmV3IG8uUG9pbnQobixpKSx0aGlzLl90aWxlU2hvdWxkQmVMb2FkZWQocykmJmEucHVzaChzKTt2YXIgaD1hLmxlbmd0aDtpZigwIT09aCl7YS5zb3J0KGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQuZGlzdGFuY2VUbyhyKS1lLmRpc3RhbmNlVG8ocil9KTt2YXIgbD1lLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtmb3IodGhpcy5fdGlsZXNUb0xvYWR8fHRoaXMuZmlyZSgibG9hZGluZyIpLHRoaXMuX3RpbGVzVG9Mb2FkKz1oLG49MDtoPm47bisrKXRoaXMuX2FkZFRpbGUoYVtuXSxsKTt0aGlzLl90aWxlQ29udGFpbmVyLmFwcGVuZENoaWxkKGwpfX0sX3RpbGVTaG91bGRCZUxvYWRlZDpmdW5jdGlvbih0KXtpZih0LngrIjoiK3QueSBpbiB0aGlzLl90aWxlcylyZXR1cm4hMTt2YXIgZT10aGlzLm9wdGlvbnM7aWYoIWUuY29udGludW91c1dvcmxkKXt2YXIgaT10aGlzLl9nZXRXcmFwVGlsZU51bSgpO2lmKGUubm9XcmFwJiYodC54PDB8fHQueD49aS54KXx8dC55PDB8fHQueT49aS55KXJldHVybiExfWlmKGUuYm91bmRzKXt2YXIgbj1lLnRpbGVTaXplLG89dC5tdWx0aXBseUJ5KG4pLHM9by5hZGQoW24sbl0pLGE9dGhpcy5fbWFwLnVucHJvamVjdChvKSxyPXRoaXMuX21hcC51bnByb2plY3Qocyk7aWYoZS5jb250aW51b3VzV29ybGR8fGUubm9XcmFwfHwoYT1hLndyYXAoKSxyPXIud3JhcCgpKSwhZS5ib3VuZHMuaW50ZXJzZWN0cyhbYSxyXSkpcmV0dXJuITF9cmV0dXJuITB9LF9yZW1vdmVPdGhlclRpbGVzOmZ1bmN0aW9uKHQpe3ZhciBlLGksbixvO2ZvcihvIGluIHRoaXMuX3RpbGVzKWU9by5zcGxpdCgiOiIpLGk9cGFyc2VJbnQoZVswXSwxMCksbj1wYXJzZUludChlWzFdLDEwKSwoaTx0Lm1pbi54fHxpPnQubWF4Lnh8fG48dC5taW4ueXx8bj50Lm1heC55KSYmdGhpcy5fcmVtb3ZlVGlsZShvKX0sX3JlbW92ZVRpbGU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fdGlsZXNbdF07dGhpcy5maXJlKCJ0aWxldW5sb2FkIix7dGlsZTplLHVybDplLnNyY30pLHRoaXMub3B0aW9ucy5yZXVzZVRpbGVzPyhvLkRvbVV0aWwucmVtb3ZlQ2xhc3MoZSwibGVhZmxldC10aWxlLWxvYWRlZCIpLHRoaXMuX3VudXNlZFRpbGVzLnB1c2goZSkpOmUucGFyZW50Tm9kZT09PXRoaXMuX3RpbGVDb250YWluZXImJnRoaXMuX3RpbGVDb250YWluZXIucmVtb3ZlQ2hpbGQoZSksby5Ccm93c2VyLmFuZHJvaWR8fChlLm9ubG9hZD1udWxsLGUuc3JjPW8uVXRpbC5lbXB0eUltYWdlVXJsKSxkZWxldGUgdGhpcy5fdGlsZXNbdF19LF9hZGRUaWxlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy5fZ2V0VGlsZVBvcyh0KSxuPXRoaXMuX2dldFRpbGUoKTtvLkRvbVV0aWwuc2V0UG9zaXRpb24obixpLG8uQnJvd3Nlci5jaHJvbWUpLHRoaXMuX3RpbGVzW3QueCsiOiIrdC55XT1uLHRoaXMuX2xvYWRUaWxlKG4sdCksbi5wYXJlbnROb2RlIT09dGhpcy5fdGlsZUNvbnRhaW5lciYmZS5hcHBlbmRDaGlsZChuKX0sX2dldFpvb21Gb3JVcmw6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLm9wdGlvbnMsZT10aGlzLl9tYXAuZ2V0Wm9vbSgpO3JldHVybiB0Lnpvb21SZXZlcnNlJiYoZT10Lm1heFpvb20tZSksZSs9dC56b29tT2Zmc2V0LHQubWF4TmF0aXZlWm9vbT9NYXRoLm1pbihlLHQubWF4TmF0aXZlWm9vbSk6ZX0sX2dldFRpbGVQb3M6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fbWFwLmdldFBpeGVsT3JpZ2luKCksaT10aGlzLl9nZXRUaWxlU2l6ZSgpO3JldHVybiB0Lm11bHRpcGx5QnkoaSkuc3VidHJhY3QoZSl9LGdldFRpbGVVcmw6ZnVuY3Rpb24odCl7cmV0dXJuIG8uVXRpbC50ZW1wbGF0ZSh0aGlzLl91cmwsby5leHRlbmQoe3M6dGhpcy5fZ2V0U3ViZG9tYWluKHQpLHo6dC56LHg6dC54LHk6dC55fSx0aGlzLm9wdGlvbnMpKX0sX2dldFdyYXBUaWxlTnVtOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fbWFwLm9wdGlvbnMuY3JzLGU9dC5nZXRTaXplKHRoaXMuX21hcC5nZXRab29tKCkpO3JldHVybiBlLmRpdmlkZUJ5KHRoaXMuX2dldFRpbGVTaXplKCkpLl9mbG9vcigpfSxfYWRqdXN0VGlsZVBvaW50OmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX2dldFdyYXBUaWxlTnVtKCk7dGhpcy5vcHRpb25zLmNvbnRpbnVvdXNXb3JsZHx8dGhpcy5vcHRpb25zLm5vV3JhcHx8KHQueD0odC54JWUueCtlLngpJWUueCksdGhpcy5vcHRpb25zLnRtcyYmKHQueT1lLnktdC55LTEpLHQuej10aGlzLl9nZXRab29tRm9yVXJsKCl9LF9nZXRTdWJkb21haW46ZnVuY3Rpb24odCl7dmFyIGU9TWF0aC5hYnModC54K3QueSkldGhpcy5vcHRpb25zLnN1YmRvbWFpbnMubGVuZ3RoO3JldHVybiB0aGlzLm9wdGlvbnMuc3ViZG9tYWluc1tlXX0sX2dldFRpbGU6ZnVuY3Rpb24oKXtpZih0aGlzLm9wdGlvbnMucmV1c2VUaWxlcyYmdGhpcy5fdW51c2VkVGlsZXMubGVuZ3RoPjApe3ZhciB0PXRoaXMuX3VudXNlZFRpbGVzLnBvcCgpO3JldHVybiB0aGlzLl9yZXNldFRpbGUodCksdH1yZXR1cm4gdGhpcy5fY3JlYXRlVGlsZSgpfSxfcmVzZXRUaWxlOmZ1bmN0aW9uKCl7fSxfY3JlYXRlVGlsZTpmdW5jdGlvbigpe3ZhciB0PW8uRG9tVXRpbC5jcmVhdGUoImltZyIsImxlYWZsZXQtdGlsZSIpO3JldHVybiB0LnN0eWxlLndpZHRoPXQuc3R5bGUuaGVpZ2h0PXRoaXMuX2dldFRpbGVTaXplKCkrInB4Iix0LmdhbGxlcnlpbWc9Im5vIix0Lm9uc2VsZWN0c3RhcnQ9dC5vbm1vdXNlbW92ZT1vLlV0aWwuZmFsc2VGbixvLkJyb3dzZXIuaWVsdDkmJnRoaXMub3B0aW9ucy5vcGFjaXR5IT09aSYmby5Eb21VdGlsLnNldE9wYWNpdHkodCx0aGlzLm9wdGlvbnMub3BhY2l0eSksby5Ccm93c2VyLm1vYmlsZVdlYmtpdDNkJiYodC5zdHlsZS5XZWJraXRCYWNrZmFjZVZpc2liaWxpdHk9ImhpZGRlbiIpLHR9LF9sb2FkVGlsZTpmdW5jdGlvbih0LGUpe3QuX2xheWVyPXRoaXMsdC5vbmxvYWQ9dGhpcy5fdGlsZU9uTG9hZCx0Lm9uZXJyb3I9dGhpcy5fdGlsZU9uRXJyb3IsdGhpcy5fYWRqdXN0VGlsZVBvaW50KGUpLHQuc3JjPXRoaXMuZ2V0VGlsZVVybChlKSx0aGlzLmZpcmUoInRpbGVsb2Fkc3RhcnQiLHt0aWxlOnQsdXJsOnQuc3JjfSl9LF90aWxlTG9hZGVkOmZ1bmN0aW9uKCl7dGhpcy5fdGlsZXNUb0xvYWQtLSx0aGlzLl9hbmltYXRlZCYmby5Eb21VdGlsLmFkZENsYXNzKHRoaXMuX3RpbGVDb250YWluZXIsImxlYWZsZXQtem9vbS1hbmltYXRlZCIpLHRoaXMuX3RpbGVzVG9Mb2FkfHwodGhpcy5maXJlKCJsb2FkIiksdGhpcy5fYW5pbWF0ZWQmJihjbGVhclRpbWVvdXQodGhpcy5fY2xlYXJCZ0J1ZmZlclRpbWVyKSx0aGlzLl9jbGVhckJnQnVmZmVyVGltZXI9c2V0VGltZW91dChvLmJpbmQodGhpcy5fY2xlYXJCZ0J1ZmZlcix0aGlzKSw1MDApKSl9LF90aWxlT25Mb2FkOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fbGF5ZXI7dGhpcy5zcmMhPT1vLlV0aWwuZW1wdHlJbWFnZVVybCYmKG8uRG9tVXRpbC5hZGRDbGFzcyh0aGlzLCJsZWFmbGV0LXRpbGUtbG9hZGVkIiksdC5maXJlKCJ0aWxlbG9hZCIse3RpbGU6dGhpcyx1cmw6dGhpcy5zcmN9KSksdC5fdGlsZUxvYWRlZCgpfSxfdGlsZU9uRXJyb3I6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9sYXllcjt0LmZpcmUoInRpbGVlcnJvciIse3RpbGU6dGhpcyx1cmw6dGhpcy5zcmN9KTt2YXIgZT10Lm9wdGlvbnMuZXJyb3JUaWxlVXJsO2UmJih0aGlzLnNyYz1lKSx0Ll90aWxlTG9hZGVkKCl9fSksby50aWxlTGF5ZXI9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3IG8uVGlsZUxheWVyKHQsZSl9LG8uVGlsZUxheWVyLldNUz1vLlRpbGVMYXllci5leHRlbmQoe2RlZmF1bHRXbXNQYXJhbXM6e3NlcnZpY2U6IldNUyIscmVxdWVzdDoiR2V0TWFwIix2ZXJzaW9uOiIxLjEuMSIsbGF5ZXJzOiIiLHN0eWxlczoiIixmb3JtYXQ6ImltYWdlL2pwZWciLHRyYW5zcGFyZW50OiExfSxpbml0aWFsaXplOmZ1bmN0aW9uKHQsZSl7dGhpcy5fdXJsPXQ7dmFyIGk9by5leHRlbmQoe30sdGhpcy5kZWZhdWx0V21zUGFyYW1zKSxuPWUudGlsZVNpemV8fHRoaXMub3B0aW9ucy50aWxlU2l6ZTtpLndpZHRoPWkuaGVpZ2h0PWUuZGV0ZWN0UmV0aW5hJiZvLkJyb3dzZXIucmV0aW5hPzIqbjpuO2Zvcih2YXIgcyBpbiBlKXRoaXMub3B0aW9ucy5oYXNPd25Qcm9wZXJ0eShzKXx8ImNycyI9PT1zfHwoaVtzXT1lW3NdKTt0aGlzLndtc1BhcmFtcz1pLG8uc2V0T3B0aW9ucyh0aGlzLGUpfSxvbkFkZDpmdW5jdGlvbih0KXt0aGlzLl9jcnM9dGhpcy5vcHRpb25zLmNyc3x8dC5vcHRpb25zLmNycyx0aGlzLl93bXNWZXJzaW9uPXBhcnNlRmxvYXQodGhpcy53bXNQYXJhbXMudmVyc2lvbik7dmFyIGU9dGhpcy5fd21zVmVyc2lvbj49MS4zPyJjcnMiOiJzcnMiO3RoaXMud21zUGFyYW1zW2VdPXRoaXMuX2Nycy5jb2RlLG8uVGlsZUxheWVyLnByb3RvdHlwZS5vbkFkZC5jYWxsKHRoaXMsdCl9LGdldFRpbGVVcmw6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fbWFwLGk9dGhpcy5vcHRpb25zLnRpbGVTaXplLG49dC5tdWx0aXBseUJ5KGkpLHM9bi5hZGQoW2ksaV0pLGE9dGhpcy5fY3JzLnByb2plY3QoZS51bnByb2plY3Qobix0LnopKSxyPXRoaXMuX2Nycy5wcm9qZWN0KGUudW5wcm9qZWN0KHMsdC56KSksaD10aGlzLl93bXNWZXJzaW9uPj0xLjMmJnRoaXMuX2Nycz09PW8uQ1JTLkVQU0c0MzI2P1tyLnksYS54LGEueSxyLnhdLmpvaW4oIiwiKTpbYS54LHIueSxyLngsYS55XS5qb2luKCIsIiksbD1vLlV0aWwudGVtcGxhdGUodGhpcy5fdXJsLHtzOnRoaXMuX2dldFN1YmRvbWFpbih0KX0pO3JldHVybiBsK28uVXRpbC5nZXRQYXJhbVN0cmluZyh0aGlzLndtc1BhcmFtcyxsLCEwKSsiJkJCT1g9IitofSxzZXRQYXJhbXM6ZnVuY3Rpb24odCxlKXtyZXR1cm4gby5leHRlbmQodGhpcy53bXNQYXJhbXMsdCksZXx8dGhpcy5yZWRyYXcoKSx0aGlzfX0pLG8udGlsZUxheWVyLndtcz1mdW5jdGlvbih0LGUpe3JldHVybiBuZXcgby5UaWxlTGF5ZXIuV01TKHQsZSl9LG8uVGlsZUxheWVyLkNhbnZhcz1vLlRpbGVMYXllci5leHRlbmQoe29wdGlvbnM6e2FzeW5jOiExfSxpbml0aWFsaXplOmZ1bmN0aW9uKHQpe28uc2V0T3B0aW9ucyh0aGlzLHQpfSxyZWRyYXc6ZnVuY3Rpb24oKXt0aGlzLl9tYXAmJih0aGlzLl9yZXNldCh7aGFyZDohMH0pLHRoaXMuX3VwZGF0ZSgpKTtmb3IodmFyIHQgaW4gdGhpcy5fdGlsZXMpdGhpcy5fcmVkcmF3VGlsZSh0aGlzLl90aWxlc1t0XSk7cmV0dXJuIHRoaXN9LF9yZWRyYXdUaWxlOmZ1bmN0aW9uKHQpe3RoaXMuZHJhd1RpbGUodCx0Ll90aWxlUG9pbnQsdGhpcy5fbWFwLl96b29tKX0sX2NyZWF0ZVRpbGU6ZnVuY3Rpb24oKXt2YXIgdD1vLkRvbVV0aWwuY3JlYXRlKCJjYW52YXMiLCJsZWFmbGV0LXRpbGUiKTtyZXR1cm4gdC53aWR0aD10LmhlaWdodD10aGlzLm9wdGlvbnMudGlsZVNpemUsdC5vbnNlbGVjdHN0YXJ0PXQub25tb3VzZW1vdmU9by5VdGlsLmZhbHNlRm4sdH0sX2xvYWRUaWxlOmZ1bmN0aW9uKHQsZSl7dC5fbGF5ZXI9dGhpcyx0Ll90aWxlUG9pbnQ9ZSx0aGlzLl9yZWRyYXdUaWxlKHQpLHRoaXMub3B0aW9ucy5hc3luY3x8dGhpcy50aWxlRHJhd24odCl9LGRyYXdUaWxlOmZ1bmN0aW9uKCl7fSx0aWxlRHJhd246ZnVuY3Rpb24odCl7dGhpcy5fdGlsZU9uTG9hZC5jYWxsKHQpfX0pLG8udGlsZUxheWVyLmNhbnZhcz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IG8uVGlsZUxheWVyLkNhbnZhcyh0KX0sby5JbWFnZU92ZXJsYXk9by5DbGFzcy5leHRlbmQoe2luY2x1ZGVzOm8uTWl4aW4uRXZlbnRzLG9wdGlvbnM6e29wYWNpdHk6MX0saW5pdGlhbGl6ZTpmdW5jdGlvbih0LGUsaSl7dGhpcy5fdXJsPXQsdGhpcy5fYm91bmRzPW8ubGF0TG5nQm91bmRzKGUpLG8uc2V0T3B0aW9ucyh0aGlzLGkpfSxvbkFkZDpmdW5jdGlvbih0KXt0aGlzLl9tYXA9dCx0aGlzLl9pbWFnZXx8dGhpcy5faW5pdEltYWdlKCksdC5fcGFuZXMub3ZlcmxheVBhbmUuYXBwZW5kQ2hpbGQodGhpcy5faW1hZ2UpLHQub24oInZpZXdyZXNldCIsdGhpcy5fcmVzZXQsdGhpcyksdC5vcHRpb25zLnpvb21BbmltYXRpb24mJm8uQnJvd3Nlci5hbnkzZCYmdC5vbigiem9vbWFuaW0iLHRoaXMuX2FuaW1hdGVab29tLHRoaXMpLHRoaXMuX3Jlc2V0KCl9LG9uUmVtb3ZlOmZ1bmN0aW9uKHQpe3QuZ2V0UGFuZXMoKS5vdmVybGF5UGFuZS5yZW1vdmVDaGlsZCh0aGlzLl9pbWFnZSksdC5vZmYoInZpZXdyZXNldCIsdGhpcy5fcmVzZXQsdGhpcyksdC5vcHRpb25zLnpvb21BbmltYXRpb24mJnQub2ZmKCJ6b29tYW5pbSIsdGhpcy5fYW5pbWF0ZVpvb20sdGhpcyl9LGFkZFRvOmZ1bmN0aW9uKHQpe3JldHVybiB0LmFkZExheWVyKHRoaXMpLHRoaXN9LHNldE9wYWNpdHk6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMub3B0aW9ucy5vcGFjaXR5PXQsdGhpcy5fdXBkYXRlT3BhY2l0eSgpLHRoaXN9LGJyaW5nVG9Gcm9udDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9pbWFnZSYmdGhpcy5fbWFwLl9wYW5lcy5vdmVybGF5UGFuZS5hcHBlbmRDaGlsZCh0aGlzLl9pbWFnZSksdGhpc30sYnJpbmdUb0JhY2s6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9tYXAuX3BhbmVzLm92ZXJsYXlQYW5lO3JldHVybiB0aGlzLl9pbWFnZSYmdC5pbnNlcnRCZWZvcmUodGhpcy5faW1hZ2UsdC5maXJzdENoaWxkKSx0aGlzfSxzZXRVcmw6ZnVuY3Rpb24odCl7dGhpcy5fdXJsPXQsdGhpcy5faW1hZ2Uuc3JjPXRoaXMuX3VybH0sZ2V0QXR0cmlidXRpb246ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vcHRpb25zLmF0dHJpYnV0aW9ufSxfaW5pdEltYWdlOmZ1bmN0aW9uKCl7dGhpcy5faW1hZ2U9by5Eb21VdGlsLmNyZWF0ZSgiaW1nIiwibGVhZmxldC1pbWFnZS1sYXllciIpLHRoaXMuX21hcC5vcHRpb25zLnpvb21BbmltYXRpb24mJm8uQnJvd3Nlci5hbnkzZD9vLkRvbVV0aWwuYWRkQ2xhc3ModGhpcy5faW1hZ2UsImxlYWZsZXQtem9vbS1hbmltYXRlZCIpOm8uRG9tVXRpbC5hZGRDbGFzcyh0aGlzLl9pbWFnZSwibGVhZmxldC16b29tLWhpZGUiKSx0aGlzLl91cGRhdGVPcGFjaXR5KCksby5leHRlbmQodGhpcy5faW1hZ2Use2dhbGxlcnlpbWc6Im5vIixvbnNlbGVjdHN0YXJ0Om8uVXRpbC5mYWxzZUZuLG9ubW91c2Vtb3ZlOm8uVXRpbC5mYWxzZUZuLG9ubG9hZDpvLmJpbmQodGhpcy5fb25JbWFnZUxvYWQsdGhpcyksc3JjOnRoaXMuX3VybH0pfSxfYW5pbWF0ZVpvb206ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fbWFwLGk9dGhpcy5faW1hZ2Usbj1lLmdldFpvb21TY2FsZSh0Lnpvb20pLHM9dGhpcy5fYm91bmRzLmdldE5vcnRoV2VzdCgpLGE9dGhpcy5fYm91bmRzLmdldFNvdXRoRWFzdCgpLHI9ZS5fbGF0TG5nVG9OZXdMYXllclBvaW50KHMsdC56b29tLHQuY2VudGVyKSxoPWUuX2xhdExuZ1RvTmV3TGF5ZXJQb2ludChhLHQuem9vbSx0LmNlbnRlcikuX3N1YnRyYWN0KHIpLGw9ci5fYWRkKGguX211bHRpcGx5QnkoLjUqKDEtMS9uKSkpO2kuc3R5bGVbby5Eb21VdGlsLlRSQU5TRk9STV09by5Eb21VdGlsLmdldFRyYW5zbGF0ZVN0cmluZyhsKSsiIHNjYWxlKCIrbisiKSAifSxfcmVzZXQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9pbWFnZSxlPXRoaXMuX21hcC5sYXRMbmdUb0xheWVyUG9pbnQodGhpcy5fYm91bmRzLmdldE5vcnRoV2VzdCgpKSxpPXRoaXMuX21hcC5sYXRMbmdUb0xheWVyUG9pbnQodGhpcy5fYm91bmRzLmdldFNvdXRoRWFzdCgpKS5fc3VidHJhY3QoZSk7by5Eb21VdGlsLnNldFBvc2l0aW9uKHQsZSksdC5zdHlsZS53aWR0aD1pLngrInB4Iix0LnN0eWxlLmhlaWdodD1pLnkrInB4In0sX29uSW1hZ2VMb2FkOmZ1bmN0aW9uKCl7dGhpcy5maXJlKCJsb2FkIil9LF91cGRhdGVPcGFjaXR5OmZ1bmN0aW9uKCl7by5Eb21VdGlsLnNldE9wYWNpdHkodGhpcy5faW1hZ2UsdGhpcy5vcHRpb25zLm9wYWNpdHkpfX0pLG8uaW1hZ2VPdmVybGF5PWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gbmV3IG8uSW1hZ2VPdmVybGF5KHQsZSxpKX0sby5JY29uPW8uQ2xhc3MuZXh0ZW5kKHtvcHRpb25zOntjbGFzc05hbWU6IiJ9LGluaXRpYWxpemU6ZnVuY3Rpb24odCl7by5zZXRPcHRpb25zKHRoaXMsdCl9LGNyZWF0ZUljb246ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2NyZWF0ZUljb24oImljb24iLHQpfSxjcmVhdGVTaGFkb3c6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2NyZWF0ZUljb24oInNoYWRvdyIsdCl9LF9jcmVhdGVJY29uOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy5fZ2V0SWNvblVybCh0KTtpZighaSl7aWYoImljb24iPT09dCl0aHJvdyBuZXcgRXJyb3IoImljb25Vcmwgbm90IHNldCBpbiBJY29uIG9wdGlvbnMgKHNlZSB0aGUgZG9jcykuIik7cmV0dXJuIG51bGx9dmFyIG47cmV0dXJuIG49ZSYmIklNRyI9PT1lLnRhZ05hbWU/dGhpcy5fY3JlYXRlSW1nKGksZSk6dGhpcy5fY3JlYXRlSW1nKGkpLHRoaXMuX3NldEljb25TdHlsZXMobix0KSxufSxfc2V0SWNvblN0eWxlczpmdW5jdGlvbih0LGUpe3ZhciBpLG49dGhpcy5vcHRpb25zLHM9by5wb2ludChuW2UrIlNpemUiXSk7aT1vLnBvaW50KCJzaGFkb3ciPT09ZT9uLnNoYWRvd0FuY2hvcnx8bi5pY29uQW5jaG9yOm4uaWNvbkFuY2hvciksIWkmJnMmJihpPXMuZGl2aWRlQnkoMiwhMCkpLHQuY2xhc3NOYW1lPSJsZWFmbGV0LW1hcmtlci0iK2UrIiAiK24uY2xhc3NOYW1lLGkmJih0LnN0eWxlLm1hcmdpbkxlZnQ9LWkueCsicHgiLHQuc3R5bGUubWFyZ2luVG9wPS1pLnkrInB4IikscyYmKHQuc3R5bGUud2lkdGg9cy54KyJweCIsdC5zdHlsZS5oZWlnaHQ9cy55KyJweCIpfSxfY3JlYXRlSW1nOmZ1bmN0aW9uKHQsaSl7cmV0dXJuIGk9aXx8ZS5jcmVhdGVFbGVtZW50KCJpbWciKSxpLnNyYz10LGl9LF9nZXRJY29uVXJsOmZ1bmN0aW9uKHQpe3JldHVybiBvLkJyb3dzZXIucmV0aW5hJiZ0aGlzLm9wdGlvbnNbdCsiUmV0aW5hVXJsIl0/dGhpcy5vcHRpb25zW3QrIlJldGluYVVybCJdOnRoaXMub3B0aW9uc1t0KyJVcmwiXX19KSxvLmljb249ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBvLkljb24odCl9LG8uSWNvbi5EZWZhdWx0PW8uSWNvbi5leHRlbmQoe29wdGlvbnM6e2ljb25TaXplOlsyNSw0MV0saWNvbkFuY2hvcjpbMTIsNDFdLHBvcHVwQW5jaG9yOlsxLC0zNF0sc2hhZG93U2l6ZTpbNDEsNDFdfSxfZ2V0SWNvblVybDpmdW5jdGlvbih0KXt2YXIgZT10KyJVcmwiO2lmKHRoaXMub3B0aW9uc1tlXSlyZXR1cm4gdGhpcy5vcHRpb25zW2VdO28uQnJvd3Nlci5yZXRpbmEmJiJpY29uIj09PXQmJih0Kz0iLTJ4Iik7dmFyIGk9by5JY29uLkRlZmF1bHQuaW1hZ2VQYXRoO2lmKCFpKXRocm93IG5ldyBFcnJvcigiQ291bGRuJ3QgYXV0b2RldGVjdCBMLkljb24uRGVmYXVsdC5pbWFnZVBhdGgsIHNldCBpdCBtYW51YWxseS4iKTtyZXR1cm4gaSsiL21hcmtlci0iK3QrIi5wbmcifX0pLG8uSWNvbi5EZWZhdWx0LmltYWdlUGF0aD1mdW5jdGlvbigpe3ZhciB0LGksbixvLHMsYT1lLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJzY3JpcHQiKSxyPS9bXC9eXWxlYWZsZXRbXC1cLl9dPyhbXHdcLVwuX10qKVwuanNcPz8vO2Zvcih0PTAsaT1hLmxlbmd0aDtpPnQ7dCsrKWlmKG49YVt0XS5zcmMsbz1uLm1hdGNoKHIpKXJldHVybiBzPW4uc3BsaXQocilbMF0sKHM/cysiLyI6IiIpKyJpbWFnZXMifSgpLG8uTWFya2VyPW8uQ2xhc3MuZXh0ZW5kKHtpbmNsdWRlczpvLk1peGluLkV2ZW50cyxvcHRpb25zOntpY29uOm5ldyBvLkljb24uRGVmYXVsdCx0aXRsZToiIixhbHQ6IiIsY2xpY2thYmxlOiEwLGRyYWdnYWJsZTohMSxrZXlib2FyZDohMCx6SW5kZXhPZmZzZXQ6MCxvcGFjaXR5OjEscmlzZU9uSG92ZXI6ITEscmlzZU9mZnNldDoyNTB9LGluaXRpYWxpemU6ZnVuY3Rpb24odCxlKXtvLnNldE9wdGlvbnModGhpcyxlKSx0aGlzLl9sYXRsbmc9by5sYXRMbmcodCl9LG9uQWRkOmZ1bmN0aW9uKHQpe3RoaXMuX21hcD10LHQub24oInZpZXdyZXNldCIsdGhpcy51cGRhdGUsdGhpcyksdGhpcy5faW5pdEljb24oKSx0aGlzLnVwZGF0ZSgpLHRoaXMuZmlyZSgiYWRkIiksdC5vcHRpb25zLnpvb21BbmltYXRpb24mJnQub3B0aW9ucy5tYXJrZXJab29tQW5pbWF0aW9uJiZ0Lm9uKCJ6b29tYW5pbSIsdGhpcy5fYW5pbWF0ZVpvb20sdGhpcyl9LGFkZFRvOmZ1bmN0aW9uKHQpe3JldHVybiB0LmFkZExheWVyKHRoaXMpLHRoaXN9LG9uUmVtb3ZlOmZ1bmN0aW9uKHQpe3RoaXMuZHJhZ2dpbmcmJnRoaXMuZHJhZ2dpbmcuZGlzYWJsZSgpLHRoaXMuX3JlbW92ZUljb24oKSx0aGlzLl9yZW1vdmVTaGFkb3coKSx0aGlzLmZpcmUoInJlbW92ZSIpLHQub2ZmKHt2aWV3cmVzZXQ6dGhpcy51cGRhdGUsem9vbWFuaW06dGhpcy5fYW5pbWF0ZVpvb219LHRoaXMpLHRoaXMuX21hcD1udWxsfSxnZXRMYXRMbmc6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbGF0bG5nfSxzZXRMYXRMbmc6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2xhdGxuZz1vLmxhdExuZyh0KSx0aGlzLnVwZGF0ZSgpLHRoaXMuZmlyZSgibW92ZSIse2xhdGxuZzp0aGlzLl9sYXRsbmd9KX0sc2V0WkluZGV4T2Zmc2V0OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLm9wdGlvbnMuekluZGV4T2Zmc2V0PXQsdGhpcy51cGRhdGUoKSx0aGlzfSxzZXRJY29uOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLm9wdGlvbnMuaWNvbj10LHRoaXMuX21hcCYmKHRoaXMuX2luaXRJY29uKCksdGhpcy51cGRhdGUoKSksdGhpcy5fcG9wdXAmJnRoaXMuYmluZFBvcHVwKHRoaXMuX3BvcHVwKSx0aGlzfSx1cGRhdGU6ZnVuY3Rpb24oKXtpZih0aGlzLl9pY29uKXt2YXIgdD10aGlzLl9tYXAubGF0TG5nVG9MYXllclBvaW50KHRoaXMuX2xhdGxuZykucm91bmQoKTt0aGlzLl9zZXRQb3ModCl9cmV0dXJuIHRoaXN9LF9pbml0SWNvbjpmdW5jdGlvbigpe3ZhciB0PXRoaXMub3B0aW9ucyxlPXRoaXMuX21hcCxpPWUub3B0aW9ucy56b29tQW5pbWF0aW9uJiZlLm9wdGlvbnMubWFya2VyWm9vbUFuaW1hdGlvbixuPWk/ImxlYWZsZXQtem9vbS1hbmltYXRlZCI6ImxlYWZsZXQtem9vbS1oaWRlIixzPXQuaWNvbi5jcmVhdGVJY29uKHRoaXMuX2ljb24pLGE9ITE7cyE9PXRoaXMuX2ljb24mJih0aGlzLl9pY29uJiZ0aGlzLl9yZW1vdmVJY29uKCksYT0hMCx0LnRpdGxlJiYocy50aXRsZT10LnRpdGxlKSx0LmFsdCYmKHMuYWx0PXQuYWx0KSksby5Eb21VdGlsLmFkZENsYXNzKHMsbiksdC5rZXlib2FyZCYmKHMudGFiSW5kZXg9IjAiKSx0aGlzLl9pY29uPXMsdGhpcy5faW5pdEludGVyYWN0aW9uKCksdC5yaXNlT25Ib3ZlciYmby5Eb21FdmVudC5vbihzLCJtb3VzZW92ZXIiLHRoaXMuX2JyaW5nVG9Gcm9udCx0aGlzKS5vbihzLCJtb3VzZW91dCIsdGhpcy5fcmVzZXRaSW5kZXgsdGhpcyk7dmFyIHI9dC5pY29uLmNyZWF0ZVNoYWRvdyh0aGlzLl9zaGFkb3cpLGg9ITE7ciE9PXRoaXMuX3NoYWRvdyYmKHRoaXMuX3JlbW92ZVNoYWRvdygpLGg9ITApLHImJm8uRG9tVXRpbC5hZGRDbGFzcyhyLG4pLHRoaXMuX3NoYWRvdz1yLHQub3BhY2l0eTwxJiZ0aGlzLl91cGRhdGVPcGFjaXR5KCk7dmFyIGw9dGhpcy5fbWFwLl9wYW5lczthJiZsLm1hcmtlclBhbmUuYXBwZW5kQ2hpbGQodGhpcy5faWNvbiksciYmaCYmbC5zaGFkb3dQYW5lLmFwcGVuZENoaWxkKHRoaXMuX3NoYWRvdyl9LF9yZW1vdmVJY29uOmZ1bmN0aW9uKCl7dGhpcy5vcHRpb25zLnJpc2VPbkhvdmVyJiZvLkRvbUV2ZW50Lm9mZih0aGlzLl9pY29uLCJtb3VzZW92ZXIiLHRoaXMuX2JyaW5nVG9Gcm9udCkub2ZmKHRoaXMuX2ljb24sIm1vdXNlb3V0Iix0aGlzLl9yZXNldFpJbmRleCksdGhpcy5fbWFwLl9wYW5lcy5tYXJrZXJQYW5lLnJlbW92ZUNoaWxkKHRoaXMuX2ljb24pLHRoaXMuX2ljb249bnVsbH0sX3JlbW92ZVNoYWRvdzpmdW5jdGlvbigpe3RoaXMuX3NoYWRvdyYmdGhpcy5fbWFwLl9wYW5lcy5zaGFkb3dQYW5lLnJlbW92ZUNoaWxkKHRoaXMuX3NoYWRvdyksdGhpcy5fc2hhZG93PW51bGx9LF9zZXRQb3M6ZnVuY3Rpb24odCl7by5Eb21VdGlsLnNldFBvc2l0aW9uKHRoaXMuX2ljb24sdCksdGhpcy5fc2hhZG93JiZvLkRvbVV0aWwuc2V0UG9zaXRpb24odGhpcy5fc2hhZG93LHQpLHRoaXMuX3pJbmRleD10LnkrdGhpcy5vcHRpb25zLnpJbmRleE9mZnNldCx0aGlzLl9yZXNldFpJbmRleCgpfSxfdXBkYXRlWkluZGV4OmZ1bmN0aW9uKHQpe3RoaXMuX2ljb24uc3R5bGUuekluZGV4PXRoaXMuX3pJbmRleCt0fSxfYW5pbWF0ZVpvb206ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fbWFwLl9sYXRMbmdUb05ld0xheWVyUG9pbnQodGhpcy5fbGF0bG5nLHQuem9vbSx0LmNlbnRlcikucm91bmQoKTt0aGlzLl9zZXRQb3MoZSl9LF9pbml0SW50ZXJhY3Rpb246ZnVuY3Rpb24oKXtpZih0aGlzLm9wdGlvbnMuY2xpY2thYmxlKXt2YXIgdD10aGlzLl9pY29uLGU9WyJkYmxjbGljayIsIm1vdXNlZG93biIsIm1vdXNlb3ZlciIsIm1vdXNlb3V0IiwiY29udGV4dG1lbnUiXTtvLkRvbVV0aWwuYWRkQ2xhc3ModCwibGVhZmxldC1jbGlja2FibGUiKSxvLkRvbUV2ZW50Lm9uKHQsImNsaWNrIix0aGlzLl9vbk1vdXNlQ2xpY2ssdGhpcyksby5Eb21FdmVudC5vbih0LCJrZXlwcmVzcyIsdGhpcy5fb25LZXlQcmVzcyx0aGlzKTtmb3IodmFyIGk9MDtpPGUubGVuZ3RoO2krKylvLkRvbUV2ZW50Lm9uKHQsZVtpXSx0aGlzLl9maXJlTW91c2VFdmVudCx0aGlzKTtvLkhhbmRsZXIuTWFya2VyRHJhZyYmKHRoaXMuZHJhZ2dpbmc9bmV3IG8uSGFuZGxlci5NYXJrZXJEcmFnKHRoaXMpLHRoaXMub3B0aW9ucy5kcmFnZ2FibGUmJnRoaXMuZHJhZ2dpbmcuZW5hYmxlKCkpfX0sX29uTW91c2VDbGljazpmdW5jdGlvbih0KXt2YXIgZT10aGlzLmRyYWdnaW5nJiZ0aGlzLmRyYWdnaW5nLm1vdmVkKCk7KHRoaXMuaGFzRXZlbnRMaXN0ZW5lcnModC50eXBlKXx8ZSkmJm8uRG9tRXZlbnQuc3RvcFByb3BhZ2F0aW9uKHQpLGV8fCh0aGlzLmRyYWdnaW5nJiZ0aGlzLmRyYWdnaW5nLl9lbmFibGVkfHwhdGhpcy5fbWFwLmRyYWdnaW5nfHwhdGhpcy5fbWFwLmRyYWdnaW5nLm1vdmVkKCkpJiZ0aGlzLmZpcmUodC50eXBlLHtvcmlnaW5hbEV2ZW50OnQsbGF0bG5nOnRoaXMuX2xhdGxuZ30pfSxfb25LZXlQcmVzczpmdW5jdGlvbih0KXsxMz09PXQua2V5Q29kZSYmdGhpcy5maXJlKCJjbGljayIse29yaWdpbmFsRXZlbnQ6dCxsYXRsbmc6dGhpcy5fbGF0bG5nfSl9LF9maXJlTW91c2VFdmVudDpmdW5jdGlvbih0KXt0aGlzLmZpcmUodC50eXBlLHtvcmlnaW5hbEV2ZW50OnQsbGF0bG5nOnRoaXMuX2xhdGxuZ30pLCJjb250ZXh0bWVudSI9PT10LnR5cGUmJnRoaXMuaGFzRXZlbnRMaXN0ZW5lcnModC50eXBlKSYmby5Eb21FdmVudC5wcmV2ZW50RGVmYXVsdCh0KSwibW91c2Vkb3duIiE9PXQudHlwZT9vLkRvbUV2ZW50LnN0b3BQcm9wYWdhdGlvbih0KTpvLkRvbUV2ZW50LnByZXZlbnREZWZhdWx0KHQpfSxzZXRPcGFjaXR5OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLm9wdGlvbnMub3BhY2l0eT10LHRoaXMuX21hcCYmdGhpcy5fdXBkYXRlT3BhY2l0eSgpLHRoaXN9LF91cGRhdGVPcGFjaXR5OmZ1bmN0aW9uKCl7by5Eb21VdGlsLnNldE9wYWNpdHkodGhpcy5faWNvbix0aGlzLm9wdGlvbnMub3BhY2l0eSksdGhpcy5fc2hhZG93JiZvLkRvbVV0aWwuc2V0T3BhY2l0eSh0aGlzLl9zaGFkb3csdGhpcy5vcHRpb25zLm9wYWNpdHkpfSxfYnJpbmdUb0Zyb250OmZ1bmN0aW9uKCl7dGhpcy5fdXBkYXRlWkluZGV4KHRoaXMub3B0aW9ucy5yaXNlT2Zmc2V0KX0sX3Jlc2V0WkluZGV4OmZ1bmN0aW9uKCl7dGhpcy5fdXBkYXRlWkluZGV4KDApfX0pLG8ubWFya2VyPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG5ldyBvLk1hcmtlcih0LGUpfSxvLkRpdkljb249by5JY29uLmV4dGVuZCh7b3B0aW9uczp7aWNvblNpemU6WzEyLDEyXSxjbGFzc05hbWU6ImxlYWZsZXQtZGl2LWljb24iLGh0bWw6ITF9LGNyZWF0ZUljb246ZnVuY3Rpb24odCl7dmFyIGk9dCYmIkRJViI9PT10LnRhZ05hbWU/dDplLmNyZWF0ZUVsZW1lbnQoImRpdiIpLG49dGhpcy5vcHRpb25zO3JldHVybiBpLmlubmVySFRNTD1uLmh0bWwhPT0hMT9uLmh0bWw6IiIsbi5iZ1BvcyYmKGkuc3R5bGUuYmFja2dyb3VuZFBvc2l0aW9uPS1uLmJnUG9zLngrInB4ICIrLW4uYmdQb3MueSsicHgiKSx0aGlzLl9zZXRJY29uU3R5bGVzKGksImljb24iKSxpfSxjcmVhdGVTaGFkb3c6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH19KSxvLmRpdkljb249ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBvLkRpdkljb24odCl9LG8uTWFwLm1lcmdlT3B0aW9ucyh7Y2xvc2VQb3B1cE9uQ2xpY2s6ITB9KSxvLlBvcHVwPW8uQ2xhc3MuZXh0ZW5kKHtpbmNsdWRlczpvLk1peGluLkV2ZW50cyxvcHRpb25zOnttaW5XaWR0aDo1MCxtYXhXaWR0aDozMDAsYXV0b1BhbjohMCxjbG9zZUJ1dHRvbjohMCxvZmZzZXQ6WzAsN10sYXV0b1BhblBhZGRpbmc6WzUsNV0sa2VlcEluVmlldzohMSxjbGFzc05hbWU6IiIsem9vbUFuaW1hdGlvbjohMH0saW5pdGlhbGl6ZTpmdW5jdGlvbih0LGUpe28uc2V0T3B0aW9ucyh0aGlzLHQpLHRoaXMuX3NvdXJjZT1lLHRoaXMuX2FuaW1hdGVkPW8uQnJvd3Nlci5hbnkzZCYmdGhpcy5vcHRpb25zLnpvb21BbmltYXRpb24sdGhpcy5faXNPcGVuPSExfSxvbkFkZDpmdW5jdGlvbih0KXt0aGlzLl9tYXA9dCx0aGlzLl9jb250YWluZXJ8fHRoaXMuX2luaXRMYXlvdXQoKTt2YXIgZT10Lm9wdGlvbnMuZmFkZUFuaW1hdGlvbjtlJiZvLkRvbVV0aWwuc2V0T3BhY2l0eSh0aGlzLl9jb250YWluZXIsMCksdC5fcGFuZXMucG9wdXBQYW5lLmFwcGVuZENoaWxkKHRoaXMuX2NvbnRhaW5lciksdC5vbih0aGlzLl9nZXRFdmVudHMoKSx0aGlzKSx0aGlzLnVwZGF0ZSgpLGUmJm8uRG9tVXRpbC5zZXRPcGFjaXR5KHRoaXMuX2NvbnRhaW5lciwxKSx0aGlzLmZpcmUoIm9wZW4iKSx0LmZpcmUoInBvcHVwb3BlbiIse3BvcHVwOnRoaXN9KSx0aGlzLl9zb3VyY2UmJnRoaXMuX3NvdXJjZS5maXJlKCJwb3B1cG9wZW4iLHtwb3B1cDp0aGlzfSl9LGFkZFRvOmZ1bmN0aW9uKHQpe3JldHVybiB0LmFkZExheWVyKHRoaXMpLHRoaXN9LG9wZW5PbjpmdW5jdGlvbih0KXtyZXR1cm4gdC5vcGVuUG9wdXAodGhpcyksdGhpc30sb25SZW1vdmU6ZnVuY3Rpb24odCl7dC5fcGFuZXMucG9wdXBQYW5lLnJlbW92ZUNoaWxkKHRoaXMuX2NvbnRhaW5lciksby5VdGlsLmZhbHNlRm4odGhpcy5fY29udGFpbmVyLm9mZnNldFdpZHRoKSx0Lm9mZih0aGlzLl9nZXRFdmVudHMoKSx0aGlzKSx0Lm9wdGlvbnMuZmFkZUFuaW1hdGlvbiYmby5Eb21VdGlsLnNldE9wYWNpdHkodGhpcy5fY29udGFpbmVyLDApLHRoaXMuX21hcD1udWxsLHRoaXMuZmlyZSgiY2xvc2UiKSx0LmZpcmUoInBvcHVwY2xvc2UiLHtwb3B1cDp0aGlzfSksdGhpcy5fc291cmNlJiZ0aGlzLl9zb3VyY2UuZmlyZSgicG9wdXBjbG9zZSIse3BvcHVwOnRoaXN9KX0sZ2V0TGF0TG5nOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2xhdGxuZ30sc2V0TGF0TG5nOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9sYXRsbmc9by5sYXRMbmcodCksdGhpcy5fbWFwJiYodGhpcy5fdXBkYXRlUG9zaXRpb24oKSx0aGlzLl9hZGp1c3RQYW4oKSksdGhpc30sZ2V0Q29udGVudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9jb250ZW50fSxzZXRDb250ZW50OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9jb250ZW50PXQsdGhpcy51cGRhdGUoKSx0aGlzfSx1cGRhdGU6ZnVuY3Rpb24oKXt0aGlzLl9tYXAmJih0aGlzLl9jb250YWluZXIuc3R5bGUudmlzaWJpbGl0eT0iaGlkZGVuIix0aGlzLl91cGRhdGVDb250ZW50KCksdGhpcy5fdXBkYXRlTGF5b3V0KCksdGhpcy5fdXBkYXRlUG9zaXRpb24oKSx0aGlzLl9jb250YWluZXIuc3R5bGUudmlzaWJpbGl0eT0iIix0aGlzLl9hZGp1c3RQYW4oKSl9LF9nZXRFdmVudHM6ZnVuY3Rpb24oKXt2YXIgdD17dmlld3Jlc2V0OnRoaXMuX3VwZGF0ZVBvc2l0aW9ufTtyZXR1cm4gdGhpcy5fYW5pbWF0ZWQmJih0Lnpvb21hbmltPXRoaXMuX3pvb21BbmltYXRpb24pLCgiY2xvc2VPbkNsaWNrImluIHRoaXMub3B0aW9ucz90aGlzLm9wdGlvbnMuY2xvc2VPbkNsaWNrOnRoaXMuX21hcC5vcHRpb25zLmNsb3NlUG9wdXBPbkNsaWNrKSYmKHQucHJlY2xpY2s9dGhpcy5fY2xvc2UpLHRoaXMub3B0aW9ucy5rZWVwSW5WaWV3JiYodC5tb3ZlZW5kPXRoaXMuX2FkanVzdFBhbiksdH0sX2Nsb3NlOmZ1bmN0aW9uKCl7dGhpcy5fbWFwJiZ0aGlzLl9tYXAuY2xvc2VQb3B1cCh0aGlzKX0sX2luaXRMYXlvdXQ6ZnVuY3Rpb24oKXt2YXIgdCxlPSJsZWFmbGV0LXBvcHVwIixpPWUrIiAiK3RoaXMub3B0aW9ucy5jbGFzc05hbWUrIiBsZWFmbGV0LXpvb20tIisodGhpcy5fYW5pbWF0ZWQ/ImFuaW1hdGVkIjoiaGlkZSIpLG49dGhpcy5fY29udGFpbmVyPW8uRG9tVXRpbC5jcmVhdGUoImRpdiIsaSk7dGhpcy5vcHRpb25zLmNsb3NlQnV0dG9uJiYodD10aGlzLl9jbG9zZUJ1dHRvbj1vLkRvbVV0aWwuY3JlYXRlKCJhIixlKyItY2xvc2UtYnV0dG9uIixuKSx0LmhyZWY9IiNjbG9zZSIsdC5pbm5lckhUTUw9IiYjMjE1OyIsby5Eb21FdmVudC5kaXNhYmxlQ2xpY2tQcm9wYWdhdGlvbih0KSxvLkRvbUV2ZW50Lm9uKHQsImNsaWNrIix0aGlzLl9vbkNsb3NlQnV0dG9uQ2xpY2ssdGhpcykpO3ZhciBzPXRoaXMuX3dyYXBwZXI9by5Eb21VdGlsLmNyZWF0ZSgiZGl2IixlKyItY29udGVudC13cmFwcGVyIixuKTtvLkRvbUV2ZW50LmRpc2FibGVDbGlja1Byb3BhZ2F0aW9uKHMpLHRoaXMuX2NvbnRlbnROb2RlPW8uRG9tVXRpbC5jcmVhdGUoImRpdiIsZSsiLWNvbnRlbnQiLHMpLG8uRG9tRXZlbnQuZGlzYWJsZVNjcm9sbFByb3BhZ2F0aW9uKHRoaXMuX2NvbnRlbnROb2RlKSxvLkRvbUV2ZW50Lm9uKHMsImNvbnRleHRtZW51IixvLkRvbUV2ZW50LnN0b3BQcm9wYWdhdGlvbiksdGhpcy5fdGlwQ29udGFpbmVyPW8uRG9tVXRpbC5jcmVhdGUoImRpdiIsZSsiLXRpcC1jb250YWluZXIiLG4pLHRoaXMuX3RpcD1vLkRvbVV0aWwuY3JlYXRlKCJkaXYiLGUrIi10aXAiLHRoaXMuX3RpcENvbnRhaW5lcil9LF91cGRhdGVDb250ZW50OmZ1bmN0aW9uKCl7aWYodGhpcy5fY29udGVudCl7aWYoInN0cmluZyI9PXR5cGVvZiB0aGlzLl9jb250ZW50KXRoaXMuX2NvbnRlbnROb2RlLmlubmVySFRNTD10aGlzLl9jb250ZW50O2Vsc2V7Zm9yKDt0aGlzLl9jb250ZW50Tm9kZS5oYXNDaGlsZE5vZGVzKCk7KXRoaXMuX2NvbnRlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMuX2NvbnRlbnROb2RlLmZpcnN0Q2hpbGQpO3RoaXMuX2NvbnRlbnROb2RlLmFwcGVuZENoaWxkKHRoaXMuX2NvbnRlbnQpfXRoaXMuZmlyZSgiY29udGVudHVwZGF0ZSIpfX0sX3VwZGF0ZUxheW91dDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX2NvbnRlbnROb2RlLGU9dC5zdHlsZTtlLndpZHRoPSIiLGUud2hpdGVTcGFjZT0ibm93cmFwIjt2YXIgaT10Lm9mZnNldFdpZHRoO2k9TWF0aC5taW4oaSx0aGlzLm9wdGlvbnMubWF4V2lkdGgpLGk9TWF0aC5tYXgoaSx0aGlzLm9wdGlvbnMubWluV2lkdGgpLGUud2lkdGg9aSsxKyJweCIsZS53aGl0ZVNwYWNlPSIiLGUuaGVpZ2h0PSIiO3ZhciBuPXQub2Zmc2V0SGVpZ2h0LHM9dGhpcy5vcHRpb25zLm1heEhlaWdodCxhPSJsZWFmbGV0LXBvcHVwLXNjcm9sbGVkIjtzJiZuPnM/KGUuaGVpZ2h0PXMrInB4IixvLkRvbVV0aWwuYWRkQ2xhc3ModCxhKSk6by5Eb21VdGlsLnJlbW92ZUNsYXNzKHQsYSksdGhpcy5fY29udGFpbmVyV2lkdGg9dGhpcy5fY29udGFpbmVyLm9mZnNldFdpZHRofSxfdXBkYXRlUG9zaXRpb246ZnVuY3Rpb24oKXtpZih0aGlzLl9tYXApe3ZhciB0PXRoaXMuX21hcC5sYXRMbmdUb0xheWVyUG9pbnQodGhpcy5fbGF0bG5nKSxlPXRoaXMuX2FuaW1hdGVkLGk9by5wb2ludCh0aGlzLm9wdGlvbnMub2Zmc2V0KTtlJiZvLkRvbVV0aWwuc2V0UG9zaXRpb24odGhpcy5fY29udGFpbmVyLHQpLHRoaXMuX2NvbnRhaW5lckJvdHRvbT0taS55LShlPzA6dC55KSx0aGlzLl9jb250YWluZXJMZWZ0PS1NYXRoLnJvdW5kKHRoaXMuX2NvbnRhaW5lcldpZHRoLzIpK2kueCsoZT8wOnQueCksdGhpcy5fY29udGFpbmVyLnN0eWxlLmJvdHRvbT10aGlzLl9jb250YWluZXJCb3R0b20rInB4Iix0aGlzLl9jb250YWluZXIuc3R5bGUubGVmdD10aGlzLl9jb250YWluZXJMZWZ0KyJweCJ9fSxfem9vbUFuaW1hdGlvbjpmdW5jdGlvbih0KXt2YXIgZT10aGlzLl9tYXAuX2xhdExuZ1RvTmV3TGF5ZXJQb2ludCh0aGlzLl9sYXRsbmcsdC56b29tLHQuY2VudGVyKTtvLkRvbVV0aWwuc2V0UG9zaXRpb24odGhpcy5fY29udGFpbmVyLGUpfSxfYWRqdXN0UGFuOmZ1bmN0aW9uKCl7aWYodGhpcy5vcHRpb25zLmF1dG9QYW4pe3ZhciB0PXRoaXMuX21hcCxlPXRoaXMuX2NvbnRhaW5lci5vZmZzZXRIZWlnaHQsaT10aGlzLl9jb250YWluZXJXaWR0aCxuPW5ldyBvLlBvaW50KHRoaXMuX2NvbnRhaW5lckxlZnQsLWUtdGhpcy5fY29udGFpbmVyQm90dG9tKTt0aGlzLl9hbmltYXRlZCYmbi5fYWRkKG8uRG9tVXRpbC5nZXRQb3NpdGlvbih0aGlzLl9jb250YWluZXIpKTt2YXIgcz10LmxheWVyUG9pbnRUb0NvbnRhaW5lclBvaW50KG4pLGE9by5wb2ludCh0aGlzLm9wdGlvbnMuYXV0b1BhblBhZGRpbmcpLHI9by5wb2ludCh0aGlzLm9wdGlvbnMuYXV0b1BhblBhZGRpbmdUb3BMZWZ0fHxhKSxoPW8ucG9pbnQodGhpcy5vcHRpb25zLmF1dG9QYW5QYWRkaW5nQm90dG9tUmlnaHR8fGEpLGw9dC5nZXRTaXplKCksdT0wLGM9MDtzLngraStoLng+bC54JiYodT1zLngraS1sLngraC54KSxzLngtdS1yLng8MCYmKHU9cy54LXIueCkscy55K2UraC55PmwueSYmKGM9cy55K2UtbC55K2gueSkscy55LWMtci55PDAmJihjPXMueS1yLnkpLCh1fHxjKSYmdC5maXJlKCJhdXRvcGFuc3RhcnQiKS5wYW5CeShbdSxjXSl9fSxfb25DbG9zZUJ1dHRvbkNsaWNrOmZ1bmN0aW9uKHQpe3RoaXMuX2Nsb3NlKCksby5Eb21FdmVudC5zdG9wKHQpfX0pLG8ucG9wdXA9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3IG8uUG9wdXAodCxlKX0sby5NYXAuaW5jbHVkZSh7b3BlblBvcHVwOmZ1bmN0aW9uKHQsZSxpKXtpZih0aGlzLmNsb3NlUG9wdXAoKSwhKHQgaW5zdGFuY2VvZiBvLlBvcHVwKSl7dmFyIG49dDt0PW5ldyBvLlBvcHVwKGkpLnNldExhdExuZyhlKS5zZXRDb250ZW50KG4pfXJldHVybiB0Ll9pc09wZW49ITAsdGhpcy5fcG9wdXA9dCx0aGlzLmFkZExheWVyKHQpfSxjbG9zZVBvcHVwOmZ1bmN0aW9uKHQpe3JldHVybiB0JiZ0IT09dGhpcy5fcG9wdXB8fCh0PXRoaXMuX3BvcHVwLHRoaXMuX3BvcHVwPW51bGwpLHQmJih0aGlzLnJlbW92ZUxheWVyKHQpLHQuX2lzT3Blbj0hMSksdGhpc319KSxvLk1hcmtlci5pbmNsdWRlKHtvcGVuUG9wdXA6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcG9wdXAmJnRoaXMuX21hcCYmIXRoaXMuX21hcC5oYXNMYXllcih0aGlzLl9wb3B1cCkmJih0aGlzLl9wb3B1cC5zZXRMYXRMbmcodGhpcy5fbGF0bG5nKSx0aGlzLl9tYXAub3BlblBvcHVwKHRoaXMuX3BvcHVwKSksdGhpc30sY2xvc2VQb3B1cDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9wb3B1cCYmdGhpcy5fcG9wdXAuX2Nsb3NlKCksdGhpc30sdG9nZ2xlUG9wdXA6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcG9wdXAmJih0aGlzLl9wb3B1cC5faXNPcGVuP3RoaXMuY2xvc2VQb3B1cCgpOnRoaXMub3BlblBvcHVwKCkpLHRoaXN9LGJpbmRQb3B1cDpmdW5jdGlvbih0LGUpe3ZhciBpPW8ucG9pbnQodGhpcy5vcHRpb25zLmljb24ub3B0aW9ucy5wb3B1cEFuY2hvcnx8WzAsMF0pO3JldHVybiBpPWkuYWRkKG8uUG9wdXAucHJvdG90eXBlLm9wdGlvbnMub2Zmc2V0KSxlJiZlLm9mZnNldCYmKGk9aS5hZGQoZS5vZmZzZXQpKSxlPW8uZXh0ZW5kKHtvZmZzZXQ6aX0sZSksdGhpcy5fcG9wdXBIYW5kbGVyc0FkZGVkfHwodGhpcy5vbigiY2xpY2siLHRoaXMudG9nZ2xlUG9wdXAsdGhpcykub24oInJlbW92ZSIsdGhpcy5jbG9zZVBvcHVwLHRoaXMpLm9uKCJtb3ZlIix0aGlzLl9tb3ZlUG9wdXAsdGhpcyksdGhpcy5fcG9wdXBIYW5kbGVyc0FkZGVkPSEwKSx0IGluc3RhbmNlb2Ygby5Qb3B1cD8oby5zZXRPcHRpb25zKHQsZSksdGhpcy5fcG9wdXA9dCk6dGhpcy5fcG9wdXA9bmV3IG8uUG9wdXAoZSx0aGlzKS5zZXRDb250ZW50KHQpLHRoaXN9LHNldFBvcHVwQ29udGVudDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcG9wdXAmJnRoaXMuX3BvcHVwLnNldENvbnRlbnQodCksdGhpc30sdW5iaW5kUG9wdXA6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcG9wdXAmJih0aGlzLl9wb3B1cD1udWxsLHRoaXMub2ZmKCJjbGljayIsdGhpcy50b2dnbGVQb3B1cCx0aGlzKS5vZmYoInJlbW92ZSIsdGhpcy5jbG9zZVBvcHVwLHRoaXMpLm9mZigibW92ZSIsdGhpcy5fbW92ZVBvcHVwLHRoaXMpLHRoaXMuX3BvcHVwSGFuZGxlcnNBZGRlZD0hMSksdGhpc30sZ2V0UG9wdXA6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcG9wdXB9LF9tb3ZlUG9wdXA6ZnVuY3Rpb24odCl7dGhpcy5fcG9wdXAuc2V0TGF0TG5nKHQubGF0bG5nKX19KSxvLkxheWVyR3JvdXA9by5DbGFzcy5leHRlbmQoe2luaXRpYWxpemU6ZnVuY3Rpb24odCl7dGhpcy5fbGF5ZXJzPXt9O3ZhciBlLGk7aWYodClmb3IoZT0wLGk9dC5sZW5ndGg7aT5lO2UrKyl0aGlzLmFkZExheWVyKHRbZV0pfSxhZGRMYXllcjpmdW5jdGlvbih0KXt2YXIgZT10aGlzLmdldExheWVySWQodCk7cmV0dXJuIHRoaXMuX2xheWVyc1tlXT10LHRoaXMuX21hcCYmdGhpcy5fbWFwLmFkZExheWVyKHQpLHRoaXN9LHJlbW92ZUxheWVyOmZ1bmN0aW9uKHQpe3ZhciBlPXQgaW4gdGhpcy5fbGF5ZXJzP3Q6dGhpcy5nZXRMYXllcklkKHQpO3JldHVybiB0aGlzLl9tYXAmJnRoaXMuX2xheWVyc1tlXSYmdGhpcy5fbWFwLnJlbW92ZUxheWVyKHRoaXMuX2xheWVyc1tlXSksZGVsZXRlIHRoaXMuX2xheWVyc1tlXSx0aGlzfSxoYXNMYXllcjpmdW5jdGlvbih0KXtyZXR1cm4gdD90IGluIHRoaXMuX2xheWVyc3x8dGhpcy5nZXRMYXllcklkKHQpaW4gdGhpcy5fbGF5ZXJzOiExfSxjbGVhckxheWVyczpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVhY2hMYXllcih0aGlzLnJlbW92ZUxheWVyLHRoaXMpLHRoaXN9LGludm9rZTpmdW5jdGlvbih0KXt2YXIgZSxpLG49QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpO2ZvcihlIGluIHRoaXMuX2xheWVycylpPXRoaXMuX2xheWVyc1tlXSxpW3RdJiZpW3RdLmFwcGx5KGksbik7cmV0dXJuIHRoaXN9LG9uQWRkOmZ1bmN0aW9uKHQpe3RoaXMuX21hcD10LHRoaXMuZWFjaExheWVyKHQuYWRkTGF5ZXIsdCl9LG9uUmVtb3ZlOmZ1bmN0aW9uKHQpe3RoaXMuZWFjaExheWVyKHQucmVtb3ZlTGF5ZXIsdCksdGhpcy5fbWFwPW51bGx9LGFkZFRvOmZ1bmN0aW9uKHQpe3JldHVybiB0LmFkZExheWVyKHRoaXMpLHRoaXN9LGVhY2hMYXllcjpmdW5jdGlvbih0LGUpe2Zvcih2YXIgaSBpbiB0aGlzLl9sYXllcnMpdC5jYWxsKGUsdGhpcy5fbGF5ZXJzW2ldKTtyZXR1cm4gdGhpc30sZ2V0TGF5ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2xheWVyc1t0XX0sZ2V0TGF5ZXJzOmZ1bmN0aW9uKCl7dmFyIHQ9W107Zm9yKHZhciBlIGluIHRoaXMuX2xheWVycyl0LnB1c2godGhpcy5fbGF5ZXJzW2VdKTtyZXR1cm4gdH0sc2V0WkluZGV4OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmludm9rZSgic2V0WkluZGV4Iix0KX0sZ2V0TGF5ZXJJZDpmdW5jdGlvbih0KXtyZXR1cm4gby5zdGFtcCh0KX19KSxvLmxheWVyR3JvdXA9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBvLkxheWVyR3JvdXAodCl9LG8uRmVhdHVyZUdyb3VwPW8uTGF5ZXJHcm91cC5leHRlbmQoe2luY2x1ZGVzOm8uTWl4aW4uRXZlbnRzLHN0YXRpY3M6e0VWRU5UUzoiY2xpY2sgZGJsY2xpY2sgbW91c2VvdmVyIG1vdXNlb3V0IG1vdXNlbW92ZSBjb250ZXh0bWVudSBwb3B1cG9wZW4gcG9wdXBjbG9zZSJ9LGFkZExheWVyOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmhhc0xheWVyKHQpP3RoaXM6KCJvbiJpbiB0JiZ0Lm9uKG8uRmVhdHVyZUdyb3VwLkVWRU5UUyx0aGlzLl9wcm9wYWdhdGVFdmVudCx0aGlzKSxvLkxheWVyR3JvdXAucHJvdG90eXBlLmFkZExheWVyLmNhbGwodGhpcyx0KSx0aGlzLl9wb3B1cENvbnRlbnQmJnQuYmluZFBvcHVwJiZ0LmJpbmRQb3B1cCh0aGlzLl9wb3B1cENvbnRlbnQsdGhpcy5fcG9wdXBPcHRpb25zKSx0aGlzLmZpcmUoImxheWVyYWRkIix7bGF5ZXI6dH0pKX0scmVtb3ZlTGF5ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuaGFzTGF5ZXIodCk/KHQgaW4gdGhpcy5fbGF5ZXJzJiYodD10aGlzLl9sYXllcnNbdF0pLHQub2ZmKG8uRmVhdHVyZUdyb3VwLkVWRU5UUyx0aGlzLl9wcm9wYWdhdGVFdmVudCx0aGlzKSxvLkxheWVyR3JvdXAucHJvdG90eXBlLnJlbW92ZUxheWVyLmNhbGwodGhpcyx0KSx0aGlzLl9wb3B1cENvbnRlbnQmJnRoaXMuaW52b2tlKCJ1bmJpbmRQb3B1cCIpLHRoaXMuZmlyZSgibGF5ZXJyZW1vdmUiLHtsYXllcjp0fSkpOnRoaXN9LGJpbmRQb3B1cDpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLl9wb3B1cENvbnRlbnQ9dCx0aGlzLl9wb3B1cE9wdGlvbnM9ZSx0aGlzLmludm9rZSgiYmluZFBvcHVwIix0LGUpfSxvcGVuUG9wdXA6ZnVuY3Rpb24odCl7Zm9yKHZhciBlIGluIHRoaXMuX2xheWVycyl7dGhpcy5fbGF5ZXJzW2VdLm9wZW5Qb3B1cCh0KTticmVha31yZXR1cm4gdGhpc30sc2V0U3R5bGU6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuaW52b2tlKCJzZXRTdHlsZSIsdCl9LGJyaW5nVG9Gcm9udDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmludm9rZSgiYnJpbmdUb0Zyb250Iil9LGJyaW5nVG9CYWNrOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW52b2tlKCJicmluZ1RvQmFjayIpfSxnZXRCb3VuZHM6ZnVuY3Rpb24oKXt2YXIgdD1uZXcgby5MYXRMbmdCb3VuZHM7cmV0dXJuIHRoaXMuZWFjaExheWVyKGZ1bmN0aW9uKGUpe3QuZXh0ZW5kKGUgaW5zdGFuY2VvZiBvLk1hcmtlcj9lLmdldExhdExuZygpOmUuZ2V0Qm91bmRzKCkpfSksdH0sX3Byb3BhZ2F0ZUV2ZW50OmZ1bmN0aW9uKHQpe3Q9by5leHRlbmQoe2xheWVyOnQudGFyZ2V0LHRhcmdldDp0aGlzfSx0KSx0aGlzLmZpcmUodC50eXBlLHQpfX0pLG8uZmVhdHVyZUdyb3VwPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgby5GZWF0dXJlR3JvdXAodCl9LG8uUGF0aD1vLkNsYXNzLmV4dGVuZCh7aW5jbHVkZXM6W28uTWl4aW4uRXZlbnRzXSxzdGF0aWNzOntDTElQX1BBRERJTkc6ZnVuY3Rpb24oKXt2YXIgZT1vLkJyb3dzZXIubW9iaWxlPzEyODA6MmUzLGk9KGUvTWF0aC5tYXgodC5vdXRlcldpZHRoLHQub3V0ZXJIZWlnaHQpLTEpLzI7cmV0dXJuIE1hdGgubWF4KDAsTWF0aC5taW4oLjUsaSkpfSgpfSxvcHRpb25zOntzdHJva2U6ITAsY29sb3I6IiMwMDMzZmYiLGRhc2hBcnJheTpudWxsLGxpbmVDYXA6bnVsbCxsaW5lSm9pbjpudWxsLHdlaWdodDo1LG9wYWNpdHk6LjUsZmlsbDohMSxmaWxsQ29sb3I6bnVsbCxmaWxsT3BhY2l0eTouMixjbGlja2FibGU6ITB9LGluaXRpYWxpemU6ZnVuY3Rpb24odCl7by5zZXRPcHRpb25zKHRoaXMsdCl9LG9uQWRkOmZ1bmN0aW9uKHQpe3RoaXMuX21hcD10LHRoaXMuX2NvbnRhaW5lcnx8KHRoaXMuX2luaXRFbGVtZW50cygpLHRoaXMuX2luaXRFdmVudHMoKSksdGhpcy5wcm9qZWN0TGF0bG5ncygpLHRoaXMuX3VwZGF0ZVBhdGgoKSx0aGlzLl9jb250YWluZXImJnRoaXMuX21hcC5fcGF0aFJvb3QuYXBwZW5kQ2hpbGQodGhpcy5fY29udGFpbmVyKSx0aGlzLmZpcmUoImFkZCIpLHQub24oe3ZpZXdyZXNldDp0aGlzLnByb2plY3RMYXRsbmdzLG1vdmVlbmQ6dGhpcy5fdXBkYXRlUGF0aH0sdGhpcyl9LGFkZFRvOmZ1bmN0aW9uKHQpe3JldHVybiB0LmFkZExheWVyKHRoaXMpLHRoaXN9LG9uUmVtb3ZlOmZ1bmN0aW9uKHQpe3QuX3BhdGhSb290LnJlbW92ZUNoaWxkKHRoaXMuX2NvbnRhaW5lciksdGhpcy5maXJlKCJyZW1vdmUiKSx0aGlzLl9tYXA9bnVsbCxvLkJyb3dzZXIudm1sJiYodGhpcy5fY29udGFpbmVyPW51bGwsdGhpcy5fc3Ryb2tlPW51bGwsdGhpcy5fZmlsbD1udWxsKSx0Lm9mZih7dmlld3Jlc2V0OnRoaXMucHJvamVjdExhdGxuZ3MsbW92ZWVuZDp0aGlzLl91cGRhdGVQYXRofSx0aGlzKX0scHJvamVjdExhdGxuZ3M6ZnVuY3Rpb24oKXt9LHNldFN0eWxlOmZ1bmN0aW9uKHQpe3JldHVybiBvLnNldE9wdGlvbnModGhpcyx0KSx0aGlzLl9jb250YWluZXImJnRoaXMuX3VwZGF0ZVN0eWxlKCksdGhpc30scmVkcmF3OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX21hcCYmKHRoaXMucHJvamVjdExhdGxuZ3MoKSx0aGlzLl91cGRhdGVQYXRoKCkpLHRoaXN9fSksby5NYXAuaW5jbHVkZSh7X3VwZGF0ZVBhdGhWaWV3cG9ydDpmdW5jdGlvbigpe3ZhciB0PW8uUGF0aC5DTElQX1BBRERJTkcsZT10aGlzLmdldFNpemUoKSxpPW8uRG9tVXRpbC5nZXRQb3NpdGlvbih0aGlzLl9tYXBQYW5lKSxuPWkubXVsdGlwbHlCeSgtMSkuX3N1YnRyYWN0KGUubXVsdGlwbHlCeSh0KS5fcm91bmQoKSkscz1uLmFkZChlLm11bHRpcGx5QnkoMSsyKnQpLl9yb3VuZCgpKTt0aGlzLl9wYXRoVmlld3BvcnQ9bmV3IG8uQm91bmRzKG4scyl9fSksby5QYXRoLlNWR19OUz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLG8uQnJvd3Nlci5zdmc9ISghZS5jcmVhdGVFbGVtZW50TlN8fCFlLmNyZWF0ZUVsZW1lbnROUyhvLlBhdGguU1ZHX05TLCJzdmciKS5jcmVhdGVTVkdSZWN0KSxvLlBhdGg9by5QYXRoLmV4dGVuZCh7c3RhdGljczp7U1ZHOm8uQnJvd3Nlci5zdmd9LGJyaW5nVG9Gcm9udDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX21hcC5fcGF0aFJvb3QsZT10aGlzLl9jb250YWluZXI7cmV0dXJuIGUmJnQubGFzdENoaWxkIT09ZSYmdC5hcHBlbmRDaGlsZChlKSx0aGlzfSxicmluZ1RvQmFjazpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX21hcC5fcGF0aFJvb3QsZT10aGlzLl9jb250YWluZXIsaT10LmZpcnN0Q2hpbGQ7cmV0dXJuIGUmJmkhPT1lJiZ0Lmluc2VydEJlZm9yZShlLGkpLHRoaXN9LGdldFBhdGhTdHJpbmc6ZnVuY3Rpb24oKXt9LF9jcmVhdGVFbGVtZW50OmZ1bmN0aW9uKHQpe3JldHVybiBlLmNyZWF0ZUVsZW1lbnROUyhvLlBhdGguU1ZHX05TLHQpfSxfaW5pdEVsZW1lbnRzOmZ1bmN0aW9uKCl7dGhpcy5fbWFwLl9pbml0UGF0aFJvb3QoKSx0aGlzLl9pbml0UGF0aCgpLHRoaXMuX2luaXRTdHlsZSgpfSxfaW5pdFBhdGg6ZnVuY3Rpb24oKXt0aGlzLl9jb250YWluZXI9dGhpcy5fY3JlYXRlRWxlbWVudCgiZyIpLHRoaXMuX3BhdGg9dGhpcy5fY3JlYXRlRWxlbWVudCgicGF0aCIpLHRoaXMub3B0aW9ucy5jbGFzc05hbWUmJm8uRG9tVXRpbC5hZGRDbGFzcyh0aGlzLl9wYXRoLHRoaXMub3B0aW9ucy5jbGFzc05hbWUpLHRoaXMuX2NvbnRhaW5lci5hcHBlbmRDaGlsZCh0aGlzLl9wYXRoKX0sX2luaXRTdHlsZTpmdW5jdGlvbigpe3RoaXMub3B0aW9ucy5zdHJva2UmJih0aGlzLl9wYXRoLnNldEF0dHJpYnV0ZSgic3Ryb2tlLWxpbmVqb2luIiwicm91bmQiKSx0aGlzLl9wYXRoLnNldEF0dHJpYnV0ZSgic3Ryb2tlLWxpbmVjYXAiLCJyb3VuZCIpKSx0aGlzLm9wdGlvbnMuZmlsbCYmdGhpcy5fcGF0aC5zZXRBdHRyaWJ1dGUoImZpbGwtcnVsZSIsImV2ZW5vZGQiKSx0aGlzLm9wdGlvbnMucG9pbnRlckV2ZW50cyYmdGhpcy5fcGF0aC5zZXRBdHRyaWJ1dGUoInBvaW50ZXItZXZlbnRzIix0aGlzLm9wdGlvbnMucG9pbnRlckV2ZW50cyksdGhpcy5vcHRpb25zLmNsaWNrYWJsZXx8dGhpcy5vcHRpb25zLnBvaW50ZXJFdmVudHN8fHRoaXMuX3BhdGguc2V0QXR0cmlidXRlKCJwb2ludGVyLWV2ZW50cyIsIm5vbmUiKSx0aGlzLl91cGRhdGVTdHlsZSgpfSxfdXBkYXRlU3R5bGU6ZnVuY3Rpb24oKXt0aGlzLm9wdGlvbnMuc3Ryb2tlPyh0aGlzLl9wYXRoLnNldEF0dHJpYnV0ZSgic3Ryb2tlIix0aGlzLm9wdGlvbnMuY29sb3IpLHRoaXMuX3BhdGguc2V0QXR0cmlidXRlKCJzdHJva2Utb3BhY2l0eSIsdGhpcy5vcHRpb25zLm9wYWNpdHkpLHRoaXMuX3BhdGguc2V0QXR0cmlidXRlKCJzdHJva2Utd2lkdGgiLHRoaXMub3B0aW9ucy53ZWlnaHQpLHRoaXMub3B0aW9ucy5kYXNoQXJyYXk/dGhpcy5fcGF0aC5zZXRBdHRyaWJ1dGUoInN0cm9rZS1kYXNoYXJyYXkiLHRoaXMub3B0aW9ucy5kYXNoQXJyYXkpOnRoaXMuX3BhdGgucmVtb3ZlQXR0cmlidXRlKCJzdHJva2UtZGFzaGFycmF5IiksdGhpcy5vcHRpb25zLmxpbmVDYXAmJnRoaXMuX3BhdGguc2V0QXR0cmlidXRlKCJzdHJva2UtbGluZWNhcCIsdGhpcy5vcHRpb25zLmxpbmVDYXApLHRoaXMub3B0aW9ucy5saW5lSm9pbiYmdGhpcy5fcGF0aC5zZXRBdHRyaWJ1dGUoInN0cm9rZS1saW5lam9pbiIsdGhpcy5vcHRpb25zLmxpbmVKb2luKSk6dGhpcy5fcGF0aC5zZXRBdHRyaWJ1dGUoInN0cm9rZSIsIm5vbmUiKSx0aGlzLm9wdGlvbnMuZmlsbD8odGhpcy5fcGF0aC5zZXRBdHRyaWJ1dGUoImZpbGwiLHRoaXMub3B0aW9ucy5maWxsQ29sb3J8fHRoaXMub3B0aW9ucy5jb2xvciksdGhpcy5fcGF0aC5zZXRBdHRyaWJ1dGUoImZpbGwtb3BhY2l0eSIsdGhpcy5vcHRpb25zLmZpbGxPcGFjaXR5KSk6dGhpcy5fcGF0aC5zZXRBdHRyaWJ1dGUoImZpbGwiLCJub25lIil9LF91cGRhdGVQYXRoOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5nZXRQYXRoU3RyaW5nKCk7dHx8KHQ9Ik0wIDAiKSx0aGlzLl9wYXRoLnNldEF0dHJpYnV0ZSgiZCIsdCl9LF9pbml0RXZlbnRzOmZ1bmN0aW9uKCl7aWYodGhpcy5vcHRpb25zLmNsaWNrYWJsZSl7KG8uQnJvd3Nlci5zdmd8fCFvLkJyb3dzZXIudm1sKSYmby5Eb21VdGlsLmFkZENsYXNzKHRoaXMuX3BhdGgsImxlYWZsZXQtY2xpY2thYmxlIiksby5Eb21FdmVudC5vbih0aGlzLl9jb250YWluZXIsImNsaWNrIix0aGlzLl9vbk1vdXNlQ2xpY2ssdGhpcyk7Zm9yKHZhciB0PVsiZGJsY2xpY2siLCJtb3VzZWRvd24iLCJtb3VzZW92ZXIiLCJtb3VzZW91dCIsIm1vdXNlbW92ZSIsImNvbnRleHRtZW51Il0sZT0wO2U8dC5sZW5ndGg7ZSsrKW8uRG9tRXZlbnQub24odGhpcy5fY29udGFpbmVyLHRbZV0sdGhpcy5fZmlyZU1vdXNlRXZlbnQsdGhpcyl9fSxfb25Nb3VzZUNsaWNrOmZ1bmN0aW9uKHQpe3RoaXMuX21hcC5kcmFnZ2luZyYmdGhpcy5fbWFwLmRyYWdnaW5nLm1vdmVkKCl8fHRoaXMuX2ZpcmVNb3VzZUV2ZW50KHQpfSxfZmlyZU1vdXNlRXZlbnQ6ZnVuY3Rpb24odCl7aWYodGhpcy5oYXNFdmVudExpc3RlbmVycyh0LnR5cGUpKXt2YXIgZT10aGlzLl9tYXAsaT1lLm1vdXNlRXZlbnRUb0NvbnRhaW5lclBvaW50KHQpLG49ZS5jb250YWluZXJQb2ludFRvTGF5ZXJQb2ludChpKSxzPWUubGF5ZXJQb2ludFRvTGF0TG5nKG4pO3RoaXMuZmlyZSh0LnR5cGUse2xhdGxuZzpzLGxheWVyUG9pbnQ6bixjb250YWluZXJQb2ludDppLG9yaWdpbmFsRXZlbnQ6dH0pLCJjb250ZXh0bWVudSI9PT10LnR5cGUmJm8uRG9tRXZlbnQucHJldmVudERlZmF1bHQodCksIm1vdXNlbW92ZSIhPT10LnR5cGUmJm8uRG9tRXZlbnQuc3RvcFByb3BhZ2F0aW9uKHQpfX19KSxvLk1hcC5pbmNsdWRlKHtfaW5pdFBhdGhSb290OmZ1bmN0aW9uKCl7dGhpcy5fcGF0aFJvb3R8fCh0aGlzLl9wYXRoUm9vdD1vLlBhdGgucHJvdG90eXBlLl9jcmVhdGVFbGVtZW50KCJzdmciKSx0aGlzLl9wYW5lcy5vdmVybGF5UGFuZS5hcHBlbmRDaGlsZCh0aGlzLl9wYXRoUm9vdCksdGhpcy5vcHRpb25zLnpvb21BbmltYXRpb24mJm8uQnJvd3Nlci5hbnkzZD8oby5Eb21VdGlsLmFkZENsYXNzKHRoaXMuX3BhdGhSb290LCJsZWFmbGV0LXpvb20tYW5pbWF0ZWQiKSx0aGlzLm9uKHt6b29tYW5pbTp0aGlzLl9hbmltYXRlUGF0aFpvb20sem9vbWVuZDp0aGlzLl9lbmRQYXRoWm9vbX0pKTpvLkRvbVV0aWwuYWRkQ2xhc3ModGhpcy5fcGF0aFJvb3QsImxlYWZsZXQtem9vbS1oaWRlIiksdGhpcy5vbigibW92ZWVuZCIsdGhpcy5fdXBkYXRlU3ZnVmlld3BvcnQpLHRoaXMuX3VwZGF0ZVN2Z1ZpZXdwb3J0KCkpCn0sX2FuaW1hdGVQYXRoWm9vbTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLmdldFpvb21TY2FsZSh0Lnpvb20pLGk9dGhpcy5fZ2V0Q2VudGVyT2Zmc2V0KHQuY2VudGVyKS5fbXVsdGlwbHlCeSgtZSkuX2FkZCh0aGlzLl9wYXRoVmlld3BvcnQubWluKTt0aGlzLl9wYXRoUm9vdC5zdHlsZVtvLkRvbVV0aWwuVFJBTlNGT1JNXT1vLkRvbVV0aWwuZ2V0VHJhbnNsYXRlU3RyaW5nKGkpKyIgc2NhbGUoIitlKyIpICIsdGhpcy5fcGF0aFpvb21pbmc9ITB9LF9lbmRQYXRoWm9vbTpmdW5jdGlvbigpe3RoaXMuX3BhdGhab29taW5nPSExfSxfdXBkYXRlU3ZnVmlld3BvcnQ6ZnVuY3Rpb24oKXtpZighdGhpcy5fcGF0aFpvb21pbmcpe3RoaXMuX3VwZGF0ZVBhdGhWaWV3cG9ydCgpO3ZhciB0PXRoaXMuX3BhdGhWaWV3cG9ydCxlPXQubWluLGk9dC5tYXgsbj1pLngtZS54LHM9aS55LWUueSxhPXRoaXMuX3BhdGhSb290LHI9dGhpcy5fcGFuZXMub3ZlcmxheVBhbmU7by5Ccm93c2VyLm1vYmlsZVdlYmtpdCYmci5yZW1vdmVDaGlsZChhKSxvLkRvbVV0aWwuc2V0UG9zaXRpb24oYSxlKSxhLnNldEF0dHJpYnV0ZSgid2lkdGgiLG4pLGEuc2V0QXR0cmlidXRlKCJoZWlnaHQiLHMpLGEuc2V0QXR0cmlidXRlKCJ2aWV3Qm94IixbZS54LGUueSxuLHNdLmpvaW4oIiAiKSksby5Ccm93c2VyLm1vYmlsZVdlYmtpdCYmci5hcHBlbmRDaGlsZChhKX19fSksby5QYXRoLmluY2x1ZGUoe2JpbmRQb3B1cDpmdW5jdGlvbih0LGUpe3JldHVybiB0IGluc3RhbmNlb2Ygby5Qb3B1cD90aGlzLl9wb3B1cD10OigoIXRoaXMuX3BvcHVwfHxlKSYmKHRoaXMuX3BvcHVwPW5ldyBvLlBvcHVwKGUsdGhpcykpLHRoaXMuX3BvcHVwLnNldENvbnRlbnQodCkpLHRoaXMuX3BvcHVwSGFuZGxlcnNBZGRlZHx8KHRoaXMub24oImNsaWNrIix0aGlzLl9vcGVuUG9wdXAsdGhpcykub24oInJlbW92ZSIsdGhpcy5jbG9zZVBvcHVwLHRoaXMpLHRoaXMuX3BvcHVwSGFuZGxlcnNBZGRlZD0hMCksdGhpc30sdW5iaW5kUG9wdXA6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcG9wdXAmJih0aGlzLl9wb3B1cD1udWxsLHRoaXMub2ZmKCJjbGljayIsdGhpcy5fb3BlblBvcHVwKS5vZmYoInJlbW92ZSIsdGhpcy5jbG9zZVBvcHVwKSx0aGlzLl9wb3B1cEhhbmRsZXJzQWRkZWQ9ITEpLHRoaXN9LG9wZW5Qb3B1cDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcG9wdXAmJih0PXR8fHRoaXMuX2xhdGxuZ3x8dGhpcy5fbGF0bG5nc1tNYXRoLmZsb29yKHRoaXMuX2xhdGxuZ3MubGVuZ3RoLzIpXSx0aGlzLl9vcGVuUG9wdXAoe2xhdGxuZzp0fSkpLHRoaXN9LGNsb3NlUG9wdXA6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcG9wdXAmJnRoaXMuX3BvcHVwLl9jbG9zZSgpLHRoaXN9LF9vcGVuUG9wdXA6ZnVuY3Rpb24odCl7dGhpcy5fcG9wdXAuc2V0TGF0TG5nKHQubGF0bG5nKSx0aGlzLl9tYXAub3BlblBvcHVwKHRoaXMuX3BvcHVwKX19KSxvLkJyb3dzZXIudm1sPSFvLkJyb3dzZXIuc3ZnJiZmdW5jdGlvbigpe3RyeXt2YXIgdD1lLmNyZWF0ZUVsZW1lbnQoImRpdiIpO3QuaW5uZXJIVE1MPSc8djpzaGFwZSBhZGo9IjEiLz4nO3ZhciBpPXQuZmlyc3RDaGlsZDtyZXR1cm4gaS5zdHlsZS5iZWhhdmlvcj0idXJsKCNkZWZhdWx0I1ZNTCkiLGkmJiJvYmplY3QiPT10eXBlb2YgaS5hZGp9Y2F0Y2gobil7cmV0dXJuITF9fSgpLG8uUGF0aD1vLkJyb3dzZXIuc3ZnfHwhby5Ccm93c2VyLnZtbD9vLlBhdGg6by5QYXRoLmV4dGVuZCh7c3RhdGljczp7Vk1MOiEwLENMSVBfUEFERElORzouMDJ9LF9jcmVhdGVFbGVtZW50OmZ1bmN0aW9uKCl7dHJ5e3JldHVybiBlLm5hbWVzcGFjZXMuYWRkKCJsdm1sIiwidXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTp2bWwiKSxmdW5jdGlvbih0KXtyZXR1cm4gZS5jcmVhdGVFbGVtZW50KCI8bHZtbDoiK3QrJyBjbGFzcz0ibHZtbCI+Jyl9fWNhdGNoKHQpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gZS5jcmVhdGVFbGVtZW50KCI8Iit0KycgeG1sbnM9InVybjpzY2hlbWFzLW1pY3Jvc29mdC5jb206dm1sIiBjbGFzcz0ibHZtbCI+Jyl9fX0oKSxfaW5pdFBhdGg6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9jb250YWluZXI9dGhpcy5fY3JlYXRlRWxlbWVudCgic2hhcGUiKTtvLkRvbVV0aWwuYWRkQ2xhc3ModCwibGVhZmxldC12bWwtc2hhcGUiKyh0aGlzLm9wdGlvbnMuY2xhc3NOYW1lPyIgIit0aGlzLm9wdGlvbnMuY2xhc3NOYW1lOiIiKSksdGhpcy5vcHRpb25zLmNsaWNrYWJsZSYmby5Eb21VdGlsLmFkZENsYXNzKHQsImxlYWZsZXQtY2xpY2thYmxlIiksdC5jb29yZHNpemU9IjEgMSIsdGhpcy5fcGF0aD10aGlzLl9jcmVhdGVFbGVtZW50KCJwYXRoIiksdC5hcHBlbmRDaGlsZCh0aGlzLl9wYXRoKSx0aGlzLl9tYXAuX3BhdGhSb290LmFwcGVuZENoaWxkKHQpfSxfaW5pdFN0eWxlOmZ1bmN0aW9uKCl7dGhpcy5fdXBkYXRlU3R5bGUoKX0sX3VwZGF0ZVN0eWxlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fc3Ryb2tlLGU9dGhpcy5fZmlsbCxpPXRoaXMub3B0aW9ucyxuPXRoaXMuX2NvbnRhaW5lcjtuLnN0cm9rZWQ9aS5zdHJva2Usbi5maWxsZWQ9aS5maWxsLGkuc3Ryb2tlPyh0fHwodD10aGlzLl9zdHJva2U9dGhpcy5fY3JlYXRlRWxlbWVudCgic3Ryb2tlIiksdC5lbmRjYXA9InJvdW5kIixuLmFwcGVuZENoaWxkKHQpKSx0LndlaWdodD1pLndlaWdodCsicHgiLHQuY29sb3I9aS5jb2xvcix0Lm9wYWNpdHk9aS5vcGFjaXR5LHQuZGFzaFN0eWxlPWkuZGFzaEFycmF5P28uVXRpbC5pc0FycmF5KGkuZGFzaEFycmF5KT9pLmRhc2hBcnJheS5qb2luKCIgIik6aS5kYXNoQXJyYXkucmVwbGFjZSgvKCAqLCAqKS9nLCIgIik6IiIsaS5saW5lQ2FwJiYodC5lbmRjYXA9aS5saW5lQ2FwLnJlcGxhY2UoImJ1dHQiLCJmbGF0IikpLGkubGluZUpvaW4mJih0LmpvaW5zdHlsZT1pLmxpbmVKb2luKSk6dCYmKG4ucmVtb3ZlQ2hpbGQodCksdGhpcy5fc3Ryb2tlPW51bGwpLGkuZmlsbD8oZXx8KGU9dGhpcy5fZmlsbD10aGlzLl9jcmVhdGVFbGVtZW50KCJmaWxsIiksbi5hcHBlbmRDaGlsZChlKSksZS5jb2xvcj1pLmZpbGxDb2xvcnx8aS5jb2xvcixlLm9wYWNpdHk9aS5maWxsT3BhY2l0eSk6ZSYmKG4ucmVtb3ZlQ2hpbGQoZSksdGhpcy5fZmlsbD1udWxsKX0sX3VwZGF0ZVBhdGg6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9jb250YWluZXIuc3R5bGU7dC5kaXNwbGF5PSJub25lIix0aGlzLl9wYXRoLnY9dGhpcy5nZXRQYXRoU3RyaW5nKCkrIiAiLHQuZGlzcGxheT0iIn19KSxvLk1hcC5pbmNsdWRlKG8uQnJvd3Nlci5zdmd8fCFvLkJyb3dzZXIudm1sP3t9OntfaW5pdFBhdGhSb290OmZ1bmN0aW9uKCl7aWYoIXRoaXMuX3BhdGhSb290KXt2YXIgdD10aGlzLl9wYXRoUm9vdD1lLmNyZWF0ZUVsZW1lbnQoImRpdiIpO3QuY2xhc3NOYW1lPSJsZWFmbGV0LXZtbC1jb250YWluZXIiLHRoaXMuX3BhbmVzLm92ZXJsYXlQYW5lLmFwcGVuZENoaWxkKHQpLHRoaXMub24oIm1vdmVlbmQiLHRoaXMuX3VwZGF0ZVBhdGhWaWV3cG9ydCksdGhpcy5fdXBkYXRlUGF0aFZpZXdwb3J0KCl9fX0pLG8uQnJvd3Nlci5jYW52YXM9ZnVuY3Rpb24oKXtyZXR1cm4hIWUuY3JlYXRlRWxlbWVudCgiY2FudmFzIikuZ2V0Q29udGV4dH0oKSxvLlBhdGg9by5QYXRoLlNWRyYmIXQuTF9QUkVGRVJfQ0FOVkFTfHwhby5Ccm93c2VyLmNhbnZhcz9vLlBhdGg6by5QYXRoLmV4dGVuZCh7c3RhdGljczp7Q0FOVkFTOiEwLFNWRzohMX0scmVkcmF3OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX21hcCYmKHRoaXMucHJvamVjdExhdGxuZ3MoKSx0aGlzLl9yZXF1ZXN0VXBkYXRlKCkpLHRoaXN9LHNldFN0eWxlOmZ1bmN0aW9uKHQpe3JldHVybiBvLnNldE9wdGlvbnModGhpcyx0KSx0aGlzLl9tYXAmJih0aGlzLl91cGRhdGVTdHlsZSgpLHRoaXMuX3JlcXVlc3RVcGRhdGUoKSksdGhpc30sb25SZW1vdmU6ZnVuY3Rpb24odCl7dC5vZmYoInZpZXdyZXNldCIsdGhpcy5wcm9qZWN0TGF0bG5ncyx0aGlzKS5vZmYoIm1vdmVlbmQiLHRoaXMuX3VwZGF0ZVBhdGgsdGhpcyksdGhpcy5vcHRpb25zLmNsaWNrYWJsZSYmKHRoaXMuX21hcC5vZmYoImNsaWNrIix0aGlzLl9vbkNsaWNrLHRoaXMpLHRoaXMuX21hcC5vZmYoIm1vdXNlbW92ZSIsdGhpcy5fb25Nb3VzZU1vdmUsdGhpcykpLHRoaXMuX3JlcXVlc3RVcGRhdGUoKSx0aGlzLmZpcmUoInJlbW92ZSIpLHRoaXMuX21hcD1udWxsfSxfcmVxdWVzdFVwZGF0ZTpmdW5jdGlvbigpe3RoaXMuX21hcCYmIW8uUGF0aC5fdXBkYXRlUmVxdWVzdCYmKG8uUGF0aC5fdXBkYXRlUmVxdWVzdD1vLlV0aWwucmVxdWVzdEFuaW1GcmFtZSh0aGlzLl9maXJlTWFwTW92ZUVuZCx0aGlzLl9tYXApKX0sX2ZpcmVNYXBNb3ZlRW5kOmZ1bmN0aW9uKCl7by5QYXRoLl91cGRhdGVSZXF1ZXN0PW51bGwsdGhpcy5maXJlKCJtb3ZlZW5kIil9LF9pbml0RWxlbWVudHM6ZnVuY3Rpb24oKXt0aGlzLl9tYXAuX2luaXRQYXRoUm9vdCgpLHRoaXMuX2N0eD10aGlzLl9tYXAuX2NhbnZhc0N0eH0sX3VwZGF0ZVN0eWxlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5vcHRpb25zO3Quc3Ryb2tlJiYodGhpcy5fY3R4LmxpbmVXaWR0aD10LndlaWdodCx0aGlzLl9jdHguc3Ryb2tlU3R5bGU9dC5jb2xvciksdC5maWxsJiYodGhpcy5fY3R4LmZpbGxTdHlsZT10LmZpbGxDb2xvcnx8dC5jb2xvcil9LF9kcmF3UGF0aDpmdW5jdGlvbigpe3ZhciB0LGUsaSxuLHMsYTtmb3IodGhpcy5fY3R4LmJlZ2luUGF0aCgpLHQ9MCxpPXRoaXMuX3BhcnRzLmxlbmd0aDtpPnQ7dCsrKXtmb3IoZT0wLG49dGhpcy5fcGFydHNbdF0ubGVuZ3RoO24+ZTtlKyspcz10aGlzLl9wYXJ0c1t0XVtlXSxhPSgwPT09ZT8ibW92ZSI6ImxpbmUiKSsiVG8iLHRoaXMuX2N0eFthXShzLngscy55KTt0aGlzIGluc3RhbmNlb2Ygby5Qb2x5Z29uJiZ0aGlzLl9jdHguY2xvc2VQYXRoKCl9fSxfY2hlY2tJZkVtcHR5OmZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMuX3BhcnRzLmxlbmd0aH0sX3VwZGF0ZVBhdGg6ZnVuY3Rpb24oKXtpZighdGhpcy5fY2hlY2tJZkVtcHR5KCkpe3ZhciB0PXRoaXMuX2N0eCxlPXRoaXMub3B0aW9uczt0aGlzLl9kcmF3UGF0aCgpLHQuc2F2ZSgpLHRoaXMuX3VwZGF0ZVN0eWxlKCksZS5maWxsJiYodC5nbG9iYWxBbHBoYT1lLmZpbGxPcGFjaXR5LHQuZmlsbCgpKSxlLnN0cm9rZSYmKHQuZ2xvYmFsQWxwaGE9ZS5vcGFjaXR5LHQuc3Ryb2tlKCkpLHQucmVzdG9yZSgpfX0sX2luaXRFdmVudHM6ZnVuY3Rpb24oKXt0aGlzLm9wdGlvbnMuY2xpY2thYmxlJiYodGhpcy5fbWFwLm9uKCJtb3VzZW1vdmUiLHRoaXMuX29uTW91c2VNb3ZlLHRoaXMpLHRoaXMuX21hcC5vbigiY2xpY2siLHRoaXMuX29uQ2xpY2ssdGhpcykpfSxfb25DbGljazpmdW5jdGlvbih0KXt0aGlzLl9jb250YWluc1BvaW50KHQubGF5ZXJQb2ludCkmJnRoaXMuZmlyZSgiY2xpY2siLHQpfSxfb25Nb3VzZU1vdmU6ZnVuY3Rpb24odCl7dGhpcy5fbWFwJiYhdGhpcy5fbWFwLl9hbmltYXRpbmdab29tJiYodGhpcy5fY29udGFpbnNQb2ludCh0LmxheWVyUG9pbnQpPyh0aGlzLl9jdHguY2FudmFzLnN0eWxlLmN1cnNvcj0icG9pbnRlciIsdGhpcy5fbW91c2VJbnNpZGU9ITAsdGhpcy5maXJlKCJtb3VzZW92ZXIiLHQpKTp0aGlzLl9tb3VzZUluc2lkZSYmKHRoaXMuX2N0eC5jYW52YXMuc3R5bGUuY3Vyc29yPSIiLHRoaXMuX21vdXNlSW5zaWRlPSExLHRoaXMuZmlyZSgibW91c2VvdXQiLHQpKSl9fSksby5NYXAuaW5jbHVkZShvLlBhdGguU1ZHJiYhdC5MX1BSRUZFUl9DQU5WQVN8fCFvLkJyb3dzZXIuY2FudmFzP3t9OntfaW5pdFBhdGhSb290OmZ1bmN0aW9uKCl7dmFyIHQsaT10aGlzLl9wYXRoUm9vdDtpfHwoaT10aGlzLl9wYXRoUm9vdD1lLmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpLGkuc3R5bGUucG9zaXRpb249ImFic29sdXRlIix0PXRoaXMuX2NhbnZhc0N0eD1pLmdldENvbnRleHQoIjJkIiksdC5saW5lQ2FwPSJyb3VuZCIsdC5saW5lSm9pbj0icm91bmQiLHRoaXMuX3BhbmVzLm92ZXJsYXlQYW5lLmFwcGVuZENoaWxkKGkpLHRoaXMub3B0aW9ucy56b29tQW5pbWF0aW9uJiYodGhpcy5fcGF0aFJvb3QuY2xhc3NOYW1lPSJsZWFmbGV0LXpvb20tYW5pbWF0ZWQiLHRoaXMub24oInpvb21hbmltIix0aGlzLl9hbmltYXRlUGF0aFpvb20pLHRoaXMub24oInpvb21lbmQiLHRoaXMuX2VuZFBhdGhab29tKSksdGhpcy5vbigibW92ZWVuZCIsdGhpcy5fdXBkYXRlQ2FudmFzVmlld3BvcnQpLHRoaXMuX3VwZGF0ZUNhbnZhc1ZpZXdwb3J0KCkpfSxfdXBkYXRlQ2FudmFzVmlld3BvcnQ6ZnVuY3Rpb24oKXtpZighdGhpcy5fcGF0aFpvb21pbmcpe3RoaXMuX3VwZGF0ZVBhdGhWaWV3cG9ydCgpO3ZhciB0PXRoaXMuX3BhdGhWaWV3cG9ydCxlPXQubWluLGk9dC5tYXguc3VidHJhY3QoZSksbj10aGlzLl9wYXRoUm9vdDtvLkRvbVV0aWwuc2V0UG9zaXRpb24obixlKSxuLndpZHRoPWkueCxuLmhlaWdodD1pLnksbi5nZXRDb250ZXh0KCIyZCIpLnRyYW5zbGF0ZSgtZS54LC1lLnkpfX19KSxvLkxpbmVVdGlsPXtzaW1wbGlmeTpmdW5jdGlvbih0LGUpe2lmKCFlfHwhdC5sZW5ndGgpcmV0dXJuIHQuc2xpY2UoKTt2YXIgaT1lKmU7cmV0dXJuIHQ9dGhpcy5fcmVkdWNlUG9pbnRzKHQsaSksdD10aGlzLl9zaW1wbGlmeURQKHQsaSl9LHBvaW50VG9TZWdtZW50RGlzdGFuY2U6ZnVuY3Rpb24odCxlLGkpe3JldHVybiBNYXRoLnNxcnQodGhpcy5fc3FDbG9zZXN0UG9pbnRPblNlZ21lbnQodCxlLGksITApKX0sY2xvc2VzdFBvaW50T25TZWdtZW50OmZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gdGhpcy5fc3FDbG9zZXN0UG9pbnRPblNlZ21lbnQodCxlLGkpfSxfc2ltcGxpZnlEUDpmdW5jdGlvbih0LGUpe3ZhciBuPXQubGVuZ3RoLG89dHlwZW9mIFVpbnQ4QXJyYXkhPWkrIiI/VWludDhBcnJheTpBcnJheSxzPW5ldyBvKG4pO3NbMF09c1tuLTFdPTEsdGhpcy5fc2ltcGxpZnlEUFN0ZXAodCxzLGUsMCxuLTEpO3ZhciBhLHI9W107Zm9yKGE9MDtuPmE7YSsrKXNbYV0mJnIucHVzaCh0W2FdKTtyZXR1cm4gcn0sX3NpbXBsaWZ5RFBTdGVwOmZ1bmN0aW9uKHQsZSxpLG4sbyl7dmFyIHMsYSxyLGg9MDtmb3IoYT1uKzE7by0xPj1hO2ErKylyPXRoaXMuX3NxQ2xvc2VzdFBvaW50T25TZWdtZW50KHRbYV0sdFtuXSx0W29dLCEwKSxyPmgmJihzPWEsaD1yKTtoPmkmJihlW3NdPTEsdGhpcy5fc2ltcGxpZnlEUFN0ZXAodCxlLGksbixzKSx0aGlzLl9zaW1wbGlmeURQU3RlcCh0LGUsaSxzLG8pKX0sX3JlZHVjZVBvaW50czpmdW5jdGlvbih0LGUpe2Zvcih2YXIgaT1bdFswXV0sbj0xLG89MCxzPXQubGVuZ3RoO3M+bjtuKyspdGhpcy5fc3FEaXN0KHRbbl0sdFtvXSk+ZSYmKGkucHVzaCh0W25dKSxvPW4pO3JldHVybiBzLTE+byYmaS5wdXNoKHRbcy0xXSksaX0sY2xpcFNlZ21lbnQ6ZnVuY3Rpb24odCxlLGksbil7dmFyIG8scyxhLHI9bj90aGlzLl9sYXN0Q29kZTp0aGlzLl9nZXRCaXRDb2RlKHQsaSksaD10aGlzLl9nZXRCaXRDb2RlKGUsaSk7Zm9yKHRoaXMuX2xhc3RDb2RlPWg7Oyl7aWYoIShyfGgpKXJldHVyblt0LGVdO2lmKHImaClyZXR1cm4hMTtvPXJ8fGgscz10aGlzLl9nZXRFZGdlSW50ZXJzZWN0aW9uKHQsZSxvLGkpLGE9dGhpcy5fZ2V0Qml0Q29kZShzLGkpLG89PT1yPyh0PXMscj1hKTooZT1zLGg9YSl9fSxfZ2V0RWRnZUludGVyc2VjdGlvbjpmdW5jdGlvbih0LGUsaSxuKXt2YXIgcz1lLngtdC54LGE9ZS55LXQueSxyPW4ubWluLGg9bi5tYXg7cmV0dXJuIDgmaT9uZXcgby5Qb2ludCh0LngrcyooaC55LXQueSkvYSxoLnkpOjQmaT9uZXcgby5Qb2ludCh0Lngrcyooci55LXQueSkvYSxyLnkpOjImaT9uZXcgby5Qb2ludChoLngsdC55K2EqKGgueC10LngpL3MpOjEmaT9uZXcgby5Qb2ludChyLngsdC55K2EqKHIueC10LngpL3MpOnZvaWQgMH0sX2dldEJpdENvZGU6ZnVuY3Rpb24odCxlKXt2YXIgaT0wO3JldHVybiB0Lng8ZS5taW4ueD9pfD0xOnQueD5lLm1heC54JiYoaXw9MiksdC55PGUubWluLnk/aXw9NDp0Lnk+ZS5tYXgueSYmKGl8PTgpLGl9LF9zcURpc3Q6ZnVuY3Rpb24odCxlKXt2YXIgaT1lLngtdC54LG49ZS55LXQueTtyZXR1cm4gaSppK24qbn0sX3NxQ2xvc2VzdFBvaW50T25TZWdtZW50OmZ1bmN0aW9uKHQsZSxpLG4pe3ZhciBzLGE9ZS54LHI9ZS55LGg9aS54LWEsbD1pLnktcix1PWgqaCtsKmw7cmV0dXJuIHU+MCYmKHM9KCh0LngtYSkqaCsodC55LXIpKmwpL3Uscz4xPyhhPWkueCxyPWkueSk6cz4wJiYoYSs9aCpzLHIrPWwqcykpLGg9dC54LWEsbD10LnktcixuP2gqaCtsKmw6bmV3IG8uUG9pbnQoYSxyKX19LG8uUG9seWxpbmU9by5QYXRoLmV4dGVuZCh7aW5pdGlhbGl6ZTpmdW5jdGlvbih0LGUpe28uUGF0aC5wcm90b3R5cGUuaW5pdGlhbGl6ZS5jYWxsKHRoaXMsZSksdGhpcy5fbGF0bG5ncz10aGlzLl9jb252ZXJ0TGF0TG5ncyh0KX0sb3B0aW9uczp7c21vb3RoRmFjdG9yOjEsbm9DbGlwOiExfSxwcm9qZWN0TGF0bG5nczpmdW5jdGlvbigpe3RoaXMuX29yaWdpbmFsUG9pbnRzPVtdO2Zvcih2YXIgdD0wLGU9dGhpcy5fbGF0bG5ncy5sZW5ndGg7ZT50O3QrKyl0aGlzLl9vcmlnaW5hbFBvaW50c1t0XT10aGlzLl9tYXAubGF0TG5nVG9MYXllclBvaW50KHRoaXMuX2xhdGxuZ3NbdF0pfSxnZXRQYXRoU3RyaW5nOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PTAsZT10aGlzLl9wYXJ0cy5sZW5ndGgsaT0iIjtlPnQ7dCsrKWkrPXRoaXMuX2dldFBhdGhQYXJ0U3RyKHRoaXMuX3BhcnRzW3RdKTtyZXR1cm4gaX0sZ2V0TGF0TG5nczpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9sYXRsbmdzfSxzZXRMYXRMbmdzOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9sYXRsbmdzPXRoaXMuX2NvbnZlcnRMYXRMbmdzKHQpLHRoaXMucmVkcmF3KCl9LGFkZExhdExuZzpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fbGF0bG5ncy5wdXNoKG8ubGF0TG5nKHQpKSx0aGlzLnJlZHJhdygpfSxzcGxpY2VMYXRMbmdzOmZ1bmN0aW9uKCl7dmFyIHQ9W10uc3BsaWNlLmFwcGx5KHRoaXMuX2xhdGxuZ3MsYXJndW1lbnRzKTtyZXR1cm4gdGhpcy5fY29udmVydExhdExuZ3ModGhpcy5fbGF0bG5ncywhMCksdGhpcy5yZWRyYXcoKSx0fSxjbG9zZXN0TGF5ZXJQb2ludDpmdW5jdGlvbih0KXtmb3IodmFyIGUsaSxuPTEvMCxzPXRoaXMuX3BhcnRzLGE9bnVsbCxyPTAsaD1zLmxlbmd0aDtoPnI7cisrKWZvcih2YXIgbD1zW3JdLHU9MSxjPWwubGVuZ3RoO2M+dTt1Kyspe2U9bFt1LTFdLGk9bFt1XTt2YXIgZD1vLkxpbmVVdGlsLl9zcUNsb3Nlc3RQb2ludE9uU2VnbWVudCh0LGUsaSwhMCk7bj5kJiYobj1kLGE9by5MaW5lVXRpbC5fc3FDbG9zZXN0UG9pbnRPblNlZ21lbnQodCxlLGkpKX1yZXR1cm4gYSYmKGEuZGlzdGFuY2U9TWF0aC5zcXJ0KG4pKSxhfSxnZXRCb3VuZHM6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IG8uTGF0TG5nQm91bmRzKHRoaXMuZ2V0TGF0TG5ncygpKX0sX2NvbnZlcnRMYXRMbmdzOmZ1bmN0aW9uKHQsZSl7dmFyIGksbixzPWU/dDpbXTtmb3IoaT0wLG49dC5sZW5ndGg7bj5pO2krKyl7aWYoby5VdGlsLmlzQXJyYXkodFtpXSkmJiJudW1iZXIiIT10eXBlb2YgdFtpXVswXSlyZXR1cm47c1tpXT1vLmxhdExuZyh0W2ldKX1yZXR1cm4gc30sX2luaXRFdmVudHM6ZnVuY3Rpb24oKXtvLlBhdGgucHJvdG90eXBlLl9pbml0RXZlbnRzLmNhbGwodGhpcyl9LF9nZXRQYXRoUGFydFN0cjpmdW5jdGlvbih0KXtmb3IodmFyIGUsaT1vLlBhdGguVk1MLG49MCxzPXQubGVuZ3RoLGE9IiI7cz5uO24rKyllPXRbbl0saSYmZS5fcm91bmQoKSxhKz0obj8iTCI6Ik0iKStlLngrIiAiK2UueTtyZXR1cm4gYX0sX2NsaXBQb2ludHM6ZnVuY3Rpb24oKXt2YXIgdCxlLGksbj10aGlzLl9vcmlnaW5hbFBvaW50cyxzPW4ubGVuZ3RoO2lmKHRoaXMub3B0aW9ucy5ub0NsaXApcmV0dXJuIHZvaWQodGhpcy5fcGFydHM9W25dKTt0aGlzLl9wYXJ0cz1bXTt2YXIgYT10aGlzLl9wYXJ0cyxyPXRoaXMuX21hcC5fcGF0aFZpZXdwb3J0LGg9by5MaW5lVXRpbDtmb3IodD0wLGU9MDtzLTE+dDt0KyspaT1oLmNsaXBTZWdtZW50KG5bdF0sblt0KzFdLHIsdCksaSYmKGFbZV09YVtlXXx8W10sYVtlXS5wdXNoKGlbMF0pLChpWzFdIT09blt0KzFdfHx0PT09cy0yKSYmKGFbZV0ucHVzaChpWzFdKSxlKyspKX0sX3NpbXBsaWZ5UG9pbnRzOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXMuX3BhcnRzLGU9by5MaW5lVXRpbCxpPTAsbj10Lmxlbmd0aDtuPmk7aSsrKXRbaV09ZS5zaW1wbGlmeSh0W2ldLHRoaXMub3B0aW9ucy5zbW9vdGhGYWN0b3IpfSxfdXBkYXRlUGF0aDpmdW5jdGlvbigpe3RoaXMuX21hcCYmKHRoaXMuX2NsaXBQb2ludHMoKSx0aGlzLl9zaW1wbGlmeVBvaW50cygpLG8uUGF0aC5wcm90b3R5cGUuX3VwZGF0ZVBhdGguY2FsbCh0aGlzKSl9fSksby5wb2x5bGluZT1mdW5jdGlvbih0LGUpe3JldHVybiBuZXcgby5Qb2x5bGluZSh0LGUpfSxvLlBvbHlVdGlsPXt9LG8uUG9seVV0aWwuY2xpcFBvbHlnb249ZnVuY3Rpb24odCxlKXt2YXIgaSxuLHMsYSxyLGgsbCx1LGMsZD1bMSw0LDIsOF0scD1vLkxpbmVVdGlsO2ZvcihuPTAsbD10Lmxlbmd0aDtsPm47bisrKXRbbl0uX2NvZGU9cC5fZ2V0Qml0Q29kZSh0W25dLGUpO2ZvcihhPTA7ND5hO2ErKyl7Zm9yKHU9ZFthXSxpPVtdLG49MCxsPXQubGVuZ3RoLHM9bC0xO2w+bjtzPW4rKylyPXRbbl0saD10W3NdLHIuX2NvZGUmdT9oLl9jb2RlJnV8fChjPXAuX2dldEVkZ2VJbnRlcnNlY3Rpb24oaCxyLHUsZSksYy5fY29kZT1wLl9nZXRCaXRDb2RlKGMsZSksaS5wdXNoKGMpKTooaC5fY29kZSZ1JiYoYz1wLl9nZXRFZGdlSW50ZXJzZWN0aW9uKGgscix1LGUpLGMuX2NvZGU9cC5fZ2V0Qml0Q29kZShjLGUpLGkucHVzaChjKSksaS5wdXNoKHIpKTt0PWl9cmV0dXJuIHR9LG8uUG9seWdvbj1vLlBvbHlsaW5lLmV4dGVuZCh7b3B0aW9uczp7ZmlsbDohMH0saW5pdGlhbGl6ZTpmdW5jdGlvbih0LGUpe28uUG9seWxpbmUucHJvdG90eXBlLmluaXRpYWxpemUuY2FsbCh0aGlzLHQsZSksdGhpcy5faW5pdFdpdGhIb2xlcyh0KX0sX2luaXRXaXRoSG9sZXM6ZnVuY3Rpb24odCl7dmFyIGUsaSxuO2lmKHQmJm8uVXRpbC5pc0FycmF5KHRbMF0pJiYibnVtYmVyIiE9dHlwZW9mIHRbMF1bMF0pZm9yKHRoaXMuX2xhdGxuZ3M9dGhpcy5fY29udmVydExhdExuZ3ModFswXSksdGhpcy5faG9sZXM9dC5zbGljZSgxKSxlPTAsaT10aGlzLl9ob2xlcy5sZW5ndGg7aT5lO2UrKyluPXRoaXMuX2hvbGVzW2VdPXRoaXMuX2NvbnZlcnRMYXRMbmdzKHRoaXMuX2hvbGVzW2VdKSxuWzBdLmVxdWFscyhuW24ubGVuZ3RoLTFdKSYmbi5wb3AoKTt0PXRoaXMuX2xhdGxuZ3MsdC5sZW5ndGg+PTImJnRbMF0uZXF1YWxzKHRbdC5sZW5ndGgtMV0pJiZ0LnBvcCgpfSxwcm9qZWN0TGF0bG5nczpmdW5jdGlvbigpe2lmKG8uUG9seWxpbmUucHJvdG90eXBlLnByb2plY3RMYXRsbmdzLmNhbGwodGhpcyksdGhpcy5faG9sZVBvaW50cz1bXSx0aGlzLl9ob2xlcyl7dmFyIHQsZSxpLG47Zm9yKHQ9MCxpPXRoaXMuX2hvbGVzLmxlbmd0aDtpPnQ7dCsrKWZvcih0aGlzLl9ob2xlUG9pbnRzW3RdPVtdLGU9MCxuPXRoaXMuX2hvbGVzW3RdLmxlbmd0aDtuPmU7ZSsrKXRoaXMuX2hvbGVQb2ludHNbdF1bZV09dGhpcy5fbWFwLmxhdExuZ1RvTGF5ZXJQb2ludCh0aGlzLl9ob2xlc1t0XVtlXSl9fSxzZXRMYXRMbmdzOmZ1bmN0aW9uKHQpe3JldHVybiB0JiZvLlV0aWwuaXNBcnJheSh0WzBdKSYmIm51bWJlciIhPXR5cGVvZiB0WzBdWzBdPyh0aGlzLl9pbml0V2l0aEhvbGVzKHQpLHRoaXMucmVkcmF3KCkpOm8uUG9seWxpbmUucHJvdG90eXBlLnNldExhdExuZ3MuY2FsbCh0aGlzLHQpfSxfY2xpcFBvaW50czpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX29yaWdpbmFsUG9pbnRzLGU9W107aWYodGhpcy5fcGFydHM9W3RdLmNvbmNhdCh0aGlzLl9ob2xlUG9pbnRzKSwhdGhpcy5vcHRpb25zLm5vQ2xpcCl7Zm9yKHZhciBpPTAsbj10aGlzLl9wYXJ0cy5sZW5ndGg7bj5pO2krKyl7dmFyIHM9by5Qb2x5VXRpbC5jbGlwUG9seWdvbih0aGlzLl9wYXJ0c1tpXSx0aGlzLl9tYXAuX3BhdGhWaWV3cG9ydCk7cy5sZW5ndGgmJmUucHVzaChzKX10aGlzLl9wYXJ0cz1lfX0sX2dldFBhdGhQYXJ0U3RyOmZ1bmN0aW9uKHQpe3ZhciBlPW8uUG9seWxpbmUucHJvdG90eXBlLl9nZXRQYXRoUGFydFN0ci5jYWxsKHRoaXMsdCk7cmV0dXJuIGUrKG8uQnJvd3Nlci5zdmc/InoiOiJ4Iil9fSksby5wb2x5Z29uPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG5ldyBvLlBvbHlnb24odCxlKX0sZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3JldHVybiBvLkZlYXR1cmVHcm91cC5leHRlbmQoe2luaXRpYWxpemU6ZnVuY3Rpb24odCxlKXt0aGlzLl9sYXllcnM9e30sdGhpcy5fb3B0aW9ucz1lLHRoaXMuc2V0TGF0TG5ncyh0KX0sc2V0TGF0TG5nczpmdW5jdGlvbihlKXt2YXIgaT0wLG49ZS5sZW5ndGg7Zm9yKHRoaXMuZWFjaExheWVyKGZ1bmN0aW9uKHQpe24+aT90LnNldExhdExuZ3MoZVtpKytdKTp0aGlzLnJlbW92ZUxheWVyKHQpfSx0aGlzKTtuPmk7KXRoaXMuYWRkTGF5ZXIobmV3IHQoZVtpKytdLHRoaXMuX29wdGlvbnMpKTtyZXR1cm4gdGhpc30sZ2V0TGF0TG5nczpmdW5jdGlvbigpe3ZhciB0PVtdO3JldHVybiB0aGlzLmVhY2hMYXllcihmdW5jdGlvbihlKXt0LnB1c2goZS5nZXRMYXRMbmdzKCkpfSksdH19KX1vLk11bHRpUG9seWxpbmU9dChvLlBvbHlsaW5lKSxvLk11bHRpUG9seWdvbj10KG8uUG9seWdvbiksby5tdWx0aVBvbHlsaW5lPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG5ldyBvLk11bHRpUG9seWxpbmUodCxlKX0sby5tdWx0aVBvbHlnb249ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3IG8uTXVsdGlQb2x5Z29uKHQsZSl9fSgpLG8uUmVjdGFuZ2xlPW8uUG9seWdvbi5leHRlbmQoe2luaXRpYWxpemU6ZnVuY3Rpb24odCxlKXtvLlBvbHlnb24ucHJvdG90eXBlLmluaXRpYWxpemUuY2FsbCh0aGlzLHRoaXMuX2JvdW5kc1RvTGF0TG5ncyh0KSxlKX0sc2V0Qm91bmRzOmZ1bmN0aW9uKHQpe3RoaXMuc2V0TGF0TG5ncyh0aGlzLl9ib3VuZHNUb0xhdExuZ3ModCkpfSxfYm91bmRzVG9MYXRMbmdzOmZ1bmN0aW9uKHQpe3JldHVybiB0PW8ubGF0TG5nQm91bmRzKHQpLFt0LmdldFNvdXRoV2VzdCgpLHQuZ2V0Tm9ydGhXZXN0KCksdC5nZXROb3J0aEVhc3QoKSx0LmdldFNvdXRoRWFzdCgpXX19KSxvLnJlY3RhbmdsZT1mdW5jdGlvbih0LGUpe3JldHVybiBuZXcgby5SZWN0YW5nbGUodCxlKX0sby5DaXJjbGU9by5QYXRoLmV4dGVuZCh7aW5pdGlhbGl6ZTpmdW5jdGlvbih0LGUsaSl7by5QYXRoLnByb3RvdHlwZS5pbml0aWFsaXplLmNhbGwodGhpcyxpKSx0aGlzLl9sYXRsbmc9by5sYXRMbmcodCksdGhpcy5fbVJhZGl1cz1lfSxvcHRpb25zOntmaWxsOiEwfSxzZXRMYXRMbmc6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2xhdGxuZz1vLmxhdExuZyh0KSx0aGlzLnJlZHJhdygpfSxzZXRSYWRpdXM6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX21SYWRpdXM9dCx0aGlzLnJlZHJhdygpfSxwcm9qZWN0TGF0bG5nczpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX2dldExuZ1JhZGl1cygpLGU9dGhpcy5fbGF0bG5nLGk9dGhpcy5fbWFwLmxhdExuZ1RvTGF5ZXJQb2ludChbZS5sYXQsZS5sbmctdF0pO3RoaXMuX3BvaW50PXRoaXMuX21hcC5sYXRMbmdUb0xheWVyUG9pbnQoZSksdGhpcy5fcmFkaXVzPU1hdGgubWF4KHRoaXMuX3BvaW50LngtaS54LDEpfSxnZXRCb3VuZHM6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9nZXRMbmdSYWRpdXMoKSxlPXRoaXMuX21SYWRpdXMvNDAwNzUwMTcqMzYwLGk9dGhpcy5fbGF0bG5nO3JldHVybiBuZXcgby5MYXRMbmdCb3VuZHMoW2kubGF0LWUsaS5sbmctdF0sW2kubGF0K2UsaS5sbmcrdF0pfSxnZXRMYXRMbmc6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbGF0bG5nfSxnZXRQYXRoU3RyaW5nOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fcG9pbnQsZT10aGlzLl9yYWRpdXM7cmV0dXJuIHRoaXMuX2NoZWNrSWZFbXB0eSgpPyIiOm8uQnJvd3Nlci5zdmc/Ik0iK3QueCsiLCIrKHQueS1lKSsiQSIrZSsiLCIrZSsiLDAsMSwxLCIrKHQueC0uMSkrIiwiKyh0LnktZSkrIiB6IjoodC5fcm91bmQoKSxlPU1hdGgucm91bmQoZSksIkFMICIrdC54KyIsIit0LnkrIiAiK2UrIiwiK2UrIiAwLDIzNTkyNjAwIil9LGdldFJhZGl1czpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9tUmFkaXVzfSxfZ2V0TGF0UmFkaXVzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX21SYWRpdXMvNDAwNzUwMTcqMzYwfSxfZ2V0TG5nUmFkaXVzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2dldExhdFJhZGl1cygpL01hdGguY29zKG8uTGF0TG5nLkRFR19UT19SQUQqdGhpcy5fbGF0bG5nLmxhdCl9LF9jaGVja0lmRW1wdHk6ZnVuY3Rpb24oKXtpZighdGhpcy5fbWFwKXJldHVybiExO3ZhciB0PXRoaXMuX21hcC5fcGF0aFZpZXdwb3J0LGU9dGhpcy5fcmFkaXVzLGk9dGhpcy5fcG9pbnQ7cmV0dXJuIGkueC1lPnQubWF4Lnh8fGkueS1lPnQubWF4Lnl8fGkueCtlPHQubWluLnh8fGkueStlPHQubWluLnl9fSksby5jaXJjbGU9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBuZXcgby5DaXJjbGUodCxlLGkpfSxvLkNpcmNsZU1hcmtlcj1vLkNpcmNsZS5leHRlbmQoe29wdGlvbnM6e3JhZGl1czoxMCx3ZWlnaHQ6Mn0saW5pdGlhbGl6ZTpmdW5jdGlvbih0LGUpe28uQ2lyY2xlLnByb3RvdHlwZS5pbml0aWFsaXplLmNhbGwodGhpcyx0LG51bGwsZSksdGhpcy5fcmFkaXVzPXRoaXMub3B0aW9ucy5yYWRpdXN9LHByb2plY3RMYXRsbmdzOmZ1bmN0aW9uKCl7dGhpcy5fcG9pbnQ9dGhpcy5fbWFwLmxhdExuZ1RvTGF5ZXJQb2ludCh0aGlzLl9sYXRsbmcpfSxfdXBkYXRlU3R5bGU6ZnVuY3Rpb24oKXtvLkNpcmNsZS5wcm90b3R5cGUuX3VwZGF0ZVN0eWxlLmNhbGwodGhpcyksdGhpcy5zZXRSYWRpdXModGhpcy5vcHRpb25zLnJhZGl1cyl9LHNldExhdExuZzpmdW5jdGlvbih0KXtyZXR1cm4gby5DaXJjbGUucHJvdG90eXBlLnNldExhdExuZy5jYWxsKHRoaXMsdCksdGhpcy5fcG9wdXAmJnRoaXMuX3BvcHVwLl9pc09wZW4mJnRoaXMuX3BvcHVwLnNldExhdExuZyh0KSx0aGlzfSxzZXRSYWRpdXM6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMub3B0aW9ucy5yYWRpdXM9dGhpcy5fcmFkaXVzPXQsdGhpcy5yZWRyYXcoKX0sZ2V0UmFkaXVzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3JhZGl1c319KSxvLmNpcmNsZU1hcmtlcj1mdW5jdGlvbih0LGUpe3JldHVybiBuZXcgby5DaXJjbGVNYXJrZXIodCxlKX0sby5Qb2x5bGluZS5pbmNsdWRlKG8uUGF0aC5DQU5WQVM/e19jb250YWluc1BvaW50OmZ1bmN0aW9uKHQsZSl7dmFyIGksbixzLGEscixoLGwsdT10aGlzLm9wdGlvbnMud2VpZ2h0LzI7Zm9yKG8uQnJvd3Nlci50b3VjaCYmKHUrPTEwKSxpPTAsYT10aGlzLl9wYXJ0cy5sZW5ndGg7YT5pO2krKylmb3IobD10aGlzLl9wYXJ0c1tpXSxuPTAscj1sLmxlbmd0aCxzPXItMTtyPm47cz1uKyspaWYoKGV8fDAhPT1uKSYmKGg9by5MaW5lVXRpbC5wb2ludFRvU2VnbWVudERpc3RhbmNlKHQsbFtzXSxsW25dKSx1Pj1oKSlyZXR1cm4hMDtyZXR1cm4hMX19Ont9KSxvLlBvbHlnb24uaW5jbHVkZShvLlBhdGguQ0FOVkFTP3tfY29udGFpbnNQb2ludDpmdW5jdGlvbih0KXt2YXIgZSxpLG4scyxhLHIsaCxsLHU9ITE7aWYoby5Qb2x5bGluZS5wcm90b3R5cGUuX2NvbnRhaW5zUG9pbnQuY2FsbCh0aGlzLHQsITApKXJldHVybiEwO2ZvcihzPTAsaD10aGlzLl9wYXJ0cy5sZW5ndGg7aD5zO3MrKylmb3IoZT10aGlzLl9wYXJ0c1tzXSxhPTAsbD1lLmxlbmd0aCxyPWwtMTtsPmE7cj1hKyspaT1lW2FdLG49ZVtyXSxpLnk+dC55IT1uLnk+dC55JiZ0Lng8KG4ueC1pLngpKih0LnktaS55KS8obi55LWkueSkraS54JiYodT0hdSk7cmV0dXJuIHV9fTp7fSksby5DaXJjbGUuaW5jbHVkZShvLlBhdGguQ0FOVkFTP3tfZHJhd1BhdGg6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9wb2ludDt0aGlzLl9jdHguYmVnaW5QYXRoKCksdGhpcy5fY3R4LmFyYyh0LngsdC55LHRoaXMuX3JhZGl1cywwLDIqTWF0aC5QSSwhMSl9LF9jb250YWluc1BvaW50OmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX3BvaW50LGk9dGhpcy5vcHRpb25zLnN0cm9rZT90aGlzLm9wdGlvbnMud2VpZ2h0LzI6MDtyZXR1cm4gdC5kaXN0YW5jZVRvKGUpPD10aGlzLl9yYWRpdXMraX19Ont9KSxvLkNpcmNsZU1hcmtlci5pbmNsdWRlKG8uUGF0aC5DQU5WQVM/e191cGRhdGVTdHlsZTpmdW5jdGlvbigpe28uUGF0aC5wcm90b3R5cGUuX3VwZGF0ZVN0eWxlLmNhbGwodGhpcyl9fTp7fSksby5HZW9KU09OPW8uRmVhdHVyZUdyb3VwLmV4dGVuZCh7aW5pdGlhbGl6ZTpmdW5jdGlvbih0LGUpe28uc2V0T3B0aW9ucyh0aGlzLGUpLHRoaXMuX2xheWVycz17fSx0JiZ0aGlzLmFkZERhdGEodCl9LGFkZERhdGE6ZnVuY3Rpb24odCl7dmFyIGUsaSxuLHM9by5VdGlsLmlzQXJyYXkodCk/dDp0LmZlYXR1cmVzO2lmKHMpe2ZvcihlPTAsaT1zLmxlbmd0aDtpPmU7ZSsrKW49c1tlXSwobi5nZW9tZXRyaWVzfHxuLmdlb21ldHJ5fHxuLmZlYXR1cmVzfHxuLmNvb3JkaW5hdGVzKSYmdGhpcy5hZGREYXRhKHNbZV0pO3JldHVybiB0aGlzfXZhciBhPXRoaXMub3B0aW9ucztpZighYS5maWx0ZXJ8fGEuZmlsdGVyKHQpKXt2YXIgcj1vLkdlb0pTT04uZ2VvbWV0cnlUb0xheWVyKHQsYS5wb2ludFRvTGF5ZXIsYS5jb29yZHNUb0xhdExuZyxhKTtyZXR1cm4gci5mZWF0dXJlPW8uR2VvSlNPTi5hc0ZlYXR1cmUodCksci5kZWZhdWx0T3B0aW9ucz1yLm9wdGlvbnMsdGhpcy5yZXNldFN0eWxlKHIpLGEub25FYWNoRmVhdHVyZSYmYS5vbkVhY2hGZWF0dXJlKHQsciksdGhpcy5hZGRMYXllcihyKX19LHJlc2V0U3R5bGU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5vcHRpb25zLnN0eWxlO2UmJihvLlV0aWwuZXh0ZW5kKHQub3B0aW9ucyx0LmRlZmF1bHRPcHRpb25zKSx0aGlzLl9zZXRMYXllclN0eWxlKHQsZSkpfSxzZXRTdHlsZTpmdW5jdGlvbih0KXt0aGlzLmVhY2hMYXllcihmdW5jdGlvbihlKXt0aGlzLl9zZXRMYXllclN0eWxlKGUsdCl9LHRoaXMpfSxfc2V0TGF5ZXJTdHlsZTpmdW5jdGlvbih0LGUpeyJmdW5jdGlvbiI9PXR5cGVvZiBlJiYoZT1lKHQuZmVhdHVyZSkpLHQuc2V0U3R5bGUmJnQuc2V0U3R5bGUoZSl9fSksby5leHRlbmQoby5HZW9KU09OLHtnZW9tZXRyeVRvTGF5ZXI6ZnVuY3Rpb24odCxlLGksbil7dmFyIHMsYSxyLGgsbD0iRmVhdHVyZSI9PT10LnR5cGU/dC5nZW9tZXRyeTp0LHU9bC5jb29yZGluYXRlcyxjPVtdO3N3aXRjaChpPWl8fHRoaXMuY29vcmRzVG9MYXRMbmcsbC50eXBlKXtjYXNlIlBvaW50IjpyZXR1cm4gcz1pKHUpLGU/ZSh0LHMpOm5ldyBvLk1hcmtlcihzKTtjYXNlIk11bHRpUG9pbnQiOmZvcihyPTAsaD11Lmxlbmd0aDtoPnI7cisrKXM9aSh1W3JdKSxjLnB1c2goZT9lKHQscyk6bmV3IG8uTWFya2VyKHMpKTtyZXR1cm4gbmV3IG8uRmVhdHVyZUdyb3VwKGMpO2Nhc2UiTGluZVN0cmluZyI6cmV0dXJuIGE9dGhpcy5jb29yZHNUb0xhdExuZ3ModSwwLGkpLG5ldyBvLlBvbHlsaW5lKGEsbik7Y2FzZSJQb2x5Z29uIjppZigyPT09dS5sZW5ndGgmJiF1WzFdLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgR2VvSlNPTiBvYmplY3QuIik7cmV0dXJuIGE9dGhpcy5jb29yZHNUb0xhdExuZ3ModSwxLGkpLG5ldyBvLlBvbHlnb24oYSxuKTtjYXNlIk11bHRpTGluZVN0cmluZyI6cmV0dXJuIGE9dGhpcy5jb29yZHNUb0xhdExuZ3ModSwxLGkpLG5ldyBvLk11bHRpUG9seWxpbmUoYSxuKTtjYXNlIk11bHRpUG9seWdvbiI6cmV0dXJuIGE9dGhpcy5jb29yZHNUb0xhdExuZ3ModSwyLGkpLG5ldyBvLk11bHRpUG9seWdvbihhLG4pO2Nhc2UiR2VvbWV0cnlDb2xsZWN0aW9uIjpmb3Iocj0wLGg9bC5nZW9tZXRyaWVzLmxlbmd0aDtoPnI7cisrKWMucHVzaCh0aGlzLmdlb21ldHJ5VG9MYXllcih7Z2VvbWV0cnk6bC5nZW9tZXRyaWVzW3JdLHR5cGU6IkZlYXR1cmUiLHByb3BlcnRpZXM6dC5wcm9wZXJ0aWVzfSxlLGksbikpO3JldHVybiBuZXcgby5GZWF0dXJlR3JvdXAoYyk7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgR2VvSlNPTiBvYmplY3QuIil9fSxjb29yZHNUb0xhdExuZzpmdW5jdGlvbih0KXtyZXR1cm4gbmV3IG8uTGF0TG5nKHRbMV0sdFswXSx0WzJdKX0sY29vcmRzVG9MYXRMbmdzOmZ1bmN0aW9uKHQsZSxpKXt2YXIgbixvLHMsYT1bXTtmb3Iobz0wLHM9dC5sZW5ndGg7cz5vO28rKyluPWU/dGhpcy5jb29yZHNUb0xhdExuZ3ModFtvXSxlLTEsaSk6KGl8fHRoaXMuY29vcmRzVG9MYXRMbmcpKHRbb10pLGEucHVzaChuKTtyZXR1cm4gYX0sbGF0TG5nVG9Db29yZHM6ZnVuY3Rpb24odCl7dmFyIGU9W3QubG5nLHQubGF0XTtyZXR1cm4gdC5hbHQhPT1pJiZlLnB1c2godC5hbHQpLGV9LGxhdExuZ3NUb0Nvb3JkczpmdW5jdGlvbih0KXtmb3IodmFyIGU9W10saT0wLG49dC5sZW5ndGg7bj5pO2krKyllLnB1c2goby5HZW9KU09OLmxhdExuZ1RvQ29vcmRzKHRbaV0pKTtyZXR1cm4gZX0sZ2V0RmVhdHVyZTpmdW5jdGlvbih0LGUpe3JldHVybiB0LmZlYXR1cmU/by5leHRlbmQoe30sdC5mZWF0dXJlLHtnZW9tZXRyeTplfSk6by5HZW9KU09OLmFzRmVhdHVyZShlKX0sYXNGZWF0dXJlOmZ1bmN0aW9uKHQpe3JldHVybiJGZWF0dXJlIj09PXQudHlwZT90Ont0eXBlOiJGZWF0dXJlIixwcm9wZXJ0aWVzOnt9LGdlb21ldHJ5OnR9fX0pO3ZhciBhPXt0b0dlb0pTT046ZnVuY3Rpb24oKXtyZXR1cm4gby5HZW9KU09OLmdldEZlYXR1cmUodGhpcyx7dHlwZToiUG9pbnQiLGNvb3JkaW5hdGVzOm8uR2VvSlNPTi5sYXRMbmdUb0Nvb3Jkcyh0aGlzLmdldExhdExuZygpKX0pfX07by5NYXJrZXIuaW5jbHVkZShhKSxvLkNpcmNsZS5pbmNsdWRlKGEpLG8uQ2lyY2xlTWFya2VyLmluY2x1ZGUoYSksby5Qb2x5bGluZS5pbmNsdWRlKHt0b0dlb0pTT046ZnVuY3Rpb24oKXtyZXR1cm4gby5HZW9KU09OLmdldEZlYXR1cmUodGhpcyx7dHlwZToiTGluZVN0cmluZyIsY29vcmRpbmF0ZXM6by5HZW9KU09OLmxhdExuZ3NUb0Nvb3Jkcyh0aGlzLmdldExhdExuZ3MoKSl9KX19KSxvLlBvbHlnb24uaW5jbHVkZSh7dG9HZW9KU09OOmZ1bmN0aW9uKCl7dmFyIHQsZSxpLG49W28uR2VvSlNPTi5sYXRMbmdzVG9Db29yZHModGhpcy5nZXRMYXRMbmdzKCkpXTtpZihuWzBdLnB1c2goblswXVswXSksdGhpcy5faG9sZXMpZm9yKHQ9MCxlPXRoaXMuX2hvbGVzLmxlbmd0aDtlPnQ7dCsrKWk9by5HZW9KU09OLmxhdExuZ3NUb0Nvb3Jkcyh0aGlzLl9ob2xlc1t0XSksaS5wdXNoKGlbMF0pLG4ucHVzaChpKTtyZXR1cm4gby5HZW9KU09OLmdldEZlYXR1cmUodGhpcyx7dHlwZToiUG9seWdvbiIsY29vcmRpbmF0ZXM6bn0pfX0pLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT1bXTtyZXR1cm4gdGhpcy5lYWNoTGF5ZXIoZnVuY3Rpb24odCl7ZS5wdXNoKHQudG9HZW9KU09OKCkuZ2VvbWV0cnkuY29vcmRpbmF0ZXMpfSksby5HZW9KU09OLmdldEZlYXR1cmUodGhpcyx7dHlwZTp0LGNvb3JkaW5hdGVzOmV9KX19by5NdWx0aVBvbHlsaW5lLmluY2x1ZGUoe3RvR2VvSlNPTjp0KCJNdWx0aUxpbmVTdHJpbmciKX0pLG8uTXVsdGlQb2x5Z29uLmluY2x1ZGUoe3RvR2VvSlNPTjp0KCJNdWx0aVBvbHlnb24iKX0pLG8uTGF5ZXJHcm91cC5pbmNsdWRlKHt0b0dlb0pTT046ZnVuY3Rpb24oKXt2YXIgZSxpPXRoaXMuZmVhdHVyZSYmdGhpcy5mZWF0dXJlLmdlb21ldHJ5LG49W107aWYoaSYmIk11bHRpUG9pbnQiPT09aS50eXBlKXJldHVybiB0KCJNdWx0aVBvaW50IikuY2FsbCh0aGlzKTt2YXIgcz1pJiYiR2VvbWV0cnlDb2xsZWN0aW9uIj09PWkudHlwZTtyZXR1cm4gdGhpcy5lYWNoTGF5ZXIoZnVuY3Rpb24odCl7dC50b0dlb0pTT04mJihlPXQudG9HZW9KU09OKCksbi5wdXNoKHM/ZS5nZW9tZXRyeTpvLkdlb0pTT04uYXNGZWF0dXJlKGUpKSl9KSxzP28uR2VvSlNPTi5nZXRGZWF0dXJlKHRoaXMse2dlb21ldHJpZXM6bix0eXBlOiJHZW9tZXRyeUNvbGxlY3Rpb24ifSk6e3R5cGU6IkZlYXR1cmVDb2xsZWN0aW9uIixmZWF0dXJlczpufX19KX0oKSxvLmdlb0pzb249ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3IG8uR2VvSlNPTih0LGUpfSxvLkRvbUV2ZW50PXthZGRMaXN0ZW5lcjpmdW5jdGlvbih0LGUsaSxuKXt2YXIgcyxhLHIsaD1vLnN0YW1wKGkpLGw9Il9sZWFmbGV0XyIrZStoO3JldHVybiB0W2xdP3RoaXM6KHM9ZnVuY3Rpb24oZSl7cmV0dXJuIGkuY2FsbChufHx0LGV8fG8uRG9tRXZlbnQuX2dldEV2ZW50KCkpfSxvLkJyb3dzZXIucG9pbnRlciYmMD09PWUuaW5kZXhPZigidG91Y2giKT90aGlzLmFkZFBvaW50ZXJMaXN0ZW5lcih0LGUscyxoKTooby5Ccm93c2VyLnRvdWNoJiYiZGJsY2xpY2siPT09ZSYmdGhpcy5hZGREb3VibGVUYXBMaXN0ZW5lciYmdGhpcy5hZGREb3VibGVUYXBMaXN0ZW5lcih0LHMsaCksImFkZEV2ZW50TGlzdGVuZXIiaW4gdD8ibW91c2V3aGVlbCI9PT1lPyh0LmFkZEV2ZW50TGlzdGVuZXIoIkRPTU1vdXNlU2Nyb2xsIixzLCExKSx0LmFkZEV2ZW50TGlzdGVuZXIoZSxzLCExKSk6Im1vdXNlZW50ZXIiPT09ZXx8Im1vdXNlbGVhdmUiPT09ZT8oYT1zLHI9Im1vdXNlZW50ZXIiPT09ZT8ibW91c2VvdmVyIjoibW91c2VvdXQiLHM9ZnVuY3Rpb24oZSl7cmV0dXJuIG8uRG9tRXZlbnQuX2NoZWNrTW91c2UodCxlKT9hKGUpOnZvaWQgMH0sdC5hZGRFdmVudExpc3RlbmVyKHIscywhMSkpOiJjbGljayI9PT1lJiZvLkJyb3dzZXIuYW5kcm9pZD8oYT1zLHM9ZnVuY3Rpb24odCl7cmV0dXJuIG8uRG9tRXZlbnQuX2ZpbHRlckNsaWNrKHQsYSl9LHQuYWRkRXZlbnRMaXN0ZW5lcihlLHMsITEpKTp0LmFkZEV2ZW50TGlzdGVuZXIoZSxzLCExKToiYXR0YWNoRXZlbnQiaW4gdCYmdC5hdHRhY2hFdmVudCgib24iK2UscyksdFtsXT1zLHRoaXMpKX0scmVtb3ZlTGlzdGVuZXI6ZnVuY3Rpb24odCxlLGkpe3ZhciBuPW8uc3RhbXAoaSkscz0iX2xlYWZsZXRfIitlK24sYT10W3NdO3JldHVybiBhPyhvLkJyb3dzZXIucG9pbnRlciYmMD09PWUuaW5kZXhPZigidG91Y2giKT90aGlzLnJlbW92ZVBvaW50ZXJMaXN0ZW5lcih0LGUsbik6by5Ccm93c2VyLnRvdWNoJiYiZGJsY2xpY2siPT09ZSYmdGhpcy5yZW1vdmVEb3VibGVUYXBMaXN0ZW5lcj90aGlzLnJlbW92ZURvdWJsZVRhcExpc3RlbmVyKHQsbik6InJlbW92ZUV2ZW50TGlzdGVuZXIiaW4gdD8ibW91c2V3aGVlbCI9PT1lPyh0LnJlbW92ZUV2ZW50TGlzdGVuZXIoIkRPTU1vdXNlU2Nyb2xsIixhLCExKSx0LnJlbW92ZUV2ZW50TGlzdGVuZXIoZSxhLCExKSk6Im1vdXNlZW50ZXIiPT09ZXx8Im1vdXNlbGVhdmUiPT09ZT90LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNlZW50ZXIiPT09ZT8ibW91c2VvdmVyIjoibW91c2VvdXQiLGEsITEpOnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihlLGEsITEpOiJkZXRhY2hFdmVudCJpbiB0JiZ0LmRldGFjaEV2ZW50KCJvbiIrZSxhKSx0W3NdPW51bGwsdGhpcyk6dGhpc30sc3RvcFByb3BhZ2F0aW9uOmZ1bmN0aW9uKHQpe3JldHVybiB0LnN0b3BQcm9wYWdhdGlvbj90LnN0b3BQcm9wYWdhdGlvbigpOnQuY2FuY2VsQnViYmxlPSEwLG8uRG9tRXZlbnQuX3NraXBwZWQodCksdGhpc30sZGlzYWJsZVNjcm9sbFByb3BhZ2F0aW9uOmZ1bmN0aW9uKHQpe3ZhciBlPW8uRG9tRXZlbnQuc3RvcFByb3BhZ2F0aW9uO3JldHVybiBvLkRvbUV2ZW50Lm9uKHQsIm1vdXNld2hlZWwiLGUpLm9uKHQsIk1vek1vdXNlUGl4ZWxTY3JvbGwiLGUpfSxkaXNhYmxlQ2xpY2tQcm9wYWdhdGlvbjpmdW5jdGlvbih0KXtmb3IodmFyIGU9by5Eb21FdmVudC5zdG9wUHJvcGFnYXRpb24saT1vLkRyYWdnYWJsZS5TVEFSVC5sZW5ndGgtMTtpPj0wO2ktLSlvLkRvbUV2ZW50Lm9uKHQsby5EcmFnZ2FibGUuU1RBUlRbaV0sZSk7cmV0dXJuIG8uRG9tRXZlbnQub24odCwiY2xpY2siLG8uRG9tRXZlbnQuX2Zha2VTdG9wKS5vbih0LCJkYmxjbGljayIsZSl9LHByZXZlbnREZWZhdWx0OmZ1bmN0aW9uKHQpe3JldHVybiB0LnByZXZlbnREZWZhdWx0P3QucHJldmVudERlZmF1bHQoKTp0LnJldHVyblZhbHVlPSExLHRoaXN9LHN0b3A6ZnVuY3Rpb24odCl7cmV0dXJuIG8uRG9tRXZlbnQucHJldmVudERlZmF1bHQodCkuc3RvcFByb3BhZ2F0aW9uKHQpfSxnZXRNb3VzZVBvc2l0aW9uOmZ1bmN0aW9uKHQsZSl7aWYoIWUpcmV0dXJuIG5ldyBvLlBvaW50KHQuY2xpZW50WCx0LmNsaWVudFkpO3ZhciBpPWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7cmV0dXJuIG5ldyBvLlBvaW50KHQuY2xpZW50WC1pLmxlZnQtZS5jbGllbnRMZWZ0LHQuY2xpZW50WS1pLnRvcC1lLmNsaWVudFRvcCl9LGdldFdoZWVsRGVsdGE6ZnVuY3Rpb24odCl7dmFyIGU9MDtyZXR1cm4gdC53aGVlbERlbHRhJiYoZT10LndoZWVsRGVsdGEvMTIwKSx0LmRldGFpbCYmKGU9LXQuZGV0YWlsLzMpLGV9LF9za2lwRXZlbnRzOnt9LF9mYWtlU3RvcDpmdW5jdGlvbih0KXtvLkRvbUV2ZW50Ll9za2lwRXZlbnRzW3QudHlwZV09ITB9LF9za2lwcGVkOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX3NraXBFdmVudHNbdC50eXBlXTtyZXR1cm4gdGhpcy5fc2tpcEV2ZW50c1t0LnR5cGVdPSExLGV9LF9jaGVja01vdXNlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9ZS5yZWxhdGVkVGFyZ2V0O2lmKCFpKXJldHVybiEwO3RyeXtmb3IoO2kmJmkhPT10OylpPWkucGFyZW50Tm9kZX1jYXRjaChuKXtyZXR1cm4hMX1yZXR1cm4gaSE9PXR9LF9nZXRFdmVudDpmdW5jdGlvbigpe3ZhciBlPXQuZXZlbnQ7aWYoIWUpZm9yKHZhciBpPWFyZ3VtZW50cy5jYWxsZWUuY2FsbGVyO2kmJihlPWkuYXJndW1lbnRzWzBdLCFlfHx0LkV2ZW50IT09ZS5jb25zdHJ1Y3Rvcik7KWk9aS5jYWxsZXI7cmV0dXJuIGV9LF9maWx0ZXJDbGljazpmdW5jdGlvbih0LGUpe3ZhciBpPXQudGltZVN0YW1wfHx0Lm9yaWdpbmFsRXZlbnQudGltZVN0YW1wLG49by5Eb21FdmVudC5fbGFzdENsaWNrJiZpLW8uRG9tRXZlbnQuX2xhc3RDbGljaztyZXR1cm4gbiYmbj4xMDAmJjUwMD5ufHx0LnRhcmdldC5fc2ltdWxhdGVkQ2xpY2smJiF0Ll9zaW11bGF0ZWQ/dm9pZCBvLkRvbUV2ZW50LnN0b3AodCk6KG8uRG9tRXZlbnQuX2xhc3RDbGljaz1pLGUodCkpfX0sby5Eb21FdmVudC5vbj1vLkRvbUV2ZW50LmFkZExpc3RlbmVyLG8uRG9tRXZlbnQub2ZmPW8uRG9tRXZlbnQucmVtb3ZlTGlzdGVuZXIsby5EcmFnZ2FibGU9by5DbGFzcy5leHRlbmQoe2luY2x1ZGVzOm8uTWl4aW4uRXZlbnRzLHN0YXRpY3M6e1NUQVJUOm8uQnJvd3Nlci50b3VjaD9bInRvdWNoc3RhcnQiLCJtb3VzZWRvd24iXTpbIm1vdXNlZG93biJdLEVORDp7bW91c2Vkb3duOiJtb3VzZXVwIix0b3VjaHN0YXJ0OiJ0b3VjaGVuZCIscG9pbnRlcmRvd246InRvdWNoZW5kIixNU1BvaW50ZXJEb3duOiJ0b3VjaGVuZCJ9LE1PVkU6e21vdXNlZG93bjoibW91c2Vtb3ZlIix0b3VjaHN0YXJ0OiJ0b3VjaG1vdmUiLHBvaW50ZXJkb3duOiJ0b3VjaG1vdmUiLE1TUG9pbnRlckRvd246InRvdWNobW92ZSJ9fSxpbml0aWFsaXplOmZ1bmN0aW9uKHQsZSl7dGhpcy5fZWxlbWVudD10LHRoaXMuX2RyYWdTdGFydFRhcmdldD1lfHx0fSxlbmFibGU6ZnVuY3Rpb24oKXtpZighdGhpcy5fZW5hYmxlZCl7Zm9yKHZhciB0PW8uRHJhZ2dhYmxlLlNUQVJULmxlbmd0aC0xO3Q+PTA7dC0tKW8uRG9tRXZlbnQub24odGhpcy5fZHJhZ1N0YXJ0VGFyZ2V0LG8uRHJhZ2dhYmxlLlNUQVJUW3RdLHRoaXMuX29uRG93bix0aGlzKTt0aGlzLl9lbmFibGVkPSEwfX0sZGlzYWJsZTpmdW5jdGlvbigpe2lmKHRoaXMuX2VuYWJsZWQpe2Zvcih2YXIgdD1vLkRyYWdnYWJsZS5TVEFSVC5sZW5ndGgtMTt0Pj0wO3QtLSlvLkRvbUV2ZW50Lm9mZih0aGlzLl9kcmFnU3RhcnRUYXJnZXQsby5EcmFnZ2FibGUuU1RBUlRbdF0sdGhpcy5fb25Eb3duLHRoaXMpO3RoaXMuX2VuYWJsZWQ9ITEsdGhpcy5fbW92ZWQ9ITF9fSxfb25Eb3duOmZ1bmN0aW9uKHQpe2lmKHRoaXMuX21vdmVkPSExLCEodC5zaGlmdEtleXx8MSE9PXQud2hpY2gmJjEhPT10LmJ1dHRvbiYmIXQudG91Y2hlc3x8KG8uRG9tRXZlbnQuc3RvcFByb3BhZ2F0aW9uKHQpLG8uRHJhZ2dhYmxlLl9kaXNhYmxlZHx8KG8uRG9tVXRpbC5kaXNhYmxlSW1hZ2VEcmFnKCksby5Eb21VdGlsLmRpc2FibGVUZXh0U2VsZWN0aW9uKCksdGhpcy5fbW92aW5nKSkpKXt2YXIgaT10LnRvdWNoZXM/dC50b3VjaGVzWzBdOnQ7dGhpcy5fc3RhcnRQb2ludD1uZXcgby5Qb2ludChpLmNsaWVudFgsaS5jbGllbnRZKSx0aGlzLl9zdGFydFBvcz10aGlzLl9uZXdQb3M9by5Eb21VdGlsLmdldFBvc2l0aW9uKHRoaXMuX2VsZW1lbnQpLG8uRG9tRXZlbnQub24oZSxvLkRyYWdnYWJsZS5NT1ZFW3QudHlwZV0sdGhpcy5fb25Nb3ZlLHRoaXMpLm9uKGUsby5EcmFnZ2FibGUuRU5EW3QudHlwZV0sdGhpcy5fb25VcCx0aGlzKX19LF9vbk1vdmU6ZnVuY3Rpb24odCl7aWYodC50b3VjaGVzJiZ0LnRvdWNoZXMubGVuZ3RoPjEpcmV0dXJuIHZvaWQodGhpcy5fbW92ZWQ9ITApO3ZhciBpPXQudG91Y2hlcyYmMT09PXQudG91Y2hlcy5sZW5ndGg/dC50b3VjaGVzWzBdOnQsbj1uZXcgby5Qb2ludChpLmNsaWVudFgsaS5jbGllbnRZKSxzPW4uc3VidHJhY3QodGhpcy5fc3RhcnRQb2ludCk7KHMueHx8cy55KSYmKG8uQnJvd3Nlci50b3VjaCYmTWF0aC5hYnMocy54KStNYXRoLmFicyhzLnkpPDN8fChvLkRvbUV2ZW50LnByZXZlbnREZWZhdWx0KHQpLHRoaXMuX21vdmVkfHwodGhpcy5maXJlKCJkcmFnc3RhcnQiKSx0aGlzLl9tb3ZlZD0hMCx0aGlzLl9zdGFydFBvcz1vLkRvbVV0aWwuZ2V0UG9zaXRpb24odGhpcy5fZWxlbWVudCkuc3VidHJhY3Qocyksby5Eb21VdGlsLmFkZENsYXNzKGUuYm9keSwibGVhZmxldC1kcmFnZ2luZyIpLHRoaXMuX2xhc3RUYXJnZXQ9dC50YXJnZXR8fHQuc3JjRWxlbWVudCxvLkRvbVV0aWwuYWRkQ2xhc3ModGhpcy5fbGFzdFRhcmdldCwibGVhZmxldC1kcmFnLXRhcmdldCIpKSx0aGlzLl9uZXdQb3M9dGhpcy5fc3RhcnRQb3MuYWRkKHMpLHRoaXMuX21vdmluZz0hMCxvLlV0aWwuY2FuY2VsQW5pbUZyYW1lKHRoaXMuX2FuaW1SZXF1ZXN0KSx0aGlzLl9hbmltUmVxdWVzdD1vLlV0aWwucmVxdWVzdEFuaW1GcmFtZSh0aGlzLl91cGRhdGVQb3NpdGlvbix0aGlzLCEwLHRoaXMuX2RyYWdTdGFydFRhcmdldCkpKX0sX3VwZGF0ZVBvc2l0aW9uOmZ1bmN0aW9uKCl7dGhpcy5maXJlKCJwcmVkcmFnIiksby5Eb21VdGlsLnNldFBvc2l0aW9uKHRoaXMuX2VsZW1lbnQsdGhpcy5fbmV3UG9zKSx0aGlzLmZpcmUoImRyYWciKX0sX29uVXA6ZnVuY3Rpb24oKXtvLkRvbVV0aWwucmVtb3ZlQ2xhc3MoZS5ib2R5LCJsZWFmbGV0LWRyYWdnaW5nIiksdGhpcy5fbGFzdFRhcmdldCYmKG8uRG9tVXRpbC5yZW1vdmVDbGFzcyh0aGlzLl9sYXN0VGFyZ2V0LCJsZWFmbGV0LWRyYWctdGFyZ2V0IiksdGhpcy5fbGFzdFRhcmdldD1udWxsKTtmb3IodmFyIHQgaW4gby5EcmFnZ2FibGUuTU9WRSlvLkRvbUV2ZW50Lm9mZihlLG8uRHJhZ2dhYmxlLk1PVkVbdF0sdGhpcy5fb25Nb3ZlKS5vZmYoZSxvLkRyYWdnYWJsZS5FTkRbdF0sdGhpcy5fb25VcCk7by5Eb21VdGlsLmVuYWJsZUltYWdlRHJhZygpLG8uRG9tVXRpbC5lbmFibGVUZXh0U2VsZWN0aW9uKCksdGhpcy5fbW92ZWQmJnRoaXMuX21vdmluZyYmKG8uVXRpbC5jYW5jZWxBbmltRnJhbWUodGhpcy5fYW5pbVJlcXVlc3QpLHRoaXMuZmlyZSgiZHJhZ2VuZCIse2Rpc3RhbmNlOnRoaXMuX25ld1Bvcy5kaXN0YW5jZVRvKHRoaXMuX3N0YXJ0UG9zKX0pKSx0aGlzLl9tb3Zpbmc9ITF9fSksby5IYW5kbGVyPW8uQ2xhc3MuZXh0ZW5kKHtpbml0aWFsaXplOmZ1bmN0aW9uKHQpe3RoaXMuX21hcD10fSxlbmFibGU6ZnVuY3Rpb24oKXt0aGlzLl9lbmFibGVkfHwodGhpcy5fZW5hYmxlZD0hMCx0aGlzLmFkZEhvb2tzKCkpfSxkaXNhYmxlOmZ1bmN0aW9uKCl7dGhpcy5fZW5hYmxlZCYmKHRoaXMuX2VuYWJsZWQ9ITEsdGhpcy5yZW1vdmVIb29rcygpKX0sZW5hYmxlZDpmdW5jdGlvbigpe3JldHVybiEhdGhpcy5fZW5hYmxlZH19KSxvLk1hcC5tZXJnZU9wdGlvbnMoe2RyYWdnaW5nOiEwLGluZXJ0aWE6IW8uQnJvd3Nlci5hbmRyb2lkMjMsaW5lcnRpYURlY2VsZXJhdGlvbjozNDAwLGluZXJ0aWFNYXhTcGVlZDoxLzAsaW5lcnRpYVRocmVzaG9sZDpvLkJyb3dzZXIudG91Y2g/MzI6MTgsZWFzZUxpbmVhcml0eTouMjUsd29ybGRDb3B5SnVtcDohMX0pLG8uTWFwLkRyYWc9by5IYW5kbGVyLmV4dGVuZCh7YWRkSG9va3M6ZnVuY3Rpb24oKXtpZighdGhpcy5fZHJhZ2dhYmxlKXt2YXIgdD10aGlzLl9tYXA7dGhpcy5fZHJhZ2dhYmxlPW5ldyBvLkRyYWdnYWJsZSh0Ll9tYXBQYW5lLHQuX2NvbnRhaW5lciksdGhpcy5fZHJhZ2dhYmxlLm9uKHtkcmFnc3RhcnQ6dGhpcy5fb25EcmFnU3RhcnQsZHJhZzp0aGlzLl9vbkRyYWcsZHJhZ2VuZDp0aGlzLl9vbkRyYWdFbmR9LHRoaXMpLHQub3B0aW9ucy53b3JsZENvcHlKdW1wJiYodGhpcy5fZHJhZ2dhYmxlLm9uKCJwcmVkcmFnIix0aGlzLl9vblByZURyYWcsdGhpcyksdC5vbigidmlld3Jlc2V0Iix0aGlzLl9vblZpZXdSZXNldCx0aGlzKSx0LndoZW5SZWFkeSh0aGlzLl9vblZpZXdSZXNldCx0aGlzKSl9dGhpcy5fZHJhZ2dhYmxlLmVuYWJsZSgpfSxyZW1vdmVIb29rczpmdW5jdGlvbigpe3RoaXMuX2RyYWdnYWJsZS5kaXNhYmxlKCl9LG1vdmVkOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2RyYWdnYWJsZSYmdGhpcy5fZHJhZ2dhYmxlLl9tb3ZlZH0sX29uRHJhZ1N0YXJ0OmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fbWFwO3QuX3BhbkFuaW0mJnQuX3BhbkFuaW0uc3RvcCgpLHQuZmlyZSgibW92ZXN0YXJ0IikuZmlyZSgiZHJhZ3N0YXJ0IiksdC5vcHRpb25zLmluZXJ0aWEmJih0aGlzLl9wb3NpdGlvbnM9W10sdGhpcy5fdGltZXM9W10pfSxfb25EcmFnOmZ1bmN0aW9uKCl7aWYodGhpcy5fbWFwLm9wdGlvbnMuaW5lcnRpYSl7dmFyIHQ9dGhpcy5fbGFzdFRpbWU9K25ldyBEYXRlLGU9dGhpcy5fbGFzdFBvcz10aGlzLl9kcmFnZ2FibGUuX25ld1Bvczt0aGlzLl9wb3NpdGlvbnMucHVzaChlKSx0aGlzLl90aW1lcy5wdXNoKHQpLHQtdGhpcy5fdGltZXNbMF0+MjAwJiYodGhpcy5fcG9zaXRpb25zLnNoaWZ0KCksdGhpcy5fdGltZXMuc2hpZnQoKSl9dGhpcy5fbWFwLmZpcmUoIm1vdmUiKS5maXJlKCJkcmFnIil9LF9vblZpZXdSZXNldDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX21hcC5nZXRTaXplKCkuX2RpdmlkZUJ5KDIpLGU9dGhpcy5fbWFwLmxhdExuZ1RvTGF5ZXJQb2ludChbMCwwXSk7dGhpcy5faW5pdGlhbFdvcmxkT2Zmc2V0PWUuc3VidHJhY3QodCkueCx0aGlzLl93b3JsZFdpZHRoPXRoaXMuX21hcC5wcm9qZWN0KFswLDE4MF0pLnh9LF9vblByZURyYWc6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl93b3JsZFdpZHRoLGU9TWF0aC5yb3VuZCh0LzIpLGk9dGhpcy5faW5pdGlhbFdvcmxkT2Zmc2V0LG49dGhpcy5fZHJhZ2dhYmxlLl9uZXdQb3MueCxvPShuLWUraSkldCtlLWkscz0obitlK2kpJXQtZS1pLGE9TWF0aC5hYnMobytpKTxNYXRoLmFicyhzK2kpP286czt0aGlzLl9kcmFnZ2FibGUuX25ld1Bvcy54PWF9LF9vbkRyYWdFbmQ6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fbWFwLGk9ZS5vcHRpb25zLG49K25ldyBEYXRlLXRoaXMuX2xhc3RUaW1lLHM9IWkuaW5lcnRpYXx8bj5pLmluZXJ0aWFUaHJlc2hvbGR8fCF0aGlzLl9wb3NpdGlvbnNbMF07aWYoZS5maXJlKCJkcmFnZW5kIix0KSxzKWUuZmlyZSgibW92ZWVuZCIpO2Vsc2V7dmFyIGE9dGhpcy5fbGFzdFBvcy5zdWJ0cmFjdCh0aGlzLl9wb3NpdGlvbnNbMF0pLHI9KHRoaXMuX2xhc3RUaW1lK24tdGhpcy5fdGltZXNbMF0pLzFlMyxoPWkuZWFzZUxpbmVhcml0eSxsPWEubXVsdGlwbHlCeShoL3IpLHU9bC5kaXN0YW5jZVRvKFswLDBdKSxjPU1hdGgubWluKGkuaW5lcnRpYU1heFNwZWVkLHUpLGQ9bC5tdWx0aXBseUJ5KGMvdSkscD1jLyhpLmluZXJ0aWFEZWNlbGVyYXRpb24qaCksXz1kLm11bHRpcGx5QnkoLXAvMikucm91bmQoKTtfLngmJl8ueT8oXz1lLl9saW1pdE9mZnNldChfLGUub3B0aW9ucy5tYXhCb3VuZHMpLG8uVXRpbC5yZXF1ZXN0QW5pbUZyYW1lKGZ1bmN0aW9uKCl7ZS5wYW5CeShfLHtkdXJhdGlvbjpwLGVhc2VMaW5lYXJpdHk6aCxub01vdmVTdGFydDohMH0pfSkpOmUuZmlyZSgibW92ZWVuZCIpfX19KSxvLk1hcC5hZGRJbml0SG9vaygiYWRkSGFuZGxlciIsImRyYWdnaW5nIixvLk1hcC5EcmFnKSxvLk1hcC5tZXJnZU9wdGlvbnMoe2RvdWJsZUNsaWNrWm9vbTohMH0pLG8uTWFwLkRvdWJsZUNsaWNrWm9vbT1vLkhhbmRsZXIuZXh0ZW5kKHthZGRIb29rczpmdW5jdGlvbigpe3RoaXMuX21hcC5vbigiZGJsY2xpY2siLHRoaXMuX29uRG91YmxlQ2xpY2ssdGhpcyl9LHJlbW92ZUhvb2tzOmZ1bmN0aW9uKCl7dGhpcy5fbWFwLm9mZigiZGJsY2xpY2siLHRoaXMuX29uRG91YmxlQ2xpY2ssdGhpcyl9LF9vbkRvdWJsZUNsaWNrOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX21hcCxpPWUuZ2V0Wm9vbSgpKyh0Lm9yaWdpbmFsRXZlbnQuc2hpZnRLZXk/LTE6MSk7ImNlbnRlciI9PT1lLm9wdGlvbnMuZG91YmxlQ2xpY2tab29tP2Uuc2V0Wm9vbShpKTplLnNldFpvb21Bcm91bmQodC5jb250YWluZXJQb2ludCxpKX19KSxvLk1hcC5hZGRJbml0SG9vaygiYWRkSGFuZGxlciIsImRvdWJsZUNsaWNrWm9vbSIsby5NYXAuRG91YmxlQ2xpY2tab29tKSxvLk1hcC5tZXJnZU9wdGlvbnMoe3Njcm9sbFdoZWVsWm9vbTohMH0pLG8uTWFwLlNjcm9sbFdoZWVsWm9vbT1vLkhhbmRsZXIuZXh0ZW5kKHthZGRIb29rczpmdW5jdGlvbigpe28uRG9tRXZlbnQub24odGhpcy5fbWFwLl9jb250YWluZXIsIm1vdXNld2hlZWwiLHRoaXMuX29uV2hlZWxTY3JvbGwsdGhpcyksby5Eb21FdmVudC5vbih0aGlzLl9tYXAuX2NvbnRhaW5lciwiTW96TW91c2VQaXhlbFNjcm9sbCIsby5Eb21FdmVudC5wcmV2ZW50RGVmYXVsdCksdGhpcy5fZGVsdGE9MH0scmVtb3ZlSG9va3M6ZnVuY3Rpb24oKXtvLkRvbUV2ZW50Lm9mZih0aGlzLl9tYXAuX2NvbnRhaW5lciwibW91c2V3aGVlbCIsdGhpcy5fb25XaGVlbFNjcm9sbCksby5Eb21FdmVudC5vZmYodGhpcy5fbWFwLl9jb250YWluZXIsIk1vek1vdXNlUGl4ZWxTY3JvbGwiLG8uRG9tRXZlbnQucHJldmVudERlZmF1bHQpfSxfb25XaGVlbFNjcm9sbDpmdW5jdGlvbih0KXt2YXIgZT1vLkRvbUV2ZW50LmdldFdoZWVsRGVsdGEodCk7dGhpcy5fZGVsdGErPWUsdGhpcy5fbGFzdE1vdXNlUG9zPXRoaXMuX21hcC5tb3VzZUV2ZW50VG9Db250YWluZXJQb2ludCh0KSx0aGlzLl9zdGFydFRpbWV8fCh0aGlzLl9zdGFydFRpbWU9K25ldyBEYXRlKTt2YXIgaT1NYXRoLm1heCg0MC0oK25ldyBEYXRlLXRoaXMuX3N0YXJ0VGltZSksMCk7Y2xlYXJUaW1lb3V0KHRoaXMuX3RpbWVyKSx0aGlzLl90aW1lcj1zZXRUaW1lb3V0KG8uYmluZCh0aGlzLl9wZXJmb3JtWm9vbSx0aGlzKSxpKSxvLkRvbUV2ZW50LnByZXZlbnREZWZhdWx0KHQpLG8uRG9tRXZlbnQuc3RvcFByb3BhZ2F0aW9uKHQpfSxfcGVyZm9ybVpvb206ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9tYXAsZT10aGlzLl9kZWx0YSxpPXQuZ2V0Wm9vbSgpO2U9ZT4wP01hdGguY2VpbChlKTpNYXRoLmZsb29yKGUpLGU9TWF0aC5tYXgoTWF0aC5taW4oZSw0KSwtNCksZT10Ll9saW1pdFpvb20oaStlKS1pLHRoaXMuX2RlbHRhPTAsdGhpcy5fc3RhcnRUaW1lPW51bGwsZSYmKCJjZW50ZXIiPT09dC5vcHRpb25zLnNjcm9sbFdoZWVsWm9vbT90LnNldFpvb20oaStlKTp0LnNldFpvb21Bcm91bmQodGhpcy5fbGFzdE1vdXNlUG9zLGkrZSkpfX0pLG8uTWFwLmFkZEluaXRIb29rKCJhZGRIYW5kbGVyIiwic2Nyb2xsV2hlZWxab29tIixvLk1hcC5TY3JvbGxXaGVlbFpvb20pLG8uZXh0ZW5kKG8uRG9tRXZlbnQse190b3VjaHN0YXJ0Om8uQnJvd3Nlci5tc1BvaW50ZXI/Ik1TUG9pbnRlckRvd24iOm8uQnJvd3Nlci5wb2ludGVyPyJwb2ludGVyZG93biI6InRvdWNoc3RhcnQiLF90b3VjaGVuZDpvLkJyb3dzZXIubXNQb2ludGVyPyJNU1BvaW50ZXJVcCI6by5Ccm93c2VyLnBvaW50ZXI/InBvaW50ZXJ1cCI6InRvdWNoZW5kIixhZGREb3VibGVUYXBMaXN0ZW5lcjpmdW5jdGlvbih0LGksbil7ZnVuY3Rpb24gcyh0KXt2YXIgZTtpZihvLkJyb3dzZXIucG9pbnRlcj8oXy5wdXNoKHQucG9pbnRlcklkKSxlPV8ubGVuZ3RoKTplPXQudG91Y2hlcy5sZW5ndGgsIShlPjEpKXt2YXIgaT1EYXRlLm5vdygpLG49aS0ocnx8aSk7aD10LnRvdWNoZXM/dC50b3VjaGVzWzBdOnQsbD1uPjAmJnU+PW4scj1pfX1mdW5jdGlvbiBhKHQpe2lmKG8uQnJvd3Nlci5wb2ludGVyKXt2YXIgZT1fLmluZGV4T2YodC5wb2ludGVySWQpO2lmKC0xPT09ZSlyZXR1cm47Xy5zcGxpY2UoZSwxKX1pZihsKXtpZihvLkJyb3dzZXIucG9pbnRlcil7dmFyIG4scz17fTtmb3IodmFyIGEgaW4gaCluPWhbYV0sc1thXT0iZnVuY3Rpb24iPT10eXBlb2Ygbj9uLmJpbmQoaCk6bjtoPXN9aC50eXBlPSJkYmxjbGljayIsaShoKSxyPW51bGx9fXZhciByLGgsbD0hMSx1PTI1MCxjPSJfbGVhZmxldF8iLGQ9dGhpcy5fdG91Y2hzdGFydCxwPXRoaXMuX3RvdWNoZW5kLF89W107dFtjK2Qrbl09cyx0W2MrcCtuXT1hO3ZhciBtPW8uQnJvd3Nlci5wb2ludGVyP2UuZG9jdW1lbnRFbGVtZW50OnQ7cmV0dXJuIHQuYWRkRXZlbnRMaXN0ZW5lcihkLHMsITEpLG0uYWRkRXZlbnRMaXN0ZW5lcihwLGEsITEpLG8uQnJvd3Nlci5wb2ludGVyJiZtLmFkZEV2ZW50TGlzdGVuZXIoby5Eb21FdmVudC5QT0lOVEVSX0NBTkNFTCxhLCExKSx0aGlzfSxyZW1vdmVEb3VibGVUYXBMaXN0ZW5lcjpmdW5jdGlvbih0LGkpe3ZhciBuPSJfbGVhZmxldF8iO3JldHVybiB0LnJlbW92ZUV2ZW50TGlzdGVuZXIodGhpcy5fdG91Y2hzdGFydCx0W24rdGhpcy5fdG91Y2hzdGFydCtpXSwhMSksKG8uQnJvd3Nlci5wb2ludGVyP2UuZG9jdW1lbnRFbGVtZW50OnQpLnJlbW92ZUV2ZW50TGlzdGVuZXIodGhpcy5fdG91Y2hlbmQsdFtuK3RoaXMuX3RvdWNoZW5kK2ldLCExKSxvLkJyb3dzZXIucG9pbnRlciYmZS5kb2N1bWVudEVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihvLkRvbUV2ZW50LlBPSU5URVJfQ0FOQ0VMLHRbbit0aGlzLl90b3VjaGVuZCtpXSwhMSksdGhpc319KSxvLmV4dGVuZChvLkRvbUV2ZW50LHtQT0lOVEVSX0RPV046by5Ccm93c2VyLm1zUG9pbnRlcj8iTVNQb2ludGVyRG93biI6InBvaW50ZXJkb3duIixQT0lOVEVSX01PVkU6by5Ccm93c2VyLm1zUG9pbnRlcj8iTVNQb2ludGVyTW92ZSI6InBvaW50ZXJtb3ZlIixQT0lOVEVSX1VQOm8uQnJvd3Nlci5tc1BvaW50ZXI/Ik1TUG9pbnRlclVwIjoicG9pbnRlcnVwIixQT0lOVEVSX0NBTkNFTDpvLkJyb3dzZXIubXNQb2ludGVyPyJNU1BvaW50ZXJDYW5jZWwiOiJwb2ludGVyY2FuY2VsIixfcG9pbnRlcnM6W10sX3BvaW50ZXJEb2N1bWVudExpc3RlbmVyOiExLGFkZFBvaW50ZXJMaXN0ZW5lcjpmdW5jdGlvbih0LGUsaSxuKXtzd2l0Y2goZSl7Y2FzZSJ0b3VjaHN0YXJ0IjpyZXR1cm4gdGhpcy5hZGRQb2ludGVyTGlzdGVuZXJTdGFydCh0LGUsaSxuKTtjYXNlInRvdWNoZW5kIjpyZXR1cm4gdGhpcy5hZGRQb2ludGVyTGlzdGVuZXJFbmQodCxlLGksbik7Y2FzZSJ0b3VjaG1vdmUiOnJldHVybiB0aGlzLmFkZFBvaW50ZXJMaXN0ZW5lck1vdmUodCxlLGksbik7ZGVmYXVsdDp0aHJvdyJVbmtub3duIHRvdWNoIGV2ZW50IHR5cGUifX0sYWRkUG9pbnRlckxpc3RlbmVyU3RhcnQ6ZnVuY3Rpb24odCxpLG4scyl7dmFyIGE9Il9sZWFmbGV0XyIscj10aGlzLl9wb2ludGVycyxoPWZ1bmN0aW9uKHQpe28uRG9tRXZlbnQucHJldmVudERlZmF1bHQodCk7Zm9yKHZhciBlPSExLGk9MDtpPHIubGVuZ3RoO2krKylpZihyW2ldLnBvaW50ZXJJZD09PXQucG9pbnRlcklkKXtlPSEwOwpicmVha31lfHxyLnB1c2godCksdC50b3VjaGVzPXIuc2xpY2UoKSx0LmNoYW5nZWRUb3VjaGVzPVt0XSxuKHQpfTtpZih0W2ErInRvdWNoc3RhcnQiK3NdPWgsdC5hZGRFdmVudExpc3RlbmVyKHRoaXMuUE9JTlRFUl9ET1dOLGgsITEpLCF0aGlzLl9wb2ludGVyRG9jdW1lbnRMaXN0ZW5lcil7dmFyIGw9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTA7ZTxyLmxlbmd0aDtlKyspaWYocltlXS5wb2ludGVySWQ9PT10LnBvaW50ZXJJZCl7ci5zcGxpY2UoZSwxKTticmVha319O2UuZG9jdW1lbnRFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIodGhpcy5QT0lOVEVSX1VQLGwsITEpLGUuZG9jdW1lbnRFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIodGhpcy5QT0lOVEVSX0NBTkNFTCxsLCExKSx0aGlzLl9wb2ludGVyRG9jdW1lbnRMaXN0ZW5lcj0hMH1yZXR1cm4gdGhpc30sYWRkUG9pbnRlckxpc3RlbmVyTW92ZTpmdW5jdGlvbih0LGUsaSxuKXtmdW5jdGlvbiBvKHQpe2lmKHQucG9pbnRlclR5cGUhPT10Lk1TUE9JTlRFUl9UWVBFX01PVVNFJiYibW91c2UiIT09dC5wb2ludGVyVHlwZXx8MCE9PXQuYnV0dG9ucyl7Zm9yKHZhciBlPTA7ZTxhLmxlbmd0aDtlKyspaWYoYVtlXS5wb2ludGVySWQ9PT10LnBvaW50ZXJJZCl7YVtlXT10O2JyZWFrfXQudG91Y2hlcz1hLnNsaWNlKCksdC5jaGFuZ2VkVG91Y2hlcz1bdF0saSh0KX19dmFyIHM9Il9sZWFmbGV0XyIsYT10aGlzLl9wb2ludGVycztyZXR1cm4gdFtzKyJ0b3VjaG1vdmUiK25dPW8sdC5hZGRFdmVudExpc3RlbmVyKHRoaXMuUE9JTlRFUl9NT1ZFLG8sITEpLHRoaXN9LGFkZFBvaW50ZXJMaXN0ZW5lckVuZDpmdW5jdGlvbih0LGUsaSxuKXt2YXIgbz0iX2xlYWZsZXRfIixzPXRoaXMuX3BvaW50ZXJzLGE9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTA7ZTxzLmxlbmd0aDtlKyspaWYoc1tlXS5wb2ludGVySWQ9PT10LnBvaW50ZXJJZCl7cy5zcGxpY2UoZSwxKTticmVha310LnRvdWNoZXM9cy5zbGljZSgpLHQuY2hhbmdlZFRvdWNoZXM9W3RdLGkodCl9O3JldHVybiB0W28rInRvdWNoZW5kIituXT1hLHQuYWRkRXZlbnRMaXN0ZW5lcih0aGlzLlBPSU5URVJfVVAsYSwhMSksdC5hZGRFdmVudExpc3RlbmVyKHRoaXMuUE9JTlRFUl9DQU5DRUwsYSwhMSksdGhpc30scmVtb3ZlUG9pbnRlckxpc3RlbmVyOmZ1bmN0aW9uKHQsZSxpKXt2YXIgbj0iX2xlYWZsZXRfIixvPXRbbitlK2ldO3N3aXRjaChlKXtjYXNlInRvdWNoc3RhcnQiOnQucmVtb3ZlRXZlbnRMaXN0ZW5lcih0aGlzLlBPSU5URVJfRE9XTixvLCExKTticmVhaztjYXNlInRvdWNobW92ZSI6dC5yZW1vdmVFdmVudExpc3RlbmVyKHRoaXMuUE9JTlRFUl9NT1ZFLG8sITEpO2JyZWFrO2Nhc2UidG91Y2hlbmQiOnQucmVtb3ZlRXZlbnRMaXN0ZW5lcih0aGlzLlBPSU5URVJfVVAsbywhMSksdC5yZW1vdmVFdmVudExpc3RlbmVyKHRoaXMuUE9JTlRFUl9DQU5DRUwsbywhMSl9cmV0dXJuIHRoaXN9fSksby5NYXAubWVyZ2VPcHRpb25zKHt0b3VjaFpvb206by5Ccm93c2VyLnRvdWNoJiYhby5Ccm93c2VyLmFuZHJvaWQyMyxib3VuY2VBdFpvb21MaW1pdHM6ITB9KSxvLk1hcC5Ub3VjaFpvb209by5IYW5kbGVyLmV4dGVuZCh7YWRkSG9va3M6ZnVuY3Rpb24oKXtvLkRvbUV2ZW50Lm9uKHRoaXMuX21hcC5fY29udGFpbmVyLCJ0b3VjaHN0YXJ0Iix0aGlzLl9vblRvdWNoU3RhcnQsdGhpcyl9LHJlbW92ZUhvb2tzOmZ1bmN0aW9uKCl7by5Eb21FdmVudC5vZmYodGhpcy5fbWFwLl9jb250YWluZXIsInRvdWNoc3RhcnQiLHRoaXMuX29uVG91Y2hTdGFydCx0aGlzKX0sX29uVG91Y2hTdGFydDpmdW5jdGlvbih0KXt2YXIgaT10aGlzLl9tYXA7aWYodC50b3VjaGVzJiYyPT09dC50b3VjaGVzLmxlbmd0aCYmIWkuX2FuaW1hdGluZ1pvb20mJiF0aGlzLl96b29taW5nKXt2YXIgbj1pLm1vdXNlRXZlbnRUb0xheWVyUG9pbnQodC50b3VjaGVzWzBdKSxzPWkubW91c2VFdmVudFRvTGF5ZXJQb2ludCh0LnRvdWNoZXNbMV0pLGE9aS5fZ2V0Q2VudGVyTGF5ZXJQb2ludCgpO3RoaXMuX3N0YXJ0Q2VudGVyPW4uYWRkKHMpLl9kaXZpZGVCeSgyKSx0aGlzLl9zdGFydERpc3Q9bi5kaXN0YW5jZVRvKHMpLHRoaXMuX21vdmVkPSExLHRoaXMuX3pvb21pbmc9ITAsdGhpcy5fY2VudGVyT2Zmc2V0PWEuc3VidHJhY3QodGhpcy5fc3RhcnRDZW50ZXIpLGkuX3BhbkFuaW0mJmkuX3BhbkFuaW0uc3RvcCgpLG8uRG9tRXZlbnQub24oZSwidG91Y2htb3ZlIix0aGlzLl9vblRvdWNoTW92ZSx0aGlzKS5vbihlLCJ0b3VjaGVuZCIsdGhpcy5fb25Ub3VjaEVuZCx0aGlzKSxvLkRvbUV2ZW50LnByZXZlbnREZWZhdWx0KHQpfX0sX29uVG91Y2hNb3ZlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX21hcDtpZih0LnRvdWNoZXMmJjI9PT10LnRvdWNoZXMubGVuZ3RoJiZ0aGlzLl96b29taW5nKXt2YXIgaT1lLm1vdXNlRXZlbnRUb0xheWVyUG9pbnQodC50b3VjaGVzWzBdKSxuPWUubW91c2VFdmVudFRvTGF5ZXJQb2ludCh0LnRvdWNoZXNbMV0pO3RoaXMuX3NjYWxlPWkuZGlzdGFuY2VUbyhuKS90aGlzLl9zdGFydERpc3QsdGhpcy5fZGVsdGE9aS5fYWRkKG4pLl9kaXZpZGVCeSgyKS5fc3VidHJhY3QodGhpcy5fc3RhcnRDZW50ZXIpLDEhPT10aGlzLl9zY2FsZSYmKGUub3B0aW9ucy5ib3VuY2VBdFpvb21MaW1pdHN8fCEoZS5nZXRab29tKCk9PT1lLmdldE1pblpvb20oKSYmdGhpcy5fc2NhbGU8MXx8ZS5nZXRab29tKCk9PT1lLmdldE1heFpvb20oKSYmdGhpcy5fc2NhbGU+MSkpJiYodGhpcy5fbW92ZWR8fChvLkRvbVV0aWwuYWRkQ2xhc3MoZS5fbWFwUGFuZSwibGVhZmxldC10b3VjaGluZyIpLGUuZmlyZSgibW92ZXN0YXJ0IikuZmlyZSgiem9vbXN0YXJ0IiksdGhpcy5fbW92ZWQ9ITApLG8uVXRpbC5jYW5jZWxBbmltRnJhbWUodGhpcy5fYW5pbVJlcXVlc3QpLHRoaXMuX2FuaW1SZXF1ZXN0PW8uVXRpbC5yZXF1ZXN0QW5pbUZyYW1lKHRoaXMuX3VwZGF0ZU9uTW92ZSx0aGlzLCEwLHRoaXMuX21hcC5fY29udGFpbmVyKSxvLkRvbUV2ZW50LnByZXZlbnREZWZhdWx0KHQpKX19LF91cGRhdGVPbk1vdmU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9tYXAsZT10aGlzLl9nZXRTY2FsZU9yaWdpbigpLGk9dC5sYXllclBvaW50VG9MYXRMbmcoZSksbj10LmdldFNjYWxlWm9vbSh0aGlzLl9zY2FsZSk7dC5fYW5pbWF0ZVpvb20oaSxuLHRoaXMuX3N0YXJ0Q2VudGVyLHRoaXMuX3NjYWxlLHRoaXMuX2RlbHRhLCExLCEwKX0sX29uVG91Y2hFbmQ6ZnVuY3Rpb24oKXtpZighdGhpcy5fbW92ZWR8fCF0aGlzLl96b29taW5nKXJldHVybiB2b2lkKHRoaXMuX3pvb21pbmc9ITEpO3ZhciB0PXRoaXMuX21hcDt0aGlzLl96b29taW5nPSExLG8uRG9tVXRpbC5yZW1vdmVDbGFzcyh0Ll9tYXBQYW5lLCJsZWFmbGV0LXRvdWNoaW5nIiksby5VdGlsLmNhbmNlbEFuaW1GcmFtZSh0aGlzLl9hbmltUmVxdWVzdCksby5Eb21FdmVudC5vZmYoZSwidG91Y2htb3ZlIix0aGlzLl9vblRvdWNoTW92ZSkub2ZmKGUsInRvdWNoZW5kIix0aGlzLl9vblRvdWNoRW5kKTt2YXIgaT10aGlzLl9nZXRTY2FsZU9yaWdpbigpLG49dC5sYXllclBvaW50VG9MYXRMbmcoaSkscz10LmdldFpvb20oKSxhPXQuZ2V0U2NhbGVab29tKHRoaXMuX3NjYWxlKS1zLHI9YT4wP01hdGguY2VpbChhKTpNYXRoLmZsb29yKGEpLGg9dC5fbGltaXRab29tKHMrciksbD10LmdldFpvb21TY2FsZShoKS90aGlzLl9zY2FsZTt0Ll9hbmltYXRlWm9vbShuLGgsaSxsKX0sX2dldFNjYWxlT3JpZ2luOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fY2VudGVyT2Zmc2V0LnN1YnRyYWN0KHRoaXMuX2RlbHRhKS5kaXZpZGVCeSh0aGlzLl9zY2FsZSk7cmV0dXJuIHRoaXMuX3N0YXJ0Q2VudGVyLmFkZCh0KX19KSxvLk1hcC5hZGRJbml0SG9vaygiYWRkSGFuZGxlciIsInRvdWNoWm9vbSIsby5NYXAuVG91Y2hab29tKSxvLk1hcC5tZXJnZU9wdGlvbnMoe3RhcDohMCx0YXBUb2xlcmFuY2U6MTV9KSxvLk1hcC5UYXA9by5IYW5kbGVyLmV4dGVuZCh7YWRkSG9va3M6ZnVuY3Rpb24oKXtvLkRvbUV2ZW50Lm9uKHRoaXMuX21hcC5fY29udGFpbmVyLCJ0b3VjaHN0YXJ0Iix0aGlzLl9vbkRvd24sdGhpcyl9LHJlbW92ZUhvb2tzOmZ1bmN0aW9uKCl7by5Eb21FdmVudC5vZmYodGhpcy5fbWFwLl9jb250YWluZXIsInRvdWNoc3RhcnQiLHRoaXMuX29uRG93bix0aGlzKX0sX29uRG93bjpmdW5jdGlvbih0KXtpZih0LnRvdWNoZXMpe2lmKG8uRG9tRXZlbnQucHJldmVudERlZmF1bHQodCksdGhpcy5fZmlyZUNsaWNrPSEwLHQudG91Y2hlcy5sZW5ndGg+MSlyZXR1cm4gdGhpcy5fZmlyZUNsaWNrPSExLHZvaWQgY2xlYXJUaW1lb3V0KHRoaXMuX2hvbGRUaW1lb3V0KTt2YXIgaT10LnRvdWNoZXNbMF0sbj1pLnRhcmdldDt0aGlzLl9zdGFydFBvcz10aGlzLl9uZXdQb3M9bmV3IG8uUG9pbnQoaS5jbGllbnRYLGkuY2xpZW50WSksbi50YWdOYW1lJiYiYSI9PT1uLnRhZ05hbWUudG9Mb3dlckNhc2UoKSYmby5Eb21VdGlsLmFkZENsYXNzKG4sImxlYWZsZXQtYWN0aXZlIiksdGhpcy5faG9sZFRpbWVvdXQ9c2V0VGltZW91dChvLmJpbmQoZnVuY3Rpb24oKXt0aGlzLl9pc1RhcFZhbGlkKCkmJih0aGlzLl9maXJlQ2xpY2s9ITEsdGhpcy5fb25VcCgpLHRoaXMuX3NpbXVsYXRlRXZlbnQoImNvbnRleHRtZW51IixpKSl9LHRoaXMpLDFlMyksby5Eb21FdmVudC5vbihlLCJ0b3VjaG1vdmUiLHRoaXMuX29uTW92ZSx0aGlzKS5vbihlLCJ0b3VjaGVuZCIsdGhpcy5fb25VcCx0aGlzKX19LF9vblVwOmZ1bmN0aW9uKHQpe2lmKGNsZWFyVGltZW91dCh0aGlzLl9ob2xkVGltZW91dCksby5Eb21FdmVudC5vZmYoZSwidG91Y2htb3ZlIix0aGlzLl9vbk1vdmUsdGhpcykub2ZmKGUsInRvdWNoZW5kIix0aGlzLl9vblVwLHRoaXMpLHRoaXMuX2ZpcmVDbGljayYmdCYmdC5jaGFuZ2VkVG91Y2hlcyl7dmFyIGk9dC5jaGFuZ2VkVG91Y2hlc1swXSxuPWkudGFyZ2V0O24mJm4udGFnTmFtZSYmImEiPT09bi50YWdOYW1lLnRvTG93ZXJDYXNlKCkmJm8uRG9tVXRpbC5yZW1vdmVDbGFzcyhuLCJsZWFmbGV0LWFjdGl2ZSIpLHRoaXMuX2lzVGFwVmFsaWQoKSYmdGhpcy5fc2ltdWxhdGVFdmVudCgiY2xpY2siLGkpfX0sX2lzVGFwVmFsaWQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbmV3UG9zLmRpc3RhbmNlVG8odGhpcy5fc3RhcnRQb3MpPD10aGlzLl9tYXAub3B0aW9ucy50YXBUb2xlcmFuY2V9LF9vbk1vdmU6ZnVuY3Rpb24odCl7dmFyIGU9dC50b3VjaGVzWzBdO3RoaXMuX25ld1Bvcz1uZXcgby5Qb2ludChlLmNsaWVudFgsZS5jbGllbnRZKX0sX3NpbXVsYXRlRXZlbnQ6ZnVuY3Rpb24oaSxuKXt2YXIgbz1lLmNyZWF0ZUV2ZW50KCJNb3VzZUV2ZW50cyIpO28uX3NpbXVsYXRlZD0hMCxuLnRhcmdldC5fc2ltdWxhdGVkQ2xpY2s9ITAsby5pbml0TW91c2VFdmVudChpLCEwLCEwLHQsMSxuLnNjcmVlblgsbi5zY3JlZW5ZLG4uY2xpZW50WCxuLmNsaWVudFksITEsITEsITEsITEsMCxudWxsKSxuLnRhcmdldC5kaXNwYXRjaEV2ZW50KG8pfX0pLG8uQnJvd3Nlci50b3VjaCYmIW8uQnJvd3Nlci5wb2ludGVyJiZvLk1hcC5hZGRJbml0SG9vaygiYWRkSGFuZGxlciIsInRhcCIsby5NYXAuVGFwKSxvLk1hcC5tZXJnZU9wdGlvbnMoe2JveFpvb206ITB9KSxvLk1hcC5Cb3hab29tPW8uSGFuZGxlci5leHRlbmQoe2luaXRpYWxpemU6ZnVuY3Rpb24odCl7dGhpcy5fbWFwPXQsdGhpcy5fY29udGFpbmVyPXQuX2NvbnRhaW5lcix0aGlzLl9wYW5lPXQuX3BhbmVzLm92ZXJsYXlQYW5lLHRoaXMuX21vdmVkPSExfSxhZGRIb29rczpmdW5jdGlvbigpe28uRG9tRXZlbnQub24odGhpcy5fY29udGFpbmVyLCJtb3VzZWRvd24iLHRoaXMuX29uTW91c2VEb3duLHRoaXMpfSxyZW1vdmVIb29rczpmdW5jdGlvbigpe28uRG9tRXZlbnQub2ZmKHRoaXMuX2NvbnRhaW5lciwibW91c2Vkb3duIix0aGlzLl9vbk1vdXNlRG93biksdGhpcy5fbW92ZWQ9ITF9LG1vdmVkOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX21vdmVkfSxfb25Nb3VzZURvd246ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX21vdmVkPSExLCF0LnNoaWZ0S2V5fHwxIT09dC53aGljaCYmMSE9PXQuYnV0dG9uPyExOihvLkRvbVV0aWwuZGlzYWJsZVRleHRTZWxlY3Rpb24oKSxvLkRvbVV0aWwuZGlzYWJsZUltYWdlRHJhZygpLHRoaXMuX3N0YXJ0TGF5ZXJQb2ludD10aGlzLl9tYXAubW91c2VFdmVudFRvTGF5ZXJQb2ludCh0KSx2b2lkIG8uRG9tRXZlbnQub24oZSwibW91c2Vtb3ZlIix0aGlzLl9vbk1vdXNlTW92ZSx0aGlzKS5vbihlLCJtb3VzZXVwIix0aGlzLl9vbk1vdXNlVXAsdGhpcykub24oZSwia2V5ZG93biIsdGhpcy5fb25LZXlEb3duLHRoaXMpKX0sX29uTW91c2VNb3ZlOmZ1bmN0aW9uKHQpe3RoaXMuX21vdmVkfHwodGhpcy5fYm94PW8uRG9tVXRpbC5jcmVhdGUoImRpdiIsImxlYWZsZXQtem9vbS1ib3giLHRoaXMuX3BhbmUpLG8uRG9tVXRpbC5zZXRQb3NpdGlvbih0aGlzLl9ib3gsdGhpcy5fc3RhcnRMYXllclBvaW50KSx0aGlzLl9jb250YWluZXIuc3R5bGUuY3Vyc29yPSJjcm9zc2hhaXIiLHRoaXMuX21hcC5maXJlKCJib3h6b29tc3RhcnQiKSk7dmFyIGU9dGhpcy5fc3RhcnRMYXllclBvaW50LGk9dGhpcy5fYm94LG49dGhpcy5fbWFwLm1vdXNlRXZlbnRUb0xheWVyUG9pbnQodCkscz1uLnN1YnRyYWN0KGUpLGE9bmV3IG8uUG9pbnQoTWF0aC5taW4obi54LGUueCksTWF0aC5taW4obi55LGUueSkpO28uRG9tVXRpbC5zZXRQb3NpdGlvbihpLGEpLHRoaXMuX21vdmVkPSEwLGkuc3R5bGUud2lkdGg9TWF0aC5tYXgoMCxNYXRoLmFicyhzLngpLTQpKyJweCIsaS5zdHlsZS5oZWlnaHQ9TWF0aC5tYXgoMCxNYXRoLmFicyhzLnkpLTQpKyJweCJ9LF9maW5pc2g6ZnVuY3Rpb24oKXt0aGlzLl9tb3ZlZCYmKHRoaXMuX3BhbmUucmVtb3ZlQ2hpbGQodGhpcy5fYm94KSx0aGlzLl9jb250YWluZXIuc3R5bGUuY3Vyc29yPSIiKSxvLkRvbVV0aWwuZW5hYmxlVGV4dFNlbGVjdGlvbigpLG8uRG9tVXRpbC5lbmFibGVJbWFnZURyYWcoKSxvLkRvbUV2ZW50Lm9mZihlLCJtb3VzZW1vdmUiLHRoaXMuX29uTW91c2VNb3ZlKS5vZmYoZSwibW91c2V1cCIsdGhpcy5fb25Nb3VzZVVwKS5vZmYoZSwia2V5ZG93biIsdGhpcy5fb25LZXlEb3duKX0sX29uTW91c2VVcDpmdW5jdGlvbih0KXt0aGlzLl9maW5pc2goKTt2YXIgZT10aGlzLl9tYXAsaT1lLm1vdXNlRXZlbnRUb0xheWVyUG9pbnQodCk7aWYoIXRoaXMuX3N0YXJ0TGF5ZXJQb2ludC5lcXVhbHMoaSkpe3ZhciBuPW5ldyBvLkxhdExuZ0JvdW5kcyhlLmxheWVyUG9pbnRUb0xhdExuZyh0aGlzLl9zdGFydExheWVyUG9pbnQpLGUubGF5ZXJQb2ludFRvTGF0TG5nKGkpKTtlLmZpdEJvdW5kcyhuKSxlLmZpcmUoImJveHpvb21lbmQiLHtib3hab29tQm91bmRzOm59KX19LF9vbktleURvd246ZnVuY3Rpb24odCl7Mjc9PT10LmtleUNvZGUmJnRoaXMuX2ZpbmlzaCgpfX0pLG8uTWFwLmFkZEluaXRIb29rKCJhZGRIYW5kbGVyIiwiYm94Wm9vbSIsby5NYXAuQm94Wm9vbSksby5NYXAubWVyZ2VPcHRpb25zKHtrZXlib2FyZDohMCxrZXlib2FyZFBhbk9mZnNldDo4MCxrZXlib2FyZFpvb21PZmZzZXQ6MX0pLG8uTWFwLktleWJvYXJkPW8uSGFuZGxlci5leHRlbmQoe2tleUNvZGVzOntsZWZ0OlszN10scmlnaHQ6WzM5XSxkb3duOls0MF0sdXA6WzM4XSx6b29tSW46WzE4NywxMDcsNjEsMTcxXSx6b29tT3V0OlsxODksMTA5LDE3M119LGluaXRpYWxpemU6ZnVuY3Rpb24odCl7dGhpcy5fbWFwPXQsdGhpcy5fc2V0UGFuT2Zmc2V0KHQub3B0aW9ucy5rZXlib2FyZFBhbk9mZnNldCksdGhpcy5fc2V0Wm9vbU9mZnNldCh0Lm9wdGlvbnMua2V5Ym9hcmRab29tT2Zmc2V0KX0sYWRkSG9va3M6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9tYXAuX2NvbnRhaW5lcjstMT09PXQudGFiSW5kZXgmJih0LnRhYkluZGV4PSIwIiksby5Eb21FdmVudC5vbih0LCJmb2N1cyIsdGhpcy5fb25Gb2N1cyx0aGlzKS5vbih0LCJibHVyIix0aGlzLl9vbkJsdXIsdGhpcykub24odCwibW91c2Vkb3duIix0aGlzLl9vbk1vdXNlRG93bix0aGlzKSx0aGlzLl9tYXAub24oImZvY3VzIix0aGlzLl9hZGRIb29rcyx0aGlzKS5vbigiYmx1ciIsdGhpcy5fcmVtb3ZlSG9va3MsdGhpcyl9LHJlbW92ZUhvb2tzOmZ1bmN0aW9uKCl7dGhpcy5fcmVtb3ZlSG9va3MoKTt2YXIgdD10aGlzLl9tYXAuX2NvbnRhaW5lcjtvLkRvbUV2ZW50Lm9mZih0LCJmb2N1cyIsdGhpcy5fb25Gb2N1cyx0aGlzKS5vZmYodCwiYmx1ciIsdGhpcy5fb25CbHVyLHRoaXMpLm9mZih0LCJtb3VzZWRvd24iLHRoaXMuX29uTW91c2VEb3duLHRoaXMpLHRoaXMuX21hcC5vZmYoImZvY3VzIix0aGlzLl9hZGRIb29rcyx0aGlzKS5vZmYoImJsdXIiLHRoaXMuX3JlbW92ZUhvb2tzLHRoaXMpfSxfb25Nb3VzZURvd246ZnVuY3Rpb24oKXtpZighdGhpcy5fZm9jdXNlZCl7dmFyIGk9ZS5ib2R5LG49ZS5kb2N1bWVudEVsZW1lbnQsbz1pLnNjcm9sbFRvcHx8bi5zY3JvbGxUb3Ascz1pLnNjcm9sbExlZnR8fG4uc2Nyb2xsTGVmdDt0aGlzLl9tYXAuX2NvbnRhaW5lci5mb2N1cygpLHQuc2Nyb2xsVG8ocyxvKX19LF9vbkZvY3VzOmZ1bmN0aW9uKCl7dGhpcy5fZm9jdXNlZD0hMCx0aGlzLl9tYXAuZmlyZSgiZm9jdXMiKX0sX29uQmx1cjpmdW5jdGlvbigpe3RoaXMuX2ZvY3VzZWQ9ITEsdGhpcy5fbWFwLmZpcmUoImJsdXIiKX0sX3NldFBhbk9mZnNldDpmdW5jdGlvbih0KXt2YXIgZSxpLG49dGhpcy5fcGFuS2V5cz17fSxvPXRoaXMua2V5Q29kZXM7Zm9yKGU9MCxpPW8ubGVmdC5sZW5ndGg7aT5lO2UrKyluW28ubGVmdFtlXV09Wy0xKnQsMF07Zm9yKGU9MCxpPW8ucmlnaHQubGVuZ3RoO2k+ZTtlKyspbltvLnJpZ2h0W2VdXT1bdCwwXTtmb3IoZT0wLGk9by5kb3duLmxlbmd0aDtpPmU7ZSsrKW5bby5kb3duW2VdXT1bMCx0XTtmb3IoZT0wLGk9by51cC5sZW5ndGg7aT5lO2UrKyluW28udXBbZV1dPVswLC0xKnRdfSxfc2V0Wm9vbU9mZnNldDpmdW5jdGlvbih0KXt2YXIgZSxpLG49dGhpcy5fem9vbUtleXM9e30sbz10aGlzLmtleUNvZGVzO2ZvcihlPTAsaT1vLnpvb21Jbi5sZW5ndGg7aT5lO2UrKyluW28uem9vbUluW2VdXT10O2ZvcihlPTAsaT1vLnpvb21PdXQubGVuZ3RoO2k+ZTtlKyspbltvLnpvb21PdXRbZV1dPS10fSxfYWRkSG9va3M6ZnVuY3Rpb24oKXtvLkRvbUV2ZW50Lm9uKGUsImtleWRvd24iLHRoaXMuX29uS2V5RG93bix0aGlzKX0sX3JlbW92ZUhvb2tzOmZ1bmN0aW9uKCl7by5Eb21FdmVudC5vZmYoZSwia2V5ZG93biIsdGhpcy5fb25LZXlEb3duLHRoaXMpfSxfb25LZXlEb3duOmZ1bmN0aW9uKHQpe3ZhciBlPXQua2V5Q29kZSxpPXRoaXMuX21hcDtpZihlIGluIHRoaXMuX3BhbktleXMpe2lmKGkuX3BhbkFuaW0mJmkuX3BhbkFuaW0uX2luUHJvZ3Jlc3MpcmV0dXJuO2kucGFuQnkodGhpcy5fcGFuS2V5c1tlXSksaS5vcHRpb25zLm1heEJvdW5kcyYmaS5wYW5JbnNpZGVCb3VuZHMoaS5vcHRpb25zLm1heEJvdW5kcyl9ZWxzZXtpZighKGUgaW4gdGhpcy5fem9vbUtleXMpKXJldHVybjtpLnNldFpvb20oaS5nZXRab29tKCkrdGhpcy5fem9vbUtleXNbZV0pfW8uRG9tRXZlbnQuc3RvcCh0KX19KSxvLk1hcC5hZGRJbml0SG9vaygiYWRkSGFuZGxlciIsImtleWJvYXJkIixvLk1hcC5LZXlib2FyZCksby5IYW5kbGVyLk1hcmtlckRyYWc9by5IYW5kbGVyLmV4dGVuZCh7aW5pdGlhbGl6ZTpmdW5jdGlvbih0KXt0aGlzLl9tYXJrZXI9dH0sYWRkSG9va3M6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9tYXJrZXIuX2ljb247dGhpcy5fZHJhZ2dhYmxlfHwodGhpcy5fZHJhZ2dhYmxlPW5ldyBvLkRyYWdnYWJsZSh0LHQpKSx0aGlzLl9kcmFnZ2FibGUub24oImRyYWdzdGFydCIsdGhpcy5fb25EcmFnU3RhcnQsdGhpcykub24oImRyYWciLHRoaXMuX29uRHJhZyx0aGlzKS5vbigiZHJhZ2VuZCIsdGhpcy5fb25EcmFnRW5kLHRoaXMpLHRoaXMuX2RyYWdnYWJsZS5lbmFibGUoKSxvLkRvbVV0aWwuYWRkQ2xhc3ModGhpcy5fbWFya2VyLl9pY29uLCJsZWFmbGV0LW1hcmtlci1kcmFnZ2FibGUiKX0scmVtb3ZlSG9va3M6ZnVuY3Rpb24oKXt0aGlzLl9kcmFnZ2FibGUub2ZmKCJkcmFnc3RhcnQiLHRoaXMuX29uRHJhZ1N0YXJ0LHRoaXMpLm9mZigiZHJhZyIsdGhpcy5fb25EcmFnLHRoaXMpLm9mZigiZHJhZ2VuZCIsdGhpcy5fb25EcmFnRW5kLHRoaXMpLHRoaXMuX2RyYWdnYWJsZS5kaXNhYmxlKCksby5Eb21VdGlsLnJlbW92ZUNsYXNzKHRoaXMuX21hcmtlci5faWNvbiwibGVhZmxldC1tYXJrZXItZHJhZ2dhYmxlIil9LG1vdmVkOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2RyYWdnYWJsZSYmdGhpcy5fZHJhZ2dhYmxlLl9tb3ZlZH0sX29uRHJhZ1N0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbWFya2VyLmNsb3NlUG9wdXAoKS5maXJlKCJtb3Zlc3RhcnQiKS5maXJlKCJkcmFnc3RhcnQiKX0sX29uRHJhZzpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX21hcmtlcixlPXQuX3NoYWRvdyxpPW8uRG9tVXRpbC5nZXRQb3NpdGlvbih0Ll9pY29uKSxuPXQuX21hcC5sYXllclBvaW50VG9MYXRMbmcoaSk7ZSYmby5Eb21VdGlsLnNldFBvc2l0aW9uKGUsaSksdC5fbGF0bG5nPW4sdC5maXJlKCJtb3ZlIix7bGF0bG5nOm59KS5maXJlKCJkcmFnIil9LF9vbkRyYWdFbmQ6ZnVuY3Rpb24odCl7dGhpcy5fbWFya2VyLmZpcmUoIm1vdmVlbmQiKS5maXJlKCJkcmFnZW5kIix0KX19KSxvLkNvbnRyb2w9by5DbGFzcy5leHRlbmQoe29wdGlvbnM6e3Bvc2l0aW9uOiJ0b3ByaWdodCJ9LGluaXRpYWxpemU6ZnVuY3Rpb24odCl7by5zZXRPcHRpb25zKHRoaXMsdCl9LGdldFBvc2l0aW9uOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub3B0aW9ucy5wb3NpdGlvbn0sc2V0UG9zaXRpb246ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fbWFwO3JldHVybiBlJiZlLnJlbW92ZUNvbnRyb2wodGhpcyksdGhpcy5vcHRpb25zLnBvc2l0aW9uPXQsZSYmZS5hZGRDb250cm9sKHRoaXMpLHRoaXN9LGdldENvbnRhaW5lcjpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9jb250YWluZXJ9LGFkZFRvOmZ1bmN0aW9uKHQpe3RoaXMuX21hcD10O3ZhciBlPXRoaXMuX2NvbnRhaW5lcj10aGlzLm9uQWRkKHQpLGk9dGhpcy5nZXRQb3NpdGlvbigpLG49dC5fY29udHJvbENvcm5lcnNbaV07cmV0dXJuIG8uRG9tVXRpbC5hZGRDbGFzcyhlLCJsZWFmbGV0LWNvbnRyb2wiKSwtMSE9PWkuaW5kZXhPZigiYm90dG9tIik/bi5pbnNlcnRCZWZvcmUoZSxuLmZpcnN0Q2hpbGQpOm4uYXBwZW5kQ2hpbGQoZSksdGhpc30scmVtb3ZlRnJvbTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLmdldFBvc2l0aW9uKCksaT10Ll9jb250cm9sQ29ybmVyc1tlXTtyZXR1cm4gaS5yZW1vdmVDaGlsZCh0aGlzLl9jb250YWluZXIpLHRoaXMuX21hcD1udWxsLHRoaXMub25SZW1vdmUmJnRoaXMub25SZW1vdmUodCksdGhpc30sX3JlZm9jdXNPbk1hcDpmdW5jdGlvbigpe3RoaXMuX21hcCYmdGhpcy5fbWFwLmdldENvbnRhaW5lcigpLmZvY3VzKCl9fSksby5jb250cm9sPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgby5Db250cm9sKHQpfSxvLk1hcC5pbmNsdWRlKHthZGRDb250cm9sOmZ1bmN0aW9uKHQpe3JldHVybiB0LmFkZFRvKHRoaXMpLHRoaXN9LHJlbW92ZUNvbnRyb2w6ZnVuY3Rpb24odCl7cmV0dXJuIHQucmVtb3ZlRnJvbSh0aGlzKSx0aGlzfSxfaW5pdENvbnRyb2xQb3M6ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQscyl7dmFyIGE9aSt0KyIgIitpK3M7ZVt0K3NdPW8uRG9tVXRpbC5jcmVhdGUoImRpdiIsYSxuKX12YXIgZT10aGlzLl9jb250cm9sQ29ybmVycz17fSxpPSJsZWFmbGV0LSIsbj10aGlzLl9jb250cm9sQ29udGFpbmVyPW8uRG9tVXRpbC5jcmVhdGUoImRpdiIsaSsiY29udHJvbC1jb250YWluZXIiLHRoaXMuX2NvbnRhaW5lcik7dCgidG9wIiwibGVmdCIpLHQoInRvcCIsInJpZ2h0IiksdCgiYm90dG9tIiwibGVmdCIpLHQoImJvdHRvbSIsInJpZ2h0Iil9LF9jbGVhckNvbnRyb2xQb3M6ZnVuY3Rpb24oKXt0aGlzLl9jb250YWluZXIucmVtb3ZlQ2hpbGQodGhpcy5fY29udHJvbENvbnRhaW5lcil9fSksby5Db250cm9sLlpvb209by5Db250cm9sLmV4dGVuZCh7b3B0aW9uczp7cG9zaXRpb246InRvcGxlZnQiLHpvb21JblRleHQ6IisiLHpvb21JblRpdGxlOiJab29tIGluIix6b29tT3V0VGV4dDoiLSIsem9vbU91dFRpdGxlOiJab29tIG91dCJ9LG9uQWRkOmZ1bmN0aW9uKHQpe3ZhciBlPSJsZWFmbGV0LWNvbnRyb2wtem9vbSIsaT1vLkRvbVV0aWwuY3JlYXRlKCJkaXYiLGUrIiBsZWFmbGV0LWJhciIpO3JldHVybiB0aGlzLl9tYXA9dCx0aGlzLl96b29tSW5CdXR0b249dGhpcy5fY3JlYXRlQnV0dG9uKHRoaXMub3B0aW9ucy56b29tSW5UZXh0LHRoaXMub3B0aW9ucy56b29tSW5UaXRsZSxlKyItaW4iLGksdGhpcy5fem9vbUluLHRoaXMpLHRoaXMuX3pvb21PdXRCdXR0b249dGhpcy5fY3JlYXRlQnV0dG9uKHRoaXMub3B0aW9ucy56b29tT3V0VGV4dCx0aGlzLm9wdGlvbnMuem9vbU91dFRpdGxlLGUrIi1vdXQiLGksdGhpcy5fem9vbU91dCx0aGlzKSx0aGlzLl91cGRhdGVEaXNhYmxlZCgpLHQub24oInpvb21lbmQgem9vbWxldmVsc2NoYW5nZSIsdGhpcy5fdXBkYXRlRGlzYWJsZWQsdGhpcyksaX0sb25SZW1vdmU6ZnVuY3Rpb24odCl7dC5vZmYoInpvb21lbmQgem9vbWxldmVsc2NoYW5nZSIsdGhpcy5fdXBkYXRlRGlzYWJsZWQsdGhpcyl9LF96b29tSW46ZnVuY3Rpb24odCl7dGhpcy5fbWFwLnpvb21Jbih0LnNoaWZ0S2V5PzM6MSl9LF96b29tT3V0OmZ1bmN0aW9uKHQpe3RoaXMuX21hcC56b29tT3V0KHQuc2hpZnRLZXk/MzoxKX0sX2NyZWF0ZUJ1dHRvbjpmdW5jdGlvbih0LGUsaSxuLHMsYSl7dmFyIHI9by5Eb21VdGlsLmNyZWF0ZSgiYSIsaSxuKTtyLmlubmVySFRNTD10LHIuaHJlZj0iIyIsci50aXRsZT1lO3ZhciBoPW8uRG9tRXZlbnQuc3RvcFByb3BhZ2F0aW9uO3JldHVybiBvLkRvbUV2ZW50Lm9uKHIsImNsaWNrIixoKS5vbihyLCJtb3VzZWRvd24iLGgpLm9uKHIsImRibGNsaWNrIixoKS5vbihyLCJjbGljayIsby5Eb21FdmVudC5wcmV2ZW50RGVmYXVsdCkub24ociwiY2xpY2siLHMsYSkub24ociwiY2xpY2siLHRoaXMuX3JlZm9jdXNPbk1hcCxhKSxyfSxfdXBkYXRlRGlzYWJsZWQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9tYXAsZT0ibGVhZmxldC1kaXNhYmxlZCI7by5Eb21VdGlsLnJlbW92ZUNsYXNzKHRoaXMuX3pvb21JbkJ1dHRvbixlKSxvLkRvbVV0aWwucmVtb3ZlQ2xhc3ModGhpcy5fem9vbU91dEJ1dHRvbixlKSx0Ll96b29tPT09dC5nZXRNaW5ab29tKCkmJm8uRG9tVXRpbC5hZGRDbGFzcyh0aGlzLl96b29tT3V0QnV0dG9uLGUpLHQuX3pvb209PT10LmdldE1heFpvb20oKSYmby5Eb21VdGlsLmFkZENsYXNzKHRoaXMuX3pvb21JbkJ1dHRvbixlKX19KSxvLk1hcC5tZXJnZU9wdGlvbnMoe3pvb21Db250cm9sOiEwfSksby5NYXAuYWRkSW5pdEhvb2soZnVuY3Rpb24oKXt0aGlzLm9wdGlvbnMuem9vbUNvbnRyb2wmJih0aGlzLnpvb21Db250cm9sPW5ldyBvLkNvbnRyb2wuWm9vbSx0aGlzLmFkZENvbnRyb2wodGhpcy56b29tQ29udHJvbCkpfSksby5jb250cm9sLnpvb209ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBvLkNvbnRyb2wuWm9vbSh0KX0sby5Db250cm9sLkF0dHJpYnV0aW9uPW8uQ29udHJvbC5leHRlbmQoe29wdGlvbnM6e3Bvc2l0aW9uOiJib3R0b21yaWdodCIscHJlZml4Oic8YSBocmVmPSJodHRwOi8vbGVhZmxldGpzLmNvbSIgdGl0bGU9IkEgSlMgbGlicmFyeSBmb3IgaW50ZXJhY3RpdmUgbWFwcyI+TGVhZmxldDwvYT4nfSxpbml0aWFsaXplOmZ1bmN0aW9uKHQpe28uc2V0T3B0aW9ucyh0aGlzLHQpLHRoaXMuX2F0dHJpYnV0aW9ucz17fX0sb25BZGQ6ZnVuY3Rpb24odCl7dGhpcy5fY29udGFpbmVyPW8uRG9tVXRpbC5jcmVhdGUoImRpdiIsImxlYWZsZXQtY29udHJvbC1hdHRyaWJ1dGlvbiIpLG8uRG9tRXZlbnQuZGlzYWJsZUNsaWNrUHJvcGFnYXRpb24odGhpcy5fY29udGFpbmVyKTtmb3IodmFyIGUgaW4gdC5fbGF5ZXJzKXQuX2xheWVyc1tlXS5nZXRBdHRyaWJ1dGlvbiYmdGhpcy5hZGRBdHRyaWJ1dGlvbih0Ll9sYXllcnNbZV0uZ2V0QXR0cmlidXRpb24oKSk7cmV0dXJuIHQub24oImxheWVyYWRkIix0aGlzLl9vbkxheWVyQWRkLHRoaXMpLm9uKCJsYXllcnJlbW92ZSIsdGhpcy5fb25MYXllclJlbW92ZSx0aGlzKSx0aGlzLl91cGRhdGUoKSx0aGlzLl9jb250YWluZXJ9LG9uUmVtb3ZlOmZ1bmN0aW9uKHQpe3Qub2ZmKCJsYXllcmFkZCIsdGhpcy5fb25MYXllckFkZCkub2ZmKCJsYXllcnJlbW92ZSIsdGhpcy5fb25MYXllclJlbW92ZSl9LHNldFByZWZpeDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5vcHRpb25zLnByZWZpeD10LHRoaXMuX3VwZGF0ZSgpLHRoaXN9LGFkZEF0dHJpYnV0aW9uOmZ1bmN0aW9uKHQpe3JldHVybiB0Pyh0aGlzLl9hdHRyaWJ1dGlvbnNbdF18fCh0aGlzLl9hdHRyaWJ1dGlvbnNbdF09MCksdGhpcy5fYXR0cmlidXRpb25zW3RdKyssdGhpcy5fdXBkYXRlKCksdGhpcyk6dm9pZCAwfSxyZW1vdmVBdHRyaWJ1dGlvbjpmdW5jdGlvbih0KXtyZXR1cm4gdD8odGhpcy5fYXR0cmlidXRpb25zW3RdJiYodGhpcy5fYXR0cmlidXRpb25zW3RdLS0sdGhpcy5fdXBkYXRlKCkpLHRoaXMpOnZvaWQgMH0sX3VwZGF0ZTpmdW5jdGlvbigpe2lmKHRoaXMuX21hcCl7dmFyIHQ9W107Zm9yKHZhciBlIGluIHRoaXMuX2F0dHJpYnV0aW9ucyl0aGlzLl9hdHRyaWJ1dGlvbnNbZV0mJnQucHVzaChlKTt2YXIgaT1bXTt0aGlzLm9wdGlvbnMucHJlZml4JiZpLnB1c2godGhpcy5vcHRpb25zLnByZWZpeCksdC5sZW5ndGgmJmkucHVzaCh0LmpvaW4oIiwgIikpLHRoaXMuX2NvbnRhaW5lci5pbm5lckhUTUw9aS5qb2luKCIgfCAiKX19LF9vbkxheWVyQWRkOmZ1bmN0aW9uKHQpe3QubGF5ZXIuZ2V0QXR0cmlidXRpb24mJnRoaXMuYWRkQXR0cmlidXRpb24odC5sYXllci5nZXRBdHRyaWJ1dGlvbigpKX0sX29uTGF5ZXJSZW1vdmU6ZnVuY3Rpb24odCl7dC5sYXllci5nZXRBdHRyaWJ1dGlvbiYmdGhpcy5yZW1vdmVBdHRyaWJ1dGlvbih0LmxheWVyLmdldEF0dHJpYnV0aW9uKCkpfX0pLG8uTWFwLm1lcmdlT3B0aW9ucyh7YXR0cmlidXRpb25Db250cm9sOiEwfSksby5NYXAuYWRkSW5pdEhvb2soZnVuY3Rpb24oKXt0aGlzLm9wdGlvbnMuYXR0cmlidXRpb25Db250cm9sJiYodGhpcy5hdHRyaWJ1dGlvbkNvbnRyb2w9KG5ldyBvLkNvbnRyb2wuQXR0cmlidXRpb24pLmFkZFRvKHRoaXMpKX0pLG8uY29udHJvbC5hdHRyaWJ1dGlvbj1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IG8uQ29udHJvbC5BdHRyaWJ1dGlvbih0KX0sby5Db250cm9sLlNjYWxlPW8uQ29udHJvbC5leHRlbmQoe29wdGlvbnM6e3Bvc2l0aW9uOiJib3R0b21sZWZ0IixtYXhXaWR0aDoxMDAsbWV0cmljOiEwLGltcGVyaWFsOiEwLHVwZGF0ZVdoZW5JZGxlOiExfSxvbkFkZDpmdW5jdGlvbih0KXt0aGlzLl9tYXA9dDt2YXIgZT0ibGVhZmxldC1jb250cm9sLXNjYWxlIixpPW8uRG9tVXRpbC5jcmVhdGUoImRpdiIsZSksbj10aGlzLm9wdGlvbnM7cmV0dXJuIHRoaXMuX2FkZFNjYWxlcyhuLGUsaSksdC5vbihuLnVwZGF0ZVdoZW5JZGxlPyJtb3ZlZW5kIjoibW92ZSIsdGhpcy5fdXBkYXRlLHRoaXMpLHQud2hlblJlYWR5KHRoaXMuX3VwZGF0ZSx0aGlzKSxpfSxvblJlbW92ZTpmdW5jdGlvbih0KXt0Lm9mZih0aGlzLm9wdGlvbnMudXBkYXRlV2hlbklkbGU/Im1vdmVlbmQiOiJtb3ZlIix0aGlzLl91cGRhdGUsdGhpcyl9LF9hZGRTY2FsZXM6ZnVuY3Rpb24odCxlLGkpe3QubWV0cmljJiYodGhpcy5fbVNjYWxlPW8uRG9tVXRpbC5jcmVhdGUoImRpdiIsZSsiLWxpbmUiLGkpKSx0LmltcGVyaWFsJiYodGhpcy5faVNjYWxlPW8uRG9tVXRpbC5jcmVhdGUoImRpdiIsZSsiLWxpbmUiLGkpKX0sX3VwZGF0ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX21hcC5nZXRCb3VuZHMoKSxlPXQuZ2V0Q2VudGVyKCkubGF0LGk9NjM3ODEzNypNYXRoLlBJKk1hdGguY29zKGUqTWF0aC5QSS8xODApLG49aSoodC5nZXROb3J0aEVhc3QoKS5sbmctdC5nZXRTb3V0aFdlc3QoKS5sbmcpLzE4MCxvPXRoaXMuX21hcC5nZXRTaXplKCkscz10aGlzLm9wdGlvbnMsYT0wO28ueD4wJiYoYT1uKihzLm1heFdpZHRoL28ueCkpLHRoaXMuX3VwZGF0ZVNjYWxlcyhzLGEpfSxfdXBkYXRlU2NhbGVzOmZ1bmN0aW9uKHQsZSl7dC5tZXRyaWMmJmUmJnRoaXMuX3VwZGF0ZU1ldHJpYyhlKSx0LmltcGVyaWFsJiZlJiZ0aGlzLl91cGRhdGVJbXBlcmlhbChlKX0sX3VwZGF0ZU1ldHJpYzpmdW5jdGlvbih0KXt2YXIgZT10aGlzLl9nZXRSb3VuZE51bSh0KTt0aGlzLl9tU2NhbGUuc3R5bGUud2lkdGg9dGhpcy5fZ2V0U2NhbGVXaWR0aChlL3QpKyJweCIsdGhpcy5fbVNjYWxlLmlubmVySFRNTD0xZTM+ZT9lKyIgbSI6ZS8xZTMrIiBrbSJ9LF91cGRhdGVJbXBlcmlhbDpmdW5jdGlvbih0KXt2YXIgZSxpLG4sbz0zLjI4MDgzOTkqdCxzPXRoaXMuX2lTY2FsZTtvPjUyODA/KGU9by81MjgwLGk9dGhpcy5fZ2V0Um91bmROdW0oZSkscy5zdHlsZS53aWR0aD10aGlzLl9nZXRTY2FsZVdpZHRoKGkvZSkrInB4IixzLmlubmVySFRNTD1pKyIgbWkiKToobj10aGlzLl9nZXRSb3VuZE51bShvKSxzLnN0eWxlLndpZHRoPXRoaXMuX2dldFNjYWxlV2lkdGgobi9vKSsicHgiLHMuaW5uZXJIVE1MPW4rIiBmdCIpfSxfZ2V0U2NhbGVXaWR0aDpmdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5yb3VuZCh0aGlzLm9wdGlvbnMubWF4V2lkdGgqdCktMTB9LF9nZXRSb3VuZE51bTpmdW5jdGlvbih0KXt2YXIgZT1NYXRoLnBvdygxMCwoTWF0aC5mbG9vcih0KSsiIikubGVuZ3RoLTEpLGk9dC9lO3JldHVybiBpPWk+PTEwPzEwOmk+PTU/NTppPj0zPzM6aT49Mj8yOjEsZSppfX0pLG8uY29udHJvbC5zY2FsZT1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IG8uQ29udHJvbC5TY2FsZSh0KX0sby5Db250cm9sLkxheWVycz1vLkNvbnRyb2wuZXh0ZW5kKHtvcHRpb25zOntjb2xsYXBzZWQ6ITAscG9zaXRpb246InRvcHJpZ2h0IixhdXRvWkluZGV4OiEwfSxpbml0aWFsaXplOmZ1bmN0aW9uKHQsZSxpKXtvLnNldE9wdGlvbnModGhpcyxpKSx0aGlzLl9sYXllcnM9e30sdGhpcy5fbGFzdFpJbmRleD0wLHRoaXMuX2hhbmRsaW5nQ2xpY2s9ITE7Zm9yKHZhciBuIGluIHQpdGhpcy5fYWRkTGF5ZXIodFtuXSxuKTtmb3IobiBpbiBlKXRoaXMuX2FkZExheWVyKGVbbl0sbiwhMCl9LG9uQWRkOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9pbml0TGF5b3V0KCksdGhpcy5fdXBkYXRlKCksdC5vbigibGF5ZXJhZGQiLHRoaXMuX29uTGF5ZXJDaGFuZ2UsdGhpcykub24oImxheWVycmVtb3ZlIix0aGlzLl9vbkxheWVyQ2hhbmdlLHRoaXMpLHRoaXMuX2NvbnRhaW5lcn0sb25SZW1vdmU6ZnVuY3Rpb24odCl7dC5vZmYoImxheWVyYWRkIix0aGlzLl9vbkxheWVyQ2hhbmdlLHRoaXMpLm9mZigibGF5ZXJyZW1vdmUiLHRoaXMuX29uTGF5ZXJDaGFuZ2UsdGhpcyl9LGFkZEJhc2VMYXllcjpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLl9hZGRMYXllcih0LGUpLHRoaXMuX3VwZGF0ZSgpLHRoaXN9LGFkZE92ZXJsYXk6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5fYWRkTGF5ZXIodCxlLCEwKSx0aGlzLl91cGRhdGUoKSx0aGlzfSxyZW1vdmVMYXllcjpmdW5jdGlvbih0KXt2YXIgZT1vLnN0YW1wKHQpO3JldHVybiBkZWxldGUgdGhpcy5fbGF5ZXJzW2VdLHRoaXMuX3VwZGF0ZSgpLHRoaXN9LF9pbml0TGF5b3V0OmZ1bmN0aW9uKCl7dmFyIHQ9ImxlYWZsZXQtY29udHJvbC1sYXllcnMiLGU9dGhpcy5fY29udGFpbmVyPW8uRG9tVXRpbC5jcmVhdGUoImRpdiIsdCk7ZS5zZXRBdHRyaWJ1dGUoImFyaWEtaGFzcG9wdXAiLCEwKSxvLkJyb3dzZXIudG91Y2g/by5Eb21FdmVudC5vbihlLCJjbGljayIsby5Eb21FdmVudC5zdG9wUHJvcGFnYXRpb24pOm8uRG9tRXZlbnQuZGlzYWJsZUNsaWNrUHJvcGFnYXRpb24oZSkuZGlzYWJsZVNjcm9sbFByb3BhZ2F0aW9uKGUpO3ZhciBpPXRoaXMuX2Zvcm09by5Eb21VdGlsLmNyZWF0ZSgiZm9ybSIsdCsiLWxpc3QiKTtpZih0aGlzLm9wdGlvbnMuY29sbGFwc2VkKXtvLkJyb3dzZXIuYW5kcm9pZHx8by5Eb21FdmVudC5vbihlLCJtb3VzZW92ZXIiLHRoaXMuX2V4cGFuZCx0aGlzKS5vbihlLCJtb3VzZW91dCIsdGhpcy5fY29sbGFwc2UsdGhpcyk7dmFyIG49dGhpcy5fbGF5ZXJzTGluaz1vLkRvbVV0aWwuY3JlYXRlKCJhIix0KyItdG9nZ2xlIixlKTtuLmhyZWY9IiMiLG4udGl0bGU9IkxheWVycyIsby5Ccm93c2VyLnRvdWNoP28uRG9tRXZlbnQub24obiwiY2xpY2siLG8uRG9tRXZlbnQuc3RvcCkub24obiwiY2xpY2siLHRoaXMuX2V4cGFuZCx0aGlzKTpvLkRvbUV2ZW50Lm9uKG4sImZvY3VzIix0aGlzLl9leHBhbmQsdGhpcyksby5Eb21FdmVudC5vbihpLCJjbGljayIsZnVuY3Rpb24oKXtzZXRUaW1lb3V0KG8uYmluZCh0aGlzLl9vbklucHV0Q2xpY2ssdGhpcyksMCl9LHRoaXMpLHRoaXMuX21hcC5vbigiY2xpY2siLHRoaXMuX2NvbGxhcHNlLHRoaXMpfWVsc2UgdGhpcy5fZXhwYW5kKCk7dGhpcy5fYmFzZUxheWVyc0xpc3Q9by5Eb21VdGlsLmNyZWF0ZSgiZGl2Iix0KyItYmFzZSIsaSksdGhpcy5fc2VwYXJhdG9yPW8uRG9tVXRpbC5jcmVhdGUoImRpdiIsdCsiLXNlcGFyYXRvciIsaSksdGhpcy5fb3ZlcmxheXNMaXN0PW8uRG9tVXRpbC5jcmVhdGUoImRpdiIsdCsiLW92ZXJsYXlzIixpKSxlLmFwcGVuZENoaWxkKGkpfSxfYWRkTGF5ZXI6ZnVuY3Rpb24odCxlLGkpe3ZhciBuPW8uc3RhbXAodCk7dGhpcy5fbGF5ZXJzW25dPXtsYXllcjp0LG5hbWU6ZSxvdmVybGF5Oml9LHRoaXMub3B0aW9ucy5hdXRvWkluZGV4JiZ0LnNldFpJbmRleCYmKHRoaXMuX2xhc3RaSW5kZXgrKyx0LnNldFpJbmRleCh0aGlzLl9sYXN0WkluZGV4KSl9LF91cGRhdGU6ZnVuY3Rpb24oKXtpZih0aGlzLl9jb250YWluZXIpe3RoaXMuX2Jhc2VMYXllcnNMaXN0LmlubmVySFRNTD0iIix0aGlzLl9vdmVybGF5c0xpc3QuaW5uZXJIVE1MPSIiO3ZhciB0LGUsaT0hMSxuPSExO2Zvcih0IGluIHRoaXMuX2xheWVycyllPXRoaXMuX2xheWVyc1t0XSx0aGlzLl9hZGRJdGVtKGUpLG49bnx8ZS5vdmVybGF5LGk9aXx8IWUub3ZlcmxheTt0aGlzLl9zZXBhcmF0b3Iuc3R5bGUuZGlzcGxheT1uJiZpPyIiOiJub25lIn19LF9vbkxheWVyQ2hhbmdlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX2xheWVyc1tvLnN0YW1wKHQubGF5ZXIpXTtpZihlKXt0aGlzLl9oYW5kbGluZ0NsaWNrfHx0aGlzLl91cGRhdGUoKTt2YXIgaT1lLm92ZXJsYXk/ImxheWVyYWRkIj09PXQudHlwZT8ib3ZlcmxheWFkZCI6Im92ZXJsYXlyZW1vdmUiOiJsYXllcmFkZCI9PT10LnR5cGU/ImJhc2VsYXllcmNoYW5nZSI6bnVsbDtpJiZ0aGlzLl9tYXAuZmlyZShpLGUpfX0sX2NyZWF0ZVJhZGlvRWxlbWVudDpmdW5jdGlvbih0LGkpe3ZhciBuPSc8aW5wdXQgdHlwZT0icmFkaW8iIGNsYXNzPSJsZWFmbGV0LWNvbnRyb2wtbGF5ZXJzLXNlbGVjdG9yIiBuYW1lPSInK3QrJyInO2kmJihuKz0nIGNoZWNrZWQ9ImNoZWNrZWQiJyksbis9Ii8+Ijt2YXIgbz1lLmNyZWF0ZUVsZW1lbnQoImRpdiIpO3JldHVybiBvLmlubmVySFRNTD1uLG8uZmlyc3RDaGlsZH0sX2FkZEl0ZW06ZnVuY3Rpb24odCl7dmFyIGksbj1lLmNyZWF0ZUVsZW1lbnQoImxhYmVsIikscz10aGlzLl9tYXAuaGFzTGF5ZXIodC5sYXllcik7dC5vdmVybGF5PyhpPWUuY3JlYXRlRWxlbWVudCgiaW5wdXQiKSxpLnR5cGU9ImNoZWNrYm94IixpLmNsYXNzTmFtZT0ibGVhZmxldC1jb250cm9sLWxheWVycy1zZWxlY3RvciIsaS5kZWZhdWx0Q2hlY2tlZD1zKTppPXRoaXMuX2NyZWF0ZVJhZGlvRWxlbWVudCgibGVhZmxldC1iYXNlLWxheWVycyIscyksaS5sYXllcklkPW8uc3RhbXAodC5sYXllciksby5Eb21FdmVudC5vbihpLCJjbGljayIsdGhpcy5fb25JbnB1dENsaWNrLHRoaXMpO3ZhciBhPWUuY3JlYXRlRWxlbWVudCgic3BhbiIpO2EuaW5uZXJIVE1MPSIgIit0Lm5hbWUsbi5hcHBlbmRDaGlsZChpKSxuLmFwcGVuZENoaWxkKGEpO3ZhciByPXQub3ZlcmxheT90aGlzLl9vdmVybGF5c0xpc3Q6dGhpcy5fYmFzZUxheWVyc0xpc3Q7cmV0dXJuIHIuYXBwZW5kQ2hpbGQobiksbn0sX29uSW5wdXRDbGljazpmdW5jdGlvbigpe3ZhciB0LGUsaSxuPXRoaXMuX2Zvcm0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoImlucHV0Iiksbz1uLmxlbmd0aDtmb3IodGhpcy5faGFuZGxpbmdDbGljaz0hMCx0PTA7bz50O3QrKyllPW5bdF0saT10aGlzLl9sYXllcnNbZS5sYXllcklkXSxlLmNoZWNrZWQmJiF0aGlzLl9tYXAuaGFzTGF5ZXIoaS5sYXllcik/dGhpcy5fbWFwLmFkZExheWVyKGkubGF5ZXIpOiFlLmNoZWNrZWQmJnRoaXMuX21hcC5oYXNMYXllcihpLmxheWVyKSYmdGhpcy5fbWFwLnJlbW92ZUxheWVyKGkubGF5ZXIpO3RoaXMuX2hhbmRsaW5nQ2xpY2s9ITEsdGhpcy5fcmVmb2N1c09uTWFwKCl9LF9leHBhbmQ6ZnVuY3Rpb24oKXtvLkRvbVV0aWwuYWRkQ2xhc3ModGhpcy5fY29udGFpbmVyLCJsZWFmbGV0LWNvbnRyb2wtbGF5ZXJzLWV4cGFuZGVkIil9LF9jb2xsYXBzZTpmdW5jdGlvbigpe3RoaXMuX2NvbnRhaW5lci5jbGFzc05hbWU9dGhpcy5fY29udGFpbmVyLmNsYXNzTmFtZS5yZXBsYWNlKCIgbGVhZmxldC1jb250cm9sLWxheWVycy1leHBhbmRlZCIsIiIpfX0pLG8uY29udHJvbC5sYXllcnM9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBuZXcgby5Db250cm9sLkxheWVycyh0LGUsaSl9LG8uUG9zQW5pbWF0aW9uPW8uQ2xhc3MuZXh0ZW5kKHtpbmNsdWRlczpvLk1peGluLkV2ZW50cyxydW46ZnVuY3Rpb24odCxlLGksbil7dGhpcy5zdG9wKCksdGhpcy5fZWw9dCx0aGlzLl9pblByb2dyZXNzPSEwLHRoaXMuX25ld1Bvcz1lLHRoaXMuZmlyZSgic3RhcnQiKSx0LnN0eWxlW28uRG9tVXRpbC5UUkFOU0lUSU9OXT0iYWxsICIrKGl8fC4yNSkrInMgY3ViaWMtYmV6aWVyKDAsMCwiKyhufHwuNSkrIiwxKSIsby5Eb21FdmVudC5vbih0LG8uRG9tVXRpbC5UUkFOU0lUSU9OX0VORCx0aGlzLl9vblRyYW5zaXRpb25FbmQsdGhpcyksby5Eb21VdGlsLnNldFBvc2l0aW9uKHQsZSksby5VdGlsLmZhbHNlRm4odC5vZmZzZXRXaWR0aCksdGhpcy5fc3RlcFRpbWVyPXNldEludGVydmFsKG8uYmluZCh0aGlzLl9vblN0ZXAsdGhpcyksNTApfSxzdG9wOmZ1bmN0aW9uKCl7dGhpcy5faW5Qcm9ncmVzcyYmKG8uRG9tVXRpbC5zZXRQb3NpdGlvbih0aGlzLl9lbCx0aGlzLl9nZXRQb3MoKSksdGhpcy5fb25UcmFuc2l0aW9uRW5kKCksby5VdGlsLmZhbHNlRm4odGhpcy5fZWwub2Zmc2V0V2lkdGgpKX0sX29uU3RlcDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX2dldFBvcygpO3JldHVybiB0Pyh0aGlzLl9lbC5fbGVhZmxldF9wb3M9dCx2b2lkIHRoaXMuZmlyZSgic3RlcCIpKTp2b2lkIHRoaXMuX29uVHJhbnNpdGlvbkVuZCgpfSxfdHJhbnNmb3JtUmU6LyhbLStdPyg/OlxkKlwuKT9cZCspXEQqLCAoWy0rXT8oPzpcZCpcLik/XGQrKVxEKlwpLyxfZ2V0UG9zOmZ1bmN0aW9uKCl7dmFyIGUsaSxuLHM9dGhpcy5fZWwsYT10LmdldENvbXB1dGVkU3R5bGUocyk7aWYoby5Ccm93c2VyLmFueTNkKXtpZihuPWFbby5Eb21VdGlsLlRSQU5TRk9STV0ubWF0Y2godGhpcy5fdHJhbnNmb3JtUmUpLCFuKXJldHVybjtlPXBhcnNlRmxvYXQoblsxXSksaT1wYXJzZUZsb2F0KG5bMl0pfWVsc2UgZT1wYXJzZUZsb2F0KGEubGVmdCksaT1wYXJzZUZsb2F0KGEudG9wKTtyZXR1cm4gbmV3IG8uUG9pbnQoZSxpLCEwKX0sX29uVHJhbnNpdGlvbkVuZDpmdW5jdGlvbigpe28uRG9tRXZlbnQub2ZmKHRoaXMuX2VsLG8uRG9tVXRpbC5UUkFOU0lUSU9OX0VORCx0aGlzLl9vblRyYW5zaXRpb25FbmQsdGhpcyksdGhpcy5faW5Qcm9ncmVzcyYmKHRoaXMuX2luUHJvZ3Jlc3M9ITEsdGhpcy5fZWwuc3R5bGVbby5Eb21VdGlsLlRSQU5TSVRJT05dPSIiLHRoaXMuX2VsLl9sZWFmbGV0X3Bvcz10aGlzLl9uZXdQb3MsY2xlYXJJbnRlcnZhbCh0aGlzLl9zdGVwVGltZXIpLHRoaXMuZmlyZSgic3RlcCIpLmZpcmUoImVuZCIpKX19KSxvLk1hcC5pbmNsdWRlKHtzZXRWaWV3OmZ1bmN0aW9uKHQsZSxuKXtpZihlPWU9PT1pP3RoaXMuX3pvb206dGhpcy5fbGltaXRab29tKGUpLHQ9dGhpcy5fbGltaXRDZW50ZXIoby5sYXRMbmcodCksZSx0aGlzLm9wdGlvbnMubWF4Qm91bmRzKSxuPW58fHt9LHRoaXMuX3BhbkFuaW0mJnRoaXMuX3BhbkFuaW0uc3RvcCgpLHRoaXMuX2xvYWRlZCYmIW4ucmVzZXQmJm4hPT0hMCl7bi5hbmltYXRlIT09aSYmKG4uem9vbT1vLmV4dGVuZCh7YW5pbWF0ZTpuLmFuaW1hdGV9LG4uem9vbSksbi5wYW49by5leHRlbmQoe2FuaW1hdGU6bi5hbmltYXRlfSxuLnBhbikpO3ZhciBzPXRoaXMuX3pvb20hPT1lP3RoaXMuX3RyeUFuaW1hdGVkWm9vbSYmdGhpcy5fdHJ5QW5pbWF0ZWRab29tKHQsZSxuLnpvb20pOnRoaXMuX3RyeUFuaW1hdGVkUGFuKHQsbi5wYW4pO2lmKHMpcmV0dXJuIGNsZWFyVGltZW91dCh0aGlzLl9zaXplVGltZXIpLHRoaXN9cmV0dXJuIHRoaXMuX3Jlc2V0Vmlldyh0LGUpLHRoaXN9LHBhbkJ5OmZ1bmN0aW9uKHQsZSl7aWYodD1vLnBvaW50KHQpLnJvdW5kKCksZT1lfHx7fSwhdC54JiYhdC55KXJldHVybiB0aGlzO2lmKHRoaXMuX3BhbkFuaW18fCh0aGlzLl9wYW5BbmltPW5ldyBvLlBvc0FuaW1hdGlvbix0aGlzLl9wYW5BbmltLm9uKHtzdGVwOnRoaXMuX29uUGFuVHJhbnNpdGlvblN0ZXAsZW5kOnRoaXMuX29uUGFuVHJhbnNpdGlvbkVuZH0sdGhpcykpLGUubm9Nb3ZlU3RhcnR8fHRoaXMuZmlyZSgibW92ZXN0YXJ0IiksZS5hbmltYXRlIT09ITEpe28uRG9tVXRpbC5hZGRDbGFzcyh0aGlzLl9tYXBQYW5lLCJsZWFmbGV0LXBhbi1hbmltIik7dmFyIGk9dGhpcy5fZ2V0TWFwUGFuZVBvcygpLnN1YnRyYWN0KHQpO3RoaXMuX3BhbkFuaW0ucnVuKHRoaXMuX21hcFBhbmUsaSxlLmR1cmF0aW9ufHwuMjUsZS5lYXNlTGluZWFyaXR5KX1lbHNlIHRoaXMuX3Jhd1BhbkJ5KHQpLHRoaXMuZmlyZSgibW92ZSIpLmZpcmUoIm1vdmVlbmQiKTtyZXR1cm4gdGhpc30sX29uUGFuVHJhbnNpdGlvblN0ZXA6ZnVuY3Rpb24oKXt0aGlzLmZpcmUoIm1vdmUiKX0sX29uUGFuVHJhbnNpdGlvbkVuZDpmdW5jdGlvbigpe28uRG9tVXRpbC5yZW1vdmVDbGFzcyh0aGlzLl9tYXBQYW5lLCJsZWFmbGV0LXBhbi1hbmltIiksdGhpcy5maXJlKCJtb3ZlZW5kIil9LF90cnlBbmltYXRlZFBhbjpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMuX2dldENlbnRlck9mZnNldCh0KS5fZmxvb3IoKTtyZXR1cm4oZSYmZS5hbmltYXRlKT09PSEwfHx0aGlzLmdldFNpemUoKS5jb250YWlucyhpKT8odGhpcy5wYW5CeShpLGUpLCEwKTohMX19KSxvLlBvc0FuaW1hdGlvbj1vLkRvbVV0aWwuVFJBTlNJVElPTj9vLlBvc0FuaW1hdGlvbjpvLlBvc0FuaW1hdGlvbi5leHRlbmQoe3J1bjpmdW5jdGlvbih0LGUsaSxuKXt0aGlzLnN0b3AoKSx0aGlzLl9lbD10LHRoaXMuX2luUHJvZ3Jlc3M9ITAsdGhpcy5fZHVyYXRpb249aXx8LjI1LHRoaXMuX2Vhc2VPdXRQb3dlcj0xL01hdGgubWF4KG58fC41LC4yKSx0aGlzLl9zdGFydFBvcz1vLkRvbVV0aWwuZ2V0UG9zaXRpb24odCksdGhpcy5fb2Zmc2V0PWUuc3VidHJhY3QodGhpcy5fc3RhcnRQb3MpLHRoaXMuX3N0YXJ0VGltZT0rbmV3IERhdGUsdGhpcy5maXJlKCJzdGFydCIpLHRoaXMuX2FuaW1hdGUoKX0sc3RvcDpmdW5jdGlvbigpe3RoaXMuX2luUHJvZ3Jlc3MmJih0aGlzLl9zdGVwKCksdGhpcy5fY29tcGxldGUoKSl9LF9hbmltYXRlOmZ1bmN0aW9uKCl7dGhpcy5fYW5pbUlkPW8uVXRpbC5yZXF1ZXN0QW5pbUZyYW1lKHRoaXMuX2FuaW1hdGUsdGhpcyksdGhpcy5fc3RlcCgpfSxfc3RlcDpmdW5jdGlvbigpe3ZhciB0PStuZXcgRGF0ZS10aGlzLl9zdGFydFRpbWUsZT0xZTMqdGhpcy5fZHVyYXRpb247ZT50P3RoaXMuX3J1bkZyYW1lKHRoaXMuX2Vhc2VPdXQodC9lKSk6KHRoaXMuX3J1bkZyYW1lKDEpLHRoaXMuX2NvbXBsZXRlKCkpfSxfcnVuRnJhbWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fc3RhcnRQb3MuYWRkKHRoaXMuX29mZnNldC5tdWx0aXBseUJ5KHQpKTtvLkRvbVV0aWwuc2V0UG9zaXRpb24odGhpcy5fZWwsZSksdGhpcy5maXJlKCJzdGVwIil9LF9jb21wbGV0ZTpmdW5jdGlvbigpe28uVXRpbC5jYW5jZWxBbmltRnJhbWUodGhpcy5fYW5pbUlkKSx0aGlzLl9pblByb2dyZXNzPSExLHRoaXMuZmlyZSgiZW5kIil9LF9lYXNlT3V0OmZ1bmN0aW9uKHQpe3JldHVybiAxLU1hdGgucG93KDEtdCx0aGlzLl9lYXNlT3V0UG93ZXIpfX0pLG8uTWFwLm1lcmdlT3B0aW9ucyh7em9vbUFuaW1hdGlvbjohMCx6b29tQW5pbWF0aW9uVGhyZXNob2xkOjR9KSxvLkRvbVV0aWwuVFJBTlNJVElPTiYmby5NYXAuYWRkSW5pdEhvb2soZnVuY3Rpb24oKXt0aGlzLl96b29tQW5pbWF0ZWQ9dGhpcy5vcHRpb25zLnpvb21BbmltYXRpb24mJm8uRG9tVXRpbC5UUkFOU0lUSU9OJiZvLkJyb3dzZXIuYW55M2QmJiFvLkJyb3dzZXIuYW5kcm9pZDIzJiYhby5Ccm93c2VyLm1vYmlsZU9wZXJhLHRoaXMuX3pvb21BbmltYXRlZCYmby5Eb21FdmVudC5vbih0aGlzLl9tYXBQYW5lLG8uRG9tVXRpbC5UUkFOU0lUSU9OX0VORCx0aGlzLl9jYXRjaFRyYW5zaXRpb25FbmQsdGhpcyl9KSxvLk1hcC5pbmNsdWRlKG8uRG9tVXRpbC5UUkFOU0lUSU9OP3tfY2F0Y2hUcmFuc2l0aW9uRW5kOmZ1bmN0aW9uKHQpe3RoaXMuX2FuaW1hdGluZ1pvb20mJnQucHJvcGVydHlOYW1lLmluZGV4T2YoInRyYW5zZm9ybSIpPj0wJiZ0aGlzLl9vblpvb21UcmFuc2l0aW9uRW5kKCl9LF9ub3RoaW5nVG9BbmltYXRlOmZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMuX2NvbnRhaW5lci5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJsZWFmbGV0LXpvb20tYW5pbWF0ZWQiKS5sZW5ndGh9LF90cnlBbmltYXRlZFpvb206ZnVuY3Rpb24odCxlLGkpe2lmKHRoaXMuX2FuaW1hdGluZ1pvb20pcmV0dXJuITA7aWYoaT1pfHx7fSwhdGhpcy5fem9vbUFuaW1hdGVkfHxpLmFuaW1hdGU9PT0hMXx8dGhpcy5fbm90aGluZ1RvQW5pbWF0ZSgpfHxNYXRoLmFicyhlLXRoaXMuX3pvb20pPnRoaXMub3B0aW9ucy56b29tQW5pbWF0aW9uVGhyZXNob2xkKXJldHVybiExO3ZhciBuPXRoaXMuZ2V0Wm9vbVNjYWxlKGUpLG89dGhpcy5fZ2V0Q2VudGVyT2Zmc2V0KHQpLl9kaXZpZGVCeSgxLTEvbikscz10aGlzLl9nZXRDZW50ZXJMYXllclBvaW50KCkuX2FkZChvKTtyZXR1cm4gaS5hbmltYXRlPT09ITB8fHRoaXMuZ2V0U2l6ZSgpLmNvbnRhaW5zKG8pPyh0aGlzLmZpcmUoIm1vdmVzdGFydCIpLmZpcmUoInpvb21zdGFydCIpLHRoaXMuX2FuaW1hdGVab29tKHQsZSxzLG4sbnVsbCwhMCksITApOiExfSxfYW5pbWF0ZVpvb206ZnVuY3Rpb24odCxlLGksbixzLGEscil7cnx8KHRoaXMuX2FuaW1hdGluZ1pvb209ITApLG8uRG9tVXRpbC5hZGRDbGFzcyh0aGlzLl9tYXBQYW5lLCJsZWFmbGV0LXpvb20tYW5pbSIpLHRoaXMuX2FuaW1hdGVUb0NlbnRlcj10LHRoaXMuX2FuaW1hdGVUb1pvb209ZSxvLkRyYWdnYWJsZSYmKG8uRHJhZ2dhYmxlLl9kaXNhYmxlZD0hMCksby5VdGlsLnJlcXVlc3RBbmltRnJhbWUoZnVuY3Rpb24oKXt0aGlzLmZpcmUoInpvb21hbmltIix7Y2VudGVyOnQsem9vbTplLG9yaWdpbjppLHNjYWxlOm4sZGVsdGE6cyxiYWNrd2FyZHM6YX0pfSx0aGlzKX0sX29uWm9vbVRyYW5zaXRpb25FbmQ6ZnVuY3Rpb24oKXt0aGlzLl9hbmltYXRpbmdab29tPSExLG8uRG9tVXRpbC5yZW1vdmVDbGFzcyh0aGlzLl9tYXBQYW5lLCJsZWFmbGV0LXpvb20tYW5pbSIpLHRoaXMuX3Jlc2V0Vmlldyh0aGlzLl9hbmltYXRlVG9DZW50ZXIsdGhpcy5fYW5pbWF0ZVRvWm9vbSwhMCwhMCksby5EcmFnZ2FibGUmJihvLkRyYWdnYWJsZS5fZGlzYWJsZWQ9ITEpfX06e30pLG8uVGlsZUxheWVyLmluY2x1ZGUoe19hbmltYXRlWm9vbTpmdW5jdGlvbih0KXt0aGlzLl9hbmltYXRpbmd8fCh0aGlzLl9hbmltYXRpbmc9ITAsdGhpcy5fcHJlcGFyZUJnQnVmZmVyKCkpO3ZhciBlPXRoaXMuX2JnQnVmZmVyLGk9by5Eb21VdGlsLlRSQU5TRk9STSxuPXQuZGVsdGE/by5Eb21VdGlsLmdldFRyYW5zbGF0ZVN0cmluZyh0LmRlbHRhKTplLnN0eWxlW2ldLHM9by5Eb21VdGlsLmdldFNjYWxlU3RyaW5nKHQuc2NhbGUsdC5vcmlnaW4pO2Uuc3R5bGVbaV09dC5iYWNrd2FyZHM/cysiICIrbjpuKyIgIitzfSxfZW5kWm9vbUFuaW06ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl90aWxlQ29udGFpbmVyLGU9dGhpcy5fYmdCdWZmZXI7dC5zdHlsZS52aXNpYmlsaXR5PSIiLHQucGFyZW50Tm9kZS5hcHBlbmRDaGlsZCh0KSxvLlV0aWwuZmFsc2VGbihlLm9mZnNldFdpZHRoKSx0aGlzLl9hbmltYXRpbmc9ITF9LF9jbGVhckJnQnVmZmVyOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fbWFwOyF0fHx0Ll9hbmltYXRpbmdab29tfHx0LnRvdWNoWm9vbS5fem9vbWluZ3x8KHRoaXMuX2JnQnVmZmVyLmlubmVySFRNTD0iIix0aGlzLl9iZ0J1ZmZlci5zdHlsZVtvLkRvbVV0aWwuVFJBTlNGT1JNXT0iIil9LF9wcmVwYXJlQmdCdWZmZXI6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl90aWxlQ29udGFpbmVyLGU9dGhpcy5fYmdCdWZmZXIsaT10aGlzLl9nZXRMb2FkZWRUaWxlc1BlcmNlbnRhZ2UoZSksbj10aGlzLl9nZXRMb2FkZWRUaWxlc1BlcmNlbnRhZ2UodCk7cmV0dXJuIGUmJmk+LjUmJi41Pm4/KHQuc3R5bGUudmlzaWJpbGl0eT0iaGlkZGVuIix2b2lkIHRoaXMuX3N0b3BMb2FkaW5nSW1hZ2VzKHQpKTooZS5zdHlsZS52aXNpYmlsaXR5PSJoaWRkZW4iLGUuc3R5bGVbby5Eb21VdGlsLlRSQU5TRk9STV09IiIsdGhpcy5fdGlsZUNvbnRhaW5lcj1lLGU9dGhpcy5fYmdCdWZmZXI9dCx0aGlzLl9zdG9wTG9hZGluZ0ltYWdlcyhlKSx2b2lkIGNsZWFyVGltZW91dCh0aGlzLl9jbGVhckJnQnVmZmVyVGltZXIpKX0sX2dldExvYWRlZFRpbGVzUGVyY2VudGFnZTpmdW5jdGlvbih0KXt2YXIgZSxpLG49dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaW1nIiksbz0wO2ZvcihlPTAsaT1uLmxlbmd0aDtpPmU7ZSsrKW5bZV0uY29tcGxldGUmJm8rKztyZXR1cm4gby9pfSxfc3RvcExvYWRpbmdJbWFnZXM6ZnVuY3Rpb24odCl7dmFyIGUsaSxuLHM9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaW1nIikpO2ZvcihlPTAsaT1zLmxlbmd0aDtpPmU7ZSsrKW49c1tlXSxuLmNvbXBsZXRlfHwobi5vbmxvYWQ9by5VdGlsLmZhbHNlRm4sbi5vbmVycm9yPW8uVXRpbC5mYWxzZUZuLG4uc3JjPW8uVXRpbC5lbXB0eUltYWdlVXJsLG4ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChuKSl9fSksby5NYXAuaW5jbHVkZSh7X2RlZmF1bHRMb2NhdGVPcHRpb25zOnt3YXRjaDohMSxzZXRWaWV3OiExLG1heFpvb206MS8wLHRpbWVvdXQ6MWU0LG1heGltdW1BZ2U6MCxlbmFibGVIaWdoQWNjdXJhY3k6ITF9LGxvY2F0ZTpmdW5jdGlvbih0KXtpZih0PXRoaXMuX2xvY2F0ZU9wdGlvbnM9by5leHRlbmQodGhpcy5fZGVmYXVsdExvY2F0ZU9wdGlvbnMsdCksIW5hdmlnYXRvci5nZW9sb2NhdGlvbilyZXR1cm4gdGhpcy5faGFuZGxlR2VvbG9jYXRpb25FcnJvcih7Y29kZTowLG1lc3NhZ2U6Ikdlb2xvY2F0aW9uIG5vdCBzdXBwb3J0ZWQuIn0pLHRoaXM7dmFyIGU9by5iaW5kKHRoaXMuX2hhbmRsZUdlb2xvY2F0aW9uUmVzcG9uc2UsdGhpcyksaT1vLmJpbmQodGhpcy5faGFuZGxlR2VvbG9jYXRpb25FcnJvcix0aGlzKTtyZXR1cm4gdC53YXRjaD90aGlzLl9sb2NhdGlvbldhdGNoSWQ9bmF2aWdhdG9yLmdlb2xvY2F0aW9uLndhdGNoUG9zaXRpb24oZSxpLHQpOm5hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oZSxpLHQpLHRoaXN9LHN0b3BMb2NhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gbmF2aWdhdG9yLmdlb2xvY2F0aW9uJiZuYXZpZ2F0b3IuZ2VvbG9jYXRpb24uY2xlYXJXYXRjaCh0aGlzLl9sb2NhdGlvbldhdGNoSWQpLHRoaXMuX2xvY2F0ZU9wdGlvbnMmJih0aGlzLl9sb2NhdGVPcHRpb25zLnNldFZpZXc9ITEpLHRoaXN9LF9oYW5kbGVHZW9sb2NhdGlvbkVycm9yOmZ1bmN0aW9uKHQpe3ZhciBlPXQuY29kZSxpPXQubWVzc2FnZXx8KDE9PT1lPyJwZXJtaXNzaW9uIGRlbmllZCI6Mj09PWU/InBvc2l0aW9uIHVuYXZhaWxhYmxlIjoidGltZW91dCIpO3RoaXMuX2xvY2F0ZU9wdGlvbnMuc2V0VmlldyYmIXRoaXMuX2xvYWRlZCYmdGhpcy5maXRXb3JsZCgpLHRoaXMuZmlyZSgibG9jYXRpb25lcnJvciIse2NvZGU6ZSxtZXNzYWdlOiJHZW9sb2NhdGlvbiBlcnJvcjogIitpKyIuIn0pfSxfaGFuZGxlR2VvbG9jYXRpb25SZXNwb25zZTpmdW5jdGlvbih0KXt2YXIgZT10LmNvb3Jkcy5sYXRpdHVkZSxpPXQuY29vcmRzLmxvbmdpdHVkZSxuPW5ldyBvLkxhdExuZyhlLGkpLHM9MTgwKnQuY29vcmRzLmFjY3VyYWN5LzQwMDc1MDE3LGE9cy9NYXRoLmNvcyhvLkxhdExuZy5ERUdfVE9fUkFEKmUpLHI9by5sYXRMbmdCb3VuZHMoW2UtcyxpLWFdLFtlK3MsaSthXSksaD10aGlzLl9sb2NhdGVPcHRpb25zO2lmKGguc2V0Vmlldyl7dmFyIGw9TWF0aC5taW4odGhpcy5nZXRCb3VuZHNab29tKHIpLGgubWF4Wm9vbSk7dGhpcy5zZXRWaWV3KG4sbCl9dmFyIHU9e2xhdGxuZzpuLGJvdW5kczpyLHRpbWVzdGFtcDp0LnRpbWVzdGFtcH07Zm9yKHZhciBjIGluIHQuY29vcmRzKSJudW1iZXIiPT10eXBlb2YgdC5jb29yZHNbY10mJih1W2NdPXQuY29vcmRzW2NdKTt0aGlzLmZpcmUoImxvY2F0aW9uZm91bmQiLHUpfX0pfSh3aW5kb3csZG9jdW1lbnQpOw=="></script>
<link href="data:text/css;charset=utf-8,%0Aimg%2Eleaflet%2Dtile%20%7B%0Apadding%3A%200%3B%0Amargin%3A%200%3B%0Aborder%2Dradius%3A%200%3B%0Aborder%3A%20none%3B%0A%7D%0A%2Einfo%20%7B%0Apadding%3A%206px%208px%3B%0Afont%3A%2014px%2F16px%20Arial%2C%20Helvetica%2C%20sans%2Dserif%3B%0Abackground%3A%20white%3B%0Abackground%3A%20rgba%28255%2C255%2C255%2C0%2E8%29%3B%0Abox%2Dshadow%3A%200%200%2015px%20rgba%280%2C0%2C0%2C0%2E2%29%3B%0Aborder%2Dradius%3A%205px%3B%0A%7D%0A%2Elegend%20%7B%0Aline%2Dheight%3A%2018px%3B%0Acolor%3A%20%23555%3B%0A%7D%0A%2Elegend%20svg%20text%20%7B%0Afill%3A%20%23555%3B%0A%7D%0A%2Elegend%20svg%20line%20%7B%0Astroke%3A%20%23555%3B%0A%7D%0A%2Elegend%20i%20%7B%0Awidth%3A%2018px%3B%0Aheight%3A%2018px%3B%0Afloat%3A%20left%3B%0Amargin%2Dright%3A%208px%3B%0Aopacity%3A%200%2E7%3B%0A%7D%0A" rel="stylesheet" />
<script src="data:application/x-javascript;base64,ZnVuY3Rpb24gcmVjeWNsZSh2YWx1ZXMsIGxlbmd0aCwgaW5QbGFjZSkgewogIGlmIChsZW5ndGggPT09IDAgJiYgIWluUGxhY2UpCiAgICByZXR1cm4gW107CgogIGlmICghKHZhbHVlcyBpbnN0YW5jZW9mIEFycmF5KSkgewogICAgaWYgKGluUGxhY2UpIHsKICAgICAgdGhyb3cgbmV3IEVycm9yKCJDYW4ndCBkbyBpbi1wbGFjZSByZWN5Y2xpbmcgb2YgYSBub24tQXJyYXkgdmFsdWUiKTsKICAgIH0KICAgIHZhbHVlcyA9IFt2YWx1ZXNdOwogIH0KICBpZiAodHlwZW9mKGxlbmd0aCkgPT09ICd1bmRlZmluZWQnKQogICAgbGVuZ3RoID0gdmFsdWVzLmxlbmd0aDsKCiAgdmFyIGRlc3QgPSBpblBsYWNlID8gdmFsdWVzIDogW107CiAgdmFyIG9yaWdMZW5ndGggPSB2YWx1ZXMubGVuZ3RoOwogIHdoaWxlIChkZXN0Lmxlbmd0aCA8IGxlbmd0aCkgewogICAgZGVzdC5wdXNoKHZhbHVlc1tkZXN0Lmxlbmd0aCAlIG9yaWdMZW5ndGhdKTsKICB9CiAgaWYgKGRlc3QubGVuZ3RoID4gbGVuZ3RoKSB7CiAgICBkZXN0LnNwbGljZShsZW5ndGgsIGRlc3QubGVuZ3RoIC0gbGVuZ3RoKTsKICB9CiAgcmV0dXJuIGRlc3Q7Cn0KCmZ1bmN0aW9uIGFzQXJyYXkodmFsdWUpIHsKICBpZiAodmFsdWUgaW5zdGFuY2VvZiBBcnJheSkKICAgIHJldHVybiB2YWx1ZTsKICBlbHNlCiAgICByZXR1cm4gW3ZhbHVlXTsKfQoKdmFyIGRhdGFmcmFtZSA9IChmdW5jdGlvbigpIHsKICB2YXIgZXhwb3J0cyA9IHt9OwoKICB2YXIgRGF0YUZyYW1lID0gZnVuY3Rpb24oKSB7CiAgICB0aGlzLmNvbHVtbnMgPSBbXTsKICAgIHRoaXMuY29sbmFtZXMgPSBbXTsKICAgIHRoaXMuY29sc3RyaWN0ID0gW107CgogICAgdGhpcy5lZmZlY3RpdmVMZW5ndGggPSAwOwogICAgdGhpcy5jb2xpbmRpY2VzID0ge307CiAgfTsKCiAgRGF0YUZyYW1lLnByb3RvdHlwZS5fdXBkYXRlQ2FjaGVkUHJvcGVydGllcyA9IGZ1bmN0aW9uKCkgewogICAgdmFyIHNlbGYgPSB0aGlzOwogICAgdGhpcy5lZmZlY3RpdmVMZW5ndGggPSAwOwogICAgdGhpcy5jb2xpbmRpY2VzID0ge307CgogICAgJC5lYWNoKHRoaXMuY29sdW1ucywgZnVuY3Rpb24oaSwgY29sdW1uKSB7CiAgICAgIHNlbGYuZWZmZWN0aXZlTGVuZ3RoID0gTWF0aC5tYXgoc2VsZi5lZmZlY3RpdmVMZW5ndGgsIGNvbHVtbi5sZW5ndGgpOwogICAgICBzZWxmLmNvbGluZGljZXNbc2VsZi5jb2xuYW1lc1tpXV0gPSBpOwogICAgfSk7CiAgfTsKCiAgRGF0YUZyYW1lLnByb3RvdHlwZS5fY29sSW5kZXggPSBmdW5jdGlvbihjb2xuYW1lKSB7CiAgICB2YXIgaW5kZXggPSB0aGlzLmNvbGluZGljZXNbY29sbmFtZV07CiAgICBpZiAodHlwZW9mKGluZGV4KSA9PT0gJ3VuZGVmaW5lZCcpCiAgICAgIHJldHVybiAtMTsKICAgIHJldHVybiBpbmRleDsKICB9OwoKICBEYXRhRnJhbWUucHJvdG90eXBlLmNvbCA9IGZ1bmN0aW9uKG5hbWUsIHZhbHVlcywgc3RyaWN0KSB7CiAgICBpZiAodHlwZW9mKG5hbWUpICE9PSAnc3RyaW5nJykKICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGNvbHVtbiBuYW1lICInICsgbmFtZSArICciJyk7CgogICAgdmFyIGluZGV4ID0gdGhpcy5fY29sSW5kZXgobmFtZSk7CgogICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDEpIHsKICAgICAgaWYgKGluZGV4IDwgMCkKICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgZWxzZQogICAgICAgIHJldHVybiByZWN5Y2xlKHRoaXMuY29sdW1uc1tpbmRleF0sIHRoaXMuZWZmZWN0aXZlTGVuZ3RoKTsKICAgIH0KCiAgICBpZiAoaW5kZXggPCAwKSB7CiAgICAgIGluZGV4ID0gdGhpcy5jb2xuYW1lcy5sZW5ndGg7CiAgICAgIHRoaXMuY29sbmFtZXMucHVzaChuYW1lKTsKICAgIH0KICAgIHRoaXMuY29sdW1uc1tpbmRleF0gPSBhc0FycmF5KHZhbHVlcyk7CiAgICB0aGlzLmNvbHN0cmljdFtpbmRleF0gPSAhIXN0cmljdDsKCiAgICAvLyBUT0RPOiBWYWxpZGF0ZSBzdHJpY3RuZXNzIChlbnN1cmUgbGVuZ3RocyBtYXRjaCB1cCB3aXRoIG90aGVyIHN0cmljdHMpCgogICAgdGhpcy5fdXBkYXRlQ2FjaGVkUHJvcGVydGllcygpOwoKICAgIHJldHVybiB0aGlzOwogIH07CgogIERhdGFGcmFtZS5wcm90b3R5cGUuY2JpbmQgPSBmdW5jdGlvbihvYmosIHN0cmljdCkgewogICAgdmFyIHNlbGYgPSB0aGlzLCBuYW1lOwogICAgJC5lYWNoKG9iaiwgZnVuY3Rpb24obmFtZSwgY29sZGF0YSkgewogICAgICBzZWxmLmNvbChuYW1lLCBjb2xkYXRhKTsKICAgIH0pOwogICAgcmV0dXJuIHRoaXM7CiAgfTsKCiAgRGF0YUZyYW1lLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbihyb3csIGNvbCkgewogICAgdmFyIHNlbGYgPSB0aGlzOwoKICAgIGlmIChyb3cgPiB0aGlzLmVmZmVjdGl2ZUxlbmd0aCkKICAgICAgdGhyb3cgbmV3IEVycm9yKCdSb3cgYXJndW1lbnQgd2FzIG91dCBvZiBib3VuZHM6ICcgKyByb3cgKyAnID4gJyArIHRoaXMuZWZmZWN0aXZlTGVuZ3RoKTsKCiAgICB2YXIgY29sSW5kZXggPSAtMTsKICAgIGlmICh0eXBlb2YoY29sKSA9PT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgdmFyIHJvd0RhdGEgPSB7fTsKICAgICAgJC5lYWNoKHRoaXMuY29sbmFtZXMsIGZ1bmN0aW9uKGksIG5hbWUpIHsKICAgICAgICByb3dEYXRhW25hbWVdID0gc2VsZi5jb2x1bW5zW2ldW3JvdyAlIHNlbGYuY29sdW1uc1tpXS5sZW5ndGhdOwogICAgICB9KTsKICAgICAgcmV0dXJuIHJvd0RhdGE7CiAgICB9IGVsc2UgaWYgKHR5cGVvZihjb2wpID09PSAnc3RyaW5nJykgewogICAgICBjb2xJbmRleCA9IHRoaXMuX2NvbEluZGV4KGNvbCk7CiAgICB9IGVsc2UgaWYgKHR5cGVvZihjb2wpID09PSAnbnVtYmVyJykgewogICAgICBjb2xJbmRleCA9IGNvbDsKICAgIH0KICAgIGlmIChjb2xJbmRleCA8IDAgfHwgY29sSW5kZXggPiB0aGlzLmNvbHVtbnMubGVuZ3RoKQogICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gY29sdW1uIGluZGV4OiAnICsgY29sKTsKCiAgICByZXR1cm4gdGhpcy5jb2x1bW5zW2NvbEluZGV4XVtyb3cgJSB0aGlzLmNvbHVtbnNbY29sSW5kZXhdLmxlbmd0aF07CiAgfTsKCiAgRGF0YUZyYW1lLnByb3RvdHlwZS5ucm93ID0gZnVuY3Rpb24oKSB7CiAgICByZXR1cm4gdGhpcy5lZmZlY3RpdmVMZW5ndGg7CiAgfTsKCiAgZnVuY3Rpb24gdGVzdCgpIHsKICAgIHZhciBkZiA9IG5ldyBEYXRhRnJhbWUoKTsKICAgIGRmLmNvbCgic3BlZWQiLCBbNCwgNCwgNywgNywgOCwgOSwgMTAsIDEwLCAxMCwgMTEsIDExLCAxMiwgMTIsIDEyLCAxMiwgMTMsIDEzLCAxMywgMTMsIDE0LCAxNCwgMTQsIDE0LCAxNSwgMTUsIDE1LCAxNiwgMTYsIDE3LCAxNywgMTcsIDE4LCAxOCwgMTgsIDE4LCAxOSwgMTksIDE5LCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIyLCAyMywgMjQsIDI0LCAyNCwgMjQsIDI1XSkKICAgICAgLmNvbCgiZGlzdCIsIFsyLCAxMCwgNCwgMjIsIDE2LCAxMCwgMTgsIDI2LCAzNCwgMTcsIDI4LCAxNCwgMjAsIDI0LCAyOCwgMjYsIDM0LCAzNCwgNDYsIDI2LCAzNiwgNjAsIDgwLCAyMCwgMjYsIDU0LCAzMiwgNDAsIDMyLCA0MCwgNTAsIDQyLCA1NiwgNzYsIDg0LCAzNiwgNDYsIDY4LCAzMiwgNDgsIDUyLCA1NiwgNjQsIDY2LCA1NCwgNzAsIDkyLCA5MywgMTIwLCA4NV0pCiAgICAgIC5jb2woImNvbG9yIiwgWyJ5ZWxsb3ciLCAicmVkIl0pCiAgICAgIC5jYmluZCh7CiAgICAgICAgIk1ha2UiIDogWyJUb3lvdGEiLCAiQ2FkaWxsYWMiLCAiQk1XIl0sCiAgICAgICAgIk1vZGVsIiA6IFsiQ29yb2xsYSIsICJDVFMiLCAiNDM1aSJdCiAgICAgIH0pCiAgICA7CiAgICBjb25zb2xlLmxvZyhkZi5nZXQoOSwgInNwZWVkIikpOwogICAgY29uc29sZS5sb2coZGYuZ2V0KDksICJkaXN0IikpOwogICAgY29uc29sZS5sb2coZGYuZ2V0KDksICJjb2xvciIpKTsKICAgIGNvbnNvbGUubG9nKGRmLmdldCg5LCAiTWFrZSIpKTsKICAgIGNvbnNvbGUubG9nKGRmLmdldCg5LCAiTW9kZWwiKSk7CiAgICBjb25zb2xlLmxvZyhkZi5nZXQoOSkpOwoKICB9CgogIHJldHVybiB7CiAgICBjcmVhdGU6IGZ1bmN0aW9uKCkgewogICAgICByZXR1cm4gbmV3IERhdGFGcmFtZSgpOwogICAgfQogIH07Cgp9KSgpOwoKKGZ1bmN0aW9uKCkgewogIC8vIFRoaXMgY2xhc3Mgc2ltdWxhdGVzIGEgbWlwbWFwLCB3aGljaCBzaHJpbmtzIGltYWdlcyBieSBwb3dlcnMgb2YgdHdvLiBUaGlzCiAgLy8gc3RlcHdpc2UgcmVkdWN0aW9uIHJlc3VsdHMgaW4gInBpeGVsLXBlcmZlY3QgZG93bnNjYWxpbmciICh3aGVyZSBldmVyeQogIC8vIHBpeGVsIG9mIHRoZSBvcmlnaW5hbCBpbWFnZSBoYXMgc29tZSBjb250cmlidXRpb24gdG8gdGhlIGRvd25zY2FsZWQgaW1hZ2UpCiAgLy8gYXMgb3Bwb3NlZCB0byBhIHNpbmdsZS1zdGVwIGRvd25zY2FsaW5nIHdoaWNoIHdpbGwgZGlzY2FyZCBhIGxvdCBvZiBkYXRhCiAgLy8gKGFuZCB3aXRoIHNwYXJzZSBpbWFnZXMgYXQgc21hbGwgc2NhbGVzIGNhbiBnaXZlIHZlcnkgc3VycHJpc2luZyByZXN1bHRzKS4KICBmdW5jdGlvbiBNaXBtYXBwZXIoaW1nKSB7CiAgICB0aGlzLl9sYXllcnMgPSBbaW1nXTsKICB9CiAgLy8gVGhlIHZhcmlvdXMgZnVuY3Rpb25zIG9uIHRoaXMgY2xhc3MgdGFrZSBhIGNhbGxiYWNrIGZ1bmN0aW9uIEJVVCBNQVkgT1IgTUFZCiAgLy8gTk9UIGFjdHVhbGx5IGJlaGF2ZSBhc3luY2hyb25vdXNseS4KICBNaXBtYXBwZXIucHJvdG90eXBlLmdldEJ5U2l6ZSA9IGZ1bmN0aW9uKGRlc2lyZWRXaWR0aCwgZGVzaXJlZEhlaWdodCwgY2FsbGJhY2spIHsKICAgIHZhciBzZWxmID0gdGhpczsKICAgIHZhciBpID0gMDsKICAgIHZhciBsYXN0SW1nID0gdGhpcy5fbGF5ZXJzWzBdOwogICAgZnVuY3Rpb24gdGVzdE5leHQoKSB7CiAgICAgIHNlbGYuZ2V0QnlJbmRleChpLCBmdW5jdGlvbihpbWcpIHsKICAgICAgICAvLyBJZiBjdXJyZW50IGltYWdlIGlzIGludmFsaWQgKGkuZS4gdG9vIHNtYWxsIHRvIGJlIHJlbmRlcmVkKSBvcgogICAgICAgIC8vIGl0J3Mgc21hbGxlciB0aGFuIHdoYXQgd2Ugd2FudGVkLCByZXR1cm4gdGhlIGxhc3Qga25vd24gZ29vZCBpbWFnZS4KICAgICAgICBpZiAoIWltZyB8fCBpbWcud2lkdGggPCBkZXNpcmVkV2lkdGggfHwgaW1nLmhlaWdodCA8IGRlc2lyZWRIZWlnaHQpIHsKICAgICAgICAgIGNhbGxiYWNrKGxhc3RJbWcpOwogICAgICAgICAgcmV0dXJuOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBsYXN0SW1nID0gaW1nOwogICAgICAgICAgaSsrOwogICAgICAgICAgdGVzdE5leHQoKTsKICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgIH0pOwogICAgfQogICAgdGVzdE5leHQoKTsKICB9OwogIE1pcG1hcHBlci5wcm90b3R5cGUuZ2V0QnlJbmRleCA9IGZ1bmN0aW9uKGksIGNhbGxiYWNrKSB7CiAgICB2YXIgc2VsZiA9IHRoaXM7CiAgICBpZiAodGhpcy5fbGF5ZXJzW2ldKSB7CiAgICAgIGNhbGxiYWNrKHRoaXMuX2xheWVyc1tpXSk7CiAgICAgIHJldHVybjsKICAgIH0KCiAgICB0aGlzLmdldEJ5SW5kZXgoaS0xLCBmdW5jdGlvbihwcmV2SW1nKSB7CiAgICAgIGlmICghcHJldkltZykgewogICAgICAgIC8vIHByZXZJbWcgY291bGQgbm90IGJlIGNhbGN1bGF0ZWQgKHRvbyBzbWFsbCwgcG9zc2libHkpCiAgICAgICAgY2FsbGJhY2sobnVsbCk7CiAgICAgICAgcmV0dXJuOwogICAgICB9CiAgICAgIGlmIChwcmV2SW1nLndpZHRoIDwgMiB8fCBwcmV2SW1nLmhlaWdodCA8IDIpIHsKICAgICAgICAvLyBDYW4ndCByZWR1Y2UgdGhpcyBpbWFnZSBhbnkgZnVydGhlcgogICAgICAgIGNhbGxiYWNrKG51bGwpOwogICAgICAgIHJldHVybjsKICAgICAgfQogICAgICAvLyBJZiByZWR1Y2UgZXZlciBiZWNvbWVzIHRydWx5IGFzeW5jaHJvbm91cywgd2Ugc2hvdWxkIHN0dWZmIGEgcHJvbWlzZSBvcgogICAgICAvLyBzb21ldGhpbmcgaW50byBzZWxmLl9sYXllcnNbaV0gYmVmb3JlIGNhbGxpbmcgc2VsZi5yZWR1Y2UoKSwgdG8gcHJldmVudAogICAgICAvLyByZWR1bmRhbnQgcmVkdWNlIG9wZXJhdGlvbnMgZnJvbSBoYXBwZW5pbmcuCiAgICAgIHNlbGYucmVkdWNlKHByZXZJbWcsIGZ1bmN0aW9uKHJlZHVjZWRJbWcpIHsKICAgICAgICBzZWxmLl9sYXllcnNbaV0gPSByZWR1Y2VkSW1nOwogICAgICAgIGNhbGxiYWNrKHJlZHVjZWRJbWcpOwogICAgICAgIHJldHVybjsKICAgICAgfSk7CiAgICB9KTsKICB9OwogIE1pcG1hcHBlci5wcm90b3R5cGUucmVkdWNlID0gZnVuY3Rpb24oaW1nLCBjYWxsYmFjaykgewogICAgICB2YXIgaW1nRGF0YUNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpOwogICAgICBpbWdEYXRhQ2FudmFzLndpZHRoID0gTWF0aC5jZWlsKGltZy53aWR0aCAvIDIpOwogICAgICBpbWdEYXRhQ2FudmFzLmhlaWdodCA9IE1hdGguY2VpbChpbWcuaGVpZ2h0IC8gMik7CiAgICAgIGltZ0RhdGFDYW52YXMuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpbWdEYXRhQ2FudmFzKTsKICAgICAgdHJ5IHsKICAgICAgICB2YXIgaW1nRGF0YUN0eCA9IGltZ0RhdGFDYW52YXMuZ2V0Q29udGV4dCgiMmQiKTsKICAgICAgICBpbWdEYXRhQ3R4LmRyYXdJbWFnZShpbWcsIDAsIDAsIGltZy53aWR0aC8yLCBpbWcuaGVpZ2h0LzIpOwogICAgICAgIGNhbGxiYWNrKGltZ0RhdGFDYW52YXMpOwogICAgICB9IGZpbmFsbHkgewogICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoaW1nRGF0YUNhbnZhcyk7CiAgICAgIH0KCiAgfTsKCiAgZnVuY3Rpb24gTGF5ZXJNYW5hZ2VyKG1hcCkgewogICAgdGhpcy5fbWFwID0gbWFwOwoKICAgIC8vIEJFR0lOIGxheWVyIGluZGljZXMKCiAgICAvLyB7PGdyb3VwbmFtZT46IHs8c3RhbXA+OiBsYXllcn19CiAgICB0aGlzLl9ieUdyb3VwID0ge307CiAgICAvLyB7PGNhdGVnb3J5TmFtZT46IHs8c3RhbXA+OiBsYXllcn19CiAgICB0aGlzLl9ieUNhdGVnb3J5ID0ge307CiAgICAvLyB7PGNhdGVnb3J5TmFtZV9sYXllcklkPjogbGF5ZXJ9CiAgICB0aGlzLl9ieUxheWVySWQgPSB7fTsKICAgIC8vIHs8c3RhbXA+OiB7CiAgICAvLyAgICAgICAgICAgICAiZ3JvdXAiOiA8Z3JvdXBuYW1lPiwKICAgIC8vICAgICAgICAgICAgICJsYXllcklkIjogPGxheWVySWQ+LAogICAgLy8gICAgICAgICAgICAgImNhdGVnb3J5IjogPGNhdGVnb3J5PiwKICAgIC8vICAgICAgICAgICAgICJjb250YWluZXIiOiA8Y29udGFpbmVyPgogICAgLy8gICAgICAgICAgIH0KICAgIC8vIH0KICAgIHRoaXMuX2J5U3RhbXAgPSB7fTsKCiAgICAvLyBFTkQgbGF5ZXIgaW5kaWNlcwoKICAgIC8vIHs8Y2F0ZWdvcnlOYW1lPjogTC5sYXllckdyb3VwfQogICAgdGhpcy5fY2F0ZWdvcnlDb250YWluZXJzID0ge307CiAgICAvLyB7PGdyb3VwTmFtZT46IEwubGF5ZXJHcm91cH0KICAgIHRoaXMuX2dyb3VwQ29udGFpbmVycyA9IHt9OwogIH0KICBMYXllck1hbmFnZXIucHJvdG90eXBlLmFkZExheWVyID0gZnVuY3Rpb24obGF5ZXIsIGNhdGVnb3J5LCBsYXllcklkLCBncm91cCkgewogICAgLy8gV2FzIGEgZ3JvdXAgcHJvdmlkZWQ/CiAgICB2YXIgaGFzSWQgPSB0eXBlb2YobGF5ZXJJZCkgPT09ICJzdHJpbmciOwogICAgdmFyIGdyb3VwZWQgPSB0eXBlb2YoZ3JvdXApID09PSAic3RyaW5nIjsKCiAgICB2YXIgc3RhbXAgPSBMLlV0aWwuc3RhbXAobGF5ZXIpOwoKICAgIC8vIFRoaXMgd2lsbCBiZSB0aGUgZGVmYXVsdCBsYXllciBncm91cCB0byBhZGQgdGhlIGxheWVyIHRvLgogICAgLy8gV2UgbWF5IG92ZXJ3cml0ZSB0aGlzIHZhciBiZWZvcmUgdXNpbmcgaXQgKGkuZS4gaWYgYSBncm91cCBpcyBhc3NpZ25lZCkuCiAgICAvLyBUaGlzIG9uZSBsaW5lciBjcmVhdGVzIHRoZSBfY2F0ZWdvcnlDb250YWluZXJzW2NhdGVnb3J5XSBlbnRyeSBpZiBpdAogICAgLy8gZG9lc24ndCBhbHJlYWR5IGV4aXN0LgogICAgdmFyIGNvbnRhaW5lciA9IHRoaXMuX2NhdGVnb3J5Q29udGFpbmVyc1tjYXRlZ29yeV0gPQogICAgICAgIHRoaXMuX2NhdGVnb3J5Q29udGFpbmVyc1tjYXRlZ29yeV0gfHwgTC5sYXllckdyb3VwKCkuYWRkVG8odGhpcy5fbWFwKTsKCiAgICB2YXIgb2xkTGF5ZXIgPSBudWxsOwogICAgaWYgKGhhc0lkKSB7CiAgICAgIC8vIEZpcnN0LCByZW1vdmUgYW55IGxheWVyIHdpdGggdGhlIHNhbWUgY2F0ZWdvcnkgYW5kIGxheWVySWQKICAgICAgdmFyIHByZWZpeGVkTGF5ZXJJZCA9IHRoaXMuX2xheWVySWRLZXkoY2F0ZWdvcnksIGxheWVySWQpOwogICAgICBvbGRMYXllciA9IHRoaXMuX2J5TGF5ZXJJZFtwcmVmaXhlZExheWVySWRdOwogICAgICBpZiAob2xkTGF5ZXIpIHsKICAgICAgICB0aGlzLl9yZW1vdmVMYXllcihvbGRMYXllcik7CiAgICAgIH0KCiAgICAgIC8vIFVwZGF0ZSBsYXllcklkIGluZGV4CiAgICAgIHRoaXMuX2J5TGF5ZXJJZFtwcmVmaXhlZExheWVySWRdID0gbGF5ZXI7CiAgICB9CgogICAgLy8gVXBkYXRlIGdyb3VwIGluZGV4CiAgICBpZiAoZ3JvdXBlZCkgewogICAgICB0aGlzLl9ieUdyb3VwW2dyb3VwXSA9IHRoaXMuX2J5R3JvdXBbZ3JvdXBdIHx8IHt9OwogICAgICB0aGlzLl9ieUdyb3VwW2dyb3VwXVtzdGFtcF0gPSBsYXllcjsKCiAgICAgIC8vIFNpbmNlIGEgZ3JvdXAgaXMgYXNzaWduZWQsIGRvbid0IGFkZCB0aGUgbGF5ZXIgdG8gdGhlIGNhdGVnb3J5J3MgbGF5ZXIKICAgICAgLy8gZ3JvdXA7IGluc3RlYWQsIHVzZSB0aGUgZ3JvdXAncyBsYXllciBncm91cC4KICAgICAgLy8gVGhpcyBvbmUgbGluZXIgY3JlYXRlcyB0aGUgX2dyb3VwQ29udGFpbmVyc1tncm91cF0gZW50cnkgaWYgaXQgZG9lc24ndAogICAgICAvLyBhbHJlYWR5IGV4aXN0LgogICAgICBjb250YWluZXIgPSB0aGlzLmdldExheWVyR3JvdXAoZ3JvdXAsIHRydWUpOwogICAgfQoKICAgIC8vIFVwZGF0ZSBjYXRlZ29yeSBpbmRleAogICAgdGhpcy5fYnlDYXRlZ29yeVtjYXRlZ29yeV0gPSB0aGlzLl9ieUNhdGVnb3J5W2NhdGVnb3J5XSB8fCB7fTsKICAgIHRoaXMuX2J5Q2F0ZWdvcnlbY2F0ZWdvcnldW3N0YW1wXSA9IGxheWVyOwoKICAgIC8vIFVwZGF0ZSBzdGFtcCBpbmRleAogICAgdGhpcy5fYnlTdGFtcFtzdGFtcF0gPSB7CiAgICAgIGxheWVyOiBsYXllciwKICAgICAgZ3JvdXA6IGdyb3VwLAogICAgICBsYXllcklkOiBsYXllcklkLAogICAgICBjYXRlZ29yeTogY2F0ZWdvcnksCiAgICAgIGNvbnRhaW5lcjogY29udGFpbmVyCiAgICB9OwoKICAgIC8vIEFkZCB0byBjb250YWluZXIKICAgIGNvbnRhaW5lci5hZGRMYXllcihsYXllcik7CgogICAgcmV0dXJuIG9sZExheWVyOwogIH07CiAgTGF5ZXJNYW5hZ2VyLnByb3RvdHlwZS5nZXRMYXllciA9IGZ1bmN0aW9uKGNhdGVnb3J5LCBsYXllcklkKSB7CiAgICByZXR1cm4gdGhpcy5fYnlMYXllcklkW3RoaXMuX2xheWVySWRLZXkoY2F0ZWdvcnksIGxheWVySWQpXTsKICB9OwogIExheWVyTWFuYWdlci5wcm90b3R5cGUucmVtb3ZlTGF5ZXIgPSBmdW5jdGlvbihjYXRlZ29yeSwgbGF5ZXJJZCkgewogICAgLy8gRmluZCBsYXllciBpbmZvCiAgICB2YXIgbGF5ZXIgPSB0aGlzLl9ieUxheWVySWRbdGhpcy5fbGF5ZXJJZEtleShjYXRlZ29yeSwgbGF5ZXJJZCldOwogICAgaWYgKCFsYXllcikgewogICAgICByZXR1cm4gZmFsc2U7CiAgICB9CiAgICB0aGlzLl9yZW1vdmVMYXllcihsYXllcik7CiAgICByZXR1cm4gdHJ1ZTsKICB9OwogIExheWVyTWFuYWdlci5wcm90b3R5cGUuY2xlYXJMYXllcnMgPSBmdW5jdGlvbihjYXRlZ29yeSkgewogICAgdmFyIHNlbGYgPSB0aGlzOwoKICAgIC8vIEZpbmQgYWxsIGxheWVycyBpbiBfYnlDYXRlZ29yeVtjYXRlZ29yeV0KICAgIHZhciBjYXRUYWJsZSA9IHRoaXMuX2J5Q2F0ZWdvcnlbY2F0ZWdvcnldOwogICAgaWYgKCFjYXRUYWJsZSkgewogICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLy8gUmVtb3ZlIGFsbCBsYXllcnMuIE1ha2UgY29weSBvZiBrZXlzIHRvIGF2b2lkIG11dGF0aW5nIHRoZSBjb2xsZWN0aW9uCiAgICAvLyBiZWhpbmQgdGhlIGl0ZXJhdG9yIHlvdSdyZSBhY2Nlc3NpbmcuCiAgICB2YXIgc3RhbXBzID0gW107CiAgICAkLmVhY2goY2F0VGFibGUsIGZ1bmN0aW9uKGssIHYpIHsKICAgICAgc3RhbXBzLnB1c2goayk7CiAgICB9KTsKICAgICQuZWFjaChzdGFtcHMsIGZ1bmN0aW9uKGksIHN0YW1wKSB7CiAgICAgIHNlbGYuX3JlbW92ZUxheWVyKHN0YW1wKTsKICAgIH0pOwogIH07CiAgTGF5ZXJNYW5hZ2VyLnByb3RvdHlwZS5nZXRMYXllckdyb3VwID0gZnVuY3Rpb24oZ3JvdXAsIGVuc3VyZUV4aXN0cykgewogICAgdmFyIGcgPSB0aGlzLl9ncm91cENvbnRhaW5lcnNbZ3JvdXBdOwogICAgaWYgKGVuc3VyZUV4aXN0cyAmJiAhZykgewogICAgICB0aGlzLl9ieUdyb3VwW2dyb3VwXSA9IHRoaXMuX2J5R3JvdXBbZ3JvdXBdIHx8IHt9OwogICAgICBnID0gdGhpcy5fZ3JvdXBDb250YWluZXJzW2dyb3VwXSA9IEwubGF5ZXJHcm91cCgpOwogICAgICBnLmdyb3VwbmFtZSA9IGdyb3VwOwogICAgICBnLmFkZFRvKHRoaXMuX21hcCk7CiAgICB9CiAgICByZXR1cm4gZzsKICB9OwogIExheWVyTWFuYWdlci5wcm90b3R5cGUuZ2V0R3JvdXBOYW1lRnJvbUxheWVyR3JvdXAgPSBmdW5jdGlvbihsYXllckdyb3VwKSB7CiAgICByZXR1cm4gbGF5ZXJHcm91cC5ncm91cG5hbWU7CiAgfTsKICBMYXllck1hbmFnZXIucHJvdG90eXBlLmdldFZpc2libGVHcm91cHMgPSBmdW5jdGlvbigpIHsKICAgIHZhciBzZWxmID0gdGhpczsKICAgIHZhciByZXN1bHQgPSBbXTsKICAgICQuZWFjaCh0aGlzLl9ncm91cENvbnRhaW5lcnMsIGZ1bmN0aW9uKGssIHYpIHsKICAgICAgaWYgKHNlbGYuX21hcC5oYXNMYXllcih2KSkgewogICAgICAgIHJlc3VsdC5wdXNoKGspOwogICAgICB9CiAgICB9KTsKICAgIHJldHVybiByZXN1bHQ7CiAgfTsKICBMYXllck1hbmFnZXIucHJvdG90eXBlLmNsZWFyR3JvdXAgPSBmdW5jdGlvbihncm91cCkgewogICAgdmFyIHNlbGYgPSB0aGlzOwoKICAgIC8vIEZpbmQgYWxsIGxheWVycyBpbiBfYnlHcm91cFtncm91cF0KICAgIHZhciBncm91cFRhYmxlID0gdGhpcy5fYnlHcm91cFtncm91cF07CiAgICBpZiAoIWdyb3VwVGFibGUpIHsKICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIC8vIFJlbW92ZSBhbGwgbGF5ZXJzLiBNYWtlIGNvcHkgb2Yga2V5cyB0byBhdm9pZCBtdXRhdGluZyB0aGUgY29sbGVjdGlvbgogICAgLy8gYmVoaW5kIHRoZSBpdGVyYXRvciB5b3UncmUgYWNjZXNzaW5nLgogICAgdmFyIHN0YW1wcyA9IFtdOwogICAgJC5lYWNoKGdyb3VwVGFibGUsIGZ1bmN0aW9uKGssIHYpIHsKICAgICAgc3RhbXBzLnB1c2goayk7CiAgICB9KTsKICAgICQuZWFjaChzdGFtcHMsIGZ1bmN0aW9uKGksIHN0YW1wKSB7CiAgICAgIHNlbGYuX3JlbW92ZUxheWVyKHN0YW1wKTsKICAgIH0pOwogIH07CiAgTGF5ZXJNYW5hZ2VyLnByb3RvdHlwZS5jbGVhciA9IGZ1bmN0aW9uKCkgewogICAgZnVuY3Rpb24gY2xlYXJMYXllckdyb3VwKGtleSwgbGF5ZXJHcm91cCkgewogICAgICBsYXllckdyb3VwLmNsZWFyTGF5ZXJzKCk7CiAgICB9CiAgICAvLyBDbGVhciBhbGwgaW5kaWNlcyBhbmQgbGF5ZXJHcm91cHMKICAgIHRoaXMuX2J5R3JvdXAgPSB7fTsKICAgIHRoaXMuX2J5Q2F0ZWdvcnkgPSB7fTsKICAgIHRoaXMuX2J5TGF5ZXJJZCA9IHt9OwogICAgdGhpcy5fYnlTdGFtcCA9IHt9OwogICAgJC5lYWNoKHRoaXMuX2NhdGVnb3J5Q29udGFpbmVycywgY2xlYXJMYXllckdyb3VwKTsKICAgIHRoaXMuX2NhdGVnb3J5Q29udGFpbmVycyA9IHt9OwogICAgJC5lYWNoKHRoaXMuX2dyb3VwQ29udGFpbmVycywgY2xlYXJMYXllckdyb3VwKTsKICAgIHRoaXMuX2dyb3VwQ29udGFpbmVycyA9IHt9OwogIH07CiAgTGF5ZXJNYW5hZ2VyLnByb3RvdHlwZS5fcmVtb3ZlTGF5ZXIgPSBmdW5jdGlvbihsYXllcikgewogICAgdmFyIHN0YW1wOwogICAgaWYgKHR5cGVvZihsYXllcikgPT09ICJzdHJpbmciKSB7CiAgICAgIHN0YW1wID0gbGF5ZXI7CiAgICB9IGVsc2UgewogICAgICBzdGFtcCA9IEwuVXRpbC5zdGFtcChsYXllcik7CiAgICB9CgogICAgdmFyIGxheWVySW5mbyA9IHRoaXMuX2J5U3RhbXBbc3RhbXBdOwogICAgaWYgKCFsYXllckluZm8pIHsKICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIGxheWVySW5mby5jb250YWluZXIucmVtb3ZlTGF5ZXIoc3RhbXApOwogICAgaWYgKHR5cGVvZihsYXllckluZm8uZ3JvdXApID09PSAic3RyaW5nIikgewogICAgICBkZWxldGUgdGhpcy5fYnlHcm91cFtsYXllckluZm8uZ3JvdXBdW3N0YW1wXTsKICAgIH0KICAgIGlmICh0eXBlb2YobGF5ZXJJbmZvLmxheWVySWQpID09PSAic3RyaW5nIikgewogICAgICBkZWxldGUgdGhpcy5fYnlMYXllcklkW3RoaXMuX2xheWVySWRLZXkobGF5ZXJJbmZvLmNhdGVnb3J5LCBsYXllckluZm8ubGF5ZXJJZCldOwogICAgfQogICAgZGVsZXRlIHRoaXMuX2J5Q2F0ZWdvcnlbbGF5ZXJJbmZvLmNhdGVnb3J5XVtzdGFtcF07CiAgICBkZWxldGUgdGhpcy5fYnlTdGFtcFtzdGFtcF07CiAgfTsKICBMYXllck1hbmFnZXIucHJvdG90eXBlLl9sYXllcklkS2V5ID0gZnVuY3Rpb24oY2F0ZWdvcnksIGxheWVySWQpIHsKICAgIHJldHVybiBjYXRlZ29yeSArICJcbiIgKyBsYXllcklkOwogIH07CgogIGZ1bmN0aW9uIENvbnRyb2xTdG9yZShtYXApIHsKICAgIHRoaXMuX2NvbnRyb2xzTm9JZCA9IFtdOwogICAgdGhpcy5fY29udHJvbHNCeUlkID0ge307CiAgICB0aGlzLl9tYXAgPSBtYXAKICB9CgogIENvbnRyb2xTdG9yZS5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24oY29udHJvbCwgaWQsIGh0bWwpIHsKICAgIGlmICh0eXBlb2YoaWQpICE9PSAndW5kZWZpbmVkJyAmJiBpZCAhPT0gbnVsbCkgewogICAgICBpZiAodGhpcy5fY29udHJvbHNCeUlkW2lkXSkgewogICAgICAgIHRoaXMuX21hcC5yZW1vdmVDb250cm9sKHRoaXMuX2NvbnRyb2xzQnlJZFtpZF0pOwogICAgICB9CiAgICAgIHRoaXMuX2NvbnRyb2xzQnlJZFtpZF0gPSBjb250cm9sOwogICAgfSBlbHNlIHsKICAgICAgdGhpcy5fY29udHJvbHNOb0lkLnB1c2goY29udHJvbCkKICAgIH0KICAgIHRoaXMuX21hcC5hZGRDb250cm9sKGNvbnRyb2wpOwogIH07CgogIENvbnRyb2xTdG9yZS5wcm90b3R5cGUucmVtb3ZlID0gZnVuY3Rpb24oaWQpIHsKICAgIGlmICh0aGlzLl9jb250cm9sc0J5SWRbaWRdKSB7CiAgICAgIHZhciBjb250cm9sID0gdGhpcy5fY29udHJvbHNCeUlkW2lkXTsKICAgICAgdGhpcy5fbWFwLnJlbW92ZUNvbnRyb2woY29udHJvbCk7CiAgICAgIGRlbGV0ZSB0aGlzLl9jb250cm9sc0J5SWRbaWRdOwogICAgfQogIH07CgogIENvbnRyb2xTdG9yZS5wcm90b3R5cGUuY2xlYXIgPSBmdW5jdGlvbigpIHsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fY29udHJvbHNOb0lkLmxlbmd0aDsgaSsrKSB7CiAgICAgIHZhciBjb250cm9sID0gdGhpcy5fY29udHJvbHNOb0lkW2ldOwogICAgICB0aGlzLl9tYXAucmVtb3ZlQ29udHJvbChjb250cm9sKTsKICAgIH07CiAgICB0aGlzLl9jb250cm9sc05vSWQgPSBbXTsKCiAgICBmb3IgKHZhciBrZXkgaW4gdGhpcy5fY29udHJvbHNCeUlkKSB7CiAgICAgIHZhciBjb250cm9sID0gdGhpcy5fY29udHJvbHNCeUlkW2tleV07CiAgICAgIHRoaXMuX21hcC5yZW1vdmVDb250cm9sKGNvbnRyb2wpCiAgICB9CiAgICB0aGlzLl9jb250cm9sc0J5SWQgPSB7fQogIH0KCiAgZnVuY3Rpb24gQ2x1c3RlckxheWVyU3RvcmUoZ3JvdXApIHsKICAgIHRoaXMuX2xheWVycyA9IHt9OwogICAgdGhpcy5fZ3JvdXAgPSBncm91cDsKICB9CgogIENsdXN0ZXJMYXllclN0b3JlLnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbihsYXllciwgaWQpIHsKICAgIGlmICh0eXBlb2YoaWQpICE9PSAndW5kZWZpbmVkJyAmJiBpZCAhPT0gbnVsbCkgewogICAgICBpZiAodGhpcy5fbGF5ZXJzW2lkXSkgewogICAgICAgIHRoaXMuX2dyb3VwLnJlbW92ZUxheWVyKHRoaXMuX2xheWVyc1tpZF0pOwogICAgICB9CiAgICAgIHRoaXMuX2xheWVyc1tpZF0gPSBsYXllcjsKICAgIH0KICAgIHRoaXMuX2dyb3VwLmFkZExheWVyKGxheWVyKTsKICB9OwoKICBDbHVzdGVyTGF5ZXJTdG9yZS5wcm90b3R5cGUucmVtb3ZlID0gZnVuY3Rpb24oaWQpIHsKICAgIGlmICh0eXBlb2YoaWQpID09PSAndW5kZWZpbmVkJyB8fCBpZCA9PT0gbnVsbCkgewogICAgICByZXR1cm47CiAgICB9CgogICAgaWQgPSBhc0FycmF5KGlkKTsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaWQubGVuZ3RoOyBpKyspIHsKICAgICAgaWYgKHRoaXMuX2xheWVyc1tpZFtpXV0pIHsKICAgICAgICB0aGlzLl9ncm91cC5yZW1vdmVMYXllcih0aGlzLl9sYXllcnNbaWRbaV1dKTsKICAgICAgICBkZWxldGUgdGhpcy5fbGF5ZXJzW2lkW2ldXTsKICAgICAgfQogICAgfQogIH07CgogIENsdXN0ZXJMYXllclN0b3JlLnByb3RvdHlwZS5jbGVhciA9IGZ1bmN0aW9uKCkgewogICAgdGhpcy5fbGF5ZXJzID0ge307CiAgICB0aGlzLl9ncm91cC5jbGVhckxheWVycygpOwogIH07CgogIGZ1bmN0aW9uIG1vdXNlSGFuZGxlcihtYXBJZCwgbGF5ZXJJZCwgZ3JvdXAsIGV2ZW50TmFtZSwgZXh0cmFJbmZvKSB7CiAgICByZXR1cm4gZnVuY3Rpb24oZSkgewogICAgICBpZiAoIUhUTUxXaWRnZXRzLnNoaW55TW9kZSkgcmV0dXJuOwoKICAgICAgdmFyIGV2ZW50SW5mbyA9ICQuZXh0ZW5kKAogICAgICAgIHsKICAgICAgICAgIGlkOiBsYXllcklkLAogICAgICAgICAgJy5ub25jZSc6IE1hdGgucmFuZG9tKCkgIC8vIGZvcmNlIHJlYWN0aXZpdHkKICAgICAgICB9LAogICAgICAgIGdyb3VwICE9PSBudWxsID8ge2dyb3VwOiBncm91cH0gOiBudWxsLAogICAgICAgIGUudGFyZ2V0LmdldExhdExuZyA/IGUudGFyZ2V0LmdldExhdExuZygpIDogZS5sYXRsbmcsCiAgICAgICAgZXh0cmFJbmZvCiAgICAgICk7CgogICAgICBTaGlueS5vbklucHV0Q2hhbmdlKG1hcElkICsgJ18nICsgZXZlbnROYW1lLCBldmVudEluZm8pOwogICAgfTsKICB9CgogIC8vIFNlbmQgdXBkYXRlZCBib3VuZHMgYmFjayB0byBhcHAuIFRha2VzIGEgbGVhZmxldCBldmVudCBvYmplY3QgYXMgaW5wdXQuCiAgZnVuY3Rpb24gdXBkYXRlQm91bmRzKG1hcCkgewogICAgdmFyIGlkID0gbWFwLmdldENvbnRhaW5lcigpLmlkOwogICAgdmFyIGJvdW5kcyA9IG1hcC5nZXRCb3VuZHMoKTsKCiAgICBTaGlueS5vbklucHV0Q2hhbmdlKGlkICsgJ19ib3VuZHMnLCB7CiAgICAgIG5vcnRoOiBib3VuZHMuZ2V0Tm9ydGhFYXN0KCkubGF0LAogICAgICBlYXN0OiBib3VuZHMuZ2V0Tm9ydGhFYXN0KCkubG5nLAogICAgICBzb3V0aDogYm91bmRzLmdldFNvdXRoV2VzdCgpLmxhdCwKICAgICAgd2VzdDogYm91bmRzLmdldFNvdXRoV2VzdCgpLmxuZwogICAgfSk7CiAgICBTaGlueS5vbklucHV0Q2hhbmdlKGlkICsgJ196b29tJywgbWFwLmdldFpvb20oKSk7CiAgfQoKICB3aW5kb3cuTGVhZmxldFdpZGdldCA9IHt9OwogIHZhciBtZXRob2RzID0gd2luZG93LkxlYWZsZXRXaWRnZXQubWV0aG9kcyA9IHt9OwoKICBtZXRob2RzLmNsZWFyR3JvdXAgPSBmdW5jdGlvbihncm91cCkgewogICAgdmFyIHNlbGYgPSB0aGlzOwogICAgJC5lYWNoKGFzQXJyYXkoZ3JvdXApLCBmdW5jdGlvbihpLCB2KSB7CiAgICAgIHNlbGYubGF5ZXJNYW5hZ2VyLmNsZWFyR3JvdXAodik7CiAgICB9KTsKICB9OwoKICBtZXRob2RzLnNldFZpZXcgPSBmdW5jdGlvbihjZW50ZXIsIHpvb20sIG9wdGlvbnMpIHsKICAgIHRoaXMuc2V0VmlldyhjZW50ZXIsIHpvb20sIG9wdGlvbnMpOwogIH07CgogIG1ldGhvZHMuZml0Qm91bmRzID0gZnVuY3Rpb24obGF0MSwgbG5nMSwgbGF0MiwgbG5nMikgewogICAgdGhpcy5maXRCb3VuZHMoWwogICAgICBbbGF0MSwgbG5nMV0sIFtsYXQyLCBsbmcyXQogICAgXSk7CiAgfTsKCiAgbWV0aG9kcy5zZXRNYXhCb3VuZHMgPSBmdW5jdGlvbihsYXQxLCBsbmcxLCBsYXQyLCBsbmcyKSB7CiAgICB0aGlzLnNldE1heEJvdW5kcyhbCiAgICAgIFtsYXQxLCBsbmcxXSwgW2xhdDIsIGxuZzJdCiAgICBdKTsKICB9OwoKICBtZXRob2RzLmFkZFBvcHVwcyA9IGZ1bmN0aW9uKGxhdCwgbG5nLCBwb3B1cCwgbGF5ZXJJZCwgZ3JvdXAsIG9wdGlvbnMpIHsKICAgIHZhciBkZiA9IGRhdGFmcmFtZS5jcmVhdGUoKQogICAgICAuY29sKCdsYXQnLCBsYXQpCiAgICAgIC5jb2woJ2xuZycsIGxuZykKICAgICAgLmNvbCgncG9wdXAnLCBwb3B1cCkKICAgICAgLmNvbCgnbGF5ZXJJZCcsIGxheWVySWQpCiAgICAgIC5jb2woJ2dyb3VwJywgZ3JvdXApCiAgICAgIC5jYmluZChvcHRpb25zKTsKCiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRmLm5yb3coKTsgaSsrKSB7CiAgICAgIChmdW5jdGlvbigpIHsKICAgICAgICB2YXIgcG9wdXAgPSBMLnBvcHVwKGRmLmdldChpKSkKICAgICAgICAgICAgICAgICAgICAgLnNldExhdExuZyhbZGYuZ2V0KGksICdsYXQnKSwgZGYuZ2V0KGksICdsbmcnKV0pCiAgICAgICAgICAgICAgICAgICAgIC5zZXRDb250ZW50KGRmLmdldChpLCAncG9wdXAnKSk7CiAgICAgICAgdmFyIHRoaXNJZCA9IGRmLmdldChpLCAnbGF5ZXJJZCcpOwogICAgICAgIHZhciB0aGlzR3JvdXAgPSBkZi5nZXQoaSwgJ2dyb3VwJyk7CiAgICAgICAgdGhpcy5sYXllck1hbmFnZXIuYWRkTGF5ZXIocG9wdXAsICJwb3B1cCIsIHRoaXNJZCwgdGhpc0dyb3VwKTsKICAgICAgICBwb3B1cC5vbignY2xpY2snLCBtb3VzZUhhbmRsZXIodGhpcy5pZCwgdGhpc0lkLCB0aGlzR3JvdXAsICdwb3B1cF9jbGljaycpLCB0aGlzKTsKICAgICAgICBwb3B1cC5vbignbW91c2VvdmVyJywgbW91c2VIYW5kbGVyKHRoaXMuaWQsIHRoaXNJZCwgdGhpc0dyb3VwLCAncG9wdXBfbW91c2VvdmVyJyksIHRoaXMpOwogICAgICAgIHBvcHVwLm9uKCdtb3VzZW91dCcsIG1vdXNlSGFuZGxlcih0aGlzLmlkLCB0aGlzSWQsIHRoaXNHcm91cCwgJ3BvcHVwX21vdXNlb3V0JyksIHRoaXMpOwogICAgICB9KS5jYWxsKHRoaXMpOwogICAgfQogIH07CgogIG1ldGhvZHMucmVtb3ZlUG9wdXAgPSBmdW5jdGlvbihsYXllcklkKSB7CiAgICB0aGlzLmxheWVyTWFuYWdlci5yZW1vdmVMYXllcigicG9wdXAiLCBsYXllcklkKTsKICB9OwoKICBtZXRob2RzLmNsZWFyUG9wdXBzID0gZnVuY3Rpb24oKSB7CiAgICB0aGlzLmxheWVyTWFuYWdlci5jbGVhckxheWVycygicG9wdXAiKTsKICB9OwoKICBtZXRob2RzLmFkZFRpbGVzID0gZnVuY3Rpb24odXJsVGVtcGxhdGUsIGxheWVySWQsIGdyb3VwLCBvcHRpb25zKSB7CiAgICB0aGlzLmxheWVyTWFuYWdlci5hZGRMYXllcihMLnRpbGVMYXllcih1cmxUZW1wbGF0ZSwgb3B0aW9ucyksICJ0aWxlIiwgbGF5ZXJJZCwgZ3JvdXApOwogIH07CgogIG1ldGhvZHMucmVtb3ZlVGlsZXMgPSBmdW5jdGlvbihsYXllcklkKSB7CiAgICB0aGlzLmxheWVyTWFuYWdlci5yZW1vdmVMYXllcigidGlsZSIsIGxheWVySWQpOwogIH07CgogIG1ldGhvZHMuY2xlYXJUaWxlcyA9IGZ1bmN0aW9uKCkgewogICAgdGhpcy5sYXllck1hbmFnZXIuY2xlYXJMYXllcnMoInRpbGUiKTsKICB9OwoKICBtZXRob2RzLmFkZFdNU1RpbGVzID0gZnVuY3Rpb24oYmFzZVVybCwgbGF5ZXJJZCwgZ3JvdXAsIG9wdGlvbnMpIHsKICAgIHRoaXMubGF5ZXJNYW5hZ2VyLmFkZExheWVyKEwudGlsZUxheWVyLndtcyhiYXNlVXJsLCBvcHRpb25zKSwgInRpbGUiLCBsYXllcklkLCBncm91cCk7CiAgfTsKCiAgLy8gR2l2ZW46CiAgLy8gICB7ZGF0YTogWyJhIiwgImIiLCAiYyJdLCBpbmRleDogWzAsIDEsIDAsIDJdfQogIC8vIHJldHVybnM6CiAgLy8gICBbImEiLCAiYiIsICJhIiwgImMiXQogIGZ1bmN0aW9uIHVucGFja1N0cmluZ3MoaWNvbnNldCkgewogICAgaWYgKCFpY29uc2V0KSB7CiAgICAgIHJldHVybiBpY29uc2V0OwogICAgfQogICAgaWYgKHR5cGVvZihpY29uc2V0LmluZGV4KSA9PT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgcmV0dXJuIGljb25zZXQ7CiAgICB9CgogICAgaWNvbnNldC5kYXRhID0gYXNBcnJheShpY29uc2V0LmRhdGEpOwogICAgaWNvbnNldC5pbmRleCA9IGFzQXJyYXkoaWNvbnNldC5pbmRleCk7CgogICAgcmV0dXJuICQubWFwKGljb25zZXQuaW5kZXgsIGZ1bmN0aW9uKGUsIGkpIHsKICAgICAgcmV0dXJuIGljb25zZXQuZGF0YVtlXTsKICAgIH0pOwogIH0KCiAgZnVuY3Rpb24gYWRkTWFya2VycyhtYXAsIGRmLCBncm91cCwgY2x1c3Rlck9wdGlvbnMsIGNsdXN0ZXJJZCwgbWFya2VyRnVuYykgewogICAgKGZ1bmN0aW9uKCkgewogICAgICB2YXIgY2x1c3Rlckdyb3VwID0gdGhpcy5sYXllck1hbmFnZXIuZ2V0TGF5ZXIoImNsdXN0ZXIiLCBjbHVzdGVySWQpLAogICAgICAgICAgY2x1c3RlciA9IGNsdXN0ZXJPcHRpb25zICE9PSBudWxsOwogICAgICBpZiAoY2x1c3RlciAmJiAhY2x1c3Rlckdyb3VwKSB7CiAgICAgICAgY2x1c3Rlckdyb3VwID0gTC5tYXJrZXJDbHVzdGVyR3JvdXAoY2x1c3Rlck9wdGlvbnMpOwogICAgICAgIGNsdXN0ZXJHcm91cC5jbHVzdGVyTGF5ZXJTdG9yZSA9IG5ldyBDbHVzdGVyTGF5ZXJTdG9yZShjbHVzdGVyR3JvdXApOwogICAgICB9CiAgICAgIHZhciBleHRyYUluZm8gPSBjbHVzdGVyID8geyBjbHVzdGVySWQ6IGNsdXN0ZXJJZCB9IDoge307CgogICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRmLm5yb3coKTsgaSsrKSB7CiAgICAgICAgKGZ1bmN0aW9uKCkgewogICAgICAgICAgdmFyIG1hcmtlciA9IG1hcmtlckZ1bmMoZGYsIGkpOwogICAgICAgICAgdmFyIHRoaXNJZCA9IGRmLmdldChpLCAnbGF5ZXJJZCcpOwogICAgICAgICAgdmFyIHRoaXNHcm91cCA9IGNsdXN0ZXIgPyBudWxsIDogZGYuZ2V0KGksICdncm91cCcpOwogICAgICAgICAgaWYgKGNsdXN0ZXIpIHsKICAgICAgICAgICAgY2x1c3Rlckdyb3VwLmNsdXN0ZXJMYXllclN0b3JlLmFkZChtYXJrZXIsIHRoaXNJZCk7CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICB0aGlzLmxheWVyTWFuYWdlci5hZGRMYXllcihtYXJrZXIsICJtYXJrZXIiLCB0aGlzSWQsIHRoaXNHcm91cCk7CiAgICAgICAgICB9CiAgICAgICAgICB2YXIgcG9wdXAgPSBkZi5nZXQoaSwgJ3BvcHVwJyk7CiAgICAgICAgICBpZiAocG9wdXAgIT09IG51bGwpIG1hcmtlci5iaW5kUG9wdXAocG9wdXApOwogICAgICAgICAgbWFya2VyLm9uKCdjbGljaycsIG1vdXNlSGFuZGxlcih0aGlzLmlkLCB0aGlzSWQsIHRoaXNHcm91cCwgJ21hcmtlcl9jbGljaycsIGV4dHJhSW5mbyksIHRoaXMpOwogICAgICAgICAgbWFya2VyLm9uKCdtb3VzZW92ZXInLCBtb3VzZUhhbmRsZXIodGhpcy5pZCwgdGhpc0lkLCB0aGlzR3JvdXAsICdtYXJrZXJfbW91c2VvdmVyJywgZXh0cmFJbmZvKSwgdGhpcyk7CiAgICAgICAgICBtYXJrZXIub24oJ21vdXNlb3V0JywgbW91c2VIYW5kbGVyKHRoaXMuaWQsIHRoaXNJZCwgdGhpc0dyb3VwLCAnbWFya2VyX21vdXNlb3V0JywgZXh0cmFJbmZvKSwgdGhpcyk7CiAgICAgICAgfSkuY2FsbCh0aGlzKTsKICAgICAgfQoKICAgICAgaWYgKGNsdXN0ZXIpIHsKICAgICAgICB0aGlzLmxheWVyTWFuYWdlci5hZGRMYXllcihjbHVzdGVyR3JvdXAsICJjbHVzdGVyIiwgY2x1c3RlcklkLCBncm91cCk7CiAgICAgIH0KICAgIH0pLmNhbGwobWFwKTsKICB9CgogIG1ldGhvZHMuYWRkTWFya2VycyA9IGZ1bmN0aW9uKGxhdCwgbG5nLCBpY29uLCBsYXllcklkLCBncm91cCwgb3B0aW9ucywgcG9wdXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2x1c3Rlck9wdGlvbnMsIGNsdXN0ZXJJZCkgewogICAgaWYgKGljb24pIHsKICAgICAgLy8gVW5wYWNrIGljb25zCiAgICAgIGljb24uaWNvblVybCAgICAgICAgID0gdW5wYWNrU3RyaW5ncyhpY29uLmljb25VcmwpOwogICAgICBpY29uLmljb25SZXRpbmFVcmwgICA9IHVucGFja1N0cmluZ3MoaWNvbi5pY29uUmV0aW5hVXJsKTsKICAgICAgaWNvbi5zaGFkb3dVcmwgICAgICAgPSB1bnBhY2tTdHJpbmdzKGljb24uc2hhZG93VXJsKTsKICAgICAgaWNvbi5zaGFkb3dSZXRpbmFVcmwgPSB1bnBhY2tTdHJpbmdzKGljb24uc2hhZG93UmV0aW5hVXJsKTsKCiAgICAgIC8vIFRoaXMgY2JpbmRzIHRoZSBpY29uIFVSTHMgYW5kIGFueSBvdGhlciBpY29uIG9wdGlvbnM7IHRoZXkncmUgYWxsCiAgICAgIC8vIHByZXNlbnQgb24gdGhlIGljb24gb2JqZWN0LgogICAgICB2YXIgaWNvbmRmID0gZGF0YWZyYW1lLmNyZWF0ZSgpLmNiaW5kKGljb24pOwoKICAgICAgLy8gQ29uc3RydWN0cyBhbiBpY29uIGZyb20gYSBzcGVjaWZpZWQgcm93IG9mIHRoZSBpY29uIGRhdGFmcmFtZS4KICAgICAgdmFyIGdldEljb24gPSBmdW5jdGlvbihpKSB7CiAgICAgICAgdmFyIG9wdHMgPSBpY29uZGYuZ2V0KGkpOwogICAgICAgIGlmICghb3B0cy5pY29uVXJsKSB7CiAgICAgICAgICByZXR1cm4gbmV3IEwuSWNvbi5EZWZhdWx0KCk7CiAgICAgICAgfQoKICAgICAgICAvLyBDb21wb3NpdGUgb3B0aW9ucyAobGlrZSBwb2ludHMgb3Igc2l6ZXMpIGFyZSBwYXNzZWQgZnJvbSBSIHdpdGggZWFjaAogICAgICAgIC8vIGluZGl2aWR1YWwgY29tcG9uZW50IGFzIGl0cyBvd24gb3B0aW9uLiBXZSBuZWVkIHRvIGNvbWJpbmUgdGhlbSBub3cKICAgICAgICAvLyBpbnRvIHRoZWlyIGNvbXBvc2l0ZSBmb3JtLgogICAgICAgIGlmIChvcHRzLmljb25XaWR0aCkgewogICAgICAgICAgb3B0cy5pY29uU2l6ZSA9IFtvcHRzLmljb25XaWR0aCwgb3B0cy5pY29uSGVpZ2h0XTsKICAgICAgICB9CiAgICAgICAgaWYgKG9wdHMuc2hhZG93V2lkdGgpIHsKICAgICAgICAgIG9wdHMuc2hhZG93U2l6ZSA9IFtvcHRzLnNoYWRvd1dpZHRoLCBvcHRzLnNoYWRvd0hlaWdodF07CiAgICAgICAgfQogICAgICAgIGlmIChvcHRzLmljb25BbmNob3JYKSB7CiAgICAgICAgICBvcHRzLmljb25BbmNob3IgPSBbb3B0cy5pY29uQW5jaG9yWCwgb3B0cy5pY29uQW5jaG9yWV07CiAgICAgICAgfQogICAgICAgIGlmIChvcHRzLnNoYWRvd0FuY2hvclgpIHsKICAgICAgICAgIG9wdHMuc2hhZG93QW5jaG9yID0gW29wdHMuc2hhZG93QW5jaG9yWCwgb3B0cy5zaGFkb3dBbmNob3JZXTsKICAgICAgICB9CiAgICAgICAgaWYgKG9wdHMucG9wdXBBbmNob3JYKSB7CiAgICAgICAgICBvcHRzLnBvcHVwQW5jaG9yID0gW29wdHMucG9wdXBBbmNob3JYLCBvcHRzLnBvcHVwQW5jaG9yWV07CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbmV3IEwuSWNvbihvcHRzKTsKICAgICAgfTsKICAgIH0KCiAgICB2YXIgZGYgPSBkYXRhZnJhbWUuY3JlYXRlKCkKICAgICAgLmNvbCgnbGF0JywgbGF0KQogICAgICAuY29sKCdsbmcnLCBsbmcpCiAgICAgIC5jb2woJ2xheWVySWQnLCBsYXllcklkKQogICAgICAuY29sKCdncm91cCcsIGdyb3VwKQogICAgICAuY29sKCdwb3B1cCcsIHBvcHVwKQogICAgICAuY2JpbmQob3B0aW9ucyk7CgogICAgaWYgKGljb24pIGljb25kZi5lZmZlY3RpdmVMZW5ndGggPSBkZi5ucm93KCk7CgogICAgYWRkTWFya2Vycyh0aGlzLCBkZiwgZ3JvdXAsIGNsdXN0ZXJPcHRpb25zLCBjbHVzdGVySWQsIGZ1bmN0aW9uKGRmLCBpKSB7CiAgICAgIHZhciBvcHRpb25zID0gZGYuZ2V0KGkpOwogICAgICBpZiAoaWNvbikgb3B0aW9ucy5pY29uID0gZ2V0SWNvbihpKTsKICAgICAgcmV0dXJuIEwubWFya2VyKFtkZi5nZXQoaSwgJ2xhdCcpLCBkZi5nZXQoaSwgJ2xuZycpXSwgb3B0aW9ucyk7CiAgICB9KTsKICB9OwoKICBhZGRMYXllcnMgPSBmdW5jdGlvbihtYXAsIGNhdGVnb3J5LCBkZiwgbGF5ZXJGdW5jKSB7CiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRmLm5yb3coKTsgaSsrKSB7CiAgICAgIChmdW5jdGlvbigpIHsKICAgICAgICB2YXIgbGF5ZXIgPSBsYXllckZ1bmMoZGYsIGkpOwogICAgICAgIHZhciB0aGlzSWQgPSBkZi5nZXQoaSwgJ2xheWVySWQnKTsKICAgICAgICB2YXIgdGhpc0dyb3VwID0gZGYuZ2V0KGksICdncm91cCcpOwogICAgICAgIHRoaXMubGF5ZXJNYW5hZ2VyLmFkZExheWVyKGxheWVyLCBjYXRlZ29yeSwgdGhpc0lkLCB0aGlzR3JvdXApOwogICAgICAgIGlmIChsYXllci5iaW5kUG9wdXApIHsKICAgICAgICAgIHZhciBwb3B1cCA9IGRmLmdldChpLCAncG9wdXAnKTsKICAgICAgICAgIGlmIChwb3B1cCAhPT0gbnVsbCkgbGF5ZXIuYmluZFBvcHVwKHBvcHVwKTsKICAgICAgICB9CiAgICAgICAgbGF5ZXIub24oJ2NsaWNrJywgbW91c2VIYW5kbGVyKHRoaXMuaWQsIHRoaXNJZCwgdGhpc0dyb3VwLCBjYXRlZ29yeSArICdfY2xpY2snKSwgdGhpcyk7CiAgICAgICAgbGF5ZXIub24oJ21vdXNlb3ZlcicsIG1vdXNlSGFuZGxlcih0aGlzLmlkLCB0aGlzSWQsIHRoaXNHcm91cCwgY2F0ZWdvcnkgKyAnX21vdXNlb3ZlcicpLCB0aGlzKTsKICAgICAgICBsYXllci5vbignbW91c2VvdXQnLCBtb3VzZUhhbmRsZXIodGhpcy5pZCwgdGhpc0lkLCB0aGlzR3JvdXAsIGNhdGVnb3J5ICsgJ19tb3VzZW91dCcpLCB0aGlzKTsKICAgICAgfSkuY2FsbChtYXApOwogICAgfQogIH0KCiAgbWV0aG9kcy5hZGRDaXJjbGVzID0gZnVuY3Rpb24obGF0LCBsbmcsIHJhZGl1cywgbGF5ZXJJZCwgZ3JvdXAsIG9wdGlvbnMsIHBvcHVwKSB7CiAgICB2YXIgZGYgPSBkYXRhZnJhbWUuY3JlYXRlKCkKICAgICAgLmNvbCgnbGF0JywgbGF0KQogICAgICAuY29sKCdsbmcnLCBsbmcpCiAgICAgIC5jb2woJ3JhZGl1cycsIHJhZGl1cykKICAgICAgLmNvbCgnbGF5ZXJJZCcsIGxheWVySWQpCiAgICAgIC5jb2woJ2dyb3VwJywgZ3JvdXApCiAgICAgIC5jb2woJ3BvcHVwJywgcG9wdXApCiAgICAgIC5jYmluZChvcHRpb25zKTsKCiAgICBhZGRMYXllcnModGhpcywgInNoYXBlIiwgZGYsIGZ1bmN0aW9uKGRmLCBpKSB7CiAgICAgIHJldHVybiBMLmNpcmNsZShbZGYuZ2V0KGksICdsYXQnKSwgZGYuZ2V0KGksICdsbmcnKV0sIGRmLmdldChpLCAncmFkaXVzJyksIGRmLmdldChpKSk7CiAgICB9KTsKICB9OwoKICBtZXRob2RzLmFkZENpcmNsZU1hcmtlcnMgPSBmdW5jdGlvbihsYXQsIGxuZywgcmFkaXVzLCBsYXllcklkLCBncm91cCwgb3B0aW9ucywgY2x1c3Rlck9wdGlvbnMsIGNsdXN0ZXJJZCwgcG9wdXApIHsKICAgIHZhciBkZiA9IGRhdGFmcmFtZS5jcmVhdGUoKQogICAgICAuY29sKCdsYXQnLCBsYXQpCiAgICAgIC5jb2woJ2xuZycsIGxuZykKICAgICAgLmNvbCgncmFkaXVzJywgcmFkaXVzKQogICAgICAuY29sKCdsYXllcklkJywgbGF5ZXJJZCkKICAgICAgLmNvbCgnZ3JvdXAnLCBncm91cCkKICAgICAgLmNvbCgncG9wdXAnLCBwb3B1cCkKICAgICAgLmNiaW5kKG9wdGlvbnMpOwoKICAgIGFkZE1hcmtlcnModGhpcywgZGYsIGdyb3VwLCBjbHVzdGVyT3B0aW9ucywgY2x1c3RlcklkLCBmdW5jdGlvbihkZiwgaSkgewogICAgICByZXR1cm4gTC5jaXJjbGVNYXJrZXIoW2RmLmdldChpLCAnbGF0JyksIGRmLmdldChpLCAnbG5nJyldLCBkZi5nZXQoaSkpOwogICAgfSk7CiAgfTsKCiAgLyoKICAgKiBAcGFyYW0gbGF0IEFycmF5IG9mIGFycmF5cyBvZiBsYXRpdHVkZSBjb29yZGluYXRlcyBmb3IgcG9seWxpbmVzCiAgICogQHBhcmFtIGxuZyBBcnJheSBvZiBhcnJheXMgb2YgbG9uZ2l0dWRlIGNvb3JkaW5hdGVzIGZvciBwb2x5bGluZXMKICAgKi8KICBtZXRob2RzLmFkZFBvbHlsaW5lcyA9IGZ1bmN0aW9uKHBvbHlnb25zLCBsYXllcklkLCBncm91cCwgb3B0aW9ucywgcG9wdXApIHsKICAgIHZhciBkZiA9IGRhdGFmcmFtZS5jcmVhdGUoKQogICAgICAuY29sKCdzaGFwZXMnLCBwb2x5Z29ucykKICAgICAgLmNvbCgnbGF5ZXJJZCcsIGxheWVySWQpCiAgICAgIC5jb2woJ2dyb3VwJywgZ3JvdXApCiAgICAgIC5jb2woJ3BvcHVwJywgcG9wdXApCiAgICAgIC5jYmluZChvcHRpb25zKTsKCiAgICBhZGRMYXllcnModGhpcywgInNoYXBlIiwgZGYsIGZ1bmN0aW9uKGRmLCBpKSB7CiAgICAgICAgdmFyIHNoYXBlID0gZGYuZ2V0KGksICdzaGFwZXMnKVswXTsKICAgICAgICBzaGFwZSA9IEhUTUxXaWRnZXRzLmRhdGFmcmFtZVRvRDMoc2hhcGUpOwogICAgICAgIHJldHVybiBMLnBvbHlsaW5lKHNoYXBlLCBkZi5nZXQoaSkpOwogICAgfSk7CiAgfTsKCiAgbWV0aG9kcy5yZW1vdmVNYXJrZXIgPSBmdW5jdGlvbihsYXllcklkKSB7CiAgICB0aGlzLmxheWVyTWFuYWdlci5yZW1vdmVMYXllcigibWFya2VyIiwgbGF5ZXJJZCk7CiAgfTsKCiAgbWV0aG9kcy5jbGVhck1hcmtlcnMgPSBmdW5jdGlvbigpIHsKICAgIHRoaXMubGF5ZXJNYW5hZ2VyLmNsZWFyTGF5ZXJzKCJtYXJrZXIiKTsKICB9OwoKICBtZXRob2RzLnJlbW92ZU1hcmtlckNsdXN0ZXIgPSBmdW5jdGlvbihsYXllcklkKSB7CiAgICB0aGlzLmxheWVyTWFuYWdlci5yZW1vdmVMYXllcigiY2x1c3RlciIsIGxheWVySWQpOwogIH0KCiAgbWV0aG9kcy5yZW1vdmVNYXJrZXJGcm9tQ2x1c3RlciA9IGZ1bmN0aW9uKGxheWVySWQsIGNsdXN0ZXJJZCkgewogICAgdmFyIGNsdXN0ZXIgPSB0aGlzLmxheWVyTWFuYWdlci5nZXRMYXllcigiY2x1c3RlciIsIGNsdXN0ZXJJZCk7CiAgICBpZiAoIWNsdXN0ZXIpIHJldHVybjsKICAgIGNsdXN0ZXIuY2x1c3RlckxheWVyU3RvcmUucmVtb3ZlKGxheWVySWQpOwogIH0KCiAgbWV0aG9kcy5jbGVhck1hcmtlckNsdXN0ZXJzID0gZnVuY3Rpb24oKSB7CiAgICB0aGlzLmxheWVyTWFuYWdlci5jbGVhckxheWVycygiY2x1c3RlciIpOwogIH07CgogIG1ldGhvZHMucmVtb3ZlU2hhcGUgPSBmdW5jdGlvbihsYXllcklkKSB7CiAgICB0aGlzLmxheWVyTWFuYWdlci5yZW1vdmVMYXllcigic2hhcGUiLCBsYXllcklkKTsKICB9OwoKICBtZXRob2RzLmNsZWFyU2hhcGVzID0gZnVuY3Rpb24oKSB7CiAgICB0aGlzLmxheWVyTWFuYWdlci5jbGVhckxheWVycygic2hhcGUiKTsKICB9OwoKICBtZXRob2RzLmFkZFJlY3RhbmdsZXMgPSBmdW5jdGlvbihsYXQxLCBsbmcxLCBsYXQyLCBsbmcyLCBsYXllcklkLCBncm91cCwgb3B0aW9ucywgcG9wdXApIHsKICAgIHZhciBkZiA9IGRhdGFmcmFtZS5jcmVhdGUoKQogICAgICAuY29sKCdsYXQxJywgbGF0MSkKICAgICAgLmNvbCgnbG5nMScsIGxuZzEpCiAgICAgIC5jb2woJ2xhdDInLCBsYXQyKQogICAgICAuY29sKCdsbmcyJywgbG5nMikKICAgICAgLmNvbCgnbGF5ZXJJZCcsIGxheWVySWQpCiAgICAgIC5jb2woJ2dyb3VwJywgZ3JvdXApCiAgICAgIC5jb2woJ3BvcHVwJywgcG9wdXApCiAgICAgIC5jYmluZChvcHRpb25zKTsKCiAgICBhZGRMYXllcnModGhpcywgInNoYXBlIiwgZGYsIGZ1bmN0aW9uKGRmLCBpKSB7CiAgICAgIHJldHVybiBMLnJlY3RhbmdsZShbCiAgICAgICAgICBbZGYuZ2V0KGksICdsYXQxJyksIGRmLmdldChpLCAnbG5nMScpXSwKICAgICAgICAgIFtkZi5nZXQoaSwgJ2xhdDInKSwgZGYuZ2V0KGksICdsbmcyJyldCiAgICAgICAgXSwKICAgICAgICBkZi5nZXQoaSkpOwogICAgfSk7CiAgfTsKCiAgLyoKICAgKiBAcGFyYW0gbGF0IEFycmF5IG9mIGFycmF5cyBvZiBsYXRpdHVkZSBjb29yZGluYXRlcyBmb3IgcG9seWdvbnMKICAgKiBAcGFyYW0gbG5nIEFycmF5IG9mIGFycmF5cyBvZiBsb25naXR1ZGUgY29vcmRpbmF0ZXMgZm9yIHBvbHlnb25zCiAgICovCiAgbWV0aG9kcy5hZGRQb2x5Z29ucyA9IGZ1bmN0aW9uKHBvbHlnb25zLCBsYXllcklkLCBncm91cCwgb3B0aW9ucywgcG9wdXApIHsKICAgIHZhciBkZiA9IGRhdGFmcmFtZS5jcmVhdGUoKQogICAgICAuY29sKCdzaGFwZXMnLCBwb2x5Z29ucykKICAgICAgLmNvbCgnbGF5ZXJJZCcsIGxheWVySWQpCiAgICAgIC5jb2woJ2dyb3VwJywgZ3JvdXApCiAgICAgIC5jb2woJ3BvcHVwJywgcG9wdXApCiAgICAgIC5jYmluZChvcHRpb25zKTsKCiAgICBhZGRMYXllcnModGhpcywgInNoYXBlIiwgZGYsIGZ1bmN0aW9uKGRmLCBpKSB7CiAgICAgIHZhciBzaGFwZXMgPSBkZi5nZXQoaSwgJ3NoYXBlcycpOwogICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHNoYXBlcy5sZW5ndGg7IGorKykgewogICAgICAgIHNoYXBlc1tqXSA9IEhUTUxXaWRnZXRzLmRhdGFmcmFtZVRvRDMoc2hhcGVzW2pdKTsKICAgICAgfQogICAgICByZXR1cm4gTC5wb2x5Z29uKHNoYXBlcywgZGYuZ2V0KGkpKTsKICAgIH0pOwogIH07CgogIG1ldGhvZHMuYWRkR2VvSlNPTiA9IGZ1bmN0aW9uKGRhdGEsIGxheWVySWQsIGdyb3VwLCBzdHlsZSkgewogICAgdmFyIHNlbGYgPSB0aGlzOwogICAgaWYgKHR5cGVvZihkYXRhKSA9PT0gInN0cmluZyIpIHsKICAgICAgZGF0YSA9IEpTT04ucGFyc2UoZGF0YSk7CiAgICB9CgogICAgdmFyIGdsb2JhbFN0eWxlID0gJC5leHRlbmQoe30sIHN0eWxlLCBkYXRhLnN0eWxlIHx8IHt9KTsKCiAgICB2YXIgZ2psYXllciA9IEwuZ2VvSnNvbihkYXRhLCB7CiAgICAgIHN0eWxlOiBmdW5jdGlvbihmZWF0dXJlKSB7CiAgICAgICAgaWYgKGZlYXR1cmUuc3R5bGUgfHwgZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlKSB7CiAgICAgICAgICByZXR1cm4gJC5leHRlbmQoe30sIGdsb2JhbFN0eWxlLCBmZWF0dXJlLnN0eWxlLCBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGUpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICByZXR1cm4gZ2xvYmFsU3R5bGU7CiAgICAgICAgfQogICAgICB9LAogICAgICBvbkVhY2hGZWF0dXJlOiBmdW5jdGlvbihmZWF0dXJlLCBsYXllcikgewogICAgICAgIHZhciBleHRyYUluZm8gPSB7CiAgICAgICAgICBmZWF0dXJlSWQ6IGZlYXR1cmUuaWQsCiAgICAgICAgICBwcm9wZXJ0aWVzOiBmZWF0dXJlLnByb3BlcnRpZXMKICAgICAgICB9OwogICAgICAgIHZhciBwb3B1cCA9IGZlYXR1cmUucHJvcGVydGllcy5wb3B1cDsKICAgICAgICBpZiAodHlwZW9mIHBvcHVwICE9PSAndW5kZWZpbmVkJyAmJiBwb3B1cCAhPT0gbnVsbCkgbGF5ZXIuYmluZFBvcHVwKHBvcHVwKTsKICAgICAgICBsYXllci5vbigiY2xpY2siLCBtb3VzZUhhbmRsZXIoc2VsZi5pZCwgbGF5ZXJJZCwgZ3JvdXAsICJnZW9qc29uX2NsaWNrIiwgZXh0cmFJbmZvKSwgdGhpcyk7CiAgICAgICAgbGF5ZXIub24oIm1vdXNlb3ZlciIsIG1vdXNlSGFuZGxlcihzZWxmLmlkLCBsYXllcklkLCBncm91cCwgImdlb2pzb25fbW91c2VvdmVyIiwgZXh0cmFJbmZvKSwgdGhpcyk7CiAgICAgICAgbGF5ZXIub24oIm1vdXNlb3V0IiwgbW91c2VIYW5kbGVyKHNlbGYuaWQsIGxheWVySWQsIGdyb3VwLCAiZ2VvanNvbl9tb3VzZW91dCIsIGV4dHJhSW5mbyksIHRoaXMpOwogICAgICB9CiAgICB9KTsKICAgIHRoaXMubGF5ZXJNYW5hZ2VyLmFkZExheWVyKGdqbGF5ZXIsICJnZW9qc29uIiwgbGF5ZXJJZCwgZ3JvdXApOwogIH07CgogIG1ldGhvZHMucmVtb3ZlR2VvSlNPTiA9IGZ1bmN0aW9uKGxheWVySWQpIHsKICAgIHRoaXMubGF5ZXJNYW5hZ2VyLnJlbW92ZUxheWVyKCJnZW9qc29uIiwgbGF5ZXJJZCk7CiAgfTsKCiAgbWV0aG9kcy5jbGVhckdlb0pTT04gPSBmdW5jdGlvbigpIHsKICAgIHRoaXMubGF5ZXJNYW5hZ2VyLmNsZWFyTGF5ZXJzKCJnZW9qc29uIik7CiAgfTsKCiAgbWV0aG9kcy5hZGRUb3BvSlNPTiA9IGZ1bmN0aW9uKGRhdGEsIGxheWVySWQsIGdyb3VwLCBzdHlsZSkgewogICAgdmFyIHNlbGYgPSB0aGlzOwogICAgaWYgKHR5cGVvZihkYXRhKSA9PT0gInN0cmluZyIpIHsKICAgICAgZGF0YSA9IEpTT04ucGFyc2UoZGF0YSk7CiAgICB9CgogICAgdmFyIGdsb2JhbFN0eWxlID0gJC5leHRlbmQoe30sIHN0eWxlLCBkYXRhLnN0eWxlIHx8IHt9KTsKCiAgICB2YXIgZ2psYXllciA9IEwuZ2VvSnNvbihudWxsLCB7CiAgICAgIHN0eWxlOiBmdW5jdGlvbihmZWF0dXJlKSB7CiAgICAgICAgaWYgKGZlYXR1cmUuc3R5bGUgfHwgZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlKSB7CiAgICAgICAgICByZXR1cm4gJC5leHRlbmQoe30sIGdsb2JhbFN0eWxlLCBmZWF0dXJlLnN0eWxlLCBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGUpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICByZXR1cm4gZ2xvYmFsU3R5bGU7CiAgICAgICAgfQogICAgICB9LAogICAgICBvbkVhY2hGZWF0dXJlOiBmdW5jdGlvbihmZWF0dXJlLCBsYXllcikgewogICAgICAgIHZhciBleHRyYUluZm8gPSB7CiAgICAgICAgICBmZWF0dXJlSWQ6IGZlYXR1cmUuaWQsCiAgICAgICAgICBwcm9wZXJ0aWVzOiBmZWF0dXJlLnByb3BlcnRpZXMKICAgICAgICB9OwogICAgICAgIHZhciBwb3B1cCA9IGZlYXR1cmUucHJvcGVydGllcy5wb3B1cDsKICAgICAgICBpZiAodHlwZW9mIHBvcHVwICE9PSAndW5kZWZpbmVkJyAmJiBwb3B1cCAhPT0gbnVsbCkgbGF5ZXIuYmluZFBvcHVwKHBvcHVwKTsKICAgICAgICBsYXllci5vbigiY2xpY2siLCBtb3VzZUhhbmRsZXIoc2VsZi5pZCwgbGF5ZXJJZCwgZ3JvdXAsICJ0b3BvanNvbl9jbGljayIsIGV4dHJhSW5mbyksIHRoaXMpOwogICAgICAgIGxheWVyLm9uKCJtb3VzZW92ZXIiLCBtb3VzZUhhbmRsZXIoc2VsZi5pZCwgbGF5ZXJJZCwgZ3JvdXAsICJ0b3BvanNvbl9tb3VzZW92ZXIiLCBleHRyYUluZm8pLCB0aGlzKTsKICAgICAgICBsYXllci5vbigibW91c2VvdXQiLCBtb3VzZUhhbmRsZXIoc2VsZi5pZCwgbGF5ZXJJZCwgZ3JvdXAsICJ0b3BvanNvbl9tb3VzZW91dCIsIGV4dHJhSW5mbyksIHRoaXMpOwogICAgICB9CiAgICB9KTsKICAgIG9tbml2b3JlLnRvcG9qc29uLnBhcnNlKGRhdGEsIG51bGwsIGdqbGF5ZXIpOwogICAgdGhpcy5sYXllck1hbmFnZXIuYWRkTGF5ZXIoZ2psYXllciwgInRvcG9qc29uIiwgbGF5ZXJJZCwgZ3JvdXApOwogIH07CgogIG1ldGhvZHMucmVtb3ZlVG9wb0pTT04gPSBmdW5jdGlvbihsYXllcklkKSB7CiAgICB0aGlzLmxheWVyTWFuYWdlci5yZW1vdmVMYXllcigidG9wb2pzb24iLCBsYXllcklkKTsKICB9OwoKICBtZXRob2RzLmNsZWFyVG9wb0pTT04gPSBmdW5jdGlvbigpIHsKICAgIHRoaXMubGF5ZXJNYW5hZ2VyLmNsZWFyTGF5ZXJzKCJ0b3BvanNvbiIpOwogIH07CgogIG1ldGhvZHMuYWRkQ29udHJvbCA9IGZ1bmN0aW9uKGh0bWwsIHBvc2l0aW9uLCBsYXllcklkLCBjbGFzc2VzKSB7CiAgICBmdW5jdGlvbiBvbkFkZChtYXApIHsKICAgICAgdmFyIGRpdiA9IEwuRG9tVXRpbC5jcmVhdGUoJ2RpdicsIGNsYXNzZXMpOwogICAgICBpZiAodHlwZW9mIGxheWVySWQgIT09ICd1bmRlZmluZWQnICYmIGxheWVySWQgIT09IG51bGwpIHsKICAgICAgICBkaXYuc2V0QXR0cmlidXRlKCdpZCcsIGxheWVySWQpCiAgICAgIH0KICAgICAgdGhpcy5fZGl2ID0gZGl2OwoKICAgICAgLy8gSXQncyBwb3NzaWJsZSBmb3Igd2luZG93LlNoaW55IHRvIGJlIHRydWUgYnV0IFNoaW55LmluaXRpYWxpemVJbnB1dHMgdG8KICAgICAgLy8gbm90IGJlLCB3aGVuIGEgc3RhdGljIGxlYWZsZXQgd2lkZ2V0IGlzIGluY2x1ZGVkIGFzIHBhcnQgb2YgdGhlIHNoaW55CiAgICAgIC8vIFVJIGRpcmVjdGx5IChub3QgdGhyb3VnaCBsZWFmbGV0T3V0cHV0IG9yIHVpT3V0cHV0KS4gSW4gdGhpcyBjYXNlIHdlCiAgICAgIC8vIGRvbid0IGRvIHRoZSBub3JtYWwgU2hpbnkgc3R1ZmYgYXMgdGhhdCB3aWxsIGFsbCBoYXBwZW4gd2hlbiBTaGlueQogICAgICAvLyBpdHNlbGYgbG9hZHMgYW5kIGJpbmRzIHRoZSBlbnRpcmUgZG9jLgoKICAgICAgaWYgKHdpbmRvdy5TaGlueSAmJiBTaGlueS5pbml0aWFsaXplSW5wdXRzKSB7CiAgICAgICAgU2hpbnkucmVuZGVySHRtbChodG1sLCB0aGlzLl9kaXYpOwogICAgICAgIFNoaW55LmluaXRpYWxpemVJbnB1dHModGhpcy5fZGl2KTsKICAgICAgICBTaGlueS5iaW5kQWxsKHRoaXMuX2Rpdik7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdGhpcy5fZGl2LmlubmVySFRNTCA9IGh0bWw7CiAgICAgIH0KCiAgICAgIHJldHVybiB0aGlzLl9kaXY7CiAgICB9CiAgICBmdW5jdGlvbiBvblJlbW92ZShtYXApIHsKICAgICAgaWYgKHdpbmRvdy5TaGlueSAmJiBTaGlueS51bmJpbmRBbGwpIHsKICAgICAgICBTaGlueS51bmJpbmRBbGwodGhpcy5fZGl2KTsKICAgICAgfQogICAgfQogICAgdmFyIENvbnRyb2wgPSBMLkNvbnRyb2wuZXh0ZW5kKHsKICAgICAgb3B0aW9uczoge3Bvc2l0aW9uOiBwb3NpdGlvbn0sCiAgICAgIG9uQWRkOiBvbkFkZCwKICAgICAgb25SZW1vdmU6IG9uUmVtb3ZlCiAgICB9KQogICAgdGhpcy5jb250cm9scy5hZGQobmV3IENvbnRyb2wsIGxheWVySWQsIGh0bWwpOwogIH07CgogIG1ldGhvZHMucmVtb3ZlQ29udHJvbCA9IGZ1bmN0aW9uKGxheWVySWQpIHsKICAgIHRoaXMuY29udHJvbHMucmVtb3ZlKGxheWVySWQpOwogIH07CgogIG1ldGhvZHMuY2xlYXJDb250cm9scyA9IGZ1bmN0aW9uKCkgewogICAgdGhpcy5jb250cm9scy5jbGVhcigpOwogIH07CgogIG1ldGhvZHMuYWRkTGVnZW5kID0gZnVuY3Rpb24ob3B0aW9ucykgewogICAgdmFyIGxlZ2VuZCA9IEwuY29udHJvbCh7cG9zaXRpb246IG9wdGlvbnMucG9zaXRpb259KTsKICAgIHZhciBncmFkU3BhbjsKCiAgICBsZWdlbmQub25BZGQgPSBmdW5jdGlvbiAobWFwKSB7CiAgICAgIHZhciBkaXYgPSBMLkRvbVV0aWwuY3JlYXRlKCdkaXYnLCBvcHRpb25zLmNsYXNzTmFtZSksCiAgICAgICAgICBjb2xvcnMgPSBvcHRpb25zLmNvbG9ycywKICAgICAgICAgIGxhYmVscyA9IG9wdGlvbnMubGFiZWxzLAogICAgICAgICAgbGVnZW5kSFRNTCA9ICcnOwogICAgICBpZiAob3B0aW9ucy50eXBlID09PSAnbnVtZXJpYycpIHsKICAgICAgICAvLyAjIEZvcm1hdHRpbmcgY29uc3RhbnRzLgogICAgICAgIHZhciBzaW5nbGVCaW5IZWlnaHQgPSAyMDsgIC8vIFRoZSBkaXN0YW5jZSBiZXR3ZWVuIHRpY2sgbWFya3MsIGluIHB4CiAgICAgICAgdmFyIHZNYXJnaW4gPSA4OyAvLyBJZiAxc3QgdGljayBtYXJrIHN0YXJ0cyBhdCB0b3Agb2YgZ3JhZGllbnQsIGhvdwogICAgICAgICAgICAgICAgICAgICAgICAgLy8gbWFueSBleHRyYSBweCBhcmUgbmVlZGVkIGZvciB0aGUgdG9wIGhhbGYgb2YgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICAvLyAxc3QgbGFiZWw/IChkaXR0byBmb3IgbGFzdCB0aWNrIG1hcmsvbGFiZWwpCiAgICAgICAgdmFyIHRpY2tXaWR0aCA9IDQ7ICAgICAvLyBIb3cgd2lkZSBzaG91bGQgdGljayBtYXJrcyBiZSwgaW4gcHg/CiAgICAgICAgdmFyIGxhYmVsUGFkZGluZyA9IDY7ICAvLyBIb3cgbXVjaCBkaXN0YW5jZSB0byByZXNlcnZlIGZvciB0aWNrIG1hcms/CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAoTXVzdCBiZSA+PSB0aWNrV2lkdGgpCgogICAgICAgIC8vICMgRGVyaXZlZCBmb3JtYXR0aW5nIHBhcmFtZXRlcnMuCgogICAgICAgIC8vIFdoYXQncyB0aGUgaGVpZ2h0IG9mIGEgc2luZ2xlIGJpbiwgaW4gcGVyY2VudGFnZSAob2YgZ3JhZGllbnQgaGVpZ2h0KT8KICAgICAgICAvLyBJdCBtaWdodCBub3QganVzdCBiZSAxLyhuLTEpLCBpZiB0aGUgZ3JhZGllbnQgZXh0ZW5kcyBwYXN0IHRoZSB0aWNrCiAgICAgICAgLy8gbWFya3MgKHdoaWNoIGNhbiBiZSB0aGUgY2FzZSBmb3IgcHJldHR5IGN1dCBwb2ludHMpLgogICAgICAgIHZhciBzaW5nbGVCaW5QY3QgPSAob3B0aW9ucy5leHRyYS5wX24gLSBvcHRpb25zLmV4dHJhLnBfMSkgLyAobGFiZWxzLmxlbmd0aCAtIDEpOwogICAgICAgIC8vIEVhY2ggYmluIGlzIGBzaW5nbGVCaW5IZWlnaHRgIGhpZ2guIEhvdyB0YWxsIGlzIHRoZSBncmFkaWVudD8KICAgICAgICB2YXIgdG90YWxIZWlnaHQgPSAoMSAvIHNpbmdsZUJpblBjdCkgKiBzaW5nbGVCaW5IZWlnaHQgKyAxOwogICAgICAgIC8vIEhvdyBmYXIgc2hvdWxkIHRoZSBmaXJzdCB0aWNrIGJlIHNoaWZ0ZWQgZG93biwgcmVsYXRpdmUgdG8gdGhlIHRvcAogICAgICAgIC8vIG9mIHRoZSBncmFkaWVudD8KICAgICAgICB2YXIgdGlja09mZnNldCA9IChzaW5nbGVCaW5IZWlnaHQgLyBzaW5nbGVCaW5QY3QpICogb3B0aW9ucy5leHRyYS5wXzE7CgogICAgICAgIGdyYWRTcGFuID0gJCgnPHNwYW4vPicpLmNzcyh7CiAgICAgICAgICAnYmFja2dyb3VuZCc6ICdsaW5lYXItZ3JhZGllbnQoJyArIGNvbG9ycyArICcpJywKICAgICAgICAgICdvcGFjaXR5Jzogb3B0aW9ucy5vcGFjaXR5LAogICAgICAgICAgJ2hlaWdodCc6IHRvdGFsSGVpZ2h0ICsgJ3B4JywKICAgICAgICAgICd3aWR0aCc6ICcxOHB4JywKICAgICAgICAgICdkaXNwbGF5JzogJ2Jsb2NrJywKICAgICAgICAgICdtYXJnaW4tdG9wJzogdk1hcmdpbiArICdweCcKICAgICAgICB9KTsKICAgICAgICB2YXIgbGVmdERpdiA9ICQoJzxkaXYvPicpLmNzcygnZmxvYXQnLCAnbGVmdCcpLAogICAgICAgICAgICByaWdodERpdiA9ICQoJzxkaXYvPicpLmNzcygnZmxvYXQnLCAnbGVmdCcpOwogICAgICAgIGxlZnREaXYuYXBwZW5kKGdyYWRTcGFuKTsKICAgICAgICAkKGRpdikuYXBwZW5kKGxlZnREaXYpLmFwcGVuZChyaWdodERpdikKICAgICAgICAgIC5hcHBlbmQoJCgiPGJyIGNsZWFyPSdib3RoJy8+IikpOwoKICAgICAgICAvLyBIYXZlIHRvIGF0dGFjaCB0aGUgZGl2IHRvIHRoZSBib2R5IGF0IHRoaXMgZWFybHkgcG9pbnQsIHNvIHRoYXQgdGhlCiAgICAgICAgLy8gc3ZnIHRleHQgZ2V0Q29tcHV0ZWRUZXh0TGVuZ3RoKCkgYWN0dWFsbHkgd29ya3MsIGJlbG93LgogICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZGl2KTsKCiAgICAgICAgdmFyIG5zID0gJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJzsKICAgICAgICB2YXIgc3ZnID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKG5zLCAnc3ZnJyk7CiAgICAgICAgcmlnaHREaXYuYXBwZW5kKHN2Zyk7CiAgICAgICAgdmFyIGcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMobnMsICdnJyk7CiAgICAgICAgJChnKS5hdHRyKCJ0cmFuc2Zvcm0iLCAidHJhbnNsYXRlKDAsICIgKyB2TWFyZ2luICsgIikiKTsKICAgICAgICBzdmcuYXBwZW5kQ2hpbGQoZyk7CgogICAgICAgIC8vIG1heCBsYWJlbCB3aWR0aCBuZWVkZWQgdG8gc2V0IHdpZHRoIG9mIHN2ZywgYW5kIHJpZ2h0LWp1c3RpZnkgdGV4dAogICAgICAgIHZhciBtYXhMYmxXaWR0aCA9IDA7CgogICAgICAgIC8vIENyZWF0ZSB0aWNrIG1hcmtzIGFuZCBsYWJlbHMKICAgICAgICAkLmVhY2gobGFiZWxzLCBmdW5jdGlvbihpLCBsYWJlbCkgewogICAgICAgICAgdmFyIHkgPSB0aWNrT2Zmc2V0ICsgaSpzaW5nbGVCaW5IZWlnaHQgKyAwLjU7CgogICAgICAgICAgdmFyIHRoaXNMYWJlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhucywgJ3RleHQnKTsKICAgICAgICAgICQodGhpc0xhYmVsKQogICAgICAgICAgICAudGV4dChsYWJlbHNbaV0pCiAgICAgICAgICAgIC5hdHRyKCd5JywgeSkKICAgICAgICAgICAgLmF0dHIoJ2R4JywgbGFiZWxQYWRkaW5nKQogICAgICAgICAgICAuYXR0cignZHknLCAnMC41ZXgnKTsKICAgICAgICAgIGcuYXBwZW5kQ2hpbGQodGhpc0xhYmVsKTsKICAgICAgICAgIG1heExibFdpZHRoID0gTWF0aC5tYXgobWF4TGJsV2lkdGgsIHRoaXNMYWJlbC5nZXRDb21wdXRlZFRleHRMZW5ndGgoKSk7CgogICAgICAgICAgdmFyIHRoaXNUaWNrID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKG5zLCAnbGluZScpOwogICAgICAgICAgJCh0aGlzVGljaykKICAgICAgICAgICAgLmF0dHIoJ3gxJywgMCkKICAgICAgICAgICAgLmF0dHIoJ3gyJywgdGlja1dpZHRoKQogICAgICAgICAgICAuYXR0cigneTEnLCB5KQogICAgICAgICAgICAuYXR0cigneTInLCB5KQogICAgICAgICAgICAuYXR0cignc3Ryb2tlLXdpZHRoJywgMSk7CiAgICAgICAgICBnLmFwcGVuZENoaWxkKHRoaXNUaWNrKTsKICAgICAgICB9KTsKCiAgICAgICAgLy8gTm93IHRoYXQgd2Uga25vdyB0aGUgbWF4IGxhYmVsIHdpZHRoLCB3ZSBjYW4gcmlnaHQtanVzdGlmeQogICAgICAgICQoc3ZnKS5maW5kKCd0ZXh0JykKICAgICAgICAgIC5hdHRyKCdkeCcsIGxhYmVsUGFkZGluZyArIG1heExibFdpZHRoKQogICAgICAgICAgLmF0dHIoJ3RleHQtYW5jaG9yJywgJ2VuZCcpOwogICAgICAgIC8vIEZpbmFsIHNpemUgZm9yIDxzdmc+CiAgICAgICAgJChzdmcpLmNzcyh7CiAgICAgICAgICB3aWR0aDogKG1heExibFdpZHRoICsgbGFiZWxQYWRkaW5nKSArICJweCIsCiAgICAgICAgICBoZWlnaHQ6IHRvdGFsSGVpZ2h0ICsgdk1hcmdpbioyICsgInB4IgogICAgICAgIH0pOwoKICAgICAgICBpZiAob3B0aW9ucy5uYV9jb2xvcikgewogICAgICAgICAgJChkaXYpLmFwcGVuZCgnPGRpdj48aSBzdHlsZT0iYmFja2dyb3VuZDonICsgb3B0aW9ucy5uYV9jb2xvciArCiAgICAgICAgICAgICAgICAgICAgICAgICciPjwvaT4gJyArIG9wdGlvbnMubmFfbGFiZWwgKyAnPC9kaXY+Jyk7CiAgICAgICAgfQogICAgICB9IGVsc2UgewogICAgICAgIGlmIChvcHRpb25zLm5hX2NvbG9yKSB7CiAgICAgICAgICBjb2xvcnMucHVzaChvcHRpb25zLm5hX2NvbG9yKTsKICAgICAgICAgIGxhYmVscy5wdXNoKG9wdGlvbnMubmFfbGFiZWwpOwogICAgICAgIH0KICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvbG9ycy5sZW5ndGg7IGkrKykgewogICAgICAgICAgbGVnZW5kSFRNTCArPSAnPGkgc3R5bGU9ImJhY2tncm91bmQ6JyArIGNvbG9yc1tpXSArICc7b3BhY2l0eTonICsKICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5vcGFjaXR5ICsgJyI+PC9pPiAnICsgbGFiZWxzW2ldICsgJzxici8+JzsKICAgICAgICB9CiAgICAgICAgZGl2LmlubmVySFRNTCA9IGxlZ2VuZEhUTUw7CiAgICAgIH0KICAgICAgaWYgKG9wdGlvbnMudGl0bGUpCiAgICAgICAgJChkaXYpLnByZXBlbmQoJzxkaXYgc3R5bGU9Im1hcmdpbi1ib3R0b206M3B4Ij48c3Ryb25nPicgKwogICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLnRpdGxlICsgJzwvc3Ryb25nPjwvZGl2PicpOwogICAgICByZXR1cm4gZGl2OwogICAgfTsKCiAgICB0aGlzLmNvbnRyb2xzLmFkZChsZWdlbmQsIG9wdGlvbnMubGF5ZXJJZCk7CiAgfTsKCiAgbWV0aG9kcy5hZGRMYXllcnNDb250cm9sID0gZnVuY3Rpb24oYmFzZUdyb3Vwcywgb3ZlcmxheUdyb3Vwcywgb3B0aW9ucykgewoKICAgIHZhciBzZWxmID0gdGhpczsKCiAgICAvLyBPbmx5IGFsbG93IG9uZSBsYXllcnMgY29udHJvbCBhdCBhIHRpbWUKICAgIG1ldGhvZHMucmVtb3ZlTGF5ZXJzQ29udHJvbC5jYWxsKHRoaXMpOwoKICAgIHZhciBmaXJzdExheWVyID0gdHJ1ZTsKICAgIHZhciBiYXNlID0ge307CiAgICAkLmVhY2goYXNBcnJheShiYXNlR3JvdXBzKSwgZnVuY3Rpb24oaSwgZykgewogICAgICB2YXIgbGF5ZXIgPSBzZWxmLmxheWVyTWFuYWdlci5nZXRMYXllckdyb3VwKGcsIHRydWUpOwogICAgICBpZiAobGF5ZXIpIHsKICAgICAgICBiYXNlW2ddID0gbGF5ZXI7CgogICAgICAgIC8vIENoZWNrIGlmID4xIGJhc2UgbGF5ZXJzIGFyZSB2aXNpYmxlOyBpZiBzbywgaGlkZSBhbGwgYnV0IHRoZSBmaXJzdCBvbmUKICAgICAgICBpZiAoc2VsZi5oYXNMYXllcihsYXllcikpIHsKICAgICAgICAgIGlmIChmaXJzdExheWVyKSB7CiAgICAgICAgICAgIGZpcnN0TGF5ZXIgPSBmYWxzZTsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHNlbGYucmVtb3ZlTGF5ZXIobGF5ZXIpOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgfSk7CiAgICB2YXIgb3ZlcmxheSA9IHt9OwogICAgJC5lYWNoKGFzQXJyYXkob3ZlcmxheUdyb3VwcyksIGZ1bmN0aW9uKGksIGcpIHsKICAgICAgdmFyIGxheWVyID0gc2VsZi5sYXllck1hbmFnZXIuZ2V0TGF5ZXJHcm91cChnLCB0cnVlKTsKICAgICAgaWYgKGxheWVyKSB7CiAgICAgICAgb3ZlcmxheVtnXSA9IGxheWVyOwogICAgICB9CiAgICB9KTsKCiAgICB2YXIgbGF5ZXJzQ29udHJvbCA9IEwuY29udHJvbC5sYXllcnMoYmFzZSwgb3ZlcmxheSwgb3B0aW9ucykuYWRkVG8odGhpcyk7CiAgICB0aGlzLmN1cnJlbnRMYXllcnNDb250cm9sID0gbGF5ZXJzQ29udHJvbDsKICB9OwoKICBtZXRob2RzLnJlbW92ZUxheWVyc0NvbnRyb2wgPSBmdW5jdGlvbigpIHsKICAgIGlmICh0aGlzLmN1cnJlbnRMYXllcnNDb250cm9sKSB7CiAgICAgIHRoaXMuY3VycmVudExheWVyc0NvbnRyb2wucmVtb3ZlRnJvbSh0aGlzKTsKICAgICAgdGhpcy5jdXJyZW50TGF5ZXJzQ29udHJvbCA9IG51bGw7CiAgICB9CiAgfTsKCiAgbWV0aG9kcy5oaWRlR3JvdXAgPSBmdW5jdGlvbihncm91cCkgewogICAgdmFyIHNlbGYgPSB0aGlzOwogICAgJC5lYWNoKGFzQXJyYXkoZ3JvdXApLCBmdW5jdGlvbihpLCBnKSB7CiAgICAgIHZhciBsYXllciA9IHNlbGYubGF5ZXJNYW5hZ2VyLmdldExheWVyR3JvdXAoZywgdHJ1ZSk7CiAgICAgIGlmIChsYXllcikgewogICAgICAgIHNlbGYucmVtb3ZlTGF5ZXIobGF5ZXIpOwogICAgICB9CiAgICB9KTsKICB9OwoKICBtZXRob2RzLnNob3dHcm91cCA9IGZ1bmN0aW9uKGdyb3VwKSB7CiAgICB2YXIgc2VsZiA9IHRoaXM7CiAgICAkLmVhY2goYXNBcnJheShncm91cCksIGZ1bmN0aW9uKGksIGcpIHsKICAgICAgdmFyIGxheWVyID0gc2VsZi5sYXllck1hbmFnZXIuZ2V0TGF5ZXJHcm91cChnLCB0cnVlKTsKICAgICAgaWYgKGxheWVyKSB7CiAgICAgICAgc2VsZi5hZGRMYXllcihsYXllcik7CiAgICAgIH0KICAgIH0pOwogIH07CgogIG1ldGhvZHMuYWRkUmFzdGVySW1hZ2UgPSBmdW5jdGlvbih1cmksIGJvdW5kcywgb3BhY2l0eSwgYXR0cmlidXRpb24sIGxheWVySWQsIGdyb3VwKSB7CiAgICAvLyB1cmkgaXMgYSBkYXRhIFVSSSBjb250YWluaW5nIGFuIGltYWdlLiBXZSB3YW50IHRvIHBhaW50IHRoaXMgaW1hZ2UgYXMgYQogICAgLy8gbGF5ZXIgYXQgKHRvcC1sZWZ0KSBib3VuZHNbMF0gdG8gKGJvdHRvbS1yaWdodCkgYm91bmRzWzFdLgoKICAgIC8vIFdlIGNhbid0IHNpbXBseSB1c2UgSW1hZ2VPdmVybGF5LCBhcyBpdCB1c2VzIGJpbGluZWFyIHNjYWxpbmcgd2hpY2ggbG9va3MKICAgIC8vIGF3ZnVsIGFzIHlvdSB6b29tIGluIChhbmQgc29tZXRpbWVzIHNoaWZ0cyBwb3NpdGlvbnMgb3IgZGlzYXBwZWFycykuCiAgICAvLyBJbnN0ZWFkLCB3ZSdsbCB1c2UgYSBUaWxlTGF5ZXIuQ2FudmFzIHRvIGRyYXcgcGllY2VzIG9mIHRoZSBpbWFnZS4KCiAgICAvLyBGaXJzdCwgc29tZSBoZWxwZXIgZnVuY3Rpb25zLgoKICAgIC8vIGRlZ3JlZTJ0aWxlIGNvbnZlcnRzIGxhdGl0dWRlLCBsb25naXR1ZGUsIGFuZCB6b29tIHRvIHggYW5kIHkgdGlsZQogICAgLy8gbnVtYmVycy4gVGhlIHRpbGUgbnVtYmVycyByZXR1cm5lZCBjYW4gYmUgbm9uLWludGVncmFsLCBhcyB0aGVyZSdzIG5vCiAgICAvLyByZWFzb24gdG8gZXhwZWN0IHRoYXQgdGhlIGxhdC9sbmcgaW5wdXRzIGFyZSBleGFjdGx5IG9uIHRoZSBib3JkZXIgb2YgdHdvCiAgICAvLyB0aWxlcy4KICAgIC8vCiAgICAvLyBXZSdsbCB1c2UgdGhpcyB0byBjb252ZXJ0IHRoZSBib3VuZHMgd2UgZ290IGZyb20gdGhlIHNlcnZlciwgaW50byBjb29yZHMKICAgIC8vIGluIHRpbGUtc3BhY2UgYXQgYSBnaXZlbiB6b29tIGxldmVsLiBOb3RlIHRoYXQgb25jZSB3ZSBkbyB0aGUgY29udmVyc2lvbiwKICAgIC8vIHdlIGRvbid0IHRvIGRvIGFueSBtb3JlIHRyaWdvbm9tZXRyeSB0byBjb252ZXJ0IGJldHdlZW4gcGl4ZWwgY29vcmRpbmF0ZXMKICAgIC8vIGFuZCB0aWxlIGNvb3JkaW5hdGVzOyB0aGUgc291cmNlIGltYWdlIHBpeGVsIGNvb3JkcywgZGVzdGluYXRpb24gY2FudmFzCiAgICAvLyBwaXhlbCBjb29yZHMsIGFuZCB0aWxlIGNvb3JkcyBhbGwgY2FuIGJlIHNjYWxlZCBsaW5lYXJseS4KICAgIGZ1bmN0aW9uIGRlZ3JlZTJ0aWxlKGxhdCwgbG5nLCB6b29tKSB7CiAgICAgIC8vIFNlZSBodHRwOi8vd2lraS5vcGVuc3RyZWV0bWFwLm9yZy93aWtpL1NsaXBweV9tYXBfdGlsZW5hbWVzCiAgICAgIHZhciBsYXRSYWQgPSBsYXQgKiBNYXRoLlBJIC8gMTgwOwogICAgICB2YXIgbiA9IE1hdGgucG93KDIsIHpvb20pOwogICAgICB2YXIgeCA9IChsbmcgKyAxODApIC8gMzYwICogbgogICAgICB2YXIgeSA9ICgxIC0gTWF0aC5sb2coTWF0aC50YW4obGF0UmFkKSArICgxIC8gTWF0aC5jb3MobGF0UmFkKSkpIC8gTWF0aC5QSSkgLyAyICogbgogICAgICByZXR1cm4ge3g6IHgsIHk6IHl9OwogICAgfQoKICAgIC8vIEdpdmVuIGEgcmFuZ2UgW2Zyb20sdG8pIGFuZCBlaXRoZXIgb25lIG9yIHR3byBudW1iZXJzLCByZXR1cm5zIHRydWUgaWYKICAgIC8vIHRoZXJlIGlzIGFueSBvdmVybGFwIGJldHdlZW4gW3gseDEpIGFuZCB0aGUgcmFuZ2UtLW9yIGlmIHgxIGlzIG9taXR0ZWQsCiAgICAvLyB0aGVuIHJldHVybnMgdHJ1ZSBpZiB4IGlzIHdpdGhpbiBbZnJvbSx0bykuCiAgICBmdW5jdGlvbiBvdmVybGFwKGZyb20sIHRvLCB4LCAvKiBvcHRpb25hbCAqLyB4MSkgewogICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PSAzKQogICAgICAgIHgxID0geDsKICAgICAgcmV0dXJuIHggPCB0byAmJiB4MSA+PSBmcm9tOwogICAgfQoKICAgIGZ1bmN0aW9uIGdldENhbnZhc1Ntb290aGluZ1Byb3BlcnR5KGN0eCkgewogICAgICB2YXIgY2FuZGlkYXRlcyA9IFsiaW1hZ2VTbW9vdGhpbmdFbmFibGVkIiwgIm1vekltYWdlU21vb3RoaW5nRW5hYmxlZCIsCiAgICAgICAgICAid2Via2l0SW1hZ2VTbW9vdGhpbmdFbmFibGVkIiwgIm1zSW1hZ2VTbW9vdGhpbmdFbmFibGVkIl07CiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2FuZGlkYXRlcy5sZW5ndGg7IGkrKykgewogICAgICAgIGlmICh0eXBlb2YoY3R4W2NhbmRpZGF0ZXNbaV1dKSAhPT0gInVuZGVmaW5lZCIpIHsKICAgICAgICAgIHJldHVybiBjYW5kaWRhdGVzW2ldOwogICAgICAgIH0KICAgICAgfQogICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICAvLyBPdXIgZ2VuZXJhbCBzdHJhdGVneSBpcyB0bzoKICAgIC8vIDEuIExvYWQgdGhlIGRhdGEgVVJJIGluIGFuIEltYWdlKCkgb2JqZWN0LCBzbyB3ZSBjYW4gZ2V0IGl0cyBwaXhlbAogICAgLy8gICAgZGltZW5zaW9ucyBhbmQgdGhlIHVuZGVybHlpbmcgaW1hZ2UgZGF0YS4gKFdlIGNvdWxkIGhhdmUgZG9uZSB0aGlzCiAgICAvLyAgICBieSBub3QgZW5jb2RpbmcgYXMgUE5HIGF0IGFsbCBidXQganVzdCBzZW5kIGFuIGFycmF5IG9mIFJHQkEgdmFsdWVzCiAgICAvLyAgICBmcm9tIHRoZSBzZXJ2ZXIsIGJ1dCB0aGF0IHdvdWxkIGluZmxhdGUgdGhlIEpTT04gdG9vIG11Y2guKQogICAgLy8gMi4gQ3JlYXRlIGEgaGlkZGVuIGNhbnZhcyB0aGF0IHdlIHVzZSBqdXN0IHRvIGV4dHJhY3QgdGhlIGltYWdlIGRhdGEKICAgIC8vICAgIGZyb20gdGhlIEltYWdlICh1c2luZyBDb250ZXh0MkQuZ2V0SW1hZ2VEYXRhKCkpLgogICAgLy8gMy4gQ3JlYXRlIGEgVGlsZUxheWVyLkNhbnZhcyBhbmQgYWRkIGl0IHRvIHRoZSBtYXAuCgogICAgLy8gV2Ugd2FudCB0byBzeW5jaHJvbm91c2x5IGNyZWF0ZSBhbmQgYXR0YWNoIHRoZSBUaWxlTGF5ZXIuQ2FudmFzIChzbyBhbgogICAgLy8gaW1tZWRpYXRlIGNhbGwgdG8gY2xlYXJSYXN0ZXJzKCkgd2lsbCBiZSByZXNwZWN0ZWQsIGZvciBleGFtcGxlKSwgYnV0CiAgICAvLyBJbWFnZSBsb2FkcyBpdHMgZGF0YSBhc3luY2hyb25vdXNseS4gRm9ydHVuYXRlbHkgd2UgY2FuIHJlc29sdmUgdGhpcwogICAgLy8gYnkgcHV0dGluZyBUaWxlTGF5ZXIuQ2FudmFzIGludG8gYXN5bmMgbW9kZSwgd2hpY2ggd2lsbCBsZXQgdXMgY3JlYXRlCiAgICAvLyBhbmQgYXR0YWNoIHRoZSBsYXllciBidXQgaGF2ZSBpdCB3YWl0IHVudGlsIHRoZSBpbWFnZSBpcyBsb2FkZWQgYmVmb3JlCiAgICAvLyBpdCBhY3R1YWxseSBkcmF3cyBhbnl0aGluZy4KCiAgICAvLyBUaGVzZSBhcmUgdGhlIHZhcmlhYmxlcyB0aGF0IHdlIHdpbGwgcG9wdWxhdGUgb25jZSB0aGUgaW1hZ2UgaXMgbG9hZGVkLgogICAgdmFyIGltZ0RhdGEgPSBudWxsOyAvLyAxZCByb3ctbWFqb3IgYXJyYXksIGZvdXIgWzAtMjU1XSBpbnRlZ2VycyBwZXIgcGl4ZWwKICAgIHZhciBpbWdEYXRhTWlwTWFwcGVyID0gbnVsbDsKICAgIHZhciB3ID0gbnVsbDsgICAgICAgLy8gaW1hZ2Ugd2lkdGggaW4gcGl4ZWxzCiAgICB2YXIgaCA9IG51bGw7ICAgICAgIC8vIGltYWdlIGhlaWdodCBpbiBwaXhlbHMKCiAgICAvLyBXZSdsbCB1c2UgdGhpcyBhcnJheSB0byBzdG9yZSBjYWxsYmFja3MgdGhhdCBuZWVkIHRvIGJlIGludm9rZWQgb25jZQogICAgLy8gaW1nRGF0YSwgdywgYW5kIGggaGF2ZSBiZWVuIHJlc29sdmVkLgogICAgdmFyIGltZ0RhdGFDYWxsYmFja3MgPSBbXTsKCiAgICAvLyBDb25zdW1lcnMgb2YgaW1nRGF0YSwgdywgYW5kIGggY2FuIGNhbGwgdGhpcyB0byBiZSBub3RpZmllZCB3aGVuIGRhdGEKICAgIC8vIGlzIGF2YWlsYWJsZS4gVW5saWtlIG1vc3QgYXN5bmMvcHJvbWlzZS1iYXNlZCBBUElzLCB0aGUgY2FsbGJhY2sgd2lsbAogICAgLy8gYmUgaW52b2tlZCBpbW1lZGlhdGVseS9zeW5jaHJvbm91c2x5IGlmIHRoZSBkYXRhIGlzIGFscmVhZHkgYXZhaWxhYmxlLgogICAgZnVuY3Rpb24gZ2V0SW1hZ2VEYXRhKGNhbGxiYWNrKSB7CiAgICAgIGlmIChpbWdEYXRhICE9IG51bGwpIHsKICAgICAgICBjYWxsYmFjayhpbWdEYXRhLCB3LCBoLCBpbWdEYXRhTWlwTWFwcGVyKTsKICAgICAgfSBlbHNlIHsKICAgICAgICBpbWdEYXRhQ2FsbGJhY2tzLnB1c2goY2FsbGJhY2spOwogICAgICB9CiAgICB9CgogICAgdmFyIGltZyA9IG5ldyBJbWFnZSgpOwogICAgaW1nLm9ubG9hZCA9IGZ1bmN0aW9uKCkgewogICAgICAvLyBTYXZlIHNpemUKICAgICAgdyA9IGltZy53aWR0aDsKICAgICAgaCA9IGltZy5oZWlnaHQ7CgogICAgICAvLyBDcmVhdGUgYSBkdW1teSBjYW52YXMgdG8gZXh0cmFjdCB0aGUgaW1hZ2UgZGF0YQogICAgICB2YXIgaW1nRGF0YUNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpOwogICAgICBpbWdEYXRhQ2FudmFzLndpZHRoID0gdzsKICAgICAgaW1nRGF0YUNhbnZhcy5oZWlnaHQgPSBoOwogICAgICBpbWdEYXRhQ2FudmFzLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7CiAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaW1nRGF0YUNhbnZhcyk7CgogICAgICB2YXIgaW1nRGF0YUN0eCA9IGltZ0RhdGFDYW52YXMuZ2V0Q29udGV4dCgiMmQiKTsKICAgICAgaW1nRGF0YUN0eC5kcmF3SW1hZ2UoaW1nLCAwLCAwKTsKCiAgICAgIC8vIFNhdmUgdGhlIGltYWdlIGRhdGEuCiAgICAgIGltZ0RhdGEgPSBpbWdEYXRhQ3R4LmdldEltYWdlRGF0YSgwLCAwLCB3LCBoKS5kYXRhOwogICAgICBpbWdEYXRhTWlwTWFwcGVyID0gbmV3IE1pcG1hcHBlcihpbWcpOwoKICAgICAgLy8gRG9uZSB3aXRoIHRoZSBjYW52YXMsIHJlbW92ZSBpdCBmcm9tIHRoZSBwYWdlIHNvIGl0IGNhbiBiZSBnYydkLgogICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGltZ0RhdGFDYW52YXMpOwoKICAgICAgLy8gQWxlcnQgYW55IGdldEltYWdlRGF0YSBjYWxsZXJzIHdobyBhcmUgd2FpdGluZy4KICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpbWdEYXRhQ2FsbGJhY2tzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgaW1nRGF0YUNhbGxiYWNrc1tpXShpbWdEYXRhLCB3LCBoLCBpbWdEYXRhTWlwTWFwcGVyKTsKICAgICAgfQogICAgICBpbWdEYXRhQ2FsbGJhY2tzID0gW107CiAgICB9OwogICAgaW1nLnNyYyA9IHVyaTsKCiAgICB2YXIgY2FudmFzVGlsZXMgPSBMLnRpbGVMYXllci5jYW52YXMoewogICAgICBvcGFjaXR5OiBvcGFjaXR5LAogICAgICBhdHRyaWJ1dGlvbjogYXR0cmlidXRpb24sCiAgICAgIGRldGVjdFJldGluYTogdHJ1ZSwKICAgICAgYXN5bmM6IHRydWUKICAgIH0pOwoKICAgIGNhbnZhc1RpbGVzLmRyYXdUaWxlID0gZnVuY3Rpb24oY2FudmFzLCB0aWxlUG9pbnQsIHpvb20pIHsKICAgICAgZ2V0SW1hZ2VEYXRhKGZ1bmN0aW9uKGltZ0RhdGEsIHcsIGgsIG1pcG1hcHBlcikgewogICAgICAgIHRyeSB7CiAgICAgICAgICAvLyBUaGUgQ29udGV4dDJEIHdlJ2xsIGJlaW5nIGRyYXdpbmcgb250by4gSXQncyBhbHdheXMgMjU2eDI1Ni4KICAgICAgICAgIHZhciBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTsKCiAgICAgICAgICAvLyBDb252ZXJ0IG91ciBpbWFnZSBkYXRhJ3MgdG9wLWxlZnQgYW5kIGJvdHRvbS1yaWdodCBsb2NhdGlvbnMgaW50bwogICAgICAgICAgLy8geC95IHRpbGUgY29vcmRpbmF0ZXMuIFRoaXMgaXMgZXNzZW50aWFsbHkgZG9pbmcgYSBzcGhlcmljYWwgbWVyY2F0b3IKICAgICAgICAgIC8vIHByb2plY3Rpb24sIHRoZW4gbXVsdGlwbHlpbmcgYnkgMl56b29tLgogICAgICAgICAgdmFyIHRvcExlZnQgPSBkZWdyZWUydGlsZShib3VuZHNbMF1bMF0sIGJvdW5kc1swXVsxXSwgem9vbSk7CiAgICAgICAgICB2YXIgYm90dG9tUmlnaHQgPSBkZWdyZWUydGlsZShib3VuZHNbMV1bMF0sIGJvdW5kc1sxXVsxXSwgem9vbSk7CiAgICAgICAgICAvLyBUaGUgc2l6ZSBvZiB0aGUgaW1hZ2UgaW4geC95IHRpbGUgY29vcmRpbmF0ZXMuCiAgICAgICAgICB2YXIgZXh0ZW50ID0ge3g6IGJvdHRvbVJpZ2h0LnggLSB0b3BMZWZ0LngsIHk6IGJvdHRvbVJpZ2h0LnkgLSB0b3BMZWZ0Lnl9OwoKICAgICAgICAgIC8vIFNob3J0IGNpcmN1aXQgaWYgdGlsZSBpcyB0b3RhbGx5IGRpc2pvaW50IGZyb20gaW1hZ2UuCiAgICAgICAgICBpZiAoIW92ZXJsYXAodGlsZVBvaW50LngsIHRpbGVQb2ludC54ICsgMSwgdG9wTGVmdC54LCBib3R0b21SaWdodC54KSkKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgaWYgKCFvdmVybGFwKHRpbGVQb2ludC55LCB0aWxlUG9pbnQueSArIDEsIHRvcExlZnQueSwgYm90dG9tUmlnaHQueSkpCiAgICAgICAgICAgIHJldHVybjsKCiAgICAgICAgICAvLyBUaGUgbGluZWFyIHJlc29sdXRpb24gb2YgdGhlIHRpbGUgd2UncmUgZHJhd2luZyBpcyBhbHdheXMgMjU2cHggcGVyIHRpbGUgdW5pdC4KICAgICAgICAgIC8vIElmIHRoZSBsaW5lYXIgcmVzb2x1dGlvbiAoaW4gZWl0aGVyIGRpcmVjdGlvbikgb2YgdGhlIGltYWdlIGlzIGxlc3MgdGhhbiAyNTZweAogICAgICAgICAgLy8gcGVyIHRpbGUgdW5pdCwgdGhlbiB1c2UgbmVhcmVzdCBuZWlnaGJvcjsgb3RoZXJ3aXNlLCB1c2UgdGhlIGNhbnZhcydzIGJ1aWx0LWluCiAgICAgICAgICAvLyBzY2FsaW5nLgogICAgICAgICAgdmFyIGltZ1JlcyA9IHsKICAgICAgICAgICAgeDogdyAvIGV4dGVudC54LAogICAgICAgICAgICB5OiBoIC8gZXh0ZW50LnkKICAgICAgICAgIH07CgogICAgICAgICAgLy8gV2UgY2FuIGRvIHRoZSBhY3R1YWwgZHJhd2luZyBpbiBvbmUgb2YgdGhyZWUgd2F5czoKICAgICAgICAgIC8vIC0gQ2FsbCBkcmF3SW1hZ2UoKS4gVGhpcyBpcyBlYXN5IGFuZCBmYXN0LCBhbmQgcmVzdWx0cyBpbiBzbW9vdGgKICAgICAgICAgIC8vICAgaW50ZXJwb2xhdGlvbiAoYmlsaW5lYXI/KS4gVGhpcyBpcyB3aGF0IHdlIHdhbnQgd2hlbiB3ZSBhcmUKICAgICAgICAgIC8vICAgcmVkdWNpbmcgdGhlIGltYWdlIGZyb20gaXRzIG5hdGl2ZSBzaXplLgogICAgICAgICAgLy8gLSBDYWxsIGRyYXdJbWFnZSgpIHdpdGggaW1hZ2VTbW9vdGhpbmdFbmFibGVkPWZhbHNlLiBUaGlzIGlzIGVhc3kKICAgICAgICAgIC8vICAgYW5kIGZhc3QgYW5kIGdpdmVzIHVzIG5lYXJlc3QtbmVpZ2hib3IgaW50ZXJwb2xhdGlvbiwgd2hpY2ggaXMgd2hhdAogICAgICAgICAgLy8gICB3ZSB3YW50IHdoZW4gZW5sYXJnaW5nIHRoZSBpbWFnZS4gSG93ZXZlciwgaXQncyB1bnN1cHBvcnRlZCBvbiBtYW55CiAgICAgICAgICAvLyAgIGJyb3dzZXJzIChpbmNsdWRpbmcgUXRXZWJraXQpLgogICAgICAgICAgLy8gLSBEbyBhIG1hbnVhbCBuZWFyZXN0LW5laWdoYm9yIGludGVycG9sYXRpb24uIFRoaXMgaXMgd2hhdCB3ZSdsbCBmYWxsCiAgICAgICAgICAvLyAgIGJhY2sgdG8gd2hlbiBlbmxhcmdpbmcsIGFuZCBpbWFnZVNtb290aGluZ0VuYWJsZWQgaXNuJ3Qgc3VwcG9ydGVkLgogICAgICAgICAgLy8gICBJbiB0aGVvcnkgaXQncyBzbG93ZXIsIGJ1dCBzdGlsbCBwcmV0dHkgZmFzdCBvbiBteSBtYWNoaW5lLCBhbmQgdGhlCiAgICAgICAgICAvLyAgIHJlc3VsdHMgbG9vayB0aGUgc2FtZSBBRkFJQ1QuCgogICAgICAgICAgLy8gSXMgaW1hZ2VTbW9vdGhpbmdFbmFibGVkIHN1cHBvcnRlZD8gSWYgc28sIHdlIGNhbiBsZXQgY2FudmFzIGRvCiAgICAgICAgICAvLyBuZWFyZXN0LW5laWdoYm9yIGludGVycG9sYXRpb24gZm9yIHVzLgogICAgICAgICAgdmFyIHNtb290aGluZ1Byb3BlcnR5ID0gZ2V0Q2FudmFzU21vb3RoaW5nUHJvcGVydHkoY3R4KTsKCiAgICAgICAgICBpZiAoc21vb3RoaW5nUHJvcGVydHkgfHwgaW1nUmVzLnggPj0gMjU2ICYmIGltZ1Jlcy55ID49IDI1NikgewogICAgICAgICAgICAvLyBVc2UgYnVpbHQtaW4gc2NhbGluZwoKICAgICAgICAgICAgLy8gVHVybiBvZmYgYW50aS1hbGlhc2luZyBpZiBuZWNlc3NhcnkKICAgICAgICAgICAgaWYgKHNtb290aGluZ1Byb3BlcnR5KSB7CiAgICAgICAgICAgICAgY3R4W3Ntb290aGluZ1Byb3BlcnR5XSA9IGltZ1Jlcy54ID49IDI1NiAmJiBpbWdSZXMueSA+PSAyNTY7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIERvbid0IG5lY2Vzc2FyaWx5IGRyYXcgd2l0aCB0aGUgZnVsbC1zaXplIGltYWdlOyBpZiB3ZSdyZQogICAgICAgICAgICAvLyBkb3duc2NhbGluZywgdXNlIHRoZSBtaXBtYXBwZXIgdG8gZ2V0IGEgcHJlLWRvd25zY2FsZWQgaW1hZ2UKICAgICAgICAgICAgLy8gKHNlZSBjb21tZW50cyBvbiBNaXBtYXBwZXIgY2xhc3MgZm9yIHdoeSB0aGlzIG1hdHRlcnMpLgogICAgICAgICAgICBtaXBtYXBwZXIuZ2V0QnlTaXplKGV4dGVudC54KjI1NiwgZXh0ZW50LnkqMjU2LCBmdW5jdGlvbihtaXApIHsKICAgICAgICAgICAgICAvLyBJdCdzIHBvc3NpYmxlIHRoYXQgdGhlIGltYWdlIHdpbGwgZ28gb2ZmIHRoZSBlZGdlIG9mIHRoZSBjYW52YXMtLQogICAgICAgICAgICAgIC8vIHRoYXQncyBPSywgdGhlIGNhbnZhcyBzaG91bGQgY2xpcCBhcHByb3ByaWF0ZWx5LgogICAgICAgICAgICAgIGN0eC5kcmF3SW1hZ2UobWlwLAogICAgICAgICAgICAgICAgLy8gQ29udmVydCBhYnMgdGlsZSBjb29yZHMgdG8gcmVsIHRpbGUgY29vcmRzLCB0aGVuICoyNTYgdG8gY29udmVydAogICAgICAgICAgICAgICAgLy8gdG8gcmVsIHBpeGVsIGNvb3JkcwogICAgICAgICAgICAgICAgKHRvcExlZnQueCAtIHRpbGVQb2ludC54KSAqIDI1NiwKICAgICAgICAgICAgICAgICh0b3BMZWZ0LnkgLSB0aWxlUG9pbnQueSkgKiAyNTYsCiAgICAgICAgICAgICAgICAvLyBBbHdheXMgZHJhdyB0aGUgd2hvbGUgdGhpbmcgYW5kIGxldCBjYW52YXMgY2xpcDsgc28gd2UgY2FuIGp1c3QKICAgICAgICAgICAgICAgIC8vIGNvbnZlcnQgZnJvbSBzaXplIGluIHRpbGUgY29vcmRzIHN0cmFpZ2h0IHRvIHBpeGVscwogICAgICAgICAgICAgICAgZXh0ZW50LnggKiAyNTYsCiAgICAgICAgICAgICAgICBleHRlbnQueSAqIDI1NgogICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0pOwoKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIC8vIFVzZSBtYW51YWwgbmVhcmVzdC1uZWlnaGJvciBpbnRlcnBvbGF0aW9uCgogICAgICAgICAgICAvLyBDYWxjdWxhdGUgdGhlIHNvdXJjZSBpbWFnZSBwaXhlbCBjb29yZGluYXRlcyB0aGF0IGNvcnJlc3BvbmQgd2l0aAogICAgICAgICAgICAvLyB0aGUgdG9wLWxlZnQgYW5kIGJvdHRvbS1yaWdodCBvZiB0aGlzIHRpbGUuIChJZiB0aGUgc291cmNlIGltYWdlCiAgICAgICAgICAgIC8vIG9ubHkgcGFydGlhbGx5IG92ZXJsYXBzIHRoZSB0aWxlLCB3ZSB1c2UgbWF4L21pbiB0byBsaW1pdCB0aGUKICAgICAgICAgICAgLy8gc291cmNlU3RhcnQvRW5kIHRvIG9ubHkgcmVmbGVjdCB0aGUgb3ZlcmxhcHBpbmcgcG9ydGlvbi4pCiAgICAgICAgICAgIHZhciBzb3VyY2VTdGFydCA9IHsKICAgICAgICAgICAgICB4OiBNYXRoLm1heCgwLCBNYXRoLmZsb29yKCh0aWxlUG9pbnQueCAtIHRvcExlZnQueCkgKiBpbWdSZXMueCkpLAogICAgICAgICAgICAgIHk6IE1hdGgubWF4KDAsIE1hdGguZmxvb3IoKHRpbGVQb2ludC55IC0gdG9wTGVmdC55KSAqIGltZ1Jlcy55KSkKICAgICAgICAgICAgfTsKICAgICAgICAgICAgdmFyIHNvdXJjZUVuZCA9IHsKICAgICAgICAgICAgICB4OiBNYXRoLm1pbih3LCBNYXRoLmNlaWwoKHRpbGVQb2ludC54ICsgMSAtIHRvcExlZnQueCkgKiBpbWdSZXMueCkpLAogICAgICAgICAgICAgIHk6IE1hdGgubWluKGgsIE1hdGguY2VpbCgodGlsZVBvaW50LnkgKyAxIC0gdG9wTGVmdC55KSAqIGltZ1Jlcy55KSkKICAgICAgICAgICAgfTsKCiAgICAgICAgICAgIC8vIFRoZSBzaXplLCBpbiBkZXN0IHBpeGVscywgdGhhdCBlYWNoIHNvdXJjZSBwaXhlbCBzaG91bGQgb2NjdXB5LgogICAgICAgICAgICAvLyBUaGlzIG1pZ2h0IGJlIGdyZWF0ZXIgb3IgbGVzcyB0aGFuIDEgKGUuZy4gaWYgeCBhbmQgeSByZXNvbHV0aW9uCiAgICAgICAgICAgIC8vIGFyZSB2ZXJ5IGRpZmZlcmVudCkuCiAgICAgICAgICAgIHZhciBwaXhlbFNpemUgPSB7CiAgICAgICAgICAgICAgeDogMjU2IC8gaW1nUmVzLngsCiAgICAgICAgICAgICAgeTogMjU2IC8gaW1nUmVzLnkKICAgICAgICAgICAgfTsKCiAgICAgICAgICAgIC8vIEZvciBlYWNoIHBpeGVsIGluIHRoZSBzb3VyY2UgaW1hZ2UgdGhhdCBvdmVybGFwcyB0aGUgdGlsZS4uLgogICAgICAgICAgICBmb3IgKHZhciByb3cgPSBzb3VyY2VTdGFydC55OyByb3cgPCBzb3VyY2VFbmQueTsgcm93KyspIHsKICAgICAgICAgICAgICBmb3IgKHZhciBjb2wgPSBzb3VyY2VTdGFydC54OyBjb2wgPCBzb3VyY2VFbmQueDsgY29sKyspIHsKICAgICAgICAgICAgICAgIC8vIC4uLmV4dHJhY3QgdGhlIHBpeGVsIGRhdGEuLi4KICAgICAgICAgICAgICAgIHZhciBpID0gKChyb3cgKiB3KSArIGNvbCkgKiA0OwogICAgICAgICAgICAgICAgdmFyIHIgPSBpbWdEYXRhW2ldOwogICAgICAgICAgICAgICAgdmFyIGcgPSBpbWdEYXRhW2krMV07CiAgICAgICAgICAgICAgICB2YXIgYiA9IGltZ0RhdGFbaSsyXTsKICAgICAgICAgICAgICAgIHZhciBhID0gaW1nRGF0YVtpKzNdOwogICAgICAgICAgICAgICAgY3R4LmZpbGxTdHlsZSA9ICJyZ2JhKCIgKyBbcixnLGIsYS8yNTVdLmpvaW4oIiwiKSArICIpIjsKCiAgICAgICAgICAgICAgICAvLyAuLi5jYWxjdWxhdGUgdGhlIGNvcnJlc3BvbmRpbmcgcGl4ZWwgY29vcmQgaW4gdGhlIGRlc3QgaW1hZ2UKICAgICAgICAgICAgICAgIC8vIHdoZXJlIGl0IHNob3VsZCBiZSBkcmF3bi4uLgogICAgICAgICAgICAgICAgdmFyIHBpeGVsUG9zID0gewogICAgICAgICAgICAgICAgICB4OiAoKChjb2wgLyBpbWdSZXMueCkgKyB0b3BMZWZ0LngpIC0gdGlsZVBvaW50LngpICogMjU2LAogICAgICAgICAgICAgICAgICB5OiAoKChyb3cgLyBpbWdSZXMueSkgKyB0b3BMZWZ0LnkpIC0gdGlsZVBvaW50LnkpICogMjU2CiAgICAgICAgICAgICAgICB9OwoKICAgICAgICAgICAgICAgIC8vIC4uLmFuZCBkcmF3IGEgcmVjdGFuZ2xlIHRoZXJlLgogICAgICAgICAgICAgICAgY3R4LmZpbGxSZWN0KAogICAgICAgICAgICAgICAgICBNYXRoLnJvdW5kKHBpeGVsUG9zLngpLAogICAgICAgICAgICAgICAgICBNYXRoLnJvdW5kKHBpeGVsUG9zLnkpLAogICAgICAgICAgICAgICAgICAvLyBMb29rcyBjcmF6eSwgYnV0IHRoaXMgaXMgbmVjZXNzYXJ5IHRvIHByZXZlbnQgcm91bmRpbmcgZnJvbQogICAgICAgICAgICAgICAgICAvLyBjYXVzaW5nIG92ZXJsYXAgYmV0d2VlbiB0aGlzIHJlY3QgYW5kIGl0cyBuZWlnaGJvcnMuIFRoZQogICAgICAgICAgICAgICAgICAvLyBtaW51ZW5kIGlzIHRoZSBsb2NhdGlvbiBvZiB0aGUgbmV4dCBwaXhlbCwgd2hpbGUgdGhlCiAgICAgICAgICAgICAgICAgIC8vIHN1YnRyYWhlbmQgaXMgdGhlIHBvc2l0aW9uIG9mIHRoZSBjdXJyZW50IHBpeGVsICh0byB0dXJuIGFuCiAgICAgICAgICAgICAgICAgIC8vIGFic29sdXRlIGNvb3JkaW5hdGUgdG8gYSB3aWR0aC9oZWlnaHQpLiBZZXMsIEkgaGFkIHRvIGxvb2sKICAgICAgICAgICAgICAgICAgLy8gdXAgbWludWVuZCBhbmQgc3VidHJhaGVuZC4KICAgICAgICAgICAgICAgICAgTWF0aC5yb3VuZChwaXhlbFBvcy54ICsgcGl4ZWxTaXplLngpIC0gTWF0aC5yb3VuZChwaXhlbFBvcy54KSwKICAgICAgICAgICAgICAgICAgTWF0aC5yb3VuZChwaXhlbFBvcy55ICsgcGl4ZWxTaXplLnkpIC0gTWF0aC5yb3VuZChwaXhlbFBvcy55KSk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfSBmaW5hbGx5IHsKICAgICAgICAgIGNhbnZhc1RpbGVzLnRpbGVEcmF3bihjYW52YXMpOwogICAgICAgIH0KICAgICAgfSk7CiAgICB9OwoKICAgIHRoaXMubGF5ZXJNYW5hZ2VyLmFkZExheWVyKGNhbnZhc1RpbGVzLCAiaW1hZ2UiLCBsYXllcklkLCBncm91cCk7CiAgfTsKCiAgbWV0aG9kcy5yZW1vdmVJbWFnZSA9IGZ1bmN0aW9uKGxheWVySWQpIHsKICAgIHRoaXMubGF5ZXJNYW5hZ2VyLnJlbW92ZUxheWVyKCJpbWFnZSIsIGxheWVySWQpOwogIH07CgogIG1ldGhvZHMuY2xlYXJJbWFnZXMgPSBmdW5jdGlvbigpIHsKICAgIHRoaXMubGF5ZXJNYW5hZ2VyLmNsZWFyTGF5ZXJzKCJpbWFnZSIpOwogIH07CgogIGZ1bmN0aW9uIHByZXZlbnRVbmludGVuZGVkWm9vbU9uU2Nyb2xsKG1hcCkgewogICAgLy8gUHJldmVudCB1bndhbnRlZCBzY3JvbGwgY2FwdHVyaW5nLiBTaW1pbGFyIGluIHB1cnBvc2UgdG8KICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9DbGlmZkNsb3VkL0xlYWZsZXQuU2xlZXAgYnV0IHdpdGggYQogICAgLy8gZGlmZmVyZW50IHNldCBvZiBoZXVyaXN0aWNzLgoKICAgIC8vIFRoZSBiYXNpYyBpZGVhIGlzIHRoYXQgd2hlbiBhIG1vdXNld2hlZWwvRE9NTW91c2VTY3JvbGwKICAgIC8vIGV2ZW50IGlzIHNlZW4sIHdlIGRpc2FibGUgc2Nyb2xsIHdoZWVsIHpvb21pbmcgdW50aWwgdGhlCiAgICAvLyB1c2VyIG1vdmVzIHRoZWlyIG1vdXNlIGN1cnNvciBvciBjbGlja3Mgb24gdGhlIG1hcC4gVGhpcwogICAgLy8gaXMgc2xpZ2h0bHkgdHJpY2tpZXIgdGhhbiBqdXN0IGxpc3RlbmluZyBmb3IgbW91c2Vtb3ZlLAogICAgLy8gYmVjYXVzZSBtb3VzZW1vdmUgaXMgZmlyZWQgd2hlbiB0aGUgcGFnZSBpcyBzY3JvbGxlZCwKICAgIC8vIGV2ZW4gaWYgdGhlIHVzZXIgZGlkIG5vdCBwaHlzaWNhbGx5IG1vdmUgdGhlIG1vdXNlLiBXZQogICAgLy8gaGFuZGxlIHRoaXMgYnkgZXhhbWluaW5nIHRoZSBtb3VzZW1vdmUgZXZlbnQncyBzY3JlZW5YCiAgICAvLyBhbmQgc2NyZWVuWSBwcm9wZXJ0aWVzOyBpZiB0aGV5IGNoYW5nZSwgd2Uga25vdyBpdCdzIGEKICAgIC8vICJ0cnVlIiBtb3ZlLgoKICAgIC8vIGxhc3RTY3JlZW4gY2FuIG5ldmVyIGJlIG51bGwsIGJ1dCBpdHMgeCBhbmQgeSBjYW4uCiAgICB2YXIgbGFzdFNjcmVlbiA9IHt4OiBudWxsLCB5OiBudWxsfTsKICAgICQoZG9jdW1lbnQpLm9uKCJtb3VzZXdoZWVsIERPTU1vdXNlU2Nyb2xsIiwgIioiLCBmdW5jdGlvbihlKSB7CiAgICAgIC8vIERpc2FibGUgem9vbWluZyAodW50aWwgdGhlIG1vdXNlIG1vdmVzIG9yIGNsaWNrKQogICAgICBtYXAuc2Nyb2xsV2hlZWxab29tLmRpc2FibGUoKTsKICAgICAgLy8gQW55IG1vdXNlbW92ZSBldmVudHMgYXQgdGhpcyBzY3JlZW4gcG9zaXRpb24gd2lsbCBiZSBpZ25vcmVkLgogICAgICBsYXN0U2NyZWVuID0ge3g6IGUub3JpZ2luYWxFdmVudC5zY3JlZW5YLCB5OiBlLm9yaWdpbmFsRXZlbnQuc2NyZWVuWX07CiAgICB9KTsKICAgICQoZG9jdW1lbnQpLm9uKCJtb3VzZW1vdmUiLCAiKiIsIGZ1bmN0aW9uKGUpIHsKICAgICAgLy8gRGlkIHRoZSBtb3VzZSByZWFsbHkgbW92ZT8KICAgICAgaWYgKGxhc3RTY3JlZW4ueCAhPT0gbnVsbCAmJiBlLnNjcmVlblggIT09IGxhc3RTY3JlZW4ueCB8fCBlLnNjcmVlblkgIT09IGxhc3RTY3JlZW4ueSkgewogICAgICAgIC8vIEl0IHJlYWxseSBtb3ZlZC4gRW5hYmxlIHpvb21pbmcuCiAgICAgICAgbWFwLnNjcm9sbFdoZWVsWm9vbS5lbmFibGUoKTsKICAgICAgICBsYXN0U2NyZWVuID0ge3g6IG51bGwsIHk6IG51bGx9OwogICAgICB9CiAgICB9KTsKICAgICQoZG9jdW1lbnQpLm9uKCJtb3VzZWRvd24iLCAiLmxlYWZsZXQiLCBmdW5jdGlvbihlKSB7CiAgICAgIC8vIENsaWNraW5nIGFsd2F5cyBlbmFibGVzIHpvb21pbmcuCiAgICAgIG1hcC5zY3JvbGxXaGVlbFpvb20uZW5hYmxlKCk7CiAgICAgIGxhc3RTY3JlZW4gPSB7eDogbnVsbCwgeTogbnVsbH07CiAgICB9KTsKICB9CgogIEhUTUxXaWRnZXRzLndpZGdldCh7CiAgICBuYW1lOiAibGVhZmxldCIsCiAgICB0eXBlOiAib3V0cHV0IiwKICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKGVsLCB3aWR0aCwgaGVpZ2h0KSB7CiAgICAgIC8vIGhhcmQtY29kaW5nIGNlbnRlci96b29tIGhlcmUgZm9yIGEgbm9uLWVtcHR5IGluaXRpYWwgdmlldywgc2luY2UgdGhlcmUKICAgICAgLy8gaXMgbm8gd2F5IGZvciBodG1sd2lkZ2V0cyB0byBwYXNzIGluaXRpYWwgcGFyYW1zIHRvIGluaXRpYWxpemUoKQogICAgICB2YXIgbWFwID0gTC5tYXAoZWwsIHsKICAgICAgICBjZW50ZXI6IFs1MS41MDUsIC0wLjA5XSwKICAgICAgICB6b29tOiAxMwogICAgICB9KTsKCiAgICAgIHByZXZlbnRVbmludGVuZGVkWm9vbU9uU2Nyb2xsKG1hcCk7CgogICAgICAvLyBTdG9yZSBzb21lIHN0YXRlIGluIHRoZSBtYXAgb2JqZWN0CiAgICAgIG1hcC5sZWFmbGV0ciA9IHsKICAgICAgICAvLyBIYXMgdGhlIG1hcCBldmVyIHJlbmRlcmVkIHN1Y2Nlc3NmdWxseT8KICAgICAgICBoYXNSZW5kZXJlZDogZmFsc2UsCiAgICAgICAgLy8gRGF0YSB0byBiZSByZW5kZXJlZCB3aGVuIHJlc2l6ZSBpcyBjYWxsZWQgd2l0aCBhcmVhICE9IDAKICAgICAgICBwZW5kaW5nUmVuZGVyRGF0YTogbnVsbAogICAgICB9OwoKICAgICAgaWYgKCFIVE1MV2lkZ2V0cy5zaGlueU1vZGUpIHJldHVybiBtYXA7CgogICAgICAvLyBUaGUgbWFwIGlzIHJlbmRlcmVkIHN0YXRpY2x5IChubyBvdXRwdXQgYmluZGluZywgc28gbm8gdGhpcy5nZXRJZCgpKQogICAgICBpZiAodHlwZW9mIHRoaXMuZ2V0SWQgPT09ICd1bmRlZmluZWQnKSByZXR1cm4gbWFwOwoKICAgICAgbWFwLmlkID0gdGhpcy5nZXRJZChlbCk7CgogICAgICAvLyBTdG9yZSB0aGUgbWFwIG9uIHRoZSBlbGVtZW50IHNvIHdlIGNhbiBmaW5kIGl0IGxhdGVyIGJ5IElECiAgICAgICQoZWwpLmRhdGEoImxlYWZsZXQtbWFwIiwgbWFwKTsKCiAgICAgIC8vIFdoZW4gdGhlIG1hcCBpcyBjbGlja2VkLCBzZW5kIHRoZSBjb29yZGluYXRlcyBiYWNrIHRvIHRoZSBhcHAKICAgICAgbWFwLm9uKCdjbGljaycsIGZ1bmN0aW9uKGUpIHsKICAgICAgICBTaGlueS5vbklucHV0Q2hhbmdlKG1hcC5pZCArICdfY2xpY2snLCB7CiAgICAgICAgICBsYXQ6IGUubGF0bG5nLmxhdCwKICAgICAgICAgIGxuZzogZS5sYXRsbmcubG5nLAogICAgICAgICAgJy5ub25jZSc6IE1hdGgucmFuZG9tKCkgLy8gRm9yY2UgcmVhY3Rpdml0eSBpZiBsYXQvbG5nIGhhc24ndCBjaGFuZ2VkCiAgICAgICAgfSk7CiAgICAgIH0pOwoKICAgICAgdmFyIGdyb3VwVGltZXJJZCA9IG51bGw7CgogICAgICBtYXAKICAgICAgICAub24oJ21vdmVlbmQnLCBmdW5jdGlvbihlKSB7IHVwZGF0ZUJvdW5kcyhlLnRhcmdldCk7IH0pCiAgICAgICAgLm9uKCdsYXllcmFkZCBsYXllcnJlbW92ZScsIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgIC8vIElmIHRoZSBsYXllciB0aGF0J3MgY29taW5nIG9yIGdvaW5nIGlzIGEgZ3JvdXAgd2UgY3JlYXRlZCwgdGVsbAogICAgICAgICAgLy8gdGhlIHNlcnZlci4KICAgICAgICAgIGlmIChtYXAubGF5ZXJNYW5hZ2VyLmdldEdyb3VwTmFtZUZyb21MYXllckdyb3VwKGUubGF5ZXIpKSB7CiAgICAgICAgICAgIC8vIEJ1dCB0byBhdm9pZCBjaGF0dGluZXNzLCBjb2FsZXNjZSBldmVudHMKICAgICAgICAgICAgaWYgKGdyb3VwVGltZXJJZCkgewogICAgICAgICAgICAgIGNsZWFyVGltZW91dChncm91cFRpbWVySWQpOwogICAgICAgICAgICAgIGdyb3VwVGltZXJJZCA9IG51bGw7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZ3JvdXBUaW1lcklkID0gc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICBncm91cFRpbWVySWQgPSBudWxsOwogICAgICAgICAgICAgIFNoaW55Lm9uSW5wdXRDaGFuZ2UobWFwLmlkICsgJ19ncm91cHMnLAogICAgICAgICAgICAgICAgbWFwLmxheWVyTWFuYWdlci5nZXRWaXNpYmxlR3JvdXBzKCkpOwogICAgICAgICAgICB9LCAxMDApOwogICAgICAgICAgfQogICAgICAgIH0pOwoKICAgICAgcmV0dXJuIG1hcDsKICAgIH0sCiAgICByZW5kZXJWYWx1ZTogZnVuY3Rpb24oZWwsIGRhdGEsIG1hcCkgewogICAgICAvLyBMZWFmbGV0IGRvZXMgbm90IGJlaGF2ZSB3ZWxsIHdoZW4geW91IHNldCB1cCBhIGJ1bmNoIG9mIGxheWVycyB3aGVuCiAgICAgIC8vIHRoZSBtYXAgaXMgbm90IHZpc2libGUgKHdpZHRoL2hlaWdodCA9PSAwKS4gUG9wdXBzIGdldCBtaXNhbGlnbmVkCiAgICAgIC8vIHJlbGF0aXZlIHRvIHRoZWlyIG93bmluZyBtYXJrZXJzLCBhbmQgdGhlIGZpdEJvdW5kcyBjYWxjdWxhdGlvbnMKICAgICAgLy8gYXJlIG9mZi4gVGhlcmVmb3JlIHdlIHdhaXQgdW50aWwgdGhlIG1hcCBpcyBhY3R1YWxseSBzaG93aW5nIHRvCiAgICAgIC8vIHJlbmRlciB0aGUgdmFsdWUgKHdlIHJlbHkgb24gdGhlIHJlc2l6ZSgpIGNhbGxiYWNrIGJlaW5nIGludm9rZWQKICAgICAgLy8gYXQgdGhlIGFwcHJvcHJpYXRlIHRpbWUpLgogICAgICAvLwogICAgICAvLyBUaGVyZSBtYXkgYmUgYW4gaXNzdWUgd2l0aCBsZWFmbGV0UHJveHkoKSBjYWxscyBiZWluZyBtYWRlIHdoaWxlCiAgICAgIC8vIHRoZSBtYXAgaXMgbm90IGJlaW5nIHZpZXdlZC0tbm90IHN1cmUgd2hhdCB0aGUgcmlnaHQgc29sdXRpb24gaXMKICAgICAgLy8gdGhlcmUuCiAgICAgIGlmIChlbC5vZmZzZXRXaWR0aCA9PT0gMCB8fCBlbC5vZmZzZXRIZWlnaHQgPT09IDApIHsKICAgICAgICBtYXAubGVhZmxldHIucGVuZGluZ1JlbmRlckRhdGEgPSBkYXRhOwogICAgICAgIHJldHVybjsKICAgICAgfQogICAgICBtYXAubGVhZmxldHIucGVuZGluZ1JlbmRlckRhdGEgPSBudWxsOwoKICAgICAgLy8gTWVyZ2UgZGF0YSBvcHRpb25zIGludG8gZGVmYXVsdHMKICAgICAgdmFyIG9wdGlvbnMgPSAkLmV4dGVuZCh7IHpvb21Ub0xpbWl0czogImFsd2F5cyIgfSwgZGF0YS5vcHRpb25zKTsKCiAgICAgIGlmICghbWFwLmxheWVyTWFuYWdlcikgewogICAgICAgIG1hcC5jb250cm9scyA9IG5ldyBDb250cm9sU3RvcmUobWFwKTsKICAgICAgICBtYXAubGF5ZXJNYW5hZ2VyID0gbmV3IExheWVyTWFuYWdlcihtYXApOwogICAgICB9IGVsc2UgewogICAgICAgIG1hcC5jb250cm9scy5jbGVhcigpOwogICAgICAgIG1hcC5sYXllck1hbmFnZXIuY2xlYXIoKTsKICAgICAgfQoKICAgICAgdmFyIGV4cGxpY2l0VmlldyA9IGZhbHNlOwogICAgICBpZiAoZGF0YS5zZXRWaWV3KSB7CiAgICAgICAgZXhwbGljaXRWaWV3ID0gdHJ1ZTsKICAgICAgICBtYXAuc2V0Vmlldy5hcHBseShtYXAsIGRhdGEuc2V0Vmlldyk7CiAgICAgIH0KICAgICAgaWYgKGRhdGEuZml0Qm91bmRzKSB7CiAgICAgICAgZXhwbGljaXRWaWV3ID0gdHJ1ZTsKICAgICAgICBtZXRob2RzLmZpdEJvdW5kcy5hcHBseShtYXAsIGRhdGEuZml0Qm91bmRzKTsKICAgICAgfQoKICAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSB6b29tVG9MaW1pdHMgb3B0aW9uIHNheXMgdGhhdCB0aGUgbWFwIHNob3VsZCBiZQogICAgICAvLyB6b29tZWQgdG8gbWFwIGVsZW1lbnRzLgogICAgICBmdW5jdGlvbiBuZWVkc1pvb20oKSB7CiAgICAgICAgcmV0dXJuIG9wdGlvbnMuem9vbVRvTGltaXRzID09PSAiYWx3YXlzIiB8fAogICAgICAgICAgICAgICAob3B0aW9ucy56b29tVG9MaW1pdHMgPT09ICJmaXJzdCIgJiYgIW1hcC5sZWFmbGV0ci5oYXNSZW5kZXJlZCk7CiAgICAgIH0KCiAgICAgIGlmICghZXhwbGljaXRWaWV3ICYmIG5lZWRzWm9vbSgpKSB7CiAgICAgICAgaWYgKGRhdGEubGltaXRzKSB7CiAgICAgICAgICAvLyBVc2UgdGhlIG5hdHVyYWwgbGltaXRzIG9mIHdoYXQncyBiZWluZyBkcmF3biBvbiB0aGUgbWFwCiAgICAgICAgICAvLyBJZiB0aGUgc2l6ZSBvZiB0aGUgYm91bmRpbmcgYm94IGlzIDAsIGxlYWZsZXQgZ2V0cyBhbGwgd2VpcmQKICAgICAgICAgIHZhciBwYWQgPSAwLjAwNjsKICAgICAgICAgIGlmIChkYXRhLmxpbWl0cy5sYXRbMF0gPT09IGRhdGEubGltaXRzLmxhdFsxXSkgewogICAgICAgICAgICBkYXRhLmxpbWl0cy5sYXRbMF0gPSBkYXRhLmxpbWl0cy5sYXRbMF0gLSBwYWQ7CiAgICAgICAgICAgIGRhdGEubGltaXRzLmxhdFsxXSA9IGRhdGEubGltaXRzLmxhdFsxXSArIHBhZDsKICAgICAgICAgIH0KICAgICAgICAgIGlmIChkYXRhLmxpbWl0cy5sbmdbMF0gPT09IGRhdGEubGltaXRzLmxuZ1sxXSkgewogICAgICAgICAgICBkYXRhLmxpbWl0cy5sbmdbMF0gPSBkYXRhLmxpbWl0cy5sbmdbMF0gLSBwYWQ7CiAgICAgICAgICAgIGRhdGEubGltaXRzLmxuZ1sxXSA9IGRhdGEubGltaXRzLmxuZ1sxXSArIHBhZDsKICAgICAgICAgIH0KICAgICAgICAgIG1hcC5maXRCb3VuZHMoWwogICAgICAgICAgICBbIGRhdGEubGltaXRzLmxhdFswXSwgZGF0YS5saW1pdHMubG5nWzBdIF0sCiAgICAgICAgICAgIFsgZGF0YS5saW1pdHMubGF0WzFdLCBkYXRhLmxpbWl0cy5sbmdbMV0gXQogICAgICAgICAgXSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIG1hcC5maXRXb3JsZCgpOwogICAgICAgIH0KICAgICAgfQoKICAgICAgZm9yICh2YXIgaSA9IDA7IGRhdGEuY2FsbHMgJiYgaSA8IGRhdGEuY2FsbHMubGVuZ3RoOyBpKyspIHsKICAgICAgICB2YXIgY2FsbCA9IGRhdGEuY2FsbHNbaV07CiAgICAgICAgaWYgKG1ldGhvZHNbY2FsbC5tZXRob2RdKQogICAgICAgICAgbWV0aG9kc1tjYWxsLm1ldGhvZF0uYXBwbHkobWFwLCBjYWxsLmFyZ3MpOwogICAgICAgIGVsc2UKICAgICAgICAgIGNvbnNvbGUubG9nKCJVbmtub3duIG1ldGhvZCAiICsgY2FsbC5tZXRob2QpOwogICAgICB9CgogICAgICBtYXAubGVhZmxldHIuaGFzUmVuZGVyZWQgPSB0cnVlOwoKICAgICAgaWYgKCFIVE1MV2lkZ2V0cy5zaGlueU1vZGUpIHJldHVybjsKCiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHVwZGF0ZUJvdW5kcyhtYXApOyB9LCAxKTsKICAgIH0sCiAgICByZXNpemU6IGZ1bmN0aW9uKGVsLCB3aWR0aCwgaGVpZ2h0LCBtYXApIHsKICAgICAgbWFwLmludmFsaWRhdGVTaXplKCk7CiAgICAgIGlmIChtYXAubGVhZmxldHIucGVuZGluZ1JlbmRlckRhdGEpIHsKICAgICAgICB0aGlzLnJlbmRlclZhbHVlKGVsLCBtYXAubGVhZmxldHIucGVuZGluZ1JlbmRlckRhdGEsIG1hcCk7CiAgICAgIH0KICAgIH0KICB9KTsKCiAgaWYgKCFIVE1MV2lkZ2V0cy5zaGlueU1vZGUpIHJldHVybjsKCiAgU2hpbnkuYWRkQ3VzdG9tTWVzc2FnZUhhbmRsZXIoJ2xlYWZsZXQtY2FsbHMnLCBmdW5jdGlvbihkYXRhKSB7CiAgICB2YXIgaWQgPSBkYXRhLmlkOwogICAgdmFyIGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpOwogICAgdmFyIG1hcCA9IGVsID8gJChlbCkuZGF0YSgnbGVhZmxldC1tYXAnKSA6IG51bGw7CiAgICBpZiAoIW1hcCkgewogICAgICBjb25zb2xlLmxvZygiQ291bGRuJ3QgZmluZCBtYXAgd2l0aCBpZCAiICsgaWQpOwogICAgICByZXR1cm47CiAgICB9CgogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkYXRhLmNhbGxzLmxlbmd0aDsgaSsrKSB7CiAgICAgIHZhciBjYWxsID0gZGF0YS5jYWxsc1tpXTsKICAgICAgaWYgKGNhbGwuZGVwZW5kZW5jaWVzKSB7CiAgICAgICAgU2hpbnkucmVuZGVyRGVwZW5kZW5jaWVzKGNhbGwuZGVwZW5kZW5jaWVzKTsKICAgICAgfQogICAgICBpZiAobWV0aG9kc1tjYWxsLm1ldGhvZF0pCiAgICAgICAgbWV0aG9kc1tjYWxsLm1ldGhvZF0uYXBwbHkobWFwLCBjYWxsLmFyZ3MpOwogICAgICBlbHNlCiAgICAgICAgY29uc29sZS5sb2coIlVua25vd24gbWV0aG9kICIgKyBjYWxsLm1ldGhvZCk7CiAgICB9CiAgfSk7Cgp9KSgpOwoKCgovLyBJbiBSTWFya2Rvd24ncyBzZWxmLWNvbnRhaW5lZCBtb2RlLCB3ZSBkb24ndCBoYXZlIGEgd2F5IHRvIGNhcnJ5IGFyb3VuZCB0aGUKLy8gaW1hZ2VzIHRoYXQgTGVhZmxldCBuZWVkcyBidXQgZG9lc24ndCBsb2FkIGludG8gdGhlIHBhZ2UuIEluc3RlYWQsIHdlJ2xsIHNldAovLyBkYXRhIFVSSXMgZm9yIHRoZSBkZWZhdWx0IG1hcmtlciwgYW5kIGxldCBhbnkgb3RoZXJzIGJlIGxvYWRlZCB2aWEgQ0ROLgppZiAodHlwZW9mKEwuSWNvbi5EZWZhdWx0LmltYWdlUGF0aCkgPT09ICJ1bmRlZmluZWQiKSB7CiAgTC5JY29uLkRlZmF1bHQuaW1hZ2VQYXRoID0gImh0dHA6Ly9jZG4ubGVhZmxldGpzLmNvbS9sZWFmbGV0LTAuNy4zL2ltYWdlcyI7CgogIGlmIChMLkJyb3dzZXIucmV0aW5hKSB7CiAgICBMLkljb24uRGVmYXVsdC5wcm90b3R5cGUub3B0aW9ucy5pY29uVXJsID0gImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBRElBQUFCU0NBWUFBQUFXeTRmckFBQVBpRWxFUVZSNDJ0MWJDVkNVNXhrbWJhYnRaSkpPTytsMG1oZ1QweVFlMFdYWmd6MjU3ME5COEk2SjZVemFUQm9PUlJGRXJ1VkdEaFdVUFJBUVJGRlJFRG5WeEN0RUJSYjI0REJORTNXYWFhdHBrbWx1bzRtK2ZkOXY5OTlvbEdWQkR1M09QTGorLy9zKzcvVzkzL2Y5Ly82L0V3QTQvVDlnM0FsRk9VZWVVR1IydU1xek95SmsyUjJ4MHF5T0Ftbm1rUzNTckNQclpKbEhsc3F6anlwY3M0OU9YMUpmLy9QN0toRDg4NUEwdTEwbXkyb3ZRc2N2eWJJNndFRjhpdkk3cEZudEFWNnFrdzlQV1NCSzFiRW5aUmx0bTJXWjdSOGg0RmJJMFZHMzNHUGdYWGdDQXJhK0E0RUluOEtUNEpIL0ZpZ29pSi9JSXo2VFpiVlZLTExhbjV1MFFFU3Fsa2NrV1czcDBzeTJieERBZ1p3TzEzVER5dG9CK05QZTkremlsZDJERUZHdUI3L05wekRvZHJpRjU1bzBvN1hJUlhYb054TWFpQ1NqOVZVMDlDOEVFTnh5ajBDNHRodGVyaDJFVit2ZXV3T3I2czdEeTNzc29POTNrM2xsenhCRTZQVGdrWGNNT0Y3RUo5S010cWpSOUpGRFFuTlY5YitRcWxxcUVFQ1FaN1RCZ3UxbllkWHVJWGdWbmVTd1l0Y2dSRmIxUTFpRkdVTEx6UkNzTTkwR09yWmdoeGtpS3Z0aGVjMGdyTHBGbHhDdTZjS2gxdzZjSFVTYmN0UGh4OFlsRUVsdTQrTlNWZk5wQkJBQ3RweUdsYnNHbUJPRWxSaE1CRG9mZ2s0R29iT2pRWEM1Q1JaaVVDL1ZEdG40cUxyQkpaM0EyY05nK25FNFAzMVBnU0RCYkltcTVVTkplak1RRnFpN2NDaWNaM2laQlRBQVFWb1RCSTRES0tDVkdCREhINm5yQlJsV3hXcjdzbGpWSWhsVElETFZvUmtTMWVIL1NOSVBnenl6RlJaVjlObkcrK0xxUWN5b0dRTFFnZkZFSUZZcGN1ZUF6YzZTU2lNT3RUWWdIOUNYcitXcFRieFJCZUtscW45VWt0WmtSb0FDWjVQbE84MVlnZk1NNFJYOUVLQXhUU2pDZHZUakVMUFlXMTdkRDhyc2RpQmZFQmNsU1kyUE94UUlIbmxJa25yb0VBSms2VTJ3cE1MSVNGL2FOUVNoV0FWL3RXbFNFSUsyVnFCTnNyMjAwZ1J5R21Mb2t5UzE4Y1RkRnRBN0FuRk5iY3hBQUNHTXJRdERMQWpxQlQrMWNWSkJOc2syK2JCUTF3T2NYNUsweHMxMkE4R3l6WFJOYWZnZUFZRmIzbUVrckJJNEkvbVdHVWVOUUkxbHlwMlBvTzlqNGFES2NINEViZTBFOGczeGd5eWxjYzZ3Z2JpbU5qU1NvRnRXSzFzVHFMUmgyQk0rU09nSWZER0xKTDhJRzNaWmpVWC9WaXl2R1lMRk93ZFpuL2xqWUk3eXpzZWU0VGpjc1YvSVIzRnFRK3RkQXhFbk5TakZ5UWVCRUs3cGdSVm9kRW5WSVBoc056cUVZSzBabHVGc1JucTNZakgyMktKeUE2ejR5VG1TcFo1emxIOFJUdldrdDFDckI4NVBZVXFqengyQnVHNnNQeWZlZUFBOHNqdHdwaGhpQ0ZTYndYdWIwUzdJU1BpT0Fadk80aDA0OHhTZkJNK2NEcERpZUNaT2dnU3o2SkhkQnY1RkozQ042TFBKUjFRTWdPOTIwNGgyYUFMZ2REeHpqbHA0a3c4WWFIS3lCU0pKUGlnV2I2d0hRaVJtYnhrS0wwUURYa2hnRDk0WXhHS3NHc2tUUWt2ZnhWbmxJSEJjQk5ma2Vneml3QjNIQW5IRHVHeW5SWGNwL3V0WFpoclJIaVdNNUNQTGpiZHdIVkRZQWhGdDNKOHJUdG9QYnBrdFNEckU0SU5aOGl3MTJrVVlFcFBzNGtvemVPVzBBM0VRSW92YlljZnhJVGo3OTh2d3hiZlg0T3IxSDhCNDZST283ZndidktZOWJwTnp5MmhtaVNPT3lNckJFZTJSVDV4Lzd0akh4Q0ZLMmwvNFl5QkorOTVIUUFCbWliS3pFSnZSczlSZ0Y0RnFFNU1sZUdTM0F1bUxOKzZENGxZamZJZU9EL2U1ZVJPZzdzejdvRWc3d0hSazZZM1lpLzJNSndUN2JDUzc1QnZKQnVHc1N2cUlEMWdnYUh5ZWFBTWVRRVJneWFqQmczQkc4U2d4REFzdkpGeFVPY0JrZzdkME1sM1hqZnVoQ3l2ZzZPZml4MStBbDZxQjZmcHVlb3R4c2NrRmg1QTkyK1FieWRIdzR2eW1HSnhFRytyV2lSTDNnb0pXY1N3dndiUEVDTzViRGNNaVJHTm1jaFM0YTFJOWtQNjJEaE9NOXRQYWQ0bnBFaGFVZFRQT3NQSit1N2JKTjg1UHBhcUo2WW9UNnhLY1JJbDFwUWp3eEl1a3hYaHlJWTU3TjFTd2g3RHlBU2JybTM4TVNIZFJVU3RjKy80R2pPVVRWMzJhY2JobE5qTk82cFdSN0ZQVGs2eFgzbEdtSzB5czB6cmhuMFpod2g3d0szaWJuVnlnNndlM0xRYTdXRlF4eUdTcGlxUmJlL284alBYVGUrRUs0eERqRUNIT3hkWVJZYzgrK1VoeWZnWEhtYTV3L1o1bUorSDYzVDNDaE4zWTZPL2d1TWN4ajhOR2ljTERnWXlRM0NLY25zVWJNQnVvYTdqNDhaZ0QrZXJxZGN6cWJzWVRwdWxqM0xTdTJQT0JmQ1E1OHBuMEVIMU93b1RhZnd2WDErSlYyVm1JeEV3SGxKbEJzZGt3TEh5Mm1aamNnakk5a0o0WW5iaDYvWHU0bDA5WWZoUGpDc1NKZzdocEliYm5nLzkyTTVNam4wa1BjZGxKR0YvN0pRSkNTcnNnQXNlZUh6b3FMKzRiRm5TZTVFSkt6Z0hwZWFUc2czdjlyQ3J0WUZ6K2hTY1pkekFHWXM4SFg4NEg5Sm4wS0FZblFmeXVJUVQ0WTVtbzBha2lNaFFlRGg0NHRFZ3VYR2NFMGlQODQ1TXZ4eHpFalJzM1FaNVV4M2hDdG5VeGJxcTZQUi84Y1JkQWN1U3oxWWZ6R0VoTm0yQmREZmprdncwTGNUWUtva0NLK29hRkFvbElqaURGQllsMDIvb3VqRG1RQzFjK1p4ekMrQm9JcDJ0MzVIWEhQckRuQS9sSWN1UXo2U0tPT0FuV1Zxc1JiSHNjamlkRE5mMGdSV0Y3Q05YMk0xbDNWVE9RYm1wZDU1Z0RxVDAxeERoa21CVGlKTWhHc0IraXNkclBiR2U2d3JVMTVSakl6a1FFeUhCM0dxWWJZQ0FpU2VId0NNQm1JN21BWWl3dDZnclg3UVQ5aDVkSEhjUS9QL3NLbEVtN0dZZDM3bEhHR2FMdXQydGJpckQ1aVQ2VHJpQ3VLc1ZKc0xyQ3d5V3VpaDJZai91bk1DMlZGbGZzZ3I1aG9keHNaSElFWlZvVGtQNzg3QVB3N1RYSFp5L2FjLzI1ckozcFNwUDI0dFJyWm55ZVcwMTJiYnRaYlM5QWVmS1orYjZtTXRqSlM2VjZHUC96T1Izd0srcGtRbjdiekhiSkNDUkRzcUZsQnB6K2RqSENWN2Eyd01Vci94MHhpTSsrdWdwcnE0NWJuRmhiaGROb0YrTUtMT3QzMkM3NVN2cUliN3hVTzMvRmRyLzh1TXFETG1zcXdVM1ZpcEgyUXpBMmszaFRyMTFJQ25xWkhNbjdGK0hDRklmWlFRNUpmRFZVdlcxbXp2NzA4L1YzMTZGVi93RjRKZTloc2dTdjNHT01ZejcxSmc2YmtlelMwQ041TjFXTGhTT3Vzc1cyalJlc3Juek5aWFVGbTVQblcwbmwyQ2NpVkxRSGViSEJKaDlVMGcxUzNHWVFENGVRakgyUVdIMEMwdXR3MTVEWEFFSXliRDBueG9Vc1lQTVptejRONTlIWUUrSzBTenlDMk1vM2JJSHc0elRUK0t0MzNFU0FYL0ZaQ01Xb3ZVdE1JTXp2SFJGS0pBOUcrVkFHdko3SVBzS0dDM0hkRFlJNHFud3poSlFabVE1bDJBT0RjTVNXYjZtSjZmZ1duK0g0YnN4Yld6WDl0bXQybDlYbDdmelljcHdKR2hsNU1JNVhFU29MOGthR0tCOVhXd3c4eE9vWUlYQnJEM2h2T2duSzlCYkVZZHlwSHNjdFNCY0dZTGJKK0ZNdmJ1cHoyQWFuSjAxdUFQTFZKYWI4OEIwM0gxeGlkS0g4V0IwVENDcTFLTkVNNFlnUkRtN0ZSbHlzK204TDZHNmdKTG1Qa3B1cXhoSlUwc3Q4SkY4Rk1lVitkd1RpcEZMOXpEbEdld21CMXdZZHpKaC9xUmxjY250SERjcWV2QkN2Nk5CWjN4SXorQ0dQNXhZVEtJb01JTVp6bytVVElBSzNXUktnVUxVQitlZ2NyVHMvN0EwNlhwUTIwVGxhaStPNG1tMERLTHVTQWdQd2tXZ3FJY09ra0MrQk9CUmRWbGNDK2NpTDBrVU5HNGpvZGQzdm5LTTEzeUhBSy84VUJHNm5UQnJCT1VjL3BmREJSWko4OGNnOUR1UWJMMXJ6eGR3M3l4NjFleFBiT1Vhemk0UmQ4VnFZTWhCSXd5dW5GNXl6OVZNQ1VWNnZ4UStFQ0pjSDhzMDVTbE15NHQxNDV4aTFqQWtqZkl1N0dJRVN4ellQU2FjQzFHZmtnM2ZoR2JENmRkTWxWdnVDUXovMG9IQWZLY2xTbWlBQUswSk43NXpkQy9PeTlKTUthbkt5VHhCdk9HQUpKRWJkNGZBdlZyeG85VXVreE1mWndidTRod1dpS0RMQ1hDU2ZUTkFVVGJhOUNzNXgxU0Q0T0J3SW00cWpOUU9rS0UxdUJIK2FRa3NzVlptYnFaOFVDTEF2eVM1Qm5MRGYyaHZhRTZQK01aUWZwWW5nc3VCZDJBMStXN0VxQlVaNE1VTS9LWEF2TWpHYkh2bTIzZ0NYYUkxeVREOVBvN0tleldCSkI4RVhwMEFDRDBzK0o2Tm5Ra0d6SkdkUGxGREhCZEkrNXQvWitkR2FRQzRiSHB2T2dnK3V6bkpjSUdlcmVpWVV5a0lqcytXVzIybXJCaTlXTGJxbkp4OXdsdWdrSWxIaWZ2QkdjZ0xOS0xQUTRFU0ErcEN6STRqZnd5MkFqZmY4Q0FkdVd6eTRyTGpubldFR3FGZG1wZmRNQ0tnYVpFT1pjNXFyeGczbldNMjhjWG1vaGhldFBjcXFzbjR2ZUcwMk1jekRtV1ZtV3MrNHdqbXIxOFl2V0ZmTEJWSTNiazhIdWJ4WjVzcFZSWkhUeVF6SnNTb3ZvUEh4aEFLclFkeUtyRk5jRUQvd284cG5qdXZ6V3JnSGF5SnlJWTViejJJVHcxeWNKcDlQN1I0WDhMRENISy9MMmwwc0VINjB0bXJjSHp6alJldDR0TTloVmNrK3hRektOeG5HTFJEcU8rS1VaWjdncW5IZFpZMW14b1E4UVVmamxZd0kxdGFDQnk1WUJLcktjeW5kOXdUcU53dWZFZmhycXExN0tvMTZ3aDRGcFBGSzQ1WnRLRE5PZ25zaFpqRGZBSDlNN3I0bnlQT05qRXVhL2haWGphdjhOelRUSnZUaFRGNlVwcEp0RitKcXdBMk5FMTVVNmVGWmRHZ3NtSnZSeXppVWVCWElYN1BUMmh1YXpSUCtsS2tnYXZzemVNMThqVzBvVmNmQnJZQ3FZb1JuTjNhUEdsdzFpTU0xN2FpMUd0cXZuZC9RL0g1U252dkY3ZjEybGprY3owcHNVbVdCcFNvejBMblJnS3BCdWdxNkw4Q3V4U2tRZGU2a1BjQXNXcU43QW8xK3l6YVVhY2RBc2NrSTBqd0RQSlBVNVRCbWJPeGkvVVc2NHBRT3JqYys1LzFWL2R0SmZSSWJydzBLV0ZWV1YrSHc2R05EWkU2YUhwN2UwT1VRNXFUcm1ZNDhydy80c1JXVzNvalNwazM2SStXem83WS83aHlsK1pKdFhWSTdXSis0NWhyZ2FjejI5QTMyUVRJU3JDRHBpSkxidVdwOE9pdWg4akdZaW9mOGVUSHFERXRWS2tDR21aVlpxekk5c2NzdVNJWmtaWFRmS25ZSHQ4Tk5tTEszRmFReHBiOUdKejVqVmNITWNsV2hyRCtWZUhmUXNKTGtXcW9oVEdybHFuRlo5THJ1a1NsOTdZSVhwVTVrVmNITVN2REtUcHBuaE5tWThXa0pYWGNGblNNWlNZNmUzY08xcnVLeFUvNytDR1VTbmJuQ3RpNGJXakhiT0F2bEdPQXBkUHJKOWJlRGp0RTVraEZzYU9hcThkSHpNYVcvdkMvZTZLR01XbTRmbFlNa3U0Y05uVm1wUGVqOHVkdEExYUJ6cmxsNDdSR2pzL2FHK3ZYNzV0VWt5aWhsMWxLVlpuREZySXV5KzJBYU92OUV2QVgwblk3Uk9aZUVKcTRhRitnM3pQdnFIU3Rlak9Zdmx2R3VBMUZtTnh0Q00xUDE4QWNNZ2pBTHY5TXhZV2FYOVdjQmt0V3V1dTllRnFQTTRtYnZBemJFRWc1aDl0SHBMSU90UCtnN0hlTW5OSExWZUcvSmt2RjdZV3hjMzNqRHFxeTBaaG9FS292ek0xUDBEUFNkanRGdkc1WlZYTFAwdm4xOXozS3JWVHZJSEYzZllISGVDdnJ1SE4vQWJkTk4zUE82OSsxN2lMZ3pqclJ1eDhFbC9Td0lNZzBNOVAzSEc5SHFzUHYraFVyckpYRXZjemorQUFiUngrQWNYODhGMHYxQXZCbktBbmxURzhSbG41LzZMdUxIVzUvem9yVCtEMHdnMXFxOHk1eGZ1ODhDU3lDbkg1aDNkVy9aR1h2ZTh1T01aUldQMG5vOGNJRlk3K1lmc3dVUnJUMzZRTDA5ZmZzTXBwSFllZ1cvUDdDQldIdmxNT0dCZTUvOWp0ZGpZN1I4d2tUYitSOW1lWkE2bjJvSldBQUFBQUJKUlU1RXJrSmdnZz09IjsKICB9IGVsc2UgewogICAgTC5JY29uLkRlZmF1bHQucHJvdG90eXBlLm9wdGlvbnMuaWNvblVybCA9ICJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJrQUFBQXBDQVlBQUFEQWs0TE9BQUFHbWtsRVFWUll3N1ZYZVV5VFp4anZObmZFTEZ1eUl6T2FiZXJtTVpFZVFDL09jbGtPNDlDcE9IWE9MSmwvQ0FVUnVZYlFpM0tMZ0VoYnJoWjFhRHdtYW9HcUtJSTZvZEFUbUgvc2NERmJkQzdMdkZxT0NjK2U5NXMyVkc1MFgvTExtL2Y0L1o3bmVZL25lMThhQU5DbUFyNUUveFpmMXVET2tUY0djV1I2aGw5MjQ3dFQ1VTdZNlNOdldzS1Q2M1A1OHFiZmVMSkc4TTVxY2dUa25ydnZyZERic1Q3TWwrdHY4Mlg2dlZ4SkUzM2FSbWdTeVl0Y1dWTXFYOTdZdjJKdlczOVVoUkUySHV5QkwrdCtnSzExMTZseTA2RWVXRk5sQW1IeGxRRTBPTWlWNm1RQ1NjdXNLUmxoUzNRTGVWSmRsMSsyM2g1ZFk0Rk5CM3RocmJZYm9xcHRFRmxwaFRDMWhTcEpuYlJ2eFA0Tldnc0U1Snl6ODZRTk5pLzVxU1VUR3VGazFndTU0dE45d3VLMndjM28rV2MxM1JDbXNvQndFcXpHY1pzeHN2Q1N5Lzl3SktmN1VXZjFtRVk4SldmZXdjNjdVVW9EYkRqUUMrRnFLNFFxTFZNR0dSOWQyd3VyS3pxQmszbnFJVC85ekx4UlJqZ1o5YnFRZ3ViK0Rkb2VDQzAzUThqKzBRaEZoQkhSL2VQM1UvekNsbjdVdStoaWhKMStiQk5mZkxJdm1reVAwZ3BCWldZWGhLdXNzSzZtQno1SFQ2TTFOcXBjcCttQkNQWG9zWVFmcmVrR3ZyamV3ZDU5L0d2S0NFN1RiSy8wNC9aVjVRWllWV21Ed0gxbUYzeGEyUTNyYTNEQkM1dkJUMW9QN1BUajRDMCtDY0w4YzdDMkN0ZWpxaHVDbnVJUUhhS0h6dmNSZlpwbnlsRmZYc1lKeDNwTkx3aEt6UkF3QWhFcUcwU3B1c0JIZkFLa3h3M3c0NjI3TVBob0NINzk4ejdzMFpuQkovTUVKYlpTYlhQaEVSMmloN3Ayb2svelNqMmNFSkRkNENBZSs1V1luQkNnUjJ1cnV5RXc2elJvVzYvRFdKL09lQVA4cGQvQkd0ek9aS3BHOG9rZTBTWDZHTW1SazZHRmx5QWM1OUszMk9URWluSUxSSlJjaGFoOEhRd05EOE40MzVaOVowRlkxRXF0eFVnKzBTTzZSSi9tbVh6NFZ1UytEcHhYQzNnWG1ad0lMN2RCU0g0ektFNTB3RVNmOHF3VmdyUDFFSWxUTzVKUDlJZ3UwYWV4ZGgyOEYxbG1BRUdKR2ZoN2pFNkVseU01UncvRkRjWUpqV2hiZWlCWW9ZTklwYzJGVC9TSUxpdnAwRjFpcERXazRCSUVvMlZ1b2RFSlVpZmhiaWx0bk5CSVhQVUZDTXB0aHRBeXF3cy9CUGxFRi9WYmFJeEVyZHhQcGhzVTdyY0NwOERvaEMrR3ZCSVBKUy90VzJqdHZUbW1BZXVOTzhCTk9ZUWVHOEcvMk96Q0ozcStzb1lCNWk2TmhNYUtyMTdGU2FsN0dJSGhldVYzdVNDWThxWVZ1RW0xY096cWRXcjdrdS9SMEJEb1RUK0RUK29oQ002L0NDdktMS080UkkrZFhQZUF1YU1xa3NhS3JaN0wzRkU1RklGYmtJY2VlT1oyT2NITzZ3SWhUa05vMGZmZ2pSR3hFcW9nWEhZVVBIZldBQy9sQURwd0djTFJZM2FlSzQvb1JHQ0tZY1pYUFZvZVgva2VsVllZOGRVR2Y4VjVFQlJiZ0pYVDVRSVBoUDllUEppNDI4SktPaUVZaFlYRkJxb3UyR3VoK3AvbUVCMS9SZk13NnJZN2N4Y2pUcm5lSTFGckR5dXpVU1JtOW1pd0VKeDhFL2dVbXFseXZIR2tuZWl3RXJSMjFGM3ROT0s1VGYweVhhVCtPN0RnQ3ZBTFRVQlhkTTRZaEMvSWF3UFUrMlBkdXFNdnVhUjZlb3hTd1VrNzVnZ3FzWUo3Vmljc253R0lrWkJTWEtPVXd3NzNXR1h5cVArSjIvYjljK2dpMVlBZy94cHdjazNnSnV1Y05yaDVKdkRQdlFyMFdGWGYwcGl5dDhmOC9XSTBoVjRwUnh4a1FaZEpEZkRKTk9BbU0wQWc4anlUNmh6MFdHWFd1UDk0WWgyamNmam1YQUd2SENNc2xSaW1ESFl1SHVEc3kyUXRIdUlhdnpuaGJZVVJxNVI1N0twekJCUlpLUEppOGVRZzQ4aDRqOFNEZG93aWZkSXJFVmRVK2diTzZRTnZSUnQ0WkJ0aFVhWmhVbmpsWU9iTmFnVjNrZW9lcnUzclU3cmN1Y2VxVTFtSkJ4eStCV1pZbE5FQkgrMGVINHZSaUIrT1l5YlUyaG5ibFlsVHZrSGluTTRtNTRZbnhTeWFaWVNGNlIzandnUDd1ZEtMR0lYNnIvbGJOYTlONnk1TUZ5bmpXRHRySGQ3NVp2VFlBUE8vNlJnRjBrNzZtUWxhM0ZHcTdkTytjSDhzS24wVm83bkRsbHdBaHF3TFBreHJId1dtSEpPbytBS0o0cmFiNU9nck03clZ1OGVXYjJQdTBEaDRlRGdYb09mdnA3WTdRZXFrblJtdmNUQkV5cTltL0hRUVNDU3o2TEhxM3oweXpzTnlTUmZNUzI1M3dsMkt5UkRiY1pQY2ZKS2pabVNFT2pjeHlpK1k4ZFVPdHNJRUg2UjJ3TnlrZHFya1lKMFJWOTJIMFc1OHBrZlFrN2NLZXZzTEsxMFB5OFNkTUdmWE5YQVRZK3BQYnlKUi9FVDZuOW5JZnp0TnRaWVJWOVhuaVF1OUlBMnZPVmd5NGlyN0dDTFZtbWQremprSDBlQUY5UG82SzYxcG1DWEh4VTVySE1ZZDFmdGMzb3dqd1JTVlJ6TGpLdnFaRXR5NmNSVUQ3akdxaU9kdTVIRzZNZEhqTmNOWUdxZkRtNVlSekxCQkNDRGwvMmJrOGE4Z2RicWNmd0VDdTYyRmcvSHJnZ0FBQUFCSlJVNUVya0pnZ2c9PSI7CiAgfQp9Cg=="></script>
<script src="data:application/x-javascript;base64,KGZ1bmN0aW9uICgpIHsKCSd1c2Ugc3RyaWN0JzsKCglMLlRpbGVMYXllci5Qcm92aWRlciA9IEwuVGlsZUxheWVyLmV4dGVuZCh7CgkJaW5pdGlhbGl6ZTogZnVuY3Rpb24gKGFyZywgb3B0aW9ucykgewoJCQl2YXIgcHJvdmlkZXJzID0gTC5UaWxlTGF5ZXIuUHJvdmlkZXIucHJvdmlkZXJzOwoKCQkJdmFyIHBhcnRzID0gYXJnLnNwbGl0KCcuJyk7CgoJCQl2YXIgcHJvdmlkZXJOYW1lID0gcGFydHNbMF07CgkJCXZhciB2YXJpYW50TmFtZSA9IHBhcnRzWzFdOwoKCQkJaWYgKCFwcm92aWRlcnNbcHJvdmlkZXJOYW1lXSkgewoJCQkJdGhyb3cgJ05vIHN1Y2ggcHJvdmlkZXIgKCcgKyBwcm92aWRlck5hbWUgKyAnKSc7CgkJCX0KCgkJCXZhciBwcm92aWRlciA9IHsKCQkJCXVybDogcHJvdmlkZXJzW3Byb3ZpZGVyTmFtZV0udXJsLAoJCQkJb3B0aW9uczogcHJvdmlkZXJzW3Byb3ZpZGVyTmFtZV0ub3B0aW9ucwoJCQl9OwoKCQkJLy8gb3ZlcndyaXRlIHZhbHVlcyBpbiBwcm92aWRlciBmcm9tIHZhcmlhbnQuCgkJCWlmICh2YXJpYW50TmFtZSAmJiAndmFyaWFudHMnIGluIHByb3ZpZGVyc1twcm92aWRlck5hbWVdKSB7CgkJCQlpZiAoISh2YXJpYW50TmFtZSBpbiBwcm92aWRlcnNbcHJvdmlkZXJOYW1lXS52YXJpYW50cykpIHsKCQkJCQl0aHJvdyAnTm8gc3VjaCB2YXJpYW50IG9mICcgKyBwcm92aWRlck5hbWUgKyAnICgnICsgdmFyaWFudE5hbWUgKyAnKSc7CgkJCQl9CgkJCQl2YXIgdmFyaWFudCA9IHByb3ZpZGVyc1twcm92aWRlck5hbWVdLnZhcmlhbnRzW3ZhcmlhbnROYW1lXTsKCQkJCXZhciB2YXJpYW50T3B0aW9uczsKCQkJCWlmICh0eXBlb2YgdmFyaWFudCA9PT0gJ3N0cmluZycpIHsKCQkJCQl2YXJpYW50T3B0aW9ucyA9IHsKCQkJCQkJdmFyaWFudDogdmFyaWFudAoJCQkJCX07CgkJCQl9IGVsc2UgewoJCQkJCXZhcmlhbnRPcHRpb25zID0gdmFyaWFudC5vcHRpb25zOwoJCQkJfQoJCQkJcHJvdmlkZXIgPSB7CgkJCQkJdXJsOiB2YXJpYW50LnVybCB8fCBwcm92aWRlci51cmwsCgkJCQkJb3B0aW9uczogTC5VdGlsLmV4dGVuZCh7fSwgcHJvdmlkZXIub3B0aW9ucywgdmFyaWFudE9wdGlvbnMpCgkJCQl9OwoJCQl9IGVsc2UgaWYgKHR5cGVvZiBwcm92aWRlci51cmwgPT09ICdmdW5jdGlvbicpIHsKCQkJCXByb3ZpZGVyLnVybCA9IHByb3ZpZGVyLnVybChwYXJ0cy5zcGxpY2UoMSwgcGFydHMubGVuZ3RoIC0gMSkuam9pbignLicpKTsKCQkJfQoKCQkJdmFyIGZvcmNlSFRUUCA9IHdpbmRvdy5sb2NhdGlvbi5wcm90b2NvbCA9PT0gJ2ZpbGU6JyB8fCBwcm92aWRlci5vcHRpb25zLmZvcmNlSFRUUDsKCQkJaWYgKHByb3ZpZGVyLnVybC5pbmRleE9mKCcvLycpID09PSAwICYmIGZvcmNlSFRUUCkgewoJCQkJcHJvdmlkZXIudXJsID0gJ2h0dHA6JyArIHByb3ZpZGVyLnVybDsKCQkJfQoKCQkJLy8gcmVwbGFjZSBhdHRyaWJ1dGlvbiBwbGFjZWhvbGRlcnMgd2l0aCB0aGVpciB2YWx1ZXMgZnJvbSB0b3BsZXZlbCBwcm92aWRlciBhdHRyaWJ1dGlvbiwKCQkJLy8gcmVjdXJzaXZlbHkKCQkJdmFyIGF0dHJpYnV0aW9uUmVwbGFjZXIgPSBmdW5jdGlvbiAoYXR0cikgewoJCQkJaWYgKGF0dHIuaW5kZXhPZigne2F0dHJpYnV0aW9uLicpID09PSAtMSkgewoJCQkJCXJldHVybiBhdHRyOwoJCQkJfQoJCQkJcmV0dXJuIGF0dHIucmVwbGFjZSgvXHthdHRyaWJ1dGlvbi4oXHcqKVx9LywKCQkJCQlmdW5jdGlvbiAobWF0Y2gsIGF0dHJpYnV0aW9uTmFtZSkgewoJCQkJCQlyZXR1cm4gYXR0cmlidXRpb25SZXBsYWNlcihwcm92aWRlcnNbYXR0cmlidXRpb25OYW1lXS5vcHRpb25zLmF0dHJpYnV0aW9uKTsKCQkJCQl9CgkJCQkpOwoJCQl9OwoJCQlwcm92aWRlci5vcHRpb25zLmF0dHJpYnV0aW9uID0gYXR0cmlidXRpb25SZXBsYWNlcihwcm92aWRlci5vcHRpb25zLmF0dHJpYnV0aW9uKTsKCgkJCS8vIENvbXB1dGUgZmluYWwgb3B0aW9ucyBjb21iaW5pbmcgcHJvdmlkZXIgb3B0aW9ucyB3aXRoIGFueSB1c2VyIG92ZXJyaWRlcwoJCQl2YXIgbGF5ZXJPcHRzID0gTC5VdGlsLmV4dGVuZCh7fSwgcHJvdmlkZXIub3B0aW9ucywgb3B0aW9ucyk7CgkJCUwuVGlsZUxheWVyLnByb3RvdHlwZS5pbml0aWFsaXplLmNhbGwodGhpcywgcHJvdmlkZXIudXJsLCBsYXllck9wdHMpOwoJCX0KCX0pOwoKCS8qKgoJICogRGVmaW5pdGlvbiBvZiBwcm92aWRlcnMuCgkgKiBzZWUgaHR0cDovL2xlYWZsZXRqcy5jb20vcmVmZXJlbmNlLmh0bWwjdGlsZWxheWVyIGZvciBvcHRpb25zIGluIHRoZSBvcHRpb25zIG1hcC4KCSAqLwoKCUwuVGlsZUxheWVyLlByb3ZpZGVyLnByb3ZpZGVycyA9IHsKCQlPcGVuU3RyZWV0TWFwOiB7CgkJCXVybDogJy8ve3N9LnRpbGUub3BlbnN0cmVldG1hcC5vcmcve3p9L3t4fS97eX0ucG5nJywKCQkJb3B0aW9uczogewoJCQkJYXR0cmlidXRpb246CgkJCQkJJyZjb3B5OyA8YSBocmVmPSJodHRwOi8vd3d3Lm9wZW5zdHJlZXRtYXAub3JnL2NvcHlyaWdodCI+T3BlblN0cmVldE1hcDwvYT4nCgkJCX0sCgkJCXZhcmlhbnRzOiB7CgkJCQlNYXBuaWs6IHt9LAoJCQkJQmxhY2tBbmRXaGl0ZTogewoJCQkJCXVybDogJ2h0dHA6Ly97c30udGlsZXMud21mbGFicy5vcmcvYnctbWFwbmlrL3t6fS97eH0ve3l9LnBuZycKCQkJCX0sCgkJCQlERTogewoJCQkJCXVybDogJ2h0dHA6Ly97c30udGlsZS5vcGVuc3RyZWV0bWFwLmRlL3RpbGVzL29zbWRlL3t6fS97eH0ve3l9LnBuZycKCQkJCX0sCgkJCQlIT1Q6IHsKCQkJCQl1cmw6ICdodHRwOi8ve3N9LnRpbGUub3BlbnN0cmVldG1hcC5mci9ob3Qve3p9L3t4fS97eX0ucG5nJywKCQkJCQlvcHRpb25zOiB7CgkJCQkJCWF0dHJpYnV0aW9uOiAne2F0dHJpYnV0aW9uLk9wZW5TdHJlZXRNYXB9LCBUaWxlcyBjb3VydGVzeSBvZiA8YSBocmVmPSJodHRwOi8vaG90Lm9wZW5zdHJlZXRtYXAub3JnLyIgdGFyZ2V0PSJfYmxhbmsiPkh1bWFuaXRhcmlhbiBPcGVuU3RyZWV0TWFwIFRlYW08L2E+JwoJCQkJCX0KCQkJCX0KCQkJfQoJCX0sCgkJT3BlblNlYU1hcDogewoJCQl1cmw6ICdodHRwOi8vdGlsZXMub3BlbnNlYW1hcC5vcmcvc2VhbWFyay97en0ve3h9L3t5fS5wbmcnLAoJCQlvcHRpb25zOiB7CgkJCQlhdHRyaWJ1dGlvbjogJ01hcCBkYXRhOiAmY29weTsgPGEgaHJlZj0iaHR0cDovL3d3dy5vcGVuc2VhbWFwLm9yZyI+T3BlblNlYU1hcDwvYT4gY29udHJpYnV0b3JzJwoJCQl9CgkJfSwKCQlPcGVuVG9wb01hcDogewoJCQl1cmw6ICcvL3tzfS50aWxlLm9wZW50b3BvbWFwLm9yZy97en0ve3h9L3t5fS5wbmcnLAoJCQlvcHRpb25zOiB7CgkJCQltYXhab29tOiAxNiwKCQkJCWF0dHJpYnV0aW9uOiAnTWFwIGRhdGE6IHthdHRyaWJ1dGlvbi5PcGVuU3RyZWV0TWFwfSwgPGEgaHJlZj0iaHR0cDovL3ZpZXdmaW5kZXJwYW5vcmFtYXMub3JnIj5TUlRNPC9hPiB8IE1hcCBzdHlsZTogJmNvcHk7IDxhIGhyZWY9Imh0dHBzOi8vb3BlbnRvcG9tYXAub3JnIj5PcGVuVG9wb01hcDwvYT4gKDxhIGhyZWY9Imh0dHBzOi8vY3JlYXRpdmVjb21tb25zLm9yZy9saWNlbnNlcy9ieS1zYS8zLjAvIj5DQy1CWS1TQTwvYT4pJwoJCQl9CgkJfSwKCQlUaHVuZGVyZm9yZXN0OiB7CgkJCXVybDogJy8ve3N9LnRpbGUudGh1bmRlcmZvcmVzdC5jb20ve3ZhcmlhbnR9L3t6fS97eH0ve3l9LnBuZycsCgkJCW9wdGlvbnM6IHsKCQkJCWF0dHJpYnV0aW9uOgoJCQkJCScmY29weTsgPGEgaHJlZj0iaHR0cDovL3d3dy5vcGVuY3ljbGVtYXAub3JnIj5PcGVuQ3ljbGVNYXA8L2E+LCB7YXR0cmlidXRpb24uT3BlblN0cmVldE1hcH0nLAoJCQkJdmFyaWFudDogJ2N5Y2xlJwoJCQl9LAoJCQl2YXJpYW50czogewoJCQkJT3BlbkN5Y2xlTWFwOiAnY3ljbGUnLAoJCQkJVHJhbnNwb3J0OiAndHJhbnNwb3J0JywKCQkJCVRyYW5zcG9ydERhcms6ICd0cmFuc3BvcnQtZGFyaycsCgkJCQlMYW5kc2NhcGU6ICdsYW5kc2NhcGUnLAoJCQkJT3V0ZG9vcnM6ICdvdXRkb29ycycKCQkJfQoJCX0sCgkJT3Blbk1hcFN1cmZlcjogewoJCQl1cmw6ICdodHRwOi8vb3Blbm1hcHN1cmZlci51bmktaGQuZGUvdGlsZXMve3ZhcmlhbnR9L3g9e3h9Jnk9e3l9Jno9e3p9JywKCQkJb3B0aW9uczogewoJCQkJbWluWm9vbTogMCwKCQkJCW1heFpvb206IDIwLAoJCQkJdmFyaWFudDogJ3JvYWRzJywKCQkJCWF0dHJpYnV0aW9uOiAnSW1hZ2VyeSBmcm9tIDxhIGhyZWY9Imh0dHA6Ly9naXNjaWVuY2UudW5pLWhkLmRlLyI+R0lTY2llbmNlIFJlc2VhcmNoIEdyb3VwIEAgVW5pdmVyc2l0eSBvZiBIZWlkZWxiZXJnPC9hPiAmbWRhc2g7IE1hcCBkYXRhIHthdHRyaWJ1dGlvbi5PcGVuU3RyZWV0TWFwfScKCQkJfSwKCQkJdmFyaWFudHM6IHsKCQkJCVJvYWRzOiAncm9hZHMnLAoJCQkJQWRtaW5Cb3VuZHM6IHsKCQkJCQlvcHRpb25zOiB7CgkJCQkJCXZhcmlhbnQ6ICdhZG1pbmInLAoJCQkJCQltYXhab29tOiAxOQoJCQkJCX0KCQkJCX0sCgkJCQlHcmF5c2NhbGU6IHsKCQkJCQlvcHRpb25zOiB7CgkJCQkJCXZhcmlhbnQ6ICdyb2Fkc2cnLAoJCQkJCQltYXhab29tOiAxOQoJCQkJCX0KCQkJCX0KCQkJfQoJCX0sCgkJSHlkZGE6IHsKCQkJdXJsOiAnaHR0cDovL3tzfS50aWxlLm9wZW5zdHJlZXRtYXAuc2UvaHlkZGEve3ZhcmlhbnR9L3t6fS97eH0ve3l9LnBuZycsCgkJCW9wdGlvbnM6IHsKCQkJCW1pblpvb206IDAsCgkJCQltYXhab29tOiAxOCwKCQkJCXZhcmlhbnQ6ICdmdWxsJywKCQkJCWF0dHJpYnV0aW9uOiAnVGlsZXMgY291cnRlc3kgb2YgPGEgaHJlZj0iaHR0cDovL29wZW5zdHJlZXRtYXAuc2UvIiB0YXJnZXQ9Il9ibGFuayI+T3BlblN0cmVldE1hcCBTd2VkZW48L2E+ICZtZGFzaDsgTWFwIGRhdGEge2F0dHJpYnV0aW9uLk9wZW5TdHJlZXRNYXB9JwoJCQl9LAoJCQl2YXJpYW50czogewoJCQkJRnVsbDogJ2Z1bGwnLAoJCQkJQmFzZTogJ2Jhc2UnLAoJCQkJUm9hZHNBbmRMYWJlbHM6ICdyb2Fkc19hbmRfbGFiZWxzJwoJCQl9CgkJfSwKCQlNYXBRdWVzdE9wZW46IHsKCQkJLyogTWFwcXVlc3QgZG9lcyBzdXBwb3J0IGh0dHBzLCBidXQgd2l0aCBhIGRpZmZlcmVudCBzdWJkb21haW46CgkJCSAqIGh0dHBzOi8vb3RpbGV7c30tcy5tcWNkbi5jb20vdGlsZXMvMS4wLjAve3R5cGV9L3t6fS97eH0ve3l9LntleHR9CgkJCSAqIHdoaWNoIG1ha2VzIGltcGxlbWVudGluZyBwcm90b2NvbCByZWxhdGl2aXR5IGltcG9zc2libGUuCgkJCSAqLwoJCQl1cmw6ICdodHRwOi8vb3RpbGV7c30ubXFjZG4uY29tL3RpbGVzLzEuMC4wL3t0eXBlfS97en0ve3h9L3t5fS57ZXh0fScsCgkJCW9wdGlvbnM6IHsKCQkJCXR5cGU6ICdtYXAnLAoJCQkJZXh0OiAnanBnJywKCQkJCWF0dHJpYnV0aW9uOgoJCQkJCSdUaWxlcyBDb3VydGVzeSBvZiA8YSBocmVmPSJodHRwOi8vd3d3Lm1hcHF1ZXN0LmNvbS8iPk1hcFF1ZXN0PC9hPiAmbWRhc2g7ICcgKwoJCQkJCSdNYXAgZGF0YSB7YXR0cmlidXRpb24uT3BlblN0cmVldE1hcH0nLAoJCQkJc3ViZG9tYWluczogJzEyMzQnCgkJCX0sCgkJCXZhcmlhbnRzOiB7CgkJCQlPU006IHt9LAoJCQkJQWVyaWFsOiB7CgkJCQkJb3B0aW9uczogewoJCQkJCQl0eXBlOiAnc2F0JywKCQkJCQkJYXR0cmlidXRpb246CgkJCQkJCQknVGlsZXMgQ291cnRlc3kgb2YgPGEgaHJlZj0iaHR0cDovL3d3dy5tYXBxdWVzdC5jb20vIj5NYXBRdWVzdDwvYT4gJm1kYXNoOyAnICsKCQkJCQkJCSdQb3J0aW9ucyBDb3VydGVzeSBOQVNBL0pQTC1DYWx0ZWNoIGFuZCBVLlMuIERlcGFydC4gb2YgQWdyaWN1bHR1cmUsIEZhcm0gU2VydmljZSBBZ2VuY3knCgkJCQkJfQoJCQkJfSwKCQkJCUh5YnJpZE92ZXJsYXk6IHsKCQkJCQlvcHRpb25zOiB7CgkJCQkJCXR5cGU6ICdoeWInLAoJCQkJCQlleHQ6ICdwbmcnLAoJCQkJCQlvcGFjaXR5OiAwLjkKCQkJCQl9CgkJCQl9CgkJCX0KCQl9LAoJCU1hcEJveDogewoJCQl1cmw6IGZ1bmN0aW9uIChpZCkgewoJCQkJcmV0dXJuICcvL3tzfS50aWxlcy5tYXBib3guY29tL3YzLycgKyBpZCArICcve3p9L3t4fS97eX0ucG5nJzsKCQkJfSwKCQkJb3B0aW9uczogewoJCQkJYXR0cmlidXRpb246CgkJCQkJJ0ltYWdlcnkgZnJvbSA8YSBocmVmPSJodHRwOi8vbWFwYm94LmNvbS9hYm91dC9tYXBzLyI+TWFwQm94PC9hPiAmbWRhc2g7ICcgKwoJCQkJCSdNYXAgZGF0YSB7YXR0cmlidXRpb24uT3BlblN0cmVldE1hcH0nLAoJCQkJc3ViZG9tYWluczogJ2FiY2QnCgkJCX0KCQl9LAoJCVN0YW1lbjogewoJCQl1cmw6ICdodHRwOi8ve3N9LnRpbGUuc3RhbWVuLmNvbS97dmFyaWFudH0ve3p9L3t4fS97eX0ue2V4dH0nLAoJCQlvcHRpb25zOiB7CgkJCQlhdHRyaWJ1dGlvbjoKCQkJCQknTWFwIHRpbGVzIGJ5IDxhIGhyZWY9Imh0dHA6Ly9zdGFtZW4uY29tIj5TdGFtZW4gRGVzaWduPC9hPiwgJyArCgkJCQkJJzxhIGhyZWY9Imh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL2xpY2Vuc2VzL2J5LzMuMCI+Q0MgQlkgMy4wPC9hPiAmbWRhc2g7ICcgKwoJCQkJCSdNYXAgZGF0YSB7YXR0cmlidXRpb24uT3BlblN0cmVldE1hcH0nLAoJCQkJc3ViZG9tYWluczogJ2FiY2QnLAoJCQkJbWluWm9vbTogMCwKCQkJCW1heFpvb206IDIwLAoJCQkJdmFyaWFudDogJ3RvbmVyJywKCQkJCWV4dDogJ3BuZycKCQkJfSwKCQkJdmFyaWFudHM6IHsKCQkJCVRvbmVyOiAndG9uZXInLAoJCQkJVG9uZXJCYWNrZ3JvdW5kOiAndG9uZXItYmFja2dyb3VuZCcsCgkJCQlUb25lckh5YnJpZDogJ3RvbmVyLWh5YnJpZCcsCgkJCQlUb25lckxpbmVzOiAndG9uZXItbGluZXMnLAoJCQkJVG9uZXJMYWJlbHM6ICd0b25lci1sYWJlbHMnLAoJCQkJVG9uZXJMaXRlOiAndG9uZXItbGl0ZScsCgkJCQlXYXRlcmNvbG9yOiB7CgkJCQkJb3B0aW9uczogewoJCQkJCQl2YXJpYW50OiAnd2F0ZXJjb2xvcicsCgkJCQkJCW1pblpvb206IDEsCgkJCQkJCW1heFpvb206IDE2CgkJCQkJfQoJCQkJfSwKCQkJCVRlcnJhaW46IHsKCQkJCQlvcHRpb25zOiB7CgkJCQkJCXZhcmlhbnQ6ICd0ZXJyYWluJywKCQkJCQkJbWluWm9vbTogNCwKCQkJCQkJbWF4Wm9vbTogMTgsCgkJCQkJCWJvdW5kczogW1syMiwgLTEzMl0sIFs3MCwgLTU2XV0KCQkJCQl9CgkJCQl9LAoJCQkJVGVycmFpbkJhY2tncm91bmQ6IHsKCQkJCQlvcHRpb25zOiB7CgkJCQkJCXZhcmlhbnQ6ICd0ZXJyYWluLWJhY2tncm91bmQnLAoJCQkJCQltaW5ab29tOiA0LAoJCQkJCQltYXhab29tOiAxOCwKCQkJCQkJYm91bmRzOiBbWzIyLCAtMTMyXSwgWzcwLCAtNTZdXQoJCQkJCX0KCQkJCX0sCgkJCQlUb3BPU01SZWxpZWY6IHsKCQkJCQlvcHRpb25zOiB7CgkJCQkJCXZhcmlhbnQ6ICd0b3Bvc20tY29sb3ItcmVsaWVmJywKCQkJCQkJZXh0OiAnanBnJywKCQkJCQkJYm91bmRzOiBbWzIyLCAtMTMyXSwgWzUxLCAtNTZdXQoJCQkJCX0KCQkJCX0sCgkJCQlUb3BPU01GZWF0dXJlczogewoJCQkJCW9wdGlvbnM6IHsKCQkJCQkJdmFyaWFudDogJ3RvcG9zbS1mZWF0dXJlcycsCgkJCQkJCWJvdW5kczogW1syMiwgLTEzMl0sIFs1MSwgLTU2XV0sCgkJCQkJCW9wYWNpdHk6IDAuOQoJCQkJCX0KCQkJCX0KCQkJfQoJCX0sCgkJRXNyaTogewoJCQl1cmw6ICcvL3NlcnZlci5hcmNnaXNvbmxpbmUuY29tL0FyY0dJUy9yZXN0L3NlcnZpY2VzL3t2YXJpYW50fS9NYXBTZXJ2ZXIvdGlsZS97en0ve3l9L3t4fScsCgkJCW9wdGlvbnM6IHsKCQkJCXZhcmlhbnQ6ICdXb3JsZF9TdHJlZXRfTWFwJywKCQkJCWF0dHJpYnV0aW9uOiAnVGlsZXMgJmNvcHk7IEVzcmknCgkJCX0sCgkJCXZhcmlhbnRzOiB7CgkJCQlXb3JsZFN0cmVldE1hcDogewoJCQkJCW9wdGlvbnM6IHsKCQkJCQkJYXR0cmlidXRpb246CgkJCQkJCQkne2F0dHJpYnV0aW9uLkVzcml9ICZtZGFzaDsgJyArCgkJCQkJCQknU291cmNlOiBFc3JpLCBEZUxvcm1lLCBOQVZURVEsIFVTR1MsIEludGVybWFwLCBpUEMsIE5SQ0FOLCBFc3JpIEphcGFuLCBNRVRJLCBFc3JpIENoaW5hIChIb25nIEtvbmcpLCBFc3JpIChUaGFpbGFuZCksIFRvbVRvbSwgMjAxMicKCQkJCQl9CgkJCQl9LAoJCQkJRGVMb3JtZTogewoJCQkJCW9wdGlvbnM6IHsKCQkJCQkJdmFyaWFudDogJ1NwZWNpYWx0eS9EZUxvcm1lX1dvcmxkX0Jhc2VfTWFwJywKCQkJCQkJbWluWm9vbTogMSwKCQkJCQkJbWF4Wm9vbTogMTEsCgkJCQkJCWF0dHJpYnV0aW9uOiAne2F0dHJpYnV0aW9uLkVzcml9ICZtZGFzaDsgQ29weXJpZ2h0OiAmY29weTsyMDEyIERlTG9ybWUnCgkJCQkJfQoJCQkJfSwKCQkJCVdvcmxkVG9wb01hcDogewoJCQkJCW9wdGlvbnM6IHsKCQkJCQkJdmFyaWFudDogJ1dvcmxkX1RvcG9fTWFwJywKCQkJCQkJYXR0cmlidXRpb246CgkJCQkJCQkne2F0dHJpYnV0aW9uLkVzcml9ICZtZGFzaDsgJyArCgkJCQkJCQknRXNyaSwgRGVMb3JtZSwgTkFWVEVRLCBUb21Ub20sIEludGVybWFwLCBpUEMsIFVTR1MsIEZBTywgTlBTLCBOUkNBTiwgR2VvQmFzZSwgS2FkYXN0ZXIgTkwsIE9yZG5hbmNlIFN1cnZleSwgRXNyaSBKYXBhbiwgTUVUSSwgRXNyaSBDaGluYSAoSG9uZyBLb25nKSwgYW5kIHRoZSBHSVMgVXNlciBDb21tdW5pdHknCgkJCQkJfQoJCQkJfSwKCQkJCVdvcmxkSW1hZ2VyeTogewoJCQkJCW9wdGlvbnM6IHsKCQkJCQkJdmFyaWFudDogJ1dvcmxkX0ltYWdlcnknLAoJCQkJCQlhdHRyaWJ1dGlvbjoKCQkJCQkJCSd7YXR0cmlidXRpb24uRXNyaX0gJm1kYXNoOyAnICsKCQkJCQkJCSdTb3VyY2U6IEVzcmksIGktY3ViZWQsIFVTREEsIFVTR1MsIEFFWCwgR2VvRXllLCBHZXRtYXBwaW5nLCBBZXJvZ3JpZCwgSUdOLCBJR1AsIFVQUi1FR1AsIGFuZCB0aGUgR0lTIFVzZXIgQ29tbXVuaXR5JwoJCQkJCX0KCQkJCX0sCgkJCQlXb3JsZFRlcnJhaW46IHsKCQkJCQlvcHRpb25zOiB7CgkJCQkJCXZhcmlhbnQ6ICdXb3JsZF9UZXJyYWluX0Jhc2UnLAoJCQkJCQltYXhab29tOiAxMywKCQkJCQkJYXR0cmlidXRpb246CgkJCQkJCQkne2F0dHJpYnV0aW9uLkVzcml9ICZtZGFzaDsgJyArCgkJCQkJCQknU291cmNlOiBVU0dTLCBFc3JpLCBUQU5BLCBEZUxvcm1lLCBhbmQgTlBTJwoJCQkJCX0KCQkJCX0sCgkJCQlXb3JsZFNoYWRlZFJlbGllZjogewoJCQkJCW9wdGlvbnM6IHsKCQkJCQkJdmFyaWFudDogJ1dvcmxkX1NoYWRlZF9SZWxpZWYnLAoJCQkJCQltYXhab29tOiAxMywKCQkJCQkJYXR0cmlidXRpb246ICd7YXR0cmlidXRpb24uRXNyaX0gJm1kYXNoOyBTb3VyY2U6IEVzcmknCgkJCQkJfQoJCQkJfSwKCQkJCVdvcmxkUGh5c2ljYWw6IHsKCQkJCQlvcHRpb25zOiB7CgkJCQkJCXZhcmlhbnQ6ICdXb3JsZF9QaHlzaWNhbF9NYXAnLAoJCQkJCQltYXhab29tOiA4LAoJCQkJCQlhdHRyaWJ1dGlvbjogJ3thdHRyaWJ1dGlvbi5Fc3JpfSAmbWRhc2g7IFNvdXJjZTogVVMgTmF0aW9uYWwgUGFyayBTZXJ2aWNlJwoJCQkJCX0KCQkJCX0sCgkJCQlPY2VhbkJhc2VtYXA6IHsKCQkJCQlvcHRpb25zOiB7CgkJCQkJCXZhcmlhbnQ6ICdPY2Vhbl9CYXNlbWFwJywKCQkJCQkJbWF4Wm9vbTogMTMsCgkJCQkJCWF0dHJpYnV0aW9uOiAne2F0dHJpYnV0aW9uLkVzcml9ICZtZGFzaDsgU291cmNlczogR0VCQ08sIE5PQUEsIENIUywgT1NVLCBVTkgsIENTVU1CLCBOYXRpb25hbCBHZW9ncmFwaGljLCBEZUxvcm1lLCBOQVZURVEsIGFuZCBFc3JpJwoJCQkJCX0KCQkJCX0sCgkJCQlOYXRHZW9Xb3JsZE1hcDogewoJCQkJCW9wdGlvbnM6IHsKCQkJCQkJdmFyaWFudDogJ05hdEdlb19Xb3JsZF9NYXAnLAoJCQkJCQltYXhab29tOiAxNiwKCQkJCQkJYXR0cmlidXRpb246ICd7YXR0cmlidXRpb24uRXNyaX0gJm1kYXNoOyBOYXRpb25hbCBHZW9ncmFwaGljLCBFc3JpLCBEZUxvcm1lLCBOQVZURVEsIFVORVAtV0NNQywgVVNHUywgTkFTQSwgRVNBLCBNRVRJLCBOUkNBTiwgR0VCQ08sIE5PQUEsIGlQQycKCQkJCQl9CgkJCQl9LAoJCQkJV29ybGRHcmF5Q2FudmFzOiB7CgkJCQkJb3B0aW9uczogewoJCQkJCQl2YXJpYW50OiAnQ2FudmFzL1dvcmxkX0xpZ2h0X0dyYXlfQmFzZScsCgkJCQkJCW1heFpvb206IDE2LAoJCQkJCQlhdHRyaWJ1dGlvbjogJ3thdHRyaWJ1dGlvbi5Fc3JpfSAmbWRhc2g7IEVzcmksIERlTG9ybWUsIE5BVlRFUScKCQkJCQl9CgkJCQl9CgkJCX0KCQl9LAoJCU9wZW5XZWF0aGVyTWFwOiB7CgkJCXVybDogJ2h0dHA6Ly97c30udGlsZS5vcGVud2VhdGhlcm1hcC5vcmcvbWFwL3t2YXJpYW50fS97en0ve3h9L3t5fS5wbmcnLAoJCQlvcHRpb25zOiB7CgkJCQlhdHRyaWJ1dGlvbjogJ01hcCBkYXRhICZjb3B5OyA8YSBocmVmPSJodHRwOi8vb3BlbndlYXRoZXJtYXAub3JnIj5PcGVuV2VhdGhlck1hcDwvYT4nLAoJCQkJb3BhY2l0eTogMC41CgkJCX0sCgkJCXZhcmlhbnRzOiB7CgkJCQlDbG91ZHM6ICdjbG91ZHMnLAoJCQkJQ2xvdWRzQ2xhc3NpYzogJ2Nsb3Vkc19jbHMnLAoJCQkJUHJlY2lwaXRhdGlvbjogJ3ByZWNpcGl0YXRpb24nLAoJCQkJUHJlY2lwaXRhdGlvbkNsYXNzaWM6ICdwcmVjaXBpdGF0aW9uX2NscycsCgkJCQlSYWluOiAncmFpbicsCgkJCQlSYWluQ2xhc3NpYzogJ3JhaW5fY2xzJywKCQkJCVByZXNzdXJlOiAncHJlc3N1cmUnLAoJCQkJUHJlc3N1cmVDb250b3VyOiAncHJlc3N1cmVfY250cicsCgkJCQlXaW5kOiAnd2luZCcsCgkJCQlUZW1wZXJhdHVyZTogJ3RlbXAnLAoJCQkJU25vdzogJ3Nub3cnCgkJCX0KCQl9LAoJCUhFUkU6IHsKCQkJLyoKCQkJICogSEVSRSBtYXBzLCBmb3JtZXJseSBOb2tpYSBtYXBzLgoJCQkgKiBUaGVzZSBiYXNlbWFwcyBhcmUgZnJlZSwgYnV0IHlvdSBuZWVkIGFuIEFQSSBrZXkuIFBsZWFzZSBzaWduIHVwIGF0CgkJCSAqIGh0dHA6Ly9kZXZlbG9wZXIuaGVyZS5jb20vZ2V0dGluZy1zdGFydGVkCgkJCSAqCgkJCSAqIE5vdGUgdGhhdCB0aGUgYmFzZSB1cmxzIGNvbnRhaW4gJy5jaXQnIHdoaWNocyBpcyBIRVJFJ3MKCQkJICogJ0N1c3RvbWVyIEludGVncmF0aW9uIFRlc3RpbmcnIGVudmlyb25tZW50LiBQbGVhc2UgcmVtb3ZlIGZvciBwcm9kdWN0aW9uCgkJCSAqIGVudmlyaW9ubWVudHMuCgkJCSAqLwoJCQl1cmw6CgkJCQknLy97c30ue2Jhc2V9Lm1hcHMuY2l0LmFwaS5oZXJlLmNvbS9tYXB0aWxlLzIuMS8nICsKCQkJCSdtYXB0aWxlL3ttYXBJRH0ve3ZhcmlhbnR9L3t6fS97eH0ve3l9LzI1Ni9wbmc4PycgKwoJCQkJJ2FwcF9pZD17YXBwX2lkfSZhcHBfY29kZT17YXBwX2NvZGV9JywKCQkJb3B0aW9uczogewoJCQkJYXR0cmlidXRpb246CgkJCQkJJ01hcCAmY29weTsgMTk4Ny0yMDE0IDxhIGhyZWY9Imh0dHA6Ly9kZXZlbG9wZXIuaGVyZS5jb20iPkhFUkU8L2E+JywKCQkJCXN1YmRvbWFpbnM6ICcxMjM0JywKCQkJCW1hcElEOiAnbmV3ZXN0JywKCQkJCSdhcHBfaWQnOiAnPGluc2VydCB5b3VyIGFwcF9pZCBoZXJlPicsCgkJCQknYXBwX2NvZGUnOiAnPGluc2VydCB5b3VyIGFwcF9jb2RlIGhlcmU+JywKCQkJCWJhc2U6ICdiYXNlJywKCQkJCXZhcmlhbnQ6ICdub3JtYWwuZGF5JywKCQkJCW1pblpvb206IDAsCgkJCQltYXhab29tOiAyMAoJCQl9LAoJCQl2YXJpYW50czogewoJCQkJbm9ybWFsRGF5OiAnbm9ybWFsLmRheScsCgkJCQlub3JtYWxEYXlDdXN0b206ICdub3JtYWwuZGF5LmN1c3RvbScsCgkJCQlub3JtYWxEYXlHcmV5OiAnbm9ybWFsLmRheS5ncmV5JywKCQkJCW5vcm1hbERheU1vYmlsZTogJ25vcm1hbC5kYXkubW9iaWxlJywKCQkJCW5vcm1hbERheUdyZXlNb2JpbGU6ICdub3JtYWwuZGF5LmdyZXkubW9iaWxlJywKCQkJCW5vcm1hbERheVRyYW5zaXQ6ICdub3JtYWwuZGF5LnRyYW5zaXQnLAoJCQkJbm9ybWFsRGF5VHJhbnNpdE1vYmlsZTogJ25vcm1hbC5kYXkudHJhbnNpdC5tb2JpbGUnLAoJCQkJbm9ybWFsTmlnaHQ6ICdub3JtYWwubmlnaHQnLAoJCQkJbm9ybWFsTmlnaHRNb2JpbGU6ICdub3JtYWwubmlnaHQubW9iaWxlJywKCQkJCW5vcm1hbE5pZ2h0R3JleTogJ25vcm1hbC5uaWdodC5ncmV5JywKCQkJCW5vcm1hbE5pZ2h0R3JleU1vYmlsZTogJ25vcm1hbC5uaWdodC5ncmV5Lm1vYmlsZScsCgoJCQkJY2FybmF2RGF5R3JleTogJ2Nhcm5hdi5kYXkuZ3JleScsCgkJCQloeWJyaWREYXk6IHsKCQkJCQlvcHRpb25zOiB7CgkJCQkJCWJhc2U6ICdhZXJpYWwnLAoJCQkJCQl2YXJpYW50OiAnaHlicmlkLmRheScKCQkJCQl9CgkJCQl9LAoJCQkJaHlicmlkRGF5TW9iaWxlOiB7CgkJCQkJb3B0aW9uczogewoJCQkJCQliYXNlOiAnYWVyaWFsJywKCQkJCQkJdmFyaWFudDogJ2h5YnJpZC5kYXkubW9iaWxlJwoJCQkJCX0KCQkJCX0sCgkJCQlwZWRlc3RyaWFuRGF5OiAncGVkZXN0cmlhbi5kYXknLAoJCQkJcGVkZXN0cmlhbk5pZ2h0OiAncGVkZXN0cmlhbi5uaWdodCcsCgkJCQlzYXRlbGxpdGVEYXk6IHsKCQkJCQlvcHRpb25zOiB7CgkJCQkJCWJhc2U6ICdhZXJpYWwnLAoJCQkJCQl2YXJpYW50OiAnc2F0ZWxsaXRlLmRheScKCQkJCQl9CgkJCQl9LAoJCQkJdGVycmFpbkRheTogewoJCQkJCW9wdGlvbnM6IHsKCQkJCQkJYmFzZTogJ2FlcmlhbCcsCgkJCQkJCXZhcmlhbnQ6ICd0ZXJyYWluLmRheScKCQkJCQl9CgkJCQl9LAoJCQkJdGVycmFpbkRheU1vYmlsZTogewoJCQkJCW9wdGlvbnM6IHsKCQkJCQkJYmFzZTogJ2FlcmlhbCcsCgkJCQkJCXZhcmlhbnQ6ICd0ZXJyYWluLmRheS5tb2JpbGUnCgkJCQkJfQoJCQkJfQoJCQl9CgkJfSwKCQlBY2V0YXRlOiB7CgkJCXVybDogJ2h0dHA6Ly9he3N9LmFjZXRhdGUuZ2VvaXEuY29tL3RpbGVzL3t2YXJpYW50fS97en0ve3h9L3t5fS5wbmcnLAoJCQlvcHRpb25zOiB7CgkJCQlhdHRyaWJ1dGlvbjoKCQkJCQknJmNvcHk7MjAxMiBFc3JpICYgU3RhbWVuLCBEYXRhIGZyb20gT1NNIGFuZCBOYXR1cmFsIEVhcnRoJywKCQkJCXN1YmRvbWFpbnM6ICcwMTIzJywKCQkJCW1pblpvb206IDIsCgkJCQltYXhab29tOiAxOCwKCQkJCXZhcmlhbnQ6ICdhY2V0YXRlLWJhc2UnCgkJCX0sCgkJCXZhcmlhbnRzOiB7CgkJCQliYXNlbWFwOiAnYWNldGF0ZS1iYXNlJywKCQkJCXRlcnJhaW46ICd0ZXJyYWluJywKCQkJCWFsbDogJ2FjZXRhdGUtaGlsbHNoYWRpbmcnLAoJCQkJZm9yZWdyb3VuZDogJ2FjZXRhdGUtZmcnLAoJCQkJcm9hZHM6ICdhY2V0YXRlLXJvYWRzJywKCQkJCWxhYmVsczogJ2FjZXRhdGUtbGFiZWxzJywKCQkJCWhpbGxzaGFkaW5nOiAnaGlsbHNoYWRpbmcnCgkJCX0KCQl9LAoJCUZyZWVNYXBTSzogewoJCQl1cmw6ICdodHRwOi8ve3N9LmZyZWVtYXAuc2svVC97en0ve3h9L3t5fS5qcGVnJywKCQkJb3B0aW9uczogewoJCQkJbWluWm9vbTogOCwKCQkJCW1heFpvb206IDE2LAoJCQkJc3ViZG9tYWluczogWyd0MScsICd0MicsICd0MycsICd0NCddLAoJCQkJYXR0cmlidXRpb246CgkJCQkJJ3thdHRyaWJ1dGlvbi5PcGVuU3RyZWV0TWFwfSwgdml6dWFsaXphdGlvbiBDQy1CeS1TQSAyLjAgPGEgaHJlZj0iaHR0cDovL2ZyZWVtYXAuc2siPkZyZWVtYXAuc2s8L2E+JwoJCQl9CgkJfSwKCQlNdGJNYXA6IHsKCQkJdXJsOiAnaHR0cDovL3RpbGUubXRibWFwLmN6L210Ym1hcF90aWxlcy97en0ve3h9L3t5fS5wbmcnLAoJCQlvcHRpb25zOiB7CgkJCQlhdHRyaWJ1dGlvbjoKCQkJCQkne2F0dHJpYnV0aW9uLk9wZW5TdHJlZXRNYXB9ICZhbXA7IFVTR1MnCgkJCX0KCQl9LAoJCUNhcnRvREI6IHsKCQkJdXJsOiAnaHR0cDovL3tzfS5iYXNlbWFwcy5jYXJ0b2Nkbi5jb20ve3ZhcmlhbnR9L3t6fS97eH0ve3l9LnBuZycsCgkJCW9wdGlvbnM6IHsKCQkJCWF0dHJpYnV0aW9uOiAne2F0dHJpYnV0aW9uLk9wZW5TdHJlZXRNYXB9ICZjb3B5OyA8YSBocmVmPSJodHRwOi8vY2FydG9kYi5jb20vYXR0cmlidXRpb25zIj5DYXJ0b0RCPC9hPicsCgkJCQlzdWJkb21haW5zOiAnYWJjZCcsCgkJCQltaW5ab29tOiAwLAoJCQkJbWF4Wm9vbTogMTgsCgkJCQl2YXJpYW50OiAnbGlnaHRfYWxsJwoJCQl9LAoJCQl2YXJpYW50czogewoJCQkJUG9zaXRyb246ICdsaWdodF9hbGwnLAoJCQkJUG9zaXRyb25Ob0xhYmVsczogJ2xpZ2h0X25vbGFiZWxzJywKCQkJCURhcmtNYXR0ZXI6ICdkYXJrX2FsbCcsCgkJCQlEYXJrTWF0dGVyTm9MYWJlbHM6ICdkYXJrX25vbGFiZWxzJwoJCQl9CgkJfSwKCQlIaWtlQmlrZTogewoJCQl1cmw6ICdodHRwOi8ve3N9LnRpbGVzLndtZmxhYnMub3JnL2hpa2ViaWtlL3t6fS97eH0ve3l9LnBuZycsCgkJCW9wdGlvbnM6IHsKCQkJCWF0dHJpYnV0aW9uOiAne2F0dHJpYnV0aW9uLk9wZW5TdHJlZXRNYXB9JwoJCQl9CgkJfSwKCQlCYXNlbWFwQVQ6IHsKCQkJdXJsOiAnLy9tYXBze3N9LndpZW4uZ3YuYXQvYmFzZW1hcC97dmFyaWFudH0vbm9ybWFsL2dvb2dsZTM4NTcve3p9L3t5fS97eH0ue2Zvcm1hdH0nLAoJCQlvcHRpb25zOiB7CgkJCQlhdHRyaWJ1dGlvbjogJ0RhdGVucXVlbGxlOiA8YSBocmVmPSJ3d3cuYmFzZW1hcC5hdCI+YmFzZW1hcC5hdDwvYT4nLAoJCQkJc3ViZG9tYWluczogWycnLCAnMScsICcyJywgJzMnLCAnNCddLAoJCQkJYm91bmRzOiBbWzQ2LjM1ODc3MCwgOC43ODIzNzldLCBbNDkuMDM3ODcyLCAxNy4xODk1MzJdXQoJCQl9LAoJCQl2YXJpYW50czogewoJCQkJYmFzZW1hcDogewoJCQkJCW9wdGlvbnM6IHsKCQkJCQkJdmFyaWFudDogJ2dlb2xhbmRiYXNlbWFwJywKCQkJCQkJZm9ybWF0OiAnanBlZycKCQkJCQl9CgkJCQl9LAoJCQkJaGlnaGRwaTogewoJCQkJCW9wdGlvbnM6IHsKCQkJCQkJdmFyaWFudDogJ2JtYXBoaWRwaScsCgkJCQkJCWZvcm1hdDogJ2pwZWcnCgkJCQkJfQoJCQkJfSwKCQkJCWdyYXU6IHsKCQkJCQlvcHRpb25zOiB7CgkJCQkJCXZhcmlhbnQ6ICdibWFwZ3JhdScsCgkJCQkJCWZvcm1hdDogJ3BuZycKCQkJCQl9CgkJCQl9LAoJCQkJb3ZlcmxheTogewoJCQkJCW9wdGlvbnM6IHsKCQkJCQkJdmFyaWFudDogJ2JtYXBvdmVybGF5JywKCQkJCQkJZm9ybWF0OiAncG5nJwoJCQkJCX0KCQkJCX0sCgkJCQlvcnRob2ZvdG86IHsKCQkJCQlvcHRpb25zOiB7CgkJCQkJCXZhcmlhbnQ6ICdibWFwb3J0aG9mb3RvMzBjbScsCgkJCQkJCWZvcm1hdDogJ2pwZWcnCgkJCQkJfQoJCQkJfQoJCQl9CgkJfSwKCQlOQVNBR0lCUzogewoJCQl1cmw6ICcvL21hcDEudmlzLmVhcnRoZGF0YS5uYXNhLmdvdi93bXRzLXdlYm1lcmMve3ZhcmlhbnR9L2RlZmF1bHQve3RpbWV9L3t0aWxlbWF0cml4c2V0fXttYXhab29tfS97en0ve3l9L3t4fS57Zm9ybWF0fScsCgkJCW9wdGlvbnM6IHsKCQkJCWF0dHJpYnV0aW9uOgoJCQkJCSdJbWFnZXJ5IHByb3ZpZGVkIGJ5IHNlcnZpY2VzIGZyb20gdGhlIEdsb2JhbCBJbWFnZXJ5IEJyb3dzZSBTZXJ2aWNlcyAoR0lCUyksIG9wZXJhdGVkIGJ5IHRoZSBOQVNBL0dTRkMvRWFydGggU2NpZW5jZSBEYXRhIGFuZCBJbmZvcm1hdGlvbiBTeXN0ZW0gJyArCgkJCQkJJyg8YSBocmVmPSJodHRwczovL2VhcnRoZGF0YS5uYXNhLmdvdiI+RVNESVM8L2E+KSB3aXRoIGZ1bmRpbmcgcHJvdmlkZWQgYnkgTkFTQS9IUS4nLAoJCQkJYm91bmRzOiBbWy04NS4wNTExMjg3Nzc2LCAtMTc5Ljk5OTk5OTk3NV0sIFs4NS4wNTExMjg3Nzc2LCAxNzkuOTk5OTk5OTc1XV0sCgkJCQltaW5ab29tOiAxLAoJCQkJbWF4Wm9vbTogOSwKCQkJCWZvcm1hdDogJ2pwZycsCgkJCQl0aW1lOiAnJywKCQkJCXRpbGVtYXRyaXhzZXQ6ICdHb29nbGVNYXBzQ29tcGF0aWJsZV9MZXZlbCcKCQkJfSwKCQkJdmFyaWFudHM6IHsKCQkJCU1vZGlzVGVycmFUcnVlQ29sb3JDUjogJ01PRElTX1RlcnJhX0NvcnJlY3RlZFJlZmxlY3RhbmNlX1RydWVDb2xvcicsCgkJCQlNb2Rpc1RlcnJhQmFuZHMzNjdDUjogJ01PRElTX1RlcnJhX0NvcnJlY3RlZFJlZmxlY3RhbmNlX0JhbmRzMzY3JywKCQkJCVZpaXJzRWFydGhBdE5pZ2h0MjAxMjogewoJCQkJCW9wdGlvbnM6IHsKCQkJCQkJdmFyaWFudDogJ1ZJSVJTX0NpdHlMaWdodHNfMjAxMicsCgkJCQkJCW1heFpvb206IDgKCQkJCQl9CgkJCQl9LAoJCQkJTW9kaXNUZXJyYUxTVERheTogewoJCQkJCW9wdGlvbnM6IHsKCQkJCQkJdmFyaWFudDogJ01PRElTX1RlcnJhX0xhbmRfU3VyZmFjZV9UZW1wX0RheScsCgkJCQkJCWZvcm1hdDogJ3BuZycsCgkJCQkJCW1heFpvb206IDcsCgkJCQkJCW9wYWNpdHk6IDAuNzUKCQkJCQl9CgkJCQl9LAoJCQkJTW9kaXNUZXJyYVNub3dDb3ZlcjogewoJCQkJCW9wdGlvbnM6IHsKCQkJCQkJdmFyaWFudDogJ01PRElTX1RlcnJhX1Nub3dfQ292ZXInLAoJCQkJCQlmb3JtYXQ6ICdwbmcnLAoJCQkJCQltYXhab29tOiA4LAoJCQkJCQlvcGFjaXR5OiAwLjc1CgkJCQkJfQoJCQkJfSwKCQkJCU1vZGlzVGVycmFBT0Q6IHsKCQkJCQlvcHRpb25zOiB7CgkJCQkJCXZhcmlhbnQ6ICdNT0RJU19UZXJyYV9BZXJvc29sJywKCQkJCQkJZm9ybWF0OiAncG5nJywKCQkJCQkJbWF4Wm9vbTogNiwKCQkJCQkJb3BhY2l0eTogMC43NQoJCQkJCX0KCQkJCX0sCgkJCQlNb2Rpc1RlcnJhQ2hsb3JvcGh5bGw6IHsKCQkJCQlvcHRpb25zOiB7CgkJCQkJCXZhcmlhbnQ6ICdNT0RJU19UZXJyYV9DaGxvcm9waHlsbF9BJywKCQkJCQkJZm9ybWF0OiAncG5nJywKCQkJCQkJbWF4Wm9vbTogNywKCQkJCQkJb3BhY2l0eTogMC43NQoJCQkJCX0KCQkJCX0KCQkJfQoJCX0KCX07CgoJTC50aWxlTGF5ZXIucHJvdmlkZXIgPSBmdW5jdGlvbiAocHJvdmlkZXIsIG9wdGlvbnMpIHsKCQlyZXR1cm4gbmV3IEwuVGlsZUxheWVyLlByb3ZpZGVyKHByb3ZpZGVyLCBvcHRpb25zKTsKCX07Cn0oKSk7Cg=="></script>
<script src="data:application/x-javascript;base64,TGVhZmxldFdpZGdldC5tZXRob2RzLmFkZFByb3ZpZGVyVGlsZXMgPSBmdW5jdGlvbihwcm92aWRlciwgbGF5ZXJJZCwgZ3JvdXAsIG9wdGlvbnMpIHsKICB0aGlzLmxheWVyTWFuYWdlci5hZGRMYXllcihMLnRpbGVMYXllci5wcm92aWRlcihwcm92aWRlciwgb3B0aW9ucyksICJ0aWxlIiwgbGF5ZXJJZCwgZ3JvdXApOwp9Owo="></script>
<link href="data:text/css;charset=utf-8,%2Eleaflet%2Dcluster%2Danim%20%2Eleaflet%2Dmarker%2Dicon%2C%20%2Eleaflet%2Dcluster%2Danim%20%2Eleaflet%2Dmarker%2Dshadow%20%7B%0A%2Dwebkit%2Dtransition%3A%20%2Dwebkit%2Dtransform%200%2E3s%20ease%2Dout%2C%20opacity%200%2E3s%20ease%2Din%3B%0A%2Dmoz%2Dtransition%3A%20%2Dmoz%2Dtransform%200%2E3s%20ease%2Dout%2C%20opacity%200%2E3s%20ease%2Din%3B%0A%2Do%2Dtransition%3A%20%2Do%2Dtransform%200%2E3s%20ease%2Dout%2C%20opacity%200%2E3s%20ease%2Din%3B%0Atransition%3A%20transform%200%2E3s%20ease%2Dout%2C%20opacity%200%2E3s%20ease%2Din%3B%0A%7D%0A" rel="stylesheet" />
<link href="data:text/css;charset=utf-8,%2Emarker%2Dcluster%2Dsmall%20%7B%0Abackground%2Dcolor%3A%20rgba%28181%2C%20226%2C%20140%2C%200%2E6%29%3B%0A%7D%0A%2Emarker%2Dcluster%2Dsmall%20div%20%7B%0Abackground%2Dcolor%3A%20rgba%28110%2C%20204%2C%2057%2C%200%2E6%29%3B%0A%7D%0A%2Emarker%2Dcluster%2Dmedium%20%7B%0Abackground%2Dcolor%3A%20rgba%28241%2C%20211%2C%2087%2C%200%2E6%29%3B%0A%7D%0A%2Emarker%2Dcluster%2Dmedium%20div%20%7B%0Abackground%2Dcolor%3A%20rgba%28240%2C%20194%2C%2012%2C%200%2E6%29%3B%0A%7D%0A%2Emarker%2Dcluster%2Dlarge%20%7B%0Abackground%2Dcolor%3A%20rgba%28253%2C%20156%2C%20115%2C%200%2E6%29%3B%0A%7D%0A%2Emarker%2Dcluster%2Dlarge%20div%20%7B%0Abackground%2Dcolor%3A%20rgba%28241%2C%20128%2C%2023%2C%200%2E6%29%3B%0A%7D%0A%0A%2Eleaflet%2Doldie%20%2Emarker%2Dcluster%2Dsmall%20%7B%0Abackground%2Dcolor%3A%20rgb%28181%2C%20226%2C%20140%29%3B%0A%7D%0A%2Eleaflet%2Doldie%20%2Emarker%2Dcluster%2Dsmall%20div%20%7B%0Abackground%2Dcolor%3A%20rgb%28110%2C%20204%2C%2057%29%3B%0A%7D%0A%2Eleaflet%2Doldie%20%2Emarker%2Dcluster%2Dmedium%20%7B%0Abackground%2Dcolor%3A%20rgb%28241%2C%20211%2C%2087%29%3B%0A%7D%0A%2Eleaflet%2Doldie%20%2Emarker%2Dcluster%2Dmedium%20div%20%7B%0Abackground%2Dcolor%3A%20rgb%28240%2C%20194%2C%2012%29%3B%0A%7D%0A%2Eleaflet%2Doldie%20%2Emarker%2Dcluster%2Dlarge%20%7B%0Abackground%2Dcolor%3A%20rgb%28253%2C%20156%2C%20115%29%3B%0A%7D%0A%2Eleaflet%2Doldie%20%2Emarker%2Dcluster%2Dlarge%20div%20%7B%0Abackground%2Dcolor%3A%20rgb%28241%2C%20128%2C%2023%29%3B%0A%7D%0A%2Emarker%2Dcluster%20%7B%0Abackground%2Dclip%3A%20padding%2Dbox%3B%0Aborder%2Dradius%3A%2020px%3B%0A%7D%0A%2Emarker%2Dcluster%20div%20%7B%0Awidth%3A%2030px%3B%0Aheight%3A%2030px%3B%0Amargin%2Dleft%3A%205px%3B%0Amargin%2Dtop%3A%205px%3B%0Atext%2Dalign%3A%20center%3B%0Aborder%2Dradius%3A%2015px%3B%0Afont%3A%2012px%20%22Helvetica%20Neue%22%2C%20Arial%2C%20Helvetica%2C%20sans%2Dserif%3B%0A%7D%0A%2Emarker%2Dcluster%20span%20%7B%0Aline%2Dheight%3A%2030px%3B%0A%7D" rel="stylesheet" />
<script src="data:application/x-javascript;base64,LyoKIExlYWZsZXQubWFya2VyY2x1c3RlciwgUHJvdmlkZXMgQmVhdXRpZnVsIEFuaW1hdGVkIE1hcmtlciBDbHVzdGVyaW5nIGZ1bmN0aW9uYWxpdHkgZm9yIExlYWZsZXQsIGEgSlMgbGlicmFyeSBmb3IgaW50ZXJhY3RpdmUgbWFwcy4KIGh0dHBzOi8vZ2l0aHViLmNvbS9MZWFmbGV0L0xlYWZsZXQubWFya2VyY2x1c3RlcgogKGMpIDIwMTItMjAxMywgRGF2ZSBMZWF2ZXIsIHNtYXJ0cmFrCiovCiFmdW5jdGlvbih0LGUpe0wuTWFya2VyQ2x1c3Rlckdyb3VwPUwuRmVhdHVyZUdyb3VwLmV4dGVuZCh7b3B0aW9uczp7bWF4Q2x1c3RlclJhZGl1czo4MCxpY29uQ3JlYXRlRnVuY3Rpb246bnVsbCxzcGlkZXJmeU9uTWF4Wm9vbTohMCxzaG93Q292ZXJhZ2VPbkhvdmVyOiEwLHpvb21Ub0JvdW5kc09uQ2xpY2s6ITAsc2luZ2xlTWFya2VyTW9kZTohMSxkaXNhYmxlQ2x1c3RlcmluZ0F0Wm9vbTpudWxsLHJlbW92ZU91dHNpZGVWaXNpYmxlQm91bmRzOiEwLGFuaW1hdGVBZGRpbmdNYXJrZXJzOiExLHNwaWRlcmZ5RGlzdGFuY2VNdWx0aXBsaWVyOjEsY2h1bmtlZExvYWRpbmc6ITEsY2h1bmtJbnRlcnZhbDoyMDAsY2h1bmtEZWxheTo1MCxjaHVua1Byb2dyZXNzOm51bGwscG9seWdvbk9wdGlvbnM6e319LGluaXRpYWxpemU6ZnVuY3Rpb24odCl7TC5VdGlsLnNldE9wdGlvbnModGhpcyx0KSx0aGlzLm9wdGlvbnMuaWNvbkNyZWF0ZUZ1bmN0aW9ufHwodGhpcy5vcHRpb25zLmljb25DcmVhdGVGdW5jdGlvbj10aGlzLl9kZWZhdWx0SWNvbkNyZWF0ZUZ1bmN0aW9uKSx0aGlzLl9mZWF0dXJlR3JvdXA9TC5mZWF0dXJlR3JvdXAoKSx0aGlzLl9mZWF0dXJlR3JvdXAub24oTC5GZWF0dXJlR3JvdXAuRVZFTlRTLHRoaXMuX3Byb3BhZ2F0ZUV2ZW50LHRoaXMpLHRoaXMuX25vblBvaW50R3JvdXA9TC5mZWF0dXJlR3JvdXAoKSx0aGlzLl9ub25Qb2ludEdyb3VwLm9uKEwuRmVhdHVyZUdyb3VwLkVWRU5UUyx0aGlzLl9wcm9wYWdhdGVFdmVudCx0aGlzKSx0aGlzLl9pblpvb21BbmltYXRpb249MCx0aGlzLl9uZWVkc0NsdXN0ZXJpbmc9W10sdGhpcy5fbmVlZHNSZW1vdmluZz1bXSx0aGlzLl9jdXJyZW50U2hvd25Cb3VuZHM9bnVsbCx0aGlzLl9xdWV1ZT1bXX0sYWRkTGF5ZXI6ZnVuY3Rpb24odCl7aWYodCBpbnN0YW5jZW9mIEwuTGF5ZXJHcm91cCl7dmFyIGU9W107Zm9yKHZhciBpIGluIHQuX2xheWVycyllLnB1c2godC5fbGF5ZXJzW2ldKTtyZXR1cm4gdGhpcy5hZGRMYXllcnMoZSl9aWYoIXQuZ2V0TGF0TG5nKXJldHVybiB0aGlzLl9ub25Qb2ludEdyb3VwLmFkZExheWVyKHQpLHRoaXM7aWYoIXRoaXMuX21hcClyZXR1cm4gdGhpcy5fbmVlZHNDbHVzdGVyaW5nLnB1c2godCksdGhpcztpZih0aGlzLmhhc0xheWVyKHQpKXJldHVybiB0aGlzO3RoaXMuX3Vuc3BpZGVyZnkmJnRoaXMuX3Vuc3BpZGVyZnkoKSx0aGlzLl9hZGRMYXllcih0LHRoaXMuX21heFpvb20pO3ZhciBuPXQscz10aGlzLl9tYXAuZ2V0Wm9vbSgpO2lmKHQuX19wYXJlbnQpZm9yKDtuLl9fcGFyZW50Ll96b29tPj1zOyluPW4uX19wYXJlbnQ7cmV0dXJuIHRoaXMuX2N1cnJlbnRTaG93bkJvdW5kcy5jb250YWlucyhuLmdldExhdExuZygpKSYmKHRoaXMub3B0aW9ucy5hbmltYXRlQWRkaW5nTWFya2Vycz90aGlzLl9hbmltYXRpb25BZGRMYXllcih0LG4pOnRoaXMuX2FuaW1hdGlvbkFkZExheWVyTm9uQW5pbWF0ZWQodCxuKSksdGhpc30scmVtb3ZlTGF5ZXI6ZnVuY3Rpb24odCl7aWYodCBpbnN0YW5jZW9mIEwuTGF5ZXJHcm91cCl7dmFyIGU9W107Zm9yKHZhciBpIGluIHQuX2xheWVycyllLnB1c2godC5fbGF5ZXJzW2ldKTtyZXR1cm4gdGhpcy5yZW1vdmVMYXllcnMoZSl9cmV0dXJuIHQuZ2V0TGF0TG5nP3RoaXMuX21hcD90Ll9fcGFyZW50Pyh0aGlzLl91bnNwaWRlcmZ5JiYodGhpcy5fdW5zcGlkZXJmeSgpLHRoaXMuX3Vuc3BpZGVyZnlMYXllcih0KSksdGhpcy5fcmVtb3ZlTGF5ZXIodCwhMCksdGhpcy5fZmVhdHVyZUdyb3VwLmhhc0xheWVyKHQpJiYodGhpcy5fZmVhdHVyZUdyb3VwLnJlbW92ZUxheWVyKHQpLHQuc2V0T3BhY2l0eSYmdC5zZXRPcGFjaXR5KDEpKSx0aGlzKTp0aGlzOighdGhpcy5fYXJyYXlTcGxpY2UodGhpcy5fbmVlZHNDbHVzdGVyaW5nLHQpJiZ0aGlzLmhhc0xheWVyKHQpJiZ0aGlzLl9uZWVkc1JlbW92aW5nLnB1c2godCksdGhpcyk6KHRoaXMuX25vblBvaW50R3JvdXAucmVtb3ZlTGF5ZXIodCksdGhpcyl9LGFkZExheWVyczpmdW5jdGlvbih0KXt2YXIgZSxpLG4scyxyPXRoaXMuX2ZlYXR1cmVHcm91cCxvPXRoaXMuX25vblBvaW50R3JvdXAsYT10aGlzLm9wdGlvbnMuY2h1bmtlZExvYWRpbmcsaD10aGlzLm9wdGlvbnMuY2h1bmtJbnRlcnZhbCxfPXRoaXMub3B0aW9ucy5jaHVua1Byb2dyZXNzO2lmKHRoaXMuX21hcCl7dmFyIHU9MCxsPShuZXcgRGF0ZSkuZ2V0VGltZSgpLGQ9TC5iaW5kKGZ1bmN0aW9uKCl7Zm9yKHZhciBlPShuZXcgRGF0ZSkuZ2V0VGltZSgpO3U8dC5sZW5ndGg7dSsrKXtpZihhJiYwPT09dSUyMDApe3ZhciBpPShuZXcgRGF0ZSkuZ2V0VGltZSgpLWU7aWYoaT5oKWJyZWFrfWlmKHM9dFt1XSxzLmdldExhdExuZyl7aWYoIXRoaXMuaGFzTGF5ZXIocykmJih0aGlzLl9hZGRMYXllcihzLHRoaXMuX21heFpvb20pLHMuX19wYXJlbnQmJjI9PT1zLl9fcGFyZW50LmdldENoaWxkQ291bnQoKSkpe3ZhciBuPXMuX19wYXJlbnQuZ2V0QWxsQ2hpbGRNYXJrZXJzKCkscD1uWzBdPT09cz9uWzFdOm5bMF07ci5yZW1vdmVMYXllcihwKX19ZWxzZSBvLmFkZExheWVyKHMpfV8mJl8odSx0Lmxlbmd0aCwobmV3IERhdGUpLmdldFRpbWUoKS1sKSx1PT09dC5sZW5ndGg/KHRoaXMuX2ZlYXR1cmVHcm91cC5lYWNoTGF5ZXIoZnVuY3Rpb24odCl7dCBpbnN0YW5jZW9mIEwuTWFya2VyQ2x1c3RlciYmdC5faWNvbk5lZWRzVXBkYXRlJiZ0Ll91cGRhdGVJY29uKCl9KSx0aGlzLl90b3BDbHVzdGVyTGV2ZWwuX3JlY3Vyc2l2ZWx5QWRkQ2hpbGRyZW5Ub01hcChudWxsLHRoaXMuX3pvb20sdGhpcy5fY3VycmVudFNob3duQm91bmRzKSk6c2V0VGltZW91dChkLHRoaXMub3B0aW9ucy5jaHVua0RlbGF5KX0sdGhpcyk7ZCgpfWVsc2V7Zm9yKGU9W10saT0wLG49dC5sZW5ndGg7bj5pO2krKylzPXRbaV0scy5nZXRMYXRMbmc/dGhpcy5oYXNMYXllcihzKXx8ZS5wdXNoKHMpOm8uYWRkTGF5ZXIocyk7dGhpcy5fbmVlZHNDbHVzdGVyaW5nPXRoaXMuX25lZWRzQ2x1c3RlcmluZy5jb25jYXQoZSl9cmV0dXJuIHRoaXN9LHJlbW92ZUxheWVyczpmdW5jdGlvbih0KXt2YXIgZSxpLG4scz10aGlzLl9mZWF0dXJlR3JvdXAscj10aGlzLl9ub25Qb2ludEdyb3VwO2lmKCF0aGlzLl9tYXApe2ZvcihlPTAsaT10Lmxlbmd0aDtpPmU7ZSsrKW49dFtlXSx0aGlzLl9hcnJheVNwbGljZSh0aGlzLl9uZWVkc0NsdXN0ZXJpbmcsbiksci5yZW1vdmVMYXllcihuKTtyZXR1cm4gdGhpc31mb3IoZT0wLGk9dC5sZW5ndGg7aT5lO2UrKyluPXRbZV0sbi5fX3BhcmVudD8odGhpcy5fcmVtb3ZlTGF5ZXIobiwhMCwhMCkscy5oYXNMYXllcihuKSYmKHMucmVtb3ZlTGF5ZXIobiksbi5zZXRPcGFjaXR5JiZuLnNldE9wYWNpdHkoMSkpKTpyLnJlbW92ZUxheWVyKG4pO3JldHVybiB0aGlzLl90b3BDbHVzdGVyTGV2ZWwuX3JlY3Vyc2l2ZWx5QWRkQ2hpbGRyZW5Ub01hcChudWxsLHRoaXMuX3pvb20sdGhpcy5fY3VycmVudFNob3duQm91bmRzKSxzLmVhY2hMYXllcihmdW5jdGlvbih0KXt0IGluc3RhbmNlb2YgTC5NYXJrZXJDbHVzdGVyJiZ0Ll91cGRhdGVJY29uKCl9KSx0aGlzfSxjbGVhckxheWVyczpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9tYXB8fCh0aGlzLl9uZWVkc0NsdXN0ZXJpbmc9W10sZGVsZXRlIHRoaXMuX2dyaWRDbHVzdGVycyxkZWxldGUgdGhpcy5fZ3JpZFVuY2x1c3RlcmVkKSx0aGlzLl9ub2FuaW1hdGlvblVuc3BpZGVyZnkmJnRoaXMuX25vYW5pbWF0aW9uVW5zcGlkZXJmeSgpLHRoaXMuX2ZlYXR1cmVHcm91cC5jbGVhckxheWVycygpLHRoaXMuX25vblBvaW50R3JvdXAuY2xlYXJMYXllcnMoKSx0aGlzLmVhY2hMYXllcihmdW5jdGlvbih0KXtkZWxldGUgdC5fX3BhcmVudH0pLHRoaXMuX21hcCYmdGhpcy5fZ2VuZXJhdGVJbml0aWFsQ2x1c3RlcnMoKSx0aGlzfSxnZXRCb3VuZHM6ZnVuY3Rpb24oKXt2YXIgdD1uZXcgTC5MYXRMbmdCb3VuZHM7dGhpcy5fdG9wQ2x1c3RlckxldmVsJiZ0LmV4dGVuZCh0aGlzLl90b3BDbHVzdGVyTGV2ZWwuX2JvdW5kcyk7Zm9yKHZhciBlPXRoaXMuX25lZWRzQ2x1c3RlcmluZy5sZW5ndGgtMTtlPj0wO2UtLSl0LmV4dGVuZCh0aGlzLl9uZWVkc0NsdXN0ZXJpbmdbZV0uZ2V0TGF0TG5nKCkpO3JldHVybiB0LmV4dGVuZCh0aGlzLl9ub25Qb2ludEdyb3VwLmdldEJvdW5kcygpKSx0fSxlYWNoTGF5ZXI6ZnVuY3Rpb24odCxlKXt2YXIgaSxuPXRoaXMuX25lZWRzQ2x1c3RlcmluZy5zbGljZSgpO2Zvcih0aGlzLl90b3BDbHVzdGVyTGV2ZWwmJnRoaXMuX3RvcENsdXN0ZXJMZXZlbC5nZXRBbGxDaGlsZE1hcmtlcnMobiksaT1uLmxlbmd0aC0xO2k+PTA7aS0tKXQuY2FsbChlLG5baV0pO3RoaXMuX25vblBvaW50R3JvdXAuZWFjaExheWVyKHQsZSl9LGdldExheWVyczpmdW5jdGlvbigpe3ZhciB0PVtdO3JldHVybiB0aGlzLmVhY2hMYXllcihmdW5jdGlvbihlKXt0LnB1c2goZSl9KSx0fSxnZXRMYXllcjpmdW5jdGlvbih0KXt2YXIgZT1udWxsO3JldHVybiB0aGlzLmVhY2hMYXllcihmdW5jdGlvbihpKXtMLnN0YW1wKGkpPT09dCYmKGU9aSl9KSxlfSxoYXNMYXllcjpmdW5jdGlvbih0KXtpZighdClyZXR1cm4hMTt2YXIgZSxpPXRoaXMuX25lZWRzQ2x1c3RlcmluZztmb3IoZT1pLmxlbmd0aC0xO2U+PTA7ZS0tKWlmKGlbZV09PT10KXJldHVybiEwO2ZvcihpPXRoaXMuX25lZWRzUmVtb3ZpbmcsZT1pLmxlbmd0aC0xO2U+PTA7ZS0tKWlmKGlbZV09PT10KXJldHVybiExO3JldHVybiEoIXQuX19wYXJlbnR8fHQuX19wYXJlbnQuX2dyb3VwIT09dGhpcyl8fHRoaXMuX25vblBvaW50R3JvdXAuaGFzTGF5ZXIodCl9LHpvb21Ub1Nob3dMYXllcjpmdW5jdGlvbih0LGUpe3ZhciBpPWZ1bmN0aW9uKCl7aWYoKHQuX2ljb258fHQuX19wYXJlbnQuX2ljb24pJiYhdGhpcy5faW5ab29tQW5pbWF0aW9uKWlmKHRoaXMuX21hcC5vZmYoIm1vdmVlbmQiLGksdGhpcyksdGhpcy5vZmYoImFuaW1hdGlvbmVuZCIsaSx0aGlzKSx0Ll9pY29uKWUoKTtlbHNlIGlmKHQuX19wYXJlbnQuX2ljb24pe3ZhciBuPWZ1bmN0aW9uKCl7dGhpcy5vZmYoInNwaWRlcmZpZWQiLG4sdGhpcyksZSgpfTt0aGlzLm9uKCJzcGlkZXJmaWVkIixuLHRoaXMpLHQuX19wYXJlbnQuc3BpZGVyZnkoKX19O2lmKHQuX2ljb24mJnRoaXMuX21hcC5nZXRCb3VuZHMoKS5jb250YWlucyh0LmdldExhdExuZygpKSllKCk7ZWxzZSBpZih0Ll9fcGFyZW50Ll96b29tPHRoaXMuX21hcC5nZXRab29tKCkpdGhpcy5fbWFwLm9uKCJtb3ZlZW5kIixpLHRoaXMpLHRoaXMuX21hcC5wYW5Ubyh0LmdldExhdExuZygpKTtlbHNle3ZhciBuPWZ1bmN0aW9uKCl7dGhpcy5fbWFwLm9mZigibW92ZXN0YXJ0IixuLHRoaXMpLG49bnVsbH07dGhpcy5fbWFwLm9uKCJtb3Zlc3RhcnQiLG4sdGhpcyksdGhpcy5fbWFwLm9uKCJtb3ZlZW5kIixpLHRoaXMpLHRoaXMub24oImFuaW1hdGlvbmVuZCIsaSx0aGlzKSx0Ll9fcGFyZW50Lnpvb21Ub0JvdW5kcygpLG4mJmkuY2FsbCh0aGlzKX19LG9uQWRkOmZ1bmN0aW9uKHQpe3RoaXMuX21hcD10O3ZhciBlLGksbjtpZighaXNGaW5pdGUodGhpcy5fbWFwLmdldE1heFpvb20oKSkpdGhyb3ciTWFwIGhhcyBubyBtYXhab29tIHNwZWNpZmllZCI7Zm9yKHRoaXMuX2ZlYXR1cmVHcm91cC5vbkFkZCh0KSx0aGlzLl9ub25Qb2ludEdyb3VwLm9uQWRkKHQpLHRoaXMuX2dyaWRDbHVzdGVyc3x8dGhpcy5fZ2VuZXJhdGVJbml0aWFsQ2x1c3RlcnMoKSxlPTAsaT10aGlzLl9uZWVkc1JlbW92aW5nLmxlbmd0aDtpPmU7ZSsrKW49dGhpcy5fbmVlZHNSZW1vdmluZ1tlXSx0aGlzLl9yZW1vdmVMYXllcihuLCEwKTt0aGlzLl9uZWVkc1JlbW92aW5nPVtdLHRoaXMuX3pvb209dGhpcy5fbWFwLmdldFpvb20oKSx0aGlzLl9jdXJyZW50U2hvd25Cb3VuZHM9dGhpcy5fZ2V0RXhwYW5kZWRWaXNpYmxlQm91bmRzKCksdGhpcy5fbWFwLm9uKCJ6b29tZW5kIix0aGlzLl96b29tRW5kLHRoaXMpLHRoaXMuX21hcC5vbigibW92ZWVuZCIsdGhpcy5fbW92ZUVuZCx0aGlzKSx0aGlzLl9zcGlkZXJmaWVyT25BZGQmJnRoaXMuX3NwaWRlcmZpZXJPbkFkZCgpLHRoaXMuX2JpbmRFdmVudHMoKSxpPXRoaXMuX25lZWRzQ2x1c3RlcmluZyx0aGlzLl9uZWVkc0NsdXN0ZXJpbmc9W10sdGhpcy5hZGRMYXllcnMoaSl9LG9uUmVtb3ZlOmZ1bmN0aW9uKHQpe3Qub2ZmKCJ6b29tZW5kIix0aGlzLl96b29tRW5kLHRoaXMpLHQub2ZmKCJtb3ZlZW5kIix0aGlzLl9tb3ZlRW5kLHRoaXMpLHRoaXMuX3VuYmluZEV2ZW50cygpLHRoaXMuX21hcC5fbWFwUGFuZS5jbGFzc05hbWU9dGhpcy5fbWFwLl9tYXBQYW5lLmNsYXNzTmFtZS5yZXBsYWNlKCIgbGVhZmxldC1jbHVzdGVyLWFuaW0iLCIiKSx0aGlzLl9zcGlkZXJmaWVyT25SZW1vdmUmJnRoaXMuX3NwaWRlcmZpZXJPblJlbW92ZSgpLHRoaXMuX2hpZGVDb3ZlcmFnZSgpLHRoaXMuX2ZlYXR1cmVHcm91cC5vblJlbW92ZSh0KSx0aGlzLl9ub25Qb2ludEdyb3VwLm9uUmVtb3ZlKHQpLHRoaXMuX2ZlYXR1cmVHcm91cC5jbGVhckxheWVycygpLHRoaXMuX21hcD1udWxsfSxnZXRWaXNpYmxlUGFyZW50OmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10O2UmJiFlLl9pY29uOyllPWUuX19wYXJlbnQ7cmV0dXJuIGV8fG51bGx9LF9hcnJheVNwbGljZTpmdW5jdGlvbih0LGUpe2Zvcih2YXIgaT10Lmxlbmd0aC0xO2k+PTA7aS0tKWlmKHRbaV09PT1lKXJldHVybiB0LnNwbGljZShpLDEpLCEwfSxfcmVtb3ZlTGF5ZXI6ZnVuY3Rpb24odCxlLGkpe3ZhciBuPXRoaXMuX2dyaWRDbHVzdGVycyxzPXRoaXMuX2dyaWRVbmNsdXN0ZXJlZCxyPXRoaXMuX2ZlYXR1cmVHcm91cCxvPXRoaXMuX21hcDtpZihlKWZvcih2YXIgYT10aGlzLl9tYXhab29tO2E+PTAmJnNbYV0ucmVtb3ZlT2JqZWN0KHQsby5wcm9qZWN0KHQuZ2V0TGF0TG5nKCksYSkpO2EtLSk7dmFyIGgsXz10Ll9fcGFyZW50LHU9Xy5fbWFya2Vycztmb3IodGhpcy5fYXJyYXlTcGxpY2UodSx0KTtfJiYoXy5fY2hpbGRDb3VudC0tLCEoXy5fem9vbTwwKSk7KWUmJl8uX2NoaWxkQ291bnQ8PTE/KGg9Xy5fbWFya2Vyc1swXT09PXQ/Xy5fbWFya2Vyc1sxXTpfLl9tYXJrZXJzWzBdLG5bXy5fem9vbV0ucmVtb3ZlT2JqZWN0KF8sby5wcm9qZWN0KF8uX2NMYXRMbmcsXy5fem9vbSkpLHNbXy5fem9vbV0uYWRkT2JqZWN0KGgsby5wcm9qZWN0KGguZ2V0TGF0TG5nKCksXy5fem9vbSkpLHRoaXMuX2FycmF5U3BsaWNlKF8uX19wYXJlbnQuX2NoaWxkQ2x1c3RlcnMsXyksXy5fX3BhcmVudC5fbWFya2Vycy5wdXNoKGgpLGguX19wYXJlbnQ9Xy5fX3BhcmVudCxfLl9pY29uJiYoci5yZW1vdmVMYXllcihfKSxpfHxyLmFkZExheWVyKGgpKSk6KF8uX3JlY2FsY3VsYXRlQm91bmRzKCksaSYmXy5faWNvbnx8Xy5fdXBkYXRlSWNvbigpKSxfPV8uX19wYXJlbnQ7ZGVsZXRlIHQuX19wYXJlbnR9LF9pc09ySXNQYXJlbnQ6ZnVuY3Rpb24odCxlKXtmb3IoO2U7KXtpZih0PT09ZSlyZXR1cm4hMDtlPWUucGFyZW50Tm9kZX1yZXR1cm4hMX0sX3Byb3BhZ2F0ZUV2ZW50OmZ1bmN0aW9uKHQpe2lmKHQubGF5ZXIgaW5zdGFuY2VvZiBMLk1hcmtlckNsdXN0ZXIpe2lmKHQub3JpZ2luYWxFdmVudCYmdGhpcy5faXNPcklzUGFyZW50KHQubGF5ZXIuX2ljb24sdC5vcmlnaW5hbEV2ZW50LnJlbGF0ZWRUYXJnZXQpKXJldHVybjt0LnR5cGU9ImNsdXN0ZXIiK3QudHlwZX10aGlzLmZpcmUodC50eXBlLHQpfSxfZGVmYXVsdEljb25DcmVhdGVGdW5jdGlvbjpmdW5jdGlvbih0KXt2YXIgZT10LmdldENoaWxkQ291bnQoKSxpPSIgbWFya2VyLWNsdXN0ZXItIjtyZXR1cm4gaSs9MTA+ZT8ic21hbGwiOjEwMD5lPyJtZWRpdW0iOiJsYXJnZSIsbmV3IEwuRGl2SWNvbih7aHRtbDoiPGRpdj48c3Bhbj4iK2UrIjwvc3Bhbj48L2Rpdj4iLGNsYXNzTmFtZToibWFya2VyLWNsdXN0ZXIiK2ksaWNvblNpemU6bmV3IEwuUG9pbnQoNDAsNDApfSl9LF9iaW5kRXZlbnRzOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fbWFwLGU9dGhpcy5vcHRpb25zLnNwaWRlcmZ5T25NYXhab29tLGk9dGhpcy5vcHRpb25zLnNob3dDb3ZlcmFnZU9uSG92ZXIsbj10aGlzLm9wdGlvbnMuem9vbVRvQm91bmRzT25DbGljazsoZXx8bikmJnRoaXMub24oImNsdXN0ZXJjbGljayIsdGhpcy5fem9vbU9yU3BpZGVyZnksdGhpcyksaSYmKHRoaXMub24oImNsdXN0ZXJtb3VzZW92ZXIiLHRoaXMuX3Nob3dDb3ZlcmFnZSx0aGlzKSx0aGlzLm9uKCJjbHVzdGVybW91c2VvdXQiLHRoaXMuX2hpZGVDb3ZlcmFnZSx0aGlzKSx0Lm9uKCJ6b29tZW5kIix0aGlzLl9oaWRlQ292ZXJhZ2UsdGhpcykpfSxfem9vbU9yU3BpZGVyZnk6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fbWFwO2UuZ2V0TWF4Wm9vbSgpPT09ZS5nZXRab29tKCk/dGhpcy5vcHRpb25zLnNwaWRlcmZ5T25NYXhab29tJiZ0LmxheWVyLnNwaWRlcmZ5KCk6dGhpcy5vcHRpb25zLnpvb21Ub0JvdW5kc09uQ2xpY2smJnQubGF5ZXIuem9vbVRvQm91bmRzKCksdC5vcmlnaW5hbEV2ZW50JiYxMz09PXQub3JpZ2luYWxFdmVudC5rZXlDb2RlJiZlLl9jb250YWluZXIuZm9jdXMoKX0sX3Nob3dDb3ZlcmFnZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLl9tYXA7dGhpcy5faW5ab29tQW5pbWF0aW9ufHwodGhpcy5fc2hvd25Qb2x5Z29uJiZlLnJlbW92ZUxheWVyKHRoaXMuX3Nob3duUG9seWdvbiksdC5sYXllci5nZXRDaGlsZENvdW50KCk+MiYmdC5sYXllciE9PXRoaXMuX3NwaWRlcmZpZWQmJih0aGlzLl9zaG93blBvbHlnb249bmV3IEwuUG9seWdvbih0LmxheWVyLmdldENvbnZleEh1bGwoKSx0aGlzLm9wdGlvbnMucG9seWdvbk9wdGlvbnMpLGUuYWRkTGF5ZXIodGhpcy5fc2hvd25Qb2x5Z29uKSkpfSxfaGlkZUNvdmVyYWdlOmZ1bmN0aW9uKCl7dGhpcy5fc2hvd25Qb2x5Z29uJiYodGhpcy5fbWFwLnJlbW92ZUxheWVyKHRoaXMuX3Nob3duUG9seWdvbiksdGhpcy5fc2hvd25Qb2x5Z29uPW51bGwpfSxfdW5iaW5kRXZlbnRzOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5vcHRpb25zLnNwaWRlcmZ5T25NYXhab29tLGU9dGhpcy5vcHRpb25zLnNob3dDb3ZlcmFnZU9uSG92ZXIsaT10aGlzLm9wdGlvbnMuem9vbVRvQm91bmRzT25DbGljayxuPXRoaXMuX21hcDsodHx8aSkmJnRoaXMub2ZmKCJjbHVzdGVyY2xpY2siLHRoaXMuX3pvb21PclNwaWRlcmZ5LHRoaXMpLGUmJih0aGlzLm9mZigiY2x1c3Rlcm1vdXNlb3ZlciIsdGhpcy5fc2hvd0NvdmVyYWdlLHRoaXMpLHRoaXMub2ZmKCJjbHVzdGVybW91c2VvdXQiLHRoaXMuX2hpZGVDb3ZlcmFnZSx0aGlzKSxuLm9mZigiem9vbWVuZCIsdGhpcy5faGlkZUNvdmVyYWdlLHRoaXMpKX0sX3pvb21FbmQ6ZnVuY3Rpb24oKXt0aGlzLl9tYXAmJih0aGlzLl9tZXJnZVNwbGl0Q2x1c3RlcnMoKSx0aGlzLl96b29tPXRoaXMuX21hcC5fem9vbSx0aGlzLl9jdXJyZW50U2hvd25Cb3VuZHM9dGhpcy5fZ2V0RXhwYW5kZWRWaXNpYmxlQm91bmRzKCkpfSxfbW92ZUVuZDpmdW5jdGlvbigpe2lmKCF0aGlzLl9pblpvb21BbmltYXRpb24pe3ZhciB0PXRoaXMuX2dldEV4cGFuZGVkVmlzaWJsZUJvdW5kcygpO3RoaXMuX3RvcENsdXN0ZXJMZXZlbC5fcmVjdXJzaXZlbHlSZW1vdmVDaGlsZHJlbkZyb21NYXAodGhpcy5fY3VycmVudFNob3duQm91bmRzLHRoaXMuX3pvb20sdCksdGhpcy5fdG9wQ2x1c3RlckxldmVsLl9yZWN1cnNpdmVseUFkZENoaWxkcmVuVG9NYXAobnVsbCx0aGlzLl9tYXAuX3pvb20sdCksdGhpcy5fY3VycmVudFNob3duQm91bmRzPXR9fSxfZ2VuZXJhdGVJbml0aWFsQ2x1c3RlcnM6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9tYXAuZ2V0TWF4Wm9vbSgpLGU9dGhpcy5vcHRpb25zLm1heENsdXN0ZXJSYWRpdXMsaT1lOyJmdW5jdGlvbiIhPXR5cGVvZiBlJiYoaT1mdW5jdGlvbigpe3JldHVybiBlfSksdGhpcy5vcHRpb25zLmRpc2FibGVDbHVzdGVyaW5nQXRab29tJiYodD10aGlzLm9wdGlvbnMuZGlzYWJsZUNsdXN0ZXJpbmdBdFpvb20tMSksdGhpcy5fbWF4Wm9vbT10LHRoaXMuX2dyaWRDbHVzdGVycz17fSx0aGlzLl9ncmlkVW5jbHVzdGVyZWQ9e307Zm9yKHZhciBuPXQ7bj49MDtuLS0pdGhpcy5fZ3JpZENsdXN0ZXJzW25dPW5ldyBMLkRpc3RhbmNlR3JpZChpKG4pKSx0aGlzLl9ncmlkVW5jbHVzdGVyZWRbbl09bmV3IEwuRGlzdGFuY2VHcmlkKGkobikpO3RoaXMuX3RvcENsdXN0ZXJMZXZlbD1uZXcgTC5NYXJrZXJDbHVzdGVyKHRoaXMsLTEpfSxfYWRkTGF5ZXI6ZnVuY3Rpb24odCxlKXt2YXIgaSxuLHM9dGhpcy5fZ3JpZENsdXN0ZXJzLHI9dGhpcy5fZ3JpZFVuY2x1c3RlcmVkO2Zvcih0aGlzLm9wdGlvbnMuc2luZ2xlTWFya2VyTW9kZSYmKHQub3B0aW9ucy5pY29uPXRoaXMub3B0aW9ucy5pY29uQ3JlYXRlRnVuY3Rpb24oe2dldENoaWxkQ291bnQ6ZnVuY3Rpb24oKXtyZXR1cm4gMX0sZ2V0QWxsQ2hpbGRNYXJrZXJzOmZ1bmN0aW9uKCl7cmV0dXJuW3RdfX0pKTtlPj0wO2UtLSl7aT10aGlzLl9tYXAucHJvamVjdCh0LmdldExhdExuZygpLGUpO3ZhciBvPXNbZV0uZ2V0TmVhck9iamVjdChpKTtpZihvKXJldHVybiBvLl9hZGRDaGlsZCh0KSx0Ll9fcGFyZW50PW8sdm9pZCAwO2lmKG89cltlXS5nZXROZWFyT2JqZWN0KGkpKXt2YXIgYT1vLl9fcGFyZW50O2EmJnRoaXMuX3JlbW92ZUxheWVyKG8sITEpO3ZhciBoPW5ldyBMLk1hcmtlckNsdXN0ZXIodGhpcyxlLG8sdCk7c1tlXS5hZGRPYmplY3QoaCx0aGlzLl9tYXAucHJvamVjdChoLl9jTGF0TG5nLGUpKSxvLl9fcGFyZW50PWgsdC5fX3BhcmVudD1oO3ZhciBfPWg7Zm9yKG49ZS0xO24+YS5fem9vbTtuLS0pXz1uZXcgTC5NYXJrZXJDbHVzdGVyKHRoaXMsbixfKSxzW25dLmFkZE9iamVjdChfLHRoaXMuX21hcC5wcm9qZWN0KG8uZ2V0TGF0TG5nKCksbikpO2ZvcihhLl9hZGRDaGlsZChfKSxuPWU7bj49MCYmcltuXS5yZW1vdmVPYmplY3Qobyx0aGlzLl9tYXAucHJvamVjdChvLmdldExhdExuZygpLG4pKTtuLS0pO3JldHVybn1yW2VdLmFkZE9iamVjdCh0LGkpfXRoaXMuX3RvcENsdXN0ZXJMZXZlbC5fYWRkQ2hpbGQodCksdC5fX3BhcmVudD10aGlzLl90b3BDbHVzdGVyTGV2ZWx9LF9lbnF1ZXVlOmZ1bmN0aW9uKHQpe3RoaXMuX3F1ZXVlLnB1c2godCksdGhpcy5fcXVldWVUaW1lb3V0fHwodGhpcy5fcXVldWVUaW1lb3V0PXNldFRpbWVvdXQoTC5iaW5kKHRoaXMuX3Byb2Nlc3NRdWV1ZSx0aGlzKSwzMDApKX0sX3Byb2Nlc3NRdWV1ZTpmdW5jdGlvbigpe2Zvcih2YXIgdD0wO3Q8dGhpcy5fcXVldWUubGVuZ3RoO3QrKyl0aGlzLl9xdWV1ZVt0XS5jYWxsKHRoaXMpO3RoaXMuX3F1ZXVlLmxlbmd0aD0wLGNsZWFyVGltZW91dCh0aGlzLl9xdWV1ZVRpbWVvdXQpLHRoaXMuX3F1ZXVlVGltZW91dD1udWxsfSxfbWVyZ2VTcGxpdENsdXN0ZXJzOmZ1bmN0aW9uKCl7dGhpcy5fcHJvY2Vzc1F1ZXVlKCksdGhpcy5fem9vbTx0aGlzLl9tYXAuX3pvb20mJnRoaXMuX2N1cnJlbnRTaG93bkJvdW5kcy5pbnRlcnNlY3RzKHRoaXMuX2dldEV4cGFuZGVkVmlzaWJsZUJvdW5kcygpKT8odGhpcy5fYW5pbWF0aW9uU3RhcnQoKSx0aGlzLl90b3BDbHVzdGVyTGV2ZWwuX3JlY3Vyc2l2ZWx5UmVtb3ZlQ2hpbGRyZW5Gcm9tTWFwKHRoaXMuX2N1cnJlbnRTaG93bkJvdW5kcyx0aGlzLl96b29tLHRoaXMuX2dldEV4cGFuZGVkVmlzaWJsZUJvdW5kcygpKSx0aGlzLl9hbmltYXRpb25ab29tSW4odGhpcy5fem9vbSx0aGlzLl9tYXAuX3pvb20pKTp0aGlzLl96b29tPnRoaXMuX21hcC5fem9vbT8odGhpcy5fYW5pbWF0aW9uU3RhcnQoKSx0aGlzLl9hbmltYXRpb25ab29tT3V0KHRoaXMuX3pvb20sdGhpcy5fbWFwLl96b29tKSk6dGhpcy5fbW92ZUVuZCgpfSxfZ2V0RXhwYW5kZWRWaXNpYmxlQm91bmRzOmZ1bmN0aW9uKCl7aWYoIXRoaXMub3B0aW9ucy5yZW1vdmVPdXRzaWRlVmlzaWJsZUJvdW5kcylyZXR1cm4gdGhpcy5fbWFwLmdldEJvdW5kcygpO3ZhciB0PXRoaXMuX21hcCxlPXQuZ2V0Qm91bmRzKCksaT1lLl9zb3V0aFdlc3Qsbj1lLl9ub3J0aEVhc3Qscz1MLkJyb3dzZXIubW9iaWxlPzA6TWF0aC5hYnMoaS5sYXQtbi5sYXQpLHI9TC5Ccm93c2VyLm1vYmlsZT8wOk1hdGguYWJzKGkubG5nLW4ubG5nKTtyZXR1cm4gbmV3IEwuTGF0TG5nQm91bmRzKG5ldyBMLkxhdExuZyhpLmxhdC1zLGkubG5nLXIsITApLG5ldyBMLkxhdExuZyhuLmxhdCtzLG4ubG5nK3IsITApKX0sX2FuaW1hdGlvbkFkZExheWVyTm9uQW5pbWF0ZWQ6ZnVuY3Rpb24odCxlKXtpZihlPT09dCl0aGlzLl9mZWF0dXJlR3JvdXAuYWRkTGF5ZXIodCk7ZWxzZSBpZigyPT09ZS5fY2hpbGRDb3VudCl7ZS5fYWRkVG9NYXAoKTt2YXIgaT1lLmdldEFsbENoaWxkTWFya2VycygpO3RoaXMuX2ZlYXR1cmVHcm91cC5yZW1vdmVMYXllcihpWzBdKSx0aGlzLl9mZWF0dXJlR3JvdXAucmVtb3ZlTGF5ZXIoaVsxXSl9ZWxzZSBlLl91cGRhdGVJY29uKCl9fSksTC5NYXJrZXJDbHVzdGVyR3JvdXAuaW5jbHVkZShMLkRvbVV0aWwuVFJBTlNJVElPTj97X2FuaW1hdGlvblN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbWFwLl9tYXBQYW5lLmNsYXNzTmFtZSs9IiBsZWFmbGV0LWNsdXN0ZXItYW5pbSIsdGhpcy5faW5ab29tQW5pbWF0aW9uKyt9LF9hbmltYXRpb25FbmQ6ZnVuY3Rpb24oKXt0aGlzLl9tYXAmJih0aGlzLl9tYXAuX21hcFBhbmUuY2xhc3NOYW1lPXRoaXMuX21hcC5fbWFwUGFuZS5jbGFzc05hbWUucmVwbGFjZSgiIGxlYWZsZXQtY2x1c3Rlci1hbmltIiwiIikpLHRoaXMuX2luWm9vbUFuaW1hdGlvbi0tLHRoaXMuZmlyZSgiYW5pbWF0aW9uZW5kIil9LF9hbmltYXRpb25ab29tSW46ZnVuY3Rpb24odCxlKXt2YXIgaSxuPXRoaXMuX2dldEV4cGFuZGVkVmlzaWJsZUJvdW5kcygpLHM9dGhpcy5fZmVhdHVyZUdyb3VwO3RoaXMuX3RvcENsdXN0ZXJMZXZlbC5fcmVjdXJzaXZlbHkobix0LDAsZnVuY3Rpb24ocil7dmFyIG8sYT1yLl9sYXRsbmcsaD1yLl9tYXJrZXJzO2ZvcihuLmNvbnRhaW5zKGEpfHwoYT1udWxsKSxyLl9pc1NpbmdsZVBhcmVudCgpJiZ0KzE9PT1lPyhzLnJlbW92ZUxheWVyKHIpLHIuX3JlY3Vyc2l2ZWx5QWRkQ2hpbGRyZW5Ub01hcChudWxsLGUsbikpOihyLnNldE9wYWNpdHkoMCksci5fcmVjdXJzaXZlbHlBZGRDaGlsZHJlblRvTWFwKGEsZSxuKSksaT1oLmxlbmd0aC0xO2k+PTA7aS0tKW89aFtpXSxuLmNvbnRhaW5zKG8uX2xhdGxuZyl8fHMucmVtb3ZlTGF5ZXIobyl9KSx0aGlzLl9mb3JjZUxheW91dCgpLHRoaXMuX3RvcENsdXN0ZXJMZXZlbC5fcmVjdXJzaXZlbHlCZWNvbWVWaXNpYmxlKG4sZSkscy5lYWNoTGF5ZXIoZnVuY3Rpb24odCl7dCBpbnN0YW5jZW9mIEwuTWFya2VyQ2x1c3Rlcnx8IXQuX2ljb258fHQuc2V0T3BhY2l0eSgxKX0pLHRoaXMuX3RvcENsdXN0ZXJMZXZlbC5fcmVjdXJzaXZlbHkobix0LGUsZnVuY3Rpb24odCl7dC5fcmVjdXJzaXZlbHlSZXN0b3JlQ2hpbGRQb3NpdGlvbnMoZSl9KSx0aGlzLl9lbnF1ZXVlKGZ1bmN0aW9uKCl7dGhpcy5fdG9wQ2x1c3RlckxldmVsLl9yZWN1cnNpdmVseShuLHQsMCxmdW5jdGlvbih0KXtzLnJlbW92ZUxheWVyKHQpLHQuc2V0T3BhY2l0eSgxKX0pLHRoaXMuX2FuaW1hdGlvbkVuZCgpfSl9LF9hbmltYXRpb25ab29tT3V0OmZ1bmN0aW9uKHQsZSl7dGhpcy5fYW5pbWF0aW9uWm9vbU91dFNpbmdsZSh0aGlzLl90b3BDbHVzdGVyTGV2ZWwsdC0xLGUpLHRoaXMuX3RvcENsdXN0ZXJMZXZlbC5fcmVjdXJzaXZlbHlBZGRDaGlsZHJlblRvTWFwKG51bGwsZSx0aGlzLl9nZXRFeHBhbmRlZFZpc2libGVCb3VuZHMoKSksdGhpcy5fdG9wQ2x1c3RlckxldmVsLl9yZWN1cnNpdmVseVJlbW92ZUNoaWxkcmVuRnJvbU1hcCh0aGlzLl9jdXJyZW50U2hvd25Cb3VuZHMsdCx0aGlzLl9nZXRFeHBhbmRlZFZpc2libGVCb3VuZHMoKSl9LF9hbmltYXRpb25ab29tT3V0U2luZ2xlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgbj10aGlzLl9nZXRFeHBhbmRlZFZpc2libGVCb3VuZHMoKTt0Ll9yZWN1cnNpdmVseUFuaW1hdGVDaGlsZHJlbkluQW5kQWRkU2VsZlRvTWFwKG4sZSsxLGkpO3ZhciBzPXRoaXM7dGhpcy5fZm9yY2VMYXlvdXQoKSx0Ll9yZWN1cnNpdmVseUJlY29tZVZpc2libGUobixpKSx0aGlzLl9lbnF1ZXVlKGZ1bmN0aW9uKCl7aWYoMT09PXQuX2NoaWxkQ291bnQpe3ZhciByPXQuX21hcmtlcnNbMF07ci5zZXRMYXRMbmcoci5nZXRMYXRMbmcoKSksci5zZXRPcGFjaXR5JiZyLnNldE9wYWNpdHkoMSl9ZWxzZSB0Ll9yZWN1cnNpdmVseShuLGksMCxmdW5jdGlvbih0KXt0Ll9yZWN1cnNpdmVseVJlbW92ZUNoaWxkcmVuRnJvbU1hcChuLGUrMSl9KTtzLl9hbmltYXRpb25FbmQoKX0pfSxfYW5pbWF0aW9uQWRkTGF5ZXI6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLG49dGhpcy5fZmVhdHVyZUdyb3VwO24uYWRkTGF5ZXIodCksZSE9PXQmJihlLl9jaGlsZENvdW50PjI/KGUuX3VwZGF0ZUljb24oKSx0aGlzLl9mb3JjZUxheW91dCgpLHRoaXMuX2FuaW1hdGlvblN0YXJ0KCksdC5fc2V0UG9zKHRoaXMuX21hcC5sYXRMbmdUb0xheWVyUG9pbnQoZS5nZXRMYXRMbmcoKSkpLHQuc2V0T3BhY2l0eSgwKSx0aGlzLl9lbnF1ZXVlKGZ1bmN0aW9uKCl7bi5yZW1vdmVMYXllcih0KSx0LnNldE9wYWNpdHkoMSksaS5fYW5pbWF0aW9uRW5kKCl9KSk6KHRoaXMuX2ZvcmNlTGF5b3V0KCksaS5fYW5pbWF0aW9uU3RhcnQoKSxpLl9hbmltYXRpb25ab29tT3V0U2luZ2xlKGUsdGhpcy5fbWFwLmdldE1heFpvb20oKSx0aGlzLl9tYXAuZ2V0Wm9vbSgpKSkpfSxfZm9yY2VMYXlvdXQ6ZnVuY3Rpb24oKXtMLlV0aWwuZmFsc2VGbihlLmJvZHkub2Zmc2V0V2lkdGgpfX06e19hbmltYXRpb25TdGFydDpmdW5jdGlvbigpe30sX2FuaW1hdGlvblpvb21JbjpmdW5jdGlvbih0LGUpe3RoaXMuX3RvcENsdXN0ZXJMZXZlbC5fcmVjdXJzaXZlbHlSZW1vdmVDaGlsZHJlbkZyb21NYXAodGhpcy5fY3VycmVudFNob3duQm91bmRzLHQpLHRoaXMuX3RvcENsdXN0ZXJMZXZlbC5fcmVjdXJzaXZlbHlBZGRDaGlsZHJlblRvTWFwKG51bGwsZSx0aGlzLl9nZXRFeHBhbmRlZFZpc2libGVCb3VuZHMoKSksdGhpcy5maXJlKCJhbmltYXRpb25lbmQiKX0sX2FuaW1hdGlvblpvb21PdXQ6ZnVuY3Rpb24odCxlKXt0aGlzLl90b3BDbHVzdGVyTGV2ZWwuX3JlY3Vyc2l2ZWx5UmVtb3ZlQ2hpbGRyZW5Gcm9tTWFwKHRoaXMuX2N1cnJlbnRTaG93bkJvdW5kcyx0KSx0aGlzLl90b3BDbHVzdGVyTGV2ZWwuX3JlY3Vyc2l2ZWx5QWRkQ2hpbGRyZW5Ub01hcChudWxsLGUsdGhpcy5fZ2V0RXhwYW5kZWRWaXNpYmxlQm91bmRzKCkpLHRoaXMuZmlyZSgiYW5pbWF0aW9uZW5kIil9LF9hbmltYXRpb25BZGRMYXllcjpmdW5jdGlvbih0LGUpe3RoaXMuX2FuaW1hdGlvbkFkZExheWVyTm9uQW5pbWF0ZWQodCxlKX19KSxMLm1hcmtlckNsdXN0ZXJHcm91cD1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IEwuTWFya2VyQ2x1c3Rlckdyb3VwKHQpfSxMLk1hcmtlckNsdXN0ZXI9TC5NYXJrZXIuZXh0ZW5kKHtpbml0aWFsaXplOmZ1bmN0aW9uKHQsZSxpLG4pe0wuTWFya2VyLnByb3RvdHlwZS5pbml0aWFsaXplLmNhbGwodGhpcyxpP2kuX2NMYXRMbmd8fGkuZ2V0TGF0TG5nKCk6bmV3IEwuTGF0TG5nKDAsMCkse2ljb246dGhpc30pLHRoaXMuX2dyb3VwPXQsdGhpcy5fem9vbT1lLHRoaXMuX21hcmtlcnM9W10sdGhpcy5fY2hpbGRDbHVzdGVycz1bXSx0aGlzLl9jaGlsZENvdW50PTAsdGhpcy5faWNvbk5lZWRzVXBkYXRlPSEwLHRoaXMuX2JvdW5kcz1uZXcgTC5MYXRMbmdCb3VuZHMsaSYmdGhpcy5fYWRkQ2hpbGQoaSksbiYmdGhpcy5fYWRkQ2hpbGQobil9LGdldEFsbENoaWxkTWFya2VyczpmdW5jdGlvbih0KXt0PXR8fFtdO2Zvcih2YXIgZT10aGlzLl9jaGlsZENsdXN0ZXJzLmxlbmd0aC0xO2U+PTA7ZS0tKXRoaXMuX2NoaWxkQ2x1c3RlcnNbZV0uZ2V0QWxsQ2hpbGRNYXJrZXJzKHQpO2Zvcih2YXIgaT10aGlzLl9tYXJrZXJzLmxlbmd0aC0xO2k+PTA7aS0tKXQucHVzaCh0aGlzLl9tYXJrZXJzW2ldKTtyZXR1cm4gdH0sZ2V0Q2hpbGRDb3VudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9jaGlsZENvdW50fSx6b29tVG9Cb3VuZHM6ZnVuY3Rpb24oKXtmb3IodmFyIHQsZT10aGlzLl9jaGlsZENsdXN0ZXJzLnNsaWNlKCksaT10aGlzLl9ncm91cC5fbWFwLG49aS5nZXRCb3VuZHNab29tKHRoaXMuX2JvdW5kcykscz10aGlzLl96b29tKzEscj1pLmdldFpvb20oKTtlLmxlbmd0aD4wJiZuPnM7KXtzKys7dmFyIG89W107Zm9yKHQ9MDt0PGUubGVuZ3RoO3QrKylvPW8uY29uY2F0KGVbdF0uX2NoaWxkQ2x1c3RlcnMpO2U9b31uPnM/dGhpcy5fZ3JvdXAuX21hcC5zZXRWaWV3KHRoaXMuX2xhdGxuZyxzKTpyPj1uP3RoaXMuX2dyb3VwLl9tYXAuc2V0Vmlldyh0aGlzLl9sYXRsbmcscisxKTp0aGlzLl9ncm91cC5fbWFwLmZpdEJvdW5kcyh0aGlzLl9ib3VuZHMpfSxnZXRCb3VuZHM6ZnVuY3Rpb24oKXt2YXIgdD1uZXcgTC5MYXRMbmdCb3VuZHM7cmV0dXJuIHQuZXh0ZW5kKHRoaXMuX2JvdW5kcyksdH0sX3VwZGF0ZUljb246ZnVuY3Rpb24oKXt0aGlzLl9pY29uTmVlZHNVcGRhdGU9ITAsdGhpcy5faWNvbiYmdGhpcy5zZXRJY29uKHRoaXMpfSxjcmVhdGVJY29uOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2ljb25OZWVkc1VwZGF0ZSYmKHRoaXMuX2ljb25PYmo9dGhpcy5fZ3JvdXAub3B0aW9ucy5pY29uQ3JlYXRlRnVuY3Rpb24odGhpcyksdGhpcy5faWNvbk5lZWRzVXBkYXRlPSExKSx0aGlzLl9pY29uT2JqLmNyZWF0ZUljb24oKX0sY3JlYXRlU2hhZG93OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2ljb25PYmouY3JlYXRlU2hhZG93KCl9LF9hZGRDaGlsZDpmdW5jdGlvbih0LGUpe3RoaXMuX2ljb25OZWVkc1VwZGF0ZT0hMCx0aGlzLl9leHBhbmRCb3VuZHModCksdCBpbnN0YW5jZW9mIEwuTWFya2VyQ2x1c3Rlcj8oZXx8KHRoaXMuX2NoaWxkQ2x1c3RlcnMucHVzaCh0KSx0Ll9fcGFyZW50PXRoaXMpLHRoaXMuX2NoaWxkQ291bnQrPXQuX2NoaWxkQ291bnQpOihlfHx0aGlzLl9tYXJrZXJzLnB1c2godCksdGhpcy5fY2hpbGRDb3VudCsrKSx0aGlzLl9fcGFyZW50JiZ0aGlzLl9fcGFyZW50Ll9hZGRDaGlsZCh0LCEwKX0sX2V4cGFuZEJvdW5kczpmdW5jdGlvbih0KXt2YXIgZSxpPXQuX3dMYXRMbmd8fHQuX2xhdGxuZzt0IGluc3RhbmNlb2YgTC5NYXJrZXJDbHVzdGVyPyh0aGlzLl9ib3VuZHMuZXh0ZW5kKHQuX2JvdW5kcyksZT10Ll9jaGlsZENvdW50KToodGhpcy5fYm91bmRzLmV4dGVuZChpKSxlPTEpLHRoaXMuX2NMYXRMbmd8fCh0aGlzLl9jTGF0TG5nPXQuX2NMYXRMbmd8fGkpO3ZhciBuPXRoaXMuX2NoaWxkQ291bnQrZTt0aGlzLl93TGF0TG5nPyh0aGlzLl93TGF0TG5nLmxhdD0oaS5sYXQqZSt0aGlzLl93TGF0TG5nLmxhdCp0aGlzLl9jaGlsZENvdW50KS9uLHRoaXMuX3dMYXRMbmcubG5nPShpLmxuZyplK3RoaXMuX3dMYXRMbmcubG5nKnRoaXMuX2NoaWxkQ291bnQpL24pOnRoaXMuX2xhdGxuZz10aGlzLl93TGF0TG5nPW5ldyBMLkxhdExuZyhpLmxhdCxpLmxuZyl9LF9hZGRUb01hcDpmdW5jdGlvbih0KXt0JiYodGhpcy5fYmFja3VwTGF0bG5nPXRoaXMuX2xhdGxuZyx0aGlzLnNldExhdExuZyh0KSksdGhpcy5fZ3JvdXAuX2ZlYXR1cmVHcm91cC5hZGRMYXllcih0aGlzKX0sX3JlY3Vyc2l2ZWx5QW5pbWF0ZUNoaWxkcmVuSW46ZnVuY3Rpb24odCxlLGkpe3RoaXMuX3JlY3Vyc2l2ZWx5KHQsMCxpLTEsZnVuY3Rpb24odCl7dmFyIGksbixzPXQuX21hcmtlcnM7Zm9yKGk9cy5sZW5ndGgtMTtpPj0wO2ktLSluPXNbaV0sbi5faWNvbiYmKG4uX3NldFBvcyhlKSxuLnNldE9wYWNpdHkoMCkpfSxmdW5jdGlvbih0KXt2YXIgaSxuLHM9dC5fY2hpbGRDbHVzdGVycztmb3IoaT1zLmxlbmd0aC0xO2k+PTA7aS0tKW49c1tpXSxuLl9pY29uJiYobi5fc2V0UG9zKGUpLG4uc2V0T3BhY2l0eSgwKSl9KX0sX3JlY3Vyc2l2ZWx5QW5pbWF0ZUNoaWxkcmVuSW5BbmRBZGRTZWxmVG9NYXA6ZnVuY3Rpb24odCxlLGkpe3RoaXMuX3JlY3Vyc2l2ZWx5KHQsaSwwLGZ1bmN0aW9uKG4pe24uX3JlY3Vyc2l2ZWx5QW5pbWF0ZUNoaWxkcmVuSW4odCxuLl9ncm91cC5fbWFwLmxhdExuZ1RvTGF5ZXJQb2ludChuLmdldExhdExuZygpKS5yb3VuZCgpLGUpLG4uX2lzU2luZ2xlUGFyZW50KCkmJmUtMT09PWk/KG4uc2V0T3BhY2l0eSgxKSxuLl9yZWN1cnNpdmVseVJlbW92ZUNoaWxkcmVuRnJvbU1hcCh0LGUpKTpuLnNldE9wYWNpdHkoMCksbi5fYWRkVG9NYXAoKX0pfSxfcmVjdXJzaXZlbHlCZWNvbWVWaXNpYmxlOmZ1bmN0aW9uKHQsZSl7dGhpcy5fcmVjdXJzaXZlbHkodCwwLGUsbnVsbCxmdW5jdGlvbih0KXt0LnNldE9wYWNpdHkoMSl9KX0sX3JlY3Vyc2l2ZWx5QWRkQ2hpbGRyZW5Ub01hcDpmdW5jdGlvbih0LGUsaSl7dGhpcy5fcmVjdXJzaXZlbHkoaSwtMSxlLGZ1bmN0aW9uKG4pe2lmKGUhPT1uLl96b29tKWZvcih2YXIgcz1uLl9tYXJrZXJzLmxlbmd0aC0xO3M+PTA7cy0tKXt2YXIgcj1uLl9tYXJrZXJzW3NdO2kuY29udGFpbnMoci5fbGF0bG5nKSYmKHQmJihyLl9iYWNrdXBMYXRsbmc9ci5nZXRMYXRMbmcoKSxyLnNldExhdExuZyh0KSxyLnNldE9wYWNpdHkmJnIuc2V0T3BhY2l0eSgwKSksbi5fZ3JvdXAuX2ZlYXR1cmVHcm91cC5hZGRMYXllcihyKSl9fSxmdW5jdGlvbihlKXtlLl9hZGRUb01hcCh0KX0pfSxfcmVjdXJzaXZlbHlSZXN0b3JlQ2hpbGRQb3NpdGlvbnM6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMuX21hcmtlcnMubGVuZ3RoLTE7ZT49MDtlLS0pe3ZhciBpPXRoaXMuX21hcmtlcnNbZV07aS5fYmFja3VwTGF0bG5nJiYoaS5zZXRMYXRMbmcoaS5fYmFja3VwTGF0bG5nKSxkZWxldGUgaS5fYmFja3VwTGF0bG5nKX1pZih0LTE9PT10aGlzLl96b29tKWZvcih2YXIgbj10aGlzLl9jaGlsZENsdXN0ZXJzLmxlbmd0aC0xO24+PTA7bi0tKXRoaXMuX2NoaWxkQ2x1c3RlcnNbbl0uX3Jlc3RvcmVQb3NpdGlvbigpO2Vsc2UgZm9yKHZhciBzPXRoaXMuX2NoaWxkQ2x1c3RlcnMubGVuZ3RoLTE7cz49MDtzLS0pdGhpcy5fY2hpbGRDbHVzdGVyc1tzXS5fcmVjdXJzaXZlbHlSZXN0b3JlQ2hpbGRQb3NpdGlvbnModCl9LF9yZXN0b3JlUG9zaXRpb246ZnVuY3Rpb24oKXt0aGlzLl9iYWNrdXBMYXRsbmcmJih0aGlzLnNldExhdExuZyh0aGlzLl9iYWNrdXBMYXRsbmcpLGRlbGV0ZSB0aGlzLl9iYWNrdXBMYXRsbmcpfSxfcmVjdXJzaXZlbHlSZW1vdmVDaGlsZHJlbkZyb21NYXA6ZnVuY3Rpb24odCxlLGkpe3ZhciBuLHM7dGhpcy5fcmVjdXJzaXZlbHkodCwtMSxlLTEsZnVuY3Rpb24odCl7Zm9yKHM9dC5fbWFya2Vycy5sZW5ndGgtMTtzPj0wO3MtLSluPXQuX21hcmtlcnNbc10saSYmaS5jb250YWlucyhuLl9sYXRsbmcpfHwodC5fZ3JvdXAuX2ZlYXR1cmVHcm91cC5yZW1vdmVMYXllcihuKSxuLnNldE9wYWNpdHkmJm4uc2V0T3BhY2l0eSgxKSl9LGZ1bmN0aW9uKHQpe2ZvcihzPXQuX2NoaWxkQ2x1c3RlcnMubGVuZ3RoLTE7cz49MDtzLS0pbj10Ll9jaGlsZENsdXN0ZXJzW3NdLGkmJmkuY29udGFpbnMobi5fbGF0bG5nKXx8KHQuX2dyb3VwLl9mZWF0dXJlR3JvdXAucmVtb3ZlTGF5ZXIobiksbi5zZXRPcGFjaXR5JiZuLnNldE9wYWNpdHkoMSkpfSl9LF9yZWN1cnNpdmVseTpmdW5jdGlvbih0LGUsaSxuLHMpe3ZhciByLG8sYT10aGlzLl9jaGlsZENsdXN0ZXJzLGg9dGhpcy5fem9vbTtpZihlPmgpZm9yKHI9YS5sZW5ndGgtMTtyPj0wO3ItLSlvPWFbcl0sdC5pbnRlcnNlY3RzKG8uX2JvdW5kcykmJm8uX3JlY3Vyc2l2ZWx5KHQsZSxpLG4scyk7ZWxzZSBpZihuJiZuKHRoaXMpLHMmJnRoaXMuX3pvb209PT1pJiZzKHRoaXMpLGk+aClmb3Iocj1hLmxlbmd0aC0xO3I+PTA7ci0tKW89YVtyXSx0LmludGVyc2VjdHMoby5fYm91bmRzKSYmby5fcmVjdXJzaXZlbHkodCxlLGksbixzKX0sX3JlY2FsY3VsYXRlQm91bmRzOmZ1bmN0aW9uKCl7dmFyIHQsZT10aGlzLl9tYXJrZXJzLGk9dGhpcy5fY2hpbGRDbHVzdGVycztmb3IodGhpcy5fYm91bmRzPW5ldyBMLkxhdExuZ0JvdW5kcyxkZWxldGUgdGhpcy5fd0xhdExuZyx0PWUubGVuZ3RoLTE7dD49MDt0LS0pdGhpcy5fZXhwYW5kQm91bmRzKGVbdF0pO2Zvcih0PWkubGVuZ3RoLTE7dD49MDt0LS0pdGhpcy5fZXhwYW5kQm91bmRzKGlbdF0pfSxfaXNTaW5nbGVQYXJlbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY2hpbGRDbHVzdGVycy5sZW5ndGg+MCYmdGhpcy5fY2hpbGRDbHVzdGVyc1swXS5fY2hpbGRDb3VudD09PXRoaXMuX2NoaWxkQ291bnR9fSksTC5EaXN0YW5jZUdyaWQ9ZnVuY3Rpb24odCl7dGhpcy5fY2VsbFNpemU9dCx0aGlzLl9zcUNlbGxTaXplPXQqdCx0aGlzLl9ncmlkPXt9LHRoaXMuX29iamVjdFBvaW50PXt9fSxMLkRpc3RhbmNlR3JpZC5wcm90b3R5cGU9e2FkZE9iamVjdDpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMuX2dldENvb3JkKGUueCksbj10aGlzLl9nZXRDb29yZChlLnkpLHM9dGhpcy5fZ3JpZCxyPXNbbl09c1tuXXx8e30sbz1yW2ldPXJbaV18fFtdLGE9TC5VdGlsLnN0YW1wKHQpO3RoaXMuX29iamVjdFBvaW50W2FdPWUsby5wdXNoKHQpfSx1cGRhdGVPYmplY3Q6ZnVuY3Rpb24odCxlKXt0aGlzLnJlbW92ZU9iamVjdCh0KSx0aGlzLmFkZE9iamVjdCh0LGUpfSxyZW1vdmVPYmplY3Q6ZnVuY3Rpb24odCxlKXt2YXIgaSxuLHM9dGhpcy5fZ2V0Q29vcmQoZS54KSxyPXRoaXMuX2dldENvb3JkKGUueSksbz10aGlzLl9ncmlkLGE9b1tyXT1vW3JdfHx7fSxoPWFbc109YVtzXXx8W107Zm9yKGRlbGV0ZSB0aGlzLl9vYmplY3RQb2ludFtMLlV0aWwuc3RhbXAodCldLGk9MCxuPWgubGVuZ3RoO24+aTtpKyspaWYoaFtpXT09PXQpcmV0dXJuIGguc3BsaWNlKGksMSksMT09PW4mJmRlbGV0ZSBhW3NdLCEwfSxlYWNoT2JqZWN0OmZ1bmN0aW9uKHQsZSl7dmFyIGksbixzLHIsbyxhLGgsXz10aGlzLl9ncmlkO2ZvcihpIGluIF8pe289X1tpXTtmb3IobiBpbiBvKWZvcihhPW9bbl0scz0wLHI9YS5sZW5ndGg7cj5zO3MrKyloPXQuY2FsbChlLGFbc10pLGgmJihzLS0sci0tKX19LGdldE5lYXJPYmplY3Q6ZnVuY3Rpb24odCl7dmFyIGUsaSxuLHMscixvLGEsaCxfPXRoaXMuX2dldENvb3JkKHQueCksdT10aGlzLl9nZXRDb29yZCh0LnkpLGw9dGhpcy5fb2JqZWN0UG9pbnQsZD10aGlzLl9zcUNlbGxTaXplLHA9bnVsbDtmb3IoZT11LTE7dSsxPj1lO2UrKylpZihzPXRoaXMuX2dyaWRbZV0pZm9yKGk9Xy0xO18rMT49aTtpKyspaWYocj1zW2ldKWZvcihuPTAsbz1yLmxlbmd0aDtvPm47bisrKWE9cltuXSxoPXRoaXMuX3NxRGlzdChsW0wuVXRpbC5zdGFtcChhKV0sdCksZD5oJiYoZD1oLHA9YSk7cmV0dXJuIHB9LF9nZXRDb29yZDpmdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5mbG9vcih0L3RoaXMuX2NlbGxTaXplKX0sX3NxRGlzdDpmdW5jdGlvbih0LGUpe3ZhciBpPWUueC10Lngsbj1lLnktdC55O3JldHVybiBpKmkrbipufX0sZnVuY3Rpb24oKXtMLlF1aWNrSHVsbD17Z2V0RGlzdGFudDpmdW5jdGlvbih0LGUpe3ZhciBpPWVbMV0ubGF0LWVbMF0ubGF0LG49ZVswXS5sbmctZVsxXS5sbmc7cmV0dXJuIG4qKHQubGF0LWVbMF0ubGF0KStpKih0LmxuZy1lWzBdLmxuZyl9LGZpbmRNb3N0RGlzdGFudFBvaW50RnJvbUJhc2VMaW5lOmZ1bmN0aW9uKHQsZSl7dmFyIGksbixzLHI9MCxvPW51bGwsYT1bXTtmb3IoaT1lLmxlbmd0aC0xO2k+PTA7aS0tKW49ZVtpXSxzPXRoaXMuZ2V0RGlzdGFudChuLHQpLHM+MCYmKGEucHVzaChuKSxzPnImJihyPXMsbz1uKSk7cmV0dXJue21heFBvaW50Om8sbmV3UG9pbnRzOmF9fSxidWlsZENvbnZleEh1bGw6ZnVuY3Rpb24odCxlKXt2YXIgaT1bXSxuPXRoaXMuZmluZE1vc3REaXN0YW50UG9pbnRGcm9tQmFzZUxpbmUodCxlKTtyZXR1cm4gbi5tYXhQb2ludD8oaT1pLmNvbmNhdCh0aGlzLmJ1aWxkQ29udmV4SHVsbChbdFswXSxuLm1heFBvaW50XSxuLm5ld1BvaW50cykpLGk9aS5jb25jYXQodGhpcy5idWlsZENvbnZleEh1bGwoW24ubWF4UG9pbnQsdFsxXV0sbi5uZXdQb2ludHMpKSk6W3RbMF1dfSxnZXRDb252ZXhIdWxsOmZ1bmN0aW9uKHQpe3ZhciBlLGk9ITEsbj0hMSxzPW51bGwscj1udWxsO2ZvcihlPXQubGVuZ3RoLTE7ZT49MDtlLS0pe3ZhciBvPXRbZV07KGk9PT0hMXx8by5sYXQ+aSkmJihzPW8saT1vLmxhdCksKG49PT0hMXx8by5sYXQ8bikmJihyPW8sbj1vLmxhdCl9dmFyIGE9W10uY29uY2F0KHRoaXMuYnVpbGRDb252ZXhIdWxsKFtyLHNdLHQpLHRoaXMuYnVpbGRDb252ZXhIdWxsKFtzLHJdLHQpKTtyZXR1cm4gYX19fSgpLEwuTWFya2VyQ2x1c3Rlci5pbmNsdWRlKHtnZXRDb252ZXhIdWxsOmZ1bmN0aW9uKCl7dmFyIHQsZSxpPXRoaXMuZ2V0QWxsQ2hpbGRNYXJrZXJzKCksbj1bXTtmb3IoZT1pLmxlbmd0aC0xO2U+PTA7ZS0tKXQ9aVtlXS5nZXRMYXRMbmcoKSxuLnB1c2godCk7cmV0dXJuIEwuUXVpY2tIdWxsLmdldENvbnZleEh1bGwobil9fSksTC5NYXJrZXJDbHVzdGVyLmluY2x1ZGUoe18yUEk6MipNYXRoLlBJLF9jaXJjbGVGb290U2VwYXJhdGlvbjoyNSxfY2lyY2xlU3RhcnRBbmdsZTpNYXRoLlBJLzYsX3NwaXJhbEZvb3RTZXBhcmF0aW9uOjI4LF9zcGlyYWxMZW5ndGhTdGFydDoxMSxfc3BpcmFsTGVuZ3RoRmFjdG9yOjUsX2NpcmNsZVNwaXJhbFN3aXRjaG92ZXI6OSxzcGlkZXJmeTpmdW5jdGlvbigpe2lmKHRoaXMuX2dyb3VwLl9zcGlkZXJmaWVkIT09dGhpcyYmIXRoaXMuX2dyb3VwLl9pblpvb21BbmltYXRpb24pe3ZhciB0LGU9dGhpcy5nZXRBbGxDaGlsZE1hcmtlcnMoKSxpPXRoaXMuX2dyb3VwLG49aS5fbWFwLHM9bi5sYXRMbmdUb0xheWVyUG9pbnQodGhpcy5fbGF0bG5nKTt0aGlzLl9ncm91cC5fdW5zcGlkZXJmeSgpLHRoaXMuX2dyb3VwLl9zcGlkZXJmaWVkPXRoaXMsZS5sZW5ndGg+PXRoaXMuX2NpcmNsZVNwaXJhbFN3aXRjaG92ZXI/dD10aGlzLl9nZW5lcmF0ZVBvaW50c1NwaXJhbChlLmxlbmd0aCxzKToocy55Kz0xMCx0PXRoaXMuX2dlbmVyYXRlUG9pbnRzQ2lyY2xlKGUubGVuZ3RoLHMpKSx0aGlzLl9hbmltYXRpb25TcGlkZXJmeShlLHQpfX0sdW5zcGlkZXJmeTpmdW5jdGlvbih0KXt0aGlzLl9ncm91cC5faW5ab29tQW5pbWF0aW9ufHwodGhpcy5fYW5pbWF0aW9uVW5zcGlkZXJmeSh0KSx0aGlzLl9ncm91cC5fc3BpZGVyZmllZD1udWxsKX0sX2dlbmVyYXRlUG9pbnRzQ2lyY2xlOmZ1bmN0aW9uKHQsZSl7dmFyIGksbixzPXRoaXMuX2dyb3VwLm9wdGlvbnMuc3BpZGVyZnlEaXN0YW5jZU11bHRpcGxpZXIqdGhpcy5fY2lyY2xlRm9vdFNlcGFyYXRpb24qKDIrdCkscj1zL3RoaXMuXzJQSSxvPXRoaXMuXzJQSS90LGE9W107Zm9yKGEubGVuZ3RoPXQsaT10LTE7aT49MDtpLS0pbj10aGlzLl9jaXJjbGVTdGFydEFuZ2xlK2kqbyxhW2ldPW5ldyBMLlBvaW50KGUueCtyKk1hdGguY29zKG4pLGUueStyKk1hdGguc2luKG4pKS5fcm91bmQoKTtyZXR1cm4gYX0sX2dlbmVyYXRlUG9pbnRzU3BpcmFsOmZ1bmN0aW9uKHQsZSl7dmFyIGksbj10aGlzLl9ncm91cC5vcHRpb25zLnNwaWRlcmZ5RGlzdGFuY2VNdWx0aXBsaWVyKnRoaXMuX3NwaXJhbExlbmd0aFN0YXJ0LHM9dGhpcy5fZ3JvdXAub3B0aW9ucy5zcGlkZXJmeURpc3RhbmNlTXVsdGlwbGllcip0aGlzLl9zcGlyYWxGb290U2VwYXJhdGlvbixyPXRoaXMuX2dyb3VwLm9wdGlvbnMuc3BpZGVyZnlEaXN0YW5jZU11bHRpcGxpZXIqdGhpcy5fc3BpcmFsTGVuZ3RoRmFjdG9yLG89MCxhPVtdO2ZvcihhLmxlbmd0aD10LGk9dC0xO2k+PTA7aS0tKW8rPXMvbis1ZS00KmksYVtpXT1uZXcgTC5Qb2ludChlLngrbipNYXRoLmNvcyhvKSxlLnkrbipNYXRoLnNpbihvKSkuX3JvdW5kKCksbis9dGhpcy5fMlBJKnIvbztyZXR1cm4gYX0sX25vYW5pbWF0aW9uVW5zcGlkZXJmeTpmdW5jdGlvbigpe3ZhciB0LGUsaT10aGlzLl9ncm91cCxuPWkuX21hcCxzPWkuX2ZlYXR1cmVHcm91cCxyPXRoaXMuZ2V0QWxsQ2hpbGRNYXJrZXJzKCk7Zm9yKHRoaXMuc2V0T3BhY2l0eSgxKSxlPXIubGVuZ3RoLTE7ZT49MDtlLS0pdD1yW2VdLHMucmVtb3ZlTGF5ZXIodCksdC5fcHJlU3BpZGVyZnlMYXRsbmcmJih0LnNldExhdExuZyh0Ll9wcmVTcGlkZXJmeUxhdGxuZyksZGVsZXRlIHQuX3ByZVNwaWRlcmZ5TGF0bG5nKSx0LnNldFpJbmRleE9mZnNldCYmdC5zZXRaSW5kZXhPZmZzZXQoMCksdC5fc3BpZGVyTGVnJiYobi5yZW1vdmVMYXllcih0Ll9zcGlkZXJMZWcpLGRlbGV0ZSB0Ll9zcGlkZXJMZWcpO2kuX3NwaWRlcmZpZWQ9bnVsbH19KSxMLk1hcmtlckNsdXN0ZXIuaW5jbHVkZShMLkRvbVV0aWwuVFJBTlNJVElPTj97U1ZHX0FOSU1BVElPTjpmdW5jdGlvbigpe3JldHVybiBlLmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCJhbmltYXRlIikudG9TdHJpbmcoKS5pbmRleE9mKCJTVkdBbmltYXRlIik+LTF9KCksX2FuaW1hdGlvblNwaWRlcmZ5OmZ1bmN0aW9uKHQsaSl7dmFyIG4scyxyLG8sYT10aGlzLGg9dGhpcy5fZ3JvdXAsXz1oLl9tYXAsdT1oLl9mZWF0dXJlR3JvdXAsbD1fLmxhdExuZ1RvTGF5ZXJQb2ludCh0aGlzLl9sYXRsbmcpO2ZvcihuPXQubGVuZ3RoLTE7bj49MDtuLS0pcz10W25dLHMuc2V0T3BhY2l0eT8ocy5zZXRaSW5kZXhPZmZzZXQoMWU2KSxzLnNldE9wYWNpdHkoMCksdS5hZGRMYXllcihzKSxzLl9zZXRQb3MobCkpOnUuYWRkTGF5ZXIocyk7aC5fZm9yY2VMYXlvdXQoKSxoLl9hbmltYXRpb25TdGFydCgpO3ZhciBkPUwuUGF0aC5TVkc/MDouMyxwPUwuUGF0aC5TVkdfTlM7Zm9yKG49dC5sZW5ndGgtMTtuPj0wO24tLSlpZihvPV8ubGF5ZXJQb2ludFRvTGF0TG5nKGlbbl0pLHM9dFtuXSxzLl9wcmVTcGlkZXJmeUxhdGxuZz1zLl9sYXRsbmcscy5zZXRMYXRMbmcobykscy5zZXRPcGFjaXR5JiZzLnNldE9wYWNpdHkoMSkscj1uZXcgTC5Qb2x5bGluZShbYS5fbGF0bG5nLG9dLHt3ZWlnaHQ6MS41LGNvbG9yOiIjMjIyIixvcGFjaXR5OmR9KSxfLmFkZExheWVyKHIpLHMuX3NwaWRlckxlZz1yLEwuUGF0aC5TVkcmJnRoaXMuU1ZHX0FOSU1BVElPTil7dmFyIGM9ci5fcGF0aC5nZXRUb3RhbExlbmd0aCgpO3IuX3BhdGguc2V0QXR0cmlidXRlKCJzdHJva2UtZGFzaGFycmF5IixjKyIsIitjKTt2YXIgZj1lLmNyZWF0ZUVsZW1lbnROUyhwLCJhbmltYXRlIik7Zi5zZXRBdHRyaWJ1dGUoImF0dHJpYnV0ZU5hbWUiLCJzdHJva2UtZGFzaG9mZnNldCIpLGYuc2V0QXR0cmlidXRlKCJiZWdpbiIsImluZGVmaW5pdGUiKSxmLnNldEF0dHJpYnV0ZSgiZnJvbSIsYyksZi5zZXRBdHRyaWJ1dGUoInRvIiwwKSxmLnNldEF0dHJpYnV0ZSgiZHVyIiwuMjUpLHIuX3BhdGguYXBwZW5kQ2hpbGQoZiksZi5iZWdpbkVsZW1lbnQoKSxmPWUuY3JlYXRlRWxlbWVudE5TKHAsImFuaW1hdGUiKSxmLnNldEF0dHJpYnV0ZSgiYXR0cmlidXRlTmFtZSIsInN0cm9rZS1vcGFjaXR5IiksZi5zZXRBdHRyaWJ1dGUoImF0dHJpYnV0ZU5hbWUiLCJzdHJva2Utb3BhY2l0eSIpLGYuc2V0QXR0cmlidXRlKCJiZWdpbiIsImluZGVmaW5pdGUiKSxmLnNldEF0dHJpYnV0ZSgiZnJvbSIsMCksZi5zZXRBdHRyaWJ1dGUoInRvIiwuNSksZi5zZXRBdHRyaWJ1dGUoImR1ciIsLjI1KSxyLl9wYXRoLmFwcGVuZENoaWxkKGYpLGYuYmVnaW5FbGVtZW50KCl9aWYoYS5zZXRPcGFjaXR5KC4zKSxMLlBhdGguU1ZHKWZvcih0aGlzLl9ncm91cC5fZm9yY2VMYXlvdXQoKSxuPXQubGVuZ3RoLTE7bj49MDtuLS0pcz10W25dLl9zcGlkZXJMZWcscy5vcHRpb25zLm9wYWNpdHk9LjUscy5fcGF0aC5zZXRBdHRyaWJ1dGUoInN0cm9rZS1vcGFjaXR5IiwuNSk7c2V0VGltZW91dChmdW5jdGlvbigpe2guX2FuaW1hdGlvbkVuZCgpLGguZmlyZSgic3BpZGVyZmllZCIpfSwyMDApfSxfYW5pbWF0aW9uVW5zcGlkZXJmeTpmdW5jdGlvbih0KXt2YXIgZSxpLG4scz10aGlzLl9ncm91cCxyPXMuX21hcCxvPXMuX2ZlYXR1cmVHcm91cCxhPXQ/ci5fbGF0TG5nVG9OZXdMYXllclBvaW50KHRoaXMuX2xhdGxuZyx0Lnpvb20sdC5jZW50ZXIpOnIubGF0TG5nVG9MYXllclBvaW50KHRoaXMuX2xhdGxuZyksaD10aGlzLmdldEFsbENoaWxkTWFya2VycygpLF89TC5QYXRoLlNWRyYmdGhpcy5TVkdfQU5JTUFUSU9OO2ZvcihzLl9hbmltYXRpb25TdGFydCgpLHRoaXMuc2V0T3BhY2l0eSgxKSxpPWgubGVuZ3RoLTE7aT49MDtpLS0pZT1oW2ldLGUuX3ByZVNwaWRlcmZ5TGF0bG5nJiYoZS5zZXRMYXRMbmcoZS5fcHJlU3BpZGVyZnlMYXRsbmcpLGRlbGV0ZSBlLl9wcmVTcGlkZXJmeUxhdGxuZyxlLnNldE9wYWNpdHk/KGUuX3NldFBvcyhhKSxlLnNldE9wYWNpdHkoMCkpOm8ucmVtb3ZlTGF5ZXIoZSksXyYmKG49ZS5fc3BpZGVyTGVnLl9wYXRoLmNoaWxkTm9kZXNbMF0sbi5zZXRBdHRyaWJ1dGUoInRvIixuLmdldEF0dHJpYnV0ZSgiZnJvbSIpKSxuLnNldEF0dHJpYnV0ZSgiZnJvbSIsMCksbi5iZWdpbkVsZW1lbnQoKSxuPWUuX3NwaWRlckxlZy5fcGF0aC5jaGlsZE5vZGVzWzFdLG4uc2V0QXR0cmlidXRlKCJmcm9tIiwuNSksbi5zZXRBdHRyaWJ1dGUoInRvIiwwKSxuLnNldEF0dHJpYnV0ZSgic3Ryb2tlLW9wYWNpdHkiLDApLG4uYmVnaW5FbGVtZW50KCksZS5fc3BpZGVyTGVnLl9wYXRoLnNldEF0dHJpYnV0ZSgic3Ryb2tlLW9wYWNpdHkiLDApKSk7c2V0VGltZW91dChmdW5jdGlvbigpe3ZhciB0PTA7Zm9yKGk9aC5sZW5ndGgtMTtpPj0wO2ktLSllPWhbaV0sZS5fc3BpZGVyTGVnJiZ0Kys7Zm9yKGk9aC5sZW5ndGgtMTtpPj0wO2ktLSllPWhbaV0sZS5fc3BpZGVyTGVnJiYoZS5zZXRPcGFjaXR5JiYoZS5zZXRPcGFjaXR5KDEpLGUuc2V0WkluZGV4T2Zmc2V0KDApKSx0PjEmJm8ucmVtb3ZlTGF5ZXIoZSksci5yZW1vdmVMYXllcihlLl9zcGlkZXJMZWcpLGRlbGV0ZSBlLl9zcGlkZXJMZWcpO3MuX2FuaW1hdGlvbkVuZCgpfSwyMDApfX06e19hbmltYXRpb25TcGlkZXJmeTpmdW5jdGlvbih0LGUpe3ZhciBpLG4scyxyLG89dGhpcy5fZ3JvdXAsYT1vLl9tYXAsaD1vLl9mZWF0dXJlR3JvdXA7Zm9yKGk9dC5sZW5ndGgtMTtpPj0wO2ktLSlyPWEubGF5ZXJQb2ludFRvTGF0TG5nKGVbaV0pLG49dFtpXSxuLl9wcmVTcGlkZXJmeUxhdGxuZz1uLl9sYXRsbmcsbi5zZXRMYXRMbmcociksbi5zZXRaSW5kZXhPZmZzZXQmJm4uc2V0WkluZGV4T2Zmc2V0KDFlNiksaC5hZGRMYXllcihuKSxzPW5ldyBMLlBvbHlsaW5lKFt0aGlzLl9sYXRsbmcscl0se3dlaWdodDoxLjUsY29sb3I6IiMyMjIifSksYS5hZGRMYXllcihzKSxuLl9zcGlkZXJMZWc9czt0aGlzLnNldE9wYWNpdHkoLjMpLG8uZmlyZSgic3BpZGVyZmllZCIpfSxfYW5pbWF0aW9uVW5zcGlkZXJmeTpmdW5jdGlvbigpe3RoaXMuX25vYW5pbWF0aW9uVW5zcGlkZXJmeSgpfX0pLEwuTWFya2VyQ2x1c3Rlckdyb3VwLmluY2x1ZGUoe19zcGlkZXJmaWVkOm51bGwsX3NwaWRlcmZpZXJPbkFkZDpmdW5jdGlvbigpe3RoaXMuX21hcC5vbigiY2xpY2siLHRoaXMuX3Vuc3BpZGVyZnlXcmFwcGVyLHRoaXMpLHRoaXMuX21hcC5vcHRpb25zLnpvb21BbmltYXRpb24mJnRoaXMuX21hcC5vbigiem9vbXN0YXJ0Iix0aGlzLl91bnNwaWRlcmZ5Wm9vbVN0YXJ0LHRoaXMpLHRoaXMuX21hcC5vbigiem9vbWVuZCIsdGhpcy5fbm9hbmltYXRpb25VbnNwaWRlcmZ5LHRoaXMpLEwuUGF0aC5TVkcmJiFMLkJyb3dzZXIudG91Y2gmJnRoaXMuX21hcC5faW5pdFBhdGhSb290KCl9LF9zcGlkZXJmaWVyT25SZW1vdmU6ZnVuY3Rpb24oKXt0aGlzLl9tYXAub2ZmKCJjbGljayIsdGhpcy5fdW5zcGlkZXJmeVdyYXBwZXIsdGhpcyksdGhpcy5fbWFwLm9mZigiem9vbXN0YXJ0Iix0aGlzLl91bnNwaWRlcmZ5Wm9vbVN0YXJ0LHRoaXMpLHRoaXMuX21hcC5vZmYoInpvb21hbmltIix0aGlzLl91bnNwaWRlcmZ5Wm9vbUFuaW0sdGhpcyksdGhpcy5fdW5zcGlkZXJmeSgpfSxfdW5zcGlkZXJmeVpvb21TdGFydDpmdW5jdGlvbigpe3RoaXMuX21hcCYmdGhpcy5fbWFwLm9uKCJ6b29tYW5pbSIsdGhpcy5fdW5zcGlkZXJmeVpvb21BbmltLHRoaXMpfSxfdW5zcGlkZXJmeVpvb21BbmltOmZ1bmN0aW9uKHQpe0wuRG9tVXRpbC5oYXNDbGFzcyh0aGlzLl9tYXAuX21hcFBhbmUsImxlYWZsZXQtdG91Y2hpbmciKXx8KHRoaXMuX21hcC5vZmYoInpvb21hbmltIix0aGlzLl91bnNwaWRlcmZ5Wm9vbUFuaW0sdGhpcyksdGhpcy5fdW5zcGlkZXJmeSh0KSl9LF91bnNwaWRlcmZ5V3JhcHBlcjpmdW5jdGlvbigpe3RoaXMuX3Vuc3BpZGVyZnkoKX0sX3Vuc3BpZGVyZnk6ZnVuY3Rpb24odCl7dGhpcy5fc3BpZGVyZmllZCYmdGhpcy5fc3BpZGVyZmllZC51bnNwaWRlcmZ5KHQpfSxfbm9hbmltYXRpb25VbnNwaWRlcmZ5OmZ1bmN0aW9uKCl7dGhpcy5fc3BpZGVyZmllZCYmdGhpcy5fc3BpZGVyZmllZC5fbm9hbmltYXRpb25VbnNwaWRlcmZ5KCl9LF91bnNwaWRlcmZ5TGF5ZXI6ZnVuY3Rpb24odCl7dC5fc3BpZGVyTGVnJiYodGhpcy5fZmVhdHVyZUdyb3VwLnJlbW92ZUxheWVyKHQpLHQuc2V0T3BhY2l0eSgxKSx0LnNldFpJbmRleE9mZnNldCgwKSx0aGlzLl9tYXAucmVtb3ZlTGF5ZXIodC5fc3BpZGVyTGVnKSxkZWxldGUgdC5fc3BpZGVyTGVnKX19KX0od2luZG93LGRvY3VtZW50KTs="></script>
<style type="text/css">code{white-space: pre;}</style>
<link href="data:text/css;charset=utf-8,pre%20%2Eoperator%2C%0Apre%20%2Eparen%20%7B%0Acolor%3A%20rgb%28104%2C%20118%2C%20135%29%0A%7D%0Apre%20%2Eliteral%20%7B%0Acolor%3A%20%23990073%0A%7D%0Apre%20%2Enumber%20%7B%0Acolor%3A%20%23099%3B%0A%7D%0Apre%20%2Ecomment%20%7B%0Acolor%3A%20%23998%3B%0Afont%2Dstyle%3A%20italic%0A%7D%0Apre%20%2Ekeyword%20%7B%0Acolor%3A%20%23900%3B%0Afont%2Dweight%3A%20bold%0A%7D%0Apre%20%2Eidentifier%20%7B%0Acolor%3A%20rgb%280%2C%200%2C%200%29%3B%0A%7D%0Apre%20%2Estring%20%7B%0Acolor%3A%20%23d14%3B%0A%7D%0A" rel="stylesheet" type="text/css" />
<script src="data:application/x-javascript;base64,CnZhciBobGpzPW5ldyBmdW5jdGlvbigpe2Z1bmN0aW9uIG0ocCl7cmV0dXJuIHAucmVwbGFjZSgvJi9nbSwiJmFtcDsiKS5yZXBsYWNlKC88L2dtLCImbHQ7Iil9ZnVuY3Rpb24gZihyLHEscCl7cmV0dXJuIFJlZ0V4cChxLCJtIisoci5jST8iaSI6IiIpKyhwPyJnIjoiIikpfWZ1bmN0aW9uIGIocil7Zm9yKHZhciBwPTA7cDxyLmNoaWxkTm9kZXMubGVuZ3RoO3ArKyl7dmFyIHE9ci5jaGlsZE5vZGVzW3BdO2lmKHEubm9kZU5hbWU9PSJDT0RFIil7cmV0dXJuIHF9aWYoIShxLm5vZGVUeXBlPT0zJiZxLm5vZGVWYWx1ZS5tYXRjaCgvXHMrLykpKXticmVha319fWZ1bmN0aW9uIGgodCxzKXt2YXIgcD0iIjtmb3IodmFyIHI9MDtyPHQuY2hpbGROb2Rlcy5sZW5ndGg7cisrKXtpZih0LmNoaWxkTm9kZXNbcl0ubm9kZVR5cGU9PTMpe3ZhciBxPXQuY2hpbGROb2Rlc1tyXS5ub2RlVmFsdWU7aWYocyl7cT1xLnJlcGxhY2UoL1xuL2csIiIpfXArPXF9ZWxzZXtpZih0LmNoaWxkTm9kZXNbcl0ubm9kZU5hbWU9PSJCUiIpe3ArPSJcbiJ9ZWxzZXtwKz1oKHQuY2hpbGROb2Rlc1tyXSl9fX1pZigvTVNJRSBbNjc4XS8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSl7cD1wLnJlcGxhY2UoL1xyL2csIlxuIil9cmV0dXJuIHB9ZnVuY3Rpb24gYShzKXt2YXIgcj1zLmNsYXNzTmFtZS5zcGxpdCgvXHMrLyk7cj1yLmNvbmNhdChzLnBhcmVudE5vZGUuY2xhc3NOYW1lLnNwbGl0KC9ccysvKSk7Zm9yKHZhciBxPTA7cTxyLmxlbmd0aDtxKyspe3ZhciBwPXJbcV0ucmVwbGFjZSgvXmxhbmd1YWdlLS8sIiIpO2lmKGVbcF0pe3JldHVybiBwfX19ZnVuY3Rpb24gYyhxKXt2YXIgcD1bXTsoZnVuY3Rpb24ocyx0KXtmb3IodmFyIHI9MDtyPHMuY2hpbGROb2Rlcy5sZW5ndGg7cisrKXtpZihzLmNoaWxkTm9kZXNbcl0ubm9kZVR5cGU9PTMpe3QrPXMuY2hpbGROb2Rlc1tyXS5ub2RlVmFsdWUubGVuZ3RofWVsc2V7aWYocy5jaGlsZE5vZGVzW3JdLm5vZGVOYW1lPT0iQlIiKXt0Kz0xfWVsc2V7aWYocy5jaGlsZE5vZGVzW3JdLm5vZGVUeXBlPT0xKXtwLnB1c2goe2V2ZW50OiJzdGFydCIsb2Zmc2V0OnQsbm9kZTpzLmNoaWxkTm9kZXNbcl19KTt0PWFyZ3VtZW50cy5jYWxsZWUocy5jaGlsZE5vZGVzW3JdLHQpO3AucHVzaCh7ZXZlbnQ6InN0b3AiLG9mZnNldDp0LG5vZGU6cy5jaGlsZE5vZGVzW3JdfSl9fX19cmV0dXJuIHR9KShxLDApO3JldHVybiBwfWZ1bmN0aW9uIGsoeSx3LHgpe3ZhciBxPTA7dmFyIHo9IiI7dmFyIHM9W107ZnVuY3Rpb24gdSgpe2lmKHkubGVuZ3RoJiZ3Lmxlbmd0aCl7aWYoeVswXS5vZmZzZXQhPXdbMF0ub2Zmc2V0KXtyZXR1cm4oeVswXS5vZmZzZXQ8d1swXS5vZmZzZXQpP3k6d31lbHNle3JldHVybiB3WzBdLmV2ZW50PT0ic3RhcnQiP3k6d319ZWxzZXtyZXR1cm4geS5sZW5ndGg/eTp3fX1mdW5jdGlvbiB0KEQpe3ZhciBBPSI8IitELm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7Zm9yKHZhciBCPTA7QjxELmF0dHJpYnV0ZXMubGVuZ3RoO0IrKyl7dmFyIEM9RC5hdHRyaWJ1dGVzW0JdO0ErPSIgIitDLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7aWYoQy52YWx1ZSE9PXVuZGVmaW5lZCYmQy52YWx1ZSE9PWZhbHNlJiZDLnZhbHVlIT09bnVsbCl7QSs9Jz0iJyttKEMudmFsdWUpKyciJ319cmV0dXJuIEErIj4ifXdoaWxlKHkubGVuZ3RofHx3Lmxlbmd0aCl7dmFyIHY9dSgpLnNwbGljZSgwLDEpWzBdO3orPW0oeC5zdWJzdHIocSx2Lm9mZnNldC1xKSk7cT12Lm9mZnNldDtpZih2LmV2ZW50PT0ic3RhcnQiKXt6Kz10KHYubm9kZSk7cy5wdXNoKHYubm9kZSl9ZWxzZXtpZih2LmV2ZW50PT0ic3RvcCIpe3ZhciBwLHI9cy5sZW5ndGg7ZG97ci0tO3A9c1tyXTt6Kz0oIjwvIitwLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkrIj4iKX13aGlsZShwIT12Lm5vZGUpO3Muc3BsaWNlKHIsMSk7d2hpbGUocjxzLmxlbmd0aCl7eis9dChzW3JdKTtyKyt9fX19cmV0dXJuIHorbSh4LnN1YnN0cihxKSl9ZnVuY3Rpb24gaigpe2Z1bmN0aW9uIHEoeCx5LHYpe2lmKHguY29tcGlsZWQpe3JldHVybn12YXIgdTt2YXIgcz1bXTtpZih4Lmspe3gubFI9Zih5LHgubHx8aGxqcy5JUix0cnVlKTtmb3IodmFyIHcgaW4geC5rKXtpZigheC5rLmhhc093blByb3BlcnR5KHcpKXtjb250aW51ZX1pZih4Lmtbd10gaW5zdGFuY2VvZiBPYmplY3Qpe3U9eC5rW3ddfWVsc2V7dT14Lms7dz0ia2V5d29yZCJ9Zm9yKHZhciByIGluIHUpe2lmKCF1Lmhhc093blByb3BlcnR5KHIpKXtjb250aW51ZX14Lmtbcl09W3csdVtyXV07cy5wdXNoKHIpfX19aWYoIXYpe2lmKHguYldLKXt4LmI9IlxcYigiK3Muam9pbigifCIpKyIpXFxzIn14LmJSPWYoeSx4LmI/eC5iOiJcXEJ8XFxiIik7aWYoIXguZSYmIXguZVcpe3guZT0iXFxCfFxcYiJ9aWYoeC5lKXt4LmVSPWYoeSx4LmUpfX1pZih4Lmkpe3guaVI9Zih5LHguaSl9aWYoeC5yPT09dW5kZWZpbmVkKXt4LnI9MX1pZigheC5jKXt4LmM9W119eC5jb21waWxlZD10cnVlO2Zvcih2YXIgdD0wO3Q8eC5jLmxlbmd0aDt0Kyspe2lmKHguY1t0XT09InNlbGYiKXt4LmNbdF09eH1xKHguY1t0XSx5LGZhbHNlKX1pZih4LnN0YXJ0cyl7cSh4LnN0YXJ0cyx5LGZhbHNlKX19Zm9yKHZhciBwIGluIGUpe2lmKCFlLmhhc093blByb3BlcnR5KHApKXtjb250aW51ZX1xKGVbcF0uZE0sZVtwXSx0cnVlKX19ZnVuY3Rpb24gZChCLEMpe2lmKCFqLmNhbGxlZCl7aigpO2ouY2FsbGVkPXRydWV9ZnVuY3Rpb24gcShyLE0pe2Zvcih2YXIgTD0wO0w8TS5jLmxlbmd0aDtMKyspe2lmKChNLmNbTF0uYlIuZXhlYyhyKXx8W251bGxdKVswXT09cil7cmV0dXJuIE0uY1tMXX19fWZ1bmN0aW9uIHYoTCxyKXtpZihEW0xdLmUmJkRbTF0uZVIudGVzdChyKSl7cmV0dXJuIDF9aWYoRFtMXS5lVyl7dmFyIE09dihMLTEscik7cmV0dXJuIE0/TSsxOjB9cmV0dXJuIDB9ZnVuY3Rpb24gdyhyLEwpe3JldHVybiBMLmkmJkwuaVIudGVzdChyKX1mdW5jdGlvbiBLKE4sTyl7dmFyIE09W107Zm9yKHZhciBMPTA7TDxOLmMubGVuZ3RoO0wrKyl7TS5wdXNoKE4uY1tMXS5iKX12YXIgcj1ELmxlbmd0aC0xO2Rve2lmKERbcl0uZSl7TS5wdXNoKERbcl0uZSl9ci0tfXdoaWxlKERbcisxXS5lVyk7aWYoTi5pKXtNLnB1c2goTi5pKX1yZXR1cm4gZihPLE0uam9pbigifCIpLHRydWUpfWZ1bmN0aW9uIHAoTSxMKXt2YXIgTj1EW0QubGVuZ3RoLTFdO2lmKCFOLnQpe04udD1LKE4sRSl9Ti50Lmxhc3RJbmRleD1MO3ZhciByPU4udC5leGVjKE0pO3JldHVybiByP1tNLnN1YnN0cihMLHIuaW5kZXgtTCksclswXSxmYWxzZV06W00uc3Vic3RyKEwpLCIiLHRydWVdfWZ1bmN0aW9uIHooTixyKXt2YXIgTD1FLmNJP3JbMF0udG9Mb3dlckNhc2UoKTpyWzBdO3ZhciBNPU4ua1tMXTtpZihNJiZNIGluc3RhbmNlb2YgQXJyYXkpe3JldHVybiBNfXJldHVybiBmYWxzZX1mdW5jdGlvbiBGKEwsUCl7TD1tKEwpO2lmKCFQLmspe3JldHVybiBMfXZhciByPSIiO3ZhciBPPTA7UC5sUi5sYXN0SW5kZXg9MDt2YXIgTT1QLmxSLmV4ZWMoTCk7d2hpbGUoTSl7cis9TC5zdWJzdHIoTyxNLmluZGV4LU8pO3ZhciBOPXooUCxNKTtpZihOKXt4Kz1OWzFdO3IrPSc8c3BhbiBjbGFzcz0iJytOWzBdKyciPicrTVswXSsiPC9zcGFuPiJ9ZWxzZXtyKz1NWzBdfU89UC5sUi5sYXN0SW5kZXg7TT1QLmxSLmV4ZWMoTCl9cmV0dXJuIHIrTC5zdWJzdHIoTyxMLmxlbmd0aC1PKX1mdW5jdGlvbiBKKEwsTSl7aWYoTS5zTCYmZVtNLnNMXSl7dmFyIHI9ZChNLnNMLEwpO3grPXIua2V5d29yZF9jb3VudDtyZXR1cm4gci52YWx1ZX1lbHNle3JldHVybiBGKEwsTSl9fWZ1bmN0aW9uIEkoTSxyKXt2YXIgTD1NLmNOPyc8c3BhbiBjbGFzcz0iJytNLmNOKyciPic6IiI7aWYoTS5yQil7eSs9TDtNLmJ1ZmZlcj0iIn1lbHNle2lmKE0uZUIpe3krPW0ocikrTDtNLmJ1ZmZlcj0iIn1lbHNle3krPUw7TS5idWZmZXI9cn19RC5wdXNoKE0pO0ErPU0ucn1mdW5jdGlvbiBHKE4sTSxRKXt2YXIgUj1EW0QubGVuZ3RoLTFdO2lmKFEpe3krPUooUi5idWZmZXIrTixSKTtyZXR1cm4gZmFsc2V9dmFyIFA9cShNLFIpO2lmKFApe3krPUooUi5idWZmZXIrTixSKTtJKFAsTSk7cmV0dXJuIFAuckJ9dmFyIEw9dihELmxlbmd0aC0xLE0pO2lmKEwpe3ZhciBPPVIuY04/Ijwvc3Bhbj4iOiIiO2lmKFIuckUpe3krPUooUi5idWZmZXIrTixSKStPfWVsc2V7aWYoUi5lRSl7eSs9SihSLmJ1ZmZlcitOLFIpK08rbShNKX1lbHNle3krPUooUi5idWZmZXIrTitNLFIpK099fXdoaWxlKEw+MSl7Tz1EW0QubGVuZ3RoLTJdLmNOPyI8L3NwYW4+IjoiIjt5Kz1PO0wtLTtELmxlbmd0aC0tfXZhciByPURbRC5sZW5ndGgtMV07RC5sZW5ndGgtLTtEW0QubGVuZ3RoLTFdLmJ1ZmZlcj0iIjtpZihyLnN0YXJ0cyl7SShyLnN0YXJ0cywiIil9cmV0dXJuIFIuckV9aWYodyhNLFIpKXt0aHJvdyJJbGxlZ2FsIn19dmFyIEU9ZVtCXTt2YXIgRD1bRS5kTV07dmFyIEE9MDt2YXIgeD0wO3ZhciB5PSIiO3RyeXt2YXIgcyx1PTA7RS5kTS5idWZmZXI9IiI7ZG97cz1wKEMsdSk7dmFyIHQ9RyhzWzBdLHNbMV0sc1syXSk7dSs9c1swXS5sZW5ndGg7aWYoIXQpe3UrPXNbMV0ubGVuZ3RofX13aGlsZSghc1syXSk7aWYoRC5sZW5ndGg+MSl7dGhyb3ciSWxsZWdhbCJ9cmV0dXJue3I6QSxrZXl3b3JkX2NvdW50OngsdmFsdWU6eX19Y2F0Y2goSCl7aWYoSD09IklsbGVnYWwiKXtyZXR1cm57cjowLGtleXdvcmRfY291bnQ6MCx2YWx1ZTptKEMpfX1lbHNle3Rocm93IEh9fX1mdW5jdGlvbiBnKHQpe3ZhciBwPXtrZXl3b3JkX2NvdW50OjAscjowLHZhbHVlOm0odCl9O3ZhciByPXA7Zm9yKHZhciBxIGluIGUpe2lmKCFlLmhhc093blByb3BlcnR5KHEpKXtjb250aW51ZX12YXIgcz1kKHEsdCk7cy5sYW5ndWFnZT1xO2lmKHMua2V5d29yZF9jb3VudCtzLnI+ci5rZXl3b3JkX2NvdW50K3Iucil7cj1zfWlmKHMua2V5d29yZF9jb3VudCtzLnI+cC5rZXl3b3JkX2NvdW50K3Aucil7cj1wO3A9c319aWYoci5sYW5ndWFnZSl7cC5zZWNvbmRfYmVzdD1yfXJldHVybiBwfWZ1bmN0aW9uIGkocixxLHApe2lmKHEpe3I9ci5yZXBsYWNlKC9eKCg8W14+XSs+fFx0KSspL2dtLGZ1bmN0aW9uKHQsdyx2LHUpe3JldHVybiB3LnJlcGxhY2UoL1x0L2cscSl9KX1pZihwKXtyPXIucmVwbGFjZSgvXG4vZywiPGJyPiIpfXJldHVybiByfWZ1bmN0aW9uIG4odCx3LHIpe3ZhciB4PWgodCxyKTt2YXIgdj1hKHQpO3ZhciB5LHM7aWYodil7eT1kKHYseCl9ZWxzZXtyZXR1cm59dmFyIHE9Yyh0KTtpZihxLmxlbmd0aCl7cz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJwcmUiKTtzLmlubmVySFRNTD15LnZhbHVlO3kudmFsdWU9ayhxLGMocykseCl9eS52YWx1ZT1pKHkudmFsdWUsdyxyKTt2YXIgdT10LmNsYXNzTmFtZTtpZighdS5tYXRjaCgiKFxcc3xeKShsYW5ndWFnZS0pPyIrdisiKFxcc3wkKSIpKXt1PXU/KHUrIiAiK3YpOnZ9aWYoL01TSUUgWzY3OF0vLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkmJnQudGFnTmFtZT09IkNPREUiJiZ0LnBhcmVudE5vZGUudGFnTmFtZT09IlBSRSIpe3M9dC5wYXJlbnROb2RlO3ZhciBwPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3AuaW5uZXJIVE1MPSI8cHJlPjxjb2RlPiIreS52YWx1ZSsiPC9jb2RlPjwvcHJlPiI7dD1wLmZpcnN0Q2hpbGQuZmlyc3RDaGlsZDtwLmZpcnN0Q2hpbGQuY049cy5jTjtzLnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKHAuZmlyc3RDaGlsZCxzKX1lbHNle3QuaW5uZXJIVE1MPXkudmFsdWV9dC5jbGFzc05hbWU9dTt0LnJlc3VsdD17bGFuZ3VhZ2U6dixrdzp5LmtleXdvcmRfY291bnQscmU6eS5yfTtpZih5LnNlY29uZF9iZXN0KXt0LnNlY29uZF9iZXN0PXtsYW5ndWFnZTp5LnNlY29uZF9iZXN0Lmxhbmd1YWdlLGt3Onkuc2Vjb25kX2Jlc3Qua2V5d29yZF9jb3VudCxyZTp5LnNlY29uZF9iZXN0LnJ9fX1mdW5jdGlvbiBvKCl7aWYoby5jYWxsZWQpe3JldHVybn1vLmNhbGxlZD10cnVlO3ZhciByPWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJwcmUiKTtmb3IodmFyIHA9MDtwPHIubGVuZ3RoO3ArKyl7dmFyIHE9YihyW3BdKTtpZihxKXtuKHEsaGxqcy50YWJSZXBsYWNlKX19fWZ1bmN0aW9uIGwoKXtpZih3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcil7d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLG8sZmFsc2UpO3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIixvLGZhbHNlKX1lbHNle2lmKHdpbmRvdy5hdHRhY2hFdmVudCl7d2luZG93LmF0dGFjaEV2ZW50KCJvbmxvYWQiLG8pfWVsc2V7d2luZG93Lm9ubG9hZD1vfX19dmFyIGU9e307dGhpcy5MQU5HVUFHRVM9ZTt0aGlzLmhpZ2hsaWdodD1kO3RoaXMuaGlnaGxpZ2h0QXV0bz1nO3RoaXMuZml4TWFya3VwPWk7dGhpcy5oaWdobGlnaHRCbG9jaz1uO3RoaXMuaW5pdEhpZ2hsaWdodGluZz1vO3RoaXMuaW5pdEhpZ2hsaWdodGluZ09uTG9hZD1sO3RoaXMuSVI9IlthLXpBLVpdW2EtekEtWjAtOV9dKiI7dGhpcy5VSVI9IlthLXpBLVpfXVthLXpBLVowLTlfXSoiO3RoaXMuTlI9IlxcYlxcZCsoXFwuXFxkKyk/Ijt0aGlzLkNOUj0iXFxiKDBbeFhdW2EtZkEtRjAtOV0rfChcXGQrKFxcLlxcZCopP3xcXC5cXGQrKShbZUVdWy0rXT9cXGQrKT8pIjt0aGlzLkJOUj0iXFxiKDBiWzAxXSspIjt0aGlzLlJTUj0iIXwhPXwhPT18JXwlPXwmfCYmfCY9fFxcKnxcXCo9fFxcK3xcXCs9fCx8XFwufC18LT18L3wvPXw6fDt8PHw8PHw8PD18PD18PXw9PXw9PT18Pnw+PXw+Pnw+Pj18Pj4+fD4+Pj18XFw/fFxcW3xcXHt8XFwofFxcXnxcXF49fFxcfHxcXHw9fFxcfFxcfHx+Ijt0aGlzLkVSPSIoPyFbXFxzXFxTXSkiO3RoaXMuQkU9e2I6IlxcXFwuIixyOjB9O3RoaXMuQVNNPXtjTjoic3RyaW5nIixiOiInIixlOiInIixpOiJcXG4iLGM6W3RoaXMuQkVdLHI6MH07dGhpcy5RU009e2NOOiJzdHJpbmciLGI6JyInLGU6JyInLGk6IlxcbiIsYzpbdGhpcy5CRV0scjowfTt0aGlzLkNMQ009e2NOOiJjb21tZW50IixiOiIvLyIsZToiJCJ9O3RoaXMuQ0JMQ0xNPXtjTjoiY29tbWVudCIsYjoiL1xcKiIsZToiXFwqLyJ9O3RoaXMuSENNPXtjTjoiY29tbWVudCIsYjoiIyIsZToiJCJ9O3RoaXMuTk09e2NOOiJudW1iZXIiLGI6dGhpcy5OUixyOjB9O3RoaXMuQ05NPXtjTjoibnVtYmVyIixiOnRoaXMuQ05SLHI6MH07dGhpcy5CTk09e2NOOiJudW1iZXIiLGI6dGhpcy5CTlIscjowfTt0aGlzLmluaGVyaXQ9ZnVuY3Rpb24ocixzKXt2YXIgcD17fTtmb3IodmFyIHEgaW4gcil7cFtxXT1yW3FdfWlmKHMpe2Zvcih2YXIgcSBpbiBzKXtwW3FdPXNbcV19fXJldHVybiBwfX0oKTtobGpzLkxBTkdVQUdFUy5jcHA9ZnVuY3Rpb24oKXt2YXIgYT17a2V5d29yZDp7ImZhbHNlIjoxLCJpbnQiOjEsImZsb2F0IjoxLCJ3aGlsZSI6MSwicHJpdmF0ZSI6MSwiY2hhciI6MSwiY2F0Y2giOjEsImV4cG9ydCI6MSx2aXJ0dWFsOjEsb3BlcmF0b3I6MixzaXplb2Y6MixkeW5hbWljX2Nhc3Q6Mix0eXBlZGVmOjIsY29uc3RfY2FzdDoyLCJjb25zdCI6MSxzdHJ1Y3Q6MSwiZm9yIjoxLHN0YXRpY19jYXN0OjIsdW5pb246MSxuYW1lc3BhY2U6MSx1bnNpZ25lZDoxLCJsb25nIjoxLCJ0aHJvdyI6MSwidm9sYXRpbGUiOjIsInN0YXRpYyI6MSwicHJvdGVjdGVkIjoxLGJvb2w6MSx0ZW1wbGF0ZToxLG11dGFibGU6MSwiaWYiOjEsInB1YmxpYyI6MSxmcmllbmQ6MiwiZG8iOjEsInJldHVybiI6MSwiZ290byI6MSxhdXRvOjEsInZvaWQiOjIsImVudW0iOjEsImVsc2UiOjEsImJyZWFrIjoxLCJuZXciOjEsZXh0ZXJuOjEsdXNpbmc6MSwidHJ1ZSI6MSwiY2xhc3MiOjEsYXNtOjEsImNhc2UiOjEsdHlwZWlkOjEsInNob3J0IjoxLHJlaW50ZXJwcmV0X2Nhc3Q6MiwiZGVmYXVsdCI6MSwiZG91YmxlIjoxLHJlZ2lzdGVyOjEsZXhwbGljaXQ6MSxzaWduZWQ6MSx0eXBlbmFtZToxLCJ0cnkiOjEsInRoaXMiOjEsInN3aXRjaCI6MSwiY29udGludWUiOjEsd2NoYXJfdDoxLGlubGluZToxLCJkZWxldGUiOjEsYWxpZ25vZjoxLGNoYXIxNl90OjEsY2hhcjMyX3Q6MSxjb25zdGV4cHI6MSxkZWNsdHlwZToxLG5vZXhjZXB0OjEsbnVsbHB0cjoxLHN0YXRpY19hc3NlcnQ6MSx0aHJlYWRfbG9jYWw6MSxyZXN0cmljdDoxLF9Cb29sOjEsY29tcGxleDoxfSxidWlsdF9pbjp7c3RkOjEsc3RyaW5nOjEsY2luOjEsY291dDoxLGNlcnI6MSxjbG9nOjEsc3RyaW5nc3RyZWFtOjEsaXN0cmluZ3N0cmVhbToxLG9zdHJpbmdzdHJlYW06MSxhdXRvX3B0cjoxLGRlcXVlOjEsbGlzdDoxLHF1ZXVlOjEsc3RhY2s6MSx2ZWN0b3I6MSxtYXA6MSxzZXQ6MSxiaXRzZXQ6MSxtdWx0aXNldDoxLG11bHRpbWFwOjEsdW5vcmRlcmVkX3NldDoxLHVub3JkZXJlZF9tYXA6MSx1bm9yZGVyZWRfbXVsdGlzZXQ6MSx1bm9yZGVyZWRfbXVsdGltYXA6MSxhcnJheToxLHNoYXJlZF9wdHI6MX19O3JldHVybntkTTp7azphLGk6IjwvIixjOltobGpzLkNMQ00saGxqcy5DQkxDTE0saGxqcy5RU00se2NOOiJzdHJpbmciLGI6IidcXFxcPy4iLGU6IiciLGk6Ii4ifSx7Y046Im51bWJlciIsYjoiXFxiKFxcZCsoXFwuXFxkKik/fFxcLlxcZCspKHV8VXxsfEx8dWx8VUx8ZnxGKSJ9LGhsanMuQ05NLHtjTjoicHJlcHJvY2Vzc29yIixiOiIjIixlOiIkIn0se2NOOiJzdGxfY29udGFpbmVyIixiOiJcXGIoZGVxdWV8bGlzdHxxdWV1ZXxzdGFja3x2ZWN0b3J8bWFwfHNldHxiaXRzZXR8bXVsdGlzZXR8bXVsdGltYXB8dW5vcmRlcmVkX21hcHx1bm9yZGVyZWRfc2V0fHVub3JkZXJlZF9tdWx0aXNldHx1bm9yZGVyZWRfbXVsdGltYXB8YXJyYXkpXFxzKjwiLGU6Ij4iLGs6YSxyOjEwLGM6WyJzZWxmIl19XX19fSgpO2hsanMuTEFOR1VBR0VTLnI9e2RNOntjOltobGpzLkhDTSx7Y046Im51bWJlciIsYjoiXFxiMFt4WF1bMC05YS1mQS1GXStbTGldP1xcYiIsZTpobGpzLklNTUVESUFURV9SRSxyOjB9LHtjTjoibnVtYmVyIixiOiJcXGJcXGQrKD86W2VFXVsrXFwtXT9cXGQqKT9MXFxiIixlOmhsanMuSU1NRURJQVRFX1JFLHI6MH0se2NOOiJudW1iZXIiLGI6IlxcYlxcZCtcXC4oPyFcXGQpKD86aVxcYik/IixlOmhsanMuSU1NRURJQVRFX1JFLHI6MX0se2NOOiJudW1iZXIiLGI6IlxcYlxcZCsoPzpcXC5cXGQqKT8oPzpbZUVdWytcXC1dP1xcZCopP2k/XFxiIixlOmhsanMuSU1NRURJQVRFX1JFLHI6MH0se2NOOiJudW1iZXIiLGI6IlxcLlxcZCsoPzpbZUVdWytcXC1dP1xcZCopP2k/XFxiIixlOmhsanMuSU1NRURJQVRFX1JFLHI6MX0se2NOOiJrZXl3b3JkIixiOiIoPzp0cnlDYXRjaHxsaWJyYXJ5fHNldEdlbmVyaWN8c2V0R3JvdXBHZW5lcmljKVxcYiIsZTpobGpzLklNTUVESUFURV9SRSxyOjEwfSx7Y046ImtleXdvcmQiLGI6IlxcLlxcLlxcLiIsZTpobGpzLklNTUVESUFURV9SRSxyOjEwfSx7Y046ImtleXdvcmQiLGI6IlxcLlxcLlxcZCsoPyFbXFx3Ll0pIixlOmhsanMuSU1NRURJQVRFX1JFLHI6MTB9LHtjTjoia2V5d29yZCIsYjoiXFxiKD86ZnVuY3Rpb24pIixlOmhsanMuSU1NRURJQVRFX1JFLHI6Mn0se2NOOiJrZXl3b3JkIixiOiIoPzppZnxpbnxicmVha3xuZXh0fHJlcGVhdHxlbHNlfGZvcnxyZXR1cm58c3dpdGNofHdoaWxlfHRyeXxzdG9wfHdhcm5pbmd8cmVxdWlyZXxhdHRhY2h8ZGV0YWNofHNvdXJjZXxzZXRNZXRob2R8c2V0Q2xhc3MpXFxiIixlOmhsanMuSU1NRURJQVRFX1JFLHI6MX0se2NOOiJsaXRlcmFsIixiOiIoPzpOQXxOQV9pbnRlZ2VyX3xOQV9yZWFsX3xOQV9jaGFyYWN0ZXJffE5BX2NvbXBsZXhfKVxcYiIsZTpobGpzLklNTUVESUFURV9SRSxyOjEwfSx7Y046ImxpdGVyYWwiLGI6Iig/Ok5VTEx8VFJVRXxGQUxTRXxUfEZ8SW5mfE5hTilcXGIiLGU6aGxqcy5JTU1FRElBVEVfUkUscjoxfSx7Y046ImlkZW50aWZpZXIiLGI6IlthLXpBLVouXVthLXpBLVowLTkuX10qXFxiIixlOmhsanMuSU1NRURJQVRFX1JFLHI6MH0se2NOOiJvcGVyYXRvciIsYjoiPFxcLSg/IVxccypcXGQpIixlOmhsanMuSU1NRURJQVRFX1JFLHI6Mn0se2NOOiJvcGVyYXRvciIsYjoiXFwtPnw8XFwtIixlOmhsanMuSU1NRURJQVRFX1JFLHI6MX0se2NOOiJvcGVyYXRvciIsYjoiJSV8fiIsZTpobGpzLklNTUVESUFURV9SRX0se2NOOiJvcGVyYXRvciIsYjoiPj18PD18PT18IT18XFx8XFx8fCYmfD18XFwrfFxcLXxcXCp8L3xcXF58Pnw8fCF8JnxcXHx8XFwkfDoiLGU6aGxqcy5JTU1FRElBVEVfUkUscjowfSx7Y046Im9wZXJhdG9yIixiOiIlIixlOiIlIixpOiJcXG4iLHI6MX0se2NOOiJpZGVudGlmaWVyIixiOiJgIixlOiJgIixyOjB9LHtjTjoic3RyaW5nIixiOiciJyxlOiciJyxjOltobGpzLkJFXSxyOjB9LHtjTjoic3RyaW5nIixiOiInIixlOiInIixjOltobGpzLkJFXSxyOjB9LHtjTjoicGFyZW4iLGI6IltbKHtcXF0pfV0iLGU6aGxqcy5JTU1FRElBVEVfUkUscjowfV19fTsKaGxqcy5pbml0SGlnaGxpZ2h0aW5nT25Mb2FkKCk7Cgo="></script>
<style type="text/css">
pre:not([class]) {
background-color: white;
}
</style>
<script type="text/javascript">
if (window.hljs && document.readyState && document.readyState === "complete") {
window.setTimeout(function() {
hljs.initHighlighting();
}, 0);
}
</script>
</head>
<body>
<p><div id="htmlwidget-4010" style="width:960px;height:768px;" class="leaflet"></div>
<script type="application/json" data-for="htmlwidget-4010">{"x":{"calls":[{"method":"addProviderTiles","args":["CartoDB.Positron",null,null,{"errorTileUrl":"","noWrap":false,"zIndex":null,"unloadInvisibleTiles":null,"updateWhenIdle":null,"detectRetina":false,"reuseTiles":false}]},{"method":"addMarkers","args":[[38.9048787828423,38.9123244966935,38.9123244966935,38.8987616906937,38.8951330487548,38.8972990459879,38.9274357918548,38.9088970908615,38.9123244966935,38.8956168421101,38.9123244966935,38.8987616906937,38.9059616936887,38.9543732722424,38.9123244966935,38.9548153114553,38.8987616906937,38.8987616906937,38.9123244966935,38.9543732722424,38.8956168421101,38.856865807933,38.9073984539871,38.9560332761835,38.8986274386105,38.9088970908615,38.9343447836364,38.9059616936887,38.9123244966935,38.9123244966935,38.8972990459879,38.9123244966935,38.9123244966935,38.9002078830843,38.8972990459879,38.8987616906937,38.9380302729804,38.8451625626788,38.8972990459879,38.9274357918548,38.9423807789324,38.8969781468093,38.9176468207859,38.8451625626788,38.9123244966935,38.8787837374735,38.8787837374735,38.9176468207859,38.8451625626788,38.8787837374735,38.8897716239952,38.9496847404464,38.9123244966935,38.9172327657757,38.9123244966935,38.9088970908615,38.8975384697838,38.9091097151723,38.8974849479842,38.9529675225183,38.9211010048957,38.9274357918548,38.8956168421101,38.9274357918548,38.9172327657757,38.9123244966935,38.8920895186923,38.9123244966935,38.8956168421101,38.9123244966935,38.9123244966935,38.9123244966935,38.8956168421101,38.8956168421101,38.9123244966935,38.8819955266047,38.9048787828423,38.8969781468093,38.9138938195312,38.8951330487548,38.9073984539871,38.8969781468093,38.8956168421101,38.9274357918548,38.9123244966935,38.9274357918548,38.8787837374735,38.9059616936887,38.8787837374735,38.8787837374735,38.8787837374735,38.8451625626788,38.8451625626788,38.8787837374735,38.8787837374735,38.8897509317986,38.8596570987135,38.8612799858582,38.9380302729804,38.8787837374735,38.8787837374735,38.9380302729804,38.89946796557,38.8787837374735,38.8787837374735,38.88596760224,38.9123244966935,38.8987616906937,38.8787837374735,38.9334379227543,38.8789687804984,38.8787837374735,38.9172327657757,38.8937876641359,38.8506842992464,38.8787837374735,38.9179768530971,38.9179768530971,38.8787837374735,38.8987616906937,38.8787837374735,38.9612590606149,38.8451625626788,38.9123244966935,38.8596570987135,38.9123244966935,38.9167108269599,38.8972756601301,38.9548153114553,38.8787837374735,38.8612799858582,38.9123244966935,38.8451625626788,38.9534955858599,38.8956168421101,38.9534955858599,38.8787837374735,38.8787837374735,38.89946796557,38.8789687804984,38.9138938195312,38.8451625626788,38.8451625626788,38.9179768530971,38.9380302729804,38.9088970908615,38.9179768530971,38.8873701401058,38.9088970908615,38.9274357918548,38.9123244966935,38.9123244966935,38.9123244966935,38.9546982353771,38.9059616936887,38.9123244966935,38.9123244966935,38.8956168421101,38.9496847404464,38.9274357918548,38.8920895186923,38.9423807789324,38.9123244966935,38.9053614777588,38.9172327657757,38.9123244966935,38.88596760224,38.8920895186923,38.8956168421101,38.9543732722424,38.8987616906937,38.8987616906937,38.9423807789324,38.9025284756572,38.9123244966935,38.9274357918548,38.8969781468093,38.9274357918548,38.9048787828423,38.9612590606149,38.9423807789324,38.9048787828423,38.9612590606149,38.9138938195312,38.9274357918548,38.9496847404464,38.9123244966935,38.9123244966935,38.9123244966935,38.9025284756572,38.9123244966935,38.9172327657757,38.9172327657757,38.9123244966935,38.9123244966935,38.8971529438227,38.9343447836364,38.8897716239952,38.8972990459879,38.8798055571672,38.9025284756572,38.9138938195312,38.9138938195312,38.9123244966935,38.9123244966935,38.8972990459879,38.8972990459879,38.8987616906937,38.8969781468093,38.9059616936887,38.8987616906937,38.9219902665064,38.9123244966935,38.9207909968505,38.9650593212956,38.9059616936887,38.9310584429509,38.9123244966935,38.9048787828423,38.9543732722424,38.9123244966935,38.8787837374735,38.8798055571672,38.8956168421101,38.8532973452793,38.8951330487548,38.8956168421101,38.8532973452793,38.8987616906937,38.9088970908615,38.8987616906937,38.8956168421101,38.8623686329774,38.9172327657757,38.9548153114553,38.9560332761835,38.9423807789324,38.8956168421101,38.8451625626788,38.8787837374735,38.8787837374735,38.8787837374735,38.8956168421101,38.8956168421101,38.9123244966935,38.9123244966935,38.9543732722424,38.9274357918548,38.8787837374735,38.9525347990541,38.9138938195312,38.9049086958732,38.8987616906937,38.9123244966935,38.8972990459879,38.9123244966935,38.8787837374735,38.8596570987135,38.9226607788422,38.8787837374735,38.9179768530971,38.8787837374735,38.9380302729804,38.8787837374735,38.8932990791349,38.9380302729804,38.9380302729804,38.8451625626788,38.8787837374735,38.9325341369399,38.8787837374735,38.8932990791349,38.8787837374735,38.9380302729804,38.8787837374735,38.8787837374735,38.9274357918548,38.8972990459879,38.9138938195312,38.9123244966935,38.9274357918548,38.8956168421101,38.9543732722424,38.9274357918548,38.8956168421101,38.8969781468093,38.9274357918548,38.8859812387595,38.9368844963957,38.9206702298887,38.9025284756572,38.8787837374735,38.9620419851044,38.9094129651739,38.8969781468093,38.9548153114553,38.8956168421101,38.8987616906937,38.8787837374735,38.8451625626788,38.9088970908615,38.9534955858599,38.8789687804984,38.8789687804984,38.9274357918548,38.9274357918548,38.8951330487548,38.8972990459879,38.9123244966935,38.9123244966935,38.9002078830843,38.9048787828423,38.9123244966935,38.9002078830843,38.8897716239952,38.8969781468093,38.9002078830843,38.9088970908615,38.9274357918548,38.9496847404464,38.8969781468093,38.9048787828423,38.8956168421101,38.9123244966935,38.9172864220298,38.9207909968505,38.9123244966935,38.9123244966935,38.9123244966935,38.8798055571672,38.9123244966935,38.9123244966935,38.9549014020557,38.9059616936887,38.9059616936887,38.9123244966935,38.9123244966935,38.931152542012,38.9612590606149,38.9002078830843,38.9048787828423,38.9002078830843,38.9059616936887,38.9059616936887,38.9013364406796,38.9423807789324,38.9123244966935,38.8875681102683,38.9127578485113,38.9123244966935,38.9123244966935,38.9123244966935,38.9274357918548,38.8956168421101,38.9123244966935,38.9138938195312,38.9543732722424,38.9138938195312,38.9059616936887,38.9059616936887,38.9138938195312,38.9543732722424,38.8972990459879,38.8972990459879,38.9543732722424,38.9543732722424,38.8972990459879,38.9363285015409,38.8972990459879,38.9059616936887,38.9543732722424,38.9138938195312,38.9543732722424,38.9138938195312,38.8972990459879,38.8972990459879,38.8972990459879,38.8972990459879,38.9138938195312,38.9059616936887,38.8972990459879,38.9274357918548,38.9085756249493,38.9048787828423,38.8969781468093,38.9123244966935,38.8969781468093,38.9123244966935,38.8787837374735,38.8969781468093,38.8897509317986,38.8637419949753,38.8920895186923,38.8451625626788,38.922291710748,38.8787837374735,38.9172327657757,38.8789687804984,38.8789687804984,38.8789687804984,38.9123244966935,38.89946796557,38.8956168421101,38.8787837374735,38.8789687804984,38.8451625626788,38.9179768530971,38.9176468207859,38.8451625626788,38.8787837374735,38.9334379227543,38.8789687804984,38.8787837374735,38.89946796557,38.9138938195312,38.9123244966935,38.8596570987135,38.8596570987135,38.8451625626788,38.8975384697838,38.8451625626788,38.8637419949753,38.9274357918548,38.8451625626788,38.9334379227543,38.9138938195312,38.8897509317986,38.916997788863,38.8787837374735,38.9610131375442,38.8612799858582,38.8787837374735,38.9380302729804,38.8787837374735,38.9123244966935,38.8451625626788,38.8451625626788,38.8787837374735,38.9123244966935,38.8451625626788,38.8787837374735,38.9274357918548,38.9274357918548,38.8920853941184,38.8972990459879,38.9179768530971,38.9138938195312,38.8975384697838,38.9363285015409,38.9193044050105,38.8451625626788,38.9138938195312,38.89946796557,38.8451625626788,38.8987616906937,38.8969781468093,38.9610173877836,38.9123244966935,38.9048787828423,38.8987616906937,38.9123244966935,38.9274357918548,38.8972990459879,38.8972990459879,38.8972990459879,38.9172098303319,38.9123244966935,38.9088970908615,38.9274357918548,38.8956168421101,38.9050231071001,38.8623686329774,38.8920853941184,38.9123244966935,38.9560332761835,38.8826925900271,38.9274357918548,38.9138938195312,38.9138938195312,38.9274357918548,38.9088970908615,38.8969781468093,38.9123244966935,38.8987616906937,38.9025284756572,38.9138938195312,38.8563332677474,38.9748636761015,38.9123244966935,38.9050231071001,38.9274357918548,38.8798055571672,38.9274357918548,38.8954695514153,38.8814911968901,38.8994998281087,38.9059616936887,38.9202541663323,38.9172864220298,38.9048787828423,38.9123244966935,38.924333603368,38.916997788863,38.9123244966935,38.9173286251987,38.9333543222086,38.8920895186923,38.8969781468093,38.9123244966935,38.9173286251987,38.9123244966935,38.9123244966935,38.9181143717234,38.9123244966935,38.916997788863,38.88596760224,38.8920853941184,38.9274357918548,38.9274357918548,38.8969781468093,38.9123244966935,38.9176468207859,38.9123244966935,38.9479060636855,38.9274357918548,38.9072372046002,38.8787837374735,38.9380302729804,38.8787837374735,38.8451625626788,38.9123244966935,38.9274357918548,38.9123244966935,38.9543732722424,38.8972990459879,38.9138938195312,38.8972990459879,38.9543732722424,38.9543732722424,38.8972990459879,38.8972990459879,38.9059616936887,38.9059616936887,38.9059616936887,38.9059616936887,38.9543732722424,38.9138938195312,38.933016971994,38.8972990459879,38.8972990459879,38.9059616936887,38.8972990459879,38.9543732722424,38.8972990459879,38.8787837374735,38.8789687804984,38.9050231071001,38.9334379227543,38.8787837374735,38.9048787828423,38.8789687804984,38.89946796557,38.922291710748,38.8532973452793,38.9123244966935,38.8987616906937,38.9274357918548,38.9123244966935,38.8787837374735,38.9248909438896,38.89946796557,38.8787837374735,38.8787837374735,38.8897509317986,38.9123244966935,38.9123244966935,38.8969781468093,38.9123244966935,38.9138938195312,38.8451625626788,38.8787837374735,38.8787837374735,38.8612799858582,38.8787837374735,38.8787837374735,38.9048787828423,38.9174665041885,38.9274357918548,38.9191832287402,38.8787837374735,38.8789687804984,38.8787837374735,38.8987616906937,38.9138938195312,38.8789687804984,38.89946796557,38.96099781581,38.8787837374735,38.8841739534294,38.9123244966935,38.9123244966935,38.9138938195312,38.8787837374735,38.8787837374735,38.8581915375577,38.9548153114553,38.9423807789324,38.8969781468093,38.9274357918548,38.9176468207859,38.8451625626788,38.8451625626788,38.9053608204999,38.8451625626788,38.8451625626788,38.8787837374735,38.8969781468093,38.8787837374735,38.8596570987135,38.8787837374735,38.9056459348207,38.931152542012,38.9123244966935,38.8987616906937,38.8987616906937,38.8814911968901,38.9056459348207,38.9181105671157,38.9073984539871,38.931152542012,38.9073984539871,38.8951330487548,38.9191832287402,38.9181105671157,38.9169975360113,38.9056459348207,38.9028992876415,38.9258149304166,38.9174665041885,38.8956168421101,38.8623686329774,38.8956168421101,38.9053614777588,38.9423807789324,38.8956168421101,38.9423807789324,38.9053614777588,38.8987616906937,38.8798055571672,38.9088970908615,38.8987616906937,38.8623686329774,38.8734635996299,38.9423807789324,38.9172327657757,38.9172327657757,38.8987616906937,38.8987616906937,38.8787837374735,38.8956168421101,38.8787837374735,38.8787837374735,38.9219902665064,38.8787837374735,38.9123244966935,38.9543732722424,38.8972990459879,38.9056558830484,38.8798055571672,38.9173464036399,38.9123244966935,38.9496847404464,38.9048787828423,38.9219902665064,38.9274357918548,38.9123244966935,38.9274357918548,38.9123244966935,38.9274357918548,38.8969781468093,38.9274357918548,38.9274357918548,38.9025284756572,38.9172327657757,38.8956168421101,38.8972990459879,38.9274357918548,38.9274357918548,38.9123244966935,38.9123244966935,38.9274357918548,38.9048787828423,38.9423807789324,38.9138938195312,38.8920853941184,38.8951330487548,38.8987616906937,38.9274357918548,38.8956168421101,38.9123244966935,38.9123244966935,38.8972990459879,38.9123244966935,38.9173286251987,38.9274357918548,38.9123244966935,38.8987616906937,38.9123244966935,38.9543732722424,38.9123244966935,38.9274357918548,38.9543732722424,38.9174665041885,38.9174665041885,38.9123244966935,38.9274357918548,38.9274357918548,38.8951330487548,38.9172327657757,38.9123244966935,38.9123244966935,38.9548153114553,38.9543732722424,38.8875662818655,38.9274357918548,38.9138938195312,38.8956168421101,38.9123244966935,38.9172327657757,38.9123244966935,38.8956168421101,38.9274357918548,38.8897716239952,38.8897716239952,38.8956168421101,38.9123244966935,38.8969781468093,38.8987616906937,38.8881779931825,38.9002010790206,38.8511767887563,38.9028992876415,38.9153792718149,38.9140857733731,38.9059616936887,38.9123244966935,38.9274357918548,38.9275289752518,38.8975384697838,38.9123244966935,38.9543732722424,38.9274357918548,38.9123244966935,38.9274357918548,38.9025309490657,38.9123244966935,38.9123244966935,38.910474300986,38.9053614777588,38.9173286251987,38.8623686329774,38.8969781468093,38.8956168421101,38.8787837374735,38.9732789556189,38.9170022241396,38.9170022241396,38.8972990459879,38.9123244966935,38.8897716239952,38.9274357918548,38.9123244966935,38.9138938195312,38.9274357918548,38.9123244966935,38.9274357918548,38.9281228998727,38.9088970908615,38.9048787828423,38.8956168421101,38.9088970908615,38.9123244966935,38.8972990459879,38.9073984539871,38.8969781468093,38.9138938195312,38.9274357918548,38.9123244966935,38.9543732722424,38.9078354324701,38.9153792718149,38.856865807933,38.9123244966935,38.8998094582513,38.9025921150259,38.8897716239952,38.9088970908615,38.9423807789324,38.88596760224,38.9274357918548,38.8987616906937,38.9123244966935,38.9274357918548,38.8787837374735,38.8787837374735,38.8787837374735,38.8451625626788,38.8787837374735,38.9179768530971,38.9235294962134,38.9048787828423,38.8734635996299,38.8451625626788,38.9056459348207,38.8875662818655,38.8787837374735,38.8451625626788,38.9048787828423,38.9166878688866,38.8787837374735,38.9176468207859,38.9179768530971,38.8789687804984,38.8787837374735,38.9059616936887,38.8436876904664,38.9181105671157,38.8897509317986,38.8956168421101,38.9179768530971,38.8972990459879,38.9048787828423,38.8956168421101,38.8787837374735,38.8787837374735,38.9123244966935,38.9123244966935,38.9123244966935,38.9274357918548,38.9274357918548,38.9123244966935,38.9123244966935,38.9560332761835,38.8969781468093,38.9274357918548,38.9123244966935,38.9048787828423,38.9123244966935,38.8920895186923,38.9610173877836,38.9048787828423,38.9060618656525,38.9123244966935,38.9123244966935,38.9123244966935,38.9274357918548,38.9423807789324,38.8987616906937,38.8969781468093,38.9123244966935,38.8987616906937,38.9423807789324,38.8969781468093,38.8969781468093,38.8969781468093,38.8972990459879,38.9123244966935,38.8969781468093,38.9123244966935,38.9048787828423,38.8798055571672,38.8897716239952,38.8798055571672,38.8798055571672,38.9123244966935,38.9048787828423,38.8969781468093,38.8972990459879,38.8969781468093,38.8987616906937,38.9274357918548,38.9029219562039,38.9123244966935,38.9548153114553,38.9048787828423,38.9543732722424,38.9274357918548,38.9025309490657,38.8798055571672,38.8987616906937,38.9138938195312,38.9173286251987,38.9123244966935,38.9027429445382,38.9073984539871,38.8798055571672,38.8734635996299,38.8798055571672,38.8984054126905,38.8734635996299,38.8798055571672,38.9088970908615,38.8875662818655,38.8972990459879,38.8532973452793,38.9543732722424,38.9123244966935,38.8969781468093,38.8972990459879,38.9088970908615,38.9123244966935,38.9048787828423,38.9123244966935,38.9048787828423,38.8951330487548,38.9274357918548,38.9002078830843,38.9612590606149,38.8987616906937,38.9274357918548,38.9123244966935,38.8969781468093,38.8969781468093,38.8972990459879,38.9123244966935,38.9123244966935,38.8956168421101,38.9123244966935,38.8987616906937,38.9123244966935,38.8969781468093,38.9423807789324,38.8972990459879,38.9174665041885,38.9065583355158,38.9123244966935,38.8798055571672,38.9123244966935,38.9123244966935,38.8920895186923,38.8987616906937,38.8987616906937,38.9543732722424,38.9172327657757,38.9274357918548,38.9548153114553,38.9025284756572,38.9123244966935,38.9620419851044,38.8787837374735,38.89946796557,38.8787837374735,38.8789687804984,38.8969781468093,38.8451625626788,38.9179768530971,38.9548153114553,38.8451625626788,38.8875662818655,38.8532973452793,38.9363285015409,38.9048787828423,38.9123244966935,38.9270570732987,38.8920964511682,38.9050646623938,38.9661334612224,38.9205880085796,38.9025259356559,38.8956168421101,38.9002078830843,38.8623686329774,38.89946796557,38.9048787828423,38.9496847404464,38.9423807789324,38.9053614777588,38.9048787828423,38.8969781468093,38.931152542012,38.9205880085796,38.8786534454243,38.8956168421101,38.9123244966935,38.9123244966935,38.9123244966935,38.9303072039819,38.8798055571672,38.8734635996299,38.8875662818655,38.9496847404464,38.9050231071001,38.9088970908615,38.9096691923862,38.9167391926651,38.9034536189501,38.933113202261,38.8956168421101,38.8798055571672,38.9073984539871,38.9064533116447,38.9123244966935,38.9173286251987,38.9274357918548,38.9123244966935,38.9123244966935,38.8956168421101,38.9274357918548,38.8956168421101,38.8956168421101,38.9123244966935,38.9123244966935,38.9496847404464,38.9048787828423,38.8864709639629,38.8897716239952,38.9219902665064,38.9053614777588,38.9351173413937,38.9543732722424,38.9025309490657,38.91572541709,38.8532973452793,38.88596760224,38.9188724630091,38.9302307723003,38.8956168421101,38.9123244966935,38.8532973452793,38.9123244966935,38.9496847404464,38.9548153114553,38.9088914377954,38.9521866665848,38.9758076717282,38.931152542012,38.9543732722424,38.9123244966935,38.8956168421101,38.8956168421101,38.9612590606149,38.9123244966935,38.9002078830843,38.9123244966935,38.8987616906937,38.9123244966935,38.9123244966935,38.9123244966935,38.9274357918548,38.9123244966935,38.8875662818655,38.8511767887563,38.9059616936887,38.9423807789324,38.9123244966935,38.8969781468093,38.8987616906937,38.8987616906937,38.8787837374735,38.8787837374735,38.8787837374735,38.8956168421101,38.8451625626788,38.9334379227543,38.8789687804984,38.8451625626788,38.8956168421101,38.9088970908615,38.9053614777588,38.8623686329774,38.8532973452793,38.9053614777588,38.9053614777588,38.8951330487548,38.8987616906937,38.9088970908615,38.8956168421101,38.8787837374735,38.8451625626788,38.8987616906937,38.8787837374735,38.8987616906937,38.8612799858582,38.8789687804984,38.8787837374735,38.9334379227543,38.8787837374735,38.8787837374735,38.8612799858582,38.8787837374735,38.8787837374735,38.8787837374735,38.9336443016693,38.9274357918548,38.9138938195312,38.8897716239952,38.8532973452793,38.9123244966935,38.8956168421101,38.9274357918548,38.9123244966935,38.9496847404464,38.9496847404464,38.8987616906937,38.8972990459879,38.9265590949809,38.9052651705959,38.9059616936887,38.9123244966935,38.9173286251987,38.8972990459879,38.8972990459879,38.9219902665064,38.9123244966935,38.8969781468093,38.9073984539871,38.8972990459879,38.9138938195312,38.9274357918548,38.9172327657757,38.9123244966935,38.9138938195312,38.9123244966935,38.9496847404464,38.9138938195312,38.9025250732631,38.8920853941184,38.8734635996299,38.9173286251987,38.9543732722424,38.9274357918548,38.9123244966935,38.9274357918548,38.9123244966935,38.9123244966935,38.9548153114553,38.9219902665064,38.8975384697838,38.9380302729804,38.8787837374735,38.8451625626788,38.8787837374735,38.89946796557,38.8789687804984,38.9172327657757,38.8897716239952,38.8972990459879,38.8451625626788,38.8787837374735,38.9048787828423,38.9172327657757,38.8787837374735,38.89946796557,38.9179768530971,38.8787837374735,38.8451625626788,38.8451625626788,38.9543732722424,38.9365820549103,38.8787837374735,38.9123244966935,38.9590298407585,38.9440418463209,38.8451625626788,38.8787837374735,38.8787837374735,38.8612799858582,38.8787837374735,38.9087731521528,38.8612799858582,38.8787837374735,38.89946796557,38.8787837374735,38.9059616936887,38.9620419851044,38.9123244966935,38.8787837374735,38.8787837374735,38.8787837374735,38.9179768530971,38.8972990459879,38.9248909438896,38.8596570987135,38.9123244966935,38.88596760224,38.9048787828423,38.89946796557,38.89946796557,38.89946796557,38.9543732722424,38.89946796557,38.9138938195312,38.9059616936887,38.89946796557,38.9543732722424,38.9303437890347,38.8764808713658,38.9543732722424,38.9138938195312,38.89946796557,38.8972990459879,38.89946796557,38.9543732722424,38.9138938195312,38.9138938195312,38.9138938195312,38.8972990459879,38.89946796557,38.9059616936887,38.9059616936887,38.89946796557,38.8972990459879,38.9138938195312,38.9059616936887,38.9543732722424,38.9262723307205,38.8920932091134,38.931152542012,38.9260087608615,38.8814911968901,38.9543732722424,38.9138938195312,38.9059616936887,38.9138938195312,38.9138938195312,38.9543732722424,38.8972990459879,38.9059616936887,38.9523350777908,38.9059616936887,38.9138938195312,38.9138938195312,38.9543732722424,38.9138938195312,38.9059616936887,38.9543732722424,38.9138938195312,38.9543732722424,38.9138938195312,38.9138938195312,38.8972990459879,38.9543732722424,38.9059616936887,38.8972990459879,38.9138938195312,38.8972990459879,38.9059616936887,38.9059616936887,38.9059616936887,38.9138938195312,38.9059616936887,38.9138938195312,38.8972990459879,38.9138938195312,38.9138938195312,38.8764808713658,38.9138938195312,38.9543732722424,38.9059616936887,38.9059616936887,38.8972990459879,38.9138938195312,38.8972990459879,38.8972990459879,38.8972990459879,38.9543732722424,38.8975384697838,38.9219902665064,38.9612590606149,38.9365820549103,38.8637419949753,38.9176468207859,38.8787837374735,38.8764808713658,38.8787837374735,38.8787837374735,38.8764808713658,38.9179768530971,38.9048787828423,38.8789687804984,38.8897509317986,38.9123244966935,38.8787837374735,38.89946796557,38.9365820549103,38.8789687804984,38.9534955858599,38.8787837374735,38.8787837374735,38.9334379227543,38.8451625626788,38.8953984889015,38.8789687804984,38.8956168421101,38.9191832287402,38.9108923246445,38.8672656504225,38.9335961274498,38.8787837374735,38.923158966869,38.8814911968901,38.88596760224,38.8734635996299,38.8987616906937,38.8969781468093,38.9138938195312,38.9002078830843,38.9025284756572,38.8987616906937,38.9543732722424,38.9274357918548,38.9048787828423,38.8956168421101,38.8956168421101,38.8956168421101,38.9274357918548,38.9123244966935,38.8836017731937,38.9423807789324,38.9548153114553,38.9123244966935,38.8469203814646,38.9123244966935,38.8897716239952,38.9123244966935,38.9123244966935,38.9048787828423,38.9088027982425,38.9123244966935,38.8970551363322,38.8675194699985,38.9030119461731,38.9274357918548,38.9123244966935,38.9123244966935,38.9274357918548,38.9000122638041,38.9123244966935,38.9123244966935,38.8969781468093,38.9274357918548,38.9274357918548,38.9123244966935,38.9113857031757,38.922159399572,38.9123244966935,38.9123244966935,38.9048787828423,38.9274357918548,38.9123244966935,38.8972990459879,38.8451625626788,38.8623686329774,38.8787837374735,38.8451625626788,38.8764808713658,38.8451625626788,38.9380302729804,38.89946796557,38.9048787828423,38.9087731521528,38.8787837374735,38.8787837374735,38.9393211694272,38.8787837374735,38.8920853941184,38.9543732722424,38.89946796557,38.8789687804984,38.9123244966935,38.9123244966935,38.9543732722424,38.8956168421101,38.8563332677474,38.9059616936887,38.8789687804984,38.8897499259629,38.9123244966935,38.9123244966935,38.8972990459879,38.9138938195312,38.9059616936887,38.8451625626788,38.9176468207859,38.8451625626788,38.9123244966935,38.8451625626788,38.8975384697838,38.89946796557,38.9334379227543,38.8787837374735,38.8987616906937,38.9543732722424,38.9179768530971,38.8798055571672,38.8787837374735,38.89946796557,38.922291710748,38.8897499259629,38.8787837374735,38.8787837374735,38.8612799858582,38.8787837374735,38.9248909438896,38.8787837374735,38.9380302729804,38.9123244966935,38.8451625626788,38.8451625626788,38.9334379227543,38.8787837374735,38.9274357918548,38.8956168421101,38.9274357918548,38.8787837374735,38.8787837374735,38.8987616906937,38.9219902665064,38.9123244966935,38.9123244966935,38.9123244966935,38.8451625626788,38.9179768530971,38.9173286251987,38.9048787828423,38.9048787828423,38.9025284756572,38.8987616906937,38.8612799858582,38.8787837374735,38.8787837374735,38.8787837374735,38.8787837374735,38.9274357918548,38.8451625626788,38.9176468207859,38.9088970908615,38.8798055571672,38.9496847404464,38.8798055571672,38.9334379227543,38.8789687804984,38.8612799858582,38.8451625626788,38.9088970908615,38.9548153114553,38.8787837374735,38.8787837374735,38.8787837374735,38.8787837374735,38.8787837374735,38.8787837374735,38.8787837374735,38.8787837374735,38.8787837374735,38.8956168421101,38.8787837374735,38.8787837374735,38.8787837374735,38.8987616906937,38.8787837374735,38.8451625626788,38.8987616906937,38.9496847404464,38.8972990459879,38.9612590606149,38.8969781468093,38.9123244966935,38.9138938195312,38.9274357918548,38.9123244966935,38.8987616906937,38.9123244966935,38.9123244966935,38.8956168421101,38.8972990459879,38.9496847404464,38.8823253776639,38.8451625626788,38.9172327657757,38.9123244966935,38.9123244966935,38.8798023705547,38.8984836706253,38.9123244966935,38.8987616906937,38.9138938195312,38.9123244966935,38.9274357918548,38.9123244966935,38.9123244966935,38.9172327657757,38.916997788863,38.9123244966935,38.9123244966935,38.9048787828423,38.8734635996299,38.91572541709,38.9548153114553,38.9123244966935,38.9123244966935,38.9138938195312,38.9173286251987,38.9543732722424,38.9123244966935,38.8987616906937,38.9123244966935,38.9123244966935,38.9274357918548,38.9123244966935,38.8987616906937,38.9123244966935,38.9274357918548,38.8987616906937,38.9388405939449,38.91572541709,38.9176468207859,38.9025309490657,38.9025250732631,38.9123244966935,38.9274357918548,38.9138938195312,38.9123244966935,38.9048787828423,38.9048787828423,38.9123244966935,38.9025284756572,38.88596760224,38.8920895186923,38.8451625626788,38.9026550017341,38.8972990459879,38.8956168421101,38.9123244966935,38.8969781468093,38.8956168421101,38.8987616906937,38.8987616906937,38.9123244966935,38.9123244966935,38.8451625626788,38.8789687804984,38.8789687804984,38.9365820549103,38.9123244966935,38.8956168421101,38.9176468207859,38.8972990459879,38.8956168421101,38.8789687804984,38.9173286251987,38.9123244966935,38.8897716239952,38.8789687804984,38.9334379227543,38.8987616906937,38.8956168421101,38.9123244966935,38.9048787828423,38.9123244966935,38.9088970908615,38.8969781468093,38.9123244966935,38.9123244966935,38.9123244966935,38.9548153114553,38.9112611390194,38.9274357918548,38.9274357918548,38.9123244966935,38.9274357918548,38.9123244966935,38.9123244966935,38.9274357918548,38.8645477743951,38.9199923108837,38.9736097709123,38.9064503522182,38.8969781468093,38.9138938195312,38.9543732722424,38.9543732722424,38.8987616906937,38.8972990459879,38.9548153114553,38.8969781468093,38.9013175028784,38.8956168421101,38.8637419949753,38.9274357918548,38.9138938195312,38.8798055571672,38.9123244966935,38.9274357918548,38.9123244966935,38.8956168421101,38.9043036675217,38.8798055571672,38.9423807789324,38.9088970908615,38.8920895186923,38.9123244966935,38.9123244966935,38.9048787828423,38.9274357918548,38.9025259607955,38.9138938195312,38.8798055571672,38.8969781468093,38.9123244966935,38.8956168421101,38.9423807789324,38.8920895186923,38.9173286251987,38.9610173877836,38.8956695758522,38.9073984539871,38.8798055571672,38.8969781468093,38.9485287837122,38.9059616936887,38.9543732722424,38.8972990459879,38.9123244966935,38.8987616906937,38.9123244966935,38.9123244966935,38.9048787828423,38.8897499259629,38.9274357918548,38.8987616906937,38.9274357918548,38.9123244966935,38.9543732722424,38.9560332761835,38.8787837374735,38.8451625626788,38.8787837374735,38.8787837374735,38.8789687804984,38.8787837374735,38.8451625626788,38.9179768530971,38.8787837374735,38.9048787828423,38.8787837374735,38.9380302729804,38.9380302729804,38.89946796557,38.8787837374735,38.8787837374735,38.8787837374735,38.8596570987135,38.8787837374735,38.9274357918548,38.9274357918548,38.9610131375442,38.9123244966935,38.9123244966935,38.8987616906937,38.9123244966935,38.8787837374735,38.9393211694272,38.9138938195312,38.9543732722424,38.8787837374735,38.922291710748,38.8987616906937,38.9274357918548,38.9123244966935,38.8956168421101,38.9179768530971,38.9123244966935,38.9176468207859,38.9179768530971,38.9610131375442,38.9496847404464,38.8972990459879,38.8787837374735,38.8451625626788,38.9274357918548,38.9534955858599,38.8612799858582,38.8787837374735,38.8789687804984,38.8798055571672,38.8787837374735,38.8451625626788,38.8787837374735,38.9534955858599,38.8969781468093,38.8787837374735,38.9173286251987,38.8875662818655,38.9123244966935,38.8451625626788,38.89946796557,38.8787837374735,38.8956168421101,38.8798055571672,38.9146974006459,38.9123244966935,38.9123244966935,38.9274357918548,38.9529625133808,38.9223290813599,38.9048787828423,38.9025284756572,38.9548153114553,38.9138938195312,38.9123244966935,38.8956168421101,38.8956168421101,38.9532164963991,38.9123244966935,38.8956168421101,38.8956168421101,38.9123244966935,38.8956168421101,38.9543732722424,38.9335424923867,38.9274357918548,38.8596570987135,38.8641957516516,38.8798611710601,38.9028321511955,38.9123244966935,38.8969781468093,38.8596570987135,38.8969781468093,38.8787837374735,38.9179768530971,38.9534955858599,38.8787837374735,38.8789687804984,38.9534955858599,38.9235294962134,38.9334379227543,38.8787837374735,38.9274357918548,38.8451625626788,38.9053614777588,38.9173286251987,38.9138938195312,38.89946796557,38.9423807789324,38.8789687804984,38.8787837374735,38.8787837374735,38.922291710748,38.9123244966935,38.8789687804984,38.8987616906937,38.88596760224,38.9172327657757,38.9334379227543,38.9365820549103,38.9123244966935,38.8572758574131,38.9335961274498,38.9479092542275,38.8798055571672,38.9612590606149,38.8787837374735,38.9123244966935,38.9123244966935,38.8956168421101,38.8787837374735,38.9123244966935,38.8798055571672,38.8920853941184,38.8897509317986,38.8787837374735,38.8787837374735,38.8920895186923,38.8789687804984,38.9496847404464,38.8798055571672,38.9123244966935,38.8637419949753,38.8789687804984,38.9235294962134,38.9123244966935,38.9179768530971,38.89946796557,38.9048787828423,38.8969781468093,38.8451625626788,38.8789687804984,38.9274357918548,38.9123244966935,38.9286873734321,38.91572541709,38.8972990459879,38.9123244966935,38.8787837374735,38.9123244966935,38.9274357918548,38.9123244966935,38.8920853941184,38.9219902665064,38.9620419851044,38.9123244966935,38.9138938195312,38.8969781468093,38.9123244966935,38.9274357918548,38.8972990459879,38.9274357918548,38.8875662818655,38.8956168421101,38.9172327657757,38.9274357918548,38.9172327657757,38.9548153114553,38.9048787828423,38.8831037937851,38.8837330471257,38.8972990459879,38.8956168421101,38.9138938195312,38.9168683740807,38.9574669365081,38.9059616936887,38.8951330487548,38.9048787828423,38.9123244966935,38.9123244966935,38.9235971760982,38.912842388618,38.9343212833728,38.8836561337461,38.9050231071001,38.9123244966935,38.9123244966935,38.9274357918548,38.9274357918548,38.9260087608615,38.8831954661573,38.8897716239952,38.8637419949753,38.9173286251987,38.9138938195312,38.8920895186923,38.91572541709,38.8897716239952,38.8798055571672,38.8920895186923,38.9548153114553,38.9123244966935,38.9423807789324,38.8623686329774,38.9123244966935,38.9048787828423,38.9123244966935,38.9274357918548,38.9123244966935,38.8623686329774,38.8814911968901,38.8564559602009,38.9034111886349,38.9025942452258,38.9525347990541,38.9025309490657,38.9059616936887,38.9123244966935,38.9274357918548,38.9123244966935,38.9560332761835,38.9123244966935,38.9123244966935,38.8920895186923,38.9548153114553,38.9059616936887,38.9496847404464,38.9548153114553,38.9543732722424,38.9423807789324,38.88596760224,38.9123244966935,38.9123244966935,38.8956168421101,38.9123244966935,38.8798055571672,38.9123244966935,38.9546982353771,38.9085311504949,38.8675194699985,38.8814911968901,38.9542797553619,38.9123244966935,38.8956168421101,38.9123244966935,38.8987616906937,38.9088970908615,38.9123244966935,38.9123244966935,38.9123244966935,38.9002078830843,38.9293004360212,38.9164639810704,38.9048787828423,38.9073984539871,38.8734635996299,38.9123244966935,38.8956168421101,38.8969781468093,38.9274357918548,38.885504195854,38.9543732722424,38.9274357918548,38.9123244966935,38.8969781468093,38.8972990459879,38.9172327657757,38.9138938195312,38.8798055571672,38.9496847404464,38.9123244966935,38.9098515112244,38.8814911968901,38.9467567951599,38.8831954661573,38.8784712129186,38.8675194699985,38.9172327657757,38.9138938195312,38.8675194699985,38.8987616906937,38.8987616906937,38.9543732722424,38.9274357918548,38.9274357918548,38.9274357918548,38.9123244966935,38.9138938195312,38.8969781468093,38.9423807789324,38.9219902665064,38.9123244966935,38.9123244966935,38.9386841788167,38.8798055571672,38.8969781468093,38.9123244966935,38.9548153114553,38.8972990459879,38.8767873235687,38.9736035715166,38.9274357918548,38.9123244966935,38.9123244966935,38.9138938195312,38.9138938195312,38.9138938195312,38.9123244966935,38.9274357918548,38.9123244966935,38.9172327657757,38.9123244966935,38.9138938195312,38.8956168421101,38.8956168421101,38.9048787828423,38.8987616906937,38.9123244966935,38.9088970908615,38.8982306899315,38.9123244966935,38.8798055571672,38.9138938195312,38.8972990459879,38.9496847404464,38.9543732722424,38.8972990459879,38.9048787828423,38.9123244966935,38.8969781468093,38.9059616936887,38.9172327657757,38.8956168421101,38.8920895186923,38.9123244966935,38.9123244966935,38.9543732722424,38.9123244966935,38.9123244966935,38.9442756438073,38.9127514757863,38.924755448085,38.9085311504949,38.9059616936887,38.9059616936887,38.9274357918548,38.9123244966935,38.9123244966935,38.8623686329774,38.9050231071001,38.8798055571672,38.9123244966935,38.9274357918548,38.8987616906937,38.8987616906937,38.9274357918548,38.9274357918548,38.9286873734321,38.8921011457115,38.9088970908615,38.9129690021693,38.8256258409044,38.9048787828423,38.9123244966935,38.9274357918548,38.9123244966935,38.9187674106345,38.8928010048644,38.8972990459879,38.9088970908615,38.9123244966935,38.8572758574131,38.9028992876415,38.9123244966935,38.8987616906937,38.9123244966935,38.9225453722466,38.9274357918548,38.8972990459879,38.9123244966935,38.9496847404464,38.8987616906937,38.88596760224,38.9088970908615,38.9423807789324,38.9088970908615,38.8969781468093,38.9123244966935,38.9138938195312,38.8956168421101,38.9123244966935,38.9219902665064,38.9274357918548,38.8956168421101,38.8787837374735,38.9610131375442,38.8969781468093,38.9334379227543,38.8951330487548,38.8451625626788,38.8956168421101,38.9172327657757,38.8612799858582,38.9548153114553,38.8734635996299,38.8787837374735,38.8787837374735,38.8787837374735,38.9088970908615,38.9365820549103,38.8787837374735,38.8623686329774,38.9088970908615,38.8451625626788,38.89946796557,38.9365820549103,38.9025309490657,38.8619228886077,38.9123244966935,38.9123244966935,38.9274357918548,38.8972990459879,38.8787837374735,38.9258149304166,38.8787837374735,38.9274357918548,38.8860371000795,38.8969781468093,38.8789687804984,38.89946796557,38.8787837374735,38.8787837374735,38.8787837374735,38.9179768530971,38.8787837374735,38.8787837374735,38.8451625626788,38.9248909438896,38.8734635996299,38.9123244966935,38.9123244966935,38.9274357918548,38.8989340870187,38.8897499259629,38.9123244966935,38.9168445432545,38.8897499259629,38.9667158630502,38.9048787828423,38.8920123914063,38.9123244966935,38.9048787828423,38.8875662818655,38.8969781468093,38.9123244966935,38.89783287116,38.8930504710567,38.9612590606149,38.8920895186923,38.9123244966935,38.8969781468093,38.9123244966935,38.8975384697838,38.9123244966935,38.9123244966935,38.9048787828423,38.9199923108837,38.9274357918548,38.9123244966935,38.8573049911827,38.9280052828529,38.9183041641631,38.9123244966935,38.9543732722424,38.8951330487548,38.8951330487548,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.9274357918548,38.9048787828423,38.8798055571672,38.9053614777588,38.8951330487548,38.9048787828423,38.8875662818655,38.8798055571672,38.9195351751344,38.9323636862082,38.9173286251987,38.9138938195312,38.9274357918548,38.8987616906937,38.9123244966935,38.9123244966935,38.9123244966935,38.8798055571672,38.9074379794128,38.9187674106345,38.8855695185532,38.9258149304166,38.9123244966935,38.9050231071001,38.9274357918548,38.8969781468093,38.9543732722424,38.9123244966935,38.8552869718205,38.9322811968581,38.9274357918548,38.9123244966935,38.9548153114553,38.8956168421101,38.8956168421101,38.9138938195312,38.9123244966935,38.9543732722424,38.9123244966935,38.9123244966935,38.9138938195312,38.9123244966935,38.9123244966935,38.8920895186923,38.8972990459879,38.8987616906937,38.9123244966935,38.8969781468093,38.9543732722424,38.9123244966935,38.9123244966935,38.9123244966935,38.8972990459879,38.9123244966935,38.8987616906937,38.8798055571672,38.8787837374735,38.9123244966935,38.8787837374735,38.9274357918548,38.9274357918548,38.9543732722424,38.9665385432465,38.9123244966935,38.8956168421101,38.9059616936887,38.9170022241396,38.9123244966935,38.9123244966935,38.9138938195312,38.9096691923862,38.9441909685395,38.9610200558116,38.9174665041885,38.931152542012,38.9088970908615,38.8837330471257,38.8837330471257,38.9073984539871,38.9065583355158,38.9073984539871,38.9028992876415,38.8814911968901,38.9028992876415,38.9073984539871,38.9225453722466,38.9028992876415,38.9088970908615,38.9196636338455,38.9190519066355,38.9073984539871,38.8904163865491,38.9170022241396,38.9065583355158,38.9169989430614,38.9563761959051,38.9205880085796,38.9088970908615,38.9073984539871,38.9088970908615,38.9073984539871,38.8760272289615,38.9073984539871,38.8836561337461,38.9172327657757,38.9173286251987,38.9123244966935,38.8897716239952,38.9172327657757,38.8897716239952,38.9274357918548,38.9274357918548,38.9138938195312,38.9274357918548,38.9123244966935,38.9138938195312,38.9123244966935,38.9123244966935,38.8920895186923,38.9025284756572,38.934966441082,38.9274357918548,38.9167391926651,38.8789687804984,38.8787837374735,38.9176468207859,38.8787837374735,38.9087731521528,38.8787837374735,38.8596570987135,38.8972990459879,38.8920102836904,38.9496847404464,38.9018277237717,38.9174665041885,38.8787837374735,38.8787837374735,38.8897509317986,38.8972990459879,38.9056459348207,38.8787837374735,38.8787837374735,38.9365820549103,38.9123244966935,38.8798055571672,38.9365820549103,38.8956168421101,38.8956168421101,38.9219902665064,38.9059616936887,38.9244996361682,38.8920895186923,38.9123244966935,38.9543732722424,38.8987616906937,38.9123244966935,38.9123244966935,38.9172327657757,38.8920895186923,38.8637419949753,38.8987616906937,38.8987616906937,38.9274357918548,38.9048787828423,38.9274357918548,38.8975384697838,38.8936615029513,38.8956168421101,38.9138938195312,38.9274357918548,38.9274357918548,38.8956168421101,38.8969781468093,38.8637419949753,38.9048787828423,38.8798055571672,38.9021120515514,38.9043257604203,38.8803228920973,38.9123244966935,38.9002078830843,38.9123244966935,38.8956168421101,38.9274357918548,38.8972990459879,38.9123244966935,38.9123244966935,38.9123244966935,38.9423807789324,38.9423807789324,38.9543732722424,38.8875662818655,38.9123244966935,38.9620419851044,38.9056473334077,38.9048787828423,38.964360105198,38.9610173877836,38.8532973452793,38.9172327657757,38.8637419949753,38.9123244966935,38.9123244966935,38.9123244966935,38.9053614777588,38.9492399788302,38.9138938195312,38.9123244966935,38.9053614777588,38.8798055571672,38.8951330487548,38.9138938195312,38.9265252844351,38.9199923108837,38.9059616936887,38.9219902665064,38.9123244966935,38.9123244966935,38.8623686329774,38.8987616906937,38.9543732722424,38.9274357918548,38.9123244966935,38.9176468207859,38.8787837374735,38.9104894871077,38.9176468207859,38.8956168421101,38.9048787828423,38.9073984539871,38.8969781468093,38.9048787828423,38.8623686329774,38.8623686329774,38.8623686329774,38.9002078830843,38.9543732722424,38.9123244966935,38.9123244966935,38.8969781468093,38.9123244966935,38.9123244966935,38.8956168421101,38.9496847404464,38.8920895186923,38.8969781468093,38.9025309490657,38.9088970908615,38.9506942573317,38.8951330487548,38.9274357918548,38.9123244966935,38.8987616906937,38.9123244966935,38.9123244966935,38.9173286251987,38.8956168421101,38.9025284756572,38.8987616906937,38.9123244966935,38.8987616906937,38.88596760224,38.9123244966935,38.9543732722424,38.9274357918548,38.9123244966935,38.8956168421101,38.9123244966935,38.8956168421101,38.9138938195312,38.9274357918548,38.8987616906937,38.8934042319588,38.9059616936887,38.9123244966935,38.9123244966935,38.9496847404464,38.9274357918548,38.9123244966935,38.9274357918548,38.8969781468093,38.8951330487548,38.8875662818655,38.9123244966935,38.9059616936887,38.9065583355158,38.8969781468093,38.8972990459879,38.9423807789324,38.9138938195312,38.9123244966935,38.9274357918548,38.9543732722424,38.9073984539871,38.9048787828423,38.9138938195312,38.9053614777588,38.9059616936887,38.9278031698184,38.8920895186923,38.9123244966935,38.8969781468093,38.9123244966935,38.8972990459879,38.8969781468093,38.8972990459879,38.9123244966935,38.9174665041885,38.9566430182619,38.8730038765346,38.8969781468093,38.9123244966935,38.8451625626788,38.8451625626788,38.9123244966935,38.9123244966935,38.9274357918548,38.9274357918548,38.9423807789324,38.9173286251987,38.9123244966935,38.9260087608615,38.9260087608615,38.9123244966935,38.9123244966935,38.9543732722424,38.9123244966935,38.9274357918548,38.8956168421101,38.9123244966935,38.9123244966935,38.9274357918548,38.9274357918548,38.9274357918548,38.9123244966935,38.9138938195312,38.9335424923867,38.9409299683181,38.9235971760982,38.9314122461775,38.9088970908615,38.8956168421101,38.8956168421101,38.9274357918548,38.9274357918548,38.9123244966935,38.8969781468093,38.9138938195312,38.8987616906937,38.9138938195312,38.9172327657757,38.9053614777588,38.9123244966935,38.9088970908615,38.8969781468093,38.9274357918548,38.8956168421101,38.8951330487548,38.8972990459879,38.9106022081745,38.9311356662672,38.922159399572,38.8532973452793,38.9123244966935,38.8972990459879,38.9187674106345,38.9056459348207,38.9181112554594,38.8935304495182,38.8734635996299,38.8920808564142,38.919254300928,38.9123244966935,38.9274357918548,38.8956168421101,38.9123244966935,38.8956168421101,38.9274357918548,38.9138938195312,38.9123244966935,38.9123244966935,38.8987616906937,38.8623686329774,38.8920932091134,38.9380302729804,38.8787837374735,38.9380302729804,38.8596570987135,38.8612799858582,38.8451625626788,38.9123244966935,38.9047552909073,38.954131589657,38.8787837374735,38.8787837374735,38.8789687804984,38.8789687804984,38.8789687804984,38.8451625626788,38.8787837374735,38.8951330487548,38.9179768530971,38.8956168421101,38.9423807789324,38.9138938195312,38.9123244966935,38.8787837374735,38.9365820549103,38.9610131375442,38.8506842992464,38.9123244966935,38.9123244966935,38.9123244966935,38.9543732722424,38.9123244966935,38.8789687804984,38.9123244966935,38.8612799858582,38.89946796557,38.8787837374735,38.9123244966935,38.8789687804984,38.922291710748,38.9025284756572,38.9123244966935,38.9123244966935,38.8897716239952,38.9274357918548,38.9123244966935,38.9173286251987,38.9173286251987,38.9274357918548,38.9123244966935,38.9123244966935,38.9416893604406,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.9274357918548,38.9123244966935,38.9123244966935,38.9274357918548,38.9274357918548,38.9274357918548,38.9173286251987,38.8875662818655,38.88596760224,38.908573342414,38.9123244966935,38.8897716239952,38.8920895186923,38.9274357918548,38.9088970908615,38.88596760224,38.9543732722424,38.9123244966935,38.8969781468093,38.8645477743951,38.9170020991761,38.9173286251987,38.9123244966935,38.8956168421101,38.9543732722424,38.9123244966935,38.9138938195312,38.9123244966935,38.8969781468093,38.9123244966935,38.8561277871228,38.8875644515951,38.8954790620594,38.8506842992464,38.8987616906937,38.8956168421101,38.9048787828423,38.9048787828423,38.9025284756572,38.9274357918548,38.8787837374735,38.8612799858582,38.8787837374735,38.8787837374735,38.8612799858582,38.8787837374735,38.8787837374735,38.9380302729804,38.8897716239952,38.8956168421101,38.9048787828423,38.9620419851044,38.9274357918548,38.9543732722424,38.9172327657757,38.9088970908615,38.9123244966935,38.9423807789324,38.8969781468093,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.9274357918548,38.9123244966935,38.916997788863,38.8920895186923,38.9123244966935,38.9274357918548,38.8972990459879,38.8987616906937,38.9423807789324,38.9274357918548,38.9123244966935,38.9173286251987,38.8956168421101,38.9123244966935,38.9059616936887,38.8972990459879,38.8814911968901,38.9543732722424,38.8956168421101,38.9123244966935,38.899814603982,38.9000009769739,38.9274357918548,38.8969781468093,38.8798055571672,38.8897716239952,38.932779249505,38.9002071379869,38.857633429331,38.922047010149,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.910642529105,38.8508479247864,38.8972990459879,38.8972990459879,38.8451625626788,38.8451625626788,38.8451625626788,38.8787837374735,38.8787837374735,38.8787837374735,38.8787837374735,38.9334379227543,38.8789687804984,38.9048787828423,38.8987616906937,38.8451625626788,38.9123244966935,38.8451625626788,38.8913081036416,38.9181105671157,38.9181105671157,38.9284952571623,38.89946796557,38.8787837374735,38.8506842992464,38.8532973452793,38.8451625626788,38.8787837374735,38.8787837374735,38.8451625626788,38.9123244966935,38.89946796557,38.8897509317986,38.8972990459879,38.8972990459879,38.8451625626788,38.8787837374735,38.9123244966935,38.9548153114553,38.9048787828423,38.9123244966935,38.9274357918548,38.9123244966935,38.9123244966935,38.9274357918548,38.9123244966935,38.8956168421101,38.9239111899666,38.8972990459879,38.8969781468093,38.9048787828423,38.8987616906937,38.8956168421101,38.8956168421101,38.9048787828423,38.9274357918548,38.9138938195312,38.8972990459879,38.9274357918548,38.9059616936887,38.9019274260605,38.9610173877836,38.9123244966935,38.9274357918548,38.9002078830843,38.9053614777588,38.8951330487548,38.9123244966935,38.8987616906937,38.9543732722424,38.8969781468093,38.931152542012,38.9274357918548,38.9543732722424,38.9123244966935,38.9173286251987,38.9123244966935,38.9123244966935,38.9274357918548,38.9123244966935,38.9496847404464,38.9138938195312,38.8972990459879,38.9274357918548,38.8987616906937,38.9274357918548,38.9123244966935,38.8992501183643,38.884807925326,38.9665385432465,38.9088970908615,38.9065583355158,38.9533530508333,38.8303139231391,38.9123244966935,38.8875662818655,38.8798055571672,38.9123244966935,38.9285817699687,38.9123244966935,38.9543732722424,38.8987616906937,38.9112797582797,38.9285226568989,38.8734635996299,38.9235294962134,38.8623686329774,38.8987616906937,38.8987616906937,38.8986274386105,38.931152542012,38.88596760224,38.8987616906937,38.9123244966935,38.8920895186923,38.8637419949753,38.8969781468093,38.9025284756572,38.8969781468093,38.9123244966935,38.9174665041885,38.9232498590286,38.9174665041885,38.8831037937851,38.8951330487548,38.88596760224,38.9173286251987,38.8951330487548,38.8972990459879,38.9048787828423,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.9059616936887,38.9274357918548,38.9274357918548,38.9048787828423,38.9050231071001,38.9298924655443,38.9073984539871,38.9612590606149,38.9199923108837,38.8734635996299,38.8920895186923,38.8920895186923,38.8951330487548,38.8734635996299,38.9643920310147,38.9138938195312,38.9548153114553,38.8956168421101,38.9172327657757,38.9172327657757,38.8987616906937,38.9172327657757,38.8798055571672,38.9548153114553,38.8787837374735,38.9380302729804,38.8956168421101,38.8956168421101,38.8987616906937,38.8987616906937,38.8987616906937,38.8987616906937,38.8787837374735,38.9065583355158,38.9123244966935,38.9219902665064,38.9138938195312,38.9025284756572,38.8964189733705,38.9088970908615,38.8623686329774,38.9048787828423,38.9172327657757,38.9123244966935,38.8956168421101,38.9274357918548,38.9274357918548,38.9123244966935,38.9027710152209,38.9258149304166,38.8987616906937,38.9123244966935,38.8969781468093,38.8956168421101,38.9029219562039,38.9123244966935,38.9123244966935,38.9123244966935,38.9050231071001,38.9088970908615,38.9423807789324,38.837554960461,38.8956168421101,38.8956168421101,38.9123244966935,38.8956168421101,38.8956168421101,38.8831037937851,38.9274357918548,38.9569439874528,38.8881779931825,38.9029774494627,38.9128685283835,38.9098515112244,38.9828086699289,38.8982306899315,38.9123244966935,38.9235294962134,38.9123244966935,38.9423807789324,38.9174665041885,38.832852691323,38.9059616936887,38.9053614777588,38.916997788863,38.9123244966935,38.9138938195312,38.9274357918548,38.9138938195312,38.9123244966935,38.9123244966935,38.9059616936887,38.9123244966935,38.8956168421101,38.8969781468093,38.9123244966935,38.9021670467759,38.9096346591638,38.9274357918548,38.9274357918548,38.9543732722424,38.9123244966935,38.9123244966935,38.8787837374735,38.9123244966935,38.9172327657757,38.8987616906937,38.9123244966935,38.8969781468093,38.9543732722424,38.8969781468093,38.9123244966935,38.9123244966935,38.9123244966935,38.9274357918548,38.9274357918548,38.9274357918548,38.9543732722424,38.9123244966935,38.8875662818655,38.9548153114553,38.8987616906937,38.8787837374735,38.89946796557,38.8987616906937,38.9123244966935,38.9123244966935,38.8612799858582,38.8787837374735,38.9325341369399,38.8787837374735,38.8969781468093,38.8972990459879,38.8972990459879,38.916997788863,38.8596570987135,38.9179768530971,38.8787837374735,38.8897509317986,38.9176468207859,38.9176468207859,38.9380302729804,38.8787837374735,38.89946796557,38.9274357918548,38.8987616906937,38.8956168421101,38.9123244966935,38.8787837374735,38.8956168421101,38.8956168421101,38.9179768530971,38.8956168421101,38.8787837374735,38.9179768530971,38.9543732722424,38.9179768530971,38.8787837374735,38.9048787828423,38.8969781468093,38.9179768530971,38.8789687804984,38.8987616906937,38.9274357918548,38.948098347564,38.9179768530971,38.8787837374735,38.9011982293062,38.937398221774,38.8405039696679,38.8998078001136,38.8901153069906,38.9258149304166,38.9245089784467,38.89946796557,38.8451625626788,38.8637419949753,38.8451625626788,38.8451625626788,38.9179768530971,38.8787837374735,38.8787837374735,38.9138938195312,38.9138938195312,38.9560332761835,38.9123244966935,38.8798055571672,38.89946796557,38.9543732722424,38.8787837374735,38.9179768530971,38.9365820549103,38.9439726894924,38.9237583255847,38.8787837374735,38.8787837374735,38.8932990791349,38.8969781468093,38.9123244966935,38.9543732722424,38.9612590606149,38.8798055571672,38.9088970908615,38.9173286251987,38.88596760224,38.8734635996299,38.9088970908615,38.91572541709,38.8972990459879,38.9173286251987,38.9123244966935,38.9138938195312,38.9123244966935,38.9123244966935,38.9123244966935,38.9274357918548,38.9123244966935,38.9123244966935,38.900430377722,38.9123244966935,38.9123244966935,38.9123244966935,38.9423807789324,38.9123244966935,38.8972990459879,38.8972990459879,38.8969781468093,38.8969781468093,38.9123244966935,38.9073984539871,38.8775279503402,38.8623686329774,38.9444041989691,38.9073984539871,38.9605538458562,38.8623686329774,38.9025309490657,38.9048787828423,38.9560332761835,38.9123244966935,38.9365820549103,38.8451625626788,38.8612799858582,38.9123244966935,38.8596570987135,38.8787837374735,38.8787837374735,38.8787837374735,38.9325341369399,38.8787837374735,38.8596570987135,38.8787837374735,38.9172327657757,38.8787837374735,38.9048787828423,38.8612799858582,38.9138938195312,38.8451625626788,38.9274357918548,38.8451625626788,38.9335961274498,38.8451625626788,38.8451625626788,38.9543732722424,38.8969781468093,38.8789687804984,38.8787837374735,38.9274357918548,38.8789687804984,38.8451625626788,38.8787837374735,38.8451625626788,38.8787837374735,38.9123244966935,38.9123244966935,38.9274357918548,38.9274357918548,38.9399171545716,38.8987616906937,38.9025284756572,38.8956168421101,38.8987616906937,38.9612590606149,38.9219902665064,38.8798055571672,38.9053614777588,38.8969781468093,38.8956168421101,38.9123244966935,38.9019304324969,38.849745676869,38.9123244966935,38.8734635996299,38.9123244966935,38.9048787828423,38.8956168421101,38.9138938195312,38.9274357918548,38.9025284756572,38.8734635996299,38.9423807789324,38.8972990459879,38.9423807789324,38.8920895186923,38.8789687804984,38.8451625626788,38.8451625626788,38.9138938195312,38.9274357918548,38.9171925861194,38.8456596381951,38.9123244966935,38.8451625626788,38.8596570987135,38.8789687804984,38.8787837374735,38.9176468207859,38.9138938195312,38.8789687804984,38.9334379227543,38.9108921361843,38.9123244966935,38.8956168421101,38.8787837374735,38.9543732722424,38.9123244966935,38.8787837374735,38.8787837374735,38.8612799858582,38.8787837374735,38.9248909438896,38.8920895186923,38.8596570987135,38.8764808713658,38.9548153114553,38.9123244966935,38.8956168421101,38.8987616906937,38.9123244966935,38.9543732722424,38.9123244966935,38.9059616936887,38.8787837374735,38.9334379227543,38.8987616906937,38.8956168421101,38.8789687804984,38.8643495056954,38.89946796557,38.8787837374735,38.8897509317986,38.8787837374735,38.8787837374735,38.8798055571672,38.8798055571672,38.9179768530971,38.9173286251987,38.8789687804984,38.8787837374735,38.8787837374735,38.8920895186923,38.8897509317986,38.9123244966935,38.9123244966935,38.9123244966935,38.8972990459879,38.8987616906937,38.9274357918548,38.9123244966935,38.9123244966935,38.8956168421101,38.9123244966935,38.8798055571672,38.8623686329774,38.9543732722424,38.9123244966935,38.8612799858582,38.8787837374735,38.9548153114553,38.8734635996299,38.9179768530971,38.8787837374735,38.8787837374735,38.8787837374735,38.8506842992464,38.8451625626788,38.8612799858582,38.8787837374735,38.8596570987135,38.8612799858582,38.9025309490657,38.8787837374735,38.8789687804984,38.9123244966935,38.9123244966935,38.8787837374735,38.8987616906937,38.8956168421101,38.8451625626788,38.9179768530971,38.9123244966935,38.9048787828423,38.9176468207859,38.9543732722424,38.8972990459879,38.9138938195312,38.9138938195312,38.9543732722424,38.9543732722424,38.8972990459879,38.9059616936887,38.9543732722424,38.9543732722424,38.8972990459879,38.8972990459879,38.9138938195312,38.9543732722424,38.89946796557,38.89946796557,38.8972990459879,38.9059616936887,38.8972990459879,38.8822923062159,38.9138938195312,38.9352333143541,38.9013359081202,38.9173531537971,38.9274357918548,38.9123244966935,38.9123244966935,38.9274357918548,38.9002078830843,38.9123244966935,38.9423807789324,38.9123244966935,38.9207909968505,38.8450887973026,38.9123244966935,38.9050231071001,38.8972990459879,38.8956168421101,38.899814603982,38.9065583355158,38.9025284756572,38.9050231071001,38.9172327657757,38.9274357918548,38.8987616906937,38.8969781468093,38.9543732722424,38.8920895186923,38.9123244966935,38.9123244966935,38.8734635996299,38.8972990459879,38.88596760224,38.8972990459879,38.9088970908615,38.9274357918548,38.8637419949753,38.8951330487548,38.9274357918548,38.8972990459879,38.951205827418,38.8555817350196,38.8592305969715,38.9059616936887,38.9123244966935,38.91572541709,38.88596760224,38.9048787828423,38.9048787828423,38.9173286251987,38.9172327657757,38.9173286251987,38.9048787828423,38.9088970908615,38.9496847404464,38.8532973452793,38.9002078830843,38.9025284756572,38.9123244966935,38.8972990459879,38.9123244966935,38.8798055571672,38.8972990459879,38.9123244966935,38.9123244966935,38.9138938195312,38.8734635996299,38.9560332761835,38.9123244966935,38.8998080514795,38.9123244966935,38.9274357918548,38.9123244966935,38.8596570987135,38.8451625626788,38.89946796557,38.89946796557,38.8451625626788,38.8764808713658,38.9549014020557,38.8787837374735,38.9048787828423,38.8451625626788,38.8612799858582,38.8787837374735,38.8764808713658,38.89946796557,38.8787837374735,38.8787837374735,38.8764808713658,38.9248909438896,38.8451625626788,38.8897509317986,38.8787837374735,38.8969781468093,38.8972990459879,38.8451625626788,38.9274357918548,38.9179768530971,38.8897716239952,38.9172327657757,38.9219902665064,38.89946796557,38.8956168421101,38.9123244966935,38.9179768530971,38.9123244966935,38.9123244966935,38.922291710748,38.8451625626788,38.9179768530971,38.9088970908615,38.8734635996299,38.8787837374735,38.8451625626788,38.8451625626788,38.8787837374735,38.8787837374735,38.8787837374735,38.8789687804984,38.8787837374735,38.8897509317986,38.8787837374735,38.8787837374735,38.8956168421101,38.8787837374735,38.9380302729804,38.8956168421101,38.8787837374735,38.8787837374735,38.8956168421101,38.8972990459879,38.9123244966935,38.9048787828423,38.9496847404464,38.8623686329774,38.9548153114553,38.8987616906937,38.9274357918548,38.8637419949753,38.9048787828423,38.9050231071001,38.8920853941184,38.9123244966935,38.9172327657757,38.9496847404464,38.8612799858582,38.9048787828423,38.8787837374735,38.8451625626788,38.8451625626788,38.9123244966935,38.9123244966935,38.9365820549103,38.89946796557,38.8787837374735,38.8787837374735,38.8987616906937,38.9274357918548,38.8787837374735,38.9179768530971,38.9179768530971,38.9274357918548,38.9123244966935,38.8987616906937,38.8972990459879,38.8787837374735,38.8787837374735,38.89946796557,38.8787837374735,38.8787837374735,38.8612799858582,38.8787837374735,38.8764808713658,38.8451625626788,38.8787837374735,38.9248909438896,38.9380302729804,38.8787837374735,38.8787837374735,38.8612799858582,38.9543732722424,38.8956168421101,38.9123244966935,38.9123244966935,38.8969781468093,38.9123244966935,38.9048787828423,38.8875662818655,38.9025284756572,38.9025284756572,38.9524071341696,38.8956168421101,38.9123244966935,38.9274357918548,38.9123244966935,38.8655943838585,38.9137345912549,38.8956168421101,38.9123244966935,38.9548153114553,38.9334379227543,38.8451625626788,38.8956168421101,38.9172327657757,38.8956168421101,38.8987616906937,38.8987616906937,38.8956168421101,38.8987616906937,38.8987616906937,38.8956168421101,38.8787837374735,38.9560332761835,38.8451625626788,38.8787837374735,38.9546926895927,38.8956168421101,38.8956168421101,38.8798055571672,38.8787837374735,38.8787837374735,38.8789687804984,38.9560332761835,38.9534955858599,38.8956168421101,38.8387234381846,38.8787837374735,38.8987616906937,38.8263246307859,38.8920889644641,38.9187674106345,38.88596760224,38.9365820549103,38.8787837374735,38.8969781468093,38.9123244966935,38.8897509317986,38.8798055571672,38.8956168421101,38.9334379227543,38.9123244966935,38.9123244966935,38.9123244966935,38.9173286251987,38.9274357918548,38.9274357918548,38.9123244966935,38.8969781468093,38.9123244966935,38.9245954480742,38.9123244966935,38.9274357918548,38.9123244966935,38.8474988744983,38.9048787828423,38.9097917836327,38.8845557146059,38.9006398217676,38.9002078830843,38.88596760224,38.9140840395951,38.9191851784289,38.9168445432545,38.9274357918548,38.9274357918548,38.9123244966935,38.9525347990541,38.9123244966935,38.9123244966935,38.9025284756572,38.9123244966935,38.9274357918548,38.9123244966935,38.9293004360212,38.9123244966935,38.9140909939549,38.9235294962134,38.9274357918548,38.9138938195312,38.9075398799296,38.9053841284902,38.9088970908615,38.9274357918548,38.8956168421101,38.8969781468093,38.8972990459879,38.9543732722424,38.9543732722424,38.9123244966935,38.8969781468093,38.9123244966935,38.9543732722424,38.9496847404464,38.8532973452793,38.9123244966935,38.9025284756572,38.9286873734321,38.8972990459879,38.8972990459879,38.9274357918548,38.9123244966935,38.8920895186923,38.9123244966935,38.8920895186923,38.9048787828423,38.9172327657757,38.8983675669134,38.9301630074979,38.9123244966935,38.9123244966935,38.9138938195312,38.9191848308643,38.9123244966935,38.8969781468093,38.9274357918548,38.8956168421101,38.9543732722424,38.8987616906937,38.9123244966935,38.8880101462035,38.933113202261,38.8637419949753,38.8913447138952,38.9227039568086,38.9331973226867,38.9371224999801,38.8734635996299,38.9548153114553,38.9173286251987,38.9053614777588,38.9123244966935,38.9048787828423,38.9173286251987,38.8969781468093,38.9123244966935,38.8623686329774,38.9138938195312,38.9496847404464,38.9123244966935,38.9123244966935,38.9183749563733,38.8869342669942,38.9123244966935,38.8969781468093,38.8969781468093,38.8798055571672,38.8837330471257,38.9274357918548,38.8798055571672,38.9123244966935,38.9274357918548,38.8972990459879,38.8969781468093,38.9274357918548,38.9496847404464,38.8969781468093,38.9274357918548,38.9123244966935,38.9172327657757,38.9172327657757,38.9123244966935,38.9123244966935,38.9123244966935,38.9274357918548,38.9274357918548,38.9543732722424,38.8969781468093,38.8987616906937,38.9274357918548,38.9123244966935,38.8972990459879,38.9025309490657,38.9048787828423,38.9138938195312,38.9138938195312,38.9123244966935,38.8984836706253,38.9123244966935,38.8920895186923,38.9123244966935,38.8920853941184,38.9059616936887,38.9073984539871,38.9560332761835,38.9612590606149,38.8637419949753,38.88596760224,38.8798055571672,38.9173286251987,38.9048787828423,38.8532973452793,38.9053614777588,38.9235294962134,38.8897716239952,38.9612590606149,38.9172327657757,38.9386841788167,38.9059616936887,38.9274357918548,38.8920853941184,38.9548153114553,38.9138938195312,38.9123244966935,38.8734635996299,38.8951330487548,38.89946796557,38.8596570987135,38.8787837374735,38.8969781468093,38.9274357918548,38.9123244966935,38.9123244966935,38.9123244966935,38.9138938195312,38.9123244966935,38.9261824619268,38.9140849867075,38.8798055571672,38.9123244966935,38.9059616936887,38.8451625626788,38.8787837374735,38.9173286251987,38.8734635996299,38.9548153114553,38.9123244966935,38.9123244966935,38.9123244966935,38.8956168421101,38.9123244966935,38.9258149304166,38.8956168421101,38.8969781468093,38.9138938195312,38.9274357918548,38.9612590606149,38.9123244966935,38.8623686329774,38.9123244966935,38.9123244966935,38.9123244966935,38.8987616906937,38.8956168421101,38.8798055571672,38.9123244966935,38.8956168421101,38.8987616906937,38.8956168421101,38.9123244966935,38.9123244966935,38.8969781468093,38.9123244966935,38.8969781468093,38.8972990459879,38.8956168421101,38.9496847404464,38.9496847404464,38.9274357918548,38.9173286251987,38.9209930932858,38.8596570987135,38.9274357918548,38.9123244966935,38.9274357918548,38.9138938195312,38.9176468207859,38.8787837374735,38.8787837374735,38.9496847404464,38.9380302729804,38.9423807789324,38.9025284756572,38.9048787828423,38.8787837374735,38.9286873734321,38.8596570987135,38.8787837374735,38.8764808713658,38.9380302729804,38.9380302729804,38.8787837374735,38.8612799858582,38.8787837374735,38.8787837374735,38.9380302729804,38.9170022241396,38.8506842992464,38.8623686329774,38.8920895186923,38.8787837374735,38.8789687804984,38.8451625626788,38.8787837374735,38.9179768530971,38.89946796557,38.8734635996299,38.8787837374735,38.8956168421101,38.8987616906937,38.9179768530971,38.9179768530971,38.9274357918548,38.8987616906937,38.9123244966935,38.9048787828423,38.8451625626788,38.9543732722424,38.9138938195312,38.9173286251987,38.8787837374735,38.8897509317986,38.8612799858582,38.8789687804984,38.906441607104,38.8923731229064,38.9274357918548,38.8623686329774,38.8969781468093,38.9123244966935,38.8972990459879,38.9274357918548,38.9548153114553,38.8969781468093,38.931152542012,38.8814911968901,38.9274357918548,38.8969781468093,38.8972990459879,38.9274357918548,38.9123244966935,38.9123244966935,38.9274357918548,38.9123244966935,38.9048787828423,38.8969781468093,38.9123244966935,38.8987616906937,38.9138938195312,38.9138938195312,38.8987616906937,38.9025284756572,38.9123244966935,38.9123244966935,38.9274357918548,38.9274357918548,38.9543732722424,38.9496847404464,38.9123244966935,38.8987616906937,38.8920895186923,38.9123244966935,38.8969781468093,38.8798055571672,38.8972990459879,38.9123244966935,38.8972990459879,38.9053614777588,38.88596760224,38.9123244966935,38.9274357918548,38.9274357918548,38.9274357918548,38.8920853941184,38.9173286251987,38.8956168421101,38.9286873734321,38.9123244966935,38.9496847404464,38.8987616906937,38.9496847404464,38.8920895186923,38.8969781468093,38.9053689564719,38.8940988706042,38.9123244966935,38.9585122516679,38.8969781468093,38.9088970908615,38.9123244966935,38.9123244966935,38.9123244966935,38.8787837374735,38.8787837374735,38.9393211694272,38.8451625626788,38.9548153114553,38.9059616936887,38.9274357918548,38.9088970908615,38.8956168421101,38.8798055571672,38.8734635996299,38.9088970908615,38.8987616906937,38.8956168421101,38.9219902665064,38.9548153114553,38.8951330487548,38.8987616906937,38.8787837374735,38.8956168421101,38.8897716239952,38.8956168421101,38.8987616906937,38.91572541709,38.91572541709,38.9610173877836,38.8956168421101,38.9053614777588,38.9524071341696,38.8956168421101,38.9496847404464,38.8451625626788,38.9123244966935,38.9219902665064,38.9219902665064,38.9123244966935,38.9274357918548,38.9123244966935,38.9048787828423,38.9548153114553,38.9548153114553,38.9543732722424,38.9123244966935,38.8987616906937,38.9179768530971,38.8451625626788,38.9176468207859,38.9179768530971,38.8787837374735,38.8612799858582,38.8897509317986,38.8787837374735,38.8787837374735,38.9380302729804,38.9393211694272,38.9548153114553,38.8451625626788,38.8451625626788,38.8787837374735,38.8787837374735,38.8972990459879,38.9123244966935,38.9123244966935,38.9496847404464,38.8972990459879,38.8969781468093,38.9123244966935,38.9123244966935,38.8969781468093,38.9123244966935,38.9274357918548,38.8987616906937,38.8987616906937,38.8972990459879,38.9059616936887,38.9059616936887,38.8787837374735,38.8956168421101,38.9123244966935,38.9274357918548,38.9274357918548,38.8956168421101,38.9123244966935,38.9176468207859,38.8787837374735,38.9176468207859,38.8451625626788,38.9172327657757,38.9247132777553,38.9059616936887,38.8626952204236,38.9170022241396,38.8956168421101,38.9123244966935,38.9123244966935,38.9123244966935,38.8969781468093,38.9543732722424,38.8451625626788,38.8451625626788,38.9123244966935,38.9138938195312,38.9534955858599,38.9179768530971,38.8451625626788,38.9334379227543,38.9048787828423,38.9048787828423,38.8787837374735,38.8787837374735,38.8897509317986,38.9543732722424,38.9048787828423,38.9044492020784,38.9219902665064,38.9123244966935,38.88596760224,38.8987616906937,38.9088970908615,38.9048787828423,38.9123244966935,38.8987616906937,38.9011482313009,38.9274357918548,38.9173286251987,38.933113202261,38.8969781468093,38.9274357918548,38.9048787828423,38.9123244966935,38.9123244966935,38.9173286251987,38.9123244966935,38.9123244966935,38.9123244966935,38.9274357918548,38.88596760224,38.9123244966935,38.9088970908615,38.8975384697838,38.9123244966935,38.8961136314728,38.9025145230849,38.8897716239952,38.9053614777588,38.9286873734321,38.9048787828423,38.9065583355158,38.8798055571672,38.8897716239952,38.9073984539871,38.9123244966935,38.8975384697838,38.8935857786506,38.922159399572,38.9123244966935,38.8972990459879,38.9543732722424,38.8972990459879,38.9138938195312,38.9138938195312,38.9138938195312,38.9543732722424,38.9543732722424,38.9138938195312,38.8972990459879,38.8972990459879,38.9138938195312,38.9543732722424,38.9059616936887,38.9138938195312,38.9138938195312,38.9543732722424,38.9138938195312,38.9059616936887,38.8972990459879,38.9059616936887,38.9138938195312,38.9543732722424,38.9138938195312,38.9138938195312,38.8972990459879,38.9543732722424,38.9138938195312,38.9138938195312,38.9123244966935,38.9274357918548,38.9123244966935,38.9274357918548,38.9011982293062,38.9055494627554,38.9025284756572,38.9189840165291,38.9048787828423,38.9123244966935,38.9123244966935,38.9025108098757,38.9281718049602,38.9123244966935,38.9274357918548,38.8789687804984,38.9123244966935,38.9612590606149,38.9179768530971,38.910474300986,38.8787837374735,38.8787837374735,38.9172327657757,38.8987616906937,38.9534955858599,38.8787837374735,38.8787837374735,38.8612799858582,38.9179768530971,38.8451625626788,38.8787837374735,38.9235294962134,38.9172327657757,38.9274357918548,38.8956168421101,38.9179768530971,38.9123244966935,38.89946796557,38.8451625626788,38.931152542012,38.9187674106345,38.9025250732631,38.9123244966935,38.8787837374735,38.88596760224,38.8787837374735,38.8787837374735,38.8623686329774,38.9048787828423,38.89946796557,38.8897509317986,38.8897509317986,38.8612799858582,38.8787837374735,38.8787837374735,38.8787837374735,38.8787837374735,38.8787837374735,38.8787837374735,38.8932990791349,38.9123244966935,38.8451625626788,38.8956168421101,38.8451625626788,38.8451625626788,38.8451625626788,38.8787837374735,38.8787837374735,38.9123244966935,38.9179768530971,38.9048787828423,38.8920895186923,38.8789687804984,38.8956168421101,38.9059616936887,38.8796229159921,38.9275260099495,38.9549014020557,38.8787837374735,38.9123244966935,38.9179768530971,38.9274357918548,38.9274357918548,38.9274357918548,38.8987616906937,38.9274357918548,38.9123244966935,38.8956168421101,38.9123244966935,38.9548153114553,38.8787837374735,38.9123244966935,38.9543732722424,38.9138938195312,38.8212838732693,38.9143522299919,38.8972990459879,38.8956168421101,38.9274357918548,38.9138938195312,38.8987616906937,38.8920895186923,38.9274357918548,38.9123244966935,38.9123244966935,38.8623686329774,38.9123244966935,38.9123244966935,38.910474300986,38.8798055571672,38.8532973452793,38.9025309490657,38.8969781468093,38.8969781468093,38.93523497242,38.9123244966935,38.8987616906937,38.8956168421101,38.9274357918548,38.8798055571672,38.8994998281087,38.9053689564719,38.9059616936887,38.9123244966935,38.8970551363322,38.9123244966935,38.9123244966935,38.9274357918548,38.8969781468093,38.9123244966935,38.9235971760982,38.9123244966935,38.9123244966935,38.8875662818655,38.9123244966935,38.9123244966935,38.8920895186923,38.9123244966935,38.9123244966935,38.9123244966935,38.8675194699985,38.9048787828423,38.9274357918548,38.9123244966935,38.922159399572,38.8987548763708,38.9274357918548,38.9274357918548,38.9123244966935,38.8969781468093,38.9205336837605,38.9048787828423,38.9123244966935,38.9274357918548,38.9025284756572,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.9138938195312,38.9059616936887,38.8972990459879,38.8972990459879,38.8972990459879,38.9543732722424,38.9543732722424,38.8972990459879,38.9008711946699,38.9543732722424,38.8972990459879,38.9059616936887,38.8832022965252,38.8972990459879,38.9543732722424,38.9543732722424,38.9543732722424,38.8956168421101,38.8951330487548,38.8897509317986,38.8897509317986,38.8789687804984,38.9123244966935,38.9123244966935,38.8972990459879,38.9274357918548,38.8987616906937,38.9123244966935,38.9380302729804,38.8787837374735,38.89946796557,38.89946796557,38.8787837374735,38.8787837374735,38.8787837374735,38.8787837374735,38.8596570987135,38.8787837374735,38.8451625626788,38.8920895186923,38.9365820549103,38.8596570987135,38.9123244966935,38.8920895186923,38.9123244966935,38.8789687804984,38.9380302729804,38.8787837374735,38.8787837374735,38.8787837374735,38.8612799858582,38.8787837374735,38.9380302729804,38.8787837374735,38.9059616936887,38.8532843611461,38.8969781468093,38.9547024436409,38.9281228998727,38.9191832287402,38.922291710748,38.9172327657757,38.8789687804984,38.9123244966935,38.8987616906937,38.8787837374735,38.9548153114553,38.9059616936887,38.9056459348207,38.9479092542275,38.9183041641631,38.9123244966935,38.9123244966935,38.8451625626788,38.8969781468093,38.8956168421101,38.9274357918548,38.8787837374735,38.8984054126905,38.8897499259629,38.8972990459879,38.8987616906937,38.9056459348207,38.9059616936887,38.8545370207381,38.964166785095,38.9179768530971,38.9199330378813,38.9233790389475,38.8987616906937,38.8956168421101,38.9123244966935,38.8969781468093,38.9555056159988,38.931152542012,38.9174665041885,38.9181105671157,38.9191832287402,38.9546982353771,38.9065583355158,38.8831037937851,38.9174665041885,38.9172327657757,38.9088970908615,38.9172327657757,38.8987616906937,38.8956168421101,38.9560332761835,38.9548153114553,38.8623686329774,38.9053614777588,38.9548153114553,38.91572541709,38.9496847404464,38.9172327657757,38.8623686329774,38.8987616906937,38.8787837374735,38.8956168421101,38.8798055571672,38.9380302729804,38.9172327657757,38.9393211694272,38.8787837374735,38.9172327657757,38.8956168421101,38.9548153114553,38.8787837374735,38.8787837374735,38.8451625626788,38.8451625626788,38.8956168421101,38.8969884947294,38.9561761776676,38.9048787828423,38.88596760224,38.8956168421101,38.9496847404464,38.9423807789324,38.8975384697838,38.9274357918548,38.9496847404464,38.9543732722424,38.9173286251987,38.9138938195312,38.9543732722424,38.8972990459879,38.8837330471257,38.9274357918548,38.88596760224,38.9274357918548,38.8987616906937,38.9123244966935,38.9138938195312,38.9048787828423,38.9048787828423,38.9274357918548,38.9123244966935,38.9172327657757,38.8734635996299,38.8956168421101,38.8969781468093,38.9123244966935,38.9123244966935,38.9274357918548,38.9496847404464,38.9138938195312,38.8969781468093,38.9274357918548,38.9320394189916,38.8951330487548,38.9127696591639,38.9138938195312,38.9123244966935,38.9025284756572,38.9423807789324,38.9088970908615,38.8920895186923,38.8798055571672,38.8969781468093,38.8969781468093,38.9123244966935,38.8951330487548,38.9123244966935,38.9172327657757,38.8956168421101,38.9274357918548,38.9274357918548,38.9274357918548,38.9496847404464,38.8920853941184,38.9138938195312,38.9274357918548,38.8972990459879,38.9123244966935,38.9543732722424,38.8972990459879,38.9123244966935,38.930450215578,38.8613305987488,38.926204316972,38.8956168421101,38.9123244966935,38.8972990459879,38.9088027982425,38.9123244966935,38.9274357918548,38.9548153114553,38.9274357918548,38.8700764964662,38.9113876880533,38.8969781468093,38.9172327657757,38.9059616936887,38.9056459348207,38.9496847404464,38.8734635996299,38.88596760224,38.8798055571672,38.9274357918548,38.8787837374735,38.8612799858582,38.8903872565714,38.8969781468093,38.9123244966935,38.9123244966935,38.9123244966935,38.8987616906937,38.9286112515713,38.9560332761835,38.9048787828423,38.9560332761835,38.8734635996299,38.9190519066355,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.8920853941184,38.9123244966935,38.8987616906937,38.9025284756572,38.9048787828423,38.8948682830652,38.9048787828423,38.8433865658639,38.9265594131414,38.8956168421101,38.9123244966935,38.9274357918548,38.8969781468093,38.9123244966935,38.8789687804984,38.8787837374735,38.9274357918548,38.9274357918548,38.9179768530971,38.8798055571672,38.8451625626788,38.8787837374735,38.9172327657757,38.8787837374735,38.8787837374735,38.8787837374735,38.9179768530971,38.8451625626788,38.8789687804984,38.9393211694272,38.8787837374735,38.8972990459879,38.8972990459879,38.8928010048644,38.8897509317986,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.9179768530971,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.8956168421101,38.8987616906937,38.8956168421101,38.9123244966935,38.9274357918548,38.9123244966935,38.9048787828423,38.9123244966935,38.9123244966935,38.9496847404464,38.8956168421101,38.9123244966935,38.9620419851044,38.9496847404464,38.9123244966935,38.8956168421101,38.9048787828423,38.9274357918548,38.9274357918548,38.9123244966935,38.8969781468093,38.9123244966935,38.8897716239952,38.8623686329774,38.9138938195312,38.8798055571672,38.9123244966935,38.9123244966935,38.8969781468093,38.8798055571672,38.9423807789324,38.9199923108837,38.8972990459879,38.9123244966935,38.9048787828423,38.9172327657757,38.8987616906937,38.9123244966935,38.9138938195312,38.9274357918548,38.9274357918548,38.9235294962134,38.9274357918548,38.9543732722424,38.9123244966935,38.9123244966935,38.9123244966935,38.8972990459879,38.9040723534931,38.8986274386105,38.8837330471257,38.9138938195312,38.9138938195312,38.9123244966935,38.9548153114553,38.9172327657757,38.9123244966935,38.8532973452793,38.9048787828423,38.9543732722424,38.9543732722424,38.8987616906937,38.9066661745942,38.898111777917,38.9123244966935,38.9123244966935,38.9123244966935,38.9138938195312,38.9274357918548,38.9048787828423,38.9123244966935,38.9235294962134,38.9496847404464,38.8972990459879,38.9123244966935,38.9224360844571,38.9162842808889,38.8798055571672,38.9088970908615,38.8798055571672,38.8798055571672,38.9172327657757,38.9043036675217,38.9088970908615,38.8620491789839,38.928801771091,38.9073984539871,38.9423807789324,38.9123244966935,38.9123244966935,38.9543732722424,38.9088970908615,38.8956168421101,38.9123244966935,38.9274357918548,38.9048787828423,38.9560332761835,38.9123244966935,38.9123244966935,38.9123244966935,38.9053614777588,38.9123244966935,38.9138938195312,38.8969781468093,38.9274357918548,38.9138938195312,38.9123244966935,38.9548153114553,38.8920895186923,38.8987616906937,38.8987616906937,38.8956168421101,38.8986274386105,38.8973503839855,38.9073984539871,38.8920853941184,38.8972990459879,38.9123244966935,38.8956168421101,38.9123244966935,38.9123244966935,38.8969781468093,38.9123244966935,38.9123244966935,38.9123244966935,38.9048787828423,38.9274357918548,38.8987616906937,38.9138938195312,38.8987616906937,38.9123244966935,38.8969781468093,38.8987616906937,38.8972990459879,38.9123244966935,38.9123244966935,38.9548153114553,38.9380302729804,38.8787837374735,38.8787837374735,38.9496847404464,38.9543732722424,38.9048787828423,38.9365820549103,38.8787837374735,38.8787837374735,38.9179768530971,38.9274357918548,38.89946796557,38.9097640974842,38.9258149304166,38.9268052535431,38.8621904217835,38.9649545520194,38.9123244966935,38.9172327657757,38.8623686329774,38.8787837374735,38.8787837374735,38.9380302729804,38.9123244966935,38.9048787828423,38.8798055571672,38.910474300986,38.8920895186923,38.8920895186923,38.88596760224,38.8532973452793,38.9053614777588,38.9073984539871,38.8987616906937,38.8956168421101,38.9098515112244,38.9357335072095,38.9138938195312,38.9123244966935,38.9123244966935,38.9048787828423,38.8956168421101,38.9173286251987,38.9048787828423,38.9088970908615,38.9368103855674,38.9274357918548,38.9123244966935,38.9123244966935,38.9210224816041,38.9088970908615,38.8987616906937,38.9123244966935,38.9123244966935,38.9123244966935,38.8654379186067,38.8578107817569,38.9274357918548,38.9423807789324,38.9059616936887,38.9138938195312,38.8969781468093,38.9123244966935,38.9172327657757,38.9088970908615,38.8956168421101,38.9123244966935,38.9138938195312,38.8951330487548,38.8969781468093,38.9123244966935,38.9123244966935,38.9053614777588,38.9423807789324,38.9088970908615,38.9088970908615,38.9048787828423,38.9164889640789,38.940274043086,38.8734635996299,38.9048787828423,38.8634589378626,38.9496847404464,38.9123244966935,38.8798055571672,38.8920895186923,38.9560332761835,38.9274357918548,38.9543732722424,38.9040146560079,38.9123244966935,38.9423807789324,38.9548153114553,38.9172327657757,38.9548153114553,38.9173286251987,38.917316280387,38.8836561337461,38.9274357918548,38.8972990459879,38.8897716239952,38.9612590606149,38.8798055571672,38.8972990459879,38.9123244966935,38.9123244966935,38.8734635996299,38.9123244966935,38.8987616906937,38.9274357918548,38.9123244966935,38.8987616906937,38.8789687804984,38.8787837374735,38.8451625626788,38.8956168421101,38.9496847404464,38.8623686329774,38.9548153114553,38.8956168421101,38.8798055571672,38.8623686329774,38.8798055571672,38.9496847404464,38.8787837374735,38.8612799858582,38.8897716239952,38.8956168421101,38.8789687804984,38.8451625626788,38.8956168421101,38.894863626545,38.9162613327615,38.9053614777588,38.9173286251987,38.9172327657757,38.9274357918548,38.9112797582797,38.8986142213319,38.8953966363927,38.9123244966935,38.9123244966935,38.9274357918548,38.8972990459879,38.9612590606149,38.9548153114553,38.9123244966935,38.9274357918548,38.9048787828423,38.9274357918548,38.9274357918548,38.9123244966935,38.9274357918548,38.8987616906937,38.9274357918548,38.9123244966935,38.8956168421101,38.9123244966935,38.8956168421101,38.9274357918548,38.9274357918548,38.9123244966935,38.8987616906937,38.9496847404464,38.9059616936887,38.9059616936887,38.9170022241396,38.9123244966935,38.8734635996299,38.8956168421101,38.9123244966935,38.9138938195312,38.9025309490657,38.8956168421101,38.9138938195312,38.8972990459879,38.9048787828423,38.9548153114553,38.8972990459879,38.9059616936887,38.8787837374735,38.9543732722424,38.8787837374735,38.8451625626788,38.8787837374735,38.89946796557,38.9048787828423,38.8956168421101,38.8451625626788,38.8787837374735,38.9123244966935,38.9548153114553,38.9048787828423,38.8787837374735,38.9235294962134,38.9274357918548,38.89946796557,38.8787837374735,38.9048787828423,38.9123244966935,38.9274357918548,38.8787837374735,38.9274357918548,38.8956168421101,38.8956168421101,38.9123244966935,38.8596570987135,38.9085464380952,38.9157026793758,38.9174665041885,38.89946796557,38.8451625626788,38.8787837374735,38.8787837374735,38.8787837374735,38.8787837374735,38.9325341369399,38.8787837374735,38.8596570987135,38.8612799858582,38.9380302729804,38.8787837374735,38.8787837374735,38.8787837374735,38.9334839511411,38.8787837374735,38.934966441082,38.9496847404464,38.9172327657757,38.8787837374735,38.8787837374735,38.9123244966935,38.9048787828423,38.8490636583331,38.8675194699985,38.9274357918548,38.8972990459879,38.9543732722424,38.89946796557,38.9138938195312,38.9534955858599,38.9138938195312,38.8972990459879,38.8643495056954,38.9543732722424,38.89946796557,38.8972990459879,38.9138938195312,38.9138938195312,38.9610131375442,38.8972990459879,38.9025259356559,38.9543732722424,38.8972990459879,38.9138938195312,38.9512634200038,38.895316136256,38.9138938195312,38.9174665041885,38.9181105671157,38.9088970908615,38.9440418463209,38.8814911968901,38.8814911968901,38.8982168160503,38.9205880085796,38.8983654338939,38.931152542012,38.8972990459879,38.9543732722424,38.9138938195312,38.9543732722424,38.8972990459879,38.8972990459879,38.8972990459879,38.8972990459879,38.9059616936887,38.8972990459879,38.9138938195312,38.9312387469551,38.8972990459879,38.9173464036399,38.9138938195312,38.9543732722424,38.9543732722424,38.9138938195312,38.9543732722424,38.9543732722424,38.9138938195312,38.9138938195312,38.8972990459879,38.9543732722424,38.8972990459879,38.9543732722424,38.8972990459879,38.9543732722424,38.8972990459879,38.9138938195312,38.9138938195312,38.9543732722424,38.8972990459879,38.8972990459879,38.9138938195312,38.9543732722424,38.9543732722424,38.8975384697838,38.8798055571672,38.9123244966935,38.8612799858582,38.9048787828423,38.8451625626788,38.8596570987135,38.9179768530971,38.8787837374735,38.8787837374735,38.8787837374735,38.88596760224,38.9496847404464,38.8787837374735,38.8787837374735,38.9176468207859,38.8612799858582,38.9426070026344,38.9380302729804,38.8787837374735,38.8787837374735,38.8987616906937,38.9088970908615,38.9053614777588,38.9548153114553,38.89946796557,38.8787837374735,38.8787837374735,38.8789687804984,38.9025284756572,38.9543732722424,38.9044419173435,38.8451625626788,38.8787837374735,38.9123244966935,38.8956168421101,38.9059616936887,38.8789687804984,38.9123244966935,38.9138938195312,38.9059616936887,38.9025284756572,38.9123244966935,38.9274357918548,38.9274357918548,38.9123244966935,38.9274357918548,38.9088970908615,38.9123244966935,38.9025309490657,38.9025284756572,38.9496847404464,38.9543732722424,38.9088970908615,38.9123244966935,38.9274357918548,38.9002078830843,38.8897716239952,38.9048787828423,38.9123244966935,38.9207909968505,38.9173286251987,38.9274357918548,38.9123244966935,38.9031185035386,38.9274357918548,38.9123244966935,38.9123244966935,38.88596760224,38.9048787828423,38.9479092542275,38.9048787828423,38.9123244966935,38.8869653795291,38.8969781468093,38.9123244966935,38.9123244966935,38.9551787812221,38.839160510681,38.9274357918548,38.9123244966935,38.9140909939549,38.9612590606149,38.9123244966935,38.9274357918548,38.8897716239952,38.9274357918548,38.8969781468093,38.916997788863,38.9123244966935,38.9123244966935,38.9048787828423,38.8969781468093,38.8969781468093,38.9274357918548,38.9274357918548,38.9274357918548,38.9123244966935,38.8787837374735,38.8787837374735,38.9380302729804,38.9172327657757,38.9048787828423,38.8451625626788,38.8787837374735,38.9248909438896,38.8787837374735,38.8787837374735,38.89946796557,38.8787837374735,38.9548153114553,38.8789687804984,38.8956168421101,38.8787837374735,38.89946796557,38.8596570987135,38.9274357918548,38.9274357918548,38.8975384697838,38.8633176840449,38.9123244966935,38.8987616906937,38.9123244966935,38.8787837374735,38.8956168421101,38.9123244966935,38.8987616906937,38.945212154663,38.8969781468093,38.8451625626788,38.89946796557,38.8897509317986,38.8972990459879,38.8787837374735,38.8612799858582,38.8787837374735,38.8787837374735,38.8787837374735,38.8789687804984,38.8764808713658,38.8787837374735,38.9123244966935,38.8972990459879,38.8612799858582,38.9179768530971,38.8789687804984,38.8956168421101,38.8972990459879,38.9543732722424,38.8956168421101,38.8451625626788,38.8789687804984,38.9123244966935,38.9123244966935,38.8451625626788,38.9365820549103,38.9123244966935,38.9048787828423,38.9123244966935,38.8956168421101,38.9123244966935,38.9123244966935,38.9179768530971,38.8451625626788,38.8451625626788,38.9344365263726,38.8451625626788,38.9179768530971,38.8623686329774,38.9011982293062,38.9496847404464,38.8612799858582,38.8787837374735,38.8787837374735,38.8787837374735,38.8787837374735,38.8612799858582,38.8451625626788,38.951205827418,38.922291710748,38.8787837374735,38.8451625626788,38.8612799858582,38.8787837374735,38.8451625626788,38.8789687804984,38.8787837374735,38.8787837374735,38.8451625626788,38.9365820549103,38.8787837374735,38.89946796557,38.9365820549103,38.8734635996299,38.8987616906937,38.8451625626788,38.8451625626788,38.8787837374735,38.8612799858582,38.8787837374735,38.9393211694272,38.8987616906937,38.8987616906937,38.8787837374735,38.9334379227543,38.8956168421101,38.8787837374735,38.8451625626788,38.8451625626788,38.8451625626788,38.8787837374735,38.8787837374735,38.8787837374735,38.8987616906937,38.8956168421101,38.9548153114553,38.8956168421101,38.9123244966935,38.9123244966935,38.8969781468093,38.9123244966935,38.9059616936887,38.8956168421101,38.9173286251987,38.9560332761835,38.9612590606149,38.9613697378683,38.8730995076929,38.9179363923742,38.9059616936887,38.9048787828423,38.8987616906937,38.9123244966935,38.9219902665064,38.8619228886077,38.9123244966935,38.8987616906937,38.9274357918548,38.9123244966935,38.9423807789324,38.9123244966935,38.8897716239952,38.9172327657757,38.9543732722424,38.9025284756572,38.9123244966935,38.9123244966935,38.9207909968505,38.9059616936887,38.9059616936887,38.8972990459879,38.8987616906937,38.9274357918548,38.9123244966935,38.9274357918548,38.8956168421101,38.9123244966935,38.9123244966935,38.9123244966935,38.8987616906937,38.9176468207859,38.8451625626788,38.9176468207859,38.9133503383739,38.8451625626788,38.9179768530971,38.8787837374735,38.8968777487314,38.9048787828423,38.9496847404464,38.9050231071001,38.8956168421101,38.9123244966935,38.8451625626788,38.8787837374735,38.8451625626788,38.8920853941184,38.9560332761835,38.8920932091134,38.8987616906937,38.8956168421101,38.9123244966935,38.8972990459879,38.9274357918548,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.9274357918548,38.9123244966935,38.9123244966935,38.8612799858582,38.8451625626788,38.8787837374735,38.9123244966935,38.9274357918548,38.9274357918548,38.9059616936887,38.8787837374735,38.8734635996299,38.8787837374735,38.9123244966935,38.8787837374735,38.9088970908615,38.9612590606149,38.8451625626788,38.8897716239952,38.8897509317986,38.8787837374735,38.8951330487548,38.8734635996299,38.8787837374735,38.9088970908615,38.9123244966935,38.9423807789324,38.9123244966935,38.9048787828423,38.8969781468093,38.8956168421101,38.8987616906937,38.9073984539871,38.8987616906937,38.8987616906937,38.9048787828423,38.9123244966935,38.9496847404464,38.8913081036416,38.9123244966935,38.9059616936887,38.9274357918548,38.8972990459879,38.9138938195312,38.8987616906937,38.9496847404464,38.9123244966935,38.9423807789324,38.9123244966935,38.9123244966935,38.9123244966935,38.8972990459879,38.9123244966935,38.9173286251987,38.8798055571672,38.9123244966935,38.8969781468093,38.9123244966935,38.8734635996299,38.9274357918548,38.8972990459879,38.9274357918548,38.9548153114553,38.8798055571672,38.9496847404464,38.9053614777588,38.9088970908615,38.8956168421101,38.8836207563372,38.8969781468093,38.8987616906937,38.9423807789324,38.8987616906937,38.9059616936887,38.8975384697838,38.9192773497019,38.922159399572,38.9274357918548,38.8987616906937,38.9123244966935,38.9612590606149,38.9050231071001,38.9025284756572,38.9138938195312,38.8920895186923,38.9612590606149,38.8532973452793,38.9173286251987,38.8969781468093,38.91572541709,38.8951330487548,38.8951330487548,38.9048787828423,38.9073984539871,38.9437629268365,38.9121392607654,38.9123244966935,38.8969781468093,38.8969781468093,38.8875662818655,38.9423807789324,38.9068468980982,38.9022494164183,38.9123244966935,38.9088970908615,38.9123244966935,38.9025309490657,38.8920895186923,38.9123244966935,38.8972990459879,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.9025284756572,38.8787837374735,38.8897509317986,38.8787837374735,38.8787837374735,38.8787837374735,38.9380302729804,38.8787837374735,38.8612799858582,38.8787837374735,38.8451625626788,38.8451625626788,38.9176468207859,38.9260087608615,38.9525347990541,38.8897509317986,38.9380302729804,38.9380302729804,38.8596570987135,38.8787837374735,38.8787837374735,38.8596570987135,38.8789687804984,38.89946796557,38.8787837374735,38.8596570987135,38.89946796557,38.8451625626788,38.8956168421101,38.9620419851044,38.8951330487548,38.8897509317986,38.89946796557,38.9179768530971,38.9123244966935,38.9274357918548,38.9274357918548,38.9274357918548,38.8789687804984,38.8987616906937,38.8972990459879,38.8451625626788,38.8787837374735,38.9274357918548,38.8987616906937,38.8787837374735,38.8787837374735,38.9560332761835,38.8452487630539,38.9179768530971,38.8451625626788,38.8798055571672,38.9286873734321,38.8596570987135,38.8972990459879,38.8787837374735,38.8789687804984,38.8787837374735,38.8789687804984,38.8987616906937,38.9548153114553,38.8897509317986,38.8787837374735,38.8789687804984,38.8623686329774,38.8787837374735,38.8789687804984,38.8787837374735,38.8995683077075,38.8787837374735,38.9179768530971,38.8787837374735,38.9496847404464,38.8897716239952,38.9123244966935,38.9274357918548,38.9138938195312,38.9028992876415,38.8498385218951,38.8814911968901,38.8920895186923,38.9048787828423,38.9274357918548,38.9138938195312,38.8897499259629,38.9496847404464,38.9123244966935,38.9274357918548,38.9053614777588,38.9190519066355,38.9123244966935,38.9123244966935,38.9173286251987,38.9048787828423,38.9048787828423,38.88596760224,38.8972990459879,38.9123244966935,38.9059616936887,38.8766097734033,38.9749689182037,38.9174665041885,38.8920123914063,38.9041149056007,38.9183041641631,38.9191832287402,38.8787837374735,38.8787837374735,38.9176468207859,38.8987616906937,38.8787837374735,38.8787837374735,38.8972990459879,38.8789687804984,38.8897716239952,38.9423807789324,38.9123244966935,38.8787837374735,38.9548153114553,38.8787837374735,38.9274357918548,38.8451625626788,38.9123244966935,38.8789687804984,38.8506842992464,38.8451625626788,38.8789687804984,38.8787837374735,38.9088970908615,38.8451625626788,38.8798055571672,38.9048787828423,38.8789687804984,38.8451625626788,38.8596570987135,38.8451625626788,38.8787837374735,38.9050231071001,38.8972990459879,38.9179768530971,38.89946796557,38.8451625626788,38.9179768530971,38.8787837374735,38.9123244966935,38.8975384697838,38.9041149056007,38.951205827418,38.8993248658554,38.8789687804984,38.922291710748,38.9179768530971,38.8787837374735,38.8956168421101,38.8787837374735,38.8987616906937,38.8897509317986,38.9548153114553,38.8787837374735,38.9123244966935,38.9179768530971,38.9179768530971,38.9123244966935,38.8956168421101,38.9617274828536,38.9334379227543,38.8956168421101,38.8969781468093,38.9123244966935,38.9123244966935,38.8972990459879,38.8643495056954,38.8987616906937,38.9123244966935,38.9123244966935,38.9496847404464,38.91572541709,38.9274357918548,38.8987616906937,38.8972990459879,38.9274357918548,38.9123244966935,38.9053614777588,38.8987616906937,38.8956168421101,38.9123244966935,38.9123244966935,38.9274357918548,38.8734635996299,38.8972990459879,38.8951330487548,38.9059616936887,38.9183749563733,38.9274357918548,38.8987616906937,38.9123244966935,38.9123244966935,38.903515451943,38.9162842808889,38.902874312653,38.9073984539871,38.9123244966935,38.9025284756572,38.9123244966935,38.9320394189916,38.9260087608615,38.9059616936887,38.9123244966935,38.9123244966935,38.8951330487548,38.9123244966935,38.8734635996299,38.9028992876415,38.9280063734049,38.9260087608615,38.9123244966935,38.8972990459879,38.8987616906937,38.9274357918548,38.9274357918548,38.9025284756572,38.8920853941184,38.9048787828423,38.9123244966935,38.9002078830843,38.8969781468093,38.9123244966935,38.88596760224,38.9274357918548,38.8987616906937,38.9274357918548,38.9548153114553,38.9048787828423,38.9123244966935,38.8956168421101,38.9123244966935,38.9274357918548,38.9274357918548,38.9274357918548,38.91572541709,38.9173286251987,38.9423807789324,38.9431622193456,38.857491676747,38.9065583355158,38.9447833853117,38.9190519066355,38.8956845105758,38.9048787828423,38.9496847404464,38.8920853941184,38.8623686329774,38.9612590606149,38.9423807789324,38.9274357918548,38.8956168421101,38.9172327657757,38.8798055571672,38.9274357918548,38.9123244966935,38.9088970908615,38.9123244966935,38.9123244966935,38.8969781468093,38.9138938195312,38.8798055571672,38.9138938195312,38.91572541709,38.8798055571672,38.884807925326,38.9059616936887,38.9088970908615,38.8798055571672,38.9123244966935,38.9496847404464,38.9496847404464,38.8920853941184,38.9560332761835,38.9612590606149,38.9048787828423,38.9053614777588,38.9123244966935,38.8972990459879,38.8920895186923,38.9088970908615,38.9138938195312,38.9123244966935,38.8798055571672,38.9053614777588,38.9096429020023,38.9123244966935,38.8987616906937,38.9123244966935,38.9123244966935,38.8956168421101,38.9021973196021,38.9074379794128,38.9383654075401,38.8951330487548,38.9274357918548,38.8956168421101,38.8956168421101,38.9274357918548,38.9543732722424,38.9123244966935,38.9274357918548,38.9123244966935,38.9496847404464,38.916997788863,38.9048787828423,38.9548153114553,38.9333112177818,38.8992749218102,38.9529625133808,38.9100812447777,38.9630908296604,38.8956168421101,38.9172327657757,38.9123244966935,38.9123244966935,38.9123244966935,38.9274357918548,38.9444335831293,38.9048787828423,38.8970551363322,38.8982168160503,38.8860357761264,38.9232372173398,38.9059616936887,38.8954695514153,38.8987616906937,38.9123244966935,38.8951330487548,38.9612590606149,38.8956168421101,38.9524071341696,38.8987616906937,38.8956168421101,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.9496847404464,38.8623686329774,38.8623686329774,38.9048787828423,38.9053614777588,38.8972990459879,38.8798055571672,38.8798055571672,38.9274357918548,38.9138938195312,38.8897716239952,38.8798055571672,38.8987616906937,38.8920895186923,38.9025284756572,38.9274357918548,38.9025284756572,38.9274357918548,38.9610173877836,38.8508479247864,38.8792413940566,38.9174665041885,38.9123244966935,38.9123244966935,38.9123244966935,38.9423807789324,38.9123244966935,38.8969781468093,38.9543732722424,38.9138938195312,38.9548153114553,38.9274357918548,38.9138938195312,38.8859812387595,38.8972990459879,38.8915270237798,38.8948682830652,38.9123244966935,38.9123244966935,38.9612590606149,38.8956168421101,38.9138938195312,38.9025309490657,38.8972990459879,38.8943134581546,38.9172327657757,38.8672656504225,38.8920853941184,38.9423807789324,38.9274357918548,38.9050231071001,38.9496847404464,38.8978358695062,38.9059616936887,38.8969781468093,38.914479549379,38.9088970908615,38.8798055571672,38.9050925806168,38.9059616936887,38.9583514018517,38.9612590606149,38.8951330487548,38.91572541709,38.9123244966935,38.9123244966935,38.9274357918548,38.9637719690617,38.8545370207381,38.9048787828423,38.903740865066,38.9048787828423,38.9405340958311,38.866864311071,38.8861447048405,38.9073984539871,38.9543732722424,38.9123244966935,38.9274357918548,38.9138938195312,38.8972990459879,38.9543732722424,38.8987616906937,38.9123244966935,38.9615176839198,38.9167668244196,38.9049055934718,38.9610211378714,38.9235294962134,38.8956168421101,38.9529675225183,38.9123244966935,38.9059616936887,38.9274357918548,38.8920895186923,38.8798055571672,38.9123244966935,38.9123244966935,38.9342755467921,38.9123244966935,38.9123244966935,38.9543732722424,38.9123244966935,38.8987616906937,38.8969781468093,38.9274357918548,38.9274357918548,38.9123244966935,38.9274357918548,38.9123244966935,38.9138938195312,38.8987616906937,38.9548153114553,38.9123244966935,38.9123244966935,38.9123244966935,38.8969781468093,38.9088970908615,38.9123244966935,38.9123244966935,38.8969781468093,38.9286873734321,38.8956168421101,38.9123244966935,38.8956168421101,38.8987616906937,38.89946796557,38.8789687804984,38.9534955858599,38.8787837374735,38.8956168421101,38.8789687804984,38.8787837374735,38.8897716239952,38.8787837374735,38.8787837374735,38.89946796557,38.8787837374735,38.8787837374735,38.9138938195312,38.916997788863,38.8787837374735,38.8987616906937,38.8787837374735,38.9048787828423,38.8451625626788,38.8987616906937,38.8956168421101,38.8956168421101,38.9123244966935,38.9123244966935,38.9123244966935,38.8987616906937,38.9048787828423,38.9274357918548,38.9123244966935,38.8956168421101,38.8787837374735,38.8787837374735,38.8612799858582,38.8876149022161,38.9258149304166,38.8581657132777,38.8451625626788,38.8787837374735,38.924566367212,38.8787837374735,38.8789687804984,38.9123244966935,38.8451625626788,38.8787837374735,38.8787837374735,38.9048787828423,38.9123244966935,38.8920895186923,38.8837393364216,38.8897716239952,38.9123244966935,38.9123244966935,38.9123244966935,38.9274357918548,38.9025284756572,38.9274357918548,38.9274357918548,38.9123244966935,38.9123244966935,38.8920853941184,38.9123244966935,38.9551787812221,38.9187119948191,38.9123244966935,38.88596760224,38.9123244966935,38.9123244966935,38.9123244966935,38.9048787828423,38.9274357918548,38.9123244966935,38.9123244966935,38.9123244966935,38.9037423454166,38.8969781468093,38.9274357918548,38.9235294962134,38.9173286251987,38.8897716239952,38.912137304925,38.9123244966935,38.9123244966935,38.8920895186923,38.8920895186923,38.9048787828423,38.9048787828423,38.916997788863,38.9123244966935,38.9123244966935,38.9123244966935,38.919301350393,38.9123244966935,38.9048787828423,38.9123244966935,38.9274357918548,38.8956168421101,38.9207909968505,38.9059616936887,38.9543732722424,38.9123244966935,38.9123244966935,38.9274357918548,38.9123244966935,38.8969781468093,38.9274357918548,38.9123244966935,38.9189840165291,38.8904737256621,38.8956168421101,38.9123244966935,38.9496847404464,38.9123244966935,38.9123244966935,38.8969781468093,38.9153792718149,38.9025309490657,38.849745676869,38.88596760224,38.8532973452793,38.916997788863,38.9053614777588,38.9048787828423,38.9423807789324,38.9073984539871,38.9274357918548,38.8798055571672,38.8814911968901,38.8846290450412,38.9059616936887,38.9496847404464,38.9048787828423,38.9612590606149,38.9123244966935,38.88596760224,38.9123244966935,38.9123244966935,38.8972990459879,38.8897716239952,38.9123244966935,38.9173286251987,38.8956168421101,38.8555865136976,38.915572699305,38.9335961274498,38.8937872292815,38.9048787828423,38.9274357918548,38.8798055571672,38.88596760224,38.9123244966935,38.9123244966935,38.9123244966935,38.9138938195312,38.9274357918548,38.9123244966935,38.9274357918548,38.8987616906937,38.9123244966935,38.8956168421101,38.8972990459879,38.9123244966935,38.8987616906937,38.9123244966935,38.9138938195312,38.9543732722424,38.8897716239952,38.9172327657757,38.9179768530971,38.8956168421101,38.8987616906937,38.9123244966935,38.9274357918548,38.8798055571672,38.9174665041885,38.9199330378813,38.9300943915617,38.8975384697838,38.9543732722424,38.8987616906937,38.8956168421101,38.9123244966935,38.9274357918548,38.9274357918548,38.8837330471257,38.9056459348207,38.9245082011412,38.9190519066355,38.8814911968901,38.8759580923579,38.9056459348207,38.903576774495,38.9056459348207,38.931152542012,38.9046700908518,38.9226607788422,38.8907801434206,38.9226607788422,38.8823038839427,38.9260087608615,38.8920895186923,38.8920932091134,38.8920932091134,38.9073984539871,38.9073984539871,38.9073984539871,38.9073984539871,38.9123244966935,38.8987616906937,38.9123244966935,38.8972990459879,38.9123244966935,38.9242387955974,38.9123244966935,38.9274357918548,38.9138938195312,38.9138938195312,38.9059616936887,38.9123244966935,38.8969781468093,38.8969781468093,38.9138938195312,38.8956168421101,38.9123244966935,38.8897499259629,38.9123244966935,38.9123244966935,38.9496847404464,38.8951330487548,38.8798055571672,38.9025309490657,38.8972990459879,38.9274357918548,38.8987616906937,38.9179768530971,38.9179768530971,38.8451625626788,38.8451625626788,38.8987616906937,38.8596570987135,38.9088970908615,38.8612799858582,38.8596570987135,38.8787837374735,38.9059616936887,38.9059616936887,38.8506842992464,38.8456596381951,38.920619674087,38.8993605128784,38.922291710748,38.89946796557,38.8789687804984,38.8787837374735,38.9050231071001,38.8787837374735,38.9610131375442,38.9073984539871,38.900330710376,38.91572541709,38.9048787828423,38.9286873734321,38.9065583355158,38.9123244966935,38.9173286251987,38.9123244966935,38.8798055571672,38.8972990459879,38.9543732722424,38.9123244966935,38.9138938195312,38.9138938195312,38.9274357918548,38.9123244966935,38.9123244966935,38.9219902665064,38.9238410489659,38.8969781468093,38.9123244966935,38.9123244966935,38.8987616906937,38.9274357918548,38.8787837374735,38.8787837374735,38.9123244966935,38.9123244966935,38.9123244966935,38.9172327657757,38.910474300986,38.9274357918548,38.9053614777588,38.8987616906937,38.8623686329774,38.9002078830843,38.9025284756572,38.9048787828423,38.9123244966935,38.8969781468093,38.9286112515713,38.9123244966935,38.9088970908615,38.9123244966935,38.9123244966935,38.8734635996299,38.8532973452793,38.916997788863,38.9543732722424,38.9127514757863,38.9510537446491,38.919168317407,38.9546982353771,38.8976865064961,38.922159399572,38.9123244966935,38.9088970908615,38.8798055571672,38.9048787828423,38.9048787828423,38.9327472582251,38.9536615977419,38.9561067208268,38.8734635996299,38.8987616906937,38.8987616906937,38.9274357918548,38.9123244966935,38.9048787828423,38.9123244966935,38.9423807789324,38.9035827607607,38.9199923108837,38.8868755284734,38.9059616936887,38.9123244966935,38.8798055571672,38.9123244966935,38.9123244966935,38.9612590606149,38.88596760224,38.8920895186923,38.9274357918548,38.9123244966935,38.9138938195312,38.8920895186923,38.9025284756572,38.9173286251987,38.8958466788634,38.912137304925,38.88596760224,38.8875662818655,38.9123244966935,38.9123244966935,38.8920895186923,38.8798055571672,38.9123244966935,38.8920895186923,38.9496847404464,38.8957793045143,38.9123244966935,38.9123244966935,38.8987616906937,38.9123244966935,38.9123244966935,38.9274357918548,38.9274357918548,38.8972990459879,38.8951330487548,38.8734635996299,38.9172327657757,38.8920895186923,38.8798055571672,38.9548153114553,38.9172327657757,38.9274357918548,38.8969781468093,38.8956168421101,38.8787837374735,38.8956168421101,38.9123244966935,38.9274357918548,38.9123244966935,38.9174665041885,38.9138938195312,38.8972990459879,38.9274357918548,38.9274357918548,38.9423807789324,38.9109206153356,38.9123244966935,38.9274357918548,38.9123244966935,38.9274357918548,38.9123244966935,38.8848304358223,38.9174665041885,38.9100812447777,38.9170033906559,38.9143522299919,38.9173286251987,38.9274357918548,38.9065583355158,38.8969781468093,38.8798055571672,38.9123244966935,38.9123244966935,38.9138938195312,38.8897716239952,38.8972990459879,38.8987616906937,38.9059616936887,38.8986274386105,38.9316345061203,38.8920895186923,38.9123244966935,38.9423807789324,38.9548153114553,38.8956168421101,38.9543732722424,38.9219902665064,38.9123244966935,38.8987616906937,38.9543732722424,38.9543732722424,38.8707432383027,38.9138938195312,38.8956168421101,38.9176468207859,38.8787837374735,38.9173286251987,38.9543732722424,38.8972990459879,38.8972990459879,38.8972990459879,38.9123244966935,38.9037565280787,38.9123244966935,38.9423807789324,38.9496847404464,38.8532973452793,38.9048787828423,38.9612590606149,38.9123244966935,38.9274357918548,38.8868755284734,38.8814911968901,38.8956168421101,38.9123244966935,38.8987616906937,38.8969781468093,38.9073984539871,38.9138938195312,38.8969781468093,38.8987616906937,38.8987616906937,38.9123244966935,38.9274357918548,38.8987616906937,38.9123244966935,38.9123244966935,38.9123244966935,38.8969781468093,38.9138938195312,38.9138938195312,38.9085756249493,38.9199923108837,38.9260087608615,38.9199923108837,38.8798055571672,38.9274357918548,38.9123244966935,38.9123244966935,38.9274357918548,38.8956168421101,38.9123244966935,38.9274357918548,38.9123244966935,38.9088970908615,38.9123244966935,38.9048787828423,38.9361272451973,38.9123244966935,38.9218324203302,38.9258149304166,38.9073984539871,38.9274357918548,38.8987616906937,38.8612799858582,38.8987616906937,38.8956168421101,38.8956168421101,38.9274357918548,38.8972990459879,38.9138938195312,38.8956168421101,38.9274357918548,38.9123244966935,38.8787837374735,38.9172327657757,38.8787837374735,38.8987616906937,38.9048787828423,38.89946796557,38.8532973452793,38.8596570987135,38.8596570987135,38.8787837374735,38.8787837374735,38.8787837374735,38.8787837374735,38.8596570987135,38.8787837374735,38.9179768530971,38.8596570987135,38.8787837374735,38.8787837374735,38.9334379227543,38.9637707645817,38.8928010048644,38.8568635042959,38.8451625626788,38.9173286251987,38.9543732722424,38.8875662818655,38.9123244966935,38.8787837374735,38.9248909438896,38.8451625626788,38.9380302729804,38.9286873734321,38.8787837374735,38.8451625626788,38.8451625626788,38.8787837374735,38.8787837374735,38.9179768530971,38.9048787828423,38.9138938195312,38.9612590606149,38.8897509317986,38.8623686329774,38.9123244966935,38.9138938195312,38.8789687804984,38.9393211694272,38.9325341369399,38.8787837374735,38.89946796557,38.8596570987135,38.9172327657757,38.9088970908615,38.9123244966935,38.9236352538089,38.934966441082,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.9056552586373,38.9025284756572,38.9048787828423,38.9123244966935,38.9123244966935,38.9123244966935,38.9274357918548,38.9123244966935,38.9123244966935,38.9274357918548,38.9123244966935,38.9123244966935,38.9123244966935,38.8920895186923,38.9173286251987,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.9073984539871,38.9123244966935,38.9088970908615,38.910474300986,38.9172327657757,38.9048787828423,38.9423807789324,38.9496847404464,38.8951330487548,38.9123244966935,38.8969781468093,38.9100262223449,38.9650593212956,38.8446706514902,38.9172327657757,38.9123244966935,38.9274357918548,38.9138938195312,38.9123244966935,38.9274357918548,38.8972990459879,38.8956168421101,38.8972990459879,38.9123244966935,38.9123244966935,38.9123244966935,38.9138938195312,38.8956168421101,38.88596760224,38.8920853941184,38.9380302729804,38.8764808713658,38.8787837374735,38.8787837374735,38.89946796557,38.8787837374735,38.8789687804984,38.8787837374735,38.8787837374735,38.9380302729804,38.9059616936887,38.9535994431078,38.8787837374735,38.8787837374735,38.9496847404464,38.8623686329774,38.8972990459879,38.9025284756572,38.9274357918548,38.8798055571672,38.8897716239952,38.8956168421101,38.9123244966935,38.9219902665064,38.8920895186923,38.9048787828423,38.9138938195312,38.9496847404464,38.88596760224,38.9274357918548,38.9172327657757,38.9123244966935,38.9123244966935,38.9123244966935,38.9560332761835,38.9123244966935,38.9138938195312,38.9123244966935,38.8451625626788,38.9179768530971,38.8969781468093,38.9123244966935,38.8969781468093,38.8969781468093,38.9274357918548,38.8987616906937,38.9179768530971,38.8787837374735,38.8956168421101,38.9123244966935,38.8987616906937,38.8987616906937,38.8798055571672,38.8920895186923,38.8987616906937,38.9138938195312,38.9040600365694,38.9123244966935,38.9168683740807,38.8875520434073,38.9274357918548,38.8956168421101,38.8972990459879,38.9002078830843,38.912137304925,38.9123244966935,38.9548153114553,38.8786640571813,38.9123244966935,38.8956168421101,38.8969781468093,38.8956168421101,38.9612590606149,38.9123244966935,38.9172327657757,38.8956168421101,38.9123244966935,38.9037423454166,38.9260087608615,38.9172327657757,38.9423807789324,38.8987616906937,38.916997788863,38.9534955858599,38.8787837374735,38.89946796557,38.9123244966935,38.9179768530971,38.9365820549103,38.8956168421101,38.8451625626788,38.8789687804984,38.8987616906937,38.89946796557,38.8956168421101,38.8787837374735,38.8956168421101,38.8789687804984,38.9543732722424,38.9365820549103,38.9548153114553,38.8637419949753,38.9525347990541,38.9179768530971,38.9123244966935,38.9123244966935,38.8875662818655,38.9123244966935,38.9138938195312,38.8969781468093,38.9274357918548,38.9274357918548,38.8969781468093,38.9123244966935,38.9048787828423,38.9274357918548,38.8987616906937,38.8920895186923,38.9274357918548,38.8972990459879,38.8734635996299,38.9274357918548,38.9543732722424,38.9123244966935,38.9096438920387,38.9191453948018,38.8975384697838,38.8920895186923,38.8956168421101,38.9423807789324,38.9123244966935,38.9138938195312,38.9123244966935,38.9002078830843,38.9543732722424,38.9112797582797,38.9363447583329,38.9037423454166,38.8977331510305,38.9138938195312,38.9123244966935,38.9423807789324,38.910474300986,38.9138938195312,38.9274357918548,38.9543732722424,38.9548153114553,38.8623686329774,38.9172327657757,38.9048787828423,38.9088970908615,38.9274357918548,38.9172327657757,38.9123244966935,38.8941844957614,38.9037432407385,38.9048787828423,38.9423807789324,38.9123244966935,38.8956168421101,38.8956168421101,38.9123244966935,38.9059895900236,38.928801771091,38.8792413940566,38.9231234379803,38.9088914377954,38.9138938195312,38.9274357918548,38.9123244966935,38.9543732722424,38.9543732722424,38.9123244966935,38.9612590606149,38.9274357918548,38.9423807789324,38.9123244966935,38.9274357918548,38.91572541709,38.9219902665064,38.9123244966935,38.9274357918548,38.9172327657757,38.9059616936887,38.8847724125012,38.9422158809701,38.9232051998081,38.901325638812,38.9173286251987,38.8969781468093,38.9123244966935,38.88596760224,38.8798055571672,38.8972990459879,38.8532973452793,38.9543732722424,38.8987616906937,38.9123244966935,38.8956168421101,38.9274357918548,38.9548153114553,38.9088970908615,38.9224712103701,38.9499347278567,38.9088970908615,38.9053614777588,38.8798055571672,38.9073984539871,38.91572541709,38.8637419949753,38.9059616936887,38.9138938195312,38.9123244966935,38.9548153114553,38.8787837374735,38.8787837374735,38.9380302729804,38.8787837374735,38.8987616906937,38.9088970908615,38.9088970908615,38.8987616906937,38.9560332761835,38.9496847404464,38.9423807789324,38.9548153114553,38.9053614777588,38.8787837374735,38.8787837374735,38.8451625626788,38.8956168421101,38.8451625626788,38.8787837374735,38.8787837374735,38.8951330487548,38.8987616906937,38.9423807789324,38.8956168421101,38.9053614777588,38.9172327657757,38.9087731521528,38.8975384697838,38.8886761807982,38.884730114967,38.916997788863,38.9123244966935,38.9423807789324,38.9123244966935,38.8972990459879,38.9274357918548,38.9274357918548,38.9123244966935,38.9612590606149,38.9053614777588,38.9274357918548,38.9088970908615,38.9274357918548,38.9138938195312,38.8875662818655,38.9274357918548,38.9123244966935,38.8969781468093,38.9123244966935,38.8956168421101,38.9496847404464,38.9123244966935,38.9123244966935,38.8987616906937,38.9059616936887,38.8973733341872,38.9274357918548,38.9543732722424,38.8764751053388,38.8984836706253,38.9229910503275,38.9123244966935,38.8987616906937,38.9123244966935,38.9543732722424,38.9219902665064,38.9123244966935,38.8956168421101,38.8972990459879,38.9260087608615,38.9108864624835,38.9028992876415,38.9274357918548,38.9123244966935,38.9123244966935,38.8916627612261,38.9041673509355,38.9063438561848,38.9053614777588,38.8956168421101,38.9123244966935,38.8972990459879,38.9123244966935,38.9123244966935,38.9170022241396,38.9260087608615,38.9123244966935,38.9219902665064,38.8564559602009,38.8998076685477,38.9543732722424,38.8969781468093,38.9274357918548,38.9123244966935,38.9123244966935,38.9123244966935,38.8956168421101,38.8987616906937,38.9274357918548,38.9123244966935,38.9123244966935,38.9543732722424,38.88596760224,38.9274357918548,38.8897716239952,38.8789687804984,38.9123244966935,38.9123244966935,38.8969781468093,38.8956168421101,38.9274357918548,38.9274357918548,38.9087731521528,38.8451625626788,38.9048787828423,38.8451625626788,38.9380302729804,38.9053614777588,38.8764808713658,38.8532973452793,38.9610131375442,38.8787837374735,38.8787837374735,38.8787837374735,38.8787837374735,38.8789687804984,38.8596570987135,38.8612799858582,38.9380302729804,38.9274357918548,38.9123244966935,38.8987616906937,38.8956168421101,38.8972990459879,38.9274357918548,38.9123244966935,38.9025284756572,38.8451625626788,38.9179768530971,38.8451625626788,38.8596570987135,38.8787837374735,38.8451625626788,38.8787837374735,38.8789687804984,38.8897716239952,38.9123244966935,38.9123244966935,38.8451625626788,38.8956168421101,38.9059616936887,38.8287041350073,38.8581657132777,38.9560332761835,38.9123244966935,38.8451625626788,38.9179768530971,38.9172327657757,38.9138938195312,38.8451625626788,38.9365820549103,38.9123244966935,38.9123244966935,38.9365820549103,38.8987616906937,38.9123244966935,38.89946796557,38.9174665041885,38.9365820549103,38.8787837374735,38.8612799858582,38.8787837374735,38.8787837374735,38.9172327657757,38.9123244966935,38.8969781468093,38.8987616906937,38.933450482502,38.9615176839198,38.9123244966935,38.9123244966935,38.9123244966935,38.9496847404464,38.9123244966935,38.9025284756572,38.8734635996299,38.88596760224,38.9123244966935,38.9123244966935,38.9123244966935,38.8956168421101,38.9123244966935,38.9088970908615,38.8798055571672,38.9123244966935,38.9123244966935,38.9123244966935,38.8623686329774,38.8623686329774,38.9123244966935,38.9172327657757,38.9138938195312,38.9123244966935,38.9048787828423,38.9543732722424,38.9123244966935,38.9123244966935,38.8972990459879,38.9123244966935,38.8987616906937,38.9088027982425,38.9059616936887,38.8734635996299,38.8734635996299,38.9048787828423,38.9546926895927,38.9088970908615,38.9053614777588,38.9048787828423,38.9496847404464,38.9179768530971,38.9123244966935,38.9138938195312,38.8969781468093,38.9123244966935,38.9123244966935,38.8972990459879,38.8787837374735,38.8612799858582,38.8787837374735,38.8787837374735,38.8596570987135,38.8612799858582,38.8787837374735,38.8787837374735,38.8787837374735,38.8787837374735,38.9173286251987,38.88596760224,38.9173286251987,38.8787837374735,38.8787837374735,38.9179768530971,38.9172327657757,38.8789687804984,38.9334379227543,38.9462737108585,38.8789687804984,38.8972990459879,38.9123244966935,38.8451625626788,38.8789687804984,38.8951330487548,38.8787837374735,38.9334379227543,38.916997788863,38.8475035707461,38.8475035707461,38.9025227612682,38.9476657883372,38.9123244966935,38.8956168421101,38.8798055571672,38.8956168421101,38.8969781468093,38.9002078830843,38.8951330487548,38.8956168421101,38.9123244966935,38.9274357918548,38.9274357918548,38.901779737598,38.9162842808889,38.8920853941184,38.9123244966935,38.9050231071001,38.9123244966935,38.9123244966935,38.8972990459879,38.9048787828423,38.9053614777588,38.9274357918548,38.8897716239952,38.8787837374735,38.89946796557,38.8787837374735,38.9179768530971,38.9118648222677,38.8787837374735,38.9274357918548,38.9274357918548,38.9138938195312,38.9123244966935,38.8451625626788,38.8596570987135,38.8506842992464,38.8789687804984,38.89946796557,38.9334379227543,38.9123244966935,38.9534955858599,38.8787837374735,38.9123244966935,38.8956168421101,38.8789687804984,38.8787837374735,38.9123244966935,38.8787837374735,38.8787837374735,38.8897509317986,38.8787837374735,38.8610939347425,38.9542466987947,38.8787837374735,38.8787837374735,38.9543732722424,38.9561761776676,38.9170022241396,38.9171925861194,38.8897509317986,38.8787837374735,38.8787837374735,38.9543732722424,38.858750929445,38.8789687804984,38.8451625626788,38.8451625626788,38.8643495056954,38.88596760224,38.8612799858582,38.8643495056954,38.8623686329774,38.8956168421101,38.9138938195312,38.9172475652477,38.89946796557,38.8451625626788,38.8787837374735,38.9274357918548,38.9138938195312,38.9123244966935,38.8787837374735,38.9543732722424,38.89946796557,38.8956168421101,38.8787837374735,38.8789687804984,38.8789687804984,38.8451625626788,38.9179768530971,38.8789687804984,38.8789687804984,38.8787837374735,38.8787837374735,38.8787837374735,38.89946796557,38.8787837374735,38.9548153114553,38.9048787828423,38.8969781468093,38.9123244966935,38.9123244966935,38.9048787828423,38.9138938195312,38.9138938195312,38.9138938195312,38.9138938195312,38.8972990459879,38.9138938195312,38.8972990459879,38.8972990459879,38.8972990459879,38.8972990459879,38.9138938195312,38.9138938195312,38.9138938195312,38.9543732722424,38.9059616936887,38.9138938195312,38.8932990791349,38.9059616936887,38.89946796557,38.9543732722424,38.9138938195312,38.9543732722424,38.8972990459879,38.8972990459879,38.8972990459879,38.9059616936887,38.9059616936887,38.9072372046002,38.9140915626003,38.9123244966935,38.9274357918548,38.9524071341696,38.8969781468093,38.9123244966935,38.8969781468093,38.9123244966935,38.9053614777588,38.9123244966935,38.9123244966935,38.8920853941184,38.8969781468093,38.9181060363312,38.9275259477416,38.931152542012,38.8940043055384,38.9050231071001,38.9048787828423,38.8969781468093,38.8969781468093,38.8987616906937,38.9123244966935,38.9002078830843,38.8972990459879,38.916997788863,38.9138938195312,38.9048787828423,38.8972990459879,38.8969781468093,38.9048787828423,38.8623686329774,38.9123244966935,38.9059616936887,38.9274357918548,38.9286873734321,38.9543732722424,38.9138938195312,38.9274357918548,38.9123244966935,38.8956168421101,38.9048787828423,38.9543732722424,38.9548153114553,38.8972990459879,38.9123244966935,38.9172327657757,38.9123244966935,38.9025284756572,38.9002078830843,38.8956168421101,38.9028992876415,38.8841739534294,38.9096437534673,38.9123244966935,38.9123244966935,38.9172327657757,38.9088970908615,38.88596760224,38.9173286251987,38.8798055571672,38.9123244966935,38.9620419851044,38.9048787828423,38.9013181107728,38.8998094582513,38.9059616936887,38.9123244966935,38.9123244966935,38.9048787828423,38.91572541709,38.9173286251987,38.8956168421101,38.8987616906937,38.9088970908615,38.9025284756572,38.9172327657757,38.9174721697322,38.8630904127998,38.9059616936887,38.8972990459879,38.9123244966935,38.8956168421101,38.9496847404464,38.8623686329774,38.8787837374735,38.8612799858582,38.9123244966935,38.9365820549103,38.9047552909073,38.846539202737,38.8787837374735,38.8897716239952,38.8897509317986,38.8787837374735,38.8787837374735,38.8787837374735,38.8596570987135,38.8787837374735,38.8787837374735,38.8787837374735,38.89946796557,38.8787837374735,38.8612799858582,38.9274357918548,38.9138938195312,38.9123244966935,38.9123244966935,38.9123244966935,38.8956168421101,38.8969781468093,38.9176468207859,38.9002078830843,38.8956168421101,38.8956168421101,38.8969781468093,38.9274357918548,38.8787837374735,38.8787837374735,38.89946796557,38.8451625626788,38.8956168421101,38.9172327657757,38.8451625626788,38.8956168421101,38.8787837374735,38.8897509317986,38.8789687804984,38.8956168421101,38.8787837374735,38.8787837374735,38.8451625626788,38.91572541709,38.8787837374735,38.8787837374735,38.8451625626788,38.8787837374735,38.8798055571672,38.9560332761835,38.9050231071001,38.9334379227543,38.8956168421101,38.8956168421101,38.8987616906937,38.8734635996299,38.8787837374735,38.8451625626788,38.8451625626788,38.8798055571672,38.8972990459879,38.9543732722424,38.9048787828423,38.9208645366586,38.8975384697838,38.9059616936887,38.9123244966935,38.9219902665064,38.9123244966935,38.9172327657757,38.9172327657757,38.910474300986,38.8798055571672,38.8987616906937,38.8975344324384,38.9123244966935,38.9025284756572,38.8787837374735,38.9610131375442,38.9365820549103,38.9176468207859,38.9274357918548,38.8451625626788,38.9073984539871,38.9123244966935,38.9334379227543,38.9334379227543,38.8787837374735,38.8787837374735,38.9365820549103,38.8972990459879,38.8969781468093,38.9274357918548,38.8596570987135,38.8787837374735,38.8612799858582,38.8787837374735,38.8787837374735,38.8787837374735,38.8787837374735,38.8787837374735,38.8787837374735,38.8596570987135,38.9380302729804,38.8451625626788,38.8612799858582,38.8451625626788,38.8972990459879,38.9123244966935,38.8956168421101,38.8972990459879,38.8987616906937,38.8451625626788,38.9176468207859,38.9088970908615,38.9123244966935,38.8969781468093,38.9123244966935,38.9123244966935,38.9050231071001,38.8787837374735,38.9050624943214,38.8446712533163,38.8951330487548,38.9172327657757,38.9123244966935,38.9274357918548,38.8787837374735,38.8612799858582,38.8956168421101,38.8787837374735,38.8787837374735,38.8451625626788,38.8987616906937,38.8987616906937,38.9172327657757,38.8612799858582,38.8987616906937,38.8451625626788,38.8951330487548,38.8798055571672,38.8623686329774,38.8987616906937,38.8734635996299,38.9380302729804,38.9496847404464,38.8787837374735,38.9380302729804,38.9334379227543,38.9048787828423,38.9123244966935,38.9527481056059,38.9274357918548,38.9183071824657,38.910474300986,38.8787837374735,38.9048787828423,38.8787837374735,38.8787837374735,38.9123244966935,38.8789687804984,38.9048787828423,38.8787837374735,38.8875662818655,38.9123244966935,38.8972990459879,38.8451625626788,38.9179768530971,38.8612799858582,38.9543732722424,38.8451625626788,38.9002078830843,38.9166131879094,38.9274357918548,38.9123244966935,38.9048787828423,38.9123244966935,38.9274357918548,38.9123244966935,38.9123244966935,38.9274357918548,38.8832022965252,38.9025284756572,38.9048787828423,38.9173286251987,38.9123244966935,38.9123244966935,38.9123244966935,38.9040216354034,38.8969781468093,38.8969781468093,38.9123244966935,38.8969781468093,38.9365820549103,38.9123244966935,38.8897716239952,38.8948682830652,38.8897716239952,38.9274357918548,38.9274357918548,38.9274357918548,38.9123244966935,38.9123244966935,38.9123244966935,38.9088970908615,38.9048787828423,38.9002078830843,38.8969781468093,38.9123244966935,38.8858036281404,38.9043036675217,38.8987616906937,38.9274357918548,38.9123244966935,38.9138938195312,38.9262723307205,38.9170022241396,38.8937840553337,38.9423807789324,38.9123244966935,38.9274357918548,38.9274357918548,38.9123244966935,38.9496847404464,38.9138938195312,38.9274357918548,38.9274357918548,38.8987616906937,38.9274357918548,38.8920889644641,38.8798055571672,38.9543732722424,38.9048787828423,38.8987616906937,38.9173286251987,38.9123244966935,38.9123244966935,38.8623686329774,38.8996437684213,38.8969781468093,38.9543732722424,38.8972990459879,38.8972990459879,38.9123244966935,38.9229229331704,38.9170022241396,38.929619275213,38.9123244966935,38.9088970908615,38.9274357918548,38.9138938195312,38.9138938195312,38.9173286251987,38.9172327657757,38.8972990459879,38.9138938195312,38.8969781468093,38.9274357918548,38.9274357918548,38.8969781468093,38.8572758574131,38.9059420759693,38.9496847404464,38.884807925326,38.9211010048957,38.9404714324046,38.9173286251987,38.9048787828423,38.8969781468093,38.8623686329774,38.9073984539871,38.9612590606149,38.8969781468093,38.9488117175736,38.8798055571672,38.9123244966935,38.8987616906937,38.8987616906937,38.9543732722424,38.9123244966935,38.8876136766068,38.9167715805073,38.9059616936887,38.88596760224,38.9363285015409,38.931152542012,38.9138938195312,38.9123244966935,38.9138938195312,38.9123244966935,38.9274357918548,38.9138938195312,38.9543732722424,38.9274357918548,38.9274357918548,38.9123244966935,38.9123244966935,38.9138938195312,38.9123244966935,38.9123244966935,38.8972990459879,38.9543732722424,38.8987616906937,38.9274357918548,38.9123244966935,38.9173286251987,38.9123244966935,38.9123244966935,38.9274357918548,38.9123244966935,38.9548153114553,38.9219902665064,38.9274357918548,38.9274357918548,38.8920895186923,38.9123244966935,38.9274357918548,38.9123244966935,38.9274357918548,38.9138938195312,38.9123244966935,38.9048787828423,38.9123244966935,38.9048787828423,38.9543732722424,38.8972990459879,38.8932997824541,38.9333543222086,38.8798055571672,38.9025309490657,38.9548153114553,38.9088970908615,38.88596760224,38.9048787828423,38.9050231071001,38.9612590606149,38.9172327657757,38.8527238689045,38.8798055571672,38.8798055571672,38.9088970908615,38.9088970908615,38.9088018025039,38.9548153114553,38.9546926895927,38.9496847404464,38.8972990459879,38.9048787828423,38.9138938195312,38.8987616906937,38.8972990459879,38.8951330487548,38.9423807789324,38.9123244966935,38.8798055571672,38.8787837374735,38.8764808713658,38.8596570987135,38.8956168421101,38.8987616906937,38.8969781468093,38.933113202261,38.9274357918548,38.9123244966935,38.9011982293062,38.9179768530971,38.8787837374735,38.8787837374735,38.922159399572,38.9123244966935,38.9176468207859,38.9511699725828,38.8969781468093,38.8451625626788,38.9608035827723,38.9048787828423,38.9123244966935,38.8956168421101,38.9543732722424,38.8787837374735,38.8789687804984,38.9275383636822,38.9527019976704,38.900195980474,38.8987616906937,38.8969781468093,38.9123244966935,38.9274357918548,38.9548153114553,38.9123244966935,38.8583496065221,38.8969781468093,38.9123244966935,38.9123244966935,38.9048787828423,38.9123244966935,38.8972990459879,38.9123244966935,38.9123244966935,38.8956168421101,38.8972990459879,38.8956168421101,38.9179768530971,38.9123244966935,38.9106022081745,38.9612590606149,38.8798055571672,38.9123244966935,38.9123244966935,38.9172327657757,38.8956168421101,38.9172327657757,38.8956168421101,38.9123244966935,38.8956168421101,38.8789687804984,38.8972990459879,38.9274357918548,38.8987616906937,38.8451625626788,38.9248909438896,38.88596760224,38.9380302729804,38.8787837374735,38.9048787828423,38.8787837374735,38.8612799858582,38.8787837374735,38.8787837374735,38.8764808713658,38.8787837374735,38.9380302729804,38.8787837374735,38.89946796557,38.9172327657757,38.8451625626788,38.8787837374735,38.9172327657757,38.9274357918548,38.8787837374735,38.9179768530971,38.8787837374735,38.8734635996299,38.922291710748,38.8612799858582,38.89946796557,38.8789687804984,38.8451625626788,38.8787837374735,38.89946796557,38.8619228886077,38.8787837374735,38.89946796557,38.9123244966935,38.8787837374735,38.8787837374735,38.9088970908615,38.9048787828423,38.8596570987135,38.8787837374735,38.9274357918548,38.8451625626788,38.8596570987135,38.8688604695228,38.9059616936887,38.9123244966935,38.9123244966935,38.9219902665064,38.8987616906937,38.8987616906937,38.9548153114553,38.9546982353771,38.9123244966935,38.9048787828423,38.9048787828423,38.8798055571672,38.9123244966935,38.9048787828423,38.9286873734321,38.9123244966935,38.9548153114553,38.9123244966935,38.9496847404464,38.9123244966935,38.9123244966935,38.9543732722424,38.9274357918548,38.9123244966935,38.9123244966935,38.9423807789324,38.9048787828423,38.8987616906937,38.8956168421101,38.9543732722424,38.9274357918548,38.8987616906937,38.9123244966935,38.9138938195312,38.9172327657757,38.9274357918548,38.8972990459879,38.8987616906937,38.9274357918548,38.9048787828423,38.9123244966935,38.9048787828423,38.9050231071001,38.9088970908615,38.9138938195312,38.8987616906937,38.9123244966935,38.9025309490657,38.9126056381912,38.865873188149,38.9096489464586,38.9423807789324,38.9543732722424,38.9123244966935,38.9123244966935,38.9275383636822,38.8969781468093,38.8969781468093,38.9123244966935,38.8972990459879,38.9123244966935,38.8920895186923,38.8787837374735,38.8596570987135,38.9179768530971,38.8787837374735,38.9123244966935,38.8956168421101,38.9496847404464,38.9172327657757,38.8987616906937,38.8956168421101,38.9053614777588,38.8956168421101,38.8987616906937,38.8798055571672,38.8987616906937,38.8956168421101,38.9088970908615,38.8734635996299,38.8787837374735,38.9496847404464,38.9123244966935,38.9274357918548,38.8987616906937,38.9274357918548,38.8956168421101,38.8787837374735,38.8787837374735,38.8920895186923,38.9274357918548,38.9199923108837,38.9612954897407,38.9612954897407,38.905014335098,38.9187674106345,38.9123244966935,38.9123244966935,38.9123244966935,38.9274357918548,38.8787837374735,38.9179768530971,38.8787837374735,38.89946796557,38.8787837374735,38.8764808713658,38.8932990791349,38.9380302729804,38.9380302729804,38.8787837374735,38.8787837374735,38.9380302729804,38.9380302729804,38.9123244966935,38.8972990459879,38.9274357918548,38.9123244966935,38.9123244966935,38.9176468207859,38.9123244966935,38.9274357918548,38.9123244966935,38.8787837374735,38.8451625626788,38.8451625626788,38.8972990459879,38.9214260836524,38.8987616906937,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.8987616906937,38.9123244966935,38.8956168421101,38.8920895186923,38.9123244966935,38.9179768530971,38.8897509317986,38.8787837374735,38.8956168421101,38.9048787828423,38.9123244966935,38.9334379227543,38.9088970908615,38.8987616906937,38.9123244966935,38.9123244966935,38.9173286251987,38.9496847404464,38.8972990459879,38.9123244966935,38.9123244966935,38.9048787828423,38.8956168421101,38.8798055571672,38.9274357918548,38.8969781468093,38.8969781468093,38.9138938195312,38.9050231071001,38.9274357918548,38.8956168421101,38.9123244966935,38.8969781468093,38.9123244966935,38.8956168421101,38.9123244966935,38.9274357918548,38.8987616906937,38.8987616906937,38.9423807789324,38.8972990459879,38.9274357918548,38.8969781468093,38.9123244966935,38.8956168421101,38.9049904718087,38.9123244966935,38.9138938195312,38.9065583355158,38.9027298957071,38.933113202261,38.9520521947079,38.9088970908615,38.9048787828423,38.9548153114553,38.9059616936887,38.9059616936887,38.9065583355158,38.8532973452793,38.9123244966935,38.9496847404464,38.8969781468093,38.9007086222435,38.8804732855976,38.9123244966935,38.9123244966935,38.9073984539871,38.9138938195312,38.9543732722424,38.8972990459879,38.9138938195312,38.8972990459879,38.9138938195312,38.9059616936887,38.8972990459879,38.9059616936887,38.9138938195312,38.9138938195312,38.9543732722424,38.9543732722424,38.9138938195312,38.9543732722424,38.8995282533886,38.9138938195312,38.9543732722424,38.8972990459879,38.8972990459879,38.9141281710504,38.8972990459879,38.9543732722424,38.9290407301841,38.9138938195312,38.9138938195312,38.9138938195312,38.9138938195312,38.8972990459879,38.9138938195312,38.9138938195312,38.9543732722424,38.8972990459879,38.8972990459879,38.9543732722424,38.89946796557,38.89946796557,38.9543732722424,38.9418725767522,38.88596760224,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.9612590606149,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.8596570987135,38.9123244966935,38.9543732722424,38.9123244966935,38.89946796557,38.9138938195312,38.9179768530971,38.9548153114553,38.8951330487548,38.9365820549103,38.9274357918548,38.8643495056954,38.8787837374735,38.8787837374735,38.9123244966935,38.8787837374735,38.8787837374735,38.8951330487548,38.9138938195312,38.8789687804984,38.8451625626788,38.8451625626788,38.9496847404464,38.89946796557,38.9123244966935,38.9123244966935,38.8451625626788,38.9548153114553,38.9274357918548,38.9274357918548,38.8956168421101,38.8451625626788,38.9365820549103,38.8612799858582,38.9334379227543,38.8451625626788,38.9496847404464,38.8897716239952,38.8787837374735,38.8787837374735,38.8787837374735,38.8787837374735,38.9380302729804,38.9380302729804,38.8897509317986,38.9380302729804,38.8787837374735,38.8787837374735,38.8787837374735,38.89946796557,38.9380302729804,38.8787837374735,38.89946796557,38.8612799858582,38.9123244966935,38.9123244966935,38.8956168421101,38.8956168421101,38.8451625626788,38.8451625626788,38.89946796557,38.9176468207859,38.9123244966935,38.8451625626788,38.9179768530971,38.9179768530971,38.9123244966935,38.8787837374735,38.9173286251987,38.8897716239952,38.8787837374735,38.8787837374735,38.9059616936887,38.922159399572,38.9266194518112,38.9343212833728,38.8975384697838,38.8787837374735,38.8787837374735,38.8787837374735,38.8451625626788,38.8956168421101,38.8987616906937,38.8987616906937,38.9123244966935,38.8956168421101,38.9123244966935,38.9543732722424,38.9423807789324,38.9274357918548,38.9123244966935,38.9543732722424,38.9123244966935,38.8987616906937,38.9543732722424,38.9123244966935,38.9138938195312,38.9173286251987,38.9048787828423,38.8972990459879,38.8798055571672,38.9123244966935,38.9274357918548,38.9123244966935,38.9123244966935,38.9274357918548,38.9423807789324,38.9548153114553,38.9048787828423,38.9123244966935,38.90883776651,38.9226607788422,38.9274357918548,38.9138938195312,38.8956168421101,38.8875662818655,38.8987616906937,38.8956168421101,38.9274357918548,38.8987616906937,38.9123244966935,38.9115008451953,38.8945328928018,38.9211706959826,38.8969781468093,38.9123244966935,38.9123244966935,38.9173286251987,38.9123244966935,38.849745676869,38.9343212833728,38.9103842892984,38.9123244966935,38.9123244966935,38.9293004360212,38.9025284756572,38.8920895186923,38.9209329961366,38.9650593212956,38.8969781468093,38.9123244966935,38.9088970908615,38.9123244966935,38.88596760224,38.9123244966935,38.8881847338952,38.9173286251987,38.9176468207859,38.9274357918548,38.9123244966935,38.9274357918548,38.910474300986,38.88596760224,38.9048787828423,38.9123244966935,38.8787837374735,38.8798055571672,38.8451625626788,38.8787837374735,38.9053614777588,38.9274357918548,38.9123244966935,38.9235294962134,38.8920895186923,38.9048787828423,38.9138938195312,38.9543732722424,38.9421372714715,38.8972990459879,38.8972990459879,38.8972990459879,38.9543732722424,38.8972990459879,38.9059616936887,38.8972990459879,38.8972990459879,38.9138938195312,38.8972990459879,38.8956168421101,38.9274357918548,38.8787837374735,38.8897509317986,38.9123244966935,38.9123244966935,38.9123244966935,38.8897509317986,38.8787837374735,38.9380302729804,38.8596570987135,38.8787837374735,38.8764808713658,38.8596570987135,38.8789687804984,38.9380302729804,38.8451625626788,38.8451625626788,38.8451625626788,38.8451625626788,38.9548153114553,38.8451625626788,38.89946796557,38.8787837374735,38.8596570987135,38.9248909438896,38.9380302729804,38.8787837374735,38.8897509317986,38.9059616936887,38.9542466987947,38.8975384697838,38.8999735676448,38.8975384697838,38.8250888710896,38.8956168421101,38.8623686329774,38.9397376330619,38.9123244966935,38.8956168421101,38.8798055571672,38.9172327657757,38.9380302729804,38.8612799858582,38.8787837374735,38.8482655276695,38.9123244966935,38.9274357918548,38.9123244966935,38.9274357918548,38.9543732722424,38.9123244966935,38.9123244966935,38.9170022241396,38.9258149304166,38.9189905854155,38.9181060363312,38.9174665041885,38.9181105671157,38.9261810718996,38.9170022241396,38.8831037937851,38.8987616906937,38.9172327657757,38.9423807789324,38.9423807789324,38.9172327657757,38.91572541709,38.9423807789324,38.9423807789324,38.8956168421101,38.8798055571672,38.8798055571672,38.8798055571672,38.8798055571672,38.9053614777588,38.8987616906937,38.8956168421101,38.9219902665064,38.8787837374735,38.8787837374735,38.8897509317986,38.8787837374735,38.8956168421101,38.8789687804984,38.8787837374735,38.9219902665064,38.8789687804984,38.8787837374735,38.8451625626788,38.8637419949753,38.9274357918548,38.9274357918548,38.9172327657757,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.8951330487548,38.9123244966935,38.9123244966935,38.9138938195312,38.8972990459879,38.8987616906937,38.9123244966935,38.8956168421101,38.9543732722424,38.9173286251987,38.9274357918548,38.9123244966935,38.9123244966935,38.9088970908615,38.9274357918548,38.9172327657757,38.910474300986,38.9274357918548,38.9123244966935,38.9053614777588,38.8798055571672,38.9123244966935,38.9088970908615,38.9050231071001,38.8969781468093,38.9088970908615,38.88596760224,38.916997788863,38.9274357918548,38.9543732722424,38.9123244966935,38.8986274386105,38.8975384697838,38.9173286251987,38.8969781468093,38.8824722165707,38.9274357918548,38.9088970908615,38.9025284756572,38.9123244966935,38.9048787828423,38.8987616906937,38.8972990459879,38.9274357918548,38.9123244966935,38.8637419949753,38.9123244966935,38.9612590606149,38.9543732722424,38.8972990459879,38.9230089789994,38.9123244966935,38.9560332761835,38.8969781468093,38.9543732722424,38.9274357918548,38.8969781468093,38.9543732722424,38.9123244966935,38.9274357918548,38.9219902665064,38.907193301637,38.9123244966935,38.9123244966935,38.8728214185128,38.9164035863188,38.9059616936887,38.9048787828423,38.8987616906937,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.9048787828423,38.9123244966935,38.8972990459879,38.9013174056043,38.9543732722424,38.8956168421101,38.9123244966935,38.9123244966935,38.9123244966935,38.9025284756572,38.9050231071001,38.9123244966935,38.8868072328277,38.9059616936887,38.8624013073775,38.8956168421101,38.9123244966935,38.9048787828423,38.9548153114553,38.9543732722424,38.9123244966935,38.8969781468093,38.9543732722424,38.9123244966935,38.9123244966935,38.8956168421101,38.9172327657757,38.9050231071001,38.9173286251987,38.8897716239952,38.8998131346436,38.9173286251987,38.9048787828423,38.9123244966935,38.9123244966935,38.9123244966935,38.9172327657757,38.9123244966935,38.8798055571672,38.8969781468093,38.9123244966935,38.9172327657757,38.9088970908615,38.9056473334077,38.8987616906937,38.8933008064391,38.899068911352,38.9088970908615,38.9129690021693,38.88596760224,38.9126596109639,38.9123244966935,38.8956168421101,38.9123244966935,38.8987616906937,38.9123244966935,38.9543732722424,38.9274357918548,38.8787837374735,38.9123244966935,38.9048787828423,38.9123244966935,38.9334379227543,38.89946796557,38.8451625626788,38.9274357918548,38.8920889644641,38.9534955858599,38.8789687804984,38.8787837374735,38.8956168421101,38.9123244966935,38.8451625626788,38.9534955858599,38.9123244966935,38.8787837374735,38.9059616936887,38.9650593212956,38.8581915375577,38.8564559602009,38.8787837374735,38.8787837374735,38.9543732722424,38.9543732722424,38.9138938195312,38.8787837374735,38.9548153114553,38.8451625626788,38.8451625626788,38.89946796557,38.8643495056954,38.8987616906937,38.89946796557,38.8787837374735,38.9274357918548,38.8789687804984,38.89946796557,38.8798055571672,38.9123244966935,38.9123244966935,38.9543732722424,38.8987616906937,38.8532973452793,38.9423807789324,38.8987616906937,38.9123244966935,38.9274357918548,38.9123244966935,38.9496847404464,38.916997788863,38.8969781468093,38.9274357918548,38.9123244966935,38.9138938195312,38.9123244966935,38.9123244966935,38.8963141242937,38.8969781468093,38.8798055571672,38.9025284756572,38.9088970908615,38.8951330487548,38.9543732722424,38.9123244966935,38.8969781468093,38.8623686329774,38.8951330487548,38.9274357918548,38.8972990459879,38.9123244966935,38.8897716239952,38.916997788863,38.9138938195312,38.8798055571672,38.9123244966935,38.9123244966935,38.9123244966935,38.9059616936887,38.8972990459879,38.9123244966935,38.9123244966935,38.8972990459879,38.9048787828423,38.9073984539871,38.9025309490657,38.9059616936887,38.9274357918548,38.916997788863,38.9172327657757,38.9543732722424,38.8969781468093,38.9123244966935,38.9123244966935,38.8956168421101,38.9053614777588,38.9172327657757,38.9343212833728,38.8956168421101,38.8956168421101,38.9025284756572,38.8972990459879,38.8987616906937,38.9123244966935,38.9123244966935,38.9548153114553,38.9123244966935,38.8920895186923,38.9496847404464,38.8969781468093,38.9073984539871,38.9048787828423,38.8920853941184,38.9423807789324,38.8987616906937,38.8956168421101,38.9123244966935,38.9274357918548,38.9543732722424,38.8972990459879,38.9059616936887,38.9548153114553,38.9496847404464,38.9123244966935,38.9612590606149,38.9109206153356,38.8956168421101,38.8956168421101,38.9123244966935,38.9123244966935,38.8969781468093,38.9274357918548,38.8969781468093,38.8956168421101,38.9548153114553,38.9123244966935,38.9123244966935,38.8969781468093,38.8972990459879,38.9123244966935,38.9123244966935,38.9274357918548,38.9123244966935,38.9380302729804,38.8612799858582,38.8596570987135,38.9169989430614,38.9560332761835,38.8623686329774,38.8875662818655,38.9056459348207,38.9363285015409,38.8734635996299,38.8920853941184,38.88596760224,38.9548153114553,38.910474300986,38.9048787828423,38.8798055571672,38.8734635996299,38.8637419949753,38.9048787828423,38.9053614777588,38.9252684695898,38.9053614777588,38.9053614777588,38.9123244966935,38.9123244966935,38.8982306899315,38.8786534454243,38.9059616936887,38.9123244966935,38.9138938195312,38.9048787828423,38.8798055571672,38.8798055571672,38.9088970908615,38.88596760224,38.9322082629392,38.9548153114553,38.8920895186923,38.9048787828423,38.9048787828423,38.912785337646,38.9477572498471,38.8956168421101,38.9088970908615,38.8987616906937,38.8983231428012,38.9283923456795,38.9079355445053,38.8959639337752,38.9096446228911,38.9123244966935,38.8734635996299,38.9235294962134,38.8956168421101,38.8956168421101,38.9274357918548,38.9123244966935,38.8934987041414,38.9381118894165,38.9170022241396,38.9123244966935,38.9423807789324,38.9274357918548,38.9543732722424,38.8969781468093,38.8956168421101,38.9274357918548,38.8956168421101,38.9123244966935,38.8969781468093,38.9218403483495,38.9290407301841,38.9423807789324,38.8623686329774,38.9011482313009,38.8798055571672,38.9496847404464,38.9088970908615,38.9048787828423,38.8969781468093,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.9423807789324,38.9123244966935,38.8951330487548,38.8532973452793,38.8972990459879,38.9274357918548,38.8631287403064,38.9265252844351,38.8947847177508,38.9199923108837,38.905014335098,38.9123244966935,38.9123244966935,38.9025284756572,38.9423807789324,38.9048787828423,38.9062323178312,38.885952941446,38.8822733680916,38.8975900996924,38.9542466987947,38.8313754801609,38.9028321511955,38.9138938195312,38.9274357918548,38.8956168421101,38.9123244966935,38.9002078830843,38.8972990459879,38.9274357918548,38.8506842992464,38.9059616936887,38.8979880259123,38.9524071341696,38.9123244966935,38.9274357918548,38.9274357918548,38.8987616906937,38.9123244966935,38.8789687804984,38.8951330487548,38.8951330487548,38.9088970908615,38.9053614777588,38.8532973452793,38.8951330487548,38.8451625626788,38.8612799858582,38.8787837374735,38.8787837374735,38.8787837374735,38.8789687804984,38.8789687804984,38.8956168421101,38.9439721038993,38.9025284756572,38.8972990459879,38.9123244966935,38.8969781468093,38.9543732722424,38.905014335098,38.9112797582797,38.8934042319588,38.9088914377954,38.9138938195312,38.9123244966935,38.8951330487548,38.9274357918548,38.9543732722424,38.9123244966935,38.9123244966935,38.8969781468093,38.9274357918548,38.9123244966935,38.8956168421101,38.9123244966935,38.9123244966935,38.8637419949753,38.9274357918548,38.8972990459879,38.9088970908615,38.9138938195312,38.9423807789324,38.9123244966935,38.8956168421101,38.9543732722424,38.9543732722424,38.9167391926651,38.8987616906937,38.8532973452793,38.9496847404464,38.8798055571672,38.9048787828423,38.9138938195312,38.8969781468093,38.9123244966935,38.8975384697838,38.9123244966935,38.8787837374735,38.9059616936887,38.8956168421101,38.9334379227543,38.8787837374735,38.89946796557,38.8787837374735,38.8897509317986,38.8787837374735,38.8787837374735,38.8787837374735,38.8789687804984,38.9123244966935,38.89946796557,38.8612799858582,38.8451625626788,38.9534955858599,38.8451625626788,38.8451625626788,38.9534955858599,38.8451625626788,38.8787837374735,38.8958015032907,38.8456596381951,38.9169901526785,38.9179768530971,38.8764808713658,38.8787837374735,38.9380302729804,38.9380302729804,38.9380302729804,38.89946796557,38.89946796557,38.8787837374735,38.8612799858582,38.8787837374735,38.9025284756572,38.9274357918548,38.8787837374735,38.8972990459879,38.9274357918548,38.8972990459879,38.8789687804984,38.8897716239952,38.8532973452793,38.9179768530971,38.9179768530971,38.8789687804984,38.8787837374735,38.9337965498285,38.9536615977419,38.9156456541428,38.9265594131414,38.9173286251987,38.9427841391726,38.9138938195312,38.9138938195312,38.937398221774,38.89946796557,38.9610131375442,38.9534955858599,38.89946796557,38.9059616936887,38.9138938195312,38.9610131375442,38.89946796557,38.89946796557,38.9534955858599,38.8972990459879,38.8972990459879,38.9059616936887,38.9543732722424,38.8972990459879,38.9610131375442,38.89946796557,38.89946796557,38.9258149304166,38.9073984539871,38.9181105671157,38.9260087608615,38.9260087608615,38.9028992876415,38.8814911968901,38.9138938195312,38.8972990459879,38.8972990459879,38.9138938195312,38.8972990459879,38.9059616936887,38.9138938195312,38.9059616936887,38.8972990459879,38.9059616936887,38.9138938195312,38.9543732722424,38.9138938195312,38.8972990459879,38.9138938195312,38.8972990459879,38.8972990459879,38.8972990459879,38.8972990459879,38.9479092542275,38.9059616936887,38.8972990459879,38.9059616936887,38.8972990459879,38.9059616936887,38.9138938195312,38.9543732722424,38.8972990459879,38.9543732722424,38.9059616936887,38.9192709470554,38.8972990459879,38.8985479501024,38.9258149304166,38.931152542012,38.9416893604406,38.951205827418,38.9123244966935,38.9534955858599,38.8787837374735,38.8787837374735,38.8787837374735,38.8787837374735,38.8787837374735,38.8787837374735,38.9056459348207,38.9048787828423,38.8787837374735,38.8612799858582,38.9380302729804,38.8789687804984,38.9380302729804,38.9380302729804,38.8787837374735,38.8787837374735,38.8787837374735,38.8596570987135,38.8787837374735,38.9059616936887,38.9138938195312,38.9123244966935,38.9123244966935,38.9123244966935,38.902189199675,38.8469203814646,38.8920932091134,38.9218449851623,38.9380302729804,38.8787837374735,38.9179768530971,38.8798055571672,38.9496847404464,38.9179768530971,38.8424716175647,38.8897509317986,38.9191832287402,38.9059616936887,38.8972990459879,38.9423807789324,38.88596760224,38.9002078830843,38.9048787828423,38.9286873734321,38.8972990459879,38.9123244966935,38.9274357918548,38.9088970908615,38.912785337646,38.9123244966935,38.8734635996299,38.9543732722424,38.9123244966935,38.91572541709,38.8897716239952,38.8987616906937,38.9496847404464,38.9274357918548,38.8969781468093,38.8987616906937,38.9543732722424,38.8619228886077,38.9123244966935,38.9274357918548,38.8897716239952,38.9207909968505,38.9274357918548,38.9123244966935,38.8975384697838,38.9715280760611,38.9123244966935,38.8983617311065,38.922159399572,38.9048787828423,38.9173286251987,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.9048787828423,38.9123244966935,38.839160510681,38.9274357918548,38.9048787828423,38.9235294962134,38.8875940944055,38.9032318102531,38.8969781468093,38.9274357918548,38.9274357918548,38.8986274386105,38.9123244966935,38.9123244966935,38.9548153114553,38.8787837374735,38.8596570987135,38.8787837374735,38.9380302729804,38.8875662818655,38.9088970908615,38.8787837374735,38.8451625626788,38.8787837374735,38.8787837374735,38.9334379227543,38.8451625626788,38.9138938195312,38.8787837374735,38.8451625626788,38.8789687804984,38.8787837374735,38.8987616906937,38.9174665041885,38.8928010048644,38.9312509622198,38.8994106132423,38.9274357918548,38.8972990459879,38.8972990459879,38.9176468207859,38.9176468207859,38.8789687804984,38.9123244966935,38.8789687804984,38.9479092542275,38.8873701401058,38.9204764918708,38.9181105671157,38.8787837374735,38.8787837374735,38.9365820549103,38.8787837374735,38.9334379227543,38.8920853941184,38.8920895186923,38.9123244966935,38.8787837374735,38.8787837374735,38.89946796557,38.8596570987135,38.8787837374735,38.8789687804984,38.8787837374735,38.8787837374735,38.8451625626788,38.8787837374735,38.9179768530971,38.8787837374735,38.9334379227543,38.9002078830843,38.8787837374735,38.8451625626788,38.8789687804984,38.9179768530971,38.9123244966935,38.8787837374735,38.9179768530971,38.9176468207859,38.8451625626788,38.9123244966935,38.9543732722424,38.9123244966935,38.9123244966935,38.8987616906937,38.9123244966935,38.9123244966935,38.8972990459879,38.8956168421101,38.8987616906937,38.9059616936887,38.9176468207859,38.9048787828423,38.9496847404464,38.8787837374735,38.8596570987135,38.8787837374735,38.8787837374735,38.8787837374735,38.9123244966935,38.9123244966935,38.9179768530971,38.8897509317986,38.8506842992464,38.8451625626788,38.8787837374735,38.9534955858599,38.8956168421101,38.8787837374735,38.8787837374735,38.8987616906937,38.8451625626788,38.8789687804984,38.8956168421101,38.8787837374735,38.9423807789324,38.8787837374735,38.9496847404464,38.8787837374735,38.8451625626788,38.8787837374735,38.8787837374735,38.8787837374735,38.8789687804984,38.8789687804984,38.8787837374735,38.8787837374735,38.9380302729804,38.9123244966935,38.9048787828423,38.8798055571672,38.9123244966935,38.9053614777588,38.9048787828423,38.9546926895927,38.8787837374735,38.8951330487548,38.8987616906937,38.9138938195312,38.8440618304965,38.9123244966935,38.9123244966935,38.8972990459879,38.9123244966935,38.8920895186923,38.9048787828423,38.9548153114553,38.9123244966935,38.8532973452793,38.8956168421101,38.9123244966935,38.8956168421101,38.8451625626788,38.9073984539871,38.9172327657757,38.9059616936887,38.9056459348207,38.8798055571672,38.9123244966935,38.8956168421101,38.9123244966935,38.9496847404464,38.9123244966935,38.9048787828423,38.8787837374735,38.9423807789324,38.9048787828423,38.8532973452793,38.8920895186923,38.8956168421101,38.9274357918548,38.8987616906937,38.9123244966935,38.8956168421101,38.8969781468093,38.8972990459879,38.8956168421101,38.8451625626788,38.9123244966935,38.8787837374735,38.9560332761835,38.8787837374735,38.9123244966935,38.9123244966935,38.8956168421101,38.9123244966935,38.9138938195312,38.9274357918548,38.9523867705508,38.9174665041885,38.9179768530971,38.8787837374735,38.9543732722424,38.9543732722424,38.9179768530971,38.8787837374735,38.89946796557,38.9393211694272,38.8787837374735,38.8897509317986,38.9123244966935,38.9123244966935,38.8972990459879,38.8789687804984,38.9334379227543,38.8596570987135,38.9365820549103,38.8451625626788,38.8787837374735,38.8787837374735,38.8969781468093,38.8897716239952,38.9123244966935,38.9073984539871,38.9543732722424,38.9548153114553,38.8956168421101,38.8933008064391,38.9123244966935,38.9423807789324,38.9123244966935,38.9123244966935,38.9274357918548,38.9123244966935,38.9123244966935,38.9123244966935,38.9306616609702,38.8776881513239,38.9123244966935,38.9138938195312,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.8798055571672,38.9543732722424,38.9123244966935,38.8987616906937,38.8972990459879,38.9274357918548,38.9053614777588,38.9048787828423,38.9053614777588,38.9088970908615,38.9333320780829,38.8669496049088,38.8786534454243,38.9059616936887,38.9123244966935,38.9543732722424,38.9274357918548,38.8956168421101,38.8969781468093,38.9274357918548,38.9123244966935,38.8987616906937,38.9059048948566,38.9034336261695,38.8220445659945,38.9123244966935,38.9173286251987,38.9123244966935,38.9543732722424,38.8987616906937,38.8734635996299,38.88596760224,38.9048787828423,38.9496847404464,38.934966441082,38.9073984539871,38.9423807789324,38.9051766284038,38.9546926895927,38.8798055571672,38.8969781468093,38.9274357918548,38.88596760224,38.9612590606149,38.9048787828423,38.9059616936887,38.8969781468093,38.8969781468093,38.8987616906937,38.9049086958732,38.9612590606149,38.9173286251987,38.9123244966935,38.9123244966935,38.9123244966935,38.8956168421101,38.9179768530971,38.8787837374735,38.9248909438896,38.89946796557,38.8787837374735,38.8787837374735,38.8596570987135,38.9248909438896,38.8612799858582,38.8787837374735,38.8787837374735,38.8787837374735,38.8787837374735,38.8787837374735,38.8787837374735,38.8897509317986,38.8451625626788,38.9334379227543,38.9525347990541,38.9525347990541,38.8596570987135,38.8787837374735,38.9248909438896,38.8787837374735,38.8787837374735,38.8787837374735,38.8787837374735,38.8956168421101,38.9179768530971,38.9334379227543,38.8451625626788,38.8798055571672,38.9123244966935,38.9274357918548,38.8972990459879,38.8787837374735,38.9123244966935,38.8451625626788,38.8787837374735,38.89946796557,38.9179768530971,38.9274357918548,38.9179768530971,38.9123244966935,38.8451625626788,38.8920895186923,38.8972990459879,38.89946796557,38.9176468207859,38.8787837374735,38.8596570987135,38.8787837374735,38.8920895186923,38.8787837374735,38.8787837374735,38.9048787828423,38.9546926895927,38.9123244966935,38.8956168421101,38.9534955858599,38.8787837374735,38.8956168421101,38.8920853941184,38.8451625626788,38.9248909438896,38.9548153114553,38.9048787828423,38.9048787828423,38.9248909438896,38.9025309490657,38.8787837374735,38.9172327657757,38.9048787828423,38.9423807789324,38.9496847404464,38.9123244966935,38.9543732722424,38.9123244966935,38.8920895186923,38.9089222735921,38.8846290450412,38.912471713298,38.8920895186923,38.9123244966935,38.9274357918548,38.9123244966935,38.9025284756572,38.9123244966935,38.8956168421101,38.9123244966935,38.9123244966935,38.9274357918548,38.8956168421101,38.9088970908615,38.8958015032907,38.939174497397,38.9174665041885,38.8897509317986,38.8787837374735,38.8789687804984,38.8897509317986,38.9534955858599,38.8789687804984,38.9334379227543,38.9172327657757,38.8787837374735,38.8789687804984,38.9179768530971,38.8787837374735,38.8897509317986,38.9123244966935,38.8987616906937,38.9048787828423,38.8798055571672,38.88596760224,38.9248909438896,38.8451625626788,38.8972990459879,38.8506842992464,38.9179768530971,38.8951330487548,38.9274357918548,38.9527019976704,38.8789687804984,38.8969781468093,38.9123244966935,38.8789687804984,38.8789687804984,38.8787837374735,38.8787837374735,38.8596570987135,38.9179768530971,38.9123244966935,38.9123244966935,38.9543732722424,38.9219902665064,38.8987616906937,38.8972990459879,38.9123244966935,38.9138938195312,38.8987616906937,38.9548153114553,38.8787837374735,38.89946796557,38.8451625626788,38.9138938195312,38.8981002822742,38.9274357918548,38.8969781468093,38.9138938195312,38.9123244966935,38.9123244966935,38.9423807789324,38.910474300986,38.9138938195312,38.8972990459879,38.9123244966935,38.9025284756572,38.9274357918548,38.9274357918548,38.8987616906937,38.9274357918548,38.9123244966935,38.9123244966935,38.9496847404464,38.9123244966935,38.9123244966935,38.9123244966935,38.9059616936887,38.8996437684213,38.9274357918548,38.9123244966935,38.9543732722424,38.9123244966935,38.8956168421101,38.9123244966935,38.9123244966935,38.9240405633603,38.9255488072435,38.9013238547016,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.9274357918548,38.8315865244996,38.9260087608615,38.9559576478273,38.8972990459879,38.9048787828423,38.9274357918548,38.9274357918548,38.9274357918548,38.8951330487548,38.8956168421101,38.9123244966935,38.9172327657757,38.9123244966935,38.8969781468093,38.9123244966935,38.9138938195312,38.9274357918548,38.8956168421101,38.8798055571672,38.8969781468093,38.8787837374735,38.9138938195312,38.8623686329774,38.901423572448,38.9123244966935,38.9138938195312,38.872990531853,38.9025284756572,38.9612590606149,38.8623686329774,38.8798055571672,38.9274357918548,38.9543732722424,38.9123244966935,38.8951330487548,38.8987616906937,38.9274357918548,38.9123244966935,38.9543732722424,38.8987616906937,38.88596760224,38.9219902665064,38.9172327657757,38.9172098303319,38.9059616936887,38.9496847404464,38.8798055571672,38.9059616936887,38.9059616936887,38.9123244966935,38.9123244966935,38.9123244966935,38.9025284756572,38.9050231071001,38.9496847404464,38.8951330487548,38.9123244966935,38.8951330487548,38.9123244966935,38.88596760224,38.9235294962134,38.8897716239952,38.9543732722424,38.9274357918548,38.8798055571672,38.9031399683427,38.8868755284734,38.9059616936887,38.8956168421101,38.8956168421101,38.9123244966935,38.9048787828423,38.9496847404464,38.9423807789324,38.9123244966935,38.8623686329774,38.8637419949753,38.9423807789324,38.9123244966935,38.9123244966935,38.8969781468093,38.9274357918548,38.9138938195312,38.8994998281087,38.9173286251987,38.8956168421101,38.9172327657757,38.9073984539871,38.9560332761835,38.9274357918548,38.9274357918548,38.9496847404464,38.8987616906937,38.9173286251987,38.91572541709,38.8987616906937,38.9275259477416,38.9098515112244,38.9025284756572,38.9274357918548,38.9524071341696,38.9123244966935,38.8972990459879,38.8920895186923,38.9123244966935,38.9123244966935,38.8972990459879,38.9073984539871,38.9343447836364,38.9028288207912,38.9088018025039,38.8989340870187,38.9001999161854,38.8816743699576,38.9002078830843,38.8951330487548,38.8969781468093,38.9543732722424,38.8920102836904,38.8987616906937,38.9168445432545,38.9123244966935,38.8987616906937,38.88596760224,38.8734635996299,38.8969781468093,38.8972990459879,38.9173286251987,38.9123244966935,38.9274357918548,38.9048787828423,38.9048787828423,38.9088970908615,38.9123244966935,38.9274357918548,38.9123244966935,38.8987616906937,38.9123244966935,38.9343447836364,38.9088018025039,38.9059616936887,38.8939351962959,38.9123244966935,38.9138938195312,38.9274357918548,38.8972990459879,38.9123244966935,38.9123244966935,38.9088970908615,38.8969781468093,38.9123244966935,38.9274357918548,38.9274357918548,38.8987616906937,38.9123244966935,38.8972990459879,38.9274357918548,38.9123244966935,38.8734635996299,38.9123244966935,38.8951330487548,38.9118692661798,38.9312582362733,38.9089343588676,38.9138938195312,38.9123244966935,38.8798055571672,38.9612590606149,38.9172327657757,38.8637419949753,38.8532973452793,38.8798055571672,38.9048787828423,38.9025284756572,38.8872951110247,38.8951330487548,38.9383654075401,38.8814911968901,38.8798055571672,38.9258149304166,38.9028992876415,38.8951330487548,38.9627015806819,38.9123244966935,38.9123244966935,38.9274357918548,38.9274357918548,38.9274357918548,38.8956168421101,38.9089222735921,38.8814911968901,38.8927380492097,38.9223290813599,38.8798611710601,38.8932991186857,38.922159399572,38.8798055571672,38.8951330487548,38.8798055571672,38.8972990459879,38.9123244966935,38.9059616936887,38.8987616906937,38.91572541709,38.9205880085796,38.9274357918548,38.8969781468093,38.8969781468093,38.9123244966935,38.9123244966935,38.9138938195312,38.9123244966935,38.9274357918548,38.9123244966935,38.9123244966935,38.8975384697838,38.8987616906937,38.9172327657757,38.8897716239952,38.9274357918548,38.8969781468093,38.9123244966935,38.9123244966935,38.9048787828423,38.8972990459879,38.89946796557,38.8969781468093,38.9365820549103,38.9543732722424,38.9610131375442,38.8951330487548,38.9002078830843,38.8787837374735,38.89946796557,38.8920853941184,38.8787837374735,38.9534955858599,38.9610173877836,38.9123244966935,38.9123244966935,38.8612799858582,38.9548153114553,38.9219902665064,38.9123244966935,38.9025309490657,38.9123244966935,38.9123244966935,38.9123244966935,38.9138938195312,38.9123244966935,38.9123244966935,38.8972990459879,38.9112957215677,38.906441607104,38.8787837374735,38.8972990459879,38.9189125433144,38.9242766615925,38.9329103222324,38.9274357918548,38.9123244966935,38.8451625626788,38.8451625626788,38.8787837374735,38.8787837374735,38.8787837374735,38.8787837374735,38.8969781468093,38.9274357918548,38.9123244966935,38.8969549836939,38.9123244966935,38.8900771380902,38.9382011234398,38.9123244966935,38.9123244966935,38.922291710748,38.9123244966935,38.917458867056,38.9002078830843,38.8897716239952,38.9173286251987,38.9025284756572,38.9123244966935,38.9025284756572,38.9173286251987,38.9048787828423,38.8672656504225,38.9025149723118,38.9123244966935,38.9025284756572,38.9123244966935,38.9274357918548,38.9123244966935,38.916997788863,38.9123244966935,38.9123244966935,38.9002078830843,38.8730995076929,38.9123244966935,38.8920895186923,38.9169928042541,38.9173286251987,38.9048787828423,38.9123244966935,38.9480741326735,38.8775953405495,38.8920895186923,38.9123244966935,38.9525347990541,38.9140864176708,38.8798023705547,38.8515854891489,38.9123244966935,38.9123244966935,38.9123244966935,38.9022962386773,38.9423807789324,38.9059616936887,38.8728243395366,38.8561378127745,38.9496847404464,38.9172327657757,38.9219902665064,38.9274357918548,38.9025309490657,38.9543732722424,38.9123244966935,38.9173286251987,38.9274357918548,38.8956168421101,38.8951330487548,38.8831037937851,38.8969549836939,38.9025309490657,38.88596760224,38.9088970908615,38.8897499259629,38.9548153114553,38.9048787828423,38.8897716239952,38.8421711803405,38.9048787828423,38.8956168421101,38.9123244966935,38.9123244966935,38.9048787828423,38.9274357918548,38.9123244966935,38.905237559325,38.9123244966935,38.9274357918548,38.9123244966935,38.8972990459879,38.8972990459879,38.9172327657757,38.9172327657757,38.9123244966935,38.8969781468093,38.9123244966935,38.8972990459879,38.9123244966935,38.8987616906937,38.9123244966935,38.9274357918548,38.9543732722424,38.9048787828423,38.901254408509,38.8972990459879,38.9123244966935,38.8972990459879,38.9088970908615,38.9274357918548,38.9543732722424,38.9123244966935,38.8532973452793,38.9274357918548,38.9123244966935,38.8969781468093,38.8956168421101,38.9274357918548,38.9274357918548,38.9274357918548,38.8956168421101,38.8920895186923,38.9048787828423,38.8875662818655,38.8951330487548,38.9123244966935,38.9123244966935,38.9138938195312,38.8987616906937,38.8987616906937,38.9543732722424,38.8972990459879,38.9123244966935,38.9274357918548,38.9025145230849,38.9423807789324,38.8969781468093,38.9543732722424,38.8623686329774,38.9088970908615,38.9123244966935,38.8987616906937,38.9138938195312,38.9123244966935,38.8985259371597,38.8969781468093,38.9543732722424,38.9123244966935,38.9123244966935,38.9006185663252,38.9059616936887,38.8775297916354,38.8532973452793,38.9274357918548,38.931152542012,38.9174665041885,38.931152542012,38.9073984539871,38.9174665041885,38.9088970908615,38.9056459348207,38.9056459348207,38.9073984539871,38.931152542012,38.9065583355158,38.9073984539871,38.9028992876415,38.9225453722466,38.9028992876415,38.8814911968901,38.9016470712807,38.9073984539871,38.9190519066355,38.8932997824541,38.9073984539871,38.8759580923579,38.9073984539871,38.9073984539871,38.8822586649446,38.9088970908615,38.9019274260605,38.9258149304166,38.9073984539871,38.9088970908615,38.8943212905858,38.9046700908518,38.9174665041885,38.9041678260337,38.9239111899666,38.9202280378373,38.9441909685395,38.9529625133808,38.9260087608615,38.9205880085796,38.9205880085796,38.9073984539871,38.9205880085796,38.9073984539871,38.8837330471257,38.9123244966935,38.9123244966935,38.9053614777588,38.9123244966935,38.9173286251987,38.9173286251987,38.8956168421101,38.9274357918548,38.9138938195312,38.8951330487548,38.9048787828423,38.9543732722424,38.9138938195312,38.9138938195312,38.9322082629392,38.9138938195312,38.9123244966935,38.8951330487548,38.9048787828423,38.9612590606149,38.9053614777588,38.9048787828423,38.9543732722424,38.8789687804984,38.8789687804984,38.9123244966935,38.8787837374735,38.8787837374735,38.8451625626788,38.9248909438896,38.9380302729804,38.9380302729804,38.8920932091134,38.8897509317986,38.8787837374735,38.8972990459879,38.9123244966935,38.9123244966935,38.9181105671157,38.9407195433539,38.9056459348207,38.9171925861194,38.9334379227543,38.9172327657757,38.8787837374735,38.8787837374735,38.88596760224,38.9548153114553,38.9123244966935,38.9610131375442,38.8451625626788,38.9173286251987,38.8451625626788,38.9138938195312,38.8987616906937,38.9025259356559,38.8511767887563,38.9560332761835,38.9172327657757,38.9065583355158,38.9123244966935,38.9123244966935,38.9123244966935,38.8987616906937,38.8920895186923,38.9123244966935,38.9274357918548,38.8951330487548,38.9123244966935,38.8631287403064,38.8920105976238,38.8969781468093,38.8987616906937,38.9138938195312,38.9123244966935,38.8969781468093,38.9123244966935,38.9138938195312,38.9274357918548,38.9546926895927,38.9123244966935,38.9123244966935,38.9274357918548,38.8969781468093,38.9025259356559,38.829416225685,38.9252322706925,38.8987616906937,38.8969781468093,38.8987616906937,38.8532973452793,38.8734635996299,38.9048787828423,38.8972990459879,38.8798055571672,38.8972990459879,38.9199923108837,38.8905689929074,38.9123244966935,38.9123244966935,38.9123244966935,38.9172327657757,38.9073984539871,38.9274357918548,38.9543732722424,38.9123244966935,38.9274357918548,38.9088970908615,38.9620419851044,38.8956168421101,38.9274357918548,38.922159399572,38.9245077292393,38.8970551363322,38.8952260174592,38.8920895186923,38.88596760224,38.9048787828423,38.9002078830843,38.8951330487548,38.8798055571672,38.9563962224006,38.9123244966935,38.9123244966935,38.9123244966935,38.9025284756572,38.9123244966935,38.910474300986,38.9059616936887,38.9123244966935,38.9172327657757,38.8987616906937,38.9274357918548,38.9274357918548,38.9564767617972,38.905014335098,38.8969781468093,38.8897499259629,38.8987616906937,38.9176468207859,38.8787837374735,38.9053614777588,38.8623686329774,38.9050231071001,38.8637419949753,38.9048787828423,38.8532973452793,38.9630883805639,38.9098881050958,38.9423807789324,38.9423807789324,38.9138938195312,38.8637419949753,38.9048787828423,38.8623686329774,38.8798023705547,38.9088027982425,38.9123244966935,38.9274357918548,38.8972990459879,38.8987616906937,38.9123244966935,38.9274357918548,38.9274357918548,38.9123244966935,38.9548153114553,38.9048787828423,38.9274357918548,38.9073984539871,38.9088970908615,38.9496847404464,38.9123244966935,38.9123244966935,38.9123244966935,38.9048787828423,38.9025309490657,38.9548153114553,38.9123244966935,38.916997788863,38.9123244966935,38.9073984539871,38.8969781468093,38.8532973452793,38.8969781468093,38.8619228886077,38.9179768530971,38.8787837374735,38.9123244966935,38.9274357918548,38.9123244966935,38.9548153114553,38.9138938195312,38.9088914377954,38.9138938195312,38.8987616906937,38.9173286251987,38.9138938195312,38.8969781468093,38.9168445432545,38.9123244966935,38.8734635996299,38.9123244966935,38.9172327657757,38.8920964511682,38.9140909939549,38.9123244966935,38.9548153114553,38.9123244966935,38.9548153114553,38.9274357918548,38.9053614777588,38.9274357918548,38.8969781468093,38.9053614777588,38.9423807789324,38.8734635996299,38.8972990459879,38.9274357918548,38.9123244966935,38.9543732722424,38.9543732722424,38.9112797582797,38.9112797582797,38.8735819481826,38.8956168421101,38.8620491789839,38.8787837374735,38.8787837374735,38.9138938195312,38.9088970908615,38.9201629213603,38.8981106438354,38.9123244966935,38.9123244966935,38.8972990459879,38.8956168421101,38.9088970908615,38.8734635996299,38.9062323178312,38.924352271109,38.9288066236395,38.8585535719593,38.9546982353771,38.9543732722424,38.9123244966935,38.9138938195312,38.9274357918548,38.9053614777588,38.8956168421101,38.903515451943,38.9304475935037,38.9041673509355,38.9172327657757,38.9123244966935,38.9274357918548,38.9423807789324,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.9274357918548,38.9138938195312,38.9138938195312,38.9123244966935,38.8956168421101,38.9123244966935,38.8532973452793,38.9048787828423,38.8972990459879,38.8783968237237,38.9759813030646,38.8969781468093,38.8972990459879,38.9173286251987,38.9138938195312,38.9053614777588,38.8972990459879,38.8951330487548,38.9025309490657,38.8787837374735,38.9059616936887,38.9059616936887,38.8972756601301,38.9123244966935,38.9123244966935,38.9123244966935,38.8969781468093,38.9123244966935,38.8787837374735,38.9176468207859,38.8951330487548,38.8798055571672,38.8787837374735,38.8787837374735,38.9380302729804,38.8787837374735,38.89946796557,38.9380302729804,38.8787837374735,38.8787837374735,38.89946796557,38.8787837374735,38.8787837374735,38.8897509317986,38.8975384697838,38.9011982293062,38.9011982293062,38.8956168421101,38.8451625626788,38.8789687804984,38.8951330487548,38.9138938195312,38.8951330487548,38.8789687804984,38.8897509317986,38.89946796557,38.9274357918548,38.9138938195312,38.8956168421101,38.8451625626788,38.8787837374735,38.8787837374735,38.8596570987135,38.8787837374735,38.9123244966935,38.8787837374735,38.9610131375442,38.9088970908615,38.9610131375442,38.8451625626788,38.8789687804984,38.9365820549103,38.8897509317986,38.8787837374735,38.9248909438896,38.9073984539871,38.89946796557,38.8451625626788,38.9380302729804,38.9025284756572,38.922291710748,38.9085710004542,38.9123244966935,38.9123244966935,38.9274357918548,38.8969781468093,38.9123244966935,38.9123244966935,38.971033595096,38.9274357918548,38.9123244966935,38.9274357918548,38.9274357918548,38.9274357918548,38.9123244966935,38.9048787828423,38.9181140298708,38.9123244966935,38.9274357918548,38.9274357918548,38.916997788863,38.9123244966935,38.9123244966935,38.9025284756572,38.8975384697838,38.9274357918548,38.8572758574131,38.9123244966935,38.9123244966935,38.9123244966935,38.9312238300742,38.8986274386105,38.9025284756572,38.8920895186923,38.9291718337958,38.9048787828423,38.9219902665064,38.8798055571672,38.9123244966935,38.8987616906937,38.9123244966935,38.8738261941926,38.9672877894701,38.9322811968581,38.9199923108837,38.9088970908615,38.9138938195312,38.9274357918548,38.8956168421101,38.8969781468093,38.9123244966935,38.9370782769411,38.9059616936887,38.9123244966935,38.8619228886077,38.9123244966935,38.9274357918548,38.8920895186923,38.9274357918548,38.8619228886077,38.9248909438896,38.8787837374735,38.8787837374735,38.8612799858582,38.89946796557,38.9380302729804,38.9380302729804,38.9380302729804,38.8764808713658,38.9059616936887,38.8787837374735,38.9217550495265,38.9088970908615,38.8972990459879,38.9123244966935,38.9274357918548,38.8987616906937,38.8972990459879,38.9123244966935,38.8956168421101,38.8310799075931,38.9123244966935,38.8969781468093,38.9123244966935,38.8956168421101,38.9219902665064,38.9423807789324,38.8987616906937,38.9138938195312,38.8972990459879,38.9172327657757,38.8920895186923,38.9274357918548,38.88596760224,38.9423807789324,38.9123244966935,38.9123244966935,38.9025309490657,38.8451625626788,38.8451625626788,38.9176468207859,38.8787837374735,38.8969781468093,38.8972990459879,38.9274357918548,38.9157546686616,38.8987616906937,38.8956168421101,38.8451625626788,38.9138938195312,38.9123244966935,38.9123244966935,38.8956168421101,38.8956168421101,38.9543732722424,38.9059616936887,38.9059616936887,38.8969781468093,38.8969781468093,38.8972990459879,38.910474300986,38.9059616936887,38.8986274386105,38.9059616936887,38.9059616936887,38.8975384697838,38.9542466987947,38.8956168421101,38.9123244966935,38.9059616936887,38.9059616936887,38.9170022241396,38.9543732722424,38.8897499259629,38.8969781468093,38.9123244966935,38.8956168421101,38.9059616936887,38.821964945134,38.9138938195312,38.9123244966935,38.9123244966935,38.9048787828423,38.9336599641308,38.9240405633603,38.8875662818655,38.9088970908615,38.9138938195312,38.9123244966935,38.9173286251987,38.9138938195312,38.8451625626788,38.9610131375442,38.9123244966935,38.89946796557,38.8787837374735,38.9123244966935,38.8789687804984,38.9048787828423,38.8787837374735,38.8572784439471,38.8787837374735,38.9123244966935,38.9274357918548,38.8451625626788,38.8612799858582,38.8787837374735,38.8787837374735,38.8623686329774,38.8789687804984,38.9548153114553,38.8451625626788,38.8987616906937,38.8787837374735,38.89946796557,38.9123244966935,38.9548153114553,38.8969781468093,38.8956168421101,38.88596760224,38.9123244966935,38.8956168421101,38.8987616906937,38.9138938195312,38.8969781468093,38.8972990459879,38.8969781468093,38.9274357918548,38.9048787828423,38.8972990459879,38.8972990459879,38.8956168421101,38.9173286251987,38.9123244966935,38.8623686329774,38.9502457145359,38.9138938195312,38.8969781468093,38.9123244966935,38.9123244966935,38.8798055571672,38.8897716239952,38.9274357918548,38.9543732722424,38.8987616906937,38.8956168421101,38.8956168421101,38.9059616936887,38.9592388565325,38.8956168421101,38.9274357918548,38.8956168421101,38.9423807789324,38.9123244966935,38.8798055571672,38.8969781468093,38.9232269573385,38.922159399572,38.8659223537035,38.9138938195312,38.9138938195312,38.9123244966935,38.8637419949753,38.8972990459879,38.9423807789324,38.9274357918548,38.9088970908615,38.8532973452793,38.9123244966935,38.8875662818655,38.8897716239952,38.9274357918548,38.8934042319588,38.9123244966935,38.9123244966935,38.9123244966935,38.9029219562039,38.8972990459879,38.9258149304166,38.9173286251987,38.9050231071001,38.8920895186923,38.9048787828423,38.9065583355158,38.9274357918548,38.9274357918548,38.9138938195312,38.9543732722424,38.8969781468093,38.93523497242,38.9050231071001,38.8798055571672,38.8637419949753,38.8969781468093,38.9123244966935,38.9025309490657,38.9025284756572,38.9123244966935,38.9080385458658,38.8987616906937,38.9123244966935,38.91572541709,38.9543732722424,38.9145723864206,38.9248698525113,38.9508020861439,38.9496847404464,38.9138938195312,38.9274357918548,38.9543732722424,38.9123244966935,38.9123244966935,38.9065583355158,38.9031332078061,38.9059616936887,38.9048787828423,38.9123244966935,38.9548153114553,38.8956168421101,38.8956168421101,38.8972990459879,38.9543732722424,38.9123244966935,38.9219902665064,38.8969781468093,38.9423807789324,38.9548153114553,38.8897716239952,38.9088970908615,38.9088970908615,38.91572541709,38.8532973452793,38.8734635996299,38.9048787828423,38.9088970908615,38.9496847404464,38.9219902665064,38.8444921798781,38.9590388712232,38.9123244966935,38.9123244966935,38.8987616906937,38.8787837374735,38.8956168421101,38.8987616906937,38.8956168421101,38.9088970908615,38.8787837374735,38.8787837374735,38.8798055571672,38.8787837374735,38.9088970908615,38.8956168421101,38.8987616906937,38.8787837374735,38.9380302729804,38.8787837374735,38.8956168421101,38.9546926895927,38.8798055571672,38.9423807789324,38.8987616906937,38.8987616906937,38.8987616906937,38.8986274386105,38.9140915626003,38.8969781468093,38.9048787828423,38.9123244966935,38.9274357918548,38.9123244966935,38.9172327657757,38.9496847404464,38.8956168421101,38.9123244966935,38.8920895186923,38.9123244966935,38.8956168421101,38.8499311964911,38.9138938195312,38.9123244966935,38.9182671936068,38.9274412855855,38.9274357918548,38.9423807789324,38.9172327657757,38.9050231071001,38.9123244966935,38.8798055571672,38.9046700908518,38.931152542012,38.8675194699985,38.8969781468093,38.8798055571672,38.9123244966935,38.8951330487548,38.9172327657757,38.9543732722424,38.9088970908615,38.8875662818655,38.9274357918548,38.8786640571813,38.8986142213319,38.8987616906937,38.8966674604563,38.8804732855976,38.8859812387595,38.9123244966935,38.9423807789324,38.9548153114553,38.9210224816041,38.9059616936887,38.9059616936887,38.9613697378683,38.9123244966935,38.9219902665064,38.9123244966935,38.9543732722424,38.9223729927175,38.9074346831024,38.921196984844,38.9496847404464,38.9123244966935,38.8987616906937,38.9482601925193,38.8610106571408,38.9190519066355,38.9205880085796,38.9274357918548,38.9274357918548,38.8951330487548,38.8532973452793,38.8956168421101,38.8969781468093,38.9123244966935,38.922159399572,38.9028992876415,38.8764879459499,38.9123244966935,38.8968777487314,38.9025259356559,38.8930504710567,38.9123244966935,38.9274357918548,38.9123244966935,38.8969781468093,38.9123244966935,38.9123244966935,38.9123244966935,38.9138938195312,38.8969781468093,38.8969781468093,38.8956168421101,38.8956168421101,38.8956168421101,38.8956168421101,38.8969781468093,38.9543732722424,38.8637419949753,38.8956168421101,38.8787837374735,38.9248909438896,38.8956168421101,38.9123244966935,38.8972990459879,38.8972990459879,38.8972990459879,38.8956168421101,38.9123244966935,38.9123244966935,38.8956168421101,38.8787837374735,38.9179768530971,38.8623686329774,38.8787837374735,38.8787837374735,38.9176468207859,38.8913447138952,38.8920853941184,38.8787837374735,38.8897509317986,38.9088970908615,38.8734635996299,38.9274357918548,38.9179768530971,38.8787837374735,38.9179768530971,38.9620419851044,38.8612799858582,38.8787837374735,38.8787837374735,38.8969781468093,38.9138938195312,38.8787837374735,38.89946796557,38.951205827418,38.8928010048644,38.9258149304166,38.8789687804984,38.8789687804984,38.9179768530971,38.8987616906937,38.8787837374735,38.8787837374735,38.8787837374735,38.8787837374735,38.922291710748,38.9543732722424,38.89946796557,38.8451625626788,38.9543732722424,38.8787837374735,38.9423807789324,38.8920895186923,38.9027710152209,38.944465636468,38.8789687804984,38.8787837374735,38.8787837374735,38.9025309490657,38.8969781468093,38.9172327657757,38.8972990459879,38.9123244966935,38.9059616936887,38.9144517000852,38.9123244966935,38.9048787828423,38.8798055571672,38.8637419949753,38.9423807789324,38.8875662818655,38.91572541709,38.88596760224,38.8969781468093,38.8875662818655,38.9423807789324,38.8987616906937,38.9274357918548,38.9123244966935,38.9123244966935,38.9274357918548,38.9138938195312,38.9274357918548,38.8956168421101,38.9085756249493,38.9056459348207,38.9274357918548,38.9123244966935,38.8798055571672,38.9123244966935,38.9123244966935,38.9123244966935,38.916997788863,38.8987616906937,38.9123244966935,38.9123244966935,38.8875662818655,38.9123244966935,38.9548153114553,38.8972990459879,38.8969781468093,38.9172327657757,38.9059616936887,38.9172327657757,38.8875662818655,38.8881779931825,38.849745676869,38.8798055571672,38.9173286251987,38.9560332761835,38.91572541709,38.8637419949753,38.8451625626788,38.8897509317986,38.8451625626788,38.8451625626788,38.9274357918548,38.89946796557,38.89946796557,38.89946796557,38.9179768530971,38.8787837374735,38.8787837374735,38.9176468207859,38.8596570987135,38.8451625626788,38.9138938195312,38.8789687804984,38.8451625626788,38.9393211694272,38.8643495056954,38.9138938195312,38.8451625626788,38.8451625626788,38.8787837374735,38.8987616906937,38.8787837374735,38.9179768530971,38.9058725572712,38.8897509317986,38.8937872292815,38.9059616936887,38.9620419851044,38.9423807789324,38.8897716239952,38.9235294962134,38.9073984539871,38.9138938195312,38.8972990459879,38.8987616906937,38.8972990459879,38.9260087608615,38.9585122516679,38.8920895186923,38.9123244966935,38.8637419949753,38.9123244966935,38.8956168421101,38.9274357918548,38.9423807789324,38.9088970908615,38.8987616906937,38.9274357918548,38.8789687804984,38.8972990459879,38.9617274828536,38.8928010048644,38.8451625626788,38.9123244966935,38.8789687804984,38.8789687804984,38.9179768530971,38.9393211694272,38.8787837374735,38.8451625626788,38.8956168421101,38.8734635996299,38.9059616936887,38.9181105671157,38.8956168421101,38.8956168421101,38.9138938195312,38.8987616906937,38.9274357918548,38.9123244966935,38.9179768530971,38.8789687804984,38.8787837374735,38.9123244966935,38.9059616936887,38.9059616936887,38.9534955858599,38.9123244966935,38.9334379227543,38.9239152010338,38.9316671529939,38.9548153114553,38.8451625626788,38.9248909438896,38.9048787828423,38.8451625626788,38.9088970908615,38.9274357918548,38.9187674106345,38.901813762654,38.8897509317986,38.8787837374735,38.9015637650816,38.8787837374735,38.8787837374735,38.8969781468093,38.9123244966935,38.8451625626788,38.9334379227543,38.9274357918548,38.8920895186923,38.89946796557,38.8787837374735,38.9274357918548,38.9123244966935,38.8956168421101,38.8987616906937,38.8987616906937,38.8956168421101,38.8987616906937,38.8956168421101,38.8451625626788,38.8897509317986,38.8787837374735,38.8987616906937,38.922291710748,38.9048787828423,38.8787837374735,38.9025284756572,38.8789687804984,38.8987616906937,38.9123244966935,38.8451625626788,38.9179768530971,38.9334379227543,38.8787837374735,38.8920895186923,38.8787837374735,38.9365820549103,38.9179768530971,38.8612799858582,38.9548153114553,38.9123244966935,38.8596570987135,38.9138938195312,38.8972990459879,38.9543732722424,38.9275383636822,38.9138938195312,38.8972990459879,38.9450603367381,38.9543732722424,38.8972990459879,38.9543732722424,38.9059616936887,38.9059616936887,38.8972990459879,38.9059616936887,38.9543732722424,38.9543732722424,38.9138938195312,38.9138938195312,38.9138938195312,38.8972990459879,38.8972990459879,38.9123244966935,38.9123244966935,38.9274357918548,38.8972990459879,38.9123244966935,38.9274357918548,38.9123244966935,38.8972990459879,38.9048787828423,38.931152542012,38.9037396225627,38.9123244966935,38.9123244966935,38.8972990459879,38.9059616936887,38.9059616936887,38.9059616936887,38.9542466987947,38.947894894039,38.9543732722424,38.9431973161413,38.8963817606434,38.8856330513261,38.9274357918548,38.8619228886077,38.9173286251987,38.9274357918548,38.9235294962134,38.9508020861439,38.9048787828423,38.9088970908615,38.9423807789324,38.8972990459879,38.9088970908615,38.9123244966935,38.9274357918548,38.9274357918548,38.9048787828423,38.8987616906937,38.8920895186923,38.8972990459879,38.9274357918548,38.9173286251987,38.8969781468093,38.8969781468093,38.9543732722424,38.9123244966935,38.9274357918548,38.9123244966935,38.8969781468093,38.9123244966935,38.9138938195312,38.9487326242844,38.9632683093174,38.9399404376352,38.9080177610022,38.9343447836364,38.8972990459879,38.9620419851044,38.9088970908615,38.9088970908615,38.8532973452793,38.9496847404464,38.88596760224,38.916997788863,38.9138938195312,38.9123244966935,38.9025284756572,38.9123244966935,38.8921894933813,38.8692912571222,38.9059616936887,38.9049086958732,38.8987616906937,38.8987616906937,38.8956168421101,38.9123244966935,38.8734635996299,38.9123244966935,38.9123244966935,38.9050231071001,38.8798055571672,38.9050231071001,38.9123244966935,38.8972990459879,38.8972990459879,38.912785337646,38.9059616936887,38.9123244966935,38.89946796557,38.9380302729804,38.8787837374735,38.8451625626788,38.9191832287402,38.9597528280657,38.9059616936887,38.9496847404464,38.8787837374735,38.9380302729804,38.8612799858582,38.8787837374735,38.8451625626788,38.9380302729804,38.8787837374735,38.9138938195312,38.8956168421101,38.9123244966935,38.8987616906937,38.9123244966935,38.8451625626788,38.9059616936887,38.9123244966935,38.8969781468093,38.9123244966935,38.8969781468093,38.9274357918548,38.8451625626788,38.8451625626788,38.9548153114553,38.9138938195312,38.8787837374735,38.922291710748,38.8787837374735,38.8451625626788,38.9548153114553,38.8987616906937,38.9423807789324,38.8951330487548,38.9380302729804,38.8451625626788,38.8451625626788,38.9380302729804,38.8787837374735,38.8798055571672,38.9172327657757,38.9548153114553,38.8956168421101,38.8787837374735,38.8451625626788,38.8787837374735,38.8956168421101,38.8956168421101,38.8956168421101,38.8987616906937,38.8798055571672,38.8787837374735,38.8787837374735,38.8787837374735,38.8798055571672,38.8789687804984,38.9123244966935,38.9560332761835,38.8610106571408,38.9123244966935,38.9123244966935,38.8987616906937,38.8956168421101,38.9025284756572,38.9496847404464,38.9088970908615,38.9560332761835,38.8612799858582,38.8451625626788,38.8787837374735,38.8451625626788,38.9610131375442,38.8787837374735,38.8532973452793,38.9172327657757,38.9138938195312,38.8451625626788,38.9274357918548,38.9123244966935,38.8787837374735,38.8789687804984,38.8789687804984,38.8612799858582,38.8787837374735,38.8787837374735,38.8764808713658,38.89946796557,38.8451625626788,38.8612799858582,38.8897509317986,38.89946796557,38.8987616906937,38.9123244966935,38.9274357918548,38.8972990459879,38.9123244966935,38.8972990459879,38.8969781468093,38.8969781468093,38.9274357918548,38.9274357918548,38.9123244966935,38.8787837374735,38.8451625626788,38.9048787828423,38.9123244966935,38.9123244966935,38.901254408509,38.8798055571672,38.9025284756572,38.9048787828423,38.9172327657757,38.9138938195312,38.8734635996299,38.8987616906937,38.8956168421101,38.8987616906937,38.8987616906937,38.8987616906937,38.8987616906937,38.8987616906937,38.8956168421101,38.8987616906937,38.8532973452793,38.8623686329774,38.8951330487548,38.8956168421101,38.8798055571672,38.9496847404464,38.9172327657757,38.9423807789324,38.8451625626788,38.9334379227543,38.9496847404464,38.9423807789324,38.9380302729804,38.9123244966935,38.9123244966935,38.8612799858582,38.9123244966935,38.8987616906937,38.9157546686616,38.9234967429735,38.9167715805073,38.8563332677474,38.8451625626788,38.8897499259629,38.8787837374735,38.8956168421101,38.9138938195312,38.8787837374735,38.8789687804984,38.8787837374735,38.8787837374735,38.8787837374735,38.89946796557,38.9274357918548,38.9002078830843,38.8787837374735,38.9172327657757,38.9274357918548,38.8836948205469,38.8637419949753,38.8969781468093,38.9025309490657,38.8920895186923,38.9048787828423,38.8920853941184,38.919301350393,38.919301350393,38.9274357918548,38.9123244966935,38.9123244966935,38.8969781468093,38.8920895186923,38.9025250732631,38.9048787828423,38.9112611390194,38.8831954661573,38.9123244966935,38.9123244966935,38.926204316972,38.9301407114703,38.9123244966935,38.9025284756572,38.9612590606149,38.8897716239952,38.9283923456795,38.9018277237717,38.9274357918548,38.9274357918548,38.9274357918548,38.9274357918548,38.9173286251987,38.9048787828423,38.8969781468093,38.9123244966935,38.8987616906937,38.9123244966935,38.9409299683181,38.8995562630189,38.9274357918548,38.8956168421101,38.8798055571672,38.9274357918548,38.9548153114553,38.9543732722424,38.9138938195312,38.8952167345401,38.8972990459879,38.9123244966935,38.8987616906937,38.8798055571672,38.9138938195312,38.9060521810035,38.9123244966935,38.91572541709,38.9138938195312,38.9610173877836,38.9048787828423,38.9138938195312,38.9123244966935,38.9123244966935,38.8969781468093,38.8734635996299,38.8637419949753,38.8956168421101,38.9059616936887,38.9123244966935,38.9123244966935,38.9048787828423,38.8969781468093,38.9050231071001,38.8972990459879,38.9543732722424,38.9173286251987,38.9123244966935,38.8938311327721,38.931152542012,38.9013364406796,38.9258149304166,38.894017980586,38.8969781468093,38.8969781468093,38.9286873734321,38.9123244966935,38.9123244966935,38.9274357918548,38.9423807789324,38.8798055571672,38.9123244966935,38.9170022241396,38.9543732722424,38.9274357918548,38.9059616936887,38.9071023258692,38.9301630074979,38.8868755284734,38.8972990459879,38.9123244966935,38.8969781468093,38.88596760224,38.8897716239952,38.9612590606149,38.8522616082975,38.9548153114553,38.9123244966935,38.9123244966935,38.9123244966935,38.9548153114553,38.9123244966935,38.9123244966935,38.9065583355158,38.9138938195312,38.9088970908615,38.9274357918548,38.9123244966935,38.9543732722424,38.9274357918548,38.9123244966935,38.9274357918548,38.9123244966935,38.8956168421101,38.8956168421101,38.9123244966935,38.9123244966935,38.8956168421101,38.9274357918548,38.9123244966935,38.9274357918548,38.9123244966935,38.9048787828423,38.8987616906937,38.9123244966935,38.9123244966935,38.9548153114553,38.9543732722424,38.9123244966935,38.8897499259629,38.9123244966935,38.941478915131,38.9059616936887,38.8984836706253,38.8987616906937,38.8956168421101,38.9053614777588,38.8929390071813,38.9313014690064,38.8951330487548,38.9048787828423,38.9048787828423,38.9053614777588,38.8798055571672,38.9048787828423,38.9235294962134,38.9423807789324,38.9126056381912,38.8951330487548,38.9123244966935,38.8637419949753,38.9088970908615,38.8875662818655,38.88596760224,38.9138938195312,38.9138938195312,38.9123244966935,38.9138938195312,38.9123244966935,38.8596570987135,38.9423807789324,38.8987616906937,38.8956168421101,38.9274357918548,38.9123244966935,38.8987616906937,38.9123244966935,38.8451625626788,38.9167802887442,38.8956168421101,38.9123244966935,38.8451625626788,38.8451625626788,38.9343320067805,38.8451625626788,38.8451625626788,38.8451625626788,38.9050231071001,38.88596760224,38.9123244966935,38.9172327657757,38.9088970908615,38.8956168421101,38.9138938195312,38.8637419949753,38.9343212833728,38.910474300986,38.8975384697838,38.9612590606149,38.8969781468093,38.9048787828423,38.9138938195312,38.9423807789324,38.8987616906937,38.9543732722424,38.9123244966935,38.9123244966935,38.8956168421101,38.9274357918548,38.9123244966935,38.8787837374735,38.9123244966935,38.8789687804984,38.9617274828536,38.9179768530971,38.8787837374735,38.9112611390194,38.8572784439471,38.9002078830843,38.9088970908615,38.9088970908615,38.9274357918548,38.8987616906937,38.9048787828423,38.8875662818655,38.9209329961366,38.8956168421101,38.9380302729804,38.9138938195312,38.9123244966935,38.8451625626788,38.8451625626788,38.8920853941184,38.9048787828423,38.8787837374735,38.8787837374735,38.9380302729804,38.8787837374735,38.8787837374735,38.8787837374735,38.8789687804984,38.9380302729804,38.8787837374735,38.8787837374735,38.8787837374735,38.9548153114553,38.8789687804984,38.89946796557,38.8787837374735,38.8787837374735,38.89946796557,38.8596570987135,38.8596570987135,38.8787837374735,38.923158966869,38.9123244966935,38.8451625626788,38.9179768530971,38.8789687804984,38.9496847404464,38.8789687804984,38.8897716239952,38.9612590606149,38.8451625626788,38.9179768530971,38.8897509317986,38.9334379227543,38.8787837374735,38.9179768530971,38.8787837374735,38.8789687804984,38.9617274828536,38.8451625626788,38.8789687804984,38.9179768530971,38.8920895186923,38.9548153114553,38.9138938195312,38.9179768530971,38.9274357918548,38.8789687804984,38.8787837374735,38.8956168421101,38.9179768530971,38.8932990791349,38.8451625626788,38.9088970908615,38.8876425824234,38.9191673066646,38.909927429981,38.9235971760982,38.8987616906937,38.8956168421101,38.9123244966935,38.9548153114553,38.9496847404464,38.9274357918548,38.9274357918548,38.8987616906937,38.8972990459879,38.8798055571672,38.9123244966935,38.8970551363322,38.9123244966935,38.9123244966935,38.9123244966935,38.8956168421101,38.8987616906937,38.9088970908615,38.8951330487548,38.9123244966935,38.9123244966935,38.9123244966935,38.9172327657757,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.9025284756572,38.9548153114553,38.8987616906937,38.8987616906937,38.9274357918548,38.9123244966935,38.9025284756572,38.8992501183643,38.9123244966935,38.8643495056954,38.9274357918548,38.8623686329774,38.8972990459879,38.9123244966935,38.9123244966935,38.9123244966935,38.9274357918548,38.9172327657757,38.9612590606149,38.8734635996299,38.9274357918548,38.8987616906937,38.9612590606149,38.8956168421101,38.9274357918548,38.9172327657757,38.8969781468093,38.9173286251987,38.88596760224,38.8920895186923,38.9138938195312,38.9274357918548,38.9274357918548,38.9123244966935,38.9123244966935,38.8637419949753,38.9059616936887,38.8798055571672,38.9123244966935,38.9423807789324,38.8972990459879,38.8987616906937,38.9542466987947,38.8956168421101,38.8956168421101,38.8798055571672,38.8798055571672,38.8956168421101,38.8987616906937,38.8987616906937,38.8451625626788,38.8987616906937,38.9548153114553,38.9496847404464,38.8897716239952,38.8956168421101,38.8951330487548,38.9088970908615,38.8972990459879,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.8956168421101,38.8987616906937,38.8787837374735,38.8623686329774,38.8972990459879,38.8972990459879,38.9143789989802,38.9123244966935,38.9123244966935,38.9274357918548,38.8787837374735,38.8451625626788,38.8451625626788,38.8787837374735,38.9172327657757,38.8532973452793,38.9380302729804,38.89946796557,38.9123244966935,38.8956168421101,38.8987616906937,38.9274357918548,38.8969781468093,38.8956168421101,38.8956168421101,38.9123244966935,38.8969781468093,38.8969781468093,38.9123244966935,38.9274357918548,38.8787837374735,38.9123244966935,38.9173286251987,38.8969781468093,38.8956168421101,38.9543732722424,38.9059616936887,38.9274357918548,38.8969781468093,38.8969781468093,38.9123244966935,38.9219902665064,38.8623686329774,38.9056459348207,38.9225453722466,38.9170022241396,38.8545370207381,38.8956168421101,38.9274357918548,38.9123244966935,38.8920895186923,38.8451625626788,38.9048787828423,38.9123244966935,38.8956168421101,38.9274357918548,38.8451625626788,38.9274357918548,38.9274357918548,38.9025309490657,38.9123244966935,38.9088970908615,38.9048787828423,38.9048787828423,38.9496847404464,38.8920895186923,38.8897716239952,38.9088970908615,38.9274357918548,38.9138938195312,38.8969781468093,38.9260087608615,38.8987616906937,38.9123244966935,38.8956168421101,38.8969781468093,38.8987616906937,38.9123244966935,38.8920895186923,38.9123244966935,38.9123244966935,38.8767521271504,38.9048787828423,38.9546926895927,38.9123244966935,38.9543732722424,38.8972990459879,38.8506842992464,38.8736266238276,38.9059616936887,38.8900647761562,38.8694736289741,38.9274357918548,38.9123244966935,38.9123244966935,38.9088970908615,38.9059616936887,38.8972990459879,38.9138938195312,38.9059616936887,38.9138938195312,38.9138938195312,38.9059616936887,38.9138938195312,38.9543732722424,38.9138938195312,38.8972990459879,38.9546982353771,38.9543732722424,38.9138938195312,38.9320394189916,38.8972990459879,38.9543732722424,38.9138938195312,38.9059616936887,38.8972990459879,38.8972990459879,38.9059616936887,38.9059616936887,38.9543732722424,38.9059616936887,38.8972990459879,38.9138938195312,38.8972990459879,38.9138938195312,38.9543732722424,38.8972990459879,38.9543732722424,38.9059616936887,38.9138938195312,38.9138938195312,38.8972990459879,38.9274357918548,38.9048787828423,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.8969781468093,38.9179768530971,38.8787837374735,38.8987616906937,38.8787837374735,38.8787837374735,38.8787837374735,38.8734635996299,38.8451625626788,38.8451625626788,38.89946796557,38.8787837374735,38.8451625626788,38.8451625626788,38.8643495056954,38.8451625626788,38.9334379227543,38.8451625626788,38.9123244966935,38.8643495056954,38.8956168421101,38.89946796557,38.8897509317986,38.8789687804984,38.9274357918548,38.8987616906937,38.9123244966935,38.8969781468093,38.9123244966935,38.9176468207859,38.9274357918548,38.8787837374735,38.8451625626788,38.9274357918548,38.8787837374735,38.9548153114553,38.8596570987135,38.8596570987135,38.9380302729804,38.8787837374735,38.8787837374735,38.8787837374735,38.8787837374735,38.8897509317986,38.8787837374735,38.8787837374735,38.9002078830843,38.8787837374735,38.9274357918548,38.8451625626788,38.9176468207859,38.89946796557,38.9179768530971,38.8969781468093,38.9179768530971,38.8787837374735,38.9543732722424,38.9059616936887,38.8451625626788,38.9179768530971,38.8451625626788,38.9274357918548,38.9123244966935,38.9050231071001,38.8972990459879,38.8956168421101,38.9138938195312,38.9123244966935,38.8969781468093,38.9274357918548,38.9123244966935,38.9138938195312,38.8956168421101,38.9138938195312,38.9274357918548,38.8961285471172,38.9560332761835,38.9274357918548,38.9123244966935,38.9123244966935,38.9138938195312,38.9123244966935,38.8798055571672,38.8987616906937,38.9123244966935,38.9025284756572,38.9123244966935,38.9123244966935,38.9542466987947,38.9274357918548,38.9274357918548,38.8987616906937,38.9048787828423,38.9123244966935,38.9274357918548,38.9173286251987,38.8875662818655,38.9245077292393,38.8555865136976,38.9123244966935,38.9048787828423,38.8655647847255,38.9173286251987,38.9002078830843,38.916997788863,38.9123244966935,38.8315865244996,38.9123244966935,38.9123244966935,38.9123244966935,38.9088027982425,38.9123244966935,38.9274357918548,38.9179768530971,38.9176468207859,38.9088970908615,38.9123244966935,38.8767521271504,38.9123244966935,38.9123244966935,38.8789687804984,38.8787837374735,38.8451625626788,38.9048787828423,38.9274357918548,38.9123244966935,38.9048787828423,38.9048787828423,38.9543732722424,38.8972990459879,38.8972990459879,38.9138938195312,38.9059616936887,38.9138938195312,38.9138938195312,38.9059616936887,38.9138938195312,38.8787837374735,38.9048787828423,38.9053614777588,38.8987616906937,38.89946796557,38.8623686329774,38.9274357918548,38.9123244966935,38.8956168421101,38.8787837374735,38.8787837374735,38.8787837374735,38.8789687804984,38.8787837374735,38.8787837374735,38.8787837374735,38.9380302729804,38.8787837374735,38.8451625626788,38.9179768530971,38.8789687804984,38.9365820549103,38.8789687804984,38.8987616906937,38.8451625626788,38.8972990459879,38.9179768530971,38.8451625626788,38.8596570987135,38.8787837374735,38.8764808713658,38.9380302729804,38.8612799858582,38.8787837374735,38.8787837374735,38.8612799858582,38.8764808713658,38.8787837374735,38.8787837374735,38.8612799858582,38.89946796557,38.9380302729804,38.8787837374735,38.8787837374735,38.8596570987135,38.8787837374735,38.8987616906937,38.8951330487548,38.827786703454,38.8975384697838,38.9034536189501,38.8787837374735,38.9123244966935,38.8451625626788,38.9059616936887,38.906441607104,38.9439469138504,38.9123244966935,38.9123244966935,38.8956168421101,38.8934042319588,38.8388045361742,38.9612590606149,38.8956168421101,38.8972990459879,38.9048787828423,38.9123244966935,38.9123244966935,38.9123244966935,38.8787837374735,38.8451625626788,38.9123244966935,38.8904737256621,38.8787837374735,38.8840614649561,38.89946796557,38.9401374356537,38.9123244966935,38.8987616906937,38.910474300986,38.8956168421101,38.9123244966935,38.9543732722424,38.8987616906937,38.9274357918548,38.8972990459879,38.9073984539871,38.9191832287402,38.8511936167774,38.931152542012,38.9184076522201,38.9088970908615,38.9258149304166,38.9088970908615,38.9191832287402,38.9181105671157,38.8915270237798,38.9181105671157,38.8920932091134,38.9258149304166,38.9088970908615,38.9258149304166,38.9088970908615,38.8987616906937,38.9548153114553,38.8956168421101,38.9496847404464,38.9053614777588,38.8897716239952,38.9560332761835,38.8956168421101,38.8956168421101,38.8734635996299,38.9548153114553,38.8956168421101,38.8987616906937,38.8987616906937,38.9088970908615,38.8987616906937,38.8956168421101,38.8798055571672,38.9050231071001,38.9172327657757,38.8798055571672,38.8956168421101,38.9053614777588,38.8956168421101,38.8798055571672,38.8987616906937,38.8956168421101,38.8787837374735,38.8987616906937,38.8956168421101,38.8987616906937,38.8789687804984,38.8798055571672,38.8956168421101,38.931152542012,38.9172327657757,38.9149149843206,38.9059616936887,38.9274357918548,38.9173286251987,38.8987616906937,38.9496847404464,38.9088970908615,38.884807925326,38.9123244966935,38.9548153114553,38.9123244966935,38.9274357918548,38.9123244966935,38.8956168421101,38.9123244966935,38.9123244966935,38.9274357918548,38.9274357918548,38.8972990459879,38.9048787828423,38.9274357918548,38.9123244966935,38.9123244966935,38.9123244966935,38.9138938195312,38.9123244966935,38.9048787828423,38.8987616906937,38.9496847404464,38.9172327657757,38.9123244966935,38.8798055571672,38.8969781468093,38.9172327657757,38.9172327657757,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.8637419949753,38.9423807789324,38.9612590606149,38.9173286251987,38.8798055571672,38.8798055571672,38.9123244966935,38.8956168421101,38.9173286251987,38.9123244966935,38.9274357918548,38.9274357918548,38.9123244966935,38.8969781468093,38.9441909685395,38.9274357918548,38.9274357918548,38.9274357918548,38.8972990459879,38.9048787828423,38.8969781468093,38.9123244966935,38.8798055571672,38.9274357918548,38.8956168421101,38.9274357918548,38.9123244966935,38.9274357918548,38.9123244966935,38.88596760224,38.9579999037191,38.9087210118574,38.8951330487548,38.9543732722424,38.8784712129186,38.9191848308643,38.9521866665848,38.9382011234398,38.905014335098,38.9123244966935,38.9048787828423,38.8972990459879,38.8646346686252,38.9543732722424,38.9123244966935,38.9123244966935,38.9048787828423,38.9548153114553,38.9123244966935,38.906441607104,38.9421636018637,38.8956168421101,38.8956168421101,38.9123244966935,38.8956168421101,38.9423807789324,38.9053614777588,38.9050231071001,38.9274357918548,38.8987616906937,38.9530112093681,38.9059616936887,38.9059616936887,38.9640657906483,38.8956168421101,38.9274357918548,38.9123244966935,38.9123244966935,38.9138938195312,38.9274357918548,38.9543732722424,38.9123244966935,38.9369708060602,38.9048787828423,38.8637419949753,38.9560332761835,38.9218514491354,38.9123244966935,38.9123244966935,38.9123244966935,38.9496847404464,38.9560332761835,38.9172327657757,38.9274357918548,38.8972990459879,38.9123244966935,38.9123244966935,38.9274357918548,38.9048787828423,38.9048787828423,38.9546926895927,38.8637419949753,38.8623686329774,38.8897716239952,38.9025284756572,38.9235294962134,38.8798055571672,38.9123244966935,38.8987616906937,38.9123244966935,38.8787837374735,38.9048787828423,38.8789687804984,38.9123244966935,38.9274357918548,38.91572541709,38.8643495056954,38.8787837374735,38.9274357918548,38.9126054585057,38.8897509317986,38.8787837374735,38.8787837374735,38.8787837374735,38.9334379227543,38.9048787828423,38.9138938195312,38.8451625626788,38.8787837374735,38.8787837374735,38.9003550470259,38.8655943838585,38.9181060363312,38.8787837374735,38.9123244966935,38.9274357918548,38.8789687804984,38.9543732722424,38.9612590606149,38.8612799858582,38.9365820549103,38.8789687804984,38.9138938195312,38.9050231071001,38.9179768530971,38.9219902665064,38.9138938195312,38.8787837374735,38.8787837374735,38.9590093605049,38.906441607104,38.9123244966935,38.9123244966935,38.9543732722424,38.8987616906937,38.9274357918548,38.9123244966935,38.9123244966935,38.8987616906937,38.9548153114553,38.8972990459879,38.9025284756572,38.9423807789324,38.8619228886077,38.9053614777588,38.9496847404464,38.9123244966935,38.9198649762121,38.9123244966935,38.9274357918548,38.9123244966935,38.9088970908615,38.9025309490657,38.9423807789324,38.9048787828423,38.9123244966935,38.9025284756572,38.9274357918548,38.9123244966935,38.8972990459879,38.9126033495071,38.9123244966935,38.9123244966935,38.9053614777588,38.9123244966935,38.8987616906937,38.9138938195312,38.9048787828423,38.9123244966935,38.8987616906937,38.8734635996299,38.9123244966935,38.9548153114553,38.8969781468093,38.8734635996299,38.9138938195312,38.9123244966935,38.9173286251987,38.9123244966935,38.9274357918548,38.9543732722424,38.9274357918548,38.9274357918548,38.9274357918548,38.8975384697838,38.9048787828423,38.9123244966935,38.9059616936887,38.9172327657757,38.8734635996299,38.9274357918548,38.8956168421101,38.9543732722424,38.9048787828423,38.8956168421101,38.9138938195312,38.9274357918548,38.9661375506371,38.9423807789324,38.9053614777588,38.9235294962134,38.8969781468093,38.8969781468093,38.9123244966935,38.9048787828423,38.9025284756572,38.9123244966935,38.9088970908615,38.9123244966935,38.8920895186923,38.9053614777588,38.8987616906937,38.9123244966935,38.9088970908615,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.9059616936887,38.9142758144226,38.8971475621739,38.9191851784289,38.9542466987947,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.9423807789324,38.9274357918548,38.9123244966935,38.8956168421101,38.9123244966935,38.8956168421101,38.9123244966935,38.8951330487548,38.8734635996299,38.9123244966935,38.9423807789324,38.9123244966935,38.8798055571672,38.9138938195312,38.9543732722424,38.9176468207859,38.8451625626788,38.9179768530971,38.9176468207859,38.8787837374735,38.88596760224,38.8968777487314,38.9548153114553,38.9025284756572,38.9048787828423,38.9274357918548,38.8956168421101,38.9123244966935,38.8789687804984,38.8612799858582,38.8987616906937,38.9365820549103,38.9334379227543,38.9318710482793,38.8975384697838,38.9560332761835,38.8596570987135,38.9048787828423,38.9053614777588,38.8920895186923,38.8920895186923,38.9173286251987,38.8532973452793,38.8637419949753,38.9123244966935,38.9098515112244,38.8956168421101,38.9048787828423,38.9274357918548,38.88596760224,38.9088970908615,38.9123244966935,38.9123244966935,38.8928546345364,38.9059616936887,38.8987616906937,38.9048787828423,38.9314122461775,38.9323070403764,38.9048787828423,38.9172327657757,38.8956168421101,38.8987616906937,38.9123244966935,38.9138938195312,38.9172327657757,38.8972990459879,38.9423807789324,38.9099131600298,38.8897716239952,38.8972990459879,38.8972990459879,38.88596760224,38.9048787828423,38.9496847404464,38.9106022081745,38.9496847404464,38.9088970908615,38.9048787828423,38.9548153114553,38.8532973452793,38.9496847404464,38.9088970908615,38.8920853941184,38.8987616906937,38.9123244966935,38.8875662818655,38.9048787828423,38.9548153114553,38.9274357918548,38.9199923108837,38.9363285015409,38.9123244966935,38.9002078830843,38.8734635996299,38.9088970908615,38.9548153114553,38.9496847404464,38.885952941446,38.8997885573137,38.926752197246,38.8671247459622,38.8326994218436,38.9274357918548,38.9123244966935,38.9548153114553,38.9543732722424,38.88596760224,38.9274357918548,38.9048787828423,38.9274357918548,38.9123244966935,38.9048787828423,38.8787837374735,38.8787837374735,38.8987616906937,38.8734635996299,38.9088970908615,38.8734635996299,38.8956168421101,38.9496847404464,38.9423807789324,38.9423807789324,38.9496847404464,38.8987616906937,38.8987616906937,38.9050231071001,38.8787837374735,38.8787837374735,38.8798055571672,38.8532973452793,38.8787837374735,38.8789687804984,38.9617274828536,38.8787837374735,38.8789687804984,38.8787837374735,38.9174665041885,38.8972990459879,38.8956168421101,38.8532973452793,38.9123244966935,38.9612590606149,38.9548153114553,38.9274357918548,38.8987616906937,38.8969781468093,38.9174665041885,38.9174665041885,38.9311479303557,38.9131222199297,38.879232451752,38.9138938195312,38.8798055571672,38.9002078830843,38.8987616906937,38.9123244966935,38.9274357918548,38.9123244966935,38.9123244966935,38.9274357918548,38.9138938195312,38.9123244966935,38.91572541709,38.9123244966935,38.9496847404464,38.9543732722424,38.8972990459879,38.9123244966935,38.8302866634561,38.9123244966935,38.8897716239952,38.9423807789324,38.8969781468093,38.8987616906937,38.8956168421101,38.9123244966935,38.8843629899975,38.8787837374735,38.9380302729804,38.8596570987135,38.9059616936887,38.9123244966935,38.8451625626788,38.9179768530971,38.9002078830843,38.8789687804984,38.89946796557,38.9048787828423,38.8789687804984,38.9172327657757,38.9334379227543,38.922291710748,38.8451625626788,38.8787837374735,38.8451625626788,38.9176468207859,38.8787837374735,38.8787837374735,38.9176468207859,38.9123244966935,38.8451625626788,38.8451625626788,38.8787837374735,38.9040723534931,38.920619674087,38.9380302729804,38.8451625626788,38.8787837374735,38.9380302729804,38.8451625626788,38.89946796557,38.8787837374735,38.8596570987135,38.9380302729804,38.8787837374735,38.8897509317986,38.8787837374735,38.9380302729804,38.8787837374735,38.8897716239952,38.9173286251987,38.9334379227543,38.8787837374735,38.9380302729804,38.8739285252199,38.899068911352,38.9123244966935,38.9048787828423,38.9138938195312,38.89946796557,38.9138938195312,38.8643495056954,38.9059616936887,38.9138938195312,38.9138938195312,38.9543732722424,38.89946796557,38.9543732722424,38.89946796557,38.9543732722424,38.89946796557,38.9138938195312,38.9138938195312,38.9138938195312,38.9059616936887,38.9534955858599,38.9138938195312,38.8972990459879,38.9059616936887,38.9543732722424,38.89946796557,38.89946796557,38.9059616936887,38.89946796557,38.9543732722424,38.9059616936887,38.9138938195312,38.9186961320633,38.9488117175736,38.9088970908615,38.9169992994238,38.9174665041885,38.9056459348207,38.9307488745409,38.8786534454243,38.931152542012,38.9307488745409,38.8814911968901,38.8814911968901,38.9059616936887,38.9543732722424,38.9138938195312,38.9138938195312,38.8972990459879,38.9138938195312,38.9138938195312,38.9059616936887,38.9138938195312,38.8972990459879,38.9543732722424,38.9138938195312,38.9543732722424,38.9543732722424,38.9138938195312,38.8972990459879,38.9543732722424,38.8972990459879,38.9059616936887,38.8972990459879,38.8972990459879,38.8972990459879,38.9543732722424,38.9138938195312,38.9543732722424,38.9059616936887,38.9543732722424,38.8972990459879,38.8972990459879,38.8972990459879,38.9543732722424,38.9059616936887,38.9138938195312,38.8972990459879,38.9059616936887,38.9543732722424,38.9272262382648,38.9059616936887,38.9138938195312,38.8972990459879,38.9543732722424,38.8972990459879,38.9138938195312,38.9138938195312,38.9606627440782,38.8972990459879,38.9543732722424,38.9543732722424,38.9543732722424,38.9138938195312,38.9543732722424,38.9543732722424,38.8972990459879,38.9138938195312,38.9138938195312,38.9138938195312,38.9172327657757,38.8532973452793,38.8969781468093,38.8451625626788,38.9048787828423,38.8532973452793,38.8596570987135,38.9172327657757,38.89946796557,38.9064075377374,38.8764808713658,38.8764808713658,38.8787837374735,38.8787837374735,38.910474300986,38.8655943838585,38.93170320429,38.9274357918548,38.9123244966935,38.9123244966935,38.8972990459879,38.894303977843,38.916997788863,38.8871377834013,38.9380302729804,38.8787837374735,38.8451625626788,38.9548153114553,38.9365820549103,38.9610131375442,38.9179768530971,38.8787837374735,38.8789687804984,38.8956168421101,38.9179768530971,38.9019304324969,38.9278031698184,38.8291091789139,38.8975384697838,38.9123244966935,38.8787837374735,38.9543732722424,38.9183041641631,38.9169928042541,38.9025240683091,38.8975175650119,38.9123244966935,38.8623686329774,38.9123244966935,38.9274357918548,38.9138938195312,38.8956168421101,38.8798055571672,38.91572541709,38.8987616906937,38.9123244966935,38.9138938195312,38.9138938195312,38.9423807789324,38.9274357918548,38.9274357918548,38.9274357918548,38.9274357918548,38.9048787828423,38.9123244966935,38.9048787828423,38.9496847404464,38.9123244966935,38.8937840553337,38.9274357918548,38.9123244966935,38.8969781468093,38.8631287403064,38.9274357918548,38.9123244966935,38.9123244966935,38.9123244966935,38.9025284756572,38.9048787828423,38.9123244966935,38.9123244966935,38.9048787828423,38.933450482502,38.9274357918548,38.9274357918548,38.9274357918548,38.8930867748566,38.8441120991014,38.9048787828423,38.9612590606149,38.9053689564719,38.9123244966935,38.9274357918548,38.9274357918548,38.9048787828423,38.9123244966935,38.9173286251987,38.9123244966935,38.9123244966935,38.9242387955974,38.8928958734287,38.8969781468093,38.9123244966935,38.9025284756572,38.910474300986,38.9335264926605,38.9123244966935,38.9274357918548,38.8787837374735,38.8787837374735,38.8596570987135,38.9380302729804,38.8787837374735,38.8734635996299,38.89946796557,38.9496847404464,38.8787837374735,38.8787837374735,38.9380302729804,38.8612799858582,38.9380302729804,38.8596570987135,38.9248909438896,38.9548153114553,38.8451625626788,38.8787837374735,38.9123244966935,38.8789687804984,38.8789687804984,38.9179768530971,38.8972990459879,38.9123244966935,38.9123244966935,38.8956168421101,38.89946796557,38.9059616936887,38.9059616936887,38.9179768530971,38.8787837374735,38.8787837374735,38.9179768530971,38.9123244966935,38.8734635996299,38.8787837374735,38.8787837374735,38.9334379227543,38.8787837374735,38.8987616906937,38.8789687804984,38.8787837374735,38.8789687804984,38.9173286251987,38.8451625626788,38.8787837374735,38.922291710748,38.9179768530971,38.9176468207859,38.8612799858582,38.8451625626788,38.9534955858599,38.8451625626788,38.89946796557,38.9123244966935,38.8920895186923,38.9274357918548,38.9123244966935,38.8956168421101,38.8987616906937,38.9123244966935,38.9123244966935,38.8956168421101,38.8987616906937,38.8451625626788,38.9088970908615,38.8798055571672,38.9172327657757,38.8787837374735,38.8787837374735,38.8787837374735,38.89946796557,38.8787837374735,38.8764808713658,38.8506842992464,38.8897509317986,38.89946796557,38.9274357918548,38.8969781468093,38.9173286251987,38.8787837374735,38.8787837374735,38.8956168421101,38.8956168421101,38.9172327657757,38.8956168421101,38.8798055571672,38.8951330487548,38.8987616906937,38.8734635996299,38.9088970908615,38.9088970908615,38.8798055571672,38.9548153114553,38.9088970908615,38.8787837374735,38.8623686329774,38.8987616906937,38.8787837374735,38.8451625626788,38.9334379227543,38.8789687804984,38.8787837374735,38.8789687804984,38.8789687804984,38.8987616906937,38.8787837374735,38.8787837374735,38.8987616906937,38.9123244966935,38.8623686329774,38.9123244966935,38.9123244966935,38.9123244966935,38.9274357918548,38.9612590606149,38.9274357918548,38.8787837374735,38.8787837374735,38.9053614777588,38.9123244966935,38.8734635996299,38.9123244966935,38.9048787828423,38.8920853941184,38.9088970908615,38.9138938195312,38.9496847404464,38.9123244966935,38.8987616906937,38.9048787828423,38.9235294962134,38.9172327657757,38.9123244966935,38.933695410272,38.8956168421101,38.9123244966935,38.9123244966935,38.8972990459879,38.8956168421101,38.8956168421101,38.9123244966935,38.9123244966935,38.8987616906937,38.9176468207859,38.9059616936887,38.9059616936887,38.9059616936887,38.9172327657757,38.8949047582455,38.9056459348207,38.9088970908615,38.9612590606149,38.8734635996299,38.9176468207859,38.8451625626788,38.9123244966935,38.9123244966935,38.9048787828423,38.9123244966935,38.9123244966935,38.9274357918548,38.8956168421101,38.8789687804984,38.9176468207859,38.8656755231304,38.9138938195312,38.9123244966935,38.8787837374735,38.9123244966935,38.9123244966935,38.9274357918548,38.9123244966935,38.9123244966935,38.8956168421101,38.9059616936887,38.9392066541376,38.9334379227543,38.8596570987135,38.9123244966935,38.8789687804984,38.8798055571672,38.8451625626788,38.9179768530971,38.9423807789324,38.9123244966935,38.8969781468093,38.9612590606149,38.9123244966935,38.8776777650694,38.8769908464854,38.9173286251987,38.9123244966935,38.8956168421101,38.8956168421101,38.8987616906937,38.8969781468093,38.8961321153779,38.9049090890332,38.8734635996299,38.8972990459879,38.8987616906937,38.8956168421101,38.9123244966935,38.9172327657757,38.8987616906937,38.9123244966935,38.9138938195312,38.8987616906937,38.8987616906937,38.9123244966935,38.9123244966935,38.9274357918548,38.9123244966935,38.9123244966935,38.9123244966935,38.9048787828423,38.9612590606149,38.9496847404464,38.9088970908615,38.9496847404464,38.9065583355158,38.9089101288339,38.9022289638499,38.9260087608615,38.8637419949753,38.9286873734321,38.8956168421101,38.9088970908615,38.9123244966935,38.9274357918548,38.9059616936887,38.9019219718511,38.9274357918548,38.88596760224,38.8951330487548,38.9123244966935,38.8987616906937,38.9274357918548,38.9274357918548,38.8969781468093,38.9123244966935,38.9173286251987,38.9423807789324,38.8972990459879,38.8941439418585,38.9496847404464,38.88596760224,38.9123244966935,38.8972990459879,38.9123244966935,38.9496847404464,38.9025309490657,38.8942130368727,38.8969781468093,38.9025122393145,38.9123244966935,38.9274357918548,38.8734635996299,38.9543732722424,38.8969781468093,38.8972990459879,38.9123244966935,38.9123244966935,38.9543732722424,38.9274357918548,38.9025284756572,38.8787837374735,38.8787837374735,38.8451625626788,38.8451625626788,38.8596570987135,38.9179768530971,38.9248909438896,38.9380302729804,38.9380302729804,38.9325341369399,38.9179768530971,38.9179768530971,38.9380302729804,38.8787837374735,38.8897509317986,38.8787837374735,38.8787837374735,38.8789687804984,38.8787837374735,38.8787837374735,38.8787837374735,38.8764808713658,38.8798055571672,38.8787837374735,38.8787837374735,38.8787837374735,38.8612799858582,38.8787837374735,38.8612799858582,38.8787837374735,38.8787837374735,38.9053614777588,38.9176468207859,38.9334379227543,38.8787837374735,38.9123244966935,38.8987616906937,38.9138938195312,38.8789687804984,38.8787837374735,38.8987616906937,38.8787837374735,38.8787837374735,38.8787837374735,38.9179768530971,38.89946796557,38.8787837374735,38.9025284756572,38.9173286251987,38.8787837374735,38.8787837374735,38.9179768530971,38.88596760224,38.8787837374735,38.9172327657757,38.8451625626788,38.8972990459879,38.8969781468093,38.9123244966935,38.8920853941184,38.9123244966935,38.9172327657757,38.8787837374735,38.8787837374735,38.8787837374735,38.9053614777588,38.8920895186923,38.9380302729804,38.8623686329774,38.9048787828423,38.9612590606149,38.9088970908615,38.8451625626788,38.9048787828423,38.8787837374735,38.8787837374735,38.8787837374735,38.8787837374735,38.8787837374735,38.9025284756572,38.8951330487548,38.9235294962134,38.9496847404464,38.8956168421101,38.8972990459879,38.9173286251987,38.9123244966935,38.8987616906937,38.8956168421101,38.8798055571672,38.9048427909408,38.9258149304166,38.881275797358,38.9028992876415,38.8897499259629,38.9123244966935,38.9138938195312,38.9123244966935,38.9138938195312,38.88596760224,38.8972990459879,38.910474300986,38.9274357918548,38.9274357918548,38.9123244966935,38.9123244966935,38.9059616936887,38.924755448085,38.9191832287402,38.9504174723598,38.8928010048644,38.9179768530971,38.9543732722424,38.8787837374735,38.8789687804984,38.8789687804984,38.89946796557,38.8987616906937,38.8789687804984,38.9496847404464,38.9123244966935,38.8789687804984,38.9123244966935,38.8596570987135,38.8789687804984,38.8897509317986,38.9048787828423,38.9612590606149,38.9179768530971,38.8787837374735,38.9173286251987,38.8451625626788,38.9548153114553,38.8787837374735,38.8451625626788,38.8787837374735,38.9048787828423,38.9286873734321,38.8596570987135,38.8787837374735,38.8969781468093,38.9002078830843,38.9534955858599,38.8787837374735,38.8789687804984,38.9048787828423,38.9048787828423,38.8920853941184,38.9055341451412,38.9073984539871,38.89946796557,38.9496847404464,38.9612590606149,38.9179768530971,38.8787837374735,38.8875662818655,38.9025284756572,38.8451625626788,38.9179768530971,38.9219902665064,38.8969781468093,38.9525347990541,38.9123244966935,38.8789687804984,38.8787837374735,38.9123244966935,38.8789687804984,38.8787837374735,38.89946796557,38.8987616906937,38.8451625626788,38.8956168421101,38.9123244966935,38.8956168421101,38.8956168421101,38.8623686329774,38.9123244966935,38.9123244966935,38.9274357918548,38.9123244966935,38.9123244966935,38.8987616906937,38.8987616906937,38.9274357918548,38.8972990459879,38.9123244966935,38.8956168421101,38.8956168421101,38.9088970908615,38.9172327657757,38.9123244966935,38.9123244966935,38.8956168421101,38.9496847404464,38.9123244966935,38.9274357918548,38.9123244966935,38.9123244966935,38.91572541709,38.9541879481772,38.9059616936887,38.9170022241396,38.8897716239952,38.8734635996299,38.8972990459879,38.9123244966935,38.9123244966935,38.9088970908615,38.9123244966935,38.9172327657757,38.8798055571672,38.8951330487548,38.9123244966935,38.8969781468093,38.9123244966935,38.9098515112244,38.8555865136976,38.9187674106345,38.8956168421101,38.8969781468093,38.9123244966935,38.9138938195312,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.9543732722424,38.8798055571672,38.8623686329774,38.8956168421101,38.9123244966935,38.9274357918548,38.9274357918548,38.9123244966935,38.9123244966935,38.9274357918548,38.8969781468093,38.8969781468093,38.8987616906937,38.9274357918548,38.8875662818655,38.9219902665064,38.9059616936887,38.8975384697838,38.9025284756572,38.9560332761835,38.8637419949753,38.910474300986,38.8951330487548,38.9274357918548,38.9123244966935,38.8956168421101,38.9123244966935,38.9123244966935,38.9123244966935,38.9423807789324,38.8787837374735,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.8956168421101,38.91572541709,38.9050231071001,38.9025284756572,38.9025309490657,38.8329040377314,38.9065583355158,38.9548153114553,38.9548153114553,38.922159399572,38.9138938195312,38.9138938195312,38.9123244966935,38.8956168421101,38.9048787828423,38.9123244966935,38.9123244966935,38.8956168421101,38.9048787828423,38.9123244966935,38.8920895186923,38.8956168421101,38.9088970908615,38.9123244966935,38.9172327657757,38.9543732722424,38.9138938195312,38.9123244966935,38.9123244966935,38.9168439427592,38.9049055934718,38.9138938195312,38.8956168421101,38.9274357918548,38.9123244966935,38.9123244966935,38.9543732722424,38.8956168421101,38.9172327657757,38.8798055571672,38.9088970908615,38.8798055571672,38.8956168421101,38.8875662818655,38.8897716239952,38.9274357918548,38.922159399572,38.8809592756607,38.9059616936887,38.9363285015409,38.8987616906937,38.9274357918548,38.9274357918548,38.9138938195312,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.9050231071001,38.8956168421101,38.8564559602009,38.9258149304166,38.9225453722466,38.9155647031992,38.9259641506675,38.8920895186923,38.8987616906937,38.9274357918548,38.9123244966935,38.8956168421101,38.8956168421101,38.8969781468093,38.8956168421101,38.9123244966935,38.9123244966935,38.9496847404464,38.9560332761835,38.8969781468093,38.951205827418,38.9321154354667,38.9113561177942,38.9280703754558,38.9048787828423,38.9560332761835,38.9173286251987,38.9423807789324,38.9138938195312,38.9260087608615,38.9543732722424,38.8987616906937,38.8987616906937,38.9123244966935,38.9048787828423,38.8972990459879,38.9123244966935,38.9002078830843,38.9053614777588,38.8987616906937,38.9123244966935,38.9111264089032,38.9582165980458,38.9025921150259,38.9274357918548,38.9029219562039,38.8969781468093,38.9423807789324,38.9123244966935,38.8969781468093,38.8816743699576,38.8848304358223,38.8814911968901,38.8969781468093,38.9123244966935,38.9524071341696,38.9123244966935,38.9123244966935,38.9274357918548,38.9123244966935,38.9123244966935,38.9025284756572,38.9274357918548,38.8798055571672,38.9123244966935,38.9202541663323,38.8973395414901,38.9410286774801,38.8619228886077,38.8969781468093,38.9123244966935,38.9138938195312,38.9138938195312,38.9123244966935,38.8798055571672,38.88596760224,38.9025309490657,38.9048787828423,38.9255689110244,38.8920932091134,38.9112611390194,38.9059616936887,38.9138938195312,38.9025284756572,38.9025284756572,38.8897499259629,38.8956168421101,38.9037396225627,38.8991888504848,38.8976865064961,38.8767521271504,38.9123244966935,38.9496847404464,38.9274357918548,38.9274357918548,38.8969781468093,38.8784712129186,38.9496847404464,38.8956168421101,38.9274357918548,38.9088970908615,38.91572541709,38.8637419949753,38.9025284756572,38.8956168421101,38.922159399572,38.8861447048405,38.9665385432465,38.8798055571672,38.898908939935,38.9123244966935,38.9123244966935,38.9274357918548,38.9123244966935,38.9123244966935,38.8987616906937,38.9187674106345,38.9187674106345,38.89307442186,38.9123244966935,38.9496847404464,38.8987616906937,38.8951330487548,38.9423807789324,38.9543732722424,38.9123244966935,38.9123244966935,38.9274357918548,38.8956168421101,38.8969781468093,38.9123244966935,38.8734635996299,38.9123244966935,38.9138938195312,38.9274357918548,38.8956168421101,38.8798055571672,38.9423807789324,38.9059616936887,38.9123244966935,38.9274357918548,38.9123244966935,38.93523497242,38.9006185663252,38.9123244966935,38.9123244966935,38.8969781468093,38.9274357918548,38.8787837374735,38.8897509317986,38.8787837374735,38.9534955858599,38.8787837374735,38.89946796557,38.8787837374735,38.8798055571672,38.8787837374735,38.8451625626788,38.8787837374735,38.8798055571672,38.9534955858599,38.9123244966935,38.9123244966935,38.9365820549103,38.8787837374735,38.9610131375442,38.9365820549103,38.9560332761835,38.8956168421101,38.9138938195312,38.9258149304166,38.9050646623938,38.8975384697838,38.9140909939549,38.8803228920973,38.9191832287402,38.8451625626788,38.9181105671157,38.89946796557,38.8787837374735,38.8787837374735,38.8789687804984,38.9048787828423,38.8789687804984,38.8787837374735,38.9179768530971,38.8789687804984,38.9048787828423,38.9423807789324,38.8789687804984,38.9123244966935,38.910474300986,38.8969781468093,38.8920132294294,38.9274357918548,38.933450482502,38.9123244966935,38.9123244966935,38.9403899286926,38.9123244966935,38.9274357918548,38.9123244966935,38.9018277237717,38.9274357918548,38.9123244966935,38.9173286251987,38.9123244966935,38.9123244966935,38.9274357918548,38.8792861321057,38.9123244966935,38.9123244966935,38.8969781468093,38.9173286251987,38.8987548763708,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.8969781468093,38.9123244966935,38.9274234245465,38.9123244966935,38.8873388188635,38.9025309490657,38.9048787828423,38.9123244966935,38.9123244966935,38.9079641107282,38.9123244966935,38.9123244966935,38.9048787828423,38.9155644845357,38.8972990459879,38.9025284756572,38.8956168421101,38.9219902665064,38.9123244966935,38.9088970908615,38.9123244966935,38.8987616906937,38.9322811968581,38.899814603982,38.9025284756572,38.9025284756572,38.9496847404464,38.8956168421101,38.8798055571672,38.8969549836939,38.8734635996299,38.9496847404464,38.9320394189916,38.9123244966935,38.9025284756572,38.9025284756572,38.8987616906937,38.8637419949753,38.9138938195312,38.8956168421101,38.8956168421101,38.9274357918548,38.8956168421101,38.8865436528986,38.9123244966935,38.9138938195312,38.9123244966935,38.9543732722424,38.8987616906937,38.8956168421101,38.9219902665064,38.9123244966935,38.8972990459879,38.8972990459879,38.8956168421101,38.8969781468093,38.9138938195312,38.9088970908615,38.9123244966935,38.8956168421101,38.8987616906937,38.9123244966935,38.8969781468093,38.9274357918548,38.916997788863,38.8987616906937,38.9123244966935,38.8969781468093,38.9274357918548,38.916997788863,38.9548153114553,38.8366230053787,38.8956168421101,38.9173286251987,38.9543732722424,38.8972990459879,38.8956168421101,38.9274357918548,38.9274357918548,38.9123244966935,38.9123244966935,38.9138938195312,38.9123244966935,38.9172327657757,38.9423807789324,38.9138938195312,38.9543732722424,38.8876425824234,38.8515854891489,38.8956168421101,38.9123244966935,38.8920895186923,38.8920895186923,38.8798055571672,38.9173286251987,38.8833450987379,38.9002078108881,38.884807925326,38.9073984539871,38.9172327657757,38.9123244966935,38.9123244966935,38.9123244966935,38.8734635996299,38.9563761959051,38.8943212905858,38.8814911968901,38.9073984539871,38.9190519066355,38.931152542012,38.8951330487548,38.8814911968901,38.9073984539871,38.9286873734321,38.9630902002979,38.8692912571222,38.9088970908615,38.8831037937851,38.9073984539871,38.9028992876415,38.9191848308643,38.8836561337461,38.8836561337461,38.8933014508906,38.9260087608615,38.8998912927232,38.8906384746273,38.8836561337461,38.8836561337461,38.9073984539871,38.9190519066355,38.9226607788422,38.9174665041885,38.8831037937851,38.9590410101018,38.9405533270687,38.8814911968901,38.9170022241396,38.8951330487548,38.9260087608615,38.9073984539871,38.9088970908615,38.9088970908615,38.9170020991761,38.8738261941926,38.9073984539871,38.9260087608615,38.8814911968901,38.9123244966935,38.9548153114553,38.9172327657757,38.9172327657757,38.9423807789324,38.9543732722424,38.8987616906937,38.9123244966935,38.9048787828423,38.8972990459879,38.9548153114553,38.8987616906937,38.9088970908615,38.9098515112244,38.8532973452793,38.8798055571672,38.9123244966935,38.9123244966935,38.8814911968901,38.9386841788167,38.9123244966935,38.9025309490657,38.9048787828423,38.9219902665064,38.9123244966935,38.9123244966935,38.9123244966935,38.8623686329774,38.9025284756572,38.9543732722424,38.8787837374735,38.8637419949753,38.8787837374735,38.8787837374735,38.9123244966935,38.9056459348207,38.9167715805073,38.9011394346656,38.8949395967258,38.8647515090048,38.9479014520436,38.909927429981,38.8787837374735,38.9334379227543,38.8787837374735,38.8787837374735,38.8787837374735,38.9279176113791,38.9172327657757,38.9053614777588,38.9073984539871,38.9025284756572,38.8637419949753,38.8951330487548,38.9059616936887,38.8798611710601,38.922159399572,38.8837330471257,38.9274357918548,38.9274357918548,38.8951330487548,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.9172327657757,38.8987616906937,38.9050231071001,38.9138938195312,38.8987616906937,38.9274357918548,38.9025259356559,38.8969781468093,38.8969781468093,38.9123244966935,38.9123244966935,38.9123244966935,38.8956168421101,38.9123244966935,38.9548153114553,38.9496847404464,38.8969781468093,38.8987616906937,38.8637419949753,38.9286873734321,38.8798055571672,38.9053614777588,38.8956168421101,38.8987616906937,38.9065583355158,38.8972990459879,38.9123244966935,38.9048787828423,38.9048787828423,38.9172327657757,38.9274357918548,38.9274357918548,38.9141012344734,38.8798055571672,38.9123244966935,38.9123244966935,38.9123244966935,38.9088970908615,38.9048787828423,38.9274357918548,38.8951330487548,38.8920871262131,38.8947812954841,38.9073984539871,38.8938765712627,38.9025309490657,38.8734635996299,38.9048787828423,38.91572541709,38.9002078830843,38.88596760224,38.8956168421101,38.8956168421101,38.9543732722424,38.9138938195312,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.9172327657757,38.9123244966935,38.9123244966935,38.8920895186923,38.9059616936887,38.9123244966935,38.9524071341696,38.8734635996299,38.88596760224,38.9073984539871,38.8734635996299,38.9543732722424,38.9274357918548,38.9010052846108,38.8972990459879,38.8787837374735,38.8787837374735,38.8787837374735,38.9123244966935,38.8798055571672,38.9048787828423,38.8981106438354,38.8532973452793,38.9123244966935,38.91572541709,38.9219902665064,38.9548153114553,38.9048787828423,38.8969781468093,38.9123244966935,38.9123244966935,38.9123244966935,38.9088970908615,38.9612590606149,38.9050231071001,38.9123244966935,38.9025309490657,38.88596760224,38.88596760224,38.9543732722424,38.9123244966935,38.9138938195312,38.9048787828423,38.8798055571672,38.9173286251987,38.9025309490657,38.9123244966935,38.9123244966935,38.9123244966935,38.8596570987135,38.8734635996299,38.9274357918548,38.9138938195312,38.9088970908615,38.8969781468093,38.912137304925,38.9274357918548,38.8987616906937,38.8623686329774,38.9172327657757,38.9423807789324,38.9423807789324,38.9065583355158,38.9123244966935,38.9543732722424,38.9123244966935,38.9543732722424,38.8734635996299,38.8897716239952,38.8972990459879,38.9123244966935,38.9423807789324,38.8972990459879,38.9138938195312,38.9235294962134,38.9065583355158,38.8969781468093,38.8987616906937,38.9048787828423,38.9123244966935,38.8987616906937,38.9274357918548,38.8956168421101,38.9123244966935,38.9543732722424,38.8969781468093,38.9174665041885,38.8965528249535,38.9112797582797,38.9226858025787,38.8956168421101,38.8972990459879,38.8787837374735,38.8787837374735,38.8451625626788,38.9179768530971,38.9123244966935,38.9123244966935,38.9123244966935,38.8987616906937,38.9274357918548,38.9138938195312,38.9123244966935,38.9123244966935,38.9123244966935,38.9138938195312,38.9048787828423,38.9173286251987,38.8972990459879,38.9123244966935,38.9123244966935,38.88596760224,38.9025284756572,38.8532973452793,38.9723269260149,38.9138938195312,38.9123244966935,38.8969781468093,38.8987616906937,38.9274357918548,38.9274357918548,38.9123244966935,38.9274357918548,38.8987616906937,38.9274357918548,38.8987616906937,38.9543732722424,38.9123244966935,38.857491676747,38.9333543222086,38.855144553522,38.9227631719618,38.9320327007192,38.9059616936887,38.8734635996299,38.8532973452793,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.8897716239952,38.9759813030646,38.9123244966935,38.9085756249493,38.964731332472,38.9496847404464,38.8787837374735,38.903552608613,38.9123244966935,38.9048787828423,38.8956168421101,38.9123244966935,38.9123244966935,38.9138938195312,38.9138938195312,38.8787837374735,38.8987616906937,38.8969781468093,38.9088970908615,38.9548153114553,38.8787837374735,38.8787837374735,38.8787837374735,38.8612799858582,38.9380302729804,38.8897509317986,38.9380302729804,38.8451625626788,38.89946796557,38.9334379227543,38.91572541709,38.8787837374735,38.8897509317986,38.8451625626788,38.9048787828423,38.89946796557,38.8451625626788,38.9138938195312,38.8798055571672,38.9235294962134,38.9365820549103,38.89946796557,38.9274357918548,38.9123244966935,38.8956168421101,38.9123244966935,38.9123244966935,38.8612799858582,38.8612799858582,38.8612799858582,38.8596570987135,38.8987616906937,38.9274357918548,38.9025284756572,38.8628796452345,38.931152542012,38.9179768530971,38.9543732722424,38.9548153114553,38.9525347990541,38.8956168421101,38.9123244966935,38.9334379227543,38.8787837374735,38.922291710748,38.9048787828423,38.8956168421101,38.9334379227543,38.89946796557,38.8787837374735,38.8787837374735,38.8451625626788,38.8787837374735,38.9534955858599,38.9219902665064,38.8451625626788,38.9274357918548,38.9001307523882,38.8969781468093,38.9235294962134,38.9123244966935,38.9123244966935,38.9123244966935,38.9274357918548,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.8969781468093,38.9123244966935,38.9018277237717,38.9002618332152,38.8972990459879,38.9273210840845,38.9423807789324,38.88596760224,38.8798055571672,38.9172327657757,38.9123244966935,38.8956168421101,38.9002078830843,38.8956168421101,38.9548153114553,38.8920895186923,38.839160510681,38.8917103439871,38.8987616906937,38.9123244966935,38.88596760224,38.9496847404464,38.9205880085796,38.9059616936887,38.9620419851044,38.9173286251987,38.8798055571672,38.9123244966935,38.9496847404464,38.8969781468093,38.9274357918548,38.9543732722424,38.9059616936887,38.9274357918548,38.9123244966935,38.9088970908615,38.9123244966935,38.9543732722424,38.8956168421101,38.9138938195312,38.9172327657757,38.9543732722424,38.8897716239952,38.8951330487548,38.89946796557,38.9056459348207,38.9380302729804,38.8596570987135,38.8596570987135,38.8787837374735,38.8612799858582,38.8612799858582,38.9248909438896,38.9248909438896,38.8787837374735,38.8612799858582,38.8789687804984,38.8451625626788,38.9179768530971,38.8920932091134,38.8920853941184,38.9274357918548,38.9423807789324,38.9123244966935,38.9123244966935,38.9123244966935,38.9274357918548,38.9048787828423,38.8951330487548,38.9543732722424,38.9123244966935,38.9123244966935,38.9548153114553,38.88596760224,38.9274357918548,38.9123244966935,38.9073984539871,38.9053614777588,38.9274357918548,38.9123244966935,38.9123244966935,38.8451625626788,38.8787837374735,38.8451625626788,38.8787837374735,38.8734635996299,38.9123244966935,38.8987616906937,38.8956168421101,38.9123244966935,38.8969781468093,38.9123244966935,38.8787837374735,38.8920895186923,38.9496847404464,38.9123244966935,38.9059616936887,38.8987616906937,38.9123244966935,38.8969781468093,38.9138938195312,38.8975384697838,38.8975384697838,38.90659975884,38.9423807789324,38.8623686329774,38.9059616936887,38.9123244966935,38.88596760224,38.9123244966935,38.8972990459879,38.8956168421101,38.9053614777588,38.9123244966935,38.9274357918548,38.8956168421101,38.9123244966935,38.9059616936887,38.8963857844968,38.9048787828423,38.8897716239952,38.8532973452793,38.8969781468093,38.9048787828423,38.9048787828423,38.9274357918548,38.9138938195312,38.8612799858582,38.9610131375442,38.9548153114553,38.8787837374735,38.9334379227543,38.8451625626788,38.9274357918548,38.8789687804984,38.8451625626788,38.9179768530971,38.9274357918548,38.8451625626788,38.8953676617696,38.9138938195312,38.8969781468093,38.9138938195312,38.9274357918548,38.8798055571672,38.89946796557,38.9123244966935,38.9123244966935,38.8451625626788,38.8451625626788,38.8920895186923,38.9138938195312,38.9002078830843,38.88596760224,38.9123244966935,38.916997788863,38.9088970908615,38.9274357918548,38.9123244966935,38.8987616906937,38.9138938195312,38.8969781468093,38.9138938195312,38.9138938195312,38.9123244966935,38.9123244966935,38.9543732722424,38.8972990459879,38.8972990459879,38.8987616906937,38.9274357918548,38.9138938195312,38.916997788863,38.9048787828423,38.9172327657757,38.9274357918548,38.9123244966935,38.9123244966935,38.8972990459879,38.8956168421101,38.8975384697838,38.9123244966935,38.8956168421101,38.9123244966935,38.9560332761835,38.9274357918548,38.9123244966935,38.9123244966935,38.8956168421101,38.8972990459879,38.9449735797215,38.885507062284,38.9333543222086,38.9325958171294,38.8897716239952,38.9423807789324,38.9543732722424,38.9138938195312,38.9274357918548,38.9048787828423,38.9123244966935,38.9138938195312,38.9123244966935,38.9274357918548,38.9123244966935,38.9563932192156,38.9274357918548,38.9665385432465,38.9002078108881,38.8920895186923,38.9059616936887,38.9274357918548,38.9560332761835,38.8951330487548,38.9123244966935,38.9320327007192,38.9157933777058,38.8921641547121,38.8745523442152,38.8798055571672,38.8969781468093,38.8969781468093,38.9123244966935,38.9123244966935,38.9123244966935,38.9274357918548,38.9123244966935,38.8969781468093,38.8969781468093,38.9123244966935,38.9048787828423,38.8972990459879,38.8920877687346,38.9123244966935,38.9138938195312,38.8875662818655,38.9235294962134,38.8972990459879,38.8969781468093,38.9065583355158,38.9425344249286,38.9316345061203,38.8532973452793,38.9138938195312,38.8956168421101,38.9496847404464,38.8623686329774,38.8972990459879,38.8951330487548,38.9096691923862,38.9174665041885,38.9343212833728,38.9059616936887,38.9242387955974,38.9548153114553,38.9123244966935,38.9123244966935,38.9274357918548,38.9435641964319,38.9123244966935,38.8875662818655,38.9088970908615,38.9073984539871,38.8623686329774,38.91572541709,38.8875662818655,38.9048787828423,38.9088970908615,38.8623686329774,38.9129690021693,38.9088970908615,38.9496847404464,38.9053614777588,38.9088970908615,38.9059616936887,38.8787837374735,38.8623686329774,38.8956168421101,38.8787837374735,38.9610173877836,38.8956168421101,38.8987616906937,38.8956168421101,38.9088970908615,38.8987616906937,38.8987616906937,38.8612799858582,38.8787837374735,38.8956168421101,38.9496847404464,38.8956168421101,38.8987616906937,38.8987616906937,38.8787837374735,38.9314669654186,38.9137647992288,38.9525347990541,38.9053614777588,38.8987616906937,38.9274357918548,38.9274357918548,38.9172327657757,38.9274357918548,38.9274357918548,38.8975557412399,38.8684568506615,38.8276206914544,38.9138938195312,38.9274357918548,38.9123244966935,38.8969781468093,38.9548153114553,38.8798055571672,38.9543732722424,38.8280298872414,38.9363285015409,38.9037423454166,38.9103842892984,38.8972990459879,38.88596760224,38.9025309490657,38.9053614777588,38.9123244966935,38.9123244966935,38.88596760224,38.9612590606149,38.9123244966935,38.88596760224,38.9138938195312,38.9274357918548,38.9050231071001,38.8920895186923,38.9274357918548,38.9059616936887,38.8734635996299,38.884807925326,38.89731143068,38.9088970908615,38.9274357918548,38.9006185663252,38.94065571122,38.8987616906937,38.9123244966935,38.8975384697838,38.90883776651,38.9543732722424,38.9123244966935,38.9610173877836,38.9123244966935,38.9028992876415,38.9053614777588,38.916997788863,38.9123244966935,38.9088970908615,38.9123244966935,38.858053841328,38.8969781468093,38.9496847404464,38.8798055571672,38.8956168421101,38.9274357918548,38.8969781468093,38.9123244966935,38.8987616906937,38.8956168421101,38.9123244966935,38.9274357918548,38.8987616906937,38.8987616906937,38.9138938195312,38.9274357918548,38.8956168421101,38.9274357918548,38.8969781468093,38.8987616906937,38.88596760224,38.9496847404464,38.8787837374735,38.9123244966935,38.9123244966935,38.8787837374735,38.8612799858582,38.9123244966935,38.8956168421101,38.9123244966935,38.9543732722424,38.8956168421101,38.9170022241396,38.8787837374735,38.8787837374735,38.89946796557,38.9548153114553,38.9173286251987,38.9179768530971,38.8451625626788,38.8596570987135,38.8787837374735,38.8787837374735,38.8787837374735,38.9325341369399,38.8612799858582,38.8764808713658,38.8764808713658,38.8787837374735,38.8789687804984,38.9123244966935,38.9048787828423,38.8787837374735,38.8451625626788,38.9274357918548,38.89946796557,38.8451625626788,38.9365820549103,38.9179768530971,38.89946796557,38.9123244966935,38.9543732722424,38.8956168421101,38.9334379227543,38.8612799858582,38.9235294962134,38.8789687804984,38.8789687804984,38.8975384697838,38.9179768530971,38.9179768530971,38.9123244966935,38.89946796557,38.8787837374735,38.8947946929231,38.89946796557,38.8787837374735,38.8451625626788,38.8920895186923,38.8787837374735,38.8956168421101,38.9048787828423,38.8787837374735,38.8951330487548,38.8787837374735,38.8787837374735,38.8814911968901,38.8787837374735,38.8787837374735,38.9248909438896,38.8451625626788,38.8596570987135,38.8787837374735,38.8798055571672,38.8969781468093,38.9067065594676,38.9059616936887,38.9138938195312,38.9123244966935,38.9123244966935,38.8623686329774,38.8951330487548,38.9048787828423,38.8920895186923,38.9048787828423,38.9088970908615,38.9073984539871,38.9088970908615,38.9290407301841,38.8942130368727,38.9543732722424,38.9123244966935,38.9274357918548,38.9123244966935,38.9138938195312,38.9056459348207,38.9123244966935,38.9123244966935,38.9048787828423,38.9123244966935,38.9548153114553,38.9123244966935,38.9123244966935,38.91572541709,38.9041269961318,38.9223639574106,38.9173286251987,38.9164889640789,38.8637419949753,38.8798055571672,38.9048787828423,38.9002078830843,38.9173286251987,38.9088970908615,38.9602185832595,38.9423807789324,38.8951330487548,38.9138938195312,38.9138938195312,38.8987616906937,38.8993926677757,38.8787837374735,38.8596570987135,38.8612799858582,38.8787837374735,38.8897509317986,38.8612799858582,38.8787837374735,38.9380302729804,38.8787837374735,38.9380302729804,38.9380302729804,38.89946796557,38.9380302729804,38.8612799858582,38.8787837374735,38.8451625626788,38.9248909438896,38.8596570987135,38.8787837374735,38.8897509317986,38.8787837374735,38.8787837374735,38.9380302729804,38.8612799858582,38.9179768530971,38.8789687804984,38.9617274828536,38.8451625626788,38.9191832287402,38.8978435036815,38.9182749213327,38.8787837374735,38.8643495056954,38.9123244966935,38.9393211694272,38.9179768530971,38.8787837374735,38.9620419851044,38.9174665041885,38.8451625626788,38.8956168421101,38.8787837374735,38.9274357918548,38.9056434495889,38.9199923108837,38.858555595554,38.878400017894,38.8897499259629,38.9123244966935,38.8951330487548,38.9423807789324,38.8987616906937,38.9274357918548,38.9123244966935,38.9274357918548,38.9274357918548,38.9025284756572,38.8956168421101,38.8956168421101,38.8956168421101,38.8998939462644,38.8814911968901,38.8972990459879,38.9543732722424,38.9686307293256,38.9059616936887,38.9059616936887,38.9123244966935,38.9123244966935,38.9138938195312,38.8798055571672,38.88596760224,38.9612590606149,38.8623686329774,38.8956168421101,38.9274357918548,38.9496847404464,38.9173286251987,38.9496847404464,38.9274357918548,38.9274357918548,38.9274357918548,38.8787837374735,38.8787837374735,38.8596570987135,38.9334379227543,38.8787837374735,38.8773682100408,38.8789687804984,38.8451625626788,38.9123244966935,38.8787837374735,38.9176468207859,38.9059616936887,38.9126029638378,38.9181105671157,38.9174665041885,38.8920102836904,38.9274357918548,38.9123244966935,38.8987616906937,38.9123244966935,38.9335961274498,38.89946796557,38.8596570987135,38.8787837374735,38.8897509317986,38.89946796557,38.8969781468093,38.9123244966935,38.9123244966935,38.9274357918548,38.9235294962134,38.9123244966935,38.8789687804984,38.89946796557,38.8787837374735,38.8789687804984,38.8787837374735,38.9022280320867,38.9352955014198,38.8787837374735,38.9088970908615,38.9548153114553,38.8987616906937,38.9274357918548,38.9103830024639,38.8784712129186,38.9179768530971,38.8789687804984,38.8451625626788,38.8954877530972,38.8643495056954,38.916997788863,38.9123244966935,38.9334379227543,38.8532973452793,38.9179768530971,38.9123244966935,38.9334379227543,38.9543732722424,38.8972990459879,38.8956168421101,38.9123244966935,38.9123244966935,38.9138938195312,38.9123244966935,38.8787837374735,38.8451625626788,38.8787837374735,38.8787837374735,38.8787837374735,38.8787837374735,38.8623686329774,38.9123244966935,38.8787837374735,38.8506842992464,38.9048787828423,38.9138938195312,38.9334379227543,38.9334379227543,38.8612799858582,38.8787837374735,38.8787837374735,38.8787837374735,38.8787837374735,38.89946796557,38.8787837374735,38.8787837374735,38.9123244966935,38.9123244966935,38.9548153114553,38.8969781468093,38.9179768530971,38.8596570987135,38.8922511252581,38.9059616936887,38.9138938195312,38.8972990459879,38.8972990459879,38.8972990459879,38.9543732722424,38.9543732722424,38.8972990459879,38.9059616936887,38.9059616936887,38.9138938195312,38.8972990459879,38.8972990459879,38.9543732722424,38.9543732722424,38.8972990459879,38.9534955858599,38.8764808713658,38.9138938195312,38.9138938195312,38.899665328536,38.8972990459879,38.9059616936887,38.9543732722424,38.8972990459879,38.9563761959051,38.9173286251987,38.8969781468093,38.9123244966935,38.9123244966935,38.9138938195312,38.9025284756572,38.9123244966935,38.9123244966935,38.9025284756572,38.8798055571672,38.8972990459879,38.9274357918548,38.9048787828423,38.9025309490657,38.9123244966935,38.8897716239952,38.8969781468093,38.8987616906937,38.8951330487548,38.8987616906937,38.8897716239952,38.8623686329774,38.9123244966935,38.9123244966935,38.9138938195312,38.9543732722424,38.9174665041885,38.9562351716726,38.9127696591639,38.9138938195312,38.9123244966935,38.9123244966935,38.9274357918548,38.8920977009229,38.8623686329774,38.9172327657757,38.9073984539871,38.9274357918548,38.9138938195312,38.8987616906937,38.8972990459879,38.9274357918548,38.9543732722424,38.9123244966935,38.8920853941184,38.8972990459879,38.9612590606149,38.9138938195312,38.9274357918548,38.9274357918548,38.9280703754558,38.9187674106345,38.8951330487548,38.8853157850615,38.8956168421101,38.9123244966935,38.88596760224,38.9053614777588,38.9048787828423,38.9123244966935,38.9053614777588,38.8920895186923,38.8920895186923,38.9496847404464,38.9048787828423,38.8969781468093,38.9172327657757,38.8619228886077,38.8814911968901,38.9059616936887,38.9123244966935,38.9123244966935,38.9496847404464,38.9123244966935,38.8532973452793,38.8956168421101,38.9059616936887,38.9123244966935,38.9048787828423,38.9173286251987,38.8972990459879,38.9423807789324,38.9612590606149,38.9179768530971,38.9380302729804,38.9274357918548,38.9365820549103,38.9179768530971,38.8787837374735,38.9059616936887,38.9059616936887,38.9380302729804,38.8787837374735,38.8897716239952,38.9380302729804,38.8787837374735,38.8612799858582,38.8596570987135,38.9179768530971,38.89946796557,38.8787837374735,38.9401374356537,38.9248909438896,38.9176468207859,38.9380302729804,38.8787837374735,38.8787837374735,38.8798055571672,38.8987616906937,38.9274357918548,38.9123244966935,38.9496847404464,38.8451625626788,38.8787837374735,38.9123244966935,38.9274357918548,38.8787837374735,38.8787837374735,38.8787837374735,38.9123244966935,38.9123244966935,38.9048787828423,38.8920895186923,38.8451625626788,38.8987616906937,38.8789687804984,38.8451625626788,38.8789687804984,38.8451625626788,38.8787837374735,38.8787837374735,38.8897509317986,38.8956168421101,38.8789687804984,38.8612799858582,38.8798055571672,38.8789687804984,38.8451625626788,38.8734635996299,38.8787837374735,38.91572541709,38.8787837374735,38.9123244966935,38.9274357918548,38.8612226931806,38.9123244966935,38.9543732722424,38.9560332761835,38.8623686329774,38.9172327657757,38.8987616906937,38.916997788863,38.8798055571672,38.8623686329774,38.9235294962134,38.9612590606149,38.8787837374735,38.8596570987135,38.8920895186923,38.8451625626788,38.8451625626788,38.8787837374735,38.8451625626788,38.9274357918548,38.9123244966935,38.8787837374735,38.9123244966935,38.8451625626788,38.9548153114553,38.8972990459879,38.8596570987135,38.8787837374735,38.8787837374735,38.89946796557,38.8787837374735,38.8787837374735,38.8451625626788,38.8451625626788,38.8596570987135,38.9380302729804,38.9123244966935,38.9123244966935,38.8787837374735,38.9274357918548,38.9543732722424,38.8969781468093,38.8987616906937,38.9123244966935,38.8451625626788,38.8787837374735,38.8897716239952,38.8904737256621,38.8897499259629,38.9496847404464,38.9123244966935,38.8987616906937,38.9123244966935,38.9274357918548,38.9123244966935,38.9543732722424,38.9325980968852,38.9059616936887,38.9157613207647,38.8987616906937,38.8897716239952,38.8972990459879,38.9423807789324,38.8787837374735,38.9172327657757,38.8987616906937,38.8987616906937,38.8987616906937,38.8956168421101,38.8956168421101,38.8787837374735,38.9496847404464,38.9088970908615,38.8789687804984,38.8956168421101,38.8451625626788,38.8789687804984,38.9548153114553,38.8451625626788,38.8897509317986,38.89946796557,38.916847289427,38.8871377834013,38.8833676481241,38.8787837374735,38.9179768530971,38.9048787828423,38.9274357918548,38.9334379227543,38.8956168421101,38.9274357918548,38.9123244966935,38.8451625626788,38.922291710748,38.8789687804984,38.8972990459879,38.89946796557,38.8789687804984,38.9173286251987,38.9048787828423,38.9048787828423,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.8764590599029,38.9173286251987,38.9274357918548,38.9048787828423,38.9274357918548,38.8978664655649,38.9123244966935,38.9672863369009,38.9274357918548,38.922159399572,38.9123244966935,38.8596570987135,38.9123244966935,38.9207909968505,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.9007694115167,38.9048787828423,38.9274357918548,38.9274357918548,38.9274357918548,38.8969781468093,38.9274357918548,38.9123244966935,38.9274357918548,38.9274357918548,38.9274357918548,38.8956168421101,38.9274357918548,38.8987616906937,38.9274357918548,38.8956168421101,38.9172327657757,38.916997788863,38.8969781468093,38.8920853941184,38.9123244966935,38.9274357918548,38.9548153114553,38.9219902665064,38.9123244966935,38.8798055571672,38.9274357918548,38.8956168421101,38.9274357918548,38.9123244966935,38.9274357918548,38.8972990459879,38.9002010790206,38.8859812387595,38.9123244966935,38.9138938195312,38.9002008265749,38.9548153114553,38.9123244966935,38.9172327657757,38.8532973452793,38.9048787828423,38.9274357918548,38.8972990459879,38.9427841391726,38.9281228998727,38.8969781468093,38.8786544075533,38.9046990557898,38.8928010048644,38.8786544075533,38.853021284697,38.8491500215083,38.9048787828423,38.9543732722424,38.8987616906937,38.9274357918548,38.9123244966935,38.9123244966935,38.9543732722424,38.9274357918548,38.901048634114,38.9469492446163,38.9123244966935,38.9048787828423,38.9173286251987,38.9139075755851,38.9123244966935,38.9612590606149,38.9274357918548,38.9123244966935,38.9048787828423,38.9123244966935,38.9543732722424,38.8972990459879,38.9548153114553,38.8969781468093,38.8987616906937,38.9274357918548,38.9123244966935,38.9123244966935,38.8987616906937,38.8969781468093,38.9025309490657,38.9048787828423,38.9123244966935,38.9274357918548,38.8920895186923,38.9123244966935,38.8940815074467,38.845873036657,38.9525347990541,38.8987616906937,38.9496847404464,38.9048787828423,38.9088970908615,38.9053614777588,38.9073984539871,38.8798055571672,38.8989340870187,38.9025309490657,38.8623686329774,38.8956168421101,38.9123244966935,38.9423807789324,38.9560332761835,38.8764603957718,38.9612590606149,38.9172327657757,38.89946796557,38.8798055571672,38.9173286251987,38.8787837374735,38.8787837374735,38.9176468207859,38.9176468207859,38.8451625626788,38.8451625626788,38.8787837374735,38.8951330487548,38.8956168421101,38.9123244966935,38.9274357918548,38.9123244966935,38.9123244966935,38.9123244966935,38.9274357918548,38.8987616906937,38.8853654249536,38.8928010048644,38.9123244966935,38.8972990459879,38.9423807789324,38.8897716239952,38.963925642186,38.9123244966935,38.8987616906937,38.9138938195312,38.9123244966935,38.9543732722424,38.8596570987135,38.8451625626788,38.8789687804984,38.8987616906937,38.8796229159921,38.9258149304166,38.8956168421101,38.9088970908615,38.9172327657757,38.9050231071001,38.916997788863,38.8972990459879,38.8612799858582,38.9123244966935,38.9123244966935,38.9123244966935,38.8451625626788,38.9176468207859,38.9420097862645,38.8920895186923,38.8920895186923,38.9496847404464,38.9048787828423,38.8787837374735,38.8787837374735,38.8787837374735,38.9380302729804,38.8897509317986,38.8787837374735,38.8897509317986,38.8789687804984,38.8596570987135,38.8787837374735,38.8787837374735,38.8612799858582,38.9380302729804,38.9179768530971,38.8787837374735,38.8787837374735,38.8451625626788,38.9179768530971,38.9393211694272,38.9173286251987,38.9179768530971,38.8789687804984,38.9179768530971,38.8787837374735,38.8789687804984,38.8789687804984,38.8789687804984,38.9334379227543,38.9123244966935,38.8787837374735,38.9534955858599,38.9219902665064,38.8451625626788,38.9179768530971,38.9056459348207,38.9138938195312,38.9048787828423,38.8789687804984,38.9123244966935,38.9123244966935,38.9179768530971,38.8956168421101,38.9176468207859,38.9274357918548,38.9138938195312,38.9365820549103,38.9179768530971,38.8798055571672,38.8787837374735,38.88596760224,38.8453898791325,38.9235971760982,38.8659078684732,38.9123244966935,38.9274357918548,38.9274357918548,38.9123244966935,38.9123244966935,38.8972990459879,38.9025284756572,38.9111266926122,38.9053614777588,38.9235294962134,38.9172327657757,38.9123244966935,38.8951330487548,38.8987616906937,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.9187674106345,38.8764751053388,38.9123244966935,38.9543732722424,38.9025284756572,38.9102787130645,38.8798055571672,38.9315625289304,38.8987616906937,38.9123244966935,38.916997788863,38.88596760224,38.9274357918548,38.9123244966935,38.9543732722424,38.9123244966935,38.8972990459879,38.9138938195312,38.9123244966935,38.8798055571672,38.9172327657757,38.9123244966935,38.9543732722424,38.9123244966935,38.91572541709,38.9138938195312,38.9274357918548,38.8897499259629,38.8836207563372,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.9543732722424,38.9123244966935,38.9496847404464,38.8969781468093,38.8798055571672,38.8994106132423,38.9236352538089,38.9059616936887,38.9123244966935,38.9048787828423,38.9123244966935,38.9123244966935,38.8972990459879,38.8987616906937,38.9560332761835,38.8787837374735,38.9059616936887,38.9628481616906,38.9123244966935,38.9496847404464,38.9172327657757,38.8798055571672,38.8787837374735,38.8532973452793,38.8734635996299,38.8798055571672,38.8951330487548,38.8956168421101,38.9423807789324,38.8956168421101,38.9496847404464,38.9088970908615,38.9123244966935,38.9138938195312,38.9123244966935,38.9122377952701,38.9548153114553,38.9123244966935,38.9274357918548,38.8972990459879,38.9393211694272,38.8451625626788,38.9179768530971,38.9650593212956,38.8787837374735,38.8451625626788,38.8787837374735,38.9380302729804,38.9087731521528,38.88596760224,38.9172327657757,38.9548153114553,38.9176468207859,38.8972990459879,38.9274357918548,38.9123244966935,38.9274357918548,38.9123244966935,38.9543732722424,38.8787837374735,38.9543732722424,38.9123244966935,38.9183041641631,38.8987616906937,38.8987616906937,38.9123244966935,38.8956168421101,38.8648824456739,38.9123244966935,38.8956168421101,38.8969781468093,38.9496847404464,38.9123244966935,38.9138938195312,38.9123244966935,38.8451625626788,38.8451625626788,38.9176468207859,38.9123244966935,38.9123244966935,38.8787837374735,38.9123244966935,38.9088970908615,38.9138938195312,38.9123244966935,38.9123244966935,38.9088970908615,38.8787837374735,38.8897509317986,38.9048787828423,38.8643495056954,38.922291710748,38.88596760224,38.8987616906937,38.9123244966935,38.8734635996299,38.9048787828423,38.9053614777588,38.9548153114553,38.9543732722424,38.9363285015409,38.9223920805939,38.9138938195312,38.9274357918548,38.8623686329774,38.9274357918548,38.8987616906937,38.8920853941184,38.88596760224,38.9048787828423,38.8987616906937,38.9173286251987,38.9123244966935,38.88596760224,38.9620419851044,38.9620419851044,38.9048787828423,38.9050231071001,38.8956168421101,38.8976865064961,38.9085311504949,38.8450039845686,38.8918843860177,38.8836561337461,38.9123244966935,38.9274357918548,38.8972990459879,38.9123244966935,38.8987616906937,38.8620491789839,38.9423807789324,38.9123244966935,38.9423807789324,38.9543732722424,38.9123244966935,38.8969781468093,38.9274357918548,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.8858036281404,38.8672656504225,38.8920895186923,38.9002078830843,38.8972990459879,38.9138938195312,38.9088970908615,38.9543732722424,38.947894894039,38.9138938195312,38.8969781468093,38.8798055571672,38.9123244966935,38.9088970908615,38.9138938195312,38.8972990459879,38.9138938195312,38.9138938195312,38.8972990459879,38.8972990459879,38.8972990459879,38.8972990459879,38.9138938195312,38.8972990459879,38.9059616936887,38.8972990459879,38.9138938195312,38.9138938195312,38.8972990459879,38.8972990459879,38.9059616936887,38.9543732722424,38.9543732722424,38.8972990459879,38.9138938195312,38.9138938195312,38.9543732722424,38.9543732722424,38.9138938195312,38.8972990459879,38.9543732722424,38.8972990459879,38.8972990459879,38.8972990459879,38.9138938195312,38.8972990459879,38.8982168160503,38.9123244966935,38.9274357918548,38.8968737447162,38.9274357918548,38.926752197246,38.9025284756572,38.9699246372392,38.9123244966935,38.9123244966935,38.8734635996299,38.8451625626788,38.8596570987135,38.8451625626788,38.9173286251987,38.9617274828536,38.8451625626788,38.8789687804984,38.9612590606149,38.9548153114553,38.9123244966935,38.9123244966935,38.8451625626788,38.8972990459879,38.8623686329774,38.9534955858599,38.8787837374735,38.8956168421101,38.8956168421101,38.8789687804984,38.9179768530971,38.9123244966935,38.8451625626788,38.9179768530971,38.8789687804984,38.8789687804984,38.9123244966935,38.9123244966935,38.8451625626788,38.9059616936887,38.9158400823621,38.9181105671157,38.9258149304166,38.9176468207859,38.8789687804984,38.8787837374735,38.8798055571672,38.8643495056954,38.9365820549103,38.8920895186923,38.8987616906937,38.8897509317986,38.916997788863,38.8972990459879,38.8787837374735,38.8451625626788,38.8787837374735,38.8787837374735,38.8787837374735,38.8612799858582,38.8787837374735,38.8764808713658,38.8787837374735,38.8897509317986,38.8596570987135,38.8787837374735,38.8787837374735,38.8787837374735,38.8787837374735,38.89946796557,38.8451625626788,38.8875662818655,38.9274357918548,38.8787837374735,38.8956168421101,38.8789687804984,38.8787837374735,38.8451625626788,38.8451625626788,38.8451625626788,38.9548153114553,38.9123244966935,38.9274357918548,38.8789687804984,38.8787837374735,38.8787837374735,38.9174665041885,38.8822923062159,38.8787837374735,38.8969781468093,38.8451625626788,38.922291710748,38.8789687804984,38.9274357918548,38.8972990459879,38.8956168421101,38.9274357918548,38.8956168421101,38.9274357918548,38.8787837374735,38.8972990459879,38.9123244966935,38.9138938195312,38.9123244966935,38.9123244966935,38.8987408475558,38.9274357918548,38.8532973452793,38.9123244966935,38.88596760224,38.9123244966935,38.9123244966935,38.9172327657757,38.9274357918548,38.9048787828423,38.9173286251987,38.9219902665064,38.9274357918548,38.9048787828423,38.910376832057,38.9582165980458,38.9123244966935,38.8956168421101,38.8623686329774,38.9123244966935,38.9173286251987,38.9048787828423,38.9123244966935,38.8969781468093,38.8987616906937,38.8798055571672,38.8814718229045,38.8506842992464,38.8987616906937,38.9088970908615,38.8987616906937,38.9123244966935,38.9274357918548,38.8564559602009,38.9123244966935,38.9173286251987,38.9173286251987,38.9123244966935,38.9123244966935,38.9126075163247,38.9123244966935,38.8920877687346,38.9123244966935,38.9189876728418,38.9172864220298,38.9173286251987,38.9312509622198,38.9123244966935,38.9123244966935,38.9287990071789,38.9266087680982,38.9628481616906,38.9123244966935,38.9123244966935,38.9274357918548,38.9123244966935,38.9123244966935,38.95026880871,38.8875850574919,38.8564559602009,38.9123244966935,38.9123244966935,38.858750929445,38.8804732855976,38.9123244966935,38.9123244966935,38.8969781468093,38.9088970908615,38.9274357918548,38.9123244966935,38.9168683740807,38.8920895186923,38.9123244966935,38.9274357918548,38.916997788863,38.9179768530971,38.9123244966935,38.9123244966935,38.9140915626003,38.8966668273581,38.8875662818655,38.8920895186923,38.910474300986,38.9123244966935,38.8969781468093,38.9088970908615,38.9048787828423,38.9612590606149,38.8972990459879,38.8972990459879,38.9543732722424,38.8972990459879,38.9059616936887,38.9059616936887,38.9138938195312,38.9138938195312,38.89946796557,38.8451625626788,38.9334379227543,38.9123244966935,38.8969781468093,38.9123244966935,38.8987616906937,38.9123244966935,38.9274357918548,38.8787837374735,38.8787837374735,38.8787837374735,38.8787837374735,38.8764808713658,38.9088970908615,38.8787837374735,38.9123244966935,38.8787837374735,38.8451625626788,38.8897509317986,38.9123244966935,38.9123244966935,38.8787837374735,38.8787837374735,38.8787837374735,38.8787837374735,38.89946796557,38.8787837374735,38.8787837374735,38.8787837374735,38.8787837374735,38.8789687804984,38.9056459348207,38.9123244966935,38.9274357918548,38.8973489205869,38.8511936167774,38.8951330487548,38.8572758574131,38.89946796557,38.8637419949753,38.922291710748,38.9612590606149,38.9088970908615,38.9334379227543,38.8596570987135,38.89946796557,38.9612590606149,38.964166785095,38.9123244966935,38.8451625626788,38.8451625626788,38.9274357918548,38.9274357918548,38.8787837374735,38.8956168421101,38.9048787828423,38.8596570987135,38.9380302729804,38.9144382701232,38.9097956436091,38.9284895299678,38.9123244966935,38.9123244966935,38.9123244966935,38.8956168421101,38.8987616906937,38.9543732722424,38.9073984539871,38.9073984539871,38.8796229159921,38.9262723307205,38.8720633305941,38.8814911968901,38.9170022241396,38.9205880085796,38.9051766284038,38.8956168421101,38.9423807789324,38.8798055571672,38.9088970908615,38.8956168421101,38.8734635996299,38.9423807789324,38.8987616906937,38.9548153114553,38.9560332761835,38.9172327657757,38.8987616906937,38.8956168421101,38.9053614777588,38.9496847404464,38.8956168421101,38.9496847404464,38.8987616906937,38.8987616906937,38.8451625626788,38.8787837374735,38.8787837374735,38.8612799858582,38.8987616906937,38.8987616906937,38.8789687804984,38.8451625626788,38.8787837374735,38.9617274828536,38.9548153114553,38.8787837374735,38.9274357918548,38.8532973452793,38.9059616936887,38.900330710376,38.9138938195312,38.9123244966935,38.8875662818655,38.9543732722424,38.9123244966935,38.8532973452793,38.9496847404464,38.8972990459879,38.8956168421101,38.8956168421101,38.9123244966935,38.9123244966935,38.9274357918548,38.9274357918548,38.9560332761835,38.9274357918548,38.8532973452793,38.8956168421101,38.9274357918548,38.9274357918548,38.9123244966935,38.9174665041885,38.8972990459879,38.8987616906937,38.9123244966935,38.8987616906937,38.9274357918548,38.9274357918548,38.9123244966935,38.9274357918548,38.8987616906937,38.9123244966935,38.9048787828423,38.9423807789324,38.9123244966935,38.8972990459879,38.8951330487548,38.9274357918548,38.9053614777588,38.8734635996299,38.8972990459879,38.8798055571672,38.9123244966935,38.9138938195312,38.9496847404464,38.9138938195312,38.8969781468093,38.9138938195312,38.9123244966935,38.8966674604563,38.8969781468093,38.8987616906937,38.8956168421101,38.8987616906937,38.8987616906937,38.9040723534931,38.8978264198094,38.8619228886077,38.9173286251987,38.8987616906937,38.9123244966935,38.8637419949753,38.9123244966935,38.8972990459879,38.9274357918548,38.9123244966935,38.9123244966935,38.9123244966935,38.8920895186923,38.9274357918548,38.9543732722424,38.9274357918548,38.858750929445,38.9146446857759,38.8987616906937,38.88596760224,38.8920853941184,38.8782428317405,38.8841739534294,38.9005176166721,38.9059616936887,38.9111953215047,38.8956168421101,38.9274357918548,38.8956168421101,38.9123244966935,38.9123244966935,38.9219902665064,38.9123244966935,38.8734635996299,38.9123244966935,38.9560332761835,38.8969781468093,38.9123244966935,38.9048787828423,38.8987616906937,38.9123244966935,38.8969781468093,38.9048787828423,38.9423807789324,38.9123244966935,38.8972990459879,38.8969781468093,38.9123244966935,38.8972990459879,38.9059616936887,38.9056459348207,38.8956168421101,38.9123244966935,38.8920895186923,38.9274357918548,38.8969781468093,38.9123244966935,38.8897716239952,38.9053614777588,38.9088970908615,38.8875520434073,38.9273572130161,38.9048787828423,38.9123244966935,38.8972990459879,38.9123244966935,38.8972990459879,38.9123244966935,38.9123244966935,38.9543732722424,38.9219902665064,38.8247947415584,38.9173286251987,38.9423807789324,38.9123244966935,38.9123244966935,38.9123244966935,38.91572541709,38.88596760224,38.9235294962134,38.88596760224,38.8972990459879,38.8787837374735,38.8451625626788,38.8956168421101,38.8789687804984,38.8787837374735,38.9025284756572,38.9179768530971,38.9179768530971,38.9524071341696,38.8897499259629,38.8897716239952,38.89946796557,38.9048787828423,38.9393211694272,38.8787837374735,38.9123244966935,38.9123244966935,38.8787837374735,38.930450215578,38.8506842992464,38.9123244966935,38.8734635996299,38.88596760224,38.922291710748,38.9172327657757,38.8451625626788,38.89946796557,38.8572758574131,38.9123244966935,38.9112740023283,38.8566898362613,38.9123244966935,38.9123244966935,38.8956168421101,38.8956168421101,38.9274357918548,38.9123244966935,38.9274357918548,38.9274357918548,38.8734635996299,38.8987616906937,38.9543732722424,38.9138938195312,38.9002078830843,38.9138938195312,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.9048787828423,38.9138938195312,38.9138938195312,38.8920853941184,38.8623686329774,38.9496847404464,38.9274357918548,38.8920853941184,38.9073984539871,38.9496847404464,38.9048787828423,38.9123244966935,38.8956168421101,38.9123244966935,38.9053614777588,38.8987616906937,38.9025284756572,38.9123244966935,38.9274357918548,38.9274357918548,38.9138938195312,38.8969781468093,38.8969781468093,38.8987616906937,38.8987616906937,38.9173286251987,38.9138938195312,38.9274357918548,38.9123244966935,38.9115032029131,38.9274357918548,38.9123244966935,38.8972990459879,38.8769908464854,38.867318804237,38.9343447836364,38.9123244966935,38.910474300986,38.9138938195312,38.8956168421101,38.9138938195312,38.9274357918548,38.9123244966935,38.9274357918548,38.8798055571672,38.9172327657757,38.9088970908615,38.8798055571672,38.8623686329774,38.9053614777588,38.9423807789324,38.8987616906937,38.8951330487548,38.8969781468093,38.8972990459879,38.9048787828423,38.9172327657757,38.9123244966935,38.8623686329774,38.9048787828423,38.8637419949753,38.8956168421101,38.9274357918548,38.9423807789324,38.9123244966935,38.9123244966935,38.8969781468093,38.9048787828423,38.9123244966935,38.9123244966935,38.8956168421101,38.9123244966935,38.9123244966935,38.9123244966935,38.9138938195312,38.905643494748,38.931152542012,38.9123244966935,38.9123244966935,38.8987616906937,38.9138938195312,38.9123244966935,38.9123244966935,38.9123244966935,38.8951330487548,38.8987616906937,38.8987616906937,38.8987616906937,38.9123244966935,38.9274357918548,38.9274357918548,38.8787837374735,38.8920895186923,38.8787837374735,38.8787837374735,38.922291710748,38.9496847404464,38.8643495056954,38.9059616936887,38.9123244966935,38.8975384697838,38.9496847404464,38.8920895186923,38.9838193110948,38.9053614777588,38.9173286251987,38.8969781468093,38.8956168421101,38.8572758574131,38.9465277598279,38.9357006333704,38.8956168421101,38.9048787828423,38.9073984539871,38.910474300986,38.9173286251987,38.8920853941184,38.9088970908615,38.9123244966935,38.8875662818655,38.8987616906937,38.8552869718205,38.8506842992464,38.8810775251465,38.9113876880533,38.9123244966935,38.9172327657757,38.9423807789324,38.9172327657757,38.8532973452793,38.9025284756572,38.9274357918548,38.9123244966935,38.8956168421101,38.9073984539871,38.9423807789324,38.8623686329774,38.8956168421101,38.9123244966935,38.9274357918548,38.9543732722424,38.8956168421101,38.9123244966935,38.8969781468093,38.9543732722424,38.9123244966935,38.9123244966935,38.9048787828423,38.9235971760982,38.8916627612261,38.8920853941184,38.8920853941184,38.8637419949753,38.9423807789324,38.8956168421101,38.9123244966935,38.9543732722424,38.9543732722424,38.9548153114553,38.9123244966935,38.9496847404464,38.9172327657757,38.9219902665064,38.9048787828423,38.8972990459879,38.8779682743165,38.9391052507722,38.9173286251987,38.9423807789324,38.9423807789324,38.8798055571672,38.8972990459879,38.9206835903836,38.9085311504949,38.9123244966935,38.9543732722424,38.9123244966935,38.8956168421101,38.9123244966935,38.8897716239952,38.9123244966935,38.9123244966935,38.8972990459879,38.9123244966935,38.9123244966935,38.9138938195312,38.9173286251987,38.872982674656,38.9123244966935,38.9002078830843,38.8987616906937,38.8787837374735,38.9380302729804,38.9380302729804,38.8787837374735,38.8451625626788,38.8787837374735,38.8789687804984,38.8787837374735,38.8789687804984,38.8787837374735,38.8956168421101,38.8987616906937,38.9172327657757,38.9053614777588,38.8956168421101,38.9423807789324,38.9088970908615,38.8956168421101,38.8787837374735,38.8787837374735,38.8787837374735,38.8787837374735,38.8987616906937,38.8787837374735,38.8987616906937,38.8956168421101,38.8787837374735,38.8787837374735,38.8451625626788,38.8451625626788,38.8789687804984,38.9059616936887,38.9098921730384,38.9174665041885,38.9123244966935,38.9123244966935,38.9274357918548,38.8897716239952,38.9123244966935,38.8969781468093,38.9123244966935,38.8969781468093,38.9286873734321,38.8987616906937,38.9346174442101,38.9059616936887,38.8591280154875,38.9274357918548,38.9123244966935,38.9219902665064,38.9138938195312,38.8969781468093,38.88596760224,38.8972990459879,38.8972990459879,38.9048787828423,38.8956168421101,38.9274357918548,38.9274357918548,38.8969781468093,38.9191453948018,38.8623686329774,38.9274357918548,38.8623686329774,38.9274357918548,38.8987616906937,38.8956168421101,38.9173286251987,38.8956168421101,38.9543732722424,38.9048787828423,38.8972990459879,38.9123244966935,38.8734635996299,38.8612799858582,38.89946796557,38.922291710748,38.8612799858582,38.8897509317986,38.9612590606149,38.88596760224,38.8897716239952,38.8451625626788,38.8787837374735,38.9534955858599,38.8787837374735,38.9543732722424,38.8897509317986,38.8787837374735,38.8787837374735,38.9610131375442,38.9179768530971,38.9176468207859,38.8897509317986,38.9179768530971,38.9088970908615,38.8450889870851,38.8612799858582,38.9380302729804,38.8789687804984,38.9380302729804,38.8596570987135,38.9380302729804,38.8787837374735,38.8596570987135,38.8787837374735,38.8787837374735,38.8789687804984,38.9380302729804,38.9722688225451,38.9179768530971,38.9123244966935,38.8787837374735,38.922291710748,38.9172327657757,38.89946796557,38.9380302729804,38.8596570987135,38.9485287837122,38.9123244966935,38.9048787828423,38.9025284756572,38.8969781468093,38.9274357918548,38.8976865064961,38.9138938195312,38.9138938195312,38.9543732722424,38.9059616936887,38.9534955858599,38.9059616936887,38.8972990459879,38.8972990459879,38.9138938195312,38.9138938195312,38.9543732722424,38.89946796557,38.8972990459879,38.89946796557,38.9543732722424,38.9534955858599,38.8972990459879,38.9059616936887,38.89946796557,38.89946796557,38.9610131375442,38.9138938195312,38.89946796557,38.9138938195312,38.9191293258323,38.9138938195312,38.9138938195312,38.9059616936887,38.930696611609,38.9327472582251,38.8814911968901,38.931152542012,38.9258149304166,38.920776261893,38.9181105671157,38.9073984539871,38.8864215482472,38.8814911968901,38.9543732722424,38.9059616936887,38.9059616936887,38.9543732722424,38.9138938195312,38.8972990459879,38.9138938195312,38.8972990459879,38.9543732722424,38.9543732722424,38.9543732722424,38.8972990459879,38.9138938195312,38.9138938195312,38.9059616936887,38.8972990459879,38.8972990459879,38.8972990459879,38.9543732722424,38.8972990459879,38.8972990459879,38.9138938195312,38.9543732722424,38.9059616936887,38.9138938195312,38.9543732722424,38.9059616936887,38.8972990459879,38.8972990459879,38.8972990459879,38.9138938195312,38.8643495056954,38.9138938195312,38.9138938195312,38.9138938195312,38.8972990459879,38.9138938195312,38.9059616936887,38.8972990459879,38.8972990459879,38.9059616936887,38.9059616936887,38.8972990459879,38.8972990459879,38.8972990459879,38.9059616936887,38.9059616936887,38.9138938195312,38.9059616936887,38.8972990459879,38.8972990459879,38.9543732722424,38.8972990459879,38.8897509317986,38.8987616906937,38.9543732722424,38.8920853941184,38.8987616906937,38.8787837374735,38.8920895186923,38.9560332761835,38.9548153114553,38.9179768530971,38.9179768530971,38.9179768530971,38.8596570987135,38.9176468207859,38.9123244966935,38.9274357918548,38.8956168421101,38.9059616936887,38.9126029638378,38.9190519066355,38.8789687804984,38.8787837374735,38.8798055571672,38.9179768530971,38.9173286251987,38.8451625626788,38.8596570987135,38.9123244966935,38.89946796557,38.8789687804984,38.8612799858582,38.9334379227543,38.8581657132777,38.8451625626788,38.8953676617696,38.826049702556,38.9045103630233,38.9054987176507,38.8978435036815,38.8564559602009,38.8572784439471,38.9123244966935,38.9423807789324,38.8798055571672,38.88596760224,38.9123244966935,38.9123244966935,38.9543732722424,38.9088970908615,38.8798055571672,38.9123244966935,38.8972990459879,38.9123244966935,38.8972990459879,38.9455722698671,38.9274357918548,38.9138938195312,38.9274357918548,38.91572541709,38.9123244966935,38.8972990459879,38.9423807789324,38.9123244966935,38.8920895186923,38.9286873734321,38.8366230053787,38.9274357918548,38.8956168421101,38.9053614777588,38.9022962386773,38.9649545520194,38.9612590606149,38.9123244966935,38.9123244966935,38.9123244966935,38.9510537446491,38.8969781468093,38.9123244966935,38.9123244966935,38.9274357918548,38.8875662818655,38.88596760224,38.8975384697838,38.9123244966935,38.9053620638568,38.9025309490657,38.9088970908615,38.9048787828423,38.926204316972,38.9123244966935,38.9274357918548,38.9123244966935,38.9002078830843,38.9123244966935,38.9123244966935,38.9025284756572,38.9025309490657,38.9004300349683,38.9333543222086,38.8997494205409,38.9123244966935,38.9049904718087,38.9025309490657,38.8969781468093,38.9123244966935,38.9274357918548,38.9274357918548,38.9123244966935,38.8789687804984,38.8596570987135,38.8787837374735,38.8787837374735,38.8451625626788,38.8787837374735,38.8932990791349,38.9048787828423,38.8787837374735,38.8787837374735,38.8787837374735,38.8787837374735,38.8596570987135,38.8789687804984,38.9179768530971,38.9025284756572,38.9123244966935,38.8643495056954,38.8787837374735,38.8506842992464,38.9191832287402,38.8987253579393,38.8915270237798,38.9025341491654,38.9123244966935,38.9123244966935,38.8734635996299,38.8787837374735,38.9183749563733,38.8787837374735,38.9176468207859,38.8451625626788,38.9610131375442,38.8451625626788,38.9123244966935,38.8451625626788,38.9474031122376,38.9181105671157,38.8784885461938,38.9181060363312,38.9480741326735,38.9181073001993,38.9269426932209,38.8787837374735,38.8787837374735,38.8875662818655,38.8787837374735,38.8787837374735,38.8612799858582,38.9334379227543,38.9365820549103,38.8897509317986,38.8787837374735,38.89946796557,38.8789687804984,38.8612799858582,38.8451625626788,38.9123244966935,38.8451625626788,38.8789687804984,38.8789687804984,38.9179768530971,38.8798055571672,38.9025284756572,38.8987616906937,38.9543732722424,38.9176468207859,38.8987616906937,38.8956168421101,38.8956168421101,38.9123244966935,38.9123244966935,38.9172327657757,38.8596570987135,38.8787837374735,38.8787837374735,38.8612799858582,38.9380302729804,38.8787837374735,38.8972990459879,38.9172327657757,38.8451625626788,38.8787837374735,38.9123244966935,38.9496847404464,38.9088970908615,38.8798055571672,38.8532973452793,38.8451625626788,38.9088970908615,38.8787837374735,38.8787837374735,38.9334379227543,38.8451625626788,38.9496847404464,38.8787837374735,38.8951330487548,38.8987616906937,38.8787837374735,38.8787837374735,38.8787837374735,38.8451625626788,38.8787837374735,38.9172327657757,38.8897509317986,38.8451625626788,38.8787837374735,38.8897509317986,38.8787837374735,38.9059616936887,38.8814911968901,38.8987616906937,38.8987616906937,38.8956168421101,38.8969781468093,38.8956168421101,38.8934042319588,38.9053614777588,38.9048787828423,38.9123244966935,38.8952967429995,38.9059616936887,38.8734635996299,38.9138938195312,38.9123244966935,38.9123244966935,38.8987616906937,38.9053614777588,38.9048787828423,38.8798055571672,38.88596760224,38.9496847404464,38.9615176839198,38.9059616936887,38.8987616906937,38.9286873734321,38.9123244966935,38.8956168421101,38.9123244966935,38.9123244966935,38.9123244966935,38.8451625626788,38.9176468207859,38.8451625626788,38.9123244966935,38.9123244966935,38.9274357918548,38.8987616906937,38.88596760224,38.9172327657757,38.8623686329774,38.9496847404464,38.9140905073113,38.88596760224,38.8969781468093,38.8956168421101,38.8956168421101,38.9123244966935,38.9543732722424,38.8969781468093,38.89946796557,38.8451625626788,38.89946796557,38.8787837374735,38.9025284756572,38.9173286251987,38.8451625626788,38.9123244966935,38.8987616906937,38.9138938195312,38.8994016274464,38.906441607104,38.9179768530971,38.9123244966935,38.8451625626788,38.8789687804984,38.8787837374735,38.9191832287402,38.9088970908615,38.8987616906937,38.9173286251987,38.8734635996299,38.9123244966935,38.9123244966935,38.8956168421101,38.9274357918548,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.9274357918548,38.9123244966935,38.8972990459879,38.8987616906937,38.8959639337752,38.9260087608615,38.8970551363322,38.9274357918548,38.9123244966935,38.9548153114553,38.9123244966935,38.9123244966935,38.8969781468093,38.8956168421101,38.8920895186923,38.9048787828423,38.9172327657757,38.9123244966935,38.9050231071001,38.8798055571672,38.9123244966935,38.9274357918548,38.8734635996299,38.9274357918548,38.9173286251987,38.8956168421101,38.9423807789324,38.9088970908615,38.9395447038506,38.9219902665064,38.8814911968901,38.8738176314762,38.9544527155201,38.9310115192625,38.9465277598279,38.8675194699985,38.9123244966935,38.9065583355158,38.9072057687957,38.8987616906937,38.9548153114553,38.8972990459879,38.9123244966935,38.9274357918548,38.8975384697838,38.8975384697838,38.9543732722424,38.9138938195312,38.9050231071001,38.9123244966935,38.8920895186923,38.8956168421101,38.8532973452793,38.9088970908615,38.9423807789324,38.9123244966935,38.9423807789324,38.8987616906937,38.8972990459879,38.8951330487548,38.8637419949753,38.8798055571672,38.865953917187,38.9123244966935,38.9274357918548,38.8969781468093,38.9496847404464,38.8987616906937,38.9088970908615,38.8596570987135,38.89946796557,38.9087731521528,38.9179768530971,38.8787837374735,38.8787837374735,38.89946796557,38.8897509317986,38.8787837374735,38.8787837374735,38.9393211694272,38.8787837374735,38.8596570987135,38.9123244966935,38.8787837374735,38.8787837374735,38.8787837374735,38.8897509317986,38.8787837374735,38.8897509317986,38.8972990459879,38.8897509317986,38.8789687804984,38.9176468207859,38.9334379227543,38.8987616906937,38.9123244966935,38.9123244966935,38.8789687804984,38.8787837374735,38.8787837374735,38.8956168421101,38.89946796557,38.9610131375442,38.8789687804984,38.9610131375442,38.8451625626788,38.8897509317986,38.9274357918548,38.8787837374735,38.8787837374735,38.9048787828423,38.8451625626788,38.8596570987135,38.8897509317986,38.8787837374735,38.8787837374735,38.9534955858599,38.8451625626788,38.8798055571672,38.9274357918548,38.8956168421101,38.8897509317986,38.9179768530971,38.8789687804984,38.9365820549103,38.8451625626788,38.8451625626788,38.9025284756572,38.8787837374735,38.8789687804984,38.9179768530971,38.9172327657757,38.9274357918548,38.9543732722424,38.8956168421101,38.9274357918548,38.9138938195312,38.8783968237237,38.8951330487548,38.9025284756572,38.8987616906937,38.9274357918548,38.8956168421101,38.9123244966935,38.9123244966935,38.8956168421101,38.9123244966935,38.9123244966935,38.8956168421101,38.9123244966935,38.8972990459879,38.9612590606149,38.910474300986,38.9274357918548,38.8956168421101,38.8987616906937,38.9274357918548,38.9059616936887,38.9545735658031,38.9191832287402,38.8982168160503,38.9191832287402,38.8789687804984,38.9179768530971,38.9179768530971,38.8451625626788,38.8920895186923,38.9123244966935,38.8787837374735,38.8596570987135,38.8972990459879,38.8451625626788,38.8987616906937,38.89946796557,38.9179768530971,38.9123244966935,38.9620419851044,38.8969781468093,38.9176468207859,38.9274357918548,38.9534955858599,38.8920895186923,38.910474300986,38.9380302729804,38.8787837374735,38.9543732722424,38.9123244966935,38.8596570987135,38.9179768530971,38.9181073001993,38.8814911968901,38.8787837374735,38.8897509317986,38.8897509317986,38.9334379227543,38.9123244966935,38.9002045659518,38.8451625626788,38.8789687804984,38.9534955858599,38.8789687804984,38.9179768530971,38.9172327657757,38.9123244966935,38.8789687804984,38.9176468207859,38.8789687804984,38.9274357918548,38.9123244966935,38.9123244966935,38.9088970908615,38.8787837374735,38.9123244966935,38.8451625626788,38.9179768530971,38.9123244966935,38.9543732722424,38.9543732722424,38.9123244966935,38.8875662818655,38.8787837374735,38.9123244966935,38.8969781468093,38.9123244966935,38.8920895186923,38.9610173877836,38.8798055571672,38.9048787828423,38.8972990459879,38.8956168421101,38.9123244966935,38.9123244966935,38.8972990459879,38.9123244966935,38.8969781468093,38.9048787828423,38.9088970908615,38.9123244966935,38.9123244966935,38.9123244966935,38.9274357918548,38.8992879861917,38.9543732722424,38.8969781468093,38.9138938195312,38.9274357918548,38.8972990459879,38.9543732722424,38.9274357918548,38.9123244966935,38.8969781468093,38.9543732722424,38.8969781468093,38.8956168421101,38.8250888710896,38.8446706514902,38.9140915626003,38.9190519066355,38.8920895186923,38.9274357918548,38.8798055571672,38.8972990459879,38.9059616936887,38.9059616936887,38.9551704504163,38.9123244966935,38.8798055571672,38.8637419949753,38.8987616906937,38.9123244966935,38.9123244966935,38.9123244966935,38.8972990459879,38.9172327657757,38.9025284756572,38.8972990459879,38.9274357918548,38.9123244966935,38.8956168421101,38.9274357918548,38.9123244966935,38.9123244966935,38.9123244966935,38.8956168421101,38.8956168421101,38.8956168421101,38.9123244966935,38.9123244966935,38.8956168421101,38.9560332761835,38.9258149304166,38.9123244966935,38.9123244966935,38.8223657079634,38.9048787828423,38.91572541709,38.9138938195312,38.8951330487548,38.9274357918548,38.9123244966935,38.9123244966935,38.8987616906937,38.9123244966935,38.9123244966935,38.9123244966935,38.8956168421101,38.9172327657757,38.9059616936887,38.9274357918548,38.9053614777588,38.9173286251987,38.9048787828423,38.8972990459879,38.9048787828423,38.9123244966935,38.8875662818655,38.9546926895927,38.9073984539871,38.8920853941184,38.9173286251987,38.8972990459879,38.8734635996299,38.9002078830843,38.88596760224,38.9088970908615,38.9123244966935,38.8637419949753,38.8623686329774,38.9123244966935,38.8970551363322,38.8951330487548,38.9056566020232,38.9485287837122,38.8923731229064,38.8830080763636,38.8972990459879,38.9423807789324,38.9025284756572,38.9423807789324,38.916997788863,38.9274357918548,38.9281718049602,38.9171113297169,38.906553618307,38.9423807789324,38.9053614777588,38.9274357918548,38.9123244966935,38.8987616906937,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.8972990459879,38.8897716239952,38.9123244966935,38.8992749218102,38.9551478949445,38.8947823547735,38.9260087608615,38.8814911968901,38.8920853941184,38.9123244966935,38.9543732722424,38.9543732722424,38.8956168421101,38.8987616906937,38.9274357918548,38.8956168421101,38.8637419949753,38.9274357918548,38.9123244966935,38.8897716239952,38.9312238300742,38.9028992876415,38.9590093605049,38.9162613327615,38.9123244966935,38.8951330487548,38.9123244966935,38.9274357918548,38.9612590606149,38.9025284756572,38.9274357918548,38.9543732722424,38.9123244966935,38.8972990459879,38.9123244966935,38.9172327657757,38.9123244966935,38.8971529438227,38.9123244966935,38.8975557412399,38.8837330471257,38.9667158630502,38.9721259866074,38.9274357918548,38.9274357918548,38.9123244966935,38.8956168421101,38.8897716239952,38.9123244966935,38.9123244966935,38.9123244966935,38.9172327657757,38.9059616936887,38.8995282533886,38.906441607104,38.9053614777588,38.8798055571672,38.916997788863,38.9048787828423,38.9524071341696,38.9138938195312,38.8969781468093,38.8972990459879,38.9548153114553,38.9059616936887,38.9274357918548,38.9274357918548,38.8951330487548,38.9547009578591,38.9011482313009,38.8976865064961,38.9168295692958,38.8995540366728,38.9059616936887,38.8675194699985,38.9123244966935,38.9138938195312,38.9123244966935,38.8850623931223,38.9274357918548,38.8692912571222,38.9123244966935,38.9423807789324,38.9274357918548,38.9123244966935,38.9123244966935,38.8951330487548,38.9328494701825,38.8897716239952,38.9478972535666,38.8452615294073,38.8436876904664,38.9395442316007,38.9059616936887,38.9258149304166,38.9496847404464,38.9123244966935,38.9097917836327,38.9274357918548,38.9543732722424,38.8956168421101,38.8956168421101,38.9138938195312,38.9543732722424,38.9286749387621,38.9025284756572,38.8969781468093,38.9560332761835,38.9138938195312,38.9123244966935,38.9123244966935,38.8847724125012,38.8875662818655,38.8987616906937,38.9274357918548,38.9274357918548,38.9123244966935,38.8897716239952,38.8920853941184,38.9002078830843,38.9123244966935,38.8956168421101,38.8987616906937,38.9123244966935,38.9172327657757,38.8596750791626,38.8987548763708,38.8956168421101,38.9088970908615,38.9274357918548,38.9543732722424,38.9546926895927,38.9123244966935,38.9123244966935,38.9274357918548,38.9123244966935,38.9123244966935,38.9025284756572,38.9274357918548,38.8987616906937,38.9138938195312,38.9138938195312,38.8787837374735,38.9123244966935,38.9548153114553,38.8451625626788,38.8787837374735,38.89946796557,38.8987616906937,38.8969781468093,38.9048787828423,38.8787837374735,38.8451625626788,38.8987616906937,38.9219902665064,38.9365820549103,38.9365820549103,38.8987616906937,38.9123244966935,38.8969781468093,38.9050231071001,38.9123244966935,38.8987616906937,38.9123244966935,38.9138938195312,38.9123244966935,38.9274357918548,38.9274357918548,38.9274357918548,38.9380302729804,38.9168569869388,38.931152542012,38.9010052846108,38.9021670467759,38.8928010048644,38.8710865977008,38.8787837374735,38.8789687804984,38.8787837374735,38.8789687804984,38.9056459348207,38.9179497925496,38.9496847404464,38.8798055571672,38.8789687804984,38.9179768530971,38.8787837374735,38.8451625626788,38.8596570987135,38.8787837374735,38.9274357918548,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.8637419949753,38.9123244966935,38.88596760224,38.88596760224,38.9123244966935,38.9048787828423,38.8675194699985,38.9274357918548,38.9123244966935,38.9035879969585,38.9264257900458,38.88596760224,38.9361193710101,38.8583496065221,38.9123244966935,38.9274357918548,38.9123244966935,38.8984172362004,38.9761665090586,38.9123244966935,38.9274357918548,38.9612590606149,38.88596760224,38.9123244966935,38.9274357918548,38.915729090992,38.9192773497019,38.9123244966935,38.9172098303319,38.9173286251987,38.9048787828423,38.88596760224,38.9059616936887,38.9123244966935,38.8987616906937,38.9543732722424,38.8956168421101,38.9274357918548,38.9274357918548,38.9048787828423,38.8987616906937,38.8956168421101,38.9274357918548,38.9286873734321,38.8798055571672,38.9025309490657,38.8532973452793,38.88596760224,38.8876425824234,38.9173286251987,38.9123244966935,38.8920895186923,38.9496847404464,38.9529625133808,38.9028992876415,38.9089222735921,38.9059616936887,38.9059616936887,38.9156340602498,38.9274357918548,38.9123244966935,38.9274357918548,38.9172327657757,38.8956168421101,38.8956168421101,38.9612590606149,38.8969781468093,38.8987616906937,38.8972990459879,38.9123244966935,38.9123244966935,38.9123244966935,38.8987616906937,38.9123244966935,38.901779737598,38.8585535719593,38.9048787828423,38.9123244966935,38.9123244966935,38.9123244966935,38.9025284756572,38.9138938195312,38.9252322706925,38.8972990459879,38.9123244966935,38.9123244966935,38.8623686329774,38.8798055571672,38.8798055571672,38.9304498066171,38.9123244966935,38.916997788863,38.9123244966935,38.9138938195312,38.8987616906937,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.9539440690314,38.9543732722424,38.8987616906937,38.9123244966935,38.9274357918548,38.9274357918548,38.8969781468093,38.8956168421101,38.9612590606149,38.9053614777588,38.9059616936887,38.924755448085,38.9358186660154,38.89946796557,38.9123244966935,38.8969781468093,38.8920895186923,38.9429513134394,38.9073984539871,38.9174665041885,38.9065583355158,38.9096346591638,38.8652563062225,38.916997788863,38.9170022241396,38.8897716239952,38.9205880085796,38.9088970908615,38.9191848308643,38.931152542012,38.9170022241396,38.9258149304166,38.8836561337461,38.8727806475782,38.9088970908615,38.9260087608615,38.8836561337461,38.9073984539871,38.8938311327721,38.8920853941184,38.9479092542275,38.9174665041885,38.9073984539871,38.9073984539871,38.9073984539871,38.9183852675449,38.9073984539871,38.9205880085796,38.9073984539871,38.9123244966935,38.9123244966935,38.9048787828423,38.9172327657757,38.8897716239952,38.9612590606149,38.9123244966935,38.9123244966935,38.9048787828423,38.9088970908615,38.9123244966935,38.8969781468093,38.9123244966935,38.8987616906937,38.933113202261,38.8996437684213,38.9088970908615,38.9002078830843,38.9612590606149,38.9138938195312,38.952605344548,38.8734635996299,38.9025284756572,38.9073984539871,38.9025284756572,38.8787837374735,38.8787837374735,38.8596570987135,38.8787837374735,38.9380302729804,38.8451625626788,38.9380302729804,38.9248909438896,38.8787837374735,38.8787837374735,38.8612799858582,38.8787837374735,38.8612799858582,38.8596570987135,38.8956168421101,38.9123244966935,38.9059616936887,38.9214256855654,38.8787837374735,38.8576032646861,38.8787837374735,38.9123244966935,38.8787837374735,38.9123244966935,38.8451625626788,38.9469492446163,38.9496847404464,38.9219902665064,38.9048787828423,38.9059616936887,38.9172327657757,38.9138938195312,38.9123244966935,38.9543732722424,38.9123244966935,38.9123244966935,38.9423807789324,38.9286873734321,38.9123244966935,38.8936615029513,38.8773757852761,38.9123244966935,38.9123244966935,38.9123244966935,38.9274357918548,38.9123244966935,38.9002078830843,38.9002078830843,38.9025284756572,38.9258149304166,38.9005595240905,38.928895192476,38.9191848308643,38.8936615029513,38.8956168421101,38.9123244966935,38.9274357918548,38.9123244966935,38.9138938195312,38.9235294962134,38.9123244966935,38.9274357918548,38.9496847404464,38.9073984539871,38.9548153114553,38.9123244966935,38.8734635996299,38.9496847404464,38.9612590606149,38.8956168421101,38.8969781468093,38.9053614777588,38.9123244966935,38.8969781468093,38.9085311504949,38.9612590606149,38.9048787828423,38.9073984539871,38.9496847404464,38.9496847404464,38.9496847404464,38.9048787828423,38.8951330487548,38.9048787828423,38.9123244966935,38.9025309490657,38.9123244966935,38.9172327657757,38.9173286251987,38.9167391926651,38.8798055571672,38.9123244966935,38.8798055571672,38.8972990459879,38.8972990459879,38.9138938195312,38.8956168421101,38.8637419949753,38.8951330487548,38.9025284756572,38.8798055571672,38.9025284756572,38.88596760224,38.9123244966935,38.9423807789324,38.8623686329774,38.8951330487548,38.9022324518214,38.9632683093174,38.9123244966935,38.8987616906937,38.9123244966935,38.8987616906937,38.8956168421101,38.9138938195312,38.9138938195312,38.8969781468093,38.8956168421101,38.9138938195312,38.9423807789324,38.88596760224,38.8987616906937,38.9173286251987,38.9560332761835,38.9002078830843,38.9173286251987,38.9496847404464,38.8972990459879,38.9123244966935,38.9123244966935,38.9423807789324,38.9123244966935,38.8897716239952,38.9548153114553,38.9123244966935,38.9543732722424,38.9048787828423,38.9123244966935,38.9123244966935,38.9401374356537,38.8932990791349,38.9123244966935,38.9053614777588,38.9123244966935,38.9274357918548,38.9025309490657,38.9138938195312,38.8956168421101,38.9174665041885,38.9124056319255,38.9123244966935,38.8734635996299,38.9130366340947,38.9039831908584,38.9138938195312,38.9274357918548,38.9232051998081,38.9059616936887,38.8875662818655,38.9306108727291,38.9065583355158,38.9072402851021,38.9123244966935,38.9274357918548,38.9123244966935,38.8798055571672,38.9173286251987,38.8798055571672,38.8987616906937,38.9048787828423,38.9025284756572,38.89648022283,38.9391052507722,38.9116150657498,38.9232269573385,38.8786544075533,38.9080385458658,38.9052457868247,38.9274357918548,38.9274357918548,38.88596760224,38.9123244966935,38.9048787828423,38.8969781468093,38.9274357918548,38.8956168421101,38.9219902665064,38.9274357918548,38.8451625626788,38.9226607788422,38.9073984539871,38.8987616906937,38.9123244966935,38.8969781468093,38.8716797355129,38.9048787828423,38.9018277237717,38.9034336261695,38.8969781468093,38.8972990459879,38.8969781468093,38.9423807789324,38.9048787828423,38.9172327657757,38.9123244966935,38.8978799992565,38.8585535719593,38.8754841372286,38.8436122088974,38.8956168421101,38.9274357918548,38.9123244966935,38.8734635996299,38.9173286251987,38.8987616906937,38.9123244966935,38.9274357918548,38.9274357918548,38.9274357918548,38.9123244966935,38.9123244966935,38.9056459348207,38.9140909939549,38.8981002822742,38.8868755284734,38.9322811968581,38.855144553522,38.9025227612682,38.9205880085796,38.8250888710896,38.9205880085796,38.9123244966935,38.9123244966935,38.8798055571672,38.8956168421101,38.9274357918548,38.9123244966935,38.9123244966935,38.9123244966935,38.9048787828423,38.9191772170258,38.9058792756803,38.9363715896335,38.903730419747,38.9059616936887,38.9059616936887,38.8972990459879,38.89946796557,38.8987616906937,38.9123244966935,38.9274357918548,38.8956168421101,38.9123244966935,38.9176468207859,38.8787837374735,38.9496847404464,38.8596570987135,38.8787837374735,38.8787837374735,38.8787837374735,38.8787837374735,38.8787837374735,38.9380302729804,38.9380302729804,38.89946796557,38.8787837374735,38.9334379227543,38.8787837374735,38.8602449881944,38.9170022241396,38.9048787828423,38.8787837374735,38.9365820549103,38.8787837374735,38.8787837374735,38.8787837374735,38.8451625626788,38.8787837374735,38.8612799858582,38.8972990459879,38.9123244966935,38.9548153114553,38.8897509317986,38.9365820549103,38.8787837374735,38.9610131375442,38.9274357918548,38.9123244966935,38.9179768530971,38.8787837374735,38.8956168421101,38.9496847404464,38.9123244966935,38.9179768530971,38.8787837374735,38.8787837374735,38.8596570987135,38.8612799858582,38.9496847404464,38.8787837374735,38.8612799858582,38.9534955858599,38.911125347624,38.9562351716726,38.8875662818655,38.9123244966935,38.9123244966935,38.8897716239952,38.8966558836116,38.9123244966935,38.9048787828423,38.9123244966935,38.8969781468093,38.9123244966935,38.9123244966935,38.9123244966935,38.9173286251987,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.9274357918548,38.9235294962134,38.9123244966935,38.9048787828423,38.9123244966935,38.8920102836904,38.910474300986,38.9274357918548,38.9303072039819,38.88596760224,38.9048787828423,38.9025284756572,38.8637419949753,38.8897716239952,38.88596760224,38.9423807789324,38.8956168421101,38.8969781468093,38.9274357918548,38.9274357918548,38.9123244966935,38.8956168421101,38.9181060363312,38.8972990459879,38.8972990459879,38.9123244966935,38.8956168421101,38.9260087608615,38.9363285015409,38.8578107817569,38.8798055571672,38.8969781468093,38.8956168421101,38.8956168421101,38.8630904127998,38.9496847404464,38.9274357918548,38.9274357918548,38.9172327657757,38.8972990459879,38.9123244966935,38.9123244966935,38.9543732722424,38.9172327657757,38.9123244966935,38.9274357918548,38.9123244966935,38.9380302729804,38.9380302729804,38.8787837374735,38.8787837374735,38.8897509317986,38.8787837374735,38.8787837374735,38.9380302729804,38.9248909438896,38.89946796557,38.9380302729804,38.8596570987135,38.8972990459879,38.9123244966935,38.9123244966935,38.8972990459879,38.9123244966935,38.9274357918548,38.8956168421101,38.9543732722424,38.9123244966935,38.9123244966935,38.8956168421101,38.8920895186923,38.8987616906937,38.9123244966935,38.9548153114553,38.9123244966935,38.9123244966935,38.9548153114553,38.9274357918548,38.8972990459879,38.8987616906937,38.9053608204999,38.9176468207859,38.8451625626788,38.8969781468093,38.9172327657757,38.8897499259629,38.9173286251987,38.9274357918548,38.8956168421101,38.9123244966935,38.8972990459879,38.8859812387595,38.9176468207859,38.9123244966935,38.8956168421101,38.8951330487548,38.9123244966935,38.8798055571672,38.9219902665064,38.8869250682168,38.9173286251987,38.8897716239952,38.9065583355158,38.9173286251987,38.9274357918548,38.9675350596817,38.9262723307205,38.9048787828423,38.8637419949753,38.8891986611879,38.9548153114553,38.8798055571672,38.8987616906937,38.9088970908615,38.8744754593861,38.9138938195312,38.8987616906937,38.9123244966935,38.88596760224,38.9123244966935,38.8956168421101,38.9123244966935,38.9543732722424,38.9123244966935,38.8972990459879,38.9138938195312,38.8951330487548,38.8798055571672,38.9123244966935,38.9123244966935,38.9123244966935,38.9179768530971,38.8972990459879,38.9088970908615,38.8956168421101,38.8451625626788,38.8956168421101,38.9534955858599,38.93170320429,38.8451625626788,38.922291710748,38.8637419949753,38.9179768530971,38.9274357918548,38.9138938195312,38.8789687804984,38.9048787828423,38.8956168421101,38.8734635996299,38.9620419851044,38.9048787828423,38.9274357918548,38.9123244966935,38.9138938195312,38.8532973452793,38.9123244966935,38.9138938195312,38.9172327657757,38.8956168421101,38.9274357918548,38.9048787828423,38.9123244966935,38.9496847404464,38.8987616906937,38.9172327657757,38.9219902665064,38.9274357918548,38.9219902665064,38.9443299768975,38.9383061564141,38.9525347990541,38.9048787828423,38.9123244966935,38.9274357918548,38.88596760224,38.9172327657757,38.8734635996299,38.9123244966935,38.8920895186923,38.8920895186923,38.9173286251987,38.9123244966935,38.9274357918548,38.9123244966935,38.9123244966935,38.9123244966935,38.9274357918548,38.9543732722424,38.8973503839855,38.9065583355158,38.9496847404464,38.9123244966935,38.9123244966935,38.9123244966935,38.8623686329774,38.8972990459879,38.9123244966935,38.9496847404464,38.9048787828423,38.8969781468093,38.9123244966935,38.8921008390143,38.9543732722424,38.9138938195312,38.9163296510593,38.9286873734321,38.9423807789324,38.9235294962134,38.9050231071001,38.9138938195312,38.884807925326,38.8997931859615,38.862578079721,38.9123244966935,38.9053614777588,38.8987616906937,38.916997788863,38.8897716239952,38.8987616906937,38.8792783462171,38.8735819481826,38.9274357918548,38.9274357918548,38.8987616906937,38.9548153114553,38.9274357918548,38.9274357918548,38.9048787828423,38.8969781468093,38.91572541709,38.8969781468093,38.9059616936887,38.9449735797215,38.9676449838774,38.9288066236395,38.879232451752,38.9062302708161,38.9053841284902,38.9123244966935,38.9123244966935,38.9123244966935,38.9048787828423,38.9172327657757,38.8532973452793,38.9543732722424,38.8956168421101,38.9123244966935,38.9138938195312,38.9123244966935,38.9002078830843,38.88596760224,38.8798055571672,38.8734635996299,38.9088970908615,38.9073984539871,38.9199923108837,38.916997788863,38.9088970908615,38.9423807789324,38.9322082629392,38.9548153114553,38.8787837374735,38.8532973452793,38.8956168421101,38.8987616906937,38.8623686329774,38.8798055571672,38.9172327657757,38.8798055571672,38.9380302729804,38.8532973452793,38.8623686329774,38.8987616906937,38.8956168421101,38.8956168421101,38.8787837374735,38.8451625626788,38.9059616936887,38.9048787828423,38.9123244966935,38.8969781468093,38.9138938195312,38.9048787828423,38.8972990459879,38.9123244966935,38.9173286251987,38.9274357918548,38.8987616906937,38.9138938195312,38.9123244966935,38.9274357918548,38.9123244966935,38.8956168421101,38.9252322706925,38.9045147503583,38.8972990459879,38.9138938195312,38.9123244966935,38.9123244966935,38.8969781468093,38.9138938195312,38.9138938195312,38.9187674106345,38.9496847404464,38.9274357918548,38.9172327657757,38.8734635996299,38.8798055571672,38.9048787828423,38.9612590606149,38.9123244966935,38.9274357918548,38.9048787828423,38.8920853941184,38.9053614777588,38.9088970908615,38.8987616906937,38.8920895186923,38.9048787828423,38.9050231071001,38.9123244966935,38.9059616936887,38.8987616906937,38.8987616906937,38.8956168421101,38.8956168421101,38.8956168421101,38.8987616906937,38.8734635996299,38.9125039640159,38.9048787828423,38.9138938195312,38.9274357918548,38.9155647031992,38.8831954661573,38.9153792718149,38.9543732722424,38.8975384697838,38.846902817011,38.9393894195168,38.8940815074467,38.8951330487548,38.9173286251987,38.9543732722424,38.9073984539871,38.9123244966935,38.9088970908615,38.9543732722424,38.9173286251987,38.8956168421101,38.9123244966935,38.8969781468093,38.9123244966935,38.8672656504225,38.9372869352167,38.882879056474,38.9190519066355,38.8987616906937,38.9138938195312,38.9123244966935,38.9123244966935,38.8956168421101,38.9123244966935,38.8956168421101,38.8623686329774,38.9138938195312,38.8787837374735,38.9123244966935,38.8987616906937,38.9274357918548,38.8956168421101,38.9543732722424,38.9123244966935,38.8956168421101,38.8767521271504,38.8787837374735,38.9123244966935,38.8920895186923,38.9123244966935,38.9123244966935,38.8987616906937,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.8969781468093,38.9274357918548,38.8623686329774,38.9002078830843,38.8623686329774,38.9548153114553,38.9334379227543,38.8787837374735,38.8789687804984,38.8787837374735,38.8612799858582,38.8932990791349,38.9123244966935,38.8969781468093,38.8987616906937,38.9274357918548,38.8956168421101,38.8956168421101,38.8956168421101,38.8920895186923,38.8451625626788,38.8920895186923,38.8920853941184,38.9325341369399,38.8897509317986,38.8787837374735,38.8787837374735,38.9088970908615,38.8787837374735,38.8787837374735,38.8787837374735,38.8787837374735,38.89946796557,38.8764808713658,38.9274357918548,38.9123244966935,38.8972990459879,38.8942601266178,38.8451625626788,38.9274357918548,38.9543732722424,38.8451625626788,38.9274357918548,38.9274357918548,38.9123244966935,38.9123244966935,38.89946796557,38.9002078830843,38.8787837374735,38.9496847404464,38.8787837374735,38.9170022241396,38.8572758574131,38.8787837374735,38.8451625626788,38.9123244966935,38.8789687804984,38.8975384697838,38.8707420316038,38.927180048063,38.8787837374735,38.9123244966935,38.8956168421101,38.9179768530971,38.8787837374735,38.8612799858582,38.9610173877836,38.91572541709,38.8835954937507,38.9190644703714,38.8329040377314,38.8451625626788,38.9176468207859,38.9179768530971,38.89946796557,38.9179768530971,38.8920895186923,38.9123244966935,38.8787837374735,38.9123244966935,38.8734635996299,38.8787837374735,38.9543732722424,38.8975384697838,38.8451625626788,38.9612590606149,38.8787837374735,38.8596570987135,38.8972990459879,38.9048787828423,38.8969781468093,38.8948184844687,38.8905689929074,38.905014335098,38.9059616936887,38.8956168421101,38.9219902665064,38.9496847404464,38.9048787828423,38.8920895186923,38.9025284756572,38.8920853941184,38.8920895186923,38.88596760224,38.8951330487548,38.9088970908615,38.9274357918548,38.8972990459879,38.9050231071001,38.9496847404464,38.8942130368727,38.9142893345336,38.9123244966935,38.9274357918548,38.9123244966935,38.8920895186923,38.8956168421101,38.8787837374735,38.9423807789324,38.9088970908615,38.8956168421101,38.8734635996299,38.8897716239952,38.8951330487548,38.942421048159,38.9143853499674,38.9048787828423,38.8897716239952,38.9053614777588,38.8515854891489,38.8875662818655,38.9123244966935,38.8921010068774,38.8920895186923,38.9322811968581,38.9274357918548,38.8972990459879,38.8987616906937,38.9123244966935,38.9274357918548,38.9051106854827,38.8231331496838,38.8596570987135,38.8787837374735,38.8897509317986,38.8787837374735,38.8764808713658,38.9248909438896,38.9380302729804,38.8787837374735,38.8787837374735,38.8451625626788,38.88596760224,38.8787837374735,38.88596760224,38.8787837374735,38.8637419949753,38.8787837374735,38.8789687804984,38.9179768530971,38.8787837374735,38.8787837374735,38.9597528280657,38.8796229159921,38.8451625626788,38.8787837374735,38.9123244966935,38.9123244966935,38.8451625626788,38.8451625626788,38.8596570987135,38.9123244966935,38.9274357918548,38.8787837374735,38.9174665041885,38.8787837374735,38.8956168421101,38.8987616906937,38.9274357918548,38.9138938195312,38.9123244966935,38.8972990459879,38.8972990459879,38.9123244966935,38.9274357918548,38.8956168421101,38.9274357918548,38.8969781468093,38.9123244966935,38.9123244966935,38.9123244966935,38.8951330487548,38.9138938195312,38.8987616906937,38.8798055571672,38.9274357918548,38.9179768530971,38.8924826292393,38.8451625626788,38.8451625626788,38.8969781468093,38.8451625626788,38.8451625626788,38.9138938195312,38.8451625626788,38.9138938195312,38.8787837374735,38.9496847404464,38.8764808713658,38.9140909939549,38.9174665041885,38.8875621144743,38.8987616906937,38.9462775609158,38.8572758574131,38.8787837374735,38.8787837374735,38.8987616906937,38.9123244966935,38.9138938195312,38.9543732722424,38.9123244966935,38.9423807789324,38.8987616906937,38.8787837374735,38.8787837374735,38.9123244966935,38.8787837374735,38.8612799858582,38.8612799858582,38.8920877687346,38.8897716239952,38.8969781468093,38.8956168421101,38.904378088246,38.9018277237717,38.89946796557,38.8787837374735,38.9334379227543,38.89946796557,38.8451625626788,38.9088970908615,38.9015637650816,38.8787837374735,38.9123244966935,38.9365820549103,38.8612799858582,38.8787837374735,38.8612799858582,38.8451625626788,38.88596760224,38.9025284756572,38.8987616906937,38.8789687804984,38.8612799858582,38.8987616906937,38.9123244966935,38.9123244966935,38.8987616906937,38.9543732722424,38.8969781468093,38.8956168421101,38.8956168421101,38.8787837374735,38.89946796557,38.9365820549103,38.8787837374735,38.9548153114553,38.8787837374735,38.8787837374735,38.8451625626788,38.8969781468093,38.9123244966935,38.9179768530971,38.8451625626788,38.8451625626788,38.8969781468093,38.8787837374735,38.8787837374735,38.8692912571222,38.9123244966935,38.9543732722424,38.9365820549103,38.89946796557,38.9123244966935,38.9123244966935,38.9365820549103,38.8969781468093,38.9048787828423,38.8451625626788,38.9138938195312,38.9138938195312,38.8972990459879,38.9543732722424,38.9138938195312,38.9138938195312,38.8972990459879,38.9138938195312,38.9181140298708,38.8972990459879,38.8972990459879,38.9059616936887,38.9030486114959,38.9543732722424,38.9543732722424,38.862578079721,38.9123244966935,38.9123244966935,38.8972990459879,38.9138938195312,38.9123244966935,38.9612590606149,38.9172327657757,38.9123244966935,38.9423807789324,38.9496847404464,38.8897716239952,38.8972990459879,38.8920895186923,38.9123244966935,38.8956168421101,38.9138938195312,38.9088970908615,38.8987616906937,38.9123244966935,38.9170022241396,38.9048787828423,38.9059616936887,38.8975384697838,38.9056476649754,38.9542466987947,38.9123244966935,38.9264063938364,38.9556278403413,38.9048787828423,38.9123244966935,38.8969781468093,38.8987616906937,38.9548153114553,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.8972990459879,38.8969781468093,38.91572541709,38.8956168421101,38.9098515112244,38.8759580923579,38.9059616936887,38.9543732722424,38.8875662818655,38.8532973452793,38.88596760224,38.9053614777588,38.9088970908615,38.9496847404464,38.8734635996299,38.9025309490657,38.9048787828423,38.9274357918548,38.9172327657757,38.8987616906937,38.8841739534294,38.8836561337461,38.8670243989532,38.8670243989532,38.9169295565417,38.947894894039,38.8868755284734,38.9543732722424,38.9123244966935,38.8987616906937,38.9123244966935,38.9048787828423,38.9123244966935,38.9123244966935,38.9123244966935,38.9088970908615,38.9123244966935,38.8697141084094,38.9028820619044,38.872982674656,38.8956168421101,38.8987616906937,38.9123244966935,38.8798055571672,38.8623686329774,38.9274357918548,38.8969781468093,38.8897716239952,38.8787837374735,38.8764808713658,38.8787837374735,38.9380302729804,38.8787837374735,38.8972990459879,38.9123244966935,38.9059616936887,38.8612799858582,38.89946796557,38.89946796557,38.9048787828423,38.8787837374735,38.8787837374735,38.8787837374735,38.8787837374735,38.9401374356537,38.8451625626788,38.9248909438896,38.8987616906937,38.9123244966935,38.9274357918548,38.8787837374735,38.9534955858599,38.9123244966935,38.8787837374735,38.8789687804984,38.8787837374735,38.9138938195312,38.8787837374735,38.9123244966935,38.8643495056954,38.8787837374735,38.8451625626788,38.8596570987135,38.8787837374735,38.9172327657757,38.8451625626788,38.9334379227543,38.8951330487548,38.8897509317986,38.8956168421101,38.8532973452793,38.8787837374735,38.8787837374735,38.8789687804984,38.8787837374735,38.8787837374735,38.9334379227543,38.8787837374735,38.8787837374735,38.8787837374735,38.8956168421101,38.8451625626788,38.8798055571672,38.8956168421101,38.88596760224,38.8623686329774,38.8950298355716,38.9059616936887,38.8972990459879,38.9002078830843,38.8920853941184,38.8734635996299,38.8532973452793,38.9123244966935,38.9542466987947,38.9423807789324,38.9123244966935,38.9050231071001,38.9088970908615,38.8532973452793,38.8734635996299,38.8623686329774,38.8787837374735,38.8787837374735,38.8789687804984,38.8787837374735,38.8451625626788,38.8451625626788,38.9025284756572,38.9334379227543,38.8787837374735,38.8451625626788,38.8612799858582,38.9123244966935,38.8734635996299,38.9123244966935,38.9380302729804,38.8451625626788,38.9176468207859,38.8787837374735,38.8787837374735,38.8787837374735,38.9123244966935,38.9123244966935,38.8956168421101,38.9123244966935,38.9123244966935,38.8987616906937,38.8987616906937,38.8787837374735,38.8787837374735,38.8787837374735,38.8798055571672,38.8956168421101,38.9123244966935,38.9543732722424,38.9123244966935,38.9274357918548,38.9056459348207,38.9059616936887,38.8656755231304,38.8637419949753,38.9173286251987,38.9002078830843,38.8787837374735,38.8787837374735,38.8897509317986,38.9496847404464,38.8787837374735,38.8987616906937,38.9172327657757,38.8987616906937,38.8956168421101,38.8787837374735,38.91572541709,38.8451625626788,38.8787837374735,38.8612799858582,38.8987616906937,38.9172327657757,38.8787837374735,38.9172327657757,38.8956168421101,38.8451625626788,38.8798055571672,38.8956168421101,38.8956168421101,38.8956168421101,38.8787837374735,38.8789687804984,38.8969781468093,38.91572541709,38.8787837374735,38.9274357918548,38.9059616936887,38.8920102836904,38.8920102836904,38.9179768530971,38.9365820549103,38.8787837374735,38.9365820549103,38.8787837374735,38.9176468207859,38.8798055571672,38.8789687804984,38.8897509317986,38.8787837374735,38.9123244966935,38.8787837374735,38.8787837374735,38.8787837374735,38.9534955858599,38.8787837374735,38.9123244966935,38.9123244966935,38.9048787828423,38.8969781468093,38.9285226568989,38.9123244966935,38.8969781468093,38.8583496065221,38.9123244966935,38.9025284756572,38.9123244966935,38.9048787828423,38.9123244966935,38.8897716239952,38.9123244966935,38.9274357918548,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.9048787828423,38.9123244966935,38.8897716239952,38.9123244966935,38.9138938195312,38.9123244966935,38.9123244966935,38.8734635996299,38.9496847404464,38.8532973452793,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.9138938195312,38.8897716239952,38.9123244966935,38.9274357918548,38.9138938195312,38.9235294962134,38.9138938195312,38.9123244966935,38.9123244966935,38.88596760224,38.9219902665064,38.9123244966935,38.8956168421101,38.8969781468093,38.9123244966935,38.9415471901598,38.8972990459879,38.9088459947801,38.9138938195312,38.8975384697838,38.9025284756572,38.9088970908615,38.8969781468093,38.9123244966935,38.9543732722424,38.8969781468093,38.9123244966935,38.9543732722424,38.8572758574131,38.9138938195312,38.9123244966935,38.8972990459879,38.9274357918548,38.9274357918548,38.9123244966935,38.8975384697838,38.858750929445,38.9112797582797,38.9496847404464,38.8897716239952,38.8734635996299,38.9286873734321,38.8935773224038,38.9041149056007,38.9031185035386,38.8784712129186,38.9048787828423,38.9123244966935,38.8956168421101,38.8623686329774,38.8969781468093,38.8987616906937,38.9548153114553,38.9123244966935,38.9123244966935,38.8960548276693,38.9048787828423,38.9048787828423,38.8864709639629,38.8679670937406,38.9285817699687,38.8949187057198,38.9090995827746,38.8972990459879,38.8969781468093,38.8798055571672,38.8798055571672,38.9274357918548,38.9123244966935,38.8987616906937,38.8987616906937,38.8972990459879,38.9123244966935,38.9173286251987,38.8798055571672,38.8956168421101,38.8637419949753,38.9088970908615,38.9274357918548,38.9274357918548,38.8956168421101,38.8897716239952,38.9123244966935,38.8987616906937,38.9053614777588,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.8956168421101,38.9123244966935,38.9138938195312,38.9123244966935,38.9274357918548,38.9123244966935,38.9543732722424,38.8969781468093,38.9123244966935,38.9123244966935,38.9172327657757,38.9173286251987,38.8987616906937,38.8798055571672,38.8532973452793,38.8798055571672,38.9053614777588,38.9423807789324,38.9235294962134,38.9172327657757,38.9123244966935,38.8987616906937,38.91572541709,38.8972990459879,38.8920853941184,38.9274357918548,38.9172327657757,38.8596570987135,38.9123244966935,38.9235294962134,38.9123244966935,38.8451625626788,38.8875662818655,38.9048787828423,38.9088970908615,38.9073984539871,38.8798055571672,38.9123244966935,38.8956168421101,38.8787837374735,38.9088970908615,38.8798055571672,38.916997788863,38.9088970908615,38.9274357918548,38.8798055571672,38.9123244966935,38.9123244966935,38.9123244966935,38.9331093560753,38.9123244966935,38.9274357918548,38.9172327657757,38.9123244966935,38.8920853941184,38.9219902665064,38.9025284756572,38.9048787828423,38.9123244966935,38.9170022241396,38.9423807789324,38.9123244966935,38.9543732722424,38.9274357918548,38.8972990459879,38.8987616906937,38.8787837374735,38.8969781468093,38.9759813030646,38.9333112177818,38.8951330487548,38.9173286251987,38.8897716239952,38.8734635996299,38.9548153114553,38.9123244966935,38.8972990459879,38.9274357918548,38.9274357918548,38.9543732722424,38.8987616906937,38.9123244966935,38.9123244966935,38.9123244966935,38.9380302729804,38.9123244966935,38.8987616906937,38.9059616936887,38.8787837374735,38.8451625626788,38.8764808713658,38.8764808713658,38.9176468207859,38.9088970908615,38.8787837374735,38.8787837374735,38.8787837374735,38.9179768530971,38.8789687804984,38.910474300986,38.9025284756572,38.8451625626788,38.8789687804984,38.9334379227543,38.8787837374735,38.8789687804984,38.8897509317986,38.8787837374735,38.8789687804984,38.8972990459879,38.8787837374735,38.9123244966935,38.8787837374735,38.8451625626788,38.8969781468093,38.8787837374735,38.9534955858599,38.8789687804984,38.9088970908615,38.9088970908615,38.9002078830843,38.9173286251987,38.8787837374735,38.8969781468093,38.8451625626788,38.9088970908615,38.9560332761835,38.8787837374735,38.9365820549103,38.8612799858582,38.8787837374735,38.9274357918548,38.8956168421101,38.8789687804984,38.8451625626788,38.9123244966935,38.8789687804984,38.8789687804984,38.9088970908615,38.8787837374735,38.9123244966935,38.9274357918548,38.8987616906937,38.9048787828423,38.9025309490657,38.8972990459879,38.9138938195312,38.8969781468093,38.910474300986,38.9048787828423,38.9173286251987,38.8443169653446,38.9140915626003,38.8836017731937,38.9016297537031,38.9123244966935,38.9227176480088,38.9173286251987,38.9274357918548,38.9048787828423,38.8956168421101,38.9123244966935,38.8920853941184,38.8920895186923,38.9560332761835,38.9123244966935,38.9123244966935,38.9123244966935,38.8956168421101,38.8956168421101,38.9088970908615,38.9025284756572,38.8859812387595,38.8936615029513,38.931152542012,38.8972990459879,38.9496847404464,38.9088970908615,38.9123244966935,38.9543732722424,38.9123244966935,38.9274357918548,38.9543732722424,38.9548153114553,38.8623686329774,38.9548153114553,38.9050231071001,38.9543732722424,38.8969781468093,38.9496847404464,38.9123244966935,38.8987616906937,38.9274357918548,38.9123244966935,38.9025284756572,38.9172327657757,38.9048787828423,38.8798055571672,38.939174497397,38.8798055571672,38.9056459348207,38.9025284756572,38.9543732722424,38.9274357918548,38.9274357918548,38.9543732722424,38.8787837374735,38.9123244966935,38.8987616906937,38.9088970908615,38.8956168421101,38.8987616906937,38.8956168421101,38.9548153114553,38.8987616906937,38.8956168421101,38.9496847404464,38.8951330487548,38.9088970908615,38.8798055571672,38.9548153114553,38.8798055571672,38.91572541709,38.9548153114553,38.9172327657757,38.8734635996299,38.8734635996299,38.9172327657757,38.9172327657757,38.8798055571672,38.8956168421101,38.8987616906937,38.9496847404464,38.9496847404464,38.8451625626788,38.8787837374735,38.8956168421101,38.8956168421101,38.8972990459879,38.9274357918548,38.9138938195312,38.9123244966935,38.8956168421101,38.9123244966935,38.9123244966935,38.9123244966935,38.8787837374735,38.9176468207859,38.9274357918548,38.9123244966935,38.8987616906937,38.8987616906937,38.9123244966935,38.8972990459879,38.9380302729804,38.8787837374735,38.8787837374735,38.8787837374735,38.8612799858582,38.9401374356537,38.8596570987135,38.9380302729804,38.9123244966935,38.9274357918548,38.9123244966935,38.9264063938364,38.8787837374735,38.9214538766889,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.9274357918548,38.9274357918548,38.8956168421101,38.9123244966935,38.8987616906937,38.8969781468093,38.9138938195312,38.9543732722424,38.9543732722424,38.9274357918548,38.8787837374735,38.9123244966935,38.9274357918548,38.9548153114553,38.931152542012,38.964166785095,38.922047010149,38.88596760224,38.9123244966935,38.8956168421101,38.9002078830843,38.8623686329774,38.8951330487548,38.8451625626788,38.8451625626788,38.9274357918548,38.8789687804984,38.9334379227543,38.8897509317986,38.89946796557,38.9176468207859,38.88596760224,38.9123244966935,38.9048787828423,38.9123244966935,38.9543732722424,38.8972990459879,38.9025309490657,38.9048787828423,38.9123244966935,38.8956168421101,38.9496847404464,38.9543732722424,38.9123244966935,38.9138938195312,38.8920895186923,38.9423807789324,38.9123244966935,38.9274357918548,38.8969781468093,38.9274357918548,38.922159399572,38.8947827240731,38.8675194699985,38.9173286251987,38.9048787828423,38.9123244966935,38.8987616906937,38.8987616906937,38.9274357918548,38.8787837374735,38.9496847404464,38.9274357918548,38.9548153114553,38.9123244966935,38.9543732722424,38.8987616906937,38.9123244966935,38.9123244966935,38.8972990459879,38.9123244966935,38.8972990459879,38.9123244966935,38.9123244966935,38.9002618332152,38.9140909939549,38.8920853941184,38.9048787828423,38.9142779998034,38.9013071245931,38.8935304495182,38.9123244966935,38.8972990459879,38.9138938195312,38.9543732722424,38.9138938195312,38.9543732722424,38.8972990459879,38.9138938195312,38.9543732722424,38.9138938195312,38.9543732722424,38.9138938195312,38.9543732722424,38.9138938195312,38.9138938195312,38.9543732722424,38.9138938195312,38.89946796557,38.9025259356559,38.9543732722424,38.9543732722424,38.9138938195312,38.9138938195312,38.9543732722424,38.9543732722424,38.89946796557,38.9173286251987,38.9108864624835,38.9123244966935,38.9123244966935,38.9274357918548,38.8969781468093,38.9123244966935,38.9123244966935,38.9123244966935,38.8969781468093,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.8596570987135,38.8956168421101,38.9123244966935,38.9173286251987,38.9548153114553,38.9179768530971,38.8787837374735,38.9123244966935,38.9073984539871,38.8451625626788,38.9543732722424,38.9123244966935,38.9123244966935,38.9334379227543,38.8451625626788,38.8451625626788,38.9179768530971,38.9172327657757,38.9176468207859,38.9059616936887,38.8280298872414,38.9179768530971,38.8612799858582,38.9365820549103,38.8969781468093,38.9123244966935,38.8789687804984,38.8451625626788,38.8987616906937,38.8787837374735,38.9274357918548,38.9274357918548,38.8451625626788,38.9423807789324,38.9393211694272,38.8787837374735,38.8787837374735,38.9610131375442,38.8596570987135,38.8787837374735,38.8789687804984,38.8596570987135,38.9025284756572,38.8972990459879,38.8897716239952,38.8897509317986,38.8451625626788,38.8451625626788,38.9123244966935,38.8789687804984,38.8451625626788,38.8787837374735,38.8956168421101,38.9334379227543,38.90020154202,38.9191832287402,38.9108921361843,38.9278031698184,38.8789687804984,38.8789687804984,38.9365820549103,38.8789687804984,38.9610131375442,38.9274357918548,38.9123244966935,38.9138938195312,38.9274357918548,38.9274357918548,38.9496847404464,38.8787837374735,38.8787837374735,38.8787837374735,38.9123244966935,38.8987616906937,38.9123244966935,38.9190519066355,38.9140909939549,38.931152542012,38.9407226395426,38.9173286251987,38.9123244966935,38.9173286251987,38.8637419949753,38.8972990459879,38.8972990459879,38.8987616906937,38.9173286251987,38.88596760224,38.8972990459879,38.8987616906937,38.8563332677474,38.9123244966935,38.9274357918548,38.9123244966935,38.8767521271504,38.8954877530972,38.8920853941184,38.910474300986,38.9123244966935,38.9123244966935,38.9274357918548,38.9173286251987,38.9173286251987,38.9467567951599,38.8463155610549,38.8920895186923,38.9123244966935,38.9173286251987,38.9123244966935,38.9123244966935,38.9123244966935,38.9031299850178,38.9048787828423,38.9274357918548,38.894038921127,38.9123244966935,38.9123244966935,38.9232372173398,38.9123244966935,38.9123244966935,38.9173286251987,38.9274357918548,38.9123244966935,38.9123244966935,38.8928010048644,38.8948976709535,38.8920977009229,38.8969781468093,38.9123244966935,38.9274357918548,38.8873388188635,38.9176468207859,38.9123244966935,38.9274357918548,38.9179768530971,38.9048787828423,38.8969781468093,38.9274357918548,38.9123244966935,38.9371209645819,38.8798055571672,38.8787837374735,38.9423807789324,38.9123244966935,38.9274357918548,38.9274357918548,38.9274357918548,38.9138938195312,38.9543732722424,38.8972990459879,38.9138938195312,38.9138938195312,38.9138938195312,38.9543732722424,38.9138938195312,38.8972990459879,38.8972990459879,38.8972990459879,38.9138938195312,38.8956168421101,38.8789687804984,38.8969781468093,38.8787837374735,38.8789687804984,38.9123244966935,38.9123244966935,38.9123244966935,38.8596570987135,38.8596570987135,38.8787837374735,38.8764808713658,38.8787837374735,38.9179768530971,38.8451625626788,38.8451625626788,38.9380302729804,38.9123244966935,38.9179768530971,38.9179768530971,38.9088970908615,38.8932990791349,38.8596570987135,38.9380302729804,38.9248909438896,38.8789687804984,38.8612799858582,38.89946796557,38.9380302729804,38.8787837374735,38.8787837374735,38.8787837374735,38.8787837374735,38.9380302729804,38.8969781468093,38.8975384697838,38.9054987176507,38.8787837374735,38.8897509317986,38.89946796557,38.9123244966935,38.8956168421101,38.8798055571672,38.9123244966935,38.964166785095,38.9176468207859,38.8969781468093,38.8969781468093,38.9123244966935,38.8787837374735,38.8787837374735,38.8787837374735,38.9048787828423,38.8787837374735,38.8787837374735,38.9176468207859,38.8315865244996,38.9123244966935,38.9123244966935,38.9123244966935,38.8956168421101,38.8987616906937,38.9123244966935,38.9274357918548,38.9274357918548,38.9123244966935,38.9274357918548,38.8972990459879,38.8987616906937,38.8987616906937,38.9041678260337,38.9258149304166,38.9181060363312,38.9258149304166,38.9181105671157,38.9073984539871,38.9174665041885,38.9181105671157,38.9191832287402,38.9547025036875,38.9056459348207,38.9181060363312,38.8951330487548,38.8987616906937,38.8956168421101,38.8956168421101,38.8532973452793,38.9172327657757,38.9496847404464,38.8987616906937,38.9423807789324,38.8951330487548,38.8987616906937,38.9050231071001,38.8734635996299,38.8734635996299,38.9548153114553,38.8798055571672,38.9423807789324,38.9172327657757,38.8956168421101,38.8956168421101,38.9053614777588,38.8451625626788,38.9548153114553,38.9088970908615,38.8956168421101,38.8787837374735,38.8787837374735,38.8451625626788,38.8451625626788,38.8956168421101,38.8987616906937,38.8787837374735,38.8451625626788,38.9088970908615,38.8789687804984,38.8969781468093,38.9059616936887,38.8972990459879,38.9138938195312,38.9138938195312,38.8798055571672,38.9548153114553,38.9543732722424,38.8975384697838,38.9123244966935,38.8972990459879,38.9123244966935,38.8987616906937,38.9123244966935,38.8956168421101,38.9123244966935,38.8969781468093,38.8969781468093,38.9173286251987,38.9496847404464,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.8951330487548,38.9123244966935,38.9543732722424,38.9123244966935,38.88596760224,38.9543732722424,38.8969781468093,38.8972990459879,38.9274357918548,38.8987616906937,38.8972990459879,38.9123244966935,38.8532973452793,38.9088970908615,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.9059616936887,38.9316345061203,38.9543732722424,38.9123244966935,38.8972990459879,38.8790892087115,38.8248078768303,38.8798055571672,38.9274357918548,38.8987616906937,38.9123244966935,38.8972990459879,38.8987616906937,38.9543732722424,38.9274357918548,38.9123244966935,38.8956168421101,38.9274357918548,38.8987616906937,38.8956168421101,38.9011982293062,38.8626344047587,38.8960184410832,38.8940815074467,38.9164035863188,38.9129690021693,38.9543732722424,38.9123244966935,38.8987138018504,38.86108053099,38.9409803896578,38.9828086699289,38.8555865136976,38.9191851784289,38.9191848308643,38.8784712129186,38.8860371000795,38.9318710482793,38.9123244966935,38.9274357918548,38.9274357918548,38.8956168421101,38.8552580233508,38.9123244966935,38.9123244966935,38.916997788863,38.9123244966935,38.902189199675,38.8956168421101,38.9173286251987,38.9496847404464,38.9123244966935,38.9846693816554,38.9059616936887,38.9059616936887,38.9193632845612,38.9274357918548,38.9123244966935,38.9274357918548,38.8956168421101,38.9123244966935,38.9123244966935,38.9073984539871,38.9172327657757,38.9612590606149,38.9219902665064,38.8969781468093,38.9123244966935,38.9548153114553,38.9123244966935,38.9123244966935,38.9496847404464,38.9123244966935,38.9123244966935,38.8987616906937,38.9172327657757,38.8969781468093,38.88596760224,38.8932997824541,38.8920780874069,38.9172327657757,38.8972990459879,38.8972990459879,38.8939351962959,38.9048787828423,38.9199923108837,38.9123244966935,38.9138938195312,38.8956168421101,38.9123244966935,38.9123244966935,38.9274357918548,38.9123244966935,38.8969781468093,38.89946796557,38.9173286251987,38.9088970908615,38.8451625626788,38.8789687804984,38.9123244966935,38.8787837374735,38.8787837374735,38.8506842992464,38.8787837374735,38.922291710748,38.8451625626788,38.9048787828423,38.8956168421101,38.8451625626788,38.8675194699985,38.9025250732631,38.8956168421101,38.8972990459879,38.9543732722424,38.9176468207859,38.8787837374735,38.89946796557,38.8787837374735,38.9123244966935,38.9050231071001,38.8734635996299,38.8451625626788,38.8789687804984,38.8787837374735,38.8798055571672,38.8890485381077,38.9454963230659,38.9051766284038,38.9123244966935,38.9123244966935,38.9123244966935,38.8987616906937,38.9123244966935,38.9123244966935,38.9235294962134,38.8623686329774,38.9123244966935,38.8969781468093,38.9123244966935,38.8987616906937,38.9123244966935,38.88596760224,38.8956168421101,38.9543732722424,38.88596760224,38.8956168421101,38.8798055571672,38.9002078830843,38.9274357918548,38.9274357918548,38.9048787828423,38.9048787828423,38.916997788863,38.9088970908615,38.9123244966935,38.8951330487548,38.9050231071001,38.9123244966935,38.9138938195312,38.8956168421101,38.8972990459879,38.8972990459879,38.8814911968901,38.8814911968901,38.9053614777588,38.9048787828423,38.8532973452793,38.9048787828423,38.8623686329774,38.8734635996299,38.9274357918548,38.8987616906937,38.8767521271504,38.9323962317397,38.8987616906937,38.9582165980458,38.9543732722424,38.9002078830843,38.9123244966935,38.9048787828423,38.9496847404464,38.9172327657757,38.9123244966935,38.9138938195312,38.9274357918548,38.8987616906937,38.8987616906937,38.9138938195312,38.9235294962134,38.9612590606149,38.8532973452793,38.8798055571672,38.8637419949753,38.9172327657757,38.8987616906937,38.9560332761835,38.8623686329774,38.9002078830843,38.9053614777588,38.9123244966935,38.8798055571672,38.9172327657757,38.9274357918548,38.9172327657757,38.9048787828423,38.9138938195312,38.9138938195312,38.9524071341696,38.8969781468093,38.9123244966935,38.9543732722424,38.8969781468093,38.9138938195312,38.8969781468093,38.8987616906937,38.9138938195312,38.9123244966935,38.9543732722424,38.9274357918548,38.9123244966935,38.9138938195312,38.8995562630189,38.8876149022161,38.916997788863,38.9274357918548,38.8920977009229,38.9037396225627,38.8972990459879,38.9274357918548,38.9123244966935,38.9274357918548,38.8972990459879,38.9274357918548,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.9548153114553,38.9123244966935,38.8787837374735,38.8969781468093,38.8987616906937,38.9123244966935,38.9176468207859,38.8787837374735,38.8787837374735,38.8451625626788,38.9172327657757,38.9048787828423,38.8787837374735,38.9179768530971,38.8451625626788,38.9021670467759,38.910474300986,38.8897716239952,38.9073984539871,38.9123244966935,38.8789687804984,38.9543732722424,38.9123244966935,38.8789687804984,38.922291710748,38.8787837374735,38.8798055571672,38.8920895186923,38.8734635996299,38.9118692661798,38.9258149304166,38.9331093560753,38.9240405633603,38.9143789989802,38.9123244966935,38.8972990459879,38.910474300986,38.9048787828423,38.8875662818655,38.88596760224,38.9048787828423,38.8798055571672,38.8920853941184,38.9219902665064,38.9048787828423,38.9048787828423,38.8920895186923,38.8969781468093,38.9123244966935,38.8972990459879,38.8672656504225,38.9146446857759,38.8572758574131,38.8707444977607,38.9123244966935,38.9123244966935,38.8623686329774,38.9172327657757,38.9423807789324,38.9088970908615,38.9172327657757,38.9123244966935,38.8972990459879,38.9123244966935,38.8204216527652,38.9039666915555,38.9255689110244,38.9174721697322,38.9274357918548,38.9260087608615,38.9064075377374,38.8610106571408,38.9099131600298,38.9012552131414,38.9123244966935,38.9073984539871,38.9496847404464,38.8920853941184,38.8623686329774,38.9053614777588,38.9048787828423,38.88596760224,38.8798055571672,38.9173286251987,38.8987616906937,38.9274357918548,38.8972990459879,38.9274357918548,38.9173286251987,38.8956168421101,38.9123244966935,38.9496847404464,38.8897716239952,38.8972990459879,38.9123244966935,38.9138938195312,38.8956168421101,38.8972990459879,38.9123244966935,38.9423807789324,38.9088970908615,38.9048787828423,38.9173286251987,38.9423807789324,38.9048787828423,38.9050231071001,38.9219902665064,38.8972990459879,38.9548153114553,38.8920853941184,38.9235294962134,38.8798055571672,38.88596760224,38.9274357918548,38.9560332761835,38.9129690021693,38.9331599527531,38.9172327657757,38.9235294962134,38.8920895186923,38.9423807789324,38.9548153114553,38.9123244966935,38.9247654209341,38.9080385458658,38.8553185883958,38.8956168421101,38.9543732722424,38.8987616906937,38.9123244966935,38.9235294962134,38.9123244966935,38.9123244966935,38.872982674656,38.917000083334,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.8972990459879,38.8972990459879,38.8956168421101,38.8787837374735,38.9423807789324,38.8787837374735,38.8787837374735,38.8451625626788,38.8787837374735,38.8787837374735,38.8987616906937,38.9088970908615,38.9496847404464,38.8956168421101,38.8956168421101,38.9088970908615,38.8987616906937,38.8951330487548,38.8798055571672,38.8787837374735,38.8787837374735,38.8787837374735,38.8787837374735,38.8451625626788,38.8787837374735,38.8789687804984,38.8956168421101,38.9563932192156,38.8750638397047,38.9073984539871,38.9123244966935,38.9075108364194,38.912137304925,38.9145128552378,38.9085687367176,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.9274357918548,38.9138938195312,38.9138938195312,38.9123244966935,38.9543732722424,38.8798055571672,38.8987616906937,38.8969781468093,38.9123244966935,38.8987616906937,38.9274357918548,38.9123244966935,38.9543732722424,38.8920895186923,38.8623686329774,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.8956168421101,38.9286873734321,38.8897499259629,38.9548153114553,38.8987616906937,38.9123244966935,38.9274357918548,38.9123244966935,38.9088970908615,38.8897716239952,38.9173286251987,38.9138938195312,38.8451625626788,38.9181073001993,38.9534955858599,38.9048787828423,38.88596760224,38.9496847404464,38.8897509317986,38.9048787828423,38.89946796557,38.9002078830843,38.8787837374735,38.8787837374735,38.9274357918548,38.8789687804984,38.8787837374735,38.9179768530971,38.9123244966935,38.9179768530971,38.8969781468093,38.89946796557,38.8787837374735,38.9144382701232,38.8897509317986,38.8789687804984,38.8596570987135,38.9380302729804,38.8787837374735,38.8451625626788,38.8612799858582,38.8787837374735,38.8612799858582,38.8787837374735,38.8596570987135,38.89946796557,38.8787837374735,38.8787837374735,38.8612799858582,38.8920895186923,38.8897716239952,38.9123244966935,38.9123244966935,38.9138938195312,38.9191753698462,38.9123244966935,38.88596760224,38.8875662818655,38.9048787828423,38.8897499259629,38.9048787828423,38.9123244966935,38.9059616936887,38.89946796557,38.8972990459879,38.9059616936887,38.89946796557,38.8972990459879,38.8972990459879,38.9138938195312,38.8972990459879,38.9610131375442,38.9534955858599,38.8972990459879,38.9138938195312,38.9138938195312,38.89946796557,38.8643495056954,38.9543732722424,38.8643495056954,38.89946796557,38.9479092542275,38.89946796557,38.9138938195312,38.9138938195312,38.8972990459879,38.9073984539871,38.931152542012,38.9056459348207,38.9191832287402,38.9028992876415,38.9260087608615,38.8814911968901,38.8612226931806,38.9191848308643,38.8972990459879,38.8972990459879,38.8972990459879,38.9138938195312,38.9138938195312,38.9543732722424,38.9059616936887,38.9543732722424,38.9543732722424,38.9543732722424,38.9543732722424,38.9547009578591,38.9059616936887,38.8886777204475,38.9138938195312,38.9543732722424,38.9138938195312,38.8972990459879,38.9138938195312,38.9138938195312,38.9138938195312,38.9543732722424,38.856865807933,38.9138938195312,38.8972990459879,38.9138938195312,38.9543732722424,38.9138938195312,38.8972990459879,38.9059616936887,38.9059616936887,38.9138938195312,38.8947884681393,38.9138938195312,38.91572541709,38.8787837374735,38.8612799858582,38.9088970908615,38.8787837374735,38.8787837374735,38.9380302729804,38.8798055571672,38.8612799858582,38.9179768530971,38.8451625626788,38.8789687804984,38.8787837374735,38.8789687804984,38.89946796557,38.8972990459879,38.9543732722424,38.9123244966935,38.9274357918548,38.9138938195312,38.9123244966935,38.8969781468093,38.8969781468093,38.9548153114553,38.8920102836904,38.8993926677757,38.8787837374735,38.9548153114553,38.8596570987135,38.9173286251987,38.8787837374735,38.8787837374735,38.8787837374735,38.9423807789324,38.8291091789139,38.9537405540889,38.9691414610302,38.9335961274498,38.9597528280657,38.8987032574761,38.9393211694272,38.8956168421101,38.9059616936887,38.9138938195312,38.9191832287402,38.9123244966935,38.8619228886077,38.8969781468093,38.9274357918548,38.9123244966935,38.8969781468093,38.9123244966935,38.9194152766504,38.9235294962134,38.9123244966935,38.8920895186923,38.9002078830843,38.8798055571672,38.916997788863,38.9173286251987,38.8987616906937,38.8987616906937,38.9050231071001,38.922159399572,38.9053614777588,38.9048787828423,38.9274357918548,38.9123244966935,38.8875520434073,38.9273572130161,38.9123244966935,38.8697141084094,38.845873036657,38.9123244966935,38.9274357918548,38.9123244966935,38.9048787828423,38.9123244966935,38.9123244966935,38.88596760224,38.9025284756572,38.9123244966935,38.8969781468093,38.9123244966935,38.9025309490657,38.9025309490657,38.9105478958287,38.9123244966935,38.9013315174611,38.88596760224,38.8975384697838,38.9335264926605,38.9318178155833,38.9274357918548,38.9332169830372,38.9123244966935,38.88596760224,38.9274357918548,38.9274357918548,38.9060618656525,38.9274357918548,38.9123244966935,38.9274357918548,38.8787837374735,38.8787837374735,38.8612799858582,38.89946796557,38.89946796557,38.8787837374735,38.8764808713658,38.8787837374735,38.8956168421101,38.8624013073775,38.9044745362142,38.8987253579393,38.9560332761835,38.9123244966935,38.8956168421101,38.8956168421101,38.8767521271504,38.9059616936887,38.9365820549103,38.9535090537738,38.9606627440782,38.9440418463209,38.8787837374735,38.89946796557,38.8972990459879,38.8787837374735,38.8612799858582,38.9612590606149,38.9543732722424,38.89946796557,38.8787837374735,38.8787837374735,38.9365820549103,38.8787837374735,38.8787837374735,38.8787837374735,38.8787837374735,38.8451625626788,38.8897509317986,38.8734635996299,38.9365820549103,38.9274357918548,38.8451625626788,38.89946796557,38.91572541709,38.9365820549103,38.8787837374735,38.8987616906937,38.9610131375442,38.9274357918548,38.8987616906937,38.9123244966935,38.8969781468093,38.8972990459879,38.9123244966935,38.8969781468093,38.9176468207859,38.8451625626788,38.9176468207859,38.9176468207859,38.8787837374735,38.9207909968505,38.8623686329774,38.8787837374735,38.8612799858582,38.8596570987135,38.8787837374735,38.8787837374735,38.8787837374735,38.8789687804984,38.8451625626788,38.9123244966935,38.8956168421101,38.8532973452793,38.8956168421101,38.9423807789324,38.8623686329774,38.8798055571672,38.9172327657757,38.8987616906937,38.8787837374735,38.8787837374735,38.9050231071001,38.8956168421101,38.8798055571672,38.8987616906937,38.8798055571672,38.9088970908615,38.8789687804984,38.8787837374735,38.8789687804984,38.8451625626788,38.9380302729804,38.8787837374735,38.9334379227543,38.8897509317986,38.8787837374735,38.9380302729804,38.8972990459879,38.9274357918548,38.9123244966935,38.9123244966935,38.9274357918548,38.9274357918548,38.9123244966935,38.8956168421101,38.9011982293062,38.9179768530971,38.9113130061565,38.9048787828423,38.8897716239952,38.8897716239952,38.8734635996299,38.8697141084094,38.9123244966935,38.8987616906937,38.8987616906937,38.9123244966935,38.9123244966935,38.916997788863,38.9073984539871,38.9050231071001,38.9274357918548,38.9048787828423,38.9053614777588,38.9053614777588,38.8816287590664,38.8869250682168,38.9059616936887,38.9123244966935,38.8972990459879,38.9123244966935,38.9286873734321,38.8897716239952,38.8956168421101,38.9123244966935,38.9123244966935,38.9123244966935,38.8956168421101,38.933113202261,38.8787837374735,38.8787837374735,38.9172327657757,38.8787837374735,38.9056459348207,38.8798055571672,38.8532973452793,38.9048787828423,38.9123244966935,38.9123244966935,38.8973451529715,38.9048787828423,38.8969781468093,38.8956168421101,38.9274357918548,38.9123244966935,38.9123244966935,38.922291710748,38.8451625626788,38.922291710748,38.9423807789324,38.8787837374735,38.89946796557,38.8787837374735,38.9274357918548,38.9138938195312,38.8787837374735,38.8787837374735,38.8506842992464,38.8897509317986,38.8798055571672,38.9123244966935,38.8451625626788,38.9179768530971,38.8787837374735,38.8787837374735,38.9123244966935,38.9123244966935,38.8972990459879,38.9274357918548,38.9123244966935,38.9123244966935,38.9123244966935,38.8798055571672,38.8623686329774,38.9543732722424,38.8798055571672,38.916997788863,38.9123244966935,38.8987616906937,38.9123244966935,38.9138938195312,38.9274357918548,38.9123244966935,38.9123244966935,38.8956168421101,38.8956168421101,38.9123244966935,38.9123244966935,38.8987616906937,38.8987616906937,38.9123244966935,38.8969781468093,38.9123244966935,38.9419499314901,38.9088970908615,38.9123244966935,38.9123244966935,38.9048787828423,38.8798055571672,38.928801771091,38.9496847404464,38.8798055571672,38.9172327657757,38.8951330487548,38.9560332761835,38.9168445432545,38.9218449851623,38.9260087608615,38.8913447138952,38.9059616936887,38.9191848308643,38.9123244966935,38.8956168421101,38.8969781468093,38.9123244966935,38.9173286251987,38.9059616936887,38.9123244966935,38.8987616906937,38.9423807789324,38.9088970908615,38.9123244966935,38.9025284756572,38.9123244966935,38.8875662818655,38.8956168421101,38.8972990459879,38.9496847404464,38.9140911316032,38.9048787828423,38.9088970908615,38.9123244966935,38.9612590606149,38.9048787828423,38.9048787828423,38.8969781468093,38.9073984539871,38.9088970908615,38.9612590606149,38.922159399572,38.9274357918548,38.9123244966935,38.9543732722424,38.9123244966935,38.9123244966935,38.8956168421101,38.9274357918548,38.9172327657757,38.8596570987135,38.8787837374735,38.8596570987135,38.9380302729804,38.8787837374735,38.8787837374735,38.8612799858582,38.8787837374735,38.8787837374735,38.9401374356537,38.9380302729804,38.9179768530971,38.9138938195312,38.8787837374735,38.8451625626788,38.8451625626788,38.8612799858582,38.8787837374735,38.8787837374735,38.89946796557,38.8920853941184,38.9176468207859,38.9548153114553,38.9048787828423,38.8787837374735,38.8897509317986,38.8596570987135,38.8789687804984,38.8451625626788,38.8623686329774,38.8897509317986,38.9365820549103,38.8787837374735,38.8789687804984,38.9123244966935,38.9393211694272,38.8787837374735,38.8451625626788,38.9123244966935,38.8451625626788,38.9334379227543,38.8787837374735,38.8787837374735,38.9048787828423,38.8787837374735,38.8789687804984,38.8612799858582,38.89946796557,38.8451625626788,38.8787837374735,38.8897509317986,38.8787837374735,38.9179768530971,38.8787837374735,38.89946796557,38.8596570987135,38.9393211694272,38.8787837374735,38.9048787828423,38.8451625626788,38.8956168421101,38.9048787828423,38.9274357918548,38.9173286251987,38.9053614777588,38.8987616906937,38.9123244966935,38.8969781468093,38.9559566648156,38.8956168421101,38.9612590606149,38.91572541709,38.8972990459879,38.8972990459879,38.9189876728418,38.8987616906937,38.9543732722424,38.9123244966935,38.8897716239952,38.9123244966935,38.9123244966935,38.8734635996299,38.9123244966935,38.8987616906937,38.9138938195312,38.8972990459879,38.9173286251987,38.9480855991609,38.9191832287402,38.826049702556,38.9278031698184,38.8787837374735,38.8956168421101,38.8643495056954,38.8789687804984,38.89946796557,38.9496847404464,38.9179768530971,38.8787837374735,38.8789687804984,38.8789687804984,38.8987616906937,38.8451625626788,38.8787837374735,38.9393211694272,38.9179768530971,38.9123244966935,38.8596570987135,38.9423807789324,38.8787837374735,38.9176468207859,38.9172327657757,38.8787837374735,38.8787837374735,38.9176468207859,38.8451625626788,38.9176468207859,38.8787837374735,38.9401374356537,38.9548153114553,38.9546926895927,38.8951330487548,38.8787837374735,38.8972990459879,38.9123244966935,38.9123244966935,38.9531996222724,38.9138938195312,38.9088970908615,38.9496847404464,38.8789687804984,38.8920895186923,38.9355661715301,38.89946796557,38.9274357918548,38.8956168421101,38.9123244966935,38.9173286251987,38.8734635996299,38.9423807789324,38.8897509317986,38.8787837374735,38.8920853941184,38.8451625626788,38.8787837374735,38.9088970908615,38.8596570987135,38.8451625626788,38.8987616906937,38.9393211694272,38.9173286251987,38.9123244966935,38.9179768530971,38.8787837374735,38.9393211694272,38.9123244966935,38.9123244966935,38.8798055571672,38.9138938195312,38.8787837374735,38.9123244966935,38.8789687804984,38.89946796557,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.9534955858599,38.8897509317986,38.9123244966935,38.9274357918548,38.9123244966935,38.9123244966935,38.8987616906937,38.8972990459879,38.9050231071001,38.9123244966935,38.8787837374735,38.8987616906937,38.8969781468093,38.9123244966935,38.9274357918548,38.8623686329774,38.8532973452793,38.9088970908615,38.8956168421101,38.8637419949753,38.9172327657757,38.9274357918548,38.9138938195312,38.9496847404464,38.9059616936887,38.9274357918548,38.9123244966935,38.9050231071001,38.8619228886077,38.9138938195312,38.9098635464516,38.8734635996299,38.9496847404464,38.9123244966935,38.9138938195312,38.9123244966935,38.8969781468093,38.9123244966935,38.8956168421101,38.8798055571672,38.88596760224,38.9123244966935,38.8972990459879,38.9123244966935,38.8987616906937,38.9123244966935,38.9123244966935,38.9123244966935,38.9002078830843,38.88596760224,38.91572541709,38.9235294962134,38.8987616906937,38.9274357918548,38.9274357918548,38.8987616906937,38.9123244966935,38.9172327657757,38.9496847404464,38.9123244966935,38.9123244966935,38.9123244966935,38.8972990459879,38.9123244966935,38.9123244966935,38.9274357918548,38.9123244966935,38.8798055571672,38.9123244966935,38.9274357918548,38.8956168421101,38.9138938195312,38.9496847404464,38.897535283085,38.9258149304166,38.9025259356559,38.9015896745712,38.9123244966935,38.9274357918548,38.9027429445382,38.8734635996299,38.900330710376,38.9025284756572,38.9053614777588,38.9548153114553,38.9123244966935,38.8987616906937,38.8987616906937,38.9123244966935,38.9123244966935,38.88596760224,38.9258149304166,38.9048787828423,38.9525347990541,38.8798055571672,38.9088970908615,38.9612590606149,38.910474300986,38.9025284756572,38.9543732722424,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.9274357918548,38.9173286251987,38.8976865064961,38.8859971233477,38.9111294594466,38.9123244966935,38.9123244966935,38.9123244966935,38.8956168421101,38.9123244966935,38.8920895186923,38.9123244966935,38.9123244966935,38.8897716239952,38.9088970908615,38.9326069843714,38.9200594464511,38.9218324203302,38.8782428317405,38.8448654816361,38.9036582004757,38.9059616936887,38.9332169830372,38.9496847404464,38.8734635996299,38.9274357918548,38.9123244966935,38.9274357918548,38.9123244966935,38.9172327657757,38.9123244966935,38.8897716239952,38.88488767295,38.8592305969715,38.9123244966935,38.9123244966935,38.9543732722424,38.8956168421101,38.8951330487548,38.9123244966935,38.9543732722424,38.8987616906937,38.9123244966935,38.9252684695898,38.9352099068317,38.8972990459879,38.8987616906937,38.9123244966935,38.8897716239952,38.9138938195312,38.9274357918548,38.8987616906937,38.8972990459879,38.951205827418,38.9543732722424,38.8969781468093,38.8623686329774,38.9048787828423,38.8920895186923,38.9138938195312,38.8956168421101,38.9274357918548,38.9138938195312,38.8972990459879,38.8969781468093,38.9123244966935,38.9172327657757,38.8928010048644,38.931152542012,38.8972990459879,38.9312862167929,38.9123244966935,38.9268408462047,38.9255015462965,38.912137304925,38.9520834184756,38.9098921730384,38.9274357918548,38.9138938195312,38.9274357918548,38.9123244966935,38.9048787828423,38.9123244966935,38.9274357918548,38.9123244966935,38.88596760224,38.9274357918548,38.9274357918548,38.9612590606149,38.9123244966935,38.9138938195312,38.8969781468093,38.8875662818655,38.9048787828423,38.9059616936887,38.9016470712807,38.9048787828423,38.9048787828423,38.8798055571672,38.9274357918548,38.9274357918548,38.9138938195312,38.9612590606149,38.9123244966935,38.9274357918548,38.910474300986,38.8953971308866,38.8969781468093,38.9496847404464,38.9543732722424,38.8976865064961,38.9546982353771,38.8822733680916,38.8956168421101,38.9274357918548,38.8987616906937,38.8956168421101,38.9138938195312,38.9543732722424,38.9123244966935,38.9274357918548,38.9274357918548,38.9123244966935,38.9123244966935,38.9115008451953,38.9257657333469,38.9059616936887,38.9123244966935,38.8798055571672,38.8987616906937,38.8969781468093,38.9381137697736,38.901254408509,38.8816743699576,38.9048787828423,38.9469492446163,38.922159399572,38.9028992876415,38.9181060363312,38.9123244966935,38.9138938195312,38.8958466788634,38.9123244966935,38.9123244966935,38.9218324203302,38.8968777487314,38.8928243798261,38.9661375065645,38.9310008254475,38.8928010048644,38.8951330487548,38.8987616906937,38.9361696070496,38.9274357918548,38.8956168421101,38.9543732722424,38.9274357918548,38.8987616906937,38.9543732722424,38.9138938195312,38.8987616906937,38.9123244966935,38.9274357918548,38.8969781468093,38.9179768530971,38.9123244966935,38.9123244966935,38.9123244966935,38.9274357918548,38.8987616906937,38.9300943915617,38.8987616906937,38.9123244966935,38.9123244966935,38.9051766284038,38.887596530767,38.8987616906937,38.9123244966935,38.9219902665064,38.8506842992464,38.8787837374735,38.8787837374735,38.8787837374735,38.9025284756572,38.8451625626788,38.8787837374735,38.8787837374735,38.8920853941184,38.8787837374735,38.9173286251987,38.8897499259629,38.9219902665064,38.9138938195312,38.8956168421101,38.9274357918548,38.9274357918548,38.8987616906937,38.8956168421101,38.9380302729804,38.8451625626788,38.8787837374735,38.9187119948191,38.8975384697838,38.8787837374735,38.8789687804984,38.8789687804984,38.8451625626788,38.922291710748,38.8787837374735,38.9380302729804,38.8787837374735,38.8596570987135,38.9173286251987,38.9123244966935,38.8969781468093,38.9048787828423,38.9123244966935,38.9025309490657,38.9031481155808,38.9123244966935,38.9123244966935,38.9173286251987,38.9274357918548,38.9606627440782,38.9723269260149,38.9123244966935,38.9736060194151,38.9173286251987,38.9542466987947,38.8969781468093,38.8637419949753,38.9123244966935,38.9274357918548,38.9123244966935,38.9123244966935,38.905014335098,38.9123244966935,38.9123244966935,38.86108053099,38.9274357918548,38.9235294962134,38.9123244966935,38.9123244966935,38.9274357918548,38.9173286251987,38.9235294962134,38.9164889640789,38.9286873734321,38.9415471901598,38.839160510681,38.9059616936887,38.8987616906937,38.9123244966935,38.9173286251987,38.8920895186923,38.9274357918548,38.91572541709,38.9138938195312,38.9123244966935,38.9048787828423,38.9423807789324,38.9088970908615,38.9423807789324,38.9046656259099,38.8903872565714,38.9025309490657,38.9053614777588,38.9274357918548,38.9050231071001,38.88596760224,38.9088970908615,38.9048787828423,38.9048787828423,38.8897716239952,38.9123244966935,38.8846290450412,38.8983478750035,38.9661375065645,38.9073984539871,38.8987616906937,38.9274357918548,38.8987616906937,38.8972990459879,38.9123244966935,38.9053614777588,38.9053614777588,38.8972990459879,38.9123244966935,38.8956168421101,38.9123244966935,38.9274357918548,38.9123244966935,38.9172327657757,38.9306616609702,38.9496847404464,38.9543732722424,38.9123244966935,38.8987616906937,38.8969781468093,38.8987616906937,38.8956168421101,38.8969781468093,38.8969781468093,38.9123244966935,38.8969781468093,38.8969781468093,38.9059616936887,38.9124935686494,38.9025284756572,38.9123244966935,38.9123244966935,38.8987616906937,38.8623686329774,38.9274357918548,38.9123244966935,38.9543732722424,38.9543732722424,38.9543732722424,38.8969781468093,38.8956168421101,38.9252322706925,38.9190519066355,38.8969781468093,38.8972990459879,38.8972990459879,38.9123244966935,38.9543732722424,38.9274357918548,38.9423807789324,38.9548153114553,38.8897716239952,38.9548153114553,38.8975384697838,38.8975384697838,38.8975384697838,38.9162613327615,38.8999591525087,38.8969781468093,38.9138938195312,38.9053614777588,38.9143789989802,38.9174665041885,38.9073984539871,38.9428640635375,38.8859812387595,38.9056459348207,38.8607186578606,38.9155712727181,38.9235294962134,38.931152542012,38.9170022241396,38.9065583355158,38.931152542012,38.906553618307,38.8814911968901,38.8951330487548,38.9073984539871,38.9028992876415,38.9028992876415,38.9028992876415,38.8759580923579,38.9073984539871,38.9088970908615,38.8786640571813,38.9260087608615,38.942027680433,38.8814911968901,38.9363285015409,38.9096346591638,38.9177398062158,38.9073984539871,38.8947493816437,38.880197747677,38.9028992876415,38.9073984539871,38.9260087608615,38.9073984539871,38.8836561337461,38.9073984539871,38.9073984539871,38.9025227612682,38.9073984539871,38.9123244966935,38.9123244966935,38.9123244966935,38.8734635996299,38.9073984539871,38.9496847404464,38.8734635996299,38.9274357918548,38.9524071341696,38.9612954897407,38.9496847404464,38.9235294962134,38.9123244966935,38.9286873734321,38.88596760224,38.9123244966935,38.9123244966935,38.8734635996299,38.9219902665064,38.9048787828423,38.8972990459879,38.8789687804984,38.8787837374735,38.9380302729804,38.8787837374735,38.8451625626788,38.9274357918548,38.8969781468093,38.9123244966935,38.9123244966935,38.8469203814646,38.9194152766504,38.8787837374735,38.8956168421101,38.8789687804984,38.9610131375442,38.9334379227543,38.9543732722424,38.922291710748,38.8951330487548,38.8956168421101,38.9543732722424,38.9338587791095,38.9048787828423,38.8637419949753,38.9048787828423,38.9123244966935,38.9048787828423,38.9123244966935,38.9123244966935,38.9548153114553,38.8956168421101,38.9274357918548,38.9543732722424,38.9123244966935,38.9543732722424,38.9172327657757,38.8688848550117,38.8872470675468,38.8956168421101,38.8972990459879,38.9342755467921,38.9123244966935,38.9138938195312,38.8987616906937,38.8969781468093,38.8956168421101,38.9274357918548,38.9123244966935,38.9123244966935,38.9274357918548,38.9286873734321,38.9059616936887,38.8972990459879,38.9123244966935,38.8972990459879,38.91989448671,38.9274357918548,38.9048787828423,38.9123244966935,38.9123244966935,38.9274357918548,38.8972990459879,38.9274357918548,38.9496847404464,38.9542466987947,38.9123244966935,38.9123244966935,38.8951330487548,38.8956168421101,38.9274357918548,38.9048787828423,38.8920853941184,38.8956168421101,38.8969781468093,38.9053614777588,38.9173286251987,38.9048787828423,38.9062323178312,38.9438070525282,38.881363278705,38.9173286251987,38.9088970908615,38.9219902665064,38.9123244966935,38.9123244966935,38.9123244966935,38.9048787828423,38.9123244966935,38.9138938195312,38.9123244966935,38.9048787828423,38.9123244966935,38.9548153114553,38.8637419949753,38.8623686329774,38.9274357918548,38.9542466987947,38.9123244966935,38.8987616906937,38.9543732722424,38.9123244966935,38.9176468207859,38.8787837374735,38.9173286251987,38.8951330487548,38.8875662818655,38.8920853941184,38.8951330487548,38.9053614777588,38.9088970908615,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.9612590606149,38.9219902665064,38.8798055571672,38.9302180955355,38.8987616906937,38.9274357918548,38.9548153114553,38.8969781468093,38.9138938195312,38.9050231071001,38.8798055571672,38.9173286251987,38.9543732722424,38.9048787828423,38.9496847404464,38.8920895186923,38.9048787828423,38.9123244966935,38.9548153114553,38.9138938195312,38.9048787828423,38.8956168421101,38.9123244966935,38.8972990459879,38.8987616906937,38.9123244966935,38.9123244966935,38.9543732722424,38.9274357918548,38.9123244966935,38.8956168421101,38.8532973452793,38.9274357918548,38.9174665041885,38.8999735676448,38.9123244966935,38.9274357918548,38.8956168421101,38.8969781468093,38.8956168421101,38.9316345061203,38.9350312338349,38.9496847404464,38.8474988744983,38.9065583355158,38.8978664655649,38.9496847404464,38.8897716239952,38.9123244966935,38.8798055571672,38.9173286251987,38.9496847404464,38.9138938195312,38.8920895186923,38.8734635996299,38.9543732722424,38.8987616906937,38.8798055571672,38.9073984539871,38.8897716239952,38.8987616906937,38.9274357918548,38.9548153114553,38.9097917836327,38.931152542012,38.9246483920729,38.8637419949753,38.8972990459879,38.9723455878834,38.8956168421101,38.8972990459879,38.9138938195312,38.8956168421101,38.9123244966935,38.9423807789324,38.9169295565417,38.9543732722424,38.9172327657757,38.8451625626788,38.9123244966935,38.9123244966935,38.8969781468093,38.8920895186923,38.9088970908615,38.9219902665064,38.9025284756572,38.9053614777588,38.9637709581172,38.935084289784,38.9040003063175,38.8976865064961,38.9543732722424,38.9244394628236,38.9123244966935,38.8987616906937,38.9274357918548,38.9123244966935,38.9274357918548,38.9123244966935,38.8920853941184,38.8969781468093,38.9153792718149,38.849745676869,38.9650593212956,38.9059616936887,38.8963857844968,38.9012552131414,38.9123244966935,38.9123244966935,38.8956168421101,38.8956168421101,38.9138938195312,38.9138938195312,38.9123244966935,38.9123244966935,38.9123244966935,38.9138938195312,38.9123244966935,38.9173286251987,38.9123244966935,38.8951330487548,38.8798055571672,38.922159399572,38.9274357918548,38.8969781468093,38.9274357918548,38.8846290450412,38.8935857786506,38.8920895186923,38.8987616906937,38.9173286251987,38.9123244966935,38.8921011457115,38.89946796557,38.8787837374735,38.8972990459879,38.8956168421101,38.8969781468093,38.8956168421101,38.9138938195312,38.9274357918548,38.9214538766889,38.9176468207859,38.9179768530971,38.8451625626788,38.9087731521528,38.9548153114553,38.8787837374735,38.8787837374735,38.9380302729804,38.8612799858582,38.8787837374735,38.9380302729804,38.8506842992464,38.89946796557,38.922291710748,38.9334379227543,38.9334379227543,38.8572784439471,38.9534955858599,38.9179768530971,38.8787837374735,38.9423807789324,38.89946796557,38.9123244966935,38.8787837374735,38.8789687804984,38.9365820549103,38.9173286251987,38.8969781468093,38.8972990459879,38.8787837374735,38.9179768530971,38.89946796557,38.9534955858599,38.89946796557,38.8787837374735,38.9237187199172,38.8787837374735,38.8451625626788,38.9610131375442,38.922291710748,38.8798055571672,38.9172327657757,38.8956168421101,38.9525347990541,38.9274357918548,38.8787837374735,38.922291710748,38.9274357918548,38.8787837374735,38.8734635996299,38.8787837374735,38.89946796557,38.8787837374735,38.9380302729804,38.9334379227543,38.8789687804984,38.8787837374735,38.922291710748,38.831751608529,38.8969781468093,38.9123244966935,38.8969781468093,38.9274357918548,38.8969781468093,38.9123244966935,38.9274357918548,38.9123244966935,38.88596760224,38.9123244966935,38.9274357918548,38.9114481665332,38.9123244966935,38.9123244966935,38.916997788863,38.9123244966935,38.9123244966935,38.9274357918548,38.9048787828423,38.9537405540889,38.901023921755,38.8934370207146,38.9274357918548,38.9123244966935,38.9266459261708,38.9048787828423,38.9618406756534,38.8578946757479,38.9123244966935,38.9172327657757,38.88596760224,38.9274357918548,38.8956168421101,38.9548153114553,38.9123244966935,38.9123244966935,38.9048787828423,38.8814911968901,38.9123244966935,38.9205880085796,38.9283923456795,38.8980980823446,38.9006185663252,38.9138938195312,38.9274357918548,38.9274357918548,38.9059616936887,38.9059616936887,38.9138938195312,38.9496847404464,38.9274357918548,38.8956168421101,38.9123244966935,38.9123244966935,38.9025284756572,38.8798055571672,38.9048787828423,38.9138938195312,38.8798055571672,38.8596570987135,38.9325341369399,38.9380302729804,38.8787837374735,38.9380302729804,38.9176468207859,38.9380302729804,38.8787837374735,38.9380302729804,38.8787837374735,38.89946796557,38.8764808713658,38.8787837374735,38.8789687804984,38.8787837374735,38.8451625626788,38.8798055571672,38.8602449881944,38.9261045255331,38.8972990459879,38.9274357918548,38.8969781468093,38.9496847404464,38.9274357918548,38.9274357918548,38.9121747975277,38.9121747975277,38.9123244966935,38.8734635996299,38.9123244966935,38.8972990459879,38.8920895186923,38.9274357918548,38.9138938195312,38.9423807789324,38.9025284756572,38.9274357918548,38.9496847404464,38.9548153114553,38.9048787828423,38.9543732722424,38.9123244966935,38.8787837374735,38.8787837374735,38.8787837374735,38.9176468207859,38.9123244966935,38.9123244966935,38.9274357918548,38.8969781468093,38.9123244966935,38.9173286251987,38.9176468207859,38.9176468207859,38.8451625626788,38.9274357918548,38.9123244966935,38.8956168421101,38.9560332761835,38.9543732722424,38.9270570732987,38.9059616936887,38.9123244966935,38.9274357918548,38.8972990459879,38.9123244966935,38.9059616936887,38.9021821771583,38.9059616936887,38.9138938195312,38.9123244966935,38.9123244966935,38.9138938195312,38.9059616936887,38.8837330471257,38.9285817699687,38.924755448085,38.9274357918548,38.9123244966935,38.9123244966935,38.9548153114553,38.8969781468093,38.88596760224,38.8814911968901,38.8991888504848,38.9190519066355,38.9197547187924,38.8920997357734,38.9123244966935,38.9123244966935,38.9123244966935,38.8789687804984,38.8596570987135,38.8451625626788,38.8451625626788,38.88596760224,38.9123244966935,38.8451625626788,38.8451625626788,38.89946796557,38.8933618610073,38.8787837374735,38.8612799858582,38.9123244966935,38.9123244966935,38.8451625626788,38.9179768530971,38.8451625626788,38.9534955858599,38.8787837374735,38.8787837374735,38.9002078830843,38.8596570987135,38.922291710748,38.8787837374735,38.8897509317986,38.8787837374735,38.8787837374735,38.8787837374735,38.8787837374735,38.9123244966935,38.9173286251987,38.9123244966935,38.8956168421101,38.9548153114553,38.9138938195312,38.8956168421101,38.9138938195312,38.9123244966935,38.8972990459879,38.8956168421101,38.8969781468093,38.9138938195312,38.9123244966935,38.9123244966935,38.9274357918548,38.9219902665064,38.9123244966935,38.9123244966935,38.9123244966935,38.9274357918548,38.9548153114553,38.9496847404464,38.8798055571672,38.8798055571672,38.9274357918548,38.8969781468093,38.9548153114553,38.8956168421101,38.9274357918548,38.8975384697838,38.9059616936887,38.9059616936887,38.9300943915617,38.9300943915617,38.9138938195312,38.9173286251987,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.931152542012,38.9065583355158,38.9274357918548,38.9123244966935,38.9219902665064,38.9274357918548,38.8956168421101,38.9025284756572,38.8798055571672,38.8532973452793,38.8623686329774,38.9548153114553,38.9123244966935,38.9123244966935,38.8956168421101,38.9274357918548,38.8987616906937,38.9175572235388,38.9025259356559,38.9274357918548,38.9548153114553,38.9123244966935,38.9123244966935,38.9025284756572,38.9073984539871,38.8987616906937,38.9543732722424,38.9543732722424,38.9138938195312,38.9138938195312,38.9123244966935,38.8798055571672,38.9274357918548,38.8972990459879,38.9123244966935,38.8826925900271,38.9172327657757,38.88596760224,38.9213055915147,38.8951330487548,38.9123244966935,38.8972990459879,38.8798055571672,38.9274357918548,38.9123244966935,38.9123244966935,38.8875662818655,38.8972990459879,38.9543732722424,38.9174248230036,38.9255815315325,38.8746523021134,38.9021810201931,38.9123244966935,38.9088970908615,38.9138938195312,38.8969781468093,38.9053614777588,38.9179363923742,38.9326794515228,38.9543732722424,38.9123244966935,38.9123244966935,38.8798055571672,38.9048787828423,38.9168559866057,38.911121802607,38.9496847404464,38.9423807789324,38.9088970908615,38.9612590606149,38.9199923108837,38.8987616906937,38.8787837374735,38.9380302729804,38.8956168421101,38.9423807789324,38.8987616906937,38.8787837374735,38.9087731521528,38.8987616906937,38.9380302729804,38.8956168421101,38.8987616906937,38.8798055571672,38.8798055571672,38.9496847404464,38.8787837374735,38.8612799858582,38.8734635996299,38.9316345061203,38.9316345061203,38.9524071341696,38.9543732722424,38.9274357918548,38.8803136428556,38.9274357918548,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.9088970908615,38.9548153114553,38.9300943915617,38.9123244966935,38.9123244966935,38.8875662818655,38.8972990459879,38.9496847404464,38.9612590606149,38.9123244966935,38.8798055571672,38.9560332761835,38.9274357918548,38.9612590606149,38.9274357918548,38.9123244966935,38.897535283085,38.8904737256621,38.8637419949753,38.8956168421101,38.9123244966935,38.8969781468093,38.9363715896335,38.9056991739856,38.9059616936887,38.9543732722424,38.9123244966935,38.8987616906937,38.8987616906937,38.8956168421101,38.8969781468093,38.8987616906937,38.9123244966935,38.8483017673345,38.9205880085796,38.8956168421101,38.9028992876415,38.8812745994121,38.9543732722424,38.9123244966935,38.9048787828423,38.9258149304166,38.9012552131414,38.8987616906937,38.8987616906937,38.9123244966935,38.8987616906937,38.9123244966935,38.8972990459879,38.912605987553,38.8787837374735,38.8972990459879,38.8969781468093,38.8972990459879,38.8956168421101,38.9123244966935,38.8956168421101,38.9543732722424,38.8972990459879,38.8612799858582,38.8969781468093,38.9274357918548,38.8987616906937,38.8734635996299,38.8987616906937,38.9248909438896,38.9380302729804,38.8787837374735,38.9381137697736,38.8451625626788,38.9176468207859,38.88596760224,38.9248909438896,38.8787837374735,38.8787837374735,38.9380302729804,38.8969781468093,38.9123244966935,38.9025284756572,38.8787837374735,38.8956168421101,38.8787837374735,38.8789687804984,38.8451625626788,38.9123244966935,38.9123244966935,38.9059616936887,38.9059616936887,38.8564559602009,38.9535090537738,38.8451625626788,38.89946796557,38.8787837374735,38.8835954937507,38.9496847404464,38.8787837374735,38.9138938195312,38.8920895186923,38.8987616906937,38.8956168421101,38.9176468207859,38.8897509317986,38.8612799858582,38.8451625626788,38.89946796557,38.9088970908615,38.9179768530971,38.8787837374735,38.8969781468093,38.8789687804984,38.8920895186923,38.8897716239952,38.8616615932692,38.9191832287402,38.8451625626788,38.9380302729804,38.9172327657757,38.8612799858582,38.8787837374735,38.9123244966935,38.9123244966935,38.9123244966935,38.846445302711,38.9496847404464,38.9560332761835,38.9048787828423,38.9050231071001,38.8623686329774,38.88596760224,38.9138938195312,38.9073984539871,38.9088970908615,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.9138938195312,38.9123244966935,38.8451625626788,38.9123244966935,38.9123244966935,38.9172327657757,38.9123244966935,38.9088970908615,38.9173286251987,38.9053614777588,38.8969781468093,38.8972990459879,38.9059616936887,38.9560332761835,38.9496847404464,38.9048787828423,38.8873701401058,38.9423807789324,38.9560332761835,38.9048787828423,38.9088970908615,38.8897716239952,38.8969549836939,38.9048787828423,38.9612590606149,38.9423807789324,38.9173286251987,38.8734635996299,38.9123244966935,38.9123244966935,38.8969781468093,38.9059616936887,38.8787837374735,38.8787837374735,38.8764808713658,38.8612799858582,38.9248909438896,38.9401374356537,38.9393211694272,38.9056459348207,38.8787837374735,38.9334379227543,38.8643495056954,38.8451625626788,38.9274357918548,38.8553185883958,38.8451625626788,38.9123244966935,38.8451625626788,38.8789687804984,38.8789687804984,38.8787837374735,38.8451625626788,38.902189199675,38.9440418463209,38.8920932091134,38.9274357918548,38.9543732722424,38.9123244966935,38.9123244966935,38.8956168421101,38.9240405633603,38.8446706514902,38.9059616936887,38.9051766284038,38.9025284756572,38.8956168421101,38.8956168421101,38.9274357918548,38.9123244966935,38.9123244966935,38.9219902665064,38.920012303894,38.8814911968901,38.9274357918548,38.8692912571222,38.8787855785961,38.8798055571672,38.8956168421101,38.9543732722424,38.8789687804984,38.8787837374735,38.8987616906937,38.8787837374735,38.8592419382446,38.8787837374735,38.8787837374735,38.8787837374735,38.9179768530971,38.9123244966935,38.8787837374735,38.9123244966935,38.9546982353771,38.8563332677474,38.9123244966935,38.8926088962975,38.8978435036815,38.8789687804984,38.9179768530971,38.9123244966935,38.8956168421101,38.9173286251987,38.8789687804984,38.9274357918548,38.8787837374735,38.8624013073775,38.8798055571672,38.9423807789324,38.8789687804984,38.9138938195312,38.9274357918548,38.9123244966935,38.8987616906937,38.9274357918548,38.9274357918548,38.8789687804984,38.916997788863,38.9123244966935,38.8789687804984,38.8451625626788,38.8789687804984,38.8787837374735,38.9040492006131,38.9610131375442,38.9610131375442,38.8787837374735,38.8787837374735,38.8789687804984,38.9048787828423,38.9123244966935,38.9123244966935,38.9365820549103,38.8451625626788,38.864041671278,38.8734635996299,38.9056459348207,38.8956168421101,38.9123244966935,38.8920895186923,38.8764808713658,38.8451625626788,38.8596570987135,38.8451625626788,38.9534955858599,38.9025284756572,38.8787837374735,38.89946796557,38.9138938195312,38.8451625626788,38.8897509317986,38.8789687804984,38.9380302729804,38.8787837374735,38.9138938195312,38.9088970908615,38.8787837374735,38.8787837374735,38.9496847404464,38.8787837374735,38.9365820549103,38.9123244966935,38.9048787828423,38.8451625626788,38.8596570987135,38.8787837374735,38.9138938195312,38.9138938195312,38.9138938195312,38.9138938195312,38.9138938195312,38.9138938195312,38.8972990459879,38.8972990459879,38.8972990459879,38.9138938195312,38.8972990459879,38.9138938195312,38.8972990459879,38.9543732722424,38.9059616936887,38.9111953215047,38.8972990459879,38.9543732722424,38.9543732722424,38.8972990459879,38.9059616936887,38.89946796557,38.9363285015409,38.9059616936887,38.8936257457237,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.9059616936887,38.9123244966935,38.8956168421101,38.9548153114553,38.8933274161184,38.931152542012,38.9274357918548,38.9274357918548,38.9138938195312,38.9048787828423,38.9274357918548,38.8975384697838,38.9140836115403,38.9543732722424,38.9615176839198,38.9123244966935,38.9138938195312,38.9286873734321,38.9496847404464,38.9053614777588,38.9123244966935,38.8975384697838,38.9065583355158,38.931152542012,38.9002078830843,38.9123244966935,38.9543732722424,38.88596760224,38.9172327657757,38.8969781468093,38.8956168421101,38.9172327657757,38.9423807789324,38.9123244966935,38.9123244966935,38.8972990459879,38.88596760224,38.9138938195312,38.9088970908615,38.8969781468093,38.9581816929577,38.9168683740807,38.8951330487548,38.8913339992343,38.8486187701998,38.8969781468093,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.9073984539871,38.9088970908615,38.9088970908615,38.8920895186923,38.9048787828423,38.9612590606149,38.9423807789324,38.8956168421101,38.9002078830843,38.9025284756572,38.9138938195312,38.9138938195312,38.9547009578591,38.8948682830652,38.928801771091,38.9096350626285,38.8956168421101,38.9123244966935,38.9073984539871,38.8987616906937,38.8875662818655,38.9274357918548,38.8798055571672,38.8956168421101,38.9088970908615,38.9088970908615,38.9088970908615,38.8875662818655,38.9123244966935,38.9123244966935,38.9053614777588,38.9138938195312,38.9274357918548,38.8596570987135,38.8596570987135,38.8787837374735,38.8787837374735,38.8612799858582,38.89946796557,38.9059616936887,38.9059616936887,38.8764808713658,38.8787837374735,38.8787837374735,38.8787837374735,38.8787837374735,38.9380302729804,38.8596570987135,38.9380302729804,38.8787837374735,38.9380302729804,38.8787837374735,38.9248909438896,38.9274357918548,38.9123244966935,38.9123244966935,38.9123244966935,38.9059616936887,38.8897509317986,38.9025284756572,38.8787837374735,38.8787837374735,38.8956168421101,38.8787837374735,38.9620419851044,38.9274357918548,38.8969781468093,38.9138938195312,38.8451625626788,38.8451625626788,38.8787837374735,38.8787837374735,38.8787837374735,38.8956168421101,38.9274357918548,38.9365820549103,38.8787837374735,38.8897509317986,38.8451625626788,38.8987616906937,38.8451625626788,38.8789687804984,38.8787837374735,38.8787837374735,38.8789687804984,38.9088970908615,38.8787837374735,38.8789687804984,38.8956168421101,38.8956168421101,38.8789687804984,38.8951330487548,38.8956168421101,38.8956168421101,38.8787837374735,38.8612799858582,38.8787837374735,38.9380302729804,38.9548153114553,38.8787837374735,38.8734635996299,38.9423807789324,38.9496847404464,38.8787837374735,38.9123244966935,38.9123244966935,38.9123244966935,38.8972990459879,38.9840556374832,38.907367134192,38.8886073243762,38.9548153114553,38.8972990459879,38.9274357918548,38.8972990459879,38.9610173877836,38.9173286251987,38.8897509317986,38.9380302729804,38.89946796557,38.89946796557,38.8789687804984,38.9334379227543,38.9179768530971,38.9334379227543,38.8451625626788,38.916997788863,38.9123244966935,38.8987616906937,38.9123244966935,38.9123244966935,38.9123244966935,38.9248909438896,38.8612799858582,38.8787837374735,38.9380302729804,38.8787837374735,38.8787837374735,38.8787837374735,38.9123244966935,38.9172327657757,38.9274357918548,38.9123244966935,38.9123244966935,38.8956168421101,38.9123244966935,38.9176468207859,38.9496847404464,38.9050231071001,38.8451625626788,38.8787837374735,38.9053614777588,38.91572541709,38.9123244966935,38.9138938195312,38.9543732722424,38.9219902665064,38.9172327657757,38.964952670007,38.9123244966935,38.8956168421101,38.8956168421101,38.8787837374735,38.9172327657757,38.8987616906937,38.8987616906937,38.8956168421101,38.8956168421101,38.8612799858582,38.8987616906937,38.8956168421101,38.8956168421101,38.8787837374735,38.8789687804984,38.8956168421101,38.8619228886077,38.9543732722424,38.8956168421101,38.9274357918548,38.9123244966935,38.9088970908615,38.8787837374735,38.9138938195312,38.8994016274464,38.8920102836904,38.9040723534931,38.9181060363312,38.8451625626788,38.8451625626788,38.9548153114553,38.8956168421101,38.8787837374735,38.8787837374735,38.8623686329774,38.9334379227543,38.8987616906937,38.8787837374735,38.8787837374735,38.8787837374735,38.9534955858599,38.8789687804984,38.9043257604203,38.9123244966935,38.8875662818655,38.9123244966935,38.9123244966935,38.9123244966935,38.916997788863,38.8969781468093,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.8897716239952,38.8920895186923,38.9337607702382,38.9188724630091,38.8920895186923,38.9112797582797,38.88596760224,38.9123244966935,38.9123244966935,38.9274357918548,38.9123244966935,38.8969781468093,38.9123244966935,38.8506842992464,38.9286873734321,38.9612590606149,38.9048787828423,38.9048787828423,38.8920853941184,38.9123244966935,38.9123244966935,38.9274357918548,38.9274357918548,38.9612590606149,38.9274357918548,38.9496847404464,38.9123244966935,38.9123244966935,38.9123244966935,38.8831037937851,38.921071808426,38.8987616906937,38.9123244966935,38.9496847404464,38.8798055571672,38.8637419949753,38.9274357918548,38.9343212833728,38.9123244966935,38.8956168421101,38.9123244966935,38.9219902665064,38.8920895186923,38.8798055571672,38.9048787828423,38.9053614777588,38.9274357918548,38.8972990459879,38.9612590606149,38.8972990459879,38.8969781468093,38.8956168421101,38.8859812387595,38.8987616906937,38.9543732722424,38.9274357918548,38.9123244966935,38.9048787828423,38.9140915626003,38.9074379794128,38.8972990459879,38.9123244966935,38.9123244966935,38.9123244966935,38.8987616906937,38.8987616906937,38.9123244966935,38.9123244966935,38.9190519066355,38.8980704848047,38.9088970908615,38.9496847404464,38.9043257604203,38.931152542012,38.91572541709,38.8920895186923,38.9123244966935,38.8987616906937,38.9274357918548,38.9123244966935,38.9423807789324,38.9123244966935,38.9548153114553,38.8969781468093,38.9123244966935,38.9059616936887,38.8934042319588,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.8897716239952,38.9088970908615,38.8951330487548,38.8920895186923,38.9138938195312,38.9274357918548,38.8987616906937,38.9123244966935,38.9123244966935,38.9138938195312,38.8972990459879,38.9123244966935,38.9123244966935,38.9053614777588,38.8972990459879,38.9123244966935,38.9548153114553,38.8987616906937,38.8969781468093,38.91572541709,38.9048787828423,38.8972990459879,38.9274357918548,38.9048787828423,38.9274357918548,38.9274357918548,38.9123244966935,38.9173286251987,38.9543732722424,38.9123244966935,38.8951330487548,38.8623686329774,38.9274357918548,38.9123244966935,38.9123244966935,38.8623686329774,38.9123244966935,38.8956168421101,38.9123244966935,38.8987616906937,38.9506942573317,38.9059616936887,38.9173286251987,38.9025309490657,38.9219902665064,38.9286873734321,38.9123244966935,38.9123244966935,38.8969781468093,38.9543732722424,38.9050231071001,38.9560332761835,38.9073984539871,38.9050231071001,38.9048787828423,38.9088970908615,38.9053614777588,38.9423807789324,38.9059616936887,38.9048787828423,38.8623686329774,38.9138938195312,38.9138938195312,38.9274357918548,38.9123244966935,38.9123244966935,38.8920853941184,38.8875662818655,38.9548153114553,38.9053614777588,38.8596570987135,38.916997788863,38.9560332761835,38.9130221431475,38.8987616906937,38.8987616906937,38.8987616906937,38.9123244966935,38.8787837374735,38.8787837374735,38.8451625626788,38.8969781468093,38.8987616906937,38.8451625626788,38.9176468207859,38.9088970908615,38.9172327657757,38.9172327657757,38.8969781468093,38.8897716239952,38.9123244966935,38.9551787812221,38.9665385432465,38.9123244966935,38.9274357918548,38.8956168421101,38.9123244966935,38.8798055571672,38.9123244966935,38.9123244966935,38.9123244966935,38.8969781468093,38.8987616906937,38.9048787828423,38.9123244966935,38.8987616906937,38.9123244966935,38.89946796557,38.9534955858599,38.9123244966935,38.9393211694272,38.9268169227197,38.9274357918548,38.9123244966935,38.9274357918548,38.9274357918548,38.9123244966935,38.8956168421101,38.8987616906937,38.9274357918548,38.8620491789839,38.8787837374735,38.9059616936887,38.8787837374735,38.8787837374735,38.8787837374735,38.8787837374735,38.9179768530971,38.8787837374735,38.8787837374735,38.8596570987135,38.8787837374735,38.8789687804984,38.8451625626788,38.9179768530971,38.8875662818655,38.8787837374735,38.8451625626788,38.9334379227543,38.9172327657757,38.9179768530971,38.9274357918548,38.8789687804984,38.9123244966935,38.9123244966935,38.9534955858599,38.9025284756572,38.8972990459879,38.9179768530971,38.89946796557,38.8787837374735,38.9496847404464,38.9123244966935,38.8789687804984,38.9274357918548,38.8897499259629,38.8787837374735,38.9123244966935,38.8969781468093,38.9496847404464,38.8787837374735,38.9123244966935,38.8787837374735,38.9274357918548,38.8787837374735,38.9365820549103,38.8451625626788,38.8451625626788,38.8789687804984,38.8787837374735,38.9620419851044,38.9560332761835,38.9123244966935,38.9274357918548,38.9123244966935,38.9274357918548,38.9274357918548,38.9286873734321,38.8969781468093,38.8969781468093,38.8987616906937,38.8969781468093,38.9059616936887,38.8987616906937,38.9123244966935,38.9123244966935,38.9123244966935,38.8623686329774,38.9123244966935,38.8972990459879,38.9123244966935,38.8987616906937,38.8987616906937,38.9123244966935,38.8920895186923,38.9274357918548,38.8956168421101,38.8798055571672,38.9423807789324,38.8987616906937,38.8956168421101,38.9123244966935,38.9543732722424,38.8956168421101,38.8972990459879,38.9274357918548,38.9123244966935,38.9048787828423,38.9138938195312,38.9123244966935,38.9048787828423,38.8623686329774,38.9048787828423,38.8798055571672,38.8532973452793,38.9123244966935,38.9138938195312,38.9274357918548,38.8972990459879,38.9612590606149,38.9423807789324,38.8920853941184,38.9548153114553,38.9172327657757,38.88596760224,38.9123244966935,38.8943134581546,38.9123244966935,38.9123244966935,38.9123244966935,38.8956168421101,38.8450769084796,38.9072398569249,38.9274357918548,38.9123244966935,38.8987616906937,38.9543732722424,38.8956168421101,38.9123244966935,38.9123244966935,38.931152542012,38.9380302729804,38.9022280320867,38.9380302729804,38.9123244966935,38.9123244966935,38.9123244966935,38.8623686329774,38.8951330487548,38.8987616906937,38.8734635996299,38.8951330487548,38.9548153114553,38.9172327657757,38.9053614777588,38.8734635996299,38.8734635996299,38.9172327657757,38.9548153114553,38.9496847404464,38.9496847404464,38.8532973452793,38.9496847404464,38.8798055571672,38.9050231071001,38.8798055571672,38.9172327657757,38.9088970908615,38.8956168421101,38.9172327657757,38.8787837374735,38.9380302729804,38.8787837374735,38.8787837374735,38.8987616906937,38.8787837374735,38.9123244966935,38.8956168421101,38.8956168421101,38.9543732722424,38.9548153114553,38.88596760224,38.8787837374735,38.9048787828423,38.8798055571672,38.881363278705,38.9138938195312,38.9123244966935,38.8969781468093,38.8956168421101,38.8932990791349,38.8787837374735,38.8789687804984,38.9248909438896,38.8596570987135,38.8787837374735,38.8787837374735,38.9380302729804,38.89946796557,38.9274357918548,38.9274357918548,38.9123244966935,38.9138938195312,38.9123244966935,38.9172327657757,38.8987616906937,38.9274357918548,38.9274357918548,38.8969781468093,38.8972990459879,38.9274357918548,38.9123244966935,38.9286873734321,38.9304498066171,38.9123244966935,38.9123244966935,38.9274357918548,38.9274357918548,38.8956168421101,38.9025259607955,38.9059616936887,38.8897509317986,38.8596570987135,38.9022428560842,38.8798055571672,38.8956168421101,38.8956168421101,38.8897716239952,38.9048787828423,38.9286873734321,38.9088970908615,38.9274357918548,38.89946796557,38.8789687804984,38.9138938195312,38.9138938195312,38.8969781468093,38.9123244966935,38.9123244966935,38.9123244966935,38.9002078830843,38.9073984539871,38.9274357918548,38.8972990459879,38.8956168421101,38.9123244966935,38.9138938195312,38.9123244966935,38.88596760224,38.9048787828423,38.9274357918548,38.926752197246,38.8969781468093,38.9274357918548,38.8956168421101,38.9274357918548,38.9048787828423,38.9048787828423,38.9423807789324,38.8972990459879,38.9172327657757,38.9123244966935,38.9274357918548,38.9123244966935,38.9123244966935,38.9279176113791,38.931152542012,38.9219902665064,38.9423807789324,38.9123244966935,38.9123244966935,38.8972990459879,38.8986274386105,38.8867681555765,38.9059616936887,38.8900647761562,38.9722626837853,38.9096421699445,38.8804732855976,38.9123244966935,38.8972990459879,38.9053614777588,38.9123244966935,38.9543732722424,38.9138938195312,38.9138938195312,38.9138938195312,38.90610249048,38.8972990459879,38.9543732722424,38.9059616936887,38.8972990459879,38.8589062228953,38.9059616936887,38.9138938195312,38.9138938195312,38.9543732722424,38.9543732722424,38.9543732722424,38.9290407301841,38.9543732722424,38.9138938195312,38.8972990459879,38.9138938195312,38.8972990459879,38.9543732722424,38.9543732722424,38.9059616936887,38.8972990459879,38.9543732722424,38.8972990459879,38.9543732722424,38.9138938195312,38.9543732722424,38.9059616936887,38.9051766284038,38.9543732722424,38.9138938195312,38.9543732722424,38.8972990459879,38.9543732722424,38.8969781468093,38.9123244966935,38.9274357918548,38.9123244966935,38.9123244966935,38.9123244966935,38.9176468207859,38.9123244966935,38.9123244966935,38.9312862167929,38.879232451752,38.8829732841825,38.8932991186857,38.8969781468093,38.8789687804984,38.8787837374735,38.8451625626788,38.9172327657757,38.9123244966935,38.8451625626788,38.9179768530971,38.9534955858599,38.8787837374735,38.8897509317986,38.8787837374735,38.8643495056954,38.8451625626788,38.9123244966935,38.8787837374735,38.9123244966935,38.9176468207859,38.8451625626788,38.8987616906937,38.8789687804984,38.9179768530971,38.9179768530971,38.8787837374735,38.9138938195312,38.9274357918548,38.8596570987135,38.8897509317986,38.8787837374735,38.9059616936887,38.8789687804984,38.9048787828423,38.8987616906937,38.8451625626788,38.8789687804984,38.8451625626788,38.9365820549103,38.8612799858582,38.9534955858599,38.9380302729804,38.9380302729804,38.8951330487548,38.8787837374735,38.8451625626788,38.9123244966935,38.9496847404464,38.9423807789324,38.8787837374735,38.8956168421101,38.8787837374735,38.8451625626788,38.8787837374735,38.8956168421101,38.9179768530971,38.8787837374735,38.9123244966935,38.8612799858582,38.9123244966935,38.9496847404464,38.9172327657757,38.8920895186923,38.8787837374735,38.8451625626788,38.8956168421101,38.9123244966935,38.8969781468093,38.9048787828423,38.8951330487548,38.9176468207859,38.9123244966935,38.8987616906937,38.8987616906937,38.8987616906937,38.8969781468093,38.8956168421101,38.9138938195312,38.9123244966935,38.9123244966935,38.9048787828423,38.8672656504225,38.8760272289615,38.9172327657757,38.9274357918548,38.91572541709,38.9138938195312,38.9123244966935,38.9123244966935,38.9123244966935,38.9274357918548,38.9496847404464,38.9059616936887,38.9274357918548,38.9274357918548,38.9123244966935,38.8897716239952,38.9496847404464,38.9002078830843,38.9548153114553,38.9423807789324,38.8686630413362,38.9088970908615,38.9138938195312,38.9274357918548,38.9274357918548,38.9123244966935,38.8956168421101,38.906441607104,38.9523615035613,38.8767521271504,38.9029219562039,38.9123244966935,38.9123244966935,38.8969781468093,38.9123244966935,38.9795820382868,38.9123244966935,38.9123244966935,38.9123244966935,38.957023900981,38.9274357918548,38.9048787828423,38.9123244966935,38.9048787828423,38.8836017731937,38.8659078684732,38.9123244966935,38.9612590606149,38.9088970908615,38.9087170806131,38.9123244966935,38.9123244966935,38.9612590606149,38.9123244966935,38.9123244966935,38.9274357918548,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.9048787828423,38.9123244966935,38.8969781468093,38.9088970908615,38.9112797582797,38.9048787828423,38.9274357918548,38.922159399572,38.9542466987947,38.9173286251987,38.9274357918548,38.9040003063175,38.9274357918548,38.8787837374735,38.8787837374735,38.8451625626788,38.9380302729804,38.8787837374735,38.8787837374735,38.8787837374735,38.9048787828423,38.9274357918548,38.9543732722424,38.9059616936887,38.9138938195312,38.9559566648156,38.9059616936887,38.9138938195312,38.9138938195312,38.9059616936887,38.9059616936887,38.9138938195312,38.9138938195312,38.9543732722424,38.9138938195312,38.9138938195312,38.91572541709,38.8969781468093,38.9543732722424,38.9123244966935,38.8956168421101,38.8789687804984,38.89946796557,38.8787837374735,38.9380302729804,38.8612799858582,38.8787837374735,38.8787837374735,38.8612799858582,38.8451625626788,38.8451625626788,38.9123244966935,38.8787837374735,38.8787837374735,38.8612799858582,38.8789687804984,38.8787837374735,38.8787837374735,38.9248909438896,38.9248909438896,38.9059616936887,38.9123244966935,38.9123244966935,38.9174665041885,38.8966558836116,38.9041149056007,38.9462737108585,38.8784712129186,38.9002045659518,38.9191832287402,38.922159399572,38.8969781468093,38.8787837374735,38.8897716239952,38.8734635996299,38.9059616936887,38.9123244966935,38.8451625626788,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.8787837374735,38.9172327657757,38.8787837374735,38.923158966869,38.92559105153,38.9056473334077,38.9170022241396,38.8596570987135,38.923158966869,38.9176995223499,38.9155747568959,38.9123244966935,38.9123244966935,38.8972990459879,38.9543732722424,38.9056459348207,38.8657307952981,38.9440418463209,38.9258149304166,38.9275383636822,38.8954659855883,38.9088970908615,38.9056464719213,38.9125922656333,38.9088970908615,38.8831037937851,38.9170022241396,38.9065583355158,38.9065583355158,38.9190519066355,38.9065583355158,38.8798055571672,38.9560332761835,38.8798055571672,38.9496847404464,38.8956168421101,38.9423807789324,38.9496847404464,38.8956168421101,38.9423807789324,38.9423807789324,38.9496847404464,38.9088970908615,38.9053614777588,38.9088970908615,38.9053614777588,38.8956168421101,38.8987616906937,38.9172327657757,38.9496847404464,38.8956168421101,38.9496847404464,38.9546926895927,38.8451625626788,38.8987616906937,38.8451625626788,38.8451625626788,38.8451625626788,38.8787837374735,38.8798055571672,38.8798055571672,38.9274357918548,38.9548153114553,38.9123244966935,38.8798055571672,38.9053614777588,38.9548153114553,38.9138938195312,38.8956168421101,38.9123244966935,38.9274357918548,38.9048787828423,38.9123244966935,38.9088970908615,38.9123244966935,38.8987616906937,38.8969781468093,38.9543732722424,38.9274357918548,38.9123244966935,38.9123244966935,38.9123244966935,38.8972990459879,38.9123244966935,38.8987616906937,38.8972990459879,38.8897716239952,38.9172327657757,38.8956168421101,38.8956168421101,38.9173286251987,38.8734635996299,38.9548153114553,38.9123244966935,38.9172327657757,38.9123244966935,38.9088970908615,38.884730114967,38.9274357918548,38.9274357918548,38.8969781468093,38.8969781468093,38.8972990459879,38.9123244966935,38.9123244966935,38.9088970908615,38.8972990459879,38.9123244966935,38.8897716239952,38.9172327657757,38.9548153114553,38.9123244966935,38.9123244966935,38.9423807789324,38.9274357918548,38.8969781468093,38.8907804254169,38.9462798470196,38.9274357918548,38.9543732722424,38.8956168421101,38.8987616906937,38.9521866665848,38.9059616936887,38.9154377192655,38.90659975884,38.9269942808285,38.881363278705,38.8972990459879,38.9181123891469,38.8987616906937,38.9172327657757,38.9423807789324,38.9048787828423,38.9056434495889,38.9255488072435,38.9059616936887,38.9123244966935,38.8897716239952,38.9048787828423,38.8972990459879,38.9123244966935,38.8956168421101,38.8972990459879,38.8532843611461,38.8515854891489,38.8956168421101,38.8956168421101,38.8969781468093,38.9123244966935,38.9543732722424,38.8956168421101,38.8987616906937,38.8969781468093,38.9496847404464,38.9423807789324,38.9123244966935,38.9123244966935,38.8637419949753,38.9025284756572,38.8798055571672,38.9048787828423,38.9053614777588,38.8734635996299,38.9123244966935,38.8972990459879,38.9123244966935,38.8956168421101,38.9274357918548,38.8987616906937,38.9496847404464,38.8837330471257,38.8623686329774,38.8623686329774,38.8814911968901,38.8974955306889,38.9123244966935,38.9138938195312,38.8987616906937,38.9179768530971,38.9617274828536,38.8787837374735,38.8798055571672,38.8787837374735,38.8787837374735,38.8787837374735,38.8789687804984,38.9610131375442,38.9543732722424,38.8643495056954,38.9123244966935,38.8789687804984,38.8787837374735,38.9274357918548,38.8451625626788,38.9543732722424,38.9123244966935,38.8789687804984,38.9123244966935,38.89946796557,38.8987616906937,38.9123244966935,38.8787837374735,38.9123244966935,38.9123244966935,38.9543732722424,38.8987616906937,38.9496847404464,38.8798055571672,38.9123244966935,38.9123244966935,38.8956168421101,38.9123244966935,38.9123244966935,38.9123244966935,38.9048787828423,38.9123244966935,38.9274357918548,38.8875662818655,38.9073984539871,38.9123244966935,38.8920895186923,38.9548153114553,38.9173286251987,38.9053614777588,38.9123244966935,38.9123244966935,38.8969781468093,38.9123244966935,38.916997788863,38.9050231071001,38.9088970908615,38.9025284756572,38.9190519066355,38.9050231071001,38.9123244966935,38.9123244966935,38.9543732722424,38.9123244966935,38.8798055571672,38.9496847404464,38.8969781468093,38.9059616936887,38.8645477743951,38.9123244966935,38.9123244966935,38.8969781468093,38.9048787828423,38.9496847404464,38.9219902665064,38.9524071341696,38.9123244966935,38.9274357918548,38.9123244966935,38.9048787828423,38.9274357918548,38.9123244966935,38.9172327657757,38.88596760224,38.9172327657757,38.9423807789324,38.9088970908615,38.9025284756572,38.8798055571672,38.8798055571672,38.9423807789324,38.9560332761835,38.9172327657757,38.9025284756572,38.9173286251987,38.8897716239952,38.9274357918548,38.8875662818655,38.8972990459879,38.8972990459879,38.9123244966935,38.9123244966935,38.9123244966935,38.9048787828423,38.8987616906937,38.9274357918548,38.9363285015409,38.9502457145359,38.9123244966935,38.9274357918548,38.9274357918548,38.9274357918548,38.9431373443628,38.8966558836116,38.8920828204248,38.9103842892984,38.9606627440782,38.9065583355158,38.8986274386105,38.9223723361887,38.8972990459879,38.9123244966935,38.8951330487548,38.9274357918548,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.9548153114553,38.8798055571672,38.9138938195312,38.8897716239952,38.9274357918548,38.9123244966935,38.9123244966935,38.8956168421101,38.8969781468093,38.8969781468093,38.9123244966935,38.8451625626788,38.8787837374735,38.9048787828423,38.9196589960041,38.8787837374735,38.9274357918548,38.9123244966935,38.8789687804984,38.8798055571672,38.8798055571672,38.9205880085796,38.9665385432465,38.8969781468093,38.9010052846108,38.9423807789324,38.8623686329774,38.9050231071001,38.910474300986,38.9172327657757,38.8798055571672,38.916997788863,38.9179768530971,38.8787837374735,38.9286873734321,38.9352099068317,38.9312238300742,38.934966441082,38.9088970908615,38.9496847404464,38.88596760224,38.9088970908615,38.8875662818655,38.9303072039819,38.9088970908615,38.8875662818655,38.8798055571672,38.9123244966935,38.9155647031992,38.8920932091134,38.9260087608615,38.902189199675,38.9123244966935,38.9123244966935,38.9025284756572,38.9048787828423,38.8798055571672,38.9123244966935,38.9123244966935,38.9543732722424,38.9059616936887,38.9059616936887,38.8972990459879,38.9123244966935,38.8868072328277,38.9205880085796,38.9088914377954,38.904378088246,38.9190519066355,38.8956168421101,38.8956168421101,38.9123244966935,38.9123244966935,38.9274357918548,38.8956168421101,38.9274357918548,38.8987616906937,38.8987616906937,38.9274357918548,38.9123244966935,38.9123244966935,38.9672863369009,38.9123244966935,38.9543732722424,38.9123244966935,38.9286873734321,38.8798055571672,38.9056552586373,38.9265594131414,38.9496847404464,38.9048787828423,38.9053614777588,38.8946309731981,38.9088970908615,38.9048787828423,38.9543732722424,38.8956168421101,38.8956168421101,38.9172327657757,38.9173286251987,38.8623686329774,38.9274357918548,38.926204316972,38.9123244966935,38.9123244966935,38.9548153114553,38.9088970908615,38.8623686329774,38.9088970908615,38.91572541709,38.8798055571672,38.9002010790206,38.9002031082295,38.8978224018523,38.9542797553619,38.9060521810035,38.9510537446491,38.9123244966935,38.9123244966935,38.8951330487548,38.8956168421101,38.9123244966935,38.9025309490657,38.8987616906937,38.8630904127998,38.8956168421101,38.9274357918548,38.9138938195312,38.9123244966935,38.9123244966935,38.8969781468093,38.8972990459879,38.8787837374735,38.8956168421101,38.9496847404464,38.8956168421101,38.9548153114553,38.9053614777588,38.8798055571672,38.9610173877836,38.9050231071001,38.9496847404464,38.8787837374735,38.8612799858582,38.8789687804984,38.8798055571672,38.8789687804984,38.8789687804984,38.8787837374735,38.9610173877836,38.9138938195312,38.9172327657757,38.9048787828423,38.9123244966935,38.9059616936887,38.9190519066355,38.9123244966935,38.9423807789324,38.9048787828423,38.9612590606149,38.8987616906937,38.9543732722424,38.9274357918548,38.9274357918548,38.9274357918548,38.9274357918548,38.9123244966935,38.9123244966935,38.8972990459879,38.9274357918548,38.8956168421101,38.9173286251987,38.9274357918548,38.9064416075204,38.9004550445456,38.8430848034416,38.8798055571672,38.9548153114553,38.9123244966935,38.8798055571672,38.9286873734321,38.8637419949753,38.8969781468093,38.8969781468093,38.9088970908615,38.9496847404464,38.9172327657757,38.8787837374735,38.8787837374735,38.9123244966935,38.8451625626788,38.8787837374735,38.9176468207859,38.8897509317986,38.9548153114553,38.8987616906937,38.8897509317986,38.89946796557,38.8920895186923,38.8787837374735,38.8787837374735,38.8972990459879,38.922291710748,38.8787837374735,38.8451625626788,38.9543732722424,38.9181105671157,38.8787837374735,38.8787837374735,38.9325341369399,38.8789687804984,38.8612799858582,38.9380302729804,38.8787837374735,38.8787837374735,38.8787837374735,38.8787837374735,38.8764808713658,38.8987616906937,38.8787837374735,38.8787837374735,38.9610131375442,38.968631819078,38.8969781468093,38.9123244966935,38.9123244966935,38.9274357918548,38.9123244966935,38.9123244966935,38.8972990459879,38.9138938195312,38.9534955858599,38.9534955858599,38.9610131375442,38.89946796557,38.9138938195312,38.9203636812604,38.9543732722424,38.9138938195312,38.9138938195312,38.89946796557,38.9138938195312,38.89946796557,38.9138938195312,38.89946796557,38.9138938195312,38.9138938195312,38.89946796557,38.9073984539871,38.8951330487548,38.9181105671157,38.9154498795608,38.8786534454243,38.8972990459879,38.9543732722424,38.8972990459879,38.9543732722424,38.8972990459879,38.9543732722424,38.9138938195312,38.9543732722424,38.9543732722424,38.9138938195312,38.9138938195312,38.8757971473655,38.8972990459879,38.8972990459879,38.8972990459879,38.9059616936887,38.8972990459879,38.8972990459879,38.9543732722424,38.8972990459879,38.8972990459879,38.9543732722424,38.9543732722424,38.8972990459879,38.9543732722424,38.9138938195312,38.9059616936887,38.9138938195312,38.8972990459879,38.8581657132777,38.9675350596817,38.9123244966935,38.9543732722424,38.8789687804984,38.9048787828423,38.9048787828423,38.8451625626788,38.916997788863,38.8764808713658,38.8596570987135,38.8734635996299,38.8734635996299,38.9172327657757,38.9380302729804,38.8787837374735,38.89946796557,38.9274357918548,38.9123244966935,38.9138938195312,38.8956168421101,38.8436719776838,38.9548153114553,38.9020472631391,38.9174665041885,38.9343212833728,38.9380302729804,38.9179768530971,38.8451625626788,38.8956168421101,38.9073984539871,38.8928010048644,38.9191832287402,38.9389105462401,38.9274357918548,38.8987616906937,38.8969781468093,38.8804732855976,38.832852691323,38.9059616936887,38.8559141327995,38.8897716239952,38.9286873734321,38.8972990459879,38.9274357918548,38.9543732722424,38.8956168421101,38.9186213320642,38.9138938195312,38.9612590606149,38.9274357918548,38.9123244966935,38.9274357918548,38.8956168421101,38.8798055571672,38.8987616906937,38.8987616906937,38.9546982353771,38.8670243989532,38.8943134581546,38.9123244966935,38.9088970908615,38.8897716239952,38.9538790853748,38.8782157348749,38.9056634802787,38.884807925326,38.9923273882304,38.9123244966935,38.916997788863,38.9123244966935,38.8971489845034,38.9123244966935,38.964166785095,38.9123244966935,38.9088970908615,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.8825651538221,38.8897716239952,38.9123244966935,38.9123244966935,38.9587264372448,38.9123244966935,38.9274357918548,38.9323762453324,38.9395761574826,38.9126056381912,38.9123244966935,38.9123244966935,38.910474300986,38.9274357918548,38.9123244966935,38.9123244966935,38.8969781468093,38.9123244966935,38.8987616906937,38.8956168421101,38.9123244966935,38.9123244966935,38.8451625626788,38.8787837374735,38.9048787828423,38.8787837374735,38.9073984539871,38.8798055571672,38.8787837374735,38.9088970908615,38.8787837374735,38.8787837374735,38.8596570987135,38.8787837374735,38.8787837374735,38.8596570987135,38.8764808713658,38.8451625626788,38.8787837374735,38.9274357918548,38.9123244966935,38.9123244966935,38.9171569865936,38.9190081062551,38.9181140298708,38.8920123914063,38.9274357918548,38.8596570987135,38.8969781468093,38.9059616936887,38.8451625626788,38.89946796557,38.89946796557,38.9059616936887,38.8830657744216,38.9302307723003,38.9334379227543,38.8787837374735,38.8506842992464,38.9123244966935,38.8969781468093,38.8787837374735,38.8787837374735,38.8789687804984,38.8987616906937,38.88596760224,38.8956168421101,38.8451625626788,38.9612590606149,38.8956168421101,38.8956168421101,38.8787837374735,38.8451625626788,38.8451625626788,38.9176468207859,38.9123244966935,38.8451625626788,38.8956168421101,38.8987616906937,38.9274357918548,38.9274357918548,38.9543732722424,38.9123244966935,38.9123244966935,38.9274357918548,38.8956168421101,38.9123244966935,38.8987616906937,38.8956168421101,38.9176468207859,38.8969781468093,38.8451625626788,38.8451625626788,38.8451625626788,38.8637419949753,38.9025284756572,38.9025284756572,38.8787837374735,38.8787837374735,38.8787837374735,38.91893193254,38.8787837374735,38.8969781468093,38.8596570987135,38.8787837374735,38.8897716239952,38.916997788863,38.9179768530971,38.8787837374735,38.9172327657757,38.8734635996299,38.9053614777588,38.8956168421101,38.8787837374735,38.8956168421101,38.8787837374735,38.8956168421101,38.8798055571672,38.8897509317986,38.8789687804984,38.9053614777588,38.8787837374735,38.8787837374735,38.8969781468093,38.8623686329774,38.9274357918548,38.9543732722424,38.9123244966935,38.9123244966935,38.8987616906937,38.9048787828423,38.8798055571672,38.9048787828423,38.8451625626788,38.9176468207859,38.8787837374735,38.8787837374735,38.8798055571672,38.9001307523882,38.897694076054,38.9138938195312,38.9123244966935,38.8987616906937,38.9123244966935,38.9274357918548,38.9123244966935,38.9123244966935,38.9123244966935,38.9543732722424,38.9053614777588,38.8920895186923,38.9123244966935,38.9123244966935,38.9123244966935,38.9172327657757,38.91572541709,38.9274357918548,38.9123244966935,38.8956168421101,38.8987616906937,38.9274357918548,38.9543732722424,38.8631287403064,38.8451625626788,38.8798055571672,38.9123244966935,38.9123244966935,38.9123244966935,38.9274357918548,38.9191851784289,38.9050231071001,38.8920853941184,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.9274357918548,38.8956168421101,38.8987616906937,38.9123244966935,38.8794754608641,38.8969781468093,38.9365820549103,38.8451625626788,38.9179768530971,38.8787837374735,38.9123244966935,38.8972990459879,38.9274357918548,38.8987616906937,38.9274357918548,38.8779679870711,38.9059616936887,38.9548153114553,38.8956168421101,38.8787837374735,38.8787837374735,38.9525347990541,38.9179768530971,38.8787837374735,38.8951330487548,38.8787837374735,38.9179768530971,38.9048787828423,38.8789687804984,38.8789687804984,38.9123244966935,38.9123244966935,38.9560332761835,38.8563332677474,38.9123244966935,38.9123244966935,38.8956168421101,38.8700764964662,38.8877730178402,38.88596760224,38.9002078830843,38.9123244966935,38.9123244966935,38.9543732722424,38.8987616906937,38.9123244966935,38.9307638200518,38.8972990459879,38.9274357918548,38.9274357918548,38.88596760224,38.9172327657757,38.9123244966935,38.9138938195312,38.9025284756572,38.9043036675217,38.928801771091,38.9048787828423,38.9088970908615,38.88596760224,38.9219902665064,38.9088970908615,38.876477319412,38.8956168421101,38.9123244966935,38.9123244966935,38.8897716239952,38.8969781468093,38.8798055571672,38.9138938195312,38.8975384697838,38.8987616906937,38.9172035195024,38.8987616906937,38.9274357918548,38.8532973452793,38.8969781468093,38.9123244966935,38.9543732722424,38.8956168421101,38.9172327657757,38.9612590606149,38.9274357918548,38.9123244966935,38.9612590606149,38.9088970908615,38.8897716239952,38.8920895186923,38.9560332761835,38.88596760224,38.88596760224,38.8897716239952,38.9121392607654,38.9113201363168,38.9059616936887,38.9011982293062,38.9138938195312,38.9274357918548,38.9548153114553,38.8897499259629,38.8972990459879,38.9274357918548,38.9274357918548,38.9123244966935,38.9123244966935,38.9496847404464,38.9048787828423,38.8787837374735,38.8787837374735,38.8612799858582,38.9380302729804,38.8789687804984,38.9380302729804,38.8987032574761,38.8969781468093,38.8972990459879,38.9612590606149,38.8932990791349,38.9610131375442,38.8451625626788,38.8787837374735,38.9025284756572,38.8787837374735,38.9050231071001,38.89946796557,38.9179768530971,38.9123244966935,38.89946796557,38.8451625626788,38.9365820549103,38.9053614777588,38.8787837374735,38.9274357918548,38.8451625626788,38.8451625626788,38.9123244966935,38.8787837374735,38.8451625626788,38.8987616906937,38.9534955858599,38.8789687804984,38.8451625626788,38.8451625626788,38.8787837374735,38.9025284756572,38.8451625626788,38.8787837374735,38.9543732722424,38.8612799858582,38.8987616906937,38.8987616906937,38.9179768530971,38.8451625626788,38.9172327657757,38.91572541709,38.8787837374735,38.9176468207859,38.8451625626788,38.8451625626788,38.8612799858582,38.8787837374735,38.8764808713658,38.8897716239952,38.8972990459879,38.8956168421101,38.892079766006,38.9236759784503,38.8932310689374,38.9059616936887,38.9612590606149,38.9123244966935,38.9123244966935,38.8969781468093,38.9274357918548,38.9123244966935,38.8776881513239,38.8956168421101,38.8623686329774,38.9123244966935,38.9123244966935,38.9496847404464,38.9496847404464,38.9123244966935,38.9056459348207,38.906441607104,38.8975384697838,38.8814911968901,38.9181073001993,38.8451625626788,38.8789687804984,38.8451625626788,38.8787837374735,38.9179768530971,38.89946796557,38.8787837374735,38.8956168421101,38.922291710748,38.8969781468093,38.9191832287402,38.9176468207859,38.8787837374735,38.8596570987135,38.8451625626788,38.8612799858582,38.9176468207859,38.8451625626788,38.9380302729804,38.8920895186923,38.8506842992464,38.89946796557,38.8987616906937,38.9123244966935,38.9088970908615,38.8506842992464,38.8868261831403,38.9383020572908,38.8787837374735,38.9191832287402,38.9548153114553,38.9548153114553,38.9123244966935,38.8789687804984,38.8789687804984,38.8987616906937,38.9123244966935,38.9274357918548,38.9179768530971,38.8787837374735,38.9179768530971,38.9179768530971,38.9274357918548,38.9123244966935,38.9543732722424,38.9219902665064,38.8637419949753,38.8956168421101,38.9543732722424,38.8956168421101,38.8787837374735,38.9123244966935,38.9123244966935,38.8956168421101,38.8787837374735,38.8451625626788,38.9123244966935,38.9123244966935,38.8969781468093,38.9274357918548,38.8972990459879,38.9274357918548,38.9274357918548,38.9123244966935,38.9123244966935,38.9496847404464,38.9548153114553,38.9138938195312,38.8798055571672,38.9548153114553,38.9274357918548,38.9048787828423,38.9123244966935,38.9496847404464,38.9138938195312,38.9138938195312,38.8798055571672,38.9138938195312,38.8972990459879,38.9123244966935,38.9412657158159,38.8949395967258,38.9059616936887,38.9496847404464,38.9123244966935,38.9274357918548,38.8956168421101,38.9123244966935,38.9123244966935,38.8555817350196,38.8853157850615,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.9423807789324,38.9496847404464,38.8969781468093,38.9172327657757,38.9123244966935,38.9123244966935,38.9138938195312,38.9274357918548,38.9274357918548,38.9025284756572,38.8972990459879,38.8972990459879,38.9138938195312,38.9274357918548,38.8987616906937,38.8969781468093,38.9123244966935,38.8637419949753,38.9123244966935,38.9274357918548,38.9123244966935,38.9123244966935,38.8972990459879,38.8972990459879,38.9123244966935,38.9048787828423,38.9123244966935,38.8969781468093,38.9274357918548,38.9138938195312,38.8969781468093,38.8951330487548,38.9245082011412,38.8672656504225,38.9322811968581,38.9028321511955,38.9138938195312,38.9048345787287,38.9496847404464,38.9548153114553,38.9525347990541,38.9048787828423,38.9548153114553,38.8987616906937,38.9123244966935,38.9274357918548,38.9176468207859,38.9123244966935,38.8972990459879,38.9525347990541,38.916997788863,38.9172327657757,38.9235294962134,38.9235294962134,38.8975384697838,38.9286873734321,38.9059616936887,38.8532973452793,38.8987616906937,38.8987616906937,38.9025309490657,38.9548153114553,38.9025309490657,38.9699234208075,38.9059616936887,38.8859812387595,38.9048787828423,38.9219902665064,38.8792853939951,38.8973395414901,38.9173286251987,38.9274357918548,38.9123244966935,38.9123244966935,38.9123244966935,38.9123244966935,38.8956168421101,38.9274357918548,38.9326409761594,38.9123244966935,38.9123244966935,38.9123244966935,38.9173286251987,38.9315662995757,38.9097917836327,38.8798611710601,38.9439026221482,38.9048787828423,38.8920895186923,38.9138938195312,38.9123244966935,38.9274357918548,38.9123244966935,38.8972990459879,38.8972990459879,38.9219902665064,38.8956168421101,38.9620419851044,38.8987616906937,38.8623686329774,38.8783968237237,38.9123244966935,38.8969781468093,38.9123244966935,38.9048787828423,38.9123244966935,38.9543732722424,38.9420826382573,38.9028549309831,38.9140840395951,38.8881779931825,38.882879056474,38.9123244966935,38.9543732722424,38.9172327657757,38.9423807789324,38.9620419851044,38.9274357918548,38.9235294962134,38.9274357918548,38.8987616906937,38.9496847404464,38.8956168421101,38.8969781468093,38.8956168421101,38.8987616906937,38.9123244966935,38.9088970908615,38.9053614777588,38.9123244966935,38.8920895186923,38.9172327657757,38.9025284756572,38.9123244966935,38.9123244966935,38.9053614777588,38.9207543154941,38.9527019976704,38.8972990459879,38.8972990459879,38.9025309490657,38.9543732722424,38.8920895186923,38.8966674604563,38.8814911968901,38.8956168421101,38.9232051998081,38.9123244966935,38.9123244966935,38.9123244966935,38.9138938195312,38.9274357918548,38.9123244966935,38.9274357918548,38.9172327657757,38.9274357918548,38.8987616906937,38.9123244966935,38.9496847404464,38.8692912571222,38.8969884947294,38.8897499259629,38.9736097709123,38.9193237447498,38.9123244966935,38.9123244966935,38.9138938195312,38.9123244966935,38.9274357918548,38.9123244966935,38.8972990459879,38.8987616906937,38.8987616906937,38.9123244966935,38.9543732722424,38.8969549836939,38.9343212833728,38.9533530508333,38.9059616936887,38.9123244966935,38.8969781468093,38.88596760224,38.8956168421101,38.91572541709,38.8972990459879,38.8956168421101,38.8987616906937,38.9578329938863,38.9059616936887,38.9274357918548,38.9423807789324,38.9123244966935,38.9138938195312,38.9151453069616,38.8951330487548,38.9172327657757,38.9123244966935,38.9274357918548,38.9274357918548,38.9274357918548,38.8969781468093,38.919254300928,38.92371840331,38.9423807789324,38.9050231071001,38.9274357918548,38.9398335023024,38.8564559602009,38.9335551185953,38.9123244966935,38.9088970908615,38.8969781468093,38.8956168421101,38.9123244966935,38.8956168421101,38.9123244966935,38.9274357918548,38.9123244966935,38.8987616906937,38.9059616936887,38.9562161496287,38.9371209645819,38.9335551185953,38.9025284756572,38.9612590606149,38.9274357918548,38.9274357918548,38.8972990459879,38.9543732722424,38.9123244966935,38.931152542012,38.9223290813599,38.8969781468093,38.9138938195312,38.9342755467921,38.9274357918548,38.8987616906937,38.9123244966935,38.9274357918548,38.9123244966935,38.9123244966935,38.8798055571672,38.9548153114553,38.9088970908615,38.9140864176708,38.9123244966935,38.9138938195312,38.9123244966935,38.8956168421101,38.8623686329774,38.9123244966935,38.9123244966935,38.9053614777588,38.9002078830843,38.9123244966935,38.8859812387595,38.8956168421101,38.9543732722424,38.89946796557,38.8972990459879,38.9274357918548,38.9179768530971,38.8643495056954,38.8451625626788,38.8787837374735,38.8787837374735,38.8787837374735,38.8787837374735,38.9088970908615,38.8787837374735,38.9123244966935,38.8734635996299,38.91572541709,38.8798055571672,38.8969781468093,38.8972990459879,38.9499347278567,38.9123244966935,38.9524071341696,38.9123244966935,38.9123244966935,38.9274357918548,38.9123244966935,38.9200640465125,38.9025259356559,38.9191832287402,38.8789687804984,38.9123244966935,38.9596825927206,38.8787837374735,38.8787837374735,38.8451625626788,38.9048787828423,38.8787837374735,38.8787837374735,38.8787837374735,38.8451625626788,38.8787837374735,38.8787837374735,38.9274357918548,38.8969781468093,38.9123244966935,38.9343212833728,38.9123244966935,38.8969781468093,38.9085756249493,38.9176468207859,38.9123244966935,38.9123244966935,38.9123244966935,38.906441607104,38.9123244966935,38.9123244966935,38.9315625289304,38.8515854
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment