Skip to content

Instantly share code, notes, and snippets.

@timelyportfolio
Last active August 19, 2016 20:25
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save timelyportfolio/a772301f6f477f83e65398552a6f90d9 to your computer and use it in GitHub Desktop.
Save timelyportfolio/a772301f6f477f83e65398552a6f90d9 to your computer and use it in GitHub Desktop.
zoomable treemap bar charts
license: mit-cmu
scrolling: yes
border: no

Built with blockbuilder.org and R htmlwidgets

Chris Given @cmgiven has been posting a d3.js block/day for the last 12 days and has committed to a total of 15. I like to honor such fine work, and the only way I know how to honor his achievement is to make an htmlwidget out of my favorite of his masterpieces. I decided to use d3kit as an extra bonus, so that the chart will be reusable for both the JavaScript and R communities.

I had originally said I would stick to his 2 hour maximum rule, but I got carried away. I still have a lot of ideas for improvement.

R package

Github R package treebar

Live example

live example

Code to replicate

#devtools::install_github("timelyportfolio/treebar")

library(stringr)
library(treebar)
library(jsonlite)

## make it a more generic hierarchy
##  normally this step is not necessary
json <- str_replace_all(
  readLines(system.file("example/data.json",package="treebar")),
  "(country)|(continent)|(year)|(type)",
  "id"
)

data <- fromJSON(json, simplifyDataFrame=FALSE)

treebar(data)


# also allows different treemap tiling options
library(htmltools)

browsable(
  tagList(
    lapply(
      c("Squarify", "Binary", "SliceDice", "Slice", "Dice"),
      function(tile){
        tags$div(
          style = "float:left; display:inline;",
          tags$h3(tile),
          treebar(
            data,
            tile = tile, 
            height = 250,
            width = 400
          )
        )
      }
    )   
  )
)


# use different key for id and value
json <- str_replace_all(
  readLines("./inst/example/data.json"),
  "(country)|(continent)|(year)|(type)",
  "name"
)

json <- str_replace_all(
  json,
  "(value)",
  "size"
)

data <- fromJSON(json, simplifyDataFrame=FALSE)

treebar(data, value="size", id="name")
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<script src="data:application/x-javascript;base64,KGZ1bmN0aW9uKCkgewogIC8vIElmIHdpbmRvdy5IVE1MV2lkZ2V0cyBpcyBhbHJlYWR5IGRlZmluZWQsIHRoZW4gdXNlIGl0OyBvdGhlcndpc2UgY3JlYXRlIGEKICAvLyBuZXcgb2JqZWN0LiBUaGlzIGFsbG93cyBwcmVjZWRpbmcgY29kZSB0byBzZXQgb3B0aW9ucyB0aGF0IGFmZmVjdCB0aGUKICAvLyBpbml0aWFsaXphdGlvbiBwcm9jZXNzICh0aG91Z2ggbm9uZSBjdXJyZW50bHkgZXhpc3QpLgogIHdpbmRvdy5IVE1MV2lkZ2V0cyA9IHdpbmRvdy5IVE1MV2lkZ2V0cyB8fCB7fTsKCiAgLy8gU2VlIGlmIHdlJ3JlIHJ1bm5pbmcgaW4gYSB2aWV3ZXIgcGFuZS4gSWYgbm90LCB3ZSdyZSBpbiBhIHdlYiBicm93c2VyLgogIHZhciB2aWV3ZXJNb2RlID0gd2luZG93LkhUTUxXaWRnZXRzLnZpZXdlck1vZGUgPQogICAgICAvXGJ2aWV3ZXJfcGFuZT0xXGIvLnRlc3Qod2luZG93LmxvY2F0aW9uKTsKCiAgLy8gU2VlIGlmIHdlJ3JlIHJ1bm5pbmcgaW4gU2hpbnkgbW9kZS4gSWYgbm90LCBpdCdzIGEgc3RhdGljIGRvY3VtZW50LgogIC8vIE5vdGUgdGhhdCBzdGF0aWMgd2lkZ2V0cyBjYW4gYXBwZWFyIGluIGJvdGggU2hpbnkgYW5kIHN0YXRpYyBtb2RlcywgYnV0CiAgLy8gb2J2aW91c2x5LCBTaGlueSB3aWRnZXRzIGNhbiBvbmx5IGFwcGVhciBpbiBTaGlueSBhcHBzL2RvY3VtZW50cy4KICB2YXIgc2hpbnlNb2RlID0gd2luZG93LkhUTUxXaWRnZXRzLnNoaW55TW9kZSA9CiAgICAgIHR5cGVvZih3aW5kb3cuU2hpbnkpICE9PSAidW5kZWZpbmVkIiAmJiAhIXdpbmRvdy5TaGlueS5vdXRwdXRCaW5kaW5nczsKCiAgLy8gV2UgY2FuJ3QgY291bnQgb24galF1ZXJ5IGJlaW5nIGF2YWlsYWJsZSwgc28gd2UgaW1wbGVtZW50IG91ciBvd24KICAvLyB2ZXJzaW9uIGlmIG5lY2Vzc2FyeS4KICBmdW5jdGlvbiBxdWVyeVNlbGVjdG9yQWxsKHNjb3BlLCBzZWxlY3RvcikgewogICAgaWYgKHR5cGVvZihqUXVlcnkpICE9PSAidW5kZWZpbmVkIiAmJiBzY29wZSBpbnN0YW5jZW9mIGpRdWVyeSkgewogICAgICByZXR1cm4gc2NvcGUuZmluZChzZWxlY3Rvcik7CiAgICB9CiAgICBpZiAoc2NvcGUucXVlcnlTZWxlY3RvckFsbCkgewogICAgICByZXR1cm4gc2NvcGUucXVlcnlTZWxlY3RvckFsbChzZWxlY3Rvcik7CiAgICB9CiAgfQoKICBmdW5jdGlvbiBhc0FycmF5KHZhbHVlKSB7CiAgICBpZiAodmFsdWUgPT09IG51bGwpCiAgICAgIHJldHVybiBbXTsKICAgIGlmICgkLmlzQXJyYXkodmFsdWUpKQogICAgICByZXR1cm4gdmFsdWU7CiAgICByZXR1cm4gW3ZhbHVlXTsKICB9CgogIC8vIEltcGxlbWVudCBqUXVlcnkncyBleHRlbmQKICBmdW5jdGlvbiBleHRlbmQodGFyZ2V0IC8qLCAuLi4gKi8pIHsKICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09IDEpIHsKICAgICAgcmV0dXJuIHRhcmdldDsKICAgIH0KICAgIGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7CiAgICAgIHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07CiAgICAgIGZvciAodmFyIHByb3AgaW4gc291cmNlKSB7CiAgICAgICAgaWYgKHNvdXJjZS5oYXNPd25Qcm9wZXJ0eShwcm9wKSkgewogICAgICAgICAgdGFyZ2V0W3Byb3BdID0gc291cmNlW3Byb3BdOwogICAgICAgIH0KICAgICAgfQogICAgfQogICAgcmV0dXJuIHRhcmdldDsKICB9CgogIC8vIElFOCBkb2Vzbid0IHN1cHBvcnQgQXJyYXkuZm9yRWFjaC4KICBmdW5jdGlvbiBmb3JFYWNoKHZhbHVlcywgY2FsbGJhY2ssIHRoaXNBcmcpIHsKICAgIGlmICh2YWx1ZXMuZm9yRWFjaCkgewogICAgICB2YWx1ZXMuZm9yRWFjaChjYWxsYmFjaywgdGhpc0FyZyk7CiAgICB9IGVsc2UgewogICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHZhbHVlcy5sZW5ndGg7IGkrKykgewogICAgICAgIGNhbGxiYWNrLmNhbGwodGhpc0FyZywgdmFsdWVzW2ldLCBpLCB2YWx1ZXMpOwogICAgICB9CiAgICB9CiAgfQoKICAvLyBSZXBsYWNlcyB0aGUgc3BlY2lmaWVkIG1ldGhvZCB3aXRoIHRoZSByZXR1cm4gdmFsdWUgb2YgZnVuY1NvdXJjZS4KICAvLwogIC8vIE5vdGUgdGhhdCBmdW5jU291cmNlIHNob3VsZCBub3QgQkUgdGhlIG5ldyBtZXRob2QsIGl0IHNob3VsZCBiZSBhIGZ1bmN0aW9uCiAgLy8gdGhhdCBSRVRVUk5TIHRoZSBuZXcgbWV0aG9kLiBmdW5jU291cmNlIHJlY2VpdmVzIGEgc2luZ2xlIGFyZ3VtZW50IHRoYXQgaXMKICAvLyB0aGUgb3ZlcnJpZGRlbiBtZXRob2QsIGl0IGNhbiBiZSBjYWxsZWQgZnJvbSB0aGUgbmV3IG1ldGhvZC4gVGhlIG92ZXJyaWRkZW4KICAvLyBtZXRob2QgY2FuIGJlIGNhbGxlZCBsaWtlIGEgcmVndWxhciBmdW5jdGlvbiwgaXQgaGFzIHRoZSB0YXJnZXQgcGVybWFuZW50bHkKICAvLyBib3VuZCB0byBpdCBzbyAidGhpcyIgd2lsbCB3b3JrIGNvcnJlY3RseS4KICBmdW5jdGlvbiBvdmVycmlkZU1ldGhvZCh0YXJnZXQsIG1ldGhvZE5hbWUsIGZ1bmNTb3VyY2UpIHsKICAgIHZhciBzdXBlckZ1bmMgPSB0YXJnZXRbbWV0aG9kTmFtZV0gfHwgZnVuY3Rpb24oKSB7fTsKICAgIHZhciBzdXBlckZ1bmNCb3VuZCA9IGZ1bmN0aW9uKCkgewogICAgICByZXR1cm4gc3VwZXJGdW5jLmFwcGx5KHRhcmdldCwgYXJndW1lbnRzKTsKICAgIH07CiAgICB0YXJnZXRbbWV0aG9kTmFtZV0gPSBmdW5jU291cmNlKHN1cGVyRnVuY0JvdW5kKTsKICB9CgogIC8vIEFkZCBhIG1ldGhvZCB0byBkZWxlZ2F0b3IgdGhhdCwgd2hlbiBpbnZva2VkLCBjYWxscwogIC8vIGRlbGVnYXRlZS5tZXRob2ROYW1lLiBJZiB0aGVyZSBpcyBubyBzdWNoIG1ldGhvZCBvbgogIC8vIHRoZSBkZWxlZ2F0ZWUsIGJ1dCB0aGVyZSB3YXMgb25lIG9uIGRlbGVnYXRvciBiZWZvcmUKICAvLyBkZWxlZ2F0ZU1ldGhvZCB3YXMgY2FsbGVkLCB0aGVuIHRoZSBvcmlnaW5hbCB2ZXJzaW9uCiAgLy8gaXMgaW52b2tlZCBpbnN0ZWFkLgogIC8vIEZvciBleGFtcGxlOgogIC8vCiAgLy8gdmFyIGEgPSB7CiAgLy8gICBtZXRob2QxOiBmdW5jdGlvbigpIHsgY29uc29sZS5sb2coJ2ExJyk7IH0KICAvLyAgIG1ldGhvZDI6IGZ1bmN0aW9uKCkgeyBjb25zb2xlLmxvZygnYTInKTsgfQogIC8vIH07CiAgLy8gdmFyIGIgPSB7CiAgLy8gICBtZXRob2QxOiBmdW5jdGlvbigpIHsgY29uc29sZS5sb2coJ2IxJyk7IH0KICAvLyB9OwogIC8vIGRlbGVnYXRlTWV0aG9kKGEsIGIsICJtZXRob2QxIik7CiAgLy8gZGVsZWdhdGVNZXRob2QoYSwgYiwgIm1ldGhvZDIiKTsKICAvLyBhLm1ldGhvZDEoKTsKICAvLyBhLm1ldGhvZDIoKTsKICAvLwogIC8vIFRoZSBvdXRwdXQgd291bGQgYmUgImIxIiwgImEyIi4KICBmdW5jdGlvbiBkZWxlZ2F0ZU1ldGhvZChkZWxlZ2F0b3IsIGRlbGVnYXRlZSwgbWV0aG9kTmFtZSkgewogICAgdmFyIGluaGVyaXRlZCA9IGRlbGVnYXRvclttZXRob2ROYW1lXTsKICAgIGRlbGVnYXRvclttZXRob2ROYW1lXSA9IGZ1bmN0aW9uKCkgewogICAgICB2YXIgdGFyZ2V0ID0gZGVsZWdhdGVlOwogICAgICB2YXIgbWV0aG9kID0gZGVsZWdhdGVlW21ldGhvZE5hbWVdOwoKICAgICAgLy8gVGhlIG1ldGhvZCBkb2Vzbid0IGV4aXN0IG9uIHRoZSBkZWxlZ2F0ZWUuIEluc3RlYWQsCiAgICAgIC8vIGNhbGwgdGhlIG1ldGhvZCBvbiB0aGUgZGVsZWdhdG9yLCBpZiBpdCBleGlzdHMuCiAgICAgIGlmICghbWV0aG9kKSB7CiAgICAgICAgdGFyZ2V0ID0gZGVsZWdhdG9yOwogICAgICAgIG1ldGhvZCA9IGluaGVyaXRlZDsKICAgICAgfQoKICAgICAgaWYgKG1ldGhvZCkgewogICAgICAgIHJldHVybiBtZXRob2QuYXBwbHkodGFyZ2V0LCBhcmd1bWVudHMpOwogICAgICB9CiAgICB9OwogIH0KCiAgLy8gSW1wbGVtZW50IGEgdmFndWUgZmFjc2ltaWxpZSBvZiBqUXVlcnkncyBkYXRhIG1ldGhvZAogIGZ1bmN0aW9uIGVsZW1lbnREYXRhKGVsLCBuYW1lLCB2YWx1ZSkgewogICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT0gMikgewogICAgICByZXR1cm4gZWxbImh0bWx3aWRnZXRfZGF0YV8iICsgbmFtZV07CiAgICB9IGVsc2UgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT0gMykgewogICAgICBlbFsiaHRtbHdpZGdldF9kYXRhXyIgKyBuYW1lXSA9IHZhbHVlOwogICAgICByZXR1cm4gZWw7CiAgICB9IGVsc2UgewogICAgICB0aHJvdyBuZXcgRXJyb3IoIldyb25nIG51bWJlciBvZiBhcmd1bWVudHMgZm9yIGVsZW1lbnREYXRhOiAiICsKICAgICAgICBhcmd1bWVudHMubGVuZ3RoKTsKICAgIH0KICB9CgogIC8vIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMzQ0NjE3MC9lc2NhcGUtc3RyaW5nLWZvci11c2UtaW4tamF2YXNjcmlwdC1yZWdleAogIGZ1bmN0aW9uIGVzY2FwZVJlZ0V4cChzdHIpIHsKICAgIHJldHVybiBzdHIucmVwbGFjZSgvW1wtXFtcXVwvXHtcfVwoXClcKlwrXD9cLlxcXF5cJFx8XS9nLCAiXFwkJiIpOwogIH0KCiAgZnVuY3Rpb24gaGFzQ2xhc3MoZWwsIGNsYXNzTmFtZSkgewogICAgdmFyIHJlID0gbmV3IFJlZ0V4cCgiXFxiIiArIGVzY2FwZVJlZ0V4cChjbGFzc05hbWUpICsgIlxcYiIpOwogICAgcmV0dXJuIHJlLnRlc3QoZWwuY2xhc3NOYW1lKTsKICB9CgogIC8vIGVsZW1lbnRzIC0gYXJyYXkgKG9yIGFycmF5LWxpa2Ugb2JqZWN0KSBvZiBIVE1MIGVsZW1lbnRzCiAgLy8gY2xhc3NOYW1lIC0gY2xhc3MgbmFtZSB0byB0ZXN0IGZvcgogIC8vIGluY2x1ZGUgLSBpZiB0cnVlLCBvbmx5IHJldHVybiBlbGVtZW50cyB3aXRoIGdpdmVuIGNsYXNzTmFtZTsKICAvLyAgIGlmIGZhbHNlLCBvbmx5IHJldHVybiBlbGVtZW50cyAqd2l0aG91dCogZ2l2ZW4gY2xhc3NOYW1lCiAgZnVuY3Rpb24gZmlsdGVyQnlDbGFzcyhlbGVtZW50cywgY2xhc3NOYW1lLCBpbmNsdWRlKSB7CiAgICB2YXIgcmVzdWx0cyA9IFtdOwogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbGVtZW50cy5sZW5ndGg7IGkrKykgewogICAgICBpZiAoaGFzQ2xhc3MoZWxlbWVudHNbaV0sIGNsYXNzTmFtZSkgPT0gaW5jbHVkZSkKICAgICAgICByZXN1bHRzLnB1c2goZWxlbWVudHNbaV0pOwogICAgfQogICAgcmV0dXJuIHJlc3VsdHM7CiAgfQoKICBmdW5jdGlvbiBvbihvYmosIGV2ZW50TmFtZSwgZnVuYykgewogICAgaWYgKG9iai5hZGRFdmVudExpc3RlbmVyKSB7CiAgICAgIG9iai5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgZnVuYywgZmFsc2UpOwogICAgfSBlbHNlIGlmIChvYmouYXR0YWNoRXZlbnQpIHsKICAgICAgb2JqLmF0dGFjaEV2ZW50KGV2ZW50TmFtZSwgZnVuYyk7CiAgICB9CiAgfQoKICBmdW5jdGlvbiBvZmYob2JqLCBldmVudE5hbWUsIGZ1bmMpIHsKICAgIGlmIChvYmoucmVtb3ZlRXZlbnRMaXN0ZW5lcikKICAgICAgb2JqLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCBmdW5jLCBmYWxzZSk7CiAgICBlbHNlIGlmIChvYmouZGV0YWNoRXZlbnQpIHsKICAgICAgb2JqLmRldGFjaEV2ZW50KGV2ZW50TmFtZSwgZnVuYyk7CiAgICB9CiAgfQoKICAvLyBUcmFuc2xhdGUgYXJyYXkgb2YgdmFsdWVzIHRvIHRvcC9yaWdodC9ib3R0b20vbGVmdCwgYXMgdXN1YWwgd2l0aAogIC8vIHRoZSAicGFkZGluZyIgQ1NTIHByb3BlcnR5CiAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL3BhZGRpbmcKICBmdW5jdGlvbiB1bnBhY2tQYWRkaW5nKHZhbHVlKSB7CiAgICBpZiAodHlwZW9mKHZhbHVlKSA9PT0gIm51bWJlciIpCiAgICAgIHZhbHVlID0gW3ZhbHVlXTsKICAgIGlmICh2YWx1ZS5sZW5ndGggPT09IDEpIHsKICAgICAgcmV0dXJuIHt0b3A6IHZhbHVlWzBdLCByaWdodDogdmFsdWVbMF0sIGJvdHRvbTogdmFsdWVbMF0sIGxlZnQ6IHZhbHVlWzBdfTsKICAgIH0KICAgIGlmICh2YWx1ZS5sZW5ndGggPT09IDIpIHsKICAgICAgcmV0dXJuIHt0b3A6IHZhbHVlWzBdLCByaWdodDogdmFsdWVbMV0sIGJvdHRvbTogdmFsdWVbMF0sIGxlZnQ6IHZhbHVlWzFdfTsKICAgIH0KICAgIGlmICh2YWx1ZS5sZW5ndGggPT09IDMpIHsKICAgICAgcmV0dXJuIHt0b3A6IHZhbHVlWzBdLCByaWdodDogdmFsdWVbMV0sIGJvdHRvbTogdmFsdWVbMl0sIGxlZnQ6IHZhbHVlWzFdfTsKICAgIH0KICAgIGlmICh2YWx1ZS5sZW5ndGggPT09IDQpIHsKICAgICAgcmV0dXJuIHt0b3A6IHZhbHVlWzBdLCByaWdodDogdmFsdWVbMV0sIGJvdHRvbTogdmFsdWVbMl0sIGxlZnQ6IHZhbHVlWzNdfTsKICAgIH0KICB9CgogIC8vIENvbnZlcnQgYW4gdW5wYWNrZWQgcGFkZGluZyBvYmplY3QgdG8gYSBDU1MgdmFsdWUKICBmdW5jdGlvbiBwYWRkaW5nVG9Dc3MocGFkZGluZ09iaikgewogICAgcmV0dXJuIHBhZGRpbmdPYmoudG9wICsgInB4ICIgKyBwYWRkaW5nT2JqLnJpZ2h0ICsgInB4ICIgKyBwYWRkaW5nT2JqLmJvdHRvbSArICJweCAiICsgcGFkZGluZ09iai5sZWZ0ICsgInB4IjsKICB9CgogIC8vIE1ha2VzIGEgbnVtYmVyIHN1aXRhYmxlIGZvciBDU1MKICBmdW5jdGlvbiBweCh4KSB7CiAgICBpZiAodHlwZW9mKHgpID09PSAibnVtYmVyIikKICAgICAgcmV0dXJuIHggKyAicHgiOwogICAgZWxzZQogICAgICByZXR1cm4geDsKICB9CgogIC8vIFJldHJpZXZlcyBydW50aW1lIHdpZGdldCBzaXppbmcgaW5mb3JtYXRpb24gZm9yIGFuIGVsZW1lbnQuCiAgLy8gVGhlIHJldHVybiB2YWx1ZSBpcyBlaXRoZXIgbnVsbCwgb3IgYW4gb2JqZWN0IHdpdGggZmlsbCwgcGFkZGluZywKICAvLyBkZWZhdWx0V2lkdGgsIGRlZmF1bHRIZWlnaHQgZmllbGRzLgogIGZ1bmN0aW9uIHNpemluZ1BvbGljeShlbCkgewogICAgdmFyIHNpemluZ0VsID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcigic2NyaXB0W2RhdGEtZm9yPSciICsgZWwuaWQgKyAiJ11bdHlwZT0nYXBwbGljYXRpb24vaHRtbHdpZGdldC1zaXppbmcnXSIpOwogICAgaWYgKCFzaXppbmdFbCkKICAgICAgcmV0dXJuIG51bGw7CiAgICB2YXIgc3AgPSBKU09OLnBhcnNlKHNpemluZ0VsLnRleHRDb250ZW50IHx8IHNpemluZ0VsLnRleHQgfHwgInt9Iik7CiAgICBpZiAodmlld2VyTW9kZSkgewogICAgICByZXR1cm4gc3Audmlld2VyOwogICAgfSBlbHNlIHsKICAgICAgcmV0dXJuIHNwLmJyb3dzZXI7CiAgICB9CiAgfQoKICAvLyBAcGFyYW0gdGFza3MgQXJyYXkgb2Ygc3RyaW5ncyAob3IgZmFsc3kgdmFsdWUsIGluIHdoaWNoIGNhc2Ugbm8tb3ApLgogIC8vICAgRWFjaCBlbGVtZW50IG11c3QgYmUgYSB2YWxpZCBKYXZhU2NyaXB0IGV4cHJlc3Npb24gdGhhdCB5aWVsZHMgYQogIC8vICAgZnVuY3Rpb24uIE9yLCBjYW4gYmUgYW4gYXJyYXkgb2Ygb2JqZWN0cyB3aXRoICJjb2RlIiBhbmQgImRhdGEiCiAgLy8gICBwcm9wZXJ0aWVzOyBpbiB0aGlzIGNhc2UsIHRoZSAiY29kZSIgcHJvcGVydHkgc2hvdWxkIGJlIGEgc3RyaW5nCiAgLy8gICBvZiBKUyB0aGF0J3MgYW4gZXhwciB0aGF0IHlpZWxkcyBhIGZ1bmN0aW9uLCBhbmQgImRhdGEiIHNob3VsZCBiZQogIC8vICAgYW4gb2JqZWN0IHRoYXQgd2lsbCBiZSBhZGRlZCBhcyBhbiBhZGRpdGlvbmFsIGFyZ3VtZW50IHdoZW4gdGhhdAogIC8vICAgZnVuY3Rpb24gaXMgY2FsbGVkLgogIC8vIEBwYXJhbSB0YXJnZXQgVGhlIG9iamVjdCB0aGF0IHdpbGwgYmUgInRoaXMiIGZvciBlYWNoIGZ1bmN0aW9uCiAgLy8gICBleGVjdXRpb24uCiAgLy8gQHBhcmFtIGFyZ3MgQXJyYXkgb2YgYXJndW1lbnRzIHRvIGJlIHBhc3NlZCB0byB0aGUgZnVuY3Rpb25zLiAoVGhlCiAgLy8gICBzYW1lIGFyZ3VtZW50cyB3aWxsIGJlIHBhc3NlZCB0byBhbGwgZnVuY3Rpb25zLikKICBmdW5jdGlvbiBldmFsQW5kUnVuKHRhc2tzLCB0YXJnZXQsIGFyZ3MpIHsKICAgIGlmICh0YXNrcykgewogICAgICBmb3JFYWNoKHRhc2tzLCBmdW5jdGlvbih0YXNrKSB7CiAgICAgICAgdmFyIHRoZXNlQXJncyA9IGFyZ3M7CiAgICAgICAgaWYgKHR5cGVvZih0YXNrKSA9PT0gIm9iamVjdCIpIHsKICAgICAgICAgIHRoZXNlQXJncyA9IHRoZXNlQXJncy5jb25jYXQoW3Rhc2suZGF0YV0pOwogICAgICAgICAgdGFzayA9IHRhc2suY29kZTsKICAgICAgICB9CiAgICAgICAgdmFyIHRhc2tGdW5jID0gZXZhbCgiKCIgKyB0YXNrICsgIikiKTsKICAgICAgICBpZiAodHlwZW9mKHRhc2tGdW5jKSAhPT0gImZ1bmN0aW9uIikgewogICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJUYXNrIG11c3QgYmUgYSBmdW5jdGlvbiEgU291cmNlOlxuIiArIHRhc2spOwogICAgICAgIH0KICAgICAgICB0YXNrRnVuYy5hcHBseSh0YXJnZXQsIHRoZXNlQXJncyk7CiAgICAgIH0pOwogICAgfQogIH0KCiAgZnVuY3Rpb24gaW5pdFNpemluZyhlbCkgewogICAgdmFyIHNpemluZyA9IHNpemluZ1BvbGljeShlbCk7CiAgICBpZiAoIXNpemluZykKICAgICAgcmV0dXJuOwoKICAgIHZhciBjZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaHRtbHdpZGdldF9jb250YWluZXIiKTsKICAgIGlmICghY2VsKQogICAgICByZXR1cm47CgogICAgaWYgKHR5cGVvZihzaXppbmcucGFkZGluZykgIT09ICJ1bmRlZmluZWQiKSB7CiAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUubWFyZ2luID0gIjAiOwogICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLnBhZGRpbmcgPSBwYWRkaW5nVG9Dc3ModW5wYWNrUGFkZGluZyhzaXppbmcucGFkZGluZykpOwogICAgfQoKICAgIGlmIChzaXppbmcuZmlsbCkgewogICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93ID0gImhpZGRlbiI7CiAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUud2lkdGggPSAiMTAwJSI7CiAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUuaGVpZ2h0ID0gIjEwMCUiOwogICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUud2lkdGggPSAiMTAwJSI7CiAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5oZWlnaHQgPSAiMTAwJSI7CiAgICAgIGlmIChjZWwpIHsKICAgICAgICBjZWwuc3R5bGUucG9zaXRpb24gPSAiYWJzb2x1dGUiOwogICAgICAgIHZhciBwYWQgPSB1bnBhY2tQYWRkaW5nKHNpemluZy5wYWRkaW5nKTsKICAgICAgICBjZWwuc3R5bGUudG9wID0gcGFkLnRvcCArICJweCI7CiAgICAgICAgY2VsLnN0eWxlLnJpZ2h0ID0gcGFkLnJpZ2h0ICsgInB4IjsKICAgICAgICBjZWwuc3R5bGUuYm90dG9tID0gcGFkLmJvdHRvbSArICJweCI7CiAgICAgICAgY2VsLnN0eWxlLmxlZnQgPSBwYWQubGVmdCArICJweCI7CiAgICAgICAgZWwuc3R5bGUud2lkdGggPSAiMTAwJSI7CiAgICAgICAgZWwuc3R5bGUuaGVpZ2h0ID0gIjEwMCUiOwogICAgICB9CgogICAgICByZXR1cm4gewogICAgICAgIGdldFdpZHRoOiBmdW5jdGlvbigpIHsgcmV0dXJuIGNlbC5vZmZzZXRXaWR0aDsgfSwKICAgICAgICBnZXRIZWlnaHQ6IGZ1bmN0aW9uKCkgeyByZXR1cm4gY2VsLm9mZnNldEhlaWdodDsgfQogICAgICB9OwoKICAgIH0gZWxzZSB7CiAgICAgIGVsLnN0eWxlLndpZHRoID0gcHgoc2l6aW5nLndpZHRoKTsKICAgICAgZWwuc3R5bGUuaGVpZ2h0ID0gcHgoc2l6aW5nLmhlaWdodCk7CgogICAgICByZXR1cm4gewogICAgICAgIGdldFdpZHRoOiBmdW5jdGlvbigpIHsgcmV0dXJuIGVsLm9mZnNldFdpZHRoOyB9LAogICAgICAgIGdldEhlaWdodDogZnVuY3Rpb24oKSB7IHJldHVybiBlbC5vZmZzZXRIZWlnaHQ7IH0KICAgICAgfTsKICAgIH0KICB9CgogIC8vIERlZmF1bHQgaW1wbGVtZW50YXRpb25zIGZvciBtZXRob2RzCiAgdmFyIGRlZmF1bHRzID0gewogICAgZmluZDogZnVuY3Rpb24oc2NvcGUpIHsKICAgICAgcmV0dXJuIHF1ZXJ5U2VsZWN0b3JBbGwoc2NvcGUsICIuIiArIHRoaXMubmFtZSk7CiAgICB9LAogICAgcmVuZGVyRXJyb3I6IGZ1bmN0aW9uKGVsLCBlcnIpIHsKICAgICAgdmFyICRlbCA9ICQoZWwpOwoKICAgICAgdGhpcy5jbGVhckVycm9yKGVsKTsKCiAgICAgIC8vIEFkZCBhbGwgdGhlc2UgZXJyb3IgY2xhc3NlcywgYXMgU2hpbnkgZG9lcwogICAgICB2YXIgZXJyQ2xhc3MgPSAic2hpbnktb3V0cHV0LWVycm9yIjsKICAgICAgaWYgKGVyci50eXBlICE9PSBudWxsKSB7CiAgICAgICAgLy8gdXNlIHRoZSBjbGFzc2VzIG9mIHRoZSBlcnJvciBjb25kaXRpb24gYXMgQ1NTIGNsYXNzIG5hbWVzCiAgICAgICAgZXJyQ2xhc3MgPSBlcnJDbGFzcyArICIgIiArICQubWFwKGFzQXJyYXkoZXJyLnR5cGUpLCBmdW5jdGlvbih0eXBlKSB7CiAgICAgICAgICByZXR1cm4gZXJyQ2xhc3MgKyAiLSIgKyB0eXBlOwogICAgICAgIH0pLmpvaW4oIiAiKTsKICAgICAgfQogICAgICBlcnJDbGFzcyA9IGVyckNsYXNzICsgIiBodG1sd2lkZ2V0cy1lcnJvciI7CgogICAgICAvLyBJcyBlbCBpbmxpbmUgb3IgYmxvY2s/IElmIGlubGluZSBvciBpbmxpbmUtYmxvY2ssIGp1c3QgZGlzcGxheTpub25lIGl0CiAgICAgIC8vIGFuZCBhZGQgYW4gaW5saW5lIGVycm9yLgogICAgICB2YXIgZGlzcGxheSA9ICRlbC5jc3MoImRpc3BsYXkiKTsKICAgICAgJGVsLmRhdGEoInJlc3RvcmUtZGlzcGxheS1tb2RlIiwgZGlzcGxheSk7CgogICAgICBpZiAoZGlzcGxheSA9PT0gImlubGluZSIgfHwgZGlzcGxheSA9PT0gImlubGluZS1ibG9jayIpIHsKICAgICAgICAkZWwuaGlkZSgpOwogICAgICAgIGlmIChlcnIubWVzc2FnZSAhPT0gIiIpIHsKICAgICAgICAgIHZhciBlcnJvclNwYW4gPSAkKCI8c3Bhbj4iKS5hZGRDbGFzcyhlcnJDbGFzcyk7CiAgICAgICAgICBlcnJvclNwYW4udGV4dChlcnIubWVzc2FnZSk7CiAgICAgICAgICAkZWwuYWZ0ZXIoZXJyb3JTcGFuKTsKICAgICAgICB9CiAgICAgIH0gZWxzZSBpZiAoZGlzcGxheSA9PT0gImJsb2NrIikgewogICAgICAgIC8vIElmIGJsb2NrLCBhZGQgYW4gZXJyb3IganVzdCBhZnRlciB0aGUgZWwsIHNldCB2aXNpYmlsaXR5Om5vbmUgb24gdGhlCiAgICAgICAgLy8gZWwsIGFuZCBwb3NpdGlvbiB0aGUgZXJyb3IgdG8gYmUgb24gdG9wIG9mIHRoZSBlbC4KICAgICAgICAvLyBNYXJrIGl0IHdpdGggYSB1bmlxdWUgSUQgYW5kIENTUyBjbGFzcyBzbyB3ZSBjYW4gcmVtb3ZlIGl0IGxhdGVyLgogICAgICAgICRlbC5jc3MoInZpc2liaWxpdHkiLCAiaGlkZGVuIik7CiAgICAgICAgaWYgKGVyci5tZXNzYWdlICE9PSAiIikgewogICAgICAgICAgdmFyIGVycm9yRGl2ID0gJCgiPGRpdj4iKS5hZGRDbGFzcyhlcnJDbGFzcykuY3NzKCJwb3NpdGlvbiIsICJhYnNvbHV0ZSIpCiAgICAgICAgICAgIC5jc3MoInRvcCIsIGVsLm9mZnNldFRvcCkKICAgICAgICAgICAgLmNzcygibGVmdCIsIGVsLm9mZnNldExlZnQpCiAgICAgICAgICAgIC8vIHNldHRpbmcgd2lkdGggY2FuIHB1c2ggb3V0IHRoZSBwYWdlIHNpemUsIGZvcmNpbmcgb3RoZXJ3aXNlCiAgICAgICAgICAgIC8vIHVubmVjZXNzYXJ5IHNjcm9sbGJhcnMgdG8gYXBwZWFyIGFuZCBtYWtpbmcgaXQgaW1wb3NzaWJsZSBmb3IKICAgICAgICAgICAgLy8gdGhlIGVsZW1lbnQgdG8gc2hyaW5rOyBzbyB1c2UgbWF4LXdpZHRoIGluc3RlYWQKICAgICAgICAgICAgLmNzcygibWF4V2lkdGgiLCBlbC5vZmZzZXRXaWR0aCkKICAgICAgICAgICAgLmNzcygiaGVpZ2h0IiwgZWwub2Zmc2V0SGVpZ2h0KTsKICAgICAgICAgIGVycm9yRGl2LnRleHQoZXJyLm1lc3NhZ2UpOwogICAgICAgICAgJGVsLmFmdGVyKGVycm9yRGl2KTsKCiAgICAgICAgICAvLyBSZWFsbHkgZHVtYiB3YXkgdG8ga2VlcCB0aGUgc2l6ZS9wb3NpdGlvbiBvZiB0aGUgZXJyb3IgaW4gc3luYyB3aXRoCiAgICAgICAgICAvLyB0aGUgcGFyZW50IGVsZW1lbnQgYXMgdGhlIHdpbmRvdyBpcyByZXNpemVkIG9yIHdoYXRldmVyLgogICAgICAgICAgdmFyIGludElkID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGlmICghZXJyb3JEaXZbMF0ucGFyZW50RWxlbWVudCkgewogICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoaW50SWQpOwogICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgICAgICBlcnJvckRpdgogICAgICAgICAgICAgIC5jc3MoInRvcCIsIGVsLm9mZnNldFRvcCkKICAgICAgICAgICAgICAuY3NzKCJsZWZ0IiwgZWwub2Zmc2V0TGVmdCkKICAgICAgICAgICAgICAuY3NzKCJtYXhXaWR0aCIsIGVsLm9mZnNldFdpZHRoKQogICAgICAgICAgICAgIC5jc3MoImhlaWdodCIsIGVsLm9mZnNldEhlaWdodCk7CiAgICAgICAgICB9LCA1MDApOwogICAgICAgIH0KICAgICAgfQogICAgfSwKICAgIGNsZWFyRXJyb3I6IGZ1bmN0aW9uKGVsKSB7CiAgICAgIHZhciAkZWwgPSAkKGVsKTsKICAgICAgdmFyIGRpc3BsYXkgPSAkZWwuZGF0YSgicmVzdG9yZS1kaXNwbGF5LW1vZGUiKTsKICAgICAgJGVsLmRhdGEoInJlc3RvcmUtZGlzcGxheS1tb2RlIiwgbnVsbCk7CgogICAgICBpZiAoZGlzcGxheSA9PT0gImlubGluZSIgfHwgZGlzcGxheSA9PT0gImlubGluZS1ibG9jayIpIHsKICAgICAgICBpZiAoZGlzcGxheSkKICAgICAgICAgICRlbC5jc3MoImRpc3BsYXkiLCBkaXNwbGF5KTsKICAgICAgICAkKGVsLm5leHRTaWJsaW5nKS5maWx0ZXIoIi5odG1sd2lkZ2V0cy1lcnJvciIpLnJlbW92ZSgpOwogICAgICB9IGVsc2UgaWYgKGRpc3BsYXkgPT09ICJibG9jayIpewogICAgICAgICRlbC5jc3MoInZpc2liaWxpdHkiLCAiaW5oZXJpdCIpOwogICAgICAgICQoZWwubmV4dFNpYmxpbmcpLmZpbHRlcigiLmh0bWx3aWRnZXRzLWVycm9yIikucmVtb3ZlKCk7CiAgICAgIH0KICAgIH0sCiAgICBzaXppbmc6IHt9CiAgfTsKCiAgLy8gQ2FsbGVkIGJ5IHdpZGdldCBiaW5kaW5ncyB0byByZWdpc3RlciBhIG5ldyB0eXBlIG9mIHdpZGdldC4gVGhlIGRlZmluaXRpb24KICAvLyBvYmplY3QgY2FuIGNvbnRhaW4gdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOgogIC8vIC0gbmFtZSAocmVxdWlyZWQpIC0gQSBzdHJpbmcgaW5kaWNhdGluZyB0aGUgYmluZGluZyBuYW1lLCB3aGljaCB3aWxsIGJlCiAgLy8gICB1c2VkIGJ5IGRlZmF1bHQgYXMgdGhlIENTUyBjbGFzc25hbWUgdG8gbG9vayBmb3IuCiAgLy8gLSBpbml0aWFsaXplIChvcHRpb25hbCkgLSBBIGZ1bmN0aW9uKGVsKSB0aGF0IHdpbGwgYmUgY2FsbGVkIG9uY2UgcGVyCiAgLy8gICB3aWRnZXQgZWxlbWVudDsgaWYgYSB2YWx1ZSBpcyByZXR1cm5lZCwgaXQgd2lsbCBiZSBwYXNzZWQgYXMgdGhlIHRoaXJkCiAgLy8gICB2YWx1ZSB0byByZW5kZXJWYWx1ZS4KICAvLyAtIHJlbmRlclZhbHVlIChyZXF1aXJlZCkgLSBBIGZ1bmN0aW9uKGVsLCBkYXRhLCBpbml0VmFsdWUpIHRoYXQgd2lsbCBiZQogIC8vICAgY2FsbGVkIHdpdGggZGF0YS4gU3RhdGljIGNvbnRleHRzIHdpbGwgY2F1c2UgdGhpcyB0byBiZSBjYWxsZWQgb25jZSBwZXIKICAvLyAgIGVsZW1lbnQ7IFNoaW55IGFwcHMgd2lsbCBjYXVzZSB0aGlzIHRvIGJlIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyBwZXIKICAvLyAgIGVsZW1lbnQsIGFzIHRoZSBkYXRhIGNoYW5nZXMuCiAgd2luZG93LkhUTUxXaWRnZXRzLndpZGdldCA9IGZ1bmN0aW9uKGRlZmluaXRpb24pIHsKICAgIGlmICghZGVmaW5pdGlvbi5uYW1lKSB7CiAgICAgIHRocm93IG5ldyBFcnJvcigiV2lkZ2V0IG11c3QgaGF2ZSBhIG5hbWUiKTsKICAgIH0KICAgIGlmICghZGVmaW5pdGlvbi50eXBlKSB7CiAgICAgIHRocm93IG5ldyBFcnJvcigiV2lkZ2V0IG11c3QgaGF2ZSBhIHR5cGUiKTsKICAgIH0KICAgIC8vIEN1cnJlbnRseSB3ZSBvbmx5IHN1cHBvcnQgb3V0cHV0IHdpZGdldHMKICAgIGlmIChkZWZpbml0aW9uLnR5cGUgIT09ICJvdXRwdXQiKSB7CiAgICAgIHRocm93IG5ldyBFcnJvcigiVW5yZWNvZ25pemVkIHdpZGdldCB0eXBlICciICsgZGVmaW5pdGlvbi50eXBlICsgIiciKTsKICAgIH0KICAgIC8vIFRPRE86IFZlcmlmeSB0aGF0IC5uYW1lIGlzIGEgdmFsaWQgQ1NTIGNsYXNzbmFtZQoKICAgIC8vIFN1cHBvcnQgbmV3LXN0eWxlIGluc3RhbmNlLWJvdW5kIGRlZmluaXRpb25zLiBPbGQtc3R5bGUgY2xhc3MtYm91bmQKICAgIC8vIGRlZmluaXRpb25zIGhhdmUgb25lIHdpZGdldCAib2JqZWN0IiBwZXIgd2lkZ2V0IHBlciB0eXBlL2NsYXNzIG9mCiAgICAvLyB3aWRnZXQ7IHRoZSByZW5kZXJWYWx1ZSBhbmQgcmVzaXplIG1ldGhvZHMgb24gc3VjaCB3aWRnZXQgb2JqZWN0cwogICAgLy8gdGFrZSBlbCBhbmQgaW5zdGFuY2UgYXJndW1lbnRzLCBiZWNhdXNlIHRoZSB3aWRnZXQgb2JqZWN0IGNhbid0CiAgICAvLyBzdG9yZSB0aGVtLiBOZXctc3R5bGUgaW5zdGFuY2UtYm91bmQgZGVmaW5pdGlvbnMgaGF2ZSBvbmUgd2lkZ2V0CiAgICAvLyBvYmplY3QgcGVyIHdpZGdldCBpbnN0YW5jZTsgdGhlIGRlZmluaXRpb24gdGhhdCdzIHBhc3NlZCBpbiBkb2Vzbid0CiAgICAvLyBwcm92aWRlIHJlbmRlclZhbHVlIG9yIHJlc2l6ZSBtZXRob2RzIGF0IGFsbCwganVzdCB0aGUgc2luZ2xlIG1ldGhvZAogICAgLy8gICBmYWN0b3J5KGVsLCB3aWR0aCwgaGVpZ2h0KQogICAgLy8gd2hpY2ggcmV0dXJucyBhbiBvYmplY3QgdGhhdCBoYXMgcmVuZGVyVmFsdWUoeCkgYW5kIHJlc2l6ZSh3LCBoKS4KICAgIC8vIFRoaXMgZW5hYmxlcyBhIGZhciBtb3JlIG5hdHVyYWwgcHJvZ3JhbW1pbmcgc3R5bGUgZm9yIHRoZSB3aWRnZXQKICAgIC8vIGF1dGhvciwgd2hvIGNhbiBzdG9yZSBwZXItaW5zdGFuY2Ugc3RhdGUgdXNpbmcgZWl0aGVyIE9PLXN0eWxlCiAgICAvLyBpbnN0YW5jZSBmaWVsZHMgb3IgZnVuY3Rpb25hbC1zdHlsZSBjbG9zdXJlIHZhcmlhYmxlcyAoSSBndWVzcyB0aGlzCiAgICAvLyBpcyBpbiBjb250cmFzdCB0byB3aGF0IGNhbiBvbmx5IGJlIGNhbGxlZCBDLXN0eWxlIHBzZXVkby1PTyB3aGljaCBpcwogICAgLy8gd2hhdCB3ZSByZXF1aXJlZCBiZWZvcmUpLgogICAgaWYgKGRlZmluaXRpb24uZmFjdG9yeSkgewogICAgICBkZWZpbml0aW9uID0gY3JlYXRlTGVnYWN5RGVmaW5pdGlvbkFkYXB0ZXIoZGVmaW5pdGlvbik7CiAgICB9CgogICAgaWYgKCFkZWZpbml0aW9uLnJlbmRlclZhbHVlKSB7CiAgICAgIHRocm93IG5ldyBFcnJvcigiV2lkZ2V0IG11c3QgaGF2ZSBhIHJlbmRlclZhbHVlIGZ1bmN0aW9uIik7CiAgICB9CgogICAgLy8gRm9yIHN0YXRpYyByZW5kZXJpbmcgKG5vbi1TaGlueSksIHVzZSBhIHNpbXBsZSB3aWRnZXQgcmVnaXN0cmF0aW9uCiAgICAvLyBzY2hlbWUuIFdlIGFsc28gdXNlIHRoaXMgc2NoZW1lIGZvciBTaGlueSBhcHBzL2RvY3VtZW50cyB0aGF0IGFsc28KICAgIC8vIGNvbnRhaW4gc3RhdGljIHdpZGdldHMuCiAgICB3aW5kb3cuSFRNTFdpZGdldHMud2lkZ2V0cyA9IHdpbmRvdy5IVE1MV2lkZ2V0cy53aWRnZXRzIHx8IFtdOwogICAgLy8gTWVyZ2UgZGVmYXVsdHMgaW50byB0aGUgZGVmaW5pdGlvbjsgZG9uJ3QgbXV0YXRlIHRoZSBvcmlnaW5hbCBkZWZpbml0aW9uLgogICAgdmFyIHN0YXRpY0JpbmRpbmcgPSBleHRlbmQoe30sIGRlZmF1bHRzLCBkZWZpbml0aW9uKTsKICAgIG92ZXJyaWRlTWV0aG9kKHN0YXRpY0JpbmRpbmcsICJmaW5kIiwgZnVuY3Rpb24oc3VwZXJmdW5jKSB7CiAgICAgIHJldHVybiBmdW5jdGlvbihzY29wZSkgewogICAgICAgIHZhciByZXN1bHRzID0gc3VwZXJmdW5jKHNjb3BlKTsKICAgICAgICAvLyBGaWx0ZXIgb3V0IFNoaW55IG91dHB1dHMsIHdlIG9ubHkgd2FudCB0aGUgc3RhdGljIGtpbmQKICAgICAgICByZXR1cm4gZmlsdGVyQnlDbGFzcyhyZXN1bHRzLCAiaHRtbC13aWRnZXQtb3V0cHV0IiwgZmFsc2UpOwogICAgICB9OwogICAgfSk7CiAgICB3aW5kb3cuSFRNTFdpZGdldHMud2lkZ2V0cy5wdXNoKHN0YXRpY0JpbmRpbmcpOwoKICAgIGlmIChzaGlueU1vZGUpIHsKICAgICAgLy8gU2hpbnkgaXMgcnVubmluZy4gUmVnaXN0ZXIgdGhlIGRlZmluaXRpb24gd2l0aCBhbiBvdXRwdXQgYmluZGluZy4KICAgICAgLy8gVGhlIGRlZmluaXRpb24gaXRzZWxmIHdpbGwgbm90IGJlIHRoZSBvdXRwdXQgYmluZGluZywgaW5zdGVhZAogICAgICAvLyB3ZSB3aWxsIG1ha2UgYW4gb3V0cHV0IGJpbmRpbmcgb2JqZWN0IHRoYXQgZGVsZWdhdGVzIHRvIHRoZQogICAgICAvLyBkZWZpbml0aW9uLiBUaGlzIGlzIGJlY2F1c2Ugd2UgZm9vbGlzaGx5IHVzZWQgdGhlIHNhbWUgbWV0aG9kCiAgICAgIC8vIG5hbWUgKHJlbmRlclZhbHVlKSBmb3IgaHRtbHdpZGdldHMgZGVmaW5pdGlvbiBhbmQgU2hpbnkgYmluZGluZ3MKICAgICAgLy8gYnV0IHRoZXkgYWN0dWFsbHkgaGF2ZSBxdWl0ZSBkaWZmZXJlbnQgc2VtYW50aWNzICh0aGUgU2hpbnkKICAgICAgLy8gYmluZGluZ3MgcmVjZWl2ZSBkYXRhIHRoYXQgaW5jbHVkZXMgbG90cyBvZiBtZXRhZGF0YSB0aGF0IGl0CiAgICAgIC8vIHN0cmlwcyBvZmYgYmVmb3JlIGNhbGxpbmcgaHRtbHdpZGdldHMgcmVuZGVyVmFsdWUpLiBXZSBjYW4ndAogICAgICAvLyBqdXN0IGlnbm9yZSB0aGUgZGlmZmVyZW5jZSBiZWNhdXNlIGluIHNvbWUgd2lkZ2V0cyBpdCdzIGhlbHBmdWwKICAgICAgLy8gdG8gY2FsbCB0aGlzLnJlbmRlclZhbHVlKCkgZnJvbSBpbnNpZGUgb2YgcmVzaXplKCksIGFuZCBpZgogICAgICAvLyB3ZSdyZSBub3QgZGVsZWdhdGluZywgdGhlbiB0aGF0IGNhbGwgd2lsbCBnbyB0byB0aGUgU2hpbnkKICAgICAgLy8gdmVyc2lvbiBpbnN0ZWFkIG9mIHRoZSBodG1sd2lkZ2V0cyB2ZXJzaW9uLgoKICAgICAgLy8gTWVyZ2UgZGVmYXVsdHMgd2l0aCBkZWZpbml0aW9uLCB3aXRob3V0IG11dGF0aW5nIGVpdGhlci4KICAgICAgdmFyIGJpbmRpbmdEZWYgPSBleHRlbmQoe30sIGRlZmF1bHRzLCBkZWZpbml0aW9uKTsKCiAgICAgIC8vIFRoaXMgb2JqZWN0IHdpbGwgYmUgb3VyIGFjdHVhbCBTaGlueSBiaW5kaW5nLgogICAgICB2YXIgc2hpbnlCaW5kaW5nID0gbmV3IFNoaW55Lk91dHB1dEJpbmRpbmcoKTsKCiAgICAgIC8vIFdpdGggYSBmZXcgZXhjZXB0aW9ucywgd2UnbGwgd2FudCB0byBzaW1wbHkgdXNlIHRoZSBiaW5kaW5nRGVmJ3MKICAgICAgLy8gdmVyc2lvbiBvZiBtZXRob2RzIGlmIHRoZXkgYXJlIGF2YWlsYWJsZSwgb3RoZXJ3aXNlIGZhbGwgYmFjayB0bwogICAgICAvLyBTaGlueSdzIGRlZmF1bHRzLiBOT1RFOiBJZiBTaGlueSdzIG91dHB1dCBiaW5kaW5ncyBnYWluIGFkZGl0aW9uYWwKICAgICAgLy8gbWV0aG9kcyBpbiB0aGUgZnV0dXJlLCBhbmQgd2Ugd2FudCB0aGVtIHRvIGJlIG92ZXJyaWRlYWJsZSBieQogICAgICAvLyBIVE1MV2lkZ2V0IGJpbmRpbmcgZGVmaW5pdGlvbnMsIHRoZW4gd2UnbGwgbmVlZCB0byBhZGQgdGhlbSB0byB0aGlzCiAgICAgIC8vIGxpc3QuCiAgICAgIGRlbGVnYXRlTWV0aG9kKHNoaW55QmluZGluZywgYmluZGluZ0RlZiwgImdldElkIik7CiAgICAgIGRlbGVnYXRlTWV0aG9kKHNoaW55QmluZGluZywgYmluZGluZ0RlZiwgIm9uVmFsdWVDaGFuZ2UiKTsKICAgICAgZGVsZWdhdGVNZXRob2Qoc2hpbnlCaW5kaW5nLCBiaW5kaW5nRGVmLCAib25WYWx1ZUVycm9yIik7CiAgICAgIGRlbGVnYXRlTWV0aG9kKHNoaW55QmluZGluZywgYmluZGluZ0RlZiwgInJlbmRlckVycm9yIik7CiAgICAgIGRlbGVnYXRlTWV0aG9kKHNoaW55QmluZGluZywgYmluZGluZ0RlZiwgImNsZWFyRXJyb3IiKTsKICAgICAgZGVsZWdhdGVNZXRob2Qoc2hpbnlCaW5kaW5nLCBiaW5kaW5nRGVmLCAic2hvd1Byb2dyZXNzIik7CgogICAgICAvLyBUaGUgZmluZCwgcmVuZGVyVmFsdWUsIGFuZCByZXNpemUgYXJlIGhhbmRsZWQgZGlmZmVyZW50bHksIGJlY2F1c2Ugd2UKICAgICAgLy8gd2FudCB0byBhY3R1YWxseSBkZWNvcmF0ZSB0aGUgYmVoYXZpb3Igb2YgdGhlIGJpbmRpbmdEZWYgbWV0aG9kcy4KCiAgICAgIHNoaW55QmluZGluZy5maW5kID0gZnVuY3Rpb24oc2NvcGUpIHsKICAgICAgICB2YXIgcmVzdWx0cyA9IGJpbmRpbmdEZWYuZmluZChzY29wZSk7CgogICAgICAgIC8vIE9ubHkgcmV0dXJuIGVsZW1lbnRzIHRoYXQgYXJlIFNoaW55IG91dHB1dHMsIG5vdCBzdGF0aWMgb25lcwogICAgICAgIHZhciBkeW5hbWljUmVzdWx0cyA9IHJlc3VsdHMuZmlsdGVyKCIuaHRtbC13aWRnZXQtb3V0cHV0Iik7CgogICAgICAgIC8vIEl0J3MgcG9zc2libGUgdGhhdCB3aGF0ZXZlciBjYXVzZWQgU2hpbnkgdG8gdGhpbmsgdGhlcmUgbWlnaHQgYmUKICAgICAgICAvLyBuZXcgZHluYW1pYyBvdXRwdXRzLCBhbHNvIGNhdXNlZCB0aGVyZSB0byBiZSBuZXcgc3RhdGljIG91dHB1dHMuCiAgICAgICAgLy8gU2luY2UgdGhlcmUgbWlnaHQgYmUgbG90cyBvZiBkaWZmZXJlbnQgaHRtbHdpZGdldHMgYmluZGluZ3MsIHdlCiAgICAgICAgLy8gc2NoZWR1bGUgZXhlY3V0aW9uIGZvciBsYXRlci0tbm8gbmVlZCB0byBzdGF0aWNSZW5kZXIgbXVsdGlwbGUKICAgICAgICAvLyB0aW1lcy4KICAgICAgICBpZiAocmVzdWx0cy5sZW5ndGggIT09IGR5bmFtaWNSZXN1bHRzLmxlbmd0aCkKICAgICAgICAgIHNjaGVkdWxlU3RhdGljUmVuZGVyKCk7CgogICAgICAgIHJldHVybiBkeW5hbWljUmVzdWx0czsKICAgICAgfTsKCiAgICAgIC8vIFdyYXAgcmVuZGVyVmFsdWUgdG8gaGFuZGxlIGluaXRpYWxpemF0aW9uLCB3aGljaCB1bmZvcnR1bmF0ZWx5IGlzbid0CiAgICAgIC8vIHN1cHBvcnRlZCBuYXRpdmVseSBieSBTaGlueSBhdCB0aGUgdGltZSBvZiB0aGlzIHdyaXRpbmcuCgogICAgICBzaGlueUJpbmRpbmcucmVuZGVyVmFsdWUgPSBmdW5jdGlvbihlbCwgZGF0YSkgewogICAgICAgIC8vIFJlc29sdmUgc3RyaW5ncyBtYXJrZWQgYXMgamF2YXNjcmlwdCBsaXRlcmFscyB0byBvYmplY3RzCiAgICAgICAgaWYgKCEoZGF0YS5ldmFscyBpbnN0YW5jZW9mIEFycmF5KSkgZGF0YS5ldmFscyA9IFtkYXRhLmV2YWxzXTsKICAgICAgICBmb3IgKHZhciBpID0gMDsgZGF0YS5ldmFscyAmJiBpIDwgZGF0YS5ldmFscy5sZW5ndGg7IGkrKykgewogICAgICAgICAgd2luZG93LkhUTUxXaWRnZXRzLmV2YWx1YXRlU3RyaW5nTWVtYmVyKGRhdGEueCwgZGF0YS5ldmFsc1tpXSk7CiAgICAgICAgfQogICAgICAgIGlmICghYmluZGluZ0RlZi5yZW5kZXJPbk51bGxWYWx1ZSkgewogICAgICAgICAgaWYgKGRhdGEueCA9PT0gbnVsbCkgewogICAgICAgICAgICBlbC5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGVsLnN0eWxlLnZpc2liaWxpdHkgPSAiaW5oZXJpdCI7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmICghZWxlbWVudERhdGEoZWwsICJpbml0aWFsaXplZCIpKSB7CiAgICAgICAgICBpbml0U2l6aW5nKGVsKTsKCiAgICAgICAgICBlbGVtZW50RGF0YShlbCwgImluaXRpYWxpemVkIiwgdHJ1ZSk7CiAgICAgICAgICBpZiAoYmluZGluZ0RlZi5pbml0aWFsaXplKSB7CiAgICAgICAgICAgIHZhciByZXN1bHQgPSBiaW5kaW5nRGVmLmluaXRpYWxpemUoZWwsIGVsLm9mZnNldFdpZHRoLAogICAgICAgICAgICAgIGVsLm9mZnNldEhlaWdodCk7CiAgICAgICAgICAgIGVsZW1lbnREYXRhKGVsLCAiaW5pdF9yZXN1bHQiLCByZXN1bHQpOwogICAgICAgICAgfQogICAgICAgICAgZXZhbEFuZFJ1bihkYXRhLmpzSG9va3MucmVuZGVyLCBlbGVtZW50RGF0YShlbCwgImluaXRfcmVzdWx0IiksIFtlbCwgZGF0YS54XSk7CiAgICAgICAgfQogICAgICAgIFNoaW55LnJlbmRlckRlcGVuZGVuY2llcyhkYXRhLmRlcHMpOwogICAgICAgIGJpbmRpbmdEZWYucmVuZGVyVmFsdWUoZWwsIGRhdGEueCwgZWxlbWVudERhdGEoZWwsICJpbml0X3Jlc3VsdCIpKTsKICAgICAgfTsKCiAgICAgIC8vIE9ubHkgb3ZlcnJpZGUgcmVzaXplIGlmIGJpbmRpbmdEZWYgaW1wbGVtZW50cyBpdAogICAgICBpZiAoYmluZGluZ0RlZi5yZXNpemUpIHsKICAgICAgICBzaGlueUJpbmRpbmcucmVzaXplID0gZnVuY3Rpb24oZWwsIHdpZHRoLCBoZWlnaHQpIHsKICAgICAgICAgIC8vIFNoaW55IGNhbiBjYWxsIHJlc2l6ZSBiZWZvcmUgaW5pdGlhbGl6ZS9yZW5kZXJWYWx1ZSBoYXZlIGJlZW4KICAgICAgICAgIC8vIGNhbGxlZCwgd2hpY2ggZG9lc24ndCBtYWtlIHNlbnNlIGZvciB3aWRnZXRzLgogICAgICAgICAgaWYgKGVsZW1lbnREYXRhKGVsLCAiaW5pdGlhbGl6ZWQiKSkgewogICAgICAgICAgICBiaW5kaW5nRGVmLnJlc2l6ZShlbCwgd2lkdGgsIGhlaWdodCwgZWxlbWVudERhdGEoZWwsICJpbml0X3Jlc3VsdCIpKTsKICAgICAgICAgIH0KICAgICAgICB9OwogICAgICB9CgogICAgICBTaGlueS5vdXRwdXRCaW5kaW5ncy5yZWdpc3RlcihzaGlueUJpbmRpbmcsIGJpbmRpbmdEZWYubmFtZSk7CiAgICB9CiAgfTsKCiAgdmFyIHNjaGVkdWxlU3RhdGljUmVuZGVyVGltZXJJZCA9IG51bGw7CiAgZnVuY3Rpb24gc2NoZWR1bGVTdGF0aWNSZW5kZXIoKSB7CiAgICBpZiAoIXNjaGVkdWxlU3RhdGljUmVuZGVyVGltZXJJZCkgewogICAgICBzY2hlZHVsZVN0YXRpY1JlbmRlclRpbWVySWQgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgICAgIHNjaGVkdWxlU3RhdGljUmVuZGVyVGltZXJJZCA9IG51bGw7CiAgICAgICAgd2luZG93LkhUTUxXaWRnZXRzLnN0YXRpY1JlbmRlcigpOwogICAgICB9LCAxKTsKICAgIH0KICB9CgogIC8vIFJlbmRlciBzdGF0aWMgd2lkZ2V0cyBhZnRlciB0aGUgZG9jdW1lbnQgZmluaXNoZXMgbG9hZGluZwogIC8vIFN0YXRpY2FsbHkgcmVuZGVyIGFsbCBlbGVtZW50cyB0aGF0IGFyZSBvZiB0aGlzIHdpZGdldCdzIGNsYXNzCiAgd2luZG93LkhUTUxXaWRnZXRzLnN0YXRpY1JlbmRlciA9IGZ1bmN0aW9uKCkgewogICAgdmFyIGJpbmRpbmdzID0gd2luZG93LkhUTUxXaWRnZXRzLndpZGdldHMgfHwgW107CiAgICBmb3JFYWNoKGJpbmRpbmdzLCBmdW5jdGlvbihiaW5kaW5nKSB7CiAgICAgIHZhciBtYXRjaGVzID0gYmluZGluZy5maW5kKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCk7CiAgICAgIGZvckVhY2gobWF0Y2hlcywgZnVuY3Rpb24oZWwpIHsKICAgICAgICB2YXIgc2l6ZU9iaiA9IGluaXRTaXppbmcoZWwsIGJpbmRpbmcpOwoKICAgICAgICBpZiAoaGFzQ2xhc3MoZWwsICJodG1sLXdpZGdldC1zdGF0aWMtYm91bmQiKSkKICAgICAgICAgIHJldHVybjsKICAgICAgICBlbC5jbGFzc05hbWUgPSBlbC5jbGFzc05hbWUgKyAiIGh0bWwtd2lkZ2V0LXN0YXRpYy1ib3VuZCI7CgogICAgICAgIHZhciBpbml0UmVzdWx0OwogICAgICAgIGlmIChiaW5kaW5nLmluaXRpYWxpemUpIHsKICAgICAgICAgIGluaXRSZXN1bHQgPSBiaW5kaW5nLmluaXRpYWxpemUoZWwsCiAgICAgICAgICAgIHNpemVPYmogPyBzaXplT2JqLmdldFdpZHRoKCkgOiBlbC5vZmZzZXRXaWR0aCwKICAgICAgICAgICAgc2l6ZU9iaiA/IHNpemVPYmouZ2V0SGVpZ2h0KCkgOiBlbC5vZmZzZXRIZWlnaHQKICAgICAgICAgICk7CiAgICAgICAgICBlbGVtZW50RGF0YShlbCwgImluaXRfcmVzdWx0IiwgaW5pdFJlc3VsdCk7CiAgICAgICAgfQoKICAgICAgICBpZiAoYmluZGluZy5yZXNpemUpIHsKICAgICAgICAgIHZhciBsYXN0U2l6ZSA9IHt9OwogICAgICAgICAgdmFyIHJlc2l6ZUhhbmRsZXIgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHZhciBzaXplID0gewogICAgICAgICAgICAgIHc6IHNpemVPYmogPyBzaXplT2JqLmdldFdpZHRoKCkgOiBlbC5vZmZzZXRXaWR0aCwKICAgICAgICAgICAgICBoOiBzaXplT2JqID8gc2l6ZU9iai5nZXRIZWlnaHQoKSA6IGVsLm9mZnNldEhlaWdodAogICAgICAgICAgICB9OwogICAgICAgICAgICBpZiAoc2l6ZS53ID09PSAwICYmIHNpemUuaCA9PT0gMCkKICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIGlmIChzaXplLncgPT09IGxhc3RTaXplLncgJiYgc2l6ZS5oID09PSBsYXN0U2l6ZS5oKQogICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgbGFzdFNpemUgPSBzaXplOwogICAgICAgICAgICBiaW5kaW5nLnJlc2l6ZShlbCwgc2l6ZS53LCBzaXplLmgsIGluaXRSZXN1bHQpOwogICAgICAgICAgfTsKCiAgICAgICAgICBvbih3aW5kb3csICJyZXNpemUiLCByZXNpemVIYW5kbGVyKTsKCiAgICAgICAgICAvLyBUaGlzIGlzIG5lZWRlZCBmb3IgY2FzZXMgd2hlcmUgd2UncmUgcnVubmluZyBpbiBhIFNoaW55CiAgICAgICAgICAvLyBhcHAsIGJ1dCB0aGUgd2lkZ2V0IGl0c2VsZiBpcyBub3QgYSBTaGlueSBvdXRwdXQsIGJ1dAogICAgICAgICAgLy8gcmF0aGVyIGEgc2ltcGxlIHN0YXRpYyB3aWRnZXQuIE9uZSBleGFtcGxlIG9mIHRoaXMgaXMKICAgICAgICAgIC8vIGFuIHJtYXJrZG93biBkb2N1bWVudCB0aGF0IGhhcyBydW50aW1lOnNoaW55IGFuZCB3aWRnZXQKICAgICAgICAgIC8vIHRoYXQgaXNuJ3QgaW4gYSByZW5kZXIgZnVuY3Rpb24uIFNoaW55IG9ubHkga25vd3MgdG8KICAgICAgICAgIC8vIGNhbGwgcmVzaXplIGhhbmRsZXJzIGZvciBTaGlueSBvdXRwdXRzLCBub3QgZm9yIHN0YXRpYwogICAgICAgICAgLy8gd2lkZ2V0cywgc28gd2UgZG8gaXQgb3Vyc2VsdmVzLgogICAgICAgICAgaWYgKHdpbmRvdy5qUXVlcnkpIHsKICAgICAgICAgICAgd2luZG93LmpRdWVyeShkb2N1bWVudCkub24oCiAgICAgICAgICAgICAgInNob3duLmh0bWx3aWRnZXRzIHNob3duLmJzLnRhYi5odG1sd2lkZ2V0cyBzaG93bi5icy5jb2xsYXBzZS5odG1sd2lkZ2V0cyIsCiAgICAgICAgICAgICAgcmVzaXplSGFuZGxlcgogICAgICAgICAgICApOwogICAgICAgICAgICB3aW5kb3cualF1ZXJ5KGRvY3VtZW50KS5vbigKICAgICAgICAgICAgICAiaGlkZGVuLmh0bWx3aWRnZXRzIGhpZGRlbi5icy50YWIuaHRtbHdpZGdldHMgaGlkZGVuLmJzLmNvbGxhcHNlLmh0bWx3aWRnZXRzIiwKICAgICAgICAgICAgICByZXNpemVIYW5kbGVyCiAgICAgICAgICAgICk7CiAgICAgICAgICB9CgogICAgICAgICAgLy8gVGhpcyBpcyBuZWVkZWQgZm9yIHRoZSBzcGVjaWZpYyBjYXNlIG9mIGlvc2xpZGVzLCB3aGljaAogICAgICAgICAgLy8gZmxpcHMgc2xpZGVzIGJldHdlZW4gZGlzcGxheTpub25lIGFuZCBkaXNwbGF5OmJsb2NrLgogICAgICAgICAgLy8gSWRlYWxseSB3ZSB3b3VsZCBub3QgaGF2ZSB0byBoYXZlIGlvc2xpZGUtc3BlY2lmaWMgY29kZQogICAgICAgICAgLy8gaGVyZSwgYnV0IHJhdGhlciBoYXZlIGlvc2xpZGVzIHJhaXNlIGEgZ2VuZXJpYyBldmVudCwKICAgICAgICAgIC8vIGJ1dCB0aGUgcm1hcmtkb3duIHBhY2thZ2UganVzdCB3ZW50IHRvIENSQU4gc28gdGhlCiAgICAgICAgICAvLyB3aW5kb3cgdG8gZ2V0dGluZyB0aGF0IGZpeGVkIG1heSBiZSBsb25nLgogICAgICAgICAgaWYgKHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKSB7CiAgICAgICAgICAgIC8vIEl0J3MgT0sgdG8gbGltaXQgdGhpcyB0byB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcgogICAgICAgICAgICAvLyBicm93c2VycyBiZWNhdXNlIGlvc2xpZGVzIGl0c2VsZiBvbmx5IHN1cHBvcnRzCiAgICAgICAgICAgIC8vIHN1Y2ggYnJvd3NlcnMuCiAgICAgICAgICAgIG9uKGRvY3VtZW50LCAic2xpZGVlbnRlciIsIHJlc2l6ZUhhbmRsZXIpOwogICAgICAgICAgICBvbihkb2N1bWVudCwgInNsaWRlbGVhdmUiLCByZXNpemVIYW5kbGVyKTsKICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHZhciBzY3JpcHREYXRhID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcigic2NyaXB0W2RhdGEtZm9yPSciICsgZWwuaWQgKyAiJ11bdHlwZT0nYXBwbGljYXRpb24vanNvbiddIik7CiAgICAgICAgaWYgKHNjcmlwdERhdGEpIHsKICAgICAgICAgIHZhciBkYXRhID0gSlNPTi5wYXJzZShzY3JpcHREYXRhLnRleHRDb250ZW50IHx8IHNjcmlwdERhdGEudGV4dCk7CiAgICAgICAgICAvLyBSZXNvbHZlIHN0cmluZ3MgbWFya2VkIGFzIGphdmFzY3JpcHQgbGl0ZXJhbHMgdG8gb2JqZWN0cwogICAgICAgICAgaWYgKCEoZGF0YS5ldmFscyBpbnN0YW5jZW9mIEFycmF5KSkgZGF0YS5ldmFscyA9IFtkYXRhLmV2YWxzXTsKICAgICAgICAgIGZvciAodmFyIGsgPSAwOyBkYXRhLmV2YWxzICYmIGsgPCBkYXRhLmV2YWxzLmxlbmd0aDsgaysrKSB7CiAgICAgICAgICAgIHdpbmRvdy5IVE1MV2lkZ2V0cy5ldmFsdWF0ZVN0cmluZ01lbWJlcihkYXRhLngsIGRhdGEuZXZhbHNba10pOwogICAgICAgICAgfQogICAgICAgICAgYmluZGluZy5yZW5kZXJWYWx1ZShlbCwgZGF0YS54LCBpbml0UmVzdWx0KTsKICAgICAgICAgIGV2YWxBbmRSdW4oZGF0YS5qc0hvb2tzLnJlbmRlciwgaW5pdFJlc3VsdCwgW2VsLCBkYXRhLnhdKTsKICAgICAgICB9CiAgICAgIH0pOwogICAgfSk7CgogICAgaW52b2tlUG9zdFJlbmRlckhhbmRsZXJzKCk7CiAgfQoKICAvLyBXYWl0IHVudGlsIGFmdGVyIHRoZSBkb2N1bWVudCBoYXMgbG9hZGVkIHRvIHJlbmRlciB0aGUgd2lkZ2V0cy4KICBpZiAoZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcikgewogICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsIGZ1bmN0aW9uKCkgewogICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIiwgYXJndW1lbnRzLmNhbGxlZSwgZmFsc2UpOwogICAgICB3aW5kb3cuSFRNTFdpZGdldHMuc3RhdGljUmVuZGVyKCk7CiAgICB9LCBmYWxzZSk7CiAgfSBlbHNlIGlmIChkb2N1bWVudC5hdHRhY2hFdmVudCkgewogICAgZG9jdW1lbnQuYXR0YWNoRXZlbnQoIm9ucmVhZHlzdGF0ZWNoYW5nZSIsIGZ1bmN0aW9uKCkgewogICAgICBpZiAoZG9jdW1lbnQucmVhZHlTdGF0ZSA9PT0gImNvbXBsZXRlIikgewogICAgICAgIGRvY3VtZW50LmRldGFjaEV2ZW50KCJvbnJlYWR5c3RhdGVjaGFuZ2UiLCBhcmd1bWVudHMuY2FsbGVlKTsKICAgICAgICB3aW5kb3cuSFRNTFdpZGdldHMuc3RhdGljUmVuZGVyKCk7CiAgICAgIH0KICAgIH0pOwogIH0KCgogIHdpbmRvdy5IVE1MV2lkZ2V0cy5nZXRBdHRhY2htZW50VXJsID0gZnVuY3Rpb24oZGVwbmFtZSwga2V5KSB7CiAgICAvLyBJZiBubyBrZXksIGRlZmF1bHQgdG8gdGhlIGZpcnN0IGl0ZW0KICAgIGlmICh0eXBlb2Yoa2V5KSA9PT0gInVuZGVmaW5lZCIpCiAgICAgIGtleSA9IDE7CgogICAgdmFyIGxpbmsgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChkZXBuYW1lICsgIi0iICsga2V5ICsgIi1hdHRhY2htZW50Iik7CiAgICBpZiAoIWxpbmspIHsKICAgICAgdGhyb3cgbmV3IEVycm9yKCJBdHRhY2htZW50ICIgKyBkZXBuYW1lICsgIi8iICsga2V5ICsgIiBub3QgZm91bmQgaW4gZG9jdW1lbnQiKTsKICAgIH0KICAgIHJldHVybiBsaW5rLmdldEF0dHJpYnV0ZSgiaHJlZiIpOwogIH07CgogIHdpbmRvdy5IVE1MV2lkZ2V0cy5kYXRhZnJhbWVUb0QzID0gZnVuY3Rpb24oZGYpIHsKICAgIHZhciBuYW1lcyA9IFtdOwogICAgdmFyIGxlbmd0aDsKICAgIGZvciAodmFyIG5hbWUgaW4gZGYpIHsKICAgICAgICBpZiAoZGYuaGFzT3duUHJvcGVydHkobmFtZSkpCiAgICAgICAgICAgIG5hbWVzLnB1c2gobmFtZSk7CiAgICAgICAgaWYgKHR5cGVvZihkZltuYW1lXSkgIT09ICJvYmplY3QiIHx8IHR5cGVvZihkZltuYW1lXS5sZW5ndGgpID09PSAidW5kZWZpbmVkIikgewogICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkFsbCBmaWVsZHMgbXVzdCBiZSBhcnJheXMiKTsKICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZihsZW5ndGgpICE9PSAidW5kZWZpbmVkIiAmJiBsZW5ndGggIT09IGRmW25hbWVdLmxlbmd0aCkgewogICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkFsbCBmaWVsZHMgbXVzdCBiZSBhcnJheXMgb2YgdGhlIHNhbWUgbGVuZ3RoIik7CiAgICAgICAgfQogICAgICAgIGxlbmd0aCA9IGRmW25hbWVdLmxlbmd0aDsKICAgIH0KICAgIHZhciByZXN1bHRzID0gW107CiAgICB2YXIgaXRlbTsKICAgIGZvciAodmFyIHJvdyA9IDA7IHJvdyA8IGxlbmd0aDsgcm93KyspIHsKICAgICAgICBpdGVtID0ge307CiAgICAgICAgZm9yICh2YXIgY29sID0gMDsgY29sIDwgbmFtZXMubGVuZ3RoOyBjb2wrKykgewogICAgICAgICAgICBpdGVtW25hbWVzW2NvbF1dID0gZGZbbmFtZXNbY29sXV1bcm93XTsKICAgICAgICB9CiAgICAgICAgcmVzdWx0cy5wdXNoKGl0ZW0pOwogICAgfQogICAgcmV0dXJuIHJlc3VsdHM7CiAgfTsKCiAgd2luZG93LkhUTUxXaWRnZXRzLnRyYW5zcG9zZUFycmF5MkQgPSBmdW5jdGlvbihhcnJheSkgewogICAgICBpZiAoYXJyYXkubGVuZ3RoID09PSAwKSByZXR1cm4gYXJyYXk7CiAgICAgIHZhciBuZXdBcnJheSA9IGFycmF5WzBdLm1hcChmdW5jdGlvbihjb2wsIGkpIHsKICAgICAgICAgIHJldHVybiBhcnJheS5tYXAoZnVuY3Rpb24ocm93KSB7CiAgICAgICAgICAgICAgcmV0dXJuIHJvd1tpXQogICAgICAgICAgfSkKICAgICAgfSk7CiAgICAgIHJldHVybiBuZXdBcnJheTsKICB9OwogIC8vIFNwbGl0IHZhbHVlIGF0IHNwbGl0Q2hhciwgYnV0IGFsbG93IHNwbGl0Q2hhciB0byBiZSBlc2NhcGVkCiAgLy8gdXNpbmcgZXNjYXBlQ2hhci4gQW55IG90aGVyIGNoYXJhY3RlcnMgZXNjYXBlZCBieSBlc2NhcGVDaGFyCiAgLy8gd2lsbCBiZSBpbmNsdWRlZCBhcyB1c3VhbCAoaW5jbHVkaW5nIGVzY2FwZUNoYXIgaXRzZWxmKS4KICBmdW5jdGlvbiBzcGxpdFdpdGhFc2NhcGUodmFsdWUsIHNwbGl0Q2hhciwgZXNjYXBlQ2hhcikgewogICAgdmFyIHJlc3VsdHMgPSBbXTsKICAgIHZhciBlc2NhcGVNb2RlID0gZmFsc2U7CiAgICB2YXIgY3VycmVudFJlc3VsdCA9ICIiOwogICAgZm9yICh2YXIgcG9zID0gMDsgcG9zIDwgdmFsdWUubGVuZ3RoOyBwb3MrKykgewogICAgICBpZiAoIWVzY2FwZU1vZGUpIHsKICAgICAgICBpZiAodmFsdWVbcG9zXSA9PT0gc3BsaXRDaGFyKSB7CiAgICAgICAgICByZXN1bHRzLnB1c2goY3VycmVudFJlc3VsdCk7CiAgICAgICAgICBjdXJyZW50UmVzdWx0ID0gIiI7CiAgICAgICAgfSBlbHNlIGlmICh2YWx1ZVtwb3NdID09PSBlc2NhcGVDaGFyKSB7CiAgICAgICAgICBlc2NhcGVNb2RlID0gdHJ1ZTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgY3VycmVudFJlc3VsdCArPSB2YWx1ZVtwb3NdOwogICAgICAgIH0KICAgICAgfSBlbHNlIHsKICAgICAgICBjdXJyZW50UmVzdWx0ICs9IHZhbHVlW3Bvc107CiAgICAgICAgZXNjYXBlTW9kZSA9IGZhbHNlOwogICAgICB9CiAgICB9CiAgICBpZiAoY3VycmVudFJlc3VsdCAhPT0gIiIpIHsKICAgICAgcmVzdWx0cy5wdXNoKGN1cnJlbnRSZXN1bHQpOwogICAgfQogICAgcmV0dXJuIHJlc3VsdHM7CiAgfQogIC8vIEZ1bmN0aW9uIGF1dGhvcmVkIGJ5IFlpaHVpL0pKIEFsbGFpcmUKICB3aW5kb3cuSFRNTFdpZGdldHMuZXZhbHVhdGVTdHJpbmdNZW1iZXIgPSBmdW5jdGlvbihvLCBtZW1iZXIpIHsKICAgIHZhciBwYXJ0cyA9IHNwbGl0V2l0aEVzY2FwZShtZW1iZXIsICcuJywgJ1xcJyk7CiAgICBmb3IgKHZhciBpID0gMCwgbCA9IHBhcnRzLmxlbmd0aDsgaSA8IGw7IGkrKykgewogICAgICB2YXIgcGFydCA9IHBhcnRzW2ldOwogICAgICAvLyBwYXJ0IG1heSBiZSBhIGNoYXJhY3RlciBvciAnbnVtZXJpYycgbWVtYmVyIG5hbWUKICAgICAgaWYgKG8gIT09IG51bGwgJiYgdHlwZW9mIG8gPT09ICJvYmplY3QiICYmIHBhcnQgaW4gbykgewogICAgICAgIGlmIChpID09IChsIC0gMSkpIHsgLy8gaWYgd2UgYXJlIGF0IHRoZSBlbmQgb2YgdGhlIGxpbmUgdGhlbiBldmFsdWxhdGUKICAgICAgICAgIGlmICh0eXBlb2Ygb1twYXJ0XSA9PT0gInN0cmluZyIpCiAgICAgICAgICAgIG9bcGFydF0gPSBldmFsKCIoIiArIG9bcGFydF0gKyAiKSIpOwogICAgICAgIH0gZWxzZSB7IC8vIG90aGVyd2lzZSBjb250aW51ZSB0byBuZXh0IGVtYmVkZGVkIG9iamVjdAogICAgICAgICAgbyA9IG9bcGFydF07CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgfTsKCiAgLy8gUmV0cmlldmUgdGhlIEhUTUxXaWRnZXQgaW5zdGFuY2UgKGkuZS4gdGhlIHJldHVybiB2YWx1ZSBvZiBhbgogIC8vIEhUTUxXaWRnZXQgYmluZGluZydzIGluaXRpYWxpemUoKSBvciBmYWN0b3J5KCkgZnVuY3Rpb24pCiAgLy8gYXNzb2NpYXRlZCB3aXRoIGFuIGVsZW1lbnQsIG9yIG51bGwgaWYgbm9uZS4KICB3aW5kb3cuSFRNTFdpZGdldHMuZ2V0SW5zdGFuY2UgPSBmdW5jdGlvbihlbCkgewogICAgcmV0dXJuIGVsZW1lbnREYXRhKGVsLCAiaW5pdF9yZXN1bHQiKTsKICB9OwoKICAvLyBGaW5kcyB0aGUgZmlyc3QgZWxlbWVudCBpbiB0aGUgc2NvcGUgdGhhdCBtYXRjaGVzIHRoZSBzZWxlY3RvciwKICAvLyBhbmQgcmV0dXJucyB0aGUgSFRNTFdpZGdldCBpbnN0YW5jZSAoaS5lLiB0aGUgcmV0dXJuIHZhbHVlIG9mCiAgLy8gYW4gSFRNTFdpZGdldCBiaW5kaW5nJ3MgaW5pdGlhbGl6ZSgpIG9yIGZhY3RvcnkoKSBmdW5jdGlvbikKICAvLyBhc3NvY2lhdGVkIHdpdGggdGhhdCBlbGVtZW50LCBpZiBhbnkuIElmIG5vIGVsZW1lbnQgbWF0Y2hlcyB0aGUKICAvLyBzZWxlY3Rvciwgb3IgdGhlIGZpcnN0IG1hdGNoaW5nIGVsZW1lbnQgaGFzIG5vIEhUTUxXaWRnZXQKICAvLyBpbnN0YW5jZSBhc3NvY2lhdGVkIHdpdGggaXQsIHRoZW4gbnVsbCBpcyByZXR1cm5lZC4KICAvLwogIC8vIFRoZSBzY29wZSBhcmd1bWVudCBpcyBvcHRpb25hbCwgYW5kIGRlZmF1bHRzIHRvIHdpbmRvdy5kb2N1bWVudC4KICB3aW5kb3cuSFRNTFdpZGdldHMuZmluZCA9IGZ1bmN0aW9uKHNjb3BlLCBzZWxlY3RvcikgewogICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT0gMSkgewogICAgICBzZWxlY3RvciA9IHNjb3BlOwogICAgICBzY29wZSA9IGRvY3VtZW50OwogICAgfQoKICAgIHZhciBlbCA9IHNjb3BlLnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IpOwogICAgaWYgKGVsID09PSBudWxsKSB7CiAgICAgIHJldHVybiBudWxsOwogICAgfSBlbHNlIHsKICAgICAgcmV0dXJuIHdpbmRvdy5IVE1MV2lkZ2V0cy5nZXRJbnN0YW5jZShlbCk7CiAgICB9CiAgfTsKCiAgLy8gRmluZHMgYWxsIGVsZW1lbnRzIGluIHRoZSBzY29wZSB0aGF0IG1hdGNoIHRoZSBzZWxlY3RvciwgYW5kCiAgLy8gcmV0dXJucyB0aGUgSFRNTFdpZGdldCBpbnN0YW5jZXMgKGkuZS4gdGhlIHJldHVybiB2YWx1ZXMgb2YKICAvLyBhbiBIVE1MV2lkZ2V0IGJpbmRpbmcncyBpbml0aWFsaXplKCkgb3IgZmFjdG9yeSgpIGZ1bmN0aW9uKQogIC8vIGFzc29jaWF0ZWQgd2l0aCB0aGUgZWxlbWVudHMsIGluIGFuIGFycmF5LiBJZiBlbGVtZW50cyB0aGF0CiAgLy8gbWF0Y2ggdGhlIHNlbGVjdG9yIGRvbid0IGhhdmUgYW4gYXNzb2NpYXRlZCBIVE1MV2lkZ2V0CiAgLy8gaW5zdGFuY2UsIHRoZSByZXR1cm5lZCBhcnJheSB3aWxsIGNvbnRhaW4gbnVsbHMuCiAgLy8KICAvLyBUaGUgc2NvcGUgYXJndW1lbnQgaXMgb3B0aW9uYWwsIGFuZCBkZWZhdWx0cyB0byB3aW5kb3cuZG9jdW1lbnQuCiAgd2luZG93LkhUTUxXaWRnZXRzLmZpbmRBbGwgPSBmdW5jdGlvbihzY29wZSwgc2VsZWN0b3IpIHsKICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09IDEpIHsKICAgICAgc2VsZWN0b3IgPSBzY29wZTsKICAgICAgc2NvcGUgPSBkb2N1bWVudDsKICAgIH0KCiAgICB2YXIgbm9kZXMgPSBzY29wZS5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yKTsKICAgIHZhciByZXN1bHRzID0gW107CiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGVzLmxlbmd0aDsgaSsrKSB7CiAgICAgIHJlc3VsdHMucHVzaCh3aW5kb3cuSFRNTFdpZGdldHMuZ2V0SW5zdGFuY2Uobm9kZXNbaV0pKTsKICAgIH0KICAgIHJldHVybiByZXN1bHRzOwogIH07CgogIHZhciBwb3N0UmVuZGVySGFuZGxlcnMgPSBbXTsKICBmdW5jdGlvbiBpbnZva2VQb3N0UmVuZGVySGFuZGxlcnMoKSB7CiAgICB3aGlsZSAocG9zdFJlbmRlckhhbmRsZXJzLmxlbmd0aCkgewogICAgICB2YXIgaGFuZGxlciA9IHBvc3RSZW5kZXJIYW5kbGVycy5zaGlmdCgpOwogICAgICBpZiAoaGFuZGxlcikgewogICAgICAgIGhhbmRsZXIoKTsKICAgICAgfQogICAgfQogIH0KCiAgLy8gUmVnaXN0ZXIgdGhlIGdpdmVuIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIGJlIGludm9rZWQgYWZ0ZXIgdGhlCiAgLy8gbmV4dCB0aW1lIHN0YXRpYyB3aWRnZXRzIGFyZSByZW5kZXJlZC4KICB3aW5kb3cuSFRNTFdpZGdldHMuYWRkUG9zdFJlbmRlckhhbmRsZXIgPSBmdW5jdGlvbihjYWxsYmFjaykgewogICAgcG9zdFJlbmRlckhhbmRsZXJzLnB1c2goY2FsbGJhY2spOwogIH07CgogIC8vIFRha2VzIGEgbmV3LXN0eWxlIGluc3RhbmNlLWJvdW5kIGRlZmluaXRpb24sIGFuZCByZXR1cm5zIGFuCiAgLy8gb2xkLXN0eWxlIGNsYXNzLWJvdW5kIGRlZmluaXRpb24uIFRoaXMgc2F2ZXMgdXMgZnJvbSBoYXZpbmcKICAvLyB0byByZXdyaXRlIGFsbCB0aGUgbG9naWMgaW4gdGhpcyBmaWxlIHRvIGFjY29tb2RhdGUgYm90aAogIC8vIHR5cGVzIG9mIGRlZmluaXRpb25zLgogIGZ1bmN0aW9uIGNyZWF0ZUxlZ2FjeURlZmluaXRpb25BZGFwdGVyKGRlZm4pIHsKICAgIHZhciByZXN1bHQgPSB7CiAgICAgIG5hbWU6IGRlZm4ubmFtZSwKICAgICAgdHlwZTogZGVmbi50eXBlLAogICAgICBpbml0aWFsaXplOiBmdW5jdGlvbihlbCwgd2lkdGgsIGhlaWdodCkgewogICAgICAgIHJldHVybiBkZWZuLmZhY3RvcnkoZWwsIHdpZHRoLCBoZWlnaHQpOwogICAgICB9LAogICAgICByZW5kZXJWYWx1ZTogZnVuY3Rpb24oZWwsIHgsIGluc3RhbmNlKSB7CiAgICAgICAgcmV0dXJuIGluc3RhbmNlLnJlbmRlclZhbHVlKHgpOwogICAgICB9LAogICAgICByZXNpemU6IGZ1bmN0aW9uKGVsLCB3aWR0aCwgaGVpZ2h0LCBpbnN0YW5jZSkgewogICAgICAgIHJldHVybiBpbnN0YW5jZS5yZXNpemUod2lkdGgsIGhlaWdodCk7CiAgICAgIH0KICAgIH07CgogICAgaWYgKGRlZm4uZmluZCkKICAgICAgcmVzdWx0LmZpbmQgPSBkZWZuLmZpbmQ7CiAgICBpZiAoZGVmbi5yZW5kZXJFcnJvcikKICAgICAgcmVzdWx0LnJlbmRlckVycm9yID0gZGVmbi5yZW5kZXJFcnJvcjsKICAgIGlmIChkZWZuLmNsZWFyRXJyb3IpCiAgICAgIHJlc3VsdC5jbGVhckVycm9yID0gZGVmbi5jbGVhckVycm9yOwoKICAgIHJldHVybiByZXN1bHQ7CiAgfQp9KSgpOwoK"></script>
<script src="data:application/x-javascript;base64,Ly8gaHR0cHM6Ly9kM2pzLm9yZyBWZXJzaW9uIDQuMi4yLiBDb3B5cmlnaHQgMjAxNiBNaWtlIEJvc3RvY2suCiFmdW5jdGlvbih0LG4peyJvYmplY3QiPT10eXBlb2YgZXhwb3J0cyYmInVuZGVmaW5lZCIhPXR5cGVvZiBtb2R1bGU/bihleHBvcnRzKToiZnVuY3Rpb24iPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZShbImV4cG9ydHMiXSxuKTpuKHQuZDM9dC5kM3x8e30pfSh0aGlzLGZ1bmN0aW9uKHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKHQsbil7cmV0dXJuIHQ8bj8tMTp0Pm4/MTp0Pj1uPzA6TmFOfWZ1bmN0aW9uIGUodCl7cmV0dXJuIDE9PT10Lmxlbmd0aCYmKHQ9cih0KSkse2xlZnQ6ZnVuY3Rpb24obixlLHIsaSl7Zm9yKG51bGw9PXImJihyPTApLG51bGw9PWkmJihpPW4ubGVuZ3RoKTtyPGk7KXt2YXIgbz1yK2k+Pj4xO3QobltvXSxlKTwwP3I9bysxOmk9b31yZXR1cm4gcn0scmlnaHQ6ZnVuY3Rpb24obixlLHIsaSl7Zm9yKG51bGw9PXImJihyPTApLG51bGw9PWkmJihpPW4ubGVuZ3RoKTtyPGk7KXt2YXIgbz1yK2k+Pj4xO3QobltvXSxlKT4wP2k9bzpyPW8rMX1yZXR1cm4gcn19fWZ1bmN0aW9uIHIodCl7cmV0dXJuIGZ1bmN0aW9uKGUscil7cmV0dXJuIG4odChlKSxyKX19ZnVuY3Rpb24gaSh0LG4pe3JldHVybiBuPHQ/LTE6bj50PzE6bj49dD8wOk5hTn1mdW5jdGlvbiBvKHQpe3JldHVybiBudWxsPT09dD9OYU46K3R9ZnVuY3Rpb24gdSh0LG4pe3ZhciBlLHIsaT10Lmxlbmd0aCx1PTAsYT0wLGM9LTEscz0wO2lmKG51bGw9PW4pZm9yKDsrK2M8aTspaXNOYU4oZT1vKHRbY10pKXx8KHI9ZS11LHUrPXIvKytzLGErPXIqKGUtdSkpO2Vsc2UgZm9yKDsrK2M8aTspaXNOYU4oZT1vKG4odFtjXSxjLHQpKSl8fChyPWUtdSx1Kz1yLysrcyxhKz1yKihlLXUpKTtpZihzPjEpcmV0dXJuIGEvKHMtMSl9ZnVuY3Rpb24gYSh0LG4pe3ZhciBlPXUodCxuKTtyZXR1cm4gZT9NYXRoLnNxcnQoZSk6ZX1mdW5jdGlvbiBjKHQsbil7dmFyIGUscixpLG89LTEsdT10Lmxlbmd0aDtpZihudWxsPT1uKXtmb3IoOysrbzx1OylpZihudWxsIT0ocj10W29dKSYmcj49cil7ZT1pPXI7YnJlYWt9Zm9yKDsrK288dTspbnVsbCE9KHI9dFtvXSkmJihlPnImJihlPXIpLGk8ciYmKGk9cikpfWVsc2V7Zm9yKDsrK288dTspaWYobnVsbCE9KHI9bih0W29dLG8sdCkpJiZyPj1yKXtlPWk9cjticmVha31mb3IoOysrbzx1OyludWxsIT0ocj1uKHRbb10sbyx0KSkmJihlPnImJihlPXIpLGk8ciYmKGk9cikpfXJldHVybltlLGldfWZ1bmN0aW9uIHModCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fWZ1bmN0aW9uIGYodCl7cmV0dXJuIHR9ZnVuY3Rpb24gbCh0LG4sZSl7dD0rdCxuPStuLGU9KGk9YXJndW1lbnRzLmxlbmd0aCk8Mj8obj10LHQ9MCwxKTppPDM/MTorZTtmb3IodmFyIHI9LTEsaT0wfE1hdGgubWF4KDAsTWF0aC5jZWlsKChuLXQpL2UpKSxvPW5ldyBBcnJheShpKTsrK3I8aTspb1tyXT10K3IqZTtyZXR1cm4gb31mdW5jdGlvbiBoKHQsbixlKXt2YXIgcj1wKHQsbixlKTtyZXR1cm4gbChNYXRoLmNlaWwodC9yKSpyLE1hdGguZmxvb3Iobi9yKSpyK3IvMixyKX1mdW5jdGlvbiBwKHQsbixlKXt2YXIgcj1NYXRoLmFicyhuLXQpL01hdGgubWF4KDAsZSksaT1NYXRoLnBvdygxMCxNYXRoLmZsb29yKE1hdGgubG9nKHIpL01hdGguTE4xMCkpLG89ci9pO3JldHVybiBvPj1SZD9pKj0xMDpvPj1VZD9pKj01Om8+PURkJiYoaSo9Miksbjx0Py1pOml9ZnVuY3Rpb24gZCh0KXtyZXR1cm4gTWF0aC5jZWlsKE1hdGgubG9nKHQubGVuZ3RoKS9NYXRoLkxOMikrMX1mdW5jdGlvbiB2KCl7ZnVuY3Rpb24gdCh0KXt2YXIgaSxvLHU9dC5sZW5ndGgsYT1uZXcgQXJyYXkodSk7Zm9yKGk9MDtpPHU7KytpKWFbaV09bih0W2ldLGksdCk7dmFyIGM9ZShhKSxzPWNbMF0sZj1jWzFdLGw9cihhLHMsZik7QXJyYXkuaXNBcnJheShsKXx8KGw9aChzLGYsbCkpO2Zvcih2YXIgcD1sLmxlbmd0aDtsWzBdPD1zOylsLnNoaWZ0KCksLS1wO2Zvcig7bFtwLTFdPj1mOylsLnBvcCgpLC0tcDt2YXIgZCx2PW5ldyBBcnJheShwKzEpO2ZvcihpPTA7aTw9cDsrK2kpZD12W2ldPVtdLGQueDA9aT4wP2xbaS0xXTpzLGQueDE9aTxwP2xbaV06Zjtmb3IoaT0wO2k8dTsrK2kpbz1hW2ldLHM8PW8mJm88PWYmJnZbQ2QobCxvLDAscCldLnB1c2godFtpXSk7cmV0dXJuIHZ9dmFyIG49ZixlPWMscj1kO3JldHVybiB0LnZhbHVlPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPSJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6cyhlKSx0KTpufSx0LmRvbWFpbj1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT0iZnVuY3Rpb24iPT10eXBlb2Ygbj9uOnMoW25bMF0sblsxXV0pLHQpOmV9LHQudGhyZXNob2xkcz1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj0iZnVuY3Rpb24iPT10eXBlb2Ygbj9uOnMoQXJyYXkuaXNBcnJheShuKT9xZC5jYWxsKG4pOm4pLHQpOnJ9LHR9ZnVuY3Rpb24gXyh0LG4sZSl7aWYobnVsbD09ZSYmKGU9bykscj10Lmxlbmd0aCl7aWYoKG49K24pPD0wfHxyPDIpcmV0dXJuK2UodFswXSwwLHQpO2lmKG4+PTEpcmV0dXJuK2UodFtyLTFdLHItMSx0KTt2YXIgcixpPShyLTEpKm4sdT1NYXRoLmZsb29yKGkpLGE9K2UodFt1XSx1LHQpLGM9K2UodFt1KzFdLHUrMSx0KTtyZXR1cm4gYSsoYy1hKSooaS11KX19ZnVuY3Rpb24geSh0LGUscil7cmV0dXJuIHQ9TGQuY2FsbCh0LG8pLnNvcnQobiksTWF0aC5jZWlsKChyLWUpLygyKihfKHQsLjc1KS1fKHQsLjI1KSkqTWF0aC5wb3codC5sZW5ndGgsLTEvMykpKX1mdW5jdGlvbiBnKHQsbixlKXtyZXR1cm4gTWF0aC5jZWlsKChlLW4pLygzLjUqYSh0KSpNYXRoLnBvdyh0Lmxlbmd0aCwtMS8zKSkpfWZ1bmN0aW9uIG0odCxuKXt2YXIgZSxyLGk9LTEsbz10Lmxlbmd0aDtpZihudWxsPT1uKXtmb3IoOysraTxvOylpZihudWxsIT0ocj10W2ldKSYmcj49cil7ZT1yO2JyZWFrfWZvcig7KytpPG87KW51bGwhPShyPXRbaV0pJiZyPmUmJihlPXIpfWVsc2V7Zm9yKDsrK2k8bzspaWYobnVsbCE9KHI9bih0W2ldLGksdCkpJiZyPj1yKXtlPXI7YnJlYWt9Zm9yKDsrK2k8bzspbnVsbCE9KHI9bih0W2ldLGksdCkpJiZyPmUmJihlPXIpfXJldHVybiBlfWZ1bmN0aW9uIHgodCxuKXt2YXIgZSxyPTAsaT10Lmxlbmd0aCx1PS0xLGE9aTtpZihudWxsPT1uKWZvcig7Kyt1PGk7KWlzTmFOKGU9byh0W3VdKSk/LS1hOnIrPWU7ZWxzZSBmb3IoOysrdTxpOylpc05hTihlPW8obih0W3VdLHUsdCkpKT8tLWE6cis9ZTtpZihhKXJldHVybiByL2F9ZnVuY3Rpb24gYih0LGUpe3ZhciByLGk9W10sdT10Lmxlbmd0aCxhPS0xO2lmKG51bGw9PWUpZm9yKDsrK2E8dTspaXNOYU4ocj1vKHRbYV0pKXx8aS5wdXNoKHIpO2Vsc2UgZm9yKDsrK2E8dTspaXNOYU4ocj1vKGUodFthXSxhLHQpKSl8fGkucHVzaChyKTtyZXR1cm4gXyhpLnNvcnQobiksLjUpfWZ1bmN0aW9uIHcodCl7Zm9yKHZhciBuLGUscixpPXQubGVuZ3RoLG89LTEsdT0wOysrbzxpOyl1Kz10W29dLmxlbmd0aDtmb3IoZT1uZXcgQXJyYXkodSk7LS1pPj0wOylmb3Iocj10W2ldLG49ci5sZW5ndGg7LS1uPj0wOyllWy0tdV09cltuXTtyZXR1cm4gZX1mdW5jdGlvbiBNKHQsbil7dmFyIGUscixpPS0xLG89dC5sZW5ndGg7aWYobnVsbD09bil7Zm9yKDsrK2k8bzspaWYobnVsbCE9KHI9dFtpXSkmJnI+PXIpe2U9cjticmVha31mb3IoOysraTxvOyludWxsIT0ocj10W2ldKSYmZT5yJiYoZT1yKX1lbHNle2Zvcig7KytpPG87KWlmKG51bGwhPShyPW4odFtpXSxpLHQpKSYmcj49cil7ZT1yO2JyZWFrfWZvcig7KytpPG87KW51bGwhPShyPW4odFtpXSxpLHQpKSYmZT5yJiYoZT1yKX1yZXR1cm4gZX1mdW5jdGlvbiBUKHQpe2Zvcih2YXIgbj0wLGU9dC5sZW5ndGgtMSxyPXRbMF0saT1uZXcgQXJyYXkoZTwwPzA6ZSk7bjxlOylpW25dPVtyLHI9dFsrK25dXTtyZXR1cm4gaX1mdW5jdGlvbiBrKHQsbil7Zm9yKHZhciBlPW4ubGVuZ3RoLHI9bmV3IEFycmF5KGUpO2UtLTspcltlXT10W25bZV1dO3JldHVybiByfWZ1bmN0aW9uIFModCxlKXtpZihyPXQubGVuZ3RoKXt2YXIgcixpLG89MCx1PTAsYT10W3VdO2ZvcihlfHwoZT1uKTsrK288cjspKGUoaT10W29dLGEpPDB8fDAhPT1lKGEsYSkpJiYoYT1pLHU9byk7cmV0dXJuIDA9PT1lKGEsYSk/dTp2b2lkIDB9fWZ1bmN0aW9uIE4odCxuLGUpe2Zvcih2YXIgcixpLG89KG51bGw9PWU/dC5sZW5ndGg6ZSktKG49bnVsbD09bj8wOituKTtvOylpPU1hdGgucmFuZG9tKCkqby0tfDAscj10W28rbl0sdFtvK25dPXRbaStuXSx0W2krbl09cjtyZXR1cm4gdH1mdW5jdGlvbiBBKHQsbil7dmFyIGUscj0wLGk9dC5sZW5ndGgsbz0tMTtpZihudWxsPT1uKWZvcig7KytvPGk7KShlPSt0W29dKSYmKHIrPWUpO2Vsc2UgZm9yKDsrK288aTspKGU9K24odFtvXSxvLHQpKSYmKHIrPWUpO3JldHVybiByfWZ1bmN0aW9uIEUodCl7aWYoIShpPXQubGVuZ3RoKSlyZXR1cm5bXTtmb3IodmFyIG49LTEsZT1NKHQsQykscj1uZXcgQXJyYXkoZSk7KytuPGU7KWZvcih2YXIgaSxvPS0xLHU9cltuXT1uZXcgQXJyYXkoaSk7KytvPGk7KXVbb109dFtvXVtuXTtyZXR1cm4gcn1mdW5jdGlvbiBDKHQpe3JldHVybiB0Lmxlbmd0aH1mdW5jdGlvbiB6KCl7cmV0dXJuIEUoYXJndW1lbnRzKX1mdW5jdGlvbiBQKCl7fWZ1bmN0aW9uIHEodCxuKXt2YXIgZT1uZXcgUDtpZih0IGluc3RhbmNlb2YgUCl0LmVhY2goZnVuY3Rpb24odCxuKXtlLnNldChuLHQpfSk7ZWxzZSBpZihBcnJheS5pc0FycmF5KHQpKXt2YXIgcixpPS0xLG89dC5sZW5ndGg7aWYobnVsbD09bilmb3IoOysraTxvOyllLnNldChpLHRbaV0pO2Vsc2UgZm9yKDsrK2k8bzspZS5zZXQobihyPXRbaV0saSx0KSxyKX1lbHNlIGlmKHQpZm9yKHZhciB1IGluIHQpZS5zZXQodSx0W3VdKTtyZXR1cm4gZX1mdW5jdGlvbiBMKCl7ZnVuY3Rpb24gdChuLGksdSxhKXtpZihpPj1vLmxlbmd0aClyZXR1cm4gbnVsbCE9cj9yKG4pOm51bGwhPWU/bi5zb3J0KGUpOm47Zm9yKHZhciBjLHMsZixsPS0xLGg9bi5sZW5ndGgscD1vW2krK10sZD1xKCksdj11KCk7KytsPGg7KShmPWQuZ2V0KGM9cChzPW5bbF0pKyIiKSk/Zi5wdXNoKHMpOmQuc2V0KGMsW3NdKTtyZXR1cm4gZC5lYWNoKGZ1bmN0aW9uKG4sZSl7YSh2LGUsdChuLGksdSxhKSl9KSx2fWZ1bmN0aW9uIG4odCxlKXtpZigrK2U+by5sZW5ndGgpcmV0dXJuIHQ7dmFyIGksYT11W2UtMV07cmV0dXJuIG51bGwhPXImJmU+PW8ubGVuZ3RoP2k9dC5lbnRyaWVzKCk6KGk9W10sdC5lYWNoKGZ1bmN0aW9uKHQscil7aS5wdXNoKHtrZXk6cix2YWx1ZXM6bih0LGUpfSl9KSksbnVsbCE9YT9pLnNvcnQoZnVuY3Rpb24odCxuKXtyZXR1cm4gYSh0LmtleSxuLmtleSl9KTppfXZhciBlLHIsaSxvPVtdLHU9W107cmV0dXJuIGk9e29iamVjdDpmdW5jdGlvbihuKXtyZXR1cm4gdChuLDAsUixVKX0sbWFwOmZ1bmN0aW9uKG4pe3JldHVybiB0KG4sMCxELE8pfSxlbnRyaWVzOmZ1bmN0aW9uKGUpe3JldHVybiBuKHQoZSwwLEQsTyksMCl9LGtleTpmdW5jdGlvbih0KXtyZXR1cm4gby5wdXNoKHQpLGl9LHNvcnRLZXlzOmZ1bmN0aW9uKHQpe3JldHVybiB1W28ubGVuZ3RoLTFdPXQsaX0sc29ydFZhbHVlczpmdW5jdGlvbih0KXtyZXR1cm4gZT10LGl9LHJvbGx1cDpmdW5jdGlvbih0KXtyZXR1cm4gcj10LGl9fX1mdW5jdGlvbiBSKCl7cmV0dXJue319ZnVuY3Rpb24gVSh0LG4sZSl7dFtuXT1lfWZ1bmN0aW9uIEQoKXtyZXR1cm4gcSgpfWZ1bmN0aW9uIE8odCxuLGUpe3Quc2V0KG4sZSl9ZnVuY3Rpb24gRigpe31mdW5jdGlvbiBJKHQsbil7dmFyIGU9bmV3IEY7aWYodCBpbnN0YW5jZW9mIEYpdC5lYWNoKGZ1bmN0aW9uKHQpe2UuYWRkKHQpfSk7ZWxzZSBpZih0KXt2YXIgcj0tMSxpPXQubGVuZ3RoO2lmKG51bGw9PW4pZm9yKDsrK3I8aTspZS5hZGQodFtyXSk7ZWxzZSBmb3IoOysrcjxpOyllLmFkZChuKHRbcl0scix0KSl9cmV0dXJuIGV9ZnVuY3Rpb24gWSh0KXt2YXIgbj1bXTtmb3IodmFyIGUgaW4gdCluLnB1c2goZSk7cmV0dXJuIG59ZnVuY3Rpb24gQih0KXt2YXIgbj1bXTtmb3IodmFyIGUgaW4gdCluLnB1c2godFtlXSk7cmV0dXJuIG59ZnVuY3Rpb24gaih0KXt2YXIgbj1bXTtmb3IodmFyIGUgaW4gdCluLnB1c2goe2tleTplLHZhbHVlOnRbZV19KTtyZXR1cm4gbn1mdW5jdGlvbiBIKHQsbil7cmV0dXJuIHQ9bnVsbD09dD8wOit0LG49bnVsbD09bj8xOituLDE9PT1hcmd1bWVudHMubGVuZ3RoPyhuPXQsdD0wKTpuLT10LGZ1bmN0aW9uKCl7cmV0dXJuIE1hdGgucmFuZG9tKCkqbit0fX1mdW5jdGlvbiBYKHQsbil7dmFyIGUscjtyZXR1cm4gdD1udWxsPT10PzA6K3Qsbj1udWxsPT1uPzE6K24sZnVuY3Rpb24oKXt2YXIgaTtpZihudWxsIT1lKWk9ZSxlPW51bGw7ZWxzZSBkbyBlPTIqTWF0aC5yYW5kb20oKS0xLGk9MipNYXRoLnJhbmRvbSgpLTEscj1lKmUraSppO3doaWxlKCFyfHxyPjEpO3JldHVybiB0K24qaSpNYXRoLnNxcnQoLTIqTWF0aC5sb2cocikvcil9fWZ1bmN0aW9uIFYoKXt2YXIgdD1YLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gTWF0aC5leHAodCgpKX19ZnVuY3Rpb24gVyh0KXtyZXR1cm4gZnVuY3Rpb24oKXtmb3IodmFyIG49MCxlPTA7ZTx0OysrZSluKz1NYXRoLnJhbmRvbSgpO3JldHVybiBufX1mdW5jdGlvbiAkKHQpe3ZhciBuPVcodCk7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIG4oKS90fX1mdW5jdGlvbiBaKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybi1NYXRoLmxvZygxLU1hdGgucmFuZG9tKCkpL3R9fWZ1bmN0aW9uIEcodCl7cmV0dXJuK3R9ZnVuY3Rpb24gSih0KXtyZXR1cm4gdCp0fWZ1bmN0aW9uIFEodCl7cmV0dXJuIHQqKDItdCl9ZnVuY3Rpb24gSyh0KXtyZXR1cm4oKHQqPTIpPD0xP3QqdDotLXQqKDItdCkrMSkvMn1mdW5jdGlvbiB0dCh0KXtyZXR1cm4gdCp0KnR9ZnVuY3Rpb24gbnQodCl7cmV0dXJuLS10KnQqdCsxfWZ1bmN0aW9uIGV0KHQpe3JldHVybigodCo9Mik8PTE/dCp0KnQ6KHQtPTIpKnQqdCsyKS8yfWZ1bmN0aW9uIHJ0KHQpe3JldHVybiAxLU1hdGguY29zKHQqWGQpfWZ1bmN0aW9uIGl0KHQpe3JldHVybiBNYXRoLnNpbih0KlhkKX1mdW5jdGlvbiBvdCh0KXtyZXR1cm4oMS1NYXRoLmNvcyhIZCp0KSkvMn1mdW5jdGlvbiB1dCh0KXtyZXR1cm4gTWF0aC5wb3coMiwxMCp0LTEwKX1mdW5jdGlvbiBhdCh0KXtyZXR1cm4gMS1NYXRoLnBvdygyLC0xMCp0KX1mdW5jdGlvbiBjdCh0KXtyZXR1cm4oKHQqPTIpPD0xP01hdGgucG93KDIsMTAqdC0xMCk6Mi1NYXRoLnBvdygyLDEwLTEwKnQpKS8yfWZ1bmN0aW9uIHN0KHQpe3JldHVybiAxLU1hdGguc3FydCgxLXQqdCl9ZnVuY3Rpb24gZnQodCl7cmV0dXJuIE1hdGguc3FydCgxLSAtLXQqdCl9ZnVuY3Rpb24gbHQodCl7cmV0dXJuKCh0Kj0yKTw9MT8xLU1hdGguc3FydCgxLXQqdCk6TWF0aC5zcXJ0KDEtKHQtPTIpKnQpKzEpLzJ9ZnVuY3Rpb24gaHQodCl7cmV0dXJuIDEtcHQoMS10KX1mdW5jdGlvbiBwdCh0KXtyZXR1cm4odD0rdCk8VmQ/bnYqdCp0OnQ8JGQ/bnYqKHQtPVdkKSp0K1pkOnQ8SmQ/bnYqKHQtPUdkKSp0K1FkOm52Kih0LT1LZCkqdCt0dn1mdW5jdGlvbiBkdCh0KXtyZXR1cm4oKHQqPTIpPD0xPzEtcHQoMS10KTpwdCh0LTEpKzEpLzJ9ZnVuY3Rpb24gdnQodCl7Zm9yKHZhciBuLGU9LTEscj10Lmxlbmd0aCxpPXRbci0xXSxvPTA7KytlPHI7KW49aSxpPXRbZV0sbys9blsxXSppWzBdLW5bMF0qaVsxXTtyZXR1cm4gby8yfWZ1bmN0aW9uIF90KHQpe2Zvcih2YXIgbixlLHI9LTEsaT10Lmxlbmd0aCxvPTAsdT0wLGE9dFtpLTFdLGM9MDsrK3I8aTspbj1hLGE9dFtyXSxjKz1lPW5bMF0qYVsxXS1hWzBdKm5bMV0sbys9KG5bMF0rYVswXSkqZSx1Kz0oblsxXSthWzFdKSplO3JldHVybiBjKj0zLFtvL2MsdS9jXX1mdW5jdGlvbiB5dCh0LG4sZSl7cmV0dXJuKG5bMF0tdFswXSkqKGVbMV0tdFsxXSktKG5bMV0tdFsxXSkqKGVbMF0tdFswXSl9ZnVuY3Rpb24gZ3QodCxuKXtyZXR1cm4gdFswXS1uWzBdfHx0WzFdLW5bMV19ZnVuY3Rpb24gbXQodCl7Zm9yKHZhciBuPXQubGVuZ3RoLGU9WzAsMV0scj0yLGk9MjtpPG47KytpKXtmb3IoO3I+MSYmeXQodFtlW3ItMl1dLHRbZVtyLTFdXSx0W2ldKTw9MDspLS1yO2VbcisrXT1pfXJldHVybiBlLnNsaWNlKDAscil9ZnVuY3Rpb24geHQodCl7aWYoKGU9dC5sZW5ndGgpPDMpcmV0dXJuIG51bGw7dmFyIG4sZSxyPW5ldyBBcnJheShlKSxpPW5ldyBBcnJheShlKTtmb3Iobj0wO248ZTsrK24pcltuXT1bK3Rbbl1bMF0sK3Rbbl1bMV0sbl07Zm9yKHIuc29ydChndCksbj0wO248ZTsrK24paVtuXT1bcltuXVswXSwtcltuXVsxXV07dmFyIG89bXQociksdT1tdChpKSxhPXVbMF09PT1vWzBdLGM9dVt1Lmxlbmd0aC0xXT09PW9bby5sZW5ndGgtMV0scz1bXTtmb3Iobj1vLmxlbmd0aC0xO24+PTA7LS1uKXMucHVzaCh0W3Jbb1tuXV1bMl1dKTtmb3Iobj0rYTtuPHUubGVuZ3RoLWM7KytuKXMucHVzaCh0W3JbdVtuXV1bMl1dKTtyZXR1cm4gc31mdW5jdGlvbiBidCh0LG4pe2Zvcih2YXIgZSxyLGk9dC5sZW5ndGgsbz10W2ktMV0sdT1uWzBdLGE9blsxXSxjPW9bMF0scz1vWzFdLGY9ITEsbD0wO2w8aTsrK2wpbz10W2xdLGU9b1swXSxyPW9bMV0scj5hIT1zPmEmJnU8KGMtZSkqKGEtcikvKHMtcikrZSYmKGY9IWYpLGM9ZSxzPXI7cmV0dXJuIGZ9ZnVuY3Rpb24gd3QodCl7Zm9yKHZhciBuLGUscj0tMSxpPXQubGVuZ3RoLG89dFtpLTFdLHU9b1swXSxhPW9bMV0sYz0wOysrcjxpOyluPXUsZT1hLG89dFtyXSx1PW9bMF0sYT1vWzFdLG4tPXUsZS09YSxjKz1NYXRoLnNxcnQobipuK2UqZSk7cmV0dXJuIGN9ZnVuY3Rpb24gTXQoKXt0aGlzLl94MD10aGlzLl95MD10aGlzLl94MT10aGlzLl95MT1udWxsLHRoaXMuXz1bXX1mdW5jdGlvbiBUdCgpe3JldHVybiBuZXcgTXR9ZnVuY3Rpb24ga3QodCl7dmFyIG49K3RoaXMuX3guY2FsbChudWxsLHQpLGU9K3RoaXMuX3kuY2FsbChudWxsLHQpO3JldHVybiBTdCh0aGlzLmNvdmVyKG4sZSksbixlLHQpfWZ1bmN0aW9uIFN0KHQsbixlLHIpe2lmKGlzTmFOKG4pfHxpc05hTihlKSlyZXR1cm4gdDt2YXIgaSxvLHUsYSxjLHMsZixsLGgscD10Ll9yb290LGQ9e2RhdGE6cn0sdj10Ll94MCxfPXQuX3kwLHk9dC5feDEsZz10Ll95MTtpZighcClyZXR1cm4gdC5fcm9vdD1kLHQ7Zm9yKDtwLmxlbmd0aDspaWYoKHM9bj49KG89KHYreSkvMikpP3Y9bzp5PW8sKGY9ZT49KHU9KF8rZykvMikpP189dTpnPXUsaT1wLCEocD1wW2w9Zjw8MXxzXSkpcmV0dXJuIGlbbF09ZCx0O2lmKGE9K3QuX3guY2FsbChudWxsLHAuZGF0YSksYz0rdC5feS5jYWxsKG51bGwscC5kYXRhKSxuPT09YSYmZT09PWMpcmV0dXJuIGQubmV4dD1wLGk/aVtsXT1kOnQuX3Jvb3Q9ZCx0O2RvIGk9aT9pW2xdPW5ldyBBcnJheSg0KTp0Ll9yb290PW5ldyBBcnJheSg0KSwocz1uPj0obz0odit5KS8yKSk/dj1vOnk9bywoZj1lPj0odT0oXytnKS8yKSk/Xz11Omc9dTt3aGlsZSgobD1mPDwxfHMpPT09KGg9KGM+PXUpPDwxfGE+PW8pKTtyZXR1cm4gaVtoXT1wLGlbbF09ZCx0fWZ1bmN0aW9uIE50KHQpe3ZhciBuLGUscixpLG89dC5sZW5ndGgsdT1uZXcgQXJyYXkobyksYT1uZXcgQXJyYXkobyksYz0xLzAscz0xLzAsZj0tKDEvMCksbD0tKDEvMCk7Zm9yKGU9MDtlPG87KytlKWlzTmFOKHI9K3RoaXMuX3guY2FsbChudWxsLG49dFtlXSkpfHxpc05hTihpPSt0aGlzLl95LmNhbGwobnVsbCxuKSl8fCh1W2VdPXIsYVtlXT1pLHI8YyYmKGM9cikscj5mJiYoZj1yKSxpPHMmJihzPWkpLGk+bCYmKGw9aSkpO2ZvcihmPGMmJihjPXRoaXMuX3gwLGY9dGhpcy5feDEpLGw8cyYmKHM9dGhpcy5feTAsbD10aGlzLl95MSksdGhpcy5jb3ZlcihjLHMpLmNvdmVyKGYsbCksZT0wO2U8bzsrK2UpU3QodGhpcyx1W2VdLGFbZV0sdFtlXSk7cmV0dXJuIHRoaXN9ZnVuY3Rpb24gQXQodCxuKXtpZihpc05hTih0PSt0KXx8aXNOYU4obj0rbikpcmV0dXJuIHRoaXM7dmFyIGU9dGhpcy5feDAscj10aGlzLl95MCxpPXRoaXMuX3gxLG89dGhpcy5feTE7aWYoaXNOYU4oZSkpaT0oZT1NYXRoLmZsb29yKHQpKSsxLG89KHI9TWF0aC5mbG9vcihuKSkrMTtlbHNle2lmKCEoZT50fHx0Pml8fHI+bnx8bj5vKSlyZXR1cm4gdGhpczt2YXIgdSxhLGM9aS1lLHM9dGhpcy5fcm9vdDtzd2l0Y2goYT0objwocitvKS8yKTw8MXx0PChlK2kpLzIpe2Nhc2UgMDpkbyB1PW5ldyBBcnJheSg0KSx1W2FdPXMscz11O3doaWxlKGMqPTIsaT1lK2Msbz1yK2MsdD5pfHxuPm8pO2JyZWFrO2Nhc2UgMTpkbyB1PW5ldyBBcnJheSg0KSx1W2FdPXMscz11O3doaWxlKGMqPTIsZT1pLWMsbz1yK2MsZT50fHxuPm8pO2JyZWFrO2Nhc2UgMjpkbyB1PW5ldyBBcnJheSg0KSx1W2FdPXMscz11O3doaWxlKGMqPTIsaT1lK2Mscj1vLWMsdD5pfHxyPm4pO2JyZWFrO2Nhc2UgMzpkbyB1PW5ldyBBcnJheSg0KSx1W2FdPXMscz11O3doaWxlKGMqPTIsZT1pLWMscj1vLWMsZT50fHxyPm4pfXRoaXMuX3Jvb3QmJnRoaXMuX3Jvb3QubGVuZ3RoJiYodGhpcy5fcm9vdD1zKX1yZXR1cm4gdGhpcy5feDA9ZSx0aGlzLl95MD1yLHRoaXMuX3gxPWksdGhpcy5feTE9byx0aGlzfWZ1bmN0aW9uIEV0KCl7dmFyIHQ9W107cmV0dXJuIHRoaXMudmlzaXQoZnVuY3Rpb24obil7aWYoIW4ubGVuZ3RoKWRvIHQucHVzaChuLmRhdGEpO3doaWxlKG49bi5uZXh0KX0pLHR9ZnVuY3Rpb24gQ3QodCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5jb3ZlcigrdFswXVswXSwrdFswXVsxXSkuY292ZXIoK3RbMV1bMF0sK3RbMV1bMV0pOmlzTmFOKHRoaXMuX3gwKT92b2lkIDA6W1t0aGlzLl94MCx0aGlzLl95MF0sW3RoaXMuX3gxLHRoaXMuX3kxXV19ZnVuY3Rpb24genQodCxuLGUscixpKXt0aGlzLm5vZGU9dCx0aGlzLngwPW4sdGhpcy55MD1lLHRoaXMueDE9cix0aGlzLnkxPWl9ZnVuY3Rpb24gUHQodCxuLGUpe3ZhciByLGksbyx1LGEsYyxzLGY9dGhpcy5feDAsbD10aGlzLl95MCxoPXRoaXMuX3gxLHA9dGhpcy5feTEsZD1bXSx2PXRoaXMuX3Jvb3Q7Zm9yKHYmJmQucHVzaChuZXcgenQodixmLGwsaCxwKSksbnVsbD09ZT9lPTEvMDooZj10LWUsbD1uLWUsaD10K2UscD1uK2UsZSo9ZSk7Yz1kLnBvcCgpOylpZighKCEodj1jLm5vZGUpfHwoaT1jLngwKT5ofHwobz1jLnkwKT5wfHwodT1jLngxKTxmfHwoYT1jLnkxKTxsKSlpZih2Lmxlbmd0aCl7dmFyIF89KGkrdSkvMix5PShvK2EpLzI7ZC5wdXNoKG5ldyB6dCh2WzNdLF8seSx1LGEpLG5ldyB6dCh2WzJdLGkseSxfLGEpLG5ldyB6dCh2WzFdLF8sbyx1LHkpLG5ldyB6dCh2WzBdLGksbyxfLHkpKSwocz0obj49eSk8PDF8dD49XykmJihjPWRbZC5sZW5ndGgtMV0sZFtkLmxlbmd0aC0xXT1kW2QubGVuZ3RoLTEtc10sZFtkLmxlbmd0aC0xLXNdPWMpfWVsc2V7dmFyIGc9dC0rdGhpcy5feC5jYWxsKG51bGwsdi5kYXRhKSxtPW4tK3RoaXMuX3kuY2FsbChudWxsLHYuZGF0YSkseD1nKmcrbSptO2lmKHg8ZSl7dmFyIGI9TWF0aC5zcXJ0KGU9eCk7Zj10LWIsbD1uLWIsaD10K2IscD1uK2Iscj12LmRhdGF9fXJldHVybiByfWZ1bmN0aW9uIHF0KHQpe2lmKGlzTmFOKG89K3RoaXMuX3guY2FsbChudWxsLHQpKXx8aXNOYU4odT0rdGhpcy5feS5jYWxsKG51bGwsdCkpKXJldHVybiB0aGlzO3ZhciBuLGUscixpLG8sdSxhLGMscyxmLGwsaCxwPXRoaXMuX3Jvb3QsZD10aGlzLl94MCx2PXRoaXMuX3kwLF89dGhpcy5feDEseT10aGlzLl95MTtpZighcClyZXR1cm4gdGhpcztpZihwLmxlbmd0aClmb3IoOzspe2lmKChzPW8+PShhPShkK18pLzIpKT9kPWE6Xz1hLChmPXU+PShjPSh2K3kpLzIpKT92PWM6eT1jLG49cCwhKHA9cFtsPWY8PDF8c10pKXJldHVybiB0aGlzO2lmKCFwLmxlbmd0aClicmVhazsobltsKzEmM118fG5bbCsyJjNdfHxuW2wrMyYzXSkmJihlPW4saD1sKX1mb3IoO3AuZGF0YSE9PXQ7KWlmKHI9cCwhKHA9cC5uZXh0KSlyZXR1cm4gdGhpcztyZXR1cm4oaT1wLm5leHQpJiZkZWxldGUgcC5uZXh0LHI/KGk/ci5uZXh0PWk6ZGVsZXRlIHIubmV4dCx0aGlzKTpuPyhpP25bbF09aTpkZWxldGUgbltsXSwocD1uWzBdfHxuWzFdfHxuWzJdfHxuWzNdKSYmcD09PShuWzNdfHxuWzJdfHxuWzFdfHxuWzBdKSYmIXAubGVuZ3RoJiYoZT9lW2hdPXA6dGhpcy5fcm9vdD1wKSx0aGlzKToodGhpcy5fcm9vdD1pLHRoaXMpfWZ1bmN0aW9uIEx0KHQpe2Zvcih2YXIgbj0wLGU9dC5sZW5ndGg7bjxlOysrbil0aGlzLnJlbW92ZSh0W25dKTtyZXR1cm4gdGhpc31mdW5jdGlvbiBSdCgpe3JldHVybiB0aGlzLl9yb290fWZ1bmN0aW9uIFV0KCl7dmFyIHQ9MDtyZXR1cm4gdGhpcy52aXNpdChmdW5jdGlvbihuKXtpZighbi5sZW5ndGgpZG8rK3Q7d2hpbGUobj1uLm5leHQpfSksdH1mdW5jdGlvbiBEdCh0KXt2YXIgbixlLHIsaSxvLHUsYT1bXSxjPXRoaXMuX3Jvb3Q7Zm9yKGMmJmEucHVzaChuZXcgenQoYyx0aGlzLl94MCx0aGlzLl95MCx0aGlzLl94MSx0aGlzLl95MSkpO249YS5wb3AoKTspaWYoIXQoYz1uLm5vZGUscj1uLngwLGk9bi55MCxvPW4ueDEsdT1uLnkxKSYmYy5sZW5ndGgpe3ZhciBzPShyK28pLzIsZj0oaSt1KS8yOyhlPWNbM10pJiZhLnB1c2gobmV3IHp0KGUscyxmLG8sdSkpLChlPWNbMl0pJiZhLnB1c2gobmV3IHp0KGUscixmLHMsdSkpLChlPWNbMV0pJiZhLnB1c2gobmV3IHp0KGUscyxpLG8sZikpLChlPWNbMF0pJiZhLnB1c2gobmV3IHp0KGUscixpLHMsZikpfXJldHVybiB0aGlzfWZ1bmN0aW9uIE90KHQpe3ZhciBuLGU9W10scj1bXTtmb3IodGhpcy5fcm9vdCYmZS5wdXNoKG5ldyB6dCh0aGlzLl9yb290LHRoaXMuX3gwLHRoaXMuX3kwLHRoaXMuX3gxLHRoaXMuX3kxKSk7bj1lLnBvcCgpOyl7dmFyIGk9bi5ub2RlO2lmKGkubGVuZ3RoKXt2YXIgbyx1PW4ueDAsYT1uLnkwLGM9bi54MSxzPW4ueTEsZj0odStjKS8yLGw9KGErcykvMjsobz1pWzBdKSYmZS5wdXNoKG5ldyB6dChvLHUsYSxmLGwpKSwobz1pWzFdKSYmZS5wdXNoKG5ldyB6dChvLGYsYSxjLGwpKSwobz1pWzJdKSYmZS5wdXNoKG5ldyB6dChvLHUsbCxmLHMpKSwobz1pWzNdKSYmZS5wdXNoKG5ldyB6dChvLGYsbCxjLHMpKX1yLnB1c2gobil9Zm9yKDtuPXIucG9wKCk7KXQobi5ub2RlLG4ueDAsbi55MCxuLngxLG4ueTEpO3JldHVybiB0aGlzfWZ1bmN0aW9uIEZ0KHQpe3JldHVybiB0WzBdfWZ1bmN0aW9uIEl0KHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0aGlzLl94PXQsdGhpcyk6dGhpcy5feH1mdW5jdGlvbiBZdCh0KXtyZXR1cm4gdFsxXX1mdW5jdGlvbiBCdCh0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odGhpcy5feT10LHRoaXMpOnRoaXMuX3l9ZnVuY3Rpb24ganQodCxuLGUpe3ZhciByPW5ldyBIdChudWxsPT1uP0Z0Om4sbnVsbD09ZT9ZdDplLE5hTixOYU4sTmFOLE5hTik7cmV0dXJuIG51bGw9PXQ/cjpyLmFkZEFsbCh0KX1mdW5jdGlvbiBIdCh0LG4sZSxyLGksbyl7dGhpcy5feD10LHRoaXMuX3k9bix0aGlzLl94MD1lLHRoaXMuX3kwPXIsdGhpcy5feDE9aSx0aGlzLl95MT1vLHRoaXMuX3Jvb3Q9dm9pZCAwfWZ1bmN0aW9uIFh0KHQpe2Zvcih2YXIgbj17ZGF0YTp0LmRhdGF9LGU9bjt0PXQubmV4dDspZT1lLm5leHQ9e2RhdGE6dC5kYXRhfTtyZXR1cm4gbn1mdW5jdGlvbiBWdCh0KXtpZighKHQ+PTEpKXRocm93IG5ldyBFcnJvcjt0aGlzLl9zaXplPXQsdGhpcy5fY2FsbD10aGlzLl9lcnJvcj1udWxsLHRoaXMuX3Rhc2tzPVtdLHRoaXMuX2RhdGE9W10sdGhpcy5fd2FpdGluZz10aGlzLl9hY3RpdmU9dGhpcy5fZW5kZWQ9dGhpcy5fc3RhcnQ9MH1mdW5jdGlvbiBXdCh0KXtpZighdC5fc3RhcnQpdHJ5eyR0KHQpfWNhdGNoKG4pe3QuX3Rhc2tzW3QuX2VuZGVkK3QuX2FjdGl2ZS0xXSYmR3QodCxuKX19ZnVuY3Rpb24gJHQodCl7Zm9yKDt0Ll9zdGFydD10Ll93YWl0aW5nJiZ0Ll9hY3RpdmU8dC5fc2l6ZTspe3ZhciBuPXQuX2VuZGVkK3QuX2FjdGl2ZSxlPXQuX3Rhc2tzW25dLHI9ZS5sZW5ndGgtMSxpPWVbcl07ZVtyXT1adCh0LG4pLC0tdC5fd2FpdGluZywrK3QuX2FjdGl2ZSxlPWkuYXBwbHkobnVsbCxlKSx0Ll90YXNrc1tuXSYmKHQuX3Rhc2tzW25dPWV8fGd2KX19ZnVuY3Rpb24gWnQodCxuKXtyZXR1cm4gZnVuY3Rpb24oZSxyKXt0Ll90YXNrc1tuXSYmKC0tdC5fYWN0aXZlLCsrdC5fZW5kZWQsdC5fdGFza3Nbbl09bnVsbCxudWxsPT10Ll9lcnJvciYmKG51bGwhPWU/R3QodCxlKToodC5fZGF0YVtuXT1yLHQuX3dhaXRpbmc/V3QodCk6SnQodCkpKSl9fWZ1bmN0aW9uIEd0KHQsbil7dmFyIGUscj10Ll90YXNrcy5sZW5ndGg7Zm9yKHQuX2Vycm9yPW4sdC5fZGF0YT12b2lkIDAsdC5fd2FpdGluZz1OYU47LS1yPj0wOylpZigoZT10Ll90YXNrc1tyXSkmJih0Ll90YXNrc1tyXT1udWxsLGUuYWJvcnQpKXRyeXtlLmFib3J0KCl9Y2F0Y2godCl7fXQuX2FjdGl2ZT1OYU4sSnQodCl9ZnVuY3Rpb24gSnQodCl7IXQuX2FjdGl2ZSYmdC5fY2FsbCYmdC5fY2FsbCh0Ll9lcnJvcix0Ll9kYXRhKX1mdW5jdGlvbiBRdCh0KXtyZXR1cm4gbmV3IFZ0KGFyZ3VtZW50cy5sZW5ndGg/K3Q6MS8wKX1mdW5jdGlvbiBLdCh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19ZnVuY3Rpb24gdG4odCl7cmV0dXJuIHQuaW5uZXJSYWRpdXN9ZnVuY3Rpb24gbm4odCl7cmV0dXJuIHQub3V0ZXJSYWRpdXN9ZnVuY3Rpb24gZW4odCl7cmV0dXJuIHQuc3RhcnRBbmdsZX1mdW5jdGlvbiBybih0KXtyZXR1cm4gdC5lbmRBbmdsZX1mdW5jdGlvbiBvbih0KXtyZXR1cm4gdCYmdC5wYWRBbmdsZX1mdW5jdGlvbiB1bih0KXtyZXR1cm4gdD49MT9idjp0PD0tMT8tYnY6TWF0aC5hc2luKHQpfWZ1bmN0aW9uIGFuKHQsbixlLHIsaSxvLHUsYSl7dmFyIGM9ZS10LHM9ci1uLGY9dS1pLGw9YS1vLGg9KGYqKG4tbyktbCoodC1pKSkvKGwqYy1mKnMpO3JldHVyblt0K2gqYyxuK2gqc119ZnVuY3Rpb24gY24odCxuLGUscixpLG8sdSl7dmFyIGE9dC1lLGM9bi1yLHM9KHU/bzotbykvTWF0aC5zcXJ0KGEqYStjKmMpLGY9cypjLGw9LXMqYSxoPXQrZixwPW4rbCxkPWUrZix2PXIrbCxfPShoK2QpLzIseT0ocCt2KS8yLGc9ZC1oLG09di1wLHg9ZypnK20qbSxiPWktbyx3PWgqdi1kKnAsTT0obTwwPy0xOjEpKk1hdGguc3FydChNYXRoLm1heCgwLGIqYip4LXcqdykpLFQ9KHcqbS1nKk0pL3gsaz0oLXcqZy1tKk0pL3gsUz0odyptK2cqTSkveCxOPSgtdypnK20qTSkveCxBPVQtXyxFPWsteSxDPVMtXyx6PU4teTtyZXR1cm4gQSpBK0UqRT5DKkMreip6JiYoVD1TLGs9Tikse2N4OlQsY3k6ayx4MDE6LWYseTAxOi1sLHgxMTpUKihpL2ItMSkseTExOmsqKGkvYi0xKX19ZnVuY3Rpb24gc24oKXtmdW5jdGlvbiB0KCl7dmFyIHQscyxmPStuLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxsPStlLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxoPW8uYXBwbHkodGhpcyxhcmd1bWVudHMpLWJ2LHA9dS5hcHBseSh0aGlzLGFyZ3VtZW50cyktYnYsZD1NYXRoLmFicyhwLWgpLHY9cD5oO2lmKGN8fChjPXQ9VHQoKSksbDxmJiYocz1sLGw9ZixmPXMpLGw+bXYpaWYoZD53di1tdiljLm1vdmVUbyhsKk1hdGguY29zKGgpLGwqTWF0aC5zaW4oaCkpLGMuYXJjKDAsMCxsLGgscCwhdiksZj5tdiYmKGMubW92ZVRvKGYqTWF0aC5jb3MocCksZipNYXRoLnNpbihwKSksYy5hcmMoMCwwLGYscCxoLHYpKTtlbHNle3ZhciBfLHksZz1oLG09cCx4PWgsYj1wLHc9ZCxNPWQsVD1hLmFwcGx5KHRoaXMsYXJndW1lbnRzKS8yLGs9VD5tdiYmKGk/K2kuYXBwbHkodGhpcyxhcmd1bWVudHMpOk1hdGguc3FydChmKmYrbCpsKSksUz1NYXRoLm1pbihNYXRoLmFicyhsLWYpLzIsK3IuYXBwbHkodGhpcyxhcmd1bWVudHMpKSxOPVMsQT1TO2lmKGs+bXYpe3ZhciBFPXVuKGsvZipNYXRoLnNpbihUKSksQz11bihrL2wqTWF0aC5zaW4oVCkpOyh3LT0yKkUpPm12PyhFKj12PzE6LTEseCs9RSxiLT1FKToodz0wLHg9Yj0oaCtwKS8yKSwoTS09MipDKT5tdj8oQyo9dj8xOi0xLGcrPUMsbS09Qyk6KE09MCxnPW09KGgrcCkvMil9dmFyIHo9bCpNYXRoLmNvcyhnKSxQPWwqTWF0aC5zaW4oZykscT1mKk1hdGguY29zKGIpLEw9ZipNYXRoLnNpbihiKTtpZihTPm12KXt2YXIgUj1sKk1hdGguY29zKG0pLFU9bCpNYXRoLnNpbihtKSxEPWYqTWF0aC5jb3MoeCksTz1mKk1hdGguc2luKHgpO2lmKGQ8eHYpe3ZhciBGPXc+bXY/YW4oeixQLEQsTyxSLFUscSxMKTpbcSxMXSxJPXotRlswXSxZPVAtRlsxXSxCPVItRlswXSxqPVUtRlsxXSxIPTEvTWF0aC5zaW4oTWF0aC5hY29zKChJKkIrWSpqKS8oTWF0aC5zcXJ0KEkqSStZKlkpKk1hdGguc3FydChCKkIraipqKSkpLzIpLFg9TWF0aC5zcXJ0KEZbMF0qRlswXStGWzFdKkZbMV0pO049TWF0aC5taW4oUywoZi1YKS8oSC0xKSksQT1NYXRoLm1pbihTLChsLVgpLyhIKzEpKX19TT5tdj9BPm12PyhfPWNuKEQsTyx6LFAsbCxBLHYpLHk9Y24oUixVLHEsTCxsLEEsdiksYy5tb3ZlVG8oXy5jeCtfLngwMSxfLmN5K18ueTAxKSxBPFM/Yy5hcmMoXy5jeCxfLmN5LEEsTWF0aC5hdGFuMihfLnkwMSxfLngwMSksTWF0aC5hdGFuMih5LnkwMSx5LngwMSksIXYpOihjLmFyYyhfLmN4LF8uY3ksQSxNYXRoLmF0YW4yKF8ueTAxLF8ueDAxKSxNYXRoLmF0YW4yKF8ueTExLF8ueDExKSwhdiksYy5hcmMoMCwwLGwsTWF0aC5hdGFuMihfLmN5K18ueTExLF8uY3grXy54MTEpLE1hdGguYXRhbjIoeS5jeSt5LnkxMSx5LmN4K3kueDExKSwhdiksYy5hcmMoeS5jeCx5LmN5LEEsTWF0aC5hdGFuMih5LnkxMSx5LngxMSksTWF0aC5hdGFuMih5LnkwMSx5LngwMSksIXYpKSk6KGMubW92ZVRvKHosUCksYy5hcmMoMCwwLGwsZyxtLCF2KSk6Yy5tb3ZlVG8oeixQKSxmPm12JiZ3Pm12P04+bXY/KF89Y24ocSxMLFIsVSxmLC1OLHYpLHk9Y24oeixQLEQsTyxmLC1OLHYpLGMubGluZVRvKF8uY3grXy54MDEsXy5jeStfLnkwMSksTjxTP2MuYXJjKF8uY3gsXy5jeSxOLE1hdGguYXRhbjIoXy55MDEsXy54MDEpLE1hdGguYXRhbjIoeS55MDEseS54MDEpLCF2KTooYy5hcmMoXy5jeCxfLmN5LE4sTWF0aC5hdGFuMihfLnkwMSxfLngwMSksTWF0aC5hdGFuMihfLnkxMSxfLngxMSksIXYpLGMuYXJjKDAsMCxmLE1hdGguYXRhbjIoXy5jeStfLnkxMSxfLmN4K18ueDExKSxNYXRoLmF0YW4yKHkuY3kreS55MTEseS5jeCt5LngxMSksdiksYy5hcmMoeS5jeCx5LmN5LE4sTWF0aC5hdGFuMih5LnkxMSx5LngxMSksTWF0aC5hdGFuMih5LnkwMSx5LngwMSksIXYpKSk6Yy5hcmMoMCwwLGYsYix4LHYpOmMubGluZVRvKHEsTCl9ZWxzZSBjLm1vdmVUbygwLDApO2lmKGMuY2xvc2VQYXRoKCksdClyZXR1cm4gYz1udWxsLHQrIiJ8fG51bGx9dmFyIG49dG4sZT1ubixyPUt0KDApLGk9bnVsbCxvPWVuLHU9cm4sYT1vbixjPW51bGw7cmV0dXJuIHQuY2VudHJvaWQ9ZnVuY3Rpb24oKXt2YXIgdD0oK24uYXBwbHkodGhpcyxhcmd1bWVudHMpKyArZS5hcHBseSh0aGlzLGFyZ3VtZW50cykpLzIscj0oK28uYXBwbHkodGhpcyxhcmd1bWVudHMpKyArdS5hcHBseSh0aGlzLGFyZ3VtZW50cykpLzIteHYvMjtyZXR1cm5bTWF0aC5jb3MocikqdCxNYXRoLnNpbihyKSp0XX0sdC5pbm5lclJhZGl1cz1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0iZnVuY3Rpb24iPT10eXBlb2YgZT9lOkt0KCtlKSx0KTpufSx0Lm91dGVyUmFkaXVzPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPSJmdW5jdGlvbiI9PXR5cGVvZiBuP246S3QoK24pLHQpOmV9LHQuY29ybmVyUmFkaXVzPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPSJmdW5jdGlvbiI9PXR5cGVvZiBuP246S3QoK24pLHQpOnJ9LHQucGFkUmFkaXVzPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPW51bGw9PW4/bnVsbDoiZnVuY3Rpb24iPT10eXBlb2Ygbj9uOkt0KCtuKSx0KTppfSx0LnN0YXJ0QW5nbGU9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89ImZ1bmN0aW9uIj09dHlwZW9mIG4/bjpLdCgrbiksdCk6b30sdC5lbmRBbmdsZT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT0iZnVuY3Rpb24iPT10eXBlb2Ygbj9uOkt0KCtuKSx0KTp1fSx0LnBhZEFuZ2xlPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPSJmdW5jdGlvbiI9PXR5cGVvZiBuP246S3QoK24pLHQpOmF9LHQuY29udGV4dD1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz1udWxsPT1uP251bGw6bix0KTpjfSx0fWZ1bmN0aW9uIGZuKHQpe3RoaXMuX2NvbnRleHQ9dH1mdW5jdGlvbiBsbih0KXtyZXR1cm4gbmV3IGZuKHQpfWZ1bmN0aW9uIGhuKHQpe3JldHVybiB0WzBdfWZ1bmN0aW9uIHBuKHQpe3JldHVybiB0WzFdfWZ1bmN0aW9uIGRuKCl7ZnVuY3Rpb24gdCh0KXt2YXIgYSxjLHMsZj10Lmxlbmd0aCxsPSExO2ZvcihudWxsPT1pJiYodT1vKHM9VHQoKSkpLGE9MDthPD1mOysrYSkhKGE8ZiYmcihjPXRbYV0sYSx0KSk9PT1sJiYoKGw9IWwpP3UubGluZVN0YXJ0KCk6dS5saW5lRW5kKCkpLGwmJnUucG9pbnQoK24oYyxhLHQpLCtlKGMsYSx0KSk7aWYocylyZXR1cm4gdT1udWxsLHMrIiJ8fG51bGx9dmFyIG49aG4sZT1wbixyPUt0KCEwKSxpPW51bGwsbz1sbix1PW51bGw7cmV0dXJuIHQueD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0iZnVuY3Rpb24iPT10eXBlb2YgZT9lOkt0KCtlKSx0KTpufSx0Lnk9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9ImZ1bmN0aW9uIj09dHlwZW9mIG4/bjpLdCgrbiksdCk6ZX0sdC5kZWZpbmVkPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPSJmdW5jdGlvbiI9PXR5cGVvZiBuP246S3QoISFuKSx0KTpyfSx0LmN1cnZlPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPW4sbnVsbCE9aSYmKHU9byhpKSksdCk6b30sdC5jb250ZXh0PWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhudWxsPT1uP2k9dT1udWxsOnU9byhpPW4pLHQpOml9LHR9ZnVuY3Rpb24gdm4oKXtmdW5jdGlvbiB0KHQpe3ZhciBuLGYsbCxoLHAsZD10Lmxlbmd0aCx2PSExLF89bmV3IEFycmF5KGQpLHk9bmV3IEFycmF5KGQpO2ZvcihudWxsPT1hJiYocz1jKHA9VHQoKSkpLG49MDtuPD1kOysrbil7aWYoIShuPGQmJnUoaD10W25dLG4sdCkpPT09dilpZih2PSF2KWY9bixzLmFyZWFTdGFydCgpLHMubGluZVN0YXJ0KCk7ZWxzZXtmb3Iocy5saW5lRW5kKCkscy5saW5lU3RhcnQoKSxsPW4tMTtsPj1mOy0tbClzLnBvaW50KF9bbF0seVtsXSk7cy5saW5lRW5kKCkscy5hcmVhRW5kKCl9diYmKF9bbl09K2UoaCxuLHQpLHlbbl09K2koaCxuLHQpLHMucG9pbnQocj8rcihoLG4sdCk6X1tuXSxvPytvKGgsbix0KTp5W25dKSl9aWYocClyZXR1cm4gcz1udWxsLHArIiJ8fG51bGx9ZnVuY3Rpb24gbigpe3JldHVybiBkbigpLmRlZmluZWQodSkuY3VydmUoYykuY29udGV4dChhKX12YXIgZT1obixyPW51bGwsaT1LdCgwKSxvPXBuLHU9S3QoITApLGE9bnVsbCxjPWxuLHM9bnVsbDtyZXR1cm4gdC54PWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPSJmdW5jdGlvbiI9PXR5cGVvZiBuP246S3QoK24pLHI9bnVsbCx0KTplfSx0LngwPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPSJmdW5jdGlvbiI9PXR5cGVvZiBuP246S3QoK24pLHQpOmV9LHQueDE9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9bnVsbD09bj9udWxsOiJmdW5jdGlvbiI9PXR5cGVvZiBuP246S3QoK24pLHQpOnJ9LHQueT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0iZnVuY3Rpb24iPT10eXBlb2Ygbj9uOkt0KCtuKSxvPW51bGwsdCk6aX0sdC55MD1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0iZnVuY3Rpb24iPT10eXBlb2Ygbj9uOkt0KCtuKSx0KTppfSx0LnkxPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPW51bGw9PW4/bnVsbDoiZnVuY3Rpb24iPT10eXBlb2Ygbj9uOkt0KCtuKSx0KTpvfSx0LmxpbmVYMD10LmxpbmVZMD1mdW5jdGlvbigpe3JldHVybiBuKCkueChlKS55KGkpfSx0LmxpbmVZMT1mdW5jdGlvbigpe3JldHVybiBuKCkueChlKS55KG8pfSx0LmxpbmVYMT1mdW5jdGlvbigpe3JldHVybiBuKCkueChyKS55KGkpfSx0LmRlZmluZWQ9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHU9ImZ1bmN0aW9uIj09dHlwZW9mIG4/bjpLdCghIW4pLHQpOnV9LHQuY3VydmU9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGM9bixudWxsIT1hJiYocz1jKGEpKSx0KTpjfSx0LmNvbnRleHQ9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG51bGw9PW4/YT1zPW51bGw6cz1jKGE9biksdCk6YX0sdH1mdW5jdGlvbiBfbih0LG4pe3JldHVybiBuPHQ/LTE6bj50PzE6bj49dD8wOk5hTn1mdW5jdGlvbiB5bih0KXtyZXR1cm4gdH1mdW5jdGlvbiBnbigpe2Z1bmN0aW9uIHQodCl7dmFyIGEsYyxzLGYsbCxoPXQubGVuZ3RoLHA9MCxkPW5ldyBBcnJheShoKSx2PW5ldyBBcnJheShoKSxfPStpLmFwcGx5KHRoaXMsYXJndW1lbnRzKSx5PU1hdGgubWluKHd2LE1hdGgubWF4KC13dixvLmFwcGx5KHRoaXMsYXJndW1lbnRzKS1fKSksZz1NYXRoLm1pbihNYXRoLmFicyh5KS9oLHUuYXBwbHkodGhpcyxhcmd1bWVudHMpKSxtPWcqKHk8MD8tMToxKTtmb3IoYT0wO2E8aDsrK2EpKGw9dltkW2FdPWFdPStuKHRbYV0sYSx0KSk+MCYmKHArPWwpO2ZvcihudWxsIT1lP2Quc29ydChmdW5jdGlvbih0LG4pe3JldHVybiBlKHZbdF0sdltuXSl9KTpudWxsIT1yJiZkLnNvcnQoZnVuY3Rpb24obixlKXtyZXR1cm4gcih0W25dLHRbZV0pfSksYT0wLHM9cD8oeS1oKm0pL3A6MDthPGg7KythLF89ZiljPWRbYV0sbD12W2NdLGY9XysobD4wP2wqczowKSttLHZbY109e2RhdGE6dFtjXSxpbmRleDphLHZhbHVlOmwsc3RhcnRBbmdsZTpfLGVuZEFuZ2xlOmYscGFkQW5nbGU6Z307cmV0dXJuIHZ9dmFyIG49eW4sZT1fbixyPW51bGwsaT1LdCgwKSxvPUt0KHd2KSx1PUt0KDApO3JldHVybiB0LnZhbHVlPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPSJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6S3QoK2UpLHQpOm59LHQuc29ydFZhbHVlcz1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT1uLHI9bnVsbCx0KTplfSx0LnNvcnQ9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9bixlPW51bGwsdCk6cn0sdC5zdGFydEFuZ2xlPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPSJmdW5jdGlvbiI9PXR5cGVvZiBuP246S3QoK24pLHQpOml9LHQuZW5kQW5nbGU9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89ImZ1bmN0aW9uIj09dHlwZW9mIG4/bjpLdCgrbiksdCk6b30sdC5wYWRBbmdsZT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT0iZnVuY3Rpb24iPT10eXBlb2Ygbj9uOkt0KCtuKSx0KTp1fSx0fWZ1bmN0aW9uIG1uKHQpe3RoaXMuX2N1cnZlPXR9ZnVuY3Rpb24geG4odCl7ZnVuY3Rpb24gbihuKXtyZXR1cm4gbmV3IG1uKHQobikpfXJldHVybiBuLl9jdXJ2ZT10LG59ZnVuY3Rpb24gYm4odCl7dmFyIG49dC5jdXJ2ZTtyZXR1cm4gdC5hbmdsZT10LngsZGVsZXRlIHQueCx0LnJhZGl1cz10LnksZGVsZXRlIHQueSx0LmN1cnZlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP24oeG4odCkpOm4oKS5fY3VydmV9LHR9ZnVuY3Rpb24gd24oKXtyZXR1cm4gYm4oZG4oKS5jdXJ2ZShNdikpfWZ1bmN0aW9uIE1uKCl7dmFyIHQ9dm4oKS5jdXJ2ZShNdiksbj10LmN1cnZlLGU9dC5saW5lWDAscj10LmxpbmVYMSxpPXQubGluZVkwLG89dC5saW5lWTE7cmV0dXJuIHQuYW5nbGU9dC54LGRlbGV0ZSB0LngsdC5zdGFydEFuZ2xlPXQueDAsZGVsZXRlIHQueDAsdC5lbmRBbmdsZT10LngxLGRlbGV0ZSB0LngxLHQucmFkaXVzPXQueSxkZWxldGUgdC55LHQuaW5uZXJSYWRpdXM9dC55MCxkZWxldGUgdC55MCx0Lm91dGVyUmFkaXVzPXQueTEsZGVsZXRlIHQueTEsdC5saW5lU3RhcnRBbmdsZT1mdW5jdGlvbigpe3JldHVybiBibihlKCkpfSxkZWxldGUgdC5saW5lWDAsdC5saW5lRW5kQW5nbGU9ZnVuY3Rpb24oKXtyZXR1cm4gYm4ocigpKX0sZGVsZXRlIHQubGluZVgxLHQubGluZUlubmVyUmFkaXVzPWZ1bmN0aW9uKCl7cmV0dXJuIGJuKGkoKSl9LGRlbGV0ZSB0LmxpbmVZMCx0LmxpbmVPdXRlclJhZGl1cz1mdW5jdGlvbigpe3JldHVybiBibihvKCkpfSxkZWxldGUgdC5saW5lWTEsdC5jdXJ2ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD9uKHhuKHQpKTpuKCkuX2N1cnZlfSx0fWZ1bmN0aW9uIFRuKCl7ZnVuY3Rpb24gdCgpe3ZhciB0O2lmKHJ8fChyPXQ9VHQoKSksbi5hcHBseSh0aGlzLGFyZ3VtZW50cykuZHJhdyhyLCtlLmFwcGx5KHRoaXMsYXJndW1lbnRzKSksdClyZXR1cm4gcj1udWxsLHQrIiJ8fG51bGx9dmFyIG49S3QoVHYpLGU9S3QoNjQpLHI9bnVsbDtyZXR1cm4gdC50eXBlPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPSJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6S3QoZSksdCk6bn0sdC5zaXplPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPSJmdW5jdGlvbiI9PXR5cGVvZiBuP246S3QoK24pLHQpOmV9LHQuY29udGV4dD1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj1udWxsPT1uP251bGw6bix0KTpyfSx0fWZ1bmN0aW9uIGtuKCl7fWZ1bmN0aW9uIFNuKHQsbixlKXt0Ll9jb250ZXh0LmJlemllckN1cnZlVG8oKDIqdC5feDArdC5feDEpLzMsKDIqdC5feTArdC5feTEpLzMsKHQuX3gwKzIqdC5feDEpLzMsKHQuX3kwKzIqdC5feTEpLzMsKHQuX3gwKzQqdC5feDErbikvNiwodC5feTArNCp0Ll95MStlKS82KX1mdW5jdGlvbiBObih0KXt0aGlzLl9jb250ZXh0PXR9ZnVuY3Rpb24gQW4odCl7cmV0dXJuIG5ldyBObih0KX1mdW5jdGlvbiBFbih0KXt0aGlzLl9jb250ZXh0PXR9ZnVuY3Rpb24gQ24odCl7cmV0dXJuIG5ldyBFbih0KX1mdW5jdGlvbiB6bih0KXt0aGlzLl9jb250ZXh0PXR9ZnVuY3Rpb24gUG4odCl7cmV0dXJuIG5ldyB6bih0KX1mdW5jdGlvbiBxbih0LG4pe3RoaXMuX2Jhc2lzPW5ldyBObih0KSx0aGlzLl9iZXRhPW59ZnVuY3Rpb24gTG4odCxuLGUpe3QuX2NvbnRleHQuYmV6aWVyQ3VydmVUbyh0Ll94MSt0Ll9rKih0Ll94Mi10Ll94MCksdC5feTErdC5fayoodC5feTItdC5feTApLHQuX3gyK3QuX2sqKHQuX3gxLW4pLHQuX3kyK3QuX2sqKHQuX3kxLWUpLHQuX3gyLHQuX3kyKX1mdW5jdGlvbiBSbih0LG4pe3RoaXMuX2NvbnRleHQ9dCx0aGlzLl9rPSgxLW4pLzZ9ZnVuY3Rpb24gVW4odCxuKXt0aGlzLl9jb250ZXh0PXQsdGhpcy5faz0oMS1uKS82fWZ1bmN0aW9uIERuKHQsbil7dGhpcy5fY29udGV4dD10LHRoaXMuX2s9KDEtbikvNn1mdW5jdGlvbiBPbih0LG4sZSl7dmFyIHI9dC5feDEsaT10Ll95MSxvPXQuX3gyLHU9dC5feTI7aWYodC5fbDAxX2E+bXYpe3ZhciBhPTIqdC5fbDAxXzJhKzMqdC5fbDAxX2EqdC5fbDEyX2ErdC5fbDEyXzJhLGM9Myp0Ll9sMDFfYSoodC5fbDAxX2ErdC5fbDEyX2EpO3I9KHIqYS10Ll94MCp0Ll9sMTJfMmErdC5feDIqdC5fbDAxXzJhKS9jLGk9KGkqYS10Ll95MCp0Ll9sMTJfMmErdC5feTIqdC5fbDAxXzJhKS9jfWlmKHQuX2wyM19hPm12KXt2YXIgcz0yKnQuX2wyM18yYSszKnQuX2wyM19hKnQuX2wxMl9hK3QuX2wxMl8yYSxmPTMqdC5fbDIzX2EqKHQuX2wyM19hK3QuX2wxMl9hKTtvPShvKnMrdC5feDEqdC5fbDIzXzJhLW4qdC5fbDEyXzJhKS9mLHU9KHUqcyt0Ll95MSp0Ll9sMjNfMmEtZSp0Ll9sMTJfMmEpL2Z9dC5fY29udGV4dC5iZXppZXJDdXJ2ZVRvKHIsaSxvLHUsdC5feDIsdC5feTIpfWZ1bmN0aW9uIEZuKHQsbil7dGhpcy5fY29udGV4dD10LHRoaXMuX2FscGhhPW59ZnVuY3Rpb24gSW4odCxuKXt0aGlzLl9jb250ZXh0PXQsdGhpcy5fYWxwaGE9bn1mdW5jdGlvbiBZbih0LG4pe3RoaXMuX2NvbnRleHQ9dCx0aGlzLl9hbHBoYT1ufWZ1bmN0aW9uIEJuKHQpe3RoaXMuX2NvbnRleHQ9dH1mdW5jdGlvbiBqbih0KXtyZXR1cm4gbmV3IEJuKHQpfWZ1bmN0aW9uIEhuKHQpe3JldHVybiB0PDA/LTE6MX1mdW5jdGlvbiBYbih0LG4sZSl7dmFyIHI9dC5feDEtdC5feDAsaT1uLXQuX3gxLG89KHQuX3kxLXQuX3kwKS8ocnx8aTwwJiYtMCksdT0oZS10Ll95MSkvKGl8fHI8MCYmLTApLGE9KG8qaSt1KnIpLyhyK2kpO3JldHVybihIbihvKStIbih1KSkqTWF0aC5taW4oTWF0aC5hYnMobyksTWF0aC5hYnModSksLjUqTWF0aC5hYnMoYSkpfHwwfWZ1bmN0aW9uIFZuKHQsbil7dmFyIGU9dC5feDEtdC5feDA7cmV0dXJuIGU/KDMqKHQuX3kxLXQuX3kwKS9lLW4pLzI6bn1mdW5jdGlvbiBXbih0LG4sZSl7dmFyIHI9dC5feDAsaT10Ll95MCxvPXQuX3gxLHU9dC5feTEsYT0oby1yKS8zO3QuX2NvbnRleHQuYmV6aWVyQ3VydmVUbyhyK2EsaSthKm4sby1hLHUtYSplLG8sdSl9ZnVuY3Rpb24gJG4odCl7dGhpcy5fY29udGV4dD10fWZ1bmN0aW9uIFpuKHQpe3RoaXMuX2NvbnRleHQ9bmV3IEduKHQpfWZ1bmN0aW9uIEduKHQpe3RoaXMuX2NvbnRleHQ9dH1mdW5jdGlvbiBKbih0KXtyZXR1cm4gbmV3ICRuKHQpfWZ1bmN0aW9uIFFuKHQpe3JldHVybiBuZXcgWm4odCl9ZnVuY3Rpb24gS24odCl7dGhpcy5fY29udGV4dD10fWZ1bmN0aW9uIHRlKHQpe3ZhciBuLGUscj10Lmxlbmd0aC0xLGk9bmV3IEFycmF5KHIpLG89bmV3IEFycmF5KHIpLHU9bmV3IEFycmF5KHIpO2ZvcihpWzBdPTAsb1swXT0yLHVbMF09dFswXSsyKnRbMV0sbj0xO248ci0xOysrbilpW25dPTEsb1tuXT00LHVbbl09NCp0W25dKzIqdFtuKzFdO2ZvcihpW3ItMV09MixvW3ItMV09Nyx1W3ItMV09OCp0W3ItMV0rdFtyXSxuPTE7bjxyOysrbillPWlbbl0vb1tuLTFdLG9bbl0tPWUsdVtuXS09ZSp1W24tMV07Zm9yKGlbci0xXT11W3ItMV0vb1tyLTFdLG49ci0yO24+PTA7LS1uKWlbbl09KHVbbl0taVtuKzFdKS9vW25dO2ZvcihvW3ItMV09KHRbcl0raVtyLTFdKS8yLG49MDtuPHItMTsrK24pb1tuXT0yKnRbbisxXS1pW24rMV07cmV0dXJuW2ksb119ZnVuY3Rpb24gbmUodCl7cmV0dXJuIG5ldyBLbih0KX1mdW5jdGlvbiBlZSh0LG4pe3RoaXMuX2NvbnRleHQ9dCx0aGlzLl90PW59ZnVuY3Rpb24gcmUodCl7cmV0dXJuIG5ldyBlZSh0LC41KX1mdW5jdGlvbiBpZSh0KXtyZXR1cm4gbmV3IGVlKHQsMCl9ZnVuY3Rpb24gb2UodCl7cmV0dXJuIG5ldyBlZSh0LDEpfWZ1bmN0aW9uIHVlKHQsbil7aWYoKHI9dC5sZW5ndGgpPjEpZm9yKHZhciBlLHIsaT0xLG89dFtuWzBdXSx1PW8ubGVuZ3RoO2k8cjsrK2kpe2U9byxvPXRbbltpXV07Zm9yKHZhciBhPTA7YTx1OysrYSlvW2FdWzFdKz1vW2FdWzBdPWlzTmFOKGVbYV1bMV0pP2VbYV1bMF06ZVthXVsxXX19ZnVuY3Rpb24gYWUodCl7Zm9yKHZhciBuPXQubGVuZ3RoLGU9bmV3IEFycmF5KG4pOy0tbj49MDspZVtuXT1uO3JldHVybiBlfWZ1bmN0aW9uIGNlKHQsbil7cmV0dXJuIHRbbl19ZnVuY3Rpb24gc2UoKXtmdW5jdGlvbiB0KHQpe3ZhciBvLHUsYT1uLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxjPXQubGVuZ3RoLHM9YS5sZW5ndGgsZj1uZXcgQXJyYXkocyk7Zm9yKG89MDtvPHM7KytvKXtmb3IodmFyIGwsaD1hW29dLHA9ZltvXT1uZXcgQXJyYXkoYyksZD0wO2Q8YzsrK2QpcFtkXT1sPVswLCtpKHRbZF0saCxkLHQpXSxsLmRhdGE9dFtkXTtwLmtleT1ofWZvcihvPTAsdT1lKGYpO288czsrK28pZlt1W29dXS5pbmRleD1vO3JldHVybiByKGYsdSksZn12YXIgbj1LdChbXSksZT1hZSxyPXVlLGk9Y2U7cmV0dXJuIHQua2V5cz1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0iZnVuY3Rpb24iPT10eXBlb2YgZT9lOkt0KEd2LmNhbGwoZSkpLHQpOm59LHQudmFsdWU9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9ImZ1bmN0aW9uIj09dHlwZW9mIG4/bjpLdCgrbiksdCk6aX0sdC5vcmRlcj1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT1udWxsPT1uP2FlOiJmdW5jdGlvbiI9PXR5cGVvZiBuP246S3QoR3YuY2FsbChuKSksdCk6ZX0sdC5vZmZzZXQ9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9bnVsbD09bj91ZTpuLHQpOnJ9LHR9ZnVuY3Rpb24gZmUodCxuKXtpZigocj10Lmxlbmd0aCk+MCl7Zm9yKHZhciBlLHIsaSxvPTAsdT10WzBdLmxlbmd0aDtvPHU7KytvKXtmb3IoaT1lPTA7ZTxyOysrZSlpKz10W2VdW29dWzFdfHwwO2lmKGkpZm9yKGU9MDtlPHI7KytlKXRbZV1bb11bMV0vPWl9dWUodCxuKX19ZnVuY3Rpb24gbGUodCxuKXtpZigoZT10Lmxlbmd0aCk+MCl7Zm9yKHZhciBlLHI9MCxpPXRbblswXV0sbz1pLmxlbmd0aDtyPG87KytyKXtmb3IodmFyIHU9MCxhPTA7dTxlOysrdSlhKz10W3VdW3JdWzFdfHwwO2lbcl1bMV0rPWlbcl1bMF09LWEvMn11ZSh0LG4pfX1mdW5jdGlvbiBoZSh0LG4pe2lmKChpPXQubGVuZ3RoKT4wJiYocj0oZT10W25bMF1dKS5sZW5ndGgpPjApe2Zvcih2YXIgZSxyLGksbz0wLHU9MTt1PHI7Kyt1KXtmb3IodmFyIGE9MCxjPTAscz0wO2E8aTsrK2Epe2Zvcih2YXIgZj10W25bYV1dLGw9Zlt1XVsxXXx8MCxoPWZbdS0xXVsxXXx8MCxwPShsLWgpLzIsZD0wO2Q8YTsrK2Qpe3ZhciB2PXRbbltkXV0sXz12W3VdWzFdfHwwLHk9dlt1LTFdWzFdfHwwO3ArPV8teX1jKz1sLHMrPXAqbH1lW3UtMV1bMV0rPWVbdS0xXVswXT1vLGMmJihvLT1zL2MpfWVbdS0xXVsxXSs9ZVt1LTFdWzBdPW8sdWUodCxuKX19ZnVuY3Rpb24gcGUodCl7dmFyIG49dC5tYXAoZGUpO3JldHVybiBhZSh0KS5zb3J0KGZ1bmN0aW9uKHQsZSl7cmV0dXJuIG5bdF0tbltlXX0pfWZ1bmN0aW9uIGRlKHQpe2Zvcih2YXIgbixlPTAscj0tMSxpPXQubGVuZ3RoOysrcjxpOykobj0rdFtyXVsxXSkmJihlKz1uKTtyZXR1cm4gZX1mdW5jdGlvbiB2ZSh0KXtyZXR1cm4gcGUodCkucmV2ZXJzZSgpfWZ1bmN0aW9uIF9lKHQpe3ZhciBuLGUscj10Lmxlbmd0aCxpPXQubWFwKGRlKSxvPWFlKHQpLnNvcnQoZnVuY3Rpb24odCxuKXtyZXR1cm4gaVtuXS1pW3RdfSksdT0wLGE9MCxjPVtdLHM9W107Zm9yKG49MDtuPHI7KytuKWU9b1tuXSx1PGE/KHUrPWlbZV0sYy5wdXNoKGUpKTooYSs9aVtlXSxzLnB1c2goZSkpO3JldHVybiBzLnJldmVyc2UoKS5jb25jYXQoYyl9ZnVuY3Rpb24geWUodCl7cmV0dXJuIGFlKHQpLnJldmVyc2UoKX1mdW5jdGlvbiBnZSh0LG4sZSl7dC5wcm90b3R5cGU9bi5wcm90b3R5cGU9ZSxlLmNvbnN0cnVjdG9yPXR9ZnVuY3Rpb24gbWUodCxuKXt2YXIgZT1PYmplY3QuY3JlYXRlKHQucHJvdG90eXBlKTtmb3IodmFyIHIgaW4gbillW3JdPW5bcl07cmV0dXJuIGV9ZnVuY3Rpb24geGUoKXt9ZnVuY3Rpb24gYmUodCl7dmFyIG47cmV0dXJuIHQ9KHQrIiIpLnRyaW0oKS50b0xvd2VyQ2FzZSgpLChuPUt2LmV4ZWModCkpPyhuPXBhcnNlSW50KG5bMV0sMTYpLG5ldyBTZShuPj44JjE1fG4+PjQmMjQwLG4+PjQmMTV8MjQwJm4sKDE1Jm4pPDw0fDE1Jm4sMSkpOihuPXRfLmV4ZWModCkpP3dlKHBhcnNlSW50KG5bMV0sMTYpKToobj1uXy5leGVjKHQpKT9uZXcgU2UoblsxXSxuWzJdLG5bM10sMSk6KG49ZV8uZXhlYyh0KSk/bmV3IFNlKDI1NSpuWzFdLzEwMCwyNTUqblsyXS8xMDAsMjU1Km5bM10vMTAwLDEpOihuPXJfLmV4ZWModCkpP01lKG5bMV0sblsyXSxuWzNdLG5bNF0pOihuPWlfLmV4ZWModCkpP01lKDI1NSpuWzFdLzEwMCwyNTUqblsyXS8xMDAsMjU1Km5bM10vMTAwLG5bNF0pOihuPW9fLmV4ZWModCkpP05lKG5bMV0sblsyXS8xMDAsblszXS8xMDAsMSk6KG49dV8uZXhlYyh0KSk/TmUoblsxXSxuWzJdLzEwMCxuWzNdLzEwMCxuWzRdKTphXy5oYXNPd25Qcm9wZXJ0eSh0KT93ZShhX1t0XSk6InRyYW5zcGFyZW50Ij09PXQ/bmV3IFNlKE5hTixOYU4sTmFOLDApOm51bGx9ZnVuY3Rpb24gd2UodCl7cmV0dXJuIG5ldyBTZSh0Pj4xNiYyNTUsdD4+OCYyNTUsMjU1JnQsMSl9ZnVuY3Rpb24gTWUodCxuLGUscil7cmV0dXJuIHI8PTAmJih0PW49ZT1OYU4pLG5ldyBTZSh0LG4sZSxyKX1mdW5jdGlvbiBUZSh0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIHhlfHwodD1iZSh0KSksdD8odD10LnJnYigpLG5ldyBTZSh0LnIsdC5nLHQuYix0Lm9wYWNpdHkpKTpuZXcgU2V9ZnVuY3Rpb24ga2UodCxuLGUscil7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP1RlKHQpOm5ldyBTZSh0LG4sZSxudWxsPT1yPzE6cil9ZnVuY3Rpb24gU2UodCxuLGUscil7dGhpcy5yPSt0LHRoaXMuZz0rbix0aGlzLmI9K2UsdGhpcy5vcGFjaXR5PStyfWZ1bmN0aW9uIE5lKHQsbixlLHIpe3JldHVybiByPD0wP3Q9bj1lPU5hTjplPD0wfHxlPj0xP3Q9bj1OYU46bjw9MCYmKHQ9TmFOKSxuZXcgQ2UodCxuLGUscil9ZnVuY3Rpb24gQWUodCl7aWYodCBpbnN0YW5jZW9mIENlKXJldHVybiBuZXcgQ2UodC5oLHQucyx0LmwsdC5vcGFjaXR5KTtpZih0IGluc3RhbmNlb2YgeGV8fCh0PWJlKHQpKSwhdClyZXR1cm4gbmV3IENlO2lmKHQgaW5zdGFuY2VvZiBDZSlyZXR1cm4gdDt0PXQucmdiKCk7dmFyIG49dC5yLzI1NSxlPXQuZy8yNTUscj10LmIvMjU1LGk9TWF0aC5taW4obixlLHIpLG89TWF0aC5tYXgobixlLHIpLHU9TmFOLGE9by1pLGM9KG8raSkvMjtyZXR1cm4gYT8odT1uPT09bz8oZS1yKS9hKzYqKGU8cik6ZT09PW8/KHItbikvYSsyOihuLWUpL2ErNCxhLz1jPC41P28raToyLW8taSx1Kj02MCk6YT1jPjAmJmM8MT8wOnUsbmV3IENlKHUsYSxjLHQub3BhY2l0eSl9ZnVuY3Rpb24gRWUodCxuLGUscil7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP0FlKHQpOm5ldyBDZSh0LG4sZSxudWxsPT1yPzE6cil9ZnVuY3Rpb24gQ2UodCxuLGUscil7dGhpcy5oPSt0LHRoaXMucz0rbix0aGlzLmw9K2UsdGhpcy5vcGFjaXR5PStyfWZ1bmN0aW9uIHplKHQsbixlKXtyZXR1cm4gMjU1Kih0PDYwP24rKGUtbikqdC82MDp0PDE4MD9lOnQ8MjQwP24rKGUtbikqKDI0MC10KS82MDpuKX1mdW5jdGlvbiBQZSh0KXtpZih0IGluc3RhbmNlb2YgTGUpcmV0dXJuIG5ldyBMZSh0LmwsdC5hLHQuYix0Lm9wYWNpdHkpO2lmKHQgaW5zdGFuY2VvZiBZZSl7dmFyIG49dC5oKmNfO3JldHVybiBuZXcgTGUodC5sLE1hdGguY29zKG4pKnQuYyxNYXRoLnNpbihuKSp0LmMsdC5vcGFjaXR5KX10IGluc3RhbmNlb2YgU2V8fCh0PVRlKHQpKTt2YXIgZT1PZSh0LnIpLHI9T2UodC5nKSxpPU9lKHQuYiksbz1SZSgoLjQxMjQ1NjQqZSsuMzU3NTc2MSpyKy4xODA0Mzc1KmkpL2xfKSx1PVJlKCguMjEyNjcyOSplKy43MTUxNTIyKnIrLjA3MjE3NSppKS9oXyksYT1SZSgoLjAxOTMzMzkqZSsuMTE5MTkyKnIrLjk1MDMwNDEqaSkvcF8pO3JldHVybiBuZXcgTGUoMTE2KnUtMTYsNTAwKihvLXUpLDIwMCoodS1hKSx0Lm9wYWNpdHkpfWZ1bmN0aW9uIHFlKHQsbixlLHIpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9QZSh0KTpuZXcgTGUodCxuLGUsbnVsbD09cj8xOnIpfWZ1bmN0aW9uIExlKHQsbixlLHIpe3RoaXMubD0rdCx0aGlzLmE9K24sdGhpcy5iPStlLHRoaXMub3BhY2l0eT0rcn1mdW5jdGlvbiBSZSh0KXtyZXR1cm4gdD55Xz9NYXRoLnBvdyh0LDEvMyk6dC9fXytkX31mdW5jdGlvbiBVZSh0KXtyZXR1cm4gdD52Xz90KnQqdDpfXyoodC1kXyl9ZnVuY3Rpb24gRGUodCl7cmV0dXJuIDI1NSoodDw9LjAwMzEzMDg/MTIuOTIqdDoxLjA1NSpNYXRoLnBvdyh0LDEvMi40KS0uMDU1KX1mdW5jdGlvbiBPZSh0KXtyZXR1cm4odC89MjU1KTw9LjA0MDQ1P3QvMTIuOTI6TWF0aC5wb3coKHQrLjA1NSkvMS4wNTUsMi40KX1mdW5jdGlvbiBGZSh0KXtpZih0IGluc3RhbmNlb2YgWWUpcmV0dXJuIG5ldyBZZSh0LmgsdC5jLHQubCx0Lm9wYWNpdHkpO3QgaW5zdGFuY2VvZiBMZXx8KHQ9UGUodCkpO3ZhciBuPU1hdGguYXRhbjIodC5iLHQuYSkqc187cmV0dXJuIG5ldyBZZShuPDA/biszNjA6bixNYXRoLnNxcnQodC5hKnQuYSt0LmIqdC5iKSx0LmwsdC5vcGFjaXR5KX1mdW5jdGlvbiBJZSh0LG4sZSxyKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/RmUodCk6bmV3IFllKHQsbixlLG51bGw9PXI/MTpyKX1mdW5jdGlvbiBZZSh0LG4sZSxyKXt0aGlzLmg9K3QsdGhpcy5jPStuLHRoaXMubD0rZSx0aGlzLm9wYWNpdHk9K3J9ZnVuY3Rpb24gQmUodCl7aWYodCBpbnN0YW5jZW9mIEhlKXJldHVybiBuZXcgSGUodC5oLHQucyx0LmwsdC5vcGFjaXR5KTt0IGluc3RhbmNlb2YgU2V8fCh0PVRlKHQpKTt2YXIgbj10LnIvMjU1LGU9dC5nLzI1NSxyPXQuYi8yNTUsaT0oa18qcitNXypuLVRfKmUpLyhrXytNXy1UXyksbz1yLWksdT0od18qKGUtaSkteF8qbykvYl8sYT1NYXRoLnNxcnQodSp1K28qbykvKHdfKmkqKDEtaSkpLGM9YT9NYXRoLmF0YW4yKHUsbykqc18tMTIwOk5hTjtyZXR1cm4gbmV3IEhlKGM8MD9jKzM2MDpjLGEsaSx0Lm9wYWNpdHkpfWZ1bmN0aW9uIGplKHQsbixlLHIpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9CZSh0KTpuZXcgSGUodCxuLGUsbnVsbD09cj8xOnIpfWZ1bmN0aW9uIEhlKHQsbixlLHIpe3RoaXMuaD0rdCx0aGlzLnM9K24sdGhpcy5sPStlLHRoaXMub3BhY2l0eT0rcn1mdW5jdGlvbiBYZSh0LG4sZSxyLGkpe3ZhciBvPXQqdCx1PW8qdDtyZXR1cm4oKDEtMyp0KzMqby11KSpuKyg0LTYqbyszKnUpKmUrKDErMyp0KzMqby0zKnUpKnIrdSppKS82fWZ1bmN0aW9uIFZlKHQpe3ZhciBuPXQubGVuZ3RoLTE7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciByPWU8PTA/ZT0wOmU+PTE/KGU9MSxuLTEpOk1hdGguZmxvb3IoZSpuKSxpPXRbcl0sbz10W3IrMV0sdT1yPjA/dFtyLTFdOjIqaS1vLGE9cjxuLTE/dFtyKzJdOjIqby1pO3JldHVybiBYZSgoZS1yL24pKm4sdSxpLG8sYSl9fWZ1bmN0aW9uIFdlKHQpe3ZhciBuPXQubGVuZ3RoO3JldHVybiBmdW5jdGlvbihlKXt2YXIgcj1NYXRoLmZsb29yKCgoZSU9MSk8MD8rK2U6ZSkqbiksaT10WyhyK24tMSklbl0sbz10W3Ilbl0sdT10WyhyKzEpJW5dLGE9dFsocisyKSVuXTtyZXR1cm4gWGUoKGUtci9uKSpuLGksbyx1LGEpfX1mdW5jdGlvbiAkZSh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19ZnVuY3Rpb24gWmUodCxuKXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIHQrZSpufX1mdW5jdGlvbiBHZSh0LG4sZSl7cmV0dXJuIHQ9TWF0aC5wb3codCxlKSxuPU1hdGgucG93KG4sZSktdCxlPTEvZSxmdW5jdGlvbihyKXtyZXR1cm4gTWF0aC5wb3codCtyKm4sZSl9fWZ1bmN0aW9uIEplKHQsbil7dmFyIGU9bi10O3JldHVybiBlP1plKHQsZT4xODB8fGU8LTE4MD9lLTM2MCpNYXRoLnJvdW5kKGUvMzYwKTplKTokZShpc05hTih0KT9uOnQpfWZ1bmN0aW9uIFFlKHQpe3JldHVybiAxPT09KHQ9K3QpP0tlOmZ1bmN0aW9uKG4sZSl7cmV0dXJuIGUtbj9HZShuLGUsdCk6JGUoaXNOYU4obik/ZTpuKX19ZnVuY3Rpb24gS2UodCxuKXt2YXIgZT1uLXQ7cmV0dXJuIGU/WmUodCxlKTokZShpc05hTih0KT9uOnQpfWZ1bmN0aW9uIHRyKHQpe3JldHVybiBmdW5jdGlvbihuKXt2YXIgZSxyLGk9bi5sZW5ndGgsbz1uZXcgQXJyYXkoaSksdT1uZXcgQXJyYXkoaSksYT1uZXcgQXJyYXkoaSk7Zm9yKGU9MDtlPGk7KytlKXI9a2UobltlXSksb1tlXT1yLnJ8fDAsdVtlXT1yLmd8fDAsYVtlXT1yLmJ8fDA7cmV0dXJuIG89dChvKSx1PXQodSksYT10KGEpLHIub3BhY2l0eT0xLGZ1bmN0aW9uKHQpe3JldHVybiByLnI9byh0KSxyLmc9dSh0KSxyLmI9YSh0KSxyKyIifX19ZnVuY3Rpb24gbnIodCxuKXt2YXIgZSxyPW4/bi5sZW5ndGg6MCxpPXQ/TWF0aC5taW4ocix0Lmxlbmd0aCk6MCxvPW5ldyBBcnJheShyKSx1PW5ldyBBcnJheShyKTtmb3IoZT0wO2U8aTsrK2Upb1tlXT1jcih0W2VdLG5bZV0pOwpmb3IoO2U8cjsrK2UpdVtlXT1uW2VdO3JldHVybiBmdW5jdGlvbih0KXtmb3IoZT0wO2U8aTsrK2UpdVtlXT1vW2VdKHQpO3JldHVybiB1fX1mdW5jdGlvbiBlcih0LG4pe3ZhciBlPW5ldyBEYXRlO3JldHVybiB0PSt0LG4tPXQsZnVuY3Rpb24ocil7cmV0dXJuIGUuc2V0VGltZSh0K24qciksZX19ZnVuY3Rpb24gcnIodCxuKXtyZXR1cm4gdD0rdCxuLT10LGZ1bmN0aW9uKGUpe3JldHVybiB0K24qZX19ZnVuY3Rpb24gaXIodCxuKXt2YXIgZSxyPXt9LGk9e307bnVsbCE9PXQmJiJvYmplY3QiPT10eXBlb2YgdHx8KHQ9e30pLG51bGwhPT1uJiYib2JqZWN0Ij09dHlwZW9mIG58fChuPXt9KTtmb3IoZSBpbiBuKWUgaW4gdD9yW2VdPWNyKHRbZV0sbltlXSk6aVtlXT1uW2VdO3JldHVybiBmdW5jdGlvbih0KXtmb3IoZSBpbiByKWlbZV09cltlXSh0KTtyZXR1cm4gaX19ZnVuY3Rpb24gb3IodCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fWZ1bmN0aW9uIHVyKHQpe3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gdChuKSsiIn19ZnVuY3Rpb24gYXIodCxuKXt2YXIgZSxyLGksbz1xXy5sYXN0SW5kZXg9TF8ubGFzdEluZGV4PTAsdT0tMSxhPVtdLGM9W107Zm9yKHQrPSIiLG4rPSIiOyhlPXFfLmV4ZWModCkpJiYocj1MXy5leGVjKG4pKTspKGk9ci5pbmRleCk+byYmKGk9bi5zbGljZShvLGkpLGFbdV0/YVt1XSs9aTphWysrdV09aSksKGU9ZVswXSk9PT0ocj1yWzBdKT9hW3VdP2FbdV0rPXI6YVsrK3VdPXI6KGFbKyt1XT1udWxsLGMucHVzaCh7aTp1LHg6cnIoZSxyKX0pKSxvPUxfLmxhc3RJbmRleDtyZXR1cm4gbzxuLmxlbmd0aCYmKGk9bi5zbGljZShvKSxhW3VdP2FbdV0rPWk6YVsrK3VdPWkpLGEubGVuZ3RoPDI/Y1swXT91cihjWzBdLngpOm9yKG4pOihuPWMubGVuZ3RoLGZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxyPTA7cjxuOysrcilhWyhlPWNbcl0pLmldPWUueCh0KTtyZXR1cm4gYS5qb2luKCIiKX0pfWZ1bmN0aW9uIGNyKHQsbil7dmFyIGUscj10eXBlb2YgbjtyZXR1cm4gbnVsbD09bnx8ImJvb2xlYW4iPT09cj8kZShuKTooIm51bWJlciI9PT1yP3JyOiJzdHJpbmciPT09cj8oZT1iZShuKSk/KG49ZSxDXyk6YXI6biBpbnN0YW5jZW9mIGJlP0NfOm4gaW5zdGFuY2VvZiBEYXRlP2VyOkFycmF5LmlzQXJyYXkobik/bnI6aXNOYU4obik/aXI6cnIpKHQsbil9ZnVuY3Rpb24gc3IodCxuKXtyZXR1cm4gdD0rdCxuLT10LGZ1bmN0aW9uKGUpe3JldHVybiBNYXRoLnJvdW5kKHQrbiplKX19ZnVuY3Rpb24gZnIodCxuLGUscixpLG8pe3ZhciB1LGEsYztyZXR1cm4odT1NYXRoLnNxcnQodCp0K24qbikpJiYodC89dSxuLz11KSwoYz10KmUrbipyKSYmKGUtPXQqYyxyLT1uKmMpLChhPU1hdGguc3FydChlKmUrcipyKSkmJihlLz1hLHIvPWEsYy89YSksdCpyPG4qZSYmKHQ9LXQsbj0tbixjPS1jLHU9LXUpLHt0cmFuc2xhdGVYOmksdHJhbnNsYXRlWTpvLHJvdGF0ZTpNYXRoLmF0YW4yKG4sdCkqUl8sc2tld1g6TWF0aC5hdGFuKGMpKlJfLHNjYWxlWDp1LHNjYWxlWTphfX1mdW5jdGlvbiBscih0KXtyZXR1cm4ibm9uZSI9PT10P1VfOihTX3x8KFNfPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIkRJViIpLE5fPWRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxBXz1kb2N1bWVudC5kZWZhdWx0VmlldyksU18uc3R5bGUudHJhbnNmb3JtPXQsdD1BXy5nZXRDb21wdXRlZFN0eWxlKE5fLmFwcGVuZENoaWxkKFNfKSxudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCJ0cmFuc2Zvcm0iKSxOXy5yZW1vdmVDaGlsZChTXyksdD10LnNsaWNlKDcsLTEpLnNwbGl0KCIsIiksZnIoK3RbMF0sK3RbMV0sK3RbMl0sK3RbM10sK3RbNF0sK3RbNV0pKX1mdW5jdGlvbiBocih0KXtyZXR1cm4gbnVsbD09dD9VXzooRV98fChFXz1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwiZyIpKSxFXy5zZXRBdHRyaWJ1dGUoInRyYW5zZm9ybSIsdCksKHQ9RV8udHJhbnNmb3JtLmJhc2VWYWwuY29uc29saWRhdGUoKSk/KHQ9dC5tYXRyaXgsZnIodC5hLHQuYix0LmMsdC5kLHQuZSx0LmYpKTpVXyl9ZnVuY3Rpb24gcHIodCxuLGUscil7ZnVuY3Rpb24gaSh0KXtyZXR1cm4gdC5sZW5ndGg/dC5wb3AoKSsiICI6IiJ9ZnVuY3Rpb24gbyh0LHIsaSxvLHUsYSl7aWYodCE9PWl8fHIhPT1vKXt2YXIgYz11LnB1c2goInRyYW5zbGF0ZSgiLG51bGwsbixudWxsLGUpO2EucHVzaCh7aTpjLTQseDpycih0LGkpfSx7aTpjLTIseDpycihyLG8pfSl9ZWxzZShpfHxvKSYmdS5wdXNoKCJ0cmFuc2xhdGUoIitpK24rbytlKX1mdW5jdGlvbiB1KHQsbixlLG8pe3QhPT1uPyh0LW4+MTgwP24rPTM2MDpuLXQ+MTgwJiYodCs9MzYwKSxvLnB1c2goe2k6ZS5wdXNoKGkoZSkrInJvdGF0ZSgiLG51bGwsciktMix4OnJyKHQsbil9KSk6biYmZS5wdXNoKGkoZSkrInJvdGF0ZSgiK24rcil9ZnVuY3Rpb24gYSh0LG4sZSxvKXt0IT09bj9vLnB1c2goe2k6ZS5wdXNoKGkoZSkrInNrZXdYKCIsbnVsbCxyKS0yLHg6cnIodCxuKX0pOm4mJmUucHVzaChpKGUpKyJza2V3WCgiK24rcil9ZnVuY3Rpb24gYyh0LG4sZSxyLG8sdSl7aWYodCE9PWV8fG4hPT1yKXt2YXIgYT1vLnB1c2goaShvKSsic2NhbGUoIixudWxsLCIsIixudWxsLCIpIik7dS5wdXNoKHtpOmEtNCx4OnJyKHQsZSl9LHtpOmEtMix4OnJyKG4scil9KX1lbHNlIDE9PT1lJiYxPT09cnx8by5wdXNoKGkobykrInNjYWxlKCIrZSsiLCIrcisiKSIpfXJldHVybiBmdW5jdGlvbihuLGUpe3ZhciByPVtdLGk9W107cmV0dXJuIG49dChuKSxlPXQoZSksbyhuLnRyYW5zbGF0ZVgsbi50cmFuc2xhdGVZLGUudHJhbnNsYXRlWCxlLnRyYW5zbGF0ZVkscixpKSx1KG4ucm90YXRlLGUucm90YXRlLHIsaSksYShuLnNrZXdYLGUuc2tld1gscixpKSxjKG4uc2NhbGVYLG4uc2NhbGVZLGUuc2NhbGVYLGUuc2NhbGVZLHIsaSksbj1lPW51bGwsZnVuY3Rpb24odCl7Zm9yKHZhciBuLGU9LTEsbz1pLmxlbmd0aDsrK2U8bzspclsobj1pW2VdKS5pXT1uLngodCk7cmV0dXJuIHIuam9pbigiIil9fX1mdW5jdGlvbiBkcih0KXtyZXR1cm4oKHQ9TWF0aC5leHAodCkpKzEvdCkvMn1mdW5jdGlvbiB2cih0KXtyZXR1cm4oKHQ9TWF0aC5leHAodCkpLTEvdCkvMn1mdW5jdGlvbiBfcih0KXtyZXR1cm4oKHQ9TWF0aC5leHAoMip0KSktMSkvKHQrMSl9ZnVuY3Rpb24geXIodCxuKXt2YXIgZSxyLGk9dFswXSxvPXRbMV0sdT10WzJdLGE9blswXSxjPW5bMV0scz1uWzJdLGY9YS1pLGw9Yy1vLGg9ZipmK2wqbDtpZihoPEJfKXI9TWF0aC5sb2cocy91KS9GXyxlPWZ1bmN0aW9uKHQpe3JldHVybltpK3QqZixvK3QqbCx1Kk1hdGguZXhwKEZfKnQqcildfTtlbHNle3ZhciBwPU1hdGguc3FydChoKSxkPShzKnMtdSp1K1lfKmgpLygyKnUqSV8qcCksdj0ocypzLXUqdS1ZXypoKS8oMipzKklfKnApLF89TWF0aC5sb2coTWF0aC5zcXJ0KGQqZCsxKS1kKSx5PU1hdGgubG9nKE1hdGguc3FydCh2KnYrMSktdik7cj0oeS1fKS9GXyxlPWZ1bmN0aW9uKHQpe3ZhciBuPXQqcixlPWRyKF8pLGE9dS8oSV8qcCkqKGUqX3IoRl8qbitfKS12cihfKSk7cmV0dXJuW2krYSpmLG8rYSpsLHUqZS9kcihGXypuK18pXX19cmV0dXJuIGUuZHVyYXRpb249MWUzKnIsZX1mdW5jdGlvbiBncih0KXtyZXR1cm4gZnVuY3Rpb24obixlKXt2YXIgcj10KChuPUVlKG4pKS5oLChlPUVlKGUpKS5oKSxpPUtlKG4ucyxlLnMpLG89S2Uobi5sLGUubCksdT1LZShuLm9wYWNpdHksZS5vcGFjaXR5KTtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIG4uaD1yKHQpLG4ucz1pKHQpLG4ubD1vKHQpLG4ub3BhY2l0eT11KHQpLG4rIiJ9fX1mdW5jdGlvbiBtcih0LG4pe3ZhciBlPUtlKCh0PXFlKHQpKS5sLChuPXFlKG4pKS5sKSxyPUtlKHQuYSxuLmEpLGk9S2UodC5iLG4uYiksbz1LZSh0Lm9wYWNpdHksbi5vcGFjaXR5KTtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIHQubD1lKG4pLHQuYT1yKG4pLHQuYj1pKG4pLHQub3BhY2l0eT1vKG4pLHQrIiJ9fWZ1bmN0aW9uIHhyKHQpe3JldHVybiBmdW5jdGlvbihuLGUpe3ZhciByPXQoKG49SWUobikpLmgsKGU9SWUoZSkpLmgpLGk9S2Uobi5jLGUuYyksbz1LZShuLmwsZS5sKSx1PUtlKG4ub3BhY2l0eSxlLm9wYWNpdHkpO3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gbi5oPXIodCksbi5jPWkodCksbi5sPW8odCksbi5vcGFjaXR5PXUodCksbisiIn19fWZ1bmN0aW9uIGJyKHQpe3JldHVybiBmdW5jdGlvbiBuKGUpe2Z1bmN0aW9uIHIobixyKXt2YXIgaT10KChuPWplKG4pKS5oLChyPWplKHIpKS5oKSxvPUtlKG4ucyxyLnMpLHU9S2Uobi5sLHIubCksYT1LZShuLm9wYWNpdHksci5vcGFjaXR5KTtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIG4uaD1pKHQpLG4ucz1vKHQpLG4ubD11KE1hdGgucG93KHQsZSkpLG4ub3BhY2l0eT1hKHQpLG4rIiJ9fXJldHVybiBlPStlLHIuZ2FtbWE9bixyfSgxKX1mdW5jdGlvbiB3cih0LG4pe2Zvcih2YXIgZT1uZXcgQXJyYXkobikscj0wO3I8bjsrK3IpZVtyXT10KHIvKG4tMSkpO3JldHVybiBlfWZ1bmN0aW9uIE1yKCl7Zm9yKHZhciB0LG49MCxlPWFyZ3VtZW50cy5sZW5ndGgscj17fTtuPGU7KytuKXtpZighKHQ9YXJndW1lbnRzW25dKyIiKXx8dCBpbiByKXRocm93IG5ldyBFcnJvcigiaWxsZWdhbCB0eXBlOiAiK3QpO3JbdF09W119cmV0dXJuIG5ldyBUcihyKX1mdW5jdGlvbiBUcih0KXt0aGlzLl89dH1mdW5jdGlvbiBrcih0LG4pe3JldHVybiB0LnRyaW0oKS5zcGxpdCgvXnxccysvKS5tYXAoZnVuY3Rpb24odCl7dmFyIGU9IiIscj10LmluZGV4T2YoIi4iKTtpZihyPj0wJiYoZT10LnNsaWNlKHIrMSksdD10LnNsaWNlKDAscikpLHQmJiFuLmhhc093blByb3BlcnR5KHQpKXRocm93IG5ldyBFcnJvcigidW5rbm93biB0eXBlOiAiK3QpO3JldHVybnt0eXBlOnQsbmFtZTplfX0pfWZ1bmN0aW9uIFNyKHQsbil7Zm9yKHZhciBlLHI9MCxpPXQubGVuZ3RoO3I8aTsrK3IpaWYoKGU9dFtyXSkubmFtZT09PW4pcmV0dXJuIGUudmFsdWV9ZnVuY3Rpb24gTnIodCxuLGUpe2Zvcih2YXIgcj0wLGk9dC5sZW5ndGg7cjxpOysrcilpZih0W3JdLm5hbWU9PT1uKXt0W3JdPVpfLHQ9dC5zbGljZSgwLHIpLmNvbmNhdCh0LnNsaWNlKHIrMSkpO2JyZWFrfXJldHVybiBudWxsIT1lJiZ0LnB1c2goe25hbWU6bix2YWx1ZTplfSksdH1mdW5jdGlvbiBBcih0KXtyZXR1cm4gbmV3IEZ1bmN0aW9uKCJkIiwicmV0dXJuIHsiK3QubWFwKGZ1bmN0aW9uKHQsbil7cmV0dXJuIEpTT04uc3RyaW5naWZ5KHQpKyI6IGRbIituKyJdIn0pLmpvaW4oIiwiKSsifSIpfWZ1bmN0aW9uIEVyKHQsbil7dmFyIGU9QXIodCk7cmV0dXJuIGZ1bmN0aW9uKHIsaSl7cmV0dXJuIG4oZShyKSxpLHQpfX1mdW5jdGlvbiBDcih0KXt2YXIgbj1PYmplY3QuY3JlYXRlKG51bGwpLGU9W107cmV0dXJuIHQuZm9yRWFjaChmdW5jdGlvbih0KXtmb3IodmFyIHIgaW4gdClyIGluIG58fGUucHVzaChuW3JdPXIpfSksZX1mdW5jdGlvbiB6cih0KXtmdW5jdGlvbiBuKHQsbil7dmFyIHIsaSxvPWUodCxmdW5jdGlvbih0LGUpe3JldHVybiByP3IodCxlLTEpOihpPXQsdm9pZChyPW4/RXIodCxuKTpBcih0KSkpfSk7cmV0dXJuIG8uY29sdW1ucz1pLG99ZnVuY3Rpb24gZSh0LG4pe2Z1bmN0aW9uIGUoKXtpZihmPj1zKXJldHVybiB1O2lmKGkpcmV0dXJuIGk9ITEsbzt2YXIgbixlPWY7aWYoMzQ9PT10LmNoYXJDb2RlQXQoZSkpe2Zvcih2YXIgcj1lO3IrKzxzOylpZigzND09PXQuY2hhckNvZGVBdChyKSl7aWYoMzQhPT10LmNoYXJDb2RlQXQocisxKSlicmVhazsrK3J9cmV0dXJuIGY9cisyLG49dC5jaGFyQ29kZUF0KHIrMSksMTM9PT1uPyhpPSEwLDEwPT09dC5jaGFyQ29kZUF0KHIrMikmJisrZik6MTA9PT1uJiYoaT0hMCksdC5zbGljZShlKzEscikucmVwbGFjZSgvIiIvZywnIicpfWZvcig7ZjxzOyl7dmFyIGE9MTtpZihuPXQuY2hhckNvZGVBdChmKyspLDEwPT09bilpPSEwO2Vsc2UgaWYoMTM9PT1uKWk9ITAsMTA9PT10LmNoYXJDb2RlQXQoZikmJigrK2YsKythKTtlbHNlIGlmKG4hPT1jKWNvbnRpbnVlO3JldHVybiB0LnNsaWNlKGUsZi1hKX1yZXR1cm4gdC5zbGljZShlKX1mb3IodmFyIHIsaSxvPXt9LHU9e30sYT1bXSxzPXQubGVuZ3RoLGY9MCxsPTA7KHI9ZSgpKSE9PXU7KXtmb3IodmFyIGg9W107ciE9PW8mJnIhPT11OyloLnB1c2gocikscj1lKCk7biYmbnVsbD09KGg9bihoLGwrKykpfHxhLnB1c2goaCl9cmV0dXJuIGF9ZnVuY3Rpb24gcihuLGUpe3JldHVybiBudWxsPT1lJiYoZT1DcihuKSksW2UubWFwKHUpLmpvaW4odCldLmNvbmNhdChuLm1hcChmdW5jdGlvbihuKXtyZXR1cm4gZS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHUoblt0XSl9KS5qb2luKHQpfSkpLmpvaW4oIlxuIil9ZnVuY3Rpb24gaSh0KXtyZXR1cm4gdC5tYXAobykuam9pbigiXG4iKX1mdW5jdGlvbiBvKG4pe3JldHVybiBuLm1hcCh1KS5qb2luKHQpfWZ1bmN0aW9uIHUodCl7cmV0dXJuIG51bGw9PXQ/IiI6YS50ZXN0KHQrPSIiKT8nIicrdC5yZXBsYWNlKC9cIi9nLCciIicpKyciJzp0fXZhciBhPW5ldyBSZWdFeHAoJ1siJyt0KyJcbl0iKSxjPXQuY2hhckNvZGVBdCgwKTtyZXR1cm57cGFyc2U6bixwYXJzZVJvd3M6ZSxmb3JtYXQ6cixmb3JtYXRSb3dzOml9fWZ1bmN0aW9uIFByKHQsbil7ZnVuY3Rpb24gZSh0KXt2YXIgbixlPXMuc3RhdHVzO2lmKCFlJiZMcihzKXx8ZT49MjAwJiZlPDMwMHx8MzA0PT09ZSl7aWYobyl0cnl7bj1vLmNhbGwocixzKX1jYXRjaCh0KXtyZXR1cm4gdm9pZCBhLmNhbGwoImVycm9yIixyLHQpfWVsc2Ugbj1zO2EuY2FsbCgibG9hZCIscixuKX1lbHNlIGEuY2FsbCgiZXJyb3IiLHIsdCl9dmFyIHIsaSxvLHUsYT1NcigiYmVmb3Jlc2VuZCIsInByb2dyZXNzIiwibG9hZCIsImVycm9yIiksYz1xKCkscz1uZXcgWE1MSHR0cFJlcXVlc3QsZj1udWxsLGw9bnVsbCxoPTA7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBYRG9tYWluUmVxdWVzdHx8IndpdGhDcmVkZW50aWFscyJpbiBzfHwhL14oaHR0cChzKT86KT9cL1wvLy50ZXN0KHQpfHwocz1uZXcgWERvbWFpblJlcXVlc3QpLCJvbmxvYWQiaW4gcz9zLm9ubG9hZD1zLm9uZXJyb3I9cy5vbnRpbWVvdXQ9ZTpzLm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbih0KXtzLnJlYWR5U3RhdGU+MyYmZSh0KX0scy5vbnByb2dyZXNzPWZ1bmN0aW9uKHQpe2EuY2FsbCgicHJvZ3Jlc3MiLHIsdCl9LHI9e2hlYWRlcjpmdW5jdGlvbih0LG4pe3JldHVybiB0PSh0KyIiKS50b0xvd2VyQ2FzZSgpLGFyZ3VtZW50cy5sZW5ndGg8Mj9jLmdldCh0KToobnVsbD09bj9jLnJlbW92ZSh0KTpjLnNldCh0LG4rIiIpLHIpfSxtaW1lVHlwZTpmdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT1udWxsPT10P251bGw6dCsiIixyKTppfSxyZXNwb25zZVR5cGU6ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHU9dCxyKTp1fSx0aW1lb3V0OmZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhoPSt0LHIpOmh9LHVzZXI6ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg8MT9mOihmPW51bGw9PXQ/bnVsbDp0KyIiLHIpfSxwYXNzd29yZDpmdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aDwxP2w6KGw9bnVsbD09dD9udWxsOnQrIiIscil9LHJlc3BvbnNlOmZ1bmN0aW9uKHQpe3JldHVybiBvPXQscn0sZ2V0OmZ1bmN0aW9uKHQsbil7cmV0dXJuIHIuc2VuZCgiR0VUIix0LG4pfSxwb3N0OmZ1bmN0aW9uKHQsbil7cmV0dXJuIHIuc2VuZCgiUE9TVCIsdCxuKX0sc2VuZDpmdW5jdGlvbihuLGUsbyl7cmV0dXJuIHMub3BlbihuLHQsITAsZixsKSxudWxsPT1pfHxjLmhhcygiYWNjZXB0Iil8fGMuc2V0KCJhY2NlcHQiLGkrIiwqLyoiKSxzLnNldFJlcXVlc3RIZWFkZXImJmMuZWFjaChmdW5jdGlvbih0LG4pe3Muc2V0UmVxdWVzdEhlYWRlcihuLHQpfSksbnVsbCE9aSYmcy5vdmVycmlkZU1pbWVUeXBlJiZzLm92ZXJyaWRlTWltZVR5cGUoaSksbnVsbCE9dSYmKHMucmVzcG9uc2VUeXBlPXUpLGg+MCYmKHMudGltZW91dD1oKSxudWxsPT1vJiYiZnVuY3Rpb24iPT10eXBlb2YgZSYmKG89ZSxlPW51bGwpLG51bGwhPW8mJjE9PT1vLmxlbmd0aCYmKG89cXIobykpLG51bGwhPW8mJnIub24oImVycm9yIixvKS5vbigibG9hZCIsZnVuY3Rpb24odCl7byhudWxsLHQpfSksYS5jYWxsKCJiZWZvcmVzZW5kIixyLHMpLHMuc2VuZChudWxsPT1lP251bGw6ZSkscn0sYWJvcnQ6ZnVuY3Rpb24oKXtyZXR1cm4gcy5hYm9ydCgpLHJ9LG9uOmZ1bmN0aW9uKCl7dmFyIHQ9YS5vbi5hcHBseShhLGFyZ3VtZW50cyk7cmV0dXJuIHQ9PT1hP3I6dH19LG51bGwhPW4pe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBuKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBjYWxsYmFjazogIituKTtyZXR1cm4gci5nZXQobil9cmV0dXJuIHJ9ZnVuY3Rpb24gcXIodCl7cmV0dXJuIGZ1bmN0aW9uKG4sZSl7dChudWxsPT1uP2U6bnVsbCl9fWZ1bmN0aW9uIExyKHQpe3ZhciBuPXQucmVzcG9uc2VUeXBlO3JldHVybiBuJiYidGV4dCIhPT1uP3QucmVzcG9uc2U6dC5yZXNwb25zZVRleHR9ZnVuY3Rpb24gUnIodCxuKXtyZXR1cm4gZnVuY3Rpb24oZSxyKXt2YXIgaT1QcihlKS5taW1lVHlwZSh0KS5yZXNwb25zZShuKTtpZihudWxsIT1yKXtpZigiZnVuY3Rpb24iIT10eXBlb2Ygcil0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgY2FsbGJhY2s6ICIrcik7cmV0dXJuIGkuZ2V0KHIpfXJldHVybiBpfX1mdW5jdGlvbiBVcih0LG4pe3JldHVybiBmdW5jdGlvbihlLHIsaSl7YXJndW1lbnRzLmxlbmd0aDwzJiYoaT1yLHI9bnVsbCk7dmFyIG89UHIoZSkubWltZVR5cGUodCk7cmV0dXJuIG8ucm93PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP28ucmVzcG9uc2UoRHIobixyPXQpKTpyfSxvLnJvdyhyKSxpP28uZ2V0KGkpOm99fWZ1bmN0aW9uIERyKHQsbil7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiB0KGUucmVzcG9uc2VUZXh0LG4pfX1mdW5jdGlvbiBPcigpe3JldHVybiBteXx8KHd5KEZyKSxteT1ieS5ub3coKSt4eSl9ZnVuY3Rpb24gRnIoKXtteT0wfWZ1bmN0aW9uIElyKCl7dGhpcy5fY2FsbD10aGlzLl90aW1lPXRoaXMuX25leHQ9bnVsbH1mdW5jdGlvbiBZcih0LG4sZSl7dmFyIHI9bmV3IElyO3JldHVybiByLnJlc3RhcnQodCxuLGUpLHJ9ZnVuY3Rpb24gQnIoKXtPcigpLCsrZHk7Zm9yKHZhciB0LG49R187bjspKHQ9bXktbi5fdGltZSk+PTAmJm4uX2NhbGwuY2FsbChudWxsLHQpLG49bi5fbmV4dDstLWR5fWZ1bmN0aW9uIGpyKHQpe215PShneT10fHxieS5ub3coKSkreHksZHk9dnk9MDt0cnl7QnIoKX1maW5hbGx5e2R5PTAsWHIoKSxteT0wfX1mdW5jdGlvbiBIcigpe3ZhciB0PWJ5Lm5vdygpLG49dC1neTtuPnl5JiYoeHktPW4sZ3k9dCl9ZnVuY3Rpb24gWHIoKXtmb3IodmFyIHQsbixlPUdfLHI9MS8wO2U7KWUuX2NhbGw/KHI+ZS5fdGltZSYmKHI9ZS5fdGltZSksdD1lLGU9ZS5fbmV4dCk6KG49ZS5fbmV4dCxlLl9uZXh0PW51bGwsZT10P3QuX25leHQ9bjpHXz1uKTtKXz10LFZyKHIpfWZ1bmN0aW9uIFZyKHQpe2lmKCFkeSl7dnkmJih2eT1jbGVhclRpbWVvdXQodnkpKTt2YXIgbj10LW15O24+MjQ/KHQ8MS8wJiYodnk9c2V0VGltZW91dChqcixuKSksX3kmJihfeT1jbGVhckludGVydmFsKF95KSkpOihfeXx8KF95PXNldEludGVydmFsKEhyLHl5KSksZHk9MSx3eShqcikpfX1mdW5jdGlvbiBXcih0LG4sZSl7dmFyIHI9bmV3IElyO3JldHVybiBuPW51bGw9PW4/MDorbixyLnJlc3RhcnQoZnVuY3Rpb24oZSl7ci5zdG9wKCksdChlK24pfSxuLGUpLHJ9ZnVuY3Rpb24gJHIodCxuLGUpe3ZhciByPW5ldyBJcixpPW47cmV0dXJuIG51bGw9PW4/KHIucmVzdGFydCh0LG4sZSkscik6KG49K24sZT1udWxsPT1lP09yKCk6K2Usci5yZXN0YXJ0KGZ1bmN0aW9uIG8odSl7dSs9aSxyLnJlc3RhcnQobyxpKz1uLGUpLHQodSl9LG4sZSkscil9ZnVuY3Rpb24gWnIodCxuLGUscil7ZnVuY3Rpb24gaShuKXtyZXR1cm4gdChuPW5ldyBEYXRlKCtuKSksbn1yZXR1cm4gaS5mbG9vcj1pLGkuY2VpbD1mdW5jdGlvbihlKXtyZXR1cm4gdChlPW5ldyBEYXRlKGUtMSkpLG4oZSwxKSx0KGUpLGV9LGkucm91bmQ9ZnVuY3Rpb24odCl7dmFyIG49aSh0KSxlPWkuY2VpbCh0KTtyZXR1cm4gdC1uPGUtdD9uOmV9LGkub2Zmc2V0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG4odD1uZXcgRGF0ZSgrdCksbnVsbD09ZT8xOk1hdGguZmxvb3IoZSkpLHR9LGkucmFuZ2U9ZnVuY3Rpb24oZSxyLG8pe3ZhciB1PVtdO2lmKGU9aS5jZWlsKGUpLG89bnVsbD09bz8xOk1hdGguZmxvb3IobyksIShlPHImJm8+MCkpcmV0dXJuIHU7ZG8gdS5wdXNoKG5ldyBEYXRlKCtlKSk7d2hpbGUobihlLG8pLHQoZSksZTxyKTtyZXR1cm4gdX0saS5maWx0ZXI9ZnVuY3Rpb24oZSl7cmV0dXJuIFpyKGZ1bmN0aW9uKG4pe2Zvcig7dChuKSwhZShuKTspbi5zZXRUaW1lKG4tMSl9LGZ1bmN0aW9uKHQscil7Zm9yKDstLXI+PTA7KWZvcig7bih0LDEpLCFlKHQpOyk7fSl9LGUmJihpLmNvdW50PWZ1bmN0aW9uKG4scil7cmV0dXJuIE15LnNldFRpbWUoK24pLFR5LnNldFRpbWUoK3IpLHQoTXkpLHQoVHkpLE1hdGguZmxvb3IoZShNeSxUeSkpfSxpLmV2ZXJ5PWZ1bmN0aW9uKHQpe3JldHVybiB0PU1hdGguZmxvb3IodCksaXNGaW5pdGUodCkmJnQ+MD90PjE/aS5maWx0ZXIocj9mdW5jdGlvbihuKXtyZXR1cm4gcihuKSV0PT09MH06ZnVuY3Rpb24obil7cmV0dXJuIGkuY291bnQoMCxuKSV0PT09MH0pOmk6bnVsbH0pLGl9ZnVuY3Rpb24gR3IodCl7cmV0dXJuIFpyKGZ1bmN0aW9uKG4pe24uc2V0RGF0ZShuLmdldERhdGUoKS0obi5nZXREYXkoKSs3LXQpJTcpLG4uc2V0SG91cnMoMCwwLDAsMCl9LGZ1bmN0aW9uKHQsbil7dC5zZXREYXRlKHQuZ2V0RGF0ZSgpKzcqbil9LGZ1bmN0aW9uKHQsbil7cmV0dXJuKG4tdC0obi5nZXRUaW1lem9uZU9mZnNldCgpLXQuZ2V0VGltZXpvbmVPZmZzZXQoKSkqQXkpL3p5fSl9ZnVuY3Rpb24gSnIodCl7cmV0dXJuIFpyKGZ1bmN0aW9uKG4pe24uc2V0VVRDRGF0ZShuLmdldFVUQ0RhdGUoKS0obi5nZXRVVENEYXkoKSs3LXQpJTcpLG4uc2V0VVRDSG91cnMoMCwwLDAsMCl9LGZ1bmN0aW9uKHQsbil7dC5zZXRVVENEYXRlKHQuZ2V0VVRDRGF0ZSgpKzcqbil9LGZ1bmN0aW9uKHQsbil7cmV0dXJuKG4tdCkvenl9KX1mdW5jdGlvbiBRcih0LG4pe2lmKChlPSh0PW4/dC50b0V4cG9uZW50aWFsKG4tMSk6dC50b0V4cG9uZW50aWFsKCkpLmluZGV4T2YoImUiKSk8MClyZXR1cm4gbnVsbDt2YXIgZSxyPXQuc2xpY2UoMCxlKTtyZXR1cm5bci5sZW5ndGg+MT9yWzBdK3Iuc2xpY2UoMik6ciwrdC5zbGljZShlKzEpXX1mdW5jdGlvbiBLcih0KXtyZXR1cm4gdD1RcihNYXRoLmFicyh0KSksdD90WzFdOk5hTn1mdW5jdGlvbiB0aSh0LG4pe3JldHVybiBmdW5jdGlvbihlLHIpe2Zvcih2YXIgaT1lLmxlbmd0aCxvPVtdLHU9MCxhPXRbMF0sYz0wO2k+MCYmYT4wJiYoYythKzE+ciYmKGE9TWF0aC5tYXgoMSxyLWMpKSxvLnB1c2goZS5zdWJzdHJpbmcoaS09YSxpK2EpKSwhKChjKz1hKzEpPnIpKTspYT10W3U9KHUrMSkldC5sZW5ndGhdO3JldHVybiBvLnJldmVyc2UoKS5qb2luKG4pfX1mdW5jdGlvbiBuaSh0LG4pe3Q9dC50b1ByZWNpc2lvbihuKTt0OmZvcih2YXIgZSxyPXQubGVuZ3RoLGk9MSxvPS0xO2k8cjsrK2kpc3dpdGNoKHRbaV0pe2Nhc2UiLiI6bz1lPWk7YnJlYWs7Y2FzZSIwIjowPT09byYmKG89aSksZT1pO2JyZWFrO2Nhc2UiZSI6YnJlYWsgdDtkZWZhdWx0Om8+MCYmKG89MCl9cmV0dXJuIG8+MD90LnNsaWNlKDAsbykrdC5zbGljZShlKzEpOnR9ZnVuY3Rpb24gZWkodCxuKXt2YXIgZT1Rcih0LG4pO2lmKCFlKXJldHVybiB0KyIiO3ZhciByPWVbMF0saT1lWzFdLG89aS0oTmc9MypNYXRoLm1heCgtOCxNYXRoLm1pbig4LE1hdGguZmxvb3IoaS8zKSkpKSsxLHU9ci5sZW5ndGg7cmV0dXJuIG89PT11P3I6bz51P3IrbmV3IEFycmF5KG8tdSsxKS5qb2luKCIwIik6bz4wP3Iuc2xpY2UoMCxvKSsiLiIrci5zbGljZShvKToiMC4iK25ldyBBcnJheSgxLW8pLmpvaW4oIjAiKStRcih0LE1hdGgubWF4KDAsbitvLTEpKVswXX1mdW5jdGlvbiByaSh0LG4pe3ZhciBlPVFyKHQsbik7aWYoIWUpcmV0dXJuIHQrIiI7dmFyIHI9ZVswXSxpPWVbMV07cmV0dXJuIGk8MD8iMC4iK25ldyBBcnJheSgtaSkuam9pbigiMCIpK3I6ci5sZW5ndGg+aSsxP3Iuc2xpY2UoMCxpKzEpKyIuIityLnNsaWNlKGkrMSk6cituZXcgQXJyYXkoaS1yLmxlbmd0aCsyKS5qb2luKCIwIil9ZnVuY3Rpb24gaWkodCl7cmV0dXJuIG5ldyBvaSh0KX1mdW5jdGlvbiBvaSh0KXtpZighKG49Q2cuZXhlYyh0KSkpdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIGZvcm1hdDogIit0KTt2YXIgbixlPW5bMV18fCIgIixyPW5bMl18fCI+IixpPW5bM118fCItIixvPW5bNF18fCIiLHU9ISFuWzVdLGE9bls2XSYmK25bNl0sYz0hIW5bN10scz1uWzhdJiYrbls4XS5zbGljZSgxKSxmPW5bOV18fCIiOyJuIj09PWY/KGM9ITAsZj0iZyIpOkVnW2ZdfHwoZj0iIiksKHV8fCIwIj09PWUmJiI9Ij09PXIpJiYodT0hMCxlPSIwIixyPSI9IiksdGhpcy5maWxsPWUsdGhpcy5hbGlnbj1yLHRoaXMuc2lnbj1pLHRoaXMuc3ltYm9sPW8sdGhpcy56ZXJvPXUsdGhpcy53aWR0aD1hLHRoaXMuY29tbWE9Yyx0aGlzLnByZWNpc2lvbj1zLHRoaXMudHlwZT1mfWZ1bmN0aW9uIHVpKHQpe3JldHVybiB0fWZ1bmN0aW9uIGFpKHQpe2Z1bmN0aW9uIG4odCl7ZnVuY3Rpb24gbih0KXt2YXIgbixpLGMsZz1kLG09djtpZigiYyI9PT1wKW09Xyh0KSttLHQ9IiI7ZWxzZXt0PSt0O3ZhciB4PSh0PDB8fDEvdDwwKSYmKHQqPS0xLCEwKTtpZih0PV8odCxoKSx4KWZvcihuPS0xLGk9dC5sZW5ndGgseD0hMTsrK248aTspaWYoYz10LmNoYXJDb2RlQXQobiksNDg8YyYmYzw1OHx8IngiPT09cCYmOTY8YyYmYzwxMDN8fCJYIj09PXAmJjY0PGMmJmM8NzEpe3g9ITA7YnJlYWt9aWYoZz0oeD8iKCI9PT1hP2E6Ii0iOiItIj09PWF8fCIoIj09PWE/IiI6YSkrZyxtPW0rKCJzIj09PXA/UGdbOCtOZy8zXToiIikrKHgmJiIoIj09PWE/IikiOiIiKSx5KWZvcihuPS0xLGk9dC5sZW5ndGg7KytuPGk7KWlmKGM9dC5jaGFyQ29kZUF0KG4pLDQ4PmN8fGM+NTcpe209KDQ2PT09Yz9vK3Quc2xpY2UobisxKTp0LnNsaWNlKG4pKSttLHQ9dC5zbGljZSgwLG4pO2JyZWFrfX1sJiYhcyYmKHQ9cih0LDEvMCkpO3ZhciBiPWcubGVuZ3RoK3QubGVuZ3RoK20ubGVuZ3RoLHc9YjxmP25ldyBBcnJheShmLWIrMSkuam9pbihlKToiIjtzd2l0Y2gobCYmcyYmKHQ9cih3K3Qsdy5sZW5ndGg/Zi1tLmxlbmd0aDoxLzApLHc9IiIpLHUpe2Nhc2UiPCI6cmV0dXJuIGcrdCttK3c7Y2FzZSI9IjpyZXR1cm4gZyt3K3QrbTtjYXNlIl4iOnJldHVybiB3LnNsaWNlKDAsYj13Lmxlbmd0aD4+MSkrZyt0K20rdy5zbGljZShiKX1yZXR1cm4gdytnK3QrbX10PWlpKHQpO3ZhciBlPXQuZmlsbCx1PXQuYWxpZ24sYT10LnNpZ24sYz10LnN5bWJvbCxzPXQuemVybyxmPXQud2lkdGgsbD10LmNvbW1hLGg9dC5wcmVjaXNpb24scD10LnR5cGUsZD0iJCI9PT1jP2lbMF06IiMiPT09YyYmL1tib3hYXS8udGVzdChwKT8iMCIrcC50b0xvd2VyQ2FzZSgpOiIiLHY9IiQiPT09Yz9pWzFdOi9bJXBdLy50ZXN0KHApPyIlIjoiIixfPUVnW3BdLHk9IXB8fC9bZGVmZ3BycyVdLy50ZXN0KHApO3JldHVybiBoPW51bGw9PWg/cD82OjEyOi9bZ3Byc10vLnRlc3QocCk/TWF0aC5tYXgoMSxNYXRoLm1pbigyMSxoKSk6TWF0aC5tYXgoMCxNYXRoLm1pbigyMCxoKSksbi50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0KyIifSxufWZ1bmN0aW9uIGUodCxlKXt2YXIgcj1uKCh0PWlpKHQpLHQudHlwZT0iZiIsdCkpLGk9MypNYXRoLm1heCgtOCxNYXRoLm1pbig4LE1hdGguZmxvb3IoS3IoZSkvMykpKSxvPU1hdGgucG93KDEwLC1pKSx1PVBnWzgraS8zXTtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIHIobyp0KSt1fX12YXIgcj10Lmdyb3VwaW5nJiZ0LnRob3VzYW5kcz90aSh0Lmdyb3VwaW5nLHQudGhvdXNhbmRzKTp1aSxpPXQuY3VycmVuY3ksbz10LmRlY2ltYWw7cmV0dXJue2Zvcm1hdDpuLGZvcm1hdFByZWZpeDplfX1mdW5jdGlvbiBjaShuKXtyZXR1cm4gemc9YWkobiksdC5mb3JtYXQ9emcuZm9ybWF0LHQuZm9ybWF0UHJlZml4PXpnLmZvcm1hdFByZWZpeCx6Z31mdW5jdGlvbiBzaSh0KXtyZXR1cm4gTWF0aC5tYXgoMCwtS3IoTWF0aC5hYnModCkpKX1mdW5jdGlvbiBmaSh0LG4pe3JldHVybiBNYXRoLm1heCgwLDMqTWF0aC5tYXgoLTgsTWF0aC5taW4oOCxNYXRoLmZsb29yKEtyKG4pLzMpKSktS3IoTWF0aC5hYnModCkpKX1mdW5jdGlvbiBsaSh0LG4pe3JldHVybiB0PU1hdGguYWJzKHQpLG49TWF0aC5hYnMobiktdCxNYXRoLm1heCgwLEtyKG4pLUtyKHQpKSsxfWZ1bmN0aW9uIGhpKHQpe2lmKDA8PXQueSYmdC55PDEwMCl7dmFyIG49bmV3IERhdGUoLTEsdC5tLHQuZCx0LkgsdC5NLHQuUyx0LkwpO3JldHVybiBuLnNldEZ1bGxZZWFyKHQueSksbn1yZXR1cm4gbmV3IERhdGUodC55LHQubSx0LmQsdC5ILHQuTSx0LlMsdC5MKX1mdW5jdGlvbiBwaSh0KXtpZigwPD10LnkmJnQueTwxMDApe3ZhciBuPW5ldyBEYXRlKERhdGUuVVRDKC0xLHQubSx0LmQsdC5ILHQuTSx0LlMsdC5MKSk7cmV0dXJuIG4uc2V0VVRDRnVsbFllYXIodC55KSxufXJldHVybiBuZXcgRGF0ZShEYXRlLlVUQyh0LnksdC5tLHQuZCx0LkgsdC5NLHQuUyx0LkwpKX1mdW5jdGlvbiBkaSh0KXtyZXR1cm57eTp0LG06MCxkOjEsSDowLE06MCxTOjAsTDowfX1mdW5jdGlvbiB2aSh0KXtmdW5jdGlvbiBuKHQsbil7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciByLGksbyx1PVtdLGE9LTEsYz0wLHM9dC5sZW5ndGg7Zm9yKGUgaW5zdGFuY2VvZiBEYXRlfHwoZT1uZXcgRGF0ZSgrZSkpOysrYTxzOykzNz09PXQuY2hhckNvZGVBdChhKSYmKHUucHVzaCh0LnNsaWNlKGMsYSkpLG51bGwhPShpPUxnW3I9dC5jaGFyQXQoKythKV0pP3I9dC5jaGFyQXQoKythKTppPSJlIj09PXI/IiAiOiIwIiwobz1uW3JdKSYmKHI9byhlLGkpKSx1LnB1c2gociksYz1hKzEpO3JldHVybiB1LnB1c2godC5zbGljZShjLGEpKSx1LmpvaW4oIiIpfX1mdW5jdGlvbiBlKHQsbil7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciBpPWRpKDE5MDApLG89cihpLHQsZSs9IiIsMCk7aWYobyE9ZS5sZW5ndGgpcmV0dXJuIG51bGw7aWYoInAiaW4gaSYmKGkuSD1pLkglMTIrMTIqaS5wKSwiVyJpbiBpfHwiVSJpbiBpKXsidyJpbiBpfHwoaS53PSJXImluIGk/MTowKTt2YXIgdT0iWiJpbiBpP3BpKGRpKGkueSkpLmdldFVUQ0RheSgpOm4oZGkoaS55KSkuZ2V0RGF5KCk7aS5tPTAsaS5kPSJXImluIGk/KGkudys2KSU3KzcqaS5XLSh1KzUpJTc6aS53KzcqaS5VLSh1KzYpJTd9cmV0dXJuIloiaW4gaT8oaS5IKz1pLlovMTAwfDAsaS5NKz1pLlolMTAwLHBpKGkpKTpuKGkpfX1mdW5jdGlvbiByKHQsbixlLHIpe2Zvcih2YXIgaSxvLHU9MCxhPW4ubGVuZ3RoLGM9ZS5sZW5ndGg7dTxhOyl7aWYocj49YylyZXR1cm4tMTtpZihpPW4uY2hhckNvZGVBdCh1KyspLDM3PT09aSl7aWYoaT1uLmNoYXJBdCh1KyspLG89QltpIGluIExnP24uY2hhckF0KHUrKyk6aV0sIW98fChyPW8odCxlLHIpKTwwKXJldHVybi0xfWVsc2UgaWYoaSE9ZS5jaGFyQ29kZUF0KHIrKykpcmV0dXJuLTF9cmV0dXJuIHJ9ZnVuY3Rpb24gaSh0LG4sZSl7dmFyIHI9Qy5leGVjKG4uc2xpY2UoZSkpO3JldHVybiByPyh0LnA9eltyWzBdLnRvTG93ZXJDYXNlKCldLGUrclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIG8odCxuLGUpe3ZhciByPUwuZXhlYyhuLnNsaWNlKGUpKTtyZXR1cm4gcj8odC53PVJbclswXS50b0xvd2VyQ2FzZSgpXSxlK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiB1KHQsbixlKXt2YXIgcj1QLmV4ZWMobi5zbGljZShlKSk7cmV0dXJuIHI/KHQudz1xW3JbMF0udG9Mb3dlckNhc2UoKV0sZStyWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gYSh0LG4sZSl7dmFyIHI9Ty5leGVjKG4uc2xpY2UoZSkpO3JldHVybiByPyh0Lm09RltyWzBdLnRvTG93ZXJDYXNlKCldLGUrclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIGModCxuLGUpe3ZhciByPVUuZXhlYyhuLnNsaWNlKGUpKTtyZXR1cm4gcj8odC5tPURbclswXS50b0xvd2VyQ2FzZSgpXSxlK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBzKHQsbixlKXtyZXR1cm4gcih0LHcsbixlKX1mdW5jdGlvbiBmKHQsbixlKXtyZXR1cm4gcih0LE0sbixlKX1mdW5jdGlvbiBsKHQsbixlKXtyZXR1cm4gcih0LFQsbixlKX1mdW5jdGlvbiBoKHQpe3JldHVybiBOW3QuZ2V0RGF5KCldfWZ1bmN0aW9uIHAodCl7cmV0dXJuIFNbdC5nZXREYXkoKV19ZnVuY3Rpb24gZCh0KXtyZXR1cm4gRVt0LmdldE1vbnRoKCldfWZ1bmN0aW9uIHYodCl7cmV0dXJuIEFbdC5nZXRNb250aCgpXX1mdW5jdGlvbiBfKHQpe3JldHVybiBrWysodC5nZXRIb3VycygpPj0xMildfWZ1bmN0aW9uIHkodCl7cmV0dXJuIE5bdC5nZXRVVENEYXkoKV19ZnVuY3Rpb24gZyh0KXtyZXR1cm4gU1t0LmdldFVUQ0RheSgpXX1mdW5jdGlvbiBtKHQpe3JldHVybiBFW3QuZ2V0VVRDTW9udGgoKV19ZnVuY3Rpb24geCh0KXtyZXR1cm4gQVt0LmdldFVUQ01vbnRoKCldfWZ1bmN0aW9uIGIodCl7cmV0dXJuIGtbKyh0LmdldFVUQ0hvdXJzKCk+PTEyKV19dmFyIHc9dC5kYXRlVGltZSxNPXQuZGF0ZSxUPXQudGltZSxrPXQucGVyaW9kcyxTPXQuZGF5cyxOPXQuc2hvcnREYXlzLEE9dC5tb250aHMsRT10LnNob3J0TW9udGhzLEM9Z2koayksej1taShrKSxQPWdpKFMpLHE9bWkoUyksTD1naShOKSxSPW1pKE4pLFU9Z2koQSksRD1taShBKSxPPWdpKEUpLEY9bWkoRSksST17YTpoLEE6cCxiOmQsQjp2LGM6bnVsbCxkOkxpLGU6TGksSDpSaSxJOlVpLGo6RGksTDpPaSxtOkZpLE06SWkscDpfLFM6WWksVTpCaSx3OmppLFc6SGkseDpudWxsLFg6bnVsbCx5OlhpLFk6VmksWjpXaSwiJSI6Y299LFk9e2E6eSxBOmcsYjptLEI6eCxjOm51bGwsZDokaSxlOiRpLEg6WmksSTpHaSxqOkppLEw6UWksbTpLaSxNOnRvLHA6YixTOm5vLFU6ZW8sdzpybyxXOmlvLHg6bnVsbCxYOm51bGwseTpvbyxZOnVvLFo6YW8sIiUiOmNvfSxCPXthOm8sQTp1LGI6YSxCOmMsYzpzLGQ6TmksZTpOaSxIOkVpLEk6RWksajpBaSxMOlBpLG06U2ksTTpDaSxwOmksUzp6aSxVOmJpLHc6eGksVzp3aSx4OmYsWDpsLHk6VGksWTpNaSxaOmtpLCIlIjpxaX07cmV0dXJuIEkueD1uKE0sSSksSS5YPW4oVCxJKSxJLmM9bih3LEkpLFkueD1uKE0sWSksWS5YPW4oVCxZKSxZLmM9bih3LFkpLHtmb3JtYXQ6ZnVuY3Rpb24odCl7dmFyIGU9bih0Kz0iIixJKTtyZXR1cm4gZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0fSxlfSxwYXJzZTpmdW5jdGlvbih0KXt2YXIgbj1lKHQrPSIiLGhpKTtyZXR1cm4gbi50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0fSxufSx1dGNGb3JtYXQ6ZnVuY3Rpb24odCl7dmFyIGU9bih0Kz0iIixZKTtyZXR1cm4gZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0fSxlfSx1dGNQYXJzZTpmdW5jdGlvbih0KXt2YXIgbj1lKHQscGkpO3JldHVybiBuLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHR9LG59fX1mdW5jdGlvbiBfaSh0LG4sZSl7dmFyIHI9dDwwPyItIjoiIixpPShyPy10OnQpKyIiLG89aS5sZW5ndGg7cmV0dXJuIHIrKG88ZT9uZXcgQXJyYXkoZS1vKzEpLmpvaW4obikraTppKX1mdW5jdGlvbiB5aSh0KXtyZXR1cm4gdC5yZXBsYWNlKERnLCJcXCQmIil9ZnVuY3Rpb24gZ2kodCl7cmV0dXJuIG5ldyBSZWdFeHAoIl4oPzoiK3QubWFwKHlpKS5qb2luKCJ8IikrIikiLCJpIil9ZnVuY3Rpb24gbWkodCl7Zm9yKHZhciBuPXt9LGU9LTEscj10Lmxlbmd0aDsrK2U8cjspblt0W2VdLnRvTG93ZXJDYXNlKCldPWU7cmV0dXJuIG59ZnVuY3Rpb24geGkodCxuLGUpe3ZhciByPVJnLmV4ZWMobi5zbGljZShlLGUrMSkpO3JldHVybiByPyh0Lnc9K3JbMF0sZStyWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gYmkodCxuLGUpe3ZhciByPVJnLmV4ZWMobi5zbGljZShlKSk7cmV0dXJuIHI/KHQuVT0rclswXSxlK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiB3aSh0LG4sZSl7dmFyIHI9UmcuZXhlYyhuLnNsaWNlKGUpKTtyZXR1cm4gcj8odC5XPStyWzBdLGUrclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIE1pKHQsbixlKXt2YXIgcj1SZy5leGVjKG4uc2xpY2UoZSxlKzQpKTtyZXR1cm4gcj8odC55PStyWzBdLGUrclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIFRpKHQsbixlKXt2YXIgcj1SZy5leGVjKG4uc2xpY2UoZSxlKzIpKTtyZXR1cm4gcj8odC55PStyWzBdKygrclswXT42OD8xOTAwOjJlMyksZStyWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24ga2kodCxuLGUpe3ZhciByPS9eKFopfChbKy1dXGRcZCkoPzpcOj8oXGRcZCkpPy8uZXhlYyhuLnNsaWNlKGUsZSs2KSk7cmV0dXJuIHI/KHQuWj1yWzFdPzA6LShyWzJdKyhyWzNdfHwiMDAiKSksZStyWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gU2kodCxuLGUpe3ZhciByPVJnLmV4ZWMobi5zbGljZShlLGUrMikpO3JldHVybiByPyh0Lm09clswXS0xLGUrclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIE5pKHQsbixlKXt2YXIgcj1SZy5leGVjKG4uc2xpY2UoZSxlKzIpKTtyZXR1cm4gcj8odC5kPStyWzBdLGUrclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIEFpKHQsbixlKXt2YXIgcj1SZy5leGVjKG4uc2xpY2UoZSxlKzMpKTtyZXR1cm4gcj8odC5tPTAsdC5kPStyWzBdLGUrclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIEVpKHQsbixlKXt2YXIgcj1SZy5leGVjKG4uc2xpY2UoZSxlKzIpKTtyZXR1cm4gcj8odC5IPStyWzBdLGUrclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIENpKHQsbixlKXt2YXIgcj1SZy5leGVjKG4uc2xpY2UoZSxlKzIpKTtyZXR1cm4gcj8odC5NPStyWzBdLGUrclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIHppKHQsbixlKXt2YXIgcj1SZy5leGVjKG4uc2xpY2UoZSxlKzIpKTtyZXR1cm4gcj8odC5TPStyWzBdLGUrclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIFBpKHQsbixlKXt2YXIgcj1SZy5leGVjKG4uc2xpY2UoZSxlKzMpKTtyZXR1cm4gcj8odC5MPStyWzBdLGUrclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIHFpKHQsbixlKXt2YXIgcj1VZy5leGVjKG4uc2xpY2UoZSxlKzEpKTtyZXR1cm4gcj9lK3JbMF0ubGVuZ3RoOi0xfWZ1bmN0aW9uIExpKHQsbil7cmV0dXJuIF9pKHQuZ2V0RGF0ZSgpLG4sMil9ZnVuY3Rpb24gUmkodCxuKXtyZXR1cm4gX2kodC5nZXRIb3VycygpLG4sMil9ZnVuY3Rpb24gVWkodCxuKXtyZXR1cm4gX2kodC5nZXRIb3VycygpJTEyfHwxMixuLDIpfWZ1bmN0aW9uIERpKHQsbil7cmV0dXJuIF9pKDErT3kuY291bnQoZWcodCksdCksbiwzKX1mdW5jdGlvbiBPaSh0LG4pe3JldHVybiBfaSh0LmdldE1pbGxpc2Vjb25kcygpLG4sMyl9ZnVuY3Rpb24gRmkodCxuKXtyZXR1cm4gX2kodC5nZXRNb250aCgpKzEsbiwyKX1mdW5jdGlvbiBJaSh0LG4pe3JldHVybiBfaSh0LmdldE1pbnV0ZXMoKSxuLDIpfWZ1bmN0aW9uIFlpKHQsbil7cmV0dXJuIF9pKHQuZ2V0U2Vjb25kcygpLG4sMil9ZnVuY3Rpb24gQmkodCxuKXtyZXR1cm4gX2koSXkuY291bnQoZWcodCksdCksbiwyKX1mdW5jdGlvbiBqaSh0KXtyZXR1cm4gdC5nZXREYXkoKX1mdW5jdGlvbiBIaSh0LG4pe3JldHVybiBfaShZeS5jb3VudChlZyh0KSx0KSxuLDIpfWZ1bmN0aW9uIFhpKHQsbil7cmV0dXJuIF9pKHQuZ2V0RnVsbFllYXIoKSUxMDAsbiwyKX1mdW5jdGlvbiBWaSh0LG4pe3JldHVybiBfaSh0LmdldEZ1bGxZZWFyKCklMWU0LG4sNCl9ZnVuY3Rpb24gV2kodCl7dmFyIG49dC5nZXRUaW1lem9uZU9mZnNldCgpO3JldHVybihuPjA/Ii0iOihuKj0tMSwiKyIpKStfaShuLzYwfDAsIjAiLDIpK19pKG4lNjAsIjAiLDIpfWZ1bmN0aW9uICRpKHQsbil7cmV0dXJuIF9pKHQuZ2V0VVRDRGF0ZSgpLG4sMil9ZnVuY3Rpb24gWmkodCxuKXtyZXR1cm4gX2kodC5nZXRVVENIb3VycygpLG4sMil9ZnVuY3Rpb24gR2kodCxuKXtyZXR1cm4gX2kodC5nZXRVVENIb3VycygpJTEyfHwxMixuLDIpfWZ1bmN0aW9uIEppKHQsbil7cmV0dXJuIF9pKDErY2cuY291bnQoU2codCksdCksbiwzKX1mdW5jdGlvbiBRaSh0LG4pe3JldHVybiBfaSh0LmdldFVUQ01pbGxpc2Vjb25kcygpLG4sMyl9ZnVuY3Rpb24gS2kodCxuKXtyZXR1cm4gX2kodC5nZXRVVENNb250aCgpKzEsbiwyKX1mdW5jdGlvbiB0byh0LG4pe3JldHVybiBfaSh0LmdldFVUQ01pbnV0ZXMoKSxuLDIpfWZ1bmN0aW9uIG5vKHQsbil7cmV0dXJuIF9pKHQuZ2V0VVRDU2Vjb25kcygpLG4sMil9ZnVuY3Rpb24gZW8odCxuKXtyZXR1cm4gX2koZmcuY291bnQoU2codCksdCksbiwyKX1mdW5jdGlvbiBybyh0KXtyZXR1cm4gdC5nZXRVVENEYXkoKX1mdW5jdGlvbiBpbyh0LG4pe3JldHVybiBfaShsZy5jb3VudChTZyh0KSx0KSxuLDIpfWZ1bmN0aW9uIG9vKHQsbil7cmV0dXJuIF9pKHQuZ2V0VVRDRnVsbFllYXIoKSUxMDAsbiwyKX1mdW5jdGlvbiB1byh0LG4pe3JldHVybiBfaSh0LmdldFVUQ0Z1bGxZZWFyKCklMWU0LG4sNCl9ZnVuY3Rpb24gYW8oKXtyZXR1cm4iKzAwMDAifWZ1bmN0aW9uIGNvKCl7cmV0dXJuIiUifWZ1bmN0aW9uIHNvKG4pe3JldHVybiBxZz12aShuKSx0LnRpbWVGb3JtYXQ9cWcuZm9ybWF0LHQudGltZVBhcnNlPXFnLnBhcnNlLHQudXRjRm9ybWF0PXFnLnV0Y0Zvcm1hdCx0LnV0Y1BhcnNlPXFnLnV0Y1BhcnNlLHFnfWZ1bmN0aW9uIGZvKHQpe3JldHVybiB0LnRvSVNPU3RyaW5nKCl9ZnVuY3Rpb24gbG8odCl7dmFyIG49bmV3IERhdGUodCk7cmV0dXJuIGlzTmFOKG4pP251bGw6bn1mdW5jdGlvbiBobyh0KXtmdW5jdGlvbiBuKG4pe3ZhciBvPW4rIiIsdT1lLmdldChvKTtpZighdSl7aWYoaSE9PUhnKXJldHVybiBpO2Uuc2V0KG8sdT1yLnB1c2gobikpfXJldHVybiB0Wyh1LTEpJXQubGVuZ3RoXX12YXIgZT1xKCkscj1bXSxpPUhnO3JldHVybiB0PW51bGw9PXQ/W106amcuY2FsbCh0KSxuLmRvbWFpbj1mdW5jdGlvbih0KXtpZighYXJndW1lbnRzLmxlbmd0aClyZXR1cm4gci5zbGljZSgpO3I9W10sZT1xKCk7Zm9yKHZhciBpLG8sdT0tMSxhPXQubGVuZ3RoOysrdTxhOyllLmhhcyhvPShpPXRbdV0pKyIiKXx8ZS5zZXQobyxyLnB1c2goaSkpO3JldHVybiBufSxuLnJhbmdlPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PWpnLmNhbGwoZSksbik6dC5zbGljZSgpfSxuLnVua25vd249ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9dCxuKTppfSxuLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gaG8oKS5kb21haW4ocikucmFuZ2UodCkudW5rbm93bihpKX0sbn1mdW5jdGlvbiBwbygpe2Z1bmN0aW9uIHQoKXt2YXIgdD1pKCkubGVuZ3RoLHI9dVsxXTx1WzBdLGg9dVtyLTBdLHA9dVsxLXJdO249KHAtaCkvTWF0aC5tYXgoMSx0LWMrMipzKSxhJiYobj1NYXRoLmZsb29yKG4pKSxoKz0ocC1oLW4qKHQtYykpKmYsZT1uKigxLWMpLGEmJihoPU1hdGgucm91bmQoaCksZT1NYXRoLnJvdW5kKGUpKTt2YXIgZD1sKHQpLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gaCtuKnR9KTtyZXR1cm4gbyhyP2QucmV2ZXJzZSgpOmQpfXZhciBuLGUscj1obygpLnVua25vd24odm9pZCAwKSxpPXIuZG9tYWluLG89ci5yYW5nZSx1PVswLDFdLGE9ITEsYz0wLHM9MCxmPS41O3JldHVybiBkZWxldGUgci51bmtub3duLHIuZG9tYWluPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpKG4pLHQoKSk6aSgpfSxyLnJhbmdlPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PVsrblswXSwrblsxXV0sdCgpKTp1LnNsaWNlKCl9LHIucmFuZ2VSb3VuZD1mdW5jdGlvbihuKXtyZXR1cm4gdT1bK25bMF0sK25bMV1dLGE9ITAsdCgpfSxyLmJhbmR3aWR0aD1mdW5jdGlvbigpe3JldHVybiBlfSxyLnN0ZXA9ZnVuY3Rpb24oKXtyZXR1cm4gbn0sci5yb3VuZD1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT0hIW4sdCgpKTphfSxyLnBhZGRpbmc9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGM9cz1NYXRoLm1heCgwLE1hdGgubWluKDEsbikpLHQoKSk6Y30sci5wYWRkaW5nSW5uZXI9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGM9TWF0aC5tYXgoMCxNYXRoLm1pbigxLG4pKSx0KCkpOmN9LHIucGFkZGluZ091dGVyPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPU1hdGgubWF4KDAsTWF0aC5taW4oMSxuKSksdCgpKTpzfSxyLmFsaWduPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhmPU1hdGgubWF4KDAsTWF0aC5taW4oMSxuKSksdCgpKTpmfSxyLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gcG8oKS5kb21haW4oaSgpKS5yYW5nZSh1KS5yb3VuZChhKS5wYWRkaW5nSW5uZXIoYykucGFkZGluZ091dGVyKHMpLmFsaWduKGYpfSx0KCl9ZnVuY3Rpb24gdm8odCl7dmFyIG49dC5jb3B5O3JldHVybiB0LnBhZGRpbmc9dC5wYWRkaW5nT3V0ZXIsZGVsZXRlIHQucGFkZGluZ0lubmVyLGRlbGV0ZSB0LnBhZGRpbmdPdXRlcix0LmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gdm8obigpKX0sdH1mdW5jdGlvbiBfbygpe3JldHVybiB2byhwbygpLnBhZGRpbmdJbm5lcigxKSl9ZnVuY3Rpb24geW8odCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fWZ1bmN0aW9uIGdvKHQpe3JldHVybit0fWZ1bmN0aW9uIG1vKHQsbil7cmV0dXJuKG4tPXQ9K3QpP2Z1bmN0aW9uKGUpe3JldHVybihlLXQpL259OnlvKG4pfWZ1bmN0aW9uIHhvKHQpe3JldHVybiBmdW5jdGlvbihuLGUpe3ZhciByPXQobj0rbixlPStlKTtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIHQ8PW4/MDp0Pj1lPzE6cih0KX19fWZ1bmN0aW9uIGJvKHQpe3JldHVybiBmdW5jdGlvbihuLGUpe3ZhciByPXQobj0rbixlPStlKTtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIHQ8PTA/bjp0Pj0xP2U6cih0KX19fWZ1bmN0aW9uIHdvKHQsbixlLHIpe3ZhciBpPXRbMF0sbz10WzFdLHU9blswXSxhPW5bMV07cmV0dXJuIG88aT8oaT1lKG8saSksdT1yKGEsdSkpOihpPWUoaSxvKSx1PXIodSxhKSksZnVuY3Rpb24odCl7cmV0dXJuIHUoaSh0KSl9fWZ1bmN0aW9uIE1vKHQsbixlLHIpe3ZhciBpPU1hdGgubWluKHQubGVuZ3RoLG4ubGVuZ3RoKS0xLG89bmV3IEFycmF5KGkpLHU9bmV3IEFycmF5KGkpLGE9LTE7Zm9yKHRbaV08dFswXSYmKHQ9dC5zbGljZSgpLnJldmVyc2UoKSxuPW4uc2xpY2UoKS5yZXZlcnNlKCkpOysrYTxpOylvW2FdPWUodFthXSx0W2ErMV0pLHVbYV09cihuW2FdLG5bYSsxXSk7cmV0dXJuIGZ1bmN0aW9uKG4pe3ZhciBlPUNkKHQsbiwxLGkpLTE7cmV0dXJuIHVbZV0ob1tlXShuKSl9fWZ1bmN0aW9uIFRvKHQsbil7cmV0dXJuIG4uZG9tYWluKHQuZG9tYWluKCkpLnJhbmdlKHQucmFuZ2UoKSkuaW50ZXJwb2xhdGUodC5pbnRlcnBvbGF0ZSgpKS5jbGFtcCh0LmNsYW1wKCkpfWZ1bmN0aW9uIGtvKHQsbil7ZnVuY3Rpb24gZSgpe3JldHVybiBpPU1hdGgubWluKGEubGVuZ3RoLGMubGVuZ3RoKT4yP01vOndvLG89dT1udWxsLHJ9ZnVuY3Rpb24gcihuKXtyZXR1cm4ob3x8KG89aShhLGMsZj94byh0KTp0LHMpKSkoK24pfXZhciBpLG8sdSxhPVhnLGM9WGcscz1jcixmPSExO3JldHVybiByLmludmVydD1mdW5jdGlvbih0KXtyZXR1cm4odXx8KHU9aShjLGEsbW8sZj9ibyhuKTpuKSkpKCt0KX0sci5kb21haW49ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9QmcuY2FsbCh0LGdvKSxlKCkpOmEuc2xpY2UoKX0sci5yYW5nZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz1qZy5jYWxsKHQpLGUoKSk6Yy5zbGljZSgpfSxyLnJhbmdlUm91bmQ9ZnVuY3Rpb24odCl7cmV0dXJuIGM9amcuY2FsbCh0KSxzPXNyLGUoKX0sci5jbGFtcD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZj0hIXQsZSgpKTpmfSxyLmludGVycG9sYXRlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPXQsZSgpKTpzfSxlKCl9ZnVuY3Rpb24gU28obixlLHIpe3ZhciBpLG89blswXSx1PW5bbi5sZW5ndGgtMV0sYT1wKG8sdSxudWxsPT1lPzEwOmUpO3N3aXRjaChyPWlpKG51bGw9PXI/IixmIjpyKSxyLnR5cGUpe2Nhc2UicyI6dmFyIGM9TWF0aC5tYXgoTWF0aC5hYnMobyksTWF0aC5hYnModSkpO3JldHVybiBudWxsIT1yLnByZWNpc2lvbnx8aXNOYU4oaT1maShhLGMpKXx8KHIucHJlY2lzaW9uPWkpLHQuZm9ybWF0UHJlZml4KHIsYyk7Y2FzZSIiOmNhc2UiZSI6Y2FzZSJnIjpjYXNlInAiOmNhc2UiciI6bnVsbCE9ci5wcmVjaXNpb258fGlzTmFOKGk9bGkoYSxNYXRoLm1heChNYXRoLmFicyhvKSxNYXRoLmFicyh1KSkpKXx8KHIucHJlY2lzaW9uPWktKCJlIj09PXIudHlwZSkpO2JyZWFrO2Nhc2UiZiI6Y2FzZSIlIjpudWxsIT1yLnByZWNpc2lvbnx8aXNOYU4oaT1zaShhKSl8fChyLnByZWNpc2lvbj1pLTIqKCIlIj09PXIudHlwZSkpfXJldHVybiB0LmZvcm1hdChyKX1mdW5jdGlvbiBObyh0KXt2YXIgbj10LmRvbWFpbjtyZXR1cm4gdC50aWNrcz1mdW5jdGlvbih0KXt2YXIgZT1uKCk7cmV0dXJuIGgoZVswXSxlW2UubGVuZ3RoLTFdLG51bGw9PXQ/MTA6dCl9LHQudGlja0Zvcm1hdD1mdW5jdGlvbih0LGUpe3JldHVybiBTbyhuKCksdCxlKX0sdC5uaWNlPWZ1bmN0aW9uKGUpe3ZhciByPW4oKSxpPXIubGVuZ3RoLTEsbz1udWxsPT1lPzEwOmUsdT1yWzBdLGE9cltpXSxjPXAodSxhLG8pO3JldHVybiBjJiYoYz1wKE1hdGguZmxvb3IodS9jKSpjLE1hdGguY2VpbChhL2MpKmMsbyksclswXT1NYXRoLmZsb29yKHUvYykqYyxyW2ldPU1hdGguY2VpbChhL2MpKmMsbihyKSksdH0sdH1mdW5jdGlvbiBBbygpe3ZhciB0PWtvKG1vLHJyKTtyZXR1cm4gdC5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIFRvKHQsQW8oKSl9LE5vKHQpfWZ1bmN0aW9uIEVvKCl7ZnVuY3Rpb24gdCh0KXtyZXR1cm4rdH12YXIgbj1bMCwxXTtyZXR1cm4gdC5pbnZlcnQ9dCx0LmRvbWFpbj10LnJhbmdlPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPUJnLmNhbGwoZSxnbyksdCk6bi5zbGljZSgpfSx0LmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gRW8oKS5kb21haW4obil9LE5vKHQpfWZ1bmN0aW9uIENvKHQsbil7dD10LnNsaWNlKCk7dmFyIGUscj0wLGk9dC5sZW5ndGgtMSxvPXRbcl0sdT10W2ldO3JldHVybiB1PG8mJihlPXIscj1pLGk9ZSxlPW8sbz11LHU9ZSksdFtyXT1uLmZsb29yKG8pLHRbaV09bi5jZWlsKHUpLHR9ZnVuY3Rpb24gem8odCxuKXtyZXR1cm4obj1NYXRoLmxvZyhuL3QpKT9mdW5jdGlvbihlKXtyZXR1cm4gTWF0aC5sb2coZS90KS9ufTp5byhuKX1mdW5jdGlvbiBQbyh0LG4pe3JldHVybiB0PDA/ZnVuY3Rpb24oZSl7cmV0dXJuLU1hdGgucG93KC1uLGUpKk1hdGgucG93KC10LDEtZSl9OmZ1bmN0aW9uKGUpe3JldHVybiBNYXRoLnBvdyhuLGUpKk1hdGgucG93KHQsMS1lKX19ZnVuY3Rpb24gcW8odCl7cmV0dXJuIGlzRmluaXRlKHQpPysoIjFlIit0KTp0PDA/MDp0fWZ1bmN0aW9uIExvKHQpe3JldHVybiAxMD09PXQ/cW86dD09PU1hdGguRT9NYXRoLmV4cDpmdW5jdGlvbihuKXtyZXR1cm4gTWF0aC5wb3codCxuKX19ZnVuY3Rpb24gUm8odCl7cmV0dXJuIHQ9PT1NYXRoLkU/TWF0aC5sb2c6MTA9PT10JiZNYXRoLmxvZzEwfHwyPT09dCYmTWF0aC5sb2cyfHwodD1NYXRoLmxvZyh0KSxmdW5jdGlvbihuKXtyZXR1cm4gTWF0aC5sb2cobikvdH0pfWZ1bmN0aW9uIFVvKHQpe3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4tdCgtbil9fWZ1bmN0aW9uIERvKCl7ZnVuY3Rpb24gbigpe3JldHVybiBvPVJvKGkpLHU9TG8oaSkscigpWzBdPDAmJihvPVVvKG8pLHU9VW8odSkpLGV9dmFyIGU9a28oem8sUG8pLmRvbWFpbihbMSwxMF0pLHI9ZS5kb21haW4saT0xMCxvPVJvKDEwKSx1PUxvKDEwKTtyZXR1cm4gZS5iYXNlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPSt0LG4oKSk6aX0sZS5kb21haW49ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHIodCksbigpKTpyKCl9LGUudGlja3M9ZnVuY3Rpb24odCl7dmFyIG4sZT1yKCksYT1lWzBdLGM9ZVtlLmxlbmd0aC0xXTsobj1jPGEpJiYocD1hLGE9YyxjPXApO3ZhciBzLGYsbCxwPW8oYSksZD1vKGMpLHY9bnVsbD09dD8xMDordCxfPVtdO2lmKCEoaSUxKSYmZC1wPHYpe2lmKHA9TWF0aC5yb3VuZChwKS0xLGQ9TWF0aC5yb3VuZChkKSsxLGE+MCl7Zm9yKDtwPGQ7KytwKWZvcihmPTEscz11KHApO2Y8aTsrK2YpaWYobD1zKmYsIShsPGEpKXtpZihsPmMpYnJlYWs7Xy5wdXNoKGwpfX1lbHNlIGZvcig7cDxkOysrcClmb3IoZj1pLTEscz11KHApO2Y+PTE7LS1mKWlmKGw9cypmLCEobDxhKSl7aWYobD5jKWJyZWFrO18ucHVzaChsKX19ZWxzZSBfPWgocCxkLE1hdGgubWluKGQtcCx2KSkubWFwKHUpO3JldHVybiBuP18ucmV2ZXJzZSgpOl99LGUudGlja0Zvcm1hdD1mdW5jdGlvbihuLHIpe2lmKG51bGw9PXImJihyPTEwPT09aT8iLjBlIjoiLCIpLCJmdW5jdGlvbiIhPXR5cGVvZiByJiYocj10LmZvcm1hdChyKSksbj09PTEvMClyZXR1cm4gcjtudWxsPT1uJiYobj0xMCk7dmFyIGE9TWF0aC5tYXgoMSxpKm4vZS50aWNrcygpLmxlbmd0aCk7cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciBuPXQvdShNYXRoLnJvdW5kKG8odCkpKTtyZXR1cm4gbippPGktLjUmJihuKj1pKSxuPD1hP3IodCk6IiJ9fSxlLm5pY2U9ZnVuY3Rpb24oKXtyZXR1cm4gcihDbyhyKCkse2Zsb29yOmZ1bmN0aW9uKHQpe3JldHVybiB1KE1hdGguZmxvb3Iobyh0KSkpfSxjZWlsOmZ1bmN0aW9uKHQpe3JldHVybiB1KE1hdGguY2VpbChvKHQpKSl9fSkpfSxlLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gVG8oZSxEbygpLmJhc2UoaSkpfSxlfWZ1bmN0aW9uIE9vKHQsbil7cmV0dXJuIHQ8MD8tTWF0aC5wb3coLXQsbik6TWF0aC5wb3codCxuKX1mdW5jdGlvbiBGbygpe2Z1bmN0aW9uIHQodCxuKXtyZXR1cm4obj1PbyhuLGUpLSh0PU9vKHQsZSkpKT9mdW5jdGlvbihyKXtyZXR1cm4oT28ocixlKS10KS9ufTp5byhuKX1mdW5jdGlvbiBuKHQsbil7cmV0dXJuIG49T28obixlKS0odD1Pbyh0LGUpKSxmdW5jdGlvbihyKXtyZXR1cm4gT28odCtuKnIsMS9lKX19dmFyIGU9MSxyPWtvKHQsbiksaT1yLmRvbWFpbjtyZXR1cm4gci5leHBvbmVudD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT0rdCxpKGkoKSkpOmV9LHIuY29weT1mdW5jdGlvbigpe3JldHVybiBUbyhyLEZvKCkuZXhwb25lbnQoZSkpfSxObyhyKX1mdW5jdGlvbiBJbygpe3JldHVybiBGbygpLmV4cG9uZW50KC41KX1mdW5jdGlvbiBZbygpe2Z1bmN0aW9uIHQoKXt2YXIgdD0wLG49TWF0aC5tYXgoMSxpLmxlbmd0aCk7Zm9yKG89bmV3IEFycmF5KG4tMSk7Kyt0PG47KW9bdC0xXT1fKHIsdC9uKTtyZXR1cm4gZX1mdW5jdGlvbiBlKHQpe2lmKCFpc05hTih0PSt0KSlyZXR1cm4gaVtDZChvLHQpXX12YXIgcj1bXSxpPVtdLG89W107cmV0dXJuIGUuaW52ZXJ0RXh0ZW50PWZ1bmN0aW9uKHQpe3ZhciBuPWkuaW5kZXhPZih0KTtyZXR1cm4gbjwwP1tOYU4sTmFOXTpbbj4wP29bbi0xXTpyWzBdLG48by5sZW5ndGg/b1tuXTpyW3IubGVuZ3RoLTFdXX0sZS5kb21haW49ZnVuY3Rpb24oZSl7aWYoIWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIHIuc2xpY2UoKTtyPVtdO2Zvcih2YXIgaSxvPTAsdT1lLmxlbmd0aDtvPHU7KytvKWk9ZVtvXSxudWxsPT1pfHxpc05hTihpPStpKXx8ci5wdXNoKGkpO3JldHVybiByLnNvcnQobiksdCgpfSxlLnJhbmdlPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPWpnLmNhbGwobiksdCgpKTppLnNsaWNlKCl9LGUucXVhbnRpbGVzPWZ1bmN0aW9uKCl7cmV0dXJuIG8uc2xpY2UoKX0sZS5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIFlvKCkuZG9tYWluKHIpLnJhbmdlKGkpfSxlfWZ1bmN0aW9uIEJvKCl7ZnVuY3Rpb24gdCh0KXtpZih0PD10KXJldHVybiB1W0NkKG8sdCwwLGkpXX1mdW5jdGlvbiBuKCl7dmFyIG49LTE7Zm9yKG89bmV3IEFycmF5KGkpOysrbjxpOylvW25dPSgobisxKSpyLShuLWkpKmUpLyhpKzEpO3JldHVybiB0fXZhciBlPTAscj0xLGk9MSxvPVsuNV0sdT1bMCwxXTtyZXR1cm4gdC5kb21haW49ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9K3RbMF0scj0rdFsxXSxuKCkpOltlLHJdfSx0LnJhbmdlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPSh1PWpnLmNhbGwodCkpLmxlbmd0aC0xLG4oKSk6dS5zbGljZSgpfSx0LmludmVydEV4dGVudD1mdW5jdGlvbih0KXt2YXIgbj11LmluZGV4T2YodCk7cmV0dXJuIG48MD9bTmFOLE5hTl06bjwxP1tlLG9bMF1dOm4+PWk/W29baS0xXSxyXTpbb1tuLTFdLG9bbl1dfSx0LmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gQm8oKS5kb21haW4oW2Uscl0pLnJhbmdlKHUpfSxObyh0KX1mdW5jdGlvbiBqbygpe2Z1bmN0aW9uIHQodCl7aWYodDw9dClyZXR1cm4gZVtDZChuLHQsMCxyKV19dmFyIG49Wy41XSxlPVswLDFdLHI9MTtyZXR1cm4gdC5kb21haW49ZnVuY3Rpb24oaSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49amcuY2FsbChpKSxyPU1hdGgubWluKG4ubGVuZ3RoLGUubGVuZ3RoLTEpLHQpOm4uc2xpY2UoKX0sdC5yYW5nZT1mdW5jdGlvbihpKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT1qZy5jYWxsKGkpLHI9TWF0aC5taW4obi5sZW5ndGgsZS5sZW5ndGgtMSksdCk6ZS5zbGljZSgpfSx0LmludmVydEV4dGVudD1mdW5jdGlvbih0KXt2YXIgcj1lLmluZGV4T2YodCk7cmV0dXJuW25bci0xXSxuW3JdXX0sdC5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIGpvKCkuZG9tYWluKG4pLnJhbmdlKGUpfSx0fWZ1bmN0aW9uIEhvKHQpe3JldHVybiBuZXcgRGF0ZSh0KX1mdW5jdGlvbiBYbyh0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIERhdGU/K3Q6K25ldyBEYXRlKCt0KX1mdW5jdGlvbiBWbyh0LG4scixpLG8sdSxhLGMscyl7ZnVuY3Rpb24gZihlKXtyZXR1cm4oYShlKTxlP186dShlKTxlP3k6byhlKTxlP2c6aShlKTxlP206bihlKTxlP3IoZSk8ZT94OmI6dChlKTxlP3c6TSkoZSl9ZnVuY3Rpb24gbChuLHIsaSxvKXtpZihudWxsPT1uJiYobj0xMCksIm51bWJlciI9PXR5cGVvZiBuKXt2YXIgdT1NYXRoLmFicyhpLXIpL24sYT1lKGZ1bmN0aW9uKHQpe3JldHVybiB0WzJdfSkucmlnaHQoVCx1KTthPT09VC5sZW5ndGg/KG89cChyL1FnLGkvUWcsbiksbj10KTphPyhhPVRbdS9UW2EtMV1bMl08VFthXVsyXS91P2EtMTphXSxvPWFbMV0sbj1hWzBdKToobz1wKHIsaSxuKSxuPWMpfXJldHVybiBudWxsPT1vP246bi5ldmVyeShvKX12YXIgaD1rbyhtbyxyciksZD1oLmludmVydCx2PWguZG9tYWluLF89cygiLiVMIikseT1zKCI6JVMiKSxnPXMoIiVJOiVNIiksbT1zKCIlSSAlcCIpLHg9cygiJWEgJWQiKSxiPXMoIiViICVkIiksdz1zKCIlQiIpLE09cygiJVkiKSxUPVtbYSwxLFZnXSxbYSw1LDUqVmddLFthLDE1LDE1KlZnXSxbYSwzMCwzMCpWZ10sW3UsMSxXZ10sW3UsNSw1KldnXSxbdSwxNSwxNSpXZ10sW3UsMzAsMzAqV2ddLFtvLDEsJGddLFtvLDMsMyokZ10sW28sNiw2KiRnXSxbbywxMiwxMiokZ10sW2ksMSxaZ10sW2ksMiwyKlpnXSxbciwxLEdnXSxbbiwxLEpnXSxbbiwzLDMqSmddLFt0LDEsUWddXTtyZXR1cm4gaC5pbnZlcnQ9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBEYXRlKGQodCkpfSxoLmRvbWFpbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD92KEJnLmNhbGwodCxYbykpOnYoKS5tYXAoSG8pfSxoLnRpY2tzPWZ1bmN0aW9uKHQsbil7dmFyIGUscj12KCksaT1yWzBdLG89cltyLmxlbmd0aC0xXSx1PW88aTtyZXR1cm4gdSYmKGU9aSxpPW8sbz1lKSxlPWwodCxpLG8sbiksZT1lP2UucmFuZ2UoaSxvKzEpOltdLHU/ZS5yZXZlcnNlKCk6ZX0saC50aWNrRm9ybWF0PWZ1bmN0aW9uKHQsbil7cmV0dXJuIG51bGw9PW4/ZjpzKG4pfSxoLm5pY2U9ZnVuY3Rpb24odCxuKXt2YXIgZT12KCk7cmV0dXJuKHQ9bCh0LGVbMF0sZVtlLmxlbmd0aC0xXSxuKSk/dihDbyhlLHQpKTpofSxoLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gVG8oaCxWbyh0LG4scixpLG8sdSxhLGMscykpfSxofWZ1bmN0aW9uIFdvKCl7cmV0dXJuIFZvKGVnLHRnLEl5LE95LFV5LEx5LFB5LGt5LHQudGltZUZvcm1hdCkuZG9tYWluKFtuZXcgRGF0ZSgyZTMsMCwxKSxuZXcgRGF0ZSgyZTMsMCwyKV0pfWZ1bmN0aW9uICRvKCl7cmV0dXJuIFZvKFNnLFRnLGZnLGNnLHVnLGlnLFB5LGt5LHQudXRjRm9ybWF0KS5kb21haW4oW0RhdGUuVVRDKDJlMywwLDEpLERhdGUuVVRDKDJlMywwLDIpXSl9ZnVuY3Rpb24gWm8odCl7cmV0dXJuIHQubWF0Y2goLy57Nn0vZykubWFwKGZ1bmN0aW9uKHQpe3JldHVybiIjIit0fSl9ZnVuY3Rpb24gR28odCl7KHQ8MHx8dD4xKSYmKHQtPU1hdGguZmxvb3IodCkpO3ZhciBuPU1hdGguYWJzKHQtLjUpO3JldHVybiB1bS5oPTM2MCp0LTEwMCx1bS5zPTEuNS0xLjUqbix1bS5sPS44LS45Km4sdW0rIiJ9ZnVuY3Rpb24gSm8odCl7dmFyIG49dC5sZW5ndGg7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiB0W01hdGgubWF4KDAsTWF0aC5taW4obi0xLE1hdGguZmxvb3IoZSpuKSkpXX19ZnVuY3Rpb24gUW8odCl7ZnVuY3Rpb24gbihuKXt2YXIgbz0obi1lKS8oci1lKTtyZXR1cm4gdChpP01hdGgubWF4KDAsTWF0aC5taW4oMSxvKSk6byl9dmFyIGU9MCxyPTEsaT0hMTtyZXR1cm4gbi5kb21haW49ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9K3RbMF0scj0rdFsxXSxuKTpbZSxyXX0sbi5jbGFtcD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0hIXQsbik6aX0sbi5pbnRlcnBvbGF0b3I9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ZSxuKTp0fSxuLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gUW8odCkuZG9tYWluKFtlLHJdKS5jbGFtcChpKX0sTm8obil9ZnVuY3Rpb24gS28odCl7dmFyIG49dCs9IiIsZT1uLmluZGV4T2YoIjoiKTtyZXR1cm4gZT49MCYmInhtbG5zIiE9PShuPXQuc2xpY2UoMCxlKSkmJih0PXQuc2xpY2UoZSsxKSksaG0uaGFzT3duUHJvcGVydHkobik/e3NwYWNlOmhtW25dLGxvY2FsOnR9OnR9ZnVuY3Rpb24gdHUodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG49dGhpcy5vd25lckRvY3VtZW50LGU9dGhpcy5uYW1lc3BhY2VVUkk7cmV0dXJuIGU9PT1sbSYmbi5kb2N1bWVudEVsZW1lbnQubmFtZXNwYWNlVVJJPT09bG0/bi5jcmVhdGVFbGVtZW50KHQpOm4uY3JlYXRlRWxlbWVudE5TKGUsdCl9fWZ1bmN0aW9uIG51KHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0aGlzLm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHQuc3BhY2UsdC5sb2NhbCl9fWZ1bmN0aW9uIGV1KHQpe3ZhciBuPUtvKHQpO3JldHVybihuLmxvY2FsP251OnR1KShuKX1mdW5jdGlvbiBydSgpe3JldHVybiBuZXcgaXV9ZnVuY3Rpb24gaXUoKXt0aGlzLl89IkAiKygrK3BtKS50b1N0cmluZygzNil9ZnVuY3Rpb24gb3UodCxuLGUpe3JldHVybiB0PXV1KHQsbixlKSxmdW5jdGlvbihuKXt2YXIgZT1uLnJlbGF0ZWRUYXJnZXQ7ZSYmKGU9PT10aGlzfHw4JmUuY29tcGFyZURvY3VtZW50UG9zaXRpb24odGhpcykpfHx0LmNhbGwodGhpcyxuKX19ZnVuY3Rpb24gdXUobixlLHIpe3JldHVybiBmdW5jdGlvbihpKXt2YXIgbz10LmV2ZW50O3QuZXZlbnQ9aTt0cnl7bi5jYWxsKHRoaXMsdGhpcy5fX2RhdGFfXyxlLHIpfWZpbmFsbHl7dC5ldmVudD1vfX19ZnVuY3Rpb24gYXUodCl7cmV0dXJuIHQudHJpbSgpLnNwbGl0KC9efFxzKy8pLm1hcChmdW5jdGlvbih0KXt2YXIgbj0iIixlPXQuaW5kZXhPZigiLiIpO3JldHVybiBlPj0wJiYobj10LnNsaWNlKGUrMSksdD10LnNsaWNlKDAsZSkpLAp7dHlwZTp0LG5hbWU6bn19KX1mdW5jdGlvbiBjdSh0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbj10aGlzLl9fb247aWYobil7Zm9yKHZhciBlLHI9MCxpPS0xLG89bi5sZW5ndGg7cjxvOysrcillPW5bcl0sdC50eXBlJiZlLnR5cGUhPT10LnR5cGV8fGUubmFtZSE9PXQubmFtZT9uWysraV09ZTp0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIoZS50eXBlLGUubGlzdGVuZXIsZS5jYXB0dXJlKTsrK2k/bi5sZW5ndGg9aTpkZWxldGUgdGhpcy5fX29ufX19ZnVuY3Rpb24gc3UodCxuLGUpe3ZhciByPWdtLmhhc093blByb3BlcnR5KHQudHlwZSk/b3U6dXU7cmV0dXJuIGZ1bmN0aW9uKGksbyx1KXt2YXIgYSxjPXRoaXMuX19vbixzPXIobixvLHUpO2lmKGMpZm9yKHZhciBmPTAsbD1jLmxlbmd0aDtmPGw7KytmKWlmKChhPWNbZl0pLnR5cGU9PT10LnR5cGUmJmEubmFtZT09PXQubmFtZSlyZXR1cm4gdGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKGEudHlwZSxhLmxpc3RlbmVyLGEuY2FwdHVyZSksdGhpcy5hZGRFdmVudExpc3RlbmVyKGEudHlwZSxhLmxpc3RlbmVyPXMsYS5jYXB0dXJlPWUpLHZvaWQoYS52YWx1ZT1uKTt0aGlzLmFkZEV2ZW50TGlzdGVuZXIodC50eXBlLHMsZSksYT17dHlwZTp0LnR5cGUsbmFtZTp0Lm5hbWUsdmFsdWU6bixsaXN0ZW5lcjpzLGNhcHR1cmU6ZX0sYz9jLnB1c2goYSk6dGhpcy5fX29uPVthXX19ZnVuY3Rpb24gZnUodCxuLGUpe3ZhciByLGksbz1hdSh0KyIiKSx1PW8ubGVuZ3RoO3tpZighKGFyZ3VtZW50cy5sZW5ndGg8Mikpe2ZvcihhPW4/c3U6Y3UsbnVsbD09ZSYmKGU9ITEpLHI9MDtyPHU7KytyKXRoaXMuZWFjaChhKG9bcl0sbixlKSk7cmV0dXJuIHRoaXN9dmFyIGE9dGhpcy5ub2RlKCkuX19vbjtpZihhKWZvcih2YXIgYyxzPTAsZj1hLmxlbmd0aDtzPGY7KytzKWZvcihyPTAsYz1hW3NdO3I8dTsrK3IpaWYoKGk9b1tyXSkudHlwZT09PWMudHlwZSYmaS5uYW1lPT09Yy5uYW1lKXJldHVybiBjLnZhbHVlfX1mdW5jdGlvbiBsdShuLGUscixpKXt2YXIgbz10LmV2ZW50O24uc291cmNlRXZlbnQ9dC5ldmVudCx0LmV2ZW50PW47dHJ5e3JldHVybiBlLmFwcGx5KHIsaSl9ZmluYWxseXt0LmV2ZW50PW99fWZ1bmN0aW9uIGh1KCl7Zm9yKHZhciBuLGU9dC5ldmVudDtuPWUuc291cmNlRXZlbnQ7KWU9bjtyZXR1cm4gZX1mdW5jdGlvbiBwdSh0LG4pe3ZhciBlPXQub3duZXJTVkdFbGVtZW50fHx0O2lmKGUuY3JlYXRlU1ZHUG9pbnQpe3ZhciByPWUuY3JlYXRlU1ZHUG9pbnQoKTtyZXR1cm4gci54PW4uY2xpZW50WCxyLnk9bi5jbGllbnRZLHI9ci5tYXRyaXhUcmFuc2Zvcm0odC5nZXRTY3JlZW5DVE0oKS5pbnZlcnNlKCkpLFtyLngsci55XX12YXIgaT10LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3JldHVybltuLmNsaWVudFgtaS5sZWZ0LXQuY2xpZW50TGVmdCxuLmNsaWVudFktaS50b3AtdC5jbGllbnRUb3BdfWZ1bmN0aW9uIGR1KHQpe3ZhciBuPWh1KCk7cmV0dXJuIG4uY2hhbmdlZFRvdWNoZXMmJihuPW4uY2hhbmdlZFRvdWNoZXNbMF0pLHB1KHQsbil9ZnVuY3Rpb24gdnUoKXt9ZnVuY3Rpb24gX3UodCl7cmV0dXJuIG51bGw9PXQ/dnU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5xdWVyeVNlbGVjdG9yKHQpfX1mdW5jdGlvbiB5dSh0KXsiZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9X3UodCkpO2Zvcih2YXIgbj10aGlzLl9ncm91cHMsZT1uLmxlbmd0aCxyPW5ldyBBcnJheShlKSxpPTA7aTxlOysraSlmb3IodmFyIG8sdSxhPW5baV0sYz1hLmxlbmd0aCxzPXJbaV09bmV3IEFycmF5KGMpLGY9MDtmPGM7KytmKShvPWFbZl0pJiYodT10LmNhbGwobyxvLl9fZGF0YV9fLGYsYSkpJiYoIl9fZGF0YV9fImluIG8mJih1Ll9fZGF0YV9fPW8uX19kYXRhX18pLHNbZl09dSk7cmV0dXJuIG5ldyBxYShyLHRoaXMuX3BhcmVudHMpfWZ1bmN0aW9uIGd1KCl7cmV0dXJuW119ZnVuY3Rpb24gbXUodCl7cmV0dXJuIG51bGw9PXQ/Z3U6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5xdWVyeVNlbGVjdG9yQWxsKHQpfX1mdW5jdGlvbiB4dSh0KXsiZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9bXUodCkpO2Zvcih2YXIgbj10aGlzLl9ncm91cHMsZT1uLmxlbmd0aCxyPVtdLGk9W10sbz0wO288ZTsrK28pZm9yKHZhciB1LGE9bltvXSxjPWEubGVuZ3RoLHM9MDtzPGM7KytzKSh1PWFbc10pJiYoci5wdXNoKHQuY2FsbCh1LHUuX19kYXRhX18scyxhKSksaS5wdXNoKHUpKTtyZXR1cm4gbmV3IHFhKHIsaSl9ZnVuY3Rpb24gYnUodCl7ImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PXltKHQpKTtmb3IodmFyIG49dGhpcy5fZ3JvdXBzLGU9bi5sZW5ndGgscj1uZXcgQXJyYXkoZSksaT0wO2k8ZTsrK2kpZm9yKHZhciBvLHU9bltpXSxhPXUubGVuZ3RoLGM9cltpXT1bXSxzPTA7czxhOysrcykobz11W3NdKSYmdC5jYWxsKG8sby5fX2RhdGFfXyxzLHUpJiZjLnB1c2gobyk7cmV0dXJuIG5ldyBxYShyLHRoaXMuX3BhcmVudHMpfWZ1bmN0aW9uIHd1KHQpe3JldHVybiBuZXcgQXJyYXkodC5sZW5ndGgpfWZ1bmN0aW9uIE11KCl7cmV0dXJuIG5ldyBxYSh0aGlzLl9lbnRlcnx8dGhpcy5fZ3JvdXBzLm1hcCh3dSksdGhpcy5fcGFyZW50cyl9ZnVuY3Rpb24gVHUodCxuKXt0aGlzLm93bmVyRG9jdW1lbnQ9dC5vd25lckRvY3VtZW50LHRoaXMubmFtZXNwYWNlVVJJPXQubmFtZXNwYWNlVVJJLHRoaXMuX25leHQ9bnVsbCx0aGlzLl9wYXJlbnQ9dCx0aGlzLl9fZGF0YV9fPW59ZnVuY3Rpb24ga3UodCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fWZ1bmN0aW9uIFN1KHQsbixlLHIsaSxvKXtmb3IodmFyIHUsYT0wLGM9bi5sZW5ndGgscz1vLmxlbmd0aDthPHM7KythKSh1PW5bYV0pPyh1Ll9fZGF0YV9fPW9bYV0sclthXT11KTplW2FdPW5ldyBUdSh0LG9bYV0pO2Zvcig7YTxjOysrYSkodT1uW2FdKSYmKGlbYV09dSl9ZnVuY3Rpb24gTnUodCxuLGUscixpLG8sdSl7dmFyIGEsYyxzLGY9e30sbD1uLmxlbmd0aCxoPW8ubGVuZ3RoLHA9bmV3IEFycmF5KGwpO2ZvcihhPTA7YTxsOysrYSkoYz1uW2FdKSYmKHBbYV09cz14bSt1LmNhbGwoYyxjLl9fZGF0YV9fLGEsbikscyBpbiBmP2lbYV09YzpmW3NdPWMpO2ZvcihhPTA7YTxoOysrYSlzPXhtK3UuY2FsbCh0LG9bYV0sYSxvKSwoYz1mW3NdKT8oclthXT1jLGMuX19kYXRhX189b1thXSxmW3NdPW51bGwpOmVbYV09bmV3IFR1KHQsb1thXSk7Zm9yKGE9MDthPGw7KythKShjPW5bYV0pJiZmW3BbYV1dPT09YyYmKGlbYV09Yyl9ZnVuY3Rpb24gQXUodCxuKXtpZighdClyZXR1cm4gcD1uZXcgQXJyYXkodGhpcy5zaXplKCkpLHM9LTEsdGhpcy5lYWNoKGZ1bmN0aW9uKHQpe3BbKytzXT10fSkscDt2YXIgZT1uP051OlN1LHI9dGhpcy5fcGFyZW50cyxpPXRoaXMuX2dyb3VwczsiZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9a3UodCkpO2Zvcih2YXIgbz1pLmxlbmd0aCx1PW5ldyBBcnJheShvKSxhPW5ldyBBcnJheShvKSxjPW5ldyBBcnJheShvKSxzPTA7czxvOysrcyl7dmFyIGY9cltzXSxsPWlbc10saD1sLmxlbmd0aCxwPXQuY2FsbChmLGYmJmYuX19kYXRhX18scyxyKSxkPXAubGVuZ3RoLHY9YVtzXT1uZXcgQXJyYXkoZCksXz11W3NdPW5ldyBBcnJheShkKSx5PWNbc109bmV3IEFycmF5KGgpO2UoZixsLHYsXyx5LHAsbik7Zm9yKHZhciBnLG0seD0wLGI9MDt4PGQ7Kyt4KWlmKGc9dlt4XSl7Zm9yKHg+PWImJihiPXgrMSk7IShtPV9bYl0pJiYrK2I8ZDspO2cuX25leHQ9bXx8bnVsbH19cmV0dXJuIHU9bmV3IHFhKHUsciksdS5fZW50ZXI9YSx1Ll9leGl0PWMsdX1mdW5jdGlvbiBFdSgpe3JldHVybiBuZXcgcWEodGhpcy5fZXhpdHx8dGhpcy5fZ3JvdXBzLm1hcCh3dSksdGhpcy5fcGFyZW50cyl9ZnVuY3Rpb24gQ3UodCl7Zm9yKHZhciBuPXRoaXMuX2dyb3VwcyxlPXQuX2dyb3VwcyxyPW4ubGVuZ3RoLGk9ZS5sZW5ndGgsbz1NYXRoLm1pbihyLGkpLHU9bmV3IEFycmF5KHIpLGE9MDthPG87KythKWZvcih2YXIgYyxzPW5bYV0sZj1lW2FdLGw9cy5sZW5ndGgsaD11W2FdPW5ldyBBcnJheShsKSxwPTA7cDxsOysrcCkoYz1zW3BdfHxmW3BdKSYmKGhbcF09Yyk7Zm9yKDthPHI7KythKXVbYV09blthXTtyZXR1cm4gbmV3IHFhKHUsdGhpcy5fcGFyZW50cyl9ZnVuY3Rpb24genUoKXtmb3IodmFyIHQ9dGhpcy5fZ3JvdXBzLG49LTEsZT10Lmxlbmd0aDsrK248ZTspZm9yKHZhciByLGk9dFtuXSxvPWkubGVuZ3RoLTEsdT1pW29dOy0tbz49MDspKHI9aVtvXSkmJih1JiZ1IT09ci5uZXh0U2libGluZyYmdS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShyLHUpLHU9cik7cmV0dXJuIHRoaXN9ZnVuY3Rpb24gUHUodCl7ZnVuY3Rpb24gbihuLGUpe3JldHVybiBuJiZlP3Qobi5fX2RhdGFfXyxlLl9fZGF0YV9fKTohbi0hZX10fHwodD1xdSk7Zm9yKHZhciBlPXRoaXMuX2dyb3VwcyxyPWUubGVuZ3RoLGk9bmV3IEFycmF5KHIpLG89MDtvPHI7KytvKXtmb3IodmFyIHUsYT1lW29dLGM9YS5sZW5ndGgscz1pW29dPW5ldyBBcnJheShjKSxmPTA7ZjxjOysrZikodT1hW2ZdKSYmKHNbZl09dSk7cy5zb3J0KG4pfXJldHVybiBuZXcgcWEoaSx0aGlzLl9wYXJlbnRzKS5vcmRlcigpfWZ1bmN0aW9uIHF1KHQsbil7cmV0dXJuIHQ8bj8tMTp0Pm4/MTp0Pj1uPzA6TmFOfWZ1bmN0aW9uIEx1KCl7dmFyIHQ9YXJndW1lbnRzWzBdO3JldHVybiBhcmd1bWVudHNbMF09dGhpcyx0LmFwcGx5KG51bGwsYXJndW1lbnRzKSx0aGlzfWZ1bmN0aW9uIFJ1KCl7dmFyIHQ9bmV3IEFycmF5KHRoaXMuc2l6ZSgpKSxuPS0xO3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt0Wysrbl09dGhpc30pLHR9ZnVuY3Rpb24gVXUoKXtmb3IodmFyIHQ9dGhpcy5fZ3JvdXBzLG49MCxlPXQubGVuZ3RoO248ZTsrK24pZm9yKHZhciByPXRbbl0saT0wLG89ci5sZW5ndGg7aTxvOysraSl7dmFyIHU9cltpXTtpZih1KXJldHVybiB1fXJldHVybiBudWxsfWZ1bmN0aW9uIER1KCl7dmFyIHQ9MDtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7Kyt0fSksdH1mdW5jdGlvbiBPdSgpe3JldHVybiF0aGlzLm5vZGUoKX1mdW5jdGlvbiBGdSh0KXtmb3IodmFyIG49dGhpcy5fZ3JvdXBzLGU9MCxyPW4ubGVuZ3RoO2U8cjsrK2UpZm9yKHZhciBpLG89bltlXSx1PTAsYT1vLmxlbmd0aDt1PGE7Kyt1KShpPW9bdV0pJiZ0LmNhbGwoaSxpLl9fZGF0YV9fLHUsbyk7cmV0dXJuIHRoaXN9ZnVuY3Rpb24gSXUodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5yZW1vdmVBdHRyaWJ1dGUodCl9fWZ1bmN0aW9uIFl1KHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMucmVtb3ZlQXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsKX19ZnVuY3Rpb24gQnUodCxuKXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnNldEF0dHJpYnV0ZSh0LG4pfX1mdW5jdGlvbiBqdSh0LG4pe3JldHVybiBmdW5jdGlvbigpe3RoaXMuc2V0QXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsLG4pfX1mdW5jdGlvbiBIdSh0LG4pe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPW4uYXBwbHkodGhpcyxhcmd1bWVudHMpO251bGw9PWU/dGhpcy5yZW1vdmVBdHRyaWJ1dGUodCk6dGhpcy5zZXRBdHRyaWJ1dGUodCxlKX19ZnVuY3Rpb24gWHUodCxuKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT1uLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtudWxsPT1lP3RoaXMucmVtb3ZlQXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsKTp0aGlzLnNldEF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCxlKX19ZnVuY3Rpb24gVnUodCxuKXt2YXIgZT1Lbyh0KTtpZihhcmd1bWVudHMubGVuZ3RoPDIpe3ZhciByPXRoaXMubm9kZSgpO3JldHVybiBlLmxvY2FsP3IuZ2V0QXR0cmlidXRlTlMoZS5zcGFjZSxlLmxvY2FsKTpyLmdldEF0dHJpYnV0ZShlKX1yZXR1cm4gdGhpcy5lYWNoKChudWxsPT1uP2UubG9jYWw/WXU6SXU6ImZ1bmN0aW9uIj09dHlwZW9mIG4/ZS5sb2NhbD9YdTpIdTplLmxvY2FsP2p1OkJ1KShlLG4pKX1mdW5jdGlvbiBXdSh0KXtyZXR1cm4gdC5vd25lckRvY3VtZW50JiZ0Lm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXd8fHQuZG9jdW1lbnQmJnR8fHQuZGVmYXVsdFZpZXd9ZnVuY3Rpb24gJHUodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eSh0KX19ZnVuY3Rpb24gWnUodCxuLGUpe3JldHVybiBmdW5jdGlvbigpe3RoaXMuc3R5bGUuc2V0UHJvcGVydHkodCxuLGUpfX1mdW5jdGlvbiBHdSh0LG4sZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHI9bi5hcHBseSh0aGlzLGFyZ3VtZW50cyk7bnVsbD09cj90aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KHQpOnRoaXMuc3R5bGUuc2V0UHJvcGVydHkodCxyLGUpfX1mdW5jdGlvbiBKdSh0LG4sZSl7dmFyIHI7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg+MT90aGlzLmVhY2goKG51bGw9PW4/JHU6ImZ1bmN0aW9uIj09dHlwZW9mIG4/R3U6WnUpKHQsbixudWxsPT1lPyIiOmUpKTpXdShyPXRoaXMubm9kZSgpKS5nZXRDb21wdXRlZFN0eWxlKHIsbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSh0KX1mdW5jdGlvbiBRdSh0KXtyZXR1cm4gZnVuY3Rpb24oKXtkZWxldGUgdGhpc1t0XX19ZnVuY3Rpb24gS3UodCxuKXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzW3RdPW59fWZ1bmN0aW9uIHRhKHQsbil7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9bi5hcHBseSh0aGlzLGFyZ3VtZW50cyk7bnVsbD09ZT9kZWxldGUgdGhpc1t0XTp0aGlzW3RdPWV9fWZ1bmN0aW9uIG5hKHQsbil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg+MT90aGlzLmVhY2goKG51bGw9PW4/UXU6ImZ1bmN0aW9uIj09dHlwZW9mIG4/dGE6S3UpKHQsbikpOnRoaXMubm9kZSgpW3RdfWZ1bmN0aW9uIGVhKHQpe3JldHVybiB0LnRyaW0oKS5zcGxpdCgvXnxccysvKX1mdW5jdGlvbiByYSh0KXtyZXR1cm4gdC5jbGFzc0xpc3R8fG5ldyBpYSh0KX1mdW5jdGlvbiBpYSh0KXt0aGlzLl9ub2RlPXQsdGhpcy5fbmFtZXM9ZWEodC5nZXRBdHRyaWJ1dGUoImNsYXNzIil8fCIiKX1mdW5jdGlvbiBvYSh0LG4pe2Zvcih2YXIgZT1yYSh0KSxyPS0xLGk9bi5sZW5ndGg7KytyPGk7KWUuYWRkKG5bcl0pfWZ1bmN0aW9uIHVhKHQsbil7Zm9yKHZhciBlPXJhKHQpLHI9LTEsaT1uLmxlbmd0aDsrK3I8aTspZS5yZW1vdmUobltyXSl9ZnVuY3Rpb24gYWEodCl7cmV0dXJuIGZ1bmN0aW9uKCl7b2EodGhpcyx0KX19ZnVuY3Rpb24gY2EodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dWEodGhpcyx0KX19ZnVuY3Rpb24gc2EodCxuKXtyZXR1cm4gZnVuY3Rpb24oKXsobi5hcHBseSh0aGlzLGFyZ3VtZW50cyk/b2E6dWEpKHRoaXMsdCl9fWZ1bmN0aW9uIGZhKHQsbil7dmFyIGU9ZWEodCsiIik7aWYoYXJndW1lbnRzLmxlbmd0aDwyKXtmb3IodmFyIHI9cmEodGhpcy5ub2RlKCkpLGk9LTEsbz1lLmxlbmd0aDsrK2k8bzspaWYoIXIuY29udGFpbnMoZVtpXSkpcmV0dXJuITE7cmV0dXJuITB9cmV0dXJuIHRoaXMuZWFjaCgoImZ1bmN0aW9uIj09dHlwZW9mIG4/c2E6bj9hYTpjYSkoZSxuKSl9ZnVuY3Rpb24gbGEoKXt0aGlzLnRleHRDb250ZW50PSIifWZ1bmN0aW9uIGhhKHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMudGV4dENvbnRlbnQ9dH19ZnVuY3Rpb24gcGEodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG49dC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dGhpcy50ZXh0Q29udGVudD1udWxsPT1uPyIiOm59fWZ1bmN0aW9uIGRhKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMuZWFjaChudWxsPT10P2xhOigiZnVuY3Rpb24iPT10eXBlb2YgdD9wYTpoYSkodCkpOnRoaXMubm9kZSgpLnRleHRDb250ZW50fWZ1bmN0aW9uIHZhKCl7dGhpcy5pbm5lckhUTUw9IiJ9ZnVuY3Rpb24gX2EodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5pbm5lckhUTUw9dH19ZnVuY3Rpb24geWEodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG49dC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dGhpcy5pbm5lckhUTUw9bnVsbD09bj8iIjpufX1mdW5jdGlvbiBnYSh0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLmVhY2gobnVsbD09dD92YTooImZ1bmN0aW9uIj09dHlwZW9mIHQ/eWE6X2EpKHQpKTp0aGlzLm5vZGUoKS5pbm5lckhUTUx9ZnVuY3Rpb24gbWEoKXt0aGlzLm5leHRTaWJsaW5nJiZ0aGlzLnBhcmVudE5vZGUuYXBwZW5kQ2hpbGQodGhpcyl9ZnVuY3Rpb24geGEoKXtyZXR1cm4gdGhpcy5lYWNoKG1hKX1mdW5jdGlvbiBiYSgpe3RoaXMucHJldmlvdXNTaWJsaW5nJiZ0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHRoaXMsdGhpcy5wYXJlbnROb2RlLmZpcnN0Q2hpbGQpfWZ1bmN0aW9uIHdhKCl7cmV0dXJuIHRoaXMuZWFjaChiYSl9ZnVuY3Rpb24gTWEodCl7dmFyIG49ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpldSh0KTtyZXR1cm4gdGhpcy5zZWxlY3QoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hcHBlbmRDaGlsZChuLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9KX1mdW5jdGlvbiBUYSgpe3JldHVybiBudWxsfWZ1bmN0aW9uIGthKHQsbil7dmFyIGU9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpldSh0KSxyPW51bGw9PW4/VGE6ImZ1bmN0aW9uIj09dHlwZW9mIG4/bjpfdShuKTtyZXR1cm4gdGhpcy5zZWxlY3QoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbnNlcnRCZWZvcmUoZS5hcHBseSh0aGlzLGFyZ3VtZW50cyksci5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fG51bGwpfSl9ZnVuY3Rpb24gU2EoKXt2YXIgdD10aGlzLnBhcmVudE5vZGU7dCYmdC5yZW1vdmVDaGlsZCh0aGlzKX1mdW5jdGlvbiBOYSgpe3JldHVybiB0aGlzLmVhY2goU2EpfWZ1bmN0aW9uIEFhKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMucHJvcGVydHkoIl9fZGF0YV9fIix0KTp0aGlzLm5vZGUoKS5fX2RhdGFfX31mdW5jdGlvbiBFYSh0LG4sZSl7dmFyIHI9V3UodCksaT1yLkN1c3RvbUV2ZW50O2k/aT1uZXcgaShuLGUpOihpPXIuZG9jdW1lbnQuY3JlYXRlRXZlbnQoIkV2ZW50IiksZT8oaS5pbml0RXZlbnQobixlLmJ1YmJsZXMsZS5jYW5jZWxhYmxlKSxpLmRldGFpbD1lLmRldGFpbCk6aS5pbml0RXZlbnQobiwhMSwhMSkpLHQuZGlzcGF0Y2hFdmVudChpKX1mdW5jdGlvbiBDYSh0LG4pe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBFYSh0aGlzLHQsbil9fWZ1bmN0aW9uIHphKHQsbil7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIEVhKHRoaXMsdCxuLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9fWZ1bmN0aW9uIFBhKHQsbil7cmV0dXJuIHRoaXMuZWFjaCgoImZ1bmN0aW9uIj09dHlwZW9mIG4/emE6Q2EpKHQsbikpfWZ1bmN0aW9uIHFhKHQsbil7dGhpcy5fZ3JvdXBzPXQsdGhpcy5fcGFyZW50cz1ufWZ1bmN0aW9uIExhKCl7cmV0dXJuIG5ldyBxYShbW2RvY3VtZW50LmRvY3VtZW50RWxlbWVudF1dLGJtKX1mdW5jdGlvbiBSYSh0KXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHQ/bmV3IHFhKFtbZG9jdW1lbnQucXVlcnlTZWxlY3Rvcih0KV1dLFtkb2N1bWVudC5kb2N1bWVudEVsZW1lbnRdKTpuZXcgcWEoW1t0XV0sYm0pfWZ1bmN0aW9uIFVhKHQpe3JldHVybiJzdHJpbmciPT10eXBlb2YgdD9uZXcgcWEoW2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwodCldLFtkb2N1bWVudC5kb2N1bWVudEVsZW1lbnRdKTpuZXcgcWEoW251bGw9PXQ/W106dF0sYm0pfWZ1bmN0aW9uIERhKHQsbixlKXthcmd1bWVudHMubGVuZ3RoPDMmJihlPW4sbj1odSgpLmNoYW5nZWRUb3VjaGVzKTtmb3IodmFyIHIsaT0wLG89bj9uLmxlbmd0aDowO2k8bzsrK2kpaWYoKHI9bltpXSkuaWRlbnRpZmllcj09PWUpcmV0dXJuIHB1KHQscik7cmV0dXJuIG51bGx9ZnVuY3Rpb24gT2EodCxuKXtudWxsPT1uJiYobj1odSgpLnRvdWNoZXMpO2Zvcih2YXIgZT0wLHI9bj9uLmxlbmd0aDowLGk9bmV3IEFycmF5KHIpO2U8cjsrK2UpaVtlXT1wdSh0LG5bZV0pO3JldHVybiBpfWZ1bmN0aW9uIEZhKHQsbixlLHIsaSxvKXt2YXIgdT10Ll9fdHJhbnNpdGlvbjtpZih1KXtpZihlIGluIHUpcmV0dXJufWVsc2UgdC5fX3RyYW5zaXRpb249e307amEodCxlLHtuYW1lOm4saW5kZXg6cixncm91cDppLG9uOndtLHR3ZWVuOk1tLHRpbWU6by50aW1lLGRlbGF5Om8uZGVsYXksZHVyYXRpb246by5kdXJhdGlvbixlYXNlOm8uZWFzZSx0aW1lcjpudWxsLHN0YXRlOlRtfSl9ZnVuY3Rpb24gSWEodCxuKXt2YXIgZT10Ll9fdHJhbnNpdGlvbjtpZighZXx8IShlPWVbbl0pfHxlLnN0YXRlPlRtKXRocm93IG5ldyBFcnJvcigidG9vIGxhdGUiKTtyZXR1cm4gZX1mdW5jdGlvbiBZYSh0LG4pe3ZhciBlPXQuX190cmFuc2l0aW9uO2lmKCFlfHwhKGU9ZVtuXSl8fGUuc3RhdGU+U20pdGhyb3cgbmV3IEVycm9yKCJ0b28gbGF0ZSIpO3JldHVybiBlfWZ1bmN0aW9uIEJhKHQsbil7dmFyIGU9dC5fX3RyYW5zaXRpb247aWYoIWV8fCEoZT1lW25dKSl0aHJvdyBuZXcgRXJyb3IoInRvbyBsYXRlIik7cmV0dXJuIGV9ZnVuY3Rpb24gamEodCxuLGUpe2Z1bmN0aW9uIHIodCl7ZS5zdGF0ZT1rbSxlLmRlbGF5PD10P2kodC1lLmRlbGF5KTplLnRpbWVyLnJlc3RhcnQoaSxlLmRlbGF5LGUudGltZSl9ZnVuY3Rpb24gaShyKXt2YXIgaSxjLHMsZjtmb3IoaSBpbiBhKWY9YVtpXSxmLm5hbWU9PT1lLm5hbWUmJihmLnN0YXRlPT09Tm0/KGYuc3RhdGU9RW0sZi50aW1lci5zdG9wKCksZi5vbi5jYWxsKCJpbnRlcnJ1cHQiLHQsdC5fX2RhdGFfXyxmLmluZGV4LGYuZ3JvdXApLGRlbGV0ZSBhW2ldKToraTxuJiYoZi5zdGF0ZT1FbSxmLnRpbWVyLnN0b3AoKSxkZWxldGUgYVtpXSkpO2lmKFdyKGZ1bmN0aW9uKCl7ZS5zdGF0ZT09PU5tJiYoZS50aW1lci5yZXN0YXJ0KG8sZS5kZWxheSxlLnRpbWUpLG8ocikpfSksZS5zdGF0ZT1TbSxlLm9uLmNhbGwoInN0YXJ0Iix0LHQuX19kYXRhX18sZS5pbmRleCxlLmdyb3VwKSxlLnN0YXRlPT09U20pe2ZvcihlLnN0YXRlPU5tLHU9bmV3IEFycmF5KHM9ZS50d2Vlbi5sZW5ndGgpLGk9MCxjPS0xO2k8czsrK2kpKGY9ZS50d2VlbltpXS52YWx1ZS5jYWxsKHQsdC5fX2RhdGFfXyxlLmluZGV4LGUuZ3JvdXApKSYmKHVbKytjXT1mKTt1Lmxlbmd0aD1jKzF9fWZ1bmN0aW9uIG8ocil7Zm9yKHZhciBpPXI8ZS5kdXJhdGlvbj9lLmVhc2UuY2FsbChudWxsLHIvZS5kdXJhdGlvbik6KGUuc3RhdGU9QW0sMSksbz0tMSxjPXUubGVuZ3RoOysrbzxjOyl1W29dLmNhbGwobnVsbCxpKTtpZihlLnN0YXRlPT09QW0pe2Uuc3RhdGU9RW0sZS50aW1lci5zdG9wKCksZS5vbi5jYWxsKCJlbmQiLHQsdC5fX2RhdGFfXyxlLmluZGV4LGUuZ3JvdXApO2ZvcihvIGluIGEpaWYoK28hPT1uKXJldHVybiB2b2lkIGRlbGV0ZSBhW25dO2RlbGV0ZSB0Ll9fdHJhbnNpdGlvbn19dmFyIHUsYT10Ll9fdHJhbnNpdGlvbjthW25dPWUsZS50aW1lcj1ZcihyLDAsZS50aW1lKX1mdW5jdGlvbiBIYSh0LG4pe3ZhciBlLHIsaSxvPXQuX190cmFuc2l0aW9uLHU9ITA7aWYobyl7bj1udWxsPT1uP251bGw6bisiIjtmb3IoaSBpbiBvKShlPW9baV0pLm5hbWU9PT1uPyhyPWUuc3RhdGU9PT1ObSxlLnN0YXRlPUVtLGUudGltZXIuc3RvcCgpLHImJmUub24uY2FsbCgiaW50ZXJydXB0Iix0LHQuX19kYXRhX18sZS5pbmRleCxlLmdyb3VwKSxkZWxldGUgb1tpXSk6dT0hMTt1JiZkZWxldGUgdC5fX3RyYW5zaXRpb259fWZ1bmN0aW9uIFhhKHQpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtIYSh0aGlzLHQpfSl9ZnVuY3Rpb24gVmEodCxuKXt2YXIgZSxyO3JldHVybiBmdW5jdGlvbigpe3ZhciBpPVlhKHRoaXMsdCksbz1pLnR3ZWVuO2lmKG8hPT1lKXtyPWU9bztmb3IodmFyIHU9MCxhPXIubGVuZ3RoO3U8YTsrK3UpaWYoclt1XS5uYW1lPT09bil7cj1yLnNsaWNlKCksci5zcGxpY2UodSwxKTticmVha319aS50d2Vlbj1yfX1mdW5jdGlvbiBXYSh0LG4sZSl7dmFyIHIsaTtpZigiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgRXJyb3I7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG89WWEodGhpcyx0KSx1PW8udHdlZW47aWYodSE9PXIpe2k9KHI9dSkuc2xpY2UoKTtmb3IodmFyIGE9e25hbWU6bix2YWx1ZTplfSxjPTAscz1pLmxlbmd0aDtjPHM7KytjKWlmKGlbY10ubmFtZT09PW4pe2lbY109YTticmVha31jPT09cyYmaS5wdXNoKGEpfW8udHdlZW49aX19ZnVuY3Rpb24gJGEodCxuKXt2YXIgZT10aGlzLl9pZDtpZih0Kz0iIixhcmd1bWVudHMubGVuZ3RoPDIpe2Zvcih2YXIgcixpPUJhKHRoaXMubm9kZSgpLGUpLnR3ZWVuLG89MCx1PWkubGVuZ3RoO288dTsrK28paWYoKHI9aVtvXSkubmFtZT09PXQpcmV0dXJuIHIudmFsdWU7cmV0dXJuIG51bGx9cmV0dXJuIHRoaXMuZWFjaCgobnVsbD09bj9WYTpXYSkoZSx0LG4pKX1mdW5jdGlvbiBaYSh0LG4sZSl7dmFyIHI9dC5faWQ7cmV0dXJuIHQuZWFjaChmdW5jdGlvbigpe3ZhciB0PVlhKHRoaXMscik7KHQudmFsdWV8fCh0LnZhbHVlPXt9KSlbbl09ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KSxmdW5jdGlvbih0KXtyZXR1cm4gQmEodCxyKS52YWx1ZVtuXX19ZnVuY3Rpb24gR2EodCxuKXt2YXIgZTtyZXR1cm4oIm51bWJlciI9PXR5cGVvZiBuP3JyOm4gaW5zdGFuY2VvZiBiZT9DXzooZT1iZShuKSk/KG49ZSxDXyk6YXIpKHQsbil9ZnVuY3Rpb24gSmEodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5yZW1vdmVBdHRyaWJ1dGUodCl9fWZ1bmN0aW9uIFFhKHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMucmVtb3ZlQXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsKX19ZnVuY3Rpb24gS2EodCxuLGUpe3ZhciByLGk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG89dGhpcy5nZXRBdHRyaWJ1dGUodCk7cmV0dXJuIG89PT1lP251bGw6bz09PXI/aTppPW4ocj1vLGUpfX1mdW5jdGlvbiB0Yyh0LG4sZSl7dmFyIHIsaTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbz10aGlzLmdldEF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCk7cmV0dXJuIG89PT1lP251bGw6bz09PXI/aTppPW4ocj1vLGUpfX1mdW5jdGlvbiBuYyh0LG4sZSl7dmFyIHIsaSxvO3JldHVybiBmdW5jdGlvbigpe3ZhciB1LGE9ZSh0aGlzKTtyZXR1cm4gbnVsbD09YT92b2lkIHRoaXMucmVtb3ZlQXR0cmlidXRlKHQpOih1PXRoaXMuZ2V0QXR0cmlidXRlKHQpLHU9PT1hP251bGw6dT09PXImJmE9PT1pP286bz1uKHI9dSxpPWEpKX19ZnVuY3Rpb24gZWModCxuLGUpe3ZhciByLGksbztyZXR1cm4gZnVuY3Rpb24oKXt2YXIgdSxhPWUodGhpcyk7cmV0dXJuIG51bGw9PWE/dm9pZCB0aGlzLnJlbW92ZUF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCk6KHU9dGhpcy5nZXRBdHRyaWJ1dGVOUyh0LnNwYWNlLHQubG9jYWwpLHU9PT1hP251bGw6dT09PXImJmE9PT1pP286bz1uKHI9dSxpPWEpKX19ZnVuY3Rpb24gcmModCxuKXt2YXIgZT1Lbyh0KSxyPSJ0cmFuc2Zvcm0iPT09ZT9PXzpHYTtyZXR1cm4gdGhpcy5hdHRyVHdlZW4odCwiZnVuY3Rpb24iPT10eXBlb2Ygbj8oZS5sb2NhbD9lYzpuYykoZSxyLFphKHRoaXMsImF0dHIuIit0LG4pKTpudWxsPT1uPyhlLmxvY2FsP1FhOkphKShlKTooZS5sb2NhbD90YzpLYSkoZSxyLG4pKX1mdW5jdGlvbiBpYyh0LG4pe2Z1bmN0aW9uIGUoKXt2YXIgZT10aGlzLHI9bi5hcHBseShlLGFyZ3VtZW50cyk7cmV0dXJuIHImJmZ1bmN0aW9uKG4pe2Uuc2V0QXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsLHIobikpfX1yZXR1cm4gZS5fdmFsdWU9bixlfWZ1bmN0aW9uIG9jKHQsbil7ZnVuY3Rpb24gZSgpe3ZhciBlPXRoaXMscj1uLmFwcGx5KGUsYXJndW1lbnRzKTtyZXR1cm4gciYmZnVuY3Rpb24obil7ZS5zZXRBdHRyaWJ1dGUodCxyKG4pKX19cmV0dXJuIGUuX3ZhbHVlPW4sZX1mdW5jdGlvbiB1Yyh0LG4pe3ZhciBlPSJhdHRyLiIrdDtpZihhcmd1bWVudHMubGVuZ3RoPDIpcmV0dXJuKGU9dGhpcy50d2VlbihlKSkmJmUuX3ZhbHVlO2lmKG51bGw9PW4pcmV0dXJuIHRoaXMudHdlZW4oZSxudWxsKTtpZigiZnVuY3Rpb24iIT10eXBlb2Ygbil0aHJvdyBuZXcgRXJyb3I7dmFyIHI9S28odCk7cmV0dXJuIHRoaXMudHdlZW4oZSwoci5sb2NhbD9pYzpvYykocixuKSl9ZnVuY3Rpb24gYWModCxuKXtyZXR1cm4gZnVuY3Rpb24oKXtJYSh0aGlzLHQpLmRlbGF5PStuLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19ZnVuY3Rpb24gY2ModCxuKXtyZXR1cm4gbj0rbixmdW5jdGlvbigpe0lhKHRoaXMsdCkuZGVsYXk9bn19ZnVuY3Rpb24gc2ModCl7dmFyIG49dGhpcy5faWQ7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5lYWNoKCgiZnVuY3Rpb24iPT10eXBlb2YgdD9hYzpjYykobix0KSk6QmEodGhpcy5ub2RlKCksbikuZGVsYXl9ZnVuY3Rpb24gZmModCxuKXtyZXR1cm4gZnVuY3Rpb24oKXtZYSh0aGlzLHQpLmR1cmF0aW9uPStuLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19ZnVuY3Rpb24gbGModCxuKXtyZXR1cm4gbj0rbixmdW5jdGlvbigpe1lhKHRoaXMsdCkuZHVyYXRpb249bn19ZnVuY3Rpb24gaGModCl7dmFyIG49dGhpcy5faWQ7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5lYWNoKCgiZnVuY3Rpb24iPT10eXBlb2YgdD9mYzpsYykobix0KSk6QmEodGhpcy5ub2RlKCksbikuZHVyYXRpb259ZnVuY3Rpb24gcGModCxuKXtpZigiZnVuY3Rpb24iIT10eXBlb2Ygbil0aHJvdyBuZXcgRXJyb3I7cmV0dXJuIGZ1bmN0aW9uKCl7WWEodGhpcyx0KS5lYXNlPW59fWZ1bmN0aW9uIGRjKHQpe3ZhciBuPXRoaXMuX2lkO3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMuZWFjaChwYyhuLHQpKTpCYSh0aGlzLm5vZGUoKSxuKS5lYXNlfWZ1bmN0aW9uIHZjKHQpeyJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD15bSh0KSk7Zm9yKHZhciBuPXRoaXMuX2dyb3VwcyxlPW4ubGVuZ3RoLHI9bmV3IEFycmF5KGUpLGk9MDtpPGU7KytpKWZvcih2YXIgbyx1PW5baV0sYT11Lmxlbmd0aCxjPXJbaV09W10scz0wO3M8YTsrK3MpKG89dVtzXSkmJnQuY2FsbChvLG8uX19kYXRhX18scyx1KSYmYy5wdXNoKG8pO3JldHVybiBuZXcgVWMocix0aGlzLl9wYXJlbnRzLHRoaXMuX25hbWUsdGhpcy5faWQpfWZ1bmN0aW9uIF9jKHQpe2lmKHQuX2lkIT09dGhpcy5faWQpdGhyb3cgbmV3IEVycm9yO2Zvcih2YXIgbj10aGlzLl9ncm91cHMsZT10Ll9ncm91cHMscj1uLmxlbmd0aCxpPWUubGVuZ3RoLG89TWF0aC5taW4ocixpKSx1PW5ldyBBcnJheShyKSxhPTA7YTxvOysrYSlmb3IodmFyIGMscz1uW2FdLGY9ZVthXSxsPXMubGVuZ3RoLGg9dVthXT1uZXcgQXJyYXkobCkscD0wO3A8bDsrK3ApKGM9c1twXXx8ZltwXSkmJihoW3BdPWMpO2Zvcig7YTxyOysrYSl1W2FdPW5bYV07cmV0dXJuIG5ldyBVYyh1LHRoaXMuX3BhcmVudHMsdGhpcy5fbmFtZSx0aGlzLl9pZCl9ZnVuY3Rpb24geWModCl7cmV0dXJuKHQrIiIpLnRyaW0oKS5zcGxpdCgvXnxccysvKS5ldmVyeShmdW5jdGlvbih0KXt2YXIgbj10LmluZGV4T2YoIi4iKTtyZXR1cm4gbj49MCYmKHQ9dC5zbGljZSgwLG4pKSwhdHx8InN0YXJ0Ij09PXR9KX1mdW5jdGlvbiBnYyh0LG4sZSl7dmFyIHIsaSxvPXljKG4pP0lhOllhO3JldHVybiBmdW5jdGlvbigpe3ZhciB1PW8odGhpcyx0KSxhPXUub247YSE9PXImJihpPShyPWEpLmNvcHkoKSkub24obixlKSx1Lm9uPWl9fWZ1bmN0aW9uIG1jKHQsbil7dmFyIGU9dGhpcy5faWQ7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg8Mj9CYSh0aGlzLm5vZGUoKSxlKS5vbi5vbih0KTp0aGlzLmVhY2goZ2MoZSx0LG4pKX1mdW5jdGlvbiB4Yyh0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbj10aGlzLnBhcmVudE5vZGU7Zm9yKHZhciBlIGluIHRoaXMuX190cmFuc2l0aW9uKWlmKCtlIT09dClyZXR1cm47biYmbi5yZW1vdmVDaGlsZCh0aGlzKX19ZnVuY3Rpb24gYmMoKXtyZXR1cm4gdGhpcy5vbigiZW5kLnJlbW92ZSIseGModGhpcy5faWQpKX1mdW5jdGlvbiB3Yyh0KXt2YXIgbj10aGlzLl9uYW1lLGU9dGhpcy5faWQ7ImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PV91KHQpKTtmb3IodmFyIHI9dGhpcy5fZ3JvdXBzLGk9ci5sZW5ndGgsbz1uZXcgQXJyYXkoaSksdT0wO3U8aTsrK3UpZm9yKHZhciBhLGMscz1yW3VdLGY9cy5sZW5ndGgsbD1vW3VdPW5ldyBBcnJheShmKSxoPTA7aDxmOysraCkoYT1zW2hdKSYmKGM9dC5jYWxsKGEsYS5fX2RhdGFfXyxoLHMpKSYmKCJfX2RhdGFfXyJpbiBhJiYoYy5fX2RhdGFfXz1hLl9fZGF0YV9fKSxsW2hdPWMsRmEobFtoXSxuLGUsaCxsLEJhKGEsZSkpKTtyZXR1cm4gbmV3IFVjKG8sdGhpcy5fcGFyZW50cyxuLGUpfWZ1bmN0aW9uIE1jKHQpe3ZhciBuPXRoaXMuX25hbWUsZT10aGlzLl9pZDsiZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9bXUodCkpO2Zvcih2YXIgcj10aGlzLl9ncm91cHMsaT1yLmxlbmd0aCxvPVtdLHU9W10sYT0wO2E8aTsrK2EpZm9yKHZhciBjLHM9clthXSxmPXMubGVuZ3RoLGw9MDtsPGY7KytsKWlmKGM9c1tsXSl7Zm9yKHZhciBoLHA9dC5jYWxsKGMsYy5fX2RhdGFfXyxsLHMpLGQ9QmEoYyxlKSx2PTAsXz1wLmxlbmd0aDt2PF87Kyt2KShoPXBbdl0pJiZGYShoLG4sZSx2LHAsZCk7by5wdXNoKHApLHUucHVzaChjKX1yZXR1cm4gbmV3IFVjKG8sdSxuLGUpfWZ1bmN0aW9uIFRjKCl7cmV0dXJuIG5ldyBDbSh0aGlzLl9ncm91cHMsdGhpcy5fcGFyZW50cyl9ZnVuY3Rpb24ga2ModCxuKXt2YXIgZSxyLGk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG89V3UodGhpcykuZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLG51bGwpLHU9by5nZXRQcm9wZXJ0eVZhbHVlKHQpLGE9KHRoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkodCksby5nZXRQcm9wZXJ0eVZhbHVlKHQpKTtyZXR1cm4gdT09PWE/bnVsbDp1PT09ZSYmYT09PXI/aTppPW4oZT11LHI9YSl9fWZ1bmN0aW9uIFNjKHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkodCl9fWZ1bmN0aW9uIE5jKHQsbixlKXt2YXIgcixpO3JldHVybiBmdW5jdGlvbigpe3ZhciBvPVd1KHRoaXMpLmdldENvbXB1dGVkU3R5bGUodGhpcyxudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKHQpO3JldHVybiBvPT09ZT9udWxsOm89PT1yP2k6aT1uKHI9byxlKX19ZnVuY3Rpb24gQWModCxuLGUpe3ZhciByLGksbztyZXR1cm4gZnVuY3Rpb24oKXt2YXIgdT1XdSh0aGlzKS5nZXRDb21wdXRlZFN0eWxlKHRoaXMsbnVsbCksYT11LmdldFByb3BlcnR5VmFsdWUodCksYz1lKHRoaXMpO3JldHVybiBudWxsPT1jJiYodGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eSh0KSxjPXUuZ2V0UHJvcGVydHlWYWx1ZSh0KSksYT09PWM/bnVsbDphPT09ciYmYz09PWk/bzpvPW4ocj1hLGk9Yyl9fWZ1bmN0aW9uIEVjKHQsbixlKXt2YXIgcj0idHJhbnNmb3JtIj09KHQrPSIiKT9EXzpHYTtyZXR1cm4gbnVsbD09bj90aGlzLnN0eWxlVHdlZW4odCxrYyh0LHIpKS5vbigiZW5kLnN0eWxlLiIrdCxTYyh0KSk6dGhpcy5zdHlsZVR3ZWVuKHQsImZ1bmN0aW9uIj09dHlwZW9mIG4/QWModCxyLFphKHRoaXMsInN0eWxlLiIrdCxuKSk6TmModCxyLG4pLGUpfWZ1bmN0aW9uIENjKHQsbixlKXtmdW5jdGlvbiByKCl7dmFyIHI9dGhpcyxpPW4uYXBwbHkocixhcmd1bWVudHMpO3JldHVybiBpJiZmdW5jdGlvbihuKXtyLnN0eWxlLnNldFByb3BlcnR5KHQsaShuKSxlKX19cmV0dXJuIHIuX3ZhbHVlPW4scn1mdW5jdGlvbiB6Yyh0LG4sZSl7dmFyIHI9InN0eWxlLiIrKHQrPSIiKTtpZihhcmd1bWVudHMubGVuZ3RoPDIpcmV0dXJuKHI9dGhpcy50d2VlbihyKSkmJnIuX3ZhbHVlO2lmKG51bGw9PW4pcmV0dXJuIHRoaXMudHdlZW4ocixudWxsKTtpZigiZnVuY3Rpb24iIT10eXBlb2Ygbil0aHJvdyBuZXcgRXJyb3I7cmV0dXJuIHRoaXMudHdlZW4ocixDYyh0LG4sbnVsbD09ZT8iIjplKSl9ZnVuY3Rpb24gUGModCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy50ZXh0Q29udGVudD10fX1mdW5jdGlvbiBxYyh0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbj10KHRoaXMpO3RoaXMudGV4dENvbnRlbnQ9bnVsbD09bj8iIjpufX1mdW5jdGlvbiBMYyh0KXtyZXR1cm4gdGhpcy50d2VlbigidGV4dCIsImZ1bmN0aW9uIj09dHlwZW9mIHQ/cWMoWmEodGhpcywidGV4dCIsdCkpOlBjKG51bGw9PXQ/IiI6dCsiIikpfWZ1bmN0aW9uIFJjKCl7Zm9yKHZhciB0PXRoaXMuX25hbWUsbj10aGlzLl9pZCxlPU9jKCkscj10aGlzLl9ncm91cHMsaT1yLmxlbmd0aCxvPTA7bzxpOysrbylmb3IodmFyIHUsYT1yW29dLGM9YS5sZW5ndGgscz0wO3M8YzsrK3MpaWYodT1hW3NdKXt2YXIgZj1CYSh1LG4pO0ZhKHUsdCxlLHMsYSx7dGltZTpmLnRpbWUrZi5kZWxheStmLmR1cmF0aW9uLGRlbGF5OjAsZHVyYXRpb246Zi5kdXJhdGlvbixlYXNlOmYuZWFzZX0pfXJldHVybiBuZXcgVWMocix0aGlzLl9wYXJlbnRzLHQsZSl9ZnVuY3Rpb24gVWModCxuLGUscil7dGhpcy5fZ3JvdXBzPXQsdGhpcy5fcGFyZW50cz1uLHRoaXMuX25hbWU9ZSx0aGlzLl9pZD1yfWZ1bmN0aW9uIERjKHQpe3JldHVybiBMYSgpLnRyYW5zaXRpb24odCl9ZnVuY3Rpb24gT2MoKXtyZXR1cm4rK3ptfWZ1bmN0aW9uIEZjKHQsbil7Zm9yKHZhciBlOyEoZT10Ll9fdHJhbnNpdGlvbil8fCEoZT1lW25dKTspaWYoISh0PXQucGFyZW50Tm9kZSkpcmV0dXJuIHFtLnRpbWU9T3IoKSxxbTtyZXR1cm4gZX1mdW5jdGlvbiBJYyh0KXt2YXIgbixlO3QgaW5zdGFuY2VvZiBVYz8obj10Ll9pZCx0PXQuX25hbWUpOihuPU9jKCksKGU9cW0pLnRpbWU9T3IoKSx0PW51bGw9PXQ/bnVsbDp0KyIiKTtmb3IodmFyIHI9dGhpcy5fZ3JvdXBzLGk9ci5sZW5ndGgsbz0wO288aTsrK28pZm9yKHZhciB1LGE9cltvXSxjPWEubGVuZ3RoLHM9MDtzPGM7KytzKSh1PWFbc10pJiZGYSh1LHQsbixzLGEsZXx8RmModSxuKSk7cmV0dXJuIG5ldyBVYyhyLHRoaXMuX3BhcmVudHMsdCxuKX1mdW5jdGlvbiBZYyh0LG4pe3ZhciBlLHIsaT10Ll9fdHJhbnNpdGlvbjtpZihpKXtuPW51bGw9PW4/bnVsbDpuKyIiO2ZvcihyIGluIGkpaWYoKGU9aVtyXSkuc3RhdGU+a20mJmUubmFtZT09PW4pcmV0dXJuIG5ldyBVYyhbW3RdXSxMbSxuLCtyKX1yZXR1cm4gbnVsbH1mdW5jdGlvbiBCYyh0KXtyZXR1cm4gdH1mdW5jdGlvbiBqYyh0LG4sZSl7dmFyIHI9dChlKTtyZXR1cm4idHJhbnNsYXRlKCIrKGlzRmluaXRlKHIpP3I6bihlKSkrIiwwKSJ9ZnVuY3Rpb24gSGModCxuLGUpe3ZhciByPXQoZSk7cmV0dXJuInRyYW5zbGF0ZSgwLCIrKGlzRmluaXRlKHIpP3I6bihlKSkrIikifWZ1bmN0aW9uIFhjKHQpe3ZhciBuPXQuYmFuZHdpZHRoKCkvMjtyZXR1cm4gdC5yb3VuZCgpJiYobj1NYXRoLnJvdW5kKG4pKSxmdW5jdGlvbihlKXtyZXR1cm4gdChlKStufX1mdW5jdGlvbiBWYygpe3JldHVybiF0aGlzLl9fYXhpc31mdW5jdGlvbiBXYyh0LG4pe2Z1bmN0aW9uIGUoZSl7dmFyIHMsZj1udWxsPT1pP24udGlja3M/bi50aWNrcy5hcHBseShuLHIpOm4uZG9tYWluKCk6aSxsPW51bGw9PW8/bi50aWNrRm9ybWF0P24udGlja0Zvcm1hdC5hcHBseShuLHIpOkJjOm8saD1NYXRoLm1heCh1LDApK2MscD10PT09VW18fHQ9PT1PbT9qYzpIYyxkPW4ucmFuZ2UoKSx2PWRbMF0rLjUsXz1kW2QubGVuZ3RoLTFdKy41LHk9KG4uYmFuZHdpZHRoP1hjOkJjKShuLmNvcHkoKSksZz1lLnNlbGVjdGlvbj9lLnNlbGVjdGlvbigpOmUsbT1nLnNlbGVjdEFsbCgiLmRvbWFpbiIpLmRhdGEoW251bGxdKSx4PWcuc2VsZWN0QWxsKCIudGljayIpLmRhdGEoZixuKS5vcmRlcigpLGI9eC5leGl0KCksdz14LmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJ0aWNrIiksTT14LnNlbGVjdCgibGluZSIpLFQ9eC5zZWxlY3QoInRleHQiKSxrPXQ9PT1VbXx8dD09PUZtPy0xOjEsUz10PT09Rm18fHQ9PT1EbT8ocz0ieCIsInkiKToocz0ieSIsIngiKTttPW0ubWVyZ2UobS5lbnRlcigpLmluc2VydCgicGF0aCIsIi50aWNrIikuYXR0cigiY2xhc3MiLCJkb21haW4iKS5hdHRyKCJzdHJva2UiLCIjMDAwIikpLHg9eC5tZXJnZSh3KSxNPU0ubWVyZ2Uody5hcHBlbmQoImxpbmUiKS5hdHRyKCJzdHJva2UiLCIjMDAwIikuYXR0cihzKyIyIixrKnUpLmF0dHIoUysiMSIsLjUpLmF0dHIoUysiMiIsLjUpKSxUPVQubWVyZ2Uody5hcHBlbmQoInRleHQiKS5hdHRyKCJmaWxsIiwiIzAwMCIpLmF0dHIocyxrKmgpLmF0dHIoUywuNSkuYXR0cigiZHkiLHQ9PT1VbT8iMGVtIjp0PT09T20/IjAuNzFlbSI6IjAuMzJlbSIpKSxlIT09ZyYmKG09bS50cmFuc2l0aW9uKGUpLHg9eC50cmFuc2l0aW9uKGUpLE09TS50cmFuc2l0aW9uKGUpLFQ9VC50cmFuc2l0aW9uKGUpLGI9Yi50cmFuc2l0aW9uKGUpLmF0dHIoIm9wYWNpdHkiLEltKS5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKHQpe3JldHVybiBwKHksdGhpcy5wYXJlbnROb2RlLl9fYXhpc3x8eSx0KX0pLHcuYXR0cigib3BhY2l0eSIsSW0pLmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24odCl7cmV0dXJuIHAodGhpcy5wYXJlbnROb2RlLl9fYXhpc3x8eSx5LHQpfSkpLGIucmVtb3ZlKCksbS5hdHRyKCJkIix0PT09Rm18fHQ9PURtPyJNIitrKmErIiwiK3YrIkgwLjVWIitfKyJIIitrKmE6Ik0iK3YrIiwiK2sqYSsiVjAuNUgiK18rIlYiK2sqYSkseC5hdHRyKCJvcGFjaXR5IiwxKS5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKHQpe3JldHVybiBwKHkseSx0KX0pLE0uYXR0cihzKyIyIixrKnUpLFQuYXR0cihzLGsqaCkudGV4dChsKSxnLmZpbHRlcihWYykuYXR0cigiZmlsbCIsIm5vbmUiKS5hdHRyKCJmb250LXNpemUiLDEwKS5hdHRyKCJmb250LWZhbWlseSIsInNhbnMtc2VyaWYiKS5hdHRyKCJ0ZXh0LWFuY2hvciIsdD09PURtPyJzdGFydCI6dD09PUZtPyJlbmQiOiJtaWRkbGUiKSxnLmVhY2goZnVuY3Rpb24oKXt0aGlzLl9fYXhpcz15fSl9dmFyIHI9W10saT1udWxsLG89bnVsbCx1PTYsYT02LGM9MztyZXR1cm4gZS5zY2FsZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj10LGUpOm59LGUudGlja3M9ZnVuY3Rpb24oKXtyZXR1cm4gcj1SbS5jYWxsKGFyZ3VtZW50cyksZX0sZS50aWNrQXJndW1lbnRzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPW51bGw9PXQ/W106Um0uY2FsbCh0KSxlKTpyLnNsaWNlKCl9LGUudGlja1ZhbHVlcz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT1udWxsPT10P251bGw6Um0uY2FsbCh0KSxlKTppJiZpLnNsaWNlKCl9LGUudGlja0Zvcm1hdD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz10LGUpOm99LGUudGlja1NpemU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHU9YT0rdCxlKTp1fSxlLnRpY2tTaXplSW5uZXI9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHU9K3QsZSk6dX0sZS50aWNrU2l6ZU91dGVyPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPSt0LGUpOmF9LGUudGlja1BhZGRpbmc9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGM9K3QsZSk6Y30sZX1mdW5jdGlvbiAkYyh0KXtyZXR1cm4gV2MoVW0sdCl9ZnVuY3Rpb24gWmModCl7cmV0dXJuIFdjKERtLHQpfWZ1bmN0aW9uIEdjKHQpe3JldHVybiBXYyhPbSx0KX1mdW5jdGlvbiBKYyh0KXtyZXR1cm4gV2MoRm0sdCl9ZnVuY3Rpb24gUWModCxuKXtyZXR1cm4gdC5wYXJlbnQ9PT1uLnBhcmVudD8xOjJ9ZnVuY3Rpb24gS2ModCl7cmV0dXJuIHQucmVkdWNlKHRzLDApL3QubGVuZ3RofWZ1bmN0aW9uIHRzKHQsbil7cmV0dXJuIHQrbi54fWZ1bmN0aW9uIG5zKHQpe3JldHVybiAxK3QucmVkdWNlKGVzLDApfWZ1bmN0aW9uIGVzKHQsbil7cmV0dXJuIE1hdGgubWF4KHQsbi55KX1mdW5jdGlvbiBycyh0KXtmb3IodmFyIG47bj10LmNoaWxkcmVuOyl0PW5bMF07cmV0dXJuIHR9ZnVuY3Rpb24gaXModCl7Zm9yKHZhciBuO249dC5jaGlsZHJlbjspdD1uW24ubGVuZ3RoLTFdO3JldHVybiB0fWZ1bmN0aW9uIG9zKCl7ZnVuY3Rpb24gdCh0KXt2YXIgbyx1PTA7dC5lYWNoQWZ0ZXIoZnVuY3Rpb24odCl7dmFyIGU9dC5jaGlsZHJlbjtlPyh0Lng9S2MoZSksdC55PW5zKGUpKToodC54PW8/dSs9bih0LG8pOjAsdC55PTAsbz10KX0pO3ZhciBhPXJzKHQpLGM9aXModCkscz1hLngtbihhLGMpLzIsZj1jLngrbihjLGEpLzI7cmV0dXJuIHQuZWFjaEFmdGVyKGk/ZnVuY3Rpb24obil7bi54PShuLngtdC54KSplLG4ueT0odC55LW4ueSkqcn06ZnVuY3Rpb24obil7bi54PShuLngtcykvKGYtcykqZSxuLnk9KDEtKHQueT9uLnkvdC55OjEpKSpyfSl9dmFyIG49UWMsZT0xLHI9MSxpPSExO3JldHVybiB0LnNlcGFyYXRpb249ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49ZSx0KTpufSx0LnNpemU9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9ITEsZT0rblswXSxyPStuWzFdLHQpOmk/bnVsbDpbZSxyXX0sdC5ub2RlU2l6ZT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0hMCxlPStuWzBdLHI9K25bMV0sdCk6aT9bZSxyXTpudWxsfSx0fWZ1bmN0aW9uIHVzKHQpe3ZhciBuLGUscixpLG89dGhpcyx1PVtvXTtkbyBmb3Iobj11LnJldmVyc2UoKSx1PVtdO289bi5wb3AoKTspaWYodChvKSxlPW8uY2hpbGRyZW4pZm9yKHI9MCxpPWUubGVuZ3RoO3I8aTsrK3IpdS5wdXNoKGVbcl0pO3doaWxlKHUubGVuZ3RoKTtyZXR1cm4gdGhpc31mdW5jdGlvbiBhcyh0KXtmb3IodmFyIG4sZSxyPXRoaXMsaT1bcl07cj1pLnBvcCgpOylpZih0KHIpLG49ci5jaGlsZHJlbilmb3IoZT1uLmxlbmd0aC0xO2U+PTA7LS1lKWkucHVzaChuW2VdKTtyZXR1cm4gdGhpc31mdW5jdGlvbiBjcyh0KXtmb3IodmFyIG4sZSxyLGk9dGhpcyxvPVtpXSx1PVtdO2k9by5wb3AoKTspaWYodS5wdXNoKGkpLG49aS5jaGlsZHJlbilmb3IoZT0wLHI9bi5sZW5ndGg7ZTxyOysrZSlvLnB1c2gobltlXSk7Zm9yKDtpPXUucG9wKCk7KXQoaSk7cmV0dXJuIHRoaXN9ZnVuY3Rpb24gc3ModCl7cmV0dXJuIHRoaXMuZWFjaEFmdGVyKGZ1bmN0aW9uKG4pe2Zvcih2YXIgZT0rdChuLmRhdGEpfHwwLHI9bi5jaGlsZHJlbixpPXImJnIubGVuZ3RoOy0taT49MDspZSs9cltpXS52YWx1ZTtuLnZhbHVlPWV9KX1mdW5jdGlvbiBmcyh0KXtyZXR1cm4gdGhpcy5lYWNoQmVmb3JlKGZ1bmN0aW9uKG4pe24uY2hpbGRyZW4mJm4uY2hpbGRyZW4uc29ydCh0KX0pfWZ1bmN0aW9uIGxzKHQpe2Zvcih2YXIgbj10aGlzLGU9aHMobix0KSxyPVtuXTtuIT09ZTspbj1uLnBhcmVudCxyLnB1c2gobik7Zm9yKHZhciBpPXIubGVuZ3RoO3QhPT1lOylyLnNwbGljZShpLDAsdCksdD10LnBhcmVudDtyZXR1cm4gcn1mdW5jdGlvbiBocyh0LG4pe2lmKHQ9PT1uKXJldHVybiB0O3ZhciBlPXQuYW5jZXN0b3JzKCkscj1uLmFuY2VzdG9ycygpLGk9bnVsbDtmb3IodD1lLnBvcCgpLG49ci5wb3AoKTt0PT09bjspaT10LHQ9ZS5wb3AoKSxuPXIucG9wKCk7cmV0dXJuIGl9ZnVuY3Rpb24gcHMoKXtmb3IodmFyIHQ9dGhpcyxuPVt0XTt0PXQucGFyZW50OyluLnB1c2godCk7cmV0dXJuIG59ZnVuY3Rpb24gZHMoKXt2YXIgdD1bXTtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKG4pe3QucHVzaChuKX0pLHR9ZnVuY3Rpb24gdnMoKXt2YXIgdD1bXTtyZXR1cm4gdGhpcy5lYWNoQmVmb3JlKGZ1bmN0aW9uKG4pe24uY2hpbGRyZW58fHQucHVzaChuKX0pLHR9ZnVuY3Rpb24gX3MoKXt2YXIgdD10aGlzLG49W107cmV0dXJuIHQuZWFjaChmdW5jdGlvbihlKXtlIT09dCYmbi5wdXNoKHtzb3VyY2U6ZS5wYXJlbnQsdGFyZ2V0OmV9KX0pLG59ZnVuY3Rpb24geXModCxuKXt2YXIgZSxyLGksbyx1LGE9bmV3IHdzKHQpLGM9K3QudmFsdWUmJihhLnZhbHVlPXQudmFsdWUpLHM9W2FdO2ZvcihudWxsPT1uJiYobj1tcyk7ZT1zLnBvcCgpOylpZihjJiYoZS52YWx1ZT0rZS5kYXRhLnZhbHVlKSwoaT1uKGUuZGF0YSkpJiYodT1pLmxlbmd0aCkpZm9yKGUuY2hpbGRyZW49bmV3IEFycmF5KHUpLG89dS0xO28+PTA7LS1vKXMucHVzaChyPWUuY2hpbGRyZW5bb109bmV3IHdzKGlbb10pKSxyLnBhcmVudD1lLHIuZGVwdGg9ZS5kZXB0aCsxO3JldHVybiBhLmVhY2hCZWZvcmUoYnMpfWZ1bmN0aW9uIGdzKCl7cmV0dXJuIHlzKHRoaXMpLmVhY2hCZWZvcmUoeHMpfWZ1bmN0aW9uIG1zKHQpe3JldHVybiB0LmNoaWxkcmVufWZ1bmN0aW9uIHhzKHQpe3QuZGF0YT10LmRhdGEuZGF0YX1mdW5jdGlvbiBicyh0KXt2YXIgbj0wO2RvIHQuaGVpZ2h0PW47d2hpbGUoKHQ9dC5wYXJlbnQpJiZ0LmhlaWdodDwrK24pfWZ1bmN0aW9uIHdzKHQpe3RoaXMuZGF0YT10LHRoaXMuZGVwdGg9dGhpcy5oZWlnaHQ9MCx0aGlzLnBhcmVudD1udWxsfWZ1bmN0aW9uIE1zKHQpe3RoaXMuXz10LHRoaXMubmV4dD1udWxsfWZ1bmN0aW9uIFRzKHQpe2Zvcih2YXIgbixlPSh0PXQuc2xpY2UoKSkubGVuZ3RoLHI9bnVsbCxpPXI7ZTspe3ZhciBvPW5ldyBNcyh0W2UtMV0pO2k9aT9pLm5leHQ9bzpyPW8sdFtuXT10Wy0tZV19cmV0dXJue2hlYWQ6cix0YWlsOml9fWZ1bmN0aW9uIGtzKHQpe3JldHVybiBOcyhUcyh0KSxbXSl9ZnVuY3Rpb24gU3ModCxuKXt2YXIgZT1uLngtdC54LHI9bi55LXQueSxpPXQuci1uLnI7cmV0dXJuIGkqaSsxZS02PmUqZStyKnJ9ZnVuY3Rpb24gTnModCxuKXt2YXIgZSxyLGksbz1udWxsLHU9dC5oZWFkO3N3aXRjaChuLmxlbmd0aCl7Y2FzZSAxOmU9QXMoblswXSk7YnJlYWs7Y2FzZSAyOmU9RXMoblswXSxuWzFdKTticmVhaztjYXNlIDM6ZT1DcyhuWzBdLG5bMV0sblsyXSl9Zm9yKDt1OylpPXUuXyxyPXUubmV4dCxlJiZTcyhlLGkpP289dToobz8odC50YWlsPW8sby5uZXh0PW51bGwpOnQuaGVhZD10LnRhaWw9bnVsbCxuLnB1c2goaSksZT1Ocyh0LG4pLG4ucG9wKCksdC5oZWFkPyh1Lm5leHQ9dC5oZWFkLHQuaGVhZD11KToodS5uZXh0PW51bGwsdC5oZWFkPXQudGFpbD11KSxvPXQudGFpbCxvLm5leHQ9ciksdT1yO3JldHVybiB0LnRhaWw9byxlfWZ1bmN0aW9uIEFzKHQpe3JldHVybnt4OnQueCx5OnQueSxyOnQucn19ZnVuY3Rpb24gRXModCxuKXt2YXIgZT10Lngscj10LnksaT10LnIsbz1uLngsdT1uLnksYT1uLnIsYz1vLWUscz11LXIsZj1hLWksbD1NYXRoLnNxcnQoYypjK3Mqcyk7cmV0dXJue3g6KGUrbytjL2wqZikvMix5OihyK3Urcy9sKmYpLzIscjoobCtpK2EpLzJ9fWZ1bmN0aW9uIENzKHQsbixlKXt2YXIgcj10LngsaT10Lnksbz10LnIsdT1uLngsYT1uLnksYz1uLnIscz1lLngsZj1lLnksbD1lLnIsaD0yKihyLXUpLHA9MiooaS1hKSxkPTIqKGMtbyksdj1yKnIraSppLW8qby11KnUtYSphK2MqYyxfPTIqKHItcykseT0yKihpLWYpLGc9MioobC1vKSxtPXIqcitpKmktbypvLXMqcy1mKmYrbCpsLHg9XypwLWgqeSxiPShwKm0teSp2KS94LXIsdz0oeSpkLXAqZykveCxNPShfKnYtaCptKS94LWksVD0oaCpnLV8qZCkveCxrPXcqdytUKlQtMSxTPTIqKGIqdytNKlQrbyksTj1iKmIrTSpNLW8qbyxBPSgtUy1NYXRoLnNxcnQoUypTLTQqaypOKSkvKDIqayk7cmV0dXJue3g6Yit3KkErcix5Ok0rVCpBK2kscjpBfX1mdW5jdGlvbiB6cyh0LG4sZSl7dmFyIHI9dC54LGk9dC55LG89bi5yK2Uucix1PXQucitlLnIsYT1uLngtcixjPW4ueS1pLHM9YSphK2MqYztpZihzKXt2YXIgZj0uNSsoKHUqPXUpLShvKj1vKSkvKDIqcyksbD1NYXRoLnNxcnQoTWF0aC5tYXgoMCwyKm8qKHUrcyktKHUtPXMpKnUtbypvKSkvKDIqcyk7ZS54PXIrZiphK2wqYyxlLnk9aStmKmMtbCphfWVsc2UgZS54PXIrdSxlLnk9aX1mdW5jdGlvbiBQcyh0LG4pe3ZhciBlPW4ueC10Lngscj1uLnktdC55LGk9dC5yK24ucjtyZXR1cm4gaSppPmUqZStyKnJ9ZnVuY3Rpb24gcXModCxuLGUpe3ZhciByPXQueC1uLGk9dC55LWU7cmV0dXJuIHIqcitpKml9ZnVuY3Rpb24gTHModCl7dGhpcy5fPXQsdGhpcy5uZXh0PW51bGwsdGhpcy5wcmV2aW91cz1udWxsfWZ1bmN0aW9uIFJzKHQpe2lmKCEoaT10Lmxlbmd0aCkpcmV0dXJuIDA7dmFyIG4sZSxyLGk7aWYobj10WzBdLG4ueD0wLG4ueT0wLCEoaT4xKSlyZXR1cm4gbi5yO2lmKGU9dFsxXSxuLng9LWUucixlLng9bi5yLGUueT0wLCEoaT4yKSlyZXR1cm4gbi5yK2Uucjt6cyhlLG4scj10WzJdKTt2YXIgbyx1LGEsYyxzLGYsbCxoPW4ucipuLnIscD1lLnIqZS5yLGQ9ci5yKnIucix2PWgrcCtkLF89aCpuLngrcCplLngrZCpyLngseT1oKm4ueStwKmUueStkKnIueTtuPW5ldyBMcyhuKSxlPW5ldyBMcyhlKSxyPW5ldyBMcyhyKSxuLm5leHQ9ci5wcmV2aW91cz1lLGUubmV4dD1uLnByZXZpb3VzPXIsci5uZXh0PWUucHJldmlvdXM9bjt0OmZvcihhPTM7YTxpOysrYSl7aWYoenMobi5fLGUuXyxyPXRbYV0pLHI9bmV3IExzKHIpLChzPW4ucHJldmlvdXMpPT09KGM9ZS5uZXh0KSl7aWYoUHMoYy5fLHIuXykpe249ZSxlPWMsLS1hO2NvbnRpbnVlIHR9fWVsc2V7Zj1jLl8ucixsPXMuXy5yO2RvIGlmKGY8PWwpe2lmKFBzKGMuXyxyLl8pKXtlPWMsbi5uZXh0PWUsZS5wcmV2aW91cz1uLC0tYTtjb250aW51ZSB0fWM9Yy5uZXh0LGYrPWMuXy5yfWVsc2V7aWYoUHMocy5fLHIuXykpe249cyxuLm5leHQ9ZSxlLnByZXZpb3VzPW4sLS1hO2NvbnRpbnVlIHR9cz1zLnByZXZpb3VzLGwrPXMuXy5yfXdoaWxlKGMhPT1zLm5leHQpfWZvcihyLnByZXZpb3VzPW4sci5uZXh0PWUsbi5uZXh0PWUucHJldmlvdXM9ZT1yLHYrPWQ9ci5fLnIqci5fLnIsXys9ZCpyLl8ueCx5Kz1kKnIuXy55LGg9cXMobi5fLG89Xy92LHU9eS92KTsocj1yLm5leHQpIT09ZTspKGQ9cXMoci5fLG8sdSkpPGgmJihuPXIsaD1kKTtlPW4ubmV4dH1mb3Iobj1bZS5fXSxyPWU7KHI9ci5uZXh0KSE9PWU7KW4ucHVzaChyLl8pO2ZvcihyPWtzKG4pLGE9MDthPGk7KythKW49dFthXSxuLngtPXIueCxuLnktPXIueTtyZXR1cm4gci5yfWZ1bmN0aW9uIFVzKHQpe3JldHVybiBScyh0KSx0fWZ1bmN0aW9uIERzKHQpe3JldHVybiBudWxsPT10P251bGw6T3ModCl9ZnVuY3Rpb24gT3ModCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQpdGhyb3cgbmV3IEVycm9yO3JldHVybiB0fWZ1bmN0aW9uIEZzKCl7cmV0dXJuIDB9ZnVuY3Rpb24gSXModCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fWZ1bmN0aW9uIFlzKHQpe3JldHVybiBNYXRoLnNxcnQodC52YWx1ZSl9ZnVuY3Rpb24gQnMoKXtmdW5jdGlvbiB0KHQpe3JldHVybiB0Lng9ZS8yLHQueT1yLzIsbj90LmVhY2hCZWZvcmUoanMobikpLmVhY2hBZnRlcihIcyhpLC41KSkuZWFjaEJlZm9yZShYcygxKSk6dC5lYWNoQmVmb3JlKGpzKFlzKSkuZWFjaEFmdGVyKEhzKEZzLDEpKS5lYWNoQWZ0ZXIoSHMoaSx0LnIvTWF0aC5taW4oZSxyKSkpLmVhY2hCZWZvcmUoWHMoTWF0aC5taW4oZSxyKS8oMip0LnIpKSksdH12YXIgbj1udWxsLGU9MSxyPTEsaT1GcztyZXR1cm4gdC5yYWRpdXM9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49RHMoZSksdCk6bn0sdC5zaXplPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPStuWzBdLHI9K25bMV0sdCk6W2Uscl19LHQucGFkZGluZz1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0iZnVuY3Rpb24iPT10eXBlb2Ygbj9uOklzKCtuKSx0KTppfSx0fWZ1bmN0aW9uIGpzKHQpe3JldHVybiBmdW5jdGlvbihuKXtuLmNoaWxkcmVufHwobi5yPU1hdGgubWF4KDAsK3Qobil8fDApKX19ZnVuY3Rpb24gSHModCxuKXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYocj1lLmNoaWxkcmVuKXt2YXIgcixpLG8sdT1yLmxlbmd0aCxhPXQoZSkqbnx8MDtpZihhKWZvcihpPTA7aTx1OysraSlyW2ldLnIrPWE7aWYobz1ScyhyKSxhKWZvcihpPTA7aTx1OysraSlyW2ldLnItPWE7ZS5yPW8rYX19fWZ1bmN0aW9uIFhzKHQpe3JldHVybiBmdW5jdGlvbihuKXt2YXIgZT1uLnBhcmVudDtuLnIqPXQsZSYmKG4ueD1lLngrdCpuLngsbi55PWUueSt0Km4ueSl9fWZ1bmN0aW9uIFZzKHQpe3QueDA9TWF0aC5yb3VuZCh0LngwKSx0LnkwPU1hdGgucm91bmQodC55MCksdC54MT1NYXRoLnJvdW5kKHQueDEpLHQueTE9TWF0aC5yb3VuZCh0LnkxKX1mdW5jdGlvbiBXcyh0LG4sZSxyLGkpe2Zvcih2YXIgbyx1PXQuY2hpbGRyZW4sYT0tMSxjPXUubGVuZ3RoLHM9dC52YWx1ZSYmKHItbikvdC52YWx1ZTsrK2E8Yzspbz11W2FdLG8ueTA9ZSxvLnkxPWksby54MD1uLG8ueDE9bis9by52YWx1ZSpzfWZ1bmN0aW9uICRzKCl7ZnVuY3Rpb24gdCh0KXt2YXIgdT10LmhlaWdodCsxO3JldHVybiB0LngwPXQueTA9aSx0LngxPWUsdC55MT1yL3UsdC5lYWNoQmVmb3JlKG4ocix1KSksbyYmdC5lYWNoQmVmb3JlKFZzKSx0fWZ1bmN0aW9uIG4odCxuKXtyZXR1cm4gZnVuY3Rpb24oZSl7ZS5jaGlsZHJlbiYmV3MoZSxlLngwLHQqKGUuZGVwdGgrMSkvbixlLngxLHQqKGUuZGVwdGgrMikvbik7dmFyIHI9ZS54MCxvPWUueTAsdT1lLngxLWksYT1lLnkxLWk7dTxyJiYocj11PShyK3UpLzIpLGE8byYmKG89YT0obythKS8yKSxlLngwPXIsZS55MD1vLGUueDE9dSxlLnkxPWF9fXZhciBlPTEscj0xLGk9MCxvPSExO3JldHVybiB0LnJvdW5kPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPSEhbix0KTpvfSx0LnNpemU9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9K25bMF0scj0rblsxXSx0KTpbZSxyXX0sdC5wYWRkaW5nPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPStuLHQpOml9LHR9ZnVuY3Rpb24gWnModCl7cmV0dXJuIHQuaWR9ZnVuY3Rpb24gR3ModCl7cmV0dXJuIHQucGFyZW50SWR9ZnVuY3Rpb24gSnMoKXtmdW5jdGlvbiB0KHQpe3ZhciByLGksbyx1LGEsYyxzLGY9dC5sZW5ndGgsbD1uZXcgQXJyYXkoZiksaD17fTtmb3IoaT0wO2k8ZjsrK2kpcj10W2ldLGE9bFtpXT1uZXcgd3MociksbnVsbCE9KGM9bihyLGksdCkpJiYoYys9IiIpJiYocz1ZbSsoYS5pZD1jKSxoW3NdPXMgaW4gaD9qbTphKTtmb3IoaT0wO2k8ZjsrK2kpaWYoYT1sW2ldLGM9ZSh0W2ldLGksdCksbnVsbCE9YyYmKGMrPSIiKSl7aWYodT1oW1ltK2NdLCF1KXRocm93IG5ldyBFcnJvcigibWlzc2luZzogIitjKTtpZih1PT09am0pdGhyb3cgbmV3IEVycm9yKCJhbWJpZ3VvdXM6ICIrYyk7dS5jaGlsZHJlbj91LmNoaWxkcmVuLnB1c2goYSk6dS5jaGlsZHJlbj1bYV0sYS5wYXJlbnQ9dX1lbHNle2lmKG8pdGhyb3cgbmV3IEVycm9yKCJtdWx0aXBsZSByb290cyIpO289YX1pZighbyl0aHJvdyBuZXcgRXJyb3IoIm5vIHJvb3QiKTtpZihvLnBhcmVudD1CbSxvLmVhY2hCZWZvcmUoZnVuY3Rpb24odCl7dC5kZXB0aD10LnBhcmVudC5kZXB0aCsxLC0tZn0pLmVhY2hCZWZvcmUoYnMpLG8ucGFyZW50PW51bGwsZj4wKXRocm93IG5ldyBFcnJvcigiY3ljbGUiKTtyZXR1cm4gb312YXIgbj1acyxlPUdzO3JldHVybiB0LmlkPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPU9zKGUpLHQpOm59LHQucGFyZW50SWQ9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9T3MobiksdCk6ZX0sdH1mdW5jdGlvbiBRcyh0LG4pe3JldHVybiB0LnBhcmVudD09PW4ucGFyZW50PzE6Mn1mdW5jdGlvbiBLcyh0KXt2YXIgbj10LmNoaWxkcmVuO3JldHVybiBuP25bMF06dC50fWZ1bmN0aW9uIHRmKHQpe3ZhciBuPXQuY2hpbGRyZW47cmV0dXJuIG4/bltuLmxlbmd0aC0xXTp0LnR9ZnVuY3Rpb24gbmYodCxuLGUpe3ZhciByPWUvKG4uaS10LmkpO24uYy09cixuLnMrPWUsdC5jKz1yLG4ueis9ZSxuLm0rPWV9ZnVuY3Rpb24gZWYodCl7Zm9yKHZhciBuLGU9MCxyPTAsaT10LmNoaWxkcmVuLG89aS5sZW5ndGg7LS1vPj0wOyluPWlbb10sbi56Kz1lLG4ubSs9ZSxlKz1uLnMrKHIrPW4uYyl9ZnVuY3Rpb24gcmYodCxuLGUpe3JldHVybiB0LmEucGFyZW50PT09bi5wYXJlbnQ/dC5hOmV9ZnVuY3Rpb24gb2YodCxuKXt0aGlzLl89dCx0aGlzLnBhcmVudD1udWxsLHRoaXMuY2hpbGRyZW49bnVsbCx0aGlzLkE9bnVsbCx0aGlzLmE9dGhpcyx0aGlzLno9MCx0aGlzLm09MCx0aGlzLmM9MCx0aGlzLnM9MCx0aGlzLnQ9bnVsbCx0aGlzLmk9bn1mdW5jdGlvbiB1Zih0KXtmb3IodmFyIG4sZSxyLGksbyx1PW5ldyBvZih0LDApLGE9W3VdO249YS5wb3AoKTspaWYocj1uLl8uY2hpbGRyZW4pZm9yKG4uY2hpbGRyZW49bmV3IEFycmF5KG89ci5sZW5ndGgpLGk9by0xO2k+PTA7LS1pKWEucHVzaChlPW4uY2hpbGRyZW5baV09bmV3IG9mKHJbaV0saSkpLGUucGFyZW50PW47cmV0dXJuKHUucGFyZW50PW5ldyBvZihudWxsLDApKS5jaGlsZHJlbj1bdV0sdX1mdW5jdGlvbiBhZigpe2Z1bmN0aW9uIHQodCl7dmFyIHI9dWYodCk7aWYoci5lYWNoQWZ0ZXIobiksci5wYXJlbnQubT0tci56LHIuZWFjaEJlZm9yZShlKSxjKXQuZWFjaEJlZm9yZShpKTtlbHNle3ZhciBzPXQsZj10LGw9dDt0LmVhY2hCZWZvcmUoZnVuY3Rpb24odCl7dC54PHMueCYmKHM9dCksdC54PmYueCYmKGY9dCksdC5kZXB0aD5sLmRlcHRoJiYobD10KX0pO3ZhciBoPXM9PT1mPzE6byhzLGYpLzIscD1oLXMueCxkPXUvKGYueCtoK3ApLHY9YS8obC5kZXB0aHx8MSk7dC5lYWNoQmVmb3JlKGZ1bmN0aW9uKHQpe3QueD0odC54K3ApKmQsdC55PXQuZGVwdGgqdn0pfXJldHVybiB0fWZ1bmN0aW9uIG4odCl7dmFyIG49dC5jaGlsZHJlbixlPXQucGFyZW50LmNoaWxkcmVuLGk9dC5pP2VbdC5pLTFdOm51bGw7aWYobil7ZWYodCk7dmFyIHU9KG5bMF0ueituW24ubGVuZ3RoLTFdLnopLzI7aT8odC56PWkueitvKHQuXyxpLl8pLHQubT10LnotdSk6dC56PXV9ZWxzZSBpJiYodC56PWkueitvKHQuXyxpLl8pKTt0LnBhcmVudC5BPXIodCxpLHQucGFyZW50LkF8fGVbMF0pfWZ1bmN0aW9uIGUodCl7dC5fLng9dC56K3QucGFyZW50Lm0sdC5tKz10LnBhcmVudC5tfWZ1bmN0aW9uIHIodCxuLGUpe2lmKG4pe2Zvcih2YXIgcixpPXQsdT10LGE9bixjPWkucGFyZW50LmNoaWxkcmVuWzBdLHM9aS5tLGY9dS5tLGw9YS5tLGg9Yy5tO2E9dGYoYSksaT1LcyhpKSxhJiZpOyljPUtzKGMpLHU9dGYodSksdS5hPXQscj1hLnorbC1pLnotcytvKGEuXyxpLl8pLHI+MCYmKG5mKHJmKGEsdCxlKSx0LHIpLHMrPXIsZis9ciksbCs9YS5tLHMrPWkubSxoKz1jLm0sZis9dS5tO2EmJiF0Zih1KSYmKHUudD1hLHUubSs9bC1mKSxpJiYhS3MoYykmJihjLnQ9aSxjLm0rPXMtaCxlPXQpfXJldHVybiBlfWZ1bmN0aW9uIGkodCl7dC54Kj11LHQueT10LmRlcHRoKmF9dmFyIG89UXMsdT0xLGE9MSxjPW51bGw7cmV0dXJuIHQuc2VwYXJhdGlvbj1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz1uLHQpOm99LHQuc2l6ZT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz0hMSx1PStuWzBdLGE9K25bMV0sdCk6Yz9udWxsOlt1LGFdfSx0Lm5vZGVTaXplPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhjPSEwLHU9K25bMF0sYT0rblsxXSx0KTpjP1t1LGFdOm51bGx9LHR9ZnVuY3Rpb24gY2YodCxuLGUscixpKXtmb3IodmFyIG8sdT10LmNoaWxkcmVuLGE9LTEsYz11Lmxlbmd0aCxzPXQudmFsdWUmJihpLWUpL3QudmFsdWU7KythPGM7KW89dVthXSxvLngwPW4sby54MT1yLG8ueTA9ZSxvLnkxPWUrPW8udmFsdWUqc31mdW5jdGlvbiBzZih0LG4sZSxyLGksbyl7Zm9yKHZhciB1LGEsYyxzLGYsbCxoLHAsZCx2LF8seSxnPVtdLG09bi5jaGlsZHJlbix4PTAsYj1tLmxlbmd0aCx3PW4udmFsdWU7eDxiOyl7Zm9yKHM9aS1lLGY9by1yLGg9cD1sPW1beF0udmFsdWUsXz1NYXRoLm1heChmL3Mscy9mKS8odyp0KSx5PWwqbCpfLHY9TWF0aC5tYXgocC95LHkvaCksYz14KzE7YzxiOysrYyl7aWYobCs9YT1tW2NdLnZhbHVlLGE8aCYmKGg9YSksYT5wJiYocD1hKSx5PWwqbCpfLGQ9TWF0aC5tYXgocC95LHkvaCksZD52KXtsLT1hO2JyZWFrfXY9ZH1nLnB1c2godT17dmFsdWU6bCxkaWNlOnM8ZixjaGlsZHJlbjptLnNsaWNlKHgsYyl9KSx1LmRpY2U/V3ModSxlLHIsaSx3P3IrPWYqbC93Om8pOmNmKHUsZSxyLHc/ZSs9cypsL3c6aSxvKSx3LT1sLHg9Y31yZXR1cm4gZ31mdW5jdGlvbiBmZigpe2Z1bmN0aW9uIHQodCl7cmV0dXJuIHQueDA9dC55MD0wLHQueDE9aSx0LnkxPW8sdC5lYWNoQmVmb3JlKG4pLHU9WzBdLHImJnQuZWFjaEJlZm9yZShWcyksdH1mdW5jdGlvbiBuKHQpewp2YXIgbj11W3QuZGVwdGhdLHI9dC54MCtuLGk9dC55MCtuLG89dC54MS1uLGg9dC55MS1uO288ciYmKHI9bz0ocitvKS8yKSxoPGkmJihpPWg9KGkraCkvMiksdC54MD1yLHQueTA9aSx0LngxPW8sdC55MT1oLHQuY2hpbGRyZW4mJihuPXVbdC5kZXB0aCsxXT1hKHQpLzIscis9bCh0KS1uLGkrPWModCktbixvLT1zKHQpLW4saC09Zih0KS1uLG88ciYmKHI9bz0ocitvKS8yKSxoPGkmJihpPWg9KGkraCkvMiksZSh0LHIsaSxvLGgpKX12YXIgZT1YbSxyPSExLGk9MSxvPTEsdT1bMF0sYT1GcyxjPUZzLHM9RnMsZj1GcyxsPUZzO3JldHVybiB0LnJvdW5kPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPSEhbix0KTpyfSx0LnNpemU9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9K25bMF0sbz0rblsxXSx0KTpbaSxvXX0sdC50aWxlPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPU9zKG4pLHQpOmV9LHQucGFkZGluZz1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90LnBhZGRpbmdJbm5lcihuKS5wYWRkaW5nT3V0ZXIobik6dC5wYWRkaW5nSW5uZXIoKX0sdC5wYWRkaW5nSW5uZXI9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9ImZ1bmN0aW9uIj09dHlwZW9mIG4/bjpJcygrbiksdCk6YX0sdC5wYWRkaW5nT3V0ZXI9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dC5wYWRkaW5nVG9wKG4pLnBhZGRpbmdSaWdodChuKS5wYWRkaW5nQm90dG9tKG4pLnBhZGRpbmdMZWZ0KG4pOnQucGFkZGluZ1RvcCgpfSx0LnBhZGRpbmdUb3A9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGM9ImZ1bmN0aW9uIj09dHlwZW9mIG4/bjpJcygrbiksdCk6Y30sdC5wYWRkaW5nUmlnaHQ9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9ImZ1bmN0aW9uIj09dHlwZW9mIG4/bjpJcygrbiksdCk6c30sdC5wYWRkaW5nQm90dG9tPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhmPSJmdW5jdGlvbiI9PXR5cGVvZiBuP246SXMoK24pLHQpOmZ9LHQucGFkZGluZ0xlZnQ9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGw9ImZ1bmN0aW9uIj09dHlwZW9mIG4/bjpJcygrbiksdCk6bH0sdH1mdW5jdGlvbiBsZih0LG4sZSxyLGkpe2Z1bmN0aW9uIG8odCxuLGUscixpLHUsYSl7aWYodD49bi0xKXt2YXIgcz1jW3RdO3JldHVybiBzLngwPXIscy55MD1pLHMueDE9dSxzLnkxPWEsdm9pZCAwfWZvcih2YXIgbD1mW3RdLGg9ZS8yK2wscD10KzEsZD1uLTE7cDxkOyl7dmFyIHY9cCtkPj4+MTtmW3ZdPGg/cD12KzE6ZD12fXZhciBfPWZbcF0tbCx5PWUtXztpZihhLWk+dS1yKXt2YXIgZz0oaSp5K2EqXykvZTtvKHQscCxfLHIsaSx1LGcpLG8ocCxuLHkscixnLHUsYSl9ZWxzZXt2YXIgbT0ocip5K3UqXykvZTtvKHQscCxfLHIsaSxtLGEpLG8ocCxuLHksbSxpLHUsYSl9fXZhciB1LGEsYz10LmNoaWxkcmVuLHM9Yy5sZW5ndGgsZj1uZXcgQXJyYXkocysxKTtmb3IoZlswXT1hPXU9MDt1PHM7Kyt1KWZbdSsxXT1hKz1jW3VdLnZhbHVlO28oMCxzLHQudmFsdWUsbixlLHIsaSl9ZnVuY3Rpb24gaGYodCxuLGUscixpKXsoMSZ0LmRlcHRoP2NmOldzKSh0LG4sZSxyLGkpfWZ1bmN0aW9uIHBmKHQsbil7ZnVuY3Rpb24gZSgpe3ZhciBlLGksbz1yLmxlbmd0aCx1PTAsYT0wO2ZvcihlPTA7ZTxvOysrZSlpPXJbZV0sdSs9aS54LGErPWkueTtmb3IodT11L28tdCxhPWEvby1uLGU9MDtlPG87KytlKWk9cltlXSxpLngtPXUsaS55LT1hfXZhciByO3JldHVybiBudWxsPT10JiYodD0wKSxudWxsPT1uJiYobj0wKSxlLmluaXRpYWxpemU9ZnVuY3Rpb24odCl7cj10fSxlLng9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9K24sZSk6dH0sZS55PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPSt0LGUpOm59LGV9ZnVuY3Rpb24gZGYodCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fWZ1bmN0aW9uIHZmKCl7cmV0dXJuIDFlLTYqKE1hdGgucmFuZG9tKCktLjUpfWZ1bmN0aW9uIF9mKHQpe3JldHVybiB0LngrdC52eH1mdW5jdGlvbiB5Zih0KXtyZXR1cm4gdC55K3Qudnl9ZnVuY3Rpb24gZ2YodCl7ZnVuY3Rpb24gbigpe2Z1bmN0aW9uIHQodCxlLHIsaSx1KXt2YXIgYT10LmRhdGEscD10LnIsZD1sK3A7e2lmKCFhKXJldHVybiBlPnMrZHx8aTxzLWR8fHI+ZitkfHx1PGYtZDtpZihhLmluZGV4Pm4pe3ZhciB2PXMtYS54LWEudngsXz1mLWEueS1hLnZ5LHk9dip2K18qXzt5PGQqZCYmKDA9PT12JiYodj12ZigpLHkrPXYqdiksMD09PV8mJihfPXZmKCkseSs9XypfKSx5PShkLSh5PU1hdGguc3FydCh5KSkpL3kqbyxjLnZ4Kz0odio9eSkqKGQ9KHAqPXApLyhoK3ApKSxjLnZ5Kz0oXyo9eSkqZCxhLnZ4LT12KihkPTEtZCksYS52eS09XypkKX19fWZvcih2YXIgbixhLGMscyxmLGwsaCxwPXIubGVuZ3RoLGQ9MDtkPHU7KytkKWZvcihhPWp0KHIsX2YseWYpLnZpc2l0QWZ0ZXIoZSksbj0wO248cDsrK24pYz1yW25dLGw9aVtuXSxoPWwqbCxzPWMueCtjLnZ4LGY9Yy55K2MudnksYS52aXNpdCh0KX1mdW5jdGlvbiBlKHQpe2lmKHQuZGF0YSlyZXR1cm4gdC5yPWlbdC5kYXRhLmluZGV4XTtmb3IodmFyIG49dC5yPTA7bjw0Oysrbil0W25dJiZ0W25dLnI+dC5yJiYodC5yPXRbbl0ucil9dmFyIHIsaSxvPTEsdT0xO3JldHVybiJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD1kZihudWxsPT10PzE6K3QpKSxuLmluaXRpYWxpemU9ZnVuY3Rpb24obil7dmFyIGUsbz0ocj1uKS5sZW5ndGg7Zm9yKGk9bmV3IEFycmF5KG8pLGU9MDtlPG87KytlKWlbZV09K3QocltlXSxlLHIpfSxuLml0ZXJhdGlvbnM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHU9K3Qsbik6dX0sbi5zdHJlbmd0aD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz0rdCxuKTpvfSxuLnJhZGl1cz1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0iZnVuY3Rpb24iPT10eXBlb2YgZT9lOmRmKCtlKSxuKTp0fSxufWZ1bmN0aW9uIG1mKHQsbil7cmV0dXJuIG59ZnVuY3Rpb24geGYodCl7ZnVuY3Rpb24gbih0KXtyZXR1cm4gMS9NYXRoLm1pbihzW3Quc291cmNlLmluZGV4XSxzW3QudGFyZ2V0LmluZGV4XSl9ZnVuY3Rpb24gZShuKXtmb3IodmFyIGU9MCxyPXQubGVuZ3RoO2U8ZDsrK2UpZm9yKHZhciBpLG8sYyxzLGwsaCxwLHY9MDt2PHI7Kyt2KWk9dFt2XSxvPWkuc291cmNlLGM9aS50YXJnZXQscz1jLngrYy52eC1vLngtby52eHx8dmYoKSxsPWMueStjLnZ5LW8ueS1vLnZ5fHx2ZigpLGg9TWF0aC5zcXJ0KHMqcytsKmwpLGg9KGgtYVt2XSkvaCpuKnVbdl0scyo9aCxsKj1oLGMudngtPXMqKHA9Zlt2XSksYy52eS09bCpwLG8udngrPXMqKHA9MS1wKSxvLnZ5Kz1sKnB9ZnVuY3Rpb24gcigpe2lmKGMpe3ZhciBuLGUscj1jLmxlbmd0aCxoPXQubGVuZ3RoLHA9cShjLGwpO2ZvcihuPTAscz1uZXcgQXJyYXkocik7bjxyOysrbilzW25dPTA7Zm9yKG49MDtuPGg7KytuKWU9dFtuXSxlLmluZGV4PW4sIm9iamVjdCIhPXR5cGVvZiBlLnNvdXJjZSYmKGUuc291cmNlPXAuZ2V0KGUuc291cmNlKSksIm9iamVjdCIhPXR5cGVvZiBlLnRhcmdldCYmKGUudGFyZ2V0PXAuZ2V0KGUudGFyZ2V0KSksKytzW2Uuc291cmNlLmluZGV4XSwrK3NbZS50YXJnZXQuaW5kZXhdO2ZvcihuPTAsZj1uZXcgQXJyYXkoaCk7bjxoOysrbillPXRbbl0sZltuXT1zW2Uuc291cmNlLmluZGV4XS8oc1tlLnNvdXJjZS5pbmRleF0rc1tlLnRhcmdldC5pbmRleF0pO3U9bmV3IEFycmF5KGgpLGkoKSxhPW5ldyBBcnJheShoKSxvKCl9fWZ1bmN0aW9uIGkoKXtpZihjKWZvcih2YXIgbj0wLGU9dC5sZW5ndGg7bjxlOysrbil1W25dPStoKHRbbl0sbix0KX1mdW5jdGlvbiBvKCl7aWYoYylmb3IodmFyIG49MCxlPXQubGVuZ3RoO248ZTsrK24pYVtuXT0rcCh0W25dLG4sdCl9dmFyIHUsYSxjLHMsZixsPW1mLGg9bixwPWRmKDMwKSxkPTE7cmV0dXJuIG51bGw9PXQmJih0PVtdKSxlLmluaXRpYWxpemU9ZnVuY3Rpb24odCl7Yz10LHIoKX0sZS5saW5rcz1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1uLHIoKSxlKTp0fSxlLmlkPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhsPXQsZSk6bH0sZS5pdGVyYXRpb25zPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhkPSt0LGUpOmR9LGUuc3RyZW5ndGg9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGg9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpkZigrdCksaSgpLGUpOmh9LGUuZGlzdGFuY2U9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHA9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpkZigrdCksbygpLGUpOnB9LGV9ZnVuY3Rpb24gYmYodCl7cmV0dXJuIHQueH1mdW5jdGlvbiB3Zih0KXtyZXR1cm4gdC55fWZ1bmN0aW9uIE1mKHQpe2Z1bmN0aW9uIG4oKXtlKCkscC5jYWxsKCJ0aWNrIixvKSx1PGEmJihoLnN0b3AoKSxwLmNhbGwoImVuZCIsbykpfWZ1bmN0aW9uIGUoKXt2YXIgbixlLHI9dC5sZW5ndGg7Zm9yKHUrPShzLXUpKmMsbC5lYWNoKGZ1bmN0aW9uKHQpe3QodSl9KSxuPTA7bjxyOysrbillPXRbbl0sbnVsbD09ZS5meD9lLngrPWUudngqPWY6KGUueD1lLmZ4LGUudng9MCksbnVsbD09ZS5meT9lLnkrPWUudnkqPWY6KGUueT1lLmZ5LGUudnk9MCl9ZnVuY3Rpb24gcigpe2Zvcih2YXIgbixlPTAscj10Lmxlbmd0aDtlPHI7KytlKXtpZihuPXRbZV0sbi5pbmRleD1lLGlzTmFOKG4ueCl8fGlzTmFOKG4ueSkpe3ZhciBpPVdtKk1hdGguc3FydChlKSxvPWUqJG07bi54PWkqTWF0aC5jb3Mobyksbi55PWkqTWF0aC5zaW4obyl9KGlzTmFOKG4udngpfHxpc05hTihuLnZ5KSkmJihuLnZ4PW4udnk9MCl9fWZ1bmN0aW9uIGkobil7cmV0dXJuIG4uaW5pdGlhbGl6ZSYmbi5pbml0aWFsaXplKHQpLG59dmFyIG8sdT0xLGE9LjAwMSxjPTEtTWF0aC5wb3coYSwxLzMwMCkscz0wLGY9LjYsbD1xKCksaD1ZcihuKSxwPU1yKCJ0aWNrIiwiZW5kIik7cmV0dXJuIG51bGw9PXQmJih0PVtdKSxyKCksbz17dGljazplLHJlc3RhcnQ6ZnVuY3Rpb24oKXtyZXR1cm4gaC5yZXN0YXJ0KG4pLG99LHN0b3A6ZnVuY3Rpb24oKXtyZXR1cm4gaC5zdG9wKCksb30sbm9kZXM6ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9bixyKCksbC5lYWNoKGkpLG8pOnR9LGFscGhhOmZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PSt0LG8pOnV9LGFscGhhTWluOmZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPSt0LG8pOmF9LGFscGhhRGVjYXk6ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGM9K3Qsbyk6K2N9LGFscGhhVGFyZ2V0OmZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPSt0LG8pOnN9LHZlbG9jaXR5RGVjYXk6ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGY9MS10LG8pOjEtZn0sZm9yY2U6ZnVuY3Rpb24odCxuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD4xPyhudWxsPT1uP2wucmVtb3ZlKHQpOmwuc2V0KHQsaShuKSksbyk6bC5nZXQodCl9LGZpbmQ6ZnVuY3Rpb24obixlLHIpe3ZhciBpLG8sdSxhLGMscz0wLGY9dC5sZW5ndGg7Zm9yKG51bGw9PXI/cj0xLzA6cio9cixzPTA7czxmOysrcylhPXRbc10saT1uLWEueCxvPWUtYS55LHU9aSppK28qbyx1PHImJihjPWEscj11KTtyZXR1cm4gY30sb246ZnVuY3Rpb24odCxuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD4xPyhwLm9uKHQsbiksbyk6cC5vbih0KX19fWZ1bmN0aW9uIFRmKCl7ZnVuY3Rpb24gdCh0KXt2YXIgbixhPWkubGVuZ3RoLGM9anQoaSxiZix3ZikudmlzaXRBZnRlcihlKTtmb3IodT10LG49MDtuPGE7KytuKW89aVtuXSxjLnZpc2l0KHIpfWZ1bmN0aW9uIG4oKXtpZihpKXt2YXIgdCxuPWkubGVuZ3RoO2ZvcihhPW5ldyBBcnJheShuKSx0PTA7dDxuOysrdClhW3RdPStjKGlbdF0sdCxpKX19ZnVuY3Rpb24gZSh0KXt2YXIgbixlLHIsaSxvLHU9MDtpZih0Lmxlbmd0aCl7Zm9yKHI9aT1vPTA7bzw0Oysrbykobj10W29dKSYmKGU9bi52YWx1ZSkmJih1Kz1lLHIrPWUqbi54LGkrPWUqbi55KTt0Lng9ci91LHQueT1pL3V9ZWxzZXtuPXQsbi54PW4uZGF0YS54LG4ueT1uLmRhdGEueTtkbyB1Kz1hW24uZGF0YS5pbmRleF07d2hpbGUobj1uLm5leHQpfXQudmFsdWU9dX1mdW5jdGlvbiByKHQsbixlLHIpe2lmKCF0LnZhbHVlKXJldHVybiEwO3ZhciBpPXQueC1vLngsYz10Lnktby55LGg9ci1uLHA9aSppK2MqYztpZihoKmgvbDxwKXJldHVybiBwPGYmJigwPT09aSYmKGk9dmYoKSxwKz1pKmkpLDA9PT1jJiYoYz12ZigpLHArPWMqYykscDxzJiYocD1NYXRoLnNxcnQocypwKSksby52eCs9aSp0LnZhbHVlKnUvcCxvLnZ5Kz1jKnQudmFsdWUqdS9wKSwhMDtpZighKHQubGVuZ3RofHxwPj1mKSl7KHQuZGF0YSE9PW98fHQubmV4dCkmJigwPT09aSYmKGk9dmYoKSxwKz1pKmkpLDA9PT1jJiYoYz12ZigpLHArPWMqYykscDxzJiYocD1NYXRoLnNxcnQocypwKSkpO2RvIHQuZGF0YSE9PW8mJihoPWFbdC5kYXRhLmluZGV4XSp1L3Asby52eCs9aSpoLG8udnkrPWMqaCk7d2hpbGUodD10Lm5leHQpfX12YXIgaSxvLHUsYSxjPWRmKC0zMCkscz0xLGY9MS8wLGw9LjgxO3JldHVybiB0LmluaXRpYWxpemU9ZnVuY3Rpb24odCl7aT10LG4oKX0sdC5zdHJlbmd0aD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz0iZnVuY3Rpb24iPT10eXBlb2YgZT9lOmRmKCtlKSxuKCksdCk6Y30sdC5kaXN0YW5jZU1pbj1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz1uKm4sdCk6TWF0aC5zcXJ0KHMpfSx0LmRpc3RhbmNlTWF4PWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhmPW4qbix0KTpNYXRoLnNxcnQoZil9LHQudGhldGE9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGw9bipuLHQpOk1hdGguc3FydChsKX0sdH1mdW5jdGlvbiBrZih0KXtmdW5jdGlvbiBuKHQpe2Zvcih2YXIgbixlPTAsdT1yLmxlbmd0aDtlPHU7KytlKW49cltlXSxuLnZ4Kz0ob1tlXS1uLngpKmlbZV0qdH1mdW5jdGlvbiBlKCl7aWYocil7dmFyIG4sZT1yLmxlbmd0aDtmb3IoaT1uZXcgQXJyYXkoZSksbz1uZXcgQXJyYXkoZSksbj0wO248ZTsrK24paVtuXT1pc05hTihvW25dPSt0KHJbbl0sbixyKSk/MDordShyW25dLG4scil9fXZhciByLGksbyx1PWRmKC4xKTtyZXR1cm4iZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9ZGYobnVsbD09dD8wOit0KSksbi5pbml0aWFsaXplPWZ1bmN0aW9uKHQpe3I9dCxlKCl9LG4uc3RyZW5ndGg9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHU9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpkZigrdCksZSgpLG4pOnV9LG4ueD1mdW5jdGlvbihyKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0iZnVuY3Rpb24iPT10eXBlb2Ygcj9yOmRmKCtyKSxlKCksbik6dH0sbn1mdW5jdGlvbiBTZih0KXtmdW5jdGlvbiBuKHQpe2Zvcih2YXIgbixlPTAsdT1yLmxlbmd0aDtlPHU7KytlKW49cltlXSxuLnZ5Kz0ob1tlXS1uLnkpKmlbZV0qdH1mdW5jdGlvbiBlKCl7aWYocil7dmFyIG4sZT1yLmxlbmd0aDtmb3IoaT1uZXcgQXJyYXkoZSksbz1uZXcgQXJyYXkoZSksbj0wO248ZTsrK24paVtuXT1pc05hTihvW25dPSt0KHJbbl0sbixyKSk/MDordShyW25dLG4scil9fXZhciByLGksbyx1PWRmKC4xKTtyZXR1cm4iZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9ZGYobnVsbD09dD8wOit0KSksbi5pbml0aWFsaXplPWZ1bmN0aW9uKHQpe3I9dCxlKCl9LG4uc3RyZW5ndGg9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHU9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpkZigrdCksZSgpLG4pOnV9LG4ueT1mdW5jdGlvbihyKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0iZnVuY3Rpb24iPT10eXBlb2Ygcj9yOmRmKCtyKSxlKCksbik6dH0sbn1mdW5jdGlvbiBOZigpe3QuZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCl9ZnVuY3Rpb24gQWYoKXt0LmV2ZW50LnByZXZlbnREZWZhdWx0KCksdC5ldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKX1mdW5jdGlvbiBFZih0KXt2YXIgbj10LmRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxlPVJhKHQpLm9uKCJkcmFnc3RhcnQuZHJhZyIsQWYsITApOyJvbnNlbGVjdHN0YXJ0ImluIG4/ZS5vbigic2VsZWN0c3RhcnQuZHJhZyIsQWYsITApOihuLl9fbm9zZWxlY3Q9bi5zdHlsZS5Nb3pVc2VyU2VsZWN0LG4uc3R5bGUuTW96VXNlclNlbGVjdD0ibm9uZSIpfWZ1bmN0aW9uIENmKHQsbil7dmFyIGU9dC5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQscj1SYSh0KS5vbigiZHJhZ3N0YXJ0LmRyYWciLG51bGwpO24mJihyLm9uKCJjbGljay5kcmFnIixBZiwhMCksc2V0VGltZW91dChmdW5jdGlvbigpe3Iub24oImNsaWNrLmRyYWciLG51bGwpfSwwKSksIm9uc2VsZWN0c3RhcnQiaW4gZT9yLm9uKCJzZWxlY3RzdGFydC5kcmFnIixudWxsKTooZS5zdHlsZS5Nb3pVc2VyU2VsZWN0PWUuX19ub3NlbGVjdCxkZWxldGUgZS5fX25vc2VsZWN0KX1mdW5jdGlvbiB6Zih0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19ZnVuY3Rpb24gUGYodCxuLGUscixpLG8sdSxhLGMscyl7dGhpcy50YXJnZXQ9dCx0aGlzLnR5cGU9bix0aGlzLnN1YmplY3Q9ZSx0aGlzLmlkZW50aWZpZXI9cix0aGlzLmFjdGl2ZT1pLHRoaXMueD1vLHRoaXMueT11LHRoaXMuZHg9YSx0aGlzLmR5PWMsdGhpcy5fPXN9ZnVuY3Rpb24gcWYoKXtyZXR1cm4hdC5ldmVudC5idXR0b259ZnVuY3Rpb24gTGYoKXtyZXR1cm4gdGhpcy5wYXJlbnROb2RlfWZ1bmN0aW9uIFJmKG4pe3JldHVybiBudWxsPT1uP3t4OnQuZXZlbnQueCx5OnQuZXZlbnQueX06bn1mdW5jdGlvbiBVZigpe2Z1bmN0aW9uIG4odCl7dC5vbigibW91c2Vkb3duLmRyYWciLGUpLm9uKCJ0b3VjaHN0YXJ0LmRyYWciLG8pLm9uKCJ0b3VjaG1vdmUuZHJhZyIsdSkub24oInRvdWNoZW5kLmRyYWcgdG91Y2hjYW5jZWwuZHJhZyIsYSkuc3R5bGUoIi13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvciIsInJnYmEoMCwwLDAsMCkiKX1mdW5jdGlvbiBlKCl7aWYoIWYmJmwuYXBwbHkodGhpcyxhcmd1bWVudHMpKXt2YXIgbj1jKCJtb3VzZSIsaC5hcHBseSh0aGlzLGFyZ3VtZW50cyksZHUsdGhpcyxhcmd1bWVudHMpO24mJihSYSh0LmV2ZW50LnZpZXcpLm9uKCJtb3VzZW1vdmUuZHJhZyIsciwhMCkub24oIm1vdXNldXAuZHJhZyIsaSwhMCksRWYodC5ldmVudC52aWV3KSxOZigpLHM9ITEsbigic3RhcnQiKSl9fWZ1bmN0aW9uIHIoKXtBZigpLHM9ITAsZC5tb3VzZSgiZHJhZyIpfWZ1bmN0aW9uIGkoKXtSYSh0LmV2ZW50LnZpZXcpLm9uKCJtb3VzZW1vdmUuZHJhZyBtb3VzZXVwLmRyYWciLG51bGwpLENmKHQuZXZlbnQudmlldyxzKSxBZigpLGQubW91c2UoImVuZCIpfWZ1bmN0aW9uIG8oKXtpZihsLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl7dmFyIG4sZSxyPXQuZXZlbnQuY2hhbmdlZFRvdWNoZXMsaT1oLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxvPXIubGVuZ3RoO2ZvcihuPTA7bjxvOysrbikoZT1jKHJbbl0uaWRlbnRpZmllcixpLERhLHRoaXMsYXJndW1lbnRzKSkmJihOZigpLGUoInN0YXJ0IikpfX1mdW5jdGlvbiB1KCl7dmFyIG4sZSxyPXQuZXZlbnQuY2hhbmdlZFRvdWNoZXMsaT1yLmxlbmd0aDtmb3Iobj0wO248aTsrK24pKGU9ZFtyW25dLmlkZW50aWZpZXJdKSYmKEFmKCksZSgiZHJhZyIpKX1mdW5jdGlvbiBhKCl7dmFyIG4sZSxyPXQuZXZlbnQuY2hhbmdlZFRvdWNoZXMsaT1yLmxlbmd0aDtmb3IoZiYmY2xlYXJUaW1lb3V0KGYpLGY9c2V0VGltZW91dChmdW5jdGlvbigpe2Y9bnVsbH0sNTAwKSxuPTA7bjxpOysrbikoZT1kW3Jbbl0uaWRlbnRpZmllcl0pJiYoTmYoKSxlKCJlbmQiKSl9ZnVuY3Rpb24gYyhlLHIsaSxvLHUpe3ZhciBhLGMscyxmPWkocixlKSxsPXYuY29weSgpO2lmKGx1KG5ldyBQZihuLCJiZWZvcmVzdGFydCIsYSxlLF8sZlswXSxmWzFdLDAsMCxsKSxmdW5jdGlvbigpe3JldHVybiBudWxsIT0odC5ldmVudC5zdWJqZWN0PWE9cC5hcHBseShvLHUpKSYmKGM9YS54LWZbMF18fDAscz1hLnktZlsxXXx8MCwhMCl9KSlyZXR1cm4gZnVuY3Rpb24gdChoKXt2YXIgcCx2PWY7c3dpdGNoKGgpe2Nhc2Uic3RhcnQiOmRbZV09dCxwPV8rKzticmVhaztjYXNlImVuZCI6ZGVsZXRlIGRbZV0sLS1fO2Nhc2UiZHJhZyI6Zj1pKHIsZSkscD1ffWx1KG5ldyBQZihuLGgsYSxlLHAsZlswXStjLGZbMV0rcyxmWzBdLXZbMF0sZlsxXS12WzFdLGwpLGwuYXBwbHksbCxbaCxvLHVdKX19dmFyIHMsZixsPXFmLGg9TGYscD1SZixkPXt9LHY9TXIoInN0YXJ0IiwiZHJhZyIsImVuZCIpLF89MDtyZXR1cm4gbi5maWx0ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGw9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDp6ZighIXQpLG4pOmx9LG4uY29udGFpbmVyPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhoPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6emYodCksbik6aH0sbi5zdWJqZWN0PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhwPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6emYodCksbik6cH0sbi5vbj1mdW5jdGlvbigpe3ZhciB0PXYub24uYXBwbHkodixhcmd1bWVudHMpO3JldHVybiB0PT09dj9uOnR9LG59ZnVuY3Rpb24gRGYodCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fWZ1bmN0aW9uIE9mKHQpe3JldHVybiB0WzBdfWZ1bmN0aW9uIEZmKHQpe3JldHVybiB0WzFdfWZ1bmN0aW9uIElmKCl7dGhpcy5fPW51bGx9ZnVuY3Rpb24gWWYodCl7dC5VPXQuQz10Lkw9dC5SPXQuUD10Lk49bnVsbH1mdW5jdGlvbiBCZih0LG4pe3ZhciBlPW4scj1uLlIsaT1lLlU7aT9pLkw9PT1lP2kuTD1yOmkuUj1yOnQuXz1yLHIuVT1pLGUuVT1yLGUuUj1yLkwsZS5SJiYoZS5SLlU9ZSksci5MPWV9ZnVuY3Rpb24gamYodCxuKXt2YXIgZT1uLHI9bi5MLGk9ZS5VO2k/aS5MPT09ZT9pLkw9cjppLlI9cjp0Ll89cixyLlU9aSxlLlU9cixlLkw9ci5SLGUuTCYmKGUuTC5VPWUpLHIuUj1lfWZ1bmN0aW9uIEhmKHQpe2Zvcig7dC5MOyl0PXQuTDtyZXR1cm4gdH1mdW5jdGlvbiBYZih0LG4sZSxyKXt2YXIgaT1bbnVsbCxudWxsXSxvPUttLnB1c2goaSktMTtyZXR1cm4gaS5sZWZ0PXQsaS5yaWdodD1uLGUmJldmKGksdCxuLGUpLHImJldmKGksbix0LHIpLEptW3QuaW5kZXhdLmhhbGZlZGdlcy5wdXNoKG8pLEptW24uaW5kZXhdLmhhbGZlZGdlcy5wdXNoKG8pLGl9ZnVuY3Rpb24gVmYodCxuLGUpe3ZhciByPVtuLGVdO3JldHVybiByLmxlZnQ9dCxyfWZ1bmN0aW9uIFdmKHQsbixlLHIpe3RbMF18fHRbMV0/dC5sZWZ0PT09ZT90WzFdPXI6dFswXT1yOih0WzBdPXIsdC5sZWZ0PW4sdC5yaWdodD1lKX1mdW5jdGlvbiAkZih0LG4sZSxyLGkpe3ZhciBvLHU9dFswXSxhPXRbMV0sYz11WzBdLHM9dVsxXSxmPWFbMF0sbD1hWzFdLGg9MCxwPTEsZD1mLWMsdj1sLXM7aWYobz1uLWMsZHx8IShvPjApKXtpZihvLz1kLGQ8MCl7aWYobzxoKXJldHVybjtvPHAmJihwPW8pfWVsc2UgaWYoZD4wKXtpZihvPnApcmV0dXJuO28+aCYmKGg9byl9aWYobz1yLWMsZHx8IShvPDApKXtpZihvLz1kLGQ8MCl7aWYobz5wKXJldHVybjtvPmgmJihoPW8pfWVsc2UgaWYoZD4wKXtpZihvPGgpcmV0dXJuO288cCYmKHA9byl9aWYobz1lLXMsdnx8IShvPjApKXtpZihvLz12LHY8MCl7aWYobzxoKXJldHVybjtvPHAmJihwPW8pfWVsc2UgaWYodj4wKXtpZihvPnApcmV0dXJuO28+aCYmKGg9byl9aWYobz1pLXMsdnx8IShvPDApKXtpZihvLz12LHY8MCl7aWYobz5wKXJldHVybjtvPmgmJihoPW8pfWVsc2UgaWYodj4wKXtpZihvPGgpcmV0dXJuO288cCYmKHA9byl9cmV0dXJuIShoPjB8fHA8MSl8fChoPjAmJih0WzBdPVtjK2gqZCxzK2gqdl0pLHA8MSYmKHRbMV09W2MrcCpkLHMrcCp2XSksITApfX19fX1mdW5jdGlvbiBaZih0LG4sZSxyLGkpe3ZhciBvPXRbMV07aWYobylyZXR1cm4hMDt2YXIgdSxhLGM9dFswXSxzPXQubGVmdCxmPXQucmlnaHQsbD1zWzBdLGg9c1sxXSxwPWZbMF0sZD1mWzFdLHY9KGwrcCkvMixfPShoK2QpLzI7aWYoZD09PWgpe2lmKHY8bnx8dj49cilyZXR1cm47aWYobD5wKXtpZihjKXtpZihjWzFdPj1pKXJldHVybn1lbHNlIGM9W3YsZV07bz1bdixpXX1lbHNle2lmKGMpe2lmKGNbMV08ZSlyZXR1cm59ZWxzZSBjPVt2LGldO289W3YsZV19fWVsc2UgaWYodT0obC1wKS8oZC1oKSxhPV8tdSp2LHU8LTF8fHU+MSlpZihsPnApe2lmKGMpe2lmKGNbMV0+PWkpcmV0dXJufWVsc2UgYz1bKGUtYSkvdSxlXTtvPVsoaS1hKS91LGldfWVsc2V7aWYoYyl7aWYoY1sxXTxlKXJldHVybn1lbHNlIGM9WyhpLWEpL3UsaV07bz1bKGUtYSkvdSxlXX1lbHNlIGlmKGg8ZCl7aWYoYyl7aWYoY1swXT49cilyZXR1cm59ZWxzZSBjPVtuLHUqbithXTtvPVtyLHUqcithXX1lbHNle2lmKGMpe2lmKGNbMF08bilyZXR1cm59ZWxzZSBjPVtyLHUqcithXTtvPVtuLHUqbithXX1yZXR1cm4gdFswXT1jLHRbMV09bywhMH1mdW5jdGlvbiBHZih0LG4sZSxyKXtmb3IodmFyIGksbz1LbS5sZW5ndGg7by0tOylaZihpPUttW29dLHQsbixlLHIpJiYkZihpLHQsbixlLHIpJiYoTWF0aC5hYnMoaVswXVswXS1pWzFdWzBdKT5leHx8TWF0aC5hYnMoaVswXVsxXS1pWzFdWzFdKT5leCl8fGRlbGV0ZSBLbVtvXX1mdW5jdGlvbiBKZih0KXtyZXR1cm4gSm1bdC5pbmRleF09e3NpdGU6dCxoYWxmZWRnZXM6W119fWZ1bmN0aW9uIFFmKHQsbil7dmFyIGU9dC5zaXRlLHI9bi5sZWZ0LGk9bi5yaWdodDtyZXR1cm4gZT09PWkmJihpPXIscj1lKSxpP01hdGguYXRhbjIoaVsxXS1yWzFdLGlbMF0tclswXSk6KGU9PT1yPyhyPW5bMV0saT1uWzBdKToocj1uWzBdLGk9blsxXSksTWF0aC5hdGFuMihyWzBdLWlbMF0saVsxXS1yWzFdKSl9ZnVuY3Rpb24gS2YodCxuKXtyZXR1cm4gblsrKG4ubGVmdCE9PXQuc2l0ZSldfWZ1bmN0aW9uIHRsKHQsbil7cmV0dXJuIG5bKyhuLmxlZnQ9PT10LnNpdGUpXX1mdW5jdGlvbiBubCgpe2Zvcih2YXIgdCxuLGUscixpPTAsbz1KbS5sZW5ndGg7aTxvOysraSlpZigodD1KbVtpXSkmJihyPShuPXQuaGFsZmVkZ2VzKS5sZW5ndGgpKXt2YXIgdT1uZXcgQXJyYXkociksYT1uZXcgQXJyYXkocik7Zm9yKGU9MDtlPHI7KytlKXVbZV09ZSxhW2VdPVFmKHQsS21bbltlXV0pO2Zvcih1LnNvcnQoZnVuY3Rpb24odCxuKXtyZXR1cm4gYVtuXS1hW3RdfSksZT0wO2U8cjsrK2UpYVtlXT1uW3VbZV1dO2ZvcihlPTA7ZTxyOysrZSluW2VdPWFbZV19fWZ1bmN0aW9uIGVsKHQsbixlLHIpe3ZhciBpLG8sdSxhLGMscyxmLGwsaCxwLGQsdixfPUptLmxlbmd0aCx5PSEwO2ZvcihpPTA7aTxfOysraSlpZihvPUptW2ldKXtmb3IodT1vLnNpdGUsYz1vLmhhbGZlZGdlcyxhPWMubGVuZ3RoO2EtLTspS21bY1thXV18fGMuc3BsaWNlKGEsMSk7Zm9yKGE9MCxzPWMubGVuZ3RoO2E8czspcD10bChvLEttW2NbYV1dKSxkPXBbMF0sdj1wWzFdLGY9S2YobyxLbVtjWysrYSVzXV0pLGw9ZlswXSxoPWZbMV0sKE1hdGguYWJzKGQtbCk+ZXh8fE1hdGguYWJzKHYtaCk+ZXgpJiYoYy5zcGxpY2UoYSwwLEttLnB1c2goVmYodSxwLE1hdGguYWJzKGQtdCk8ZXgmJnItdj5leD9bdCxNYXRoLmFicyhsLXQpPGV4P2g6cl06TWF0aC5hYnModi1yKTxleCYmZS1kPmV4P1tNYXRoLmFicyhoLXIpPGV4P2w6ZSxyXTpNYXRoLmFicyhkLWUpPGV4JiZ2LW4+ZXg/W2UsTWF0aC5hYnMobC1lKTxleD9oOm5dOk1hdGguYWJzKHYtbik8ZXgmJmQtdD5leD9bTWF0aC5hYnMoaC1uKTxleD9sOnQsbl06bnVsbCkpLTEpLCsrcyk7cyYmKHk9ITEpfWlmKHkpe3ZhciBnLG0seCxiPTEvMDtmb3IoaT0wLHk9bnVsbDtpPF87KytpKShvPUptW2ldKSYmKHU9by5zaXRlLGc9dVswXS10LG09dVsxXS1uLHg9ZypnK20qbSx4PGImJihiPXgseT1vKSk7aWYoeSl7dmFyIHc9W3Qsbl0sTT1bdCxyXSxUPVtlLHJdLGs9W2Usbl07eS5oYWxmZWRnZXMucHVzaChLbS5wdXNoKFZmKHU9eS5zaXRlLHcsTSkpLTEsS20ucHVzaChWZih1LE0sVCkpLTEsS20ucHVzaChWZih1LFQsaykpLTEsS20ucHVzaChWZih1LGssdykpLTEpfX1mb3IoaT0wO2k8XzsrK2kpKG89Sm1baV0pJiYoby5oYWxmZWRnZXMubGVuZ3RofHxkZWxldGUgSm1baV0pfWZ1bmN0aW9uIHJsKCl7WWYodGhpcyksdGhpcy54PXRoaXMueT10aGlzLmFyYz10aGlzLnNpdGU9dGhpcy5jeT1udWxsfWZ1bmN0aW9uIGlsKHQpe3ZhciBuPXQuUCxlPXQuTjtpZihuJiZlKXt2YXIgcj1uLnNpdGUsaT10LnNpdGUsbz1lLnNpdGU7aWYociE9PW8pe3ZhciB1PWlbMF0sYT1pWzFdLGM9clswXS11LHM9clsxXS1hLGY9b1swXS11LGw9b1sxXS1hLGg9MiooYypsLXMqZik7aWYoIShoPj0tcngpKXt2YXIgcD1jKmMrcypzLGQ9ZipmK2wqbCx2PShsKnAtcypkKS9oLF89KGMqZC1mKnApL2gseT10eC5wb3AoKXx8bmV3IHJsO3kuYXJjPXQseS5zaXRlPWkseS54PXYrdSx5Lnk9KHkuY3k9XythKStNYXRoLnNxcnQodip2K18qXyksdC5jaXJjbGU9eTtmb3IodmFyIGc9bnVsbCxtPVFtLl87bTspaWYoeS55PG0ueXx8eS55PT09bS55JiZ5Lng8PW0ueCl7aWYoIW0uTCl7Zz1tLlA7YnJlYWt9bT1tLkx9ZWxzZXtpZighbS5SKXtnPW07YnJlYWt9bT1tLlJ9UW0uaW5zZXJ0KGcseSksZ3x8KFptPXkpfX19fWZ1bmN0aW9uIG9sKHQpe3ZhciBuPXQuY2lyY2xlO24mJihuLlB8fChabT1uLk4pLFFtLnJlbW92ZShuKSx0eC5wdXNoKG4pLFlmKG4pLHQuY2lyY2xlPW51bGwpfWZ1bmN0aW9uIHVsKCl7WWYodGhpcyksdGhpcy5lZGdlPXRoaXMuc2l0ZT10aGlzLmNpcmNsZT1udWxsfWZ1bmN0aW9uIGFsKHQpe3ZhciBuPW54LnBvcCgpfHxuZXcgdWw7cmV0dXJuIG4uc2l0ZT10LG59ZnVuY3Rpb24gY2wodCl7b2wodCksR20ucmVtb3ZlKHQpLG54LnB1c2godCksWWYodCl9ZnVuY3Rpb24gc2wodCl7dmFyIG49dC5jaXJjbGUsZT1uLngscj1uLmN5LGk9W2Uscl0sbz10LlAsdT10Lk4sYT1bdF07Y2wodCk7Zm9yKHZhciBjPW87Yy5jaXJjbGUmJk1hdGguYWJzKGUtYy5jaXJjbGUueCk8ZXgmJk1hdGguYWJzKHItYy5jaXJjbGUuY3kpPGV4OylvPWMuUCxhLnVuc2hpZnQoYyksY2woYyksYz1vO2EudW5zaGlmdChjKSxvbChjKTtmb3IodmFyIHM9dTtzLmNpcmNsZSYmTWF0aC5hYnMoZS1zLmNpcmNsZS54KTxleCYmTWF0aC5hYnMoci1zLmNpcmNsZS5jeSk8ZXg7KXU9cy5OLGEucHVzaChzKSxjbChzKSxzPXU7YS5wdXNoKHMpLG9sKHMpO3ZhciBmLGw9YS5sZW5ndGg7Zm9yKGY9MTtmPGw7KytmKXM9YVtmXSxjPWFbZi0xXSxXZihzLmVkZ2UsYy5zaXRlLHMuc2l0ZSxpKTtjPWFbMF0scz1hW2wtMV0scy5lZGdlPVhmKGMuc2l0ZSxzLnNpdGUsbnVsbCxpKSxpbChjKSxpbChzKX1mdW5jdGlvbiBmbCh0KXtmb3IodmFyIG4sZSxyLGksbz10WzBdLHU9dFsxXSxhPUdtLl87YTspaWYocj1sbChhLHUpLW8scj5leClhPWEuTDtlbHNle2lmKGk9by1obChhLHUpLCEoaT5leCkpe3I+LWV4PyhuPWEuUCxlPWEpOmk+LWV4PyhuPWEsZT1hLk4pOm49ZT1hO2JyZWFrfWlmKCFhLlIpe249YTticmVha31hPWEuUn1KZih0KTt2YXIgYz1hbCh0KTtpZihHbS5pbnNlcnQobixjKSxufHxlKXtpZihuPT09ZSlyZXR1cm4gb2wobiksZT1hbChuLnNpdGUpLEdtLmluc2VydChjLGUpLGMuZWRnZT1lLmVkZ2U9WGYobi5zaXRlLGMuc2l0ZSksaWwobiksdm9pZCBpbChlKTtpZighZSlyZXR1cm4gdm9pZChjLmVkZ2U9WGYobi5zaXRlLGMuc2l0ZSkpO29sKG4pLG9sKGUpO3ZhciBzPW4uc2l0ZSxmPXNbMF0sbD1zWzFdLGg9dFswXS1mLHA9dFsxXS1sLGQ9ZS5zaXRlLHY9ZFswXS1mLF89ZFsxXS1sLHk9MiooaCpfLXAqdiksZz1oKmgrcCpwLG09dip2K18qXyx4PVsoXypnLXAqbSkveStmLChoKm0tdipnKS95K2xdO1dmKGUuZWRnZSxzLGQseCksYy5lZGdlPVhmKHMsdCxudWxsLHgpLGUuZWRnZT1YZih0LGQsbnVsbCx4KSxpbChuKSxpbChlKX19ZnVuY3Rpb24gbGwodCxuKXt2YXIgZT10LnNpdGUscj1lWzBdLGk9ZVsxXSxvPWktbjtpZighbylyZXR1cm4gcjt2YXIgdT10LlA7aWYoIXUpcmV0dXJuLSgxLzApO2U9dS5zaXRlO3ZhciBhPWVbMF0sYz1lWzFdLHM9Yy1uO2lmKCFzKXJldHVybiBhO3ZhciBmPWEtcixsPTEvby0xL3MsaD1mL3M7cmV0dXJuIGw/KC1oK01hdGguc3FydChoKmgtMipsKihmKmYvKC0yKnMpLWMrcy8yK2ktby8yKSkpL2wrcjoocithKS8yfWZ1bmN0aW9uIGhsKHQsbil7dmFyIGU9dC5OO2lmKGUpcmV0dXJuIGxsKGUsbik7dmFyIHI9dC5zaXRlO3JldHVybiByWzFdPT09bj9yWzBdOjEvMH1mdW5jdGlvbiBwbCh0LG4sZSl7cmV0dXJuKHRbMF0tZVswXSkqKG5bMV0tdFsxXSktKHRbMF0tblswXSkqKGVbMV0tdFsxXSl9ZnVuY3Rpb24gZGwodCxuKXtyZXR1cm4gblsxXS10WzFdfHxuWzBdLXRbMF19ZnVuY3Rpb24gdmwodCxuKXt2YXIgZSxyLGksbz10LnNvcnQoZGwpLnBvcCgpO2ZvcihLbT1bXSxKbT1uZXcgQXJyYXkodC5sZW5ndGgpLEdtPW5ldyBJZixRbT1uZXcgSWY7OylpZihpPVptLG8mJighaXx8b1sxXTxpLnl8fG9bMV09PT1pLnkmJm9bMF08aS54KSlvWzBdPT09ZSYmb1sxXT09PXJ8fChmbChvKSxlPW9bMF0scj1vWzFdKSxvPXQucG9wKCk7ZWxzZXtpZighaSlicmVhaztzbChpLmFyYyl9aWYobmwoKSxuKXt2YXIgdT0rblswXVswXSxhPStuWzBdWzFdLGM9K25bMV1bMF0scz0rblsxXVsxXTtHZih1LGEsYyxzKSxlbCh1LGEsYyxzKX10aGlzLmVkZ2VzPUttLHRoaXMuY2VsbHM9Sm0sR209UW09S209Sm09bnVsbH1mdW5jdGlvbiBfbCgpe2Z1bmN0aW9uIHQodCl7cmV0dXJuIG5ldyB2bCh0Lm1hcChmdW5jdGlvbihyLGkpe3ZhciBvPVtNYXRoLnJvdW5kKG4ocixpLHQpL2V4KSpleCxNYXRoLnJvdW5kKGUocixpLHQpL2V4KSpleF07cmV0dXJuIG8uaW5kZXg9aSxvLmRhdGE9cixvfSkscil9dmFyIG49T2YsZT1GZixyPW51bGw7cmV0dXJuIHQucG9seWdvbnM9ZnVuY3Rpb24obil7cmV0dXJuIHQobikucG9seWdvbnMoKX0sdC5saW5rcz1mdW5jdGlvbihuKXtyZXR1cm4gdChuKS5saW5rcygpfSx0LnRyaWFuZ2xlcz1mdW5jdGlvbihuKXtyZXR1cm4gdChuKS50cmlhbmdsZXMoKX0sdC54PWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPSJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6RGYoK2UpLHQpOm59LHQueT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT0iZnVuY3Rpb24iPT10eXBlb2Ygbj9uOkRmKCtuKSx0KTplfSx0LmV4dGVudD1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj1udWxsPT1uP251bGw6W1srblswXVswXSwrblswXVsxXV0sWytuWzFdWzBdLCtuWzFdWzFdXV0sdCk6ciYmW1tyWzBdWzBdLHJbMF1bMV1dLFtyWzFdWzBdLHJbMV1bMV1dXX0sdC5zaXplPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPW51bGw9PW4/bnVsbDpbWzAsMF0sWytuWzBdLCtuWzFdXV0sdCk6ciYmW3JbMV1bMF0tclswXVswXSxyWzFdWzFdLXJbMF1bMV1dfSx0fWZ1bmN0aW9uIHlsKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0fX1mdW5jdGlvbiBnbCh0LG4sZSl7dGhpcy50YXJnZXQ9dCx0aGlzLnR5cGU9bix0aGlzLnRyYW5zZm9ybT1lfWZ1bmN0aW9uIG1sKHQsbixlKXt0aGlzLms9dCx0aGlzLng9bix0aGlzLnk9ZX1mdW5jdGlvbiB4bCh0KXtyZXR1cm4gdC5fX3pvb218fGl4fWZ1bmN0aW9uIGJsKCl7dC5ldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKX1mdW5jdGlvbiB3bCgpe3QuZXZlbnQucHJldmVudERlZmF1bHQoKSx0LmV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpfWZ1bmN0aW9uIE1sKCl7cmV0dXJuIXQuZXZlbnQuYnV0dG9ufWZ1bmN0aW9uIFRsKCl7dmFyIHQsbixlPXRoaXM7cmV0dXJuIGUgaW5zdGFuY2VvZiBTVkdFbGVtZW50PyhlPWUub3duZXJTVkdFbGVtZW50fHxlLHQ9ZS53aWR0aC5iYXNlVmFsLnZhbHVlLG49ZS5oZWlnaHQuYmFzZVZhbC52YWx1ZSk6KHQ9ZS5jbGllbnRXaWR0aCxuPWUuY2xpZW50SGVpZ2h0KSxbWzAsMF0sW3Qsbl1dfWZ1bmN0aW9uIGtsKCl7cmV0dXJuIHRoaXMuX196b29tfHxpeH1mdW5jdGlvbiBTbCgpe2Z1bmN0aW9uIG4odCl7dC5vbigid2hlZWwuem9vbSIscykub24oIm1vdXNlZG93bi56b29tIixmKS5vbigiZGJsY2xpY2suem9vbSIsbCkub24oInRvdWNoc3RhcnQuem9vbSIsaCkub24oInRvdWNobW92ZS56b29tIixwKS5vbigidG91Y2hlbmQuem9vbSB0b3VjaGNhbmNlbC56b29tIixkKS5zdHlsZSgiLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yIiwicmdiYSgwLDAsMCwwKSIpLnByb3BlcnR5KCJfX3pvb20iLGtsKX1mdW5jdGlvbiBlKHQsbil7cmV0dXJuIG49TWF0aC5tYXgobSxNYXRoLm1pbih4LG4pKSxuPT09dC5rP3Q6bmV3IG1sKG4sdC54LHQueSl9ZnVuY3Rpb24gcih0LG4sZSl7dmFyIHI9blswXS1lWzBdKnQuayxpPW5bMV0tZVsxXSp0Lms7cmV0dXJuIHI9PT10LngmJmk9PT10Lnk/dDpuZXcgbWwodC5rLHIsaSl9ZnVuY3Rpb24gaSh0LG4pe3ZhciBlPU1hdGgubWluKDAsdC5pbnZlcnRYKG5bMF1bMF0pLWIpfHxNYXRoLm1heCgwLHQuaW52ZXJ0WChuWzFdWzBdKS13KSxyPU1hdGgubWluKDAsdC5pbnZlcnRZKG5bMF1bMV0pLU0pfHxNYXRoLm1heCgwLHQuaW52ZXJ0WShuWzFdWzFdKS1UKTtyZXR1cm4gZXx8cj90LnRyYW5zbGF0ZShlLHIpOnR9ZnVuY3Rpb24gbyh0KXtyZXR1cm5bKCt0WzBdWzBdKyArdFsxXVswXSkvMiwoK3RbMF1bMV0rICt0WzFdWzFdKS8yXX1mdW5jdGlvbiB1KHQsbixlKXt0Lm9uKCJzdGFydC56b29tIixmdW5jdGlvbigpe2EodGhpcyxhcmd1bWVudHMpLnN0YXJ0KCl9KS5vbigiaW50ZXJydXB0Lnpvb20gZW5kLnpvb20iLGZ1bmN0aW9uKCl7YSh0aGlzLGFyZ3VtZW50cykuZW5kKCl9KS50d2Vlbigiem9vbSIsZnVuY3Rpb24oKXt2YXIgdD10aGlzLHI9YXJndW1lbnRzLGk9YSh0LHIpLHU9Zy5hcHBseSh0LHIpLGM9ZXx8byh1KSxzPU1hdGgubWF4KHVbMV1bMF0tdVswXVswXSx1WzFdWzFdLXVbMF1bMV0pLGY9dC5fX3pvb20sbD0iZnVuY3Rpb24iPT10eXBlb2Ygbj9uLmFwcGx5KHQscik6bixoPXlyKGYuaW52ZXJ0KGMpLmNvbmNhdChzL2YuayksbC5pbnZlcnQoYykuY29uY2F0KHMvbC5rKSk7cmV0dXJuIGZ1bmN0aW9uKHQpe2lmKDE9PT10KXQ9bDtlbHNle3ZhciBuPWgodCksZT1zL25bMl07dD1uZXcgbWwoZSxjWzBdLW5bMF0qZSxjWzFdLW5bMV0qZSl9aS56b29tKG51bGwsdCl9fSl9ZnVuY3Rpb24gYSh0LG4pe2Zvcih2YXIgZSxyPTAsaT1TLmxlbmd0aDtyPGk7KytyKWlmKChlPVNbcl0pLnRoYXQ9PT10KXJldHVybiBlO3JldHVybiBuZXcgYyh0LG4pfWZ1bmN0aW9uIGModCxuKXt0aGlzLnRoYXQ9dCx0aGlzLmFyZ3M9bix0aGlzLmluZGV4PS0xLHRoaXMuYWN0aXZlPTAsdGhpcy5leHRlbnQ9Zy5hcHBseSh0LG4pfWZ1bmN0aW9uIHMoKXtmdW5jdGlvbiBuKCl7by53aGVlbD1udWxsLG8uZW5kKCl9aWYoeS5hcHBseSh0aGlzLGFyZ3VtZW50cykpe3ZhciBvPWEodGhpcyxhcmd1bWVudHMpLHU9dGhpcy5fX3pvb20sYz1NYXRoLm1heChtLE1hdGgubWluKHgsdS5rKk1hdGgucG93KDIsLXQuZXZlbnQuZGVsdGFZKih0LmV2ZW50LmRlbHRhTW9kZT8xMjA6MSkvNTAwKSkpLHM9ZHUodGhpcyk7aWYoby53aGVlbClvLm1vdXNlWzBdWzBdPT09c1swXSYmby5tb3VzZVswXVsxXT09PXNbMV18fChvLm1vdXNlWzFdPXUuaW52ZXJ0KG8ubW91c2VbMF09cykpLGNsZWFyVGltZW91dChvLndoZWVsKTtlbHNle2lmKHUuaz09PWMpcmV0dXJuO28ubW91c2U9W3MsdS5pbnZlcnQocyldLEhhKHRoaXMpLG8uc3RhcnQoKX13bCgpLG8ud2hlZWw9c2V0VGltZW91dChuLEUpLG8uem9vbSgibW91c2UiLGkocihlKHUsYyksby5tb3VzZVswXSxvLm1vdXNlWzFdKSxvLmV4dGVudCkpfX1mdW5jdGlvbiBmKCl7ZnVuY3Rpb24gbigpe3dsKCksby5tb3ZlZD0hMCxvLnpvb20oIm1vdXNlIixpKHIoby50aGF0Ll9fem9vbSxvLm1vdXNlWzBdPWR1KG8udGhhdCksby5tb3VzZVsxXSksby5leHRlbnQpKX1mdW5jdGlvbiBlKCl7dS5vbigibW91c2Vtb3ZlLnpvb20gbW91c2V1cC56b29tIixudWxsKSxDZih0LmV2ZW50LnZpZXcsby5tb3ZlZCksd2woKSxvLmVuZCgpfWlmKCFfJiZ5LmFwcGx5KHRoaXMsYXJndW1lbnRzKSl7dmFyIG89YSh0aGlzLGFyZ3VtZW50cyksdT1SYSh0LmV2ZW50LnZpZXcpLm9uKCJtb3VzZW1vdmUuem9vbSIsbiwhMCkub24oIm1vdXNldXAuem9vbSIsZSwhMCksYz1kdSh0aGlzKTtFZih0LmV2ZW50LnZpZXcpLGJsKCksby5tb3VzZT1bYyx0aGlzLl9fem9vbS5pbnZlcnQoYyldLEhhKHRoaXMpLG8uc3RhcnQoKX19ZnVuY3Rpb24gbCgpe2lmKHkuYXBwbHkodGhpcyxhcmd1bWVudHMpKXt2YXIgbz10aGlzLl9fem9vbSxhPWR1KHRoaXMpLGM9by5pbnZlcnQoYSkscz1vLmsqKHQuZXZlbnQuc2hpZnRLZXk/LjU6MiksZj1pKHIoZShvLHMpLGEsYyksZy5hcHBseSh0aGlzLGFyZ3VtZW50cykpO3dsKCksaz4wP1JhKHRoaXMpLnRyYW5zaXRpb24oKS5kdXJhdGlvbihrKS5jYWxsKHUsZixhKTpSYSh0aGlzKS5jYWxsKG4udHJhbnNmb3JtLGYpfX1mdW5jdGlvbiBoKCl7aWYoeS5hcHBseSh0aGlzLGFyZ3VtZW50cykpe3ZhciBuLGUscixpPWEodGhpcyxhcmd1bWVudHMpLG89dC5ldmVudC5jaGFuZ2VkVG91Y2hlcyx1PW8ubGVuZ3RoO2ZvcihibCgpLG49MDtuPHU7KytuKWU9b1tuXSxyPURhKHRoaXMsbyxlLmlkZW50aWZpZXIpLHI9W3IsdGhpcy5fX3pvb20uaW52ZXJ0KHIpLGUuaWRlbnRpZmllcl0saS50b3VjaDA/aS50b3VjaDF8fChpLnRvdWNoMT1yKTppLnRvdWNoMD1yO3JldHVybiB2JiYodj1jbGVhclRpbWVvdXQodiksIWkudG91Y2gxKT8oaS5lbmQoKSxsLmFwcGx5KHRoaXMsYXJndW1lbnRzKSk6dm9pZCh0LmV2ZW50LnRvdWNoZXMubGVuZ3RoPT09dSYmKHY9c2V0VGltZW91dChmdW5jdGlvbigpe3Y9bnVsbH0sQSksSGEodGhpcyksaS5zdGFydCgpKSl9fWZ1bmN0aW9uIHAoKXt2YXIgbixvLHUsYyxzPWEodGhpcyxhcmd1bWVudHMpLGY9dC5ldmVudC5jaGFuZ2VkVG91Y2hlcyxsPWYubGVuZ3RoO2Zvcih3bCgpLHYmJih2PWNsZWFyVGltZW91dCh2KSksbj0wO248bDsrK24pbz1mW25dLHU9RGEodGhpcyxmLG8uaWRlbnRpZmllcikscy50b3VjaDAmJnMudG91Y2gwWzJdPT09by5pZGVudGlmaWVyP3MudG91Y2gwWzBdPXU6cy50b3VjaDEmJnMudG91Y2gxWzJdPT09by5pZGVudGlmaWVyJiYocy50b3VjaDFbMF09dSk7aWYobz1zLnRoYXQuX196b29tLHMudG91Y2gxKXt2YXIgaD1zLnRvdWNoMFswXSxwPXMudG91Y2gwWzFdLGQ9cy50b3VjaDFbMF0sXz1zLnRvdWNoMVsxXSx5PSh5PWRbMF0taFswXSkqeSsoeT1kWzFdLWhbMV0pKnksZz0oZz1fWzBdLXBbMF0pKmcrKGc9X1sxXS1wWzFdKSpnO289ZShvLE1hdGguc3FydCh5L2cpKSx1PVsoaFswXStkWzBdKS8yLChoWzFdK2RbMV0pLzJdLGM9WyhwWzBdK19bMF0pLzIsKHBbMV0rX1sxXSkvMl19ZWxzZXtpZighcy50b3VjaDApcmV0dXJuO3U9cy50b3VjaDBbMF0sYz1zLnRvdWNoMFsxXX1zLnpvb20oInRvdWNoIixpKHIobyx1LGMpLHMuZXh0ZW50KSl9ZnVuY3Rpb24gZCgpe3ZhciBuLGUscj1hKHRoaXMsYXJndW1lbnRzKSxpPXQuZXZlbnQuY2hhbmdlZFRvdWNoZXMsbz1pLmxlbmd0aDtmb3IoYmwoKSxfJiZjbGVhclRpbWVvdXQoXyksXz1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Xz1udWxsfSxBKSxuPTA7bjxvOysrbillPWlbbl0sci50b3VjaDAmJnIudG91Y2gwWzJdPT09ZS5pZGVudGlmaWVyP2RlbGV0ZSByLnRvdWNoMDpyLnRvdWNoMSYmci50b3VjaDFbMl09PT1lLmlkZW50aWZpZXImJmRlbGV0ZSByLnRvdWNoMTtyLnRvdWNoMSYmIXIudG91Y2gwJiYoci50b3VjaDA9ci50b3VjaDEsZGVsZXRlIHIudG91Y2gxKSxyLnRvdWNoMHx8ci5lbmQoKX12YXIgdixfLHk9TWwsZz1UbCxtPTAseD0xLzAsYj0teCx3PXgsTT1iLFQ9dyxrPTI1MCxTPVtdLE49TXIoInN0YXJ0Iiwiem9vbSIsImVuZCIpLEE9NTAwLEU9MTUwO3JldHVybiBuLnRyYW5zZm9ybT1mdW5jdGlvbih0LG4pe3ZhciBlPXQuc2VsZWN0aW9uP3Quc2VsZWN0aW9uKCk6dDtlLnByb3BlcnR5KCJfX3pvb20iLGtsKSx0IT09ZT91KHQsbik6ZS5pbnRlcnJ1cHQoKS5lYWNoKGZ1bmN0aW9uKCl7YSh0aGlzLGFyZ3VtZW50cykuc3RhcnQoKS56b29tKG51bGwsImZ1bmN0aW9uIj09dHlwZW9mIG4/bi5hcHBseSh0aGlzLGFyZ3VtZW50cyk6bikuZW5kKCl9KX0sbi5zY2FsZUJ5PWZ1bmN0aW9uKHQsZSl7bi5zY2FsZVRvKHQsZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9fem9vbS5rLG49ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk6ZTtyZXR1cm4gdCpufSl9LG4uc2NhbGVUbz1mdW5jdGlvbih0LHUpe24udHJhbnNmb3JtKHQsZnVuY3Rpb24oKXt2YXIgdD1nLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxuPXRoaXMuX196b29tLGE9byh0KSxjPW4uaW52ZXJ0KGEpLHM9ImZ1bmN0aW9uIj09dHlwZW9mIHU/dS5hcHBseSh0aGlzLGFyZ3VtZW50cyk6dTtyZXR1cm4gaShyKGUobixzKSxhLGMpLHQpfSl9LG4udHJhbnNsYXRlQnk9ZnVuY3Rpb24odCxlLHIpe24udHJhbnNmb3JtKHQsZnVuY3Rpb24oKXtyZXR1cm4gaSh0aGlzLl9fem9vbS50cmFuc2xhdGUoImZ1bmN0aW9uIj09dHlwZW9mIGU/ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk6ZSwiZnVuY3Rpb24iPT10eXBlb2Ygcj9yLmFwcGx5KHRoaXMsYXJndW1lbnRzKTpyKSxnLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9KX0sYy5wcm90b3R5cGU9e3N0YXJ0OmZ1bmN0aW9uKCl7cmV0dXJuIDE9PT0rK3RoaXMuYWN0aXZlJiYodGhpcy5pbmRleD1TLnB1c2godGhpcyktMSx0aGlzLmVtaXQoInN0YXJ0IikpLHRoaXN9LHpvb206ZnVuY3Rpb24odCxuKXtyZXR1cm4gdGhpcy5tb3VzZSYmIm1vdXNlIiE9PXQmJih0aGlzLm1vdXNlWzFdPW4uaW52ZXJ0KHRoaXMubW91c2VbMF0pKSx0aGlzLnRvdWNoMCYmInRvdWNoIiE9PXQmJih0aGlzLnRvdWNoMFsxXT1uLmludmVydCh0aGlzLnRvdWNoMFswXSkpLHRoaXMudG91Y2gxJiYidG91Y2giIT09dCYmKHRoaXMudG91Y2gxWzFdPW4uaW52ZXJ0KHRoaXMudG91Y2gxWzBdKSksdGhpcy50aGF0Ll9fem9vbT1uLHRoaXMuZW1pdCgiem9vbSIpLHRoaXN9LGVuZDpmdW5jdGlvbigpe3JldHVybiAwPT09LS10aGlzLmFjdGl2ZSYmKFMuc3BsaWNlKHRoaXMuaW5kZXgsMSksdGhpcy5pbmRleD0tMSx0aGlzLmVtaXQoImVuZCIpKSx0aGlzfSxlbWl0OmZ1bmN0aW9uKHQpe2x1KG5ldyBnbChuLHQsdGhpcy50aGF0Ll9fem9vbSksTi5hcHBseSxOLFt0LHRoaXMudGhhdCx0aGlzLmFyZ3NdKX19LG4uZmlsdGVyPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh5PSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6eWwoISF0KSxuKTp5fSxuLmV4dGVudD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZz0iZnVuY3Rpb24iPT10eXBlb2YgdD90OnlsKFtbK3RbMF1bMF0sK3RbMF1bMV1dLFsrdFsxXVswXSwrdFsxXVsxXV1dKSxuKTpnfSxuLnNjYWxlRXh0ZW50PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhtPSt0WzBdLHg9K3RbMV0sbik6W20seF19LG4udHJhbnNsYXRlRXh0ZW50PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhiPSt0WzBdWzBdLHc9K3RbMV1bMF0sTT0rdFswXVsxXSxUPSt0WzFdWzFdLG4pOltbYixNXSxbdyxUXV19LG4uZHVyYXRpb249ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGs9K3Qsbik6a30sbi5vbj1mdW5jdGlvbigpe3ZhciB0PU4ub24uYXBwbHkoTixhcmd1bWVudHMpO3JldHVybiB0PT09Tj9uOnR9LG59ZnVuY3Rpb24gTmwodCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fWZ1bmN0aW9uIEFsKHQsbixlKXt0aGlzLnRhcmdldD10LHRoaXMudHlwZT1uLHRoaXMuc2VsZWN0aW9uPWV9ZnVuY3Rpb24gRWwoKXt0LmV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpfWZ1bmN0aW9uIENsKCl7dC5ldmVudC5wcmV2ZW50RGVmYXVsdCgpLHQuZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCl9ZnVuY3Rpb24gemwodCl7cmV0dXJue3R5cGU6dH19ZnVuY3Rpb24gUGwoKXtyZXR1cm4hdC5ldmVudC5idXR0b259ZnVuY3Rpb24gcWwoKXt2YXIgdD10aGlzLm93bmVyU1ZHRWxlbWVudHx8dGhpcztyZXR1cm5bWzAsMF0sW3Qud2lkdGguYmFzZVZhbC52YWx1ZSx0LmhlaWdodC5iYXNlVmFsLnZhbHVlXV19ZnVuY3Rpb24gTGwodCl7Zm9yKDshdC5fX2JydXNoOylpZighKHQ9dC5wYXJlbnROb2RlKSlyZXR1cm47cmV0dXJuIHQuX19icnVzaH1mdW5jdGlvbiBSbCh0KXtyZXR1cm4gdFswXVswXT09PXRbMV1bMF18fHRbMF1bMV09PT10WzFdWzFdfWZ1bmN0aW9uIFVsKHQpe3ZhciBuPXQuX19icnVzaDtyZXR1cm4gbj9uLmRpbS5vdXRwdXQobi5zZWxlY3Rpb24pOm51bGx9ZnVuY3Rpb24gRGwoKXtyZXR1cm4gSWwoc3gpfWZ1bmN0aW9uIE9sKCl7cmV0dXJuIElsKGZ4KX1mdW5jdGlvbiBGbCgpe3JldHVybiBJbChseCl9ZnVuY3Rpb24gSWwobil7ZnVuY3Rpb24gZSh0KXt2YXIgZT10LnByb3BlcnR5KCJfX2JydXNoIixhKS5zZWxlY3RBbGwoIi5vdmVybGF5IikuZGF0YShbemwoIm92ZXJsYXkiKV0pO2UuZW50ZXIoKS5hcHBlbmQoInJlY3QiKS5hdHRyKCJjbGFzcyIsIm92ZXJsYXkiKS5hdHRyKCJwb2ludGVyLWV2ZW50cyIsImFsbCIpLmF0dHIoImN1cnNvciIsaHgub3ZlcmxheSkubWVyZ2UoZSkuZWFjaChmdW5jdGlvbigpe3ZhciB0PUxsKHRoaXMpLmV4dGVudDtSYSh0aGlzKS5hdHRyKCJ4Iix0WzBdWzBdKS5hdHRyKCJ5Iix0WzBdWzFdKS5hdHRyKCJ3aWR0aCIsdFsxXVswXS10WzBdWzBdKS5hdHRyKCJoZWlnaHQiLHRbMV1bMV0tdFswXVsxXSl9KSx0LnNlbGVjdEFsbCgiLnNlbGVjdGlvbiIpLmRhdGEoW3psKCJzZWxlY3Rpb24iKV0pLmVudGVyKCkuYXBwZW5kKCJyZWN0IikuYXR0cigiY2xhc3MiLCJzZWxlY3Rpb24iKS5hdHRyKCJjdXJzb3IiLGh4LnNlbGVjdGlvbikuYXR0cigiZmlsbCIsIiM3NzciKS5hdHRyKCJmaWxsLW9wYWNpdHkiLC4zKS5hdHRyKCJzdHJva2UiLCIjZmZmIikuYXR0cigic2hhcGUtcmVuZGVyaW5nIiwiY3Jpc3BFZGdlcyIpO3ZhciBpPXQuc2VsZWN0QWxsKCIuaGFuZGxlIikuZGF0YShuLmhhbmRsZXMsZnVuY3Rpb24odCl7cmV0dXJuIHQudHlwZX0pO2kuZXhpdCgpLnJlbW92ZSgpLGkuZW50ZXIoKS5hcHBlbmQoInJlY3QiKS5hdHRyKCJjbGFzcyIsZnVuY3Rpb24odCl7cmV0dXJuImhhbmRsZSBoYW5kbGUtLSIrdC50eXBlfSkuYXR0cigiY3Vyc29yIixmdW5jdGlvbih0KXtyZXR1cm4gaHhbdC50eXBlXX0pLHQuZWFjaChyKS5hdHRyKCJmaWxsIiwibm9uZSIpLmF0dHIoInBvaW50ZXItZXZlbnRzIiwiYWxsIikuc3R5bGUoIi13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvciIsInJnYmEoMCwwLDAsMCkiKS5vbigibW91c2Vkb3duLmJydXNoIHRvdWNoc3RhcnQuYnJ1c2giLHUpfWZ1bmN0aW9uIHIoKXt2YXIgdD1SYSh0aGlzKSxuPUxsKHRoaXMpLnNlbGVjdGlvbjtuPyh0LnNlbGVjdEFsbCgiLnNlbGVjdGlvbiIpLnN0eWxlKCJkaXNwbGF5IixudWxsKS5hdHRyKCJ4IixuWzBdWzBdKS5hdHRyKCJ5IixuWzBdWzFdKS5hdHRyKCJ3aWR0aCIsblsxXVswXS1uWzBdWzBdKS5hdHRyKCJoZWlnaHQiLG5bMV1bMV0tblswXVsxXSksdC5zZWxlY3RBbGwoIi5oYW5kbGUiKS5zdHlsZSgiZGlzcGxheSIsbnVsbCkuYXR0cigieCIsZnVuY3Rpb24odCl7cmV0dXJuImUiPT09dC50eXBlW3QudHlwZS5sZW5ndGgtMV0/blsxXVswXS1oLzI6blswXVswXS1oLzJ9KS5hdHRyKCJ5IixmdW5jdGlvbih0KXtyZXR1cm4icyI9PT10LnR5cGVbMF0/blsxXVsxXS1oLzI6blswXVsxXS1oLzJ9KS5hdHRyKCJ3aWR0aCIsZnVuY3Rpb24odCl7cmV0dXJuIm4iPT09dC50eXBlfHwicyI9PT10LnR5cGU/blsxXVswXS1uWzBdWzBdK2g6aH0pLmF0dHIoImhlaWdodCIsZnVuY3Rpb24odCl7cmV0dXJuImUiPT09dC50eXBlfHwidyI9PT10LnR5cGU/blsxXVsxXS1uWzBdWzFdK2g6aH0pKTp0LnNlbGVjdEFsbCgiLnNlbGVjdGlvbiwuaGFuZGxlIikuc3R5bGUoImRpc3BsYXkiLCJub25lIikuYXR0cigieCIsbnVsbCkuYXR0cigieSIsbnVsbCkuYXR0cigid2lkdGgiLG51bGwpLmF0dHIoImhlaWdodCIsbnVsbCl9ZnVuY3Rpb24gaSh0LG4pe3JldHVybiB0Ll9fYnJ1c2guZW1pdHRlcnx8bmV3IG8odCxuKX1mdW5jdGlvbiBvKHQsbil7dGhpcy50aGF0PXQsdGhpcy5hcmdzPW4sdGhpcy5zdGF0ZT10Ll9fYnJ1c2gsdGhpcy5hY3RpdmU9MH1mdW5jdGlvbiB1KCl7ZnVuY3Rpb24gZSgpe3ZhciB0PWR1KFQpOyFVfHx3fHxNfHwoTWF0aC5hYnModFswXS1PWzBdKT5NYXRoLmFicyh0WzFdLU9bMV0pP009ITA6dz0hMCksTz10LGI9ITAsQ2woKSxvKCl9ZnVuY3Rpb24gbygpe3ZhciB0O3N3aXRjaChtPU9bMF0tRFswXSx4PU9bMV0tRFsxXSxTKXtjYXNlIHV4OmNhc2Ugb3g6TiYmKG09TWF0aC5tYXgoUC1sLE1hdGgubWluKEwtdixtKSksaD1sK20sXz12K20pLEEmJih4PU1hdGgubWF4KHEtcCxNYXRoLm1pbihSLXkseCkpLGQ9cCt4LGc9eSt4KTticmVhaztjYXNlIGF4Ok48MD8obT1NYXRoLm1heChQLWwsTWF0aC5taW4oTC1sLG0pKSxoPWwrbSxfPXYpOk4+MCYmKG09TWF0aC5tYXgoUC12LE1hdGgubWluKEwtdixtKSksaD1sLF89dittKSxBPDA/KHg9TWF0aC5tYXgocS1wLE1hdGgubWluKFItcCx4KSksZD1wK3gsZz15KTpBPjAmJih4PU1hdGgubWF4KHEteSxNYXRoLm1pbihSLXkseCkpLGQ9cCxnPXkreCk7YnJlYWs7Y2FzZSBjeDpOJiYoaD1NYXRoLm1heChQLE1hdGgubWluKEwsbC1tKk4pKSxfPU1hdGgubWF4KFAsTWF0aC5taW4oTCx2K20qTikpKSxBJiYoZD1NYXRoLm1heChxLE1hdGgubWluKFIscC14KkEpKSxnPU1hdGgubWF4KHEsTWF0aC5taW4oUix5K3gqQSkpKX1fPGgmJihOKj0tMSx0PWwsbD12LHY9dCx0PWgsaD1fLF89dCxrIGluIHB4JiZZLmF0dHIoImN1cnNvciIsaHhbaz1weFtrXV0pKSxnPGQmJihBKj0tMSx0PXAscD15LHk9dCx0PWQsZD1nLGc9dCxrIGluIGR4JiZZLmF0dHIoImN1cnNvciIsaHhbaz1keFtrXV0pKSx6PUUuc2VsZWN0aW9uLHcmJihoPXpbMF1bMF0sXz16WzFdWzBdKSxNJiYoZD16WzBdWzFdLGc9elsxXVsxXSkselswXVswXT09PWgmJnpbMF1bMV09PT1kJiZ6WzFdWzBdPT09XyYmelsxXVsxXT09PWd8fChFLnNlbGVjdGlvbj1bW2gsZF0sW18sZ11dLHIuY2FsbChUKSxGLmJydXNoKCkpfWZ1bmN0aW9uIHUoKXtpZihFbCgpLHQuZXZlbnQudG91Y2hlcyl7aWYodC5ldmVudC50b3VjaGVzLmxlbmd0aClyZXR1cm47YyYmY2xlYXJUaW1lb3V0KGMpLGM9c2V0VGltZW91dChmdW5jdGlvbigpe2M9bnVsbH0sNTAwKSxJLm9uKCJ0b3VjaG1vdmUuYnJ1c2ggdG91Y2hlbmQuYnJ1c2ggdG91Y2hjYW5jZWwuYnJ1c2giLG51bGwpfWVsc2UgQ2YodC5ldmVudC52aWV3LGIpLEIub24oImtleWRvd24uYnJ1c2gga2V5dXAuYnJ1c2ggbW91c2Vtb3ZlLmJydXNoIG1vdXNldXAuYnJ1c2giLG51bGwpO0kuYXR0cigicG9pbnRlci1ldmVudHMiLCJhbGwiKSxZLmF0dHIoImN1cnNvciIsaHgub3ZlcmxheSksUmwoeikmJihFLnNlbGVjdGlvbj1udWxsLHIuY2FsbChUKSksRi5lbmQoKX1mdW5jdGlvbiBhKCl7c3dpdGNoKHQuZXZlbnQua2V5Q29kZSl7Y2FzZSAxNjpVPU4mJkE7YnJlYWs7Y2FzZSAxODpTPT09YXgmJihOJiYodj1fLW0qTixsPWgrbSpOKSxBJiYoeT1nLXgqQSxwPWQreCpBKSxTPWN4LG8oKSk7YnJlYWs7Y2FzZSAzMjpTIT09YXgmJlMhPT1jeHx8KE48MD92PV8tbTpOPjAmJihsPWgtbSksQTwwP3k9Zy14OkE+MCYmKHA9ZC14KSxTPXV4LFkuYXR0cigiY3Vyc29yIixoeC5zZWxlY3Rpb24pLG8oKSk7YnJlYWs7ZGVmYXVsdDpyZXR1cm59Q2woKX1mdW5jdGlvbiBzKCl7c3dpdGNoKHQuZXZlbnQua2V5Q29kZSl7Y2FzZSAxNjpVJiYodz1NPVU9ITEsbygpKTticmVhaztjYXNlIDE4OlM9PT1jeCYmKE48MD92PV86Tj4wJiYobD1oKSxBPDA/eT1nOkE+MCYmKHA9ZCksUz1heCxvKCkpO2JyZWFrO2Nhc2UgMzI6Uz09PXV4JiYodC5ldmVudC5hbHRLZXk/KE4mJih2PV8tbSpOLGw9aCttKk4pLEEmJih5PWcteCpBLHA9ZCt4KkEpLFM9Y3gpOihOPDA/dj1fOk4+MCYmKGw9aCksQTwwP3k9ZzpBPjAmJihwPWQpLFM9YXgpLFkuYXR0cigiY3Vyc29yIixoeFtrXSksbygpKTticmVhaztkZWZhdWx0OnJldHVybn1DbCgpfWlmKHQuZXZlbnQudG91Y2hlcyl7aWYodC5ldmVudC5jaGFuZ2VkVG91Y2hlcy5sZW5ndGg8dC5ldmVudC50b3VjaGVzLmxlbmd0aClyZXR1cm4gQ2woKX1lbHNlIGlmKGMpcmV0dXJuO2lmKGYuYXBwbHkodGhpcyxhcmd1bWVudHMpKXt2YXIgbCxoLHAsZCx2LF8seSxnLG0seCxiLHcsTSxUPXRoaXMsaz10LmV2ZW50LnRhcmdldC5fX2RhdGFfXy50eXBlLFM9InNlbGVjdGlvbiI9PT0odC5ldmVudC5tZXRhS2V5P2s9Im92ZXJsYXkiOmspP294OnQuZXZlbnQuYWx0S2V5P2N4OmF4LE49bj09PWZ4P251bGw6dnhba10sQT1uPT09c3g/bnVsbDpfeFtrXSxFPUxsKFQpLEM9RS5leHRlbnQsej1FLnNlbGVjdGlvbixQPUNbMF1bMF0scT1DWzBdWzFdLEw9Q1sxXVswXSxSPUNbMV1bMV0sVT1OJiZBJiZ0LmV2ZW50LnNoaWZ0S2V5LEQ9ZHUoVCksTz1ELEY9aShULGFyZ3VtZW50cykuYmVmb3Jlc3RhcnQoKTsib3ZlcmxheSI9PT1rP0Uuc2VsZWN0aW9uPXo9W1tsPW49PT1meD9QOkRbMF0scD1uPT09c3g/cTpEWzFdXSxbdj1uPT09Zng/TDpsLHk9bj09PXN4P1I6cF1dOihsPXpbMF1bMF0scD16WzBdWzFdLHY9elsxXVswXSx5PXpbMV1bMV0pLGg9bCxkPXAsXz12LGc9eTt2YXIgST1SYShUKS5hdHRyKCJwb2ludGVyLWV2ZW50cyIsIm5vbmUiKSxZPUkuc2VsZWN0QWxsKCIub3ZlcmxheSIpLmF0dHIoImN1cnNvciIsaHhba10pO2lmKHQuZXZlbnQudG91Y2hlcylJLm9uKCJ0b3VjaG1vdmUuYnJ1c2giLGUsITApLm9uKCJ0b3VjaGVuZC5icnVzaCB0b3VjaGNhbmNlbC5icnVzaCIsdSwhMCk7ZWxzZXt2YXIgQj1SYSh0LmV2ZW50LnZpZXcpLm9uKCJrZXlkb3duLmJydXNoIixhLCEwKS5vbigia2V5dXAuYnJ1c2giLHMsITApLm9uKCJtb3VzZW1vdmUuYnJ1c2giLGUsITApLm9uKCJtb3VzZXVwLmJydXNoIix1LCEwKTtFZih0LmV2ZW50LnZpZXcpfUVsKCksSGEoVCksci5jYWxsKFQpLEYuc3RhcnQoKX19ZnVuY3Rpb24gYSgpe3ZhciB0PXRoaXMuX19icnVzaHx8e3NlbGVjdGlvbjpudWxsfTtyZXR1cm4gdC5leHRlbnQ9cy5hcHBseSh0aGlzLGFyZ3VtZW50cyksdC5kaW09bix0fXZhciBjLHM9cWwsZj1QbCxsPU1yKGUsInN0YXJ0IiwiYnJ1c2giLCJlbmQiKSxoPTY7cmV0dXJuIGUubW92ZT1mdW5jdGlvbih0LGUpe3Quc2VsZWN0aW9uP3Qub24oInN0YXJ0LmJydXNoIixmdW5jdGlvbigpe2kodGhpcyxhcmd1bWVudHMpLmJlZm9yZXN0YXJ0KCkuc3RhcnQoKX0pLm9uKCJpbnRlcnJ1cHQuYnJ1c2ggZW5kLmJydXNoIixmdW5jdGlvbigpe2kodGhpcyxhcmd1bWVudHMpLmVuZCgpfSkudHdlZW4oImJydXNoIixmdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dS5zZWxlY3Rpb249MT09PXQmJlJsKHMpP251bGw6Zih0KSxyLmNhbGwobyksYS5icnVzaCgpfXZhciBvPXRoaXMsdT1vLl9fYnJ1c2gsYT1pKG8sYXJndW1lbnRzKSxjPXUuc2VsZWN0aW9uLHM9bi5pbnB1dCgiZnVuY3Rpb24iPT10eXBlb2YgZT9lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTplLHUuZXh0ZW50KSxmPWNyKGMscyk7cmV0dXJuIGMmJnM/dDp0KDEpfSk6dC5lYWNoKGZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxvPWFyZ3VtZW50cyx1PXQuX19icnVzaCxhPW4uaW5wdXQoImZ1bmN0aW9uIj09dHlwZW9mIGU/ZS5hcHBseSh0LG8pOmUsdS5leHRlbnQpLGM9aSh0LG8pLmJlZm9yZXN0YXJ0KCk7SGEodCksdS5zZWxlY3Rpb249bnVsbD09YXx8UmwoYSk/bnVsbDphLHIuY2FsbCh0KSxjLnN0YXJ0KCkuYnJ1c2goKS5lbmQoKX0pfSxvLnByb3RvdHlwZT17YmVmb3Jlc3RhcnQ6ZnVuY3Rpb24oKXtyZXR1cm4gMT09PSsrdGhpcy5hY3RpdmUmJih0aGlzLnN0YXRlLmVtaXR0ZXI9dGhpcyx0aGlzLnN0YXJ0aW5nPSEwKSx0aGlzfSxzdGFydDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnN0YXJ0aW5nJiYodGhpcy5zdGFydGluZz0hMSx0aGlzLmVtaXQoInN0YXJ0IikpLHRoaXN9LGJydXNoOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZW1pdCgiYnJ1c2giKSx0aGlzfSxlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gMD09PS0tdGhpcy5hY3RpdmUmJihkZWxldGUgdGhpcy5zdGF0ZS5lbWl0dGVyLHRoaXMuZW1pdCgiZW5kIikpLHRoaXN9LGVtaXQ6ZnVuY3Rpb24odCl7bHUobmV3IEFsKGUsdCxuLm91dHB1dCh0aGlzLnN0YXRlLnNlbGVjdGlvbikpLGwuYXBwbHksbCxbdCx0aGlzLnRoYXQsdGhpcy5hcmdzXSl9fSxlLmV4dGVudD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz0iZnVuY3Rpb24iPT10eXBlb2YgdD90Ok5sKFtbK3RbMF1bMF0sK3RbMF1bMV1dLFsrdFsxXVswXSwrdFsxXVsxXV1dKSxlKTpzfSxlLmZpbHRlcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZj0iZnVuY3Rpb24iPT10eXBlb2YgdD90Ok5sKCEhdCksZSk6Zn0sZS5oYW5kbGVTaXplPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhoPSt0LGUpOmh9LGUub249ZnVuY3Rpb24oKXt2YXIgdD1sLm9uLmFwcGx5KGwsYXJndW1lbnRzKTtyZXR1cm4gdD09PWw/ZTp0fSxlfWZ1bmN0aW9uIFlsKHQpe3JldHVybiBmdW5jdGlvbihuLGUpe3JldHVybiB0KG4uc291cmNlLnZhbHVlK24udGFyZ2V0LnZhbHVlLGUuc291cmNlLnZhbHVlK2UudGFyZ2V0LnZhbHVlKX19ZnVuY3Rpb24gQmwoKXtmdW5jdGlvbiB0KHQpe3ZhciBvLHUsYSxjLHMsZixoPXQubGVuZ3RoLHA9W10sZD1sKGgpLHY9W10sXz1bXSx5PV8uZ3JvdXBzPW5ldyBBcnJheShoKSxnPW5ldyBBcnJheShoKmgpO2ZvcihvPTAscz0tMTsrK3M8aDspe2Zvcih1PTAsZj0tMTsrK2Y8aDspdSs9dFtzXVtmXTtwLnB1c2godSksdi5wdXNoKGwoaCkpLG8rPXV9Zm9yKGUmJmQuc29ydChmdW5jdGlvbih0LG4pe3JldHVybiBlKHBbdF0scFtuXSl9KSxyJiZ2LmZvckVhY2goZnVuY3Rpb24obixlKXtuLnNvcnQoZnVuY3Rpb24obixpKXtyZXR1cm4gcih0W2VdW25dLHRbZV1baV0pfSl9KSxvPXd4KDAsYngtbipoKS9vLGM9bz9uOmJ4L2gsdT0wLHM9LTE7KytzPGg7KXtmb3IoYT11LGY9LTE7KytmPGg7KXt2YXIgbT1kW3NdLHg9dlttXVtmXSxiPXRbbV1beF0sdz11LE09dSs9YipvO2dbeCpoK21dPXtpbmRleDptLHN1YmluZGV4Ongsc3RhcnRBbmdsZTp3LGVuZEFuZ2xlOk0sdmFsdWU6Yn19eVttXT17aW5kZXg6bSxzdGFydEFuZ2xlOmEsZW5kQW5nbGU6dSx2YWx1ZTpwW21dfSx1Kz1jfWZvcihzPS0xOysrczxoOylmb3IoZj1zLTE7KytmPGg7KXt2YXIgVD1nW2YqaCtzXSxrPWdbcypoK2ZdOyhULnZhbHVlfHxrLnZhbHVlKSYmXy5wdXNoKFQudmFsdWU8ay52YWx1ZT97c291cmNlOmssdGFyZ2V0OlR9Ontzb3VyY2U6VCx0YXJnZXQ6a30pfXJldHVybiBpP18uc29ydChpKTpffXZhciBuPTAsZT1udWxsLHI9bnVsbCxpPW51bGw7cmV0dXJuIHQucGFkQW5nbGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49d3goMCxlKSx0KTpufSx0LnNvcnRHcm91cHM9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9bix0KTplfSx0LnNvcnRTdWJncm91cHM9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9bix0KTpyfSx0LnNvcnRDaG9yZHM9ZnVuY3Rpb24obil7CnJldHVybiBhcmd1bWVudHMubGVuZ3RoPyhudWxsPT1uP2k9bnVsbDooaT1ZbChuKSkuXz1uLHQpOmkmJmkuX30sdH1mdW5jdGlvbiBqbCh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19ZnVuY3Rpb24gSGwodCl7cmV0dXJuIHQuc291cmNlfWZ1bmN0aW9uIFhsKHQpe3JldHVybiB0LnRhcmdldH1mdW5jdGlvbiBWbCh0KXtyZXR1cm4gdC5yYWRpdXN9ZnVuY3Rpb24gV2wodCl7cmV0dXJuIHQuc3RhcnRBbmdsZX1mdW5jdGlvbiAkbCh0KXtyZXR1cm4gdC5lbmRBbmdsZX1mdW5jdGlvbiBabCgpe2Z1bmN0aW9uIHQoKXt2YXIgdCxhPU14LmNhbGwoYXJndW1lbnRzKSxjPW4uYXBwbHkodGhpcyxhKSxzPWUuYXBwbHkodGhpcyxhKSxmPStyLmFwcGx5KHRoaXMsKGFbMF09YyxhKSksbD1pLmFwcGx5KHRoaXMsYSkteHgsaD1vLmFwcGx5KHRoaXMsYSkteHgscD1mKnl4KGwpLGQ9ZipneChsKSx2PStyLmFwcGx5KHRoaXMsKGFbMF09cyxhKSksXz1pLmFwcGx5KHRoaXMsYSkteHgseT1vLmFwcGx5KHRoaXMsYSkteHg7aWYodXx8KHU9dD1UdCgpKSx1Lm1vdmVUbyhwLGQpLHUuYXJjKDAsMCxmLGwsaCksbD09PV8mJmg9PT15fHwodS5xdWFkcmF0aWNDdXJ2ZVRvKDAsMCx2Knl4KF8pLHYqZ3goXykpLHUuYXJjKDAsMCx2LF8seSkpLHUucXVhZHJhdGljQ3VydmVUbygwLDAscCxkKSx1LmNsb3NlUGF0aCgpLHQpcmV0dXJuIHU9bnVsbCx0KyIifHxudWxsfXZhciBuPUhsLGU9WGwscj1WbCxpPVdsLG89JGwsdT1udWxsO3JldHVybiB0LnJhZGl1cz1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj0iZnVuY3Rpb24iPT10eXBlb2Ygbj9uOmpsKCtuKSx0KTpyfSx0LnN0YXJ0QW5nbGU9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9ImZ1bmN0aW9uIj09dHlwZW9mIG4/bjpqbCgrbiksdCk6aX0sdC5lbmRBbmdsZT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz0iZnVuY3Rpb24iPT10eXBlb2Ygbj9uOmpsKCtuKSx0KTpvfSx0LnNvdXJjZT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj1lLHQpOm59LHQudGFyZ2V0PWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPW4sdCk6ZX0sdC5jb250ZXh0PWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PW51bGw9PW4/bnVsbDpuLHQpOnV9LHR9ZnVuY3Rpb24gR2woKXtyZXR1cm4gbmV3IEpsfWZ1bmN0aW9uIEpsKCl7dGhpcy5yZXNldCgpfWZ1bmN0aW9uIFFsKHQsbixlKXt2YXIgcj10LnM9bitlLGk9ci1uLG89ci1pO3QudD1uLW8rKGUtaSl9ZnVuY3Rpb24gS2wodCl7cmV0dXJuIHQ+MT8wOnQ8LTE/aWI6TWF0aC5hY29zKHQpfWZ1bmN0aW9uIHRoKHQpe3JldHVybiB0PjE/b2I6dDwtMT8tb2I6TWF0aC5hc2luKHQpfWZ1bmN0aW9uIG5oKHQpe3JldHVybih0PWdiKHQvMikpKnR9ZnVuY3Rpb24gZWgoKXt9ZnVuY3Rpb24gcmgodCxuKXt0JiZNYi5oYXNPd25Qcm9wZXJ0eSh0LnR5cGUpJiZNYlt0LnR5cGVdKHQsbil9ZnVuY3Rpb24gaWgodCxuLGUpe3ZhciByLGk9LTEsbz10Lmxlbmd0aC1lO2ZvcihuLmxpbmVTdGFydCgpOysraTxvOylyPXRbaV0sbi5wb2ludChyWzBdLHJbMV0sclsyXSk7bi5saW5lRW5kKCl9ZnVuY3Rpb24gb2godCxuKXt2YXIgZT0tMSxyPXQubGVuZ3RoO2ZvcihuLnBvbHlnb25TdGFydCgpOysrZTxyOylpaCh0W2VdLG4sMSk7bi5wb2x5Z29uRW5kKCl9ZnVuY3Rpb24gdWgodCxuKXt0JiZ3Yi5oYXNPd25Qcm9wZXJ0eSh0LnR5cGUpP3diW3QudHlwZV0odCxuKTpyaCh0LG4pfWZ1bmN0aW9uIGFoKCl7U2IucG9pbnQ9c2h9ZnVuY3Rpb24gY2goKXtmaChUeCxreCl9ZnVuY3Rpb24gc2godCxuKXtTYi5wb2ludD1maCxUeD10LGt4PW4sdCo9c2Isbio9c2IsU3g9dCxOeD1wYihuPW4vMit1YiksQXg9Z2Iobil9ZnVuY3Rpb24gZmgodCxuKXt0Kj1zYixuKj1zYixuPW4vMit1Yjt2YXIgZT10LVN4LHI9ZT49MD8xOi0xLGk9ciplLG89cGIobiksdT1nYihuKSxhPUF4KnUsYz1OeCpvK2EqcGIoaSkscz1hKnIqZ2IoaSk7VGIuYWRkKGhiKHMsYykpLFN4PXQsTng9byxBeD11fWZ1bmN0aW9uIGxoKHQpe3JldHVybiBrYi5yZXNldCgpLHVoKHQsU2IpLDIqa2J9ZnVuY3Rpb24gaGgodCl7cmV0dXJuW2hiKHRbMV0sdFswXSksdGgodFsyXSldfWZ1bmN0aW9uIHBoKHQpe3ZhciBuPXRbMF0sZT10WzFdLHI9cGIoZSk7cmV0dXJuW3IqcGIobikscipnYihuKSxnYihlKV19ZnVuY3Rpb24gZGgodCxuKXtyZXR1cm4gdFswXSpuWzBdK3RbMV0qblsxXSt0WzJdKm5bMl19ZnVuY3Rpb24gdmgodCxuKXtyZXR1cm5bdFsxXSpuWzJdLXRbMl0qblsxXSx0WzJdKm5bMF0tdFswXSpuWzJdLHRbMF0qblsxXS10WzFdKm5bMF1dfWZ1bmN0aW9uIF9oKHQsbil7dFswXSs9blswXSx0WzFdKz1uWzFdLHRbMl0rPW5bMl19ZnVuY3Rpb24geWgodCxuKXtyZXR1cm5bdFswXSpuLHRbMV0qbix0WzJdKm5dfWZ1bmN0aW9uIGdoKHQpe3ZhciBuPXhiKHRbMF0qdFswXSt0WzFdKnRbMV0rdFsyXSp0WzJdKTt0WzBdLz1uLHRbMV0vPW4sdFsyXS89bn1mdW5jdGlvbiBtaCh0LG4pe0R4LnB1c2goT3g9W0V4PXQseng9dF0pLG48Q3gmJihDeD1uKSxuPlB4JiYoUHg9bil9ZnVuY3Rpb24geGgodCxuKXt2YXIgZT1waChbdCpzYixuKnNiXSk7aWYoVXgpe3ZhciByPXZoKFV4LGUpLGk9W3JbMV0sLXJbMF0sMF0sbz12aChpLHIpO2doKG8pLG89aGgobyk7dmFyIHUsYT10LXF4LGM9YT4wPzE6LTEscz1vWzBdKmNiKmMsZj1mYihhKT4xODA7Zl4oYypxeDxzJiZzPGMqdCk/KHU9b1sxXSpjYix1PlB4JiYoUHg9dSkpOihzPShzKzM2MCklMzYwLTE4MCxmXihjKnF4PHMmJnM8Yyp0KT8odT0tb1sxXSpjYix1PEN4JiYoQ3g9dSkpOihuPEN4JiYoQ3g9biksbj5QeCYmKFB4PW4pKSksZj90PHF4P1NoKEV4LHQpPlNoKEV4LHp4KSYmKHp4PXQpOlNoKHQsengpPlNoKEV4LHp4KSYmKEV4PXQpOnp4Pj1FeD8odDxFeCYmKEV4PXQpLHQ+engmJih6eD10KSk6dD5xeD9TaChFeCx0KT5TaChFeCx6eCkmJih6eD10KTpTaCh0LHp4KT5TaChFeCx6eCkmJihFeD10KX1lbHNlIG1oKHQsbik7VXg9ZSxxeD10fWZ1bmN0aW9uIGJoKCl7QWIucG9pbnQ9eGh9ZnVuY3Rpb24gd2goKXtPeFswXT1FeCxPeFsxXT16eCxBYi5wb2ludD1taCxVeD1udWxsfWZ1bmN0aW9uIE1oKHQsbil7aWYoVXgpe3ZhciBlPXQtcXg7TmIuYWRkKGZiKGUpPjE4MD9lKyhlPjA/MzYwOi0zNjApOmUpfWVsc2UgTHg9dCxSeD1uO1NiLnBvaW50KHQsbikseGgodCxuKX1mdW5jdGlvbiBUaCgpe1NiLmxpbmVTdGFydCgpfWZ1bmN0aW9uIGtoKCl7TWgoTHgsUngpLFNiLmxpbmVFbmQoKSxmYihOYik+ZWImJihFeD0tKHp4PTE4MCkpLE94WzBdPUV4LE94WzFdPXp4LFV4PW51bGx9ZnVuY3Rpb24gU2godCxuKXtyZXR1cm4obi09dCk8MD9uKzM2MDpufWZ1bmN0aW9uIE5oKHQsbil7cmV0dXJuIHRbMF0tblswXX1mdW5jdGlvbiBBaCh0LG4pe3JldHVybiB0WzBdPD10WzFdP3RbMF08PW4mJm48PXRbMV06bjx0WzBdfHx0WzFdPG59ZnVuY3Rpb24gRWgodCl7dmFyIG4sZSxyLGksbyx1LGE7aWYoUHg9eng9LShFeD1DeD0xLzApLER4PVtdLHVoKHQsQWIpLGU9RHgubGVuZ3RoKXtmb3IoRHguc29ydChOaCksbj0xLHI9RHhbMF0sbz1bcl07bjxlOysrbilpPUR4W25dLEFoKHIsaVswXSl8fEFoKHIsaVsxXSk/KFNoKHJbMF0saVsxXSk+U2goclswXSxyWzFdKSYmKHJbMV09aVsxXSksU2goaVswXSxyWzFdKT5TaChyWzBdLHJbMV0pJiYoclswXT1pWzBdKSk6by5wdXNoKHI9aSk7Zm9yKHU9LSgxLzApLGU9by5sZW5ndGgtMSxuPTAscj1vW2VdO248PWU7cj1pLCsrbilpPW9bbl0sKGE9U2goclsxXSxpWzBdKSk+dSYmKHU9YSxFeD1pWzBdLHp4PXJbMV0pfXJldHVybiBEeD1PeD1udWxsLEV4PT09MS8wfHxDeD09PTEvMD9bW05hTixOYU5dLFtOYU4sTmFOXV06W1tFeCxDeF0sW3p4LFB4XV19ZnVuY3Rpb24gQ2godCxuKXt0Kj1zYixuKj1zYjt2YXIgZT1wYihuKTt6aChlKnBiKHQpLGUqZ2IodCksZ2IobikpfWZ1bmN0aW9uIHpoKHQsbixlKXsrK0Z4LFl4Kz0odC1ZeCkvRngsQngrPShuLUJ4KS9GeCxqeCs9KGUtangpL0Z4fWZ1bmN0aW9uIFBoKCl7RWIucG9pbnQ9cWh9ZnVuY3Rpb24gcWgodCxuKXt0Kj1zYixuKj1zYjt2YXIgZT1wYihuKTtReD1lKnBiKHQpLEt4PWUqZ2IodCksdGI9Z2IobiksRWIucG9pbnQ9TGgsemgoUXgsS3gsdGIpfWZ1bmN0aW9uIExoKHQsbil7dCo9c2Isbio9c2I7dmFyIGU9cGIobikscj1lKnBiKHQpLGk9ZSpnYih0KSxvPWdiKG4pLHU9aGIoeGIoKHU9S3gqby10YippKSp1Kyh1PXRiKnItUXgqbykqdSsodT1ReCppLUt4KnIpKnUpLFF4KnIrS3gqaSt0YipvKTtJeCs9dSxIeCs9dSooUXgrKFF4PXIpKSxYeCs9dSooS3grKEt4PWkpKSxWeCs9dSoodGIrKHRiPW8pKSx6aChReCxLeCx0Yil9ZnVuY3Rpb24gUmgoKXtFYi5wb2ludD1DaH1mdW5jdGlvbiBVaCgpe0ViLnBvaW50PU9ofWZ1bmN0aW9uIERoKCl7RmgoR3gsSngpLEViLnBvaW50PUNofWZ1bmN0aW9uIE9oKHQsbil7R3g9dCxKeD1uLHQqPXNiLG4qPXNiLEViLnBvaW50PUZoO3ZhciBlPXBiKG4pO1F4PWUqcGIodCksS3g9ZSpnYih0KSx0Yj1nYihuKSx6aChReCxLeCx0Yil9ZnVuY3Rpb24gRmgodCxuKXt0Kj1zYixuKj1zYjt2YXIgZT1wYihuKSxyPWUqcGIodCksaT1lKmdiKHQpLG89Z2IobiksdT1LeCpvLXRiKmksYT10YipyLVF4Km8sYz1ReCppLUt4KnIscz14Yih1KnUrYSphK2MqYyksZj1ReCpyK0t4KmkrdGIqbyxsPXMmJi1LbChmKS9zLGg9aGIocyxmKTtXeCs9bCp1LCR4Kz1sKmEsWngrPWwqYyxJeCs9aCxIeCs9aCooUXgrKFF4PXIpKSxYeCs9aCooS3grKEt4PWkpKSxWeCs9aCoodGIrKHRiPW8pKSx6aChReCxLeCx0Yil9ZnVuY3Rpb24gSWgodCl7Rng9SXg9WXg9Qng9ang9SHg9WHg9Vng9V3g9JHg9Wng9MCx1aCh0LEViKTt2YXIgbj1XeCxlPSR4LHI9WngsaT1uKm4rZSplK3IqcjtyZXR1cm4gaTxyYiYmKG49SHgsZT1YeCxyPVZ4LEl4PGViJiYobj1ZeCxlPUJ4LHI9angpLGk9bipuK2UqZStyKnIsaTxyYik/W05hTixOYU5dOltoYihlLG4pKmNiLHRoKHIveGIoaSkpKmNiXX1mdW5jdGlvbiBZaCh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19ZnVuY3Rpb24gQmgodCxuKXtmdW5jdGlvbiBlKGUscil7cmV0dXJuIGU9dChlLHIpLG4oZVswXSxlWzFdKX1yZXR1cm4gdC5pbnZlcnQmJm4uaW52ZXJ0JiYoZS5pbnZlcnQ9ZnVuY3Rpb24oZSxyKXtyZXR1cm4gZT1uLmludmVydChlLHIpLGUmJnQuaW52ZXJ0KGVbMF0sZVsxXSl9KSxlfWZ1bmN0aW9uIGpoKHQsbil7cmV0dXJuW3Q+aWI/dC1hYjp0PC1pYj90K2FiOnQsbl19ZnVuY3Rpb24gSGgodCxuLGUpe3JldHVybih0JT1hYik/bnx8ZT9CaChWaCh0KSxXaChuLGUpKTpWaCh0KTpufHxlP1doKG4sZSk6amh9ZnVuY3Rpb24gWGgodCl7cmV0dXJuIGZ1bmN0aW9uKG4sZSl7cmV0dXJuIG4rPXQsW24+aWI/bi1hYjpuPC1pYj9uK2FiOm4sZV19fWZ1bmN0aW9uIFZoKHQpe3ZhciBuPVhoKHQpO3JldHVybiBuLmludmVydD1YaCgtdCksbn1mdW5jdGlvbiBXaCh0LG4pe2Z1bmN0aW9uIGUodCxuKXt2YXIgZT1wYihuKSxhPXBiKHQpKmUsYz1nYih0KSplLHM9Z2IobiksZj1zKnIrYSppO3JldHVybltoYihjKm8tZip1LGEqci1zKmkpLHRoKGYqbytjKnUpXX12YXIgcj1wYih0KSxpPWdiKHQpLG89cGIobiksdT1nYihuKTtyZXR1cm4gZS5pbnZlcnQ9ZnVuY3Rpb24odCxuKXt2YXIgZT1wYihuKSxhPXBiKHQpKmUsYz1nYih0KSplLHM9Z2IobiksZj1zKm8tYyp1O3JldHVybltoYihjKm8rcyp1LGEqcitmKmkpLHRoKGYqci1hKmkpXX0sZX1mdW5jdGlvbiAkaCh0KXtmdW5jdGlvbiBuKG4pe3JldHVybiBuPXQoblswXSpzYixuWzFdKnNiKSxuWzBdKj1jYixuWzFdKj1jYixufXJldHVybiB0PUhoKHRbMF0qc2IsdFsxXSpzYix0Lmxlbmd0aD4yP3RbMl0qc2I6MCksbi5pbnZlcnQ9ZnVuY3Rpb24obil7cmV0dXJuIG49dC5pbnZlcnQoblswXSpzYixuWzFdKnNiKSxuWzBdKj1jYixuWzFdKj1jYixufSxufWZ1bmN0aW9uIFpoKHQsbixlLHIsaSxvKXtpZihlKXt2YXIgdT1wYihuKSxhPWdiKG4pLGM9ciplO251bGw9PWk/KGk9bityKmFiLG89bi1jLzIpOihpPUdoKHUsaSksbz1HaCh1LG8pLChyPjA/aTxvOmk+bykmJihpKz1yKmFiKSk7Zm9yKHZhciBzLGY9aTtyPjA/Zj5vOmY8bztmLT1jKXM9aGgoW3UsLWEqcGIoZiksLWEqZ2IoZildKSx0LnBvaW50KHNbMF0sc1sxXSl9fWZ1bmN0aW9uIEdoKHQsbil7bj1waChuKSxuWzBdLT10LGdoKG4pO3ZhciBlPUtsKC1uWzFdKTtyZXR1cm4oKC1uWzJdPDA/LWU6ZSkrYWItZWIpJWFifWZ1bmN0aW9uIEpoKCl7ZnVuY3Rpb24gdCh0LG4pe2UucHVzaCh0PXIodCxuKSksdFswXSo9Y2IsdFsxXSo9Y2J9ZnVuY3Rpb24gbigpe3ZhciB0PWkuYXBwbHkodGhpcyxhcmd1bWVudHMpLG49by5hcHBseSh0aGlzLGFyZ3VtZW50cykqc2IsYz11LmFwcGx5KHRoaXMsYXJndW1lbnRzKSpzYjtyZXR1cm4gZT1bXSxyPUhoKC10WzBdKnNiLC10WzFdKnNiLDApLmludmVydCxaaChhLG4sYywxKSx0PXt0eXBlOiJQb2x5Z29uIixjb29yZGluYXRlczpbZV19LGU9cj1udWxsLHR9dmFyIGUscixpPVloKFswLDBdKSxvPVloKDkwKSx1PVloKDYpLGE9e3BvaW50OnR9O3JldHVybiBuLmNlbnRlcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OlloKFsrdFswXSwrdFsxXV0pLG4pOml9LG4ucmFkaXVzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6WWgoK3QpLG4pOm99LG4ucHJlY2lzaW9uPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6WWgoK3QpLG4pOnV9LG59ZnVuY3Rpb24gUWgoKXt2YXIgdCxuPVtdO3JldHVybntwb2ludDpmdW5jdGlvbihuLGUpe3QucHVzaChbbixlXSl9LGxpbmVTdGFydDpmdW5jdGlvbigpe24ucHVzaCh0PVtdKX0sbGluZUVuZDplaCxyZWpvaW46ZnVuY3Rpb24oKXtuLmxlbmd0aD4xJiZuLnB1c2gobi5wb3AoKS5jb25jYXQobi5zaGlmdCgpKSl9LHJlc3VsdDpmdW5jdGlvbigpe3ZhciBlPW47cmV0dXJuIG49W10sdD1udWxsLGV9fX1mdW5jdGlvbiBLaCh0LG4sZSxyLGksbyl7dmFyIHUsYT10WzBdLGM9dFsxXSxzPW5bMF0sZj1uWzFdLGw9MCxoPTEscD1zLWEsZD1mLWM7aWYodT1lLWEscHx8ISh1PjApKXtpZih1Lz1wLHA8MCl7aWYodTxsKXJldHVybjt1PGgmJihoPXUpfWVsc2UgaWYocD4wKXtpZih1PmgpcmV0dXJuO3U+bCYmKGw9dSl9aWYodT1pLWEscHx8ISh1PDApKXtpZih1Lz1wLHA8MCl7aWYodT5oKXJldHVybjt1PmwmJihsPXUpfWVsc2UgaWYocD4wKXtpZih1PGwpcmV0dXJuO3U8aCYmKGg9dSl9aWYodT1yLWMsZHx8ISh1PjApKXtpZih1Lz1kLGQ8MCl7aWYodTxsKXJldHVybjt1PGgmJihoPXUpfWVsc2UgaWYoZD4wKXtpZih1PmgpcmV0dXJuO3U+bCYmKGw9dSl9aWYodT1vLWMsZHx8ISh1PDApKXtpZih1Lz1kLGQ8MCl7aWYodT5oKXJldHVybjt1PmwmJihsPXUpfWVsc2UgaWYoZD4wKXtpZih1PGwpcmV0dXJuO3U8aCYmKGg9dSl9cmV0dXJuIGw+MCYmKHRbMF09YStsKnAsdFsxXT1jK2wqZCksaDwxJiYoblswXT1hK2gqcCxuWzFdPWMraCpkKSwhMH19fX19ZnVuY3Rpb24gdHAodCxuKXtyZXR1cm4gZmIodFswXS1uWzBdKTxlYiYmZmIodFsxXS1uWzFdKTxlYn1mdW5jdGlvbiBucCh0LG4sZSxyKXt0aGlzLng9dCx0aGlzLno9bix0aGlzLm89ZSx0aGlzLmU9cix0aGlzLnY9ITEsdGhpcy5uPXRoaXMucD1udWxsfWZ1bmN0aW9uIGVwKHQsbixlLHIsaSl7dmFyIG8sdSxhPVtdLGM9W107aWYodC5mb3JFYWNoKGZ1bmN0aW9uKHQpe2lmKCEoKG49dC5sZW5ndGgtMSk8PTApKXt2YXIgbixlLHI9dFswXSx1PXRbbl07aWYodHAocix1KSl7Zm9yKGkubGluZVN0YXJ0KCksbz0wO288bjsrK28paS5wb2ludCgocj10W29dKVswXSxyWzFdKTtyZXR1cm4gdm9pZCBpLmxpbmVFbmQoKX1hLnB1c2goZT1uZXcgbnAocix0LG51bGwsITApKSxjLnB1c2goZS5vPW5ldyBucChyLG51bGwsZSwhMSkpLGEucHVzaChlPW5ldyBucCh1LHQsbnVsbCwhMSkpLGMucHVzaChlLm89bmV3IG5wKHUsbnVsbCxlLCEwKSl9fSksYS5sZW5ndGgpe2ZvcihjLnNvcnQobikscnAoYSkscnAoYyksbz0wLHU9Yy5sZW5ndGg7bzx1OysrbyljW29dLmU9ZT0hZTtmb3IodmFyIHMsZixsPWFbMF07Oyl7Zm9yKHZhciBoPWwscD0hMDtoLnY7KWlmKChoPWgubik9PT1sKXJldHVybjtzPWgueixpLmxpbmVTdGFydCgpO2Rve2lmKGgudj1oLm8udj0hMCxoLmUpe2lmKHApZm9yKG89MCx1PXMubGVuZ3RoO288dTsrK28paS5wb2ludCgoZj1zW29dKVswXSxmWzFdKTtlbHNlIHIoaC54LGgubi54LDEsaSk7aD1oLm59ZWxzZXtpZihwKWZvcihzPWgucC56LG89cy5sZW5ndGgtMTtvPj0wOy0tbylpLnBvaW50KChmPXNbb10pWzBdLGZbMV0pO2Vsc2UgcihoLngsaC5wLngsLTEsaSk7aD1oLnB9aD1oLm8scz1oLnoscD0hcH13aGlsZSghaC52KTtpLmxpbmVFbmQoKX19fWZ1bmN0aW9uIHJwKHQpe2lmKG49dC5sZW5ndGgpe2Zvcih2YXIgbixlLHI9MCxpPXRbMF07KytyPG47KWkubj1lPXRbcl0sZS5wPWksaT1lO2kubj1lPXRbMF0sZS5wPWl9fWZ1bmN0aW9uIGlwKHQsbixlLHIpe2Z1bmN0aW9uIGkoaSxvKXtyZXR1cm4gdDw9aSYmaTw9ZSYmbjw9byYmbzw9cn1mdW5jdGlvbiBvKGksbyxhLHMpe3ZhciBmPTAsbD0wO2lmKG51bGw9PWl8fChmPXUoaSxhKSkhPT0obD11KG8sYSkpfHxjKGksbyk8MF5hPjApe2RvIHMucG9pbnQoMD09PWZ8fDM9PT1mP3Q6ZSxmPjE/cjpuKTt3aGlsZSgoZj0oZithKzQpJTQpIT09bCl9ZWxzZSBzLnBvaW50KG9bMF0sb1sxXSl9ZnVuY3Rpb24gdShyLGkpe3JldHVybiBmYihyWzBdLXQpPGViP2k+MD8wOjM6ZmIoclswXS1lKTxlYj9pPjA/MjoxOmZiKHJbMV0tbik8ZWI/aT4wPzE6MDppPjA/MzoyfWZ1bmN0aW9uIGEodCxuKXtyZXR1cm4gYyh0Lngsbi54KX1mdW5jdGlvbiBjKHQsbil7dmFyIGU9dSh0LDEpLHI9dShuLDEpO3JldHVybiBlIT09cj9lLXI6MD09PWU/blsxXS10WzFdOjE9PT1lP3RbMF0tblswXToyPT09ZT90WzFdLW5bMV06blswXS10WzBdfXJldHVybiBmdW5jdGlvbih1KXtmdW5jdGlvbiBjKHQsbil7aSh0LG4pJiZOLnBvaW50KHQsbil9ZnVuY3Rpb24gcygpe2Zvcih2YXIgbj0wLGU9MCxpPV8ubGVuZ3RoO2U8aTsrK2UpZm9yKHZhciBvLHUsYT1fW2VdLGM9MSxzPWEubGVuZ3RoLGY9YVswXSxsPWZbMF0saD1mWzFdO2M8czsrK2Mpbz1sLHU9aCxmPWFbY10sbD1mWzBdLGg9ZlsxXSx1PD1yP2g+ciYmKGwtbykqKHItdSk+KGgtdSkqKHQtbykmJisrbjpoPD1yJiYobC1vKSooci11KTwoaC11KSoodC1vKSYmLS1uO3JldHVybiBufWZ1bmN0aW9uIGYoKXtOPUEsdj1bXSxfPVtdLFM9ITB9ZnVuY3Rpb24gbCgpe3ZhciB0PXMoKSxuPVMmJnQsZT0odj13KHYpKS5sZW5ndGg7KG58fGUpJiYodS5wb2x5Z29uU3RhcnQoKSxuJiYodS5saW5lU3RhcnQoKSxvKG51bGwsbnVsbCwxLHUpLHUubGluZUVuZCgpKSxlJiZlcCh2LGEsdCxvLHUpLHUucG9seWdvbkVuZCgpKSxOPXUsdj1fPXk9bnVsbH1mdW5jdGlvbiBoKCl7RS5wb2ludD1kLF8mJl8ucHVzaCh5PVtdKSxrPSEwLFQ9ITEsYj1NPU5hTn1mdW5jdGlvbiBwKCl7diYmKGQoZyxtKSx4JiZUJiZBLnJlam9pbigpLHYucHVzaChBLnJlc3VsdCgpKSksRS5wb2ludD1jLFQmJk4ubGluZUVuZCgpfWZ1bmN0aW9uIGQobyx1KXt2YXIgYT1pKG8sdSk7aWYoXyYmeS5wdXNoKFtvLHVdKSxrKWc9byxtPXUseD1hLGs9ITEsYSYmKE4ubGluZVN0YXJ0KCksTi5wb2ludChvLHUpKTtlbHNlIGlmKGEmJlQpTi5wb2ludChvLHUpO2Vsc2V7dmFyIGM9W2I9TWF0aC5tYXgoQmIsTWF0aC5taW4oWWIsYikpLE09TWF0aC5tYXgoQmIsTWF0aC5taW4oWWIsTSkpXSxzPVtvPU1hdGgubWF4KEJiLE1hdGgubWluKFliLG8pKSx1PU1hdGgubWF4KEJiLE1hdGgubWluKFliLHUpKV07S2goYyxzLHQsbixlLHIpPyhUfHwoTi5saW5lU3RhcnQoKSxOLnBvaW50KGNbMF0sY1sxXSkpLE4ucG9pbnQoc1swXSxzWzFdKSxhfHxOLmxpbmVFbmQoKSxTPSExKTphJiYoTi5saW5lU3RhcnQoKSxOLnBvaW50KG8sdSksUz0hMSl9Yj1vLE09dSxUPWF9dmFyIHYsXyx5LGcsbSx4LGIsTSxULGssUyxOPXUsQT1RaCgpLEU9e3BvaW50OmMsbGluZVN0YXJ0OmgsbGluZUVuZDpwLHBvbHlnb25TdGFydDpmLHBvbHlnb25FbmQ6bH07cmV0dXJuIEV9fWZ1bmN0aW9uIG9wKCl7dmFyIHQsbixlLHI9MCxpPTAsbz05NjAsdT01MDA7cmV0dXJuIGU9e3N0cmVhbTpmdW5jdGlvbihlKXtyZXR1cm4gdCYmbj09PWU/dDp0PWlwKHIsaSxvLHUpKG49ZSl9LGV4dGVudDpmdW5jdGlvbihhKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj0rYVswXVswXSxpPSthWzBdWzFdLG89K2FbMV1bMF0sdT0rYVsxXVsxXSx0PW49bnVsbCxlKTpbW3IsaV0sW28sdV1dfX19ZnVuY3Rpb24gdXAoKXtIYi5wb2ludD1jcCxIYi5saW5lRW5kPWFwfWZ1bmN0aW9uIGFwKCl7SGIucG9pbnQ9SGIubGluZUVuZD1laH1mdW5jdGlvbiBjcCh0LG4pe3QqPXNiLG4qPXNiLENiPXQsemI9Z2IobiksUGI9cGIobiksSGIucG9pbnQ9c3B9ZnVuY3Rpb24gc3AodCxuKXt0Kj1zYixuKj1zYjt2YXIgZT1nYihuKSxyPXBiKG4pLGk9ZmIodC1DYiksbz1wYihpKSx1PWdiKGkpLGE9cip1LGM9UGIqZS16YipyKm8scz16YiplK1BiKnIqbztqYi5hZGQoaGIoeGIoYSphK2MqYykscykpLENiPXQsemI9ZSxQYj1yfWZ1bmN0aW9uIGZwKHQpe3JldHVybiBqYi5yZXNldCgpLHVoKHQsSGIpLCtqYn1mdW5jdGlvbiBscCh0LG4pe3JldHVybiBYYlswXT10LFhiWzFdPW4sZnAoVmIpfWZ1bmN0aW9uIGhwKHQsbixlKXt2YXIgcj1sKHQsbi1lYixlKS5jb25jYXQobik7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiByLm1hcChmdW5jdGlvbihuKXtyZXR1cm5bdCxuXX0pfX1mdW5jdGlvbiBwcCh0LG4sZSl7dmFyIHI9bCh0LG4tZWIsZSkuY29uY2F0KG4pO3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gci5tYXAoZnVuY3Rpb24obil7cmV0dXJuW24sdF19KX19ZnVuY3Rpb24gZHAoKXtmdW5jdGlvbiB0KCl7cmV0dXJue3R5cGU6Ik11bHRpTGluZVN0cmluZyIsY29vcmRpbmF0ZXM6bigpfX1mdW5jdGlvbiBuKCl7cmV0dXJuIGwoZGIoby95KSp5LGkseSkubWFwKHApLmNvbmNhdChsKGRiKHMvZykqZyxjLGcpLm1hcChkKSkuY29uY2F0KGwoZGIoci92KSp2LGUsdikuZmlsdGVyKGZ1bmN0aW9uKHQpe3JldHVybiBmYih0JXkpPmVifSkubWFwKGYpKS5jb25jYXQobChkYihhL18pKl8sdSxfKS5maWx0ZXIoZnVuY3Rpb24odCl7cmV0dXJuIGZiKHQlZyk+ZWJ9KS5tYXAoaCkpfXZhciBlLHIsaSxvLHUsYSxjLHMsZixoLHAsZCx2PTEwLF89dix5PTkwLGc9MzYwLG09Mi41O3JldHVybiB0LmxpbmVzPWZ1bmN0aW9uKCl7cmV0dXJuIG4oKS5tYXAoZnVuY3Rpb24odCl7cmV0dXJue3R5cGU6IkxpbmVTdHJpbmciLGNvb3JkaW5hdGVzOnR9fSl9LHQub3V0bGluZT1mdW5jdGlvbigpe3JldHVybnt0eXBlOiJQb2x5Z29uIixjb29yZGluYXRlczpbcChvKS5jb25jYXQoZChjKS5zbGljZSgxKSxwKGkpLnJldmVyc2UoKS5zbGljZSgxKSxkKHMpLnJldmVyc2UoKS5zbGljZSgxKSldfX0sdC5leHRlbnQ9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dC5leHRlbnRNYWpvcihuKS5leHRlbnRNaW5vcihuKTp0LmV4dGVudE1pbm9yKCl9LHQuZXh0ZW50TWFqb3I9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89K25bMF1bMF0saT0rblsxXVswXSxzPStuWzBdWzFdLGM9K25bMV1bMV0sbz5pJiYobj1vLG89aSxpPW4pLHM+YyYmKG49cyxzPWMsYz1uKSx0LnByZWNpc2lvbihtKSk6W1tvLHNdLFtpLGNdXX0sdC5leHRlbnRNaW5vcj1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj0rblswXVswXSxlPStuWzFdWzBdLGE9K25bMF1bMV0sdT0rblsxXVsxXSxyPmUmJihuPXIscj1lLGU9biksYT51JiYobj1hLGE9dSx1PW4pLHQucHJlY2lzaW9uKG0pKTpbW3IsYV0sW2UsdV1dfSx0LnN0ZXA9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dC5zdGVwTWFqb3Iobikuc3RlcE1pbm9yKG4pOnQuc3RlcE1pbm9yKCl9LHQuc3RlcE1ham9yPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh5PStuWzBdLGc9K25bMV0sdCk6W3ksZ119LHQuc3RlcE1pbm9yPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh2PStuWzBdLF89K25bMV0sdCk6W3YsX119LHQucHJlY2lzaW9uPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhtPStuLGY9aHAoYSx1LDkwKSxoPXBwKHIsZSxtKSxwPWhwKHMsYyw5MCksZD1wcChvLGksbSksdCk6bX0sdC5leHRlbnRNYWpvcihbWy0xODAsLTkwK2ViXSxbMTgwLDkwLWViXV0pLmV4dGVudE1pbm9yKFtbLTE4MCwtODAtZWJdLFsxODAsODArZWJdXSl9ZnVuY3Rpb24gdnAodCxuKXt2YXIgZT10WzBdKnNiLHI9dFsxXSpzYixpPW5bMF0qc2Isbz1uWzFdKnNiLHU9cGIociksYT1nYihyKSxjPXBiKG8pLHM9Z2IobyksZj11KnBiKGUpLGw9dSpnYihlKSxoPWMqcGIoaSkscD1jKmdiKGkpLGQ9Mip0aCh4YihuaChvLXIpK3UqYypuaChpLWUpKSksdj1nYihkKSxfPWQ/ZnVuY3Rpb24odCl7dmFyIG49Z2IodCo9ZCkvdixlPWdiKGQtdCkvdixyPWUqZituKmgsaT1lKmwrbipwLG89ZSphK24qcztyZXR1cm5baGIoaSxyKSpjYixoYihvLHhiKHIqcitpKmkpKSpjYl19OmZ1bmN0aW9uKCl7cmV0dXJuW2UqY2IscipjYl19O3JldHVybiBfLmRpc3RhbmNlPWQsX31mdW5jdGlvbiBfcCh0KXtyZXR1cm4gdH1mdW5jdGlvbiB5cCgpe1piLnBvaW50PWdwfWZ1bmN0aW9uIGdwKHQsbil7WmIucG9pbnQ9bXAscWI9UmI9dCxMYj1VYj1ufWZ1bmN0aW9uIG1wKHQsbil7JGIuYWRkKFViKnQtUmIqbiksUmI9dCxVYj1ufWZ1bmN0aW9uIHhwKCl7bXAocWIsTGIpfWZ1bmN0aW9uIGJwKHQsbil7dDxHYiYmKEdiPXQpLHQ+UWImJihRYj10KSxuPEpiJiYoSmI9biksbj5LYiYmKEtiPW4pfWZ1bmN0aW9uIHdwKHQsbil7bncrPXQsZXcrPW4sKytyd31mdW5jdGlvbiBNcCgpe2Z3LnBvaW50PVRwfWZ1bmN0aW9uIFRwKHQsbil7ZncucG9pbnQ9a3Asd3AoRmI9dCxJYj1uKX1mdW5jdGlvbiBrcCh0LG4pe3ZhciBlPXQtRmIscj1uLUliLGk9eGIoZSplK3Iqcik7aXcrPWkqKEZiK3QpLzIsb3crPWkqKEliK24pLzIsdXcrPWksd3AoRmI9dCxJYj1uKX1mdW5jdGlvbiBTcCgpe2Z3LnBvaW50PXdwfWZ1bmN0aW9uIE5wKCl7ZncucG9pbnQ9RXB9ZnVuY3Rpb24gQXAoKXtDcChEYixPYil9ZnVuY3Rpb24gRXAodCxuKXtmdy5wb2ludD1DcCx3cChEYj1GYj10LE9iPUliPW4pfWZ1bmN0aW9uIENwKHQsbil7dmFyIGU9dC1GYixyPW4tSWIsaT14YihlKmUrcipyKTtpdys9aSooRmIrdCkvMixvdys9aSooSWIrbikvMix1dys9aSxpPUliKnQtRmIqbixhdys9aSooRmIrdCksY3crPWkqKEliK24pLHN3Kz0zKmksd3AoRmI9dCxJYj1uKX1mdW5jdGlvbiB6cCh0KXtmdW5jdGlvbiBuKG4sZSl7dC5tb3ZlVG8obit1LGUpLHQuYXJjKG4sZSx1LDAsYWIpfWZ1bmN0aW9uIGUobixlKXt0Lm1vdmVUbyhuLGUpLGEucG9pbnQ9cn1mdW5jdGlvbiByKG4sZSl7dC5saW5lVG8obixlKX1mdW5jdGlvbiBpKCl7YS5wb2ludD1ufWZ1bmN0aW9uIG8oKXt0LmNsb3NlUGF0aCgpfXZhciB1PTQuNSxhPXtwb2ludDpuLGxpbmVTdGFydDpmdW5jdGlvbigpe2EucG9pbnQ9ZX0sbGluZUVuZDppLHBvbHlnb25TdGFydDpmdW5jdGlvbigpe2EubGluZUVuZD1vfSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7YS5saW5lRW5kPWksYS5wb2ludD1ufSxwb2ludFJhZGl1czpmdW5jdGlvbih0KXtyZXR1cm4gdT10LGF9LHJlc3VsdDplaH07cmV0dXJuIGF9ZnVuY3Rpb24gUHAoKXtmdW5jdGlvbiB0KHQsbil7YS5wdXNoKCJNIix0LCIsIixuLHUpfWZ1bmN0aW9uIG4odCxuKXthLnB1c2goIk0iLHQsIiwiLG4pLGMucG9pbnQ9ZX1mdW5jdGlvbiBlKHQsbil7YS5wdXNoKCJMIix0LCIsIixuKX1mdW5jdGlvbiByKCl7Yy5wb2ludD1ufWZ1bmN0aW9uIGkoKXtjLnBvaW50PXR9ZnVuY3Rpb24gbygpe2EucHVzaCgiWiIpfXZhciB1PXFwKDQuNSksYT1bXSxjPXtwb2ludDp0LGxpbmVTdGFydDpyLGxpbmVFbmQ6aSxwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24oKXtjLmxpbmVFbmQ9b30scG9seWdvbkVuZDpmdW5jdGlvbigpe2MubGluZUVuZD1pLGMucG9pbnQ9dH0scG9pbnRSYWRpdXM6ZnVuY3Rpb24odCl7cmV0dXJuIHU9cXAodCksY30scmVzdWx0OmZ1bmN0aW9uKCl7aWYoYS5sZW5ndGgpe3ZhciB0PWEuam9pbigiIik7cmV0dXJuIGE9W10sdH19fTtyZXR1cm4gY31mdW5jdGlvbiBxcCh0KXtyZXR1cm4ibTAsIit0KyJhIit0KyIsIit0KyIgMCAxLDEgMCwiKy0yKnQrImEiK3QrIiwiK3QrIiAwIDEsMSAwLCIrMip0KyJ6In1mdW5jdGlvbiBMcCgpe2Z1bmN0aW9uIHQodCl7cmV0dXJuIHQmJigiZnVuY3Rpb24iPT10eXBlb2YgbyYmaS5wb2ludFJhZGl1cygrby5hcHBseSh0aGlzLGFyZ3VtZW50cykpLHVoKHQsZShpKSkpLGkucmVzdWx0KCl9dmFyIG4sZSxyLGksbz00LjU7cmV0dXJuIHQuYXJlYT1mdW5jdGlvbih0KXtyZXR1cm4gdWgodCxlKFpiKSksWmIucmVzdWx0KCl9LHQuYm91bmRzPWZ1bmN0aW9uKHQpe3JldHVybiB1aCh0LGUodHcpKSx0dy5yZXN1bHQoKX0sdC5jZW50cm9pZD1mdW5jdGlvbih0KXtyZXR1cm4gdWgodCxlKGZ3KSksZncucmVzdWx0KCl9LHQucHJvamVjdGlvbj1mdW5jdGlvbihyKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT1udWxsPT0obj1yKT9fcDpyLnN0cmVhbSx0KTpufSx0LmNvbnRleHQ9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9bnVsbD09KHI9bik/bmV3IFBwOm5ldyB6cChuKSwiZnVuY3Rpb24iIT10eXBlb2YgbyYmaS5wb2ludFJhZGl1cyhvKSx0KTpyfSx0LnBvaW50UmFkaXVzPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPSJmdW5jdGlvbiI9PXR5cGVvZiBuP246KGkucG9pbnRSYWRpdXMoK24pLCtuKSx0KTpvfSx0LnByb2plY3Rpb24obnVsbCkuY29udGV4dChudWxsKX1mdW5jdGlvbiBScCh0LG4pe3ZhciBlPW5bMF0scj1uWzFdLGk9W2diKGUpLC1wYihlKSwwXSxvPTAsdT0wO2x3LnJlc2V0KCk7Zm9yKHZhciBhPTAsYz10Lmxlbmd0aDthPGM7KythKWlmKGY9KHM9dFthXSkubGVuZ3RoKWZvcih2YXIgcyxmLGw9c1tmLTFdLGg9bFswXSxwPWxbMV0vMit1YixkPWdiKHApLHY9cGIocCksXz0wO188ZjsrK18saD1nLGQ9eCx2PWIsbD15KXt2YXIgeT1zW19dLGc9eVswXSxtPXlbMV0vMit1Yix4PWdiKG0pLGI9cGIobSksdz1nLWgsTT13Pj0wPzE6LTEsVD1NKncsaz1UPmliLFM9ZCp4O2lmKGx3LmFkZChoYihTKk0qZ2IoVCksdipiK1MqcGIoVCkpKSxvKz1rP3crTSphYjp3LGteaD49ZV5nPj1lKXt2YXIgTj12aChwaChsKSxwaCh5KSk7Z2goTik7dmFyIEE9dmgoaSxOKTtnaChBKTt2YXIgRT0oa153Pj0wPy0xOjEpKnRoKEFbMl0pOyhyPkV8fHI9PT1FJiYoTlswXXx8TlsxXSkpJiYodSs9a153Pj0wPzE6LTEpfX1yZXR1cm4obzwtZWJ8fG88ZWImJmx3PC1lYileMSZ1fWZ1bmN0aW9uIFVwKHQsbixlLHIpe3JldHVybiBmdW5jdGlvbihpLG8pe2Z1bmN0aW9uIHUobixlKXt2YXIgcj1pKG4sZSk7dChuPXJbMF0sZT1yWzFdKSYmby5wb2ludChuLGUpfWZ1bmN0aW9uIGEodCxuKXt2YXIgZT1pKHQsbik7Xy5wb2ludChlWzBdLGVbMV0pfWZ1bmN0aW9uIGMoKXtiLnBvaW50PWEsXy5saW5lU3RhcnQoKX1mdW5jdGlvbiBzKCl7Yi5wb2ludD11LF8ubGluZUVuZCgpfWZ1bmN0aW9uIGYodCxuKXt2LnB1c2goW3Qsbl0pO3ZhciBlPWkodCxuKTttLnBvaW50KGVbMF0sZVsxXSl9ZnVuY3Rpb24gbCgpe20ubGluZVN0YXJ0KCksdj1bXX1mdW5jdGlvbiBoKCl7Zih2WzBdWzBdLHZbMF1bMV0pLG0ubGluZUVuZCgpO3ZhciB0LG4sZSxyLGk9bS5jbGVhbigpLHU9Zy5yZXN1bHQoKSxhPXUubGVuZ3RoO2lmKHYucG9wKCkscC5wdXNoKHYpLHY9bnVsbCxhKWlmKDEmaSl7aWYoZT11WzBdLChuPWUubGVuZ3RoLTEpPjApe2Zvcih4fHwoby5wb2x5Z29uU3RhcnQoKSx4PSEwKSxvLmxpbmVTdGFydCgpLHQ9MDt0PG47Kyt0KW8ucG9pbnQoKHI9ZVt0XSlbMF0sclsxXSk7by5saW5lRW5kKCl9fWVsc2UgYT4xJiYyJmkmJnUucHVzaCh1LnBvcCgpLmNvbmNhdCh1LnNoaWZ0KCkpKSxkLnB1c2godS5maWx0ZXIoRHApKX12YXIgcCxkLHYsXz1uKG8pLHk9aS5pbnZlcnQoclswXSxyWzFdKSxnPVFoKCksbT1uKGcpLHg9ITEsYj17cG9pbnQ6dSxsaW5lU3RhcnQ6YyxsaW5lRW5kOnMscG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7Yi5wb2ludD1mLGIubGluZVN0YXJ0PWwsYi5saW5lRW5kPWgsZD1bXSxwPVtdfSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7Yi5wb2ludD11LGIubGluZVN0YXJ0PWMsYi5saW5lRW5kPXMsZD13KGQpO3ZhciB0PVJwKHAseSk7ZC5sZW5ndGg/KHh8fChvLnBvbHlnb25TdGFydCgpLHg9ITApLGVwKGQsT3AsdCxlLG8pKTp0JiYoeHx8KG8ucG9seWdvblN0YXJ0KCkseD0hMCksby5saW5lU3RhcnQoKSxlKG51bGwsbnVsbCwxLG8pLG8ubGluZUVuZCgpKSx4JiYoby5wb2x5Z29uRW5kKCkseD0hMSksZD1wPW51bGx9LHNwaGVyZTpmdW5jdGlvbigpe28ucG9seWdvblN0YXJ0KCksby5saW5lU3RhcnQoKSxlKG51bGwsbnVsbCwxLG8pLG8ubGluZUVuZCgpLG8ucG9seWdvbkVuZCgpfX07cmV0dXJuIGJ9fWZ1bmN0aW9uIERwKHQpe3JldHVybiB0Lmxlbmd0aD4xfWZ1bmN0aW9uIE9wKHQsbil7cmV0dXJuKCh0PXQueClbMF08MD90WzFdLW9iLWViOm9iLXRbMV0pLSgobj1uLngpWzBdPDA/blsxXS1vYi1lYjpvYi1uWzFdKX1mdW5jdGlvbiBGcCh0KXt2YXIgbixlPU5hTixyPU5hTixpPU5hTjtyZXR1cm57bGluZVN0YXJ0OmZ1bmN0aW9uKCl7dC5saW5lU3RhcnQoKSxuPTF9LHBvaW50OmZ1bmN0aW9uKG8sdSl7dmFyIGE9bz4wP2liOi1pYixjPWZiKG8tZSk7ZmIoYy1pYik8ZWI/KHQucG9pbnQoZSxyPShyK3UpLzI+MD9vYjotb2IpLHQucG9pbnQoaSxyKSx0LmxpbmVFbmQoKSx0LmxpbmVTdGFydCgpLHQucG9pbnQoYSxyKSx0LnBvaW50KG8sciksbj0wKTppIT09YSYmYz49aWImJihmYihlLWkpPGViJiYoZS09aSplYiksZmIoby1hKTxlYiYmKG8tPWEqZWIpLHI9SXAoZSxyLG8sdSksdC5wb2ludChpLHIpLHQubGluZUVuZCgpLHQubGluZVN0YXJ0KCksdC5wb2ludChhLHIpLG49MCksdC5wb2ludChlPW8scj11KSxpPWF9LGxpbmVFbmQ6ZnVuY3Rpb24oKXt0LmxpbmVFbmQoKSxlPXI9TmFOfSxjbGVhbjpmdW5jdGlvbigpe3JldHVybiAyLW59fX1mdW5jdGlvbiBJcCh0LG4sZSxyKXt2YXIgaSxvLHU9Z2IodC1lKTtyZXR1cm4gZmIodSk+ZWI/bGIoKGdiKG4pKihvPXBiKHIpKSpnYihlKS1nYihyKSooaT1wYihuKSkqZ2IodCkpLyhpKm8qdSkpOihuK3IpLzJ9ZnVuY3Rpb24gWXAodCxuLGUscil7dmFyIGk7aWYobnVsbD09dClpPWUqb2Isci5wb2ludCgtaWIsaSksci5wb2ludCgwLGkpLHIucG9pbnQoaWIsaSksci5wb2ludChpYiwwKSxyLnBvaW50KGliLC1pKSxyLnBvaW50KDAsLWkpLHIucG9pbnQoLWliLC1pKSxyLnBvaW50KC1pYiwwKSxyLnBvaW50KC1pYixpKTtlbHNlIGlmKGZiKHRbMF0tblswXSk+ZWIpe3ZhciBvPXRbMF08blswXT9pYjotaWI7aT1lKm8vMixyLnBvaW50KC1vLGkpLHIucG9pbnQoMCxpKSxyLnBvaW50KG8saSl9ZWxzZSByLnBvaW50KG5bMF0sblsxXSl9ZnVuY3Rpb24gQnAodCxuKXtmdW5jdGlvbiBlKGUscixpLG8pe1poKG8sdCxuLGksZSxyKX1mdW5jdGlvbiByKHQsbil7cmV0dXJuIHBiKHQpKnBiKG4pPmF9ZnVuY3Rpb24gaSh0KXt2YXIgbixlLGksYSxmO3JldHVybntsaW5lU3RhcnQ6ZnVuY3Rpb24oKXthPWk9ITEsZj0xfSxwb2ludDpmdW5jdGlvbihsLGgpe3ZhciBwLGQ9W2wsaF0sdj1yKGwsaCksXz1jP3Y/MDp1KGwsaCk6dj91KGwrKGw8MD9pYjotaWIpLGgpOjA7aWYoIW4mJihhPWk9dikmJnQubGluZVN0YXJ0KCksdiE9PWkmJihwPW8obixkKSwodHAobixwKXx8dHAoZCxwKSkmJihkWzBdKz1lYixkWzFdKz1lYix2PXIoZFswXSxkWzFdKSkpLHYhPT1pKWY9MCx2Pyh0LmxpbmVTdGFydCgpLHA9byhkLG4pLHQucG9pbnQocFswXSxwWzFdKSk6KHA9byhuLGQpLHQucG9pbnQocFswXSxwWzFdKSx0LmxpbmVFbmQoKSksbj1wO2Vsc2UgaWYocyYmbiYmY152KXt2YXIgeTtfJmV8fCEoeT1vKGQsbiwhMCkpfHwoZj0wLGM/KHQubGluZVN0YXJ0KCksdC5wb2ludCh5WzBdWzBdLHlbMF1bMV0pLHQucG9pbnQoeVsxXVswXSx5WzFdWzFdKSx0LmxpbmVFbmQoKSk6KHQucG9pbnQoeVsxXVswXSx5WzFdWzFdKSx0LmxpbmVFbmQoKSx0LmxpbmVTdGFydCgpLHQucG9pbnQoeVswXVswXSx5WzBdWzFdKSkpfSF2fHxuJiZ0cChuLGQpfHx0LnBvaW50KGRbMF0sZFsxXSksbj1kLGk9dixlPV99LGxpbmVFbmQ6ZnVuY3Rpb24oKXtpJiZ0LmxpbmVFbmQoKSxuPW51bGx9LGNsZWFuOmZ1bmN0aW9uKCl7cmV0dXJuIGZ8KGEmJmkpPDwxfX19ZnVuY3Rpb24gbyh0LG4sZSl7dmFyIHI9cGgodCksaT1waChuKSxvPVsxLDAsMF0sdT12aChyLGkpLGM9ZGgodSx1KSxzPXVbMF0sZj1jLXMqcztpZighZilyZXR1cm4hZSYmdDt2YXIgbD1hKmMvZixoPS1hKnMvZixwPXZoKG8sdSksZD15aChvLGwpLHY9eWgodSxoKTtfaChkLHYpO3ZhciBfPXAseT1kaChkLF8pLGc9ZGgoXyxfKSxtPXkqeS1nKihkaChkLGQpLTEpO2lmKCEobTwwKSl7dmFyIHg9eGIobSksYj15aChfLCgteS14KS9nKTtpZihfaChiLGQpLGI9aGgoYiksIWUpcmV0dXJuIGI7dmFyIHcsTT10WzBdLFQ9blswXSxrPXRbMV0sUz1uWzFdO1Q8TSYmKHc9TSxNPVQsVD13KTt2YXIgTj1ULU0sQT1mYihOLWliKTxlYixFPUF8fE48ZWI7aWYoIUEmJlM8ayYmKHc9ayxrPVMsUz13KSxFP0E/aytTPjBeYlsxXTwoZmIoYlswXS1NKTxlYj9rOlMpOms8PWJbMV0mJmJbMV08PVM6Tj5pYl4oTTw9YlswXSYmYlswXTw9VCkpe3ZhciBDPXloKF8sKC15K3gpL2cpO3JldHVybiBfaChDLGQpLFtiLGhoKEMpXX19fWZ1bmN0aW9uIHUobixlKXt2YXIgcj1jP3Q6aWItdCxpPTA7cmV0dXJuIG48LXI/aXw9MTpuPnImJihpfD0yKSxlPC1yP2l8PTQ6ZT5yJiYoaXw9OCksaX12YXIgYT1wYih0KSxjPWE+MCxzPWZiKGEpPmViO3JldHVybiBVcChyLGksZSxjP1swLC10XTpbLWliLHQtaWJdKX1mdW5jdGlvbiBqcCh0KXtyZXR1cm57c3RyZWFtOkhwKHQpfX1mdW5jdGlvbiBIcCh0KXtmdW5jdGlvbiBuKCl7fXZhciBlPW4ucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoWHAucHJvdG90eXBlKTtmb3IodmFyIHIgaW4gdCllW3JdPXRbcl07cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciBlPW5ldyBuO3JldHVybiBlLnN0cmVhbT10LGV9fWZ1bmN0aW9uIFhwKCl7fWZ1bmN0aW9uIFZwKHQsbixlKXt2YXIgcj1uWzFdWzBdLW5bMF1bMF0saT1uWzFdWzFdLW5bMF1bMV0sbz10LmNsaXBFeHRlbnQmJnQuY2xpcEV4dGVudCgpO3Quc2NhbGUoMTUwKS50cmFuc2xhdGUoWzAsMF0pLG51bGwhPW8mJnQuY2xpcEV4dGVudChudWxsKSx1aChlLHQuc3RyZWFtKHR3KSk7dmFyIHU9dHcucmVzdWx0KCksYT1NYXRoLm1pbihyLyh1WzFdWzBdLXVbMF1bMF0pLGkvKHVbMV1bMV0tdVswXVsxXSkpLGM9K25bMF1bMF0rKHItYSoodVsxXVswXSt1WzBdWzBdKSkvMixzPStuWzBdWzFdKyhpLWEqKHVbMV1bMV0rdVswXVsxXSkpLzI7cmV0dXJuIG51bGwhPW8mJnQuY2xpcEV4dGVudChvKSx0LnNjYWxlKDE1MCphKS50cmFuc2xhdGUoW2Msc10pfWZ1bmN0aW9uIFdwKHQpe3JldHVybiBmdW5jdGlvbihuLGUpe3JldHVybiBWcCh0LFtbMCwwXSxuXSxlKX19ZnVuY3Rpb24gJHAodCl7cmV0dXJuIGZ1bmN0aW9uKG4sZSl7cmV0dXJuIFZwKHQsbixlKX19ZnVuY3Rpb24gWnAodCxuKXtyZXR1cm4rbj9KcCh0LG4pOkdwKHQpfWZ1bmN0aW9uIEdwKHQpe3JldHVybiBIcCh7cG9pbnQ6ZnVuY3Rpb24obixlKXtuPXQobixlKSx0aGlzLnN0cmVhbS5wb2ludChuWzBdLG5bMV0pfX0pfWZ1bmN0aW9uIEpwKHQsbil7ZnVuY3Rpb24gZShyLGksbyx1LGEsYyxzLGYsbCxoLHAsZCx2LF8pe3ZhciB5PXMtcixnPWYtaSxtPXkqeStnKmc7aWYobT40Km4mJnYtLSl7dmFyIHg9dStoLGI9YStwLHc9YytkLE09eGIoeCp4K2IqYit3KncpLFQ9dGgody89TSksaz1mYihmYih3KS0xKTxlYnx8ZmIoby1sKTxlYj8obytsKS8yOmhiKGIseCksUz10KGssVCksTj1TWzBdLEE9U1sxXSxFPU4tcixDPUEtaSx6PWcqRS15KkM7KHoqei9tPm58fGZiKCh5KkUrZypDKS9tLS41KT4uM3x8dSpoK2EqcCtjKmQ8ZHcpJiYoZShyLGksbyx1LGEsYyxOLEEsayx4Lz1NLGIvPU0sdyx2LF8pLF8ucG9pbnQoTixBKSxlKE4sQSxrLHgsYix3LHMsZixsLGgscCxkLHYsXykpfX1yZXR1cm4gZnVuY3Rpb24obil7ZnVuY3Rpb24gcihlLHIpe2U9dChlLHIpLG4ucG9pbnQoZVswXSxlWzFdKX1mdW5jdGlvbiBpKCl7eT1OYU4sdy5wb2ludD1vLG4ubGluZVN0YXJ0KCl9ZnVuY3Rpb24gbyhyLGkpe3ZhciBvPXBoKFtyLGldKSx1PXQocixpKTtlKHksZyxfLG0seCxiLHk9dVswXSxnPXVbMV0sXz1yLG09b1swXSx4PW9bMV0sYj1vWzJdLHB3LG4pLG4ucG9pbnQoeSxnKX1mdW5jdGlvbiB1KCl7dy5wb2ludD1yLG4ubGluZUVuZCgpfWZ1bmN0aW9uIGEoKXtpKCksdy5wb2ludD1jLHcubGluZUVuZD1zfWZ1bmN0aW9uIGModCxuKXtvKGY9dCxuKSxsPXksaD1nLHA9bSxkPXgsdj1iLHcucG9pbnQ9b31mdW5jdGlvbiBzKCl7ZSh5LGcsXyxtLHgsYixsLGgsZixwLGQsdixwdyxuKSx3LmxpbmVFbmQ9dSx1KCl9dmFyIGYsbCxoLHAsZCx2LF8seSxnLG0seCxiLHc9e3BvaW50OnIsbGluZVN0YXJ0OmksbGluZUVuZDp1LHBvbHlnb25TdGFydDpmdW5jdGlvbigpe24ucG9seWdvblN0YXJ0KCksdy5saW5lU3RhcnQ9YX0scG9seWdvbkVuZDpmdW5jdGlvbigpe24ucG9seWdvbkVuZCgpLHcubGluZVN0YXJ0PWl9fTtyZXR1cm4gd319ZnVuY3Rpb24gUXAodCl7cmV0dXJuIEtwKGZ1bmN0aW9uKCl7cmV0dXJuIHR9KSgpfWZ1bmN0aW9uIEtwKHQpe2Z1bmN0aW9uIG4odCl7cmV0dXJuIHQ9Zih0WzBdKnNiLHRbMV0qc2IpLFt0WzBdKl8rYSxjLXRbMV0qX119ZnVuY3Rpb24gZSh0KXtyZXR1cm4gdD1mLmludmVydCgodFswXS1hKS9fLChjLXRbMV0pL18pLHQmJlt0WzBdKmNiLHRbMV0qY2JdfWZ1bmN0aW9uIHIodCxuKXtyZXR1cm4gdD11KHQsbiksW3RbMF0qXythLGMtdFsxXSpfXX1mdW5jdGlvbiBpKCl7Zj1CaChzPUhoKGIsdyxNKSx1KTt2YXIgdD11KG0seCk7cmV0dXJuIGE9eS10WzBdKl8sYz1nK3RbMV0qXyxvKCl9ZnVuY3Rpb24gbygpe3JldHVybiBkPXY9bnVsbCxufXZhciB1LGEsYyxzLGYsbCxoLHAsZCx2LF89MTUwLHk9NDgwLGc9MjUwLG09MCx4PTAsYj0wLHc9MCxNPTAsVD1udWxsLGs9aHcsUz1udWxsLE49X3AsQT0uNSxFPVpwKHIsQSk7cmV0dXJuIG4uc3RyZWFtPWZ1bmN0aW9uKHQpe3JldHVybiBkJiZ2PT09dD9kOmQ9dncoayhzLEUoTih2PXQpKSkpfSxuLmNsaXBBbmdsZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaz0rdD9CcChUPXQqc2IsNipzYik6KFQ9bnVsbCxodyksbygpKTpUKmNifSxuLmNsaXBFeHRlbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KE49bnVsbD09dD8oUz1sPWg9cD1udWxsLF9wKTppcChTPSt0WzBdWzBdLGw9K3RbMF1bMV0saD0rdFsxXVswXSxwPSt0WzFdWzFdKSxvKCkpOm51bGw9PVM/bnVsbDpbW1MsbF0sW2gscF1dfSxuLnNjYWxlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhfPSt0LGkoKSk6X30sbi50cmFuc2xhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHk9K3RbMF0sZz0rdFsxXSxpKCkpOlt5LGddfSxuLmNlbnRlcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obT10WzBdJTM2MCpzYix4PXRbMV0lMzYwKnNiLGkoKSk6W20qY2IseCpjYl19LG4ucm90YXRlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhiPXRbMF0lMzYwKnNiLHc9dFsxXSUzNjAqc2IsTT10Lmxlbmd0aD4yP3RbMl0lMzYwKnNiOjAsaSgpKTpbYipjYix3KmNiLE0qY2JdfSxuLnByZWNpc2lvbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oRT1acChyLEE9dCp0KSxvKCkpOnhiKEEpfSxuLmZpdEV4dGVudD0kcChuKSxuLmZpdFNpemU9V3AobiksZnVuY3Rpb24oKXtyZXR1cm4gdT10LmFwcGx5KHRoaXMsYXJndW1lbnRzKSxuLmludmVydD11LmludmVydCYmZSxpKCl9fWZ1bmN0aW9uIHRkKHQpe3ZhciBuPTAsZT1pYi8zLHI9S3AodCksaT1yKG4sZSk7cmV0dXJuIGkucGFyYWxsZWxzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3Iobj10WzBdKnNiLGU9dFsxXSpzYik6W24qY2IsZSpjYl19LGl9ZnVuY3Rpb24gbmQodCxuKXtmdW5jdGlvbiBlKHQsbil7dmFyIGU9eGIoby0yKmkqZ2IobikpL2k7cmV0dXJuW2UqZ2IodCo9aSksdS1lKnBiKHQpXX12YXIgcj1nYih0KSxpPShyK2diKG4pKS8yLG89MStyKigyKmktciksdT14YihvKS9pO3JldHVybiBlLmludmVydD1mdW5jdGlvbih0LG4pe3ZhciBlPXUtbjtyZXR1cm5baGIodCxlKS9pLHRoKChvLSh0KnQrZSplKSppKmkpLygyKmkpKV19LGV9ZnVuY3Rpb24gZWQoKXtyZXR1cm4gdGQobmQpLnNjYWxlKDE1NS40MjQpLmNlbnRlcihbMCwzMy42NDQyXSl9ZnVuY3Rpb24gcmQoKXtyZXR1cm4gZWQoKS5wYXJhbGxlbHMoWzI5LjUsNDUuNV0pLnNjYWxlKDEwNzApLnRyYW5zbGF0ZShbNDgwLDI1MF0pLnJvdGF0ZShbOTYsMF0pLmNlbnRlcihbLS42LDM4LjddKX1mdW5jdGlvbiBpZCh0KXt2YXIgbj10Lmxlbmd0aDtyZXR1cm57cG9pbnQ6ZnVuY3Rpb24oZSxyKXtmb3IodmFyIGk9LTE7KytpPG47KXRbaV0ucG9pbnQoZSxyKX0sc3BoZXJlOmZ1bmN0aW9uKCl7Zm9yKHZhciBlPS0xOysrZTxuOyl0W2VdLnNwaGVyZSgpfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXtmb3IodmFyIGU9LTE7KytlPG47KXRbZV0ubGluZVN0YXJ0KCl9LGxpbmVFbmQ6ZnVuY3Rpb24oKXtmb3IodmFyIGU9LTE7KytlPG47KXRbZV0ubGluZUVuZCgpfSxwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24oKXtmb3IodmFyIGU9LTE7KytlPG47KXRbZV0ucG9seWdvblN0YXJ0KCl9LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXtmb3IodmFyIGU9LTE7KytlPG47KXRbZV0ucG9seWdvbkVuZCgpfX19ZnVuY3Rpb24gb2QoKXtmdW5jdGlvbiB0KHQpe3ZhciBuPXRbMF0sZT10WzFdO3JldHVybiB1PW51bGwsci5wb2ludChuLGUpLHV8fChpLnBvaW50KG4sZSksdSl8fChvLnBvaW50KG4sZSksdSl9dmFyIG4sZSxyLGksbyx1LGE9cmQoKSxjPWVkKCkucm90YXRlKFsxNTQsMF0pLmNlbnRlcihbLTIsNTguNV0pLnBhcmFsbGVscyhbNTUsNjVdKSxzPWVkKCkucm90YXRlKFsxNTcsMF0pLmNlbnRlcihbLTMsMTkuOV0pLnBhcmFsbGVscyhbOCwxOF0pLGY9e3BvaW50OmZ1bmN0aW9uKHQsbil7dT1bdCxuXX19O3JldHVybiB0LmludmVydD1mdW5jdGlvbih0KXt2YXIgbj1hLnNjYWxlKCksZT1hLnRyYW5zbGF0ZSgpLHI9KHRbMF0tZVswXSkvbixpPSh0WzFdLWVbMV0pL247cmV0dXJuKGk+PS4xMiYmaTwuMjM0JiZyPj0tLjQyNSYmcjwtLjIxND9jOmk+PS4xNjYmJmk8LjIzNCYmcj49LS4yMTQmJnI8LS4xMTU/czphKS5pbnZlcnQodCl9LHQuc3RyZWFtPWZ1bmN0aW9uKHQpe3JldHVybiBuJiZlPT09dD9uOm49aWQoW2Euc3RyZWFtKGU9dCksYy5zdHJlYW0odCkscy5zdHJlYW0odCldKX0sdC5wcmVjaXNpb249ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGEucHJlY2lzaW9uKG4pLGMucHJlY2lzaW9uKG4pLHMucHJlY2lzaW9uKG4pLHQpOmEucHJlY2lzaW9uKCl9LHQuc2NhbGU9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGEuc2NhbGUobiksYy5zY2FsZSguMzUqbikscy5zY2FsZShuKSx0LnRyYW5zbGF0ZShhLnRyYW5zbGF0ZSgpKSk6YS5zY2FsZSgpfSx0LnRyYW5zbGF0ZT1mdW5jdGlvbihuKXtpZighYXJndW1lbnRzLmxlbmd0aClyZXR1cm4gYS50cmFuc2xhdGUoKTt2YXIgZT1hLnNjYWxlKCksdT0rblswXSxsPStuWzFdO3JldHVybiByPWEudHJhbnNsYXRlKG4pLmNsaXBFeHRlbnQoW1t1LS40NTUqZSxsLS4yMzgqZV0sW3UrLjQ1NSplLGwrLjIzOCplXV0pLnN0cmVhbShmKSxpPWMudHJhbnNsYXRlKFt1LS4zMDcqZSxsKy4yMDEqZV0pLmNsaXBFeHRlbnQoW1t1LS40MjUqZStlYixsKy4xMiplK2ViXSxbdS0uMjE0KmUtZWIsbCsuMjM0KmUtZWJdXSkuc3RyZWFtKGYpLG89cy50cmFuc2xhdGUoW3UtLjIwNSplLGwrLjIxMiplXSkuY2xpcEV4dGVudChbW3UtLjIxNCplK2ViLGwrLjE2NiplK2ViXSxbdS0uMTE1KmUtZWIsbCsuMjM0KmUtZWJdXSkuc3RyZWFtKGYpLHR9LHQuZml0RXh0ZW50PSRwKHQpLHQuZml0U2l6ZT1XcCh0KSx0LnNjYWxlKDEwNzApfWZ1bmN0aW9uIHVkKHQpe3JldHVybiBmdW5jdGlvbihuLGUpe3ZhciByPXBiKG4pLGk9cGIoZSksbz10KHIqaSk7cmV0dXJuW28qaSpnYihuKSxvKmdiKGUpXX19ZnVuY3Rpb24gYWQodCl7cmV0dXJuIGZ1bmN0aW9uKG4sZSl7dmFyIHI9eGIobipuK2UqZSksaT10KHIpLG89Z2IoaSksdT1wYihpKTtyZXR1cm5baGIobipvLHIqdSksdGgociYmZSpvL3IpXX19ZnVuY3Rpb24gY2QoKXtyZXR1cm4gUXAoX3cpLnNjYWxlKDEyNC43NSkuY2xpcEFuZ2xlKDE3OS45OTkpfWZ1bmN0aW9uIHNkKCl7cmV0dXJuIFFwKHl3KS5zY2FsZSg3OS40MTg4KS5jbGlwQW5nbGUoMTc5Ljk5OSl9ZnVuY3Rpb24gZmQodCxuKXtyZXR1cm5bdCxfYihiYigob2IrbikvMikpXX1mdW5jdGlvbiBsZCgpe3JldHVybiBoZChmZCkuc2NhbGUoOTYxL2FiKX1mdW5jdGlvbiBoZCh0KXt2YXIgbixlPVFwKHQpLHI9ZS5zY2FsZSxpPWUudHJhbnNsYXRlLG89ZS5jbGlwRXh0ZW50O3JldHVybiBlLnNjYWxlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyKHQpLG4mJmUuY2xpcEV4dGVudChudWxsKSxlKTpyKCl9LGUudHJhbnNsYXRlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpKHQpLG4mJmUuY2xpcEV4dGVudChudWxsKSxlKTppKCl9LGUuY2xpcEV4dGVudD1mdW5jdGlvbih0KXtpZighYXJndW1lbnRzLmxlbmd0aClyZXR1cm4gbj9udWxsOm8oKTtpZihuPW51bGw9PXQpe3ZhciB1PWliKnIoKSxhPWkoKTt0PVtbYVswXS11LGFbMV0tdV0sW2FbMF0rdSxhWzFdK3VdXX1yZXR1cm4gbyh0KSxlfSxlLmNsaXBFeHRlbnQobnVsbCl9ZnVuY3Rpb24gcGQodCl7cmV0dXJuIGJiKChvYit0KS8yKX1mdW5jdGlvbiBkZCh0LG4pe2Z1bmN0aW9uIGUodCxuKXtvPjA/bjwtb2IrZWImJihuPS1vYitlYik6bj5vYi1lYiYmKG49b2ItZWIpO3ZhciBlPW8veWIocGQobiksaSk7cmV0dXJuW2UqZ2IoaSp0KSxvLWUqcGIoaSp0KV19dmFyIHI9cGIodCksaT10PT09bj9nYih0KTpfYihyL3BiKG4pKS9fYihwZChuKS9wZCh0KSksbz1yKnliKHBkKHQpLGkpL2k7cmV0dXJuIGk/KGUuaW52ZXJ0PWZ1bmN0aW9uKHQsbil7dmFyIGU9by1uLHI9bWIoaSkqeGIodCp0K2UqZSk7cmV0dXJuW2hiKHQsZSkvaSwyKmxiKHliKG8vciwxL2kpKS1vYl19LGUpOmZkfWZ1bmN0aW9uIHZkKCl7cmV0dXJuIHRkKGRkKS5zY2FsZSgxMDkuNSkucGFyYWxsZWxzKFszMCwzMF0pfWZ1bmN0aW9uIF9kKHQsbil7cmV0dXJuW3Qsbl19ZnVuY3Rpb24geWQoKXtyZXR1cm4gUXAoX2QpLnNjYWxlKDE1Mi42Myl9ZnVuY3Rpb24gZ2QodCxuKXtmdW5jdGlvbiBlKHQsbil7dmFyIGU9by1uLHI9aSp0O3JldHVybltlKmdiKHIpLG8tZSpwYihyKV19dmFyIHI9cGIodCksaT10PT09bj9nYih0KTooci1wYihuKSkvKG4tdCksbz1yL2krdDtyZXR1cm4gZmIoaSk8ZWI/X2Q6KGUuaW52ZXJ0PWZ1bmN0aW9uKHQsbil7dmFyIGU9by1uO3JldHVybltoYih0LGUpL2ksby1tYihpKSp4Yih0KnQrZSplKV19LGUpfWZ1bmN0aW9uIG1kKCl7cmV0dXJuIHRkKGdkKS5zY2FsZSgxMzEuMTU0KS5jZW50ZXIoWzAsMTMuOTM4OV0pfWZ1bmN0aW9uIHhkKHQsbil7dmFyIGU9cGIobikscj1wYih0KSplO3JldHVybltlKmdiKHQpL3IsZ2Iobikvcl19ZnVuY3Rpb24gYmQoKXtyZXR1cm4gUXAoeGQpLnNjYWxlKDE0NC4wNDkpLmNsaXBBbmdsZSg2MCl9ZnVuY3Rpb24gd2QodCxuKXtyZXR1cm5bcGIobikqZ2IodCksZ2IobildfWZ1bmN0aW9uIE1kKCl7cmV0dXJuIFFwKHdkKS5zY2FsZSgyNDkuNSkuY2xpcEFuZ2xlKDkwK2ViKX1mdW5jdGlvbiBUZCh0LG4pe3ZhciBlPXBiKG4pLHI9MStwYih0KSplO3JldHVybltlKmdiKHQpL3IsZ2Iobikvcl19ZnVuY3Rpb24ga2QoKXtyZXR1cm4gUXAoVGQpLnNjYWxlKDI1MCkuY2xpcEFuZ2xlKDE0Mil9ZnVuY3Rpb24gU2QodCxuKXtyZXR1cm5bX2IoYmIoKG9iK24pLzIpKSwtdF19ZnVuY3Rpb24gTmQoKXt2YXIgdD1oZChTZCksbj10LmNlbnRlcixlPXQucm90YXRlO3JldHVybiB0LmNlbnRlcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD9uKFstdFsxXSx0WzBdXSk6KHQ9bigpLFt0WzFdLC10WzBdXSl9LHQucm90YXRlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP2UoW3RbMF0sdFsxXSx0Lmxlbmd0aD4yP3RbMl0rOTA6OTBdKToodD1lKCksW3RbMF0sdFsxXSx0WzJdLTkwXSl9LGUoWzAsMCw5MF0pLnNjYWxlKDE1OS4xNTUpfXZhciBBZD0iNC4yLjIiLEVkPWUobiksQ2Q9RWQucmlnaHQsemQ9RWQubGVmdCxQZD1BcnJheS5wcm90b3R5cGUscWQ9UGQuc2xpY2UsTGQ9UGQubWFwLFJkPU1hdGguc3FydCg1MCksVWQ9TWF0aC5zcXJ0KDEwKSxEZD1NYXRoLnNxcnQoMiksT2Q9IiQiO1AucHJvdG90eXBlPXEucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpQLGhhczpmdW5jdGlvbih0KXtyZXR1cm4gT2QrdCBpbiB0aGlzfSxnZXQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXNbT2QrdF19LHNldDpmdW5jdGlvbih0LG4pe3JldHVybiB0aGlzW09kK3RdPW4sdGhpc30scmVtb3ZlOmZ1bmN0aW9uKHQpe3ZhciBuPU9kK3Q7cmV0dXJuIG4gaW4gdGhpcyYmZGVsZXRlIHRoaXNbbl19LGNsZWFyOmZ1bmN0aW9uKCl7Zm9yKHZhciB0IGluIHRoaXMpdFswXT09PU9kJiZkZWxldGUgdGhpc1t0XX0sa2V5czpmdW5jdGlvbigpe3ZhciB0PVtdO2Zvcih2YXIgbiBpbiB0aGlzKW5bMF09PT1PZCYmdC5wdXNoKG4uc2xpY2UoMSkpO3JldHVybiB0fSx2YWx1ZXM6ZnVuY3Rpb24oKXt2YXIgdD1bXTtmb3IodmFyIG4gaW4gdGhpcyluWzBdPT09T2QmJnQucHVzaCh0aGlzW25dKTtyZXR1cm4gdH0sZW50cmllczpmdW5jdGlvbigpe3ZhciB0PVtdO2Zvcih2YXIgbiBpbiB0aGlzKW5bMF09PT1PZCYmdC5wdXNoKHtrZXk6bi5zbGljZSgxKSx2YWx1ZTp0aGlzW25dfSk7cmV0dXJuIHR9LHNpemU6ZnVuY3Rpb24oKXt2YXIgdD0wO2Zvcih2YXIgbiBpbiB0aGlzKW5bMF09PT1PZCYmKyt0O3JldHVybiB0fSxlbXB0eTpmdW5jdGlvbigpe2Zvcih2YXIgdCBpbiB0aGlzKWlmKHRbMF09PT1PZClyZXR1cm4hMTtyZXR1cm4hMH0sZWFjaDpmdW5jdGlvbih0KXtmb3IodmFyIG4gaW4gdGhpcyluWzBdPT09T2QmJnQodGhpc1tuXSxuLnNsaWNlKDEpLHRoaXMpfX07dmFyIEZkPXEucHJvdG90eXBlO0YucHJvdG90eXBlPUkucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpGLGhhczpGZC5oYXMsYWRkOmZ1bmN0aW9uKHQpe3JldHVybiB0Kz0iIix0aGlzW09kK3RdPXQsdGhpc30scmVtb3ZlOkZkLnJlbW92ZSxjbGVhcjpGZC5jbGVhcix2YWx1ZXM6RmQua2V5cyxzaXplOkZkLnNpemUsZW1wdHk6RmQuZW1wdHksZWFjaDpGZC5lYWNofTt2YXIgSWQ9MyxZZD1mdW5jdGlvbiB0KG4pe2Z1bmN0aW9uIGUodCl7cmV0dXJuIE1hdGgucG93KHQsbil9cmV0dXJuIG49K24sZS5leHBvbmVudD10LGV9KElkKSxCZD1mdW5jdGlvbiB0KG4pe2Z1bmN0aW9uIGUodCl7cmV0dXJuIDEtTWF0aC5wb3coMS10LG4pfXJldHVybiBuPStuLGUuZXhwb25lbnQ9dCxlfShJZCksamQ9ZnVuY3Rpb24gdChuKXtmdW5jdGlvbiBlKHQpe3JldHVybigodCo9Mik8PTE/TWF0aC5wb3codCxuKToyLU1hdGgucG93KDItdCxuKSkvMn1yZXR1cm4gbj0rbixlLmV4cG9uZW50PXQsZX0oSWQpLEhkPU1hdGguUEksWGQ9SGQvMixWZD00LzExLFdkPTYvMTEsJGQ9OC8xMSxaZD0uNzUsR2Q9OS8xMSxKZD0xMC8xMSxRZD0uOTM3NSxLZD0yMS8yMix0dj02My82NCxudj0xL1ZkL1ZkLGV2PTEuNzAxNTgscnY9ZnVuY3Rpb24gdChuKXtmdW5jdGlvbiBlKHQpe3JldHVybiB0KnQqKChuKzEpKnQtbil9cmV0dXJuIG49K24sZS5vdmVyc2hvb3Q9dCxlfShldiksaXY9ZnVuY3Rpb24gdChuKXtmdW5jdGlvbiBlKHQpe3JldHVybi0tdCp0KigobisxKSp0K24pKzF9cmV0dXJuIG49K24sZS5vdmVyc2hvb3Q9dCxlfShldiksb3Y9ZnVuY3Rpb24gdChuKXtmdW5jdGlvbiBlKHQpe3JldHVybigodCo9Mik8MT90KnQqKChuKzEpKnQtbik6KHQtPTIpKnQqKChuKzEpKnQrbikrMikvMn1yZXR1cm4gbj0rbixlLm92ZXJzaG9vdD10LGV9KGV2KSx1dj0yKk1hdGguUEksYXY9MSxjdj0uMyxzdj1mdW5jdGlvbiB0KG4sZSl7ZnVuY3Rpb24gcih0KXtyZXR1cm4gbipNYXRoLnBvdygyLDEwKi0tdCkqTWF0aC5zaW4oKGktdCkvZSl9dmFyIGk9TWF0aC5hc2luKDEvKG49TWF0aC5tYXgoMSxuKSkpKihlLz11dik7cmV0dXJuIHIuYW1wbGl0dWRlPWZ1bmN0aW9uKG4pe3JldHVybiB0KG4sZSp1dil9LHIucGVyaW9kPWZ1bmN0aW9uKGUpe3JldHVybiB0KG4sZSl9LHJ9KGF2LGN2KSxmdj1mdW5jdGlvbiB0KG4sZSl7ZnVuY3Rpb24gcih0KXtyZXR1cm4gMS1uKk1hdGgucG93KDIsLTEwKih0PSt0KSkqTWF0aC5zaW4oKHQraSkvZSl9dmFyIGk9TWF0aC5hc2luKDEvKG49TWF0aC5tYXgoMSxuKSkpKihlLz11dik7cmV0dXJuIHIuYW1wbGl0dWRlPWZ1bmN0aW9uKG4pe3JldHVybiB0KG4sZSp1dil9LHIucGVyaW9kPWZ1bmN0aW9uKGUpe3JldHVybiB0KG4sZSl9LHJ9KGF2LGN2KSxsdj1mdW5jdGlvbiB0KG4sZSl7ZnVuY3Rpb24gcih0KXtyZXR1cm4oKHQ9Mip0LTEpPDA/bipNYXRoLnBvdygyLDEwKnQpKk1hdGguc2luKChpLXQpL2UpOjItbipNYXRoLnBvdygyLC0xMCp0KSpNYXRoLnNpbigoaSt0KS9lKSkvMn12YXIgaT1NYXRoLmFzaW4oMS8obj1NYXRoLm1heCgxLG4pKSkqKGUvPXV2KTtyZXR1cm4gci5hbXBsaXR1ZGU9ZnVuY3Rpb24obil7cmV0dXJuIHQobixlKnV2KX0sci5wZXJpb2Q9ZnVuY3Rpb24oZSl7cmV0dXJuIHQobixlKX0scn0oYXYsY3YpLGh2PU1hdGguUEkscHY9Mipodixkdj0xZS02LHZ2PXB2LWR2O010LnByb3RvdHlwZT1UdC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOk10LG1vdmVUbzpmdW5jdGlvbih0LG4pe3RoaXMuXy5wdXNoKCJNIix0aGlzLl94MD10aGlzLl94MT0rdCwiLCIsdGhpcy5feTA9dGhpcy5feTE9K24pfSxjbG9zZVBhdGg6ZnVuY3Rpb24oKXtudWxsIT09dGhpcy5feDEmJih0aGlzLl94MT10aGlzLl94MCx0aGlzLl95MT10aGlzLl95MCx0aGlzLl8ucHVzaCgiWiIpKX0sbGluZVRvOmZ1bmN0aW9uKHQsbil7dGhpcy5fLnB1c2goIkwiLHRoaXMuX3gxPSt0LCIsIix0aGlzLl95MT0rbil9LHF1YWRyYXRpY0N1cnZlVG86ZnVuY3Rpb24odCxuLGUscil7dGhpcy5fLnB1c2goIlEiLCt0LCIsIiwrbiwiLCIsdGhpcy5feDE9K2UsIiwiLHRoaXMuX3kxPStyKX0sYmV6aWVyQ3VydmVUbzpmdW5jdGlvbih0LG4sZSxyLGksbyl7dGhpcy5fLnB1c2goIkMiLCt0LCIsIiwrbiwiLCIsK2UsIiwiLCtyLCIsIix0aGlzLl94MT0raSwiLCIsdGhpcy5feTE9K28pfSxhcmNUbzpmdW5jdGlvbih0LG4sZSxyLGkpe3Q9K3Qsbj0rbixlPStlLHI9K3IsaT0raTt2YXIgbz10aGlzLl94MSx1PXRoaXMuX3kxLGE9ZS10LGM9ci1uLHM9by10LGY9dS1uLGw9cypzK2YqZjtpZihpPDApdGhyb3cgbmV3IEVycm9yKCJuZWdhdGl2ZSByYWRpdXM6ICIraSk7aWYobnVsbD09PXRoaXMuX3gxKXRoaXMuXy5wdXNoKCJNIix0aGlzLl94MT10LCIsIix0aGlzLl95MT1uKTtlbHNlIGlmKGw+ZHYpaWYoTWF0aC5hYnMoZiphLWMqcyk+ZHYmJmkpe3ZhciBoPWUtbyxwPXItdSxkPWEqYStjKmMsdj1oKmgrcCpwLF89TWF0aC5zcXJ0KGQpLHk9TWF0aC5zcXJ0KGwpLGc9aSpNYXRoLnRhbigoaHYtTWF0aC5hY29zKChkK2wtdikvKDIqXyp5KSkpLzIpLG09Zy95LHg9Zy9fO01hdGguYWJzKG0tMSk+ZHYmJnRoaXMuXy5wdXNoKCJMIix0K20qcywiLCIsbittKmYpLHRoaXMuXy5wdXNoKCJBIixpLCIsIixpLCIsMCwwLCIsKyhmKmg+cypwKSwiLCIsdGhpcy5feDE9dCt4KmEsIiwiLHRoaXMuX3kxPW4reCpjKX1lbHNlIHRoaXMuXy5wdXNoKCJMIix0aGlzLl94MT10LCIsIix0aGlzLl95MT1uKTtlbHNlO30sYXJjOmZ1bmN0aW9uKHQsbixlLHIsaSxvKXt0PSt0LG49K24sZT0rZTt2YXIgdT1lKk1hdGguY29zKHIpLGE9ZSpNYXRoLnNpbihyKSxjPXQrdSxzPW4rYSxmPTFebyxsPW8/ci1pOmktcjtpZihlPDApdGhyb3cgbmV3IEVycm9yKCJuZWdhdGl2ZSByYWRpdXM6ICIrZSk7bnVsbD09PXRoaXMuX3gxP3RoaXMuXy5wdXNoKCJNIixjLCIsIixzKTooTWF0aC5hYnModGhpcy5feDEtYyk+ZHZ8fE1hdGguYWJzKHRoaXMuX3kxLXMpPmR2KSYmdGhpcy5fLnB1c2goIkwiLGMsIiwiLHMpLGUmJihsPnZ2P3RoaXMuXy5wdXNoKCJBIixlLCIsIixlLCIsMCwxLCIsZiwiLCIsdC11LCIsIixuLWEsIkEiLGUsIiwiLGUsIiwwLDEsIixmLCIsIix0aGlzLl94MT1jLCIsIix0aGlzLl95MT1zKToobDwwJiYobD1sJXB2K3B2KSx0aGlzLl8ucHVzaCgiQSIsZSwiLCIsZSwiLDAsIiwrKGw+PWh2KSwiLCIsZiwiLCIsdGhpcy5feDE9dCtlKk1hdGguY29zKGkpLCIsIix0aGlzLl95MT1uK2UqTWF0aC5zaW4oaSkpKSl9LHJlY3Q6ZnVuY3Rpb24odCxuLGUscil7dGhpcy5fLnB1c2goIk0iLHRoaXMuX3gwPXRoaXMuX3gxPSt0LCIsIix0aGlzLl95MD10aGlzLl95MT0rbiwiaCIsK2UsInYiLCtyLCJoIiwtZSwiWiIpfSx0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiB0aGlzLl8uam9pbigiIil9fTt2YXIgX3Y9anQucHJvdG90eXBlPUh0LnByb3RvdHlwZTtfdi5jb3B5PWZ1bmN0aW9uKCl7dmFyIHQsbixlPW5ldyBIdCh0aGlzLl94LHRoaXMuX3ksdGhpcy5feDAsdGhpcy5feTAsdGhpcy5feDEsdGhpcy5feTEpLHI9dGhpcy5fcm9vdDtpZighcilyZXR1cm4gZTtpZighci5sZW5ndGgpcmV0dXJuIGUuX3Jvb3Q9WHQociksZTtmb3IodD1be3NvdXJjZTpyLHRhcmdldDplLl9yb290PW5ldyBBcnJheSg0KX1dO3I9dC5wb3AoKTspZm9yKHZhciBpPTA7aTw0OysraSkobj1yLnNvdXJjZVtpXSkmJihuLmxlbmd0aD90LnB1c2goe3NvdXJjZTpuLHRhcmdldDpyLnRhcmdldFtpXT1uZXcgQXJyYXkoNCl9KTpyLnRhcmdldFtpXT1YdChuKSk7cmV0dXJuIGV9LF92LmFkZD1rdCxfdi5hZGRBbGw9TnQsX3YuY292ZXI9QXQsX3YuZGF0YT1FdCxfdi5leHRlbnQ9Q3QsX3YuZmluZD1QdCxfdi5yZW1vdmU9cXQsX3YucmVtb3ZlQWxsPUx0LF92LnJvb3Q9UnQsX3Yuc2l6ZT1VdCxfdi52aXNpdD1EdCxfdi52aXNpdEFmdGVyPU90LF92Lng9SXQsX3YueT1CdDt2YXIgeXY9W10uc2xpY2UsZ3Y9e307VnQucHJvdG90eXBlPVF0LnByb3RvdHlwZT17Y29uc3RydWN0b3I6VnQsZGVmZXI6ZnVuY3Rpb24odCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHR8fHRoaXMuX2NhbGwpdGhyb3cgbmV3IEVycm9yO2lmKG51bGwhPXRoaXMuX2Vycm9yKXJldHVybiB0aGlzO3ZhciBuPXl2LmNhbGwoYXJndW1lbnRzLDEpO3JldHVybiBuLnB1c2godCksKyt0aGlzLl93YWl0aW5nLHRoaXMuX3Rhc2tzLnB1c2gobiksV3QodGhpcyksdGhpc30sYWJvcnQ6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbD09dGhpcy5fZXJyb3ImJkd0KHRoaXMsbmV3IEVycm9yKCJhYm9ydCIpKSwKdGhpc30sYXdhaXQ6ZnVuY3Rpb24odCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHR8fHRoaXMuX2NhbGwpdGhyb3cgbmV3IEVycm9yO3JldHVybiB0aGlzLl9jYWxsPWZ1bmN0aW9uKG4sZSl7dC5hcHBseShudWxsLFtuXS5jb25jYXQoZSkpfSxKdCh0aGlzKSx0aGlzfSxhd2FpdEFsbDpmdW5jdGlvbih0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdHx8dGhpcy5fY2FsbCl0aHJvdyBuZXcgRXJyb3I7cmV0dXJuIHRoaXMuX2NhbGw9dCxKdCh0aGlzKSx0aGlzfX07dmFyIG12PTFlLTEyLHh2PU1hdGguUEksYnY9eHYvMix3dj0yKnh2O2ZuLnByb3RvdHlwZT17YXJlYVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxhcmVhRW5kOmZ1bmN0aW9uKCl7dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXsodGhpcy5fbGluZXx8MCE9PXRoaXMuX2xpbmUmJjE9PT10aGlzLl9wb2ludCkmJnRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCksdGhpcy5fbGluZT0xLXRoaXMuX2xpbmV9LHBvaW50OmZ1bmN0aW9uKHQsbil7c3dpdGNoKHQ9K3Qsbj0rbix0aGlzLl9wb2ludCl7Y2FzZSAwOnRoaXMuX3BvaW50PTEsdGhpcy5fbGluZT90aGlzLl9jb250ZXh0LmxpbmVUbyh0LG4pOnRoaXMuX2NvbnRleHQubW92ZVRvKHQsbik7YnJlYWs7Y2FzZSAxOnRoaXMuX3BvaW50PTI7ZGVmYXVsdDp0aGlzLl9jb250ZXh0LmxpbmVUbyh0LG4pfX19O3ZhciBNdj14bihsbik7bW4ucHJvdG90eXBlPXthcmVhU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9jdXJ2ZS5hcmVhU3RhcnQoKX0sYXJlYUVuZDpmdW5jdGlvbigpe3RoaXMuX2N1cnZlLmFyZWFFbmQoKX0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fY3VydmUubGluZVN0YXJ0KCl9LGxpbmVFbmQ6ZnVuY3Rpb24oKXt0aGlzLl9jdXJ2ZS5saW5lRW5kKCl9LHBvaW50OmZ1bmN0aW9uKHQsbil7dGhpcy5fY3VydmUucG9pbnQobipNYXRoLnNpbih0KSxuKi1NYXRoLmNvcyh0KSl9fTt2YXIgVHY9e2RyYXc6ZnVuY3Rpb24odCxuKXt2YXIgZT1NYXRoLnNxcnQobi94dik7dC5tb3ZlVG8oZSwwKSx0LmFyYygwLDAsZSwwLHd2KX19LGt2PXtkcmF3OmZ1bmN0aW9uKHQsbil7dmFyIGU9TWF0aC5zcXJ0KG4vNSkvMjt0Lm1vdmVUbygtMyplLC1lKSx0LmxpbmVUbygtZSwtZSksdC5saW5lVG8oLWUsLTMqZSksdC5saW5lVG8oZSwtMyplKSx0LmxpbmVUbyhlLC1lKSx0LmxpbmVUbygzKmUsLWUpLHQubGluZVRvKDMqZSxlKSx0LmxpbmVUbyhlLGUpLHQubGluZVRvKGUsMyplKSx0LmxpbmVUbygtZSwzKmUpLHQubGluZVRvKC1lLGUpLHQubGluZVRvKC0zKmUsZSksdC5jbG9zZVBhdGgoKX19LFN2PU1hdGguc3FydCgxLzMpLE52PTIqU3YsQXY9e2RyYXc6ZnVuY3Rpb24odCxuKXt2YXIgZT1NYXRoLnNxcnQobi9Odikscj1lKlN2O3QubW92ZVRvKDAsLWUpLHQubGluZVRvKHIsMCksdC5saW5lVG8oMCxlKSx0LmxpbmVUbygtciwwKSx0LmNsb3NlUGF0aCgpfX0sRXY9Ljg5MDgxMzA5MTUyOTI4NTIsQ3Y9TWF0aC5zaW4oeHYvMTApL01hdGguc2luKDcqeHYvMTApLHp2PU1hdGguc2luKHd2LzEwKSpDdixQdj0tTWF0aC5jb3Mod3YvMTApKkN2LHF2PXtkcmF3OmZ1bmN0aW9uKHQsbil7dmFyIGU9TWF0aC5zcXJ0KG4qRXYpLHI9enYqZSxpPVB2KmU7dC5tb3ZlVG8oMCwtZSksdC5saW5lVG8ocixpKTtmb3IodmFyIG89MTtvPDU7KytvKXt2YXIgdT13dipvLzUsYT1NYXRoLmNvcyh1KSxjPU1hdGguc2luKHUpO3QubGluZVRvKGMqZSwtYSplKSx0LmxpbmVUbyhhKnItYyppLGMqcithKmkpfXQuY2xvc2VQYXRoKCl9fSxMdj17ZHJhdzpmdW5jdGlvbih0LG4pe3ZhciBlPU1hdGguc3FydChuKSxyPS1lLzI7dC5yZWN0KHIscixlLGUpfX0sUnY9TWF0aC5zcXJ0KDMpLFV2PXtkcmF3OmZ1bmN0aW9uKHQsbil7dmFyIGU9LU1hdGguc3FydChuLygzKlJ2KSk7dC5tb3ZlVG8oMCwyKmUpLHQubGluZVRvKC1SdiplLC1lKSx0LmxpbmVUbyhSdiplLC1lKSx0LmNsb3NlUGF0aCgpfX0sRHY9LS41LE92PU1hdGguc3FydCgzKS8yLEZ2PTEvTWF0aC5zcXJ0KDEyKSxJdj0zKihGdi8yKzEpLFl2PXtkcmF3OmZ1bmN0aW9uKHQsbil7dmFyIGU9TWF0aC5zcXJ0KG4vSXYpLHI9ZS8yLGk9ZSpGdixvPXIsdT1lKkZ2K2UsYT0tbyxjPXU7dC5tb3ZlVG8ocixpKSx0LmxpbmVUbyhvLHUpLHQubGluZVRvKGEsYyksdC5saW5lVG8oRHYqci1PdippLE92KnIrRHYqaSksdC5saW5lVG8oRHYqby1Pdip1LE92Km8rRHYqdSksdC5saW5lVG8oRHYqYS1PdipjLE92KmErRHYqYyksdC5saW5lVG8oRHYqcitPdippLER2KmktT3YqciksdC5saW5lVG8oRHYqbytPdip1LER2KnUtT3YqbyksdC5saW5lVG8oRHYqYStPdipjLER2KmMtT3YqYSksdC5jbG9zZVBhdGgoKX19LEJ2PVtUdixrdixBdixMdixxdixVdixZdl07Tm4ucHJvdG90eXBlPXthcmVhU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPTB9LGFyZWFFbmQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPU5hTn0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5feDA9dGhpcy5feDE9dGhpcy5feTA9dGhpcy5feTE9TmFOLHRoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5fcG9pbnQpe2Nhc2UgMzpTbih0aGlzLHRoaXMuX3gxLHRoaXMuX3kxKTtjYXNlIDI6dGhpcy5fY29udGV4dC5saW5lVG8odGhpcy5feDEsdGhpcy5feTEpfSh0aGlzLl9saW5lfHwwIT09dGhpcy5fbGluZSYmMT09PXRoaXMuX3BvaW50KSYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKSx0aGlzLl9saW5lPTEtdGhpcy5fbGluZX0scG9pbnQ6ZnVuY3Rpb24odCxuKXtzd2l0Y2godD0rdCxuPStuLHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fcG9pbnQ9MSx0aGlzLl9saW5lP3RoaXMuX2NvbnRleHQubGluZVRvKHQsbik6dGhpcy5fY29udGV4dC5tb3ZlVG8odCxuKTticmVhaztjYXNlIDE6dGhpcy5fcG9pbnQ9MjticmVhaztjYXNlIDI6dGhpcy5fcG9pbnQ9Myx0aGlzLl9jb250ZXh0LmxpbmVUbygoNSp0aGlzLl94MCt0aGlzLl94MSkvNiwoNSp0aGlzLl95MCt0aGlzLl95MSkvNik7ZGVmYXVsdDpTbih0aGlzLHQsbil9dGhpcy5feDA9dGhpcy5feDEsdGhpcy5feDE9dCx0aGlzLl95MD10aGlzLl95MSx0aGlzLl95MT1ufX0sRW4ucHJvdG90eXBlPXthcmVhU3RhcnQ6a24sYXJlYUVuZDprbixsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl94MD10aGlzLl94MT10aGlzLl94Mj10aGlzLl94Mz10aGlzLl94ND10aGlzLl95MD10aGlzLl95MT10aGlzLl95Mj10aGlzLl95Mz10aGlzLl95ND1OYU4sdGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLl9wb2ludCl7Y2FzZSAxOnRoaXMuX2NvbnRleHQubW92ZVRvKHRoaXMuX3gyLHRoaXMuX3kyKSx0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpO2JyZWFrO2Nhc2UgMjp0aGlzLl9jb250ZXh0Lm1vdmVUbygodGhpcy5feDIrMip0aGlzLl94MykvMywodGhpcy5feTIrMip0aGlzLl95MykvMyksdGhpcy5fY29udGV4dC5saW5lVG8oKHRoaXMuX3gzKzIqdGhpcy5feDIpLzMsKHRoaXMuX3kzKzIqdGhpcy5feTIpLzMpLHRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCk7YnJlYWs7Y2FzZSAzOnRoaXMucG9pbnQodGhpcy5feDIsdGhpcy5feTIpLHRoaXMucG9pbnQodGhpcy5feDMsdGhpcy5feTMpLHRoaXMucG9pbnQodGhpcy5feDQsdGhpcy5feTQpfX0scG9pbnQ6ZnVuY3Rpb24odCxuKXtzd2l0Y2godD0rdCxuPStuLHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fcG9pbnQ9MSx0aGlzLl94Mj10LHRoaXMuX3kyPW47YnJlYWs7Y2FzZSAxOnRoaXMuX3BvaW50PTIsdGhpcy5feDM9dCx0aGlzLl95Mz1uO2JyZWFrO2Nhc2UgMjp0aGlzLl9wb2ludD0zLHRoaXMuX3g0PXQsdGhpcy5feTQ9bix0aGlzLl9jb250ZXh0Lm1vdmVUbygodGhpcy5feDArNCp0aGlzLl94MSt0KS82LCh0aGlzLl95MCs0KnRoaXMuX3kxK24pLzYpO2JyZWFrO2RlZmF1bHQ6U24odGhpcyx0LG4pfXRoaXMuX3gwPXRoaXMuX3gxLHRoaXMuX3gxPXQsdGhpcy5feTA9dGhpcy5feTEsdGhpcy5feTE9bn19LHpuLnByb3RvdHlwZT17YXJlYVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxhcmVhRW5kOmZ1bmN0aW9uKCl7dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3gwPXRoaXMuX3gxPXRoaXMuX3kwPXRoaXMuX3kxPU5hTix0aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7KHRoaXMuX2xpbmV8fDAhPT10aGlzLl9saW5lJiYzPT09dGhpcy5fcG9pbnQpJiZ0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpLHRoaXMuX2xpbmU9MS10aGlzLl9saW5lfSxwb2ludDpmdW5jdGlvbih0LG4pe3N3aXRjaCh0PSt0LG49K24sdGhpcy5fcG9pbnQpe2Nhc2UgMDp0aGlzLl9wb2ludD0xO2JyZWFrO2Nhc2UgMTp0aGlzLl9wb2ludD0yO2JyZWFrO2Nhc2UgMjp0aGlzLl9wb2ludD0zO3ZhciBlPSh0aGlzLl94MCs0KnRoaXMuX3gxK3QpLzYscj0odGhpcy5feTArNCp0aGlzLl95MStuKS82O3RoaXMuX2xpbmU/dGhpcy5fY29udGV4dC5saW5lVG8oZSxyKTp0aGlzLl9jb250ZXh0Lm1vdmVUbyhlLHIpO2JyZWFrO2Nhc2UgMzp0aGlzLl9wb2ludD00O2RlZmF1bHQ6U24odGhpcyx0LG4pfXRoaXMuX3gwPXRoaXMuX3gxLHRoaXMuX3gxPXQsdGhpcy5feTA9dGhpcy5feTEsdGhpcy5feTE9bn19LHFuLnByb3RvdHlwZT17bGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5feD1bXSx0aGlzLl95PVtdLHRoaXMuX2Jhc2lzLmxpbmVTdGFydCgpfSxsaW5lRW5kOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5feCxuPXRoaXMuX3ksZT10Lmxlbmd0aC0xO2lmKGU+MClmb3IodmFyIHIsaT10WzBdLG89blswXSx1PXRbZV0taSxhPW5bZV0tbyxjPS0xOysrYzw9ZTspcj1jL2UsdGhpcy5fYmFzaXMucG9pbnQodGhpcy5fYmV0YSp0W2NdKygxLXRoaXMuX2JldGEpKihpK3IqdSksdGhpcy5fYmV0YSpuW2NdKygxLXRoaXMuX2JldGEpKihvK3IqYSkpO3RoaXMuX3g9dGhpcy5feT1udWxsLHRoaXMuX2Jhc2lzLmxpbmVFbmQoKX0scG9pbnQ6ZnVuY3Rpb24odCxuKXt0aGlzLl94LnB1c2goK3QpLHRoaXMuX3kucHVzaCgrbil9fTt2YXIganY9ZnVuY3Rpb24gdChuKXtmdW5jdGlvbiBlKHQpe3JldHVybiAxPT09bj9uZXcgTm4odCk6bmV3IHFuKHQsbil9cmV0dXJuIGUuYmV0YT1mdW5jdGlvbihuKXtyZXR1cm4gdCgrbil9LGV9KC44NSk7Um4ucHJvdG90eXBlPXthcmVhU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPTB9LGFyZWFFbmQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPU5hTn0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5feDA9dGhpcy5feDE9dGhpcy5feDI9dGhpcy5feTA9dGhpcy5feTE9dGhpcy5feTI9TmFOLHRoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5fcG9pbnQpe2Nhc2UgMjp0aGlzLl9jb250ZXh0LmxpbmVUbyh0aGlzLl94Mix0aGlzLl95Mik7YnJlYWs7Y2FzZSAzOkxuKHRoaXMsdGhpcy5feDEsdGhpcy5feTEpfSh0aGlzLl9saW5lfHwwIT09dGhpcy5fbGluZSYmMT09PXRoaXMuX3BvaW50KSYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKSx0aGlzLl9saW5lPTEtdGhpcy5fbGluZX0scG9pbnQ6ZnVuY3Rpb24odCxuKXtzd2l0Y2godD0rdCxuPStuLHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fcG9pbnQ9MSx0aGlzLl9saW5lP3RoaXMuX2NvbnRleHQubGluZVRvKHQsbik6dGhpcy5fY29udGV4dC5tb3ZlVG8odCxuKTticmVhaztjYXNlIDE6dGhpcy5fcG9pbnQ9Mix0aGlzLl94MT10LHRoaXMuX3kxPW47YnJlYWs7Y2FzZSAyOnRoaXMuX3BvaW50PTM7ZGVmYXVsdDpMbih0aGlzLHQsbil9dGhpcy5feDA9dGhpcy5feDEsdGhpcy5feDE9dGhpcy5feDIsdGhpcy5feDI9dCx0aGlzLl95MD10aGlzLl95MSx0aGlzLl95MT10aGlzLl95Mix0aGlzLl95Mj1ufX07dmFyIEh2PWZ1bmN0aW9uIHQobil7ZnVuY3Rpb24gZSh0KXtyZXR1cm4gbmV3IFJuKHQsbil9cmV0dXJuIGUudGVuc2lvbj1mdW5jdGlvbihuKXtyZXR1cm4gdCgrbil9LGV9KDApO1VuLnByb3RvdHlwZT17YXJlYVN0YXJ0OmtuLGFyZWFFbmQ6a24sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5feDA9dGhpcy5feDE9dGhpcy5feDI9dGhpcy5feDM9dGhpcy5feDQ9dGhpcy5feDU9dGhpcy5feTA9dGhpcy5feTE9dGhpcy5feTI9dGhpcy5feTM9dGhpcy5feTQ9dGhpcy5feTU9TmFOLHRoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5fcG9pbnQpe2Nhc2UgMTp0aGlzLl9jb250ZXh0Lm1vdmVUbyh0aGlzLl94Myx0aGlzLl95MyksdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKTticmVhaztjYXNlIDI6dGhpcy5fY29udGV4dC5saW5lVG8odGhpcy5feDMsdGhpcy5feTMpLHRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCk7YnJlYWs7Y2FzZSAzOnRoaXMucG9pbnQodGhpcy5feDMsdGhpcy5feTMpLHRoaXMucG9pbnQodGhpcy5feDQsdGhpcy5feTQpLHRoaXMucG9pbnQodGhpcy5feDUsdGhpcy5feTUpfX0scG9pbnQ6ZnVuY3Rpb24odCxuKXtzd2l0Y2godD0rdCxuPStuLHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fcG9pbnQ9MSx0aGlzLl94Mz10LHRoaXMuX3kzPW47YnJlYWs7Y2FzZSAxOnRoaXMuX3BvaW50PTIsdGhpcy5fY29udGV4dC5tb3ZlVG8odGhpcy5feDQ9dCx0aGlzLl95ND1uKTticmVhaztjYXNlIDI6dGhpcy5fcG9pbnQ9Myx0aGlzLl94NT10LHRoaXMuX3k1PW47YnJlYWs7ZGVmYXVsdDpMbih0aGlzLHQsbil9dGhpcy5feDA9dGhpcy5feDEsdGhpcy5feDE9dGhpcy5feDIsdGhpcy5feDI9dCx0aGlzLl95MD10aGlzLl95MSx0aGlzLl95MT10aGlzLl95Mix0aGlzLl95Mj1ufX07dmFyIFh2PWZ1bmN0aW9uIHQobil7ZnVuY3Rpb24gZSh0KXtyZXR1cm4gbmV3IFVuKHQsbil9cmV0dXJuIGUudGVuc2lvbj1mdW5jdGlvbihuKXtyZXR1cm4gdCgrbil9LGV9KDApO0RuLnByb3RvdHlwZT17YXJlYVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxhcmVhRW5kOmZ1bmN0aW9uKCl7dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3gwPXRoaXMuX3gxPXRoaXMuX3gyPXRoaXMuX3kwPXRoaXMuX3kxPXRoaXMuX3kyPU5hTix0aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7KHRoaXMuX2xpbmV8fDAhPT10aGlzLl9saW5lJiYzPT09dGhpcy5fcG9pbnQpJiZ0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpLHRoaXMuX2xpbmU9MS10aGlzLl9saW5lfSxwb2ludDpmdW5jdGlvbih0LG4pe3N3aXRjaCh0PSt0LG49K24sdGhpcy5fcG9pbnQpe2Nhc2UgMDp0aGlzLl9wb2ludD0xO2JyZWFrO2Nhc2UgMTp0aGlzLl9wb2ludD0yO2JyZWFrO2Nhc2UgMjp0aGlzLl9wb2ludD0zLHRoaXMuX2xpbmU/dGhpcy5fY29udGV4dC5saW5lVG8odGhpcy5feDIsdGhpcy5feTIpOnRoaXMuX2NvbnRleHQubW92ZVRvKHRoaXMuX3gyLHRoaXMuX3kyKTticmVhaztjYXNlIDM6dGhpcy5fcG9pbnQ9NDtkZWZhdWx0OkxuKHRoaXMsdCxuKX10aGlzLl94MD10aGlzLl94MSx0aGlzLl94MT10aGlzLl94Mix0aGlzLl94Mj10LHRoaXMuX3kwPXRoaXMuX3kxLHRoaXMuX3kxPXRoaXMuX3kyLHRoaXMuX3kyPW59fTt2YXIgVnY9ZnVuY3Rpb24gdChuKXtmdW5jdGlvbiBlKHQpe3JldHVybiBuZXcgRG4odCxuKX1yZXR1cm4gZS50ZW5zaW9uPWZ1bmN0aW9uKG4pe3JldHVybiB0KCtuKX0sZX0oMCk7Rm4ucHJvdG90eXBlPXthcmVhU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPTB9LGFyZWFFbmQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPU5hTn0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5feDA9dGhpcy5feDE9dGhpcy5feDI9dGhpcy5feTA9dGhpcy5feTE9dGhpcy5feTI9TmFOLHRoaXMuX2wwMV9hPXRoaXMuX2wxMl9hPXRoaXMuX2wyM19hPXRoaXMuX2wwMV8yYT10aGlzLl9sMTJfMmE9dGhpcy5fbDIzXzJhPXRoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5fcG9pbnQpe2Nhc2UgMjp0aGlzLl9jb250ZXh0LmxpbmVUbyh0aGlzLl94Mix0aGlzLl95Mik7YnJlYWs7Y2FzZSAzOnRoaXMucG9pbnQodGhpcyx0aGlzLl94Mix0aGlzLl95Mil9KHRoaXMuX2xpbmV8fDAhPT10aGlzLl9saW5lJiYxPT09dGhpcy5fcG9pbnQpJiZ0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpLHRoaXMuX2xpbmU9MS10aGlzLl9saW5lfSxwb2ludDpmdW5jdGlvbih0LG4pe2lmKHQ9K3Qsbj0rbix0aGlzLl9wb2ludCl7dmFyIGU9dGhpcy5feDItdCxyPXRoaXMuX3kyLW47dGhpcy5fbDIzX2E9TWF0aC5zcXJ0KHRoaXMuX2wyM18yYT1NYXRoLnBvdyhlKmUrcipyLHRoaXMuX2FscGhhKSl9c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fcG9pbnQ9MSx0aGlzLl9saW5lP3RoaXMuX2NvbnRleHQubGluZVRvKHQsbik6dGhpcy5fY29udGV4dC5tb3ZlVG8odCxuKTticmVhaztjYXNlIDE6dGhpcy5fcG9pbnQ9MjticmVhaztjYXNlIDI6dGhpcy5fcG9pbnQ9MztkZWZhdWx0Ok9uKHRoaXMsdCxuKX10aGlzLl9sMDFfYT10aGlzLl9sMTJfYSx0aGlzLl9sMTJfYT10aGlzLl9sMjNfYSx0aGlzLl9sMDFfMmE9dGhpcy5fbDEyXzJhLHRoaXMuX2wxMl8yYT10aGlzLl9sMjNfMmEsdGhpcy5feDA9dGhpcy5feDEsdGhpcy5feDE9dGhpcy5feDIsdGhpcy5feDI9dCx0aGlzLl95MD10aGlzLl95MSx0aGlzLl95MT10aGlzLl95Mix0aGlzLl95Mj1ufX07dmFyIFd2PWZ1bmN0aW9uIHQobil7ZnVuY3Rpb24gZSh0KXtyZXR1cm4gbj9uZXcgRm4odCxuKTpuZXcgUm4odCwwKX1yZXR1cm4gZS5hbHBoYT1mdW5jdGlvbihuKXtyZXR1cm4gdCgrbil9LGV9KC41KTtJbi5wcm90b3R5cGU9e2FyZWFTdGFydDprbixhcmVhRW5kOmtuLGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3gwPXRoaXMuX3gxPXRoaXMuX3gyPXRoaXMuX3gzPXRoaXMuX3g0PXRoaXMuX3g1PXRoaXMuX3kwPXRoaXMuX3kxPXRoaXMuX3kyPXRoaXMuX3kzPXRoaXMuX3k0PXRoaXMuX3k1PU5hTix0aGlzLl9sMDFfYT10aGlzLl9sMTJfYT10aGlzLl9sMjNfYT10aGlzLl9sMDFfMmE9dGhpcy5fbDEyXzJhPXRoaXMuX2wyM18yYT10aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDE6dGhpcy5fY29udGV4dC5tb3ZlVG8odGhpcy5feDMsdGhpcy5feTMpLHRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCk7YnJlYWs7Y2FzZSAyOnRoaXMuX2NvbnRleHQubGluZVRvKHRoaXMuX3gzLHRoaXMuX3kzKSx0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpO2JyZWFrO2Nhc2UgMzp0aGlzLnBvaW50KHRoaXMuX3gzLHRoaXMuX3kzKSx0aGlzLnBvaW50KHRoaXMuX3g0LHRoaXMuX3k0KSx0aGlzLnBvaW50KHRoaXMuX3g1LHRoaXMuX3k1KX19LHBvaW50OmZ1bmN0aW9uKHQsbil7aWYodD0rdCxuPStuLHRoaXMuX3BvaW50KXt2YXIgZT10aGlzLl94Mi10LHI9dGhpcy5feTItbjt0aGlzLl9sMjNfYT1NYXRoLnNxcnQodGhpcy5fbDIzXzJhPU1hdGgucG93KGUqZStyKnIsdGhpcy5fYWxwaGEpKX1zd2l0Y2godGhpcy5fcG9pbnQpe2Nhc2UgMDp0aGlzLl9wb2ludD0xLHRoaXMuX3gzPXQsdGhpcy5feTM9bjticmVhaztjYXNlIDE6dGhpcy5fcG9pbnQ9Mix0aGlzLl9jb250ZXh0Lm1vdmVUbyh0aGlzLl94ND10LHRoaXMuX3k0PW4pO2JyZWFrO2Nhc2UgMjp0aGlzLl9wb2ludD0zLHRoaXMuX3g1PXQsdGhpcy5feTU9bjticmVhaztkZWZhdWx0Ok9uKHRoaXMsdCxuKX10aGlzLl9sMDFfYT10aGlzLl9sMTJfYSx0aGlzLl9sMTJfYT10aGlzLl9sMjNfYSx0aGlzLl9sMDFfMmE9dGhpcy5fbDEyXzJhLHRoaXMuX2wxMl8yYT10aGlzLl9sMjNfMmEsdGhpcy5feDA9dGhpcy5feDEsdGhpcy5feDE9dGhpcy5feDIsdGhpcy5feDI9dCx0aGlzLl95MD10aGlzLl95MSx0aGlzLl95MT10aGlzLl95Mix0aGlzLl95Mj1ufX07dmFyICR2PWZ1bmN0aW9uIHQobil7ZnVuY3Rpb24gZSh0KXtyZXR1cm4gbj9uZXcgSW4odCxuKTpuZXcgVW4odCwwKX1yZXR1cm4gZS5hbHBoYT1mdW5jdGlvbihuKXtyZXR1cm4gdCgrbil9LGV9KC41KTtZbi5wcm90b3R5cGU9e2FyZWFTdGFydDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9MH0sYXJlYUVuZDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9TmFOfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl94MD10aGlzLl94MT10aGlzLl94Mj10aGlzLl95MD10aGlzLl95MT10aGlzLl95Mj1OYU4sdGhpcy5fbDAxX2E9dGhpcy5fbDEyX2E9dGhpcy5fbDIzX2E9dGhpcy5fbDAxXzJhPXRoaXMuX2wxMl8yYT10aGlzLl9sMjNfMmE9dGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpeyh0aGlzLl9saW5lfHwwIT09dGhpcy5fbGluZSYmMz09PXRoaXMuX3BvaW50KSYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKSx0aGlzLl9saW5lPTEtdGhpcy5fbGluZX0scG9pbnQ6ZnVuY3Rpb24odCxuKXtpZih0PSt0LG49K24sdGhpcy5fcG9pbnQpe3ZhciBlPXRoaXMuX3gyLXQscj10aGlzLl95Mi1uO3RoaXMuX2wyM19hPU1hdGguc3FydCh0aGlzLl9sMjNfMmE9TWF0aC5wb3coZSplK3Iqcix0aGlzLl9hbHBoYSkpfXN3aXRjaCh0aGlzLl9wb2ludCl7Y2FzZSAwOnRoaXMuX3BvaW50PTE7YnJlYWs7Y2FzZSAxOnRoaXMuX3BvaW50PTI7YnJlYWs7Y2FzZSAyOnRoaXMuX3BvaW50PTMsdGhpcy5fbGluZT90aGlzLl9jb250ZXh0LmxpbmVUbyh0aGlzLl94Mix0aGlzLl95Mik6dGhpcy5fY29udGV4dC5tb3ZlVG8odGhpcy5feDIsdGhpcy5feTIpO2JyZWFrO2Nhc2UgMzp0aGlzLl9wb2ludD00O2RlZmF1bHQ6T24odGhpcyx0LG4pfXRoaXMuX2wwMV9hPXRoaXMuX2wxMl9hLHRoaXMuX2wxMl9hPXRoaXMuX2wyM19hLHRoaXMuX2wwMV8yYT10aGlzLl9sMTJfMmEsdGhpcy5fbDEyXzJhPXRoaXMuX2wyM18yYSx0aGlzLl94MD10aGlzLl94MSx0aGlzLl94MT10aGlzLl94Mix0aGlzLl94Mj10LHRoaXMuX3kwPXRoaXMuX3kxLHRoaXMuX3kxPXRoaXMuX3kyLHRoaXMuX3kyPW59fTt2YXIgWnY9ZnVuY3Rpb24gdChuKXtmdW5jdGlvbiBlKHQpe3JldHVybiBuP25ldyBZbih0LG4pOm5ldyBEbih0LDApfXJldHVybiBlLmFscGhhPWZ1bmN0aW9uKG4pe3JldHVybiB0KCtuKX0sZX0oLjUpO0JuLnByb3RvdHlwZT17YXJlYVN0YXJ0OmtuLGFyZWFFbmQ6a24sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpe3RoaXMuX3BvaW50JiZ0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpfSxwb2ludDpmdW5jdGlvbih0LG4pe3Q9K3Qsbj0rbix0aGlzLl9wb2ludD90aGlzLl9jb250ZXh0LmxpbmVUbyh0LG4pOih0aGlzLl9wb2ludD0xLHRoaXMuX2NvbnRleHQubW92ZVRvKHQsbikpfX0sJG4ucHJvdG90eXBlPXthcmVhU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPTB9LGFyZWFFbmQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPU5hTn0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5feDA9dGhpcy5feDE9dGhpcy5feTA9dGhpcy5feTE9dGhpcy5fdDA9TmFOLHRoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5fcG9pbnQpe2Nhc2UgMjp0aGlzLl9jb250ZXh0LmxpbmVUbyh0aGlzLl94MSx0aGlzLl95MSk7YnJlYWs7Y2FzZSAzOlduKHRoaXMsdGhpcy5fdDAsVm4odGhpcyx0aGlzLl90MCkpfSh0aGlzLl9saW5lfHwwIT09dGhpcy5fbGluZSYmMT09PXRoaXMuX3BvaW50KSYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKSx0aGlzLl9saW5lPTEtdGhpcy5fbGluZX0scG9pbnQ6ZnVuY3Rpb24odCxuKXt2YXIgZT1OYU47aWYodD0rdCxuPStuLHQhPT10aGlzLl94MXx8biE9PXRoaXMuX3kxKXtzd2l0Y2godGhpcy5fcG9pbnQpe2Nhc2UgMDp0aGlzLl9wb2ludD0xLHRoaXMuX2xpbmU/dGhpcy5fY29udGV4dC5saW5lVG8odCxuKTp0aGlzLl9jb250ZXh0Lm1vdmVUbyh0LG4pO2JyZWFrO2Nhc2UgMTp0aGlzLl9wb2ludD0yO2JyZWFrO2Nhc2UgMjp0aGlzLl9wb2ludD0zLFduKHRoaXMsVm4odGhpcyxlPVhuKHRoaXMsdCxuKSksZSk7YnJlYWs7ZGVmYXVsdDpXbih0aGlzLHRoaXMuX3QwLGU9WG4odGhpcyx0LG4pKX10aGlzLl94MD10aGlzLl94MSx0aGlzLl94MT10LHRoaXMuX3kwPXRoaXMuX3kxLHRoaXMuX3kxPW4sdGhpcy5fdDA9ZX19fSwoWm4ucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoJG4ucHJvdG90eXBlKSkucG9pbnQ9ZnVuY3Rpb24odCxuKXskbi5wcm90b3R5cGUucG9pbnQuY2FsbCh0aGlzLG4sdCl9LEduLnByb3RvdHlwZT17bW92ZVRvOmZ1bmN0aW9uKHQsbil7dGhpcy5fY29udGV4dC5tb3ZlVG8obix0KX0sY2xvc2VQYXRoOmZ1bmN0aW9uKCl7dGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKX0sbGluZVRvOmZ1bmN0aW9uKHQsbil7dGhpcy5fY29udGV4dC5saW5lVG8obix0KX0sYmV6aWVyQ3VydmVUbzpmdW5jdGlvbih0LG4sZSxyLGksbyl7dGhpcy5fY29udGV4dC5iZXppZXJDdXJ2ZVRvKG4sdCxyLGUsbyxpKX19LEtuLnByb3RvdHlwZT17YXJlYVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxhcmVhRW5kOmZ1bmN0aW9uKCl7dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3g9W10sdGhpcy5feT1bXX0sbGluZUVuZDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX3gsbj10aGlzLl95LGU9dC5sZW5ndGg7aWYoZSlpZih0aGlzLl9saW5lP3RoaXMuX2NvbnRleHQubGluZVRvKHRbMF0sblswXSk6dGhpcy5fY29udGV4dC5tb3ZlVG8odFswXSxuWzBdKSwyPT09ZSl0aGlzLl9jb250ZXh0LmxpbmVUbyh0WzFdLG5bMV0pO2Vsc2UgZm9yKHZhciByPXRlKHQpLGk9dGUobiksbz0wLHU9MTt1PGU7KytvLCsrdSl0aGlzLl9jb250ZXh0LmJlemllckN1cnZlVG8oclswXVtvXSxpWzBdW29dLHJbMV1bb10saVsxXVtvXSx0W3VdLG5bdV0pOyh0aGlzLl9saW5lfHwwIT09dGhpcy5fbGluZSYmMT09PWUpJiZ0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpLHRoaXMuX2xpbmU9MS10aGlzLl9saW5lLHRoaXMuX3g9dGhpcy5feT1udWxsfSxwb2ludDpmdW5jdGlvbih0LG4pe3RoaXMuX3gucHVzaCgrdCksdGhpcy5feS5wdXNoKCtuKX19LGVlLnByb3RvdHlwZT17YXJlYVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxhcmVhRW5kOmZ1bmN0aW9uKCl7dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3g9dGhpcy5feT1OYU4sdGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpezA8dGhpcy5fdCYmdGhpcy5fdDwxJiYyPT09dGhpcy5fcG9pbnQmJnRoaXMuX2NvbnRleHQubGluZVRvKHRoaXMuX3gsdGhpcy5feSksKHRoaXMuX2xpbmV8fDAhPT10aGlzLl9saW5lJiYxPT09dGhpcy5fcG9pbnQpJiZ0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpLHRoaXMuX2xpbmU+PTAmJih0aGlzLl90PTEtdGhpcy5fdCx0aGlzLl9saW5lPTEtdGhpcy5fbGluZSl9LHBvaW50OmZ1bmN0aW9uKHQsbil7c3dpdGNoKHQ9K3Qsbj0rbix0aGlzLl9wb2ludCl7Y2FzZSAwOnRoaXMuX3BvaW50PTEsdGhpcy5fbGluZT90aGlzLl9jb250ZXh0LmxpbmVUbyh0LG4pOnRoaXMuX2NvbnRleHQubW92ZVRvKHQsbik7YnJlYWs7Y2FzZSAxOnRoaXMuX3BvaW50PTI7ZGVmYXVsdDppZih0aGlzLl90PD0wKXRoaXMuX2NvbnRleHQubGluZVRvKHRoaXMuX3gsbiksdGhpcy5fY29udGV4dC5saW5lVG8odCxuKTtlbHNle3ZhciBlPXRoaXMuX3gqKDEtdGhpcy5fdCkrdCp0aGlzLl90O3RoaXMuX2NvbnRleHQubGluZVRvKGUsdGhpcy5feSksdGhpcy5fY29udGV4dC5saW5lVG8oZSxuKX19dGhpcy5feD10LHRoaXMuX3k9bn19O3ZhciBHdj1BcnJheS5wcm90b3R5cGUuc2xpY2UsSnY9LjcsUXY9MS9KdixLdj0vXiMoWzAtOWEtZl17M30pJC8sdF89L14jKFswLTlhLWZdezZ9KSQvLG5fPS9ecmdiXChccyooWy0rXT9cZCspXHMqLFxzKihbLStdP1xkKylccyosXHMqKFstK10/XGQrKVxzKlwpJC8sZV89L15yZ2JcKFxzKihbLStdP1xkKyg/OlwuXGQrKT8pJVxzKixccyooWy0rXT9cZCsoPzpcLlxkKyk/KSVccyosXHMqKFstK10/XGQrKD86XC5cZCspPyklXHMqXCkkLyxyXz0vXnJnYmFcKFxzKihbLStdP1xkKylccyosXHMqKFstK10/XGQrKVxzKixccyooWy0rXT9cZCspXHMqLFxzKihbLStdP1xkKyg/OlwuXGQrKT8pXHMqXCkkLyxpXz0vXnJnYmFcKFxzKihbLStdP1xkKyg/OlwuXGQrKT8pJVxzKixccyooWy0rXT9cZCsoPzpcLlxkKyk/KSVccyosXHMqKFstK10/XGQrKD86XC5cZCspPyklXHMqLFxzKihbLStdP1xkKyg/OlwuXGQrKT8pXHMqXCkkLyxvXz0vXmhzbFwoXHMqKFstK10/XGQrKD86XC5cZCspPylccyosXHMqKFstK10/XGQrKD86XC5cZCspPyklXHMqLFxzKihbLStdP1xkKyg/OlwuXGQrKT8pJVxzKlwpJC8sdV89L15oc2xhXChccyooWy0rXT9cZCsoPzpcLlxkKyk/KVxzKixccyooWy0rXT9cZCsoPzpcLlxkKyk/KSVccyosXHMqKFstK10/XGQrKD86XC5cZCspPyklXHMqLFxzKihbLStdP1xkKyg/OlwuXGQrKT8pXHMqXCkkLyxhXz17YWxpY2VibHVlOjE1NzkyMzgzLGFudGlxdWV3aGl0ZToxNjQ0NDM3NSxhcXVhOjY1NTM1LGFxdWFtYXJpbmU6ODM4ODU2NCxhenVyZToxNTc5NDE3NSxiZWlnZToxNjExOTI2MCxiaXNxdWU6MTY3NzAyNDQsYmxhY2s6MCxibGFuY2hlZGFsbW9uZDoxNjc3MjA0NSxibHVlOjI1NSxibHVldmlvbGV0OjkwNTUyMDIsYnJvd246MTA4MjQyMzQsYnVybHl3b29kOjE0NTk2MjMxLGNhZGV0Ymx1ZTo2MjY2NTI4LGNoYXJ0cmV1c2U6ODM4ODM1MixjaG9jb2xhdGU6MTM3ODk0NzAsY29yYWw6MTY3NDQyNzIsY29ybmZsb3dlcmJsdWU6NjU5MTk4MSxjb3Juc2lsazoxNjc3NTM4OCxjcmltc29uOjE0NDIzMTAwLGN5YW46NjU1MzUsZGFya2JsdWU6MTM5LGRhcmtjeWFuOjM1NzIzLGRhcmtnb2xkZW5yb2Q6MTIwOTI5MzksZGFya2dyYXk6MTExMTkwMTcsZGFya2dyZWVuOjI1NjAwLGRhcmtncmV5OjExMTE5MDE3LGRhcmtraGFraToxMjQzMzI1OSxkYXJrbWFnZW50YTo5MTA5NjQzLGRhcmtvbGl2ZWdyZWVuOjU1OTc5OTksZGFya29yYW5nZToxNjc0NzUyMCxkYXJrb3JjaGlkOjEwMDQwMDEyLGRhcmtyZWQ6OTEwOTUwNCxkYXJrc2FsbW9uOjE1MzA4NDEwLGRhcmtzZWFncmVlbjo5NDE5OTE5LGRhcmtzbGF0ZWJsdWU6NDczNDM0NyxkYXJrc2xhdGVncmF5OjMxMDA0OTUsZGFya3NsYXRlZ3JleTozMTAwNDk1LGRhcmt0dXJxdW9pc2U6NTI5NDUsZGFya3Zpb2xldDo5Njk5NTM5LGRlZXBwaW5rOjE2NzE2OTQ3LGRlZXBza3libHVlOjQ5MTUxLGRpbWdyYXk6NjkwODI2NSxkaW1ncmV5OjY5MDgyNjUsZG9kZ2VyYmx1ZToyMDAzMTk5LGZpcmVicmljazoxMTY3NDE0NixmbG9yYWx3aGl0ZToxNjc3NTkyMCxmb3Jlc3RncmVlbjoyMjYzODQyLGZ1Y2hzaWE6MTY3MTE5MzUsZ2FpbnNib3JvOjE0NDc0NDYwLGdob3N0d2hpdGU6MTYzMTY2NzEsZ29sZDoxNjc2NjcyMCxnb2xkZW5yb2Q6MTQzMjkxMjAsZ3JheTo4NDIxNTA0LGdyZWVuOjMyNzY4LGdyZWVueWVsbG93OjExNDAzMDU1LGdyZXk6ODQyMTUwNCxob25leWRldzoxNTc5NDE2MCxob3RwaW5rOjE2NzM4NzQwLGluZGlhbnJlZDoxMzQ1ODUyNCxpbmRpZ286NDkxNTMzMCxpdm9yeToxNjc3NzIwMCxraGFraToxNTc4NzY2MCxsYXZlbmRlcjoxNTEzMjQxMCxsYXZlbmRlcmJsdXNoOjE2NzczMzY1LGxhd25ncmVlbjo4MTkwOTc2LGxlbW9uY2hpZmZvbjoxNjc3NTg4NSxsaWdodGJsdWU6MTEzOTMyNTQsbGlnaHRjb3JhbDoxNTc2MTUzNixsaWdodGN5YW46MTQ3NDU1OTksbGlnaHRnb2xkZW5yb2R5ZWxsb3c6MTY0NDgyMTAsbGlnaHRncmF5OjEzODgyMzIzLGxpZ2h0Z3JlZW46OTQ5ODI1NixsaWdodGdyZXk6MTM4ODIzMjMsbGlnaHRwaW5rOjE2NzU4NDY1LGxpZ2h0c2FsbW9uOjE2NzUyNzYyLGxpZ2h0c2VhZ3JlZW46MjE0Mjg5MCxsaWdodHNreWJsdWU6ODkwMDM0NixsaWdodHNsYXRlZ3JheTo3ODMzNzUzLGxpZ2h0c2xhdGVncmV5Ojc4MzM3NTMsbGlnaHRzdGVlbGJsdWU6MTE1ODQ3MzQsbGlnaHR5ZWxsb3c6MTY3NzcxODQsbGltZTo2NTI4MCxsaW1lZ3JlZW46MzMyOTMzMCxsaW5lbjoxNjQ0NTY3MCxtYWdlbnRhOjE2NzExOTM1LG1hcm9vbjo4Mzg4NjA4LG1lZGl1bWFxdWFtYXJpbmU6NjczNzMyMixtZWRpdW1ibHVlOjIwNSxtZWRpdW1vcmNoaWQ6MTIyMTE2NjcsbWVkaXVtcHVycGxlOjk2NjI2ODMsbWVkaXVtc2VhZ3JlZW46Mzk3ODA5NyxtZWRpdW1zbGF0ZWJsdWU6ODA4Nzc5MCxtZWRpdW1zcHJpbmdncmVlbjo2NDE1NCxtZWRpdW10dXJxdW9pc2U6NDc3MjMwMCxtZWRpdW12aW9sZXRyZWQ6MTMwNDcxNzMsbWlkbmlnaHRibHVlOjE2NDQ5MTIsbWludGNyZWFtOjE2MTIxODUwLG1pc3R5cm9zZToxNjc3MDI3Myxtb2NjYXNpbjoxNjc3MDIyOSxuYXZham93aGl0ZToxNjc2ODY4NSxuYXZ5OjEyOCxvbGRsYWNlOjE2NjQzNTU4LG9saXZlOjg0MjEzNzYsb2xpdmVkcmFiOjcwNDg3Mzksb3JhbmdlOjE2NzUzOTIwLG9yYW5nZXJlZDoxNjcyOTM0NCxvcmNoaWQ6MTQzMTU3MzQscGFsZWdvbGRlbnJvZDoxNTY1NzEzMCxwYWxlZ3JlZW46MTAwMjU4ODAscGFsZXR1cnF1b2lzZToxMTUyOTk2NixwYWxldmlvbGV0cmVkOjE0MzgxMjAzLHBhcGF5YXdoaXA6MTY3NzMwNzcscGVhY2hwdWZmOjE2NzY3NjczLHBlcnU6MTM0Njg5OTEscGluazoxNjc2MTAzNSxwbHVtOjE0NTI0NjM3LHBvd2RlcmJsdWU6MTE1OTE5MTAscHVycGxlOjgzODg3MzYscmViZWNjYXB1cnBsZTo2Njk3ODgxLHJlZDoxNjcxMTY4MCxyb3N5YnJvd246MTIzNTc1MTkscm95YWxibHVlOjQyODY5NDUsc2FkZGxlYnJvd246OTEyNzE4NyxzYWxtb246MTY0MTY4ODIsc2FuZHlicm93bjoxNjAzMjg2NCxzZWFncmVlbjozMDUwMzI3LHNlYXNoZWxsOjE2Nzc0NjM4LHNpZW5uYToxMDUwNjc5NyxzaWx2ZXI6MTI2MzIyNTYsc2t5Ymx1ZTo4OTAwMzMxLHNsYXRlYmx1ZTo2OTcwMDYxLHNsYXRlZ3JheTo3MzcyOTQ0LHNsYXRlZ3JleTo3MzcyOTQ0LHNub3c6MTY3NzU5MzAsc3ByaW5nZ3JlZW46NjU0MDcsc3RlZWxibHVlOjQ2MjA5ODAsdGFuOjEzODA4NzgwLHRlYWw6MzI4OTYsdGhpc3RsZToxNDIwNDg4OCx0b21hdG86MTY3MzcwOTUsdHVycXVvaXNlOjQyNTE4NTYsdmlvbGV0OjE1NjMxMDg2LHdoZWF0OjE2MTEzMzMxLHdoaXRlOjE2Nzc3MjE1LHdoaXRlc21va2U6MTYxMTkyODUseWVsbG93OjE2Nzc2OTYwLHllbGxvd2dyZWVuOjEwMTQ1MDc0fTtnZSh4ZSxiZSx7ZGlzcGxheWFibGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZ2IoKS5kaXNwbGF5YWJsZSgpfSx0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJnYigpKyIifX0pLGdlKFNlLGtlLG1lKHhlLHticmlnaHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdD1udWxsPT10P1F2Ok1hdGgucG93KFF2LHQpLG5ldyBTZSh0aGlzLnIqdCx0aGlzLmcqdCx0aGlzLmIqdCx0aGlzLm9wYWNpdHkpfSxkYXJrZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9bnVsbD09dD9KdjpNYXRoLnBvdyhKdix0KSxuZXcgU2UodGhpcy5yKnQsdGhpcy5nKnQsdGhpcy5iKnQsdGhpcy5vcGFjaXR5KX0scmdiOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LGRpc3BsYXlhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIDA8PXRoaXMuciYmdGhpcy5yPD0yNTUmJjA8PXRoaXMuZyYmdGhpcy5nPD0yNTUmJjA8PXRoaXMuYiYmdGhpcy5iPD0yNTUmJjA8PXRoaXMub3BhY2l0eSYmdGhpcy5vcGFjaXR5PD0xfSx0b1N0cmluZzpmdW5jdGlvbigpe3ZhciB0PXRoaXMub3BhY2l0eTtyZXR1cm4gdD1pc05hTih0KT8xOk1hdGgubWF4KDAsTWF0aC5taW4oMSx0KSksKDE9PT10PyJyZ2IoIjoicmdiYSgiKStNYXRoLm1heCgwLE1hdGgubWluKDI1NSxNYXRoLnJvdW5kKHRoaXMucil8fDApKSsiLCAiK01hdGgubWF4KDAsTWF0aC5taW4oMjU1LE1hdGgucm91bmQodGhpcy5nKXx8MCkpKyIsICIrTWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZCh0aGlzLmIpfHwwKSkrKDE9PT10PyIpIjoiLCAiK3QrIikiKX19KSksZ2UoQ2UsRWUsbWUoeGUse2JyaWdodGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0PW51bGw9PXQ/UXY6TWF0aC5wb3coUXYsdCksbmV3IENlKHRoaXMuaCx0aGlzLnMsdGhpcy5sKnQsdGhpcy5vcGFjaXR5KX0sZGFya2VyOmZ1bmN0aW9uKHQpe3JldHVybiB0PW51bGw9PXQ/SnY6TWF0aC5wb3coSnYsdCksbmV3IENlKHRoaXMuaCx0aGlzLnMsdGhpcy5sKnQsdGhpcy5vcGFjaXR5KX0scmdiOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5oJTM2MCszNjAqKHRoaXMuaDwwKSxuPWlzTmFOKHQpfHxpc05hTih0aGlzLnMpPzA6dGhpcy5zLGU9dGhpcy5sLHI9ZSsoZTwuNT9lOjEtZSkqbixpPTIqZS1yO3JldHVybiBuZXcgU2UoemUodD49MjQwP3QtMjQwOnQrMTIwLGksciksemUodCxpLHIpLHplKHQ8MTIwP3QrMjQwOnQtMTIwLGksciksdGhpcy5vcGFjaXR5KX0sZGlzcGxheWFibGU6ZnVuY3Rpb24oKXtyZXR1cm4oMDw9dGhpcy5zJiZ0aGlzLnM8PTF8fGlzTmFOKHRoaXMucykpJiYwPD10aGlzLmwmJnRoaXMubDw9MSYmMDw9dGhpcy5vcGFjaXR5JiZ0aGlzLm9wYWNpdHk8PTF9fSkpO3ZhciBjXz1NYXRoLlBJLzE4MCxzXz0xODAvTWF0aC5QSSxmXz0xOCxsXz0uOTUwNDcsaF89MSxwXz0xLjA4ODgzLGRfPTQvMjksdl89Ni8yOSxfXz0zKnZfKnZfLHlfPXZfKnZfKnZfO2dlKExlLHFlLG1lKHhlLHticmlnaHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gbmV3IExlKHRoaXMubCtmXyoobnVsbD09dD8xOnQpLHRoaXMuYSx0aGlzLmIsdGhpcy5vcGFjaXR5KX0sZGFya2VyOmZ1bmN0aW9uKHQpe3JldHVybiBuZXcgTGUodGhpcy5sLWZfKihudWxsPT10PzE6dCksdGhpcy5hLHRoaXMuYix0aGlzLm9wYWNpdHkpfSxyZ2I6ZnVuY3Rpb24oKXt2YXIgdD0odGhpcy5sKzE2KS8xMTYsbj1pc05hTih0aGlzLmEpP3Q6dCt0aGlzLmEvNTAwLGU9aXNOYU4odGhpcy5iKT90OnQtdGhpcy5iLzIwMDtyZXR1cm4gdD1oXypVZSh0KSxuPWxfKlVlKG4pLGU9cF8qVWUoZSksbmV3IFNlKERlKDMuMjQwNDU0MipuLTEuNTM3MTM4NSp0LS40OTg1MzE0KmUpLERlKC0uOTY5MjY2Km4rMS44NzYwMTA4KnQrLjA0MTU1NiplKSxEZSguMDU1NjQzNCpuLS4yMDQwMjU5KnQrMS4wNTcyMjUyKmUpLHRoaXMub3BhY2l0eSl9fSkpLGdlKFllLEllLG1lKHhlLHticmlnaHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gbmV3IFllKHRoaXMuaCx0aGlzLmMsdGhpcy5sK2ZfKihudWxsPT10PzE6dCksdGhpcy5vcGFjaXR5KX0sZGFya2VyOmZ1bmN0aW9uKHQpe3JldHVybiBuZXcgWWUodGhpcy5oLHRoaXMuYyx0aGlzLmwtZl8qKG51bGw9PXQ/MTp0KSx0aGlzLm9wYWNpdHkpfSxyZ2I6ZnVuY3Rpb24oKXtyZXR1cm4gUGUodGhpcykucmdiKCl9fSkpO3ZhciBnXz0tLjE0ODYxLG1fPTEuNzgyNzcseF89LS4yOTIyNyxiXz0tLjkwNjQ5LHdfPTEuOTcyOTQsTV89d18qYl8sVF89d18qbV8sa189bV8qeF8tYl8qZ187Z2UoSGUsamUsbWUoeGUse2JyaWdodGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0PW51bGw9PXQ/UXY6TWF0aC5wb3coUXYsdCksbmV3IEhlKHRoaXMuaCx0aGlzLnMsdGhpcy5sKnQsdGhpcy5vcGFjaXR5KX0sZGFya2VyOmZ1bmN0aW9uKHQpe3JldHVybiB0PW51bGw9PXQ/SnY6TWF0aC5wb3coSnYsdCksbmV3IEhlKHRoaXMuaCx0aGlzLnMsdGhpcy5sKnQsdGhpcy5vcGFjaXR5KX0scmdiOmZ1bmN0aW9uKCl7dmFyIHQ9aXNOYU4odGhpcy5oKT8wOih0aGlzLmgrMTIwKSpjXyxuPSt0aGlzLmwsZT1pc05hTih0aGlzLnMpPzA6dGhpcy5zKm4qKDEtbikscj1NYXRoLmNvcyh0KSxpPU1hdGguc2luKHQpO3JldHVybiBuZXcgU2UoMjU1KihuK2UqKGdfKnIrbV8qaSkpLDI1NSoobitlKih4XypyK2JfKmkpKSwyNTUqKG4rZSood18qcikpLHRoaXMub3BhY2l0eSl9fSkpO3ZhciBTXyxOXyxBXyxFXyxDXz1mdW5jdGlvbiB0KG4pe2Z1bmN0aW9uIGUodCxuKXt2YXIgZT1yKCh0PWtlKHQpKS5yLChuPWtlKG4pKS5yKSxpPXIodC5nLG4uZyksbz1yKHQuYixuLmIpLHU9cih0Lm9wYWNpdHksbi5vcGFjaXR5KTtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIHQucj1lKG4pLHQuZz1pKG4pLHQuYj1vKG4pLHQub3BhY2l0eT11KG4pLHQrIiJ9fXZhciByPVFlKG4pO3JldHVybiBlLmdhbW1hPXQsZX0oMSksel89dHIoVmUpLFBfPXRyKFdlKSxxXz0vWy0rXT8oPzpcZCtcLj9cZCp8XC4/XGQrKSg/OltlRV1bLStdP1xkKyk/L2csTF89bmV3IFJlZ0V4cChxXy5zb3VyY2UsImciKSxSXz0xODAvTWF0aC5QSSxVXz17dHJhbnNsYXRlWDowLHRyYW5zbGF0ZVk6MCxyb3RhdGU6MCxza2V3WDowLHNjYWxlWDoxLHNjYWxlWToxfSxEXz1wcihsciwicHgsICIsInB4KSIsImRlZykiKSxPXz1wcihociwiLCAiLCIpIiwiKSIpLEZfPU1hdGguU1FSVDIsSV89MixZXz00LEJfPTFlLTEyLGpfPWdyKEplKSxIXz1ncihLZSksWF89eHIoSmUpLFZfPXhyKEtlKSxXXz1icihKZSksJF89YnIoS2UpLFpfPXt2YWx1ZTpmdW5jdGlvbigpe319O1RyLnByb3RvdHlwZT1Nci5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOlRyLG9uOmZ1bmN0aW9uKHQsbil7dmFyIGUscj10aGlzLl8saT1rcih0KyIiLHIpLG89LTEsdT1pLmxlbmd0aDt7aWYoIShhcmd1bWVudHMubGVuZ3RoPDIpKXtpZihudWxsIT1uJiYiZnVuY3Rpb24iIT10eXBlb2Ygbil0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgY2FsbGJhY2s6ICIrbik7Zm9yKDsrK288dTspaWYoZT0odD1pW29dKS50eXBlKXJbZV09TnIocltlXSx0Lm5hbWUsbik7ZWxzZSBpZihudWxsPT1uKWZvcihlIGluIHIpcltlXT1OcihyW2VdLHQubmFtZSxudWxsKTtyZXR1cm4gdGhpc31mb3IoOysrbzx1OylpZigoZT0odD1pW29dKS50eXBlKSYmKGU9U3IocltlXSx0Lm5hbWUpKSlyZXR1cm4gZX19LGNvcHk6ZnVuY3Rpb24oKXt2YXIgdD17fSxuPXRoaXMuXztmb3IodmFyIGUgaW4gbil0W2VdPW5bZV0uc2xpY2UoKTtyZXR1cm4gbmV3IFRyKHQpfSxjYWxsOmZ1bmN0aW9uKHQsbil7aWYoKGU9YXJndW1lbnRzLmxlbmd0aC0yKT4wKWZvcih2YXIgZSxyLGk9bmV3IEFycmF5KGUpLG89MDtvPGU7KytvKWlbb109YXJndW1lbnRzW28rMl07aWYoIXRoaXMuXy5oYXNPd25Qcm9wZXJ0eSh0KSl0aHJvdyBuZXcgRXJyb3IoInVua25vd24gdHlwZTogIit0KTtmb3Iocj10aGlzLl9bdF0sbz0wLGU9ci5sZW5ndGg7bzxlOysrbylyW29dLnZhbHVlLmFwcGx5KG4saSl9LGFwcGx5OmZ1bmN0aW9uKHQsbixlKXtpZighdGhpcy5fLmhhc093blByb3BlcnR5KHQpKXRocm93IG5ldyBFcnJvcigidW5rbm93biB0eXBlOiAiK3QpO2Zvcih2YXIgcj10aGlzLl9bdF0saT0wLG89ci5sZW5ndGg7aTxvOysraSlyW2ldLnZhbHVlLmFwcGx5KG4sZSl9fTt2YXIgR18sSl8sUV89enIoIiwiKSxLXz1RXy5wYXJzZSx0eT1RXy5wYXJzZVJvd3Msbnk9UV8uZm9ybWF0LGV5PVFfLmZvcm1hdFJvd3Mscnk9enIoIlx0IiksaXk9cnkucGFyc2Usb3k9cnkucGFyc2VSb3dzLHV5PXJ5LmZvcm1hdCxheT1yeS5mb3JtYXRSb3dzLGN5PVJyKCJ0ZXh0L2h0bWwiLGZ1bmN0aW9uKHQpe3JldHVybiBkb2N1bWVudC5jcmVhdGVSYW5nZSgpLmNyZWF0ZUNvbnRleHR1YWxGcmFnbWVudCh0LnJlc3BvbnNlVGV4dCl9KSxzeT1ScigiYXBwbGljYXRpb24vanNvbiIsZnVuY3Rpb24odCl7cmV0dXJuIEpTT04ucGFyc2UodC5yZXNwb25zZVRleHQpfSksZnk9UnIoInRleHQvcGxhaW4iLGZ1bmN0aW9uKHQpe3JldHVybiB0LnJlc3BvbnNlVGV4dH0pLGx5PVJyKCJhcHBsaWNhdGlvbi94bWwiLGZ1bmN0aW9uKHQpe3ZhciBuPXQucmVzcG9uc2VYTUw7aWYoIW4pdGhyb3cgbmV3IEVycm9yKCJwYXJzZSBlcnJvciIpO3JldHVybiBufSksaHk9VXIoInRleHQvY3N2IixLXykscHk9VXIoInRleHQvdGFiLXNlcGFyYXRlZC12YWx1ZXMiLGl5KSxkeT0wLHZ5PTAsX3k9MCx5eT0xZTMsZ3k9MCxteT0wLHh5PTAsYnk9Im9iamVjdCI9PXR5cGVvZiBwZXJmb3JtYW5jZSYmcGVyZm9ybWFuY2Uubm93P3BlcmZvcm1hbmNlOkRhdGUsd3k9ImZ1bmN0aW9uIj09dHlwZW9mIHJlcXVlc3RBbmltYXRpb25GcmFtZT9ieT09PURhdGU/ZnVuY3Rpb24odCl7cmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uKCl7dChieS5ub3coKSl9KX06cmVxdWVzdEFuaW1hdGlvbkZyYW1lOmZ1bmN0aW9uKHQpe3NldFRpbWVvdXQodCwxNyl9O0lyLnByb3RvdHlwZT1Zci5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOklyLHJlc3RhcnQ6ZnVuY3Rpb24odCxuLGUpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0KXRocm93IG5ldyBUeXBlRXJyb3IoImNhbGxiYWNrIGlzIG5vdCBhIGZ1bmN0aW9uIik7ZT0obnVsbD09ZT9PcigpOitlKSsobnVsbD09bj8wOituKSx0aGlzLl9uZXh0fHxKXz09PXRoaXN8fChKXz9KXy5fbmV4dD10aGlzOkdfPXRoaXMsSl89dGhpcyksdGhpcy5fY2FsbD10LHRoaXMuX3RpbWU9ZSxWcigpfSxzdG9wOmZ1bmN0aW9uKCl7dGhpcy5fY2FsbCYmKHRoaXMuX2NhbGw9bnVsbCx0aGlzLl90aW1lPTEvMCxWcigpKX19O3ZhciBNeT1uZXcgRGF0ZSxUeT1uZXcgRGF0ZSxreT1acihmdW5jdGlvbigpe30sZnVuY3Rpb24odCxuKXt0LnNldFRpbWUoK3Qrbil9LGZ1bmN0aW9uKHQsbil7cmV0dXJuIG4tdH0pO2t5LmV2ZXJ5PWZ1bmN0aW9uKHQpe3JldHVybiB0PU1hdGguZmxvb3IodCksaXNGaW5pdGUodCkmJnQ+MD90PjE/WnIoZnVuY3Rpb24obil7bi5zZXRUaW1lKE1hdGguZmxvb3Iobi90KSp0KX0sZnVuY3Rpb24obixlKXtuLnNldFRpbWUoK24rZSp0KX0sZnVuY3Rpb24obixlKXtyZXR1cm4oZS1uKS90fSk6a3k6bnVsbH07dmFyIFN5PWt5LnJhbmdlLE55PTFlMyxBeT02ZTQsRXk9MzZlNSxDeT04NjRlNSx6eT02MDQ4ZTUsUHk9WnIoZnVuY3Rpb24odCl7dC5zZXRUaW1lKE1hdGguZmxvb3IodC9OeSkqTnkpfSxmdW5jdGlvbih0LG4pe3Quc2V0VGltZSgrdCtuKk55KX0sZnVuY3Rpb24odCxuKXtyZXR1cm4obi10KS9OeX0sZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0VVRDU2Vjb25kcygpfSkscXk9UHkucmFuZ2UsTHk9WnIoZnVuY3Rpb24odCl7dC5zZXRUaW1lKE1hdGguZmxvb3IodC9BeSkqQXkpfSxmdW5jdGlvbih0LG4pe3Quc2V0VGltZSgrdCtuKkF5KX0sZnVuY3Rpb24odCxuKXtyZXR1cm4obi10KS9BeX0sZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0TWludXRlcygpfSksUnk9THkucmFuZ2UsVXk9WnIoZnVuY3Rpb24odCl7dmFyIG49dC5nZXRUaW1lem9uZU9mZnNldCgpKkF5JUV5O248MCYmKG4rPUV5KSx0LnNldFRpbWUoTWF0aC5mbG9vcigoK3QtbikvRXkpKkV5K24pfSxmdW5jdGlvbih0LG4pe3Quc2V0VGltZSgrdCtuKkV5KX0sZnVuY3Rpb24odCxuKXtyZXR1cm4obi10KS9FeX0sZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0SG91cnMoKX0pLER5PVV5LnJhbmdlLE95PVpyKGZ1bmN0aW9uKHQpe3Quc2V0SG91cnMoMCwwLDAsMCl9LGZ1bmN0aW9uKHQsbil7dC5zZXREYXRlKHQuZ2V0RGF0ZSgpK24pfSxmdW5jdGlvbih0LG4pe3JldHVybihuLXQtKG4uZ2V0VGltZXpvbmVPZmZzZXQoKS10LmdldFRpbWV6b25lT2Zmc2V0KCkpKkF5KS9DeX0sZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0RGF0ZSgpLTF9KSxGeT1PeS5yYW5nZSxJeT1HcigwKSxZeT1HcigxKSxCeT1HcigyKSxqeT1HcigzKSxIeT1Hcig0KSxYeT1Hcig1KSxWeT1Hcig2KSxXeT1JeS5yYW5nZSwkeT1ZeS5yYW5nZSxaeT1CeS5yYW5nZSxHeT1qeS5yYW5nZSxKeT1IeS5yYW5nZSxReT1YeS5yYW5nZSxLeT1WeS5yYW5nZSx0Zz1acihmdW5jdGlvbih0KXt0LnNldERhdGUoMSksdC5zZXRIb3VycygwLDAsMCwwKX0sZnVuY3Rpb24odCxuKXt0LnNldE1vbnRoKHQuZ2V0TW9udGgoKStuKX0sZnVuY3Rpb24odCxuKXtyZXR1cm4gbi5nZXRNb250aCgpLXQuZ2V0TW9udGgoKSsxMioobi5nZXRGdWxsWWVhcigpLXQuZ2V0RnVsbFllYXIoKSl9LGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldE1vbnRoKCl9KSxuZz10Zy5yYW5nZSxlZz1acihmdW5jdGlvbih0KXt0LnNldE1vbnRoKDAsMSksdC5zZXRIb3VycygwLDAsMCwwKX0sZnVuY3Rpb24odCxuKXt0LnNldEZ1bGxZZWFyKHQuZ2V0RnVsbFllYXIoKStuKX0sZnVuY3Rpb24odCxuKXtyZXR1cm4gbi5nZXRGdWxsWWVhcigpLXQuZ2V0RnVsbFllYXIoKX0sZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0RnVsbFllYXIoKX0pO2VnLmV2ZXJ5PWZ1bmN0aW9uKHQpe3JldHVybiBpc0Zpbml0ZSh0PU1hdGguZmxvb3IodCkpJiZ0PjA/WnIoZnVuY3Rpb24obil7bi5zZXRGdWxsWWVhcihNYXRoLmZsb29yKG4uZ2V0RnVsbFllYXIoKS90KSp0KSxuLnNldE1vbnRoKDAsMSksbi5zZXRIb3VycygwLDAsMCwwKX0sZnVuY3Rpb24obixlKXtuLnNldEZ1bGxZZWFyKG4uZ2V0RnVsbFllYXIoKStlKnQpfSk6bnVsbH07dmFyIHJnPWVnLnJhbmdlLGlnPVpyKGZ1bmN0aW9uKHQpe3Quc2V0VVRDU2Vjb25kcygwLDApfSxmdW5jdGlvbih0LG4pe3Quc2V0VGltZSgrdCtuKkF5KX0sZnVuY3Rpb24odCxuKXtyZXR1cm4obi10KS9BeX0sZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0VVRDTWludXRlcygpfSksb2c9aWcucmFuZ2UsdWc9WnIoZnVuY3Rpb24odCl7dC5zZXRVVENNaW51dGVzKDAsMCwwKX0sZnVuY3Rpb24odCxuKXt0LnNldFRpbWUoK3QrbipFeSl9LGZ1bmN0aW9uKHQsbil7cmV0dXJuKG4tdCkvRXl9LGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldFVUQ0hvdXJzKCl9KSxhZz11Zy5yYW5nZSxjZz1acihmdW5jdGlvbih0KXt0LnNldFVUQ0hvdXJzKDAsMCwwLDApfSxmdW5jdGlvbih0LG4pe3Quc2V0VVRDRGF0ZSh0LmdldFVUQ0RhdGUoKStuKX0sZnVuY3Rpb24odCxuKXtyZXR1cm4obi10KS9DeX0sZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0VVRDRGF0ZSgpLTF9KSxzZz1jZy5yYW5nZSxmZz1KcigwKSxsZz1KcigxKSxoZz1KcigyKSxwZz1KcigzKSxkZz1Kcig0KSx2Zz1Kcig1KSxfZz1Kcig2KSx5Zz1mZy5yYW5nZSxnZz1sZy5yYW5nZSxtZz1oZy5yYW5nZSx4Zz1wZy5yYW5nZSxiZz1kZy5yYW5nZSx3Zz12Zy5yYW5nZSxNZz1fZy5yYW5nZSxUZz1acihmdW5jdGlvbih0KXt0LnNldFVUQ0RhdGUoMSksdC5zZXRVVENIb3VycygwLDAsMCwwKX0sZnVuY3Rpb24odCxuKXt0LnNldFVUQ01vbnRoKHQuZ2V0VVRDTW9udGgoKStuKX0sZnVuY3Rpb24odCxuKXtyZXR1cm4gbi5nZXRVVENNb250aCgpLXQuZ2V0VVRDTW9udGgoKSsxMioobi5nZXRVVENGdWxsWWVhcigpLXQuZ2V0VVRDRnVsbFllYXIoKSl9LGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldFVUQ01vbnRoKCl9KSxrZz1UZy5yYW5nZSxTZz1acihmdW5jdGlvbih0KXt0LnNldFVUQ01vbnRoKDAsMSksdC5zZXRVVENIb3VycygwLDAsMCwwKX0sZnVuY3Rpb24odCxuKXt0LnNldFVUQ0Z1bGxZZWFyKHQuZ2V0VVRDRnVsbFllYXIoKStuKX0sZnVuY3Rpb24odCxuKXtyZXR1cm4gbi5nZXRVVENGdWxsWWVhcigpLXQuZ2V0VVRDRnVsbFllYXIoKX0sZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0VVRDRnVsbFllYXIoKX0pO1NnLmV2ZXJ5PWZ1bmN0aW9uKHQpe3JldHVybiBpc0Zpbml0ZSh0PU1hdGguZmxvb3IodCkpJiZ0PjA/WnIoZnVuY3Rpb24obil7bi5zZXRVVENGdWxsWWVhcihNYXRoLmZsb29yKG4uZ2V0VVRDRnVsbFllYXIoKS90KSp0KSxuLnNldFVUQ01vbnRoKDAsMSksbi5zZXRVVENIb3VycygwLDAsMCwwKX0sZnVuY3Rpb24obixlKXtuLnNldFVUQ0Z1bGxZZWFyKG4uZ2V0VVRDRnVsbFllYXIoKStlKnQpfSk6bnVsbH07dmFyIE5nLEFnPVNnLnJhbmdlLEVnPXsiIjpuaSwiJSI6ZnVuY3Rpb24odCxuKXtyZXR1cm4oMTAwKnQpLnRvRml4ZWQobil9LGI6ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGgucm91bmQodCkudG9TdHJpbmcoMil9LGM6ZnVuY3Rpb24odCl7cmV0dXJuIHQrIiJ9LGQ6ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGgucm91bmQodCkudG9TdHJpbmcoMTApfSxlOmZ1bmN0aW9uKHQsbil7cmV0dXJuIHQudG9FeHBvbmVudGlhbChuKX0sZjpmdW5jdGlvbih0LG4pe3JldHVybiB0LnRvRml4ZWQobil9LGc6ZnVuY3Rpb24odCxuKXtyZXR1cm4gdC50b1ByZWNpc2lvbihuKX0sbzpmdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5yb3VuZCh0KS50b1N0cmluZyg4KX0scDpmdW5jdGlvbih0LG4pe3JldHVybiByaSgxMDAqdCxuKX0scjpyaSxzOmVpLFg6ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGgucm91bmQodCkudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCl9LHg6ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGgucm91bmQodCkudG9TdHJpbmcoMTYpfX0sQ2c9L14oPzooLik/KFs8Pj1eXSkpPyhbK1wtXCggXSk/KFskI10pPygwKT8oXGQrKT8oLCk/KFwuXGQrKT8oW2EteiVdKT8kL2k7b2kucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZmlsbCt0aGlzLmFsaWduK3RoaXMuc2lnbit0aGlzLnN5bWJvbCsodGhpcy56ZXJvPyIwIjoiIikrKG51bGw9PXRoaXMud2lkdGg/IiI6TWF0aC5tYXgoMSwwfHRoaXMud2lkdGgpKSsodGhpcy5jb21tYT8iLCI6IiIpKyhudWxsPT10aGlzLnByZWNpc2lvbj8iIjoiLiIrTWF0aC5tYXgoMCwwfHRoaXMucHJlY2lzaW9uKSkrdGhpcy50eXBlfTt2YXIgemcsUGc9WyJ5IiwieiIsImEiLCJmIiwicCIsIm4iLCLCtSIsIm0iLCIiLCJrIiwiTSIsIkciLCJUIiwiUCIsIkUiLCJaIiwiWSJdO2NpKHtkZWNpbWFsOiIuIix0aG91c2FuZHM6IiwiLGdyb3VwaW5nOlszXSxjdXJyZW5jeTpbIiQiLCIiXX0pO3ZhciBxZyxMZz17Ii0iOiIiLF86IiAiLDA6IjAifSxSZz0vXlxzKlxkKy8sVWc9L14lLyxEZz0vW1xcXF5cJFwqXCtcP1x8XFtcXVwoXClcLlx7XH1dL2c7c28oe2RhdGVUaW1lOiIleCwgJVgiLGRhdGU6IiUtbS8lLWQvJVkiLHRpbWU6IiUtSTolTTolUyAlcCIscGVyaW9kczpbIkFNIiwiUE0iXSxkYXlzOlsiU3VuZGF5IiwiTW9uZGF5IiwiVHVlc2RheSIsIldlZG5lc2RheSIsIlRodXJzZGF5IiwiRnJpZGF5IiwiU2F0dXJkYXkiXSxzaG9ydERheXM6WyJTdW4iLCJNb24iLCJUdWUiLCJXZWQiLCJUaHUiLCJGcmkiLCJTYXQiXSxtb250aHM6WyJKYW51YXJ5IiwiRmVicnVhcnkiLCJNYXJjaCIsIkFwcmlsIiwiTWF5IiwiSnVuZSIsIkp1bHkiLCJBdWd1c3QiLCJTZXB0ZW1iZXIiLCJPY3RvYmVyIiwiTm92ZW1iZXIiLCJEZWNlbWJlciJdLHNob3J0TW9udGhzOlsiSmFuIiwiRmViIiwiTWFyIiwiQXByIiwiTWF5IiwiSnVuIiwiSnVsIiwiQXVnIiwiU2VwIiwiT2N0IiwiTm92IiwiRGVjIl19KTt2YXIgT2c9IiVZLSVtLSVkVCVIOiVNOiVTLiVMWiIsRmc9RGF0ZS5wcm90b3R5cGUudG9JU09TdHJpbmc/Zm86dC51dGNGb3JtYXQoT2cpLElnPStuZXcgRGF0ZSgiMjAwMC0wMS0wMVQwMDowMDowMC4wMDBaIik/bG86dC51dGNQYXJzZShPZyksWWc9QXJyYXkucHJvdG90eXBlLEJnPVlnLm1hcCxqZz1ZZy5zbGljZSxIZz17bmFtZToiaW1wbGljaXQifSxYZz1bMCwxXSxWZz0xZTMsV2c9NjAqVmcsJGc9NjAqV2csWmc9MjQqJGcsR2c9NypaZyxKZz0zMCpaZyxRZz0zNjUqWmcsS2c9Wm8oIjFmNzdiNGZmN2YwZTJjYTAyY2Q2MjcyODk0NjdiZDhjNTY0YmUzNzdjMjdmN2Y3ZmJjYmQyMjE3YmVjZiIpLHRtPVpvKCIzOTNiNzk1MjU0YTM2YjZlY2Y5YzllZGU2Mzc5Mzk4Y2EyNTJiNWNmNmJjZWRiOWM4YzZkMzFiZDllMzllN2JhNTJlN2NiOTQ4NDNjMzlhZDQ5NGFkNjYxNmJlNzk2OWM3YjQxNzNhNTUxOTRjZTZkYmRkZTllZDYiKSxubT1abygiMzE4MmJkNmJhZWQ2OWVjYWUxYzZkYmVmZTY1NTBkZmQ4ZDNjZmRhZTZiZmRkMGEyMzFhMzU0NzRjNDc2YTFkOTliYzdlOWMwNzU2YmIxOWU5YWM4YmNiZGRjZGFkYWViNjM2MzYzOTY5Njk2YmRiZGJkZDlkOWQ5IiksZW09Wm8oIjFmNzdiNGFlYzdlOGZmN2YwZWZmYmI3ODJjYTAyYzk4ZGY4YWQ2MjcyOGZmOTg5Njk0NjdiZGM1YjBkNThjNTY0YmM0OWM5NGUzNzdjMmY3YjZkMjdmN2Y3ZmM3YzdjN2JjYmQyMmRiZGI4ZDE3YmVjZjllZGFlNSIpLHJtPSRfKGplKDMwMCwuNSwwKSxqZSgtMjQwLC41LDEpKSxpbT0kXyhqZSgtMTAwLC43NSwuMzUpLGplKDgwLDEuNSwuOCkpLG9tPSRfKGplKDI2MCwuNzUsLjM1KSxqZSg4MCwxLjUsLjgpKSx1bT1qZSgpLGFtPUpvKFpvKCI0NDAxNTQ0NDAyNTY0NTA0NTc0NTA1NTk0NjA3NWE0NjA4NWM0NjBhNWQ0NjBiNWU0NzBkNjA0NzBlNjE0NzEwNjM0NzExNjQ0NzEzNjU0ODE0Njc0ODE2Njg0ODE3Njk0ODE4NmE0ODFhNmM0ODFiNmQ0ODFjNmU0ODFkNmY0ODFmNzA0ODIwNzE0ODIxNzM0ODIzNzQ0ODI0NzU0ODI1NzY0ODI2Nzc0ODI4Nzg0ODI5Nzk0NzJhN2E0NzJjN2E0NzJkN2I0NzJlN2M0NzJmN2Q0NjMwN2U0NjMyN2U0NjMzN2Y0NjM0ODA0NTM1ODE0NTM3ODE0NTM4ODI0NDM5ODM0NDNhODM0NDNiODQ0MzNkODQ0MzNlODU0MjNmODU0MjQwODY0MjQxODY0MTQyODc0MTQ0ODc0MDQ1ODg0MDQ2ODgzZjQ3ODgzZjQ4ODkzZTQ5ODkzZTRhODkzZTRjOGEzZDRkOGEzZDRlOGEzYzRmOGEzYzUwOGIzYjUxOGIzYjUyOGIzYTUzOGIzYTU0OGMzOTU1OGMzOTU2OGMzODU4OGMzODU5OGMzNzVhOGMzNzViOGQzNjVjOGQzNjVkOGQzNTVlOGQzNTVmOGQzNDYwOGQzNDYxOGQzMzYyOGQzMzYzOGQzMjY0OGUzMjY1OGUzMTY2OGUzMTY3OGUzMTY4OGUzMDY5OGUzMDZhOGUyZjZiOGUyZjZjOGUyZTZkOGUyZTZlOGUyZTZmOGUyZDcwOGUyZDcxOGUyYzcxOGUyYzcyOGUyYzczOGUyYjc0OGUyYjc1OGUyYTc2OGUyYTc3OGUyYTc4OGUyOTc5OGUyOTdhOGUyOTdiOGUyODdjOGUyODdkOGUyNzdlOGUyNzdmOGUyNzgwOGUyNjgxOGUyNjgyOGUyNjgyOGUyNTgzOGUyNTg0OGUyNTg1OGUyNDg2OGUyNDg3OGUyMzg4OGUyMzg5OGUyMzhhOGQyMjhiOGQyMjhjOGQyMjhkOGQyMThlOGQyMThmOGQyMTkwOGQyMTkxOGMyMDkyOGMyMDkyOGMyMDkzOGMxZjk0OGMxZjk1OGIxZjk2OGIxZjk3OGIxZjk4OGIxZjk5OGExZjlhOGExZTliOGExZTljODkxZTlkODkxZjllODkxZjlmODgxZmEwODgxZmExODgxZmExODcxZmEyODcyMGEzODYyMGE0ODYyMWE1ODUyMWE2ODUyMmE3ODUyMmE4ODQyM2E5ODMyNGFhODMyNWFiODIyNWFjODIyNmFkODEyN2FkODEyOGFlODAyOWFmN2YyYWIwN2YyY2IxN2UyZGIyN2QyZWIzN2MyZmI0N2MzMWI1N2IzMmI2N2EzNGI2NzkzNWI3NzkzN2I4NzgzOGI5NzczYWJhNzYzYmJiNzUzZGJjNzQzZmJjNzM0MGJkNzI0MmJlNzE0NGJmNzA0NmMwNmY0OGMxNmU0YWMxNmQ0Y2MyNmM0ZWMzNmI1MGM0NmE1MmM1Njk1NGM1Njg1NmM2Njc1OGM3NjU1YWM4NjQ1Y2M4NjM1ZWM5NjI2MGNhNjA2M2NiNWY2NWNiNWU2N2NjNWM2OWNkNWI2Y2NkNWE2ZWNlNTg3MGNmNTc3M2QwNTY3NWQwNTQ3N2QxNTM3YWQxNTE3Y2QyNTA3ZmQzNGU4MWQzNGQ4NGQ0NGI4NmQ1NDk4OWQ1NDg4YmQ2NDY4ZWQ2NDU5MGQ3NDM5M2Q3NDE5NWQ4NDA5OGQ4M2U5YmQ5M2M5ZGQ5M2JhMGRhMzlhMmRhMzdhNWRiMzZhOGRiMzRhYWRjMzJhZGRjMzBiMGRkMmZiMmRkMmRiNWRlMmJiOGRlMjliYWRlMjhiZGRmMjZjMGRmMjVjMmRmMjNjNWUwMjFjOGUwMjBjYWUxMWZjZGUxMWRkMGUxMWNkMmUyMWJkNWUyMWFkOGUyMTlkYWUzMTlkZGUzMThkZmUzMThlMmU0MThlNWU0MTllN2U0MTllYWU1MWFlY2U1MWJlZmU1MWNmMWU1MWRmNGU2MWVmNmU2MjBmOGU2MjFmYmU3MjNmZGU3MjUiKSksY209Sm8oWm8oIjAwMDAwNDAxMDAwNTAxMDEwNjAxMDEwODAyMDEwOTAyMDIwYjAyMDIwZDAzMDMwZjAzMDMxMjA0MDQxNDA1MDQxNjA2MDUxODA2MDUxYTA3MDYxYzA4MDcxZTA5MDcyMDBhMDgyMjBiMDkyNDBjMDkyNjBkMGEyOTBlMGIyYjEwMGIyZDExMGMyZjEyMGQzMTEzMGQzNDE0MGUzNjE1MGUzODE2MGYzYjE4MGYzZDE5MTAzZjFhMTA0MjFjMTA0NDFkMTE0NzFlMTE0OTIwMTE0YjIxMTE0ZTIyMTE1MDI0MTI1MzI1MTI1NTI3MTI1ODI5MTE1YTJhMTE1YzJjMTE1ZjJkMTE2MTJmMTE2MzMxMTE2NTMzMTA2NzM0MTA2OTM2MTA2YjM4MTA2YzM5MGY2ZTNiMGY3MDNkMGY3MTNmMGY3MjQwMGY3NDQyMGY3NTQ0MGY3NjQ1MTA3NzQ3MTA3ODQ5MTA3ODRhMTA3OTRjMTE3YTRlMTE3YjRmMTI3YjUxMTI3YzUyMTM3YzU0MTM3ZDU2MTQ3ZDU3MTU3ZTU5MTU3ZTVhMTY3ZTVjMTY3ZjVkMTc3ZjVmMTg3ZjYwMTg4MDYyMTk4MDY0MWE4MDY1MWE4MDY3MWI4MDY4MWM4MTZhMWM4MTZiMWQ4MTZkMWQ4MTZlMWU4MTcwMWY4MTcyMWY4MTczMjA4MTc1MjE4MTc2MjE4MTc4MjI4MTc5MjI4MjdiMjM4MjdjMjM4MjdlMjQ4MjgwMjU4MjgxMjU4MTgzMjY4MTg0MjY4MTg2Mjc4MTg4Mjc4MTg5Mjg4MThiMjk4MThjMjk4MThlMmE4MTkwMmE4MTkxMmI4MTkzMmI4MDk0MmM4MDk2MmM4MDk4MmQ4MDk5MmQ4MDliMmU3ZjljMmU3ZjllMmY3ZmEwMmY3ZmExMzA3ZWEzMzA3ZWE1MzE3ZWE2MzE3ZGE4MzI3ZGFhMzM3ZGFiMzM3Y2FkMzQ3Y2FlMzQ3YmIwMzU3YmIyMzU3YmIzMzY3YWI1MzY3YWI3Mzc3OWI4Mzc3OWJhMzg3OGJjMzk3OGJkMzk3N2JmM2E3N2MwM2E3NmMyM2I3NWM0M2M3NWM1M2M3NGM3M2Q3M2M4M2U3M2NhM2U3MmNjM2Y3MWNkNDA3MWNmNDA3MGQwNDE2ZmQyNDI2ZmQzNDM2ZWQ1NDQ2ZGQ2NDU2Y2Q4NDU2Y2Q5NDY2YmRiNDc2YWRjNDg2OWRlNDk2OGRmNGE2OGUwNGM2N2UyNGQ2NmUzNGU2NWU0NGY2NGU1NTA2NGU3NTI2M2U4NTM2MmU5NTQ2MmVhNTY2MWViNTc2MGVjNTg2MGVkNWE1ZmVlNWI1ZWVmNWQ1ZWYwNWY1ZWYxNjA1ZGYyNjI1ZGYyNjQ1Y2YzNjU1Y2Y0Njc1Y2Y0Njk1Y2Y1NmI1Y2Y2NmM1Y2Y2NmU1Y2Y3NzA1Y2Y3NzI1Y2Y4NzQ1Y2Y4NzY1Y2Y5Nzg1ZGY5Nzk1ZGY5N2I1ZGZhN2Q1ZWZhN2Y1ZWZhODE1ZmZiODM1ZmZiODU2MGZiODc2MWZjODk2MWZjOGE2MmZjOGM2M2ZjOGU2NGZjOTA2NWZkOTI2NmZkOTQ2N2ZkOTY2OGZkOTg2OWZkOWE2YWZkOWI2YmZlOWQ2Y2ZlOWY2ZGZlYTE2ZWZlYTM2ZmZlYTU3MWZlYTc3MmZlYTk3M2ZlYWE3NGZlYWM3NmZlYWU3N2ZlYjA3OGZlYjI3YWZlYjQ3YmZlYjY3Y2ZlYjc3ZWZlYjk3ZmZlYmI4MWZlYmQ4MmZlYmY4NGZlYzE4NWZlYzI4N2ZlYzQ4OGZlYzY4YWZlYzg4Y2ZlY2E4ZGZlY2M4ZmZlY2Q5MGZlY2Y5MmZlZDE5NGZlZDM5NWZlZDU5N2ZlZDc5OWZlZDg5YWZkZGE5Y2ZkZGM5ZWZkZGVhMGZkZTBhMWZkZTJhM2ZkZTNhNWZkZTVhN2ZkZTdhOWZkZTlhYWZkZWJhY2ZjZWNhZWZjZWViMGZjZjBiMmZjZjJiNGZjZjRiNmZjZjZiOGZjZjdiOWZjZjliYmZjZmJiZGZjZmRiZiIpKSxzbT1KbyhabygiMDAwMDA0MDEwMDA1MDEwMTA2MDEwMTA4MDIwMTBhMDIwMjBjMDIwMjBlMDMwMjEwMDQwMzEyMDQwMzE0MDUwNDE3MDYwNDE5MDcwNTFiMDgwNTFkMDkwNjFmMGEwNzIyMGIwNzI0MGMwODI2MGQwODI5MGUwOTJiMTAwOTJkMTEwYTMwMTIwYTMyMTQwYjM0MTUwYjM3MTYwYjM5MTgwYzNjMTkwYzNlMWIwYzQxMWMwYzQzMWUwYzQ1MWYwYzQ4MjEwYzRhMjMwYzRjMjQwYzRmMjYwYzUxMjgwYjUzMjkwYjU1MmIwYjU3MmQwYjU5MmYwYTViMzEwYTVjMzIwYTVlMzQwYTVmMzYwOTYxMzgwOTYyMzkwOTYzM2IwOTY0M2QwOTY1M2UwOTY2NDAwYTY3NDIwYTY4NDQwYTY4NDUwYTY5NDcwYjZhNDkwYjZhNGEwYzZiNGMwYzZiNGQwZDZjNGYwZDZjNTEwZTZjNTIwZTZkNTQwZjZkNTUwZjZkNTcxMDZlNTkxMDZlNWExMTZlNWMxMjZlNWQxMjZlNWYxMzZlNjExMzZlNjIxNDZlNjQxNTZlNjUxNTZlNjcxNjZlNjkxNjZlNmExNzZlNmMxODZlNmQxODZlNmYxOTZlNzExOTZlNzIxYTZlNzQxYTZlNzUxYjZlNzcxYzZkNzgxYzZkN2ExZDZkN2MxZDZkN2QxZTZkN2YxZTZjODAxZjZjODIyMDZjODQyMDZiODUyMTZiODcyMTZiODgyMjZhOGEyMjZhOGMyMzY5OGQyMzY5OGYyNDY5OTAyNTY4OTIyNTY4OTMyNjY3OTUyNjY3OTcyNzY2OTgyNzY2OWEyODY1OWIyOTY0OWQyOTY0OWYyYTYzYTAyYTYzYTIyYjYyYTMyYzYxYTUyYzYwYTYyZDYwYTgyZTVmYTkyZTVlYWIyZjVlYWQzMDVkYWUzMDVjYjAzMTViYjEzMjVhYjMzMjVhYjQzMzU5YjYzNDU4YjczNTU3YjkzNTU2YmEzNjU1YmMzNzU0YmQzODUzYmYzOTUyYzAzYTUxYzEzYTUwYzMzYjRmYzQzYzRlYzYzZDRkYzczZTRjYzgzZjRiY2E0MDRhY2I0MTQ5Y2M0MjQ4Y2U0MzQ3Y2Y0NDQ2ZDA0NTQ1ZDI0NjQ0ZDM0NzQzZDQ0ODQyZDU0YTQxZDc0YjNmZDg0YzNlZDk0ZDNkZGE0ZTNjZGI1MDNiZGQ1MTNhZGU1MjM4ZGY1MzM3ZTA1NTM2ZTE1NjM1ZTI1NzM0ZTM1OTMzZTQ1YTMxZTU1YzMwZTY1ZDJmZTc1ZTJlZTg2MDJkZTk2MTJiZWE2MzJhZWI2NDI5ZWI2NjI4ZWM2NzI2ZWQ2OTI1ZWU2YTI0ZWY2YzIzZWY2ZTIxZjA2ZjIwZjE3MTFmZjE3MzFkZjI3NDFjZjM3NjFiZjM3ODE5ZjQ3OTE4ZjU3YjE3ZjU3ZDE1ZjY3ZTE0ZjY4MDEzZjc4MjEyZjc4NDEwZjg4NTBmZjg4NzBlZjg4OTBjZjk4YjBiZjk4YzBhZjk4ZTA5ZmE5MDA4ZmE5MjA3ZmE5NDA3ZmI5NjA2ZmI5NzA2ZmI5OTA2ZmI5YjA2ZmI5ZDA3ZmM5ZjA3ZmNhMTA4ZmNhMzA5ZmNhNTBhZmNhNjBjZmNhODBkZmNhYTBmZmNhYzExZmNhZTEyZmNiMDE0ZmNiMjE2ZmNiNDE4ZmJiNjFhZmJiODFkZmJiYTFmZmJiYzIxZmJiZTIzZmFjMDI2ZmFjMjI4ZmFjNDJhZmFjNjJkZjljNzJmZjljOTMyZjljYjM1ZjhjZDM3ZjhjZjNhZjdkMTNkZjdkMzQwZjZkNTQzZjZkNzQ2ZjVkOTQ5ZjVkYjRjZjRkZDRmZjRkZjUzZjRlMTU2ZjNlMzVhZjNlNTVkZjJlNjYxZjJlODY1ZjJlYTY5ZjFlYzZkZjFlZDcxZjFlZjc1ZjFmMTc5ZjJmMjdkZjJmNDgyZjNmNTg2ZjNmNjhhZjRmODhlZjVmOTkyZjZmYTk2ZjhmYjlhZjlmYzlkZmFmZGExZmNmZmE0IikpLGZtPUpvKFpvKCIwZDA4ODcxMDA3ODgxMzA3ODkxNjA3OGExOTA2OGMxYjA2OGQxZDA2OGUyMDA2OGYyMjA2OTAyNDA2OTEyNjA1OTEyODA1OTIyYTA1OTMyYzA1OTQyZTA1OTUyZjA1OTYzMTA1OTczMzA1OTczNTA0OTgzNzA0OTkzODA0OWEzYTA0OWEzYzA0OWIzZTA0OWMzZjA0OWM0MTA0OWQ0MzAzOWU0NDAzOWU0NjAzOWY0ODAzOWY0OTAzYTA0YjAzYTE0YzAyYTE0ZTAyYTI1MDAyYTI1MTAyYTM1MzAyYTM1NTAyYTQ1NjAxYTQ1ODAxYTQ1OTAxYTU1YjAxYTU1YzAxYTY1ZTAxYTY2MDAxYTY2MTAwYTc2MzAwYTc2NDAwYTc2NjAwYTc2NzAwYTg2OTAwYTg2YTAwYTg2YzAwYTg2ZTAwYTg2ZjAwYTg3MTAwYTg3MjAxYTg3NDAxYTg3NTAxYTg3NzAxYTg3ODAxYTg3YTAyYTg3YjAyYTg3ZDAzYTg3ZTAzYTg4MDA0YTg4MTA0YTc4MzA1YTc4NDA1YTc4NjA2YTY4NzA3YTY4ODA4YTY4YTA5YTU4YjBhYTU4ZDBiYTU4ZTBjYTQ4ZjBkYTQ5MTBlYTM5MjBmYTM5NDEwYTI5NTExYTE5NjEzYTE5ODE0YTA5OTE1OWY5YTE2OWY5YzE3OWU5ZDE4OWQ5ZTE5OWRhMDFhOWNhMTFiOWJhMjFkOWFhMzFlOWFhNTFmOTlhNjIwOThhNzIxOTdhODIyOTZhYTIzOTVhYjI0OTRhYzI2OTRhZDI3OTNhZTI4OTJiMDI5OTFiMTJhOTBiMjJiOGZiMzJjOGViNDJlOGRiNTJmOGNiNjMwOGJiNzMxOGFiODMyODliYTMzODhiYjM0ODhiYzM1ODdiZDM3ODZiZTM4ODViZjM5ODRjMDNhODNjMTNiODJjMjNjODFjMzNkODBjNDNlN2ZjNTQwN2VjNjQxN2RjNzQyN2NjODQzN2JjOTQ0N2FjYTQ1N2FjYjQ2NzljYzQ3NzhjYzQ5NzdjZDRhNzZjZTRiNzVjZjRjNzRkMDRkNzNkMTRlNzJkMjRmNzFkMzUxNzFkNDUyNzBkNTUzNmZkNTU0NmVkNjU1NmRkNzU2NmNkODU3NmJkOTU4NmFkYTVhNmFkYTViNjlkYjVjNjhkYzVkNjdkZDVlNjZkZTVmNjVkZTYxNjRkZjYyNjNlMDYzNjNlMTY0NjJlMjY1NjFlMjY2NjBlMzY4NWZlNDY5NWVlNTZhNWRlNTZiNWRlNjZjNWNlNzZlNWJlNzZmNWFlODcwNTllOTcxNThlOTcyNTdlYTc0NTdlYjc1NTZlYjc2NTVlYzc3NTRlZDc5NTNlZDdhNTJlZTdiNTFlZjdjNTFlZjdlNTBmMDdmNGZmMDgwNGVmMTgxNGRmMTgzNGNmMjg0NGJmMzg1NGJmMzg3NGFmNDg4NDlmNDg5NDhmNThiNDdmNThjNDZmNjhkNDVmNjhmNDRmNzkwNDRmNzkxNDNmNzkzNDJmODk0NDFmODk1NDBmOTk3M2ZmOTk4M2VmOTlhM2VmYTliM2RmYTljM2NmYTllM2JmYjlmM2FmYmExMzlmYmEyMzhmY2EzMzhmY2E1MzdmY2E2MzZmY2E4MzVmY2E5MzRmZGFiMzNmZGFjMzNmZGFlMzJmZGFmMzFmZGIxMzBmZGIyMmZmZGI0MmZmZGI1MmVmZWI3MmRmZWI4MmNmZWJhMmNmZWJiMmJmZWJkMmFmZWJlMmFmZWMwMjlmZGMyMjlmZGMzMjhmZGM1MjdmZGM2MjdmZGM4MjdmZGNhMjZmZGNiMjZmY2NkMjVmY2NlMjVmY2QwMjVmY2QyMjVmYmQzMjRmYmQ1MjRmYmQ3MjRmYWQ4MjRmYWRhMjRmOWRjMjRmOWRkMjVmOGRmMjVmOGUxMjVmN2UyMjVmN2U0MjVmNmU2MjZmNmU4MjZmNWU5MjZmNWViMjdmNGVkMjdmM2VlMjdmM2YwMjdmMmYyMjdmMWY0MjZmMWY1MjVmMGY3MjRmMGY5MjEiKSksbG09Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiLGhtPXsKc3ZnOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIseGh0bWw6bG0seGxpbms6Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiLHhtbDoiaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIix4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC94bWxucy8ifSxwbT0wO2l1LnByb3RvdHlwZT1ydS5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOml1LGdldDpmdW5jdGlvbih0KXtmb3IodmFyIG49dGhpcy5fOyEobiBpbiB0KTspaWYoISh0PXQucGFyZW50Tm9kZSkpcmV0dXJuO3JldHVybiB0W25dfSxzZXQ6ZnVuY3Rpb24odCxuKXtyZXR1cm4gdFt0aGlzLl9dPW59LHJlbW92ZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fIGluIHQmJmRlbGV0ZSB0W3RoaXMuX119LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX319O3ZhciBkbT1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXRjaGVzKHQpfX07aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBkb2N1bWVudCl7dmFyIHZtPWRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtpZighdm0ubWF0Y2hlcyl7dmFyIF9tPXZtLndlYmtpdE1hdGNoZXNTZWxlY3Rvcnx8dm0ubXNNYXRjaGVzU2VsZWN0b3J8fHZtLm1vek1hdGNoZXNTZWxlY3Rvcnx8dm0ub01hdGNoZXNTZWxlY3RvcjtkbT1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gX20uY2FsbCh0aGlzLHQpfX19fXZhciB5bT1kbSxnbT17fTtpZih0LmV2ZW50PW51bGwsInVuZGVmaW5lZCIhPXR5cGVvZiBkb2N1bWVudCl7dmFyIG1tPWRvY3VtZW50LmRvY3VtZW50RWxlbWVudDsib25tb3VzZWVudGVyImluIG1tfHwoZ209e21vdXNlZW50ZXI6Im1vdXNlb3ZlciIsbW91c2VsZWF2ZToibW91c2VvdXQifSl9VHUucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpUdSxhcHBlbmRDaGlsZDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcGFyZW50Lmluc2VydEJlZm9yZSh0LHRoaXMuX25leHQpfSxpbnNlcnRCZWZvcmU6ZnVuY3Rpb24odCxuKXtyZXR1cm4gdGhpcy5fcGFyZW50Lmluc2VydEJlZm9yZSh0LG4pfSxxdWVyeVNlbGVjdG9yOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9wYXJlbnQucXVlcnlTZWxlY3Rvcih0KX0scXVlcnlTZWxlY3RvckFsbDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcGFyZW50LnF1ZXJ5U2VsZWN0b3JBbGwodCl9fTt2YXIgeG09IiQiO2lhLnByb3RvdHlwZT17YWRkOmZ1bmN0aW9uKHQpe3ZhciBuPXRoaXMuX25hbWVzLmluZGV4T2YodCk7bjwwJiYodGhpcy5fbmFtZXMucHVzaCh0KSx0aGlzLl9ub2RlLnNldEF0dHJpYnV0ZSgiY2xhc3MiLHRoaXMuX25hbWVzLmpvaW4oIiAiKSkpfSxyZW1vdmU6ZnVuY3Rpb24odCl7dmFyIG49dGhpcy5fbmFtZXMuaW5kZXhPZih0KTtuPj0wJiYodGhpcy5fbmFtZXMuc3BsaWNlKG4sMSksdGhpcy5fbm9kZS5zZXRBdHRyaWJ1dGUoImNsYXNzIix0aGlzLl9uYW1lcy5qb2luKCIgIikpKX0sY29udGFpbnM6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX25hbWVzLmluZGV4T2YodCk+PTB9fTt2YXIgYm09W251bGxdO3FhLnByb3RvdHlwZT1MYS5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOnFhLHNlbGVjdDp5dSxzZWxlY3RBbGw6eHUsZmlsdGVyOmJ1LGRhdGE6QXUsZW50ZXI6TXUsZXhpdDpFdSxtZXJnZTpDdSxvcmRlcjp6dSxzb3J0OlB1LGNhbGw6THUsbm9kZXM6UnUsbm9kZTpVdSxzaXplOkR1LGVtcHR5Ok91LGVhY2g6RnUsYXR0cjpWdSxzdHlsZTpKdSxwcm9wZXJ0eTpuYSxjbGFzc2VkOmZhLHRleHQ6ZGEsaHRtbDpnYSxyYWlzZTp4YSxsb3dlcjp3YSxhcHBlbmQ6TWEsaW5zZXJ0OmthLHJlbW92ZTpOYSxkYXR1bTpBYSxvbjpmdSxkaXNwYXRjaDpQYX07dmFyIHdtPU1yKCJzdGFydCIsImVuZCIsImludGVycnVwdCIpLE1tPVtdLFRtPTAsa209MSxTbT0yLE5tPTMsQW09NCxFbT01LENtPUxhLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcix6bT0wLFBtPUxhLnByb3RvdHlwZTtVYy5wcm90b3R5cGU9RGMucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpVYyxzZWxlY3Q6d2Msc2VsZWN0QWxsOk1jLGZpbHRlcjp2YyxtZXJnZTpfYyxzZWxlY3Rpb246VGMsdHJhbnNpdGlvbjpSYyxjYWxsOlBtLmNhbGwsbm9kZXM6UG0ubm9kZXMsbm9kZTpQbS5ub2RlLHNpemU6UG0uc2l6ZSxlbXB0eTpQbS5lbXB0eSxlYWNoOlBtLmVhY2gsb246bWMsYXR0cjpyYyxhdHRyVHdlZW46dWMsc3R5bGU6RWMsc3R5bGVUd2Vlbjp6Yyx0ZXh0OkxjLHJlbW92ZTpiYyx0d2VlbjokYSxkZWxheTpzYyxkdXJhdGlvbjpoYyxlYXNlOmRjfTt2YXIgcW09e3RpbWU6bnVsbCxkZWxheTowLGR1cmF0aW9uOjI1MCxlYXNlOmV0fTtMYS5wcm90b3R5cGUuaW50ZXJydXB0PVhhLExhLnByb3RvdHlwZS50cmFuc2l0aW9uPUljO3ZhciBMbT1bbnVsbF0sUm09QXJyYXkucHJvdG90eXBlLnNsaWNlLFVtPTEsRG09MixPbT0zLEZtPTQsSW09MWUtNjt3cy5wcm90b3R5cGU9eXMucHJvdG90eXBlPXtjb25zdHJ1Y3Rvcjp3cyxlYWNoOnVzLGVhY2hBZnRlcjpjcyxlYWNoQmVmb3JlOmFzLHN1bTpzcyxzb3J0OmZzLHBhdGg6bHMsYW5jZXN0b3JzOnBzLGRlc2NlbmRhbnRzOmRzLGxlYXZlczp2cyxsaW5rczpfcyxjb3B5OmdzfTt2YXIgWW09IiQiLEJtPXtkZXB0aDotMX0sam09e307b2YucHJvdG90eXBlPU9iamVjdC5jcmVhdGUod3MucHJvdG90eXBlKTt2YXIgSG09KDErTWF0aC5zcXJ0KDUpKS8yLFhtPWZ1bmN0aW9uIHQobil7ZnVuY3Rpb24gZSh0LGUscixpLG8pe3NmKG4sdCxlLHIsaSxvKX1yZXR1cm4gZS5yYXRpbz1mdW5jdGlvbihuKXtyZXR1cm4gdCgobj0rbik+MT9uOjEpfSxlfShIbSksVm09ZnVuY3Rpb24gdChuKXtmdW5jdGlvbiBlKHQsZSxyLGksbyl7aWYoKHU9dC5fc3F1YXJpZnkpJiZ1LnJhdGlvPT09bilmb3IodmFyIHUsYSxjLHMsZixsPS0xLGg9dS5sZW5ndGgscD10LnZhbHVlOysrbDxoOyl7Zm9yKGE9dVtsXSxjPWEuY2hpbGRyZW4scz1hLnZhbHVlPTAsZj1jLmxlbmd0aDtzPGY7KytzKWEudmFsdWUrPWNbc10udmFsdWU7YS5kaWNlP1dzKGEsZSxyLGkscis9KG8tcikqYS52YWx1ZS9wKTpjZihhLGUscixlKz0oaS1lKSphLnZhbHVlL3AsbykscC09YS52YWx1ZX1lbHNlIHQuX3NxdWFyaWZ5PXU9c2Yobix0LGUscixpLG8pLHUucmF0aW89bn1yZXR1cm4gZS5yYXRpbz1mdW5jdGlvbihuKXtyZXR1cm4gdCgobj0rbik+MT9uOjEpfSxlfShIbSksV209MTAsJG09TWF0aC5QSSooMy1NYXRoLnNxcnQoNSkpO1BmLnByb3RvdHlwZS5vbj1mdW5jdGlvbigpe3ZhciB0PXRoaXMuXy5vbi5hcHBseSh0aGlzLl8sYXJndW1lbnRzKTtyZXR1cm4gdD09PXRoaXMuXz90aGlzOnR9LElmLnByb3RvdHlwZT17Y29uc3RydWN0b3I6SWYsaW5zZXJ0OmZ1bmN0aW9uKHQsbil7dmFyIGUscixpO2lmKHQpe2lmKG4uUD10LG4uTj10Lk4sdC5OJiYodC5OLlA9biksdC5OPW4sdC5SKXtmb3IodD10LlI7dC5MOyl0PXQuTDt0Lkw9bn1lbHNlIHQuUj1uO2U9dH1lbHNlIHRoaXMuXz8odD1IZih0aGlzLl8pLG4uUD1udWxsLG4uTj10LHQuUD10Lkw9bixlPXQpOihuLlA9bi5OPW51bGwsdGhpcy5fPW4sZT1udWxsKTtmb3Iobi5MPW4uUj1udWxsLG4uVT1lLG4uQz0hMCx0PW47ZSYmZS5DOylyPWUuVSxlPT09ci5MPyhpPXIuUixpJiZpLkM/KGUuQz1pLkM9ITEsci5DPSEwLHQ9cik6KHQ9PT1lLlImJihCZih0aGlzLGUpLHQ9ZSxlPXQuVSksZS5DPSExLHIuQz0hMCxqZih0aGlzLHIpKSk6KGk9ci5MLGkmJmkuQz8oZS5DPWkuQz0hMSxyLkM9ITAsdD1yKToodD09PWUuTCYmKGpmKHRoaXMsZSksdD1lLGU9dC5VKSxlLkM9ITEsci5DPSEwLEJmKHRoaXMscikpKSxlPXQuVTt0aGlzLl8uQz0hMX0scmVtb3ZlOmZ1bmN0aW9uKHQpe3QuTiYmKHQuTi5QPXQuUCksdC5QJiYodC5QLk49dC5OKSx0Lk49dC5QPW51bGw7dmFyIG4sZSxyLGk9dC5VLG89dC5MLHU9dC5SO2lmKGU9bz91P0hmKHUpOm86dSxpP2kuTD09PXQ/aS5MPWU6aS5SPWU6dGhpcy5fPWUsbyYmdT8ocj1lLkMsZS5DPXQuQyxlLkw9byxvLlU9ZSxlIT09dT8oaT1lLlUsZS5VPXQuVSx0PWUuUixpLkw9dCxlLlI9dSx1LlU9ZSk6KGUuVT1pLGk9ZSx0PWUuUikpOihyPXQuQyx0PWUpLHQmJih0LlU9aSksIXIpe2lmKHQmJnQuQylyZXR1cm4gdm9pZCh0LkM9ITEpO2Rve2lmKHQ9PT10aGlzLl8pYnJlYWs7aWYodD09PWkuTCl7aWYobj1pLlIsbi5DJiYobi5DPSExLGkuQz0hMCxCZih0aGlzLGkpLG49aS5SKSxuLkwmJm4uTC5DfHxuLlImJm4uUi5DKXtuLlImJm4uUi5DfHwobi5MLkM9ITEsbi5DPSEwLGpmKHRoaXMsbiksbj1pLlIpLG4uQz1pLkMsaS5DPW4uUi5DPSExLEJmKHRoaXMsaSksdD10aGlzLl87YnJlYWt9fWVsc2UgaWYobj1pLkwsbi5DJiYobi5DPSExLGkuQz0hMCxqZih0aGlzLGkpLG49aS5MKSxuLkwmJm4uTC5DfHxuLlImJm4uUi5DKXtuLkwmJm4uTC5DfHwobi5SLkM9ITEsbi5DPSEwLEJmKHRoaXMsbiksbj1pLkwpLG4uQz1pLkMsaS5DPW4uTC5DPSExLGpmKHRoaXMsaSksdD10aGlzLl87YnJlYWt9bi5DPSEwLHQ9aSxpPWkuVX13aGlsZSghdC5DKTt0JiYodC5DPSExKX19fTt2YXIgWm0sR20sSm0sUW0sS20sdHg9W10sbng9W10sZXg9MWUtNixyeD0xZS0xMjt2bC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOnZsLHBvbHlnb25zOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5lZGdlcztyZXR1cm4gdGhpcy5jZWxscy5tYXAoZnVuY3Rpb24obil7dmFyIGU9bi5oYWxmZWRnZXMubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBLZihuLHRbZV0pfSk7cmV0dXJuIGUuZGF0YT1uLnNpdGUuZGF0YSxlfSl9LHRyaWFuZ2xlczpmdW5jdGlvbigpe3ZhciB0PVtdLG49dGhpcy5lZGdlcztyZXR1cm4gdGhpcy5jZWxscy5mb3JFYWNoKGZ1bmN0aW9uKGUscil7Zm9yKHZhciBpLG89ZS5zaXRlLHU9ZS5oYWxmZWRnZXMsYT0tMSxjPXUubGVuZ3RoLHM9blt1W2MtMV1dLGY9cy5sZWZ0PT09bz9zLnJpZ2h0OnMubGVmdDsrK2E8YzspaT1mLHM9blt1W2FdXSxmPXMubGVmdD09PW8/cy5yaWdodDpzLmxlZnQscjxpLmluZGV4JiZyPGYuaW5kZXgmJnBsKG8saSxmKTwwJiZ0LnB1c2goW28uZGF0YSxpLmRhdGEsZi5kYXRhXSl9KSx0fSxsaW5rczpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVkZ2VzLmZpbHRlcihmdW5jdGlvbih0KXtyZXR1cm4gdC5yaWdodH0pLm1hcChmdW5jdGlvbih0KXtyZXR1cm57c291cmNlOnQubGVmdC5kYXRhLHRhcmdldDp0LnJpZ2h0LmRhdGF9fSl9fSxtbC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOm1sLHNjYWxlOmZ1bmN0aW9uKHQpe3JldHVybiAxPT09dD90aGlzOm5ldyBtbCh0aGlzLmsqdCx0aGlzLngsdGhpcy55KX0sdHJhbnNsYXRlOmZ1bmN0aW9uKHQsbil7cmV0dXJuIDA9PT10JjA9PT1uP3RoaXM6bmV3IG1sKHRoaXMuayx0aGlzLngrdGhpcy5rKnQsdGhpcy55K3RoaXMuaypuKX0sYXBwbHk6ZnVuY3Rpb24odCl7cmV0dXJuW3RbMF0qdGhpcy5rK3RoaXMueCx0WzFdKnRoaXMuayt0aGlzLnldfSxhcHBseVg6ZnVuY3Rpb24odCl7cmV0dXJuIHQqdGhpcy5rK3RoaXMueH0sYXBwbHlZOmZ1bmN0aW9uKHQpe3JldHVybiB0KnRoaXMuayt0aGlzLnl9LGludmVydDpmdW5jdGlvbih0KXtyZXR1cm5bKHRbMF0tdGhpcy54KS90aGlzLmssKHRbMV0tdGhpcy55KS90aGlzLmtdfSxpbnZlcnRYOmZ1bmN0aW9uKHQpe3JldHVybih0LXRoaXMueCkvdGhpcy5rfSxpbnZlcnRZOmZ1bmN0aW9uKHQpe3JldHVybih0LXRoaXMueSkvdGhpcy5rfSxyZXNjYWxlWDpmdW5jdGlvbih0KXtyZXR1cm4gdC5jb3B5KCkuZG9tYWluKHQucmFuZ2UoKS5tYXAodGhpcy5pbnZlcnRYLHRoaXMpLm1hcCh0LmludmVydCx0KSl9LHJlc2NhbGVZOmZ1bmN0aW9uKHQpe3JldHVybiB0LmNvcHkoKS5kb21haW4odC5yYW5nZSgpLm1hcCh0aGlzLmludmVydFksdGhpcykubWFwKHQuaW52ZXJ0LHQpKX0sdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4idHJhbnNsYXRlKCIrdGhpcy54KyIsIit0aGlzLnkrIikgc2NhbGUoIit0aGlzLmsrIikifX07dmFyIGl4PW5ldyBtbCgxLDAsMCk7eGwucHJvdG90eXBlPW1sLnByb3RvdHlwZTt2YXIgb3g9e25hbWU6ImRyYWcifSx1eD17bmFtZToic3BhY2UifSxheD17bmFtZToiaGFuZGxlIn0sY3g9e25hbWU6ImNlbnRlciJ9LHN4PXtuYW1lOiJ4IixoYW5kbGVzOlsiZSIsInciXS5tYXAoemwpLGlucHV0OmZ1bmN0aW9uKHQsbil7cmV0dXJuIHQmJltbdFswXSxuWzBdWzFdXSxbdFsxXSxuWzFdWzFdXV19LG91dHB1dDpmdW5jdGlvbih0KXtyZXR1cm4gdCYmW3RbMF1bMF0sdFsxXVswXV19fSxmeD17bmFtZToieSIsaGFuZGxlczpbIm4iLCJzIl0ubWFwKHpsKSxpbnB1dDpmdW5jdGlvbih0LG4pe3JldHVybiB0JiZbW25bMF1bMF0sdFswXV0sW25bMV1bMF0sdFsxXV1dfSxvdXRwdXQ6ZnVuY3Rpb24odCl7cmV0dXJuIHQmJlt0WzBdWzFdLHRbMV1bMV1dfX0sbHg9e25hbWU6Inh5IixoYW5kbGVzOlsibiIsImUiLCJzIiwidyIsIm53IiwibmUiLCJzZSIsInN3Il0ubWFwKHpsKSxpbnB1dDpmdW5jdGlvbih0KXtyZXR1cm4gdH0sb3V0cHV0OmZ1bmN0aW9uKHQpe3JldHVybiB0fX0saHg9e292ZXJsYXk6ImNyb3NzaGFpciIsc2VsZWN0aW9uOiJtb3ZlIixuOiJucy1yZXNpemUiLGU6ImV3LXJlc2l6ZSIsczoibnMtcmVzaXplIix3OiJldy1yZXNpemUiLG53OiJud3NlLXJlc2l6ZSIsbmU6Im5lc3ctcmVzaXplIixzZToibndzZS1yZXNpemUiLHN3OiJuZXN3LXJlc2l6ZSJ9LHB4PXtlOiJ3Iix3OiJlIixudzoibmUiLG5lOiJudyIsc2U6InN3Iixzdzoic2UifSxkeD17bjoicyIsczoibiIsbnc6InN3IixuZToic2UiLHNlOiJuZSIsc3c6Im53In0sdng9e292ZXJsYXk6MSxzZWxlY3Rpb246MSxuOm51bGwsZToxLHM6bnVsbCx3Oi0xLG53Oi0xLG5lOjEsc2U6MSxzdzotMX0sX3g9e292ZXJsYXk6MSxzZWxlY3Rpb246MSxuOi0xLGU6bnVsbCxzOjEsdzpudWxsLG53Oi0xLG5lOi0xLHNlOjEsc3c6MX0seXg9TWF0aC5jb3MsZ3g9TWF0aC5zaW4sbXg9TWF0aC5QSSx4eD1teC8yLGJ4PTIqbXgsd3g9TWF0aC5tYXgsTXg9QXJyYXkucHJvdG90eXBlLnNsaWNlO0psLnByb3RvdHlwZT17Y29uc3RydWN0b3I6SmwscmVzZXQ6ZnVuY3Rpb24oKXt0aGlzLnM9dGhpcy50PTB9LGFkZDpmdW5jdGlvbih0KXtRbChuYix0LHRoaXMudCksUWwodGhpcyxuYi5zLHRoaXMucyksdGhpcy5zP3RoaXMudCs9bmIudDp0aGlzLnM9bmIudH0sdmFsdWVPZjpmdW5jdGlvbigpe3JldHVybiB0aGlzLnN9fTt2YXIgVHgsa3gsU3gsTngsQXgsRXgsQ3gsengsUHgscXgsTHgsUngsVXgsRHgsT3gsRngsSXgsWXgsQngsangsSHgsWHgsVngsV3gsJHgsWngsR3gsSngsUXgsS3gsdGIsbmI9bmV3IEpsLGViPTFlLTYscmI9MWUtMTIsaWI9TWF0aC5QSSxvYj1pYi8yLHViPWliLzQsYWI9MippYixjYj0xODAvaWIsc2I9aWIvMTgwLGZiPU1hdGguYWJzLGxiPU1hdGguYXRhbixoYj1NYXRoLmF0YW4yLHBiPU1hdGguY29zLGRiPU1hdGguY2VpbCx2Yj1NYXRoLmV4cCxfYj1NYXRoLmxvZyx5Yj1NYXRoLnBvdyxnYj1NYXRoLnNpbixtYj1NYXRoLnNpZ258fGZ1bmN0aW9uKHQpe3JldHVybiB0PjA/MTp0PDA/LTE6MH0seGI9TWF0aC5zcXJ0LGJiPU1hdGgudGFuLHdiPXtGZWF0dXJlOmZ1bmN0aW9uKHQsbil7cmgodC5nZW9tZXRyeSxuKX0sRmVhdHVyZUNvbGxlY3Rpb246ZnVuY3Rpb24odCxuKXtmb3IodmFyIGU9dC5mZWF0dXJlcyxyPS0xLGk9ZS5sZW5ndGg7KytyPGk7KXJoKGVbcl0uZ2VvbWV0cnksbil9fSxNYj17U3BoZXJlOmZ1bmN0aW9uKHQsbil7bi5zcGhlcmUoKX0sUG9pbnQ6ZnVuY3Rpb24odCxuKXt0PXQuY29vcmRpbmF0ZXMsbi5wb2ludCh0WzBdLHRbMV0sdFsyXSl9LE11bHRpUG9pbnQ6ZnVuY3Rpb24odCxuKXtmb3IodmFyIGU9dC5jb29yZGluYXRlcyxyPS0xLGk9ZS5sZW5ndGg7KytyPGk7KXQ9ZVtyXSxuLnBvaW50KHRbMF0sdFsxXSx0WzJdKX0sTGluZVN0cmluZzpmdW5jdGlvbih0LG4pe2loKHQuY29vcmRpbmF0ZXMsbiwwKX0sTXVsdGlMaW5lU3RyaW5nOmZ1bmN0aW9uKHQsbil7Zm9yKHZhciBlPXQuY29vcmRpbmF0ZXMscj0tMSxpPWUubGVuZ3RoOysrcjxpOylpaChlW3JdLG4sMCl9LFBvbHlnb246ZnVuY3Rpb24odCxuKXtvaCh0LmNvb3JkaW5hdGVzLG4pfSxNdWx0aVBvbHlnb246ZnVuY3Rpb24odCxuKXtmb3IodmFyIGU9dC5jb29yZGluYXRlcyxyPS0xLGk9ZS5sZW5ndGg7KytyPGk7KW9oKGVbcl0sbil9LEdlb21ldHJ5Q29sbGVjdGlvbjpmdW5jdGlvbih0LG4pe2Zvcih2YXIgZT10Lmdlb21ldHJpZXMscj0tMSxpPWUubGVuZ3RoOysrcjxpOylyaChlW3JdLG4pfX0sVGI9R2woKSxrYj1HbCgpLFNiPXtwb2ludDplaCxsaW5lU3RhcnQ6ZWgsbGluZUVuZDplaCxwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24oKXtUYi5yZXNldCgpLFNiLmxpbmVTdGFydD1haCxTYi5saW5lRW5kPWNofSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7dmFyIHQ9K1RiO2tiLmFkZCh0PDA/YWIrdDp0KSx0aGlzLmxpbmVTdGFydD10aGlzLmxpbmVFbmQ9dGhpcy5wb2ludD1laH0sc3BoZXJlOmZ1bmN0aW9uKCl7a2IuYWRkKGFiKX19LE5iPUdsKCksQWI9e3BvaW50Om1oLGxpbmVTdGFydDpiaCxsaW5lRW5kOndoLHBvbHlnb25TdGFydDpmdW5jdGlvbigpe0FiLnBvaW50PU1oLEFiLmxpbmVTdGFydD1UaCxBYi5saW5lRW5kPWtoLE5iLnJlc2V0KCksU2IucG9seWdvblN0YXJ0KCl9LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXtTYi5wb2x5Z29uRW5kKCksQWIucG9pbnQ9bWgsQWIubGluZVN0YXJ0PWJoLEFiLmxpbmVFbmQ9d2gsVGI8MD8oRXg9LSh6eD0xODApLEN4PS0oUHg9OTApKTpOYj5lYj9QeD05MDpOYjwtZWImJihDeD0tOTApLE94WzBdPUV4LE94WzFdPXp4fX0sRWI9e3NwaGVyZTplaCxwb2ludDpDaCxsaW5lU3RhcnQ6UGgsbGluZUVuZDpSaCxwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24oKXtFYi5saW5lU3RhcnQ9VWgsRWIubGluZUVuZD1EaH0scG9seWdvbkVuZDpmdW5jdGlvbigpe0ViLmxpbmVTdGFydD1QaCxFYi5saW5lRW5kPVJofX07amguaW52ZXJ0PWpoO3ZhciBDYix6YixQYixxYixMYixSYixVYixEYixPYixGYixJYixZYj0xZTksQmI9LVliLGpiPUdsKCksSGI9e3NwaGVyZTplaCxwb2ludDplaCxsaW5lU3RhcnQ6dXAsbGluZUVuZDplaCxwb2x5Z29uU3RhcnQ6ZWgscG9seWdvbkVuZDplaH0sWGI9W251bGwsbnVsbF0sVmI9e3R5cGU6IkxpbmVTdHJpbmciLGNvb3JkaW5hdGVzOlhifSxXYj1HbCgpLCRiPUdsKCksWmI9e3BvaW50OmVoLGxpbmVTdGFydDplaCxsaW5lRW5kOmVoLHBvbHlnb25TdGFydDpmdW5jdGlvbigpe1piLmxpbmVTdGFydD15cCxaYi5saW5lRW5kPXhwfSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7WmIubGluZVN0YXJ0PVpiLmxpbmVFbmQ9WmIucG9pbnQ9ZWgsV2IuYWRkKGZiKCRiKSksJGIucmVzZXQoKX0scmVzdWx0OmZ1bmN0aW9uKCl7dmFyIHQ9V2IvMjtyZXR1cm4gV2IucmVzZXQoKSx0fX0sR2I9MS8wLEpiPUdiLFFiPS1HYixLYj1RYix0dz17cG9pbnQ6YnAsbGluZVN0YXJ0OmVoLGxpbmVFbmQ6ZWgscG9seWdvblN0YXJ0OmVoLHBvbHlnb25FbmQ6ZWgscmVzdWx0OmZ1bmN0aW9uKCl7dmFyIHQ9W1tHYixKYl0sW1FiLEtiXV07cmV0dXJuIFFiPUtiPS0oSmI9R2I9MS8wKSx0fX0sbnc9MCxldz0wLHJ3PTAsaXc9MCxvdz0wLHV3PTAsYXc9MCxjdz0wLHN3PTAsZnc9e3BvaW50OndwLGxpbmVTdGFydDpNcCxsaW5lRW5kOlNwLHBvbHlnb25TdGFydDpmdW5jdGlvbigpe2Z3LmxpbmVTdGFydD1OcCxmdy5saW5lRW5kPUFwfSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7ZncucG9pbnQ9d3AsZncubGluZVN0YXJ0PU1wLGZ3LmxpbmVFbmQ9U3B9LHJlc3VsdDpmdW5jdGlvbigpe3ZhciB0PXN3P1thdy9zdyxjdy9zd106dXc/W2l3L3V3LG93L3V3XTpydz9bbncvcncsZXcvcnddOltOYU4sTmFOXTtyZXR1cm4gbnc9ZXc9cnc9aXc9b3c9dXc9YXc9Y3c9c3c9MCx0fX0sbHc9R2woKSxodz1VcChmdW5jdGlvbigpe3JldHVybiEwfSxGcCxZcCxbLWliLC1vYl0pO1hwLnByb3RvdHlwZT17cG9pbnQ6ZnVuY3Rpb24odCxuKXt0aGlzLnN0cmVhbS5wb2ludCh0LG4pfSxzcGhlcmU6ZnVuY3Rpb24oKXt0aGlzLnN0cmVhbS5zcGhlcmUoKX0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5zdHJlYW0ubGluZVN0YXJ0KCl9LGxpbmVFbmQ6ZnVuY3Rpb24oKXt0aGlzLnN0cmVhbS5saW5lRW5kKCl9LHBvbHlnb25TdGFydDpmdW5jdGlvbigpe3RoaXMuc3RyZWFtLnBvbHlnb25TdGFydCgpfSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7dGhpcy5zdHJlYW0ucG9seWdvbkVuZCgpfX07dmFyIHB3PTE2LGR3PXBiKDMwKnNiKSx2dz1IcCh7cG9pbnQ6ZnVuY3Rpb24odCxuKXt0aGlzLnN0cmVhbS5wb2ludCh0KnNiLG4qc2IpfX0pLF93PXVkKGZ1bmN0aW9uKHQpe3JldHVybiB4YigyLygxK3QpKX0pO193LmludmVydD1hZChmdW5jdGlvbih0KXtyZXR1cm4gMip0aCh0LzIpfSk7dmFyIHl3PXVkKGZ1bmN0aW9uKHQpe3JldHVybih0PUtsKHQpKSYmdC9nYih0KX0pO3l3LmludmVydD1hZChmdW5jdGlvbih0KXtyZXR1cm4gdH0pLGZkLmludmVydD1mdW5jdGlvbih0LG4pe3JldHVyblt0LDIqbGIodmIobikpLW9iXX0sX2QuaW52ZXJ0PV9kLHhkLmludmVydD1hZChsYiksd2QuaW52ZXJ0PWFkKHRoKSxUZC5pbnZlcnQ9YWQoZnVuY3Rpb24odCl7cmV0dXJuIDIqbGIodCl9KSxTZC5pbnZlcnQ9ZnVuY3Rpb24odCxuKXtyZXR1cm5bLW4sMipsYih2Yih0KSktb2JdfSx0LnZlcnNpb249QWQsdC5iaXNlY3Q9Q2QsdC5iaXNlY3RSaWdodD1DZCx0LmJpc2VjdExlZnQ9emQsdC5hc2NlbmRpbmc9bix0LmJpc2VjdG9yPWUsdC5kZXNjZW5kaW5nPWksdC5kZXZpYXRpb249YSx0LmV4dGVudD1jLHQuaGlzdG9ncmFtPXYsdC50aHJlc2hvbGRGcmVlZG1hbkRpYWNvbmlzPXksdC50aHJlc2hvbGRTY290dD1nLHQudGhyZXNob2xkU3R1cmdlcz1kLHQubWF4PW0sdC5tZWFuPXgsdC5tZWRpYW49Yix0Lm1lcmdlPXcsdC5taW49TSx0LnBhaXJzPVQsdC5wZXJtdXRlPWssdC5xdWFudGlsZT1fLHQucmFuZ2U9bCx0LnNjYW49Uyx0LnNodWZmbGU9Tix0LnN1bT1BLHQudGlja3M9aCx0LnRpY2tTdGVwPXAsdC50cmFuc3Bvc2U9RSx0LnZhcmlhbmNlPXUsdC56aXA9eix0LmVudHJpZXM9aix0LmtleXM9WSx0LnZhbHVlcz1CLHQubWFwPXEsdC5zZXQ9SSx0Lm5lc3Q9TCx0LnJhbmRvbVVuaWZvcm09SCx0LnJhbmRvbU5vcm1hbD1YLHQucmFuZG9tTG9nTm9ybWFsPVYsdC5yYW5kb21CYXRlcz0kLHQucmFuZG9tSXJ3aW5IYWxsPVcsdC5yYW5kb21FeHBvbmVudGlhbD1aLHQuZWFzZUxpbmVhcj1HLHQuZWFzZVF1YWQ9Syx0LmVhc2VRdWFkSW49Six0LmVhc2VRdWFkT3V0PVEsdC5lYXNlUXVhZEluT3V0PUssdC5lYXNlQ3ViaWM9ZXQsdC5lYXNlQ3ViaWNJbj10dCx0LmVhc2VDdWJpY091dD1udCx0LmVhc2VDdWJpY0luT3V0PWV0LHQuZWFzZVBvbHk9amQsdC5lYXNlUG9seUluPVlkLHQuZWFzZVBvbHlPdXQ9QmQsdC5lYXNlUG9seUluT3V0PWpkLHQuZWFzZVNpbj1vdCx0LmVhc2VTaW5Jbj1ydCx0LmVhc2VTaW5PdXQ9aXQsdC5lYXNlU2luSW5PdXQ9b3QsdC5lYXNlRXhwPWN0LHQuZWFzZUV4cEluPXV0LHQuZWFzZUV4cE91dD1hdCx0LmVhc2VFeHBJbk91dD1jdCx0LmVhc2VDaXJjbGU9bHQsdC5lYXNlQ2lyY2xlSW49c3QsdC5lYXNlQ2lyY2xlT3V0PWZ0LHQuZWFzZUNpcmNsZUluT3V0PWx0LHQuZWFzZUJvdW5jZT1wdCx0LmVhc2VCb3VuY2VJbj1odCx0LmVhc2VCb3VuY2VPdXQ9cHQsdC5lYXNlQm91bmNlSW5PdXQ9ZHQsdC5lYXNlQmFjaz1vdix0LmVhc2VCYWNrSW49cnYsdC5lYXNlQmFja091dD1pdix0LmVhc2VCYWNrSW5PdXQ9b3YsdC5lYXNlRWxhc3RpYz1mdix0LmVhc2VFbGFzdGljSW49c3YsdC5lYXNlRWxhc3RpY091dD1mdix0LmVhc2VFbGFzdGljSW5PdXQ9bHYsdC5wb2x5Z29uQXJlYT12dCx0LnBvbHlnb25DZW50cm9pZD1fdCx0LnBvbHlnb25IdWxsPXh0LHQucG9seWdvbkNvbnRhaW5zPWJ0LHQucG9seWdvbkxlbmd0aD13dCx0LnBhdGg9VHQsdC5xdWFkdHJlZT1qdCx0LnF1ZXVlPVF0LHQuYXJjPXNuLHQuYXJlYT12bix0LmxpbmU9ZG4sdC5waWU9Z24sdC5yYWRpYWxBcmVhPU1uLHQucmFkaWFsTGluZT13bix0LnN5bWJvbD1Ubix0LnN5bWJvbHM9QnYsdC5zeW1ib2xDaXJjbGU9VHYsdC5zeW1ib2xDcm9zcz1rdix0LnN5bWJvbERpYW1vbmQ9QXYsdC5zeW1ib2xTcXVhcmU9THYsdC5zeW1ib2xTdGFyPXF2LHQuc3ltYm9sVHJpYW5nbGU9VXYsdC5zeW1ib2xXeWU9WXYsdC5jdXJ2ZUJhc2lzQ2xvc2VkPUNuLHQuY3VydmVCYXNpc09wZW49UG4sdC5jdXJ2ZUJhc2lzPUFuLHQuY3VydmVCdW5kbGU9anYsdC5jdXJ2ZUNhcmRpbmFsQ2xvc2VkPVh2LHQuY3VydmVDYXJkaW5hbE9wZW49VnYsdC5jdXJ2ZUNhcmRpbmFsPUh2LHQuY3VydmVDYXRtdWxsUm9tQ2xvc2VkPSR2LHQuY3VydmVDYXRtdWxsUm9tT3Blbj1adix0LmN1cnZlQ2F0bXVsbFJvbT1Xdix0LmN1cnZlTGluZWFyQ2xvc2VkPWpuLHQuY3VydmVMaW5lYXI9bG4sdC5jdXJ2ZU1vbm90b25lWD1Kbix0LmN1cnZlTW9ub3RvbmVZPVFuLHQuY3VydmVOYXR1cmFsPW5lLHQuY3VydmVTdGVwPXJlLHQuY3VydmVTdGVwQWZ0ZXI9b2UsdC5jdXJ2ZVN0ZXBCZWZvcmU9aWUsdC5zdGFjaz1zZSx0LnN0YWNrT2Zmc2V0RXhwYW5kPWZlLHQuc3RhY2tPZmZzZXROb25lPXVlLHQuc3RhY2tPZmZzZXRTaWxob3VldHRlPWxlLHQuc3RhY2tPZmZzZXRXaWdnbGU9aGUsdC5zdGFja09yZGVyQXNjZW5kaW5nPXBlLHQuc3RhY2tPcmRlckRlc2NlbmRpbmc9dmUsdC5zdGFja09yZGVySW5zaWRlT3V0PV9lLHQuc3RhY2tPcmRlck5vbmU9YWUsdC5zdGFja09yZGVyUmV2ZXJzZT15ZSx0LmNvbG9yPWJlLHQucmdiPWtlLHQuaHNsPUVlLHQubGFiPXFlLHQuaGNsPUllLHQuY3ViZWhlbGl4PWplLHQuaW50ZXJwb2xhdGU9Y3IsdC5pbnRlcnBvbGF0ZUFycmF5PW5yLHQuaW50ZXJwb2xhdGVEYXRlPWVyLHQuaW50ZXJwb2xhdGVOdW1iZXI9cnIsdC5pbnRlcnBvbGF0ZU9iamVjdD1pcix0LmludGVycG9sYXRlUm91bmQ9c3IsdC5pbnRlcnBvbGF0ZVN0cmluZz1hcix0LmludGVycG9sYXRlVHJhbnNmb3JtQ3NzPURfLHQuaW50ZXJwb2xhdGVUcmFuc2Zvcm1Tdmc9T18sdC5pbnRlcnBvbGF0ZVpvb209eXIsdC5pbnRlcnBvbGF0ZVJnYj1DXyx0LmludGVycG9sYXRlUmdiQmFzaXM9el8sdC5pbnRlcnBvbGF0ZVJnYkJhc2lzQ2xvc2VkPVBfLHQuaW50ZXJwb2xhdGVIc2w9al8sdC5pbnRlcnBvbGF0ZUhzbExvbmc9SF8sdC5pbnRlcnBvbGF0ZUxhYj1tcix0LmludGVycG9sYXRlSGNsPVhfLHQuaW50ZXJwb2xhdGVIY2xMb25nPVZfLHQuaW50ZXJwb2xhdGVDdWJlaGVsaXg9V18sdC5pbnRlcnBvbGF0ZUN1YmVoZWxpeExvbmc9JF8sdC5pbnRlcnBvbGF0ZUJhc2lzPVZlLHQuaW50ZXJwb2xhdGVCYXNpc0Nsb3NlZD1XZSx0LnF1YW50aXplPXdyLHQuZGlzcGF0Y2g9TXIsdC5kc3ZGb3JtYXQ9enIsdC5jc3ZQYXJzZT1LXyx0LmNzdlBhcnNlUm93cz10eSx0LmNzdkZvcm1hdD1ueSx0LmNzdkZvcm1hdFJvd3M9ZXksdC50c3ZQYXJzZT1peSx0LnRzdlBhcnNlUm93cz1veSx0LnRzdkZvcm1hdD11eSx0LnRzdkZvcm1hdFJvd3M9YXksdC5yZXF1ZXN0PVByLHQuaHRtbD1jeSx0Lmpzb249c3ksdC50ZXh0PWZ5LHQueG1sPWx5LHQuY3N2PWh5LHQudHN2PXB5LHQubm93PU9yLHQudGltZXI9WXIsdC50aW1lckZsdXNoPUJyLHQudGltZW91dD1Xcix0LmludGVydmFsPSRyLHQudGltZUludGVydmFsPVpyLHQudGltZU1pbGxpc2Vjb25kPWt5LHQudGltZU1pbGxpc2Vjb25kcz1TeSx0LnRpbWVTZWNvbmQ9UHksdC50aW1lU2Vjb25kcz1xeSx0LnRpbWVNaW51dGU9THksdC50aW1lTWludXRlcz1SeSx0LnRpbWVIb3VyPVV5LHQudGltZUhvdXJzPUR5LHQudGltZURheT1PeSx0LnRpbWVEYXlzPUZ5LHQudGltZVdlZWs9SXk7dC50aW1lV2Vla3M9V3k7dC50aW1lU3VuZGF5PUl5LHQudGltZVN1bmRheXM9V3ksdC50aW1lTW9uZGF5PVl5LHQudGltZU1vbmRheXM9JHksdC50aW1lVHVlc2RheT1CeSx0LnRpbWVUdWVzZGF5cz1aeSx0LnRpbWVXZWRuZXNkYXk9anksdC50aW1lV2VkbmVzZGF5cz1HeSx0LnRpbWVUaHVyc2RheT1IeSx0LnRpbWVUaHVyc2RheXM9SnksdC50aW1lRnJpZGF5PVh5LHQudGltZUZyaWRheXM9UXksdC50aW1lU2F0dXJkYXk9VnksdC50aW1lU2F0dXJkYXlzPUt5LHQudGltZU1vbnRoPXRnLHQudGltZU1vbnRocz1uZyx0LnRpbWVZZWFyPWVnLHQudGltZVllYXJzPXJnLHQudXRjTWlsbGlzZWNvbmQ9a3ksdC51dGNNaWxsaXNlY29uZHM9U3ksdC51dGNTZWNvbmQ9UHksdC51dGNTZWNvbmRzPXF5LHQudXRjTWludXRlPWlnLHQudXRjTWludXRlcz1vZyx0LnV0Y0hvdXI9dWcsdC51dGNIb3Vycz1hZyx0LnV0Y0RheT1jZyx0LnV0Y0RheXM9c2csdC51dGNXZWVrPWZnLHQudXRjV2Vla3M9eWcsdC51dGNTdW5kYXk9ZmcsdC51dGNTdW5kYXlzPXlnLHQudXRjTW9uZGF5PWxnLHQudXRjTW9uZGF5cz1nZyx0LnV0Y1R1ZXNkYXk9aGcsdC51dGNUdWVzZGF5cz1tZyx0LnV0Y1dlZG5lc2RheT1wZyx0LnV0Y1dlZG5lc2RheXM9eGcsdC51dGNUaHVyc2RheT1kZyx0LnV0Y1RodXJzZGF5cz1iZyx0LnV0Y0ZyaWRheT12Zyx0LnV0Y0ZyaWRheXM9d2csdC51dGNTYXR1cmRheT1fZyx0LnV0Y1NhdHVyZGF5cz1NZyx0LnV0Y01vbnRoPVRnLHQudXRjTW9udGhzPWtnLHQudXRjWWVhcj1TZyx0LnV0Y1llYXJzPUFnLHQuZm9ybWF0TG9jYWxlPWFpLHQuZm9ybWF0RGVmYXVsdExvY2FsZT1jaSx0LmZvcm1hdFNwZWNpZmllcj1paSx0LnByZWNpc2lvbkZpeGVkPXNpLHQucHJlY2lzaW9uUHJlZml4PWZpLHQucHJlY2lzaW9uUm91bmQ9bGksdC5pc29Gb3JtYXQ9RmcsdC5pc29QYXJzZT1JZyx0LnRpbWVGb3JtYXRMb2NhbGU9dmksdC50aW1lRm9ybWF0RGVmYXVsdExvY2FsZT1zbyx0LnNjYWxlQmFuZD1wbyx0LnNjYWxlUG9pbnQ9X28sdC5zY2FsZUlkZW50aXR5PUVvLHQuc2NhbGVMaW5lYXI9QW8sdC5zY2FsZUxvZz1Ebyx0LnNjYWxlT3JkaW5hbD1obyx0LnNjYWxlSW1wbGljaXQ9SGcsdC5zY2FsZVBvdz1Gbyx0LnNjYWxlU3FydD1Jbyx0LnNjYWxlUXVhbnRpbGU9WW8sdC5zY2FsZVF1YW50aXplPUJvLHQuc2NhbGVUaHJlc2hvbGQ9am8sdC5zY2FsZVRpbWU9V28sdC5zY2FsZVV0Yz0kbyx0LnNjaGVtZUNhdGVnb3J5MTA9S2csdC5zY2hlbWVDYXRlZ29yeTIwYj10bSx0LnNjaGVtZUNhdGVnb3J5MjBjPW5tLHQuc2NoZW1lQ2F0ZWdvcnkyMD1lbSx0LnNjYWxlU2VxdWVudGlhbD1Rbyx0LmludGVycG9sYXRlQ3ViZWhlbGl4RGVmYXVsdD1ybSx0LmludGVycG9sYXRlUmFpbmJvdz1Hbyx0LmludGVycG9sYXRlV2FybT1pbSx0LmludGVycG9sYXRlQ29vbD1vbSx0LmludGVycG9sYXRlVmlyaWRpcz1hbSx0LmludGVycG9sYXRlTWFnbWE9Y20sdC5pbnRlcnBvbGF0ZUluZmVybm89c20sdC5pbnRlcnBvbGF0ZVBsYXNtYT1mbSx0LmNyZWF0b3I9ZXUsdC5jdXN0b21FdmVudD1sdSx0LmxvY2FsPXJ1LHQubWF0Y2hlcj15bSx0Lm1vdXNlPWR1LHQubmFtZXNwYWNlPUtvLHQubmFtZXNwYWNlcz1obSx0LnNlbGVjdD1SYSx0LnNlbGVjdEFsbD1VYSx0LnNlbGVjdGlvbj1MYSx0LnNlbGVjdG9yPV91LHQuc2VsZWN0b3JBbGw9bXUsdC50b3VjaD1EYSx0LnRvdWNoZXM9T2EsdC53aW5kb3c9V3UsdC5hY3RpdmU9WWMsdC5pbnRlcnJ1cHQ9SGEsdC50cmFuc2l0aW9uPURjLHQuYXhpc1RvcD0kYyx0LmF4aXNSaWdodD1aYyx0LmF4aXNCb3R0b209R2MsdC5heGlzTGVmdD1KYyx0LmNsdXN0ZXI9b3MsdC5oaWVyYXJjaHk9eXMsdC5wYWNrPUJzLHQucGFja1NpYmxpbmdzPVVzLHQucGFja0VuY2xvc2U9a3MsdC5wYXJ0aXRpb249JHMsdC5zdHJhdGlmeT1Kcyx0LnRyZWU9YWYsdC50cmVlbWFwPWZmLHQudHJlZW1hcEJpbmFyeT1sZix0LnRyZWVtYXBEaWNlPVdzLHQudHJlZW1hcFNsaWNlPWNmLHQudHJlZW1hcFNsaWNlRGljZT1oZix0LnRyZWVtYXBTcXVhcmlmeT1YbSx0LnRyZWVtYXBSZXNxdWFyaWZ5PVZtLHQuZm9yY2VDZW50ZXI9cGYsdC5mb3JjZUNvbGxpZGU9Z2YsdC5mb3JjZUxpbms9eGYsdC5mb3JjZU1hbnlCb2R5PVRmLHQuZm9yY2VTaW11bGF0aW9uPU1mLHQuZm9yY2VYPWtmLHQuZm9yY2VZPVNmLHQuZHJhZz1VZix0LmRyYWdEaXNhYmxlPUVmLHQuZHJhZ0VuYWJsZT1DZix0LnZvcm9ub2k9X2wsdC56b29tPVNsLHQuem9vbUlkZW50aXR5PWl4LHQuem9vbVRyYW5zZm9ybT14bCx0LmJydXNoPUZsLHQuYnJ1c2hYPURsLHQuYnJ1c2hZPU9sLHQuYnJ1c2hTZWxlY3Rpb249VWwsdC5jaG9yZD1CbCx0LnJpYmJvbj1abCx0Lmdlb0FsYmVycz1yZCx0Lmdlb0FsYmVyc1VzYT1vZCx0Lmdlb0FyZWE9bGgsdC5nZW9BemltdXRoYWxFcXVhbEFyZWE9Y2QsdC5nZW9BemltdXRoYWxFcXVhbEFyZWFSYXc9X3csdC5nZW9BemltdXRoYWxFcXVpZGlzdGFudD1zZCx0Lmdlb0F6aW11dGhhbEVxdWlkaXN0YW50UmF3PXl3LHQuZ2VvQm91bmRzPUVoLHQuZ2VvQ2VudHJvaWQ9SWgsdC5nZW9DaXJjbGU9SmgsdC5nZW9DbGlwRXh0ZW50PW9wLHQuZ2VvQ29uaWNDb25mb3JtYWw9dmQsdC5nZW9Db25pY0NvbmZvcm1hbFJhdz1kZCx0Lmdlb0NvbmljRXF1YWxBcmVhPWVkLHQuZ2VvQ29uaWNFcXVhbEFyZWFSYXc9bmQsdC5nZW9Db25pY0VxdWlkaXN0YW50PW1kLHQuZ2VvQ29uaWNFcXVpZGlzdGFudFJhdz1nZCx0Lmdlb0Rpc3RhbmNlPWxwLHQuZ2VvRXF1aXJlY3Rhbmd1bGFyPXlkLHQuZ2VvRXF1aXJlY3Rhbmd1bGFyUmF3PV9kLHQuZ2VvR25vbW9uaWM9YmQsdC5nZW9Hbm9tb25pY1Jhdz14ZCx0Lmdlb0dyYXRpY3VsZT1kcCx0Lmdlb0ludGVycG9sYXRlPXZwLHQuZ2VvTGVuZ3RoPWZwLHQuZ2VvTWVyY2F0b3I9bGQsdC5nZW9NZXJjYXRvclJhdz1mZCx0Lmdlb09ydGhvZ3JhcGhpYz1NZCx0Lmdlb09ydGhvZ3JhcGhpY1Jhdz13ZCx0Lmdlb1BhdGg9THAsdC5nZW9Qcm9qZWN0aW9uPVFwLHQuZ2VvUHJvamVjdGlvbk11dGF0b3I9S3AsdC5nZW9Sb3RhdGlvbj0kaCx0Lmdlb1N0ZXJlb2dyYXBoaWM9a2QsdC5nZW9TdGVyZW9ncmFwaGljUmF3PVRkLHQuZ2VvU3RyZWFtPXVoLHQuZ2VvVHJhbnNmb3JtPWpwLHQuZ2VvVHJhbnN2ZXJzZU1lcmNhdG9yPU5kLHQuZ2VvVHJhbnN2ZXJzZU1lcmNhdG9yUmF3PVNkLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KX0pOw=="></script>
<script src="data:application/x-javascript;base64,KGZ1bmN0aW9uIHdlYnBhY2tVbml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uKHJvb3QsIGZhY3RvcnkpIHsKCWlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0JykKCQltb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkocmVxdWlyZSgiZDMtc2VsZWN0aW9uIiksIHJlcXVpcmUoImQzLWRpc3BhdGNoIikpOwoJZWxzZSBpZih0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpCgkJZGVmaW5lKFsiZDMtc2VsZWN0aW9uIiwgImQzLWRpc3BhdGNoIl0sIGZhY3RvcnkpOwoJZWxzZSBpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcpCgkJZXhwb3J0c1siZDNLaXQiXSA9IGZhY3RvcnkocmVxdWlyZSgiZDMtc2VsZWN0aW9uIiksIHJlcXVpcmUoImQzLWRpc3BhdGNoIikpOwoJZWxzZQoJCXJvb3RbImQzS2l0Il0gPSBmYWN0b3J5KHJvb3RbImQzIl0sIHJvb3RbImQzIl0pOwp9KSh0aGlzLCBmdW5jdGlvbihfX1dFQlBBQ0tfRVhURVJOQUxfTU9EVUxFXzJfXywgX19XRUJQQUNLX0VYVEVSTkFMX01PRFVMRV8zX18pIHsKcmV0dXJuIC8qKioqKiovIChmdW5jdGlvbihtb2R1bGVzKSB7IC8vIHdlYnBhY2tCb290c3RyYXAKLyoqKioqKi8gCS8vIFRoZSBtb2R1bGUgY2FjaGUKLyoqKioqKi8gCXZhciBpbnN0YWxsZWRNb2R1bGVzID0ge307CgovKioqKioqLyAJLy8gVGhlIHJlcXVpcmUgZnVuY3Rpb24KLyoqKioqKi8gCWZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHsKCi8qKioqKiovIAkJLy8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlCi8qKioqKiovIAkJaWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pCi8qKioqKiovIAkJCXJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzOwoKLyoqKioqKi8gCQkvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKQovKioqKioqLyAJCXZhciBtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHsKLyoqKioqKi8gCQkJZXhwb3J0czoge30sCi8qKioqKiovIAkJCWlkOiBtb2R1bGVJZCwKLyoqKioqKi8gCQkJbG9hZGVkOiBmYWxzZQovKioqKioqLyAJCX07CgovKioqKioqLyAJCS8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvbgovKioqKioqLyAJCW1vZHVsZXNbbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pOwoKLyoqKioqKi8gCQkvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkCi8qKioqKiovIAkJbW9kdWxlLmxvYWRlZCA9IHRydWU7CgovKioqKioqLyAJCS8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlCi8qKioqKiovIAkJcmV0dXJuIG1vZHVsZS5leHBvcnRzOwovKioqKioqLyAJfQoKCi8qKioqKiovIAkvLyBleHBvc2UgdGhlIG1vZHVsZXMgb2JqZWN0IChfX3dlYnBhY2tfbW9kdWxlc19fKQovKioqKioqLyAJX193ZWJwYWNrX3JlcXVpcmVfXy5tID0gbW9kdWxlczsKCi8qKioqKiovIAkvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZQovKioqKioqLyAJX193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlczsKCi8qKioqKiovIAkvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfXwovKioqKioqLyAJX193ZWJwYWNrX3JlcXVpcmVfXy5wID0gIiI7CgovKioqKioqLyAJLy8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzCi8qKioqKiovIAlyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXygwKTsKLyoqKioqKi8gfSkKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLyoqKioqKi8gKFsKLyogMCAqLwovKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCgkndXNlIHN0cmljdCc7CgoJT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICJfX2VzTW9kdWxlIiwgewoJICB2YWx1ZTogdHJ1ZQoJfSk7CglleHBvcnRzLmhlbHBlciA9IGV4cG9ydHMuTGF5ZXJPcmdhbml6ZXIgPSBleHBvcnRzLkNoYXJ0bGV0ID0gZXhwb3J0cy5Ta2VsZXRvbiA9IGV4cG9ydHMuZmFjdG9yeSA9IHVuZGVmaW5lZDsKCgl2YXIgX3NrZWxldG9uID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKTsKCglPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ1NrZWxldG9uJywgewoJICBlbnVtZXJhYmxlOiB0cnVlLAoJICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHsKCSAgICByZXR1cm4gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfc2tlbGV0b24pLmRlZmF1bHQ7CgkgIH0KCX0pOwoKCXZhciBfY2hhcnRsZXQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYpOwoKCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnQ2hhcnRsZXQnLCB7CgkgIGVudW1lcmFibGU6IHRydWUsCgkgIGdldDogZnVuY3Rpb24gZ2V0KCkgewoJICAgIHJldHVybiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9jaGFydGxldCkuZGVmYXVsdDsKCSAgfQoJfSk7CgoJdmFyIF9sYXllck9yZ2FuaXplciA9IF9fd2VicGFja19yZXF1aXJlX18oNCk7CgoJT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdMYXllck9yZ2FuaXplcicsIHsKCSAgZW51bWVyYWJsZTogdHJ1ZSwKCSAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7CgkgICAgcmV0dXJuIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2xheWVyT3JnYW5pemVyKS5kZWZhdWx0OwoJICB9Cgl9KTsKCgl2YXIgX2hlbHBlciA9IF9fd2VicGFja19yZXF1aXJlX18oNSk7CgoJT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdoZWxwZXInLCB7CgkgIGVudW1lcmFibGU6IHRydWUsCgkgIGdldDogZnVuY3Rpb24gZ2V0KCkgewoJICAgIHJldHVybiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9oZWxwZXIpLmRlZmF1bHQ7CgkgIH0KCX0pOwoKCXZhciBfZmFjdG9yeSA9IF9fd2VicGFja19yZXF1aXJlX18oNyk7CgoJZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH0KCgl2YXIgZmFjdG9yeSA9IGV4cG9ydHMuZmFjdG9yeSA9IHsgY3JlYXRlQ2hhcnQ6IF9mYWN0b3J5LmNyZWF0ZUNoYXJ0IH07CgovKioqLyB9LAovKiAxICovCi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKCSd1c2Ugc3RyaWN0JzsKCglPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgIl9fZXNNb2R1bGUiLCB7CgkgIHZhbHVlOiB0cnVlCgl9KTsKCgl2YXIgX2QzU2VsZWN0aW9uID0gX193ZWJwYWNrX3JlcXVpcmVfXygyKTsKCgl2YXIgX2QzRGlzcGF0Y2ggPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMpOwoKCXZhciBfbGF5ZXJPcmdhbml6ZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQpOwoKCXZhciBfbGF5ZXJPcmdhbml6ZXIyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfbGF5ZXJPcmdhbml6ZXIpOwoKCXZhciBfaGVscGVyID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1KTsKCgl2YXIgX2hlbHBlcjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9oZWxwZXIpOwoKCWZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9CgoJLy8gQ29uc3RhbnRzCgl2YXIgREVGQVVMVF9PUFRJT05TID0gewoJICBtYXJnaW46IHsgdG9wOiAzMCwgcmlnaHQ6IDMwLCBib3R0b206IDMwLCBsZWZ0OiAzMCB9LAoJICBvZmZzZXQ6IFswLjUsIDAuNV0sCgkgIGluaXRpYWxXaWR0aDogNzIwLAoJICBpbml0aWFsSGVpZ2h0OiA1MDAKCX07CgoJdmFyIEJBU0VfRVZFTlRTID0gWydkYXRhJywgJ29wdGlvbnMnLCAncmVzaXplJ107CgoJLy8gQ29yZSBTa2VsZXRvbgoJZnVuY3Rpb24gU2tlbGV0b24oY2hhcnROb2RlLCBjdXN0b21PcHRpb25zLCBjdXN0b21FdmVudHMpIHsKCSAgdmFyIHNrZWxldG9uID0ge307CgoJICBjaGFydE5vZGUgPSBfaGVscGVyMi5kZWZhdWx0LiQoY2hhcnROb2RlKTsKCgkgIHZhciBfZGF0YSA9IG51bGw7CgoJICB2YXIgX29wdGlvbnMgPSBfaGVscGVyMi5kZWZhdWx0LmRlZXBFeHRlbmQoe30sIERFRkFVTFRfT1BUSU9OUywgY3VzdG9tT3B0aW9ucyk7CgoJICB2YXIgX3RvdGFsV2lkdGggPSAwOwoJICB2YXIgX3RvdGFsSGVpZ2h0ID0gMDsKCSAgdmFyIF9pbm5lcldpZHRoID0gMDsKCSAgdmFyIF9pbm5lckhlaWdodCA9IDA7CgoJICB2YXIgX2F1dG9SZXNpemVEZXRlY3Rpb24gPSAnd2luZG93JzsgLy8gZWl0aGVyICd3aW5kb3cnIG9yICdkb20nOwoJICB2YXIgX2F1dG9SZXNpemVNb2RlID0gZmFsc2U7CgkgIHZhciBfYXV0b1Jlc2l6ZUZuID0gbnVsbDsKCSAgdmFyIF9hdXRvUmVzaXplVG9Bc3BlY3RSYXRpbyA9IGZhbHNlOwoKCSAgLy8gYWRkIHN2ZyBlbGVtZW50CgkgIHZhciBfc3ZnID0gKDAsIF9kM1NlbGVjdGlvbi5zZWxlY3QpKGNoYXJ0Tm9kZSkuYXBwZW5kKCdzdmcnKTsKCSAgdmFyIF92aXMgPSBfc3ZnLmFwcGVuZCgnZycpOwoJICB1cGRhdGVPZmZzZXQoKTsKCgkgIHZhciBfbGF5ZXJzID0gbmV3IF9sYXllck9yZ2FuaXplcjIuZGVmYXVsdChfdmlzKTsKCgkgIC8vIHNldHVwIGV2ZW50IGRpc3BhdGNoZXIKCSAgdmFyIF9jdXN0b21FdmVudHMgPSBjdXN0b21FdmVudHMgPyBjdXN0b21FdmVudHMuY29uY2F0KEJBU0VfRVZFTlRTKSA6IEJBU0VfRVZFTlRTOwoJICB2YXIgX2Rpc3BhdGNoID0gX2QzRGlzcGF0Y2guZGlzcGF0Y2guYXBwbHkodGhpcywgX2N1c3RvbUV2ZW50cyk7CgoJICAvLyBzZXQgZGVmYXVsdCBkaW1lbnNpb24KCSAgZGltZW5zaW9uKFtfb3B0aW9ucy5pbml0aWFsV2lkdGgsIF9vcHRpb25zLmluaXRpYWxIZWlnaHRdKTsKCgkgIGZ1bmN0aW9uIGRhdGEobmV3VmFsdWUsIGRvTm90RGlzcGF0Y2gpIHsKCSAgICAvLyBnZXR0ZXIKCSAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMCkgewoJICAgICAgcmV0dXJuIF9kYXRhOwoJICAgIH0KCSAgICAvLyBzZXR0ZXIKCSAgICBfZGF0YSA9IG5ld1ZhbHVlOwoJICAgIC8vIGRpc3BhdGNoCgkgICAgaWYgKCFkb05vdERpc3BhdGNoKSB7CgkgICAgICBfZGlzcGF0Y2guY2FsbCgnZGF0YScsIHRoaXMsIG5ld1ZhbHVlKTsKCSAgICB9CgkgICAgcmV0dXJuIHNrZWxldG9uOwoJICB9CgoJICBmdW5jdGlvbiBvcHRpb25zKG5ld1ZhbHVlLCBkb05vdERpc3BhdGNoKSB7CgkgICAgLy8gZ2V0dGVyCgkgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApIHsKCSAgICAgIHJldHVybiBfb3B0aW9uczsKCSAgICB9CgoJICAgIC8vIHNldHRlcgoJICAgIF9vcHRpb25zID0gX2hlbHBlcjIuZGVmYXVsdC5kZWVwRXh0ZW5kKF9vcHRpb25zLCBuZXdWYWx1ZSk7CgoJICAgIGlmIChuZXdWYWx1ZSkgewoJICAgICAgaWYgKG5ld1ZhbHVlLm1hcmdpbikgewoJICAgICAgICB1cGRhdGVNYXJnaW4oZG9Ob3REaXNwYXRjaCk7CgkgICAgICB9IGVsc2UgaWYgKG5ld1ZhbHVlLm9mZnNldCkgewoJICAgICAgICAvLyBXaGVuIHRoZSBtYXJnaW4gaXMgY2hhbmdlZCwKCSAgICAgICAgLy8gdXBkYXRlT2Zmc2V0KCkgaXMgYWxyZWFkeSBjYWxsZWQgd2l0aGluIHVwZGF0ZU1hcmdpbigpCgkgICAgICAgIC8vIHNvICJlbHNlIGlmIiBpcyB1c2VkIGhlcmUgaW5zdGVhZCBvZiAiaWYiLgoJICAgICAgICAvLyBUaGlzIHdpbGwgY2FsbCB1cGRhdGVPZmZzZXQoKSBtYW51YWxseQoJICAgICAgICAvLyBvbmx5IHdoZW4gbWFyZ2luIGlzIG5vdCBjaGFuZ2VkIGFuZCBvZmZzZXQgaXMgY2hhbmdlZC4KCSAgICAgICAgdXBkYXRlT2Zmc2V0KCk7CgkgICAgICB9CgkgICAgfQoKCSAgICAvLyBkaXNwYXRjaAoJICAgIGlmICghZG9Ob3REaXNwYXRjaCkgewoJICAgICAgX2Rpc3BhdGNoLmNhbGwoJ29wdGlvbnMnLCB0aGlzLCBuZXdWYWx1ZSk7CgkgICAgfQoJICAgIHJldHVybiBza2VsZXRvbjsKCSAgfQoKCSAgZnVuY3Rpb24gdXBkYXRlT2Zmc2V0KCkgewoJICAgIF92aXMuYXR0cigndHJhbnNmb3JtJywgJ3RyYW5zbGF0ZSgnICsgKF9vcHRpb25zLm1hcmdpbi5sZWZ0ICsgX29wdGlvbnMub2Zmc2V0WzBdKSArICcsJyArIChfb3B0aW9ucy5tYXJnaW4udG9wICsgX29wdGlvbnMub2Zmc2V0WzFdKSArICcpJyk7CgkgIH0KCgkgIGZ1bmN0aW9uIHVwZGF0ZU1hcmdpbihkb05vdERpc3BhdGNoKSB7CgkgICAgdXBkYXRlT2Zmc2V0KCk7CgoJICAgIF9pbm5lcldpZHRoID0gX3RvdGFsV2lkdGggLSBfb3B0aW9ucy5tYXJnaW4ubGVmdCAtIF9vcHRpb25zLm1hcmdpbi5yaWdodDsKCSAgICBfaW5uZXJIZWlnaHQgPSBfdG90YWxIZWlnaHQgLSBfb3B0aW9ucy5tYXJnaW4udG9wIC0gX29wdGlvbnMubWFyZ2luLmJvdHRvbTsKCgkgICAgaWYgKCFkb05vdERpc3BhdGNoKSB7CgkgICAgICBfZGlzcGF0Y2guY2FsbCgncmVzaXplJywgdGhpcywgW190b3RhbFdpZHRoLCBfdG90YWxIZWlnaHQsIF9pbm5lcldpZHRoLCBfaW5uZXJIZWlnaHRdKTsKCSAgICB9CgkgIH0KCgkgIGZ1bmN0aW9uIG1hcmdpbihuZXdWYWx1ZSwgZG9Ob3REaXNwYXRjaCkgewoJICAgIC8vIGdldHRlcgoJICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKSB7CgkgICAgICByZXR1cm4gX29wdGlvbnMubWFyZ2luOwoJICAgIH0KCgkgICAgLy8gc2V0dGVyCgkgICAgX29wdGlvbnMubWFyZ2luID0gX2hlbHBlcjIuZGVmYXVsdC5leHRlbmQoX29wdGlvbnMubWFyZ2luLCBuZXdWYWx1ZSk7CgkgICAgdXBkYXRlTWFyZ2luKGRvTm90RGlzcGF0Y2gpOwoKCSAgICByZXR1cm4gc2tlbGV0b247CgkgIH0KCgkgIGZ1bmN0aW9uIG9mZnNldChuZXdWYWx1ZSkgewoJICAgIC8vIGdldHRlcgoJICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKSB7CgkgICAgICByZXR1cm4gX29wdGlvbnMub2Zmc2V0OwoJICAgIH0KCgkgICAgLy8gc2V0dGVyCgkgICAgX29wdGlvbnMub2Zmc2V0ID0gbmV3VmFsdWU7CgkgICAgdXBkYXRlT2Zmc2V0KCk7CgoJICAgIHJldHVybiBza2VsZXRvbjsKCSAgfQoKCSAgZnVuY3Rpb24gd2lkdGgobmV3VmFsdWUsIGRvTm90RGlzcGF0Y2gpIHsKCSAgICAvLyBnZXR0ZXIKCSAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMCB8fCBuZXdWYWx1ZSA9PT0gbnVsbCB8fCBuZXdWYWx1ZSA9PT0gdW5kZWZpbmVkKSB7CgkgICAgICByZXR1cm4gX3RvdGFsV2lkdGg7CgkgICAgfQoKCSAgICAvLyBzZXR0ZXIKCSAgICBpZiAoX2hlbHBlcjIuZGVmYXVsdC5pc051bWJlcihuZXdWYWx1ZSkpIHsKCSAgICAgIF90b3RhbFdpZHRoID0gK25ld1ZhbHVlOwoJICAgIH0gZWxzZSBpZiAobmV3VmFsdWUudHJpbSgpLnRvTG93ZXJDYXNlKCkgPT0gJ2F1dG8nKSB7CgkgICAgICBfdG90YWxXaWR0aCA9IGNoYXJ0Tm9kZS5jbGllbnRXaWR0aDsKCSAgICB9IGVsc2UgewoJICAgICAgX3RvdGFsV2lkdGggPSArKG5ld1ZhbHVlICsgJycpLnJlcGxhY2UoL3B4L2dpLCAnJykudHJpbSgpOwoJICAgIH0KCgkgICAgaWYgKF9oZWxwZXIyLmRlZmF1bHQuaXNOYU4oX3RvdGFsV2lkdGgpKSB7CgkgICAgICB0aHJvdyBFcnJvcignaW52YWxpZCB3aWR0aDogJyArIF90b3RhbFdpZHRoKTsKCSAgICB9CgoJICAgIC8vIHJvdW5kIHRvIGludGVnZXIKCSAgICBfdG90YWxXaWR0aCA9IE1hdGguZmxvb3IoX3RvdGFsV2lkdGgpOwoJICAgIF9pbm5lcldpZHRoID0gX3RvdGFsV2lkdGggLSBfb3B0aW9ucy5tYXJnaW4ubGVmdCAtIF9vcHRpb25zLm1hcmdpbi5yaWdodDsKCgkgICAgX3N2Zy5hdHRyKCd3aWR0aCcsIF90b3RhbFdpZHRoKTsKCgkgICAgLy8gZGlzcGF0Y2gKCSAgICBpZiAoIWRvTm90RGlzcGF0Y2gpIHsKCSAgICAgIF9kaXNwYXRjaC5jYWxsKCdyZXNpemUnLCB0aGlzLCBbX3RvdGFsV2lkdGgsIF90b3RhbEhlaWdodCwgX2lubmVyV2lkdGgsIF9pbm5lckhlaWdodF0pOwoJICAgIH0KCSAgICByZXR1cm4gc2tlbGV0b247CgkgIH0KCgkgIGZ1bmN0aW9uIGhlaWdodChuZXdWYWx1ZSwgZG9Ob3REaXNwYXRjaCkgewoJICAgIC8vIGdldHRlcgoJICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwIHx8IG5ld1ZhbHVlID09PSBudWxsIHx8IG5ld1ZhbHVlID09PSB1bmRlZmluZWQpIHsKCSAgICAgIHJldHVybiBfdG90YWxIZWlnaHQ7CgkgICAgfQoKCSAgICAvLyBzZXR0ZXIKCSAgICBpZiAoX2hlbHBlcjIuZGVmYXVsdC5pc051bWJlcihuZXdWYWx1ZSkpIHsKCSAgICAgIF90b3RhbEhlaWdodCA9ICtuZXdWYWx1ZTsKCSAgICB9IGVsc2UgaWYgKG5ld1ZhbHVlLnRyaW0oKS50b0xvd2VyQ2FzZSgpID09ICdhdXRvJykgewoJICAgICAgX3RvdGFsSGVpZ2h0ID0gY2hhcnROb2RlLmNsaWVudEhlaWdodDsKCSAgICB9IGVsc2UgewoJICAgICAgX3RvdGFsSGVpZ2h0ID0gKyhuZXdWYWx1ZSArICcnKS5yZXBsYWNlKC9weC9naSwgJycpLnRyaW0oKTsKCSAgICB9CgoJICAgIGlmIChfaGVscGVyMi5kZWZhdWx0LmlzTmFOKF90b3RhbEhlaWdodCkpIHsKCSAgICAgIHRocm93IEVycm9yKCdpbnZhbGlkIGhlaWdodDogJyArIF90b3RhbEhlaWdodCk7CgkgICAgfQoKCSAgICAvLyByb3VuZCB0byBpbnRlZ2VyCgkgICAgX3RvdGFsSGVpZ2h0ID0gTWF0aC5mbG9vcihfdG90YWxIZWlnaHQpOwoKCSAgICBfaW5uZXJIZWlnaHQgPSBfdG90YWxIZWlnaHQgLSBfb3B0aW9ucy5tYXJnaW4udG9wIC0gX29wdGlvbnMubWFyZ2luLmJvdHRvbTsKCSAgICBfc3ZnLmF0dHIoJ2hlaWdodCcsIF90b3RhbEhlaWdodCk7CgoJICAgIC8vIGRpc3BhdGNoCgkgICAgaWYgKCFkb05vdERpc3BhdGNoKSB7CgkgICAgICBfZGlzcGF0Y2guY2FsbCgncmVzaXplJywgdGhpcywgW190b3RhbFdpZHRoLCBfdG90YWxIZWlnaHQsIF9pbm5lcldpZHRoLCBfaW5uZXJIZWlnaHRdKTsKCSAgICB9CgkgICAgcmV0dXJuIHNrZWxldG9uOwoJICB9CgoJICBmdW5jdGlvbiBkaW1lbnNpb24odmFsdWVzLCBkb05vdERpc3BhdGNoKSB7CgkgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApIHsKCSAgICAgIHJldHVybiBbX3RvdGFsV2lkdGgsIF90b3RhbEhlaWdodF07CgkgICAgfQoJICAgIHdpZHRoKHZhbHVlc1swXSwgdHJ1ZSk7CgkgICAgaGVpZ2h0KHZhbHVlc1sxXSwgZG9Ob3REaXNwYXRjaCk7CgoJICAgIHJldHVybiBza2VsZXRvbjsKCSAgfQoKCSAgZnVuY3Rpb24gYXV0b1Jlc2l6ZShuZXdNb2RlKSB7CgkgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApIHsKCSAgICAgIHJldHVybiBfYXV0b1Jlc2l6ZU1vZGU7CgkgICAgfSBlbHNlIGlmIChfYXV0b1Jlc2l6ZU1vZGUgIT0gbmV3TW9kZSkgewoJICAgICAgcmV0dXJuIHNldHVwQXV0b1Jlc2l6ZShuZXdNb2RlLCBfYXV0b1Jlc2l6ZURldGVjdGlvbik7CgkgICAgfQoJICAgIHJldHVybiBza2VsZXRvbjsKCSAgfQoKCSAgZnVuY3Rpb24gYXV0b1Jlc2l6ZURldGVjdGlvbihuZXdEZXRlY3Rpb24pIHsKCSAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMCkgewoJICAgICAgcmV0dXJuIF9hdXRvUmVzaXplRGV0ZWN0aW9uOwoJICAgIH0gZWxzZSBpZiAoX2F1dG9SZXNpemVEZXRlY3Rpb24gIT0gbmV3RGV0ZWN0aW9uKSB7CgkgICAgICByZXR1cm4gc2V0dXBBdXRvUmVzaXplKF9hdXRvUmVzaXplTW9kZSwgbmV3RGV0ZWN0aW9uKTsKCSAgICB9CgkgICAgcmV0dXJuIHNrZWxldG9uOwoJICB9CgoJICBmdW5jdGlvbiBhdXRvUmVzaXplVG9Bc3BlY3RSYXRpbyhyYXRpbykgewoJICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKSB7CgkgICAgICByZXR1cm4gX2F1dG9SZXNpemVUb0FzcGVjdFJhdGlvOwoJICAgIH0KCgkgICAgaWYgKHJhdGlvID09PSBudWxsIHx8IHJhdGlvID09PSB1bmRlZmluZWQgfHwgcmF0aW8gPT09ICcnIHx8IHJhdGlvID09PSBmYWxzZSB8fCAocmF0aW8gKyAnJykudG9Mb3dlckNhc2UoKSA9PT0gJ2ZhbHNlJykgewoJICAgICAgX2F1dG9SZXNpemVUb0FzcGVjdFJhdGlvID0gZmFsc2U7CgkgICAgfSBlbHNlIGlmICghX2hlbHBlcjIuZGVmYXVsdC5pc051bWJlcihyYXRpbykpIHsKCSAgICAgIF9hdXRvUmVzaXplVG9Bc3BlY3RSYXRpbyA9IGZhbHNlOwoJICAgIH0gZWxzZSBpZiAoK3JhdGlvID09PSAwKSB7CgkgICAgICBfYXV0b1Jlc2l6ZVRvQXNwZWN0UmF0aW8gPSBmYWxzZTsKCSAgICB9IGVsc2UgewoJICAgICAgX2F1dG9SZXNpemVUb0FzcGVjdFJhdGlvID0gK3JhdGlvOwoJICAgIH0KCSAgICByZXR1cm4gc2tlbGV0b247CgkgIH0KCgkgIGZ1bmN0aW9uIGNsZWFyQXV0b1Jlc2l6ZUxpc3RlbmVyKCkgewoJICAgIGlmIChfYXV0b1Jlc2l6ZUZuKSB7CgkgICAgICBzd2l0Y2ggKF9hdXRvUmVzaXplRGV0ZWN0aW9uKSB7CgkgICAgICAgIGNhc2UgJ2RvbSc6CgkgICAgICAgICAgX2hlbHBlcjIuZGVmYXVsdC5vZmYoY2hhcnROb2RlLCAncmVzaXplJywgX2F1dG9SZXNpemVGbik7CgkgICAgICAgICAgYnJlYWs7CgkgICAgICAgIGRlZmF1bHQ6CgkgICAgICAgIGNhc2UgJ3dpbmRvdyc6CgkgICAgICAgICAgX2hlbHBlcjIuZGVmYXVsdC5vZmYod2luZG93LCAncmVzaXplJywgX2F1dG9SZXNpemVGbik7CgkgICAgICAgICAgYnJlYWs7CgkgICAgICB9CgkgICAgfQoJICAgIF9hdXRvUmVzaXplRm4gPSBudWxsOwoJICAgIHJldHVybiBza2VsZXRvbjsKCSAgfQoKCSAgZnVuY3Rpb24gc2V0QXV0b1Jlc2l6ZUxpc3RlbmVyKGZuKSB7CgkgICAgaWYgKGZuKSB7CgkgICAgICBzd2l0Y2ggKF9hdXRvUmVzaXplRGV0ZWN0aW9uKSB7CgkgICAgICAgIGNhc2UgJ2RvbSc6CgkgICAgICAgICAgX2hlbHBlcjIuZGVmYXVsdC5vbihjaGFydE5vZGUsICdyZXNpemUnLCBmbik7CgkgICAgICAgICAgYnJlYWs7CgkgICAgICAgIGRlZmF1bHQ6CgkgICAgICAgIGNhc2UgJ3dpbmRvdyc6CgkgICAgICAgICAgX2hlbHBlcjIuZGVmYXVsdC5vbih3aW5kb3csICdyZXNpemUnLCBmbik7CgkgICAgICAgICAgYnJlYWs7CgkgICAgICB9CgkgICAgfQoJICAgIF9hdXRvUmVzaXplRm4gPSBmbjsKCSAgICByZXR1cm4gc2tlbGV0b247CgkgIH0KCgkgIGZ1bmN0aW9uIHNldHVwQXV0b1Jlc2l6ZShuZXdNb2RlLCBuZXdEZXRlY3Rpb24pIHsKCSAgICBuZXdNb2RlID0gbmV3TW9kZSAmJiAobmV3TW9kZSArICcnKS50b0xvd2VyQ2FzZSgpID09ICdmYWxzZScgPyBmYWxzZSA6IG5ld01vZGU7CgkgICAgbmV3RGV0ZWN0aW9uID0gbmV3RGV0ZWN0aW9uIHx8IF9hdXRvUmVzaXplRGV0ZWN0aW9uOwoKCSAgICAvLyBjaGVjayBpZiB0aGVyZSBpcyBjaGFuZ2UgaW4gbGlzdGVuZXIKCSAgICBpZiAobmV3TW9kZSAhPSBfYXV0b1Jlc2l6ZU1vZGUpIHsKCSAgICAgIGNsZWFyQXV0b1Jlc2l6ZUxpc3RlbmVyKCk7CgkgICAgICBfYXV0b1Jlc2l6ZU1vZGUgPSBuZXdNb2RlOwoJICAgICAgX2F1dG9SZXNpemVEZXRlY3Rpb24gPSBuZXdEZXRlY3Rpb247CgkgICAgICBpZiAobmV3TW9kZSkgewoJICAgICAgICBfYXV0b1Jlc2l6ZUZuID0gX2hlbHBlcjIuZGVmYXVsdC5kZWJvdW5jZShmdW5jdGlvbiAoKSB7CgkgICAgICAgICAgaWYgKF9hdXRvUmVzaXplVG9Bc3BlY3RSYXRpbykgewoJICAgICAgICAgICAgcmVzaXplVG9GaXRDb250YWluZXIoX2F1dG9SZXNpemVNb2RlLCB0cnVlKTsKCSAgICAgICAgICAgIHJlc2l6ZVRvQXNwZWN0UmF0aW8oX2F1dG9SZXNpemVUb0FzcGVjdFJhdGlvKTsKCSAgICAgICAgICB9IGVsc2UgewoJICAgICAgICAgICAgcmVzaXplVG9GaXRDb250YWluZXIoX2F1dG9SZXNpemVNb2RlKTsKCSAgICAgICAgICB9CgkgICAgICAgIH0sIDEwMCk7CgkgICAgICAgIHNldEF1dG9SZXNpemVMaXN0ZW5lcihfYXV0b1Jlc2l6ZUZuKTsKCSAgICAgIH0KCSAgICB9CgkgICAgLy8gY2hhbmdlIGRldGVjdGlvbiBtb2RlIG9ubHkKCSAgICBlbHNlIGlmIChuZXdEZXRlY3Rpb24gIT0gX2F1dG9SZXNpemVEZXRlY3Rpb24pIHsKCSAgICAgICAgdmFyIG9sZEF1dG9SZXNpemVGbiA9IF9hdXRvUmVzaXplRm47CgkgICAgICAgIGNsZWFyQXV0b1Jlc2l6ZUxpc3RlbmVyKCk7CgkgICAgICAgIF9hdXRvUmVzaXplRGV0ZWN0aW9uID0gbmV3RGV0ZWN0aW9uOwoJICAgICAgICBzZXRBdXRvUmVzaXplTGlzdGVuZXIob2xkQXV0b1Jlc2l6ZUZuKTsKCSAgICAgIH0KCgkgICAgaWYgKF9hdXRvUmVzaXplRm4pIF9hdXRvUmVzaXplRm4oKTsKCgkgICAgcmV0dXJuIHNrZWxldG9uOwoJICB9CgoJICBmdW5jdGlvbiBnZXRDdXN0b21FdmVudE5hbWVzKCkgewoJICAgIHJldHVybiBjdXN0b21FdmVudHMgfHwgW107CgkgIH0KCgkgIGZ1bmN0aW9uIG1peGluKG1peGVyKSB7CgkgICAgdmFyIHNlbGYgPSBza2VsZXRvbjsKCSAgICBpZiAoX2hlbHBlcjIuZGVmYXVsdC5pc09iamVjdChtaXhlcikpIHsKCSAgICAgIE9iamVjdC5rZXlzKG1peGVyKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsKCSAgICAgICAgc2VsZltrZXldID0gbWl4ZXJba2V5XTsKCSAgICAgIH0pOwoJICAgIH0KCSAgICByZXR1cm4gc2VsZjsKCSAgfQoKCSAgLy8gVGhpcyBmdW5jdGlvbiBpcyBvbmx5IHN5bnRhY3RpYyBzdWdhcgoJICBmdW5jdGlvbiByZXNpemVUb0ZpdENvbnRhaW5lcihtb2RlLCBkb05vdERpc3BhdGNoKSB7CgkgICAgc3dpdGNoIChtb2RlKSB7CgkgICAgICBjYXNlICdhbGwnOgoJICAgICAgY2FzZSAnZnVsbCc6CgkgICAgICBjYXNlICdib3RoJzoKCSAgICAgICAgZGltZW5zaW9uKFsnYXV0bycsICdhdXRvJ10sIGRvTm90RGlzcGF0Y2gpOwoJICAgICAgICBicmVhazsKCSAgICAgIGNhc2UgJ2hlaWdodCc6CgkgICAgICAgIGhlaWdodCgnYXV0bycsIGRvTm90RGlzcGF0Y2gpOwoJICAgICAgICBicmVhazsKCSAgICAgIGRlZmF1bHQ6CgkgICAgICBjYXNlICd3aWR0aCc6CgkgICAgICAgIHdpZHRoKCdhdXRvJywgZG9Ob3REaXNwYXRjaCk7CgkgICAgICAgIGJyZWFrOwoJICAgIH0KCSAgICByZXR1cm4gc2tlbGV0b247CgkgIH0KCgkgIGZ1bmN0aW9uIHJlc2l6ZVRvQXNwZWN0UmF0aW8ocmF0aW8sIGRvTm90RGlzcGF0Y2gpIHsKCSAgICB2YXIgdyA9IF90b3RhbFdpZHRoOwoJICAgIHZhciBoID0gX3RvdGFsSGVpZ2h0OwoKCSAgICBpZiAoIV9oZWxwZXIyLmRlZmF1bHQuaXNOdW1iZXIocmF0aW8pKSB0aHJvdyAnSW52YWxpZCByYXRpbzogbXVzdCBiZSBhIE51bWJlcic7CgoJICAgIHJhdGlvID0gK3JhdGlvOwoKCSAgICAvLyBubyBuZWVkIHRvIHJlc2l6ZSBpZiBhbHJlYWR5IGF0IHJhdGlvCgkgICAgaWYgKCh3IC8gaCkudG9GaXhlZCg0KSA9PSByYXRpby50b0ZpeGVkKDQpKSByZXR1cm4gc2tlbGV0b247CgoJICAgIHZhciBlc3RpbWF0ZWRIID0gTWF0aC5mbG9vcih3IC8gcmF0aW8pOwoJICAgIGlmIChlc3RpbWF0ZWRIID4gaCkgewoJICAgICAgd2lkdGgoTWF0aC5mbG9vcihoICogcmF0aW8pLCBkb05vdERpc3BhdGNoKTsKCSAgICB9IGVsc2UgewoJICAgICAgaGVpZ2h0KGVzdGltYXRlZEgsIGRvTm90RGlzcGF0Y2gpOwoJICAgIH0KCSAgICByZXR1cm4gc2tlbGV0b247CgkgIH0KCgkgIGZ1bmN0aW9uIGhhc0RhdGEoKSB7CgkgICAgcmV0dXJuIF9kYXRhICE9PSBudWxsICYmIF9kYXRhICE9PSB1bmRlZmluZWQ7CgkgIH0KCgkgIGZ1bmN0aW9uIGhhc05vblplcm9BcmVhKCkgewoJICAgIHJldHVybiBfaW5uZXJXaWR0aCA+IDAgJiYgX2lubmVySGVpZ2h0ID4gMDsKCSAgfQoKCSAgLy8gZGVmaW5lIHB1YmxpYyBmaWVsZHMgYW5kIGZ1bmN0aW9ucwoJICBfaGVscGVyMi5kZWZhdWx0LmV4dGVuZChza2VsZXRvbiwgewoJICAgIC8vIGdldHRlciBvbmx5CgkgICAgZ2V0Q3VzdG9tRXZlbnROYW1lczogZ2V0Q3VzdG9tRXZlbnROYW1lcywKCSAgICBnZXREaXNwYXRjaGVyOiBmdW5jdGlvbiBnZXREaXNwYXRjaGVyKCkgewoJICAgICAgcmV0dXJuIF9kaXNwYXRjaDsKCSAgICB9LAoJICAgIGdldElubmVyV2lkdGg6IGZ1bmN0aW9uIGdldElubmVyV2lkdGgoKSB7CgkgICAgICByZXR1cm4gX2lubmVyV2lkdGg7CgkgICAgfSwKCSAgICBnZXRJbm5lckhlaWdodDogZnVuY3Rpb24gZ2V0SW5uZXJIZWlnaHQoKSB7CgkgICAgICByZXR1cm4gX2lubmVySGVpZ2h0OwoJICAgIH0sCgkgICAgZ2V0TGF5ZXJPcmdhbml6ZXI6IGZ1bmN0aW9uIGdldExheWVyT3JnYW5pemVyKCkgewoJICAgICAgcmV0dXJuIF9sYXllcnM7CgkgICAgfSwKCSAgICBnZXRSb290RzogZnVuY3Rpb24gZ2V0Um9vdEcoKSB7CgkgICAgICByZXR1cm4gX3ZpczsKCSAgICB9LAoJICAgIGdldFN2ZzogZnVuY3Rpb24gZ2V0U3ZnKCkgewoJICAgICAgcmV0dXJuIF9zdmc7CgkgICAgfSwKCgoJICAgIC8vIGdldHRlciAmIHNldHRlcgoJICAgIGRhdGE6IGRhdGEsCgkgICAgb3B0aW9uczogb3B0aW9ucywKCSAgICBtYXJnaW46IG1hcmdpbiwKCSAgICBvZmZzZXQ6IG9mZnNldCwKCSAgICB3aWR0aDogd2lkdGgsCgkgICAgaGVpZ2h0OiBoZWlnaHQsCgkgICAgZGltZW5zaW9uOiBkaW1lbnNpb24sCgkgICAgYXV0b1Jlc2l6ZTogYXV0b1Jlc2l6ZSwKCSAgICBhdXRvUmVzaXplRGV0ZWN0aW9uOiBhdXRvUmVzaXplRGV0ZWN0aW9uLAoJICAgIGF1dG9SZXNpemVUb0FzcGVjdFJhdGlvOiBhdXRvUmVzaXplVG9Bc3BlY3RSYXRpbywKCgkgICAgLy8gZnVuY3Rpb25zCgkgICAgaGFzRGF0YTogaGFzRGF0YSwKCSAgICBoYXNOb25aZXJvQXJlYTogaGFzTm9uWmVyb0FyZWEsCgkgICAgbWl4aW46IG1peGluLAoJICAgIHJlc2l6ZVRvRml0Q29udGFpbmVyOiByZXNpemVUb0ZpdENvbnRhaW5lciwKCSAgICByZXNpemVUb0FzcGVjdFJhdGlvOiByZXNpemVUb0FzcGVjdFJhdGlvCgkgIH0pOwoKCSAgLy8gYmluZCBldmVudHMKCSAgX2hlbHBlcjIuZGVmYXVsdC5yZWJpbmQoc2tlbGV0b24sIF9kaXNwYXRjaCwgJ29uJyk7CgoJICByZXR1cm4gc2tlbGV0b247Cgl9CgoJZXhwb3J0cy5kZWZhdWx0ID0gU2tlbGV0b247CgovKioqLyB9LAovKiAyICovCi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykgewoKCW1vZHVsZS5leHBvcnRzID0gX19XRUJQQUNLX0VYVEVSTkFMX01PRFVMRV8yX187CgovKioqLyB9LAovKiAzICovCi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykgewoKCW1vZHVsZS5leHBvcnRzID0gX19XRUJQQUNLX0VYVEVSTkFMX01PRFVMRV8zX187CgovKioqLyB9LAovKiA0ICovCi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKCSd1c2Ugc3RyaWN0JzsKCglPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgIl9fZXNNb2R1bGUiLCB7CgkgIHZhbHVlOiB0cnVlCgl9KTsKCglleHBvcnRzLmRlZmF1bHQgPSBmdW5jdGlvbiAobWFpbkNvbnRhaW5lciwgdGFnKSB7CgkgIHZhciBsYXllcnMgPSB7fTsKCSAgdGFnID0gdGFnIHx8ICdnJzsKCgkgIGZ1bmN0aW9uIGNyZWF0ZUxheWVyRnJvbU5hbWUoY29udGFpbmVyLCBsYXllck5hbWUsIHByZWZpeCkgewoJICAgIHZhciBpZCA9IHByZWZpeCA/IHByZWZpeCArICcuJyArIGxheWVyTmFtZSA6IGxheWVyTmFtZTsKCSAgICBpZiAobGF5ZXJzLmhhc093blByb3BlcnR5KGlkKSkgewoJICAgICAgdGhyb3cgJ2ludmFsaWQgb3IgZHVwbGljYXRlIGxheWVyIGlkOiAnICsgaWQ7CgkgICAgfQoKCSAgICB2YXIgbGF5ZXIgPSBjb250YWluZXIuYXBwZW5kKHRhZykuY2xhc3NlZChfaGVscGVyMi5kZWZhdWx0LmRhc2hlcml6ZShsYXllck5hbWUpICsgJy1sYXllcicsIHRydWUpOwoKCSAgICBsYXllcnNbaWRdID0gbGF5ZXI7CgkgICAgcmV0dXJuIGxheWVyOwoJICB9CgoJICBmdW5jdGlvbiBjcmVhdGVMYXllckZyb21JbmZvKGNvbnRhaW5lciwgbGF5ZXJJbmZvLCBwcmVmaXgpIHsKCSAgICBpZiAoQXJyYXkuaXNBcnJheShsYXllckluZm8pKSB7CgkgICAgICByZXR1cm4gbGF5ZXJJbmZvLm1hcChmdW5jdGlvbiAoaW5mbykgewoJICAgICAgICBjcmVhdGVMYXllckZyb21JbmZvKGNvbnRhaW5lciwgaW5mbywgcHJlZml4KTsKCSAgICAgIH0pOwoJICAgIH0gZWxzZSBpZiAoX2hlbHBlcjIuZGVmYXVsdC5pc09iamVjdChsYXllckluZm8pKSB7CgkgICAgICB2YXIgcGFyZW50S2V5ID0gT2JqZWN0LmtleXMobGF5ZXJJbmZvKVswXTsKCSAgICAgIHZhciBwYXJlbnRMYXllciA9IGNyZWF0ZUxheWVyRnJvbU5hbWUoY29udGFpbmVyLCBwYXJlbnRLZXksIHByZWZpeCk7CgkgICAgICBjcmVhdGVMYXllckZyb21JbmZvKHBhcmVudExheWVyLCBsYXllckluZm9bcGFyZW50S2V5XSwgcHJlZml4ID8gcHJlZml4ICsgJy4nICsgcGFyZW50S2V5IDogcGFyZW50S2V5KTsKCSAgICAgIHJldHVybiBwYXJlbnRMYXllcjsKCSAgICB9IGVsc2UgewoJICAgICAgcmV0dXJuIGNyZWF0ZUxheWVyRnJvbU5hbWUoY29udGFpbmVyLCBsYXllckluZm8sIHByZWZpeCk7CgkgICAgfQoJICB9CgoJICBmdW5jdGlvbiBjcmVhdGVMYXllcihsYXllckluZm8pIHsKCSAgICByZXR1cm4gY3JlYXRlTGF5ZXJGcm9tSW5mbyhtYWluQ29udGFpbmVyLCBsYXllckluZm8pOwoJICB9CgoJICBmdW5jdGlvbiBjcmVhdGUobGF5ZXJOYW1lcykgewoJICAgIGlmIChBcnJheS5pc0FycmF5KGxheWVyTmFtZXMpKSB7CgkgICAgICByZXR1cm4gbGF5ZXJOYW1lcy5tYXAoY3JlYXRlTGF5ZXIpOwoJICAgIH0gZWxzZSB7CgkgICAgICByZXR1cm4gY3JlYXRlTGF5ZXIobGF5ZXJOYW1lcyk7CgkgICAgfQoJICB9CgoJICBmdW5jdGlvbiBnZXQobGF5ZXJOYW1lKSB7CgkgICAgcmV0dXJuIGxheWVyc1tsYXllck5hbWVdOwoJICB9CgoJICBmdW5jdGlvbiBoYXMobGF5ZXJOYW1lKSB7CgkgICAgcmV0dXJuICEhbGF5ZXJzW2xheWVyTmFtZV07CgkgIH0KCgkgIHJldHVybiB7CgkgICAgY3JlYXRlOiBjcmVhdGUsCgkgICAgZ2V0OiBnZXQsCgkgICAgaGFzOiBoYXMKCSAgfTsKCX07CgoJdmFyIF9oZWxwZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUpOwoKCXZhciBfaGVscGVyMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2hlbHBlcik7CgoJZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH0KCi8qKiovIH0sCi8qIDUgKi8KLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7CgoJJ3VzZSBzdHJpY3QnOwoKCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiX19lc01vZHVsZSIsIHsKCSAgdmFsdWU6IHRydWUKCX0pOwoKCXZhciBfdHlwZW9mID0gdHlwZW9mIFN5bWJvbCA9PT0gImZ1bmN0aW9uIiAmJiB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID09PSAic3ltYm9sIiA/IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIHR5cGVvZiBvYmo7IH0gOiBmdW5jdGlvbiAob2JqKSB7IHJldHVybiBvYmogJiYgdHlwZW9mIFN5bWJvbCA9PT0gImZ1bmN0aW9uIiAmJiBvYmouY29uc3RydWN0b3IgPT09IFN5bWJvbCA/ICJzeW1ib2wiIDogdHlwZW9mIG9iajsgfTsKCgkvKioKCSAqIEV4YW1wbGUgdXNhZ2U6CgkgKiBzZWxlY3Rpb24uY2FsbChkM0tpdC5oZWxwZXIuYmluZE1vdXNlRXZlbnRzVG9EaXNwYXRjaGVyLCBkaXNwYXRjaCwgJ2JhcicpCgkgKgoJICogQHBhcmFtICB7W3R5cGVdfSBkaXNwYXRjaCBbZGVzY3JpcHRpb25dCgkgKiBAcGFyYW0gIHtbdHlwZV19IHByZWZpeCAgIFtkZXNjcmlwdGlvbl0KCSAqIEByZXR1cm4ge1t0eXBlXX0gICAgICAgICAgW2Rlc2NyaXB0aW9uXQoJICovCglmdW5jdGlvbiBiaW5kTW91c2VFdmVudHNUb0Rpc3BhdGNoZXIoc2VsZWN0aW9uLCBkaXNwYXRjaCwgcHJlZml4KSB7CgkgIHJldHVybiBzZWxlY3Rpb24ub24oJ2NsaWNrJywgZGlzcGF0Y2hbcHJlZml4ICsgJ0NsaWNrJ10pLm9uKCdtb3VzZW92ZXInLCBkaXNwYXRjaFtwcmVmaXggKyAnTW91c2VPdmVyJ10pLm9uKCdtb3VzZW1vdmUnLCBkaXNwYXRjaFtwcmVmaXggKyAnTW91c2VNb3ZlJ10pLm9uKCdtb3VzZW91dCcsIGRpc3BhdGNoW3ByZWZpeCArICdNb3VzZU91dCddKTsKCX0KCglmdW5jdGlvbiByZW1vdmVBbGxDaGlsZHJlbihzZWxlY3Rpb24sIG5vVHJhbnNpdGlvbikgewoJICBpZiAobm9UcmFuc2l0aW9uKSB7CgkgICAgcmV0dXJuIHNlbGVjdGlvbi5zZWxlY3RBbGwoJyonKS5yZW1vdmUoKTsKCSAgfSBlbHNlIHsKCSAgICByZXR1cm4gc2VsZWN0aW9uLnNlbGVjdEFsbCgnKicpLnRyYW5zaXRpb24oKS5zdHlsZSgnb3BhY2l0eScsIDApLnJlbW92ZSgpOwoJICB9Cgl9CgoJLy8gUmV0dXJucyB0cnVlIGlmIGl0IGlzIGEgRE9NIGVsZW1lbnQKCS8vIEZyb20gaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8zODQyODYvamF2YXNjcmlwdC1pc2RvbS1ob3ctZG8teW91LWNoZWNrLWlmLWEtamF2YXNjcmlwdC1vYmplY3QtaXMtYS1kb20tb2JqZWN0CglmdW5jdGlvbiBpc0VsZW1lbnQobykgewoJICByZXR1cm4gKHR5cGVvZiBIVE1MRWxlbWVudCA9PT0gJ3VuZGVmaW5lZCcgPyAndW5kZWZpbmVkJyA6IF90eXBlb2YoSFRNTEVsZW1lbnQpKSA9PT0gJ29iamVjdCcgPyBvIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQgOiAvLyBET00yCgkgIG8gJiYgKHR5cGVvZiBvID09PSAndW5kZWZpbmVkJyA/ICd1bmRlZmluZWQnIDogX3R5cGVvZihvKSkgPT09ICdvYmplY3QnICYmIG8gIT09IG51bGwgJiYgby5ub2RlVHlwZSA9PT0gMSAmJiB0eXBlb2Ygby5ub2RlTmFtZSA9PT0gJ3N0cmluZyc7Cgl9CgoJdmFyIGlzTmFOID0gTnVtYmVyLmlzTmFOID8gTnVtYmVyLmlzTmFOIDogd2luZG93LmlzTmFOOwoKCS8vIENoZWNrIHdoZXRoZXIgcyBpcyBlbGVtZW50IGlmIG5vdCB0aGVuIGRvIHRoZSBxdWVyeVNlbGVjdG9yCglmdW5jdGlvbiAkKHMpIHsKCSAgcmV0dXJuIGlzRWxlbWVudChzKSA/IHMgOiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHMpOwoJfQoKCS8vIFRvIGdldCBhIHByb3BlciBhcnJheSBmcm9tIGEgTm9kZUxpc3QgdGhhdCBtYXRjaGVzIHRoZSBDU1Mgc2VsZWN0b3IKCWZ1bmN0aW9uICQkKHMpIHsKCSAgcmV0dXJuIEFycmF5LmlzQXJyYXkocykgPyBzIDogW10uc2xpY2UuY2FsbChkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKHMpKTsKCX0KCgkvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoJLy8gRnJvbSBodHRwOi8veW91bWlnaHRub3RuZWVkanF1ZXJ5LmNvbS8KCS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoJZnVuY3Rpb24gZGVlcEV4dGVuZChvdXQpIHsKCSAgb3V0ID0gb3V0IHx8IHt9OwoKCSAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsKCSAgICB2YXIgb2JqID0gYXJndW1lbnRzW2ldOwoKCSAgICBpZiAoIW9iaikgY29udGludWU7CgoJICAgIGZvciAodmFyIGtleSBpbiBvYmopIHsKCSAgICAgIGlmIChvYmouaGFzT3duUHJvcGVydHkoa2V5KSkgewoJICAgICAgICB2YXIgdmFsdWUgPSBvYmpba2V5XTsKCSAgICAgICAgaWYgKGlzT2JqZWN0KHZhbHVlKSAmJiAhQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgIWlzRnVuY3Rpb24odmFsdWUpKSB7CgkgICAgICAgICAgb3V0W2tleV0gPSBkZWVwRXh0ZW5kKG91dFtrZXldLCB2YWx1ZSk7CgkgICAgICAgIH0gZWxzZSBvdXRba2V5XSA9IHZhbHVlOwoJICAgICAgfQoJICAgIH0KCSAgfQoKCSAgcmV0dXJuIG91dDsKCX0KCglmdW5jdGlvbiBleHRlbmQob3V0KSB7CgkgIG91dCA9IG91dCB8fCB7fTsKCgkgIGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7CgkgICAgaWYgKCFhcmd1bWVudHNbaV0pIGNvbnRpbnVlOwoKCSAgICBmb3IgKHZhciBrZXkgaW4gYXJndW1lbnRzW2ldKSB7CgkgICAgICBpZiAoYXJndW1lbnRzW2ldLmhhc093blByb3BlcnR5KGtleSkpIG91dFtrZXldID0gYXJndW1lbnRzW2ldW2tleV07CgkgICAgfQoJICB9CgoJICByZXR1cm4gb3V0OwoJfQoKCWZ1bmN0aW9uIG9uKGVsZW1lbnQsIHR5cGUsIGxpc3RlbmVyKSB7CgkgIGlmIChlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIpIHsKCSAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIodHlwZSwgbGlzdGVuZXIsIGZhbHNlKTsKCSAgfSBlbHNlIGlmIChlbGVtZW50LmF0dGFjaEV2ZW50KSB7CgkgICAgZWxlbWVudC5hdHRhY2hFdmVudCgnb24nICsgdHlwZSwgbGlzdGVuZXIpOwoJICB9Cgl9CgoJZnVuY3Rpb24gb2ZmKGVsZW1lbnQsIHR5cGUsIGxpc3RlbmVyKSB7CgkgIGVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcih0eXBlLCBsaXN0ZW5lciwgZmFsc2UpOwoJfQoKCS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgkvLyBNb2RpZmllZCBmcm9tIGxvZGFzaAoJLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCgkvKioKCSAqIFJldHVybnMgYSBmdW5jdGlvbiwgdGhhdCwgYXMgbG9uZyBhcyBpdCBjb250aW51ZXMgdG8gYmUgaW52b2tlZCwKCSAqIHdpbGwgbm90IGJlIHRyaWdnZXJlZC4KCSAqIFRoZSBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZCBhZnRlciBpdCBzdG9wcyBiZWluZyBjYWxsZWQgZm9yCgkgKiAid2FpdCIgbWlsbGlzZWNvbmRzLgoJICogVGhlIG91dHB1dCBmdW5jdGlvbiBjYW4gYmUgY2FsbGVkIHdpdGggLm5vdygpIHRvIGV4ZWN1dGUgaW1tZWRpYXRlbHkKCSAqIEZvciBleGFtcGxlOgoJICogZG9Tb21ldGhpbmcocGFyYW1zKTsgLy8gd2lsbCBkZWJvdW5jZQoJICogZG9Tb21ldGhpbmcubm93KHBhcmFtcyk7IC8vIHdpbGwgZXhlY3V0ZSBpbW1lZGlhdGVseQoJICoKCSAqIEBwYXJhbSAgRnVuY3Rpb24gZnVuYyAgICAgIGZ1bmN0aW9uIHRvIGJlIGRlYm91bmNlZAoJICogQHBhcmFtICBOdW1iZXIgICB3YWl0ICAgICAgd2FpdCB0aW1lIHVudGlsIGl0IHdpbGwgYmUgZXhlY3V0ZWQKCSAqIEBwYXJhbSAgQm9vbGVhbiAgaW1tZWRpYXRlIElmICJpbW1lZGlhdGUiIGlzIHBhc3NlZCwgdHJpZ2dlciB0aGUgZnVuY3Rpb24gb24gdGhlCgkgKiBsZWFkaW5nIGVkZ2UsIGluc3RlYWQgb2YgdGhlIHRyYWlsaW5nLgoJICogQHJldHVybiBGdW5jdGlvbiAgICAgICAgICAgZGVib3VuY2VkIGZ1bmN0aW9uCgkgKi8KCWZ1bmN0aW9uIGRlYm91bmNlKGZ1bmMsIHdhaXQsIGltbWVkaWF0ZSkgewoJICB2YXIgdGltZW91dCA9IHZvaWQgMDsKCgkgIHZhciBvdXRwdXRGbiA9IGZ1bmN0aW9uIG91dHB1dEZuKCkgewoJICAgIHZhciBjb250ZXh0ID0gdGhpcywKCSAgICAgICAgYXJncyA9IGFyZ3VtZW50czsKCSAgICB2YXIgbGF0ZXIgPSBmdW5jdGlvbiBsYXRlcigpIHsKCSAgICAgIHRpbWVvdXQgPSBudWxsOwoJICAgICAgaWYgKCFpbW1lZGlhdGUpIGZ1bmMuYXBwbHkoY29udGV4dCwgYXJncyk7CgkgICAgfTsKCSAgICB2YXIgY2FsbE5vdyA9IGltbWVkaWF0ZSAmJiAhdGltZW91dDsKCSAgICBjbGVhclRpbWVvdXQodGltZW91dCk7CgkgICAgdGltZW91dCA9IHNldFRpbWVvdXQobGF0ZXIsIHdhaXQpOwoJICAgIGlmIChjYWxsTm93KSBmdW5jLmFwcGx5KGNvbnRleHQsIGFyZ3MpOwoKCSAgICAvLyByZXR1cm4gY2FsbGVyIGZvciBjaGFpbmluZwoJICAgIHJldHVybiBjb250ZXh0OwoJICB9OwoKCSAgLy8gc28gd2Uga25vdyB0aGlzIGZ1bmN0aW9uIGlzIGRlYm91bmNlZAoJICBvdXRwdXRGbi5pc0RlYm91bmNlZCA9IHRydWU7CgkgIC8vIGFuZCBwcm92aWRlIGEgd2F5IHRvIGNhbGwgdGhlIG9yaWdpbmFsIGZ1bmN0aW9uIGltbWVkaWF0ZWx5CgkgIG91dHB1dEZuLm5vdyA9IGZ1bmN0aW9uICgpIHsKCSAgICBjbGVhclRpbWVvdXQodGltZW91dCk7CgkgICAgcmV0dXJuIGZ1bmMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKCSAgfTsKCgkgIHJldHVybiBvdXRwdXRGbjsKCX0KCgkvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoJLy8gRnJvbSBsb2Rhc2gKCS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoJLyoqIFVzZWQgdG8gZGV0ZXJtaW5lIGlmIHZhbHVlcyBhcmUgb2YgdGhlIGxhbmd1YWdlIHR5cGUgT2JqZWN0ICovCgl2YXIgb2JqZWN0VHlwZXMgPSB7CgkgICdib29sZWFuJzogZmFsc2UsCgkgICdmdW5jdGlvbic6IHRydWUsCgkgICdvYmplY3QnOiB0cnVlLAoJICAnbnVtYmVyJzogZmFsc2UsCgkgICdzdHJpbmcnOiBmYWxzZSwKCSAgJ3VuZGVmaW5lZCc6IGZhbHNlCgl9OwoKCWZ1bmN0aW9uIGlzT2JqZWN0KHZhbHVlKSB7CgkgIC8vIGNoZWNrIGlmIHRoZSB2YWx1ZSBpcyB0aGUgRUNNQVNjcmlwdCBsYW5ndWFnZSB0eXBlIG9mIE9iamVjdAoJICAvLyBodHRwOi8vZXM1LmdpdGh1Yi5pby8jeDgKCSAgLy8gYW5kIGF2b2lkIGEgVjggYnVnCgkgIC8vIGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC92OC9pc3N1ZXMvZGV0YWlsP2lkPTIyOTEKCSAgcmV0dXJuICEhKHZhbHVlICYmIG9iamVjdFR5cGVzW3R5cGVvZiB2YWx1ZSA9PT0gJ3VuZGVmaW5lZCcgPyAndW5kZWZpbmVkJyA6IF90eXBlb2YodmFsdWUpXSk7Cgl9CgoJLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCBzaG9ydGN1dHMgKi8KCXZhciBudW1iZXJDbGFzcyA9ICdbb2JqZWN0IE51bWJlcl0nOwoKCS8qKiBVc2VkIGZvciBuYXRpdmUgbWV0aG9kIHJlZmVyZW5jZXMgKi8KCXZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7CgoJLyoqIFVzZWQgdG8gcmVzb2x2ZSB0aGUgaW50ZXJuYWwgW1tDbGFzc11dIG9mIHZhbHVlcyAqLwoJdmFyIHRvU3RyaW5nID0gb2JqZWN0UHJvdG8udG9TdHJpbmc7CgoJLyoqCgkgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIG51bWJlci4KCSAqCgkgKiBOb3RlOiBgTmFOYCBpcyBjb25zaWRlcmVkIGEgbnVtYmVyLiBTZWUgaHR0cDovL2VzNS5naXRodWIuaW8vI3g4LjUuCgkgKgoJICogQHN0YXRpYwoJICogQG1lbWJlck9mIF8KCSAqIEBjYXRlZ29yeSBPYmplY3RzCgkgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay4KCSAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgYHZhbHVlYCBpcyBhIG51bWJlciwgZWxzZSBgZmFsc2VgLgoJICogQGV4YW1wbGUKCSAqCgkgKiBfLmlzTnVtYmVyKDguNCAqIDUpOwoJICogLy8gPT4gdHJ1ZQoJICovCglmdW5jdGlvbiBpc051bWJlcih2YWx1ZSkgewoJICByZXR1cm4gdHlwZW9mIHZhbHVlID09ICdudW1iZXInIHx8IHZhbHVlICYmICh0eXBlb2YgdmFsdWUgPT09ICd1bmRlZmluZWQnID8gJ3VuZGVmaW5lZCcgOiBfdHlwZW9mKHZhbHVlKSkgPT0gJ29iamVjdCcgJiYgdG9TdHJpbmcuY2FsbCh2YWx1ZSkgPT0gbnVtYmVyQ2xhc3MgfHwgZmFsc2U7Cgl9CgoJZnVuY3Rpb24gaXNGdW5jdGlvbihmdW5jdGlvblRvQ2hlY2spIHsKCSAgdmFyIGdldFR5cGUgPSB7fTsKCSAgcmV0dXJuICEhZnVuY3Rpb25Ub0NoZWNrICYmIGdldFR5cGUudG9TdHJpbmcuY2FsbChmdW5jdGlvblRvQ2hlY2spID09PSAnW29iamVjdCBGdW5jdGlvbl0nOwoJfQoKCS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgkvLyBGcm9tIHVuZGVyc2NvcmUuc3RyaW5nCgkvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoJLyoganNoaW50IGlnbm9yZTpzdGFydCAqLwoKCXZhciBuYXRpdmVUcmltID0gU3RyaW5nLnByb3RvdHlwZS50cmltOwoKCWZ1bmN0aW9uIGVzY2FwZVJlZ0V4cChzdHIpIHsKCSAgaWYgKHN0ciA9PSBudWxsKSByZXR1cm4gJyc7CgkgIHJldHVybiBTdHJpbmcoc3RyKS5yZXBsYWNlKC8oWy4qKz9ePSE6JHt9KCl8W1xdXC9cXF0pL2csICdcXCQxJyk7Cgl9CgoJdmFyIGRlZmF1bHRUb1doaXRlU3BhY2UgPSBmdW5jdGlvbiBkZWZhdWx0VG9XaGl0ZVNwYWNlKGNoYXJhY3RlcnMpIHsKCSAgaWYgKGNoYXJhY3RlcnMgPT0gbnVsbCkgcmV0dXJuICdcXHMnO2Vsc2UgaWYgKGNoYXJhY3RlcnMuc291cmNlKSByZXR1cm4gY2hhcmFjdGVycy5zb3VyY2U7ZWxzZSByZXR1cm4gJ1snICsgZXNjYXBlUmVnRXhwKGNoYXJhY3RlcnMpICsgJ10nOwoJfTsKCglmdW5jdGlvbiB0cmltKHN0ciwgY2hhcmFjdGVycykgewoJICBpZiAoc3RyID09IG51bGwpIHJldHVybiAnJzsKCSAgaWYgKCFjaGFyYWN0ZXJzICYmIG5hdGl2ZVRyaW0pIHJldHVybiBuYXRpdmVUcmltLmNhbGwoc3RyKTsKCSAgY2hhcmFjdGVycyA9IGRlZmF1bHRUb1doaXRlU3BhY2UoY2hhcmFjdGVycyk7CgkgIHJldHVybiBTdHJpbmcoc3RyKS5yZXBsYWNlKG5ldyBSZWdFeHAoJ1xeJyArIGNoYXJhY3RlcnMgKyAnK3wnICsgY2hhcmFjdGVycyArICcrJCcsICdnJyksICcnKTsKCX0KCglmdW5jdGlvbiBkYXNoZXJpemUoc3RyKSB7CgkgIHJldHVybiB0cmltKHN0cikucmVwbGFjZSgvKFtBLVpdKS9nLCAnLSQxJykucmVwbGFjZSgvWy1fXHNdKy9nLCAnLScpLnRvTG93ZXJDYXNlKCk7Cgl9CgoJLy8gQ29waWVzIGEgdmFyaWFibGUgbnVtYmVyIG9mIG1ldGhvZHMgZnJvbSBzb3VyY2UgdG8gdGFyZ2V0LgoJZnVuY3Rpb24gcmViaW5kKHRhcmdldCwgc291cmNlKSB7CgkgIHZhciBpID0gMSwKCSAgICAgIG4gPSBhcmd1bWVudHMubGVuZ3RoLAoJICAgICAgbWV0aG9kID0gdm9pZCAwOwoJICB3aGlsZSAoKytpIDwgbikgewoJICAgIHRhcmdldFttZXRob2QgPSBhcmd1bWVudHNbaV1dID0gZDNfcmViaW5kKHRhcmdldCwgc291cmNlLCBzb3VyY2VbbWV0aG9kXSk7CgkgIH1yZXR1cm4gdGFyZ2V0OwoJfQoKCS8vIE1ldGhvZCBpcyBhc3N1bWVkIHRvIGJlIGEgc3RhbmRhcmQgRDMgZ2V0dGVyLXNldHRlcjoKCS8vIElmIHBhc3NlZCB3aXRoIG5vIGFyZ3VtZW50cywgZ2V0cyB0aGUgdmFsdWUuCgkvLyBJZiBwYXNzZWQgd2l0aCBhcmd1bWVudHMsIHNldHMgdGhlIHZhbHVlIGFuZCByZXR1cm5zIHRoZSB0YXJnZXQuCglmdW5jdGlvbiBkM19yZWJpbmQodGFyZ2V0LCBzb3VyY2UsIG1ldGhvZCkgewoJICByZXR1cm4gZnVuY3Rpb24gKCkgewoJICAgIHZhciB2YWx1ZSA9IG1ldGhvZC5hcHBseShzb3VyY2UsIGFyZ3VtZW50cyk7CgkgICAgcmV0dXJuIHZhbHVlID09PSBzb3VyY2UgPyB0YXJnZXQgOiB2YWx1ZTsKCSAgfTsKCX0KCglmdW5jdGlvbiBmdW5jdG9yKHYpIHsKCSAgcmV0dXJuIHR5cGVvZiB2ID09PSAnZnVuY3Rpb24nID8gdiA6IGZ1bmN0aW9uICgpIHsKCSAgICByZXR1cm4gdjsKCSAgfTsKCX0KCgkvKiBqc2hpbnQgaWdub3JlOmVuZCAqLwoKCWV4cG9ydHMuZGVmYXVsdCA9IHsKCSAgJDogJCwKCSAgJCQ6ICQkLAoKCSAgZGFzaGVyaXplOiBkYXNoZXJpemUsCgkgIGRlYm91bmNlOiBkZWJvdW5jZSwKCgkgIGRlZXBFeHRlbmQ6IGRlZXBFeHRlbmQsCgkgIGV4dGVuZDogZXh0ZW5kLAoKCSAgaXNFbGVtZW50OiBpc0VsZW1lbnQsCgkgIGlzRnVuY3Rpb246IGlzRnVuY3Rpb24sCgkgIGlzTmFOOiBpc05hTiwKCSAgaXNOdW1iZXI6IGlzTnVtYmVyLAoJICBpc09iamVjdDogaXNPYmplY3QsCgkgIG9uOiBvbiwKCSAgb2ZmOiBvZmYsCgkgIHRyaW06IHRyaW0sCgoJICByZWJpbmQ6IHJlYmluZCwKCSAgZnVuY3RvcjogZnVuY3RvciwKCgkgIHJlbW92ZUFsbENoaWxkcmVuOiByZW1vdmVBbGxDaGlsZHJlbiwKCSAgYmluZE1vdXNlRXZlbnRzVG9EaXNwYXRjaGVyOiBiaW5kTW91c2VFdmVudHNUb0Rpc3BhdGNoZXIKCX07CgovKioqLyB9LAovKiA2ICovCi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKCSd1c2Ugc3RyaWN0JzsKCglPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgIl9fZXNNb2R1bGUiLCB7CgkgIHZhbHVlOiB0cnVlCgl9KTsKCgl2YXIgX2QzRGlzcGF0Y2ggPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMpOwoKCXZhciBfaGVscGVyID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1KTsKCgl2YXIgX2hlbHBlcjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9oZWxwZXIpOwoKCWZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9CgoJZnVuY3Rpb24gTk9PUChzZWxlY3Rpb24sIGRvbmUpIHsKCSAgZG9uZSgpOwoJfQoKCWZ1bmN0aW9uIENoYXJ0bGV0KGVudGVyLCB1cGRhdGUsIGV4aXQsIGN1c3RvbUV2ZW50cykgewoJICB1cGRhdGUgPSB1cGRhdGUgfHwgTk9PUDsKCSAgZXhpdCA9IGV4aXQgfHwgTk9PUDsKCSAgY3VzdG9tRXZlbnRzID0gY3VzdG9tRXZlbnRzIHx8IFtdOwoJICB2YXIgX3Byb3BlcnR5Q2FjaGUgPSB7fTsKCSAgdmFyIF9kaXNwYXRjaCA9IF9kM0Rpc3BhdGNoLmRpc3BhdGNoLmFwcGx5KHRoaXMsIFsnZW50ZXJEb25lJywgJ3VwZGF0ZURvbmUnLCAnZXhpdERvbmUnXS5jb25jYXQoY3VzdG9tRXZlbnRzKSk7CgoJICAvLyBnZXR0ZXIgYW5kIHNldHRlciBvZiBjaGFydGxldCBwcm9wZXJ0aWVzCgoJICBmdW5jdGlvbiBwcm9wZXJ0eShuYW1lLCB2YWx1ZSkgewoJICAgIC8vIGlmIGZ1bmN0aW9uaW5nIGFzIGEgc2V0dGVyLCBzZXQgcHJvcGVydHkgaW4gY2FjaGUKCSAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDEpIHsKCSAgICAgIF9wcm9wZXJ0eUNhY2hlW25hbWVdID0gX2hlbHBlcjIuZGVmYXVsdC5mdW5jdG9yKHZhbHVlKTsKCSAgICAgIHJldHVybiB0aGlzOwoJICAgIH0KCgkgICAgLy8gZnVuY3Rpb25pbmcgYXMgYSBnZXR0ZXIsIHJldHVybiBwcm9wZXJ0eSBhY2Nlc3NvcgoJICAgIHJldHVybiBfaGVscGVyMi5kZWZhdWx0LmZ1bmN0b3IoX3Byb3BlcnR5Q2FjaGVbbmFtZV0pOwoJICB9CgoJICBmdW5jdGlvbiBnZXRQcm9wZXJ0eVZhbHVlKG5hbWUsIGQsIGkpIHsKCSAgICByZXR1cm4gcHJvcGVydHkobmFtZSkoZCwgaSk7CgkgIH0KCgkgIGZ1bmN0aW9uIF93cmFwQWN0aW9uKGFjdGlvbiwgZG9uZUhvb2tOYW1lKSB7CgkgICAgcmV0dXJuIGZ1bmN0aW9uIChzZWxlY3Rpb24pIHsKCSAgICAgIGFjdGlvbihzZWxlY3Rpb24sIF9oZWxwZXIyLmRlZmF1bHQuZGVib3VuY2UoZnVuY3Rpb24gKGQsIGkpIHsKCSAgICAgICAgX2Rpc3BhdGNoLmNhbGwoZG9uZUhvb2tOYW1lLCB0aGlzLCBzZWxlY3Rpb24pOwoJICAgICAgfSksIDUpOwoJICAgIH07CgkgIH0KCgkgIGZ1bmN0aW9uIGluaGVyaXRQcm9wZXJ0eUZyb20oY2hhcnRsZXQsIGZyb20sIHRvKSB7CgkgICAgX3Byb3BlcnR5Q2FjaGVbdG8gfHwgZnJvbV0gPSBmdW5jdGlvbiAoZCwgaSkgewoJICAgICAgcmV0dXJuIGNoYXJ0bGV0LnByb3BlcnR5KGZyb20pKGQsIGkpOwoJICAgIH07CgkgICAgcmV0dXJuIHRoaXM7CgkgIH0KCgkgIGZ1bmN0aW9uIGluaGVyaXRQcm9wZXJ0aWVzRnJvbShjaGFydGxldCwgZnJvbXMsIHRvcykgewoJICAgIGZyb21zLmZvckVhY2goZnVuY3Rpb24gKGZyb20sIGkpIHsKCSAgICAgIGluaGVyaXRQcm9wZXJ0eUZyb20oY2hhcnRsZXQsIGZyb20sIHRvcyAmJiBpIDwgdG9zLmxlbmd0aCA/IHRvc1tpXSA6IHVuZGVmaW5lZCk7CgkgICAgfSk7CgkgICAgcmV0dXJuIHRoaXM7CgkgIH0KCgkgIGZ1bmN0aW9uIHB1Ymxpc2hFdmVudHNUbyhmb3JlaWduRGlzcGF0Y2hlcikgewoJICAgIGN1c3RvbUV2ZW50cy5mb3JFYWNoKGZ1bmN0aW9uIChldmVudCkgewoJICAgICAgX2Rpc3BhdGNoLm9uKGV2ZW50LCBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHZhciBhcmdzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKTsKCSAgICAgICAgZm9yZWlnbkRpc3BhdGNoZXIuYXBwbHkoZXZlbnQsIHRoaXMsIGFyZ3MpOwoJICAgICAgfSk7CgkgICAgfSk7CgkgICAgcmV0dXJuIHRoaXM7CgkgIH0KCgkgIGZ1bmN0aW9uIGdldEN1c3RvbUV2ZW50TmFtZXMoKSB7CgkgICAgcmV0dXJuIGN1c3RvbUV2ZW50czsKCSAgfQoKCSAgLy8gZXhwb3J0cwoJICB2YXIgZXhwb3J0cyA9IHsKCSAgICAvLyBmb3IgdXNlIGJ5IGNoaWxkIGNoYXJ0bGV0CgkgICAgZ2V0RGlzcGF0Y2hlcjogZnVuY3Rpb24gZ2V0RGlzcGF0Y2hlcigpIHsKCSAgICAgIHJldHVybiBfZGlzcGF0Y2g7CgkgICAgfSwKCgkgICAgZ2V0UHJvcGVydHlWYWx1ZTogZ2V0UHJvcGVydHlWYWx1ZSwKCSAgICBpbmhlcml0UHJvcGVydHlGcm9tOiBpbmhlcml0UHJvcGVydHlGcm9tLAoJICAgIGluaGVyaXRQcm9wZXJ0aWVzRnJvbTogaW5oZXJpdFByb3BlcnRpZXNGcm9tLAoJICAgIHB1Ymxpc2hFdmVudHNUbzogcHVibGlzaEV2ZW50c1RvLAoJICAgIGdldEN1c3RvbUV2ZW50TmFtZXM6IGdldEN1c3RvbUV2ZW50TmFtZXMsCgoJICAgIHByb3BlcnR5OiBwcm9wZXJ0eSwKCSAgICBlbnRlcjogX3dyYXBBY3Rpb24oZW50ZXIsICdlbnRlckRvbmUnKSwKCSAgICB1cGRhdGU6IF93cmFwQWN0aW9uKHVwZGF0ZSwgJ3VwZGF0ZURvbmUnKSwKCSAgICBleGl0OiBfd3JhcEFjdGlvbihleGl0LCAnZXhpdERvbmUnKQoJICB9OwoKCSAgLy8gYmluZCBldmVudHMgdG8gZXhwb3J0cwoJICBfaGVscGVyMi5kZWZhdWx0LnJlYmluZChleHBvcnRzLCBfZGlzcGF0Y2gsICdvbicpOwoKCSAgLy8gcmV0dXJuIGV4cG9ydHMKCSAgcmV0dXJuIGV4cG9ydHM7Cgl9CgoJZXhwb3J0cy5kZWZhdWx0ID0gQ2hhcnRsZXQ7CgovKioqLyB9LAovKiA3ICovCi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKCSd1c2Ugc3RyaWN0JzsKCglPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgIl9fZXNNb2R1bGUiLCB7CgkgIHZhbHVlOiB0cnVlCgl9KTsKCWV4cG9ydHMuY3JlYXRlQ2hhcnQgPSBjcmVhdGVDaGFydDsKCgl2YXIgX3NrZWxldG9uID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKTsKCgl2YXIgX3NrZWxldG9uMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3NrZWxldG9uKTsKCgl2YXIgX2hlbHBlciA9IF9fd2VicGFja19yZXF1aXJlX18oNSk7CgoJdmFyIF9oZWxwZXIyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaGVscGVyKTsKCglmdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfQoKCS8qKgoJICogUmV0dXJuIGEgY29uc3RydWN0b3IgZm9yIHlvdXIgY3VzdG9tIGNoYXJ0IHR5cGUKCSAqIEBwYXJhbSAgT2JqZWN0ICAgICAgICBkZWZhdWx0T3B0aW9ucyBkZWZhdWx0IG9wdGlvbnMgZm9yIHlvdXIgY2hhcnQKCSAqIEBwYXJhbSAgQXJyYXlbU3RyaW5nXSBjdXN0b21FdmVudHMgICBsaXN0IG9mIGN1c3RvbSBldmVudHMgdGhpcyBjaGFydCB3aWxsIGRpc3BhdGNoCgkgKiBAcGFyYW0gIEZ1bmN0aW9uICAgICAgY29uc3RydWN0b3IgICAgY29uc3RydWN0b3IgZnVuY3Rpb24gZnVuY3Rpb24oc2tlbGV0b24pey4uLn0KCSAqIEByZXR1cm4gRnVuY3Rpb24gICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbihjaGFydE5vZGUsIG9wdGlvbnMpIHRoYXQgcmV0dXJuIHlvdXIgY2hhcnQKCSAqLwoJZnVuY3Rpb24gY3JlYXRlQ2hhcnQoZGVmYXVsdE9wdGlvbnMsIGN1c3RvbUV2ZW50cywgY29uc3RydWN0b3IpIHsKCSAgdmFyIG5ld0NoYXJ0Q2xhc3MgPSBmdW5jdGlvbiBuZXdDaGFydENsYXNzKGNoYXJ0Tm9kZSwgb3B0aW9ucykgewoJICAgIHZhciBza2VsZXRvbiA9IG5ldyBfc2tlbGV0b24yLmRlZmF1bHQoY2hhcnROb2RlLCBfaGVscGVyMi5kZWZhdWx0LmRlZXBFeHRlbmQoe30sIGRlZmF1bHRPcHRpb25zLCBvcHRpb25zKSwgY3VzdG9tRXZlbnRzKTsKCSAgICBpZiAoY29uc3RydWN0b3IpIGNvbnN0cnVjdG9yKHNrZWxldG9uKTsKCSAgICByZXR1cm4gc2tlbGV0b247CgkgIH07CgoJICBjdXN0b21FdmVudHMgPSBjdXN0b21FdmVudHMgPyBjdXN0b21FdmVudHMgOiBbXTsKCgkgIC8qKgoJICAgKiBSZXR1cm4gc3VwcG9ydGVkIGN1c3RvbSBldmVudHMgZm9yIHRoaXMgY2hhcnQgY2xhc3MuCgkgICAqIFRoaXMgaXMgYSBzdGF0aWMgbWV0aG9kIGZvciBjbGFzcywgbm90IGluc3RhbmNlIG1ldGhvZC4KCSAgICogQHJldHVybiBBcnJheVtTdHJpbmddIG5hbWVzIG9mIGN1c3RvbSBldmVudHMKCSAgICovCgkgIG5ld0NoYXJ0Q2xhc3MuZ2V0Q3VzdG9tRXZlbnRzID0gZnVuY3Rpb24gKCkgewoJICAgIHJldHVybiBjdXN0b21FdmVudHM7CgkgIH07CgoJICByZXR1cm4gbmV3Q2hhcnRDbGFzczsKCX0KCi8qKiovIH0KLyoqKioqKi8gXSkKfSk7Cjs="></script>
<link href="data:text/css;charset=utf-8,%2Etreebar%20label%20%7B%0Afont%2Dfamily%3A%20sans%2Dserif%3B%0Afont%2Dsize%3A%2014px%3B%0Aposition%3A%20absolute%3B%0Aleft%3A%2092px%3B%20top%3A%2026px%3B%0A%7D%0A%2Etreebar%20%2Eaxis%20%2Edomain%20%7B%20display%3A%20none%3B%20%7D%0A%2Etreebar%20%2Eaxis%20line%20%7B%20stroke%3A%20%23ccc%3B%20%7D%0A%2Etreebar%20%2Eaxis%2Ex0%20text%20%7B%20font%2Dweight%3A%20700%3B%20%7D%0A%2Etreebar%20%2Ehover%2Dactive%20rect%20%7B%20opacity%3A%20%2E75%3B%20%7D%0A%2Etreebar%20%2Ehover%2Dactive%20rect%2Ehover%20%7B%20opacity%3A%201%3B%20%7D%0A" rel="stylesheet" />
<script src="data:application/x-javascript;base64,dmFyIERFRkFVTFRfT1BUSU9OUyA9IHsNCiAgbWFyZ2luOiB7IHRvcDogMTUsIHJpZ2h0OiAxNSwgYm90dG9tOiA0MCwgbGVmdDogNjAgfSwNCiAgd2lkdGg6IDk2MCwNCiAgaGVpZ2h0OiA1MDAsDQogIGNvbG9yOiBkMy5zY2FsZU9yZGluYWwoZDMuc2NoZW1lQ2F0ZWdvcnkxMCksDQogIGlkOiAiaWQiLA0KICB2YWx1ZTogInZhbHVlIiwNCiAgdGlsZTogIlNxdWFyaWZ5Ig0KfTsNCg0KdmFyIENVU1RPTV9FVkVOVFMgPSBbXTsNCg0KdmFyIFRyZWViYXIgPSBkM0tpdC5mYWN0b3J5LmNyZWF0ZUNoYXJ0KA0KICBERUZBVUxUX09QVElPTlMsDQogIENVU1RPTV9FVkVOVFMsDQogIGNvbnN0cnVjdG9yDQopOw0KDQpmdW5jdGlvbiBjb25zdHJ1Y3Rvcihza2VsZXRvbikgew0KDQogIHZhciBsYXllcnMgPSBza2VsZXRvbi5nZXRMYXllck9yZ2FuaXplcigpOw0KICB2YXIgZGlzcGF0Y2ggPSBza2VsZXRvbi5nZXREaXNwYXRjaGVyKCk7DQogIHZhciBvcHRpb25zID0gc2tlbGV0b24ub3B0aW9ucygpOw0KDQogIGxheWVycy5jcmVhdGUoWyd4LWF4aXMnLCAneS1heGlzJywgJ2NvbnRlbnQnXSk7DQoNCiAgdmFyIHgwID0gZDMuc2NhbGVCYW5kKCkNCiAgICAucmFuZ2UoWzAsIHNrZWxldG9uLmdldElubmVyV2lkdGgoKV0pOw0KICAgIA0KICB2YXIgeDEgPSBkMy5zY2FsZUJhbmQoKQ0KICAgIC5yYW5nZShbMCwgc2tlbGV0b24uZ2V0SW5uZXJXaWR0aCgpXSk7DQoNCiAgdmFyIHkgPSBkMy5zY2FsZUxpbmVhcigpDQogICAgLnJhbmdlKFswLCBza2VsZXRvbi5nZXRJbm5lckhlaWdodCgpXSk7DQoNCiAgdmFyIHZpc3VhbGl6ZSA9IGQzS2l0LmhlbHBlci5kZWJvdW5jZShmdW5jdGlvbigpew0KICAgIA0KICAgIGlmKCFza2VsZXRvbi5oYXNEYXRhKCkpew0KICAgICAgZDNLaXQuaGVscGVyLnJlbW92ZUFsbENoaWxkcmVuKGxheWVycy5nZXQoJ2NvbnRlbnQnKSk7DQogICAgICByZXR1cm47DQogICAgfQ0KICAgIA0KICAgIHZhciBkYXRhID0gc2tlbGV0b24uZGF0YSgpOw0KICAgIA0KICAgIHZhciB3aWR0aCA9IHNrZWxldG9uLmdldElubmVyV2lkdGgoKTsNCiAgICB2YXIgaGVpZ2h0ID0gc2tlbGV0b24uZ2V0SW5uZXJIZWlnaHQoKTsNCiAgICANCiAgICB2YXIgcm9vdCA9IGQzLmhpZXJhcmNoeShkYXRhKQ0KICAgICAgLnN1bShmdW5jdGlvbiAoZCkgeyByZXR1cm4gZFtvcHRpb25zLnZhbHVlXSB9KTsNCiAgICAgIA0KICAgIHZhciBkZXB0aDFEYXRhID0gcm9vdC5jaGlsZHJlbjsNCiAgICBkZXB0aDFEYXRhLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHsNCiAgICAgIHJldHVybiBhLmRhdGFbb3B0aW9ucy5pZF0gLSBiLmRhdGFbb3B0aW9ucy5pZF0NCiAgICB9KTsNCiAgICANCiAgICB2YXIgc3ZnID0gbGF5ZXJzLmdldCgnY29udGVudCcpOw0KICAgIA0KICAgIHZhciBzZWxlY3Rpb24gPSBsYXllcnMuZ2V0KCdjb250ZW50Jykuc2VsZWN0QWxsKCdjaXJjbGUnKQ0KICAgICAgLmRhdGEoZGF0YSk7DQoNCiAgICBzZWxlY3Rpb24uZXhpdCgpLnJlbW92ZSgpOw0KDQogICAgdmFyIHNFbnRlciA9IHNlbGVjdGlvbi5lbnRlcigpLmFwcGVuZCgnY2lyY2xlJykNCg0KICAgIHZhciBjb2xvciA9IG9wdGlvbnMuY29sb3I7DQoNCiAgICBzZWxlY3Rpb24ubWVyZ2Uoc0VudGVyKQ0KDQogICAgeDAuZG9tYWluKGRlcHRoMURhdGEubWFwKGZ1bmN0aW9uIChkKSB7IHJldHVybiBkLmRhdGFbb3B0aW9ucy5pZF0gfSkuc29ydCgpKQ0KICAgICAgLnJhbmdlKFswLCB3aWR0aF0pDQogICAgICAucGFkZGluZygwLjE1KTsNCg0KICAgIHgxLmRvbWFpbigNCiAgICAgIGQzLnNldCgNCiAgICAgICAgZDMubWVyZ2UoZGVwdGgxRGF0YS5tYXAoDQogICAgICAgICAgZnVuY3Rpb24gKGQpIHsNCiAgICAgICAgICAgIHZhciBpZHMgPSBkLmRhdGEuY2hpbGRyZW4ubWFwKGZ1bmN0aW9uKGRkKXsNCiAgICAgICAgICAgICAgcmV0dXJuIGRkW29wdGlvbnMuaWRdOw0KICAgICAgICAgICAgfSk7DQogICAgICAgICAgICByZXR1cm4gaWRzOw0KICAgICAgICAgIH0NCiAgICAgICAgKSkpLnZhbHVlcygpDQogICAgICApDQogICAgICAucmFuZ2VSb3VuZChbMCwgeDAuYmFuZHdpZHRoKCldKQ0KICAgICAgLnBhZGRpbmdJbm5lcigwLjEpOw0KDQogICAgeS5kb21haW4oWzAsIGQzLm1heChkZXB0aDFEYXRhLCBmdW5jdGlvbiAoZCkgew0KICAgICAgICAgIHJldHVybiBkMy5tYXgoZC5jaGlsZHJlbiwgZnVuY3Rpb24gKGUpIHsgcmV0dXJuIGUudmFsdWUgfSkNCiAgICAgIH0pXSkubmljZSgpDQogICAgICAucmFuZ2UoWzAsaGVpZ2h0XSk7DQoNCiAgICB2YXIgeDBBeGlzID0gZDMuYXhpc0JvdHRvbSgpDQogICAgICAgIC5zY2FsZSh4MCkNCiAgICAgICAgLnRpY2tTaXplKDApDQoNCiAgICB2YXIgeDFBeGlzID0gZDMuYXhpc0JvdHRvbSgpDQogICAgICAgIC5zY2FsZSh4MSkNCg0KICAgIHZhciB5QXhpcyA9IGQzLmF4aXNMZWZ0KCkNCiAgICAgICAgLnRpY2tTaXplKC1za2VsZXRvbi5nZXRJbm5lcldpZHRoKCkpDQogICAgICAgIC5zY2FsZSh5LmNvcHkoKS5yYW5nZShbc2tlbGV0b24uZ2V0SW5uZXJIZWlnaHQoKSwgMF0pKQ0KDQogICAgbGF5ZXJzLmdldCgneC1heGlzJykNCiAgICAgIC5hdHRyKCd0cmFuc2Zvcm0nLCAndHJhbnNsYXRlKDAsJyArIChza2VsZXRvbi5nZXRJbm5lckhlaWdodCgpKzIyKSArICcpJykNCiAgICAgIC5jbGFzc2VkKCdheGlzJywgdHJ1ZSkNCiAgICAgIC5jYWxsKHgwQXhpcyk7DQoNCiAgICBsYXllcnMuZ2V0KCd5LWF4aXMnKQ0KICAgICAgLmNsYXNzZWQoJ2F4aXMnLCB0cnVlKQ0KICAgICAgLmNhbGwoeUF4aXMpOw0KDQogICAgdmFyIGRlcHRoMSA9IHN2Zy5zZWxlY3RBbGwoJy5kZXB0aDEnKQ0KICAgICAgLmRhdGEoZGVwdGgxRGF0YSwgZnVuY3Rpb24gKGQpIHsgcmV0dXJuIGQuZGF0YVtvcHRpb25zLmlkXSB9KQ0KICAgICAgLmVudGVyKCkuYXBwZW5kKCdnJykNCiAgICAgIC5hdHRyKCdjbGFzcycsICdkZXB0aDEnKQ0KICAgICAgLmF0dHIoJ3RyYW5zZm9ybScsIGZ1bmN0aW9uIChkKSB7DQogICAgICAgICAgcmV0dXJuICd0cmFuc2xhdGUoJyArIHgwKGQuZGF0YVtvcHRpb25zLmlkXSkgKyAnLDApJw0KICAgICAgfSk7DQoNCiAgICBkZXB0aDEuYXBwZW5kKCdnJykNCiAgICAgIC5hdHRyKCdjbGFzcycsICd4MSBheGlzJykNCiAgICAgIC5hdHRyKCd0cmFuc2Zvcm0nLCAndHJhbnNsYXRlKDAsJyArIGhlaWdodCArICcpJykNCiAgICAgIC5jYWxsKHgxQXhpcykNCg0KICAgIHVwZGF0ZSgpDQoNCiAgICBmdW5jdGlvbiBzdW0oZCkgew0KICAgICAgICByZXR1cm4gIW9wdGlvbnMuX3NlbGVjdGVkIHx8IG9wdGlvbnMuX3NlbGVjdGVkID09PSBkW29wdGlvbnMuaWRdID8gZFtvcHRpb25zLnZhbHVlXSA6IDANCiAgICB9DQoNCiAgICBmdW5jdGlvbiB1cGRhdGUoKSB7DQogICAgICAgIHJvb3Quc3VtKHN1bSkNCg0KICAgICAgICB2YXIgdCA9IGQzLnRyYW5zaXRpb24oKQ0KDQogICAgICAgIHZhciBkZXB0aDJEYXRhID0gZDMubWVyZ2UoZGVwdGgxRGF0YS5tYXAoZnVuY3Rpb24gKGQpIHsgcmV0dXJuIGQuY2hpbGRyZW4gfSkpDQogICAgICAgIA0KICAgICAgICB2YXIgZGVwdGgySWRzID0gZDMuc2V0KA0KICAgICAgICAgIGRlcHRoMkRhdGEubWFwKA0KICAgICAgICAgICAgZnVuY3Rpb24oZCl7cmV0dXJuIGQuZGF0YVtvcHRpb25zLmlkXX0NCiAgICAgICAgICApDQogICAgICAgICkudmFsdWVzKCkuc29ydChkMy5hc2NlbmRpbmcpOw0KICAgICAgICANCiAgICAgICAgeS5kb21haW4oWzAsIGQzLm1heChkZXB0aDJEYXRhLm1hcChmdW5jdGlvbiAoZCkgeyByZXR1cm4gZC52YWx1ZSB9KSldKS5uaWNlKCkNCg0KICAgICAgICAvLyBXZSB1c2UgYSBjb3BpZWQgWSBzY2FsZSB0byBpbnZlcnQgdGhlIHJhbmdlIGZvciBkaXNwbGF5IHB1cnBvc2VzDQogICAgICAgIHlBeGlzLnNjYWxlKHkuY29weSgpLnJhbmdlKFtoZWlnaHQsIDBdKSkNCiAgICAgICAgbGF5ZXJzLmdldCgneS1heGlzJykudHJhbnNpdGlvbih0KS5jYWxsKHlBeGlzKQ0KDQogICAgICAgIHZhciBkZXB0aDIgPSBkZXB0aDEuc2VsZWN0QWxsKCcuZGVwdGgyJykNCiAgICAgICAgICAgIC5kYXRhKGZ1bmN0aW9uIChkKSB7DQogICAgICAgICAgICAgICAgcmV0dXJuIGQuY2hpbGRyZW4NCiAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgZnVuY3Rpb24gKGQpIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gZC5kYXRhW29wdGlvbnMuaWRdOw0KICAgICAgICAgICAgICB9DQogICAgICAgICAgICApDQogICAgICAgICAgICAuZWFjaChmdW5jdGlvbiAoZCkgew0KICAgICAgICAgICAgICAgIC8vIFVQREFURQ0KICAgICAgICAgICAgICAgIC8vIFRoZSBjb3BpZWQgYnJhbmNoZXMgYXJlIG9ycGhhbmVkIGZyb20gdGhlIGxhcmdlciBoaWVyYXJjaHksIGFuZCBtdXN0IGJlDQogICAgICAgICAgICAgICAgLy8gdXBkYXRlZCBzZXBhcmF0ZWx5IChzZWUgbm90ZSBhdCBMMTUyKS4NCiAgICAgICAgICAgICAgICBkLnRyZWVtYXBSb290LnN1bShzdW0pDQogICAgICAgICAgICAgICAgZC50cmVlbWFwUm9vdC5jaGlsZHJlbi5mb3JFYWNoKGZ1bmN0aW9uIChkKSB7DQogICAgICAgICAgICAgICAgICAgIGQuc29ydChmdW5jdGlvbiAoYSwgYikgeyByZXR1cm4gYi52YWx1ZSAtIGEudmFsdWUgfSkNCiAgICAgICAgICAgICAgICB9KQ0KICAgICAgICAgICAgfSkNCg0KICAgICAgICBkZXB0aDIgPSBkZXB0aDIuZW50ZXIoKS5hcHBlbmQoJ2cnKQ0KICAgICAgICAgICAgLmF0dHIoJ2NsYXNzJywgJ2RlcHRoMicpDQogICAgICAgICAgICAuYXR0cigndHJhbnNmb3JtJywgZnVuY3Rpb24gKGQpIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gJ3RyYW5zbGF0ZSgnICsgeDEoZC5kYXRhW29wdGlvbnMuaWRdKSArICcsJyArIGhlaWdodCArICcpJw0KICAgICAgICAgICAgfSkNCiAgICAgICAgICAgIC5lYWNoKGZ1bmN0aW9uIChkKSB7DQogICAgICAgICAgICAgICAgLy8gRU5URVINCiAgICAgICAgICAgICAgICAvLyBOb3RlIHRoYXQgd2UgY2FuIHVzZSAuZWFjaCBvbiBzZWxlY3Rpb25zIGFzIGEgd2F5IHRvIHBlcmZvcm0gb3BlcmF0aW9ucw0KICAgICAgICAgICAgLy8gYXQgYSBnaXZlbiBkZXB0aCBvZiB0aGUgaGllcmFyY2h5IHRyZWUuDQogICAgICAgICAgICAgICAgZC5jaGlsZHJlbi5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBkZXB0aDJJZHMuaW5kZXhPZihiLmRhdGFbb3B0aW9ucy5pZF0pIC0NCiAgICAgICAgICAgICAgICAgICAgICAgIGRlcHRoMklkcy5pbmRleE9mKGEuZGF0YVtvcHRpb25zLmlkXSkNCiAgICAgICAgICAgICAgICB9KQ0KICAgICAgICAgICAgICAgIGQuY2hpbGRyZW4uZm9yRWFjaChmdW5jdGlvbiAoZCkgew0KICAgICAgICAgICAgICAgICAgICBkLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHsgcmV0dXJuIGIudmFsdWUgLSBhLnZhbHVlIH0pDQogICAgICAgICAgICAgICAgfSkNCiAgICAgICAgICAgICAgICBkLnRyZWVtYXAgPSBkMy50cmVlbWFwKCkudGlsZShkM1sidHJlZW1hcCIgKyBvcHRpb25zLnRpbGVdKTsNCg0KICAgICAgICAgICAgICAgIC8vIFRoZSB0cmVlbWFwIGxheW91dCBtdXN0IGJlIGdpdmVuIGEgcm9vdCBub2RlLCBzbyB3ZSBtYWtlIGEgY29weSBvZiBvdXINCiAgICAgICAgICAgICAgICAvLyBjaGlsZCBub2RlLCB3aGljaCBjcmVhdGVzIGEgbmV3IHRyZWUgZnJvbSB0aGUgYnJhbmNoLg0KICAgICAgICAgICAgICAgIGQudHJlZW1hcFJvb3QgPSBkLmNvcHkoKQ0KICAgICAgICAgICAgfSkNCiAgICAgICAgICAgIC5tZXJnZShkZXB0aDIpDQogICAgICAgICAgICAuZWFjaChmdW5jdGlvbiAoZCkgew0KICAgICAgICAgICAgICAgIC8vIFVQREFURSArIEVOVEVSDQogICAgICAgICAgICAgICAgZC50cmVlbWFwLnNpemUoW3gxLmJhbmR3aWR0aCgpLCB5KGQudmFsdWUpXSkoZC50cmVlbWFwUm9vdCkNCiAgICAgICAgICAgIH0pDQoNCiAgICAgICAgLy8gZDMuaGllcmFyY2h5IGdpdmVzIHVzIGEgY29udmVuaWVudCB3YXkgdG8gYWNjZXNzIHRoZSBwYXJlbnQgZGF0dW0uIFRoaXMgbGluZQ0KICAgICAgICAvLyBhZGRzIGFuIGluZGV4IHByb3BlcnR5IHRvIGVhY2ggbm9kZSB0aGF0IHdlJ2xsIHVzZSBmb3IgdGhlIHRyYW5zaXRpb24gZGVsYXkuDQogICAgICAgIHJvb3QuZWFjaChmdW5jdGlvbiAoZCkgew0KICAgICAgICAgIGQuaW5kZXggPSBkLnBhcmVudCA/IGQucGFyZW50LmNoaWxkcmVuLmluZGV4T2YoZCkgOiAwDQogICAgICAgIH0pDQoNCiAgICAgICAgZGVwdGgyLnRyYW5zaXRpb24odCkNCiAgICAgICAgICAgIC5kZWxheShmdW5jdGlvbiAoZCwgaSkgeyByZXR1cm4gZC5wYXJlbnQuaW5kZXggKiAxNTAgKyBpICogNTAgfSkNCiAgICAgICAgICAgIC5hdHRyKCd0cmFuc2Zvcm0nLCBmdW5jdGlvbiAoZCkgew0KICAgICAgICAgICAgICAgIHJldHVybiAndHJhbnNsYXRlKCcgKyB4MShkLmRhdGFbb3B0aW9ucy5pZF0pICsgJywnICsgKGhlaWdodCAtIHkoZC52YWx1ZSkpICsgJyknDQogICAgICAgICAgICB9KQ0KDQogICAgICAgIHZhciBkZXB0aDMgPSBkZXB0aDIuc2VsZWN0QWxsKCcuZGVwdGgzJykNCiAgICAgICAgICAgIC8vIE5vdGUgdGhhdCB3ZSdyZSB1c2luZyBvdXIgY29waWVkIGJyYW5jaC4NCiAgICAgICAgICAgIC5kYXRhKA0KICAgICAgICAgICAgICBmdW5jdGlvbiAoZCkgew0KICAgICAgICAgICAgICAgIHJldHVybiBkLnRyZWVtYXBSb290LmNoaWxkcmVuDQogICAgICAgICAgICAgIH0sDQogICAgICAgICAgICAgIGZ1bmN0aW9uIChkKSB7DQogICAgICAgICAgICAgICAgcmV0dXJuIGQuZGF0YVtvcHRpb25zLmlkXQ0KICAgICAgICAgICAgICB9DQogICAgICAgICAgICApDQoNCiAgICAgICAgZGVwdGgzID0gZGVwdGgzLmVudGVyKCkuYXBwZW5kKCdnJykNCiAgICAgICAgICAgIC5hdHRyKCdjbGFzcycsICdkZXB0aDMnKQ0KICAgICAgICAgICAgLm1lcmdlKGRlcHRoMykNCg0KICAgICAgICB2YXIgZGVwdGg0ID0gZGVwdGgzLnNlbGVjdEFsbCgnLmRlcHRoNCcpDQogICAgICAgICAgICAuZGF0YShmdW5jdGlvbiAoZCkgew0KICAgICAgICAgICAgICByZXR1cm4gZC5jaGlsZHJlbg0KICAgICAgICAgICAgfSwNCiAgICAgICAgICAgIGZ1bmN0aW9uIChkKSB7DQogICAgICAgICAgICAgIHJldHVybiBkLmRhdGFbb3B0aW9ucy5pZF0NCiAgICAgICAgICAgIH0pDQoNCiAgICAgICAgdmFyIGVudGVyRGVwdGg0ID0gZGVwdGg0LmVudGVyKCkuYXBwZW5kKCdyZWN0JykNCiAgICAgICAgICAgIC5hdHRyKCdjbGFzcycsICdkZXB0aDQnKQ0KICAgICAgICAgICAgLmF0dHIoJ3gnLCBmdW5jdGlvbiAoZCkgeyByZXR1cm4gZC52YWx1ZSA/IGQueDAgOiB4MS5iYW5kd2lkdGgoKSAvIDIgfSkNCiAgICAgICAgICAgIC5hdHRyKCd3aWR0aCcsIGZ1bmN0aW9uIChkKSB7IHJldHVybiBkLnZhbHVlID8gZC54MSAtIGQueDAgOiAwIH0pDQogICAgICAgICAgICAuYXR0cigneScsIDApDQogICAgICAgICAgICAuYXR0cignaGVpZ2h0JywgMCkNCiAgICAgICAgICAgIC5zdHlsZSgnZmlsbCcsIGZ1bmN0aW9uIChkKSB7IHJldHVybiBjb2xvcihkLnBhcmVudC5kYXRhW29wdGlvbnMuaWRdKSB9KQ0KDQogICAgICAgIGRlcHRoNCA9IGRlcHRoNC5tZXJnZShlbnRlckRlcHRoNCkNCg0KICAgICAgICBlbnRlckRlcHRoNA0KICAgICAgICAgICAgLm9uKCdtb3VzZW92ZXInLCBmdW5jdGlvbiAoZCkgew0KICAgICAgICAgICAgICAgIHN2Zy5jbGFzc2VkKCdob3Zlci1hY3RpdmUnLCB0cnVlKQ0KICAgICAgICAgICAgICAgIGRlcHRoNC5jbGFzc2VkKCdob3ZlcicsIGZ1bmN0aW9uIChlKSB7DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBlLmRhdGFbb3B0aW9ucy5pZF0gPT09IGQuZGF0YVtvcHRpb25zLmlkXQ0KICAgICAgICAgICAgICAgIH0pDQogICAgICAgICAgICB9KQ0KICAgICAgICAgICAgLm9uKCdtb3VzZW91dCcsIGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgICAgICBzdmcuY2xhc3NlZCgnaG92ZXItYWN0aXZlJywgZmFsc2UpDQogICAgICAgICAgICAgICAgZGVwdGg0LmNsYXNzZWQoJ2hvdmVyJywgZmFsc2UpDQogICAgICAgICAgICB9KQ0KICAgICAgICAgICAgLm9uKCdjbGljaycsIGZ1bmN0aW9uIChkKSB7DQogICAgICAgICAgICAgICAgb3B0aW9ucy5fc2VsZWN0ZWQgPSBvcHRpb25zLl9zZWxlY3RlZCA9PT0gZC5kYXRhW29wdGlvbnMuaWRdID8gbnVsbCA6IGQuZGF0YVtvcHRpb25zLmlkXQ0KICAgICAgICAgICAgICAgIHVwZGF0ZSgpDQogICAgICAgICAgICB9KQ0KICAgICAgICAgICAgLmFwcGVuZCgndGl0bGUnKQ0KICAgICAgICAgICAgLnRleHQoZnVuY3Rpb24gKGQpIHsgcmV0dXJuIGQuZGF0YVtvcHRpb25zLmlkXSB9KQ0KDQogICAgICAgIGRlcHRoNC5maWx0ZXIoZnVuY3Rpb24gKGQpIHsgcmV0dXJuIGQuZGF0YVtvcHRpb25zLmlkXSA9PT0gb3B0aW9ucy5fc2VsZWN0ZWQgfSkNCiAgICAgICAgICAgIC5lYWNoKGZ1bmN0aW9uIChkKSB7IGQzLnNlbGVjdCh0aGlzLnBhcmVudE5vZGUpLnJhaXNlKCkgfSkNCiAgICAgICAgICAgIC5yYWlzZSgpDQoNCiAgICAgICAgZGVwdGg0DQogICAgICAgICAgICAudHJhbnNpdGlvbih0KQ0KICAgICAgICAgICAgLmF0dHIoJ3gnLCBmdW5jdGlvbiAoZCkgew0KICAgICAgICAgICAgICByZXR1cm4gZC52YWx1ZSA/IGQueDAgOiB4MS5iYW5kd2lkdGgoKSAvIDINCiAgICAgICAgICAgIH0pDQogICAgICAgICAgICAuYXR0cignd2lkdGgnLCBmdW5jdGlvbiAoZCkgew0KICAgICAgICAgICAgICByZXR1cm4gZC52YWx1ZSA/IGQueDEgLSBkLngwIDogMA0KICAgICAgICAgICAgfSkNCiAgICAgICAgICAgIC5hdHRyKCd5JywgZnVuY3Rpb24gKGQpIHsNCiAgICAgICAgICAgICAgcmV0dXJuIGQudmFsdWUgPyBkLnkwIDogZC5wYXJlbnQucGFyZW50LnkxIC8gMg0KICAgICAgICAgICAgfSkNCiAgICAgICAgICAgIC5hdHRyKCdoZWlnaHQnLCBmdW5jdGlvbiAoZCkgew0KICAgICAgICAgICAgICByZXR1cm4gZC52YWx1ZSA/IGQueTEgLSBkLnkwIDogMA0KICAgICAgICAgICAgfSkNCiAgICAgICAgICAgIA0KICAgIH0NCiAgfSwgMTApOw0KDQogIHNrZWxldG9uDQogICAgLm9uKCdvcHRpb25zJywgdmlzdWFsaXplKQ0KICAgIC5vbignZGF0YScsIHZpc3VhbGl6ZSk7DQp9DQoNCg=="></script>
<script src="data:application/x-javascript;base64,SFRNTFdpZGdldHMud2lkZ2V0KHsNCg0KICBuYW1lOiAndHJlZWJhcicsDQoNCiAgdHlwZTogJ291dHB1dCcsDQoNCiAgZmFjdG9yeTogZnVuY3Rpb24oZWwsIHdpZHRoLCBoZWlnaHQpIHsNCg0KICAgIHZhciBpbnN0YW5jZSA9IHt9Ow0KDQogICAgcmV0dXJuIHsNCg0KICAgICAgcmVuZGVyVmFsdWU6IGZ1bmN0aW9uKHgpIHsNCiAgICAgICAgDQogICAgICAgIGluc3RhbmNlLnggPSB4Ow0KICAgICAgICANCiAgICAgICAgLy8gdWdseSBhbmQgd2lsbCBmaXggYnV0IGZvciBub3cNCiAgICAgICAgLy8gICBlbXB0eSBhbmQgcmUtcmVuZGVyIGluIGR5bmFtaWMNCiAgICAgICAgZWwuaW5uZXJIVE1MID0gIiI7DQogICAgICAgICAgdmFyIHRyZWViYXIgPSBuZXcgVHJlZWJhcihlbCwgeC5vcHRpb25zKTsNCiAgICAgICAgICANCiAgICAgICAgICB0cmVlYmFyDQogICAgICAgICAgICAud2lkdGgoZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGgpDQogICAgICAgICAgICAuaGVpZ2h0KGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodCkNCiAgICAgICAgICAgIC5kYXRhKHguZGF0YSk7DQogICAgICB9LA0KDQogICAgICByZXNpemU6IGZ1bmN0aW9uKHdpZHRoLCBoZWlnaHQpIHsNCg0KICAgICAgICB0aGlzLnJlbmRlclZhbHVlKGluc3RhbmNlLngpOw0KDQogICAgICB9LA0KICAgICAgDQogICAgICBpbnN0YW5jZTogaW5zdGFuY2UNCg0KICAgIH07DQogIH0NCn0pOw=="></script>
</head>
<body style="background-color:white;">
<div style="float:left; display:inline;">
<h3>
Squarify
</h3>
<div id="htmlwidget-c633fc2fd764cad19aae" class="treebar html-widget" style="width:400px;height:250px;">
</div>
<script type="application/json" data-for="htmlwidget-c633fc2fd764cad19aae">{"x":{"data":{"children":[{"id":"1995","children":[{"id":"Imports","children":[{"id":"North America","children":[{"id":"Greenland","value":7.6,"adj_value":11.81952},{"id":"Canada","value":144369.9,"adj_value":224524.0685},{"id":"St Pierre and Miquelon","value":3.4,"adj_value":5.28768},{"id":"Mexico","value":62100.4,"adj_value":96578.54208},{"id":"Guatemala","value":1526.8,"adj_value":2374.47936},{"id":"Belize","value":52.1,"adj_value":81.02592},{"id":"El Salvador","value":812.2,"adj_value":1263.13344},{"id":"Honduras","value":1441.2,"adj_value":2241.35424},{"id":"Nicaragua","value":238.8,"adj_value":371.38176},{"id":"Costa Rica","value":1843.2,"adj_value":2866.54464},{"id":"Panama","value":307.1,"adj_value":477.60192},{"id":"Bermuda","value":10.4,"adj_value":16.17408},{"id":"Bahamas","value":156.7,"adj_value":243.69984},{"id":"Cuba","value":0,"adj_value":0},{"id":"Jamaica","value":846.9,"adj_value":1317.09888},{"id":"Turks and Caicos Islands","value":5,"adj_value":7.776},{"id":"Cayman Islands","value":18.2,"adj_value":28.30464},{"id":"Haiti","value":129.9,"adj_value":202.02048},{"id":"Dominican Republic","value":3398.9,"adj_value":5285.96928},{"id":"Anguilla","value":0,"adj_value":0},{"id":"British Virgin Islands","value":11.2,"adj_value":17.41824},{"id":"St Kitts and Nevis","value":22.3,"adj_value":34.68096},{"id":"Antigua and Barbuda","value":2.8,"adj_value":4.35456},{"id":"Montserrat","value":2,"adj_value":3.1104},{"id":"Dominica","value":6.6,"adj_value":10.26432},{"id":"St Lucia","value":35.1,"adj_value":54.58752},{"id":"St Vincent and the Grenadines","value":7.9,"adj_value":12.28608},{"id":"Grenada","value":5.3,"adj_value":8.24256},{"id":"Barbados","value":37.7,"adj_value":58.63104},{"id":"Trinidad and Tobago","value":1089.2,"adj_value":1693.92384},{"id":"Netherlands Antilles","value":289.8,"adj_value":450.69696},{"id":"Aruba","value":420.7,"adj_value":654.27264},{"id":"Guadeloupe","value":1.2,"adj_value":1.86624},{"id":"Martinique","value":1.9,"adj_value":2.95488}]},{"id":"South America","children":[{"id":"Colombia","value":3791,"adj_value":5895.7632},{"id":"Venezuela","value":9764,"adj_value":15184.9728},{"id":"Guyana","value":107.4,"adj_value":167.02848},{"id":"Suriname","value":100,"adj_value":155.52},{"id":"French Guiana","value":5.2,"adj_value":8.08704},{"id":"Ecuador","value":1939.7,"adj_value":3016.62144},{"id":"Peru","value":1034.4,"adj_value":1608.69888},{"id":"Bolivia","value":262.5,"adj_value":408.24},{"id":"Chile","value":1930.8,"adj_value":3002.78016},{"id":"Brazil","value":8832.9,"adj_value":13736.92608},{"id":"Paraguay","value":55,"adj_value":85.536},{"id":"Uruguay","value":167.2,"adj_value":260.02944},{"id":"Argentina","value":1760.8,"adj_value":2738.39616},{"id":"Falkland Islands(Islas Malvin","value":0.5,"adj_value":0.7776}]},{"id":"Europe","children":[{"id":"Iceland","value":232.8,"adj_value":362.05056},{"id":"Sweden","value":6256.4,"adj_value":9729.95328},{"id":"Svalbard, Jan Mayen Island","value":0.2,"adj_value":0.31104},{"id":"Norway","value":3086.7,"adj_value":4800.43584},{"id":"Finland","value":2269.9,"adj_value":3530.14848},{"id":"Faroe Islands","value":8.4,"adj_value":13.06368},{"id":"Denmark","value":1944.9,"adj_value":3024.70848},{"id":"United Kingdom","value":26929.7,"adj_value":41881.06944},{"id":"Ireland","value":4078.7,"adj_value":6343.19424},{"id":"Netherlands","value":6404.9,"adj_value":9960.90048},{"id":"Belgium","value":6053.9,"adj_value":9415.02528},{"id":"Luxembourg","value":233.8,"adj_value":363.60576},{"id":"Andorra","value":0.2,"adj_value":0.31104},{"id":"Monaco","value":12.2,"adj_value":18.97344},{"id":"France","value":17209.4,"adj_value":26764.05888},{"id":"Germany","value":36843.9,"adj_value":57299.63328},{"id":"Austria","value":1963.2,"adj_value":3053.16864},{"id":"Czechoslovakia","value":0,"adj_value":0},{"id":"Czech Republic","value":363.3,"adj_value":565.00416},{"id":"Slovakia","value":129.5,"adj_value":201.3984},{"id":"Hungary","value":547,"adj_value":850.6944},{"id":"Liechtenstein","value":126.2,"adj_value":196.26624},{"id":"Switzerland","value":7593.9,"adj_value":11810.03328},{"id":"Estonia","value":62.1,"adj_value":96.57792},{"id":"Latvia","value":82,"adj_value":127.5264},{"id":"Lithuania","value":26.5,"adj_value":41.2128},{"id":"Poland","value":663.6,"adj_value":1032.03072},{"id":"USSR","value":0,"adj_value":0},{"id":"Russia","value":4030.1,"adj_value":6267.61152},{"id":"Belarus","value":45,"adj_value":69.984},{"id":"Ukraine","value":405.7,"adj_value":630.94464},{"id":"Armenia","value":16.3,"adj_value":25.34976},{"id":"Azerbaijan","value":0.7,"adj_value":1.08864},{"id":"Georgia","value":10.7,"adj_value":16.64064},{"id":"Kazakhstan","value":122.9,"adj_value":191.13408},{"id":"Kyrgyzstan","value":8.4,"adj_value":13.06368},{"id":"Moldova","value":24.8,"adj_value":38.56896},{"id":"Tajikistan","value":40.9,"adj_value":63.60768},{"id":"Turkmenistan","value":1.3,"adj_value":2.02176},{"id":"Uzbekistan","value":18.8,"adj_value":29.23776},{"id":"Spain","value":3879.7,"adj_value":6033.70944},{"id":"Portugal","value":1056.7,"adj_value":1643.37984},{"id":"Gibraltar","value":4.8,"adj_value":7.46496},{"id":"Malta","value":132.5,"adj_value":206.064},{"id":"San Marino","value":1,"adj_value":1.5552},{"id":"Vatican City","value":0.7,"adj_value":1.08864},{"id":"Italy","value":16348.4,"adj_value":25425.03168},{"id":"Yugoslavia (former)","value":0,"adj_value":0},{"id":"Croatia","value":93.8,"adj_value":145.87776},{"id":"Slovenia","value":289.5,"adj_value":450.2304},{"id":"Bosnia and Herzegovina","value":3.5,"adj_value":5.4432},{"id":"Macedonia","value":88.8,"adj_value":138.10176},{"id":"Serbia and Montenegro","value":0,"adj_value":0},{"id":"Albania","value":9.4,"adj_value":14.61888},{"id":"Greece","value":397.1,"adj_value":617.56992},{"id":"Romania","value":222.3,"adj_value":345.72096},{"id":"Bulgaria","value":188.5,"adj_value":293.1552}]},{"id":"Asia","children":[{"id":"Turkey","value":1797.9,"adj_value":2796.09408},{"id":"Cyprus","value":13.1,"adj_value":20.37312},{"id":"Syria","value":61.1,"adj_value":95.02272},{"id":"Lebanon","value":35,"adj_value":54.432},{"id":"Iraq","value":0,"adj_value":0},{"id":"Iran","value":0.2,"adj_value":0.31104},{"id":"Israel","value":0,"adj_value":0},{"id":"Israel","value":5708.7,"adj_value":8878.17024},{"id":"Gaza Strip admin. by Israel","value":0,"adj_value":0},{"id":"West Bank admin. by Israel","value":0,"adj_value":0},{"id":"Jordan","value":28.9,"adj_value":44.94528},{"id":"Kuwait","value":1335.5,"adj_value":2076.9696},{"id":"Iraq-Saudi Arabia Neutral Zone","value":0,"adj_value":0},{"id":"Saudi Arabia","value":8376.6,"adj_value":13027.28832},{"id":"Qatar","value":90.9,"adj_value":141.36768},{"id":"United Arab Emirates","value":459.1,"adj_value":713.99232},{"id":"Republic of Yemen","value":41.5,"adj_value":64.5408},{"id":"Oman","value":294.9,"adj_value":458.62848},{"id":"Bahrain","value":134.3,"adj_value":208.86336},{"id":"Afghanistan","value":5.4,"adj_value":8.39808},{"id":"India","value":5726.3,"adj_value":8905.54176},{"id":"Pakistan","value":1197,"adj_value":1861.5744},{"id":"Nepal","value":96.1,"adj_value":149.45472},{"id":"Bangladesh","value":1257.2,"adj_value":1955.19744},{"id":"Sri Lanka","value":1259.7,"adj_value":1959.08544},{"id":"Burma","value":81,"adj_value":125.9712},{"id":"Thailand","value":11348.1,"adj_value":17648.56512},{"id":"Vietnam","value":199,"adj_value":309.4848},{"id":"Laos","value":10.2,"adj_value":15.86304},{"id":"Cambodia","value":5.1,"adj_value":7.93152},{"id":"Malaysia","value":17454.9,"adj_value":27145.86048},{"id":"Singapore","value":18560.4,"adj_value":28865.13408},{"id":"Indonesia","value":7435.3,"adj_value":11563.37856},{"id":"Brunei","value":38.4,"adj_value":59.71968},{"id":"Philippines","value":7006.5,"adj_value":10896.5088},{"id":"Macau","value":895.3,"adj_value":1392.37056},{"id":"Bhutan","value":0.1,"adj_value":0.15552},{"id":"Maldives","value":12,"adj_value":18.6624},{"id":"China","value":45543.2,"adj_value":70828.78464},{"id":"Mongolia","value":23.2,"adj_value":36.08064},{"id":"Korea, North","value":0,"adj_value":0},{"id":"Korea, South","value":24184,"adj_value":37610.9568},{"id":"Hong Kong","value":10291.3,"adj_value":16005.02976},{"id":"Taiwan","value":28971.9,"adj_value":45057.09888},{"id":"Japan","value":123479.3,"adj_value":192035.0074}]},{"id":"Australia","children":[{"id":"Australia","value":3323,"adj_value":5167.9296},{"id":"Norfolk Island","value":78.6,"adj_value":122.23872},{"id":"Cocos (Keeling) Islands","value":0,"adj_value":0},{"id":"Christmas Island","value":0,"adj_value":0},{"id":"Heard and McDonald Islands","value":0.3,"adj_value":0.46656},{"id":"Papua New Guinea","value":50.2,"adj_value":78.07104},{"id":"New Zealand","value":1451.8,"adj_value":2257.83936},{"id":"Cook Islands","value":0.8,"adj_value":1.24416},{"id":"Tokelau","value":6.1,"adj_value":9.48672},{"id":"Niue","value":0.1,"adj_value":0.15552},{"id":"Samoa","value":0.3,"adj_value":0.46656},{"id":"Solomon Islands","value":4.3,"adj_value":6.68736},{"id":"Vanuatu","value":0,"adj_value":0},{"id":"Pitcairn Islands","value":0,"adj_value":0},{"id":"Kiribati","value":1.4,"adj_value":2.17728},{"id":"Tuvalu","value":0,"adj_value":0},{"id":"New Caledonia","value":40.2,"adj_value":62.51904},{"id":"Wallis and Futuna","value":0,"adj_value":0},{"id":"French Polynesia","value":14.4,"adj_value":22.39488},{"id":"Marshall Islands","value":11.1,"adj_value":17.26272},{"id":"Micronesia","value":13.2,"adj_value":20.52864},{"id":"Palau","value":5.8,"adj_value":9.02016},{"id":"Nauru","value":0,"adj_value":0},{"id":"Fiji","value":78.1,"adj_value":121.46112},{"id":"Tonga","value":6.2,"adj_value":9.64224}]},{"id":"Africa","children":[{"id":"Morocco","value":239.4,"adj_value":372.31488},{"id":"Algeria","value":1749.5,"adj_value":2720.8224},{"id":"Tunisia","value":70.4,"adj_value":109.48608},{"id":"Libya","value":0,"adj_value":0},{"id":"Egypt","value":606.3,"adj_value":942.91776},{"id":"Sudan","value":22.6,"adj_value":35.14752},{"id":"Western Sahara","value":0,"adj_value":0},{"id":"Equatorial Guinea","value":31,"adj_value":48.2112},{"id":"Mauritania","value":5.4,"adj_value":8.39808},{"id":"Cameroon","value":57.3,"adj_value":89.11296},{"id":"Senegal","value":4.9,"adj_value":7.62048},{"id":"Mali","value":3.6,"adj_value":5.59872},{"id":"Guinea","value":98.8,"adj_value":153.65376},{"id":"Sierra Leone","value":28.4,"adj_value":44.16768},{"id":"Cote d'Ivoire","value":214.1,"adj_value":332.96832},{"id":"Ghana","value":196.1,"adj_value":304.97472},{"id":"Gambia","value":2.2,"adj_value":3.42144},{"id":"Niger","value":1.4,"adj_value":2.17728},{"id":"Togo","value":3.3,"adj_value":5.13216},{"id":"Nigeria","value":4930.5,"adj_value":7667.9136},{"id":"Central African Republic","value":0.4,"adj_value":0.62208},{"id":"Gabon","value":1463.9,"adj_value":2276.65728},{"id":"Chad","value":3.3,"adj_value":5.13216},{"id":"St Helena","value":0,"adj_value":0},{"id":"Burkina Faso","value":0.4,"adj_value":0.62208},{"id":"Benin","value":10,"adj_value":15.552},{"id":"Angola","value":2232.3,"adj_value":3471.67296},{"id":"Congo (Brazzaville)","value":206.8,"adj_value":321.61536},{"id":"Guinea-Bissau","value":0,"adj_value":0},{"id":"Cabo Verde","value":0.2,"adj_value":0.31104},{"id":"Sao Tome and Principe","value":0.1,"adj_value":0.15552},{"id":"Liberia","value":9.9,"adj_value":15.39648},{"id":"Congo (Kinshasa)","value":267,"adj_value":415.2384},{"id":"Burundi","value":20.5,"adj_value":31.8816},{"id":"Rwanda","value":1.8,"adj_value":2.79936},{"id":"Somalia","value":0,"adj_value":0},{"id":"Ethiopia","value":0,"adj_value":0},{"id":"Eritrea","value":0.4,"adj_value":0.62208},{"id":"Ethiopia","value":32.9,"adj_value":51.16608},{"id":"Djibouti","value":0,"adj_value":0},{"id":"Uganda","value":13.4,"adj_value":20.83968},{"id":"Kenya","value":101.5,"adj_value":157.8528},{"id":"Seychelles","value":2.5,"adj_value":3.888},{"id":"British Indian Ocean Terr.","value":1.9,"adj_value":2.95488},{"id":"Tanzania","value":22.4,"adj_value":34.83648},{"id":"Mauritius","value":229.5,"adj_value":356.9184},{"id":"Mozambique","value":27.5,"adj_value":42.768},{"id":"Madagascar","value":57.4,"adj_value":89.26848},{"id":"Comoros","value":2.2,"adj_value":3.42144},{"id":"Reunion","value":0.4,"adj_value":0.62208},{"id":"French Southern and Antarctic","value":0.4,"adj_value":0.62208},{"id":"South Africa","value":2208,"adj_value":3433.8816},{"id":"Namibia","value":11.5,"adj_value":17.8848},{"id":"Botswana","value":21.3,"adj_value":33.12576},{"id":"Zambia","value":32.8,"adj_value":51.01056},{"id":"Swaziland","value":32.4,"adj_value":50.38848},{"id":"Zimbabwe","value":97.5,"adj_value":151.632},{"id":"Malawi","value":41.1,"adj_value":63.91872},{"id":"Lesotho","value":62.3,"adj_value":96.88896}]}]},{"id":"Exports","children":[{"id":"North America","children":[{"id":"Greenland","value":2.4,"adj_value":3.73248},{"id":"Canada","value":127226,"adj_value":197861.8752},{"id":"St Pierre and Miquelon","value":0.5,"adj_value":0.7776},{"id":"Mexico","value":46292.1,"adj_value":71993.47392},{"id":"Guatemala","value":1646.6,"adj_value":2560.79232},{"id":"Belize","value":99.7,"adj_value":155.05344},{"id":"El Salvador","value":1110.4,"adj_value":1726.89408},{"id":"Honduras","value":1278.9,"adj_value":1988.94528},{"id":"Nicaragua","value":249.8,"adj_value":388.48896},{"id":"Costa Rica","value":1736.6,"adj_value":2700.76032},{"id":"Panama","value":1389.6,"adj_value":2161.10592},{"id":"Bermuda","value":298.5,"adj_value":464.2272},{"id":"Bahamas","value":661.2,"adj_value":1028.29824},{"id":"Cuba","value":5.4,"adj_value":8.39808},{"id":"Jamaica","value":1420.2,"adj_value":2208.69504},{"id":"Turks and Caicos Islands","value":33.6,"adj_value":52.25472},{"id":"Cayman Islands","value":180.1,"adj_value":280.09152},{"id":"Haiti","value":550.1,"adj_value":855.51552},{"id":"Dominican Republic","value":3014.9,"adj_value":4688.77248},{"id":"Anguilla","value":14.6,"adj_value":22.70592},{"id":"British Virgin Islands","value":49.2,"adj_value":76.51584},{"id":"St Kitts and Nevis","value":43.6,"adj_value":67.80672},{"id":"Antigua and Barbuda","value":97,"adj_value":150.8544},{"id":"Montserrat","value":4.4,"adj_value":6.84288},{"id":"Dominica","value":26.6,"adj_value":41.36832},{"id":"St Lucia","value":80.8,"adj_value":125.66016},{"id":"St Vincent and the Grenadines","value":42.2,"adj_value":65.62944},{"id":"Grenada","value":26.9,"adj_value":41.83488},{"id":"Barbados","value":185.6,"adj_value":288.64512},{"id":"Trinidad and Tobago","value":689.2,"adj_value":1071.84384},{"id":"Netherlands Antilles","value":503.9,"adj_value":783.66528},{"id":"Aruba","value":247.6,"adj_value":385.06752},{"id":"Guadeloupe","value":69.1,"adj_value":107.46432},{"id":"Martinique","value":38.5,"adj_value":59.8752}]},{"id":"South America","children":[{"id":"Colombia","value":4624.4,"adj_value":7191.86688},{"id":"Venezuela","value":4640.4,"adj_value":7216.75008},{"id":"Guyana","value":141.3,"adj_value":219.74976},{"id":"Suriname","value":189.7,"adj_value":295.02144},{"id":"French Guiana","value":441.8,"adj_value":687.08736},{"id":"Ecuador","value":1538.3,"adj_value":2392.36416},{"id":"Peru","value":1775.4,"adj_value":2761.10208},{"id":"Bolivia","value":213.5,"adj_value":332.0352},{"id":"Chile","value":3614.7,"adj_value":5621.58144},{"id":"Brazil","value":11439.4,"adj_value":17790.55488},{"id":"Paraguay","value":992.4,"adj_value":1543.38048},{"id":"Uruguay","value":395.8,"adj_value":615.54816},{"id":"Argentina","value":4189.2,"adj_value":6515.04384},{"id":"Falkland Islands(Islas Malvin","value":0.3,"adj_value":0.46656}]},{"id":"Europe","children":[{"id":"Iceland","value":170.5,"adj_value":265.1616},{"id":"Sweden","value":3079.7,"adj_value":4789.54944},{"id":"Svalbard, Jan Mayen Island","value":1.1,"adj_value":1.71072},{"id":"Norway","value":1292.9,"adj_value":2010.71808},{"id":"Finland","value":1249.7,"adj_value":1943.53344},{"id":"Faroe Islands","value":0.4,"adj_value":0.62208},{"id":"Denmark","value":1517.7,"adj_value":2360.32704},{"id":"United Kingdom","value":28856.5,"adj_value":44877.6288},{"id":"Ireland","value":4108.7,"adj_value":6389.85024},{"id":"Netherlands","value":16557.6,"adj_value":25750.37952},{"id":"Belgium","value":12465.6,"adj_value":19386.50112},{"id":"Luxembourg","value":374.2,"adj_value":581.95584},{"id":"Andorra","value":16.5,"adj_value":25.6608},{"id":"Monaco","value":9.6,"adj_value":14.92992},{"id":"France","value":14245.2,"adj_value":22154.13504},{"id":"Germany","value":22394.3,"adj_value":34827.61536},{"id":"Austria","value":2017,"adj_value":3136.8384},{"id":"Czechoslovakia","value":0,"adj_value":0},{"id":"Czech Republic","value":362.8,"adj_value":564.22656},{"id":"Slovakia","value":61,"adj_value":94.8672},{"id":"Hungary","value":295.2,"adj_value":459.09504},{"id":"Liechtenstein","value":15.1,"adj_value":23.48352},{"id":"Switzerland","value":6227.4,"adj_value":9684.85248},{"id":"Estonia","value":139.1,"adj_value":216.32832},{"id":"Latvia","value":89.5,"adj_value":139.1904},{"id":"Lithuania","value":52.2,"adj_value":81.18144},{"id":"Poland","value":776.1,"adj_value":1206.99072},{"id":"USSR","value":0,"adj_value":0},{"id":"Russia","value":2823.4,"adj_value":4390.95168},{"id":"Belarus","value":47.9,"adj_value":74.49408},{"id":"Ukraine","value":223.4,"adj_value":347.43168},{"id":"Armenia","value":70.3,"adj_value":109.33056},{"id":"Azerbaijan","value":35.6,"adj_value":55.36512},{"id":"Georgia","value":95.2,"adj_value":148.05504},{"id":"Kazakhstan","value":80.9,"adj_value":125.81568},{"id":"Kyrgyzstan","value":24.6,"adj_value":38.25792},{"id":"Moldova","value":10.2,"adj_value":15.86304},{"id":"Tajikistan","value":17.6,"adj_value":27.37152},{"id":"Turkmenistan","value":34.3,"adj_value":53.34336},{"id":"Uzbekistan","value":63.4,"adj_value":98.59968},{"id":"Spain","value":5526,"adj_value":8594.0352},{"id":"Portugal","value":898.1,"adj_value":1396.72512},{"id":"Gibraltar","value":18.4,"adj_value":28.61568},{"id":"Malta","value":106.7,"adj_value":165.93984},{"id":"San Marino","value":5.7,"adj_value":8.86464},{"id":"Vatican City","value":0.3,"adj_value":0.46656},{"id":"Italy","value":8861.6,"adj_value":13781.56032},{"id":"Yugoslavia (former)","value":0,"adj_value":0},{"id":"Croatia","value":140,"adj_value":217.728},{"id":"Slovenia","value":109.6,"adj_value":170.44992},{"id":"Bosnia and Herzegovina","value":28.3,"adj_value":44.01216},{"id":"Macedonia","value":21.2,"adj_value":32.97024},{"id":"Serbia and Montenegro","value":2.1,"adj_value":3.26592},{"id":"Albania","value":13.5,"adj_value":20.9952},{"id":"Greece","value":1518.7,"adj_value":2361.88224},{"id":"Romania","value":253.2,"adj_value":393.77664},{"id":"Bulgaria","value":131.8,"adj_value":204.97536}]},{"id":"Asia","children":[{"id":"Turkey","value":2768,"adj_value":4304.7936},{"id":"Cyprus","value":257.8,"adj_value":400.93056},{"id":"Syria","value":223.4,"adj_value":347.43168},{"id":"Lebanon","value":592.2,"adj_value":920.98944},{"id":"Iraq","value":0.2,"adj_value":0.31104},{"id":"Iran","value":277.4,"adj_value":431.41248},{"id":"Israel","value":0,"adj_value":0},{"id":"Israel","value":5621,"adj_value":8741.7792},{"id":"Gaza Strip admin. by Israel","value":0.1,"adj_value":0.15552},{"id":"West Bank admin. by Israel","value":0.3,"adj_value":0.46656},{"id":"Jordan","value":335.3,"adj_value":521.45856},{"id":"Kuwait","value":1437.4,"adj_value":2235.44448},{"id":"Iraq-Saudi Arabia Neutral Zone","value":0,"adj_value":0},{"id":"Saudi Arabia","value":6155,"adj_value":9572.256},{"id":"Qatar","value":226,"adj_value":351.4752},{"id":"United Arab Emirates","value":2006.3,"adj_value":3120.19776},{"id":"Republic of Yemen","value":185.3,"adj_value":288.17856},{"id":"Oman","value":222,"adj_value":345.2544},{"id":"Bahrain","value":255.1,"adj_value":396.73152},{"id":"Afghanistan","value":4,"adj_value":6.2208},{"id":"India","value":3295.8,"adj_value":5125.62816},{"id":"Pakistan","value":941.3,"adj_value":1463.90976},{"id":"Nepal","value":9.8,"adj_value":15.24096},{"id":"Bangladesh","value":325,"adj_value":505.44},{"id":"Sri Lanka","value":279.1,"adj_value":434.05632},{"id":"Burma","value":16.2,"adj_value":25.19424},{"id":"Thailand","value":6665,"adj_value":10365.408},{"id":"Vietnam","value":252.3,"adj_value":392.37696},{"id":"Laos","value":1.6,"adj_value":2.48832},{"id":"Cambodia","value":26.9,"adj_value":41.83488},{"id":"Malaysia","value":8816.1,"adj_value":13710.79872},{"id":"Singapore","value":15333,"adj_value":23845.8816},{"id":"Indonesia","value":3359.6,"adj_value":5224.84992},{"id":"Brunei","value":190.1,"adj_value":295.64352},{"id":"Philippines","value":5294.8,"adj_value":8234.47296},{"id":"Macau","value":29.9,"adj_value":46.50048},{"id":"Bhutan","value":0.5,"adj_value":0.7776},{"id":"Maldives","value":1.1,"adj_value":1.71072},{"id":"China","value":11753.7,"adj_value":18279.35424},{"id":"Mongolia","value":13.9,"adj_value":21.61728},{"id":"Korea, North","value":11.6,"adj_value":18.04032},{"id":"Korea, South","value":25379.9,"adj_value":39470.82048},{"id":"Hong Kong","value":14231.5,"adj_value":22132.8288},{"id":"Taiwan","value":19289.6,"adj_value":29999.18592},{"id":"Japan","value":64342.7,"adj_value":100065.767}]},{"id":"Australia","children":[{"id":"Australia","value":10789.1,"adj_value":16779.20832},{"id":"Norfolk Island","value":1.2,"adj_value":1.86624},{"id":"Cocos (Keeling) Islands","value":0.5,"adj_value":0.7776},{"id":"Christmas Island","value":4.5,"adj_value":6.9984},{"id":"Heard and McDonald Islands","value":0,"adj_value":0},{"id":"Papua New Guinea","value":50.8,"adj_value":79.00416},{"id":"New Zealand","value":1691.3,"adj_value":2630.30976},{"id":"Cook Islands","value":0.9,"adj_value":1.39968},{"id":"Tokelau","value":0.1,"adj_value":0.15552},{"id":"Niue","value":31.5,"adj_value":48.9888},{"id":"Samoa","value":7.3,"adj_value":11.35296},{"id":"Solomon Islands","value":2.7,"adj_value":4.19904},{"id":"Vanuatu","value":1.1,"adj_value":1.71072},{"id":"Pitcairn Islands","value":2.2,"adj_value":3.42144},{"id":"Kiribati","value":2.3,"adj_value":3.57696},{"id":"Tuvalu","value":0.3,"adj_value":0.46656},{"id":"New Caledonia","value":22.3,"adj_value":34.68096},{"id":"Wallis and Futuna","value":0,"adj_value":0},{"id":"French Polynesia","value":82.3,"adj_value":127.99296},{"id":"Marshall Islands","value":31.8,"adj_value":49.45536},{"id":"Micronesia","value":23.3,"adj_value":36.23616},{"id":"Palau","value":8.3,"adj_value":12.90816},{"id":"Nauru","value":0.5,"adj_value":0.7776},{"id":"Fiji","value":31.8,"adj_value":49.45536},{"id":"Tonga","value":7.5,"adj_value":11.664}]},{"id":"Africa","children":[{"id":"Morocco","value":517.4,"adj_value":804.66048},{"id":"Algeria","value":774.1,"adj_value":1203.88032},{"id":"Tunisia","value":214.9,"adj_value":334.21248},{"id":"Libya","value":0,"adj_value":0},{"id":"Egypt","value":2985.1,"adj_value":4642.42752},{"id":"Sudan","value":43.5,"adj_value":67.6512},{"id":"Western Sahara","value":0,"adj_value":0},{"id":"Equatorial Guinea","value":5.2,"adj_value":8.08704},{"id":"Mauritania","value":43.2,"adj_value":67.18464},{"id":"Cameroon","value":45.6,"adj_value":70.91712},{"id":"Senegal","value":67.9,"adj_value":105.59808},{"id":"Mali","value":23.1,"adj_value":35.92512},{"id":"Guinea","value":66.5,"adj_value":103.4208},{"id":"Sierra Leone","value":18.1,"adj_value":28.14912},{"id":"Cote d'Ivoire","value":173.3,"adj_value":269.51616},{"id":"Ghana","value":167.2,"adj_value":260.02944},{"id":"Gambia","value":6.1,"adj_value":9.48672},{"id":"Niger","value":39.6,"adj_value":61.58592},{"id":"Togo","value":18.5,"adj_value":28.7712},{"id":"Nigeria","value":602.9,"adj_value":937.63008},{"id":"Central African Republic","value":6.3,"adj_value":9.79776},{"id":"Gabon","value":54.5,"adj_value":84.7584},{"id":"Chad","value":10.8,"adj_value":16.79616},{"id":"St Helena","value":0.3,"adj_value":0.46656},{"id":"Burkina Faso","value":14.7,"adj_value":22.86144},{"id":"Benin","value":34,"adj_value":52.8768},{"id":"Angola","value":259.7,"adj_value":403.88544},{"id":"Congo (Brazzaville)","value":54.8,"adj_value":85.22496},{"id":"Guinea-Bissau","value":0.8,"adj_value":1.24416},{"id":"Cabo Verde","value":7.5,"adj_value":11.664},{"id":"Sao Tome and Principe","value":1.8,"adj_value":2.79936},{"id":"Liberia","value":41.7,"adj_value":64.85184},{"id":"Congo (Kinshasa)","value":77.1,"adj_value":119.90592},{"id":"Burundi","value":2.9,"adj_value":4.51008},{"id":"Rwanda","value":38.3,"adj_value":59.56416},{"id":"Somalia","value":8.1,"adj_value":12.59712},{"id":"Ethiopia","value":0,"adj_value":0},{"id":"Eritrea","value":16.5,"adj_value":25.6608},{"id":"Ethiopia","value":147.7,"adj_value":229.70304},{"id":"Djibouti","value":8.5,"adj_value":13.2192},{"id":"Uganda","value":22.1,"adj_value":34.36992},{"id":"Kenya","value":114,"adj_value":177.2928},{"id":"Seychelles","value":7.2,"adj_value":11.19744},{"id":"British Indian Ocean Terr.","value":1.8,"adj_value":2.79936},{"id":"Tanzania","value":66.2,"adj_value":102.95424},{"id":"Mauritius","value":24.6,"adj_value":38.25792},{"id":"Mozambique","value":49.3,"adj_value":76.67136},{"id":"Madagascar","value":9.8,"adj_value":15.24096},{"id":"Comoros","value":0.6,"adj_value":0.93312},{"id":"Reunion","value":3.7,"adj_value":5.75424},{"id":"French Southern and Antarctic","value":0,"adj_value":0},{"id":"South Africa","value":2750.5,"adj_value":4277.5776},{"id":"Namibia","value":26.5,"adj_value":41.2128},{"id":"Botswana","value":35.7,"adj_value":55.52064},{"id":"Zambia","value":48.9,"adj_value":76.04928},{"id":"Swaziland","value":3.2,"adj_value":4.97664},{"id":"Zimbabwe","value":122.1,"adj_value":189.88992},{"id":"Malawi","value":17.8,"adj_value":27.68256},{"id":"Lesotho","value":1.8,"adj_value":2.79936}]}]}]},{"id":"2005","children":[{"id":"Imports","children":[{"id":"North America","children":[{"id":"Greenland","value":17.255599,"adj_value":20.94139495},{"id":"Canada","value":290384.2932,"adj_value":352410.3782},{"id":"St Pierre and Miquelon","value":1.094378,"adj_value":1.328137141},{"id":"Mexico","value":170108.6141,"adj_value":206443.8141},{"id":"Guatemala","value":3137.382263,"adj_value":3807.527114},{"id":"Belize","value":98.265102,"adj_value":119.2545278},{"id":"El Salvador","value":1988.765718,"adj_value":2413.566075},{"id":"Honduras","value":3749.243099,"adj_value":4550.081425},{"id":"Nicaragua","value":1180.787602,"adj_value":1433.003834},{"id":"Costa Rica","value":3415.279262,"adj_value":4144.782912},{"id":"Panama","value":327.060069,"adj_value":396.9200997},{"id":"Bermuda","value":87.276753,"adj_value":105.9190674},{"id":"Bahamas","value":699.936003,"adj_value":849.4423332},{"id":"Cuba","value":0.009079,"adj_value":0.011018274},{"id":"Jamaica","value":375.57236,"adj_value":455.7946161},{"id":"Turks and Caicos Islands","value":9.434412,"adj_value":11.4496024},{"id":"Cayman Islands","value":53.497875,"adj_value":64.9250211},{"id":"Haiti","value":447.217315,"adj_value":542.7429335},{"id":"Dominican Republic","value":4603.684143,"adj_value":5587.031076},{"id":"Anguilla","value":3.754737,"adj_value":4.556748823},{"id":"British Virgin Islands","value":33.579607,"adj_value":40.75221106},{"id":"St Kitts and Nevis","value":49.718541,"adj_value":60.33842136},{"id":"Antigua and Barbuda","value":4.414365,"adj_value":5.357273364},{"id":"Montserrat","value":0.953906,"adj_value":1.157660322},{"id":"Dominica","value":3.344243,"adj_value":4.058573305},{"id":"St Lucia","value":32.396909,"adj_value":39.31688876},{"id":"St Vincent and the Grenadines","value":15.650342,"adj_value":18.99325505},{"id":"Grenada","value":5.852881,"adj_value":7.103056382},{"id":"Barbados","value":31.903789,"adj_value":38.71843833},{"id":"Trinidad and Tobago","value":7890.88378,"adj_value":9576.376555},{"id":"Netherlands Antilles","value":922.413941,"adj_value":1119.441559},{"id":"Aruba","value":2919.735672,"adj_value":3543.391212},{"id":"Guadeloupe","value":2.128806,"adj_value":2.583518962},{"id":"Martinique","value":22.236488,"adj_value":26.98620184}]},{"id":"South America","children":[{"id":"Colombia","value":8849.380048,"adj_value":10739.60763},{"id":"Venezuela","value":33978.13481,"adj_value":41235.8644},{"id":"Guyana","value":119.931261,"adj_value":145.5485783},{"id":"Suriname","value":165.346376,"adj_value":200.6643619},{"id":"French Guiana","value":0.121285,"adj_value":0.147191476},{"id":"Ecuador","value":5758.679346,"adj_value":6988.733254},{"id":"Peru","value":5119.15577,"adj_value":6212.607442},{"id":"Bolivia","value":293.216045,"adj_value":355.8469922},{"id":"Chile","value":6664.333836,"adj_value":8087.835543},{"id":"Brazil","value":24435.51938,"adj_value":29654.94632},{"id":"Paraguay","value":51.645596,"adj_value":62.67709531},{"id":"Uruguay","value":732.311644,"adj_value":888.7334112},{"id":"Argentina","value":4583.613305,"adj_value":5562.673107},{"id":"Falkland Islands(Islas Malvin","value":9.261546,"adj_value":11.23981223}]},{"id":"Europe","children":[{"id":"Iceland","value":268.97508,"adj_value":326.4281571},{"id":"Sweden","value":13820.97724,"adj_value":16773.13798},{"id":"Svalbard, Jan Mayen Island","value":0.039576,"adj_value":0.048029434},{"id":"Norway","value":6776.30892,"adj_value":8223.728505},{"id":"Finland","value":4341.679942,"adj_value":5269.062778},{"id":"Faroe Islands","value":4.276273,"adj_value":5.189684913},{"id":"Denmark","value":5144.20165,"adj_value":6243.003122},{"id":"United Kingdom","value":51032.62111,"adj_value":61933.18897},{"id":"Ireland","value":28733.08026,"adj_value":34870.4662},{"id":"Netherlands","value":14862.04151,"adj_value":18036.57358},{"id":"Belgium","value":13022.90274,"adj_value":15804.59477},{"id":"Luxembourg","value":388.834493,"adj_value":471.8895407},{"id":"Andorra","value":0.673148,"adj_value":0.816932413},{"id":"Monaco","value":37.485881,"adj_value":45.49286518},{"id":"France","value":33842.05751,"adj_value":41070.721},{"id":"Germany","value":84750.87138,"adj_value":102853.6575},{"id":"Austria","value":6102.944725,"adj_value":7406.533718},{"id":"Czech Republic","value":2192.863031,"adj_value":2661.258574},{"id":"Slovakia","value":960.730063,"adj_value":1165.942004},{"id":"Hungary","value":2561.172978,"adj_value":3108.239526},{"id":"Liechtenstein","value":295.705721,"adj_value":358.868463},{"id":"Switzerland","value":12999.88108,"adj_value":15776.65568},{"id":"Estonia","value":511.379949,"adj_value":620.6107061},{"id":"Latvia","value":362.159252,"adj_value":439.5164682},{"id":"Lithuania","value":633.912046,"adj_value":769.315659},{"id":"Poland","value":1948.58625,"adj_value":2364.804273},{"id":"Russia","value":15306.67384,"adj_value":18576.17937},{"id":"Belarus","value":345.161433,"adj_value":418.8879151},{"id":"Ukraine","value":1098.029235,"adj_value":1332.56828},{"id":"Armenia","value":46.191425,"adj_value":56.05791338},{"id":"Azerbaijan","value":45.361225,"adj_value":55.05038266},{"id":"Georgia","value":194.384289,"adj_value":235.9047731},{"id":"Kazakhstan","value":1101.145431,"adj_value":1336.350095},{"id":"Kyrgyzstan","value":4.618689,"adj_value":5.60524097},{"id":"Moldova","value":50.224656,"adj_value":60.95264252},{"id":"Tajikistan","value":241.029155,"adj_value":292.5129825},{"id":"Turkmenistan","value":135.325351,"adj_value":164.230846},{"id":"Uzbekistan","value":95.627811,"adj_value":116.0539114},{"id":"Spain","value":8614.64214,"adj_value":10454.7297},{"id":"Portugal","value":2328.674933,"adj_value":2826.079899},{"id":"Gibraltar","value":4.637081,"adj_value":5.627561502},{"id":"Malta","value":282.653662,"adj_value":343.0284842},{"id":"San Marino","value":1.389972,"adj_value":1.686870019},{"id":"Vatican City","value":0.282286,"adj_value":0.34258229},{"id":"Italy","value":31009.26008,"adj_value":37632.83803},{"id":"Croatia","value":364.277603,"adj_value":442.087299},{"id":"Slovenia","value":413.019469,"adj_value":501.2404276},{"id":"Bosnia and Herzegovina","value":70.462111,"adj_value":85.51281791},{"id":"Macedonia","value":48.149502,"adj_value":58.43423563},{"id":"Serbia and Montenegro","value":54.632827,"adj_value":66.30239885},{"id":"Albania","value":37.18875,"adj_value":45.132267},{"id":"Greece","value":883.73016,"adj_value":1072.494922},{"id":"Romania","value":1207.584718,"adj_value":1465.524814},{"id":"Bulgaria","value":454.262612,"adj_value":551.2931059}]},{"id":"Asia","children":[{"id":"Turkey","value":5182.052179,"adj_value":6288.938524},{"id":"Cyprus","value":30.536194,"adj_value":37.05872504},{"id":"Syria","value":323.599119,"adj_value":392.7198908},{"id":"Lebanon","value":86.370988,"adj_value":104.819831},{"id":"Iraq","value":9053.695686,"adj_value":10987.56508},{"id":"Iran","value":174.457417,"adj_value":211.7215213},{"id":"Israel","value":16830.46608,"adj_value":20425.45364},{"id":"Gaza Strip admin. by Israel","value":1.443661,"adj_value":1.75202699},{"id":"West Bank admin. by Israel","value":1.604198,"adj_value":1.946854693},{"id":"Jordan","value":1266.84986,"adj_value":1537.44899},{"id":"Kuwait","value":4334.781445,"adj_value":5260.690762},{"id":"Saudi Arabia","value":27192.64204,"adj_value":33000.99038},{"id":"Qatar","value":447.861094,"adj_value":543.5242237},{"id":"United Arab Emirates","value":1468.316627,"adj_value":1781.949059},{"id":"Republic of Yemen","value":278.635079,"adj_value":338.1515319},{"id":"Oman","value":555.043525,"adj_value":673.6008219},{"id":"Bahrain","value":431.61192,"adj_value":523.8042261},{"id":"Afghanistan","value":67.310191,"adj_value":81.6876478},{"id":"India","value":18804.16965,"adj_value":22820.74029},{"id":"Pakistan","value":3253.181975,"adj_value":3948.061645},{"id":"Nepal","value":111.212077,"adj_value":134.9669766},{"id":"Bangladesh","value":2693.035035,"adj_value":3268.267318},{"id":"Sri Lanka","value":2082.938898,"adj_value":2527.854647},{"id":"Burma","value":0.0615,"adj_value":0.0746364},{"id":"Thailand","value":19889.75578,"adj_value":24138.20761},{"id":"Vietnam","value":6631.158734,"adj_value":8047.57424},{"id":"Laos","value":4.166156,"adj_value":5.056046922},{"id":"Cambodia","value":1766.956953,"adj_value":2144.378958},{"id":"Malaysia","value":33685.15957,"adj_value":40880.30965},{"id":"Singapore","value":15110.08962,"adj_value":18337.60477},{"id":"Indonesia","value":12014.34419,"adj_value":14580.6081},{"id":"East Timor","value":0.084963,"adj_value":0.103111097},{"id":"Brunei","value":562.742346,"adj_value":682.9441111},{"id":"Philippines","value":9250.433389,"adj_value":11226.32596},{"id":"Macau","value":1249.02212,"adj_value":1515.813245},{"id":"Bhutan","value":0.615516,"adj_value":0.746990218},{"id":"Maldives","value":5.496456,"adj_value":6.670499002},{"id":"China","value":243470.1048,"adj_value":295475.3192},{"id":"Mongolia","value":143.645404,"adj_value":174.3280623},{"id":"Korea, North","value":0.003252,"adj_value":0.003946627},{"id":"Korea, South","value":43781.44106,"adj_value":53133.15687},{"id":"Hong Kong","value":8891.705575,"adj_value":10790.97389},{"id":"Taiwan","value":34825.82882,"adj_value":42264.62586},{"id":"Japan","value":138003.6962,"adj_value":167481.2857}]},{"id":"Australia","children":[{"id":"Australia","value":7342.17895,"adj_value":8910.468374},{"id":"Norfolk Island","value":0.17315,"adj_value":0.21013484},{"id":"Cocos (Keeling) Islands","value":0.484315,"adj_value":0.587764684},{"id":"Christmas Island","value":0.417613,"adj_value":0.506815137},{"id":"Heard and McDonald Islands","value":0.016396,"adj_value":0.019898186},{"id":"Papua New Guinea","value":58.451246,"adj_value":70.93643215},{"id":"New Zealand","value":3155.239797,"adj_value":3829.199018},{"id":"Cook Islands","value":1.744825,"adj_value":2.11751962},{"id":"Tokelau","value":10.800762,"adj_value":13.10780476},{"id":"Niue","value":0.138878,"adj_value":0.168542341},{"id":"Samoa","value":7.937575,"adj_value":9.63304102},{"id":"Solomon Islands","value":1.351564,"adj_value":1.64025807},{"id":"Vanuatu","value":2.489141,"adj_value":3.020821518},{"id":"Pitcairn Islands","value":1.040512,"adj_value":1.262765363},{"id":"Kiribati","value":1.104581,"adj_value":1.340519502},{"id":"Tuvalu","value":0.056868,"adj_value":0.069015005},{"id":"New Caledonia","value":27.174251,"adj_value":32.97867101},{"id":"Wallis and Futuna","value":0.022469,"adj_value":0.027268378},{"id":"French Polynesia","value":60.124235,"adj_value":72.9667716},{"id":"Marshall Islands","value":17.205126,"adj_value":20.88014091},{"id":"Micronesia","value":1.557731,"adj_value":1.890462342},{"id":"Palau","value":0.484544,"adj_value":0.588042598},{"id":"Nauru","value":0.148786,"adj_value":0.18056669},{"id":"Fiji","value":169.460711,"adj_value":205.6575189},{"id":"Tonga","value":5.350431,"adj_value":6.493283062}]},{"id":"Africa","children":[{"id":"Morocco","value":445.793996,"adj_value":541.0155935},{"id":"Algeria","value":10446.43785,"adj_value":12677.79698},{"id":"Tunisia","value":263.768113,"adj_value":320.1089819},{"id":"Libya","value":1590.341099,"adj_value":1930.037958},{"id":"Egypt","value":2091.236887,"adj_value":2537.925086},{"id":"Sudan","value":13.574271,"adj_value":16.47373529},{"id":"Western Sahara","value":0,"adj_value":0},{"id":"Equatorial Guinea","value":1561.137497,"adj_value":1894.596466},{"id":"Mauritania","value":0.825319,"adj_value":1.001607138},{"id":"Cameroon","value":158.161864,"adj_value":191.9452382},{"id":"Senegal","value":3.662962,"adj_value":4.445370683},{"id":"Mali","value":3.649953,"adj_value":4.429582961},{"id":"Guinea","value":74.733573,"adj_value":90.69666419},{"id":"Sierra Leone","value":9.312822,"adj_value":11.30204078},{"id":"Cote d'Ivoire","value":1197.97516,"adj_value":1453.862654},{"id":"Ghana","value":158.409617,"adj_value":192.2459112},{"id":"Gambia","value":0.427153,"adj_value":0.518392881},{"id":"Niger","value":65.51339,"adj_value":79.5070501},{"id":"Togo","value":6.439273,"adj_value":7.814701713},{"id":"Nigeria","value":24239.35673,"adj_value":29416.88333},{"id":"Central African Republic","value":5.696947,"adj_value":6.913814879},{"id":"Gabon","value":2815.602273,"adj_value":3417.014919},{"id":"Chad","value":1498.086294,"adj_value":1818.077526},{"id":"St Helena","value":3.269267,"adj_value":3.967582431},{"id":"Burkina Faso","value":2.084203,"adj_value":2.529388761},{"id":"Benin","value":0.513184,"adj_value":0.622800102},{"id":"Angola","value":8484.361601,"adj_value":10296.62124},{"id":"Congo (Brazzaville)","value":1622.90154,"adj_value":1969.553309},{"id":"Guinea-Bissau","value":0.120677,"adj_value":0.146453607},{"id":"Cabo Verde","value":2.62425,"adj_value":3.1847898},{"id":"Sao Tome and Principe","value":0.216017,"adj_value":0.262158231},{"id":"Liberia","value":90.827263,"adj_value":110.2279664},{"id":"Congo (Kinshasa)","value":263.558216,"adj_value":319.8542509},{"id":"Burundi","value":4.423229,"adj_value":5.368030714},{"id":"Rwanda","value":6.301468,"adj_value":7.647461565},{"id":"Somalia","value":0.307638,"adj_value":0.373349477},{"id":"Eritrea","value":1.269401,"adj_value":1.540545054},{"id":"Ethiopia","value":61.802253,"adj_value":75.00321424},{"id":"Djibouti","value":1.101206,"adj_value":1.336423602},{"id":"Uganda","value":25.769069,"adj_value":31.27334214},{"id":"Kenya","value":348.019269,"adj_value":422.3561849},{"id":"Seychelles","value":5.883749,"adj_value":7.140517786},{"id":"British Indian Ocean Terr.","value":0.432984,"adj_value":0.525469382},{"id":"Tanzania","value":33.695475,"adj_value":40.89282846},{"id":"Mauritius","value":221.85071,"adj_value":269.2380217},{"id":"Mozambique","value":11.905754,"adj_value":14.44882305},{"id":"Madagascar","value":323.631165,"adj_value":392.7587818},{"id":"Comoros","value":1.447044,"adj_value":1.756132598},{"id":"Reunion","value":5.835528,"adj_value":7.081996781},{"id":"French Southern and Antarctic","value":0.05164,"adj_value":0.062670304},{"id":"South Africa","value":5885.639948,"adj_value":7142.812641},{"id":"Namibia","value":129.590672,"adj_value":157.2712395},{"id":"Botswana","value":178.164424,"adj_value":216.220345},{"id":"Zambia","value":31.70289,"adj_value":38.4746273},{"id":"Swaziland","value":198.886296,"adj_value":241.3684088},{"id":"Zimbabwe","value":94.328983,"adj_value":114.4776538},{"id":"Malawi","value":115.50192,"adj_value":140.1731301},{"id":"Lesotho","value":403.608048,"adj_value":489.8187271}]}]},{"id":"Exports","children":[{"id":"North America","children":[{"id":"Greenland","value":5.085009,"adj_value":6.171166922},{"id":"Canada","value":211898.6894,"adj_value":257160.2494},{"id":"St Pierre and Miquelon","value":0.980031,"adj_value":1.189365622},{"id":"Mexico","value":120247.5801,"adj_value":145932.4633},{"id":"Guatemala","value":2835.38039,"adj_value":3441.017641},{"id":"Belize","value":217.562773,"adj_value":264.0341813},{"id":"El Salvador","value":1854.286657,"adj_value":2250.362287},{"id":"Honduras","value":3253.813808,"adj_value":3948.828437},{"id":"Nicaragua","value":625.460463,"adj_value":759.0588179},{"id":"Costa Rica","value":3598.560177,"adj_value":4367.212631},{"id":"Panama","value":2162.020485,"adj_value":2623.828061},{"id":"Bermuda","value":490.497944,"adj_value":595.2683048},{"id":"Bahamas","value":1786.740047,"adj_value":2168.387721},{"id":"Cuba","value":369.034678,"adj_value":447.8604852},{"id":"Jamaica","value":1700.769277,"adj_value":2064.053595},{"id":"Turks and Caicos Islands","value":237.752693,"adj_value":288.5366682},{"id":"Cayman Islands","value":680.670387,"adj_value":826.0615817},{"id":"Haiti","value":709.620597,"adj_value":861.1955565},{"id":"Dominican Republic","value":4718.733392,"adj_value":5726.654845},{"id":"Anguilla","value":32.186758,"adj_value":39.06184951},{"id":"British Virgin Islands","value":124.856685,"adj_value":151.5260729},{"id":"St Kitts and Nevis","value":94.069439,"adj_value":114.1626712},{"id":"Antigua and Barbuda","value":190.447421,"adj_value":231.1269901},{"id":"Montserrat","value":4.848606,"adj_value":5.884268242},{"id":"Dominica","value":61.540001,"adj_value":74.68494521},{"id":"St Lucia","value":135.389135,"adj_value":164.3082542},{"id":"St Vincent and the Grenadines","value":45.411401,"adj_value":55.11127625},{"id":"Grenada","value":82.440305,"adj_value":100.0495541},{"id":"Barbados","value":394.92009,"adj_value":479.2750212},{"id":"Trinidad and Tobago","value":1416.748479,"adj_value":1719.365954},{"id":"Netherlands Antilles","value":1137.633614,"adj_value":1380.632154},{"id":"Aruba","value":558.924451,"adj_value":678.3107137},{"id":"Guadeloupe","value":54.512655,"adj_value":66.15655811},{"id":"Martinique","value":34.95999,"adj_value":42.42744386}]},{"id":"South America","children":[{"id":"Colombia","value":5462.357164,"adj_value":6629.116654},{"id":"Venezuela","value":6420.897723,"adj_value":7792.401477},{"id":"Guyana","value":176.704601,"adj_value":214.4487038},{"id":"Suriname","value":245.701079,"adj_value":298.1828295},{"id":"French Guiana","value":26.993942,"adj_value":32.75984801},{"id":"Ecuador","value":1963.825872,"adj_value":2383.299078},{"id":"Peru","value":2309.446378,"adj_value":2802.744124},{"id":"Bolivia","value":219.479092,"adj_value":266.3598261},{"id":"Chile","value":5133.523351,"adj_value":6230.043939},{"id":"Brazil","value":15371.71785,"adj_value":18655.11678},{"id":"Paraguay","value":895.819607,"adj_value":1087.166675},{"id":"Uruguay","value":356.676188,"adj_value":432.8622218},{"id":"Argentina","value":4121.861182,"adj_value":5002.29073},{"id":"Falkland Islands(Islas Malvin","value":9.049418,"adj_value":10.98237368}]},{"id":"Europe","children":[{"id":"Iceland","value":512.019513,"adj_value":621.386881},{"id":"Sweden","value":3715.36862,"adj_value":4508.971357},{"id":"Svalbard, Jan Mayen Island","value":5.677609,"adj_value":6.890346282},{"id":"Norway","value":1941.882004,"adj_value":2356.668},{"id":"Finland","value":2254.052992,"adj_value":2735.518711},{"id":"Faroe Islands","value":2.528152,"adj_value":3.068165267},{"id":"Denmark","value":1918.423705,"adj_value":2328.199008},{"id":"United Kingdom","value":38568.08305,"adj_value":46806.22558},{"id":"Ireland","value":8446.771993,"adj_value":10251.00249},{"id":"Netherlands","value":26467.74458,"adj_value":32121.25482},{"id":"Belgium","value":18690.60657,"adj_value":22682.92013},{"id":"Luxembourg","value":711.38307,"adj_value":863.3344938},{"id":"Andorra","value":10.549473,"adj_value":12.80284043},{"id":"Monaco","value":16.776668,"adj_value":20.36016428},{"id":"France","value":22258.62805,"adj_value":27013.071},{"id":"Germany","value":34183.65627,"adj_value":41485.28525},{"id":"Austria","value":2544.481273,"adj_value":3087.982473},{"id":"Czech Republic","value":1053.557481,"adj_value":1278.597359},{"id":"Slovakia","value":149.800634,"adj_value":181.7980494},{"id":"Hungary","value":1023.258213,"adj_value":1241.826167},{"id":"Liechtenstein","value":19.7165,"adj_value":23.9279444},{"id":"Switzerland","value":10717.52806,"adj_value":13006.79206},{"id":"Estonia","value":145.425805,"adj_value":176.4887569},{"id":"Latvia","value":177.537085,"adj_value":215.4590064},{"id":"Lithuania","value":390.027824,"adj_value":473.3377672},{"id":"Poland","value":1267.748385,"adj_value":1538.53944},{"id":"Russia","value":3962.270261,"adj_value":4808.611189},{"id":"Belarus","value":34.942759,"adj_value":42.40653232},{"id":"Ukraine","value":532.954308,"adj_value":646.7933482},{"id":"Armenia","value":65.483218,"adj_value":79.47043336},{"id":"Azerbaijan","value":132.462798,"adj_value":160.7568517},{"id":"Georgia","value":213.886826,"adj_value":259.573052},{"id":"Kazakhstan","value":538.286932,"adj_value":653.2650207},{"id":"Kyrgyzstan","value":31.140901,"adj_value":37.79259745},{"id":"Moldova","value":40.069837,"adj_value":48.62875418},{"id":"Tajikistan","value":28.7867,"adj_value":34.93553912},{"id":"Turkmenistan","value":215.170092,"adj_value":261.1304237},{"id":"Uzbekistan","value":73.826609,"adj_value":89.59597268},{"id":"Spain","value":6839.116578,"adj_value":8299.951879},{"id":"Portugal","value":1131.865366,"adj_value":1373.631808},{"id":"Gibraltar","value":163.257568,"adj_value":198.1293845},{"id":"Malta","value":193.709217,"adj_value":235.0855058},{"id":"San Marino","value":4.676009,"adj_value":5.674804522},{"id":"Vatican City","value":24.181227,"adj_value":29.34633709},{"id":"Italy","value":11524.32529,"adj_value":13985.92117},{"id":"Croatia","value":158.621993,"adj_value":192.5036507},{"id":"Slovenia","value":233.830317,"adj_value":283.7764727},{"id":"Bosnia and Herzegovina","value":17.573793,"adj_value":21.32755518},{"id":"Macedonia","value":31.556267,"adj_value":38.29668563},{"id":"Serbia and Montenegro","value":132.49633,"adj_value":160.7975461},{"id":"Albania","value":18.513925,"adj_value":22.46849938},{"id":"Greece","value":1192.248494,"adj_value":1446.912772},{"id":"Romania","value":608.858767,"adj_value":738.9109996},{"id":"Bulgaria","value":267.93442,"adj_value":325.1652121}]},{"id":"Asia","children":[{"id":"Turkey","value":4238.966194,"adj_value":5144.409373},{"id":"Cyprus","value":84.179247,"adj_value":102.1599342},{"id":"Syria","value":155.049379,"adj_value":188.1679264},{"id":"Lebanon","value":465.688546,"adj_value":565.1596194},{"id":"Iraq","value":1373.986265,"adj_value":1667.469731},{"id":"Iran","value":95.773068,"adj_value":116.2301953},{"id":"Israel","value":9737.340849,"adj_value":11817.23685},{"id":"Gaza Strip admin. by Israel","value":0.23112,"adj_value":0.280487232},{"id":"West Bank admin. by Israel","value":3.720993,"adj_value":4.515797105},{"id":"Jordan","value":644.195347,"adj_value":781.7954731},{"id":"Kuwait","value":1974.875551,"adj_value":2396.708969},{"id":"Saudi Arabia","value":6805.402418,"adj_value":8259.036374},{"id":"Qatar","value":986.642413,"adj_value":1197.389232},{"id":"United Arab Emirates","value":8119.527357,"adj_value":9853.8584},{"id":"Republic of Yemen","value":219.04852,"adj_value":265.8372839},{"id":"Oman","value":570.72512,"adj_value":692.6320056},{"id":"Bahrain","value":350.78451,"adj_value":425.7120813},{"id":"Afghanistan","value":262.153213,"adj_value":318.1491393},{"id":"India","value":7918.602428,"adj_value":9610.015907},{"id":"Pakistan","value":1251.63194,"adj_value":1518.980522},{"id":"Nepal","value":24.704668,"adj_value":29.98158508},{"id":"Bangladesh","value":319.769758,"adj_value":388.0725783},{"id":"Sri Lanka","value":197.631294,"adj_value":239.8453384},{"id":"Burma","value":5.464172,"adj_value":6.631319139},{"id":"Thailand","value":7256.616259,"adj_value":8806.629492},{"id":"Vietnam","value":1193.152202,"adj_value":1448.009512},{"id":"Laos","value":9.807849,"adj_value":11.90280555},{"id":"Cambodia","value":69.652929,"adj_value":84.53079463},{"id":"Malaysia","value":10460.83317,"adj_value":12695.26713},{"id":"Singapore","value":20466.07346,"adj_value":24837.62675},{"id":"Indonesia","value":3053.913961,"adj_value":3706.229983},{"id":"East Timor","value":8.685474,"adj_value":10.54069125},{"id":"Brunei","value":49.614155,"adj_value":60.21173851},{"id":"Philippines","value":6895.406023,"adj_value":8368.26475},{"id":"Macau","value":101.575899,"adj_value":123.272511},{"id":"Bhutan","value":3.05218,"adj_value":3.704125648},{"id":"Maldives","value":9.25555,"adj_value":11.23253548},{"id":"China","value":41192.01012,"adj_value":49990.62349},{"id":"Mongolia","value":21.879286,"adj_value":26.55270149},{"id":"Korea, North","value":5.757048,"adj_value":6.986753453},{"id":"Korea, South","value":27571.60598,"adj_value":33460.90101},{"id":"Hong Kong","value":16351.02861,"adj_value":19843.60832},{"id":"Taiwan","value":21614.49693,"adj_value":26231.35347},{"id":"Japan","value":54680.57985,"adj_value":66360.3517}]},{"id":"Australia","children":[{"id":"Australia","value":15588.51968,"adj_value":18918.22748},{"id":"Norfolk Island","value":0.391532,"adj_value":0.475163235},{"id":"Cocos (Keeling) Islands","value":1.048051,"adj_value":1.271914694},{"id":"Christmas Island","value":2.00592,"adj_value":2.434384512},{"id":"Heard and McDonald Islands","value":0.160607,"adj_value":0.194912655},{"id":"Papua New Guinea","value":55.347872,"adj_value":67.17017746},{"id":"New Zealand","value":2592.076963,"adj_value":3145.744602},{"id":"Cook Islands","value":1.372809,"adj_value":1.666041002},{"id":"Tokelau","value":79.822527,"adj_value":96.87261877},{"id":"Niue","value":0.607643,"adj_value":0.737435545},{"id":"Samoa","value":14.538961,"adj_value":17.64448307},{"id":"Solomon Islands","value":2.297431,"adj_value":2.788162262},{"id":"Vanuatu","value":9.138578,"adj_value":11.09057826},{"id":"Pitcairn Islands","value":0.45629,"adj_value":0.553753544},{"id":"Kiribati","value":2.411608,"adj_value":2.926727469},{"id":"Tuvalu","value":0.04246,"adj_value":0.051529456},{"id":"New Caledonia","value":38.403106,"adj_value":46.60600944},{"id":"Wallis and Futuna","value":0.408737,"adj_value":0.496043223},{"id":"French Polynesia","value":111.838384,"adj_value":135.7270628},{"id":"Marshall Islands","value":75.48435,"adj_value":91.60780716},{"id":"Micronesia","value":25.349268,"adj_value":30.76387164},{"id":"Palau","value":12.22524,"adj_value":14.83655126},{"id":"Nauru","value":1.62475,"adj_value":1.9717966},{"id":"Fiji","value":28.177593,"adj_value":34.19632686},{"id":"Tonga","value":9.685131,"adj_value":11.75387498}]},{"id":"Africa","children":[{"id":"Morocco","value":480.792527,"adj_value":583.4898108},{"id":"Algeria","value":1106.190448,"adj_value":1342.472728},{"id":"Tunisia","value":261.16652,"adj_value":316.9516887},{"id":"Libya","value":83.841985,"adj_value":101.750633},{"id":"Egypt","value":3159.259288,"adj_value":3834.077072},{"id":"Sudan","value":108.105454,"adj_value":131.196779},{"id":"Western Sahara","value":0.028656,"adj_value":0.034776922},{"id":"Equatorial Guinea","value":281.472431,"adj_value":341.5949423},{"id":"Mauritania","value":86.135221,"adj_value":104.5337042},{"id":"Cameroon","value":117.313887,"adj_value":142.3721333},{"id":"Senegal","value":141.499953,"adj_value":171.724343},{"id":"Mali","value":32.421928,"adj_value":39.34725182},{"id":"Guinea","value":93.59706,"adj_value":113.589392},{"id":"Sierra Leone","value":37.829353,"adj_value":45.9097028},{"id":"Cote d'Ivoire","value":124.242832,"adj_value":150.7811009},{"id":"Ghana","value":337.389713,"adj_value":409.4561557},{"id":"Gambia","value":30.604418,"adj_value":37.14152168},{"id":"Niger","value":78.511944,"adj_value":95.28209524},{"id":"Togo","value":27.928388,"adj_value":33.89389168},{"id":"Nigeria","value":1619.788459,"adj_value":1965.775274},{"id":"Central African Republic","value":14.781003,"adj_value":17.93822524},{"id":"Gabon","value":99.105857,"adj_value":120.2748681},{"id":"Chad","value":53.752155,"adj_value":65.23361531},{"id":"St Helena","value":2.732629,"adj_value":3.316318554},{"id":"Burkina Faso","value":25.11081,"adj_value":30.47447902},{"id":"Benin","value":72.278749,"adj_value":87.71748979},{"id":"Angola","value":929.046776,"adj_value":1127.491167},{"id":"Congo (Brazzaville)","value":104.056096,"adj_value":126.2824781},{"id":"Guinea-Bissau","value":2.100355,"adj_value":2.548990828},{"id":"Cabo Verde","value":9.871825,"adj_value":11.98044682},{"id":"Sao Tome and Principe","value":10.153283,"adj_value":12.32202425},{"id":"Liberia","value":69.32032,"adj_value":84.12714035},{"id":"Congo (Kinshasa)","value":64.968131,"adj_value":78.84532378},{"id":"Burundi","value":8.121178,"adj_value":9.855861621},{"id":"Rwanda","value":10.534162,"adj_value":12.784259},{"id":"Somalia","value":8.831504,"adj_value":10.71791325},{"id":"Eritrea","value":31.058711,"adj_value":37.69285167},{"id":"Ethiopia","value":455.635812,"adj_value":552.9596214},{"id":"Djibouti","value":47.571125,"adj_value":57.7323173},{"id":"Uganda","value":62.573652,"adj_value":75.93938407},{"id":"Kenya","value":573.365497,"adj_value":695.8363672},{"id":"Seychelles","value":17.912292,"adj_value":21.73835757},{"id":"British Indian Ocean Terr.","value":0.806112,"adj_value":0.978297523},{"id":"Tanzania","value":96.44391,"adj_value":117.0443292},{"id":"Mauritius","value":30.860179,"adj_value":37.45191323},{"id":"Mozambique","value":62.825299,"adj_value":76.24478287},{"id":"Madagascar","value":28.205237,"adj_value":34.22987562},{"id":"Comoros","value":0.295219,"adj_value":0.358277778},{"id":"Reunion","value":3.78591,"adj_value":4.594580376},{"id":"French Southern and Antarctic","value":0.273678,"adj_value":0.332135621},{"id":"South Africa","value":3906.946741,"adj_value":4741.470565},{"id":"Namibia","value":112.249178,"adj_value":136.2256024},{"id":"Botswana","value":67.272144,"adj_value":81.64147396},{"id":"Zambia","value":29.113109,"adj_value":35.33166908},{"id":"Swaziland","value":11.856893,"adj_value":14.38952534},{"id":"Zimbabwe","value":45.540976,"adj_value":55.26852847},{"id":"Malawi","value":28.049237,"adj_value":34.04055402},{"id":"Lesotho","value":4.015033,"adj_value":4.872644049}]}]}]},{"id":"2015","children":[{"id":"Imports","children":[{"id":"North America","children":[{"id":"Greenland","value":3.800273,"adj_value":3.800273},{"id":"Canada","value":296155.599,"adj_value":296155.599},{"id":"St Pierre and Miquelon","value":0.18562,"adj_value":0.18562},{"id":"Mexico","value":296407.9011,"adj_value":296407.9011},{"id":"Guatemala","value":4120.351959,"adj_value":4120.351959},{"id":"Belize","value":75.287339,"adj_value":75.287339},{"id":"El Salvador","value":2531.699424,"adj_value":2531.699424},{"id":"Honduras","value":4755.934545,"adj_value":4755.934545},{"id":"Nicaragua","value":3188.301535,"adj_value":3188.301535},{"id":"Costa Rica","value":4488.341429,"adj_value":4488.341429},{"id":"Panama","value":408.293396,"adj_value":408.293396},{"id":"Bermuda","value":108.704684,"adj_value":108.704684},{"id":"Bahamas","value":452.744256,"adj_value":452.744256},{"id":"Cuba","value":0,"adj_value":0},{"id":"Jamaica","value":305.978402,"adj_value":305.978402},{"id":"Turks and Caicos Islands","value":14.710225,"adj_value":14.710225},{"id":"Cayman Islands","value":97.496341,"adj_value":97.496341},{"id":"Haiti","value":950.091535,"adj_value":950.091535},{"id":"Dominican Republic","value":4665.266745,"adj_value":4665.266745},{"id":"Anguilla","value":5.583883,"adj_value":5.583883},{"id":"British Virgin Islands","value":16.491398,"adj_value":16.491398},{"id":"St Kitts and Nevis","value":56.753359,"adj_value":56.753359},{"id":"Antigua and Barbuda","value":6.856395,"adj_value":6.856395},{"id":"Montserrat","value":2.271534,"adj_value":2.271534},{"id":"Dominica","value":1.683203,"adj_value":1.683203},{"id":"St Lucia","value":29.00446,"adj_value":29.00446},{"id":"St Vincent and the Grenadines","value":1.768076,"adj_value":1.768076},{"id":"Grenada","value":9.215032,"adj_value":9.215032},{"id":"Barbados","value":68.174291,"adj_value":68.174291},{"id":"Trinidad and Tobago","value":4314.344265,"adj_value":4314.344265},{"id":"Sint Maarten","value":51.873445,"adj_value":51.873445},{"id":"Curacao","value":335.229109,"adj_value":335.229109},{"id":"Aruba","value":54.90185,"adj_value":54.90185},{"id":"Guadeloupe","value":4.123528,"adj_value":4.123528},{"id":"Martinique","value":37.46278,"adj_value":37.46278}]},{"id":"South America","children":[{"id":"Colombia","value":14074.81661,"adj_value":14074.81661},{"id":"Venezuela","value":15564.23275,"adj_value":15564.23275},{"id":"Guyana","value":431.099884,"adj_value":431.099884},{"id":"Suriname","value":146.224404,"adj_value":146.224404},{"id":"French Guiana","value":0.042924,"adj_value":0.042924},{"id":"Ecuador","value":7467.258698,"adj_value":7467.258698},{"id":"Peru","value":5053.337195,"adj_value":5053.337195},{"id":"Bolivia","value":1006.481438,"adj_value":1006.481438},{"id":"Chile","value":8772.414027,"adj_value":8772.414027},{"id":"Brazil","value":27468.23032,"adj_value":27468.23032},{"id":"Paraguay","value":162.023098,"adj_value":162.023098},{"id":"Uruguay","value":604.746068,"adj_value":604.746068},{"id":"Argentina","value":3950.849545,"adj_value":3950.849545},{"id":"Falkland Islands(Islas Malvin","value":14.273948,"adj_value":14.273948}]},{"id":"Europe","children":[{"id":"Iceland","value":316.534176,"adj_value":316.534176},{"id":"Sweden","value":9878.966413,"adj_value":9878.966413},{"id":"Svalbard, Jan Mayen Island","value":0.028231,"adj_value":0.028231},{"id":"Norway","value":4760.200206,"adj_value":4760.200206},{"id":"Finland","value":4506.071121,"adj_value":4506.071121},{"id":"Faroe Islands","value":97.897991,"adj_value":97.897991},{"id":"Denmark","value":7760.022813,"adj_value":7760.022813},{"id":"United Kingdom","value":57962.25131,"adj_value":57962.25131},{"id":"Ireland","value":39336.18067,"adj_value":39336.18067},{"id":"Netherlands","value":16835.61486,"adj_value":16835.61486},{"id":"Belgium","value":19482.27263,"adj_value":19482.27263},{"id":"Luxembourg","value":639.038795,"adj_value":639.038795},{"id":"Andorra","value":4.863157,"adj_value":4.863157},{"id":"Monaco","value":58.818337,"adj_value":58.818337},{"id":"France","value":47815.32286,"adj_value":47815.32286},{"id":"Germany","value":124820.4692,"adj_value":124820.4692},{"id":"Austria","value":11311.97506,"adj_value":11311.97506},{"id":"Czech Republic","value":4497.634904,"adj_value":4497.634904},{"id":"Slovakia","value":2299.822999,"adj_value":2299.822999},{"id":"Hungary","value":5721.266311,"adj_value":5721.266311},{"id":"Liechtenstein","value":310.294941,"adj_value":310.294941},{"id":"Switzerland","value":31396.66041,"adj_value":31396.66041},{"id":"Estonia","value":503.50072,"adj_value":503.50072},{"id":"Latvia","value":302.969587,"adj_value":302.969587},{"id":"Lithuania","value":1059.366349,"adj_value":1059.366349},{"id":"Poland","value":5637.927607,"adj_value":5637.927607},{"id":"Russia","value":16366.16158,"adj_value":16366.16158},{"id":"Belarus","value":158.249733,"adj_value":158.249733},{"id":"Ukraine","value":850.788858,"adj_value":850.788858},{"id":"Armenia","value":62.46349,"adj_value":62.46349},{"id":"Azerbaijan","value":507.148173,"adj_value":507.148173},{"id":"Georgia","value":181.150349,"adj_value":181.150349},{"id":"Kazakhstan","value":816.099815,"adj_value":816.099815},{"id":"Kyrgyzstan","value":15.803561,"adj_value":15.803561},{"id":"Moldova","value":43.920552,"adj_value":43.920552},{"id":"Tajikistan","value":31.123801,"adj_value":31.123801},{"id":"Turkmenistan","value":55.976778,"adj_value":55.976778},{"id":"Uzbekistan","value":9.715446,"adj_value":9.715446},{"id":"Spain","value":14129.84151,"adj_value":14129.84151},{"id":"Portugal","value":3271.009123,"adj_value":3271.009123},{"id":"Gibraltar","value":1.82442,"adj_value":1.82442},{"id":"Malta","value":241.219869,"adj_value":241.219869},{"id":"San Marino","value":8.517198,"adj_value":8.517198},{"id":"Vatican City","value":1.218395,"adj_value":1.218395},{"id":"Italy","value":44159.01154,"adj_value":44159.01154},{"id":"Croatia","value":576.891578,"adj_value":576.891578},{"id":"Slovenia","value":678.110689,"adj_value":678.110689},{"id":"Bosnia and Herzegovina","value":78.282267,"adj_value":78.282267},{"id":"Macedonia","value":203.357353,"adj_value":203.357353},{"id":"Serbia","value":272.617662,"adj_value":272.617662},{"id":"Kosovo","value":2.38298,"adj_value":2.38298},{"id":"Montenegro","value":2.108687,"adj_value":2.108687},{"id":"Albania","value":160.081219,"adj_value":160.081219},{"id":"Greece","value":1356.447796,"adj_value":1356.447796},{"id":"Romania","value":2148.841567,"adj_value":2148.841567},{"id":"Bulgaria","value":597.694693,"adj_value":597.694693}]},{"id":"Asia","children":[{"id":"Turkey","value":7880.91386,"adj_value":7880.91386},{"id":"Cyprus","value":31.98822,"adj_value":31.98822},{"id":"Syria","value":6.544106,"adj_value":6.544106},{"id":"Lebanon","value":93.219618,"adj_value":93.219618},{"id":"Iraq","value":4353.472677,"adj_value":4353.472677},{"id":"Iran","value":10.766314,"adj_value":10.766314},{"id":"Israel","value":24477.02161,"adj_value":24477.02161},{"id":"Gaza Strip admin. by Israel","value":0.012534,"adj_value":0.012534},{"id":"West Bank admin. by Israel","value":5.435229,"adj_value":5.435229},{"id":"Jordan","value":1491.618691,"adj_value":1491.618691},{"id":"Kuwait","value":4684.750276,"adj_value":4684.750276},{"id":"Saudi Arabia","value":22080.78482,"adj_value":22080.78482},{"id":"Qatar","value":1354.237789,"adj_value":1354.237789},{"id":"United Arab Emirates","value":2468.033306,"adj_value":2468.033306},{"id":"Republic of Yemen","value":48.270876,"adj_value":48.270876},{"id":"Oman","value":906.993161,"adj_value":906.993161},{"id":"Bahrain","value":902.425581,"adj_value":902.425581},{"id":"Afghanistan","value":23.454045,"adj_value":23.454045},{"id":"India","value":44791.64405,"adj_value":44791.64405},{"id":"Pakistan","value":3701.018609,"adj_value":3701.018609},{"id":"Nepal","value":86.959805,"adj_value":86.959805},{"id":"Bangladesh","value":5991.251839,"adj_value":5991.251839},{"id":"Sri Lanka","value":2889.92219,"adj_value":2889.92219},{"id":"Burma","value":143.796881,"adj_value":143.796881},{"id":"Thailand","value":28631.93281,"adj_value":28631.93281},{"id":"Vietnam","value":38019.69623,"adj_value":38019.69623},{"id":"Laos","value":45.189001,"adj_value":45.189001},{"id":"Cambodia","value":3025.433126,"adj_value":3025.433126},{"id":"Malaysia","value":33970.67872,"adj_value":33970.67872},{"id":"Singapore","value":18267.48494,"adj_value":18267.48494},{"id":"Indonesia","value":19601.54814,"adj_value":19601.54814},{"id":"East Timor","value":3.302038,"adj_value":3.302038},{"id":"Brunei","value":19.402766,"adj_value":19.402766},{"id":"Philippines","value":10233.69067,"adj_value":10233.69067},{"id":"Macau","value":121.919528,"adj_value":121.919528},{"id":"Bhutan","value":3.398158,"adj_value":3.398158},{"id":"Maldives","value":21.737873,"adj_value":21.737873},{"id":"China","value":483244.7019,"adj_value":483244.7019},{"id":"Mongolia","value":17.222375,"adj_value":17.222375},{"id":"Korea, North","value":0,"adj_value":0},{"id":"Korea, South","value":71758.69672,"adj_value":71758.69672},{"id":"Hong Kong","value":6795.630644,"adj_value":6795.630644},{"id":"Taiwan","value":40907.5936,"adj_value":40907.5936},{"id":"Japan","value":131364.1476,"adj_value":131364.1476}]},{"id":"Australia","children":[{"id":"Australia","value":10894.02186,"adj_value":10894.02186},{"id":"Norfolk Island","value":1.217241,"adj_value":1.217241},{"id":"Cocos (Keeling) Islands","value":3.809085,"adj_value":3.809085},{"id":"Christmas Island","value":2.12084,"adj_value":2.12084},{"id":"Heard and McDonald Islands","value":0.006734,"adj_value":0.006734},{"id":"Papua New Guinea","value":90.809528,"adj_value":90.809528},{"id":"New Zealand","value":4292.770709,"adj_value":4292.770709},{"id":"Cook Islands","value":0.84788,"adj_value":0.84788},{"id":"Tokelau","value":1.848379,"adj_value":1.848379},{"id":"Niue","value":0.531806,"adj_value":0.531806},{"id":"Samoa","value":4.220542,"adj_value":4.220542},{"id":"Solomon Islands","value":3.521953,"adj_value":3.521953},{"id":"Vanuatu","value":3.67132,"adj_value":3.67132},{"id":"Pitcairn Islands","value":0.012162,"adj_value":0.012162},{"id":"Kiribati","value":2.728752,"adj_value":2.728752},{"id":"Tuvalu","value":0.228118,"adj_value":0.228118},{"id":"New Caledonia","value":47.038156,"adj_value":47.038156},{"id":"Wallis and Futuna","value":0.093303,"adj_value":0.093303},{"id":"French Polynesia","value":43.030557,"adj_value":43.030557},{"id":"Marshall Islands","value":29.067047,"adj_value":29.067047},{"id":"Micronesia","value":0.717108,"adj_value":0.717108},{"id":"Palau","value":0.544832,"adj_value":0.544832},{"id":"Nauru","value":0.52087,"adj_value":0.52087},{"id":"Fiji","value":202.639037,"adj_value":202.639037},{"id":"Tonga","value":2.442895,"adj_value":2.442895}]},{"id":"Africa","children":[{"id":"Morocco","value":1011.85636,"adj_value":1011.85636},{"id":"Algeria","value":3371.552526,"adj_value":3371.552526},{"id":"Tunisia","value":546.271256,"adj_value":546.271256},{"id":"Libya","value":155.103895,"adj_value":155.103895},{"id":"Egypt","value":1405.853699,"adj_value":1405.853699},{"id":"Sudan","value":8.973253,"adj_value":8.973253},{"id":"South Sudan","value":0.192583,"adj_value":0.192583},{"id":"Western Sahara","value":0.044063,"adj_value":0.044063},{"id":"Equatorial Guinea","value":163.14305,"adj_value":163.14305},{"id":"Mauritania","value":1.173847,"adj_value":1.173847},{"id":"Cameroon","value":132.053379,"adj_value":132.053379},{"id":"Senegal","value":71.965108,"adj_value":71.965108},{"id":"Mali","value":4.504283,"adj_value":4.504283},{"id":"Guinea","value":79.616516,"adj_value":79.616516},{"id":"Sierra Leone","value":39.58921,"adj_value":39.58921},{"id":"Cote d'Ivoire","value":1027.88557,"adj_value":1027.88557},{"id":"Ghana","value":309.36766,"adj_value":309.36766},{"id":"Gambia","value":0.896754,"adj_value":0.896754},{"id":"Niger","value":4.184625,"adj_value":4.184625},{"id":"Togo","value":14.211452,"adj_value":14.211452},{"id":"Nigeria","value":1915.80016,"adj_value":1915.80016},{"id":"Central African Republic","value":3.12467,"adj_value":3.12467},{"id":"Gabon","value":337.024529,"adj_value":337.024529},{"id":"Chad","value":1303.322183,"adj_value":1303.322183},{"id":"St Helena","value":15.340188,"adj_value":15.340188},{"id":"Burkina Faso","value":3.592979,"adj_value":3.592979},{"id":"Benin","value":4.94488,"adj_value":4.94488},{"id":"Angola","value":2806.494883,"adj_value":2806.494883},{"id":"Congo (Brazzaville)","value":304.303884,"adj_value":304.303884},{"id":"Guinea-Bissau","value":0.05184,"adj_value":0.05184},{"id":"Cabo Verde","value":2.21905,"adj_value":2.21905},{"id":"Sao Tome and Principe","value":0.773369,"adj_value":0.773369},{"id":"Liberia","value":44.940717,"adj_value":44.940717},{"id":"Congo (Kinshasa)","value":153.738045,"adj_value":153.738045},{"id":"Burundi","value":8.427001,"adj_value":8.427001},{"id":"Rwanda","value":45.643909,"adj_value":45.643909},{"id":"Somalia","value":0.896112,"adj_value":0.896112},{"id":"Eritrea","value":0.106871,"adj_value":0.106871},{"id":"Ethiopia","value":310.269077,"adj_value":310.269077},{"id":"Djibouti","value":35.463684,"adj_value":35.463684},{"id":"Uganda","value":64.123855,"adj_value":64.123855},{"id":"Kenya","value":573.095415,"adj_value":573.095415},{"id":"Seychelles","value":5.83899,"adj_value":5.83899},{"id":"British Indian Ocean Terr.","value":15.818366,"adj_value":15.818366},{"id":"Tanzania","value":104.93518,"adj_value":104.93518},{"id":"Mauritius","value":395.664813,"adj_value":395.664813},{"id":"Mozambique","value":96.026702,"adj_value":96.026702},{"id":"Madagascar","value":319.783011,"adj_value":319.783011},{"id":"Mayotte","value":0.095927,"adj_value":0.095927},{"id":"Comoros","value":1.211821,"adj_value":1.211821},{"id":"Reunion","value":16.967288,"adj_value":16.967288},{"id":"French Southern and Antarctic","value":0.013953,"adj_value":0.013953},{"id":"South Africa","value":7314.612701,"adj_value":7314.612701},{"id":"Namibia","value":85.353831,"adj_value":85.353831},{"id":"Botswana","value":211.913954,"adj_value":211.913954},{"id":"Zambia","value":47.114386,"adj_value":47.114386},{"id":"Swaziland","value":21.49843,"adj_value":21.49843},{"id":"Zimbabwe","value":67.166669,"adj_value":67.166669},{"id":"Malawi","value":61.395881,"adj_value":61.395881},{"id":"Lesotho","value":331.955607,"adj_value":331.955607}]}]},{"id":"Exports","children":[{"id":"North America","children":[{"id":"Greenland","value":8.076839,"adj_value":8.076839},{"id":"Canada","value":280609.0056,"adj_value":280609.0056},{"id":"St Pierre and Miquelon","value":0.227459,"adj_value":0.227459},{"id":"Mexico","value":235745.1375,"adj_value":235745.1375},{"id":"Guatemala","value":5806.713895,"adj_value":5806.713895},{"id":"Belize","value":285.240264,"adj_value":285.240264},{"id":"El Salvador","value":3240.284878,"adj_value":3240.284878},{"id":"Honduras","value":5214.668234,"adj_value":5214.668234},{"id":"Nicaragua","value":1267.532561,"adj_value":1267.532561},{"id":"Costa Rica","value":6079.415736,"adj_value":6079.415736},{"id":"Panama","value":7663.548283,"adj_value":7663.548283},{"id":"Bermuda","value":600.945255,"adj_value":600.945255},{"id":"Bahamas","value":2386.461864,"adj_value":2386.461864},{"id":"Cuba","value":180.215206,"adj_value":180.215206},{"id":"Jamaica","value":1716.030814,"adj_value":1716.030814},{"id":"Turks and Caicos Islands","value":279.728597,"adj_value":279.728597},{"id":"Cayman Islands","value":684.947958,"adj_value":684.947958},{"id":"Haiti","value":1140.574185,"adj_value":1140.574185},{"id":"Dominican Republic","value":7113.829302,"adj_value":7113.829302},{"id":"Anguilla","value":47.602633,"adj_value":47.602633},{"id":"British Virgin Islands","value":259.758571,"adj_value":259.758571},{"id":"St Kitts and Nevis","value":149.707108,"adj_value":149.707108},{"id":"Antigua and Barbuda","value":677.657633,"adj_value":677.657633},{"id":"Montserrat","value":6.640011,"adj_value":6.640011},{"id":"Dominica","value":67.312046,"adj_value":67.312046},{"id":"St Lucia","value":510.811024,"adj_value":510.811024},{"id":"St Vincent and the Grenadines","value":84.722498,"adj_value":84.722498},{"id":"Grenada","value":90.420149,"adj_value":90.420149},{"id":"Barbados","value":595.966307,"adj_value":595.966307},{"id":"Trinidad and Tobago","value":2511.195111,"adj_value":2511.195111},{"id":"Sint Maarten","value":741.201231,"adj_value":741.201231},{"id":"Curacao","value":522.079698,"adj_value":522.079698},{"id":"Aruba","value":1167.632524,"adj_value":1167.632524},{"id":"Guadeloupe","value":100.959536,"adj_value":100.959536},{"id":"Martinique","value":119.577165,"adj_value":119.577165}]},{"id":"South America","children":[{"id":"Colombia","value":16286.7799,"adj_value":16286.7799},{"id":"Venezuela","value":8345.880233,"adj_value":8345.880233},{"id":"Guyana","value":368.129666,"adj_value":368.129666},{"id":"Suriname","value":443.643313,"adj_value":443.643313},{"id":"French Guiana","value":1073.642767,"adj_value":1073.642767},{"id":"Ecuador","value":5794.812688,"adj_value":5794.812688},{"id":"Peru","value":8725.607473,"adj_value":8725.607473},{"id":"Bolivia","value":931.431709,"adj_value":931.431709},{"id":"Chile","value":15445.13797,"adj_value":15445.13797},{"id":"Brazil","value":31650.62387,"adj_value":31650.62387},{"id":"Paraguay","value":1514.300292,"adj_value":1514.300292},{"id":"Uruguay","value":1295.148749,"adj_value":1295.148749},{"id":"Argentina","value":9341.210651,"adj_value":9341.210651},{"id":"Falkland Islands(Islas Malvin","value":2.917708,"adj_value":2.917708}]},{"id":"Europe","children":[{"id":"Iceland","value":415.45785,"adj_value":415.45785},{"id":"Sweden","value":3940.8105,"adj_value":3940.8105},{"id":"Svalbard, Jan Mayen Island","value":0.380164,"adj_value":0.380164},{"id":"Norway","value":3570.63315,"adj_value":3570.63315},{"id":"Finland","value":1558.146898,"adj_value":1558.146898},{"id":"Faroe Islands","value":2.336863,"adj_value":2.336863},{"id":"Denmark","value":2202.093582,"adj_value":2202.093582},{"id":"United Kingdom","value":56114.61886,"adj_value":56114.61886},{"id":"Ireland","value":8930.773509,"adj_value":8930.773509},{"id":"Netherlands","value":40196.15629,"adj_value":40196.15629},{"id":"Belgium","value":34159.97966,"adj_value":34159.97966},{"id":"Luxembourg","value":1394.17473,"adj_value":1394.17473},{"id":"Andorra","value":3.336817,"adj_value":3.336817},{"id":"Monaco","value":71.128048,"adj_value":71.128048},{"id":"France","value":30103.5212,"adj_value":30103.5212},{"id":"Germany","value":49970.80411,"adj_value":49970.80411},{"id":"Austria","value":4024.435888,"adj_value":4024.435888},{"id":"Czech Republic","value":1976.037865,"adj_value":1976.037865},{"id":"Slovakia","value":379.469169,"adj_value":379.469169},{"id":"Hungary","value":1715.278037,"adj_value":1715.278037},{"id":"Liechtenstein","value":35.930552,"adj_value":35.930552},{"id":"Switzerland","value":22185.27991,"adj_value":22185.27991},{"id":"Estonia","value":288.143789,"adj_value":288.143789},{"id":"Latvia","value":294.787977,"adj_value":294.787977},{"id":"Lithuania","value":527.67763,"adj_value":527.67763},{"id":"Poland","value":3715.441301,"adj_value":3715.441301},{"id":"Russia","value":7087.111574,"adj_value":7087.111574},{"id":"Belarus","value":59.235752,"adj_value":59.235752},{"id":"Ukraine","value":862.088348,"adj_value":862.088348},{"id":"Armenia","value":50.24617,"adj_value":50.24617},{"id":"Azerbaijan","value":477.316108,"adj_value":477.316108},{"id":"Georgia","value":340.502111,"adj_value":340.502111},{"id":"Kazakhstan","value":510.479071,"adj_value":510.479071},{"id":"Kyrgyzstan","value":32.003481,"adj_value":32.003481},{"id":"Moldova","value":16.163682,"adj_value":16.163682},{"id":"Tajikistan","value":18.985373,"adj_value":18.985373},{"id":"Turkmenistan","value":80.839805,"adj_value":80.839805},{"id":"Uzbekistan","value":137.962928,"adj_value":137.962928},{"id":"Spain","value":10310.27052,"adj_value":10310.27052},{"id":"Portugal","value":942.466275,"adj_value":942.466275},{"id":"Gibraltar","value":1972.99261,"adj_value":1972.99261},{"id":"Malta","value":490.660579,"adj_value":490.660579},{"id":"San Marino","value":5.011879,"adj_value":5.011879},{"id":"Vatican City","value":2.226547,"adj_value":2.226547},{"id":"Italy","value":16204.22609,"adj_value":16204.22609},{"id":"Croatia","value":331.976272,"adj_value":331.976272},{"id":"Slovenia","value":346.040192,"adj_value":346.040192},{"id":"Bosnia and Herzegovina","value":27.586061,"adj_value":27.586061},{"id":"Macedonia","value":30.678977,"adj_value":30.678977},{"id":"Serbia","value":126.25142,"adj_value":126.25142},{"id":"Kosovo","value":19.743318,"adj_value":19.743318},{"id":"Montenegro","value":11.133957,"adj_value":11.133957},{"id":"Albania","value":30.952665,"adj_value":30.952665},{"id":"Greece","value":725.699147,"adj_value":725.699147},{"id":"Romania","value":753.718827,"adj_value":753.718827},{"id":"Bulgaria","value":289.09201,"adj_value":289.09201}]},{"id":"Asia","children":[{"id":"Turkey","value":9502.498123,"adj_value":9502.498123},{"id":"Cyprus","value":101.831614,"adj_value":101.831614},{"id":"Syria","value":3.072304,"adj_value":3.072304},{"id":"Lebanon","value":1272.487166,"adj_value":1272.487166},{"id":"Iraq","value":1971.478767,"adj_value":1971.478767},{"id":"Iran","value":281.512074,"adj_value":281.512074},{"id":"Israel","value":13538.69482,"adj_value":13538.69482},{"id":"Gaza Strip admin. by Israel","value":0.183934,"adj_value":0.183934},{"id":"West Bank admin. by Israel","value":0.903282,"adj_value":0.903282},{"id":"Jordan","value":1358.977191,"adj_value":1358.977191},{"id":"Kuwait","value":2739.289578,"adj_value":2739.289578},{"id":"Saudi Arabia","value":19738.98459,"adj_value":19738.98459},{"id":"Qatar","value":4222.426394,"adj_value":4222.426394},{"id":"United Arab Emirates","value":23003.59562,"adj_value":23003.59562},{"id":"Republic of Yemen","value":158.039977,"adj_value":158.039977},{"id":"Oman","value":2355.271013,"adj_value":2355.271013},{"id":"Bahrain","value":1270.662445,"adj_value":1270.662445},{"id":"Afghanistan","value":478.851271,"adj_value":478.851271},{"id":"India","value":21451.87992,"adj_value":21451.87992},{"id":"Pakistan","value":1837.506933,"adj_value":1837.506933},{"id":"Nepal","value":36.405446,"adj_value":36.405446},{"id":"Bangladesh","value":942.540067,"adj_value":942.540067},{"id":"Sri Lanka","value":361.920786,"adj_value":361.920786},{"id":"Burma","value":227.140755,"adj_value":227.140755},{"id":"Thailand","value":11230.56974,"adj_value":11230.56974},{"id":"Vietnam","value":7087.524038,"adj_value":7087.524038},{"id":"Laos","value":24.584007,"adj_value":24.584007},{"id":"Cambodia","value":391.045876,"adj_value":391.045876},{"id":"Malaysia","value":12277.22614,"adj_value":12277.22614},{"id":"Singapore","value":28472.07098,"adj_value":28472.07098},{"id":"Indonesia","value":7120.940688,"adj_value":7120.940688},{"id":"East Timor","value":2.690584,"adj_value":2.690584},{"id":"Brunei","value":133.449998,"adj_value":133.449998},{"id":"Philippines","value":7907.893167,"adj_value":7907.893167},{"id":"Macau","value":542.354584,"adj_value":542.354584},{"id":"Bhutan","value":2.64104,"adj_value":2.64104},{"id":"Maldives","value":35.143208,"adj_value":35.143208},{"id":"China","value":116071.7696,"adj_value":116071.7696},{"id":"Mongolia","value":69.161103,"adj_value":69.161103},{"id":"Korea, North","value":4.751721,"adj_value":4.751721},{"id":"Korea, South","value":43445.54748,"adj_value":43445.54748},{"id":"Hong Kong","value":37167.02295,"adj_value":37167.02295},{"id":"Taiwan","value":25860.08634,"adj_value":25860.08634},{"id":"Japan","value":62442.64646,"adj_value":62442.64646}]},{"id":"Australia","children":[{"id":"Australia","value":25035.79015,"adj_value":25035.79015},{"id":"Norfolk Island","value":0.350312,"adj_value":0.350312},{"id":"Cocos (Keeling) Islands","value":0.55762,"adj_value":0.55762},{"id":"Christmas Island","value":1.551179,"adj_value":1.551179},{"id":"Heard and McDonald Islands","value":0.913419,"adj_value":0.913419},{"id":"Papua New Guinea","value":207.793894,"adj_value":207.793894},{"id":"New Zealand","value":3631.061903,"adj_value":3631.061903},{"id":"Cook Islands","value":4.249826,"adj_value":4.249826},{"id":"Tokelau","value":0.341222,"adj_value":0.341222},{"id":"Niue","value":0.071371,"adj_value":0.071371},{"id":"Samoa","value":22.71966,"adj_value":22.71966},{"id":"Solomon Islands","value":5.861309,"adj_value":5.861309},{"id":"Vanuatu","value":5.867876,"adj_value":5.867876},{"id":"Pitcairn Islands","value":0.017405,"adj_value":0.017405},{"id":"Kiribati","value":7.320835,"adj_value":7.320835},{"id":"Tuvalu","value":0.625636,"adj_value":0.625636},{"id":"New Caledonia","value":88.651277,"adj_value":88.651277},{"id":"Wallis and Futuna","value":0.376841,"adj_value":0.376841},{"id":"French Polynesia","value":120.047865,"adj_value":120.047865},{"id":"Marshall Islands","value":53.912135,"adj_value":53.912135},{"id":"Micronesia","value":40.032614,"adj_value":40.032614},{"id":"Palau","value":25.693198,"adj_value":25.693198},{"id":"Nauru","value":1.73365,"adj_value":1.73365},{"id":"Fiji","value":56.904585,"adj_value":56.904585},{"id":"Tonga","value":13.817538,"adj_value":13.817538}]},{"id":"Africa","children":[{"id":"Morocco","value":1625.204959,"adj_value":1625.204959},{"id":"Algeria","value":1875.734479,"adj_value":1875.734479},{"id":"Tunisia","value":602.412017,"adj_value":602.412017},{"id":"Libya","value":242.951645,"adj_value":242.951645},{"id":"Egypt","value":4752.983685,"adj_value":4752.983685},{"id":"Sudan","value":59.514997,"adj_value":59.514997},{"id":"South Sudan","value":19.613532,"adj_value":19.613532},{"id":"Western Sahara","value":0.032113,"adj_value":0.032113},{"id":"Equatorial Guinea","value":161.964373,"adj_value":161.964373},{"id":"Mauritania","value":126.280667,"adj_value":126.280667},{"id":"Cameroon","value":224.961698,"adj_value":224.961698},{"id":"Senegal","value":196.428411,"adj_value":196.428411},{"id":"Mali","value":72.426079,"adj_value":72.426079},{"id":"Guinea","value":135.350114,"adj_value":135.350114},{"id":"Sierra Leone","value":77.325724,"adj_value":77.325724},{"id":"Cote d'Ivoire","value":266.335569,"adj_value":266.335569},{"id":"Ghana","value":949.913963,"adj_value":949.913963},{"id":"Gambia","value":37.899622,"adj_value":37.899622},{"id":"Niger","value":71.493157,"adj_value":71.493157},{"id":"Togo","value":311.819809,"adj_value":311.819809},{"id":"Nigeria","value":3437.952784,"adj_value":3437.952784},{"id":"Central African Republic","value":34.309874,"adj_value":34.309874},{"id":"Gabon","value":203.872443,"adj_value":203.872443},{"id":"Chad","value":56.591528,"adj_value":56.591528},{"id":"St Helena","value":3.720487,"adj_value":3.720487},{"id":"Burkina Faso","value":53.875343,"adj_value":53.875343},{"id":"Benin","value":631.462518,"adj_value":631.462518},{"id":"Angola","value":1166.161667,"adj_value":1166.161667},{"id":"Congo (Brazzaville)","value":249.220232,"adj_value":249.220232},{"id":"Guinea-Bissau","value":2.13532,"adj_value":2.13532},{"id":"Cabo Verde","value":7.32166,"adj_value":7.32166},{"id":"Sao Tome and Principe","value":0.853963,"adj_value":0.853963},{"id":"Liberia","value":135.807551,"adj_value":135.807551},{"id":"Congo (Kinshasa)","value":136.189374,"adj_value":136.189374},{"id":"Burundi","value":5.650192,"adj_value":5.650192},{"id":"Rwanda","value":14.28771,"adj_value":14.28771},{"id":"Somalia","value":45.026584,"adj_value":45.026584},{"id":"Eritrea","value":3.497538,"adj_value":3.497538},{"id":"Ethiopia","value":1555.249376,"adj_value":1555.249376},{"id":"Djibouti","value":144.711021,"adj_value":144.711021},{"id":"Uganda","value":88.315069,"adj_value":88.315069},{"id":"Kenya","value":943.436657,"adj_value":943.436657},{"id":"Seychelles","value":18.542809,"adj_value":18.542809},{"id":"British Indian Ocean Terr.","value":0.581016,"adj_value":0.581016},{"id":"Tanzania","value":172.803054,"adj_value":172.803054},{"id":"Mauritius","value":58.435311,"adj_value":58.435311},{"id":"Mozambique","value":264.203995,"adj_value":264.203995},{"id":"Madagascar","value":54.553731,"adj_value":54.553731},{"id":"Mayotte","value":5.697333,"adj_value":5.697333},{"id":"Comoros","value":1.507078,"adj_value":1.507078},{"id":"Reunion","value":6.905271,"adj_value":6.905271},{"id":"French Southern and Antarctic","value":8.026602,"adj_value":8.026602},{"id":"South Africa","value":5458.29362,"adj_value":5458.29362},{"id":"Namibia","value":127.603603,"adj_value":127.603603},{"id":"Botswana","value":39.04197,"adj_value":39.04197},{"id":"Zambia","value":84.170835,"adj_value":84.170835},{"id":"Swaziland","value":28.521751,"adj_value":28.521751},{"id":"Zimbabwe","value":37.834783,"adj_value":37.834783},{"id":"Malawi","value":37.201602,"adj_value":37.201602},{"id":"Lesotho","value":0.881897,"adj_value":0.881897}]}]}]},{"id":"1985","children":[{"id":"Imports","children":[{"id":"North America","children":[{"id":"Canada","value":69006.4,"adj_value":152007.2979},{"id":"Mexico","value":19131.7,"adj_value":42143.30876},{"id":"Guatemala","value":409,"adj_value":900.9452},{"id":"El Salvador","value":395.6,"adj_value":871.42768},{"id":"Honduras","value":375.4,"adj_value":826.93112},{"id":"Costa Rica","value":501.3,"adj_value":1104.26364},{"id":"Panama","value":410.6,"adj_value":904.46968},{"id":"Bahamas","value":626.3,"adj_value":1379.61364},{"id":"Jamaica","value":272.7,"adj_value":600.70356},{"id":"Haiti","value":389.6,"adj_value":858.21088},{"id":"Dominican Republic","value":982.3,"adj_value":2163.81044},{"id":"Trinidad and Tobago","value":1258.4,"adj_value":2772.00352},{"id":"Netherlands Antilles","value":808,"adj_value":1779.8624}]},{"id":"South America","children":[{"id":"Colombia","value":1330.7,"adj_value":2931.26596},{"id":"Venezuela","value":6537.1,"adj_value":14399.92388},{"id":"Ecuador","value":1836.5,"adj_value":4045.4422},{"id":"Peru","value":1086.6,"adj_value":2393.56248},{"id":"Chile","value":745.2,"adj_value":1641.52656},{"id":"Brazil","value":7526.2,"adj_value":16578.71336},{"id":"Paraguay","value":23.6,"adj_value":51.98608},{"id":"Uruguay","value":556.6,"adj_value":1226.07848},{"id":"Argentina","value":1069.3,"adj_value":2355.45404}]},{"id":"Europe","children":[{"id":"Iceland","value":247.8,"adj_value":545.85384},{"id":"Sweden","value":4123.7,"adj_value":9083.68636},{"id":"Norway","value":1164.3,"adj_value":2564.72004},{"id":"Finland","value":895.2,"adj_value":1971.94656},{"id":"Denmark","value":1664.4,"adj_value":3666.34032},{"id":"United Kingdom","value":14937.2,"adj_value":32903.66416},{"id":"Ireland","value":901.1,"adj_value":1984.94308},{"id":"Netherlands","value":4081.3,"adj_value":8990.28764},{"id":"Belgium","value":3355.2,"adj_value":7390.83456},{"id":"France","value":9482,"adj_value":20886.9496},{"id":"Germany","value":20239.2,"adj_value":44582.90976},{"id":"Austria","value":833.7,"adj_value":1836.47436},{"id":"Hungary","value":218.3,"adj_value":480.87124},{"id":"Switzerland","value":3476.1,"adj_value":7657.15308},{"id":"Poland","value":220.2,"adj_value":485.05656},{"id":"USSR","value":408.5,"adj_value":899.8438},{"id":"Spain","value":2515.2,"adj_value":5540.48256},{"id":"Portugal","value":546,"adj_value":1202.7288},{"id":"Italy","value":9673.8,"adj_value":21309.44664},{"id":"Yugoslavia (former)","value":542.2,"adj_value":1194.35816},{"id":"Greece","value":394.7,"adj_value":869.44516}]},{"id":"Asia","children":[{"id":"Turkey","value":601.9,"adj_value":1325.86532},{"id":"Iran","value":725.1,"adj_value":1597.25028},{"id":"Israel","value":2122.5,"adj_value":4675.443},{"id":"Kuwait","value":184,"adj_value":405.3152},{"id":"Saudi Arabia","value":1907.1,"adj_value":4200.95988},{"id":"United Arab Emirates","value":671,"adj_value":1478.0788},{"id":"Bahrain","value":83.3,"adj_value":183.49324},{"id":"India","value":2294.7,"adj_value":5054.76516},{"id":"Pakistan","value":273.9,"adj_value":603.34692},{"id":"Bangladesh","value":196,"adj_value":431.7488},{"id":"Sri Lanka","value":281.9,"adj_value":620.96932},{"id":"Thailand","value":1428.3,"adj_value":3146.25924},{"id":"Malaysia","value":2299.9,"adj_value":5066.21972},{"id":"Singapore","value":4259.9,"adj_value":9383.70772},{"id":"Indonesia","value":4568.9,"adj_value":10064.37292},{"id":"Philippines","value":2145,"adj_value":4725.006},{"id":"Macau","value":341.9,"adj_value":753.13732},{"id":"China","value":3861.7,"adj_value":8506.55276},{"id":"Korea, South","value":10013.3,"adj_value":22057.29724},{"id":"Hong Kong","value":8396.4,"adj_value":18495.58992},{"id":"Taiwan","value":16396.3,"adj_value":36117.76964},{"id":"Japan","value":68782.9,"adj_value":151514.9721}]},{"id":"Australia","children":[{"id":"Australia","value":2836.3,"adj_value":6247.80164},{"id":"New Zealand","value":857,"adj_value":1887.7996}]},{"id":"Africa","children":[{"id":"Algeria","value":2333,"adj_value":5139.1324},{"id":"Egypt","value":79.1,"adj_value":174.24148},{"id":"Cote d'Ivoire","value":524.8,"adj_value":1156.02944},{"id":"Nigeria","value":3001.9,"adj_value":6612.58532},{"id":"Gabon","value":501.9,"adj_value":1105.58532},{"id":"Angola","value":1053.6,"adj_value":2320.87008},{"id":"Congo (Brazzaville)","value":609.3,"adj_value":1342.16604},{"id":"Congo (Kinshasa)","value":400.7,"adj_value":882.66196},{"id":"South Africa","value":2070.9,"adj_value":4561.77852}]}]},{"id":"Exports","children":[{"id":"North America","children":[{"id":"Canada","value":47251,"adj_value":104084.5028},{"id":"Mexico","value":13634.7,"adj_value":30034.51716},{"id":"Guatemala","value":404.6,"adj_value":891.25288},{"id":"El Salvador","value":445.5,"adj_value":981.3474},{"id":"Honduras","value":307.9,"adj_value":678.24212},{"id":"Costa Rica","value":421.7,"adj_value":928.92076},{"id":"Panama","value":674.8,"adj_value":1486.44944},{"id":"Bahamas","value":786.3,"adj_value":1732.06164},{"id":"Jamaica","value":404.3,"adj_value":890.59204},{"id":"Haiti","value":395.9,"adj_value":872.08852},{"id":"Dominican Republic","value":742,"adj_value":1634.4776},{"id":"Trinidad and Tobago","value":503.7,"adj_value":1109.55036},{"id":"Netherlands Antilles","value":427.5,"adj_value":941.697}]},{"id":"South America","children":[{"id":"Colombia","value":1467.7,"adj_value":3233.04956},{"id":"Venezuela","value":3399.4,"adj_value":7488.19832},{"id":"Ecuador","value":591.1,"adj_value":1302.07508},{"id":"Peru","value":495.9,"adj_value":1092.36852},{"id":"Chile","value":682.2,"adj_value":1502.75016},{"id":"Brazil","value":3139.6,"adj_value":6915.91088},{"id":"Paraguay","value":98.9,"adj_value":217.85692},{"id":"Uruguay","value":64.3,"adj_value":141.64004},{"id":"Argentina","value":721.3,"adj_value":1588.87964}]},{"id":"Europe","children":[{"id":"Iceland","value":38,"adj_value":83.7064},{"id":"Sweden","value":1924.9,"adj_value":4240.16972},{"id":"Norway","value":665.9,"adj_value":1466.84452},{"id":"Finland","value":437.7,"adj_value":964.16556},{"id":"Denmark","value":705.7,"adj_value":1554.51596},{"id":"United Kingdom","value":11272.8,"adj_value":24831.72384},{"id":"Ireland","value":1341.8,"adj_value":2955.71704},{"id":"Netherlands","value":7269,"adj_value":16012.1532},{"id":"Belgium","value":4917.7,"adj_value":10832.70956},{"id":"France","value":6095.6,"adj_value":13427.38768},{"id":"Germany","value":9050.2,"adj_value":19935.78056},{"id":"Austria","value":441.2,"adj_value":971.87536},{"id":"Hungary","value":94.5,"adj_value":208.1646},{"id":"Switzerland","value":2287.7,"adj_value":5039.34556},{"id":"Poland","value":237.9,"adj_value":524.04612},{"id":"USSR","value":2422.8,"adj_value":5336.94384},{"id":"Spain","value":2524.1,"adj_value":5560.08748},{"id":"Portugal","value":694.5,"adj_value":1529.8446},{"id":"Italy","value":4625.2,"adj_value":10188.39056},{"id":"Yugoslavia (former)","value":594.7,"adj_value":1310.00516},{"id":"Greece","value":497.8,"adj_value":1096.55384}]},{"id":"Asia","children":[{"id":"Turkey","value":1294.6,"adj_value":2851.74488},{"id":"Iran","value":73.9,"adj_value":162.78692},{"id":"Israel","value":2579.6,"adj_value":5682.34288},{"id":"Kuwait","value":550.6,"adj_value":1212.86168},{"id":"Saudi Arabia","value":4474.3,"adj_value":9855.98804},{"id":"United Arab Emirates","value":596.5,"adj_value":1313.9702},{"id":"Bahrain","value":107,"adj_value":235.6996},{"id":"India","value":1641.9,"adj_value":3616.77732},{"id":"Pakistan","value":1041.7,"adj_value":2294.65676},{"id":"Bangladesh","value":218.9,"adj_value":482.19292},{"id":"Sri Lanka","value":72.8,"adj_value":160.36384},{"id":"Thailand","value":849.1,"adj_value":1870.39748},{"id":"Malaysia","value":1539.2,"adj_value":3390.54976},{"id":"Singapore","value":3475.6,"adj_value":7656.05168},{"id":"Indonesia","value":795,"adj_value":1751.226},{"id":"Philippines","value":1379.3,"adj_value":3038.32204},{"id":"Macau","value":1.1,"adj_value":2.42308},{"id":"China","value":3855.7,"adj_value":8493.33596},{"id":"Korea, South","value":5956.3,"adj_value":13120.53764},{"id":"Hong Kong","value":2785.9,"adj_value":6136.78052},{"id":"Taiwan","value":4700,"adj_value":10353.16},{"id":"Japan","value":22630.9,"adj_value":49851.34652}]},{"id":"Australia","children":[{"id":"Australia","value":5440.4,"adj_value":11984.11312},{"id":"New Zealand","value":727.5,"adj_value":1602.537}]},{"id":"Africa","children":[{"id":"Algeria","value":430.1,"adj_value":947.42428},{"id":"Egypt","value":2322.6,"adj_value":5116.22328},{"id":"Cote d'Ivoire","value":69.7,"adj_value":153.53516},{"id":"Nigeria","value":675.7,"adj_value":1488.43196},{"id":"Gabon","value":91.2,"adj_value":200.89536},{"id":"Angola","value":136.9,"adj_value":301.56332},{"id":"Congo (Brazzaville)","value":19.4,"adj_value":42.73432},{"id":"Congo (Kinshasa)","value":101.5,"adj_value":223.5842},{"id":"South Africa","value":1205,"adj_value":2654.374}]}]}]}]},"options":{"tile":"Squarify"}},"evals":[],"jsHooks":[]}</script>
</div>
<div style="float:left; display:inline;">
<h3>
Binary
</h3>
<div id="htmlwidget-4b5d760c7f5f8968d6d1" class="treebar html-widget" style="width:400px;height:250px;">
</div>
<script type="application/json" data-for="htmlwidget-4b5d760c7f5f8968d6d1">{"x":{"data":{"children":[{"id":"1995","children":[{"id":"Imports","children":[{"id":"North America","children":[{"id":"Greenland","value":7.6,"adj_value":11.81952},{"id":"Canada","value":144369.9,"adj_value":224524.0685},{"id":"St Pierre and Miquelon","value":3.4,"adj_value":5.28768},{"id":"Mexico","value":62100.4,"adj_value":96578.54208},{"id":"Guatemala","value":1526.8,"adj_value":2374.47936},{"id":"Belize","value":52.1,"adj_value":81.02592},{"id":"El Salvador","value":812.2,"adj_value":1263.13344},{"id":"Honduras","value":1441.2,"adj_value":2241.35424},{"id":"Nicaragua","value":238.8,"adj_value":371.38176},{"id":"Costa Rica","value":1843.2,"adj_value":2866.54464},{"id":"Panama","value":307.1,"adj_value":477.60192},{"id":"Bermuda","value":10.4,"adj_value":16.17408},{"id":"Bahamas","value":156.7,"adj_value":243.69984},{"id":"Cuba","value":0,"adj_value":0},{"id":"Jamaica","value":846.9,"adj_value":1317.09888},{"id":"Turks and Caicos Islands","value":5,"adj_value":7.776},{"id":"Cayman Islands","value":18.2,"adj_value":28.30464},{"id":"Haiti","value":129.9,"adj_value":202.02048},{"id":"Dominican Republic","value":3398.9,"adj_value":5285.96928},{"id":"Anguilla","value":0,"adj_value":0},{"id":"British Virgin Islands","value":11.2,"adj_value":17.41824},{"id":"St Kitts and Nevis","value":22.3,"adj_value":34.68096},{"id":"Antigua and Barbuda","value":2.8,"adj_value":4.35456},{"id":"Montserrat","value":2,"adj_value":3.1104},{"id":"Dominica","value":6.6,"adj_value":10.26432},{"id":"St Lucia","value":35.1,"adj_value":54.58752},{"id":"St Vincent and the Grenadines","value":7.9,"adj_value":12.28608},{"id":"Grenada","value":5.3,"adj_value":8.24256},{"id":"Barbados","value":37.7,"adj_value":58.63104},{"id":"Trinidad and Tobago","value":1089.2,"adj_value":1693.92384},{"id":"Netherlands Antilles","value":289.8,"adj_value":450.69696},{"id":"Aruba","value":420.7,"adj_value":654.27264},{"id":"Guadeloupe","value":1.2,"adj_value":1.86624},{"id":"Martinique","value":1.9,"adj_value":2.95488}]},{"id":"South America","children":[{"id":"Colombia","value":3791,"adj_value":5895.7632},{"id":"Venezuela","value":9764,"adj_value":15184.9728},{"id":"Guyana","value":107.4,"adj_value":167.02848},{"id":"Suriname","value":100,"adj_value":155.52},{"id":"French Guiana","value":5.2,"adj_value":8.08704},{"id":"Ecuador","value":1939.7,"adj_value":3016.62144},{"id":"Peru","value":1034.4,"adj_value":1608.69888},{"id":"Bolivia","value":262.5,"adj_value":408.24},{"id":"Chile","value":1930.8,"adj_value":3002.78016},{"id":"Brazil","value":8832.9,"adj_value":13736.92608},{"id":"Paraguay","value":55,"adj_value":85.536},{"id":"Uruguay","value":167.2,"adj_value":260.02944},{"id":"Argentina","value":1760.8,"adj_value":2738.39616},{"id":"Falkland Islands(Islas Malvin","value":0.5,"adj_value":0.7776}]},{"id":"Europe","children":[{"id":"Iceland","value":232.8,"adj_value":362.05056},{"id":"Sweden","value":6256.4,"adj_value":9729.95328},{"id":"Svalbard, Jan Mayen Island","value":0.2,"adj_value":0.31104},{"id":"Norway","value":3086.7,"adj_value":4800.43584},{"id":"Finland","value":2269.9,"adj_value":3530.14848},{"id":"Faroe Islands","value":8.4,"adj_value":13.06368},{"id":"Denmark","value":1944.9,"adj_value":3024.70848},{"id":"United Kingdom","value":26929.7,"adj_value":41881.06944},{"id":"Ireland","value":4078.7,"adj_value":6343.19424},{"id":"Netherlands","value":6404.9,"adj_value":9960.90048},{"id":"Belgium","value":6053.9,"adj_value":9415.02528},{"id":"Luxembourg","value":233.8,"adj_value":363.60576},{"id":"Andorra","value":0.2,"adj_value":0.31104},{"id":"Monaco","value":12.2,"adj_value":18.97344},{"id":"France","value":17209.4,"adj_value":26764.05888},{"id":"Germany","value":36843.9,"adj_value":57299.63328},{"id":"Austria","value":1963.2,"adj_value":3053.16864},{"id":"Czechoslovakia","value":0,"adj_value":0},{"id":"Czech Republic","value":363.3,"adj_value":565.00416},{"id":"Slovakia","value":129.5,"adj_value":201.3984},{"id":"Hungary","value":547,"adj_value":850.6944},{"id":"Liechtenstein","value":126.2,"adj_value":196.26624},{"id":"Switzerland","value":7593.9,"adj_value":11810.03328},{"id":"Estonia","value":62.1,"adj_value":96.57792},{"id":"Latvia","value":82,"adj_value":127.5264},{"id":"Lithuania","value":26.5,"adj_value":41.2128},{"id":"Poland","value":663.6,"adj_value":1032.03072},{"id":"USSR","value":0,"adj_value":0},{"id":"Russia","value":4030.1,"adj_value":6267.61152},{"id":"Belarus","value":45,"adj_value":69.984},{"id":"Ukraine","value":405.7,"adj_value":630.94464},{"id":"Armenia","value":16.3,"adj_value":25.34976},{"id":"Azerbaijan","value":0.7,"adj_value":1.08864},{"id":"Georgia","value":10.7,"adj_value":16.64064},{"id":"Kazakhstan","value":122.9,"adj_value":191.13408},{"id":"Kyrgyzstan","value":8.4,"adj_value":13.06368},{"id":"Moldova","value":24.8,"adj_value":38.56896},{"id":"Tajikistan","value":40.9,"adj_value":63.60768},{"id":"Turkmenistan","value":1.3,"adj_value":2.02176},{"id":"Uzbekistan","value":18.8,"adj_value":29.23776},{"id":"Spain","value":3879.7,"adj_value":6033.70944},{"id":"Portugal","value":1056.7,"adj_value":1643.37984},{"id":"Gibraltar","value":4.8,"adj_value":7.46496},{"id":"Malta","value":132.5,"adj_value":206.064},{"id":"San Marino","value":1,"adj_value":1.5552},{"id":"Vatican City","value":0.7,"adj_value":1.08864},{"id":"Italy","value":16348.4,"adj_value":25425.03168},{"id":"Yugoslavia (former)","value":0,"adj_value":0},{"id":"Croatia","value":93.8,"adj_value":145.87776},{"id":"Slovenia","value":289.5,"adj_value":450.2304},{"id":"Bosnia and Herzegovina","value":3.5,"adj_value":5.4432},{"id":"Macedonia","value":88.8,"adj_value":138.10176},{"id":"Serbia and Montenegro","value":0,"adj_value":0},{"id":"Albania","value":9.4,"adj_value":14.61888},{"id":"Greece","value":397.1,"adj_value":617.56992},{"id":"Romania","value":222.3,"adj_value":345.72096},{"id":"Bulgaria","value":188.5,"adj_value":293.1552}]},{"id":"Asia","children":[{"id":"Turkey","value":1797.9,"adj_value":2796.09408},{"id":"Cyprus","value":13.1,"adj_value":20.37312},{"id":"Syria","value":61.1,"adj_value":95.02272},{"id":"Lebanon","value":35,"adj_value":54.432},{"id":"Iraq","value":0,"adj_value":0},{"id":"Iran","value":0.2,"adj_value":0.31104},{"id":"Israel","value":0,"adj_value":0},{"id":"Israel","value":5708.7,"adj_value":8878.17024},{"id":"Gaza Strip admin. by Israel","value":0,"adj_value":0},{"id":"West Bank admin. by Israel","value":0,"adj_value":0},{"id":"Jordan","value":28.9,"adj_value":44.94528},{"id":"Kuwait","value":1335.5,"adj_value":2076.9696},{"id":"Iraq-Saudi Arabia Neutral Zone","value":0,"adj_value":0},{"id":"Saudi Arabia","value":8376.6,"adj_value":13027.28832},{"id":"Qatar","value":90.9,"adj_value":141.36768},{"id":"United Arab Emirates","value":459.1,"adj_value":713.99232},{"id":"Republic of Yemen","value":41.5,"adj_value":64.5408},{"id":"Oman","value":294.9,"adj_value":458.62848},{"id":"Bahrain","value":134.3,"adj_value":208.86336},{"id":"Afghanistan","value":5.4,"adj_value":8.39808},{"id":"India","value":5726.3,"adj_value":8905.54176},{"id":"Pakistan","value":1197,"adj_value":1861.5744},{"id":"Nepal","value":96.1,"adj_value":149.45472},{"id":"Bangladesh","value":1257.2,"adj_value":1955.19744},{"id":"Sri Lanka","value":1259.7,"adj_value":1959.08544},{"id":"Burma","value":81,"adj_value":125.9712},{"id":"Thailand","value":11348.1,"adj_value":17648.56512},{"id":"Vietnam","value":199,"adj_value":309.4848},{"id":"Laos","value":10.2,"adj_value":15.86304},{"id":"Cambodia","value":5.1,"adj_value":7.93152},{"id":"Malaysia","value":17454.9,"adj_value":27145.86048},{"id":"Singapore","value":18560.4,"adj_value":28865.13408},{"id":"Indonesia","value":7435.3,"adj_value":11563.37856},{"id":"Brunei","value":38.4,"adj_value":59.71968},{"id":"Philippines","value":7006.5,"adj_value":10896.5088},{"id":"Macau","value":895.3,"adj_value":1392.37056},{"id":"Bhutan","value":0.1,"adj_value":0.15552},{"id":"Maldives","value":12,"adj_value":18.6624},{"id":"China","value":45543.2,"adj_value":70828.78464},{"id":"Mongolia","value":23.2,"adj_value":36.08064},{"id":"Korea, North","value":0,"adj_value":0},{"id":"Korea, South","value":24184,"adj_value":37610.9568},{"id":"Hong Kong","value":10291.3,"adj_value":16005.02976},{"id":"Taiwan","value":28971.9,"adj_value":45057.09888},{"id":"Japan","value":123479.3,"adj_value":192035.0074}]},{"id":"Australia","children":[{"id":"Australia","value":3323,"adj_value":5167.9296},{"id":"Norfolk Island","value":78.6,"adj_value":122.23872},{"id":"Cocos (Keeling) Islands","value":0,"adj_value":0},{"id":"Christmas Island","value":0,"adj_value":0},{"id":"Heard and McDonald Islands","value":0.3,"adj_value":0.46656},{"id":"Papua New Guinea","value":50.2,"adj_value":78.07104},{"id":"New Zealand","value":1451.8,"adj_value":2257.83936},{"id":"Cook Islands","value":0.8,"adj_value":1.24416},{"id":"Tokelau","value":6.1,"adj_value":9.48672},{"id":"Niue","value":0.1,"adj_value":0.15552},{"id":"Samoa","value":0.3,"adj_value":0.46656},{"id":"Solomon Islands","value":4.3,"adj_value":6.68736},{"id":"Vanuatu","value":0,"adj_value":0},{"id":"Pitcairn Islands","value":0,"adj_value":0},{"id":"Kiribati","value":1.4,"adj_value":2.17728},{"id":"Tuvalu","value":0,"adj_value":0},{"id":"New Caledonia","value":40.2,"adj_value":62.51904},{"id":"Wallis and Futuna","value":0,"adj_value":0},{"id":"French Polynesia","value":14.4,"adj_value":22.39488},{"id":"Marshall Islands","value":11.1,"adj_value":17.26272},{"id":"Micronesia","value":13.2,"adj_value":20.52864},{"id":"Palau","value":5.8,"adj_value":9.02016},{"id":"Nauru","value":0,"adj_value":0},{"id":"Fiji","value":78.1,"adj_value":121.46112},{"id":"Tonga","value":6.2,"adj_value":9.64224}]},{"id":"Africa","children":[{"id":"Morocco","value":239.4,"adj_value":372.31488},{"id":"Algeria","value":1749.5,"adj_value":2720.8224},{"id":"Tunisia","value":70.4,"adj_value":109.48608},{"id":"Libya","value":0,"adj_value":0},{"id":"Egypt","value":606.3,"adj_value":942.91776},{"id":"Sudan","value":22.6,"adj_value":35.14752},{"id":"Western Sahara","value":0,"adj_value":0},{"id":"Equatorial Guinea","value":31,"adj_value":48.2112},{"id":"Mauritania","value":5.4,"adj_value":8.39808},{"id":"Cameroon","value":57.3,"adj_value":89.11296},{"id":"Senegal","value":4.9,"adj_value":7.62048},{"id":"Mali","value":3.6,"adj_value":5.59872},{"id":"Guinea","value":98.8,"adj_value":153.65376},{"id":"Sierra Leone","value":28.4,"adj_value":44.16768},{"id":"Cote d'Ivoire","value":214.1,"adj_value":332.96832},{"id":"Ghana","value":196.1,"adj_value":304.97472},{"id":"Gambia","value":2.2,"adj_value":3.42144},{"id":"Niger","value":1.4,"adj_value":2.17728},{"id":"Togo","value":3.3,"adj_value":5.13216},{"id":"Nigeria","value":4930.5,"adj_value":7667.9136},{"id":"Central African Republic","value":0.4,"adj_value":0.62208},{"id":"Gabon","value":1463.9,"adj_value":2276.65728},{"id":"Chad","value":3.3,"adj_value":5.13216},{"id":"St Helena","value":0,"adj_value":0},{"id":"Burkina Faso","value":0.4,"adj_value":0.62208},{"id":"Benin","value":10,"adj_value":15.552},{"id":"Angola","value":2232.3,"adj_value":3471.67296},{"id":"Congo (Brazzaville)","value":206.8,"adj_value":321.61536},{"id":"Guinea-Bissau","value":0,"adj_value":0},{"id":"Cabo Verde","value":0.2,"adj_value":0.31104},{"id":"Sao Tome and Principe","value":0.1,"adj_value":0.15552},{"id":"Liberia","value":9.9,"adj_value":15.39648},{"id":"Congo (Kinshasa)","value":267,"adj_value":415.2384},{"id":"Burundi","value":20.5,"adj_value":31.8816},{"id":"Rwanda","value":1.8,"adj_value":2.79936},{"id":"Somalia","value":0,"adj_value":0},{"id":"Ethiopia","value":0,"adj_value":0},{"id":"Eritrea","value":0.4,"adj_value":0.62208},{"id":"Ethiopia","value":32.9,"adj_value":51.16608},{"id":"Djibouti","value":0,"adj_value":0},{"id":"Uganda","value":13.4,"adj_value":20.83968},{"id":"Kenya","value":101.5,"adj_value":157.8528},{"id":"Seychelles","value":2.5,"adj_value":3.888},{"id":"British Indian Ocean Terr.","value":1.9,"adj_value":2.95488},{"id":"Tanzania","value":22.4,"adj_value":34.83648},{"id":"Mauritius","value":229.5,"adj_value":356.9184},{"id":"Mozambique","value":27.5,"adj_value":42.768},{"id":"Madagascar","value":57.4,"adj_value":89.26848},{"id":"Comoros","value":2.2,"adj_value":3.42144},{"id":"Reunion","value":0.4,"adj_value":0.62208},{"id":"French Southern and Antarctic","value":0.4,"adj_value":0.62208},{"id":"South Africa","value":2208,"adj_value":3433.8816},{"id":"Namibia","value":11.5,"adj_value":17.8848},{"id":"Botswana","value":21.3,"adj_value":33.12576},{"id":"Zambia","value":32.8,"adj_value":51.01056},{"id":"Swaziland","value":32.4,"adj_value":50.38848},{"id":"Zimbabwe","value":97.5,"adj_value":151.632},{"id":"Malawi","value":41.1,"adj_value":63.91872},{"id":"Lesotho","value":62.3,"adj_value":96.88896}]}]},{"id":"Exports","children":[{"id":"North America","children":[{"id":"Greenland","value":2.4,"adj_value":3.73248},{"id":"Canada","value":127226,"adj_value":197861.8752},{"id":"St Pierre and Miquelon","value":0.5,"adj_value":0.7776},{"id":"Mexico","value":46292.1,"adj_value":71993.47392},{"id":"Guatemala","value":1646.6,"adj_value":2560.79232},{"id":"Belize","value":99.7,"adj_value":155.05344},{"id":"El Salvador","value":1110.4,"adj_value":1726.89408},{"id":"Honduras","value":1278.9,"adj_value":1988.94528},{"id":"Nicaragua","value":249.8,"adj_value":388.48896},{"id":"Costa Rica","value":1736.6,"adj_value":2700.76032},{"id":"Panama","value":1389.6,"adj_value":2161.10592},{"id":"Bermuda","value":298.5,"adj_value":464.2272},{"id":"Bahamas","value":661.2,"adj_value":1028.29824},{"id":"Cuba","value":5.4,"adj_value":8.39808},{"id":"Jamaica","value":1420.2,"adj_value":2208.69504},{"id":"Turks and Caicos Islands","value":33.6,"adj_value":52.25472},{"id":"Cayman Islands","value":180.1,"adj_value":280.09152},{"id":"Haiti","value":550.1,"adj_value":855.51552},{"id":"Dominican Republic","value":3014.9,"adj_value":4688.77248},{"id":"Anguilla","value":14.6,"adj_value":22.70592},{"id":"British Virgin Islands","value":49.2,"adj_value":76.51584},{"id":"St Kitts and Nevis","value":43.6,"adj_value":67.80672},{"id":"Antigua and Barbuda","value":97,"adj_value":150.8544},{"id":"Montserrat","value":4.4,"adj_value":6.84288},{"id":"Dominica","value":26.6,"adj_value":41.36832},{"id":"St Lucia","value":80.8,"adj_value":125.66016},{"id":"St Vincent and the Grenadines","value":42.2,"adj_value":65.62944},{"id":"Grenada","value":26.9,"adj_value":41.83488},{"id":"Barbados","value":185.6,"adj_value":288.64512},{"id":"Trinidad and Tobago","value":689.2,"adj_value":1071.84384},{"id":"Netherlands Antilles","value":503.9,"adj_value":783.66528},{"id":"Aruba","value":247.6,"adj_value":385.06752},{"id":"Guadeloupe","value":69.1,"adj_value":107.46432},{"id":"Martinique","value":38.5,"adj_value":59.8752}]},{"id":"South America","children":[{"id":"Colombia","value":4624.4,"adj_value":7191.86688},{"id":"Venezuela","value":4640.4,"adj_value":7216.75008},{"id":"Guyana","value":141.3,"adj_value":219.74976},{"id":"Suriname","value":189.7,"adj_value":295.02144},{"id":"French Guiana","value":441.8,"adj_value":687.08736},{"id":"Ecuador","value":1538.3,"adj_value":2392.36416},{"id":"Peru","value":1775.4,"adj_value":2761.10208},{"id":"Bolivia","value":213.5,"adj_value":332.0352},{"id":"Chile","value":3614.7,"adj_value":5621.58144},{"id":"Brazil","value":11439.4,"adj_value":17790.55488},{"id":"Paraguay","value":992.4,"adj_value":1543.38048},{"id":"Uruguay","value":395.8,"adj_value":615.54816},{"id":"Argentina","value":4189.2,"adj_value":6515.04384},{"id":"Falkland Islands(Islas Malvin","value":0.3,"adj_value":0.46656}]},{"id":"Europe","children":[{"id":"Iceland","value":170.5,"adj_value":265.1616},{"id":"Sweden","value":3079.7,"adj_value":4789.54944},{"id":"Svalbard, Jan Mayen Island","value":1.1,"adj_value":1.71072},{"id":"Norway","value":1292.9,"adj_value":2010.71808},{"id":"Finland","value":1249.7,"adj_value":1943.53344},{"id":"Faroe Islands","value":0.4,"adj_value":0.62208},{"id":"Denmark","value":1517.7,"adj_value":2360.32704},{"id":"United Kingdom","value":28856.5,"adj_value":44877.6288},{"id":"Ireland","value":4108.7,"adj_value":6389.85024},{"id":"Netherlands","value":16557.6,"adj_value":25750.37952},{"id":"Belgium","value":12465.6,"adj_value":19386.50112},{"id":"Luxembourg","value":374.2,"adj_value":581.95584},{"id":"Andorra","value":16.5,"adj_value":25.6608},{"id":"Monaco","value":9.6,"adj_value":14.92992},{"id":"France","value":14245.2,"adj_value":22154.13504},{"id":"Germany","value":22394.3,"adj_value":34827.61536},{"id":"Austria","value":2017,"adj_value":3136.8384},{"id":"Czechoslovakia","value":0,"adj_value":0},{"id":"Czech Republic","value":362.8,"adj_value":564.22656},{"id":"Slovakia","value":61,"adj_value":94.8672},{"id":"Hungary","value":295.2,"adj_value":459.09504},{"id":"Liechtenstein","value":15.1,"adj_value":23.48352},{"id":"Switzerland","value":6227.4,"adj_value":9684.85248},{"id":"Estonia","value":139.1,"adj_value":216.32832},{"id":"Latvia","value":89.5,"adj_value":139.1904},{"id":"Lithuania","value":52.2,"adj_value":81.18144},{"id":"Poland","value":776.1,"adj_value":1206.99072},{"id":"USSR","value":0,"adj_value":0},{"id":"Russia","value":2823.4,"adj_value":4390.95168},{"id":"Belarus","value":47.9,"adj_value":74.49408},{"id":"Ukraine","value":223.4,"adj_value":347.43168},{"id":"Armenia","value":70.3,"adj_value":109.33056},{"id":"Azerbaijan","value":35.6,"adj_value":55.36512},{"id":"Georgia","value":95.2,"adj_value":148.05504},{"id":"Kazakhstan","value":80.9,"adj_value":125.81568},{"id":"Kyrgyzstan","value":24.6,"adj_value":38.25792},{"id":"Moldova","value":10.2,"adj_value":15.86304},{"id":"Tajikistan","value":17.6,"adj_value":27.37152},{"id":"Turkmenistan","value":34.3,"adj_value":53.34336},{"id":"Uzbekistan","value":63.4,"adj_value":98.59968},{"id":"Spain","value":5526,"adj_value":8594.0352},{"id":"Portugal","value":898.1,"adj_value":1396.72512},{"id":"Gibraltar","value":18.4,"adj_value":28.61568},{"id":"Malta","value":106.7,"adj_value":165.93984},{"id":"San Marino","value":5.7,"adj_value":8.86464},{"id":"Vatican City","value":0.3,"adj_value":0.46656},{"id":"Italy","value":8861.6,"adj_value":13781.56032},{"id":"Yugoslavia (former)","value":0,"adj_value":0},{"id":"Croatia","value":140,"adj_value":217.728},{"id":"Slovenia","value":109.6,"adj_value":170.44992},{"id":"Bosnia and Herzegovina","value":28.3,"adj_value":44.01216},{"id":"Macedonia","value":21.2,"adj_value":32.97024},{"id":"Serbia and Montenegro","value":2.1,"adj_value":3.26592},{"id":"Albania","value":13.5,"adj_value":20.9952},{"id":"Greece","value":1518.7,"adj_value":2361.88224},{"id":"Romania","value":253.2,"adj_value":393.77664},{"id":"Bulgaria","value":131.8,"adj_value":204.97536}]},{"id":"Asia","children":[{"id":"Turkey","value":2768,"adj_value":4304.7936},{"id":"Cyprus","value":257.8,"adj_value":400.93056},{"id":"Syria","value":223.4,"adj_value":347.43168},{"id":"Lebanon","value":592.2,"adj_value":920.98944},{"id":"Iraq","value":0.2,"adj_value":0.31104},{"id":"Iran","value":277.4,"adj_value":431.41248},{"id":"Israel","value":0,"adj_value":0},{"id":"Israel","value":5621,"adj_value":8741.7792},{"id":"Gaza Strip admin. by Israel","value":0.1,"adj_value":0.15552},{"id":"West Bank admin. by Israel","value":0.3,"adj_value":0.46656},{"id":"Jordan","value":335.3,"adj_value":521.45856},{"id":"Kuwait","value":1437.4,"adj_value":2235.44448},{"id":"Iraq-Saudi Arabia Neutral Zone","value":0,"adj_value":0},{"id":"Saudi Arabia","value":6155,"adj_value":9572.256},{"id":"Qatar","value":226,"adj_value":351.4752},{"id":"United Arab Emirates","value":2006.3,"adj_value":3120.19776},{"id":"Republic of Yemen","value":185.3,"adj_value":288.17856},{"id":"Oman","value":222,"adj_value":345.2544},{"id":"Bahrain","value":255.1,"adj_value":396.73152},{"id":"Afghanistan","value":4,"adj_value":6.2208},{"id":"India","value":3295.8,"adj_value":5125.62816},{"id":"Pakistan","value":941.3,"adj_value":1463.90976},{"id":"Nepal","value":9.8,"adj_value":15.24096},{"id":"Bangladesh","value":325,"adj_value":505.44},{"id":"Sri Lanka","value":279.1,"adj_value":434.05632},{"id":"Burma","value":16.2,"adj_value":25.19424},{"id":"Thailand","value":6665,"adj_value":10365.408},{"id":"Vietnam","value":252.3,"adj_value":392.37696},{"id":"Laos","value":1.6,"adj_value":2.48832},{"id":"Cambodia","value":26.9,"adj_value":41.83488},{"id":"Malaysia","value":8816.1,"adj_value":13710.79872},{"id":"Singapore","value":15333,"adj_value":23845.8816},{"id":"Indonesia","value":3359.6,"adj_value":5224.84992},{"id":"Brunei","value":190.1,"adj_value":295.64352},{"id":"Philippines","value":5294.8,"adj_value":8234.47296},{"id":"Macau","value":29.9,"adj_value":46.50048},{"id":"Bhutan","value":0.5,"adj_value":0.7776},{"id":"Maldives","value":1.1,"adj_value":1.71072},{"id":"China","value":11753.7,"adj_value":18279.35424},{"id":"Mongolia","value":13.9,"adj_value":21.61728},{"id":"Korea, North","value":11.6,"adj_value":18.04032},{"id":"Korea, South","value":25379.9,"adj_value":39470.82048},{"id":"Hong Kong","value":14231.5,"adj_value":22132.8288},{"id":"Taiwan","value":19289.6,"adj_value":29999.18592},{"id":"Japan","value":64342.7,"adj_value":100065.767}]},{"id":"Australia","children":[{"id":"Australia","value":10789.1,"adj_value":16779.20832},{"id":"Norfolk Island","value":1.2,"adj_value":1.86624},{"id":"Cocos (Keeling) Islands","value":0.5,"adj_value":0.7776},{"id":"Christmas Island","value":4.5,"adj_value":6.9984},{"id":"Heard and McDonald Islands","value":0,"adj_value":0},{"id":"Papua New Guinea","value":50.8,"adj_value":79.00416},{"id":"New Zealand","value":1691.3,"adj_value":2630.30976},{"id":"Cook Islands","value":0.9,"adj_value":1.39968},{"id":"Tokelau","value":0.1,"adj_value":0.15552},{"id":"Niue","value":31.5,"adj_value":48.9888},{"id":"Samoa","value":7.3,"adj_value":11.35296},{"id":"Solomon Islands","value":2.7,"adj_value":4.19904},{"id":"Vanuatu","value":1.1,"adj_value":1.71072},{"id":"Pitcairn Islands","value":2.2,"adj_value":3.42144},{"id":"Kiribati","value":2.3,"adj_value":3.57696},{"id":"Tuvalu","value":0.3,"adj_value":0.46656},{"id":"New Caledonia","value":22.3,"adj_value":34.68096},{"id":"Wallis and Futuna","value":0,"adj_value":0},{"id":"French Polynesia","value":82.3,"adj_value":127.99296},{"id":"Marshall Islands","value":31.8,"adj_value":49.45536},{"id":"Micronesia","value":23.3,"adj_value":36.23616},{"id":"Palau","value":8.3,"adj_value":12.90816},{"id":"Nauru","value":0.5,"adj_value":0.7776},{"id":"Fiji","value":31.8,"adj_value":49.45536},{"id":"Tonga","value":7.5,"adj_value":11.664}]},{"id":"Africa","children":[{"id":"Morocco","value":517.4,"adj_value":804.66048},{"id":"Algeria","value":774.1,"adj_value":1203.88032},{"id":"Tunisia","value":214.9,"adj_value":334.21248},{"id":"Libya","value":0,"adj_value":0},{"id":"Egypt","value":2985.1,"adj_value":4642.42752},{"id":"Sudan","value":43.5,"adj_value":67.6512},{"id":"Western Sahara","value":0,"adj_value":0},{"id":"Equatorial Guinea","value":5.2,"adj_value":8.08704},{"id":"Mauritania","value":43.2,"adj_value":67.18464},{"id":"Cameroon","value":45.6,"adj_value":70.91712},{"id":"Senegal","value":67.9,"adj_value":105.59808},{"id":"Mali","value":23.1,"adj_value":35.92512},{"id":"Guinea","value":66.5,"adj_value":103.4208},{"id":"Sierra Leone","value":18.1,"adj_value":28.14912},{"id":"Cote d'Ivoire","value":173.3,"adj_value":269.51616},{"id":"Ghana","value":167.2,"adj_value":260.02944},{"id":"Gambia","value":6.1,"adj_value":9.48672},{"id":"Niger","value":39.6,"adj_value":61.58592},{"id":"Togo","value":18.5,"adj_value":28.7712},{"id":"Nigeria","value":602.9,"adj_value":937.63008},{"id":"Central African Republic","value":6.3,"adj_value":9.79776},{"id":"Gabon","value":54.5,"adj_value":84.7584},{"id":"Chad","value":10.8,"adj_value":16.79616},{"id":"St Helena","value":0.3,"adj_value":0.46656},{"id":"Burkina Faso","value":14.7,"adj_value":22.86144},{"id":"Benin","value":34,"adj_value":52.8768},{"id":"Angola","value":259.7,"adj_value":403.88544},{"id":"Congo (Brazzaville)","value":54.8,"adj_value":85.22496},{"id":"Guinea-Bissau","value":0.8,"adj_value":1.24416},{"id":"Cabo Verde","value":7.5,"adj_value":11.664},{"id":"Sao Tome and Principe","value":1.8,"adj_value":2.79936},{"id":"Liberia","value":41.7,"adj_value":64.85184},{"id":"Congo (Kinshasa)","value":77.1,"adj_value":119.90592},{"id":"Burundi","value":2.9,"adj_value":4.51008},{"id":"Rwanda","value":38.3,"adj_value":59.56416},{"id":"Somalia","value":8.1,"adj_value":12.59712},{"id":"Ethiopia","value":0,"adj_value":0},{"id":"Eritrea","value":16.5,"adj_value":25.6608},{"id":"Ethiopia","value":147.7,"adj_value":229.70304},{"id":"Djibouti","value":8.5,"adj_value":13.2192},{"id":"Uganda","value":22.1,"adj_value":34.36992},{"id":"Kenya","value":114,"adj_value":177.2928},{"id":"Seychelles","value":7.2,"adj_value":11.19744},{"id":"British Indian Ocean Terr.","value":1.8,"adj_value":2.79936},{"id":"Tanzania","value":66.2,"adj_value":102.95424},{"id":"Mauritius","value":24.6,"adj_value":38.25792},{"id":"Mozambique","value":49.3,"adj_value":76.67136},{"id":"Madagascar","value":9.8,"adj_value":15.24096},{"id":"Comoros","value":0.6,"adj_value":0.93312},{"id":"Reunion","value":3.7,"adj_value":5.75424},{"id":"French Southern and Antarctic","value":0,"adj_value":0},{"id":"South Africa","value":2750.5,"adj_value":4277.5776},{"id":"Namibia","value":26.5,"adj_value":41.2128},{"id":"Botswana","value":35.7,"adj_value":55.52064},{"id":"Zambia","value":48.9,"adj_value":76.04928},{"id":"Swaziland","value":3.2,"adj_value":4.97664},{"id":"Zimbabwe","value":122.1,"adj_value":189.88992},{"id":"Malawi","value":17.8,"adj_value":27.68256},{"id":"Lesotho","value":1.8,"adj_value":2.79936}]}]}]},{"id":"2005","children":[{"id":"Imports","children":[{"id":"North America","children":[{"id":"Greenland","value":17.255599,"adj_value":20.94139495},{"id":"Canada","value":290384.2932,"adj_value":352410.3782},{"id":"St Pierre and Miquelon","value":1.094378,"adj_value":1.328137141},{"id":"Mexico","value":170108.6141,"adj_value":206443.8141},{"id":"Guatemala","value":3137.382263,"adj_value":3807.527114},{"id":"Belize","value":98.265102,"adj_value":119.2545278},{"id":"El Salvador","value":1988.765718,"adj_value":2413.566075},{"id":"Honduras","value":3749.243099,"adj_value":4550.081425},{"id":"Nicaragua","value":1180.787602,"adj_value":1433.003834},{"id":"Costa Rica","value":3415.279262,"adj_value":4144.782912},{"id":"Panama","value":327.060069,"adj_value":396.9200997},{"id":"Bermuda","value":87.276753,"adj_value":105.9190674},{"id":"Bahamas","value":699.936003,"adj_value":849.4423332},{"id":"Cuba","value":0.009079,"adj_value":0.011018274},{"id":"Jamaica","value":375.57236,"adj_value":455.7946161},{"id":"Turks and Caicos Islands","value":9.434412,"adj_value":11.4496024},{"id":"Cayman Islands","value":53.497875,"adj_value":64.9250211},{"id":"Haiti","value":447.217315,"adj_value":542.7429335},{"id":"Dominican Republic","value":4603.684143,"adj_value":5587.031076},{"id":"Anguilla","value":3.754737,"adj_value":4.556748823},{"id":"British Virgin Islands","value":33.579607,"adj_value":40.75221106},{"id":"St Kitts and Nevis","value":49.718541,"adj_value":60.33842136},{"id":"Antigua and Barbuda","value":4.414365,"adj_value":5.357273364},{"id":"Montserrat","value":0.953906,"adj_value":1.157660322},{"id":"Dominica","value":3.344243,"adj_value":4.058573305},{"id":"St Lucia","value":32.396909,"adj_value":39.31688876},{"id":"St Vincent and the Grenadines","value":15.650342,"adj_value":18.99325505},{"id":"Grenada","value":5.852881,"adj_value":7.103056382},{"id":"Barbados","value":31.903789,"adj_value":38.71843833},{"id":"Trinidad and Tobago","value":7890.88378,"adj_value":9576.376555},{"id":"Netherlands Antilles","value":922.413941,"adj_value":1119.441559},{"id":"Aruba","value":2919.735672,"adj_value":3543.391212},{"id":"Guadeloupe","value":2.128806,"adj_value":2.583518962},{"id":"Martinique","value":22.236488,"adj_value":26.98620184}]},{"id":"South America","children":[{"id":"Colombia","value":8849.380048,"adj_value":10739.60763},{"id":"Venezuela","value":33978.13481,"adj_value":41235.8644},{"id":"Guyana","value":119.931261,"adj_value":145.5485783},{"id":"Suriname","value":165.346376,"adj_value":200.6643619},{"id":"French Guiana","value":0.121285,"adj_value":0.147191476},{"id":"Ecuador","value":5758.679346,"adj_value":6988.733254},{"id":"Peru","value":5119.15577,"adj_value":6212.607442},{"id":"Bolivia","value":293.216045,"adj_value":355.8469922},{"id":"Chile","value":6664.333836,"adj_value":8087.835543},{"id":"Brazil","value":24435.51938,"adj_value":29654.94632},{"id":"Paraguay","value":51.645596,"adj_value":62.67709531},{"id":"Uruguay","value":732.311644,"adj_value":888.7334112},{"id":"Argentina","value":4583.613305,"adj_value":5562.673107},{"id":"Falkland Islands(Islas Malvin","value":9.261546,"adj_value":11.23981223}]},{"id":"Europe","children":[{"id":"Iceland","value":268.97508,"adj_value":326.4281571},{"id":"Sweden","value":13820.97724,"adj_value":16773.13798},{"id":"Svalbard, Jan Mayen Island","value":0.039576,"adj_value":0.048029434},{"id":"Norway","value":6776.30892,"adj_value":8223.728505},{"id":"Finland","value":4341.679942,"adj_value":5269.062778},{"id":"Faroe Islands","value":4.276273,"adj_value":5.189684913},{"id":"Denmark","value":5144.20165,"adj_value":6243.003122},{"id":"United Kingdom","value":51032.62111,"adj_value":61933.18897},{"id":"Ireland","value":28733.08026,"adj_value":34870.4662},{"id":"Netherlands","value":14862.04151,"adj_value":18036.57358},{"id":"Belgium","value":13022.90274,"adj_value":15804.59477},{"id":"Luxembourg","value":388.834493,"adj_value":471.8895407},{"id":"Andorra","value":0.673148,"adj_value":0.816932413},{"id":"Monaco","value":37.485881,"adj_value":45.49286518},{"id":"France","value":33842.05751,"adj_value":41070.721},{"id":"Germany","value":84750.87138,"adj_value":102853.6575},{"id":"Austria","value":6102.944725,"adj_value":7406.533718},{"id":"Czech Republic","value":2192.863031,"adj_value":2661.258574},{"id":"Slovakia","value":960.730063,"adj_value":1165.942004},{"id":"Hungary","value":2561.172978,"adj_value":3108.239526},{"id":"Liechtenstein","value":295.705721,"adj_value":358.868463},{"id":"Switzerland","value":12999.88108,"adj_value":15776.65568},{"id":"Estonia","value":511.379949,"adj_value":620.6107061},{"id":"Latvia","value":362.159252,"adj_value":439.5164682},{"id":"Lithuania","value":633.912046,"adj_value":769.315659},{"id":"Poland","value":1948.58625,"adj_value":2364.804273},{"id":"Russia","value":15306.67384,"adj_value":18576.17937},{"id":"Belarus","value":345.161433,"adj_value":418.8879151},{"id":"Ukraine","value":1098.029235,"adj_value":1332.56828},{"id":"Armenia","value":46.191425,"adj_value":56.05791338},{"id":"Azerbaijan","value":45.361225,"adj_value":55.05038266},{"id":"Georgia","value":194.384289,"adj_value":235.9047731},{"id":"Kazakhstan","value":1101.145431,"adj_value":1336.350095},{"id":"Kyrgyzstan","value":4.618689,"adj_value":5.60524097},{"id":"Moldova","value":50.224656,"adj_value":60.95264252},{"id":"Tajikistan","value":241.029155,"adj_value":292.5129825},{"id":"Turkmenistan","value":135.325351,"adj_value":164.230846},{"id":"Uzbekistan","value":95.627811,"adj_value":116.0539114},{"id":"Spain","value":8614.64214,"adj_value":10454.7297},{"id":"Portugal","value":2328.674933,"adj_value":2826.079899},{"id":"Gibraltar","value":4.637081,"adj_value":5.627561502},{"id":"Malta","value":282.653662,"adj_value":343.0284842},{"id":"San Marino","value":1.389972,"adj_value":1.686870019},{"id":"Vatican City","value":0.282286,"adj_value":0.34258229},{"id":"Italy","value":31009.26008,"adj_value":37632.83803},{"id":"Croatia","value":364.277603,"adj_value":442.087299},{"id":"Slovenia","value":413.019469,"adj_value":501.2404276},{"id":"Bosnia and Herzegovina","value":70.462111,"adj_value":85.51281791},{"id":"Macedonia","value":48.149502,"adj_value":58.43423563},{"id":"Serbia and Montenegro","value":54.632827,"adj_value":66.30239885},{"id":"Albania","value":37.18875,"adj_value":45.132267},{"id":"Greece","value":883.73016,"adj_value":1072.494922},{"id":"Romania","value":1207.584718,"adj_value":1465.524814},{"id":"Bulgaria","value":454.262612,"adj_value":551.2931059}]},{"id":"Asia","children":[{"id":"Turkey","value":5182.052179,"adj_value":6288.938524},{"id":"Cyprus","value":30.536194,"adj_value":37.05872504},{"id":"Syria","value":323.599119,"adj_value":392.7198908},{"id":"Lebanon","value":86.370988,"adj_value":104.819831},{"id":"Iraq","value":9053.695686,"adj_value":10987.56508},{"id":"Iran","value":174.457417,"adj_value":211.7215213},{"id":"Israel","value":16830.46608,"adj_value":20425.45364},{"id":"Gaza Strip admin. by Israel","value":1.443661,"adj_value":1.75202699},{"id":"West Bank admin. by Israel","value":1.604198,"adj_value":1.946854693},{"id":"Jordan","value":1266.84986,"adj_value":1537.44899},{"id":"Kuwait","value":4334.781445,"adj_value":5260.690762},{"id":"Saudi Arabia","value":27192.64204,"adj_value":33000.99038},{"id":"Qatar","value":447.861094,"adj_value":543.5242237},{"id":"United Arab Emirates","value":1468.316627,"adj_value":1781.949059},{"id":"Republic of Yemen","value":278.635079,"adj_value":338.1515319},{"id":"Oman","value":555.043525,"adj_value":673.6008219},{"id":"Bahrain","value":431.61192,"adj_value":523.8042261},{"id":"Afghanistan","value":67.310191,"adj_value":81.6876478},{"id":"India","value":18804.16965,"adj_value":22820.74029},{"id":"Pakistan","value":3253.181975,"adj_value":3948.061645},{"id":"Nepal","value":111.212077,"adj_value":134.9669766},{"id":"Bangladesh","value":2693.035035,"adj_value":3268.267318},{"id":"Sri Lanka","value":2082.938898,"adj_value":2527.854647},{"id":"Burma","value":0.0615,"adj_value":0.0746364},{"id":"Thailand","value":19889.75578,"adj_value":24138.20761},{"id":"Vietnam","value":6631.158734,"adj_value":8047.57424},{"id":"Laos","value":4.166156,"adj_value":5.056046922},{"id":"Cambodia","value":1766.956953,"adj_value":2144.378958},{"id":"Malaysia","value":33685.15957,"adj_value":40880.30965},{"id":"Singapore","value":15110.08962,"adj_value":18337.60477},{"id":"Indonesia","value":12014.34419,"adj_value":14580.6081},{"id":"East Timor","value":0.084963,"adj_value":0.103111097},{"id":"Brunei","value":562.742346,"adj_value":682.9441111},{"id":"Philippines","value":9250.433389,"adj_value":11226.32596},{"id":"Macau","value":1249.02212,"adj_value":1515.813245},{"id":"Bhutan","value":0.615516,"adj_value":0.746990218},{"id":"Maldives","value":5.496456,"adj_value":6.670499002},{"id":"China","value":243470.1048,"adj_value":295475.3192},{"id":"Mongolia","value":143.645404,"adj_value":174.3280623},{"id":"Korea, North","value":0.003252,"adj_value":0.003946627},{"id":"Korea, South","value":43781.44106,"adj_value":53133.15687},{"id":"Hong Kong","value":8891.705575,"adj_value":10790.97389},{"id":"Taiwan","value":34825.82882,"adj_value":42264.62586},{"id":"Japan","value":138003.6962,"adj_value":167481.2857}]},{"id":"Australia","children":[{"id":"Australia","value":7342.17895,"adj_value":8910.468374},{"id":"Norfolk Island","value":0.17315,"adj_value":0.21013484},{"id":"Cocos (Keeling) Islands","value":0.484315,"adj_value":0.587764684},{"id":"Christmas Island","value":0.417613,"adj_value":0.506815137},{"id":"Heard and McDonald Islands","value":0.016396,"adj_value":0.019898186},{"id":"Papua New Guinea","value":58.451246,"adj_value":70.93643215},{"id":"New Zealand","value":3155.239797,"adj_value":3829.199018},{"id":"Cook Islands","value":1.744825,"adj_value":2.11751962},{"id":"Tokelau","value":10.800762,"adj_value":13.10780476},{"id":"Niue","value":0.138878,"adj_value":0.168542341},{"id":"Samoa","value":7.937575,"adj_value":9.63304102},{"id":"Solomon Islands","value":1.351564,"adj_value":1.64025807},{"id":"Vanuatu","value":2.489141,"adj_value":3.020821518},{"id":"Pitcairn Islands","value":1.040512,"adj_value":1.262765363},{"id":"Kiribati","value":1.104581,"adj_value":1.340519502},{"id":"Tuvalu","value":0.056868,"adj_value":0.069015005},{"id":"New Caledonia","value":27.174251,"adj_value":32.97867101},{"id":"Wallis and Futuna","value":0.022469,"adj_value":0.027268378},{"id":"French Polynesia","value":60.124235,"adj_value":72.9667716},{"id":"Marshall Islands","value":17.205126,"adj_value":20.88014091},{"id":"Micronesia","value":1.557731,"adj_value":1.890462342},{"id":"Palau","value":0.484544,"adj_value":0.588042598},{"id":"Nauru","value":0.148786,"adj_value":0.18056669},{"id":"Fiji","value":169.460711,"adj_value":205.6575189},{"id":"Tonga","value":5.350431,"adj_value":6.493283062}]},{"id":"Africa","children":[{"id":"Morocco","value":445.793996,"adj_value":541.0155935},{"id":"Algeria","value":10446.43785,"adj_value":12677.79698},{"id":"Tunisia","value":263.768113,"adj_value":320.1089819},{"id":"Libya","value":1590.341099,"adj_value":1930.037958},{"id":"Egypt","value":2091.236887,"adj_value":2537.925086},{"id":"Sudan","value":13.574271,"adj_value":16.47373529},{"id":"Western Sahara","value":0,"adj_value":0},{"id":"Equatorial Guinea","value":1561.137497,"adj_value":1894.596466},{"id":"Mauritania","value":0.825319,"adj_value":1.001607138},{"id":"Cameroon","value":158.161864,"adj_value":191.9452382},{"id":"Senegal","value":3.662962,"adj_value":4.445370683},{"id":"Mali","value":3.649953,"adj_value":4.429582961},{"id":"Guinea","value":74.733573,"adj_value":90.69666419},{"id":"Sierra Leone","value":9.312822,"adj_value":11.30204078},{"id":"Cote d'Ivoire","value":1197.97516,"adj_value":1453.862654},{"id":"Ghana","value":158.409617,"adj_value":192.2459112},{"id":"Gambia","value":0.427153,"adj_value":0.518392881},{"id":"Niger","value":65.51339,"adj_value":79.5070501},{"id":"Togo","value":6.439273,"adj_value":7.814701713},{"id":"Nigeria","value":24239.35673,"adj_value":29416.88333},{"id":"Central African Republic","value":5.696947,"adj_value":6.913814879},{"id":"Gabon","value":2815.602273,"adj_value":3417.014919},{"id":"Chad","value":1498.086294,"adj_value":1818.077526},{"id":"St Helena","value":3.269267,"adj_value":3.967582431},{"id":"Burkina Faso","value":2.084203,"adj_value":2.529388761},{"id":"Benin","value":0.513184,"adj_value":0.622800102},{"id":"Angola","value":8484.361601,"adj_value":10296.62124},{"id":"Congo (Brazzaville)","value":1622.90154,"adj_value":1969.553309},{"id":"Guinea-Bissau","value":0.120677,"adj_value":0.146453607},{"id":"Cabo Verde","value":2.62425,"adj_value":3.1847898},{"id":"Sao Tome and Principe","value":0.216017,"adj_value":0.262158231},{"id":"Liberia","value":90.827263,"adj_value":110.2279664},{"id":"Congo (Kinshasa)","value":263.558216,"adj_value":319.8542509},{"id":"Burundi","value":4.423229,"adj_value":5.368030714},{"id":"Rwanda","value":6.301468,"adj_value":7.647461565},{"id":"Somalia","value":0.307638,"adj_value":0.373349477},{"id":"Eritrea","value":1.269401,"adj_value":1.540545054},{"id":"Ethiopia","value":61.802253,"adj_value":75.00321424},{"id":"Djibouti","value":1.101206,"adj_value":1.336423602},{"id":"Uganda","value":25.769069,"adj_value":31.27334214},{"id":"Kenya","value":348.019269,"adj_value":422.3561849},{"id":"Seychelles","value":5.883749,"adj_value":7.140517786},{"id":"British Indian Ocean Terr.","value":0.432984,"adj_value":0.525469382},{"id":"Tanzania","value":33.695475,"adj_value":40.89282846},{"id":"Mauritius","value":221.85071,"adj_value":269.2380217},{"id":"Mozambique","value":11.905754,"adj_value":14.44882305},{"id":"Madagascar","value":323.631165,"adj_value":392.7587818},{"id":"Comoros","value":1.447044,"adj_value":1.756132598},{"id":"Reunion","value":5.835528,"adj_value":7.081996781},{"id":"French Southern and Antarctic","value":0.05164,"adj_value":0.062670304},{"id":"South Africa","value":5885.639948,"adj_value":7142.812641},{"id":"Namibia","value":129.590672,"adj_value":157.2712395},{"id":"Botswana","value":178.164424,"adj_value":216.220345},{"id":"Zambia","value":31.70289,"adj_value":38.4746273},{"id":"Swaziland","value":198.886296,"adj_value":241.3684088},{"id":"Zimbabwe","value":94.328983,"adj_value":114.4776538},{"id":"Malawi","value":115.50192,"adj_value":140.1731301},{"id":"Lesotho","value":403.608048,"adj_value":489.8187271}]}]},{"id":"Exports","children":[{"id":"North America","children":[{"id":"Greenland","value":5.085009,"adj_value":6.171166922},{"id":"Canada","value":211898.6894,"adj_value":257160.2494},{"id":"St Pierre and Miquelon","value":0.980031,"adj_value":1.189365622},{"id":"Mexico","value":120247.5801,"adj_value":145932.4633},{"id":"Guatemala","value":2835.38039,"adj_value":3441.017641},{"id":"Belize","value":217.562773,"adj_value":264.0341813},{"id":"El Salvador","value":1854.286657,"adj_value":2250.362287},{"id":"Honduras","value":3253.813808,"adj_value":3948.828437},{"id":"Nicaragua","value":625.460463,"adj_value":759.0588179},{"id":"Costa Rica","value":3598.560177,"adj_value":4367.212631},{"id":"Panama","value":2162.020485,"adj_value":2623.828061},{"id":"Bermuda","value":490.497944,"adj_value":595.2683048},{"id":"Bahamas","value":1786.740047,"adj_value":2168.387721},{"id":"Cuba","value":369.034678,"adj_value":447.8604852},{"id":"Jamaica","value":1700.769277,"adj_value":2064.053595},{"id":"Turks and Caicos Islands","value":237.752693,"adj_value":288.5366682},{"id":"Cayman Islands","value":680.670387,"adj_value":826.0615817},{"id":"Haiti","value":709.620597,"adj_value":861.1955565},{"id":"Dominican Republic","value":4718.733392,"adj_value":5726.654845},{"id":"Anguilla","value":32.186758,"adj_value":39.06184951},{"id":"British Virgin Islands","value":124.856685,"adj_value":151.5260729},{"id":"St Kitts and Nevis","value":94.069439,"adj_value":114.1626712},{"id":"Antigua and Barbuda","value":190.447421,"adj_value":231.1269901},{"id":"Montserrat","value":4.848606,"adj_value":5.884268242},{"id":"Dominica","value":61.540001,"adj_value":74.68494521},{"id":"St Lucia","value":135.389135,"adj_value":164.3082542},{"id":"St Vincent and the Grenadines","value":45.411401,"adj_value":55.11127625},{"id":"Grenada","value":82.440305,"adj_value":100.0495541},{"id":"Barbados","value":394.92009,"adj_value":479.2750212},{"id":"Trinidad and Tobago","value":1416.748479,"adj_value":1719.365954},{"id":"Netherlands Antilles","value":1137.633614,"adj_value":1380.632154},{"id":"Aruba","value":558.924451,"adj_value":678.3107137},{"id":"Guadeloupe","value":54.512655,"adj_value":66.15655811},{"id":"Martinique","value":34.95999,"adj_value":42.42744386}]},{"id":"South America","children":[{"id":"Colombia","value":5462.357164,"adj_value":6629.116654},{"id":"Venezuela","value":6420.897723,"adj_value":7792.401477},{"id":"Guyana","value":176.704601,"adj_value":214.4487038},{"id":"Suriname","value":245.701079,"adj_value":298.1828295},{"id":"French Guiana","value":26.993942,"adj_value":32.75984801},{"id":"Ecuador","value":1963.825872,"adj_value":2383.299078},{"id":"Peru","value":2309.446378,"adj_value":2802.744124},{"id":"Bolivia","value":219.479092,"adj_value":266.3598261},{"id":"Chile","value":5133.523351,"adj_value":6230.043939},{"id":"Brazil","value":15371.71785,"adj_value":18655.11678},{"id":"Paraguay","value":895.819607,"adj_value":1087.166675},{"id":"Uruguay","value":356.676188,"adj_value":432.8622218},{"id":"Argentina","value":4121.861182,"adj_value":5002.29073},{"id":"Falkland Islands(Islas Malvin","value":9.049418,"adj_value":10.98237368}]},{"id":"Europe","children":[{"id":"Iceland","value":512.019513,"adj_value":621.386881},{"id":"Sweden","value":3715.36862,"adj_value":4508.971357},{"id":"Svalbard, Jan Mayen Island","value":5.677609,"adj_value":6.890346282},{"id":"Norway","value":1941.882004,"adj_value":2356.668},{"id":"Finland","value":2254.052992,"adj_value":2735.518711},{"id":"Faroe Islands","value":2.528152,"adj_value":3.068165267},{"id":"Denmark","value":1918.423705,"adj_value":2328.199008},{"id":"United Kingdom","value":38568.08305,"adj_value":46806.22558},{"id":"Ireland","value":8446.771993,"adj_value":10251.00249},{"id":"Netherlands","value":26467.74458,"adj_value":32121.25482},{"id":"Belgium","value":18690.60657,"adj_value":22682.92013},{"id":"Luxembourg","value":711.38307,"adj_value":863.3344938},{"id":"Andorra","value":10.549473,"adj_value":12.80284043},{"id":"Monaco","value":16.776668,"adj_value":20.36016428},{"id":"France","value":22258.62805,"adj_value":27013.071},{"id":"Germany","value":34183.65627,"adj_value":41485.28525},{"id":"Austria","value":2544.481273,"adj_value":3087.982473},{"id":"Czech Republic","value":1053.557481,"adj_value":1278.597359},{"id":"Slovakia","value":149.800634,"adj_value":181.7980494},{"id":"Hungary","value":1023.258213,"adj_value":1241.826167},{"id":"Liechtenstein","value":19.7165,"adj_value":23.9279444},{"id":"Switzerland","value":10717.52806,"adj_value":13006.79206},{"id":"Estonia","value":145.425805,"adj_value":176.4887569},{"id":"Latvia","value":177.537085,"adj_value":215.4590064},{"id":"Lithuania","value":390.027824,"adj_value":473.3377672},{"id":"Poland","value":1267.748385,"adj_value":1538.53944},{"id":"Russia","value":3962.270261,"adj_value":4808.611189},{"id":"Belarus","value":34.942759,"adj_value":42.40653232},{"id":"Ukraine","value":532.954308,"adj_value":646.7933482},{"id":"Armenia","value":65.483218,"adj_value":79.47043336},{"id":"Azerbaijan","value":132.462798,"adj_value":160.7568517},{"id":"Georgia","value":213.886826,"adj_value":259.573052},{"id":"Kazakhstan","value":538.286932,"adj_value":653.2650207},{"id":"Kyrgyzstan","value":31.140901,"adj_value":37.79259745},{"id":"Moldova","value":40.069837,"adj_value":48.62875418},{"id":"Tajikistan","value":28.7867,"adj_value":34.93553912},{"id":"Turkmenistan","value":215.170092,"adj_value":261.1304237},{"id":"Uzbekistan","value":73.826609,"adj_value":89.59597268},{"id":"Spain","value":6839.116578,"adj_value":8299.951879},{"id":"Portugal","value":1131.865366,"adj_value":1373.631808},{"id":"Gibraltar","value":163.257568,"adj_value":198.1293845},{"id":"Malta","value":193.709217,"adj_value":235.0855058},{"id":"San Marino","value":4.676009,"adj_value":5.674804522},{"id":"Vatican City","value":24.181227,"adj_value":29.34633709},{"id":"Italy","value":11524.32529,"adj_value":13985.92117},{"id":"Croatia","value":158.621993,"adj_value":192.5036507},{"id":"Slovenia","value":233.830317,"adj_value":283.7764727},{"id":"Bosnia and Herzegovina","value":17.573793,"adj_value":21.32755518},{"id":"Macedonia","value":31.556267,"adj_value":38.29668563},{"id":"Serbia and Montenegro","value":132.49633,"adj_value":160.7975461},{"id":"Albania","value":18.513925,"adj_value":22.46849938},{"id":"Greece","value":1192.248494,"adj_value":1446.912772},{"id":"Romania","value":608.858767,"adj_value":738.9109996},{"id":"Bulgaria","value":267.93442,"adj_value":325.1652121}]},{"id":"Asia","children":[{"id":"Turkey","value":4238.966194,"adj_value":5144.409373},{"id":"Cyprus","value":84.179247,"adj_value":102.1599342},{"id":"Syria","value":155.049379,"adj_value":188.1679264},{"id":"Lebanon","value":465.688546,"adj_value":565.1596194},{"id":"Iraq","value":1373.986265,"adj_value":1667.469731},{"id":"Iran","value":95.773068,"adj_value":116.2301953},{"id":"Israel","value":9737.340849,"adj_value":11817.23685},{"id":"Gaza Strip admin. by Israel","value":0.23112,"adj_value":0.280487232},{"id":"West Bank admin. by Israel","value":3.720993,"adj_value":4.515797105},{"id":"Jordan","value":644.195347,"adj_value":781.7954731},{"id":"Kuwait","value":1974.875551,"adj_value":2396.708969},{"id":"Saudi Arabia","value":6805.402418,"adj_value":8259.036374},{"id":"Qatar","value":986.642413,"adj_value":1197.389232},{"id":"United Arab Emirates","value":8119.527357,"adj_value":9853.8584},{"id":"Republic of Yemen","value":219.04852,"adj_value":265.8372839},{"id":"Oman","value":570.72512,"adj_value":692.6320056},{"id":"Bahrain","value":350.78451,"adj_value":425.7120813},{"id":"Afghanistan","value":262.153213,"adj_value":318.1491393},{"id":"India","value":7918.602428,"adj_value":9610.015907},{"id":"Pakistan","value":1251.63194,"adj_value":1518.980522},{"id":"Nepal","value":24.704668,"adj_value":29.98158508},{"id":"Bangladesh","value":319.769758,"adj_value":388.0725783},{"id":"Sri Lanka","value":197.631294,"adj_value":239.8453384},{"id":"Burma","value":5.464172,"adj_value":6.631319139},{"id":"Thailand","value":7256.616259,"adj_value":8806.629492},{"id":"Vietnam","value":1193.152202,"adj_value":1448.009512},{"id":"Laos","value":9.807849,"adj_value":11.90280555},{"id":"Cambodia","value":69.652929,"adj_value":84.53079463},{"id":"Malaysia","value":10460.83317,"adj_value":12695.26713},{"id":"Singapore","value":20466.07346,"adj_value":24837.62675},{"id":"Indonesia","value":3053.913961,"adj_value":3706.229983},{"id":"East Timor","value":8.685474,"adj_value":10.54069125},{"id":"Brunei","value":49.614155,"adj_value":60.21173851},{"id":"Philippines","value":6895.406023,"adj_value":8368.26475},{"id":"Macau","value":101.575899,"adj_value":123.272511},{"id":"Bhutan","value":3.05218,"adj_value":3.704125648},{"id":"Maldives","value":9.25555,"adj_value":11.23253548},{"id":"China","value":41192.01012,"adj_value":49990.62349},{"id":"Mongolia","value":21.879286,"adj_value":26.55270149},{"id":"Korea, North","value":5.757048,"adj_value":6.986753453},{"id":"Korea, South","value":27571.60598,"adj_value":33460.90101},{"id":"Hong Kong","value":16351.02861,"adj_value":19843.60832},{"id":"Taiwan","value":21614.49693,"adj_value":26231.35347},{"id":"Japan","value":54680.57985,"adj_value":66360.3517}]},{"id":"Australia","children":[{"id":"Australia","value":15588.51968,"adj_value":18918.22748},{"id":"Norfolk Island","value":0.391532,"adj_value":0.475163235},{"id":"Cocos (Keeling) Islands","value":1.048051,"adj_value":1.271914694},{"id":"Christmas Island","value":2.00592,"adj_value":2.434384512},{"id":"Heard and McDonald Islands","value":0.160607,"adj_value":0.194912655},{"id":"Papua New Guinea","value":55.347872,"adj_value":67.17017746},{"id":"New Zealand","value":2592.076963,"adj_value":3145.744602},{"id":"Cook Islands","value":1.372809,"adj_value":1.666041002},{"id":"Tokelau","value":79.822527,"adj_value":96.87261877},{"id":"Niue","value":0.607643,"adj_value":0.737435545},{"id":"Samoa","value":14.538961,"adj_value":17.64448307},{"id":"Solomon Islands","value":2.297431,"adj_value":2.788162262},{"id":"Vanuatu","value":9.138578,"adj_value":11.09057826},{"id":"Pitcairn Islands","value":0.45629,"adj_value":0.553753544},{"id":"Kiribati","value":2.411608,"adj_value":2.926727469},{"id":"Tuvalu","value":0.04246,"adj_value":0.051529456},{"id":"New Caledonia","value":38.403106,"adj_value":46.60600944},{"id":"Wallis and Futuna","value":0.408737,"adj_value":0.496043223},{"id":"French Polynesia","value":111.838384,"adj_value":135.7270628},{"id":"Marshall Islands","value":75.48435,"adj_value":91.60780716},{"id":"Micronesia","value":25.349268,"adj_value":30.76387164},{"id":"Palau","value":12.22524,"adj_value":14.83655126},{"id":"Nauru","value":1.62475,"adj_value":1.9717966},{"id":"Fiji","value":28.177593,"adj_value":34.19632686},{"id":"Tonga","value":9.685131,"adj_value":11.75387498}]},{"id":"Africa","children":[{"id":"Morocco","value":480.792527,"adj_value":583.4898108},{"id":"Algeria","value":1106.190448,"adj_value":1342.472728},{"id":"Tunisia","value":261.16652,"adj_value":316.9516887},{"id":"Libya","value":83.841985,"adj_value":101.750633},{"id":"Egypt","value":3159.259288,"adj_value":3834.077072},{"id":"Sudan","value":108.105454,"adj_value":131.196779},{"id":"Western Sahara","value":0.028656,"adj_value":0.034776922},{"id":"Equatorial Guinea","value":281.472431,"adj_value":341.5949423},{"id":"Mauritania","value":86.135221,"adj_value":104.5337042},{"id":"Cameroon","value":117.313887,"adj_value":142.3721333},{"id":"Senegal","value":141.499953,"adj_value":171.724343},{"id":"Mali","value":32.421928,"adj_value":39.34725182},{"id":"Guinea","value":93.59706,"adj_value":113.589392},{"id":"Sierra Leone","value":37.829353,"adj_value":45.9097028},{"id":"Cote d'Ivoire","value":124.242832,"adj_value":150.7811009},{"id":"Ghana","value":337.389713,"adj_value":409.4561557},{"id":"Gambia","value":30.604418,"adj_value":37.14152168},{"id":"Niger","value":78.511944,"adj_value":95.28209524},{"id":"Togo","value":27.928388,"adj_value":33.89389168},{"id":"Nigeria","value":1619.788459,"adj_value":1965.775274},{"id":"Central African Republic","value":14.781003,"adj_value":17.93822524},{"id":"Gabon","value":99.105857,"adj_value":120.2748681},{"id":"Chad","value":53.752155,"adj_value":65.23361531},{"id":"St Helena","value":2.732629,"adj_value":3.316318554},{"id":"Burkina Faso","value":25.11081,"adj_value":30.47447902},{"id":"Benin","value":72.278749,"adj_value":87.71748979},{"id":"Angola","value":929.046776,"adj_value":1127.491167},{"id":"Congo (Brazzaville)","value":104.056096,"adj_value":126.2824781},{"id":"Guinea-Bissau","value":2.100355,"adj_value":2.548990828},{"id":"Cabo Verde","value":9.871825,"adj_value":11.98044682},{"id":"Sao Tome and Principe","value":10.153283,"adj_value":12.32202425},{"id":"Liberia","value":69.32032,"adj_value":84.12714035},{"id":"Congo (Kinshasa)","value":64.968131,"adj_value":78.84532378},{"id":"Burundi","value":8.121178,"adj_value":9.855861621},{"id":"Rwanda","value":10.534162,"adj_value":12.784259},{"id":"Somalia","value":8.831504,"adj_value":10.71791325},{"id":"Eritrea","value":31.058711,"adj_value":37.69285167},{"id":"Ethiopia","value":455.635812,"adj_value":552.9596214},{"id":"Djibouti","value":47.571125,"adj_value":57.7323173},{"id":"Uganda","value":62.573652,"adj_value":75.93938407},{"id":"Kenya","value":573.365497,"adj_value":695.8363672},{"id":"Seychelles","value":17.912292,"adj_value":21.73835757},{"id":"British Indian Ocean Terr.","value":0.806112,"adj_value":0.978297523},{"id":"Tanzania","value":96.44391,"adj_value":117.0443292},{"id":"Mauritius","value":30.860179,"adj_value":37.45191323},{"id":"Mozambique","value":62.825299,"adj_value":76.24478287},{"id":"Madagascar","value":28.205237,"adj_value":34.22987562},{"id":"Comoros","value":0.295219,"adj_value":0.358277778},{"id":"Reunion","value":3.78591,"adj_value":4.594580376},{"id":"French Southern and Antarctic","value":0.273678,"adj_value":0.332135621},{"id":"South Africa","value":3906.946741,"adj_value":4741.470565},{"id":"Namibia","value":112.249178,"adj_value":136.2256024},{"id":"Botswana","value":67.272144,"adj_value":81.64147396},{"id":"Zambia","value":29.113109,"adj_value":35.33166908},{"id":"Swaziland","value":11.856893,"adj_value":14.38952534},{"id":"Zimbabwe","value":45.540976,"adj_value":55.26852847},{"id":"Malawi","value":28.049237,"adj_value":34.04055402},{"id":"Lesotho","value":4.015033,"adj_value":4.872644049}]}]}]},{"id":"2015","children":[{"id":"Imports","children":[{"id":"North America","children":[{"id":"Greenland","value":3.800273,"adj_value":3.800273},{"id":"Canada","value":296155.599,"adj_value":296155.599},{"id":"St Pierre and Miquelon","value":0.18562,"adj_value":0.18562},{"id":"Mexico","value":296407.9011,"adj_value":296407.9011},{"id":"Guatemala","value":4120.351959,"adj_value":4120.351959},{"id":"Belize","value":75.287339,"adj_value":75.287339},{"id":"El Salvador","value":2531.699424,"adj_value":2531.699424},{"id":"Honduras","value":4755.934545,"adj_value":4755.934545},{"id":"Nicaragua","value":3188.301535,"adj_value":3188.301535},{"id":"Costa Rica","value":4488.341429,"adj_value":4488.341429},{"id":"Panama","value":408.293396,"adj_value":408.293396},{"id":"Bermuda","value":108.704684,"adj_value":108.704684},{"id":"Bahamas","value":452.744256,"adj_value":452.744256},{"id":"Cuba","value":0,"adj_value":0},{"id":"Jamaica","value":305.978402,"adj_value":305.978402},{"id":"Turks and Caicos Islands","value":14.710225,"adj_value":14.710225},{"id":"Cayman Islands","value":97.496341,"adj_value":97.496341},{"id":"Haiti","value":950.091535,"adj_value":950.091535},{"id":"Dominican Republic","value":4665.266745,"adj_value":4665.266745},{"id":"Anguilla","value":5.583883,"adj_value":5.583883},{"id":"British Virgin Islands","value":16.491398,"adj_value":16.491398},{"id":"St Kitts and Nevis","value":56.753359,"adj_value":56.753359},{"id":"Antigua and Barbuda","value":6.856395,"adj_value":6.856395},{"id":"Montserrat","value":2.271534,"adj_value":2.271534},{"id":"Dominica","value":1.683203,"adj_value":1.683203},{"id":"St Lucia","value":29.00446,"adj_value":29.00446},{"id":"St Vincent and the Grenadines","value":1.768076,"adj_value":1.768076},{"id":"Grenada","value":9.215032,"adj_value":9.215032},{"id":"Barbados","value":68.174291,"adj_value":68.174291},{"id":"Trinidad and Tobago","value":4314.344265,"adj_value":4314.344265},{"id":"Sint Maarten","value":51.873445,"adj_value":51.873445},{"id":"Curacao","value":335.229109,"adj_value":335.229109},{"id":"Aruba","value":54.90185,"adj_value":54.90185},{"id":"Guadeloupe","value":4.123528,"adj_value":4.123528},{"id":"Martinique","value":37.46278,"adj_value":37.46278}]},{"id":"South America","children":[{"id":"Colombia","value":14074.81661,"adj_value":14074.81661},{"id":"Venezuela","value":15564.23275,"adj_value":15564.23275},{"id":"Guyana","value":431.099884,"adj_value":431.099884},{"id":"Suriname","value":146.224404,"adj_value":146.224404},{"id":"French Guiana","value":0.042924,"adj_value":0.042924},{"id":"Ecuador","value":7467.258698,"adj_value":7467.258698},{"id":"Peru","value":5053.337195,"adj_value":5053.337195},{"id":"Bolivia","value":1006.481438,"adj_value":1006.481438},{"id":"Chile","value":8772.414027,"adj_value":8772.414027},{"id":"Brazil","value":27468.23032,"adj_value":27468.23032},{"id":"Paraguay","value":162.023098,"adj_value":162.023098},{"id":"Uruguay","value":604.746068,"adj_value":604.746068},{"id":"Argentina","value":3950.849545,"adj_value":3950.849545},{"id":"Falkland Islands(Islas Malvin","value":14.273948,"adj_value":14.273948}]},{"id":"Europe","children":[{"id":"Iceland","value":316.534176,"adj_value":316.534176},{"id":"Sweden","value":9878.966413,"adj_value":9878.966413},{"id":"Svalbard, Jan Mayen Island","value":0.028231,"adj_value":0.028231},{"id":"Norway","value":4760.200206,"adj_value":4760.200206},{"id":"Finland","value":4506.071121,"adj_value":4506.071121},{"id":"Faroe Islands","value":97.897991,"adj_value":97.897991},{"id":"Denmark","value":7760.022813,"adj_value":7760.022813},{"id":"United Kingdom","value":57962.25131,"adj_value":57962.25131},{"id":"Ireland","value":39336.18067,"adj_value":39336.18067},{"id":"Netherlands","value":16835.61486,"adj_value":16835.61486},{"id":"Belgium","value":19482.27263,"adj_value":19482.27263},{"id":"Luxembourg","value":639.038795,"adj_value":639.038795},{"id":"Andorra","value":4.863157,"adj_value":4.863157},{"id":"Monaco","value":58.818337,"adj_value":58.818337},{"id":"France","value":47815.32286,"adj_value":47815.32286},{"id":"Germany","value":124820.4692,"adj_value":124820.4692},{"id":"Austria","value":11311.97506,"adj_value":11311.97506},{"id":"Czech Republic","value":4497.634904,"adj_value":4497.634904},{"id":"Slovakia","value":2299.822999,"adj_value":2299.822999},{"id":"Hungary","value":5721.266311,"adj_value":5721.266311},{"id":"Liechtenstein","value":310.294941,"adj_value":310.294941},{"id":"Switzerland","value":31396.66041,"adj_value":31396.66041},{"id":"Estonia","value":503.50072,"adj_value":503.50072},{"id":"Latvia","value":302.969587,"adj_value":302.969587},{"id":"Lithuania","value":1059.366349,"adj_value":1059.366349},{"id":"Poland","value":5637.927607,"adj_value":5637.927607},{"id":"Russia","value":16366.16158,"adj_value":16366.16158},{"id":"Belarus","value":158.249733,"adj_value":158.249733},{"id":"Ukraine","value":850.788858,"adj_value":850.788858},{"id":"Armenia","value":62.46349,"adj_value":62.46349},{"id":"Azerbaijan","value":507.148173,"adj_value":507.148173},{"id":"Georgia","value":181.150349,"adj_value":181.150349},{"id":"Kazakhstan","value":816.099815,"adj_value":816.099815},{"id":"Kyrgyzstan","value":15.803561,"adj_value":15.803561},{"id":"Moldova","value":43.920552,"adj_value":43.920552},{"id":"Tajikistan","value":31.123801,"adj_value":31.123801},{"id":"Turkmenistan","value":55.976778,"adj_value":55.976778},{"id":"Uzbekistan","value":9.715446,"adj_value":9.715446},{"id":"Spain","value":14129.84151,"adj_value":14129.84151},{"id":"Portugal","value":3271.009123,"adj_value":3271.009123},{"id":"Gibraltar","value":1.82442,"adj_value":1.82442},{"id":"Malta","value":241.219869,"adj_value":241.219869},{"id":"San Marino","value":8.517198,"adj_value":8.517198},{"id":"Vatican City","value":1.218395,"adj_value":1.218395},{"id":"Italy","value":44159.01154,"adj_value":44159.01154},{"id":"Croatia","value":576.891578,"adj_value":576.891578},{"id":"Slovenia","value":678.110689,"adj_value":678.110689},{"id":"Bosnia and Herzegovina","value":78.282267,"adj_value":78.282267},{"id":"Macedonia","value":203.357353,"adj_value":203.357353},{"id":"Serbia","value":272.617662,"adj_value":272.617662},{"id":"Kosovo","value":2.38298,"adj_value":2.38298},{"id":"Montenegro","value":2.108687,"adj_value":2.108687},{"id":"Albania","value":160.081219,"adj_value":160.081219},{"id":"Greece","value":1356.447796,"adj_value":1356.447796},{"id":"Romania","value":2148.841567,"adj_value":2148.841567},{"id":"Bulgaria","value":597.694693,"adj_value":597.694693}]},{"id":"Asia","children":[{"id":"Turkey","value":7880.91386,"adj_value":7880.91386},{"id":"Cyprus","value":31.98822,"adj_value":31.98822},{"id":"Syria","value":6.544106,"adj_value":6.544106},{"id":"Lebanon","value":93.219618,"adj_value":93.219618},{"id":"Iraq","value":4353.472677,"adj_value":4353.472677},{"id":"Iran","value":10.766314,"adj_value":10.766314},{"id":"Israel","value":24477.02161,"adj_value":24477.02161},{"id":"Gaza Strip admin. by Israel","value":0.012534,"adj_value":0.012534},{"id":"West Bank admin. by Israel","value":5.435229,"adj_value":5.435229},{"id":"Jordan","value":1491.618691,"adj_value":1491.618691},{"id":"Kuwait","value":4684.750276,"adj_value":4684.750276},{"id":"Saudi Arabia","value":22080.78482,"adj_value":22080.78482},{"id":"Qatar","value":1354.237789,"adj_value":1354.237789},{"id":"United Arab Emirates","value":2468.033306,"adj_value":2468.033306},{"id":"Republic of Yemen","value":48.270876,"adj_value":48.270876},{"id":"Oman","value":906.993161,"adj_value":906.993161},{"id":"Bahrain","value":902.425581,"adj_value":902.425581},{"id":"Afghanistan","value":23.454045,"adj_value":23.454045},{"id":"India","value":44791.64405,"adj_value":44791.64405},{"id":"Pakistan","value":3701.018609,"adj_value":3701.018609},{"id":"Nepal","value":86.959805,"adj_value":86.959805},{"id":"Bangladesh","value":5991.251839,"adj_value":5991.251839},{"id":"Sri Lanka","value":2889.92219,"adj_value":2889.92219},{"id":"Burma","value":143.796881,"adj_value":143.796881},{"id":"Thailand","value":28631.93281,"adj_value":28631.93281},{"id":"Vietnam","value":38019.69623,"adj_value":38019.69623},{"id":"Laos","value":45.189001,"adj_value":45.189001},{"id":"Cambodia","value":3025.433126,"adj_value":3025.433126},{"id":"Malaysia","value":33970.67872,"adj_value":33970.67872},{"id":"Singapore","value":18267.48494,"adj_value":18267.48494},{"id":"Indonesia","value":19601.54814,"adj_value":19601.54814},{"id":"East Timor","value":3.302038,"adj_value":3.302038},{"id":"Brunei","value":19.402766,"adj_value":19.402766},{"id":"Philippines","value":10233.69067,"adj_value":10233.69067},{"id":"Macau","value":121.919528,"adj_value":121.919528},{"id":"Bhutan","value":3.398158,"adj_value":3.398158},{"id":"Maldives","value":21.737873,"adj_value":21.737873},{"id":"China","value":483244.7019,"adj_value":483244.7019},{"id":"Mongolia","value":17.222375,"adj_value":17.222375},{"id":"Korea, North","value":0,"adj_value":0},{"id":"Korea, South","value":71758.69672,"adj_value":71758.69672},{"id":"Hong Kong","value":6795.630644,"adj_value":6795.630644},{"id":"Taiwan","value":40907.5936,"adj_value":40907.5936},{"id":"Japan","value":131364.1476,"adj_value":131364.1476}]},{"id":"Australia","children":[{"id":"Australia","value":10894.02186,"adj_value":10894.02186},{"id":"Norfolk Island","value":1.217241,"adj_value":1.217241},{"id":"Cocos (Keeling) Islands","value":3.809085,"adj_value":3.809085},{"id":"Christmas Island","value":2.12084,"adj_value":2.12084},{"id":"Heard and McDonald Islands","value":0.006734,"adj_value":0.006734},{"id":"Papua New Guinea","value":90.809528,"adj_value":90.809528},{"id":"New Zealand","value":4292.770709,"adj_value":4292.770709},{"id":"Cook Islands","value":0.84788,"adj_value":0.84788},{"id":"Tokelau","value":1.848379,"adj_value":1.848379},{"id":"Niue","value":0.531806,"adj_value":0.531806},{"id":"Samoa","value":4.220542,"adj_value":4.220542},{"id":"Solomon Islands","value":3.521953,"adj_value":3.521953},{"id":"Vanuatu","value":3.67132,"adj_value":3.67132},{"id":"Pitcairn Islands","value":0.012162,"adj_value":0.012162},{"id":"Kiribati","value":2.728752,"adj_value":2.728752},{"id":"Tuvalu","value":0.228118,"adj_value":0.228118},{"id":"New Caledonia","value":47.038156,"adj_value":47.038156},{"id":"Wallis and Futuna","value":0.093303,"adj_value":0.093303},{"id":"French Polynesia","value":43.030557,"adj_value":43.030557},{"id":"Marshall Islands","value":29.067047,"adj_value":29.067047},{"id":"Micronesia","value":0.717108,"adj_value":0.717108},{"id":"Palau","value":0.544832,"adj_value":0.544832},{"id":"Nauru","value":0.52087,"adj_value":0.52087},{"id":"Fiji","value":202.639037,"adj_value":202.639037},{"id":"Tonga","value":2.442895,"adj_value":2.442895}]},{"id":"Africa","children":[{"id":"Morocco","value":1011.85636,"adj_value":1011.85636},{"id":"Algeria","value":3371.552526,"adj_value":3371.552526},{"id":"Tunisia","value":546.271256,"adj_value":546.271256},{"id":"Libya","value":155.103895,"adj_value":155.103895},{"id":"Egypt","value":1405.853699,"adj_value":1405.853699},{"id":"Sudan","value":8.973253,"adj_value":8.973253},{"id":"South Sudan","value":0.192583,"adj_value":0.192583},{"id":"Western Sahara","value":0.044063,"adj_value":0.044063},{"id":"Equatorial Guinea","value":163.14305,"adj_value":163.14305},{"id":"Mauritania","value":1.173847,"adj_value":1.173847},{"id":"Cameroon","value":132.053379,"adj_value":132.053379},{"id":"Senegal","value":71.965108,"adj_value":71.965108},{"id":"Mali","value":4.504283,"adj_value":4.504283},{"id":"Guinea","value":79.616516,"adj_value":79.616516},{"id":"Sierra Leone","value":39.58921,"adj_value":39.58921},{"id":"Cote d'Ivoire","value":1027.88557,"adj_value":1027.88557},{"id":"Ghana","value":309.36766,"adj_value":309.36766},{"id":"Gambia","value":0.896754,"adj_value":0.896754},{"id":"Niger","value":4.184625,"adj_value":4.184625},{"id":"Togo","value":14.211452,"adj_value":14.211452},{"id":"Nigeria","value":1915.80016,"adj_value":1915.80016},{"id":"Central African Republic","value":3.12467,"adj_value":3.12467},{"id":"Gabon","value":337.024529,"adj_value":337.024529},{"id":"Chad","value":1303.322183,"adj_value":1303.322183},{"id":"St Helena","value":15.340188,"adj_value":15.340188},{"id":"Burkina Faso","value":3.592979,"adj_value":3.592979},{"id":"Benin","value":4.94488,"adj_value":4.94488},{"id":"Angola","value":2806.494883,"adj_value":2806.494883},{"id":"Congo (Brazzaville)","value":304.303884,"adj_value":304.303884},{"id":"Guinea-Bissau","value":0.05184,"adj_value":0.05184},{"id":"Cabo Verde","value":2.21905,"adj_value":2.21905},{"id":"Sao Tome and Principe","value":0.773369,"adj_value":0.773369},{"id":"Liberia","value":44.940717,"adj_value":44.940717},{"id":"Congo (Kinshasa)","value":153.738045,"adj_value":153.738045},{"id":"Burundi","value":8.427001,"adj_value":8.427001},{"id":"Rwanda","value":45.643909,"adj_value":45.643909},{"id":"Somalia","value":0.896112,"adj_value":0.896112},{"id":"Eritrea","value":0.106871,"adj_value":0.106871},{"id":"Ethiopia","value":310.269077,"adj_value":310.269077},{"id":"Djibouti","value":35.463684,"adj_value":35.463684},{"id":"Uganda","value":64.123855,"adj_value":64.123855},{"id":"Kenya","value":573.095415,"adj_value":573.095415},{"id":"Seychelles","value":5.83899,"adj_value":5.83899},{"id":"British Indian Ocean Terr.","value":15.818366,"adj_value":15.818366},{"id":"Tanzania","value":104.93518,"adj_value":104.93518},{"id":"Mauritius","value":395.664813,"adj_value":395.664813},{"id":"Mozambique","value":96.026702,"adj_value":96.026702},{"id":"Madagascar","value":319.783011,"adj_value":319.783011},{"id":"Mayotte","value":0.095927,"adj_value":0.095927},{"id":"Comoros","value":1.211821,"adj_value":1.211821},{"id":"Reunion","value":16.967288,"adj_value":16.967288},{"id":"French Southern and Antarctic","value":0.013953,"adj_value":0.013953},{"id":"South Africa","value":7314.612701,"adj_value":7314.612701},{"id":"Namibia","value":85.353831,"adj_value":85.353831},{"id":"Botswana","value":211.913954,"adj_value":211.913954},{"id":"Zambia","value":47.114386,"adj_value":47.114386},{"id":"Swaziland","value":21.49843,"adj_value":21.49843},{"id":"Zimbabwe","value":67.166669,"adj_value":67.166669},{"id":"Malawi","value":61.395881,"adj_value":61.395881},{"id":"Lesotho","value":331.955607,"adj_value":331.955607}]}]},{"id":"Exports","children":[{"id":"North America","children":[{"id":"Greenland","value":8.076839,"adj_value":8.076839},{"id":"Canada","value":280609.0056,"adj_value":280609.0056},{"id":"St Pierre and Miquelon","value":0.227459,"adj_value":0.227459},{"id":"Mexico","value":235745.1375,"adj_value":235745.1375},{"id":"Guatemala","value":5806.713895,"adj_value":5806.713895},{"id":"Belize","value":285.240264,"adj_value":285.240264},{"id":"El Salvador","value":3240.284878,"adj_value":3240.284878},{"id":"Honduras","value":5214.668234,"adj_value":5214.668234},{"id":"Nicaragua","value":1267.532561,"adj_value":1267.532561},{"id":"Costa Rica","value":6079.415736,"adj_value":6079.415736},{"id":"Panama","value":7663.548283,"adj_value":7663.548283},{"id":"Bermuda","value":600.945255,"adj_value":600.945255},{"id":"Bahamas","value":2386.461864,"adj_value":2386.461864},{"id":"Cuba","value":180.215206,"adj_value":180.215206},{"id":"Jamaica","value":1716.030814,"adj_value":1716.030814},{"id":"Turks and Caicos Islands","value":279.728597,"adj_value":279.728597},{"id":"Cayman Islands","value":684.947958,"adj_value":684.947958},{"id":"Haiti","value":1140.574185,"adj_value":1140.574185},{"id":"Dominican Republic","value":7113.829302,"adj_value":7113.829302},{"id":"Anguilla","value":47.602633,"adj_value":47.602633},{"id":"British Virgin Islands","value":259.758571,"adj_value":259.758571},{"id":"St Kitts and Nevis","value":149.707108,"adj_value":149.707108},{"id":"Antigua and Barbuda","value":677.657633,"adj_value":677.657633},{"id":"Montserrat","value":6.640011,"adj_value":6.640011},{"id":"Dominica","value":67.312046,"adj_value":67.312046},{"id":"St Lucia","value":510.811024,"adj_value":510.811024},{"id":"St Vincent and the Grenadines","value":84.722498,"adj_value":84.722498},{"id":"Grenada","value":90.420149,"adj_value":90.420149},{"id":"Barbados","value":595.966307,"adj_value":595.966307},{"id":"Trinidad and Tobago","value":2511.195111,"adj_value":2511.195111},{"id":"Sint Maarten","value":741.201231,"adj_value":741.201231},{"id":"Curacao","value":522.079698,"adj_value":522.079698},{"id":"Aruba","value":1167.632524,"adj_value":1167.632524},{"id":"Guadeloupe","value":100.959536,"adj_value":100.959536},{"id":"Martinique","value":119.577165,"adj_value":119.577165}]},{"id":"South America","children":[{"id":"Colombia","value":16286.7799,"adj_value":16286.7799},{"id":"Venezuela","value":8345.880233,"adj_value":8345.880233},{"id":"Guyana","value":368.129666,"adj_value":368.129666},{"id":"Suriname","value":443.643313,"adj_value":443.643313},{"id":"French Guiana","value":1073.642767,"adj_value":1073.642767},{"id":"Ecuador","value":5794.812688,"adj_value":5794.812688},{"id":"Peru","value":8725.607473,"adj_value":8725.607473},{"id":"Bolivia","value":931.431709,"adj_value":931.431709},{"id":"Chile","value":15445.13797,"adj_value":15445.13797},{"id":"Brazil","value":31650.62387,"adj_value":31650.62387},{"id":"Paraguay","value":1514.300292,"adj_value":1514.300292},{"id":"Uruguay","value":1295.148749,"adj_value":1295.148749},{"id":"Argentina","value":9341.210651,"adj_value":9341.210651},{"id":"Falkland Islands(Islas Malvin","value":2.917708,"adj_value":2.917708}]},{"id":"Europe","children":[{"id":"Iceland","value":415.45785,"adj_value":415.45785},{"id":"Sweden","value":3940.8105,"adj_value":3940.8105},{"id":"Svalbard, Jan Mayen Island","value":0.380164,"adj_value":0.380164},{"id":"Norway","value":3570.63315,"adj_value":3570.63315},{"id":"Finland","value":1558.146898,"adj_value":1558.146898},{"id":"Faroe Islands","value":2.336863,"adj_value":2.336863},{"id":"Denmark","value":2202.093582,"adj_value":2202.093582},{"id":"United Kingdom","value":56114.61886,"adj_value":56114.61886},{"id":"Ireland","value":8930.773509,"adj_value":8930.773509},{"id":"Netherlands","value":40196.15629,"adj_value":40196.15629},{"id":"Belgium","value":34159.97966,"adj_value":34159.97966},{"id":"Luxembourg","value":1394.17473,"adj_value":1394.17473},{"id":"Andorra","value":3.336817,"adj_value":3.336817},{"id":"Monaco","value":71.128048,"adj_value":71.128048},{"id":"France","value":30103.5212,"adj_value":30103.5212},{"id":"Germany","value":49970.80411,"adj_value":49970.80411},{"id":"Austria","value":4024.435888,"adj_value":4024.435888},{"id":"Czech Republic","value":1976.037865,"adj_value":1976.037865},{"id":"Slovakia","value":379.469169,"adj_value":379.469169},{"id":"Hungary","value":1715.278037,"adj_value":1715.278037},{"id":"Liechtenstein","value":35.930552,"adj_value":35.930552},{"id":"Switzerland","value":22185.27991,"adj_value":22185.27991},{"id":"Estonia","value":288.143789,"adj_value":288.143789},{"id":"Latvia","value":294.787977,"adj_value":294.787977},{"id":"Lithuania","value":527.67763,"adj_value":527.67763},{"id":"Poland","value":3715.441301,"adj_value":3715.441301},{"id":"Russia","value":7087.111574,"adj_value":7087.111574},{"id":"Belarus","value":59.235752,"adj_value":59.235752},{"id":"Ukraine","value":862.088348,"adj_value":862.088348},{"id":"Armenia","value":50.24617,"adj_value":50.24617},{"id":"Azerbaijan","value":477.316108,"adj_value":477.316108},{"id":"Georgia","value":340.502111,"adj_value":340.502111},{"id":"Kazakhstan","value":510.479071,"adj_value":510.479071},{"id":"Kyrgyzstan","value":32.003481,"adj_value":32.003481},{"id":"Moldova","value":16.163682,"adj_value":16.163682},{"id":"Tajikistan","value":18.985373,"adj_value":18.985373},{"id":"Turkmenistan","value":80.839805,"adj_value":80.839805},{"id":"Uzbekistan","value":137.962928,"adj_value":137.962928},{"id":"Spain","value":10310.27052,"adj_value":10310.27052},{"id":"Portugal","value":942.466275,"adj_value":942.466275},{"id":"Gibraltar","value":1972.99261,"adj_value":1972.99261},{"id":"Malta","value":490.660579,"adj_value":490.660579},{"id":"San Marino","value":5.011879,"adj_value":5.011879},{"id":"Vatican City","value":2.226547,"adj_value":2.226547},{"id":"Italy","value":16204.22609,"adj_value":16204.22609},{"id":"Croatia","value":331.976272,"adj_value":331.976272},{"id":"Slovenia","value":346.040192,"adj_value":346.040192},{"id":"Bosnia and Herzegovina","value":27.586061,"adj_value":27.586061},{"id":"Macedonia","value":30.678977,"adj_value":30.678977},{"id":"Serbia","value":126.25142,"adj_value":126.25142},{"id":"Kosovo","value":19.743318,"adj_value":19.743318},{"id":"Montenegro","value":11.133957,"adj_value":11.133957},{"id":"Albania","value":30.952665,"adj_value":30.952665},{"id":"Greece","value":725.699147,"adj_value":725.699147},{"id":"Romania","value":753.718827,"adj_value":753.718827},{"id":"Bulgaria","value":289.09201,"adj_value":289.09201}]},{"id":"Asia","children":[{"id":"Turkey","value":9502.498123,"adj_value":9502.498123},{"id":"Cyprus","value":101.831614,"adj_value":101.831614},{"id":"Syria","value":3.072304,"adj_value":3.072304},{"id":"Lebanon","value":1272.487166,"adj_value":1272.487166},{"id":"Iraq","value":1971.478767,"adj_value":1971.478767},{"id":"Iran","value":281.512074,"adj_value":281.512074},{"id":"Israel","value":13538.69482,"adj_value":13538.69482},{"id":"Gaza Strip admin. by Israel","value":0.183934,"adj_value":0.183934},{"id":"West Bank admin. by Israel","value":0.903282,"adj_value":0.903282},{"id":"Jordan","value":1358.977191,"adj_value":1358.977191},{"id":"Kuwait","value":2739.289578,"adj_value":2739.289578},{"id":"Saudi Arabia","value":19738.98459,"adj_value":19738.98459},{"id":"Qatar","value":4222.426394,"adj_value":4222.426394},{"id":"United Arab Emirates","value":23003.59562,"adj_value":23003.59562},{"id":"Republic of Yemen","value":158.039977,"adj_value":158.039977},{"id":"Oman","value":2355.271013,"adj_value":2355.271013},{"id":"Bahrain","value":1270.662445,"adj_value":1270.662445},{"id":"Afghanistan","value":478.851271,"adj_value":478.851271},{"id":"India","value":21451.87992,"adj_value":21451.87992},{"id":"Pakistan","value":1837.506933,"adj_value":1837.506933},{"id":"Nepal","value":36.405446,"adj_value":36.405446},{"id":"Bangladesh","value":942.540067,"adj_value":942.540067},{"id":"Sri Lanka","value":361.920786,"adj_value":361.920786},{"id":"Burma","value":227.140755,"adj_value":227.140755},{"id":"Thailand","value":11230.56974,"adj_value":11230.56974},{"id":"Vietnam","value":7087.524038,"adj_value":7087.524038},{"id":"Laos","value":24.584007,"adj_value":24.584007},{"id":"Cambodia","value":391.045876,"adj_value":391.045876},{"id":"Malaysia","value":12277.22614,"adj_value":12277.22614},{"id":"Singapore","value":28472.07098,"adj_value":28472.07098},{"id":"Indonesia","value":7120.940688,"adj_value":7120.940688},{"id":"East Timor","value":2.690584,"adj_value":2.690584},{"id":"Brunei","value":133.449998,"adj_value":133.449998},{"id":"Philippines","value":7907.893167,"adj_value":7907.893167},{"id":"Macau","value":542.354584,"adj_value":542.354584},{"id":"Bhutan","value":2.64104,"adj_value":2.64104},{"id":"Maldives","value":35.143208,"adj_value":35.143208},{"id":"China","value":116071.7696,"adj_value":116071.7696},{"id":"Mongolia","value":69.161103,"adj_value":69.161103},{"id":"Korea, North","value":4.751721,"adj_value":4.751721},{"id":"Korea, South","value":43445.54748,"adj_value":43445.54748},{"id":"Hong Kong","value":37167.02295,"adj_value":37167.02295},{"id":"Taiwan","value":25860.08634,"adj_value":25860.08634},{"id":"Japan","value":62442.64646,"adj_value":62442.64646}]},{"id":"Australia","children":[{"id":"Australia","value":25035.79015,"adj_value":25035.79015},{"id":"Norfolk Island","value":0.350312,"adj_value":0.350312},{"id":"Cocos (Keeling) Islands","value":0.55762,"adj_value":0.55762},{"id":"Christmas Island","value":1.551179,"adj_value":1.551179},{"id":"Heard and McDonald Islands","value":0.913419,"adj_value":0.913419},{"id":"Papua New Guinea","value":207.793894,"adj_value":207.793894},{"id":"New Zealand","value":3631.061903,"adj_value":3631.061903},{"id":"Cook Islands","value":4.249826,"adj_value":4.249826},{"id":"Tokelau","value":0.341222,"adj_value":0.341222},{"id":"Niue","value":0.071371,"adj_value":0.071371},{"id":"Samoa","value":22.71966,"adj_value":22.71966},{"id":"Solomon Islands","value":5.861309,"adj_value":5.861309},{"id":"Vanuatu","value":5.867876,"adj_value":5.867876},{"id":"Pitcairn Islands","value":0.017405,"adj_value":0.017405},{"id":"Kiribati","value":7.320835,"adj_value":7.320835},{"id":"Tuvalu","value":0.625636,"adj_value":0.625636},{"id":"New Caledonia","value":88.651277,"adj_value":88.651277},{"id":"Wallis and Futuna","value":0.376841,"adj_value":0.376841},{"id":"French Polynesia","value":120.047865,"adj_value":120.047865},{"id":"Marshall Islands","value":53.912135,"adj_value":53.912135},{"id":"Micronesia","value":40.032614,"adj_value":40.032614},{"id":"Palau","value":25.693198,"adj_value":25.693198},{"id":"Nauru","value":1.73365,"adj_value":1.73365},{"id":"Fiji","value":56.904585,"adj_value":56.904585},{"id":"Tonga","value":13.817538,"adj_value":13.817538}]},{"id":"Africa","children":[{"id":"Morocco","value":1625.204959,"adj_value":1625.204959},{"id":"Algeria","value":1875.734479,"adj_value":1875.734479},{"id":"Tunisia","value":602.412017,"adj_value":602.412017},{"id":"Libya","value":242.951645,"adj_value":242.951645},{"id":"Egypt","value":4752.983685,"adj_value":4752.983685},{"id":"Sudan","value":59.514997,"adj_value":59.514997},{"id":"South Sudan","value":19.613532,"adj_value":19.613532},{"id":"Western Sahara","value":0.032113,"adj_value":0.032113},{"id":"Equatorial Guinea","value":161.964373,"adj_value":161.964373},{"id":"Mauritania","value":126.280667,"adj_value":126.280667},{"id":"Cameroon","value":224.961698,"adj_value":224.961698},{"id":"Senegal","value":196.428411,"adj_value":196.428411},{"id":"Mali","value":72.426079,"adj_value":72.426079},{"id":"Guinea","value":135.350114,"adj_value":135.350114},{"id":"Sierra Leone","value":77.325724,"adj_value":77.325724},{"id":"Cote d'Ivoire","value":266.335569,"adj_value":266.335569},{"id":"Ghana","value":949.913963,"adj_value":949.913963},{"id":"Gambia","value":37.899622,"adj_value":37.899622},{"id":"Niger","value":71.493157,"adj_value":71.493157},{"id":"Togo","value":311.819809,"adj_value":311.819809},{"id":"Nigeria","value":3437.952784,"adj_value":3437.952784},{"id":"Central African Republic","value":34.309874,"adj_value":34.309874},{"id":"Gabon","value":203.872443,"adj_value":203.872443},{"id":"Chad","value":56.591528,"adj_value":56.591528},{"id":"St Helena","value":3.720487,"adj_value":3.720487},{"id":"Burkina Faso","value":53.875343,"adj_value":53.875343},{"id":"Benin","value":631.462518,"adj_value":631.462518},{"id":"Angola","value":1166.161667,"adj_value":1166.161667},{"id":"Congo (Brazzaville)","value":249.220232,"adj_value":249.220232},{"id":"Guinea-Bissau","value":2.13532,"adj_value":2.13532},{"id":"Cabo Verde","value":7.32166,"adj_value":7.32166},{"id":"Sao Tome and Principe","value":0.853963,"adj_value":0.853963},{"id":"Liberia","value":135.807551,"adj_value":135.807551},{"id":"Congo (Kinshasa)","value":136.189374,"adj_value":136.189374},{"id":"Burundi","value":5.650192,"adj_value":5.650192},{"id":"Rwanda","value":14.28771,"adj_value":14.28771},{"id":"Somalia","value":45.026584,"adj_value":45.026584},{"id":"Eritrea","value":3.497538,"adj_value":3.497538},{"id":"Ethiopia","value":1555.249376,"adj_value":1555.249376},{"id":"Djibouti","value":144.711021,"adj_value":144.711021},{"id":"Uganda","value":88.315069,"adj_value":88.315069},{"id":"Kenya","value":943.436657,"adj_value":943.436657},{"id":"Seychelles","value":18.542809,"adj_value":18.542809},{"id":"British Indian Ocean Terr.","value":0.581016,"adj_value":0.581016},{"id":"Tanzania","value":172.803054,"adj_value":172.803054},{"id":"Mauritius","value":58.435311,"adj_value":58.435311},{"id":"Mozambique","value":264.203995,"adj_value":264.203995},{"id":"Madagascar","value":54.553731,"adj_value":54.553731},{"id":"Mayotte","value":5.697333,"adj_value":5.697333},{"id":"Comoros","value":1.507078,"adj_value":1.507078},{"id":"Reunion","value":6.905271,"adj_value":6.905271},{"id":"French Southern and Antarctic","value":8.026602,"adj_value":8.026602},{"id":"South Africa","value":5458.29362,"adj_value":5458.29362},{"id":"Namibia","value":127.603603,"adj_value":127.603603},{"id":"Botswana","value":39.04197,"adj_value":39.04197},{"id":"Zambia","value":84.170835,"adj_value":84.170835},{"id":"Swaziland","value":28.521751,"adj_value":28.521751},{"id":"Zimbabwe","value":37.834783,"adj_value":37.834783},{"id":"Malawi","value":37.201602,"adj_value":37.201602},{"id":"Lesotho","value":0.881897,"adj_value":0.881897}]}]}]},{"id":"1985","children":[{"id":"Imports","children":[{"id":"North America","children":[{"id":"Canada","value":69006.4,"adj_value":152007.2979},{"id":"Mexico","value":19131.7,"adj_value":42143.30876},{"id":"Guatemala","value":409,"adj_value":900.9452},{"id":"El Salvador","value":395.6,"adj_value":871.42768},{"id":"Honduras","value":375.4,"adj_value":826.93112},{"id":"Costa Rica","value":501.3,"adj_value":1104.26364},{"id":"Panama","value":410.6,"adj_value":904.46968},{"id":"Bahamas","value":626.3,"adj_value":1379.61364},{"id":"Jamaica","value":272.7,"adj_value":600.70356},{"id":"Haiti","value":389.6,"adj_value":858.21088},{"id":"Dominican Republic","value":982.3,"adj_value":2163.81044},{"id":"Trinidad and Tobago","value":1258.4,"adj_value":2772.00352},{"id":"Netherlands Antilles","value":808,"adj_value":1779.8624}]},{"id":"South America","children":[{"id":"Colombia","value":1330.7,"adj_value":2931.26596},{"id":"Venezuela","value":6537.1,"adj_value":14399.92388},{"id":"Ecuador","value":1836.5,"adj_value":4045.4422},{"id":"Peru","value":1086.6,"adj_value":2393.56248},{"id":"Chile","value":745.2,"adj_value":1641.52656},{"id":"Brazil","value":7526.2,"adj_value":16578.71336},{"id":"Paraguay","value":23.6,"adj_value":51.98608},{"id":"Uruguay","value":556.6,"adj_value":1226.07848},{"id":"Argentina","value":1069.3,"adj_value":2355.45404}]},{"id":"Europe","children":[{"id":"Iceland","value":247.8,"adj_value":545.85384},{"id":"Sweden","value":4123.7,"adj_value":9083.68636},{"id":"Norway","value":1164.3,"adj_value":2564.72004},{"id":"Finland","value":895.2,"adj_value":1971.94656},{"id":"Denmark","value":1664.4,"adj_value":3666.34032},{"id":"United Kingdom","value":14937.2,"adj_value":32903.66416},{"id":"Ireland","value":901.1,"adj_value":1984.94308},{"id":"Netherlands","value":4081.3,"adj_value":8990.28764},{"id":"Belgium","value":3355.2,"adj_value":7390.83456},{"id":"France","value":9482,"adj_value":20886.9496},{"id":"Germany","value":20239.2,"adj_value":44582.90976},{"id":"Austria","value":833.7,"adj_value":1836.47436},{"id":"Hungary","value":218.3,"adj_value":480.87124},{"id":"Switzerland","value":3476.1,"adj_value":7657.15308},{"id":"Poland","value":220.2,"adj_value":485.05656},{"id":"USSR","value":408.5,"adj_value":899.8438},{"id":"Spain","value":2515.2,"adj_value":5540.48256},{"id":"Portugal","value":546,"adj_value":1202.7288},{"id":"Italy","value":9673.8,"adj_value":21309.44664},{"id":"Yugoslavia (former)","value":542.2,"adj_value":1194.35816},{"id":"Greece","value":394.7,"adj_value":869.44516}]},{"id":"Asia","children":[{"id":"Turkey","value":601.9,"adj_value":1325.86532},{"id":"Iran","value":725.1,"adj_value":1597.25028},{"id":"Israel","value":2122.5,"adj_value":4675.443},{"id":"Kuwait","value":184,"adj_value":405.3152},{"id":"Saudi Arabia","value":1907.1,"adj_value":4200.95988},{"id":"United Arab Emirates","value":671,"adj_value":1478.0788},{"id":"Bahrain","value":83.3,"adj_value":183.49324},{"id":"India","value":2294.7,"adj_value":5054.76516},{"id":"Pakistan","value":273.9,"adj_value":603.34692},{"id":"Bangladesh","value":196,"adj_value":431.7488},{"id":"Sri Lanka","value":281.9,"adj_value":620.96932},{"id":"Thailand","value":1428.3,"adj_value":3146.25924},{"id":"Malaysia","value":2299.9,"adj_value":5066.21972},{"id":"Singapore","value":4259.9,"adj_value":9383.70772},{"id":"Indonesia","value":4568.9,"adj_value":10064.37292},{"id":"Philippines","value":2145,"adj_value":4725.006},{"id":"Macau","value":341.9,"adj_value":753.13732},{"id":"China","value":3861.7,"adj_value":8506.55276},{"id":"Korea, South","value":10013.3,"adj_value":22057.29724},{"id":"Hong Kong","value":8396.4,"adj_value":18495.58992},{"id":"Taiwan","value":16396.3,"adj_value":36117.76964},{"id":"Japan","value":68782.9,"adj_value":151514.9721}]},{"id":"Australia","children":[{"id":"Australia","value":2836.3,"adj_value":6247.80164},{"id":"New Zealand","value":857,"adj_value":1887.7996}]},{"id":"Africa","children":[{"id":"Algeria","value":2333,"adj_value":5139.1324},{"id":"Egypt","value":79.1,"adj_value":174.24148},{"id":"Cote d'Ivoire","value":524.8,"adj_value":1156.02944},{"id":"Nigeria","value":3001.9,"adj_value":6612.58532},{"id":"Gabon","value":501.9,"adj_value":1105.58532},{"id":"Angola","value":1053.6,"adj_value":2320.87008},{"id":"Congo (Brazzaville)","value":609.3,"adj_value":1342.16604},{"id":"Congo (Kinshasa)","value":400.7,"adj_value":882.66196},{"id":"South Africa","value":2070.9,"adj_value":4561.77852}]}]},{"id":"Exports","children":[{"id":"North America","children":[{"id":"Canada","value":47251,"adj_value":104084.5028},{"id":"Mexico","value":13634.7,"adj_value":30034.51716},{"id":"Guatemala","value":404.6,"adj_value":891.25288},{"id":"El Salvador","value":445.5,"adj_value":981.3474},{"id":"Honduras","value":307.9,"adj_value":678.24212},{"id":"Costa Rica","value":421.7,"adj_value":928.92076},{"id":"Panama","value":674.8,"adj_value":1486.44944},{"id":"Bahamas","value":786.3,"adj_value":1732.06164},{"id":"Jamaica","value":404.3,"adj_value":890.59204},{"id":"Haiti","value":395.9,"adj_value":872.08852},{"id":"Dominican Republic","value":742,"adj_value":1634.4776},{"id":"Trinidad and Tobago","value":503.7,"adj_value":1109.55036},{"id":"Netherlands Antilles","value":427.5,"adj_value":941.697}]},{"id":"South America","children":[{"id":"Colombia","value":1467.7,"adj_value":3233.04956},{"id":"Venezuela","value":3399.4,"adj_value":7488.19832},{"id":"Ecuador","value":591.1,"adj_value":1302.07508},{"id":"Peru","value":495.9,"adj_value":1092.36852},{"id":"Chile","value":682.2,"adj_value":1502.75016},{"id":"Brazil","value":3139.6,"adj_value":6915.91088},{"id":"Paraguay","value":98.9,"adj_value":217.85692},{"id":"Uruguay","value":64.3,"adj_value":141.64004},{"id":"Argentina","value":721.3,"adj_value":1588.87964}]},{"id":"Europe","children":[{"id":"Iceland","value":38,"adj_value":83.7064},{"id":"Sweden","value":1924.9,"adj_value":4240.16972},{"id":"Norway","value":665.9,"adj_value":1466.84452},{"id":"Finland","value":437.7,"adj_value":964.16556},{"id":"Denmark","value":705.7,"adj_value":1554.51596},{"id":"United Kingdom","value":11272.8,"adj_value":24831.72384},{"id":"Ireland","value":1341.8,"adj_value":2955.71704},{"id":"Netherlands","value":7269,"adj_value":16012.1532},{"id":"Belgium","value":4917.7,"adj_value":10832.70956},{"id":"France","value":6095.6,"adj_value":13427.38768},{"id":"Germany","value":9050.2,"adj_value":19935.78056},{"id":"Austria","value":441.2,"adj_value":971.87536},{"id":"Hungary","value":94.5,"adj_value":208.1646},{"id":"Switzerland","value":2287.7,"adj_value":5039.34556},{"id":"Poland","value":237.9,"adj_value":524.04612},{"id":"USSR","value":2422.8,"adj_value":5336.94384},{"id":"Spain","value":2524.1,"adj_value":5560.08748},{"id":"Portugal","value":694.5,"adj_value":1529.8446},{"id":"Italy","value":4625.2,"adj_value":10188.39056},{"id":"Yugoslavia (former)","value":594.7,"adj_value":1310.00516},{"id":"Greece","value":497.8,"adj_value":1096.55384}]},{"id":"Asia","children":[{"id":"Turkey","value":1294.6,"adj_value":2851.74488},{"id":"Iran","value":73.9,"adj_value":162.78692},{"id":"Israel","value":2579.6,"adj_value":5682.34288},{"id":"Kuwait","value":550.6,"adj_value":1212.86168},{"id":"Saudi Arabia","value":4474.3,"adj_value":9855.98804},{"id":"United Arab Emirates","value":596.5,"adj_value":1313.9702},{"id":"Bahrain","value":107,"adj_value":235.6996},{"id":"India","value":1641.9,"adj_value":3616.77732},{"id":"Pakistan","value":1041.7,"adj_value":2294.65676},{"id":"Bangladesh","value":218.9,"adj_value":482.19292},{"id":"Sri Lanka","value":72.8,"adj_value":160.36384},{"id":"Thailand","value":849.1,"adj_value":1870.39748},{"id":"Malaysia","value":1539.2,"adj_value":3390.54976},{"id":"Singapore","value":3475.6,"adj_value":7656.05168},{"id":"Indonesia","value":795,"adj_value":1751.226},{"id":"Philippines","value":1379.3,"adj_value":3038.32204},{"id":"Macau","value":1.1,"adj_value":2.42308},{"id":"China","value":3855.7,"adj_value":8493.33596},{"id":"Korea, South","value":5956.3,"adj_value":13120.53764},{"id":"Hong Kong","value":2785.9,"adj_value":6136.78052},{"id":"Taiwan","value":4700,"adj_value":10353.16},{"id":"Japan","value":22630.9,"adj_value":49851.34652}]},{"id":"Australia","children":[{"id":"Australia","value":5440.4,"adj_value":11984.11312},{"id":"New Zealand","value":727.5,"adj_value":1602.537}]},{"id":"Africa","children":[{"id":"Algeria","value":430.1,"adj_value":947.42428},{"id":"Egypt","value":2322.6,"adj_value":5116.22328},{"id":"Cote d'Ivoire","value":69.7,"adj_value":153.53516},{"id":"Nigeria","value":675.7,"adj_value":1488.43196},{"id":"Gabon","value":91.2,"adj_value":200.89536},{"id":"Angola","value":136.9,"adj_value":301.56332},{"id":"Congo (Brazzaville)","value":19.4,"adj_value":42.73432},{"id":"Congo (Kinshasa)","value":101.5,"adj_value":223.5842},{"id":"South Africa","value":1205,"adj_value":2654.374}]}]}]}]},"options":{"tile":"Binary"}},"evals":[],"jsHooks":[]}</script>
</div>
<div style="float:left; display:inline;">
<h3>
SliceDice
</h3>
<div id="htmlwidget-10dc5db38392852bdf07" class="treebar html-widget" style="width:400px;height:250px;">
</div>
<script type="application/json" data-for="htmlwidget-10dc5db38392852bdf07">{"x":{"data":{"children":[{"id":"1995","children":[{"id":"Imports","children":[{"id":"North America","children":[{"id":"Greenland","value":7.6,"adj_value":11.81952},{"id":"Canada","value":144369.9,"adj_value":224524.0685},{"id":"St Pierre and Miquelon","value":3.4,"adj_value":5.28768},{"id":"Mexico","value":62100.4,"adj_value":96578.54208},{"id":"Guatemala","value":1526.8,"adj_value":2374.47936},{"id":"Belize","value":52.1,"adj_value":81.02592},{"id":"El Salvador","value":812.2,"adj_value":1263.13344},{"id":"Honduras","value":1441.2,"adj_value":2241.35424},{"id":"Nicaragua","value":238.8,"adj_value":371.38176},{"id":"Costa Rica","value":1843.2,"adj_value":2866.54464},{"id":"Panama","value":307.1,"adj_value":477.60192},{"id":"Bermuda","value":10.4,"adj_value":16.17408},{"id":"Bahamas","value":156.7,"adj_value":243.69984},{"id":"Cuba","value":0,"adj_value":0},{"id":"Jamaica","value":846.9,"adj_value":1317.09888},{"id":"Turks and Caicos Islands","value":5,"adj_value":7.776},{"id":"Cayman Islands","value":18.2,"adj_value":28.30464},{"id":"Haiti","value":129.9,"adj_value":202.02048},{"id":"Dominican Republic","value":3398.9,"adj_value":5285.96928},{"id":"Anguilla","value":0,"adj_value":0},{"id":"British Virgin Islands","value":11.2,"adj_value":17.41824},{"id":"St Kitts and Nevis","value":22.3,"adj_value":34.68096},{"id":"Antigua and Barbuda","value":2.8,"adj_value":4.35456},{"id":"Montserrat","value":2,"adj_value":3.1104},{"id":"Dominica","value":6.6,"adj_value":10.26432},{"id":"St Lucia","value":35.1,"adj_value":54.58752},{"id":"St Vincent and the Grenadines","value":7.9,"adj_value":12.28608},{"id":"Grenada","value":5.3,"adj_value":8.24256},{"id":"Barbados","value":37.7,"adj_value":58.63104},{"id":"Trinidad and Tobago","value":1089.2,"adj_value":1693.92384},{"id":"Netherlands Antilles","value":289.8,"adj_value":450.69696},{"id":"Aruba","value":420.7,"adj_value":654.27264},{"id":"Guadeloupe","value":1.2,"adj_value":1.86624},{"id":"Martinique","value":1.9,"adj_value":2.95488}]},{"id":"South America","children":[{"id":"Colombia","value":3791,"adj_value":5895.7632},{"id":"Venezuela","value":9764,"adj_value":15184.9728},{"id":"Guyana","value":107.4,"adj_value":167.02848},{"id":"Suriname","value":100,"adj_value":155.52},{"id":"French Guiana","value":5.2,"adj_value":8.08704},{"id":"Ecuador","value":1939.7,"adj_value":3016.62144},{"id":"Peru","value":1034.4,"adj_value":1608.69888},{"id":"Bolivia","value":262.5,"adj_value":408.24},{"id":"Chile","value":1930.8,"adj_value":3002.78016},{"id":"Brazil","value":8832.9,"adj_value":13736.92608},{"id":"Paraguay","value":55,"adj_value":85.536},{"id":"Uruguay","value":167.2,"adj_value":260.02944},{"id":"Argentina","value":1760.8,"adj_value":2738.39616},{"id":"Falkland Islands(Islas Malvin","value":0.5,"adj_value":0.7776}]},{"id":"Europe","children":[{"id":"Iceland","value":232.8,"adj_value":362.05056},{"id":"Sweden","value":6256.4,"adj_value":9729.95328},{"id":"Svalbard, Jan Mayen Island","value":0.2,"adj_value":0.31104},{"id":"Norway","value":3086.7,"adj_value":4800.43584},{"id":"Finland","value":2269.9,"adj_value":3530.14848},{"id":"Faroe Islands","value":8.4,"adj_value":13.06368},{"id":"Denmark","value":1944.9,"adj_value":3024.70848},{"id":"United Kingdom","value":26929.7,"adj_value":41881.06944},{"id":"Ireland","value":4078.7,"adj_value":6343.19424},{"id":"Netherlands","value":6404.9,"adj_value":9960.90048},{"id":"Belgium","value":6053.9,"adj_value":9415.02528},{"id":"Luxembourg","value":233.8,"adj_value":363.60576},{"id":"Andorra","value":0.2,"adj_value":0.31104},{"id":"Monaco","value":12.2,"adj_value":18.97344},{"id":"France","value":17209.4,"adj_value":26764.05888},{"id":"Germany","value":36843.9,"adj_value":57299.63328},{"id":"Austria","value":1963.2,"adj_value":3053.16864},{"id":"Czechoslovakia","value":0,"adj_value":0},{"id":"Czech Republic","value":363.3,"adj_value":565.00416},{"id":"Slovakia","value":129.5,"adj_value":201.3984},{"id":"Hungary","value":547,"adj_value":850.6944},{"id":"Liechtenstein","value":126.2,"adj_value":196.26624},{"id":"Switzerland","value":7593.9,"adj_value":11810.03328},{"id":"Estonia","value":62.1,"adj_value":96.57792},{"id":"Latvia","value":82,"adj_value":127.5264},{"id":"Lithuania","value":26.5,"adj_value":41.2128},{"id":"Poland","value":663.6,"adj_value":1032.03072},{"id":"USSR","value":0,"adj_value":0},{"id":"Russia","value":4030.1,"adj_value":6267.61152},{"id":"Belarus","value":45,"adj_value":69.984},{"id":"Ukraine","value":405.7,"adj_value":630.94464},{"id":"Armenia","value":16.3,"adj_value":25.34976},{"id":"Azerbaijan","value":0.7,"adj_value":1.08864},{"id":"Georgia","value":10.7,"adj_value":16.64064},{"id":"Kazakhstan","value":122.9,"adj_value":191.13408},{"id":"Kyrgyzstan","value":8.4,"adj_value":13.06368},{"id":"Moldova","value":24.8,"adj_value":38.56896},{"id":"Tajikistan","value":40.9,"adj_value":63.60768},{"id":"Turkmenistan","value":1.3,"adj_value":2.02176},{"id":"Uzbekistan","value":18.8,"adj_value":29.23776},{"id":"Spain","value":3879.7,"adj_value":6033.70944},{"id":"Portugal","value":1056.7,"adj_value":1643.37984},{"id":"Gibraltar","value":4.8,"adj_value":7.46496},{"id":"Malta","value":132.5,"adj_value":206.064},{"id":"San Marino","value":1,"adj_value":1.5552},{"id":"Vatican City","value":0.7,"adj_value":1.08864},{"id":"Italy","value":16348.4,"adj_value":25425.03168},{"id":"Yugoslavia (former)","value":0,"adj_value":0},{"id":"Croatia","value":93.8,"adj_value":145.87776},{"id":"Slovenia","value":289.5,"adj_value":450.2304},{"id":"Bosnia and Herzegovina","value":3.5,"adj_value":5.4432},{"id":"Macedonia","value":88.8,"adj_value":138.10176},{"id":"Serbia and Montenegro","value":0,"adj_value":0},{"id":"Albania","value":9.4,"adj_value":14.61888},{"id":"Greece","value":397.1,"adj_value":617.56992},{"id":"Romania","value":222.3,"adj_value":345.72096},{"id":"Bulgaria","value":188.5,"adj_value":293.1552}]},{"id":"Asia","children":[{"id":"Turkey","value":1797.9,"adj_value":2796.09408},{"id":"Cyprus","value":13.1,"adj_value":20.37312},{"id":"Syria","value":61.1,"adj_value":95.02272},{"id":"Lebanon","value":35,"adj_value":54.432},{"id":"Iraq","value":0,"adj_value":0},{"id":"Iran","value":0.2,"adj_value":0.31104},{"id":"Israel","value":0,"adj_value":0},{"id":"Israel","value":5708.7,"adj_value":8878.17024},{"id":"Gaza Strip admin. by Israel","value":0,"adj_value":0},{"id":"West Bank admin. by Israel","value":0,"adj_value":0},{"id":"Jordan","value":28.9,"adj_value":44.94528},{"id":"Kuwait","value":1335.5,"adj_value":2076.9696},{"id":"Iraq-Saudi Arabia Neutral Zone","value":0,"adj_value":0},{"id":"Saudi Arabia","value":8376.6,"adj_value":13027.28832},{"id":"Qatar","value":90.9,"adj_value":141.36768},{"id":"United Arab Emirates","value":459.1,"adj_value":713.99232},{"id":"Republic of Yemen","value":41.5,"adj_value":64.5408},{"id":"Oman","value":294.9,"adj_value":458.62848},{"id":"Bahrain","value":134.3,"adj_value":208.86336},{"id":"Afghanistan","value":5.4,"adj_value":8.39808},{"id":"India","value":5726.3,"adj_value":8905.54176},{"id":"Pakistan","value":1197,"adj_value":1861.5744},{"id":"Nepal","value":96.1,"adj_value":149.45472},{"id":"Bangladesh","value":1257.2,"adj_value":1955.19744},{"id":"Sri Lanka","value":1259.7,"adj_value":1959.08544},{"id":"Burma","value":81,"adj_value":125.9712},{"id":"Thailand","value":11348.1,"adj_value":17648.56512},{"id":"Vietnam","value":199,"adj_value":309.4848},{"id":"Laos","value":10.2,"adj_value":15.86304},{"id":"Cambodia","value":5.1,"adj_value":7.93152},{"id":"Malaysia","value":17454.9,"adj_value":27145.86048},{"id":"Singapore","value":18560.4,"adj_value":28865.13408},{"id":"Indonesia","value":7435.3,"adj_value":11563.37856},{"id":"Brunei","value":38.4,"adj_value":59.71968},{"id":"Philippines","value":7006.5,"adj_value":10896.5088},{"id":"Macau","value":895.3,"adj_value":1392.37056},{"id":"Bhutan","value":0.1,"adj_value":0.15552},{"id":"Maldives","value":12,"adj_value":18.6624},{"id":"China","value":45543.2,"adj_value":70828.78464},{"id":"Mongolia","value":23.2,"adj_value":36.08064},{"id":"Korea, North","value":0,"adj_value":0},{"id":"Korea, South","value":24184,"adj_value":37610.9568},{"id":"Hong Kong","value":10291.3,"adj_value":16005.02976},{"id":"Taiwan","value":28971.9,"adj_value":45057.09888},{"id":"Japan","value":123479.3,"adj_value":192035.0074}]},{"id":"Australia","children":[{"id":"Australia","value":3323,"adj_value":5167.9296},{"id":"Norfolk Island","value":78.6,"adj_value":122.23872},{"id":"Cocos (Keeling) Islands","value":0,"adj_value":0},{"id":"Christmas Island","value":0,"adj_value":0},{"id":"Heard and McDonald Islands","value":0.3,"adj_value":0.46656},{"id":"Papua New Guinea","value":50.2,"adj_value":78.07104},{"id":"New Zealand","value":1451.8,"adj_value":2257.83936},{"id":"Cook Islands","value":0.8,"adj_value":1.24416},{"id":"Tokelau","value":6.1,"adj_value":9.48672},{"id":"Niue","value":0.1,"adj_value":0.15552},{"id":"Samoa","value":0.3,"adj_value":0.46656},{"id":"Solomon Islands","value":4.3,"adj_value":6.68736},{"id":"Vanuatu","value":0,"adj_value":0},{"id":"Pitcairn Islands","value":0,"adj_value":0},{"id":"Kiribati","value":1.4,"adj_value":2.17728},{"id":"Tuvalu","value":0,"adj_value":0},{"id":"New Caledonia","value":40.2,"adj_value":62.51904},{"id":"Wallis and Futuna","value":0,"adj_value":0},{"id":"French Polynesia","value":14.4,"adj_value":22.39488},{"id":"Marshall Islands","value":11.1,"adj_value":17.26272},{"id":"Micronesia","value":13.2,"adj_value":20.52864},{"id":"Palau","value":5.8,"adj_value":9.02016},{"id":"Nauru","value":0,"adj_value":0},{"id":"Fiji","value":78.1,"adj_value":121.46112},{"id":"Tonga","value":6.2,"adj_value":9.64224}]},{"id":"Africa","children":[{"id":"Morocco","value":239.4,"adj_value":372.31488},{"id":"Algeria","value":1749.5,"adj_value":2720.8224},{"id":"Tunisia","value":70.4,"adj_value":109.48608},{"id":"Libya","value":0,"adj_value":0},{"id":"Egypt","value":606.3,"adj_value":942.91776},{"id":"Sudan","value":22.6,"adj_value":35.14752},{"id":"Western Sahara","value":0,"adj_value":0},{"id":"Equatorial Guinea","value":31,"adj_value":48.2112},{"id":"Mauritania","value":5.4,"adj_value":8.39808},{"id":"Cameroon","value":57.3,"adj_value":89.11296},{"id":"Senegal","value":4.9,"adj_value":7.62048},{"id":"Mali","value":3.6,"adj_value":5.59872},{"id":"Guinea","value":98.8,"adj_value":153.65376},{"id":"Sierra Leone","value":28.4,"adj_value":44.16768},{"id":"Cote d'Ivoire","value":214.1,"adj_value":332.96832},{"id":"Ghana","value":196.1,"adj_value":304.97472},{"id":"Gambia","value":2.2,"adj_value":3.42144},{"id":"Niger","value":1.4,"adj_value":2.17728},{"id":"Togo","value":3.3,"adj_value":5.13216},{"id":"Nigeria","value":4930.5,"adj_value":7667.9136},{"id":"Central African Republic","value":0.4,"adj_value":0.62208},{"id":"Gabon","value":1463.9,"adj_value":2276.65728},{"id":"Chad","value":3.3,"adj_value":5.13216},{"id":"St Helena","value":0,"adj_value":0},{"id":"Burkina Faso","value":0.4,"adj_value":0.62208},{"id":"Benin","value":10,"adj_value":15.552},{"id":"Angola","value":2232.3,"adj_value":3471.67296},{"id":"Congo (Brazzaville)","value":206.8,"adj_value":321.61536},{"id":"Guinea-Bissau","value":0,"adj_value":0},{"id":"Cabo Verde","value":0.2,"adj_value":0.31104},{"id":"Sao Tome and Principe","value":0.1,"adj_value":0.15552},{"id":"Liberia","value":9.9,"adj_value":15.39648},{"id":"Congo (Kinshasa)","value":267,"adj_value":415.2384},{"id":"Burundi","value":20.5,"adj_value":31.8816},{"id":"Rwanda","value":1.8,"adj_value":2.79936},{"id":"Somalia","value":0,"adj_value":0},{"id":"Ethiopia","value":0,"adj_value":0},{"id":"Eritrea","value":0.4,"adj_value":0.62208},{"id":"Ethiopia","value":32.9,"adj_value":51.16608},{"id":"Djibouti","value":0,"adj_value":0},{"id":"Uganda","value":13.4,"adj_value":20.83968},{"id":"Kenya","value":101.5,"adj_value":157.8528},{"id":"Seychelles","value":2.5,"adj_value":3.888},{"id":"British Indian Ocean Terr.","value":1.9,"adj_value":2.95488},{"id":"Tanzania","value":22.4,"adj_value":34.83648},{"id":"Mauritius","value":229.5,"adj_value":356.9184},{"id":"Mozambique","value":27.5,"adj_value":42.768},{"id":"Madagascar","value":57.4,"adj_value":89.26848},{"id":"Comoros","value":2.2,"adj_value":3.42144},{"id":"Reunion","value":0.4,"adj_value":0.62208},{"id":"French Southern and Antarctic","value":0.4,"adj_value":0.62208},{"id":"South Africa","value":2208,"adj_value":3433.8816},{"id":"Namibia","value":11.5,"adj_value":17.8848},{"id":"Botswana","value":21.3,"adj_value":33.12576},{"id":"Zambia","value":32.8,"adj_value":51.01056},{"id":"Swaziland","value":32.4,"adj_value":50.38848},{"id":"Zimbabwe","value":97.5,"adj_value":151.632},{"id":"Malawi","value":41.1,"adj_value":63.91872},{"id":"Lesotho","value":62.3,"adj_value":96.88896}]}]},{"id":"Exports","children":[{"id":"North America","children":[{"id":"Greenland","value":2.4,"adj_value":3.73248},{"id":"Canada","value":127226,"adj_value":197861.8752},{"id":"St Pierre and Miquelon","value":0.5,"adj_value":0.7776},{"id":"Mexico","value":46292.1,"adj_value":71993.47392},{"id":"Guatemala","value":1646.6,"adj_value":2560.79232},{"id":"Belize","value":99.7,"adj_value":155.05344},{"id":"El Salvador","value":1110.4,"adj_value":1726.89408},{"id":"Honduras","value":1278.9,"adj_value":1988.94528},{"id":"Nicaragua","value":249.8,"adj_value":388.48896},{"id":"Costa Rica","value":1736.6,"adj_value":2700.76032},{"id":"Panama","value":1389.6,"adj_value":2161.10592},{"id":"Bermuda","value":298.5,"adj_value":464.2272},{"id":"Bahamas","value":661.2,"adj_value":1028.29824},{"id":"Cuba","value":5.4,"adj_value":8.39808},{"id":"Jamaica","value":1420.2,"adj_value":2208.69504},{"id":"Turks and Caicos Islands","value":33.6,"adj_value":52.25472},{"id":"Cayman Islands","value":180.1,"adj_value":280.09152},{"id":"Haiti","value":550.1,"adj_value":855.51552},{"id":"Dominican Republic","value":3014.9,"adj_value":4688.77248},{"id":"Anguilla","value":14.6,"adj_value":22.70592},{"id":"British Virgin Islands","value":49.2,"adj_value":76.51584},{"id":"St Kitts and Nevis","value":43.6,"adj_value":67.80672},{"id":"Antigua and Barbuda","value":97,"adj_value":150.8544},{"id":"Montserrat","value":4.4,"adj_value":6.84288},{"id":"Dominica","value":26.6,"adj_value":41.36832},{"id":"St Lucia","value":80.8,"adj_value":125.66016},{"id":"St Vincent and the Grenadines","value":42.2,"adj_value":65.62944},{"id":"Grenada","value":26.9,"adj_value":41.83488},{"id":"Barbados","value":185.6,"adj_value":288.64512},{"id":"Trinidad and Tobago","value":689.2,"adj_value":1071.84384},{"id":"Netherlands Antilles","value":503.9,"adj_value":783.66528},{"id":"Aruba","value":247.6,"adj_value":385.06752},{"id":"Guadeloupe","value":69.1,"adj_value":107.46432},{"id":"Martinique","value":38.5,"adj_value":59.8752}]},{"id":"South America","children":[{"id":"Colombia","value":4624.4,"adj_value":7191.86688},{"id":"Venezuela","value":4640.4,"adj_value":7216.75008},{"id":"Guyana","value":141.3,"adj_value":219.74976},{"id":"Suriname","value":189.7,"adj_value":295.02144},{"id":"French Guiana","value":441.8,"adj_value":687.08736},{"id":"Ecuador","value":1538.3,"adj_value":2392.36416},{"id":"Peru","value":1775.4,"adj_value":2761.10208},{"id":"Bolivia","value":213.5,"adj_value":332.0352},{"id":"Chile","value":3614.7,"adj_value":5621.58144},{"id":"Brazil","value":11439.4,"adj_value":17790.55488},{"id":"Paraguay","value":992.4,"adj_value":1543.38048},{"id":"Uruguay","value":395.8,"adj_value":615.54816},{"id":"Argentina","value":4189.2,"adj_value":6515.04384},{"id":"Falkland Islands(Islas Malvin","value":0.3,"adj_value":0.46656}]},{"id":"Europe","children":[{"id":"Iceland","value":170.5,"adj_value":265.1616},{"id":"Sweden","value":3079.7,"adj_value":4789.54944},{"id":"Svalbard, Jan Mayen Island","value":1.1,"adj_value":1.71072},{"id":"Norway","value":1292.9,"adj_value":2010.71808},{"id":"Finland","value":1249.7,"adj_value":1943.53344},{"id":"Faroe Islands","value":0.4,"adj_value":0.62208},{"id":"Denmark","value":1517.7,"adj_value":2360.32704},{"id":"United Kingdom","value":28856.5,"adj_value":44877.6288},{"id":"Ireland","value":4108.7,"adj_value":6389.85024},{"id":"Netherlands","value":16557.6,"adj_value":25750.37952},{"id":"Belgium","value":12465.6,"adj_value":19386.50112},{"id":"Luxembourg","value":374.2,"adj_value":581.95584},{"id":"Andorra","value":16.5,"adj_value":25.6608},{"id":"Monaco","value":9.6,"adj_value":14.92992},{"id":"France","value":14245.2,"adj_value":22154.13504},{"id":"Germany","value":22394.3,"adj_value":34827.61536},{"id":"Austria","value":2017,"adj_value":3136.8384},{"id":"Czechoslovakia","value":0,"adj_value":0},{"id":"Czech Republic","value":362.8,"adj_value":564.22656},{"id":"Slovakia","value":61,"adj_value":94.8672},{"id":"Hungary","value":295.2,"adj_value":459.09504},{"id":"Liechtenstein","value":15.1,"adj_value":23.48352},{"id":"Switzerland","value":6227.4,"adj_value":9684.85248},{"id":"Estonia","value":139.1,"adj_value":216.32832},{"id":"Latvia","value":89.5,"adj_value":139.1904},{"id":"Lithuania","value":52.2,"adj_value":81.18144},{"id":"Poland","value":776.1,"adj_value":1206.99072},{"id":"USSR","value":0,"adj_value":0},{"id":"Russia","value":2823.4,"adj_value":4390.95168},{"id":"Belarus","value":47.9,"adj_value":74.49408},{"id":"Ukraine","value":223.4,"adj_value":347.43168},{"id":"Armenia","value":70.3,"adj_value":109.33056},{"id":"Azerbaijan","value":35.6,"adj_value":55.36512},{"id":"Georgia","value":95.2,"adj_value":148.05504},{"id":"Kazakhstan","value":80.9,"adj_value":125.81568},{"id":"Kyrgyzstan","value":24.6,"adj_value":38.25792},{"id":"Moldova","value":10.2,"adj_value":15.86304},{"id":"Tajikistan","value":17.6,"adj_value":27.37152},{"id":"Turkmenistan","value":34.3,"adj_value":53.34336},{"id":"Uzbekistan","value":63.4,"adj_value":98.59968},{"id":"Spain","value":5526,"adj_value":8594.0352},{"id":"Portugal","value":898.1,"adj_value":1396.72512},{"id":"Gibraltar","value":18.4,"adj_value":28.61568},{"id":"Malta","value":106.7,"adj_value":165.93984},{"id":"San Marino","value":5.7,"adj_value":8.86464},{"id":"Vatican City","value":0.3,"adj_value":0.46656},{"id":"Italy","value":8861.6,"adj_value":13781.56032},{"id":"Yugoslavia (former)","value":0,"adj_value":0},{"id":"Croatia","value":140,"adj_value":217.728},{"id":"Slovenia","value":109.6,"adj_value":170.44992},{"id":"Bosnia and Herzegovina","value":28.3,"adj_value":44.01216},{"id":"Macedonia","value":21.2,"adj_value":32.97024},{"id":"Serbia and Montenegro","value":2.1,"adj_value":3.26592},{"id":"Albania","value":13.5,"adj_value":20.9952},{"id":"Greece","value":1518.7,"adj_value":2361.88224},{"id":"Romania","value":253.2,"adj_value":393.77664},{"id":"Bulgaria","value":131.8,"adj_value":204.97536}]},{"id":"Asia","children":[{"id":"Turkey","value":2768,"adj_value":4304.7936},{"id":"Cyprus","value":257.8,"adj_value":400.93056},{"id":"Syria","value":223.4,"adj_value":347.43168},{"id":"Lebanon","value":592.2,"adj_value":920.98944},{"id":"Iraq","value":0.2,"adj_value":0.31104},{"id":"Iran","value":277.4,"adj_value":431.41248},{"id":"Israel","value":0,"adj_value":0},{"id":"Israel","value":5621,"adj_value":8741.7792},{"id":"Gaza Strip admin. by Israel","value":0.1,"adj_value":0.15552},{"id":"West Bank admin. by Israel","value":0.3,"adj_value":0.46656},{"id":"Jordan","value":335.3,"adj_value":521.45856},{"id":"Kuwait","value":1437.4,"adj_value":2235.44448},{"id":"Iraq-Saudi Arabia Neutral Zone","value":0,"adj_value":0},{"id":"Saudi Arabia","value":6155,"adj_value":9572.256},{"id":"Qatar","value":226,"adj_value":351.4752},{"id":"United Arab Emirates","value":2006.3,"adj_value":3120.19776},{"id":"Republic of Yemen","value":185.3,"adj_value":288.17856},{"id":"Oman","value":222,"adj_value":345.2544},{"id":"Bahrain","value":255.1,"adj_value":396.73152},{"id":"Afghanistan","value":4,"adj_value":6.2208},{"id":"India","value":3295.8,"adj_value":5125.62816},{"id":"Pakistan","value":941.3,"adj_value":1463.90976},{"id":"Nepal","value":9.8,"adj_value":15.24096},{"id":"Bangladesh","value":325,"adj_value":505.44},{"id":"Sri Lanka","value":279.1,"adj_value":434.05632},{"id":"Burma","value":16.2,"adj_value":25.19424},{"id":"Thailand","value":6665,"adj_value":10365.408},{"id":"Vietnam","value":252.3,"adj_value":392.37696},{"id":"Laos","value":1.6,"adj_value":2.48832},{"id":"Cambodia","value":26.9,"adj_value":41.83488},{"id":"Malaysia","value":8816.1,"adj_value":13710.79872},{"id":"Singapore","value":15333,"adj_value":23845.8816},{"id":"Indonesia","value":3359.6,"adj_value":5224.84992},{"id":"Brunei","value":190.1,"adj_value":295.64352},{"id":"Philippines","value":5294.8,"adj_value":8234.47296},{"id":"Macau","value":29.9,"adj_value":46.50048},{"id":"Bhutan","value":0.5,"adj_value":0.7776},{"id":"Maldives","value":1.1,"adj_value":1.71072},{"id":"China","value":11753.7,"adj_value":18279.35424},{"id":"Mongolia","value":13.9,"adj_value":21.61728},{"id":"Korea, North","value":11.6,"adj_value":18.04032},{"id":"Korea, South","value":25379.9,"adj_value":39470.82048},{"id":"Hong Kong","value":14231.5,"adj_value":22132.8288},{"id":"Taiwan","value":19289.6,"adj_value":29999.18592},{"id":"Japan","value":64342.7,"adj_value":100065.767}]},{"id":"Australia","children":[{"id":"Australia","value":10789.1,"adj_value":16779.20832},{"id":"Norfolk Island","value":1.2,"adj_value":1.86624},{"id":"Cocos (Keeling) Islands","value":0.5,"adj_value":0.7776},{"id":"Christmas Island","value":4.5,"adj_value":6.9984},{"id":"Heard and McDonald Islands","value":0,"adj_value":0},{"id":"Papua New Guinea","value":50.8,"adj_value":79.00416},{"id":"New Zealand","value":1691.3,"adj_value":2630.30976},{"id":"Cook Islands","value":0.9,"adj_value":1.39968},{"id":"Tokelau","value":0.1,"adj_value":0.15552},{"id":"Niue","value":31.5,"adj_value":48.9888},{"id":"Samoa","value":7.3,"adj_value":11.35296},{"id":"Solomon Islands","value":2.7,"adj_value":4.19904},{"id":"Vanuatu","value":1.1,"adj_value":1.71072},{"id":"Pitcairn Islands","value":2.2,"adj_value":3.42144},{"id":"Kiribati","value":2.3,"adj_value":3.57696},{"id":"Tuvalu","value":0.3,"adj_value":0.46656},{"id":"New Caledonia","value":22.3,"adj_value":34.68096},{"id":"Wallis and Futuna","value":0,"adj_value":0},{"id":"French Polynesia","value":82.3,"adj_value":127.99296},{"id":"Marshall Islands","value":31.8,"adj_value":49.45536},{"id":"Micronesia","value":23.3,"adj_value":36.23616},{"id":"Palau","value":8.3,"adj_value":12.90816},{"id":"Nauru","value":0.5,"adj_value":0.7776},{"id":"Fiji","value":31.8,"adj_value":49.45536},{"id":"Tonga","value":7.5,"adj_value":11.664}]},{"id":"Africa","children":[{"id":"Morocco","value":517.4,"adj_value":804.66048},{"id":"Algeria","value":774.1,"adj_value":1203.88032},{"id":"Tunisia","value":214.9,"adj_value":334.21248},{"id":"Libya","value":0,"adj_value":0},{"id":"Egypt","value":2985.1,"adj_value":4642.42752},{"id":"Sudan","value":43.5,"adj_value":67.6512},{"id":"Western Sahara","value":0,"adj_value":0},{"id":"Equatorial Guinea","value":5.2,"adj_value":8.08704},{"id":"Mauritania","value":43.2,"adj_value":67.18464},{"id":"Cameroon","value":45.6,"adj_value":70.91712},{"id":"Senegal","value":67.9,"adj_value":105.59808},{"id":"Mali","value":23.1,"adj_value":35.92512},{"id":"Guinea","value":66.5,"adj_value":103.4208},{"id":"Sierra Leone","value":18.1,"adj_value":28.14912},{"id":"Cote d'Ivoire","value":173.3,"adj_value":269.51616},{"id":"Ghana","value":167.2,"adj_value":260.02944},{"id":"Gambia","value":6.1,"adj_value":9.48672},{"id":"Niger","value":39.6,"adj_value":61.58592},{"id":"Togo","value":18.5,"adj_value":28.7712},{"id":"Nigeria","value":602.9,"adj_value":937.63008},{"id":"Central African Republic","value":6.3,"adj_value":9.79776},{"id":"Gabon","value":54.5,"adj_value":84.7584},{"id":"Chad","value":10.8,"adj_value":16.79616},{"id":"St Helena","value":0.3,"adj_value":0.46656},{"id":"Burkina Faso","value":14.7,"adj_value":22.86144},{"id":"Benin","value":34,"adj_value":52.8768},{"id":"Angola","value":259.7,"adj_value":403.88544},{"id":"Congo (Brazzaville)","value":54.8,"adj_value":85.22496},{"id":"Guinea-Bissau","value":0.8,"adj_value":1.24416},{"id":"Cabo Verde","value":7.5,"adj_value":11.664},{"id":"Sao Tome and Principe","value":1.8,"adj_value":2.79936},{"id":"Liberia","value":41.7,"adj_value":64.85184},{"id":"Congo (Kinshasa)","value":77.1,"adj_value":119.90592},{"id":"Burundi","value":2.9,"adj_value":4.51008},{"id":"Rwanda","value":38.3,"adj_value":59.56416},{"id":"Somalia","value":8.1,"adj_value":12.59712},{"id":"Ethiopia","value":0,"adj_value":0},{"id":"Eritrea","value":16.5,"adj_value":25.6608},{"id":"Ethiopia","value":147.7,"adj_value":229.70304},{"id":"Djibouti","value":8.5,"adj_value":13.2192},{"id":"Uganda","value":22.1,"adj_value":34.36992},{"id":"Kenya","value":114,"adj_value":177.2928},{"id":"Seychelles","value":7.2,"adj_value":11.19744},{"id":"British Indian Ocean Terr.","value":1.8,"adj_value":2.79936},{"id":"Tanzania","value":66.2,"adj_value":102.95424},{"id":"Mauritius","value":24.6,"adj_value":38.25792},{"id":"Mozambique","value":49.3,"adj_value":76.67136},{"id":"Madagascar","value":9.8,"adj_value":15.24096},{"id":"Comoros","value":0.6,"adj_value":0.93312},{"id":"Reunion","value":3.7,"adj_value":5.75424},{"id":"French Southern and Antarctic","value":0,"adj_value":0},{"id":"South Africa","value":2750.5,"adj_value":4277.5776},{"id":"Namibia","value":26.5,"adj_value":41.2128},{"id":"Botswana","value":35.7,"adj_value":55.52064},{"id":"Zambia","value":48.9,"adj_value":76.04928},{"id":"Swaziland","value":3.2,"adj_value":4.97664},{"id":"Zimbabwe","value":122.1,"adj_value":189.88992},{"id":"Malawi","value":17.8,"adj_value":27.68256},{"id":"Lesotho","value":1.8,"adj_value":2.79936}]}]}]},{"id":"2005","children":[{"id":"Imports","children":[{"id":"North America","children":[{"id":"Greenland","value":17.255599,"adj_value":20.94139495},{"id":"Canada","value":290384.2932,"adj_value":352410.3782},{"id":"St Pierre and Miquelon","value":1.094378,"adj_value":1.328137141},{"id":"Mexico","value":170108.6141,"adj_value":206443.8141},{"id":"Guatemala","value":3137.382263,"adj_value":3807.527114},{"id":"Belize","value":98.265102,"adj_value":119.2545278},{"id":"El Salvador","value":1988.765718,"adj_value":2413.566075},{"id":"Honduras","value":3749.243099,"adj_value":4550.081425},{"id":"Nicaragua","value":1180.787602,"adj_value":1433.003834},{"id":"Costa Rica","value":3415.279262,"adj_value":4144.782912},{"id":"Panama","value":327.060069,"adj_value":396.9200997},{"id":"Bermuda","value":87.276753,"adj_value":105.9190674},{"id":"Bahamas","value":699.936003,"adj_value":849.4423332},{"id":"Cuba","value":0.009079,"adj_value":0.011018274},{"id":"Jamaica","value":375.57236,"adj_value":455.7946161},{"id":"Turks and Caicos Islands","value":9.434412,"adj_value":11.4496024},{"id":"Cayman Islands","value":53.497875,"adj_value":64.9250211},{"id":"Haiti","value":447.217315,"adj_value":542.7429335},{"id":"Dominican Republic","value":4603.684143,"adj_value":5587.031076},{"id":"Anguilla","value":3.754737,"adj_value":4.556748823},{"id":"British Virgin Islands","value":33.579607,"adj_value":40.75221106},{"id":"St Kitts and Nevis","value":49.718541,"adj_value":60.33842136},{"id":"Antigua and Barbuda","value":4.414365,"adj_value":5.357273364},{"id":"Montserrat","value":0.953906,"adj_value":1.157660322},{"id":"Dominica","value":3.344243,"adj_value":4.058573305},{"id":"St Lucia","value":32.396909,"adj_value":39.31688876},{"id":"St Vincent and the Grenadines","value":15.650342,"adj_value":18.99325505},{"id":"Grenada","value":5.852881,"adj_value":7.103056382},{"id":"Barbados","value":31.903789,"adj_value":38.71843833},{"id":"Trinidad and Tobago","value":7890.88378,"adj_value":9576.376555},{"id":"Netherlands Antilles","value":922.413941,"adj_value":1119.441559},{"id":"Aruba","value":2919.735672,"adj_value":3543.391212},{"id":"Guadeloupe","value":2.128806,"adj_value":2.583518962},{"id":"Martinique","value":22.236488,"adj_value":26.98620184}]},{"id":"South America","children":[{"id":"Colombia","value":8849.380048,"adj_value":10739.60763},{"id":"Venezuela","value":33978.13481,"adj_value":41235.8644},{"id":"Guyana","value":119.931261,"adj_value":145.5485783},{"id":"Suriname","value":165.346376,"adj_value":200.6643619},{"id":"French Guiana","value":0.121285,"adj_value":0.147191476},{"id":"Ecuador","value":5758.679346,"adj_value":6988.733254},{"id":"Peru","value":5119.15577,"adj_value":6212.607442},{"id":"Bolivia","value":293.216045,"adj_value":355.8469922},{"id":"Chile","value":6664.333836,"adj_value":8087.835543},{"id":"Brazil","value":24435.51938,"adj_value":29654.94632},{"id":"Paraguay","value":51.645596,"adj_value":62.67709531},{"id":"Uruguay","value":732.311644,"adj_value":888.7334112},{"id":"Argentina","value":4583.613305,"adj_value":5562.673107},{"id":"Falkland Islands(Islas Malvin","value":9.261546,"adj_value":11.23981223}]},{"id":"Europe","children":[{"id":"Iceland","value":268.97508,"adj_value":326.4281571},{"id":"Sweden","value":13820.97724,"adj_value":16773.13798},{"id":"Svalbard, Jan Mayen Island","value":0.039576,"adj_value":0.048029434},{"id":"Norway","value":6776.30892,"adj_value":8223.728505},{"id":"Finland","value":4341.679942,"adj_value":5269.062778},{"id":"Faroe Islands","value":4.276273,"adj_value":5.189684913},{"id":"Denmark","value":5144.20165,"adj_value":6243.003122},{"id":"United Kingdom","value":51032.62111,"adj_value":61933.18897},{"id":"Ireland","value":28733.08026,"adj_value":34870.4662},{"id":"Netherlands","value":14862.04151,"adj_value":18036.57358},{"id":"Belgium","value":13022.90274,"adj_value":15804.59477},{"id":"Luxembourg","value":388.834493,"adj_value":471.8895407},{"id":"Andorra","value":0.673148,"adj_value":0.816932413},{"id":"Monaco","value":37.485881,"adj_value":45.49286518},{"id":"France","value":33842.05751,"adj_value":41070.721},{"id":"Germany","value":84750.87138,"adj_value":102853.6575},{"id":"Austria","value":6102.944725,"adj_value":7406.533718},{"id":"Czech Republic","value":2192.863031,"adj_value":2661.258574},{"id":"Slovakia","value":960.730063,"adj_value":1165.942004},{"id":"Hungary","value":2561.172978,"adj_value":3108.239526},{"id":"Liechtenstein","value":295.705721,"adj_value":358.868463},{"id":"Switzerland","value":12999.88108,"adj_value":15776.65568},{"id":"Estonia","value":511.379949,"adj_value":620.6107061},{"id":"Latvia","value":362.159252,"adj_value":439.5164682},{"id":"Lithuania","value":633.912046,"adj_value":769.315659},{"id":"Poland","value":1948.58625,"adj_value":2364.804273},{"id":"Russia","value":15306.67384,"adj_value":18576.17937},{"id":"Belarus","value":345.161433,"adj_value":418.8879151},{"id":"Ukraine","value":1098.029235,"adj_value":1332.56828},{"id":"Armenia","value":46.191425,"adj_value":56.05791338},{"id":"Azerbaijan","value":45.361225,"adj_value":55.05038266},{"id":"Georgia","value":194.384289,"adj_value":235.9047731},{"id":"Kazakhstan","value":1101.145431,"adj_value":1336.350095},{"id":"Kyrgyzstan","value":4.618689,"adj_value":5.60524097},{"id":"Moldova","value":50.224656,"adj_value":60.95264252},{"id":"Tajikistan","value":241.029155,"adj_value":292.5129825},{"id":"Turkmenistan","value":135.325351,"adj_value":164.230846},{"id":"Uzbekistan","value":95.627811,"adj_value":116.0539114},{"id":"Spain","value":8614.64214,"adj_value":10454.7297},{"id":"Portugal","value":2328.674933,"adj_value":2826.079899},{"id":"Gibraltar","value":4.637081,"adj_value":5.627561502},{"id":"Malta","value":282.653662,"adj_value":343.0284842},{"id":"San Marino","value":1.389972,"adj_value":1.686870019},{"id":"Vatican City","value":0.282286,"adj_value":0.34258229},{"id":"Italy","value":31009.26008,"adj_value":37632.83803},{"id":"Croatia","value":364.277603,"adj_value":442.087299},{"id":"Slovenia","value":413.019469,"adj_value":501.2404276},{"id":"Bosnia and Herzegovina","value":70.462111,"adj_value":85.51281791},{"id":"Macedonia","value":48.149502,"adj_value":58.43423563},{"id":"Serbia and Montenegro","value":54.632827,"adj_value":66.30239885},{"id":"Albania","value":37.18875,"adj_value":45.132267},{"id":"Greece","value":883.73016,"adj_value":1072.494922},{"id":"Romania","value":1207.584718,"adj_value":1465.524814},{"id":"Bulgaria","value":454.262612,"adj_value":551.2931059}]},{"id":"Asia","children":[{"id":"Turkey","value":5182.052179,"adj_value":6288.938524},{"id":"Cyprus","value":30.536194,"adj_value":37.05872504},{"id":"Syria","value":323.599119,"adj_value":392.7198908},{"id":"Lebanon","value":86.370988,"adj_value":104.819831},{"id":"Iraq","value":9053.695686,"adj_value":10987.56508},{"id":"Iran","value":174.457417,"adj_value":211.7215213},{"id":"Israel","value":16830.46608,"adj_value":20425.45364},{"id":"Gaza Strip admin. by Israel","value":1.443661,"adj_value":1.75202699},{"id":"West Bank admin. by Israel","value":1.604198,"adj_value":1.946854693},{"id":"Jordan","value":1266.84986,"adj_value":1537.44899},{"id":"Kuwait","value":4334.781445,"adj_value":5260.690762},{"id":"Saudi Arabia","value":27192.64204,"adj_value":33000.99038},{"id":"Qatar","value":447.861094,"adj_value":543.5242237},{"id":"United Arab Emirates","value":1468.316627,"adj_value":1781.949059},{"id":"Republic of Yemen","value":278.635079,"adj_value":338.1515319},{"id":"Oman","value":555.043525,"adj_value":673.6008219},{"id":"Bahrain","value":431.61192,"adj_value":523.8042261},{"id":"Afghanistan","value":67.310191,"adj_value":81.6876478},{"id":"India","value":18804.16965,"adj_value":22820.74029},{"id":"Pakistan","value":3253.181975,"adj_value":3948.061645},{"id":"Nepal","value":111.212077,"adj_value":134.9669766},{"id":"Bangladesh","value":2693.035035,"adj_value":3268.267318},{"id":"Sri Lanka","value":2082.938898,"adj_value":2527.854647},{"id":"Burma","value":0.0615,"adj_value":0.0746364},{"id":"Thailand","value":19889.75578,"adj_value":24138.20761},{"id":"Vietnam","value":6631.158734,"adj_value":8047.57424},{"id":"Laos","value":4.166156,"adj_value":5.056046922},{"id":"Cambodia","value":1766.956953,"adj_value":2144.378958},{"id":"Malaysia","value":33685.15957,"adj_value":40880.30965},{"id":"Singapore","value":15110.08962,"adj_value":18337.60477},{"id":"Indonesia","value":12014.34419,"adj_value":14580.6081},{"id":"East Timor","value":0.084963,"adj_value":0.103111097},{"id":"Brunei","value":562.742346,"adj_value":682.9441111},{"id":"Philippines","value":9250.433389,"adj_value":11226.32596},{"id":"Macau","value":1249.02212,"adj_value":1515.813245},{"id":"Bhutan","value":0.615516,"adj_value":0.746990218},{"id":"Maldives","value":5.496456,"adj_value":6.670499002},{"id":"China","value":243470.1048,"adj_value":295475.3192},{"id":"Mongolia","value":143.645404,"adj_value":174.3280623},{"id":"Korea, North","value":0.003252,"adj_value":0.003946627},{"id":"Korea, South","value":43781.44106,"adj_value":53133.15687},{"id":"Hong Kong","value":8891.705575,"adj_value":10790.97389},{"id":"Taiwan","value":34825.82882,"adj_value":42264.62586},{"id":"Japan","value":138003.6962,"adj_value":167481.2857}]},{"id":"Australia","children":[{"id":"Australia","value":7342.17895,"adj_value":8910.468374},{"id":"Norfolk Island","value":0.17315,"adj_value":0.21013484},{"id":"Cocos (Keeling) Islands","value":0.484315,"adj_value":0.587764684},{"id":"Christmas Island","value":0.417613,"adj_value":0.506815137},{"id":"Heard and McDonald Islands","value":0.016396,"adj_value":0.019898186},{"id":"Papua New Guinea","value":58.451246,"adj_value":70.93643215},{"id":"New Zealand","value":3155.239797,"adj_value":3829.199018},{"id":"Cook Islands","value":1.744825,"adj_value":2.11751962},{"id":"Tokelau","value":10.800762,"adj_value":13.10780476},{"id":"Niue","value":0.138878,"adj_value":0.168542341},{"id":"Samoa","value":7.937575,"adj_value":9.63304102},{"id":"Solomon Islands","value":1.351564,"adj_value":1.64025807},{"id":"Vanuatu","value":2.489141,"adj_value":3.020821518},{"id":"Pitcairn Islands","value":1.040512,"adj_value":1.262765363},{"id":"Kiribati","value":1.104581,"adj_value":1.340519502},{"id":"Tuvalu","value":0.056868,"adj_value":0.069015005},{"id":"New Caledonia","value":27.174251,"adj_value":32.97867101},{"id":"Wallis and Futuna","value":0.022469,"adj_value":0.027268378},{"id":"French Polynesia","value":60.124235,"adj_value":72.9667716},{"id":"Marshall Islands","value":17.205126,"adj_value":20.88014091},{"id":"Micronesia","value":1.557731,"adj_value":1.890462342},{"id":"Palau","value":0.484544,"adj_value":0.588042598},{"id":"Nauru","value":0.148786,"adj_value":0.18056669},{"id":"Fiji","value":169.460711,"adj_value":205.6575189},{"id":"Tonga","value":5.350431,"adj_value":6.493283062}]},{"id":"Africa","children":[{"id":"Morocco","value":445.793996,"adj_value":541.0155935},{"id":"Algeria","value":10446.43785,"adj_value":12677.79698},{"id":"Tunisia","value":263.768113,"adj_value":320.1089819},{"id":"Libya","value":1590.341099,"adj_value":1930.037958},{"id":"Egypt","value":2091.236887,"adj_value":2537.925086},{"id":"Sudan","value":13.574271,"adj_value":16.47373529},{"id":"Western Sahara","value":0,"adj_value":0},{"id":"Equatorial Guinea","value":1561.137497,"adj_value":1894.596466},{"id":"Mauritania","value":0.825319,"adj_value":1.001607138},{"id":"Cameroon","value":158.161864,"adj_value":191.9452382},{"id":"Senegal","value":3.662962,"adj_value":4.445370683},{"id":"Mali","value":3.649953,"adj_value":4.429582961},{"id":"Guinea","value":74.733573,"adj_value":90.69666419},{"id":"Sierra Leone","value":9.312822,"adj_value":11.30204078},{"id":"Cote d'Ivoire","value":1197.97516,"adj_value":1453.862654},{"id":"Ghana","value":158.409617,"adj_value":192.2459112},{"id":"Gambia","value":0.427153,"adj_value":0.518392881},{"id":"Niger","value":65.51339,"adj_value":79.5070501},{"id":"Togo","value":6.439273,"adj_value":7.814701713},{"id":"Nigeria","value":24239.35673,"adj_value":29416.88333},{"id":"Central African Republic","value":5.696947,"adj_value":6.913814879},{"id":"Gabon","value":2815.602273,"adj_value":3417.014919},{"id":"Chad","value":1498.086294,"adj_value":1818.077526},{"id":"St Helena","value":3.269267,"adj_value":3.967582431},{"id":"Burkina Faso","value":2.084203,"adj_value":2.529388761},{"id":"Benin","value":0.513184,"adj_value":0.622800102},{"id":"Angola","value":8484.361601,"adj_value":10296.62124},{"id":"Congo (Brazzaville)","value":1622.90154,"adj_value":1969.553309},{"id":"Guinea-Bissau","value":0.120677,"adj_value":0.146453607},{"id":"Cabo Verde","value":2.62425,"adj_value":3.1847898},{"id":"Sao Tome and Principe","value":0.216017,"adj_value":0.262158231},{"id":"Liberia","value":90.827263,"adj_value":110.2279664},{"id":"Congo (Kinshasa)","value":263.558216,"adj_value":319.8542509},{"id":"Burundi","value":4.423229,"adj_value":5.368030714},{"id":"Rwanda","value":6.301468,"adj_value":7.647461565},{"id":"Somalia","value":0.307638,"adj_value":0.373349477},{"id":"Eritrea","value":1.269401,"adj_value":1.540545054},{"id":"Ethiopia","value":61.802253,"adj_value":75.00321424},{"id":"Djibouti","value":1.101206,"adj_value":1.336423602},{"id":"Uganda","value":25.769069,"adj_value":31.27334214},{"id":"Kenya","value":348.019269,"adj_value":422.3561849},{"id":"Seychelles","value":5.883749,"adj_value":7.140517786},{"id":"British Indian Ocean Terr.","value":0.432984,"adj_value":0.525469382},{"id":"Tanzania","value":33.695475,"adj_value":40.89282846},{"id":"Mauritius","value":221.85071,"adj_value":269.2380217},{"id":"Mozambique","value":11.905754,"adj_value":14.44882305},{"id":"Madagascar","value":323.631165,"adj_value":392.7587818},{"id":"Comoros","value":1.447044,"adj_value":1.756132598},{"id":"Reunion","value":5.835528,"adj_value":7.081996781},{"id":"French Southern and Antarctic","value":0.05164,"adj_value":0.062670304},{"id":"South Africa","value":5885.639948,"adj_value":7142.812641},{"id":"Namibia","value":129.590672,"adj_value":157.2712395},{"id":"Botswana","value":178.164424,"adj_value":216.220345},{"id":"Zambia","value":31.70289,"adj_value":38.4746273},{"id":"Swaziland","value":198.886296,"adj_value":241.3684088},{"id":"Zimbabwe","value":94.328983,"adj_value":114.4776538},{"id":"Malawi","value":115.50192,"adj_value":140.1731301},{"id":"Lesotho","value":403.608048,"adj_value":489.8187271}]}]},{"id":"Exports","children":[{"id":"North America","children":[{"id":"Greenland","value":5.085009,"adj_value":6.171166922},{"id":"Canada","value":211898.6894,"adj_value":257160.2494},{"id":"St Pierre and Miquelon","value":0.980031,"adj_value":1.189365622},{"id":"Mexico","value":120247.5801,"adj_value":145932.4633},{"id":"Guatemala","value":2835.38039,"adj_value":3441.017641},{"id":"Belize","value":217.562773,"adj_value":264.0341813},{"id":"El Salvador","value":1854.286657,"adj_value":2250.362287},{"id":"Honduras","value":3253.813808,"adj_value":3948.828437},{"id":"Nicaragua","value":625.460463,"adj_value":759.0588179},{"id":"Costa Rica","value":3598.560177,"adj_value":4367.212631},{"id":"Panama","value":2162.020485,"adj_value":2623.828061},{"id":"Bermuda","value":490.497944,"adj_value":595.2683048},{"id":"Bahamas","value":1786.740047,"adj_value":2168.387721},{"id":"Cuba","value":369.034678,"adj_value":447.8604852},{"id":"Jamaica","value":1700.769277,"adj_value":2064.053595},{"id":"Turks and Caicos Islands","value":237.752693,"adj_value":288.5366682},{"id":"Cayman Islands","value":680.670387,"adj_value":826.0615817},{"id":"Haiti","value":709.620597,"adj_value":861.1955565},{"id":"Dominican Republic","value":4718.733392,"adj_value":5726.654845},{"id":"Anguilla","value":32.186758,"adj_value":39.06184951},{"id":"British Virgin Islands","value":124.856685,"adj_value":151.5260729},{"id":"St Kitts and Nevis","value":94.069439,"adj_value":114.1626712},{"id":"Antigua and Barbuda","value":190.447421,"adj_value":231.1269901},{"id":"Montserrat","value":4.848606,"adj_value":5.884268242},{"id":"Dominica","value":61.540001,"adj_value":74.68494521},{"id":"St Lucia","value":135.389135,"adj_value":164.3082542},{"id":"St Vincent and the Grenadines","value":45.411401,"adj_value":55.11127625},{"id":"Grenada","value":82.440305,"adj_value":100.0495541},{"id":"Barbados","value":394.92009,"adj_value":479.2750212},{"id":"Trinidad and Tobago","value":1416.748479,"adj_value":1719.365954},{"id":"Netherlands Antilles","value":1137.633614,"adj_value":1380.632154},{"id":"Aruba","value":558.924451,"adj_value":678.3107137},{"id":"Guadeloupe","value":54.512655,"adj_value":66.15655811},{"id":"Martinique","value":34.95999,"adj_value":42.42744386}]},{"id":"South America","children":[{"id":"Colombia","value":5462.357164,"adj_value":6629.116654},{"id":"Venezuela","value":6420.897723,"adj_value":7792.401477},{"id":"Guyana","value":176.704601,"adj_value":214.4487038},{"id":"Suriname","value":245.701079,"adj_value":298.1828295},{"id":"French Guiana","value":26.993942,"adj_value":32.75984801},{"id":"Ecuador","value":1963.825872,"adj_value":2383.299078},{"id":"Peru","value":2309.446378,"adj_value":2802.744124},{"id":"Bolivia","value":219.479092,"adj_value":266.3598261},{"id":"Chile","value":5133.523351,"adj_value":6230.043939},{"id":"Brazil","value":15371.71785,"adj_value":18655.11678},{"id":"Paraguay","value":895.819607,"adj_value":1087.166675},{"id":"Uruguay","value":356.676188,"adj_value":432.8622218},{"id":"Argentina","value":4121.861182,"adj_value":5002.29073},{"id":"Falkland Islands(Islas Malvin","value":9.049418,"adj_value":10.98237368}]},{"id":"Europe","children":[{"id":"Iceland","value":512.019513,"adj_value":621.386881},{"id":"Sweden","value":3715.36862,"adj_value":4508.971357},{"id":"Svalbard, Jan Mayen Island","value":5.677609,"adj_value":6.890346282},{"id":"Norway","value":1941.882004,"adj_value":2356.668},{"id":"Finland","value":2254.052992,"adj_value":2735.518711},{"id":"Faroe Islands","value":2.528152,"adj_value":3.068165267},{"id":"Denmark","value":1918.423705,"adj_value":2328.199008},{"id":"United Kingdom","value":38568.08305,"adj_value":46806.22558},{"id":"Ireland","value":8446.771993,"adj_value":10251.00249},{"id":"Netherlands","value":26467.74458,"adj_value":32121.25482},{"id":"Belgium","value":18690.60657,"adj_value":22682.92013},{"id":"Luxembourg","value":711.38307,"adj_value":863.3344938},{"id":"Andorra","value":10.549473,"adj_value":12.80284043},{"id":"Monaco","value":16.776668,"adj_value":20.36016428},{"id":"France","value":22258.62805,"adj_value":27013.071},{"id":"Germany","value":34183.65627,"adj_value":41485.28525},{"id":"Austria","value":2544.481273,"adj_value":3087.982473},{"id":"Czech Republic","value":1053.557481,"adj_value":1278.597359},{"id":"Slovakia","value":149.800634,"adj_value":181.7980494},{"id":"Hungary","value":1023.258213,"adj_value":1241.826167},{"id":"Liechtenstein","value":19.7165,"adj_value":23.9279444},{"id":"Switzerland","value":10717.52806,"adj_value":13006.79206},{"id":"Estonia","value":145.425805,"adj_value":176.4887569},{"id":"Latvia","value":177.537085,"adj_value":215.4590064},{"id":"Lithuania","value":390.027824,"adj_value":473.3377672},{"id":"Poland","value":1267.748385,"adj_value":1538.53944},{"id":"Russia","value":3962.270261,"adj_value":4808.611189},{"id":"Belarus","value":34.942759,"adj_value":42.40653232},{"id":"Ukraine","value":532.954308,"adj_value":646.7933482},{"id":"Armenia","value":65.483218,"adj_value":79.47043336},{"id":"Azerbaijan","value":132.462798,"adj_value":160.7568517},{"id":"Georgia","value":213.886826,"adj_value":259.573052},{"id":"Kazakhstan","value":538.286932,"adj_value":653.2650207},{"id":"Kyrgyzstan","value":31.140901,"adj_value":37.79259745},{"id":"Moldova","value":40.069837,"adj_value":48.62875418},{"id":"Tajikistan","value":28.7867,"adj_value":34.93553912},{"id":"Turkmenistan","value":215.170092,"adj_value":261.1304237},{"id":"Uzbekistan","value":73.826609,"adj_value":89.59597268},{"id":"Spain","value":6839.116578,"adj_value":8299.951879},{"id":"Portugal","value":1131.865366,"adj_value":1373.631808},{"id":"Gibraltar","value":163.257568,"adj_value":198.1293845},{"id":"Malta","value":193.709217,"adj_value":235.0855058},{"id":"San Marino","value":4.676009,"adj_value":5.674804522},{"id":"Vatican City","value":24.181227,"adj_value":29.34633709},{"id":"Italy","value":11524.32529,"adj_value":13985.92117},{"id":"Croatia","value":158.621993,"adj_value":192.5036507},{"id":"Slovenia","value":233.830317,"adj_value":283.7764727},{"id":"Bosnia and Herzegovina","value":17.573793,"adj_value":21.32755518},{"id":"Macedonia","value":31.556267,"adj_value":38.29668563},{"id":"Serbia and Montenegro","value":132.49633,"adj_value":160.7975461},{"id":"Albania","value":18.513925,"adj_value":22.46849938},{"id":"Greece","value":1192.248494,"adj_value":1446.912772},{"id":"Romania","value":608.858767,"adj_value":738.9109996},{"id":"Bulgaria","value":267.93442,"adj_value":325.1652121}]},{"id":"Asia","children":[{"id":"Turkey","value":4238.966194,"adj_value":5144.409373},{"id":"Cyprus","value":84.179247,"adj_value":102.1599342},{"id":"Syria","value":155.049379,"adj_value":188.1679264},{"id":"Lebanon","value":465.688546,"adj_value":565.1596194},{"id":"Iraq","value":1373.986265,"adj_value":1667.469731},{"id":"Iran","value":95.773068,"adj_value":116.2301953},{"id":"Israel","value":9737.340849,"adj_value":11817.23685},{"id":"Gaza Strip admin. by Israel","value":0.23112,"adj_value":0.280487232},{"id":"West Bank admin. by Israel","value":3.720993,"adj_value":4.515797105},{"id":"Jordan","value":644.195347,"adj_value":781.7954731},{"id":"Kuwait","value":1974.875551,"adj_value":2396.708969},{"id":"Saudi Arabia","value":6805.402418,"adj_value":8259.036374},{"id":"Qatar","value":986.642413,"adj_value":1197.389232},{"id":"United Arab Emirates","value":8119.527357,"adj_value":9853.8584},{"id":"Republic of Yemen","value":219.04852,"adj_value":265.8372839},{"id":"Oman","value":570.72512,"adj_value":692.6320056},{"id":"Bahrain","value":350.78451,"adj_value":425.7120813},{"id":"Afghanistan","value":262.153213,"adj_value":318.1491393},{"id":"India","value":7918.602428,"adj_value":9610.015907},{"id":"Pakistan","value":1251.63194,"adj_value":1518.980522},{"id":"Nepal","value":24.704668,"adj_value":29.98158508},{"id":"Bangladesh","value":319.769758,"adj_value":388.0725783},{"id":"Sri Lanka","value":197.631294,"adj_value":239.8453384},{"id":"Burma","value":5.464172,"adj_value":6.631319139},{"id":"Thailand","value":7256.616259,"adj_value":8806.629492},{"id":"Vietnam","value":1193.152202,"adj_value":1448.009512},{"id":"Laos","value":9.807849,"adj_value":11.90280555},{"id":"Cambodia","value":69.652929,"adj_value":84.53079463},{"id":"Malaysia","value":10460.83317,"adj_value":12695.26713},{"id":"Singapore","value":20466.07346,"adj_value":24837.62675},{"id":"Indonesia","value":3053.913961,"adj_value":3706.229983},{"id":"East Timor","value":8.685474,"adj_value":10.54069125},{"id":"Brunei","value":49.614155,"adj_value":60.21173851},{"id":"Philippines","value":6895.406023,"adj_value":8368.26475},{"id":"Macau","value":101.575899,"adj_value":123.272511},{"id":"Bhutan","value":3.05218,"adj_value":3.704125648},{"id":"Maldives","value":9.25555,"adj_value":11.23253548},{"id":"China","value":41192.01012,"adj_value":49990.62349},{"id":"Mongolia","value":21.879286,"adj_value":26.55270149},{"id":"Korea, North","value":5.757048,"adj_value":6.986753453},{"id":"Korea, South","value":27571.60598,"adj_value":33460.90101},{"id":"Hong Kong","value":16351.02861,"adj_value":19843.60832},{"id":"Taiwan","value":21614.49693,"adj_value":26231.35347},{"id":"Japan","value":54680.57985,"adj_value":66360.3517}]},{"id":"Australia","children":[{"id":"Australia","value":15588.51968,"adj_value":18918.22748},{"id":"Norfolk Island","value":0.391532,"adj_value":0.475163235},{"id":"Cocos (Keeling) Islands","value":1.048051,"adj_value":1.271914694},{"id":"Christmas Island","value":2.00592,"adj_value":2.434384512},{"id":"Heard and McDonald Islands","value":0.160607,"adj_value":0.194912655},{"id":"Papua New Guinea","value":55.347872,"adj_value":67.17017746},{"id":"New Zealand","value":2592.076963,"adj_value":3145.744602},{"id":"Cook Islands","value":1.372809,"adj_value":1.666041002},{"id":"Tokelau","value":79.822527,"adj_value":96.87261877},{"id":"Niue","value":0.607643,"adj_value":0.737435545},{"id":"Samoa","value":14.538961,"adj_value":17.64448307},{"id":"Solomon Islands","value":2.297431,"adj_value":2.788162262},{"id":"Vanuatu","value":9.138578,"adj_value":11.09057826},{"id":"Pitcairn Islands","value":0.45629,"adj_value":0.553753544},{"id":"Kiribati","value":2.411608,"adj_value":2.926727469},{"id":"Tuvalu","value":0.04246,"adj_value":0.051529456},{"id":"New Caledonia","value":38.403106,"adj_value":46.60600944},{"id":"Wallis and Futuna","value":0.408737,"adj_value":0.496043223},{"id":"French Polynesia","value":111.838384,"adj_value":135.7270628},{"id":"Marshall Islands","value":75.48435,"adj_value":91.60780716},{"id":"Micronesia","value":25.349268,"adj_value":30.76387164},{"id":"Palau","value":12.22524,"adj_value":14.83655126},{"id":"Nauru","value":1.62475,"adj_value":1.9717966},{"id":"Fiji","value":28.177593,"adj_value":34.19632686},{"id":"Tonga","value":9.685131,"adj_value":11.75387498}]},{"id":"Africa","children":[{"id":"Morocco","value":480.792527,"adj_value":583.4898108},{"id":"Algeria","value":1106.190448,"adj_value":1342.472728},{"id":"Tunisia","value":261.16652,"adj_value":316.9516887},{"id":"Libya","value":83.841985,"adj_value":101.750633},{"id":"Egypt","value":3159.259288,"adj_value":3834.077072},{"id":"Sudan","value":108.105454,"adj_value":131.196779},{"id":"Western Sahara","value":0.028656,"adj_value":0.034776922},{"id":"Equatorial Guinea","value":281.472431,"adj_value":341.5949423},{"id":"Mauritania","value":86.135221,"adj_value":104.5337042},{"id":"Cameroon","value":117.313887,"adj_value":142.3721333},{"id":"Senegal","value":141.499953,"adj_value":171.724343},{"id":"Mali","value":32.421928,"adj_value":39.34725182},{"id":"Guinea","value":93.59706,"adj_value":113.589392},{"id":"Sierra Leone","value":37.829353,"adj_value":45.9097028},{"id":"Cote d'Ivoire","value":124.242832,"adj_value":150.7811009},{"id":"Ghana","value":337.389713,"adj_value":409.4561557},{"id":"Gambia","value":30.604418,"adj_value":37.14152168},{"id":"Niger","value":78.511944,"adj_value":95.28209524},{"id":"Togo","value":27.928388,"adj_value":33.89389168},{"id":"Nigeria","value":1619.788459,"adj_value":1965.775274},{"id":"Central African Republic","value":14.781003,"adj_value":17.93822524},{"id":"Gabon","value":99.105857,"adj_value":120.2748681},{"id":"Chad","value":53.752155,"adj_value":65.23361531},{"id":"St Helena","value":2.732629,"adj_value":3.316318554},{"id":"Burkina Faso","value":25.11081,"adj_value":30.47447902},{"id":"Benin","value":72.278749,"adj_value":87.71748979},{"id":"Angola","value":929.046776,"adj_value":1127.491167},{"id":"Congo (Brazzaville)","value":104.056096,"adj_value":126.2824781},{"id":"Guinea-Bissau","value":2.100355,"adj_value":2.548990828},{"id":"Cabo Verde","value":9.871825,"adj_value":11.98044682},{"id":"Sao Tome and Principe","value":10.153283,"adj_value":12.32202425},{"id":"Liberia","value":69.32032,"adj_value":84.12714035},{"id":"Congo (Kinshasa)","value":64.968131,"adj_value":78.84532378},{"id":"Burundi","value":8.121178,"adj_value":9.855861621},{"id":"Rwanda","value":10.534162,"adj_value":12.784259},{"id":"Somalia","value":8.831504,"adj_value":10.71791325},{"id":"Eritrea","value":31.058711,"adj_value":37.69285167},{"id":"Ethiopia","value":455.635812,"adj_value":552.9596214},{"id":"Djibouti","value":47.571125,"adj_value":57.7323173},{"id":"Uganda","value":62.573652,"adj_value":75.93938407},{"id":"Kenya","value":573.365497,"adj_value":695.8363672},{"id":"Seychelles","value":17.912292,"adj_value":21.73835757},{"id":"British Indian Ocean Terr.","value":0.806112,"adj_value":0.978297523},{"id":"Tanzania","value":96.44391,"adj_value":117.0443292},{"id":"Mauritius","value":30.860179,"adj_value":37.45191323},{"id":"Mozambique","value":62.825299,"adj_value":76.24478287},{"id":"Madagascar","value":28.205237,"adj_value":34.22987562},{"id":"Comoros","value":0.295219,"adj_value":0.358277778},{"id":"Reunion","value":3.78591,"adj_value":4.594580376},{"id":"French Southern and Antarctic","value":0.273678,"adj_value":0.332135621},{"id":"South Africa","value":3906.946741,"adj_value":4741.470565},{"id":"Namibia","value":112.249178,"adj_value":136.2256024},{"id":"Botswana","value":67.272144,"adj_value":81.64147396},{"id":"Zambia","value":29.113109,"adj_value":35.33166908},{"id":"Swaziland","value":11.856893,"adj_value":14.38952534},{"id":"Zimbabwe","value":45.540976,"adj_value":55.26852847},{"id":"Malawi","value":28.049237,"adj_value":34.04055402},{"id":"Lesotho","value":4.015033,"adj_value":4.872644049}]}]}]},{"id":"2015","children":[{"id":"Imports","children":[{"id":"North America","children":[{"id":"Greenland","value":3.800273,"adj_value":3.800273},{"id":"Canada","value":296155.599,"adj_value":296155.599},{"id":"St Pierre and Miquelon","value":0.18562,"adj_value":0.18562},{"id":"Mexico","value":296407.9011,"adj_value":296407.9011},{"id":"Guatemala","value":4120.351959,"adj_value":4120.351959},{"id":"Belize","value":75.287339,"adj_value":75.287339},{"id":"El Salvador","value":2531.699424,"adj_value":2531.699424},{"id":"Honduras","value":4755.934545,"adj_value":4755.934545},{"id":"Nicaragua","value":3188.301535,"adj_value":3188.301535},{"id":"Costa Rica","value":4488.341429,"adj_value":4488.341429},{"id":"Panama","value":408.293396,"adj_value":408.293396},{"id":"Bermuda","value":108.704684,"adj_value":108.704684},{"id":"Bahamas","value":452.744256,"adj_value":452.744256},{"id":"Cuba","value":0,"adj_value":0},{"id":"Jamaica","value":305.978402,"adj_value":305.978402},{"id":"Turks and Caicos Islands","value":14.710225,"adj_value":14.710225},{"id":"Cayman Islands","value":97.496341,"adj_value":97.496341},{"id":"Haiti","value":950.091535,"adj_value":950.091535},{"id":"Dominican Republic","value":4665.266745,"adj_value":4665.266745},{"id":"Anguilla","value":5.583883,"adj_value":5.583883},{"id":"British Virgin Islands","value":16.491398,"adj_value":16.491398},{"id":"St Kitts and Nevis","value":56.753359,"adj_value":56.753359},{"id":"Antigua and Barbuda","value":6.856395,"adj_value":6.856395},{"id":"Montserrat","value":2.271534,"adj_value":2.271534},{"id":"Dominica","value":1.683203,"adj_value":1.683203},{"id":"St Lucia","value":29.00446,"adj_value":29.00446},{"id":"St Vincent and the Grenadines","value":1.768076,"adj_value":1.768076},{"id":"Grenada","value":9.215032,"adj_value":9.215032},{"id":"Barbados","value":68.174291,"adj_value":68.174291},{"id":"Trinidad and Tobago","value":4314.344265,"adj_value":4314.344265},{"id":"Sint Maarten","value":51.873445,"adj_value":51.873445},{"id":"Curacao","value":335.229109,"adj_value":335.229109},{"id":"Aruba","value":54.90185,"adj_value":54.90185},{"id":"Guadeloupe","value":4.123528,"adj_value":4.123528},{"id":"Martinique","value":37.46278,"adj_value":37.46278}]},{"id":"South America","children":[{"id":"Colombia","value":14074.81661,"adj_value":14074.81661},{"id":"Venezuela","value":15564.23275,"adj_value":15564.23275},{"id":"Guyana","value":431.099884,"adj_value":431.099884},{"id":"Suriname","value":146.224404,"adj_value":146.224404},{"id":"French Guiana","value":0.042924,"adj_value":0.042924},{"id":"Ecuador","value":7467.258698,"adj_value":7467.258698},{"id":"Peru","value":5053.337195,"adj_value":5053.337195},{"id":"Bolivia","value":1006.481438,"adj_value":1006.481438},{"id":"Chile","value":8772.414027,"adj_value":8772.414027},{"id":"Brazil","value":27468.23032,"adj_value":27468.23032},{"id":"Paraguay","value":162.023098,"adj_value":162.023098},{"id":"Uruguay","value":604.746068,"adj_value":604.746068},{"id":"Argentina","value":3950.849545,"adj_value":3950.849545},{"id":"Falkland Islands(Islas Malvin","value":14.273948,"adj_value":14.273948}]},{"id":"Europe","children":[{"id":"Iceland","value":316.534176,"adj_value":316.534176},{"id":"Sweden","value":9878.966413,"adj_value":9878.966413},{"id":"Svalbard, Jan Mayen Island","value":0.028231,"adj_value":0.028231},{"id":"Norway","value":4760.200206,"adj_value":4760.200206},{"id":"Finland","value":4506.071121,"adj_value":4506.071121},{"id":"Faroe Islands","value":97.897991,"adj_value":97.897991},{"id":"Denmark","value":7760.022813,"adj_value":7760.022813},{"id":"United Kingdom","value":57962.25131,"adj_value":57962.25131},{"id":"Ireland","value":39336.18067,"adj_value":39336.18067},{"id":"Netherlands","value":16835.61486,"adj_value":16835.61486},{"id":"Belgium","value":19482.27263,"adj_value":19482.27263},{"id":"Luxembourg","value":639.038795,"adj_value":639.038795},{"id":"Andorra","value":4.863157,"adj_value":4.863157},{"id":"Monaco","value":58.818337,"adj_value":58.818337},{"id":"France","value":47815.32286,"adj_value":47815.32286},{"id":"Germany","value":124820.4692,"adj_value":124820.4692},{"id":"Austria","value":11311.97506,"adj_value":11311.97506},{"id":"Czech Republic","value":4497.634904,"adj_value":4497.634904},{"id":"Slovakia","value":2299.822999,"adj_value":2299.822999},{"id":"Hungary","value":5721.266311,"adj_value":5721.266311},{"id":"Liechtenstein","value":310.294941,"adj_value":310.294941},{"id":"Switzerland","value":31396.66041,"adj_value":31396.66041},{"id":"Estonia","value":503.50072,"adj_value":503.50072},{"id":"Latvia","value":302.969587,"adj_value":302.969587},{"id":"Lithuania","value":1059.366349,"adj_value":1059.366349},{"id":"Poland","value":5637.927607,"adj_value":5637.927607},{"id":"Russia","value":16366.16158,"adj_value":16366.16158},{"id":"Belarus","value":158.249733,"adj_value":158.249733},{"id":"Ukraine","value":850.788858,"adj_value":850.788858},{"id":"Armenia","value":62.46349,"adj_value":62.46349},{"id":"Azerbaijan","value":507.148173,"adj_value":507.148173},{"id":"Georgia","value":181.150349,"adj_value":181.150349},{"id":"Kazakhstan","value":816.099815,"adj_value":816.099815},{"id":"Kyrgyzstan","value":15.803561,"adj_value":15.803561},{"id":"Moldova","value":43.920552,"adj_value":43.920552},{"id":"Tajikistan","value":31.123801,"adj_value":31.123801},{"id":"Turkmenistan","value":55.976778,"adj_value":55.976778},{"id":"Uzbekistan","value":9.715446,"adj_value":9.715446},{"id":"Spain","value":14129.84151,"adj_value":14129.84151},{"id":"Portugal","value":3271.009123,"adj_value":3271.009123},{"id":"Gibraltar","value":1.82442,"adj_value":1.82442},{"id":"Malta","value":241.219869,"adj_value":241.219869},{"id":"San Marino","value":8.517198,"adj_value":8.517198},{"id":"Vatican City","value":1.218395,"adj_value":1.218395},{"id":"Italy","value":44159.01154,"adj_value":44159.01154},{"id":"Croatia","value":576.891578,"adj_value":576.891578},{"id":"Slovenia","value":678.110689,"adj_value":678.110689},{"id":"Bosnia and Herzegovina","value":78.282267,"adj_value":78.282267},{"id":"Macedonia","value":203.357353,"adj_value":203.357353},{"id":"Serbia","value":272.617662,"adj_value":272.617662},{"id":"Kosovo","value":2.38298,"adj_value":2.38298},{"id":"Montenegro","value":2.108687,"adj_value":2.108687},{"id":"Albania","value":160.081219,"adj_value":160.081219},{"id":"Greece","value":1356.447796,"adj_value":1356.447796},{"id":"Romania","value":2148.841567,"adj_value":2148.841567},{"id":"Bulgaria","value":597.694693,"adj_value":597.694693}]},{"id":"Asia","children":[{"id":"Turkey","value":7880.91386,"adj_value":7880.91386},{"id":"Cyprus","value":31.98822,"adj_value":31.98822},{"id":"Syria","value":6.544106,"adj_value":6.544106},{"id":"Lebanon","value":93.219618,"adj_value":93.219618},{"id":"Iraq","value":4353.472677,"adj_value":4353.472677},{"id":"Iran","value":10.766314,"adj_value":10.766314},{"id":"Israel","value":24477.02161,"adj_value":24477.02161},{"id":"Gaza Strip admin. by Israel","value":0.012534,"adj_value":0.012534},{"id":"West Bank admin. by Israel","value":5.435229,"adj_value":5.435229},{"id":"Jordan","value":1491.618691,"adj_value":1491.618691},{"id":"Kuwait","value":4684.750276,"adj_value":4684.750276},{"id":"Saudi Arabia","value":22080.78482,"adj_value":22080.78482},{"id":"Qatar","value":1354.237789,"adj_value":1354.237789},{"id":"United Arab Emirates","value":2468.033306,"adj_value":2468.033306},{"id":"Republic of Yemen","value":48.270876,"adj_value":48.270876},{"id":"Oman","value":906.993161,"adj_value":906.993161},{"id":"Bahrain","value":902.425581,"adj_value":902.425581},{"id":"Afghanistan","value":23.454045,"adj_value":23.454045},{"id":"India","value":44791.64405,"adj_value":44791.64405},{"id":"Pakistan","value":3701.018609,"adj_value":3701.018609},{"id":"Nepal","value":86.959805,"adj_value":86.959805},{"id":"Bangladesh","value":5991.251839,"adj_value":5991.251839},{"id":"Sri Lanka","value":2889.92219,"adj_value":2889.92219},{"id":"Burma","value":143.796881,"adj_value":143.796881},{"id":"Thailand","value":28631.93281,"adj_value":28631.93281},{"id":"Vietnam","value":38019.69623,"adj_value":38019.69623},{"id":"Laos","value":45.189001,"adj_value":45.189001},{"id":"Cambodia","value":3025.433126,"adj_value":3025.433126},{"id":"Malaysia","value":33970.67872,"adj_value":33970.67872},{"id":"Singapore","value":18267.48494,"adj_value":18267.48494},{"id":"Indonesia","value":19601.54814,"adj_value":19601.54814},{"id":"East Timor","value":3.302038,"adj_value":3.302038},{"id":"Brunei","value":19.402766,"adj_value":19.402766},{"id":"Philippines","value":10233.69067,"adj_value":10233.69067},{"id":"Macau","value":121.919528,"adj_value":121.919528},{"id":"Bhutan","value":3.398158,"adj_value":3.398158},{"id":"Maldives","value":21.737873,"adj_value":21.737873},{"id":"China","value":483244.7019,"adj_value":483244.7019},{"id":"Mongolia","value":17.222375,"adj_value":17.222375},{"id":"Korea, North","value":0,"adj_value":0},{"id":"Korea, South","value":71758.69672,"adj_value":71758.69672},{"id":"Hong Kong","value":6795.630644,"adj_value":6795.630644},{"id":"Taiwan","value":40907.5936,"adj_value":40907.5936},{"id":"Japan","value":131364.1476,"adj_value":131364.1476}]},{"id":"Australia","children":[{"id":"Australia","value":10894.02186,"adj_value":10894.02186},{"id":"Norfolk Island","value":1.217241,"adj_value":1.217241},{"id":"Cocos (Keeling) Islands","value":3.809085,"adj_value":3.809085},{"id":"Christmas Island","value":2.12084,"adj_value":2.12084},{"id":"Heard and McDonald Islands","value":0.006734,"adj_value":0.006734},{"id":"Papua New Guinea","value":90.809528,"adj_value":90.809528},{"id":"New Zealand","value":4292.770709,"adj_value":4292.770709},{"id":"Cook Islands","value":0.84788,"adj_value":0.84788},{"id":"Tokelau","value":1.848379,"adj_value":1.848379},{"id":"Niue","value":0.531806,"adj_value":0.531806},{"id":"Samoa","value":4.220542,"adj_value":4.220542},{"id":"Solomon Islands","value":3.521953,"adj_value":3.521953},{"id":"Vanuatu","value":3.67132,"adj_value":3.67132},{"id":"Pitcairn Islands","value":0.012162,"adj_value":0.012162},{"id":"Kiribati","value":2.728752,"adj_value":2.728752},{"id":"Tuvalu","value":0.228118,"adj_value":0.228118},{"id":"New Caledonia","value":47.038156,"adj_value":47.038156},{"id":"Wallis and Futuna","value":0.093303,"adj_value":0.093303},{"id":"French Polynesia","value":43.030557,"adj_value":43.030557},{"id":"Marshall Islands","value":29.067047,"adj_value":29.067047},{"id":"Micronesia","value":0.717108,"adj_value":0.717108},{"id":"Palau","value":0.544832,"adj_value":0.544832},{"id":"Nauru","value":0.52087,"adj_value":0.52087},{"id":"Fiji","value":202.639037,"adj_value":202.639037},{"id":"Tonga","value":2.442895,"adj_value":2.442895}]},{"id":"Africa","children":[{"id":"Morocco","value":1011.85636,"adj_value":1011.85636},{"id":"Algeria","value":3371.552526,"adj_value":3371.552526},{"id":"Tunisia","value":546.271256,"adj_value":546.271256},{"id":"Libya","value":155.103895,"adj_value":155.103895},{"id":"Egypt","value":1405.853699,"adj_value":1405.853699},{"id":"Sudan","value":8.973253,"adj_value":8.973253},{"id":"South Sudan","value":0.192583,"adj_value":0.192583},{"id":"Western Sahara","value":0.044063,"adj_value":0.044063},{"id":"Equatorial Guinea","value":163.14305,"adj_value":163.14305},{"id":"Mauritania","value":1.173847,"adj_value":1.173847},{"id":"Cameroon","value":132.053379,"adj_value":132.053379},{"id":"Senegal","value":71.965108,"adj_value":71.965108},{"id":"Mali","value":4.504283,"adj_value":4.504283},{"id":"Guinea","value":79.616516,"adj_value":79.616516},{"id":"Sierra Leone","value":39.58921,"adj_value":39.58921},{"id":"Cote d'Ivoire","value":1027.88557,"adj_value":1027.88557},{"id":"Ghana","value":309.36766,"adj_value":309.36766},{"id":"Gambia","value":0.896754,"adj_value":0.896754},{"id":"Niger","value":4.184625,"adj_value":4.184625},{"id":"Togo","value":14.211452,"adj_value":14.211452},{"id":"Nigeria","value":1915.80016,"adj_value":1915.80016},{"id":"Central African Republic","value":3.12467,"adj_value":3.12467},{"id":"Gabon","value":337.024529,"adj_value":337.024529},{"id":"Chad","value":1303.322183,"adj_value":1303.322183},{"id":"St Helena","value":15.340188,"adj_value":15.340188},{"id":"Burkina Faso","value":3.592979,"adj_value":3.592979},{"id":"Benin","value":4.94488,"adj_value":4.94488},{"id":"Angola","value":2806.494883,"adj_value":2806.494883},{"id":"Congo (Brazzaville)","value":304.303884,"adj_value":304.303884},{"id":"Guinea-Bissau","value":0.05184,"adj_value":0.05184},{"id":"Cabo Verde","value":2.21905,"adj_value":2.21905},{"id":"Sao Tome and Principe","value":0.773369,"adj_value":0.773369},{"id":"Liberia","value":44.940717,"adj_value":44.940717},{"id":"Congo (Kinshasa)","value":153.738045,"adj_value":153.738045},{"id":"Burundi","value":8.427001,"adj_value":8.427001},{"id":"Rwanda","value":45.643909,"adj_value":45.643909},{"id":"Somalia","value":0.896112,"adj_value":0.896112},{"id":"Eritrea","value":0.106871,"adj_value":0.106871},{"id":"Ethiopia","value":310.269077,"adj_value":310.269077},{"id":"Djibouti","value":35.463684,"adj_value":35.463684},{"id":"Uganda","value":64.123855,"adj_value":64.123855},{"id":"Kenya","value":573.095415,"adj_value":573.095415},{"id":"Seychelles","value":5.83899,"adj_value":5.83899},{"id":"British Indian Ocean Terr.","value":15.818366,"adj_value":15.818366},{"id":"Tanzania","value":104.93518,"adj_value":104.93518},{"id":"Mauritius","value":395.664813,"adj_value":395.664813},{"id":"Mozambique","value":96.026702,"adj_value":96.026702},{"id":"Madagascar","value":319.783011,"adj_value":319.783011},{"id":"Mayotte","value":0.095927,"adj_value":0.095927},{"id":"Comoros","value":1.211821,"adj_value":1.211821},{"id":"Reunion","value":16.967288,"adj_value":16.967288},{"id":"French Southern and Antarctic","value":0.013953,"adj_value":0.013953},{"id":"South Africa","value":7314.612701,"adj_value":7314.612701},{"id":"Namibia","value":85.353831,"adj_value":85.353831},{"id":"Botswana","value":211.913954,"adj_value":211.913954},{"id":"Zambia","value":47.114386,"adj_value":47.114386},{"id":"Swaziland","value":21.49843,"adj_value":21.49843},{"id":"Zimbabwe","value":67.166669,"adj_value":67.166669},{"id":"Malawi","value":61.395881,"adj_value":61.395881},{"id":"Lesotho","value":331.955607,"adj_value":331.955607}]}]},{"id":"Exports","children":[{"id":"North America","children":[{"id":"Greenland","value":8.076839,"adj_value":8.076839},{"id":"Canada","value":280609.0056,"adj_value":280609.0056},{"id":"St Pierre and Miquelon","value":0.227459,"adj_value":0.227459},{"id":"Mexico","value":235745.1375,"adj_value":235745.1375},{"id":"Guatemala","value":5806.713895,"adj_value":5806.713895},{"id":"Belize","value":285.240264,"adj_value":285.240264},{"id":"El Salvador","value":3240.284878,"adj_value":3240.284878},{"id":"Honduras","value":5214.668234,"adj_value":5214.668234},{"id":"Nicaragua","value":1267.532561,"adj_value":1267.532561},{"id":"Costa Rica","value":6079.415736,"adj_value":6079.415736},{"id":"Panama","value":7663.548283,"adj_value":7663.548283},{"id":"Bermuda","value":600.945255,"adj_value":600.945255},{"id":"Bahamas","value":2386.461864,"adj_value":2386.461864},{"id":"Cuba","value":180.215206,"adj_value":180.215206},{"id":"Jamaica","value":1716.030814,"adj_value":1716.030814},{"id":"Turks and Caicos Islands","value":279.728597,"adj_value":279.728597},{"id":"Cayman Islands","value":684.947958,"adj_value":684.947958},{"id":"Haiti","value":1140.574185,"adj_value":1140.574185},{"id":"Dominican Republic","value":7113.829302,"adj_value":7113.829302},{"id":"Anguilla","value":47.602633,"adj_value":47.602633},{"id":"British Virgin Islands","value":259.758571,"adj_value":259.758571},{"id":"St Kitts and Nevis","value":149.707108,"adj_value":149.707108},{"id":"Antigua and Barbuda","value":677.657633,"adj_value":677.657633},{"id":"Montserrat","value":6.640011,"adj_value":6.640011},{"id":"Dominica","value":67.312046,"adj_value":67.312046},{"id":"St Lucia","value":510.811024,"adj_value":510.811024},{"id":"St Vincent and the Grenadines","value":84.722498,"adj_value":84.722498},{"id":"Grenada","value":90.420149,"adj_value":90.420149},{"id":"Barbados","value":595.966307,"adj_value":595.966307},{"id":"Trinidad and Tobago","value":2511.195111,"adj_value":2511.195111},{"id":"Sint Maarten","value":741.201231,"adj_value":741.201231},{"id":"Curacao","value":522.079698,"adj_value":522.079698},{"id":"Aruba","value":1167.632524,"adj_value":1167.632524},{"id":"Guadeloupe","value":100.959536,"adj_value":100.959536},{"id":"Martinique","value":119.577165,"adj_value":119.577165}]},{"id":"South America","children":[{"id":"Colombia","value":16286.7799,"adj_value":16286.7799},{"id":"Venezuela","value":8345.880233,"adj_value":8345.880233},{"id":"Guyana","value":368.129666,"adj_value":368.129666},{"id":"Suriname","value":443.643313,"adj_value":443.643313},{"id":"French Guiana","value":1073.642767,"adj_value":1073.642767},{"id":"Ecuador","value":5794.812688,"adj_value":5794.812688},{"id":"Peru","value":8725.607473,"adj_value":8725.607473},{"id":"Bolivia","value":931.431709,"adj_value":931.431709},{"id":"Chile","value":15445.13797,"adj_value":15445.13797},{"id":"Brazil","value":31650.62387,"adj_value":31650.62387},{"id":"Paraguay","value":1514.300292,"adj_value":1514.300292},{"id":"Uruguay","value":1295.148749,"adj_value":1295.148749},{"id":"Argentina","value":9341.210651,"adj_value":9341.210651},{"id":"Falkland Islands(Islas Malvin","value":2.917708,"adj_value":2.917708}]},{"id":"Europe","children":[{"id":"Iceland","value":415.45785,"adj_value":415.45785},{"id":"Sweden","value":3940.8105,"adj_value":3940.8105},{"id":"Svalbard, Jan Mayen Island","value":0.380164,"adj_value":0.380164},{"id":"Norway","value":3570.63315,"adj_value":3570.63315},{"id":"Finland","value":1558.146898,"adj_value":1558.146898},{"id":"Faroe Islands","value":2.336863,"adj_value":2.336863},{"id":"Denmark","value":2202.093582,"adj_value":2202.093582},{"id":"United Kingdom","value":56114.61886,"adj_value":56114.61886},{"id":"Ireland","value":8930.773509,"adj_value":8930.773509},{"id":"Netherlands","value":40196.15629,"adj_value":40196.15629},{"id":"Belgium","value":34159.97966,"adj_value":34159.97966},{"id":"Luxembourg","value":1394.17473,"adj_value":1394.17473},{"id":"Andorra","value":3.336817,"adj_value":3.336817},{"id":"Monaco","value":71.128048,"adj_value":71.128048},{"id":"France","value":30103.5212,"adj_value":30103.5212},{"id":"Germany","value":49970.80411,"adj_value":49970.80411},{"id":"Austria","value":4024.435888,"adj_value":4024.435888},{"id":"Czech Republic","value":1976.037865,"adj_value":1976.037865},{"id":"Slovakia","value":379.469169,"adj_value":379.469169},{"id":"Hungary","value":1715.278037,"adj_value":1715.278037},{"id":"Liechtenstein","value":35.930552,"adj_value":35.930552},{"id":"Switzerland","value":22185.27991,"adj_value":22185.27991},{"id":"Estonia","value":288.143789,"adj_value":288.143789},{"id":"Latvia","value":294.787977,"adj_value":294.787977},{"id":"Lithuania","value":527.67763,"adj_value":527.67763},{"id":"Poland","value":3715.441301,"adj_value":3715.441301},{"id":"Russia","value":7087.111574,"adj_value":7087.111574},{"id":"Belarus","value":59.235752,"adj_value":59.235752},{"id":"Ukraine","value":862.088348,"adj_value":862.088348},{"id":"Armenia","value":50.24617,"adj_value":50.24617},{"id":"Azerbaijan","value":477.316108,"adj_value":477.316108},{"id":"Georgia","value":340.502111,"adj_value":340.502111},{"id":"Kazakhstan","value":510.479071,"adj_value":510.479071},{"id":"Kyrgyzstan","value":32.003481,"adj_value":32.003481},{"id":"Moldova","value":16.163682,"adj_value":16.163682},{"id":"Tajikistan","value":18.985373,"adj_value":18.985373},{"id":"Turkmenistan","value":80.839805,"adj_value":80.839805},{"id":"Uzbekistan","value":137.962928,"adj_value":137.962928},{"id":"Spain","value":10310.27052,"adj_value":10310.27052},{"id":"Portugal","value":942.466275,"adj_value":942.466275},{"id":"Gibraltar","value":1972.99261,"adj_value":1972.99261},{"id":"Malta","value":490.660579,"adj_value":490.660579},{"id":"San Marino","value":5.011879,"adj_value":5.011879},{"id":"Vatican City","value":2.226547,"adj_value":2.226547},{"id":"Italy","value":16204.22609,"adj_value":16204.22609},{"id":"Croatia","value":331.976272,"adj_value":331.976272},{"id":"Slovenia","value":346.040192,"adj_value":346.040192},{"id":"Bosnia and Herzegovina","value":27.586061,"adj_value":27.586061},{"id":"Macedonia","value":30.678977,"adj_value":30.678977},{"id":"Serbia","value":126.25142,"adj_value":126.25142},{"id":"Kosovo","value":19.743318,"adj_value":19.743318},{"id":"Montenegro","value":11.133957,"adj_value":11.133957},{"id":"Albania","value":30.952665,"adj_value":30.952665},{"id":"Greece","value":725.699147,"adj_value":725.699147},{"id":"Romania","value":753.718827,"adj_value":753.718827},{"id":"Bulgaria","value":289.09201,"adj_value":289.09201}]},{"id":"Asia","children":[{"id":"Turkey","value":9502.498123,"adj_value":9502.498123},{"id":"Cyprus","value":101.831614,"adj_value":101.831614},{"id":"Syria","value":3.072304,"adj_value":3.072304},{"id":"Lebanon","value":1272.487166,"adj_value":1272.487166},{"id":"Iraq","value":1971.478767,"adj_value":1971.478767},{"id":"Iran","value":281.512074,"adj_value":281.512074},{"id":"Israel","value":13538.69482,"adj_value":13538.69482},{"id":"Gaza Strip admin. by Israel","value":0.183934,"adj_value":0.183934},{"id":"West Bank admin. by Israel","value":0.903282,"adj_value":0.903282},{"id":"Jordan","value":1358.977191,"adj_value":1358.977191},{"id":"Kuwait","value":2739.289578,"adj_value":2739.289578},{"id":"Saudi Arabia","value":19738.98459,"adj_value":19738.98459},{"id":"Qatar","value":4222.426394,"adj_value":4222.426394},{"id":"United Arab Emirates","value":23003.59562,"adj_value":23003.59562},{"id":"Republic of Yemen","value":158.039977,"adj_value":158.039977},{"id":"Oman","value":2355.271013,"adj_value":2355.271013},{"id":"Bahrain","value":1270.662445,"adj_value":1270.662445},{"id":"Afghanistan","value":478.851271,"adj_value":478.851271},{"id":"India","value":21451.87992,"adj_value":21451.87992},{"id":"Pakistan","value":1837.506933,"adj_value":1837.506933},{"id":"Nepal","value":36.405446,"adj_value":36.405446},{"id":"Bangladesh","value":942.540067,"adj_value":942.540067},{"id":"Sri Lanka","value":361.920786,"adj_value":361.920786},{"id":"Burma","value":227.140755,"adj_value":227.140755},{"id":"Thailand","value":11230.56974,"adj_value":11230.56974},{"id":"Vietnam","value":7087.524038,"adj_value":7087.524038},{"id":"Laos","value":24.584007,"adj_value":24.584007},{"id":"Cambodia","value":391.045876,"adj_value":391.045876},{"id":"Malaysia","value":12277.22614,"adj_value":12277.22614},{"id":"Singapore","value":28472.07098,"adj_value":28472.07098},{"id":"Indonesia","value":7120.940688,"adj_value":7120.940688},{"id":"East Timor","value":2.690584,"adj_value":2.690584},{"id":"Brunei","value":133.449998,"adj_value":133.449998},{"id":"Philippines","value":7907.893167,"adj_value":7907.893167},{"id":"Macau","value":542.354584,"adj_value":542.354584},{"id":"Bhutan","value":2.64104,"adj_value":2.64104},{"id":"Maldives","value":35.143208,"adj_value":35.143208},{"id":"China","value":116071.7696,"adj_value":116071.7696},{"id":"Mongolia","value":69.161103,"adj_value":69.161103},{"id":"Korea, North","value":4.751721,"adj_value":4.751721},{"id":"Korea, South","value":43445.54748,"adj_value":43445.54748},{"id":"Hong Kong","value":37167.02295,"adj_value":37167.02295},{"id":"Taiwan","value":25860.08634,"adj_value":25860.08634},{"id":"Japan","value":62442.64646,"adj_value":62442.64646}]},{"id":"Australia","children":[{"id":"Australia","value":25035.79015,"adj_value":25035.79015},{"id":"Norfolk Island","value":0.350312,"adj_value":0.350312},{"id":"Cocos (Keeling) Islands","value":0.55762,"adj_value":0.55762},{"id":"Christmas Island","value":1.551179,"adj_value":1.551179},{"id":"Heard and McDonald Islands","value":0.913419,"adj_value":0.913419},{"id":"Papua New Guinea","value":207.793894,"adj_value":207.793894},{"id":"New Zealand","value":3631.061903,"adj_value":3631.061903},{"id":"Cook Islands","value":4.249826,"adj_value":4.249826},{"id":"Tokelau","value":0.341222,"adj_value":0.341222},{"id":"Niue","value":0.071371,"adj_value":0.071371},{"id":"Samoa","value":22.71966,"adj_value":22.71966},{"id":"Solomon Islands","value":5.861309,"adj_value":5.861309},{"id":"Vanuatu","value":5.867876,"adj_value":5.867876},{"id":"Pitcairn Islands","value":0.017405,"adj_value":0.017405},{"id":"Kiribati","value":7.320835,"adj_value":7.320835},{"id":"Tuvalu","value":0.625636,"adj_value":0.625636},{"id":"New Caledonia","value":88.651277,"adj_value":88.651277},{"id":"Wallis and Futuna","value":0.376841,"adj_value":0.376841},{"id":"French Polynesia","value":120.047865,"adj_value":120.047865},{"id":"Marshall Islands","value":53.912135,"adj_value":53.912135},{"id":"Micronesia","value":40.032614,"adj_value":40.032614},{"id":"Palau","value":25.693198,"adj_value":25.693198},{"id":"Nauru","value":1.73365,"adj_value":1.73365},{"id":"Fiji","value":56.904585,"adj_value":56.904585},{"id":"Tonga","value":13.817538,"adj_value":13.817538}]},{"id":"Africa","children":[{"id":"Morocco","value":1625.204959,"adj_value":1625.204959},{"id":"Algeria","value":1875.734479,"adj_value":1875.734479},{"id":"Tunisia","value":602.412017,"adj_value":602.412017},{"id":"Libya","value":242.951645,"adj_value":242.951645},{"id":"Egypt","value":4752.983685,"adj_value":4752.983685},{"id":"Sudan","value":59.514997,"adj_value":59.514997},{"id":"South Sudan","value":19.613532,"adj_value":19.613532},{"id":"Western Sahara","value":0.032113,"adj_value":0.032113},{"id":"Equatorial Guinea","value":161.964373,"adj_value":161.964373},{"id":"Mauritania","value":126.280667,"adj_value":126.280667},{"id":"Cameroon","value":224.961698,"adj_value":224.961698},{"id":"Senegal","value":196.428411,"adj_value":196.428411},{"id":"Mali","value":72.426079,"adj_value":72.426079},{"id":"Guinea","value":135.350114,"adj_value":135.350114},{"id":"Sierra Leone","value":77.325724,"adj_value":77.325724},{"id":"Cote d'Ivoire","value":266.335569,"adj_value":266.335569},{"id":"Ghana","value":949.913963,"adj_value":949.913963},{"id":"Gambia","value":37.899622,"adj_value":37.899622},{"id":"Niger","value":71.493157,"adj_value":71.493157},{"id":"Togo","value":311.819809,"adj_value":311.819809},{"id":"Nigeria","value":3437.952784,"adj_value":3437.952784},{"id":"Central African Republic","value":34.309874,"adj_value":34.309874},{"id":"Gabon","value":203.872443,"adj_value":203.872443},{"id":"Chad","value":56.591528,"adj_value":56.591528},{"id":"St Helena","value":3.720487,"adj_value":3.720487},{"id":"Burkina Faso","value":53.875343,"adj_value":53.875343},{"id":"Benin","value":631.462518,"adj_value":631.462518},{"id":"Angola","value":1166.161667,"adj_value":1166.161667},{"id":"Congo (Brazzaville)","value":249.220232,"adj_value":249.220232},{"id":"Guinea-Bissau","value":2.13532,"adj_value":2.13532},{"id":"Cabo Verde","value":7.32166,"adj_value":7.32166},{"id":"Sao Tome and Principe","value":0.853963,"adj_value":0.853963},{"id":"Liberia","value":135.807551,"adj_value":135.807551},{"id":"Congo (Kinshasa)","value":136.189374,"adj_value":136.189374},{"id":"Burundi","value":5.650192,"adj_value":5.650192},{"id":"Rwanda","value":14.28771,"adj_value":14.28771},{"id":"Somalia","value":45.026584,"adj_value":45.026584},{"id":"Eritrea","value":3.497538,"adj_value":3.497538},{"id":"Ethiopia","value":1555.249376,"adj_value":1555.249376},{"id":"Djibouti","value":144.711021,"adj_value":144.711021},{"id":"Uganda","value":88.315069,"adj_value":88.315069},{"id":"Kenya","value":943.436657,"adj_value":943.436657},{"id":"Seychelles","value":18.542809,"adj_value":18.542809},{"id":"British Indian Ocean Terr.","value":0.581016,"adj_value":0.581016},{"id":"Tanzania","value":172.803054,"adj_value":172.803054},{"id":"Mauritius","value":58.435311,"adj_value":58.435311},{"id":"Mozambique","value":264.203995,"adj_value":264.203995},{"id":"Madagascar","value":54.553731,"adj_value":54.553731},{"id":"Mayotte","value":5.697333,"adj_value":5.697333},{"id":"Comoros","value":1.507078,"adj_value":1.507078},{"id":"Reunion","value":6.905271,"adj_value":6.905271},{"id":"French Southern and Antarctic","value":8.026602,"adj_value":8.026602},{"id":"South Africa","value":5458.29362,"adj_value":5458.29362},{"id":"Namibia","value":127.603603,"adj_value":127.603603},{"id":"Botswana","value":39.04197,"adj_value":39.04197},{"id":"Zambia","value":84.170835,"adj_value":84.170835},{"id":"Swaziland","value":28.521751,"adj_value":28.521751},{"id":"Zimbabwe","value":37.834783,"adj_value":37.834783},{"id":"Malawi","value":37.201602,"adj_value":37.201602},{"id":"Lesotho","value":0.881897,"adj_value":0.881897}]}]}]},{"id":"1985","children":[{"id":"Imports","children":[{"id":"North America","children":[{"id":"Canada","value":69006.4,"adj_value":152007.2979},{"id":"Mexico","value":19131.7,"adj_value":42143.30876},{"id":"Guatemala","value":409,"adj_value":900.9452},{"id":"El Salvador","value":395.6,"adj_value":871.42768},{"id":"Honduras","value":375.4,"adj_value":826.93112},{"id":"Costa Rica","value":501.3,"adj_value":1104.26364},{"id":"Panama","value":410.6,"adj_value":904.46968},{"id":"Bahamas","value":626.3,"adj_value":1379.61364},{"id":"Jamaica","value":272.7,"adj_value":600.70356},{"id":"Haiti","value":389.6,"adj_value":858.21088},{"id":"Dominican Republic","value":982.3,"adj_value":2163.81044},{"id":"Trinidad and Tobago","value":1258.4,"adj_value":2772.00352},{"id":"Netherlands Antilles","value":808,"adj_value":1779.8624}]},{"id":"South America","children":[{"id":"Colombia","value":1330.7,"adj_value":2931.26596},{"id":"Venezuela","value":6537.1,"adj_value":14399.92388},{"id":"Ecuador","value":1836.5,"adj_value":4045.4422},{"id":"Peru","value":1086.6,"adj_value":2393.56248},{"id":"Chile","value":745.2,"adj_value":1641.52656},{"id":"Brazil","value":7526.2,"adj_value":16578.71336},{"id":"Paraguay","value":23.6,"adj_value":51.98608},{"id":"Uruguay","value":556.6,"adj_value":1226.07848},{"id":"Argentina","value":1069.3,"adj_value":2355.45404}]},{"id":"Europe","children":[{"id":"Iceland","value":247.8,"adj_value":545.85384},{"id":"Sweden","value":4123.7,"adj_value":9083.68636},{"id":"Norway","value":1164.3,"adj_value":2564.72004},{"id":"Finland","value":895.2,"adj_value":1971.94656},{"id":"Denmark","value":1664.4,"adj_value":3666.34032},{"id":"United Kingdom","value":14937.2,"adj_value":32903.66416},{"id":"Ireland","value":901.1,"adj_value":1984.94308},{"id":"Netherlands","value":4081.3,"adj_value":8990.28764},{"id":"Belgium","value":3355.2,"adj_value":7390.83456},{"id":"France","value":9482,"adj_value":20886.9496},{"id":"Germany","value":20239.2,"adj_value":44582.90976},{"id":"Austria","value":833.7,"adj_value":1836.47436},{"id":"Hungary","value":218.3,"adj_value":480.87124},{"id":"Switzerland","value":3476.1,"adj_value":7657.15308},{"id":"Poland","value":220.2,"adj_value":485.05656},{"id":"USSR","value":408.5,"adj_value":899.8438},{"id":"Spain","value":2515.2,"adj_value":5540.48256},{"id":"Portugal","value":546,"adj_value":1202.7288},{"id":"Italy","value":9673.8,"adj_value":21309.44664},{"id":"Yugoslavia (former)","value":542.2,"adj_value":1194.35816},{"id":"Greece","value":394.7,"adj_value":869.44516}]},{"id":"Asia","children":[{"id":"Turkey","value":601.9,"adj_value":1325.86532},{"id":"Iran","value":725.1,"adj_value":1597.25028},{"id":"Israel","value":2122.5,"adj_value":4675.443},{"id":"Kuwait","value":184,"adj_value":405.3152},{"id":"Saudi Arabia","value":1907.1,"adj_value":4200.95988},{"id":"United Arab Emirates","value":671,"adj_value":1478.0788},{"id":"Bahrain","value":83.3,"adj_value":183.49324},{"id":"India","value":2294.7,"adj_value":5054.76516},{"id":"Pakistan","value":273.9,"adj_value":603.34692},{"id":"Bangladesh","value":196,"adj_value":431.7488},{"id":"Sri Lanka","value":281.9,"adj_value":620.96932},{"id":"Thailand","value":1428.3,"adj_value":3146.25924},{"id":"Malaysia","value":2299.9,"adj_value":5066.21972},{"id":"Singapore","value":4259.9,"adj_value":9383.70772},{"id":"Indonesia","value":4568.9,"adj_value":10064.37292},{"id":"Philippines","value":2145,"adj_value":4725.006},{"id":"Macau","value":341.9,"adj_value":753.13732},{"id":"China","value":3861.7,"adj_value":8506.55276},{"id":"Korea, South","value":10013.3,"adj_value":22057.29724},{"id":"Hong Kong","value":8396.4,"adj_value":18495.58992},{"id":"Taiwan","value":16396.3,"adj_value":36117.76964},{"id":"Japan","value":68782.9,"adj_value":151514.9721}]},{"id":"Australia","children":[{"id":"Australia","value":2836.3,"adj_value":6247.80164},{"id":"New Zealand","value":857,"adj_value":1887.7996}]},{"id":"Africa","children":[{"id":"Algeria","value":2333,"adj_value":5139.1324},{"id":"Egypt","value":79.1,"adj_value":174.24148},{"id":"Cote d'Ivoire","value":524.8,"adj_value":1156.02944},{"id":"Nigeria","value":3001.9,"adj_value":6612.58532},{"id":"Gabon","value":501.9,"adj_value":1105.58532},{"id":"Angola","value":1053.6,"adj_value":2320.87008},{"id":"Congo (Brazzaville)","value":609.3,"adj_value":1342.16604},{"id":"Congo (Kinshasa)","value":400.7,"adj_value":882.66196},{"id":"South Africa","value":2070.9,"adj_value":4561.77852}]}]},{"id":"Exports","children":[{"id":"North America","children":[{"id":"Canada","value":47251,"adj_value":104084.5028},{"id":"Mexico","value":13634.7,"adj_value":30034.51716},{"id":"Guatemala","value":404.6,"adj_value":891.25288},{"id":"El Salvador","value":445.5,"adj_value":981.3474},{"id":"Honduras","value":307.9,"adj_value":678.24212},{"id":"Costa Rica","value":421.7,"adj_value":928.92076},{"id":"Panama","value":674.8,"adj_value":1486.44944},{"id":"Bahamas","value":786.3,"adj_value":1732.06164},{"id":"Jamaica","value":404.3,"adj_value":890.59204},{"id":"Haiti","value":395.9,"adj_value":872.08852},{"id":"Dominican Republic","value":742,"adj_value":1634.4776},{"id":"Trinidad and Tobago","value":503.7,"adj_value":1109.55036},{"id":"Netherlands Antilles","value":427.5,"adj_value":941.697}]},{"id":"South America","children":[{"id":"Colombia","value":1467.7,"adj_value":3233.04956},{"id":"Venezuela","value":3399.4,"adj_value":7488.19832},{"id":"Ecuador","value":591.1,"adj_value":1302.07508},{"id":"Peru","value":495.9,"adj_value":1092.36852},{"id":"Chile","value":682.2,"adj_value":1502.75016},{"id":"Brazil","value":3139.6,"adj_value":6915.91088},{"id":"Paraguay","value":98.9,"adj_value":217.85692},{"id":"Uruguay","value":64.3,"adj_value":141.64004},{"id":"Argentina","value":721.3,"adj_value":1588.87964}]},{"id":"Europe","children":[{"id":"Iceland","value":38,"adj_value":83.7064},{"id":"Sweden","value":1924.9,"adj_value":4240.16972},{"id":"Norway","value":665.9,"adj_value":1466.84452},{"id":"Finland","value":437.7,"adj_value":964.16556},{"id":"Denmark","value":705.7,"adj_value":1554.51596},{"id":"United Kingdom","value":11272.8,"adj_value":24831.72384},{"id":"Ireland","value":1341.8,"adj_value":2955.71704},{"id":"Netherlands","value":7269,"adj_value":16012.1532},{"id":"Belgium","value":4917.7,"adj_value":10832.70956},{"id":"France","value":6095.6,"adj_value":13427.38768},{"id":"Germany","value":9050.2,"adj_value":19935.78056},{"id":"Austria","value":441.2,"adj_value":971.87536},{"id":"Hungary","value":94.5,"adj_value":208.1646},{"id":"Switzerland","value":2287.7,"adj_value":5039.34556},{"id":"Poland","value":237.9,"adj_value":524.04612},{"id":"USSR","value":2422.8,"adj_value":5336.94384},{"id":"Spain","value":2524.1,"adj_value":5560.08748},{"id":"Portugal","value":694.5,"adj_value":1529.8446},{"id":"Italy","value":4625.2,"adj_value":10188.39056},{"id":"Yugoslavia (former)","value":594.7,"adj_value":1310.00516},{"id":"Greece","value":497.8,"adj_value":1096.55384}]},{"id":"Asia","children":[{"id":"Turkey","value":1294.6,"adj_value":2851.74488},{"id":"Iran","value":73.9,"adj_value":162.78692},{"id":"Israel","value":2579.6,"adj_value":5682.34288},{"id":"Kuwait","value":550.6,"adj_value":1212.86168},{"id":"Saudi Arabia","value":4474.3,"adj_value":9855.98804},{"id":"United Arab Emirates","value":596.5,"adj_value":1313.9702},{"id":"Bahrain","value":107,"adj_value":235.6996},{"id":"India","value":1641.9,"adj_value":3616.77732},{"id":"Pakistan","value":1041.7,"adj_value":2294.65676},{"id":"Bangladesh","value":218.9,"adj_value":482.19292},{"id":"Sri Lanka","value":72.8,"adj_value":160.36384},{"id":"Thailand","value":849.1,"adj_value":1870.39748},{"id":"Malaysia","value":1539.2,"adj_value":3390.54976},{"id":"Singapore","value":3475.6,"adj_value":7656.05168},{"id":"Indonesia","value":795,"adj_value":1751.226},{"id":"Philippines","value":1379.3,"adj_value":3038.32204},{"id":"Macau","value":1.1,"adj_value":2.42308},{"id":"China","value":3855.7,"adj_value":8493.33596},{"id":"Korea, South","value":5956.3,"adj_value":13120.53764},{"id":"Hong Kong","value":2785.9,"adj_value":6136.78052},{"id":"Taiwan","value":4700,"adj_value":10353.16},{"id":"Japan","value":22630.9,"adj_value":49851.34652}]},{"id":"Australia","children":[{"id":"Australia","value":5440.4,"adj_value":11984.11312},{"id":"New Zealand","value":727.5,"adj_value":1602.537}]},{"id":"Africa","children":[{"id":"Algeria","value":430.1,"adj_value":947.42428},{"id":"Egypt","value":2322.6,"adj_value":5116.22328},{"id":"Cote d'Ivoire","value":69.7,"adj_value":153.53516},{"id":"Nigeria","value":675.7,"adj_value":1488.43196},{"id":"Gabon","value":91.2,"adj_value":200.89536},{"id":"Angola","value":136.9,"adj_value":301.56332},{"id":"Congo (Brazzaville)","value":19.4,"adj_value":42.73432},{"id":"Congo (Kinshasa)","value":101.5,"adj_value":223.5842},{"id":"South Africa","value":1205,"adj_value":2654.374}]}]}]}]},"options":{"tile":"SliceDice"}},"evals":[],"jsHooks":[]}</script>
</div>
<div style="float:left; display:inline;">
<h3>
Slice
</h3>
<div id="htmlwidget-9aa68c0ec9b2d751ee62" class="treebar html-widget" style="width:400px;height:250px;">
</div>
<script type="application/json" data-for="htmlwidget-9aa68c0ec9b2d751ee62">{"x":{"data":{"children":[{"id":"1995","children":[{"id":"Imports","children":[{"id":"North America","children":[{"id":"Greenland","value":7.6,"adj_value":11.81952},{"id":"Canada","value":144369.9,"adj_value":224524.0685},{"id":"St Pierre and Miquelon","value":3.4,"adj_value":5.28768},{"id":"Mexico","value":62100.4,"adj_value":96578.54208},{"id":"Guatemala","value":1526.8,"adj_value":2374.47936},{"id":"Belize","value":52.1,"adj_value":81.02592},{"id":"El Salvador","value":812.2,"adj_value":1263.13344},{"id":"Honduras","value":1441.2,"adj_value":2241.35424},{"id":"Nicaragua","value":238.8,"adj_value":371.38176},{"id":"Costa Rica","value":1843.2,"adj_value":2866.54464},{"id":"Panama","value":307.1,"adj_value":477.60192},{"id":"Bermuda","value":10.4,"adj_value":16.17408},{"id":"Bahamas","value":156.7,"adj_value":243.69984},{"id":"Cuba","value":0,"adj_value":0},{"id":"Jamaica","value":846.9,"adj_value":1317.09888},{"id":"Turks and Caicos Islands","value":5,"adj_value":7.776},{"id":"Cayman Islands","value":18.2,"adj_value":28.30464},{"id":"Haiti","value":129.9,"adj_value":202.02048},{"id":"Dominican Republic","value":3398.9,"adj_value":5285.96928},{"id":"Anguilla","value":0,"adj_value":0},{"id":"British Virgin Islands","value":11.2,"adj_value":17.41824},{"id":"St Kitts and Nevis","value":22.3,"adj_value":34.68096},{"id":"Antigua and Barbuda","value":2.8,"adj_value":4.35456},{"id":"Montserrat","value":2,"adj_value":3.1104},{"id":"Dominica","value":6.6,"adj_value":10.26432},{"id":"St Lucia","value":35.1,"adj_value":54.58752},{"id":"St Vincent and the Grenadines","value":7.9,"adj_value":12.28608},{"id":"Grenada","value":5.3,"adj_value":8.24256},{"id":"Barbados","value":37.7,"adj_value":58.63104},{"id":"Trinidad and Tobago","value":1089.2,"adj_value":1693.92384},{"id":"Netherlands Antilles","value":289.8,"adj_value":450.69696},{"id":"Aruba","value":420.7,"adj_value":654.27264},{"id":"Guadeloupe","value":1.2,"adj_value":1.86624},{"id":"Martinique","value":1.9,"adj_value":2.95488}]},{"id":"South America","children":[{"id":"Colombia","value":3791,"adj_value":5895.7632},{"id":"Venezuela","value":9764,"adj_value":15184.9728},{"id":"Guyana","value":107.4,"adj_value":167.02848},{"id":"Suriname","value":100,"adj_value":155.52},{"id":"French Guiana","value":5.2,"adj_value":8.08704},{"id":"Ecuador","value":1939.7,"adj_value":3016.62144},{"id":"Peru","value":1034.4,"adj_value":1608.69888},{"id":"Bolivia","value":262.5,"adj_value":408.24},{"id":"Chile","value":1930.8,"adj_value":3002.78016},{"id":"Brazil","value":8832.9,"adj_value":13736.92608},{"id":"Paraguay","value":55,"adj_value":85.536},{"id":"Uruguay","value":167.2,"adj_value":260.02944},{"id":"Argentina","value":1760.8,"adj_value":2738.39616},{"id":"Falkland Islands(Islas Malvin","value":0.5,"adj_value":0.7776}]},{"id":"Europe","children":[{"id":"Iceland","value":232.8,"adj_value":362.05056},{"id":"Sweden","value":6256.4,"adj_value":9729.95328},{"id":"Svalbard, Jan Mayen Island","value":0.2,"adj_value":0.31104},{"id":"Norway","value":3086.7,"adj_value":4800.43584},{"id":"Finland","value":2269.9,"adj_value":3530.14848},{"id":"Faroe Islands","value":8.4,"adj_value":13.06368},{"id":"Denmark","value":1944.9,"adj_value":3024.70848},{"id":"United Kingdom","value":26929.7,"adj_value":41881.06944},{"id":"Ireland","value":4078.7,"adj_value":6343.19424},{"id":"Netherlands","value":6404.9,"adj_value":9960.90048},{"id":"Belgium","value":6053.9,"adj_value":9415.02528},{"id":"Luxembourg","value":233.8,"adj_value":363.60576},{"id":"Andorra","value":0.2,"adj_value":0.31104},{"id":"Monaco","value":12.2,"adj_value":18.97344},{"id":"France","value":17209.4,"adj_value":26764.05888},{"id":"Germany","value":36843.9,"adj_value":57299.63328},{"id":"Austria","value":1963.2,"adj_value":3053.16864},{"id":"Czechoslovakia","value":0,"adj_value":0},{"id":"Czech Republic","value":363.3,"adj_value":565.00416},{"id":"Slovakia","value":129.5,"adj_value":201.3984},{"id":"Hungary","value":547,"adj_value":850.6944},{"id":"Liechtenstein","value":126.2,"adj_value":196.26624},{"id":"Switzerland","value":7593.9,"adj_value":11810.03328},{"id":"Estonia","value":62.1,"adj_value":96.57792},{"id":"Latvia","value":82,"adj_value":127.5264},{"id":"Lithuania","value":26.5,"adj_value":41.2128},{"id":"Poland","value":663.6,"adj_value":1032.03072},{"id":"USSR","value":0,"adj_value":0},{"id":"Russia","value":4030.1,"adj_value":6267.61152},{"id":"Belarus","value":45,"adj_value":69.984},{"id":"Ukraine","value":405.7,"adj_value":630.94464},{"id":"Armenia","value":16.3,"adj_value":25.34976},{"id":"Azerbaijan","value":0.7,"adj_value":1.08864},{"id":"Georgia","value":10.7,"adj_value":16.64064},{"id":"Kazakhstan","value":122.9,"adj_value":191.13408},{"id":"Kyrgyzstan","value":8.4,"adj_value":13.06368},{"id":"Moldova","value":24.8,"adj_value":38.56896},{"id":"Tajikistan","value":40.9,"adj_value":63.60768},{"id":"Turkmenistan","value":1.3,"adj_value":2.02176},{"id":"Uzbekistan","value":18.8,"adj_value":29.23776},{"id":"Spain","value":3879.7,"adj_value":6033.70944},{"id":"Portugal","value":1056.7,"adj_value":1643.37984},{"id":"Gibraltar","value":4.8,"adj_value":7.46496},{"id":"Malta","value":132.5,"adj_value":206.064},{"id":"San Marino","value":1,"adj_value":1.5552},{"id":"Vatican City","value":0.7,"adj_value":1.08864},{"id":"Italy","value":16348.4,"adj_value":25425.03168},{"id":"Yugoslavia (former)","value":0,"adj_value":0},{"id":"Croatia","value":93.8,"adj_value":145.87776},{"id":"Slovenia","value":289.5,"adj_value":450.2304},{"id":"Bosnia and Herzegovina","value":3.5,"adj_value":5.4432},{"id":"Macedonia","value":88.8,"adj_value":138.10176},{"id":"Serbia and Montenegro","value":0,"adj_value":0},{"id":"Albania","value":9.4,"adj_value":14.61888},{"id":"Greece","value":397.1,"adj_value":617.56992},{"id":"Romania","value":222.3,"adj_value":345.72096},{"id":"Bulgaria","value":188.5,"adj_value":293.1552}]},{"id":"Asia","children":[{"id":"Turkey","value":1797.9,"adj_value":2796.09408},{"id":"Cyprus","value":13.1,"adj_value":20.37312},{"id":"Syria","value":61.1,"adj_value":95.02272},{"id":"Lebanon","value":35,"adj_value":54.432},{"id":"Iraq","value":0,"adj_value":0},{"id":"Iran","value":0.2,"adj_value":0.31104},{"id":"Israel","value":0,"adj_value":0},{"id":"Israel","value":5708.7,"adj_value":8878.17024},{"id":"Gaza Strip admin. by Israel","value":0,"adj_value":0},{"id":"West Bank admin. by Israel","value":0,"adj_value":0},{"id":"Jordan","value":28.9,"adj_value":44.94528},{"id":"Kuwait","value":1335.5,"adj_value":2076.9696},{"id":"Iraq-Saudi Arabia Neutral Zone","value":0,"adj_value":0},{"id":"Saudi Arabia","value":8376.6,"adj_value":13027.28832},{"id":"Qatar","value":90.9,"adj_value":141.36768},{"id":"United Arab Emirates","value":459.1,"adj_value":713.99232},{"id":"Republic of Yemen","value":41.5,"adj_value":64.5408},{"id":"Oman","value":294.9,"adj_value":458.62848},{"id":"Bahrain","value":134.3,"adj_value":208.86336},{"id":"Afghanistan","value":5.4,"adj_value":8.39808},{"id":"India","value":5726.3,"adj_value":8905.54176},{"id":"Pakistan","value":1197,"adj_value":1861.5744},{"id":"Nepal","value":96.1,"adj_value":149.45472},{"id":"Bangladesh","value":1257.2,"adj_value":1955.19744},{"id":"Sri Lanka","value":1259.7,"adj_value":1959.08544},{"id":"Burma","value":81,"adj_value":125.9712},{"id":"Thailand","value":11348.1,"adj_value":17648.56512},{"id":"Vietnam","value":199,"adj_value":309.4848},{"id":"Laos","value":10.2,"adj_value":15.86304},{"id":"Cambodia","value":5.1,"adj_value":7.93152},{"id":"Malaysia","value":17454.9,"adj_value":27145.86048},{"id":"Singapore","value":18560.4,"adj_value":28865.13408},{"id":"Indonesia","value":7435.3,"adj_value":11563.37856},{"id":"Brunei","value":38.4,"adj_value":59.71968},{"id":"Philippines","value":7006.5,"adj_value":10896.5088},{"id":"Macau","value":895.3,"adj_value":1392.37056},{"id":"Bhutan","value":0.1,"adj_value":0.15552},{"id":"Maldives","value":12,"adj_value":18.6624},{"id":"China","value":45543.2,"adj_value":70828.78464},{"id":"Mongolia","value":23.2,"adj_value":36.08064},{"id":"Korea, North","value":0,"adj_value":0},{"id":"Korea, South","value":24184,"adj_value":37610.9568},{"id":"Hong Kong","value":10291.3,"adj_value":16005.02976},{"id":"Taiwan","value":28971.9,"adj_value":45057.09888},{"id":"Japan","value":123479.3,"adj_value":192035.0074}]},{"id":"Australia","children":[{"id":"Australia","value":3323,"adj_value":5167.9296},{"id":"Norfolk Island","value":78.6,"adj_value":122.23872},{"id":"Cocos (Keeling) Islands","value":0,"adj_value":0},{"id":"Christmas Island","value":0,"adj_value":0},{"id":"Heard and McDonald Islands","value":0.3,"adj_value":0.46656},{"id":"Papua New Guinea","value":50.2,"adj_value":78.07104},{"id":"New Zealand","value":1451.8,"adj_value":2257.83936},{"id":"Cook Islands","value":0.8,"adj_value":1.24416},{"id":"Tokelau","value":6.1,"adj_value":9.48672},{"id":"Niue","value":0.1,"adj_value":0.15552},{"id":"Samoa","value":0.3,"adj_value":0.46656},{"id":"Solomon Islands","value":4.3,"adj_value":6.68736},{"id":"Vanuatu","value":0,"adj_value":0},{"id":"Pitcairn Islands","value":0,"adj_value":0},{"id":"Kiribati","value":1.4,"adj_value":2.17728},{"id":"Tuvalu","value":0,"adj_value":0},{"id":"New Caledonia","value":40.2,"adj_value":62.51904},{"id":"Wallis and Futuna","value":0,"adj_value":0},{"id":"French Polynesia","value":14.4,"adj_value":22.39488},{"id":"Marshall Islands","value":11.1,"adj_value":17.26272},{"id":"Micronesia","value":13.2,"adj_value":20.52864},{"id":"Palau","value":5.8,"adj_value":9.02016},{"id":"Nauru","value":0,"adj_value":0},{"id":"Fiji","value":78.1,"adj_value":121.46112},{"id":"Tonga","value":6.2,"adj_value":9.64224}]},{"id":"Africa","children":[{"id":"Morocco","value":239.4,"adj_value":372.31488},{"id":"Algeria","value":1749.5,"adj_value":2720.8224},{"id":"Tunisia","value":70.4,"adj_value":109.48608},{"id":"Libya","value":0,"adj_value":0},{"id":"Egypt","value":606.3,"adj_value":942.91776},{"id":"Sudan","value":22.6,"adj_value":35.14752},{"id":"Western Sahara","value":0,"adj_value":0},{"id":"Equatorial Guinea","value":31,"adj_value":48.2112},{"id":"Mauritania","value":5.4,"adj_value":8.39808},{"id":"Cameroon","value":57.3,"adj_value":89.11296},{"id":"Senegal","value":4.9,"adj_value":7.62048},{"id":"Mali","value":3.6,"adj_value":5.59872},{"id":"Guinea","value":98.8,"adj_value":153.65376},{"id":"Sierra Leone","value":28.4,"adj_value":44.16768},{"id":"Cote d'Ivoire","value":214.1,"adj_value":332.96832},{"id":"Ghana","value":196.1,"adj_value":304.97472},{"id":"Gambia","value":2.2,"adj_value":3.42144},{"id":"Niger","value":1.4,"adj_value":2.17728},{"id":"Togo","value":3.3,"adj_value":5.13216},{"id":"Nigeria","value":4930.5,"adj_value":7667.9136},{"id":"Central African Republic","value":0.4,"adj_value":0.62208},{"id":"Gabon","value":1463.9,"adj_value":2276.65728},{"id":"Chad","value":3.3,"adj_value":5.13216},{"id":"St Helena","value":0,"adj_value":0},{"id":"Burkina Faso","value":0.4,"adj_value":0.62208},{"id":"Benin","value":10,"adj_value":15.552},{"id":"Angola","value":2232.3,"adj_value":3471.67296},{"id":"Congo (Brazzaville)","value":206.8,"adj_value":321.61536},{"id":"Guinea-Bissau","value":0,"adj_value":0},{"id":"Cabo Verde","value":0.2,"adj_value":0.31104},{"id":"Sao Tome and Principe","value":0.1,"adj_value":0.15552},{"id":"Liberia","value":9.9,"adj_value":15.39648},{"id":"Congo (Kinshasa)","value":267,"adj_value":415.2384},{"id":"Burundi","value":20.5,"adj_value":31.8816},{"id":"Rwanda","value":1.8,"adj_value":2.79936},{"id":"Somalia","value":0,"adj_value":0},{"id":"Ethiopia","value":0,"adj_value":0},{"id":"Eritrea","value":0.4,"adj_value":0.62208},{"id":"Ethiopia","value":32.9,"adj_value":51.16608},{"id":"Djibouti","value":0,"adj_value":0},{"id":"Uganda","value":13.4,"adj_value":20.83968},{"id":"Kenya","value":101.5,"adj_value":157.8528},{"id":"Seychelles","value":2.5,"adj_value":3.888},{"id":"British Indian Ocean Terr.","value":1.9,"adj_value":2.95488},{"id":"Tanzania","value":22.4,"adj_value":34.83648},{"id":"Mauritius","value":229.5,"adj_value":356.9184},{"id":"Mozambique","value":27.5,"adj_value":42.768},{"id":"Madagascar","value":57.4,"adj_value":89.26848},{"id":"Comoros","value":2.2,"adj_value":3.42144},{"id":"Reunion","value":0.4,"adj_value":0.62208},{"id":"French Southern and Antarctic","value":0.4,"adj_value":0.62208},{"id":"South Africa","value":2208,"adj_value":3433.8816},{"id":"Namibia","value":11.5,"adj_value":17.8848},{"id":"Botswana","value":21.3,"adj_value":33.12576},{"id":"Zambia","value":32.8,"adj_value":51.01056},{"id":"Swaziland","value":32.4,"adj_value":50.38848},{"id":"Zimbabwe","value":97.5,"adj_value":151.632},{"id":"Malawi","value":41.1,"adj_value":63.91872},{"id":"Lesotho","value":62.3,"adj_value":96.88896}]}]},{"id":"Exports","children":[{"id":"North America","children":[{"id":"Greenland","value":2.4,"adj_value":3.73248},{"id":"Canada","value":127226,"adj_value":197861.8752},{"id":"St Pierre and Miquelon","value":0.5,"adj_value":0.7776},{"id":"Mexico","value":46292.1,"adj_value":71993.47392},{"id":"Guatemala","value":1646.6,"adj_value":2560.79232},{"id":"Belize","value":99.7,"adj_value":155.05344},{"id":"El Salvador","value":1110.4,"adj_value":1726.89408},{"id":"Honduras","value":1278.9,"adj_value":1988.94528},{"id":"Nicaragua","value":249.8,"adj_value":388.48896},{"id":"Costa Rica","value":1736.6,"adj_value":2700.76032},{"id":"Panama","value":1389.6,"adj_value":2161.10592},{"id":"Bermuda","value":298.5,"adj_value":464.2272},{"id":"Bahamas","value":661.2,"adj_value":1028.29824},{"id":"Cuba","value":5.4,"adj_value":8.39808},{"id":"Jamaica","value":1420.2,"adj_value":2208.69504},{"id":"Turks and Caicos Islands","value":33.6,"adj_value":52.25472},{"id":"Cayman Islands","value":180.1,"adj_value":280.09152},{"id":"Haiti","value":550.1,"adj_value":855.51552},{"id":"Dominican Republic","value":3014.9,"adj_value":4688.77248},{"id":"Anguilla","value":14.6,"adj_value":22.70592},{"id":"British Virgin Islands","value":49.2,"adj_value":76.51584},{"id":"St Kitts and Nevis","value":43.6,"adj_value":67.80672},{"id":"Antigua and Barbuda","value":97,"adj_value":150.8544},{"id":"Montserrat","value":4.4,"adj_value":6.84288},{"id":"Dominica","value":26.6,"adj_value":41.36832},{"id":"St Lucia","value":80.8,"adj_value":125.66016},{"id":"St Vincent and the Grenadines","value":42.2,"adj_value":65.62944},{"id":"Grenada","value":26.9,"adj_value":41.83488},{"id":"Barbados","value":185.6,"adj_value":288.64512},{"id":"Trinidad and Tobago","value":689.2,"adj_value":1071.84384},{"id":"Netherlands Antilles","value":503.9,"adj_value":783.66528},{"id":"Aruba","value":247.6,"adj_value":385.06752},{"id":"Guadeloupe","value":69.1,"adj_value":107.46432},{"id":"Martinique","value":38.5,"adj_value":59.8752}]},{"id":"South America","children":[{"id":"Colombia","value":4624.4,"adj_value":7191.86688},{"id":"Venezuela","value":4640.4,"adj_value":7216.75008},{"id":"Guyana","value":141.3,"adj_value":219.74976},{"id":"Suriname","value":189.7,"adj_value":295.02144},{"id":"French Guiana","value":441.8,"adj_value":687.08736},{"id":"Ecuador","value":1538.3,"adj_value":2392.36416},{"id":"Peru","value":1775.4,"adj_value":2761.10208},{"id":"Bolivia","value":213.5,"adj_value":332.0352},{"id":"Chile","value":3614.7,"adj_value":5621.58144},{"id":"Brazil","value":11439.4,"adj_value":17790.55488},{"id":"Paraguay","value":992.4,"adj_value":1543.38048},{"id":"Uruguay","value":395.8,"adj_value":615.54816},{"id":"Argentina","value":4189.2,"adj_value":6515.04384},{"id":"Falkland Islands(Islas Malvin","value":0.3,"adj_value":0.46656}]},{"id":"Europe","children":[{"id":"Iceland","value":170.5,"adj_value":265.1616},{"id":"Sweden","value":3079.7,"adj_value":4789.54944},{"id":"Svalbard, Jan Mayen Island","value":1.1,"adj_value":1.71072},{"id":"Norway","value":1292.9,"adj_value":2010.71808},{"id":"Finland","value":1249.7,"adj_value":1943.53344},{"id":"Faroe Islands","value":0.4,"adj_value":0.62208},{"id":"Denmark","value":1517.7,"adj_value":2360.32704},{"id":"United Kingdom","value":28856.5,"adj_value":44877.6288},{"id":"Ireland","value":4108.7,"adj_value":6389.85024},{"id":"Netherlands","value":16557.6,"adj_value":25750.37952},{"id":"Belgium","value":12465.6,"adj_value":19386.50112},{"id":"Luxembourg","value":374.2,"adj_value":581.95584},{"id":"Andorra","value":16.5,"adj_value":25.6608},{"id":"Monaco","value":9.6,"adj_value":14.92992},{"id":"France","value":14245.2,"adj_value":22154.13504},{"id":"Germany","value":22394.3,"adj_value":34827.61536},{"id":"Austria","value":2017,"adj_value":3136.8384},{"id":"Czechoslovakia","value":0,"adj_value":0},{"id":"Czech Republic","value":362.8,"adj_value":564.22656},{"id":"Slovakia","value":61,"adj_value":94.8672},{"id":"Hungary","value":295.2,"adj_value":459.09504},{"id":"Liechtenstein","value":15.1,"adj_value":23.48352},{"id":"Switzerland","value":6227.4,"adj_value":9684.85248},{"id":"Estonia","value":139.1,"adj_value":216.32832},{"id":"Latvia","value":89.5,"adj_value":139.1904},{"id":"Lithuania","value":52.2,"adj_value":81.18144},{"id":"Poland","value":776.1,"adj_value":1206.99072},{"id":"USSR","value":0,"adj_value":0},{"id":"Russia","value":2823.4,"adj_value":4390.95168},{"id":"Belarus","value":47.9,"adj_value":74.49408},{"id":"Ukraine","value":223.4,"adj_value":347.43168},{"id":"Armenia","value":70.3,"adj_value":109.33056},{"id":"Azerbaijan","value":35.6,"adj_value":55.36512},{"id":"Georgia","value":95.2,"adj_value":148.05504},{"id":"Kazakhstan","value":80.9,"adj_value":125.81568},{"id":"Kyrgyzstan","value":24.6,"adj_value":38.25792},{"id":"Moldova","value":10.2,"adj_value":15.86304},{"id":"Tajikistan","value":17.6,"adj_value":27.37152},{"id":"Turkmenistan","value":34.3,"adj_value":53.34336},{"id":"Uzbekistan","value":63.4,"adj_value":98.59968},{"id":"Spain","value":5526,"adj_value":8594.0352},{"id":"Portugal","value":898.1,"adj_value":1396.72512},{"id":"Gibraltar","value":18.4,"adj_value":28.61568},{"id":"Malta","value":106.7,"adj_value":165.93984},{"id":"San Marino","value":5.7,"adj_value":8.86464},{"id":"Vatican City","value":0.3,"adj_value":0.46656},{"id":"Italy","value":8861.6,"adj_value":13781.56032},{"id":"Yugoslavia (former)","value":0,"adj_value":0},{"id":"Croatia","value":140,"adj_value":217.728},{"id":"Slovenia","value":109.6,"adj_value":170.44992},{"id":"Bosnia and Herzegovina","value":28.3,"adj_value":44.01216},{"id":"Macedonia","value":21.2,"adj_value":32.97024},{"id":"Serbia and Montenegro","value":2.1,"adj_value":3.26592},{"id":"Albania","value":13.5,"adj_value":20.9952},{"id":"Greece","value":1518.7,"adj_value":2361.88224},{"id":"Romania","value":253.2,"adj_value":393.77664},{"id":"Bulgaria","value":131.8,"adj_value":204.97536}]},{"id":"Asia","children":[{"id":"Turkey","value":2768,"adj_value":4304.7936},{"id":"Cyprus","value":257.8,"adj_value":400.93056},{"id":"Syria","value":223.4,"adj_value":347.43168},{"id":"Lebanon","value":592.2,"adj_value":920.98944},{"id":"Iraq","value":0.2,"adj_value":0.31104},{"id":"Iran","value":277.4,"adj_value":431.41248},{"id":"Israel","value":0,"adj_value":0},{"id":"Israel","value":5621,"adj_value":8741.7792},{"id":"Gaza Strip admin. by Israel","value":0.1,"adj_value":0.15552},{"id":"West Bank admin. by Israel","value":0.3,"adj_value":0.46656},{"id":"Jordan","value":335.3,"adj_value":521.45856},{"id":"Kuwait","value":1437.4,"adj_value":2235.44448},{"id":"Iraq-Saudi Arabia Neutral Zone","value":0,"adj_value":0},{"id":"Saudi Arabia","value":6155,"adj_value":9572.256},{"id":"Qatar","value":226,"adj_value":351.4752},{"id":"United Arab Emirates","value":2006.3,"adj_value":3120.19776},{"id":"Republic of Yemen","value":185.3,"adj_value":288.17856},{"id":"Oman","value":222,"adj_value":345.2544},{"id":"Bahrain","value":255.1,"adj_value":396.73152},{"id":"Afghanistan","value":4,"adj_value":6.2208},{"id":"India","value":3295.8,"adj_value":5125.62816},{"id":"Pakistan","value":941.3,"adj_value":1463.90976},{"id":"Nepal","value":9.8,"adj_value":15.24096},{"id":"Bangladesh","value":325,"adj_value":505.44},{"id":"Sri Lanka","value":279.1,"adj_value":434.05632},{"id":"Burma","value":16.2,"adj_value":25.19424},{"id":"Thailand","value":6665,"adj_value":10365.408},{"id":"Vietnam","value":252.3,"adj_value":392.37696},{"id":"Laos","value":1.6,"adj_value":2.48832},{"id":"Cambodia","value":26.9,"adj_value":41.83488},{"id":"Malaysia","value":8816.1,"adj_value":13710.79872},{"id":"Singapore","value":15333,"adj_value":23845.8816},{"id":"Indonesia","value":3359.6,"adj_value":5224.84992},{"id":"Brunei","value":190.1,"adj_value":295.64352},{"id":"Philippines","value":5294.8,"adj_value":8234.47296},{"id":"Macau","value":29.9,"adj_value":46.50048},{"id":"Bhutan","value":0.5,"adj_value":0.7776},{"id":"Maldives","value":1.1,"adj_value":1.71072},{"id":"China","value":11753.7,"adj_value":18279.35424},{"id":"Mongolia","value":13.9,"adj_value":21.61728},{"id":"Korea, North","value":11.6,"adj_value":18.04032},{"id":"Korea, South","value":25379.9,"adj_value":39470.82048},{"id":"Hong Kong","value":14231.5,"adj_value":22132.8288},{"id":"Taiwan","value":19289.6,"adj_value":29999.18592},{"id":"Japan","value":64342.7,"adj_value":100065.767}]},{"id":"Australia","children":[{"id":"Australia","value":10789.1,"adj_value":16779.20832},{"id":"Norfolk Island","value":1.2,"adj_value":1.86624},{"id":"Cocos (Keeling) Islands","value":0.5,"adj_value":0.7776},{"id":"Christmas Island","value":4.5,"adj_value":6.9984},{"id":"Heard and McDonald Islands","value":0,"adj_value":0},{"id":"Papua New Guinea","value":50.8,"adj_value":79.00416},{"id":"New Zealand","value":1691.3,"adj_value":2630.30976},{"id":"Cook Islands","value":0.9,"adj_value":1.39968},{"id":"Tokelau","value":0.1,"adj_value":0.15552},{"id":"Niue","value":31.5,"adj_value":48.9888},{"id":"Samoa","value":7.3,"adj_value":11.35296},{"id":"Solomon Islands","value":2.7,"adj_value":4.19904},{"id":"Vanuatu","value":1.1,"adj_value":1.71072},{"id":"Pitcairn Islands","value":2.2,"adj_value":3.42144},{"id":"Kiribati","value":2.3,"adj_value":3.57696},{"id":"Tuvalu","value":0.3,"adj_value":0.46656},{"id":"New Caledonia","value":22.3,"adj_value":34.68096},{"id":"Wallis and Futuna","value":0,"adj_value":0},{"id":"French Polynesia","value":82.3,"adj_value":127.99296},{"id":"Marshall Islands","value":31.8,"adj_value":49.45536},{"id":"Micronesia","value":23.3,"adj_value":36.23616},{"id":"Palau","value":8.3,"adj_value":12.90816},{"id":"Nauru","value":0.5,"adj_value":0.7776},{"id":"Fiji","value":31.8,"adj_value":49.45536},{"id":"Tonga","value":7.5,"adj_value":11.664}]},{"id":"Africa","children":[{"id":"Morocco","value":517.4,"adj_value":804.66048},{"id":"Algeria","value":774.1,"adj_value":1203.88032},{"id":"Tunisia","value":214.9,"adj_value":334.21248},{"id":"Libya","value":0,"adj_value":0},{"id":"Egypt","value":2985.1,"adj_value":4642.42752},{"id":"Sudan","value":43.5,"adj_value":67.6512},{"id":"Western Sahara","value":0,"adj_value":0},{"id":"Equatorial Guinea","value":5.2,"adj_value":8.08704},{"id":"Mauritania","value":43.2,"adj_value":67.18464},{"id":"Cameroon","value":45.6,"adj_value":70.91712},{"id":"Senegal","value":67.9,"adj_value":105.59808},{"id":"Mali","value":23.1,"adj_value":35.92512},{"id":"Guinea","value":66.5,"adj_value":103.4208},{"id":"Sierra Leone","value":18.1,"adj_value":28.14912},{"id":"Cote d'Ivoire","value":173.3,"adj_value":269.51616},{"id":"Ghana","value":167.2,"adj_value":260.02944},{"id":"Gambia","value":6.1,"adj_value":9.48672},{"id":"Niger","value":39.6,"adj_value":61.58592},{"id":"Togo","value":18.5,"adj_value":28.7712},{"id":"Nigeria","value":602.9,"adj_value":937.63008},{"id":"Central African Republic","value":6.3,"adj_value":9.79776},{"id":"Gabon","value":54.5,"adj_value":84.7584},{"id":"Chad","value":10.8,"adj_value":16.79616},{"id":"St Helena","value":0.3,"adj_value":0.46656},{"id":"Burkina Faso","value":14.7,"adj_value":22.86144},{"id":"Benin","value":34,"adj_value":52.8768},{"id":"Angola","value":259.7,"adj_value":403.88544},{"id":"Congo (Brazzaville)","value":54.8,"adj_value":85.22496},{"id":"Guinea-Bissau","value":0.8,"adj_value":1.24416},{"id":"Cabo Verde","value":7.5,"adj_value":11.664},{"id":"Sao Tome and Principe","value":1.8,"adj_value":2.79936},{"id":"Liberia","value":41.7,"adj_value":64.85184},{"id":"Congo (Kinshasa)","value":77.1,"adj_value":119.90592},{"id":"Burundi","value":2.9,"adj_value":4.51008},{"id":"Rwanda","value":38.3,"adj_value":59.56416},{"id":"Somalia","value":8.1,"adj_value":12.59712},{"id":"Ethiopia","value":0,"adj_value":0},{"id":"Eritrea","value":16.5,"adj_value":25.6608},{"id":"Ethiopia","value":147.7,"adj_value":229.70304},{"id":"Djibouti","value":8.5,"adj_value":13.2192},{"id":"Uganda","value":22.1,"adj_value":34.36992},{"id":"Kenya","value":114,"adj_value":177.2928},{"id":"Seychelles","value":7.2,"adj_value":11.19744},{"id":"British Indian Ocean Terr.","value":1.8,"adj_value":2.79936},{"id":"Tanzania","value":66.2,"adj_value":102.95424},{"id":"Mauritius","value":24.6,"adj_value":38.25792},{"id":"Mozambique","value":49.3,"adj_value":76.67136},{"id":"Madagascar","value":9.8,"adj_value":15.24096},{"id":"Comoros","value":0.6,"adj_value":0.93312},{"id":"Reunion","value":3.7,"adj_value":5.75424},{"id":"French Southern and Antarctic","value":0,"adj_value":0},{"id":"South Africa","value":2750.5,"adj_value":4277.5776},{"id":"Namibia","value":26.5,"adj_value":41.2128},{"id":"Botswana","value":35.7,"adj_value":55.52064},{"id":"Zambia","value":48.9,"adj_value":76.04928},{"id":"Swaziland","value":3.2,"adj_value":4.97664},{"id":"Zimbabwe","value":122.1,"adj_value":189.88992},{"id":"Malawi","value":17.8,"adj_value":27.68256},{"id":"Lesotho","value":1.8,"adj_value":2.79936}]}]}]},{"id":"2005","children":[{"id":"Imports","children":[{"id":"North America","children":[{"id":"Greenland","value":17.255599,"adj_value":20.94139495},{"id":"Canada","value":290384.2932,"adj_value":352410.3782},{"id":"St Pierre and Miquelon","value":1.094378,"adj_value":1.328137141},{"id":"Mexico","value":170108.6141,"adj_value":206443.8141},{"id":"Guatemala","value":3137.382263,"adj_value":3807.527114},{"id":"Belize","value":98.265102,"adj_value":119.2545278},{"id":"El Salvador","value":1988.765718,"adj_value":2413.566075},{"id":"Honduras","value":3749.243099,"adj_value":4550.081425},{"id":"Nicaragua","value":1180.787602,"adj_value":1433.003834},{"id":"Costa Rica","value":3415.279262,"adj_value":4144.782912},{"id":"Panama","value":327.060069,"adj_value":396.9200997},{"id":"Bermuda","value":87.276753,"adj_value":105.9190674},{"id":"Bahamas","value":699.936003,"adj_value":849.4423332},{"id":"Cuba","value":0.009079,"adj_value":0.011018274},{"id":"Jamaica","value":375.57236,"adj_value":455.7946161},{"id":"Turks and Caicos Islands","value":9.434412,"adj_value":11.4496024},{"id":"Cayman Islands","value":53.497875,"adj_value":64.9250211},{"id":"Haiti","value":447.217315,"adj_value":542.7429335},{"id":"Dominican Republic","value":4603.684143,"adj_value":5587.031076},{"id":"Anguilla","value":3.754737,"adj_value":4.556748823},{"id":"British Virgin Islands","value":33.579607,"adj_value":40.75221106},{"id":"St Kitts and Nevis","value":49.718541,"adj_value":60.33842136},{"id":"Antigua and Barbuda","value":4.414365,"adj_value":5.357273364},{"id":"Montserrat","value":0.953906,"adj_value":1.157660322},{"id":"Dominica","value":3.344243,"adj_value":4.058573305},{"id":"St Lucia","value":32.396909,"adj_value":39.31688876},{"id":"St Vincent and the Grenadines","value":15.650342,"adj_value":18.99325505},{"id":"Grenada","value":5.852881,"adj_value":7.103056382},{"id":"Barbados","value":31.903789,"adj_value":38.71843833},{"id":"Trinidad and Tobago","value":7890.88378,"adj_value":9576.376555},{"id":"Netherlands Antilles","value":922.413941,"adj_value":1119.441559},{"id":"Aruba","value":2919.735672,"adj_value":3543.391212},{"id":"Guadeloupe","value":2.128806,"adj_value":2.583518962},{"id":"Martinique","value":22.236488,"adj_value":26.98620184}]},{"id":"South America","children":[{"id":"Colombia","value":8849.380048,"adj_value":10739.60763},{"id":"Venezuela","value":33978.13481,"adj_value":41235.8644},{"id":"Guyana","value":119.931261,"adj_value":145.5485783},{"id":"Suriname","value":165.346376,"adj_value":200.6643619},{"id":"French Guiana","value":0.121285,"adj_value":0.147191476},{"id":"Ecuador","value":5758.679346,"adj_value":6988.733254},{"id":"Peru","value":5119.15577,"adj_value":6212.607442},{"id":"Bolivia","value":293.216045,"adj_value":355.8469922},{"id":"Chile","value":6664.333836,"adj_value":8087.835543},{"id":"Brazil","value":24435.51938,"adj_value":29654.94632},{"id":"Paraguay","value":51.645596,"adj_value":62.67709531},{"id":"Uruguay","value":732.311644,"adj_value":888.7334112},{"id":"Argentina","value":4583.613305,"adj_value":5562.673107},{"id":"Falkland Islands(Islas Malvin","value":9.261546,"adj_value":11.23981223}]},{"id":"Europe","children":[{"id":"Iceland","value":268.97508,"adj_value":326.4281571},{"id":"Sweden","value":13820.97724,"adj_value":16773.13798},{"id":"Svalbard, Jan Mayen Island","value":0.039576,"adj_value":0.048029434},{"id":"Norway","value":6776.30892,"adj_value":8223.728505},{"id":"Finland","value":4341.679942,"adj_value":5269.062778},{"id":"Faroe Islands","value":4.276273,"adj_value":5.189684913},{"id":"Denmark","value":5144.20165,"adj_value":6243.003122},{"id":"United Kingdom","value":51032.62111,"adj_value":61933.18897},{"id":"Ireland","value":28733.08026,"adj_value":34870.4662},{"id":"Netherlands","value":14862.04151,"adj_value":18036.57358},{"id":"Belgium","value":13022.90274,"adj_value":15804.59477},{"id":"Luxembourg","value":388.834493,"adj_value":471.8895407},{"id":"Andorra","value":0.673148,"adj_value":0.816932413},{"id":"Monaco","value":37.485881,"adj_value":45.49286518},{"id":"France","value":33842.05751,"adj_value":41070.721},{"id":"Germany","value":84750.87138,"adj_value":102853.6575},{"id":"Austria","value":6102.944725,"adj_value":7406.533718},{"id":"Czech Republic","value":2192.863031,"adj_value":2661.258574},{"id":"Slovakia","value":960.730063,"adj_value":1165.942004},{"id":"Hungary","value":2561.172978,"adj_value":3108.239526},{"id":"Liechtenstein","value":295.705721,"adj_value":358.868463},{"id":"Switzerland","value":12999.88108,"adj_value":15776.65568},{"id":"Estonia","value":511.379949,"adj_value":620.6107061},{"id":"Latvia","value":362.159252,"adj_value":439.5164682},{"id":"Lithuania","value":633.912046,"adj_value":769.315659},{"id":"Poland","value":1948.58625,"adj_value":2364.804273},{"id":"Russia","value":15306.67384,"adj_value":18576.17937},{"id":"Belarus","value":345.161433,"adj_value":418.8879151},{"id":"Ukraine","value":1098.029235,"adj_value":1332.56828},{"id":"Armenia","value":46.191425,"adj_value":56.05791338},{"id":"Azerbaijan","value":45.361225,"adj_value":55.05038266},{"id":"Georgia","value":194.384289,"adj_value":235.9047731},{"id":"Kazakhstan","value":1101.145431,"adj_value":1336.350095},{"id":"Kyrgyzstan","value":4.618689,"adj_value":5.60524097},{"id":"Moldova","value":50.224656,"adj_value":60.95264252},{"id":"Tajikistan","value":241.029155,"adj_value":292.5129825},{"id":"Turkmenistan","value":135.325351,"adj_value":164.230846},{"id":"Uzbekistan","value":95.627811,"adj_value":116.0539114},{"id":"Spain","value":8614.64214,"adj_value":10454.7297},{"id":"Portugal","value":2328.674933,"adj_value":2826.079899},{"id":"Gibraltar","value":4.637081,"adj_value":5.627561502},{"id":"Malta","value":282.653662,"adj_value":343.0284842},{"id":"San Marino","value":1.389972,"adj_value":1.686870019},{"id":"Vatican City","value":0.282286,"adj_value":0.34258229},{"id":"Italy","value":31009.26008,"adj_value":37632.83803},{"id":"Croatia","value":364.277603,"adj_value":442.087299},{"id":"Slovenia","value":413.019469,"adj_value":501.2404276},{"id":"Bosnia and Herzegovina","value":70.462111,"adj_value":85.51281791},{"id":"Macedonia","value":48.149502,"adj_value":58.43423563},{"id":"Serbia and Montenegro","value":54.632827,"adj_value":66.30239885},{"id":"Albania","value":37.18875,"adj_value":45.132267},{"id":"Greece","value":883.73016,"adj_value":1072.494922},{"id":"Romania","value":1207.584718,"adj_value":1465.524814},{"id":"Bulgaria","value":454.262612,"adj_value":551.2931059}]},{"id":"Asia","children":[{"id":"Turkey","value":5182.052179,"adj_value":6288.938524},{"id":"Cyprus","value":30.536194,"adj_value":37.05872504},{"id":"Syria","value":323.599119,"adj_value":392.7198908},{"id":"Lebanon","value":86.370988,"adj_value":104.819831},{"id":"Iraq","value":9053.695686,"adj_value":10987.56508},{"id":"Iran","value":174.457417,"adj_value":211.7215213},{"id":"Israel","value":16830.46608,"adj_value":20425.45364},{"id":"Gaza Strip admin. by Israel","value":1.443661,"adj_value":1.75202699},{"id":"West Bank admin. by Israel","value":1.604198,"adj_value":1.946854693},{"id":"Jordan","value":1266.84986,"adj_value":1537.44899},{"id":"Kuwait","value":4334.781445,"adj_value":5260.690762},{"id":"Saudi Arabia","value":27192.64204,"adj_value":33000.99038},{"id":"Qatar","value":447.861094,"adj_value":543.5242237},{"id":"United Arab Emirates","value":1468.316627,"adj_value":1781.949059},{"id":"Republic of Yemen","value":278.635079,"adj_value":338.1515319},{"id":"Oman","value":555.043525,"adj_value":673.6008219},{"id":"Bahrain","value":431.61192,"adj_value":523.8042261},{"id":"Afghanistan","value":67.310191,"adj_value":81.6876478},{"id":"India","value":18804.16965,"adj_value":22820.74029},{"id":"Pakistan","value":3253.181975,"adj_value":3948.061645},{"id":"Nepal","value":111.212077,"adj_value":134.9669766},{"id":"Bangladesh","value":2693.035035,"adj_value":3268.267318},{"id":"Sri Lanka","value":2082.938898,"adj_value":2527.854647},{"id":"Burma","value":0.0615,"adj_value":0.0746364},{"id":"Thailand","value":19889.75578,"adj_value":24138.20761},{"id":"Vietnam","value":6631.158734,"adj_value":8047.57424},{"id":"Laos","value":4.166156,"adj_value":5.056046922},{"id":"Cambodia","value":1766.956953,"adj_value":2144.378958},{"id":"Malaysia","value":33685.15957,"adj_value":40880.30965},{"id":"Singapore","value":15110.08962,"adj_value":18337.60477},{"id":"Indonesia","value":12014.34419,"adj_value":14580.6081},{"id":"East Timor","value":0.084963,"adj_value":0.103111097},{"id":"Brunei","value":562.742346,"adj_value":682.9441111},{"id":"Philippines","value":9250.433389,"adj_value":11226.32596},{"id":"Macau","value":1249.02212,"adj_value":1515.813245},{"id":"Bhutan","value":0.615516,"adj_value":0.746990218},{"id":"Maldives","value":5.496456,"adj_value":6.670499002},{"id":"China","value":243470.1048,"adj_value":295475.3192},{"id":"Mongolia","value":143.645404,"adj_value":174.3280623},{"id":"Korea, North","value":0.003252,"adj_value":0.003946627},{"id":"Korea, South","value":43781.44106,"adj_value":53133.15687},{"id":"Hong Kong","value":8891.705575,"adj_value":10790.97389},{"id":"Taiwan","value":34825.82882,"adj_value":42264.62586},{"id":"Japan","value":138003.6962,"adj_value":167481.2857}]},{"id":"Australia","children":[{"id":"Australia","value":7342.17895,"adj_value":8910.468374},{"id":"Norfolk Island","value":0.17315,"adj_value":0.21013484},{"id":"Cocos (Keeling) Islands","value":0.484315,"adj_value":0.587764684},{"id":"Christmas Island","value":0.417613,"adj_value":0.506815137},{"id":"Heard and McDonald Islands","value":0.016396,"adj_value":0.019898186},{"id":"Papua New Guinea","value":58.451246,"adj_value":70.93643215},{"id":"New Zealand","value":3155.239797,"adj_value":3829.199018},{"id":"Cook Islands","value":1.744825,"adj_value":2.11751962},{"id":"Tokelau","value":10.800762,"adj_value":13.10780476},{"id":"Niue","value":0.138878,"adj_value":0.168542341},{"id":"Samoa","value":7.937575,"adj_value":9.63304102},{"id":"Solomon Islands","value":1.351564,"adj_value":1.64025807},{"id":"Vanuatu","value":2.489141,"adj_value":3.020821518},{"id":"Pitcairn Islands","value":1.040512,"adj_value":1.262765363},{"id":"Kiribati","value":1.104581,"adj_value":1.340519502},{"id":"Tuvalu","value":0.056868,"adj_value":0.069015005},{"id":"New Caledonia","value":27.174251,"adj_value":32.97867101},{"id":"Wallis and Futuna","value":0.022469,"adj_value":0.027268378},{"id":"French Polynesia","value":60.124235,"adj_value":72.9667716},{"id":"Marshall Islands","value":17.205126,"adj_value":20.88014091},{"id":"Micronesia","value":1.557731,"adj_value":1.890462342},{"id":"Palau","value":0.484544,"adj_value":0.588042598},{"id":"Nauru","value":0.148786,"adj_value":0.18056669},{"id":"Fiji","value":169.460711,"adj_value":205.6575189},{"id":"Tonga","value":5.350431,"adj_value":6.493283062}]},{"id":"Africa","children":[{"id":"Morocco","value":445.793996,"adj_value":541.0155935},{"id":"Algeria","value":10446.43785,"adj_value":12677.79698},{"id":"Tunisia","value":263.768113,"adj_value":320.1089819},{"id":"Libya","value":1590.341099,"adj_value":1930.037958},{"id":"Egypt","value":2091.236887,"adj_value":2537.925086},{"id":"Sudan","value":13.574271,"adj_value":16.47373529},{"id":"Western Sahara","value":0,"adj_value":0},{"id":"Equatorial Guinea","value":1561.137497,"adj_value":1894.596466},{"id":"Mauritania","value":0.825319,"adj_value":1.001607138},{"id":"Cameroon","value":158.161864,"adj_value":191.9452382},{"id":"Senegal","value":3.662962,"adj_value":4.445370683},{"id":"Mali","value":3.649953,"adj_value":4.429582961},{"id":"Guinea","value":74.733573,"adj_value":90.69666419},{"id":"Sierra Leone","value":9.312822,"adj_value":11.30204078},{"id":"Cote d'Ivoire","value":1197.97516,"adj_value":1453.862654},{"id":"Ghana","value":158.409617,"adj_value":192.2459112},{"id":"Gambia","value":0.427153,"adj_value":0.518392881},{"id":"Niger","value":65.51339,"adj_value":79.5070501},{"id":"Togo","value":6.439273,"adj_value":7.814701713},{"id":"Nigeria","value":24239.35673,"adj_value":29416.88333},{"id":"Central African Republic","value":5.696947,"adj_value":6.913814879},{"id":"Gabon","value":2815.602273,"adj_value":3417.014919},{"id":"Chad","value":1498.086294,"adj_value":1818.077526},{"id":"St Helena","value":3.269267,"adj_value":3.967582431},{"id":"Burkina Faso","value":2.084203,"adj_value":2.529388761},{"id":"Benin","value":0.513184,"adj_value":0.622800102},{"id":"Angola","value":8484.361601,"adj_value":10296.62124},{"id":"Congo (Brazzaville)","value":1622.90154,"adj_value":1969.553309},{"id":"Guinea-Bissau","value":0.120677,"adj_value":0.146453607},{"id":"Cabo Verde","value":2.62425,"adj_value":3.1847898},{"id":"Sao Tome and Principe","value":0.216017,"adj_value":0.262158231},{"id":"Liberia","value":90.827263,"adj_value":110.2279664},{"id":"Congo (Kinshasa)","value":263.558216,"adj_value":319.8542509},{"id":"Burundi","value":4.423229,"adj_value":5.368030714},{"id":"Rwanda","value":6.301468,"adj_value":7.647461565},{"id":"Somalia","value":0.307638,"adj_value":0.373349477},{"id":"Eritrea","value":1.269401,"adj_value":1.540545054},{"id":"Ethiopia","value":61.802253,"adj_value":75.00321424},{"id":"Djibouti","value":1.101206,"adj_value":1.336423602},{"id":"Uganda","value":25.769069,"adj_value":31.27334214},{"id":"Kenya","value":348.019269,"adj_value":422.3561849},{"id":"Seychelles","value":5.883749,"adj_value":7.140517786},{"id":"British Indian Ocean Terr.","value":0.432984,"adj_value":0.525469382},{"id":"Tanzania","value":33.695475,"adj_value":40.89282846},{"id":"Mauritius","value":221.85071,"adj_value":269.2380217},{"id":"Mozambique","value":11.905754,"adj_value":14.44882305},{"id":"Madagascar","value":323.631165,"adj_value":392.7587818},{"id":"Comoros","value":1.447044,"adj_value":1.756132598},{"id":"Reunion","value":5.835528,"adj_value":7.081996781},{"id":"French Southern and Antarctic","value":0.05164,"adj_value":0.062670304},{"id":"South Africa","value":5885.639948,"adj_value":7142.812641},{"id":"Namibia","value":129.590672,"adj_value":157.2712395},{"id":"Botswana","value":178.164424,"adj_value":216.220345},{"id":"Zambia","value":31.70289,"adj_value":38.4746273},{"id":"Swaziland","value":198.886296,"adj_value":241.3684088},{"id":"Zimbabwe","value":94.328983,"adj_value":114.4776538},{"id":"Malawi","value":115.50192,"adj_value":140.1731301},{"id":"Lesotho","value":403.608048,"adj_value":489.8187271}]}]},{"id":"Exports","children":[{"id":"North America","children":[{"id":"Greenland","value":5.085009,"adj_value":6.171166922},{"id":"Canada","value":211898.6894,"adj_value":257160.2494},{"id":"St Pierre and Miquelon","value":0.980031,"adj_value":1.189365622},{"id":"Mexico","value":120247.5801,"adj_value":145932.4633},{"id":"Guatemala","value":2835.38039,"adj_value":3441.017641},{"id":"Belize","value":217.562773,"adj_value":264.0341813},{"id":"El Salvador","value":1854.286657,"adj_value":2250.362287},{"id":"Honduras","value":3253.813808,"adj_value":3948.828437},{"id":"Nicaragua","value":625.460463,"adj_value":759.0588179},{"id":"Costa Rica","value":3598.560177,"adj_value":4367.212631},{"id":"Panama","value":2162.020485,"adj_value":2623.828061},{"id":"Bermuda","value":490.497944,"adj_value":595.2683048},{"id":"Bahamas","value":1786.740047,"adj_value":2168.387721},{"id":"Cuba","value":369.034678,"adj_value":447.8604852},{"id":"Jamaica","value":1700.769277,"adj_value":2064.053595},{"id":"Turks and Caicos Islands","value":237.752693,"adj_value":288.5366682},{"id":"Cayman Islands","value":680.670387,"adj_value":826.0615817},{"id":"Haiti","value":709.620597,"adj_value":861.1955565},{"id":"Dominican Republic","value":4718.733392,"adj_value":5726.654845},{"id":"Anguilla","value":32.186758,"adj_value":39.06184951},{"id":"British Virgin Islands","value":124.856685,"adj_value":151.5260729},{"id":"St Kitts and Nevis","value":94.069439,"adj_value":114.1626712},{"id":"Antigua and Barbuda","value":190.447421,"adj_value":231.1269901},{"id":"Montserrat","value":4.848606,"adj_value":5.884268242},{"id":"Dominica","value":61.540001,"adj_value":74.68494521},{"id":"St Lucia","value":135.389135,"adj_value":164.3082542},{"id":"St Vincent and the Grenadines","value":45.411401,"adj_value":55.11127625},{"id":"Grenada","value":82.440305,"adj_value":100.0495541},{"id":"Barbados","value":394.92009,"adj_value":479.2750212},{"id":"Trinidad and Tobago","value":1416.748479,"adj_value":1719.365954},{"id":"Netherlands Antilles","value":1137.633614,"adj_value":1380.632154},{"id":"Aruba","value":558.924451,"adj_value":678.3107137},{"id":"Guadeloupe","value":54.512655,"adj_value":66.15655811},{"id":"Martinique","value":34.95999,"adj_value":42.42744386}]},{"id":"South America","children":[{"id":"Colombia","value":5462.357164,"adj_value":6629.116654},{"id":"Venezuela","value":6420.897723,"adj_value":7792.401477},{"id":"Guyana","value":176.704601,"adj_value":214.4487038},{"id":"Suriname","value":245.701079,"adj_value":298.1828295},{"id":"French Guiana","value":26.993942,"adj_value":32.75984801},{"id":"Ecuador","value":1963.825872,"adj_value":2383.299078},{"id":"Peru","value":2309.446378,"adj_value":2802.744124},{"id":"Bolivia","value":219.479092,"adj_value":266.3598261},{"id":"Chile","value":5133.523351,"adj_value":6230.043939},{"id":"Brazil","value":15371.71785,"adj_value":18655.11678},{"id":"Paraguay","value":895.819607,"adj_value":1087.166675},{"id":"Uruguay","value":356.676188,"adj_value":432.8622218},{"id":"Argentina","value":4121.861182,"adj_value":5002.29073},{"id":"Falkland Islands(Islas Malvin","value":9.049418,"adj_value":10.98237368}]},{"id":"Europe","children":[{"id":"Iceland","value":512.019513,"adj_value":621.386881},{"id":"Sweden","value":3715.36862,"adj_value":4508.971357},{"id":"Svalbard, Jan Mayen Island","value":5.677609,"adj_value":6.890346282},{"id":"Norway","value":1941.882004,"adj_value":2356.668},{"id":"Finland","value":2254.052992,"adj_value":2735.518711},{"id":"Faroe Islands","value":2.528152,"adj_value":3.068165267},{"id":"Denmark","value":1918.423705,"adj_value":2328.199008},{"id":"United Kingdom","value":38568.08305,"adj_value":46806.22558},{"id":"Ireland","value":8446.771993,"adj_value":10251.00249},{"id":"Netherlands","value":26467.74458,"adj_value":32121.25482},{"id":"Belgium","value":18690.60657,"adj_value":22682.92013},{"id":"Luxembourg","value":711.38307,"adj_value":863.3344938},{"id":"Andorra","value":10.549473,"adj_value":12.80284043},{"id":"Monaco","value":16.776668,"adj_value":20.36016428},{"id":"France","value":22258.62805,"adj_value":27013.071},{"id":"Germany","value":34183.65627,"adj_value":41485.28525},{"id":"Austria","value":2544.481273,"adj_value":3087.982473},{"id":"Czech Republic","value":1053.557481,"adj_value":1278.597359},{"id":"Slovakia","value":149.800634,"adj_value":181.7980494},{"id":"Hungary","value":1023.258213,"adj_value":1241.826167},{"id":"Liechtenstein","value":19.7165,"adj_value":23.9279444},{"id":"Switzerland","value":10717.52806,"adj_value":13006.79206},{"id":"Estonia","value":145.425805,"adj_value":176.4887569},{"id":"Latvia","value":177.537085,"adj_value":215.4590064},{"id":"Lithuania","value":390.027824,"adj_value":473.3377672},{"id":"Poland","value":1267.748385,"adj_value":1538.53944},{"id":"Russia","value":3962.270261,"adj_value":4808.611189},{"id":"Belarus","value":34.942759,"adj_value":42.40653232},{"id":"Ukraine","value":532.954308,"adj_value":646.7933482},{"id":"Armenia","value":65.483218,"adj_value":79.47043336},{"id":"Azerbaijan","value":132.462798,"adj_value":160.7568517},{"id":"Georgia","value":213.886826,"adj_value":259.573052},{"id":"Kazakhstan","value":538.286932,"adj_value":653.2650207},{"id":"Kyrgyzstan","value":31.140901,"adj_value":37.79259745},{"id":"Moldova","value":40.069837,"adj_value":48.62875418},{"id":"Tajikistan","value":28.7867,"adj_value":34.93553912},{"id":"Turkmenistan","value":215.170092,"adj_value":261.1304237},{"id":"Uzbekistan","value":73.826609,"adj_value":89.59597268},{"id":"Spain","value":6839.116578,"adj_value":8299.951879},{"id":"Portugal","value":1131.865366,"adj_value":1373.631808},{"id":"Gibraltar","value":163.257568,"adj_value":198.1293845},{"id":"Malta","value":193.709217,"adj_value":235.0855058},{"id":"San Marino","value":4.676009,"adj_value":5.674804522},{"id":"Vatican City","value":24.181227,"adj_value":29.34633709},{"id":"Italy","value":11524.32529,"adj_value":13985.92117},{"id":"Croatia","value":158.621993,"adj_value":192.5036507},{"id":"Slovenia","value":233.830317,"adj_value":283.7764727},{"id":"Bosnia and Herzegovina","value":17.573793,"adj_value":21.32755518},{"id":"Macedonia","value":31.556267,"adj_value":38.29668563},{"id":"Serbia and Montenegro","value":132.49633,"adj_value":160.7975461},{"id":"Albania","value":18.513925,"adj_value":22.46849938},{"id":"Greece","value":1192.248494,"adj_value":1446.912772},{"id":"Romania","value":608.858767,"adj_value":738.9109996},{"id":"Bulgaria","value":267.93442,"adj_value":325.1652121}]},{"id":"Asia","children":[{"id":"Turkey","value":4238.966194,"adj_value":5144.409373},{"id":"Cyprus","value":84.179247,"adj_value":102.1599342},{"id":"Syria","value":155.049379,"adj_value":188.1679264},{"id":"Lebanon","value":465.688546,"adj_value":565.1596194},{"id":"Iraq","value":1373.986265,"adj_value":1667.469731},{"id":"Iran","value":95.773068,"adj_value":116.2301953},{"id":"Israel","value":9737.340849,"adj_value":11817.23685},{"id":"Gaza Strip admin. by Israel","value":0.23112,"adj_value":0.280487232},{"id":"West Bank admin. by Israel","value":3.720993,"adj_value":4.515797105},{"id":"Jordan","value":644.195347,"adj_value":781.7954731},{"id":"Kuwait","value":1974.875551,"adj_value":2396.708969},{"id":"Saudi Arabia","value":6805.402418,"adj_value":8259.036374},{"id":"Qatar","value":986.642413,"adj_value":1197.389232},{"id":"United Arab Emirates","value":8119.527357,"adj_value":9853.8584},{"id":"Republic of Yemen","value":219.04852,"adj_value":265.8372839},{"id":"Oman","value":570.72512,"adj_value":692.6320056},{"id":"Bahrain","value":350.78451,"adj_value":425.7120813},{"id":"Afghanistan","value":262.153213,"adj_value":318.1491393},{"id":"India","value":7918.602428,"adj_value":9610.015907},{"id":"Pakistan","value":1251.63194,"adj_value":1518.980522},{"id":"Nepal","value":24.704668,"adj_value":29.98158508},{"id":"Bangladesh","value":319.769758,"adj_value":388.0725783},{"id":"Sri Lanka","value":197.631294,"adj_value":239.8453384},{"id":"Burma","value":5.464172,"adj_value":6.631319139},{"id":"Thailand","value":7256.616259,"adj_value":8806.629492},{"id":"Vietnam","value":1193.152202,"adj_value":1448.009512},{"id":"Laos","value":9.807849,"adj_value":11.90280555},{"id":"Cambodia","value":69.652929,"adj_value":84.53079463},{"id":"Malaysia","value":10460.83317,"adj_value":12695.26713},{"id":"Singapore","value":20466.07346,"adj_value":24837.62675},{"id":"Indonesia","value":3053.913961,"adj_value":3706.229983},{"id":"East Timor","value":8.685474,"adj_value":10.54069125},{"id":"Brunei","value":49.614155,"adj_value":60.21173851},{"id":"Philippines","value":6895.406023,"adj_value":8368.26475},{"id":"Macau","value":101.575899,"adj_value":123.272511},{"id":"Bhutan","value":3.05218,"adj_value":3.704125648},{"id":"Maldives","value":9.25555,"adj_value":11.23253548},{"id":"China","value":41192.01012,"adj_value":49990.62349},{"id":"Mongolia","value":21.879286,"adj_value":26.55270149},{"id":"Korea, North","value":5.757048,"adj_value":6.986753453},{"id":"Korea, South","value":27571.60598,"adj_value":33460.90101},{"id":"Hong Kong","value":16351.02861,"adj_value":19843.60832},{"id":"Taiwan","value":21614.49693,"adj_value":26231.35347},{"id":"Japan","value":54680.57985,"adj_value":66360.3517}]},{"id":"Australia","children":[{"id":"Australia","value":15588.51968,"adj_value":18918.22748},{"id":"Norfolk Island","value":0.391532,"adj_value":0.475163235},{"id":"Cocos (Keeling) Islands","value":1.048051,"adj_value":1.271914694},{"id":"Christmas Island","value":2.00592,"adj_value":2.434384512},{"id":"Heard and McDonald Islands","value":0.160607,"adj_value":0.194912655},{"id":"Papua New Guinea","value":55.347872,"adj_value":67.17017746},{"id":"New Zealand","value":2592.076963,"adj_value":3145.744602},{"id":"Cook Islands","value":1.372809,"adj_value":1.666041002},{"id":"Tokelau","value":79.822527,"adj_value":96.87261877},{"id":"Niue","value":0.607643,"adj_value":0.737435545},{"id":"Samoa","value":14.538961,"adj_value":17.64448307},{"id":"Solomon Islands","value":2.297431,"adj_value":2.788162262},{"id":"Vanuatu","value":9.138578,"adj_value":11.09057826},{"id":"Pitcairn Islands","value":0.45629,"adj_value":0.553753544},{"id":"Kiribati","value":2.411608,"adj_value":2.926727469},{"id":"Tuvalu","value":0.04246,"adj_value":0.051529456},{"id":"New Caledonia","value":38.403106,"adj_value":46.60600944},{"id":"Wallis and Futuna","value":0.408737,"adj_value":0.496043223},{"id":"French Polynesia","value":111.838384,"adj_value":135.7270628},{"id":"Marshall Islands","value":75.48435,"adj_value":91.60780716},{"id":"Micronesia","value":25.349268,"adj_value":30.76387164},{"id":"Palau","value":12.22524,"adj_value":14.83655126},{"id":"Nauru","value":1.62475,"adj_value":1.9717966},{"id":"Fiji","value":28.177593,"adj_value":34.19632686},{"id":"Tonga","value":9.685131,"adj_value":11.75387498}]},{"id":"Africa","children":[{"id":"Morocco","value":480.792527,"adj_value":583.4898108},{"id":"Algeria","value":1106.190448,"adj_value":1342.472728},{"id":"Tunisia","value":261.16652,"adj_value":316.9516887},{"id":"Libya","value":83.841985,"adj_value":101.750633},{"id":"Egypt","value":3159.259288,"adj_value":3834.077072},{"id":"Sudan","value":108.105454,"adj_value":131.196779},{"id":"Western Sahara","value":0.028656,"adj_value":0.034776922},{"id":"Equatorial Guinea","value":281.472431,"adj_value":341.5949423},{"id":"Mauritania","value":86.135221,"adj_value":104.5337042},{"id":"Cameroon","value":117.313887,"adj_value":142.3721333},{"id":"Senegal","value":141.499953,"adj_value":171.724343},{"id":"Mali","value":32.421928,"adj_value":39.34725182},{"id":"Guinea","value":93.59706,"adj_value":113.589392},{"id":"Sierra Leone","value":37.829353,"adj_value":45.9097028},{"id":"Cote d'Ivoire","value":124.242832,"adj_value":150.7811009},{"id":"Ghana","value":337.389713,"adj_value":409.4561557},{"id":"Gambia","value":30.604418,"adj_value":37.14152168},{"id":"Niger","value":78.511944,"adj_value":95.28209524},{"id":"Togo","value":27.928388,"adj_value":33.89389168},{"id":"Nigeria","value":1619.788459,"adj_value":1965.775274},{"id":"Central African Republic","value":14.781003,"adj_value":17.93822524},{"id":"Gabon","value":99.105857,"adj_value":120.2748681},{"id":"Chad","value":53.752155,"adj_value":65.23361531},{"id":"St Helena","value":2.732629,"adj_value":3.316318554},{"id":"Burkina Faso","value":25.11081,"adj_value":30.47447902},{"id":"Benin","value":72.278749,"adj_value":87.71748979},{"id":"Angola","value":929.046776,"adj_value":1127.491167},{"id":"Congo (Brazzaville)","value":104.056096,"adj_value":126.2824781},{"id":"Guinea-Bissau","value":2.100355,"adj_value":2.548990828},{"id":"Cabo Verde","value":9.871825,"adj_value":11.98044682},{"id":"Sao Tome and Principe","value":10.153283,"adj_value":12.32202425},{"id":"Liberia","value":69.32032,"adj_value":84.12714035},{"id":"Congo (Kinshasa)","value":64.968131,"adj_value":78.84532378},{"id":"Burundi","value":8.121178,"adj_value":9.855861621},{"id":"Rwanda","value":10.534162,"adj_value":12.784259},{"id":"Somalia","value":8.831504,"adj_value":10.71791325},{"id":"Eritrea","value":31.058711,"adj_value":37.69285167},{"id":"Ethiopia","value":455.635812,"adj_value":552.9596214},{"id":"Djibouti","value":47.571125,"adj_value":57.7323173},{"id":"Uganda","value":62.573652,"adj_value":75.93938407},{"id":"Kenya","value":573.365497,"adj_value":695.8363672},{"id":"Seychelles","value":17.912292,"adj_value":21.73835757},{"id":"British Indian Ocean Terr.","value":0.806112,"adj_value":0.978297523},{"id":"Tanzania","value":96.44391,"adj_value":117.0443292},{"id":"Mauritius","value":30.860179,"adj_value":37.45191323},{"id":"Mozambique","value":62.825299,"adj_value":76.24478287},{"id":"Madagascar","value":28.205237,"adj_value":34.22987562},{"id":"Comoros","value":0.295219,"adj_value":0.358277778},{"id":"Reunion","value":3.78591,"adj_value":4.594580376},{"id":"French Southern and Antarctic","value":0.273678,"adj_value":0.332135621},{"id":"South Africa","value":3906.946741,"adj_value":4741.470565},{"id":"Namibia","value":112.249178,"adj_value":136.2256024},{"id":"Botswana","value":67.272144,"adj_value":81.64147396},{"id":"Zambia","value":29.113109,"adj_value":35.33166908},{"id":"Swaziland","value":11.856893,"adj_value":14.38952534},{"id":"Zimbabwe","value":45.540976,"adj_value":55.26852847},{"id":"Malawi","value":28.049237,"adj_value":34.04055402},{"id":"Lesotho","value":4.015033,"adj_value":4.872644049}]}]}]},{"id":"2015","children":[{"id":"Imports","children":[{"id":"North America","children":[{"id":"Greenland","value":3.800273,"adj_value":3.800273},{"id":"Canada","value":296155.599,"adj_value":296155.599},{"id":"St Pierre and Miquelon","value":0.18562,"adj_value":0.18562},{"id":"Mexico","value":296407.9011,"adj_value":296407.9011},{"id":"Guatemala","value":4120.351959,"adj_value":4120.351959},{"id":"Belize","value":75.287339,"adj_value":75.287339},{"id":"El Salvador","value":2531.699424,"adj_value":2531.699424},{"id":"Honduras","value":4755.934545,"adj_value":4755.934545},{"id":"Nicaragua","value":3188.301535,"adj_value":3188.301535},{"id":"Costa Rica","value":4488.341429,"adj_value":4488.341429},{"id":"Panama","value":408.293396,"adj_value":408.293396},{"id":"Bermuda","value":108.704684,"adj_value":108.704684},{"id":"Bahamas","value":452.744256,"adj_value":452.744256},{"id":"Cuba","value":0,"adj_value":0},{"id":"Jamaica","value":305.978402,"adj_value":305.978402},{"id":"Turks and Caicos Islands","value":14.710225,"adj_value":14.710225},{"id":"Cayman Islands","value":97.496341,"adj_value":97.496341},{"id":"Haiti","value":950.091535,"adj_value":950.091535},{"id":"Dominican Republic","value":4665.266745,"adj_value":4665.266745},{"id":"Anguilla","value":5.583883,"adj_value":5.583883},{"id":"British Virgin Islands","value":16.491398,"adj_value":16.491398},{"id":"St Kitts and Nevis","value":56.753359,"adj_value":56.753359},{"id":"Antigua and Barbuda","value":6.856395,"adj_value":6.856395},{"id":"Montserrat","value":2.271534,"adj_value":2.271534},{"id":"Dominica","value":1.683203,"adj_value":1.683203},{"id":"St Lucia","value":29.00446,"adj_value":29.00446},{"id":"St Vincent and the Grenadines","value":1.768076,"adj_value":1.768076},{"id":"Grenada","value":9.215032,"adj_value":9.215032},{"id":"Barbados","value":68.174291,"adj_value":68.174291},{"id":"Trinidad and Tobago","value":4314.344265,"adj_value":4314.344265},{"id":"Sint Maarten","value":51.873445,"adj_value":51.873445},{"id":"Curacao","value":335.229109,"adj_value":335.229109},{"id":"Aruba","value":54.90185,"adj_value":54.90185},{"id":"Guadeloupe","value":4.123528,"adj_value":4.123528},{"id":"Martinique","value":37.46278,"adj_value":37.46278}]},{"id":"South America","children":[{"id":"Colombia","value":14074.81661,"adj_value":14074.81661},{"id":"Venezuela","value":15564.23275,"adj_value":15564.23275},{"id":"Guyana","value":431.099884,"adj_value":431.099884},{"id":"Suriname","value":146.224404,"adj_value":146.224404},{"id":"French Guiana","value":0.042924,"adj_value":0.042924},{"id":"Ecuador","value":7467.258698,"adj_value":7467.258698},{"id":"Peru","value":5053.337195,"adj_value":5053.337195},{"id":"Bolivia","value":1006.481438,"adj_value":1006.481438},{"id":"Chile","value":8772.414027,"adj_value":8772.414027},{"id":"Brazil","value":27468.23032,"adj_value":27468.23032},{"id":"Paraguay","value":162.023098,"adj_value":162.023098},{"id":"Uruguay","value":604.746068,"adj_value":604.746068},{"id":"Argentina","value":3950.849545,"adj_value":3950.849545},{"id":"Falkland Islands(Islas Malvin","value":14.273948,"adj_value":14.273948}]},{"id":"Europe","children":[{"id":"Iceland","value":316.534176,"adj_value":316.534176},{"id":"Sweden","value":9878.966413,"adj_value":9878.966413},{"id":"Svalbard, Jan Mayen Island","value":0.028231,"adj_value":0.028231},{"id":"Norway","value":4760.200206,"adj_value":4760.200206},{"id":"Finland","value":4506.071121,"adj_value":4506.071121},{"id":"Faroe Islands","value":97.897991,"adj_value":97.897991},{"id":"Denmark","value":7760.022813,"adj_value":7760.022813},{"id":"United Kingdom","value":57962.25131,"adj_value":57962.25131},{"id":"Ireland","value":39336.18067,"adj_value":39336.18067},{"id":"Netherlands","value":16835.61486,"adj_value":16835.61486},{"id":"Belgium","value":19482.27263,"adj_value":19482.27263},{"id":"Luxembourg","value":639.038795,"adj_value":639.038795},{"id":"Andorra","value":4.863157,"adj_value":4.863157},{"id":"Monaco","value":58.818337,"adj_value":58.818337},{"id":"France","value":47815.32286,"adj_value":47815.32286},{"id":"Germany","value":124820.4692,"adj_value":124820.4692},{"id":"Austria","value":11311.97506,"adj_value":11311.97506},{"id":"Czech Republic","value":4497.634904,"adj_value":4497.634904},{"id":"Slovakia","value":2299.822999,"adj_value":2299.822999},{"id":"Hungary","value":5721.266311,"adj_value":5721.266311},{"id":"Liechtenstein","value":310.294941,"adj_value":310.294941},{"id":"Switzerland","value":31396.66041,"adj_value":31396.66041},{"id":"Estonia","value":503.50072,"adj_value":503.50072},{"id":"Latvia","value":302.969587,"adj_value":302.969587},{"id":"Lithuania","value":1059.366349,"adj_value":1059.366349},{"id":"Poland","value":5637.927607,"adj_value":5637.927607},{"id":"Russia","value":16366.16158,"adj_value":16366.16158},{"id":"Belarus","value":158.249733,"adj_value":158.249733},{"id":"Ukraine","value":850.788858,"adj_value":850.788858},{"id":"Armenia","value":62.46349,"adj_value":62.46349},{"id":"Azerbaijan","value":507.148173,"adj_value":507.148173},{"id":"Georgia","value":181.150349,"adj_value":181.150349},{"id":"Kazakhstan","value":816.099815,"adj_value":816.099815},{"id":"Kyrgyzstan","value":15.803561,"adj_value":15.803561},{"id":"Moldova","value":43.920552,"adj_value":43.920552},{"id":"Tajikistan","value":31.123801,"adj_value":31.123801},{"id":"Turkmenistan","value":55.976778,"adj_value":55.976778},{"id":"Uzbekistan","value":9.715446,"adj_value":9.715446},{"id":"Spain","value":14129.84151,"adj_value":14129.84151},{"id":"Portugal","value":3271.009123,"adj_value":3271.009123},{"id":"Gibraltar","value":1.82442,"adj_value":1.82442},{"id":"Malta","value":241.219869,"adj_value":241.219869},{"id":"San Marino","value":8.517198,"adj_value":8.517198},{"id":"Vatican City","value":1.218395,"adj_value":1.218395},{"id":"Italy","value":44159.01154,"adj_value":44159.01154},{"id":"Croatia","value":576.891578,"adj_value":576.891578},{"id":"Slovenia","value":678.110689,"adj_value":678.110689},{"id":"Bosnia and Herzegovina","value":78.282267,"adj_value":78.282267},{"id":"Macedonia","value":203.357353,"adj_value":203.357353},{"id":"Serbia","value":272.617662,"adj_value":272.617662},{"id":"Kosovo","value":2.38298,"adj_value":2.38298},{"id":"Montenegro","value":2.108687,"adj_value":2.108687},{"id":"Albania","value":160.081219,"adj_value":160.081219},{"id":"Greece","value":1356.447796,"adj_value":1356.447796},{"id":"Romania","value":2148.841567,"adj_value":2148.841567},{"id":"Bulgaria","value":597.694693,"adj_value":597.694693}]},{"id":"Asia","children":[{"id":"Turkey","value":7880.91386,"adj_value":7880.91386},{"id":"Cyprus","value":31.98822,"adj_value":31.98822},{"id":"Syria","value":6.544106,"adj_value":6.544106},{"id":"Lebanon","value":93.219618,"adj_value":93.219618},{"id":"Iraq","value":4353.472677,"adj_value":4353.472677},{"id":"Iran","value":10.766314,"adj_value":10.766314},{"id":"Israel","value":24477.02161,"adj_value":24477.02161},{"id":"Gaza Strip admin. by Israel","value":0.012534,"adj_value":0.012534},{"id":"West Bank admin. by Israel","value":5.435229,"adj_value":5.435229},{"id":"Jordan","value":1491.618691,"adj_value":1491.618691},{"id":"Kuwait","value":4684.750276,"adj_value":4684.750276},{"id":"Saudi Arabia","value":22080.78482,"adj_value":22080.78482},{"id":"Qatar","value":1354.237789,"adj_value":1354.237789},{"id":"United Arab Emirates","value":2468.033306,"adj_value":2468.033306},{"id":"Republic of Yemen","value":48.270876,"adj_value":48.270876},{"id":"Oman","value":906.993161,"adj_value":906.993161},{"id":"Bahrain","value":902.425581,"adj_value":902.425581},{"id":"Afghanistan","value":23.454045,"adj_value":23.454045},{"id":"India","value":44791.64405,"adj_value":44791.64405},{"id":"Pakistan","value":3701.018609,"adj_value":3701.018609},{"id":"Nepal","value":86.959805,"adj_value":86.959805},{"id":"Bangladesh","value":5991.251839,"adj_value":5991.251839},{"id":"Sri Lanka","value":2889.92219,"adj_value":2889.92219},{"id":"Burma","value":143.796881,"adj_value":143.796881},{"id":"Thailand","value":28631.93281,"adj_value":28631.93281},{"id":"Vietnam","value":38019.69623,"adj_value":38019.69623},{"id":"Laos","value":45.189001,"adj_value":45.189001},{"id":"Cambodia","value":3025.433126,"adj_value":3025.433126},{"id":"Malaysia","value":33970.67872,"adj_value":33970.67872},{"id":"Singapore","value":18267.48494,"adj_value":18267.48494},{"id":"Indonesia","value":19601.54814,"adj_value":19601.54814},{"id":"East Timor","value":3.302038,"adj_value":3.302038},{"id":"Brunei","value":19.402766,"adj_value":19.402766},{"id":"Philippines","value":10233.69067,"adj_value":10233.69067},{"id":"Macau","value":121.919528,"adj_value":121.919528},{"id":"Bhutan","value":3.398158,"adj_value":3.398158},{"id":"Maldives","value":21.737873,"adj_value":21.737873},{"id":"China","value":483244.7019,"adj_value":483244.7019},{"id":"Mongolia","value":17.222375,"adj_value":17.222375},{"id":"Korea, North","value":0,"adj_value":0},{"id":"Korea, South","value":71758.69672,"adj_value":71758.69672},{"id":"Hong Kong","value":6795.630644,"adj_value":6795.630644},{"id":"Taiwan","value":40907.5936,"adj_value":40907.5936},{"id":"Japan","value":131364.1476,"adj_value":131364.1476}]},{"id":"Australia","children":[{"id":"Australia","value":10894.02186,"adj_value":10894.02186},{"id":"Norfolk Island","value":1.217241,"adj_value":1.217241},{"id":"Cocos (Keeling) Islands","value":3.809085,"adj_value":3.809085},{"id":"Christmas Island","value":2.12084,"adj_value":2.12084},{"id":"Heard and McDonald Islands","value":0.006734,"adj_value":0.006734},{"id":"Papua New Guinea","value":90.809528,"adj_value":90.809528},{"id":"New Zealand","value":4292.770709,"adj_value":4292.770709},{"id":"Cook Islands","value":0.84788,"adj_value":0.84788},{"id":"Tokelau","value":1.848379,"adj_value":1.848379},{"id":"Niue","value":0.531806,"adj_value":0.531806},{"id":"Samoa","value":4.220542,"adj_value":4.220542},{"id":"Solomon Islands","value":3.521953,"adj_value":3.521953},{"id":"Vanuatu","value":3.67132,"adj_value":3.67132},{"id":"Pitcairn Islands","value":0.012162,"adj_value":0.012162},{"id":"Kiribati","value":2.728752,"adj_value":2.728752},{"id":"Tuvalu","value":0.228118,"adj_value":0.228118},{"id":"New Caledonia","value":47.038156,"adj_value":47.038156},{"id":"Wallis and Futuna","value":0.093303,"adj_value":0.093303},{"id":"French Polynesia","value":43.030557,"adj_value":43.030557},{"id":"Marshall Islands","value":29.067047,"adj_value":29.067047},{"id":"Micronesia","value":0.717108,"adj_value":0.717108},{"id":"Palau","value":0.544832,"adj_value":0.544832},{"id":"Nauru","value":0.52087,"adj_value":0.52087},{"id":"Fiji","value":202.639037,"adj_value":202.639037},{"id":"Tonga","value":2.442895,"adj_value":2.442895}]},{"id":"Africa","children":[{"id":"Morocco","value":1011.85636,"adj_value":1011.85636},{"id":"Algeria","value":3371.552526,"adj_value":3371.552526},{"id":"Tunisia","value":546.271256,"adj_value":546.271256},{"id":"Libya","value":155.103895,"adj_value":155.103895},{"id":"Egypt","value":1405.853699,"adj_value":1405.853699},{"id":"Sudan","value":8.973253,"adj_value":8.973253},{"id":"South Sudan","value":0.192583,"adj_value":0.192583},{"id":"Western Sahara","value":0.044063,"adj_value":0.044063},{"id":"Equatorial Guinea","value":163.14305,"adj_value":163.14305},{"id":"Mauritania","value":1.173847,"adj_value":1.173847},{"id":"Cameroon","value":132.053379,"adj_value":132.053379},{"id":"Senegal","value":71.965108,"adj_value":71.965108},{"id":"Mali","value":4.504283,"adj_value":4.504283},{"id":"Guinea","value":79.616516,"adj_value":79.616516},{"id":"Sierra Leone","value":39.58921,"adj_value":39.58921},{"id":"Cote d'Ivoire","value":1027.88557,"adj_value":1027.88557},{"id":"Ghana","value":309.36766,"adj_value":309.36766},{"id":"Gambia","value":0.896754,"adj_value":0.896754},{"id":"Niger","value":4.184625,"adj_value":4.184625},{"id":"Togo","value":14.211452,"adj_value":14.211452},{"id":"Nigeria","value":1915.80016,"adj_value":1915.80016},{"id":"Central African Republic","value":3.12467,"adj_value":3.12467},{"id":"Gabon","value":337.024529,"adj_value":337.024529},{"id":"Chad","value":1303.322183,"adj_value":1303.322183},{"id":"St Helena","value":15.340188,"adj_value":15.340188},{"id":"Burkina Faso","value":3.592979,"adj_value":3.592979},{"id":"Benin","value":4.94488,"adj_value":4.94488},{"id":"Angola","value":2806.494883,"adj_value":2806.494883},{"id":"Congo (Brazzaville)","value":304.303884,"adj_value":304.303884},{"id":"Guinea-Bissau","value":0.05184,"adj_value":0.05184},{"id":"Cabo Verde","value":2.21905,"adj_value":2.21905},{"id":"Sao Tome and Principe","value":0.773369,"adj_value":0.773369},{"id":"Liberia","value":44.940717,"adj_value":44.940717},{"id":"Congo (Kinshasa)","value":153.738045,"adj_value":153.738045},{"id":"Burundi","value":8.427001,"adj_value":8.427001},{"id":"Rwanda","value":45.643909,"adj_value":45.643909},{"id":"Somalia","value":0.896112,"adj_value":0.896112},{"id":"Eritrea","value":0.106871,"adj_value":0.106871},{"id":"Ethiopia","value":310.269077,"adj_value":310.269077},{"id":"Djibouti","value":35.463684,"adj_value":35.463684},{"id":"Uganda","value":64.123855,"adj_value":64.123855},{"id":"Kenya","value":573.095415,"adj_value":573.095415},{"id":"Seychelles","value":5.83899,"adj_value":5.83899},{"id":"British Indian Ocean Terr.","value":15.818366,"adj_value":15.818366},{"id":"Tanzania","value":104.93518,"adj_value":104.93518},{"id":"Mauritius","value":395.664813,"adj_value":395.664813},{"id":"Mozambique","value":96.026702,"adj_value":96.026702},{"id":"Madagascar","value":319.783011,"adj_value":319.783011},{"id":"Mayotte","value":0.095927,"adj_value":0.095927},{"id":"Comoros","value":1.211821,"adj_value":1.211821},{"id":"Reunion","value":16.967288,"adj_value":16.967288},{"id":"French Southern and Antarctic","value":0.013953,"adj_value":0.013953},{"id":"South Africa","value":7314.612701,"adj_value":7314.612701},{"id":"Namibia","value":85.353831,"adj_value":85.353831},{"id":"Botswana","value":211.913954,"adj_value":211.913954},{"id":"Zambia","value":47.114386,"adj_value":47.114386},{"id":"Swaziland","value":21.49843,"adj_value":21.49843},{"id":"Zimbabwe","value":67.166669,"adj_value":67.166669},{"id":"Malawi","value":61.395881,"adj_value":61.395881},{"id":"Lesotho","value":331.955607,"adj_value":331.955607}]}]},{"id":"Exports","children":[{"id":"North America","children":[{"id":"Greenland","value":8.076839,"adj_value":8.076839},{"id":"Canada","value":280609.0056,"adj_value":280609.0056},{"id":"St Pierre and Miquelon","value":0.227459,"adj_value":0.227459},{"id":"Mexico","value":235745.1375,"adj_value":235745.1375},{"id":"Guatemala","value":5806.713895,"adj_value":5806.713895},{"id":"Belize","value":285.240264,"adj_value":285.240264},{"id":"El Salvador","value":3240.284878,"adj_value":3240.284878},{"id":"Honduras","value":5214.668234,"adj_value":5214.668234},{"id":"Nicaragua","value":1267.532561,"adj_value":1267.532561},{"id":"Costa Rica","value":6079.415736,"adj_value":6079.415736},{"id":"Panama","value":7663.548283,"adj_value":7663.548283},{"id":"Bermuda","value":600.945255,"adj_value":600.945255},{"id":"Bahamas","value":2386.461864,"adj_value":2386.461864},{"id":"Cuba","value":180.215206,"adj_value":180.215206},{"id":"Jamaica","value":1716.030814,"adj_value":1716.030814},{"id":"Turks and Caicos Islands","value":279.728597,"adj_value":279.728597},{"id":"Cayman Islands","value":684.947958,"adj_value":684.947958},{"id":"Haiti","value":1140.574185,"adj_value":1140.574185},{"id":"Dominican Republic","value":7113.829302,"adj_value":7113.829302},{"id":"Anguilla","value":47.602633,"adj_value":47.602633},{"id":"British Virgin Islands","value":259.758571,"adj_value":259.758571},{"id":"St Kitts and Nevis","value":149.707108,"adj_value":149.707108},{"id":"Antigua and Barbuda","value":677.657633,"adj_value":677.657633},{"id":"Montserrat","value":6.640011,"adj_value":6.640011},{"id":"Dominica","value":67.312046,"adj_value":67.312046},{"id":"St Lucia","value":510.811024,"adj_value":510.811024},{"id":"St Vincent and the Grenadines","value":84.722498,"adj_value":84.722498},{"id":"Grenada","value":90.420149,"adj_value":90.420149},{"id":"Barbados","value":595.966307,"adj_value":595.966307},{"id":"Trinidad and Tobago","value":2511.195111,"adj_value":2511.195111},{"id":"Sint Maarten","value":741.201231,"adj_value":741.201231},{"id":"Curacao","value":522.079698,"adj_value":522.079698},{"id":"Aruba","value":1167.632524,"adj_value":1167.632524},{"id":"Guadeloupe","value":100.959536,"adj_value":100.959536},{"id":"Martinique","value":119.577165,"adj_value":119.577165}]},{"id":"South America","children":[{"id":"Colombia","value":16286.7799,"adj_value":16286.7799},{"id":"Venezuela","value":8345.880233,"adj_value":8345.880233},{"id":"Guyana","value":368.129666,"adj_value":368.129666},{"id":"Suriname","value":443.643313,"adj_value":443.643313},{"id":"French Guiana","value":1073.642767,"adj_value":1073.642767},{"id":"Ecuador","value":5794.812688,"adj_value":5794.812688},{"id":"Peru","value":8725.607473,"adj_value":8725.607473},{"id":"Bolivia","value":931.431709,"adj_value":931.431709},{"id":"Chile","value":15445.13797,"adj_value":15445.13797},{"id":"Brazil","value":31650.62387,"adj_value":31650.62387},{"id":"Paraguay","value":1514.300292,"adj_value":1514.300292},{"id":"Uruguay","value":1295.148749,"adj_value":1295.148749},{"id":"Argentina","value":9341.210651,"adj_value":9341.210651},{"id":"Falkland Islands(Islas Malvin","value":2.917708,"adj_value":2.917708}]},{"id":"Europe","children":[{"id":"Iceland","value":415.45785,"adj_value":415.45785},{"id":"Sweden","value":3940.8105,"adj_value":3940.8105},{"id":"Svalbard, Jan Mayen Island","value":0.380164,"adj_value":0.380164},{"id":"Norway","value":3570.63315,"adj_value":3570.63315},{"id":"Finland","value":1558.146898,"adj_value":1558.146898},{"id":"Faroe Islands","value":2.336863,"adj_value":2.336863},{"id":"Denmark","value":2202.093582,"adj_value":2202.093582},{"id":"United Kingdom","value":56114.61886,"adj_value":56114.61886},{"id":"Ireland","value":8930.773509,"adj_value":8930.773509},{"id":"Netherlands","value":40196.15629,"adj_value":40196.15629},{"id":"Belgium","value":34159.97966,"adj_value":34159.97966},{"id":"Luxembourg","value":1394.17473,"adj_value":1394.17473},{"id":"Andorra","value":3.336817,"adj_value":3.336817},{"id":"Monaco","value":71.128048,"adj_value":71.128048},{"id":"France","value":30103.5212,"adj_value":30103.5212},{"id":"Germany","value":49970.80411,"adj_value":49970.80411},{"id":"Austria","value":4024.435888,"adj_value":4024.435888},{"id":"Czech Republic","value":1976.037865,"adj_value":1976.037865},{"id":"Slovakia","value":379.469169,"adj_value":379.469169},{"id":"Hungary","value":1715.278037,"adj_value":1715.278037},{"id":"Liechtenstein","value":35.930552,"adj_value":35.930552},{"id":"Switzerland","value":22185.27991,"adj_value":22185.27991},{"id":"Estonia","value":288.143789,"adj_value":288.143789},{"id":"Latvia","value":294.787977,"adj_value":294.787977},{"id":"Lithuania","value":527.67763,"adj_value":527.67763},{"id":"Poland","value":3715.441301,"adj_value":3715.441301},{"id":"Russia","value":7087.111574,"adj_value":7087.111574},{"id":"Belarus","value":59.235752,"adj_value":59.235752},{"id":"Ukraine","value":862.088348,"adj_value":862.088348},{"id":"Armenia","value":50.24617,"adj_value":50.24617},{"id":"Azerbaijan","value":477.316108,"adj_value":477.316108},{"id":"Georgia","value":340.502111,"adj_value":340.502111},{"id":"Kazakhstan","value":510.479071,"adj_value":510.479071},{"id":"Kyrgyzstan","value":32.003481,"adj_value":32.003481},{"id":"Moldova","value":16.163682,"adj_value":16.163682},{"id":"Tajikistan","value":18.985373,"adj_value":18.985373},{"id":"Turkmenistan","value":80.839805,"adj_value":80.839805},{"id":"Uzbekistan","value":137.962928,"adj_value":137.962928},{"id":"Spain","value":10310.27052,"adj_value":10310.27052},{"id":"Portugal","value":942.466275,"adj_value":942.466275},{"id":"Gibraltar","value":1972.99261,"adj_value":1972.99261},{"id":"Malta","value":490.660579,"adj_value":490.660579},{"id":"San Marino","value":5.011879,"adj_value":5.011879},{"id":"Vatican City","value":2.226547,"adj_value":2.226547},{"id":"Italy","value":16204.22609,"adj_value":16204.22609},{"id":"Croatia","value":331.976272,"adj_value":331.976272},{"id":"Slovenia","value":346.040192,"adj_value":346.040192},{"id":"Bosnia and Herzegovina","value":27.586061,"adj_value":27.586061},{"id":"Macedonia","value":30.678977,"adj_value":30.678977},{"id":"Serbia","value":126.25142,"adj_value":126.25142},{"id":"Kosovo","value":19.743318,"adj_value":19.743318},{"id":"Montenegro","value":11.133957,"adj_value":11.133957},{"id":"Albania","value":30.952665,"adj_value":30.952665},{"id":"Greece","value":725.699147,"adj_value":725.699147},{"id":"Romania","value":753.718827,"adj_value":753.718827},{"id":"Bulgaria","value":289.09201,"adj_value":289.09201}]},{"id":"Asia","children":[{"id":"Turkey","value":9502.498123,"adj_value":9502.498123},{"id":"Cyprus","value":101.831614,"adj_value":101.831614},{"id":"Syria","value":3.072304,"adj_value":3.072304},{"id":"Lebanon","value":1272.487166,"adj_value":1272.487166},{"id":"Iraq","value":1971.478767,"adj_value":1971.478767},{"id":"Iran","value":281.512074,"adj_value":281.512074},{"id":"Israel","value":13538.69482,"adj_value":13538.69482},{"id":"Gaza Strip admin. by Israel","value":0.183934,"adj_value":0.183934},{"id":"West Bank admin. by Israel","value":0.903282,"adj_value":0.903282},{"id":"Jordan","value":1358.977191,"adj_value":1358.977191},{"id":"Kuwait","value":2739.289578,"adj_value":2739.289578},{"id":"Saudi Arabia","value":19738.98459,"adj_value":19738.98459},{"id":"Qatar","value":4222.426394,"adj_value":4222.426394},{"id":"United Arab Emirates","value":23003.59562,"adj_value":23003.59562},{"id":"Republic of Yemen","value":158.039977,"adj_value":158.039977},{"id":"Oman","value":2355.271013,"adj_value":2355.271013},{"id":"Bahrain","value":1270.662445,"adj_value":1270.662445},{"id":"Afghanistan","value":478.851271,"adj_value":478.851271},{"id":"India","value":21451.87992,"adj_value":21451.87992},{"id":"Pakistan","value":1837.506933,"adj_value":1837.506933},{"id":"Nepal","value":36.405446,"adj_value":36.405446},{"id":"Bangladesh","value":942.540067,"adj_value":942.540067},{"id":"Sri Lanka","value":361.920786,"adj_value":361.920786},{"id":"Burma","value":227.140755,"adj_value":227.140755},{"id":"Thailand","value":11230.56974,"adj_value":11230.56974},{"id":"Vietnam","value":7087.524038,"adj_value":7087.524038},{"id":"Laos","value":24.584007,"adj_value":24.584007},{"id":"Cambodia","value":391.045876,"adj_value":391.045876},{"id":"Malaysia","value":12277.22614,"adj_value":12277.22614},{"id":"Singapore","value":28472.07098,"adj_value":28472.07098},{"id":"Indonesia","value":7120.940688,"adj_value":7120.940688},{"id":"East Timor","value":2.690584,"adj_value":2.690584},{"id":"Brunei","value":133.449998,"adj_value":133.449998},{"id":"Philippines","value":7907.893167,"adj_value":7907.893167},{"id":"Macau","value":542.354584,"adj_value":542.354584},{"id":"Bhutan","value":2.64104,"adj_value":2.64104},{"id":"Maldives","value":35.143208,"adj_value":35.143208},{"id":"China","value":116071.7696,"adj_value":116071.7696},{"id":"Mongolia","value":69.161103,"adj_value":69.161103},{"id":"Korea, North","value":4.751721,"adj_value":4.751721},{"id":"Korea, South","value":43445.54748,"adj_value":43445.54748},{"id":"Hong Kong","value":37167.02295,"adj_value":37167.02295},{"id":"Taiwan","value":25860.08634,"adj_value":25860.08634},{"id":"Japan","value":62442.64646,"adj_value":62442.64646}]},{"id":"Australia","children":[{"id":"Australia","value":25035.79015,"adj_value":25035.79015},{"id":"Norfolk Island","value":0.350312,"adj_value":0.350312},{"id":"Cocos (Keeling) Islands","value":0.55762,"adj_value":0.55762},{"id":"Christmas Island","value":1.551179,"adj_value":1.551179},{"id":"Heard and McDonald Islands","value":0.913419,"adj_value":0.913419},{"id":"Papua New Guinea","value":207.793894,"adj_value":207.793894},{"id":"New Zealand","value":3631.061903,"adj_value":3631.061903},{"id":"Cook Islands","value":4.249826,"adj_value":4.249826},{"id":"Tokelau","value":0.341222,"adj_value":0.341222},{"id":"Niue","value":0.071371,"adj_value":0.071371},{"id":"Samoa","value":22.71966,"adj_value":22.71966},{"id":"Solomon Islands","value":5.861309,"adj_value":5.861309},{"id":"Vanuatu","value":5.867876,"adj_value":5.867876},{"id":"Pitcairn Islands","value":0.017405,"adj_value":0.017405},{"id":"Kiribati","value":7.320835,"adj_value":7.320835},{"id":"Tuvalu","value":0.625636,"adj_value":0.625636},{"id":"New Caledonia","value":88.651277,"adj_value":88.651277},{"id":"Wallis and Futuna","value":0.376841,"adj_value":0.376841},{"id":"French Polynesia","value":120.047865,"adj_value":120.047865},{"id":"Marshall Islands","value":53.912135,"adj_value":53.912135},{"id":"Micronesia","value":40.032614,"adj_value":40.032614},{"id":"Palau","value":25.693198,"adj_value":25.693198},{"id":"Nauru","value":1.73365,"adj_value":1.73365},{"id":"Fiji","value":56.904585,"adj_value":56.904585},{"id":"Tonga","value":13.817538,"adj_value":13.817538}]},{"id":"Africa","children":[{"id":"Morocco","value":1625.204959,"adj_value":1625.204959},{"id":"Algeria","value":1875.734479,"adj_value":1875.734479},{"id":"Tunisia","value":602.412017,"adj_value":602.412017},{"id":"Libya","value":242.951645,"adj_value":242.951645},{"id":"Egypt","value":4752.983685,"adj_value":4752.983685},{"id":"Sudan","value":59.514997,"adj_value":59.514997},{"id":"South Sudan","value":19.613532,"adj_value":19.613532},{"id":"Western Sahara","value":0.032113,"adj_value":0.032113},{"id":"Equatorial Guinea","value":161.964373,"adj_value":161.964373},{"id":"Mauritania","value":126.280667,"adj_value":126.280667},{"id":"Cameroon","value":224.961698,"adj_value":224.961698},{"id":"Senegal","value":196.428411,"adj_value":196.428411},{"id":"Mali","value":72.426079,"adj_value":72.426079},{"id":"Guinea","value":135.350114,"adj_value":135.350114},{"id":"Sierra Leone","value":77.325724,"adj_value":77.325724},{"id":"Cote d'Ivoire","value":266.335569,"adj_value":266.335569},{"id":"Ghana","value":949.913963,"adj_value":949.913963},{"id":"Gambia","value":37.899622,"adj_value":37.899622},{"id":"Niger","value":71.493157,"adj_value":71.493157},{"id":"Togo","value":311.819809,"adj_value":311.819809},{"id":"Nigeria","value":3437.952784,"adj_value":3437.952784},{"id":"Central African Republic","value":34.309874,"adj_value":34.309874},{"id":"Gabon","value":203.872443,"adj_value":203.872443},{"id":"Chad","value":56.591528,"adj_value":56.591528},{"id":"St Helena","value":3.720487,"adj_value":3.720487},{"id":"Burkina Faso","value":53.875343,"adj_value":53.875343},{"id":"Benin","value":631.462518,"adj_value":631.462518},{"id":"Angola","value":1166.161667,"adj_value":1166.161667},{"id":"Congo (Brazzaville)","value":249.220232,"adj_value":249.220232},{"id":"Guinea-Bissau","value":2.13532,"adj_value":2.13532},{"id":"Cabo Verde","value":7.32166,"adj_value":7.32166},{"id":"Sao Tome and Principe","value":0.853963,"adj_value":0.853963},{"id":"Liberia","value":135.807551,"adj_value":135.807551},{"id":"Congo (Kinshasa)","value":136.189374,"adj_value":136.189374},{"id":"Burundi","value":5.650192,"adj_value":5.650192},{"id":"Rwanda","value":14.28771,"adj_value":14.28771},{"id":"Somalia","value":45.026584,"adj_value":45.026584},{"id":"Eritrea","value":3.497538,"adj_value":3.497538},{"id":"Ethiopia","value":1555.249376,"adj_value":1555.249376},{"id":"Djibouti","value":144.711021,"adj_value":144.711021},{"id":"Uganda","value":88.315069,"adj_value":88.315069},{"id":"Kenya","value":943.436657,"adj_value":943.436657},{"id":"Seychelles","value":18.542809,"adj_value":18.542809},{"id":"British Indian Ocean Terr.","value":0.581016,"adj_value":0.581016},{"id":"Tanzania","value":172.803054,"adj_value":172.803054},{"id":"Mauritius","value":58.435311,"adj_value":58.435311},{"id":"Mozambique","value":264.203995,"adj_value":264.203995},{"id":"Madagascar","value":54.553731,"adj_value":54.553731},{"id":"Mayotte","value":5.697333,"adj_value":5.697333},{"id":"Comoros","value":1.507078,"adj_value":1.507078},{"id":"Reunion","value":6.905271,"adj_value":6.905271},{"id":"French Southern and Antarctic","value":8.026602,"adj_value":8.026602},{"id":"South Africa","value":5458.29362,"adj_value":5458.29362},{"id":"Namibia","value":127.603603,"adj_value":127.603603},{"id":"Botswana","value":39.04197,"adj_value":39.04197},{"id":"Zambia","value":84.170835,"adj_value":84.170835},{"id":"Swaziland","value":28.521751,"adj_value":28.521751},{"id":"Zimbabwe","value":37.834783,"adj_value":37.834783},{"id":"Malawi","value":37.201602,"adj_value":37.201602},{"id":"Lesotho","value":0.881897,"adj_value":0.881897}]}]}]},{"id":"1985","children":[{"id":"Imports","children":[{"id":"North America","children":[{"id":"Canada","value":69006.4,"adj_value":152007.2979},{"id":"Mexico","value":19131.7,"adj_value":42143.30876},{"id":"Guatemala","value":409,"adj_value":900.9452},{"id":"El Salvador","value":395.6,"adj_value":871.42768},{"id":"Honduras","value":375.4,"adj_value":826.93112},{"id":"Costa Rica","value":501.3,"adj_value":1104.26364},{"id":"Panama","value":410.6,"adj_value":904.46968},{"id":"Bahamas","value":626.3,"adj_value":1379.61364},{"id":"Jamaica","value":272.7,"adj_value":600.70356},{"id":"Haiti","value":389.6,"adj_value":858.21088},{"id":"Dominican Republic","value":982.3,"adj_value":2163.81044},{"id":"Trinidad and Tobago","value":1258.4,"adj_value":2772.00352},{"id":"Netherlands Antilles","value":808,"adj_value":1779.8624}]},{"id":"South America","children":[{"id":"Colombia","value":1330.7,"adj_value":2931.26596},{"id":"Venezuela","value":6537.1,"adj_value":14399.92388},{"id":"Ecuador","value":1836.5,"adj_value":4045.4422},{"id":"Peru","value":1086.6,"adj_value":2393.56248},{"id":"Chile","value":745.2,"adj_value":1641.52656},{"id":"Brazil","value":7526.2,"adj_value":16578.71336},{"id":"Paraguay","value":23.6,"adj_value":51.98608},{"id":"Uruguay","value":556.6,"adj_value":1226.07848},{"id":"Argentina","value":1069.3,"adj_value":2355.45404}]},{"id":"Europe","children":[{"id":"Iceland","value":247.8,"adj_value":545.85384},{"id":"Sweden","value":4123.7,"adj_value":9083.68636},{"id":"Norway","value":1164.3,"adj_value":2564.72004},{"id":"Finland","value":895.2,"adj_value":1971.94656},{"id":"Denmark","value":1664.4,"adj_value":3666.34032},{"id":"United Kingdom","value":14937.2,"adj_value":32903.66416},{"id":"Ireland","value":901.1,"adj_value":1984.94308},{"id":"Netherlands","value":4081.3,"adj_value":8990.28764},{"id":"Belgium","value":3355.2,"adj_value":7390.83456},{"id":"France","value":9482,"adj_value":20886.9496},{"id":"Germany","value":20239.2,"adj_value":44582.90976},{"id":"Austria","value":833.7,"adj_value":1836.47436},{"id":"Hungary","value":218.3,"adj_value":480.87124},{"id":"Switzerland","value":3476.1,"adj_value":7657.15308},{"id":"Poland","value":220.2,"adj_value":485.05656},{"id":"USSR","value":408.5,"adj_value":899.8438},{"id":"Spain","value":2515.2,"adj_value":5540.48256},{"id":"Portugal","value":546,"adj_value":1202.7288},{"id":"Italy","value":9673.8,"adj_value":21309.44664},{"id":"Yugoslavia (former)","value":542.2,"adj_value":1194.35816},{"id":"Greece","value":394.7,"adj_value":869.44516}]},{"id":"Asia","children":[{"id":"Turkey","value":601.9,"adj_value":1325.86532},{"id":"Iran","value":725.1,"adj_value":1597.25028},{"id":"Israel","value":2122.5,"adj_value":4675.443},{"id":"Kuwait","value":184,"adj_value":405.3152},{"id":"Saudi Arabia","value":1907.1,"adj_value":4200.95988},{"id":"United Arab Emirates","value":671,"adj_value":1478.0788},{"id":"Bahrain","value":83.3,"adj_value":183.49324},{"id":"India","value":2294.7,"adj_value":5054.76516},{"id":"Pakistan","value":273.9,"adj_value":603.34692},{"id":"Bangladesh","value":196,"adj_value":431.7488},{"id":"Sri Lanka","value":281.9,"adj_value":620.96932},{"id":"Thailand","value":1428.3,"adj_value":3146.25924},{"id":"Malaysia","value":2299.9,"adj_value":5066.21972},{"id":"Singapore","value":4259.9,"adj_value":9383.70772},{"id":"Indonesia","value":4568.9,"adj_value":10064.37292},{"id":"Philippines","value":2145,"adj_value":4725.006},{"id":"Macau","value":341.9,"adj_value":753.13732},{"id":"China","value":3861.7,"adj_value":8506.55276},{"id":"Korea, South","value":10013.3,"adj_value":22057.29724},{"id":"Hong Kong","value":8396.4,"adj_value":18495.58992},{"id":"Taiwan","value":16396.3,"adj_value":36117.76964},{"id":"Japan","value":68782.9,"adj_value":151514.9721}]},{"id":"Australia","children":[{"id":"Australia","value":2836.3,"adj_value":6247.80164},{"id":"New Zealand","value":857,"adj_value":1887.7996}]},{"id":"Africa","children":[{"id":"Algeria","value":2333,"adj_value":5139.1324},{"id":"Egypt","value":79.1,"adj_value":174.24148},{"id":"Cote d'Ivoire","value":524.8,"adj_value":1156.02944},{"id":"Nigeria","value":3001.9,"adj_value":6612.58532},{"id":"Gabon","value":501.9,"adj_value":1105.58532},{"id":"Angola","value":1053.6,"adj_value":2320.87008},{"id":"Congo (Brazzaville)","value":609.3,"adj_value":1342.16604},{"id":"Congo (Kinshasa)","value":400.7,"adj_value":882.66196},{"id":"South Africa","value":2070.9,"adj_value":4561.77852}]}]},{"id":"Exports","children":[{"id":"North America","children":[{"id":"Canada","value":47251,"adj_value":104084.5028},{"id":"Mexico","value":13634.7,"adj_value":30034.51716},{"id":"Guatemala","value":404.6,"adj_value":891.25288},{"id":"El Salvador","value":445.5,"adj_value":981.3474},{"id":"Honduras","value":307.9,"adj_value":678.24212},{"id":"Costa Rica","value":421.7,"adj_value":928.92076},{"id":"Panama","value":674.8,"adj_value":1486.44944},{"id":"Bahamas","value":786.3,"adj_value":1732.06164},{"id":"Jamaica","value":404.3,"adj_value":890.59204},{"id":"Haiti","value":395.9,"adj_value":872.08852},{"id":"Dominican Republic","value":742,"adj_value":1634.4776},{"id":"Trinidad and Tobago","value":503.7,"adj_value":1109.55036},{"id":"Netherlands Antilles","value":427.5,"adj_value":941.697}]},{"id":"South America","children":[{"id":"Colombia","value":1467.7,"adj_value":3233.04956},{"id":"Venezuela","value":3399.4,"adj_value":7488.19832},{"id":"Ecuador","value":591.1,"adj_value":1302.07508},{"id":"Peru","value":495.9,"adj_value":1092.36852},{"id":"Chile","value":682.2,"adj_value":1502.75016},{"id":"Brazil","value":3139.6,"adj_value":6915.91088},{"id":"Paraguay","value":98.9,"adj_value":217.85692},{"id":"Uruguay","value":64.3,"adj_value":141.64004},{"id":"Argentina","value":721.3,"adj_value":1588.87964}]},{"id":"Europe","children":[{"id":"Iceland","value":38,"adj_value":83.7064},{"id":"Sweden","value":1924.9,"adj_value":4240.16972},{"id":"Norway","value":665.9,"adj_value":1466.84452},{"id":"Finland","value":437.7,"adj_value":964.16556},{"id":"Denmark","value":705.7,"adj_value":1554.51596},{"id":"United Kingdom","value":11272.8,"adj_value":24831.72384},{"id":"Ireland","value":1341.8,"adj_value":2955.71704},{"id":"Netherlands","value":7269,"adj_value":16012.1532},{"id":"Belgium","value":4917.7,"adj_value":10832.70956},{"id":"France","value":6095.6,"adj_value":13427.38768},{"id":"Germany","value":9050.2,"adj_value":19935.78056},{"id":"Austria","value":441.2,"adj_value":971.87536},{"id":"Hungary","value":94.5,"adj_value":208.1646},{"id":"Switzerland","value":2287.7,"adj_value":5039.34556},{"id":"Poland","value":237.9,"adj_value":524.04612},{"id":"USSR","value":2422.8,"adj_value":5336.94384},{"id":"Spain","value":2524.1,"adj_value":5560.08748},{"id":"Portugal","value":694.5,"adj_value":1529.8446},{"id":"Italy","value":4625.2,"adj_value":10188.39056},{"id":"Yugoslavia (former)","value":594.7,"adj_value":1310.00516},{"id":"Greece","value":497.8,"adj_value":1096.55384}]},{"id":"Asia","children":[{"id":"Turkey","value":1294.6,"adj_value":2851.74488},{"id":"Iran","value":73.9,"adj_value":162.78692},{"id":"Israel","value":2579.6,"adj_value":5682.34288},{"id":"Kuwait","value":550.6,"adj_value":1212.86168},{"id":"Saudi Arabia","value":4474.3,"adj_value":9855.98804},{"id":"United Arab Emirates","value":596.5,"adj_value":1313.9702},{"id":"Bahrain","value":107,"adj_value":235.6996},{"id":"India","value":1641.9,"adj_value":3616.77732},{"id":"Pakistan","value":1041.7,"adj_value":2294.65676},{"id":"Bangladesh","value":218.9,"adj_value":482.19292},{"id":"Sri Lanka","value":72.8,"adj_value":160.36384},{"id":"Thailand","value":849.1,"adj_value":1870.39748},{"id":"Malaysia","value":1539.2,"adj_value":3390.54976},{"id":"Singapore","value":3475.6,"adj_value":7656.05168},{"id":"Indonesia","value":795,"adj_value":1751.226},{"id":"Philippines","value":1379.3,"adj_value":3038.32204},{"id":"Macau","value":1.1,"adj_value":2.42308},{"id":"China","value":3855.7,"adj_value":8493.33596},{"id":"Korea, South","value":5956.3,"adj_value":13120.53764},{"id":"Hong Kong","value":2785.9,"adj_value":6136.78052},{"id":"Taiwan","value":4700,"adj_value":10353.16},{"id":"Japan","value":22630.9,"adj_value":49851.34652}]},{"id":"Australia","children":[{"id":"Australia","value":5440.4,"adj_value":11984.11312},{"id":"New Zealand","value":727.5,"adj_value":1602.537}]},{"id":"Africa","children":[{"id":"Algeria","value":430.1,"adj_value":947.42428},{"id":"Egypt","value":2322.6,"adj_value":5116.22328},{"id":"Cote d'Ivoire","value":69.7,"adj_value":153.53516},{"id":"Nigeria","value":675.7,"adj_value":1488.43196},{"id":"Gabon","value":91.2,"adj_value":200.89536},{"id":"Angola","value":136.9,"adj_value":301.56332},{"id":"Congo (Brazzaville)","value":19.4,"adj_value":42.73432},{"id":"Congo (Kinshasa)","value":101.5,"adj_value":223.5842},{"id":"South Africa","value":1205,"adj_value":2654.374}]}]}]}]},"options":{"tile":"Slice"}},"evals":[],"jsHooks":[]}</script>
</div>
<div style="float:left; display:inline;">
<h3>
Dice
</h3>
<div id="htmlwidget-919827c874ce5b776557" class="treebar html-widget" style="width:400px;height:250px;">
</div>
<script type="application/json" data-for="htmlwidget-919827c874ce5b776557">{"x":{"data":{"children":[{"id":"1995","children":[{"id":"Imports","children":[{"id":"North America","children":[{"id":"Greenland","value":7.6,"adj_value":11.81952},{"id":"Canada","value":144369.9,"adj_value":224524.0685},{"id":"St Pierre and Miquelon","value":3.4,"adj_value":5.28768},{"id":"Mexico","value":62100.4,"adj_value":96578.54208},{"id":"Guatemala","value":1526.8,"adj_value":2374.47936},{"id":"Belize","value":52.1,"adj_value":81.02592},{"id":"El Salvador","value":812.2,"adj_value":1263.13344},{"id":"Honduras","value":1441.2,"adj_value":2241.35424},{"id":"Nicaragua","value":238.8,"adj_value":371.38176},{"id":"Costa Rica","value":1843.2,"adj_value":2866.54464},{"id":"Panama","value":307.1,"adj_value":477.60192},{"id":"Bermuda","value":10.4,"adj_value":16.17408},{"id":"Bahamas","value":156.7,"adj_value":243.69984},{"id":"Cuba","value":0,"adj_value":0},{"id":"Jamaica","value":846.9,"adj_value":1317.09888},{"id":"Turks and Caicos Islands","value":5,"adj_value":7.776},{"id":"Cayman Islands","value":18.2,"adj_value":28.30464},{"id":"Haiti","value":129.9,"adj_value":202.02048},{"id":"Dominican Republic","value":3398.9,"adj_value":5285.96928},{"id":"Anguilla","value":0,"adj_value":0},{"id":"British Virgin Islands","value":11.2,"adj_value":17.41824},{"id":"St Kitts and Nevis","value":22.3,"adj_value":34.68096},{"id":"Antigua and Barbuda","value":2.8,"adj_value":4.35456},{"id":"Montserrat","value":2,"adj_value":3.1104},{"id":"Dominica","value":6.6,"adj_value":10.26432},{"id":"St Lucia","value":35.1,"adj_value":54.58752},{"id":"St Vincent and the Grenadines","value":7.9,"adj_value":12.28608},{"id":"Grenada","value":5.3,"adj_value":8.24256},{"id":"Barbados","value":37.7,"adj_value":58.63104},{"id":"Trinidad and Tobago","value":1089.2,"adj_value":1693.92384},{"id":"Netherlands Antilles","value":289.8,"adj_value":450.69696},{"id":"Aruba","value":420.7,"adj_value":654.27264},{"id":"Guadeloupe","value":1.2,"adj_value":1.86624},{"id":"Martinique","value":1.9,"adj_value":2.95488}]},{"id":"South America","children":[{"id":"Colombia","value":3791,"adj_value":5895.7632},{"id":"Venezuela","value":9764,"adj_value":15184.9728},{"id":"Guyana","value":107.4,"adj_value":167.02848},{"id":"Suriname","value":100,"adj_value":155.52},{"id":"French Guiana","value":5.2,"adj_value":8.08704},{"id":"Ecuador","value":1939.7,"adj_value":3016.62144},{"id":"Peru","value":1034.4,"adj_value":1608.69888},{"id":"Bolivia","value":262.5,"adj_value":408.24},{"id":"Chile","value":1930.8,"adj_value":3002.78016},{"id":"Brazil","value":8832.9,"adj_value":13736.92608},{"id":"Paraguay","value":55,"adj_value":85.536},{"id":"Uruguay","value":167.2,"adj_value":260.02944},{"id":"Argentina","value":1760.8,"adj_value":2738.39616},{"id":"Falkland Islands(Islas Malvin","value":0.5,"adj_value":0.7776}]},{"id":"Europe","children":[{"id":"Iceland","value":232.8,"adj_value":362.05056},{"id":"Sweden","value":6256.4,"adj_value":9729.95328},{"id":"Svalbard, Jan Mayen Island","value":0.2,"adj_value":0.31104},{"id":"Norway","value":3086.7,"adj_value":4800.43584},{"id":"Finland","value":2269.9,"adj_value":3530.14848},{"id":"Faroe Islands","value":8.4,"adj_value":13.06368},{"id":"Denmark","value":1944.9,"adj_value":3024.70848},{"id":"United Kingdom","value":26929.7,"adj_value":41881.06944},{"id":"Ireland","value":4078.7,"adj_value":6343.19424},{"id":"Netherlands","value":6404.9,"adj_value":9960.90048},{"id":"Belgium","value":6053.9,"adj_value":9415.02528},{"id":"Luxembourg","value":233.8,"adj_value":363.60576},{"id":"Andorra","value":0.2,"adj_value":0.31104},{"id":"Monaco","value":12.2,"adj_value":18.97344},{"id":"France","value":17209.4,"adj_value":26764.05888},{"id":"Germany","value":36843.9,"adj_value":57299.63328},{"id":"Austria","value":1963.2,"adj_value":3053.16864},{"id":"Czechoslovakia","value":0,"adj_value":0},{"id":"Czech Republic","value":363.3,"adj_value":565.00416},{"id":"Slovakia","value":129.5,"adj_value":201.3984},{"id":"Hungary","value":547,"adj_value":850.6944},{"id":"Liechtenstein","value":126.2,"adj_value":196.26624},{"id":"Switzerland","value":7593.9,"adj_value":11810.03328},{"id":"Estonia","value":62.1,"adj_value":96.57792},{"id":"Latvia","value":82,"adj_value":127.5264},{"id":"Lithuania","value":26.5,"adj_value":41.2128},{"id":"Poland","value":663.6,"adj_value":1032.03072},{"id":"USSR","value":0,"adj_value":0},{"id":"Russia","value":4030.1,"adj_value":6267.61152},{"id":"Belarus","value":45,"adj_value":69.984},{"id":"Ukraine","value":405.7,"adj_value":630.94464},{"id":"Armenia","value":16.3,"adj_value":25.34976},{"id":"Azerbaijan","value":0.7,"adj_value":1.08864},{"id":"Georgia","value":10.7,"adj_value":16.64064},{"id":"Kazakhstan","value":122.9,"adj_value":191.13408},{"id":"Kyrgyzstan","value":8.4,"adj_value":13.06368},{"id":"Moldova","value":24.8,"adj_value":38.56896},{"id":"Tajikistan","value":40.9,"adj_value":63.60768},{"id":"Turkmenistan","value":1.3,"adj_value":2.02176},{"id":"Uzbekistan","value":18.8,"adj_value":29.23776},{"id":"Spain","value":3879.7,"adj_value":6033.70944},{"id":"Portugal","value":1056.7,"adj_value":1643.37984},{"id":"Gibraltar","value":4.8,"adj_value":7.46496},{"id":"Malta","value":132.5,"adj_value":206.064},{"id":"San Marino","value":1,"adj_value":1.5552},{"id":"Vatican City","value":0.7,"adj_value":1.08864},{"id":"Italy","value":16348.4,"adj_value":25425.03168},{"id":"Yugoslavia (former)","value":0,"adj_value":0},{"id":"Croatia","value":93.8,"adj_value":145.87776},{"id":"Slovenia","value":289.5,"adj_value":450.2304},{"id":"Bosnia and Herzegovina","value":3.5,"adj_value":5.4432},{"id":"Macedonia","value":88.8,"adj_value":138.10176},{"id":"Serbia and Montenegro","value":0,"adj_value":0},{"id":"Albania","value":9.4,"adj_value":14.61888},{"id":"Greece","value":397.1,"adj_value":617.56992},{"id":"Romania","value":222.3,"adj_value":345.72096},{"id":"Bulgaria","value":188.5,"adj_value":293.1552}]},{"id":"Asia","children":[{"id":"Turkey","value":1797.9,"adj_value":2796.09408},{"id":"Cyprus","value":13.1,"adj_value":20.37312},{"id":"Syria","value":61.1,"adj_value":95.02272},{"id":"Lebanon","value":35,"adj_value":54.432},{"id":"Iraq","value":0,"adj_value":0},{"id":"Iran","value":0.2,"adj_value":0.31104},{"id":"Israel","value":0,"adj_value":0},{"id":"Israel","value":5708.7,"adj_value":8878.17024},{"id":"Gaza Strip admin. by Israel","value":0,"adj_value":0},{"id":"West Bank admin. by Israel","value":0,"adj_value":0},{"id":"Jordan","value":28.9,"adj_value":44.94528},{"id":"Kuwait","value":1335.5,"adj_value":2076.9696},{"id":"Iraq-Saudi Arabia Neutral Zone","value":0,"adj_value":0},{"id":"Saudi Arabia","value":8376.6,"adj_value":13027.28832},{"id":"Qatar","value":90.9,"adj_value":141.36768},{"id":"United Arab Emirates","value":459.1,"adj_value":713.99232},{"id":"Republic of Yemen","value":41.5,"adj_value":64.5408},{"id":"Oman","value":294.9,"adj_value":458.62848},{"id":"Bahrain","value":134.3,"adj_value":208.86336},{"id":"Afghanistan","value":5.4,"adj_value":8.39808},{"id":"India","value":5726.3,"adj_value":8905.54176},{"id":"Pakistan","value":1197,"adj_value":1861.5744},{"id":"Nepal","value":96.1,"adj_value":149.45472},{"id":"Bangladesh","value":1257.2,"adj_value":1955.19744},{"id":"Sri Lanka","value":1259.7,"adj_value":1959.08544},{"id":"Burma","value":81,"adj_value":125.9712},{"id":"Thailand","value":11348.1,"adj_value":17648.56512},{"id":"Vietnam","value":199,"adj_value":309.4848},{"id":"Laos","value":10.2,"adj_value":15.86304},{"id":"Cambodia","value":5.1,"adj_value":7.93152},{"id":"Malaysia","value":17454.9,"adj_value":27145.86048},{"id":"Singapore","value":18560.4,"adj_value":28865.13408},{"id":"Indonesia","value":7435.3,"adj_value":11563.37856},{"id":"Brunei","value":38.4,"adj_value":59.71968},{"id":"Philippines","value":7006.5,"adj_value":10896.5088},{"id":"Macau","value":895.3,"adj_value":1392.37056},{"id":"Bhutan","value":0.1,"adj_value":0.15552},{"id":"Maldives","value":12,"adj_value":18.6624},{"id":"China","value":45543.2,"adj_value":70828.78464},{"id":"Mongolia","value":23.2,"adj_value":36.08064},{"id":"Korea, North","value":0,"adj_value":0},{"id":"Korea, South","value":24184,"adj_value":37610.9568},{"id":"Hong Kong","value":10291.3,"adj_value":16005.02976},{"id":"Taiwan","value":28971.9,"adj_value":45057.09888},{"id":"Japan","value":123479.3,"adj_value":192035.0074}]},{"id":"Australia","children":[{"id":"Australia","value":3323,"adj_value":5167.9296},{"id":"Norfolk Island","value":78.6,"adj_value":122.23872},{"id":"Cocos (Keeling) Islands","value":0,"adj_value":0},{"id":"Christmas Island","value":0,"adj_value":0},{"id":"Heard and McDonald Islands","value":0.3,"adj_value":0.46656},{"id":"Papua New Guinea","value":50.2,"adj_value":78.07104},{"id":"New Zealand","value":1451.8,"adj_value":2257.83936},{"id":"Cook Islands","value":0.8,"adj_value":1.24416},{"id":"Tokelau","value":6.1,"adj_value":9.48672},{"id":"Niue","value":0.1,"adj_value":0.15552},{"id":"Samoa","value":0.3,"adj_value":0.46656},{"id":"Solomon Islands","value":4.3,"adj_value":6.68736},{"id":"Vanuatu","value":0,"adj_value":0},{"id":"Pitcairn Islands","value":0,"adj_value":0},{"id":"Kiribati","value":1.4,"adj_value":2.17728},{"id":"Tuvalu","value":0,"adj_value":0},{"id":"New Caledonia","value":40.2,"adj_value":62.51904},{"id":"Wallis and Futuna","value":0,"adj_value":0},{"id":"French Polynesia","value":14.4,"adj_value":22.39488},{"id":"Marshall Islands","value":11.1,"adj_value":17.26272},{"id":"Micronesia","value":13.2,"adj_value":20.52864},{"id":"Palau","value":5.8,"adj_value":9.02016},{"id":"Nauru","value":0,"adj_value":0},{"id":"Fiji","value":78.1,"adj_value":121.46112},{"id":"Tonga","value":6.2,"adj_value":9.64224}]},{"id":"Africa","children":[{"id":"Morocco","value":239.4,"adj_value":372.31488},{"id":"Algeria","value":1749.5,"adj_value":2720.8224},{"id":"Tunisia","value":70.4,"adj_value":109.48608},{"id":"Libya","value":0,"adj_value":0},{"id":"Egypt","value":606.3,"adj_value":942.91776},{"id":"Sudan","value":22.6,"adj_value":35.14752},{"id":"Western Sahara","value":0,"adj_value":0},{"id":"Equatorial Guinea","value":31,"adj_value":48.2112},{"id":"Mauritania","value":5.4,"adj_value":8.39808},{"id":"Cameroon","value":57.3,"adj_value":89.11296},{"id":"Senegal","value":4.9,"adj_value":7.62048},{"id":"Mali","value":3.6,"adj_value":5.59872},{"id":"Guinea","value":98.8,"adj_value":153.65376},{"id":"Sierra Leone","value":28.4,"adj_value":44.16768},{"id":"Cote d'Ivoire","value":214.1,"adj_value":332.96832},{"id":"Ghana","value":196.1,"adj_value":304.97472},{"id":"Gambia","value":2.2,"adj_value":3.42144},{"id":"Niger","value":1.4,"adj_value":2.17728},{"id":"Togo","value":3.3,"adj_value":5.13216},{"id":"Nigeria","value":4930.5,"adj_value":7667.9136},{"id":"Central African Republic","value":0.4,"adj_value":0.62208},{"id":"Gabon","value":1463.9,"adj_value":2276.65728},{"id":"Chad","value":3.3,"adj_value":5.13216},{"id":"St Helena","value":0,"adj_value":0},{"id":"Burkina Faso","value":0.4,"adj_value":0.62208},{"id":"Benin","value":10,"adj_value":15.552},{"id":"Angola","value":2232.3,"adj_value":3471.67296},{"id":"Congo (Brazzaville)","value":206.8,"adj_value":321.61536},{"id":"Guinea-Bissau","value":0,"adj_value":0},{"id":"Cabo Verde","value":0.2,"adj_value":0.31104},{"id":"Sao Tome and Principe","value":0.1,"adj_value":0.15552},{"id":"Liberia","value":9.9,"adj_value":15.39648},{"id":"Congo (Kinshasa)","value":267,"adj_value":415.2384},{"id":"Burundi","value":20.5,"adj_value":31.8816},{"id":"Rwanda","value":1.8,"adj_value":2.79936},{"id":"Somalia","value":0,"adj_value":0},{"id":"Ethiopia","value":0,"adj_value":0},{"id":"Eritrea","value":0.4,"adj_value":0.62208},{"id":"Ethiopia","value":32.9,"adj_value":51.16608},{"id":"Djibouti","value":0,"adj_value":0},{"id":"Uganda","value":13.4,"adj_value":20.83968},{"id":"Kenya","value":101.5,"adj_value":157.8528},{"id":"Seychelles","value":2.5,"adj_value":3.888},{"id":"British Indian Ocean Terr.","value":1.9,"adj_value":2.95488},{"id":"Tanzania","value":22.4,"adj_value":34.83648},{"id":"Mauritius","value":229.5,"adj_value":356.9184},{"id":"Mozambique","value":27.5,"adj_value":42.768},{"id":"Madagascar","value":57.4,"adj_value":89.26848},{"id":"Comoros","value":2.2,"adj_value":3.42144},{"id":"Reunion","value":0.4,"adj_value":0.62208},{"id":"French Southern and Antarctic","value":0.4,"adj_value":0.62208},{"id":"South Africa","value":2208,"adj_value":3433.8816},{"id":"Namibia","value":11.5,"adj_value":17.8848},{"id":"Botswana","value":21.3,"adj_value":33.12576},{"id":"Zambia","value":32.8,"adj_value":51.01056},{"id":"Swaziland","value":32.4,"adj_value":50.38848},{"id":"Zimbabwe","value":97.5,"adj_value":151.632},{"id":"Malawi","value":41.1,"adj_value":63.91872},{"id":"Lesotho","value":62.3,"adj_value":96.88896}]}]},{"id":"Exports","children":[{"id":"North America","children":[{"id":"Greenland","value":2.4,"adj_value":3.73248},{"id":"Canada","value":127226,"adj_value":197861.8752},{"id":"St Pierre and Miquelon","value":0.5,"adj_value":0.7776},{"id":"Mexico","value":46292.1,"adj_value":71993.47392},{"id":"Guatemala","value":1646.6,"adj_value":2560.79232},{"id":"Belize","value":99.7,"adj_value":155.05344},{"id":"El Salvador","value":1110.4,"adj_value":1726.89408},{"id":"Honduras","value":1278.9,"adj_value":1988.94528},{"id":"Nicaragua","value":249.8,"adj_value":388.48896},{"id":"Costa Rica","value":1736.6,"adj_value":2700.76032},{"id":"Panama","value":1389.6,"adj_value":2161.10592},{"id":"Bermuda","value":298.5,"adj_value":464.2272},{"id":"Bahamas","value":661.2,"adj_value":1028.29824},{"id":"Cuba","value":5.4,"adj_value":8.39808},{"id":"Jamaica","value":1420.2,"adj_value":2208.69504},{"id":"Turks and Caicos Islands","value":33.6,"adj_value":52.25472},{"id":"Cayman Islands","value":180.1,"adj_value":280.09152},{"id":"Haiti","value":550.1,"adj_value":855.51552},{"id":"Dominican Republic","value":3014.9,"adj_value":4688.77248},{"id":"Anguilla","value":14.6,"adj_value":22.70592},{"id":"British Virgin Islands","value":49.2,"adj_value":76.51584},{"id":"St Kitts and Nevis","value":43.6,"adj_value":67.80672},{"id":"Antigua and Barbuda","value":97,"adj_value":150.8544},{"id":"Montserrat","value":4.4,"adj_value":6.84288},{"id":"Dominica","value":26.6,"adj_value":41.36832},{"id":"St Lucia","value":80.8,"adj_value":125.66016},{"id":"St Vincent and the Grenadines","value":42.2,"adj_value":65.62944},{"id":"Grenada","value":26.9,"adj_value":41.83488},{"id":"Barbados","value":185.6,"adj_value":288.64512},{"id":"Trinidad and Tobago","value":689.2,"adj_value":1071.84384},{"id":"Netherlands Antilles","value":503.9,"adj_value":783.66528},{"id":"Aruba","value":247.6,"adj_value":385.06752},{"id":"Guadeloupe","value":69.1,"adj_value":107.46432},{"id":"Martinique","value":38.5,"adj_value":59.8752}]},{"id":"South America","children":[{"id":"Colombia","value":4624.4,"adj_value":7191.86688},{"id":"Venezuela","value":4640.4,"adj_value":7216.75008},{"id":"Guyana","value":141.3,"adj_value":219.74976},{"id":"Suriname","value":189.7,"adj_value":295.02144},{"id":"French Guiana","value":441.8,"adj_value":687.08736},{"id":"Ecuador","value":1538.3,"adj_value":2392.36416},{"id":"Peru","value":1775.4,"adj_value":2761.10208},{"id":"Bolivia","value":213.5,"adj_value":332.0352},{"id":"Chile","value":3614.7,"adj_value":5621.58144},{"id":"Brazil","value":11439.4,"adj_value":17790.55488},{"id":"Paraguay","value":992.4,"adj_value":1543.38048},{"id":"Uruguay","value":395.8,"adj_value":615.54816},{"id":"Argentina","value":4189.2,"adj_value":6515.04384},{"id":"Falkland Islands(Islas Malvin","value":0.3,"adj_value":0.46656}]},{"id":"Europe","children":[{"id":"Iceland","value":170.5,"adj_value":265.1616},{"id":"Sweden","value":3079.7,"adj_value":4789.54944},{"id":"Svalbard, Jan Mayen Island","value":1.1,"adj_value":1.71072},{"id":"Norway","value":1292.9,"adj_value":2010.71808},{"id":"Finland","value":1249.7,"adj_value":1943.53344},{"id":"Faroe Islands","value":0.4,"adj_value":0.62208},{"id":"Denmark","value":1517.7,"adj_value":2360.32704},{"id":"United Kingdom","value":28856.5,"adj_value":44877.6288},{"id":"Ireland","value":4108.7,"adj_value":6389.85024},{"id":"Netherlands","value":16557.6,"adj_value":25750.37952},{"id":"Belgium","value":12465.6,"adj_value":19386.50112},{"id":"Luxembourg","value":374.2,"adj_value":581.95584},{"id":"Andorra","value":16.5,"adj_value":25.6608},{"id":"Monaco","value":9.6,"adj_value":14.92992},{"id":"France","value":14245.2,"adj_value":22154.13504},{"id":"Germany","value":22394.3,"adj_value":34827.61536},{"id":"Austria","value":2017,"adj_value":3136.8384},{"id":"Czechoslovakia","value":0,"adj_value":0},{"id":"Czech Republic","value":362.8,"adj_value":564.22656},{"id":"Slovakia","value":61,"adj_value":94.8672},{"id":"Hungary","value":295.2,"adj_value":459.09504},{"id":"Liechtenstein","value":15.1,"adj_value":23.48352},{"id":"Switzerland","value":6227.4,"adj_value":9684.85248},{"id":"Estonia","value":139.1,"adj_value":216.32832},{"id":"Latvia","value":89.5,"adj_value":139.1904},{"id":"Lithuania","value":52.2,"adj_value":81.18144},{"id":"Poland","value":776.1,"adj_value":1206.99072},{"id":"USSR","value":0,"adj_value":0},{"id":"Russia","value":2823.4,"adj_value":4390.95168},{"id":"Belarus","value":47.9,"adj_value":74.49408},{"id":"Ukraine","value":223.4,"adj_value":347.43168},{"id":"Armenia","value":70.3,"adj_value":109.33056},{"id":"Azerbaijan","value":35.6,"adj_value":55.36512},{"id":"Georgia","value":95.2,"adj_value":148.05504},{"id":"Kazakhstan","value":80.9,"adj_value":125.81568},{"id":"Kyrgyzstan","value":24.6,"adj_value":38.25792},{"id":"Moldova","value":10.2,"adj_value":15.86304},{"id":"Tajikistan","value":17.6,"adj_value":27.37152},{"id":"Turkmenistan","value":34.3,"adj_value":53.34336},{"id":"Uzbekistan","value":63.4,"adj_value":98.59968},{"id":"Spain","value":5526,"adj_value":8594.0352},{"id":"Portugal","value":898.1,"adj_value":1396.72512},{"id":"Gibraltar","value":18.4,"adj_value":28.61568},{"id":"Malta","value":106.7,"adj_value":165.93984},{"id":"San Marino","value":5.7,"adj_value":8.86464},{"id":"Vatican City","value":0.3,"adj_value":0.46656},{"id":"Italy","value":8861.6,"adj_value":13781.56032},{"id":"Yugoslavia (former)","value":0,"adj_value":0},{"id":"Croatia","value":140,"adj_value":217.728},{"id":"Slovenia","value":109.6,"adj_value":170.44992},{"id":"Bosnia and Herzegovina","value":28.3,"adj_value":44.01216},{"id":"Macedonia","value":21.2,"adj_value":32.97024},{"id":"Serbia and Montenegro","value":2.1,"adj_value":3.26592},{"id":"Albania","value":13.5,"adj_value":20.9952},{"id":"Greece","value":1518.7,"adj_value":2361.88224},{"id":"Romania","value":253.2,"adj_value":393.77664},{"id":"Bulgaria","value":131.8,"adj_value":204.97536}]},{"id":"Asia","children":[{"id":"Turkey","value":2768,"adj_value":4304.7936},{"id":"Cyprus","value":257.8,"adj_value":400.93056},{"id":"Syria","value":223.4,"adj_value":347.43168},{"id":"Lebanon","value":592.2,"adj_value":920.98944},{"id":"Iraq","value":0.2,"adj_value":0.31104},{"id":"Iran","value":277.4,"adj_value":431.41248},{"id":"Israel","value":0,"adj_value":0},{"id":"Israel","value":5621,"adj_value":8741.7792},{"id":"Gaza Strip admin. by Israel","value":0.1,"adj_value":0.15552},{"id":"West Bank admin. by Israel","value":0.3,"adj_value":0.46656},{"id":"Jordan","value":335.3,"adj_value":521.45856},{"id":"Kuwait","value":1437.4,"adj_value":2235.44448},{"id":"Iraq-Saudi Arabia Neutral Zone","value":0,"adj_value":0},{"id":"Saudi Arabia","value":6155,"adj_value":9572.256},{"id":"Qatar","value":226,"adj_value":351.4752},{"id":"United Arab Emirates","value":2006.3,"adj_value":3120.19776},{"id":"Republic of Yemen","value":185.3,"adj_value":288.17856},{"id":"Oman","value":222,"adj_value":345.2544},{"id":"Bahrain","value":255.1,"adj_value":396.73152},{"id":"Afghanistan","value":4,"adj_value":6.2208},{"id":"India","value":3295.8,"adj_value":5125.62816},{"id":"Pakistan","value":941.3,"adj_value":1463.90976},{"id":"Nepal","value":9.8,"adj_value":15.24096},{"id":"Bangladesh","value":325,"adj_value":505.44},{"id":"Sri Lanka","value":279.1,"adj_value":434.05632},{"id":"Burma","value":16.2,"adj_value":25.19424},{"id":"Thailand","value":6665,"adj_value":10365.408},{"id":"Vietnam","value":252.3,"adj_value":392.37696},{"id":"Laos","value":1.6,"adj_value":2.48832},{"id":"Cambodia","value":26.9,"adj_value":41.83488},{"id":"Malaysia","value":8816.1,"adj_value":13710.79872},{"id":"Singapore","value":15333,"adj_value":23845.8816},{"id":"Indonesia","value":3359.6,"adj_value":5224.84992},{"id":"Brunei","value":190.1,"adj_value":295.64352},{"id":"Philippines","value":5294.8,"adj_value":8234.47296},{"id":"Macau","value":29.9,"adj_value":46.50048},{"id":"Bhutan","value":0.5,"adj_value":0.7776},{"id":"Maldives","value":1.1,"adj_value":1.71072},{"id":"China","value":11753.7,"adj_value":18279.35424},{"id":"Mongolia","value":13.9,"adj_value":21.61728},{"id":"Korea, North","value":11.6,"adj_value":18.04032},{"id":"Korea, South","value":25379.9,"adj_value":39470.82048},{"id":"Hong Kong","value":14231.5,"adj_value":22132.8288},{"id":"Taiwan","value":19289.6,"adj_value":29999.18592},{"id":"Japan","value":64342.7,"adj_value":100065.767}]},{"id":"Australia","children":[{"id":"Australia","value":10789.1,"adj_value":16779.20832},{"id":"Norfolk Island","value":1.2,"adj_value":1.86624},{"id":"Cocos (Keeling) Islands","value":0.5,"adj_value":0.7776},{"id":"Christmas Island","value":4.5,"adj_value":6.9984},{"id":"Heard and McDonald Islands","value":0,"adj_value":0},{"id":"Papua New Guinea","value":50.8,"adj_value":79.00416},{"id":"New Zealand","value":1691.3,"adj_value":2630.30976},{"id":"Cook Islands","value":0.9,"adj_value":1.39968},{"id":"Tokelau","value":0.1,"adj_value":0.15552},{"id":"Niue","value":31.5,"adj_value":48.9888},{"id":"Samoa","value":7.3,"adj_value":11.35296},{"id":"Solomon Islands","value":2.7,"adj_value":4.19904},{"id":"Vanuatu","value":1.1,"adj_value":1.71072},{"id":"Pitcairn Islands","value":2.2,"adj_value":3.42144},{"id":"Kiribati","value":2.3,"adj_value":3.57696},{"id":"Tuvalu","value":0.3,"adj_value":0.46656},{"id":"New Caledonia","value":22.3,"adj_value":34.68096},{"id":"Wallis and Futuna","value":0,"adj_value":0},{"id":"French Polynesia","value":82.3,"adj_value":127.99296},{"id":"Marshall Islands","value":31.8,"adj_value":49.45536},{"id":"Micronesia","value":23.3,"adj_value":36.23616},{"id":"Palau","value":8.3,"adj_value":12.90816},{"id":"Nauru","value":0.5,"adj_value":0.7776},{"id":"Fiji","value":31.8,"adj_value":49.45536},{"id":"Tonga","value":7.5,"adj_value":11.664}]},{"id":"Africa","children":[{"id":"Morocco","value":517.4,"adj_value":804.66048},{"id":"Algeria","value":774.1,"adj_value":1203.88032},{"id":"Tunisia","value":214.9,"adj_value":334.21248},{"id":"Libya","value":0,"adj_value":0},{"id":"Egypt","value":2985.1,"adj_value":4642.42752},{"id":"Sudan","value":43.5,"adj_value":67.6512},{"id":"Western Sahara","value":0,"adj_value":0},{"id":"Equatorial Guinea","value":5.2,"adj_value":8.08704},{"id":"Mauritania","value":43.2,"adj_value":67.18464},{"id":"Cameroon","value":45.6,"adj_value":70.91712},{"id":"Senegal","value":67.9,"adj_value":105.59808},{"id":"Mali","value":23.1,"adj_value":35.92512},{"id":"Guinea","value":66.5,"adj_value":103.4208},{"id":"Sierra Leone","value":18.1,"adj_value":28.14912},{"id":"Cote d'Ivoire","value":173.3,"adj_value":269.51616},{"id":"Ghana","value":167.2,"adj_value":260.02944},{"id":"Gambia","value":6.1,"adj_value":9.48672},{"id":"Niger","value":39.6,"adj_value":61.58592},{"id":"Togo","value":18.5,"adj_value":28.7712},{"id":"Nigeria","value":602.9,"adj_value":937.63008},{"id":"Central African Republic","value":6.3,"adj_value":9.79776},{"id":"Gabon","value":54.5,"adj_value":84.7584},{"id":"Chad","value":10.8,"adj_value":16.79616},{"id":"St Helena","value":0.3,"adj_value":0.46656},{"id":"Burkina Faso","value":14.7,"adj_value":22.86144},{"id":"Benin","value":34,"adj_value":52.8768},{"id":"Angola","value":259.7,"adj_value":403.88544},{"id":"Congo (Brazzaville)","value":54.8,"adj_value":85.22496},{"id":"Guinea-Bissau","value":0.8,"adj_value":1.24416},{"id":"Cabo Verde","value":7.5,"adj_value":11.664},{"id":"Sao Tome and Principe","value":1.8,"adj_value":2.79936},{"id":"Liberia","value":41.7,"adj_value":64.85184},{"id":"Congo (Kinshasa)","value":77.1,"adj_value":119.90592},{"id":"Burundi","value":2.9,"adj_value":4.51008},{"id":"Rwanda","value":38.3,"adj_value":59.56416},{"id":"Somalia","value":8.1,"adj_value":12.59712},{"id":"Ethiopia","value":0,"adj_value":0},{"id":"Eritrea","value":16.5,"adj_value":25.6608},{"id":"Ethiopia","value":147.7,"adj_value":229.70304},{"id":"Djibouti","value":8.5,"adj_value":13.2192},{"id":"Uganda","value":22.1,"adj_value":34.36992},{"id":"Kenya","value":114,"adj_value":177.2928},{"id":"Seychelles","value":7.2,"adj_value":11.19744},{"id":"British Indian Ocean Terr.","value":1.8,"adj_value":2.79936},{"id":"Tanzania","value":66.2,"adj_value":102.95424},{"id":"Mauritius","value":24.6,"adj_value":38.25792},{"id":"Mozambique","value":49.3,"adj_value":76.67136},{"id":"Madagascar","value":9.8,"adj_value":15.24096},{"id":"Comoros","value":0.6,"adj_value":0.93312},{"id":"Reunion","value":3.7,"adj_value":5.75424},{"id":"French Southern and Antarctic","value":0,"adj_value":0},{"id":"South Africa","value":2750.5,"adj_value":4277.5776},{"id":"Namibia","value":26.5,"adj_value":41.2128},{"id":"Botswana","value":35.7,"adj_value":55.52064},{"id":"Zambia","value":48.9,"adj_value":76.04928},{"id":"Swaziland","value":3.2,"adj_value":4.97664},{"id":"Zimbabwe","value":122.1,"adj_value":189.88992},{"id":"Malawi","value":17.8,"adj_value":27.68256},{"id":"Lesotho","value":1.8,"adj_value":2.79936}]}]}]},{"id":"2005","children":[{"id":"Imports","children":[{"id":"North America","children":[{"id":"Greenland","value":17.255599,"adj_value":20.94139495},{"id":"Canada","value":290384.2932,"adj_value":352410.3782},{"id":"St Pierre and Miquelon","value":1.094378,"adj_value":1.328137141},{"id":"Mexico","value":170108.6141,"adj_value":206443.8141},{"id":"Guatemala","value":3137.382263,"adj_value":3807.527114},{"id":"Belize","value":98.265102,"adj_value":119.2545278},{"id":"El Salvador","value":1988.765718,"adj_value":2413.566075},{"id":"Honduras","value":3749.243099,"adj_value":4550.081425},{"id":"Nicaragua","value":1180.787602,"adj_value":1433.003834},{"id":"Costa Rica","value":3415.279262,"adj_value":4144.782912},{"id":"Panama","value":327.060069,"adj_value":396.9200997},{"id":"Bermuda","value":87.276753,"adj_value":105.9190674},{"id":"Bahamas","value":699.936003,"adj_value":849.4423332},{"id":"Cuba","value":0.009079,"adj_value":0.011018274},{"id":"Jamaica","value":375.57236,"adj_value":455.7946161},{"id":"Turks and Caicos Islands","value":9.434412,"adj_value":11.4496024},{"id":"Cayman Islands","value":53.497875,"adj_value":64.9250211},{"id":"Haiti","value":447.217315,"adj_value":542.7429335},{"id":"Dominican Republic","value":4603.684143,"adj_value":5587.031076},{"id":"Anguilla","value":3.754737,"adj_value":4.556748823},{"id":"British Virgin Islands","value":33.579607,"adj_value":40.75221106},{"id":"St Kitts and Nevis","value":49.718541,"adj_value":60.33842136},{"id":"Antigua and Barbuda","value":4.414365,"adj_value":5.357273364},{"id":"Montserrat","value":0.953906,"adj_value":1.157660322},{"id":"Dominica","value":3.344243,"adj_value":4.058573305},{"id":"St Lucia","value":32.396909,"adj_value":39.31688876},{"id":"St Vincent and the Grenadines","value":15.650342,"adj_value":18.99325505},{"id":"Grenada","value":5.852881,"adj_value":7.103056382},{"id":"Barbados","value":31.903789,"adj_value":38.71843833},{"id":"Trinidad and Tobago","value":7890.88378,"adj_value":9576.376555},{"id":"Netherlands Antilles","value":922.413941,"adj_value":1119.441559},{"id":"Aruba","value":2919.735672,"adj_value":3543.391212},{"id":"Guadeloupe","value":2.128806,"adj_value":2.583518962},{"id":"Martinique","value":22.236488,"adj_value":26.98620184}]},{"id":"South America","children":[{"id":"Colombia","value":8849.380048,"adj_value":10739.60763},{"id":"Venezuela","value":33978.13481,"adj_value":41235.8644},{"id":"Guyana","value":119.931261,"adj_value":145.5485783},{"id":"Suriname","value":165.346376,"adj_value":200.6643619},{"id":"French Guiana","value":0.121285,"adj_value":0.147191476},{"id":"Ecuador","value":5758.679346,"adj_value":6988.733254},{"id":"Peru","value":5119.15577,"adj_value":6212.607442},{"id":"Bolivia","value":293.216045,"adj_value":355.8469922},{"id":"Chile","value":6664.333836,"adj_value":8087.835543},{"id":"Brazil","value":24435.51938,"adj_value":29654.94632},{"id":"Paraguay","value":51.645596,"adj_value":62.67709531},{"id":"Uruguay","value":732.311644,"adj_value":888.7334112},{"id":"Argentina","value":4583.613305,"adj_value":5562.673107},{"id":"Falkland Islands(Islas Malvin","value":9.261546,"adj_value":11.23981223}]},{"id":"Europe","children":[{"id":"Iceland","value":268.97508,"adj_value":326.4281571},{"id":"Sweden","value":13820.97724,"adj_value":16773.13798},{"id":"Svalbard, Jan Mayen Island","value":0.039576,"adj_value":0.048029434},{"id":"Norway","value":6776.30892,"adj_value":8223.728505},{"id":"Finland","value":4341.679942,"adj_value":5269.062778},{"id":"Faroe Islands","value":4.276273,"adj_value":5.189684913},{"id":"Denmark","value":5144.20165,"adj_value":6243.003122},{"id":"United Kingdom","value":51032.62111,"adj_value":61933.18897},{"id":"Ireland","value":28733.08026,"adj_value":34870.4662},{"id":"Netherlands","value":14862.04151,"adj_value":18036.57358},{"id":"Belgium","value":13022.90274,"adj_value":15804.59477},{"id":"Luxembourg","value":388.834493,"adj_value":471.8895407},{"id":"Andorra","value":0.673148,"adj_value":0.816932413},{"id":"Monaco","value":37.485881,"adj_value":45.49286518},{"id":"France","value":33842.05751,"adj_value":41070.721},{"id":"Germany","value":84750.87138,"adj_value":102853.6575},{"id":"Austria","value":6102.944725,"adj_value":7406.533718},{"id":"Czech Republic","value":2192.863031,"adj_value":2661.258574},{"id":"Slovakia","value":960.730063,"adj_value":1165.942004},{"id":"Hungary","value":2561.172978,"adj_value":3108.239526},{"id":"Liechtenstein","value":295.705721,"adj_value":358.868463},{"id":"Switzerland","value":12999.88108,"adj_value":15776.65568},{"id":"Estonia","value":511.379949,"adj_value":620.6107061},{"id":"Latvia","value":362.159252,"adj_value":439.5164682},{"id":"Lithuania","value":633.912046,"adj_value":769.315659},{"id":"Poland","value":1948.58625,"adj_value":2364.804273},{"id":"Russia","value":15306.67384,"adj_value":18576.17937},{"id":"Belarus","value":345.161433,"adj_value":418.8879151},{"id":"Ukraine","value":1098.029235,"adj_value":1332.56828},{"id":"Armenia","value":46.191425,"adj_value":56.05791338},{"id":"Azerbaijan","value":45.361225,"adj_value":55.05038266},{"id":"Georgia","value":194.384289,"adj_value":235.9047731},{"id":"Kazakhstan","value":1101.145431,"adj_value":1336.350095},{"id":"Kyrgyzstan","value":4.618689,"adj_value":5.60524097},{"id":"Moldova","value":50.224656,"adj_value":60.95264252},{"id":"Tajikistan","value":241.029155,"adj_value":292.5129825},{"id":"Turkmenistan","value":135.325351,"adj_value":164.230846},{"id":"Uzbekistan","value":95.627811,"adj_value":116.0539114},{"id":"Spain","value":8614.64214,"adj_value":10454.7297},{"id":"Portugal","value":2328.674933,"adj_value":2826.079899},{"id":"Gibraltar","value":4.637081,"adj_value":5.627561502},{"id":"Malta","value":282.653662,"adj_value":343.0284842},{"id":"San Marino","value":1.389972,"adj_value":1.686870019},{"id":"Vatican City","value":0.282286,"adj_value":0.34258229},{"id":"Italy","value":31009.26008,"adj_value":37632.83803},{"id":"Croatia","value":364.277603,"adj_value":442.087299},{"id":"Slovenia","value":413.019469,"adj_value":501.2404276},{"id":"Bosnia and Herzegovina","value":70.462111,"adj_value":85.51281791},{"id":"Macedonia","value":48.149502,"adj_value":58.43423563},{"id":"Serbia and Montenegro","value":54.632827,"adj_value":66.30239885},{"id":"Albania","value":37.18875,"adj_value":45.132267},{"id":"Greece","value":883.73016,"adj_value":1072.494922},{"id":"Romania","value":1207.584718,"adj_value":1465.524814},{"id":"Bulgaria","value":454.262612,"adj_value":551.2931059}]},{"id":"Asia","children":[{"id":"Turkey","value":5182.052179,"adj_value":6288.938524},{"id":"Cyprus","value":30.536194,"adj_value":37.05872504},{"id":"Syria","value":323.599119,"adj_value":392.7198908},{"id":"Lebanon","value":86.370988,"adj_value":104.819831},{"id":"Iraq","value":9053.695686,"adj_value":10987.56508},{"id":"Iran","value":174.457417,"adj_value":211.7215213},{"id":"Israel","value":16830.46608,"adj_value":20425.45364},{"id":"Gaza Strip admin. by Israel","value":1.443661,"adj_value":1.75202699},{"id":"West Bank admin. by Israel","value":1.604198,"adj_value":1.946854693},{"id":"Jordan","value":1266.84986,"adj_value":1537.44899},{"id":"Kuwait","value":4334.781445,"adj_value":5260.690762},{"id":"Saudi Arabia","value":27192.64204,"adj_value":33000.99038},{"id":"Qatar","value":447.861094,"adj_value":543.5242237},{"id":"United Arab Emirates","value":1468.316627,"adj_value":1781.949059},{"id":"Republic of Yemen","value":278.635079,"adj_value":338.1515319},{"id":"Oman","value":555.043525,"adj_value":673.6008219},{"id":"Bahrain","value":431.61192,"adj_value":523.8042261},{"id":"Afghanistan","value":67.310191,"adj_value":81.6876478},{"id":"India","value":18804.16965,"adj_value":22820.74029},{"id":"Pakistan","value":3253.181975,"adj_value":3948.061645},{"id":"Nepal","value":111.212077,"adj_value":134.9669766},{"id":"Bangladesh","value":2693.035035,"adj_value":3268.267318},{"id":"Sri Lanka","value":2082.938898,"adj_value":2527.854647},{"id":"Burma","value":0.0615,"adj_value":0.0746364},{"id":"Thailand","value":19889.75578,"adj_value":24138.20761},{"id":"Vietnam","value":6631.158734,"adj_value":8047.57424},{"id":"Laos","value":4.166156,"adj_value":5.056046922},{"id":"Cambodia","value":1766.956953,"adj_value":2144.378958},{"id":"Malaysia","value":33685.15957,"adj_value":40880.30965},{"id":"Singapore","value":15110.08962,"adj_value":18337.60477},{"id":"Indonesia","value":12014.34419,"adj_value":14580.6081},{"id":"East Timor","value":0.084963,"adj_value":0.103111097},{"id":"Brunei","value":562.742346,"adj_value":682.9441111},{"id":"Philippines","value":9250.433389,"adj_value":11226.32596},{"id":"Macau","value":1249.02212,"adj_value":1515.813245},{"id":"Bhutan","value":0.615516,"adj_value":0.746990218},{"id":"Maldives","value":5.496456,"adj_value":6.670499002},{"id":"China","value":243470.1048,"adj_value":295475.3192},{"id":"Mongolia","value":143.645404,"adj_value":174.3280623},{"id":"Korea, North","value":0.003252,"adj_value":0.003946627},{"id":"Korea, South","value":43781.44106,"adj_value":53133.15687},{"id":"Hong Kong","value":8891.705575,"adj_value":10790.97389},{"id":"Taiwan","value":34825.82882,"adj_value":42264.62586},{"id":"Japan","value":138003.6962,"adj_value":167481.2857}]},{"id":"Australia","children":[{"id":"Australia","value":7342.17895,"adj_value":8910.468374},{"id":"Norfolk Island","value":0.17315,"adj_value":0.21013484},{"id":"Cocos (Keeling) Islands","value":0.484315,"adj_value":0.587764684},{"id":"Christmas Island","value":0.417613,"adj_value":0.506815137},{"id":"Heard and McDonald Islands","value":0.016396,"adj_value":0.019898186},{"id":"Papua New Guinea","value":58.451246,"adj_value":70.93643215},{"id":"New Zealand","value":3155.239797,"adj_value":3829.199018},{"id":"Cook Islands","value":1.744825,"adj_value":2.11751962},{"id":"Tokelau","value":10.800762,"adj_value":13.10780476},{"id":"Niue","value":0.138878,"adj_value":0.168542341},{"id":"Samoa","value":7.937575,"adj_value":9.63304102},{"id":"Solomon Islands","value":1.351564,"adj_value":1.64025807},{"id":"Vanuatu","value":2.489141,"adj_value":3.020821518},{"id":"Pitcairn Islands","value":1.040512,"adj_value":1.262765363},{"id":"Kiribati","value":1.104581,"adj_value":1.340519502},{"id":"Tuvalu","value":0.056868,"adj_value":0.069015005},{"id":"New Caledonia","value":27.174251,"adj_value":32.97867101},{"id":"Wallis and Futuna","value":0.022469,"adj_value":0.027268378},{"id":"French Polynesia","value":60.124235,"adj_value":72.9667716},{"id":"Marshall Islands","value":17.205126,"adj_value":20.88014091},{"id":"Micronesia","value":1.557731,"adj_value":1.890462342},{"id":"Palau","value":0.484544,"adj_value":0.588042598},{"id":"Nauru","value":0.148786,"adj_value":0.18056669},{"id":"Fiji","value":169.460711,"adj_value":205.6575189},{"id":"Tonga","value":5.350431,"adj_value":6.493283062}]},{"id":"Africa","children":[{"id":"Morocco","value":445.793996,"adj_value":541.0155935},{"id":"Algeria","value":10446.43785,"adj_value":12677.79698},{"id":"Tunisia","value":263.768113,"adj_value":320.1089819},{"id":"Libya","value":1590.341099,"adj_value":1930.037958},{"id":"Egypt","value":2091.236887,"adj_value":2537.925086},{"id":"Sudan","value":13.574271,"adj_value":16.47373529},{"id":"Western Sahara","value":0,"adj_value":0},{"id":"Equatorial Guinea","value":1561.137497,"adj_value":1894.596466},{"id":"Mauritania","value":0.825319,"adj_value":1.001607138},{"id":"Cameroon","value":158.161864,"adj_value":191.9452382},{"id":"Senegal","value":3.662962,"adj_value":4.445370683},{"id":"Mali","value":3.649953,"adj_value":4.429582961},{"id":"Guinea","value":74.733573,"adj_value":90.69666419},{"id":"Sierra Leone","value":9.312822,"adj_value":11.30204078},{"id":"Cote d'Ivoire","value":1197.97516,"adj_value":1453.862654},{"id":"Ghana","value":158.409617,"adj_value":192.2459112},{"id":"Gambia","value":0.427153,"adj_value":0.518392881},{"id":"Niger","value":65.51339,"adj_value":79.5070501},{"id":"Togo","value":6.439273,"adj_value":7.814701713},{"id":"Nigeria","value":24239.35673,"adj_value":29416.88333},{"id":"Central African Republic","value":5.696947,"adj_value":6.913814879},{"id":"Gabon","value":2815.602273,"adj_value":3417.014919},{"id":"Chad","value":1498.086294,"adj_value":1818.077526},{"id":"St Helena","value":3.269267,"adj_value":3.967582431},{"id":"Burkina Faso","value":2.084203,"adj_value":2.529388761},{"id":"Benin","value":0.513184,"adj_value":0.622800102},{"id":"Angola","value":8484.361601,"adj_value":10296.62124},{"id":"Congo (Brazzaville)","value":1622.90154,"adj_value":1969.553309},{"id":"Guinea-Bissau","value":0.120677,"adj_value":0.146453607},{"id":"Cabo Verde","value":2.62425,"adj_value":3.1847898},{"id":"Sao Tome and Principe","value":0.216017,"adj_value":0.262158231},{"id":"Liberia","value":90.827263,"adj_value":110.2279664},{"id":"Congo (Kinshasa)","value":263.558216,"adj_value":319.8542509},{"id":"Burundi","value":4.423229,"adj_value":5.368030714},{"id":"Rwanda","value":6.301468,"adj_value":7.647461565},{"id":"Somalia","value":0.307638,"adj_value":0.373349477},{"id":"Eritrea","value":1.269401,"adj_value":1.540545054},{"id":"Ethiopia","value":61.802253,"adj_value":75.00321424},{"id":"Djibouti","value":1.101206,"adj_value":1.336423602},{"id":"Uganda","value":25.769069,"adj_value":31.27334214},{"id":"Kenya","value":348.019269,"adj_value":422.3561849},{"id":"Seychelles","value":5.883749,"adj_value":7.140517786},{"id":"British Indian Ocean Terr.","value":0.432984,"adj_value":0.525469382},{"id":"Tanzania","value":33.695475,"adj_value":40.89282846},{"id":"Mauritius","value":221.85071,"adj_value":269.2380217},{"id":"Mozambique","value":11.905754,"adj_value":14.44882305},{"id":"Madagascar","value":323.631165,"adj_value":392.7587818},{"id":"Comoros","value":1.447044,"adj_value":1.756132598},{"id":"Reunion","value":5.835528,"adj_value":7.081996781},{"id":"French Southern and Antarctic","value":0.05164,"adj_value":0.062670304},{"id":"South Africa","value":5885.639948,"adj_value":7142.812641},{"id":"Namibia","value":129.590672,"adj_value":157.2712395},{"id":"Botswana","value":178.164424,"adj_value":216.220345},{"id":"Zambia","value":31.70289,"adj_value":38.4746273},{"id":"Swaziland","value":198.886296,"adj_value":241.3684088},{"id":"Zimbabwe","value":94.328983,"adj_value":114.4776538},{"id":"Malawi","value":115.50192,"adj_value":140.1731301},{"id":"Lesotho","value":403.608048,"adj_value":489.8187271}]}]},{"id":"Exports","children":[{"id":"North America","children":[{"id":"Greenland","value":5.085009,"adj_value":6.171166922},{"id":"Canada","value":211898.6894,"adj_value":257160.2494},{"id":"St Pierre and Miquelon","value":0.980031,"adj_value":1.189365622},{"id":"Mexico","value":120247.5801,"adj_value":145932.4633},{"id":"Guatemala","value":2835.38039,"adj_value":3441.017641},{"id":"Belize","value":217.562773,"adj_value":264.0341813},{"id":"El Salvador","value":1854.286657,"adj_value":2250.362287},{"id":"Honduras","value":3253.813808,"adj_value":3948.828437},{"id":"Nicaragua","value":625.460463,"adj_value":759.0588179},{"id":"Costa Rica","value":3598.560177,"adj_value":4367.212631},{"id":"Panama","value":2162.020485,"adj_value":2623.828061},{"id":"Bermuda","value":490.497944,"adj_value":595.2683048},{"id":"Bahamas","value":1786.740047,"adj_value":2168.387721},{"id":"Cuba","value":369.034678,"adj_value":447.8604852},{"id":"Jamaica","value":1700.769277,"adj_value":2064.053595},{"id":"Turks and Caicos Islands","value":237.752693,"adj_value":288.5366682},{"id":"Cayman Islands","value":680.670387,"adj_value":826.0615817},{"id":"Haiti","value":709.620597,"adj_value":861.1955565},{"id":"Dominican Republic","value":4718.733392,"adj_value":5726.654845},{"id":"Anguilla","value":32.186758,"adj_value":39.06184951},{"id":"British Virgin Islands","value":124.856685,"adj_value":151.5260729},{"id":"St Kitts and Nevis","value":94.069439,"adj_value":114.1626712},{"id":"Antigua and Barbuda","value":190.447421,"adj_value":231.1269901},{"id":"Montserrat","value":4.848606,"adj_value":5.884268242},{"id":"Dominica","value":61.540001,"adj_value":74.68494521},{"id":"St Lucia","value":135.389135,"adj_value":164.3082542},{"id":"St Vincent and the Grenadines","value":45.411401,"adj_value":55.11127625},{"id":"Grenada","value":82.440305,"adj_value":100.0495541},{"id":"Barbados","value":394.92009,"adj_value":479.2750212},{"id":"Trinidad and Tobago","value":1416.748479,"adj_value":1719.365954},{"id":"Netherlands Antilles","value":1137.633614,"adj_value":1380.632154},{"id":"Aruba","value":558.924451,"adj_value":678.3107137},{"id":"Guadeloupe","value":54.512655,"adj_value":66.15655811},{"id":"Martinique","value":34.95999,"adj_value":42.42744386}]},{"id":"South America","children":[{"id":"Colombia","value":5462.357164,"adj_value":6629.116654},{"id":"Venezuela","value":6420.897723,"adj_value":7792.401477},{"id":"Guyana","value":176.704601,"adj_value":214.4487038},{"id":"Suriname","value":245.701079,"adj_value":298.1828295},{"id":"French Guiana","value":26.993942,"adj_value":32.75984801},{"id":"Ecuador","value":1963.825872,"adj_value":2383.299078},{"id":"Peru","value":2309.446378,"adj_value":2802.744124},{"id":"Bolivia","value":219.479092,"adj_value":266.3598261},{"id":"Chile","value":5133.523351,"adj_value":6230.043939},{"id":"Brazil","value":15371.71785,"adj_value":18655.11678},{"id":"Paraguay","value":895.819607,"adj_value":1087.166675},{"id":"Uruguay","value":356.676188,"adj_value":432.8622218},{"id":"Argentina","value":4121.861182,"adj_value":5002.29073},{"id":"Falkland Islands(Islas Malvin","value":9.049418,"adj_value":10.98237368}]},{"id":"Europe","children":[{"id":"Iceland","value":512.019513,"adj_value":621.386881},{"id":"Sweden","value":3715.36862,"adj_value":4508.971357},{"id":"Svalbard, Jan Mayen Island","value":5.677609,"adj_value":6.890346282},{"id":"Norway","value":1941.882004,"adj_value":2356.668},{"id":"Finland","value":2254.052992,"adj_value":2735.518711},{"id":"Faroe Islands","value":2.528152,"adj_value":3.068165267},{"id":"Denmark","value":1918.423705,"adj_value":2328.199008},{"id":"United Kingdom","value":38568.08305,"adj_value":46806.22558},{"id":"Ireland","value":8446.771993,"adj_value":10251.00249},{"id":"Netherlands","value":26467.74458,"adj_value":32121.25482},{"id":"Belgium","value":18690.60657,"adj_value":22682.92013},{"id":"Luxembourg","value":711.38307,"adj_value":863.3344938},{"id":"Andorra","value":10.549473,"adj_value":12.80284043},{"id":"Monaco","value":16.776668,"adj_value":20.36016428},{"id":"France","value":22258.62805,"adj_value":27013.071},{"id":"Germany","value":34183.65627,"adj_value":41485.28525},{"id":"Austria","value":2544.481273,"adj_value":3087.982473},{"id":"Czech Republic","value":1053.557481,"adj_value":1278.597359},{"id":"Slovakia","value":149.800634,"adj_value":181.7980494},{"id":"Hungary","value":1023.258213,"adj_value":1241.826167},{"id":"Liechtenstein","value":19.7165,"adj_value":23.9279444},{"id":"Switzerland","value":10717.52806,"adj_value":13006.79206},{"id":"Estonia","value":145.425805,"adj_value":176.4887569},{"id":"Latvia","value":177.537085,"adj_value":215.4590064},{"id":"Lithuania","value":390.027824,"adj_value":473.3377672},{"id":"Poland","value":1267.748385,"adj_value":1538.53944},{"id":"Russia","value":3962.270261,"adj_value":4808.611189},{"id":"Belarus","value":34.942759,"adj_value":42.40653232},{"id":"Ukraine","value":532.954308,"adj_value":646.7933482},{"id":"Armenia","value":65.483218,"adj_value":79.47043336},{"id":"Azerbaijan","value":132.462798,"adj_value":160.7568517},{"id":"Georgia","value":213.886826,"adj_value":259.573052},{"id":"Kazakhstan","value":538.286932,"adj_value":653.2650207},{"id":"Kyrgyzstan","value":31.140901,"adj_value":37.79259745},{"id":"Moldova","value":40.069837,"adj_value":48.62875418},{"id":"Tajikistan","value":28.7867,"adj_value":34.93553912},{"id":"Turkmenistan","value":215.170092,"adj_value":261.1304237},{"id":"Uzbekistan","value":73.826609,"adj_value":89.59597268},{"id":"Spain","value":6839.116578,"adj_value":8299.951879},{"id":"Portugal","value":1131.865366,"adj_value":1373.631808},{"id":"Gibraltar","value":163.257568,"adj_value":198.1293845},{"id":"Malta","value":193.709217,"adj_value":235.0855058},{"id":"San Marino","value":4.676009,"adj_value":5.674804522},{"id":"Vatican City","value":24.181227,"adj_value":29.34633709},{"id":"Italy","value":11524.32529,"adj_value":13985.92117},{"id":"Croatia","value":158.621993,"adj_value":192.5036507},{"id":"Slovenia","value":233.830317,"adj_value":283.7764727},{"id":"Bosnia and Herzegovina","value":17.573793,"adj_value":21.32755518},{"id":"Macedonia","value":31.556267,"adj_value":38.29668563},{"id":"Serbia and Montenegro","value":132.49633,"adj_value":160.7975461},{"id":"Albania","value":18.513925,"adj_value":22.46849938},{"id":"Greece","value":1192.248494,"adj_value":1446.912772},{"id":"Romania","value":608.858767,"adj_value":738.9109996},{"id":"Bulgaria","value":267.93442,"adj_value":325.1652121}]},{"id":"Asia","children":[{"id":"Turkey","value":4238.966194,"adj_value":5144.409373},{"id":"Cyprus","value":84.179247,"adj_value":102.1599342},{"id":"Syria","value":155.049379,"adj_value":188.1679264},{"id":"Lebanon","value":465.688546,"adj_value":565.1596194},{"id":"Iraq","value":1373.986265,"adj_value":1667.469731},{"id":"Iran","value":95.773068,"adj_value":116.2301953},{"id":"Israel","value":9737.340849,"adj_value":11817.23685},{"id":"Gaza Strip admin. by Israel","value":0.23112,"adj_value":0.280487232},{"id":"West Bank admin. by Israel","value":3.720993,"adj_value":4.515797105},{"id":"Jordan","value":644.195347,"adj_value":781.7954731},{"id":"Kuwait","value":1974.875551,"adj_value":2396.708969},{"id":"Saudi Arabia","value":6805.402418,"adj_value":8259.036374},{"id":"Qatar","value":986.642413,"adj_value":1197.389232},{"id":"United Arab Emirates","value":8119.527357,"adj_value":9853.8584},{"id":"Republic of Yemen","value":219.04852,"adj_value":265.8372839},{"id":"Oman","value":570.72512,"adj_value":692.6320056},{"id":"Bahrain","value":350.78451,"adj_value":425.7120813},{"id":"Afghanistan","value":262.153213,"adj_value":318.1491393},{"id":"India","value":7918.602428,"adj_value":9610.015907},{"id":"Pakistan","value":1251.63194,"adj_value":1518.980522},{"id":"Nepal","value":24.704668,"adj_value":29.98158508},{"id":"Bangladesh","value":319.769758,"adj_value":388.0725783},{"id":"Sri Lanka","value":197.631294,"adj_value":239.8453384},{"id":"Burma","value":5.464172,"adj_value":6.631319139},{"id":"Thailand","value":7256.616259,"adj_value":8806.629492},{"id":"Vietnam","value":1193.152202,"adj_value":1448.009512},{"id":"Laos","value":9.807849,"adj_value":11.90280555},{"id":"Cambodia","value":69.652929,"adj_value":84.53079463},{"id":"Malaysia","value":10460.83317,"adj_value":12695.26713},{"id":"Singapore","value":20466.07346,"adj_value":24837.62675},{"id":"Indonesia","value":3053.913961,"adj_value":3706.229983},{"id":"East Timor","value":8.685474,"adj_value":10.54069125},{"id":"Brunei","value":49.614155,"adj_value":60.21173851},{"id":"Philippines","value":6895.406023,"adj_value":8368.26475},{"id":"Macau","value":101.575899,"adj_value":123.272511},{"id":"Bhutan","value":3.05218,"adj_value":3.704125648},{"id":"Maldives","value":9.25555,"adj_value":11.23253548},{"id":"China","value":41192.01012,"adj_value":49990.62349},{"id":"Mongolia","value":21.879286,"adj_value":26.55270149},{"id":"Korea, North","value":5.757048,"adj_value":6.986753453},{"id":"Korea, South","value":27571.60598,"adj_value":33460.90101},{"id":"Hong Kong","value":16351.02861,"adj_value":19843.60832},{"id":"Taiwan","value":21614.49693,"adj_value":26231.35347},{"id":"Japan","value":54680.57985,"adj_value":66360.3517}]},{"id":"Australia","children":[{"id":"Australia","value":15588.51968,"adj_value":18918.22748},{"id":"Norfolk Island","value":0.391532,"adj_value":0.475163235},{"id":"Cocos (Keeling) Islands","value":1.048051,"adj_value":1.271914694},{"id":"Christmas Island","value":2.00592,"adj_value":2.434384512},{"id":"Heard and McDonald Islands","value":0.160607,"adj_value":0.194912655},{"id":"Papua New Guinea","value":55.347872,"adj_value":67.17017746},{"id":"New Zealand","value":2592.076963,"adj_value":3145.744602},{"id":"Cook Islands","value":1.372809,"adj_value":1.666041002},{"id":"Tokelau","value":79.822527,"adj_value":96.87261877},{"id":"Niue","value":0.607643,"adj_value":0.737435545},{"id":"Samoa","value":14.538961,"adj_value":17.64448307},{"id":"Solomon Islands","value":2.297431,"adj_value":2.788162262},{"id":"Vanuatu","value":9.138578,"adj_value":11.09057826},{"id":"Pitcairn Islands","value":0.45629,"adj_value":0.553753544},{"id":"Kiribati","value":2.411608,"adj_value":2.926727469},{"id":"Tuvalu","value":0.04246,"adj_value":0.051529456},{"id":"New Caledonia","value":38.403106,"adj_value":46.60600944},{"id":"Wallis and Futuna","value":0.408737,"adj_value":0.496043223},{"id":"French Polynesia","value":111.838384,"adj_value":135.7270628},{"id":"Marshall Islands","value":75.48435,"adj_value":91.60780716},{"id":"Micronesia","value":25.349268,"adj_value":30.76387164},{"id":"Palau","value":12.22524,"adj_value":14.83655126},{"id":"Nauru","value":1.62475,"adj_value":1.9717966},{"id":"Fiji","value":28.177593,"adj_value":34.19632686},{"id":"Tonga","value":9.685131,"adj_value":11.75387498}]},{"id":"Africa","children":[{"id":"Morocco","value":480.792527,"adj_value":583.4898108},{"id":"Algeria","value":1106.190448,"adj_value":1342.472728},{"id":"Tunisia","value":261.16652,"adj_value":316.9516887},{"id":"Libya","value":83.841985,"adj_value":101.750633},{"id":"Egypt","value":3159.259288,"adj_value":3834.077072},{"id":"Sudan","value":108.105454,"adj_value":131.196779},{"id":"Western Sahara","value":0.028656,"adj_value":0.034776922},{"id":"Equatorial Guinea","value":281.472431,"adj_value":341.5949423},{"id":"Mauritania","value":86.135221,"adj_value":104.5337042},{"id":"Cameroon","value":117.313887,"adj_value":142.3721333},{"id":"Senegal","value":141.499953,"adj_value":171.724343},{"id":"Mali","value":32.421928,"adj_value":39.34725182},{"id":"Guinea","value":93.59706,"adj_value":113.589392},{"id":"Sierra Leone","value":37.829353,"adj_value":45.9097028},{"id":"Cote d'Ivoire","value":124.242832,"adj_value":150.7811009},{"id":"Ghana","value":337.389713,"adj_value":409.4561557},{"id":"Gambia","value":30.604418,"adj_value":37.14152168},{"id":"Niger","value":78.511944,"adj_value":95.28209524},{"id":"Togo","value":27.928388,"adj_value":33.89389168},{"id":"Nigeria","value":1619.788459,"adj_value":1965.775274},{"id":"Central African Republic","value":14.781003,"adj_value":17.93822524},{"id":"Gabon","value":99.105857,"adj_value":120.2748681},{"id":"Chad","value":53.752155,"adj_value":65.23361531},{"id":"St Helena","value":2.732629,"adj_value":3.316318554},{"id":"Burkina Faso","value":25.11081,"adj_value":30.47447902},{"id":"Benin","value":72.278749,"adj_value":87.71748979},{"id":"Angola","value":929.046776,"adj_value":1127.491167},{"id":"Congo (Brazzaville)","value":104.056096,"adj_value":126.2824781},{"id":"Guinea-Bissau","value":2.100355,"adj_value":2.548990828},{"id":"Cabo Verde","value":9.871825,"adj_value":11.98044682},{"id":"Sao Tome and Principe","value":10.153283,"adj_value":12.32202425},{"id":"Liberia","value":69.32032,"adj_value":84.12714035},{"id":"Congo (Kinshasa)","value":64.968131,"adj_value":78.84532378},{"id":"Burundi","value":8.121178,"adj_value":9.855861621},{"id":"Rwanda","value":10.534162,"adj_value":12.784259},{"id":"Somalia","value":8.831504,"adj_value":10.71791325},{"id":"Eritrea","value":31.058711,"adj_value":37.69285167},{"id":"Ethiopia","value":455.635812,"adj_value":552.9596214},{"id":"Djibouti","value":47.571125,"adj_value":57.7323173},{"id":"Uganda","value":62.573652,"adj_value":75.93938407},{"id":"Kenya","value":573.365497,"adj_value":695.8363672},{"id":"Seychelles","value":17.912292,"adj_value":21.73835757},{"id":"British Indian Ocean Terr.","value":0.806112,"adj_value":0.978297523},{"id":"Tanzania","value":96.44391,"adj_value":117.0443292},{"id":"Mauritius","value":30.860179,"adj_value":37.45191323},{"id":"Mozambique","value":62.825299,"adj_value":76.24478287},{"id":"Madagascar","value":28.205237,"adj_value":34.22987562},{"id":"Comoros","value":0.295219,"adj_value":0.358277778},{"id":"Reunion","value":3.78591,"adj_value":4.594580376},{"id":"French Southern and Antarctic","value":0.273678,"adj_value":0.332135621},{"id":"South Africa","value":3906.946741,"adj_value":4741.470565},{"id":"Namibia","value":112.249178,"adj_value":136.2256024},{"id":"Botswana","value":67.272144,"adj_value":81.64147396},{"id":"Zambia","value":29.113109,"adj_value":35.33166908},{"id":"Swaziland","value":11.856893,"adj_value":14.38952534},{"id":"Zimbabwe","value":45.540976,"adj_value":55.26852847},{"id":"Malawi","value":28.049237,"adj_value":34.04055402},{"id":"Lesotho","value":4.015033,"adj_value":4.872644049}]}]}]},{"id":"2015","children":[{"id":"Imports","children":[{"id":"North America","children":[{"id":"Greenland","value":3.800273,"adj_value":3.800273},{"id":"Canada","value":296155.599,"adj_value":296155.599},{"id":"St Pierre and Miquelon","value":0.18562,"adj_value":0.18562},{"id":"Mexico","value":296407.9011,"adj_value":296407.9011},{"id":"Guatemala","value":4120.351959,"adj_value":4120.351959},{"id":"Belize","value":75.287339,"adj_value":75.287339},{"id":"El Salvador","value":2531.699424,"adj_value":2531.699424},{"id":"Honduras","value":4755.934545,"adj_value":4755.934545},{"id":"Nicaragua","value":3188.301535,"adj_value":3188.301535},{"id":"Costa Rica","value":4488.341429,"adj_value":4488.341429},{"id":"Panama","value":408.293396,"adj_value":408.293396},{"id":"Bermuda","value":108.704684,"adj_value":108.704684},{"id":"Bahamas","value":452.744256,"adj_value":452.744256},{"id":"Cuba","value":0,"adj_value":0},{"id":"Jamaica","value":305.978402,"adj_value":305.978402},{"id":"Turks and Caicos Islands","value":14.710225,"adj_value":14.710225},{"id":"Cayman Islands","value":97.496341,"adj_value":97.496341},{"id":"Haiti","value":950.091535,"adj_value":950.091535},{"id":"Dominican Republic","value":4665.266745,"adj_value":4665.266745},{"id":"Anguilla","value":5.583883,"adj_value":5.583883},{"id":"British Virgin Islands","value":16.491398,"adj_value":16.491398},{"id":"St Kitts and Nevis","value":56.753359,"adj_value":56.753359},{"id":"Antigua and Barbuda","value":6.856395,"adj_value":6.856395},{"id":"Montserrat","value":2.271534,"adj_value":2.271534},{"id":"Dominica","value":1.683203,"adj_value":1.683203},{"id":"St Lucia","value":29.00446,"adj_value":29.00446},{"id":"St Vincent and the Grenadines","value":1.768076,"adj_value":1.768076},{"id":"Grenada","value":9.215032,"adj_value":9.215032},{"id":"Barbados","value":68.174291,"adj_value":68.174291},{"id":"Trinidad and Tobago","value":4314.344265,"adj_value":4314.344265},{"id":"Sint Maarten","value":51.873445,"adj_value":51.873445},{"id":"Curacao","value":335.229109,"adj_value":335.229109},{"id":"Aruba","value":54.90185,"adj_value":54.90185},{"id":"Guadeloupe","value":4.123528,"adj_value":4.123528},{"id":"Martinique","value":37.46278,"adj_value":37.46278}]},{"id":"South America","children":[{"id":"Colombia","value":14074.81661,"adj_value":14074.81661},{"id":"Venezuela","value":15564.23275,"adj_value":15564.23275},{"id":"Guyana","value":431.099884,"adj_value":431.099884},{"id":"Suriname","value":146.224404,"adj_value":146.224404},{"id":"French Guiana","value":0.042924,"adj_value":0.042924},{"id":"Ecuador","value":7467.258698,"adj_value":7467.258698},{"id":"Peru","value":5053.337195,"adj_value":5053.337195},{"id":"Bolivia","value":1006.481438,"adj_value":1006.481438},{"id":"Chile","value":8772.414027,"adj_value":8772.414027},{"id":"Brazil","value":27468.23032,"adj_value":27468.23032},{"id":"Paraguay","value":162.023098,"adj_value":162.023098},{"id":"Uruguay","value":604.746068,"adj_value":604.746068},{"id":"Argentina","value":3950.849545,"adj_value":3950.849545},{"id":"Falkland Islands(Islas Malvin","value":14.273948,"adj_value":14.273948}]},{"id":"Europe","children":[{"id":"Iceland","value":316.534176,"adj_value":316.534176},{"id":"Sweden","value":9878.966413,"adj_value":9878.966413},{"id":"Svalbard, Jan Mayen Island","value":0.028231,"adj_value":0.028231},{"id":"Norway","value":4760.200206,"adj_value":4760.200206},{"id":"Finland","value":4506.071121,"adj_value":4506.071121},{"id":"Faroe Islands","value":97.897991,"adj_value":97.897991},{"id":"Denmark","value":7760.022813,"adj_value":7760.022813},{"id":"United Kingdom","value":57962.25131,"adj_value":57962.25131},{"id":"Ireland","value":39336.18067,"adj_value":39336.18067},{"id":"Netherlands","value":16835.61486,"adj_value":16835.61486},{"id":"Belgium","value":19482.27263,"adj_value":19482.27263},{"id":"Luxembourg","value":639.038795,"adj_value":639.038795},{"id":"Andorra","value":4.863157,"adj_value":4.863157},{"id":"Monaco","value":58.818337,"adj_value":58.818337},{"id":"France","value":47815.32286,"adj_value":47815.32286},{"id":"Germany","value":124820.4692,"adj_value":124820.4692},{"id":"Austria","value":11311.97506,"adj_value":11311.97506},{"id":"Czech Republic","value":4497.634904,"adj_value":4497.634904},{"id":"Slovakia","value":2299.822999,"adj_value":2299.822999},{"id":"Hungary","value":5721.266311,"adj_value":5721.266311},{"id":"Liechtenstein","value":310.294941,"adj_value":310.294941},{"id":"Switzerland","value":31396.66041,"adj_value":31396.66041},{"id":"Estonia","value":503.50072,"adj_value":503.50072},{"id":"Latvia","value":302.969587,"adj_value":302.969587},{"id":"Lithuania","value":1059.366349,"adj_value":1059.366349},{"id":"Poland","value":5637.927607,"adj_value":5637.927607},{"id":"Russia","value":16366.16158,"adj_value":16366.16158},{"id":"Belarus","value":158.249733,"adj_value":158.249733},{"id":"Ukraine","value":850.788858,"adj_value":850.788858},{"id":"Armenia","value":62.46349,"adj_value":62.46349},{"id":"Azerbaijan","value":507.148173,"adj_value":507.148173},{"id":"Georgia","value":181.150349,"adj_value":181.150349},{"id":"Kazakhstan","value":816.099815,"adj_value":816.099815},{"id":"Kyrgyzstan","value":15.803561,"adj_value":15.803561},{"id":"Moldova","value":43.920552,"adj_value":43.920552},{"id":"Tajikistan","value":31.123801,"adj_value":31.123801},{"id":"Turkmenistan","value":55.976778,"adj_value":55.976778},{"id":"Uzbekistan","value":9.715446,"adj_value":9.715446},{"id":"Spain","value":14129.84151,"adj_value":14129.84151},{"id":"Portugal","value":3271.009123,"adj_value":3271.009123},{"id":"Gibraltar","value":1.82442,"adj_value":1.82442},{"id":"Malta","value":241.219869,"adj_value":241.219869},{"id":"San Marino","value":8.517198,"adj_value":8.517198},{"id":"Vatican City","value":1.218395,"adj_value":1.218395},{"id":"Italy","value":44159.01154,"adj_value":44159.01154},{"id":"Croatia","value":576.891578,"adj_value":576.891578},{"id":"Slovenia","value":678.110689,"adj_value":678.110689},{"id":"Bosnia and Herzegovina","value":78.282267,"adj_value":78.282267},{"id":"Macedonia","value":203.357353,"adj_value":203.357353},{"id":"Serbia","value":272.617662,"adj_value":272.617662},{"id":"Kosovo","value":2.38298,"adj_value":2.38298},{"id":"Montenegro","value":2.108687,"adj_value":2.108687},{"id":"Albania","value":160.081219,"adj_value":160.081219},{"id":"Greece","value":1356.447796,"adj_value":1356.447796},{"id":"Romania","value":2148.841567,"adj_value":2148.841567},{"id":"Bulgaria","value":597.694693,"adj_value":597.694693}]},{"id":"Asia","children":[{"id":"Turkey","value":7880.91386,"adj_value":7880.91386},{"id":"Cyprus","value":31.98822,"adj_value":31.98822},{"id":"Syria","value":6.544106,"adj_value":6.544106},{"id":"Lebanon","value":93.219618,"adj_value":93.219618},{"id":"Iraq","value":4353.472677,"adj_value":4353.472677},{"id":"Iran","value":10.766314,"adj_value":10.766314},{"id":"Israel","value":24477.02161,"adj_value":24477.02161},{"id":"Gaza Strip admin. by Israel","value":0.012534,"adj_value":0.012534},{"id":"West Bank admin. by Israel","value":5.435229,"adj_value":5.435229},{"id":"Jordan","value":1491.618691,"adj_value":1491.618691},{"id":"Kuwait","value":4684.750276,"adj_value":4684.750276},{"id":"Saudi Arabia","value":22080.78482,"adj_value":22080.78482},{"id":"Qatar","value":1354.237789,"adj_value":1354.237789},{"id":"United Arab Emirates","value":2468.033306,"adj_value":2468.033306},{"id":"Republic of Yemen","value":48.270876,"adj_value":48.270876},{"id":"Oman","value":906.993161,"adj_value":906.993161},{"id":"Bahrain","value":902.425581,"adj_value":902.425581},{"id":"Afghanistan","value":23.454045,"adj_value":23.454045},{"id":"India","value":44791.64405,"adj_value":44791.64405},{"id":"Pakistan","value":3701.018609,"adj_value":3701.018609},{"id":"Nepal","value":86.959805,"adj_value":86.959805},{"id":"Bangladesh","value":5991.251839,"adj_value":5991.251839},{"id":"Sri Lanka","value":2889.92219,"adj_value":2889.92219},{"id":"Burma","value":143.796881,"adj_value":143.796881},{"id":"Thailand","value":28631.93281,"adj_value":28631.93281},{"id":"Vietnam","value":38019.69623,"adj_value":38019.69623},{"id":"Laos","value":45.189001,"adj_value":45.189001},{"id":"Cambodia","value":3025.433126,"adj_value":3025.433126},{"id":"Malaysia","value":33970.67872,"adj_value":33970.67872},{"id":"Singapore","value":18267.48494,"adj_value":18267.48494},{"id":"Indonesia","value":19601.54814,"adj_value":19601.54814},{"id":"East Timor","value":3.302038,"adj_value":3.302038},{"id":"Brunei","value":19.402766,"adj_value":19.402766},{"id":"Philippines","value":10233.69067,"adj_value":10233.69067},{"id":"Macau","value":121.919528,"adj_value":121.919528},{"id":"Bhutan","value":3.398158,"adj_value":3.398158},{"id":"Maldives","value":21.737873,"adj_value":21.737873},{"id":"China","value":483244.7019,"adj_value":483244.7019},{"id":"Mongolia","value":17.222375,"adj_value":17.222375},{"id":"Korea, North","value":0,"adj_value":0},{"id":"Korea, South","value":71758.69672,"adj_value":71758.69672},{"id":"Hong Kong","value":6795.630644,"adj_value":6795.630644},{"id":"Taiwan","value":40907.5936,"adj_value":40907.5936},{"id":"Japan","value":131364.1476,"adj_value":131364.1476}]},{"id":"Australia","children":[{"id":"Australia","value":10894.02186,"adj_value":10894.02186},{"id":"Norfolk Island","value":1.217241,"adj_value":1.217241},{"id":"Cocos (Keeling) Islands","value":3.809085,"adj_value":3.809085},{"id":"Christmas Island","value":2.12084,"adj_value":2.12084},{"id":"Heard and McDonald Islands","value":0.006734,"adj_value":0.006734},{"id":"Papua New Guinea","value":90.809528,"adj_value":90.809528},{"id":"New Zealand","value":4292.770709,"adj_value":4292.770709},{"id":"Cook Islands","value":0.84788,"adj_value":0.84788},{"id":"Tokelau","value":1.848379,"adj_value":1.848379},{"id":"Niue","value":0.531806,"adj_value":0.531806},{"id":"Samoa","value":4.220542,"adj_value":4.220542},{"id":"Solomon Islands","value":3.521953,"adj_value":3.521953},{"id":"Vanuatu","value":3.67132,"adj_value":3.67132},{"id":"Pitcairn Islands","value":0.012162,"adj_value":0.012162},{"id":"Kiribati","value":2.728752,"adj_value":2.728752},{"id":"Tuvalu","value":0.228118,"adj_value":0.228118},{"id":"New Caledonia","value":47.038156,"adj_value":47.038156},{"id":"Wallis and Futuna","value":0.093303,"adj_value":0.093303},{"id":"French Polynesia","value":43.030557,"adj_value":43.030557},{"id":"Marshall Islands","value":29.067047,"adj_value":29.067047},{"id":"Micronesia","value":0.717108,"adj_value":0.717108},{"id":"Palau","value":0.544832,"adj_value":0.544832},{"id":"Nauru","value":0.52087,"adj_value":0.52087},{"id":"Fiji","value":202.639037,"adj_value":202.639037},{"id":"Tonga","value":2.442895,"adj_value":2.442895}]},{"id":"Africa","children":[{"id":"Morocco","value":1011.85636,"adj_value":1011.85636},{"id":"Algeria","value":3371.552526,"adj_value":3371.552526},{"id":"Tunisia","value":546.271256,"adj_value":546.271256},{"id":"Libya","value":155.103895,"adj_value":155.103895},{"id":"Egypt","value":1405.853699,"adj_value":1405.853699},{"id":"Sudan","value":8.973253,"adj_value":8.973253},{"id":"South Sudan","value":0.192583,"adj_value":0.192583},{"id":"Western Sahara","value":0.044063,"adj_value":0.044063},{"id":"Equatorial Guinea","value":163.14305,"adj_value":163.14305},{"id":"Mauritania","value":1.173847,"adj_value":1.173847},{"id":"Cameroon","value":132.053379,"adj_value":132.053379},{"id":"Senegal","value":71.965108,"adj_value":71.965108},{"id":"Mali","value":4.504283,"adj_value":4.504283},{"id":"Guinea","value":79.616516,"adj_value":79.616516},{"id":"Sierra Leone","value":39.58921,"adj_value":39.58921},{"id":"Cote d'Ivoire","value":1027.88557,"adj_value":1027.88557},{"id":"Ghana","value":309.36766,"adj_value":309.36766},{"id":"Gambia","value":0.896754,"adj_value":0.896754},{"id":"Niger","value":4.184625,"adj_value":4.184625},{"id":"Togo","value":14.211452,"adj_value":14.211452},{"id":"Nigeria","value":1915.80016,"adj_value":1915.80016},{"id":"Central African Republic","value":3.12467,"adj_value":3.12467},{"id":"Gabon","value":337.024529,"adj_value":337.024529},{"id":"Chad","value":1303.322183,"adj_value":1303.322183},{"id":"St Helena","value":15.340188,"adj_value":15.340188},{"id":"Burkina Faso","value":3.592979,"adj_value":3.592979},{"id":"Benin","value":4.94488,"adj_value":4.94488},{"id":"Angola","value":2806.494883,"adj_value":2806.494883},{"id":"Congo (Brazzaville)","value":304.303884,"adj_value":304.303884},{"id":"Guinea-Bissau","value":0.05184,"adj_value":0.05184},{"id":"Cabo Verde","value":2.21905,"adj_value":2.21905},{"id":"Sao Tome and Principe","value":0.773369,"adj_value":0.773369},{"id":"Liberia","value":44.940717,"adj_value":44.940717},{"id":"Congo (Kinshasa)","value":153.738045,"adj_value":153.738045},{"id":"Burundi","value":8.427001,"adj_value":8.427001},{"id":"Rwanda","value":45.643909,"adj_value":45.643909},{"id":"Somalia","value":0.896112,"adj_value":0.896112},{"id":"Eritrea","value":0.106871,"adj_value":0.106871},{"id":"Ethiopia","value":310.269077,"adj_value":310.269077},{"id":"Djibouti","value":35.463684,"adj_value":35.463684},{"id":"Uganda","value":64.123855,"adj_value":64.123855},{"id":"Kenya","value":573.095415,"adj_value":573.095415},{"id":"Seychelles","value":5.83899,"adj_value":5.83899},{"id":"British Indian Ocean Terr.","value":15.818366,"adj_value":15.818366},{"id":"Tanzania","value":104.93518,"adj_value":104.93518},{"id":"Mauritius","value":395.664813,"adj_value":395.664813},{"id":"Mozambique","value":96.026702,"adj_value":96.026702},{"id":"Madagascar","value":319.783011,"adj_value":319.783011},{"id":"Mayotte","value":0.095927,"adj_value":0.095927},{"id":"Comoros","value":1.211821,"adj_value":1.211821},{"id":"Reunion","value":16.967288,"adj_value":16.967288},{"id":"French Southern and Antarctic","value":0.013953,"adj_value":0.013953},{"id":"South Africa","value":7314.612701,"adj_value":7314.612701},{"id":"Namibia","value":85.353831,"adj_value":85.353831},{"id":"Botswana","value":211.913954,"adj_value":211.913954},{"id":"Zambia","value":47.114386,"adj_value":47.114386},{"id":"Swaziland","value":21.49843,"adj_value":21.49843},{"id":"Zimbabwe","value":67.166669,"adj_value":67.166669},{"id":"Malawi","value":61.395881,"adj_value":61.395881},{"id":"Lesotho","value":331.955607,"adj_value":331.955607}]}]},{"id":"Exports","children":[{"id":"North America","children":[{"id":"Greenland","value":8.076839,"adj_value":8.076839},{"id":"Canada","value":280609.0056,"adj_value":280609.0056},{"id":"St Pierre and Miquelon","value":0.227459,"adj_value":0.227459},{"id":"Mexico","value":235745.1375,"adj_value":235745.1375},{"id":"Guatemala","value":5806.713895,"adj_value":5806.713895},{"id":"Belize","value":285.240264,"adj_value":285.240264},{"id":"El Salvador","value":3240.284878,"adj_value":3240.284878},{"id":"Honduras","value":5214.668234,"adj_value":5214.668234},{"id":"Nicaragua","value":1267.532561,"adj_value":1267.532561},{"id":"Costa Rica","value":6079.415736,"adj_value":6079.415736},{"id":"Panama","value":7663.548283,"adj_value":7663.548283},{"id":"Bermuda","value":600.945255,"adj_value":600.945255},{"id":"Bahamas","value":2386.461864,"adj_value":2386.461864},{"id":"Cuba","value":180.215206,"adj_value":180.215206},{"id":"Jamaica","value":1716.030814,"adj_value":1716.030814},{"id":"Turks and Caicos Islands","value":279.728597,"adj_value":279.728597},{"id":"Cayman Islands","value":684.947958,"adj_value":684.947958},{"id":"Haiti","value":1140.574185,"adj_value":1140.574185},{"id":"Dominican Republic","value":7113.829302,"adj_value":7113.829302},{"id":"Anguilla","value":47.602633,"adj_value":47.602633},{"id":"British Virgin Islands","value":259.758571,"adj_value":259.758571},{"id":"St Kitts and Nevis","value":149.707108,"adj_value":149.707108},{"id":"Antigua and Barbuda","value":677.657633,"adj_value":677.657633},{"id":"Montserrat","value":6.640011,"adj_value":6.640011},{"id":"Dominica","value":67.312046,"adj_value":67.312046},{"id":"St Lucia","value":510.811024,"adj_value":510.811024},{"id":"St Vincent and the Grenadines","value":84.722498,"adj_value":84.722498},{"id":"Grenada","value":90.420149,"adj_value":90.420149},{"id":"Barbados","value":595.966307,"adj_value":595.966307},{"id":"Trinidad and Tobago","value":2511.195111,"adj_value":2511.195111},{"id":"Sint Maarten","value":741.201231,"adj_value":741.201231},{"id":"Curacao","value":522.079698,"adj_value":522.079698},{"id":"Aruba","value":1167.632524,"adj_value":1167.632524},{"id":"Guadeloupe","value":100.959536,"adj_value":100.959536},{"id":"Martinique","value":119.577165,"adj_value":119.577165}]},{"id":"South America","children":[{"id":"Colombia","value":16286.7799,"adj_value":16286.7799},{"id":"Venezuela","value":8345.880233,"adj_value":8345.880233},{"id":"Guyana","value":368.129666,"adj_value":368.129666},{"id":"Suriname","value":443.643313,"adj_value":443.643313},{"id":"French Guiana","value":1073.642767,"adj_value":1073.642767},{"id":"Ecuador","value":5794.812688,"adj_value":5794.812688},{"id":"Peru","value":8725.607473,"adj_value":8725.607473},{"id":"Bolivia","value":931.431709,"adj_value":931.431709},{"id":"Chile","value":15445.13797,"adj_value":15445.13797},{"id":"Brazil","value":31650.62387,"adj_value":31650.62387},{"id":"Paraguay","value":1514.300292,"adj_value":1514.300292},{"id":"Uruguay","value":1295.148749,"adj_value":1295.148749},{"id":"Argentina","value":9341.210651,"adj_value":9341.210651},{"id":"Falkland Islands(Islas Malvin","value":2.917708,"adj_value":2.917708}]},{"id":"Europe","children":[{"id":"Iceland","value":415.45785,"adj_value":415.45785},{"id":"Sweden","value":3940.8105,"adj_value":3940.8105},{"id":"Svalbard, Jan Mayen Island","value":0.380164,"adj_value":0.380164},{"id":"Norway","value":3570.63315,"adj_value":3570.63315},{"id":"Finland","value":1558.146898,"adj_value":1558.146898},{"id":"Faroe Islands","value":2.336863,"adj_value":2.336863},{"id":"Denmark","value":2202.093582,"adj_value":2202.093582},{"id":"United Kingdom","value":56114.61886,"adj_value":56114.61886},{"id":"Ireland","value":8930.773509,"adj_value":8930.773509},{"id":"Netherlands","value":40196.15629,"adj_value":40196.15629},{"id":"Belgium","value":34159.97966,"adj_value":34159.97966},{"id":"Luxembourg","value":1394.17473,"adj_value":1394.17473},{"id":"Andorra","value":3.336817,"adj_value":3.336817},{"id":"Monaco","value":71.128048,"adj_value":71.128048},{"id":"France","value":30103.5212,"adj_value":30103.5212},{"id":"Germany","value":49970.80411,"adj_value":49970.80411},{"id":"Austria","value":4024.435888,"adj_value":4024.435888},{"id":"Czech Republic","value":1976.037865,"adj_value":1976.037865},{"id":"Slovakia","value":379.469169,"adj_value":379.469169},{"id":"Hungary","value":1715.278037,"adj_value":1715.278037},{"id":"Liechtenstein","value":35.930552,"adj_value":35.930552},{"id":"Switzerland","value":22185.27991,"adj_value":22185.27991},{"id":"Estonia","value":288.143789,"adj_value":288.143789},{"id":"Latvia","value":294.787977,"adj_value":294.787977},{"id":"Lithuania","value":527.67763,"adj_value":527.67763},{"id":"Poland","value":3715.441301,"adj_value":3715.441301},{"id":"Russia","value":7087.111574,"adj_value":7087.111574},{"id":"Belarus","value":59.235752,"adj_value":59.235752},{"id":"Ukraine","value":862.088348,"adj_value":862.088348},{"id":"Armenia","value":50.24617,"adj_value":50.24617},{"id":"Azerbaijan","value":477.316108,"adj_value":477.316108},{"id":"Georgia","value":340.502111,"adj_value":340.502111},{"id":"Kazakhstan","value":510.479071,"adj_value":510.479071},{"id":"Kyrgyzstan","value":32.003481,"adj_value":32.003481},{"id":"Moldova","value":16.163682,"adj_value":16.163682},{"id":"Tajikistan","value":18.985373,"adj_value":18.985373},{"id":"Turkmenistan","value":80.839805,"adj_value":80.839805},{"id":"Uzbekistan","value":137.962928,"adj_value":137.962928},{"id":"Spain","value":10310.27052,"adj_value":10310.27052},{"id":"Portugal","value":942.466275,"adj_value":942.466275},{"id":"Gibraltar","value":1972.99261,"adj_value":1972.99261},{"id":"Malta","value":490.660579,"adj_value":490.660579},{"id":"San Marino","value":5.011879,"adj_value":5.011879},{"id":"Vatican City","value":2.226547,"adj_value":2.226547},{"id":"Italy","value":16204.22609,"adj_value":16204.22609},{"id":"Croatia","value":331.976272,"adj_value":331.976272},{"id":"Slovenia","value":346.040192,"adj_value":346.040192},{"id":"Bosnia and Herzegovina","value":27.586061,"adj_value":27.586061},{"id":"Macedonia","value":30.678977,"adj_value":30.678977},{"id":"Serbia","value":126.25142,"adj_value":126.25142},{"id":"Kosovo","value":19.743318,"adj_value":19.743318},{"id":"Montenegro","value":11.133957,"adj_value":11.133957},{"id":"Albania","value":30.952665,"adj_value":30.952665},{"id":"Greece","value":725.699147,"adj_value":725.699147},{"id":"Romania","value":753.718827,"adj_value":753.718827},{"id":"Bulgaria","value":289.09201,"adj_value":289.09201}]},{"id":"Asia","children":[{"id":"Turkey","value":9502.498123,"adj_value":9502.498123},{"id":"Cyprus","value":101.831614,"adj_value":101.831614},{"id":"Syria","value":3.072304,"adj_value":3.072304},{"id":"Lebanon","value":1272.487166,"adj_value":1272.487166},{"id":"Iraq","value":1971.478767,"adj_value":1971.478767},{"id":"Iran","value":281.512074,"adj_value":281.512074},{"id":"Israel","value":13538.69482,"adj_value":13538.69482},{"id":"Gaza Strip admin. by Israel","value":0.183934,"adj_value":0.183934},{"id":"West Bank admin. by Israel","value":0.903282,"adj_value":0.903282},{"id":"Jordan","value":1358.977191,"adj_value":1358.977191},{"id":"Kuwait","value":2739.289578,"adj_value":2739.289578},{"id":"Saudi Arabia","value":19738.98459,"adj_value":19738.98459},{"id":"Qatar","value":4222.426394,"adj_value":4222.426394},{"id":"United Arab Emirates","value":23003.59562,"adj_value":23003.59562},{"id":"Republic of Yemen","value":158.039977,"adj_value":158.039977},{"id":"Oman","value":2355.271013,"adj_value":2355.271013},{"id":"Bahrain","value":1270.662445,"adj_value":1270.662445},{"id":"Afghanistan","value":478.851271,"adj_value":478.851271},{"id":"India","value":21451.87992,"adj_value":21451.87992},{"id":"Pakistan","value":1837.506933,"adj_value":1837.506933},{"id":"Nepal","value":36.405446,"adj_value":36.405446},{"id":"Bangladesh","value":942.540067,"adj_value":942.540067},{"id":"Sri Lanka","value":361.920786,"adj_value":361.920786},{"id":"Burma","value":227.140755,"adj_value":227.140755},{"id":"Thailand","value":11230.56974,"adj_value":11230.56974},{"id":"Vietnam","value":7087.524038,"adj_value":7087.524038},{"id":"Laos","value":24.584007,"adj_value":24.584007},{"id":"Cambodia","value":391.045876,"adj_value":391.045876},{"id":"Malaysia","value":12277.22614,"adj_value":12277.22614},{"id":"Singapore","value":28472.07098,"adj_value":28472.07098},{"id":"Indonesia","value":7120.940688,"adj_value":7120.940688},{"id":"East Timor","value":2.690584,"adj_value":2.690584},{"id":"Brunei","value":133.449998,"adj_value":133.449998},{"id":"Philippines","value":7907.893167,"adj_value":7907.893167},{"id":"Macau","value":542.354584,"adj_value":542.354584},{"id":"Bhutan","value":2.64104,"adj_value":2.64104},{"id":"Maldives","value":35.143208,"adj_value":35.143208},{"id":"China","value":116071.7696,"adj_value":116071.7696},{"id":"Mongolia","value":69.161103,"adj_value":69.161103},{"id":"Korea, North","value":4.751721,"adj_value":4.751721},{"id":"Korea, South","value":43445.54748,"adj_value":43445.54748},{"id":"Hong Kong","value":37167.02295,"adj_value":37167.02295},{"id":"Taiwan","value":25860.08634,"adj_value":25860.08634},{"id":"Japan","value":62442.64646,"adj_value":62442.64646}]},{"id":"Australia","children":[{"id":"Australia","value":25035.79015,"adj_value":25035.79015},{"id":"Norfolk Island","value":0.350312,"adj_value":0.350312},{"id":"Cocos (Keeling) Islands","value":0.55762,"adj_value":0.55762},{"id":"Christmas Island","value":1.551179,"adj_value":1.551179},{"id":"Heard and McDonald Islands","value":0.913419,"adj_value":0.913419},{"id":"Papua New Guinea","value":207.793894,"adj_value":207.793894},{"id":"New Zealand","value":3631.061903,"adj_value":3631.061903},{"id":"Cook Islands","value":4.249826,"adj_value":4.249826},{"id":"Tokelau","value":0.341222,"adj_value":0.341222},{"id":"Niue","value":0.071371,"adj_value":0.071371},{"id":"Samoa","value":22.71966,"adj_value":22.71966},{"id":"Solomon Islands","value":5.861309,"adj_value":5.861309},{"id":"Vanuatu","value":5.867876,"adj_value":5.867876},{"id":"Pitcairn Islands","value":0.017405,"adj_value":0.017405},{"id":"Kiribati","value":7.320835,"adj_value":7.320835},{"id":"Tuvalu","value":0.625636,"adj_value":0.625636},{"id":"New Caledonia","value":88.651277,"adj_value":88.651277},{"id":"Wallis and Futuna","value":0.376841,"adj_value":0.376841},{"id":"French Polynesia","value":120.047865,"adj_value":120.047865},{"id":"Marshall Islands","value":53.912135,"adj_value":53.912135},{"id":"Micronesia","value":40.032614,"adj_value":40.032614},{"id":"Palau","value":25.693198,"adj_value":25.693198},{"id":"Nauru","value":1.73365,"adj_value":1.73365},{"id":"Fiji","value":56.904585,"adj_value":56.904585},{"id":"Tonga","value":13.817538,"adj_value":13.817538}]},{"id":"Africa","children":[{"id":"Morocco","value":1625.204959,"adj_value":1625.204959},{"id":"Algeria","value":1875.734479,"adj_value":1875.734479},{"id":"Tunisia","value":602.412017,"adj_value":602.412017},{"id":"Libya","value":242.951645,"adj_value":242.951645},{"id":"Egypt","value":4752.983685,"adj_value":4752.983685},{"id":"Sudan","value":59.514997,"adj_value":59.514997},{"id":"South Sudan","value":19.613532,"adj_value":19.613532},{"id":"Western Sahara","value":0.032113,"adj_value":0.032113},{"id":"Equatorial Guinea","value":161.964373,"adj_value":161.964373},{"id":"Mauritania","value":126.280667,"adj_value":126.280667},{"id":"Cameroon","value":224.961698,"adj_value":224.961698},{"id":"Senegal","value":196.428411,"adj_value":196.428411},{"id":"Mali","value":72.426079,"adj_value":72.426079},{"id":"Guinea","value":135.350114,"adj_value":135.350114},{"id":"Sierra Leone","value":77.325724,"adj_value":77.325724},{"id":"Cote d'Ivoire","value":266.335569,"adj_value":266.335569},{"id":"Ghana","value":949.913963,"adj_value":949.913963},{"id":"Gambia","value":37.899622,"adj_value":37.899622},{"id":"Niger","value":71.493157,"adj_value":71.493157},{"id":"Togo","value":311.819809,"adj_value":311.819809},{"id":"Nigeria","value":3437.952784,"adj_value":3437.952784},{"id":"Central African Republic","value":34.309874,"adj_value":34.309874},{"id":"Gabon","value":203.872443,"adj_value":203.872443},{"id":"Chad","value":56.591528,"adj_value":56.591528},{"id":"St Helena","value":3.720487,"adj_value":3.720487},{"id":"Burkina Faso","value":53.875343,"adj_value":53.875343},{"id":"Benin","value":631.462518,"adj_value":631.462518},{"id":"Angola","value":1166.161667,"adj_value":1166.161667},{"id":"Congo (Brazzaville)","value":249.220232,"adj_value":249.220232},{"id":"Guinea-Bissau","value":2.13532,"adj_value":2.13532},{"id":"Cabo Verde","value":7.32166,"adj_value":7.32166},{"id":"Sao Tome and Principe","value":0.853963,"adj_value":0.853963},{"id":"Liberia","value":135.807551,"adj_value":135.807551},{"id":"Congo (Kinshasa)","value":136.189374,"adj_value":136.189374},{"id":"Burundi","value":5.650192,"adj_value":5.650192},{"id":"Rwanda","value":14.28771,"adj_value":14.28771},{"id":"Somalia","value":45.026584,"adj_value":45.026584},{"id":"Eritrea","value":3.497538,"adj_value":3.497538},{"id":"Ethiopia","value":1555.249376,"adj_value":1555.249376},{"id":"Djibouti","value":144.711021,"adj_value":144.711021},{"id":"Uganda","value":88.315069,"adj_value":88.315069},{"id":"Kenya","value":943.436657,"adj_value":943.436657},{"id":"Seychelles","value":18.542809,"adj_value":18.542809},{"id":"British Indian Ocean Terr.","value":0.581016,"adj_value":0.581016},{"id":"Tanzania","value":172.803054,"adj_value":172.803054},{"id":"Mauritius","value":58.435311,"adj_value":58.435311},{"id":"Mozambique","value":264.203995,"adj_value":264.203995},{"id":"Madagascar","value":54.553731,"adj_value":54.553731},{"id":"Mayotte","value":5.697333,"adj_value":5.697333},{"id":"Comoros","value":1.507078,"adj_value":1.507078},{"id":"Reunion","value":6.905271,"adj_value":6.905271},{"id":"French Southern and Antarctic","value":8.026602,"adj_value":8.026602},{"id":"South Africa","value":5458.29362,"adj_value":5458.29362},{"id":"Namibia","value":127.603603,"adj_value":127.603603},{"id":"Botswana","value":39.04197,"adj_value":39.04197},{"id":"Zambia","value":84.170835,"adj_value":84.170835},{"id":"Swaziland","value":28.521751,"adj_value":28.521751},{"id":"Zimbabwe","value":37.834783,"adj_value":37.834783},{"id":"Malawi","value":37.201602,"adj_value":37.201602},{"id":"Lesotho","value":0.881897,"adj_value":0.881897}]}]}]},{"id":"1985","children":[{"id":"Imports","children":[{"id":"North America","children":[{"id":"Canada","value":69006.4,"adj_value":152007.2979},{"id":"Mexico","value":19131.7,"adj_value":42143.30876},{"id":"Guatemala","value":409,"adj_value":900.9452},{"id":"El Salvador","value":395.6,"adj_value":871.42768},{"id":"Honduras","value":375.4,"adj_value":826.93112},{"id":"Costa Rica","value":501.3,"adj_value":1104.26364},{"id":"Panama","value":410.6,"adj_value":904.46968},{"id":"Bahamas","value":626.3,"adj_value":1379.61364},{"id":"Jamaica","value":272.7,"adj_value":600.70356},{"id":"Haiti","value":389.6,"adj_value":858.21088},{"id":"Dominican Republic","value":982.3,"adj_value":2163.81044},{"id":"Trinidad and Tobago","value":1258.4,"adj_value":2772.00352},{"id":"Netherlands Antilles","value":808,"adj_value":1779.8624}]},{"id":"South America","children":[{"id":"Colombia","value":1330.7,"adj_value":2931.26596},{"id":"Venezuela","value":6537.1,"adj_value":14399.92388},{"id":"Ecuador","value":1836.5,"adj_value":4045.4422},{"id":"Peru","value":1086.6,"adj_value":2393.56248},{"id":"Chile","value":745.2,"adj_value":1641.52656},{"id":"Brazil","value":7526.2,"adj_value":16578.71336},{"id":"Paraguay","value":23.6,"adj_value":51.98608},{"id":"Uruguay","value":556.6,"adj_value":1226.07848},{"id":"Argentina","value":1069.3,"adj_value":2355.45404}]},{"id":"Europe","children":[{"id":"Iceland","value":247.8,"adj_value":545.85384},{"id":"Sweden","value":4123.7,"adj_value":9083.68636},{"id":"Norway","value":1164.3,"adj_value":2564.72004},{"id":"Finland","value":895.2,"adj_value":1971.94656},{"id":"Denmark","value":1664.4,"adj_value":3666.34032},{"id":"United Kingdom","value":14937.2,"adj_value":32903.66416},{"id":"Ireland","value":901.1,"adj_value":1984.94308},{"id":"Netherlands","value":4081.3,"adj_value":8990.28764},{"id":"Belgium","value":3355.2,"adj_value":7390.83456},{"id":"France","value":9482,"adj_value":20886.9496},{"id":"Germany","value":20239.2,"adj_value":44582.90976},{"id":"Austria","value":833.7,"adj_value":1836.47436},{"id":"Hungary","value":218.3,"adj_value":480.87124},{"id":"Switzerland","value":3476.1,"adj_value":7657.15308},{"id":"Poland","value":220.2,"adj_value":485.05656},{"id":"USSR","value":408.5,"adj_value":899.8438},{"id":"Spain","value":2515.2,"adj_value":5540.48256},{"id":"Portugal","value":546,"adj_value":1202.7288},{"id":"Italy","value":9673.8,"adj_value":21309.44664},{"id":"Yugoslavia (former)","value":542.2,"adj_value":1194.35816},{"id":"Greece","value":394.7,"adj_value":869.44516}]},{"id":"Asia","children":[{"id":"Turkey","value":601.9,"adj_value":1325.86532},{"id":"Iran","value":725.1,"adj_value":1597.25028},{"id":"Israel","value":2122.5,"adj_value":4675.443},{"id":"Kuwait","value":184,"adj_value":405.3152},{"id":"Saudi Arabia","value":1907.1,"adj_value":4200.95988},{"id":"United Arab Emirates","value":671,"adj_value":1478.0788},{"id":"Bahrain","value":83.3,"adj_value":183.49324},{"id":"India","value":2294.7,"adj_value":5054.76516},{"id":"Pakistan","value":273.9,"adj_value":603.34692},{"id":"Bangladesh","value":196,"adj_value":431.7488},{"id":"Sri Lanka","value":281.9,"adj_value":620.96932},{"id":"Thailand","value":1428.3,"adj_value":3146.25924},{"id":"Malaysia","value":2299.9,"adj_value":5066.21972},{"id":"Singapore","value":4259.9,"adj_value":9383.70772},{"id":"Indonesia","value":4568.9,"adj_value":10064.37292},{"id":"Philippines","value":2145,"adj_value":4725.006},{"id":"Macau","value":341.9,"adj_value":753.13732},{"id":"China","value":3861.7,"adj_value":8506.55276},{"id":"Korea, South","value":10013.3,"adj_value":22057.29724},{"id":"Hong Kong","value":8396.4,"adj_value":18495.58992},{"id":"Taiwan","value":16396.3,"adj_value":36117.76964},{"id":"Japan","value":68782.9,"adj_value":151514.9721}]},{"id":"Australia","children":[{"id":"Australia","value":2836.3,"adj_value":6247.80164},{"id":"New Zealand","value":857,"adj_value":1887.7996}]},{"id":"Africa","children":[{"id":"Algeria","value":2333,"adj_value":5139.1324},{"id":"Egypt","value":79.1,"adj_value":174.24148},{"id":"Cote d'Ivoire","value":524.8,"adj_value":1156.02944},{"id":"Nigeria","value":3001.9,"adj_value":6612.58532},{"id":"Gabon","value":501.9,"adj_value":1105.58532},{"id":"Angola","value":1053.6,"adj_value":2320.87008},{"id":"Congo (Brazzaville)","value":609.3,"adj_value":1342.16604},{"id":"Congo (Kinshasa)","value":400.7,"adj_value":882.66196},{"id":"South Africa","value":2070.9,"adj_value":4561.77852}]}]},{"id":"Exports","children":[{"id":"North America","children":[{"id":"Canada","value":47251,"adj_value":104084.5028},{"id":"Mexico","value":13634.7,"adj_value":30034.51716},{"id":"Guatemala","value":404.6,"adj_value":891.25288},{"id":"El Salvador","value":445.5,"adj_value":981.3474},{"id":"Honduras","value":307.9,"adj_value":678.24212},{"id":"Costa Rica","value":421.7,"adj_value":928.92076},{"id":"Panama","value":674.8,"adj_value":1486.44944},{"id":"Bahamas","value":786.3,"adj_value":1732.06164},{"id":"Jamaica","value":404.3,"adj_value":890.59204},{"id":"Haiti","value":395.9,"adj_value":872.08852},{"id":"Dominican Republic","value":742,"adj_value":1634.4776},{"id":"Trinidad and Tobago","value":503.7,"adj_value":1109.55036},{"id":"Netherlands Antilles","value":427.5,"adj_value":941.697}]},{"id":"South America","children":[{"id":"Colombia","value":1467.7,"adj_value":3233.04956},{"id":"Venezuela","value":3399.4,"adj_value":7488.19832},{"id":"Ecuador","value":591.1,"adj_value":1302.07508},{"id":"Peru","value":495.9,"adj_value":1092.36852},{"id":"Chile","value":682.2,"adj_value":1502.75016},{"id":"Brazil","value":3139.6,"adj_value":6915.91088},{"id":"Paraguay","value":98.9,"adj_value":217.85692},{"id":"Uruguay","value":64.3,"adj_value":141.64004},{"id":"Argentina","value":721.3,"adj_value":1588.87964}]},{"id":"Europe","children":[{"id":"Iceland","value":38,"adj_value":83.7064},{"id":"Sweden","value":1924.9,"adj_value":4240.16972},{"id":"Norway","value":665.9,"adj_value":1466.84452},{"id":"Finland","value":437.7,"adj_value":964.16556},{"id":"Denmark","value":705.7,"adj_value":1554.51596},{"id":"United Kingdom","value":11272.8,"adj_value":24831.72384},{"id":"Ireland","value":1341.8,"adj_value":2955.71704},{"id":"Netherlands","value":7269,"adj_value":16012.1532},{"id":"Belgium","value":4917.7,"adj_value":10832.70956},{"id":"France","value":6095.6,"adj_value":13427.38768},{"id":"Germany","value":9050.2,"adj_value":19935.78056},{"id":"Austria","value":441.2,"adj_value":971.87536},{"id":"Hungary","value":94.5,"adj_value":208.1646},{"id":"Switzerland","value":2287.7,"adj_value":5039.34556},{"id":"Poland","value":237.9,"adj_value":524.04612},{"id":"USSR","value":2422.8,"adj_value":5336.94384},{"id":"Spain","value":2524.1,"adj_value":5560.08748},{"id":"Portugal","value":694.5,"adj_value":1529.8446},{"id":"Italy","value":4625.2,"adj_value":10188.39056},{"id":"Yugoslavia (former)","value":594.7,"adj_value":1310.00516},{"id":"Greece","value":497.8,"adj_value":1096.55384}]},{"id":"Asia","children":[{"id":"Turkey","value":1294.6,"adj_value":2851.74488},{"id":"Iran","value":73.9,"adj_value":162.78692},{"id":"Israel","value":2579.6,"adj_value":5682.34288},{"id":"Kuwait","value":550.6,"adj_value":1212.86168},{"id":"Saudi Arabia","value":4474.3,"adj_value":9855.98804},{"id":"United Arab Emirates","value":596.5,"adj_value":1313.9702},{"id":"Bahrain","value":107,"adj_value":235.6996},{"id":"India","value":1641.9,"adj_value":3616.77732},{"id":"Pakistan","value":1041.7,"adj_value":2294.65676},{"id":"Bangladesh","value":218.9,"adj_value":482.19292},{"id":"Sri Lanka","value":72.8,"adj_value":160.36384},{"id":"Thailand","value":849.1,"adj_value":1870.39748},{"id":"Malaysia","value":1539.2,"adj_value":3390.54976},{"id":"Singapore","value":3475.6,"adj_value":7656.05168},{"id":"Indonesia","value":795,"adj_value":1751.226},{"id":"Philippines","value":1379.3,"adj_value":3038.32204},{"id":"Macau","value":1.1,"adj_value":2.42308},{"id":"China","value":3855.7,"adj_value":8493.33596},{"id":"Korea, South","value":5956.3,"adj_value":13120.53764},{"id":"Hong Kong","value":2785.9,"adj_value":6136.78052},{"id":"Taiwan","value":4700,"adj_value":10353.16},{"id":"Japan","value":22630.9,"adj_value":49851.34652}]},{"id":"Australia","children":[{"id":"Australia","value":5440.4,"adj_value":11984.11312},{"id":"New Zealand","value":727.5,"adj_value":1602.537}]},{"id":"Africa","children":[{"id":"Algeria","value":430.1,"adj_value":947.42428},{"id":"Egypt","value":2322.6,"adj_value":5116.22328},{"id":"Cote d'Ivoire","value":69.7,"adj_value":153.53516},{"id":"Nigeria","value":675.7,"adj_value":1488.43196},{"id":"Gabon","value":91.2,"adj_value":200.89536},{"id":"Angola","value":136.9,"adj_value":301.56332},{"id":"Congo (Brazzaville)","value":19.4,"adj_value":42.73432},{"id":"Congo (Kinshasa)","value":101.5,"adj_value":223.5842},{"id":"South Africa","value":1205,"adj_value":2654.374}]}]}]}]},"options":{"tile":"Dice"}},"evals":[],"jsHooks":[]}</script>
</div>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment